ZGlmZiAtLWdpdCBhLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kIGIvLmdpdGh1Yi9QVUxMX1JFUVVFU1RfVEVNUExBVEUubWQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGNlODBkOAotLS0gL2Rldi9udWxsCisrKyBiLy5naXRodWIvUFVMTF9SRVFVRVNUX1RFTVBMQVRFLm1kCkBAIC0wLDAgKzEsOSBAQAorIyMgQ1B5dGhvbiBNaXJyb3IKKworaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uIGlzIGEgY3B5dGhvbiBtaXJyb3IgcmVwb3NpdG9yeS4gUHVsbCByZXF1ZXN0cworYXJlIG5vdCBhY2NlcHRlZCBvbiB0aGlzIHJlcG8gYW5kIHdpbGwgYmUgYXV0b21hdGljYWxseSBjbG9zZWQuCisKKyMjIyBTdWJtaXQgcGF0Y2hlcyBhdCBodHRwczovL2J1Z3MucHl0aG9uLm9yZworCitGb3IgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBjb250cmlidXRpbmcgdG8gQ1B5dGhvbiwgc2VlIHRoZQorW2RldmVsb3BlcidzIGd1aWRlXShodHRwczovL2RvY3MucHl0aG9uLm9yZy9kZXZndWlkZS8jY29udHJpYnV0aW5nKS4KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmluZGV4IGQyNjdkMTUuLmVkNGViZmIgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGlnbm9yZQpAQCAtMjEsOCArMjEsNiBAQAogTGliL2Rpc3R1dGlscy9jb21tYW5kLyoucGRiCiBMaWIvbGliMnRvMy8qLnBpY2tsZQogTGliL3Rlc3QvZGF0YS8qCi1MaWIvX3N5c2NvbmZpZ2RhdGEucHkKLUxpYi9wbGF0LW1hYy9lcnJvcnMucnNyYy5kZi5yc3JjCiBNYWtlZmlsZQogTWFrZWZpbGUucHJlCiBNaXNjL3B5dGhvbi5wYwpAQCAtNzMsNiArNzEsNyBAQAogaXBjaC8KIGxpYnB5dGhvbiouYQogbGlicHl0aG9uKi5zbyoKK2xpYnB5dGhvbiouZHlsaWIKIHBsYXRmb3JtCiBweWJ1aWxkZGlyLnR4dAogcHljb25maWcuaApkaWZmIC0tZ2l0IGEvLmhnaWdub3JlIGIvLmhnaWdub3JlCmluZGV4IGNmOTQ1M2EuLjkyODk2YjcgMTAwNjQ0Ci0tLSBhLy5oZ2lnbm9yZQorKysgYi8uaGdpZ25vcmUKQEAgLTIsNiArMiw3IEBACiAucHVyaWZ5CiAuc3ZuLwogXi5pZGVhLworXi52c2NvZGUvCiAuRFNfU3RvcmUKIE1ha2VmaWxlJAogTWFrZWZpbGUucHJlJApAQCAtMjUsNyArMjYsNiBAQAogcHl0aG9uLWNvbmZpZy5weSQKIHJlZmxvZy50eHQkCiB0YWdzJAotTGliL3BsYXQtbWFjL2Vycm9ycy5yc3JjLmRmLnJzcmMKIE1pc2MvcHl0aG9uLnBjCiBNaXNjL3B5dGhvbi1jb25maWcuc2gkCiBNb2R1bGVzL1NldHVwJApAQCAtNDMsNiArNDMsNyBAQAogc3ludGF4OiBnbG9iCiBsaWJweXRob24qLmEKIGxpYnB5dGhvbiouc28qCitsaWJweXRob24qLmR5bGliCiAqLnN3cAogKi5vCiAqLnB5YwpAQCAtNTQsNiArNTUsNyBAQAogKi5wcm9mY2xhbmc/CiAqLnByb2ZyYXcKICouZHluCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oCiBMaWIvZGlzdHV0aWxzL2NvbW1hbmQvKi5wZGIKIExpYi9saWIydG8zLyoucGlja2xlCiBMaWIvdGVzdC9kYXRhLyoKZGlmZiAtLWdpdCBhLy5oZ3RhZ3MgYi8uaGd0YWdzCmluZGV4IGVkNGZjOTIuLjM5MGUxMGQgMTAwNjQ0Ci0tLSBhLy5oZ3RhZ3MKKysrIGIvLmhndGFncwpAQCAtMTQ4LDYgKzE0OCw3IEBACiA3MzdlZmNhZGY1YTY3OGIxODRlMGZhNDMxYWFlMTEyNzZiZjA2NjQ4IHYzLjQuNAogMzYzMWJiNGEyNDkwMjkyZWJmODFkM2U5NDdhZTM2ZGExNDVkYTU2NCB2My40LjVyYzEKIDYxOWI2MWU1MDVkMGUyY2NjODUxNmIzNjZlNGRkZDE5NzFiNDZhNmYgdjMuNC41CiszNjMxYmI0YTI0OTAyOTJlYmY4MWQzZTk0N2FlMzZkYTE0NWRhNTY0IHYzLjQuNXJjMQogNWQ0YjZhNTdkNWZkNzU2NGJmNzNmM2RiMGU0NmZlNWVlYjAwYmNkOCB2My41LjBhMQogMDMzN2JkN2ViY2I2NTU5ZDY5Njc5YmM3MDI1MDU5YWQxY2U0ZjQzMiB2My41LjBhMgogODI2NTZlMjhiNWU1YzRhZTQ4ZDhkZDhiNWYwZDc5Njg5MDhhODJiNiB2My41LjBhMwpAQCAtMTY1LDMgKzE2Niw5IEBACiAzN2EwN2NlZTU5NjllNmQzNjcyNTgzMTg3YTczY2Y2MzZmZjI4ZTFiIHYzLjUuMQogNjhmZWVjNjQ4OGIyNjMyN2E4NWE2MzQ2MDVkZDI4ZWNhNGRhYTVmMSB2My41LjJyYzEKIDRkZWYyYTI5MDFhNTYxOGVhNDViY2M4ZjJhMTQxMWVmMzNhZjE4YWQgdjMuNS4yCis1ODk2ZGEzNzJmYjA0NGUzODU5NWZiNzQ0OTVkZTFlMWU3YzhmYjNjIHYzLjYuMGExCiszNzg4OTM0MjM1NTIyM2UyZmMxNDM4ZGUzZGM3ZmZjZDYyNWM2MGY3IHYzLjYuMGEyCitmM2VkZjEzZGMzMzliODk0MmFlNmIzMDk3NzFhYjE5N2RkOGNlNmZhIHYzLjYuMGEzCiswMTdjZjI2MDkzNmI0NDQ3ODhjOWI2NzFkMTk1YjdiZmQ4M2RiZDI1IHYzLjYuMGE0Cis1YjBjYTRlZDVlMmYwNjY5ZDc2ZWNlN2VmOTc1YzU0NDU4MGYxMmI0IHYzLjYuMGIxCitiOWZhZGM3ZDFjM2Y5YzNjNzdmMzJmMzVhZmJlMWExY2MzODA3MGU2IHYzLjYuMGIyCmRpZmYgLS1naXQgYS9Eb2MvTWFrZWZpbGUgYi9Eb2MvTWFrZWZpbGUKaW5kZXggODc4Njg1ZC4uMjAyZThlMSAxMDA2NDQKLS0tIGEvRG9jL01ha2VmaWxlCisrKyBiL0RvYy9NYWtlZmlsZQpAQCAtMTUzLDcgKzE1Myw3IEBACiAJY3AgLXBQUiBidWlsZC9lcHViL1B5dGhvbi5lcHViIGRpc3QvcHl0aG9uLSQoRElTVFZFUlNJT04pLWRvY3MuZXB1YgogCiBjaGVjazoKLQkkKFBZVEhPTikgdG9vbHMvcnN0bGludC5weSAtaSB0b29scworCSQoUFlUSE9OKSB0b29scy9yc3RsaW50LnB5IC1pIHRvb2xzIC1pIHZlbnYKIAogc2VydmU6CiAJLi4vVG9vbHMvc2NyaXB0cy9zZXJ2ZS5weSBidWlsZC9odG1sCmRpZmYgLS1naXQgYS9Eb2MvYy1hcGkvYXJnLnJzdCBiL0RvYy9jLWFwaS9hcmcucnN0CmluZGV4IGQ1ZTQ3MDMuLjU2OTkwM2YgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9hcmcucnN0CisrKyBiL0RvYy9jLWFwaS9hcmcucnN0CkBAIC0yMjMsOCArMjIzLDcgQEAKICAgIDpjOmZ1bmM6YFB5QXJnX1BhcnNlVHVwbGVgIHdpbGwgdXNlIHRoaXMgbG9jYXRpb24gYXMgdGhlIGJ1ZmZlciBhbmQgaW50ZXJwcmV0IHRoZQogICAgaW5pdGlhbCB2YWx1ZSBvZiAqXCpidWZmZXJfbGVuZ3RoKiBhcyB0aGUgYnVmZmVyIHNpemUuICBJdCB3aWxsIHRoZW4gY29weSB0aGUKICAgIGVuY29kZWQgZGF0YSBpbnRvIHRoZSBidWZmZXIgYW5kIE5VTC10ZXJtaW5hdGUgaXQuICBJZiB0aGUgYnVmZmVyIGlzIG5vdCBsYXJnZQotICAgZW5vdWdoLCBhIDpleGM6YFR5cGVFcnJvcmAgd2lsbCBiZSBzZXQuCi0gICBOb3RlOiBzdGFydGluZyBmcm9tIFB5dGhvbiAzLjYgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KKyAgIGVub3VnaCwgYSA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHNldC4KIAogICAgSW4gYm90aCBjYXNlcywgKlwqYnVmZmVyX2xlbmd0aCogaXMgc2V0IHRvIHRoZSBsZW5ndGggb2YgdGhlIGVuY29kZWQgZGF0YQogICAgd2l0aG91dCB0aGUgdHJhaWxpbmcgTlVMIGJ5dGUuCkBAIC0yNjYsMTUgKzI2NSwxMiBAQAogICAgQ29udmVydCBhIFB5dGhvbiBpbnRlZ2VyIHRvIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nYCB3aXRob3V0CiAgICBvdmVyZmxvdyBjaGVja2luZy4KIAotYGBMYGAgKDpjbGFzczpgaW50YCkgW1BZX0xPTkdfTE9OR10KLSAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4gIFRoaXMgZm9ybWF0IGlzIG9ubHkKLSAgIGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpjOnR5cGU6YGxvbmcgbG9uZ2AgKG9yIDpjOnR5cGU6YF9pbnQ2NGAgb24KLSAgIFdpbmRvd3MpLgorYGBMYGAgKDpjbGFzczpgaW50YCkgW2xvbmcgbG9uZ10KKyAgIENvbnZlcnQgYSBQeXRob24gaW50ZWdlciB0byBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYC4KIAotYGBLYGAgKDpjbGFzczpgaW50YCkgW3Vuc2lnbmVkIFBZX0xPTkdfTE9OR10KK2BgS2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nIGxvbmddCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AKLSAgIHdpdGhvdXQgb3ZlcmZsb3cgY2hlY2tpbmcuICBUaGlzIGZvcm1hdCBpcyBvbmx5IGF2YWlsYWJsZSBvbiBwbGF0Zm9ybXMgdGhhdAotICAgc3VwcG9ydCA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmB1bnNpZ25lZCBfaW50NjRgIG9uIFdpbmRvd3MpLgorICAgd2l0aG91dCBvdmVyZmxvdyBjaGVja2luZy4KIAogYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICBDb252ZXJ0IGEgUHl0aG9uIGludGVnZXIgdG8gYSBDIDpjOnR5cGU6YFB5X3NzaXplX3RgLgpAQCAtNDI0LDggKzQyMCwxNSBAQAogLi4gYzpmdW5jdGlvbjo6IGludCBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCAuLi4pCiAKICAgIFBhcnNlIHRoZSBwYXJhbWV0ZXJzIG9mIGEgZnVuY3Rpb24gdGhhdCB0YWtlcyBib3RoIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQKLSAgIHBhcmFtZXRlcnMgaW50byBsb2NhbCB2YXJpYWJsZXMuICBSZXR1cm5zIHRydWUgb24gc3VjY2Vzczsgb24gZmFpbHVyZSwgaXQKLSAgIHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUgYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgcGFyYW1ldGVycyBpbnRvIGxvY2FsIHZhcmlhYmxlcy4gIFRoZSAqa2V5d29yZHMqIGFyZ3VtZW50IGlzIGEKKyAgICpOVUxMKi10ZXJtaW5hdGVkIGFycmF5IG9mIGtleXdvcmQgcGFyYW1ldGVyIG5hbWVzLiAgRW1wdHkgbmFtZXMgZGVub3RlCisgICA6cmVmOmBwb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycyA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgorICAgUmV0dXJucyB0cnVlIG9uIHN1Y2Nlc3M7IG9uIGZhaWx1cmUsIGl0IHJldHVybnMgZmFsc2UgYW5kIHJhaXNlcyB0aGUKKyAgIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIDpyZWY6YHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzCisgICAgICA8cG9zaXRpb25hbC1vbmx5X3BhcmFtZXRlcj5gLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMoUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprdywgY29uc3QgY2hhciAqZm9ybWF0LCBjaGFyICprZXl3b3Jkc1tdLCB2YV9saXN0IHZhcmdzKQpAQCAtNTg4LDE1ICs1OTEsMTEgQEAKICAgIGBga2BgICg6Y2xhc3M6YGludGApIFt1bnNpZ25lZCBsb25nXQogICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZ2AgdG8gYSBQeXRob24gaW50ZWdlciBvYmplY3QuCiAKLSAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtQWV9MT05HX0xPTkddCi0gICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LiBPbmx5IGF2YWlsYWJsZQotICAgICAgb24gcGxhdGZvcm1zIHRoYXQgc3VwcG9ydCA6Yzp0eXBlOmBsb25nIGxvbmdgIChvciA6Yzp0eXBlOmBfaW50NjRgIG9uCi0gICAgICBXaW5kb3dzKS4KKyAgIGBgTGBgICg6Y2xhc3M6YGludGApIFtsb25nIGxvbmddCisgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBsb25nIGxvbmdgIHRvIGEgUHl0aG9uIGludGVnZXIgb2JqZWN0LgogCi0gICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgUFlfTE9OR19MT05HXQotICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4gT25seQotICAgICAgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCAob3IKLSAgICAgIDpjOnR5cGU6YHVuc2lnbmVkIF9pbnQ2NGAgb24gV2luZG93cykuCisgICBgYEtgYCAoOmNsYXNzOmBpbnRgKSBbdW5zaWduZWQgbG9uZyBsb25nXQorICAgICAgQ29udmVydCBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCB0byBhIFB5dGhvbiBpbnRlZ2VyIG9iamVjdC4KIAogICAgYGBuYGAgKDpjbGFzczpgaW50YCkgW1B5X3NzaXplX3RdCiAgICAgICBDb252ZXJ0IGEgQyA6Yzp0eXBlOmBQeV9zc2l6ZV90YCB0byBhIFB5dGhvbiBpbnRlZ2VyLgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0IGIvRG9jL2MtYXBpL2V4Y2VwdGlvbnMucnN0CmluZGV4IDE5Y2JiM2IuLjI1ZmIyOWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9leGNlcHRpb25zLnJzdAorKysgYi9Eb2MvYy1hcGkvZXhjZXB0aW9ucy5yc3QKQEAgLTMwNiw2ICszMDYsMTMgQEAKICAgIDptb2Q6YHdhcm5pbmdzYCBtb2R1bGUgYW5kIHRoZSA6b3B0aW9uOmAtV2Agb3B0aW9uIGluIHRoZSBjb21tYW5kIGxpbmUKICAgIGRvY3VtZW50YXRpb24uICBUaGVyZSBpcyBubyBDIEFQSSBmb3Igd2FybmluZyBjb250cm9sLgogCisuLiBjOmZ1bmN0aW9uOjogUHlPYmplY3QqIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorCisgICBNdWNoIGxpa2UgOmM6ZnVuYzpgUHlFcnJfU2V0SW1wb3J0RXJyb3JgIGJ1dCB0aGlzIGZ1bmN0aW9uIGFsbG93cyBmb3IKKyAgIHNwZWNpZnlpbmcgYSBzdWJjbGFzcyBvZiA6ZXhjOmBJbXBvcnRFcnJvcmAgdG8gcmFpc2UuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnJlZ2lzdHJ5KQogCkBAIC0zMzQsNiArMzQxLDE0IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogCisuLiBjOmZ1bmN0aW9uOjogaW50IFB5RXJyX1Jlc291cmNlV2FybmluZyhQeU9iamVjdCAqc291cmNlLCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKKworICAgRnVuY3Rpb24gc2ltaWxhciB0byA6YzpmdW5jOmBQeUVycl9XYXJuRm9ybWF0YCwgYnV0ICpjYXRlZ29yeSogaXMKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AgYW5kIHBhc3MgKnNvdXJjZSogdG8gOmZ1bmM6YHdhcm5pbmdzLldhcm5pbmdNZXNzYWdlYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogUXVlcnlpbmcgdGhlIGVycm9yIGluZGljYXRvcgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PQogCkBAIC03NzQsNiArNzg5LDggQEAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW1wb3J0RXJyb3JgICAgICAgICAgICAgIHwgOmV4YzpgSW1wb3J0RXJyb3JgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKK3wgOmM6ZGF0YTpgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgIHwgOmV4YzpgTW9kdWxlTm90Rm91bmRFcnJvcmAgICAgICB8ICAgICAgICAgIHwKKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW5kZXhFcnJvcmAgICAgICAgICAgICAgIHwgOmV4YzpgSW5kZXhFcnJvcmAgICAgICAgICAgICAgICB8ICAgICAgICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLSsKIHwgOmM6ZGF0YTpgUHlFeGNfSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgIHwgOmV4YzpgSW50ZXJydXB0ZWRFcnJvcmAgICAgICAgICB8ICAgICAgICAgIHwKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbml0LnJzdCBiL0RvYy9jLWFwaS9pbml0LnJzdAppbmRleCBlNzhkZGFlLi5jMjcyYTFjIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvaW5pdC5yc3QKKysrIGIvRG9jL2MtYXBpL2luaXQucnN0CkBAIC0yNSw3ICsyNSw3IEBACiAgICAgICB0cmlwbGU6IG1vZHVsZTsgc2VhcmNoOyBwYXRoCiAgICAgICBzaW5nbGU6IFB5U3lzX1NldEFyZ3YoKQogICAgICAgc2luZ2xlOiBQeVN5c19TZXRBcmd2RXgoKQotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogCiAgICBJbml0aWFsaXplIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBJbiBhbiBhcHBsaWNhdGlvbiBlbWJlZGRpbmcgIFB5dGhvbiwgdGhpcwogICAgc2hvdWxkIGJlIGNhbGxlZCBiZWZvcmUgdXNpbmcgYW55IG90aGVyIFB5dGhvbi9DIEFQSSBmdW5jdGlvbnM7IHdpdGggdGhlCkBAIC0zNCw3ICszNCw3IEBACiAgICBtb2R1bGVzIDptb2Q6YGJ1aWx0aW5zYCwgOm1vZDpgX19tYWluX19gIGFuZCA6bW9kOmBzeXNgLiAgSXQgYWxzbyBpbml0aWFsaXplcwogICAgdGhlIG1vZHVsZSBzZWFyY2ggcGF0aCAoYGBzeXMucGF0aGBgKS4gSXQgZG9lcyBub3Qgc2V0IGBgc3lzLmFyZ3ZgYDsgdXNlCiAgICA6YzpmdW5jOmBQeVN5c19TZXRBcmd2RXhgIGZvciB0aGF0LiAgVGhpcyBpcyBhIG5vLW9wIHdoZW4gY2FsbGVkIGZvciBhIHNlY29uZCB0aW1lCi0gICAod2l0aG91dCBjYWxsaW5nIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBmaXJzdCkuICBUaGVyZSBpcyBubyByZXR1cm4gdmFsdWU7IGl0IGlzIGEKKyAgICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuIHZhbHVlOyBpdCBpcyBhCiAgICBmYXRhbCBlcnJvciBpZiB0aGUgaW5pdGlhbGl6YXRpb24gZmFpbHMuCiAKICAgIC4uIG5vdGU6OgpAQCAtNTIsMTkgKzUyLDIwIEBACiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5X0lzSW5pdGlhbGl6ZWQoKQogCiAgICBSZXR1cm4gdHJ1ZSAobm9uemVybykgd2hlbiB0aGUgUHl0aG9uIGludGVycHJldGVyIGhhcyBiZWVuIGluaXRpYWxpemVkLCBmYWxzZQotICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBpcyBjYWxsZWQsIHRoaXMgcmV0dXJucyBmYWxzZSB1bnRpbAorICAgKHplcm8pIGlmIG5vdC4gIEFmdGVyIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyByZXR1cm5zIGZhbHNlIHVudGlsCiAgICA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBpcyBjYWxsZWQgYWdhaW4uCiAKIAotLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlfRmluYWxpemUoKQorLi4gYzpmdW5jdGlvbjo6IGludCBQeV9GaW5hbGl6ZUV4KCkKIAogICAgVW5kbyBhbGwgaW5pdGlhbGl6YXRpb25zIG1hZGUgYnkgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYW5kIHN1YnNlcXVlbnQgdXNlIG9mCiAgICBQeXRob24vQyBBUEkgZnVuY3Rpb25zLCBhbmQgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyAoc2VlCiAgICA6YzpmdW5jOmBQeV9OZXdJbnRlcnByZXRlcmAgYmVsb3cpIHRoYXQgd2VyZSBjcmVhdGVkIGFuZCBub3QgeWV0IGRlc3Ryb3llZCBzaW5jZQogICAgdGhlIGxhc3QgY2FsbCB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4gIElkZWFsbHksIHRoaXMgZnJlZXMgYWxsIG1lbW9yeQogICAgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIuICBUaGlzIGlzIGEgbm8tb3Agd2hlbiBjYWxsZWQgZm9yIGEgc2Vjb25kCi0gICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgVGhlcmUgaXMgbm8gcmV0dXJuCi0gICB2YWx1ZTsgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24gYXJlIGlnbm9yZWQuCisgICB0aW1lICh3aXRob3V0IGNhbGxpbmcgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgYWdhaW4gZmlyc3QpLiAgTm9ybWFsbHkgdGhlCisgICByZXR1cm4gdmFsdWUgaXMgMC4gIElmIHRoZXJlIHdlcmUgZXJyb3JzIGR1cmluZyBmaW5hbGl6YXRpb24KKyAgIChmbHVzaGluZyBidWZmZXJlZCBkYXRhKSwgLTEgaXMgcmV0dXJuZWQuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgcHJvdmlkZWQgZm9yIGEgbnVtYmVyIG9mIHJlYXNvbnMuICBBbiBlbWJlZGRpbmcgYXBwbGljYXRpb24KICAgIG1pZ2h0IHdhbnQgdG8gcmVzdGFydCBQeXRob24gd2l0aG91dCBoYXZpbmcgdG8gcmVzdGFydCB0aGUgYXBwbGljYXRpb24gaXRzZWxmLgpAQCAtODMsNyArODQsMTUgQEAKICAgIGZyZWVkLiAgU29tZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzIG1heSBub3QgYmUgZnJlZWQuICBTb21lCiAgICBleHRlbnNpb25zIG1heSBub3Qgd29yayBwcm9wZXJseSBpZiB0aGVpciBpbml0aWFsaXphdGlvbiByb3V0aW5lIGlzIGNhbGxlZCBtb3JlCiAgICB0aGFuIG9uY2U7IHRoaXMgY2FuIGhhcHBlbiBpZiBhbiBhcHBsaWNhdGlvbiBjYWxscyA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCBhbmQKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBtb3JlIHRoYW4gb25jZS4KKyAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIG1vcmUgdGhhbiBvbmNlLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeV9GaW5hbGl6ZSgpCisKKyAgIFRoaXMgaXMgYSBiYWNrd2FyZHMtY29tcGF0aWJsZSB2ZXJzaW9uIG9mIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIHRoYXQKKyAgIGRpc3JlZ2FyZHMgdGhlIHJldHVybiB2YWx1ZS4KIAogCiBQcm9jZXNzLXdpZGUgcGFyYW1ldGVycwpAQCAtMTExLDcgKzEyMCw3IEBACiAgICBOb3RlIHRoYXQgOmRhdGE6YHN5cy5zdGRlcnJgIGFsd2F5cyB1c2VzIHRoZSAiYmFja3NsYXNocmVwbGFjZSIgZXJyb3IKICAgIGhhbmRsZXIsIHJlZ2FyZGxlc3Mgb2YgdGhpcyAob3IgYW55IG90aGVyKSBzZXR0aW5nLgogCi0gICBJZiA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgaXMgY2FsbGVkLCB0aGlzIGZ1bmN0aW9uIHdpbGwgbmVlZCB0byBiZSBjYWxsZWQKKyAgIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgIGlzIGNhbGxlZCwgdGhpcyBmdW5jdGlvbiB3aWxsIG5lZWQgdG8gYmUgY2FsbGVkCiAgICBhZ2FpbiBpbiBvcmRlciB0byBhZmZlY3Qgc3Vic2VxdWVudCBjYWxscyB0byA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIAogICAgUmV0dXJucyAwIGlmIHN1Y2Nlc3NmdWwsIGEgbm9uemVybyB2YWx1ZSBvbiBlcnJvciAoZS5nLiBjYWxsaW5nIGFmdGVyIHRoZQpAQCAtOTIyLDcgKzkzMSw3IEBACiAgICBlbnRyeS4pCiAKICAgIC4uIGluZGV4OjoKLSAgICAgIHNpbmdsZTogUHlfRmluYWxpemUoKQorICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKICAgICAgIHNpbmdsZTogUHlfSW5pdGlhbGl6ZSgpCiAKICAgIEV4dGVuc2lvbiBtb2R1bGVzIGFyZSBzaGFyZWQgYmV0d2VlbiAoc3ViLSlpbnRlcnByZXRlcnMgYXMgZm9sbG93czogdGhlIGZpcnN0CkBAIC05MzIsNyArOTQxLDcgQEAKICAgIGFuZCBmaWxsZWQgd2l0aCB0aGUgY29udGVudHMgb2YgdGhpcyBjb3B5OyB0aGUgZXh0ZW5zaW9uJ3MgYGBpbml0YGAgZnVuY3Rpb24gaXMKICAgIG5vdCBjYWxsZWQuICBOb3RlIHRoYXQgdGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB3aGF0IGhhcHBlbnMgd2hlbiBhbiBleHRlbnNpb24gaXMKICAgIGltcG9ydGVkIGFmdGVyIHRoZSBpbnRlcnByZXRlciBoYXMgYmVlbiBjb21wbGV0ZWx5IHJlLWluaXRpYWxpemVkIGJ5IGNhbGxpbmcKLSAgIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCisgICA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBhbmQgOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWA7IGluIHRoYXQgY2FzZSwgdGhlIGV4dGVuc2lvbidzCiAgICBgYGluaXRtb2R1bGVgYCBmdW5jdGlvbiAqaXMqIGNhbGxlZCBhZ2Fpbi4KIAogICAgLi4gaW5kZXg6OiBzaW5nbGU6IGNsb3NlKCkgKGluIG1vZHVsZSBvcykKQEAgLTk0MCwxNCArOTQ5LDE0IEBACiAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSkKIAotICAgLi4gaW5kZXg6OiBzaW5nbGU6IFB5X0ZpbmFsaXplKCkKKyAgIC4uIGluZGV4Ojogc2luZ2xlOiBQeV9GaW5hbGl6ZUV4KCkKIAogICAgRGVzdHJveSB0aGUgKHN1Yi0paW50ZXJwcmV0ZXIgcmVwcmVzZW50ZWQgYnkgdGhlIGdpdmVuIHRocmVhZCBzdGF0ZS4gVGhlIGdpdmVuCiAgICB0aHJlYWQgc3RhdGUgbXVzdCBiZSB0aGUgY3VycmVudCB0aHJlYWQgc3RhdGUuICBTZWUgdGhlIGRpc2N1c3Npb24gb2YgdGhyZWFkCiAgICBzdGF0ZXMgYmVsb3cuICBXaGVuIHRoZSBjYWxsIHJldHVybnMsIHRoZSBjdXJyZW50IHRocmVhZCBzdGF0ZSBpcyAqTlVMTCouICBBbGwKICAgIHRocmVhZCBzdGF0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW50ZXJwcmV0ZXIgYXJlIGRlc3Ryb3llZC4gIChUaGUgZ2xvYmFsCiAgICBpbnRlcnByZXRlciBsb2NrIG11c3QgYmUgaGVsZCBiZWZvcmUgY2FsbGluZyB0aGlzIGZ1bmN0aW9uIGFuZCBpcyBzdGlsbCBoZWxkCi0gICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVgIHdpbGwgZGVzdHJveSBhbGwgc3ViLWludGVycHJldGVycyB0aGF0CisgICB3aGVuIGl0IHJldHVybnMuKSAgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgd2lsbCBkZXN0cm95IGFsbCBzdWItaW50ZXJwcmV0ZXJzIHRoYXQKICAgIGhhdmVuJ3QgYmVlbiBleHBsaWNpdGx5IGRlc3Ryb3llZCBhdCB0aGF0IHBvaW50LgogCiAKZGlmZiAtLWdpdCBhL0RvYy9jLWFwaS9pbnRyby5yc3QgYi9Eb2MvYy1hcGkvaW50cm8ucnN0CmluZGV4IGJjM2E3NTIuLjc0NjgxZDIgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9pbnRyby5yc3QKKysrIGIvRG9jL2MtYXBpL2ludHJvLnJzdApAQCAtNjQsOSArNjQsMTAgQEAKIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yaWVzIDpmaWxlOmB7cHJlZml4fS9pbmNsdWRlL3B5dGhvbnZlcnNpb24vYCBhbmQKIDpmaWxlOmB7ZXhlY19wcmVmaXh9L2luY2x1ZGUvcHl0aG9udmVyc2lvbi9gLCB3aGVyZSA6ZW52dmFyOmBwcmVmaXhgIGFuZAogOmVudnZhcjpgZXhlY19wcmVmaXhgIGFyZSBkZWZpbmVkIGJ5IHRoZSBjb3JyZXNwb25kaW5nIHBhcmFtZXRlcnMgdG8gUHl0aG9uJ3MKLTpwcm9ncmFtOmBjb25maWd1cmVgIHNjcmlwdCBhbmQgKnZlcnNpb24qIGlzIGBgc3lzLnZlcnNpb25bOjNdYGAuICBPbiBXaW5kb3dzLAotdGhlIGhlYWRlcnMgYXJlIGluc3RhbGxlZCBpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMKLXRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgorOnByb2dyYW06YGNvbmZpZ3VyZWAgc2NyaXB0IGFuZCAqdmVyc2lvbiogaXMKK2BgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdYGAuICBPbiBXaW5kb3dzLCB0aGUgaGVhZGVycyBhcmUgaW5zdGFsbGVkCitpbiA6ZmlsZTpge3ByZWZpeH0vaW5jbHVkZWAsIHdoZXJlIDplbnZ2YXI6YHByZWZpeGAgaXMgdGhlIGluc3RhbGxhdGlvbgorZGlyZWN0b3J5IHNwZWNpZmllZCB0byB0aGUgaW5zdGFsbGVyLgogCiBUbyBpbmNsdWRlIHRoZSBoZWFkZXJzLCBwbGFjZSBib3RoIGRpcmVjdG9yaWVzIChpZiBkaWZmZXJlbnQpIG9uIHlvdXIgY29tcGlsZXIncwogc2VhcmNoIHBhdGggZm9yIGluY2x1ZGVzLiAgRG8gKm5vdCogcGxhY2UgdGhlIHBhcmVudCBkaXJlY3RvcmllcyBvbiB0aGUgc2VhcmNoCkBAIC01NzgsOSArNTc5LDkgQEAKIGFwcGxpY2F0aW9uIG1heSB3YW50IHRvIHN0YXJ0IG92ZXIgKG1ha2UgYW5vdGhlciBjYWxsIHRvCiA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYCkgb3IgdGhlIGFwcGxpY2F0aW9uIGlzIHNpbXBseSBkb25lIHdpdGggaXRzICB1c2Ugb2YKIFB5dGhvbiBhbmQgd2FudHMgdG8gZnJlZSBtZW1vcnkgYWxsb2NhdGVkIGJ5IFB5dGhvbi4gIFRoaXMgY2FuIGJlIGFjY29tcGxpc2hlZAotYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAuICBUaGUgZnVuY3Rpb24gOmM6ZnVuYzpgUHlfSXNJbml0aWFsaXplZGAgcmV0dXJucworYnkgY2FsbGluZyA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YC4gIFRoZSBmdW5jdGlvbiA6YzpmdW5jOmBQeV9Jc0luaXRpYWxpemVkYCByZXR1cm5zCiB0cnVlIGlmIFB5dGhvbiBpcyBjdXJyZW50bHkgaW4gdGhlIGluaXRpYWxpemVkIHN0YXRlLiAgTW9yZSBpbmZvcm1hdGlvbiBhYm91dAotdGhlc2UgZnVuY3Rpb25zIGlzIGdpdmVuIGluIGEgbGF0ZXIgY2hhcHRlci4gTm90aWNlIHRoYXQgOmM6ZnVuYzpgUHlfRmluYWxpemVgCit0aGVzZSBmdW5jdGlvbnMgaXMgZ2l2ZW4gaW4gYSBsYXRlciBjaGFwdGVyLiBOb3RpY2UgdGhhdCA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YAogZG9lcyAqbm90KiBmcmVlIGFsbCBtZW1vcnkgYWxsb2NhdGVkIGJ5IHRoZSBQeXRob24gaW50ZXJwcmV0ZXIsIGUuZy4gbWVtb3J5CiBhbGxvY2F0ZWQgYnkgZXh0ZW5zaW9uIG1vZHVsZXMgY3VycmVudGx5IGNhbm5vdCBiZSByZWxlYXNlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL2xvbmcucnN0IGIvRG9jL2MtYXBpL2xvbmcucnN0CmluZGV4IGIzNDgwMTUuLmJhZTk3MDMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9sb25nLnJzdAorKysgYi9Eb2MvYy1hcGkvbG9uZy5yc3QKQEAgLTYyLDEzICs2MiwxMyBAQAogICAgKk5VTEwqIG9uIGZhaWx1cmUuCiAKIAotLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbUxvbmdMb25nKGxvbmcgbG9uZyB2KQogCiAgICBSZXR1cm4gYSBuZXcgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCBvYmplY3QgZnJvbSBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCwgb3IgKk5VTEwqCiAgICBvbiBmYWlsdXJlLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKHVuc2lnbmVkIFBZX0xPTkdfTE9ORyB2KQorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcodW5zaWduZWQgbG9uZyBsb25nIHYpCiAKICAgIFJldHVybiBhIG5ldyA6Yzp0eXBlOmBQeUxvbmdPYmplY3RgIG9iamVjdCBmcm9tIGEgQyA6Yzp0eXBlOmB1bnNpZ25lZCBsb25nIGxvbmdgLAogICAgb3IgKk5VTEwqIG9uIGZhaWx1cmUuCkBAIC0xNDgsNyArMTQ4LDcgQEAKICAgIG9jY3VycyBzZXQgKlwqb3ZlcmZsb3cqIHRvIGBgMGBgIGFuZCByZXR1cm4gYGAtMWBgIGFzIHVzdWFsLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKKy4uIGM6ZnVuY3Rpb246OiBsb25nIGxvbmcgUHlMb25nX0FzTG9uZ0xvbmcoUHlPYmplY3QgKm9iaikKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCkBAIC0xNjEsNyArMTYxLDcgQEAKICAgIDpjOnR5cGU6YGxvbmdgLgogCiAKLS4uIGM6ZnVuY3Rpb246OiBQWV9MT05HX0xPTkcgUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdyhQeU9iamVjdCAqb2JqLCBpbnQgKm92ZXJmbG93KQorLi4gYzpmdW5jdGlvbjo6IGxvbmcgbG9uZyBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93KFB5T2JqZWN0ICpvYmosIGludCAqb3ZlcmZsb3cpCiAKICAgIFJldHVybiBhIEMgOmM6dHlwZTpgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqb2JqKi4gIElmICpvYmoqIGlzIG5vdCBhbgogICAgaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YCwgZmlyc3QgY2FsbCBpdHMgOm1ldGg6YF9faW50X19gIG1ldGhvZApAQCAtMjEwLDE2ICsyMTAsMTYgQEAKICAgIDpjOnR5cGU6YHNpemVfdGAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKFB5T2JqZWN0ICpweWxvbmcpCisuLiBjOmZ1bmN0aW9uOjogdW5zaWduZWQgbG9uZyBsb25nIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcoUHlPYmplY3QgKnB5bG9uZykKIAogICAgLi4gaW5kZXg6OgogICAgICAgc2luZ2xlOiBPdmVyZmxvd0Vycm9yIChidWlsdC1pbiBleGNlcHRpb24pCiAKLSAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgUFlfTE9OR19MT05HYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4KLSAgICpweWxvbmcqIG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgOmM6dHlwZTpgUHlMb25nT2JqZWN0YC4KKyAgIFJldHVybiBhIEMgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYCByZXByZXNlbnRhdGlvbiBvZiAqcHlsb25nKi4gICpweWxvbmcqCisgICBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAuCiAKICAgIFJhaXNlIDpleGM6YE92ZXJmbG93RXJyb3JgIGlmIHRoZSB2YWx1ZSBvZiAqcHlsb25nKiBpcyBvdXQgb2YgcmFuZ2UgZm9yIGFuCi0gICA6Yzp0eXBlOmB1bnNpZ25lZCBQWV9MT05HX0xPTkdgLgorICAgOmM6dHlwZTpgdW5zaWduZWQgbG9uZyBsb25nYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjEKICAgICAgIEEgbmVnYXRpdmUgKnB5bG9uZyogbm93IHJhaXNlcyA6ZXhjOmBPdmVyZmxvd0Vycm9yYCwgbm90IDpleGM6YFR5cGVFcnJvcmAuCkBAIC0yMzUsNyArMjM1LDcgQEAKICAgIHJldHVybiB0aGUgcmVkdWN0aW9uIG9mIHRoYXQgdmFsdWUgbW9kdWxvIDpjb25zdDpgVUxPTkdfTUFYICsgMWAuCiAKIAotLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIFBZX0xPTkdfTE9ORyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQorLi4gYzpmdW5jdGlvbjo6IHVuc2lnbmVkIGxvbmcgbG9uZyBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzayhQeU9iamVjdCAqb2JqKQogCiAgICBSZXR1cm4gYSBDIDpjOnR5cGU6YHVuc2lnbmVkIGxvbmcgbG9uZ2AgcmVwcmVzZW50YXRpb24gb2YgKm9iaiouICBJZiAqb2JqKgogICAgaXMgbm90IGFuIGluc3RhbmNlIG9mIDpjOnR5cGU6YFB5TG9uZ09iamVjdGAsIGZpcnN0IGNhbGwgaXRzIDptZXRoOmBfX2ludF9fYApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL21lbW9yeS5yc3QgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdAppbmRleCAyOTBlZjA5Li4zZmY1NDUyIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvbWVtb3J5LnJzdAorKysgYi9Eb2MvYy1hcGkvbWVtb3J5LnJzdApAQCAtODUsOSArODUsMTIgQEAKIAogLi4gc2VlYWxzbzo6CiAKKyAgIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGNvbmZpZ3VyZQorICAgdGhlIG1lbW9yeSBhbGxvY2F0b3JzIHVzZWQgYnkgUHl0aG9uLgorCiAgICBUaGUgOmVudnZhcjpgUFlUSE9OTUFMTE9DU1RBVFNgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIHByaW50Ci0gICBtZW1vcnkgYWxsb2NhdGlvbiBzdGF0aXN0aWNzIGV2ZXJ5IHRpbWUgYSBuZXcgb2JqZWN0IGFyZW5hIGlzIGNyZWF0ZWQsIGFuZAotICAgb24gc2h1dGRvd24uCisgICBzdGF0aXN0aWNzIG9mIHRoZSA6cmVmOmBweW1hbGxvYyBtZW1vcnkgYWxsb2NhdG9yIDxweW1hbGxvYz5gIGV2ZXJ5IHRpbWUgYQorICAgbmV3IHB5bWFsbG9jIG9iamVjdCBhcmVuYSBpcyBjcmVhdGVkLCBhbmQgb24gc2h1dGRvd24uCiAKIAogUmF3IE1lbW9yeSBJbnRlcmZhY2UKQEAgLTE2MiwxNSArMTY1LDE3IEBACiBiZWhhdmlvciB3aGVuIHJlcXVlc3RpbmcgemVybyBieXRlcywgYXJlIGF2YWlsYWJsZSBmb3IgYWxsb2NhdGluZyBhbmQgcmVsZWFzaW5nCiBtZW1vcnkgZnJvbSB0aGUgUHl0aG9uIGhlYXAuCiAKLVRoZSBkZWZhdWx0IG1lbW9yeSBibG9jayBhbGxvY2F0b3IgdXNlcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczoKLTpjOmZ1bmM6YG1hbGxvY2AsIDpjOmZ1bmM6YGNhbGxvY2AsIDpjOmZ1bmM6YHJlYWxsb2NgIGFuZCA6YzpmdW5jOmBmcmVlYDsgY2FsbAotYGBtYWxsb2MoMSlgYCAob3IgYGBjYWxsb2MoMSwgMSlgYCkgd2hlbiByZXF1ZXN0aW5nIHplcm8gYnl0ZXMuCitCeSBkZWZhdWx0LCB0aGVzZSBmdW5jdGlvbnMgdXNlIDpyZWY6YHB5bWFsbG9jIG1lbW9yeSBhbGxvY2F0b3IgPHB5bWFsbG9jPmAuCiAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgOnRlcm06YEdJTCA8Z2xvYmFsIGludGVycHJldGVyIGxvY2s+YCBtdXN0IGJlIGhlbGQgd2hlbiB1c2luZyB0aGVzZQogICAgZnVuY3Rpb25zLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBUaGUgZGVmYXVsdCBhbGxvY2F0b3IgaXMgbm93IHB5bWFsbG9jIGluc3RlYWQgb2Ygc3lzdGVtIDpjOmZ1bmM6YG1hbGxvY2AuCisKIC4uIGM6ZnVuY3Rpb246OiB2b2lkKiBQeU1lbV9NYWxsb2Moc2l6ZV90IG4pCiAKICAgIEFsbG9jYXRlcyAqbiogYnl0ZXMgYW5kIHJldHVybnMgYSBwb2ludGVyIG9mIHR5cGUgOmM6dHlwZTpgdm9pZFwqYCB0byB0aGUKQEAgLTI5MiwxNSArMjk3LDMyIEBACiAKICAgIEVudW0gdXNlZCB0byBpZGVudGlmeSBhbiBhbGxvY2F0b3IgZG9tYWluLiBEb21haW5zOgogCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9SQVdgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5TWVtX1Jhd0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fUmVhbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX0ZyZWVgCi0gICAqIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgOiBmdW5jdGlvbnMgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AgYW5kCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9SQVcKIAorICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3UmVhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fUmF3Q2FsbG9jYAorICAgICAgKiA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAorCisgICAuLiBjOnZhcjo6IFBZTUVNX0RPTUFJTl9NRU0KKworICAgICAgRnVuY3Rpb25zOgorCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX01hbGxvY2AsCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5TWVtX0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlNZW1fRnJlZWAKKworICAgLi4gYzp2YXI6OiBQWU1FTV9ET01BSU5fT0JKCisKKyAgICAgIEZ1bmN0aW9uczoKKworICAgICAgKiA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X1JlYWxsb2NgCisgICAgICAqIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AKKyAgICAgICogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAKIAogLi4gYzpmdW5jdGlvbjo6IHZvaWQgUHlNZW1fR2V0QWxsb2NhdG9yKFB5TWVtQWxsb2NhdG9yRG9tYWluIGRvbWFpbiwgUHlNZW1BbGxvY2F0b3JFeCAqYWxsb2NhdG9yKQogCkBAIC0zMjUsNDMgKzM0Nyw2MiBAQAogCiAuLiBjOmZ1bmN0aW9uOjogdm9pZCBQeU1lbV9TZXR1cERlYnVnSG9va3Modm9pZCkKIAotICAgU2V0dXAgaG9va3MgdG8gZGV0ZWN0IGJ1Z3MgaW4gdGhlIGZvbGxvd2luZyBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgotICAgZnVuY3Rpb25zOgotCi0gICAtIDpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AsIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgLAotICAgICA6YzpmdW5jOmBQeU1lbV9SYXdDYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SYXdGcmVlYAotICAgLSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgLCA6YzpmdW5jOmBQeU1lbV9SZWFsbG9jYCwgOmM6ZnVuYzpgUHlNZW1fQ2FsbG9jYCwKLSAgICAgOmM6ZnVuYzpgUHlNZW1fRnJlZWAKLSAgIC0gOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCwgOmM6ZnVuYzpgUHlPYmplY3RfUmVhbGxvY2AsCi0gICAgIDpjOmZ1bmM6YFB5T2JqZWN0X0NhbGxvY2AsIDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgCisgICBTZXR1cCBob29rcyB0byBkZXRlY3QgYnVncyBpbiB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3IgZnVuY3Rpb25zLgogCiAgICBOZXdseSBhbGxvY2F0ZWQgbWVtb3J5IGlzIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhDQmBgLCBmcmVlZCBtZW1vcnkgaXMKLSAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLiBBZGRpdGlvbmFsIGNoZWNrczoKKyAgIGZpbGxlZCB3aXRoIHRoZSBieXRlIGBgMHhEQmBgLgogCi0gICAtIGRldGVjdCBBUEkgdmlvbGF0aW9ucywgZXg6IDpjOmZ1bmM6YFB5T2JqZWN0X0ZyZWVgIGNhbGxlZCBvbiBhIGJ1ZmZlcgorICAgUnVudGltZSBjaGVja3M6CisKKyAgIC0gRGV0ZWN0IEFQSSB2aW9sYXRpb25zLCBleDogOmM6ZnVuYzpgUHlPYmplY3RfRnJlZWAgY2FsbGVkIG9uIGEgYnVmZmVyCiAgICAgIGFsbG9jYXRlZCBieSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgCi0gICAtIGRldGVjdCB3cml0ZSBiZWZvcmUgdGhlIHN0YXJ0IG9mIHRoZSBidWZmZXIgKGJ1ZmZlciB1bmRlcmZsb3cpCi0gICAtIGRldGVjdCB3cml0ZSBhZnRlciB0aGUgZW5kIG9mIHRoZSBidWZmZXIgKGJ1ZmZlciBvdmVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGJlZm9yZSB0aGUgc3RhcnQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIHVuZGVyZmxvdykKKyAgIC0gRGV0ZWN0IHdyaXRlIGFmdGVyIHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciAoYnVmZmVyIG92ZXJmbG93KQorICAgLSBDaGVjayB0aGF0IHRoZSA6dGVybTpgR0lMIDxnbG9iYWwgaW50ZXJwcmV0ZXIgbG9jaz5gIGlzIGhlbGQgd2hlbgorICAgICBhbGxvY2F0b3IgZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIChleDoKKyAgICAgOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgYW5kIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9NRU1gIChleDoKKyAgICAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCkgZG9tYWlucyBhcmUgY2FsbGVkCiAKLSAgIFRoZSBmdW5jdGlvbiBkb2VzIG5vdGhpbmcgaWYgUHl0aG9uIGlzIG5vdCBjb21waWxlZCBpcyBkZWJ1ZyBtb2RlLgorICAgT24gZXJyb3IsIHRoZSBkZWJ1ZyBob29rcyB1c2UgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZQorICAgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSB0cmFjZWJhY2sgaXMgb25seQorICAgZGlzcGxheWVkIGlmIDptb2Q6YHRyYWNlbWFsbG9jYCBpcyB0cmFjaW5nIFB5dGhvbiBtZW1vcnkgYWxsb2NhdGlvbnMgYW5kIHRoZQorICAgbWVtb3J5IGJsb2NrIHdhcyB0cmFjZWQuCisKKyAgIFRoZXNlIGhvb2tzIGFyZSBpbnN0YWxsZWQgYnkgZGVmYXVsdCBpZiBQeXRob24gaXMgY29tcGlsZWQgaW4gZGVidWcKKyAgIG1vZGUuIFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSB1c2VkIHRvIGluc3RhbGwKKyAgIGRlYnVnIGhvb2tzIG9uIGEgUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoaXMgZnVuY3Rpb24gbm93IGFsc28gd29ya3Mgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKyAgICAgIE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgbm93IHVzZSA6bW9kOmB0cmFjZW1hbGxvY2AgdG8gZ2V0IHRoZSB0cmFjZWJhY2sKKyAgICAgIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuIFRoZSBkZWJ1ZyBob29rcyBub3cgYWxzbyBjaGVjaworICAgICAgaWYgdGhlIEdJTCBpcyBoZWxkIHdoZW4gZnVuY3Rpb25zIG9mIDpjOmRhdGE6YFBZTUVNX0RPTUFJTl9PQkpgIGFuZAorICAgICAgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWAgZG9tYWlucyBhcmUgY2FsbGVkLgogCiAKLUN1c3RvbWl6ZSBQeU9iamVjdCBBcmVuYSBBbGxvY2F0b3IKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy4uIF9weW1hbGxvYzoKIAotUHl0aG9uIGhhcyBhICpweW1hbGxvYyogYWxsb2NhdG9yIGZvciBhbGxvY2F0aW9ucyBzbWFsbGVyIHRoYW4gNTEyIGJ5dGVzLiBUaGlzCi1hbGxvY2F0b3IgaXMgb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkKLW1hcHBpbmdzIGNhbGxlZCAiYXJlbmFzIiB3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8KLTpjOmZ1bmM6YFB5TWVtX1Jhd01hbGxvY2AgYW5kIDpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIKLXRoYW4gNTEyIGJ5dGVzLiAgKnB5bWFsbG9jKiBpcyB0aGUgZGVmYXVsdCBhbGxvY2F0b3IgdXNlZCBieQotOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYC4KK1RoZSBweW1hbGxvYyBhbGxvY2F0b3IKKz09PT09PT09PT09PT09PT09PT09PT0KIAotVGhlIGRlZmF1bHQgYXJlbmEgYWxsb2NhdG9yIHVzZXMgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnM6CitQeXRob24gaGFzIGEgKnB5bWFsbG9jKiBhbGxvY2F0b3Igb3B0aW1pemVkIGZvciBzbWFsbCBvYmplY3RzIChzbWFsbGVyIG9yIGVxdWFsCit0byA1MTIgYnl0ZXMpIHdpdGggYSBzaG9ydCBsaWZldGltZS4gSXQgdXNlcyBtZW1vcnkgbWFwcGluZ3MgY2FsbGVkICJhcmVuYXMiCit3aXRoIGEgZml4ZWQgc2l6ZSBvZiAyNTYgS0IuIEl0IGZhbGxzIGJhY2sgdG8gOmM6ZnVuYzpgUHlNZW1fUmF3TWFsbG9jYCBhbmQKKzpjOmZ1bmM6YFB5TWVtX1Jhd1JlYWxsb2NgIGZvciBhbGxvY2F0aW9ucyBsYXJnZXIgdGhhbiA1MTIgYnl0ZXMuCisKKypweW1hbGxvYyogaXMgdGhlIGRlZmF1bHQgYWxsb2NhdG9yIG9mIHRoZSA6YzpkYXRhOmBQWU1FTV9ET01BSU5fTUVNYCAoZXg6Cis6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgKSBhbmQgOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX09CSmAgKGV4OgorOmM6ZnVuYzpgUHlPYmplY3RfTWFsbG9jYCkgZG9tYWlucy4KKworVGhlIGFyZW5hIGFsbG9jYXRvciB1c2VzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgogCiAqIDpjOmZ1bmM6YFZpcnR1YWxBbGxvY2AgYW5kIDpjOmZ1bmM6YFZpcnR1YWxGcmVlYCBvbiBXaW5kb3dzLAogKiA6YzpmdW5jOmBtbWFwYCBhbmQgOmM6ZnVuYzpgbXVubWFwYCBpZiBhdmFpbGFibGUsCiAqIDpjOmZ1bmM6YG1hbGxvY2AgYW5kIDpjOmZ1bmM6YGZyZWVgIG90aGVyd2lzZS4KIAorQ3VzdG9taXplIHB5bWFsbG9jIEFyZW5hIEFsbG9jYXRvcgorLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAogLi4gYzp0eXBlOjogUHlPYmplY3RBcmVuYUFsbG9jYXRvcgpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0IGIvRG9jL2MtYXBpL3N0cnVjdHVyZXMucnN0CmluZGV4IGNjODQzMTQuLmU5ZThhZGQgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS9zdHJ1Y3R1cmVzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3RydWN0dXJlcy5yc3QKQEAgLTE1MCw4ICsxNTAsOSBAQAogVGhlIDphdHRyOmBtbF9mbGFnc2AgZmllbGQgaXMgYSBiaXRmaWVsZCB3aGljaCBjYW4gaW5jbHVkZSB0aGUgZm9sbG93aW5nIGZsYWdzLgogVGhlIGluZGl2aWR1YWwgZmxhZ3MgaW5kaWNhdGUgZWl0aGVyIGEgY2FsbGluZyBjb252ZW50aW9uIG9yIGEgYmluZGluZwogY29udmVudGlvbi4gIE9mIHRoZSBjYWxsaW5nIGNvbnZlbnRpb24gZmxhZ3MsIG9ubHkgOmNvbnN0OmBNRVRIX1ZBUkFSR1NgIGFuZAotOmNvbnN0OmBNRVRIX0tFWVdPUkRTYCBjYW4gYmUgY29tYmluZWQuIEFueSBvZiB0aGUgY2FsbGluZyBjb252ZW50aW9uIGZsYWdzCi1jYW4gYmUgY29tYmluZWQgd2l0aCBhIGJpbmRpbmcgZmxhZy4KKzpjb25zdDpgTUVUSF9LRVlXT1JEU2AgY2FuIGJlIGNvbWJpbmVkIChidXQgbm90ZSB0aGF0IDpjb25zdDpgTUVUSF9LRVlXT1JEU2AKK2Fsb25lIGlzIGVxdWl2YWxlbnQgdG8gYGBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTYGApLiBBbnkgb2YgdGhlIGNhbGxpbmcKK2NvbnZlbnRpb24gZmxhZ3MgY2FuIGJlIGNvbWJpbmVkIHdpdGggYSBiaW5kaW5nIGZsYWcuCiAKIAogLi4gZGF0YTo6IE1FVEhfVkFSQVJHUwpkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3N5cy5yc3QgYi9Eb2MvYy1hcGkvc3lzLnJzdAppbmRleCAzZDgzYjI3Li4wMzVjZGMxIDEwMDY0NAotLS0gYS9Eb2MvYy1hcGkvc3lzLnJzdAorKysgYi9Eb2MvYy1hcGkvc3lzLnJzdApAQCAtNSw2ICs1LDE3IEBACiBPcGVyYXRpbmcgU3lzdGVtIFV0aWxpdGllcwogPT09PT09PT09PT09PT09PT09PT09PT09PT0KIAorLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeU9TX0ZTUGF0aChQeU9iamVjdCAqcGF0aCkKKworICAgUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSByZXByZXNlbnRhdGlvbiBmb3IgKnBhdGgqLiBJZiB0aGUgb2JqZWN0IGlzIGEKKyAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QsIHRoZW4gaXRzIHJlZmVyZW5jZSBjb3VudCBpcworICAgaW5jcmVtZW50ZWQuIElmIHRoZSBvYmplY3QgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLAorICAgdGhlbiA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIHJldHVybmVkIGFzIGxvbmcgYXMgaXQgaXMgYQorICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4gT3RoZXJ3aXNlIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkCisgICBhbmQgYGBOVUxMYGAgaXMgcmV0dXJuZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfRmRJc0ludGVyYWN0aXZlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZSkKIApAQCAtMjEyLDIwICsyMjMsMjQgQEAKIC4uIGM6ZnVuY3Rpb246OiB2b2lkIFB5X0V4aXQoaW50IHN0YXR1cykKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBleGl0KCkKIAotICAgRXhpdCB0aGUgY3VycmVudCBwcm9jZXNzLiAgVGhpcyBjYWxscyA6YzpmdW5jOmBQeV9GaW5hbGl6ZWAgYW5kIHRoZW4gY2FsbHMgdGhlCi0gICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4KKyAgIEV4aXQgdGhlIGN1cnJlbnQgcHJvY2Vzcy4gIFRoaXMgY2FsbHMgOmM6ZnVuYzpgUHlfRmluYWxpemVFeGAgYW5kIHRoZW4gY2FsbHMgdGhlCisgICBzdGFuZGFyZCBDIGxpYnJhcnkgZnVuY3Rpb24gYGBleGl0KHN0YXR1cylgYC4gIElmIDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgCisgICBpbmRpY2F0ZXMgYW4gZXJyb3IsIHRoZSBleGl0IHN0YXR1cyBpcyBzZXQgdG8gMTIwLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgRXJyb3JzIGZyb20gZmluYWxpemF0aW9uIG5vIGxvbmdlciBpZ25vcmVkLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBpbnQgUHlfQXRFeGl0KHZvaWQgKCpmdW5jKSAoKSkKIAogICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBQeV9GaW5hbGl6ZSgpCisgICAgICBzaW5nbGU6IFB5X0ZpbmFsaXplRXgoKQogICAgICAgc2luZ2xlOiBjbGVhbnVwIGZ1bmN0aW9ucwogCi0gICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplYC4gIFRoZSBjbGVhbnVwCisgICBSZWdpc3RlciBhIGNsZWFudXAgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGJ5IDpjOmZ1bmM6YFB5X0ZpbmFsaXplRXhgLiAgVGhlIGNsZWFudXAKICAgIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIHdpdGggbm8gYXJndW1lbnRzIGFuZCBzaG91bGQgcmV0dXJuIG5vIHZhbHVlLiAgQXQgbW9zdAogICAgMzIgY2xlYW51cCBmdW5jdGlvbnMgY2FuIGJlIHJlZ2lzdGVyZWQuICBXaGVuIHRoZSByZWdpc3RyYXRpb24gaXMgc3VjY2Vzc2Z1bCwKICAgIDpjOmZ1bmM6YFB5X0F0RXhpdGAgcmV0dXJucyBgYDBgYDsgb24gZmFpbHVyZSwgaXQgcmV0dXJucyBgYC0xYGAuICBUaGUgY2xlYW51cApkaWZmIC0tZ2l0IGEvRG9jL2MtYXBpL3VuaWNvZGUucnN0IGIvRG9jL2MtYXBpL3VuaWNvZGUucnN0CmluZGV4IDEyYTg2MWUuLmFiMDI3MWMgMTAwNjQ0Ci0tLSBhL0RvYy9jLWFwaS91bmljb2RlLnJzdAorKysgYi9Eb2MvYy1hcGkvdW5pY29kZS5yc3QKQEAgLTQ0MCw3ICs0NDAsNiBAQAogICAgLi4gJSBiZWNhdXNlIG5vdCBhbGwgY29tcGlsZXJzIHN1cHBvcnQgdGhlICV6IHdpZHRoIG1vZGlmaWVyIC0tIHdlIGZha2UgaXQKICAgIC4uICUgd2hlbiBuZWNlc3NhcnkgdmlhIGludGVycG9sYXRpbmcgUFlfRk9STUFUX1NJWkVfVC4KICAgIC4uICUgU2ltaWxhciBjb21tZW50cyBhcHBseSB0byB0aGUgJWxsIHdpZHRoIG1vZGlmaWVyIGFuZAotICAgLi4gJSBQWV9GT1JNQVRfTE9OR19MT05HLgogCiAgICAuLiB0YWJ1bGFyY29sdW1uczo6IHxsfGx8THwKIApAQCAtNTI1LDExICs1MjQsNiBAQAogICAgY29waWVkIGFzLWlzIHRvIHRoZSByZXN1bHQgc3RyaW5nLCBhbmQgYW55IGV4dHJhIGFyZ3VtZW50cyBkaXNjYXJkZWQuCiAKICAgIC4uIG5vdGU6OgotCi0gICAgICBUaGUgYCIlbGxkImAgYW5kIGAiJWxsdSJgIGZvcm1hdCBzcGVjaWZpZXJzIGFyZSBvbmx5IGF2YWlsYWJsZQotICAgICAgd2hlbiA6Y29uc3Q6YEhBVkVfTE9OR19MT05HYCBpcyBkZWZpbmVkLgotCi0gICAuLiBub3RlOjoKICAgICAgIFRoZSB3aWR0aCBmb3JtYXR0ZXIgdW5pdCBpcyBudW1iZXIgb2YgY2hhcmFjdGVycyByYXRoZXIgdGhhbiBieXRlcy4KICAgICAgIFRoZSBwcmVjaXNpb24gZm9ybWF0dGVyIHVuaXQgaXMgbnVtYmVyIG9mIGJ5dGVzIGZvciBgYCIlcyJgYCBhbmQKICAgICAgIGBgIiVWImBgIChpZiB0aGUgYGBQeU9iamVjdCpgYCBhcmd1bWVudCBpcyBOVUxMKSwgYW5kIGEgbnVtYmVyIG9mCkBAIC04MTEsMzggKzgwNSw0NyBAQAogIiIiIiIiIiIiIiIiIiIiIiIiIiIKIAogVG8gZW5jb2RlIGFuZCBkZWNvZGUgZmlsZSBuYW1lcyBhbmQgb3RoZXIgZW52aXJvbm1lbnQgc3RyaW5ncywKLTpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1FbmNvZGluZ2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVuY29kaW5nLCBhbmQKLWBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBzaG91bGQgYmUgdXNlZCBhcyB0aGUgZXJyb3IgaGFuZGxlciAoOnBlcDpgMzgzYCkuIFRvCi1lbmNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTQ29udmVydGVyYCBhcyB0aGUgY29udmVyc2lvbiBmdW5jdGlvbjoKKzpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmdgIHNob3VsZCBiZSB1c2VkIGFzIHRoZSBlbmNvZGluZywgYW5kCis6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2Agc2hvdWxkIGJlIHVzZWQgYXMgdGhlIGVycm9yIGhhbmRsZXIKKyg6cGVwOmAzODNgIGFuZCA6cGVwOmA1MjlgKS4gVG8gZW5jb2RlIGZpbGUgbmFtZXMgdG8gOmNsYXNzOmBieXRlc2AgZHVyaW5nCithcmd1bWVudCBwYXJzaW5nLCB0aGUgYGAiTyYiYGAgY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nCis6YzpmdW5jOmBQeVVuaWNvZGVfRlNDb252ZXJ0ZXJgIGFzIHRoZSBjb252ZXJzaW9uIGZ1bmN0aW9uOgogCiAuLiBjOmZ1bmN0aW9uOjogaW50IFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogb2JqLCB2b2lkKiByZXN1bHQpCiAKLSAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgdG8gOmNsYXNzOmBieXRlc2AgdXNpbmcKKyAgIFBhcnNlVHVwbGUgY29udmVydGVyOiBlbmNvZGUgOmNsYXNzOmBzdHJgIG9iamVjdHMgLS0gb2J0YWluZWQgZGlyZWN0bHkgb3IKKyAgIHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0byA6Y2xhc3M6YGJ5dGVzYCB1c2luZwogICAgOmM6ZnVuYzpgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdGA7IDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgYXJlIG91dHB1dCBhcy1pcy4KICAgICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeUJ5dGVzT2JqZWN0KmAgd2hpY2ggbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzCiAgICBubyBsb25nZXIgdXNlZC4KIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4xCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCi1UbyBkZWNvZGUgZmlsZSBuYW1lcyBkdXJpbmcgYXJndW1lbnQgcGFyc2luZywgdGhlIGBgIk8mImBgIGNvbnZlcnRlciBzaG91bGQgYmUKLXVzZWQsIHBhc3NpbmcgOmM6ZnVuYzpgUHlVbmljb2RlX0ZTRGVjb2RlcmAgYXMgdGhlIGNvbnZlcnNpb24gZnVuY3Rpb246CitUbyBkZWNvZGUgZmlsZSBuYW1lcyB0byA6Y2xhc3M6YHN0cmAgZHVyaW5nIGFyZ3VtZW50IHBhcnNpbmcsIHRoZSBgYCJPJiJgYAorY29udmVydGVyIHNob3VsZCBiZSB1c2VkLCBwYXNzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9GU0RlY29kZXJgIGFzIHRoZQorY29udmVyc2lvbiBmdW5jdGlvbjoKIAogLi4gYzpmdW5jdGlvbjo6IGludCBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBvYmosIHZvaWQqIHJlc3VsdCkKIAotICAgUGFyc2VUdXBsZSBjb252ZXJ0ZXI6IGRlY29kZSA6Y2xhc3M6YGJ5dGVzYCBvYmplY3RzIHRvIDpjbGFzczpgc3RyYCB1c2luZwotICAgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgOyA6Y2xhc3M6YHN0cmAgb2JqZWN0cyBhcmUgb3V0cHV0Ci0gICBhcy1pcy4gKnJlc3VsdCogbXVzdCBiZSBhIDpjOnR5cGU6YFB5VW5pY29kZU9iamVjdCpgIHdoaWNoIG11c3QgYmUgcmVsZWFzZWQKLSAgIHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWQuCisgICBQYXJzZVR1cGxlIGNvbnZlcnRlcjogZGVjb2RlIDpjbGFzczpgYnl0ZXNgIG9iamVjdHMgLS0gb2J0YWluZWQgZWl0aGVyCisgICBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZSAtLSB0bworICAgOmNsYXNzOmBzdHJgIHVzaW5nIDpjOmZ1bmM6YFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplYDsgOmNsYXNzOmBzdHJgCisgICBvYmplY3RzIGFyZSBvdXRwdXQgYXMtaXMuICpyZXN1bHQqIG11c3QgYmUgYSA6Yzp0eXBlOmBQeVVuaWNvZGVPYmplY3QqYCB3aGljaAorICAgbXVzdCBiZSByZWxlYXNlZCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VkLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IHNpemUpCiAKICAgIERlY29kZSBhIHN0cmluZyB1c2luZyA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nYCBhbmQgdGhlCi0gICBgYCJzdXJyb2dhdGVlc2NhcGUiYGAgZXJyb3IgaGFuZGxlciwgb3IgYGAic3RyaWN0ImBgIG9uIFdpbmRvd3MuCisgICA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgpAQCAtODU2LDI4ICs4NTksMjggQEAKIAogICAgICAgVGhlIDpjOmZ1bmM6YFB5X0RlY29kZUxvY2FsZWAgZnVuY3Rpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCi0gICAgICBVc2UgYGAic3RyaWN0ImBgIGVycm9yIGhhbmRsZXIgb24gV2luZG93cy4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVc2UgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIuCiAKIAogLi4gYzpmdW5jdGlvbjo6IFB5T2JqZWN0KiBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0KGNvbnN0IGNoYXIgKnMpCiAKICAgIERlY29kZSBhIG51bGwtdGVybWluYXRlZCBzdHJpbmcgdXNpbmcgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AKLSAgIGFuZCB0aGUgYGAic3Vycm9nYXRlZXNjYXBlImBgIGVycm9yIGhhbmRsZXIsIG9yIGBgInN0cmljdCJgYCBvbiBXaW5kb3dzLgorICAgYW5kIHRoZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogICAgSWYgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2AgaXMgbm90IHNldCwgZmFsbCBiYWNrIHRvIHRoZQogICAgbG9jYWxlIGVuY29kaW5nLgogCiAgICBVc2UgOmM6ZnVuYzpgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemVgIGlmIHlvdSBrbm93IHRoZSBzdHJpbmcgbGVuZ3RoLgogCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgVXNlIGBgInN0cmljdCJgYCBlcnJvciBoYW5kbGVyIG9uIFdpbmRvd3MuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVXNlIDpjOmRhdGE6YFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzYCBlcnJvciBoYW5kbGVyLgogCiAKIC4uIGM6ZnVuY3Rpb246OiBQeU9iamVjdCogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIAogICAgRW5jb2RlIGEgVW5pY29kZSBvYmplY3QgdG8gOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZ2Agd2l0aCB0aGUKLSAgIGBgInN1cnJvZ2F0ZWVzY2FwZSJgYCBlcnJvciBoYW5kbGVyLCBvciBgYCJzdHJpY3QiYGAgb24gV2luZG93cywgYW5kIHJldHVybgorICAgOmM6ZGF0YTpgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnNgIGVycm9yIGhhbmRsZXIsIGFuZCByZXR1cm4KICAgIDpjbGFzczpgYnl0ZXNgLiBOb3RlIHRoYXQgdGhlIHJlc3VsdGluZyA6Y2xhc3M6YGJ5dGVzYCBvYmplY3QgbWF5IGNvbnRhaW4KICAgIG51bGwgYnl0ZXMuCiAKQEAgLTg5NCw2ICs4OTcsOCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFVzZSA6YzpkYXRhOmBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9yc2AgZXJyb3IgaGFuZGxlci4KIAogd2NoYXJfdCBTdXBwb3J0CiAiIiIiIiIiIiIiIiIiIiIKZGlmZiAtLWdpdCBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQgYi9Eb2MvZGF0YS9yZWZjb3VudHMuZGF0CmluZGV4IGUzODgxOTUuLjhiNDY5ZjQgMTAwNjQ0Ci0tLSBhL0RvYy9kYXRhL3JlZmNvdW50cy5kYXQKKysrIGIvRG9jL2RhdGEvcmVmY291bnRzLmRhdApAQCAtOTIxLDYgKzkyMSw5IEBACiBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yOmludDo6OgogUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcjpQeU9iamVjdCo6bzowOgogCitQeU9TX0ZTUGF0aDpQeU9iamVjdCo6OisxOgorUHlPU19GU1BhdGg6UHlPYmplY3QqOnBhdGg6MDoKKwogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6OisxOgogUHlPYmplY3RfQ2FsbDpQeU9iamVjdCo6Y2FsbGFibGVfb2JqZWN0OjA6CiBQeU9iamVjdF9DYWxsOlB5T2JqZWN0KjphcmdzOjA6CmRpZmYgLS1naXQgYS9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QgYi9Eb2MvZXh0ZW5kaW5nL2VtYmVkZGluZy5yc3QKaW5kZXggNjQwMzNkYy4uYWIyZjYxNiAxMDA2NDQKLS0tIGEvRG9jL2V4dGVuZGluZy9lbWJlZGRpbmcucnN0CisrKyBiL0RvYy9leHRlbmRpbmcvZW1iZWRkaW5nLnJzdApAQCAtNjcsNyArNjcsOSBAQAogICAgICAgIFB5X0luaXRpYWxpemUoKTsKICAgICAgICBQeVJ1bl9TaW1wbGVTdHJpbmcoImZyb20gdGltZSBpbXBvcnQgdGltZSxjdGltZVxuIgogICAgICAgICAgICAgICAgICAgICAgICAgICAicHJpbnQoJ1RvZGF5IGlzJywgY3RpbWUodGltZSgpKSlcbiIpOwotICAgICAgIFB5X0ZpbmFsaXplKCk7CisgICAgICAgaWYgKFB5X0ZpbmFsaXplRXgoKSA8IDApIHsKKyAgICAgICAgICAgZXhpdCgxMjApOworICAgICAgIH0KICAgICAgICBQeU1lbV9SYXdGcmVlKHByb2dyYW0pOwogICAgICAgIHJldHVybiAwOwogICAgfQpAQCAtNzYsNyArNzgsNyBAQAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAgdG8gaW5mb3JtIHRoZSBpbnRlcnByZXRlciBhYm91dCBwYXRocyB0byBQeXRob24gcnVuLXRpbWUKIGxpYnJhcmllcy4gIE5leHQsIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgaXMgaW5pdGlhbGl6ZWQgd2l0aAogOmM6ZnVuYzpgUHlfSW5pdGlhbGl6ZWAsIGZvbGxvd2VkIGJ5IHRoZSBleGVjdXRpb24gb2YgYSBoYXJkLWNvZGVkIFB5dGhvbiBzY3JpcHQKLXRoYXQgcHJpbnRzIHRoZSBkYXRlIGFuZCB0aW1lLiAgQWZ0ZXJ3YXJkcywgdGhlIDpjOmZ1bmM6YFB5X0ZpbmFsaXplYCBjYWxsIHNodXRzCit0aGF0IHByaW50cyB0aGUgZGF0ZSBhbmQgdGltZS4gIEFmdGVyd2FyZHMsIHRoZSA6YzpmdW5jOmBQeV9GaW5hbGl6ZUV4YCBjYWxsIHNodXRzCiB0aGUgaW50ZXJwcmV0ZXIgZG93biwgZm9sbG93ZWQgYnkgdGhlIGVuZCBvZiB0aGUgcHJvZ3JhbS4gIEluIGEgcmVhbCBwcm9ncmFtLAogeW91IG1heSB3YW50IHRvIGdldCB0aGUgUHl0aG9uIHNjcmlwdCBmcm9tIGFub3RoZXIgc291cmNlLCBwZXJoYXBzIGEgdGV4dC1lZGl0b3IKIHJvdXRpbmUsIGEgZmlsZSwgb3IgYSBkYXRhYmFzZS4gIEdldHRpbmcgdGhlIFB5dGhvbiBjb2RlIGZyb20gYSBmaWxlIGNhbiBiZXR0ZXIKZGlmZiAtLWdpdCBhL0RvYy9mYXEvcHJvZ3JhbW1pbmcucnN0IGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKaW5kZXggNjk0NzUzZS4uOWM1ZTIwZCAxMDA2NDQKLS0tIGEvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKKysrIGIvRG9jL2ZhcS9wcm9ncmFtbWluZy5yc3QKQEAgLTgzOCw3ICs4MzgsOCBAQAogVG8gY29udmVydCwgZS5nLiwgdGhlIG51bWJlciAxNDQgdG8gdGhlIHN0cmluZyAnMTQ0JywgdXNlIHRoZSBidWlsdC1pbiB0eXBlCiBjb25zdHJ1Y3RvciA6ZnVuYzpgc3RyYC4gIElmIHlvdSB3YW50IGEgaGV4YWRlY2ltYWwgb3Igb2N0YWwgcmVwcmVzZW50YXRpb24sIHVzZQogdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyA6ZnVuYzpgaGV4YCBvciA6ZnVuYzpgb2N0YC4gIEZvciBmYW5jeSBmb3JtYXR0aW5nLCBzZWUKLXRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLCBlLmcuIGBgIns6MDRkfSIuZm9ybWF0KDE0NClgYCB5aWVsZHMKK3RoZSA6cmVmOmBmLXN0cmluZ3NgIGFuZCA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9ucywKK2UuZy4gYGAiezowNGR9Ii5mb3JtYXQoMTQ0KWBgIHlpZWxkcwogYGAnMDE0NCdgYCBhbmQgYGAiezouM2Z9Ii5mb3JtYXQoMS4wLzMuMClgYCB5aWVsZHMgYGAnMC4zMzMnYGAuCiAKIApkaWZmIC0tZ2l0IGEvRG9jL2dsb3NzYXJ5LnJzdCBiL0RvYy9nbG9zc2FyeS5yc3QKaW5kZXggNDViNzk0Zi4uZjgwYjZkZiAxMDA2NDQKLS0tIGEvRG9jL2dsb3NzYXJ5LnJzdAorKysgYi9Eb2MvZ2xvc3NhcnkucnN0CkBAIC03MTgsNiArNzE4LDggQEAKIAogICAgICAgICAgICBkZWYgZnVuYyhmb28sIGJhcj1Ob25lKTogLi4uCiAKKyAgICAgIC4uIF9wb3NpdGlvbmFsLW9ubHlfcGFyYW1ldGVyOgorCiAgICAgICAqIDpkZm46YHBvc2l0aW9uYWwtb25seWA6IHNwZWNpZmllcyBhbiBhcmd1bWVudCB0aGF0IGNhbiBiZSBzdXBwbGllZCBvbmx5CiAgICAgICAgIGJ5IHBvc2l0aW9uLiAgUHl0aG9uIGhhcyBubyBzeW50YXggZm9yIGRlZmluaW5nIHBvc2l0aW9uYWwtb25seQogICAgICAgICBwYXJhbWV0ZXJzLiAgSG93ZXZlciwgc29tZSBidWlsdC1pbiBmdW5jdGlvbnMgaGF2ZSBwb3NpdGlvbmFsLW9ubHkKQEAgLTc3Niw2ICs3NzgsMTYgQEAKICAgICAgIE9uZSBvZiB0aGUgZGVmYXVsdCA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcnMgPG1ldGEgcGF0aCBmaW5kZXI+YCB3aGljaAogICAgICAgc2VhcmNoZXMgYW4gOnRlcm06YGltcG9ydCBwYXRoYCBmb3IgbW9kdWxlcy4KIAorICAgcGF0aC1saWtlIG9iamVjdAorICAgICAgQW4gb2JqZWN0IHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGguIEEgcGF0aC1saWtlIG9iamVjdCBpcyBlaXRoZXIKKyAgICAgIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCByZXByZXNlbnRpbmcgYSBwYXRoLCBvciBhbiBvYmplY3QKKyAgICAgIGltcGxlbWVudGluZyB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wuIEFuIG9iamVjdCB0aGF0IHN1cHBvcnRzCisgICAgICB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgcHJvdG9jb2wgY2FuIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgc3RyYCBvcgorICAgICAgOmNsYXNzOmBieXRlc2AgZmlsZSBzeXN0ZW0gcGF0aCBieSBjYWxsaW5nIHRoZSA6ZnVuYzpgb3MuZnNwYXRoYCBmdW5jdGlvbjsKKyAgICAgIDpmdW5jOmBvcy5mc2RlY29kZWAgYW5kIDpmdW5jOmBvcy5mc2VuY29kZWAgY2FuIGJlIHVzZWQgdG8gZ3VhcmFudGVlIGEKKyAgICAgIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCByZXN1bHQgaW5zdGVhZCwgcmVzcGVjdGl2ZWx5LiBJbnRyb2R1Y2VkCisgICAgICBieSA6cGVwOmA1MTlgLgorCiAgICBwb3J0aW9uCiAgICAgICBBIHNldCBvZiBmaWxlcyBpbiBhIHNpbmdsZSBkaXJlY3RvcnkgKHBvc3NpYmx5IHN0b3JlZCBpbiBhIHppcCBmaWxlKQogICAgICAgdGhhdCBjb250cmlidXRlIHRvIGEgbmFtZXNwYWNlIHBhY2thZ2UsIGFzIGRlZmluZWQgaW4gOnBlcDpgNDIwYC4KQEAgLTk1MiwxMyArOTY0LDI1IEBACiAgICAgICBgYCdccidgYC4gIFNlZSA6cGVwOmAyNzhgIGFuZCA6cGVwOmAzMTE2YCwgYXMgd2VsbCBhcwogICAgICAgOmZ1bmM6YGJ5dGVzLnNwbGl0bGluZXNgIGZvciBhbiBhZGRpdGlvbmFsIHVzZS4KIAorICAgdmFyaWFibGUgYW5ub3RhdGlvbgorICAgICAgQSB0eXBlIG1ldGFkYXRhIHZhbHVlIGFzc29jaWF0ZWQgd2l0aCBhIG1vZHVsZSBnbG9iYWwgdmFyaWFibGUgb3IKKyAgICAgIGEgY2xhc3MgYXR0cmlidXRlLiBJdHMgc3ludGF4IGlzIGV4cGxhaW5lZCBpbiBzZWN0aW9uIDpyZWY6YGFubmFzc2lnbmAuCisgICAgICBBbm5vdGF0aW9ucyBhcmUgc3RvcmVkIGluIHRoZSA6YXR0cjpgX19hbm5vdGF0aW9uc19fYCBzcGVjaWFsCisgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyBvciBtb2R1bGUgb2JqZWN0IGFuZCBjYW4gYmUgYWNjZXNzZWQgdXNpbmcKKyAgICAgIDpmdW5jOmB0eXBpbmcuZ2V0X3R5cGVfaGludHNgLgorCisgICAgICBQeXRob24gaXRzZWxmIGRvZXMgbm90IGFzc2lnbiBhbnkgcGFydGljdWxhciBtZWFuaW5nIHRvIHZhcmlhYmxlCisgICAgICBhbm5vdGF0aW9ucy4gVGhleSBhcmUgaW50ZW5kZWQgdG8gYmUgaW50ZXJwcmV0ZWQgYnkgdGhpcmQtcGFydHkgbGlicmFyaWVzCisgICAgICBvciB0eXBlIGNoZWNraW5nIHRvb2xzLiBTZWUgOnBlcDpgNTI2YCwgOnBlcDpgNDg0YCB3aGljaCBkZXNjcmliZQorICAgICAgc29tZSBvZiB0aGVpciBwb3RlbnRpYWwgdXNlcy4KKwogICAgdmlydHVhbCBlbnZpcm9ubWVudAogICAgICAgQSBjb29wZXJhdGl2ZWx5IGlzb2xhdGVkIHJ1bnRpbWUgZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MgUHl0aG9uIHVzZXJzCiAgICAgICBhbmQgYXBwbGljYXRpb25zIHRvIGluc3RhbGwgYW5kIHVwZ3JhZGUgUHl0aG9uIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcwogICAgICAgd2l0aG91dCBpbnRlcmZlcmluZyB3aXRoIHRoZSBiZWhhdmlvdXIgb2Ygb3RoZXIgUHl0aG9uIGFwcGxpY2F0aW9ucwogICAgICAgcnVubmluZyBvbiB0aGUgc2FtZSBzeXN0ZW0uCiAKLSAgICAgIFNlZSBhbHNvIDpyZWY6YHNjcmlwdHMtcHl2ZW52YC4KKyAgICAgIFNlZSBhbHNvIDptb2Q6YHZlbnZgLgogCiAgICB2aXJ0dWFsIG1hY2hpbmUKICAgICAgIEEgY29tcHV0ZXIgZGVmaW5lZCBlbnRpcmVseSBpbiBzb2Z0d2FyZS4gIFB5dGhvbidzIHZpcnR1YWwgbWFjaGluZQpkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdCBiL0RvYy9ob3d0by9hcmdwYXJzZS5yc3QKaW5kZXggM2I3OWI5Mi4uN2UxNjFhNSAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2FyZ3BhcnNlLnJzdAorKysgYi9Eb2MvaG93dG8vYXJncGFyc2UucnN0CkBAIC01NDcsNyArNTQ3LDggQEAKICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgRmlsZSAicHJvZy5weSIsIGxpbmUgMTEsIGluIDxtb2R1bGU+CiAgICAgICAgaWYgYXJncy52ZXJib3NpdHkgPj0gMjoKLSAgIFR5cGVFcnJvcjogdW5vcmRlcmFibGUgdHlwZXM6IE5vbmVUeXBlKCkgPj0gaW50KCkKKyAgIFR5cGVFcnJvcjogJz49JyBub3Qgc3VwcG9ydGVkIGJldHdlZW4gaW5zdGFuY2VzIG9mICdOb25lVHlwZScgYW5kICdpbnQnCisKIAogKiBGaXJzdCBvdXRwdXQgd2VudCB3ZWxsLCBhbmQgZml4ZXMgdGhlIGJ1ZyB3ZSBoYWQgYmVmb3JlLgogICBUaGF0IGlzLCB3ZSB3YW50IGFueSB2YWx1ZSA+PSAyIHRvIGJlIGFzIHZlcmJvc2UgYXMgcG9zc2libGUuCmRpZmYgLS1naXQgYS9Eb2MvaG93dG8vY2xpbmljLnJzdCBiL0RvYy9ob3d0by9jbGluaWMucnN0CmluZGV4IGNhYTQ5NzUuLmY0MzU4ODQgMTAwNjQ0Ci0tLSBhL0RvYy9ob3d0by9jbGluaWMucnN0CisrKyBiL0RvYy9ob3d0by9jbGluaWMucnN0CkBAIC04MjcsOSArODI3LDkgQEAKIGBgJ2knYGAgICAgIGBgaW50YGAKIGBgJ0knYGAgICAgIGBgdW5zaWduZWRfaW50KGJpdHdpc2U9VHJ1ZSlgYAogYGAnaydgYCAgICAgYGB1bnNpZ25lZF9sb25nKGJpdHdpc2U9VHJ1ZSlgYAotYGAnSydgYCAgICAgYGB1bnNpZ25lZF9QWV9MT05HX0xPTkcoYml0d2lzZT1UcnVlKWBgCitgYCdLJ2BgICAgICBgYHVuc2lnbmVkX2xvbmdfbG9uZyhiaXR3aXNlPVRydWUpYGAKIGBgJ2wnYGAgICAgIGBgbG9uZ2BgCi1gYCdMJ2BgICAgICBgYFBZX0xPTkdfTE9OR2BgCitgYCdMJ2BgICAgICBgYGxvbmcgbG9uZ2BgCiBgYCduJ2BgICAgICBgYFB5X3NzaXplX3RgYAogYGAnTydgYCAgICAgYGBvYmplY3RgYAogYGAnTyEnYGAgICAgYGBvYmplY3Qoc3ViY2xhc3Nfb2Y9JyZQeVNvbWV0aGluZ19UeXBlJylgYApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luZGV4LnJzdCBiL0RvYy9ob3d0by9pbmRleC5yc3QKaW5kZXggZGU2NTk1MC4uNTkzMzQxYyAxMDA2NDQKLS0tIGEvRG9jL2hvd3RvL2luZGV4LnJzdAorKysgYi9Eb2MvaG93dG8vaW5kZXgucnN0CkBAIC0yOCw0ICsyOCw1IEBACiAgICBhcmdwYXJzZS5yc3QKICAgIGlwYWRkcmVzcy5yc3QKICAgIGNsaW5pYy5yc3QKKyAgIGluc3RydW1lbnRhdGlvbi5yc3QKIApkaWZmIC0tZ2l0IGEvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QgYi9Eb2MvaG93dG8vaW5zdHJ1bWVudGF0aW9uLnJzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYTgzNzc1Ci0tLSAvZGV2L251bGwKKysrIGIvRG9jL2hvd3RvL2luc3RydW1lbnRhdGlvbi5yc3QKQEAgLTAsMCArMSw0MTEgQEAKKy4uIF9pbnN0cnVtZW50YXRpb246CisKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbnN0cnVtZW50aW5nIENQeXRob24gd2l0aCBEVHJhY2UgYW5kIFN5c3RlbVRhcAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworOmF1dGhvcjogRGF2aWQgTWFsY29sbQorOmF1dGhvcjogxYF1a2FzeiBMYW5nYQorCitEVHJhY2UgYW5kIFN5c3RlbVRhcCBhcmUgbW9uaXRvcmluZyB0b29scywgZWFjaCBwcm92aWRpbmcgYSB3YXkgdG8gaW5zcGVjdAord2hhdCB0aGUgcHJvY2Vzc2VzIG9uIGEgY29tcHV0ZXIgc3lzdGVtIGFyZSBkb2luZy4gIFRoZXkgYm90aCB1c2UKK2RvbWFpbi1zcGVjaWZpYyBsYW5ndWFnZXMgYWxsb3dpbmcgYSB1c2VyIHRvIHdyaXRlIHNjcmlwdHMgd2hpY2g6CisKKyAgLSBmaWx0ZXIgd2hpY2ggcHJvY2Vzc2VzIGFyZSB0byBiZSBvYnNlcnZlZAorICAtIGdhdGhlciBkYXRhIGZyb20gdGhlIHByb2Nlc3NlcyBvZiBpbnRlcmVzdAorICAtIGdlbmVyYXRlIHJlcG9ydHMgb24gdGhlIGRhdGEKKworQXMgb2YgUHl0aG9uIDMuNiwgQ1B5dGhvbiBjYW4gYmUgYnVpbHQgd2l0aCBlbWJlZGRlZCAibWFya2VycyIsIGFsc28KK2tub3duIGFzICJwcm9iZXMiLCB0aGF0IGNhbiBiZSBvYnNlcnZlZCBieSBhIERUcmFjZSBvciBTeXN0ZW1UYXAgc2NyaXB0LAorbWFraW5nIGl0IGVhc2llciB0byBtb25pdG9yIHdoYXQgdGhlIENQeXRob24gcHJvY2Vzc2VzIG9uIGEgc3lzdGVtIGFyZQorZG9pbmcuCisKKy4uIEknbSB1c2luZyAiLi4gY29kZS1ibG9jazo6IGMiIGZvciBTeXN0ZW1UYXAgc2NyaXB0cywgYXMgImMiIGlzIHN5bnRhY3RpY2FsbHkKKyAgIHRoZSBjbG9zZXN0IG1hdGNoIHRoYXQgU3BoaW54IHN1cHBvcnRzCisKKy4uIGltcGwtZGV0YWlsOjoKKworICAgRFRyYWNlIG1hcmtlcnMgYXJlIGltcGxlbWVudGF0aW9uIGRldGFpbHMgb2YgdGhlIENQeXRob24gaW50ZXJwcmV0ZXIuCisgICBObyBndWFyYW50ZWVzIGFyZSBtYWRlIGFib3V0IHByb2JlIGNvbXBhdGliaWxpdHkgYmV0d2VlbiB2ZXJzaW9ucyBvZgorICAgQ1B5dGhvbi4gRFRyYWNlIHNjcmlwdHMgY2FuIHN0b3Agd29ya2luZyBvciB3b3JrIGluY29ycmVjdGx5IHdpdGhvdXQKKyAgIHdhcm5pbmcgd2hlbiBjaGFuZ2luZyBDUHl0aG9uIHZlcnNpb25zLgorCisKK0VuYWJsaW5nIHRoZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK21hY09TIGNvbWVzIHdpdGggYnVpbHQtaW4gc3VwcG9ydCBmb3IgRFRyYWNlLiAgT24gTGludXgsIGluIG9yZGVyIHRvCitidWlsZCBDUHl0aG9uIHdpdGggdGhlIGVtYmVkZGVkIG1hcmtlcnMgZm9yIFN5c3RlbVRhcCwgdGhlIFN5c3RlbVRhcAorZGV2ZWxvcG1lbnQgdG9vbHMgbXVzdCBiZSBpbnN0YWxsZWQuCisKK09uIGEgTGludXggbWFjaGluZSwgdGhpcyBjYW4gYmUgZG9uZSB2aWE6OgorCisgICB5dW0gaW5zdGFsbCBzeXN0ZW10YXAtc2R0LWRldmVsCisKK29yOjoKKworICAgc3VkbyBhcHQtZ2V0IGluc3RhbGwgc3lzdGVtdGFwLXNkdC1kZXYKKworCitDUHl0aG9uIG11c3QgdGhlbiBiZSBjb25maWd1cmVkIGAtLXdpdGgtZHRyYWNlYDo6CisKKyAgIGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uIHllcworCitPbiBtYWNPUywgeW91IGNhbiBsaXN0IGF2YWlsYWJsZSBEVHJhY2UgcHJvYmVzIGJ5IHJ1bm5pbmcgYSBQeXRob24KK3Byb2Nlc3MgaW4gdGhlIGJhY2tncm91bmQgYW5kIGxpc3RpbmcgYWxsIHByb2JlcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUKK1B5dGhvbiBwcm92aWRlcjo6CisKKyAgICQgcHl0aG9uMy42IC1xICYKKyAgICQgc3VkbyBkdHJhY2UgLWwgLVAgcHl0aG9uJCEgICMgb3I6IGR0cmFjZSAtbCAtbSBweXRob24zLjYKKworICAgICAgSUQgICBQUk9WSURFUiAgICAgICAgICAgIE1PRFVMRSAgICAgICAgICAgICAgICAgICAgICAgICAgRlVOQ1RJT04gTkFNRQorICAgMjk1NjQgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICBfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQgZnVuY3Rpb24tZW50cnkKKyAgIDI5NTY1IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5IGZ1bmN0aW9uLWVudHJ5CisgICAyOTU2NiBweXRob24xODAzNSAgICAgICAgcHl0aG9uMy42ICAgICAgICAgIF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdCBmdW5jdGlvbi1yZXR1cm4KKyAgIDI5NTY3IHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuIGZ1bmN0aW9uLXJldHVybgorICAgMjk1NjggcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2MtZG9uZQorICAgMjk1NjkgcHl0aG9uMTgwMzUgICAgICAgIHB5dGhvbjMuNiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxlY3QgZ2Mtc3RhcnQKKyAgIDI5NTcwIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgX1B5RXZhbF9FdmFsRnJhbWVEZWZhdWx0IGxpbmUKKyAgIDI5NTcxIHB5dGhvbjE4MDM1ICAgICAgICBweXRob24zLjYgICAgICAgICAgICAgICAgIG1heWJlX2R0cmFjZV9saW5lIGxpbmUKKworT24gTGludXgsIHlvdSBjYW4gdmVyaWZ5IGlmIHRoZSBTeXN0ZW1UYXAgc3RhdGljIG1hcmtlcnMgYXJlIHByZXNlbnQgaW4KK3RoZSBidWlsdCBiaW5hcnkgYnkgc2VlaW5nIGlmIGl0IGNvbnRhaW5zIGEgIi5ub3RlLnN0YXBzZHQiIHNlY3Rpb24uCisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyAuL3B5dGhvbiB8IGdyZXAgLm5vdGUuc3RhcHNkdAorICAgWzMwXSAubm90ZS5zdGFwc2R0ICAgICAgICBOT1RFICAgICAgICAgMDAwMDAwMDAwMDAwMDAwMCAwMDMwOGQ3OAorCitJZiB5b3UndmUgYnVpbHQgUHl0aG9uIGFzIGEgc2hhcmVkIGxpYnJhcnkgKHdpdGggLS1lbmFibGUtc2hhcmVkKSwgeW91CituZWVkIHRvIGxvb2sgaW5zdGVhZCB3aXRoaW4gdGhlIHNoYXJlZCBsaWJyYXJ5LiAgRm9yIGV4YW1wbGU6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgcmVhZGVsZiAtUyBsaWJweXRob24zLjNkbS5zby4xLjAgfCBncmVwIC5ub3RlLnN0YXBzZHQKKyAgIFsyOV0gLm5vdGUuc3RhcHNkdCAgICAgICAgTk9URSAgICAgICAgIDAwMDAwMDAwMDAwMDAwMDAgMDAzNjViNjgKKworU3VmZmljaWVudGx5IG1vZGVybiByZWFkZWxmIGNhbiBwcmludCB0aGUgbWV0YWRhdGE6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICAkIHJlYWRlbGYgLW4gLi9weXRob24KKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI1NCB3aXRoIGxlbmd0aCAweDAwMDAwMDIwOgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTAgICAgICAgICAgTlRfR05VX0FCSV9UQUcgKEFCSSB2ZXJzaW9uIHRhZykKKyAgICAgICAgICAgIE9TOiBMaW51eCwgQUJJOiAyLjYuMzIKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDAwMDI3NCB3aXRoIGxlbmd0aCAweDAwMDAwMDI0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIEdOVSAgICAgICAgICAgICAgICAgIDB4MDAwMDAwMTQgICAgICAgICAgTlRfR05VX0JVSUxEX0lEICh1bmlxdWUgYnVpbGQgSUQgYml0c3RyaW5nKQorICAgICAgICAgICAgQnVpbGQgSUQ6IGRmOTI0YTJiMDhhN2U4OWY2ZTExMjUxZDQ2MDIwMjI5NzdhZjI2NzAKKworICAgIERpc3BsYXlpbmcgbm90ZXMgZm91bmQgYXQgZmlsZSBvZmZzZXQgMHgwMDJkNmMzMCB3aXRoIGxlbmd0aCAweDAwMDAwMTQ0OgorICAgICAgICBPd25lciAgICAgICAgICAgICAgICAgRGF0YSBzaXplICAgICAgICAgIERlc2NyaXB0aW9uCisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwMzEgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZ2NfX3N0YXJ0CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNDM3MWMzLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmY2CisgICAgICAgICAgICBBcmd1bWVudHM6IC00QCVlYngKKyAgICAgICAgc3RhcHNkdCAgICAgICAgICAgICAgMHgwMDAwMDAzMCAgICAgICAgICBOVF9TVEFQU0RUIChTeXN0ZW1UYXAgcHJvYmUgZGVzY3JpcHRvcnMpCisgICAgICAgICAgICBQcm92aWRlcjogcHl0aG9uCisgICAgICAgICAgICBOYW1lOiBnY19fZG9uZQorICAgICAgICAgICAgTG9jYXRpb246IDB4MDAwMDAwMDAwMDQzNzRlMSwgQmFzZTogMHgwMDAwMDAwMDAwNjMwY2UyLCBTZW1hcGhvcmU6IDB4MDAwMDAwMDAwMDhkNmJmOAorICAgICAgICAgICAgQXJndW1lbnRzOiAtOEAlcmF4CisgICAgICAgIHN0YXBzZHQgICAgICAgICAgICAgIDB4MDAwMDAwNDUgICAgICAgICAgTlRfU1RBUFNEVCAoU3lzdGVtVGFwIHByb2JlIGRlc2NyaXB0b3JzKQorICAgICAgICAgICAgUHJvdmlkZXI6IHB5dGhvbgorICAgICAgICAgICAgTmFtZTogZnVuY3Rpb25fX2VudHJ5CisgICAgICAgICAgICBMb2NhdGlvbjogMHgwMDAwMDAwMDAwNTNkYjZjLCBCYXNlOiAweDAwMDAwMDAwMDA2MzBjZTIsIFNlbWFwaG9yZTogMHgwMDAwMDAwMDAwOGQ2YmU4CisgICAgICAgICAgICBBcmd1bWVudHM6IDhAJXJicCA4QCVyMTIgLTRAJWVheAorICAgICAgICBzdGFwc2R0ICAgICAgICAgICAgICAweDAwMDAwMDQ2ICAgICAgICAgIE5UX1NUQVBTRFQgKFN5c3RlbVRhcCBwcm9iZSBkZXNjcmlwdG9ycykKKyAgICAgICAgICAgIFByb3ZpZGVyOiBweXRob24KKyAgICAgICAgICAgIE5hbWU6IGZ1bmN0aW9uX19yZXR1cm4KKyAgICAgICAgICAgIExvY2F0aW9uOiAweDAwMDAwMDAwMDA1M2RiYTgsIEJhc2U6IDB4MDAwMDAwMDAwMDYzMGNlMiwgU2VtYXBob3JlOiAweDAwMDAwMDAwMDA4ZDZiZWEKKyAgICAgICAgICAgIEFyZ3VtZW50czogOEAlcmJwIDhAJXIxMiAtNEAlZWF4CisKK1RoZSBhYm92ZSBtZXRhZGF0YSBjb250YWlucyBpbmZvcm1hdGlvbiBmb3IgU3lzdGVtVGFwIGRlc2NyaWJpbmcgaG93IGl0CitjYW4gcGF0Y2ggc3RyYXRlZ2ljYWxseS1wbGFjZWQgbWFjaGluZSBjb2RlIGluc3RydWN0aW9ucyB0byBlbmFibGUgdGhlCit0cmFjaW5nIGhvb2tzIHVzZWQgYnkgYSBTeXN0ZW1UYXAgc2NyaXB0LgorCisKK1N0YXRpYyBEVHJhY2UgcHJvYmVzCistLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgZm9sbG93aW5nIGV4YW1wbGUgRFRyYWNlIHNjcmlwdCBjYW4gYmUgdXNlZCB0byBzaG93IHRoZSBjYWxsL3JldHVybgoraGllcmFyY2h5IG9mIGEgUHl0aG9uIHNjcmlwdCwgb25seSB0cmFjaW5nIHdpdGhpbiB0aGUgaW52b2NhdGlvbiBvZgorYSBmdW5jdGlvbiBjYWxsZWQgInN0YXJ0Ii4gSW4gb3RoZXIgd29yZHMsIGltcG9ydC10aW1lIGZ1bmN0aW9uCitpbnZvY2F0aW9ucyBhcmUgbm90IGdvaW5nIHRvIGJlIGxpc3RlZDoKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIHNlbGYgaW50IGluZGVudDsKKworICAgIHB5dGhvbiR0YXJnZXQ6OjpmdW5jdGlvbi1lbnRyeQorICAgIC9jb3B5aW5zdHIoYXJnMSkgPT0gInN0YXJ0Ii8KKyAgICB7CisgICAgICAgICAgICBzZWxmLT50cmFjZSA9IDE7CisgICAgfQorCisgICAgcHl0aG9uJHRhcmdldDo6OmZ1bmN0aW9uLWVudHJ5CisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHByaW50ZigiJWRcdCUqczoiLCB0aW1lc3RhbXAsIDE1LCBwcm9iZW5hbWUpOworICAgICAgICAgICAgcHJpbnRmKCIlKnMiLCBzZWxmLT5pbmRlbnQsICIiKTsKKyAgICAgICAgICAgIHByaW50ZigiJXM6JXM6JWRcbiIsIGJhc2VuYW1lKGNvcHlpbnN0cihhcmcwKSksIGNvcHlpbnN0cihhcmcxKSwgYXJnMik7CisgICAgICAgICAgICBzZWxmLT5pbmRlbnQrKzsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL3NlbGYtPnRyYWNlLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPmluZGVudC0tOworICAgICAgICAgICAgcHJpbnRmKCIlZFx0JSpzOiIsIHRpbWVzdGFtcCwgMTUsIHByb2JlbmFtZSk7CisgICAgICAgICAgICBwcmludGYoIiUqcyIsIHNlbGYtPmluZGVudCwgIiIpOworICAgICAgICAgICAgcHJpbnRmKCIlczolczolZFxuIiwgYmFzZW5hbWUoY29weWluc3RyKGFyZzApKSwgY29weWluc3RyKGFyZzEpLCBhcmcyKTsKKyAgICB9CisKKyAgICBweXRob24kdGFyZ2V0Ojo6ZnVuY3Rpb24tcmV0dXJuCisgICAgL2NvcHlpbnN0cihhcmcxKSA9PSAic3RhcnQiLworICAgIHsKKyAgICAgICAgICAgIHNlbGYtPnRyYWNlID0gMDsKKyAgICB9CisKK0l0IGNhbiBiZSBpbnZva2VkIGxpa2UgdGhpczoKKworLi4gY29kZS1ibG9jazo6IGJhc2gKKworICAkIHN1ZG8gZHRyYWNlIC1xIC1zIGNhbGxfc3RhY2suZCAtYyAicHl0aG9uMy42IHNjcmlwdC5weSIKKworVGhlIG91dHB1dCBsb29rcyBsaWtlIHRoaXM6OgorCisgICAgMTU2NjQxMzYwNTAyMjgwICBmdW5jdGlvbi1lbnRyeTpjYWxsX3N0YWNrLnB5OnN0YXJ0OjIzCisgICAgMTU2NjQxMzYwNTE4ODA0ICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjEKKyAgICAxNTY2NDEzNjA1MzI3OTcgIGZ1bmN0aW9uLWVudHJ5OiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA1NDY4MDcgZnVuY3Rpb24tcmV0dXJuOiAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjEwCisgICAgMTU2NjQxMzYwNTYzMzY3IGZ1bmN0aW9uLXJldHVybjogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8xOjIKKyAgICAxNTY2NDEzNjA1NzgzNjUgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzI6NQorICAgIDE1NjY0MTM2MDU5MTc1NyAgZnVuY3Rpb24tZW50cnk6ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MQorICAgIDE1NjY0MTM2MDYwNTU1NiAgZnVuY3Rpb24tZW50cnk6ICAgY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2MTc0ODIgZnVuY3Rpb24tcmV0dXJuOiAgIGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMzoxMAorICAgIDE1NjY0MTM2MDYyOTgxNCBmdW5jdGlvbi1yZXR1cm46ICBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzE6MgorICAgIDE1NjY0MTM2MDY0MjI4NSBmdW5jdGlvbi1yZXR1cm46IGNhbGxfc3RhY2sucHk6ZnVuY3Rpb25fMjo2CisgICAgMTU2NjQxMzYwNjU2NzcwICBmdW5jdGlvbi1lbnRyeTogY2FsbF9zdGFjay5weTpmdW5jdGlvbl8zOjkKKyAgICAxNTY2NDEzNjA2Njk3MDcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzM6MTAKKyAgICAxNTY2NDEzNjA2ODc4NTMgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTMKKyAgICAxNTY2NDEzNjA3MDA3MTkgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzQ6MTQKKyAgICAxNTY2NDEzNjA3MTk2NDAgIGZ1bmN0aW9uLWVudHJ5OiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MTgKKyAgICAxNTY2NDEzNjA3MzI1NjcgZnVuY3Rpb24tcmV0dXJuOiBjYWxsX3N0YWNrLnB5OmZ1bmN0aW9uXzU6MjEKKyAgICAxNTY2NDEzNjA3NDczNzAgZnVuY3Rpb24tcmV0dXJuOmNhbGxfc3RhY2sucHk6c3RhcnQ6MjgKKworCitTdGF0aWMgU3lzdGVtVGFwIG1hcmtlcnMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgbG93LWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgdGhlIHN0YXRpYworbWFya2VycyBkaXJlY3RseS4gIFRoaXMgcmVxdWlyZXMgeW91IHRvIGV4cGxpY2l0bHkgc3RhdGUgdGhlIGJpbmFyeSBmaWxlCitjb250YWluaW5nIHRoZW0uCisKK0ZvciBleGFtcGxlLCB0aGlzIFN5c3RlbVRhcCBzY3JpcHQgY2FuIGJlIHVzZWQgdG8gc2hvdyB0aGUgY2FsbC9yZXR1cm4KK2hpZXJhcmNoeSBvZiBhIFB5dGhvbiBzY3JpcHQ6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgIHByb2JlIHByb2Nlc3MoJ3B5dGhvbicpLm1hcmsoImZ1bmN0aW9uX19lbnRyeSIpIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXFxuIiwKKyAgICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgIH0KKworICAgcHJvYmUgcHJvY2VzcygncHl0aG9uJykubWFyaygiZnVuY3Rpb25fX3JldHVybiIpIHsKKyAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICBmdW5jbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcyKTsKKyAgICAgICBsaW5lbm8gPSAkYXJnMzsKKworICAgICAgIHByaW50ZigiJXMgPD0gJXMgaW4gJXM6JWRcXG4iLAorICAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgfQorCitJdCBjYW4gYmUgaW52b2tlZCBsaWtlIHRoaXM6CisKKy4uIGNvZGUtYmxvY2s6OiBiYXNoCisKKyAgICQgc3RhcCBcCisgICAgIHNob3ctY2FsbC1oaWVyYXJjaHkuc3RwIFwKKyAgICAgLWMgLi9weXRob24gdGVzdC5weQorCitUaGUgb3V0cHV0IGxvb2tzIGxpa2UgdGhpczo6CisKKyAgIDExNDA4IHB5dGhvbig4Mjc0KTogICAgICAgID0+IF9fY29udGFpbnNfXyBpbiBMaWIvX2FiY29sbC5weTozNjIKKyAgIDExNDE0IHB5dGhvbig4Mjc0KTogICAgICAgICA9PiBfX2dldGl0ZW1fXyBpbiBMaWIvb3MucHk6NDI1CisgICAxMTQxOCBweXRob24oODI3NCk6ICAgICAgICAgID0+IGVuY29kZSBpbiBMaWIvb3MucHk6NDkwCisgICAxMTQyNCBweXRob24oODI3NCk6ICAgICAgICAgIDw9IGVuY29kZSBpbiBMaWIvb3MucHk6NDkzCisgICAxMTQyOCBweXRob24oODI3NCk6ICAgICAgICAgPD0gX19nZXRpdGVtX18gaW4gTGliL29zLnB5OjQyNgorICAgMTE0MzMgcHl0aG9uKDgyNzQpOiAgICAgICAgPD0gX19jb250YWluc19fIGluIExpYi9fYWJjb2xsLnB5OjM2NgorCit3aGVyZSB0aGUgY29sdW1ucyBhcmU6CisKKyAgLSB0aW1lIGluIG1pY3Jvc2Vjb25kcyBzaW5jZSBzdGFydCBvZiBzY3JpcHQKKworICAtIG5hbWUgb2YgZXhlY3V0YWJsZQorCisgIC0gUElEIG9mIHByb2Nlc3MKKworYW5kIHRoZSByZW1haW5kZXIgaW5kaWNhdGVzIHRoZSBjYWxsL3JldHVybiBoaWVyYXJjaHkgYXMgdGhlIHNjcmlwdCBleGVjdXRlcy4KKworRm9yIGEgYC0tZW5hYmxlLXNoYXJlZGAgYnVpbGQgb2YgQ1B5dGhvbiwgdGhlIG1hcmtlcnMgYXJlIGNvbnRhaW5lZCB3aXRoaW4gdGhlCitsaWJweXRob24gc2hhcmVkIGxpYnJhcnksIGFuZCB0aGUgcHJvYmUncyBkb3R0ZWQgcGF0aCBuZWVkcyB0byByZWZsZWN0IHRoaXMuIEZvcgorZXhhbXBsZSwgdGhpcyBsaW5lIGZyb20gdGhlIGFib3ZlIGV4YW1wbGU6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKK3Nob3VsZCBpbnN0ZWFkIHJlYWQ6OgorCisgICBwcm9iZSBwcm9jZXNzKCdweXRob24nKS5saWJyYXJ5KCJsaWJweXRob24zLjZkbS5zby4xLjAiKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKSB7CisKKyhhc3N1bWluZyBhIGRlYnVnIGJ1aWxkIG9mIENQeXRob24gMy42KQorCisKK0F2YWlsYWJsZSBzdGF0aWMgbWFya2VycworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIEknbSByZXVzaW5nIHRoZSAiYzpmdW5jdGlvbiIgdHlwZSBmb3IgbWFya2VycworCisuLiBjOmZ1bmN0aW9uOjogZnVuY3Rpb25fX2VudHJ5KHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpbmRpY2F0ZXMgdGhhdCBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGJlZ3VuLgorICAgSXQgaXMgb25seSB0cmlnZ2VyZWQgZm9yIHB1cmUtUHl0aG9uIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisgICBUaGUgZmlsZW5hbWUsIGZ1bmN0aW9uIG5hbWUsIGFuZCBsaW5lIG51bWJlciBhcmUgcHJvdmlkZWQgYmFjayB0byB0aGUKKyAgIHRyYWNpbmcgc2NyaXB0IGFzIHBvc2l0aW9uYWwgYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nCisgICBgYCRhcmcxYGAsIGBgJGFyZzJgYCwgYGAkYXJnM2BgOgorCisgICAgICAgKiBgYCRhcmcxYGAgOiBgYChjb25zdCBjaGFyICopYGAgZmlsZW5hbWUsIGFjY2Vzc2libGUgdXNpbmcgYGB1c2VyX3N0cmluZygkYXJnMSlgYAorCisgICAgICAgKiBgYCRhcmcyYGAgOiBgYChjb25zdCBjaGFyICopYGAgZnVuY3Rpb24gbmFtZSwgYWNjZXNzaWJsZSB1c2luZworICAgICAgICAgYGB1c2VyX3N0cmluZygkYXJnMilgYAorCisgICAgICAgKiBgYCRhcmczYGAgOiBgYGludGBgIGxpbmUgbnVtYmVyCisKKy4uIGM6ZnVuY3Rpb246OiBmdW5jdGlvbl9fcmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vKQorCisgICBUaGlzIG1hcmtlciBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgZnVuY3Rpb25fX2VudHJ5YCwgYW5kIGluZGljYXRlcyB0aGF0CisgICBleGVjdXRpb24gb2YgYSBQeXRob24gZnVuY3Rpb24gaGFzIGVuZGVkIChlaXRoZXIgdmlhIGBgcmV0dXJuYGAsIG9yIHZpYSBhbgorICAgZXhjZXB0aW9uKS4gIEl0IGlzIG9ubHkgdHJpZ2dlcmVkIGZvciBwdXJlLVB5dGhvbiAoYnl0ZWNvZGUpIGZ1bmN0aW9ucy4KKworICAgVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yIDpjOmZ1bmM6YGZ1bmN0aW9uX19lbnRyeWAKKworLi4gYzpmdW5jdGlvbjo6IGxpbmUoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8pCisKKyAgIFRoaXMgbWFya2VyIGluZGljYXRlcyBhIFB5dGhvbiBsaW5lIGlzIGFib3V0IHRvIGJlIGV4ZWN1dGVkLiAgSXQgaXMKKyAgIHRoZSBlcXVpdmFsZW50IG9mIGxpbmUtYnktbGluZSB0cmFjaW5nIHdpdGggYSBQeXRob24gcHJvZmlsZXIuICBJdCBpcworICAgbm90IHRyaWdnZXJlZCB3aXRoaW4gQyBmdW5jdGlvbnMuCisKKyAgIFRoZSBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIGZvciA6YzpmdW5jOmBmdW5jdGlvbl9fZW50cnlgLgorCisuLiBjOmZ1bmN0aW9uOjogZ2NfX3N0YXJ0KGludCBnZW5lcmF0aW9uKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgc3RhcnRzIGEgZ2FyYmFnZSBjb2xsZWN0aW9uIGN5Y2xlLgorICAgYGBhcmcwYGAgaXMgdGhlIGdlbmVyYXRpb24gdG8gc2NhbiwgbGlrZSA6ZnVuYzpgZ2MuY29sbGVjdCgpYC4KKworLi4gYzpmdW5jdGlvbjo6IGdjX19kb25lKGxvbmcgY29sbGVjdGVkKQorCisgICBGaXJlcyB3aGVuIHRoZSBQeXRob24gaW50ZXJwcmV0ZXIgZmluaXNoZXMgYSBnYXJiYWdlIGNvbGxlY3Rpb24KKyAgIGN5Y2xlLiBgYGFyZzBgYCBpcyB0aGUgbnVtYmVyIG9mIGNvbGxlY3RlZCBvYmplY3RzLgorCisKK1N5c3RlbVRhcCBUYXBzZXRzCistLS0tLS0tLS0tLS0tLS0tLQorCitUaGUgaGlnaGVyLWxldmVsIHdheSB0byB1c2UgdGhlIFN5c3RlbVRhcCBpbnRlZ3JhdGlvbiBpcyB0byB1c2UgYSAidGFwc2V0IjoKK1N5c3RlbVRhcCdzIGVxdWl2YWxlbnQgb2YgYSBsaWJyYXJ5LCB3aGljaCBoaWRlcyBzb21lIG9mIHRoZSBsb3dlci1sZXZlbAorZGV0YWlscyBvZiB0aGUgc3RhdGljIG1hcmtlcnMuCisKK0hlcmUgaXMgYSB0YXBzZXQgZmlsZSwgYmFzZWQgb24gYSBub24tc2hhcmVkIGJ1aWxkIG9mIENQeXRob246CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICAvKgorICAgICAgIFByb3ZpZGUgYSBoaWdoZXItbGV2ZWwgd3JhcHBpbmcgYXJvdW5kIHRoZSBmdW5jdGlvbl9fZW50cnkgYW5kCisgICAgICAgZnVuY3Rpb25fX3JldHVybiBtYXJrZXJzOgorICAgICBcKi8KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkgPSBwcm9jZXNzKCJweXRob24iKS5tYXJrKCJmdW5jdGlvbl9fZW50cnkiKQorICAgIHsKKyAgICAgICAgZmlsZW5hbWUgPSB1c2VyX3N0cmluZygkYXJnMSk7CisgICAgICAgIGZ1bmNuYW1lID0gdXNlcl9zdHJpbmcoJGFyZzIpOworICAgICAgICBsaW5lbm8gPSAkYXJnMzsKKyAgICAgICAgZnJhbWVwdHIgPSAkYXJnNAorICAgIH0KKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuID0gcHJvY2VzcygicHl0aG9uIikubWFyaygiZnVuY3Rpb25fX3JldHVybiIpCisgICAgeworICAgICAgICBmaWxlbmFtZSA9IHVzZXJfc3RyaW5nKCRhcmcxKTsKKyAgICAgICAgZnVuY25hbWUgPSB1c2VyX3N0cmluZygkYXJnMik7CisgICAgICAgIGxpbmVubyA9ICRhcmczOworICAgICAgICBmcmFtZXB0ciA9ICRhcmc0CisgICAgfQorCitJZiB0aGlzIGZpbGUgaXMgaW5zdGFsbGVkIGluIFN5c3RlbVRhcCdzIHRhcHNldCBkaXJlY3RvcnkgKGUuZy4KK2BgL3Vzci9zaGFyZS9zeXN0ZW10YXAvdGFwc2V0YGApLCB0aGVuIHRoZXNlIGFkZGl0aW9uYWwgcHJvYmVwb2ludHMgYmVjb21lCithdmFpbGFibGU6CisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24uZW50cnkoc3RyIGZpbGVuYW1lLCBzdHIgZnVuY25hbWUsIGludCBsaW5lbm8sIGZyYW1lcHRyKQorCisgICBUaGlzIHByb2JlIHBvaW50IGluZGljYXRlcyB0aGF0IGV4ZWN1dGlvbiBvZiBhIFB5dGhvbiBmdW5jdGlvbiBoYXMgYmVndW4uCisgICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24gKGJ5dGVjb2RlKSBmdW5jdGlvbnMuCisKKy4uIGM6ZnVuY3Rpb246OiBweXRob24uZnVuY3Rpb24ucmV0dXJuKHN0ciBmaWxlbmFtZSwgc3RyIGZ1bmNuYW1lLCBpbnQgbGluZW5vLCBmcmFtZXB0cikKKworICAgVGhpcyBwcm9iZSBwb2ludCBpcyB0aGUgY29udmVyc2Ugb2YgOmM6ZnVuYzpgcHl0aG9uLmZ1bmN0aW9uLnJldHVybmAsIGFuZAorICAgaW5kaWNhdGVzIHRoYXQgZXhlY3V0aW9uIG9mIGEgUHl0aG9uIGZ1bmN0aW9uIGhhcyBlbmRlZCAoZWl0aGVyIHZpYQorICAgYGByZXR1cm5gYCwgb3IgdmlhIGFuIGV4Y2VwdGlvbikuICBJdCBpcyBvbmx5IHRyaWdnZXJlZCBmb3IgcHVyZS1weXRob24KKyAgIChieXRlY29kZSkgZnVuY3Rpb25zLgorCisKK0V4YW1wbGVzCistLS0tLS0tLQorVGhpcyBTeXN0ZW1UYXAgc2NyaXB0IHVzZXMgdGhlIHRhcHNldCBhYm92ZSB0byBtb3JlIGNsZWFubHkgaW1wbGVtZW50IHRoZQorZXhhbXBsZSBnaXZlbiBhYm92ZSBvZiB0cmFjaW5nIHRoZSBQeXRob24gZnVuY3Rpb24tY2FsbCBoaWVyYXJjaHksIHdpdGhvdXQKK25lZWRpbmcgdG8gZGlyZWN0bHkgbmFtZSB0aGUgc3RhdGljIG1hcmtlcnM6CisKKy4uIGNvZGUtYmxvY2s6OiBjCisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24uZW50cnkKKyAgICB7CisgICAgICBwcmludGYoIiVzID0+ICVzIGluICVzOiVkXG4iLAorICAgICAgICAgICAgIHRocmVhZF9pbmRlbnQoMSksIGZ1bmNuYW1lLCBmaWxlbmFtZSwgbGluZW5vKTsKKyAgICB9CisKKyAgICBwcm9iZSBweXRob24uZnVuY3Rpb24ucmV0dXJuCisgICAgeworICAgICAgcHJpbnRmKCIlcyA8PSAlcyBpbiAlczolZFxuIiwKKyAgICAgICAgICAgICB0aHJlYWRfaW5kZW50KC0xKSwgZnVuY25hbWUsIGZpbGVuYW1lLCBsaW5lbm8pOworICAgIH0KKworCitUaGUgZm9sbG93aW5nIHNjcmlwdCB1c2VzIHRoZSB0YXBzZXQgYWJvdmUgdG8gcHJvdmlkZSBhIHRvcC1saWtlIHZpZXcgb2YgYWxsCitydW5uaW5nIENQeXRob24gY29kZSwgc2hvd2luZyB0aGUgdG9wIDIwIG1vc3QgZnJlcXVlbnRseS1lbnRlcmVkIGJ5dGVjb2RlCitmcmFtZXMsIGVhY2ggc2Vjb25kLCBhY3Jvc3MgdGhlIHdob2xlIHN5c3RlbToKKworLi4gY29kZS1ibG9jazo6IGMKKworICAgIGdsb2JhbCBmbl9jYWxsczsKKworICAgIHByb2JlIHB5dGhvbi5mdW5jdGlvbi5lbnRyeQorICAgIHsKKyAgICAgICAgZm5fY2FsbHNbcGlkKCksIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSArPSAxOworICAgIH0KKworICAgIHByb2JlIHRpbWVyLm1zKDEwMDApIHsKKyAgICAgICAgcHJpbnRmKCJcMDMzWzJKXDAzM1sxOzFIIikgLyogY2xlYXIgc2NyZWVuIFwqLworICAgICAgICBwcmludGYoIiU2cyAlODBzICU2cyAlMzBzICU2c1xuIiwKKyAgICAgICAgICAgICAgICJQSUQiLCAiRklMRU5BTUUiLCAiTElORSIsICJGVU5DVElPTiIsICJDQUxMUyIpCisgICAgICAgIGZvcmVhY2ggKFtwaWQsIGZpbGVuYW1lLCBmdW5jbmFtZSwgbGluZW5vXSBpbiBmbl9jYWxscy0gbGltaXQgMjApIHsKKyAgICAgICAgICAgIHByaW50ZigiJTZkICU4MHMgJTZkICUzMHMgJTZkXG4iLAorICAgICAgICAgICAgICAgIHBpZCwgZmlsZW5hbWUsIGxpbmVubywgZnVuY25hbWUsCisgICAgICAgICAgICAgICAgZm5fY2FsbHNbcGlkLCBmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVub10pOworICAgICAgICB9CisgICAgICAgIGRlbGV0ZSBmbl9jYWxsczsKKyAgICB9CisKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyMWY3MjcuLjAwMDAwMDAKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jIS91c3IvYmluL2VudiBweXRob24zCi0KLWltcG9ydCBzbXRwbGliCi0KLWZyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCi1mcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCi1mcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCi0KLSMgQ3JlYXRlIHRoZSBiYXNlIHRleHQgbWVzc2FnZS4KLW1zZyA9IEVtYWlsTWVzc2FnZSgpCi1tc2dbJ1N1YmplY3QnXSA9ICJBeW9ucyBhc3BlcmdlcyBwb3VyIGxlIGTDqWpldW5lciIKLW1zZ1snRnJvbSddID0gQWRkcmVzcygiUGVww6kgTGUgUGV3IiwgInBlcGUiLCAiZXhhbXBsZS5jb20iKQotbXNnWydUbyddID0gKEFkZHJlc3MoIlBlbmVsb3BlIFB1c3N5Y2F0IiwgInBlbmVsb3BlIiwgImV4YW1wbGUuY29tIiksCi0gICAgICAgICAgICAgQWRkcmVzcygiRmFicmV0dGUgUHVzc3ljYXQiLCAiZmFicmV0dGUiLCAiZXhhbXBsZS5jb20iKSkKLW1zZy5zZXRfY29udGVudCgiIiJcCi1TYWx1dCEKLQotQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgotCi1bMV0gaHR0cDovL3d3dy55dW1tbHkuY29tL3JlY2lwZS9Sb2FzdGVkLUFzcGFyYWd1cy1FcGljdXJpb3VzLTIwMzcxOAotCi0tLVBlcMOpCi0iIiIpCi0KLSMgQWRkIHRoZSBodG1sIHZlcnNpb24uICBUaGlzIGNvbnZlcnRzIHRoZSBtZXNzYWdlIGludG8gYSBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUKLSMgY29udGFpbmVyLCB3aXRoIHRoZSBvcmlnaW5hbCB0ZXh0IG1lc3NhZ2UgYXMgdGhlIGZpcnN0IHBhcnQgYW5kIHRoZSBuZXcgaHRtbAotIyBtZXNzYWdlIGFzIHRoZSBzZWNvbmQgcGFydC4KLWFzcGFyYWd1c19jaWQgPSBtYWtlX21zZ2lkKCkKLW1zZy5hZGRfYWx0ZXJuYXRpdmUoIiIiXAotPGh0bWw+Ci0gIDxoZWFkPjwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPHA+U2FsdXQhPFxwPgotICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAotICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgotICAgICAgICAgICAgcmVjaXBpZQotICAgICAgICA8L2E+IGTDqWpldW5lci4KLSAgICA8L3A+Ci0gICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIFw+Ci0gIDwvYm9keT4KLTwvaHRtbD4KLSIiIi5mb3JtYXQoYXNwYXJhZ3VzX2NpZD1hc3BhcmFndXNfY2lkWzE6LTFdKSwgc3VidHlwZT0naHRtbCcpCi0jIG5vdGUgdGhhdCB3ZSBuZWVkZWQgdG8gcGVlbCB0aGUgPD4gb2ZmIHRoZSBtc2dpZCBmb3IgdXNlIGluIHRoZSBodG1sLgotCi0jIE5vdyBhZGQgdGhlIHJlbGF0ZWQgaW1hZ2UgdG8gdGhlIGh0bWwgcGFydC4KLXdpdGggb3Blbigicm9hc3RlZC1hc3BhcmFndXMuanBnIiwgJ3JiJykgYXMgaW1nOgotICAgIG1zZy5nZXRfcGF5bG9hZCgpWzFdLmFkZF9yZWxhdGVkKGltZy5yZWFkKCksICdpbWFnZScsICdqcGVnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaWQ9YXNwYXJhZ3VzX2NpZCkKLQotIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgotd2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgotICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKLQotIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXdpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgotICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IDg1MDcwZjMuLjJlMTQyYjEKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLWFsdGVybmF0aXZlLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQpAQCAtMiw0NyArMiw1NSBAQAogCiBpbXBvcnQgc210cGxpYgogCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLmhlYWRlcnJlZ2lzdHJ5IGltcG9ydCBBZGRyZXNzCitmcm9tIGVtYWlsLnV0aWxzIGltcG9ydCBtYWtlX21zZ2lkCiAKLSMgbWUgPT0gbXkgZW1haWwgYWRkcmVzcwotIyB5b3UgPT0gcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwotbWUgPSAibXlAZW1haWwuY29tIgoteW91ID0gInlvdXJAZW1haWwuY29tIgorIyBDcmVhdGUgdGhlIGJhc2UgdGV4dCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKK21zZ1snU3ViamVjdCddID0gIkF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyIgorbXNnWydGcm9tJ10gPSBBZGRyZXNzKCJQZXDDqSBMZSBQZXciLCAicGVwZSIsICJleGFtcGxlLmNvbSIpCittc2dbJ1RvJ10gPSAoQWRkcmVzcygiUGVuZWxvcGUgUHVzc3ljYXQiLCAicGVuZWxvcGUiLCAiZXhhbXBsZS5jb20iKSwKKyAgICAgICAgICAgICBBZGRyZXNzKCJGYWJyZXR0ZSBQdXNzeWNhdCIsICJmYWJyZXR0ZSIsICJleGFtcGxlLmNvbSIpKQorbXNnLnNldF9jb250ZW50KCIiIlwKK1NhbHV0IQogCi0jIENyZWF0ZSBtZXNzYWdlIGNvbnRhaW5lciAtIHRoZSBjb3JyZWN0IE1JTUUgdHlwZSBpcyBtdWx0aXBhcnQvYWx0ZXJuYXRpdmUuCi1tc2cgPSBNSU1FTXVsdGlwYXJ0KCdhbHRlcm5hdGl2ZScpCi1tc2dbJ1N1YmplY3QnXSA9ICJMaW5rIgotbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0geW91CitDZWxhIHJlc3NlbWJsZSDDoCB1biBleGNlbGxlbnQgcmVjaXBpZVsxXSBkw6lqZXVuZXIuCiAKLSMgQ3JlYXRlIHRoZSBib2R5IG9mIHRoZSBtZXNzYWdlIChhIHBsYWluLXRleHQgYW5kIGFuIEhUTUwgdmVyc2lvbikuCi10ZXh0ID0gIkhpIVxuSG93IGFyZSB5b3U/XG5IZXJlIGlzIHRoZSBsaW5rIHlvdSB3YW50ZWQ6XG5odHRwczovL3d3dy5weXRob24ub3JnIgotaHRtbCA9ICIiIlwKK1sxXSBodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4CisKKy0tUGVww6kKKyIiIikKKworIyBBZGQgdGhlIGh0bWwgdmVyc2lvbi4gIFRoaXMgY29udmVydHMgdGhlIG1lc3NhZ2UgaW50byBhIG11bHRpcGFydC9hbHRlcm5hdGl2ZQorIyBjb250YWluZXIsIHdpdGggdGhlIG9yaWdpbmFsIHRleHQgbWVzc2FnZSBhcyB0aGUgZmlyc3QgcGFydCBhbmQgdGhlIG5ldyBodG1sCisjIG1lc3NhZ2UgYXMgdGhlIHNlY29uZCBwYXJ0LgorYXNwYXJhZ3VzX2NpZCA9IG1ha2VfbXNnaWQoKQorbXNnLmFkZF9hbHRlcm5hdGl2ZSgiIiJcCiA8aHRtbD4KICAgPGhlYWQ+PC9oZWFkPgogICA8Ym9keT4KLSAgICA8cD5IaSE8YnI+Ci0gICAgICAgSG93IGFyZSB5b3U/PGJyPgotICAgICAgIEhlcmUgaXMgdGhlIDxhIGhyZWY9Imh0dHBzOi8vd3d3LnB5dGhvbi5vcmciPmxpbms8L2E+IHlvdSB3YW50ZWQuCisgICAgPHA+U2FsdXQhPC9wPgorICAgIDxwPkNlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudAorICAgICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lnl1bW1seS5jb20vcmVjaXBlL1JvYXN0ZWQtQXNwYXJhZ3VzLUVwaWN1cmlvdXMtMjAzNzE4PgorICAgICAgICAgICAgcmVjaXBpZQorICAgICAgICA8L2E+IGTDqWpldW5lci4KICAgICA8L3A+CisgICAgPGltZyBzcmM9ImNpZDp7YXNwYXJhZ3VzX2NpZH0iIC8+CiAgIDwvYm9keT4KIDwvaHRtbD4KLSIiIgorIiIiLmZvcm1hdChhc3BhcmFndXNfY2lkPWFzcGFyYWd1c19jaWRbMTotMV0pLCBzdWJ0eXBlPSdodG1sJykKKyMgbm90ZSB0aGF0IHdlIG5lZWRlZCB0byBwZWVsIHRoZSA8PiBvZmYgdGhlIG1zZ2lkIGZvciB1c2UgaW4gdGhlIGh0bWwuCiAKLSMgUmVjb3JkIHRoZSBNSU1FIHR5cGVzIG9mIGJvdGggcGFydHMgLSB0ZXh0L3BsYWluIGFuZCB0ZXh0L2h0bWwuCi1wYXJ0MSA9IE1JTUVUZXh0KHRleHQsICdwbGFpbicpCi1wYXJ0MiA9IE1JTUVUZXh0KGh0bWwsICdodG1sJykKKyMgTm93IGFkZCB0aGUgcmVsYXRlZCBpbWFnZSB0byB0aGUgaHRtbCBwYXJ0Lgord2l0aCBvcGVuKCJyb2FzdGVkLWFzcGFyYWd1cy5qcGciLCAncmInKSBhcyBpbWc6CisgICAgbXNnLmdldF9wYXlsb2FkKClbMV0uYWRkX3JlbGF0ZWQoaW1nLnJlYWQoKSwgJ2ltYWdlJywgJ2pwZWcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNpZD1hc3BhcmFndXNfY2lkKQogCi0jIEF0dGFjaCBwYXJ0cyBpbnRvIG1lc3NhZ2UgY29udGFpbmVyLgotIyBBY2NvcmRpbmcgdG8gUkZDIDIwNDYsIHRoZSBsYXN0IHBhcnQgb2YgYSBtdWx0aXBhcnQgbWVzc2FnZSwgaW4gdGhpcyBjYXNlCi0jIHRoZSBIVE1MIG1lc3NhZ2UsIGlzIGJlc3QgYW5kIHByZWZlcnJlZC4KLW1zZy5hdHRhY2gocGFydDEpCi1tc2cuYXR0YWNoKHBhcnQyKQorIyBNYWtlIGEgbG9jYWwgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kLgord2l0aCBvcGVuKCdvdXRnb2luZy5tc2cnLCAnd2InKSBhcyBmOgorICAgIGYud3JpdGUoYnl0ZXMobXNnKSkKIAogIyBTZW5kIHRoZSBtZXNzYWdlIHZpYSBsb2NhbCBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi0jIHNlbmRtYWlsIGZ1bmN0aW9uIHRha2VzIDMgYXJndW1lbnRzOiBzZW5kZXIncyBhZGRyZXNzLCByZWNpcGllbnQncyBhZGRyZXNzCi0jIGFuZCBtZXNzYWdlIHRvIHNlbmQgLSBoZXJlIGl0IGlzIHNlbnQgYXMgb25lIHN0cmluZy4KLXMuc2VuZG1haWwobWUsIHlvdSwgbXNnLmFzX3N0cmluZygpKQotcy5xdWl0KCkKK3dpdGggc210cGxpYi5TTVRQKCdsb2NhbGhvc3QnKSBhcyBzOgorICAgIHMuc2VuZF9tZXNzYWdlKG1zZykKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkgYi9Eb2MvaW5jbHVkZXMvZW1haWwtZGlyLnB5CmluZGV4IDNjN2M3NzAuLjBkY2ZiZmIgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLWRpci5weQpAQCAtMywyMiArMywxNCBAQAogIiIiU2VuZCB0aGUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYSBNSU1FIG1lc3NhZ2UuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHNtdHBsaWIKICMgRm9yIGd1ZXNzaW5nIE1JTUUgdHlwZSBiYXNlZCBvbiBmaWxlIG5hbWUgZXh0ZW5zaW9uCiBpbXBvcnQgbWltZXR5cGVzCiAKIGZyb20gYXJncGFyc2UgaW1wb3J0IEFyZ3VtZW50UGFyc2VyCiAKLWZyb20gZW1haWwgaW1wb3J0IGVuY29kZXJzCi1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKLWZyb20gZW1haWwubWltZS5hdWRpbyBpbXBvcnQgTUlNRUF1ZGlvCi1mcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Ci1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKLQotQ09NTUFTUEFDRSA9ICcsICcKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgU01UUAogCiAKIGRlZiBtYWluKCk6CkBAIC00NywxMiArMzksMTIgQEAKICAgICBkaXJlY3RvcnkgPSBhcmdzLmRpcmVjdG9yeQogICAgIGlmIG5vdCBkaXJlY3Rvcnk6CiAgICAgICAgIGRpcmVjdG9yeSA9ICcuJwotICAgICMgQ3JlYXRlIHRoZSBlbmNsb3NpbmcgKG91dGVyKSBtZXNzYWdlCi0gICAgb3V0ZXIgPSBNSU1FTXVsdGlwYXJ0KCkKLSAgICBvdXRlclsnU3ViamVjdCddID0gJ0NvbnRlbnRzIG9mIGRpcmVjdG9yeSAlcycgJSBvcy5wYXRoLmFic3BhdGgoZGlyZWN0b3J5KQotICAgIG91dGVyWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGFyZ3MucmVjaXBpZW50cykKLSAgICBvdXRlclsnRnJvbSddID0gYXJncy5zZW5kZXIKLSAgICBvdXRlci5wcmVhbWJsZSA9ICdZb3Ugd2lsbCBub3Qgc2VlIHRoaXMgaW4gYSBNSU1FLWF3YXJlIG1haWwgcmVhZGVyLlxuJworICAgICMgQ3JlYXRlIHRoZSBtZXNzYWdlCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2dbJ1N1YmplY3QnXSA9ICdDb250ZW50cyBvZiBkaXJlY3RvcnkgJXMnICUgb3MucGF0aC5hYnNwYXRoKGRpcmVjdG9yeSkKKyAgICBtc2dbJ1RvJ10gPSAnLCAnLmpvaW4oYXJncy5yZWNpcGllbnRzKQorICAgIG1zZ1snRnJvbSddID0gYXJncy5zZW5kZXIKKyAgICBtc2cucHJlYW1ibGUgPSAnWW91IHdpbGwgbm90IHNlZSB0aGlzIGluIGEgTUlNRS1hd2FyZSBtYWlsIHJlYWRlci5cbicKIAogICAgIGZvciBmaWxlbmFtZSBpbiBvcy5saXN0ZGlyKGRpcmVjdG9yeSk6CiAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4oZGlyZWN0b3J5LCBmaWxlbmFtZSkKQEAgLTY3LDMzICs1OSwxOCBAQAogICAgICAgICAgICAgIyB1c2UgYSBnZW5lcmljIGJhZy1vZi1iaXRzIHR5cGUuCiAgICAgICAgICAgICBjdHlwZSA9ICdhcHBsaWNhdGlvbi9vY3RldC1zdHJlYW0nCiAgICAgICAgIG1haW50eXBlLCBzdWJ0eXBlID0gY3R5cGUuc3BsaXQoJy8nLCAxKQotICAgICAgICBpZiBtYWludHlwZSA9PSAndGV4dCc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZnA6Ci0gICAgICAgICAgICAgICAgIyBOb3RlOiB3ZSBzaG91bGQgaGFuZGxlIGNhbGN1bGF0aW5nIHRoZSBjaGFyc2V0Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRVRleHQoZnAucmVhZCgpLCBfc3VidHlwZT1zdWJ0eXBlKQotICAgICAgICBlbGlmIG1haW50eXBlID09ICdpbWFnZSc6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUltYWdlKGZwLnJlYWQoKSwgX3N1YnR5cGU9c3VidHlwZSkKLSAgICAgICAgZWxpZiBtYWludHlwZSA9PSAnYXVkaW8nOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGZwOgotICAgICAgICAgICAgICAgIG1zZyA9IE1JTUVBdWRpbyhmcC5yZWFkKCksIF9zdWJ0eXBlPXN1YnR5cGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6Ci0gICAgICAgICAgICAgICAgbXNnID0gTUlNRUJhc2UobWFpbnR5cGUsIHN1YnR5cGUpCi0gICAgICAgICAgICAgICAgbXNnLnNldF9wYXlsb2FkKGZwLnJlYWQoKSkKLSAgICAgICAgICAgICMgRW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIEJhc2U2NAotICAgICAgICAgICAgZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NChtc2cpCi0gICAgICAgICMgU2V0IHRoZSBmaWxlbmFtZSBwYXJhbWV0ZXIKLSAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPWZpbGVuYW1lKQotICAgICAgICBvdXRlci5hdHRhY2gobXNnKQorICAgICAgICB3aXRoIG9wZW4ocGF0aCwgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBtc2cuYWRkX2F0dGFjaG1lbnQoZnAucmVhZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1haW50eXBlPW1haW50eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1YnR5cGU9c3VidHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZT1maWxlbmFtZSkKICAgICAjIE5vdyBzZW5kIG9yIHN0b3JlIHRoZSBtZXNzYWdlCi0gICAgY29tcG9zZWQgPSBvdXRlci5hc19zdHJpbmcoKQogICAgIGlmIGFyZ3Mub3V0cHV0OgotICAgICAgICB3aXRoIG9wZW4oYXJncy5vdXRwdXQsICd3JykgYXMgZnA6Ci0gICAgICAgICAgICBmcC53cml0ZShjb21wb3NlZCkKKyAgICAgICAgd2l0aCBvcGVuKGFyZ3Mub3V0cHV0LCAnd2InKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKG1zZy5hc19ieXRlcyhwb2xpY3k9U01UUCkpCiAgICAgZWxzZToKICAgICAgICAgd2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6Ci0gICAgICAgICAgICBzLnNlbmRtYWlsKGFyZ3Muc2VuZGVyLCBhcmdzLnJlY2lwaWVudHMsIGNvbXBvc2VkKQorICAgICAgICAgICAgcy5zZW5kX21lc3NhZ2UobXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CmluZGV4IDg5YzhmM2EuLjJjNDIxNDUgMTAwNjQ0Ci0tLSBhL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CkBAIC0xLDE4ICsxLDI0IEBACiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgUGFyc2VyCitmcm9tIGVtYWlsLnBhcnNlciBpbXBvcnQgQnl0ZXNQYXJzZXIsIFBhcnNlcgorZnJvbSBlbWFpbC5wb2xpY3kgaW1wb3J0IGRlZmF1bHQKIAogIyBJZiB0aGUgZS1tYWlsIGhlYWRlcnMgYXJlIGluIGEgZmlsZSwgdW5jb21tZW50IHRoZXNlIHR3byBsaW5lczoKLSMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlKSBhcyBmcDoKLSMgICAgIGhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZShmcCkKKyMgd2l0aCBvcGVuKG1lc3NhZ2VmaWxlLCAncmInKSBhcyBmcDoKKyMgICAgIGhlYWRlcnMgPSBCeXRlc1BhcnNlcihwb2xpY3k9ZGVmYXVsdCkucGFyc2UoZnApCiAKLSMgIE9yIGZvciBwYXJzaW5nIGhlYWRlcnMgaW4gYSBzdHJpbmcsIHVzZToKLWhlYWRlcnMgPSBQYXJzZXIoKS5wYXJzZXN0cignRnJvbTogPHVzZXJAZXhhbXBsZS5jb20+XG4nCisjICBPciBmb3IgcGFyc2luZyBoZWFkZXJzIGluIGEgc3RyaW5nICh0aGlzIGlzIGFuIHVuY29tbW9uIG9wZXJhdGlvbiksIHVzZToKK2hlYWRlcnMgPSBQYXJzZXIocG9saWN5PWRlZmF1bHQpLnBhcnNlc3RyKAorICAgICAgICAnRnJvbTogRm9vIEJhciA8dXNlckBleGFtcGxlLmNvbT5cbicKICAgICAgICAgJ1RvOiA8c29tZW9uZV9lbHNlQGV4YW1wbGUuY29tPlxuJwogICAgICAgICAnU3ViamVjdDogVGVzdCBtZXNzYWdlXG4nCiAgICAgICAgICdcbicKICAgICAgICAgJ0JvZHkgd291bGQgZ28gaGVyZVxuJykKIAogIyAgTm93IHRoZSBoZWFkZXIgaXRlbXMgY2FuIGJlIGFjY2Vzc2VkIGFzIGEgZGljdGlvbmFyeToKLXByaW50KCdUbzogJXMnICUgaGVhZGVyc1sndG8nXSkKLXByaW50KCdGcm9tOiAlcycgJSBoZWFkZXJzWydmcm9tJ10pCi1wcmludCgnU3ViamVjdDogJXMnICUgaGVhZGVyc1snc3ViamVjdCddKQorcHJpbnQoJ1RvOiB7fScuZm9ybWF0KGhlYWRlcnNbJ3RvJ10pKQorcHJpbnQoJ0Zyb206IHt9Jy5mb3JtYXQoaGVhZGVyc1snZnJvbSddKSkKK3ByaW50KCdTdWJqZWN0OiB7fScuZm9ybWF0KGhlYWRlcnNbJ3N1YmplY3QnXSkpCisKKyMgWW91IGNhbiBhbHNvIGFjY2VzcyB0aGUgcGFydHMgb2YgdGhlIGFkZHJlc3NlczoKK3ByaW50KCdSZWNpcGllbnQgdXNlcm5hbWU6IHt9Jy5mb3JtYXQoaGVhZGVyc1sndG8nXS5hZGRyZXNzZXNbMF0udXNlcm5hbWUpKQorcHJpbnQoJ1NlbmRlciBuYW1lOiB7fScuZm9ybWF0KGhlYWRlcnNbJ2Zyb20nXS5hZGRyZXNzZXNbMF0uZGlzcGxheV9uYW1lKSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9lbWFpbC1taW1lLnB5IGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKaW5kZXggNjFkMDgzMC4uYzYxMDI0MiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKKysrIGIvRG9jL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKQEAgLTEsMzAgKzEsMjkgQEAKICMgSW1wb3J0IHNtdHBsaWIgZm9yIHRoZSBhY3R1YWwgc2VuZGluZyBmdW5jdGlvbgogaW1wb3J0IHNtdHBsaWIKIAorIyBBbmQgaW1naGRyIHRvIGZpbmQgdGhlIHR5cGVzIG9mIG91ciBpbWFnZXMKK2ltcG9ydCBpbWdoZHIKKwogIyBIZXJlIGFyZSB0aGUgZW1haWwgcGFja2FnZSBtb2R1bGVzIHdlJ2xsIG5lZWQKLWZyb20gZW1haWwubWltZS5pbWFnZSBpbXBvcnQgTUlNRUltYWdlCi1mcm9tIGVtYWlsLm1pbWUubXVsdGlwYXJ0IGltcG9ydCBNSU1FTXVsdGlwYXJ0Citmcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IEVtYWlsTWVzc2FnZQogCi1DT01NQVNQQUNFID0gJywgJwotCi0jIENyZWF0ZSB0aGUgY29udGFpbmVyIChvdXRlcikgZW1haWwgbWVzc2FnZS4KLW1zZyA9IE1JTUVNdWx0aXBhcnQoKQorIyBDcmVhdGUgdGhlIGNvbnRhaW5lciBlbWFpbCBtZXNzYWdlLgorbXNnID0gRW1haWxNZXNzYWdlKCkKIG1zZ1snU3ViamVjdCddID0gJ091ciBmYW1pbHkgcmV1bmlvbicKICMgbWUgPT0gdGhlIHNlbmRlcidzIGVtYWlsIGFkZHJlc3MKICMgZmFtaWx5ID0gdGhlIGxpc3Qgb2YgYWxsIHJlY2lwaWVudHMnIGVtYWlsIGFkZHJlc3NlcwogbXNnWydGcm9tJ10gPSBtZQotbXNnWydUbyddID0gQ09NTUFTUEFDRS5qb2luKGZhbWlseSkKK21zZ1snVG8nXSA9ICcsICcuam9pbihmYW1pbHkpCiBtc2cucHJlYW1ibGUgPSAnT3VyIGZhbWlseSByZXVuaW9uJwogCi0jIEFzc3VtZSB3ZSBrbm93IHRoYXQgdGhlIGltYWdlIGZpbGVzIGFyZSBhbGwgaW4gUE5HIGZvcm1hdAorIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIFVzZSBpbWdoZHIgdG8gZmlndXJlIG91dCB0aGUKKyMgTUlNRSBzdWJ0eXBlIGZvciBlYWNoIHNwZWNpZmljIGltYWdlLgogZm9yIGZpbGUgaW4gcG5nZmlsZXM6Ci0gICAgIyBPcGVuIHRoZSBmaWxlcyBpbiBiaW5hcnkgbW9kZS4gIExldCB0aGUgTUlNRUltYWdlIGNsYXNzIGF1dG9tYXRpY2FsbHkKLSAgICAjIGd1ZXNzIHRoZSBzcGVjaWZpYyBpbWFnZSB0eXBlLgogICAgIHdpdGggb3BlbihmaWxlLCAncmInKSBhcyBmcDoKLSAgICAgICAgaW1nID0gTUlNRUltYWdlKGZwLnJlYWQoKSkKLSAgICBtc2cuYXR0YWNoKGltZykKKyAgICAgICAgaW1nX2RhdGEgPSBmcC5yZWFkKCkKKyAgICBtc2cuYWRkX2F0dGFjaG1lbnQoaW1nX2RhdGEsIG1haW50eXBlPSdpbWFnZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJ0eXBlPWltZ2hkci53aGF0KE5vbmUsIGltZ19kYXRhKSkKIAogIyBTZW5kIHRoZSBlbWFpbCB2aWEgb3VyIG93biBTTVRQIHNlcnZlci4KLXMgPSBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpCi1zLnNlbmRfbWVzc2FnZShtc2cpCi1zLnF1aXQoKQord2l0aCBzbXRwbGliLlNNVFAoJ2xvY2FsaG9zdCcpIGFzIHM6CisgICAgcy5zZW5kX21lc3NhZ2UobXNnKQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXJlYWQtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS1uZXctYXBpLnB5CnJlbmFtZSB0byBEb2MvaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKaW5kZXggYjliOGI0MS4uZjY5ZWY0MCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtc2ltcGxlLnB5CkBAIC0yLDEzICsyLDEzIEBACiBpbXBvcnQgc210cGxpYgogCiAjIEltcG9ydCB0aGUgZW1haWwgbW9kdWxlcyB3ZSdsbCBuZWVkCi1mcm9tIGVtYWlsLm1pbWUudGV4dCBpbXBvcnQgTUlNRVRleHQKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKLSMgT3BlbiBhIHBsYWluIHRleHQgZmlsZSBmb3IgcmVhZGluZy4gIEZvciB0aGlzIGV4YW1wbGUsIGFzc3VtZSB0aGF0Ci0jIHRoZSB0ZXh0IGZpbGUgY29udGFpbnMgb25seSBBU0NJSSBjaGFyYWN0ZXJzLgorIyBPcGVuIHRoZSBwbGFpbiB0ZXh0IGZpbGUgd2hvc2UgbmFtZSBpcyBpbiB0ZXh0ZmlsZSBmb3IgcmVhZGluZy4KIHdpdGggb3Blbih0ZXh0ZmlsZSkgYXMgZnA6CiAgICAgIyBDcmVhdGUgYSB0ZXh0L3BsYWluIG1lc3NhZ2UKLSAgICBtc2cgPSBNSU1FVGV4dChmcC5yZWFkKCkpCisgICAgbXNnID0gRW1haWxNZXNzYWdlKCkKKyAgICBtc2cuc2V0X2NvbnRlbnQoZnAucmVhZCgpKQogCiAjIG1lID09IHRoZSBzZW5kZXIncyBlbWFpbCBhZGRyZXNzCiAjIHlvdSA9PSB0aGUgcmVjaXBpZW50J3MgZW1haWwgYWRkcmVzcwpkaWZmIC0tZ2l0IGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weSBiL0RvYy9pbmNsdWRlcy9lbWFpbC11bnBhY2sucHkKaW5kZXggNTc0YTBiNi4uZTBhN2YwMSAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQorKysgYi9Eb2MvaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CkBAIC0zLDExICszLDExIEBACiAiIiJVbnBhY2sgYSBNSU1FIG1lc3NhZ2UgaW50byBhIGRpcmVjdG9yeSBvZiBmaWxlcy4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgZW1haWwKLWltcG9ydCBlcnJubwogaW1wb3J0IG1pbWV0eXBlcwogCitmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAorCiBmcm9tIGFyZ3BhcnNlIGltcG9ydCBBcmd1bWVudFBhcnNlcgogCiAKQEAgLTIyLDggKzIyLDggQEAKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCdtc2dmaWxlJykKICAgICBhcmdzID0gcGFyc2VyLnBhcnNlX2FyZ3MoKQogCi0gICAgd2l0aCBvcGVuKGFyZ3MubXNnZmlsZSkgYXMgZnA6Ci0gICAgICAgIG1zZyA9IGVtYWlsLm1lc3NhZ2VfZnJvbV9maWxlKGZwKQorICAgIHdpdGggb3BlbihhcmdzLm1zZ2ZpbGUsICdyYicpIGFzIGZwOgorICAgICAgICBtc2cgPSBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIHBvbGljeT1kZWZhdWx0KQogCiAgICAgdHJ5OgogICAgICAgICBvcy5ta2RpcihhcmdzLmRpcmVjdG9yeSkKZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy9ydW4tZnVuYy5jIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKaW5kZXggOTg2ZDY3MC4uZWFkN2JkZCAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKKysrIGIvRG9jL2luY2x1ZGVzL3J1bi1mdW5jLmMKQEAgLTYzLDYgKzYzLDggQEAKICAgICAgICAgZnByaW50ZihzdGRlcnIsICJGYWlsZWQgdG8gbG9hZCBcIiVzXCJcbiIsIGFyZ3ZbMV0pOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXR1cm4gMTIwOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KZGlmZiAtLWdpdCBhL0RvYy9pbmNsdWRlcy90ZXN0LnB5IGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKaW5kZXggN2ViZjQ2YS4uOWU5ZDRhNiAxMDA2NDQKLS0tIGEvRG9jL2luY2x1ZGVzL3Rlc3QucHkKKysrIGIvRG9jL2luY2x1ZGVzL3Rlc3QucHkKQEAgLTIwNCw3ICsyMDQsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0KLVBMQVRfU1BFQyA9ICIlcy0lcyIgJSAoZ2V0X3BsYXRmb3JtKCksIHN5cy52ZXJzaW9uWzA6M10pCitQTEFUX1NQRUMgPSAiJXMtJWQuJWQiICUgKGdldF9wbGF0Zm9ybSgpLCAqc3lzLnZlcnNpb25faW5mb1s6Ml0pCiBzcmMgPSBvcy5wYXRoLmpvaW4oImJ1aWxkIiwgImxpYi4lcyIgJSBQTEFUX1NQRUMpCiBzeXMucGF0aC5hcHBlbmQoc3JjKQogCmRpZmYgLS1naXQgYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5IGIvRG9jL2luY2x1ZGVzL3R6aW5mby1leGFtcGxlcy5weQppbmRleCAzYThjZjQ3Li5hZTVhNTA5IDEwMDY0NAotLS0gYS9Eb2MvaW5jbHVkZXMvdHppbmZvLWV4YW1wbGVzLnB5CisrKyBiL0RvYy9pbmNsdWRlcy90emluZm8tZXhhbXBsZXMucHkKQEAgLTEsNDYgKzEsMTMgQEAKLWZyb20gZGF0ZXRpbWUgaW1wb3J0IHR6aW5mbywgdGltZWRlbHRhLCBkYXRldGltZQorZnJvbSBkYXRldGltZSBpbXBvcnQgdHppbmZvLCB0aW1lZGVsdGEsIGRhdGV0aW1lLCB0aW1lem9uZQogCiBaRVJPID0gdGltZWRlbHRhKDApCiBIT1VSID0gdGltZWRlbHRhKGhvdXJzPTEpCi0KLSMgQSBVVEMgY2xhc3MuCi0KLWNsYXNzIFVUQyh0emluZm8pOgotICAgICIiIlVUQyIiIgotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBaRVJPCi0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuICJVVEMiCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KLQotdXRjID0gVVRDKCkKLQotIyBBIGNsYXNzIGJ1aWxkaW5nIHR6aW5mbyBvYmplY3RzIGZvciBmaXhlZC1vZmZzZXQgdGltZSB6b25lcy4KLSMgTm90ZSB0aGF0IEZpeGVkT2Zmc2V0KDAsICJVVEMiKSBpcyBhIGRpZmZlcmVudCB3YXkgdG8gYnVpbGQgYQotIyBVVEMgdHppbmZvIG9iamVjdC4KLQotY2xhc3MgRml4ZWRPZmZzZXQodHppbmZvKToKLSAgICAiIiJGaXhlZCBvZmZzZXQgaW4gbWludXRlcyBlYXN0IGZyb20gVVRDLiIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG9mZnNldCwgbmFtZSk6Ci0gICAgICAgIHNlbGYuX19vZmZzZXQgPSB0aW1lZGVsdGEobWludXRlcz1vZmZzZXQpCi0gICAgICAgIHNlbGYuX19uYW1lID0gbmFtZQotCi0gICAgZGVmIHV0Y29mZnNldChzZWxmLCBkdCk6Ci0gICAgICAgIHJldHVybiBzZWxmLl9fb2Zmc2V0Ci0KLSAgICBkZWYgdHpuYW1lKHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIHNlbGYuX19uYW1lCi0KLSAgICBkZWYgZHN0KHNlbGYsIGR0KToKLSAgICAgICAgcmV0dXJuIFpFUk8KK1NFQ09ORCA9IHRpbWVkZWx0YShzZWNvbmRzPTEpCiAKICMgQSBjbGFzcyBjYXB0dXJpbmcgdGhlIHBsYXRmb3JtJ3MgaWRlYSBvZiBsb2NhbCB0aW1lLgotCisjIChNYXkgcmVzdWx0IGluIHdyb25nIHZhbHVlcyBvbiBoaXN0b3JpY2FsIHRpbWVzIGluCisjICB0aW1lem9uZXMgd2hlcmUgVVRDIG9mZnNldCBhbmQvb3IgdGhlIERTVCBydWxlcyBoYWQKKyMgIGNoYW5nZWQgaW4gdGhlIHBhc3QuKQogaW1wb3J0IHRpbWUgYXMgX3RpbWUKIAogU1RET0ZGU0VUID0gdGltZWRlbHRhKHNlY29uZHMgPSAtX3RpbWUudGltZXpvbmUpCkBAIC01Myw2ICsyMCwxNiBAQAogCiBjbGFzcyBMb2NhbFRpbWV6b25lKHR6aW5mbyk6CiAKKyAgICBkZWYgZnJvbXV0YyhzZWxmLCBkdCk6CisgICAgICAgIGFzc2VydCBkdC50emluZm8gaXMgc2VsZgorICAgICAgICBzdGFtcCA9IChkdCAtIGRhdGV0aW1lKDE5NzAsIDEsIDEsIHR6aW5mbz1zZWxmKSkgLy8gU0VDT05ECisgICAgICAgIGFyZ3MgPSBfdGltZS5sb2NhbHRpbWUoc3RhbXApWzo2XQorICAgICAgICBkc3RfZGlmZiA9IERTVERJRkYgLy8gU0VDT05ECisgICAgICAgICMgRGV0ZWN0IGZvbGQKKyAgICAgICAgZm9sZCA9IChhcmdzID09IF90aW1lLmxvY2FsdGltZShzdGFtcCAtIGRzdF9kaWZmKSkKKyAgICAgICAgcmV0dXJuIGRhdGV0aW1lKCphcmdzLCBtaWNyb3NlY29uZD1kdC5taWNyb3NlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR6aW5mbz1zZWxmLCBmb2xkPWZvbGQpCisKICAgICBkZWYgdXRjb2Zmc2V0KHNlbGYsIGR0KToKICAgICAgICAgaWYgc2VsZi5faXNkc3QoZHQpOgogICAgICAgICAgICAgcmV0dXJuIERTVE9GRlNFVApAQCAtOTksMjAgKzc2LDM3IEBACiAjIEluIHRoZSBVUywgc2luY2UgMjAwNywgRFNUIHN0YXJ0cyBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBzZWNvbmQKICMgU3VuZGF5IGluIE1hcmNoLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5IG9uIG9yIGFmdGVyIE1hciA4LgogRFNUU1RBUlRfMjAwNyA9IGRhdGV0aW1lKDEsIDMsIDgsIDIpCi0jIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgZmlyc3QgU3VuZGF5IG9mIE5vdi4KLURTVEVORF8yMDA3ID0gZGF0ZXRpbWUoMSwgMTEsIDEsIDEpCisjIGFuZCBlbmRzIGF0IDJhbSAoRFNUIHRpbWUpIG9uIHRoZSBmaXJzdCBTdW5kYXkgb2YgTm92LgorRFNURU5EXzIwMDcgPSBkYXRldGltZSgxLCAxMSwgMSwgMikKICMgRnJvbSAxOTg3IHRvIDIwMDYsIERTVCB1c2VkIHRvIHN0YXJ0IGF0IDJhbSAoc3RhbmRhcmQgdGltZSkgb24gdGhlIGZpcnN0Ci0jIFN1bmRheSBpbiBBcHJpbCBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWU7IDFhbSBzdGFuZGFyZCB0aW1lKSBvbiB0aGUgbGFzdAorIyBTdW5kYXkgaW4gQXByaWwgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lKSBvbiB0aGUgbGFzdAogIyBTdW5kYXkgb2YgT2N0b2Jlciwgd2hpY2ggaXMgdGhlIGZpcnN0IFN1bmRheSBvbiBvciBhZnRlciBPY3QgMjUuCiBEU1RTVEFSVF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCA0LCAxLCAyKQotRFNURU5EXzE5ODdfMjAwNiA9IGRhdGV0aW1lKDEsIDEwLCAyNSwgMSkKK0RTVEVORF8xOTg3XzIwMDYgPSBkYXRldGltZSgxLCAxMCwgMjUsIDIpCiAjIEZyb20gMTk2NyB0byAxOTg2LCBEU1QgdXNlZCB0byBzdGFydCBhdCAyYW0gKHN0YW5kYXJkIHRpbWUpIG9uIHRoZSBsYXN0Ci0jIFN1bmRheSBpbiBBcHJpbCAodGhlIG9uZSBvbiBvciBhZnRlciBBcHJpbCAyNCkgYW5kIHRvIGVuZCBhdCAyYW0gKERTVCB0aW1lOwotIyAxYW0gc3RhbmRhcmQgdGltZSkgb24gdGhlIGxhc3QgU3VuZGF5IG9mIE9jdG9iZXIsIHdoaWNoIGlzIHRoZSBmaXJzdCBTdW5kYXkKKyMgU3VuZGF5IGluIEFwcmlsICh0aGUgb25lIG9uIG9yIGFmdGVyIEFwcmlsIDI0KSBhbmQgdG8gZW5kIGF0IDJhbSAoRFNUIHRpbWUpCisjIG9uIHRoZSBsYXN0IFN1bmRheSBvZiBPY3RvYmVyLCB3aGljaCBpcyB0aGUgZmlyc3QgU3VuZGF5CiAjIG9uIG9yIGFmdGVyIE9jdCAyNS4KIERTVFNUQVJUXzE5NjdfMTk4NiA9IGRhdGV0aW1lKDEsIDQsIDI0LCAyKQogRFNURU5EXzE5NjdfMTk4NiA9IERTVEVORF8xOTg3XzIwMDYKIAorZGVmIHVzX2RzdF9yYW5nZSh5ZWFyKToKKyAgICAjIEZpbmQgc3RhcnQgYW5kIGVuZCB0aW1lcyBmb3IgVVMgRFNULiBGb3IgeWVhcnMgYmVmb3JlIDE5NjcsIHJldHVybgorICAgICMgc3RhcnQgPSBlbmQgZm9yIG5vIERTVC4KKyAgICBpZiAyMDA2IDwgeWVhcjoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3CisgICAgZWxpZiAxOTg2IDwgeWVhciA8IDIwMDc6CisgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTg3XzIwMDYsIERTVEVORF8xOTg3XzIwMDYKKyAgICBlbGlmIDE5NjYgPCB5ZWFyIDwgMTk4NzoKKyAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5NjdfMTk4NiwgRFNURU5EXzE5NjdfMTk4NgorICAgIGVsc2U6CisgICAgICAgIHJldHVybiAoZGF0ZXRpbWUoeWVhciwgMSwgMSksICkgKiAyCisKKyAgICBzdGFydCA9IGZpcnN0X3N1bmRheV9vbl9vcl9hZnRlcihkc3RzdGFydC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgZW5kID0gZmlyc3Rfc3VuZGF5X29uX29yX2FmdGVyKGRzdGVuZC5yZXBsYWNlKHllYXI9eWVhcikpCisgICAgcmV0dXJuIHN0YXJ0LCBlbmQKKworCiBjbGFzcyBVU1RpbWVab25lKHR6aW5mbyk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgaG91cnMsIHJlcHJuYW1lLCBzdGRuYW1lLCBkc3RuYW1lKToKQEAgLTE0MSwyNyArMTM1LDM5IEBACiAgICAgICAgICAgICAjIGltcGxlbWVudGF0aW9uKSBwYXNzZXMgYSBkYXRldGltZSB3aXRoIGR0LnR6aW5mbyBpcyBzZWxmLgogICAgICAgICAgICAgcmV0dXJuIFpFUk8KICAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCi0KLSAgICAgICAgIyBGaW5kIHN0YXJ0IGFuZCBlbmQgdGltZXMgZm9yIFVTIERTVC4gRm9yIHllYXJzIGJlZm9yZSAxOTY3LCByZXR1cm4KLSAgICAgICAgIyBaRVJPIGZvciBubyBEU1QuCi0gICAgICAgIGlmIDIwMDYgPCBkdC55ZWFyOgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzIwMDcsIERTVEVORF8yMDA3Ci0gICAgICAgIGVsaWYgMTk4NiA8IGR0LnllYXIgPCAyMDA3OgotICAgICAgICAgICAgZHN0c3RhcnQsIGRzdGVuZCA9IERTVFNUQVJUXzE5ODdfMjAwNiwgRFNURU5EXzE5ODdfMjAwNgotICAgICAgICBlbGlmIDE5NjYgPCBkdC55ZWFyIDwgMTk4NzoKLSAgICAgICAgICAgIGRzdHN0YXJ0LCBkc3RlbmQgPSBEU1RTVEFSVF8xOTY3XzE5ODYsIERTVEVORF8xOTY3XzE5ODYKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCi0KLSAgICAgICAgc3RhcnQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0c3RhcnQucmVwbGFjZSh5ZWFyPWR0LnllYXIpKQotICAgICAgICBlbmQgPSBmaXJzdF9zdW5kYXlfb25fb3JfYWZ0ZXIoZHN0ZW5kLnJlcGxhY2UoeWVhcj1kdC55ZWFyKSkKLQorICAgICAgICBzdGFydCwgZW5kID0gdXNfZHN0X3JhbmdlKGR0LnllYXIpCiAgICAgICAgICMgQ2FuJ3QgY29tcGFyZSBuYWl2ZSB0byBhd2FyZSBvYmplY3RzLCBzbyBzdHJpcCB0aGUgdGltZXpvbmUgZnJvbQogICAgICAgICAjIGR0IGZpcnN0LgotICAgICAgICBpZiBzdGFydCA8PSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKSA8IGVuZDoKKyAgICAgICAgZHQgPSBkdC5yZXBsYWNlKHR6aW5mbz1Ob25lKQorICAgICAgICBpZiBzdGFydCArIEhPVVIgPD0gZHQgPCBlbmQgLSBIT1VSOgorICAgICAgICAgICAgIyBEU1QgaXMgaW4gZWZmZWN0LgogICAgICAgICAgICAgcmV0dXJuIEhPVVIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBaRVJPCisgICAgICAgIGlmIGVuZCAtIEhPVVIgPD0gZHQgPCBlbmQ6CisgICAgICAgICAgICAjIEZvbGQgKGFuIGFtYmlndW91cyBob3VyKTogdXNlIGR0LmZvbGQgdG8gZGlzYW1iaWd1YXRlLgorICAgICAgICAgICAgcmV0dXJuIFpFUk8gaWYgZHQuZm9sZCBlbHNlIEhPVVIKKyAgICAgICAgaWYgc3RhcnQgPD0gZHQgPCBzdGFydCArIEhPVVI6CisgICAgICAgICAgICAjIEdhcCAoYSBub24tZXhpc3RlbnQgaG91cik6IHJldmVyc2UgdGhlIGZvbGQgcnVsZS4KKyAgICAgICAgICAgIHJldHVybiBIT1VSIGlmIGR0LmZvbGQgZWxzZSBaRVJPCisgICAgICAgICMgRFNUIGlzIG9mZi4KKyAgICAgICAgcmV0dXJuIFpFUk8KKworICAgIGRlZiBmcm9tdXRjKHNlbGYsIGR0KToKKyAgICAgICAgYXNzZXJ0IGR0LnR6aW5mbyBpcyBzZWxmCisgICAgICAgIHN0YXJ0LCBlbmQgPSB1c19kc3RfcmFuZ2UoZHQueWVhcikKKyAgICAgICAgc3RhcnQgPSBzdGFydC5yZXBsYWNlKHR6aW5mbz1zZWxmKQorICAgICAgICBlbmQgPSBlbmQucmVwbGFjZSh0emluZm89c2VsZikKKyAgICAgICAgc3RkX3RpbWUgPSBkdCArIHNlbGYuc3Rkb2Zmc2V0CisgICAgICAgIGRzdF90aW1lID0gc3RkX3RpbWUgKyBIT1VSCisgICAgICAgIGlmIGVuZCA8PSBkc3RfdGltZSA8IGVuZCArIEhPVVI6CisgICAgICAgICAgICAjIFJlcGVhdGVkIGhvdXIKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZS5yZXBsYWNlKGZvbGQ9MSkKKyAgICAgICAgaWYgc3RkX3RpbWUgPCBzdGFydCBvciBkc3RfdGltZSA+PSBlbmQ6CisgICAgICAgICAgICAjIFN0YW5kYXJkIHRpbWUKKyAgICAgICAgICAgIHJldHVybiBzdGRfdGltZQorICAgICAgICBpZiBzdGFydCA8PSBzdGRfdGltZSA8IGVuZCAtIEhPVVI6CisgICAgICAgICAgICAjIERheWxpZ2h0IHNhdmluZyB0aW1lCisgICAgICAgICAgICByZXR1cm4gZHN0X3RpbWUKKwogCiBFYXN0ZXJuICA9IFVTVGltZVpvbmUoLTUsICJFYXN0ZXJuIiwgICJFU1QiLCAiRURUIikKIENlbnRyYWwgID0gVVNUaW1lWm9uZSgtNiwgIkNlbnRyYWwiLCAgIkNTVCIsICJDRFQiKQpkaWZmIC0tZ2l0IGEvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0IGIvRG9jL2luc3RhbGxpbmcvaW5kZXgucnN0CmluZGV4IDFlZjMxNDkuLmIyMjQ2NWQgMTAwNjQ0Ci0tLSBhL0RvYy9pbnN0YWxsaW5nL2luZGV4LnJzdAorKysgYi9Eb2MvaW5zdGFsbGluZy9pbmRleC5yc3QKQEAgLTIsOSArMiw5IEBACiAKIC4uIF9pbnN0YWxsaW5nLWluZGV4OgogCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotICBJbnN0YWxsaW5nIFB5dGhvbiBNb2R1bGVzCi0qKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKioqKioqKioqKioqKioqKioqKioqKioqKgorSW5zdGFsbGluZyBQeXRob24gTW9kdWxlcworKioqKioqKioqKioqKioqKioqKioqKioqKgogCiA6RW1haWw6IGRpc3R1dGlscy1zaWdAcHl0aG9uLm9yZwogCkBAIC0zNCwyNCArMzQsMjQgQEAKIAogKiBgYHBpcGBgIGlzIHRoZSBwcmVmZXJyZWQgaW5zdGFsbGVyIHByb2dyYW0uIFN0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNCwgaXQKICAgaXMgaW5jbHVkZWQgYnkgZGVmYXVsdCB3aXRoIHRoZSBQeXRob24gYmluYXJ5IGluc3RhbGxlcnMuCi0qIGEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIHNlbWktaXNvbGF0ZWQgUHl0aG9uIGVudmlyb25tZW50IHRoYXQgYWxsb3dzCisqIEEgKnZpcnR1YWwgZW52aXJvbm1lbnQqIGlzIGEgc2VtaS1pc29sYXRlZCBQeXRob24gZW52aXJvbm1lbnQgdGhhdCBhbGxvd3MKICAgcGFja2FnZXMgdG8gYmUgaW5zdGFsbGVkIGZvciB1c2UgYnkgYSBwYXJ0aWN1bGFyIGFwcGxpY2F0aW9uLCByYXRoZXIgdGhhbgotICBiZWluZyBpbnN0YWxsZWQgc3lzdGVtIHdpZGUKLSogYGBweXZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKKyAgYmVpbmcgaW5zdGFsbGVkIHN5c3RlbSB3aWRlLgorKiBgYHZlbnZgYCBpcyB0aGUgc3RhbmRhcmQgdG9vbCBmb3IgY3JlYXRpbmcgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCBoYXMKICAgYmVlbiBwYXJ0IG9mIFB5dGhvbiBzaW5jZSBQeXRob24gMy4zLiBTdGFydGluZyB3aXRoIFB5dGhvbiAzLjQsIGl0Ci0gIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgIGRlZmF1bHRzIHRvIGluc3RhbGxpbmcgYGBwaXBgYCBpbnRvIGFsbCBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnRzLgogKiBgYHZpcnR1YWxlbnZgYCBpcyBhIHRoaXJkIHBhcnR5IGFsdGVybmF0aXZlIChhbmQgcHJlZGVjZXNzb3IpIHRvCi0gIGBgcHl2ZW52YGAuIEl0IGFsbG93cyB2aXJ0dWFsIGVudmlyb25tZW50cyB0byBiZSB1c2VkIG9uIHZlcnNpb25zIG9mCi0gIFB5dGhvbiBwcmlvciB0byAzLjQsIHdoaWNoIGVpdGhlciBkb24ndCBwcm92aWRlIGBgcHl2ZW52YGAgYXQgYWxsLCBvcgorICBgYHZlbnZgYC4gSXQgYWxsb3dzIHZpcnR1YWwgZW52aXJvbm1lbnRzIHRvIGJlIHVzZWQgb24gdmVyc2lvbnMgb2YKKyAgUHl0aG9uIHByaW9yIHRvIDMuNCwgd2hpY2ggZWl0aGVyIGRvbid0IHByb3ZpZGUgYGB2ZW52YGAgYXQgYWxsLCBvcgogICBhcmVuJ3QgYWJsZSB0byBhdXRvbWF0aWNhbGx5IGluc3RhbGwgYGBwaXBgYCBpbnRvIGNyZWF0ZWQgZW52aXJvbm1lbnRzLgotKiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgSW5kZXggPGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGk+YF9fIGlzIGEgcHVibGljCisqIFRoZSBgUHl0aG9uIFBhY2thZ2luZyBJbmRleCA8aHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaT5gX18gaXMgYSBwdWJsaWMKICAgcmVwb3NpdG9yeSBvZiBvcGVuIHNvdXJjZSBsaWNlbnNlZCBwYWNrYWdlcyBtYWRlIGF2YWlsYWJsZSBmb3IgdXNlIGJ5Ci0gIG90aGVyIFB5dGhvbiB1c2VycworICBvdGhlciBQeXRob24gdXNlcnMuCiAqIHRoZSBgUHl0aG9uIFBhY2thZ2luZyBBdXRob3JpdHkKICAgPGh0dHBzOi8vd3d3LnB5cGEuaW8vZW4vbGF0ZXN0Lz5gX18gYXJlIHRoZSBncm91cCBvZgogICBkZXZlbG9wZXJzIGFuZCBkb2N1bWVudGF0aW9uIGF1dGhvcnMgcmVzcG9uc2libGUgZm9yIHRoZSBtYWludGVuYW5jZSBhbmQKICAgZXZvbHV0aW9uIG9mIHRoZSBzdGFuZGFyZCBwYWNrYWdpbmcgdG9vbHMgYW5kIHRoZSBhc3NvY2lhdGVkIG1ldGFkYXRhIGFuZAotICBmaWxlIGZvcm1hdCBzdGFuZGFyZHMuIFRoZXkgbWFpbnRhaW4gYSB2YXJpZXR5IG9mIHRvb2xzLCBkb2N1bWVudGF0aW9uCisgIGZpbGUgZm9ybWF0IHN0YW5kYXJkcy4gVGhleSBtYWludGFpbiBhIHZhcmlldHkgb2YgdG9vbHMsIGRvY3VtZW50YXRpb24sCiAgIGFuZCBpc3N1ZSB0cmFja2VycyBvbiBib3RoIGBHaXRIdWIgPGh0dHBzOi8vZ2l0aHViLmNvbS9weXBhPmBfXyBhbmQKICAgYEJpdEJ1Y2tldCA8aHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvPmBfXy4KICogYGBkaXN0dXRpbHNgYCBpcyB0aGUgb3JpZ2luYWwgYnVpbGQgYW5kIGRpc3RyaWJ1dGlvbiBzeXN0ZW0gZmlyc3QgYWRkZWQgdG8KQEAgLTYyLDYgKzYyLDE5IEBACiAgIG9mIHRoZSBtYWlsaW5nIGxpc3QgdXNlZCB0byBjb29yZGluYXRlIFB5dGhvbiBwYWNrYWdpbmcgc3RhbmRhcmRzCiAgIGRldmVsb3BtZW50KS4KIAorLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgYGBweXZlbnZgYCB3YXMgdGhlIHJlY29tbWVuZGVkIHRvb2wgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzIGZvcgorICAgUHl0aG9uIDMuMyBhbmQgMy40LCBhbmQgaXMgYGRlcHJlY2F0ZWQgaW4gUHl0aG9uIDMuNgorICAgPGh0dHBzOi8vZG9jcy5weXRob24ub3JnL2Rldi93aGF0c25ldy8zLjYuaHRtbCNkZXByZWNhdGVkLWZlYXR1cmVzPmBfLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQorICAgVGhlIHVzZSBvZiBgYHZlbnZgYCBpcyBub3cgcmVjb21tZW5kZWQgZm9yIGNyZWF0aW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzLgorCisuLiBzZWVhbHNvOjoKKworICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogQ3JlYXRpbmcgYW5kIHVzaW5nIHZpcnR1YWwgZW52aXJvbm1lbnRzCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9pbnN0YWxsaW5nLyNjcmVhdGluZy12aXJ0dWFsLWVudmlyb25tZW50cz5gX18KKwogCiBCYXNpYyB1c2FnZQogPT09PT09PT09PT0KQEAgLTEwMCwxMyArMTEzLDE0IEBACiBNb3JlIGluZm9ybWF0aW9uIGFuZCByZXNvdXJjZXMgcmVnYXJkaW5nIGBgcGlwYGAgYW5kIGl0cyBjYXBhYmlsaXRpZXMgY2FuIGJlCiBmb3VuZCBpbiB0aGUgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZSA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZz5gX18uCiAKLWBgcHl2ZW52YGAgaGFzIGl0cyBvd24gZG9jdW1lbnRhdGlvbiBhdCA6cmVmOmBzY3JpcHRzLXB5dmVudmAuIEluc3RhbGxpbmcKLWludG8gYW4gYWN0aXZlIHZpcnR1YWwgZW52aXJvbm1lbnQgdXNlcyB0aGUgY29tbWFuZHMgc2hvd24gYWJvdmUuCitDcmVhdGlvbiBvZiB2aXJ0dWFsIGVudmlyb25tZW50cyBpcyBkb25lIHRocm91Z2ggdGhlIDptb2Q6YHZlbnZgIG1vZHVsZS4KK0luc3RhbGxpbmcgcGFja2FnZXMgaW50byBhbiBhY3RpdmUgdmlydHVhbCBlbnZpcm9ubWVudCB1c2VzIHRoZSBjb21tYW5kcyBzaG93bgorYWJvdmUuCiAKIC4uIHNlZWFsc286OgogCiAgICAgYFB5dGhvbiBQYWNrYWdpbmcgVXNlciBHdWlkZTogSW5zdGFsbGluZyBQeXRob24gRGlzdHJpYnV0aW9uIFBhY2thZ2VzCi0gICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvPmBfXworICAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvPmBfXwogCiAKIEhvdyBkbyBJIC4uLj8KQEAgLTEyNCw3ICsxMzgsNyBAQAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IFJlcXVpcmVtZW50cyBmb3IgSW5zdGFsbGluZyBQYWNrYWdlcwotICAgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvZW4vbGF0ZXN0L2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2luc3RhbGxpbmcvI3JlcXVpcmVtZW50cy1mb3ItaW5zdGFsbGluZy1wYWNrYWdlcz5gX18KIAogCiAuLiBpbnN0YWxsaW5nLXBlci11c2VyLWluc3RhbGxhdGlvbjoKQEAgLTE0MiwyMCArMTU2LDE5IEBACiBBIG51bWJlciBvZiBzY2llbnRpZmljIFB5dGhvbiBwYWNrYWdlcyBoYXZlIGNvbXBsZXggYmluYXJ5IGRlcGVuZGVuY2llcywgYW5kCiBhcmVuJ3QgY3VycmVudGx5IGVhc3kgdG8gaW5zdGFsbCB1c2luZyBgYHBpcGBgIGRpcmVjdGx5LiBBdCB0aGlzIHBvaW50IGluCiB0aW1lLCBpdCB3aWxsIG9mdGVuIGJlIGVhc2llciBmb3IgdXNlcnMgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcyBieQotYG90aGVyIG1lYW5zCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCitgb3RoZXIgbWVhbnMgPGh0dHBzOi8vcGFja2FnaW5nLnB5dGhvbi5vcmcvc2NpZW5jZS8+YF9fCiByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGluc3RhbGwgdGhlbSB3aXRoIGBgcGlwYGAuCiAKIC4uIHNlZWFsc286OgogCiAgICBgUHl0aG9uIFBhY2thZ2luZyBVc2VyIEd1aWRlOiBJbnN0YWxsaW5nIFNjaWVudGlmaWMgUGFja2FnZXMKLSAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL2VuL2xhdGVzdC9zY2llbmNlLz5gX18KKyAgIDxodHRwczovL3BhY2thZ2luZy5weXRob24ub3JnL3NjaWVuY2UvPmBfXwogCiAKIC4uLiB3b3JrIHdpdGggbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCBpbiBwYXJhbGxlbD8KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAotT24gTGludXgsIE1hYyBPUyBYIGFuZCBvdGhlciBQT1NJWCBzeXN0ZW1zLCB1c2UgdGhlIHZlcnNpb25lZCBQeXRob24gY29tbWFuZHMKK09uIExpbnV4LCBNYWMgT1MgWCwgYW5kIG90aGVyIFBPU0lYIHN5c3RlbXMsIHVzZSB0aGUgdmVyc2lvbmVkIFB5dGhvbiBjb21tYW5kcwogaW4gY29tYmluYXRpb24gd2l0aCB0aGUgYGAtbWBgIHN3aXRjaCB0byBydW4gdGhlIGFwcHJvcHJpYXRlIGNvcHkgb2YKIGBgcGlwYGA6OgogCkBAIC0xNjQsNyArMTc3LDcgQEAKICAgIHB5dGhvbjMgICAtbSBwaXAgaW5zdGFsbCBTb21lUGFja2FnZSAgIyBkZWZhdWx0IFB5dGhvbiAzCiAgICBweXRob24zLjQgLW0gcGlwIGluc3RhbGwgU29tZVBhY2thZ2UgICMgc3BlY2lmaWNhbGx5IFB5dGhvbiAzLjQKIAotKGFwcHJvcHJpYXRlbHkgdmVyc2lvbmVkIGBgcGlwYGAgY29tbWFuZHMgbWF5IGFsc28gYmUgYXZhaWxhYmxlKQorQXBwcm9wcmlhdGVseSB2ZXJzaW9uZWQgYGBwaXBgYCBjb21tYW5kcyBtYXkgYWxzbyBiZSBhdmFpbGFibGUuCiAKIE9uIFdpbmRvd3MsIHVzZSB0aGUgYGBweWBgIFB5dGhvbiBsYXVuY2hlciBpbiBjb21iaW5hdGlvbiB3aXRoIHRoZSBgYC1tYGAKIHN3aXRjaDo6CkBAIC0yMTIsMTEgKzIyNSwxMSBAQAogdGhhbiBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gdGhlbXNlbHZlcy4KIAogU29tZSBvZiB0aGUgc29sdXRpb25zIGZvciBpbnN0YWxsaW5nIGBzY2llbnRpZmljIHNvZnR3YXJlCi08aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3Qvc2NpZW5jZS8+YF9fCi10aGF0IGlzIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCis8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9zY2llbmNlLz5gX18KK3RoYXQgYXJlIG5vdCB5ZXQgYXZhaWxhYmxlIGFzIHByZS1idWlsdCBgYHdoZWVsYGAgZmlsZXMgbWF5IGFsc28gaGVscCB3aXRoCiBvYnRhaW5pbmcgb3RoZXIgYmluYXJ5IGV4dGVuc2lvbnMgd2l0aG91dCBuZWVkaW5nIHRvIGJ1aWxkIHRoZW0gbG9jYWxseS4KIAogLi4gc2VlYWxzbzo6CiAKICAgIGBQeXRob24gUGFja2FnaW5nIFVzZXIgR3VpZGU6IEJpbmFyeSBFeHRlbnNpb25zCi0gICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9lbi9sYXRlc3QvZXh0ZW5zaW9ucy8+YF9fCisgICA8aHR0cHM6Ly9wYWNrYWdpbmcucHl0aG9uLm9yZy9leHRlbnNpb25zLz5gX18KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdCBiL0RvYy9saWJyYXJ5L2FzeW5jaGF0LnJzdAppbmRleCBhZTcyZDI2Li5lMDIzNjBjIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9hc3luY2hhdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvYXN5bmNoYXQucnN0CkBAIC01OCwxMyArNTgsMTMgQEAKICAgICAgIFRoZSBhc3luY2hyb25vdXMgb3V0cHV0IGJ1ZmZlciBzaXplIChkZWZhdWx0IGBgNDA5NmBgKS4KIAogICAgVW5saWtlIDpjbGFzczpgYXN5bmNvcmUuZGlzcGF0Y2hlcmAsIDpjbGFzczpgYXN5bmNfY2hhdGAgYWxsb3dzIHlvdSB0bwotICAgZGVmaW5lIGEgZmlyc3QtaW4tZmlyc3Qtb3V0IHF1ZXVlIChmaWZvKSBvZiAqcHJvZHVjZXJzKi4gQSBwcm9kdWNlciBuZWVkCisgICBkZWZpbmUgYSA6YWJicjpgRklGTyAoZmlyc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlIG9mICpwcm9kdWNlcnMqLiBBIHByb2R1Y2VyIG5lZWQKICAgIGhhdmUgb25seSBvbmUgbWV0aG9kLCA6bWV0aDpgbW9yZWAsIHdoaWNoIHNob3VsZCByZXR1cm4gZGF0YSB0byBiZQogICAgdHJhbnNtaXR0ZWQgb24gdGhlIGNoYW5uZWwuCiAgICBUaGUgcHJvZHVjZXIgaW5kaWNhdGVzIGV4aGF1c3Rpb24gKCppLmUuKiB0aGF0IGl0IGNvbnRhaW5zIG5vIG1vcmUgZGF0YSkgYnkKICAgIGhhdmluZyBpdHMgOm1ldGg6YG1vcmVgIG1ldGhvZCByZXR1cm4gdGhlIGVtcHR5IGJ5dGVzIG9iamVjdC4gQXQgdGhpcyBwb2ludAotICAgdGhlIDpjbGFzczpgYXN5bmNfY2hhdGAgb2JqZWN0IHJlbW92ZXMgdGhlIHByb2R1Y2VyIGZyb20gdGhlIGZpZm8gYW5kIHN0YXJ0cwotICAgdXNpbmcgdGhlIG5leHQgcHJvZHVjZXIsIGlmIGFueS4gV2hlbiB0aGUgcHJvZHVjZXIgZmlmbyBpcyBlbXB0eSB0aGUKKyAgIHRoZSA6Y2xhc3M6YGFzeW5jX2NoYXRgIG9iamVjdCByZW1vdmVzIHRoZSBwcm9kdWNlciBmcm9tIHRoZSBxdWV1ZSBhbmQgc3RhcnRzCisgICB1c2luZyB0aGUgbmV4dCBwcm9kdWNlciwgaWYgYW55LiBXaGVuIHRoZSBwcm9kdWNlciBxdWV1ZSBpcyBlbXB0eSB0aGUKICAgIDptZXRoOmBoYW5kbGVfd3JpdGVgIG1ldGhvZCBkb2VzIG5vdGhpbmcuIFlvdSB1c2UgdGhlIGNoYW5uZWwgb2JqZWN0J3MKICAgIDptZXRoOmBzZXRfdGVybWluYXRvcmAgbWV0aG9kIHRvIGRlc2NyaWJlIGhvdyB0byByZWNvZ25pemUgdGhlIGVuZCBvZiwgb3IKICAgIGFuIGltcG9ydGFudCBicmVha3BvaW50IGluLCBhbiBpbmNvbWluZyB0cmFuc21pc3Npb24gZnJvbSB0aGUgcmVtb3RlCkBAIC03OCw4ICs3OCw4IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuY2xvc2Vfd2hlbl9kb25lKCkKIAotICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIGZpZm8uIFdoZW4gdGhpcyBwcm9kdWNlciBpcyBwb3BwZWQgb2ZmCi0gICB0aGUgZmlmbyBpdCBjYXVzZXMgdGhlIGNoYW5uZWwgdG8gYmUgY2xvc2VkLgorICAgUHVzaGVzIGEgYGBOb25lYGAgb24gdG8gdGhlIHByb2R1Y2VyIHF1ZXVlLiBXaGVuIHRoaXMgcHJvZHVjZXIgaXMgcG9wcGVkIG9mZgorICAgdGhlIHF1ZXVlIGl0IGNhdXNlcyB0aGUgY2hhbm5lbCB0byBiZSBjbG9zZWQuCiAKIAogLi4gbWV0aG9kOjogYXN5bmNfY2hhdC5jb2xsZWN0X2luY29taW5nX2RhdGEoZGF0YSkKQEAgLTkyLDcgKzkyLDcgQEAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQuZGlzY2FyZF9idWZmZXJzKCkKIAogICAgSW4gZW1lcmdlbmNpZXMgdGhpcyBtZXRob2Qgd2lsbCBkaXNjYXJkIGFueSBkYXRhIGhlbGQgaW4gdGhlIGlucHV0IGFuZC9vcgotICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBmaWZvLgorICAgb3V0cHV0IGJ1ZmZlcnMgYW5kIHRoZSBwcm9kdWNlciBxdWV1ZS4KIAogCiAuLiBtZXRob2Q6OiBhc3luY19jaGF0LmZvdW5kX3Rlcm1pbmF0b3IoKQpAQCAtMTEwLDcgKzExMCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaChkYXRhKQogCi0gICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIGZpZm8gdG8gZW5zdXJlIGl0cyB0cmFuc21pc3Npb24uCisgICBQdXNoZXMgZGF0YSBvbiB0byB0aGUgY2hhbm5lbCdzIHF1ZXVlIHRvIGVuc3VyZSBpdHMgdHJhbnNtaXNzaW9uLgogICAgVGhpcyBpcyBhbGwgeW91IG5lZWQgdG8gZG8gdG8gaGF2ZSB0aGUgY2hhbm5lbCB3cml0ZSB0aGUgZGF0YSBvdXQgdG8gdGhlCiAgICBuZXR3b3JrLCBhbHRob3VnaCBpdCBpcyBwb3NzaWJsZSB0byB1c2UgeW91ciBvd24gcHJvZHVjZXJzIGluIG1vcmUgY29tcGxleAogICAgc2NoZW1lcyB0byBpbXBsZW1lbnQgZW5jcnlwdGlvbiBhbmQgY2h1bmtpbmcsIGZvciBleGFtcGxlLgpAQCAtMTE4LDcgKzExOCw3IEBACiAKIC4uIG1ldGhvZDo6IGFzeW5jX2NoYXQucHVzaF93aXRoX3Byb2R1Y2VyKHByb2R1Y2VyKQogCi0gICBUYWtlcyBhIHByb2R1Y2VyIG9iamVjdCBhbmQgYWRkcyBpdCB0byB0aGUgcHJvZHVjZXIgZmlmbyBhc3NvY2lhdGVkIHdpdGgKKyAgIFRha2VzIGEgcHJvZHVjZXIgb2JqZWN0IGFuZCBhZGRzIGl0IHRvIHRoZSBwcm9kdWNlciBxdWV1ZSBhc3NvY2lhdGVkIHdpdGgKICAgIHRoZSBjaGFubmVsLiAgV2hlbiBhbGwgY3VycmVudGx5LXB1c2hlZCBwcm9kdWNlcnMgaGF2ZSBiZWVuIGV4aGF1c3RlZCB0aGUKICAgIGNoYW5uZWwgd2lsbCBjb25zdW1lIHRoaXMgcHJvZHVjZXIncyBkYXRhIGJ5IGNhbGxpbmcgaXRzIDptZXRoOmBtb3JlYAogICAgbWV0aG9kIGFuZCBzZW5kIHRoZSBkYXRhIHRvIHRoZSByZW1vdGUgZW5kcG9pbnQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QgYi9Eb2MvbGlicmFyeS9hc3luY2lvLWV2ZW50bG9vcC5yc3QKaW5kZXggZWVkNGYwOC4uNjcwNjAwMSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYXN5bmNpby1ldmVudGxvb3AucnN0CisrKyBiL0RvYy9saWJyYXJ5L2FzeW5jaW8tZXZlbnRsb29wLnJzdApAQCAtMTEwLDggKzExMCw5IEBACiAgICBjYWxsZWQgYWZ0ZXIgOm1ldGg6YGNhbGxfc29vbmAgcmV0dXJucywgd2hlbiBjb250cm9sIHJldHVybnMgdG8gdGhlIGV2ZW50CiAgICBsb29wLgogCi0gICBUaGlzIG9wZXJhdGVzIGFzIGEgRklGTyBxdWV1ZSwgY2FsbGJhY2tzIGFyZSBjYWxsZWQgaW4gdGhlIG9yZGVyIGluCi0gICB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBleGFjdGx5IG9uY2UuCisgICBUaGlzIG9wZXJhdGVzIGFzIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSwgY2FsbGJhY2tzCisgICBhcmUgY2FsbGVkIGluIHRoZSBvcmRlciBpbiB3aGljaCB0aGV5IGFyZSByZWdpc3RlcmVkLiAgRWFjaCBjYWxsYmFjaworICAgd2lsbCBiZSBjYWxsZWQgZXhhY3RseSBvbmNlLgogCiAgICBBbnkgcG9zaXRpb25hbCBhcmd1bWVudHMgYWZ0ZXIgdGhlIGNhbGxiYWNrIHdpbGwgYmUgcGFzc2VkIHRvIHRoZQogICAgY2FsbGJhY2sgd2hlbiBpdCBpcyBjYWxsZWQuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QgYi9Eb2MvbGlicmFyeS9iaW5hc2NpaS5yc3QKaW5kZXggODc4ZDhkYi4uNGY1ZjBmMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYmluYXNjaWkucnN0CisrKyBiL0RvYy9saWJyYXJ5L2JpbmFzY2lpLnJzdApAQCAtNTMsMTMgKzUzLDE0IEBACiAgICB0aGFuIG9uZSBsaW5lIG1heSBiZSBwYXNzZWQgYXQgYSB0aW1lLgogCiAKLS4uIGZ1bmN0aW9uOjogYjJhX2Jhc2U2NChkYXRhKQorLi4gZnVuY3Rpb246OiBiMmFfYmFzZTY0KGRhdGEsIFwqLCBuZXdsaW5lPVRydWUpCiAKICAgIENvbnZlcnQgYmluYXJ5IGRhdGEgdG8gYSBsaW5lIG9mIEFTQ0lJIGNoYXJhY3RlcnMgaW4gYmFzZTY0IGNvZGluZy4gVGhlIHJldHVybgotICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIuICBUaGUgbmV3bGluZSBpcwotICAgYWRkZWQgYmVjYXVzZSB0aGUgb3JpZ2luYWwgdXNlIGNhc2UgZm9yIHRoaXMgZnVuY3Rpb24gd2FzIHRvIGZlZWQgaXQgYQotICAgc2VyaWVzIG9mIDU3IGJ5dGUgaW5wdXQgbGluZXMgdG8gZ2V0IG91dHB1dCBsaW5lcyB0aGF0IGNvbmZvcm0gdG8gdGhlCi0gICBNSU1FLWJhc2U2NCBzdGFuZGFyZC4gIE90aGVyd2lzZSB0aGUgb3V0cHV0IGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorICAgdmFsdWUgaXMgdGhlIGNvbnZlcnRlZCBsaW5lLCBpbmNsdWRpbmcgYSBuZXdsaW5lIGNoYXIgaWYgKm5ld2xpbmUqIGlzCisgICB0cnVlLiAgVGhlIG91dHB1dCBvZiB0aGlzIGZ1bmN0aW9uIGNvbmZvcm1zIHRvIDpyZmM6YDM1NDhgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICpuZXdsaW5lKiBwYXJhbWV0ZXIuCiAKIAogLi4gZnVuY3Rpb246OiBhMmJfcXAoZGF0YSwgaGVhZGVyPUZhbHNlKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvYnoyLnJzdCBiL0RvYy9saWJyYXJ5L2J6Mi5yc3QKaW5kZXggNmM0OWQ5Zi4uZDVmNjIyNSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvYnoyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9iejIucnN0CkBAIC02MSw2ICs2MSw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIGBgJ3gnYGAgKGV4Y2x1c2l2ZSBjcmVhdGlvbikgbW9kZSB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogQloyRmlsZShmaWxlbmFtZSwgbW9kZT0ncicsIGJ1ZmZlcmluZz1Ob25lLCBjb21wcmVzc2xldmVsPTkpCiAKQEAgLTEyOCw2ICsxMzEsOSBAQAogICAgICAgVGhlIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAgbWV0aG9kIG5vdyBhY2NlcHRzIGFuIGFyZ3VtZW50IG9mCiAgICAgICBgYE5vbmVgYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogSW5jcmVtZW50YWwgKGRlKWNvbXByZXNzaW9uCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NtYXRoLnJzdCBiL0RvYy9saWJyYXJ5L2NtYXRoLnJzdAppbmRleCA2MmRkYjZiLi5kOTM1YzQxIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY21hdGgucnN0CkBAIC0yNTMsNiArMjUzLDQwIEBACiAKICAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKmUqLCBhcyBhIGZsb2F0LgogCisuLiBkYXRhOjogdGF1CisKKyAgIFRoZSBtYXRoZW1hdGljYWwgY29uc3RhbnQgKs+EKiwgYXMgYSBmbG9hdC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmYKKworICAgRmxvYXRpbmctcG9pbnQgcG9zaXRpdmUgaW5maW5pdHkuIEVxdWl2YWxlbnQgdG8gYGBmbG9hdCgnaW5mJylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGRhdGE6OiBpbmZqCisKKyAgIENvbXBsZXggbnVtYmVyIHdpdGggemVybyByZWFsIHBhcnQgYW5kIHBvc2l0aXZlIGluZmluaXR5IGltYWdpbmFyeQorICAgcGFydC4gRXF1aXZhbGVudCB0byBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnaW5mJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogbmFuCisKKyAgIEEgZmxvYXRpbmctcG9pbnQgIm5vdCBhIG51bWJlciIgKE5hTikgdmFsdWUuICBFcXVpdmFsZW50IHRvCisgICBgYGZsb2F0KCduYW4nKWBgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IG5hbmoKKworICAgQ29tcGxleCBudW1iZXIgd2l0aCB6ZXJvIHJlYWwgcGFydCBhbmQgTmFOIGltYWdpbmFyeSBwYXJ0LiBFcXVpdmFsZW50IHRvCisgICBgYGNvbXBsZXgoMC4wLCBmbG9hdCgnbmFuJykpYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKIC4uIGluZGV4OjogbW9kdWxlOiBtYXRoCiAKIE5vdGUgdGhhdCB0aGUgc2VsZWN0aW9uIG9mIGZ1bmN0aW9ucyBpcyBzaW1pbGFyLCBidXQgbm90IGlkZW50aWNhbCwgdG8gdGhhdCBpbgpAQCAtMjc2LDUgKzMxMCwzIEBACiAgICBLYWhhbiwgVzogIEJyYW5jaCBjdXRzIGZvciBjb21wbGV4IGVsZW1lbnRhcnkgZnVuY3Rpb25zOyBvciwgTXVjaCBhZG8gYWJvdXQKICAgIG5vdGhpbmcncyBzaWduIGJpdC4gIEluIElzZXJsZXMsIEEuLCBhbmQgUG93ZWxsLCBNLiAoZWRzLiksIFRoZSBzdGF0ZSBvZiB0aGUgYXJ0CiAgICBpbiBudW1lcmljYWwgYW5hbHlzaXMuIENsYXJlbmRvbiBQcmVzcyAoMTk4NykgcHAxNjUtMjExLgotCi0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvZGUucnN0IGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKaW5kZXggNDQzYWY2OS4uNGNjZTFmYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29kZS5yc3QKQEAgLTMwLDE1ICszMCwxOSBAQAogICAgYGBzeXMucHMxYGAgYW5kIGBgc3lzLnBzMmBgLCBhbmQgaW5wdXQgYnVmZmVyaW5nLgogCiAKLS4uIGZ1bmN0aW9uOjogaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUpCisuLiBmdW5jdGlvbjo6IGludGVyYWN0KGJhbm5lcj1Ob25lLCByZWFkZnVuYz1Ob25lLCBsb2NhbD1Ob25lLCBleGl0bXNnPU5vbmUpCiAKICAgIENvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIHJ1biBhIHJlYWQtZXZhbC1wcmludCBsb29wLiAgVGhpcyBjcmVhdGVzIGEgbmV3CiAgICBpbnN0YW5jZSBvZiA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgYW5kIHNldHMgKnJlYWRmdW5jKiB0byBiZSB1c2VkIGFzCiAgICB0aGUgOm1ldGg6YEludGVyYWN0aXZlQ29uc29sZS5yYXdfaW5wdXRgIG1ldGhvZCwgaWYgcHJvdmlkZWQuICBJZiAqbG9jYWwqIGlzCiAgICBwcm92aWRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSA6Y2xhc3M6YEludGVyYWN0aXZlQ29uc29sZWAgY29uc3RydWN0b3IgZm9yCiAgICB1c2UgYXMgdGhlIGRlZmF1bHQgbmFtZXNwYWNlIGZvciB0aGUgaW50ZXJwcmV0ZXIgbG9vcC4gIFRoZSA6bWV0aDpgaW50ZXJhY3RgCi0gICBtZXRob2Qgb2YgdGhlIGluc3RhbmNlIGlzIHRoZW4gcnVuIHdpdGggKmJhbm5lciogcGFzc2VkIGFzIHRoZSBiYW5uZXIgdG8KLSAgIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkIGFmdGVyIHVzZS4KKyAgIG1ldGhvZCBvZiB0aGUgaW5zdGFuY2UgaXMgdGhlbiBydW4gd2l0aCAqYmFubmVyKiBhbmQgKmV4aXRtc2cqIHBhc3NlZCBhcyB0aGUKKyAgIGJhbm5lciBhbmQgZXhpdCBtZXNzYWdlIHRvIHVzZSwgaWYgcHJvdmlkZWQuICBUaGUgY29uc29sZSBvYmplY3QgaXMgZGlzY2FyZGVkCisgICBhZnRlciB1c2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqZXhpdG1zZyogcGFyYW1ldGVyLgogCiAKIC4uIGZ1bmN0aW9uOjogY29tcGlsZV9jb21tYW5kKHNvdXJjZSwgZmlsZW5hbWU9IjxpbnB1dD4iLCBzeW1ib2w9InNpbmdsZSIpCkBAIC0xMzYsNyArMTQwLDcgQEAKIGludGVycHJldGVyIG9iamVjdHMgYXMgd2VsbCBhcyB0aGUgZm9sbG93aW5nIGFkZGl0aW9ucy4KIAogCi0uLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUpCisuLiBtZXRob2Q6OiBJbnRlcmFjdGl2ZUNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSkKIAogICAgQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gY29uc29sZS4gVGhlIG9wdGlvbmFsICpiYW5uZXIqIGFyZ3VtZW50CiAgICBzcGVjaWZ5IHRoZSBiYW5uZXIgdG8gcHJpbnQgYmVmb3JlIHRoZSBmaXJzdCBpbnRlcmFjdGlvbjsgYnkgZGVmYXVsdCBpdCBwcmludHMgYQpAQCAtMTQ0LDkgKzE0OCwxNiBAQAogICAgYnkgdGhlIGNsYXNzIG5hbWUgb2YgdGhlIGNvbnNvbGUgb2JqZWN0IGluIHBhcmVudGhlc2VzIChzbyBhcyBub3QgdG8gY29uZnVzZQogICAgdGhpcyB3aXRoIHRoZSByZWFsIGludGVycHJldGVyIC0tIHNpbmNlIGl0J3Mgc28gY2xvc2UhKS4KIAorICAgVGhlIG9wdGlvbmFsICpleGl0bXNnKiBhcmd1bWVudCBzcGVjaWZpZXMgYW4gZXhpdCBtZXNzYWdlIHByaW50ZWQgd2hlbiBleGl0aW5nLgorICAgUGFzcyB0aGUgZW1wdHkgc3RyaW5nIHRvIHN1cHByZXNzIHRoZSBleGl0IG1lc3NhZ2UuIElmICpleGl0bXNnKiBpcyBub3QgZ2l2ZW4gb3IKKyAgIE5vbmUsIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICBUbyBzdXBwcmVzcyBwcmludGluZyBhbnkgYmFubmVyLCBwYXNzIGFuIGVtcHR5IHN0cmluZy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFByaW50IGFuIGV4aXQgbWVzc2FnZSB3aGVuIGV4aXRpbmcuCisKIAogLi4gbWV0aG9kOjogSW50ZXJhY3RpdmVDb25zb2xlLnB1c2gobGluZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdCBiL0RvYy9saWJyYXJ5L2NvZGVjcy5yc3QKaW5kZXggMDNmMDIyOC4uYWExZDEyMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29kZWNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2RlY3MucnN0CkBAIC0xMjYzLDEwICsxMjYzLDE2IEBACiB8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBPbmx5IGBgZXJyb3JzPSdzdHJpY3QnYGAgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IGlzIHN1cHBvcnRlZC4gICAgICAgICAgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi18IG1iY3MgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKLXwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCBtYmNzICAgICAgICAgICAgICAgfCBhbnNpLCAgIHwgV2luZG93cyBvbmx5OiBFbmNvZGUgICAgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8IGRiY3MgICAgfCBvcGVyYW5kIGFjY29yZGluZyB0byB0aGUgIHwKIHwgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IEFOU0kgY29kZXBhZ2UgKENQX0FDUCkgICAgfAogKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCit8IG9lbSAgICAgICAgICAgICAgICB8ICAgICAgICAgfCBXaW5kb3dzIG9ubHk6IEVuY29kZSAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IG9wZXJhbmQgYWNjb3JkaW5nIHRvIHRoZSAgfAorfCAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHwgT0VNIGNvZGVwYWdlIChDUF9PRU1DUCkgICB8Cit8ICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKK3wgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8IC4uIHZlcnNpb25hZGRlZDo6IDMuNiAgICAgfAorKy0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiB8IHBhbG1vcyAgICAgICAgICAgICB8ICAgICAgICAgfCBFbmNvZGluZyBvZiBQYWxtT1MgMy41ICAgIHwKICstLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogfCBwdW55Y29kZSAgICAgICAgICAgfCAgICAgICAgIHwgSW1wbGVtZW50cyA6cmZjOmAzNDkyYC4gICB8CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMuYWJjLnJzdAppbmRleCBhZWI2YTczLi5lNGI3NWEwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5hYmMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLmFiYy5yc3QKQEAgLTQxLDEzICs0MSwxNiBAQAogOmNsYXNzOmBIYXNoYWJsZWAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faGFzaF9fYGAKIDpjbGFzczpgSXRlcmFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgCiA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCAgICAgIGBgX19uZXh0X19gYCAgICAgICAgICAgIGBgX19pdGVyX19gYAorOmNsYXNzOmBSZXZlcnNpYmxlYCAgICAgICAgOmNsYXNzOmBJdGVyYWJsZWAgICAgICBgYF9fcmV2ZXJzZWRfX2BgCiA6Y2xhc3M6YEdlbmVyYXRvcmAgICAgICAgICA6Y2xhc3M6YEl0ZXJhdG9yYCAgICAgIGBgc2VuZGBgLCBgYHRocm93YGAgICAgIGBgY2xvc2VgYCwgYGBfX2l0ZXJfX2BgLCBgYF9fbmV4dF9fYGAKIDpjbGFzczpgU2l6ZWRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIDpjbGFzczpgQ2FsbGFibGVgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2NhbGxfX2BgCis6Y2xhc3M6YENvbGxlY3Rpb25gICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKIAotOmNsYXNzOmBTZXF1ZW5jZWAgICAgICAgICAgOmNsYXNzOmBTaXplZGAsICAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBgYF9fY29udGFpbnNfX2BgLCBgYF9faXRlcl9fYGAsIGBgX19yZXZlcnNlZF9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19sZW5fX2BgICAgICAgICAgICAgIGBgaW5kZXhgYCwgYW5kIGBgY291bnRgYAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgCis6Y2xhc3M6YFNlcXVlbmNlYCAgICAgICAgICA6Y2xhc3M6YFJldmVyc2libGVgLCAgIGBgX19nZXRpdGVtX19gYCwgICAgICAgIGBgX19jb250YWluc19fYGAsIGBgX19pdGVyX19gYCwgYGBfX3JldmVyc2VkX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBpbmRleGBgLCBhbmQgYGBjb3VudGBgCiAKIDpjbGFzczpgTXV0YWJsZVNlcXVlbmNlYCAgIDpjbGFzczpgU2VxdWVuY2VgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgSW5oZXJpdGVkIDpjbGFzczpgU2VxdWVuY2VgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19zZXRpdGVtX19gYCwgICAgICAgIGBgYXBwZW5kYGAsIGBgcmV2ZXJzZWBgLCBgYGV4dGVuZGBgLCBgYHBvcGBgLApAQCAtNTgsOSArNjEsOSBAQAogOmNsYXNzOmBCeXRlU3RyaW5nYCAgICAgICAgOmNsYXNzOmBTZXF1ZW5jZWAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXF1ZW5jZWAgbWV0aG9kcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fbGVuX19gYAogCi06Y2xhc3M6YFNldGAgICAgICAgICAgICAgICA6Y2xhc3M6YFNpemVkYCwgICAgICAgIGBgX19jb250YWluc19fYGAsICAgICAgIGBgX19sZV9fYGAsIGBgX19sdF9fYGAsIGBgX19lcV9fYGAsIGBgX19uZV9fYGAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA6Y2xhc3M6YEl0ZXJhYmxlYCwgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgX19ndF9fYGAsIGBgX19nZV9fYGAsIGBgX19hbmRfX2BgLCBgYF9fb3JfX2BgLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgOmNsYXNzOmBDb250YWluZXJgICAgICBgYF9fbGVuX19gYCAgICAgICAgICAgICBgYF9fc3ViX19gYCwgYGBfX3hvcl9fYGAsIGFuZCBgYGlzZGlzam9pbnRgYAorOmNsYXNzOmBTZXRgICAgICAgICAgICAgICAgOmNsYXNzOmBDb2xsZWN0aW9uYCAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBgYF9fbGVfX2BgLCBgYF9fbHRfX2BgLCBgYF9fZXFfX2BgLCBgYF9fbmVfX2BgLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9faXRlcl9fYGAsICAgICAgICAgICBgYF9fZ3RfX2BgLCBgYF9fZ2VfX2BgLCBgYF9fYW5kX19gYCwgYGBfX29yX19gYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAgICAgICAgICAgICAgYGBfX3N1Yl9fYGAsIGBgX194b3JfX2BgLCBhbmQgYGBpc2Rpc2pvaW50YGAKIAogOmNsYXNzOmBNdXRhYmxlU2V0YCAgICAgICAgOmNsYXNzOmBTZXRgICAgICAgICAgICBgYF9fY29udGFpbnNfX2BgLCAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBTZXRgIG1ldGhvZHMgYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgX19pdGVyX19gYCwgICAgICAgICAgIGBgY2xlYXJgYCwgYGBwb3BgYCwgYGByZW1vdmVgYCwgYGBfX2lvcl9fYGAsCkBAIC02OCw5ICs3MSw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgYWRkYGAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGBgZGlzY2FyZGBgCiAKLTpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgU2l6ZWRgLCAgICAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgSXRlcmFibGVgLCAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIDpjbGFzczpgQ29udGFpbmVyYCAgICAgYGBfX2xlbl9fYGAKKzpjbGFzczpgTWFwcGluZ2AgICAgICAgICAgIDpjbGFzczpgQ29sbGVjdGlvbmAgICAgYGBfX2dldGl0ZW1fX2BgLCAgICAgICAgYGBfX2NvbnRhaW5zX19gYCwgYGBrZXlzYGAsIGBgaXRlbXNgYCwgYGB2YWx1ZXNgYCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2l0ZXJfX2BgLCAgICAgICAgICAgYGBnZXRgYCwgYGBfX2VxX19gYCwgYW5kIGBgX19uZV9fYGAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYGBfX2xlbl9fYGAKIAogOmNsYXNzOmBNdXRhYmxlTWFwcGluZ2AgICAgOmNsYXNzOmBNYXBwaW5nYCAgICAgICBgYF9fZ2V0aXRlbV9fYGAsICAgICAgICBJbmhlcml0ZWQgOmNsYXNzOmBNYXBwaW5nYCBtZXRob2RzIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBgYF9fc2V0aXRlbV9fYGAsICAgICAgICBgYHBvcGBgLCBgYHBvcGl0ZW1gYCwgYGBjbGVhcmBgLCBgYHVwZGF0ZWBgLApAQCAtMTA1LDEyICsxMDgsMjUgQEAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmBfX2l0ZXJfX2AgbWV0aG9kLgogICAgU2VlIGFsc28gdGhlIGRlZmluaXRpb24gb2YgOnRlcm06YGl0ZXJhYmxlYC4KIAorLi4gY2xhc3M6OiBDb2xsZWN0aW9uCisKKyAgIEFCQyBmb3Igc2l6ZWQgaXRlcmFibGUgY29udGFpbmVyIGNsYXNzZXMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IEl0ZXJhdG9yCiAKICAgIEFCQyBmb3IgY2xhc3NlcyB0aGF0IHByb3ZpZGUgdGhlIDptZXRoOmB+aXRlcmF0b3IuX19pdGVyX19gIGFuZAogICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AgbWV0aG9kcy4gIFNlZSBhbHNvIHRoZSBkZWZpbml0aW9uIG9mCiAgICA6dGVybTpgaXRlcmF0b3JgLgogCisuLiBjbGFzczo6IFJldmVyc2libGUKKworICAgQUJDIGZvciBpdGVyYWJsZSBjbGFzc2VzIHRoYXQgYWxzbyBwcm92aWRlIHRoZSA6bWV0aDpgX19yZXZlcnNlZF9fYAorICAgbWV0aG9kLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gY2xhc3M6OiBHZW5lcmF0b3IKIAogICAgQUJDIGZvciBnZW5lcmF0b3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudCB0aGUgcHJvdG9jb2wgZGVmaW5lZCBpbgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0IGIvRG9jL2xpYnJhcnkvY29sbGVjdGlvbnMucnN0CmluZGV4IGExNDcyODcuLjUxYzIzNWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbGxlY3Rpb25zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb2xsZWN0aW9ucy5yc3QKQEAgLTc2Myw3ICs3NjMsNyBAQAogc2VsZi1kb2N1bWVudGluZyBjb2RlLiAgVGhleSBjYW4gYmUgdXNlZCB3aGVyZXZlciByZWd1bGFyIHR1cGxlcyBhcmUgdXNlZCwgYW5kCiB0aGV5IGFkZCB0aGUgYWJpbGl0eSB0byBhY2Nlc3MgZmllbGRzIGJ5IG5hbWUgaW5zdGVhZCBvZiBwb3NpdGlvbiBpbmRleC4KIAotLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKQorLi4gZnVuY3Rpb246OiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSkKIAogICAgIFJldHVybnMgYSBuZXcgdHVwbGUgc3ViY2xhc3MgbmFtZWQgKnR5cGVuYW1lKi4gIFRoZSBuZXcgc3ViY2xhc3MgaXMgdXNlZCB0bwogICAgIGNyZWF0ZSB0dXBsZS1saWtlIG9iamVjdHMgdGhhdCBoYXZlIGZpZWxkcyBhY2Nlc3NpYmxlIGJ5IGF0dHJpYnV0ZSBsb29rdXAgYXMKQEAgLTc5MCwxMiArNzkwLDIxIEBACiAgICAgYnVpbHQuICBUaGlzIG9wdGlvbiBpcyBvdXRkYXRlZDsgaW5zdGVhZCwgaXQgaXMgc2ltcGxlciB0byBwcmludCB0aGUKICAgICA6YXR0cjpgX3NvdXJjZWAgYXR0cmlidXRlLgogCisgICAgSWYgKm1vZHVsZSogaXMgZGVmaW5lZCwgdGhlIGBgX19tb2R1bGVfX2BgIGF0dHJpYnV0ZSBvZiB0aGUgbmFtZWQgdHVwbGUgaXMKKyAgICBzZXQgdG8gdGhhdCB2YWx1ZS4KKwogICAgIE5hbWVkIHR1cGxlIGluc3RhbmNlcyBkbyBub3QgaGF2ZSBwZXItaW5zdGFuY2UgZGljdGlvbmFyaWVzLCBzbyB0aGV5IGFyZQogICAgIGxpZ2h0d2VpZ2h0IGFuZCByZXF1aXJlIG5vIG1vcmUgbWVtb3J5IHRoYW4gcmVndWxhciB0dXBsZXMuCiAKICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMQotICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KKyAgICAgICBBZGRlZCBzdXBwb3J0IGZvciAqcmVuYW1lKi4KIAorICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgVGhlICp2ZXJib3NlKiBhbmQgKnJlbmFtZSogcGFyYW1ldGVycyBiZWNhbWUKKyAgICAgICA6cmVmOmBrZXl3b3JkLW9ubHkgYXJndW1lbnRzIDxrZXl3b3JkLW9ubHlfcGFyYW1ldGVyPmAuCisKKyAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSAqbW9kdWxlKiBwYXJhbWV0ZXIuCiAKIC4uIGRvY3Rlc3Q6OgogICAgIDpvcHRpb25zOiArTk9STUFMSVpFX1dISVRFU1BBQ0UKQEAgLTg0Niw3ICs4NTUsOSBAQAogLi4gbWV0aG9kOjogc29tZW5hbWVkdHVwbGUuX2FzZGljdCgpCiAKICAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmBPcmRlcmVkRGljdGAgd2hpY2ggbWFwcyBmaWVsZCBuYW1lcyB0byB0aGVpciBjb3JyZXNwb25kaW5nCi0gICAgdmFsdWVzOjoKKyAgICB2YWx1ZXM6CisKKyAgICAuLiBkb2N0ZXN0OjoKIAogICAgICAgICA+Pj4gcCA9IFBvaW50KHg9MTEsIHk9MjIpCiAgICAgICAgID4+PiBwLl9hc2RpY3QoKQpAQCAtOTA4LDcgKzkxOSw5IEBACiBmdW5jdGlvbmFsaXR5IHdpdGggYSBzdWJjbGFzcy4gIEhlcmUgaXMgaG93IHRvIGFkZCBhIGNhbGN1bGF0ZWQgZmllbGQgYW5kCiBhIGZpeGVkLXdpZHRoIHByaW50IGZvcm1hdDoKIAotICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6CisuLiBkb2N0ZXN0OjoKKworICAgID4+PiBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsIFsneCcsICd5J10pKToKICAgICAuLi4gICAgIF9fc2xvdHNfXyA9ICgpCiAgICAgLi4uICAgICBAcHJvcGVydHkKICAgICAuLi4gICAgIGRlZiBoeXBvdChzZWxmKToKQEAgLTk1OSw2ICs5NzIsMTEgQEAKICAgICAgIGNvbnN0cnVjdG9yIHRoYXQgaXMgY29udmVuaWVudCBmb3IgdXNlIGNhc2VzIHdoZXJlIG5hbWVkIHR1cGxlcyBhcmUgYmVpbmcKICAgICAgIHN1YmNsYXNzZWQuCiAKKyAgICAqIFNlZSA6bWV0aDpgdHlwZXMuU2ltcGxlTmFtZXNwYWNlYCBmb3IgYSBtdXRhYmxlIG5hbWVzcGFjZSBiYXNlZCBvbiBhbgorICAgICAgdW5kZXJseWluZyBkaWN0aW9uYXJ5IGluc3RlYWQgb2YgYSB0dXBsZS4KKworICAgICogU2VlIDptZXRoOmB0eXBpbmcuTmFtZWRUdXBsZWAgZm9yIGEgd2F5IHRvIGFkZCB0eXBlIGhpbnRzIGZvciBuYW1lZCB0dXBsZXMuCisKIAogOmNsYXNzOmBPcmRlcmVkRGljdGAgb2JqZWN0cwogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtOTgwLDggKzk5OCw5IEBACiAgICAgLi4gbWV0aG9kOjogcG9waXRlbShsYXN0PVRydWUpCiAKICAgICAgICAgVGhlIDptZXRoOmBwb3BpdGVtYCBtZXRob2QgZm9yIG9yZGVyZWQgZGljdGlvbmFyaWVzIHJldHVybnMgYW5kIHJlbW92ZXMgYQotICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4gTElGTyBvcmRlciBpZiAqbGFzdCogaXMgdHJ1ZQotICAgICAgICBvciBGSUZPIG9yZGVyIGlmIGZhbHNlLgorICAgICAgICAoa2V5LCB2YWx1ZSkgcGFpci4gIFRoZSBwYWlycyBhcmUgcmV0dXJuZWQgaW4KKyAgICAgICAgOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIG9yZGVyIGlmICpsYXN0KiBpcyB0cnVlCisgICAgICAgIG9yIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAgb3JkZXIgaWYgZmFsc2UuCiAKICAgICAuLiBtZXRob2Q6OiBtb3ZlX3RvX2VuZChrZXksIGxhc3Q9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY29tcGlsZWFsbC5yc3QgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAppbmRleCA1MTFjNTgxLi5jMWFmMDJiIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jb21waWxlYWxsLnJzdApAQCAtMTAyLDcgKzEwMiw4IEBACiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZGlyKGRpciwgbWF4bGV2ZWxzPTEwLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLCBsZWdhY3k9RmFsc2UsIG9wdGltaXplPS0xLCB3b3JrZXJzPTEpCiAKICAgIFJlY3Vyc2l2ZWx5IGRlc2NlbmQgdGhlIGRpcmVjdG9yeSB0cmVlIG5hbWVkIGJ5ICpkaXIqLCBjb21waWxpbmcgYWxsIDpmaWxlOmAucHlgCi0gICBmaWxlcyBhbG9uZyB0aGUgd2F5LgorICAgZmlsZXMgYWxvbmcgdGhlIHdheS4gUmV0dXJuIGEgdHJ1ZSB2YWx1ZSBpZiBhbGwgdGhlIGZpbGVzIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwKKyAgIGFuZCBhIGZhbHNlIHZhbHVlIG90aGVyd2lzZS4KIAogICAgVGhlICptYXhsZXZlbHMqIHBhcmFtZXRlciBpcyB1c2VkIHRvIGxpbWl0IHRoZSBkZXB0aCBvZiB0aGUgcmVjdXJzaW9uOyBpdAogICAgZGVmYXVsdHMgdG8gYGAxMGBgLgpAQCAtMTUyLDkgKzE1MywxMyBAQAogICAgICAgVGhlICpsZWdhY3kqIHBhcmFtZXRlciBvbmx5IHdyaXRlcyBvdXQgYGAucHljYGAgZmlsZXMsIG5vdCBgYC5weW9gYCBmaWxlcwogICAgICAgbm8gbWF0dGVyIHdoYXQgdGhlIHZhbHVlIG9mICpvcHRpbWl6ZSogaXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfZmlsZShmdWxsbmFtZSwgZGRpcj1Ob25lLCBmb3JjZT1GYWxzZSwgcng9Tm9uZSwgcXVpZXQ9MCwgbGVnYWN5PUZhbHNlLCBvcHRpbWl6ZT0tMSkKIAotICAgQ29tcGlsZSB0aGUgZmlsZSB3aXRoIHBhdGggKmZ1bGxuYW1lKi4KKyAgIENvbXBpbGUgdGhlIGZpbGUgd2l0aCBwYXRoICpmdWxsbmFtZSouIFJldHVybiBhIHRydWUgdmFsdWUgaWYgdGhlIGZpbGUKKyAgIGNvbXBpbGVkIHN1Y2Nlc3NmdWxseSwgYW5kIGEgZmFsc2UgdmFsdWUgb3RoZXJ3aXNlLgogCiAgICBJZiAqZGRpciogaXMgZ2l2ZW4sIGl0IGlzIHByZXBlbmRlZCB0byB0aGUgcGF0aCB0byB0aGUgZmlsZSBiZWluZyBjb21waWxlZAogICAgZm9yIHVzZSBpbiBjb21waWxhdGlvbiB0aW1lIHRyYWNlYmFja3MsIGFuZCBpcyBhbHNvIGNvbXBpbGVkIGluIHRvIHRoZQpAQCAtMTkwLDggKzE5NSwxMCBAQAogCiAuLiBmdW5jdGlvbjo6IGNvbXBpbGVfcGF0aChza2lwX2N1cmRpcj1UcnVlLCBtYXhsZXZlbHM9MCwgZm9yY2U9RmFsc2UsIHF1aWV0PTAsIGxlZ2FjeT1GYWxzZSwgb3B0aW1pemU9LTEpCiAKLSAgIEJ5dGUtY29tcGlsZSBhbGwgdGhlIDpmaWxlOmAucHlgIGZpbGVzIGZvdW5kIGFsb25nIGBgc3lzLnBhdGhgYC4gSWYKLSAgICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCisgICBCeXRlLWNvbXBpbGUgYWxsIHRoZSA6ZmlsZTpgLnB5YCBmaWxlcyBmb3VuZCBhbG9uZyBgYHN5cy5wYXRoYGAuIFJldHVybiBhCisgICB0cnVlIHZhbHVlIGlmIGFsbCB0aGUgZmlsZXMgY29tcGlsZWQgc3VjY2Vzc2Z1bGx5LCBhbmQgYSBmYWxzZSB2YWx1ZSBvdGhlcndpc2UuCisKKyAgIElmICpza2lwX2N1cmRpciogaXMgdHJ1ZSAodGhlIGRlZmF1bHQpLCB0aGUgY3VycmVudCBkaXJlY3RvcnkgaXMgbm90IGluY2x1ZGVkCiAgICBpbiB0aGUgc2VhcmNoLiAgQWxsIG90aGVyIHBhcmFtZXRlcnMgYXJlIHBhc3NlZCB0byB0aGUgOmZ1bmM6YGNvbXBpbGVfZGlyYAogICAgZnVuY3Rpb24uICBOb3RlIHRoYXQgdW5saWtlIHRoZSBvdGhlciBjb21waWxlIGZ1bmN0aW9ucywgYGBtYXhsZXZlbHNgYAogICAgZGVmYXVsdHMgdG8gYGAwYGAuCkBAIC0yMTcsNiArMjI0LDkgQEAKICAgIGltcG9ydCByZQogICAgY29tcGlsZWFsbC5jb21waWxlX2RpcignTGliLycsIHJ4PXJlLmNvbXBpbGUocidbL1xcXVsuXXN2bicpLCBmb3JjZT1UcnVlKQogCisgICAjIHBhdGhsaWIuUGF0aCBvYmplY3RzIGNhbiBhbHNvIGJlIHVzZWQuCisgICBpbXBvcnQgcGF0aGxpYgorICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoJ0xpYi8nKSwgZm9yY2U9VHJ1ZSkKIAogLi4gc2VlYWxzbzo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QgYi9Eb2MvbGlicmFyeS9jb25jdXJyZW50LmZ1dHVyZXMucnN0CmluZGV4IGFlMDNmNGIuLmQ4NTU3NmIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbmN1cnJlbnQuZnV0dXJlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uY3VycmVudC5mdXR1cmVzLnJzdApAQCAtMTI0LDcgKzEyNCw3IEBACiAgICBleGVjdXRvci5zdWJtaXQod2FpdF9vbl9mdXR1cmUpCiAKIAotLi4gY2xhc3M6OiBUaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9Tm9uZSkKKy4uIGNsYXNzOjogVGhyZWFkUG9vbEV4ZWN1dG9yKG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJykKIAogICAgQW4gOmNsYXNzOmBFeGVjdXRvcmAgc3ViY2xhc3MgdGhhdCB1c2VzIGEgcG9vbCBvZiBhdCBtb3N0ICptYXhfd29ya2VycyoKICAgIHRocmVhZHMgdG8gZXhlY3V0ZSBjYWxscyBhc3luY2hyb25vdXNseS4KQEAgLTEzNyw2ICsxMzcsMTAgQEAKICAgICAgIHNob3VsZCBiZSBoaWdoZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHdvcmtlcnMKICAgICAgIGZvciA6Y2xhc3M6YFByb2Nlc3NQb29sRXhlY3V0b3JgLgogCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKyAgICAgIFRoZSAqdGhyZWFkX25hbWVfcHJlZml4KiBhcmd1bWVudCB3YXMgYWRkZWQgdG8gYWxsb3cgdXNlcnMgdG8KKyAgICAgIGNvbnRyb2wgdGhlIHRocmVhZGluZy5UaHJlYWQgbmFtZXMgZm9yIHdvcmtlciB0aHJlYWRzIGNyZWF0ZWQgYnkKKyAgICAgIHRoZSBwb29sIGZvciBlYXNpZXIgZGVidWdnaW5nLgogCiAuLiBfdGhyZWFkcG9vbGV4ZWN1dG9yLWV4YW1wbGU6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QgYi9Eb2MvbGlicmFyeS9jb25zdGFudHMucnN0CmluZGV4IGQ1YTBmMDkuLmYwNzQyY2UgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NvbnN0YW50cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29uc3RhbnRzLnJzdApAQCAtMzMsMTYgKzMzLDIyIEBACiAgICAoZS5nLiA6bWV0aDpgX19pbXVsX19gLCA6bWV0aDpgX19pYW5kX19gLCBldGMuKSBmb3IgdGhlIHNhbWUgcHVycG9zZS4KICAgIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLgogCi0uLiBub3RlOjoKKyAgIC4uIG5vdGU6OgogCi0gICBXaGVuIGBgTm90SW1wbGVtZW50ZWRgYCBpcyByZXR1cm5lZCwgdGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlCi0gICByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcKLSAgIG9uIHRoZSBvcGVyYXRvci4gIElmIGFsbCBhdHRlbXB0ZWQgb3BlcmF0aW9ucyByZXR1cm4gYGBOb3RJbXBsZW1lbnRlZGBgLCB0aGUKLSAgIGludGVycHJldGVyIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgZXhjZXB0aW9uLgorICAgICAgV2hlbiBhIGJpbmFyeSAob3IgaW4tcGxhY2UpIG1ldGhvZCByZXR1cm5zIGBgTm90SW1wbGVtZW50ZWRgYCB0aGUKKyAgICAgIGludGVycHJldGVyIHdpbGwgdHJ5IHRoZSByZWZsZWN0ZWQgb3BlcmF0aW9uIG9uIHRoZSBvdGhlciB0eXBlIChvciBzb21lCisgICAgICBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZSBvcGVyYXRvcikuICBJZiBhbGwgYXR0ZW1wdHMgcmV0dXJuCisgICAgICBgYE5vdEltcGxlbWVudGVkYGAsIHRoZSBpbnRlcnByZXRlciB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlIGV4Y2VwdGlvbi4KKyAgICAgIEluY29ycmVjdGx5IHJldHVybmluZyBgYE5vdEltcGxlbWVudGVkYGAgd2lsbCByZXN1bHQgaW4gYSBtaXNsZWFkaW5nCisgICAgICBlcnJvciBtZXNzYWdlIG9yIHRoZSBgYE5vdEltcGxlbWVudGVkYGAgdmFsdWUgYmVpbmcgcmV0dXJuZWQgdG8gUHl0aG9uIGNvZGUuCiAKLSAgIFNlZQotICAgOnJlZjpgaW1wbGVtZW50aW5nLXRoZS1hcml0aG1ldGljLW9wZXJhdGlvbnNgCi0gICBmb3IgbW9yZSBkZXRhaWxzLgorICAgICAgU2VlIDpyZWY6YGltcGxlbWVudGluZy10aGUtYXJpdGhtZXRpYy1vcGVyYXRpb25zYCBmb3IgZXhhbXBsZXMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBgYE5vdEltcGxlbnRlZEVycm9yYGAgYW5kIGBgTm90SW1wbGVtZW50ZWRgYCBhcmUgbm90IGludGVyY2hhbmdlYWJsZSwKKyAgICAgIGV2ZW4gdGhvdWdoIHRoZXkgaGF2ZSBzaW1pbGFyIG5hbWVzIGFuZCBwdXJwb3Nlcy4KKyAgICAgIFNlZSA6ZXhjOmBOb3RJbXBsZW1lbnRlZEVycm9yYCBmb3IgZGV0YWlscyBvbiB3aGVuIHRvIHVzZSBpdC4KIAogCiAuLiBkYXRhOjogRWxsaXBzaXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2NvbnRleHRsaWIucnN0IGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKaW5kZXggY2Y4NWZjZC4uZGQzNGM5NiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvY29udGV4dGxpYi5yc3QKQEAgLTE4LDYgKzE4LDE4IEBACiAKIEZ1bmN0aW9ucyBhbmQgY2xhc3NlcyBwcm92aWRlZDoKIAorLi4gY2xhc3M6OiBBYnN0cmFjdENvbnRleHRNYW5hZ2VyCisKKyAgIEFuIDp0ZXJtOmBhYnN0cmFjdCBiYXNlIGNsYXNzYCBmb3IgY2xhc3NlcyB0aGF0IGltcGxlbWVudAorICAgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGFuZCA6bWV0aDpgb2JqZWN0Ll9fZXhpdF9fYC4gQSBkZWZhdWx0CisgICBpbXBsZW1lbnRhdGlvbiBmb3IgOm1ldGg6YG9iamVjdC5fX2VudGVyX19gIGlzIHByb3ZpZGVkIHdoaWNoIHJldHVybnMKKyAgIGBgc2VsZmBgIHdoaWxlIDptZXRoOmBvYmplY3QuX19leGl0X19gIGlzIGFuIGFic3RyYWN0IG1ldGhvZCB3aGljaCBieSBkZWZhdWx0CisgICByZXR1cm5zIGBgTm9uZWBgLiBTZWUgYWxzbyB0aGUgZGVmaW5pdGlvbiBvZiA6cmVmOmB0eXBlY29udGV4dG1hbmFnZXJgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCisKIC4uIGRlY29yYXRvcjo6IGNvbnRleHRtYW5hZ2VyCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgYSA6dGVybTpgZGVjb3JhdG9yYCB0aGF0IGNhbiBiZSB1c2VkIHRvIGRlZmluZSBhIGZhY3RvcnkKQEAgLTQ0Nyw5ICs0NTksOSBAQAogYWNxdWlzaXRpb24gYW5kIHJlbGVhc2UgZnVuY3Rpb25zLCBhbG9uZyB3aXRoIGFuIG9wdGlvbmFsIHZhbGlkYXRpb24gZnVuY3Rpb24sCiBhbmQgbWFwcyB0aGVtIHRvIHRoZSBjb250ZXh0IG1hbmFnZW1lbnQgcHJvdG9jb2w6OgogCi0gICBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNvbnRleHRtYW5hZ2VyLCBFeGl0U3RhY2sKKyAgIGZyb20gY29udGV4dGxpYiBpbXBvcnQgY29udGV4dG1hbmFnZXIsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIsIEV4aXRTdGFjawogCi0gICBjbGFzcyBSZXNvdXJjZU1hbmFnZXI6CisgICBjbGFzcyBSZXNvdXJjZU1hbmFnZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CiAKICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgYWNxdWlyZV9yZXNvdXJjZSwgcmVsZWFzZV9yZXNvdXJjZSwgY2hlY2tfcmVzb3VyY2Vfb2s9Tm9uZSk6CiAgICAgICAgICAgIHNlbGYuYWNxdWlyZV9yZXNvdXJjZSA9IGFjcXVpcmVfcmVzb3VyY2UKQEAgLTU3OCwxMCArNTkwLDEwIEBACiAgICAgICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAKICAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQoc2VsZi5uYW1lKSkKKyAgICAgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjLCBleGNfdGIpOgotICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KHNlbGYubmFtZSkpCisgICAgICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgc2VsZi5uYW1lKQogCiBJbnN0YW5jZXMgb2YgdGhpcyBjbGFzcyBjYW4gYmUgdXNlZCBhcyBib3RoIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHQucnN0IGIvRG9jL2xpYnJhcnkvY3J5cHQucnN0CmluZGV4IGEyMWMxZTcuLmRiZDQyNzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2NyeXB0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdC5yc3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgQSBsaXN0IG9mIGF2YWlsYWJsZSBwYXNzd29yZCBoYXNoaW5nIGFsZ29yaXRobXMsIGFzCiAgICBgYGNyeXB0Lk1FVEhPRF8qYGAgb2JqZWN0cy4gIFRoaXMgbGlzdCBpcyBzb3J0ZWQgZnJvbSBzdHJvbmdlc3QgdG8KLSAgIHdlYWtlc3QsIGFuZCBpcyBndWFyYW50ZWVkIHRvIGhhdmUgYXQgbGVhc3QgYGBjcnlwdC5NRVRIT0RfQ1JZUFRgYC4KKyAgIHdlYWtlc3QuCiAKIAogTW9kdWxlIEZ1bmN0aW9ucwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdCBiL0RvYy9saWJyYXJ5L2NyeXB0by5yc3QKaW5kZXggMWVkZGZkYy4uOGViNGI4MSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3J5cHRvLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jcnlwdG8ucnN0CkBAIC0xNSw0ICsxNSw2IEBACiAuLiB0b2N0cmVlOjoKIAogICAgaGFzaGxpYi5yc3QKKyAgIGhhc2hsaWItYmxha2UyLnJzdAogICAgaG1hYy5yc3QKKyAgIHNlY3JldHMucnN0CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9jc3YucnN0IGIvRG9jL2xpYnJhcnkvY3N2LnJzdAppbmRleCA3ZmI0ZmM4Li42MzQxYmMzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9jc3YucnN0CisrKyBiL0RvYy9saWJyYXJ5L2Nzdi5yc3QKQEAgLTE0OSwxOCArMTQ5LDI1IEBACiAuLiBjbGFzczo6IERpY3RSZWFkZXIoY3N2ZmlsZSwgZmllbGRuYW1lcz1Ob25lLCByZXN0a2V5PU5vbmUsIHJlc3R2YWw9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgIGRpYWxlY3Q9J2V4Y2VsJywgKmFyZ3MsICoqa3dkcykKIAotICAgQ3JlYXRlIGFuIG9iamVjdCB3aGljaCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCi0gICBpbmZvcm1hdGlvbiByZWFkIGludG8gYSBkaWN0IHdob3NlIGtleXMgYXJlIGdpdmVuIGJ5IHRoZSBvcHRpb25hbAotICAgKmZpZWxkbmFtZXMqIHBhcmFtZXRlci4gIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOm1vZDpgc2VxdWVuY2UKLSAgIDxjb2xsZWN0aW9ucy5hYmM+YCB3aG9zZSBlbGVtZW50cyBhcmUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmaWVsZHMgb2YgdGhlCi0gICBpbnB1dCBkYXRhIGluIG9yZGVyLiBUaGVzZSBlbGVtZW50cyBiZWNvbWUgdGhlIGtleXMgb2YgdGhlIHJlc3VsdGluZwotICAgZGljdGlvbmFyeS4gIElmIHRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIG9taXR0ZWQsIHRoZSB2YWx1ZXMgaW4gdGhlCi0gICBmaXJzdCByb3cgb2YgdGhlICpjc3ZmaWxlKiB3aWxsIGJlIHVzZWQgYXMgdGhlIGZpZWxkbmFtZXMuICBJZiB0aGUgcm93IHJlYWQKLSAgIGhhcyBtb3JlIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGRhdGEgaXMgYWRkZWQgYXMKLSAgIGEgc2VxdWVuY2Uga2V5ZWQgYnkgdGhlIHZhbHVlIG9mICpyZXN0a2V5Ki4gIElmIHRoZSByb3cgcmVhZCBoYXMgZmV3ZXIKLSAgIGZpZWxkcyB0aGFuIHRoZSBmaWVsZG5hbWVzIHNlcXVlbmNlLCB0aGUgcmVtYWluaW5nIGtleXMgdGFrZSB0aGUgdmFsdWUgb2YKLSAgIHRoZSBvcHRpb25hbCAqcmVzdHZhbCogcGFyYW1ldGVyLiAgQW55IG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzCi0gICBhcmUgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKyAgIENyZWF0ZSBhbiBvYmplY3QgdGhhdCBvcGVyYXRlcyBsaWtlIGEgcmVndWxhciByZWFkZXIgYnV0IG1hcHMgdGhlCisgICBpbmZvcm1hdGlvbiBpbiBlYWNoIHJvdyB0byBhbiA6bW9kOmBPcmRlcmVkRGljdCA8Y29sbGVjdGlvbnMuT3JkZXJlZERpY3Q+YAorICAgd2hvc2Uga2V5cyBhcmUgZ2l2ZW4gYnkgdGhlIG9wdGlvbmFsICpmaWVsZG5hbWVzKiBwYXJhbWV0ZXIuCisKKyAgIFRoZSAqZmllbGRuYW1lcyogcGFyYW1ldGVyIGlzIGEgOnRlcm06YHNlcXVlbmNlYC4gIElmICpmaWVsZG5hbWVzKiBpcworICAgb21pdHRlZCwgdGhlIHZhbHVlcyBpbiB0aGUgZmlyc3Qgcm93IG9mIHRoZSAqY3N2ZmlsZSogd2lsbCBiZSB1c2VkIGFzIHRoZQorICAgZmllbGRuYW1lcy4gIFJlZ2FyZGxlc3Mgb2YgaG93IHRoZSBmaWVsZG5hbWVzIGFyZSBkZXRlcm1pbmVkLCB0aGUgb3JkZXJlZAorICAgZGljdGlvbmFyeSBwcmVzZXJ2ZXMgdGhlaXIgb3JpZ2luYWwgb3JkZXJpbmcuCisKKyAgIElmIGEgcm93IGhhcyBtb3JlIGZpZWxkcyB0aGFuIGZpZWxkbmFtZXMsIHRoZSByZW1haW5pbmcgZGF0YSBpcyBwdXQgaW4gYQorICAgbGlzdCBhbmQgc3RvcmVkIHdpdGggdGhlIGZpZWxkbmFtZSBzcGVjaWZpZWQgYnkgKnJlc3RrZXkqICh3aGljaCBkZWZhdWx0cworICAgdG8gYGBOb25lYGApLiAgSWYgYSBub24tYmxhbmsgcm93IGhhcyBmZXdlciBmaWVsZHMgdGhhbiBmaWVsZG5hbWVzLCB0aGUKKyAgIG1pc3NpbmcgdmFsdWVzIGFyZSBmaWxsZWQtaW4gd2l0aCBgYE5vbmVgYC4KKworICAgQWxsIG90aGVyIG9wdGlvbmFsIG9yIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwYXNzZWQgdG8gdGhlIHVuZGVybHlpbmcKKyAgIDpjbGFzczpgcmVhZGVyYCBpbnN0YW5jZS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJldHVybmVkIHJvd3MgYXJlIG5vdyBvZiB0eXBlIDpjbGFzczpgT3JkZXJlZERpY3RgLgogCiAgICBBIHNob3J0IHVzYWdlIGV4YW1wbGU6OgogCkBAIC0xNzAsOSArMTc3LDExIEBACiAgICAgICAgLi4uICAgICBmb3Igcm93IGluIHJlYWRlcjoKICAgICAgICAuLi4gICAgICAgICBwcmludChyb3dbJ2ZpcnN0X25hbWUnXSwgcm93WydsYXN0X25hbWUnXSkKICAgICAgICAuLi4KLSAgICAgICBCYWtlZCBCZWFucwotICAgICAgIExvdmVseSBTcGFtCi0gICAgICAgV29uZGVyZnVsIFNwYW0KKyAgICAgICBFcmljIElkbGUKKyAgICAgICBKb2huIENsZWVzZQorCisgICAgICAgPj4+IHByaW50KHJvdykKKyAgICAgICBPcmRlcmVkRGljdChbKCdmaXJzdF9uYW1lJywgJ0pvaG4nKSwgKCdsYXN0X25hbWUnLCAnQ2xlZXNlJyldKQogCiAKIC4uIGNsYXNzOjogRGljdFdyaXRlcihjc3ZmaWxlLCBmaWVsZG5hbWVzLCByZXN0dmFsPScnLCBleHRyYXNhY3Rpb249J3JhaXNlJywgXApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L2N0eXBlcy5yc3QKaW5kZXggNzU1MGY0ZC4uM2RiNDRkNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvY3R5cGVzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9jdHlwZXMucnN0CkBAIC0xMjM5LDkgKzEyMzksMTAgQEAKIGNvbXBpbGluZy9saW5raW5nIGEgcHJvZ3JhbSwgYW5kIHdoZW4gdGhlIHByb2dyYW0gaXMgcnVuLgogCiBUaGUgcHVycG9zZSBvZiB0aGUgOmZ1bmM6YGZpbmRfbGlicmFyeWAgZnVuY3Rpb24gaXMgdG8gbG9jYXRlIGEgbGlicmFyeSBpbiBhIHdheQotc2ltaWxhciB0byB3aGF0IHRoZSBjb21waWxlciBkb2VzIChvbiBwbGF0Zm9ybXMgd2l0aCBzZXZlcmFsIHZlcnNpb25zIG9mIGEKLXNoYXJlZCBsaWJyYXJ5IHRoZSBtb3N0IHJlY2VudCBzaG91bGQgYmUgbG9hZGVkKSwgd2hpbGUgdGhlIGN0eXBlcyBsaWJyYXJ5Ci1sb2FkZXJzIGFjdCBsaWtlIHdoZW4gYSBwcm9ncmFtIGlzIHJ1biwgYW5kIGNhbGwgdGhlIHJ1bnRpbWUgbG9hZGVyIGRpcmVjdGx5Lgorc2ltaWxhciB0byB3aGF0IHRoZSBjb21waWxlciBvciBydW50aW1lIGxvYWRlciBkb2VzIChvbiBwbGF0Zm9ybXMgd2l0aCBzZXZlcmFsCit2ZXJzaW9ucyBvZiBhIHNoYXJlZCBsaWJyYXJ5IHRoZSBtb3N0IHJlY2VudCBzaG91bGQgYmUgbG9hZGVkKSwgd2hpbGUgdGhlIGN0eXBlcworbGlicmFyeSBsb2FkZXJzIGFjdCBsaWtlIHdoZW4gYSBwcm9ncmFtIGlzIHJ1biwgYW5kIGNhbGwgdGhlIHJ1bnRpbWUgbG9hZGVyCitkaXJlY3RseS4KIAogVGhlIDptb2Q6YGN0eXBlcy51dGlsYCBtb2R1bGUgcHJvdmlkZXMgYSBmdW5jdGlvbiB3aGljaCBjYW4gaGVscCB0byBkZXRlcm1pbmUKIHRoZSBsaWJyYXJ5IHRvIGxvYWQuCkBAIC0xMjU5LDggKzEyNjAsMTQgQEAKIFRoZSBleGFjdCBmdW5jdGlvbmFsaXR5IGlzIHN5c3RlbSBkZXBlbmRlbnQuCiAKIE9uIExpbnV4LCA6ZnVuYzpgZmluZF9saWJyYXJ5YCB0cmllcyB0byBydW4gZXh0ZXJuYWwgcHJvZ3JhbXMKLShgYC9zYmluL2xkY29uZmlnYGAsIGBgZ2NjYGAsIGFuZCBgYG9iamR1bXBgYCkgdG8gZmluZCB0aGUgbGlicmFyeSBmaWxlLiAgSXQKLXJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBsaWJyYXJ5IGZpbGUuICBIZXJlIGFyZSBzb21lIGV4YW1wbGVzOjoKKyhgYC9zYmluL2xkY29uZmlnYGAsIGBgZ2NjYGAsIGBgb2JqZHVtcGBgIGFuZCBgYGxkYGApIHRvIGZpbmQgdGhlIGxpYnJhcnkgZmlsZS4KK0l0IHJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBsaWJyYXJ5IGZpbGUuCisKKy4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICBPbiBMaW51eCwgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBgYExEX0xJQlJBUllfUEFUSGBgIGlzIHVzZWQKKyAgIHdoZW4gc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMsIGlmIGEgbGlicmFyeSBjYW5ub3QgYmUgZm91bmQgYnkgYW55IG90aGVyIG1lYW5zLgorCitIZXJlIGFyZSBzb21lIGV4YW1wbGVzOjoKIAogICAgPj4+IGZyb20gY3R5cGVzLnV0aWwgaW1wb3J0IGZpbmRfbGlicmFyeQogICAgPj4+IGZpbmRfbGlicmFyeSgibSIpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QgYi9Eb2MvbGlicmFyeS9kYXRldGltZS5yc3QKaW5kZXggOTI1NGFlOC4uZWNhYWQwNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGF0ZXRpbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2RhdGV0aW1lLnJzdApAQCAtNTIyLDcgKzUyMiw3IEBACiAKIEluc3RhbmNlIG1ldGhvZHM6CiAKLS4uIG1ldGhvZDo6IGRhdGUucmVwbGFjZSh5ZWFyLCBtb250aCwgZGF5KQorLi4gbWV0aG9kOjogZGF0ZS5yZXBsYWNlKHllYXI9c2VsZi55ZWFyLCBtb250aD1zZWxmLm1vbnRoLCBkYXk9c2VsZi5kYXkpCiAKICAgIFJldHVybiBhIGRhdGUgd2l0aCB0aGUgc2FtZSB2YWx1ZSwgZXhjZXB0IGZvciB0aG9zZSBwYXJhbWV0ZXJzIGdpdmVuIG5ldwogICAgdmFsdWVzIGJ5IHdoaWNoZXZlciBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLiAgRm9yIGV4YW1wbGUsIGlmIGBgZCA9PQpAQCAtNjEwLDcgKzYxMCw4IEBACiAuLiBtZXRob2Q6OiBkYXRlLl9fZm9ybWF0X18oZm9ybWF0KQogCiAgICBTYW1lIGFzIDptZXRoOmAuZGF0ZS5zdHJmdGltZWAuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdAotICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGVgIG9iamVjdCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gRm9yIGEKKyAgIHN0cmluZyBmb3IgYSA6Y2xhc3M6YC5kYXRlYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtNjgyLDIyICs2ODMsMjYgQEAKIAogQ29uc3RydWN0b3I6CiAKLS4uIGNsYXNzOjogZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lKQorLi4gY2xhc3M6OiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCkKIAogICAgVGhlIHllYXIsIG1vbnRoIGFuZCBkYXkgYXJndW1lbnRzIGFyZSByZXF1aXJlZC4gICp0emluZm8qIG1heSBiZSBgYE5vbmVgYCwgb3IgYW4KICAgIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgbWF5IGJlIGludGVnZXJzLAogICAgaW4gdGhlIGZvbGxvd2luZyByYW5nZXM6CiAKLSAgICogYGBNSU5ZRUFSIDw9IHllYXIgPD0gTUFYWUVBUmBgCi0gICAqIGBgMSA8PSBtb250aCA8PSAxMmBgCi0gICAqIGBgMSA8PSBkYXkgPD0gbnVtYmVyIG9mIGRheXMgaW4gdGhlIGdpdmVuIG1vbnRoIGFuZCB5ZWFyYGAKLSAgICogYGAwIDw9IGhvdXIgPCAyNGBgCi0gICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgCi0gICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgCi0gICAqIGBgMCA8PSBtaWNyb3NlY29uZCA8IDEwMDAwMDBgYAorICAgKiBgYE1JTllFQVIgPD0geWVhciA8PSBNQVhZRUFSYGAsCisgICAqIGBgMSA8PSBtb250aCA8PSAxMmBgLAorICAgKiBgYDEgPD0gZGF5IDw9IG51bWJlciBvZiBkYXlzIGluIHRoZSBnaXZlbiBtb250aCBhbmQgeWVhcmBgLAorICAgKiBgYDAgPD0gaG91ciA8IDI0YGAsCisgICAqIGBgMCA8PSBtaW51dGUgPCA2MGBgLAorICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYCwKKyAgICogYGAwIDw9IG1pY3Jvc2Vjb25kIDwgMTAwMDAwMGBgLAorICAgKiBgYGZvbGQgaW4gWzAsIDFdYGAuCiAKICAgIElmIGFuIGFyZ3VtZW50IG91dHNpZGUgdGhvc2UgcmFuZ2VzIGlzIGdpdmVuLCA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlIGBgZm9sZGBgIGFyZ3VtZW50LgorCiBPdGhlciBjb25zdHJ1Y3RvcnMsIGFsbCBjbGFzcyBtZXRob2RzOgogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnRvZGF5KCkKQEAgLTc1Nyw2ICs3NjIsOCBAQAogICAgICAgaW5zdGVhZCBvZiA6ZXhjOmBWYWx1ZUVycm9yYCBvbiA6YzpmdW5jOmBsb2NhbHRpbWVgIG9yIDpjOmZ1bmM6YGdtdGltZWAKICAgICAgIGZhaWx1cmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6bWV0aDpgZnJvbXRpbWVzdGFtcGAgbWF5IHJldHVybiBpbnN0YW5jZXMgd2l0aCA6YXR0cjpgLmZvbGRgIHNldCB0byAxLgogCiAuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodGltZXN0YW1wKQogCkBAIC03OTMsMTYgKzgwMCwyMyBAQAogICAgbWljcm9zZWNvbmQgb2YgdGhlIHJlc3VsdCBhcmUgYWxsIDAsIGFuZCA6YXR0cjpgLnR6aW5mb2AgaXMgYGBOb25lYGAuCiAKIAotLi4gY2xhc3NtZXRob2Q6OiBkYXRldGltZS5jb21iaW5lKGRhdGUsIHRpbWUpCisuLiBjbGFzc21ldGhvZDo6IGRhdGV0aW1lLmNvbWJpbmUoZGF0ZSwgdGltZSwgdHppbmZvPXNlbGYudHppbmZvKQogCiAgICBSZXR1cm4gYSBuZXcgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCB3aG9zZSBkYXRlIGNvbXBvbmVudHMgYXJlIGVxdWFsIHRvIHRoZQotICAgZ2l2ZW4gOmNsYXNzOmBkYXRlYCBvYmplY3QncywgYW5kIHdob3NlIHRpbWUgY29tcG9uZW50cyBhbmQgOmF0dHI6YC50emluZm9gCi0gICBhdHRyaWJ1dGVzIGFyZSBlcXVhbCB0byB0aGUgZ2l2ZW4gOmNsYXNzOmAudGltZWAgb2JqZWN0J3MuIEZvciBhbnkKLSAgIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgKmQqLAotICAgYGBkID09IGRhdGV0aW1lLmNvbWJpbmUoZC5kYXRlKCksIGQudGltZXR6KCkpYGAuICBJZiBkYXRlIGlzIGEKKyAgIGdpdmVuIDpjbGFzczpgZGF0ZWAgb2JqZWN0J3MsIGFuZCB3aG9zZSB0aW1lIGNvbXBvbmVudHMKKyAgIGFyZSBlcXVhbCB0byB0aGUgZ2l2ZW4gOmNsYXNzOmAudGltZWAgb2JqZWN0J3MuICBJZiB0aGUgKnR6aW5mbyoKKyAgIGFyZ3VtZW50IGlzIHByb3ZpZGVkLCBpdHMgdmFsdWUgaXMgdXNlZCB0byBzZXQgdGhlIDphdHRyOmAudHppbmZvYCBhdHRyaWJ1dGUKKyAgIG9mIHRoZSByZXN1bHQsIG90aGVyd2lzZSB0aGUgOmF0dHI6YH4udGltZS50emluZm9gIGF0dHJpYnV0ZSBvZiB0aGUgKnRpbWUqIGFyZ3VtZW50CisgICBpcyB1c2VkLgorCisgICBGb3IgYW55IDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgKmQqLAorICAgYGBkID09IGRhdGV0aW1lLmNvbWJpbmUoZC5kYXRlKCksIGQudGltZSgpLCBkLnR6aW5mbylgYC4gIElmIGRhdGUgaXMgYQogICAgOmNsYXNzOmAuZGF0ZXRpbWVgIG9iamVjdCwgaXRzIHRpbWUgY29tcG9uZW50cyBhbmQgOmF0dHI6YC50emluZm9gIGF0dHJpYnV0ZXMKICAgIGFyZSBpZ25vcmVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0emluZm8qIGFyZ3VtZW50LgorCiAKIC4uIGNsYXNzbWV0aG9kOjogZGF0ZXRpbWUuc3RycHRpbWUoZGF0ZV9zdHJpbmcsIGZvcm1hdCkKIApAQCAtODc4LDYgKzg5MiwxNiBAQAogICAgb3IgYGBOb25lYGAgaWYgbm9uZSB3YXMgcGFzc2VkLgogCiAKKy4uIGF0dHJpYnV0ZTo6IGRhdGV0aW1lLmZvbGQKKworICAgSW4gYGBbMCwgMV1gYC4gIFVzZWQgdG8gZGlzYW1iaWd1YXRlIHdhbGwgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuICAoQQorICAgcmVwZWF0ZWQgaW50ZXJ2YWwgb2NjdXJzIHdoZW4gY2xvY2tzIGFyZSByb2xsZWQgYmFjayBhdCB0aGUgZW5kIG9mIGRheWxpZ2h0IHNhdmluZworICAgdGltZSBvciB3aGVuIHRoZSBVVEMgb2Zmc2V0IGZvciB0aGUgY3VycmVudCB6b25lIGlzIGRlY3JlYXNlZCBmb3IgcG9saXRpY2FsIHJlYXNvbnMuKQorICAgVGhlIHZhbHVlIDAgKDEpIHJlcHJlc2VudHMgdGhlIGVhcmxpZXIgKGxhdGVyKSBvZiB0aGUgdHdvIG1vbWVudHMgd2l0aCB0aGUgc2FtZSB3YWxsCisgICB0aW1lIHJlcHJlc2VudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogU3VwcG9ydGVkIG9wZXJhdGlvbnM6CiAKICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCkBAIC05NjYsMjMgKzk5MCwzNCBAQAogCiAuLiBtZXRob2Q6OiBkYXRldGltZS50aW1lKCkKIAotICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQgYW5kIG1pY3Jvc2Vjb25kLgorICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kIGFuZCBmb2xkLgogICAgOmF0dHI6YC50emluZm9gIGlzIGBgTm9uZWBgLiAgU2VlIGFsc28gbWV0aG9kIDptZXRoOmB0aW1ldHpgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlIGZvbGQgdmFsdWUgaXMgY29waWVkIHRvIHRoZSByZXR1cm5lZCA6Y2xhc3M6YC50aW1lYCBvYmplY3QuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUudGltZXR6KCkKIAotICAgUmV0dXJuIDpjbGFzczpgLnRpbWVgIG9iamVjdCB3aXRoIHNhbWUgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCBhbmQKKyAgIFJldHVybiA6Y2xhc3M6YC50aW1lYCBvYmplY3Qgd2l0aCBzYW1lIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCwgYW5kCiAgICB0emluZm8gYXR0cmlidXRlcy4gIFNlZSBhbHNvIG1ldGhvZCA6bWV0aDpgdGltZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBUaGUgZm9sZCB2YWx1ZSBpcyBjb3BpZWQgdG8gdGhlIHJldHVybmVkIDpjbGFzczpgLnRpbWVgIG9iamVjdC4KIAotLi4gbWV0aG9kOjogZGF0ZXRpbWUucmVwbGFjZShbeWVhclssIG1vbnRoWywgZGF5WywgaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV1dXV0pCisKKy4uIG1ldGhvZDo6IGRhdGV0aW1lLnJlcGxhY2UoeWVhcj1zZWxmLnllYXIsIG1vbnRoPXNlbGYubW9udGgsIGRheT1zZWxmLmRheSwgXAorICAgaG91cj1zZWxmLmhvdXIsIG1pbnV0ZT1zZWxmLm1pbnV0ZSwgc2Vjb25kPXNlbGYuc2Vjb25kLCBtaWNyb3NlY29uZD1zZWxmLm1pY3Jvc2Vjb25kLCBcCisgICB0emluZm89c2VsZi50emluZm8sICogZm9sZD0wKQogCiAgICBSZXR1cm4gYSBkYXRldGltZSB3aXRoIHRoZSBzYW1lIGF0dHJpYnV0ZXMsIGV4Y2VwdCBmb3IgdGhvc2UgYXR0cmlidXRlcyBnaXZlbgogICAgbmV3IHZhbHVlcyBieSB3aGljaGV2ZXIga2V5d29yZCBhcmd1bWVudHMgYXJlIHNwZWNpZmllZC4gIE5vdGUgdGhhdAogICAgYGB0emluZm89Tm9uZWBgIGNhbiBiZSBzcGVjaWZpZWQgdG8gY3JlYXRlIGEgbmFpdmUgZGF0ZXRpbWUgZnJvbSBhbiBhd2FyZQogICAgZGF0ZXRpbWUgd2l0aCBubyBjb252ZXJzaW9uIG9mIGRhdGUgYW5kIHRpbWUgZGF0YS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuYXN0aW1lem9uZSh0ej1Ob25lKQogCkBAIC05OTEsMjMgKzEwMjYsMjAgQEAKICAgICpzZWxmKiwgYnV0IGluICp0eioncyBsb2NhbCB0aW1lLgogCiAgICBJZiBwcm92aWRlZCwgKnR6KiBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOmNsYXNzOmB0emluZm9gIHN1YmNsYXNzLCBhbmQgaXRzCi0gICA6bWV0aDpgdXRjb2Zmc2V0YCBhbmQgOm1ldGg6YGRzdGAgbWV0aG9kcyBtdXN0IG5vdCByZXR1cm4gYGBOb25lYGAuICAqc2VsZiogbXVzdAotICAgYmUgYXdhcmUgKGBgc2VsZi50emluZm9gYCBtdXN0IG5vdCBiZSBgYE5vbmVgYCwgYW5kIGBgc2VsZi51dGNvZmZzZXQoKWBgIG11c3QKLSAgIG5vdCByZXR1cm4gYGBOb25lYGApLgorICAgOm1ldGg6YHV0Y29mZnNldGAgYW5kIDptZXRoOmBkc3RgIG1ldGhvZHMgbXVzdCBub3QgcmV0dXJuIGBgTm9uZWBgLiAgSWYgKnNlbGYqCisgICBpcyBuYWl2ZSAoYGBzZWxmLnR6aW5mbyBpcyBOb25lYGApLCBpdCBpcyBwcmVzdW1lZCB0byByZXByZXNlbnQgdGltZSBpbiB0aGUKKyAgIHN5c3RlbSB0aW1lem9uZS4KIAogICAgSWYgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzIChvciB3aXRoIGBgdHo9Tm9uZWBgKSB0aGUgc3lzdGVtIGxvY2FsCi0gICB0aW1lem9uZSBpcyBhc3N1bWVkLiAgVGhlIGBgLnR6aW5mb2BgIGF0dHJpYnV0ZSBvZiB0aGUgY29udmVydGVkCisgICB0aW1lem9uZSBpcyBhc3N1bWVkIGZvciB0aGUgdGFyZ2V0IHRpbWV6b25lLiAgVGhlIGBgLnR6aW5mb2BgIGF0dHJpYnV0ZSBvZiB0aGUgY29udmVydGVkCiAgICBkYXRldGltZSBpbnN0YW5jZSB3aWxsIGJlIHNldCB0byBhbiBpbnN0YW5jZSBvZiA6Y2xhc3M6YHRpbWV6b25lYAogICAgd2l0aCB0aGUgem9uZSBuYW1lIGFuZCBvZmZzZXQgb2J0YWluZWQgZnJvbSB0aGUgT1MuCiAKICAgIElmIGBgc2VsZi50emluZm9gYCBpcyAqdHoqLCBgYHNlbGYuYXN0aW1lem9uZSh0eilgYCBpcyBlcXVhbCB0byAqc2VsZio6ICBubwogICAgYWRqdXN0bWVudCBvZiBkYXRlIG9yIHRpbWUgZGF0YSBpcyBwZXJmb3JtZWQuIEVsc2UgdGhlIHJlc3VsdCBpcyBsb2NhbAotICAgdGltZSBpbiB0aW1lIHpvbmUgKnR6KiwgcmVwcmVzZW50aW5nIHRoZSBzYW1lIFVUQyB0aW1lIGFzICpzZWxmKjogIGFmdGVyCi0gICBgYGFzdHogPSBkdC5hc3RpbWV6b25lKHR6KWBgLCBgYGFzdHogLSBhc3R6LnV0Y29mZnNldCgpYGAgd2lsbCB1c3VhbGx5IGhhdmUKLSAgIHRoZSBzYW1lIGRhdGUgYW5kIHRpbWUgZGF0YSBhcyBgYGR0IC0gZHQudXRjb2Zmc2V0KClgYC4gVGhlIGRpc2N1c3Npb24KLSAgIG9mIGNsYXNzIDpjbGFzczpgdHppbmZvYCBleHBsYWlucyB0aGUgY2FzZXMgYXQgRGF5bGlnaHQgU2F2aW5nIFRpbWUgdHJhbnNpdGlvbgotICAgYm91bmRhcmllcyB3aGVyZSB0aGlzIGNhbm5vdCBiZSBhY2hpZXZlZCAoYW4gaXNzdWUgb25seSBpZiAqdHoqIG1vZGVscyBib3RoCi0gICBzdGFuZGFyZCBhbmQgZGF5bGlnaHQgdGltZSkuCisgICB0aW1lIGluIHRoZSB0aW1lem9uZSAqdHoqLCByZXByZXNlbnRpbmcgdGhlIHNhbWUgVVRDIHRpbWUgYXMgKnNlbGYqOiAgYWZ0ZXIKKyAgIGBgYXN0eiA9IGR0LmFzdGltZXpvbmUodHopYGAsIGBgYXN0eiAtIGFzdHoudXRjb2Zmc2V0KClgYCB3aWxsIGhhdmUKKyAgIHRoZSBzYW1lIGRhdGUgYW5kIHRpbWUgZGF0YSBhcyBgYGR0IC0gZHQudXRjb2Zmc2V0KClgYC4KIAogICAgSWYgeW91IG1lcmVseSB3YW50IHRvIGF0dGFjaCBhIHRpbWUgem9uZSBvYmplY3QgKnR6KiB0byBhIGRhdGV0aW1lICpkdCogd2l0aG91dAogICAgYWRqdXN0bWVudCBvZiBkYXRlIGFuZCB0aW1lIGRhdGEsIHVzZSBgYGR0LnJlcGxhY2UodHppbmZvPXR6KWBgLiAgSWYgeW91CkBAIC0xMDI5LDYgKzEwNjEsMTAgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICAqdHoqIG5vdyBjYW4gYmUgb21pdHRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSA6bWV0aDpgYXN0aW1lem9uZWAgbWV0aG9kIGNhbiBub3cgYmUgY2FsbGVkIG9uIG5haXZlIGluc3RhbmNlcyB0aGF0CisgICAgICBhcmUgcHJlc3VtZWQgdG8gcmVwcmVzZW50IHN5c3RlbSBsb2NhbCB0aW1lLgorCiAKIC4uIG1ldGhvZDo6IGRhdGV0aW1lLnV0Y29mZnNldCgpCiAKQEAgLTExMDUsNiArMTE0MSwxMCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSA6bWV0aDpgdGltZXN0YW1wYCBtZXRob2QgdXNlcyB0aGUgOmF0dHI6YC5mb2xkYCBhdHRyaWJ1dGUgdG8KKyAgICAgIGRpc2FtYmlndWF0ZSB0aGUgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICBUaGVyZSBpcyBubyBtZXRob2QgdG8gb2J0YWluIHRoZSBQT1NJWCB0aW1lc3RhbXAgZGlyZWN0bHkgZnJvbSBhCkBAIC0xMTM4LDcgKzExNzgsNyBAQAogICAgYGBzZWxmLmRhdGUoKS5pc29jYWxlbmRhcigpYGAuCiAKIAotLi4gbWV0aG9kOjogZGF0ZXRpbWUuaXNvZm9ybWF0KHNlcD0nVCcpCisuLiBtZXRob2Q6OiBkYXRldGltZS5pc29mb3JtYXQoc2VwPSdUJywgdGltZXNwZWM9J2F1dG8nKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBkYXRlIGFuZCB0aW1lIGluIElTTyA4NjAxIGZvcm1hdCwKICAgIFlZWVktTU0tRERUSEg6TU06U1MubW1tbW1tIG9yLCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCkBAIC0xMTU5LDYgKzExOTksMzcgQEAKICAgICAgID4+PiBkYXRldGltZSgyMDAyLCAxMiwgMjUsIHR6aW5mbz1UWigpKS5pc29mb3JtYXQoJyAnKQogICAgICAgJzIwMDItMTItMjUgMDA6MDA6MDAtMDY6MzknCiAKKyAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqdGltZXNwZWMqIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGFkZGl0aW9uYWwKKyAgIGNvbXBvbmVudHMgb2YgdGhlIHRpbWUgdG8gaW5jbHVkZSAodGhlIGRlZmF1bHQgaXMgYGAnYXV0bydgYCkuCisgICBJdCBjYW4gYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6CisKKyAgIC0gYGAnYXV0bydgYDogU2FtZSBhcyBgYCdzZWNvbmRzJ2BgIGlmIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwKKyAgICAgc2FtZSBhcyBgYCdtaWNyb3NlY29uZHMnYGAgb3RoZXJ3aXNlLgorICAgLSBgYCdob3VycydgYDogSW5jbHVkZSB0aGUgOmF0dHI6YGhvdXJgIGluIHRoZSB0d28tZGlnaXQgSEggZm9ybWF0LgorICAgLSBgYCdtaW51dGVzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCBhbmQgOmF0dHI6YG1pbnV0ZWAgaW4gSEg6TU0gZm9ybWF0LgorICAgLSBgYCdzZWNvbmRzJ2BgOiBJbmNsdWRlIDphdHRyOmBob3VyYCwgOmF0dHI6YG1pbnV0ZWAsIGFuZCA6YXR0cjpgc2Vjb25kYAorICAgICBpbiBISDpNTTpTUyBmb3JtYXQuCisgICAtIGBgJ21pbGxpc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUsIGJ1dCB0cnVuY2F0ZSBmcmFjdGlvbmFsIHNlY29uZAorICAgICBwYXJ0IHRvIG1pbGxpc2Vjb25kcy4gSEg6TU06U1Muc3NzIGZvcm1hdC4KKyAgIC0gYGAnbWljcm9zZWNvbmRzJ2BgOiBJbmNsdWRlIGZ1bGwgdGltZSBpbiBISDpNTTpTUy5tbW1tbW0gZm9ybWF0LgorCisgICAuLiBub3RlOjoKKworICAgICAgRXhjbHVkZWQgdGltZSBjb21wb25lbnRzIGFyZSB0cnVuY2F0ZWQsIG5vdCByb3VuZGVkLgorCisgICA6ZXhjOmBWYWx1ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBvbiBhbiBpbnZhbGlkICp0aW1lc3BlYyogYXJndW1lbnQuCisKKworICAgICAgPj4+IGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGV0aW1lCisgICAgICA+Pj4gZGF0ZXRpbWUubm93KCkuaXNvZm9ybWF0KHRpbWVzcGVjPSdtaW51dGVzJykKKyAgICAgICcyMDAyLTEyLTI1VDAwOjAwJworICAgICAgPj4+IGR0ID0gZGF0ZXRpbWUoMjAxNSwgMSwgMSwgMTIsIDMwLCA1OSwgMCkKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpCisgICAgICAnMjAxNS0wMS0wMVQxMjozMDo1OS4wMDAwMDAnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0aW1lc3BlYyogYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogZGF0ZXRpbWUuX19zdHJfXygpCiAKQEAgLTExODUsNyArMTI1Niw4IEBACiAuLiBtZXRob2Q6OiBkYXRldGltZS5fX2Zvcm1hdF9fKGZvcm1hdCkKIAogICAgU2FtZSBhcyA6bWV0aDpgLmRhdGV0aW1lLnN0cmZ0aW1lYC4gIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gc3BlY2lmeSBhIGZvcm1hdAotICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3Qgd2hlbiB1c2luZyA6bWV0aDpgc3RyLmZvcm1hdGAuICBGb3IgYQorICAgc3RyaW5nIGZvciBhIDpjbGFzczpgLmRhdGV0aW1lYCBvYmplY3QgaW4gOnJlZjpgZm9ybWF0dGVkIHN0cmluZworICAgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIGFuZCB3aGVuIHVzaW5nIDptZXRoOmBzdHIuZm9ybWF0YC4gIEZvciBhCiAgICBjb21wbGV0ZSBsaXN0IG9mIGZvcm1hdHRpbmcgZGlyZWN0aXZlcywgc2VlCiAgICA6cmVmOmBzdHJmdGltZS1zdHJwdGltZS1iZWhhdmlvcmAuCiAKQEAgLTEzMDIsMTYgKzEzNzQsMTcgQEAKIEEgdGltZSBvYmplY3QgcmVwcmVzZW50cyBhIChsb2NhbCkgdGltZSBvZiBkYXksIGluZGVwZW5kZW50IG9mIGFueSBwYXJ0aWN1bGFyCiBkYXksIGFuZCBzdWJqZWN0IHRvIGFkanVzdG1lbnQgdmlhIGEgOmNsYXNzOmB0emluZm9gIG9iamVjdC4KIAotLi4gY2xhc3M6OiB0aW1lKGhvdXI9MCwgbWludXRlPTAsIHNlY29uZD0wLCBtaWNyb3NlY29uZD0wLCB0emluZm89Tm9uZSkKKy4uIGNsYXNzOjogdGltZShob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCkKIAogICAgQWxsIGFyZ3VtZW50cyBhcmUgb3B0aW9uYWwuICAqdHppbmZvKiBtYXkgYmUgYGBOb25lYGAsIG9yIGFuIGluc3RhbmNlIG9mIGEKICAgIDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcy4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIG1heSBiZSBpbnRlZ2VycywgaW4gdGhlCiAgICBmb2xsb3dpbmcgcmFuZ2VzOgogCi0gICAqIGBgMCA8PSBob3VyIDwgMjRgYAotICAgKiBgYDAgPD0gbWludXRlIDwgNjBgYAotICAgKiBgYDAgPD0gc2Vjb25kIDwgNjBgYAotICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAuCisgICAqIGBgMCA8PSBob3VyIDwgMjRgYCwKKyAgICogYGAwIDw9IG1pbnV0ZSA8IDYwYGAsCisgICAqIGBgMCA8PSBzZWNvbmQgPCA2MGBgLAorICAgKiBgYDAgPD0gbWljcm9zZWNvbmQgPCAxMDAwMDAwYGAsCisgICAqIGBgZm9sZCBpbiBbMCwgMV1gYC4KIAogICAgSWYgYW4gYXJndW1lbnQgb3V0c2lkZSB0aG9zZSByYW5nZXMgaXMgZ2l2ZW4sIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4gIEFsbAogICAgZGVmYXVsdCB0byBgYDBgYCBleGNlcHQgKnR6aW5mbyosIHdoaWNoIGRlZmF1bHRzIHRvIDpjb25zdDpgTm9uZWAuCkBAIC0xMzY0LDYgKzE0MzcsMTcgQEAKICAgIGBgTm9uZWBgIGlmIG5vbmUgd2FzIHBhc3NlZC4KIAogCisuLiBhdHRyaWJ1dGU6OiB0aW1lLmZvbGQKKworICAgSW4gYGBbMCwgMV1gYC4gIFVzZWQgdG8gZGlzYW1iaWd1YXRlIHdhbGwgdGltZXMgZHVyaW5nIGEgcmVwZWF0ZWQgaW50ZXJ2YWwuICAoQQorICAgcmVwZWF0ZWQgaW50ZXJ2YWwgb2NjdXJzIHdoZW4gY2xvY2tzIGFyZSByb2xsZWQgYmFjayBhdCB0aGUgZW5kIG9mIGRheWxpZ2h0IHNhdmluZworICAgdGltZSBvciB3aGVuIHRoZSBVVEMgb2Zmc2V0IGZvciB0aGUgY3VycmVudCB6b25lIGlzIGRlY3JlYXNlZCBmb3IgcG9saXRpY2FsIHJlYXNvbnMuKQorICAgVGhlIHZhbHVlIDAgKDEpIHJlcHJlc2VudHMgdGhlIGVhcmxpZXIgKGxhdGVyKSBvZiB0aGUgdHdvIG1vbWVudHMgd2l0aCB0aGUgc2FtZSB3YWxsCisgICB0aW1lIHJlcHJlc2VudGF0aW9uLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBTdXBwb3J0ZWQgb3BlcmF0aW9uczoKIAogKiBjb21wYXJpc29uIG9mIDpjbGFzczpgLnRpbWVgIHRvIDpjbGFzczpgLnRpbWVgLCB3aGVyZSAqYSogaXMgY29uc2lkZXJlZCBsZXNzCkBAIC0xMzk5LDIxICsxNDgzLDU4IEBACiAKIEluc3RhbmNlIG1ldGhvZHM6CiAKLS4uIG1ldGhvZDo6IHRpbWUucmVwbGFjZShbaG91clssIG1pbnV0ZVssIHNlY29uZFssIG1pY3Jvc2Vjb25kWywgdHppbmZvXV1dXV0pCisuLiBtZXRob2Q6OiB0aW1lLnJlcGxhY2UoaG91cj1zZWxmLmhvdXIsIG1pbnV0ZT1zZWxmLm1pbnV0ZSwgc2Vjb25kPXNlbGYuc2Vjb25kLCBcCisgICBtaWNyb3NlY29uZD1zZWxmLm1pY3Jvc2Vjb25kLCB0emluZm89c2VsZi50emluZm8sICogZm9sZD0wKQogCiAgICBSZXR1cm4gYSA6Y2xhc3M6YC50aW1lYCB3aXRoIHRoZSBzYW1lIHZhbHVlLCBleGNlcHQgZm9yIHRob3NlIGF0dHJpYnV0ZXMgZ2l2ZW4KICAgIG5ldyB2YWx1ZXMgYnkgd2hpY2hldmVyIGtleXdvcmQgYXJndW1lbnRzIGFyZSBzcGVjaWZpZWQuICBOb3RlIHRoYXQKICAgIGBgdHppbmZvPU5vbmVgYCBjYW4gYmUgc3BlY2lmaWVkIHRvIGNyZWF0ZSBhIG5haXZlIDpjbGFzczpgLnRpbWVgIGZyb20gYW4KICAgIGF3YXJlIDpjbGFzczpgLnRpbWVgLCB3aXRob3V0IGNvbnZlcnNpb24gb2YgdGhlIHRpbWUgZGF0YS4KIAorICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBBZGRlZCB0aGUgYGBmb2xkYGAgYXJndW1lbnQuCiAKLS4uIG1ldGhvZDo6IHRpbWUuaXNvZm9ybWF0KCkKKworLi4gbWV0aG9kOjogdGltZS5pc29mb3JtYXQodGltZXNwZWM9J2F1dG8nKQogCiAgICBSZXR1cm4gYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSB0aW1lIGluIElTTyA4NjAxIGZvcm1hdCwgSEg6TU06U1MubW1tbW1tIG9yLCBpZgotICAgc2VsZi5taWNyb3NlY29uZCBpcyAwLCBISDpNTTpTUyBJZiA6bWV0aDpgdXRjb2Zmc2V0YCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIGEKKyAgIDphdHRyOmBtaWNyb3NlY29uZGAgaXMgMCwgSEg6TU06U1MgSWYgOm1ldGg6YHV0Y29mZnNldGAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCBhCiAgICA2LWNoYXJhY3RlciBzdHJpbmcgaXMgYXBwZW5kZWQsIGdpdmluZyB0aGUgVVRDIG9mZnNldCBpbiAoc2lnbmVkKSBob3VycyBhbmQKICAgIG1pbnV0ZXM6IEhIOk1NOlNTLm1tbW1tbStISDpNTSBvciwgaWYgc2VsZi5taWNyb3NlY29uZCBpcyAwLCBISDpNTTpTUytISDpNTQogCisgICBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKnRpbWVzcGVjKiBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICBjb21wb25lbnRzIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUgKHRoZSBkZWZhdWx0IGlzIGBgJ2F1dG8nYGApLgorICAgSXQgY2FuIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAtIGBgJ2F1dG8nYGA6IFNhbWUgYXMgYGAnc2Vjb25kcydgYCBpZiA6YXR0cjpgbWljcm9zZWNvbmRgIGlzIDAsCisgICAgIHNhbWUgYXMgYGAnbWljcm9zZWNvbmRzJ2BgIG90aGVyd2lzZS4KKyAgIC0gYGAnaG91cnMnYGA6IEluY2x1ZGUgdGhlIDphdHRyOmBob3VyYCBpbiB0aGUgdHdvLWRpZ2l0IEhIIGZvcm1hdC4KKyAgIC0gYGAnbWludXRlcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAgYW5kIDphdHRyOmBtaW51dGVgIGluIEhIOk1NIGZvcm1hdC4KKyAgIC0gYGAnc2Vjb25kcydgYDogSW5jbHVkZSA6YXR0cjpgaG91cmAsIDphdHRyOmBtaW51dGVgLCBhbmQgOmF0dHI6YHNlY29uZGAKKyAgICAgaW4gSEg6TU06U1MgZm9ybWF0LgorICAgLSBgYCdtaWxsaXNlY29uZHMnYGA6IEluY2x1ZGUgZnVsbCB0aW1lLCBidXQgdHJ1bmNhdGUgZnJhY3Rpb25hbCBzZWNvbmQKKyAgICAgcGFydCB0byBtaWxsaXNlY29uZHMuIEhIOk1NOlNTLnNzcyBmb3JtYXQuCisgICAtIGBgJ21pY3Jvc2Vjb25kcydgYDogSW5jbHVkZSBmdWxsIHRpbWUgaW4gSEg6TU06U1MubW1tbW1tIGZvcm1hdC4KKworICAgLi4gbm90ZTo6CisKKyAgICAgIEV4Y2x1ZGVkIHRpbWUgY29tcG9uZW50cyBhcmUgdHJ1bmNhdGVkLCBub3Qgcm91bmRlZC4KKworICAgOmV4YzpgVmFsdWVFcnJvcmAgd2lsbCBiZSByYWlzZWQgb24gYW4gaW52YWxpZCAqdGltZXNwZWMqIGFyZ3VtZW50LgorCisKKyAgICAgID4+PiBmcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lCisgICAgICA+Pj4gdGltZShob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MTIzNDU2KS5pc29mb3JtYXQodGltZXNwZWM9J21pbnV0ZXMnKQorICAgICAgJzEyOjM0JworICAgICAgPj4+IGR0ID0gdGltZShob3VyPTEyLCBtaW51dGU9MzQsIHNlY29uZD01NiwgbWljcm9zZWNvbmQ9MCkKKyAgICAgID4+PiBkdC5pc29mb3JtYXQodGltZXNwZWM9J21pY3Jvc2Vjb25kcycpCisgICAgICAnMTI6MzQ6NTYuMDAwMDAwJworICAgICAgPj4+IGR0Lmlzb2Zvcm1hdCh0aW1lc3BlYz0nYXV0bycpCisgICAgICAnMTI6MzQ6NTYnCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgdGhlICp0aW1lc3BlYyogYXJndW1lbnQuCisKIAogLi4gbWV0aG9kOjogdGltZS5fX3N0cl9fKCkKIApAQCAtMTQzMCw3ICsxNTUxLDggQEAKIC4uIG1ldGhvZDo6IHRpbWUuX19mb3JtYXRfXyhmb3JtYXQpCiAKICAgIFNhbWUgYXMgOm1ldGg6YC50aW1lLnN0cmZ0aW1lYC4gVGhpcyBtYWtlcyBpdCBwb3NzaWJsZSB0byBzcGVjaWZ5IGEgZm9ybWF0IHN0cmluZwotICAgZm9yIGEgOmNsYXNzOmAudGltZWAgb2JqZWN0IHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKKyAgIGZvciBhIDpjbGFzczpgLnRpbWVgIG9iamVjdCBpbiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nCisgICBsaXRlcmFscyA8Zi1zdHJpbmdzPmAgYW5kIHdoZW4gdXNpbmcgOm1ldGg6YHN0ci5mb3JtYXRgLiAgRm9yIGEKICAgIGNvbXBsZXRlIGxpc3Qgb2YgZm9ybWF0dGluZyBkaXJlY3RpdmVzLCBzZWUKICAgIDpyZWY6YHN0cmZ0aW1lLXN0cnB0aW1lLWJlaGF2aW9yYC4KIApAQCAtMTY4MCw5ICsxODAyLDE5IEBACiBXaGVuIERTVCBzdGFydHMgKHRoZSAic3RhcnQiIGxpbmUpLCB0aGUgbG9jYWwgd2FsbCBjbG9jayBsZWFwcyBmcm9tIDE6NTkgdG8KIDM6MDAuICBBIHdhbGwgdGltZSBvZiB0aGUgZm9ybSAyOk1NIGRvZXNuJ3QgcmVhbGx5IG1ha2Ugc2Vuc2Ugb24gdGhhdCBkYXksIHNvCiBgYGFzdGltZXpvbmUoRWFzdGVybilgYCB3b24ndCBkZWxpdmVyIGEgcmVzdWx0IHdpdGggYGBob3VyID09IDJgYCBvbiB0aGUgZGF5IERTVAotYmVnaW5zLiAgSW4gb3JkZXIgZm9yIDptZXRoOmBhc3RpbWV6b25lYCB0byBtYWtlIHRoaXMgZ3VhcmFudGVlLCB0aGUKLTptZXRoOmB0emluZm8uZHN0YCBtZXRob2QgbXVzdCBjb25zaWRlciB0aW1lcyBpbiB0aGUgIm1pc3NpbmcgaG91ciIgKDI6TU0gZm9yCi1FYXN0ZXJuKSB0byBiZSBpbiBkYXlsaWdodCB0aW1lLgorYmVnaW5zLiAgRm9yIGV4YW1wbGUsIGF0IHRoZSBTcHJpbmcgZm9yd2FyZCB0cmFuc2l0aW9uIG9mIDIwMTYsIHdlIGdldAorCisgICAgPj4+IHUwID0gZGF0ZXRpbWUoMjAxNiwgMywgMTMsIDUsIHR6aW5mbz10aW1lem9uZS51dGMpCisgICAgPj4+IGZvciBpIGluIHJhbmdlKDQpOgorICAgIC4uLiAgICAgdSA9IHUwICsgaSpIT1VSCisgICAgLi4uICAgICB0ID0gdS5hc3RpbWV6b25lKEVhc3Rlcm4pCisgICAgLi4uICAgICBwcmludCh1LnRpbWUoKSwgJ1VUQyA9JywgdC50aW1lKCksIHQudHpuYW1lKCkpCisgICAgLi4uCisgICAgMDU6MDA6MDAgVVRDID0gMDA6MDA6MDAgRVNUCisgICAgMDY6MDA6MDAgVVRDID0gMDE6MDA6MDAgRVNUCisgICAgMDc6MDA6MDAgVVRDID0gMDM6MDA6MDAgRURUCisgICAgMDg6MDA6MDAgVVRDID0gMDQ6MDA6MDAgRURUCisKIAogV2hlbiBEU1QgZW5kcyAodGhlICJlbmQiIGxpbmUpLCB0aGVyZSdzIGEgcG90ZW50aWFsbHkgd29yc2UgcHJvYmxlbTogdGhlcmUncyBhbgogaG91ciB0aGF0IGNhbid0IGJlIHNwZWxsZWQgdW5hbWJpZ3VvdXNseSBpbiBsb2NhbCB3YWxsIHRpbWU6IHRoZSBsYXN0IGhvdXIgb2YKQEAgLTE2OTEsMjggKzE4MjMsNDEgQEAKIHRvIDE6MDAgKHN0YW5kYXJkIHRpbWUpIGFnYWluLiBMb2NhbCB0aW1lcyBvZiB0aGUgZm9ybSAxOk1NIGFyZSBhbWJpZ3VvdXMuCiA6bWV0aDpgYXN0aW1lem9uZWAgbWltaWNzIHRoZSBsb2NhbCBjbG9jaydzIGJlaGF2aW9yIGJ5IG1hcHBpbmcgdHdvIGFkamFjZW50IFVUQwogaG91cnMgaW50byB0aGUgc2FtZSBsb2NhbCBob3VyIHRoZW4uICBJbiB0aGUgRWFzdGVybiBleGFtcGxlLCBVVEMgdGltZXMgb2YgdGhlCi1mb3JtIDU6TU0gYW5kIDY6TU0gYm90aCBtYXAgdG8gMTpNTSB3aGVuIGNvbnZlcnRlZCB0byBFYXN0ZXJuLiAgSW4gb3JkZXIgZm9yCi06bWV0aDpgYXN0aW1lem9uZWAgdG8gbWFrZSB0aGlzIGd1YXJhbnRlZSwgdGhlIDptZXRoOmB0emluZm8uZHN0YCBtZXRob2QgbXVzdAotY29uc2lkZXIgdGltZXMgaW4gdGhlICJyZXBlYXRlZCBob3VyIiB0byBiZSBpbiBzdGFuZGFyZCB0aW1lLiAgVGhpcyBpcyBlYXNpbHkKLWFycmFuZ2VkLCBhcyBpbiB0aGUgZXhhbXBsZSwgYnkgZXhwcmVzc2luZyBEU1Qgc3dpdGNoIHRpbWVzIGluIHRoZSB0aW1lIHpvbmUncwotc3RhbmRhcmQgbG9jYWwgdGltZS4KK2Zvcm0gNTpNTSBhbmQgNjpNTSBib3RoIG1hcCB0byAxOk1NIHdoZW4gY29udmVydGVkIHRvIEVhc3Rlcm4sIGJ1dCBlYXJsaWVyIHRpbWVzCitoYXZlIHRoZSA6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBzZXQgdG8gMCBhbmQgdGhlIGxhdGVyIHRpbWVzIGhhdmUgaXQgc2V0IHRvIDEuCitGb3IgZXhhbXBsZSwgYXQgdGhlIEZhbGwgYmFjayB0cmFuc2l0aW9uIG9mIDIwMTYsIHdlIGdldAogCi1BcHBsaWNhdGlvbnMgdGhhdCBjYW4ndCBiZWFyIHN1Y2ggYW1iaWd1aXRpZXMgc2hvdWxkIGF2b2lkIHVzaW5nIGh5YnJpZAorICAgID4+PiB1MCA9IGRhdGV0aW1lKDIwMTYsIDExLCA2LCA0LCB0emluZm89dGltZXpvbmUudXRjKQorICAgID4+PiBmb3IgaSBpbiByYW5nZSg0KToKKyAgICAuLi4gICAgIHUgPSB1MCArIGkqSE9VUgorICAgIC4uLiAgICAgdCA9IHUuYXN0aW1lem9uZShFYXN0ZXJuKQorICAgIC4uLiAgICAgcHJpbnQodS50aW1lKCksICdVVEMgPScsIHQudGltZSgpLCB0LnR6bmFtZSgpLCB0LmZvbGQpCisgICAgLi4uCisgICAgMDQ6MDA6MDAgVVRDID0gMDA6MDA6MDAgRURUIDAKKyAgICAwNTowMDowMCBVVEMgPSAwMTowMDowMCBFRFQgMAorICAgIDA2OjAwOjAwIFVUQyA9IDAxOjAwOjAwIEVTVCAxCisgICAgMDc6MDA6MDAgVVRDID0gMDI6MDA6MDAgRVNUIDAKKworTm90ZSB0aGF0IHRoZSA6Y2xhc3M6YGRhdGV0aW1lYCBpbnN0YW5jZXMgdGhhdCBkaWZmZXIgb25seSBieSB0aGUgdmFsdWUgb2YgdGhlCis6YXR0cjpgfmRhdGV0aW1lLmZvbGRgIGF0dHJpYnV0ZSBhcmUgY29uc2lkZXJlZCBlcXVhbCBpbiBjb21wYXJpc29ucy4KKworQXBwbGljYXRpb25zIHRoYXQgY2FuJ3QgYmVhciB3YWxsLXRpbWUgYW1iaWd1aXRpZXMgc2hvdWxkIGV4cGxpY2l0bHkgY2hlY2sgdGhlCit2YWx1ZSBvZiB0aGUgOmF0dHI6YH5kYXRldGltZS5mb2xkYCBhdHRyaWJ1dGUgb3IgYXZvaWQgdXNpbmcgaHlicmlkCiA6Y2xhc3M6YHR6aW5mb2Agc3ViY2xhc3NlczsgdGhlcmUgYXJlIG5vIGFtYmlndWl0aWVzIHdoZW4gdXNpbmcgOmNsYXNzOmB0aW1lem9uZWAsCiBvciBhbnkgb3RoZXIgZml4ZWQtb2Zmc2V0IDpjbGFzczpgdHppbmZvYCBzdWJjbGFzcyAoc3VjaCBhcyBhIGNsYXNzIHJlcHJlc2VudGluZwogb25seSBFU1QgKGZpeGVkIG9mZnNldCAtNSBob3VycyksIG9yIG9ubHkgRURUIChmaXhlZCBvZmZzZXQgLTQgaG91cnMpKS4KIAogLi4gc2VlYWxzbzo6CiAKLSAgIGBweXR6IDxodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dHovPmBfCisgICBgZGF0ZXR1aWwudHogPGh0dHBzOi8vZGF0ZXV0aWwucmVhZHRoZWRvY3MuaW8vZW4vc3RhYmxlL3R6Lmh0bWw+YF8KICAgICAgIFRoZSBzdGFuZGFyZCBsaWJyYXJ5IGhhcyA6Y2xhc3M6YHRpbWV6b25lYCBjbGFzcyBmb3IgaGFuZGxpbmcgYXJiaXRyYXJ5CiAgICAgICBmaXhlZCBvZmZzZXRzIGZyb20gVVRDIGFuZCA6YXR0cjpgdGltZXpvbmUudXRjYCBhcyBVVEMgdGltZXpvbmUgaW5zdGFuY2UuCiAKLSAgICAgICpweXR6KiBsaWJyYXJ5IGJyaW5ncyB0aGUgKklBTkEgdGltZXpvbmUgZGF0YWJhc2UqIChhbHNvIGtub3duIGFzIHRoZQorICAgICAgKmRhdGV0dWlsLnR6KiBsaWJyYXJ5IGJyaW5ncyB0aGUgKklBTkEgdGltZXpvbmUgZGF0YWJhc2UqIChhbHNvIGtub3duIGFzIHRoZQogICAgICAgT2xzb24gZGF0YWJhc2UpIHRvIFB5dGhvbiBhbmQgaXRzIHVzYWdlIGlzIHJlY29tbWVuZGVkLgogCiAgICBgSUFOQSB0aW1lem9uZSBkYXRhYmFzZSA8aHR0cHM6Ly93d3cuaWFuYS5vcmcvdGltZS16b25lcz5gXwotICAgICAgVGhlIFRpbWUgWm9uZSBEYXRhYmFzZSAob2Z0ZW4gY2FsbGVkIHR6IG9yIHpvbmVpbmZvKSBjb250YWlucyBjb2RlIGFuZAorICAgICAgVGhlIFRpbWUgWm9uZSBEYXRhYmFzZSAob2Z0ZW4gY2FsbGVkIHR6LCB0emRhdGEgb3Igem9uZWluZm8pIGNvbnRhaW5zIGNvZGUgYW5kCiAgICAgICBkYXRhIHRoYXQgcmVwcmVzZW50IHRoZSBoaXN0b3J5IG9mIGxvY2FsIHRpbWUgZm9yIG1hbnkgcmVwcmVzZW50YXRpdmUKICAgICAgIGxvY2F0aW9ucyBhcm91bmQgdGhlIGdsb2JlLiBJdCBpcyB1cGRhdGVkIHBlcmlvZGljYWxseSB0byByZWZsZWN0IGNoYW5nZXMKICAgICAgIG1hZGUgYnkgcG9saXRpY2FsIGJvZGllcyB0byB0aW1lIHpvbmUgYm91bmRhcmllcywgVVRDIG9mZnNldHMsIGFuZApAQCAtMTczMiw3ICsxODc3LDcgQEAKIG1hZGUgdG8gY2l2aWwgdGltZS4KIAogCi0uLiBjbGFzczo6IHRpbWV6b25lKG9mZnNldFssIG5hbWVdKQorLi4gY2xhc3M6OiB0aW1lem9uZShvZmZzZXQsIG5hbWU9Tm9uZSkKIAogICBUaGUgKm9mZnNldCogYXJndW1lbnQgbXVzdCBiZSBzcGVjaWZpZWQgYXMgYSA6Y2xhc3M6YHRpbWVkZWx0YWAKICAgb2JqZWN0IHJlcHJlc2VudGluZyB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBsb2NhbCB0aW1lIGFuZCBVVEMuICBJdCBtdXN0CkBAIC0xNzQxLDEwICsxODg2LDcgQEAKICAgb3RoZXJ3aXNlIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KIAogICBUaGUgKm5hbWUqIGFyZ3VtZW50IGlzIG9wdGlvbmFsLiAgSWYgc3BlY2lmaWVkIGl0IG11c3QgYmUgYSBzdHJpbmcgdGhhdAotICBpcyB1c2VkIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgYGB0em5hbWUoZHQpYGAgbWV0aG9kLiAgT3RoZXJ3aXNlLAotICBgYHR6bmFtZShkdClgYCByZXR1cm5zIGEgc3RyaW5nICdVVENzSEg6TU0nLCB3aGVyZSBzIGlzIHRoZSBzaWduIG9mCi0gICpvZmZzZXQqLCBISCBhbmQgTU0gYXJlIHR3byBkaWdpdHMgb2YgYGBvZmZzZXQuaG91cnNgYCBhbmQKLSAgYGBvZmZzZXQubWludXRlc2BgIHJlc3BlY3RpdmVseS4KKyAgd2lsbCBiZSB1c2VkIGFzIHRoZSB2YWx1ZSByZXR1cm5lZCBieSB0aGUgOm1ldGg6YGRhdGV0aW1lLnR6bmFtZWAgbWV0aG9kLgogCiAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCkBAIC0xNzU3LDExICsxODk5LDE5IEBACiAKIC4uIG1ldGhvZDo6IHRpbWV6b25lLnR6bmFtZShkdCkKIAotICBSZXR1cm4gdGhlIGZpeGVkIHZhbHVlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YHRpbWV6b25lYCBpbnN0YW5jZSBpcwotICBjb25zdHJ1Y3RlZCBvciBhIHN0cmluZyAnVVRDc0hIOk1NJywgd2hlcmUgcyBpcyB0aGUgc2lnbiBvZgotICAqb2Zmc2V0KiwgSEggYW5kIE1NIGFyZSB0d28gZGlnaXRzIG9mIGBgb2Zmc2V0LmhvdXJzYGAgYW5kCisgIFJldHVybiB0aGUgZml4ZWQgdmFsdWUgc3BlY2lmaWVkIHdoZW4gdGhlIDpjbGFzczpgdGltZXpvbmVgIGluc3RhbmNlCisgIGlzIGNvbnN0cnVjdGVkLiAgSWYgKm5hbWUqIGlzIG5vdCBwcm92aWRlZCBpbiB0aGUgY29uc3RydWN0b3IsIHRoZQorICBuYW1lIHJldHVybmVkIGJ5IGBgdHpuYW1lKGR0KWBgIGlzIGdlbmVyYXRlZCBmcm9tIHRoZSB2YWx1ZSBvZiB0aGUKKyAgYGBvZmZzZXRgYCBhcyBmb2xsb3dzLiAgSWYgKm9mZnNldCogaXMgYGB0aW1lZGVsdGEoMClgYCwgdGhlIG5hbWUKKyAgaXMgIlVUQyIsIG90aGVyd2lzZSBpdCBpcyBhIHN0cmluZyAnVVRDwrFISDpNTScsIHdoZXJlIMKxIGlzIHRoZSBzaWduCisgIG9mIGBgb2Zmc2V0YGAsIEhIIGFuZCBNTSBhcmUgdHdvIGRpZ2l0cyBvZiBgYG9mZnNldC5ob3Vyc2BgIGFuZAogICBgYG9mZnNldC5taW51dGVzYGAgcmVzcGVjdGl2ZWx5LgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIE5hbWUgZ2VuZXJhdGVkIGZyb20gYGBvZmZzZXQ9dGltZWRlbHRhKDApYGAgaXMgbm93IHBsYWluICdVVEMnLCBub3QKKyAgICAgJ1VUQyswMDowMCcuCisKKwogLi4gbWV0aG9kOjogdGltZXpvbmUuZHN0KGR0KQogCiAgIEFsd2F5cyByZXR1cm5zIGBgTm9uZWBgLgpAQCAtMTkxMSw2ICsyMDYxLDM0IEBACiB8IGBgJSVgYCAgICB8IEEgbGl0ZXJhbCBgYCclJ2BgIGNoYXJhY3Rlci4gICB8ICUgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICB8CiArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0rCiAKK1NldmVyYWwgYWRkaXRpb25hbCBkaXJlY3RpdmVzIG5vdCByZXF1aXJlZCBieSB0aGUgQzg5IHN0YW5kYXJkIGFyZSBpbmNsdWRlZCBmb3IKK2NvbnZlbmllbmNlLiBUaGVzZSBwYXJhbWV0ZXJzIGFsbCBjb3JyZXNwb25kIHRvIElTTyA4NjAxIGRhdGUgdmFsdWVzLiBUaGVzZQorbWF5IG5vdCBiZSBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyB3aGVuIHVzZWQgd2l0aCB0aGUgOm1ldGg6YHN0cmZ0aW1lYAorbWV0aG9kLiBUaGUgSVNPIDg2MDEgeWVhciBhbmQgSVNPIDg2MDEgd2VlayBkaXJlY3RpdmVzIGFyZSBub3QgaW50ZXJjaGFuZ2VhYmxlCit3aXRoIHRoZSB5ZWFyIGFuZCB3ZWVrIG51bWJlciBkaXJlY3RpdmVzIGFib3ZlLiBDYWxsaW5nIDptZXRoOmBzdHJwdGltZWAgd2l0aAoraW5jb21wbGV0ZSBvciBhbWJpZ3VvdXMgSVNPIDg2MDEgZGlyZWN0aXZlcyB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgRGlyZWN0aXZlIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhhbXBsZSAgICAgICAgICAgICAgICB8IE5vdGVzIHwKKys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PSsKK3wgYGAlR2BgICAgIHwgSVNPIDg2MDEgeWVhciB3aXRoIGNlbnR1cnkgICAgIHwgMDAwMSwgMDAwMiwgLi4uLCAyMDEzLCB8IFwoOCkgIHwKK3wgICAgICAgICAgIHwgcmVwcmVzZW50aW5nIHRoZSB5ZWFyIHRoYXQgICAgIHwgMjAxNCwgLi4uLCA5OTk4LCA5OTk5ICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgY29udGFpbnMgdGhlIGdyZWF0ZXIgcGFydCBvZiAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgdGhlIElTTyB3ZWVrIChgYCVWYGApLiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAldWBgICAgIHwgSVNPIDg2MDEgd2Vla2RheSBhcyBhIGRlY2ltYWwgIHwgMSwgMiwgLi4uLCA3ICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIHdoZXJlIDEgaXMgTW9uZGF5LiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKK3wgYGAlVmBgICAgIHwgSVNPIDg2MDEgd2VlayBhcyBhIGRlY2ltYWwgICAgIHwgMDEsIDAyLCAuLi4sIDUzICAgICAgICB8IFwoOCkgIHwKK3wgICAgICAgICAgIHwgbnVtYmVyIHdpdGggTW9uZGF5IGFzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgdGhlIGZpcnN0IGRheSBvZiB0aGUgd2Vlay4gICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgV2VlayAwMSBpcyB0aGUgd2VlayBjb250YWluaW5nIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKK3wgICAgICAgICAgIHwgSmFuIDQuICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgIHwKKystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSsKKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICBgYCVHYGAsIGBgJXVgYCBhbmQgYGAlVmBgIHdlcmUgYWRkZWQuCisKIE5vdGVzOgogCiAoMSkKQEAgLTE5NzUsNyArMjE1MywxNCBAQAogCiAoNykKICAgIFdoZW4gdXNlZCB3aXRoIHRoZSA6bWV0aDpgc3RycHRpbWVgIG1ldGhvZCwgYGAlVWBgIGFuZCBgYCVXYGAgYXJlIG9ubHkgdXNlZAotICAgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlIGRheSBvZiB0aGUgd2VlayBhbmQgdGhlIHllYXIgYXJlIHNwZWNpZmllZC4KKyAgIGluIGNhbGN1bGF0aW9ucyB3aGVuIHRoZSBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSBjYWxlbmRhciB5ZWFyIChgYCVZYGApCisgICBhcmUgc3BlY2lmaWVkLgorCisoOCkKKyAgIFNpbWlsYXIgdG8gYGAlVWBgIGFuZCBgYCVXYGAsIGBgJVZgYCBpcyBvbmx5IHVzZWQgaW4gY2FsY3VsYXRpb25zIHdoZW4gdGhlCisgICBkYXkgb2YgdGhlIHdlZWsgYW5kIHRoZSBJU08geWVhciAoYGAlR2BgKSBhcmUgc3BlY2lmaWVkIGluIGEKKyAgIDptZXRoOmBzdHJwdGltZWAgZm9ybWF0IHN0cmluZy4gQWxzbyBub3RlIHRoYXQgYGAlR2BgIGFuZCBgYCVZYGAgYXJlIG5vdAorICAgaW50ZXJjaGFuZ2VhYmxlLgogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGJtLnJzdCBiL0RvYy9saWJyYXJ5L2RibS5yc3QKaW5kZXggMmExZGI5MS4uMzJlODBiMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGJtLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kYm0ucnN0CkBAIC0zNTEsNiArMzUxLDEwIEBACiAgICAgICA6ZnVuYzpgLm9wZW5gIGFsd2F5cyBjcmVhdGVzIGEgbmV3IGRhdGFiYXNlIHdoZW4gdGhlIGZsYWcgaGFzIHRoZSB2YWx1ZQogICAgICAgYGAnbidgYC4KIAorICAgLi4gZGVwcmVjYXRlZC1yZW1vdmVkOjogMy42IDMuOAorICAgICAgQ3JlYXRpbmcgZGF0YWJhc2UgaW4gYGAncidgYCBhbmQgYGAndydgYCBtb2Rlcy4gIE1vZGlmeWluZyBkYXRhYmFzZSBpbgorICAgICAgYGAncidgYCBtb2RlLgorCiAgICBJbiBhZGRpdGlvbiB0byB0aGUgbWV0aG9kcyBwcm92aWRlZCBieSB0aGUKICAgIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLk11dGFibGVNYXBwaW5nYCBjbGFzcywgOmNsYXNzOmBkdW1iZGJtYCBvYmplY3RzCiAgICBwcm92aWRlIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2RlY2ltYWwucnN0IGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKaW5kZXggYjVjZTBiMS4uZTk4NGVkYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZGVjaW1hbC5yc3QKQEAgLTM0NSw3ICszNDUsNyBAQAogICAgKnZhbHVlKiBjYW4gYmUgYW4gaW50ZWdlciwgc3RyaW5nLCB0dXBsZSwgOmNsYXNzOmBmbG9hdGAsIG9yIGFub3RoZXIgOmNsYXNzOmBEZWNpbWFsYAogICAgb2JqZWN0LiBJZiBubyAqdmFsdWUqIGlzIGdpdmVuLCByZXR1cm5zIGBgRGVjaW1hbCgnMCcpYGAuICBJZiAqdmFsdWUqIGlzIGEKICAgIHN0cmluZywgaXQgc2hvdWxkIGNvbmZvcm0gdG8gdGhlIGRlY2ltYWwgbnVtZXJpYyBzdHJpbmcgc3ludGF4IGFmdGVyIGxlYWRpbmcKLSAgIGFuZCB0cmFpbGluZyB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgYXJlIHJlbW92ZWQ6OgorICAgYW5kIHRyYWlsaW5nIHdoaXRlc3BhY2UgY2hhcmFjdGVycywgYXMgd2VsbCBhcyB1bmRlcnNjb3JlcyB0aHJvdWdob3V0LCBhcmUgcmVtb3ZlZDo6CiAKICAgICAgIHNpZ24gICAgICAgICAgIDo6PSAgJysnIHwgJy0nCiAgICAgICBkaWdpdCAgICAgICAgICA6Oj0gICcwJyB8ICcxJyB8ICcyJyB8ICczJyB8ICc0JyB8ICc1JyB8ICc2JyB8ICc3JyB8ICc4JyB8ICc5JwpAQCAtMzk0LDYgKzM5NCwxMCBAQAogICAgICAgOmNsYXNzOmBmbG9hdGAgYXJndW1lbnRzIHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgOmV4YzpgRmxvYXRPcGVyYXRpb25gCiAgICAgICB0cmFwIGlzIHNldC4gQnkgZGVmYXVsdCB0aGUgdHJhcCBpcyBvZmYuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbmRlcnNjb3JlcyBhcmUgYWxsb3dlZCBmb3IgZ3JvdXBpbmcsIGFzIHdpdGggaW50ZWdyYWwgYW5kIGZsb2F0aW5nLXBvaW50CisgICAgICBsaXRlcmFscyBpbiBjb2RlLgorCiAgICBEZWNpbWFsIGZsb2F0aW5nIHBvaW50IG9iamVjdHMgc2hhcmUgbWFueSBwcm9wZXJ0aWVzIHdpdGggdGhlIG90aGVyIGJ1aWx0LWluCiAgICBudW1lcmljIHR5cGVzIHN1Y2ggYXMgOmNsYXNzOmBmbG9hdGAgYW5kIDpjbGFzczpgaW50YC4gIEFsbCBvZiB0aGUgdXN1YWwgbWF0aAogICAgb3BlcmF0aW9ucyBhbmQgc3BlY2lhbCBtZXRob2RzIGFwcGx5LiAgTGlrZXdpc2UsIGRlY2ltYWwgb2JqZWN0cyBjYW4gYmUKQEAgLTQ0Nyw2ICs0NTEsMTkgQEAKICAgICAgIGBgRGVjaW1hbCgnMzIxZSs1JykuYWRqdXN0ZWQoKWBgIHJldHVybnMgc2V2ZW4uICBVc2VkIGZvciBkZXRlcm1pbmluZyB0aGUKICAgICAgIHBvc2l0aW9uIG9mIHRoZSBtb3N0IHNpZ25pZmljYW50IGRpZ2l0IHdpdGggcmVzcGVjdCB0byB0aGUgZGVjaW1hbCBwb2ludC4KIAorICAgLi4gbWV0aG9kOjogYXNfaW50ZWdlcl9yYXRpbygpCisKKyAgICAgIFJldHVybiBhIHBhaXIgYGAobiwgZClgYCBvZiBpbnRlZ2VycyB0aGF0IHJlcHJlc2VudCB0aGUgZ2l2ZW4KKyAgICAgIDpjbGFzczpgRGVjaW1hbGAgaW5zdGFuY2UgYXMgYSBmcmFjdGlvbiwgaW4gbG93ZXN0IHRlcm1zIGFuZAorICAgICAgd2l0aCBhIHBvc2l0aXZlIGRlbm9taW5hdG9yOjoKKworICAgICAgICAgID4+PiBEZWNpbWFsKCctMy4xNCcpLmFzX2ludGVnZXJfcmF0aW8oKQorICAgICAgICAgICgtMTU3LCA1MCkKKworICAgICAgVGhlIGNvbnZlcnNpb24gaXMgZXhhY3QuICBSYWlzZSBPdmVyZmxvd0Vycm9yIG9uIGluZmluaXRpZXMgYW5kIFZhbHVlRXJyb3IKKyAgICAgIG9uIE5hTnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAgICAuLiBtZXRob2Q6OiBhc190dXBsZSgpCiAKQEAgLTEwNjIsOCArMTA3OSw4IEBACiAgICAgICAgICBEZWNpbWFsKCc0LjQ0JykKIAogICAgICAgVGhpcyBtZXRob2QgaW1wbGVtZW50cyB0aGUgdG8tbnVtYmVyIG9wZXJhdGlvbiBvZiB0aGUgSUJNIHNwZWNpZmljYXRpb24uCi0gICAgICBJZiB0aGUgYXJndW1lbnQgaXMgYSBzdHJpbmcsIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgd2hpdGVzcGFjZSBpcwotICAgICAgcGVybWl0dGVkLgorICAgICAgSWYgdGhlIGFyZ3VtZW50IGlzIGEgc3RyaW5nLCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHdoaXRlc3BhY2Ugb3IKKyAgICAgIHVuZGVyc2NvcmVzIGFyZSBwZXJtaXR0ZWQuCiAKICAgIC4uIG1ldGhvZDo6IGNyZWF0ZV9kZWNpbWFsX2Zyb21fZmxvYXQoZikKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZGlzLnJzdCBiL0RvYy9saWJyYXJ5L2Rpcy5yc3QKaW5kZXggZDJkOGFjNy4uMjU3YmNkNyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZGlzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9kaXMucnN0CkBAIC0zMSw5ICszMSw5IEBACiAKICAgID4+PiBkaXMuZGlzKG15ZnVuYykKICAgICAgMiAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAobGVuKQotICAgICAgICAgICAgICAgICAzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhbGlzdCkKLSAgICAgICAgICAgICAgICAgNiBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQotICAgICAgICAgICAgICAgICA5IFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhbGlzdCkKKyAgICAgICAgICAgICAgICAgNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgICAgICA2IFJFVFVSTl9WQUxVRQogCiAoVGhlICIyIiBpcyBhIGxpbmUgbnVtYmVyKS4KIApAQCAtNjA3LDYgKzYwNywxNCBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorLi4gb3Bjb2RlOjogU0VUVVBfQU5OT1RBVElPTlMKKworICAgQ2hlY2tzIHdoZXRoZXIgYGBfX2Fubm90YXRpb25zX19gYCBpcyBkZWZpbmVkIGluIGBgbG9jYWxzKClgYCwgaWYgbm90IGl0IGlzCisgICBzZXQgdXAgdG8gYW4gZW1wdHkgYGBkaWN0YGAuIFRoaXMgb3Bjb2RlIGlzIG9ubHkgZW1pdHRlZCBpZiBhIGNsYXNzCisgICBvciBtb2R1bGUgYm9keSBjb250YWlucyA6dGVybTpgdmFyaWFibGUgYW5ub3RhdGlvbnMgPHZhcmlhYmxlIGFubm90YXRpb24+YAorICAgc3RhdGljYWxseS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CiAKIC4uIG9wY29kZTo6IElNUE9SVF9TVEFSCiAKQEAgLTY4Miw4ICs2OTAsNyBAQAogICAgLi4gWFhYIGV4cGxhaW4gdGhlIFdIWSBzdHVmZiEKIAogCi1BbGwgb2YgdGhlIGZvbGxvd2luZyBvcGNvZGVzIGV4cGVjdCBhcmd1bWVudHMuICBBbiBhcmd1bWVudCBpcyB0d28gYnl0ZXMsIHdpdGgKLXRoZSBtb3JlIHNpZ25pZmljYW50IGJ5dGUgbGFzdC4KK0FsbCBvZiB0aGUgZm9sbG93aW5nIG9wY29kZXMgdXNlIHRoZWlyIGFyZ3VtZW50cy4KIAogLi4gb3Bjb2RlOjogU1RPUkVfTkFNRSAobmFtZWkpCiAKQEAgLTc2OSw2ICs3NzYsMjMgQEAKICAgIHRvIGhvbGQgKmNvdW50KiBlbnRyaWVzLgogCiAKKy4uIG9wY29kZTo6IEJVSUxEX0NPTlNUX0tFWV9NQVAgKGNvdW50KQorCisgICBUaGUgdmVyc2lvbiBvZiA6b3Bjb2RlOmBCVUlMRF9NQVBgIHNwZWNpYWxpemVkIGZvciBjb25zdGFudCBrZXlzLiAgKmNvdW50KgorICAgdmFsdWVzIGFyZSBjb25zdW1lZCBmcm9tIHRoZSBzdGFjay4gIFRoZSB0b3AgZWxlbWVudCBvbiB0aGUgc3RhY2sgY29udGFpbnMKKyAgIGEgdHVwbGUgb2Yga2V5cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gb3Bjb2RlOjogQlVJTERfU1RSSU5HIChjb3VudCkKKworICAgQ29uY2F0ZW5hdGVzICpjb3VudCogc3RyaW5ncyBmcm9tIHRoZSBzdGFjayBhbmQgcHVzaGVzIHRoZSByZXN1bHRpbmcgc3RyaW5nCisgICBvbnRvIHRoZSBzdGFjay4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogTE9BRF9BVFRSIChuYW1laSkKIAogICAgUmVwbGFjZXMgVE9TIHdpdGggYGBnZXRhdHRyKFRPUywgY29fbmFtZXNbbmFtZWldKWBgLgpAQCAtODc0LDYgKzg5OCwxMyBAQAogICAgRGVsZXRlcyBsb2NhbCBgYGNvX3Zhcm5hbWVzW3Zhcl9udW1dYGAuCiAKIAorLi4gb3Bjb2RlOjogU1RPUkVfQU5OT1RBVElPTiAobmFtZWkpCisKKyAgIFN0b3JlcyBUT1MgYXMgYGBsb2NhbHMoKVsnX19hbm5vdGF0aW9uc19fJ11bY29fbmFtZXNbbmFtZWldXSA9IFRPU2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBvcGNvZGU6OiBMT0FEX0NMT1NVUkUgKGkpCiAKICAgIFB1c2hlcyBhIHJlZmVyZW5jZSB0byB0aGUgY2VsbCBjb250YWluZWQgaW4gc2xvdCAqaSogb2YgdGhlIGNlbGwgYW5kIGZyZWUKQEAgLTkyOSwyNyArOTYwLDE2IEBACiAuLiBvcGNvZGU6OiBNQUtFX0ZVTkNUSU9OIChhcmdjKQogCiAgICBQdXNoZXMgYSBuZXcgZnVuY3Rpb24gb2JqZWN0IG9uIHRoZSBzdGFjay4gIEZyb20gYm90dG9tIHRvIHRvcCwgdGhlIGNvbnN1bWVkCi0gICBzdGFjayBtdXN0IGNvbnNpc3Qgb2YKKyAgIHN0YWNrIG11c3QgY29uc2lzdCBvZiB2YWx1ZXMgaWYgdGhlIGFyZ3VtZW50IGNhcnJpZXMgYSBzcGVjaWZpZWQgZmxhZyB2YWx1ZQogCi0gICAqIGBgYXJnYyAmIDB4RkZgYCBkZWZhdWx0IGFyZ3VtZW50IG9iamVjdHMgaW4gcG9zaXRpb25hbCBvcmRlcgotICAgKiBgYChhcmdjID4+IDgpICYgMHhGRmBgIHBhaXJzIG9mIG5hbWUgYW5kIGRlZmF1bHQgYXJndW1lbnQsIHdpdGggdGhlIG5hbWUKLSAgICAganVzdCBiZWxvdyB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjaywgZm9yIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzCi0gICAqIGBgKGFyZ2MgPj4gMTYpICYgMHg3RkZGYGAgcGFyYW1ldGVyIGFubm90YXRpb24gb2JqZWN0cwotICAgKiBhIHR1cGxlIGxpc3RpbmcgdGhlIHBhcmFtZXRlciBuYW1lcyBmb3IgdGhlIGFubm90YXRpb25zIChvbmx5IGlmIHRoZXJlIGFyZQotICAgICBvbnkgYW5ub3RhdGlvbiBvYmplY3RzKQorICAgKiBgYDB4MDFgYCBhIHR1cGxlIG9mIGRlZmF1bHQgYXJndW1lbnQgb2JqZWN0cyBpbiBwb3NpdGlvbmFsIG9yZGVyCisgICAqIGBgMHgwMmBgIGEgZGljdGlvbmFyeSBvZiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycycgZGVmYXVsdCB2YWx1ZXMKKyAgICogYGAweDA0YGAgYW4gYW5ub3RhdGlvbiBkaWN0aW9uYXJ5CisgICAqIGBgMHgwOGBgIGEgdHVwbGUgY29udGFpbmluZyBjZWxscyBmb3IgZnJlZSB2YXJpYWJsZXMsIG1ha2luZyBhIGNsb3N1cmUKICAgICogdGhlIGNvZGUgYXNzb2NpYXRlZCB3aXRoIHRoZSBmdW5jdGlvbiAoYXQgVE9TMSkKICAgICogdGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uIChhdCBUT1MpCiAKIAotLi4gb3Bjb2RlOjogTUFLRV9DTE9TVVJFIChhcmdjKQotCi0gICBDcmVhdGVzIGEgbmV3IGZ1bmN0aW9uIG9iamVjdCwgc2V0cyBpdHMgKl9fY2xvc3VyZV9fKiBzbG90LCBhbmQgcHVzaGVzIGl0IG9uCi0gICB0aGUgc3RhY2suICBUT1MgaXMgdGhlIDp0ZXJtOmBxdWFsaWZpZWQgbmFtZWAgb2YgdGhlIGZ1bmN0aW9uLCBUT1MxIGlzIHRoZQotICAgY29kZSBhc3NvY2lhdGVkIHdpdGggdGhlIGZ1bmN0aW9uLCBhbmQgVE9TMiBpcyB0aGUgdHVwbGUgY29udGFpbmluZyBjZWxscyBmb3IKLSAgIHRoZSBjbG9zdXJlJ3MgZnJlZSB2YXJpYWJsZXMuICAqYXJnYyogaXMgaW50ZXJwcmV0ZWQgYXMgaW4gYGBNQUtFX0ZVTkNUSU9OYGA7Ci0gICB0aGUgYW5ub3RhdGlvbnMgYW5kIGRlZmF1bHRzIGFyZSBhbHNvIGluIHRoZSBzYW1lIG9yZGVyIGJlbG93IFRPUzIuCi0KLQogLi4gb3Bjb2RlOjogQlVJTERfU0xJQ0UgKGFyZ2MpCiAKICAgIC4uIGluZGV4OjogYnVpbHRpbjogc2xpY2UKQEAgLTk4OSw2ICsxMDA5LDI4IEBACiAgICBhcmd1bWVudHMuCiAKIAorLi4gb3Bjb2RlOjogRk9STUFUX1ZBTFVFIChmbGFncykKKworICAgVXNlZCBmb3IgaW1wbGVtZW50aW5nIGZvcm1hdHRlZCBsaXRlcmFsIHN0cmluZ3MgKGYtc3RyaW5ncykuICBQb3BzCisgICBhbiBvcHRpb25hbCAqZm10X3NwZWMqIGZyb20gdGhlIHN0YWNrLCB0aGVuIGEgcmVxdWlyZWQgKnZhbHVlKi4KKyAgICpmbGFncyogaXMgaW50ZXJwcmV0ZWQgYXMgZm9sbG93czoKKworICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDBgYDogKnZhbHVlKiBpcyBmb3JtYXR0ZWQgYXMtaXMuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMWBgOiBjYWxsIDpmdW5jOmBzdHJgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwMykgPT0gMHgwMmBgOiBjYWxsIDpmdW5jOmByZXByYCBvbiAqdmFsdWUqIGJlZm9yZQorICAgICBmb3JtYXR0aW5nIGl0LgorICAgKiBgYChmbGFncyAmIDB4MDMpID09IDB4MDNgYDogY2FsbCA6ZnVuYzpgYXNjaWlgIG9uICp2YWx1ZSogYmVmb3JlCisgICAgIGZvcm1hdHRpbmcgaXQuCisgICAqIGBgKGZsYWdzICYgMHgwNCkgPT0gMHgwNGBgOiBwb3AgKmZtdF9zcGVjKiBmcm9tIHRoZSBzdGFjayBhbmQgdXNlCisgICAgIGl0LCBlbHNlIHVzZSBhbiBlbXB0eSAqZm10X3NwZWMqLgorCisgICBGb3JtYXR0aW5nIGlzIHBlcmZvcm1lZCB1c2luZyA6YzpmdW5jOmBQeU9iamVjdF9Gb3JtYXRgLiAgVGhlCisgICByZXN1bHQgaXMgcHVzaGVkIG9uIHRoZSBzdGFjay4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogLi4gb3Bjb2RlOjogSEFWRV9BUkdVTUVOVAogCiAgICBUaGlzIGlzIG5vdCByZWFsbHkgYW4gb3Bjb2RlLiAgSXQgaWRlbnRpZmllcyB0aGUgZGl2aWRpbmcgbGluZSBiZXR3ZWVuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC1leGFtcGxlcy5yc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkOTNiNWMuLjAwMDAwMDAKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwtZXhhbXBsZXMucnN0CisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotLi4gX2VtYWlsLWV4YW1wbGVzOgotCi06bW9kOmBlbWFpbGA6IEV4YW1wbGVzCi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLUhlcmUgYXJlIGEgZmV3IGV4YW1wbGVzIG9mIGhvdyB0byB1c2UgdGhlIDptb2Q6YGVtYWlsYCBwYWNrYWdlIHRvIHJlYWQsIHdyaXRlLAotYW5kIHNlbmQgc2ltcGxlIGVtYWlsIG1lc3NhZ2VzLCBhcyB3ZWxsIGFzIG1vcmUgY29tcGxleCBNSU1FIG1lc3NhZ2VzLgotCi1GaXJzdCwgbGV0J3Mgc2VlIGhvdyB0byBjcmVhdGUgYW5kIHNlbmQgYSBzaW1wbGUgdGV4dCBtZXNzYWdlOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXNpbXBsZS5weQotCi0KLUFuZCBwYXJzaW5nIFJGQzgyMiBoZWFkZXJzIGNhbiBlYXNpbHkgYmUgZG9uZSBieSB0aGUgcGFyc2UoZmlsZW5hbWUpIG9yCi1wYXJzZXN0cihtZXNzYWdlX2FzX3N0cmluZykgbWV0aG9kcyBvZiB0aGUgUGFyc2VyKCkgY2xhc3M6Ci0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtaGVhZGVycy5weQotCi0KLUhlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIGEgTUlNRSBtZXNzYWdlIGNvbnRhaW5pbmcgYSBidW5jaCBvZiBmYW1pbHkKLXBpY3R1cmVzIHRoYXQgbWF5IGJlIHJlc2lkaW5nIGluIGEgZGlyZWN0b3J5OgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLW1pbWUucHkKLQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gc2VuZCB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIGEgZGlyZWN0b3J5IGFzIGFuIGVtYWlsCi1tZXNzYWdlOiBbMV1fCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtZGlyLnB5Ci0KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHVucGFjayBhIE1JTUUgbWVzc2FnZSBsaWtlIHRoZSBvbmUKLWFib3ZlLCBpbnRvIGEgZGlyZWN0b3J5IG9mIGZpbGVzOgotCi0uLiBsaXRlcmFsaW5jbHVkZTo6IC4uL2luY2x1ZGVzL2VtYWlsLXVucGFjay5weQotCi1IZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gY3JlYXRlIGFuIEhUTUwgbWVzc2FnZSB3aXRoIGFuIGFsdGVybmF0aXZlIHBsYWluCi10ZXh0IHZlcnNpb246IFsyXV8KLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1hbHRlcm5hdGl2ZS5weQotCi0KLS4uIF9lbWFpbC1jb250ZW50bWFuYWdlci1hcGktZXhhbXBsZXM6Ci0KLUV4YW1wbGVzIHVzaW5nIHRoZSBQcm92aXNpb25hbCBBUEkKLX5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KLUhlcmUgaXMgYSByZXdvcmtpbmcgb2YgdGhlIGxhc3QgZXhhbXBsZSB1c2luZyB0aGUgcHJvdmlzaW9uYWwgQVBJLiAgVG8gbWFrZQotdGhpbmdzIGEgYml0IG1vcmUgaW50ZXJlc3RpbmcsIHdlIGluY2x1ZGUgYSByZWxhdGVkIGltYWdlIGluIHRoZSBodG1sIHBhcnQsIGFuZAotd2Ugc2F2ZSBhIGNvcHkgb2Ygd2hhdCB3ZSBhcmUgZ29pbmcgdG8gc2VuZCB0byBkaXNrLCBhcyB3ZWxsIGFzIHNlbmRpbmcgaXQuCi0KLVRoaXMgZXhhbXBsZSBhbHNvIHNob3dzIGhvdyBlYXN5IGl0IGlzIHRvIGluY2x1ZGUgbm9uLUFTQ0lJLCBhbmQgc2ltcGxpZmllcyB0aGUKLXNlbmRpbmcgb2YgdGhlIG1lc3NhZ2UgdXNpbmcgdGhlIDptZXRoOmAuc2VuZF9tZXNzYWdlYCBtZXRob2Qgb2YgdGhlCi06bW9kOmBzbXRwbGliYCBtb2R1bGUuCi0KLS4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUtbmV3LWFwaS5weQotCi1JZiB3ZSB3ZXJlIGluc3RlYWQgc2VudCB0aGUgbWVzc2FnZSBmcm9tIHRoZSBsYXN0IGV4YW1wbGUsIGhlcmUgaXMgb25lCi13YXkgd2UgY291bGQgcHJvY2VzcyBpdDoKLQotLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1yZWFkLWFsdGVybmF0aXZlLW5ldy1hcGkucHkKLQotVXAgdG8gdGhlIHByb21wdCwgdGhlIG91dHB1dCBmcm9tIHRoZSBhYm92ZSBpczoKLQotLi4gY29kZS1ibG9jazo6IG5vbmUKLQotICAgIFRvOiBQZW5lbG9wZSBQdXNzeWNhdCA8cGVuZWxvcGVAZXhhbXBsZS5jb20+LCBGYWJyZXR0ZSBQdXNzeWNhdCA8ZmFicmV0dGVAZXhhbXBsZS5jb20+Ci0gICAgRnJvbTogUGVww6kgTGUgUGV3IDxwZXBlQGV4YW1wbGUuY29tPgotICAgIFN1YmplY3Q6IEF5b25zIGFzcGVyZ2VzIHBvdXIgbGUgZMOpamV1bmVyCi0KLSAgICBTYWx1dCEKLQotICAgIENlbGEgcmVzc2VtYmxlIMOgIHVuIGV4Y2VsbGVudCByZWNpcGllWzFdIGTDqWpldW5lci4KLQotCi0uLiBydWJyaWM6OiBGb290bm90ZXMKLQotLi4gWzFdIFRoYW5rcyB0byBNYXR0aGV3IERpeG9uIENvd2xlcyBmb3IgdGhlIG9yaWdpbmFsIGluc3BpcmF0aW9uIGFuZCBleGFtcGxlcy4KLS4uIFsyXSBDb250cmlidXRlZCBieSBNYXJ0aW4gTWF0ZWplay4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNoYXJzZXQucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKaW5kZXggMTYxZDg2YS4uMDUzNDYzZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuY2hhcnNldC5yc3QKQEAgLTgsNiArOCwxMSBAQAogCiAtLS0tLS0tLS0tLS0tLQogCitUaGlzIG1vZHVsZSBpcyBwYXJ0IG9mIHRoZSBsZWdhY3kgKGBgQ29tcGF0MzJgYCkgZW1haWwgQVBJLiAgSW4gdGhlIG5ldworQVBJIG9ubHkgdGhlIGFsaWFzZXMgdGFibGUgaXMgdXNlZC4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiBUaGlzIG1vZHVsZSBwcm92aWRlcyBhIGNsYXNzIDpjbGFzczpgQ2hhcnNldGAgZm9yIHJlcHJlc2VudGluZyBjaGFyYWN0ZXIgc2V0cwogYW5kIGNoYXJhY3RlciBzZXQgY29udmVyc2lvbnMgaW4gZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgYSBjaGFyYWN0ZXIgc2V0CiByZWdpc3RyeSBhbmQgc2V2ZXJhbCBjb252ZW5pZW5jZSBtZXRob2RzIGZvciBtYW5pcHVsYXRpbmcgdGhpcyByZWdpc3RyeS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY29tcGF0MzItbWVzc2FnZS5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2NTA3OQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmNvbXBhdDMyLW1lc3NhZ2UucnN0CkBAIC0wLDAgKzEsNzU0IEBACisuLiBfY29tcGF0MzJfbWVzc2FnZToKKworOm1vZDpgZW1haWwubWVzc2FnZS5NZXNzYWdlYDogUmVwcmVzZW50aW5nIGFuIGVtYWlsIG1lc3NhZ2UgdXNpbmcgdGhlIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBBUEkKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIG1vZHVsZTo6IGVtYWlsLm1lc3NhZ2UKKyAgIDpzeW5vcHNpczogVGhlIGJhc2UgY2xhc3MgcmVwcmVzZW50aW5nIGVtYWlsIG1lc3NhZ2VzIGluIGEgZmFzaGlvbgorICAgICAgICAgICAgICBiYWNrd2FyZCBjb21wYXRpYmxlIHdpdGggcHl0aG9uMy4yCisKKworVGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3MgaXMgdmVyeSBzaW1pbGFyIHRvIHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLCB3aXRob3V0IHRoZSBtZXRob2RzIGFkZGVkIGJ5IHRoYXQKK2NsYXNzLCBhbmQgd2l0aCB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiBjZXJ0YWluIG90aGVyIG1ldGhvZHMgYmVpbmcgc2xpZ2h0bHkKK2RpZmZlcmVudC4gIFdlIGFsc28gZG9jdW1lbnQgaGVyZSBzb21lIG1ldGhvZHMgdGhhdCwgd2hpbGUgc3VwcG9ydGVkIGJ5IHRoZQorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzLCBhcmUgbm90IHJlY29tbWVuZGVkIHVubGVzcyB5b3UgYXJlCitkZWFsaW5nIHdpdGggbGVnYWN5IGNvZGUuCisKK1RoZSBwaGlsb3NvcGh5IGFuZCBzdHJ1Y3R1cmUgb2YgdGhlIHR3byBjbGFzc2VzIGlzIG90aGVyd2lzZSB0aGUgc2FtZS4KKworVGhpcyBkb2N1bWVudCBkZXNjcmliZXMgdGhlIGJlaGF2aW9yIHVuZGVyIHRoZSBkZWZhdWx0IChmb3IgOmNsYXNzOmBNZXNzYWdlYCkKK3BvbGljeSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Db21wYXQzMmAuICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSBhbm90aGVyIHBvbGljeSwKK3lvdSBzaG91bGQgYmUgdXNpbmcgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpbnN0ZWFkLgorCitBbiBlbWFpbCBtZXNzYWdlIGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgYSAqcGF5bG9hZCouICBIZWFkZXJzIG11c3QgYmUKKzpyZmM6YDUyMzNgIHN0eWxlIG5hbWVzIGFuZCB2YWx1ZXMsIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBhcmUKK3NlcGFyYXRlZCBieSBhIGNvbG9uLiAgVGhlIGNvbG9uIGlzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciB0aGUKK2ZpZWxkIHZhbHVlLiAgVGhlIHBheWxvYWQgbWF5IGJlIGEgc2ltcGxlIHRleHQgbWVzc2FnZSwgb3IgYSBiaW5hcnkgb2JqZWN0LCBvcgorYSBzdHJ1Y3R1cmVkIHNlcXVlbmNlIG9mIHN1Yi1tZXNzYWdlcyBlYWNoIHdpdGggdGhlaXIgb3duIHNldCBvZiBoZWFkZXJzIGFuZAordGhlaXIgb3duIHBheWxvYWQuICBUaGUgbGF0dGVyIHR5cGUgb2YgcGF5bG9hZCBpcyBpbmRpY2F0ZWQgYnkgdGhlIG1lc3NhZ2UKK2hhdmluZyBhIE1JTUUgdHlwZSBzdWNoIGFzIDptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBvcgorOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuCisKK1RoZSBjb25jZXB0dWFsIG1vZGVsIHByb3ZpZGVkIGJ5IGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QgaXMgdGhhdCBvZiBhbgorb3JkZXJlZCBkaWN0aW9uYXJ5IG9mIGhlYWRlcnMgd2l0aCBhZGRpdGlvbmFsIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBib3RoCitzcGVjaWFsaXplZCBpbmZvcm1hdGlvbiBmcm9tIHRoZSBoZWFkZXJzLCBmb3IgYWNjZXNzaW5nIHRoZSBwYXlsb2FkLCBmb3IKK2dlbmVyYXRpbmcgYSBzZXJpYWxpemVkIHZlcnNpb24gb2YgdGhlIG1zc2FnZSwgYW5kIGZvciByZWN1cnNpdmVseSB3YWxraW5nIG92ZXIKK3RoZSBvYmplY3QgdHJlZS4gIE5vdGUgdGhhdCBkdXBsaWNhdGUgaGVhZGVycyBhcmUgc3VwcG9ydGVkIGJ1dCBzcGVjaWFsIG1ldGhvZHMKK211c3QgYmUgdXNlZCB0byBhY2Nlc3MgdGhlbS4KKworVGhlIDpjbGFzczpgTWVzc2FnZWAgcHN1ZWRvLWRpY3Rpb25hcnkgaXMgaW5kZXhlZCBieSB0aGUgaGVhZGVyIG5hbWVzLCB3aGljaAorbXVzdCBiZSBBU0NJSSB2YWx1ZXMuICBUaGUgdmFsdWVzIG9mIHRoZSBkaWN0aW9uYXJ5IGFyZSBzdHJpbmdzIHRoYXQgYXJlCitzdXBwb3NlZCB0byBjb250YWluIG9ubHkgQVNDSUkgY2hhcmFjdGVyczsgdGhlcmUgaXMgc29tZSBzcGVjaWFsIGhhbmRsaW5nIGZvcgorbm9uLUFTQ0lJIGlucHV0LCBidXQgaXQgZG9lc24ndCBhbHdheXMgcHJvZHVjZSB0aGUgY29ycmVjdCByZXN1bHRzLiAgSGVhZGVycworYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nIGZvcm0sIGJ1dCBmaWVsZCBuYW1lcyBhcmUgbWF0Y2hlZAorY2FzZS1pbnNlbnNpdGl2ZWx5LiAgVGhlcmUgbWF5IGFsc28gYmUgYSBzaW5nbGUgZW52ZWxvcGUgaGVhZGVyLCBhbHNvIGtub3duIGFzCit0aGUgKlVuaXgtRnJvbSogaGVhZGVyIG9yIHRoZSBgYEZyb21fYGAgaGVhZGVyLiAgVGhlICpwYXlsb2FkKiBpcyBlaXRoZXIgYQorc3RyaW5nIG9yIGJ5dGVzLCBpbiB0aGUgY2FzZSBvZiBzaW1wbGUgbWVzc2FnZSBvYmplY3RzLCBvciBhIGxpc3Qgb2YKKzpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cywgZm9yIE1JTUUgY29udGFpbmVyIGRvY3VtZW50cyAoZS5nLgorOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIGFuZCA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkuCisKK0hlcmUgYXJlIHRoZSBtZXRob2RzIG9mIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGNsYXNzOgorCisKKy4uIGNsYXNzOjogTWVzc2FnZShwb2xpY3k9Y29tcGF0MzIpCisKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCisgICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIGFuZCBzZXJpYWxpemUgdGhlIHJlcHJlc2VudGF0aW9uCisgICBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgorICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAorICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKKyAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIFRoZSAqcG9saWN5KiBrZXl3b3JkIGFyZ3VtZW50IHdhcyBhZGRlZC4KKworCisgICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wLCBwb2xpY3k9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBzdHJpbmcuICBXaGVuIG9wdGlvbmFsICp1bml4ZnJvbSoKKyAgICAgIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkIHN0cmluZy4KKyAgICAgICp1bml4ZnJvbSogZGVmYXVsdHMgdG8gYGBGYWxzZWBgLiAgRm9yIGJhY2t3YXJkIGNvbXBhYml0aWxpdHkgcmVhc29ucywKKyAgICAgICptYXhoZWFkZXJsZW4qIGRlZmF1bHRzIHRvIGBgMGBgLCBzbyBpZiB5b3Ugd2FudCBhIGRpZmZlcmVudCB2YWx1ZSB5b3UKKyAgICAgIG11c3Qgb3ZlcnJpZGUgaXQgZXhwbGljaXRseSAodGhlIHZhbHVlIHNwZWNpZmllZCBmb3IgKm1heF9saW5lX2xlbmd0aCogaW4KKyAgICAgIHRoZSBwb2xpY3kgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoaXMgbWV0aG9kKS4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKKyAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCisgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKKyAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUgYGBHZW5lcmF0b3JgYC4KKworICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCisgICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKKyAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKKyAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcworICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcworICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKKyAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvci5mbGF0dGVuYCBtZXRob2QgZGlyZWN0bHkuICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgR2VuZXJhdG9yCisgICAgICAgICBmcCA9IFN0cmluZ0lPKCkKKyAgICAgICAgIGcgPSBHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCisgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKKworICAgICAgSWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGNvbnRhaW5zIGJpbmFyeSBkYXRhIHRoYXQgaXMgbm90IGVuY29kZWQgYWNjb3JkaW5nCisgICAgICB0byBSRkMgc3RhbmRhcmRzLCB0aGUgbm9uLWNvbXBsaWFudCBkYXRhIHdpbGwgYmUgcmVwbGFjZWQgYnkgdW5pY29kZQorICAgICAgInVua25vd24gY2hhcmFjdGVyIiBjb2RlIHBvaW50cy4gIChTZWUgYWxzbyA6bWV0aDpgLmFzX2J5dGVzYCBhbmQKKyAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAuKQorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCB0aGUgKnBvbGljeSoga2V5d29yZCBhcmd1bWVudCB3YXMgYWRkZWQuCisKKworICAgLi4gbWV0aG9kOjogX19zdHJfXygpCisKKyAgICAgIEVxdWl2YWxlbnQgdG8gOm1ldGg6YC5hc19zdHJpbmcoKWAuICBBbGxvd3MgYGBzdHIobXNnKWBgIHRvIHByb2R1Y2UgYQorICAgICAgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorCisKKyAgIC4uIG1ldGhvZDo6IGFzX2J5dGVzKHVuaXhmcm9tPUZhbHNlLCBwb2xpY3k9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSBlbnRpcmUgbWVzc2FnZSBmbGF0dGVuZWQgYXMgYSBieXRlcyBvYmplY3QuICBXaGVuIG9wdGlvbmFsCisgICAgICAqdW5peGZyb20qIGlzIHRydWUsIHRoZSBlbnZlbG9wZSBoZWFkZXIgaXMgaW5jbHVkZWQgaW4gdGhlIHJldHVybmVkCisgICAgICBzdHJpbmcuICAqdW5peGZyb20qIGRlZmF1bHRzIHRvIGBgRmFsc2VgYC4gIFRoZSAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUKKyAgICAgIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgcG9saWN5IG9idGFpbmVkIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuCisgICAgICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUgZm9ybWF0dGluZyBwcm9kdWNlZCBieSB0aGUKKyAgICAgIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlIHBhc3NlZCB0byB0aGUKKyAgICAgIGBgQnl0ZXNHZW5lcmF0b3JgYC4KKworICAgICAgRmxhdHRlbmluZyB0aGUgbWVzc2FnZSBtYXkgdHJpZ2dlciBjaGFuZ2VzIHRvIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlmCisgICAgICBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYSBzdHJpbmcKKyAgICAgIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgorCisgICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgaXMgcHJvdmlkZWQgYXMgYSBjb252ZW5pZW5jZSBhbmQgbWF5IG5vdCBhbHdheXMKKyAgICAgIGZvcm1hdCB0aGUgbWVzc2FnZSB0aGUgd2F5IHlvdSB3YW50LiAgRm9yIGV4YW1wbGUsIGJ5IGRlZmF1bHQgaXQgZG9lcworICAgICAgbm90IGRvIHRoZSBtYW5nbGluZyBvZiBsaW5lcyB0aGF0IGJlZ2luIHdpdGggYGBGcm9tYGAgdGhhdCBpcworICAgICAgcmVxdWlyZWQgYnkgdGhlIHVuaXggbWJveCBmb3JtYXQuICBGb3IgbW9yZSBmbGV4aWJpbGl0eSwgaW5zdGFudGlhdGUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSBhbmQgdXNlIGl0cworICAgICAgOm1ldGg6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LgorICAgICAgRm9yIGV4YW1wbGU6OgorCisgICAgICAgICBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCisgICAgICAgICBmcm9tIGVtYWlsLmdlbmVyYXRvciBpbXBvcnQgQnl0ZXNHZW5lcmF0b3IKKyAgICAgICAgIGZwID0gQnl0ZXNJTygpCisgICAgICAgICBnID0gQnl0ZXNHZW5lcmF0b3IoZnAsIG1hbmdsZV9mcm9tXz1UcnVlLCBtYXhoZWFkZXJsZW49NjApCisgICAgICAgICBnLmZsYXR0ZW4obXNnKQorICAgICAgICAgdGV4dCA9IGZwLmdldHZhbHVlKCkKKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CisKKworICAgLi4gbWV0aG9kOjogX19ieXRlc19fKCkKKworICAgICAgRXF1aXZhbGVudCB0byA6bWV0aDpgLmFzX2J5dGVzKClgLiAgQWxsb3dzIGBgYnl0ZXMobXNnKWBgIHRvIHByb2R1Y2UgYQorICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGZvcm1hdHRlZCBtZXNzYWdlLgorCisgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKKworCisgICAuLiBtZXRob2Q6OiBpc19tdWx0aXBhcnQoKQorCisgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGlzIGEgbGlzdCBvZiBzdWItXAorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBGYWxzZWBgLCB0aGUgcGF5bG9hZCBzaG91bGQgYmUgYSBzdHJpbmcKKyAgICAgIG9iamVjdCAod2hpY2ggbWlnaHQgYmUgYSBDVEUgZW5jb2RlZCBiaW5hcnkgcGF5bG9hZC4gIChOb3RlIHRoYXQKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQKKyAgICAgICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbCByZXR1cm4gdGhlIGBgVHJ1ZWBgLgorICAgICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAgd2hlbiB0aGUKKyAgICAgIDpjbGFzczpgTWVzc2FnZWAgaXMgb2YgdHlwZSBgYG1lc3NhZ2UvcmZjODIyYGAuKQorCisKKyAgIC4uIG1ldGhvZDo6IHNldF91bml4ZnJvbSh1bml4ZnJvbSkKKworICAgICAgU2V0IHRoZSBtZXNzYWdlJ3MgZW52ZWxvcGUgaGVhZGVyIHRvICp1bml4ZnJvbSosIHdoaWNoIHNob3VsZCBiZSBhIHN0cmluZy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfdW5peGZyb20oKQorCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIuICBEZWZhdWx0cyB0byBgYE5vbmVgYCBpZiB0aGUKKyAgICAgIGVudmVsb3BlIGhlYWRlciB3YXMgbmV2ZXIgc2V0LgorCisKKyAgIC4uIG1ldGhvZDo6IGF0dGFjaChwYXlsb2FkKQorCisgICAgICBBZGQgdGhlIGdpdmVuICpwYXlsb2FkKiB0byB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCBtdXN0IGJlIGBgTm9uZWBgIG9yCisgICAgICBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGJlZm9yZSB0aGUgY2FsbC4gQWZ0ZXIgdGhlIGNhbGwsIHRoZQorICAgICAgcGF5bG9hZCB3aWxsIGFsd2F5cyBiZSBhIGxpc3Qgb2YgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLiAgSWYgeW91IHdhbnQgdG8KKyAgICAgIHNldCB0aGUgcGF5bG9hZCB0byBhIHNjYWxhciBvYmplY3QgKGUuZy4gYSBzdHJpbmcpLCB1c2UKKyAgICAgIDptZXRoOmBzZXRfcGF5bG9hZGAgaW5zdGVhZC4KKworICAgICAgVGhpcyBpcyBhIGxlZ2FjeSBtZXRob2QuICBPbiB0aGUKKyAgICAgIDpjbGFzczpgfmVtYWlsLmVtYWlsbWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNsYXNzIGl0cyBmdW5jdGlvbmFsaXR5IGlzCisgICAgICByZXBsYWNlZCBieSA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9jb250ZW50YCBhbmQgdGhlCisgICAgICByZWFsdGVkIGBgbWFrZWBgIGFuZCBgYGFkZGBgIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X3BheWxvYWQoaT1Ob25lLCBkZWNvZGU9RmFsc2UpCisKKyAgICAgIFJldHVybiB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCB3aWxsIGJlIGEgbGlzdCBvZgorICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBUcnVlYGAsIG9yIGEKKyAgICAgIHN0cmluZyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYC4gIElmIHRoZSBwYXlsb2FkIGlzIGEgbGlzdAorICAgICAgYW5kIHlvdSBtdXRhdGUgdGhlIGxpc3Qgb2JqZWN0LCB5b3UgbW9kaWZ5IHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpbiBwbGFjZS4KKworICAgICAgV2l0aCBvcHRpb25hbCBhcmd1bWVudCAqaSosIDptZXRoOmBnZXRfcGF5bG9hZGAgd2lsbCByZXR1cm4gdGhlICppKi10aAorICAgICAgZWxlbWVudCBvZiB0aGUgcGF5bG9hZCwgY291bnRpbmcgZnJvbSB6ZXJvLCBpZiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcworICAgICAgYGBUcnVlYGAuICBBbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMgbGVzcyB0aGFuIDAgb3IKKyAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBwYXlsb2FkLiAgSWYgdGhlCisgICAgICBwYXlsb2FkIGlzIGEgc3RyaW5nIChpLmUuICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGApIGFuZCAqaSogaXMKKyAgICAgIGdpdmVuLCBhIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgorCisgICAgICBPcHRpb25hbCAqZGVjb2RlKiBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXlsb2FkIHNob3VsZCBiZQorICAgICAgZGVjb2RlZCBvciBub3QsIGFjY29yZGluZyB0byB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCisgICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAorICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCisgICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAorICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZSBwYXlsb2FkIGlzCisgICAgICByZXR1cm5lZCBhcy1pcyAodW5kZWNvZGVkKS4gIEluIGFsbCBjYXNlcyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYmluYXJ5CisgICAgICBkYXRhLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBtdWx0aXBhcnQgYW5kIHRoZSAqZGVjb2RlKiBmbGFnIGlzIGBgVHJ1ZWBgLAorICAgICAgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIElmIHRoZSBwYXlsb2FkIGlzIGJhc2U2NCBhbmQgaXQgd2FzIG5vdAorICAgICAgcGVyZmVjdGx5IGZvcm1lZCAobWlzc2luZyBwYWRkaW5nLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NAorICAgICAgYWxwaGFiZXQpLCB0aGVuIGFuIGFwcHJvcHJpYXRlIGRlZmVjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlJ3MKKyAgICAgIGRlZmVjdCBwcm9wZXJ0eSAoOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0YCBvcgorICAgICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0YCwgcmVzcGVjdGl2ZWx5KS4KKworICAgICAgV2hlbiAqZGVjb2RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgYm9keSBpcyByZXR1cm5lZCBhcyBhIHN0cmluZworICAgICAgd2l0aG91dCBkZWNvZGluZyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgSG93ZXZlciwKKyAgICAgIGZvciBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LCBhbiBhdHRlbXB0IGlzIG1hZGUKKyAgICAgIHRvIGRlY29kZSB0aGUgb3JpZ2luYWwgYnl0ZXMgdXNpbmcgdGhlIGBgY2hhcnNldGBgIHNwZWNpZmllZCBieSB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgdXNpbmcgdGhlIGBgcmVwbGFjZWBgIGVycm9yIGhhbmRsZXIuCisgICAgICBJZiBubyBgYGNoYXJzZXRgYCBpcyBzcGVjaWZpZWQsIG9yIGlmIHRoZSBgYGNoYXJzZXRgYCBnaXZlbiBpcyBub3QKKyAgICAgIHJlY29nbml6ZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHRoZSBib2R5IGlzIGRlY29kZWQgdXNpbmcgdGhlIGRlZmF1bHQKKyAgICAgIEFTQ0lJIGNoYXJzZXQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5nZXRfY29udGVudGAgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLml0ZXJfcGFydHNgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9wYXlsb2FkKHBheWxvYWQsIGNoYXJzZXQ9Tm9uZSkKKworICAgICAgU2V0IHRoZSBlbnRpcmUgbWVzc2FnZSBvYmplY3QncyBwYXlsb2FkIHRvICpwYXlsb2FkKi4gIEl0IGlzIHRoZSBjbGllbnQncworICAgICAgcmVzcG9uc2liaWxpdHkgdG8gZW5zdXJlIHRoZSBwYXlsb2FkIGludmFyaWFudHMuICBPcHRpb25hbCAqY2hhcnNldCogc2V0cworICAgICAgdGhlIG1lc3NhZ2UncyBkZWZhdWx0IGNoYXJhY3RlciBzZXQ7IHNlZSA6bWV0aDpgc2V0X2NoYXJzZXRgIGZvciBkZXRhaWxzLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9jaGFyc2V0KGNoYXJzZXQpCisKKyAgICAgIFNldCB0aGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgcGF5bG9hZCB0byAqY2hhcnNldCosIHdoaWNoIGNhbiBlaXRoZXIgYmUgYQorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSAoc2VlIDptb2Q6YGVtYWlsLmNoYXJzZXRgKSwgYQorICAgICAgc3RyaW5nIG5hbWluZyBhIGNoYXJhY3RlciBzZXQsIG9yIGBgTm9uZWBgLiAgSWYgaXQgaXMgYSBzdHJpbmcsIGl0IHdpbGwKKyAgICAgIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuICBJZiAqY2hhcnNldCoKKyAgICAgIGlzIGBgTm9uZWBgLCB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZQorICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyICh0aGUgbWVzc2FnZSB3aWxsIG5vdCBiZSBvdGhlcndpc2UKKyAgICAgIG1vZGlmaWVkKS4gIEFueXRoaW5nIGVsc2Ugd2lsbCBnZW5lcmF0ZSBhIDpleGM6YFR5cGVFcnJvcmAuCisKKyAgICAgIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciBvbmUgd2lsbCBiZQorICAgICAgYWRkZWQuICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9uZQorICAgICAgd2lsbCBiZSBhZGRlZCB3aXRoIGEgdmFsdWUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4gIFdoZXRoZXIgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYWxyZWFkeSBleGlzdHMgb3Igbm90LCBpdHMgYGBjaGFyc2V0YGAKKyAgICAgIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCouICAgSWYKKyAgICAgICpjaGFyc2V0LmlucHV0X2NoYXJzZXQqIGFuZCAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCogZGlmZmVyLCB0aGUgcGF5bG9hZAorICAgICAgd2lsbCBiZSByZS1lbmNvZGVkIHRvIHRoZSAqb3V0cHV0X2NoYXJzZXQqLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIsIHRoZW4gdGhlIHBheWxvYWQgd2lsbCBiZQorICAgICAgdHJhbnNmZXItZW5jb2RlZCwgaWYgbmVlZGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCisgICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgLCBhbmQgYSBoZWFkZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUKKyAgICAgIHdpbGwgYmUgYWRkZWQuICBJZiBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIKKyAgICAgIGFscmVhZHkgZXhpc3RzLCB0aGUgcGF5bG9hZCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgY29ycmVjdGx5IGVuY29kZWQKKyAgICAgIHVzaW5nIHRoYXQgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGFuZCBpcyBub3QgbW9kaWZpZWQuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpjaGFyc2V0KiBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWV0aDpgZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgbWV0aG9kLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0KCkKKworICAgICAgUmV0dXJuIHRoZSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgICAgIG1lc3NhZ2UncyBwYXlsb2FkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXQgYWx3YXlzIHJldHVybnMKKyAgICAgIGBgTm9uZWBgLgorCisKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgYSBtYXBwaW5nLWxpa2UgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgdGhlCisgICBtZXNzYWdlJ3MgOnJmYzpgMjgyMmAgaGVhZGVycy4gIE5vdGUgdGhhdCB0aGVyZSBhcmUgc29tZSBzZW1hbnRpYyBkaWZmZXJlbmNlcworICAgYmV0d2VlbiB0aGVzZSBtZXRob2RzIGFuZCBhIG5vcm1hbCBtYXBwaW5nIChpLmUuIGRpY3Rpb25hcnkpIGludGVyZmFjZS4gIEZvcgorICAgZXhhbXBsZSwgaW4gYSBkaWN0aW9uYXJ5IHRoZXJlIGFyZSBubyBkdXBsaWNhdGUga2V5cywgYnV0IGhlcmUgdGhlcmUgbWF5IGJlCisgICBkdXBsaWNhdGUgbWVzc2FnZSBoZWFkZXJzLiAgQWxzbywgaW4gZGljdGlvbmFyaWVzIHRoZXJlIGlzIG5vIGd1YXJhbnRlZWQKKyAgIG9yZGVyIHRvIHRoZSBrZXlzIHJldHVybmVkIGJ5IDptZXRoOmBrZXlzYCwgYnV0IGluIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QsCisgICBoZWFkZXJzIGFyZSBhbHdheXMgcmV0dXJuZWQgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyZWQgaW4gdGhlIG9yaWdpbmFsCisgICBtZXNzYWdlLCBvciB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55IGhlYWRlciBkZWxldGVkIGFuZCB0aGVuCisgICByZS1hZGRlZCBhcmUgYWx3YXlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIGhlYWRlciBsaXN0LgorCisgICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkIG1heGltYWwKKyAgIGNvbnZlbmllbmNlLgorCisgICBOb3RlIHRoYXQgaW4gYWxsIGNhc2VzLCBhbnkgZW52ZWxvcGUgaGVhZGVyIHByZXNlbnQgaW4gdGhlIG1lc3NhZ2UgaXMgbm90CisgICBpbmNsdWRlZCBpbiB0aGUgbWFwcGluZyBpbnRlcmZhY2UuCisKKyAgIEluIGEgbW9kZWwgZ2VuZXJhdGVkIGZyb20gYnl0ZXMsIGFueSBoZWFkZXIgdmFsdWVzIHRoYXQgKGluIGNvbnRyYXZlbnRpb24gb2YKKyAgIHRoZSBSRkNzKSBjb250YWluIG5vbi1BU0NJSSBieXRlcyB3aWxsLCB3aGVuIHJldHJpZXZlZCB0aHJvdWdoIHRoaXMKKyAgIGludGVyZmFjZSwgYmUgcmVwcmVzZW50ZWQgYXMgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgb2JqZWN0cyB3aXRoCisgICBhIGNoYXJzZXQgb2YgYHVua25vd24tOGJpdGAuCisKKworICAgLi4gbWV0aG9kOjogX19sZW5fXygpCisKKyAgICAgIFJldHVybiB0aGUgdG90YWwgbnVtYmVyIG9mIGhlYWRlcnMsIGluY2x1ZGluZyBkdXBsaWNhdGVzLgorCisKKyAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyhuYW1lKQorCisgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIGEgZmllbGQgbmFtZWQgKm5hbWUqLiBNYXRjaGluZyBpcworICAgICAgZG9uZSBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nIGNvbG9uLgorICAgICAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvciwgZS5nLjo6CisKKyAgICAgICAgICAgaWYgJ21lc3NhZ2UtaWQnIGluIG15TWVzc2FnZToKKyAgICAgICAgICAgICAgcHJpbnQoJ01lc3NhZ2UtSUQ6JywgbXlNZXNzYWdlWydtZXNzYWdlLWlkJ10pCisKKworICAgLi4gbWV0aG9kOjogX19nZXRpdGVtX18obmFtZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUKKyAgICAgIGNvbG9uIGZpZWxkIHNlcGFyYXRvci4gIElmIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgYGBOb25lYGAgaXMgcmV0dXJuZWQ7IGEKKyAgICAgIDpleGM6YEtleUVycm9yYCBpcyBuZXZlciByYWlzZWQuCisKKyAgICAgIE5vdGUgdGhhdCBpZiB0aGUgbmFtZWQgZmllbGQgYXBwZWFycyBtb3JlIHRoYW4gb25jZSBpbiB0aGUgbWVzc2FnZSdzCisgICAgICBoZWFkZXJzLCBleGFjdGx5IHdoaWNoIG9mIHRob3NlIGZpZWxkIHZhbHVlcyB3aWxsIGJlIHJldHVybmVkIGlzCisgICAgICB1bmRlZmluZWQuICBVc2UgdGhlIDptZXRoOmBnZXRfYWxsYCBtZXRob2QgdG8gZ2V0IHRoZSB2YWx1ZXMgb2YgYWxsIHRoZQorICAgICAgZXh0YW50IG5hbWVkIGhlYWRlcnMuCisKKworICAgLi4gbWV0aG9kOjogX19zZXRpdGVtX18obmFtZSwgdmFsKQorCisgICAgICBBZGQgYSBoZWFkZXIgdG8gdGhlIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiBhbmQgdmFsdWUgKnZhbCouICBUaGUKKyAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBmaWVsZHMuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIGRvZXMgKm5vdCogb3ZlcndyaXRlIG9yIGRlbGV0ZSBhbnkgZXhpc3RpbmcgaGVhZGVyIHdpdGggdGhlIHNhbWUKKyAgICAgIG5hbWUuICBJZiB5b3Ugd2FudCB0byBlbnN1cmUgdGhhdCB0aGUgbmV3IGhlYWRlciBpcyB0aGUgb25seSBvbmUgcHJlc2VudCBpbiB0aGUKKyAgICAgIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiwgZGVsZXRlIHRoZSBmaWVsZCBmaXJzdCwgZS5nLjo6CisKKyAgICAgICAgIGRlbCBtc2dbJ3N1YmplY3QnXQorICAgICAgICAgbXNnWydzdWJqZWN0J10gPSAnUHl0aG9uIHJvb2x6IScKKworCisgICAuLiBtZXRob2Q6OiBfX2RlbGl0ZW1fXyhuYW1lKQorCisgICAgICBEZWxldGUgYWxsIG9jY3VycmVuY2VzIG9mIHRoZSBmaWVsZCB3aXRoIG5hbWUgKm5hbWUqIGZyb20gdGhlIG1lc3NhZ2UncworICAgICAgaGVhZGVycy4gIE5vIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlIG5hbWVkIGZpZWxkIGlzbid0IHByZXNlbnQgaW4gdGhlCisgICAgICBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGtleXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbWVzc2FnZSdzIGhlYWRlciBmaWVsZCBuYW1lcy4KKworCisgICAuLiBtZXRob2Q6OiB2YWx1ZXMoKQorCisgICAgICBSZXR1cm4gYSBsaXN0IG9mIGFsbCB0aGUgbWVzc2FnZSdzIGZpZWxkIHZhbHVlcy4KKworCisgICAuLiBtZXRob2Q6OiBpdGVtcygpCisKKyAgICAgIFJldHVybiBhIGxpc3Qgb2YgMi10dXBsZXMgY29udGFpbmluZyBhbGwgdGhlIG1lc3NhZ2UncyBmaWVsZCBoZWFkZXJzIGFuZAorICAgICAgdmFsdWVzLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldChuYW1lLCBmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gIFRoaXMgaXMgaWRlbnRpY2FsIHRvCisgICAgICA6bWV0aDpgX19nZXRpdGVtX19gIGV4Y2VwdCB0aGF0IG9wdGlvbmFsICpmYWlsb2JqKiBpcyByZXR1cm5lZCBpZiB0aGUKKyAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nIChkZWZhdWx0cyB0byBgYE5vbmVgYCkuCisKKyAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgbWV0aG9kczoKKworCisgICAuLiBtZXRob2Q6OiBnZXRfYWxsKG5hbWUsIGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIGEgbGlzdCBvZiBhbGwgdGhlIHZhbHVlcyBmb3IgdGhlIGZpZWxkIG5hbWVkICpuYW1lKi4gSWYgdGhlcmUgYXJlCisgICAgICBubyBzdWNoIG5hbWVkIGhlYWRlcnMgaW4gdGhlIG1lc3NhZ2UsICpmYWlsb2JqKiBpcyByZXR1cm5lZCAoZGVmYXVsdHMgdG8KKyAgICAgIGBgTm9uZWBgKS4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfaGVhZGVyKF9uYW1lLCBfdmFsdWUsICoqX3BhcmFtcykKKworICAgICAgRXh0ZW5kZWQgaGVhZGVyIHNldHRpbmcuICBUaGlzIG1ldGhvZCBpcyBzaW1pbGFyIHRvIDptZXRoOmBfX3NldGl0ZW1fX2AKKyAgICAgIGV4Y2VwdCB0aGF0IGFkZGl0aW9uYWwgaGVhZGVyIHBhcmFtZXRlcnMgY2FuIGJlIHByb3ZpZGVkIGFzIGtleXdvcmQKKyAgICAgIGFyZ3VtZW50cy4gICpfbmFtZSogaXMgdGhlIGhlYWRlciBmaWVsZCB0byBhZGQgYW5kICpfdmFsdWUqIGlzIHRoZQorICAgICAgKnByaW1hcnkqIHZhbHVlIGZvciB0aGUgaGVhZGVyLgorCisgICAgICBGb3IgZWFjaCBpdGVtIGluIHRoZSBrZXl3b3JkIGFyZ3VtZW50IGRpY3Rpb25hcnkgKl9wYXJhbXMqLCB0aGUga2V5IGlzCisgICAgICB0YWtlbiBhcyB0aGUgcGFyYW1ldGVyIG5hbWUsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGRhc2hlcyAoc2luY2UKKyAgICAgIGRhc2hlcyBhcmUgaWxsZWdhbCBpbiBQeXRob24gaWRlbnRpZmllcnMpLiAgTm9ybWFsbHksIHRoZSBwYXJhbWV0ZXIgd2lsbAorICAgICAgYmUgYWRkZWQgYXMgYGBrZXk9InZhbHVlImBgIHVubGVzcyB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKKyAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLiAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAorICAgICAgaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHRocmVlIHR1cGxlIGluIHRoZSBmb3JtYXQKKyAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcgbmFtaW5nIHRoZQorICAgICAgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4gdXN1YWxseSBiZSBzZXQKKyAgICAgIHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIgcG9zc2liaWxpdGllcyksCisgICAgICBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkgY29kZSBwb2ludHMuICBJZgorICAgICAgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCisgICAgICBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0IHVzaW5nIGEgYGBDSEFSU0VUYGAKKyAgICAgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisKKyAgICAgIEhlcmUncyBhbiBleGFtcGxlOjoKKworICAgICAgICAgbXNnLmFkZF9oZWFkZXIoJ0NvbnRlbnQtRGlzcG9zaXRpb24nLCAnYXR0YWNobWVudCcsIGZpbGVuYW1lPSdidWQuZ2lmJykKKworICAgICAgVGhpcyB3aWxsIGFkZCBhIGhlYWRlciB0aGF0IGxvb2tzIGxpa2UgOjoKKworICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWU9ImJ1ZC5naWYiCisKKyAgICAgIEFuIGV4YW1wbGUgd2l0aCBub24tQVNDSUkgY2hhcmFjdGVyczo6CisKKyAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9KCdpc28tODg1OS0xJywgJycsICdGdcOfYmFsbGVyLnBwdCcpKQorCisgICAgICBXaGljaCBwcm9kdWNlcyA6OgorCisgICAgICAgICBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50OyBmaWxlbmFtZSo9Imlzby04ODU5LTEnJ0Z1JURGYmFsbGVyLnBwdCIKKworCisgICAuLiBtZXRob2Q6OiByZXBsYWNlX2hlYWRlcihfbmFtZSwgX3ZhbHVlKQorCisgICAgICBSZXBsYWNlIGEgaGVhZGVyLiAgUmVwbGFjZSB0aGUgZmlyc3QgaGVhZGVyIGZvdW5kIGluIHRoZSBtZXNzYWdlIHRoYXQKKyAgICAgIG1hdGNoZXMgKl9uYW1lKiwgcmV0YWluaW5nIGhlYWRlciBvcmRlciBhbmQgZmllbGQgbmFtZSBjYXNlLiAgSWYgbm8KKyAgICAgIG1hdGNoaW5nIGhlYWRlciB3YXMgZm91bmQsIGEgOmV4YzpgS2V5RXJyb3JgIGlzIHJhaXNlZC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF90eXBlKCkKKworICAgICAgUmV0dXJuIHRoZSBtZXNzYWdlJ3MgY29udGVudCB0eXBlLiAgVGhlIHJldHVybmVkIHN0cmluZyBpcyBjb2VyY2VkIHRvCisgICAgICBsb3dlciBjYXNlIG9mIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAuICBJZiB0aGVyZSB3YXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpbiB0aGUgbWVzc2FnZSB0aGUgZGVmYXVsdCB0eXBlIGFzIGdpdmVuCisgICAgICBieSA6bWV0aDpgZ2V0X2RlZmF1bHRfdHlwZWAgd2lsbCBiZSByZXR1cm5lZC4gIFNpbmNlIGFjY29yZGluZyB0bworICAgICAgOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLCA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAKKyAgICAgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLgorCisgICAgICA6cmZjOmAyMDQ1YCBkZWZpbmVzIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gCisgICAgICB1bmxlc3MgaXQgYXBwZWFycyBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4KKyAgICAgIHdoaWNoIGNhc2UgaXQgd291bGQgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sCisgICAgICA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0IHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9tYWludHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIG1haW4gY29udGVudCB0eXBlLiAgVGhpcyBpcyB0aGUgOm1pbWV0eXBlOmBtYWludHlwZWAKKyAgICAgIHBhcnQgb2YgdGhlIHN0cmluZyByZXR1cm5lZCBieSA6bWV0aDpgZ2V0X2NvbnRlbnRfdHlwZWAuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfc3VidHlwZSgpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIHN1Yi1jb250ZW50IHR5cGUuICBUaGlzIGlzIHRoZSA6bWltZXR5cGU6YHN1YnR5cGVgCisgICAgICBwYXJ0IG9mIHRoZSBzdHJpbmcgcmV0dXJuZWQgYnkgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9kZWZhdWx0X3R5cGUoKQorCisgICAgICBSZXR1cm4gdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgTW9zdCBtZXNzYWdlcyBoYXZlIGEgZGVmYXVsdCBjb250ZW50CisgICAgICB0eXBlIG9mIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAsIGV4Y2VwdCBmb3IgbWVzc2FnZXMgdGhhdCBhcmUgc3VicGFydHMgb2YKKyAgICAgIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVycy4gIFN1Y2ggc3VicGFydHMgaGF2ZSBhIGRlZmF1bHQKKyAgICAgIGNvbnRlbnQgdHlwZSBvZiA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KKworCisgICAuLiBtZXRob2Q6OiBzZXRfZGVmYXVsdF90eXBlKGN0eXBlKQorCisgICAgICBTZXQgdGhlIGRlZmF1bHQgY29udGVudCB0eXBlLiAgKmN0eXBlKiBzaG91bGQgZWl0aGVyIGJlCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzIG5vdAorICAgICAgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGFyYW1zKGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCisKKyAgICAgIFJldHVybiB0aGUgbWVzc2FnZSdzIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIHBhcmFtZXRlcnMsIGFzIGEgbGlzdC4KKyAgICAgIFRoZSBlbGVtZW50cyBvZiB0aGUgcmV0dXJuZWQgbGlzdCBhcmUgMi10dXBsZXMgb2Yga2V5L3ZhbHVlIHBhaXJzLCBhcworICAgICAgc3BsaXQgb24gdGhlIGBgJz0nYGAgc2lnbi4gIFRoZSBsZWZ0IGhhbmQgc2lkZSBvZiB0aGUgYGAnPSdgYCBpcyB0aGUga2V5LAorICAgICAgd2hpbGUgdGhlIHJpZ2h0IGhhbmQgc2lkZSBpcyB0aGUgdmFsdWUuICBJZiB0aGVyZSBpcyBubyBgYCc9J2BgIHNpZ24gaW4KKyAgICAgIHRoZSBwYXJhbWV0ZXIgdGhlIHZhbHVlIGlzIHRoZSBlbXB0eSBzdHJpbmcsIG90aGVyd2lzZSB0aGUgdmFsdWUgaXMgYXMKKyAgICAgIGRlc2NyaWJlZCBpbiA6bWV0aDpgZ2V0X3BhcmFtYCBhbmQgaXMgdW5xdW90ZWQgaWYgb3B0aW9uYWwgKnVucXVvdGUqIGlzCisgICAgICBgYFRydWVgYCAodGhlIGRlZmF1bHQpLgorCisgICAgICBPcHRpb25hbCAqZmFpbG9iaiogaXMgdGhlIG9iamVjdCB0byByZXR1cm4gaWYgdGhlcmUgaXMgbm8KKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4gIE9wdGlvbmFsICpoZWFkZXIqIGlzIHRoZSBoZWFkZXIgdG8KKyAgICAgIHNlYXJjaCBpbnN0ZWFkIG9mIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSAqcGFyYW1zKiBwcm9wZXJ0eSBvZiB0aGUgaW5kaXZpZHVhbCBoZWFkZXIgb2JqZWN0cworICAgICAgcmV0dXJuZWQgYnkgdGhlIGhlYWRlciBhY2Nlc3MgbWV0aG9kcy4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfcGFyYW0ocGFyYW0sIGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcidzIHBhcmFtZXRlcgorICAgICAgKnBhcmFtKiBhcyBhIHN0cmluZy4gIElmIHRoZSBtZXNzYWdlIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAorICAgICAgaGVhZGVyIG9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZAorICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlciogaWYgZ2l2ZW4sIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBoZWFkZXIgdG8gdXNlIGluc3RlYWQgb2YKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisgICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4gdmFsdWUKKyAgICAgIGNhbiBlaXRoZXIgYmUgYSBzdHJpbmcsIG9yIGEgMy10dXBsZSBpZiB0aGUgcGFyYW1ldGVyIHdhcyA6cmZjOmAyMjMxYAorICAgICAgZW5jb2RlZC4gIFdoZW4gaXQncyBhIDMtdHVwbGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIG9mIHRoZSBmb3JtCisgICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAuICBOb3RlIHRoYXQgYm90aCBgYENIQVJTRVRgYCBhbmQKKyAgICAgIGBgTEFOR1VBR0VgYCBjYW4gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBgYFZBTFVFYGAKKyAgICAgIHRvIGJlIGVuY29kZWQgaW4gdGhlIGBgdXMtYXNjaWlgYCBjaGFyc2V0LiAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZQorICAgICAgYGBMQU5HVUFHRWBgLgorCisgICAgICBJZiB5b3VyIGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSB3aGV0aGVyIHRoZSBwYXJhbWV0ZXIgd2FzIGVuY29kZWQgYXMgaW4KKyAgICAgIDpyZmM6YDIyMzFgLCB5b3UgY2FuIGNvbGxhcHNlIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYnkgY2FsbGluZworICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWVgLCBwYXNzaW5nIGluIHRoZSByZXR1cm4gdmFsdWUKKyAgICAgIGZyb20gOm1ldGg6YGdldF9wYXJhbWAuICBUaGlzIHdpbGwgcmV0dXJuIGEgc3VpdGFibHkgZGVjb2RlZCBVbmljb2RlCisgICAgICBzdHJpbmcgd2hlbiB0aGUgdmFsdWUgaXMgYSB0dXBsZSwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bnF1b3RlZCBpZiBpdAorICAgICAgaXNuJ3QuICBGb3IgZXhhbXBsZTo6CisKKyAgICAgICAgIHJhd3BhcmFtID0gbXNnLmdldF9wYXJhbSgnZm9vJykKKyAgICAgICAgIHBhcmFtID0gZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShyYXdwYXJhbSkKKworICAgICAgSW4gYW55IGNhc2UsIHRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUKKyAgICAgIGBgVkFMVUVgYCBpdGVtIGluIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyAqdW5xdW90ZSogaXMgc2V0CisgICAgICB0byBgYEZhbHNlYGAuCisKKyAgICAgIFRoaXMgaXMgYSBsZWdhY3kgbWV0aG9kLiAgT24gdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5lbWFpbG1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcyBpdHMgZnVuY3Rpb25hbGl0eSBpcworICAgICAgcmVwbGFjZWQgYnkgdGhlICpwYXJhbXMqIHByb3BlcnR5IG9mIHRoZSBpbmRpdmlkdWFsIGhlYWRlciBvYmplY3RzCisgICAgICByZXR1cm5lZCBieSB0aGUgaGVhZGVyIGFjY2VzcyBtZXRob2RzLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9wYXJhbShwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1Ob25lLCBsYW5ndWFnZT0nJywgcmVwbGFjZT1GYWxzZSkKKworICAgICAgU2V0IGEgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZiB0aGUKKyAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCBpdHMgdmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoCisgICAgICAqdmFsdWUqLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcyBub3QgeWV0IGJlZW4gZGVmaW5lZAorICAgICAgZm9yIHRoaXMgbWVzc2FnZSwgaXQgd2lsbCBiZSBzZXQgdG8gOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBhbmQgdGhlIG5ldworICAgICAgcGFyYW1ldGVyIHZhbHVlIHdpbGwgYmUgYXBwZW5kZWQgYXMgcGVyIDpyZmM6YDIwNDVgLgorCisgICAgICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCwgYW5kIGFsbCBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeQorICAgICAgdW5sZXNzIG9wdGlvbmFsICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4KKworICAgICAgSWYgb3B0aW9uYWwgKmNoYXJzZXQqIGlzIHNwZWNpZmllZCwgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGVuY29kZWQKKyAgICAgIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4gT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIFJGQyAyMjMxCisgICAgICBsYW5ndWFnZSwgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKKyAgICAgIHNob3VsZCBiZSBzdHJpbmdzLgorCisgICAgICBJZiAqcmVwbGFjZSogaXMgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCkgdGhlIGhlYWRlciBpcyBtb3ZlZCB0byB0aGUKKyAgICAgIGVuZCBvZiB0aGUgbGlzdCBvZiBoZWFkZXJzLiAgSWYgKnJlcGxhY2UqIGlzIGBgVHJ1ZWBgLCB0aGUgaGVhZGVyCisgICAgICB3aWxsIGJlIHVwZGF0ZWQgaW4gcGxhY2UuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IGBgcmVwbGFjZWBgIGtleXdvcmQgd2FzIGFkZGVkLgorCisKKyAgIC4uIG1ldGhvZDo6IGRlbF9wYXJhbShwYXJhbSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCByZXF1b3RlPVRydWUpCisKKyAgICAgIFJlbW92ZSB0aGUgZ2l2ZW4gcGFyYW1ldGVyIGNvbXBsZXRlbHkgZnJvbSB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlci4gIFRoZSBoZWFkZXIgd2lsbCBiZSByZS13cml0dGVuIGluIHBsYWNlIHdpdGhvdXQgdGhlIHBhcmFtZXRlciBvcgorICAgICAgaXRzIHZhbHVlLiAgQWxsIHZhbHVlcyB3aWxsIGJlIHF1b3RlZCBhcyBuZWNlc3NhcnkgdW5sZXNzICpyZXF1b3RlKiBpcworICAgICAgYGBGYWxzZWBgICh0aGUgZGVmYXVsdCBpcyBgYFRydWVgYCkuICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4KKyAgICAgIGFsdGVybmF0aXZlIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF90eXBlKHR5cGUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlKQorCisgICAgICBTZXQgdGhlIG1haW4gdHlwZSBhbmQgc3VidHlwZSBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIuICp0eXBlKiBtdXN0IGJlIGEgc3RyaW5nIGluIHRoZSBmb3JtIDptaW1ldHlwZTpgbWFpbnR5cGUvc3VidHlwZWAsCisgICAgICBvdGhlcndpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQuCisKKyAgICAgIFRoaXMgbWV0aG9kIHJlcGxhY2VzIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIGtlZXBpbmcgYWxsCisgICAgICB0aGUgcGFyYW1ldGVycyBpbiBwbGFjZS4gIElmICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAsIHRoaXMgbGVhdmVzIHRoZQorICAgICAgZXhpc3RpbmcgaGVhZGVyJ3MgcXVvdGluZyBhcyBpcywgb3RoZXJ3aXNlIHRoZSBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkCisgICAgICAodGhlIGRlZmF1bHQpLgorCisgICAgICBBbiBhbHRlcm5hdGl2ZSBoZWFkZXIgY2FuIGJlIHNwZWNpZmllZCBpbiB0aGUgKmhlYWRlciogYXJndW1lbnQuIFdoZW4gdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgc2V0IGEgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAKKyAgICAgIGhlYWRlciBpcyBhbHNvIGFkZGVkLgorCisgICAgICBUaGlzIGlzIGEgbGVnYWN5IG1ldGhvZC4gIE9uIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZW1haWxtZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXRzIGZ1bmN0aW9uYWxpdHkgaXMKKyAgICAgIHJlcGxhY2VkIGJ5IHRoZSBgYG1ha2VfYGAgYW5kIGBgYWRkX2BgIG1ldGhvZHMuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2ZpbGVuYW1lKGZhaWxvYmo9Tm9uZSkKKworICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgYGBmaWxlbmFtZWBgIHBhcmFtZXRlciBvZiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UuICBJZiB0aGUgaGVhZGVyCisgICAgICBkb2VzIG5vdCBoYXZlIGEgYGBmaWxlbmFtZWBgIHBhcmFtZXRlciwgdGhpcyBtZXRob2QgZmFsbHMgYmFjayB0byBsb29raW5nCisgICAgICBmb3IgdGhlIGBgbmFtZWBgIHBhcmFtZXRlciBvbiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLiAgSWYKKyAgICAgIG5laXRoZXIgaXMgZm91bmQsIG9yIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgdGhlbiAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCisgICAgICBUaGUgcmV0dXJuZWQgc3RyaW5nIHdpbGwgYWx3YXlzIGJlIHVucXVvdGVkIGFzIHBlcgorICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLnVucXVvdGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9ib3VuZGFyeShmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIgb2YgdGhlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgb2YgdGhlIG1lc3NhZ2UsIG9yICpmYWlsb2JqKiBpZiBlaXRoZXIKKyAgICAgIHRoZSBoZWFkZXIgaXMgbWlzc2luZywgb3IgaGFzIG5vIGBgYm91bmRhcnlgYCBwYXJhbWV0ZXIuICBUaGUgcmV0dXJuZWQKKyAgICAgIHN0cmluZyB3aWxsIGFsd2F5cyBiZSB1bnF1b3RlZCBhcyBwZXIgOmZ1bmM6YGVtYWlsLnV0aWxzLnVucXVvdGVgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9ib3VuZGFyeShib3VuZGFyeSkKKworICAgICAgU2V0IHRoZSBgYGJvdW5kYXJ5YGAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgdG8KKyAgICAgICpib3VuZGFyeSouICA6bWV0aDpgc2V0X2JvdW5kYXJ5YCB3aWxsIGFsd2F5cyBxdW90ZSAqYm91bmRhcnkqIGlmCisgICAgICBuZWNlc3NhcnkuICBBIDpleGM6YH5lbWFpbC5lcnJvcnMuSGVhZGVyUGFyc2VFcnJvcmAgaXMgcmFpc2VkIGlmIHRoZQorICAgICAgbWVzc2FnZSBvYmplY3QgaGFzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlci4KKworICAgICAgTm90ZSB0aGF0IHVzaW5nIHRoaXMgbWV0aG9kIGlzIHN1YnRseSBkaWZmZXJlbnQgdGhhbiBkZWxldGluZyB0aGUgb2xkCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYW5kIGFkZGluZyBhIG5ldyBvbmUgd2l0aCB0aGUgbmV3CisgICAgICBib3VuZGFyeSB2aWEgOm1ldGg6YGFkZF9oZWFkZXJgLCBiZWNhdXNlIDptZXRoOmBzZXRfYm91bmRhcnlgIHByZXNlcnZlcworICAgICAgdGhlIG9yZGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaW4gdGhlIGxpc3Qgb2YKKyAgICAgIGhlYWRlcnMuIEhvd2V2ZXIsIGl0IGRvZXMgKm5vdCogcHJlc2VydmUgYW55IGNvbnRpbnVhdGlvbiBsaW5lcyB3aGljaCBtYXkKKyAgICAgIGhhdmUgYmVlbiBwcmVzZW50IGluIHRoZSBvcmlnaW5hbCA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCisKKworICAgLi4gbWV0aG9kOjogZ2V0X2NvbnRlbnRfY2hhcnNldChmYWlsb2JqPU5vbmUpCisKKyAgICAgIFJldHVybiB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIG9mIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsCisgICAgICBjb2VyY2VkIHRvIGxvd2VyIGNhc2UuICBJZiB0aGVyZSBpcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9yIGlmCisgICAgICB0aGF0IGhlYWRlciBoYXMgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCAqZmFpbG9iaiogaXMgcmV0dXJuZWQuCisKKyAgICAgIE5vdGUgdGhhdCB0aGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gOm1ldGg6YGdldF9jaGFyc2V0YCB3aGljaCByZXR1cm5zIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSBmb3IgdGhlIGRlZmF1bHQgZW5jb2Rpbmcgb2YgdGhlIG1lc3NhZ2UgYm9keS4KKworCisgICAuLiBtZXRob2Q6OiBnZXRfY2hhcnNldHMoZmFpbG9iaj1Ob25lKQorCisgICAgICBSZXR1cm4gYSBsaXN0IGNvbnRhaW5pbmcgdGhlIGNoYXJhY3RlciBzZXQgbmFtZXMgaW4gdGhlIG1lc3NhZ2UuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSA6bWltZXR5cGU6YG11bHRpcGFydGAsIHRoZW4gdGhlIGxpc3Qgd2lsbCBjb250YWluIG9uZSBlbGVtZW50CisgICAgICBmb3IgZWFjaCBzdWJwYXJ0IGluIHRoZSBwYXlsb2FkLCBvdGhlcndpc2UsIGl0IHdpbGwgYmUgYSBsaXN0IG9mIGxlbmd0aCAxLgorCisgICAgICBFYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgd2lsbCBiZSBhIHN0cmluZyB3aGljaCBpcyB0aGUgdmFsdWUgb2YgdGhlCisgICAgICBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIgaW4gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBmb3IgdGhlCisgICAgICByZXByZXNlbnRlZCBzdWJwYXJ0LiAgSG93ZXZlciwgaWYgdGhlIHN1YnBhcnQgaGFzIG5vCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgb3IgaXMgbm90IG9mCisgICAgICB0aGUgOm1pbWV0eXBlOmB0ZXh0YCBtYWluIE1JTUUgdHlwZSwgdGhlbiB0aGF0IGl0ZW0gaW4gdGhlIHJldHVybmVkIGxpc3QKKyAgICAgIHdpbGwgYmUgKmZhaWxvYmoqLgorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKKworICAgICAgUmV0dXJuIHRoZSBsb3dlcmNhc2VkIHZhbHVlICh3aXRob3V0IHBhcmFtZXRlcnMpIG9mIHRoZSBtZXNzYWdlJ3MKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIgaWYgaXQgaGFzIG9uZSwgb3IgYGBOb25lYGAuICBUaGUKKyAgICAgIHBvc3NpYmxlIHZhbHVlcyBmb3IgdGhpcyBtZXRob2QgYXJlICppbmxpbmUqLCAqYXR0YWNobWVudCogb3IgYGBOb25lYGAKKyAgICAgIGlmIHRoZSBtZXNzYWdlIGZvbGxvd3MgOnJmYzpgMjE4M2AuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQorCisgICAuLiBtZXRob2Q6OiB3YWxrKCkKKworICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCisgICAgICBpdGVyYXRlIG92ZXIgYWxsIHRoZSBwYXJ0cyBhbmQgc3VicGFydHMgb2YgYSBtZXNzYWdlIG9iamVjdCB0cmVlLCBpbgorICAgICAgZGVwdGgtZmlyc3QgdHJhdmVyc2FsIG9yZGVyLiAgWW91IHdpbGwgdHlwaWNhbGx5IHVzZSA6bWV0aDpgd2Fsa2AgYXMgdGhlCisgICAgICBpdGVyYXRvciBpbiBhIGBgZm9yYGAgbG9vcDsgZWFjaCBpdGVyYXRpb24gcmV0dXJucyB0aGUgbmV4dCBzdWJwYXJ0LgorCisgICAgICBIZXJlJ3MgYW4gZXhhbXBsZSB0aGF0IHByaW50cyB0aGUgTUlNRSB0eXBlIG9mIGV2ZXJ5IHBhcnQgb2YgYSBtdWx0aXBhcnQKKyAgICAgIG1lc3NhZ2Ugc3RydWN0dXJlOgorCisgICAgICAuLiB0ZXN0c2V0dXA6OgorCisgICAgICAgICA+Pj4gZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlCisgICAgICAgICA+Pj4gd2l0aCBvcGVuKCdMaWIvdGVzdC90ZXN0X2VtYWlsL2RhdGEvbXNnXzE2LnR4dCcsICdyYicpIGFzIGY6CisgICAgICAgICAuLi4gICAgIG1zZyA9IG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShmKQorICAgICAgICAgPj4+IGZyb20gZW1haWwuaXRlcmF0b3JzIGltcG9ydCBfc3RydWN0dXJlCisKKyAgICAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICAgICA+Pj4gZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKKyAgICAgICAgIC4uLiAgICAgcHJpbnQocGFydC5nZXRfY29udGVudF90eXBlKCkpCisgICAgICAgICBtdWx0aXBhcnQvcmVwb3J0CisgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cworICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgdGV4dC9wbGFpbgorICAgICAgICAgbWVzc2FnZS9yZmM4MjIKKyAgICAgICAgIHRleHQvcGxhaW4KKworICAgICAgYGB3YWxrYGAgaXRlcmF0ZXMgb3ZlciB0aGUgc3VicGFydHMgb2YgYW55IHBhcnQgd2hlcmUKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBUcnVlYGAsIGV2ZW4gdGhvdWdoCisgICAgICBgYG1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnYGAgbWF5IHJldHVybiBgYEZhbHNlYGAuICBXZQorICAgICAgY2FuIHNlZSB0aGlzIGluIG91ciBleGFtcGxlIGJ5IG1ha2luZyB1c2Ugb2YgdGhlIGBgX3N0cnVjdHVyZWBgIGRlYnVnCisgICAgICBoZWxwZXIgZnVuY3Rpb246CisKKyAgICAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICAgICA+Pj4gZm9yIHBhcnQgaW4gbXNnLndhbGsoKToKKyAgICAgICAgIC4uLiAgICAgcHJpbnQocGFydC5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnKSwKKyAgICAgICAgIC4uLiAgICAgICAgICAgcGFydC5pc19tdWx0aXBhcnQoKSkKKyAgICAgICAgIFRydWUgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgIEZhbHNlIFRydWUKKyAgICAgICAgIEZhbHNlIEZhbHNlCisgICAgICAgICBGYWxzZSBGYWxzZQorICAgICAgICAgRmFsc2UgVHJ1ZQorICAgICAgICAgRmFsc2UgRmFsc2UKKyAgICAgICAgID4+PiBfc3RydWN0dXJlKG1zZykKKyAgICAgICAgIG11bHRpcGFydC9yZXBvcnQKKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL2RlbGl2ZXJ5LXN0YXR1cworICAgICAgICAgICAgIHRleHQvcGxhaW4KKyAgICAgICAgICAgICB0ZXh0L3BsYWluCisgICAgICAgICBtZXNzYWdlL3JmYzgyMgorICAgICAgICAgICAgIHRleHQvcGxhaW4KKworICAgICAgSGVyZSB0aGUgYGBtZXNzYWdlYGAgcGFydHMgYXJlIG5vdCBgYG11bHRpcGFydHNgYCwgYnV0IHRoZXkgZG8gY29udGFpbgorICAgICAgc3VicGFydHMuIGBgaXNfbXVsdGlwYXJ0KClgYCByZXR1cm5zIGBgVHJ1ZWBgIGFuZCBgYHdhbGtgYCBkZXNjZW5kcworICAgICAgaW50byB0aGUgc3VicGFydHMuCisKKworICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGNhbiBhbHNvIG9wdGlvbmFsbHkgY29udGFpbiB0d28gaW5zdGFuY2UgYXR0cmlidXRlcywKKyAgIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgcGxhaW4gdGV4dCBvZiBhIE1JTUUgbWVzc2FnZS4KKworCisgICAuLiBhdHRyaWJ1dGU6OiBwcmVhbWJsZQorCisgICAgICBUaGUgZm9ybWF0IG9mIGEgTUlNRSBkb2N1bWVudCBhbGxvd3MgZm9yIHNvbWUgdGV4dCBiZXR3ZWVuIHRoZSBibGFuayBsaW5lCisgICAgICBmb2xsb3dpbmcgdGhlIGhlYWRlcnMsIGFuZCB0aGUgZmlyc3QgbXVsdGlwYXJ0IGJvdW5kYXJ5IHN0cmluZy4gTm9ybWFsbHksCisgICAgICB0aGlzIHRleHQgaXMgbmV2ZXIgdmlzaWJsZSBpbiBhIE1JTUUtYXdhcmUgbWFpbCByZWFkZXIgYmVjYXVzZSBpdCBmYWxscworICAgICAgb3V0c2lkZSB0aGUgc3RhbmRhcmQgTUlNRSBhcm1vci4gIEhvd2V2ZXIsIHdoZW4gdmlld2luZyB0aGUgcmF3IHRleHQgb2YKKyAgICAgIHRoZSBtZXNzYWdlLCBvciB3aGVuIHZpZXdpbmcgdGhlIG1lc3NhZ2UgaW4gYSBub24tTUlNRSBhd2FyZSByZWFkZXIsIHRoaXMKKyAgICAgIHRleHQgY2FuIGJlY29tZSB2aXNpYmxlLgorCisgICAgICBUaGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUgY29udGFpbnMgdGhpcyBsZWFkaW5nIGV4dHJhLWFybW9yIHRleHQgZm9yIE1JTUUKKyAgICAgIGRvY3VtZW50cy4gIFdoZW4gdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGRpc2NvdmVycyBzb21lIHRleHQKKyAgICAgIGFmdGVyIHRoZSBoZWFkZXJzIGJ1dCBiZWZvcmUgdGhlIGZpcnN0IGJvdW5kYXJ5IHN0cmluZywgaXQgYXNzaWducyB0aGlzCisgICAgICB0ZXh0IHRvIHRoZSBtZXNzYWdlJ3MgKnByZWFtYmxlKiBhdHRyaWJ1dGUuICBXaGVuIHRoZQorICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkdlbmVyYXRvcmAgaXMgd3JpdGluZyBvdXQgdGhlIHBsYWluIHRleHQKKyAgICAgIHJlcHJlc2VudGF0aW9uIG9mIGEgTUlNRSBtZXNzYWdlLCBhbmQgaXQgZmluZHMgdGhlCisgICAgICBtZXNzYWdlIGhhcyBhICpwcmVhbWJsZSogYXR0cmlidXRlLCBpdCB3aWxsIHdyaXRlIHRoaXMgdGV4dCBpbiB0aGUgYXJlYQorICAgICAgYmV0d2VlbiB0aGUgaGVhZGVycyBhbmQgdGhlIGZpcnN0IGJvdW5kYXJ5LiAgU2VlIDptb2Q6YGVtYWlsLnBhcnNlcmAgYW5kCisgICAgICA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIGZvciBkZXRhaWxzLgorCisgICAgICBOb3RlIHRoYXQgaWYgdGhlIG1lc3NhZ2Ugb2JqZWN0IGhhcyBubyBwcmVhbWJsZSwgdGhlICpwcmVhbWJsZSogYXR0cmlidXRlCisgICAgICB3aWxsIGJlIGBgTm9uZWBgLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGVwaWxvZ3VlCisKKyAgICAgIFRoZSAqZXBpbG9ndWUqIGF0dHJpYnV0ZSBhY3RzIHRoZSBzYW1lIHdheSBhcyB0aGUgKnByZWFtYmxlKiBhdHRyaWJ1dGUsCisgICAgICBleGNlcHQgdGhhdCBpdCBjb250YWlucyB0ZXh0IHRoYXQgYXBwZWFycyBiZXR3ZWVuIHRoZSBsYXN0IGJvdW5kYXJ5IGFuZAorICAgICAgdGhlIGVuZCBvZiB0aGUgbWVzc2FnZS4KKworICAgICAgWW91IGRvIG5vdCBuZWVkIHRvIHNldCB0aGUgZXBpbG9ndWUgdG8gdGhlIGVtcHR5IHN0cmluZyBpbiBvcmRlciBmb3IgdGhlCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuR2VuZXJhdG9yYCB0byBwcmludCBhIG5ld2xpbmUgYXQgdGhlIGVuZCBvZiB0aGUKKyAgICAgIGZpbGUuCisKKworICAgLi4gYXR0cmlidXRlOjogZGVmZWN0cworCisgICAgICBUaGUgKmRlZmVjdHMqIGF0dHJpYnV0ZSBjb250YWlucyBhIGxpc3Qgb2YgYWxsIHRoZSBwcm9ibGVtcyBmb3VuZCB3aGVuCisgICAgICBwYXJzaW5nIHRoaXMgbWVzc2FnZS4gIFNlZSA6bW9kOmBlbWFpbC5lcnJvcnNgIGZvciBhIGRldGFpbGVkIGRlc2NyaXB0aW9uCisgICAgICBvZiB0aGUgcG9zc2libGUgcGFyc2luZyBkZWZlY3RzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0IGIvRG9jL2xpYnJhcnkvZW1haWwuY29udGVudG1hbmFnZXIucnN0CmluZGV4IGE5YzA3OGIuLjU3NzQzZDUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmNvbnRlbnRtYW5hZ2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5jb250ZW50bWFuYWdlci5yc3QKQEAgLTcsMjUxICs3LDEyIEBACiAuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAotLi4gdmVyc2lvbmFkZGVkOjogMy40Ci0gICBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KLQogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvY29udGVudG1hbmFnZXIucHlgCiAKLS4uIG5vdGU6OgorLS0tLS0tLS0tLS0tCiAKLSAgIFRoZSBjb250ZW50bWFuYWdlciBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgbW9kdWxlKSBtYXkgb2NjdXIgaWYgZGVlbWVkCi0gICBuZWNlc3NhcnkgYnkgdGhlIGNvcmUgZGV2ZWxvcGVycy4KLQotLS0tLS0tLS0tLS0tLS0KLQotVGhlIDptb2Q6YH5lbWFpbC5tZXNzYWdlYCBtb2R1bGUgcHJvdmlkZXMgYSBjbGFzcyB0aGF0IGNhbiByZXByZXNlbnQgYW4KLWFyYml0cmFyeSBlbWFpbCBtZXNzYWdlLiAgVGhhdCBiYXNpYyBtZXNzYWdlIG1vZGVsIGhhcyBhIHVzZWZ1bCBhbmQgZmxleGlibGUKLUFQSSwgYnV0IGl0IHByb3ZpZGVzIG9ubHkgYSBsb3dlci1sZXZlbCBBUEkgZm9yIGludGVyYWN0aW5nIHdpdGggdGhlIGdlbmVyaWMKLXBhcnRzIG9mIGEgbWVzc2FnZSAodGhlIGhlYWRlcnMsIGdlbmVyaWMgaGVhZGVyIHBhcmFtZXRlcnMsIGFuZCB0aGUgcGF5bG9hZCwKLXdoaWNoIG1heSBiZSBhIGxpc3Qgb2Ygc3ViLXBhcnRzKS4gIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGNsYXNzZXMgYW5kIHRvb2xzCi10aGF0IHByb3ZpZGUgYW4gZW5oYW5jZWQgYW5kIGV4dGVuc2libGUgQVBJIGZvciBkZWFsaW5nIHdpdGggdmFyaW91cyBzcGVjaWZpYwotdHlwZXMgb2YgY29udGVudCwgaW5jbHVkaW5nIHRoZSBhYmlsaXR5IHRvIHJldHJpZXZlIHRoZSBjb250ZW50IG9mIHRoZSBtZXNzYWdlCi1hcyBhIHNwZWNpYWxpemVkIG9iamVjdCB0eXBlIHJhdGhlciB0aGFuIGFzIGEgc2ltcGxlIGJ5dGVzIG9iamVjdC4gIFRoZSBtb2R1bGUKLWF1dG9tYXRpY2FsbHkgdGFrZXMgY2FyZSBvZiB0aGUgUkZDLXNwZWNpZmllZCBNSU1FIGRldGFpbHMgKHJlcXVpcmVkIGhlYWRlcnMKLWFuZCBwYXJhbWV0ZXJzLCBldGMuKSBmb3IgdGhlIGNlcnRhaW4gY29tbW9uIGNvbnRlbnQgdHlwZXMgY29udGVudCBwcm9wZXJ0aWVzLAotYW5kIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgdHlwZXMgY2FuIGJlIGFkZGVkIGJ5IGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZQotZXh0ZW5zaW9uIG1lY2hhbmlzbXMuCi0KLVRoaXMgbW9kdWxlIGRlZmluZXMgdGhlIGVwb255bW91cyAiQ29udGVudCBNYW5hZ2VyIiBjbGFzc2VzLiAgVGhlIGJhc2UKLTpjbGFzczpgLkNvbnRlbnRNYW5hZ2VyYCBjbGFzcyBkZWZpbmVzIGFuIEFQSSBmb3IgcmVnaXN0ZXJpbmcgY29udGVudAotbWFuYWdlbWVudCBmdW5jdGlvbnMgd2hpY2ggZXh0cmFjdCBkYXRhIGZyb20gYGBNZXNzYWdlYGAgb2JqZWN0cyBvciBpbnNlcnQgZGF0YQotYW5kIGhlYWRlcnMgaW50byBgYE1lc3NhZ2VgYCBvYmplY3RzLCB0aHVzIHByb3ZpZGluZyBhIHdheSBvZiBjb252ZXJ0aW5nCi1iZXR3ZWVuIGBgTWVzc2FnZWBgIG9iamVjdHMgY29udGFpbmluZyBkYXRhIGFuZCBvdGhlciByZXByZXNlbnRhdGlvbnMgb2YgdGhhdAotZGF0YSAoUHl0aG9uIGRhdGEgdHlwZXMsIHNwZWNpYWxpemVkIFB5dGhvbiBvYmplY3RzLCBleHRlcm5hbCBmaWxlcywgZXRjKS4gIFRoZQotbW9kdWxlIGFsc28gZGVmaW5lcyBvbmUgY29uY3JldGUgY29udGVudCBtYW5hZ2VyOiA6ZGF0YTpgcmF3X2RhdGFfbWFuYWdlcmAKLWNvbnZlcnRzIGJldHdlZW4gTUlNRSBjb250ZW50IHR5cGVzIGFuZCBgYHN0cmBgIG9yIGBgYnl0ZXNgYCBkYXRhLiAgSXQgYWxzbwotcHJvdmlkZXMgYSBjb252ZW5pZW50IEFQSSBmb3IgbWFuYWdpbmcgdGhlIE1JTUUgcGFyYW1ldGVycyB3aGVuIGluc2VydGluZwotY29udGVudCBpbnRvIGBgTWVzc2FnZWBgXCBzLiAgSXQgYWxzbyBoYW5kbGVzIGluc2VydGluZyBhbmQgZXh0cmFjdGluZwotYGBNZXNzYWdlYGAgb2JqZWN0cyB3aGVuIGRlYWxpbmcgd2l0aCB0aGUgYGBtZXNzYWdlL3JmYzgyMmBgIGNvbnRlbnQgdHlwZS4KLQotQW5vdGhlciBwYXJ0IG9mIHRoZSBlbmhhbmNlZCBpbnRlcmZhY2UgaXMgc3ViY2xhc3NlcyBvZgotOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCB0aGF0IHByb3ZpZGUgbmV3IGNvbnZlbmllbmNlIEFQSSBmdW5jdGlvbnMsCi1pbmNsdWRpbmcgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgY2FsbGluZyB0aGUgQ29udGVudCBNYW5hZ2VycyBkZXJpdmVkIGZyb20KLXRoaXMgbW9kdWxlLgotCi0uLiBub3RlOjoKLQotICAgQWx0aG91Z2ggOmNsYXNzOmAuRW1haWxNZXNzYWdlYCBhbmQgOmNsYXNzOmAuTUlNRVBhcnRgIGFyZSBjdXJyZW50bHkKLSAgIGRvY3VtZW50ZWQgaW4gdGhpcyBtb2R1bGUgYmVjYXVzZSBvZiB0aGUgcHJvdmlzaW9uYWwgbmF0dXJlIG9mIHRoZSBjb2RlLCB0aGUKLSAgIGltcGxlbWVudGF0aW9uIGxpdmVzIGluIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuCi0KLS4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5tZXNzYWdlCi0KLS4uIGNsYXNzOjogRW1haWxNZXNzYWdlKHBvbGljeT1kZWZhdWx0KQotCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVkcGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgotICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wb2xpY3kuZGVmYXVsdGAgcG9saWN5LCB3aGljaCBmb2xsb3dzIHRoZSBydWxlcyBvZiB0aGUgZW1haWwKLSAgIFJGQ3MgZXhjZXB0IGZvciBsaW5lIGVuZGluZ3MgKGluc3RlYWQgb2YgdGhlIFJGQyBtYW5kYXRlZCBgYFxyXG5gYCwgaXQgdXNlcwotICAgdGhlIFB5dGhvbiBzdGFuZGFyZCBgYFxuYGAgbGluZSBlbmRpbmdzKS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIFRoaXMgY2xhc3MgaXMgYSBzdWJjbGFzcyBvZiA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgLiAgSXQgYWRkcwotICAgdGhlIGZvbGxvd2luZyBtZXRob2RzOgotCi0KLSAgIC4uIG1ldGhvZDo6IGlzX2F0dGFjaG1lbnQKLQotICAgICAgUmV0dXJuIGBgVHJ1ZWBgIGlmIHRoZXJlIGlzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlcgotICAgICAgYW5kIGl0cyAoY2FzZSBpbnNlbnNpdGl2ZSkgdmFsdWUgaXMgYGBhdHRhY2htZW50YGAsIGBgRmFsc2VgYCBvdGhlcndpc2UuCi0KLSAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40LjIKLSAgICAgICAgIGlzX2F0dGFjaG1lbnQgaXMgbm93IGEgbWV0aG9kIGluc3RlYWQgb2YgYSBwcm9wZXJ0eSwgZm9yIGNvbnNpc3RlbmN5Ci0gICAgICAgICB3aXRoIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmlzX211bHRpcGFydGAuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X2JvZHkocHJlZmVyZW5jZWxpc3Q9KCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKSkKLQotICAgICAgUmV0dXJuIHRoZSBNSU1FIHBhcnQgdGhhdCBpcyB0aGUgYmVzdCBjYW5kaWRhdGUgdG8gYmUgdGhlICJib2R5IiBvZiB0aGUKLSAgICAgIG1lc3NhZ2UuCi0KLSAgICAgICpwcmVmZXJlbmNlbGlzdCogbXVzdCBiZSBhIHNlcXVlbmNlIG9mIHN0cmluZ3MgZnJvbSB0aGUgc2V0IGBgcmVsYXRlZGBgLAotICAgICAgYGBodG1sYGAsIGFuZCBgYHBsYWluYGAsIGFuZCBpbmRpY2F0ZXMgdGhlIG9yZGVyIG9mIHByZWZlcmVuY2UgZm9yIHRoZQotICAgICAgY29udGVudCB0eXBlIG9mIHRoZSBwYXJ0IHJldHVybmVkLgotCi0gICAgICBTdGFydCBsb29raW5nIGZvciBjYW5kaWRhdGUgbWF0Y2hlcyB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlCi0gICAgICBgYGdldF9ib2R5YGAgbWV0aG9kIGlzIGNhbGxlZC4KLQotICAgICAgSWYgYGByZWxhdGVkYGAgaXMgbm90IGluY2x1ZGVkIGluICpwcmVmZXJlbmNlbGlzdCosIGNvbnNpZGVyIHRoZSByb290Ci0gICAgICBwYXJ0IChvciBzdWJwYXJ0IG9mIHRoZSByb290IHBhcnQpIG9mIGFueSByZWxhdGVkIGVuY291bnRlcmVkIGFzIGEKLSAgICAgIGNhbmRpZGF0ZSBpZiB0aGUgKHN1Yi0pcGFydCBtYXRjaGVzIGEgcHJlZmVyZW5jZS4KLQotICAgICAgV2hlbiBlbmNvdW50ZXJpbmcgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNoZWNrIHRoZSBgYHN0YXJ0YGAgcGFyYW1ldGVyCi0gICAgICBhbmQgaWYgYSBwYXJ0IHdpdGggYSBtYXRjaGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgaXMgZm91bmQsIGNvbnNpZGVyCi0gICAgICBvbmx5IGl0IHdoZW4gbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMuICBPdGhlcndpc2UgY29uc2lkZXIgb25seSB0aGUKLSAgICAgIGZpcnN0IChkZWZhdWx0IHJvb3QpIHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYC4KLQotICAgICAgSWYgYSBwYXJ0IGhhcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIsIG9ubHkgY29uc2lkZXIKLSAgICAgIHRoZSBwYXJ0IGEgY2FuZGlkYXRlIG1hdGNoIGlmIHRoZSB2YWx1ZSBvZiB0aGUgaGVhZGVyIGlzIGBgaW5saW5lYGAuCi0KLSAgICAgIElmIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgbWF0Y2hlcyBhbnkgb2YgdGhlIHByZWZlcmVuY2VzIGluCi0gICAgICAqcHJlZmVybmVjbGlzdCosIHJldHVybiBgYE5vbmVgYC4KLQotICAgICAgTm90ZXM6ICgxKSBGb3IgbW9zdCBhcHBsaWNhdGlvbnMgdGhlIG9ubHkgKnByZWZlcmVuY2VsaXN0KiBjb21iaW5hdGlvbnMKLSAgICAgIHRoYXQgcmVhbGx5IG1ha2Ugc2Vuc2UgYXJlIGBgKCdwbGFpbicsKWBgLCBgYCgnaHRtbCcsICdwbGFpbicpYGAsIGFuZCB0aGUKLSAgICAgIGRlZmF1bHQsIGBgKCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKWBgLiAgKDIpIEJlY2F1c2UgbWF0Y2hpbmcgc3RhcnRzCi0gICAgICB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggYGBnZXRfYm9keWBgIGlzIGNhbGxlZCwgY2FsbGluZyBgYGdldF9ib2R5YGAgb24KLSAgICAgIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIHVubGVzcwotICAgICAgKnByZWZlcmVuY2VsaXN0KiBoYXMgYSBub24tZGVmYXVsdCB2YWx1ZS4gKDMpIE1lc3NhZ2VzIChvciBtZXNzYWdlIHBhcnRzKQotICAgICAgdGhhdCBkbyBub3Qgc3BlY2lmeSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIG9yIHdob3NlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgaW52YWxpZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleQotICAgICAgYXJlIG9mIHR5cGUgYGB0ZXh0L3BsYWluYGAsIHdoaWNoIG1heSBvY2Nhc2lvbmFsbHkgY2F1c2UgYGBnZXRfYm9keWBgIHRvCi0gICAgICByZXR1cm4gdW5leHBlY3RlZCByZXN1bHRzLgotCi0KLSAgIC4uIG1ldGhvZDo6IGl0ZXJfYXR0YWNobWVudHMoKQotCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIHBhcnRzIG9mIHRoZSBtZXNzYWdlIHRoYXQgYXJlIG5vdAotICAgICAgY2FuZGlkYXRlICJib2R5IiBwYXJ0cy4gIFRoYXQgaXMsIHNraXAgdGhlIGZpcnN0IG9jY3VycmVuY2Ugb2YgZWFjaCBvZgotICAgICAgYGB0ZXh0L3BsYWluYGAsIGBgdGV4dC9odG1sYGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAgKHVubGVzcyB0aGV5IGFyZSBleHBsaWNpdGx5IG1hcmtlZCBhcwotICAgICAgYXR0YWNobWVudHMgdmlhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCksIGFuZAotICAgICAgcmV0dXJuIGFsbCByZW1haW5pbmcgcGFydHMuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYQotICAgICAgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCByZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUgYWxsIHRoZSByZWxhdGVkIHBhcnRzCi0gICAgICBleGNlcHQgdGhlIHJvb3QgcGFydCAoaWU6IHRoZSBwYXJ0IHBvaW50ZWQgdG8gYnkgdGhlIGBgc3RhcnRgYCBwYXJhbWV0ZXIsCi0gICAgICBvciB0aGUgZmlyc3QgcGFydCBpZiB0aGVyZSBpcyBubyBgYHN0YXJ0YGAgcGFyYW1ldGVyIG9yIHRoZSBgYHN0YXJ0YGAKLSAgICAgIHBhcmFtZXRlciBkb2Vzbid0IG1hdGNoIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1JRGAgb2YgYW55IG9mIHRoZQotICAgICAgcGFydHMpLiAgV2hlbiBhcHBsaWVkIGRpcmVjdGx5IHRvIGEgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCBvciBhCi0gICAgICBub24tYGBtdWx0aXBhcnRgYCwgcmV0dXJuIGFuIGVtcHR5IGl0ZXJhdG9yLgotCi0KLSAgIC4uIG1ldGhvZDo6IGl0ZXJfcGFydHMoKQotCi0gICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UsCi0gICAgICB3aGljaCB3aWxsIGJlIGVtcHR5IGZvciBhIG5vbi1gYG11bHRpcGFydGBgLiAgKFNlZSBhbHNvCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2Uud2Fsa2AuKQotCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgQ2FsbCB0aGUgYGBnZXRfY29udGVudGBgIG1ldGhvZCBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZgotICAgICAgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZyBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzCi0gICAgICBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgQ2FsbCB0aGUgYGBzZXRfY29udGVudGBgIG1ldGhvZCBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZgotICAgICAgYXMgdGhlIG1lc3NhZ2Ugb2JqZWN0LCBhbmQgcGFzc2luZyBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzCi0gICAgICBhcyBhZGRpdGlvbmFsIGFyZ3VtZW50cy4gIElmICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZQotICAgICAgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAgc3BlY2lmaWVkIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfcmVsYXRlZChib3VuZGFyeT1Ob25lKQotCi0gICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgbWVzc2FnZSBpbnRvIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIG1lc3NhZ2UsCi0gICAgICBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEKLSAgICAgIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlCi0gICAgICBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkKLSAgICAgIHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlCi0gICAgICBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgotCi0KLSAgIC4uIG1ldGhvZDo6IG1ha2VfYWx0ZXJuYXRpdmUoYm91bmRhcnk9Tm9uZSkKLQotICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIGludG8gYQotICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gCi0gICAgICBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKLSAgICAgICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LAotICAgICAgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcwotICAgICAgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KLQotCi0gICAuLiBtZXRob2Q6OiBtYWtlX21peGVkKGJvdW5kYXJ5PU5vbmUpCi0KLSAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCwgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yIGEKLSAgICAgIGBgbXVsdGlwYXJ0LWFsdGVybmF0aXZlYGAgaW50byBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUKLSAgICAgIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcKLSAgICAgIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseQotICAgICAgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCi0KLQotICAgLi4gbWV0aG9kOjogYWRkX3JlbGF0ZWQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKLSAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsCi0gICAgICBhbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCi0gICAgICB0aGUgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBjYWxsIDptZXRoOmBtYWtlX3JlbGF0ZWRgIGFuZCB0aGVuCi0gICAgICBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwKLSAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCi0gICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCi0gICAgICBJZiB0aGUgYWRkZWQgcGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwKLSAgICAgIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUgYGBpbmxpbmVgYC4KLQotCi0gICAuLiBtZXRob2Q6OiBhZGRfYWx0ZXJuYXRpdmUoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQotCi0gICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCi0gICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKLSAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKLSAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCBvciBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNhbGwKLSAgICAgIDptZXRoOmBtYWtlX2FsdGVybmF0aXZlYCBhbmQgdGhlbiBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMKLSAgICAgIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYKLSAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKLSAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgotCi0KLSAgIC4uIG1ldGhvZDo6IGFkZF9hdHRhY2htZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKLQotICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9taXhlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmplY3QsCi0gICAgICBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCi0gICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCi0gICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKLSAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNhbGwgOm1ldGg6YG1ha2VfbWl4ZWRgIGFuZCB0aGVuIHByb2NlZWQgYXMKLSAgICAgIGFib3ZlLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAKLSAgICAgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4gIElmIHRoZSBhZGRlZCBwYXJ0Ci0gICAgICBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZQotICAgICAgYGBhdHRhY2htZW50YGAuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIGZvciBleHBsaWNpdCBhdHRhY2htZW50cwotICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCBhbmQgYGBpbmxpbmVgYCBhdHRhY2htZW50cwotICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmVgKSwgYnkgcGFzc2luZyBhcHByb3ByaWF0ZQotICAgICAgb3B0aW9ucyB0byB0aGUgYGBjb250ZW50X21hbmFnZXJgYC4KLQotCi0gICAuLiBtZXRob2Q6OiBjbGVhcigpCi0KLSAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSBoZWFkZXJzLgotCi0KLSAgIC4uIG1ldGhvZDo6IGNsZWFyX2NvbnRlbnQoKQotCi0gICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgOmV4YzpgQ29udGVudC1gIGhlYWRlcnMsIGxlYXZpbmcKLSAgICAgIGFsbCBvdGhlciBoZWFkZXJzIGludGFjdCBhbmQgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCi0KLQotLi4gY2xhc3M6OiBNSU1FUGFydChwb2xpY3k9ZGVmYXVsdCkKLQotICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHN1YnBhcnQgb2YgYSBNSU1FIG1lc3NhZ2UuICBJdCBpcyBpZGVudGljYWwgdG8KLSAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAsIGV4Y2VwdCB0aGF0IG5vIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMgYXJlCi0gICAgYWRkZWQgd2hlbiA6bWV0aDpgfkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgaXMgY2FsbGVkLCBzaW5jZSBzdWItcGFydHMgZG8KLSAgICBub3QgbmVlZCB0aGVpciBvd24gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycy4KLQorLi4gdmVyc2lvbmFkZGVkOjogMy42IFsxXV8KIAotLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLmNvbnRlbnRtYW5hZ2VyCiAKIC4uIGNsYXNzOjogQ29udGVudE1hbmFnZXIoKQogCkBAIC0zNjIsNyArMTIzLDcgQEAKICAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdieXRlcyc+LCBtYWludHlwZSwgc3VidHlwZSwgY3RlPSJiYXNlNjQiLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwb3NpdGlvbj1Ob25lLCBmaWxlbmFtZT1Ob25lLCBjaWQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSkKLSAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdNZXNzYWdlJz4sIGN0ZT1Ob25lLCBcCisgICAgICAgICAgICAgICBzZXRfY29udGVudChtc2csIDwnRW1haWxNZXNzYWdlJz4sIGN0ZT1Ob25lLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNwb3NpdGlvbj1Ob25lLCBmaWxlbmFtZT1Ob25lLCBjaWQ9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1zPU5vbmUsIGhlYWRlcnM9Tm9uZSkKICAgICAgICAgICAgICAgIHNldF9jb250ZW50KG1zZywgPCdsaXN0Jz4sIHN1YnR5cGU9J21peGVkJywgXApAQCAtMzc4LDE0ICsxMzksMTQgQEAKICAgICAgICAgICAgICBzdWJ0eXBlIHRvICpzdWJ0eXBlKiBpZiBpdCBpcyBzcGVjaWZpZWQsIG9yIGBgcGxhaW5gYCBpZiBpdCBpcyBub3QuCiAgICAgICAgICAgICogRm9yIGBgYnl0ZXNgYCwgdXNlIHRoZSBzcGVjaWZpZWQgKm1haW50eXBlKiBhbmQgKnN1YnR5cGUqLCBvcgogICAgICAgICAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYCBpZiB0aGV5IGFyZSBub3Qgc3BlY2lmaWVkLgotICAgICAgICAgICAqIEZvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgbWFpbnR5cGUgdG8KLSAgICAgICAgICAgICBgYG1lc3NhZ2VgYCwgYW5kIHNldCB0aGUgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMgc3BlY2lmaWVkCi0gICAgICAgICAgICAgb3IgYGByZmM4MjJgYCBpZiBpdCBpcyBub3QuICBJZiAqc3VidHlwZSogaXMgYGBwYXJ0aWFsYGAsIHJhaXNlIGFuCi0gICAgICAgICAgICAgZXJyb3IgKGBgYnl0ZXNgYCBvYmplY3RzIG11c3QgYmUgdXNlZCB0byBjb25zdHJ1Y3QKLSAgICAgICAgICAgICBgYG1lc3NhZ2UvcGFydGlhbGBgIHBhcnRzKS4KKyAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdHMsIHNldCB0aGUgbWFpbnR5cGUKKyAgICAgICAgICAgICB0byBgYG1lc3NhZ2VgYCwgYW5kIHNldCB0aGUgc3VidHlwZSB0byAqc3VidHlwZSogaWYgaXQgaXMKKyAgICAgICAgICAgICBzcGVjaWZpZWQgb3IgYGByZmM4MjJgYCBpZiBpdCBpcyBub3QuICBJZiAqc3VidHlwZSogaXMKKyAgICAgICAgICAgICBgYHBhcnRpYWxgYCwgcmFpc2UgYW4gZXJyb3IgKGBgYnl0ZXNgYCBvYmplY3RzIG11c3QgYmUgdXNlZCB0bworICAgICAgICAgICAgIGNvbnN0cnVjdCBgYG1lc3NhZ2UvcGFydGlhbGBgIHBhcnRzKS4KICAgICAgICAgICAgKiBGb3IgKjwnbGlzdCc+Kiwgd2hpY2ggc2hvdWxkIGJlIGEgbGlzdCBvZgotICAgICAgICAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cywgc2V0IHRoZSBgYG1haW50eXBlYGAgdG8KLSAgICAgICAgICAgICBgYG11bHRpcGFydGBgLCBhbmQgdGhlIGBgc3VidHlwZWBgIHRvICpzdWJ0eXBlKiBpZiBpdCBpcworICAgICAgICAgICAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBvYmplY3RzLCBzZXQgdGhlIGBgbWFpbnR5cGVgYAorICAgICAgICAgICAgIHRvIGBgbXVsdGlwYXJ0YGAsIGFuZCB0aGUgYGBzdWJ0eXBlYGAgdG8gKnN1YnR5cGUqIGlmIGl0IGlzCiAgICAgICAgICAgICAgc3BlY2lmaWVkLCBhbmQgYGBtaXhlZGBgIGlmIGl0IGlzIG5vdC4gIElmIHRoZSBtZXNzYWdlIHBhcnRzIGluCiAgICAgICAgICAgICAgdGhlICo8J2xpc3QnPiogaGF2ZSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYCBoZWFkZXJzLCByZW1vdmUKICAgICAgICAgICAgICB0aGVtLgpAQCAtMzk3LDMyICsxNTgsMzUgQEAKIAogICAgICAgIElmICpjdGUqIGlzIHNldCwgZW5jb2RlIHRoZSBwYXlsb2FkIHVzaW5nIHRoZSBzcGVjaWZpZWQgY29udGVudCB0cmFuc2ZlcgogICAgICAgIGVuY29kaW5nLCBhbmQgc2V0IHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmRjb2RpbmdgIGhlYWRlciB0bwotICAgICAgIHRoYXQgdmFsdWUuICBGb3IgYGBzdHJgYCBvYmplY3RzLCBpZiBpdCBpcyBub3Qgc2V0IHVzZSBoZXVyaXN0aWNzIHRvCi0gICAgICAgZGV0ZXJtaW5lIHRoZSBtb3N0IGNvbXBhY3QgZW5jb2RpbmcuICBQb3NzaWJsZSB2YWx1ZXMgZm9yICpjdGUqIGFyZQotICAgICAgIGBgcXVvdGVkLXByaW50YWJsZWBgLCBgYGJhc2U2NGBgLCBgYDdiaXRgYCwgYGA4Yml0YGAsIGFuZCBgYGJpbmFyeWBgLgotICAgICAgIElmIHRoZSBpbnB1dCBjYW5ub3QgYmUgZW5jb2RlZCBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIChlZzogYGA3Yml0YGApLAotICAgICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuICBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCwgcGVyCi0gICAgICAgOnJmYzpgMjA0NmAsIHJhaXNlIGFuIGVycm9yIGlmIGEgKmN0ZSogb2YgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IKLSAgICAgICBgYGJhc2U2NGBgIGlzIHJlcXVlc3RlZCBmb3IgKnN1YnR5cGUqIGBgcmZjODIyYGAsIGFuZCBmb3IgYW55ICpjdGUqCi0gICAgICAgb3RoZXIgdGhhbiBgYDdiaXRgYCBmb3IgKnN1YnR5cGUqIGBgZXh0ZXJuYWwtYm9keWBgLiAgRm9yCi0gICAgICAgYGBtZXNzYWdlL3JmYzgyMmBgLCB1c2UgYGA4Yml0YGAgaWYgKmN0ZSogaXMgbm90IHNwZWNpZmllZC4gIEZvciBhbGwKLSAgICAgICBvdGhlciB2YWx1ZXMgb2YgKnN1YnR5cGUqLCB1c2UgYGA3Yml0YGAuCisgICAgICAgdGhhdCB2YWx1ZS4gIFBvc3NpYmxlIHZhbHVlcyBmb3IgKmN0ZSogYXJlIGBgcXVvdGVkLXByaW50YWJsZWBgLAorICAgICAgIGBgYmFzZTY0YGAsIGBgN2JpdGBgLCBgYDhiaXRgYCwgYW5kIGBgYmluYXJ5YGAuICBJZiB0aGUgaW5wdXQgY2Fubm90IGJlCisgICAgICAgZW5jb2RlZCBpbiB0aGUgc3BlY2lmaWVkIGVuY29kaW5nIChmb3IgZXhhbXBsZSwgc3BlY2lmeWluZyBhICpjdGUqIG9mCisgICAgICAgYGA3Yml0YGAgZm9yIGFuIGlucHV0IHRoYXQgY29udGFpbnMgbm9uLUFTQ0lJIHZhbHVlcyksIHJhaXNlIGEKKyAgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4KKworICAgICAgICAgICAgKiBGb3IgYGBzdHJgYCBvYmplY3RzLCBpZiAqY3RlKiBpcyBub3Qgc2V0IHVzZSBoZXVyaXN0aWNzIHRvCisgICAgICAgICAgICAgIGRldGVybWluZSB0aGUgbW9zdCBjb21wYWN0IGVuY29kaW5nLgorICAgICAgICAgICAgKiBGb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgLCBwZXIgOnJmYzpgMjA0NmAsIHJhaXNlCisgICAgICAgICAgICAgIGFuIGVycm9yIGlmIGEgKmN0ZSogb2YgYGBxdW90ZWQtcHJpbnRhYmxlYGAgb3IgYGBiYXNlNjRgYCBpcworICAgICAgICAgICAgICByZXF1ZXN0ZWQgZm9yICpzdWJ0eXBlKiBgYHJmYzgyMmBgLCBhbmQgZm9yIGFueSAqY3RlKiBvdGhlciB0aGFuCisgICAgICAgICAgICAgIGBgN2JpdGBgIGZvciAqc3VidHlwZSogYGBleHRlcm5hbC1ib2R5YGAuICBGb3IKKyAgICAgICAgICAgICAgYGBtZXNzYWdlL3JmYzgyMmBgLCB1c2UgYGA4Yml0YGAgaWYgKmN0ZSogaXMgbm90IHNwZWNpZmllZC4gIEZvcgorICAgICAgICAgICAgICBhbGwgb3RoZXIgdmFsdWVzIG9mICpzdWJ0eXBlKiwgdXNlIGBgN2JpdGBgLgogCiAgICAgICAgLi4gbm90ZTo6IEEgKmN0ZSogb2YgYGBiaW5hcnlgYCBkb2VzIG5vdCBhY3R1YWxseSB3b3JrIGNvcnJlY3RseSB5ZXQuCi0gICAgICAgICAgVGhlIGBgTWVzc2FnZWBgIG9iamVjdCBhcyBtb2RpZmllZCBieSBgYHNldF9jb250ZW50YGAgaXMgY29ycmVjdCwgYnV0Ci0gICAgICAgICAgOmNsYXNzOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yYCBkb2VzIG5vdCBzZXJpYWxpemUgaXQKLSAgICAgICAgICBjb3JyZWN0bHkuCisgICAgICAgICAgVGhlIGBgRW1haWxNZXNzYWdlYGAgb2JqZWN0IGFzIG1vZGlmaWVkIGJ5IGBgc2V0X2NvbnRlbnRgYCBpcworICAgICAgICAgIGNvcnJlY3QsIGJ1dCA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgIGRvZXMgbm90CisgICAgICAgICAgc2VyaWFsaXplIGl0IGNvcnJlY3RseS4KIAogICAgICAgIElmICpkaXNwb3NpdGlvbiogaXMgc2V0LCB1c2UgaXQgYXMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuICBJZiBub3Qgc3BlY2lmaWVkLCBhbmQKICAgICAgICAqZmlsZW5hbWUqIGlzIHNwZWNpZmllZCwgYWRkIHRoZSBoZWFkZXIgd2l0aCB0aGUgdmFsdWUgYGBhdHRhY2htZW50YGAuCi0gICAgICAgSWYgaXQgaXMgbm90IHNwZWNpZmllZCBhbmQgKmZpbGVuYW1lKiBpcyBhbHNvIG5vdCBzcGVjaWZpZWQsIGRvIG5vdCBhZGQKLSAgICAgICB0aGUgaGVhZGVyLiAgVGhlIG9ubHkgdmFsaWQgdmFsdWVzIGZvciAqZGlzcG9zaXRpb24qIGFyZSBgYGF0dGFjaG1lbnRgYAotICAgICAgIGFuZCBgYGlubGluZWBgLgorICAgICAgIElmICpkaXNwb3NpdGlvbiogaXMgbm90IHNwZWNpZmllZCBhbmQgKmZpbGVuYW1lKiBpcyBhbHNvIG5vdCBzcGVjaWZpZWQsCisgICAgICAgZG8gbm90IGFkZCB0aGUgaGVhZGVyLiAgVGhlIG9ubHkgdmFsaWQgdmFsdWVzIGZvciAqZGlzcG9zaXRpb24qIGFyZQorICAgICAgIGBgYXR0YWNobWVudGBgIGFuZCBgYGlubGluZWBgLgogCiAgICAgICAgSWYgKmZpbGVuYW1lKiBpcyBzcGVjaWZpZWQsIHVzZSBpdCBhcyB0aGUgdmFsdWUgb2YgdGhlIGBgZmlsZW5hbWVgYAotICAgICAgIHBhcmFtZXRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlci4gIFRoZXJlIGlzIG5vCi0gICAgICAgZGVmYXVsdC4KKyAgICAgICBwYXJhbWV0ZXIgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIuCiAKICAgICAgICBJZiAqY2lkKiBpcyBzcGVjaWZpZWQsIGFkZCBhIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBoZWFkZXIgd2l0aAogICAgICAgICpjaWQqIGFzIGl0cyB2YWx1ZS4KQEAgLTQzNSwzICsxOTksOSBAQAogICAgICAgIGBgaGVhZGVybmFtZTogaGVhZGVydmFsdWVgYCBvciBhIGxpc3Qgb2YgYGBoZWFkZXJgYCBvYmplY3RzCiAgICAgICAgKGRpc3Rpbmd1aXNoZWQgZnJvbSBzdHJpbmdzIGJ5IGhhdmluZyBhIGBgbmFtZWBgIGF0dHJpYnV0ZSksIGFkZCB0aGUKICAgICAgICBoZWFkZXJzIHRvICptc2cqLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gT3JpbmdhbGx5IGFkZGVkIGluIDMuNCBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsCisgICAgICAgcGFja2FnZT5gCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lbmNvZGVycy5yc3QKaW5kZXggOWQ3ZjliZi4uZTI0YWM3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZW5jb2RlcnMucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmVuY29kZXJzLnJzdApAQCAtOCw2ICs4LDEyIEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUKK25ldyBBUEkgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgcHJvdmlkZWQgYnkgdGhlICpjdGUqIHBhcmFtZXRlciBvZgordGhlIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uuc2V0X2NvbnRlbnRgIG1ldGhvZC4KKworVGhlIHJlbWFpbmluZyB0ZXh0IGluIHRoaXMgc2VjdGlvbiBpcyB0aGUgb3JpZ2luYWwgZG9jdW1lbnRhdGlvbiBvZiB0aGUgbW9kdWxlLgorCiBXaGVuIGNyZWF0aW5nIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0cyBmcm9tIHNjcmF0Y2gsIHlvdSBvZnRlbgogbmVlZCB0byBlbmNvZGUgdGhlIHBheWxvYWRzIGZvciB0cmFuc3BvcnQgdGhyb3VnaCBjb21wbGlhbnQgbWFpbCBzZXJ2ZXJzLiBUaGlzCiBpcyBlc3BlY2lhbGx5IHRydWUgZm9yIDptaW1ldHlwZTpgaW1hZ2UvXCpgIGFuZCA6bWltZXR5cGU6YHRleHQvXCpgIHR5cGUgbWVzc2FnZXMKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5lcnJvcnMucnN0CmluZGV4IDg0NzA3ODMuLjJkMGQxOTIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmVycm9ycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuZXJyb3JzLnJzdApAQCAtMjAsMzMgKzIwLDI3IEBACiAKIC4uIGV4Y2VwdGlvbjo6IE1lc3NhZ2VQYXJzZUVycm9yKCkKIAotICAgVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgCi0gICBjbGFzcy4gIEl0IGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlRXJyb3JgLgorICAgVGhpcyBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgZXhjZXB0aW9ucyByYWlzZWQgYnkgdGhlCisgICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcy4gIEl0IGlzIGRlcml2ZWQgZnJvbQorICAgOmV4YzpgTWVzc2FnZUVycm9yYC4gIFRoaXMgY2xhc3MgaXMgYWxzbyB1c2VkIGludGVybmFsbHkgYnkgdGhlIHBhcnNlciB1c2VkCisgICBieSA6bW9kOmB+ZW1haWwuaGVhZGVycmVnaXN0cnlgLgogCiAKIC4uIGV4Y2VwdGlvbjo6IEhlYWRlclBhcnNlRXJyb3IoKQogCi0gICBSYWlzZWQgdW5kZXIgc29tZSBlcnJvciBjb25kaXRpb25zIHdoZW4gcGFyc2luZyB0aGUgOnJmYzpgMjgyMmAgaGVhZGVycyBvZiBhCi0gICBtZXNzYWdlLCB0aGlzIGNsYXNzIGlzIGRlcml2ZWQgZnJvbSA6ZXhjOmBNZXNzYWdlUGFyc2VFcnJvcmAuIEl0IGNhbiBiZSByYWlzZWQKLSAgIGZyb20gdGhlIDptZXRoOmBQYXJzZXIucGFyc2UgPGVtYWlsLnBhcnNlci5QYXJzZXIucGFyc2U+YCBvcgotICAgOm1ldGg6YFBhcnNlci5wYXJzZXN0ciA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZXN0cj5gIG1ldGhvZHMuCi0KLSAgIFNpdHVhdGlvbnMgd2hlcmUgaXQgY2FuIGJlIHJhaXNlZCBpbmNsdWRlIGZpbmRpbmcgYW4gZW52ZWxvcGUgaGVhZGVyIGFmdGVyIHRoZQotICAgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIG9mIHRoZSBtZXNzYWdlLCBmaW5kaW5nIGEgY29udGludWF0aW9uIGxpbmUgYmVmb3JlIHRoZQotICAgZmlyc3QgOnJmYzpgMjgyMmAgaGVhZGVyIGlzIGZvdW5kLCBvciBmaW5kaW5nIGEgbGluZSBpbiB0aGUgaGVhZGVycyB3aGljaCBpcwotICAgbmVpdGhlciBhIGhlYWRlciBvciBhIGNvbnRpbnVhdGlvbiBsaW5lLgorICAgUmFpc2VkIHVuZGVyIHNvbWUgZXJyb3IgY29uZGl0aW9ucyB3aGVuIHBhcnNpbmcgdGhlIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgYQorICAgbWVzc2FnZSwgdGhpcyBjbGFzcyBpcyBkZXJpdmVkIGZyb20gOmV4YzpgTWVzc2FnZVBhcnNlRXJyb3JgLiAgVGhlCisgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLnNldF9ib3VuZGFyeWAgbWV0aG9kIHdpbGwgcmFpc2UgdGhpcworICAgZXJyb3IgaWYgdGhlIGNvbnRlbnQgdHlwZSBpcyB1bmtub3duIHdoZW4gdGhlIG1ldGhvZCBpcyBjYWxsZWQuCisgICA6Y2xhc3M6YH5lbWFpbC5oZWFkZXIuSGVhZGVyYCBtYXkgcmFpc2UgdGhpcyBlcnJvciBmb3IgY2VydGFpbiBiYXNlNjQKKyAgIGRlY29kaW5nIGVycm9ycywgYW5kIHdoZW4gYW4gYXR0ZW1wdCBpcyBtYWRlIHRvIGNyZWF0ZSBhIGhlYWRlciB0aGF0IGFwcGVhcnMKKyAgIHRvIGNvbnRhaW4gYW4gZW1iZWRkZWQgaGVhZGVyICh0aGF0IGlzLCB0aGVyZSBpcyB3aGF0IGlzIHN1cHBvc2VkIHRvIGJlIGEKKyAgIGNvbnRpbnVhdGlvbiBsaW5lIHRoYXQgaGFzIG5vIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgbG9va3MgbGlrZSBhIGhlYWRlcikuCiAKIAogLi4gZXhjZXB0aW9uOjogQm91bmRhcnlFcnJvcigpCiAKLSAgIFJhaXNlZCB1bmRlciBzb21lIGVycm9yIGNvbmRpdGlvbnMgd2hlbiBwYXJzaW5nIHRoZSA6cmZjOmAyODIyYCBoZWFkZXJzIG9mIGEKLSAgIG1lc3NhZ2UsIHRoaXMgY2xhc3MgaXMgZGVyaXZlZCBmcm9tIDpleGM6YE1lc3NhZ2VQYXJzZUVycm9yYC4gSXQgY2FuIGJlIHJhaXNlZAotICAgZnJvbSB0aGUgOm1ldGg6YFBhcnNlci5wYXJzZSA8ZW1haWwucGFyc2VyLlBhcnNlci5wYXJzZT5gIG9yCi0gICA6bWV0aDpgUGFyc2VyLnBhcnNlc3RyIDxlbWFpbC5wYXJzZXIuUGFyc2VyLnBhcnNlc3RyPmAgbWV0aG9kcy4KLQotICAgU2l0dWF0aW9ucyB3aGVyZSBpdCBjYW4gYmUgcmFpc2VkIGluY2x1ZGUgbm90IGJlaW5nIGFibGUgdG8gZmluZCB0aGUgc3RhcnRpbmcgb3IKLSAgIHRlcm1pbmF0aW5nIGJvdW5kYXJ5IGluIGEgOm1pbWV0eXBlOmBtdWx0aXBhcnQvXCpgIG1lc3NhZ2Ugd2hlbiBzdHJpY3QgcGFyc2luZwotICAgaXMgdXNlZC4KKyAgIERlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciB1c2VkLgogCiAKIC4uIGV4Y2VwdGlvbjo6IE11bHRpcGFydENvbnZlcnNpb25FcnJvcigpCkBAIC02NCwxNCArNTgsMTQgQEAKICAgIDpjbGFzczpgfmVtYWlsLm1pbWUubm9ubXVsdGlwYXJ0Lk1JTUVOb25NdWx0aXBhcnRgIChlLmcuCiAgICA6Y2xhc3M6YH5lbWFpbC5taW1lLmltYWdlLk1JTUVJbWFnZWApLgogCi1IZXJlJ3MgdGhlIGxpc3Qgb2YgdGhlIGRlZmVjdHMgdGhhdCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgCisKK0hlcmUgaXMgdGhlIGxpc3Qgb2YgdGhlIGRlZmVjdHMgdGhhdCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkZlZWRQYXJzZXJgCiBjYW4gZmluZCB3aGlsZSBwYXJzaW5nIG1lc3NhZ2VzLiAgTm90ZSB0aGF0IHRoZSBkZWZlY3RzIGFyZSBhZGRlZCB0byB0aGUgbWVzc2FnZQogd2hlcmUgdGhlIHByb2JsZW0gd2FzIGZvdW5kLCBzbyBmb3IgZXhhbXBsZSwgaWYgYSBtZXNzYWdlIG5lc3RlZCBpbnNpZGUgYQogOm1pbWV0eXBlOmBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgIGhhZCBhIG1hbGZvcm1lZCBoZWFkZXIsIHRoYXQgbmVzdGVkIG1lc3NhZ2UKIG9iamVjdCB3b3VsZCBoYXZlIGEgZGVmZWN0LCBidXQgdGhlIGNvbnRhaW5pbmcgbWVzc2FnZXMgd291bGQgbm90LgogCi1BbGwgZGVmZWN0IGNsYXNzZXMgYXJlIHN1YmNsYXNzZWQgZnJvbSA6Y2xhc3M6YGVtYWlsLmVycm9ycy5NZXNzYWdlRGVmZWN0YCwgYnV0Ci10aGlzIGNsYXNzIGlzICpub3QqIGFuIGV4Y2VwdGlvbiEKK0FsbCBkZWZlY3QgY2xhc3NlcyBhcmUgc3ViY2xhc3NlZCBmcm9tIDpjbGFzczpgZW1haWwuZXJyb3JzLk1lc3NhZ2VEZWZlY3RgLgogCiAqIDpjbGFzczpgTm9Cb3VuZGFyeUluTXVsdGlwYXJ0RGVmZWN0YCAtLSBBIG1lc3NhZ2UgY2xhaW1lZCB0byBiZSBhIG11bHRpcGFydCwKICAgYnV0IGhhZCBubyA6bWltZXR5cGU6YGJvdW5kYXJ5YCBwYXJhbWV0ZXIuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5leGFtcGxlcy5yc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlOWFlZQotLS0gL2Rldi9udWxsCisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLmV4YW1wbGVzLnJzdApAQCAtMCwwICsxLDY3IEBACisuLiBfZW1haWwtZXhhbXBsZXM6CisKKzptb2Q6YGVtYWlsYDogRXhhbXBsZXMKKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworSGVyZSBhcmUgYSBmZXcgZXhhbXBsZXMgb2YgaG93IHRvIHVzZSB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgdG8gcmVhZCwgd3JpdGUsCithbmQgc2VuZCBzaW1wbGUgZW1haWwgbWVzc2FnZXMsIGFzIHdlbGwgYXMgbW9yZSBjb21wbGV4IE1JTUUgbWVzc2FnZXMuCisKK0ZpcnN0LCBsZXQncyBzZWUgaG93IHRvIGNyZWF0ZSBhbmQgc2VuZCBhIHNpbXBsZSB0ZXh0IG1lc3NhZ2UgKGJvdGggdGhlCit0ZXh0IGNvbnRlbnQgYW5kIHRoZSBhZGRyZXNzZXMgbWF5IGNvbnRhaW4gdW5pY29kZSBjaGFyYWN0ZXJzKToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1zaW1wbGUucHkKKworCitQYXJzaW5nIFJGQzgyMiBoZWFkZXJzIGNhbiBlYXNpbHkgYmUgZG9uZSBieSB0aGUgdXNpbmcgdGhlIGNsYXNzZXMKK2Zyb20gdGhlIDptb2Q6YH5lbWFpbC5wYXJzZXJgIG1vZHVsZToKKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1oZWFkZXJzLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIHNlbmQgYSBNSU1FIG1lc3NhZ2UgY29udGFpbmluZyBhIGJ1bmNoIG9mIGZhbWlseQorcGljdHVyZXMgdGhhdCBtYXkgYmUgcmVzaWRpbmcgaW4gYSBkaXJlY3Rvcnk6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtbWltZS5weQorCisKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB0byBzZW5kIHRoZSBlbnRpcmUgY29udGVudHMgb2YgYSBkaXJlY3RvcnkgYXMgYW4gZW1haWwKK21lc3NhZ2U6IFsxXV8KKworLi4gbGl0ZXJhbGluY2x1ZGU6OiAuLi9pbmNsdWRlcy9lbWFpbC1kaXIucHkKKworCitIZXJlJ3MgYW4gZXhhbXBsZSBvZiBob3cgdG8gdW5wYWNrIGEgTUlNRSBtZXNzYWdlIGxpa2UgdGhlIG9uZQorYWJvdmUsIGludG8gYSBkaXJlY3Rvcnkgb2YgZmlsZXM6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtdW5wYWNrLnB5CisKKworSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHRvIGNyZWF0ZSBhbiBIVE1MIG1lc3NhZ2Ugd2l0aCBhbiBhbHRlcm5hdGl2ZSBwbGFpbgordGV4dCB2ZXJzaW9uLiAgVG8gbWFrZSB0aGluZ3MgYSBiaXQgbW9yZSBpbnRlcmVzdGluZywgd2UgaW5jbHVkZSBhIHJlbGF0ZWQKK2ltYWdlIGluIHRoZSBodG1sIHBhcnQsIGFuZCB3ZSBzYXZlIGEgY29weSBvZiB3aGF0IHdlIGFyZSBnb2luZyB0byBzZW5kIHRvCitkaXNrLCBhcyB3ZWxsIGFzIHNlbmRpbmcgaXQuCisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtYWx0ZXJuYXRpdmUucHkKKworCitJZiB3ZSB3ZXJlIHNlbnQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgbGFzdCBleGFtcGxlLCBoZXJlIGlzIG9uZSB3YXkgd2UgY291bGQKK3Byb2Nlc3MgaXQ6CisKKy4uIGxpdGVyYWxpbmNsdWRlOjogLi4vaW5jbHVkZXMvZW1haWwtcmVhZC1hbHRlcm5hdGl2ZS5weQorCitVcCB0byB0aGUgcHJvbXB0LCB0aGUgb3V0cHV0IGZyb20gdGhlIGFib3ZlIGlzOgorCisuLiBjb2RlLWJsb2NrOjogbm9uZQorCisgICAgVG86IFBlbmVsb3BlIFB1c3N5Y2F0IDxwZW5lbG9wZUBleGFtcGxlLmNvbT4sIEZhYnJldHRlIFB1c3N5Y2F0IDxmYWJyZXR0ZUBleGFtcGxlLmNvbT4KKyAgICBGcm9tOiBQZXDDqSBMZSBQZXcgPHBlcGVAZXhhbXBsZS5jb20+CisgICAgU3ViamVjdDogQXlvbnMgYXNwZXJnZXMgcG91ciBsZSBkw6lqZXVuZXIKKworICAgIFNhbHV0IQorCisgICAgQ2VsYSByZXNzZW1ibGUgw6AgdW4gZXhjZWxsZW50IHJlY2lwaWVbMV0gZMOpamV1bmVyLgorCisKKy4uIHJ1YnJpYzo6IEZvb3Rub3RlcworCisuLiBbMV0gVGhhbmtzIHRvIE1hdHRoZXcgRGl4b24gQ293bGVzIGZvciB0aGUgb3JpZ2luYWwgaW5zcGlyYXRpb24gYW5kIGV4YW1wbGVzLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmdlbmVyYXRvci5yc3QKaW5kZXggZDU5NmVkOC4uYWIwZmJjMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwuZ2VuZXJhdG9yLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5nZW5lcmF0b3IucnN0CkBAIC04LDIxMCArOCwyNDQgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotT25lIG9mIHRoZSBtb3N0IGNvbW1vbiB0YXNrcyBpcyB0byBnZW5lcmF0ZSB0aGUgZmxhdCB0ZXh0IG9mIHRoZSBlbWFpbCBtZXNzYWdlCi1yZXByZXNlbnRlZCBieSBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZS4gIFlvdSB3aWxsIG5lZWQgdG8gZG8gdGhpcyBpZiB5b3Ugd2FudAotdG8gc2VuZCB5b3VyIG1lc3NhZ2UgdmlhIHRoZSA6bW9kOmBzbXRwbGliYCBtb2R1bGUgb3IgdGhlIDptb2Q6YG5udHBsaWJgIG1vZHVsZSwKLW9yIHByaW50IHRoZSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlLiAgVGFraW5nIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGFuZAotcHJvZHVjaW5nIGEgZmxhdCB0ZXh0IGRvY3VtZW50IGlzIHRoZSBqb2Igb2YgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcy4KK09uZSBvZiB0aGUgbW9zdCBjb21tb24gdGFza3MgaXMgdG8gZ2VuZXJhdGUgdGhlIGZsYXQgKHNlcmlhbGl6ZWQpIHZlcnNpb24gb2YKK3RoZSBlbWFpbCBtZXNzYWdlIHJlcHJlc2VudGVkIGJ5IGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlLiAgWW91IHdpbGwgbmVlZCB0bworZG8gdGhpcyBpZiB5b3Ugd2FudCB0byBzZW5kIHlvdXIgbWVzc2FnZSB2aWEgOm1ldGg6YHNtdHBsaWIuU01UUC5zZW5kbWFpbGAgb3IKK3RoZSA6bW9kOmBubnRwbGliYCBtb2R1bGUsIG9yIHByaW50IHRoZSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlLiAgVGFraW5nIGEKK21lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBhbmQgcHJvZHVjaW5nIGEgc2VyaWFsaXplZCByZXByZXNlbnRhdGlvbiBpcyB0aGUgam9iCitvZiB0aGUgZ2VuZXJhdG9yIGNsYXNzZXMuCiAKLUFnYWluLCBhcyB3aXRoIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwgeW91IGFyZW4ndCBsaW1pdGVkIHRvIHRoZQotZnVuY3Rpb25hbGl0eSBvZiB0aGUgYnVuZGxlZCBnZW5lcmF0b3I7IHlvdSBjb3VsZCB3cml0ZSBvbmUgZnJvbSBzY3JhdGNoCi15b3Vyc2VsZi4gIEhvd2V2ZXIgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yIGtub3dzIGhvdyB0byBnZW5lcmF0ZSBtb3N0IGVtYWlsIGluIGEKLXN0YW5kYXJkcy1jb21wbGlhbnQgd2F5LCBzaG91bGQgaGFuZGxlIE1JTUUgYW5kIG5vbi1NSU1FIGVtYWlsIG1lc3NhZ2VzIGp1c3QKLWZpbmUsIGFuZCBpcyBkZXNpZ25lZCBzbyB0aGF0IHRoZSB0cmFuc2Zvcm1hdGlvbiBmcm9tIGZsYXQgdGV4dCwgdG8gYSBtZXNzYWdlCi1zdHJ1Y3R1cmUgdmlhIHRoZSA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcywgYW5kIGJhY2sgdG8gZmxhdCB0ZXh0LAotaXMgaWRlbXBvdGVudCAodGhlIGlucHV0IGlzIGlkZW50aWNhbCB0byB0aGUgb3V0cHV0KSBbI11fLiAgT24gdGhlIG90aGVyIGhhbmQsCi11c2luZyB0aGUgR2VuZXJhdG9yIG9uIGEgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBjb25zdHJ1Y3RlZCBieSBwcm9ncmFtCi1tYXkgcmVzdWx0IGluIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb2JqZWN0IGFzIGRlZmF1bHRzCi1hcmUgZmlsbGVkIGluLgorQXMgd2l0aCB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsIHlvdSBhcmVuJ3QgbGltaXRlZCB0byB0aGUgZnVuY3Rpb25hbGl0eQorb2YgdGhlIGJ1bmRsZWQgZ2VuZXJhdG9yOyB5b3UgY291bGQgd3JpdGUgb25lIGZyb20gc2NyYXRjaCB5b3Vyc2VsZi4gIEhvd2V2ZXIKK3RoZSBidW5kbGVkIGdlbmVyYXRvciBrbm93cyBob3cgdG8gZ2VuZXJhdGUgbW9zdCBlbWFpbCBpbiBhIHN0YW5kYXJkcy1jb21wbGlhbnQKK3dheSwgc2hvdWxkIGhhbmRsZSBNSU1FIGFuZCBub24tTUlNRSBlbWFpbCBtZXNzYWdlcyBqdXN0IGZpbmUsIGFuZCBpcyBkZXNpZ25lZAorc28gdGhhdCB0aGUgYnl0ZXMtb3JpZW50ZWQgcGFyc2luZyBhbmQgZ2VuZXJhdGlvbiBvcGVyYXRpb25zIGFyZSBpbnZlcnNlcywKK2Fzc3VtaW5nIHRoZSBzYW1lIG5vbi10cmFuc2Zvcm1pbmcgOm1vZDpgfmVtYWlsLnBvbGljeWAgaXMgdXNlZCBmb3IgYm90aC4gIFRoYXQKK2lzLCBwYXJzaW5nIHRoZSBzZXJpYWxpemVkIGJ5dGUgc3RyZWFtIHZpYSB0aGUKKzpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MgYW5kIHRoZW4gcmVnZW5lcmF0aW5nIHRoZSBzZXJpYWxpemVkCitieXRlIHN0cmVhbSB1c2luZyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBzaG91bGQgcHJvZHVjZSBvdXRwdXQgaWRlbnRpY2FsIHRvCit0aGUgaW5wdXQgWyNdXy4gIChPbiB0aGUgb3RoZXIgaGFuZCwgdXNpbmcgdGhlIGdlbmVyYXRvciBvbiBhbgorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGNvbnN0cnVjdGVkIGJ5IHByb2dyYW0gbWF5IHJlc3VsdCBpbgorY2hhbmdlcyB0byB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIG9iamVjdCBhcyBkZWZhdWx0cyBhcmUKK2ZpbGxlZCBpbi4pCiAKLTpjbGFzczpgYnl0ZXNgIG91dHB1dCBjYW4gYmUgZ2VuZXJhdGVkIHVzaW5nIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBjbGFzcy4KLUlmIHRoZSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgY29udGFpbnMgbm9uLUFTQ0lJIGJ5dGVzLCB0aGlzIGdlbmVyYXRvcidzCi06bWV0aDpgfkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCB3aWxsIGVtaXQgdGhlIG9yaWdpbmFsIGJ5dGVzLiAgUGFyc2luZyBhCi1iaW5hcnkgbWVzc2FnZSBhbmQgdGhlbiBmbGF0dGVuaW5nIGl0IHdpdGggOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgc2hvdWxkIGJlCi1pZGVtcG90ZW50IGZvciBzdGFuZGFyZHMgY29tcGxpYW50IG1lc3NhZ2VzLgotCi1IZXJlIGFyZSB0aGUgcHVibGljIG1ldGhvZHMgb2YgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUKLTptb2Q6YGVtYWlsLmdlbmVyYXRvcmAgbW9kdWxlOgorVGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyBjYW4gYmUgdXNlZCB0byBmbGF0dGVuIGEgbWVzc2FnZSBpbnRvIGEgdGV4dCAoYXMKK29wcG9zZWQgdG8gYmluYXJ5KSBzZXJpYWxpemVkIHJlcHJlc2VudGF0aW9uLCBidXQgc2luY2UgVW5pY29kZSBjYW5ub3QKK3JlcHJlc2VudCBiaW5hcnkgZGF0YSBkaXJlY3RseSwgdGhlIG1lc3NhZ2UgaXMgb2YgbmVjZXNzaXR5IHRyYW5zZm9ybWVkIGludG8KK3NvbWV0aGluZyB0aGF0IGNvbnRhaW5zIG9ubHkgQVNDSUkgY2hhcmFjdGVycywgdXNpbmcgdGhlIHN0YW5kYXJkIGVtYWlsIFJGQworQ29udGVudCBUcmFuc2ZlciBFbmNvZGluZyB0ZWNobmlxdWVzIGZvciBlbmNvZGluZyBlbWFpbCBtZXNzYWdlcyBmb3IgdHJhbnNwb3J0CitvdmVyIGNoYW5uZWxzIHRoYXQgYXJlIG5vdCAiOCBiaXQgY2xlYW4iLgogCiAKLS4uIGNsYXNzOjogR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBwb2xpY3k9Tm9uZSkKLQotICAgVGhlIGNvbnN0cnVjdG9yIGZvciB0aGUgOmNsYXNzOmBHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgOnRlcm06YGZpbGUtbGlrZSBvYmplY3RgCi0gICBjYWxsZWQgKm91dGZwKiBmb3IgYW4gYXJndW1lbnQuICAqb3V0ZnAqIG11c3Qgc3VwcG9ydCB0aGUgOm1ldGg6YHdyaXRlYCBtZXRob2QKLSAgIGFuZCBiZSB1c2FibGUgYXMgdGhlIG91dHB1dCBmaWxlIGZvciB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotICAgT3B0aW9uYWwgKm1hbmdsZV9mcm9tXyogaXMgYSBmbGFnIHRoYXQsIHdoZW4gYGBUcnVlYGAsIHB1dHMgYSBgYD5gYCBjaGFyYWN0ZXIgaW4KLSAgIGZyb250IG9mIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIGV4YWN0bHkgYXMgYGBGcm9tYGAsIGkuZS4gYGBGcm9tYGAKLSAgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiB0aGUgbGluZS4gIFRoaXMgaXMgdGhlIG9ubHkgZ3VhcmFudGVlZAotICAgcG9ydGFibGUgd2F5IHRvIGF2b2lkIGhhdmluZyBzdWNoIGxpbmVzIGJlIG1pc3Rha2VuIGZvciBhIFVuaXggbWFpbGJveCBmb3JtYXQKLSAgIGVudmVsb3BlIGhlYWRlciBzZXBhcmF0b3IgKHNlZSBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECi0gICA8aHR0cHM6Ly93d3cuand6Lm9yZy9kb2MvY29udGVudC1sZW5ndGguaHRtbD5gXyBmb3IgZGV0YWlscykuICAqbWFuZ2xlX2Zyb21fKgotICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAsIGJ1dCB5b3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyB0byBgYEZhbHNlYGAgaWYgeW91IGFyZSBub3QKLSAgIHdyaXRpbmcgVW5peCBtYWlsYm94IGZvcm1hdCBmaWxlcy4KLQotICAgT3B0aW9uYWwgKm1heGhlYWRlcmxlbiogc3BlY2lmaWVzIHRoZSBsb25nZXN0IGxlbmd0aCBmb3IgYSBub24tY29udGludWVkIGhlYWRlci4KLSAgIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgdGhhbiAqbWF4aGVhZGVybGVuKiAoaW4gY2hhcmFjdGVycywgd2l0aCB0YWJzCi0gICBleHBhbmRlZCB0byA4IHNwYWNlcyksIHRoZSBoZWFkZXIgd2lsbCBiZSBzcGxpdCBhcyBkZWZpbmVkIGluIHRoZQotICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgY2xhc3MuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGhlYWRlciB3cmFwcGluZy4KLSAgIFRoZSBkZWZhdWx0IGlzIDc4LCBhcyByZWNvbW1lbmRlZCAoYnV0IG5vdCByZXF1aXJlZCkgYnkgOnJmYzpgMjgyMmAuCi0KLSAgIFRoZSAqcG9saWN5KiBrZXl3b3JkIHNwZWNpZmllcyBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgIG9iamVjdCB0aGF0IGNvbnRyb2xzIGEKLSAgIG51bWJlciBvZiBhc3BlY3RzIG9mIHRoZSBnZW5lcmF0b3IncyBvcGVyYXRpb24uICBJZiBubyAqcG9saWN5KiBpcyBzcGVjaWZpZWQsCi0gICB0aGVuIHRoZSAqcG9saWN5KiBhdHRhY2hlZCB0byB0aGUgbWVzc2FnZSBvYmplY3QgcGFzc2VkIHRvIDphdHRyOmBmbGF0dGVuYAotICAgaXMgdXNlZC4KLQotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCi0KLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBHZW5lcmF0b3JgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQotCi0gICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZCBhdAotICAgICAgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2UKLSAgICAgIHdhcyBjcmVhdGVkLiAgU3VicGFydHMgYXJlIHZpc2l0ZWQgZGVwdGgtZmlyc3QgYW5kIHRoZSByZXN1bHRpbmcgdGV4dCB3aWxsCi0gICAgICBiZSBwcm9wZXJseSBNSU1FIGVuY29kZWQuCi0KLSAgICAgIE9wdGlvbmFsICp1bml4ZnJvbSogaXMgYSBmbGFnIHRoYXQgZm9yY2VzIHRoZSBwcmludGluZyBvZiB0aGUgZW52ZWxvcGUKLSAgICAgIGhlYWRlciBkZWxpbWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIHJvb3QgbWVzc2FnZQotICAgICAgb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBubyBlbnZlbG9wZSBoZWFkZXIsIGEgc3RhbmRhcmQgb25lIGlzCi0gICAgICBjcmFmdGVkLiAgQnkgZGVmYXVsdCwgdGhpcyBpcyBzZXQgdG8gYGBGYWxzZWBgIHRvIGluaGliaXQgdGhlIHByaW50aW5nIG9mCi0gICAgICB0aGUgZW52ZWxvcGUgZGVsaW1pdGVyLgotCi0gICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgotCi0gICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSAqbXNnKlwncyBvciBgYEdlbmVyYXRvcmBgXCdzIGBgcG9saWN5YGAuCi0KLSAgICAgIEJlY2F1c2Ugc3RyaW5ncyBjYW5ub3QgcmVwcmVzZW50IG5vbi1BU0NJSSBieXRlcywgaWYgdGhlIHBvbGljeSB0aGF0Ci0gICAgICBhcHBsaWVzIHdoZW4gYGBmbGF0dGVuYGAgaXMgcnVuIGhhcyA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kuY3RlX3R5cGVgCi0gICAgICBzZXQgdG8gYGA4Yml0YGAsIGBgR2VuZXJhdG9yYGAgd2lsbCBvcGVyYXRlIGFzIGlmIGl0IHdlcmUgc2V0IHRvCi0gICAgICBgYDdiaXRgYC4gIFRoaXMgbWVhbnMgdGhhdCBtZXNzYWdlcyBwYXJzZWQgd2l0aCBhIEJ5dGVzIHBhcnNlciB0aGF0IGhhdmUKLSAgICAgIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIG9mIGBgOGJpdGBgIHdpbGwgYmUgY29udmVydGVkCi0gICAgICB0byBhIHVzZSBhIGBgN2JpdGBgIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBOb24tQVNDSUkgYnl0ZXMgaW4gdGhlCi0gICAgICBoZWFkZXJzIHdpbGwgYmUgOnJmYzpgMjA0N2AgZW5jb2RlZCB3aXRoIGEgY2hhcnNldCBvZiBgYHVua25vd24tOGJpdGBgLgotCi0gICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMgotICAgICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgcmUtZW5jb2RpbmcgYGA4Yml0YGAgbWVzc2FnZSBib2RpZXMsIGFuZCB0aGUKLSAgICAgICAgICpsaW5lc2VwKiBhcmd1bWVudC4KLQotICAgLi4gbWV0aG9kOjogY2xvbmUoZnApCi0KLSAgICAgIFJldHVybiBhbiBpbmRlcGVuZGVudCBjbG9uZSBvZiB0aGlzIDpjbGFzczpgR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoIHRoZQotICAgICAgZXhhY3Qgc2FtZSBvcHRpb25zLgotCi0gICAuLiBtZXRob2Q6OiB3cml0ZShzKQotCi0gICAgICBXcml0ZSB0aGUgc3RyaW5nICpzKiB0byB0aGUgdW5kZXJseWluZyBmaWxlIG9iamVjdCwgaS5lLiAqb3V0ZnAqIHBhc3NlZCB0bwotICAgICAgOmNsYXNzOmBHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZSBBUEkKLSAgICAgIGZvciA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2VzIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAgZnVuY3Rpb24uCi0KLUFzIGEgY29udmVuaWVuY2UsIHNlZSB0aGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBtZXRob2RzCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hc19zdHJpbmdgIGFuZCBgYHN0cihhTWVzc2FnZSlgYCwgYS5rLmEuCi06bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5fX3N0cl9fYCwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YgYQotZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKLTptb2Q6YGVtYWlsLm1lc3NhZ2VgLgotCi0uLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTc4LCAqLCBcCisuLiBjbGFzczo6IEJ5dGVzR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGNsYXNzIHRha2VzIGEgYmluYXJ5Ci0gICA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgY2FsbGVkICpvdXRmcCogZm9yIGFuIGFyZ3VtZW50LiAgKm91dGZwKiBtdXN0Ci0gICBzdXBwb3J0IGEgOm1ldGg6YHdyaXRlYCBtZXRob2QgdGhhdCBhY2NlcHRzIGJpbmFyeSBkYXRhLgorICAgUmV0dXJuIGEgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgb2JqZWN0IHRoYXQgd2lsbCB3cml0ZSBhbnkgbWVzc2FnZSBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmBmbGF0dGVuYCBtZXRob2QsIG9yIGFueSBzdXJyb2dhdGVlc2NhcGUgZW5jb2RlZCB0ZXh0IHByb3ZpZGVkCisgICB0byB0aGUgOm1ldGg6YHdyaXRlYCBtZXRob2QsIHRvIHRoZSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgKm91dGZwKi4KKyAgICpvdXRmcCogbXVzdCBzdXBwb3J0IGEgYGB3cml0ZWBgIG1ldGhvZCB0aGF0IGFjY2VwdHMgYmluYXJ5IGRhdGEuCiAKLSAgIE9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGEgZmxhZyB0aGF0LCB3aGVuIGBgVHJ1ZWBgLCBwdXRzIGEgYGA+YGAKLSAgIGNoYXJhY3RlciBpbiBmcm9udCBvZiBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyBleGFjdGx5IGFzIGBgRnJvbWBgLAotICAgaS5lLiBgYEZyb21gYCBmb2xsb3dlZCBieSBhIHNwYWNlIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGxpbmUuICBUaGlzIGlzIHRoZQotICAgb25seSBndWFyYW50ZWVkIHBvcnRhYmxlIHdheSB0byBhdm9pZCBoYXZpbmcgc3VjaCBsaW5lcyBiZSBtaXN0YWtlbiBmb3IgYQotICAgVW5peCBtYWlsYm94IGZvcm1hdCBlbnZlbG9wZSBoZWFkZXIgc2VwYXJhdG9yIChzZWUgYFdIWSBUSEUgQ09OVEVOVC1MRU5HVEgKLSAgIEZPUk1BVCBJUyBCQUQgPGh0dHBzOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8gZm9yIGRldGFpbHMpLgotICAgKm1hbmdsZV9mcm9tXyogZGVmYXVsdHMgdG8gYGBUcnVlYGAsIGJ1dCB5b3UgbWlnaHQgd2FudCB0byBzZXQgdGhpcyB0bwotICAgYGBGYWxzZWBgIGlmIHlvdSBhcmUgbm90IHdyaXRpbmcgVW5peCBtYWlsYm94IGZvcm1hdCBmaWxlcy4KKyAgIElmIG9wdGlvbmFsICptYW5nbGVfZnJvbV8qIGlzIGBgVHJ1ZWBgLCBwdXQgYSBgYD5gYCBjaGFyYWN0ZXIgaW4gZnJvbnQgb2YKKyAgIGFueSBsaW5lIGluIHRoZSBib2R5IHRoYXQgc3RhcnRzIHdpdGggdGhlIGV4YWN0IHN0cmluZyBgYCJGcm9tICJgYCwgdGhhdCBpcworICAgYGBGcm9tYGAgZm9sbG93ZWQgYnkgYSBzcGFjZSBhdCB0aGUgYmVnaW5uaW5nIG9mIGEgbGluZS4gICptYW5nbGVfZnJvbV8qCisgICBkZWZhdWx0cyB0byB0aGUgdmFsdWUgb2YgdGhlIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tYW5nbGVfZnJvbV9gCisgICBzZXR0aW5nIG9mIHRoZSAqcG9saWN5KiAod2hpY2ggaXMgYGBUcnVlYGAgZm9yIHRoZQorICAgOmRhdGE6YH5lbWFpbC5wb2xpY3kuY29tcGF0MzJgIHBvbGljeSBhbmQgYGBGYWxzZWBgIGZvciBhbGwgb3RoZXJzKS4KKyAgICptYW5nbGVfZnJvbV8qIGlzIGludGVuZGVkIGZvciB1c2Ugd2hlbiBtZXNzYWdlcyBhcmUgc3RvcmVkIGluIHVuaXggbWJveAorICAgZm9ybWF0IChzZWUgOm1vZDpgbWFpbGJveGAgYW5kIGBXSFkgVEhFIENPTlRFTlQtTEVOR1RIIEZPUk1BVCBJUyBCQUQKKyAgIDxodHRwOi8vd3d3Lmp3ei5vcmcvZG9jL2NvbnRlbnQtbGVuZ3RoLmh0bWw+YF8pLgogCi0gICBPcHRpb25hbCAqbWF4aGVhZGVybGVuKiBzcGVjaWZpZXMgdGhlIGxvbmdlc3QgbGVuZ3RoIGZvciBhIG5vbi1jb250aW51ZWQKLSAgIGhlYWRlci4gIFdoZW4gYSBoZWFkZXIgbGluZSBpcyBsb25nZXIgdGhhbiAqbWF4aGVhZGVybGVuKiAoaW4gY2hhcmFjdGVycywKLSAgIHdpdGggdGFicyBleHBhbmRlZCB0byA4IHNwYWNlcyksIHRoZSBoZWFkZXIgd2lsbCBiZSBzcGxpdCBhcyBkZWZpbmVkIGluIHRoZQotICAgOmNsYXNzOmB+ZW1haWwuaGVhZGVyLkhlYWRlcmAgY2xhc3MuICBTZXQgdG8gemVybyB0byBkaXNhYmxlIGhlYWRlcgotICAgd3JhcHBpbmcuICBUaGUgZGVmYXVsdCBpcyA3OCwgYXMgcmVjb21tZW5kZWQgKGJ1dCBub3QgcmVxdWlyZWQpIGJ5Ci0gICA6cmZjOmAyODIyYC4KKyAgIElmICptYXhoZWFkZXJsZW4qIGlzIG5vdCBgYE5vbmVgYCwgcmVmb2xkIGFueSBoZWFkZXIgbGluZXMgdGhhdCBhcmUgbG9uZ2VyCisgICB0aGFuICptYXhoZWFkZXJsZW4qLCBvciBpZiBgYDBgYCwgZG8gbm90IHJld3JhcCBhbnkgaGVhZGVycy4gIElmCisgICAqbWFuaGVhZGVybGVuKiBpcyBgYE5vbmVgYCAodGhlIGRlZmF1bHQpLCB3cmFwIGhlYWRlcnMgYW5kIG90aGVyIG1lc3NhZ2UKKyAgIGxpbmVzIGFjY29yZGluZyB0byB0aGUgKnBvbGljeSogc2V0dGluZ3MuCiAKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgdXNlIHRoYXQgcG9saWN5IHRvIGNvbnRyb2wgbWVzc2FnZSBnZW5lcmF0aW9uLiAgSWYKKyAgICpwb2xpY3kqIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHVzZSB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgb3IgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgCisgICBvYmplY3QgcGFzc2VkIHRvIGBgZmxhdHRlbmBgIHRvIGNvbnRyb2wgdGhlIG1lc3NhZ2UgZ2VuZXJhdGlvbi4gIFNlZQorICAgOm1vZDpgZW1haWwucG9saWN5YCBmb3IgZGV0YWlscyBvbiB3aGF0ICpwb2xpY3kqIGNvbnRyb2xzLgogCi0gICBUaGUgKnBvbGljeSoga2V5d29yZCBzcGVjaWZpZXMgYSA6bW9kOmB+ZW1haWwucG9saWN5YCBvYmplY3QgdGhhdCBjb250cm9scyBhCi0gICBudW1iZXIgb2YgYXNwZWN0cyBvZiB0aGUgZ2VuZXJhdG9yJ3Mgb3BlcmF0aW9uLiAgSWYgbm8gKnBvbGljeSogaXMgc3BlY2lmaWVkLAotICAgdGhlbiB0aGUgKnBvbGljeSogYXR0YWNoZWQgdG8gdGhlIG1lc3NhZ2Ugb2JqZWN0IHBhc3NlZCB0byA6YXR0cjpgZmxhdHRlbmAKLSAgIGlzIHVzZWQuCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAgbWV0aG9kcyBhcmU6CisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgKm1hbmdsZV9mcm9tXyoKKyAgICAgIGFuZCAqbWF4aGVhZGVybGVuKiBwYXJhbWV0ZXJzIGlzIHRvIGZvbGxvdyB0aGUgcG9saWN5LgogCiAKICAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQogCiAgICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZAogICAgICAgYXQgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYAotICAgICAgaW5zdGFuY2Ugd2FzIGNyZWF0ZWQuICBTdWJwYXJ0cyBhcmUgdmlzaXRlZCBkZXB0aC1maXJzdCBhbmQgdGhlIHJlc3VsdGluZwotICAgICAgdGV4dCB3aWxsIGJlIHByb3Blcmx5IE1JTUUgZW5jb2RlZC4gIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24KLSAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgaXMgYGA4Yml0YGAgKHRoZSBkZWZhdWx0KSwKLSAgICAgIHRoZW4gYW55IGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBpbiB0aGUgb3JpZ2luYWwgcGFyc2VkIG1lc3NhZ2UgdGhhdAotICAgICAgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCB3aWxsIGJlIGNvcGllZCBmYWl0aGZ1bGx5IHRvIHRoZSBvdXRwdXQuICBJZgotICAgICAgYGBjdGVfdHlwZWBgIGlzIGBgN2JpdGBgLCB0aGUgYnl0ZXMgd2lsbCBiZSBjb252ZXJ0ZWQgYXMgbmVlZGVkCi0gICAgICB1c2luZyBhbiBBU0NJSS1jb21wYXRpYmxlIENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmcuICBJbiBwYXJ0aWN1bGFyLAotICAgICAgUkZDLWludmFsaWQgbm9uLUFTQ0lJIGJ5dGVzIGluIGhlYWRlcnMgd2lsbCBiZSBlbmNvZGVkIHVzaW5nIHRoZSBNSU1FCi0gICAgICBgYHVua25vd24tOGJpdGBgIGNoYXJhY3RlciBzZXQsIHRodXMgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KKyAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLgogCi0gICAgICAuLiBYWFg6IFRoZXJlIHNob3VsZCBiZSBhIGNvbXBsZW1lbnRhcnkgb3B0aW9uIHRoYXQganVzdCBkb2VzIHRoZSBSRkMKLSAgICAgICAgIGNvbXBsaWFuY2UgdHJhbnNmb3JtYXRpb24gYnV0IGxlYXZlcyBDVEUgOGJpdCBwYXJ0cyBhbG9uZS4KKyAgICAgIElmIHRoZSA6bW9kOmB+ZW1haWwucG9saWN5YCBvcHRpb24gOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYAorICAgICAgaXMgYGA4Yml0YGAgKHRoZSBkZWZhdWx0KSwgY29weSBhbnkgaGVhZGVycyBpbiB0aGUgb3JpZ2luYWwgcGFyc2VkCisgICAgICBtZXNzYWdlIHRoYXQgaGF2ZSBub3QgYmVlbiBtb2RpZmllZCB0byB0aGUgb3V0cHV0IHdpdGggYW55IGJ5dGVzIHdpdGggdGhlCisgICAgICBoaWdoIGJpdCBzZXQgcmVwcm9kdWNlZCBhcyBpbiB0aGUgb3JpZ2luYWwsIGFuZCBwcmVzZXJ2ZSB0aGUgbm9uLUFTQ0lJCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2Agb2YgYW55IGJvZHkgcGFydHMgdGhhdCBoYXZlIHRoZW0uCisgICAgICBJZiBgYGN0ZV90eXBlYGAgaXMgYGA3Yml0YGAsIGNvbnZlcnQgdGhlIGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhcworICAgICAgbmVlZGVkIHVzaW5nIGFuIEFTQ0lJLWNvbXBhdGlibGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLgorICAgICAgVGhhdCBpcywgdHJhbnNmb3JtIHBhcnRzIHdpdGggbm9uLUFTQ0lJCisgICAgICA6bWFpbGhlYWRlcjpgQ290bmVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdGApIHRvIGFuIEFTQ0lJIGNvbXBhdGliaWxlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AsIGFuZCBlbmNvZGUgUkZDLWludmFsaWQgbm9uLUFTQ0lJCisgICAgICBieXRlcyBpbiBoZWFkZXJzIHVzaW5nIHRoZSBNSU1FIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cworICAgICAgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KIAotICAgICAgTWVzc2FnZXMgcGFyc2VkIHdpdGggYSBCeXRlcyBwYXJzZXIgdGhhdCBoYXZlIGEKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0IHdpbGwgYmUgcmVjb25zdHJ1Y3RlZAotICAgICAgYXMgOGJpdCBpZiB0aGV5IGhhdmUgbm90IGJlZW4gbW9kaWZpZWQuCisgICAgICAuLiBYWFg6IFRoZXJlIHNob3VsZCBiZSBhbiBvcHRpb24gdGhhdCBqdXN0IGRvZXMgdGhlIFJGQworICAgICAgICAgY29tcGxpYW5jZSB0cmFuc2Zvcm1hdGlvbiBvbiBoZWFkZXJzIGJ1dCBsZWF2ZXMgQ1RFIDhiaXQgcGFydHMgYWxvbmUuCiAKLSAgICAgIE9wdGlvbmFsICp1bml4ZnJvbSogaXMgYSBmbGFnIHRoYXQgZm9yY2VzIHRoZSBwcmludGluZyBvZiB0aGUgZW52ZWxvcGUKLSAgICAgIGhlYWRlciBkZWxpbWl0ZXIgYmVmb3JlIHRoZSBmaXJzdCA6cmZjOmAyODIyYCBoZWFkZXIgb2YgdGhlIHJvb3QgbWVzc2FnZQotICAgICAgb2JqZWN0LiAgSWYgdGhlIHJvb3Qgb2JqZWN0IGhhcyBubyBlbnZlbG9wZSBoZWFkZXIsIGEgc3RhbmRhcmQgb25lIGlzCi0gICAgICBjcmFmdGVkLiAgQnkgZGVmYXVsdCwgdGhpcyBpcyBzZXQgdG8gYGBGYWxzZWBgIHRvIGluaGliaXQgdGhlIHByaW50aW5nIG9mCi0gICAgICB0aGUgZW52ZWxvcGUgZGVsaW1pdGVyLgotCisgICAgICBJZiAqdW5peGZyb20qIGlzIGBgVHJ1ZWBgLCBwcmludCB0aGUgZW52ZWxvcGUgaGVhZGVyIGRlbGltaXRlciB1c2VkIGJ5CisgICAgICB0aGUgVW5peCBtYWlsYm94IGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgKSBiZWZvcmUgdGhlIGZpcnN0IG9mIHRoZQorICAgICAgOnJmYzpgNTMyMmAgaGVhZGVycyBvZiB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIElmIHRoZSByb290IG9iamVjdCBoYXMKKyAgICAgIG5vIGVudmVsb3BlIGhlYWRlciwgY3JhZnQgYSBzdGFuZGFyZCBvbmUuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICAgICBOb3RlIHRoYXQgZm9yIHN1YnBhcnRzLCBubyBlbnZlbG9wZSBoZWFkZXIgaXMgZXZlciBwcmludGVkLgogCi0gICAgICBPcHRpb25hbCAqbGluZXNlcCogc3BlY2lmaWVzIHRoZSBsaW5lIHNlcGFyYXRvciBjaGFyYWN0ZXIgdXNlZCB0bwotICAgICAgdGVybWluYXRlIGxpbmVzIGluIHRoZSBvdXRwdXQuICBJZiBzcGVjaWZpZWQgaXQgb3ZlcnJpZGVzIHRoZSB2YWx1ZQotICAgICAgc3BlY2lmaWVkIGJ5IHRoZSBgYEdlbmVyYXRvcmBgXCBvciAqbXNnKlwgJ3MgYGBwb2xpY3lgYC4KKyAgICAgIElmICpsaW5lc2VwKiBpcyBub3QgYGBOb25lYGAsIHVzZSBpdCBhcyB0aGUgc2VwYXJhdG9yIGNoYXJhY3RlciBiZXR3ZWVuCisgICAgICBhbGwgdGhlIGxpbmVzIG9mIHRoZSBmbGF0dGVuZWQgbWVzc2FnZS4gIElmICpsaW5lc2VwKiBpcyBgYE5vbmVgYCAodGhlCisgICAgICBkZWZhdWx0KSwgdXNlIHRoZSB2YWx1ZSBzcGVjaWZpZWQgaW4gdGhlICpwb2xpY3kqLgorCisgICAgICAuLiBYWFg6IGZsYXR0ZW4gc2hvdWxkIHRha2UgYSAqcG9saWN5KiBrZXl3b3JkLgorCiAKICAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQogCiAgICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCBpbnN0YW5jZSB3aXRoCi0gICAgICB0aGUgZXhhY3Qgc2FtZSBvcHRpb25zLgorICAgICAgdGhlIGV4YWN0IHNhbWUgb3B0aW9uIHNldHRpbmdzLCBhbmQgKmZwKiBhcyB0aGUgbmV3ICpvdXRmcCouCisKIAogICAgLi4gbWV0aG9kOjogd3JpdGUocykKIAotICAgICAgV3JpdGUgdGhlIHN0cmluZyAqcyogdG8gdGhlIHVuZGVybHlpbmcgZmlsZSBvYmplY3QuICAqcyogaXMgZW5jb2RlZCB1c2luZwotICAgICAgdGhlIGBgQVNDSUlgYCBjb2RlYyBhbmQgd3JpdHRlbiB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICAqb3V0ZnAqCi0gICAgICAqb3V0ZnAqIHBhc3NlZCB0byB0aGUgOmNsYXNzOmBCeXRlc0dlbmVyYXRvcmAncyBjb25zdHJ1Y3Rvci4gIFRoaXMKLSAgICAgIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZSBBUEkgZm9yIDpjbGFzczpgQnl0ZXNHZW5lcmF0b3JgIGluc3RhbmNlcwotICAgICAgdG8gYmUgdXNlZCBpbiB0aGUgOmZ1bmM6YHByaW50YCBmdW5jdGlvbi4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0KLVRoZSA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZGVyaXZlZCBjbGFzcywgY2FsbGVkCi06Y2xhc3M6YERlY29kZWRHZW5lcmF0b3JgIHdoaWNoIGlzIGxpa2UgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLAotZXhjZXB0IHRoYXQgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0cyBhcmUgc3Vic3RpdHV0ZWQgd2l0aCBhIGZvcm1hdCBzdHJpbmcKLXJlcHJlc2VudGluZyB0aGUgcGFydC4KKyAgICAgIEVuY29kZSAqcyogdXNpbmcgdGhlIGBgQVNDSUlgYCBjb2RlYyBhbmQgdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAgZXJyb3IKKyAgICAgIGhhbmRsZXIsIGFuZCBwYXNzIGl0IHRvIHRoZSAqd3JpdGUqIG1ldGhvZCBvZiB0aGUgKm91dGZwKiBwYXNzZWQgdG8gdGhlCisgICAgICA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCdzIGNvbnN0cnVjdG9yLgogCiAKLS4uIGNsYXNzOjogRGVjb2RlZEdlbmVyYXRvcihvdXRmcCwgbWFuZ2xlX2Zyb21fPVRydWUsIG1heGhlYWRlcmxlbj03OCwgZm10PU5vbmUpCitBcyBhIGNvbnZlbmllbmNlLCA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgcHJvdmlkZXMgdGhlIG1ldGhvZHMKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuYXNfYnl0ZXNgIGFuZCBgYGJ5dGVzKGFNZXNzYWdlKWBgIChhLmsuYS4KKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuX19ieXRlc19fYCksIHdoaWNoIHNpbXBsaWZ5IHRoZSBnZW5lcmF0aW9uIG9mCithIHNlcmlhbGl6ZWQgYmluYXJ5IHJlcHJlc2VudGF0aW9uIG9mIGEgbWVzc2FnZSBvYmplY3QuICBGb3IgbW9yZSBkZXRhaWwsIHNlZQorOm1vZDpgZW1haWwubWVzc2FnZWAuCiAKLSAgIFRoaXMgY2xhc3MsIGRlcml2ZWQgZnJvbSA6Y2xhc3M6YEdlbmVyYXRvcmAgd2Fsa3MgdGhyb3VnaCBhbGwgdGhlIHN1YnBhcnRzIG9mIGEKLSAgIG1lc3NhZ2UuICBJZiB0aGUgc3VicGFydCBpcyBvZiBtYWluIHR5cGUgOm1pbWV0eXBlOmB0ZXh0YCwgdGhlbiBpdCBwcmludHMgdGhlCi0gICBkZWNvZGVkIHBheWxvYWQgb2YgdGhlIHN1YnBhcnQuIE9wdGlvbmFsICpfbWFuZ2xlX2Zyb21fKiBhbmQgKm1heGhlYWRlcmxlbiogYXJlCi0gICBhcyB3aXRoIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcy4KIAotICAgSWYgdGhlIHN1YnBhcnQgaXMgbm90IG9mIG1haW4gdHlwZSA6bWltZXR5cGU6YHRleHRgLCBvcHRpb25hbCAqZm10KiBpcyBhIGZvcm1hdAotICAgc3RyaW5nIHRoYXQgaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBtZXNzYWdlIHBheWxvYWQuICpmbXQqIGlzIGV4cGFuZGVkIHdpdGggdGhlCi0gICBmb2xsb3dpbmcga2V5d29yZHMsIGBgJShrZXl3b3JkKXNgYCBmb3JtYXQ6CitCZWNhdXNlIHN0cmluZ3MgY2Fubm90IHJlcHJlc2VudCBiaW5hcnkgZGF0YSwgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBjbGFzcyBtdXN0Citjb252ZXJ0IGFueSBiaW5hcnkgZGF0YSBpbiBhbnkgbWVzc2FnZSBpdCBmbGF0dGVucyB0byBhbiBBU0NJSSBjb21wYXRpYmxlCitmb3JtYXQsIGJ5IGNvbnZlcnRpbmcgdGhlbSB0byBhbiBBU0NJSSBjb21wYXRpYmxlCis6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlcl9FbmNvZGluZ2AuICBVc2luZyB0aGUgdGVybWlub2xvZ3kgb2YgdGhlIGVtYWlsCitSRkNzLCB5b3UgY2FuIHRoaW5rIG9mIHRoaXMgYXMgOmNsYXNzOmBHZW5lcmF0b3JgIHNlcmlhbGl6aW5nIHRvIGFuIEkvTyBzdHJlYW0KK3RoYXQgaXMgbm90ICI4IGJpdCBjbGVhbiIuICBJbiBvdGhlciB3b3JkcywgbW9zdCBhcHBsaWNhdGlvbnMgd2lsbCB3YW50Cit0byBiZSB1c2luZyA6Y2xhc3M6YEJ5dGVzR2VuZXJhdG9yYCwgYW5kIG5vdCA6Y2xhc3M6YEdlbmVyYXRvcmAuCisKKy4uIGNsYXNzOjogR2VuZXJhdG9yKG91dGZwLCBtYW5nbGVfZnJvbV89Tm9uZSwgbWF4aGVhZGVybGVuPU5vbmUsICosIFwKKyAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1Ob25lKQorCisgICBSZXR1cm4gYSA6Y2xhc3M6YEdlbmVyYXRvcmAgb2JqZWN0IHRoYXQgd2lsbCB3cml0ZSBhbnkgbWVzc2FnZSBwcm92aWRlZAorICAgdG8gdGhlIDptZXRoOmBmbGF0dGVuYCBtZXRob2QsIG9yIGFueSB0ZXh0IHByb3ZpZGVkIHRvIHRoZSA6bWV0aDpgd3JpdGVgCisgICBtZXRob2QsIHRvIHRoZSA6dGVybTpgZmlsZS1saWtlIG9iamVjdGAgKm91dGZwKi4gICpvdXRmcCogbXVzdCBzdXBwb3J0IGEKKyAgIGBgd3JpdGVgYCBtZXRob2QgdGhhdCBhY2NlcHRzIHN0cmluZyBkYXRhLgorCisgICBJZiBvcHRpb25hbCAqbWFuZ2xlX2Zyb21fKiBpcyBgYFRydWVgYCwgcHV0IGEgYGA+YGAgY2hhcmFjdGVyIGluIGZyb250IG9mCisgICBhbnkgbGluZSBpbiB0aGUgYm9keSB0aGF0IHN0YXJ0cyB3aXRoIHRoZSBleGFjdCBzdHJpbmcgYGAiRnJvbSAiYGAsIHRoYXQgaXMKKyAgIGBgRnJvbWBgIGZvbGxvd2VkIGJ5IGEgc3BhY2UgYXQgdGhlIGJlZ2lubmluZyBvZiBhIGxpbmUuICAqbWFuZ2xlX2Zyb21fKgorICAgZGVmYXVsdHMgdG8gdGhlIHZhbHVlIG9mIHRoZSA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kubWFuZ2xlX2Zyb21fYAorICAgc2V0dGluZyBvZiB0aGUgKnBvbGljeSogKHdoaWNoIGlzIGBgVHJ1ZWBgIGZvciB0aGUKKyAgIDpkYXRhOmB+ZW1haWwucG9saWN5LmNvbXBhdDMyYCBwb2xpY3kgYW5kIGBgRmFsc2VgYCBmb3IgYWxsIG90aGVycykuCisgICAqbWFuZ2xlX2Zyb21fKiBpcyBpbnRlbmRlZCBmb3IgdXNlIHdoZW4gbWVzc2FnZXMgYXJlIHN0b3JlZCBpbiB1bml4IG1ib3gKKyAgIGZvcm1hdCAoc2VlIDptb2Q6YG1haWxib3hgIGFuZCBgV0hZIFRIRSBDT05URU5ULUxFTkdUSCBGT1JNQVQgSVMgQkFECisgICA8aHR0cDovL3d3dy5qd3oub3JnL2RvYy9jb250ZW50LWxlbmd0aC5odG1sPmBfKS4KKworICAgSWYgKm1heGhlYWRlcmxlbiogaXMgbm90IGBgTm9uZWBgLCByZWZvbGQgYW55IGhlYWRlciBsaW5lcyB0aGF0IGFyZSBsb25nZXIKKyAgIHRoYW4gKm1heGhlYWRlcmxlbiosIG9yIGlmIGBgMGBgLCBkbyBub3QgcmV3cmFwIGFueSBoZWFkZXJzLiAgSWYKKyAgICptYW5oZWFkZXJsZW4qIGlzIGBgTm9uZWBgICh0aGUgZGVmYXVsdCksIHdyYXAgaGVhZGVycyBhbmQgb3RoZXIgbWVzc2FnZQorICAgbGluZXMgYWNjb3JkaW5nIHRvIHRoZSAqcG9saWN5KiBzZXR0aW5ncy4KKworICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkLCB1c2UgdGhhdCBwb2xpY3kgdG8gY29udHJvbCBtZXNzYWdlIGdlbmVyYXRpb24uICBJZgorICAgKnBvbGljeSogaXMgYGBOb25lYGAgKHRoZSBkZWZhdWx0KSwgdXNlIHRoZSBwb2xpY3kgYXNzb2NpYXRlZCB3aXRoIHRoZQorICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYCBvciA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCBwYXNzZWQgdG8gYGBmbGF0dGVuYGAgdG8gY29udHJvbCB0aGUgbWVzc2FnZSBnZW5lcmF0aW9uLiAgU2VlCisgICA6bW9kOmBlbWFpbC5wb2xpY3lgIGZvciBkZXRhaWxzIG9uIHdoYXQgKnBvbGljeSogY29udHJvbHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBUaGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGUgKm1hbmdsZV9mcm9tXyoKKyAgICAgIGFuZCAqbWF4aGVhZGVybGVuKiBwYXJhbWV0ZXJzIGlzIHRvIGZvbGxvdyB0aGUgcG9saWN5LgorCisKKyAgIC4uIG1ldGhvZDo6IGZsYXR0ZW4obXNnLCB1bml4ZnJvbT1GYWxzZSwgbGluZXNlcD1Ob25lKQorCisgICAgICBQcmludCB0aGUgdGV4dHVhbCByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIHJvb3RlZAorICAgICAgYXQgKm1zZyogdG8gdGhlIG91dHB1dCBmaWxlIHNwZWNpZmllZCB3aGVuIHRoZSA6Y2xhc3M6YEdlbmVyYXRvcmAKKyAgICAgIGluc3RhbmNlIHdhcyBjcmVhdGVkLgorCisgICAgICBJZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgb3B0aW9uIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAKKyAgICAgIGlzIGBgOGJpdGBgLCBnZW5lcmF0ZSB0aGUgbWVzc2FnZSBhcyBpZiB0aGUgb3B0aW9uIHdlcmUgc2V0IHRvIGBgN2JpdGBgLgorICAgICAgKFRoaXMgaXMgcmVxdWlyZWQgYmVjYXVzZSBzdHJpbmdzIGNhbm5vdCByZXByZXNlbnQgbm9uLUFTQ0lJIGJ5dGVzLikKKyAgICAgIENvbnZlcnQgYW55IGJ5dGVzIHdpdGggdGhlIGhpZ2ggYml0IHNldCBhcyBuZWVkZWQgdXNpbmcgYW4KKyAgICAgIEFTQ0lJLWNvbXBhdGlibGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgVGhhdCBpcywKKyAgICAgIHRyYW5zZm9ybSBwYXJ0cyB3aXRoIG5vbi1BU0NJSSA6bWFpbGhlYWRlcjpgQ290bmVudC1UcmFuc2Zlci1FbmNvZGluZ2AKKyAgICAgICg6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdGApIHRvIGFuIEFTQ0lJIGNvbXBhdGliaWxlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZ2AsIGFuZCBlbmNvZGUgUkZDLWludmFsaWQgbm9uLUFTQ0lJCisgICAgICBieXRlcyBpbiBoZWFkZXJzIHVzaW5nIHRoZSBNSU1FIGBgdW5rbm93bi04Yml0YGAgY2hhcmFjdGVyIHNldCwgdGh1cworICAgICAgcmVuZGVyaW5nIHRoZW0gUkZDLWNvbXBsaWFudC4KKworICAgICAgSWYgKnVuaXhmcm9tKiBpcyBgYFRydWVgYCwgcHJpbnQgdGhlIGVudmVsb3BlIGhlYWRlciBkZWxpbWl0ZXIgdXNlZCBieQorICAgICAgdGhlIFVuaXggbWFpbGJveCBmb3JtYXQgKHNlZSA6bW9kOmBtYWlsYm94YCkgYmVmb3JlIHRoZSBmaXJzdCBvZiB0aGUKKyAgICAgIDpyZmM6YDUzMjJgIGhlYWRlcnMgb2YgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJZiB0aGUgcm9vdCBvYmplY3QgaGFzCisgICAgICBubyBlbnZlbG9wZSBoZWFkZXIsIGNyYWZ0IGEgc3RhbmRhcmQgb25lLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLgorICAgICAgTm90ZSB0aGF0IGZvciBzdWJwYXJ0cywgbm8gZW52ZWxvcGUgaGVhZGVyIGlzIGV2ZXIgcHJpbnRlZC4KKworICAgICAgSWYgKmxpbmVzZXAqIGlzIG5vdCBgYE5vbmVgYCwgdXNlIGl0IGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyIGJldHdlZW4KKyAgICAgIGFsbCB0aGUgbGluZXMgb2YgdGhlIGZsYXR0ZW5lZCBtZXNzYWdlLiAgSWYgKmxpbmVzZXAqIGlzIGBgTm9uZWBgICh0aGUKKyAgICAgIGRlZmF1bHQpLCB1c2UgdGhlIHZhbHVlIHNwZWNpZmllZCBpbiB0aGUgKnBvbGljeSouCisKKyAgICAgIC4uIFhYWDogZmxhdHRlbiBzaG91bGQgdGFrZSBhICpwb2xpY3kqIGtleXdvcmQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCisgICAgICAgICBBZGRlZCBzdXBwb3J0IGZvciByZS1lbmNvZGluZyBgYDhiaXRgYCBtZXNzYWdlIGJvZGllcywgYW5kIHRoZQorICAgICAgICAgKmxpbmVzZXAqIGFyZ3VtZW50LgorCisKKyAgIC4uIG1ldGhvZDo6IGNsb25lKGZwKQorCisgICAgICBSZXR1cm4gYW4gaW5kZXBlbmRlbnQgY2xvbmUgb2YgdGhpcyA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2Ugd2l0aCB0aGUKKyAgICAgIGV4YWN0IHNhbWUgb3B0aW9ucywgYW5kICpmcCogYXMgdGhlIG5ldyAqb3V0ZnAqLgorCisKKyAgIC4uIG1ldGhvZDo6IHdyaXRlKHMpCisKKyAgICAgIFdyaXRlICpzKiB0byB0aGUgKndyaXRlKiBtZXRob2Qgb2YgdGhlICpvdXRmcCogcGFzc2VkIHRvIHRoZQorICAgICAgOmNsYXNzOmBHZW5lcmF0b3JgJ3MgY29uc3RydWN0b3IuICBUaGlzIHByb3ZpZGVzIGp1c3QgZW5vdWdoIGZpbGUtbGlrZQorICAgICAgQVBJIGZvciA6Y2xhc3M6YEdlbmVyYXRvcmAgaW5zdGFuY2VzIHRvIGJlIHVzZWQgaW4gdGhlIDpmdW5jOmBwcmludGAKKyAgICAgIGZ1bmN0aW9uLgorCisKK0FzIGEgY29udmVuaWVuY2UsIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgbWV0aG9kcworOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5hc19zdHJpbmdgIGFuZCBgYHN0cihhTWVzc2FnZSlgYCAoYS5rLmEuCis6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLl9fc3RyX19gKSwgd2hpY2ggc2ltcGxpZnkgdGhlIGdlbmVyYXRpb24gb2YKK2EgZm9ybWF0dGVkIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIG1lc3NhZ2Ugb2JqZWN0LiAgRm9yIG1vcmUgZGV0YWlsLCBzZWUKKzptb2Q6YGVtYWlsLm1lc3NhZ2VgLgorCisKK1RoZSA6bW9kOmBlbWFpbC5nZW5lcmF0b3JgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIGEgZGVyaXZlZCBjbGFzcywKKzpjbGFzczpgRGVjb2RlZEdlbmVyYXRvcmAsIHdoaWNoIGlzIGxpa2UgdGhlIDpjbGFzczpgR2VuZXJhdG9yYCBiYXNlIGNsYXNzLAorZXhjZXB0IHRoYXQgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0cyBhcmUgbm90IHNlcmlhbGl6ZWQsIGJ1dCBhcmUgaW5zdGVhZAorcmVwcmVzZW50ZWQgaW4gdGhlIG91dHB1dCBzdHJlYW0gYnkgYSBzdHJpbmcgZGVyaXZlZCBmcm9tIGEgdGVtcGxhdGUgZmlsbGVkCitpbiB3aXRoIGluZm9ybWF0aW9uIGFib3V0IHRoZSBwYXJ0LgorCisuLiBjbGFzczo6IERlY29kZWRHZW5lcmF0b3Iob3V0ZnAsIG1hbmdsZV9mcm9tXz1Ob25lLCBtYXhoZWFkZXJsZW49Tm9uZSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZtdD1Ob25lLCAqLCBwb2xpY3k9Tm9uZSkKKworICAgQWN0IGxpa2UgOmNsYXNzOmBHZW5lcmF0b3JgLCBleGNlcHQgdGhhdCBmb3IgYW55IHN1YnBhcnQgb2YgdGhlIG1lc3NhZ2UKKyAgIHBhc3NlZCB0byA6bWV0aDpgR2VuZXJhdG9yLmZsYXR0ZW5gLCBpZiB0aGUgc3VicGFydCBpcyBvZiBtYWluIHR5cGUKKyAgIDptaW1ldHlwZTpgdGV4dGAsIHByaW50IHRoZSBkZWNvZGVkIHBheWxvYWQgb2YgdGhlIHN1YnBhcnQsIGFuZCBpZiB0aGUgbWFpbgorICAgdHlwZSBpcyBub3QgOm1pbWV0eXBlOmB0ZXh0YCwgaW5zdGVhZCBvZiBwcmludGluZyBpdCBmaWxsIGluIHRoZSBzdHJpbmcKKyAgICpmbXQqIHVzaW5nIGluZm9ybWF0aW9uIGZyb20gdGhlIHBhcnQgYW5kIHByaW50IHRoZSByZXN1bHRpbmcKKyAgIGZpbGxlZC1pbiBzdHJpbmcuCisKKyAgIFRvIGZpbGwgaW4gKmZtdCosIGV4ZWN1dGUgYGBmbXQgJSBwYXJ0X2luZm9gYCwgd2hlcmUgYGBwYXJ0X2luZm9gYAorICAgaXMgYSBkaWN0aW9uYXJ5IGNvbXBvc2VkIG9mIHRoZSBmb2xsb3dpbmcga2V5cyBhbmQgdmFsdWVzOgogCiAgICAqIGBgdHlwZWBgIC0tIEZ1bGwgTUlNRSB0eXBlIG9mIHRoZSBub24tXCA6bWltZXR5cGU6YHRleHRgIHBhcnQKIApAQCAtMjI1LDE1ICsyNTksMjEgQEAKIAogICAgKiBgYGVuY29kaW5nYGAgLS0gQ29udGVudCB0cmFuc2ZlciBlbmNvZGluZyBvZiB0aGUgbm9uLVwgOm1pbWV0eXBlOmB0ZXh0YCBwYXJ0CiAKLSAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciAqZm10KiBpcyBgYE5vbmVgYCwgbWVhbmluZyA6OgorICAgSWYgKmZtdCogaXMgYGBOb25lYGAsIHVzZSB0aGUgZm9sbG93aW5nIGRlZmF1bHQgKmZtdCo6CiAKLSAgICAgIFtOb24tdGV4dCAoJSh0eXBlKXMpIHBhcnQgb2YgbWVzc2FnZSBvbWl0dGVkLCBmaWxlbmFtZSAlKGZpbGVuYW1lKXNdCisgICAgICAiW05vbi10ZXh0ICglKHR5cGUpcykgcGFydCBvZiBtZXNzYWdlIG9taXR0ZWQsIGZpbGVuYW1lICUoZmlsZW5hbWUpc10iCisKKyAgIE9wdGlvbmFsICpfbWFuZ2xlX2Zyb21fKiBhbmQgKm1heGhlYWRlcmxlbiogYXJlIGFzIHdpdGggdGhlCisgICA6Y2xhc3M6YEdlbmVyYXRvcmAgYmFzZSBjbGFzcy4KIAogCiAuLiBydWJyaWM6OiBGb290bm90ZXMKIAotLi4gWyNdIFRoaXMgc3RhdGVtZW50IGFzc3VtZXMgdGhhdCB5b3UgdXNlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5nIGZvciB0aGUKLSAgICAgICBgYHVuaXhmcm9tYGAgYXJndW1lbnQsIGFuZCB0aGF0IHlvdSBzZXQgbWF4aGVhZGVybGVuPTAgKHdoaWNoIHdpbGwKLSAgICAgICBwcmVzZXJ2ZSB3aGF0ZXZlciB0aGUgaW5wdXQgbGluZSBsZW5ndGhzIHdlcmUpLiAgSXQgaXMgYWxzbyBub3Qgc3RyaWN0bHkKLSAgICAgICB0cnVlLCBzaW5jZSBpbiBtYW55IGNhc2VzIHJ1bnMgb2Ygd2hpdGVzcGFjZSBpbiBoZWFkZXJzIGFyZSBjb2xsYXBzZWQKLSAgICAgICBpbnRvIHNpbmdsZSBibGFua3MuICBUaGUgbGF0dGVyIGlzIGEgYnVnIHRoYXQgd2lsbCBldmVudHVhbGx5IGJlIGZpeGVkLgorLi4gWyNdIFRoaXMgc3RhdGVtZW50IGFzc3VtZXMgdGhhdCB5b3UgdXNlIHRoZSBhcHByb3ByaWF0ZSBzZXR0aW5nIGZvcgorICAgICAgIGBgdW5peGZyb21gYCwgYW5kIHRoYXQgdGhlcmUgYXJlIG5vIDptb2Q6YHBvbGljeWAgc2V0dGluZ3MgY2FsbGluZyBmb3IKKyAgICAgICBhdXRvbWF0aWMgYWRqdXN0bWVudHMgKGZvciBleGFtcGxlLAorICAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5yZWZvbGRfc291cmNlYCBtdXN0IGJlIGBgbm9uZWBgLCB3aGljaCBpcworICAgICAgICpub3QqIHRoZSBkZWZhdWx0KS4gIEl0IGlzIGFsc28gbm90IDEwMCUgdHJ1ZSwgc2luY2UgaWYgdGhlIG1lc3NhZ2UKKyAgICAgICBkb2VzIG5vdCBjb25mb3JtIHRvIHRoZSBSRkMgc3RhbmRhcmRzIG9jY2FzaW9uYWxseSBpbmZvcm1hdGlvbiBhYm91dCB0aGUKKyAgICAgICBleGFjdCBvcmlnaW5hbCB0ZXh0IGlzIGxvc3QgZHVyaW5nIHBhcnNpbmcgZXJyb3IgcmVjb3ZlcnkuICBJdCBpcyBhIGdvYWwKKyAgICAgICB0byBmaXggdGhlc2UgbGF0dGVyIGVkZ2UgY2FzZXMgd2hlbiBwb3NzaWJsZS4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXIucnN0CmluZGV4IGU5NDgzN2MuLjA3MTUyYzIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVyLnJzdApAQCAtOCw2ICs4LDE0IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKK1RoaXMgbW9kdWxlIGlzIHBhcnQgb2YgdGhlIGxlZ2FjeSAoYGBDb21wYXQzMmBgKSBlbWFpbCBBUEkuICBJbiB0aGUgY3VycmVudCBBUEkKK2VuY29kaW5nIGFuZCBkZWNvZGluZyBvZiBoZWFkZXJzIGlzIGhhbmRsZWQgdHJhbnNwYXJlbnRseSBieSB0aGUKK2RpY3Rpb25hcnktbGlrZSBBUEkgb2YgdGhlIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYCBjbGFzcy4gIEluCithZGRpdGlvbiB0byB1c2VzIGluIGxlZ2FjeSBjb2RlLCB0aGlzIG1vZHVsZSBjYW4gYmUgdXNlZnVsIGluIGFwcGxpY2F0aW9ucyB0aGF0CituZWVkIHRvIGNvbXBsZXRlbHkgY29udHJvbCB0aGUgY2hhcmFjdGVyIHNldHMgdXNlZCB3aGVuIGVuY29kaW5nIGhlYWRlcnMuCisKK1RoZSByZW1haW5pbmcgdGV4dCBpbiB0aGlzIHNlY3Rpb24gaXMgdGhlIG9yaWdpbmFsIGRvY3VtZW50YXRpb24gb2YgdGhlIG1vZHVsZS4KKwogOnJmYzpgMjgyMmAgaXMgdGhlIGJhc2Ugc3RhbmRhcmQgdGhhdCBkZXNjcmliZXMgdGhlIGZvcm1hdCBvZiBlbWFpbCBtZXNzYWdlcy4KIEl0IGRlcml2ZXMgZnJvbSB0aGUgb2xkZXIgOnJmYzpgODIyYCBzdGFuZGFyZCB3aGljaCBjYW1lIGludG8gd2lkZXNwcmVhZCB1c2UgYXQKIGEgdGltZSB3aGVuIG1vc3QgZW1haWwgd2FzIGNvbXBvc2VkIG9mIEFTQ0lJIGNoYXJhY3RlcnMgb25seS4gIDpyZmM6YDI4MjJgIGlzIGEKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLmhlYWRlcnJlZ2lzdHJ5LnJzdAppbmRleCAwNzA3YmQ4Li4yYzgzMGNmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5oZWFkZXJyZWdpc3RyeS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvZW1haWwuaGVhZGVycmVnaXN0cnkucnN0CkBAIC03LDIwICs3LDEyIEBACiAuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIC4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KIAotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBhcyBhIDp0ZXJtOmBwcm92aXNpb25hbCBtb2R1bGUgPHByb3Zpc2lvbmFsIHBhY2thZ2U+YC4KLQogKipTb3VyY2UgY29kZToqKiA6c291cmNlOmBMaWIvZW1haWwvaGVhZGVycmVnaXN0cnkucHlgCiAKLS4uIG5vdGU6OgotCi0gICBUaGUgaGVhZGVycmVnaXN0cnkgbW9kdWxlIGhhcyBiZWVuIGluY2x1ZGVkIGluIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IG9uIGEKLSAgIDp0ZXJtOmBwcm92aXNpb25hbCBiYXNpcyA8cHJvdmlzaW9uYWwgcGFja2FnZT5gLiBCYWNrd2FyZHMgaW5jb21wYXRpYmxlCi0gICBjaGFuZ2VzICh1cCB0byBhbmQgaW5jbHVkaW5nIHJlbW92YWwgb2YgdGhlIG1vZHVsZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIC0tLS0tLS0tLS0tLS0tCiAKKy4uIHZlcnNpb25hZGRlZDo6IDMuNiBbMV1fCisKIEhlYWRlcnMgYXJlIHJlcHJlc2VudGVkIGJ5IGN1c3RvbWl6ZWQgc3ViY2xhc3NlcyBvZiA6Y2xhc3M6YHN0cmAuICBUaGUKIHBhcnRpY3VsYXIgY2xhc3MgdXNlZCB0byByZXByZXNlbnQgYSBnaXZlbiBoZWFkZXIgaXMgZGV0ZXJtaW5lZCBieSB0aGUKIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmhlYWRlcl9mYWN0b3J5YCBvZiB0aGUgOm1vZDpgfmVtYWlsLnBvbGljeWAgaW4KQEAgLTg2LDEwICs3OCwxMSBAQAogICAgLi4gbWV0aG9kOjogZm9sZCgqLCBwb2xpY3kpCiAKICAgICAgIFJldHVybiBhIHN0cmluZyBjb250YWluaW5nIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5saW5lc2VwYAotICAgICAgY2hhcmFjdGVycyBhcyByZXF1aXJlZCB0byBjb3JyZWN0bHkgZm9sZCB0aGUgaGVhZGVyIGFjY29yZGluZwotICAgICAgdG8gKnBvbGljeSouICBBIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5jdGVfdHlwZWAgb2YKLSAgICAgIGBgOGJpdGBgIHdpbGwgYmUgdHJlYXRlZCBhcyBpZiBpdCB3ZXJlIGBgN2JpdGBgLCBzaW5jZSBzdHJpbmdzCi0gICAgICBtYXkgbm90IGNvbnRhaW4gYmluYXJ5IGRhdGEuCisgICAgICBjaGFyYWN0ZXJzIGFzIHJlcXVpcmVkIHRvIGNvcnJlY3RseSBmb2xkIHRoZSBoZWFkZXIgYWNjb3JkaW5nIHRvCisgICAgICAqcG9saWN5Ki4gIEEgOmF0dHI6YH5lbWFpbC5wb2xpY3kuUG9saWN5LmN0ZV90eXBlYCBvZiBgYDhiaXRgYCB3aWxsIGJlCisgICAgICB0cmVhdGVkIGFzIGlmIGl0IHdlcmUgYGA3Yml0YGAsIHNpbmNlIGhlYWRlcnMgbWF5IG5vdCBjb250YWluIGFyYml0cmFyeQorICAgICAgYmluYXJ5IGRhdGEuICBJZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5FbWFpbFBvbGljeS51dGY4YCBpcyBgYEZhbHNlYGAsCisgICAgICBub24tQVNDSUkgZGF0YSB3aWxsIGJlIDpyZmM6YDIwNDdgIGVuY29kZWQuCiAKIAogICAgYGBCYXNlSGVhZGVyYGAgYnkgaXRzZWxmIGNhbm5vdCBiZSB1c2VkIHRvIGNyZWF0ZSBhIGhlYWRlciBvYmplY3QuICBJdApAQCAtMTA2LDcgKzk5LDcgQEAKICAgIHZhbHVlcyBmb3IgYXQgbGVhc3QgdGhlIGtleXMgYGBkZWNvZGVkYGAgYW5kIGBgZGVmZWN0c2BgLiAgYGBkZWNvZGVkYGAKICAgIHNob3VsZCBiZSB0aGUgc3RyaW5nIHZhbHVlIGZvciB0aGUgaGVhZGVyICh0aGF0IGlzLCB0aGUgaGVhZGVyIHZhbHVlIGZ1bGx5CiAgICBkZWNvZGVkIHRvIHVuaWNvZGUpLiAgVGhlIHBhcnNlIG1ldGhvZCBzaG91bGQgYXNzdW1lIHRoYXQgKnN0cmluZyogbWF5Ci0gICBjb250YWluIHRyYW5zcG9ydCBlbmNvZGVkIHBhcnRzLCBidXQgc2hvdWxkIGNvcnJlY3RseSBoYW5kbGUgYWxsIHZhbGlkCisgICBjb250YWluIGNvbnRlbnQtdHJhbnNmZXItZW5jb2RlZCBwYXJ0cywgYnV0IHNob3VsZCBjb3JyZWN0bHkgaGFuZGxlIGFsbCB2YWxpZAogICAgdW5pY29kZSBjaGFyYWN0ZXJzIGFzIHdlbGwgc28gdGhhdCBpdCBjYW4gcGFyc2UgdW4tZW5jb2RlZCBoZWFkZXIgdmFsdWVzLgogCiAgICBgYEJhc2VIZWFkZXJgYCdzIGBgX19uZXdfX2BgIHRoZW4gY3JlYXRlcyB0aGUgaGVhZGVyIGluc3RhbmNlLCBhbmQgY2FsbHMgaXRzCkBAIC0xMzUsMTEgKzEyOCwxMCBAQAogICAgbWVjaGFuaXNtIGZvciBlbmNvZGluZyBub24tQVNDSUkgdGV4dCBhcyBBU0NJSSBjaGFyYWN0ZXJzIHdpdGhpbiBhIGhlYWRlcgogICAgdmFsdWUuICBXaGVuIGEgKnZhbHVlKiBjb250YWluaW5nIGVuY29kZWQgd29yZHMgaXMgcGFzc2VkIHRvIHRoZQogICAgY29uc3RydWN0b3IsIHRoZSBgYFVuc3RydWN0dXJlZEhlYWRlcmBgIHBhcnNlciBjb252ZXJ0cyBzdWNoIGVuY29kZWQgd29yZHMKLSAgIGJhY2sgaW4gdG8gdGhlIG9yaWdpbmFsIHVuaWNvZGUsIGZvbGxvd2luZyB0aGUgOnJmYzpgMjA0N2AgcnVsZXMgZm9yCi0gICB1bnN0cnVjdHVyZWQgdGV4dC4gIFRoZSBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIGF0dGVtcHQgdG8gZGVjb2RlIGNlcnRhaW4KLSAgIG5vbi1jb21wbGlhbnQgZW5jb2RlZCB3b3Jkcy4gIERlZmVjdHMgYXJlIHJlZ2lzdGVyZWQgaW4gc3VjaCBjYXNlcywgYXMgd2VsbAotICAgYXMgZGVmZWN0cyBmb3IgaXNzdWVzIHN1Y2ggYXMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgZW5jb2RlZCB3b3JkcyBvcgotICAgdGhlIG5vbi1lbmNvZGVkIHRleHQuCisgICBpbnRvIHVuaWNvZGUsIGZvbGxvd2luZyB0aGUgOnJmYzpgMjA0N2AgcnVsZXMgZm9yIHVuc3RydWN0dXJlZCB0ZXh0LiAgVGhlCisgICBwYXJzZXIgdXNlcyBoZXVyaXN0aWNzIHRvIGF0dGVtcHQgdG8gZGVjb2RlIGNlcnRhaW4gbm9uLWNvbXBsaWFudCBlbmNvZGVkCisgICB3b3Jkcy4gIERlZmVjdHMgYXJlIHJlZ2lzdGVyZWQgaW4gc3VjaCBjYXNlcywgYXMgd2VsbCBhcyBkZWZlY3RzIGZvciBpc3N1ZXMKKyAgIHN1Y2ggYXMgaW52YWxpZCBjaGFyYWN0ZXJzIHdpdGhpbiB0aGUgZW5jb2RlZCB3b3JkcyBvciB0aGUgbm9uLWVuY29kZWQgdGV4dC4KIAogICAgVGhpcyBoZWFkZXIgdHlwZSBwcm92aWRlcyBubyBhZGRpdGlvbmFsIGF0dHJpYnV0ZXMuCiAKQEAgLTIxMywxNSArMjA1LDE2IEBACiAgICAgICB0aGUgbGlzdCBvZiBhZGRyZXNzZXMgaXMgImZsYXR0ZW5lZCIgaW50byBhIG9uZSBkaW1lbnNpb25hbCBsaXN0KS4KIAogICAgVGhlIGBgZGVjb2RlZGBgIHZhbHVlIG9mIHRoZSBoZWFkZXIgd2lsbCBoYXZlIGFsbCBlbmNvZGVkIHdvcmRzIGRlY29kZWQgdG8KLSAgIHVuaWNvZGUuICA6Y2xhc3M6YH5lbmNvZGluZ3MuaWRuYWAgZW5jb2RlZCBkb21haW4gbmFtZXMgYXJlIGFsc28gZGVjb2RlZCB0byB1bmljb2RlLiAgVGhlCi0gICBgYGRlY29kZWRgYCB2YWx1ZSBpcyBzZXQgYnkgOmF0dHI6YH5zdHIuam9pbmBcIGluZyB0aGUgOmNsYXNzOmBzdHJgIHZhbHVlIG9mCi0gICB0aGUgZWxlbWVudHMgb2YgdGhlIGBgZ3JvdXBzYGAgYXR0cmlidXRlIHdpdGggYGAnLCAnYGAuCisgICB1bmljb2RlLiAgOmNsYXNzOmB+ZW5jb2RpbmdzLmlkbmFgIGVuY29kZWQgZG9tYWluIG5hbWVzIGFyZSBhbHNvIGRlY29kZWQgdG8KKyAgIHVuaWNvZGUuICBUaGUgYGBkZWNvZGVkYGAgdmFsdWUgaXMgc2V0IGJ5IDphdHRyOmB+c3RyLmpvaW5gXCBpbmcgdGhlCisgICA6Y2xhc3M6YHN0cmAgdmFsdWUgb2YgdGhlIGVsZW1lbnRzIG9mIHRoZSBgYGdyb3Vwc2BgIGF0dHJpYnV0ZSB3aXRoIGBgJywKKyAgICdgYC4KIAogICAgQSBsaXN0IG9mIDpjbGFzczpgLkFkZHJlc3NgIGFuZCA6Y2xhc3M6YC5Hcm91cGAgb2JqZWN0cyBpbiBhbnkgY29tYmluYXRpb24KICAgIG1heSBiZSB1c2VkIHRvIHNldCB0aGUgdmFsdWUgb2YgYW4gYWRkcmVzcyBoZWFkZXIuICBgYEdyb3VwYGAgb2JqZWN0cyB3aG9zZQogICAgYGBkaXNwbGF5X25hbWVgYCBpcyBgYE5vbmVgYCB3aWxsIGJlIGludGVycHJldGVkIGFzIHNpbmdsZSBhZGRyZXNzZXMsIHdoaWNoCiAgICBhbGxvd3MgYW4gYWRkcmVzcyBsaXN0IHRvIGJlIGNvcGllZCB3aXRoIGdyb3VwcyBpbnRhY3QgYnkgdXNpbmcgdGhlIGxpc3QKLSAgIG9idGFpbmVkIGBgZ3JvdXBzYGAgYXR0cmlidXRlIG9mIHRoZSBzb3VyY2UgaGVhZGVyLgorICAgb2J0YWluZWQgZnJvbSB0aGUgYGBncm91cHNgYCBhdHRyaWJ1dGUgb2YgdGhlIHNvdXJjZSBoZWFkZXIuCiAKIAogLi4gY2xhc3M6OiBTaW5nbGVBZGRyZXNzSGVhZGVyCkBAIC0yNjcsNyArMjYwLDcgQEAKIAogLi4gY2xhc3M6OiBQYXJhbWV0ZXJpemVkTUlNRUhlYWRlcgogCi0gICAgTU9NRSBoZWFkZXJzIGFsbCBzdGFydCB3aXRoIHRoZSBwcmVmaXggJ0NvbnRlbnQtJy4gIEVhY2ggc3BlY2lmaWMgaGVhZGVyIGhhcworICAgIE1JTUUgaGVhZGVycyBhbGwgc3RhcnQgd2l0aCB0aGUgcHJlZml4ICdDb250ZW50LScuICBFYWNoIHNwZWNpZmljIGhlYWRlciBoYXMKICAgICBhIGNlcnRhaW4gdmFsdWUsIGRlc2NyaWJlZCB1bmRlciB0aGUgY2xhc3MgZm9yIHRoYXQgaGVhZGVyLiAgU29tZSBjYW4KICAgICBhbHNvIHRha2UgYSBsaXN0IG9mIHN1cHBsZW1lbnRhbCBwYXJhbWV0ZXJzLCB3aGljaCBoYXZlIGEgY29tbW9uIGZvcm1hdC4KICAgICBUaGlzIGNsYXNzIHNlcnZlcyBhcyBhIGJhc2UgZm9yIGFsbCB0aGUgTUlNRSBoZWFkZXJzIHRoYXQgdGFrZSBwYXJhbWV0ZXJzLgpAQCAtNDU0LDMgKzQ0Nyw5IEBACiAgICAgICBgYGRpc3BsYXlfbmFtZWBgIGlzIG5vbmUgYW5kIHRoZXJlIGlzIGEgc2luZ2xlIGBgQWRkcmVzc2BgIGluIHRoZQogICAgICAgYGBhZGRyZXNzZXNgYCBsaXN0LCB0aGUgYGBzdHJgYCB2YWx1ZSB3aWxsIGJlIHRoZSBzYW1lIGFzIHRoZSBgYHN0cmBgIG9mCiAgICAgICB0aGF0IHNpbmdsZSBgYEFkZHJlc3NgYC4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjMgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwubWVzc2FnZS5yc3QgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAppbmRleCAyOTA3OTc1Li45NTEzNmQyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5tZXNzYWdlLnJzdApAQCAtMyw5MSArMywxMDIgQEAKIAogLi4gbW9kdWxlOjogZW1haWwubWVzc2FnZQogICAgOnN5bm9wc2lzOiBUaGUgYmFzZSBjbGFzcyByZXByZXNlbnRpbmcgZW1haWwgbWVzc2FnZXMuCisuLiBtb2R1bGVhdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4KKy4uIHNlY3Rpb25hdXRob3I6OiBSLiBEYXZpZCBNdXJyYXkgPHJkbXVycmF5QGJpdGRhbmNlLmNvbT4sCisgICAgICAgICAgICAgICAgICAgQmFycnkgQS4gV2Fyc2F3IDxiYXJyeUBweXRob24ub3JnPgogCiAqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9lbWFpbC9tZXNzYWdlLnB5YAogCiAtLS0tLS0tLS0tLS0tLQogCi1UaGUgY2VudHJhbCBjbGFzcyBpbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgaXMgdGhlIDpjbGFzczpgTWVzc2FnZWAgY2xhc3MsCi1pbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCBtb2R1bGUuICBJdCBpcyB0aGUgYmFzZSBjbGFzcyBmb3IgdGhlCi06bW9kOmBlbWFpbGAgb2JqZWN0IG1vZGVsLiAgOmNsYXNzOmBNZXNzYWdlYCBwcm92aWRlcyB0aGUgY29yZSBmdW5jdGlvbmFsaXR5IGZvcgotc2V0dGluZyBhbmQgcXVlcnlpbmcgaGVhZGVyIGZpZWxkcywgYW5kIGZvciBhY2Nlc3NpbmcgbWVzc2FnZSBib2RpZXMuCisuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYgWzFdXwogCi1Db25jZXB0dWFsbHksIGEgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3QgY29uc2lzdHMgb2YgKmhlYWRlcnMqIGFuZCAqcGF5bG9hZHMqLgotSGVhZGVycyBhcmUgOnJmYzpgMjgyMmAgc3R5bGUgZmllbGQgbmFtZXMgYW5kIHZhbHVlcyB3aGVyZSB0aGUgZmllbGQgbmFtZSBhbmQKLXZhbHVlIGFyZSBzZXBhcmF0ZWQgYnkgYSBjb2xvbi4gIFRoZSBjb2xvbiBpcyBub3QgcGFydCBvZiBlaXRoZXIgdGhlIGZpZWxkIG5hbWUKLW9yIHRoZSBmaWVsZCB2YWx1ZS4KK1RoZSBjZW50cmFsIGNsYXNzIGluIHRoZSA6bW9kOmBlbWFpbGAgcGFja2FnZSBpcyB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCitjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwubWVzc2FnZWAgbW9kdWxlLiAgSXQgaXMgdGhlIGJhc2UgY2xhc3MgZm9yCit0aGUgOm1vZDpgZW1haWxgIG9iamVjdCBtb2RlbC4gIDpjbGFzczpgRW1haWxNZXNzYWdlYCBwcm92aWRlcyB0aGUgY29yZQorZnVuY3Rpb25hbGl0eSBmb3Igc2V0dGluZyBhbmQgcXVlcnlpbmcgaGVhZGVyIGZpZWxkcywgZm9yIGFjY2Vzc2luZyBtZXNzYWdlCitib2RpZXMsIGFuZCBmb3IgY3JlYXRpbmcgb3IgbW9kaWZ5aW5nIHN0cnVjdHVyZWQgbWVzc2FnZXMuCiAKLUhlYWRlcnMgYXJlIHN0b3JlZCBhbmQgcmV0dXJuZWQgaW4gY2FzZS1wcmVzZXJ2aW5nIGZvcm0gYnV0IGFyZSBtYXRjaGVkCi1jYXNlLWluc2Vuc2l0aXZlbHkuICBUaGVyZSBtYXkgYWxzbyBiZSBhIHNpbmdsZSBlbnZlbG9wZSBoZWFkZXIsIGFsc28ga25vd24gYXMKLXRoZSAqVW5peC1Gcm9tKiBoZWFkZXIgb3IgdGhlIGBgRnJvbV9gYCBoZWFkZXIuICBUaGUgcGF5bG9hZCBpcyBlaXRoZXIgYSBzdHJpbmcKLWluIHRoZSBjYXNlIG9mIHNpbXBsZSBtZXNzYWdlIG9iamVjdHMgb3IgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBmb3IKLU1JTUUgY29udGFpbmVyIGRvY3VtZW50cyAoZS5nLiA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kCi06bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCkuCitBbiBlbWFpbCBtZXNzYWdlIGNvbnNpc3RzIG9mICpoZWFkZXJzKiBhbmQgYSAqcGF5bG9hZCogKHdoaWNoIGlzIGFsc28gcmVmZXJyZWQKK3RvIGFzIHRoZSAqY29udGVudCopLiAgSGVhZGVycyBhcmUgOnJmYzpgNTMyMmAgb3IgOnJmYzpgNjUzMmAgc3R5bGUgZmllbGQgbmFtZXMKK2FuZCB2YWx1ZXMsIHdoZXJlIHRoZSBmaWVsZCBuYW1lIGFuZCB2YWx1ZSBhcmUgc2VwYXJhdGVkIGJ5IGEgY29sb24uICBUaGUgY29sb24KK2lzIG5vdCBwYXJ0IG9mIGVpdGhlciB0aGUgZmllbGQgbmFtZSBvciB0aGUgZmllbGQgdmFsdWUuICBUaGUgcGF5bG9hZCBtYXkgYmUgYQorc2ltcGxlIHRleHQgbWVzc2FnZSwgb3IgYSBiaW5hcnkgb2JqZWN0LCBvciBhIHN0cnVjdHVyZWQgc2VxdWVuY2Ugb2YKK3N1Yi1tZXNzYWdlcyBlYWNoIHdpdGggdGhlaXIgb3duIHNldCBvZiBoZWFkZXJzIGFuZCB0aGVpciBvd24gcGF5bG9hZC4gIFRoZQorbGF0dGVyIHR5cGUgb2YgcGF5bG9hZCBpcyBpbmRpY2F0ZWQgYnkgdGhlIG1lc3NhZ2UgaGF2aW5nIGEgTUlNRSB0eXBlIHN1Y2ggYXMKKzptaW1ldHlwZTpgbXVsdGlwYXJ0L1wqYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4KIAotOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHByb3ZpZGUgYSBtYXBwaW5nIHN0eWxlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQotbWVzc2FnZSBoZWFkZXJzLCBhbmQgYW4gZXhwbGljaXQgaW50ZXJmYWNlIGZvciBhY2Nlc3NpbmcgYm90aCB0aGUgaGVhZGVycyBhbmQKLXRoZSBwYXlsb2FkLiAgSXQgcHJvdmlkZXMgY29udmVuaWVuY2UgbWV0aG9kcyBmb3IgZ2VuZXJhdGluZyBhIGZsYXQgdGV4dAotcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2Ugb2JqZWN0IHRyZWUsIGZvciBhY2Nlc3NpbmcgY29tbW9ubHkgdXNlZCBoZWFkZXIKLXBhcmFtZXRlcnMsIGFuZCBmb3IgcmVjdXJzaXZlbHkgd2Fsa2luZyBvdmVyIHRoZSBvYmplY3QgdHJlZS4KK1RoZSBjb25jZXB0dWFsIG1vZGVsIHByb3ZpZGVkIGJ5IGFuIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3QgaXMgdGhhdCBvZiBhbgorb3JkZXJlZCBkaWN0aW9uYXJ5IG9mIGhlYWRlcnMgY291cGxlZCB3aXRoIGEgKnBheWxvYWQqIHRoYXQgcmVwcmVzZW50cyB0aGUKKzpyZmM6YDUzMjJgIGJvZHkgb2YgdGhlIG1lc3NhZ2UsIHdoaWNoIG1pZ2h0IGJlIGEgbGlzdCBvZiBzdWItYGBFbWFpbE1lc3NhZ2VgYAorb2JqZWN0cy4gIEluIGFkZGl0aW9uIHRvIHRoZSBub3JtYWwgZGljdGlvbmFyeSBtZXRob2RzIGZvciBhY2Nlc3NpbmcgdGhlIGhlYWRlcgorbmFtZXMgYW5kIHZhbHVlcywgdGhlcmUgYXJlIG1ldGhvZHMgZm9yIGFjY2Vzc2luZyBzcGVjaWFsaXplZCBpbmZvcm1hdGlvbiBmcm9tCit0aGUgaGVhZGVycyAoZm9yIGV4YW1wbGUgdGhlIE1JTUUgY29udGVudCB0eXBlKSwgZm9yIG9wZXJhdGluZyBvbiB0aGUgcGF5bG9hZCwKK2ZvciBnZW5lcmF0aW5nIGEgc2VyaWFsaXplZCB2ZXJzaW9uIG9mIHRoZSBtZXNzYWdlLCBhbmQgZm9yIHJlY3Vyc2l2ZWx5IHdhbGtpbmcKK292ZXIgdGhlIG9iamVjdCB0cmVlLgogCi1IZXJlIGFyZSB0aGUgbWV0aG9kcyBvZiB0aGUgOmNsYXNzOmBNZXNzYWdlYCBjbGFzczoKK1RoZSA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgZGljdGlvbmFyeS1saWtlIGludGVyZmFjZSBpcyBpbmRleGVkIGJ5IHRoZSBoZWFkZXIKK25hbWVzLCB3aGljaCBtdXN0IGJlIEFTQ0lJIHZhbHVlcy4gIFRoZSB2YWx1ZXMgb2YgdGhlIGRpY3Rpb25hcnkgYXJlIHN0cmluZ3MKK3dpdGggc29tZSBleHRyYSBtZXRob2RzLiAgSGVhZGVycyBhcmUgc3RvcmVkIGFuZCByZXR1cm5lZCBpbiBjYXNlLXByZXNlcnZpbmcKK2Zvcm0sIGJ1dCBmaWVsZCBuYW1lcyBhcmUgbWF0Y2hlZCBjYXNlLWluc2Vuc2l0aXZlbHkuICBVbmxpa2UgYSByZWFsIGRpY3QsCit0aGVyZSBpcyBhbiBvcmRlcmluZyB0byB0aGUga2V5cywgYW5kIHRoZXJlIGNhbiBiZSBkdXBsaWNhdGUga2V5cy4gIEFkZGl0aW9uYWwKK21ldGhvZHMgYXJlIHByb3ZpZGVkIGZvciB3b3JraW5nIHdpdGggaGVhZGVycyB0aGF0IGhhdmUgZHVwbGljYXRlIGtleXMuCisKK1RoZSAqcGF5bG9hZCogaXMgZWl0aGVyIGEgc3RyaW5nIG9yIGJ5dGVzIG9iamVjdCwgaW4gdGhlIGNhc2Ugb2Ygc2ltcGxlIG1lc3NhZ2UKK29iamVjdHMsIG9yIGEgbGlzdCBvZiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cywgZm9yIE1JTUUgY29udGFpbmVyCitkb2N1bWVudHMgc3VjaCBhcyA6bWltZXR5cGU6YG11bHRpcGFydC9cKmAgYW5kIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgCittZXNzYWdlIG9iamVjdHMuCiAKIAotLi4gY2xhc3M6OiBNZXNzYWdlKHBvbGljeT1jb21wYXQzMikKKy4uIGNsYXNzOjogRW1haWxNZXNzYWdlKHBvbGljeT1kZWZhdWx0KQogCi0gICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgKGl0IG11c3QgYmUgYW4gaW5zdGFuY2Ugb2YgYSA6bW9kOmB+ZW1haWwucG9saWN5YAotICAgY2xhc3MpIHVzZSB0aGUgcnVsZXMgaXQgc3BlY2lmaWVzIHRvIHVwZGF0ZSBhbmQgc2VyaWFsaXplIHRoZSByZXByZXNlbnRhdGlvbgotICAgb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdWRwYXRlIGFuZCBzZXJpYWxpemUKKyAgIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUKKyAgIDpjbGFzczpgfmVtYWlsLnBvbGljeS5kZWZhdWx0YCBwb2xpY3ksIHdoaWNoIGZvbGxvd3MgdGhlIHJ1bGVzIG9mIHRoZSBlbWFpbAorICAgUkZDcyBleGNlcHQgZm9yIGxpbmUgZW5kaW5ncyAoaW5zdGVhZCBvZiB0aGUgUkZDIG1hbmRhdGVkIGBgXHJcbmBgLCBpdCB1c2VzCisgICB0aGUgUHl0aG9uIHN0YW5kYXJkIGBgXG5gYCBsaW5lIGVuZGluZ3MpLiAgRm9yIG1vcmUgaW5mb3JtYXRpb24gc2VlIHRoZQogICAgOm1vZDpgfmVtYWlsLnBvbGljeWAgZG9jdW1lbnRhdGlvbi4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgVGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorICAgLi4gbWV0aG9kOjogYXNfc3RyaW5nKHVuaXhmcm9tPUZhbHNlLCBtYXhoZWFkZXJsZW49Tm9uZSwgcG9saWN5PU5vbmUpCiAKKyAgICAgIFJldHVybiB0aGUgZW50aXJlIG1lc3NhZ2UgZmxhdHRlbmVkIGFzIGEgc3RyaW5nLiAgV2hlbiBvcHRpb25hbAorICAgICAgKnVuaXhmcm9tKiBpcyB0cnVlLCB0aGUgZW52ZWxvcGUgaGVhZGVyIGlzIGluY2x1ZGVkIGluIHRoZSByZXR1cm5lZAorICAgICAgc3RyaW5nLiAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eQorICAgICAgd2l0aCB0aGUgYmFzZSA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzICptYXhoZWFkZXJsZW4qIGlzCisgICAgICBhY2NlcHRlZCwgYnV0IGRlZmF1bHRzIHRvIGBgTm9uZWBgLCB3aGljaCBtZWFucyB0aGF0IGJ5IGRlZmF1bHQgdGhlIGxpbmUKKyAgICAgIGxlbmd0aCBpcyBjb250cm9sbGVkIGJ5IHRoZQorICAgICAgOmF0dHI6YH5lbWFpbC5wb2xpY3kuRW1haWxQb2xpY3kubWF4X2xpbmVfbGVuZ3RoYCBvZiB0aGUgcG9saWN5LiAgVGhlCisgICAgICAqcG9saWN5KiBhcmd1bWVudCBtYXkgYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQKKyAgICAgIGZyb20gdGhlIG1lc3NhZ2UgaW5zdGFuY2UuICBUaGlzIGNhbiBiZSB1c2VkIHRvIGNvbnRyb2wgc29tZSBvZiB0aGUKKyAgICAgIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlIG1ldGhvZCwgc2luY2UgdGhlIHNwZWNpZmllZCAqcG9saWN5KiB3aWxsIGJlCisgICAgICBwYXNzZWQgdG8gdGhlIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgLgogCi0gICAuLiBtZXRob2Q6OiBhc19zdHJpbmcodW5peGZyb209RmFsc2UsIG1heGhlYWRlcmxlbj0wLCBwb2xpY3k9Tm9uZSkKKyAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgCisgICAgICBpZiBkZWZhdWx0cyBuZWVkIHRvIGJlIGZpbGxlZCBpbiB0byBjb21wbGV0ZSB0aGUgdHJhbnNmb3JtYXRpb24gdG8gYQorICAgICAgc3RyaW5nIChmb3IgZXhhbXBsZSwgTUlNRSBib3VuZGFyaWVzIG1heSBiZSBnZW5lcmF0ZWQgb3IgbW9kaWZpZWQpLgogCi0gICAgICBSZXR1cm4gdGhlIGVudGlyZSBtZXNzYWdlIGZsYXR0ZW5lZCBhcyBhIHN0cmluZy4gIFdoZW4gb3B0aW9uYWwgKnVuaXhmcm9tKgotICAgICAgaXMgdHJ1ZSwgdGhlIGVudmVsb3BlIGhlYWRlciBpcyBpbmNsdWRlZCBpbiB0aGUgcmV0dXJuZWQgc3RyaW5nLgotICAgICAgKnVuaXhmcm9tKiBkZWZhdWx0cyB0byBgYEZhbHNlYGAuICBGb3IgYmFja3dhcmQgY29tcGFiaXRpbGl0eSByZWFzb25zLAotICAgICAgKm1heGhlYWRlcmxlbiogZGVmYXVsdHMgdG8gYGAwYGAsIHNvIGlmIHlvdSB3YW50IGEgZGlmZmVyZW50IHZhbHVlIHlvdQotICAgICAgbXVzdCBvdmVycmlkZSBpdCBleHBsaWNpdGx5ICh0aGUgdmFsdWUgc3BlY2lmaWVkIGZvciAqbWF4X2xpbmVfbGVuZ3RoKiBpbgotICAgICAgdGhlIHBvbGljeSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhpcyBtZXRob2QpLiAgVGhlICpwb2xpY3kqIGFyZ3VtZW50IG1heSBiZQotICAgICAgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBwb2xpY3kgb2J0YWluZWQgZnJvbSB0aGUgbWVzc2FnZSBpbnN0YW5jZS4KLSAgICAgIFRoaXMgY2FuIGJlIHVzZWQgdG8gY29udHJvbCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIHByb2R1Y2VkIGJ5IHRoZQotICAgICAgbWV0aG9kLCBzaW5jZSB0aGUgc3BlY2lmaWVkICpwb2xpY3kqIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBgYEdlbmVyYXRvcmBgLgorICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYmUgdGhlCisgICAgICBtb3N0IHVzZWZ1bCB3YXkgdG8gc2VyaWFsaXplIG1lc3NhZ2VzIGluIHlvdXIgYXBwbGljYXRpb24sIGVzcGVjaWFsbHkgaWYKKyAgICAgIHlvdSBhcmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIG1lc3NhZ2VzLiAgU2VlCisgICAgICA6Y2xhc3M6YGVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGZvciBhIG1vcmUgZmxleGlibGUgQVBJIGZvcgorICAgICAgc2VyaWFsaXppbmcgbWVzc2FnZXMuICBOb3RlIGFsc28gdGhhdCB0aGlzIG1ldGhvZCBpcyByZXN0cmljdGVkIHRvCisgICAgICBwcm9kdWNpbmcgbWVzc2FnZXMgc2VyaWFsaXplZCBhcyAiNyBiaXQgY2xlYW4iIHdoZW4KKyAgICAgIDphdHRyOmB+ZW1haWwucG9saWN5LkVtYWlsUG9saWN5LnV0ZjhgIGlzIGBgRmFsc2VgYCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQuCiAKLSAgICAgIEZsYXR0ZW5pbmcgdGhlIG1lc3NhZ2UgbWF5IHRyaWdnZXIgY2hhbmdlcyB0byB0aGUgOmNsYXNzOmBNZXNzYWdlYCBpZgotICAgICAgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEgc3RyaW5nCi0gICAgICAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KLQotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCi0gICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKLSAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKLSAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIGluc3RhbmNlIGFuZCB1c2UgaXRzCi0gICAgICA6bWV0aDpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3IuZmxhdHRlbmAgbWV0aG9kIGRpcmVjdGx5LiAgRm9yIGV4YW1wbGU6OgotCi0gICAgICAgICBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwotICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEdlbmVyYXRvcgotICAgICAgICAgZnAgPSBTdHJpbmdJTygpCi0gICAgICAgICBnID0gR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQotICAgICAgICAgZy5mbGF0dGVuKG1zZykKLSAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCi0KLSAgICAgIElmIHRoZSBtZXNzYWdlIG9iamVjdCBjb250YWlucyBiaW5hcnkgZGF0YSB0aGF0IGlzIG5vdCBlbmNvZGVkIGFjY29yZGluZwotICAgICAgdG8gUkZDIHN0YW5kYXJkcywgdGhlIG5vbi1jb21wbGlhbnQgZGF0YSB3aWxsIGJlIHJlcGxhY2VkIGJ5IHVuaWNvZGUKLSAgICAgICJ1bmtub3duIGNoYXJhY3RlciIgY29kZSBwb2ludHMuICAoU2VlIGFsc28gOm1ldGg6YC5hc19ieXRlc2AgYW5kCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLikKLQotICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQgdGhlICpwb2xpY3kqIGtleXdvcmQgYXJndW1lbnQgd2FzIGFkZGVkLgorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgdGhlIGRlZmF1bHQgYmVoYXZpb3Igd2hlbiAqbWF4aGVhZGVybGVuKgorICAgICAgICAgaXMgbm90IHNwZWNpZmllZCB3YXMgY2hhbmdlZCBmcm9tIGRlZmF1bHRpbmcgdG8gMCB0byBkZWZhdWx0aW5nCisgICAgICAgICB0byB0aGUgdmFsdWUgb2YgKm1heF9saW5lX2xlbmd0aCogZnJvbSB0aGUgcG9saWN5LgogCiAKICAgIC4uIG1ldGhvZDo6IF9fc3RyX18oKQogCi0gICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfc3RyaW5nKClgLiAgQWxsb3dzIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEKLSAgICAgIHN0cmluZyBjb250YWluaW5nIHRoZSBmb3JtYXR0ZWQgbWVzc2FnZS4KKyAgICAgIEVxdWl2YWxlbnQgdG8gYGFzX3N0cmluZyhwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUodXRmOD1UcnVlKWAuICBBbGxvd3MKKyAgICAgIGBgc3RyKG1zZylgYCB0byBwcm9kdWNlIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHNlcmlhbGl6ZWQgbWVzc2FnZSBpbiBhCisgICAgICByZWFkYWJsZSBmb3JtYXQuCisKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40IHRoZSBtZXRob2Qgd2FzIGNoYW5nZWQgdG8gdXNlIGBgdXRmOD1UcnVlYGAsCisgICAgICAgICB0aHVzIHByb2R1Y2luZyBhbiA6cmZjOmA2NTMxYC1saWtlIG1lc3NhZ2UgcmVwcmVzZW50YXRpb24sIGluc3RlYWQgb2YKKyAgICAgICAgIGJlaW5nIGEgZGlyZWN0IGFsaWFzIGZvciA6bWV0aDpgYXNfc3RyaW5nYC4KIAogCiAgICAuLiBtZXRob2Q6OiBhc19ieXRlcyh1bml4ZnJvbT1GYWxzZSwgcG9saWN5PU5vbmUpCkBAIC05OCw1MiArMTA5LDQyIEBACiAgICAgICB1c2VkIHRvIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBvbGljeSBvYnRhaW5lZCBmcm9tIHRoZSBtZXNzYWdlIGluc3RhbmNlLgogICAgICAgVGhpcyBjYW4gYmUgdXNlZCB0byBjb250cm9sIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgcHJvZHVjZWQgYnkgdGhlCiAgICAgICBtZXRob2QsIHNpbmNlIHRoZSBzcGVjaWZpZWQgKnBvbGljeSogd2lsbCBiZSBwYXNzZWQgdG8gdGhlCi0gICAgICBgYEJ5dGVzR2VuZXJhdG9yYGAuCisgICAgICA6Y2xhc3M6YH5lbWFpbC5nZW5lcmF0b3IuQnl0ZXNHZW5lcmF0b3JgLgogCi0gICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgTWVzc2FnZWAgaWYKLSAgICAgIGRlZmF1bHRzIG5lZWQgdG8gYmUgZmlsbGVkIGluIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2Zvcm1hdGlvbiB0byBhIHN0cmluZwotICAgICAgKGZvciBleGFtcGxlLCBNSU1FIGJvdW5kYXJpZXMgbWF5IGJlIGdlbmVyYXRlZCBvciBtb2RpZmllZCkuCisgICAgICBGbGF0dGVuaW5nIHRoZSBtZXNzYWdlIG1heSB0cmlnZ2VyIGNoYW5nZXMgdG8gdGhlIDpjbGFzczpgRW1haWxNZXNzYWdlYAorICAgICAgaWYgZGVmYXVsdHMgbmVlZCB0byBiZSBmaWxsZWQgaW4gdG8gY29tcGxldGUgdGhlIHRyYW5zZm9ybWF0aW9uIHRvIGEKKyAgICAgIHN0cmluZyAoZm9yIGV4YW1wbGUsIE1JTUUgYm91bmRhcmllcyBtYXkgYmUgZ2VuZXJhdGVkIG9yIG1vZGlmaWVkKS4KIAotICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYWx3YXlzCi0gICAgICBmb3JtYXQgdGhlIG1lc3NhZ2UgdGhlIHdheSB5b3Ugd2FudC4gIEZvciBleGFtcGxlLCBieSBkZWZhdWx0IGl0IGRvZXMKLSAgICAgIG5vdCBkbyB0aGUgbWFuZ2xpbmcgb2YgbGluZXMgdGhhdCBiZWdpbiB3aXRoIGBgRnJvbWBgIHRoYXQgaXMKLSAgICAgIHJlcXVpcmVkIGJ5IHRoZSB1bml4IG1ib3ggZm9ybWF0LiAgRm9yIG1vcmUgZmxleGliaWxpdHksIGluc3RhbnRpYXRlIGEKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgaW5zdGFuY2UgYW5kIHVzZSBpdHMKLSAgICAgIDptZXRoOmB+ZW1haWwuZ2VuZXJhdG9yLkJ5dGVzR2VuZXJhdG9yLmZsYXR0ZW5gIG1ldGhvZCBkaXJlY3RseS4KLSAgICAgIEZvciBleGFtcGxlOjoKLQotICAgICAgICAgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTwotICAgICAgICAgZnJvbSBlbWFpbC5nZW5lcmF0b3IgaW1wb3J0IEJ5dGVzR2VuZXJhdG9yCi0gICAgICAgICBmcCA9IEJ5dGVzSU8oKQotICAgICAgICAgZyA9IEJ5dGVzR2VuZXJhdG9yKGZwLCBtYW5nbGVfZnJvbV89VHJ1ZSwgbWF4aGVhZGVybGVuPTYwKQotICAgICAgICAgZy5mbGF0dGVuKG1zZykKLSAgICAgICAgIHRleHQgPSBmcC5nZXR2YWx1ZSgpCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorICAgICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIGlzIHByb3ZpZGVkIGFzIGEgY29udmVuaWVuY2UgYW5kIG1heSBub3QgYmUgdGhlCisgICAgICBtb3N0IHVzZWZ1bCB3YXkgdG8gc2VyaWFsaXplIG1lc3NhZ2VzIGluIHlvdXIgYXBwbGljYXRpb24sIGVzcGVjaWFsbHkgaWYKKyAgICAgIHlvdSBhcmUgZGVhbGluZyB3aXRoIG11bHRpcGxlIG1lc3NhZ2VzLiAgU2VlCisgICAgICA6Y2xhc3M6YGVtYWlsLmdlbmVyYXRvci5CeXRlc0dlbmVyYXRvcmAgZm9yIGEgbW9yZSBmbGV4aWJsZSBBUEkgZm9yCisgICAgICBzZXJpYWxpemluZyBtZXNzYWdlcy4KIAogCiAgICAuLiBtZXRob2Q6OiBfX2J5dGVzX18oKQogCiAgICAgICBFcXVpdmFsZW50IHRvIDptZXRoOmAuYXNfYnl0ZXMoKWAuICBBbGxvd3MgYGBieXRlcyhtc2cpYGAgdG8gcHJvZHVjZSBhCi0gICAgICBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgZm9ybWF0dGVkIG1lc3NhZ2UuCi0KLSAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAorICAgICAgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIHNlcmlhbGl6ZWQgbWVzc2FnZS4KIAogCiAgICAuLiBtZXRob2Q6OiBpc19tdWx0aXBhcnQoKQogCiAgICAgICBSZXR1cm4gYGBUcnVlYGAgaWYgdGhlIG1lc3NhZ2UncyBwYXlsb2FkIGlzIGEgbGlzdCBvZiBzdWItXAotICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KKyAgICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBvYmplY3RzLCBvdGhlcndpc2UgcmV0dXJuIGBgRmFsc2VgYC4gIFdoZW4KICAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybnMgYGBGYWxzZWBgLCB0aGUgcGF5bG9hZCBzaG91bGQgYmUgYSBzdHJpbmcKLSAgICAgIG9iamVjdC4gIChOb3RlIHRoYXQgOm1ldGg6YGlzX211bHRpcGFydGAgcmV0dXJuaW5nIGBgVHJ1ZWBgIGRvZXMgbm90Ci0gICAgICBuZWNlc3NhcmlseSBtZWFuIHRoYXQgIm1zZy5nZXRfY29udGVudF9tYWludHlwZSgpID09ICdtdWx0aXBhcnQnIiB3aWxsCi0gICAgICByZXR1cm4gdGhlIGBgVHJ1ZWBgLiAgIEZvciBleGFtcGxlLCBgYGlzX211bHRpcGFydGBgIHdpbGwgcmV0dXJuIGBgVHJ1ZWBgCi0gICAgICB3aGVuIHRoZSA6Y2xhc3M6YE1lc3NhZ2VgIGlzIG9mIHR5cGUgYGBtZXNzYWdlL3JmYzgyMmBgLikKKyAgICAgIG9iamVjdCAod2hpY2ggbWlnaHQgYmUgYSBDVEUgZW5jb2RlZCBiaW5hcnkgcGF5bG9hZCkuICBOb3RlIHRoYXQKKyAgICAgIDptZXRoOmBpc19tdWx0aXBhcnRgIHJldHVybmluZyBgYFRydWVgYCBkb2VzIG5vdCBuZWNlc3NhcmlseSBtZWFuIHRoYXQKKyAgICAgICJtc2cuZ2V0X2NvbnRlbnRfbWFpbnR5cGUoKSA9PSAnbXVsdGlwYXJ0JyIgd2lsbCByZXR1cm4gdGhlIGBgVHJ1ZWBgLgorICAgICAgRm9yIGV4YW1wbGUsIGBgaXNfbXVsdGlwYXJ0YGAgd2lsbCByZXR1cm4gYGBUcnVlYGAgd2hlbiB0aGUKKyAgICAgIDpjbGFzczpgRW1haWxNZXNzYWdlYCBpcyBvZiB0eXBlIGBgbWVzc2FnZS9yZmM4MjJgYC4KIAogCiAgICAuLiBtZXRob2Q6OiBzZXRfdW5peGZyb20odW5peGZyb20pCiAKLSAgICAgIFNldCB0aGUgbWVzc2FnZSdzIGVudmVsb3BlIGhlYWRlciB0byAqdW5peGZyb20qLCB3aGljaCBzaG91bGQgYmUgYSBzdHJpbmcuCisgICAgICBTZXQgdGhlIG1lc3NhZ2UncyBlbnZlbG9wZSBoZWFkZXIgdG8gKnVuaXhmcm9tKiwgd2hpY2ggc2hvdWxkIGJlIGEKKyAgICAgIHN0cmluZy4gIChTZWUgOmNsYXNzOmB+bWFpbGJveC5tYm94TWVzc2FnZWAgZm9yIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YKKyAgICAgIHRoaXMgaGVhZGVyLikKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfdW5peGZyb20oKQpAQCAtMTUyLDEwOSArMTUzLDIzIEBACiAgICAgICBlbnZlbG9wZSBoZWFkZXIgd2FzIG5ldmVyIHNldC4KIAogCi0gICAuLiBtZXRob2Q6OiBhdHRhY2gocGF5bG9hZCkKLQotICAgICAgQWRkIHRoZSBnaXZlbiAqcGF5bG9hZCogdG8gdGhlIGN1cnJlbnQgcGF5bG9hZCwgd2hpY2ggbXVzdCBiZSBgYE5vbmVgYCBvcgotICAgICAgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cyBiZWZvcmUgdGhlIGNhbGwuIEFmdGVyIHRoZSBjYWxsLCB0aGUKLSAgICAgIHBheWxvYWQgd2lsbCBhbHdheXMgYmUgYSBsaXN0IG9mIDpjbGFzczpgTWVzc2FnZWAgb2JqZWN0cy4gIElmIHlvdSB3YW50IHRvCi0gICAgICBzZXQgdGhlIHBheWxvYWQgdG8gYSBzY2FsYXIgb2JqZWN0IChlLmcuIGEgc3RyaW5nKSwgdXNlCi0gICAgICA6bWV0aDpgc2V0X3BheWxvYWRgIGluc3RlYWQuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BheWxvYWQoaT1Ob25lLCBkZWNvZGU9RmFsc2UpCi0KLSAgICAgIFJldHVybiB0aGUgY3VycmVudCBwYXlsb2FkLCB3aGljaCB3aWxsIGJlIGEgbGlzdCBvZgotICAgICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIHdoZW4gOm1ldGg6YGlzX211bHRpcGFydGAgaXMgYGBUcnVlYGAsIG9yIGEKLSAgICAgIHN0cmluZyB3aGVuIDptZXRoOmBpc19tdWx0aXBhcnRgIGlzIGBgRmFsc2VgYC4gIElmIHRoZSBwYXlsb2FkIGlzIGEgbGlzdAotICAgICAgYW5kIHlvdSBtdXRhdGUgdGhlIGxpc3Qgb2JqZWN0LCB5b3UgbW9kaWZ5IHRoZSBtZXNzYWdlJ3MgcGF5bG9hZCBpbiBwbGFjZS4KLQotICAgICAgV2l0aCBvcHRpb25hbCBhcmd1bWVudCAqaSosIDptZXRoOmBnZXRfcGF5bG9hZGAgd2lsbCByZXR1cm4gdGhlICppKi10aAotICAgICAgZWxlbWVudCBvZiB0aGUgcGF5bG9hZCwgY291bnRpbmcgZnJvbSB6ZXJvLCBpZiA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcwotICAgICAgYGBUcnVlYGAuICBBbiA6ZXhjOmBJbmRleEVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiAqaSogaXMgbGVzcyB0aGFuIDAgb3IKLSAgICAgIGdyZWF0ZXIgdGhhbiBvciBlcXVhbCB0byB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBwYXlsb2FkLiAgSWYgdGhlCi0gICAgICBwYXlsb2FkIGlzIGEgc3RyaW5nIChpLmUuICA6bWV0aDpgaXNfbXVsdGlwYXJ0YCBpcyBgYEZhbHNlYGApIGFuZCAqaSogaXMKLSAgICAgIGdpdmVuLCBhIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgotCi0gICAgICBPcHRpb25hbCAqZGVjb2RlKiBpcyBhIGZsYWcgaW5kaWNhdGluZyB3aGV0aGVyIHRoZSBwYXlsb2FkIHNob3VsZCBiZQotICAgICAgZGVjb2RlZCBvciBub3QsIGFjY29yZGluZyB0byB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgCi0gICAgICBoZWFkZXIuIFdoZW4gYGBUcnVlYGAgYW5kIHRoZSBtZXNzYWdlIGlzIG5vdCBhIG11bHRpcGFydCwgdGhlIHBheWxvYWQgd2lsbAotICAgICAgYmUgZGVjb2RlZCBpZiB0aGlzIGhlYWRlcidzIHZhbHVlIGlzIGBgcXVvdGVkLXByaW50YWJsZWBgIG9yIGBgYmFzZTY0YGAuCi0gICAgICBJZiBzb21lIG90aGVyIGVuY29kaW5nIGlzIHVzZWQsIG9yIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYAotICAgICAgaGVhZGVyIGlzIG1pc3NpbmcsIHRoZSBwYXlsb2FkIGlzCi0gICAgICByZXR1cm5lZCBhcy1pcyAodW5kZWNvZGVkKS4gIEluIGFsbCBjYXNlcyB0aGUgcmV0dXJuZWQgdmFsdWUgaXMgYmluYXJ5Ci0gICAgICBkYXRhLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBtdWx0aXBhcnQgYW5kIHRoZSAqZGVjb2RlKiBmbGFnIGlzIGBgVHJ1ZWBgLAotICAgICAgdGhlbiBgYE5vbmVgYCBpcyByZXR1cm5lZC4gIElmIHRoZSBwYXlsb2FkIGlzIGJhc2U2NCBhbmQgaXQgd2FzIG5vdAotICAgICAgcGVyZmVjdGx5IGZvcm1lZCAobWlzc2luZyBwYWRkaW5nLCBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIGJhc2U2NAotICAgICAgYWxwaGFiZXQpLCB0aGVuIGFuIGFwcHJvcHJpYXRlIGRlZmVjdCB3aWxsIGJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlJ3MKLSAgICAgIGRlZmVjdCBwcm9wZXJ0eSAoOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRQYWRkaW5nRGVmZWN0YCBvcgotICAgICAgOmNsYXNzOmB+ZW1haWwuZXJyb3JzLkludmFsaWRCYXNlNjRDaGFyYWN0ZXJzRGVmZWN0YCwgcmVzcGVjdGl2ZWx5KS4KLQotICAgICAgV2hlbiAqZGVjb2RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0KSB0aGUgYm9keSBpcyByZXR1cm5lZCBhcyBhIHN0cmluZwotICAgICAgd2l0aG91dCBkZWNvZGluZyB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgLiAgSG93ZXZlciwKLSAgICAgIGZvciBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBvZiA4Yml0LCBhbiBhdHRlbXB0IGlzIG1hZGUKLSAgICAgIHRvIGRlY29kZSB0aGUgb3JpZ2luYWwgYnl0ZXMgdXNpbmcgdGhlIGBgY2hhcnNldGBgIHNwZWNpZmllZCBieSB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgdXNpbmcgdGhlIGBgcmVwbGFjZWBgIGVycm9yIGhhbmRsZXIuCi0gICAgICBJZiBubyBgYGNoYXJzZXRgYCBpcyBzcGVjaWZpZWQsIG9yIGlmIHRoZSBgYGNoYXJzZXRgYCBnaXZlbiBpcyBub3QKLSAgICAgIHJlY29nbml6ZWQgYnkgdGhlIGVtYWlsIHBhY2thZ2UsIHRoZSBib2R5IGlzIGRlY29kZWQgdXNpbmcgdGhlIGRlZmF1bHQKLSAgICAgIEFTQ0lJIGNoYXJzZXQuCi0KLQotICAgLi4gbWV0aG9kOjogc2V0X3BheWxvYWQocGF5bG9hZCwgY2hhcnNldD1Ob25lKQotCi0gICAgICBTZXQgdGhlIGVudGlyZSBtZXNzYWdlIG9iamVjdCdzIHBheWxvYWQgdG8gKnBheWxvYWQqLiAgSXQgaXMgdGhlIGNsaWVudCdzCi0gICAgICByZXNwb25zaWJpbGl0eSB0byBlbnN1cmUgdGhlIHBheWxvYWQgaW52YXJpYW50cy4gIE9wdGlvbmFsICpjaGFyc2V0KiBzZXRzCi0gICAgICB0aGUgbWVzc2FnZSdzIGRlZmF1bHQgY2hhcmFjdGVyIHNldDsgc2VlIDptZXRoOmBzZXRfY2hhcnNldGAgZm9yIGRldGFpbHMuCi0KLSAgIC4uIG1ldGhvZDo6IHNldF9jaGFyc2V0KGNoYXJzZXQpCi0KLSAgICAgIFNldCB0aGUgY2hhcmFjdGVyIHNldCBvZiB0aGUgcGF5bG9hZCB0byAqY2hhcnNldCosIHdoaWNoIGNhbiBlaXRoZXIgYmUgYQotICAgICAgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZSAoc2VlIDptb2Q6YGVtYWlsLmNoYXJzZXRgKSwgYQotICAgICAgc3RyaW5nIG5hbWluZyBhIGNoYXJhY3RlciBzZXQsIG9yIGBgTm9uZWBgLiAgSWYgaXQgaXMgYSBzdHJpbmcsIGl0IHdpbGwKLSAgICAgIGJlIGNvbnZlcnRlZCB0byBhIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UuICBJZiAqY2hhcnNldCoKLSAgICAgIGlzIGBgTm9uZWBgLCB0aGUgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIHdpbGwgYmUgcmVtb3ZlZCBmcm9tIHRoZQotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyICh0aGUgbWVzc2FnZSB3aWxsIG5vdCBiZSBvdGhlcndpc2UKLSAgICAgIG1vZGlmaWVkKS4gIEFueXRoaW5nIGVsc2Ugd2lsbCBnZW5lcmF0ZSBhIDpleGM6YFR5cGVFcnJvcmAuCi0KLSAgICAgIElmIHRoZXJlIGlzIG5vIGV4aXN0aW5nIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlciBvbmUgd2lsbCBiZQotICAgICAgYWRkZWQuICBJZiB0aGVyZSBpcyBubyBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIsIG9uZQotICAgICAgd2lsbCBiZSBhZGRlZCB3aXRoIGEgdmFsdWUgb2YgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4gIFdoZXRoZXIgdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgYWxyZWFkeSBleGlzdHMgb3Igbm90LCBpdHMgYGBjaGFyc2V0YGAKLSAgICAgIHBhcmFtZXRlciB3aWxsIGJlIHNldCB0byAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCouICAgSWYKLSAgICAgICpjaGFyc2V0LmlucHV0X2NoYXJzZXQqIGFuZCAqY2hhcnNldC5vdXRwdXRfY2hhcnNldCogZGlmZmVyLCB0aGUgcGF5bG9hZAotICAgICAgd2lsbCBiZSByZS1lbmNvZGVkIHRvIHRoZSAqb3V0cHV0X2NoYXJzZXQqLiAgSWYgdGhlcmUgaXMgbm8gZXhpc3RpbmcKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIsIHRoZW4gdGhlIHBheWxvYWQgd2lsbCBiZQotICAgICAgdHJhbnNmZXItZW5jb2RlZCwgaWYgbmVlZGVkLCB1c2luZyB0aGUgc3BlY2lmaWVkCi0gICAgICA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgLCBhbmQgYSBoZWFkZXIgd2l0aCB0aGUgYXBwcm9wcmlhdGUgdmFsdWUKLSAgICAgIHdpbGwgYmUgYWRkZWQuICBJZiBhIDptYWlsaGVhZGVyOmBDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nYCBoZWFkZXIKLSAgICAgIGFscmVhZHkgZXhpc3RzLCB0aGUgcGF5bG9hZCBpcyBhc3N1bWVkIHRvIGFscmVhZHkgYmUgY29ycmVjdGx5IGVuY29kZWQKLSAgICAgIHVzaW5nIHRoYXQgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGFuZCBpcyBub3QgbW9kaWZpZWQuCi0KLSAgIC4uIG1ldGhvZDo6IGdldF9jaGFyc2V0KCkKLQotICAgICAgUmV0dXJuIHRoZSA6Y2xhc3M6YH5lbWFpbC5jaGFyc2V0LkNoYXJzZXRgIGluc3RhbmNlIGFzc29jaWF0ZWQgd2l0aCB0aGUKLSAgICAgIG1lc3NhZ2UncyBwYXlsb2FkLgotCi0gICBUaGUgZm9sbG93aW5nIG1ldGhvZHMgaW1wbGVtZW50IGEgbWFwcGluZy1saWtlIGludGVyZmFjZSBmb3IgYWNjZXNzaW5nIHRoZQotICAgbWVzc2FnZSdzIDpyZmM6YDI4MjJgIGhlYWRlcnMuICBOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc2VtYW50aWMgZGlmZmVyZW5jZXMKKyAgIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBpbXBsZW1lbnQgdGhlIG1hcHBpbmctbGlrZSBpbnRlcmZhY2UgZm9yIGFjY2Vzc2luZyB0aGUKKyAgIG1lc3NhZ2UncyBoZWFkZXJzLiAgTm90ZSB0aGF0IHRoZXJlIGFyZSBzb21lIHNlbWFudGljIGRpZmZlcmVuY2VzCiAgICBiZXR3ZWVuIHRoZXNlIG1ldGhvZHMgYW5kIGEgbm9ybWFsIG1hcHBpbmcgKGkuZS4gZGljdGlvbmFyeSkgaW50ZXJmYWNlLiAgRm9yCiAgICBleGFtcGxlLCBpbiBhIGRpY3Rpb25hcnkgdGhlcmUgYXJlIG5vIGR1cGxpY2F0ZSBrZXlzLCBidXQgaGVyZSB0aGVyZSBtYXkgYmUKICAgIGR1cGxpY2F0ZSBtZXNzYWdlIGhlYWRlcnMuICBBbHNvLCBpbiBkaWN0aW9uYXJpZXMgdGhlcmUgaXMgbm8gZ3VhcmFudGVlZAotICAgb3JkZXIgdG8gdGhlIGtleXMgcmV0dXJuZWQgYnkgOm1ldGg6YGtleXNgLCBidXQgaW4gYSA6Y2xhc3M6YE1lc3NhZ2VgIG9iamVjdCwKLSAgIGhlYWRlcnMgYXJlIGFsd2F5cyByZXR1cm5lZCBpbiB0aGUgb3JkZXIgdGhleSBhcHBlYXJlZCBpbiB0aGUgb3JpZ2luYWwKLSAgIG1lc3NhZ2UsIG9yIHdlcmUgYWRkZWQgdG8gdGhlIG1lc3NhZ2UgbGF0ZXIuICBBbnkgaGVhZGVyIGRlbGV0ZWQgYW5kIHRoZW4KLSAgIHJlLWFkZGVkIGFyZSBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUgaGVhZGVyIGxpc3QuCisgICBvcmRlciB0byB0aGUga2V5cyByZXR1cm5lZCBieSA6bWV0aDpga2V5c2AsIGJ1dCBpbiBhbiA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAKKyAgIG9iamVjdCwgaGVhZGVycyBhcmUgYWx3YXlzIHJldHVybmVkIGluIHRoZSBvcmRlciB0aGV5IGFwcGVhcmVkIGluIHRoZQorICAgb3JpZ2luYWwgbWVzc2FnZSwgb3IgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkIHRvIHRoZSBtZXNzYWdlIGxhdGVyLiAgQW55CisgICBoZWFkZXIgZGVsZXRlZCBhbmQgdGhlbiByZS1hZGRlZCBpcyBhbHdheXMgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiB0aGUKKyAgIGhlYWRlciBsaXN0LgogCi0gICBUaGVzZSBzZW1hbnRpYyBkaWZmZXJlbmNlcyBhcmUgaW50ZW50aW9uYWwgYW5kIGFyZSBiaWFzZWQgdG93YXJkIG1heGltYWwKLSAgIGNvbnZlbmllbmNlLgorICAgVGhlc2Ugc2VtYW50aWMgZGlmZmVyZW5jZXMgYXJlIGludGVudGlvbmFsIGFuZCBhcmUgYmlhc2VkIHRvd2FyZAorICAgY29udmVuaWVuY2UgaW4gdGhlIG1vc3QgY29tbW9uIHVzZSBjYXNlcy4KIAogICAgTm90ZSB0aGF0IGluIGFsbCBjYXNlcywgYW55IGVudmVsb3BlIGhlYWRlciBwcmVzZW50IGluIHRoZSBtZXNzYWdlIGlzIG5vdAogICAgaW5jbHVkZWQgaW4gdGhlIG1hcHBpbmcgaW50ZXJmYWNlLgogCi0gICBJbiBhIG1vZGVsIGdlbmVyYXRlZCBmcm9tIGJ5dGVzLCBhbnkgaGVhZGVyIHZhbHVlcyB0aGF0IChpbiBjb250cmF2ZW50aW9uIG9mCi0gICB0aGUgUkZDcykgY29udGFpbiBub24tQVNDSUkgYnl0ZXMgd2lsbCwgd2hlbiByZXRyaWV2ZWQgdGhyb3VnaCB0aGlzCi0gICBpbnRlcmZhY2UsIGJlIHJlcHJlc2VudGVkIGFzIDpjbGFzczpgfmVtYWlsLmhlYWRlci5IZWFkZXJgIG9iamVjdHMgd2l0aAotICAgYSBjaGFyc2V0IG9mIGB1bmtub3duLThiaXRgLgotCiAKICAgIC4uIG1ldGhvZDo6IF9fbGVuX18oKQogCkBAIC0yNjQsOCArMTc5LDggQEAKICAgIC4uIG1ldGhvZDo6IF9fY29udGFpbnNfXyhuYW1lKQogCiAgICAgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgbWVzc2FnZSBvYmplY3QgaGFzIGEgZmllbGQgbmFtZWQgKm5hbWUqLiBNYXRjaGluZyBpcwotICAgICAgZG9uZSBjYXNlLWluc2Vuc2l0aXZlbHkgYW5kICpuYW1lKiBzaG91bGQgbm90IGluY2x1ZGUgdGhlIHRyYWlsaW5nIGNvbG9uLgotICAgICAgVXNlZCBmb3IgdGhlIGBgaW5gYCBvcGVyYXRvciwgZS5nLjo6CisgICAgICBkb25lIHdpdGhvdXQgcmVnYXJkIHRvIGNhc2UgYW5kICpuYW1lKiBkb2VzIG5vdCBpbmNsdWRlIHRoZSB0cmFpbGluZworICAgICAgY29sb24uICBVc2VkIGZvciB0aGUgYGBpbmBgIG9wZXJhdG9yLiAgRm9yIGV4YW1wbGU6OgogCiAgICAgICAgICAgIGlmICdtZXNzYWdlLWlkJyBpbiBteU1lc3NhZ2U6CiAgICAgICAgICAgICAgIHByaW50KCdNZXNzYWdlLUlEOicsIG15TWVzc2FnZVsnbWVzc2FnZS1pZCddKQpAQCAtMjczLDIwICsxODgsMjMgQEAKIAogICAgLi4gbWV0aG9kOjogX19nZXRpdGVtX18obmFtZSkKIAotICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgKm5hbWUqIHNob3VsZCBub3QgaW5jbHVkZSB0aGUKKyAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIG5hbWVkIGhlYWRlciBmaWVsZC4gICpuYW1lKiBkb2VzIG5vdCBpbmNsdWRlIHRoZQogICAgICAgY29sb24gZmllbGQgc2VwYXJhdG9yLiAgSWYgdGhlIGhlYWRlciBpcyBtaXNzaW5nLCBgYE5vbmVgYCBpcyByZXR1cm5lZDsgYQogICAgICAgOmV4YzpgS2V5RXJyb3JgIGlzIG5ldmVyIHJhaXNlZC4KIAogICAgICAgTm90ZSB0aGF0IGlmIHRoZSBuYW1lZCBmaWVsZCBhcHBlYXJzIG1vcmUgdGhhbiBvbmNlIGluIHRoZSBtZXNzYWdlJ3MKICAgICAgIGhlYWRlcnMsIGV4YWN0bHkgd2hpY2ggb2YgdGhvc2UgZmllbGQgdmFsdWVzIHdpbGwgYmUgcmV0dXJuZWQgaXMKICAgICAgIHVuZGVmaW5lZC4gIFVzZSB0aGUgOm1ldGg6YGdldF9hbGxgIG1ldGhvZCB0byBnZXQgdGhlIHZhbHVlcyBvZiBhbGwgdGhlCi0gICAgICBleHRhbnQgbmFtZWQgaGVhZGVycy4KKyAgICAgIGV4dGFudCBoZWFkZXJzIG5hbWVkICpuYW1lKi4KKworICAgICAgVXNpbmcgdGhlIHN0YW5kYXJkIChub24tYGBjb21wYXQzMmBgKSBwb2xpY2llcywgdGhlIHJldHVybmVkIHZhbHVlIGlzIGFuCisgICAgICBpbnN0YW5jZSBvZiBhIHN1YmNsYXNzIG9mIDpjbGFzczpgZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlcmAuCiAKIAogICAgLi4gbWV0aG9kOjogX19zZXRpdGVtX18obmFtZSwgdmFsKQogCiAgICAgICBBZGQgYSBoZWFkZXIgdG8gdGhlIG1lc3NhZ2Ugd2l0aCBmaWVsZCBuYW1lICpuYW1lKiBhbmQgdmFsdWUgKnZhbCouICBUaGUKLSAgICAgIGZpZWxkIGlzIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UncyBleGlzdGluZyBmaWVsZHMuCisgICAgICBmaWVsZCBpcyBhcHBlbmRlZCB0byB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlJ3MgZXhpc3RpbmcgaGVhZGVycy4KIAogICAgICAgTm90ZSB0aGF0IHRoaXMgZG9lcyAqbm90KiBvdmVyd3JpdGUgb3IgZGVsZXRlIGFueSBleGlzdGluZyBoZWFkZXIgd2l0aCB0aGUgc2FtZQogICAgICAgbmFtZS4gIElmIHlvdSB3YW50IHRvIGVuc3VyZSB0aGF0IHRoZSBuZXcgaGVhZGVyIGlzIHRoZSBvbmx5IG9uZSBwcmVzZW50IGluIHRoZQpAQCAtMjk1LDYgKzIxMywxMyBAQAogICAgICAgICAgZGVsIG1zZ1snc3ViamVjdCddCiAgICAgICAgICBtc2dbJ3N1YmplY3QnXSA9ICdQeXRob24gcm9vbHohJwogCisgICAgICBJZiB0aGUgOm1vZDpgcG9saWN5YCBkZWZpbmVzIGNlcnRhaW4gaGFkZXJzIHRvIGJlIHVuaXF1ZSAoYXMgdGhlIHN0YW5kYXJkCisgICAgICBwb2xpY2llcyBkbyksIHRoaXMgbWV0aG9kIG1heSByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIHdoZW4gYW4gYXR0ZW1wdAorICAgICAgaXMgbWFkZSB0byBhc3NpZ24gYSB2YWx1ZSB0byBzdWNoIGEgaGVhZGVyIHdoZW4gb25lIGFscmVhZHkgZXhpc3RzLiAgVGhpcworICAgICAgYmVoYXZpb3IgaXMgaW50ZW50aW9uYWwgZm9yIGNvbnNpc3RlbmN5J3Mgc2FrZSwgYnV0IGRvIG5vdCBkZXBlbmQgb24gaXQKKyAgICAgIGFzIHdlIG1heSBjaG9vc2UgdG8gbWFrZSBzdWNoIGFzc2lnbm1lbnRzIGRvIGFuIGF1dG9tYXRpYyBkZWxldGlvbiBvZiB0aGUKKyAgICAgIGV4aXN0aW5nIGhlYWRlciBpbiB0aGUgZnV0dXJlLgorCiAKICAgIC4uIG1ldGhvZDo6IF9fZGVsaXRlbV9fKG5hbWUpCiAKQEAgLTMyMyw5ICsyNDgsMTAgQEAKIAogICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgbmFtZWQgaGVhZGVyIGZpZWxkLiAgVGhpcyBpcyBpZGVudGljYWwgdG8KICAgICAgIDptZXRoOmBfX2dldGl0ZW1fX2AgZXhjZXB0IHRoYXQgb3B0aW9uYWwgKmZhaWxvYmoqIGlzIHJldHVybmVkIGlmIHRoZQotICAgICAgbmFtZWQgaGVhZGVyIGlzIG1pc3NpbmcgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KKyAgICAgIG5hbWVkIGhlYWRlciBpcyBtaXNzaW5nICgqZmFpbG9iaiogZGVmYXVsdHMgdG8gYGBOb25lYGApLgogCi0gICBIZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgdXNlZnVsIG1ldGhvZHM6CisKKyAgIEhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB1c2VmdWwgaGVhZGVyIHJlbGF0ZWQgbWV0aG9kczoKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfYWxsKG5hbWUsIGZhaWxvYmo9Tm9uZSkKQEAgLTM0NiwxNyArMjcyLDE5IEBACiAgICAgICB0YWtlbiBhcyB0aGUgcGFyYW1ldGVyIG5hbWUsIHdpdGggdW5kZXJzY29yZXMgY29udmVydGVkIHRvIGRhc2hlcyAoc2luY2UKICAgICAgIGRhc2hlcyBhcmUgaWxsZWdhbCBpbiBQeXRob24gaWRlbnRpZmllcnMpLiAgTm9ybWFsbHksIHRoZSBwYXJhbWV0ZXIgd2lsbAogICAgICAgYmUgYWRkZWQgYXMgYGBrZXk9InZhbHVlImBgIHVubGVzcyB0aGUgdmFsdWUgaXMgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UKLSAgICAgIG9ubHkgdGhlIGtleSB3aWxsIGJlIGFkZGVkLiAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLAotICAgICAgaXQgY2FuIGJlIHNwZWNpZmllZCBhcyBhIHRocmVlIHR1cGxlIGluIHRoZSBmb3JtYXQKLSAgICAgIGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcgbmFtaW5nIHRoZQotICAgICAgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4gdXN1YWxseSBiZSBzZXQKLSAgICAgIHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIgcG9zc2liaWxpdGllcyksCi0gICAgICBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkgY29kZSBwb2ludHMuICBJZgotICAgICAgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMgbm9uLUFTQ0lJIGNoYXJhY3RlcnMsCi0gICAgICBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0IHVzaW5nIGEgYGBDSEFSU0VUYGAKLSAgICAgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisgICAgICBvbmx5IHRoZSBrZXkgd2lsbCBiZSBhZGRlZC4KIAotICAgICAgSGVyZSdzIGFuIGV4YW1wbGU6OgorICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgbWF5CisgICAgICBiZSBleHBsaWNpdGx5IGNvbnRyb2xsZWQgYnkgc3BlY2lmaW5nIHRoZSB2YWx1ZSBhcyBhIHRocmVlIHR1cGxlIGluIHRoZQorICAgICAgZm9ybWF0IGBgKENIQVJTRVQsIExBTkdVQUdFLCBWQUxVRSlgYCwgd2hlcmUgYGBDSEFSU0VUYGAgaXMgYSBzdHJpbmcKKyAgICAgIG5hbWluZyB0aGUgY2hhcnNldCB0byBiZSB1c2VkIHRvIGVuY29kZSB0aGUgdmFsdWUsIGBgTEFOR1VBR0VgYCBjYW4KKyAgICAgIHVzdWFsbHkgYmUgc2V0IHRvIGBgTm9uZWBgIG9yIHRoZSBlbXB0eSBzdHJpbmcgKHNlZSA6cmZjOmAyMjMxYCBmb3Igb3RoZXIKKyAgICAgIHBvc3NpYmlsaXRpZXMpLCBhbmQgYGBWQUxVRWBgIGlzIHRoZSBzdHJpbmcgdmFsdWUgY29udGFpbmluZyBub24tQVNDSUkKKyAgICAgIGNvZGUgcG9pbnRzLiAgSWYgYSB0aHJlZSB0dXBsZSBpcyBub3QgcGFzc2VkIGFuZCB0aGUgdmFsdWUgY29udGFpbnMKKyAgICAgIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCBpdCBpcyBhdXRvbWF0aWNhbGx5IGVuY29kZWQgaW4gOnJmYzpgMjIzMWAgZm9ybWF0CisgICAgICB1c2luZyBhIGBgQ0hBUlNFVGBgIG9mIGBgdXRmLThgYCBhbmQgYSBgYExBTkdVQUdFYGAgb2YgYGBOb25lYGAuCisKKyAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZTo6CiAKICAgICAgICAgIG1zZy5hZGRfaGVhZGVyKCdDb250ZW50LURpc3Bvc2l0aW9uJywgJ2F0dGFjaG1lbnQnLCBmaWxlbmFtZT0nYnVkLmdpZicpCiAKQEAgLTM2NCwzNyArMjkyLDM1IEBACiAKICAgICAgICAgIENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnQ7IGZpbGVuYW1lPSJidWQuZ2lmIgogCi0gICAgICBBbiBleGFtcGxlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgorICAgICAgQW4gZXhhbXBsZSBvZiB0aGUgZXh0ZW5kZWQgaW50ZXJmYWNlIHdpdGggbm9uLUFTQ0lJIGNoYXJhY3RlcnM6OgogCiAgICAgICAgICBtc2cuYWRkX2hlYWRlcignQ29udGVudC1EaXNwb3NpdGlvbicsICdhdHRhY2htZW50JywKICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPSgnaXNvLTg4NTktMScsICcnLCAnRnXDn2JhbGxlci5wcHQnKSkKIAotICAgICAgV2hpY2ggcHJvZHVjZXMgOjoKLQotICAgICAgICAgQ29udGVudC1EaXNwb3NpdGlvbjogYXR0YWNobWVudDsgZmlsZW5hbWUqPSJpc28tODg1OS0xJydGdSVERmJhbGxlci5wcHQiCi0KIAogICAgLi4gbWV0aG9kOjogcmVwbGFjZV9oZWFkZXIoX25hbWUsIF92YWx1ZSkKIAogICAgICAgUmVwbGFjZSBhIGhlYWRlci4gIFJlcGxhY2UgdGhlIGZpcnN0IGhlYWRlciBmb3VuZCBpbiB0aGUgbWVzc2FnZSB0aGF0Ci0gICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZS4gIElmIG5vCi0gICAgICBtYXRjaGluZyBoZWFkZXIgd2FzIGZvdW5kLCBhIDpleGM6YEtleUVycm9yYCBpcyByYWlzZWQuCisgICAgICBtYXRjaGVzICpfbmFtZSosIHJldGFpbmluZyBoZWFkZXIgb3JkZXIgYW5kIGZpZWxkIG5hbWUgY2FzZSBvZiB0aGUKKyAgICAgIG9yaWdpbmFsIGhlYWRlci4gIElmIG5vIG1hdGNoaW5nIGhlYWRlciBpcyBmb3VuZCwgcmFpc2UgYQorICAgICAgOmV4YzpgS2V5RXJyb3JgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X3R5cGUoKQogCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUuICBUaGUgcmV0dXJuZWQgc3RyaW5nIGlzIGNvZXJjZWQgdG8KLSAgICAgIGxvd2VyIGNhc2Ugb2YgdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIHdhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBtZXNzYWdlIHRoZSBkZWZhdWx0IHR5cGUgYXMgZ2l2ZW4KLSAgICAgIGJ5IDptZXRoOmBnZXRfZGVmYXVsdF90eXBlYCB3aWxsIGJlIHJldHVybmVkLiAgU2luY2UgYWNjb3JkaW5nIHRvCi0gICAgICA6cmZjOmAyMDQ1YCwgbWVzc2FnZXMgYWx3YXlzIGhhdmUgYSBkZWZhdWx0IHR5cGUsIDptZXRoOmBnZXRfY29udGVudF90eXBlYAotICAgICAgd2lsbCBhbHdheXMgcmV0dXJuIGEgdmFsdWUuCisgICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyBjb250ZW50IHR5cGUsIGNvZXJjZWQgdG8gbG93ZXIgY2FzZSBvZiB0aGUgZm9ybQorICAgICAgOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYC4gIElmIHRoZXJlIGlzIG5vIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCisgICAgICBoZWFkZXIgaW4gdGhlIG1lc3NhZ2UgcmV0dXJuIHRoZSB2YWx1ZSByZXR1cm5lZCBieQorICAgICAgOm1ldGg6YGdldF9kZWZhdWx0X3R5cGVgLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcworICAgICAgaW52YWxpZCwgcmV0dXJuIGBgdGV4dC9wbGFpbmBgLgogCi0gICAgICA6cmZjOmAyMDQ1YCBkZWZpbmVzIGEgbWVzc2FnZSdzIGRlZmF1bHQgdHlwZSB0byBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gCi0gICAgICB1bmxlc3MgaXQgYXBwZWFycyBpbnNpZGUgYSA6bWltZXR5cGU6YG11bHRpcGFydC9kaWdlc3RgIGNvbnRhaW5lciwgaW4KLSAgICAgIHdoaWNoIGNhc2UgaXQgd291bGQgYmUgOm1pbWV0eXBlOmBtZXNzYWdlL3JmYzgyMmAuICBJZiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBoYXMgYW4gaW52YWxpZCB0eXBlIHNwZWNpZmljYXRpb24sCi0gICAgICA6cmZjOmAyMDQ1YCBtYW5kYXRlcyB0aGF0IHRoZSBkZWZhdWx0IHR5cGUgYmUgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYC4KKyAgICAgIChBY2NvcmRpbmcgdG8gOnJmYzpgMjA0NWAsIG1lc3NhZ2VzIGFsd2F5cyBoYXZlIGEgZGVmYXVsdCB0eXBlLAorICAgICAgOm1ldGg6YGdldF9jb250ZW50X3R5cGVgIHdpbGwgYWx3YXlzIHJldHVybiBhIHZhbHVlLiAgOnJmYzpgMjA0NWAgZGVmaW5lcworICAgICAgYSBtZXNzYWdlJ3MgZGVmYXVsdCB0eXBlIHRvIGJlIDptaW1ldHlwZTpgdGV4dC9wbGFpbmAgdW5sZXNzIGl0IGFwcGVhcnMKKyAgICAgIGluc2lkZSBhIDptaW1ldHlwZTpgbXVsdGlwYXJ0L2RpZ2VzdGAgY29udGFpbmVyLCBpbiB3aGljaCBjYXNlIGl0IHdvdWxkCisgICAgICBiZSA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYC4gIElmIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIKKyAgICAgIGhhcyBhbiBpbnZhbGlkIHR5cGUgc3BlY2lmaWNhdGlvbiwgOnJmYzpgMjA0NWAgbWFuZGF0ZXMgdGhhdCB0aGUgZGVmYXVsdAorICAgICAgdHlwZSBiZSA6bWltZXR5cGU6YHRleHQvcGxhaW5gLikKIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9tYWludHlwZSgpCkBAIC00MjAsODEgKzM0Niw0MSBAQAogICAgLi4gbWV0aG9kOjogc2V0X2RlZmF1bHRfdHlwZShjdHlwZSkKIAogICAgICAgU2V0IHRoZSBkZWZhdWx0IGNvbnRlbnQgdHlwZS4gICpjdHlwZSogc2hvdWxkIGVpdGhlciBiZQotICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBvciA6bWltZXR5cGU6YG1lc3NhZ2UvcmZjODIyYCwgYWx0aG91Z2ggdGhpcyBpcyBub3QKLSAgICAgIGVuZm9yY2VkLiAgVGhlIGRlZmF1bHQgY29udGVudCB0eXBlIGlzIG5vdCBzdG9yZWQgaW4gdGhlCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuCi0KLQotICAgLi4gbWV0aG9kOjogZ2V0X3BhcmFtcyhmYWlsb2JqPU5vbmUsIGhlYWRlcj0nY29udGVudC10eXBlJywgdW5xdW90ZT1UcnVlKQotCi0gICAgICBSZXR1cm4gdGhlIG1lc3NhZ2UncyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBwYXJhbWV0ZXJzLCBhcyBhIGxpc3QuCi0gICAgICBUaGUgZWxlbWVudHMgb2YgdGhlIHJldHVybmVkIGxpc3QgYXJlIDItdHVwbGVzIG9mIGtleS92YWx1ZSBwYWlycywgYXMKLSAgICAgIHNwbGl0IG9uIHRoZSBgYCc9J2BgIHNpZ24uICBUaGUgbGVmdCBoYW5kIHNpZGUgb2YgdGhlIGBgJz0nYGAgaXMgdGhlIGtleSwKLSAgICAgIHdoaWxlIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgdGhlIHZhbHVlLiAgSWYgdGhlcmUgaXMgbm8gYGAnPSdgYCBzaWduIGluCi0gICAgICB0aGUgcGFyYW1ldGVyIHRoZSB2YWx1ZSBpcyB0aGUgZW1wdHkgc3RyaW5nLCBvdGhlcndpc2UgdGhlIHZhbHVlIGlzIGFzCi0gICAgICBkZXNjcmliZWQgaW4gOm1ldGg6YGdldF9wYXJhbWAgYW5kIGlzIHVucXVvdGVkIGlmIG9wdGlvbmFsICp1bnF1b3RlKiBpcwotICAgICAgYGBUcnVlYGAgKHRoZSBkZWZhdWx0KS4KLQotICAgICAgT3B0aW9uYWwgKmZhaWxvYmoqIGlzIHRoZSBvYmplY3QgdG8gcmV0dXJuIGlmIHRoZXJlIGlzIG5vCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBPcHRpb25hbCAqaGVhZGVyKiBpcyB0aGUgaGVhZGVyIHRvCi0gICAgICBzZWFyY2ggaW5zdGVhZCBvZiA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KLQotCi0gICAuLiBtZXRob2Q6OiBnZXRfcGFyYW0ocGFyYW0sIGZhaWxvYmo9Tm9uZSwgaGVhZGVyPSdjb250ZW50LXR5cGUnLCB1bnF1b3RlPVRydWUpCi0KLSAgICAgIFJldHVybiB0aGUgdmFsdWUgb2YgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlcidzIHBhcmFtZXRlcgotICAgICAgKnBhcmFtKiBhcyBhIHN0cmluZy4gIElmIHRoZSBtZXNzYWdlIGhhcyBubyA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYAotICAgICAgaGVhZGVyIG9yIGlmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyLCB0aGVuICpmYWlsb2JqKiBpcyByZXR1cm5lZAotICAgICAgKGRlZmF1bHRzIHRvIGBgTm9uZWBgKS4KLQotICAgICAgT3B0aW9uYWwgKmhlYWRlciogaWYgZ2l2ZW4sIHNwZWNpZmllcyB0aGUgbWVzc2FnZSBoZWFkZXIgdG8gdXNlIGluc3RlYWQgb2YKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgotCi0gICAgICBQYXJhbWV0ZXIga2V5cyBhcmUgYWx3YXlzIGNvbXBhcmVkIGNhc2UgaW5zZW5zaXRpdmVseS4gIFRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGNhbiBlaXRoZXIgYmUgYSBzdHJpbmcsIG9yIGEgMy10dXBsZSBpZiB0aGUgcGFyYW1ldGVyIHdhcyA6cmZjOmAyMjMxYAotICAgICAgZW5jb2RlZC4gIFdoZW4gaXQncyBhIDMtdHVwbGUsIHRoZSBlbGVtZW50cyBvZiB0aGUgdmFsdWUgYXJlIG9mIHRoZSBmb3JtCi0gICAgICBgYChDSEFSU0VULCBMQU5HVUFHRSwgVkFMVUUpYGAuICBOb3RlIHRoYXQgYm90aCBgYENIQVJTRVRgYCBhbmQKLSAgICAgIGBgTEFOR1VBR0VgYCBjYW4gYmUgYGBOb25lYGAsIGluIHdoaWNoIGNhc2UgeW91IHNob3VsZCBjb25zaWRlciBgYFZBTFVFYGAKLSAgICAgIHRvIGJlIGVuY29kZWQgaW4gdGhlIGBgdXMtYXNjaWlgYCBjaGFyc2V0LiAgWW91IGNhbiB1c3VhbGx5IGlnbm9yZQotICAgICAgYGBMQU5HVUFHRWBgLgotCi0gICAgICBJZiB5b3VyIGFwcGxpY2F0aW9uIGRvZXNuJ3QgY2FyZSB3aGV0aGVyIHRoZSBwYXJhbWV0ZXIgd2FzIGVuY29kZWQgYXMgaW4KLSAgICAgIDpyZmM6YDIyMzFgLCB5b3UgY2FuIGNvbGxhcHNlIHRoZSBwYXJhbWV0ZXIgdmFsdWUgYnkgY2FsbGluZwotICAgICAgOmZ1bmM6YGVtYWlsLnV0aWxzLmNvbGxhcHNlX3JmYzIyMzFfdmFsdWVgLCBwYXNzaW5nIGluIHRoZSByZXR1cm4gdmFsdWUKLSAgICAgIGZyb20gOm1ldGg6YGdldF9wYXJhbWAuICBUaGlzIHdpbGwgcmV0dXJuIGEgc3VpdGFibHkgZGVjb2RlZCBVbmljb2RlCi0gICAgICBzdHJpbmcgd2hlbiB0aGUgdmFsdWUgaXMgYSB0dXBsZSwgb3IgdGhlIG9yaWdpbmFsIHN0cmluZyB1bnF1b3RlZCBpZiBpdAotICAgICAgaXNuJ3QuICBGb3IgZXhhbXBsZTo6Ci0KLSAgICAgICAgIHJhd3BhcmFtID0gbXNnLmdldF9wYXJhbSgnZm9vJykKLSAgICAgICAgIHBhcmFtID0gZW1haWwudXRpbHMuY29sbGFwc2VfcmZjMjIzMV92YWx1ZShyYXdwYXJhbSkKLQotICAgICAgSW4gYW55IGNhc2UsIHRoZSBwYXJhbWV0ZXIgdmFsdWUgKGVpdGhlciB0aGUgcmV0dXJuZWQgc3RyaW5nLCBvciB0aGUKLSAgICAgIGBgVkFMVUVgYCBpdGVtIGluIHRoZSAzLXR1cGxlKSBpcyBhbHdheXMgdW5xdW90ZWQsIHVubGVzcyAqdW5xdW90ZSogaXMgc2V0Ci0gICAgICB0byBgYEZhbHNlYGAuCisgICAgICA6bWltZXR5cGU6YHRleHQvcGxhaW5gIG9yIDptaW1ldHlwZTpgbWVzc2FnZS9yZmM4MjJgLCBhbHRob3VnaCB0aGlzIGlzCisgICAgICBub3QgZW5mb3JjZWQuICBUaGUgZGVmYXVsdCBjb250ZW50IHR5cGUgaXMgbm90IHN0b3JlZCBpbiB0aGUKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwgc28gaXQgb25seSBhZmZlY3RzIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgICAgIHRoZSBgYGdldF9jb250ZW50X3R5cGVgYCBtZXRob2RzIHdoZW4gbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciBpcyBwcmVzZW50IGluIHRoZSBtZXNzYWdlLgogCiAKICAgIC4uIG1ldGhvZDo6IHNldF9wYXJhbShwYXJhbSwgdmFsdWUsIGhlYWRlcj0nQ29udGVudC1UeXBlJywgcmVxdW90ZT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhcnNldD1Ob25lLCBsYW5ndWFnZT0nJywgcmVwbGFjZT1GYWxzZSkKIAogICAgICAgU2V0IGEgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIuICBJZiB0aGUKLSAgICAgIHBhcmFtZXRlciBhbHJlYWR5IGV4aXN0cyBpbiB0aGUgaGVhZGVyLCBpdHMgdmFsdWUgd2lsbCBiZSByZXBsYWNlZCB3aXRoCi0gICAgICAqdmFsdWUqLiAgSWYgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcyBub3QgeWV0IGJlZW4gZGVmaW5lZAotICAgICAgZm9yIHRoaXMgbWVzc2FnZSwgaXQgd2lsbCBiZSBzZXQgdG8gOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCBhbmQgdGhlIG5ldwotICAgICAgcGFyYW1ldGVyIHZhbHVlIHdpbGwgYmUgYXBwZW5kZWQgYXMgcGVyIDpyZmM6YDIwNDVgLgorICAgICAgcGFyYW1ldGVyIGFscmVhZHkgZXhpc3RzIGluIHRoZSBoZWFkZXIsIHJlcGxhY2UgaXRzIHZhbHVlIHdpdGggKnZhbHVlKi4KKyAgICAgIFdoZW4gKmhlYWRlciogaXMgYGBDb250ZW50LVR5cGVgYCAodGhlIGRlZmF1bHQpIGFuZCB0aGUgaGVhZGVyIGRvZXMgbm90CisgICAgICB5ZXQgZXhpc3QgaW4gdGhlIG1lc3NhZ2UsIGFkZCBpdCwgc2V0IGl0cyB2YWx1ZSB0bworICAgICAgOm1pbWV0eXBlOmB0ZXh0L3BsYWluYCwgYW5kIGFwcGVuZCB0aGUgbmV3IHBhcmFtZXRlciB2YWx1ZS4gIE9wdGlvbmFsCisgICAgICAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgLgogCi0gICAgICBPcHRpb25hbCAqaGVhZGVyKiBzcGVjaWZpZXMgYW4gYWx0ZXJuYXRpdmUgaGVhZGVyIHRvCi0gICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCwgYW5kIGFsbCBwYXJhbWV0ZXJzIHdpbGwgYmUgcXVvdGVkIGFzIG5lY2Vzc2FyeQotICAgICAgdW5sZXNzIG9wdGlvbmFsICpyZXF1b3RlKiBpcyBgYEZhbHNlYGAgKHRoZSBkZWZhdWx0IGlzIGBgVHJ1ZWBgKS4KLQotICAgICAgSWYgb3B0aW9uYWwgKmNoYXJzZXQqIGlzIHNwZWNpZmllZCwgdGhlIHBhcmFtZXRlciB3aWxsIGJlIGVuY29kZWQKLSAgICAgIGFjY29yZGluZyB0byA6cmZjOmAyMjMxYC4gT3B0aW9uYWwgKmxhbmd1YWdlKiBzcGVjaWZpZXMgdGhlIFJGQyAyMjMxCi0gICAgICBsYW5ndWFnZSwgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgc3RyaW5nLiAgQm90aCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKLSAgICAgIHNob3VsZCBiZSBzdHJpbmdzLgorICAgICAgSWYgdGhlIHZhbHVlIGNvbnRhaW5zIG5vbi1BU0NJSSBjaGFyYWN0ZXJzLCB0aGUgY2hhcnNldCBhbmQgbGFuZ3VhZ2UgbWF5CisgICAgICBiZSBleHBsaWNpdHkgc3BlY2lmaWVkIHVzaW5nIHRoZSBvcHRpb25hbCAqY2hhcnNldCogYW5kICpsYW5ndWFnZSoKKyAgICAgIHBhcmFtZXRlcnMuICBPcHRpb25hbCAqbGFuZ3VhZ2UqIHNwZWNpZmllcyB0aGUgOnJmYzpgMjIzMWAgbGFuZ3VhZ2UsCisgICAgICBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSBzdHJpbmcuICBCb3RoICpjaGFyc2V0KiBhbmQgKmxhbmd1YWdlKiBzaG91bGQgYmUKKyAgICAgIHN0cmluZ3MuICBUaGUgZGVmYXVsdCBpcyB0byB1c2UgdGhlIGBgdXRmOGBgICpjaGFyc2V0KiBhbmQgYGBOb25lYGAgZm9yCisgICAgICB0aGUgKmxhbmd1YWdlKi4KIAogICAgICAgSWYgKnJlcGxhY2UqIGlzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQpIHRoZSBoZWFkZXIgaXMgbW92ZWQgdG8gdGhlCiAgICAgICBlbmQgb2YgdGhlIGxpc3Qgb2YgaGVhZGVycy4gIElmICpyZXBsYWNlKiBpcyBgYFRydWVgYCwgdGhlIGhlYWRlcgogICAgICAgd2lsbCBiZSB1cGRhdGVkIGluIHBsYWNlLgogCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KKworICAgICAgTm90ZSB0aGF0IGV4aXN0aW5nIHBhcmFtZXRlciB2YWx1ZXMgb2YgaGVhZGVycyBtYXkgYmUgYWNjZXNzZWQgdGhyb3VnaAorICAgICAgdGhlIDphdHRyOmB+ZW1haWwuaGVhZGVycmVnaXN0cnkuQmFzZUhlYWRlci5wYXJhbXNgIGF0dHJpYnV0ZSBvZiB0aGUKKyAgICAgIGhlYWRlciB2YWx1ZSAoZm9yIGV4YW1wbGUsIGBgbXNnWydDb250ZW50LVR5cGUnXS5wYXJhbXNbJ2NoYXJzZXQnXWBgLgorCiAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNCBgYHJlcGxhY2VgYCBrZXl3b3JkIHdhcyBhZGRlZC4KIAogCkBAIC01MDIsMjUgKzM4OCwxMSBAQAogCiAgICAgICBSZW1vdmUgdGhlIGdpdmVuIHBhcmFtZXRlciBjb21wbGV0ZWx5IGZyb20gdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgCiAgICAgICBoZWFkZXIuICBUaGUgaGVhZGVyIHdpbGwgYmUgcmUtd3JpdHRlbiBpbiBwbGFjZSB3aXRob3V0IHRoZSBwYXJhbWV0ZXIgb3IKLSAgICAgIGl0cyB2YWx1ZS4gIEFsbCB2YWx1ZXMgd2lsbCBiZSBxdW90ZWQgYXMgbmVjZXNzYXJ5IHVubGVzcyAqcmVxdW90ZSogaXMKLSAgICAgIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgaXMgYGBUcnVlYGApLiAgT3B0aW9uYWwgKmhlYWRlciogc3BlY2lmaWVzIGFuCi0gICAgICBhbHRlcm5hdGl2ZSB0byA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYC4KKyAgICAgIGl0cyB2YWx1ZS4gIE9wdGlvbmFsICpoZWFkZXIqIHNwZWNpZmllcyBhbiBhbHRlcm5hdGl2ZSB0bworICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAuCiAKLQotICAgLi4gbWV0aG9kOjogc2V0X3R5cGUodHlwZSwgaGVhZGVyPSdDb250ZW50LVR5cGUnLCByZXF1b3RlPVRydWUpCi0KLSAgICAgIFNldCB0aGUgbWFpbiB0eXBlIGFuZCBzdWJ0eXBlIGZvciB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKLSAgICAgIGhlYWRlci4gKnR5cGUqIG11c3QgYmUgYSBzdHJpbmcgaW4gdGhlIGZvcm0gOm1pbWV0eXBlOmBtYWludHlwZS9zdWJ0eXBlYCwKLSAgICAgIG90aGVyd2lzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZC4KLQotICAgICAgVGhpcyBtZXRob2QgcmVwbGFjZXMgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciwga2VlcGluZyBhbGwKLSAgICAgIHRoZSBwYXJhbWV0ZXJzIGluIHBsYWNlLiAgSWYgKnJlcXVvdGUqIGlzIGBgRmFsc2VgYCwgdGhpcyBsZWF2ZXMgdGhlCi0gICAgICBleGlzdGluZyBoZWFkZXIncyBxdW90aW5nIGFzIGlzLCBvdGhlcndpc2UgdGhlIHBhcmFtZXRlcnMgd2lsbCBiZSBxdW90ZWQKLSAgICAgICh0aGUgZGVmYXVsdCkuCi0KLSAgICAgIEFuIGFsdGVybmF0aXZlIGhlYWRlciBjYW4gYmUgc3BlY2lmaWVkIGluIHRoZSAqaGVhZGVyKiBhcmd1bWVudC4gV2hlbiB0aGUKLSAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBpcyBzZXQgYSA6bWFpbGhlYWRlcjpgTUlNRS1WZXJzaW9uYAotICAgICAgaGVhZGVyIGlzIGFsc28gYWRkZWQuCisgICAgICBVc2Ugb2YgdGhlICpyZXF1b3RlKiBwYXJhbWV0ZXIgd2l0aCA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAgb2JqZWN0cyBpcworICAgICAgZGVwcmVjYXRlZC4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfZmlsZW5hbWUoZmFpbG9iaj1Ob25lKQpAQCAtNTQ5LDEyICs0MjEsMTEgQEAKICAgICAgIG5lY2Vzc2FyeS4gIEEgOmV4YzpgfmVtYWlsLmVycm9ycy5IZWFkZXJQYXJzZUVycm9yYCBpcyByYWlzZWQgaWYgdGhlCiAgICAgICBtZXNzYWdlIG9iamVjdCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgogCi0gICAgICBOb3RlIHRoYXQgdXNpbmcgdGhpcyBtZXRob2QgaXMgc3VidGx5IGRpZmZlcmVudCB0aGFuIGRlbGV0aW5nIHRoZSBvbGQKKyAgICAgIE5vdGUgdGhhdCB1c2luZyB0aGlzIG1ldGhvZCBpcyBzdWJ0bHkgZGlmZmVyZW50IGZyb20gZGVsZXRpbmcgdGhlIG9sZAogICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGFuZCBhZGRpbmcgYSBuZXcgb25lIHdpdGggdGhlIG5ldwogICAgICAgYm91bmRhcnkgdmlhIDptZXRoOmBhZGRfaGVhZGVyYCwgYmVjYXVzZSA6bWV0aDpgc2V0X2JvdW5kYXJ5YCBwcmVzZXJ2ZXMKICAgICAgIHRoZSBvcmRlciBvZiB0aGUgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyIGluIHRoZSBsaXN0IG9mCi0gICAgICBoZWFkZXJzLiBIb3dldmVyLCBpdCBkb2VzICpub3QqIHByZXNlcnZlIGFueSBjb250aW51YXRpb24gbGluZXMgd2hpY2ggbWF5Ci0gICAgICBoYXZlIGJlZW4gcHJlc2VudCBpbiB0aGUgb3JpZ2luYWwgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLgorICAgICAgaGVhZGVycy4KIAogCiAgICAuLiBtZXRob2Q6OiBnZXRfY29udGVudF9jaGFyc2V0KGZhaWxvYmo9Tm9uZSkKQEAgLTU2Myw5ICs0MzQsNiBAQAogICAgICAgY29lcmNlZCB0byBsb3dlciBjYXNlLiAgSWYgdGhlcmUgaXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBvciBpZgogICAgICAgdGhhdCBoZWFkZXIgaGFzIG5vIGBgY2hhcnNldGBgIHBhcmFtZXRlciwgKmZhaWxvYmoqIGlzIHJldHVybmVkLgogCi0gICAgICBOb3RlIHRoYXQgdGhpcyBtZXRob2QgZGlmZmVycyBmcm9tIDptZXRoOmBnZXRfY2hhcnNldGAgd2hpY2ggcmV0dXJucyB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmNoYXJzZXQuQ2hhcnNldGAgaW5zdGFuY2UgZm9yIHRoZSBkZWZhdWx0IGVuY29kaW5nIG9mIHRoZSBtZXNzYWdlIGJvZHkuCi0KIAogICAgLi4gbWV0aG9kOjogZ2V0X2NoYXJzZXRzKGZhaWxvYmo9Tm9uZSkKIApAQCAtNTc1LDEwICs0NDMsMTkgQEAKIAogICAgICAgRWFjaCBpdGVtIGluIHRoZSBsaXN0IHdpbGwgYmUgYSBzdHJpbmcgd2hpY2ggaXMgdGhlIHZhbHVlIG9mIHRoZQogICAgICAgYGBjaGFyc2V0YGAgcGFyYW1ldGVyIGluIHRoZSA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgZm9yIHRoZQotICAgICAgcmVwcmVzZW50ZWQgc3VicGFydC4gIEhvd2V2ZXIsIGlmIHRoZSBzdWJwYXJ0IGhhcyBubwotICAgICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyLCBubyBgYGNoYXJzZXRgYCBwYXJhbWV0ZXIsIG9yIGlzIG5vdCBvZgotICAgICAgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbiBNSU1FIHR5cGUsIHRoZW4gdGhhdCBpdGVtIGluIHRoZSByZXR1cm5lZCBsaXN0Ci0gICAgICB3aWxsIGJlICpmYWlsb2JqKi4KKyAgICAgIHJlcHJlc2VudGVkIHN1YnBhcnQuICBJZiB0aGUgc3VicGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAKKyAgICAgIGhlYWRlciwgbm8gYGBjaGFyc2V0YGAgcGFyYW1ldGVyLCBvciBpcyBub3Qgb2YgdGhlIDptaW1ldHlwZTpgdGV4dGAgbWFpbgorICAgICAgTUlNRSB0eXBlLCB0aGVuIHRoYXQgaXRlbSBpbiB0aGUgcmV0dXJuZWQgbGlzdCB3aWxsIGJlICpmYWlsb2JqKi4KKworCisgICAuLiBtZXRob2Q6OiBpc19hdHRhY2htZW50CisKKyAgICAgIFJldHVybiBgYFRydWVgYCBpZiB0aGVyZSBpcyBhIDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uYCBoZWFkZXIKKyAgICAgIGFuZCBpdHMgKGNhc2UgaW5zZW5zaXRpdmUpIHZhbHVlIGlzIGBgYXR0YWNobWVudGBgLCBgYEZhbHNlYGAgb3RoZXJ3aXNlLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNC4yCisgICAgICAgICBpc19hdHRhY2htZW50IGlzIG5vdyBhIG1ldGhvZCBpbnN0ZWFkIG9mIGEgcHJvcGVydHksIGZvciBjb25zaXN0ZW5jeQorICAgICAgICAgd2l0aCA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgLgogCiAKICAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50X2Rpc3Bvc2l0aW9uKCkKQEAgLTU5MCw2ICs0NjcsMTEgQEAKIAogICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKworICAgVGhlIGZvbGxvd2luZyBtZXRob2RzIHJlbGF0ZSB0byBpbnRlcnJvZ2F0aW5nIGFuZCBtYW5pcHVsYXRpbmcgdGhlIGNvbnRlbnQKKyAgIChwYXlsb2FkKSBvZiB0aGUgbWVzc2FnZS4KKworCiAgICAuLiBtZXRob2Q6OiB3YWxrKCkKIAogICAgICAgVGhlIDptZXRoOmB3YWxrYCBtZXRob2QgaXMgYW4gYWxsLXB1cnBvc2UgZ2VuZXJhdG9yIHdoaWNoIGNhbiBiZSB1c2VkIHRvCkBAIC02NTEsOCArNTMzLDE2OSBAQAogICAgICAgaW50byB0aGUgc3VicGFydHMuCiAKIAotICAgOmNsYXNzOmBNZXNzYWdlYCBvYmplY3RzIGNhbiBhbHNvIG9wdGlvbmFsbHkgY29udGFpbiB0d28gaW5zdGFuY2UgYXR0cmlidXRlcywKLSAgIHdoaWNoIGNhbiBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgcGxhaW4gdGV4dCBvZiBhIE1JTUUgbWVzc2FnZS4KKyAgIC4uIG1ldGhvZDo6IGdldF9ib2R5KHByZWZlcmVuY2VsaXN0PSgncmVsYXRlZCcsICdodG1sJywgJ3BsYWluJykpCisKKyAgICAgIFJldHVybiB0aGUgTUlNRSBwYXJ0IHRoYXQgaXMgdGhlIGJlc3QgY2FuZGlkYXRlIHRvIGJlIHRoZSAiYm9keSIgb2YgdGhlCisgICAgICBtZXNzYWdlLgorCisgICAgICAqcHJlZmVyZW5jZWxpc3QqIG11c3QgYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGZyb20gdGhlIHNldCBgYHJlbGF0ZWRgYCwKKyAgICAgIGBgaHRtbGBgLCBhbmQgYGBwbGFpbmBgLCBhbmQgaW5kaWNhdGVzIHRoZSBvcmRlciBvZiBwcmVmZXJlbmNlIGZvciB0aGUKKyAgICAgIGNvbnRlbnQgdHlwZSBvZiB0aGUgcGFydCByZXR1cm5lZC4KKworICAgICAgU3RhcnQgbG9va2luZyBmb3IgY2FuZGlkYXRlIG1hdGNoZXMgd2l0aCB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZQorICAgICAgYGBnZXRfYm9keWBgIG1ldGhvZCBpcyBjYWxsZWQuCisKKyAgICAgIElmIGBgcmVsYXRlZGBgIGlzIG5vdCBpbmNsdWRlZCBpbiAqcHJlZmVyZW5jZWxpc3QqLCBjb25zaWRlciB0aGUgcm9vdAorICAgICAgcGFydCAob3Igc3VicGFydCBvZiB0aGUgcm9vdCBwYXJ0KSBvZiBhbnkgcmVsYXRlZCBlbmNvdW50ZXJlZCBhcyBhCisgICAgICBjYW5kaWRhdGUgaWYgdGhlIChzdWItKXBhcnQgbWF0Y2hlcyBhIHByZWZlcmVuY2UuCisKKyAgICAgIFdoZW4gZW5jb3VudGVyaW5nIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBjaGVjayB0aGUgYGBzdGFydGBgIHBhcmFtZXRlcgorICAgICAgYW5kIGlmIGEgcGFydCB3aXRoIGEgbWF0Y2hpbmcgOm1haWxoZWFkZXI6YENvbnRlbnQtSURgIGlzIGZvdW5kLCBjb25zaWRlcgorICAgICAgb25seSBpdCB3aGVuIGxvb2tpbmcgZm9yIGNhbmRpZGF0ZSBtYXRjaGVzLiAgT3RoZXJ3aXNlIGNvbnNpZGVyIG9ubHkgdGhlCisgICAgICBmaXJzdCAoZGVmYXVsdCByb290KSBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydC9yZWxhdGVkYGAuCisKKyAgICAgIElmIGEgcGFydCBoYXMgYSA6bWFpbGhlYWRlcjpgQ29udGVudC1EaXNwb3NpdGlvbmAgaGVhZGVyLCBvbmx5IGNvbnNpZGVyCisgICAgICB0aGUgcGFydCBhIGNhbmRpZGF0ZSBtYXRjaCBpZiB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBpcyBgYGlubGluZWBgLgorCisgICAgICBJZiBub25lIG9mIHRoZSBjYW5kaWRhdGVzIG1hdGNoZXMgYW55IG9mIHRoZSBwcmVmZXJlbmNlcyBpbgorICAgICAgKnByZWZlcm5lY2xpc3QqLCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIE5vdGVzOiAoMSkgRm9yIG1vc3QgYXBwbGljYXRpb25zIHRoZSBvbmx5ICpwcmVmZXJlbmNlbGlzdCogY29tYmluYXRpb25zCisgICAgICB0aGF0IHJlYWxseSBtYWtlIHNlbnNlIGFyZSBgYCgncGxhaW4nLClgYCwgYGAoJ2h0bWwnLCAncGxhaW4nKWBgLCBhbmQgdGhlCisgICAgICBkZWZhdWx0IGBgKCdyZWxhdGVkJywgJ2h0bWwnLCAncGxhaW4nKWBgLiAgKDIpIEJlY2F1c2UgbWF0Y2hpbmcgc3RhcnRzCisgICAgICB3aXRoIHRoZSBvYmplY3Qgb24gd2hpY2ggYGBnZXRfYm9keWBgIGlzIGNhbGxlZCwgY2FsbGluZyBgYGdldF9ib2R5YGAgb24KKyAgICAgIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIHdpbGwgcmV0dXJuIHRoZSBvYmplY3QgaXRzZWxmIHVubGVzcworICAgICAgKnByZWZlcmVuY2VsaXN0KiBoYXMgYSBub24tZGVmYXVsdCB2YWx1ZS4gKDMpIE1lc3NhZ2VzIChvciBtZXNzYWdlIHBhcnRzKQorICAgICAgdGhhdCBkbyBub3Qgc3BlY2lmeSBhIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIG9yIHdob3NlCisgICAgICA6bWFpbGhlYWRlcjpgQ29udGVudC1UeXBlYCBoZWFkZXIgaXMgaW52YWxpZCB3aWxsIGJlIHRyZWF0ZWQgYXMgaWYgdGhleQorICAgICAgYXJlIG9mIHR5cGUgYGB0ZXh0L3BsYWluYGAsIHdoaWNoIG1heSBvY2Nhc2lvbmFsbHkgY2F1c2UgYGBnZXRfYm9keWBgIHRvCisgICAgICByZXR1cm4gdW5leHBlY3RlZCByZXN1bHRzLgorCisKKyAgIC4uIG1ldGhvZDo6IGl0ZXJfYXR0YWNobWVudHMoKQorCisgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciBhbGwgb2YgdGhlIGltbWVkaWF0ZSBzdWItcGFydHMgb2YgdGhlIG1lc3NhZ2UKKyAgICAgIHRoYXQgYXJlIG5vdCBjYW5kaWRhdGUgImJvZHkiIHBhcnRzLiAgVGhhdCBpcywgc2tpcCB0aGUgZmlyc3Qgb2NjdXJyZW5jZQorICAgICAgb2YgZWFjaCBvZiBgYHRleHQvcGxhaW5gYCwgYGB0ZXh0L2h0bWxgYCwgYGBtdWx0aXBhcnQvcmVsYXRlZGBgLCBvcgorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCAodW5sZXNzIHRoZXkgYXJlIGV4cGxpY2l0bHkgbWFya2VkIGFzCisgICAgICBhdHRhY2htZW50cyB2aWEgOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb246IGF0dGFjaG1lbnRgKSwgYW5kCisgICAgICByZXR1cm4gYWxsIHJlbWFpbmluZyBwYXJ0cy4gIFdoZW4gYXBwbGllZCBkaXJlY3RseSB0byBhCisgICAgICBgYG11bHRpcGFydC9yZWxhdGVkYGAsIHJldHVybiBhbiBpdGVyYXRvciBvdmVyIHRoZSBhbGwgdGhlIHJlbGF0ZWQgcGFydHMKKyAgICAgIGV4Y2VwdCB0aGUgcm9vdCBwYXJ0IChpZTogdGhlIHBhcnQgcG9pbnRlZCB0byBieSB0aGUgYGBzdGFydGBgIHBhcmFtZXRlciwKKyAgICAgIG9yIHRoZSBmaXJzdCBwYXJ0IGlmIHRoZXJlIGlzIG5vIGBgc3RhcnRgYCBwYXJhbWV0ZXIgb3IgdGhlIGBgc3RhcnRgYAorICAgICAgcGFyYW1ldGVyIGRvZXNuJ3QgbWF0Y2ggdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LUlEYCBvZiBhbnkgb2YgdGhlCisgICAgICBwYXJ0cykuICBXaGVuIGFwcGxpZWQgZGlyZWN0bHkgdG8gYSBgYG11bHRpcGFydC9hbHRlcm5hdGl2ZWBgIG9yIGEKKyAgICAgIG5vbi1gYG11bHRpcGFydGBgLCByZXR1cm4gYW4gZW1wdHkgaXRlcmF0b3IuCisKKworICAgLi4gbWV0aG9kOjogaXRlcl9wYXJ0cygpCisKKyAgICAgIFJldHVybiBhbiBpdGVyYXRvciBvdmVyIGFsbCBvZiB0aGUgaW1tZWRpYXRlIHN1Yi1wYXJ0cyBvZiB0aGUgbWVzc2FnZSwKKyAgICAgIHdoaWNoIHdpbGwgYmUgZW1wdHkgZm9yIGEgbm9uLWBgbXVsdGlwYXJ0YGAuICAoU2VlIGFsc28KKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2Uud2Fsa2AuKQorCisKKyAgIC4uIG1ldGhvZDo6IGdldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5nZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IHNldF9jb250ZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgQ2FsbCB0aGUgOm1ldGg6YH5lbWFpbC5jb250ZW50bWFuYWdlci5Db250ZW50TWFuYWdlci5zZXRfY29udGVudGAgbWV0aG9kCisgICAgICBvZiB0aGUgKmNvbnRlbnRfbWFuYWdlciosIHBhc3Npbmcgc2VsZiBhcyB0aGUgbWVzc2FnZSBvYmplY3QsIGFuZCBwYXNzaW5nCisgICAgICBhbG9uZyBhbnkgb3RoZXIgYXJndW1lbnRzIG9yIGtleXdvcmRzIGFzIGFkZGl0aW9uYWwgYXJndW1lbnRzLiAgSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfcmVsYXRlZChib3VuZGFyeT1Ob25lKQorCisgICAgICBDb252ZXJ0IGEgbm9uLWBgbXVsdGlwYXJ0YGAgbWVzc2FnZSBpbnRvIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIG1lc3NhZ2UsCisgICAgICBtb3ZpbmcgYW55IGV4aXN0aW5nIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEKKyAgICAgIChuZXcpIGZpcnN0IHBhcnQgb2YgdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlCisgICAgICBpdCBhcyB0aGUgYm91bmRhcnkgc3RyaW5nIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkKKyAgICAgIHRvIGJlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlCisgICAgICBtZXNzYWdlIGlzIHNlcmlhbGl6ZWQpLgorCisKKyAgIC4uIG1ldGhvZDo6IG1ha2VfYWx0ZXJuYXRpdmUoYm91bmRhcnk9Tm9uZSkKKworICAgICAgQ29udmVydCBhIG5vbi1gYG11bHRpcGFydGBgIG9yIGEgYGBtdWx0aXBhcnQvcmVsYXRlZGBgIGludG8gYQorICAgICAgYGBtdWx0aXBhcnQvYWx0ZXJuYXRpdmVgYCwgbW92aW5nIGFueSBleGlzdGluZyA6bWFpbGhlYWRlcjpgQ29udGVudC1gCisgICAgICBoZWFkZXJzIGFuZCBwYXlsb2FkIGludG8gYSAobmV3KSBmaXJzdCBwYXJ0IG9mIHRoZSBgYG11bHRpcGFydGBgLiAgSWYKKyAgICAgICpib3VuZGFyeSogaXMgc3BlY2lmaWVkLCB1c2UgaXQgYXMgdGhlIGJvdW5kYXJ5IHN0cmluZyBpbiB0aGUgbXVsdGlwYXJ0LAorICAgICAgb3RoZXJ3aXNlIGxlYXZlIHRoZSBib3VuZGFyeSB0byBiZSBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2hlbiBpdCBpcworICAgICAgbmVlZGVkIChmb3IgZXhhbXBsZSwgd2hlbiB0aGUgbWVzc2FnZSBpcyBzZXJpYWxpemVkKS4KKworCisgICAuLiBtZXRob2Q6OiBtYWtlX21peGVkKGJvdW5kYXJ5PU5vbmUpCisKKyAgICAgIENvbnZlcnQgYSBub24tYGBtdWx0aXBhcnRgYCwgYSBgYG11bHRpcGFydC9yZWxhdGVkYGAsIG9yIGEKKyAgICAgIGBgbXVsdGlwYXJ0LWFsdGVybmF0aXZlYGAgaW50byBhIGBgbXVsdGlwYXJ0L21peGVkYGAsIG1vdmluZyBhbnkgZXhpc3RpbmcKKyAgICAgIDptYWlsaGVhZGVyOmBDb250ZW50LWAgaGVhZGVycyBhbmQgcGF5bG9hZCBpbnRvIGEgKG5ldykgZmlyc3QgcGFydCBvZiB0aGUKKyAgICAgIGBgbXVsdGlwYXJ0YGAuICBJZiAqYm91bmRhcnkqIGlzIHNwZWNpZmllZCwgdXNlIGl0IGFzIHRoZSBib3VuZGFyeSBzdHJpbmcKKyAgICAgIGluIHRoZSBtdWx0aXBhcnQsIG90aGVyd2lzZSBsZWF2ZSB0aGUgYm91bmRhcnkgdG8gYmUgYXV0b21hdGljYWxseQorICAgICAgY3JlYXRlZCB3aGVuIGl0IGlzIG5lZWRlZCAoZm9yIGV4YW1wbGUsIHdoZW4gdGhlIG1lc3NhZ2UgaXMgc2VyaWFsaXplZCkuCisKKworICAgLi4gbWV0aG9kOjogYWRkX3JlbGF0ZWQoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgY3JlYXRlIGEgbmV3IG1lc3NhZ2UKKyAgICAgIG9iamVjdCwgcGFzcyBhbGwgb2YgdGhlIGFyZ3VtZW50cyB0byBpdHMgOm1ldGg6YHNldF9jb250ZW50YCBtZXRob2QsCisgICAgICBhbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBpdCB0byB0aGUgYGBtdWx0aXBhcnRgYC4gIElmCisgICAgICB0aGUgbWVzc2FnZSBpcyBhIG5vbi1gYG11bHRpcGFydGBgLCBjYWxsIDptZXRoOmBtYWtlX3JlbGF0ZWRgIGFuZCB0aGVuCisgICAgICBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMgYW55IG90aGVyIHR5cGUgb2YgYGBtdWx0aXBhcnRgYCwKKyAgICAgIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYgKmNvbnRlbnRfbWFuYWdlciogaXMgbm90IHNwZWNpZmllZCwgdXNlCisgICAgICB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQgYnkgdGhlIGN1cnJlbnQgOm1vZDpgfmVtYWlsLnBvbGljeWAuCisgICAgICBJZiB0aGUgYWRkZWQgcGFydCBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwKKyAgICAgIGFkZCBvbmUgd2l0aCB0aGUgdmFsdWUgYGBpbmxpbmVgYC4KKworCisgICAuLiBtZXRob2Q6OiBhZGRfYWx0ZXJuYXRpdmUoKmFyZ3MsIGNvbnRlbnRfbWFuYWdlcj1Ob25lLCAqKmt3KQorCisgICAgICBJZiB0aGUgbWVzc2FnZSBpcyBhIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNyZWF0ZSBhIG5ldyBtZXNzYWdlCisgICAgICBvYmplY3QsIHBhc3MgYWxsIG9mIHRoZSBhcmd1bWVudHMgdG8gaXRzIDptZXRoOmBzZXRfY29udGVudGAgbWV0aG9kLCBhbmQKKyAgICAgIDptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaGAgaXQgdG8gdGhlIGBgbXVsdGlwYXJ0YGAuICBJZiB0aGUKKyAgICAgIG1lc3NhZ2UgaXMgYSBub24tYGBtdWx0aXBhcnRgYCBvciBgYG11bHRpcGFydC9yZWxhdGVkYGAsIGNhbGwKKyAgICAgIDptZXRoOmBtYWtlX2FsdGVybmF0aXZlYCBhbmQgdGhlbiBwcm9jZWVkIGFzIGFib3ZlLiAgSWYgdGhlIG1lc3NhZ2UgaXMKKyAgICAgIGFueSBvdGhlciB0eXBlIG9mIGBgbXVsdGlwYXJ0YGAsIHJhaXNlIGEgOmV4YzpgVHlwZUVycm9yYC4gSWYKKyAgICAgICpjb250ZW50X21hbmFnZXIqIGlzIG5vdCBzcGVjaWZpZWQsIHVzZSB0aGUgYGBjb250ZW50X21hbmFnZXJgYCBzcGVjaWZpZWQKKyAgICAgIGJ5IHRoZSBjdXJyZW50IDptb2Q6YH5lbWFpbC5wb2xpY3lgLgorCisKKyAgIC4uIG1ldGhvZDo6IGFkZF9hdHRhY2htZW50KCphcmdzLCBjb250ZW50X21hbmFnZXI9Tm9uZSwgKiprdykKKworICAgICAgSWYgdGhlIG1lc3NhZ2UgaXMgYSBgYG11bHRpcGFydC9taXhlZGBgLCBjcmVhdGUgYSBuZXcgbWVzc2FnZSBvYmplY3QsCisgICAgICBwYXNzIGFsbCBvZiB0aGUgYXJndW1lbnRzIHRvIGl0cyA6bWV0aDpgc2V0X2NvbnRlbnRgIG1ldGhvZCwgYW5kCisgICAgICA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hdHRhY2hgIGl0IHRvIHRoZSBgYG11bHRpcGFydGBgLiAgSWYgdGhlCisgICAgICBtZXNzYWdlIGlzIGEgbm9uLWBgbXVsdGlwYXJ0YGAsIGBgbXVsdGlwYXJ0L3JlbGF0ZWRgYCwgb3IKKyAgICAgIGBgbXVsdGlwYXJ0L2FsdGVybmF0aXZlYGAsIGNhbGwgOm1ldGg6YG1ha2VfbWl4ZWRgIGFuZCB0aGVuIHByb2NlZWQgYXMKKyAgICAgIGFib3ZlLiBJZiAqY29udGVudF9tYW5hZ2VyKiBpcyBub3Qgc3BlY2lmaWVkLCB1c2UgdGhlIGBgY29udGVudF9tYW5hZ2VyYGAKKyAgICAgIHNwZWNpZmllZCBieSB0aGUgY3VycmVudCA6bW9kOmB+ZW1haWwucG9saWN5YC4gIElmIHRoZSBhZGRlZCBwYXJ0CisgICAgICBoYXMgbm8gOm1haWxoZWFkZXI6YENvbnRlbnQtRGlzcG9zaXRpb25gIGhlYWRlciwgYWRkIG9uZSB3aXRoIHRoZSB2YWx1ZQorICAgICAgYGBhdHRhY2htZW50YGAuICBUaGlzIG1ldGhvZCBjYW4gYmUgdXNlZCBib3RoIGZvciBleHBsaWNpdCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBhdHRhY2htZW50YCBhbmQgYGBpbmxpbmVgYCBhdHRhY2htZW50cworICAgICAgKDptYWlsaGVhZGVyOmBDb250ZW50LURpc3Bvc2l0aW9uOiBpbmxpbmVgKSwgYnkgcGFzc2luZyBhcHByb3ByaWF0ZQorICAgICAgb3B0aW9ucyB0byB0aGUgYGBjb250ZW50X21hbmFnZXJgYC4KKworCisgICAuLiBtZXRob2Q6OiBjbGVhcigpCisKKyAgICAgIFJlbW92ZSB0aGUgcGF5bG9hZCBhbmQgYWxsIG9mIHRoZSBoZWFkZXJzLgorCisKKyAgIC4uIG1ldGhvZDo6IGNsZWFyX2NvbnRlbnQoKQorCisgICAgICBSZW1vdmUgdGhlIHBheWxvYWQgYW5kIGFsbCBvZiB0aGUgOmV4YzpgQ29udGVudC1gIGhlYWRlcnMsIGxlYXZpbmcKKyAgICAgIGFsbCBvdGhlciBoZWFkZXJzIGludGFjdCBhbmQgaW4gdGhlaXIgb3JpZ2luYWwgb3JkZXIuCisKKworICAgOmNsYXNzOmBFbWFpbE1lc3NhZ2VgIG9iamVjdHMgaGF2ZSB0aGUgZm9sbG93aW5nIGluc3RhbmNlIGF0dHJpYnV0ZXM6CiAKIAogICAgLi4gYXR0cmlidXRlOjogcHJlYW1ibGUKQEAgLTY4MiwxMSArNzI1LDggQEAKIAogICAgICAgVGhlICplcGlsb2d1ZSogYXR0cmlidXRlIGFjdHMgdGhlIHNhbWUgd2F5IGFzIHRoZSAqcHJlYW1ibGUqIGF0dHJpYnV0ZSwKICAgICAgIGV4Y2VwdCB0aGF0IGl0IGNvbnRhaW5zIHRleHQgdGhhdCBhcHBlYXJzIGJldHdlZW4gdGhlIGxhc3QgYm91bmRhcnkgYW5kCi0gICAgICB0aGUgZW5kIG9mIHRoZSBtZXNzYWdlLgotCi0gICAgICBZb3UgZG8gbm90IG5lZWQgdG8gc2V0IHRoZSBlcGlsb2d1ZSB0byB0aGUgZW1wdHkgc3RyaW5nIGluIG9yZGVyIGZvciB0aGUKLSAgICAgIDpjbGFzczpgfmVtYWlsLmdlbmVyYXRvci5HZW5lcmF0b3JgIHRvIHByaW50IGEgbmV3bGluZSBhdCB0aGUgZW5kIG9mIHRoZQotICAgICAgZmlsZS4KKyAgICAgIHRoZSBlbmQgb2YgdGhlIG1lc3NhZ2UuICBBcyB3aXRoIHRoZSA6YXR0cjpgfkVtYWlsTWVzc2FnZS5wcmVhbWJsZWAsCisgICAgICBpZiB0aGVyZSBpcyBubyBlcGlsb2cgdGV4dCB0aGlzIGF0dHJpYnV0ZSB3aWxsIGJlIGBgTm9uZWBgLgogCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlZmVjdHMKQEAgLTY5NCwzICs3MzQsMTggQEAKICAgICAgIFRoZSAqZGVmZWN0cyogYXR0cmlidXRlIGNvbnRhaW5zIGEgbGlzdCBvZiBhbGwgdGhlIHByb2JsZW1zIGZvdW5kIHdoZW4KICAgICAgIHBhcnNpbmcgdGhpcyBtZXNzYWdlLiAgU2VlIDptb2Q6YGVtYWlsLmVycm9yc2AgZm9yIGEgZGV0YWlsZWQgZGVzY3JpcHRpb24KICAgICAgIG9mIHRoZSBwb3NzaWJsZSBwYXJzaW5nIGRlZmVjdHMuCisKKworLi4gY2xhc3M6OiBNSU1FUGFydChwb2xpY3k9ZGVmYXVsdCkKKworICAgIFRoaXMgY2xhc3MgcmVwcmVzZW50cyBhIHN1YnBhcnQgb2YgYSBNSU1FIG1lc3NhZ2UuICBJdCBpcyBpZGVudGljYWwgdG8KKyAgICA6Y2xhc3M6YEVtYWlsTWVzc2FnZWAsIGV4Y2VwdCB0aGF0IG5vIDptYWlsaGVhZGVyOmBNSU1FLVZlcnNpb25gIGhlYWRlcnMgYXJlCisgICAgYWRkZWQgd2hlbiA6bWV0aDpgfkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgaXMgY2FsbGVkLCBzaW5jZSBzdWItcGFydHMgZG8KKyAgICBub3QgbmVlZCB0aGVpciBvd24gOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVycy4KKworCisuLiBydWJyaWM6OiBGb290bm90ZXMKKworLi4gWzFdIE9yaW5nYWxseSBhZGRlZCBpbiAzLjQgYXMgYSA6dGVybTpgcHJvdmlzaW9uYWwgbW9kdWxlIDxwcm92aXNpb25hbAorICAgICAgIHBhY2thZ2U+YC4gIERvY3MgZm9yIGxlZ2FjeSBtZXNzYWdlIGNsYXNzIG1vdmVkIHRvCisgICAgICAgOnJlZjpgY29tcGF0MzJfbWVzc2FnZWAuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9lbWFpbC5taW1lLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CmluZGV4IDgyOTdkZWEuLmQ5ZGFlOWYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L2VtYWlsLm1pbWUucnN0CkBAIC04LDYgKzgsMTEgQEAKIAogLS0tLS0tLS0tLS0tLS0KIAorVGhpcyBtb2R1bGUgaXMgcGFydCBvZiB0aGUgbGVnYWN5IChgYENvbXBhdDMyYGApIGVtYWlsIEFQSS4gIEl0cyBmdW5jdGlvbmFsaXR5CitpcyBwYXJ0aWFsbHkgcmVwbGFjZWQgYnkgdGhlIDptb2Q6YH5lbWFpbC5jb250ZW50bWFuYWdlcmAgaW4gdGhlIG5ldyBBUEksIGJ1dAoraW4gY2VydGFpbiBhcHBsaWNhdGlvbnMgdGhlc2UgY2xhc3NlcyBtYXkgc3RpbGwgYmUgdXNlZnVsLCBldmVuIGluIG5vbi1sZWdhY3kKK2NvZGUuCisKIE9yZGluYXJpbHksIHlvdSBnZXQgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgYnkgcGFzc2luZyBhIGZpbGUgb3Igc29tZSB0ZXh0IHRvCiBhIHBhcnNlciwgd2hpY2ggcGFyc2VzIHRoZSB0ZXh0IGFuZCByZXR1cm5zIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgSG93ZXZlcgogeW91IGNhbiBhbHNvIGJ1aWxkIGEgY29tcGxldGUgbWVzc2FnZSBzdHJ1Y3R1cmUgZnJvbSBzY3JhdGNoLCBvciBldmVuIGluZGl2aWR1YWwKQEAgLTI1LDcgKzMwLDcgQEAKIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUuYmFzZQogCi0uLiBjbGFzczo6IE1JTUVCYXNlKF9tYWludHlwZSwgX3N1YnR5cGUsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUJhc2UoX21haW50eXBlLCBfc3VidHlwZSwgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5iYXNlYAogCkBAIC00MSwxMCArNDYsMTcgQEAKICAgIGtleS92YWx1ZSBkaWN0aW9uYXJ5IGFuZCBpcyBwYXNzZWQgZGlyZWN0bHkgdG8gOm1ldGg6YE1lc3NhZ2UuYWRkX2hlYWRlcgogICAgPGVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5hZGRfaGVhZGVyPmAuCiAKKyAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCwgKGRlZmF1bHRzIHRvIHRoZQorICAgOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAgcG9saWN5KSBpdCB3aWxsIGJlIHBhc3NlZCB0bworICAgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlYC4KKwogICAgVGhlIDpjbGFzczpgTUlNRUJhc2VgIGNsYXNzIGFsd2F5cyBhZGRzIGEgOm1haWxoZWFkZXI6YENvbnRlbnQtVHlwZWAgaGVhZGVyCiAgICAoYmFzZWQgb24gKl9tYWludHlwZSosICpfc3VidHlwZSosIGFuZCAqX3BhcmFtcyopLCBhbmQgYQogICAgOm1haWxoZWFkZXI6YE1JTUUtVmVyc2lvbmAgaGVhZGVyIChhbHdheXMgc2V0IHRvIGBgMS4wYGApLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KKwogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5ub25tdWx0aXBhcnQKIApAQCAtNjIsNyArNzQsOCBAQAogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5tdWx0aXBhcnQKIAotLi4gY2xhc3M6OiBNSU1FTXVsdGlwYXJ0KF9zdWJ0eXBlPSdtaXhlZCcsIGJvdW5kYXJ5PU5vbmUsIF9zdWJwYXJ0cz1Ob25lLCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVNdWx0aXBhcnQoX3N1YnR5cGU9J21peGVkJywgYm91bmRhcnk9Tm9uZSwgX3N1YnBhcnRzPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAqLCBwb2xpY3k9Y29tcGF0MzIsICoqX3BhcmFtcykKIAogICAgTW9kdWxlOiA6bW9kOmBlbWFpbC5taW1lLm11bHRpcGFydGAKIApAQCAtODIsMTQgKzk1LDIwIEBACiAgICB0byB0aGUgbWVzc2FnZSBieSB1c2luZyB0aGUgOm1ldGg6YE1lc3NhZ2UuYXR0YWNoCiAgICA8ZW1haWwubWVzc2FnZS5NZXNzYWdlLmF0dGFjaD5gIG1ldGhvZC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgIEFkZGl0aW9uYWwgcGFyYW1ldGVycyBmb3IgdGhlIDptYWlsaGVhZGVyOmBDb250ZW50LVR5cGVgIGhlYWRlciBhcmUgdGFrZW4gZnJvbQogICAgdGhlIGtleXdvcmQgYXJndW1lbnRzLCBvciBwYXNzZWQgaW50byB0aGUgKl9wYXJhbXMqIGFyZ3VtZW50LCB3aGljaCBpcyBhIGtleXdvcmQKICAgIGRpY3Rpb25hcnkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5hcHBsaWNhdGlvbgogCi0uLiBjbGFzczo6IE1JTUVBcHBsaWNhdGlvbihfZGF0YSwgX3N1YnR5cGU9J29jdGV0LXN0cmVhbScsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUFwcGxpY2F0aW9uKF9kYXRhLCBfc3VidHlwZT0nb2N0ZXQtc3RyZWFtJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW1haWwuZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKiwgcG9saWN5PWNvbXBhdDMyLCAqKl9wYXJhbXMpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS5hcHBsaWNhdGlvbmAKIApAQCAtMTA5LDEyICsxMjgsMTggQEAKICAgIG9iamVjdCBhcyBuZWNlc3NhcnkuICBUaGUgZGVmYXVsdCBlbmNvZGluZyBpcyBiYXNlNjQuICBTZWUgdGhlCiAgICA6bW9kOmBlbWFpbC5lbmNvZGVyc2AgbW9kdWxlIGZvciBhIGxpc3Qgb2YgdGhlIGJ1aWx0LWluIGVuY29kZXJzLgogCisgICBPcHRpb25hbCAqcG9saWN5KiBhcmd1bWVudCBkZWZhdWx0cyB0byA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YC4KKwogICAgKl9wYXJhbXMqIGFyZSBwYXNzZWQgc3RyYWlnaHQgdGhyb3VnaCB0byB0aGUgYmFzZSBjbGFzcyBjb25zdHJ1Y3Rvci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFkZGVkICpwb2xpY3kqIGtleXdvcmQtb25seSBwYXJhbWV0ZXIuCiAKIC4uIGN1cnJlbnRtb2R1bGU6OiBlbWFpbC5taW1lLmF1ZGlvCiAKLS4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsICoqX3BhcmFtcykKKy4uIGNsYXNzOjogTUlNRUF1ZGlvKF9hdWRpb2RhdGEsIF9zdWJ0eXBlPU5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgIF9lbmNvZGVyPWVtYWlsLmVuY29kZXJzLmVuY29kZV9iYXNlNjQsIFwKKyAgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuYXVkaW9gCiAKQEAgLTEzNywxMiArMTYyLDE4IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIGJhc2UgY2xhc3MgY29uc3RydWN0b3IuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS5pbWFnZQogCi0uLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpCisuLiBjbGFzczo6IE1JTUVJbWFnZShfaW1hZ2VkYXRhLCBfc3VidHlwZT1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbWFpbC5lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCBcCisgICAgICAgICAgICAgICAgICAgICosIHBvbGljeT1jb21wYXQzMiwgKipfcGFyYW1zKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUuaW1hZ2VgCiAKQEAgLTE2NSwxMyArMTk2LDE3IEBACiAgICBvYmplY3QgYXMgbmVjZXNzYXJ5LiAgVGhlIGRlZmF1bHQgZW5jb2RpbmcgaXMgYmFzZTY0LiAgU2VlIHRoZQogICAgOm1vZDpgZW1haWwuZW5jb2RlcnNgIG1vZHVsZSBmb3IgYSBsaXN0IG9mIHRoZSBidWlsdC1pbiBlbmNvZGVycy4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKICAgICpfcGFyYW1zKiBhcmUgcGFzc2VkIHN0cmFpZ2h0IHRocm91Z2ggdG8gdGhlIDpjbGFzczpgfmVtYWlsLm1pbWUuYmFzZS5NSU1FQmFzZWAKICAgIGNvbnN0cnVjdG9yLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBvbGljeSoga2V5d29yZC1vbmx5IHBhcmFtZXRlci4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsLm1pbWUubWVzc2FnZQogCi0uLiBjbGFzczo6IE1JTUVNZXNzYWdlKF9tc2csIF9zdWJ0eXBlPSdyZmM4MjInKQorLi4gY2xhc3M6OiBNSU1FTWVzc2FnZShfbXNnLCBfc3VidHlwZT0ncmZjODIyJywgKiwgcG9saWN5PWNvbXBhdDMyKQogCiAgICBNb2R1bGU6IDptb2Q6YGVtYWlsLm1pbWUubWVzc2FnZWAKIApAQCAtMTg0LDEwICsyMTksMTQgQEAKICAgIE9wdGlvbmFsICpfc3VidHlwZSogc2V0cyB0aGUgc3VidHlwZSBvZiB0aGUgbWVzc2FnZTsgaXQgZGVmYXVsdHMgdG8KICAgIDptaW1ldHlwZTpgcmZjODIyYC4KIAorICAgT3B0aW9uYWwgKnBvbGljeSogYXJndW1lbnQgZGVmYXVsdHMgdG8gOmNsYXNzOmBjb21wYXQzMiA8ZW1haWwucG9saWN5LkNvbXBhdDMyPmAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgogCiAuLiBjdXJyZW50bW9kdWxlOjogZW1haWwubWltZS50ZXh0CiAKLS4uIGNsYXNzOjogTUlNRVRleHQoX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpCisuLiBjbGFzczo6IE1JTUVUZXh0KF90ZXh0LCBfc3VidHlwZT0ncGxhaW4nLCBfY2hhcnNldD1Ob25lLCAqLCBwb2xpY3k9Y29tcGF0MzIpCiAKICAgIE1vZHVsZTogOm1vZDpgZW1haWwubWltZS50ZXh0YAogCkBAIC0yMTEsNSArMjUwLDEwIEBACiAgICB3aWxsIGF1dG9tYXRpY2FsbHkgZW5jb2RlIHRoZSBuZXcgcGF5bG9hZCAoYW5kIGFkZCBhIG5ldwogICAgOm1haWxoZWFkZXI6YENvbnRlbnQtVHJhbnNmZXItRW5jb2RpbmdgIGhlYWRlcikuCiAKKyAgIE9wdGlvbmFsICpwb2xpY3kqIGFyZ3VtZW50IGRlZmF1bHRzIHRvIDpjbGFzczpgY29tcGF0MzIgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgKl9jaGFyc2V0KiBhbHNvIGFjY2VwdHMgOmNsYXNzOmB+ZW1haWwuY2hhcnNldC5DaGFyc2V0YCBpbnN0YW5jZXMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqcG9saWN5KiBrZXl3b3JkLW9ubHkgcGFyYW1ldGVyLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L2VtYWlsLnBhcnNlci5yc3QKaW5kZXggYjhlYjdjNS4uMmFjMWY5OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvZW1haWwucGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9lbWFpbC5wYXJzZXIucnN0CkBAIC04LDE5MCArOCwxNTggQEAKIAogLS0tLS0tLS0tLS0tLS0KIAotTWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlcyBjYW4gYmUgY3JlYXRlZCBpbiBvbmUgb2YgdHdvIHdheXM6IHRoZXkgY2FuIGJlIGNyZWF0ZWQKLWZyb20gd2hvbGUgY2xvdGggYnkgaW5zdGFudGlhdGluZyA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIG9iamVjdHMgYW5kCi1zdHJpbmdpbmcgdGhlbSB0b2dldGhlciB2aWEgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuYXR0YWNoYCBhbmQKLTptZXRoOmB+ZW1haWwubWVzc2FnZS5NZXNzYWdlLnNldF9wYXlsb2FkYCBjYWxscywgb3IgdGhleQotY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIGZsYXQgdGV4dCByZXByZXNlbnRhdGlvbiBvZiB0aGUgZW1haWwgbWVzc2FnZS4KK01lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZXMgY2FuIGJlIGNyZWF0ZWQgaW4gb25lIG9mIHR3byB3YXlzOiB0aGV5IGNhbiBiZQorY3JlYXRlZCBmcm9tIHdob2xlIGNsb3RoIGJ5IGNyZWF0aW5nIGFuIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlYAorb2JqZWN0LCBhZGRpbmcgaGVhZGVycyB1c2luZyB0aGUgZGljdGlvbmFyeSBpbnRlcmZhY2UsIGFuZCBhZGRpbmcgcGF5bG9hZChzKQordXNpbmcgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS5zZXRfY29udGVudGAgYW5kIHJlbGF0ZWQgbWV0aG9kcywgb3IKK3RoZXkgY2FuIGJlIGNyZWF0ZWQgYnkgcGFyc2luZyBhIHNlcmlhbGl6ZWQgcmVwcmVzZW50YXRpb24gb2YgdGhlIGVtYWlsCittZXNzYWdlLgogCiBUaGUgOm1vZDpgZW1haWxgIHBhY2thZ2UgcHJvdmlkZXMgYSBzdGFuZGFyZCBwYXJzZXIgdGhhdCB1bmRlcnN0YW5kcyBtb3N0IGVtYWlsCi1kb2N1bWVudCBzdHJ1Y3R1cmVzLCBpbmNsdWRpbmcgTUlNRSBkb2N1bWVudHMuICBZb3UgY2FuIHBhc3MgdGhlIHBhcnNlciBhIHN0cmluZwotb3IgYSBmaWxlIG9iamVjdCwgYW5kIHRoZSBwYXJzZXIgd2lsbCByZXR1cm4gdG8geW91IHRoZSByb290Ci06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yIHNpbXBsZSwKLW5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYSBzdHJpbmcKLWNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0IHdpbGwKLXJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZS5pc19tdWx0aXBhcnRgIG1ldGhvZCwgYW5kCi10aGUgc3VicGFydHMgY2FuIGJlIGFjY2Vzc2VkIHZpYSB0aGUgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2UuZ2V0X3BheWxvYWRgCi1hbmQgOm1ldGg6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2Uud2Fsa2AgbWV0aG9kcy4KK2RvY3VtZW50IHN0cnVjdHVyZXMsIGluY2x1ZGluZyBNSU1FIGRvY3VtZW50cy4gIFlvdSBjYW4gcGFzcyB0aGUgcGFyc2VyIGEKK2J5dGVzLCBzdHJpbmcgb3IgZmlsZSBvYmplY3QsIGFuZCB0aGUgcGFyc2VyIHdpbGwgcmV0dXJuIHRvIHlvdSB0aGUgcm9vdAorOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGluc3RhbmNlIG9mIHRoZSBvYmplY3Qgc3RydWN0dXJlLiAgRm9yCitzaW1wbGUsIG5vbi1NSU1FIG1lc3NhZ2VzIHRoZSBwYXlsb2FkIG9mIHRoaXMgcm9vdCBvYmplY3Qgd2lsbCBsaWtlbHkgYmUgYQorc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHRleHQgb2YgdGhlIG1lc3NhZ2UuICBGb3IgTUlNRSBtZXNzYWdlcywgdGhlIHJvb3Qgb2JqZWN0Cit3aWxsIHJldHVybiBgYFRydWVgYCBmcm9tIGl0cyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmlzX211bHRpcGFydGAKK21ldGhvZCwgYW5kIHRoZSBzdWJwYXJ0cyBjYW4gYmUgYWNjZXNzZWQgdmlhIHRoZSBwYXlsb2FkIG1hbmlwdWxhdGlvbiBtZXRob2RzLAorc3VjaCBhcyA6bWV0aDpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmdldF9ib2R5YCwKKzptZXRoOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UuaXRlcl9wYXJ0c2AsIGFuZAorOm1ldGg6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZS53YWxrYC4KIAotVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIGNsYXNzaWMKLTpjbGFzczpgUGFyc2VyYCBBUEkgYW5kIHRoZSBpbmNyZW1lbnRhbCA6Y2xhc3M6YEZlZWRQYXJzZXJgIEFQSS4gIFRoZSBjbGFzc2ljCi06Y2xhc3M6YFBhcnNlcmAgQVBJIGlzIGZpbmUgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeQotYXMgYSBzdHJpbmcsIG9yIGlmIHRoZSBlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLgotOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlIGFwcHJvcHJpYXRlIGZvciB3aGVuIHlvdSdyZSByZWFkaW5nIHRoZSBtZXNzYWdlIGZyb20KLWEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrIHdhaXRpbmcgZm9yIG1vcmUgaW5wdXQgKGUuZy4gcmVhZGluZyBhbiBlbWFpbCBtZXNzYWdlCi1mcm9tIGEgc29ja2V0KS4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGNhbiBjb25zdW1lIGFuZCBwYXJzZSB0aGUgbWVzc2FnZQotaW5jcmVtZW50YWxseSwgYW5kIG9ubHkgcmV0dXJucyB0aGUgcm9vdCBvYmplY3Qgd2hlbiB5b3UgY2xvc2UgdGhlIHBhcnNlciBbI11fLgorVGhlcmUgYXJlIGFjdHVhbGx5IHR3byBwYXJzZXIgaW50ZXJmYWNlcyBhdmFpbGFibGUgZm9yIHVzZSwgdGhlIDpjbGFzczpgUGFyc2VyYAorQVBJIGFuZCB0aGUgaW5jcmVtZW50YWwgOmNsYXNzOmBGZWVkUGFyc2VyYCBBUEkuICBUaGUgOmNsYXNzOmBQYXJzZXJgIEFQSSBpcworbW9zdCB1c2VmdWwgaWYgeW91IGhhdmUgdGhlIGVudGlyZSB0ZXh0IG9mIHRoZSBtZXNzYWdlIGluIG1lbW9yeSwgb3IgaWYgdGhlCitlbnRpcmUgbWVzc2FnZSBsaXZlcyBpbiBhIGZpbGUgb24gdGhlIGZpbGUgc3lzdGVtLiAgOmNsYXNzOmBGZWVkUGFyc2VyYCBpcyBtb3JlCithcHByb3ByaWF0ZSB3aGVuIHlvdSBhcmUgcmVhZGluZyB0aGUgbWVzc2FnZSBmcm9tIGEgc3RyZWFtIHdoaWNoIG1pZ2h0IGJsb2NrCit3YWl0aW5nIGZvciBtb3JlIGlucHV0IChzdWNoIGFzIHJlYWRpbmcgYW4gZW1haWwgbWVzc2FnZSBmcm9tIGEgc29ja2V0KS4gIFRoZQorOmNsYXNzOmBGZWVkUGFyc2VyYCBjYW4gY29uc3VtZSBhbmQgcGFyc2UgdGhlIG1lc3NhZ2UgaW5jcmVtZW50YWxseSwgYW5kIG9ubHkKK3JldHVybnMgdGhlIHJvb3Qgb2JqZWN0IHdoZW4geW91IGNsb3NlIHRoZSBwYXJzZXIuCiAKIE5vdGUgdGhhdCB0aGUgcGFyc2VyIGNhbiBiZSBleHRlbmRlZCBpbiBsaW1pdGVkIHdheXMsIGFuZCBvZiBjb3Vyc2UgeW91IGNhbgotaW1wbGVtZW50IHlvdXIgb3duIHBhcnNlciBjb21wbGV0ZWx5IGZyb20gc2NyYXRjaC4gIFRoZXJlIGlzIG5vIG1hZ2ljYWwKLWNvbm5lY3Rpb24gYmV0d2VlbiB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCi06Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGNsYXNzLCBzbyB5b3VyIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlCi1vYmplY3QgdHJlZXMgYW55IHdheSBpdCBmaW5kcyBuZWNlc3NhcnkuCitpbXBsZW1lbnQgeW91ciBvd24gcGFyc2VyIGNvbXBsZXRlbHkgZnJvbSBzY3JhdGNoLiAgQWxsIG9mIHRoZSBsb2dpYyB0aGF0Citjb25uZWN0cyB0aGUgOm1vZDpgZW1haWxgIHBhY2thZ2UncyBidW5kbGVkIHBhcnNlciBhbmQgdGhlCis6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLkVtYWlsTWVzc2FnZWAgY2xhc3MgaXMgZW1ib2RpZWQgaW4gdGhlIDptb2Q6YHBvbGljeWAKK2NsYXNzLCBzbyBhIGN1c3RvbSBwYXJzZXIgY2FuIGNyZWF0ZSBtZXNzYWdlIG9iamVjdCB0cmVlcyBhbnkgd2F5IGl0IGZpbmRzCituZWNlc3NhcnkgYnkgaW1wbGVtZW50aW5nIGN1c3RvbSB2ZXJzaW9ucyBvZiB0aGUgYXBwcm9wcmlhdGUgOm1vZDpgcG9saWN5YAorbWV0aG9kcy4KIAogCiBGZWVkUGFyc2VyIEFQSQogXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKLXByb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLCBzdWNoCi1hcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhIHNvdXJjZQotdGhhdCBjYW4gYmxvY2sgKGUuZy4gYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgY2FuIG9mIGNvdXJzZSBiZSB1c2VkCi10byBwYXJzZSBhbiBlbWFpbCBtZXNzYWdlIGZ1bGx5IGNvbnRhaW5lZCBpbiBhIHN0cmluZyBvciBhIGZpbGUsIGJ1dCB0aGUgY2xhc3NpYwotOmNsYXNzOmBQYXJzZXJgIEFQSSBtYXkgYmUgbW9yZSBjb252ZW5pZW50IGZvciBzdWNoIHVzZSBjYXNlcy4gIFRoZSBzZW1hbnRpY3MKLWFuZCByZXN1bHRzIG9mIHRoZSB0d28gcGFyc2VyIEFQSXMgYXJlIGlkZW50aWNhbC4KK1RoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAsIGltcG9ydGVkIGZyb20gdGhlIDptb2Q6YGVtYWlsLmZlZWRwYXJzZXJgIG1vZHVsZSwKK3Byb3ZpZGVzIGFuIEFQSSB0aGF0IGlzIGNvbmR1Y2l2ZSB0byBpbmNyZW1lbnRhbCBwYXJzaW5nIG9mIGVtYWlsIG1lc3NhZ2VzLAorc3VjaCBhcyB3b3VsZCBiZSBuZWNlc3Nhcnkgd2hlbiByZWFkaW5nIHRoZSB0ZXh0IG9mIGFuIGVtYWlsIG1lc3NhZ2UgZnJvbSBhCitzb3VyY2UgdGhhdCBjYW4gYmxvY2sgKHN1Y2ggYXMgYSBzb2NrZXQpLiAgVGhlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBjYW4gb2YKK2NvdXJzZSBiZSB1c2VkIHRvIHBhcnNlIGFuIGVtYWlsIG1lc3NhZ2UgZnVsbHkgY29udGFpbmVkIGluIGEgOnRlcm06YGJ5dGVzLWxpa2UKK29iamVjdGAsIHN0cmluZywgb3IgZmlsZSwgYnV0IHRoZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBBUEkgbWF5IGJlIG1vcmUKK2NvbnZlbmllbnQgZm9yIHN1Y2ggdXNlIGNhc2VzLiAgVGhlIHNlbWFudGljcyBhbmQgcmVzdWx0cyBvZiB0aGUgdHdvIHBhcnNlcgorQVBJcyBhcmUgaWRlbnRpY2FsLgogCi1UaGUgOmNsYXNzOmBGZWVkUGFyc2VyYCdzIEFQSSBpcyBzaW1wbGU7IHlvdSBjcmVhdGUgYW4gaW5zdGFuY2UsIGZlZWQgaXQgYSBidW5jaAotb2YgdGV4dCB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvIHJldHJpZXZlIHRoZQotcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGlzIGV4dHJlbWVseSBhY2N1cmF0ZSB3aGVuIHBhcnNpbmcKLXN0YW5kYXJkcy1jb21wbGlhbnQgbWVzc2FnZXMsIGFuZCBpdCBkb2VzIGEgdmVyeSBnb29kIGpvYiBvZiBwYXJzaW5nCi1ub24tY29tcGxpYW50IG1lc3NhZ2VzLCBwcm92aWRpbmcgaW5mb3JtYXRpb24gYWJvdXQgaG93IGEgbWVzc2FnZSB3YXMgZGVlbWVkCi1icm9rZW4uICBJdCB3aWxsIHBvcHVsYXRlIGEgbWVzc2FnZSBvYmplY3QncyAqZGVmZWN0cyogYXR0cmlidXRlIHdpdGggYSBsaXN0IG9mCi1hbnkgcHJvYmxlbXMgaXQgZm91bmQgaW4gYSBtZXNzYWdlLiAgU2VlIHRoZSA6bW9kOmBlbWFpbC5lcnJvcnNgIG1vZHVsZSBmb3IgdGhlCitUaGUgOmNsYXNzOmBCeXRlc0ZlZWRQYXJzZXJgJ3MgQVBJIGlzIHNpbXBsZTsgeW91IGNyZWF0ZSBhbiBpbnN0YW5jZSwgZmVlZCBpdCBhCitidW5jaCBvZiBieXRlcyB1bnRpbCB0aGVyZSdzIG5vIG1vcmUgdG8gZmVlZCBpdCwgdGhlbiBjbG9zZSB0aGUgcGFyc2VyIHRvCityZXRyaWV2ZSB0aGUgcm9vdCBtZXNzYWdlIG9iamVjdC4gIFRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaXMgZXh0cmVtZWx5CithY2N1cmF0ZSB3aGVuIHBhcnNpbmcgc3RhbmRhcmRzLWNvbXBsaWFudCBtZXNzYWdlcywgYW5kIGl0IGRvZXMgYSB2ZXJ5IGdvb2Qgam9iCitvZiBwYXJzaW5nIG5vbi1jb21wbGlhbnQgbWVzc2FnZXMsIHByb3ZpZGluZyBpbmZvcm1hdGlvbiBhYm91dCBob3cgYSBtZXNzYWdlCit3YXMgZGVlbWVkIGJyb2tlbi4gIEl0IHdpbGwgcG9wdWxhdGUgYSBtZXNzYWdlIG9iamVjdCdzCis6YXR0cjpgfmVtYWlsLm1lc3NhZ2UuRW1haWxNZXNzYWdlLmRlZmVjdHNgIGF0dHJpYnV0ZSB3aXRoIGEgbGlzdCBvZiBhbnkKK3Byb2JsZW1zIGl0IGZvdW5kIGluIGEgbWVzc2FnZS4gIFNlZSB0aGUgOm1vZDpgZW1haWwuZXJyb3JzYCBtb2R1bGUgZm9yIHRoZQogbGlzdCBvZiBkZWZlY3RzIHRoYXQgaXQgY2FuIGZpbmQuCiAKLUhlcmUgaXMgdGhlIEFQSSBmb3IgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmA6CitIZXJlIGlzIHRoZSBBUEkgZm9yIHRoZSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmA6CiAKIAotLi4gY2xhc3M6OiBGZWVkUGFyc2VyKF9mYWN0b3J5PWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNGZWVkUGFyc2VyKF9mYWN0b3J5PU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIENyZWF0ZSBhIDpjbGFzczpgRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEgbm8tYXJndW1lbnQKLSAgIGNhbGxhYmxlIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2hlbmV2ZXIgYSBuZXcgbWVzc2FnZSBvYmplY3QgaXMgbmVlZGVkLiAgSXQKLSAgIGRlZmF1bHRzIHRvIHRoZSA6Y2xhc3M6YGVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgY2xhc3MuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAgaW5zdGFuY2UuICBPcHRpb25hbCAqX2ZhY3RvcnkqIGlzIGEKKyAgIG5vLWFyZ3VtZW50IGNhbGxhYmxlOyBpZiBub3Qgc3BlY2lmaWVkIHVzZSB0aGUKKyAgIDphdHRyOmB+ZW1haWwucG9saWN5LlBvbGljeS5tZXNzYWdlX2ZhY3RvcnlgIGZyb20gdGhlICpwb2xpY3kqLiAgQ2FsbAorICAgKl9mYWN0b3J5KiB3aGVuZXZlciBhIG5ldyBtZXNzYWdlIG9iamVjdCBpcyBuZWVkZWQuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCisgICBJZiAqcG9saWN5KiBpcyBzcGVjaWZpZWQgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZQorICAgcmVwcmVzZW50YXRpb24gb2YgdGhlIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlCisgICA6Y2xhc3M6YGNvbXBhdDMyIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZAorICAgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UgYW5kIHByb3ZpZGVzCisgICA6Y2xhc3M6YH5lbWFpbC5tZXNzYWdlLk1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0IGZhY3RvcnkuICBBbGwgb3RoZXIgcG9saWNpZXMKKyAgIHByb3ZpZGUgOmNsYXNzOmB+ZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2VgIGFzIHRoZSBkZWZhdWx0ICpfZmFjdG9yeSouIEZvcgorICAgbW9yZSBpbmZvcm1hdGlvbiBvbiB3aGF0IGVsc2UgKnBvbGljeSogY29udHJvbHMsIHNlZSB0aGUKICAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCiAKLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgotCi0gICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCi0KLSAgICAgIEZlZWQgdGhlIDpjbGFzczpgRmVlZFBhcnNlcmAgc29tZSBtb3JlIGRhdGEuICAqZGF0YSogc2hvdWxkIGJlIGEgc3RyaW5nCi0gICAgICBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKLSAgICAgIDpjbGFzczpgRmVlZFBhcnNlcmAgd2lsbCBzdGl0Y2ggc3VjaCBwYXJ0aWFsIGxpbmVzIHRvZ2V0aGVyIHByb3Blcmx5LiAgVGhlCi0gICAgICBsaW5lcyBpbiB0aGUgc3RyaW5nIGNhbiBoYXZlIGFueSBvZiB0aGUgY29tbW9uIHRocmVlIGxpbmUgZW5kaW5ncywKLSAgICAgIGNhcnJpYWdlIHJldHVybiwgbmV3bGluZSwgb3IgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlCi0gICAgICBtaXhlZCkuCi0KLSAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKLQotICAgICAgQ2xvc2luZyBhIDpjbGFzczpgRmVlZFBhcnNlcmAgY29tcGxldGVzIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZAotICAgICAgZGF0YSwgYW5kIHJldHVybnMgdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICBJdCBpcyB1bmRlZmluZWQgd2hhdCBoYXBwZW5zCi0gICAgICBpZiB5b3UgZmVlZCBtb3JlIGRhdGEgdG8gYSBjbG9zZWQgOmNsYXNzOmBGZWVkUGFyc2VyYC4KLQotCi0uLiBjbGFzczo6IEJ5dGVzRmVlZFBhcnNlcihfZmFjdG9yeT1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UpCi0KLSAgIFdvcmtzIGV4YWN0bHkgbGlrZSA6Y2xhc3M6YEZlZWRQYXJzZXJgIGV4Y2VwdCB0aGF0IHRoZSBpbnB1dCB0byB0aGUKLSAgIDptZXRoOmB+RmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBieXRlcyBhbmQgbm90IHN0cmluZy4KKyAgIE5vdGU6ICoqVGhlIHBvbGljeSBrZXl3b3JkIHNob3VsZCBhbHdheXMgYmUgc3BlY2lmaWVkKio7IFRoZSBkZWZhdWx0IHdpbGwKKyAgIGNoYW5nZSB0byA6ZGF0YTpgZW1haWwucG9saWN5LmRlZmF1bHRgIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBfZmFjdG9yeSBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLVBhcnNlciBjbGFzcyBBUEkKLV5eXl5eXl5eXl5eXl5eXl4KIAotVGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcywgaW1wb3J0ZWQgZnJvbSB0aGUgOm1vZDpgZW1haWwucGFyc2VyYCBtb2R1bGUsCisgICAuLiBtZXRob2Q6OiBmZWVkKGRhdGEpCisKKyAgICAgIEZlZWQgdGhlIHBhcnNlciBzb21lIG1vcmUgZGF0YS4gICpkYXRhKiBzaG91bGQgYmUgYSA6dGVybTpgYnl0ZXMtbGlrZQorICAgICAgb2JqZWN0YCBjb250YWluaW5nIG9uZSBvciBtb3JlIGxpbmVzLiAgVGhlIGxpbmVzIGNhbiBiZSBwYXJ0aWFsIGFuZCB0aGUKKyAgICAgIHBhcnNlciB3aWxsIHN0aXRjaCBzdWNoIHBhcnRpYWwgbGluZXMgdG9nZXRoZXIgcHJvcGVybHkuICBUaGUgbGluZXMgY2FuCisgICAgICBoYXZlIGFueSBvZiB0aGUgdGhyZWUgY29tbW9uIGxpbmUgZW5kaW5nczogY2FycmlhZ2UgcmV0dXJuLCBuZXdsaW5lLCBvcgorICAgICAgY2FycmlhZ2UgcmV0dXJuIGFuZCBuZXdsaW5lICh0aGV5IGNhbiBldmVuIGJlIG1peGVkKS4KKworCisgICAuLiBtZXRob2Q6OiBjbG9zZSgpCisKKyAgICAgIENvbXBsZXRlIHRoZSBwYXJzaW5nIG9mIGFsbCBwcmV2aW91c2x5IGZlZCBkYXRhIGFuZCByZXR1cm4gdGhlIHJvb3QKKyAgICAgIG1lc3NhZ2Ugb2JqZWN0LiAgSXQgaXMgdW5kZWZpbmVkIHdoYXQgaGFwcGVucyBpZiA6bWV0aDpgfmZlZWRgIGlzIGNhbGxlZAorICAgICAgYWZ0ZXIgdGhpcyBtZXRob2QgaGFzIGJlZW4gY2FsbGVkLgorCisKKy4uIGNsYXNzOjogRmVlZFBhcnNlcihfZmFjdG9yeT1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBXb3JrcyBsaWtlIDpjbGFzczpgQnl0ZXNGZWVkUGFyc2VyYCBleGNlcHQgdGhhdCB0aGUgaW5wdXQgdG8gdGhlCisgICA6bWV0aDpgfkJ5dGVzRmVlZFBhcnNlci5mZWVkYCBtZXRob2QgbXVzdCBiZSBhIHN0cmluZy4gIFRoaXMgaXMgb2YgbGltaXRlZAorICAgdXRpbGl0eSwgc2luY2UgdGhlIG9ubHkgd2F5IGZvciBzdWNoIGEgbWVzc2FnZSB0byBiZSB2YWxpZCBpcyBmb3IgaXQgdG8KKyAgIGNvbnRhaW4gb25seSBBU0NJSSB0ZXh0IG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMKKyAgIGBgVHJ1ZWBgLCBubyBiaW5hcnkgYXR0YWNobWVudHMuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKK1BhcnNlciBBUEkKK15eXl5eXl5eXl4KKworVGhlIDpjbGFzczpgQnl0ZXNQYXJzZXJgIGNsYXNzLCBpbXBvcnRlZCBmcm9tIHRoZSA6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSwKIHByb3ZpZGVzIGFuIEFQSSB0aGF0IGNhbiBiZSB1c2VkIHRvIHBhcnNlIGEgbWVzc2FnZSB3aGVuIHRoZSBjb21wbGV0ZSBjb250ZW50cwotb2YgdGhlIG1lc3NhZ2UgYXJlIGF2YWlsYWJsZSBpbiBhIHN0cmluZyBvciBmaWxlLiAgVGhlIDptb2Q6YGVtYWlsLnBhcnNlcmAKLW1vZHVsZSBhbHNvIHByb3ZpZGVzIGhlYWRlci1vbmx5IHBhcnNlcnMsIGNhbGxlZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kCi06Y2xhc3M6YEJ5dGVzSGVhZGVyUGFyc2VyYCwgd2hpY2ggY2FuIGJlIHVzZWQgaWYgeW91J3JlIG9ubHkgaW50ZXJlc3RlZCBpbiB0aGUKLWhlYWRlcnMgb2YgdGhlIG1lc3NhZ2UuICA6Y2xhc3M6YEhlYWRlclBhcnNlcmAgYW5kIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgCitvZiB0aGUgbWVzc2FnZSBhcmUgYXZhaWxhYmxlIGluIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YCBvciBmaWxlLiAgVGhlCis6bW9kOmBlbWFpbC5wYXJzZXJgIG1vZHVsZSBhbHNvIHByb3ZpZGVzIDpjbGFzczpgUGFyc2VyYCBmb3IgcGFyc2luZyBzdHJpbmdzLAorYW5kIGhlYWRlci1vbmx5IHBhcnNlcnMsIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZAorOmNsYXNzOmBIZWFkZXJQYXJzZXJgLCB3aGljaCBjYW4gYmUgdXNlZCBpZiB5b3UncmUgb25seSBpbnRlcmVzdGVkIGluIHRoZQoraGVhZGVycyBvZiB0aGUgbWVzc2FnZS4gIDpjbGFzczpgQnl0ZXNIZWFkZXJQYXJzZXJgIGFuZCA6Y2xhc3M6YEhlYWRlclBhcnNlcmAKIGNhbiBiZSBtdWNoIGZhc3RlciBpbiB0aGVzZSBzaXR1YXRpb25zLCBzaW5jZSB0aGV5IGRvIG5vdCBhdHRlbXB0IHRvIHBhcnNlIHRoZQotbWVzc2FnZSBib2R5LCBpbnN0ZWFkIHNldHRpbmcgdGhlIHBheWxvYWQgdG8gdGhlIHJhdyBib2R5IGFzIGEgc3RyaW5nLiAgVGhleQotaGF2ZSB0aGUgc2FtZSBBUEkgYXMgdGhlIDpjbGFzczpgUGFyc2VyYCBhbmQgOmNsYXNzOmBCeXRlc1BhcnNlcmAgY2xhc3Nlcy4KLQotLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICBUaGUgQnl0ZXNIZWFkZXJQYXJzZXIgY2xhc3MuCittZXNzYWdlIGJvZHksIGluc3RlYWQgc2V0dGluZyB0aGUgcGF5bG9hZCB0byB0aGUgcmF3IGJvZHkuCiAKIAotLi4gY2xhc3M6OiBQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKy4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIDpjbGFzczpgUGFyc2VyYCBjbGFzcyB0YWtlcyBhbiBvcHRpb25hbCBhcmd1bWVudAotICAgKl9jbGFzcyouICBUaGlzIG11c3QgYmUgYSBjYWxsYWJsZSBmYWN0b3J5IChzdWNoIGFzIGEgZnVuY3Rpb24gb3IgYSBjbGFzcyksIGFuZAotICAgaXQgaXMgdXNlZCB3aGVuZXZlciBhIHN1Yi1tZXNzYWdlIG9iamVjdCBuZWVkcyB0byBiZSBjcmVhdGVkLiAgSXQgZGVmYXVsdHMgdG8KLSAgIDpjbGFzczpgfmVtYWlsLm1lc3NhZ2UuTWVzc2FnZWAgKHNlZSA6bW9kOmBlbWFpbC5tZXNzYWdlYCkuICBUaGUgZmFjdG9yeSB3aWxsCi0gICBiZSBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCisgICBDcmVhdGUgYSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCBpbnN0YW5jZS4gIFRoZSAqX2NsYXNzKiBhbmQgKnBvbGljeSoKKyAgIGFyZ3VtZW50cyBoYXZlIHRoZSBzYW1lIG1lYW5pbmcgYW5kIHNlbWF0bmljcyBhcyB0aGUgKl9mYWN0b3J5KgorICAgYW5kICpwb2xpY3kqIGFyZ3VtZW50cyBvZiA6Y2xhc3M6YEJ5dGVzRmVlZFBhcnNlcmAuCiAKLSAgIElmICpwb2xpY3kqIGlzIHNwZWNpZmllZCAoaXQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBhIDptb2Q6YH5lbWFpbC5wb2xpY3lgCi0gICBjbGFzcykgdXNlIHRoZSBydWxlcyBpdCBzcGVjaWZpZXMgdG8gdXBkYXRlIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUKLSAgIG1lc3NhZ2UuICBJZiAqcG9saWN5KiBpcyBub3Qgc2V0LCB1c2UgdGhlIDpjbGFzczpgY29tcGF0MzIKLSAgIDxlbWFpbC5wb2xpY3kuQ29tcGF0MzI+YCBwb2xpY3ksIHdoaWNoIG1haW50YWlucyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGgKLSAgIHRoZSBQeXRob24gMy4yIHZlcnNpb24gb2YgdGhlIGVtYWlsIHBhY2thZ2UuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBzZWUgdGhlCi0gICA6bW9kOmB+ZW1haWwucG9saWN5YCBkb2N1bWVudGF0aW9uLgorICAgTm90ZTogKipUaGUgcG9saWN5IGtleXdvcmQgc2hvdWxkIGFsd2F5cyBiZSBzcGVjaWZpZWQqKjsgVGhlIGRlZmF1bHQgd2lsbAorICAgY2hhbmdlIHRvIDpkYXRhOmBlbWFpbC5wb2xpY3kuZGVmYXVsdGAgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudCB0aGF0IHdhcyBkZXByZWNhdGVkIGluIDIuNC4gIEFkZGVkIHRoZQogICAgICAgKnBvbGljeSoga2V5d29yZC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42IF9jbGFzcyBkZWZhdWx0cyB0byB0aGUgcG9saWN5IGBgbWVzc2FnZV9mYWN0b3J5YGAuCiAKLSAgIFRoZSBvdGhlciBwdWJsaWMgOmNsYXNzOmBQYXJzZXJgIG1ldGhvZHMgYXJlOgotCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlKGZwLCBoZWFkZXJzb25seT1GYWxzZSkKLQotICAgICAgUmVhZCBhbGwgdGhlIGRhdGEgZnJvbSB0aGUgZmlsZS1saWtlIG9iamVjdCAqZnAqLCBwYXJzZSB0aGUgcmVzdWx0aW5nCi0gICAgICB0ZXh0LCBhbmQgcmV0dXJuIHRoZSByb290IG1lc3NhZ2Ugb2JqZWN0LiAgKmZwKiBtdXN0IHN1cHBvcnQgYm90aCB0aGUKLSAgICAgIDptZXRoOmB+aW8uVGV4dElPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAKLSAgICAgIG1ldGhvZHMgb24gZmlsZS1saWtlIG9iamVjdHMuCi0KLSAgICAgIFRoZSB0ZXh0IGNvbnRhaW5lZCBpbiAqZnAqIG11c3QgYmUgZm9ybWF0dGVkIGFzIGEgYmxvY2sgb2YgOnJmYzpgMjgyMmAKLSAgICAgIHN0eWxlIGhlYWRlcnMgYW5kIGhlYWRlciBjb250aW51YXRpb24gbGluZXMsIG9wdGlvbmFsbHkgcHJlY2VkZWQgYnkgYW4KLSAgICAgIGVudmVsb3BlIGhlYWRlci4gIFRoZSBoZWFkZXIgYmxvY2sgaXMgdGVybWluYXRlZCBlaXRoZXIgYnkgdGhlIGVuZCBvZiB0aGUKLSAgICAgIGRhdGEgb3IgYnkgYSBibGFuayBsaW5lLiAgRm9sbG93aW5nIHRoZSBoZWFkZXIgYmxvY2sgaXMgdGhlIGJvZHkgb2YgdGhlCi0gICAgICBtZXNzYWdlICh3aGljaCBtYXkgY29udGFpbiBNSU1FLWVuY29kZWQgc3VicGFydHMpLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGEgZmxhZyBzcGVjaWZ5aW5nIHdoZXRoZXIgdG8gc3RvcCBwYXJzaW5nIGFmdGVyCi0gICAgICByZWFkaW5nIHRoZSBoZWFkZXJzIG9yIG5vdC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYCwgbWVhbmluZyBpdCBwYXJzZXMKLSAgICAgIHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGZpbGUuCi0KLSAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQotCi0gICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAotICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzIGV4YWN0bHkKLSAgICAgIGVxdWl2YWxlbnQgdG8gd3JhcHBpbmcgKnRleHQqIGluIGEgOmNsYXNzOmB+aW8uU3RyaW5nSU9gIGluc3RhbmNlIGZpcnN0IGFuZAotICAgICAgY2FsbGluZyA6bWV0aDpgcGFyc2VgLgotCi0gICAgICBPcHRpb25hbCAqaGVhZGVyc29ubHkqIGlzIGFzIHdpdGggdGhlIDptZXRoOmBwYXJzZWAgbWV0aG9kLgotCi0KLS4uIGNsYXNzOjogQnl0ZXNQYXJzZXIoX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKLQotICAgVGhpcyBjbGFzcyBpcyBleGFjdGx5IHBhcmFsbGVsIHRvIDpjbGFzczpgUGFyc2VyYCwgYnV0IGhhbmRsZXMgYnl0ZXMgaW5wdXQuCi0gICBUaGUgKl9jbGFzcyogYW5kICpzdHJpY3QqIGFyZ3VtZW50cyBhcmUgaW50ZXJwcmV0ZWQgaW4gdGhlIHNhbWUgd2F5IGFzIGZvcgotICAgdGhlIDpjbGFzczpgUGFyc2VyYCBjb25zdHJ1Y3Rvci4KLQotICAgSWYgKnBvbGljeSogaXMgc3BlY2lmaWVkIChpdCBtdXN0IGJlIGFuIGluc3RhbmNlIG9mIGEgOm1vZDpgfmVtYWlsLnBvbGljeWAKLSAgIGNsYXNzKSB1c2UgdGhlIHJ1bGVzIGl0IHNwZWNpZmllcyB0byB1cGRhdGUgdGhlIHJlcHJlc2VudGF0aW9uIG9mIHRoZQotICAgbWVzc2FnZS4gIElmICpwb2xpY3kqIGlzIG5vdCBzZXQsIHVzZSB0aGUgOmNsYXNzOmBjb21wYXQzMgotICAgPGVtYWlsLnBvbGljeS5Db21wYXQzMj5gIHBvbGljeSwgd2hpY2ggbWFpbnRhaW5zIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aAotICAgdGhlIFB5dGhvbiAzLjIgdmVyc2lvbiBvZiB0aGUgZW1haWwgcGFja2FnZS4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIDptb2Q6YH5lbWFpbC5wb2xpY3lgIGRvY3VtZW50YXRpb24uCi0KLSAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCiAgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCiAKICAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIGJpbmFyeSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQogICAgICAgcmVzdWx0aW5nIGJ5dGVzLCBhbmQgcmV0dXJuIHRoZSBtZXNzYWdlIG9iamVjdC4gICpmcCogbXVzdCBzdXBwb3J0CiAgICAgICBib3RoIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAgYW5kIHRoZSA6bWV0aDpgfmlvLklPQmFzZS5yZWFkYAotICAgICAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKyAgICAgIG1ldGhvZHMuCiAKLSAgICAgIFRoZSBieXRlcyBjb250YWluZWQgaW4gKmZwKiBtdXN0IGJlIGZvcm1hdHRlZCBhcyBhIGJsb2NrIG9mIDpyZmM6YDI4MjJgCisgICAgICBUaGUgYnl0ZXMgY29udGFpbmVkIGluICpmcCogbXVzdCBiZSBmb3JtYXR0ZWQgYXMgYSBibG9jayBvZiA6cmZjOmA1MzIyYAorICAgICAgKG9yLCBpZiA6YXR0cjpgfmVtYWlsLnBvbGljeS5Qb2xpY3kudXRmOGAgaXMgYGBUcnVlYGAsIDpyZmM6YDY1MzJgKQogICAgICAgc3R5bGUgaGVhZGVycyBhbmQgaGVhZGVyIGNvbnRpbnVhdGlvbiBsaW5lcywgb3B0aW9uYWxseSBwcmVjZWRlZCBieSBhbgogICAgICAgZW52ZWxvcGUgaGVhZGVyLiAgVGhlIGhlYWRlciBibG9jayBpcyB0ZXJtaW5hdGVkIGVpdGhlciBieSB0aGUgZW5kIG9mIHRoZQogICAgICAgZGF0YSBvciBieSBhIGJsYW5rIGxpbmUuICBGb2xsb3dpbmcgdGhlIGhlYWRlciBibG9jayBpcyB0aGUgYm9keSBvZiB0aGUKQEAgLTIwMiw3MyArMTcwLDEyMSBAQAogICAgICAgcmVhZGluZyB0aGUgaGVhZGVycyBvciBub3QuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAsIG1lYW5pbmcgaXQgcGFyc2VzCiAgICAgICB0aGUgZW50aXJlIGNvbnRlbnRzIG9mIHRoZSBmaWxlLgogCi0gICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAuLiBtZXRob2Q6OiBwYXJzZWJ5dGVzKGJ5dGVzLCBoZWFkZXJzb25seT1GYWxzZSkKIAogICAgICAgU2ltaWxhciB0byB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QsIGV4Y2VwdCBpdCB0YWtlcyBhIDp0ZXJtOmBieXRlcy1saWtlCi0gICAgICBvYmplY3RgIGluc3RlYWQgb2YgYSBmaWxlLWxpa2Ugb2JqZWN0LiAgQ2FsbGluZyB0aGlzIG1ldGhvZCBpcyBlcXVpdmFsZW50Ci0gICAgICB0byB3cmFwcGluZyAqdGV4dCogaW4gYSA6Y2xhc3M6YH5pby5CeXRlc0lPYCBpbnN0YW5jZSBmaXJzdCBhbmQgY2FsbGluZwotICAgICAgOm1ldGg6YHBhcnNlYC4KKyAgICAgIG9iamVjdGAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEKKyAgICAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgZXF1aXZhbGVudCB0byB3cmFwcGluZyAqYnl0ZXMqIGluIGEKKyAgICAgIDpjbGFzczpgfmlvLkJ5dGVzSU9gIGluc3RhbmNlIGZpcnN0IGFuZCBjYWxsaW5nIDptZXRoOmBwYXJzZWAuCiAKICAgICAgIE9wdGlvbmFsICpoZWFkZXJzb25seSogaXMgYXMgd2l0aCB0aGUgOm1ldGg6YHBhcnNlYCBtZXRob2QuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCiAKKy4uIGNsYXNzOjogQnl0ZXNIZWFkZXJQYXJzZXIoX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIEV4YWN0bHkgbGlrZSA6Y2xhc3M6YEJ5dGVzUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworCisKKy4uIGNsYXNzOjogUGFyc2VyKF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBUaGlzIGNsYXNzIGlzIHBhcmFsbGVsIHRvIDpjbGFzczpgQnl0ZXNQYXJzZXJgLCBidXQgaGFuZGxlcyBzdHJpbmcgaW5wdXQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgX2NsYXNzIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KKworCisgICAuLiBtZXRob2Q6OiBwYXJzZShmcCwgaGVhZGVyc29ubHk9RmFsc2UpCisKKyAgICAgIFJlYWQgYWxsIHRoZSBkYXRhIGZyb20gdGhlIHRleHQtbW9kZSBmaWxlLWxpa2Ugb2JqZWN0ICpmcCosIHBhcnNlIHRoZQorICAgICAgcmVzdWx0aW5nIHRleHQsIGFuZCByZXR1cm4gdGhlIHJvb3QgbWVzc2FnZSBvYmplY3QuICAqZnAqIG11c3Qgc3VwcG9ydAorICAgICAgYm90aCB0aGUgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRsaW5lYCBhbmQgdGhlCisgICAgICA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGAgbWV0aG9kcyBvbiBmaWxlLWxpa2Ugb2JqZWN0cy4KKworICAgICAgT3RoZXIgdGhhbiB0aGUgdGV4dCBtb2RlIHJlcXVpcmVtZW50LCB0aGlzIG1ldGhvZCBvcGVyYXRlcyBsaWtlCisgICAgICA6bWV0aDpgQnl0ZXNQYXJzZXIucGFyc2VgLgorCisKKyAgIC4uIG1ldGhvZDo6IHBhcnNlc3RyKHRleHQsIGhlYWRlcnNvbmx5PUZhbHNlKQorCisgICAgICBTaW1pbGFyIHRvIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZCwgZXhjZXB0IGl0IHRha2VzIGEgc3RyaW5nIG9iamVjdAorICAgICAgaW5zdGVhZCBvZiBhIGZpbGUtbGlrZSBvYmplY3QuICBDYWxsaW5nIHRoaXMgbWV0aG9kIG9uIGEgc3RyaW5nIGlzCisgICAgICBlcXVpdmFsZW50IHRvIHdyYXBwaW5nICp0ZXh0KiBpbiBhIDpjbGFzczpgfmlvLlN0cmluZ0lPYCBpbnN0YW5jZSBmaXJzdAorICAgICAgYW5kIGNhbGxpbmcgOm1ldGg6YHBhcnNlYC4KKworICAgICAgT3B0aW9uYWwgKmhlYWRlcnNvbmx5KiBpcyBhcyB3aXRoIHRoZSA6bWV0aDpgcGFyc2VgIG1ldGhvZC4KKworCisuLiBjbGFzczo6IEhlYWRlclBhcnNlcihfY2xhc3M9Tm9uZSwgKiwgcG9saWN5PXBvbGljeS5jb21wYXQzMikKKworICAgRXhhY3RseSBsaWtlIDpjbGFzczpgUGFyc2VyYCwgZXhjZXB0IHRoYXQgKmhlYWRlcnNvbmx5KgorICAgZGVmYXVsdHMgdG8gYGBUcnVlYGAuCisKKwogU2luY2UgY3JlYXRpbmcgYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZyBvciBhIGZpbGUgb2JqZWN0IGlzIHN1Y2gKIGEgY29tbW9uIHRhc2ssIGZvdXIgZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBhcyBhIGNvbnZlbmllbmNlLiAgVGhleSBhcmUgYXZhaWxhYmxlCiBpbiB0aGUgdG9wLWxldmVsIDptb2Q6YGVtYWlsYCBwYWNrYWdlIG5hbWVzcGFjZS4KIAogLi4gY3VycmVudG1vZHVsZTo6IGVtYWlsCiAKLS4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX3N0cmluZyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXBvbGljeS5jb21wYXQzMikKIAotICAgUmV0dXJuIGEgbWVzc2FnZSBvYmplY3Qgc3RydWN0dXJlIGZyb20gYSBzdHJpbmcuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0bworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYnl0ZXMocywgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSBmcm9tIGEgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4gIFRoaXMgaXMKKyAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAorICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5CeXRlc1BhcnNlcmAgY2xhc3MKKyAgIGNvbnN0cnVjdG9yLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCisgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorCisKKy4uIGZ1bmN0aW9uOjogbWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGZwLCBfY2xhc3M9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCisKKyAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKKyAgIG9iamVjdGAuICBUaGlzIGlzIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kCisgICAqcG9saWN5KiBhcmUgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLkJ5dGVzUGFyc2VyYCBjbGFzcworICAgY29uc3RydWN0b3IuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKKyAgICAgIFJlbW92ZWQgdGhlICpzdHJpY3QqIGFyZ3VtZW50LiAgQWRkZWQgdGhlICpwb2xpY3kqIGtleXdvcmQuCisKKworLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fc3RyaW5nKHMsIF9jbGFzcz1Ob25lLCAqLCBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorCisgICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIHN0cmluZy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0bwogICAgYGBQYXJzZXIoKS5wYXJzZXN0cihzKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZSBpbnRlcnByZXRlZCBhcwogICAgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgogCi0uLiBmdW5jdGlvbjo6IG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCBfY2xhc3M9ZW1haWwubWVzc2FnZS5NZXNzYWdlLCAqLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQogCi0gICBSZXR1cm4gYSBtZXNzYWdlIG9iamVjdCBzdHJ1Y3R1cmUgZnJvbSBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkKLSAgIGVxdWl2YWxlbnQgdG8gYGBCeXRlc1BhcnNlcigpLnBhcnNlYnl0ZXMocylgYC4gIE9wdGlvbmFsICpfY2xhc3MqIGFuZAotICAgKnN0cmljdCogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPWVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwgKiwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5LmNvbXBhdDMyKQorLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fZmlsZShmcCwgX2NsYXNzPU5vbmUsICosIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKICAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLgotICAgVGhpcyBpcyBleGFjdGx5IGVxdWl2YWxlbnQgdG8gYGBQYXJzZXIoKS5wYXJzZShmcClgYC4gICpfY2xhc3MqCi0gICBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlIDpjbGFzczpgfmVtYWlsLnBhcnNlci5QYXJzZXJgIGNsYXNzCi0gICBjb25zdHJ1Y3Rvci4KKyAgIFRoaXMgaXMgZXF1aXZhbGVudCB0byBgYFBhcnNlcigpLnBhcnNlKGZwKWBgLiAgKl9jbGFzcyogYW5kICpwb2xpY3kqIGFyZQorICAgaW50ZXJwcmV0ZWQgYXMgd2l0aCB0aGUgOmNsYXNzOmB+ZW1haWwucGFyc2VyLlBhcnNlcmAgY2xhc3MgY29uc3RydWN0b3IuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICAgICBSZW1vdmVkIHRoZSAqc3RyaWN0KiBhcmd1bWVudC4gIEFkZGVkIHRoZSAqcG9saWN5KiBrZXl3b3JkLgorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYgX2NsYXNzIGRlZmF1bHRzIHRvIHRoZSBwb2xpY3kgYGBtZXNzYWdlX2ZhY3RvcnlgYC4KIAotLi4gZnVuY3Rpb246OiBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZnAsIF9jbGFzcz1lbWFpbC5tZXNzYWdlLk1lc3NhZ2UsICosIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeT1wb2xpY3kuY29tcGF0MzIpCiAKLSAgIFJldHVybiBhIG1lc3NhZ2Ugb2JqZWN0IHN0cnVjdHVyZSB0cmVlIGZyb20gYW4gb3BlbiBiaW5hcnkgOnRlcm06YGZpbGUKLSAgIG9iamVjdGAuICBUaGlzIGlzIGV4YWN0bHkgZXF1aXZhbGVudCB0byBgYEJ5dGVzUGFyc2VyKCkucGFyc2UoZnApYGAuCi0gICAqX2NsYXNzKiBhbmQgKnBvbGljeSogYXJlIGludGVycHJldGVkIGFzIHdpdGggdGhlCi0gICA6Y2xhc3M6YH5lbWFpbC5wYXJzZXIuUGFyc2VyYCBjbGFzcyBjb25zdHJ1Y3Rvci4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCi0gICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgUmVtb3ZlZCB0aGUgKnN0cmljdCogYXJndW1lbnQuICBBZGRlZCB0aGUgKnBvbGljeSoga2V5d29yZC4KLQotSGVyZSdzIGFuIGV4YW1wbGUgb2YgaG93IHlvdSBtaWdodCB1c2UgdGhpcyBhdCBhbiBpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKK0hlcmUncyBhbiBleGFtcGxlIG9mIGhvdyB5b3UgbWlnaHQgdXNlIDpmdW5jOmBtZXNzYWdlX2Zyb21fYnl0ZXNgIGF0IGFuCitpbnRlcmFjdGl2ZSBQeXRob24gcHJvbXB0OjoKIAogICAgPj4+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+YCB0aGUgZW5jb2Rpbmcgd2lsbCByZXN1bHQgaW4gYSBzaW5nbGUgY2h1bmsuCisgICBJZiAqbWVzc2FnZV9ib2R5KiBpcyBhIDpjbGFzczpgY29sbGVjdGlvbnMuSXRlcmFibGVgLCBlYWNoIGl0ZXJhdGlvbgorICAgb2YgKm1lc3NhZ2VfYm9keSogd2lsbCByZXN1bHQgaW4gYSBjaHVuay4gIElmICptZXNzYWdlX2JvZHkqIGlzIGEKKyAgIDp0ZXJtOmBmaWxlIG9iamVjdGAsIGVhY2ggY2FsbCB0byBgYC5yZWFkKClgYCB3aWxsIHJlc3VsdCBpbiBhIGNodW5rLgorICAgVGhlIG1ldGhvZCBhdXRvbWF0aWNhbGx5IHNpZ25hbHMgdGhlIGVuZCBvZiB0aGUgY2h1bmstZW5jb2RlZCBkYXRhCisgICBpbW1lZGlhdGVseSBhZnRlciAqbWVzc2FnZV9ib2R5Ki4KKworICAgLi4gbm90ZTo6IER1ZSB0byB0aGUgY2h1bmtlZCBlbmNvZGluZyBzcGVjaWZpY2F0aW9uLCBlbXB0eSBjaHVua3MKKyAgICAgIHlpZWxkZWQgYnkgYW4gaXRlcmF0b3IgYm9keSB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIGNodW5rLWVuY29kZXIuCisgICAgICBUaGlzIGlzIHRvIGF2b2lkIHByZW1hdHVyZSB0ZXJtaW5hdGlvbiBvZiB0aGUgcmVhZCBvZiB0aGUgcmVxdWVzdCBieQorICAgICAgdGhlIHRhcmdldCBzZXJ2ZXIgZHVlIHRvIG1hbGZvcm1lZCBlbmNvZGluZy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBDaHVua2VkIGVuY29kaW5nIHN1cHBvcnQuICBUaGUgKmVuY29kZV9jaHVua2VkKiBwYXJhbWV0ZXIgd2FzCisgICAgICBhZGRlZC4KKwogCiAuLiBtZXRob2Q6OiBIVFRQQ29ubmVjdGlvbi5zZW5kKGRhdGEpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L2h0dHAuc2VydmVyLnJzdAppbmRleCAxNmM0ZmFjLi5jMWVhODczIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9odHRwLnNlcnZlci5yc3QKKysrIGIvRG9jL2xpYnJhcnkvaHR0cC5zZXJ2ZXIucnN0CkBAIC05OCw4ICs5OCw4IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IHJmaWxlCiAKLSAgICAgIENvbnRhaW5zIGFuIGlucHV0IHN0cmVhbSwgcG9zaXRpb25lZCBhdCB0aGUgc3RhcnQgb2YgdGhlIG9wdGlvbmFsIGlucHV0Ci0gICAgICBkYXRhLgorICAgICAgQW4gOmNsYXNzOmBpby5CdWZmZXJlZElPQmFzZWAgaW5wdXQgc3RyZWFtLCByZWFkeSB0byByZWFkIGZyb20KKyAgICAgIHRoZSBzdGFydCBvZiB0aGUgb3B0aW9uYWwgaW5wdXQgZGF0YS4KIAogICAgLi4gYXR0cmlidXRlOjogd2ZpbGUKIApAQCAtMTA3LDYgKzEwNyw5IEBACiAgICAgICBjbGllbnQuIFByb3BlciBhZGhlcmVuY2UgdG8gdGhlIEhUVFAgcHJvdG9jb2wgbXVzdCBiZSB1c2VkIHdoZW4gd3JpdGluZyB0bwogICAgICAgdGhpcyBzdHJlYW0uCiAKKyAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICBUaGlzIGlzIGFuIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHN0cmVhbS4KKwogICAgOmNsYXNzOmBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyYCBoYXMgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBzZXJ2ZXJfdmVyc2lvbgpAQCAtMzY5LDEwICszNzIsOSBAQAogCiAgICBIYW5kbGVyID0gaHR0cC5zZXJ2ZXIuU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyCiAKLSAgIGh0dHBkID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoIiIsIFBPUlQpLCBIYW5kbGVyKQotCi0gICBwcmludCgic2VydmluZyBhdCBwb3J0IiwgUE9SVCkKLSAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQorICAgd2l0aCBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKCgiIiwgUE9SVCksIEhhbmRsZXIpIGFzIGh0dHBkOgorICAgICAgIHByaW50KCJzZXJ2aW5nIGF0IHBvcnQiLCBQT1JUKQorICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAuLiBfaHR0cC1zZXJ2ZXItY2xpOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWFwbGliLnJzdCBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CmluZGV4IGMyNWU3ZDguLjcwMjRhMWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltYXBsaWIucnN0CkBAIC0xMDMsNiArMTAzLDE0IEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqc3NsX2NvbnRleHQqLgorICAgICAgIFBsZWFzZSB1c2UgOm1ldGg6YHNzbC5TU0xDb250ZXh0LmxvYWRfY2VydF9jaGFpbmAgaW5zdGVhZCwgb3IgbGV0CisgICAgICAgOmZ1bmM6YHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0YCBzZWxlY3QgdGhlIHN5c3RlbSdzIHRydXN0ZWQgQ0EKKyAgICAgICBjZXJ0aWZpY2F0ZXMgZm9yIHlvdS4KKworCiBUaGUgc2Vjb25kIHN1YmNsYXNzIGFsbG93cyBmb3IgY29ubmVjdGlvbnMgY3JlYXRlZCBieSBhIGNoaWxkIHByb2Nlc3M6CiAKIApAQCAtNTAwLDYgKzUwOCwxNyBAQAogICAgICAgICAgTS5zdG9yZShudW0sICcrRkxBR1MnLCAnXFxEZWxldGVkJykKICAgICAgIE0uZXhwdW5nZSgpCiAKKyAgIC4uIG5vdGU6OgorCisgICAgICBDcmVhdGluZyBmbGFncyBjb250YWluaW5nICddJyAoZm9yIGV4YW1wbGU6ICJbdGVzdF0iKSB2aW9sYXRlcworICAgICAgOnJmYzpgMzUwMWAgKHRoZSBJTUFQIHByb3RvY29sKS4gIEhvd2V2ZXIsIGltYXBsaWIgaGFzIGhpc3RvcmljYWxseQorICAgICAgYWxsb3dlZCBjcmVhdGlvbiBvZiBzdWNoIHRhZ3MsIGFuZCBwb3B1bGFyIElNQVAgc2VydmVycywgc3VjaCBhcyBHbWFpbCwKKyAgICAgIGFjY2VwdCBhbmQgcHJvZHVjZSBzdWNoIGZsYWdzLiAgVGhlcmUgYXJlIG5vbi1QeXRob24gcHJvZ3JhbXMgd2hpY2ggYWxzbworICAgICAgY3JlYXRlIHN1Y2ggdGFncy4gIEFsdGhvdWdoIGl0IGlzIGFuIFJGQyB2aW9sYXRpb24gYW5kIElNQVAgY2xpZW50cyBhbmQKKyAgICAgIHNlcnZlcnMgYXJlIHN1cHBvc2VkIHRvIGJlIHN0cmljdCwgaW1hcGxpYiBub25ldGhlbGVzcyBjb250aW51ZXMgdG8gYWxsb3cKKyAgICAgIHN1Y2ggdGFncyB0byBiZSBjcmVhdGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGFuZCBhcyBvZgorICAgICAgcHl0aG9uIDMuNiwgaGFuZGxlcyB0aGVtIGlmIHRoZXkgYXJlIHNlbnQgZnJvbSB0aGUgc2VydmVyLCBzaW5jZSB0aGlzCisgICAgICBpbXByb3ZlcyByZWFsLXdvcmxkIGNvbXBhdGliaWxpdHkuCiAKIC4uIG1ldGhvZDo6IElNQVA0LnN1YnNjcmliZShtYWlsYm94KQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0IGIvRG9jL2xpYnJhcnkvaW1naGRyLnJzdAppbmRleCBmMTFmNmRjLi44MDBlOTE5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbWdoZHIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltZ2hkci5yc3QKQEAgLTIwLDYgKzIwLDkgQEAKICAgIHN0cmluZyBkZXNjcmliaW5nIHRoZSBpbWFnZSB0eXBlLiAgSWYgb3B0aW9uYWwgKmgqIGlzIHByb3ZpZGVkLCB0aGUgKmZpbGVuYW1lKgogICAgaXMgaWdub3JlZCBhbmQgKmgqIGlzIGFzc3VtZWQgdG8gY29udGFpbiB0aGUgYnl0ZSBzdHJlYW0gdG8gdGVzdC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIFRoZSBmb2xsb3dpbmcgaW1hZ2UgdHlwZXMgYXJlIHJlY29nbml6ZWQsIGFzIGxpc3RlZCBiZWxvdyB3aXRoIHRoZSByZXR1cm4gdmFsdWUKIGZyb20gOmZ1bmM6YHdoYXRgOgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXAucnN0IGIvRG9jL2xpYnJhcnkvaW1wLnJzdAppbmRleCA5ODI4YmE2Li5jY2Y1ZjkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcC5yc3QKQEAgLTg1LDcgKzg1LDkgQEAKICAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKICAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjYCBpbnN0ZWFkIHVubGVzcyBQeXRob24gMy4zCiAgICAgICBjb21wYXRpYmlsaXR5IGlzIHJlcXVpcmVkLCBpbiB3aGljaCBjYXNlIHVzZQotICAgICAgOmZ1bmM6YGltcG9ydGxpYi5maW5kX2xvYWRlcmAuCisgICAgICA6ZnVuYzpgaW1wb3J0bGliLmZpbmRfbG9hZGVyYC4gRm9yIGV4YW1wbGUgdXNhZ2Ugb2YgdGhlIGZvcm1lciBjYXNlLAorICAgICAgc2VlIHRoZSA6cmVmOmBpbXBvcnRsaWItZXhhbXBsZXNgIHNlY3Rpb24gb2YgdGhlIDptb2Q6YGltcG9ydGxpYmAKKyAgICAgIGRvY3VtZW50YXRpb24uCiAKIAogLi4gZnVuY3Rpb246OiBsb2FkX21vZHVsZShuYW1lLCBmaWxlLCBwYXRobmFtZSwgZGVzY3JpcHRpb24pCkBAIC0xMTIsOSArMTE0LDEyIEBACiAgICAgICBJZiBwcmV2aW91c2x5IHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCA6ZnVuYzpgaW1wLmZpbmRfbW9kdWxlYCB0aGVuCiAgICAgICBjb25zaWRlciB1c2luZyA6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgLCBvdGhlcndpc2UgdXNlIHRoZSBsb2FkZXIKICAgICAgIHJldHVybmVkIGJ5IHRoZSByZXBsYWNlbWVudCB5b3UgY2hvc2UgZm9yIDpmdW5jOmBpbXAuZmluZF9tb2R1bGVgLiBJZiB5b3UKLSAgICAgIGNhbGxlZCA6ZnVuYzpgaW1wLmxvYWRfbW9kdWxlYCBhbmQgcmVsYXRlZCBmdW5jdGlvbnMgZGlyZWN0bHkgdGhlbiB1c2UgdGhlCi0gICAgICBjbGFzc2VzIGluIDptb2Q6YGltcG9ydGxpYi5tYWNoaW5lcnlgLCBlLmcuCi0gICAgICBgYGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcihuYW1lLCBwYXRoKS5sb2FkX21vZHVsZSgpYGAuCisgICAgICBjYWxsZWQgOmZ1bmM6YGltcC5sb2FkX21vZHVsZWAgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zIGRpcmVjdGx5IHdpdGggZmlsZQorICAgICAgcGF0aCBhcmd1bWVudHMgdGhlbiB1c2UgYSBjb21iaW5hdGlvbiBvZgorICAgICAgOmZ1bmM6YGltcG9ydGxpYi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uYCBhbmQKKyAgICAgIDpmdW5jOmBpbXBvcnRsaWIudXRpbC5tb2R1bGVfZnJvbV9zcGVjYC4gU2VlIHRoZSA6cmVmOmBpbXBvcnRsaWItZXhhbXBsZXNgCisgICAgICBzZWN0aW9uIG9mIHRoZSA6bW9kOmBpbXBvcnRsaWJgIGRvY3VtZW50YXRpb24gZm9yIGRldGFpbHMgb2YgdGhlIHZhcmlvdXMKKyAgICAgIGFwcHJvYWNoZXMuCiAKIAogLi4gZnVuY3Rpb246OiBuZXdfbW9kdWxlKG5hbWUpCkBAIC0xMjMsNyArMTI4LDcgQEAKICAgIGluIGBgc3lzLm1vZHVsZXNgYC4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNAotICAgICAgVXNlIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgaW5zdGVhZC4KKyAgICAgIFVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlY2AgaW5zdGVhZC4KIAogCiAuLiBmdW5jdGlvbjo6IHJlbG9hZChtb2R1bGUpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0IGIvRG9jL2xpYnJhcnkvaW1wb3J0bGliLnJzdAppbmRleCAzZDgzNTA5Li4wZDMxNGE3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9pbXBvcnRsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L2ltcG9ydGxpYi5yc3QKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgbW9kdWxlIGFuZCAqcGF0aCogd2lsbCBiZSB0aGUgdmFsdWUgb2YgOmF0dHI6YF9fcGF0aF9fYCBmcm9tIHRoZQogICAgICAgcGFyZW50IHBhY2thZ2UuIElmIGEgc3BlYyBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLgogICAgICAgV2hlbiBwYXNzZWQgaW4sIGBgdGFyZ2V0YGAgaXMgYSBtb2R1bGUgb2JqZWN0IHRoYXQgdGhlIGZpbmRlciBtYXkKLSAgICAgIHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZCBhYm91dCB3aGF0IHNwZWMgdG8gcmV0dXJuLgorICAgICAgdXNlIHRvIG1ha2UgYSBtb3JlIGVkdWNhdGVkIGd1ZXNzIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCkBAIC0zMTcsNyArMzE3LDcgQEAKICAgICAgIHdpdGhpbiB0aGUgOnRlcm06YHBhdGggZW50cnlgIHRvIHdoaWNoIGl0IGlzIGFzc2lnbmVkLiAgSWYgYSBzcGVjCiAgICAgICBjYW5ub3QgYmUgZm91bmQsIGBgTm9uZWBgIGlzIHJldHVybmVkLiAgV2hlbiBwYXNzZWQgaW4sIGBgdGFyZ2V0YGAKICAgICAgIGlzIGEgbW9kdWxlIG9iamVjdCB0aGF0IHRoZSBmaW5kZXIgbWF5IHVzZSB0byBtYWtlIGEgbW9yZSBlZHVjYXRlZAotICAgICAgYWJvdXQgd2hhdCBzcGVjIHRvIHJldHVybi4KKyAgICAgIGd1ZXNzIGFib3V0IHdoYXQgc3BlYyB0byByZXR1cm4uCiAKICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCkBAIC0zNzksMTAgKzM3OSwxNCBAQAogCiAgICAgICAgQW4gYWJzdHJhY3QgbWV0aG9kIHRoYXQgZXhlY3V0ZXMgdGhlIG1vZHVsZSBpbiBpdHMgb3duIG5hbWVzcGFjZQogICAgICAgIHdoZW4gYSBtb2R1bGUgaXMgaW1wb3J0ZWQgb3IgcmVsb2FkZWQuICBUaGUgbW9kdWxlIHNob3VsZCBhbHJlYWR5Ci0gICAgICAgYmUgaW5pdGlhbGl6ZWQgd2hlbiBleGVjX21vZHVsZSgpIGlzIGNhbGxlZC4KKyAgICAgICBiZSBpbml0aWFsaXplZCB3aGVuIGBgZXhlY19tb2R1bGUoKWBgIGlzIGNhbGxlZC4gV2hlbiB0aGlzIG1ldGhvZCBleGlzdHMsCisgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtdXN0IGJlIGRlZmluZWQuCiAKICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtdXN0IGFsc28gYmUgZGVmaW5lZC4KKwogICAgIC4uIG1ldGhvZDo6IGxvYWRfbW9kdWxlKGZ1bGxuYW1lKQogCiAgICAgICAgIEEgbGVnYWN5IG1ldGhvZCBmb3IgbG9hZGluZyBhIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBjYW5ub3QgYmUKQEAgLTkzNiw2ICs5NDAsMTAgQEAKICAgICAgIENvbmNyZXRlIGltcGxlbWVudGF0aW9uIG9mIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZWAgd2hlcmUKICAgICAgIHNwZWNpZnlpbmcgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0byBsb2FkIGlzIG9wdGlvbmFsLgogCisgICAgICAuLiBkZXByZWNhdGVkOjogMy42CisKKyAgICAgICAgIFVzZSA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIuZXhlY19tb2R1bGVgIGluc3RlYWQuCisKIAogLi4gY2xhc3M6OiBTb3VyY2VsZXNzRmlsZUxvYWRlcihmdWxsbmFtZSwgcGF0aCkKIApAQCAtOTc1LDYgKzk4MywxMCBAQAogICAgQ29uY3JldGUgaW1wbGVtZW50YXRpb24gb2YgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB3aGVyZQogICAgc3BlY2lmeWluZyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRvIGxvYWQgaXMgb3B0aW9uYWwuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgVXNlIDptZXRoOmBpbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgaW5zdGVhZC4KKwogCiAuLiBjbGFzczo6IEV4dGVuc2lvbkZpbGVMb2FkZXIoZnVsbG5hbWUsIHBhdGgpCiAKQEAgLTExMzcsNiArMTE0OSw5IEBACiAgICAgICBUaGUgKm9wdGltaXphdGlvbiogcGFyYW1ldGVyIHdhcyBhZGRlZCBhbmQgdGhlICpkZWJ1Z19vdmVycmlkZSogcGFyYW1ldGVyCiAgICAgICB3YXMgZGVwcmVjYXRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCkBAIC0xMTUwLDYgKzExNjUsOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIC4uIGZ1bmN0aW9uOjogZGVjb2RlX3NvdXJjZShzb3VyY2VfYnl0ZXMpCiAKICAgIERlY29kZSB0aGUgZ2l2ZW4gYnl0ZXMgcmVwcmVzZW50aW5nIHNvdXJjZSBjb2RlIGFuZCByZXR1cm4gaXQgYXMgYSBzdHJpbmcKQEAgLTExOTIsMTIgKzEyMTAsMTMgQEAKIAogLi4gZnVuY3Rpb246OiBtb2R1bGVfZnJvbV9zcGVjKHNwZWMpCiAKLSAgIENyZWF0ZSBhIG5ldyBtb2R1bGUgYmFzZWQgb24gKipzcGVjKiogYW5kIGBgc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZSgpYGAuCisgICBDcmVhdGUgYSBuZXcgbW9kdWxlIGJhc2VkIG9uICoqc3BlYyoqIGFuZAorICAgOm1ldGg6YHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUgPGltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGU+YC4KIAotICAgSWYgYGBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKClgYCBkb2VzIG5vdCByZXR1cm4gYGBOb25lYGAsIHRoZW4gYW55Ci0gICBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4gQWxzbywgbm8gOmV4YzpgQXR0cmlidXRlRXJyb3JgCi0gICB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nICoqc3BlYyoqIG9yIHNldHRpbmcgYW4gYXR0cmlidXRlCi0gICBvbiB0aGUgbW9kdWxlLgorICAgSWYgOm1ldGg6YHNwZWMubG9hZGVyLmNyZWF0ZV9tb2R1bGUgPGltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGU+YAorICAgZG9lcyBub3QgcmV0dXJuIGBgTm9uZWBgLCB0aGVuIGFueSBwcmUtZXhpc3RpbmcgYXR0cmlidXRlcyB3aWxsIG5vdCBiZSByZXNldC4KKyAgIEFsc28sIG5vIDpleGM6YEF0dHJpYnV0ZUVycm9yYCB3aWxsIGJlIHJhaXNlZCBpZiB0cmlnZ2VyZWQgd2hpbGUgYWNjZXNzaW5nCisgICAqKnNwZWMqKiBvciBzZXR0aW5nIGFuIGF0dHJpYnV0ZSBvbiB0aGUgbW9kdWxlLgogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHByZWZlcnJlZCBvdmVyIHVzaW5nIDpjbGFzczpgdHlwZXMuTW9kdWxlVHlwZWAgdG8gY3JlYXRlIGEKICAgIG5ldyBtb2R1bGUgYXMgKipzcGVjKiogaXMgdXNlZCB0byBzZXQgYXMgbWFueSBpbXBvcnQtY29udHJvbGxlZCBhdHRyaWJ1dGVzIG9uCkBAIC0xMjU5LDcgKzEyNzgsOCBAQAogCiAuLiBkZWNvcmF0b3I6OiBzZXRfcGFja2FnZQogCi0gICBBIDp0ZXJtOmBkZWNvcmF0b3JgIGZvciA6bWV0aDpgaW1wb3J0bGliLmFiYy5Mb2FkZXIubG9hZF9tb2R1bGVgIHRvIHNldCB0aGUgOmF0dHI6YF9fcGFja2FnZV9fYCBhdHRyaWJ1dGUgb24gdGhlIHJldHVybmVkIG1vZHVsZS4gSWYgOmF0dHI6YF9fcGFja2FnZV9fYAorICAgQSA6dGVybTpgZGVjb3JhdG9yYCBmb3IgOm1ldGg6YGltcG9ydGxpYi5hYmMuTG9hZGVyLmxvYWRfbW9kdWxlYCB0byBzZXQgdGhlCisgICA6YXR0cjpgX19wYWNrYWdlX19gIGF0dHJpYnV0ZSBvbiB0aGUgcmV0dXJuZWQgbW9kdWxlLiBJZiA6YXR0cjpgX19wYWNrYWdlX19gCiAgICBpcyBzZXQgYW5kIGhhcyBhIHZhbHVlIG90aGVyIHRoYW4gYGBOb25lYGAgaXQgd2lsbCBub3QgYmUgY2hhbmdlZC4KIAogICAgLi4gZGVwcmVjYXRlZDo6IDMuNApAQCAtMTI4NCw2ICsxMzA0LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAuLiBjbGFzczo6IExhenlMb2FkZXIobG9hZGVyKQogCiAgICBBIGNsYXNzIHdoaWNoIHBvc3Rwb25lcyB0aGUgZXhlY3V0aW9uIG9mIHRoZSBsb2FkZXIgb2YgYSBtb2R1bGUgdW50aWwgdGhlCkBAIC0xMjkyLDEzICsxMzE1LDEyIEBACiAgICBUaGlzIGNsYXNzICoqb25seSoqIHdvcmtzIHdpdGggbG9hZGVycyB0aGF0IGRlZmluZQogICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5leGVjX21vZHVsZWAgYXMgY29udHJvbCBvdmVyIHdoYXQgbW9kdWxlIHR5cGUKICAgIGlzIHVzZWQgZm9yIHRoZSBtb2R1bGUgaXMgcmVxdWlyZWQuIEZvciB0aG9zZSBzYW1lIHJlYXNvbnMsIHRoZSBsb2FkZXIncwotICAgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCBtZXRob2Qgd2lsbCBiZSBpZ25vcmVkIChpLmUuLCB0aGUKLSAgIGxvYWRlcidzIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYGBOb25lYGA7IHRoaXMgZXhjbHVkZXMKLSAgIDpjbGFzczpgQnVpbHRpbkltcG9ydGVyYCBhbmQgOmNsYXNzOmBFeHRlbnNpb25GaWxlTG9hZGVyYCkuIEZpbmFsbHksCi0gICBtb2R1bGVzIHdoaWNoIHN1YnN0aXR1dGUgdGhlIG9iamVjdCBwbGFjZWQgaW50byA6YXR0cjpgc3lzLm1vZHVsZXNgIHdpbGwKLSAgIG5vdCB3b3JrIGFzIHRoZXJlIGlzIG5vIHdheSB0byBwcm9wZXJseSByZXBsYWNlIHRoZSBtb2R1bGUgcmVmZXJlbmNlcwotICAgdGhyb3VnaG91dCB0aGUgaW50ZXJwcmV0ZXIgc2FmZWx5OyA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgc3VjaCBhCi0gICBzdWJzdGl0dXRpb24gaXMgZGV0ZWN0ZWQuCisgICA6bWV0aDpgfmltcG9ydGxpYi5hYmMuTG9hZGVyLmNyZWF0ZV9tb2R1bGVgIG1ldGhvZCBtdXN0IHJldHVybiBgYE5vbmVgYCBvciBhCisgICB0eXBlIGZvciB3aGljaCBpdHMgYGBfX2NsYXNzX19gYCBhdHRyaWJ1dGUgY2FuIGJlIG11dGF0ZWQgYWxvbmcgd2l0aCBub3QKKyAgIHVzaW5nIDp0ZXJtOmBzbG90cyA8X19zbG90c19fPmAuIEZpbmFsbHksIG1vZHVsZXMgd2hpY2ggc3Vic3RpdHV0ZSB0aGUgb2JqZWN0CisgICBwbGFjZWQgaW50byA6YXR0cjpgc3lzLm1vZHVsZXNgIHdpbGwgbm90IHdvcmsgYXMgdGhlcmUgaXMgbm8gd2F5IHRvIHByb3Blcmx5CisgICByZXBsYWNlIHRoZSBtb2R1bGUgcmVmZXJlbmNlcyB0aHJvdWdob3V0IHRoZSBpbnRlcnByZXRlciBzYWZlbHk7CisgICA6ZXhjOmBWYWx1ZUVycm9yYCBpcyByYWlzZWQgaWYgc3VjaCBhIHN1YnN0aXR1dGlvbiBpcyBkZXRlY3RlZC4KIAogICAgLi4gbm90ZTo6CiAgICAgICBGb3IgcHJvamVjdHMgd2hlcmUgc3RhcnR1cCB0aW1lIGlzIGNyaXRpY2FsLCB0aGlzIGNsYXNzIGFsbG93cyBmb3IKQEAgLTEzMDksNiArMTMzMSwxMSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEJlZ2FuIGNhbGxpbmcgOm1ldGg6YH5pbXBvcnRsaWIuYWJjLkxvYWRlci5jcmVhdGVfbW9kdWxlYCwgcmVtb3ZpbmcgdGhlCisgICAgICBjb21wYXRpYmlsaXR5IHdhcm5pbmcgZm9yIDpjbGFzczpgaW1wb3J0bGliLm1hY2hpbmVyeS5CdWlsdGluSW1wb3J0ZXJgIGFuZAorICAgICAgOmNsYXNzOmBpbXBvcnRsaWIubWFjaGluZXJ5LkV4dGVuc2lvbkZpbGVMb2FkZXJgLgorCiAgICAuLiBjbGFzc21ldGhvZDo6IGZhY3RvcnkobG9hZGVyKQogCiAgICAgICBBIHN0YXRpYyBtZXRob2Qgd2hpY2ggcmV0dXJucyBhIGNhbGxhYmxlIHRoYXQgY3JlYXRlcyBhIGxhenkgbG9hZGVyLiBUaGlzCkBAIC0xMzIwLDMgKzEzNDcsMTM5IEBACiAgICAgICAgIGxvYWRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlcgogICAgICAgICBsYXp5X2xvYWRlciA9IGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuZmFjdG9yeShsb2FkZXIpCiAgICAgICAgIGZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuRmlsZUZpbmRlcihwYXRoLCAobGF6eV9sb2FkZXIsIHN1ZmZpeGVzKSkKKworLi4gX2ltcG9ydGxpYi1leGFtcGxlczoKKworRXhhbXBsZXMKKy0tLS0tLS0tCisKK0ltcG9ydGluZyBwcm9ncmFtbWF0aWNhbGx5CisnJycnJycnJycnJycnJycnJycnJycnJycnJworCitUbyBwcm9ncmFtbWF0aWNhbGx5IGltcG9ydCBhIG1vZHVsZSwgdXNlIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIKKworICBpdGVydG9vbHMgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnaXRlcnRvb2xzJykKKworCitDaGVja2luZyBpZiBhIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitJZiB5b3UgbmVlZCB0byBmaW5kIG91dCBpZiBhIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQgd2l0aG91dCBhY3R1YWxseSBkb2luZyB0aGUKK2ltcG9ydCwgdGhlbiB5b3Ugc2hvdWxkIHVzZSA6ZnVuYzpgaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjYC4KKzo6CisKKyAgaW1wb3J0IGltcG9ydGxpYi51dGlsCisgIGltcG9ydCBzeXMKKworICAjIEZvciBpbGx1c3RyYXRpdmUgcHVycG9zZXMuCisgIG5hbWUgPSAnaXRlcnRvb2xzJworCisgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKKyAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgcHJpbnQoImNhbid0IGZpbmQgdGhlIGl0ZXJ0b29scyBtb2R1bGUiKQorICBlbHNlOgorICAgICAgIyBJZiB5b3UgY2hvc2UgdG8gcGVyZm9ybSB0aGUgYWN0dWFsIGltcG9ydCAuLi4KKyAgICAgIG1vZHVsZSA9IGltcG9ydGxpYi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKKyAgICAgIHNwZWMubG9hZGVyLmV4ZWNfbW9kdWxlKG1vZHVsZSkKKyAgICAgICMgQWRkaW5nIHRoZSBtb2R1bGUgdG8gc3lzLm1vZHVsZXMgaXMgb3B0aW9uYWwuCisgICAgICBzeXMubW9kdWxlc1tuYW1lXSA9IG1vZHVsZQorCisKK0ltcG9ydGluZyBhIHNvdXJjZSBmaWxlIGRpcmVjdGx5CisnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitUbyBpbXBvcnQgYSBQeXRob24gc291cmNlIGZpbGUgZGlyZWN0bHksIHVzZSB0aGUgZm9sbG93aW5nIHJlY2lwZQorKFB5dGhvbiAzLjQgYW5kIG5ld2VyIG9ubHkpOjoKKworICBpbXBvcnQgaW1wb3J0bGliLnV0aWwKKyAgaW1wb3J0IHN5cworCisgICMgRm9yIGlsbHVzdHJhdGl2ZSBwdXJwb3Nlcy4KKyAgaW1wb3J0IHRva2VuaXplCisgIGZpbGVfcGF0aCA9IHRva2VuaXplLl9fZmlsZV9fCisgIG1vZHVsZV9uYW1lID0gdG9rZW5pemUuX19uYW1lX18KKworICBzcGVjID0gaW1wb3J0bGliLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24obW9kdWxlX25hbWUsIGZpbGVfcGF0aCkKKyAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCisgICMgT3B0aW9uYWw7IG9ubHkgbmVjZXNzYXJ5IGlmIHlvdSB3YW50IHRvIGJlIGFibGUgdG8gaW1wb3J0IHRoZSBtb2R1bGUKKyAgIyBieSBuYW1lIGxhdGVyLgorICBzeXMubW9kdWxlc1ttb2R1bGVfbmFtZV0gPSBtb2R1bGUKKworCitTZXR0aW5nIHVwIGFuIGltcG9ydGVyCisnJycnJycnJycnJycnJycnJycnJycnCisKK0ZvciBkZWVwIGN1c3RvbWl6YXRpb25zIG9mIGltcG9ydCwgeW91IHR5cGljYWxseSB3YW50IHRvIGltcGxlbWVudCBhbgorOnRlcm06YGltcG9ydGVyYC4gVGhpcyBtZWFucyBtYW5hZ2luZyBib3RoIHRoZSA6dGVybTpgZmluZGVyYCBhbmQgOnRlcm06YGxvYWRlcmAKK3NpZGUgb2YgdGhpbmdzLiBGb3IgZmluZGVycyB0aGVyZSBhcmUgdHdvIGZsYXZvdXJzIHRvIGNob29zZSBmcm9tIGRlcGVuZGluZyBvbgoreW91ciBuZWVkczogYSA6dGVybTpgbWV0YSBwYXRoIGZpbmRlcmAgb3IgYSA6dGVybTpgcGF0aCBlbnRyeSBmaW5kZXJgLiBUaGUKK2Zvcm1lciBpcyB3aGF0IHlvdSB3b3VsZCBwdXQgb24gOmF0dHI6YHN5cy5tZXRhX3BhdGhgIHdoaWxlIHRoZSBsYXR0ZXIgaXMgd2hhdAoreW91IGNyZWF0ZSB1c2luZyBhIDp0ZXJtOmBwYXRoIGVudHJ5IGhvb2tgIG9uIDphdHRyOmBzeXMucGF0aF9ob29rc2Agd2hpY2ggd29ya3MKK3dpdGggOmF0dHI6YHN5cy5wYXRoYCBlbnRyaWVzIHRvIHBvdGVudGlhbGx5IGNyZWF0ZSBhIGZpbmRlci4gVGhpcyBleGFtcGxlIHdpbGwKK3Nob3cgeW91IGhvdyB0byByZWdpc3RlciB5b3VyIG93biBpbXBvcnRlcnMgc28gdGhhdCBpbXBvcnQgd2lsbCB1c2UgdGhlbSAoZm9yCitjcmVhdGluZyBhbiBpbXBvcnRlciBmb3IgeW91cnNlbGYsIHJlYWQgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBhcHByb3ByaWF0ZQorY2xhc3NlcyBkZWZpbmVkIHdpdGhpbiB0aGlzIHBhY2thZ2UpOjoKKworICBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQorICBpbXBvcnQgc3lzCisKKyAgIyBGb3IgaWxsdXN0cmF0aXZlIHB1cnBvc2VzIG9ubHkuCisgIFNwYW1NZXRhUGF0aEZpbmRlciA9IGltcG9ydGxpYi5tYWNoaW5lcnkuUGF0aEZpbmRlcgorICBTcGFtUGF0aEVudHJ5RmluZGVyID0gaW1wb3J0bGliLm1hY2hpbmVyeS5GaWxlRmluZGVyCisgIGxvYWRlcl9kZXRhaWxzID0gKGltcG9ydGxpYi5tYWNoaW5lcnkuU291cmNlRmlsZUxvYWRlciwKKyAgICAgICAgICAgICAgICAgICAgaW1wb3J0bGliLm1hY2hpbmVyeS5TT1VSQ0VfU1VGRklYRVMpCisKKyAgIyBTZXR0aW5nIHVwIGEgbWV0YSBwYXRoIGZpbmRlci4KKyAgIyBNYWtlIHN1cmUgdG8gcHV0IHRoZSBmaW5kZXIgaW4gdGhlIHByb3BlciBsb2NhdGlvbiBpbiB0aGUgbGlzdCBpbiB0ZXJtcyBvZgorICAjIHByaW9yaXR5LgorICBzeXMubWV0YV9wYXRoLmFwcGVuZChTcGFtTWV0YVBhdGhGaW5kZXIpCisKKyAgIyBTZXR0aW5nIHVwIGEgcGF0aCBlbnRyeSBmaW5kZXIuCisgICMgTWFrZSBzdXJlIHRvIHB1dCB0aGUgcGF0aCBob29rIGluIHRoZSBwcm9wZXIgbG9jYXRpb24gaW4gdGhlIGxpc3QgaW4gdGVybXMKKyAgIyBvZiBwcmlvcml0eS4KKyAgc3lzLnBhdGhfaG9va3MuYXBwZW5kKFNwYW1QYXRoRW50cnlGaW5kZXIucGF0aF9ob29rKGxvYWRlcl9kZXRhaWxzKSkKKworCitBcHByb3hpbWF0aW5nIDpmdW5jOmBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZWAKKycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJycnJworCitJbXBvcnQgaXRzZWxmIGlzIGltcGxlbWVudGVkIGluIFB5dGhvbiBjb2RlLCBtYWtpbmcgaXQgcG9zc2libGUgdG8KK2V4cG9zZSBtb3N0IG9mIHRoZSBpbXBvcnQgbWFjaGluZXJ5IHRocm91Z2ggaW1wb3J0bGliLiBUaGUgZm9sbG93aW5nCitoZWxwcyBpbGx1c3RyYXRlIHRoZSB2YXJpb3VzIEFQSXMgdGhhdCBpbXBvcnRsaWIgZXhwb3NlcyBieSBwcm92aWRpbmcgYW4KK2FwcHJveGltYXRlIGltcGxlbWVudGF0aW9uIG9mCis6ZnVuYzpgaW1wb3J0bGliLmltcG9ydF9tb2R1bGVgIChQeXRob24gMy40IGFuZCBuZXdlciBmb3IgdGhlIGltcG9ydGxpYiB1c2FnZSwKK1B5dGhvbiAzLjYgYW5kIG5ld2VyIGZvciBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZSkuCis6OgorCisgIGltcG9ydCBpbXBvcnRsaWIudXRpbAorICBpbXBvcnQgc3lzCisKKyAgZGVmIGltcG9ydF9tb2R1bGUobmFtZSwgcGFja2FnZT1Ob25lKToKKyAgICAgICIiIkFuIGFwcHJveGltYXRlIGltcGxlbWVudGF0aW9uIG9mIGltcG9ydC4iIiIKKyAgICAgIGFic29sdXRlX25hbWUgPSBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUobmFtZSwgcGFja2FnZSkKKyAgICAgIHRyeToKKyAgICAgICAgICByZXR1cm4gc3lzLm1vZHVsZXNbYWJzb2x1dGVfbmFtZV0KKyAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKKyAgICAgICAgICBwYXNzCisKKyAgICAgIHBhdGggPSBOb25lCisgICAgICBpZiAnLicgaW4gYWJzb2x1dGVfbmFtZToKKyAgICAgICAgICBwYXJlbnRfbmFtZSwgXywgY2hpbGRfbmFtZSA9IGFic29sdXRlX25hbWUucnBhcnRpdGlvbignLicpCisgICAgICAgICAgcGFyZW50X21vZHVsZSA9IGltcG9ydF9tb2R1bGUocGFyZW50X25hbWUpCisgICAgICAgICAgcGF0aCA9IHBhcmVudF9tb2R1bGUuc3BlYy5zdWJtb2R1bGVfc2VhcmNoX2xvY2F0aW9ucworICAgICAgZm9yIGZpbmRlciBpbiBzeXMubWV0YV9wYXRoOgorICAgICAgICAgIHNwZWMgPSBmaW5kZXIuZmluZF9zcGVjKGFic29sdXRlX25hbWUsIHBhdGgpCisgICAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgYnJlYWsKKyAgICAgIGVsc2U6CisgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoZidObyBtb2R1bGUgbmFtZWQge2Fic29sdXRlX25hbWUhcn0nKQorICAgICAgbW9kdWxlID0gaW1wb3J0bGliLnV0aWwubW9kdWxlX2Zyb21fc3BlYyhzcGVjKQorICAgICAgc3BlYy5sb2FkZXIuZXhlY19tb2R1bGUobW9kdWxlKQorICAgICAgc3lzLm1vZHVsZXNbYWJzb2x1dGVfbmFtZV0gPSBtb2R1bGUKKyAgICAgIGlmIHBhdGggaXMgbm90IE5vbmU6CisgICAgICAgICAgc2V0YXR0cihwYXJlbnRfbW9kdWxlLCBjaGlsZF9uYW1lLCBtb2R1bGUpCisgICAgICByZXR1cm4gbW9kdWxlCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9pbnNwZWN0LnJzdCBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CmluZGV4IDhlN2VkMTkuLjVjYjdjMjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L2luc3BlY3QucnN0CkBAIC0yMzUsMjQgKzIzNSw2IEBACiAgICAgICBsaXN0ZWQgaW4gdGhlIG1ldGFjbGFzcycgY3VzdG9tIDptZXRoOmBfX2Rpcl9fYC4KIAogCi0uLiBmdW5jdGlvbjo6IGdldG1vZHVsZWluZm8ocGF0aCkKLQotICAgUmV0dXJucyBhIDp0ZXJtOmBuYW1lZCB0dXBsZWAgYGBNb2R1bGVJbmZvKG5hbWUsIHN1ZmZpeCwgbW9kZSwgbW9kdWxlX3R5cGUpYGAKLSAgIG9mIHZhbHVlcyB0aGF0IGRlc2NyaWJlIGhvdyBQeXRob24gd2lsbCBpbnRlcnByZXQgdGhlIGZpbGUgaWRlbnRpZmllZCBieQotICAgKnBhdGgqIGlmIGl0IGlzIGEgbW9kdWxlLCBvciBgYE5vbmVgYCBpZiBpdCB3b3VsZCBub3QgYmUgaWRlbnRpZmllZCBhcyBhCi0gICBtb2R1bGUuICBJbiB0aGF0IHR1cGxlLCAqbmFtZSogaXMgdGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB3aXRob3V0IHRoZSBuYW1lIG9mCi0gICBhbnkgZW5jbG9zaW5nIHBhY2thZ2UsICpzdWZmaXgqIGlzIHRoZSB0cmFpbGluZyBwYXJ0IG9mIHRoZSBmaWxlIG5hbWUgKHdoaWNoCi0gICBtYXkgbm90IGJlIGEgZG90LWRlbGltaXRlZCBleHRlbnNpb24pLCAqbW9kZSogaXMgdGhlIDpmdW5jOmBvcGVuYCBtb2RlIHRoYXQKLSAgIHdvdWxkIGJlIHVzZWQgKGBgJ3InYGAgb3IgYGAncmInYGApLCBhbmQgKm1vZHVsZV90eXBlKiBpcyBhbiBpbnRlZ2VyIGdpdmluZwotICAgdGhlIHR5cGUgb2YgdGhlIG1vZHVsZS4gICptb2R1bGVfdHlwZSogd2lsbCBoYXZlIGEgdmFsdWUgd2hpY2ggY2FuIGJlCi0gICBjb21wYXJlZCB0byB0aGUgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlIDptb2Q6YGltcGAgbW9kdWxlOyBzZWUgdGhlCi0gICBkb2N1bWVudGF0aW9uIGZvciB0aGF0IG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBtb2R1bGUgdHlwZXMuCi0KLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjMKLSAgICAgIFlvdSBtYXkgY2hlY2sgdGhlIGZpbGUgcGF0aCdzIHN1ZmZpeCBhZ2FpbnN0IHRoZSBzdXBwb3J0ZWQgc3VmZml4ZXMKLSAgICAgIGxpc3RlZCBpbiA6bW9kOmBpbXBvcnRsaWIubWFjaGluZXJ5YCB0byBpbmZlciB0aGUgc2FtZSBpbmZvcm1hdGlvbi4KLQotCiAuLiBmdW5jdGlvbjo6IGdldG1vZHVsZW5hbWUocGF0aCkKIAogICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgbmFtZWQgYnkgdGhlIGZpbGUgKnBhdGgqLCB3aXRob3V0IGluY2x1ZGluZyB0aGUKQEAgLTI2Niw4ICsyNDgsNyBAQAogICAgc3RpbGwgcmV0dXJuIGBgTm9uZWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgZGlyZWN0bHkgb24gOm1vZDpgaW1wb3J0bGliYCByYXRoZXIgdGhhbiB0aGUKLSAgICAgIGRlcHJlY2F0ZWQgOmZ1bmM6YGdldG1vZHVsZWluZm9gLgorICAgICAgVGhlIGZ1bmN0aW9uIGlzIGJhc2VkIGRpcmVjdGx5IG9uIDptb2Q6YGltcG9ydGxpYmAuCiAKIAogLi4gZnVuY3Rpb246OiBpc21vZHVsZShvYmplY3QpCkBAIC02NDYsNiArNjI3LDE2IEBACiAgICAgICBUaGUgbmFtZSBvZiB0aGUgcGFyYW1ldGVyIGFzIGEgc3RyaW5nLiAgVGhlIG5hbWUgbXVzdCBiZSBhIHZhbGlkCiAgICAgICBQeXRob24gaWRlbnRpZmllci4KIAorICAgICAgLi4gaW1wbC1kZXRhaWw6OgorCisgICAgICAgICBDUHl0aG9uIGdlbmVyYXRlcyBpbXBsaWNpdCBwYXJhbWV0ZXIgbmFtZXMgb2YgdGhlIGZvcm0gYGAuMGBgIG9uIHRoZQorICAgICAgICAgY29kZSBvYmplY3RzIHVzZWQgdG8gaW1wbGVtZW50IGNvbXByZWhlbnNpb25zIGFuZCBnZW5lcmF0b3IKKyAgICAgICAgIGV4cHJlc3Npb25zLgorCisgICAgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgICAgVGhlc2UgcGFyYW1ldGVyIG5hbWVzIGFyZSBleHBvc2VkIGJ5IHRoaXMgbW9kdWxlIGFzIG5hbWVzIGxpa2UKKyAgICAgICAgICAgIGBgaW1wbGljaXQwYGAuCisKICAgIC4uIGF0dHJpYnV0ZTo6IFBhcmFtZXRlci5kZWZhdWx0CiAKICAgICAgIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgcGFyYW1ldGVyLiAgSWYgdGhlIHBhcmFtZXRlciBoYXMgbm8gZGVmYXVsdApAQCAtODU0LDggKzg0NSw2IEBACiAgICBmcm9tIGt3b25seWFyZ3MgdG8gZGVmYXVsdHMuICAqYW5ub3RhdGlvbnMqIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50CiAgICBuYW1lcyB0byBhbm5vdGF0aW9ucy4KIAotICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gOmZ1bmM6YGdldGFyZ3NwZWNgLgotCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhpcyBmdW5jdGlvbiBpcyBub3cgYmFzZWQgb24gOmZ1bmM6YHNpZ25hdHVyZWAsIGJ1dCBzdGlsbCBpZ25vcmVzCiAgICAgICBgYF9fd3JhcHBlZF9fYGAgYXR0cmlidXRlcyBhbmQgaW5jbHVkZXMgdGhlIGFscmVhZHkgYm91bmQgZmlyc3QKQEAgLTg4NCw3ICs4NzMsNyBAQAogLi4gZnVuY3Rpb246OiBmb3JtYXRhcmdzcGVjKGFyZ3NbLCB2YXJhcmdzLCB2YXJrdywgZGVmYXVsdHMsIGt3b25seWFyZ3MsIGt3b25seWRlZmF1bHRzLCBhbm5vdGF0aW9uc1ssIGZvcm1hdGFyZywgZm9ybWF0dmFyYXJncywgZm9ybWF0dmFya3csIGZvcm1hdHZhbHVlLCBmb3JtYXRyZXR1cm5zLCBmb3JtYXRhbm5vdGF0aW9uc11dKQogCiAgICBGb3JtYXQgYSBwcmV0dHkgYXJndW1lbnQgc3BlYyBmcm9tIHRoZSB2YWx1ZXMgcmV0dXJuZWQgYnkKLSAgIDpmdW5jOmBnZXRhcmdzcGVjYCBvciA6ZnVuYzpgZ2V0ZnVsbGFyZ3NwZWNgLgorICAgOmZ1bmM6YGdldGZ1bGxhcmdzcGVjYC4KIAogICAgVGhlIGZpcnN0IHNldmVuIGFyZ3VtZW50cyBhcmUgKGBgYXJnc2BgLCBgYHZhcmFyZ3NgYCwgYGB2YXJrd2BgLAogICAgYGBkZWZhdWx0c2BgLCBgYGt3b25seWFyZ3NgYCwgYGBrd29ubHlkZWZhdWx0c2BgLCBgYGFubm90YXRpb25zYGApLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdCBiL0RvYy9saWJyYXJ5L2l0ZXJ0b29scy5yc3QKaW5kZXggZGZjMWRkYy4uYjBkMGE4YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvaXRlcnRvb2xzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9pdGVydG9vbHMucnN0CkBAIC01OTEsNyArNTkxLDEzIEBACiAKIC4uIGZ1bmN0aW9uOjogdGVlKGl0ZXJhYmxlLCBuPTIpCiAKLSAgIFJldHVybiAqbiogaW5kZXBlbmRlbnQgaXRlcmF0b3JzIGZyb20gYSBzaW5nbGUgaXRlcmFibGUuICBSb3VnaGx5IGVxdWl2YWxlbnQgdG86OgorICAgUmV0dXJuICpuKiBpbmRlcGVuZGVudCBpdGVyYXRvcnMgZnJvbSBhIHNpbmdsZSBpdGVyYWJsZS4KKworICAgVGhlIGZvbGxvd2luZyBQeXRob24gY29kZSBoZWxwcyBleHBsYWluIHdoYXQgKnRlZSogZG9lcyAoYWx0aG91Z2ggdGhlIGFjdHVhbAorICAgaW1wbGVtZW50YXRpb24gaXMgbW9yZSBjb21wbGV4IGFuZCB1c2VzIG9ubHkgYSBzaW5nbGUgdW5kZXJseWluZworICAgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZSkuCisKKyAgIFJvdWdobHkgZXF1aXZhbGVudCB0bzo6CiAKICAgICAgICAgZGVmIHRlZShpdGVyYWJsZSwgbj0yKToKICAgICAgICAgICAgIGl0ID0gaXRlcihpdGVyYWJsZSkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2pzb24ucnN0IGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKaW5kZXggZWU1ODI2Ni4uMzAyZjgzOSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvanNvbi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvanNvbi5yc3QKQEAgLTEyNiw3ICsxMjYsNyBAQAogQmFzaWMgVXNhZ2UKIC0tLS0tLS0tLS0tCiAKLS4uIGZ1bmN0aW9uOjogZHVtcChvYmosIGZwLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKKy4uIGZ1bmN0aW9uOjogZHVtcChvYmosIGZwLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIFwKICAgICAgICAgICAgICAgICAgICBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICBzb3J0X2tleXM9RmFsc2UsICoqa3cpCkBAIC0xODcsOCArMTg3LDExIEBACiAgICA6bWV0aDpgZGVmYXVsdGAgbWV0aG9kIHRvIHNlcmlhbGl6ZSBhZGRpdGlvbmFsIHR5cGVzKSwgc3BlY2lmeSBpdCB3aXRoIHRoZQogICAgKmNscyoga3dhcmc7IG90aGVyd2lzZSA6Y2xhc3M6YEpTT05FbmNvZGVyYCBpcyB1c2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KIAotLi4gZnVuY3Rpb246OiBkdW1wcyhvYmosIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwgXAorCisuLiBmdW5jdGlvbjo6IGR1bXBzKG9iaiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBcCiAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgXAogICAgICAgICAgICAgICAgICAgICBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUsIFwKICAgICAgICAgICAgICAgICAgICAgc29ydF9rZXlzPUZhbHNlLCAqKmt3KQpAQCAtMjEyLDcgKzIxNSw3IEBACiAgICAgICB0aGUgb3JpZ2luYWwgb25lLiBUaGF0IGlzLCBgYGxvYWRzKGR1bXBzKHgpKSAhPSB4YGAgaWYgeCBoYXMgbm9uLXN0cmluZwogICAgICAga2V5cy4KIAotLi4gZnVuY3Rpb246OiBsb2FkKGZwLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisuLiBmdW5jdGlvbjo6IGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLCBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdykKIAogICAgRGVzZXJpYWxpemUgKmZwKiAoYSBgYC5yZWFkKClgYC1zdXBwb3J0aW5nIDp0ZXJtOmBmaWxlLWxpa2Ugb2JqZWN0YAogICAgY29udGFpbmluZyBhIEpTT04gZG9jdW1lbnQpIHRvIGEgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzIDpyZWY6YGNvbnZlcnNpb24KQEAgLTI2MCwxMCArMjYzLDE0IEBACiAgICBJZiB0aGUgZGF0YSBiZWluZyBkZXNlcmlhbGl6ZWQgaXMgbm90IGEgdmFsaWQgSlNPTiBkb2N1bWVudCwgYQogICAgOmV4YzpgSlNPTkRlY29kZUVycm9yYCB3aWxsIGJlIHJhaXNlZC4KIAotLi4gZnVuY3Rpb246OiBsb2FkcyhzLCBlbmNvZGluZz1Ob25lLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIG9iamVjdF9wYWlyc19ob29rPU5vbmUsICoqa3cpCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIG9wdGlvbmFsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KIAotICAgRGVzZXJpYWxpemUgKnMqIChhIDpjbGFzczpgc3RyYCBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYQotICAgUHl0aG9uIG9iamVjdCB1c2luZyB0aGlzIDpyZWY6YGNvbnZlcnNpb24gdGFibGUgPGpzb24tdG8tcHktdGFibGU+YC4KKy4uIGZ1bmN0aW9uOjogbG9hZHMocywgKiwgZW5jb2Rpbmc9Tm9uZSwgY2xzPU5vbmUsIG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lLCAqKmt3KQorCisgICBEZXNlcmlhbGl6ZSAqcyogKGEgOmNsYXNzOmBzdHJgLCA6Y2xhc3M6YGJ5dGVzYCBvciA6Y2xhc3M6YGJ5dGVhcnJheWAKKyAgIGluc3RhbmNlIGNvbnRhaW5pbmcgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QgdXNpbmcgdGhpcworICAgOnJlZjpgY29udmVyc2lvbiB0YWJsZSA8anNvbi10by1weS10YWJsZT5gLgogCiAgICBUaGUgb3RoZXIgYXJndW1lbnRzIGhhdmUgdGhlIHNhbWUgbWVhbmluZyBhcyBpbiA6ZnVuYzpgbG9hZGAsIGV4Y2VwdAogICAgKmVuY29kaW5nKiB3aGljaCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgpAQCAtMjc0LDcgKzI4MSw3IEBACiBFbmNvZGVycyBhbmQgRGVjb2RlcnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCi0uLiBjbGFzczo6IEpTT05EZWNvZGVyKG9iamVjdF9ob29rPU5vbmUsIHBhcnNlX2Zsb2F0PU5vbmUsIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSkKKy4uIGNsYXNzOjogSlNPTkRlY29kZXIoKiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwgcGFyc2VfaW50PU5vbmUsIHBhcnNlX2NvbnN0YW50PU5vbmUsIHN0cmljdD1UcnVlLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQogCiAgICBTaW1wbGUgSlNPTiBkZWNvZGVyLgogCkBAIC0zNDQsNiArMzUxLDkgQEAKICAgIElmIHRoZSBkYXRhIGJlaW5nIGRlc2VyaWFsaXplZCBpcyBub3QgYSB2YWxpZCBKU09OIGRvY3VtZW50LCBhCiAgICA6ZXhjOmBKU09ORGVjb2RlRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKwogICAgLi4gbWV0aG9kOjogZGVjb2RlKHMpCiAKICAgICAgIFJldHVybiB0aGUgUHl0aG9uIHJlcHJlc2VudGF0aW9uIG9mICpzKiAoYSA6Y2xhc3M6YHN0cmAgaW5zdGFuY2UKQEAgLTM2Miw3ICszNzIsNyBAQAogICAgICAgZXh0cmFuZW91cyBkYXRhIGF0IHRoZSBlbmQuCiAKIAotLi4gY2xhc3M6OiBKU09ORW5jb2Rlcihza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsIGFsbG93X25hbj1UcnVlLCBzb3J0X2tleXM9RmFsc2UsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSkKKy4uIGNsYXNzOjogSlNPTkVuY29kZXIoKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLCBhbGxvd19uYW49VHJ1ZSwgc29ydF9rZXlzPUZhbHNlLCBpbmRlbnQ9Tm9uZSwgc2VwYXJhdG9ycz1Ob25lLCBkZWZhdWx0PU5vbmUpCiAKICAgIEV4dGVuc2libGUgSlNPTiBlbmNvZGVyIGZvciBQeXRob24gZGF0YSBzdHJ1Y3R1cmVzLgogCkBAIC00NDIsNiArNDUyLDkgQEAKICAgIHRoZSBvYmplY3Qgb3IgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgLiAgSWYgbm90IHNwZWNpZmllZCwgOmV4YzpgVHlwZUVycm9yYAogICAgaXMgcmFpc2VkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWxsIHBhcmFtZXRlcnMgYXJlIG5vdyA6cmVmOmBrZXl3b3JkLW9ubHkgPGtleXdvcmQtb25seV9wYXJhbWV0ZXI+YC4KKwogCiAgICAuLiBtZXRob2Q6OiBkZWZhdWx0KG8pCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2xvZ2dpbmcuaGFuZGxlcnMucnN0IGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKaW5kZXggOTE2YjcwMi4uOGUyN2FkMCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbG9nZ2luZy5oYW5kbGVycy5yc3QKQEAgLTg0LDYgKzg0LDkgQEAKICAgIHdpdGggdGhhdCBlbmNvZGluZy4gIElmICpkZWxheSogaXMgdHJ1ZSwgdGhlbiBmaWxlIG9wZW5pbmcgaXMgZGVmZXJyZWQgdW50aWwgdGhlCiAgICBmaXJzdCBjYWxsIHRvIDptZXRoOmBlbWl0YC4gQnkgZGVmYXVsdCwgdGhlIGZpbGUgZ3Jvd3MgaW5kZWZpbml0ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KIAogICAgLi4gbWV0aG9kOjogY2xvc2UoKQogCkBAIC0xNjAsMTIgKzE2MywyMyBAQAogICAgd2l0aCB0aGF0IGVuY29kaW5nLiAgSWYgKmRlbGF5KiBpcyB0cnVlLCB0aGVuIGZpbGUgb3BlbmluZyBpcyBkZWZlcnJlZCB1bnRpbCB0aGUKICAgIGZpcnN0IGNhbGwgdG8gOm1ldGg6YGVtaXRgLiAgQnkgZGVmYXVsdCwgdGhlIGZpbGUgZ3Jvd3MgaW5kZWZpbml0ZWx5LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQXMgd2VsbCBhcyBzdHJpbmcgdmFsdWVzLCA6Y2xhc3M6YH5wYXRobGliLlBhdGhgIG9iamVjdHMgYXJlIGFsc28gYWNjZXB0ZWQKKyAgICAgIGZvciB0aGUgKmZpbGVuYW1lKiBhcmd1bWVudC4KKworICAgLi4gbWV0aG9kOjogcmVvcGVuSWZOZWVkZWQoKQorCisgICAgICBDaGVja3MgdG8gc2VlIGlmIHRoZSBmaWxlIGhhcyBjaGFuZ2VkLiAgSWYgaXQgaGFzLCB0aGUgZXhpc3Rpbmcgc3RyZWFtIGlzCisgICAgICBmbHVzaGVkIGFuZCBjbG9zZWQgYW5kIHRoZSBmaWxlIG9wZW5lZCBhZ2FpbiwgdHlwaWNhbGx5IGFzIGEgcHJlY3Vyc29yIHRvCisgICAgICBvdXRwdXR0aW5nIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAKICAgIC4uIG1ldGhvZDo6IGVtaXQocmVjb3JkKQogCi0gICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGJ1dCBmaXJzdCBjaGVja3MgdG8gc2VlIGlmIHRoZSBmaWxlIGhhcwotICAgICAgY2hhbmdlZC4gIElmIGl0IGhhcywgdGhlIGV4aXN0aW5nIHN0cmVhbSBpcyBmbHVzaGVkIGFuZCBjbG9zZWQgYW5kIHRoZQotICAgICAgZmlsZSBvcGVuZWQgYWdhaW4sIGJlZm9yZSBvdXRwdXR0aW5nIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUuCisgICAgICBPdXRwdXRzIHRoZSByZWNvcmQgdG8gdGhlIGZpbGUsIGJ1dCBmaXJzdCBjYWxscyA6bWV0aDpgcmVvcGVuSWZOZWVkZWRgIHRvCisgICAgICByZW9wZW4gdGhlIGZpbGUgaWYgaXQgaGFzIGNoYW5nZWQuCiAKIC4uIF9iYXNlLXJvdGF0aW5nLWhhbmRsZXI6CiAKQEAgLTI3OSw2ICsyOTMsOSBAQAogICAgOmZpbGU6YGFwcC5sb2cuMmAsIGV0Yy4gIGV4aXN0LCB0aGVuIHRoZXkgYXJlIHJlbmFtZWQgdG8gOmZpbGU6YGFwcC5sb2cuMmAsCiAgICA6ZmlsZTpgYXBwLmxvZy4zYCBldGMuICByZXNwZWN0aXZlbHkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgogCiAgICAuLiBtZXRob2Q6OiBkb1JvbGxvdmVyKCkKIApAQCAtMzEwLDIxICszMjcsMjQgQEAKICAgIFlvdSBjYW4gdXNlIHRoZSAqd2hlbiogdG8gc3BlY2lmeSB0aGUgdHlwZSBvZiAqaW50ZXJ2YWwqLiBUaGUgbGlzdCBvZiBwb3NzaWJsZQogICAgdmFsdWVzIGlzIGJlbG93LiAgTm90ZSB0aGF0IHRoZXkgYXJlIG5vdCBjYXNlIHNlbnNpdGl2ZS4KIAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IFZhbHVlICAgICAgICAgIHwgVHlwZSBvZiBpbnRlcnZhbCAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09KwotICAgfCBgYCdTJ2BgICAgICAgICB8IFNlY29uZHMgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnTSdgYCAgICAgICAgfCBNaW51dGVzICAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ0gnYGAgICAgICAgIHwgSG91cnMgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYCdEJ2BgICAgICAgICB8IERheXMgICAgICAgICAgICAgICAgICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgYGAnVzAnLSdXNidgYCAgfCBXZWVrZGF5ICgwPU1vbmRheSkgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IGBgJ21pZG5pZ2h0J2BgIHwgUm9sbCBvdmVyIGF0IG1pZG5pZ2h0IHwKLSAgICstLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBWYWx1ZSAgICAgICAgICB8IFR5cGUgb2YgaW50ZXJ2YWwgICAgICAgICAgIHwgSWYvaG93ICphdFRpbWUqIGlzIHVzZWQgfAorICAgKz09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09KworICAgfCBgYCdTJ2BgICAgICAgICB8IFNlY29uZHMgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdNJ2BgICAgICAgICB8IE1pbnV0ZXMgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdIJ2BgICAgICAgICB8IEhvdXJzICAgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdEJ2BgICAgICAgICB8IERheXMgICAgICAgICAgICAgICAgICAgICAgIHwgSWdub3JlZCAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdXMCctJ1c2J2BgICB8IFdlZWtkYXkgKDA9TW9uZGF5KSAgICAgICAgIHwgVXNlZCB0byBjb21wdXRlIGluaXRpYWwgfAorICAgfCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcm9sbG92ZXIgdGltZSAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBgYCdtaWRuaWdodCdgYCB8IFJvbGwgb3ZlciBhdCBtaWRuaWdodCwgaWYgIHwgVXNlZCB0byBjb21wdXRlIGluaXRpYWwgfAorICAgfCAgICAgICAgICAgICAgICB8ICphdFRpbWUqIG5vdCBzcGVjaWZpZWQsICAgIHwgcm9sbG92ZXIgdGltZSAgICAgICAgICAgfAorICAgfCAgICAgICAgICAgICAgICB8IGVsc2UgYXQgdGltZSAqYXRUaW1lKiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAgICBXaGVuIHVzaW5nIHdlZWtkYXktYmFzZWQgcm90YXRpb24sIHNwZWNpZnkgJ1cwJyBmb3IgTW9uZGF5LCAnVzEnIGZvcgogICAgVHVlc2RheSwgYW5kIHNvIG9uIHVwIHRvICdXNicgZm9yIFN1bmRheS4gSW4gdGhpcyBjYXNlLCB0aGUgdmFsdWUgcGFzc2VkIGZvcgpAQCAtMzUyLDE2ICszNzIsMzUgQEAKIAogICAgSWYgKmF0VGltZSogaXMgbm90IGBgTm9uZWBgLCBpdCBtdXN0IGJlIGEgYGBkYXRldGltZS50aW1lYGAgaW5zdGFuY2Ugd2hpY2gKICAgIHNwZWNpZmllcyB0aGUgdGltZSBvZiBkYXkgd2hlbiByb2xsb3ZlciBvY2N1cnMsIGZvciB0aGUgY2FzZXMgd2hlcmUgcm9sbG92ZXIKLSAgIGlzIHNldCB0byBoYXBwZW4gImF0IG1pZG5pZ2h0IiBvciAib24gYSBwYXJ0aWN1bGFyIHdlZWtkYXkiLgorICAgaXMgc2V0IHRvIGhhcHBlbiAiYXQgbWlkbmlnaHQiIG9yICJvbiBhIHBhcnRpY3VsYXIgd2Vla2RheSIuIE5vdGUgdGhhdCBpbgorICAgdGhlc2UgY2FzZXMsIHRoZSAqYXRUaW1lKiB2YWx1ZSBpcyBlZmZlY3RpdmVseSB1c2VkIHRvIGNvbXB1dGUgdGhlICppbml0aWFsKgorICAgcm9sbG92ZXIsIGFuZCBzdWJzZXF1ZW50IHJvbGxvdmVycyB3b3VsZCBiZSBjYWxjdWxhdGVkIHZpYSB0aGUgbm9ybWFsCisgICBpbnRlcnZhbCBjYWxjdWxhdGlvbi4KKworICAgLi4gbm90ZTo6IENhbGN1bGF0aW9uIG9mIHRoZSBpbml0aWFsIHJvbGxvdmVyIHRpbWUgaXMgZG9uZSB3aGVuIHRoZSBoYW5kbGVyCisgICAgICBpcyBpbml0aWFsaXNlZC4gQ2FsY3VsYXRpb24gb2Ygc3Vic2VxdWVudCByb2xsb3ZlciB0aW1lcyBpcyBkb25lIG9ubHkKKyAgICAgIHdoZW4gcm9sbG92ZXIgb2NjdXJzLCBhbmQgcm9sbG92ZXIgb2NjdXJzIG9ubHkgd2hlbiBlbWl0dGluZyBvdXRwdXQuIElmCisgICAgICB0aGlzIGlzIG5vdCBrZXB0IGluIG1pbmQsIGl0IG1pZ2h0IGxlYWQgdG8gc29tZSBjb25mdXNpb24uIEZvciBleGFtcGxlLAorICAgICAgaWYgYW4gaW50ZXJ2YWwgb2YgImV2ZXJ5IG1pbnV0ZSIgaXMgc2V0LCB0aGF0IGRvZXMgbm90IG1lYW4geW91IHdpbGwKKyAgICAgIGFsd2F5cyBzZWUgbG9nIGZpbGVzIHdpdGggdGltZXMgKGluIHRoZSBmaWxlbmFtZSkgc2VwYXJhdGVkIGJ5IGEgbWludXRlOworICAgICAgaWYsIGR1cmluZyBhcHBsaWNhdGlvbiBleGVjdXRpb24sIGxvZ2dpbmcgb3V0cHV0IGlzIGdlbmVyYXRlZCBtb3JlCisgICAgICBmcmVxdWVudGx5IHRoYW4gb25jZSBhIG1pbnV0ZSwgKnRoZW4qIHlvdSBjYW4gZXhwZWN0IHRvIHNlZSBsb2cgZmlsZXMKKyAgICAgIHdpdGggdGltZXMgc2VwYXJhdGVkIGJ5IGEgbWludXRlLiBJZiwgb24gdGhlIG90aGVyIGhhbmQsIGxvZ2dpbmcgbWVzc2FnZXMKKyAgICAgIGFyZSBvbmx5IG91dHB1dCBvbmNlIGV2ZXJ5IGZpdmUgbWludXRlcyAoc2F5KSwgdGhlbiB0aGVyZSB3aWxsIGJlIGdhcHMgaW4KKyAgICAgIHRoZSBmaWxlIHRpbWVzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIG1pbnV0ZXMgd2hlcmUgbm8gb3V0cHV0IChhbmQgaGVuY2Ugbm8KKyAgICAgIHJvbGxvdmVyKSBvY2N1cnJlZC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgICphdFRpbWUqIHBhcmFtZXRlciB3YXMgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBcyB3ZWxsIGFzIHN0cmluZyB2YWx1ZXMsIDpjbGFzczpgfnBhdGhsaWIuUGF0aGAgb2JqZWN0cyBhcmUgYWxzbyBhY2NlcHRlZAorICAgICAgZm9yIHRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50LgorCiAgICAuLiBtZXRob2Q6OiBkb1JvbGxvdmVyKCkKIAogICAgICAgRG9lcyBhIHJvbGxvdmVyLCBhcyBkZXNjcmliZWQgYWJvdmUuCiAKLQogICAgLi4gbWV0aG9kOjogZW1pdChyZWNvcmQpCiAKICAgICAgIE91dHB1dHMgdGhlIHJlY29yZCB0byB0aGUgZmlsZSwgY2F0ZXJpbmcgZm9yIHJvbGxvdmVyIGFzIGRlc2NyaWJlZCBhYm92ZS4KQEAgLTc5OCwxMiArODM3LDE4IEBACiAgICAgICBvdmVycmlkZGVuIHRvIGltcGxlbWVudCBjdXN0b20gZmx1c2hpbmcgc3RyYXRlZ2llcy4KIAogCi0uLiBjbGFzczo6IE1lbW9yeUhhbmRsZXIoY2FwYWNpdHksIGZsdXNoTGV2ZWw9RVJST1IsIHRhcmdldD1Ob25lKQorLi4gY2xhc3M6OiBNZW1vcnlIYW5kbGVyKGNhcGFjaXR5LCBmbHVzaExldmVsPUVSUk9SLCB0YXJnZXQ9Tm9uZSwgZmx1c2hPbkNsb3NlPVRydWUpCiAKICAgIFJldHVybnMgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIDpjbGFzczpgTWVtb3J5SGFuZGxlcmAgY2xhc3MuIFRoZSBpbnN0YW5jZSBpcwogICAgaW5pdGlhbGl6ZWQgd2l0aCBhIGJ1ZmZlciBzaXplIG9mICpjYXBhY2l0eSouIElmICpmbHVzaExldmVsKiBpcyBub3Qgc3BlY2lmaWVkLAogICAgOmNvbnN0OmBFUlJPUmAgaXMgdXNlZC4gSWYgbm8gKnRhcmdldCogaXMgc3BlY2lmaWVkLCB0aGUgdGFyZ2V0IHdpbGwgbmVlZCB0byBiZQotICAgc2V0IHVzaW5nIDptZXRoOmBzZXRUYXJnZXRgIGJlZm9yZSB0aGlzIGhhbmRsZXIgZG9lcyBhbnl0aGluZyB1c2VmdWwuCisgICBzZXQgdXNpbmcgOm1ldGg6YHNldFRhcmdldGAgYmVmb3JlIHRoaXMgaGFuZGxlciBkb2VzIGFueXRoaW5nIHVzZWZ1bC4gSWYKKyAgICpmbHVzaE9uQ2xvc2UqIGlzIHNwZWNpZmllZCBhcyBgYEZhbHNlYGAsIHRoZW4gdGhlIGJ1ZmZlciBpcyAqbm90KiBmbHVzaGVkIHdoZW4KKyAgIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4gSWYgbm90IHNwZWNpZmllZCBvciBzcGVjaWZpZWQgYXMgYGBUcnVlYGAsIHRoZSBwcmV2aW91cworICAgYmVoYXZpb3VyIG9mIGZsdXNoaW5nIHRoZSBidWZmZXIgd2lsbCBvY2N1ciB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqZmx1c2hPbkNsb3NlKiBwYXJhbWV0ZXIgd2FzIGFkZGVkLgogCiAKICAgIC4uIG1ldGhvZDo6IGNsb3NlKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L2x6bWEucnN0IGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKaW5kZXggNjFiM2JhMy4uNWVkYjIzZCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbHptYS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbHptYS5yc3QKQEAgLTM5LDggKzM5LDkgQEAKICAgIG9iamVjdGAuCiAKICAgIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IGNhbiBiZSBlaXRoZXIgYW4gYWN0dWFsIGZpbGUgbmFtZSAoZ2l2ZW4gYXMgYQotICAgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMKLSAgIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgIDpjbGFzczpgc3RyYCwgOmNsYXNzOmBieXRlc2Agb3IgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIG9iamVjdCksIGluCisgICB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0CisgICB0byByZWFkIGZyb20gb3Igd3JpdGUgdG8uCiAKICAgIFRoZSAqbW9kZSogYXJndW1lbnQgY2FuIGJlIGFueSBvZiBgYCJyImBgLCBgYCJyYiJgYCwgYGAidyJgYCwgYGAid2IiYGAsCiAgICBgYCJ4ImBgLCBgYCJ4YiJgYCwgYGAiYSJgYCBvciBgYCJhYiJgYCBmb3IgYmluYXJ5IG1vZGUsIG9yIGBgInJ0ImBgLApAQCAtNjQsNiArNjUsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYCJ4ImBgLCBgYCJ4YiJgYCBhbmQgYGAieHQiYGAgbW9kZXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGNsYXNzOjogTFpNQUZpbGUoZmlsZW5hbWU9Tm9uZSwgbW9kZT0iciIsIFwqLCBmb3JtYXQ9Tm9uZSwgY2hlY2s9LTEsIHByZXNldD1Ob25lLCBmaWx0ZXJzPU5vbmUpCiAKQEAgLTcxLDkgKzc1LDEwIEBACiAKICAgIEFuIDpjbGFzczpgTFpNQUZpbGVgIGNhbiB3cmFwIGFuIGFscmVhZHktb3BlbiA6dGVybTpgZmlsZSBvYmplY3RgLCBvciBvcGVyYXRlCiAgICBkaXJlY3RseSBvbiBhIG5hbWVkIGZpbGUuIFRoZSAqZmlsZW5hbWUqIGFyZ3VtZW50IHNwZWNpZmllcyBlaXRoZXIgdGhlIGZpbGUKLSAgIG9iamVjdCB0byB3cmFwLCBvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBvcGVuIChhcyBhIDpjbGFzczpgc3RyYCBvcgotICAgOmNsYXNzOmBieXRlc2Agb2JqZWN0KS4gV2hlbiB3cmFwcGluZyBhbiBleGlzdGluZyBmaWxlIG9iamVjdCwgdGhlIHdyYXBwZWQKLSAgIGZpbGUgd2lsbCBub3QgYmUgY2xvc2VkIHdoZW4gdGhlIDpjbGFzczpgTFpNQUZpbGVgIGlzIGNsb3NlZC4KKyAgIG9iamVjdCB0byB3cmFwLCBvciB0aGUgbmFtZSBvZiB0aGUgZmlsZSB0byBvcGVuIChhcyBhIDpjbGFzczpgc3RyYCwKKyAgIDpjbGFzczpgYnl0ZXNgIG9yIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBvYmplY3QpLiBXaGVuIHdyYXBwaW5nIGFuCisgICBleGlzdGluZyBmaWxlIG9iamVjdCwgdGhlIHdyYXBwZWQgZmlsZSB3aWxsIG5vdCBiZSBjbG9zZWQgd2hlbiB0aGUKKyAgIDpjbGFzczpgTFpNQUZpbGVgIGlzIGNsb3NlZC4KIAogICAgVGhlICptb2RlKiBhcmd1bWVudCBjYW4gYmUgZWl0aGVyIGBgInIiYGAgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCBgYCJ3ImBgIGZvcgogICAgb3ZlcndyaXRpbmcsIGBgIngiYGAgZm9yIGV4Y2x1c2l2ZSBjcmVhdGlvbiwgb3IgYGAiYSJgYCBmb3IgYXBwZW5kaW5nLiBUaGVzZQpAQCAtMTE4LDYgKzEyMyw5IEBACiAgICAgICBUaGUgOm1ldGg6YH5pby5CdWZmZXJlZElPQmFzZS5yZWFkYCBtZXRob2Qgbm93IGFjY2VwdHMgYW4gYXJndW1lbnQgb2YKICAgICAgIGBgTm9uZWBgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiBDb21wcmVzc2luZyBhbmQgZGVjb21wcmVzc2luZyBkYXRhIGluIG1lbW9yeQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L21hdGgucnN0IGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKaW5kZXggM2ZkZWExOC4uZGEyYjhjYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvbWF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbWF0aC5yc3QKQEAgLTQyNiw2ICs0MjYsMTUgQEAKIAogICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCBlID0gMi43MTgyODEuLi4sIHRvIGF2YWlsYWJsZSBwcmVjaXNpb24uCiAKKy4uIGRhdGE6OiB0YXUKKworICAgVGhlIG1hdGhlbWF0aWNhbCBjb25zdGFudCDPhCA9IDYuMjgzMTg1Li4uLCB0byBhdmFpbGFibGUgcHJlY2lzaW9uLgorICAgVGF1IGlzIGEgY2lyY2xlIGNvbnN0YW50IGVxdWFsIHRvIDLPgCwgdGhlIHJhdGlvIG9mIGEgY2lyY2xlJ3MgY2lyY3VtZmVyZW5jZSB0bworICAgaXRzIHJhZGl1cy4gVG8gbGVhcm4gbW9yZSBhYm91dCBUYXUsIGNoZWNrIG91dCBWaSBIYXJ0J3MgdmlkZW8gYFBpIGlzIChzdGlsbCkKKyAgIFdyb25nIDxodHRwczovL3d3dy55b3V0dWJlLmNvbS93YXRjaD92PWpHN3ZoTU1YYWdRPmBfLCBhbmQgc3RhcnQgY2VsZWJyYXRpbmcKKyAgIGBUYXUgZGF5IDxodHRwOi8vdGF1ZGF5LmNvbS8+YF8gYnkgZWF0aW5nIHR3aWNlIGFzIG11Y2ggcGllIQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogLi4gZGF0YTo6IGluZgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9tbWFwLnJzdCBiL0RvYy9saWJyYXJ5L21tYXAucnN0CmluZGV4IDhmNTM4MzMuLmM1NDRjODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L21tYXAucnN0CisrKyBiL0RvYy9saWJyYXJ5L21tYXAucnN0CkBAIC0yNjQsMTMgKzI2NCwxOCBAQAogICAgLi4gbWV0aG9kOjogd3JpdGUoYnl0ZXMpCiAKICAgICAgIFdyaXRlIHRoZSBieXRlcyBpbiAqYnl0ZXMqIGludG8gbWVtb3J5IGF0IHRoZSBjdXJyZW50IHBvc2l0aW9uIG9mIHRoZQotICAgICAgZmlsZSBwb2ludGVyOyB0aGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZSBieXRlcyB0aGF0Ci0gICAgICB3ZXJlIHdyaXR0ZW4uIElmIHRoZSBtbWFwIHdhcyBjcmVhdGVkIHdpdGggOmNvbnN0OmBBQ0NFU1NfUkVBRGAsIHRoZW4KKyAgICAgIGZpbGUgcG9pbnRlciBhbmQgcmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiAobmV2ZXIgbGVzcyB0aGFuCisgICAgICBgYGxlbihieXRlcylgYCwgc2luY2UgaWYgdGhlIHdyaXRlIGZhaWxzLCBhIDpleGM6YFZhbHVlRXJyb3JgIHdpbGwgYmUKKyAgICAgIHJhaXNlZCkuICBUaGUgZmlsZSBwb3NpdGlvbiBpcyB1cGRhdGVkIHRvIHBvaW50IGFmdGVyIHRoZSBieXRlcyB0aGF0CisgICAgICB3ZXJlIHdyaXR0ZW4uICBJZiB0aGUgbW1hcCB3YXMgY3JlYXRlZCB3aXRoIDpjb25zdDpgQUNDRVNTX1JFQURgLCB0aGVuCiAgICAgICB3cml0aW5nIHRvIGl0IHdpbGwgcmFpc2UgYSA6ZXhjOmBUeXBlRXJyb3JgIGV4Y2VwdGlvbi4KIAogICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgVGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGlzIG5vdyByZXR1cm5lZC4KKwogCiAgICAuLiBtZXRob2Q6OiB3cml0ZV9ieXRlKGJ5dGUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QgYi9Eb2MvbGlicmFyeS9tdWx0aXByb2Nlc3NpbmcucnN0CmluZGV4IGE1OTEyZjcuLjc5YzU2ODcgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L211bHRpcHJvY2Vzc2luZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvbXVsdGlwcm9jZXNzaW5nLnJzdApAQCAtNjUwLDggKzY1MCw5IEBACiBGb3IgcGFzc2luZyBtZXNzYWdlcyBvbmUgY2FuIHVzZSA6ZnVuYzpgUGlwZWAgKGZvciBhIGNvbm5lY3Rpb24gYmV0d2VlbiB0d28KIHByb2Nlc3Nlcykgb3IgYSBxdWV1ZSAod2hpY2ggYWxsb3dzIG11bHRpcGxlIHByb2R1Y2VycyBhbmQgY29uc3VtZXJzKS4KIAotVGhlIDpjbGFzczpgUXVldWVgLCA6Y2xhc3M6YFNpbXBsZVF1ZXVlYCBhbmQgOmNsYXNzOmBKb2luYWJsZVF1ZXVlYCB0eXBlcyBhcmUgbXVsdGktcHJvZHVjZXIsCi1tdWx0aS1jb25zdW1lciBGSUZPIHF1ZXVlcyBtb2RlbGxlZCBvbiB0aGUgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MgaW4gdGhlCitUaGUgOmNsYXNzOmBRdWV1ZWAsIDpjbGFzczpgU2ltcGxlUXVldWVgIGFuZCA6Y2xhc3M6YEpvaW5hYmxlUXVldWVgIHR5cGVzCithcmUgbXVsdGktcHJvZHVjZXIsIG11bHRpLWNvbnN1bWVyIDphYmJyOmBGSUZPIChmaXJzdC1pbiwgZmlyc3Qtb3V0KWAKK3F1ZXVlcyBtb2RlbGxlZCBvbiB0aGUgOmNsYXNzOmBxdWV1ZS5RdWV1ZWAgY2xhc3MgaW4gdGhlCiBzdGFuZGFyZCBsaWJyYXJ5LiAgVGhleSBkaWZmZXIgaW4gdGhhdCA6Y2xhc3M6YFF1ZXVlYCBsYWNrcyB0aGUKIDptZXRoOmB+cXVldWUuUXVldWUudGFza19kb25lYCBhbmQgOm1ldGg6YH5xdWV1ZS5RdWV1ZS5qb2luYCBtZXRob2RzIGludHJvZHVjZWQKIGludG8gUHl0aG9uIDIuNSdzIDpjbGFzczpgcXVldWUuUXVldWVgIGNsYXNzLgpAQCAtODg5LDggKzg5MCwxMyBAQAogCiAuLiBmdW5jdGlvbjo6IGNwdV9jb3VudCgpCiAKLSAgIFJldHVybiB0aGUgbnVtYmVyIG9mIENQVXMgaW4gdGhlIHN5c3RlbS4gIE1heSByYWlzZQotICAgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuCisgICBSZXR1cm4gdGhlIG51bWJlciBvZiBDUFVzIGluIHRoZSBzeXN0ZW0uCisKKyAgIFRoaXMgbnVtYmVyIGlzIG5vdCBlcXVpdmFsZW50IHRvIHRoZSBudW1iZXIgb2YgQ1BVcyB0aGUgY3VycmVudCBwcm9jZXNzIGNhbgorICAgdXNlLiAgVGhlIG51bWJlciBvZiB1c2FibGUgQ1BVcyBjYW4gYmUgb2J0YWluZWQgd2l0aAorICAgYGBsZW4ob3Muc2NoZWRfZ2V0YWZmaW5pdHkoMCkpYGAKKworICAgTWF5IHJhaXNlIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgLgogCiAgICAuLiBzZWVhbHNvOjoKICAgICAgIDpmdW5jOmBvcy5jcHVfY291bnRgCkBAIC0xNjc5LDcgKzE2ODUsOSBAQAogICAgb2YgcHJvY2Vzc2VzLiAgT2JqZWN0cyBvZiB0aGlzIHR5cGUgYXJlIHJldHVybmVkIGJ5CiAgICA6ZnVuYzpgbXVsdGlwcm9jZXNzaW5nLk1hbmFnZXJgLgogCi0gICBJdCBhbHNvIHN1cHBvcnRzIGNyZWF0aW9uIG9mIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgorICAgSXRzIG1ldGhvZHMgY3JlYXRlIGFuZCByZXR1cm4gOnJlZjpgbXVsdGlwcm9jZXNzaW5nLXByb3h5X29iamVjdHNgIGZvciBhCisgICBudW1iZXIgb2YgY29tbW9ubHkgdXNlZCBkYXRhIHR5cGVzIHRvIGJlIHN5bmNocm9uaXplZCBhY3Jvc3MgcHJvY2Vzc2VzLgorICAgVGhpcyBub3RhYmx5IGluY2x1ZGVzIHNoYXJlZCBsaXN0cyBhbmQgZGljdGlvbmFyaWVzLgogCiAgICAuLiBtZXRob2Q6OiBCYXJyaWVyKHBhcnRpZXNbLCBhY3Rpb25bLCB0aW1lb3V0XV0pCiAKQEAgLTE3NDIsMzEgKzE3NTAsMTcgQEAKICAgICAgICAgICAgICAgIGRpY3QobWFwcGluZykKICAgICAgICAgICAgICAgIGRpY3Qoc2VxdWVuY2UpCiAKLSAgICAgIENyZWF0ZSBhIHNoYXJlZCBgYGRpY3RgYCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YGRpY3RgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgogCiAgICAuLiBtZXRob2Q6OiBsaXN0KCkKICAgICAgICAgICAgICAgIGxpc3Qoc2VxdWVuY2UpCiAKLSAgICAgIENyZWF0ZSBhIHNoYXJlZCBgYGxpc3RgYCBvYmplY3QgYW5kIHJldHVybiBhIHByb3h5IGZvciBpdC4KKyAgICAgIENyZWF0ZSBhIHNoYXJlZCA6Y2xhc3M6YGxpc3RgIG9iamVjdCBhbmQgcmV0dXJuIGEgcHJveHkgZm9yIGl0LgogCi0gICAuLiBub3RlOjoKLQotICAgICAgTW9kaWZpY2F0aW9ucyB0byBtdXRhYmxlIHZhbHVlcyBvciBpdGVtcyBpbiBkaWN0IGFuZCBsaXN0IHByb3hpZXMgd2lsbCBub3QKLSAgICAgIGJlIHByb3BhZ2F0ZWQgdGhyb3VnaCB0aGUgbWFuYWdlciwgYmVjYXVzZSB0aGUgcHJveHkgaGFzIG5vIHdheSBvZiBrbm93aW5nCi0gICAgICB3aGVuIGl0cyB2YWx1ZXMgb3IgaXRlbXMgYXJlIG1vZGlmaWVkLiAgVG8gbW9kaWZ5IHN1Y2ggYW4gaXRlbSwgeW91IGNhbgotICAgICAgcmUtYXNzaWduIHRoZSBtb2RpZmllZCBvYmplY3QgdG8gdGhlIGNvbnRhaW5lciBwcm94eTo6Ci0KLSAgICAgICAgICMgY3JlYXRlIGEgbGlzdCBwcm94eSBhbmQgYXBwZW5kIGEgbXV0YWJsZSBvYmplY3QgKGEgZGljdGlvbmFyeSkKLSAgICAgICAgIGxwcm94eSA9IG1hbmFnZXIubGlzdCgpCi0gICAgICAgICBscHJveHkuYXBwZW5kKHt9KQotICAgICAgICAgIyBub3cgbXV0YXRlIHRoZSBkaWN0aW9uYXJ5Ci0gICAgICAgICBkID0gbHByb3h5WzBdCi0gICAgICAgICBkWydhJ10gPSAxCi0gICAgICAgICBkWydiJ10gPSAyCi0gICAgICAgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBjaGFuZ2VzIHRvIGQgYXJlIG5vdCB5ZXQgc3luY2VkLCBidXQgYnkKLSAgICAgICAgICMgcmVhc3NpZ25pbmcgdGhlIGRpY3Rpb25hcnksIHRoZSBwcm94eSBpcyBub3RpZmllZCBvZiB0aGUgY2hhbmdlCi0gICAgICAgICBscHJveHlbMF0gPSBkCi0KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTaGFyZWQgb2JqZWN0cyBhcmUgY2FwYWJsZSBvZiBiZWluZyBuZXN0ZWQuICBGb3IgZXhhbXBsZSwgYSBzaGFyZWQKKyAgICAgIGNvbnRhaW5lciBvYmplY3Qgc3VjaCBhcyBhIHNoYXJlZCBsaXN0IGNhbiBjb250YWluIG90aGVyIHNoYXJlZCBvYmplY3RzCisgICAgICB3aGljaCB3aWxsIGFsbCBiZSBtYW5hZ2VkIGFuZCBzeW5jaHJvbml6ZWQgYnkgdGhlIDpjbGFzczpgU3luY01hbmFnZXJgLgogCiAuLiBjbGFzczo6IE5hbWVzcGFjZQogCkBAIC0xODc4LDYgKzE4NzIsOCBAQAogICAgID4+PiBzID0gbS5nZXRfc2VydmVyKCkKICAgICA+Pj4gcy5zZXJ2ZV9mb3JldmVyKCkKIAorLi4gX211bHRpcHJvY2Vzc2luZy1wcm94eV9vYmplY3RzOgorCiBQcm94eSBPYmplY3RzCiB+fn5+fn5+fn5+fn5+CiAKQEAgLTE4ODcsOCArMTg4Myw3IEBACiAKIEEgcHJveHkgb2JqZWN0IGhhcyBtZXRob2RzIHdoaWNoIGludm9rZSBjb3JyZXNwb25kaW5nIG1ldGhvZHMgb2YgaXRzIHJlZmVyZW50CiAoYWx0aG91Z2ggbm90IGV2ZXJ5IG1ldGhvZCBvZiB0aGUgcmVmZXJlbnQgd2lsbCBuZWNlc3NhcmlseSBiZSBhdmFpbGFibGUgdGhyb3VnaAotdGhlIHByb3h5KS4gIEEgcHJveHkgY2FuIHVzdWFsbHkgYmUgdXNlZCBpbiBtb3N0IG9mIHRoZSBzYW1lIHdheXMgdGhhdCBpdHMKLXJlZmVyZW50IGNhbjoKK3RoZSBwcm94eSkuICBJbiB0aGlzIHdheSwgYSBwcm94eSBjYW4gYmUgdXNlZCBqdXN0IGxpa2UgaXRzIHJlZmVyZW50IGNhbjoKIAogLi4gZG9jdGVzdDo6CiAKQEAgLTE5MDksOSArMTkwNCw5IEBACiB0aGUgcHJveHkuCiAKIEFuIGltcG9ydGFudCBmZWF0dXJlIG9mIHByb3h5IG9iamVjdHMgaXMgdGhhdCB0aGV5IGFyZSBwaWNrbGFibGUgc28gdGhleSBjYW4gYmUKLXBhc3NlZCBiZXR3ZWVuIHByb2Nlc3Nlcy4gIE5vdGUsIGhvd2V2ZXIsIHRoYXQgaWYgYSBwcm94eSBpcyBzZW50IHRvIHRoZQotY29ycmVzcG9uZGluZyBtYW5hZ2VyJ3MgcHJvY2VzcyB0aGVuIHVucGlja2xpbmcgaXQgd2lsbCBwcm9kdWNlIHRoZSByZWZlcmVudAotaXRzZWxmLiAgVGhpcyBtZWFucywgZm9yIGV4YW1wbGUsIHRoYXQgb25lIHNoYXJlZCBvYmplY3QgY2FuIGNvbnRhaW4gYSBzZWNvbmQ6CitwYXNzZWQgYmV0d2VlbiBwcm9jZXNzZXMuICBBcyBzdWNoLCBhIHJlZmVyZW50IGNhbiBjb250YWluCis6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AuICBUaGlzIHBlcm1pdHMgbmVzdGluZyBvZiB0aGVzZSBtYW5hZ2VkCitsaXN0cywgZGljdHMsIGFuZCBvdGhlciA6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2A6CiAKIC4uIGRvY3Rlc3Q6OgogCkBAIC0xOTE5LDEwICsxOTE0LDQ2IEBACiAgICA+Pj4gYiA9IG1hbmFnZXIubGlzdCgpCiAgICA+Pj4gYS5hcHBlbmQoYikgICAgICAgICAjIHJlZmVyZW50IG9mIGEgbm93IGNvbnRhaW5zIHJlZmVyZW50IG9mIGIKICAgID4+PiBwcmludChhLCBiKQotICAgW1tdXSBbXQorICAgWzxMaXN0UHJveHkgb2JqZWN0LCB0eXBlaWQgJ2xpc3QnIGF0IC4uLj5dIFtdCiAgICA+Pj4gYi5hcHBlbmQoJ2hlbGxvJykKLSAgID4+PiBwcmludChhLCBiKQotICAgW1snaGVsbG8nXV0gWydoZWxsbyddCisgICA+Pj4gcHJpbnQoYVswXSwgYikKKyAgIFsnaGVsbG8nXSBbJ2hlbGxvJ10KKworU2ltaWxhcmx5LCBkaWN0IGFuZCBsaXN0IHByb3hpZXMgbWF5IGJlIG5lc3RlZCBpbnNpZGUgb25lIGFub3RoZXI6OgorCisgICA+Pj4gbF9vdXRlciA9IG1hbmFnZXIubGlzdChbIG1hbmFnZXIuZGljdCgpIGZvciBpIGluIHJhbmdlKDIpIF0pCisgICA+Pj4gZF9maXJzdF9pbm5lciA9IGxfb3V0ZXJbMF0KKyAgID4+PiBkX2ZpcnN0X2lubmVyWydhJ10gPSAxCisgICA+Pj4gZF9maXJzdF9pbm5lclsnYiddID0gMgorICAgPj4+IGxfb3V0ZXJbMV1bJ2MnXSA9IDMKKyAgID4+PiBsX291dGVyWzFdWyd6J10gPSAyNgorICAgPj4+IHByaW50KGxfb3V0ZXJbMF0pCisgICB7J2EnOiAxLCAnYic6IDJ9CisgICA+Pj4gcHJpbnQobF9vdXRlclsxXSkKKyAgIHsnYyc6IDMsICd6JzogMjZ9CisKK0lmIHN0YW5kYXJkIChub24tcHJveHkpIDpjbGFzczpgbGlzdGAgb3IgOmNsYXNzOmBkaWN0YCBvYmplY3RzIGFyZSBjb250YWluZWQKK2luIGEgcmVmZXJlbnQsIG1vZGlmaWNhdGlvbnMgdG8gdGhvc2UgbXV0YWJsZSB2YWx1ZXMgd2lsbCBub3QgYmUgcHJvcGFnYXRlZAordGhyb3VnaCB0aGUgbWFuYWdlciBiZWNhdXNlIHRoZSBwcm94eSBoYXMgbm8gd2F5IG9mIGtub3dpbmcgd2hlbiB0aGUgdmFsdWVzCitjb250YWluZWQgd2l0aGluIGFyZSBtb2RpZmllZC4gIEhvd2V2ZXIsIHN0b3JpbmcgYSB2YWx1ZSBpbiBhIGNvbnRhaW5lciBwcm94eQorKHdoaWNoIHRyaWdnZXJzIGEgYGBfX3NldGl0ZW1fX2BgIG9uIHRoZSBwcm94eSBvYmplY3QpIGRvZXMgcHJvcGFnYXRlIHRocm91Z2gKK3RoZSBtYW5hZ2VyIGFuZCBzbyB0byBlZmZlY3RpdmVseSBtb2RpZnkgc3VjaCBhbiBpdGVtLCBvbmUgY291bGQgcmUtYXNzaWduIHRoZQorbW9kaWZpZWQgdmFsdWUgdG8gdGhlIGNvbnRhaW5lciBwcm94eTo6CisKKyAgICMgY3JlYXRlIGEgbGlzdCBwcm94eSBhbmQgYXBwZW5kIGEgbXV0YWJsZSBvYmplY3QgKGEgZGljdGlvbmFyeSkKKyAgIGxwcm94eSA9IG1hbmFnZXIubGlzdCgpCisgICBscHJveHkuYXBwZW5kKHt9KQorICAgIyBub3cgbXV0YXRlIHRoZSBkaWN0aW9uYXJ5CisgICBkID0gbHByb3h5WzBdCisgICBkWydhJ10gPSAxCisgICBkWydiJ10gPSAyCisgICAjIGF0IHRoaXMgcG9pbnQsIHRoZSBjaGFuZ2VzIHRvIGQgYXJlIG5vdCB5ZXQgc3luY2VkLCBidXQgYnkKKyAgICMgdXBkYXRpbmcgdGhlIGRpY3Rpb25hcnksIHRoZSBwcm94eSBpcyBub3RpZmllZCBvZiB0aGUgY2hhbmdlCisgICBscHJveHlbMF0gPSBkCisKK1RoaXMgYXBwcm9hY2ggaXMgcGVyaGFwcyBsZXNzIGNvbnZlbmllbnQgdGhhbiBlbXBsb3lpbmcgbmVzdGVkCis6cmVmOmBtdWx0aXByb2Nlc3NpbmctcHJveHlfb2JqZWN0c2AgZm9yIG1vc3QgdXNlIGNhc2VzIGJ1dCBhbHNvCitkZW1vbnN0cmF0ZXMgYSBsZXZlbCBvZiBjb250cm9sIG92ZXIgdGhlIHN5bmNocm9uaXphdGlvbi4KIAogLi4gbm90ZTo6CiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L29zLnBhdGgucnN0IGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKaW5kZXggYmYwZGZhYy4uNDA2MDU0ZSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvb3MucGF0aC5yc3QKQEAgLTYxLDYgKzYxLDkgQEAKICAgIHBsYXRmb3JtcywgdGhpcyBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgdGhlIGZ1bmN0aW9uIDpmdW5jOmBub3JtcGF0aGAgYXMKICAgIGZvbGxvd3M6IGBgbm9ybXBhdGgoam9pbihvcy5nZXRjd2QoKSwgcGF0aCkpYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogYmFzZW5hbWUocGF0aCkKIApAQCAtNzEsNiArNzQsOSBAQAogICAgYGAnL2Zvby9iYXIvJ2BgIHJldHVybnMgYGAnYmFyJ2BgLCB0aGUgOmZ1bmM6YGJhc2VuYW1lYCBmdW5jdGlvbiByZXR1cm5zIGFuCiAgICBlbXB0eSBzdHJpbmcgKGBgJydgYCkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY29tbW9ucGF0aChwYXRocykKIApAQCAtODMsNiArODksOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSBzZXF1ZW5jZSBvZiA6dGVybTpgcGF0aC1saWtlIG9iamVjdHMgPHBhdGgtbGlrZSBvYmplY3Q+YC4KKwogCiAuLiBmdW5jdGlvbjo6IGNvbW1vbnByZWZpeChsaXN0KQogCkBAIC0xMDQsMTIgKzExMywxOCBAQAogICAgICAgICA+Pj4gb3MucGF0aC5jb21tb25wYXRoKFsnL3Vzci9saWInLCAnL3Vzci9sb2NhbC9saWInXSkKICAgICAgICAgJy91c3InCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZGlybmFtZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIGRpcmVjdG9yeSBuYW1lIG9mIHBhdGhuYW1lICpwYXRoKi4gIFRoaXMgaXMgdGhlIGZpcnN0IGVsZW1lbnQgb2YKICAgIHRoZSBwYWlyIHJldHVybmVkIGJ5IHBhc3NpbmcgKnBhdGgqIHRvIHRoZSBmdW5jdGlvbiA6ZnVuYzpgc3BsaXRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4aXN0cyhwYXRoKQogCkBAIC0xMjMsNiArMTM4LDkgQEAKICAgICAgICpwYXRoKiBjYW4gbm93IGJlIGFuIGludGVnZXI6IGBgVHJ1ZWBgIGlzIHJldHVybmVkIGlmIGl0IGlzIGFuCiAgICAgICAgb3BlbiBmaWxlIGRlc2NyaXB0b3IsIGBgRmFsc2VgYCBvdGhlcndpc2UuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbGV4aXN0cyhwYXRoKQogCkBAIC0xMzAsNiArMTQ4LDkgQEAKICAgIGJyb2tlbiBzeW1ib2xpYyBsaW5rcy4gICBFcXVpdmFsZW50IHRvIDpmdW5jOmBleGlzdHNgIG9uIHBsYXRmb3JtcyBsYWNraW5nCiAgICA6ZnVuYzpgb3MubHN0YXRgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGV4cGFuZHVzZXIocGF0aCkKIApAQCAtMTUxLDYgKzE3Miw5IEBACiAgICBJZiB0aGUgZXhwYW5zaW9uIGZhaWxzIG9yIGlmIHRoZSBwYXRoIGRvZXMgbm90IGJlZ2luIHdpdGggYSB0aWxkZSwgdGhlIHBhdGggaXMKICAgIHJldHVybmVkIHVuY2hhbmdlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBleHBhbmR2YXJzKHBhdGgpCiAKQEAgLTE2Miw2ICsxODYsOSBAQAogICAgT24gV2luZG93cywgYGAlbmFtZSVgYCBleHBhbnNpb25zIGFyZSBzdXBwb3J0ZWQgaW4gYWRkaXRpb24gdG8gYGAkbmFtZWBgIGFuZAogICAgYGAke25hbWV9YGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0YXRpbWUocGF0aCkKIApAQCAtMTgyLDYgKzIwOSw5IEBACiAgICBJZiA6ZnVuYzpgb3Muc3RhdF9mbG9hdF90aW1lc2AgcmV0dXJucyBgYFRydWVgYCwgdGhlIHJlc3VsdCBpcyBhIGZsb2F0aW5nIHBvaW50CiAgICBudW1iZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0Y3RpbWUocGF0aCkKIApAQCAtMTkxLDEyICsyMjEsMTggQEAKICAgIHRoZSAgOm1vZDpgdGltZWAgbW9kdWxlKS4gIFJhaXNlIDpleGM6YE9TRXJyb3JgIGlmIHRoZSBmaWxlIGRvZXMgbm90IGV4aXN0IG9yCiAgICBpcyBpbmFjY2Vzc2libGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0c2l6ZShwYXRoKQogCiAgICBSZXR1cm4gdGhlIHNpemUsIGluIGJ5dGVzLCBvZiAqcGF0aCouICBSYWlzZSA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgZmlsZSBkb2VzCiAgICBub3QgZXhpc3Qgb3IgaXMgaW5hY2Nlc3NpYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGlzYWJzKHBhdGgpCiAKQEAgLTIwNCwyNCArMjQwLDM2IEBACiAgICBiZWdpbnMgd2l0aCBhIHNsYXNoLCBvbiBXaW5kb3dzIHRoYXQgaXQgYmVnaW5zIHdpdGggYSAoYmFjaylzbGFzaCBhZnRlciBjaG9wcGluZwogICAgb2ZmIGEgcG90ZW50aWFsIGRyaXZlIGxldHRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2ZpbGUocGF0aCkKIAogICAgUmV0dXJuIGBgVHJ1ZWBgIGlmICpwYXRoKiBpcyBhbiBleGlzdGluZyByZWd1bGFyIGZpbGUuICBUaGlzIGZvbGxvd3Mgc3ltYm9saWMKICAgIGxpbmtzLCBzbyBib3RoIDpmdW5jOmBpc2xpbmtgIGFuZCA6ZnVuYzpgaXNmaWxlYCBjYW4gYmUgdHJ1ZSBmb3IgdGhlIHNhbWUgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBpc2RpcihwYXRoKQogCiAgICBSZXR1cm4gYGBUcnVlYGAgaWYgKnBhdGgqIGlzIGFuIGV4aXN0aW5nIGRpcmVjdG9yeS4gIFRoaXMgZm9sbG93cyBzeW1ib2xpYwogICAgbGlua3MsIHNvIGJvdGggOmZ1bmM6YGlzbGlua2AgYW5kIDpmdW5jOmBpc2RpcmAgY2FuIGJlIHRydWUgZm9yIHRoZSBzYW1lIHBhdGguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNsaW5rKHBhdGgpCiAKICAgIFJldHVybiBgYFRydWVgYCBpZiAqcGF0aCogcmVmZXJzIHRvIGEgZGlyZWN0b3J5IGVudHJ5IHRoYXQgaXMgYSBzeW1ib2xpYyBsaW5rLgogICAgQWx3YXlzIGBgRmFsc2VgYCBpZiBzeW1ib2xpYyBsaW5rcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgUHl0aG9uIHJ1bnRpbWUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogaXNtb3VudChwYXRoKQogCkBAIC0yMzcsNiArMjg1LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogICAgICAgU3VwcG9ydCBmb3IgZGV0ZWN0aW5nIG5vbi1yb290IG1vdW50IHBvaW50cyBvbiBXaW5kb3dzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGpvaW4ocGF0aCwgKnBhdGhzKQogCkBAIC0yNTUsMTMgKzMwNiwyMCBAQAogICAgYGBvcy5wYXRoLmpvaW4oImM6IiwgImZvbyIpYGAgcmVwcmVzZW50cyBhIHBhdGggcmVsYXRpdmUgdG8gdGhlIGN1cnJlbnQKICAgIGRpcmVjdG9yeSBvbiBkcml2ZSA6ZmlsZTpgQzpgICg6ZmlsZTpgYzpmb29gKSwgbm90IDpmaWxlOmBjOlxcZm9vYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpwYXRoKiBhbmQgKnBhdGhzKi4KKwogCiAuLiBmdW5jdGlvbjo6IG5vcm1jYXNlKHBhdGgpCiAKICAgIE5vcm1hbGl6ZSB0aGUgY2FzZSBvZiBhIHBhdGhuYW1lLiAgT24gVW5peCBhbmQgTWFjIE9TIFgsIHRoaXMgcmV0dXJucyB0aGUKICAgIHBhdGggdW5jaGFuZ2VkOyBvbiBjYXNlLWluc2Vuc2l0aXZlIGZpbGVzeXN0ZW1zLCBpdCBjb252ZXJ0cyB0aGUgcGF0aCB0bwogICAgbG93ZXJjYXNlLiAgT24gV2luZG93cywgaXQgYWxzbyBjb252ZXJ0cyBmb3J3YXJkIHNsYXNoZXMgdG8gYmFja3dhcmQgc2xhc2hlcy4KLSAgIFJhaXNlIGEgVHlwZUVycm9yIGlmIHRoZSB0eXBlIG9mICpwYXRoKiBpcyBub3QgYGBzdHJgYCBvciBgYGJ5dGVzYGAuCisgICBSYWlzZSBhIFR5cGVFcnJvciBpZiB0aGUgdHlwZSBvZiAqcGF0aCogaXMgbm90IGBgc3RyYGAgb3IgYGBieXRlc2BgIChkaXJlY3RseQorICAgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYCBpbnRlcmZhY2UpLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogCiAuLiBmdW5jdGlvbjo6IG5vcm1wYXRoKHBhdGgpCkBAIC0yNzIsMTIgKzMzMCwxOCBAQAogICAgdGhhdCBjb250YWlucyBzeW1ib2xpYyBsaW5rcy4gIE9uIFdpbmRvd3MsIGl0IGNvbnZlcnRzIGZvcndhcmQgc2xhc2hlcyB0bwogICAgYmFja3dhcmQgc2xhc2hlcy4gVG8gbm9ybWFsaXplIGNhc2UsIHVzZSA6ZnVuYzpgbm9ybWNhc2VgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlYWxwYXRoKHBhdGgpCiAKICAgIFJldHVybiB0aGUgY2Fub25pY2FsIHBhdGggb2YgdGhlIHNwZWNpZmllZCBmaWxlbmFtZSwgZWxpbWluYXRpbmcgYW55IHN5bWJvbGljCiAgICBsaW5rcyBlbmNvdW50ZXJlZCBpbiB0aGUgcGF0aCAoaWYgdGhleSBhcmUgc3VwcG9ydGVkIGJ5IHRoZSBvcGVyYXRpbmcgc3lzdGVtKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZWxwYXRoKHBhdGgsIHN0YXJ0PW9zLmN1cmRpcikKIApAQCAtMjkwLDYgKzM1NCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peCwgV2luZG93cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lZmlsZShwYXRoMSwgcGF0aDIpCiAKQEAgLTMwNSw2ICszNzIsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIFdpbmRvd3Mgbm93IHVzZXMgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gYXMgYWxsIG90aGVyIHBsYXRmb3Jtcy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lb3BlbmZpbGUoZnAxLCBmcDIpCiAKQEAgLTMxNSw2ICszODUsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzYW1lc3RhdChzdGF0MSwgc3RhdDIpCiAKQEAgLTMyOCw2ICs0MDEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIEFkZGVkIFdpbmRvd3Mgc3VwcG9ydC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBzcGxpdChwYXRoKQogCkBAIC0zNDEsNiArNDE3LDkgQEAKICAgIChidXQgdGhlIHN0cmluZ3MgbWF5IGRpZmZlcikuICBBbHNvIHNlZSB0aGUgZnVuY3Rpb25zIDpmdW5jOmBkaXJuYW1lYCBhbmQKICAgIDpmdW5jOmBiYXNlbmFtZWAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRkcml2ZShwYXRoKQogCkBAIC0zNTksNiArNDM4LDkgQEAKICAgIGFuZCBzaGFyZSwgdXAgdG8gYnV0IG5vdCBpbmNsdWRpbmcgdGhlIGZvdXJ0aCBzZXBhcmF0b3IuCiAgICBlLmcuIGBgc3BsaXRkcml2ZSgiLy9ob3N0L2NvbXB1dGVyL2RpciIpYGAgcmV0dXJucyBgYCgiLy9ob3N0L2NvbXB1dGVyIiwgIi9kaXIiKWBgCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXRleHQocGF0aCkKIApAQCAtMzY3LDYgKzQ0OSw5IEBACiAgICBwZXJpb2QuIExlYWRpbmcgcGVyaW9kcyBvbiB0aGUgYmFzZW5hbWUgYXJlICBpZ25vcmVkOyBgYHNwbGl0ZXh0KCcuY3NocmMnKWBgCiAgICByZXR1cm5zICBgYCgnLmNzaHJjJywgJycpYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc3BsaXR1bmMocGF0aCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvb3MucnN0IGIvRG9jL2xpYnJhcnkvb3MucnN0CmluZGV4IDMxMGNlMTguLjkyNWE3MjIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L29zLnJzdAorKysgYi9Eb2MvbGlicmFyeS9vcy5yc3QKQEAgLTU3LDcgKzU3LDcgQEAKIAogICAgVGhlIG5hbWUgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gZGVwZW5kZW50IG1vZHVsZSBpbXBvcnRlZC4gIFRoZSBmb2xsb3dpbmcKICAgIG5hbWVzIGhhdmUgY3VycmVudGx5IGJlZW4gcmVnaXN0ZXJlZDogYGAncG9zaXgnYGAsIGBgJ250J2BgLAotICAgYGAnY2UnYGAsIGBgJ2phdmEnYGAuCisgICBgYCdqYXZhJ2BgLgogCiAgICAuLiBzZWVhbHNvOjoKICAgICAgIDphdHRyOmBzeXMucGxhdGZvcm1gIGhhcyBhIGZpbmVyIGdyYW51bGFyaXR5LiAgOmZ1bmM6YG9zLnVuYW1lYCBnaXZlcwpAQCAtMTcxLDIzICsxNzEsNjAgQEAKIAogLi4gZnVuY3Rpb246OiBmc2VuY29kZShmaWxlbmFtZSkKIAotICAgRW5jb2RlICpmaWxlbmFtZSogdG8gdGhlIGZpbGVzeXN0ZW0gZW5jb2Rpbmcgd2l0aCBgYCdzdXJyb2dhdGVlc2NhcGUnYGAKLSAgIGVycm9yIGhhbmRsZXIsIG9yIGBgJ3N0cmljdCdgYCBvbiBXaW5kb3dzOyByZXR1cm4gOmNsYXNzOmBieXRlc2AgdW5jaGFuZ2VkLgorICAgRW5jb2RlIDp0ZXJtOmBwYXRoLWxpa2UgPHBhdGgtbGlrZSBvYmplY3Q+YCAqZmlsZW5hbWUqIHRvIHRoZSBmaWxlc3lzdGVtCisgICBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAgb24KKyAgIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YGJ5dGVzYCB1bmNoYW5nZWQuCiAKICAgIDpmdW5jOmBmc2RlY29kZWAgaXMgdGhlIHJldmVyc2UgZnVuY3Rpb24uCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydCBhZGRlZCB0byBhY2NlcHQgb2JqZWN0cyBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgCisgICAgICBpbnRlcmZhY2UuCisKIAogLi4gZnVuY3Rpb246OiBmc2RlY29kZShmaWxlbmFtZSkKIAotICAgRGVjb2RlICpmaWxlbmFtZSogZnJvbSB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYAotICAgZXJyb3IgaGFuZGxlciwgb3IgYGAnc3RyaWN0J2BgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YHN0cmAgdW5jaGFuZ2VkLgorICAgRGVjb2RlIHRoZSA6dGVybTpgcGF0aC1saWtlIDxwYXRoLWxpa2Ugb2JqZWN0PmAgKmZpbGVuYW1lKiBmcm9tIHRoZQorICAgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoIGBgJ3N1cnJvZ2F0ZWVzY2FwZSdgYCBlcnJvciBoYW5kbGVyLCBvciBgYCdzdHJpY3QnYGAKKyAgIG9uIFdpbmRvd3M7IHJldHVybiA6Y2xhc3M6YHN0cmAgdW5jaGFuZ2VkLgogCiAgICA6ZnVuYzpgZnNlbmNvZGVgIGlzIHRoZSByZXZlcnNlIGZ1bmN0aW9uLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjIKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFN1cHBvcnQgYWRkZWQgdG8gYWNjZXB0IG9iamVjdHMgaW1wbGVtZW50aW5nIHRoZSA6Y2xhc3M6YG9zLlBhdGhMaWtlYAorICAgICAgaW50ZXJmYWNlLgorCisKKy4uIGZ1bmN0aW9uOjogZnNwYXRoKHBhdGgpCisKKyAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcmVwcmVzZW50YXRpb24gb2YgdGhlIHBhdGguCisKKyAgIElmIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCBpcyBwYXNzZWQgaW4sIGl0IGlzIHJldHVybmVkIHVuY2hhbmdlZC4KKyAgIE90aGVyd2lzZSA6bWV0aDpgfm9zLlBhdGhMaWtlLl9fZnNwYXRoX19gIGlzIGNhbGxlZCBhbmQgaXRzIHZhbHVlIGlzCisgICByZXR1cm5lZCBhcyBsb25nIGFzIGl0IGlzIGEgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIG9iamVjdC4KKyAgIEluIGFsbCBvdGhlciBjYXNlcywgOmV4YzpgVHlwZUVycm9yYCBpcyByYWlzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKKy4uIGNsYXNzOjogUGF0aExpa2UKKworICAgQW4gOnRlcm06YGFic3RyYWN0IGJhc2UgY2xhc3NgIGZvciBvYmplY3RzIHJlcHJlc2VudGluZyBhIGZpbGUgc3lzdGVtIHBhdGgsCisgICBlLmcuIDpjbGFzczpgcGF0aGxpYi5QdXJlUGF0aGAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBhYnN0cmFjdG1ldGhvZDo6IF9fZnNwYXRoX18oKQorCisgICAgICBSZXR1cm4gdGhlIGZpbGUgc3lzdGVtIHBhdGggcmVwcmVzZW50YXRpb24gb2YgdGhlIG9iamVjdC4KKworICAgICAgVGhlIG1ldGhvZCBzaG91bGQgb25seSByZXR1cm4gYSA6Y2xhc3M6YHN0cmAgb3IgOmNsYXNzOmBieXRlc2Agb2JqZWN0LAorICAgICAgd2l0aCB0aGUgcHJlZmVyZW5jZSBiZWluZyBmb3IgOmNsYXNzOmBzdHJgLgorCiAKIC4uIGZ1bmN0aW9uOjogZ2V0ZW52KGtleSwgZGVmYXVsdD1Ob25lKQogCkBAIC04OTYsNiArOTMzLDkgQEAKICAgICAgIGV4Y2VwdGlvbiwgdGhlIGZ1bmN0aW9uIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4KICAgICAgIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogVGhlIGZvbGxvd2luZyBjb25zdGFudHMgYXJlIG9wdGlvbnMgZm9yIHRoZSAqZmxhZ3MqIHBhcmFtZXRlciB0byB0aGUKIDpmdW5jOmB+b3Mub3BlbmAgZnVuY3Rpb24uICBUaGV5IGNhbiBiZSBjb21iaW5lZCB1c2luZyB0aGUgYml0d2lzZSBPUiBvcGVyYXRvcgogYGB8YGAuICBTb21lIG9mIHRoZW0gYXJlIG5vdCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIEZvciBkZXNjcmlwdGlvbnMgb2YKQEAgLTEzOTIsNiArMTQzMiw5IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqLCAqZWZmZWN0aXZlX2lkcyosIGFuZCAqZm9sbG93X3N5bWxpbmtzKiBwYXJhbWV0ZXJzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBkYXRhOjogRl9PSwogICAgICAgICAgIFJfT0sKQEAgLTE0MTYsNiArMTQ1OSw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhIGZpbGUgZGVzY3JpcHRvcgogICAgICAgb24gc29tZSBwbGF0Zm9ybXMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogY2hmbGFncyhwYXRoLCBmbGFncywgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE0NDIsNiArMTQ4OCw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZm9sbG93X3N5bWxpbmtzKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaG1vZChwYXRoLCBtb2RlLCAqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTE0ODMsNiArMTUzMiw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nICpwYXRoKiBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciwKICAgICAgIGFuZCB0aGUgKmRpcl9mZCogYW5kICpmb2xsb3dfc3ltbGlua3MqIGFyZ3VtZW50cy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaG93bihwYXRoLCB1aWQsIGdpZCwgKiwgZGlyX2ZkPU5vbmUsIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0xNTAyLDYgKzE1NTQsOSBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLAogICAgICAgYW5kIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgU3VwcG9ydHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBjaHJvb3QocGF0aCkKIApAQCAtMTUwOSw2ICsxNTY0LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGZjaGRpcihmZCkKIApAQCAtMTUzNyw2ICsxNTk1LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxjaG1vZChwYXRoLCBtb2RlKQogCkBAIC0xNTQ3LDYgKzE2MDgsOCBAQAogCiAgICBBdmFpbGFiaWxpdHk6IFVuaXguCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgogCiAuLiBmdW5jdGlvbjo6IGxjaG93bihwYXRoLCB1aWQsIGdpZCkKIApAQCAtMTU1Niw2ICsxNjE5LDkgQEAKIAogICAgQXZhaWxhYmlsaXR5OiBVbml4LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IGxpbmsoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIApAQCAtMTU3Myw2ICsxNjM5LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgQWRkZWQgdGhlICpzcmNfZGlyX2ZkKiwgKmRzdF9kaXJfZmQqLCBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogbGlzdGRpcihwYXRoPScuJykKIApAQCAtMTU4MCw4ICsxNjQ5LDkgQEAKICAgICpwYXRoKi4gIFRoZSBsaXN0IGlzIGluIGFyYml0cmFyeSBvcmRlciwgYW5kIGRvZXMgbm90IGluY2x1ZGUgdGhlIHNwZWNpYWwKICAgIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgZXZlbiBpZiB0aGV5IGFyZSBwcmVzZW50IGluIHRoZSBkaXJlY3RvcnkuCiAKLSAgICpwYXRoKiBtYXkgYmUgZWl0aGVyIG9mIHR5cGUgYGBzdHJgYCBvciBvZiB0eXBlIGBgYnl0ZXNgYC4gIElmICpwYXRoKgotICAgaXMgb2YgdHlwZSBgYGJ5dGVzYGAsIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIG9mIHR5cGUgYGBieXRlc2BgOworICAgKnBhdGgqIG1heSBiZSBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4gIElmICpwYXRoKiBpcyBvZiB0eXBlIGBgYnl0ZXNgYAorICAgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKSwKKyAgIHRoZSBmaWxlbmFtZXMgcmV0dXJuZWQgd2lsbCBhbHNvIGJlIG9mIHR5cGUgYGBieXRlc2BgOwogICAgaW4gYWxsIG90aGVyIGNpcmN1bXN0YW5jZXMsIHRoZXkgd2lsbCBiZSBvZiB0eXBlIGBgc3RyYGAuCiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIGFsc28gc3VwcG9ydCA6cmVmOmBzcGVjaWZ5aW5nIGEgZmlsZSBkZXNjcmlwdG9yCkBAIC0xNjAyLDYgKzE2NzIsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogbHN0YXQocGF0aCwgXCosIGRpcl9mZD1Ob25lKQogCkBAIC0xNjI4LDYgKzE3MDEsOSBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjMKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgIGZvciAqc3JjKiBhbmQgKmRzdCouCisKIAogLi4gZnVuY3Rpb246OiBta2RpcihwYXRoLCBtb2RlPTBvNzc3LCAqLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMTY1Miw2ICsxNzI4LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIGFyZ3VtZW50LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IG1ha2VkaXJzKG5hbWUsIG1vZGU9MG83NzcsIGV4aXN0X29rPUZhbHNlKQogCkBAIC0xNjg1LDYgKzE3NjQsOSBAQAogICAgICAgbW9kZSBvZiB0aGUgZXhpc3RpbmcgZGlyZWN0b3J5LiBTaW5jZSB0aGlzIGJlaGF2aW9yIHdhcyBpbXBvc3NpYmxlIHRvCiAgICAgICBpbXBsZW1lbnQgc2FmZWx5LCBpdCB3YXMgcmVtb3ZlZCBpbiBQeXRob24gMy40LjEuIFNlZSA6aXNzdWU6YDIxMDgyYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBta2ZpZm8ocGF0aCwgbW9kZT0wbzY2NiwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE3MDUsNiArMTc4Nyw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBta25vZChwYXRoLCBtb2RlPTBvNjAwLCBkZXZpY2U9MCwgKiwgZGlyX2ZkPU5vbmUpCiAKQEAgLTE3MjQsNiArMTgwOSw5IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBhcmd1bWVudC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBtYWpvcihkZXZpY2UpCiAKQEAgLTE3NjIsNiArMTg1MCw5IEBACiAKICAgIEF2YWlsYWJpbGl0eTogVW5peC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IHBhdGhjb25mX25hbWVzCiAKQEAgLTE3NzksOSArMTg3MCwxMCBAQAogICAgbWF5IGJlIGNvbnZlcnRlZCB0byBhbiBhYnNvbHV0ZSBwYXRobmFtZSB1c2luZwogICAgYGBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHBhdGgpLCByZXN1bHQpYGAuCiAKLSAgIElmIHRoZSAqcGF0aCogaXMgYSBzdHJpbmcgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYWxzbyBiZSBhIHN0cmluZyBvYmplY3QsCisgICBJZiB0aGUgKnBhdGgqIGlzIGEgc3RyaW5nIG9iamVjdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIGEKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSksIHRoZSByZXN1bHQgd2lsbCBhbHNvIGJlIGEgc3RyaW5nIG9iamVjdCwKICAgIGFuZCB0aGUgY2FsbCBtYXkgcmFpc2UgYSBVbmljb2RlRGVjb2RlRXJyb3IuIElmIHRoZSAqcGF0aCogaXMgYSBieXRlcwotICAgb2JqZWN0LCB0aGUgcmVzdWx0IHdpbGwgYmUgYSBieXRlcyBvYmplY3QuCisgICBvYmplY3QgKGRpcmVjdCBvciBpbmRpcmVjdGx5KSwgdGhlIHJlc3VsdCB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBhbHNvIHN1cHBvcnQgOnJlZjpgcGF0aHMgcmVsYXRpdmUgdG8gZGlyZWN0b3J5IGRlc2NyaXB0b3JzCiAgICA8ZGlyX2ZkPmAuCkBAIC0xNzk0LDYgKzE4ODYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xODEyLDYgKzE5MDcsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKmRpcl9mZCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVtb3ZlZGlycyhuYW1lKQogCkBAIC0xODI2LDYgKzE5MjQsOSBAQAogICAgdGhleSBhcmUgZW1wdHkuIFJhaXNlcyA6ZXhjOmBPU0Vycm9yYCBpZiB0aGUgbGVhZiBkaXJlY3RvcnkgY291bGQgbm90IGJlCiAgICBzdWNjZXNzZnVsbHkgcmVtb3ZlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiByZW5hbWUoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQogCkBAIC0xODQ1LDYgKzE5NDYsOSBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAgICAgICBUaGUgKnNyY19kaXJfZmQqIGFuZCAqZHN0X2Rpcl9mZCogYXJndW1lbnRzLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogcmVuYW1lcyhvbGQsIG5ldykKIApAQCAtMTg1OCw2ICsxOTYyLDkgQEAKICAgICAgIFRoaXMgZnVuY3Rpb24gY2FuIGZhaWwgd2l0aCB0aGUgbmV3IGRpcmVjdG9yeSBzdHJ1Y3R1cmUgbWFkZSBpZiB5b3UgbGFjawogICAgICAgcGVybWlzc2lvbnMgbmVlZGVkIHRvIHJlbW92ZSB0aGUgbGVhZiBkaXJlY3Rvcnkgb3IgZmlsZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpvbGQqIGFuZCAqbmV3Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJlcGxhY2Uoc3JjLCBkc3QsICosIHNyY19kaXJfZmQ9Tm9uZSwgZHN0X2Rpcl9mZD1Ob25lKQogCkBAIC0xODcyLDYgKzE5NzksOSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAgZm9yICpzcmMqIGFuZCAqZHN0Ki4KKwogCiAuLiBmdW5jdGlvbjo6IHJtZGlyKHBhdGgsICosIGRpcl9mZD1Ob25lKQogCkBAIC0xODg1LDM4ICsxOTk1LDU4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKICAgICAgIFRoZSAqZGlyX2ZkKiBwYXJhbWV0ZXIuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIC4uIGZ1bmN0aW9uOjogc2NhbmRpcihwYXRoPScuJykKIAotICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG9mIDpjbGFzczpgRGlyRW50cnlgIG9iamVjdHMgY29ycmVzcG9uZGluZyB0byB0aGUgZW50cmllcwotICAgaW4gdGhlIGRpcmVjdG9yeSBnaXZlbiBieSAqcGF0aCouIFRoZSBlbnRyaWVzIGFyZSB5aWVsZGVkIGluIGFyYml0cmFyeQotICAgb3JkZXIsIGFuZCB0aGUgc3BlY2lhbCBlbnRyaWVzIGBgJy4nYGAgYW5kIGBgJy4uJ2BgIGFyZSBub3QgaW5jbHVkZWQuCisgICBSZXR1cm4gYW4gaXRlcmF0b3Igb2YgOmNsYXNzOmBvcy5EaXJFbnRyeWAgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgZW50cmllcyBpbiB0aGUgZGlyZWN0b3J5IGdpdmVuIGJ5ICpwYXRoKi4gVGhlIGVudHJpZXMgYXJlIHlpZWxkZWQgaW4KKyAgIGFyYml0cmFyeSBvcmRlciwgYW5kIHRoZSBzcGVjaWFsIGVudHJpZXMgYGAnLidgYCBhbmQgYGAnLi4nYGAgYXJlIG5vdAorICAgaW5jbHVkZWQuCiAKICAgIFVzaW5nIDpmdW5jOmBzY2FuZGlyYCBpbnN0ZWFkIG9mIDpmdW5jOmBsaXN0ZGlyYCBjYW4gc2lnbmlmaWNhbnRseQogICAgaW5jcmVhc2UgdGhlIHBlcmZvcm1hbmNlIG9mIGNvZGUgdGhhdCBhbHNvIG5lZWRzIGZpbGUgdHlwZSBvciBmaWxlCi0gICBhdHRyaWJ1dGUgaW5mb3JtYXRpb24sIGJlY2F1c2UgOmNsYXNzOmBEaXJFbnRyeWAgb2JqZWN0cyBleHBvc2UgdGhpcworICAgYXR0cmlidXRlIGluZm9ybWF0aW9uLCBiZWNhdXNlIDpjbGFzczpgb3MuRGlyRW50cnlgIG9iamVjdHMgZXhwb3NlIHRoaXMKICAgIGluZm9ybWF0aW9uIGlmIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzIGl0IHdoZW4gc2Nhbm5pbmcgYSBkaXJlY3RvcnkuCi0gICBBbGwgOmNsYXNzOmBEaXJFbnRyeWAgbWV0aG9kcyBtYXkgcGVyZm9ybSBhIHN5c3RlbSBjYWxsLCBidXQKLSAgIDpmdW5jOmB+RGlyRW50cnkuaXNfZGlyYCBhbmQgOmZ1bmM6YH5EaXJFbnRyeS5pc19maWxlYCB1c3VhbGx5IG9ubHkKLSAgIHJlcXVpcmUgYSBzeXN0ZW0gY2FsbCBmb3Igc3ltYm9saWMgbGlua3M7IDpmdW5jOmBEaXJFbnRyeS5zdGF0YAorICAgQWxsIDpjbGFzczpgb3MuRGlyRW50cnlgIG1ldGhvZHMgbWF5IHBlcmZvcm0gYSBzeXN0ZW0gY2FsbCwgYnV0CisgICA6ZnVuYzpgfm9zLkRpckVudHJ5LmlzX2RpcmAgYW5kIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZmlsZWAgdXN1YWxseSBvbmx5CisgICByZXF1aXJlIGEgc3lzdGVtIGNhbGwgZm9yIHN5bWJvbGljIGxpbmtzOyA6ZnVuYzpgb3MuRGlyRW50cnkuc3RhdGAKICAgIGFsd2F5cyByZXF1aXJlcyBhIHN5c3RlbSBjYWxsIG9uIFVuaXggYnV0IG9ubHkgcmVxdWlyZXMgb25lIGZvcgogICAgc3ltYm9saWMgbGlua3Mgb24gV2luZG93cy4KIAotICAgT24gVW5peCwgKnBhdGgqIGNhbiBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYCBvciA6Y2xhc3M6YGJ5dGVzYCAodXNlCisgICBPbiBVbml4LCAqcGF0aCogY2FuIGJlIG9mIHR5cGUgOmNsYXNzOmBzdHJgIG9yIDpjbGFzczpgYnl0ZXNgIChlaXRoZXIKKyAgIGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlOyB1c2UKICAgIDpmdW5jOmB+b3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgfm9zLmZzZGVjb2RlYCB0byBlbmNvZGUgYW5kIGRlY29kZQogICAgOmNsYXNzOmBieXRlc2AgcGF0aHMpLiBPbiBXaW5kb3dzLCAqcGF0aCogbXVzdCBiZSBvZiB0eXBlIDpjbGFzczpgc3RyYC4KLSAgIE9uIGJvdGggc3lzdGVtcywgdGhlIHR5cGUgb2YgdGhlIDphdHRyOmB+RGlyRW50cnkubmFtZWAgYW5kCi0gICA6YXR0cjpgfkRpckVudHJ5LnBhdGhgIGF0dHJpYnV0ZXMgb2YgZWFjaCA6Y2xhc3M6YERpckVudHJ5YCB3aWxsIGJlIG9mCisgICBPbiBib3RoIHN5c3RlbXMsIHRoZSB0eXBlIG9mIHRoZSA6YXR0cjpgfm9zLkRpckVudHJ5Lm5hbWVgIGFuZAorICAgOmF0dHI6YH5vcy5EaXJFbnRyeS5wYXRoYCBhdHRyaWJ1dGVzIG9mIGVhY2ggOmNsYXNzOmBvcy5EaXJFbnRyeWAgd2lsbCBiZSBvZgogICAgdGhlIHNhbWUgdHlwZSBhcyAqcGF0aCouCiAKKyAgIFRoZSA6ZnVuYzpgc2NhbmRpcmAgaXRlcmF0b3Igc3VwcG9ydHMgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sCisgICBhbmQgaGFzIHRoZSBmb2xsb3dpbmcgbWV0aG9kOgorCisgICAuLiBtZXRob2Q6OiBzY2FuZGlyLmNsb3NlKCkKKworICAgICAgQ2xvc2UgdGhlIGl0ZXJhdG9yIGFuZCBmcmVlIGFjcXVpcmVkIHJlc291cmNlcy4KKworICAgICAgVGhpcyBpcyBjYWxsZWQgYXV0b21hdGljYWxseSB3aGVuIHRoZSBpdGVyYXRvciBpcyBleGhhdXN0ZWQgb3IgZ2FyYmFnZQorICAgICAgY29sbGVjdGVkLCBvciB3aGVuIGFuIGVycm9yIGhhcHBlbnMgZHVyaW5nIGl0ZXJhdGluZy4gIEhvd2V2ZXIgaXQKKyAgICAgIGlzIGFkdmlzYWJsZSB0byBjYWxsIGl0IGV4cGxpY2l0bHkgb3IgdXNlIHRoZSA6a2V5d29yZDpgd2l0aGAKKyAgICAgIHN0YXRlbWVudC4KKworICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKICAgIFRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzaG93cyBhIHNpbXBsZSB1c2Ugb2YgOmZ1bmM6YHNjYW5kaXJgIHRvIGRpc3BsYXkgYWxsCiAgICB0aGUgZmlsZXMgKGV4Y2x1ZGluZyBkaXJlY3RvcmllcykgaW4gdGhlIGdpdmVuICpwYXRoKiB0aGF0IGRvbid0IHN0YXJ0IHdpdGgKICAgIGBgJy4nYGAuIFRoZSBgYGVudHJ5LmlzX2ZpbGUoKWBgIGNhbGwgd2lsbCBnZW5lcmFsbHkgbm90IG1ha2UgYW4gYWRkaXRpb25hbAogICAgc3lzdGVtIGNhbGw6OgogCi0gICAgICBmb3IgZW50cnkgaW4gb3Muc2NhbmRpcihwYXRoKToKLSAgICAgICAgIGlmIG5vdCBlbnRyeS5uYW1lLnN0YXJ0c3dpdGgoJy4nKSBhbmQgZW50cnkuaXNfZmlsZSgpOgotICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCisgICAgICB3aXRoIG9zLnNjYW5kaXIocGF0aCkgYXMgaXQ6CisgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICBpZiBub3QgZW50cnkubmFtZS5zdGFydHN3aXRoKCcuJykgYW5kIGVudHJ5LmlzX2ZpbGUoKToKKyAgICAgICAgICAgICAgICAgIHByaW50KGVudHJ5Lm5hbWUpCiAKICAgIC4uIG5vdGU6OgogCkBAIC0xOTMyLDYgKzIwNjIsMTQgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy41CiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDp0ZXJtOmBjb250ZXh0IG1hbmFnZXJgIHByb3RvY29sIGFuZCB0aGUKKyAgICAgIDpmdW5jOmB+c2NhbmRpci5jbG9zZSgpYCBtZXRob2QuICBJZiBhIDpmdW5jOmBzY2FuZGlyYCBpdGVyYXRvciBpcyBuZWl0aGVyCisgICAgICBleGhhdXN0ZWQgbm9yIGV4cGxpY2l0bHkgY2xvc2VkIGEgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYCB3aWxsIGJlIGVtaXR0ZWQKKyAgICAgIGluIGl0cyBkZXN0cnVjdG9yLgorCisgICAgICBUaGUgZnVuY3Rpb24gYWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBjbGFzczo6IERpckVudHJ5CiAKQEAgLTE5NDAsMTkgKzIwNzgsMjIgQEAKIAogICAgOmZ1bmM6YHNjYW5kaXJgIHdpbGwgcHJvdmlkZSBhcyBtdWNoIG9mIHRoaXMgaW5mb3JtYXRpb24gYXMgcG9zc2libGUgd2l0aG91dAogICAgbWFraW5nIGFkZGl0aW9uYWwgc3lzdGVtIGNhbGxzLiBXaGVuIGEgYGBzdGF0KClgYCBvciBgYGxzdGF0KClgYCBzeXN0ZW0gY2FsbAotICAgaXMgbWFkZSwgdGhlIGBgRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgorICAgaXMgbWFkZSwgdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3Qgd2lsbCBjYWNoZSB0aGUgcmVzdWx0LgogCi0gICBgYERpckVudHJ5YGAgaW5zdGFuY2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gYmUgc3RvcmVkIGluIGxvbmctbGl2ZWQgZGF0YQorICAgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlcyBhcmUgbm90IGludGVuZGVkIHRvIGJlIHN0b3JlZCBpbiBsb25nLWxpdmVkIGRhdGEKICAgIHN0cnVjdHVyZXM7IGlmIHlvdSBrbm93IHRoZSBmaWxlIG1ldGFkYXRhIGhhcyBjaGFuZ2VkIG9yIGlmIGEgbG9uZyB0aW1lIGhhcwogICAgZWxhcHNlZCBzaW5jZSBjYWxsaW5nIDpmdW5jOmBzY2FuZGlyYCwgY2FsbCBgYG9zLnN0YXQoZW50cnkucGF0aClgYCB0byBmZXRjaAogICAgdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KIAotICAgQmVjYXVzZSB0aGUgYGBEaXJFbnRyeWBgIG1ldGhvZHMgY2FuIG1ha2Ugb3BlcmF0aW5nIHN5c3RlbSBjYWxscywgdGhleSBtYXkKKyAgIEJlY2F1c2UgdGhlIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGNhbiBtYWtlIG9wZXJhdGluZyBzeXN0ZW0gY2FsbHMsIHRoZXkgbWF5CiAgICBhbHNvIHJhaXNlIDpleGM6YE9TRXJyb3JgLiBJZiB5b3UgbmVlZCB2ZXJ5IGZpbmUtZ3JhaW5lZAogICAgY29udHJvbCBvdmVyIGVycm9ycywgeW91IGNhbiBjYXRjaCA6ZXhjOmBPU0Vycm9yYCB3aGVuIGNhbGxpbmcgb25lIG9mIHRoZQotICAgYGBEaXJFbnRyeWBgIG1ldGhvZHMgYW5kIGhhbmRsZSBhcyBhcHByb3ByaWF0ZS4KKyAgIGBgb3MuRGlyRW50cnlgYCBtZXRob2RzIGFuZCBoYW5kbGUgYXMgYXBwcm9wcmlhdGUuCiAKLSAgIEF0dHJpYnV0ZXMgYW5kIG1ldGhvZHMgb24gYSBgYERpckVudHJ5YGAgaW5zdGFuY2UgYXJlIGFzIGZvbGxvd3M6CisgICBUbyBiZSBkaXJlY3RseSB1c2FibGUgYXMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAsIGBgb3MuRGlyRW50cnlgYAorICAgaW1wbGVtZW50cyB0aGUgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlLgorCisgICBBdHRyaWJ1dGVzIGFuZCBtZXRob2RzIG9uIGEgYGBvcy5EaXJFbnRyeWBgIGluc3RhbmNlIGFyZSBhcyBmb2xsb3dzOgogCiAgICAuLiBhdHRyaWJ1dGU6OiBuYW1lCiAKQEAgLTE5NzgsOCArMjExOSw5IEBACiAKICAgICAgIFJldHVybiB0aGUgaW5vZGUgbnVtYmVyIG9mIHRoZSBlbnRyeS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIFVzZSBgYG9zLnN0YXQoZW50cnkucGF0aCwKLSAgICAgIGZvbGxvd19zeW1saW5rcz1GYWxzZSkuc3RfaW5vYGAgdG8gZmV0Y2ggdXAtdG8tZGF0ZSBpbmZvcm1hdGlvbi4KKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBVc2UKKyAgICAgIGBgb3Muc3RhdChlbnRyeS5wYXRoLCBmb2xsb3dfc3ltbGlua3M9RmFsc2UpLnN0X2lub2BgIHRvIGZldGNoIHVwLXRvLWRhdGUKKyAgICAgIGluZm9ybWF0aW9uLgogCiAgICAgICBPbiB0aGUgZmlyc3QsIHVuY2FjaGVkIGNhbGwsIGEgc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQgb24gV2luZG93cyBidXQKICAgICAgIG5vdCBvbiBVbml4LgpAQCAtMTk5NCw3ICsyMTM2LDcgQEAKICAgICAgIGlzIGEgZGlyZWN0b3J5ICh3aXRob3V0IGZvbGxvd2luZyBzeW1saW5rcyk7IHJldHVybiBgYEZhbHNlYGAgaWYgdGhlCiAgICAgICBlbnRyeSBpcyBhbnkgb3RoZXIga2luZCBvZiBmaWxlIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQogICAgICAgZm9yICpmb2xsb3dfc3ltbGlua3MqIGBgVHJ1ZWBgIGFuZCBgYEZhbHNlYGAuIENhbGwgOmZ1bmM6YG9zLnN0YXRgIGFsb25nCiAgICAgICB3aXRoIDpmdW5jOmBzdGF0LlNfSVNESVJgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKQEAgLTIwMTgsOCArMjE2MCw4IEBACiAgICAgICBpcyBhIGZpbGUgKHdpdGhvdXQgZm9sbG93aW5nIHN5bWxpbmtzKTsgcmV0dXJuIGBgRmFsc2VgYCBpZiB0aGUgZW50cnkgaXMKICAgICAgIGEgZGlyZWN0b3J5IG9yIG90aGVyIG5vbi1maWxlIGVudHJ5LCBvciBpZiBpdCBkb2Vzbid0IGV4aXN0IGFueW1vcmUuCiAKLSAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYERpckVudHJ5YGAgb2JqZWN0LiBDYWNoaW5nLCBzeXN0ZW0gY2FsbHMKLSAgICAgIG1hZGUsIGFuZCBleGNlcHRpb25zIHJhaXNlZCBhcmUgYXMgcGVyIDpmdW5jOmB+RGlyRW50cnkuaXNfZGlyYC4KKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBDYWNoaW5nLCBzeXN0ZW0gY2FsbHMKKyAgICAgIG1hZGUsIGFuZCBleGNlcHRpb25zIHJhaXNlZCBhcmUgYXMgcGVyIDpmdW5jOmB+b3MuRGlyRW50cnkuaXNfZGlyYC4KIAogICAgLi4gbWV0aG9kOjogaXNfc3ltbGluaygpCiAKQEAgLTIwMjcsNyArMjE2OSw3IEBACiAgICAgICByZXR1cm4gYGBGYWxzZWBgIGlmIHRoZSBlbnRyeSBwb2ludHMgdG8gYSBkaXJlY3Rvcnkgb3IgYW55IGtpbmQgb2YgZmlsZSwKICAgICAgIG9yIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYW55bW9yZS4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QuIENhbGwKKyAgICAgIFRoZSByZXN1bHQgaXMgY2FjaGVkIG9uIHRoZSBgYG9zLkRpckVudHJ5YGAgb2JqZWN0LiBDYWxsCiAgICAgICA6ZnVuYzpgb3MucGF0aC5pc2xpbmtgIHRvIGZldGNoIHVwLXRvLWRhdGUgaW5mb3JtYXRpb24uCiAKICAgICAgIE9uIHRoZSBmaXJzdCwgdW5jYWNoZWQgY2FsbCwgbm8gc3lzdGVtIGNhbGwgaXMgcmVxdWlyZWQgaW4gbW9zdCBjYXNlcy4KQEAgLTIwNTIsMjMgKzIxOTQsMjggQEAKICAgICAgIDpjbGFzczpgc3RhdF9yZXN1bHRgIGFyZSBhbHdheXMgc2V0IHRvIHplcm8uIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCiAgICAgICBnZXQgdGhlc2UgYXR0cmlidXRlcy4KIAotICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQorICAgICAgVGhlIHJlc3VsdCBpcyBjYWNoZWQgb24gdGhlIGBgb3MuRGlyRW50cnlgYCBvYmplY3QsIHdpdGggYSBzZXBhcmF0ZSBjYWNoZQogICAgICAgZm9yICpmb2xsb3dfc3ltbGlua3MqIGBgVHJ1ZWBgIGFuZCBgYEZhbHNlYGAuIENhbGwgOmZ1bmM6YG9zLnN0YXRgIHRvCiAgICAgICBmZXRjaCB1cC10by1kYXRlIGluZm9ybWF0aW9uLgogCiAgICBOb3RlIHRoYXQgdGhlcmUgaXMgYSBuaWNlIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gc2V2ZXJhbCBhdHRyaWJ1dGVzCi0gICBhbmQgbWV0aG9kcyBvZiBgYERpckVudHJ5YGAgYW5kIG9mIDpjbGFzczpgcGF0aGxpYi5QYXRoYC4gIEluCi0gICBwYXJ0aWN1bGFyLCB0aGUgYGBuYW1lYGAgYXR0cmlidXRlIGhhcyB0aGUgc2FtZSBtZWFuaW5nLCBhcyBkbyB0aGUKLSAgIGBgaXNfZGlyKClgYCwgYGBpc19maWxlKClgYCwgYGBpc19zeW1saW5rKClgYCBhbmQgYGBzdGF0KClgYCBtZXRob2RzLgorICAgYW5kIG1ldGhvZHMgb2YgYGBvcy5EaXJFbnRyeWBgIGFuZCBvZiA6Y2xhc3M6YHBhdGhsaWIuUGF0aGAuICBJbgorICAgcGFydGljdWxhciwgdGhlIGBgbmFtZWBgIGF0dHJpYnV0ZSBoYXMgdGhlIHNhbWUKKyAgIG1lYW5pbmcsIGFzIGRvIHRoZSBgYGlzX2RpcigpYGAsIGBgaXNfZmlsZSgpYGAsIGBgaXNfc3ltbGluaygpYGAKKyAgIGFuZCBgYHN0YXQoKWBgIG1ldGhvZHMuCiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIDpjbGFzczpgfm9zLlBhdGhMaWtlYCBpbnRlcmZhY2UuCisKIAogLi4gZnVuY3Rpb246OiBzdGF0KHBhdGgsIFwqLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIEdldCB0aGUgc3RhdHVzIG9mIGEgZmlsZSBvciBhIGZpbGUgZGVzY3JpcHRvci4gUGVyZm9ybSB0aGUgZXF1aXZhbGVudCBvZiBhCiAgICA6YzpmdW5jOmBzdGF0YCBzeXN0ZW0gY2FsbCBvbiB0aGUgZ2l2ZW4gcGF0aC4gKnBhdGgqIG1heSBiZSBzcGVjaWZpZWQgYXMKLSAgIGVpdGhlciBhIHN0cmluZyBvciBhcyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvci4gUmV0dXJuIGEgOmNsYXNzOmBzdGF0X3Jlc3VsdGAKKyAgIGVpdGhlciBhIHN0cmluZyAtLSBkaXJlY3RseSBvciBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgCisgICBpbnRlcmZhY2UgLS0gb3IgYXMgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IuIFJldHVybiBhIDpjbGFzczpgc3RhdF9yZXN1bHRgCiAgICBvYmplY3QuCiAKICAgIFRoaXMgZnVuY3Rpb24gbm9ybWFsbHkgZm9sbG93cyBzeW1saW5rczsgdG8gc3RhdCBhIHN5bWxpbmsgYWRkIHRoZSBhcmd1bWVudApAQCAtMjA5OCw2ICsyMjQ1LDkgQEAKICAgICAgIEFkZGVkIHRoZSAqZGlyX2ZkKiBhbmQgKmZvbGxvd19zeW1saW5rcyogYXJndW1lbnRzLCBzcGVjaWZ5aW5nIGEgZmlsZQogICAgICAgZGVzY3JpcHRvciBpbnN0ZWFkIG9mIGEgcGF0aC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gY2xhc3M6OiBzdGF0X3Jlc3VsdAogCkBAIC0yMzE5LDE5ICsyNDY5LDIyIEBACiAKICAgIFRoaXMgZnVuY3Rpb24gY2FuIHN1cHBvcnQgOnJlZjpgc3BlY2lmeWluZyBhIGZpbGUgZGVzY3JpcHRvciA8cGF0aF9mZD5gLgogCisgICBBdmFpbGFiaWxpdHk6IFVuaXguCisKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBUaGUgOmNvbnN0OmBTVF9SRE9OTFlgIGFuZCA6Y29uc3Q6YFNUX05PU1VJRGAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMworICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BlY2lmeWluZyBhbiBvcGVuIGZpbGUgZGVzY3JpcHRvciBmb3IgKnBhdGgqLgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgICAgVGhlIDpjb25zdDpgU1RfTk9ERVZgLCA6Y29uc3Q6YFNUX05PRVhFQ2AsIDpjb25zdDpgU1RfU1lOQ0hST05PVVNgLAogICAgICAgOmNvbnN0OmBTVF9NQU5ETE9DS2AsIDpjb25zdDpgU1RfV1JJVEVgLCA6Y29uc3Q6YFNUX0FQUEVORGAsCiAgICAgICA6Y29uc3Q6YFNUX0lNTVVUQUJMRWAsIDpjb25zdDpgU1RfTk9BVElNRWAsIDpjb25zdDpgU1RfTk9ESVJBVElNRWAsCiAgICAgICBhbmQgOmNvbnN0OmBTVF9SRUxBVElNRWAgY29uc3RhbnRzIHdlcmUgYWRkZWQuCiAKLSAgIEF2YWlsYWJpbGl0eTogVW5peC4KLQotICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCi0gICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCouCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KIAogCiAuLiBkYXRhOjogc3VwcG9ydHNfZGlyX2ZkCkBAIC0yNDUyLDYgKzI2MDUsOSBAQAogICAgICAgQWRkZWQgdGhlICpkaXJfZmQqIGFyZ3VtZW50LCBhbmQgbm93IGFsbG93ICp0YXJnZXRfaXNfZGlyZWN0b3J5KgogICAgICAgb24gbm9uLVdpbmRvd3MgcGxhdGZvcm1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnNyYyogYW5kICpkc3QqLgorCiAKIC4uIGZ1bmN0aW9uOjogc3luYygpCiAKQEAgLTI0NzYsNiArMjYzMiwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIFdpbmRvd3MKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKKwogLi4gZnVuY3Rpb246OiB1bmxpbmsocGF0aCwgKiwgZGlyX2ZkPU5vbmUpCiAKICAgIFJlbW92ZSAoZGVsZXRlKSB0aGUgZmlsZSAqcGF0aCouICBUaGlzIGZ1bmN0aW9uIGlzIHNlbWFudGljYWxseQpAQCAtMjQ4Niw2ICsyNjQ2LDkgQEAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogICAgICAgVGhlICpkaXJfZmQqIHBhcmFtZXRlci4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiB1dGltZShwYXRoLCB0aW1lcz1Ob25lLCAqWywgbnNdLCBkaXJfZmQ9Tm9uZSwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKQEAgLTI1MjMsNiArMjY4Niw5IEBACiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciBzcGVjaWZ5aW5nIGFuIG9wZW4gZmlsZSBkZXNjcmlwdG9yIGZvciAqcGF0aCosCiAgICAgICBhbmQgdGhlICpkaXJfZmQqLCAqZm9sbG93X3N5bWxpbmtzKiwgYW5kICpucyogcGFyYW1ldGVycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiB3YWxrKHRvcCwgdG9wZG93bj1UcnVlLCBvbmVycm9yPU5vbmUsIGZvbGxvd2xpbmtzPUZhbHNlKQogCkBAIC0yNjEzLDYgKzI3NzksOSBAQAogICAgICAgVGhpcyBmdW5jdGlvbiBub3cgY2FsbHMgOmZ1bmM6YG9zLnNjYW5kaXJgIGluc3RlYWQgb2YgOmZ1bmM6YG9zLmxpc3RkaXJgLAogICAgICAgbWFraW5nIGl0IGZhc3RlciBieSByZWR1Y2luZyB0aGUgbnVtYmVyIG9mIGNhbGxzIHRvIDpmdW5jOmBvcy5zdGF0YC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZnVuY3Rpb246OiBmd2Fsayh0b3A9Jy4nLCB0b3Bkb3duPVRydWUsIG9uZXJyb3I9Tm9uZSwgKiwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9Tm9uZSkKIApAQCAtMjY2OSw2ICsyODM4LDkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBY2NlcHRzIGEgOnRlcm06YHBhdGgtbGlrZSBvYmplY3RgLgorCiAKIExpbnV4IGV4dGVuZGVkIGF0dHJpYnV0ZXMKIH5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KQEAgLTI2ODAsMTIgKzI4NTIsMTYgQEAKIC4uIGZ1bmN0aW9uOjogZ2V0eGF0dHIocGF0aCwgYXR0cmlidXRlLCAqLCBmb2xsb3dfc3ltbGlua3M9VHJ1ZSkKIAogICAgUmV0dXJuIHRoZSB2YWx1ZSBvZiB0aGUgZXh0ZW5kZWQgZmlsZXN5c3RlbSBhdHRyaWJ1dGUgKmF0dHJpYnV0ZSogZm9yCi0gICAqcGF0aCouICphdHRyaWJ1dGUqIGNhbiBiZSBieXRlcyBvciBzdHIuIElmIGl0IGlzIHN0ciwgaXQgaXMgZW5jb2RlZAotICAgd2l0aCB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZy4KKyAgICpwYXRoKi4gKmF0dHJpYnV0ZSogY2FuIGJlIGJ5dGVzIG9yIHN0ciAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSB0aHJvdWdoIHRoZQorICAgOmNsYXNzOmBQYXRoTGlrZWAgaW50ZXJmYWNlKS4gSWYgaXQgaXMgc3RyLCBpdCBpcyBlbmNvZGVkIHdpdGggdGhlIGZpbGVzeXN0ZW0KKyAgIGVuY29kaW5nLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmcHIgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBmdW5jdGlvbjo6IGxpc3R4YXR0cihwYXRoPU5vbmUsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCkBAIC0yNjk3LDIxICsyODczLDI5IEBACiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogCiAuLiBmdW5jdGlvbjo6IHJlbW92ZXhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgKiwgZm9sbG93X3N5bWxpbmtzPVRydWUpCiAKICAgIFJlbW92ZXMgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIGZyb20gKnBhdGgqLgotICAgKmF0dHJpYnV0ZSogc2hvdWxkIGJlIGJ5dGVzIG9yIHN0ci4gSWYgaXQgaXMgYSBzdHJpbmcsIGl0IGlzIGVuY29kZWQKKyAgICphdHRyaWJ1dGUqIHNob3VsZCBiZSBieXRlcyBvciBzdHIgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgdGhyb3VnaCB0aGUKKyAgIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIGEgc3RyaW5nLCBpdCBpcyBlbmNvZGVkCiAgICB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLgogCiAgICBUaGlzIGZ1bmN0aW9uIGNhbiBzdXBwb3J0IDpyZWY6YHNwZWNpZnlpbmcgYSBmaWxlIGRlc2NyaXB0b3IgPHBhdGhfZmQ+YCBhbmQKICAgIDpyZWY6YG5vdCBmb2xsb3dpbmcgc3ltbGlua3MgPGZvbGxvd19zeW1saW5rcz5gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBmdW5jdGlvbjo6IHNldHhhdHRyKHBhdGgsIGF0dHJpYnV0ZSwgdmFsdWUsIGZsYWdzPTAsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKQogCiAgICBTZXQgdGhlIGV4dGVuZGVkIGZpbGVzeXN0ZW0gYXR0cmlidXRlICphdHRyaWJ1dGUqIG9uICpwYXRoKiB0byAqdmFsdWUqLgotICAgKmF0dHJpYnV0ZSogbXVzdCBiZSBhIGJ5dGVzIG9yIHN0ciB3aXRoIG5vIGVtYmVkZGVkIE5VTHMuIElmIGl0IGlzIGEgc3RyLAorICAgKmF0dHJpYnV0ZSogbXVzdCBiZSBhIGJ5dGVzIG9yIHN0ciB3aXRoIG5vIGVtYmVkZGVkIE5VTHMgKGRpcmVjdGx5IG9yCisgICBpbmRpcmVjdGx5IHRocm91Z2ggdGhlIDpjbGFzczpgUGF0aExpa2VgIGludGVyZmFjZSkuIElmIGl0IGlzIGEgc3RyLAogICAgaXQgaXMgZW5jb2RlZCB3aXRoIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nLiAgKmZsYWdzKiBtYXkgYmUKICAgIDpkYXRhOmBYQVRUUl9SRVBMQUNFYCBvciA6ZGF0YTpgWEFUVFJfQ1JFQVRFYC4gSWYgOmRhdGE6YFhBVFRSX1JFUExBQ0VgIGlzCiAgICBnaXZlbiBhbmQgdGhlIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgYGBFRVhJU1RTYGAgd2lsbCBiZSByYWlzZWQuCkBAIC0yNzI2LDYgKzI5MTAsOSBAQAogICAgICAgQSBidWcgaW4gTGludXgga2VybmVsIHZlcnNpb25zIGxlc3MgdGhhbiAyLjYuMzkgY2F1c2VkIHRoZSBmbGFncyBhcmd1bWVudAogICAgICAgdG8gYmUgaWdub3JlZCBvbiBzb21lIGZpbGVzeXN0ZW1zLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YCBmb3IgKnBhdGgqIGFuZCAqYXR0cmlidXRlKi4KKwogCiAuLiBkYXRhOjogWEFUVFJfU0laRV9NQVgKIApAQCAtMjgyNyw2ICszMDE0LDkgQEAKICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHNwZWNpZnlpbmcgYW4gb3BlbiBmaWxlIGRlc2NyaXB0b3IgZm9yICpwYXRoKgogICAgICAgZm9yIDpmdW5jOmBleGVjdmVgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWNjZXB0cyBhIDp0ZXJtOmBwYXRoLWxpa2Ugb2JqZWN0YC4KKwogLi4gZnVuY3Rpb246OiBfZXhpdChuKQogCiAgICBFeGl0IHRoZSBwcm9jZXNzIHdpdGggc3RhdHVzICpuKiwgd2l0aG91dCBjYWxsaW5nIGNsZWFudXAgaGFuZGxlcnMsIGZsdXNoaW5nCkBAIC0zMTM3LDYgKzMzMjcsOSBAQAogICAgOmZ1bmM6YHNwYXdudmVgIGFyZSBub3QgdGhyZWFkLXNhZmUgb24gV2luZG93czsgd2UgYWR2aXNlIHlvdSB0byB1c2UgdGhlCiAgICA6bW9kOmBzdWJwcm9jZXNzYCBtb2R1bGUgaW5zdGVhZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIEFjY2VwdHMgYSA6dGVybTpgcGF0aC1saWtlIG9iamVjdGAuCisKIAogLi4gZGF0YTo6IFBfTk9XQUlUCiAgICAgICAgICAgUF9OT1dBSVRPCkBAIC0zNjIzLDYgKzM4MTYsMTEgQEAKIAogICAgUmV0dXJuIHRoZSBudW1iZXIgb2YgQ1BVcyBpbiB0aGUgc3lzdGVtLiBSZXR1cm5zIE5vbmUgaWYgdW5kZXRlcm1pbmVkLgogCisgICBUaGlzIG51bWJlciBpcyBub3QgZXF1aXZhbGVudCB0byB0aGUgbnVtYmVyIG9mIENQVXMgdGhlIGN1cnJlbnQgcHJvY2VzcyBjYW4KKyAgIHVzZS4gIFRoZSBudW1iZXIgb2YgdXNhYmxlIENQVXMgY2FuIGJlIG9idGFpbmVkIHdpdGgKKyAgIGBgbGVuKG9zLnNjaGVkX2dldGFmZmluaXR5KDApKWBgCisKKwogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKIApAQCAtMzczOCwzNSArMzkzNiw4OSBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAotLi4gX29zLW1pc2NmdW5jOgogCi1NaXNjZWxsYW5lb3VzIEZ1bmN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQogCiAKLS4uIGZ1bmN0aW9uOjogdXJhbmRvbShuKQorLi4gZnVuY3Rpb246OiBnZXRyYW5kb20oc2l6ZSwgZmxhZ3M9MCkKIAotICAgUmV0dXJuIGEgc3RyaW5nIG9mICpuKiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgorICAgR2V0IHVwIHRvICpzaXplKiByYW5kb20gYnl0ZXMuIFRoZSBmdW5jdGlvbiBjYW4gcmV0dXJuIGxlc3MgYnl0ZXMgdGhhbgorICAgcmVxdWVzdGVkLgorCisgICBUaGVzZSBieXRlcyBjYW4gYmUgdXNlZCB0byBzZWVkIHVzZXItc3BhY2UgcmFuZG9tIG51bWJlciBnZW5lcmF0b3JzIG9yIGZvcgorICAgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4KKworICAgYGBnZXRyYW5kb20oKWBgIHJlbGllcyBvbiBlbnRyb3B5IGdhdGhlcmVkIGZyb20gZGV2aWNlIGRyaXZlcnMgYW5kIG90aGVyCisgICBzb3VyY2VzIG9mIGVudmlyb25tZW50YWwgbm9pc2UuIFVubmVjZXNzYXJpbHkgcmVhZGluZyBsYXJnZSBxdWFudGl0aWVzIG9mCisgICBkYXRhIHdpbGwgaGF2ZSBhIG5lZ2F0aXZlIGltcGFjdCBvbiAgb3RoZXIgdXNlcnMgIG9mIHRoZSBgYC9kZXYvcmFuZG9tYGAgYW5kCisgICBgYC9kZXYvdXJhbmRvbWBgIGRldmljZXMuCisKKyAgIFRoZSBmbGFncyBhcmd1bWVudCBpcyBhIGJpdCBtYXNrIHRoYXQgY2FuIGNvbnRhaW4gemVybyBvciBtb3JlIG9mIHRoZQorICAgZm9sbG93aW5nIHZhbHVlcyBPUmVkIHRvZ2V0aGVyOiA6cHk6ZGF0YTpgb3MuR1JORF9SQU5ET01gIGFuZAorICAgOnB5OmRhdGE6YEdSTkRfTk9OQkxPQ0tgLgorCisgICBTZWUgYWxzbyB0aGUgYExpbnV4IGdldHJhbmRvbSgpIG1hbnVhbCBwYWdlCisgICA8aHR0cDovL21hbjcub3JnL2xpbnV4L21hbi1wYWdlcy9tYW4yL2dldHJhbmRvbS4yLmh0bWw+YF8uCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggMy4xNyBhbmQgbmV3ZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBmdW5jdGlvbjo6IHVyYW5kb20oc2l6ZSkKKworICAgUmV0dXJuIGEgc3RyaW5nIG9mICpzaXplKiByYW5kb20gYnl0ZXMgc3VpdGFibGUgZm9yIGNyeXB0b2dyYXBoaWMgdXNlLgogCiAgICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgcmFuZG9tIGJ5dGVzIGZyb20gYW4gT1Mtc3BlY2lmaWMgcmFuZG9tbmVzcyBzb3VyY2UuICBUaGUKICAgIHJldHVybmVkIGRhdGEgc2hvdWxkIGJlIHVucHJlZGljdGFibGUgZW5vdWdoIGZvciBjcnlwdG9ncmFwaGljIGFwcGxpY2F0aW9ucywKICAgIHRob3VnaCBpdHMgZXhhY3QgcXVhbGl0eSBkZXBlbmRzIG9uIHRoZSBPUyBpbXBsZW1lbnRhdGlvbi4KIAotICAgT24gTGludXgsIGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGlzIHVzZWQgaWYgYXZhaWxhYmxlIGFuZCB0aGUgdXJhbmRvbQotICAgZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkIChgYGdldHJhbmRvbSgpYGAgZG9lcyBub3QgYmxvY2spLgotICAgT24gYSBVbml4LWxpa2Ugc3lzdGVtIHRoaXMgd2lsbCBxdWVyeSBgYC9kZXYvdXJhbmRvbWBgLiBPbiBXaW5kb3dzLCBpdAotICAgd2lsbCB1c2UgYGBDcnlwdEdlblJhbmRvbSgpYGAuICBJZiBhIHJhbmRvbW5lc3Mgc291cmNlIGlzIG5vdCBmb3VuZCwKLSAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIHdpbGwgYmUgcmFpc2VkLgorICAgT24gTGludXgsIGlmIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBhdmFpbGFibGUsIGl0IGlzIHVzZWQgaW4KKyAgIGJsb2NraW5nIG1vZGU6IGJsb2NrIHVudGlsIHRoZSBzeXN0ZW0gdXJhbmRvbSBlbnRyb3B5IHBvb2wgaXMgaW5pdGlhbGl6ZWQKKyAgICgxMjggYml0cyBvZiBlbnRyb3B5IGFyZSBjb2xsZWN0ZWQgYnkgdGhlIGtlcm5lbCkuIFNlZSB0aGUgOnBlcDpgNTI0YCBmb3IKKyAgIHRoZSByYXRpb25hbGUuIE9uIExpbnV4LCB0aGUgOmZ1bmM6YGdldHJhbmRvbWAgZnVuY3Rpb24gY2FuIGJlIHVzZWQgdG8gZ2V0CisgICByYW5kb20gYnl0ZXMgaW4gbm9uLWJsb2NraW5nIG1vZGUgKHVzaW5nIHRoZSA6ZGF0YTpgR1JORF9OT05CTE9DS2AgZmxhZykgb3IKKyAgIHRvIHBvbGwgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZC4KIAotICAgRm9yIGFuIGVhc3ktdG8tdXNlIGludGVyZmFjZSB0byB0aGUgcmFuZG9tIG51bWJlciBnZW5lcmF0b3IKLSAgIHByb3ZpZGVkIGJ5IHlvdXIgcGxhdGZvcm0sIHBsZWFzZSBzZWUgOmNsYXNzOmByYW5kb20uU3lzdGVtUmFuZG9tYC4KKyAgIE9uIGEgVW5peC1saWtlIHN5c3RlbSwgcmFuZG9tIGJ5dGVzIGFyZSByZWFkIGZyb20gdGhlIGBgL2Rldi91cmFuZG9tYGAKKyAgIGRldmljZS4gSWYgdGhlIGBgL2Rldi91cmFuZG9tYGAgZGV2aWNlIGlzIG5vdCBhdmFpbGFibGUgb3Igbm90IHJlYWRhYmxlLCB0aGUKKyAgIDpleGM6YE5vdEltcGxlbWVudGVkRXJyb3JgIGV4Y2VwdGlvbiBpcyByYWlzZWQuCisKKyAgIE9uIFdpbmRvd3MsIGl0IHdpbGwgdXNlIGBgQ3J5cHRHZW5SYW5kb20oKWBgLgorCisgICAuLiBzZWVhbHNvOjoKKyAgICAgIFRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgaGlnaGVyIGxldmVsIGZ1bmN0aW9ucy4gRm9yIGFuCisgICAgICBlYXN5LXRvLXVzZSBpbnRlcmZhY2UgdG8gdGhlIHJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIHByb3ZpZGVkIGJ5IHlvdXIKKyAgICAgIHBsYXRmb3JtLCBwbGVhc2Ugc2VlIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42LjAKKyAgICAgIE9uIExpbnV4LCBgYGdldHJhbmRvbSgpYGAgaXMgbm93IHVzZWQgaW4gYmxvY2tpbmcgbW9kZSB0byBpbmNyZWFzZSB0aGUKKyAgICAgIHNlY3VyaXR5LgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNS4yCi0gICAgICBPbiBMaW51eCwgaWYgYGBnZXRyYW5kb20oKWBgIGJsb2NrcyAodGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdAotICAgICAgaW5pdGlhbGl6ZWQgeWV0KSwgZmFsbCBiYWNrIG9uIHJlYWRpbmcgYGAvZGV2L3VyYW5kb21gYC4KKyAgICAgIE9uIExpbnV4LCBpZiB0aGUgYGBnZXRyYW5kb20oKWBgIHN5c2NhbGwgYmxvY2tzICh0aGUgdXJhbmRvbSBlbnRyb3B5IHBvb2wKKyAgICAgIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQpLCBmYWxsIGJhY2sgb24gcmVhZGluZyBgYC9kZXYvdXJhbmRvbWBgLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgT24gTGludXggMy4xNyBhbmQgbmV3ZXIsIHRoZSBgYGdldHJhbmRvbSgpYGAgc3lzY2FsbCBpcyBub3cgdXNlZAogICAgICAgd2hlbiBhdmFpbGFibGUuICBPbiBPcGVuQlNEIDUuNiBhbmQgbmV3ZXIsIHRoZSBDIGBgZ2V0ZW50cm9weSgpYGAKICAgICAgIGZ1bmN0aW9uIGlzIG5vdyB1c2VkLiBUaGVzZSBmdW5jdGlvbnMgYXZvaWQgdGhlIHVzYWdlIG9mIGFuIGludGVybmFsIGZpbGUKICAgICAgIGRlc2NyaXB0b3IuCisKKy4uIGRhdGE6OiBHUk5EX05PTkJMT0NLCisKKyAgIEJ5ICBkZWZhdWx0LCB3aGVuIHJlYWRpbmcgZnJvbSBgYC9kZXYvcmFuZG9tYGAsIDpmdW5jOmBnZXRyYW5kb21gIGJsb2NrcyBpZgorICAgbm8gcmFuZG9tIGJ5dGVzIGFyZSBhdmFpbGFibGUsIGFuZCB3aGVuIHJlYWRpbmcgZnJvbSBgYC9kZXYvdXJhbmRvbWBgLCBpdCBibG9ja3MKKyAgIGlmIHRoZSBlbnRyb3B5IHBvb2wgaGFzIG5vdCB5ZXQgYmVlbiBpbml0aWFsaXplZC4KKworICAgSWYgdGhlIDpweTpkYXRhOmBHUk5EX05PTkJMT0NLYCBmbGFnIGlzIHNldCwgdGhlbiA6ZnVuYzpgZ2V0cmFuZG9tYCBkb2VzIG5vdAorICAgYmxvY2sgaW4gdGhlc2UgY2FzZXMsIGJ1dCBpbnN0ZWFkIGltbWVkaWF0ZWx5IHJhaXNlcyA6ZXhjOmBCbG9ja2luZ0lPRXJyb3JgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworLi4gZGF0YTo6IEdSTkRfUkFORE9NCisKKyAgIElmICB0aGlzICBiaXQgIGlzICBzZXQsICB0aGVuICByYW5kb20gYnl0ZXMgYXJlIGRyYXduIGZyb20gdGhlCisgICBgYC9kZXYvcmFuZG9tYGAgcG9vbCBpbnN0ZWFkIG9mIHRoZSBgYC9kZXYvdXJhbmRvbWBgIHBvb2wuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGF0aGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAppbmRleCA3YjkwYTFmLi41YTgxOTE3IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wYXRobGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wYXRobGliLnJzdApAQCAtMzUsMTIgKzM1LDYgQEAKICAgIGFjY2Vzc2luZyB0aGUgT1MuIEluIHRoaXMgY2FzZSwgaW5zdGFudGlhdGluZyBvbmUgb2YgdGhlIHB1cmUgY2xhc3NlcyBtYXkgYmUKICAgIHVzZWZ1bCBzaW5jZSB0aG9zZSBzaW1wbHkgZG9uJ3QgaGF2ZSBhbnkgT1MtYWNjZXNzaW5nIG9wZXJhdGlvbnMuCiAKLS4uIG5vdGU6OgotICAgVGhpcyBtb2R1bGUgaGFzIGJlZW4gaW5jbHVkZWQgaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgb24gYQotICAgOnRlcm06YHByb3Zpc2lvbmFsIGJhc2lzIDxwcm92aXNpb25hbCBwYWNrYWdlPmAuIEJhY2t3YXJkcyBpbmNvbXBhdGlibGUKLSAgIGNoYW5nZXMgKHVwIHRvIGFuZCBpbmNsdWRpbmcgcmVtb3ZhbCBvZiB0aGUgcGFja2FnZSkgbWF5IG9jY3VyIGlmIGRlZW1lZAotICAgbmVjZXNzYXJ5IGJ5IHRoZSBjb3JlIGRldmVsb3BlcnMuCi0KIC4uIHNlZWFsc286OgogICAgOnBlcDpgNDI4YDogVGhlIHBhdGhsaWIgbW9kdWxlIC0tIG9iamVjdC1vcmllbnRlZCBmaWxlc3lzdGVtIHBhdGhzLgogCkBAIC0xMTEsNyArMTA1LDggQEAKICAgICAgIFB1cmVQb3NpeFBhdGgoJ3NldHVwLnB5JykKIAogICAgRWFjaCBlbGVtZW50IG9mICpwYXRoc2VnbWVudHMqIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgcmVwcmVzZW50aW5nIGEKLSAgIHBhdGggc2VnbWVudCwgb3IgYW5vdGhlciBwYXRoIG9iamVjdDo6CisgICBwYXRoIHNlZ21lbnQsIGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlIDpjbGFzczpgb3MuUGF0aExpa2VgIGludGVyZmFjZQorICAgd2hpY2ggcmV0dXJucyBhIHN0cmluZywgb3IgYW5vdGhlciBwYXRoIG9iamVjdDo6CiAKICAgICAgID4+PiBQdXJlUGF0aCgnZm9vJywgJ3NvbWUvcGF0aCcsICdiYXInKQogICAgICAgUHVyZVBvc2l4UGF0aCgnZm9vL3NvbWUvcGF0aC9iYXInKQpAQCAtMTUyLDYgKzE0NywxMiBAQAogICAgdG8gYGBQdXJlUG9zaXhQYXRoKCdiYXInKWBgLCB3aGljaCBpcyB3cm9uZyBpZiBgYGZvb2BgIGlzIGEgc3ltYm9saWMgbGluawogICAgdG8gYW5vdGhlciBkaXJlY3RvcnkpCiAKKyAgIFB1cmUgcGF0aCBvYmplY3RzIGltcGxlbWVudCB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLCBhbGxvd2luZyB0aGVtCisgICB0byBiZSB1c2VkIGFueXdoZXJlIHRoZSBpbnRlcmZhY2UgaXMgYWNjZXB0ZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgOmNsYXNzOmBvcy5QYXRoTGlrZWAgaW50ZXJmYWNlLgorCiAuLiBjbGFzczo6IFB1cmVQb3NpeFBhdGgoKnBhdGhzZWdtZW50cykKIAogICAgQSBzdWJjbGFzcyBvZiA6Y2xhc3M6YFB1cmVQYXRoYCwgdGhpcyBwYXRoIGZsYXZvdXIgcmVwcmVzZW50cyBub24tV2luZG93cwpAQCAtMTk5LDcgKzIwMCw3IEBACiAgICA+Pj4gUHVyZVdpbmRvd3NQYXRoKCdmb28nKSA8IFB1cmVQb3NpeFBhdGgoJ2ZvbycpCiAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiAgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci0gICBUeXBlRXJyb3I6IHVub3JkZXJhYmxlIHR5cGVzOiBQdXJlV2luZG93c1BhdGgoKSA8IFB1cmVQb3NpeFBhdGgoKQorICAgVHlwZUVycm9yOiAnPCcgbm90IHN1cHBvcnRlZCBiZXR3ZWVuIGluc3RhbmNlcyBvZiAnUHVyZVdpbmRvd3NQYXRoJyBhbmQgJ1B1cmVQb3NpeFBhdGgnCiAKIAogT3BlcmF0b3JzCkBAIC0yMTYsNiArMjE3LDE0IEBACiAgICA+Pj4gJy91c3InIC8gcQogICAgUHVyZVBvc2l4UGF0aCgnL3Vzci9iaW4nKQogCitBIHBhdGggb2JqZWN0IGNhbiBiZSB1c2VkIGFueXdoZXJlIGFuIG9iamVjdCBpbXBsZW1lbnRpbmcgOmNsYXNzOmBvcy5QYXRoTGlrZWAKK2lzIGFjY2VwdGVkOjoKKworICAgPj4+IGltcG9ydCBvcworICAgPj4+IHAgPSBQdXJlUGF0aCgnL2V0YycpCisgICA+Pj4gb3MuZnNwYXRoKHApCisgICAnL2V0YycKKwogVGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGggaXMgdGhlIHJhdyBmaWxlc3lzdGVtIHBhdGggaXRzZWxmCiAoaW4gbmF0aXZlIGZvcm0sIGUuZy4gd2l0aCBiYWNrc2xhc2hlcyB1bmRlciBXaW5kb3dzKSwgd2hpY2ggeW91IGNhbgogcGFzcyB0byBhbnkgZnVuY3Rpb24gdGFraW5nIGEgZmlsZSBwYXRoIGFzIGEgc3RyaW5nOjoKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3BkYi5yc3QgYi9Eb2MvbGlicmFyeS9wZGIucnN0CmluZGV4IGQ3N2RlMmUuLjUyYmVmNjggMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3BkYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcGRiLnJzdApAQCAtMTQ0LDcgKzE0NCw3IEBACiBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjoKIAogLi4gY2xhc3M6OiBQZGIoY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIFwKLSAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlKQorICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKQogCiAgICA6Y2xhc3M6YFBkYmAgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLgogCkBAIC0xNjAsNiArMTYwLDkgQEAKICAgIFRoaXMgYWxsb3dzIHlvdSB0byBicmVhayBpbnRvIHRoZSBkZWJ1Z2dlciBhZ2FpbiBieSBwcmVzc2luZyA6a2JkOmBDdHJsLUNgLiAgSWYgeW91CiAgICB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlIFNJR0lOVCBoYW5kbGVyLCBzZXQgKm5vc2lnaW50KiB0byB0cnVlLgogCisgICBUaGUgKnJlYWRyYyogYXJndW1lbnQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgY29udHJvbHMgd2hldGhlciBQZGIgd2lsbCBsb2FkCisgICAucGRicmMgZmlsZXMgZnJvbSB0aGUgZmlsZXN5c3RlbS4KKwogICAgRXhhbXBsZSBjYWxsIHRvIGVuYWJsZSB0cmFjaW5nIHdpdGggKnNraXAqOjoKIAogICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnZGphbmdvLionXSkuc2V0X3RyYWNlKCkKQEAgLTE3MSw2ICsxNzQsOSBAQAogICAgICAgVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVCBoYW5kbGVyIHdhcyBuZXZlciBzZXQgYnkKICAgICAgIFBkYi4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFRoZSAqcmVhZHJjKiBhcmd1bWVudC4KKwogICAgLi4gbWV0aG9kOjogcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSkKICAgICAgICAgICAgICAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0IGIvRG9jL2xpYnJhcnkvcGlja2xlLnJzdAppbmRleCAwZDY0MTkxLi42ZTg0MzBmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9waWNrbGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BpY2tsZS5yc3QKQEAgLTQ5Miw3ICs0OTIsNyBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX2V4X18oKQogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIGNsYXNzZXMgdGhhdCBpbXBsZW1lbnRzIHRoZQorICAgSW4gcHJvdG9jb2xzIDIgYW5kIG5ld2VyLCBjbGFzc2VzIHRoYXQgaW1wbGVtZW50cyB0aGUKICAgIDptZXRoOmBfX2dldG5ld2FyZ3NfZXhfX2AgbWV0aG9kIGNhbiBkaWN0YXRlIHRoZSB2YWx1ZXMgcGFzc2VkIHRvIHRoZQogICAgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuICBUaGUgbWV0aG9kIG11c3QgcmV0dXJuIGEgcGFpcgogICAgYGAoYXJncywga3dhcmdzKWBgIHdoZXJlICphcmdzKiBpcyBhIHR1cGxlIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzCkBAIC01MDQsMTUgKzUwNCwyMiBAQAogICAgY2xhc3MgcmVxdWlyZXMga2V5d29yZC1vbmx5IGFyZ3VtZW50cy4gIE90aGVyd2lzZSwgaXQgaXMgcmVjb21tZW5kZWQgZm9yCiAgICBjb21wYXRpYmlsaXR5IHRvIGltcGxlbWVudCA6bWV0aDpgX19nZXRuZXdhcmdzX19gLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgOm1ldGg6YF9fZ2V0bmV3YXJnc19leF9fYCBpcyBub3cgdXNlZCBpbiBwcm90b2NvbHMgMiBhbmQgMy4KKwogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19nZXRuZXdhcmdzX18oKQogCi0gICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGJ1dAotICAgZm9yIHByb3RvY29scyAyIGFuZCBuZXdlci4gIEl0IG11c3QgcmV0dXJuIGEgdHVwbGUgb2YgYXJndW1lbnRzIGBgYXJnc2BgCi0gICB3aGljaCB3aWxsIGJlIHBhc3NlZCB0byB0aGUgOm1ldGg6YF9fbmV3X19gIG1ldGhvZCB1cG9uIHVucGlja2xpbmcuCisgICBUaGlzIG1ldGhvZCBzZXJ2ZSBhIHNpbWlsYXIgcHVycG9zZSBhcyA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gLCBidXQKKyAgIHN1cHBvcnRzIG9ubHkgcG9zaXRpb25hbCBhcmd1bWVudHMuICBJdCBtdXN0IHJldHVybiBhIHR1cGxlIG9mIGFyZ3VtZW50cworICAgYGBhcmdzYGAgd2hpY2ggd2lsbCBiZSBwYXNzZWQgdG8gdGhlIDptZXRoOmBfX25ld19fYCBtZXRob2QgdXBvbiB1bnBpY2tsaW5nLgogCi0gICBJbiBwcm90b2NvbHMgNCBhbmQgbmV3ZXIsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2lsbCBub3QgYmUgY2FsbGVkIGlmCi0gICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzIGRlZmluZWQuCisgICA6bWV0aDpgX19nZXRuZXdhcmdzX19gIHdpbGwgbm90IGJlIGNhbGxlZCBpZiA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGlzCisgICBkZWZpbmVkLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQmVmb3JlIFB5dGhvbiAzLjYsIDptZXRoOmBfX2dldG5ld2FyZ3NfX2Agd2FzIGNhbGxlZCBpbnN0ZWFkIG9mCisgICAgICA6bWV0aDpgX19nZXRuZXdhcmdzX2V4X19gIGluIHByb3RvY29scyAyIGFuZCAzLgogCiAKIC4uIG1ldGhvZDo6IG9iamVjdC5fX2dldHN0YXRlX18oKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcGtndXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAppbmRleCBhYmVhYzYyLi45MGQ2OWU0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9wa2d1dGlsLnJzdApAQCAtMTEsNiArMTEsMTEgQEAKIFRoaXMgbW9kdWxlIHByb3ZpZGVzIHV0aWxpdGllcyBmb3IgdGhlIGltcG9ydCBzeXN0ZW0sIGluIHBhcnRpY3VsYXIgcGFja2FnZQogc3VwcG9ydC4KIAorLi4gY2xhc3M6OiBNb2R1bGVJbmZvKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKQorCisgICAgQSBuYW1lZHR1cGxlIHRoYXQgaG9sZHMgYSBicmllZiBzdW1tYXJ5IG9mIGEgbW9kdWxlJ3MgaW5mby4KKworICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGV4dGVuZF9wYXRoKHBhdGgsIG5hbWUpCiAKQEAgLTEzOSw3ICsxNDQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGl0ZXJfbW9kdWxlcyhwYXRoPU5vbmUsIHByZWZpeD0nJykKIAotICAgWWllbGRzIGBgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKWBgIGZvciBhbGwgc3VibW9kdWxlcyBvbiAqcGF0aCosIG9yLCBpZgorICAgWWllbGRzIDpjbGFzczpgTW9kdWxlSW5mb2AgZm9yIGFsbCBzdWJtb2R1bGVzIG9uICpwYXRoKiwgb3IsIGlmCiAgICAqcGF0aCogaXMgYGBOb25lYGAsIGFsbCB0b3AtbGV2ZWwgbW9kdWxlcyBvbiBgYHN5cy5wYXRoYGAuCiAKICAgICpwYXRoKiBzaG91bGQgYmUgZWl0aGVyIGBgTm9uZWBgIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvciBtb2R1bGVzIGluLgpAQCAtMTYwLDcgKzE2NSw3IEBACiAKIC4uIGZ1bmN0aW9uOjogd2Fsa19wYWNrYWdlcyhwYXRoPU5vbmUsIHByZWZpeD0nJywgb25lcnJvcj1Ob25lKQogCi0gICBZaWVsZHMgYGAobW9kdWxlX2ZpbmRlciwgbmFtZSwgaXNwa2cpYGAgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5IG9uCisgICBZaWVsZHMgOmNsYXNzOmBNb2R1bGVJbmZvYCBmb3IgYWxsIG1vZHVsZXMgcmVjdXJzaXZlbHkgb24KICAgICpwYXRoKiwgb3IsIGlmICpwYXRoKiBpcyBgYE5vbmVgYCwgYWxsIGFjY2Vzc2libGUgbW9kdWxlcy4KIAogICAgKnBhdGgqIHNob3VsZCBiZSBlaXRoZXIgYGBOb25lYGAgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yIG1vZHVsZXMgaW4uCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0IGIvRG9jL2xpYnJhcnkvcG9wbGliLnJzdAppbmRleCBmZmFiYzMyLi5kNzJiNjYwIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9wb3BsaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3BvcGxpYi5yc3QKQEAgLTYyLDYgKzYyLDEzIEBACiAgICAgICA6YXR0cjpgc3NsLlNTTENvbnRleHQuY2hlY2tfaG9zdG5hbWVgIGFuZCAqU2VydmVyIE5hbWUgSW5kaWNhdGlvbiogKHNlZQogICAgICAgOmRhdGE6YHNzbC5IQVNfU05JYCkuCiAKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKKworICAgICAgICprZXlmaWxlKiBhbmQgKmNlcnRmaWxlKiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgorCiBPbmUgZXhjZXB0aW9uIGlzIGRlZmluZWQgYXMgYW4gYXR0cmlidXRlIG9mIHRoZSA6bW9kOmBwb3BsaWJgIG1vZHVsZToKIAogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QgYi9Eb2MvbGlicmFyeS9xdWV1ZS5yc3QKaW5kZXggZTAyNmU1Mi4uZWQ0MDhmNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvcXVldWUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3F1ZXVlLnJzdApAQCAtMTYsOCArMTYsOSBAQAogbW9kdWxlLgogCiBUaGUgbW9kdWxlIGltcGxlbWVudHMgdGhyZWUgdHlwZXMgb2YgcXVldWUsIHdoaWNoIGRpZmZlciBvbmx5IGluIHRoZSBvcmRlciBpbgotd2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgRklGTyBxdWV1ZSwgdGhlIGZpcnN0IHRhc2tzIGFkZGVkIGFyZQotdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYSBMSUZPIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcword2hpY2ggdGhlIGVudHJpZXMgYXJlIHJldHJpZXZlZC4gIEluIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYAorcXVldWUsIHRoZSBmaXJzdCB0YXNrcyBhZGRlZCBhcmUgdGhlIGZpcnN0IHJldHJpZXZlZC4gSW4gYQorOmFiYnI6YExJRk8gKGxhc3QtaW4sIGZpcnN0LW91dClgIHF1ZXVlLCB0aGUgbW9zdCByZWNlbnRseSBhZGRlZCBlbnRyeSBpcwogdGhlIGZpcnN0IHJldHJpZXZlZCAob3BlcmF0aW5nIGxpa2UgYSBzdGFjaykuICBXaXRoIGEgcHJpb3JpdHkgcXVldWUsCiB0aGUgZW50cmllcyBhcmUga2VwdCBzb3J0ZWQgKHVzaW5nIHRoZSA6bW9kOmBoZWFwcWAgbW9kdWxlKSBhbmQgdGhlCiBsb3dlc3QgdmFsdWVkIGVudHJ5IGlzIHJldHJpZXZlZCBmaXJzdC4KQEAgLTI5LDE0ICszMCwxNiBAQAogCiAuLiBjbGFzczo6IFF1ZXVlKG1heHNpemU9MCkKIAotICAgQ29uc3RydWN0b3IgZm9yIGEgRklGTyBxdWV1ZS4gICptYXhzaXplKiBpcyBhbiBpbnRlZ2VyIHRoYXQgc2V0cyB0aGUgdXBwZXJib3VuZAorICAgQ29uc3RydWN0b3IgZm9yIGEgOmFiYnI6YEZJRk8gKGZpcnN0LWluLCBmaXJzdC1vdXQpYCBxdWV1ZS4gICptYXhzaXplKiBpcworICAgYW4gaW50ZWdlciB0aGF0IHNldHMgdGhlIHVwcGVyYm91bmQKICAgIGxpbWl0IG9uIHRoZSBudW1iZXIgb2YgaXRlbXMgdGhhdCBjYW4gYmUgcGxhY2VkIGluIHRoZSBxdWV1ZS4gIEluc2VydGlvbiB3aWxsCiAgICBibG9jayBvbmNlIHRoaXMgc2l6ZSBoYXMgYmVlbiByZWFjaGVkLCB1bnRpbCBxdWV1ZSBpdGVtcyBhcmUgY29uc3VtZWQuICBJZgogICAgKm1heHNpemUqIGlzIGxlc3MgdGhhbiBvciBlcXVhbCB0byB6ZXJvLCB0aGUgcXVldWUgc2l6ZSBpcyBpbmZpbml0ZS4KIAogLi4gY2xhc3M6OiBMaWZvUXVldWUobWF4c2l6ZT0wKQogCi0gICBDb25zdHJ1Y3RvciBmb3IgYSBMSUZPIHF1ZXVlLiAgKm1heHNpemUqIGlzIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCisgICBDb25zdHJ1Y3RvciBmb3IgYSA6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWAgcXVldWUuICAqbWF4c2l6ZSogaXMKKyAgIGFuIGludGVnZXIgdGhhdCBzZXRzIHRoZSB1cHBlcmJvdW5kCiAgICBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIGl0ZW1zIHRoYXQgY2FuIGJlIHBsYWNlZCBpbiB0aGUgcXVldWUuICBJbnNlcnRpb24gd2lsbAogICAgYmxvY2sgb25jZSB0aGlzIHNpemUgaGFzIGJlZW4gcmVhY2hlZCwgdW50aWwgcXVldWUgaXRlbXMgYXJlIGNvbnN1bWVkLiAgSWYKICAgICptYXhzaXplKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gemVybywgdGhlIHF1ZXVlIHNpemUgaXMgaW5maW5pdGUuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0IGIvRG9jL2xpYnJhcnkvcmFuZG9tLnJzdAppbmRleCAyMmYxOGEwLi5hNDdlZDljIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yYW5kb20ucnN0CisrKyBiL0RvYy9saWJyYXJ5L3JhbmRvbS5yc3QKQEAgLTQ2LDcgKzQ2LDggQEAKIC4uIHdhcm5pbmc6OgogCiAgICBUaGUgcHNldWRvLXJhbmRvbSBnZW5lcmF0b3JzIG9mIHRoaXMgbW9kdWxlIHNob3VsZCBub3QgYmUgdXNlZCBmb3IKLSAgIHNlY3VyaXR5IHB1cnBvc2VzLgorICAgc2VjdXJpdHkgcHVycG9zZXMuICBGb3Igc2VjdXJpdHkgb3IgY3J5cHRvZ3JhcGhpYyB1c2VzLCBzZWUgdGhlCisgICA6bW9kOmBzZWNyZXRzYCBtb2R1bGUuCiAKIAogQm9va2tlZXBpbmcgZnVuY3Rpb25zOgpAQCAtMTIzLDYgKzEyNCwzMSBAQAogICAgUmV0dXJuIGEgcmFuZG9tIGVsZW1lbnQgZnJvbSB0aGUgbm9uLWVtcHR5IHNlcXVlbmNlICpzZXEqLiBJZiAqc2VxKiBpcyBlbXB0eSwKICAgIHJhaXNlcyA6ZXhjOmBJbmRleEVycm9yYC4KIAorLi4gZnVuY3Rpb246OiBjaG9pY2VzKHBvcHVsYXRpb24sIHdlaWdodHM9Tm9uZSwgKiwgY3VtX3dlaWdodHM9Tm9uZSwgaz0xKQorCisgICBSZXR1cm4gYSAqayogc2l6ZWQgbGlzdCBvZiBlbGVtZW50cyBjaG9zZW4gZnJvbSB0aGUgKnBvcHVsYXRpb24qIHdpdGggcmVwbGFjZW1lbnQuCisgICBJZiB0aGUgKnBvcHVsYXRpb24qIGlzIGVtcHR5LCByYWlzZXMgOmV4YzpgSW5kZXhFcnJvcmAuCisKKyAgIElmIGEgKndlaWdodHMqIHNlcXVlbmNlIGlzIHNwZWNpZmllZCwgc2VsZWN0aW9ucyBhcmUgbWFkZSBhY2NvcmRpbmcgdG8gdGhlCisgICByZWxhdGl2ZSB3ZWlnaHRzLiAgQWx0ZXJuYXRpdmVseSwgaWYgYSAqY3VtX3dlaWdodHMqIHNlcXVlbmNlIGlzIGdpdmVuLCB0aGUKKyAgIHNlbGVjdGlvbnMgYXJlIG1hZGUgYWNjb3JkaW5nIHRvIHRoZSBjdW11bGF0aXZlIHdlaWdodHMgKHBlcmhhcHMgY29tcHV0ZWQKKyAgIHVzaW5nIDpmdW5jOmBpdGVydG9vbHMuYWNjdW11bGF0ZWApLiAgRm9yIGV4YW1wbGUsIHRoZSByZWxhdGl2ZSB3ZWlnaHRzCisgICBgYFsxMCwgNSwgMzAsIDVdYGAgYXJlIGVxdWl2YWxlbnQgdG8gdGhlIGN1bXVsYXRpdmUgd2VpZ2h0cworICAgYGBbMTAsIDE1LCA0NSwgNTBdYGAuICBJbnRlcm5hbGx5LCB0aGUgcmVsYXRpdmUgd2VpZ2h0cyBhcmUgY29udmVydGVkIHRvCisgICBjdW11bGF0aXZlIHdlaWdodHMgYmVmb3JlIG1ha2luZyBzZWxlY3Rpb25zLCBzbyBzdXBwbHlpbmcgdGhlIGN1bXVsYXRpdmUKKyAgIHdlaWdodHMgc2F2ZXMgd29yay4KKworICAgSWYgbmVpdGhlciAqd2VpZ2h0cyogbm9yICpjdW1fd2VpZ2h0cyogYXJlIHNwZWNpZmllZCwgc2VsZWN0aW9ucyBhcmUgbWFkZQorICAgd2l0aCBlcXVhbCBwcm9iYWJpbGl0eS4gIElmIGEgd2VpZ2h0cyBzZXF1ZW5jZSBpcyBzdXBwbGllZCwgaXQgbXVzdCBiZQorICAgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSAqcG9wdWxhdGlvbiogc2VxdWVuY2UuICBJdCBpcyBhIDpleGM6YFR5cGVFcnJvcmAKKyAgIHRvIHNwZWNpZnkgYm90aCAqd2VpZ2h0cyogYW5kICpjdW1fd2VpZ2h0cyouCisKKyAgIFRoZSAqd2VpZ2h0cyogb3IgKmN1bV93ZWlnaHRzKiBjYW4gdXNlIGFueSBudW1lcmljIHR5cGUgdGhhdCBpbnRlcm9wZXJhdGVzCisgICB3aXRoIHRoZSA6Y2xhc3M6YGZsb2F0YCB2YWx1ZXMgcmV0dXJuZWQgYnkgOmZ1bmM6YHJhbmRvbWAgKHRoYXQgaW5jbHVkZXMKKyAgIGludGVnZXJzLCBmbG9hdHMsIGFuZCBmcmFjdGlvbnMgYnV0IGV4Y2x1ZGVzIGRlY2ltYWxzKS4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogLi4gZnVuY3Rpb246OiBzaHVmZmxlKHhbLCByYW5kb21dKQogCkBAIC0zMTMsMzYgKzMzOSwyOCBAQAogICAgPj4+IHJhbmRvbS5jaG9pY2UoJ2FiY2RlZmdoaWonKSAgICAgICAgICAjIFNpbmdsZSByYW5kb20gZWxlbWVudAogICAgJ2MnCiAKLSAgID4+PiBpdGVtcyA9IFsxLCAyLCAzLCA0LCA1LCA2LCA3XQotICAgPj4+IHJhbmRvbS5zaHVmZmxlKGl0ZW1zKQotICAgPj4+IGl0ZW1zCi0gICBbNywgMywgMiwgNSwgNiwgNCwgMV0KKyAgID4+PiBkZWNrID0gWydqYWNrJywgJ3F1ZWVuJywgJ2tpbmcnLCAnYWNlJ10KKyAgID4+PiBzaHVmZmxlKGRlY2spCisgICA+Pj4gZGVjaworICAgWydraW5nJywgJ3F1ZWVuJywgJ2FjZScsICdqYWNrJ10KIAogICAgPj4+IHJhbmRvbS5zYW1wbGUoWzEsIDIsIDMsIDQsIDVdLCAgMykgICAjIFRocmVlIHNhbXBsZXMgd2l0aG91dCByZXBsYWNlbWVudAogICAgWzQsIDEsIDVdCiAKLUEgY29tbW9uIHRhc2sgaXMgdG8gbWFrZSBhIDpmdW5jOmByYW5kb20uY2hvaWNlYCB3aXRoIHdlaWdodGVkIHByb2JhYmlsaXRpZXMuCisgICA+Pj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgU2l4IHdlaWdodGVkIHNhbXBsZXMgd2l0aCByZXBsYWNlbWVudAorICAgPj4+IGNob2ljZXMoWydyZWQnLCAnYmxhY2snLCAnZ3JlZW4nXSwgWzE4LCAxOCwgMl0sIGs9NikKKyAgIFsncmVkJywgJ2dyZWVuJywgJ2JsYWNrJywgJ2JsYWNrJywgJ3JlZCcsICdibGFjayddCiAKLUlmIHRoZSB3ZWlnaHRzIGFyZSBzbWFsbCBpbnRlZ2VyIHJhdGlvcywgYSBzaW1wbGUgdGVjaG5pcXVlIGlzIHRvIGJ1aWxkIGEgc2FtcGxlCi1wb3B1bGF0aW9uIHdpdGggcmVwZWF0czo6CitFeGFtcGxlIG9mIGBzdGF0aXN0aWNhbCBib290c3RyYXBwaW5nCis8aHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQm9vdHN0cmFwcGluZ18oc3RhdGlzdGljcyk+YF8gdXNpbmcgcmVzYW1wbGluZword2l0aCByZXBsYWNlbWVudCB0byBlc3RpbWF0ZSBhIGNvbmZpZGVuY2UgaW50ZXJ2YWwgZm9yIHRoZSBtZWFuIG9mIGEgc21hbGwKK3NhbXBsZSBvZiBzaXplIGZpdmU6OgogCi0gICAgPj4+IHdlaWdodGVkX2Nob2ljZXMgPSBbKCdSZWQnLCAzKSwgKCdCbHVlJywgMiksICgnWWVsbG93JywgMSksICgnR3JlZW4nLCA0KV0KLSAgICA+Pj4gcG9wdWxhdGlvbiA9IFt2YWwgZm9yIHZhbCwgY250IGluIHdlaWdodGVkX2Nob2ljZXMgZm9yIGkgaW4gcmFuZ2UoY250KV0KLSAgICA+Pj4gcG9wdWxhdGlvbgotICAgIFsnUmVkJywgJ1JlZCcsICdSZWQnLCAnQmx1ZScsICdCbHVlJywgJ1llbGxvdycsICdHcmVlbicsICdHcmVlbicsICdHcmVlbicsICdHcmVlbiddCisgICAjIGh0dHA6Ly9zdGF0aXN0aWNzLmFib3V0LmNvbS9vZC9BcHBsaWNhdGlvbnMvYS9FeGFtcGxlLU9mLUJvb3RzdHJhcHBpbmcuaHRtCisgICBmcm9tIHN0YXRpc3RpY3MgaW1wb3J0IG1lYW4KKyAgIGZyb20gcmFuZG9tIGltcG9ydCBjaG9pY2VzCiAKLSAgICA+Pj4gcmFuZG9tLmNob2ljZShwb3B1bGF0aW9uKQotICAgICdHcmVlbicKLQotQSBtb3JlIGdlbmVyYWwgYXBwcm9hY2ggaXMgdG8gYXJyYW5nZSB0aGUgd2VpZ2h0cyBpbiBhIGN1bXVsYXRpdmUgZGlzdHJpYnV0aW9uCi13aXRoIDpmdW5jOmBpdGVydG9vbHMuYWNjdW11bGF0ZWAsIGFuZCB0aGVuIGxvY2F0ZSB0aGUgcmFuZG9tIHZhbHVlIHdpdGgKLTpmdW5jOmBiaXNlY3QuYmlzZWN0YDo6Ci0KLSAgICA+Pj4gY2hvaWNlcywgd2VpZ2h0cyA9IHppcCgqd2VpZ2h0ZWRfY2hvaWNlcykKLSAgICA+Pj4gY3VtZGlzdCA9IGxpc3QoaXRlcnRvb2xzLmFjY3VtdWxhdGUod2VpZ2h0cykpCi0gICAgPj4+IGN1bWRpc3QgICAgICAgICAgICAjIFszLCAzKzIsIDMrMisxLCAzKzIrMSs0XQotICAgIFszLCA1LCA2LCAxMF0KLQotICAgID4+PiB4ID0gcmFuZG9tLnJhbmRvbSgpICogY3VtZGlzdFstMV0KLSAgICA+Pj4gY2hvaWNlc1tiaXNlY3QuYmlzZWN0KGN1bWRpc3QsIHgpXQotICAgICdCbHVlJworICAgZGF0YSA9IDEsIDIsIDQsIDQsIDEwCisgICBtZWFucyA9IHNvcnRlZChtZWFuKGNob2ljZXMoZGF0YSwgaz01KSkgZm9yIGkgaW4gcmFuZ2UoMjApKQorICAgcHJpbnQoJ1RoZSBzYW1wbGUgbWVhbiBvZiB7Oi4xZn0gaGFzIGEgOTAlIGNvbmZpZGVuY2UgaW50ZXJ2YWwgJworICAgICAgICAgJ2Zyb20gezouMWZ9IHRvIHs6LjFmfScuZm9ybWF0KG1lYW4oZGF0YSksIG1lYW5zWzFdLCBtZWFuc1stMl0pKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvcmUucnN0IGIvRG9jL2xpYnJhcnkvcmUucnN0CmluZGV4IDFjYTYyMWUuLmM5ZjIyNjMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3JlLnJzdAorKysgYi9Eb2MvbGlicmFyeS9yZS5yc3QKQEAgLTIzMCwxMiArMjMwLDggQEAKICAgIGZsYWdzIGFyZSBkZXNjcmliZWQgaW4gOnJlZjpgY29udGVudHMtb2YtbW9kdWxlLXJlYC4pIFRoaXMKICAgIGlzIHVzZWZ1bCBpZiB5b3Ugd2lzaCB0byBpbmNsdWRlIHRoZSBmbGFncyBhcyBwYXJ0IG9mIHRoZSByZWd1bGFyCiAgICBleHByZXNzaW9uLCBpbnN0ZWFkIG9mIHBhc3NpbmcgYSAqZmxhZyogYXJndW1lbnQgdG8gdGhlCi0gICA6ZnVuYzpgcmUuY29tcGlsZWAgZnVuY3Rpb24uCi0KLSAgIE5vdGUgdGhhdCB0aGUgYGAoP3gpYGAgZmxhZyBjaGFuZ2VzIGhvdyB0aGUgZXhwcmVzc2lvbiBpcyBwYXJzZWQuIEl0IHNob3VsZCBiZQotICAgdXNlZCBmaXJzdCBpbiB0aGUgZXhwcmVzc2lvbiBzdHJpbmcsIG9yIGFmdGVyIG9uZSBvciBtb3JlIHdoaXRlc3BhY2UgY2hhcmFjdGVycy4KLSAgIElmIHRoZXJlIGFyZSBub24td2hpdGVzcGFjZSBjaGFyYWN0ZXJzIGJlZm9yZSB0aGUgZmxhZywgdGhlIHJlc3VsdHMgYXJlCi0gICB1bmRlZmluZWQuCisgICA6ZnVuYzpgcmUuY29tcGlsZWAgZnVuY3Rpb24uICBGbGFncyBzaG91bGQgYmUgdXNlZCBmaXJzdCBpbiB0aGUKKyAgIGV4cHJlc3Npb24gc3RyaW5nLgogCiBgYCg/Oi4uLilgYAogICAgQSBub24tY2FwdHVyaW5nIHZlcnNpb24gb2YgcmVndWxhciBwYXJlbnRoZXNlcy4gIE1hdGNoZXMgd2hhdGV2ZXIgcmVndWxhcgpAQCAtMjQzLDYgKzIzOSwxNiBAQAogICAgKmNhbm5vdCogYmUgcmV0cmlldmVkIGFmdGVyIHBlcmZvcm1pbmcgYSBtYXRjaCBvciByZWZlcmVuY2VkIGxhdGVyIGluIHRoZQogICAgcGF0dGVybi4KIAorYGAoP2ltc3gtaW1zeDouLi4pYGAKKyAgIChaZXJvIG9yIG1vcmUgbGV0dGVycyBmcm9tIHRoZSBzZXQgYGAnaSdgYCwgYGAnbSdgYCwgYGAncydgYCwgYGAneCdgYCwKKyAgIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYGAnLSdgYCBmb2xsb3dlZCBieSBvbmUgb3IgbW9yZSBsZXR0ZXJzIGZyb20gdGhlCisgICBzYW1lIHNldC4pICBUaGUgbGV0dGVycyBzZXQgb3IgcmVtb3ZlcyB0aGUgY29ycmVzcG9uZGluZyBmbGFnczoKKyAgIDpjb25zdDpgcmUuSWAgKGlnbm9yZSBjYXNlKSwgOmNvbnN0OmByZS5NYCAobXVsdGktbGluZSksIDpjb25zdDpgcmUuU2AKKyAgIChkb3QgbWF0Y2hlcyBhbGwpLCBhbmQgOmNvbnN0OmByZS5YYCAodmVyYm9zZSksIGZvciB0aGUgcGFydCBvZiB0aGUKKyAgIGV4cHJlc3Npb24uICAoVGhlIGZsYWdzIGFyZSBkZXNjcmliZWQgaW4gOnJlZjpgY29udGVudHMtb2YtbW9kdWxlLXJlYC4pCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiBgYCg/UDxuYW1lPi4uLilgYAogICAgU2ltaWxhciB0byByZWd1bGFyIHBhcmVudGhlc2VzLCBidXQgdGhlIHN1YnN0cmluZyBtYXRjaGVkIGJ5IHRoZSBncm91cCBpcwogICAgYWNjZXNzaWJsZSB2aWEgdGhlIHN5bWJvbGljIGdyb3VwIG5hbWUgKm5hbWUqLiAgR3JvdXAgbmFtZXMgbXVzdCBiZSB2YWxpZApAQCAtMzI3LDggKzMzMyw5IEBACiAKIAogVGhlIHNwZWNpYWwgc2VxdWVuY2VzIGNvbnNpc3Qgb2YgYGAnXCdgYCBhbmQgYSBjaGFyYWN0ZXIgZnJvbSB0aGUgbGlzdCBiZWxvdy4KLUlmIHRoZSBvcmRpbmFyeSBjaGFyYWN0ZXIgaXMgbm90IG9uIHRoZSBsaXN0LCB0aGVuIHRoZSByZXN1bHRpbmcgUkUgd2lsbCBtYXRjaAotdGhlIHNlY29uZCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBcJGBgIG1hdGNoZXMgdGhlIGNoYXJhY3RlciBgYCckJ2BgLgorSWYgdGhlIG9yZGluYXJ5IGNoYXJhY3RlciBpcyBub3QgYW4gQVNDSUkgZGlnaXQgb3IgYW4gQVNDSUkgbGV0dGVyLCB0aGVuIHRoZQorcmVzdWx0aW5nIFJFIHdpbGwgbWF0Y2ggdGhlIHNlY29uZCBjaGFyYWN0ZXIuICBGb3IgZXhhbXBsZSwgYGBcJGBgIG1hdGNoZXMgdGhlCitjaGFyYWN0ZXIgYGAnJCdgYC4KIAogYGBcbnVtYmVyYGAKICAgIE1hdGNoZXMgdGhlIGNvbnRlbnRzIG9mIHRoZSBncm91cCBvZiB0aGUgc2FtZSBudW1iZXIuICBHcm91cHMgYXJlIG51bWJlcmVkCkBAIC00NDgsOSArNDU1LDggQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCiAgICBUaGUgYGAnXHUnYGAgYW5kIGBgJ1xVJ2BgIGVzY2FwZSBzZXF1ZW5jZXMgaGF2ZSBiZWVuIGFkZGVkLgogCi0uLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjUgMy42Ci0gICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEKLSAgIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluIFB5dGhvbiAzLjYuCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgVW5rbm93biBlc2NhcGVzIGNvbnNpc3Rpbmcgb2YgYGAnXCdgYCBhbmQgYW4gQVNDSUkgbGV0dGVyIG5vdyBhcmUgZXJyb3JzLgogCiAKIC4uIHNlZWFsc286OgpAQCAtNTM4LDExICs1NDQsMTEgQEAKICAgIGN1cnJlbnQgbG9jYWxlLiBUaGUgdXNlIG9mIHRoaXMgZmxhZyBpcyBkaXNjb3VyYWdlZCBhcyB0aGUgbG9jYWxlIG1lY2hhbmlzbQogICAgaXMgdmVyeSB1bnJlbGlhYmxlLCBhbmQgaXQgb25seSBoYW5kbGVzIG9uZSAiY3VsdHVyZSIgYXQgYSB0aW1lIGFueXdheTsKICAgIHlvdSBzaG91bGQgdXNlIFVuaWNvZGUgbWF0Y2hpbmcgaW5zdGVhZCwgd2hpY2ggaXMgdGhlIGRlZmF1bHQgaW4gUHl0aG9uIDMKLSAgIGZvciBVbmljb2RlIChzdHIpIHBhdHRlcm5zLiBUaGlzIGZsYWcgbWFrZXMgc2Vuc2Ugb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zLgorICAgZm9yIFVuaWNvZGUgKHN0cikgcGF0dGVybnMuIFRoaXMgZmxhZyBjYW4gYmUgdXNlZCBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIERlcHJlY2F0ZWQgdGhlIHVzZSBvZiAgOmNvbnN0OmByZS5MT0NBTEVgIHdpdGggc3RyaW5nIHBhdHRlcm5zIG9yCi0gICAgICA6Y29uc3Q6YHJlLkFTQ0lJYC4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6Y29uc3Q6YHJlLkxPQ0FMRWAgY2FuIGJlIHVzZWQgb25seSB3aXRoIGJ5dGVzIHBhdHRlcm5zIGFuZCBpcworICAgICAgbm90IGNvbXBhdGlibGUgd2l0aCA6Y29uc3Q6YHJlLkFTQ0lJYC4KIAogCiAuLiBkYXRhOjogTQpAQCAtNzQ4LDkgKzc1NCw4IEBACiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVW5tYXRjaGVkIGdyb3VwcyBhcmUgcmVwbGFjZWQgd2l0aCBhbiBlbXB0eSBzdHJpbmcuCiAKLSAgIC4uIGRlcHJlY2F0ZWQtcmVtb3ZlZDo6IDMuNSAzLjYKLSAgICAgIFVua25vd24gZXNjYXBlcyBjb25zaXN0IG9mIGBgJ1wnYGAgYW5kIEFTQ0lJIGxldHRlciBub3cgcmFpc2UgYQotICAgICAgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4gaW4gUHl0aG9uIDMuNi4KKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBVbmtub3duIGVzY2FwZXMgY29uc2lzdGluZyBvZiBgYCdcJ2BgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IGFyZSBlcnJvcnMuCiAKIAogLi4gZnVuY3Rpb246OiBzdWJuKHBhdHRlcm4sIHJlcGwsIHN0cmluZywgY291bnQ9MCwgZmxhZ3M9MCkKQEAgLTEwMTYsNiArMTAyMSwyMiBAQAogICAgICAgJ2MzJwogCiAKKy4uIG1ldGhvZDo6IG1hdGNoLl9fZ2V0aXRlbV9fKGcpCisKKyAgIFRoaXMgaXMgaWRlbnRpY2FsIHRvIGBgbS5ncm91cChnKWBgLiAgVGhpcyBhbGxvd3MgZWFzaWVyIGFjY2VzcyB0bworICAgYW4gaW5kaXZpZHVhbCBncm91cCBmcm9tIGEgbWF0Y2g6CisKKyAgICAgID4+PiBtID0gcmUubWF0Y2gociIoXHcrKSAoXHcrKSIsICJJc2FhYyBOZXd0b24sIHBoeXNpY2lzdCIpCisgICAgICA+Pj4gbVswXSAgICAgICAjIFRoZSBlbnRpcmUgbWF0Y2gKKyAgICAgICdJc2FhYyBOZXd0b24nCisgICAgICA+Pj4gbVsxXSAgICAgICAjIFRoZSBmaXJzdCBwYXJlbnRoZXNpemVkIHN1Ymdyb3VwLgorICAgICAgJ0lzYWFjJworICAgICAgPj4+IG1bMl0gICAgICAgIyBUaGUgc2Vjb25kIHBhcmVudGhlc2l6ZWQgc3ViZ3JvdXAuCisgICAgICAnTmV3dG9uJworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBtZXRob2Q6OiBtYXRjaC5ncm91cHMoZGVmYXVsdD1Ob25lKQogCiAgICBSZXR1cm4gYSB0dXBsZSBjb250YWluaW5nIGFsbCB0aGUgc3ViZ3JvdXBzIG9mIHRoZSBtYXRjaCwgZnJvbSAxIHVwIHRvIGhvd2V2ZXIKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdCBiL0RvYy9saWJyYXJ5L3JlYWRsaW5lLnJzdAppbmRleCA0ZDNjMDk5Li4zN2U0MDBlIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9yZWFkbGluZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvcmVhZGxpbmUucnN0CkBAIC0xNjcsNiArMTY3LDIwIEBACiAgICBUaGlzIGNhbGxzIDpjOmZ1bmM6YGFkZF9oaXN0b3J5YCBpbiB0aGUgdW5kZXJseWluZyBsaWJyYXJ5LgogCiAKKy4uIGZ1bmN0aW9uOjogc2V0X2F1dG9faGlzdG9yeShlbmFibGVkKQorCisgICBFbmFibGUgb3IgZGlzYWJsZSBhdXRvbWF0aWMgY2FsbHMgdG8gOmM6ZnVuYzpgYWRkX2hpc3RvcnlgIHdoZW4gcmVhZGluZworICAgaW5wdXQgdmlhIHJlYWRsaW5lLiAgVGhlICplbmFibGVkKiBhcmd1bWVudCBzaG91bGQgYmUgYSBCb29sZWFuIHZhbHVlCisgICB0aGF0IHdoZW4gdHJ1ZSwgZW5hYmxlcyBhdXRvIGhpc3RvcnksIGFuZCB0aGF0IHdoZW4gRmFsc2UsIGRpc2FibGVzCisgICBhdXRvIGhpc3RvcnkuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBpbXBsLWRldGFpbDo6CisgICAgICBBdXRvIGhpc3RvcnkgaXMgZW5hYmxlZCBieSBkZWZhdWx0LCBhbmQgY2hhbmdlcyB0byB0aGlzIGRvIG5vdCBwZXJzaXN0CisgICAgICBhY3Jvc3MgbXVsdGlwbGUgc2Vzc2lvbnMuCisKKwogU3RhcnR1cCBob29rcwogLS0tLS0tLS0tLS0tLQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdCBiL0RvYy9saWJyYXJ5L3NlY3JldHMucnN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZjg0OGYKLS0tIC9kZXYvbnVsbAorKysgYi9Eb2MvbGlicmFyeS9zZWNyZXRzLnJzdApAQCAtMCwwICsxLDE5OCBAQAorOm1vZDpgc2VjcmV0c2AgLS0tIEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisuLiBtb2R1bGU6OiBzZWNyZXRzCisgICA6c3lub3BzaXM6IEdlbmVyYXRlIHNlY3VyZSByYW5kb20gbnVtYmVycyBmb3IgbWFuYWdpbmcgc2VjcmV0cy4KKworLi4gbW9kdWxlYXV0aG9yOjogU3RldmVuIEQnQXByYW5vIDxzdGV2ZStweXRob25AcGVhcndvb2QuaW5mbz4KKy4uIHNlY3Rpb25hdXRob3I6OiBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPgorLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIHRlc3RzZXR1cDo6CisKKyAgIGZyb20gc2VjcmV0cyBpbXBvcnQgKgorICAgX19uYW1lX18gPSAnPGRvY3Rlc3Q+JworCisqKlNvdXJjZSBjb2RlOioqIDpzb3VyY2U6YExpYi9zZWNyZXRzLnB5YAorCistLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgaXMgdXNlZCBmb3IgZ2VuZXJhdGluZyBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcKK3JhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvciBtYW5hZ2luZyBkYXRhIHN1Y2ggYXMgcGFzc3dvcmRzLCBhY2NvdW50CithdXRoZW50aWNhdGlvbiwgc2VjdXJpdHkgdG9rZW5zLCBhbmQgcmVsYXRlZCBzZWNyZXRzLgorCitJbiBwYXJ0aWN1bGFybHksIDptb2Q6YHNlY3JldHNgIHNob3VsZCBiZSB1c2VkIGluIHByZWZlcmVuY2UgdG8gdGhlCitkZWZhdWx0IHBzZXVkby1yYW5kb20gbnVtYmVyIGdlbmVyYXRvciBpbiB0aGUgOm1vZDpgcmFuZG9tYCBtb2R1bGUsIHdoaWNoCitpcyBkZXNpZ25lZCBmb3IgbW9kZWxsaW5nIGFuZCBzaW11bGF0aW9uLCBub3Qgc2VjdXJpdHkgb3IgY3J5cHRvZ3JhcGh5LgorCisuLiBzZWVhbHNvOjoKKworICAgOnBlcDpgNTA2YAorCisKK1JhbmRvbSBudW1iZXJzCistLS0tLS0tLS0tLS0tLQorCitUaGUgOm1vZDpgc2VjcmV0c2AgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgbW9zdCBzZWN1cmUgc291cmNlIG9mCityYW5kb21uZXNzIHRoYXQgeW91ciBvcGVyYXRpbmcgc3lzdGVtIHByb3ZpZGVzLgorCisuLiBjbGFzczo6IFN5c3RlbVJhbmRvbQorCisgICBBIGNsYXNzIGZvciBnZW5lcmF0aW5nIHJhbmRvbSBudW1iZXJzIHVzaW5nIHRoZSBoaWdoZXN0LXF1YWxpdHkKKyAgIHNvdXJjZXMgcHJvdmlkZWQgYnkgdGhlIG9wZXJhdGluZyBzeXN0ZW0uICBTZWUKKyAgIDpjbGFzczpgcmFuZG9tLlN5c3RlbVJhbmRvbWAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworLi4gZnVuY3Rpb246OiBjaG9pY2Uoc2VxdWVuY2UpCisKKyAgIFJldHVybiBhIHJhbmRvbWx5LWNob3NlbiBlbGVtZW50IGZyb20gYSBub24tZW1wdHkgc2VxdWVuY2UuCisKKy4uIGZ1bmN0aW9uOjogcmFuZGJlbG93KG4pCisKKyAgIFJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCAqbiopLgorCisuLiBmdW5jdGlvbjo6IHJhbmRiaXRzKGspCisKKyAgIFJldHVybiBhbiBpbnQgd2l0aCAqayogcmFuZG9tIGJpdHMuCisKKworR2VuZXJhdGluZyB0b2tlbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKK1RoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBnZW5lcmF0aW5nIHNlY3VyZQordG9rZW5zLCBzdWl0YWJsZSBmb3IgYXBwbGljYXRpb25zIHN1Y2ggYXMgcGFzc3dvcmQgcmVzZXRzLAoraGFyZC10by1ndWVzcyBVUkxzLCBhbmQgc2ltaWxhci4KKworLi4gZnVuY3Rpb246OiB0b2tlbl9ieXRlcyhbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gYnl0ZSBzdHJpbmcgY29udGFpbmluZyAqbmJ5dGVzKiBudW1iZXIgb2YgYnl0ZXMuCisgICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzCisgICB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX2J5dGVzKDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgIGInXHhlYnJceDE3RCp0XHhhZVx4ZDRceGUzU1x4YjZceGUyXHhlYlAxXHg4YicKKworCisuLiBmdW5jdGlvbjo6IHRva2VuX2hleChbbmJ5dGVzPU5vbmVdKQorCisgICBSZXR1cm4gYSByYW5kb20gdGV4dCBzdHJpbmcsIGluIGhleGFkZWNpbWFsLiAgVGhlIHN0cmluZyBoYXMgKm5ieXRlcyoKKyAgIHJhbmRvbSBieXRlcywgZWFjaCBieXRlIGNvbnZlcnRlZCB0byB0d28gaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzCisgICBgYE5vbmVgYCBvciBub3Qgc3VwcGxpZWQsIGEgcmVhc29uYWJsZSBkZWZhdWx0IGlzIHVzZWQuCisKKyAgIC4uIGRvY3Rlc3Q6OgorCisgICAgICA+Pj4gdG9rZW5faGV4KDE2KSAgI2RvY3Rlc3Q6K1NLSVAKKyAgICAgICdmOWJmNzhiOWExOGNlNmQ0NmEwY2QyYjBiODZkZjlkYScKKworLi4gZnVuY3Rpb246OiB0b2tlbl91cmxzYWZlKFtuYnl0ZXM9Tm9uZV0pCisKKyAgIFJldHVybiBhIHJhbmRvbSBVUkwtc2FmZSB0ZXh0IHN0cmluZywgY29udGFpbmluZyAqbmJ5dGVzKiByYW5kb20KKyAgIGJ5dGVzLiAgVGhlIHRleHQgaXMgQmFzZTY0IGVuY29kZWQsIHNvIG9uIGF2ZXJhZ2UgZWFjaCBieXRlIHJlc3VsdHMKKyAgIGluIGFwcHJveGltYXRlbHkgMS4zIGNoYXJhY3RlcnMuICBJZiAqbmJ5dGVzKiBpcyBgYE5vbmVgYCBvciBub3QKKyAgIHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAuLiBkb2N0ZXN0OjoKKworICAgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICAgJ0RybWh6ZTZFUGN2MGZOXzgxQmotbkEnCisKKworSG93IG1hbnkgYnl0ZXMgc2hvdWxkIHRva2VucyB1c2U/CiteXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4KKworVG8gYmUgc2VjdXJlIGFnYWluc3QKK2BicnV0ZS1mb3JjZSBhdHRhY2tzIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9CcnV0ZS1mb3JjZV9hdHRhY2s+YF8sCit0b2tlbnMgbmVlZCB0byBoYXZlIHN1ZmZpY2llbnQgcmFuZG9tbmVzcy4gIFVuZm9ydHVuYXRlbHksIHdoYXQgaXMKK2NvbnNpZGVyZWQgc3VmZmljaWVudCB3aWxsIG5lY2Vzc2FyaWx5IGluY3JlYXNlIGFzIGNvbXB1dGVycyBnZXQgbW9yZQorcG93ZXJmdWwgYW5kIGFibGUgdG8gbWFrZSBtb3JlIGd1ZXNzZXMgaW4gYSBzaG9ydGVyIHBlcmlvZC4gIEFzIG9mIDIwMTUsCitpdCBpcyBiZWxpZXZlZCB0aGF0IDMyIGJ5dGVzICgyNTYgYml0cykgb2YgcmFuZG9tbmVzcyBpcyBzdWZmaWNpZW50IGZvcgordGhlIHR5cGljYWwgdXNlLWNhc2UgZXhwZWN0ZWQgZm9yIHRoZSA6bW9kOmBzZWNyZXRzYCBtb2R1bGUuCisKK0ZvciB0aG9zZSB3aG8gd2FudCB0byBtYW5hZ2UgdGhlaXIgb3duIHRva2VuIGxlbmd0aCwgeW91IGNhbiBleHBsaWNpdGx5CitzcGVjaWZ5IGhvdyBtdWNoIHJhbmRvbW5lc3MgaXMgdXNlZCBmb3IgdG9rZW5zIGJ5IGdpdmluZyBhbiA6Y2xhc3M6YGludGAKK2FyZ3VtZW50IHRvIHRoZSB2YXJpb3VzIGBgdG9rZW5fKmBgIGZ1bmN0aW9ucy4gIFRoYXQgYXJndW1lbnQgaXMgdGFrZW4KK2FzIHRoZSBudW1iZXIgb2YgYnl0ZXMgb2YgcmFuZG9tbmVzcyB0byB1c2UuCisKK090aGVyd2lzZSwgaWYgbm8gYXJndW1lbnQgaXMgcHJvdmlkZWQsIG9yIGlmIHRoZSBhcmd1bWVudCBpcyBgYE5vbmVgYCwKK3RoZSBgYHRva2VuXypgYCBmdW5jdGlvbnMgd2lsbCB1c2UgYSByZWFzb25hYmxlIGRlZmF1bHQgaW5zdGVhZC4KKworLi4gbm90ZTo6CisKKyAgIFRoYXQgZGVmYXVsdCBpcyBzdWJqZWN0IHRvIGNoYW5nZSBhdCBhbnkgdGltZSwgaW5jbHVkaW5nIGR1cmluZworICAgbWFpbnRlbmFuY2UgcmVsZWFzZXMuCisKKworT3RoZXIgZnVuY3Rpb25zCistLS0tLS0tLS0tLS0tLS0KKworLi4gZnVuY3Rpb246OiBjb21wYXJlX2RpZ2VzdChhLCBiKQorCisgICBSZXR1cm4gYGBUcnVlYGAgaWYgc3RyaW5ncyAqYSogYW5kICpiKiBhcmUgZXF1YWwsIG90aGVyd2lzZSBgYEZhbHNlYGAsCisgICBpbiBzdWNoIGEgd2F5IGFzIHRvIHJlZHVjZSB0aGUgcmlzayBvZgorICAgYHRpbWluZyBhdHRhY2tzIDxodHRwOi8vY29kYWhhbGUuY29tL2EtbGVzc29uLWluLXRpbWluZy1hdHRhY2tzLz5gXy4KKyAgIFNlZSA6ZnVuYzpgaG1hYy5jb21wYXJlX2RpZ2VzdGAgZm9yIGFkZGl0aW9uYWwgZGV0YWlscy4KKworCitSZWNpcGVzIGFuZCBiZXN0IHByYWN0aWNlcworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworVGhpcyBzZWN0aW9uIHNob3dzIHJlY2lwZXMgYW5kIGJlc3QgcHJhY3RpY2VzIGZvciB1c2luZyA6bW9kOmBzZWNyZXRzYAordG8gbWFuYWdlIGEgYmFzaWMgbGV2ZWwgb2Ygc2VjdXJpdHkuCisKK0dlbmVyYXRlIGFuIGVpZ2h0LWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQ6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgaW1wb3J0IHN0cmluZworICAgYWxwaGFiZXQgPSBzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMKKyAgIHBhc3N3b3JkID0gJycuam9pbihjaG9pY2UoYWxwaGFiZXQpIGZvciBpIGluIHJhbmdlKDgpKQorCisKKy4uIG5vdGU6OgorCisgICBBcHBsaWNhdGlvbnMgc2hvdWxkIG5vdAorICAgYHN0b3JlIHBhc3N3b3JkcyBpbiBhIHJlY292ZXJhYmxlIGZvcm1hdCA8aHR0cDovL2N3ZS5taXRyZS5vcmcvZGF0YS9kZWZpbml0aW9ucy8yNTcuaHRtbD5gXywKKyAgIHdoZXRoZXIgcGxhaW4gdGV4dCBvciBlbmNyeXB0ZWQuICBUaGV5IHNob3VsZCBiZSBzYWx0ZWQgYW5kIGhhc2hlZAorICAgdXNpbmcgYSBjcnlwdG9ncmFwaGljYWxseS1zdHJvbmcgb25lLXdheSAoaXJyZXZlcnNpYmxlKSBoYXNoIGZ1bmN0aW9uLgorCisKK0dlbmVyYXRlIGEgdGVuLWNoYXJhY3RlciBhbHBoYW51bWVyaWMgcGFzc3dvcmQgd2l0aCBhdCBsZWFzdCBvbmUKK2xvd2VyY2FzZSBjaGFyYWN0ZXIsIGF0IGxlYXN0IG9uZSB1cHBlcmNhc2UgY2hhcmFjdGVyLCBhbmQgYXQgbGVhc3QKK3RocmVlIGRpZ2l0czoKKworLi4gdGVzdGNvZGU6OgorCisgICBpbXBvcnQgc3RyaW5nCisgICBhbHBoYWJldCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cworICAgd2hpbGUgVHJ1ZToKKyAgICAgICBwYXNzd29yZCA9ICcnLmpvaW4oY2hvaWNlKGFscGhhYmV0KSBmb3IgaSBpbiByYW5nZSgxMCkpCisgICAgICAgaWYgKGFueShjLmlzbG93ZXIoKSBmb3IgYyBpbiBwYXNzd29yZCkKKyAgICAgICAgICAgICAgIGFuZCBhbnkoYy5pc3VwcGVyKCkgZm9yIGMgaW4gcGFzc3dvcmQpCisgICAgICAgICAgICAgICBhbmQgc3VtKGMuaXNkaWdpdCgpIGZvciBjIGluIHBhc3N3b3JkKSA+PSAzKToKKyAgICAgICAgICAgYnJlYWsKKworCitHZW5lcmF0ZSBhbiBgWEtDRC1zdHlsZSBwYXNzcGhyYXNlIDxodHRwOi8veGtjZC5jb20vOTM2Lz5gXzoKKworLi4gdGVzdGNvZGU6OgorCisgICAjIE9uIHN0YW5kYXJkIExpbnV4IHN5c3RlbXMsIHVzZSBhIGNvbnZlbmllbnQgZGljdGlvbmFyeSBmaWxlLgorICAgIyBPdGhlciBwbGF0Zm9ybXMgbWF5IG5lZWQgdG8gcHJvdmlkZSB0aGVpciBvd24gd29yZC1saXN0LgorICAgd2l0aCBvcGVuKCcvdXNyL3NoYXJlL2RpY3Qvd29yZHMnKSBhcyBmOgorICAgICAgIHdvcmRzID0gW3dvcmQuc3RyaXAoKSBmb3Igd29yZCBpbiBmXQorICAgICAgIHBhc3N3b3JkID0gJyAnLmpvaW4oY2hvaWNlKHdvcmRzKSBmb3IgaSBpbiByYW5nZSg0KSkKKworCitHZW5lcmF0ZSBhIGhhcmQtdG8tZ3Vlc3MgdGVtcG9yYXJ5IFVSTCBjb250YWluaW5nIGEgc2VjdXJpdHkgdG9rZW4KK3N1aXRhYmxlIGZvciBwYXNzd29yZCByZWNvdmVyeSBhcHBsaWNhdGlvbnM6CisKKy4uIHRlc3Rjb2RlOjoKKworICAgdXJsID0gJ2h0dHBzOi8vbXlkb21haW4uY29tL3Jlc2V0PScgKyB0b2tlbl91cmxzYWZlKCkKKworCisKKy4uCisgICAjIFRoaXMgbW9kZWxpbmUgbXVzdCBhcHBlYXIgd2l0aGluIHRoZSBsYXN0IHRlbiBsaW5lcyBvZiB0aGUgZmlsZS4KKyAgIGthdGU6IGluZGVudC13aWR0aCAzOyByZW1vdmUtdHJhaWxpbmctc3BhY2Ugb247IHJlcGxhY2UtdGFicyBvbjsgZW5jb2RpbmcgdXRmLTg7CmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0IGIvRG9jL2xpYnJhcnkvc2VsZWN0LnJzdAppbmRleCBhNDY1ZDI1Li5jNjIxOTQ5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zZWxlY3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NlbGVjdC5yc3QKQEAgLTI2OCwzNSArMjY4LDQzIEBACiAKICAgICpldmVudG1hc2sqCiAKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgQ29uc3RhbnQgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICs9PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgIHwgQXZhaWxhYmxlIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9VVGAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFBSSWAgICAgIHwgVXJnZW50IGRhdGEgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgIHwgRXJyb3IgY29uZGl0aW9uIGhhcHBlbmVkIG9uIHRoZSBhc3NvYy4gZmQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEhVUGAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTEVUYCAgICAgIHwgU2V0IEVkZ2UgVHJpZ2dlciBiZWhhdmlvciwgdGhlIGRlZmF1bHQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE9ORVNIT1RgIHwgU2V0IG9uZS1zaG90IGJlaGF2aW9yLiBBZnRlciBvbmUgZXZlbnQgaXMgICAgIHwKLSAgIHwgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMSU5gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFJEQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSTk9STWAgIHwgRXF1aXZhbGVudCB0byA6Y29uc3Q6YEVQT0xMT1VUYCAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgIHwgUHJpb3JpdHkgZGF0YSBtYXkgYmUgd3JpdHRlbi4gICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmBFUE9MTE1TR2AgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKKyAgIHwgOmNvbnN0OmBFUE9MTElOYCAgICAgICAgfCBBdmFpbGFibGUgZm9yIHJlYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExPVVRgICAgICAgIHwgQXZhaWxhYmxlIGZvciB3cml0ZSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMUFJJYCAgICAgICB8IFVyZ2VudCBkYXRhIGZvciByZWFkICAgICAgICAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTEVSUmAgICAgICAgfCBFcnJvciBjb25kaXRpb24gaGFwcGVuZWQgb24gdGhlIGFzc29jLiBmZCAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExIVVBgICAgICAgIHwgSGFuZyB1cCBoYXBwZW5lZCBvbiB0aGUgYXNzb2MuIGZkICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVRgICAgICAgICB8IFNldCBFZGdlIFRyaWdnZXIgYmVoYXZpb3IsIHRoZSBkZWZhdWx0IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGV2ZWwgVHJpZ2dlciBiZWhhdmlvciAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMT05FU0hPVGAgICB8IFNldCBvbmUtc2hvdCBiZWhhdmlvci4gQWZ0ZXIgb25lIGV2ZW50IGlzICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgcHVsbGVkIG91dCwgdGhlIGZkIGlzIGludGVybmFsbHkgZGlzYWJsZWQgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMRVhDTFVTSVZFYCB8IFdha2Ugb25seSBvbmUgZXBvbGwgb2JqZWN0IHdoZW4gdGhlICAgICAgICAgICB8CisgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXNzb2NpYXRlZCBmZCBoYXMgYW4gZXZlbnQuIFRoZSBkZWZhdWx0IChpZiAgIHwKKyAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgfCB0aGlzIGZsYWcgaXMgbm90IHNldCkgaXMgdG8gd2FrZSBhbGwgZXBvbGwgICAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IG9iamVjdHMgcG9sbGluZyBvbiBvbiBhIGZkLiAgICAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJESFVQYCAgICAgfCBTdHJlYW0gc29ja2V0IHBlZXIgY2xvc2VkIGNvbm5lY3Rpb24gb3Igc2h1dCAgfAorICAgfCAgICAgICAgICAgICAgICAgICAgICAgICB8IGRvd24gd3JpdGluZyBoYWxmIG9mIGNvbm5lY3Rpb24uICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFJETk9STWAgICAgfCBFcXVpdmFsZW50IHRvIDpjb25zdDpgRVBPTExJTmAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExSREJBTkRgICAgIHwgUHJpb3JpdHkgZGF0YSBiYW5kIGNhbiBiZSByZWFkLiAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YEVQT0xMV1JOT1JNYCAgICB8IEVxdWl2YWxlbnQgdG8gOmNvbnN0OmBFUE9MTE9VVGAgICAgICAgICAgICAgICB8CisgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKKyAgIHwgOmNvbnN0OmBFUE9MTFdSQkFORGAgICAgfCBQcmlvcml0eSBkYXRhIG1heSBiZSB3cml0dGVuLiAgICAgICAgICAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IDpjb25zdDpgRVBPTExNU0dgICAgICAgIHwgSWdub3JlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCiAKIC4uIG1ldGhvZDo6IGVwb2xsLmNsb3NlKCkKQEAgLTM4NSw2ICszOTMsOSBAQAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExIVVBgICB8IEh1bmcgdXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKworICAgfCA6Y29uc3Q6YFBPTExSREhVUGB8IFN0cmVhbSBzb2NrZXQgcGVlciBjbG9zZWQgY29ubmVjdGlvbiwgb3IgfAorICAgfCAgICAgICAgICAgICAgICAgICB8IHNodXQgZG93biB3cml0aW5nIGhhbGYgb2YgY29ubmVjdGlvbiAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogICAgfCA6Y29uc3Q6YFBPTExOVkFMYCB8IEludmFsaWQgcmVxdWVzdDogZGVzY3JpcHRvciBub3Qgb3BlbiAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaGxleC5yc3QgYi9Eb2MvbGlicmFyeS9zaGxleC5yc3QKaW5kZXggZTgxZjk4Mi4uMWE4OWJmNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc2hsZXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NobGV4LnJzdApAQCAtNzMsMTEgKzczLDExIEBACiBUaGUgOm1vZDpgc2hsZXhgIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgY2xhc3M6CiAKIAotLi4gY2xhc3M6OiBzaGxleChpbnN0cmVhbT1Ob25lLCBpbmZpbGU9Tm9uZSwgcG9zaXg9RmFsc2UpCisuLiBjbGFzczo6IHNobGV4KGluc3RyZWFtPU5vbmUsIGluZmlsZT1Ob25lLCBwb3NpeD1GYWxzZSwgcHVuY3R1YXRpb25fY2hhcnM9RmFsc2UpCiAKICAgIEEgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIG9yIHN1YmNsYXNzIGluc3RhbmNlIGlzIGEgbGV4aWNhbCBhbmFseXplcgogICAgb2JqZWN0LiAgVGhlIGluaXRpYWxpemF0aW9uIGFyZ3VtZW50LCBpZiBwcmVzZW50LCBzcGVjaWZpZXMgd2hlcmUgdG8gcmVhZAotICAgY2hhcmFjdGVycyBmcm9tLiBJdCBtdXN0IGJlIGEgZmlsZS0vc3RyZWFtLWxpa2Ugb2JqZWN0IHdpdGgKKyAgIGNoYXJhY3RlcnMgZnJvbS4gIEl0IG11c3QgYmUgYSBmaWxlLS9zdHJlYW0tbGlrZSBvYmplY3Qgd2l0aAogICAgOm1ldGg6YH5pby5UZXh0SU9CYXNlLnJlYWRgIGFuZCA6bWV0aDpgfmlvLlRleHRJT0Jhc2UucmVhZGxpbmVgIG1ldGhvZHMsIG9yCiAgICBhIHN0cmluZy4gIElmIG5vIGFyZ3VtZW50IGlzIGdpdmVuLCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gYGBzeXMuc3RkaW5gYC4KICAgIFRoZSBzZWNvbmQgb3B0aW9uYWwgYXJndW1lbnQgaXMgYSBmaWxlbmFtZSBzdHJpbmcsIHdoaWNoIHNldHMgdGhlIGluaXRpYWwKQEAgLTg3LDggKzg3LDE5IEBACiAgICB3aGVuICpwb3NpeCogaXMgbm90IHRydWUgKGRlZmF1bHQpLCB0aGUgOmNsYXNzOmB+c2hsZXguc2hsZXhgIGluc3RhbmNlIHdpbGwKICAgIG9wZXJhdGUgaW4gY29tcGF0aWJpbGl0eSBtb2RlLiAgV2hlbiBvcGVyYXRpbmcgaW4gUE9TSVggbW9kZSwKICAgIDpjbGFzczpgfnNobGV4LnNobGV4YCB3aWxsIHRyeSB0byBiZSBhcyBjbG9zZSBhcyBwb3NzaWJsZSB0byB0aGUgUE9TSVggc2hlbGwKLSAgIHBhcnNpbmcgcnVsZXMuCisgICBwYXJzaW5nIHJ1bGVzLiAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogYXJndW1lbnQgcHJvdmlkZXMgYSB3YXkgdG8gbWFrZSB0aGUKKyAgIGJlaGF2aW91ciBldmVuIGNsb3NlciB0byBob3cgcmVhbCBzaGVsbHMgcGFyc2UuICBUaGlzIGNhbiB0YWtlIGEgbnVtYmVyIG9mCisgICB2YWx1ZXM6IHRoZSBkZWZhdWx0IHZhbHVlLCBgYEZhbHNlYGAsIHByZXNlcnZlcyB0aGUgYmVoYXZpb3VyIHNlZW4gdW5kZXIKKyAgIFB5dGhvbiAzLjUgYW5kIGVhcmxpZXIuICBJZiBzZXQgdG8gYGBUcnVlYGAsIHRoZW4gcGFyc2luZyBvZiB0aGUgY2hhcmFjdGVycworICAgYGAoKTs8PnwmYGAgaXMgY2hhbmdlZDogYW55IHJ1biBvZiB0aGVzZSBjaGFyYWN0ZXJzIChjb25zaWRlcmVkIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzKSBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIElmIHNldCB0byBhIG5vbi1lbXB0eSBzdHJpbmcgb2YKKyAgIGNoYXJhY3RlcnMsIHRob3NlIGNoYXJhY3RlcnMgd2lsbCBiZSB1c2VkIGFzIHRoZSBwdW5jdHVhdGlvbiBjaGFyYWN0ZXJzLiAgQW55CisgICBjaGFyYWN0ZXJzIGluIHRoZSA6YXR0cjpgd29yZGNoYXJzYCBhdHRyaWJ1dGUgdGhhdCBhcHBlYXIgaW4KKyAgICpwdW5jdHVhdGlvbl9jaGFycyogd2lsbCBiZSByZW1vdmVkIGZyb20gOmF0dHI6YHdvcmRjaGFyc2AuICBTZWUKKyAgIDpyZWY6YGltcHJvdmVkLXNoZWxsLWNvbXBhdGliaWxpdHlgIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgVGhlICpwdW5jdHVhdGlvbl9jaGFycyogcGFyYW1ldGVyIHdhcyBhZGRlZC4KIAogLi4gc2VlYWxzbzo6CiAKQEAgLTE5MSw3ICsyMDIsMTMgQEAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndvcmRjaGFycwogCiAgICBUaGUgc3RyaW5nIG9mIGNoYXJhY3RlcnMgdGhhdCB3aWxsIGFjY3VtdWxhdGUgaW50byBtdWx0aS1jaGFyYWN0ZXIgdG9rZW5zLiAgQnkKLSAgIGRlZmF1bHQsIGluY2x1ZGVzIGFsbCBBU0NJSSBhbHBoYW51bWVyaWNzIGFuZCB1bmRlcnNjb3JlLgorICAgZGVmYXVsdCwgaW5jbHVkZXMgYWxsIEFTQ0lJIGFscGhhbnVtZXJpY3MgYW5kIHVuZGVyc2NvcmUuICBJbiBQT1NJWCBtb2RlLCB0aGUKKyAgIGFjY2VudGVkIGNoYXJhY3RlcnMgaW4gdGhlIExhdGluLTEgc2V0IGFyZSBhbHNvIGluY2x1ZGVkLiAgSWYKKyAgIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AgaXMgbm90IGVtcHR5LCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYCwgd2hpY2ggY2FuCisgICBhcHBlYXIgaW4gZmlsZW5hbWUgc3BlY2lmaWNhdGlvbnMgYW5kIGNvbW1hbmQgbGluZSBwYXJhbWV0ZXJzLCB3aWxsIGFsc28gYmUKKyAgIGluY2x1ZGVkIGluIHRoaXMgYXR0cmlidXRlLCBhbmQgYW55IGNoYXJhY3RlcnMgd2hpY2ggYXBwZWFyIGluCisgICBgYHB1bmN0dWF0aW9uX2NoYXJzYGAgd2lsbCBiZSByZW1vdmVkIGZyb20gYGB3b3JkY2hhcnNgYCBpZiB0aGV5IGFyZSBwcmVzZW50CisgICB0aGVyZS4KIAogCiAuLiBhdHRyaWJ1dGU6OiBzaGxleC53aGl0ZXNwYWNlCkBAIC0yMjIsOSArMjM5LDEzIEBACiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LndoaXRlc3BhY2Vfc3BsaXQKIAotICAgSWYgYGBUcnVlYGAsIHRva2VucyB3aWxsIG9ubHkgYmUgc3BsaXQgaW4gd2hpdGVzcGFjZXMuIFRoaXMgaXMgdXNlZnVsLCBmb3IKKyAgIElmIGBgVHJ1ZWBgLCB0b2tlbnMgd2lsbCBvbmx5IGJlIHNwbGl0IGluIHdoaXRlc3BhY2VzLiAgVGhpcyBpcyB1c2VmdWwsIGZvcgogICAgZXhhbXBsZSwgZm9yIHBhcnNpbmcgY29tbWFuZCBsaW5lcyB3aXRoIDpjbGFzczpgfnNobGV4LnNobGV4YCwgZ2V0dGluZwotICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLgorICAgdG9rZW5zIGluIGEgc2ltaWxhciB3YXkgdG8gc2hlbGwgYXJndW1lbnRzLiAgSWYgdGhpcyBhdHRyaWJ1dGUgaXMgYGBUcnVlYGAsCisgICA6YXR0cjpgcHVuY3R1YXRpb25fY2hhcnNgIHdpbGwgaGF2ZSBubyBlZmZlY3QsIGFuZCBzcGxpdHRpbmcgd2lsbCBoYXBwZW4KKyAgIG9ubHkgb24gd2hpdGVzcGFjZXMuICBXaGVuIHVzaW5nIDphdHRyOmBwdW5jdHVhdGlvbl9jaGFyc2AsIHdoaWNoIGlzCisgICBpbnRlbmRlZCB0byBwcm92aWRlIHBhcnNpbmcgY2xvc2VyIHRvIHRoYXQgaW1wbGVtZW50ZWQgYnkgc2hlbGxzLCBpdCBpcworICAgYWR2aXNhYmxlIHRvIGxlYXZlIGBgd2hpdGVzcGFjZV9zcGxpdGBgIGFzIGBgRmFsc2VgYCAodGhlIGRlZmF1bHQgdmFsdWUpLgogCiAKIC4uIGF0dHJpYnV0ZTo6IHNobGV4LmluZmlsZQpAQCAtMjQ1LDEwICsyNjYsOSBAQAogICAgVGhpcyBhdHRyaWJ1dGUgaXMgYGBOb25lYGAgYnkgZGVmYXVsdC4gIElmIHlvdSBhc3NpZ24gYSBzdHJpbmcgdG8gaXQsIHRoYXQKICAgIHN0cmluZyB3aWxsIGJlIHJlY29nbml6ZWQgYXMgYSBsZXhpY2FsLWxldmVsIGluY2x1c2lvbiByZXF1ZXN0IHNpbWlsYXIgdG8gdGhlCiAgICBgYHNvdXJjZWBgIGtleXdvcmQgaW4gdmFyaW91cyBzaGVsbHMuICBUaGF0IGlzLCB0aGUgaW1tZWRpYXRlbHkgZm9sbG93aW5nIHRva2VuCi0gICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsCi0gICBiZSB0YWtlbiBmcm9tIHRoYXQgc3RyZWFtIHVudGlsIEVPRiwgYXQgd2hpY2gKLSAgIHBvaW50IHRoZSA6bWV0aDpgfmlvLklPQmFzZS5jbG9zZWAgbWV0aG9kIG9mIHRoYXQgc3RyZWFtIHdpbGwgYmUgY2FsbGVkIGFuZAotICAgdGhlIGlucHV0IHNvdXJjZSB3aWxsIGFnYWluIGJlY29tZSB0aGUgb3JpZ2luYWwgaW5wdXQgc3RyZWFtLiAgU291cmNlCisgICB3aWxsIGJlIG9wZW5lZCBhcyBhIGZpbGVuYW1lIGFuZCBpbnB1dCB3aWxsIGJlIHRha2VuIGZyb20gdGhhdCBzdHJlYW0gdW50aWwKKyAgIEVPRiwgYXQgd2hpY2ggcG9pbnQgdGhlIDptZXRoOmB+aW8uSU9CYXNlLmNsb3NlYCBtZXRob2Qgb2YgdGhhdCBzdHJlYW0gd2lsbCBiZQorICAgY2FsbGVkIGFuZCB0aGUgaW5wdXQgc291cmNlIHdpbGwgYWdhaW4gYmVjb21lIHRoZSBvcmlnaW5hbCBpbnB1dCBzdHJlYW0uICBTb3VyY2UKICAgIHJlcXVlc3RzIG1heSBiZSBzdGFja2VkIGFueSBudW1iZXIgb2YgbGV2ZWxzIGRlZXAuCiAKIApAQCAtMjc1LDYgKzI5NSwxNiBAQAogICAgKGBgJydgYCksIGluIG5vbi1QT1NJWCBtb2RlLCBhbmQgdG8gYGBOb25lYGAgaW4gUE9TSVggbW9kZS4KIAogCisuLiBhdHRyaWJ1dGU6OiBzaGxleC5wdW5jdHVhdGlvbl9jaGFycworCisgICBDaGFyYWN0ZXJzIHRoYXQgd2lsbCBiZSBjb25zaWRlcmVkIHB1bmN0dWF0aW9uLiBSdW5zIG9mIHB1bmN0dWF0aW9uCisgICBjaGFyYWN0ZXJzIHdpbGwgYmUgcmV0dXJuZWQgYXMgYSBzaW5nbGUgdG9rZW4uIEhvd2V2ZXIsIG5vdGUgdGhhdCBubworICAgc2VtYW50aWMgdmFsaWRpdHkgY2hlY2tpbmcgd2lsbCBiZSBwZXJmb3JtZWQ6IGZvciBleGFtcGxlLCAnPj4+JyBjb3VsZCBiZQorICAgcmV0dXJuZWQgYXMgYSB0b2tlbiwgZXZlbiB0aG91Z2ggaXQgbWF5IG5vdCBiZSByZWNvZ25pc2VkIGFzIHN1Y2ggYnkgc2hlbGxzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBfc2hsZXgtcGFyc2luZy1ydWxlczoKIAogUGFyc2luZyBSdWxlcwpAQCAtMzI3LDMgKzM1Nyw2MiBAQAogKiBFT0YgaXMgc2lnbmFsZWQgd2l0aCBhIDpjb25zdDpgTm9uZWAgdmFsdWU7CiAKICogUXVvdGVkIGVtcHR5IHN0cmluZ3MgKGBgJydgYCkgYXJlIGFsbG93ZWQuCisKKy4uIF9pbXByb3ZlZC1zaGVsbC1jb21wYXRpYmlsaXR5OgorCitJbXByb3ZlZCBDb21wYXRpYmlsaXR5IHdpdGggU2hlbGxzCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKy4uIHZlcnNpb25hZGRlZDo6IDMuNgorCitUaGUgOmNsYXNzOmBzaGxleGAgY2xhc3MgcHJvdmlkZXMgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBwYXJzaW5nIHBlcmZvcm1lZCBieQorY29tbW9uIFVuaXggc2hlbGxzIGxpa2UgYGBiYXNoYGAsIGBgZGFzaGBgLCBhbmQgYGBzaGBgLiAgVG8gdGFrZSBhZHZhbnRhZ2Ugb2YKK3RoaXMgY29tcGF0aWJpbGl0eSwgc3BlY2lmeSB0aGUgYGBwdW5jdHVhdGlvbl9jaGFyc2BgIGFyZ3VtZW50IGluIHRoZQorY29uc3RydWN0b3IuICBUaGlzIGRlZmF1bHRzIHRvIGBgRmFsc2VgYCwgd2hpY2ggcHJlc2VydmVzIHByZS0zLjYgYmVoYXZpb3VyLgorSG93ZXZlciwgaWYgaXQgaXMgc2V0IHRvIGBgVHJ1ZWBgLCB0aGVuIHBhcnNpbmcgb2YgdGhlIGNoYXJhY3RlcnMgYGAoKTs8PnwmYGAKK2lzIGNoYW5nZWQ6IGFueSBydW4gb2YgdGhlc2UgY2hhcmFjdGVycyBpcyByZXR1cm5lZCBhcyBhIHNpbmdsZSB0b2tlbi4gIFdoaWxlCit0aGlzIGlzIHNob3J0IG9mIGEgZnVsbCBwYXJzZXIgZm9yIHNoZWxscyAod2hpY2ggd291bGQgYmUgb3V0IG9mIHNjb3BlIGZvciB0aGUKK3N0YW5kYXJkIGxpYnJhcnksIGdpdmVuIHRoZSBtdWx0aXBsaWNpdHkgb2Ygc2hlbGxzIG91dCB0aGVyZSksIGl0IGRvZXMgYWxsb3cKK3lvdSB0byBwZXJmb3JtIHByb2Nlc3Npbmcgb2YgY29tbWFuZCBsaW5lcyBtb3JlIGVhc2lseSB0aGFuIHlvdSBjb3VsZAorb3RoZXJ3aXNlLiAgVG8gaWxsdXN0cmF0ZSwgeW91IGNhbiBzZWUgdGhlIGRpZmZlcmVuY2UgaW4gdGhlIGZvbGxvd2luZyBzbmlwcGV0OjoKKworICAgIGltcG9ydCBzaGxleAorCisgICAgZm9yIHB1bmN0IGluIChGYWxzZSwgVHJ1ZSk6CisgICAgICAgIGlmIHB1bmN0OgorICAgICAgICAgICAgbWVzc2FnZSA9ICdPbGQnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtZXNzYWdlID0gJ05ldycKKyAgICAgICAgdGV4dCA9ICJhICYmIGI7IGMgJiYgZCB8fCBlOyBmID4nYWJjJzsgKGRlZiBcImdoaVwiKSIKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KHRleHQsIHB1bmN0dWF0aW9uX2NoYXJzPXB1bmN0KQorICAgICAgICBwcmludCgnJXM6ICVzJyAlIChtZXNzYWdlLCBsaXN0KHMpKSkKKword2hpY2ggcHJpbnRzIG91dDo6CisKKyAgICBPbGQ6IFsnYScsICcmJywgJyYnLCAnYicsICc7JywgJ2MnLCAnJicsICcmJywgJ2QnLCAnfCcsICd8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKyAgICBOZXc6IFsnYScsICcmJicsICdiJywgJzsnLCAnYycsICcmJicsICdkJywgJ3x8JywgJ2UnLCAnOycsICdmJywgJz4nLCAiJ2FiYyciLCAnOycsICcoJywgJ2RlZicsICciZ2hpIicsICcpJ10KKworT2YgY291cnNlLCB0b2tlbnMgd2lsbCBiZSByZXR1cm5lZCB3aGljaCBhcmUgbm90IHZhbGlkIGZvciBzaGVsbHMsIGFuZCB5b3UnbGwKK25lZWQgdG8gaW1wbGVtZW50IHlvdXIgb3duIGVycm9yIGNoZWNrcyBvbiB0aGUgcmV0dXJuZWQgdG9rZW5zLgorCitJbnN0ZWFkIG9mIHBhc3NpbmcgYGBUcnVlYGAgYXMgdGhlIHZhbHVlIGZvciB0aGUgcHVuY3R1YXRpb25fY2hhcnMgcGFyYW1ldGVyLAoreW91IGNhbiBwYXNzIGEgc3RyaW5nIHdpdGggc3BlY2lmaWMgY2hhcmFjdGVycywgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGRldGVybWluZQord2hpY2ggY2hhcmFjdGVycyBjb25zdGl0dXRlIHB1bmN0dWF0aW9uLiBGb3IgZXhhbXBsZTo6CisKKyAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgPj4+IHMgPSBzaGxleC5zaGxleCgiYSAmJiBiIHx8IGMiLCBwdW5jdHVhdGlvbl9jaGFycz0ifCIpCisgICAgPj4+IGxpc3QocykKKyAgICBbJ2EnLCAnJicsICcmJywgJ2InLCAnfHwnLCAnYyddCisKKy4uIG5vdGU6OiBXaGVuIGBgcHVuY3R1YXRpb25fY2hhcnNgYCBpcyBzcGVjaWZpZWQsIHRoZSA6YXR0cjpgfnNobGV4LndvcmRjaGFyc2AKKyAgIGF0dHJpYnV0ZSBpcyBhdWdtZW50ZWQgd2l0aCB0aGUgY2hhcmFjdGVycyBgYH4tLi8qPz1gYC4gIFRoYXQgaXMgYmVjYXVzZSB0aGVzZQorICAgY2hhcmFjdGVycyBjYW4gYXBwZWFyIGluIGZpbGUgbmFtZXMgKGluY2x1ZGluZyB3aWxkY2FyZHMpIGFuZCBjb21tYW5kLWxpbmUKKyAgIGFyZ3VtZW50cyAoZS5nLiBgYC0tY29sb3I9YXV0b2BgKS4gSGVuY2U6OgorCisgICAgICA+Pj4gaW1wb3J0IHNobGV4CisgICAgICA+Pj4gcyA9IHNobGV4LnNobGV4KCd+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/JywKKyAgICAgIC4uLiAgICAgICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgID4+PiBsaXN0KHMpCisgICAgICBbJ34vYScsICcmJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorCisKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QgYi9Eb2MvbGlicmFyeS9zaHV0aWwucnN0CmluZGV4IGExY2YyNDEuLmZlZmQ2YWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NodXRpbC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc2h1dGlsLnJzdApAQCAtNDI1LDcgKzQyNSw3IEBACiAgICBpbXBvcnQgbG9nZ2luZwogCiAgICBkZWYgX2xvZ3BhdGgocGF0aCwgbmFtZXMpOgotICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycgJSBwYXRoKQorICAgICAgIGxvZ2dpbmcuaW5mbygnV29ya2luZyBpbiAlcycsIHBhdGgpCiAgICAgICAgcmV0dXJuIFtdICAgIyBub3RoaW5nIHdpbGwgYmUgaWdub3JlZAogCiAgICBjb3B5dHJlZShzb3VyY2UsIGRlc3RpbmF0aW9uLCBpZ25vcmU9X2xvZ3BhdGgpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zaXRlLnJzdCBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CmluZGV4IDBhNzNmNWEuLjQzZGFmNzkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NpdGUucnN0CisrKyBiL0RvYy9saWJyYXJ5L3NpdGUucnN0CkBAIC01Miw3ICs1Miw4IEBACiBBIHBhdGggY29uZmlndXJhdGlvbiBmaWxlIGlzIGEgZmlsZSB3aG9zZSBuYW1lIGhhcyB0aGUgZm9ybSA6ZmlsZTpge25hbWV9LnB0aGAKIGFuZCBleGlzdHMgaW4gb25lIG9mIHRoZSBmb3VyIGRpcmVjdG9yaWVzIG1lbnRpb25lZCBhYm92ZTsgaXRzIGNvbnRlbnRzIGFyZQogYWRkaXRpb25hbCBpdGVtcyAob25lIHBlciBsaW5lKSB0byBiZSBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBOb24tZXhpc3RpbmcgaXRlbXMKLWFyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KK2FyZSBuZXZlciBhZGRlZCB0byBgYHN5cy5wYXRoYGAsIGFuZCBubyBjaGVjayBpcyBtYWRlIHRoYXQgdGhlIGl0ZW0gcmVmZXJzIHRvIGEKK2RpcmVjdG9yeSByYXRoZXIgdGhhbiBhIGZpbGUuICBObyBpdGVtIGlzIGFkZGVkIHRvIGBgc3lzLnBhdGhgYCBtb3JlIHRoYW4KIG9uY2UuICBCbGFuayBsaW5lcyBhbmQgbGluZXMgYmVnaW5uaW5nIHdpdGggYGAjYGAgYXJlIHNraXBwZWQuICBMaW5lcyBzdGFydGluZwogd2l0aCBgYGltcG9ydGBgIChmb2xsb3dlZCBieSBzcGFjZSBvciB0YWIpIGFyZSBleGVjdXRlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGQucnN0IGIvRG9jL2xpYnJhcnkvc210cGQucnN0CmluZGV4IGEwOTZkZTAuLmUzODMyMDEgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3NtdHBkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwZC5yc3QKQEAgLTI5LDcgKzI5LDcgQEAKIAogCiAuLiBjbGFzczo6IFNNVFBTZXJ2ZXIobG9jYWxhZGRyLCByZW1vdGVhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPVRydWUpCisgICAgICAgICAgICAgICAgICAgICAgbWFwPU5vbmUsIGVuYWJsZV9TTVRQVVRGOD1GYWxzZSwgZGVjb2RlX2RhdGE9RmFsc2UpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNNVFBTZXJ2ZXJgIG9iamVjdCwgd2hpY2ggYmluZHMgdG8gbG9jYWwgYWRkcmVzcwogICAgKmxvY2FsYWRkciouICBJdCB3aWxsIHRyZWF0ICpyZW1vdGVhZGRyKiBhcyBhbiB1cHN0cmVhbSBTTVRQIHJlbGF5ZXIuICBCb3RoCkBAIC00NiwyMCArNDYsMTkgQEAKICAgIGdsb2JhbCBzb2NrZXQgbWFwIGlzIHVzZWQuCiAKICAgICplbmFibGVfU01UUFVURjgqIGRldGVybWluZXMgd2hldGhlciB0aGUgYGBTTVRQVVRGOGBgIGV4dGVuc2lvbiAoYXMgZGVmaW5lZAotICAgaW4gOlJGQzpgNjUzMWApIHNob3VsZCBiZSBlbmFibGVkLiAgVGhlIGRlZmF1bHQgaXMgYGBGYWxzZWBgLiAgSWYgc2V0IHRvCi0gICBgYFRydWVgYCwgKmRlY29kZV9kYXRhKiBtdXN0IGJlIGBgRmFsc2VgYCAob3RoZXJ3aXNlIGFuIGVycm9yIGlzIHJhaXNlZCkuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCiAgICBXaGVuIGBgVHJ1ZWBgLCBgYFNNVFBVVEY4YGAgaXMgYWNjZXB0ZWQgYXMgYSBwYXJhbWV0ZXIgdG8gdGhlIGBgTUFJTGBgCiAgICBjb21tYW5kIGFuZCB3aGVuIHByZXNlbnQgaXMgcGFzc2VkIHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIGluIHRoZQotICAgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGBga3dhcmdzWydtYWlsX29wdGlvbnMnXWBgIGxpc3QuICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNjsgc3BlY2lmeQotICAgdGhlIGtleXdvcmQgdmFsdWUgZXhwbGljaXRseSB0byBhdm9pZCB0aGUgOmV4YzpgRGVwcmVjYXRpb25XYXJuaW5nYC4gIFdoZW4KLSAgICpkZWNvZGVfZGF0YSogaXMgc2V0IHRvIGBgRmFsc2VgYCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAorICAgc2hvdWxkIGJlIGRlY29kZWQgdXNpbmcgVVRGLTguICBXaGVuICpkZWNvZGVfZGF0YSogaXMgYGBGYWxzZWBgICh0aGUKKyAgIGRlZmF1bHQpLCB0aGUgc2VydmVyIGFkdmVydGlzZXMgdGhlIGBgOEJJVE1JTUVgYAogICAgZXh0ZW5zaW9uICg6cmZjOmA2MTUyYCksIGFjY2VwdHMgdGhlIGBgQk9EWT04QklUTUlNRWBgIHBhcmFtZXRlciB0bwogICAgdGhlIGBgTUFJTGBgIGNvbW1hbmQsIGFuZCB3aGVuIHByZXNlbnQgcGFzc2VzIGl0IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgCi0gICBpbiB0aGUgYGBrd2FyZ3NbJ21haWxfb3B0aW9ucyddYGAgbGlzdC4KKyAgIGluIHRoZSBgYGt3YXJnc1snbWFpbF9vcHRpb25zJ11gYCBsaXN0LiAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KgorICAgY2Fubm90IGJlIHNldCB0byBgYFRydWVgYCBhdCB0aGUgc2FtZSB0aW1lLgogCiAgICAuLiBtZXRob2Q6OiBwcm9jZXNzX21lc3NhZ2UocGVlciwgbWFpbGZyb20sIHJjcHR0b3MsIGRhdGEsICoqa3dhcmdzKQogCkBAIC03Niw5ICs3NSw4IEBACiAgICAgICB3aWxsIGJlIGEgYnl0ZXMgb2JqZWN0LgogCiAgICAgICAqa3dhcmdzKiBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyBhZGRpdGlvbmFsIGluZm9ybWF0aW9uLiBJdCBpcyBlbXB0eQotICAgICAgdW5sZXNzIGF0IGxlYXN0IG9uZSBvZiBgYGRlY29kZV9kYXRhPUZhbHNlYGAgb3IgYGBlbmFibGVfU01UUFVURjg9VHJ1ZWBgCi0gICAgICB3YXMgZ2l2ZW4gYXMgYW4gaW5pdCBwYXJhbWV0ZXIsIGluIHdoaWNoIGNhc2UgaXQgY29udGFpbnMgdGhlIGZvbGxvd2luZwotICAgICAga2V5czoKKyAgICAgIGlmIGBgZGVjb2RlX2RhdGE9VHJ1ZWBgIHdhcyBnaXZlbiBhcyBhbiBpbml0IGFyZ3VtZW50LCBvdGhlcndpc2UKKyAgICAgIGl0IGNvbnRhaW5zIHRoZSBmb2xsb3dpbmcga2V5czoKIAogICAgICAgICAgICptYWlsX29wdGlvbnMqOgogICAgICAgICAgICAgIGEgbGlzdCBvZiBhbGwgcmVjZWl2ZWQgcGFyYW1ldGVycyB0byB0aGUgYGBNQUlMYGAKQEAgLTEwOSw5ICsxMDcsMTIgQEAKICAgICAgICpsb2NhbGFkZHIqIGFuZCAqcmVtb3RlYWRkciogbWF5IG5vdyBjb250YWluIElQdjYgYWRkcmVzc2VzLgogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBhcmd1bWVudHMsIGFuZCB0aGUKLSAgICAgICprd2FyZ3MqIGFyZ3VtZW50IHRvIDptZXRoOmBwcm9jZXNzX21lc3NhZ2VgIHdoZW4gb25lIG9yIG1vcmUgb2YgdGhlc2UgaXMKLSAgICAgIHNwZWNpZmllZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjb25zdHJ1Y3RvciBwYXJhbWV0ZXJzLCBhbmQgdGhlCisgICAgICAqa3dhcmdzKiBwYXJhbWV0ZXIgdG8gOm1ldGg6YHByb2Nlc3NfbWVzc2FnZWAgd2hlbiAqZGVjb2RlX2RhdGEqIGlzCisgICAgICBgYEZhbHNlYGAuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogCiBEZWJ1Z2dpbmdTZXJ2ZXIgT2JqZWN0cwpAQCAtMTUxLDcgKzE1Miw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIC4uIGNsYXNzOjogU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9MzM1NTQ0MzIsXAotICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1UcnVlKQorICAgICAgICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSkKIAogICAgQ3JlYXRlIGEgbmV3IDpjbGFzczpgU01UUENoYW5uZWxgIG9iamVjdCB3aGljaCBtYW5hZ2VzIHRoZSBjb21tdW5pY2F0aW9uCiAgICBiZXR3ZWVuIHRoZSBzZXJ2ZXIgYW5kIGEgc2luZ2xlIFNNVFAgY2xpZW50LgpAQCAtMTYzLDIyICsxNjQsMjUgQEAKICAgIGxpbWl0LgogCiAgICAqZW5hYmxlX1NNVFBVVEY4KiBkZXRlcm1pbmVzIHdoZXRoZXIgdGhlIGBgU01UUFVURjhgYCBleHRlbnNpb24gKGFzIGRlZmluZWQKLSAgIGluIDpSRkM6YDY1MzFgKSBzaG91bGQgYmUgZW5hYmxlZC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4gIEEKLSAgIDpleGM6YFZhbHVlRXJyb3JgIGlzIHJhaXNlZCBpZiBib3RoICplbmFibGVfU01UUFVURjgqIGFuZCAqZGVjb2RlX2RhdGEqIGFyZQotICAgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lIHRpbWUuCisgICBpbiA6UkZDOmA2NTMxYCkgc2hvdWxkIGJlIGVuYWJsZWQuICBUaGUgZGVmYXVsdCBpcyBgYEZhbHNlYGAuCisgICAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBjYW5ub3QgYmUgc2V0IHRvIGBgVHJ1ZWBgIGF0IHRoZSBzYW1lCisgICB0aW1lLgogCiAgICBBIGRpY3Rpb25hcnkgY2FuIGJlIHNwZWNpZmllZCBpbiAqbWFwKiB0byBhdm9pZCB1c2luZyBhIGdsb2JhbCBzb2NrZXQgbWFwLgogCiAgICAqZGVjb2RlX2RhdGEqIHNwZWNpZmllcyB3aGV0aGVyIHRoZSBkYXRhIHBvcnRpb24gb2YgdGhlIFNNVFAgdHJhbnNhY3Rpb24KLSAgIHNob3VsZCBiZSBkZWNvZGVkIHVzaW5nIFVURi04LiAgVGhlIGRlZmF1bHQgaXMgYGBUcnVlYGAgZm9yIGJhY2t3YXJkCi0gICBjb21wYXRpYmlsaXR5IHJlYXNvbnMsIGJ1dCB3aWxsIGNoYW5nZSB0byBgYEZhbHNlYGAgaW4gUHl0aG9uIDMuNi4gIFNwZWNpZnkKLSAgIHRoZSBrZXl3b3JkIHZhbHVlIGV4cGxpY2l0bHkgdG8gYXZvaWQgdGhlIDpleGM6YERlcHJlY2F0aW9uV2FybmluZ2AuCisgICBzaG91bGQgYmUgZGVjb2RlZCB1c2luZyBVVEYtOC4gIFRoZSBkZWZhdWx0IGlzIGBgRmFsc2VgYC4KKyAgICpkZWNvZGVfZGF0YSogYW5kICplbmFibGVfU01UUFVURjgqIGNhbm5vdCBiZSBzZXQgdG8gYGBUcnVlYGAgYXQgdGhlIHNhbWUKKyAgIHRpbWUuCiAKICAgIFRvIHVzZSBhIGN1c3RvbSBTTVRQQ2hhbm5lbCBpbXBsZW1lbnRhdGlvbiB5b3UgbmVlZCB0byBvdmVycmlkZSB0aGUKICAgIDphdHRyOmBTTVRQU2VydmVyLmNoYW5uZWxfY2xhc3NgIG9mIHlvdXIgOmNsYXNzOmBTTVRQU2VydmVyYC4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKLSAgICAgIHRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBhcmd1bWVudHMgd2VyZSBhZGRlZC4KKyAgICAgIFRoZSAqZGVjb2RlX2RhdGEqIGFuZCAqZW5hYmxlX1NNVFBVVEY4KiBwYXJhbWV0ZXJzIHdlcmUgYWRkZWQuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqZGVjb2RlX2RhdGEqIGlzIG5vdyBgYEZhbHNlYGAgYnkgZGVmYXVsdC4KIAogICAgVGhlIDpjbGFzczpgU01UUENoYW5uZWxgIGhhcyB0aGUgZm9sbG93aW5nIGluc3RhbmNlIHZhcmlhYmxlczoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc210cGxpYi5yc3QgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAppbmRleCA4M2Q1YzJkLi4xY2IzYWFmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zbXRwbGliLnJzdApAQCAtOTUsNiArOTUsMTQgQEAKICAgICAgIDphdHRyOmBzc2wuU1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYW5kICpTZXJ2ZXIgTmFtZSBJbmRpY2F0aW9uKiAoc2VlCiAgICAgICA6ZGF0YTpgc3NsLkhBU19TTklgKS4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmtleWZpbGUqIGFuZCAqY2VydGZpbGUqIGFyZSBkZXByZWNhdGVkIGluIGZhdm9yIG9mICpjb250ZXh0Ki4KKyAgICAgICBQbGVhc2UgdXNlIDptZXRoOmBzc2wuU1NMQ29udGV4dC5sb2FkX2NlcnRfY2hhaW5gIGluc3RlYWQsIG9yIGxldAorICAgICAgIDpmdW5jOmBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgc2VsZWN0IHRoZSBzeXN0ZW0ncyB0cnVzdGVkIENBCisgICAgICAgY2VydGlmaWNhdGVzIGZvciB5b3UuCisKKwogLi4gY2xhc3M6OiBMTVRQKGhvc3Q9JycsIHBvcnQ9TE1UUF9QT1JULCBsb2NhbF9ob3N0bmFtZT1Ob25lLCBzb3VyY2VfYWRkcmVzcz1Ob25lKQogCiAgICBUaGUgTE1UUCBwcm90b2NvbCwgd2hpY2ggaXMgdmVyeSBzaW1pbGFyIHRvIEVTTVRQLCBpcyBoZWF2aWx5IGJhc2VkIG9uIHRoZQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldC5yc3QKaW5kZXggNzljNzYwOS4uNjkwOWE2NCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0LnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXQucnN0CkBAIC0xMzMsNiArMTMzLDIyIEBACiAgICAgc3RyaW5nIGZvcm1hdC4gKGV4LiBgYGInMTI6MjM6MzQ6NDU6NTY6NjcnYGApIFRoaXMgcHJvdG9jb2wgaXMgbm90CiAgICAgc3VwcG9ydGVkIHVuZGVyIEZyZWVCU0QuCiAKKy0gOmNvbnN0OmBBRl9BTEdgIGlzIGEgTGludXgtb25seSBzb2NrZXQgYmFzZWQgaW50ZXJmYWNlIHRvIEtlcm5lbAorICBjcnlwdG9ncmFwaHkuIEFuIGFsZ29yaXRobSBzb2NrZXQgaXMgY29uZmlndXJlZCB3aXRoIGEgdHVwbGUgb2YgdHdvIHRvIGZvdXIKKyAgZWxlbWVudHMgYGAodHlwZSwgbmFtZSBbLCBmZWF0IFssIG1hc2tdXSlgYCwgd2hlcmU6CisKKyAgLSAqdHlwZSogaXMgdGhlIGFsZ29yaXRobSB0eXBlIGFzIHN0cmluZywgZS5nLiBgYGFlYWRgYCwgYGBoYXNoYGAsCisgICAgYGBza2NpcGhlcmBgIG9yIGBgcm5nYGAuCisKKyAgLSAqbmFtZSogaXMgdGhlIGFsZ29yaXRobSBuYW1lIGFuZCBvcGVyYXRpb24gbW9kZSBhcyBzdHJpbmcsIGUuZy4KKyAgICBgYHNoYTI1NmBgLCBgYGhtYWMoc2hhMjU2KWBgLCBgYGNiYyhhZXMpYGAgb3IgYGBkcmJnX25vcHJfY3RyX2FlczI1NmBgLgorCisgIC0gKmZlYXQqIGFuZCAqbWFzayogYXJlIHVuc2lnbmVkIDMyYml0IGludGVnZXJzLgorCisgIEF2YWlsYWJpbGl0eSBMaW51eCAyLjYuMzgsIHNvbWUgYWxnb3JpdGhtIHR5cGVzIHJlcXVpcmUgbW9yZSByZWNlbnQgS2VybmVscy4KKworICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLSBDZXJ0YWluIG90aGVyIGFkZHJlc3MgZmFtaWxpZXMgKDpjb25zdDpgQUZfUEFDS0VUYCwgOmNvbnN0OmBBRl9DQU5gKQogICBzdXBwb3J0IHNwZWNpZmljIHJlcHJlc2VudGF0aW9ucy4KIApAQCAtMjgzLDYgKzI5OSwxMCBAQAogICAgaW4gdGhlIFVuaXggaGVhZGVyIGZpbGVzIGFyZSBkZWZpbmVkOyBmb3IgYSBmZXcgc3ltYm9scywgZGVmYXVsdCB2YWx1ZXMgYXJlCiAgICBwcm92aWRlZC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIGBgU09fRE9NQUlOYGAsIGBgU09fUFJPVE9DT0xgYCwgYGBTT19QRUVSU0VDYGAsIGBgU09fUEFTU1NFQ2BgCisgICAgICB3ZXJlIGFkZGVkLgorCiAuLiBkYXRhOjogQUZfQ0FOCiAgICAgICAgICAgUEZfQ0FOCiAgICAgICAgICAgU09MX0NBTl8qCkBAIC0zMzEsMTggKzM1MSwzMyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gZGF0YTo6IFNJT18qCisuLiBkYXRhOjogU0lPX1JDVkFMTAorICAgICAgICAgIFNJT19LRUVQQUxJVkVfVkFMUworICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKICAgICAgICAgICBSQ1ZBTExfKgogCiAgICBDb25zdGFudHMgZm9yIFdpbmRvd3MnIFdTQUlvY3RsKCkuIFRoZSBjb25zdGFudHMgYXJlIHVzZWQgYXMgYXJndW1lbnRzIHRvIHRoZQogICAgOm1ldGg6YH5zb2NrZXQuc29ja2V0LmlvY3RsYCBtZXRob2Qgb2Ygc29ja2V0IG9iamVjdHMuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBgYFNJT19MT09QQkFDS19GQVNUX1BBVEhgYCB3YXMgYWRkZWQuCisKIAogLi4gZGF0YTo6IFRJUENfKgogCiAgICBUSVBDIHJlbGF0ZWQgY29uc3RhbnRzLCBtYXRjaGluZyB0aGUgb25lcyBleHBvcnRlZCBieSB0aGUgQyBzb2NrZXQgQVBJLiBTZWUKICAgIHRoZSBUSVBDIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAKKy4uIGRhdGE6OiBBRl9BTEcKKyAgICAgICAgICBTT0xfQUxHCisgICAgICAgICAgQUxHXyoKKworICAgQ29uc3RhbnRzIGZvciBMaW51eCBLZXJuZWwgY3J5cHRvZ3JhcGh5LgorCisgICBBdmFpbGFiaWxpdHk6IExpbnV4ID49IDIuNi4zOC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBBRl9MSU5LCiAKICAgQXZhaWxhYmlsaXR5OiBCU0QsIE9TWC4KQEAgLTg3NCw2ICs5MDksMTAgQEAKICAgIGl0IGlzIHJlY29tbWVuZGVkIHRvIDptZXRoOmBjbG9zZWAgdGhlbSBleHBsaWNpdGx5LCBvciB0byB1c2UgYQogICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudCBhcm91bmQgdGhlbS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDpleGM6YE9TRXJyb3JgIGlzIG5vdyByYWlzZWQgaWYgYW4gZXJyb3Igb2NjdXJzIHdoZW4gdGhlIHVuZGVybHlpbmcKKyAgICAgIDpjOmZ1bmM6YGNsb3NlYCBjYWxsIGlzIG1hZGUuCisKICAgIC4uIG5vdGU6OgogCiAgICAgICA6bWV0aDpgY2xvc2UoKWAgcmVsZWFzZXMgdGhlIHJlc291cmNlIGFzc29jaWF0ZWQgd2l0aCBhIGNvbm5lY3Rpb24gYnV0CkBAIC05OTQsNiArMTAzMywxMiBAQAogICAgT24gb3RoZXIgcGxhdGZvcm1zLCB0aGUgZ2VuZXJpYyA6ZnVuYzpgZmNudGwuZmNudGxgIGFuZCA6ZnVuYzpgZmNudGwuaW9jdGxgCiAgICBmdW5jdGlvbnMgbWF5IGJlIHVzZWQ7IHRoZXkgYWNjZXB0IGEgc29ja2V0IG9iamVjdCBhcyB0aGVpciBmaXJzdCBhcmd1bWVudC4KIAorICAgQ3VycmVudGx5IG9ubHkgdGhlIGZvbGxvd2luZyBjb250cm9sIGNvZGVzIGFyZSBzdXBwb3J0ZWQ6CisgICBgYFNJT19SQ1ZBTExgYCwgYGBTSU9fS0VFUEFMSVZFX1ZBTFNgYCwgYW5kIGBgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSGBgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgYGBTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIYGAgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBzb2NrZXQubGlzdGVuKFtiYWNrbG9nXSkKIAogICAgRW5hYmxlIGEgc2VydmVyIHRvIGFjY2VwdCBjb25uZWN0aW9ucy4gIElmICpiYWNrbG9nKiBpcyBzcGVjaWZpZWQsIGl0IG11c3QKQEAgLTEyNzcsNiArMTMyMiwxNSBAQAogICAgICAgYW4gZXhjZXB0aW9uLCB0aGUgbWV0aG9kIG5vdyByZXRyaWVzIHRoZSBzeXN0ZW0gY2FsbCBpbnN0ZWFkIG9mIHJhaXNpbmcKICAgICAgIGFuIDpleGM6YEludGVycnVwdGVkRXJyb3JgIGV4Y2VwdGlvbiAoc2VlIDpwZXA6YDQ3NWAgZm9yIHRoZSByYXRpb25hbGUpLgogCisuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3NdXV0pCisKKyAgIFNwZWNpYWxpemVkIHZlcnNpb24gb2YgOm1ldGg6YH5zb2NrZXQuc2VuZG1zZ2AgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisgICBTZXQgbW9kZSwgSVYsIEFFQUQgYXNzb2NpYXRlZCBkYXRhIGxlbmd0aCBhbmQgZmxhZ3MgZm9yIDpjb25zdDpgQUZfQUxHYCBzb2NrZXQuCisKKyAgIEF2YWlsYWJpbGl0eTogTGludXggPj0gMi42LjM4CisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBtZXRob2Q6OiBzb2NrZXQuc2VuZGZpbGUoZmlsZSwgb2Zmc2V0PTAsIGNvdW50PU5vbmUpCiAKICAgIFNlbmQgYSBmaWxlIHVudGlsIEVPRiBpcyByZWFjaGVkIGJ5IHVzaW5nIGhpZ2gtcGVyZm9ybWFuY2UKQEAgLTEzMjUsMjEgKzEzNzksMjkgQEAKICAgIEZvciBmdXJ0aGVyIGluZm9ybWF0aW9uLCBwbGVhc2UgY29uc3VsdCB0aGUgOnJlZjpgbm90ZXMgb24gc29ja2V0IHRpbWVvdXRzIDxzb2NrZXQtdGltZW91dHM+YC4KIAogCi0uLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpCisuLiBtZXRob2Q6OiBzb2NrZXQuc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWU6IGludCkKKy4uIG1ldGhvZDo6IHNvY2tldC5zZXRzb2Nrb3B0KGxldmVsLCBvcHRuYW1lLCB2YWx1ZTogYnVmZmVyKQorLi4gbWV0aG9kOjogc29ja2V0LnNldHNvY2tvcHQobGV2ZWwsIG9wdG5hbWUsIE5vbmUsIG9wdGxlbjogaW50KQogCiAgICAuLiBpbmRleDo6IG1vZHVsZTogc3RydWN0CiAKICAgIFNldCB0aGUgdmFsdWUgb2YgdGhlIGdpdmVuIHNvY2tldCBvcHRpb24gKHNlZSB0aGUgVW5peCBtYW51YWwgcGFnZQogICAgOm1hbnBhZ2U6YHNldHNvY2tvcHQoMilgKS4gIFRoZSBuZWVkZWQgc3ltYm9saWMgY29uc3RhbnRzIGFyZSBkZWZpbmVkIGluIHRoZQotICAgOm1vZDpgc29ja2V0YCBtb2R1bGUgKDpjb25zdDpgU09fXCpgIGV0Yy4pLiAgVGhlIHZhbHVlIGNhbiBiZSBhbiBpbnRlZ2VyIG9yCi0gICBhIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgcmVwcmVzZW50aW5nIGEgYnVmZmVyLiAgSW4gdGhlIGxhdHRlciBjYXNlIGl0IGlzCi0gICB1cCB0byB0aGUgY2FsbGVyIHRvCi0gICBlbnN1cmUgdGhhdCB0aGUgYnl0ZXN0cmluZyBjb250YWlucyB0aGUgcHJvcGVyIGJpdHMgKHNlZSB0aGUgb3B0aW9uYWwgYnVpbHQtaW4KLSAgIG1vZHVsZSA6bW9kOmBzdHJ1Y3RgIGZvciBhIHdheSB0byBlbmNvZGUgQyBzdHJ1Y3R1cmVzIGFzIGJ5dGVzdHJpbmdzKS4KKyAgIDptb2Q6YHNvY2tldGAgbW9kdWxlICg6Y29uc3Q6YFNPX1wqYCBldGMuKS4gIFRoZSB2YWx1ZSBjYW4gYmUgYW4gaW50ZWdlciwKKyAgIE5vbmUgb3IgYSA6dGVybTpgYnl0ZXMtbGlrZSBvYmplY3RgIHJlcHJlc2VudGluZyBhIGJ1ZmZlci4gSW4gdGhlIGxhdGVyCisgICBjYXNlIGl0IGlzIHVwIHRvIHRoZSBjYWxsZXIgdG8gZW5zdXJlIHRoYXQgdGhlIGJ5dGVzdHJpbmcgY29udGFpbnMgdGhlCisgICBwcm9wZXIgYml0cyAoc2VlIHRoZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgOm1vZDpgc3RydWN0YCBmb3IgYSB3YXkgdG8KKyAgIGVuY29kZSBDIHN0cnVjdHVyZXMgYXMgYnl0ZXN0cmluZ3MpLiBXaGVuIHZhbHVlIGlzIHNldCB0byBOb25lLAorICAgb3B0bGVuIGFyZ3VtZW50IGlzIHJlcXVpcmVkLiBJdCdzIGVxdWl2YWxlbnQgdG8gY2FsbCBzZXRzb2Nrb3B0IEMKKyAgIGZ1bmN0aW9uIHdpdGggb3B0dmFsPU5VTEwgYW5kIG9wdGxlbj1vcHRsZW4uCisKIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIFdyaXRhYmxlIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAgaXMgbm93IGFjY2VwdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgTm9uZSwgb3B0bGVuOiBpbnQpIGZvcm0gYWRkZWQuCisKIAogLi4gbWV0aG9kOjogc29ja2V0LnNodXRkb3duKGhvdykKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdCBiL0RvYy9saWJyYXJ5L3NvY2tldHNlcnZlci5yc3QKaW5kZXggMDg3ZjRlMC4uMjE4YTMxYyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc29ja2V0c2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zb2NrZXRzZXJ2ZXIucnN0CkBAIC01MiwxMSArNTIsMTIgQEAKIG92ZXJyaWRpbmcgaXRzIDptZXRoOmB+QmFzZVJlcXVlc3RIYW5kbGVyLmhhbmRsZWAgbWV0aG9kOwogdGhpcyBtZXRob2Qgd2lsbCBwcm9jZXNzIGluY29taW5nCiByZXF1ZXN0cy4gIFNlY29uZCwgeW91IG11c3QgaW5zdGFudGlhdGUgb25lIG9mIHRoZSBzZXJ2ZXIgY2xhc3NlcywgcGFzc2luZyBpdAotdGhlIHNlcnZlcidzIGFkZHJlc3MgYW5kIHRoZSByZXF1ZXN0IGhhbmRsZXIgY2xhc3MuICBUaGVuIGNhbGwgdGhlCit0aGUgc2VydmVyJ3MgYWRkcmVzcyBhbmQgdGhlIHJlcXVlc3QgaGFuZGxlciBjbGFzcy4gSXQgaXMgcmVjb21tZW5kZWQgdG8gdXNlCit0aGUgc2VydmVyIGluIGEgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gVGhlbiBjYWxsIHRoZQogOm1ldGg6YH5CYXNlU2VydmVyLmhhbmRsZV9yZXF1ZXN0YCBvcgogOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlX2ZvcmV2ZXJgIG1ldGhvZCBvZiB0aGUgc2VydmVyIG9iamVjdCB0bwogcHJvY2VzcyBvbmUgb3IgbWFueSByZXF1ZXN0cy4gIEZpbmFsbHksIGNhbGwgOm1ldGg6YH5CYXNlU2VydmVyLnNlcnZlcl9jbG9zZWAKLXRvIGNsb3NlIHRoZSBzb2NrZXQuCit0byBjbG9zZSB0aGUgc29ja2V0ICh1bmxlc3MgeW91IHVzZWQgYSA6a2V5d29yZDpgd2l0aGAgc3RhdGVtZW50KS4KIAogV2hlbiBpbmhlcml0aW5nIGZyb20gOmNsYXNzOmBUaHJlYWRpbmdNaXhJbmAgZm9yIHRocmVhZGVkIGNvbm5lY3Rpb24gYmVoYXZpb3IsCiB5b3Ugc2hvdWxkIGV4cGxpY2l0bHkgZGVjbGFyZSBob3cgeW91IHdhbnQgeW91ciB0aHJlYWRzIHRvIGJlaGF2ZSBvbiBhbiBhYnJ1cHQKQEAgLTExMSw2ICsxMTIsOCBAQAogICAgOmNsYXNzOmBVRFBTZXJ2ZXJgLiAgU2V0dGluZyB0aGUgdmFyaW91cyBhdHRyaWJ1dGVzIGFsc28gY2hhbmdlcyB0aGUKICAgIGJlaGF2aW9yIG9mIHRoZSB1bmRlcmx5aW5nIHNlcnZlciBtZWNoYW5pc20uCiAKKyAgIDpjbGFzczpgRm9ya2luZ01peEluYCBhbmQgdGhlIEZvcmtpbmcgY2xhc3NlcyBtZW50aW9uZWQgYmVsb3cgYXJlCisgICBvbmx5IGF2YWlsYWJsZSBvbiBQT1NJWCBwbGF0Zm9ybXMgdGhhdCBzdXBwb3J0IDpmdW5jOmB+b3MuZm9ya2AuCiAKIC4uIGNsYXNzOjogRm9ya2luZ1RDUFNlcnZlcgogICAgICAgICAgICBGb3JraW5nVURQU2VydmVyCkBAIC0zMDQsNyArMzA3LDExIEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBpZiB0aGUgOm1ldGg6YH5CYXNlUmVxdWVzdEhhbmRsZXIuaGFuZGxlYAogICAgICAgbWV0aG9kIG9mIGEgOmF0dHI6YFJlcXVlc3RIYW5kbGVyQ2xhc3NgIGluc3RhbmNlIHJhaXNlcwogICAgICAgYW4gZXhjZXB0aW9uLiAgVGhlIGRlZmF1bHQgYWN0aW9uIGlzIHRvIHByaW50IHRoZSB0cmFjZWJhY2sgdG8KLSAgICAgIHN0YW5kYXJkIG91dHB1dCBhbmQgY29udGludWUgaGFuZGxpbmcgZnVydGhlciByZXF1ZXN0cy4KKyAgICAgIHN0YW5kYXJkIGVycm9yIGFuZCBjb250aW51ZSBoYW5kbGluZyBmdXJ0aGVyIHJlcXVlc3RzLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTm93IG9ubHkgY2FsbGVkIGZvciBleGNlcHRpb25zIGRlcml2ZWQgZnJvbSB0aGUgOmV4YzpgRXhjZXB0aW9uYAorICAgICAgICAgY2xhc3MuCiAKIAogICAgLi4gbWV0aG9kOjogaGFuZGxlX3RpbWVvdXQoKQpAQCAtMzQ5LDYgKzM1NiwxMSBAQAogICAgICAgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBhbHdheXMgcmV0dXJucyA6Y29uc3Q6YFRydWVgLgogCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBTdXBwb3J0IGZvciB0aGUgOnRlcm06YGNvbnRleHQgbWFuYWdlcmAgcHJvdG9jb2wgd2FzIGFkZGVkLiAgRXhpdGluZyB0aGUKKyAgICAgIGNvbnRleHQgbWFuYWdlciBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgOm1ldGg6YHNlcnZlcl9jbG9zZWAuCisKKwogUmVxdWVzdCBIYW5kbGVyIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTM5Nyw2ICs0MDksMTUgQEAKICAgIHJlYWQgb3Igd3JpdHRlbiwgcmVzcGVjdGl2ZWx5LCB0byBnZXQgdGhlIHJlcXVlc3QgZGF0YSBvciByZXR1cm4gZGF0YQogICAgdG8gdGhlIGNsaWVudC4KIAorICAgVGhlIDphdHRyOmByZmlsZWAgYXR0cmlidXRlcyBvZiBib3RoIGNsYXNzZXMgc3VwcG9ydCB0aGUKKyAgIDpjbGFzczpgaW8uQnVmZmVyZWRJT0Jhc2VgIHJlYWRhYmxlIGludGVyZmFjZSwgYW5kCisgICA6YXR0cjpgRGF0YWdyYW1SZXF1ZXN0SGFuZGxlci53ZmlsZWAgc3VwcG9ydHMgdGhlCisgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU3RyZWFtUmVxdWVzdEhhbmRsZXIud2ZpbGVgIGFsc28gc3VwcG9ydHMgdGhlCisgICAgICA6Y2xhc3M6YGlvLkJ1ZmZlcmVkSU9CYXNlYCB3cml0YWJsZSBpbnRlcmZhY2UuCisKIAogRXhhbXBsZXMKIC0tLS0tLS0tCkBAIC00MjksMTEgKzQ1MCwxMCBAQAogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQogCiAgICAgICAgIyBDcmVhdGUgdGhlIHNlcnZlciwgYmluZGluZyB0byBsb2NhbGhvc3Qgb24gcG9ydCA5OTk5Ci0gICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VENQSGFuZGxlcikKLQotICAgICAgICMgQWN0aXZhdGUgdGhlIHNlcnZlcjsgdGhpcyB3aWxsIGtlZXAgcnVubmluZyB1bnRpbCB5b3UKLSAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQwotICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICB3aXRoIHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVRDUEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIyBBY3RpdmF0ZSB0aGUgc2VydmVyOyB0aGlzIHdpbGwga2VlcCBydW5uaW5nIHVudGlsIHlvdQorICAgICAgICAgICAjIGludGVycnVwdCB0aGUgcHJvZ3JhbSB3aXRoIEN0cmwtQworICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIEFuIGFsdGVybmF0aXZlIHJlcXVlc3QgaGFuZGxlciBjbGFzcyB0aGF0IG1ha2VzIHVzZSBvZiBzdHJlYW1zIChmaWxlLWxpa2UKIG9iamVjdHMgdGhhdCBzaW1wbGlmeSBjb21tdW5pY2F0aW9uIGJ5IHByb3ZpZGluZyB0aGUgc3RhbmRhcmQgZmlsZSBpbnRlcmZhY2UpOjoKQEAgLTUyNSw4ICs1NDUsOCBAQAogCiAgICBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgICAgIEhPU1QsIFBPUlQgPSAibG9jYWxob3N0IiwgOTk5OQotICAgICAgIHNlcnZlciA9IHNvY2tldHNlcnZlci5VRFBTZXJ2ZXIoKEhPU1QsIFBPUlQpLCBNeVVEUEhhbmRsZXIpCi0gICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQorICAgICAgIHdpdGggc29ja2V0c2VydmVyLlVEUFNlcnZlcigoSE9TVCwgUE9SVCksIE15VURQSGFuZGxlcikgYXMgc2VydmVyOgorICAgICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCiAKIFRoaXMgaXMgdGhlIGNsaWVudCBzaWRlOjoKIApAQCAtNTg1LDIyICs2MDUsMjIgQEAKICAgICAgICBIT1NULCBQT1JUID0gImxvY2FsaG9zdCIsIDAKIAogICAgICAgIHNlcnZlciA9IFRocmVhZGVkVENQU2VydmVyKChIT1NULCBQT1JUKSwgVGhyZWFkZWRUQ1BSZXF1ZXN0SGFuZGxlcikKLSAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcworICAgICAgIHdpdGggc2VydmVyOgorICAgICAgICAgICBpcCwgcG9ydCA9IHNlcnZlci5zZXJ2ZXJfYWRkcmVzcwogCi0gICAgICAgIyBTdGFydCBhIHRocmVhZCB3aXRoIHRoZSBzZXJ2ZXIgLS0gdGhhdCB0aHJlYWQgd2lsbCB0aGVuIHN0YXJ0IG9uZQotICAgICAgICMgbW9yZSB0aHJlYWQgZm9yIGVhY2ggcmVxdWVzdAotICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKLSAgICAgICAjIEV4aXQgdGhlIHNlcnZlciB0aHJlYWQgd2hlbiB0aGUgbWFpbiB0aHJlYWQgdGVybWluYXRlcwotICAgICAgIHNlcnZlcl90aHJlYWQuZGFlbW9uID0gVHJ1ZQotICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQotICAgICAgIHByaW50KCJTZXJ2ZXIgbG9vcCBydW5uaW5nIGluIHRocmVhZDoiLCBzZXJ2ZXJfdGhyZWFkLm5hbWUpCisgICAgICAgICAgICMgU3RhcnQgYSB0aHJlYWQgd2l0aCB0aGUgc2VydmVyIC0tIHRoYXQgdGhyZWFkIHdpbGwgdGhlbiBzdGFydCBvbmUKKyAgICAgICAgICAgIyBtb3JlIHRocmVhZCBmb3IgZWFjaCByZXF1ZXN0CisgICAgICAgICAgIHNlcnZlcl90aHJlYWQgPSB0aHJlYWRpbmcuVGhyZWFkKHRhcmdldD1zZXJ2ZXIuc2VydmVfZm9yZXZlcikKKyAgICAgICAgICAgIyBFeGl0IHRoZSBzZXJ2ZXIgdGhyZWFkIHdoZW4gdGhlIG1haW4gdGhyZWFkIHRlcm1pbmF0ZXMKKyAgICAgICAgICAgc2VydmVyX3RocmVhZC5kYWVtb24gPSBUcnVlCisgICAgICAgICAgIHNlcnZlcl90aHJlYWQuc3RhcnQoKQorICAgICAgICAgICBwcmludCgiU2VydmVyIGxvb3AgcnVubmluZyBpbiB0aHJlYWQ6Iiwgc2VydmVyX3RocmVhZC5uYW1lKQogCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMSIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMiIpCi0gICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCisgICAgICAgICAgIGNsaWVudChpcCwgcG9ydCwgIkhlbGxvIFdvcmxkIDEiKQorICAgICAgICAgICBjbGllbnQoaXAsIHBvcnQsICJIZWxsbyBXb3JsZCAyIikKKyAgICAgICAgICAgY2xpZW50KGlwLCBwb3J0LCAiSGVsbG8gV29ybGQgMyIpCiAKLSAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQotICAgICAgIHNlcnZlci5zZXJ2ZXJfY2xvc2UoKQorICAgICAgICAgICBzZXJ2ZXIuc2h1dGRvd24oKQogCiAKIFRoZSBvdXRwdXQgb2YgdGhlIGV4YW1wbGUgc2hvdWxkIGxvb2sgc29tZXRoaW5nIGxpa2UgdGhpczoKQEAgLTYxNiwzICs2MzYsNSBAQAogCiBUaGUgOmNsYXNzOmBGb3JraW5nTWl4SW5gIGNsYXNzIGlzIHVzZWQgaW4gdGhlIHNhbWUgd2F5LCBleGNlcHQgdGhhdCB0aGUgc2VydmVyCiB3aWxsIHNwYXduIGEgbmV3IHByb2Nlc3MgZm9yIGVhY2ggcmVxdWVzdC4KK0F2YWlsYWJsZSBvbmx5IG9uIFBPU0lYIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQgOmZ1bmM6YH5vcy5mb3JrYC4KKwpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3B3ZC5yc3QgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdAppbmRleCBmZDNjOWFkLi5jNmNhZDJhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcHdkLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcHdkLnJzdApAQCAtNTUsNiArNTUsOSBAQAogCiAgICBSZXR1cm4gdGhlIHNoYWRvdyBwYXNzd29yZCBkYXRhYmFzZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHVzZXIgbmFtZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIFJhaXNlcyBhIDpleGM6YFBlcm1pc3Npb25FcnJvcmAgaW5zdGVhZCBvZiA6ZXhjOmBLZXlFcnJvcmAgaWYgdGhlIHVzZXIKKyAgICAgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgogCiAuLiBmdW5jdGlvbjo6IGdldHNwYWxsKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3FsaXRlMy5yc3QgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAppbmRleCBkMTAwNWI1Li43NjY5M2JkIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zcWxpdGUzLnJzdApAQCAtNjI5LDkgKzYyOSwxNiBAQAogICAgLi4gYXR0cmlidXRlOjogbGFzdHJvd2lkCiAKICAgICAgIFRoaXMgcmVhZC1vbmx5IGF0dHJpYnV0ZSBwcm92aWRlcyB0aGUgcm93aWQgb2YgdGhlIGxhc3QgbW9kaWZpZWQgcm93LiBJdCBpcwotICAgICAgb25seSBzZXQgaWYgeW91IGlzc3VlZCBhbiBgYElOU0VSVGBgIHN0YXRlbWVudCB1c2luZyB0aGUgOm1ldGg6YGV4ZWN1dGVgCi0gICAgICBtZXRob2QuIEZvciBvcGVyYXRpb25zIG90aGVyIHRoYW4gYGBJTlNFUlRgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMKLSAgICAgIGNhbGxlZCwgOmF0dHI6YGxhc3Ryb3dpZGAgaXMgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisgICAgICBvbmx5IHNldCBpZiB5b3UgaXNzdWVkIGFuIGBgSU5TRVJUYGAgb3IgYSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQgdXNpbmcgdGhlCisgICAgICA6bWV0aDpgZXhlY3V0ZWAgbWV0aG9kLiAgRm9yIG9wZXJhdGlvbnMgb3RoZXIgdGhhbiBgYElOU0VSVGBgIG9yCisgICAgICBgYFJFUExBQ0VgYCBvciB3aGVuIDptZXRoOmBleGVjdXRlbWFueWAgaXMgY2FsbGVkLCA6YXR0cjpgbGFzdHJvd2lkYCBpcworICAgICAgc2V0IHRvIDpjb25zdDpgTm9uZWAuCisKKyAgICAgIElmIHRoZSBgYElOU0VSVGBgIG9yIGBgUkVQTEFDRWBgIHN0YXRlbWVudCBmYWlsZWQgdG8gaW5zZXJ0IHRoZSBwcmV2aW91cworICAgICAgc3VjY2Vzc2Z1bCByb3dpZCBpcyByZXR1cm5lZC4KKworICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBgYFJFUExBQ0VgYCBzdGF0ZW1lbnQuCiAKICAgIC4uIGF0dHJpYnV0ZTo6IGRlc2NyaXB0aW9uCiAKQEAgLTkxOCw5ICs5MjUsNyBAQAogCiBCeSBkZWZhdWx0LCB0aGUgOm1vZDpgc3FsaXRlM2AgbW9kdWxlIG9wZW5zIHRyYW5zYWN0aW9ucyBpbXBsaWNpdGx5IGJlZm9yZSBhCiBEYXRhIE1vZGlmaWNhdGlvbiBMYW5ndWFnZSAoRE1MKSAgc3RhdGVtZW50IChpLmUuCi1gYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCksIGFuZCBjb21taXRzIHRyYW5zYWN0aW9ucwotaW1wbGljaXRseSBiZWZvcmUgYSBub24tRE1MLCBub24tcXVlcnkgc3RhdGVtZW50IChpLiBlLgotYW55dGhpbmcgb3RoZXIgdGhhbiBgYFNFTEVDVGBgIG9yIHRoZSBhZm9yZW1lbnRpb25lZCkuCitgYElOU0VSVGBgL2BgVVBEQVRFYGAvYGBERUxFVEVgYC9gYFJFUExBQ0VgYCkuCiAKIFNvIGlmIHlvdSBhcmUgd2l0aGluIGEgdHJhbnNhY3Rpb24gYW5kIGlzc3VlIGEgY29tbWFuZCBsaWtlIGBgQ1JFQVRFIFRBQkxFCiAuLi5gYCwgYGBWQUNVVU1gYCwgYGBQUkFHTUFgYCwgdGhlIDptb2Q6YHNxbGl0ZTNgIG1vZHVsZSB3aWxsIGNvbW1pdCBpbXBsaWNpdGx5CkBAIC05NDAsNiArOTQ1LDkgQEAKIHN0YXRlbWVudCwgb3Igc2V0IGl0IHRvIG9uZSBvZiBTUUxpdGUncyBzdXBwb3J0ZWQgaXNvbGF0aW9uIGxldmVsczogIkRFRkVSUkVEIiwKICJJTU1FRElBVEUiIG9yICJFWENMVVNJVkUiLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgOm1vZDpgc3FsaXRlM2AgdXNlZCB0byBpbXBsaWNpdGx5IGNvbW1pdCBhbiBvcGVuIHRyYW5zYWN0aW9uIGJlZm9yZSBEREwKKyAgIHN0YXRlbWVudHMuICBUaGlzIGlzIG5vIGxvbmdlciB0aGUgY2FzZS4KIAogCiBVc2luZyA6bW9kOmBzcWxpdGUzYCBlZmZpY2llbnRseQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3NsLnJzdCBiL0RvYy9saWJyYXJ5L3NzbC5yc3QKaW5kZXggMDFkODZjOC4uNzYwMDNlYSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvc3NsLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zc2wucnN0CkBAIC00OSw2ICs0OSwxMiBAQAogaGVscHMgbWFuYWdlIHNldHRpbmdzIGFuZCBjZXJ0aWZpY2F0ZXMsIHdoaWNoIGNhbiB0aGVuIGJlIGluaGVyaXRlZAogYnkgU1NMIHNvY2tldHMgY3JlYXRlZCB0aHJvdWdoIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBPcGVuU1NMIDAuOS44LCAxLjAuMCBhbmQgMS4wLjEgYXJlIGRlcHJlY2F0ZWQgYW5kIG5vIGxvbmdlciBzdXBwb3J0ZWQuCisgICBJbiB0aGUgZnV0dXJlIHRoZSBzc2wgbW9kdWxlIHdpbGwgcmVxdWlyZSBhdCBsZWFzdCBPcGVuU1NMIDEuMC4yIG9yCisgICAxLjEuMC4KKwogCiBGdW5jdGlvbnMsIENvbnN0YW50cywgYW5kIEV4Y2VwdGlvbnMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtMTg2LDE2ICsxOTIsMjAgQEAKIAogICAgICAuLiB0YWJsZTo6CiAKLSAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQotICAgICAgICAqY2xpZW50KiAvICoqc2VydmVyKiogICAgKipTU0x2MioqICAqKlNTTHYzKiogICoqVExTKiogICAgICoqVExTdjEqKiAgKipUTFN2MS4xKiogICoqVExTdjEuMioqCi0gICAgICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tICAtLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0KLSAgICAgICAgKlNTTHYyKiAgICAgICAgICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubwotICAgICAgICAqU1NMdjMqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIG5vCi0gICAgICAgICpUTFMqICgqU1NMdjIzKikgICAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIHllcyAgICAgICAgeWVzCi0gICAgICAgICpUTFN2MSogICAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMgICAgICAgICB5ZXMgICAgICAgIG5vICAgICAgICAgbm8KLSAgICAgICAgKlRMU3YxLjEqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICBubwotICAgICAgICAqVExTdjEuMiogICAgICAgICAgICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgeWVzICAgICAgICAgbm8gICAgICAgICBubyAgICAgICAgIHllcwotICAgICAgID09PT09PT09PT09PT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT0gID09PT09PT09PSAgPT09PT09PT09PT0gID09PT09PT09PT09CisgICAgICAgPT09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09PSAgPT09PT09PT09ICA9PT09PT09PT09PSAgPT09PT09PT09PT0KKyAgICAgICAgKmNsaWVudCogLyAqKnNlcnZlcioqICAgICoqU1NMdjIqKiAgICAgKipTU0x2MyoqICAgICAqKlRMUyoqICAgICAgICAqKlRMU3YxKiogICoqVExTdjEuMSoqICAqKlRMU3YxLjIqKgorICAgICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLS0tICAtLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLSAgLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tCisgICAgICAgICpTU0x2MiogICAgICAgICAgICAgICAgICAgIHllcyAgICAgICAgICAgbm8gICAgICAgICAgICBubyBbMV1fICAgICAgICBubyAgICAgICAgIG5vICAgICAgICAgbm8KKyAgICAgICAgKlNTTHYzKiAgICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgIG5vIFsyXV8gICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICBubworICAgICAgICAqVExTKiAoKlNTTHYyMyopICAgICAgICAgICBubyBbMV1fICAgICAgIG5vIFsyXV8gICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICB5ZXMgICAgICAgIHllcworICAgICAgICAqVExTdjEqICAgICAgICAgICAgICAgICAgICBubyAgICAgICAgICAgIG5vICAgICAgICAgICAgeWVzICAgICAgICAgICAgeWVzICAgICAgICBubyAgICAgICAgIG5vCisgICAgICAgICpUTFN2MS4xKiAgICAgICAgICAgICAgICAgIG5vICAgICAgICAgICAgbm8gICAgICAgICAgICB5ZXMgICAgICAgICAgICBubyAgICAgICAgIHllcyAgICAgICAgbm8KKyAgICAgICAgKlRMU3YxLjIqICAgICAgICAgICAgICAgICAgbm8gICAgICAgICAgICBubyAgICAgICAgICAgIHllcyAgICAgICAgICAgIG5vICAgICAgICAgbm8gICAgICAgICB5ZXMKKyAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT0gID09PT09PT09PT09PSAgPT09PT09PT09PT09ICA9PT09PT09PT09PT09ICA9PT09PT09PT0gID09PT09PT09PT09ICA9PT09PT09PT09PQorCisgICAuLiBydWJyaWM6OiBGb290bm90ZXMKKyAgIC4uIFsxXSA6Y2xhc3M6YFNTTENvbnRleHRgIGRpc2FibGVzIFNTTHYyIHdpdGggOmRhdGE6YE9QX05PX1NTTHYyYCBieSBkZWZhdWx0LgorICAgLi4gWzJdIDpjbGFzczpgU1NMQ29udGV4dGAgZGlzYWJsZXMgU1NMdjMgd2l0aCA6ZGF0YTpgT1BfTk9fU1NMdjNgIGJ5IGRlZmF1bHQuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0yMjQsNyArMjM0LDYgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBOZXcgb3B0aW9uYWwgYXJndW1lbnQgKmNpcGhlcnMqLgogCi0KIENvbnRleHQgY3JlYXRpb24KIF5eXl5eXl5eXl5eXl5eXl4KIApAQCAtMjc5LDcgKzI4OCw3IEBACiAKICAgICAgUkM0IHdhcyBkcm9wcGVkIGZyb20gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAogICAgICBDaGFDaGEyMC9Qb2x5MTMwNSB3YXMgYWRkZWQgdG8gdGhlIGRlZmF1bHQgY2lwaGVyIHN0cmluZy4KIApAQCAtMzIyLDcgKzMzMSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMwogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCA6ZnVuYzpgc3NsLlJBTkRfcHNldWRvX2J5dGVzYCwgdXNlCiAgICAgICA6ZnVuYzpgc3NsLlJBTkRfYnl0ZXNgIGluc3RlYWQuCkBAIC01MDksNiArNTE4LDEwIEBACiBDb25zdGFudHMKIF5eXl5eXl5eXgogCisgICBBbGwgY29uc3RhbnRzIGFyZSBub3cgOmNsYXNzOmBlbnVtLkludEVudW1gIG9yIDpjbGFzczpgZW51bS5JbnRGbGFnYCBjb2xsZWN0aW9ucy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBDRVJUX05PTkUKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCwgb3IgdGhlIGBgY2VydF9yZXFzYGAKQEAgLTU0Miw2ICs1NTUsMTIgQEAKICAgIGJlIHBhc3NlZCwgZWl0aGVyIHRvIDptZXRoOmBTU0xDb250ZXh0LmxvYWRfdmVyaWZ5X2xvY2F0aW9uc2Agb3IgYXMgYQogICAgdmFsdWUgb2YgdGhlIGBgY2FfY2VydHNgYCBwYXJhbWV0ZXIgdG8gOmZ1bmM6YHdyYXBfc29ja2V0YC4KIAorLi4gY2xhc3M6OiBWZXJpZnlNb2RlCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIENFUlRfKiBjb25zdGFudHMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBkYXRhOjogVkVSSUZZX0RFRkFVTFQKIAogICAgUG9zc2libGUgdmFsdWUgZm9yIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AuIEluIHRoaXMgbW9kZSwgY2VydGlmaWNhdGUKQEAgLTU4MiwxOCArNjAxLDQwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNC40CiAKKy4uIGNsYXNzOjogVmVyaWZ5RmxhZ3MKKworICAgOmNsYXNzOmBlbnVtLkludEZsYWdgIGNvbGxlY3Rpb24gb2YgVkVSSUZZXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFBST1RPQ09MX1RMUwogCiAgICBTZWxlY3RzIHRoZSBoaWdoZXN0IHByb3RvY29sIHZlcnNpb24gdGhhdCBib3RoIHRoZSBjbGllbnQgYW5kIHNlcnZlciBzdXBwb3J0LgogICAgRGVzcGl0ZSB0aGUgbmFtZSwgdGhpcyBvcHRpb24gY2FuIHNlbGVjdCAiVExTIiBwcm90b2NvbHMgYXMgd2VsbCBhcyAiU1NMIi4KIAotICAgLi4gdmVyc2lvbmFkZGVkOjogMy41LjMKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX0NMSUVOVAorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBjbGllbnQtc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuIFRoZSBwcm90b2NvbAorICAgZW5hYmxlcyA6ZGF0YTpgQ0VSVF9SRVFVSVJFRGAgYW5kIDphdHRyOmB+U1NMQ29udGV4dC5jaGVja19ob3N0bmFtZWAgYnkKKyAgIGRlZmF1bHQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUFJPVE9DT0xfVExTX1NFUlZFUgorCisgICBBdXRvLW5lZ290aWF0ZSB0aGUgdGhlIGhpZ2hlc3QgcHJvdG9jb2wgdmVyc2lvbiBsaWtlIDpkYXRhOmBQUk9UT0NPTF9TU0x2MjNgLAorICAgYnV0IG9ubHkgc3VwcG9ydCBzZXJ2ZXItc2lkZSA6Y2xhc3M6YFNTTFNvY2tldGAgY29ubmVjdGlvbnMuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBkYXRhOjogUFJPVE9DT0xfU1NMdjIzCiAKICAgIEFsaWFzIGZvciBkYXRhOmBQUk9UT0NPTF9UTFNgLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgVXNlIGRhdGE6YFBST1RPQ09MX1RMU2AgaW5zdGVhZC4KIApAQCAtNjA4LDcgKzY0OSw3IEBACiAKICAgICAgIFNTTCB2ZXJzaW9uIDIgaXMgaW5zZWN1cmUuICBJdHMgdXNlIGlzIGhpZ2hseSBkaXNjb3VyYWdlZC4KIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIHJlbW92ZWQgc3VwcG9ydCBmb3IgU1NMdjIuCiAKQEAgLTYyMyw3ICs2NjQsNyBAQAogCiAgICAgICBTU0wgdmVyc2lvbiAzIGlzIGluc2VjdXJlLiAgSXRzIHVzZSBpcyBoaWdobHkgZGlzY291cmFnZWQuCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTYzMiw3ICs2NzMsNyBAQAogCiAgICBTZWxlY3RzIFRMUyB2ZXJzaW9uIDEuMCBhcyB0aGUgY2hhbm5lbCBlbmNyeXB0aW9uIHByb3RvY29sLgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgT3BlblNTTCBoYXMgZGVwcmVjYXRlZCBhbGwgdmVyc2lvbiBzcGVjaWZpYyBwcm90b2NvbHMuIFVzZSB0aGUgZGVmYXVsdAogICAgICAgcHJvdG9jb2wgZGF0YTpgUFJPVE9DT0xfVExTYCB3aXRoIGZsYWdzIGxpa2UgZGF0YTpgT1BfTk9fU1NMdjNgIGluc3RlYWQuCkBAIC02NDQsNyArNjg1LDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy40CiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBPcGVuU1NMIGhhcyBkZXByZWNhdGVkIGFsbCB2ZXJzaW9uIHNwZWNpZmljIHByb3RvY29scy4gVXNlIHRoZSBkZWZhdWx0CiAgICAgICBwcm90b2NvbCBkYXRhOmBQUk9UT0NPTF9UTFNgIHdpdGggZmxhZ3MgbGlrZSBkYXRhOmBPUF9OT19TU0x2M2AgaW5zdGVhZC4KQEAgLTY1Nyw3ICs2OTgsNyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAotICAgLi4gZGVwcmVjYXRlZDo6IDMuNS4zCisgICAuLiBkZXByZWNhdGVkOjogMy42CiAKICAgICAgIE9wZW5TU0wgaGFzIGRlcHJlY2F0ZWQgYWxsIHZlcnNpb24gc3BlY2lmaWMgcHJvdG9jb2xzLiBVc2UgdGhlIGRlZmF1bHQKICAgICAgIHByb3RvY29sIGRhdGE6YFBST1RPQ09MX1RMU2Agd2l0aCBmbGFncyBsaWtlIGRhdGE6YE9QX05PX1NTTHYzYCBpbnN0ZWFkLgpAQCAtNjc4LDcgKzcxOSw3IEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuMgogCi0gICAuLiBkZXByZWNhdGVkOjogMy41LjMKKyAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjYKIAogICAgICAgU1NMdjIgaXMgZGVwcmVjYXRlZAogCkBAIC02OTEsNyArNzMyLDcgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKLSAgIC4uIGRlcHJlY2F0ZWQ6OiAzLjUuMworICAgLi4gZGVwcmVjYXRlZDo6IDMuNgogCiAgICAgICBTU0x2MyBpcyBkZXByZWNhdGVkCiAKQEAgLTc1MSw2ICs3OTIsMTYgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKKy4uIGNsYXNzOjogT3B0aW9ucworCisgICA6Y2xhc3M6YGVudW0uSW50RmxhZ2AgY29sbGVjdGlvbiBvZiBPUF8qIGNvbnN0YW50cy4KKworLi4gZGF0YTo6IE9QX05PX1RJQ0tFVAorCisgICBQcmV2ZW50IGNsaWVudCBzaWRlIGZyb20gcmVxdWVzdGluZyBhIHNlc3Npb24gdGlja2V0LgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IEhBU19BTFBOCiAKICAgIFdoZXRoZXIgdGhlIE9wZW5TU0wgbGlicmFyeSBoYXMgYnVpbHQtaW4gc3VwcG9ydCBmb3IgdGhlICpBcHBsaWNhdGlvbi1MYXllcgpAQCAtODMzLDYgKzg4NCwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorLi4gY2xhc3M6OiBBbGVydERlc2NyaXB0aW9uCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIEFMRVJUX0RFU0NSSVBUSU9OXyogY29uc3RhbnRzLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gZGF0YTo6IFB1cnBvc2UuU0VSVkVSX0FVVEgKIAogICAgT3B0aW9uIGZvciA6ZnVuYzpgY3JlYXRlX2RlZmF1bHRfY29udGV4dGAgYW5kCkBAIC04NTEsNiArOTA4LDEyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBjbGFzczo6IFNTTEVycm9yTnVtYmVyCisKKyAgIDpjbGFzczpgZW51bS5JbnRFbnVtYCBjb2xsZWN0aW9uIG9mIFNTTF9FUlJPUl8qIGNvbnN0YW50cy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIFNvY2tldHMKIC0tLS0tLS0tLS0tCkBAIC04ODUsNyArOTQ4LDcgQEAKICAgIDpyZWY6YG5vdGVzIG9uIG5vbi1ibG9ja2luZyBzb2NrZXRzIDxzc2wtbm9uYmxvY2tpbmc+YC4KIAogICAgVXN1YWxseSwgOmNsYXNzOmBTU0xTb2NrZXRgIGFyZSBub3QgY3JlYXRlZCBkaXJlY3RseSwgYnV0IHVzaW5nIHRoZQotICAgOmZ1bmM6YHdyYXBfc29ja2V0YCBmdW5jdGlvbiBvciB0aGUgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIG1ldGhvZC4KKyAgIHRoZSA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAgbWV0aG9kLgogCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNQogICAgICAgVGhlIDptZXRoOmBzZW5kZmlsZWAgbWV0aG9kIHdhcyBhZGRlZC4KQEAgLTg5NSw2ICs5NTgsMTAgQEAKICAgICAgIGFyZSByZWNlaXZlZCBvciBzZW50LiBUaGUgc29ja2V0IHRpbWVvdXQgaXMgbm93IHRvIG1heGltdW0gdG90YWwgZHVyYXRpb24KICAgICAgIG9mIHRoZSBzaHV0ZG93bi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgSXQgaXMgZGVwcmVjYXRlZCB0byBjcmVhdGUgYSA6Y2xhc3M6YFNTTFNvY2tldGAgaW5zdGFuY2UgZGlyZWN0bHksIHVzZQorICAgICAgOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgIHRvIHdyYXAgYSBzb2NrZXQuCisKIAogU1NMIHNvY2tldHMgYWxzbyBoYXZlIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgogCkBAIC05MTUsNiArOTgyLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byByZWFkIHVwIHRvICpsZW4qCiAgICAgICBieXRlcy4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnJlY3ZgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQucmVhZGAuCisKIC4uIG1ldGhvZDo6IFNTTFNvY2tldC53cml0ZShidWYpCiAKICAgIFdyaXRlICpidWYqIHRvIHRoZSBTU0wgc29ja2V0IGFuZCByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuLiBUaGUKQEAgLTkzMCw2ICsxMDAwLDkgQEAKICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBubyBtb3JlIHJlc2V0IGVhY2ggdGltZSBieXRlcyBhcmUgcmVjZWl2ZWQgb3Igc2VudC4KICAgICAgIFRoZSBzb2NrZXQgdGltZW91dCBpcyBub3cgdG8gbWF4aW11bSB0b3RhbCBkdXJhdGlvbiB0byB3cml0ZSAqYnVmKi4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorICAgICAgVXNlIDptZXRoOmB+U1NMU29ja2V0LnNlbmRgIGluc3RlYWQgb2YgOm1ldGg6YH5TU0xTb2NrZXQud3JpdGVgLgorCiAuLiBub3RlOjoKIAogICAgVGhlIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgIGFuZCA6bWV0aDpgflNTTFNvY2tldC53cml0ZWAgbWV0aG9kcyBhcmUgdGhlCkBAIC0xMTI3LDYgKzEyMDAsMTkgQEAKIAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4yCiAKKy4uIGF0dHJpYnV0ZTo6IFNTTFNvY2tldC5zZXNzaW9uCisKKyAgIFRoZSA6Y2xhc3M6YFNTTFNlc3Npb25gIGZvciB0aGlzIFNTTCBjb25uZWN0aW9uLiBUaGUgc2Vzc2lvbiBpcyBhdmFpbGFibGUKKyAgIGZvciBjbGllbnQgYW5kIHNlcnZlciBzaWRlIHNvY2tldHMgYWZ0ZXIgdGhlIFRMUyBoYW5kc2hha2UgaGFzIGJlZW4KKyAgIHBlcmZvcm1lZC4gRm9yIGNsaWVudCBzb2NrZXRzIHRoZSBzZXNzaW9uIGNhbiBiZSBzZXQgYmVmb3JlCisgICA6bWV0aDpgflNTTFNvY2tldC5kb19oYW5kc2hha2VgIGhhcyBiZWVuIGNhbGxlZCB0byByZXVzZSBhIHNlc3Npb24uCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBhdHRyaWJ1dGU6OiBTU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWQKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIAogU1NMIENvbnRleHRzCiAtLS0tLS0tLS0tLS0KQEAgLTExNDksOSArMTIzNSwxNiBAQAogICAgICAgOmZ1bmM6YGNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIGxldHMgdGhlIDptb2Q6YHNzbGAgbW9kdWxlIGNob29zZQogICAgICAgc2VjdXJpdHkgc2V0dGluZ3MgZm9yIGEgZ2l2ZW4gcHVycG9zZS4KIAotICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUuMworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKIAotICAgICAgOmRhdGE6YFBST1RPQ09MX1RMU2AgaXMgdGhlIGRlZmF1bHQgdmFsdWUuCisgICAgICBUaGUgY29udGV4dCBpcyBjcmVhdGVkIHdpdGggc2VjdXJlIGRlZmF1bHQgdmFsdWVzLiBUaGUgb3B0aW9ucworICAgICAgOmRhdGE6YE9QX05PX0NPTVBSRVNTSU9OYCwgOmRhdGE6YE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRWAsCisgICAgICA6ZGF0YTpgT1BfU0lOR0xFX0RIX1VTRWAsIDpkYXRhOmBPUF9TSU5HTEVfRUNESF9VU0VgLAorICAgICAgOmRhdGE6YE9QX05PX1NTTHYyYCAoZXhjZXB0IGZvciA6ZGF0YTpgUFJPVE9DT0xfU1NMdjJgKSwKKyAgICAgIGFuZCA6ZGF0YTpgT1BfTk9fU1NMdjNgIChleGNlcHQgZm9yIDpkYXRhOmBQUk9UT0NPTF9TU0x2M2ApIGFyZQorICAgICAgc2V0IGJ5IGRlZmF1bHQuIFRoZSBpbml0aWFsIGNpcGhlciBzdWl0ZSBsaXN0IGNvbnRhaW5zIG9ubHkgYGBISUdIYGAKKyAgICAgIGNpcGhlcnMsIG5vIGBgTlVMTGBgIGNpcGhlcnMgYW5kIG5vIGBgTUQ1YGAgY2lwaGVycyAoZXhjZXB0IGZvcgorICAgICAgOmRhdGE6YFBST1RPQ09MX1NTTHYyYCkuCiAKIAogOmNsYXNzOmBTU0xDb250ZXh0YCBvYmplY3RzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgpAQCAtMTI1OSw2ICsxMzUyLDYyIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNAogCisuLiBtZXRob2Q6OiBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkKKworICAgR2V0IGEgbGlzdCBvZiBlbmFibGVkIGNpcGhlcnMuIFRoZSBsaXN0IGlzIGluIG9yZGVyIG9mIGNpcGhlciBwcmlvcml0eS4KKyAgIFNlZSA6bWV0aDpgU1NMQ29udGV4dC5zZXRfY2lwaGVyc2AuCisKKyAgIEV4YW1wbGU6OgorCisgICAgICAgPj4+IGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgPj4+IGN0eC5zZXRfY2lwaGVycygnRUNESEUrQUVTR0NNOiFFQ0RTQScpCisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4wLngKKyAgICAgICBbeydhbGdfYml0cyc6IDI1NiwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDI1NikgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDgsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMjU2fSwKKyAgICAgICAgeydhbGdfYml0cyc6IDEyOCwKKyAgICAgICAgICdkZXNjcmlwdGlvbic6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYgVExTdjEuMiBLeD1FQ0RIICAgICBBdT1SU0EgICcKKyAgICAgICAgICAgICAgICAgICAgICAgICdFbmM9QUVTR0NNKDEyOCkgTWFjPUFFQUQnLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMTI4LUdDTS1TSEEyNTYnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxL1NTTHYzJywKKyAgICAgICAgICdzdHJlbmd0aF9iaXRzJzogMTI4fV0KKworICAgT24gT3BlblNTTCAxLjEgYW5kIG5ld2VyIHRoZSBjaXBoZXIgZGljdCBjb250YWlucyBhZGRpdGlvbmFsIGZpZWxkczo6CisgICAgICAgPj4+IGN0eC5nZXRfY2lwaGVycygpICAjIE9wZW5TU0wgMS4xKworICAgICAgIFt7J2FlYWQnOiBUcnVlLAorICAgICAgICAgJ2FsZ19iaXRzJzogMjU2LAorICAgICAgICAgJ2F1dGgnOiAnYXV0aC1yc2EnLAorICAgICAgICAgJ2Rlc2NyaXB0aW9uJzogJ0VDREhFLVJTQS1BRVMyNTYtR0NNLVNIQTM4NCBUTFN2MS4yIEt4PUVDREggICAgIEF1PVJTQSAgJworICAgICAgICAgICAgICAgICAgICAgICAgJ0VuYz1BRVNHQ00oMjU2KSBNYWM9QUVBRCcsCisgICAgICAgICAnZGlnZXN0JzogTm9uZSwKKyAgICAgICAgICdpZCc6IDUwMzgwODQ4LAorICAgICAgICAgJ2tlYSc6ICdreC1lY2RoZScsCisgICAgICAgICAnbmFtZSc6ICdFQ0RIRS1SU0EtQUVTMjU2LUdDTS1TSEEzODQnLAorICAgICAgICAgJ3Byb3RvY29sJzogJ1RMU3YxLjInLAorICAgICAgICAgJ3N0cmVuZ3RoX2JpdHMnOiAyNTYsCisgICAgICAgICAnc3ltbWV0cmljJzogJ2Flcy0yNTYtZ2NtJ30sCisgICAgICAgIHsnYWVhZCc6IFRydWUsCisgICAgICAgICAnYWxnX2JpdHMnOiAxMjgsCisgICAgICAgICAnYXV0aCc6ICdhdXRoLXJzYScsCisgICAgICAgICAnZGVzY3JpcHRpb24nOiAnRUNESEUtUlNBLUFFUzEyOC1HQ00tU0hBMjU2IFRMU3YxLjIgS3g9RUNESCAgICAgQXU9UlNBICAnCisgICAgICAgICAgICAgICAgICAgICAgICAnRW5jPUFFU0dDTSgxMjgpIE1hYz1BRUFEJywKKyAgICAgICAgICdkaWdlc3QnOiBOb25lLAorICAgICAgICAgJ2lkJzogNTAzODA4NDcsCisgICAgICAgICAna2VhJzogJ2t4LWVjZGhlJywKKyAgICAgICAgICduYW1lJzogJ0VDREhFLVJTQS1BRVMxMjgtR0NNLVNIQTI1NicsCisgICAgICAgICAncHJvdG9jb2wnOiAnVExTdjEuMicsCisgICAgICAgICAnc3RyZW5ndGhfYml0cyc6IDEyOCwKKyAgICAgICAgICdzeW1tZXRyaWMnOiAnYWVzLTEyOC1nY20nfV0KKworICAgQXZhaWxhYmlsaXR5OiBPcGVuU1NMIDEuMC4yKworCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCiAgICBMb2FkIGEgc2V0IG9mIGRlZmF1bHQgImNlcnRpZmljYXRpb24gYXV0aG9yaXR5IiAoQ0EpIGNlcnRpZmljYXRlcyBmcm9tCkBAIC0xMzk3LDcgKzE1NDYsNyBAQAogCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLCBcCiAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLCBcCi0gICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSkKKyAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIFdyYXAgYW4gZXhpc3RpbmcgUHl0aG9uIHNvY2tldCAqc29jayogYW5kIHJldHVybiBhbiA6Y2xhc3M6YFNTTFNvY2tldGAKICAgIG9iamVjdC4gICpzb2NrKiBtdXN0IGJlIGEgOmRhdGE6YH5zb2NrZXQuU09DS19TVFJFQU1gIHNvY2tldDsgb3RoZXIgc29ja2V0CkBAIC0xNDE0LDE5ICsxNTYzLDI3IEBACiAgICBxdWl0ZSBzaW1pbGFybHkgdG8gSFRUUCB2aXJ0dWFsIGhvc3RzLiBTcGVjaWZ5aW5nICpzZXJ2ZXJfaG9zdG5hbWUqIHdpbGwKICAgIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAgaWYgKnNlcnZlcl9zaWRlKiBpcyB0cnVlLgogCisgICAqc2Vzc2lvbiosIHNlZSA6YXR0cjpgflNTTFNvY2tldC5zZXNzaW9uYC4KKwogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFsd2F5cyBhbGxvdyBhIHNlcnZlcl9ob3N0bmFtZSB0byBiZSBwYXNzZWQsIGV2ZW4gaWYgT3BlblNTTCBkb2VzIG5vdAogICAgICAgaGF2ZSBTTkkuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAqc2Vzc2lvbiogYXJndW1lbnQgd2FzIGFkZGVkLgorCiAuLiBtZXRob2Q6OiBTU0xDb250ZXh0LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgc2VydmVyX3NpZGU9RmFsc2UsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpCiAKICAgIENyZWF0ZSBhIG5ldyA6Y2xhc3M6YFNTTE9iamVjdGAgaW5zdGFuY2UgYnkgd3JhcHBpbmcgdGhlIEJJTyBvYmplY3RzCiAgICAqaW5jb21pbmcqIGFuZCAqb3V0Z29pbmcqLiBUaGUgU1NMIHJvdXRpbmVzIHdpbGwgcmVhZCBpbnB1dCBkYXRhIGZyb20gdGhlCiAgICBpbmNvbWluZyBCSU8gYW5kIHdyaXRlIGRhdGEgdG8gdGhlIG91dGdvaW5nIEJJTy4KIAotICAgVGhlICpzZXJ2ZXJfc2lkZSogYW5kICpzZXJ2ZXJfaG9zdG5hbWUqIHBhcmFtZXRlcnMgaGF2ZSB0aGUgc2FtZSBtZWFuaW5nIGFzCi0gICBpbiA6bWV0aDpgU1NMQ29udGV4dC53cmFwX3NvY2tldGAuCisgICBUaGUgKnNlcnZlcl9zaWRlKiwgKnNlcnZlcl9ob3N0bmFtZSogYW5kICpzZXNzaW9uKiBwYXJhbWV0ZXJzIGhhdmUgdGhlCisgICBzYW1lIG1lYW5pbmcgYXMgaW4gOm1ldGg6YFNTTENvbnRleHQud3JhcF9zb2NrZXRgLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKnNlc3Npb24qIGFyZ3VtZW50IHdhcyBhZGRlZC4KIAogLi4gbWV0aG9kOjogU1NMQ29udGV4dC5zZXNzaW9uX3N0YXRzKCkKIApAQCAtMTQ3OCw2ICsxNjM1LDEyIEBACiAgICAgICB0byBzZXQgb3B0aW9ucywgbm90IHRvIGNsZWFyIHRoZW0uICBBdHRlbXB0aW5nIHRvIGNsZWFyIGFuIG9wdGlvbgogICAgICAgKGJ5IHJlc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZyBiaXRzKSB3aWxsIHJhaXNlIGEgYGBWYWx1ZUVycm9yYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICA6YXR0cjpgU1NMQ29udGV4dC5vcHRpb25zYCByZXR1cm5zIDpjbGFzczpgT3B0aW9uc2AgZmxhZ3M6CisKKyAgICAgICAgID4+PiBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpLm9wdGlvbnMKKyAgICAgICAgIDxPcHRpb25zLk9QX0FMTHxPUF9OT19TU0x2M3xPUF9OT19TU0x2MnxPUF9OT19DT01QUkVTU0lPTjogMjE5Nzk0NzM5MT4KKwogLi4gYXR0cmlidXRlOjogU1NMQ29udGV4dC5wcm90b2NvbAogCiAgICBUaGUgcHJvdG9jb2wgdmVyc2lvbiBjaG9zZW4gd2hlbiBjb25zdHJ1Y3RpbmcgdGhlIGNvbnRleHQuICBUaGlzIGF0dHJpYnV0ZQpAQCAtMTQ5MiwxMiArMTY1NSwyMyBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9mbGFnc2AgcmV0dXJucyA6Y2xhc3M6YFZlcmlmeUZsYWdzYCBmbGFnczoKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X2ZsYWdzCisgICAgICAgICA8VmVyaWZ5RmxhZ3MuVkVSSUZZX1g1MDlfVFJVU1RFRF9GSVJTVDogMzI3Njg+CisKIC4uIGF0dHJpYnV0ZTo6IFNTTENvbnRleHQudmVyaWZ5X21vZGUKIAogICAgV2hldGhlciB0byB0cnkgdG8gdmVyaWZ5IG90aGVyIHBlZXJzJyBjZXJ0aWZpY2F0ZXMgYW5kIGhvdyB0byBiZWhhdmUKICAgIGlmIHZlcmlmaWNhdGlvbiBmYWlscy4gIFRoaXMgYXR0cmlidXRlIG11c3QgYmUgb25lIG9mCiAgICA6ZGF0YTpgQ0VSVF9OT05FYCwgOmRhdGE6YENFUlRfT1BUSU9OQUxgIG9yIDpkYXRhOmBDRVJUX1JFUVVJUkVEYC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDphdHRyOmBTU0xDb250ZXh0LnZlcmlmeV9tb2RlYCByZXR1cm5zIDpjbGFzczpgVmVyaWZ5TW9kZWAgZW51bToKKworICAgICAgICAgPj4+IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkudmVyaWZ5X21vZGUKKyAgICAgICAgIDxWZXJpZnlNb2RlLkNFUlRfUkVRVUlSRUQ6IDI+CiAKIC4uIGluZGV4Ojogc2luZ2xlOiBjZXJ0aWZpY2F0ZXMKIApAQCAtMTkxNiw2ICsyMDkwLDggQEAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuY29udGV4dGAKICAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2VydmVyX3NpZGVgCiAgICAtIDphdHRyOmB+U1NMU29ja2V0LnNlcnZlcl9ob3N0bmFtZWAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbmAKKyAgIC0gOmF0dHI6YH5TU0xTb2NrZXQuc2Vzc2lvbl9yZXVzZWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LnJlYWRgCiAgICAtIDptZXRoOmB+U1NMU29ja2V0LndyaXRlYAogICAgLSA6bWV0aDpgflNTTFNvY2tldC5nZXRwZWVyY2VydGAKQEAgLTE5OTcsNiArMjE3MywyMiBAQAogICAgICAgYmVjb21lIHRydWUgYWZ0ZXIgYWxsIGRhdGEgY3VycmVudGx5IGluIHRoZSBidWZmZXIgaGFzIGJlZW4gcmVhZC4KIAogCitTU0wgc2Vzc2lvbgorLS0tLS0tLS0tLS0KKworLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKy4uIGNsYXNzOjogU1NMU2Vzc2lvbgorCisgICBTZXNzaW9uIG9iamVjdCB1c2VkIGJ5IDphdHRyOmB+U1NMU29ja2V0LnNlc3Npb25gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBpZAorICAgLi4gYXR0cmlidXRlOjogdGltZQorICAgLi4gYXR0cmlidXRlOjogdGltZW91dAorICAgLi4gYXR0cmlidXRlOjogdGlja2V0X2xpZmV0aW1lX2hpbnQKKyAgIC4uIGF0dHJpYnV0ZTo6IGhhc190aWNrZXQKKworCiAuLiBfc3NsLXNlY3VyaXR5OgogCiBTZWN1cml0eSBjb25zaWRlcmF0aW9ucwpAQCAtMjA2MywxOCArMjI1NSwyMCBAQAogCiBTU0wgdmVyc2lvbnMgMiBhbmQgMyBhcmUgY29uc2lkZXJlZCBpbnNlY3VyZSBhbmQgYXJlIHRoZXJlZm9yZSBkYW5nZXJvdXMgdG8KIHVzZS4gIElmIHlvdSB3YW50IG1heGltdW0gY29tcGF0aWJpbGl0eSBiZXR3ZWVuIGNsaWVudHMgYW5kIHNlcnZlcnMsIGl0IGlzCi1yZWNvbW1lbmRlZCB0byB1c2UgOmNvbnN0OmBQUk9UT0NPTF9UTFNgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uIGFuZCB0aGVuCi1kaXNhYmxlIFNTTHYyIGFuZCBTU0x2MyBleHBsaWNpdGx5IHVzaW5nIHRoZSA6ZGF0YTpgU1NMQ29udGV4dC5vcHRpb25zYAotYXR0cmlidXRlOjoKK3JlY29tbWVuZGVkIHRvIHVzZSA6Y29uc3Q6YFBST1RPQ09MX1RMU19DTElFTlRgIG9yCis6Y29uc3Q6YFBST1RPQ09MX1RMU19TRVJWRVJgIGFzIHRoZSBwcm90b2NvbCB2ZXJzaW9uLiBTU0x2MiBhbmQgU1NMdjMgYXJlCitkaXNhYmxlZCBieSBkZWZhdWx0LgogCi0gICBjb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMUykKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjIKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fU1NMdjMKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKLSAgIGNvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjFfMQorICAgPj4+IGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19DTElFTlQpCisgICA+Pj4gY2xpZW50X2NvbnRleHQub3B0aW9ucyB8PSBzc2wuT1BfTk9fVExTdjEKKyAgID4+PiBjbGllbnRfY29udGV4dC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MV8xCisKIAogVGhlIFNTTCBjb250ZXh0IGNyZWF0ZWQgYWJvdmUgd2lsbCBvbmx5IGFsbG93IFRMU3YxLjIgYW5kIGxhdGVyIChpZgotc3VwcG9ydGVkIGJ5IHlvdXIgc3lzdGVtKSBjb25uZWN0aW9ucy4KK3N1cHBvcnRlZCBieSB5b3VyIHN5c3RlbSkgY29ubmVjdGlvbnMgdG8gYSBzZXJ2ZXIuIDpjb25zdDpgUFJPVE9DT0xfVExTX0NMSUVOVGAKK2ltcGxpZXMgY2VydGlmaWNhdGUgdmFsaWRhdGlvbiBhbmQgaG9zdG5hbWUgY2hlY2tzIGJ5IGRlZmF1bHQuIFlvdSBoYXZlIHRvCitsb2FkIGNlcnRpZmljYXRlcyBpbnRvIHRoZSBjb250ZXh0LgorCiAKIENpcGhlciBzZWxlY3Rpb24KICcnJycnJycnJycnJycnJycKQEAgLTIwODUsOCArMjI3OSw5IEBACiBzc2wgbW9kdWxlIGRpc2FibGVzIGNlcnRhaW4gd2VhayBjaXBoZXJzIGJ5IGRlZmF1bHQsIGJ1dCB5b3UgbWF5IHdhbnQKIHRvIGZ1cnRoZXIgcmVzdHJpY3QgdGhlIGNpcGhlciBjaG9pY2UuIEJlIHN1cmUgdG8gcmVhZCBPcGVuU1NMJ3MgZG9jdW1lbnRhdGlvbgogYWJvdXQgdGhlIGBjaXBoZXIgbGlzdCBmb3JtYXQgPGh0dHBzOi8vd3d3Lm9wZW5zc2wub3JnL2RvY3MvYXBwcy9jaXBoZXJzLmh0bWwjQ0lQSEVSLUxJU1QtRk9STUFUPmBfLgotSWYgeW91IHdhbnQgdG8gY2hlY2sgd2hpY2ggY2lwaGVycyBhcmUgZW5hYmxlZCBieSBhIGdpdmVuIGNpcGhlciBsaXN0LCB1c2UgdGhlCi1gYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91ciBzeXN0ZW0uCitJZiB5b3Ugd2FudCB0byBjaGVjayB3aGljaCBjaXBoZXJzIGFyZSBlbmFibGVkIGJ5IGEgZ2l2ZW4gY2lwaGVyIGxpc3QsIHVzZQorOm1ldGg6YFNTTENvbnRleHQuZ2V0X2NpcGhlcnNgIG9yIHRoZSBgYG9wZW5zc2wgY2lwaGVyc2BgIGNvbW1hbmQgb24geW91cgorc3lzdGVtLgogCiBNdWx0aS1wcm9jZXNzaW5nCiBeXl5eXl5eXl5eXl5eXl5eCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdGF0aXN0aWNzLnJzdCBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CmluZGV4IGVhM2Q3ZGEuLmMwMjBhMzQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0YXRpc3RpY3MucnN0CkBAIC0zOSw2ICszOSw3IEBACiAKID09PT09PT09PT09PT09PT09PT09PT09ICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIDpmdW5jOmBtZWFuYCAgICAgICAgICAgICBBcml0aG1ldGljIG1lYW4gKCJhdmVyYWdlIikgb2YgZGF0YS4KKzpmdW5jOmBoYXJtb25pY19tZWFuYCAgICBIYXJtb25pYyBtZWFuIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuYCAgICAgICAgICAgTWVkaWFuIChtaWRkbGUgdmFsdWUpIG9mIGRhdGEuCiA6ZnVuYzpgbWVkaWFuX2xvd2AgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogOmZ1bmM6YG1lZGlhbl9oaWdoYCAgICAgIEhpZ2ggbWVkaWFuIG9mIGRhdGEuCkBAIC0xMTEsNiArMTEyLDM4IEBACiAgICAgICBgYG1lYW4oZGF0YSlgYCBpcyBlcXVpdmFsZW50IHRvIGNhbGN1bGF0aW5nIHRoZSB0cnVlIHBvcHVsYXRpb24gbWVhbiDOvC4KIAogCisuLiBmdW5jdGlvbjo6IGhhcm1vbmljX21lYW4oZGF0YSkKKworICAgUmV0dXJuIHRoZSBoYXJtb25pYyBtZWFuIG9mICpkYXRhKiwgYSBzZXF1ZW5jZSBvciBpdGVyYXRvciBvZgorICAgcmVhbC12YWx1ZWQgbnVtYmVycy4KKworICAgVGhlIGhhcm1vbmljIG1lYW4sIHNvbWV0aW1lcyBjYWxsZWQgdGhlIHN1YmNvbnRyYXJ5IG1lYW4sIGlzIHRoZQorICAgcmVjaXByb2NhbCBvZiB0aGUgYXJpdGhtZXRpYyA6ZnVuYzpgbWVhbmAgb2YgdGhlIHJlY2lwcm9jYWxzIG9mIHRoZQorICAgZGF0YS4gRm9yIGV4YW1wbGUsIHRoZSBoYXJtb25pYyBtZWFuIG9mIHRocmVlIHZhbHVlcyAqYSosICpiKiBhbmQgKmMqCisgICB3aWxsIGJlIGVxdWl2YWxlbnQgdG8gYGAzLygxL2EgKyAxL2IgKyAxL2MpYGAuCisKKyAgIFRoZSBoYXJtb25pYyBtZWFuIGlzIGEgdHlwZSBvZiBhdmVyYWdlLCBhIG1lYXN1cmUgb2YgdGhlIGNlbnRyYWwKKyAgIGxvY2F0aW9uIG9mIHRoZSBkYXRhLiAgSXQgaXMgb2Z0ZW4gYXBwcm9wcmlhdGUgd2hlbiBhdmVyYWdpbmcgcXVhbnRpdGllcworICAgd2hpY2ggYXJlIHJhdGVzIG9yIHJhdGlvcywgZm9yIGV4YW1wbGUgc3BlZWRzLiBGb3IgZXhhbXBsZToKKworICAgU3VwcG9zZSBhbiBpbnZlc3RvciBwdXJjaGFzZXMgYW4gZXF1YWwgdmFsdWUgb2Ygc2hhcmVzIGluIGVhY2ggb2YKKyAgIHRocmVlIGNvbXBhbmllcywgd2l0aCBQL0UgKHByaWNlL2Vhcm5pbmcpIHJhdGlvcyBvZiAyLjUsIDMgYW5kIDEwLgorICAgV2hhdCBpcyB0aGUgYXZlcmFnZSBQL0UgcmF0aW8gZm9yIHRoZSBpbnZlc3RvcidzIHBvcnRmb2xpbz8KKworICAgLi4gZG9jdGVzdDo6CisKKyAgICAgID4+PiBoYXJtb25pY19tZWFuKFsyLjUsIDMsIDEwXSkgICMgRm9yIGFuIGVxdWFsIGludmVzdG1lbnQgcG9ydGZvbGlvLgorICAgICAgMy42CisKKyAgIFVzaW5nIHRoZSBhcml0aG1ldGljIG1lYW4gd291bGQgZ2l2ZSBhbiBhdmVyYWdlIG9mIGFib3V0IDUuMTY3LCB3aGljaAorICAgaXMgdG9vIGhpZ2guCisKKyAgIDpleGM6YFN0YXRpc3RpY3NFcnJvcmAgaXMgcmFpc2VkIGlmICpkYXRhKiBpcyBlbXB0eSwgb3IgYW55IGVsZW1lbnQKKyAgIGlzIGxlc3MgdGhhbiB6ZXJvLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiAuLiBmdW5jdGlvbjo6IG1lZGlhbihkYXRhKQogCiAgICBSZXR1cm4gdGhlIG1lZGlhbiAobWlkZGxlIHZhbHVlKSBvZiBudW1lcmljIGRhdGEsIHVzaW5nIHRoZSBjb21tb24gIm1lYW4gb2YKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3N0ZHR5cGVzLnJzdAppbmRleCBkYWM5OTJhLi5lYzBhY2U4IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdGR0eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0CkBAIC0xMzYzLDYgKzEzNjMsMTEgQEAKICAgIFRoZSA6YXR0cjpgfnJhbmdlLnN0YXJ0YCwgOmF0dHI6YH5yYW5nZS5zdG9wYCBhbmQgOmF0dHI6YH5yYW5nZS5zdGVwYAogICAgYXR0cmlidXRlcy4KIAorLi4gc2VlYWxzbzo6CisKKyAgICogVGhlIGBsaW5zcGFjZSByZWNpcGUgPGh0dHA6Ly9jb2RlLmFjdGl2ZXN0YXRlLmNvbS9yZWNpcGVzLzU3OTAwMC8+YF8KKyAgICAgc2hvd3MgaG93IHRvIGltcGxlbWVudCBhIGxhenkgdmVyc2lvbiBvZiByYW5nZSB0aGF0IHN1aXRhYmxlIGZvciBmbG9hdGluZworICAgICBwb2ludCBhcHBsaWNhdGlvbnMuCiAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogc3RyaW5nOyB0ZXh0IHNlcXVlbmNlIHR5cGUKQEAgLTE0NTMsOCArMTQ1OCw4IEBACiAKICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBgYHN0cmBgIGNsYXNzIGFuZCBpdHMgbWV0aG9kcywgc2VlCiAgICA6cmVmOmB0ZXh0c2VxYCBhbmQgdGhlIDpyZWY6YHN0cmluZy1tZXRob2RzYCBzZWN0aW9uIGJlbG93LiAgVG8gb3V0cHV0Ci0gICBmb3JtYXR0ZWQgc3RyaW5ncywgc2VlIHRoZSA6cmVmOmBmb3JtYXRzdHJpbmdzYCBzZWN0aW9uLiAgSW4gYWRkaXRpb24sCi0gICBzZWUgdGhlIDpyZWY6YHN0cmluZ3NlcnZpY2VzYCBzZWN0aW9uLgorICAgZm9ybWF0dGVkIHN0cmluZ3MsIHNlZSB0aGUgOnJlZjpgZi1zdHJpbmdzYCBhbmQgOnJlZjpgZm9ybWF0c3RyaW5nc2AKKyAgIHNlY3Rpb25zLiAgSW4gYWRkaXRpb24sIHNlZSB0aGUgOnJlZjpgc3RyaW5nc2VydmljZXNgIHNlY3Rpb24uCiAKIAogLi4gaW5kZXg6OgpAQCAtMjA1Niw4ICsyMDYxLDggQEAKIC4uIGluZGV4OjoKICAgIHNpbmdsZTogZm9ybWF0dGluZywgc3RyaW5nICglKQogICAgc2luZ2xlOiBpbnRlcnBvbGF0aW9uLCBzdHJpbmcgKCUpCi0gICBzaW5nbGU6IHN0cmluZzsgZm9ybWF0dGluZwotICAgc2luZ2xlOiBzdHJpbmc7IGludGVycG9sYXRpb24KKyAgIHNpbmdsZTogc3RyaW5nOyBmb3JtYXR0aW5nLCBwcmludGYKKyAgIHNpbmdsZTogc3RyaW5nOyBpbnRlcnBvbGF0aW9uLCBwcmludGYKICAgIHNpbmdsZTogcHJpbnRmLXN0eWxlIGZvcm1hdHRpbmcKICAgIHNpbmdsZTogc3ByaW50Zi1zdHlsZSBmb3JtYXR0aW5nCiAgICBzaW5nbGU6ICUgZm9ybWF0dGluZwpAQCAtMjA2Nyw5ICsyMDcyLDEwIEBACiAKICAgIFRoZSBmb3JtYXR0aW5nIG9wZXJhdGlvbnMgZGVzY3JpYmVkIGhlcmUgZXhoaWJpdCBhIHZhcmlldHkgb2YgcXVpcmtzIHRoYXQKICAgIGxlYWQgdG8gYSBudW1iZXIgb2YgY29tbW9uIGVycm9ycyAoc3VjaCBhcyBmYWlsaW5nIHRvIGRpc3BsYXkgdHVwbGVzIGFuZAotICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOm1ldGg6YHN0ci5mb3JtYXRgIGludGVyZmFjZQotICAgaGVscHMgYXZvaWQgdGhlc2UgZXJyb3JzLCBhbmQgYWxzbyBwcm92aWRlcyBhIGdlbmVyYWxseSBtb3JlIHBvd2VyZnVsLAotICAgZmxleGlibGUgYW5kIGV4dGVuc2libGUgYXBwcm9hY2ggdG8gZm9ybWF0dGluZyB0ZXh0LgorICAgZGljdGlvbmFyaWVzIGNvcnJlY3RseSkuICBVc2luZyB0aGUgbmV3ZXIgOnJlZjpgZm9ybWF0dGVkCisgICBzdHJpbmcgbGl0ZXJhbHMgPGYtc3RyaW5ncz5gIG9yIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgaW50ZXJmYWNlCisgICBoZWxwcyBhdm9pZCB0aGVzZSBlcnJvcnMuICBUaGVzZSBhbHRlcm5hdGl2ZXMgYWxzbyBwcm92aWRlIG1vcmUgcG93ZXJmdWwsCisgICBmbGV4aWJsZSBhbmQgZXh0ZW5zaWJsZSBhcHByb2FjaGVzIHRvIGZvcm1hdHRpbmcgdGV4dC4KIAogU3RyaW5nIG9iamVjdHMgaGF2ZSBvbmUgdW5pcXVlIGJ1aWx0LWluIG9wZXJhdGlvbjogdGhlIGBgJWBgIG9wZXJhdG9yIChtb2R1bG8pLgogVGhpcyBpcyBhbHNvIGtub3duIGFzIHRoZSBzdHJpbmcgKmZvcm1hdHRpbmcqIG9yICppbnRlcnBvbGF0aW9uKiBvcGVyYXRvci4KQEAgLTI2MzAsOCArMjYzNiw4IEBACiAgICBUaGUgcHJlZml4KGVzKSB0byBzZWFyY2ggZm9yIG1heSBiZSBhbnkgOnRlcm06YGJ5dGVzLWxpa2Ugb2JqZWN0YC4KIAogCi0uLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGVbLCBkZWxldGVdKQotICAgICAgICAgICAgYnl0ZWFycmF5LnRyYW5zbGF0ZSh0YWJsZVssIGRlbGV0ZV0pCisuLiBtZXRob2Q6OiBieXRlcy50cmFuc2xhdGUodGFibGUsIGRlbGV0ZT1iJycpCisgICAgICAgICAgICBieXRlYXJyYXkudHJhbnNsYXRlKHRhYmxlLCBkZWxldGU9YicnKQogCiAgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBieXRlcyBvciBieXRlYXJyYXkgb2JqZWN0IHdoZXJlIGFsbCBieXRlcyBvY2N1cnJpbmcgaW4KICAgIHRoZSBvcHRpb25hbCBhcmd1bWVudCAqZGVsZXRlKiBhcmUgcmVtb3ZlZCwgYW5kIHRoZSByZW1haW5pbmcgYnl0ZXMgaGF2ZQpAQCAtMjY0Nyw2ICsyNjUzLDkgQEAKICAgICAgID4+PiBiJ3JlYWQgdGhpcyBzaG9ydCB0ZXh0Jy50cmFuc2xhdGUoTm9uZSwgYidhZWlvdScpCiAgICAgICBiJ3JkIHRocyBzaHJ0IHR4dCcKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpkZWxldGUqIGlzIG5vdyBzdXBwb3J0ZWQgYXMgYSBrZXl3b3JkIGFyZ3VtZW50LgorCiAKIFRoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgaGF2ZSBkZWZhdWx0IGJlaGF2aW91cnMKIHRoYXQgYXNzdW1lIHRoZSB1c2Ugb2YgQVNDSUkgY29tcGF0aWJsZSBiaW5hcnkgZm9ybWF0cywgYnV0IGNhbiBzdGlsbCBiZSB1c2VkCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0IGIvRG9jL2xpYnJhcnkvc3RyaW5nLnJzdAppbmRleCBkNWQyNDMwLi42ZGJkM2Y5IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdHJpbmcucnN0CisrKyBiL0RvYy9saWJyYXJ5L3N0cmluZy5yc3QKQEAgLTE4OCw3ICsxODgsOSBAQAogCiBUaGUgOm1ldGg6YHN0ci5mb3JtYXRgIG1ldGhvZCBhbmQgdGhlIDpjbGFzczpgRm9ybWF0dGVyYCBjbGFzcyBzaGFyZSB0aGUgc2FtZQogc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgOmNsYXNzOmBGb3JtYXR0ZXJgLAotc3ViY2xhc3NlcyBjYW4gZGVmaW5lIHRoZWlyIG93biBmb3JtYXQgc3RyaW5nIHN5bnRheCkuCitzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4gIFRoZSBzeW50YXggaXMKK3JlbGF0ZWQgdG8gdGhhdCBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIDxmLXN0cmluZ3M+YCwgYnV0Cit0aGVyZSBhcmUgZGlmZmVyZW5jZXMuCiAKIEZvcm1hdCBzdHJpbmdzIGNvbnRhaW4gInJlcGxhY2VtZW50IGZpZWxkcyIgc3Vycm91bmRlZCBieSBjdXJseSBicmFjZXMgYGB7fWBgLgogQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWwgdGV4dCwgd2hpY2ggaXMKQEAgLTI4Myw3ICsyODUsOCBAQAogCiAiRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzIGNvbnRhaW5lZCB3aXRoaW4gYQogZm9ybWF0IHN0cmluZyB0byBkZWZpbmUgaG93IGluZGl2aWR1YWwgdmFsdWVzIGFyZSBwcmVzZW50ZWQgKHNlZQotOnJlZjpgZm9ybWF0c3RyaW5nc2ApLiAgVGhleSBjYW4gYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluCis6cmVmOmBmb3JtYXRzdHJpbmdzYCBhbmQgOnJlZjpgZi1zdHJpbmdzYCkuCitUaGV5IGNhbiBhbHNvIGJlIHBhc3NlZCBkaXJlY3RseSB0byB0aGUgYnVpbHQtaW4KIDpmdW5jOmBmb3JtYXRgIGZ1bmN0aW9uLiAgRWFjaCBmb3JtYXR0YWJsZSB0eXBlIG1heSBkZWZpbmUgaG93IHRoZSBmb3JtYXQKIHNwZWNpZmljYXRpb24gaXMgdG8gYmUgaW50ZXJwcmV0ZWQuCiAKQEAgLTI5NywxOCArMzAwLDIwIEBACiBUaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOgogCiAuLiBwcm9kdWN0aW9ubGlzdDo6IHNmCi0gICBmb3JtYXRfc3BlYzogW1tgZmlsbGBdYGFsaWduYF1bYHNpZ25gXVsjXVswXVtgd2lkdGhgXVssXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KKyAgIGZvcm1hdF9zcGVjOiBbW2BmaWxsYF1gYWxpZ25gXVtgc2lnbmBdWyNdWzBdW2B3aWR0aGBdW2Bncm91cGluZ19vcHRpb25gXVsuYHByZWNpc2lvbmBdW2B0eXBlYF0KICAgIGZpbGw6IDxhbnkgY2hhcmFjdGVyPgogICAgYWxpZ246ICI8IiB8ICI+IiB8ICI9IiB8ICJeIgogICAgc2lnbjogIisiIHwgIi0iIHwgIiAiCiAgICB3aWR0aDogYGludGVnZXJgCisgICBncm91cGluZ19vcHRpb246ICJfIiB8ICIsIgogICAgcHJlY2lzaW9uOiBgaW50ZWdlcmAKICAgIHR5cGU6ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIgogCiBJZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCoKIGNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmIG9taXR0ZWQuCiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoImBge2BgIiBvciAiYGB9YGAiKSBhcwotdGhlICpmaWxsKiBjaGFyYWN0ZXIgd2hlbiB1c2luZyB0aGUgOm1ldGg6YHN0ci5mb3JtYXRgCit0aGUgKmZpbGwqIGNoYXJhY3RlciBpbiBhIDpyZWY6YGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbAorPGYtc3RyaW5ncz5gIG9yIHdoZW4gdXNpbmcgdGhlIDptZXRoOmBzdHIuZm9ybWF0YAogbWV0aG9kLiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgdG8gaW5zZXJ0IGEgY3VybHkgYnJhY2UKIHdpdGggYSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGQuICBUaGlzIGxpbWl0YXRpb24gZG9lc24ndAogYWZmZWN0IHRoZSA6ZnVuYzpgZm9ybWF0YCBmdW5jdGlvbi4KQEAgLTM3NCw2ICszNzksMTYgQEAKIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4xCiAgICBBZGRlZCB0aGUgYGAnLCdgYCBvcHRpb24gKHNlZSBhbHNvIDpwZXA6YDM3OGApLgogCitUaGUgYGAnXydgYCBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgdGhvdXNhbmRzCitzZXBhcmF0b3IgZm9yIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBhbmQgZm9yIGludGVnZXIKK3ByZXNlbnRhdGlvbiB0eXBlIGBgJ2QnYGAuICBGb3IgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYGAnYidgYCwKK2BgJ28nYGAsIGBgJ3gnYGAsIGFuZCBgYCdYJ2BgLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQKK2RpZ2l0cy4gIEZvciBvdGhlciBwcmVzZW50YXRpb24gdHlwZXMsIHNwZWNpZnlpbmcgdGhpcyBvcHRpb24gaXMgYW4KK2Vycm9yLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgQWRkZWQgdGhlIGBgJ18nYGAgb3B0aW9uIChzZWUgYWxzbyA6cGVwOmA1MTVgKS4KKwogKndpZHRoKiBpcyBhIGRlY2ltYWwgaW50ZWdlciBkZWZpbmluZyB0aGUgbWluaW11bSBmaWVsZCB3aWR0aC4gIElmIG5vdAogc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlIGNvbnRlbnQuCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QgYi9Eb2MvbGlicmFyeS9zdHJ1Y3QucnN0CmluZGV4IGFlMmUzOGYuLjdlODYxZmQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N0cnVjdC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3RydWN0LnJzdApAQCAtMjE2LDYgKzIxNiw4IEBACiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgTmBgICB8IDpjOnR5cGU6YHNpemVfdGAgICAgICAgICB8IGludGVnZXIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIHwgXCg0KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCit8IGBgZWBgICB8IFwoNykgICAgICAgICAgICAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDIgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CisrLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZmBgICB8IDpjOnR5cGU6YGZsb2F0YCAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDQgICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CiArLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rCiB8IGBgZGBgICB8IDpjOnR5cGU6YGRvdWJsZWAgICAgICAgICB8IGZsb2F0ICAgICAgICAgICAgICB8IDggICAgICAgICAgICAgIHwgXCg1KSAgICAgICB8CkBAIC0yNTcsOSArMjU5LDEwIEBACiAgICBmaXRzIHlvdXIgYXBwbGljYXRpb24uCiAKICg1KQotICAgRm9yIHRoZSBgYCdmJ2BgIGFuZCBgYCdkJ2BgIGNvbnZlcnNpb24gY29kZXMsIHRoZSBwYWNrZWQgcmVwcmVzZW50YXRpb24gdXNlcwotICAgdGhlIElFRUUgNzU0IGJpbmFyeTMyIChmb3IgYGAnZidgYCkgb3IgYmluYXJ5NjQgKGZvciBgYCdkJ2BgKSBmb3JtYXQsCi0gICByZWdhcmRsZXNzIG9mIHRoZSBmbG9hdGluZy1wb2ludCBmb3JtYXQgdXNlZCBieSB0aGUgcGxhdGZvcm0uCisgICBGb3IgdGhlIGBgJ2YnYGAsIGBgJ2QnYGAgYW5kIGBgJ2UnYGAgY29udmVyc2lvbiBjb2RlcywgdGhlIHBhY2tlZAorICAgcmVwcmVzZW50YXRpb24gdXNlcyB0aGUgSUVFRSA3NTQgYmluYXJ5MzIsIGJpbmFyeTY0IG9yIGJpbmFyeTE2IGZvcm1hdCAoZm9yCisgICBgYCdmJ2BgLCBgYCdkJ2BgIG9yIGBgJ2UnYGAgcmVzcGVjdGl2ZWx5KSwgcmVnYXJkbGVzcyBvZiB0aGUgZmxvYXRpbmctcG9pbnQKKyAgIGZvcm1hdCB1c2VkIGJ5IHRoZSBwbGF0Zm9ybS4KIAogKDYpCiAgICBUaGUgYGAnUCdgYCBmb3JtYXQgY2hhcmFjdGVyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciB0aGUgbmF0aXZlIGJ5dGUgb3JkZXJpbmcKQEAgLTI2OCw2ICsyNzEsMTYgQEAKICAgIG9uIHRoZSBob3N0IHN5c3RlbS4gVGhlIHN0cnVjdCBtb2R1bGUgZG9lcyBub3QgaW50ZXJwcmV0IHRoaXMgYXMgbmF0aXZlCiAgICBvcmRlcmluZywgc28gdGhlIGBgJ1AnYGAgZm9ybWF0IGlzIG5vdCBhdmFpbGFibGUuCiAKKyg3KQorICAgVGhlIElFRUUgNzU0IGJpbmFyeTE2ICJoYWxmIHByZWNpc2lvbiIgdHlwZSB3YXMgaW50cm9kdWNlZCBpbiB0aGUgMjAwOAorICAgcmV2aXNpb24gb2YgdGhlIGBJRUVFIDc1NCBzdGFuZGFyZCA8aWVlZSA3NTQgc3RhbmRhcmRfPmBfLiBJdCBoYXMgYSBzaWduCisgICBiaXQsIGEgNS1iaXQgZXhwb25lbnQgYW5kIDExLWJpdCBwcmVjaXNpb24gKHdpdGggMTAgYml0cyBleHBsaWNpdGx5IHN0b3JlZCksCisgICBhbmQgY2FuIHJlcHJlc2VudCBudW1iZXJzIGJldHdlZW4gYXBwcm94aW1hdGVseSBgYDYuMWUtMDVgYCBhbmQgYGA2LjVlKzA0YGAKKyAgIGF0IGZ1bGwgcHJlY2lzaW9uLiBUaGlzIHR5cGUgaXMgbm90IHdpZGVseSBzdXBwb3J0ZWQgYnkgQyBjb21waWxlcnM6IG9uIGEKKyAgIHR5cGljYWwgbWFjaGluZSwgYW4gdW5zaWduZWQgc2hvcnQgY2FuIGJlIHVzZWQgZm9yIHN0b3JhZ2UsIGJ1dCBub3QgZm9yIG1hdGgKKyAgIG9wZXJhdGlvbnMuIFNlZSB0aGUgV2lraXBlZGlhIHBhZ2Ugb24gdGhlIGBoYWxmLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludAorICAgZm9ybWF0IDxoYWxmIHByZWNpc2lvbiBmb3JtYXRfPmBfIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCiAKIEEgZm9ybWF0IGNoYXJhY3RlciBtYXkgYmUgcHJlY2VkZWQgYnkgYW4gaW50ZWdyYWwgcmVwZWF0IGNvdW50LiAgRm9yIGV4YW1wbGUsCiB0aGUgZm9ybWF0IHN0cmluZyBgYCc0aCdgYCBtZWFucyBleGFjdGx5IHRoZSBzYW1lIGFzIGBgJ2hoaGgnYGAuCkBAIC00MzAsMyArNDQzLDcgQEAKICAgICAgIFRoZSBjYWxjdWxhdGVkIHNpemUgb2YgdGhlIHN0cnVjdCAoYW5kIGhlbmNlIG9mIHRoZSBieXRlcyBvYmplY3QgcHJvZHVjZWQKICAgICAgIGJ5IHRoZSA6bWV0aDpgcGFja2AgbWV0aG9kKSBjb3JyZXNwb25kaW5nIHRvIDphdHRyOmBmb3JtYXRgLgogCisKKy4uIF9oYWxmIHByZWNpc2lvbiBmb3JtYXQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGYtcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorCisuLiBfaWVlZSA3NTQgc3RhbmRhcmQ6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0lFRUVfZmxvYXRpbmdfcG9pbnQjSUVFRV83NTQtMjAwOApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvc3VicHJvY2Vzcy5yc3QgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAppbmRleCAzNTY2MDVmLi4wNjU1ZGM0IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdAorKysgYi9Eb2MvbGlicmFyeS9zdWJwcm9jZXNzLnJzdApAQCAtMzgsNyArMzgsOCBAQAogCiAKIC4uIGZ1bmN0aW9uOjogcnVuKGFyZ3MsICosIHN0ZGluPU5vbmUsIGlucHV0PU5vbmUsIHN0ZG91dD1Ob25lLCBzdGRlcnI9Tm9uZSxcCi0gICAgICAgICAgICAgICAgICBzaGVsbD1GYWxzZSwgdGltZW91dD1Ob25lLCBjaGVjaz1GYWxzZSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPUZhbHNlLCB0aW1lb3V0PU5vbmUsIGNoZWNrPUZhbHNlLCBcCisgICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgUnVuIHRoZSBjb21tYW5kIGRlc2NyaWJlZCBieSAqYXJncyouICBXYWl0IGZvciBjb21tYW5kIHRvIGNvbXBsZXRlLCB0aGVuCiAgICByZXR1cm4gYSA6Y2xhc3M6YENvbXBsZXRlZFByb2Nlc3NgIGluc3RhbmNlLgpAQCAtNjAsMTUgKzYxLDIwIEBACiAKICAgIFRoZSAqaW5wdXQqIGFyZ3VtZW50IGlzIHBhc3NlZCB0byA6bWV0aDpgUG9wZW4uY29tbXVuaWNhdGVgIGFuZCB0aHVzIHRvIHRoZQogICAgc3VicHJvY2VzcydzIHN0ZGluLiAgSWYgdXNlZCBpdCBtdXN0IGJlIGEgYnl0ZSBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gIFdoZW4gdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdAotICAgaXMgYXV0b21hdGljYWxseSBjcmVhdGVkIHdpdGggYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkKLSAgIG5vdCBiZSB1c2VkIGFzIHdlbGwuCisgICAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGlzIHNwZWNpZmllZCBvciAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBUcnVlLiAgV2hlbgorICAgdXNlZCwgdGhlIGludGVybmFsIDpjbGFzczpgUG9wZW5gIG9iamVjdCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgd2l0aAorICAgYGBzdGRpbj1QSVBFYGAsIGFuZCB0aGUgKnN0ZGluKiBhcmd1bWVudCBtYXkgbm90IGJlIHVzZWQgYXMgd2VsbC4KIAogICAgSWYgKmNoZWNrKiBpcyBUcnVlLCBhbmQgdGhlIHByb2Nlc3MgZXhpdHMgd2l0aCBhIG5vbi16ZXJvIGV4aXQgY29kZSwgYQogICAgOmV4YzpgQ2FsbGVkUHJvY2Vzc0Vycm9yYCBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuIEF0dHJpYnV0ZXMgb2YgdGhhdAogICAgZXhjZXB0aW9uIGhvbGQgdGhlIGFyZ3VtZW50cywgdGhlIGV4aXQgY29kZSwgYW5kIHN0ZG91dCBhbmQgc3RkZXJyIGlmIHRoZXkKICAgIHdlcmUgY2FwdHVyZWQuCiAKKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgb3IgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgVHJ1ZSwKKyAgIGZpbGUgb2JqZWN0cyBmb3Igc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHVzaW5nIHRoZQorICAgc3BlY2lmaWVkICplbmNvZGluZyogYW5kICplcnJvcnMqIG9yIHRoZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGRlZmF1bHQuCisgICBPdGhlcndpc2UsIGZpbGUgb2JqZWN0cyBhcmUgb3BlbmVkIGluIGJpbmFyeSBtb2RlLgorCiAgICBFeGFtcGxlczo6CiAKICAgICAgID4+PiBzdWJwcm9jZXNzLnJ1bihbImxzIiwgIi1sIl0pICAjIGRvZXNuJ3QgY2FwdHVyZSBvdXRwdXQKQEAgLTg1LDYgKzkxLDEwIEBACiAKICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICAgICBBZGRlZCAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBwYXJhbWV0ZXJzCisKIC4uIGNsYXNzOjogQ29tcGxldGVkUHJvY2VzcwogCiAgICBUaGUgcmV0dXJuIHZhbHVlIGZyb20gOmZ1bmM6YHJ1bmAsIHJlcHJlc2VudGluZyBhIHByb2Nlc3MgdGhhdCBoYXMgZmluaXNoZWQuCkBAIC0xMDQsOCArMTE0LDggQEAKICAgIC4uIGF0dHJpYnV0ZTo6IHN0ZG91dAogCiAgICAgICBDYXB0dXJlZCBzdGRvdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gQSBieXRlcyBzZXF1ZW5jZSwgb3IgYSBzdHJpbmcgaWYKLSAgICAgIDpmdW5jOmBydW5gIHdhcyBjYWxsZWQgd2l0aCBgYHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlYGAuIE5vbmUgaWYgc3Rkb3V0Ci0gICAgICB3YXMgbm90IGNhcHR1cmVkLgorICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGFuIGVuY29kaW5nIG9yIGVycm9ycy4gTm9uZSBpZiBzdGRvdXQgd2FzIG5vdAorICAgICAgY2FwdHVyZWQuCiAKICAgICAgIElmIHlvdSByYW4gdGhlIHByb2Nlc3Mgd2l0aCBgYHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVGBgLCBzdGRvdXQgYW5kCiAgICAgICBzdGRlcnIgd2lsbCBiZSBjb21iaW5lZCBpbiB0aGlzIGF0dHJpYnV0ZSwgYW5kIDphdHRyOmBzdGRlcnJgIHdpbGwgYmUKQEAgLTExNCw4ICsxMjQsOCBAQAogICAgLi4gYXR0cmlidXRlOjogc3RkZXJyCiAKICAgICAgIENhcHR1cmVkIHN0ZGVyciBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzLiBBIGJ5dGVzIHNlcXVlbmNlLCBvciBhIHN0cmluZyBpZgotICAgICAgOmZ1bmM6YHJ1bmAgd2FzIGNhbGxlZCB3aXRoIGBgdW5pdmVyc2FsX25ld2xpbmVzPVRydWVgYC4gTm9uZSBpZiBzdGRlcnIKLSAgICAgIHdhcyBub3QgY2FwdHVyZWQuCisgICAgICA6ZnVuYzpgcnVuYCB3YXMgY2FsbGVkIHdpdGggYW4gZW5jb2Rpbmcgb3IgZXJyb3JzLiBOb25lIGlmIHN0ZGVyciB3YXMgbm90CisgICAgICBjYXB0dXJlZC4KIAogICAgLi4gbWV0aG9kOjogY2hlY2tfcmV0dXJuY29kZSgpCiAKQEAgLTI0OSwxOSArMjU5LDIyIEBACiAgICAuLiBpbmRleDo6CiAgICAgICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgc3VicHJvY2VzcyBtb2R1bGUKIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBGYWxzZWBgIHRoZSBmaWxlIG9iamVjdHMgKnN0ZGluKiwgKnN0ZG91dCogYW5kCi0gICAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcywgYW5kIG5vIGxpbmUgZW5kaW5nIGNvbnZlcnNpb24gaXMKLSAgIGRvbmUuCisgICBJZiAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZSBzcGVjaWZpZWQsIG9yICp1bml2ZXJzYWxfbmV3bGluZXMqIGlzIFRydWUsCisgICB0aGUgZmlsZSBvYmplY3RzICpzdGRpbiosICpzdGRvdXQqIGFuZCAqc3RkZXJyKiB3aWxsIGJlIG9wZW5lZCBpbiB0ZXh0CisgICBtb2RlIHVzaW5nIHRoZSAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiBzcGVjaWZpZWQgaW4gdGhlIGNhbGwgb3IgdGhlCisgICBkZWZhdWx0cyBmb3IgOmNsYXNzOmBpby5UZXh0SU9XcmFwcGVyYC4KIAotICAgSWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogaXMgYGBUcnVlYGAsIHRoZXNlIGZpbGUgb2JqZWN0cwotICAgd2lsbCBiZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIDp0ZXJtOmB1bml2ZXJzYWwgbmV3bGluZXNgIG1vZGUKLSAgIHVzaW5nIHRoZSBlbmNvZGluZyByZXR1cm5lZCBieSA6ZnVuYzpgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKQotICAgPGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZz5gLiAgRm9yICpzdGRpbiosIGxpbmUgZW5kaW5nIGNoYXJhY3RlcnMKLSAgIGBgJ1xuJ2BgIGluIHRoZSBpbnB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byB0aGUgZGVmYXVsdCBsaW5lIHNlcGFyYXRvcgotICAgOmRhdGE6YG9zLmxpbmVzZXBgLiAgRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwgYWxsIGxpbmUgZW5kaW5ncyBpbiB0aGUKLSAgIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZSB0aGUKLSAgIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3Mgd2hlbiB0aGUgKm5ld2xpbmUqCi0gICBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisgICBGb3IgKnN0ZGluKiwgbGluZSBlbmRpbmcgY2hhcmFjdGVycyBgYCdcbidgYCBpbiB0aGUgaW5wdXQgd2lsbCBiZSBjb252ZXJ0ZWQKKyAgIHRvIHRoZSBkZWZhdWx0IGxpbmUgc2VwYXJhdG9yIDpkYXRhOmBvcy5saW5lc2VwYC4gRm9yICpzdGRvdXQqIGFuZCAqc3RkZXJyKiwKKyAgIGFsbCBsaW5lIGVuZGluZ3MgaW4gdGhlIG91dHB1dCB3aWxsIGJlIGNvbnZlcnRlZCB0byBgYCdcbidgYC4gIEZvciBtb3JlCisgICBpbmZvcm1hdGlvbiBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlIDpjbGFzczpgaW8uVGV4dElPV3JhcHBlcmAgY2xhc3MKKyAgIHdoZW4gdGhlICpuZXdsaW5lKiBhcmd1bWVudCB0byBpdHMgY29uc3RydWN0b3IgaXMgYGBOb25lYGAuCisKKyAgIElmIHRleHQgbW9kZSBpcyBub3QgdXNlZCwgKnN0ZGluKiwgKnN0ZG91dCogYW5kICpzdGRlcnIqIHdpbGwgYmUgb3BlbmVkIGFzCisgICBiaW5hcnkgc3RyZWFtcy4gTm8gZW5jb2Rpbmcgb3IgbGluZSBlbmRpbmcgY29udmVyc2lvbiBpcyBwZXJmb3JtZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgQWRkZWQgKmVuY29kaW5nKiBhbmQgKmVycm9ycyogcGFyYW1ldGVycy4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTMwNiw3ICszMTksOCBAQAogICAgICAgICAgICAgICAgICBzdGRlcnI9Tm9uZSwgcHJlZXhlY19mbj1Ob25lLCBjbG9zZV9mZHM9VHJ1ZSwgc2hlbGw9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgY3dkPU5vbmUsIGVudj1Ob25lLCB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIFwKICAgICAgICAgICAgICAgICAgc3RhcnR1cGluZm89Tm9uZSwgY3JlYXRpb25mbGFncz0wLCByZXN0b3JlX3NpZ25hbHM9VHJ1ZSwgXAotICAgICAgICAgICAgICAgICBzdGFydF9uZXdfc2Vzc2lvbj1GYWxzZSwgcGFzc19mZHM9KCkpCisgICAgICAgICAgICAgICAgIHN0YXJ0X25ld19zZXNzaW9uPUZhbHNlLCBwYXNzX2Zkcz0oKSwgKiwgXAorICAgICAgICAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSkKIAogICAgRXhlY3V0ZSBhIGNoaWxkIHByb2dyYW0gaW4gYSBuZXcgcHJvY2Vzcy4gIE9uIFBPU0lYLCB0aGUgY2xhc3MgdXNlcwogICAgOm1ldGg6YG9zLmV4ZWN2cGAtbGlrZSBiZWhhdmlvciB0byBleGVjdXRlIHRoZSBjaGlsZCBwcm9ncmFtLiAgT24gV2luZG93cywKQEAgLTQ4MiwxMCArNDk2LDE0IEBACiAKICAgIC4uIF9zaWRlLWJ5LXNpZGUgYXNzZW1ibHk6IGh0dHBzOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL1NpZGUtYnktU2lkZV9Bc3NlbWJseQogCi0gICBJZiAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgotICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgYXMgdGV4dCBzdHJlYW1zIGluIHVuaXZlcnNhbCBuZXdsaW5lcyBtb2RlLCBhcwotICAgZGVzY3JpYmVkIGFib3ZlIGluIDpyZWY6YGZyZXF1ZW50bHktdXNlZC1hcmd1bWVudHNgLCBvdGhlcndpc2UgdGhleSBhcmUKLSAgIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKyAgIElmICplbmNvZGluZyogb3IgKmVycm9ycyogYXJlIHNwZWNpZmllZCwgdGhlIGZpbGUgb2JqZWN0cyAqc3RkaW4qLCAqc3Rkb3V0KgorICAgYW5kICpzdGRlcnIqIGFyZSBvcGVuZWQgaW4gdGV4dCBtb2RlIHdpdGggdGhlIHNwZWNpZmllZCBlbmNvZGluZyBhbmQKKyAgICplcnJvcnMqLCBhcyBkZXNjcmliZWQgYWJvdmUgaW4gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AuIElmCisgICAqdW5pdmVyc2FsX25ld2xpbmVzKiBpcyBgYFRydWVgYCwgdGhleSBhcmUgb3BlbmVkIGluIHRleHQgbW9kZSB3aXRoIGRlZmF1bHQKKyAgIGVuY29kaW5nLiBPdGhlcndpc2UsIHRoZXkgYXJlIG9wZW5lZCBhcyBiaW5hcnkgc3RyZWFtcy4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICAqZW5jb2RpbmcqIGFuZCAqZXJyb3JzKiB3ZXJlIGFkZGVkLgogCiAgICBJZiBnaXZlbiwgKnN0YXJ0dXBpbmZvKiB3aWxsIGJlIGEgOmNsYXNzOmBTVEFSVFVQSU5GT2Agb2JqZWN0LCB3aGljaCBpcwogICAgcGFzc2VkIHRvIHRoZSB1bmRlcmx5aW5nIGBgQ3JlYXRlUHJvY2Vzc2BgIGZ1bmN0aW9uLgpAQCAtNTAyLDYgKzUyMCwxMCBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIEFkZGVkIGNvbnRleHQgbWFuYWdlciBzdXBwb3J0LgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUG9wZW4gZGVzdHJ1Y3RvciBub3cgZW1pdHMgYSA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIHdhcm5pbmcgaWYgdGhlIGNoaWxkCisgICAgICBwcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisKIAogRXhjZXB0aW9ucwogXl5eXl5eXl5eXgpAQCAtNTk3LDExICs2MTksMTIgQEAKICAgIEludGVyYWN0IHdpdGggcHJvY2VzczogU2VuZCBkYXRhIHRvIHN0ZGluLiAgUmVhZCBkYXRhIGZyb20gc3Rkb3V0IGFuZCBzdGRlcnIsCiAgICB1bnRpbCBlbmQtb2YtZmlsZSBpcyByZWFjaGVkLiAgV2FpdCBmb3IgcHJvY2VzcyB0byB0ZXJtaW5hdGUuICBUaGUgb3B0aW9uYWwKICAgICppbnB1dCogYXJndW1lbnQgc2hvdWxkIGJlIGRhdGEgdG8gYmUgc2VudCB0byB0aGUgY2hpbGQgcHJvY2Vzcywgb3IKLSAgIGBgTm9uZWBgLCBpZiBubyBkYXRhIHNob3VsZCBiZSBzZW50IHRvIHRoZSBjaGlsZC4gIFRoZSB0eXBlIG9mICppbnB1dCoKLSAgIG11c3QgYmUgYnl0ZXMgb3IsIGlmICp1bml2ZXJzYWxfbmV3bGluZXMqIHdhcyBgYFRydWVgYCwgYSBzdHJpbmcuCisgICBgYE5vbmVgYCwgaWYgbm8gZGF0YSBzaG91bGQgYmUgc2VudCB0byB0aGUgY2hpbGQuICBJZiBzdHJlYW1zIHdlcmUgb3BlbmVkIGluCisgICB0ZXh0IG1vZGUsICppbnB1dCogbXVzdCBiZSBhIHN0cmluZy4gIE90aGVyd2lzZSwgaXQgbXVzdCBiZSBieXRlcy4KIAogICAgOm1ldGg6YGNvbW11bmljYXRlYCByZXR1cm5zIGEgdHVwbGUgYGAoc3Rkb3V0X2RhdGEsIHN0ZGVycl9kYXRhKWBgLgotICAgVGhlIGRhdGEgd2lsbCBiZSBieXRlcyBvciwgaWYgKnVuaXZlcnNhbF9uZXdsaW5lcyogd2FzIGBgVHJ1ZWBgLCBzdHJpbmdzLgorICAgVGhlIGRhdGEgd2lsbCBiZSBzdHJpbmdzIGlmIHN0cmVhbXMgd2VyZSBvcGVuZWQgaW4gdGV4dCBtb2RlOyBvdGhlcndpc2UsCisgICBieXRlcy4KIAogICAgTm90ZSB0aGF0IGlmIHlvdSB3YW50IHRvIHNlbmQgZGF0YSB0byB0aGUgcHJvY2VzcydzIHN0ZGluLCB5b3UgbmVlZCB0byBjcmVhdGUKICAgIHRoZSBQb3BlbiBvYmplY3Qgd2l0aCBgYHN0ZGluPVBJUEVgYC4gIFNpbWlsYXJseSwgdG8gZ2V0IGFueXRoaW5nIG90aGVyIHRoYW4KQEAgLTY2OCwyOCArNjkxLDMwIEBACiAuLiBhdHRyaWJ1dGU6OiBQb3Blbi5zdGRpbgogCiAgICBJZiB0aGUgKnN0ZGluKiBhcmd1bWVudCB3YXMgOmRhdGE6YFBJUEVgLCB0aGlzIGF0dHJpYnV0ZSBpcyBhIHdyaXRlYWJsZQotICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIElmIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKgotICAgYXJndW1lbnQgd2FzIGBgVHJ1ZWBgLCB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUKLSAgIHN0cmVhbS4gSWYgdGhlICpzdGRpbiogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzCi0gICBgYE5vbmVgYC4KKyAgIHN0cmVhbSBvYmplY3QgYXMgcmV0dXJuZWQgYnkgOmZ1bmM6YG9wZW5gLiBJZiB0aGUgKmVuY29kaW5nKiBvciAqZXJyb3JzKgorICAgYXJndW1lbnRzIHdlcmUgc3BlY2lmaWVkIG9yIHRoZSAqdW5pdmVyc2FsX25ld2xpbmVzKiBhcmd1bWVudCB3YXMgYGBUcnVlYGAsCisgICB0aGUgc3RyZWFtIGlzIGEgdGV4dCBzdHJlYW0sIG90aGVyd2lzZSBpdCBpcyBhIGJ5dGUgc3RyZWFtLiBJZiB0aGUgKnN0ZGluKgorICAgYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZG91dAogCiAgICBJZiB0aGUgKnN0ZG91dCogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZG91dCogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cyB3ZXJlCisgICBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbSBpcyBhCisgICB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3Rkb3V0KiBhcmd1bWVudCB3YXMgbm90CisgICA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAKIC4uIGF0dHJpYnV0ZTo6IFBvcGVuLnN0ZGVycgogCiAgICBJZiB0aGUgKnN0ZGVyciogYXJndW1lbnQgd2FzIDpkYXRhOmBQSVBFYCwgdGhpcyBhdHRyaWJ1dGUgaXMgYSByZWFkYWJsZQogICAgc3RyZWFtIG9iamVjdCBhcyByZXR1cm5lZCBieSA6ZnVuYzpgb3BlbmAuIFJlYWRpbmcgZnJvbSB0aGUgc3RyZWFtIHByb3ZpZGVzCi0gICBlcnJvciBvdXRwdXQgZnJvbSB0aGUgY2hpbGQgcHJvY2Vzcy4gSWYgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcwotICAgYGBUcnVlYGAsIHRoZSBzdHJlYW0gaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZQotICAgKnN0ZGVyciogYXJndW1lbnQgd2FzIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgorICAgZXJyb3Igb3V0cHV0IGZyb20gdGhlIGNoaWxkIHByb2Nlc3MuIElmIHRoZSAqZW5jb2RpbmcqIG9yICplcnJvcnMqIGFyZ3VtZW50cworICAgd2VyZSBzcGVjaWZpZWQgb3IgdGhlICp1bml2ZXJzYWxfbmV3bGluZXMqIGFyZ3VtZW50IHdhcyBgYFRydWVgYCwgdGhlIHN0cmVhbQorICAgaXMgYSB0ZXh0IHN0cmVhbSwgb3RoZXJ3aXNlIGl0IGlzIGEgYnl0ZSBzdHJlYW0uIElmIHRoZSAqc3RkZXJyKiBhcmd1bWVudCB3YXMKKyAgIG5vdCA6ZGF0YTpgUElQRWAsIHRoaXMgYXR0cmlidXRlIGlzIGBgTm9uZWBgLgogCiAuLiB3YXJuaW5nOjoKIApAQCAtODgyLDcgKzkwNyw5IEBACiAgICAgICAqdGltZW91dCogd2FzIGFkZGVkLgogCiAKLS4uIGZ1bmN0aW9uOjogY2hlY2tfb3V0cHV0KGFyZ3MsICosIHN0ZGluPU5vbmUsIHN0ZGVycj1Ob25lLCBzaGVsbD1GYWxzZSwgdW5pdmVyc2FsX25ld2xpbmVzPUZhbHNlLCB0aW1lb3V0PU5vbmUpCisuLiBmdW5jdGlvbjo6IGNoZWNrX291dHB1dChhcmdzLCAqLCBzdGRpbj1Ob25lLCBzdGRlcnI9Tm9uZSwgc2hlbGw9RmFsc2UsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPU5vbmUsIGVycm9ycz1Ob25lLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9RmFsc2UsIHRpbWVvdXQ9Tm9uZSkKIAogICAgUnVuIGNvbW1hbmQgd2l0aCBhcmd1bWVudHMgYW5kIHJldHVybiBpdHMgb3V0cHV0LgogCkBAIC0xMTM4LDcgKzExNjUsNyBAQAogICAgUmV0dXJuIGBgKHN0YXR1cywgb3V0cHV0KWBgIG9mIGV4ZWN1dGluZyAqY21kKiBpbiBhIHNoZWxsLgogCiAgICBFeGVjdXRlIHRoZSBzdHJpbmcgKmNtZCogaW4gYSBzaGVsbCB3aXRoIDptZXRoOmBQb3Blbi5jaGVja19vdXRwdXRgIGFuZAotICAgcmV0dXJuIGEgMi10dXBsZSBgYChzdGF0dXMsIG91dHB1dClgYC4gVW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgaXMgdXNlZDsKKyAgIHJldHVybiBhIDItdHVwbGUgYGAoc3RhdHVzLCBvdXRwdXQpYGAuIFRoZSBsb2NhbGUgZW5jb2RpbmcgaXMgdXNlZDsKICAgIHNlZSB0aGUgbm90ZXMgb24gOnJlZjpgZnJlcXVlbnRseS11c2VkLWFyZ3VtZW50c2AgZm9yIG1vcmUgZGV0YWlscy4KIAogICAgQSB0cmFpbGluZyBuZXdsaW5lIGlzIHN0cmlwcGVkIGZyb20gdGhlIG91dHB1dC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5cy5yc3QgYi9Eb2MvbGlicmFyeS9zeXMucnN0CmluZGV4IGVkNWRiMDUuLjU1Yjc0NGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5cy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzLnJzdApAQCAtMjU2LDcgKzI1Niw3IEBACiAgICAoZGVmYXVsdGluZyB0byB6ZXJvKSwgb3IgYW5vdGhlciB0eXBlIG9mIG9iamVjdC4gIElmIGl0IGlzIGFuIGludGVnZXIsIHplcm8KICAgIGlzIGNvbnNpZGVyZWQgInN1Y2Nlc3NmdWwgdGVybWluYXRpb24iIGFuZCBhbnkgbm9uemVybyB2YWx1ZSBpcyBjb25zaWRlcmVkCiAgICAiYWJub3JtYWwgdGVybWluYXRpb24iIGJ5IHNoZWxscyBhbmQgdGhlIGxpa2UuICBNb3N0IHN5c3RlbXMgcmVxdWlyZSBpdCB0byBiZQotICAgaW4gdGhlIHJhbmdlIDAtMTI3LCBhbmQgcHJvZHVjZSB1bmRlZmluZWQgcmVzdWx0cyBvdGhlcndpc2UuICBTb21lIHN5c3RlbXMKKyAgIGluIHRoZSByYW5nZSAwLS0xMjcsIGFuZCBwcm9kdWNlIHVuZGVmaW5lZCByZXN1bHRzIG90aGVyd2lzZS4gIFNvbWUgc3lzdGVtcwogICAgaGF2ZSBhIGNvbnZlbnRpb24gZm9yIGFzc2lnbmluZyBzcGVjaWZpYyBtZWFuaW5ncyB0byBzcGVjaWZpYyBleGl0IGNvZGVzLCBidXQKICAgIHRoZXNlIGFyZSBnZW5lcmFsbHkgdW5kZXJkZXZlbG9wZWQ7IFVuaXggcHJvZ3JhbXMgZ2VuZXJhbGx5IHVzZSAyIGZvciBjb21tYW5kCiAgICBsaW5lIHN5bnRheCBlcnJvcnMgYW5kIDEgZm9yIGFsbCBvdGhlciBraW5kIG9mIGVycm9ycy4gIElmIGFub3RoZXIgdHlwZSBvZgpAQCAtMjY5LDYgKzI2OSwxMSBAQAogICAgdGhlIHByb2Nlc3Mgd2hlbiBjYWxsZWQgZnJvbSB0aGUgbWFpbiB0aHJlYWQsIGFuZCB0aGUgZXhjZXB0aW9uIGlzIG5vdAogICAgaW50ZXJjZXB0ZWQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBJZiBhbiBlcnJvciBvY2N1cnMgaW4gdGhlIGNsZWFudXAgYWZ0ZXIgdGhlIFB5dGhvbiBpbnRlcnByZXRlcgorICAgICAgaGFzIGNhdWdodCA6ZXhjOmBTeXN0ZW1FeGl0YCAoc3VjaCBhcyBhbiBlcnJvciBmbHVzaGluZyBidWZmZXJlZCBkYXRhCisgICAgICBpbiB0aGUgc3RhbmRhcmQgc3RyZWFtcyksIHRoZSBleGl0IHN0YXR1cyBpcyBjaGFuZ2VkIHRvIDEyMC4KKwogCiAuLiBkYXRhOjogZmxhZ3MKIApAQCAtNDIzLDI1ICs0MjgsNDIgQEAKIAogLi4gZnVuY3Rpb246OiBnZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVuY29kaW5nIHVzZWQgdG8gY29udmVydCBVbmljb2RlIGZpbGVuYW1lcyBpbnRvCi0gICBzeXN0ZW0gZmlsZSBuYW1lcy4gVGhlIHJlc3VsdCB2YWx1ZSBkZXBlbmRzIG9uIHRoZSBvcGVyYXRpbmcgc3lzdGVtOgorICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBlbmNvZGluZyB1c2VkIHRvIGNvbnZlcnQgYmV0d2VlbiBVbmljb2RlCisgICBmaWxlbmFtZXMgYW5kIGJ5dGVzIGZpbGVuYW1lcy4gRm9yIGJlc3QgY29tcGF0aWJpbGl0eSwgc3RyIHNob3VsZCBiZQorICAgdXNlZCBmb3IgZmlsZW5hbWVzIGluIGFsbCBjYXNlcywgYWx0aG91Z2ggcmVwcmVzZW50aW5nIGZpbGVuYW1lcyBhcyBieXRlcworICAgaXMgYWxzbyBzdXBwb3J0ZWQuIEZ1bmN0aW9ucyBhY2NlcHRpbmcgb3IgcmV0dXJuaW5nIGZpbGVuYW1lcyBzaG91bGQgc3VwcG9ydAorICAgZWl0aGVyIHN0ciBvciBieXRlcyBhbmQgaW50ZXJuYWxseSBjb252ZXJ0IHRvIHRoZSBzeXN0ZW0ncyBwcmVmZXJyZWQKKyAgIHJlcHJlc2VudGF0aW9uLgorCisgICBUaGlzIGVuY29kaW5nIGlzIGFsd2F5cyBBU0NJSS1jb21wYXRpYmxlLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCiAKICAgICogT24gTWFjIE9TIFgsIHRoZSBlbmNvZGluZyBpcyBgYCd1dGYtOCdgYC4KIAotICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIHVzZXIncyBwcmVmZXJlbmNlIGFjY29yZGluZyB0byB0aGUgcmVzdWx0IG9mCi0gICAgIG5sX2xhbmdpbmZvKENPREVTRVQpLgorICAgKiBPbiBVbml4LCB0aGUgZW5jb2RpbmcgaXMgdGhlIGxvY2FsZSBlbmNvZGluZy4KIAotICAgKiBPbiBXaW5kb3dzIE5UKywgZmlsZSBuYW1lcyBhcmUgVW5pY29kZSBuYXRpdmVseSwgc28gbm8gY29udmVyc2lvbiBpcwotICAgICBwZXJmb3JtZWQuIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgIHN0aWxsIHJldHVybnMgYGAnbWJjcydgYCwgYXMKLSAgICAgdGhpcyBpcyB0aGUgZW5jb2RpbmcgdGhhdCBhcHBsaWNhdGlvbnMgc2hvdWxkIHVzZSB3aGVuIHRoZXkgZXhwbGljaXRseQotICAgICB3YW50IHRvIGNvbnZlcnQgVW5pY29kZSBzdHJpbmdzIHRvIGJ5dGUgc3RyaW5ncyB0aGF0IGFyZSBlcXVpdmFsZW50IHdoZW4KLSAgICAgdXNlZCBhcyBmaWxlIG5hbWVzLgotCi0gICAqIE9uIFdpbmRvd3MgOXgsIHRoZSBlbmNvZGluZyBpcyBgYCdtYmNzJ2BgLgorICAgKiBPbiBXaW5kb3dzLCB0aGUgZW5jb2RpbmcgbWF5IGJlIGBgJ3V0Zi04J2BgIG9yIGBgJ21iY3MnYGAsIGRlcGVuZGluZworICAgICBvbiB1c2VyIGNvbmZpZ3VyYXRpb24uCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICA6ZnVuYzpgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nYCByZXN1bHQgY2Fubm90IGJlIGBgTm9uZWBgIGFueW1vcmUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBXaW5kb3dzIGlzIG5vIGxvbmdlciBndWFyYW50ZWVkIHRvIHJldHVybiBgYCdtYmNzJ2BgLiBTZWUgOnBlcDpgNTI5YAorICAgICAgYW5kIDpmdW5jOmBfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmdgIGZvciBtb3JlIGluZm9ybWF0aW9uLgorCisuLiBmdW5jdGlvbjo6IGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnMoKQorCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGVycm9yIG1vZGUgdXNlZCB0byBjb252ZXJ0IGJldHdlZW4gVW5pY29kZSBmaWxlbmFtZXMKKyAgIGFuZCBieXRlcyBmaWxlbmFtZXMuIFRoZSBlbmNvZGluZyBuYW1lIGlzIHJldHVybmVkIGZyb20KKyAgIDpmdW5jOmBnZXRmaWxlc3lzdGVtZW5jb2RpbmdgLgorCisgICA6ZnVuYzpgb3MuZnNlbmNvZGVgIGFuZCA6ZnVuYzpgb3MuZnNkZWNvZGVgIHNob3VsZCBiZSB1c2VkIHRvIGVuc3VyZSB0aGF0CisgICB0aGUgY29ycmVjdCBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgYXJlIHVzZWQuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgogCiAuLiBmdW5jdGlvbjo6IGdldHJlZmNvdW50KG9iamVjdCkKIApAQCAtNTMwLDI2ICs1NTIsMTUgQEAKICAgIFJldHVybiBhIG5hbWVkIHR1cGxlIGRlc2NyaWJpbmcgdGhlIFdpbmRvd3MgdmVyc2lvbgogICAgY3VycmVudGx5IHJ1bm5pbmcuICBUaGUgbmFtZWQgZWxlbWVudHMgYXJlICptYWpvciosICptaW5vciosCiAgICAqYnVpbGQqLCAqcGxhdGZvcm0qLCAqc2VydmljZV9wYWNrKiwgKnNlcnZpY2VfcGFja19taW5vciosCi0gICAqc2VydmljZV9wYWNrX21ham9yKiwgKnN1aXRlX21hc2sqLCBhbmQgKnByb2R1Y3RfdHlwZSouCi0gICAqc2VydmljZV9wYWNrKiBjb250YWlucyBhIHN0cmluZyB3aGlsZSBhbGwgb3RoZXIgdmFsdWVzIGFyZQorICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgKnByb2R1Y3RfdHlwZSogYW5kCisgICAqcGxhdGZvcm1fdmVyc2lvbiouICpzZXJ2aWNlX3BhY2sqIGNvbnRhaW5zIGEgc3RyaW5nLAorICAgKnBsYXRmb3JtX3ZlcnNpb24qIGEgMy10dXBsZSBhbmQgYWxsIG90aGVyIHZhbHVlcyBhcmUKICAgIGludGVnZXJzLiBUaGUgY29tcG9uZW50cyBjYW4gYWxzbyBiZSBhY2Nlc3NlZCBieSBuYW1lLCBzbwogICAgYGBzeXMuZ2V0d2luZG93c3ZlcnNpb24oKVswXWBgIGlzIGVxdWl2YWxlbnQgdG8KICAgIGBgc3lzLmdldHdpbmRvd3N2ZXJzaW9uKCkubWFqb3JgYC4gRm9yIGNvbXBhdGliaWxpdHkgd2l0aCBwcmlvcgogICAgdmVyc2lvbnMsIG9ubHkgdGhlIGZpcnN0IDUgZWxlbWVudHMgYXJlIHJldHJpZXZhYmxlIGJ5IGluZGV4aW5nLgogCi0gICAqcGxhdGZvcm0qIG1heSBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZyB2YWx1ZXM6Ci0KLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBDb25zdGFudCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBQbGF0Zm9ybSAgICAgICAgICAgICAgICB8Ci0gICArPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PSsKLSAgIHwgOmNvbnN0OmAwIChWRVJfUExBVEZPUk1fV0lOMzJzKWAgICAgICAgIHwgV2luMzJzIG9uIFdpbmRvd3MgMy4xICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0gICB8IDpjb25zdDpgMSAoVkVSX1BMQVRGT1JNX1dJTjMyX1dJTkRPV1MpYCB8IFdpbmRvd3MgOTUvOTgvTUUgICAgICAgIHwKLSAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCA6Y29uc3Q6YDIgKFZFUl9QTEFURk9STV9XSU4zMl9OVClgICAgICAgfCBXaW5kb3dzIE5ULzIwMDAvWFAveDY0ICB8Ci0gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgIHwgOmNvbnN0OmAzIChWRVJfUExBVEZPUk1fV0lOMzJfQ0UpYCAgICAgIHwgV2luZG93cyBDRSAgICAgICAgICAgICAgfAotICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICAqcGxhdGZvcm0qIHdpbGwgYmUgOmNvbnN0OmAyIChWRVJfUExBVEZPUk1fV0lOMzJfTlQpYC4KIAogICAgKnByb2R1Y3RfdHlwZSogbWF5IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIHZhbHVlczoKIApAQCAtNTY1LDE3ICs1NzYsMjMgQEAKICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZG9tYWluIGNvbnRyb2xsZXIuICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLQogICAgVGhpcyBmdW5jdGlvbiB3cmFwcyB0aGUgV2luMzIgOmM6ZnVuYzpgR2V0VmVyc2lvbkV4YCBmdW5jdGlvbjsgc2VlIHRoZQogICAgTWljcm9zb2Z0IGRvY3VtZW50YXRpb24gb24gOmM6ZnVuYzpgT1NWRVJTSU9OSU5GT0VYYCBmb3IgbW9yZSBpbmZvcm1hdGlvbgogICAgYWJvdXQgdGhlc2UgZmllbGRzLgogCisgICAqcGxhdGZvcm1fdmVyc2lvbiogcmV0dXJucyB0aGUgYWNjdXJhdGUgbWFqb3IgdmVyc2lvbiwgbWlub3IgdmVyc2lvbiBhbmQKKyAgIGJ1aWxkIG51bWJlciBvZiB0aGUgY3VycmVudCBvcGVyYXRpbmcgc3lzdGVtLCByYXRoZXIgdGhhbiB0aGUgdmVyc2lvbiB0aGF0CisgICBpcyBiZWluZyBlbXVsYXRlZCBmb3IgdGhlIHByb2Nlc3MuIEl0IGlzIGludGVuZGVkIGZvciB1c2UgaW4gbG9nZ2luZyByYXRoZXIKKyAgIHRoYW4gZm9yIGZlYXR1cmUgZGV0ZWN0aW9uLgorCiAgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBDaGFuZ2VkIHRvIGEgbmFtZWQgdHVwbGUgYW5kIGFkZGVkICpzZXJ2aWNlX3BhY2tfbWlub3IqLAogICAgICAgKnNlcnZpY2VfcGFja19tYWpvciosICpzdWl0ZV9tYXNrKiwgYW5kICpwcm9kdWN0X3R5cGUqLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQWRkZWQgKnBsYXRmb3JtX3ZlcnNpb24qCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X2Nvcm91dGluZV93cmFwcGVyKCkKIApAQCAtMTA4MiwxOCArMTA5OSw2IEBACiAgICAgICB0aHVzIG1heSBub3QgYmUgYXZhaWxhYmxlIGluIGFsbCBQeXRob24gaW1wbGVtZW50YXRpb25zLgogCiAKLS4uIGZ1bmN0aW9uOjogc2V0dHNjZHVtcChvbl9mbGFnKQotCi0gICBBY3RpdmF0ZSBkdW1waW5nIG9mIFZNIG1lYXN1cmVtZW50cyB1c2luZyB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciwgaWYKLSAgICpvbl9mbGFnKiBpcyB0cnVlLiBEZWFjdGl2YXRlIHRoZXNlIGR1bXBzIGlmICpvbl9mbGFnKiBpcyBvZmYuIFRoZSBmdW5jdGlvbiBpcwotICAgYXZhaWxhYmxlIG9ubHkgaWYgUHl0aG9uIHdhcyBjb21waWxlZCB3aXRoIGBgLS13aXRoLXRzY2BgLiBUbyB1bmRlcnN0YW5kCi0gICB0aGUgb3V0cHV0IG9mIHRoaXMgZHVtcCwgcmVhZCA6ZmlsZTpgUHl0aG9uL2NldmFsLmNgIGluIHRoZSBQeXRob24gc291cmNlcy4KLQotICAgLi4gaW1wbC1kZXRhaWw6OgotICAgICAgVGhpcyBmdW5jdGlvbiBpcyBpbnRpbWF0ZWx5IGJvdW5kIHRvIENQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlscyBhbmQKLSAgICAgIHRodXMgbm90IGxpa2VseSB0byBiZSBpbXBsZW1lbnRlZCBlbHNld2hlcmUuCi0KLQogLi4gZnVuY3Rpb246OiBzZXRfY29yb3V0aW5lX3dyYXBwZXIod3JhcHBlcikKIAogICAgQWxsb3dzIGludGVyY2VwdGluZyBjcmVhdGlvbiBvZiA6dGVybTpgY29yb3V0aW5lYCBvYmplY3RzIChvbmx5IG9uZXMgdGhhdApAQCAtMTEzMyw2ICsxMTM4LDE4IEBACiAgICAgICBUaGlzIGZ1bmN0aW9uIGhhcyBiZWVuIGFkZGVkIG9uIGEgcHJvdmlzaW9uYWwgYmFzaXMgKHNlZSA6cGVwOmA0MTFgCiAgICAgICBmb3IgZGV0YWlscy4pICBVc2UgaXQgb25seSBmb3IgZGVidWdnaW5nIHB1cnBvc2VzLgogCisuLiBmdW5jdGlvbjo6IF9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZygpCisKKyAgIENoYW5nZXMgdGhlIGRlZmF1bHQgZmlsZXN5c3RlbSBlbmNvZGluZyBhbmQgZXJyb3JzIG1vZGUgdG8gJ21iY3MnIGFuZAorICAgJ3JlcGxhY2UnIHJlc3BlY3RpdmVseSwgZm9yIGNvbnNpc3RlbmN5IHdpdGggdmVyc2lvbnMgb2YgUHl0aG9uIHByaW9yIHRvIDMuNi4KKworICAgVGhpcyBpcyBlcXVpdmFsZW50IHRvIGRlZmluaW5nIHRoZSA6ZW52dmFyOmBQWVRIT05MRUdBQ1lXSU5ET1dTRlNFTkNPRElOR2AKKyAgIGVudmlyb25tZW50IHZhcmlhYmxlIGJlZm9yZSBsYXVuY2hpbmcgUHl0aG9uLgorCisgICBBdmFpbGFiaWxpdHk6IFdpbmRvd3MKKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisgICAgICBTZWUgOnBlcDpgNTI5YCBmb3IgbW9yZSBkZXRhaWxzLgogCiAuLiBkYXRhOjogc3RkaW4KICAgICAgICAgICBzdGRvdXQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QgYi9Eb2MvbGlicmFyeS9zeXNjb25maWcucnN0CmluZGV4IDZiYTA5NGQuLjI5MTc3YTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3N5c2NvbmZpZy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvc3lzY29uZmlnLnJzdApAQCAtMTY0LDcgKzE2NCw3IEBACiAuLiBmdW5jdGlvbjo6IGdldF9weXRob25fdmVyc2lvbigpCiAKICAgIFJldHVybiB0aGUgYGBNQUpPUi5NSU5PUmBgIFB5dGhvbiB2ZXJzaW9uIG51bWJlciBhcyBhIHN0cmluZy4gIFNpbWlsYXIgdG8KLSAgIGBgc3lzLnZlcnNpb25bOjNdYGAuCisgICBgYCclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXWBgLgogCiAKIC4uIGZ1bmN0aW9uOjogZ2V0X3BsYXRmb3JtKCkKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QgYi9Eb2MvbGlicmFyeS90ZWxuZXRsaWIucnN0CmluZGV4IGI5NTBlNDEuLmY5YzUxNTMgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3RlbG5ldGxpYi5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGVsbmV0bGliLnJzdApAQCAtNDMsNiArNDMsMTcgQEAKICAgIDpleGM6YEVPRkVycm9yYCB3aGVuIHRoZSBlbmQgb2YgdGhlIGNvbm5lY3Rpb24gaXMgcmVhZCwgYmVjYXVzZSB0aGV5IGNhbiByZXR1cm4KICAgIGFuIGVtcHR5IHN0cmluZyBmb3Igb3RoZXIgcmVhc29ucy4gIFNlZSB0aGUgaW5kaXZpZHVhbCBkZXNjcmlwdGlvbnMgYmVsb3cuCiAKKyAgIEEgOmNsYXNzOmBUZWxuZXRgIG9iamVjdCBpcyBhIGNvbnRleHQgbWFuYWdlciBhbmQgY2FuIGJlIHVzZWQgaW4gYQorICAgOmtleXdvcmQ6YHdpdGhgIHN0YXRlbWVudC4gIFdoZW4gdGhlIDprZXl3b3JkOmB3aXRoYCBibG9jayBlbmRzLCB0aGUKKyAgIDptZXRoOmBjbG9zZWAgbWV0aG9kIGlzIGNhbGxlZDo6CisKKyAgICAgICA+Pj4gZnJvbSB0ZWxuZXRsaWIgaW1wb3J0IFRlbG5ldAorICAgICAgID4+PiB3aXRoIFRlbG5ldCgnbG9jYWxob3N0JywgMjMpIGFzIHRuOgorICAgICAgIC4uLiAgICAgdG4uaW50ZXJhY3QoKQorICAgICAgIC4uLgorCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNiBDb250ZXh0IG1hbmFnZXIgc3VwcG9ydCBhZGRlZAorCiAKIC4uIHNlZWFsc286OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90ZXN0LnJzdCBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CmluZGV4IDJlYTljMjcuLjcxMTRjZGYgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3Rlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3Rlc3QucnN0CkBAIC01ODIsNiArNTgyLDQ4IEBACiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjUKIAogCisuLiBmdW5jdGlvbjo6IGNoZWNrX19hbGxfXyh0ZXN0X2Nhc2UsIG1vZHVsZSwgbmFtZV9vZl9tb2R1bGU9Tm9uZSwgZXh0cmE9KCksIGJsYWNrbGlzdD0oKSkKKworICAgQXNzZXJ0IHRoYXQgdGhlIGBgX19hbGxfX2BgIHZhcmlhYmxlIG9mICptb2R1bGUqIGNvbnRhaW5zIGFsbCBwdWJsaWMgbmFtZXMuCisKKyAgIFRoZSBtb2R1bGUncyBwdWJsaWMgbmFtZXMgKGl0cyBBUEkpIGFyZSBkZXRlY3RlZCBhdXRvbWF0aWNhbGx5CisgICBiYXNlZCBvbiB3aGV0aGVyIHRoZXkgbWF0Y2ggdGhlIHB1YmxpYyBuYW1lIGNvbnZlbnRpb24gYW5kIHdlcmUgZGVmaW5lZCBpbgorICAgKm1vZHVsZSouCisKKyAgIFRoZSAqbmFtZV9vZl9tb2R1bGUqIGFyZ3VtZW50IGNhbiBzcGVjaWZ5IChhcyBhIHN0cmluZyBvciB0dXBsZSB0aGVyZW9mKSB3aGF0CisgICBtb2R1bGUocykgYW4gQVBJIGNvdWxkIGJlIGRlZmluZWQgaW4gaW4gb3JkZXIgdG8gYmUgZGV0ZWN0ZWQgYXMgYSBwdWJsaWMKKyAgIEFQSS4gT25lIGNhc2UgZm9yIHRoaXMgaXMgd2hlbiAqbW9kdWxlKiBpbXBvcnRzIHBhcnQgb2YgaXRzIHB1YmxpYyBBUEkgZnJvbQorICAgb3RoZXIgbW9kdWxlcywgcG9zc2libHkgYSBDIGJhY2tlbmQgKGxpa2UgYGBjc3ZgYCBhbmQgaXRzIGBgX2NzdmBgKS4KKworICAgVGhlICpleHRyYSogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgd291bGRuJ3Qgb3RoZXJ3aXNlIGJlIGF1dG9tYXRpY2FsbHkKKyAgIGRldGVjdGVkIGFzICJwdWJsaWMiLCBsaWtlIG9iamVjdHMgd2l0aG91dCBhIHByb3BlciBgYF9fbW9kdWxlX19gYAorICAgYXR0cmlidXRlLiBJZiBwcm92aWRlZCwgaXQgd2lsbCBiZSBhZGRlZCB0byB0aGUgYXV0b21hdGljYWxseSBkZXRlY3RlZCBvbmVzLgorCisgICBUaGUgKmJsYWNrbGlzdCogYXJndW1lbnQgY2FuIGJlIGEgc2V0IG9mIG5hbWVzIHRoYXQgbXVzdCBub3QgYmUgdHJlYXRlZCBhcyBwYXJ0IG9mCisgICB0aGUgcHVibGljIEFQSSBldmVuIHRob3VnaCB0aGVpciBuYW1lcyBpbmRpY2F0ZSBvdGhlcndpc2UuCisKKyAgIEV4YW1wbGUgdXNlOjoKKworICAgICAgaW1wb3J0IGJhcgorICAgICAgaW1wb3J0IGZvbworICAgICAgaW1wb3J0IHVuaXR0ZXN0CisgICAgICBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworICAgICAgY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGZvbykKKworICAgICAgY2xhc3MgT3RoZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICBleHRyYSA9IHsnQkFSX0NPTlNUJywgJ0ZPT19DT05TVCd9CisgICAgICAgICAgICAgIGJsYWNrbGlzdCA9IHsnYmF6J30gICMgVW5kb2N1bWVudGVkIG5hbWUuCisgICAgICAgICAgICAgICMgYmFyIGltcG9ydHMgcGFydCBvZiBpdHMgQVBJIGZyb20gX2Jhci4KKyAgICAgICAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgYmFyLCAoJ2JhcicsICdfYmFyJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhPWV4dHJhLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgOm1vZDpgdGVzdC5zdXBwb3J0YCBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGNsYXNzZXM6CiAKIC4uIGNsYXNzOjogVHJhbnNpZW50UmVzb3VyY2UoZXhjLCAqKmt3YXJncykKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3RpbWUucnN0IGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKaW5kZXggZTY2MjZmMi4uYWUxN2Y2ZiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZS5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdGltZS5yc3QKQEAgLTgzLDYgKzgzLDEwIEBACiAgICAgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyB3aGVuIHBsYXRmb3JtIHN1cHBvcnRzIGNvcnJlc3BvbmRpbmcKICAgICAgYGBzdHJ1Y3QgdG1gYCBtZW1iZXJzLgogCisgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgIFRoZSA6Y2xhc3M6YHN0cnVjdF90aW1lYCBhdHRyaWJ1dGVzIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAKKyAgICAgYXJlIG5vdyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4KKwogKiBVc2UgdGhlIGZvbGxvd2luZyBmdW5jdGlvbnMgdG8gY29udmVydCBiZXR3ZWVuIHRpbWUgcmVwcmVzZW50YXRpb25zOgogCiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKQEAgLTU2NiwxMCArNTcwLDYgQEAKICAgIDpjbGFzczpgc3RydWN0X3RpbWVgLCBvciBoYXZpbmcgZWxlbWVudHMgb2YgdGhlIHdyb25nIHR5cGUsIGEKICAgIDpleGM6YFR5cGVFcnJvcmAgaXMgcmFpc2VkLgogCi0gIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4zCi0gICAgIDphdHRyOmB0bV9nbXRvZmZgIGFuZCA6YXR0cjpgdG1fem9uZWAgYXR0cmlidXRlcyBhcmUgYXZhaWxhYmxlIG9uIHBsYXRmb3JtcwotICAgICB3aXRoIEMgbGlicmFyeSBzdXBwb3J0aW5nIHRoZSBjb3JyZXNwb25kaW5nIGZpZWxkcyBpbiBgYHN0cnVjdCB0bWBgLgotCiAuLiBmdW5jdGlvbjo6IHRpbWUoKQogCiAgICBSZXR1cm4gdGhlIHRpbWUgaW4gc2Vjb25kcyBzaW5jZSB0aGUgZXBvY2ggYXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIuCkBAIC02MzcsMTEgKzYzNywxMSBAQAogICAgICAgICAgaXQgaXMgcG9zc2libGUgdG8gcmVmZXIgdG8gRmVicnVhcnkgMjkuCiAKICAgICAgIDpzYW1wOmBNe219LntufS57ZH1gCi0gICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb3Igd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCisgICAgICAgICBUaGUgKmQqJ3RoIGRheSAoMCA8PSAqZCogPD0gNikgb2Ygd2VlayAqbiogb2YgbW9udGggKm0qIG9mIHRoZSB5ZWFyICgxCiAgICAgICAgICA8PSAqbiogPD0gNSwgMSA8PSAqbSogPD0gMTIsIHdoZXJlIHdlZWsgNSBtZWFucyAidGhlIGxhc3QgKmQqIGRheSBpbgogICAgICAgICAgbW9udGggKm0qIiB3aGljaCBtYXkgb2NjdXIgaW4gZWl0aGVyIHRoZSBmb3VydGggb3IgdGhlIGZpZnRoCiAgICAgICAgICB3ZWVrKS4gV2VlayAxIGlzIHRoZSBmaXJzdCB3ZWVrIGluIHdoaWNoIHRoZSAqZCondGggZGF5IG9jY3Vycy4gRGF5Ci0gICAgICAgICB6ZXJvIGlzIFN1bmRheS4KKyAgICAgICAgIHplcm8gaXMgYSBTdW5kYXkuCiAKICAgICAgIGBgdGltZWBgIGhhcyB0aGUgc2FtZSBmb3JtYXQgYXMgYGBvZmZzZXRgYCBleGNlcHQgdGhhdCBubyBsZWFkaW5nIHNpZ24KICAgICAgICgnLScgb3IgJysnKSBpcyBhbGxvd2VkLiBUaGUgZGVmYXVsdCwgaWYgdGltZSBpcyBub3QgZ2l2ZW4sIGlzIDAyOjAwOjAwLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdCBiL0RvYy9saWJyYXJ5L3RpbWVpdC5yc3QKaW5kZXggNTdhNDgzNC4uNWJhZTMzYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGltZWl0LnJzdAorKysgYi9Eb2MvbGlicmFyeS90aW1laXQucnN0CkBAIC0xMDAsOCArMTAwLDggQEAKICAgIGNhbiBiZSBjb250cm9sbGVkIGJ5IHBhc3NpbmcgYSBuYW1lc3BhY2UgdG8gKmdsb2JhbHMqLgogCiAgICBUbyBtZWFzdXJlIHRoZSBleGVjdXRpb24gdGltZSBvZiB0aGUgZmlyc3Qgc3RhdGVtZW50LCB1c2UgdGhlIDptZXRoOmAudGltZWl0YAotICAgbWV0aG9kLiAgVGhlIDptZXRoOmAucmVwZWF0YCBtZXRob2QgaXMgYSBjb252ZW5pZW5jZSB0byBjYWxsIDptZXRoOmAudGltZWl0YAotICAgbXVsdGlwbGUgdGltZXMgYW5kIHJldHVybiBhIGxpc3Qgb2YgcmVzdWx0cy4KKyAgIG1ldGhvZC4gIFRoZSA6bWV0aDpgLnJlcGVhdGAgYW5kIDptZXRoOmAuYXV0b3JhbmdlYCBtZXRob2RzIGFyZSBjb252ZW5pZW5jZQorICAgbWV0aG9kcyB0byBjYWxsIDptZXRoOmAudGltZWl0YCBtdWx0aXBsZSB0aW1lcy4KIAogICAgVGhlIGV4ZWN1dGlvbiB0aW1lIG9mICpzZXR1cCogaXMgZXhjbHVkZWQgZnJvbSB0aGUgb3ZlcmFsbCB0aW1lZCBleGVjdXRpb24gcnVuLgogCkBAIC0xMzQsNiArMTM0LDIzIEBACiAgICAgICAgICAgICB0aW1laXQuVGltZXIoJ2ZvciBpIGluIHJhbmdlKDEwKTogb2N0KGkpJywgJ2djLmVuYWJsZSgpJykudGltZWl0KCkKIAogCisgICAgLi4gbWV0aG9kOjogVGltZXIuYXV0b3JhbmdlKGNhbGxiYWNrPU5vbmUpCisKKyAgICAgICBBdXRvbWF0aWNhbGx5IGRldGVybWluZSBob3cgbWFueSB0aW1lcyB0byBjYWxsIDptZXRoOmAudGltZWl0YC4KKworICAgICAgIFRoaXMgaXMgYSBjb252ZW5pZW5jZSBmdW5jdGlvbiB0aGF0IGNhbGxzIDptZXRoOmAudGltZWl0YCByZXBlYXRlZGx5CisgICAgICAgc28gdGhhdCB0aGUgdG90YWwgdGltZSA+PSAwLjIgc2Vjb25kLCByZXR1cm5pbmcgdGhlIGV2ZW50dWFsCisgICAgICAgKG51bWJlciBvZiBsb29wcywgdGltZSB0YWtlbiBmb3IgdGhhdCBudW1iZXIgb2YgbG9vcHMpLiBJdCBjYWxscworICAgICAgIDptZXRoOmAudGltZWl0YCB3aXRoICpudW1iZXIqIHNldCB0byBzdWNjZXNzaXZlIHBvd2VycyBvZiB0ZW4gKDEwLAorICAgICAgIDEwMCwgMTAwMCwgLi4uKSB1cCB0byBhIG1heGltdW0gb2Ygb25lIGJpbGxpb24sIHVudGlsIHRoZSB0aW1lIHRha2VuCisgICAgICAgaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKworICAgICAgICBJZiAqY2FsbGJhY2sqIGlzIGdpdmVuIGFuZCBpcyBub3QgKk5vbmUqLCBpdCB3aWxsIGJlIGNhbGxlZCBhZnRlcgorICAgICAgICBlYWNoIHRyaWFsIHdpdGggdHdvIGFyZ3VtZW50czogYGBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKwogICAgLi4gbWV0aG9kOjogVGltZXIucmVwZWF0KHJlcGVhdD0zLCBudW1iZXI9MTAwMDAwMCkKIAogICAgICAgQ2FsbCA6bWV0aDpgLnRpbWVpdGAgYSBmZXcgdGltZXMuCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QgYi9Eb2MvbGlicmFyeS90a2ludGVyLnRpeC5yc3QKaW5kZXggNDFmMjBkZC4uMTFlZDc1NSAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdGtpbnRlci50aXgucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RraW50ZXIudGl4LnJzdApAQCAtMTAsNiArMTAsMTAgQEAKIAogLi4gaW5kZXg6OiBzaW5nbGU6IFRpeAogCisuLiBkZXByZWNhdGVkOjogMy42CisgICBUaGlzIFRrIGV4dGVuc2lvbiBpcyB1bm1haW50YWluZWQgYW5kIHNob3VsZCBub3QgYmUgdXNlZCBpbiBuZXcgY29kZS4gIFVzZQorICAgOm1vZDpgdGtpbnRlci50dGtgIGluc3RlYWQuCisKIC0tLS0tLS0tLS0tLS0tCiAKIFRoZSA6bW9kOmB0a2ludGVyLnRpeGAgKFRrIEludGVyZmFjZSBFeHRlbnNpb24pIG1vZHVsZSBwcm92aWRlcyBhbiBhZGRpdGlvbmFsCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0IGIvRG9jL2xpYnJhcnkvdHJhY2ViYWNrLnJzdAppbmRleCAzYzFkOWJiLi4wNjZlZTk2IDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90cmFjZWJhY2sucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlYmFjay5yc3QKQEAgLTI5MSw2ICsyOTEsMjAgQEAKICAgICAgIG9mIHR1cGxlcy4gRWFjaCB0dXBsZSBzaG91bGQgYmUgYSA0LXR1cGxlIHdpdGggZmlsZW5hbWUsIGxpbmVubywgbmFtZSwKICAgICAgIGxpbmUgYXMgdGhlIGVsZW1lbnRzLgogCisgICAuLiBtZXRob2Q6OiBmb3JtYXQoKQorCisgICAgICBSZXR1cm5zIGEgbGlzdCBvZiBzdHJpbmdzIHJlYWR5IGZvciBwcmludGluZy4gIEVhY2ggc3RyaW5nIGluIHRoZQorICAgICAgcmVzdWx0aW5nIGxpc3QgY29ycmVzcG9uZHMgdG8gYSBzaW5nbGUgZnJhbWUgZnJvbSB0aGUgc3RhY2suCisgICAgICBFYWNoIHN0cmluZyBlbmRzIGluIGEgbmV3bGluZTsgdGhlIHN0cmluZ3MgbWF5IGNvbnRhaW4gaW50ZXJuYWwKKyAgICAgIG5ld2xpbmVzIGFzIHdlbGwsIGZvciB0aG9zZSBpdGVtcyB3aXRoIHNvdXJjZSB0ZXh0IGxpbmVzLgorCisgICAgICBGb3IgbG9uZyBzZXF1ZW5jZXMgb2YgdGhlIHNhbWUgZnJhbWUgYW5kIGxpbmUsIHRoZSBmaXJzdCBmZXcKKyAgICAgIHJlcGV0aXRpb25zIGFyZSBzaG93biwgZm9sbG93ZWQgYnkgYSBzdW1tYXJ5IGxpbmUgc3RhdGluZyB0aGUgZXhhY3QKKyAgICAgIG51bWJlciBvZiBmdXJ0aGVyIHJlcGV0aXRpb25zLgorCisgICAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgICAgTG9uZyBzZXF1ZW5jZXMgb2YgcmVwZWF0ZWQgZnJhbWVzIGFyZSBub3cgYWJicmV2aWF0ZWQuCisKIAogOmNsYXNzOmBGcmFtZVN1bW1hcnlgIE9iamVjdHMKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QgYi9Eb2MvbGlicmFyeS90cmFjZW1hbGxvYy5yc3QKaW5kZXggM2EwYjFlMC4uZjU2ZjI3YiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHJhY2VtYWxsb2MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3RyYWNlbWFsbG9jLnJzdApAQCAtMzU5LDEwICszNTksMzIgQEAKICAgIFNlZSBhbHNvIHRoZSA6ZnVuYzpgZ2V0X29iamVjdF90cmFjZWJhY2tgIGZ1bmN0aW9uLgogCiAKK0RvbWFpbkZpbHRlcgorXl5eXl5eXl5eXl5eCisKKy4uIGNsYXNzOjogRG9tYWluRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZG9tYWluOiBpbnQpCisKKyAgIEZpbHRlciB0cmFjZXMgb2YgbWVtb3J5IGJsb2NrcyBieSB0aGVpciBhZGRyZXNzIHNwYWNlIChkb21haW4pLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCisKKyAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgbWF0Y2ggbWVtb3J5IGJsb2NrcyBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAgICBJZiAqaW5jbHVzaXZlKiBpcyBgYEZhbHNlYGAgKGV4Y2x1ZGUpLCBtYXRjaCBtZW1vcnkgYmxvY2tzIG5vdCBhbGxvY2F0ZWQKKyAgICAgIGluIHRoZSBhZGRyZXNzIHNwYWNlIDphdHRyOmBkb21haW5gLgorCisgICAuLiBhdHRyaWJ1dGU6OiBkb21haW4KKworICAgICAgQWRkcmVzcyBzcGFjZSBvZiBhIG1lbW9yeSBibG9jayAoYGBpbnRgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KKworCiBGaWx0ZXIKIF5eXl5eXgogCi0uLiBjbGFzczo6IEZpbHRlcihpbmNsdXNpdmU6IGJvb2wsIGZpbGVuYW1lX3BhdHRlcm46IHN0ciwgbGluZW5vOiBpbnQ9Tm9uZSwgYWxsX2ZyYW1lczogYm9vbD1GYWxzZSkKKy4uIGNsYXNzOjogRmlsdGVyKGluY2x1c2l2ZTogYm9vbCwgZmlsZW5hbWVfcGF0dGVybjogc3RyLCBsaW5lbm86IGludD1Ob25lLCBhbGxfZnJhbWVzOiBib29sPUZhbHNlLCBkb21haW46IGludD1Ob25lKQogCiAgICBGaWx0ZXIgb24gdHJhY2VzIG9mIG1lbW9yeSBibG9ja3MuCiAKQEAgLTM4Miw5ICs0MDQsMTcgQEAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy41CiAgICAgICBUaGUgYGAnLnB5bydgYCBmaWxlIGV4dGVuc2lvbiBpcyBubyBsb25nZXIgcmVwbGFjZWQgd2l0aCBgYCcucHknYGAuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCB0aGUgOmF0dHI6YGRvbWFpbmAgYXR0cmlidXRlLgorCisKKyAgIC4uIGF0dHJpYnV0ZTo6IGRvbWFpbgorCisgICAgICBBZGRyZXNzIHNwYWNlIG9mIGEgbWVtb3J5IGJsb2NrIChgYGludGBgIG9yIGBgTm9uZWBgKS4KKwogICAgLi4gYXR0cmlidXRlOjogaW5jbHVzaXZlCiAKLSAgICAgIElmICppbmNsdXNpdmUqIGlzIGBgVHJ1ZWBgIChpbmNsdWRlKSwgb25seSB0cmFjZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgSWYgKmluY2x1c2l2ZSogaXMgYGBUcnVlYGAgKGluY2x1ZGUpLCBvbmx5IG1hdGNoIG1lbW9yeSBibG9ja3MgYWxsb2NhdGVkCiAgICAgICBpbiBhIGZpbGUgd2l0aCBhIG5hbWUgbWF0Y2hpbmcgOmF0dHI6YGZpbGVuYW1lX3BhdHRlcm5gIGF0IGxpbmUgbnVtYmVyCiAgICAgICA6YXR0cjpgbGluZW5vYC4KIApAQCAtMzk5LDcgKzQyOSw3IEBACiAKICAgIC4uIGF0dHJpYnV0ZTo6IGZpbGVuYW1lX3BhdHRlcm4KIAotICAgICAgRmlsZW5hbWUgcGF0dGVybiBvZiB0aGUgZmlsdGVyIChgYHN0cmBgKS4KKyAgICAgIEZpbGVuYW1lIHBhdHRlcm4gb2YgdGhlIGZpbHRlciAoYGBzdHJgYCkuIFJlYWQtb25seSBwcm9wZXJ0eS4KIAogICAgLi4gYXR0cmlidXRlOjogYWxsX2ZyYW1lcwogCkBAIC00NjIsMTQgKzQ5MiwxNyBAQAogICAgLi4gbWV0aG9kOjogZmlsdGVyX3RyYWNlcyhmaWx0ZXJzKQogCiAgICAgICBDcmVhdGUgYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGZpbHRlcmVkIDphdHRyOmB0cmFjZXNgCi0gICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqCi0gICAgICBpcyBhbiBlbXB0eSBsaXN0LCByZXR1cm4gYSBuZXcgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YKLSAgICAgIHRoZSB0cmFjZXMuCisgICAgICBzZXF1ZW5jZSwgKmZpbHRlcnMqIGlzIGEgbGlzdCBvZiA6Y2xhc3M6YERvbWFpbkZpbHRlcmAgYW5kCisgICAgICA6Y2xhc3M6YEZpbHRlcmAgaW5zdGFuY2VzLiAgSWYgKmZpbHRlcnMqIGlzIGFuIGVtcHR5IGxpc3QsIHJldHVybiBhIG5ldworICAgICAgOmNsYXNzOmBTbmFwc2hvdGAgaW5zdGFuY2Ugd2l0aCBhIGNvcHkgb2YgdGhlIHRyYWNlcy4KIAogICAgICAgQWxsIGluY2x1c2l2ZSBmaWx0ZXJzIGFyZSBhcHBsaWVkIGF0IG9uY2UsIGEgdHJhY2UgaXMgaWdub3JlZCBpZiBubwogICAgICAgaW5jbHVzaXZlIGZpbHRlcnMgbWF0Y2ggaXQuIEEgdHJhY2UgaXMgaWdub3JlZCBpZiBhdCBsZWFzdCBvbmUgZXhjbHVzaXZlCiAgICAgICBmaWx0ZXIgbWF0Y2hlcyBpdC4KIAorICAgICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICAgIDpjbGFzczpgRG9tYWluRmlsdGVyYCBpbnN0YW5jZXMgYXJlIG5vdyBhbHNvIGFjY2VwdGVkIGluICpmaWx0ZXJzKi4KKwogCiAgICAuLiBjbGFzc21ldGhvZDo6IGxvYWQoZmlsZW5hbWUpCiAKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3R5cGVzLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGVzLnJzdAppbmRleCAxMThiYzRjLi44OThiOTVhIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS90eXBlcy5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdHlwZXMucnN0CkBAIC01NSw2ICs1NSwxMiBAQAogCiAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjMKIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKworICAgICAgVGhlIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBgYG5hbWVzcGFjZWBgIGVsZW1lbnQgb2YgdGhlIHJldHVybmVkCisgICAgICB0dXBsZSBoYXMgY2hhbmdlZC4gIE5vdyBhbiBpbnNlcnRpb24tb3JkZXItcHJlc2VydmluZyBtYXBwaW5nIGlzCisgICAgICB1c2VkIHdoZW4gdGhlIG1ldGFjbGFzcyBkb2VzIG5vdCBoYXZlIGEgYGBfX3ByZXBhcmVfX2BgIG1ldGhvZCwKKwogLi4gc2VlYWxzbzo6CiAKICAgIDpyZWY6YG1ldGFjbGFzc2VzYApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdCBiL0RvYy9saWJyYXJ5L3R5cGluZy5yc3QKaW5kZXggODk4YTBmMC4uNDQ3YjU0OCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdHlwaW5nLnJzdAorKysgYi9Eb2MvbGlicmFyeS90eXBpbmcucnN0CkBAIC0xMCw4ICsxMCw4IEBACiAKIC0tLS0tLS0tLS0tLS0tCiAKLVRoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAuICBUaGUgbW9zdAotZnVuZGFtZW50YWwgc3VwcG9ydCBjb25zaXN0cyBvZiB0aGUgdHlwZSA6ZGF0YTpgQW55YCwgOmRhdGE6YFVuaW9uYCwKK1RoaXMgbW9kdWxlIHN1cHBvcnRzIHR5cGUgaGludHMgYXMgc3BlY2lmaWVkIGJ5IDpwZXA6YDQ4NGAgYW5kIDpwZXA6YDUyNmAuCitUaGUgbW9zdCBmdW5kYW1lbnRhbCBzdXBwb3J0IGNvbnNpc3RzIG9mIHRoZSB0eXBlIDpkYXRhOmBBbnlgLCA6ZGF0YTpgVW5pb25gLAogOmRhdGE6YFR1cGxlYCwgOmRhdGE6YENhbGxhYmxlYCwgOmNsYXNzOmBUeXBlVmFyYCwgYW5kCiA6Y2xhc3M6YEdlbmVyaWNgLiAgRm9yIGZ1bGwgc3BlY2lmaWNhdGlvbiBwbGVhc2Ugc2VlIDpwZXA6YDQ4NGAuICBGb3IKIGEgc2ltcGxpZmllZCBpbnRyb2R1Y3Rpb24gdG8gdHlwZSBoaW50cyBzZWUgOnBlcDpgNDgzYC4KQEAgLTUwNyw3ICs1MDcsMTMgQEAKIAogICAgQW4gYWxpYXMgdG8gOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2l6ZWRgCiAKLS4uIGNsYXNzOjogQWJzdHJhY3RTZXQoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IENvbGxlY3Rpb24oU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisKKyAgIEEgZ2VuZXJpYyB2ZXJzaW9uIG9mIDpjbGFzczpgY29sbGVjdGlvbnMuYWJjLkNvbGxlY3Rpb25gCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBjbGFzczo6IEFic3RyYWN0U2V0KFNpemVkLCBDb2xsZWN0aW9uW1RfY29dKQogCiAgICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBjb2xsZWN0aW9ucy5hYmMuU2V0YC4KIApAQCAtNTE1LDcgKzUyMSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2V0YC4KIAotLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBJdGVyYWJsZVtLVF0sIENvbnRhaW5lcltLVF0sIEdlbmVyaWNbVlRfY29dKQorLi4gY2xhc3M6OiBNYXBwaW5nKFNpemVkLCBDb2xsZWN0aW9uW0tUXSwgR2VuZXJpY1tWVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NYXBwaW5nYC4KIApAQCAtNTIzLDcgKzUyOSw3IEBACiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlTWFwcGluZ2AuCiAKLS4uIGNsYXNzOjogU2VxdWVuY2UoU2l6ZWQsIEl0ZXJhYmxlW1RfY29dLCBDb250YWluZXJbVF9jb10pCisuLiBjbGFzczo6IFNlcXVlbmNlKFJldmVyc2libGVbVF9jb10sIENvbGxlY3Rpb25bVF9jb10pCiAKICAgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZWAuCiAKQEAgLTU5MCw2ICs1OTYsMTIgQEAKIAogICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbGxlY3Rpb25zLmFiYy5Bc3luY0l0ZXJhdG9yYC4KIAorLi4gY2xhc3M6OiBDb250ZXh0TWFuYWdlcihHZW5lcmljW1RfY29dKQorCisgICBBIGdlbmVyaWMgdmVyc2lvbiBvZiA6Y2xhc3M6YGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlcmAuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCiAuLiBjbGFzczo6IERpY3QoZGljdCwgTXV0YWJsZU1hcHBpbmdbS1QsIFZUXSkKIAogICAgQSBnZW5lcmljIHZlcnNpb24gb2YgOmNsYXNzOmBkaWN0YC4KQEAgLTcwMiw3ICs3MTQsNyBAQAogCiAuLiBmdW5jdGlvbjo6IGdldF90eXBlX2hpbnRzKG9iaikKIAotICAgUmV0dXJuIHR5cGUgaGludHMgZm9yIGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdC4KKyAgIFJldHVybiB0eXBlIGhpbnRzIGZvciBhIGNsYXNzLCBtb2R1bGUsIGZ1bmN0aW9uIG9yIG1ldGhvZCBvYmplY3QuCiAKICAgIFRoaXMgaXMgb2Z0ZW4gdGhlIHNhbWUgYXMgYGBvYmouX19hbm5vdGF0aW9uc19fYGAsIGJ1dCBpdCBoYW5kbGVzCiAgICBmb3J3YXJkIHJlZmVyZW5jZXMgZW5jb2RlZCBhcyBzdHJpbmcgbGl0ZXJhbHMsIGFuZCBpZiBuZWNlc3NhcnkKQEAgLTg0NSw4ICs4NTcsOCBAQAogICAgYW5kIHNob3VsZCBub3QgYmUgc2V0IG9uIGluc3RhbmNlcyBvZiB0aGF0IGNsYXNzLiBVc2FnZTo6CiAKICAgICAgIGNsYXNzIFN0YXJzaGlwOgotICAgICAgICAgIHN0YXRzID0ge30gICMgdHlwZTogQ2xhc3NWYXJbRGljdFtzdHIsIGludF1dICMgY2xhc3MgdmFyaWFibGUKLSAgICAgICAgICBkYW1hZ2UgPSAxMCAjIHR5cGU6IGludCAgICAgICAgICAgICAgICAgICAgICAjIGluc3RhbmNlIHZhcmlhYmxlCisgICAgICAgICAgc3RhdHM6IENsYXNzVmFyW0RpY3Rbc3RyLCBpbnRdXSA9IHt9ICMgY2xhc3MgdmFyaWFibGUKKyAgICAgICAgICBkYW1hZ2U6IGludCA9IDEwICAgICAgICAgICAgICAgICAgICAgIyBpbnN0YW5jZSB2YXJpYWJsZQogCiAgICA6ZGF0YTpgQ2xhc3NWYXJgIGFjY2VwdHMgb25seSB0eXBlcyBhbmQgY2Fubm90IGJlIGZ1cnRoZXIgc3Vic2NyaWJlZC4KIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5kb2MucnN0IGIvRG9jL2xpYnJhcnkvdW5kb2MucnN0CmluZGV4IDIwODMwZTIuLjI0NDQwODAgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuZG9jLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmRvYy5yc3QKQEAgLTIwLDcgKzIwLDcgQEAKIGRvY3VtZW50ZWQgYmV5b25kIHRoaXMgbWVudGlvbi4gIFRoZXJlJ3MgbGl0dGxlIG5lZWQgdG8gZG9jdW1lbnQgdGhlc2UuCiAKIDptb2Q6YG50cGF0aGAKLSAgIC0tLSBJbXBsZW1lbnRhdGlvbiBvZiA6bW9kOmBvcy5wYXRoYCBvbiBXaW4zMiwgV2luNjQsIGFuZCBXaW5DRSBwbGF0Zm9ybXMuCisgICAtLS0gSW1wbGVtZW50YXRpb24gb2YgOm1vZDpgb3MucGF0aGAgb24gV2luMzIgYW5kIFdpbjY0IHBsYXRmb3Jtcy4KIAogOm1vZDpgcG9zaXhwYXRoYAogICAgLS0tIEltcGxlbWVudGF0aW9uIG9mIDptb2Q6YG9zLnBhdGhgIG9uIFBPU0lYLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0IGIvRG9jL2xpYnJhcnkvdW5pY29kZWRhdGEucnN0CmluZGV4IDZjZDgxMzIuLjY0MzE4MDkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAorKysgYi9Eb2MvbGlicmFyeS91bmljb2RlZGF0YS5yc3QKQEAgLTE3LDggKzE3LDggQEAKIAogVGhpcyBtb2R1bGUgcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSBVbmljb2RlIENoYXJhY3RlciBEYXRhYmFzZSAoVUNEKSB3aGljaAogZGVmaW5lcyBjaGFyYWN0ZXIgcHJvcGVydGllcyBmb3IgYWxsIFVuaWNvZGUgY2hhcmFjdGVycy4gVGhlIGRhdGEgY29udGFpbmVkIGluCi10aGlzIGRhdGFiYXNlIGlzIGNvbXBpbGVkIGZyb20gdGhlIGBVQ0QgdmVyc2lvbiA4LjAuMAotPGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzguMC4wL3VjZD5gXy4KK3RoaXMgZGF0YWJhc2UgaXMgY29tcGlsZWQgZnJvbSB0aGUgYFVDRCB2ZXJzaW9uIDkuMC4wCis8aHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkPmBfLgogCiBUaGUgbW9kdWxlIHVzZXMgdGhlIHNhbWUgbmFtZXMgYW5kIHN5bWJvbHMgYXMgZGVmaW5lZCBieSBVbmljb2RlCiBTdGFuZGFyZCBBbm5leCAjNDQsIGAiVW5pY29kZSBDaGFyYWN0ZXIgRGF0YWJhc2UiCkBAIC0xNjgsNiArMTY4LDYgQEAKIAogLi4gcnVicmljOjogRm9vdG5vdGVzCiAKLS4uIFsjXSBodHRwOi8vd3d3LnVuaWNvZGUub3JnL1B1YmxpYy84LjAuMC91Y2QvTmFtZUFsaWFzZXMudHh0CisuLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOS4wLjAvdWNkL05hbWVBbGlhc2VzLnR4dAogCi0uLiBbI10gaHR0cDovL3d3dy51bmljb2RlLm9yZy9QdWJsaWMvOC4wLjAvdWNkL05hbWVkU2VxdWVuY2VzLnR4dAorLi4gWyNdIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvUHVibGljLzkuMC4wL3VjZC9OYW1lZFNlcXVlbmNlcy50eHQKZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3VuaXR0ZXN0Lm1vY2sucnN0IGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKaW5kZXggYzEzZjA5NS4uMWJjMWVkYiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKKysrIGIvRG9jL2xpYnJhcnkvdW5pdHRlc3QubW9jay5yc3QKQEAgLTI2Miw2ICsyNjIsMzQgQEAKICAgICB1c2VkIHRvIHNldCBhdHRyaWJ1dGVzIG9uIHRoZSBtb2NrIGFmdGVyIGl0IGlzIGNyZWF0ZWQuIFNlZSB0aGUKICAgICA6bWV0aDpgY29uZmlndXJlX21vY2tgIG1ldGhvZCBmb3IgZGV0YWlscy4KIAorICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWQoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgICAgIEFzc2VydCB0aGF0IHRoZSBtb2NrIHdhcyBjYWxsZWQgYXQgbGVhc3Qgb25jZS4KKworICAgICAgICAgICAgPj4+IG1vY2sgPSBNb2NrKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkKCkKKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworICAgIC4uIG1ldGhvZDo6IGFzc2VydF9jYWxsZWRfb25jZSgqYXJncywgKiprd2FyZ3MpCisKKyAgICAgICAgQXNzZXJ0IHRoYXQgdGhlIG1vY2sgd2FzIGNhbGxlZCBleGFjdGx5IG9uY2UuCisKKyAgICAgICAgICAgID4+PiBtb2NrID0gTW9jaygpCisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QoKQorICAgICAgICAgICAgPE1vY2sgbmFtZT0nbW9jay5tZXRob2QoKScgaWQ9Jy4uLic+CisgICAgICAgICAgICA+Pj4gbW9jay5tZXRob2QuYXNzZXJ0X2NhbGxlZF9vbmNlKCkKKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZCgpCisgICAgICAgICAgICA8TW9jayBuYW1lPSdtb2NrLm1ldGhvZCgpJyBpZD0nLi4uJz4KKyAgICAgICAgICAgID4+PiBtb2NrLm1ldGhvZC5hc3NlcnRfY2FsbGVkX29uY2UoKQorICAgICAgICAgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgICAgICAgLi4uCisgICAgICAgICAgICBBc3NlcnRpb25FcnJvcjogRXhwZWN0ZWQgJ21ldGhvZCcgdG8gaGF2ZSBiZWVuIGNhbGxlZCBvbmNlLiBDYWxsZWQgMiB0aW1lcy4KKworICAgICAgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKwogCiAgICAgLi4gbWV0aG9kOjogYXNzZXJ0X2NhbGxlZF93aXRoKCphcmdzLCAqKmt3YXJncykKIApAQCAtMzM5LDcgKzM2Nyw3IEBACiAgICAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNQogCiAKLSAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCkKKyAgICAuLiBtZXRob2Q6OiByZXNldF9tb2NrKCosIHJldHVybl92YWx1ZT1GYWxzZSwgc2lkZV9lZmZlY3Q9RmFsc2UpCiAKICAgICAgICAgVGhlIHJlc2V0X21vY2sgbWV0aG9kIHJlc2V0cyBhbGwgdGhlIGNhbGwgYXR0cmlidXRlcyBvbiBhIG1vY2sgb2JqZWN0OgogCkBAIC0zNTEsMTIgKzM3OSwyMCBAQAogICAgICAgICAgICAgPj4+IG1vY2suY2FsbGVkCiAgICAgICAgICAgICBGYWxzZQogCisgICAgICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICAgICAgIEFkZGVkIHR3byBrZXl3b3JkIG9ubHkgYXJndW1lbnQgdG8gdGhlIHJlc2V0X21vY2sgZnVuY3Rpb24uCisKICAgICAgICAgVGhpcyBjYW4gYmUgdXNlZnVsIHdoZXJlIHlvdSB3YW50IHRvIG1ha2UgYSBzZXJpZXMgb2YgYXNzZXJ0aW9ucyB0aGF0CiAgICAgICAgIHJldXNlIHRoZSBzYW1lIG9iamVjdC4gTm90ZSB0aGF0IDptZXRoOmByZXNldF9tb2NrYCAqZG9lc24ndCogY2xlYXIgdGhlCiAgICAgICAgIHJldHVybiB2YWx1ZSwgOmF0dHI6YHNpZGVfZWZmZWN0YCBvciBhbnkgY2hpbGQgYXR0cmlidXRlcyB5b3UgaGF2ZQotICAgICAgICBzZXQgdXNpbmcgbm9ybWFsIGFzc2lnbm1lbnQuIENoaWxkIG1vY2tzIGFuZCB0aGUgcmV0dXJuIHZhbHVlIG1vY2sKKyAgICAgICAgc2V0IHVzaW5nIG5vcm1hbCBhc3NpZ25tZW50IGJ5IGRlZmF1bHQuIEluIGNhc2UgeW91IHdhbnQgdG8gcmVzZXQKKyAgICAgICAgKnJldHVybl92YWx1ZSogb3IgOmF0dHI6YHNpZGVfZWZmZWN0YCwgdGhlbiBwYXNzIHRoZSBjb3JyZXNwb25kaW5nCisgICAgICAgIHBhcmFtZXRlciBhcyBgYFRydWVgYC4gQ2hpbGQgbW9ja3MgYW5kIHRoZSByZXR1cm4gdmFsdWUgbW9jawogICAgICAgICAoaWYgYW55KSBhcmUgcmVzZXQgYXMgd2VsbC4KIAorICAgICAgICAuLiBub3RlOjogKnJldHVybl92YWx1ZSosIGFuZCA6YXR0cjpgc2lkZV9lZmZlY3RgIGFyZSBrZXl3b3JkIG9ubHkKKyAgICAgICAgICAgICAgICAgIGFyZ3VtZW50LgorCiAKICAgICAuLiBtZXRob2Q6OiBtb2NrX2FkZF9zcGVjKHNwZWMsIHNwZWNfc2V0PUZhbHNlKQogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QgYi9Eb2MvbGlicmFyeS91bml0dGVzdC5yc3QKaW5kZXggYjE2MGRiOC4uMTI4NTk3YyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdW5pdHRlc3QucnN0CisrKyBiL0RvYy9saWJyYXJ5L3VuaXR0ZXN0LnJzdApAQCAtMTM5MSw5ICsxMzkxLDkgQEAKIAogICAgICAgQWRkIGEgZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGFmdGVyIDptZXRoOmB0ZWFyRG93bmAgdG8gY2xlYW51cCByZXNvdXJjZXMKICAgICAgIHVzZWQgZHVyaW5nIHRoZSB0ZXN0LiBGdW5jdGlvbnMgd2lsbCBiZSBjYWxsZWQgaW4gcmV2ZXJzZSBvcmRlciB0byB0aGUKLSAgICAgIG9yZGVyIHRoZXkgYXJlIGFkZGVkIChMSUZPKS4gVGhleSBhcmUgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cyBhbmQKLSAgICAgIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvIDptZXRoOmBhZGRDbGVhbnVwYCB3aGVuIHRoZXkgYXJlCi0gICAgICBhZGRlZC4KKyAgICAgIG9yZGVyIHRoZXkgYXJlIGFkZGVkICg6YWJicjpgTElGTyAobGFzdC1pbiwgZmlyc3Qtb3V0KWApLiAgVGhleQorICAgICAgYXJlIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMgYW5kIGtleXdvcmQgYXJndW1lbnRzIHBhc3NlZCBpbnRvCisgICAgICA6bWV0aDpgYWRkQ2xlYW51cGAgd2hlbiB0aGV5IGFyZSBhZGRlZC4KIAogICAgICAgSWYgOm1ldGg6YHNldFVwYCBmYWlscywgbWVhbmluZyB0aGF0IDptZXRoOmB0ZWFyRG93bmAgaXMgbm90IGNhbGxlZCwKICAgICAgIHRoZW4gYW55IGNsZWFudXAgZnVuY3Rpb25zIGFkZGVkIHdpbGwgc3RpbGwgYmUgY2FsbGVkLgpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5wYXJzZS5yc3QKaW5kZXggMDA3ZTRkYS4uYTY2YjFjMyAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnBhcnNlLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucGFyc2UucnN0CkBAIC0xMTQsOCArMTE0LDkgQEAKICAgIHwgICAgICAgICAgICAgICAgICB8ICAgICAgIHwgaWYgcHJlc2VudCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLSAgIFNlZSBzZWN0aW9uIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQKLSAgIG9iamVjdC4KKyAgIFJlYWRpbmcgdGhlIDphdHRyOmBwb3J0YCBhdHRyaWJ1dGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlmCisgICBhbiBpbnZhbGlkIHBvcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwuICBTZWUgc2VjdGlvbgorICAgOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdCBvYmplY3QuCiAKICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy4yCiAgICAgICBBZGRlZCBJUHY2IFVSTCBwYXJzaW5nIGNhcGFiaWxpdGllcy4KQEAgLTEyNSw2ICsxMjYsMTAgQEAKICAgICAgIGZhbHNlKSwgaW4gYWNjb3JkYW5jZSB3aXRoIDpyZmM6YDM5ODZgLiAgUHJldmlvdXNseSwgYSB3aGl0ZWxpc3Qgb2YKICAgICAgIHNjaGVtZXMgdGhhdCBzdXBwb3J0IGZyYWdtZW50cyBleGlzdGVkLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgT3V0LW9mLXJhbmdlIHBvcnQgbnVtYmVycyBub3cgcmFpc2UgOmV4YzpgVmFsdWVFcnJvcmAsIGluc3RlYWQgb2YKKyAgICAgIHJldHVybmluZyA6Y29uc3Q6YE5vbmVgLgorCiAKIC4uIGZ1bmN0aW9uOjogcGFyc2VfcXMocXMsIGtlZXBfYmxhbmtfdmFsdWVzPUZhbHNlLCBzdHJpY3RfcGFyc2luZz1GYWxzZSwgZW5jb2Rpbmc9J3V0Zi04JywgZXJyb3JzPSdyZXBsYWNlJykKIApAQCAtMjI3LDggKzIzMiwxMyBAQAogICAgfCAgICAgICAgICAgICAgICAgIHwgICAgICAgfCBpZiBwcmVzZW50ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKLSAgIFNlZSBzZWN0aW9uIDpyZWY6YHVybHBhcnNlLXJlc3VsdC1vYmplY3RgIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSByZXN1bHQKLSAgIG9iamVjdC4KKyAgIFJlYWRpbmcgdGhlIDphdHRyOmBwb3J0YCBhdHRyaWJ1dGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgIGlmCisgICBhbiBpbnZhbGlkIHBvcnQgaXMgc3BlY2lmaWVkIGluIHRoZSBVUkwuICBTZWUgc2VjdGlvbgorICAgOnJlZjpgdXJscGFyc2UtcmVzdWx0LW9iamVjdGAgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlIHJlc3VsdCBvYmplY3QuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBPdXQtb2YtcmFuZ2UgcG9ydCBudW1iZXJzIG5vdyByYWlzZSA6ZXhjOmBWYWx1ZUVycm9yYCwgaW5zdGVhZCBvZgorICAgICAgcmV0dXJuaW5nIDpjb25zdDpgTm9uZWAuCiAKIAogLi4gZnVuY3Rpb246OiB1cmx1bnNwbGl0KHBhcnRzKQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0IGIvRG9jL2xpYnJhcnkvdXJsbGliLnJlcXVlc3QucnN0CmluZGV4IDEyOTFhZWIuLjQ5MWJkZWQgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3VybGxpYi5yZXF1ZXN0LnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucmVxdWVzdC5yc3QKQEAgLTMwLDE4ICszMCw5IEBACiAgICBPcGVuIHRoZSBVUkwgKnVybCosIHdoaWNoIGNhbiBiZSBlaXRoZXIgYSBzdHJpbmcgb3IgYQogICAgOmNsYXNzOmBSZXF1ZXN0YCBvYmplY3QuCiAKLSAgICpkYXRhKiBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlCi0gICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICpkYXRhKiBtYXkgYWxzbyBiZSBhbgotICAgaXRlcmFibGUgb2JqZWN0IGFuZCBpbiB0aGF0IGNhc2UgQ29udGVudC1MZW5ndGggdmFsdWUgbXVzdCBiZSBzcGVjaWZpZWQgaW4KLSAgIHRoZSBoZWFkZXJzLiBDdXJyZW50bHkgSFRUUCByZXF1ZXN0cyBhcmUgdGhlIG9ubHkgb25lcyB0aGF0IHVzZSAqZGF0YSo7IHRoZQotICAgSFRUUCByZXF1ZXN0IHdpbGwgYmUgYSBQT1NUIGluc3RlYWQgb2YgYSBHRVQgd2hlbiB0aGUgKmRhdGEqIHBhcmFtZXRlciBpcwotICAgcHJvdmlkZWQuCi0KLSAgICpkYXRhKiBzaG91bGQgYmUgYSBidWZmZXIgaW4gdGhlIHN0YW5kYXJkCi0gICA6bWltZXR5cGU6YGFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZGAgZm9ybWF0LiAgVGhlCi0gICA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlIG9mCi0gICAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSB0ZXh0IHN0cmluZyBpbiB0aGlzIGZvcm1hdC4gSXQgc2hvdWxkCi0gICBiZSBlbmNvZGVkIHRvIGJ5dGVzIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSAqZGF0YSogcGFyYW1ldGVyLgorICAgKmRhdGEqIG11c3QgYmUgYW4gb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIGJlIHNlbnQgdG8gdGhlCisgICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBTZWUgOmNsYXNzOmBSZXF1ZXN0YAorICAgZm9yIGRldGFpbHMuCiAKICAgIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzIEhUVFAvMS4xIGFuZCBpbmNsdWRlcyBgYENvbm5lY3Rpb246Y2xvc2VgYCBoZWFkZXIKICAgIGluIGl0cyBIVFRQIHJlcXVlc3RzLgpAQCAtMTIwLDYgKzExMSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQuMwogICAgICAgKmNvbnRleHQqIHdhcyBhZGRlZC4KIAorICAgLi4gZGVwcmVjYXRlZDo6IDMuNgorCisgICAgICAgKmNhZmlsZSosICpjYXBhdGgqIGFuZCAqY2FkZWZhdWx0KiBhcmUgZGVwcmVjYXRlZCBpbiBmYXZvciBvZiAqY29udGV4dCouCisgICAgICAgUGxlYXNlIHVzZSA6bWV0aDpgc3NsLlNTTENvbnRleHQubG9hZF9jZXJ0X2NoYWluYCBpbnN0ZWFkLCBvciBsZXQKKyAgICAgICA6ZnVuYzpgc3NsLmNyZWF0ZV9kZWZhdWx0X2NvbnRleHRgIHNlbGVjdCB0aGUgc3lzdGVtJ3MgdHJ1c3RlZCBDQQorICAgICAgIGNlcnRpZmljYXRlcyBmb3IgeW91LgogCiAuLiBmdW5jdGlvbjo6IGluc3RhbGxfb3BlbmVyKG9wZW5lcikKIApAQCAtMTkyLDE0ICsxODksMjEgQEAKIAogICAgKnVybCogc2hvdWxkIGJlIGEgc3RyaW5nIGNvbnRhaW5pbmcgYSB2YWxpZCBVUkwuCiAKLSAgICpkYXRhKiBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IHNwZWNpZnlpbmcgYWRkaXRpb25hbCBkYXRhIHRvIHNlbmQgdG8gdGhlCi0gICBzZXJ2ZXIsIG9yIGBgTm9uZWBgIGlmIG5vIHN1Y2ggZGF0YSBpcyBuZWVkZWQuICBDdXJyZW50bHkgSFRUUCByZXF1ZXN0cyBhcmUKLSAgIHRoZSBvbmx5IG9uZXMgdGhhdCB1c2UgKmRhdGEqOyB0aGUgSFRUUCByZXF1ZXN0IHdpbGwgYmUgYSBQT1NUIGluc3RlYWQgb2YgYQotICAgR0VUIHdoZW4gdGhlICpkYXRhKiBwYXJhbWV0ZXIgaXMgcHJvdmlkZWQuICAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZQotICAgc3RhbmRhcmQgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4KLSAgIFRoZSA6ZnVuYzpgdXJsbGliLnBhcnNlLnVybGVuY29kZWAgZnVuY3Rpb24gdGFrZXMgYSBtYXBwaW5nIG9yIHNlcXVlbmNlIG9mCi0gICAyLXR1cGxlcyBhbmQgcmV0dXJucyBhbiBBU0NJSSBzdHJpbmcgaW4gdGhpcyBmb3JtYXQuIEl0IHNob3VsZCBiZQotICAgZW5jb2RlZCB0byBieXRlcyBiZWZvcmUgYmVpbmcgdXNlZCBhcyB0aGUgKmRhdGEqIHBhcmFtZXRlci4KKyAgICpkYXRhKiBtdXN0IGJlIGFuIG9iamVjdCBzcGVjaWZ5aW5nIGFkZGl0aW9uYWwgZGF0YSB0byBzZW5kIHRvIHRoZQorICAgc2VydmVyLCBvciBgYE5vbmVgYCBpZiBubyBzdWNoIGRhdGEgaXMgbmVlZGVkLiAgQ3VycmVudGx5IEhUVFAKKyAgIHJlcXVlc3RzIGFyZSB0aGUgb25seSBvbmVzIHRoYXQgdXNlICpkYXRhKi4gIFRoZSBzdXBwb3J0ZWQgb2JqZWN0CisgICB0eXBlcyBpbmNsdWRlIGJ5dGVzLCBmaWxlLWxpa2Ugb2JqZWN0cywgYW5kIGl0ZXJhYmxlcy4gIElmIG5vCisgICBgYENvbnRlbnQtTGVuZ3RoYGAgbm9yIGBgVHJhbnNmZXItRW5jb2RpbmdgYCBoZWFkZXIgZmllbGQKKyAgIGhhcyBiZWVuIHByb3ZpZGVkLCA6Y2xhc3M6YEhUVFBIYW5kbGVyYCB3aWxsIHNldCB0aGVzZSBoZWFkZXJzIGFjY29yZGluZworICAgdG8gdGhlIHR5cGUgb2YgKmRhdGEqLiAgYGBDb250ZW50LUxlbmd0aGBgIHdpbGwgYmUgdXNlZCB0byBzZW5kCisgICBieXRlcyBvYmplY3RzLCB3aGlsZSBgYFRyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkYGAgYXMgc3BlY2lmaWVkIGluCisgICA6cmZjOmA3MjMwYCwgU2VjdGlvbiAzLjMuMSB3aWxsIGJlIHVzZWQgdG8gc2VuZCBmaWxlcyBhbmQgb3RoZXIgaXRlcmFibGVzLgorCisgICBGb3IgYW4gSFRUUCBQT1NUIHJlcXVlc3QgbWV0aG9kLCAqZGF0YSogc2hvdWxkIGJlIGEgYnVmZmVyIGluIHRoZQorICAgc3RhbmRhcmQgOm1pbWV0eXBlOmBhcHBsaWNhdGlvbi94LXd3dy1mb3JtLXVybGVuY29kZWRgIGZvcm1hdC4gIFRoZQorICAgOmZ1bmM6YHVybGxpYi5wYXJzZS51cmxlbmNvZGVgIGZ1bmN0aW9uIHRha2VzIGEgbWFwcGluZyBvciBzZXF1ZW5jZQorICAgb2YgMi10dXBsZXMgYW5kIHJldHVybnMgYW4gQVNDSUkgc3RyaW5nIGluIHRoaXMgZm9ybWF0LiBJdCBzaG91bGQKKyAgIGJlIGVuY29kZWQgdG8gYnl0ZXMgYmVmb3JlIGJlaW5nIHVzZWQgYXMgdGhlICpkYXRhKiBwYXJhbWV0ZXIuCiAKICAgICpoZWFkZXJzKiBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5LCBhbmQgd2lsbCBiZSB0cmVhdGVkIGFzIGlmCiAgICA6bWV0aDpgYWRkX2hlYWRlcmAgd2FzIGNhbGxlZCB3aXRoIGVhY2gga2V5IGFuZCB2YWx1ZSBhcyBhcmd1bWVudHMuCkBAIC0yMTEsOCArMjE1LDEwIEBACiAgICA6bW9kOmB1cmxsaWJgJ3MgZGVmYXVsdCB1c2VyIGFnZW50IHN0cmluZyBpcwogICAgYGAiUHl0aG9uLXVybGxpYi8yLjYiYGAgKG9uIFB5dGhvbiAyLjYpLgogCi0gICBBbiBleGFtcGxlIG9mIHVzaW5nIGBgQ29udGVudC1UeXBlYGAgaGVhZGVyIHdpdGggKmRhdGEqIGFyZ3VtZW50IHdvdWxkIGJlCi0gICBzZW5kaW5nIGEgZGljdGlvbmFyeSBsaWtlIGBgeyJDb250ZW50LVR5cGUiOiAiYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIn1gYC4KKyAgIEFuIGFwcHJvcHJpYXRlIGBgQ29udGVudC1UeXBlYGAgaGVhZGVyIHNob3VsZCBiZSBpbmNsdWRlZCBpZiB0aGUgKmRhdGEqCisgICBhcmd1bWVudCBpcyBwcmVzZW50LiAgSWYgdGhpcyBoZWFkZXIgaGFzIG5vdCBiZWVuIHByb3ZpZGVkIGFuZCAqZGF0YSoKKyAgIGlzIG5vdCBOb25lLCBgYENvbnRlbnQtVHlwZTogYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkYGAgd2lsbAorICAgYmUgYWRkZWQgYXMgYSBkZWZhdWx0LgogCiAgICBUaGUgZmluYWwgdHdvIGFyZ3VtZW50cyBhcmUgb25seSBvZiBpbnRlcmVzdCBmb3IgY29ycmVjdCBoYW5kbGluZwogICAgb2YgdGhpcmQtcGFydHkgSFRUUCBjb29raWVzOgpAQCAtMjM1LDE1ICsyNDEsMjggQEAKICAgICptZXRob2QqIHNob3VsZCBiZSBhIHN0cmluZyB0aGF0IGluZGljYXRlcyB0aGUgSFRUUCByZXF1ZXN0IG1ldGhvZCB0aGF0CiAgICB3aWxsIGJlIHVzZWQgKGUuZy4gYGAnSEVBRCdgYCkuICBJZiBwcm92aWRlZCwgaXRzIHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUKICAgIDphdHRyOmB+UmVxdWVzdC5tZXRob2RgIGF0dHJpYnV0ZSBhbmQgaXMgdXNlZCBieSA6bWV0aDpgZ2V0X21ldGhvZCgpYC4KLSAgIFN1YmNsYXNzZXMgbWF5IGluZGljYXRlIGEgZGVmYXVsdCBtZXRob2QgYnkgc2V0dGluZyB0aGUKKyAgIFRoZSBkZWZhdWx0IGlzIGBgJ0dFVCdgYCBpZiAqZGF0YSogaXMgYGBOb25lYGAgb3IgYGAnUE9TVCdgYCBvdGhlcndpc2UuCisgICBTdWJjbGFzc2VzIG1heSBpbmRpY2F0ZSBhIGRpZmZlcmVudCBkZWZhdWx0IG1ldGhvZCBieSBzZXR0aW5nIHRoZQogICAgOmF0dHI6YH5SZXF1ZXN0Lm1ldGhvZGAgYXR0cmlidXRlIGluIHRoZSBjbGFzcyBpdHNlbGYuCiAKKyAgIC4uIG5vdGU6OgorICAgICAgVGhlIHJlcXVlc3Qgd2lsbCBub3Qgd29yayBhcyBleHBlY3RlZCBpZiB0aGUgZGF0YSBvYmplY3QgaXMgdW5hYmxlCisgICAgICB0byBkZWxpdmVyIGl0cyBjb250ZW50IG1vcmUgdGhhbiBvbmNlIChlLmcuIGEgZmlsZSBvciBhbiBpdGVyYWJsZQorICAgICAgdGhhdCBjYW4gcHJvZHVjZSB0aGUgY29udGVudCBvbmx5IG9uY2UpIGFuZCB0aGUgcmVxdWVzdCBpcyByZXRyaWVkCisgICAgICBmb3IgSFRUUCByZWRpcmVjdHMgb3IgYXV0aGVudGljYXRpb24uICBUaGUgKmRhdGEqIGlzIHNlbnQgdG8gdGhlCisgICAgICBIVFRQIHNlcnZlciByaWdodCBhd2F5IGFmdGVyIHRoZSBoZWFkZXJzLiAgVGhlcmUgaXMgbm8gc3VwcG9ydCBmb3IKKyAgICAgIGEgMTAwLWNvbnRpbnVlIGV4cGVjdGF0aW9uIGluIHRoZSBsaWJyYXJ5LgorCiAgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuMwogICAgICAgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBhcmd1bWVudCBpcyBhZGRlZCB0byB0aGUgUmVxdWVzdCBjbGFzcy4KIAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjQKICAgICAgIERlZmF1bHQgOmF0dHI6YFJlcXVlc3QubWV0aG9kYCBtYXkgYmUgaW5kaWNhdGVkIGF0IHRoZSBjbGFzcyBsZXZlbC4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIERvIG5vdCByYWlzZSBhbiBlcnJvciBpZiB0aGUgYGBDb250ZW50LUxlbmd0aGBgIGhhcyBub3QgYmVlbgorICAgICAgcHJvdmlkZWQgYW5kICpkYXRhKiBpcyBuZWl0aGVyIGBgTm9uZWBgIG5vciBhIGJ5dGVzIG9iamVjdC4KKyAgICAgIEZhbGwgYmFjayB0byB1c2UgY2h1bmtlZCB0cmFuc2ZlciBlbmNvZGluZyBpbnN0ZWFkLgogCiAuLiBjbGFzczo6IE9wZW5lckRpcmVjdG9yKCkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdCBiL0RvYy9saWJyYXJ5L3VybGxpYi5yb2JvdHBhcnNlci5yc3QKaW5kZXggYmE3MDFjMy4uN2QzMTkzMiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvdXJsbGliLnJvYm90cGFyc2VyLnJzdAorKysgYi9Eb2MvbGlicmFyeS91cmxsaWIucm9ib3RwYXJzZXIucnN0CkBAIC01NywxNSArNTcsNDEgQEAKICAgICAgIFNldHMgdGhlIHRpbWUgdGhlIGBgcm9ib3RzLnR4dGBgIGZpbGUgd2FzIGxhc3QgZmV0Y2hlZCB0byB0aGUgY3VycmVudAogICAgICAgdGltZS4KIAorICAgLi4gbWV0aG9kOjogY3Jhd2xfZGVsYXkodXNlcmFnZW50KQogCi1UaGUgZm9sbG93aW5nIGV4YW1wbGUgZGVtb25zdHJhdGVzIGJhc2ljIHVzZSBvZiB0aGUgUm9ib3RGaWxlUGFyc2VyIGNsYXNzLgorICAgICAgUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGBgQ3Jhd2wtZGVsYXlgYCBwYXJhbWV0ZXIgZnJvbSBgYHJvYm90cy50eHRgYAorICAgICAgZm9yIHRoZSAqdXNlcmFnZW50KiBpbiBxdWVzdGlvbi4gIElmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyIG9yIGl0CisgICAgICBkb2Vzbid0IGFwcGx5IHRvIHRoZSAqdXNlcmFnZW50KiBzcGVjaWZpZWQgb3IgdGhlIGBgcm9ib3RzLnR4dGBgIGVudHJ5CisgICAgICBmb3IgdGhpcyBwYXJhbWV0ZXIgaGFzIGludmFsaWQgc3ludGF4LCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisgICAuLiBtZXRob2Q6OiByZXF1ZXN0X3JhdGUodXNlcmFnZW50KQorCisgICAgICBSZXR1cm5zIHRoZSBjb250ZW50cyBvZiB0aGUgYGBSZXF1ZXN0LXJhdGVgYCBwYXJhbWV0ZXIgZnJvbQorICAgICAgYGByb2JvdHMudHh0YGAgaW4gdGhlIGZvcm0gb2YgYSA6ZnVuYzpgfmNvbGxlY3Rpb25zLm5hbWVkdHVwbGVgCisgICAgICBgYChyZXF1ZXN0cywgc2Vjb25kcylgYC4gIElmIHRoZXJlIGlzIG5vIHN1Y2ggcGFyYW1ldGVyIG9yIGl0IGRvZXNuJ3QKKyAgICAgIGFwcGx5IHRvIHRoZSAqdXNlcmFnZW50KiBzcGVjaWZpZWQgb3IgdGhlIGBgcm9ib3RzLnR4dGBgIGVudHJ5IGZvciB0aGlzCisgICAgICBwYXJhbWV0ZXIgaGFzIGludmFsaWQgc3ludGF4LCByZXR1cm4gYGBOb25lYGAuCisKKyAgICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisKK1RoZSBmb2xsb3dpbmcgZXhhbXBsZSBkZW1vbnN0cmF0ZXMgYmFzaWMgdXNlIG9mIHRoZSA6Y2xhc3M6YFJvYm90RmlsZVBhcnNlcmAKK2NsYXNzOjoKIAogICAgPj4+IGltcG9ydCB1cmxsaWIucm9ib3RwYXJzZXIKICAgID4+PiBycCA9IHVybGxpYi5yb2JvdHBhcnNlci5Sb2JvdEZpbGVQYXJzZXIoKQogICAgPj4+IHJwLnNldF91cmwoImh0dHA6Ly93d3cubXVzaS1jYWwuY29tL3JvYm90cy50eHQiKQogICAgPj4+IHJwLnJlYWQoKQorICAgPj4+IHJyYXRlID0gcnAucmVxdWVzdF9yYXRlKCIqIikKKyAgID4+PiBycmF0ZS5yZXF1ZXN0cworICAgMworICAgPj4+IHJyYXRlLnNlY29uZHMKKyAgIDIwCisgICA+Pj4gcnAuY3Jhd2xfZGVsYXkoIioiKQorICAgNgogICAgPj4+IHJwLmNhbl9mZXRjaCgiKiIsICJodHRwOi8vd3d3Lm11c2ktY2FsLmNvbS9jZ2ktYmluL3NlYXJjaD9jaXR5PVNhbitGcmFuY2lzY28iKQogICAgRmFsc2UKICAgID4+PiBycC5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5tdXNpLWNhbC5jb20vIikKICAgIFRydWUKLQpkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvdmVudi5yc3QgYi9Eb2MvbGlicmFyeS92ZW52LnJzdAppbmRleCBhZjRhNmQxLi42YmYyNmZmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS92ZW52LnJzdAorKysgYi9Eb2MvbGlicmFyeS92ZW52LnJzdApAQCAtMzEsNDQgKzMxLDUwIEBACiAKIC4uIF92ZW52LWRlZjoKIAotLi4gbm90ZTo6IEEgdmlydHVhbCBlbnZpcm9ubWVudCAoYWxzbyBjYWxsZWQgYSBgYHZlbnZgYCkgaXMgYSBQeXRob24KLSAgIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uIGludGVycHJldGVyLCBsaWJyYXJpZXMgYW5kIHNjcmlwdHMKLSAgIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlIGluc3RhbGxlZCBpbiBvdGhlciB2aXJ0dWFsCi0gICBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcyBpbnN0YWxsZWQgaW4gYSAic3lzdGVtIiBQeXRob24sCi0gICBpLmUuIG9uZSB3aGljaCBpcyBpbnN0YWxsZWQgYXMgcGFydCBvZiB5b3VyIG9wZXJhdGluZyBzeXN0ZW0uCisuLiBub3RlOjogQSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGEgUHl0aG9uIGVudmlyb25tZW50IHN1Y2ggdGhhdCB0aGUgUHl0aG9uCisgICBpbnRlcnByZXRlciwgbGlicmFyaWVzIGFuZCBzY3JpcHRzIGluc3RhbGxlZCBpbnRvIGl0IGFyZSBpc29sYXRlZCBmcm9tIHRob3NlCisgICBpbnN0YWxsZWQgaW4gb3RoZXIgdmlydHVhbCBlbnZpcm9ubWVudHMsIGFuZCAoYnkgZGVmYXVsdCkgYW55IGxpYnJhcmllcworICAgaW5zdGFsbGVkIGluIGEgInN5c3RlbSIgUHl0aG9uLCBpLmUuLCBvbmUgd2hpY2ggaXMgaW5zdGFsbGVkIGFzIHBhcnQgb2YgeW91cgorICAgb3BlcmF0aW5nIHN5c3RlbS4KIAotICAgQSB2ZW52IGlzIGEgZGlyZWN0b3J5IHRyZWUgd2hpY2ggY29udGFpbnMgUHl0aG9uIGV4ZWN1dGFibGUgZmlsZXMgYW5kCi0gICBvdGhlciBmaWxlcyB3aGljaCBpbmRpY2F0ZSB0aGF0IGl0IGlzIGEgdmVudi4KKyAgIEEgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBhIGRpcmVjdG9yeSB0cmVlIHdoaWNoIGNvbnRhaW5zIFB5dGhvbiBleGVjdXRhYmxlCisgICBmaWxlcyBhbmQgb3RoZXIgZmlsZXMgd2hpY2ggaW5kaWNhdGUgdGhhdCBpdCBpcyBhIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKICAgIENvbW1vbiBpbnN0YWxsYXRpb24gdG9vbHMgc3VjaCBhcyBgYFNldHVwdG9vbHNgYCBhbmQgYGBwaXBgYCB3b3JrIGFzCi0gICBleHBlY3RlZCB3aXRoIHZlbnZzIC0gaS5lLiB3aGVuIGEgdmVudiBpcyBhY3RpdmUsIHRoZXkgaW5zdGFsbCBQeXRob24KLSAgIHBhY2thZ2VzIGludG8gdGhlIHZlbnYgd2l0aG91dCBuZWVkaW5nIHRvIGJlIHRvbGQgdG8gZG8gc28gZXhwbGljaXRseS4KKyAgIGV4cGVjdGVkIHdpdGggdmlydHVhbCBlbnZpcm9ubWVudHMuIEluIG90aGVyIHdvcmRzLCB3aGVuIGEgdmlydHVhbAorICAgZW52aXJvbm1lbnQgaXMgYWN0aXZlLCB0aGV5IGluc3RhbGwgUHl0aG9uIHBhY2thZ2VzIGludG8gdGhlIHZpcnR1YWwKKyAgIGVudmlyb25tZW50IHdpdGhvdXQgbmVlZGluZyB0byBiZSB0b2xkIHRvIGRvIHNvIGV4cGxpY2l0bHkuCiAKLSAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSAoaS5lLiB0aGUgdmVudidzIFB5dGhvbiBpbnRlcnByZXRlciBpcyBydW5uaW5nKSwgdGhlCi0gICBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQgOmF0dHI6YHN5cy5leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIGJhc2UKLSAgIGRpcmVjdG9yeSBvZiB0aGUgdmVudiwgd2hlcmVhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKLSAgIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgcG9pbnQgdG8gdGhlIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24KLSAgIHdoaWNoIHdhcyB1c2VkIHRvIGNyZWF0ZSB0aGUgdmVudi4gSWYgYSB2ZW52IGlzIG5vdCBhY3RpdmUsIHRoZW4KLSAgIDphdHRyOmBzeXMucHJlZml4YCBpcyB0aGUgc2FtZSBhcyA6YXR0cjpgc3lzLmJhc2VfcHJlZml4YCBhbmQKLSAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIGlzIHRoZSBzYW1lIGFzIDphdHRyOmBzeXMuYmFzZV9leGVjX3ByZWZpeGAgKHRoZXkKLSAgIGFsbCBwb2ludCB0byBhIG5vbi12ZW52IFB5dGhvbiBpbnN0YWxsYXRpb24pLgorICAgV2hlbiBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZlIChpLmUuLCB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIFB5dGhvbgorICAgaW50ZXJwcmV0ZXIgaXMgcnVubmluZyksIHRoZSBhdHRyaWJ1dGVzIDphdHRyOmBzeXMucHJlZml4YCBhbmQKKyAgIDphdHRyOmBzeXMuZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBiYXNlIGRpcmVjdG9yeSBvZiB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQsIHdoZXJlYXMgOmF0dHI6YHN5cy5iYXNlX3ByZWZpeGAgYW5kCisgICA6YXR0cjpgc3lzLmJhc2VfZXhlY19wcmVmaXhgIHBvaW50IHRvIHRoZSBub24tdmlydHVhbCBlbnZpcm9ubWVudCBQeXRob24KKyAgIGluc3RhbGxhdGlvbiB3aGljaCB3YXMgdXNlZCB0byBjcmVhdGUgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuIElmIGEgdmlydHVhbAorICAgZW52aXJvbm1lbnQgaXMgbm90IGFjdGl2ZSwgdGhlbiA6YXR0cjpgc3lzLnByZWZpeGAgaXMgdGhlIHNhbWUgYXMKKyAgIDphdHRyOmBzeXMuYmFzZV9wcmVmaXhgIGFuZCA6YXR0cjpgc3lzLmV4ZWNfcHJlZml4YCBpcyB0aGUgc2FtZSBhcworICAgOmF0dHI6YHN5cy5iYXNlX2V4ZWNfcHJlZml4YCAodGhleSBhbGwgcG9pbnQgdG8gYSBub24tdmlydHVhbCBlbnZpcm9ubWVudAorICAgUHl0aG9uIGluc3RhbGxhdGlvbikuCiAKLSAgIFdoZW4gYSB2ZW52IGlzIGFjdGl2ZSwgYW55IG9wdGlvbnMgdGhhdCBjaGFuZ2UgdGhlIGluc3RhbGxhdGlvbiBwYXRoIHdpbGwgYmUKLSAgIGlnbm9yZWQgZnJvbSBhbGwgZGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8gcHJldmVudCBwcm9qZWN0cyBiZWluZwotICAgaW5hZHZlcnRlbnRseSBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KKyAgIFdoZW4gYSB2aXJ0dWFsIGVudmlyb25tZW50IGlzIGFjdGl2ZSwgYW55IG9wdGlvbnMgdGhhdCBjaGFuZ2UgdGhlCisgICBpbnN0YWxsYXRpb24gcGF0aCB3aWxsIGJlIGlnbm9yZWQgZnJvbSBhbGwgZGlzdHV0aWxzIGNvbmZpZ3VyYXRpb24gZmlsZXMgdG8KKyAgIHByZXZlbnQgcHJvamVjdHMgYmVpbmcgaW5hZHZlcnRlbnRseSBpbnN0YWxsZWQgb3V0c2lkZSBvZiB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQuCiAKLSAgIFdoZW4gd29ya2luZyBpbiBhIGNvbW1hbmQgc2hlbGwsIHVzZXJzIGNhbiBtYWtlIGEgdmVudiBhY3RpdmUgYnkgcnVubmluZyBhbgotICAgYGBhY3RpdmF0ZWBgIHNjcmlwdCBpbiB0aGUgdmVudidzIGV4ZWN1dGFibGVzIGRpcmVjdG9yeSAodGhlIHByZWNpc2UgZmlsZW5hbWUKLSAgIGlzIHNoZWxsLWRlcGVuZGVudCksIHdoaWNoIHByZXBlbmRzIHRoZSB2ZW52J3MgZGlyZWN0b3J5IGZvciBleGVjdXRhYmxlcyB0bwotICAgdGhlIGBgUEFUSGBgIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUgcnVubmluZyBzaGVsbC4gVGhlcmUgc2hvdWxkIGJlIG5vCi0gICBuZWVkIGluIG90aGVyIGNpcmN1bXN0YW5jZXMgdG8gYWN0aXZhdGUgYSB2ZW52IC0tIHNjcmlwdHMgaW5zdGFsbGVkIGludG8KLSAgIHZlbnZzIGhhdmUgYSBzaGViYW5nIGxpbmUgd2hpY2ggcG9pbnRzIHRvIHRoZSB2ZW52J3MgUHl0aG9uIGludGVycHJldGVyLiBUaGlzCi0gICBtZWFucyB0aGF0IHRoZSBzY3JpcHQgd2lsbCBydW4gd2l0aCB0aGF0IGludGVycHJldGVyIHJlZ2FyZGxlc3Mgb2YgdGhlIHZhbHVlCi0gICBvZiBgYFBBVEhgYC4gT24gV2luZG93cywgc2hlYmFuZyBsaW5lIHByb2Nlc3NpbmcgaXMgc3VwcG9ydGVkIGlmIHlvdSBoYXZlIHRoZQotICAgUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzIGluc3RhbGxlZCAodGhpcyB3YXMgYWRkZWQgdG8gUHl0aG9uIGluIDMuMyAtIHNlZQotICAgOnBlcDpgMzk3YCBmb3IgbW9yZSBkZXRhaWxzKS4gVGh1cywgZG91YmxlLWNsaWNraW5nIGFuIGluc3RhbGxlZCBzY3JpcHQgaW4KLSAgIGEgV2luZG93cyBFeHBsb3JlciB3aW5kb3cgc2hvdWxkIHJ1biB0aGUgc2NyaXB0IHdpdGggdGhlIGNvcnJlY3QgaW50ZXJwcmV0ZXIKLSAgIHdpdGhvdXQgdGhlcmUgbmVlZGluZyB0byBiZSBhbnkgcmVmZXJlbmNlIHRvIGl0cyB2ZW52IGluIGBgUEFUSGBgLgorICAgV2hlbiB3b3JraW5nIGluIGEgY29tbWFuZCBzaGVsbCwgdXNlcnMgY2FuIG1ha2UgYSB2aXJ0dWFsIGVudmlyb25tZW50IGFjdGl2ZQorICAgYnkgcnVubmluZyBhbiBgYGFjdGl2YXRlYGAgc2NyaXB0IGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgZXhlY3V0YWJsZXMKKyAgIGRpcmVjdG9yeSAodGhlIHByZWNpc2UgZmlsZW5hbWUgaXMgc2hlbGwtZGVwZW5kZW50KSwgd2hpY2ggcHJlcGVuZHMgdGhlCisgICB2aXJ0dWFsIGVudmlyb25tZW50J3MgZGlyZWN0b3J5IGZvciBleGVjdXRhYmxlcyB0byB0aGUgYGBQQVRIYGAgZW52aXJvbm1lbnQKKyAgIHZhcmlhYmxlIGZvciB0aGUgcnVubmluZyBzaGVsbC4gVGhlcmUgc2hvdWxkIGJlIG5vIG5lZWQgaW4gb3RoZXIKKyAgIGNpcmN1bXN0YW5jZXMgdG8gYWN0aXZhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW504oCUc2NyaXB0cyBpbnN0YWxsZWQgaW50bworICAgdmlydHVhbCBlbnZpcm9ubWVudHMgaGF2ZSBhICJzaGViYW5nIiBsaW5lIHdoaWNoIHBvaW50cyB0byB0aGUgdmlydHVhbAorICAgZW52aXJvbm1lbnQncyBQeXRob24gaW50ZXJwcmV0ZXIuIFRoaXMgbWVhbnMgdGhhdCB0aGUgc2NyaXB0IHdpbGwgcnVuIHdpdGgKKyAgIHRoYXQgaW50ZXJwcmV0ZXIgcmVnYXJkbGVzcyBvZiB0aGUgdmFsdWUgb2YgYGBQQVRIYGAuIE9uIFdpbmRvd3MsICJzaGViYW5nIgorICAgbGluZSBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZCBpZiB5b3UgaGF2ZSB0aGUgUHl0aG9uIExhdW5jaGVyIGZvciBXaW5kb3dzCisgICBpbnN0YWxsZWQgKHRoaXMgd2FzIGFkZGVkIHRvIFB5dGhvbiBpbiAzLjMgLSBzZWUgOnBlcDpgMzk3YCBmb3IgbW9yZQorICAgZGV0YWlscykuIFRodXMsIGRvdWJsZS1jbGlja2luZyBhbiBpbnN0YWxsZWQgc2NyaXB0IGluIGEgV2luZG93cyBFeHBsb3JlcgorICAgd2luZG93IHNob3VsZCBydW4gdGhlIHNjcmlwdCB3aXRoIHRoZSBjb3JyZWN0IGludGVycHJldGVyIHdpdGhvdXQgdGhlcmUKKyAgIG5lZWRpbmcgdG8gYmUgYW55IHJlZmVyZW5jZSB0byBpdHMgdmlydHVhbCBlbnZpcm9ubWVudCBpbiBgYFBBVEhgYC4KIAogCiAuLiBfdmVudi1hcGk6CkBAIC04Myw3ICs4OSw4IEBACiBjcmVhdGlvbiBhY2NvcmRpbmcgdG8gdGhlaXIgbmVlZHMsIHRoZSA6Y2xhc3M6YEVudkJ1aWxkZXJgIGNsYXNzLgogCiAuLiBjbGFzczo6IEVudkJ1aWxkZXIoc3lzdGVtX3NpdGVfcGFja2FnZXM9RmFsc2UsIGNsZWFyPUZhbHNlLCBcCi0gICAgICAgICAgICAgICAgICAgICAgc3ltbGlua3M9RmFsc2UsIHVwZ3JhZGU9RmFsc2UsIHdpdGhfcGlwPUZhbHNlKQorICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzPUZhbHNlLCB1cGdyYWRlPUZhbHNlLCB3aXRoX3BpcD1GYWxzZSwgXAorICAgICAgICAgICAgICAgICAgICAgIHByb21wdD1Ob25lKQogCiAgICAgVGhlIDpjbGFzczpgRW52QnVpbGRlcmAgY2xhc3MgYWNjZXB0cyB0aGUgZm9sbG93aW5nIGtleXdvcmQgYXJndW1lbnRzIG9uCiAgICAgaW5zdGFudGlhdGlvbjoKQEAgLTEwNyw5ICsxMTQsMTYgQEAKICAgICAgIGluc3RhbGxlZCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4gVGhpcyB1c2VzIDptb2Q6YGVuc3VyZXBpcGAgd2l0aAogICAgICAgdGhlIGBgLS1kZWZhdWx0LXBpcGBgIG9wdGlvbi4KIAorICAgICogYGBwcm9tcHRgYCAtLSBhIFN0cmluZyB0byBiZSB1c2VkIGFmdGVyIHZpcnR1YWwgZW52aXJvbm1lbnQgaXMgYWN0aXZhdGVkCisgICAgICAoZGVmYXVsdHMgdG8gYGBOb25lYGAgd2hpY2ggbWVhbnMgZGlyZWN0b3J5IG5hbWUgb2YgdGhlIGVudmlyb25tZW50IHdvdWxkCisgICAgICBiZSB1c2VkKS4KKwogICAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy40CiAgICAgICAgQWRkZWQgdGhlIGBgd2l0aF9waXBgYCBwYXJhbWV0ZXIKIAorICAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorICAgICAgIEFkZGVkIHRoZSBgYHByb21wdGBgIHBhcmFtZXRlcgorCiAKICAgICBDcmVhdG9ycyBvZiB0aGlyZC1wYXJ0eSB2aXJ0dWFsIGVudmlyb25tZW50IHRvb2xzIHdpbGwgYmUgZnJlZSB0byB1c2UgdGhlCiAgICAgcHJvdmlkZWQgYGBFbnZCdWlsZGVyYGAgY2xhc3MgYXMgYSBiYXNlIGNsYXNzLgpAQCAtMjE5LDcgKzIzMyw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiBUaGUgZm9sbG93aW5nIHNjcmlwdCBzaG93cyBob3cgdG8gZXh0ZW5kIDpjbGFzczpgRW52QnVpbGRlcmAgYnkgaW1wbGVtZW50aW5nIGEKLXN1YmNsYXNzIHdoaWNoIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBpbnRvIGEgY3JlYXRlZCB2ZW52OjoKK3N1YmNsYXNzIHdoaWNoIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBpbnRvIGEgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50OjoKIAogICAgIGltcG9ydCBvcwogICAgIGltcG9ydCBvcy5wYXRoCkBAIC0yMzMsMTIgKzI0NywxMiBAQAogICAgIGNsYXNzIEV4dGVuZGVkRW52QnVpbGRlcih2ZW52LkVudkJ1aWxkZXIpOgogICAgICAgICAiIiIKICAgICAgICAgVGhpcyBidWlsZGVyIGluc3RhbGxzIHNldHVwdG9vbHMgYW5kIHBpcCBzbyB0aGF0IHlvdSBjYW4gcGlwIG9yCi0gICAgICAgIGVhc3lfaW5zdGFsbCBvdGhlciBwYWNrYWdlcyBpbnRvIHRoZSBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICBlYXN5X2luc3RhbGwgb3RoZXIgcGFja2FnZXMgaW50byB0aGUgY3JlYXRlZCB2aXJ0dWFsIGVudmlyb25tZW50LgogCiAgICAgICAgIDpwYXJhbSBub2Rpc3Q6IElmIFRydWUsIHNldHVwdG9vbHMgYW5kIHBpcCBhcmUgbm90IGluc3RhbGxlZCBpbnRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgICAgIDpwYXJhbSBub3BpcDogSWYgVHJ1ZSwgcGlwIGlzIG5vdCBpbnN0YWxsZWQgaW50byB0aGUgY3JlYXRlZAotICAgICAgICAgICAgICAgICAgICAgIGVudmlyb25tZW50LgorICAgICAgICAgICAgICAgICAgICAgIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAgICAgICAgIDpwYXJhbSBwcm9ncmVzczogSWYgc2V0dXB0b29scyBvciBwaXAgYXJlIGluc3RhbGxlZCwgdGhlIHByb2dyZXNzIG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxhdGlvbiBjYW4gYmUgbW9uaXRvcmVkIGJ5IHBhc3NpbmcgYSBwcm9ncmVzcwogICAgICAgICAgICAgICAgICAgICAgICAgIGNhbGxhYmxlLiBJZiBzcGVjaWZpZWQsIGl0IGlzIGNhbGxlZCB3aXRoIHR3bwpAQCAtMjY0LDEwICsyNzgsMTAgQEAKICAgICAgICAgZGVmIHBvc3Rfc2V0dXAoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIFNldCB1cCBhbnkgcGFja2FnZXMgd2hpY2ggbmVlZCB0byBiZSBwcmUtaW5zdGFsbGVkIGludG8gdGhlCi0gICAgICAgICAgICBlbnZpcm9ubWVudCBiZWluZyBjcmVhdGVkLgorICAgICAgICAgICAgdmlydHVhbCBlbnZpcm9ubWVudCBiZWluZyBjcmVhdGVkLgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIG9zLmVudmlyb25bJ1ZJUlRVQUxfRU5WJ10gPSBjb250ZXh0LmVudl9kaXIKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLm5vZGlzdDoKQEAgLTMwMSw3ICszMTUsNyBAQAogICAgICAgICAgICAgZm4gPSBvcy5wYXRoLnNwbGl0KHBhdGgpWy0xXQogICAgICAgICAgICAgYmlucGF0aCA9IGNvbnRleHQuYmluX3BhdGgKICAgICAgICAgICAgIGRpc3RwYXRoID0gb3MucGF0aC5qb2luKGJpbnBhdGgsIGZuKQotICAgICAgICAgICAgIyBEb3dubG9hZCBzY3JpcHQgaW50byB0aGUgZW52J3MgYmluYXJpZXMgZm9sZGVyCisgICAgICAgICAgICAjIERvd25sb2FkIHNjcmlwdCBpbnRvIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJpZXMgZm9sZGVyCiAgICAgICAgICAgICB1cmxyZXRyaWV2ZSh1cmwsIGRpc3RwYXRoKQogICAgICAgICAgICAgcHJvZ3Jlc3MgPSBzZWxmLnByb2dyZXNzCiAgICAgICAgICAgICBpZiBzZWxmLnZlcmJvc2U6CkBAIC0zMTMsNyArMzI3LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnSW5zdGFsbGluZyAlcyAuLi4lcycgJSAobmFtZSwgdGVybSkpCiAgICAgICAgICAgICAgICAgc3lzLnN0ZGVyci5mbHVzaCgpCi0gICAgICAgICAgICAjIEluc3RhbGwgaW4gdGhlIGVudgorICAgICAgICAgICAgIyBJbnN0YWxsIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CiAgICAgICAgICAgICBhcmdzID0gW2NvbnRleHQuZW52X2V4ZSwgZm5dCiAgICAgICAgICAgICBwID0gUG9wZW4oYXJncywgc3Rkb3V0PVBJUEUsIHN0ZGVycj1QSVBFLCBjd2Q9YmlucGF0aCkKICAgICAgICAgICAgIHQxID0gVGhyZWFkKHRhcmdldD1zZWxmLnJlYWRlciwgYXJncz0ocC5zdGRvdXQsICdzdGRvdXQnKSkKQEAgLTMzMiwxMCArMzQ2LDEwIEBACiAKICAgICAgICAgZGVmIGluc3RhbGxfc2V0dXB0b29scyhzZWxmLCBjb250ZXh0KToKICAgICAgICAgICAgICIiIgotICAgICAgICAgICAgSW5zdGFsbCBzZXR1cHRvb2xzIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEluc3RhbGwgc2V0dXB0b29scyBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudC4KIAotICAgICAgICAgICAgOnBhcmFtIGNvbnRleHQ6IFRoZSBpbmZvcm1hdGlvbiBmb3IgdGhlIGVudmlyb25tZW50IGNyZWF0aW9uIHJlcXVlc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWluZyBwcm9jZXNzZWQuCisgICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgdmlydHVhbCBlbnZpcm9ubWVudAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0aW9uIHJlcXVlc3QgYmVpbmcgcHJvY2Vzc2VkLgogICAgICAgICAgICAgIiIiCiAgICAgICAgICAgICB1cmwgPSAnaHR0cHM6Ly9iaXRidWNrZXQub3JnL3B5cGEvc2V0dXB0b29scy9kb3dubG9hZHMvZXpfc2V0dXAucHknCiAgICAgICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0KGNvbnRleHQsICdzZXR1cHRvb2xzJywgdXJsKQpAQCAtMzQ4LDEwICszNjIsMTAgQEAKIAogICAgICAgICBkZWYgaW5zdGFsbF9waXAoc2VsZiwgY29udGV4dCk6CiAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgIEluc3RhbGwgcGlwIGluIHRoZSBlbnZpcm9ubWVudC4KKyAgICAgICAgICAgIEluc3RhbGwgcGlwIGluIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50LgogCi0gICAgICAgICAgICA6cGFyYW0gY29udGV4dDogVGhlIGluZm9ybWF0aW9uIGZvciB0aGUgZW52aXJvbm1lbnQgY3JlYXRpb24gcmVxdWVzdAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlaW5nIHByb2Nlc3NlZC4KKyAgICAgICAgICAgIDpwYXJhbSBjb250ZXh0OiBUaGUgaW5mb3JtYXRpb24gZm9yIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRpb24gcmVxdWVzdCBiZWluZyBwcm9jZXNzZWQuCiAgICAgICAgICAgICAiIiIKICAgICAgICAgICAgIHVybCA9ICdodHRwczovL3Jhdy5naXRodWIuY29tL3B5cGEvcGlwL21hc3Rlci9jb250cmliL2dldC1waXAucHknCiAgICAgICAgICAgICBzZWxmLmluc3RhbGxfc2NyaXB0KGNvbnRleHQsICdwaXAnLCB1cmwpCkBAIC0zNzQsNyArMzg4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdtb3JlIHRhcmdldCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3JpZXMuJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJ2RpcnMnLCBtZXRhdmFyPSdFTlZfRElSJywgbmFyZ3M9JysnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J0EgZGlyZWN0b3J5IGluIHdoaWNoIHRvIGNyZWF0ZSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmlydHVhbCBlbnZpcm9ubWVudC4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS1uby1zZXR1cHRvb2xzJywgZGVmYXVsdD1GYWxzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywgZGVzdD0nbm9kaXN0JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iRG9uJ3QgaW5zdGFsbCBzZXR1cHRvb2xzIG9yIHBpcCBpbiB0aGUgIgpAQCAtMzk4LDE0ICs0MTMsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGhlIHBsYXRmb3JtLicpCiAgICAgICAgICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctLWNsZWFyJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nY2xlYXInLCBoZWxwPSdEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZGlyZWN0b3J5IGlmIGl0ICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdhbHJlYWR5IGV4aXN0cywgYmVmb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2aXJ0dWFsIGVudmlyb25tZW50ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXJlY3RvcnkgaWYgaXQgYWxyZWFkeSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZXhpc3RzLCBiZWZvcmUgdmlydHVhbCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgY3JlYXRpb24uJykKICAgICAgICAgICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy0tdXBncmFkZScsIGRlZmF1bHQ9RmFsc2UsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3VwZ3JhZGUnLCBoZWxwPSdVcGdyYWRlIHRoZSBlbnZpcm9ubWVudCAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24gJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29mIFB5dGhvbiwgYXNzdW1pbmcgUHl0aG9uICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4nKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0PSd1cGdyYWRlJywgaGVscD0nVXBncmFkZSB0aGUgdmlydHVhbCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBkaXJlY3RvcnkgdG8gJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndXNlIHRoaXMgdmVyc2lvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdQeXRob24sIGFzc3VtaW5nIFB5dGhvbiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdoYXMgYmVlbiB1cGdyYWRlZCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbi1wbGFjZS4nKQogICAgICAgICAgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLS12ZXJib3NlJywgZGVmYXVsdD1GYWxzZSwgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0ndmVyYm9zZScsIGhlbHA9J0Rpc3BsYXkgdGhlIG91dHB1dCAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZnJvbSB0aGUgc2NyaXB0cyB3aGljaCAnCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QgYi9Eb2MvbGlicmFyeS93YXJuaW5ncy5yc3QKaW5kZXggMzdmNjg3NC4uNWE0MmNjNiAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2FybmluZ3MucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dhcm5pbmdzLnJzdApAQCAtMzAxLDcgKzMwMSw3IEBACiAtLS0tLS0tLS0tLS0tLS0tLS0tCiAKIAotLi4gZnVuY3Rpb246OiB3YXJuKG1lc3NhZ2UsIGNhdGVnb3J5PU5vbmUsIHN0YWNrbGV2ZWw9MSkKKy4uIGZ1bmN0aW9uOjogd2FybihtZXNzYWdlLCBjYXRlZ29yeT1Ob25lLCBzdGFja2xldmVsPTEsIHNvdXJjZT1Ob25lKQogCiAgICBJc3N1ZSBhIHdhcm5pbmcsIG9yIG1heWJlIGlnbm9yZSBpdCBvciByYWlzZSBhbiBleGNlcHRpb24uICBUaGUgKmNhdGVnb3J5KgogICAgYXJndW1lbnQsIGlmIGdpdmVuLCBtdXN0IGJlIGEgd2FybmluZyBjYXRlZ29yeSBjbGFzcyAoc2VlIGFib3ZlKTsgaXQgZGVmYXVsdHMgdG8KQEAgLTMxOSw4ICszMTksMTQgQEAKICAgIHNvdXJjZSBvZiA6ZnVuYzpgZGVwcmVjYXRpb25gIGl0c2VsZiAoc2luY2UgdGhlIGxhdHRlciB3b3VsZCBkZWZlYXQgdGhlIHB1cnBvc2UKICAgIG9mIHRoZSB3YXJuaW5nIG1lc3NhZ2UpLgogCisgICAqc291cmNlKiwgaWYgc3VwcGxpZWQsIGlzIHRoZSBkZXN0cm95ZWQgb2JqZWN0IHdoaWNoIGVtaXR0ZWQgYQorICAgOmV4YzpgUmVzb3VyY2VXYXJuaW5nYC4KIAotLi4gZnVuY3Rpb246OiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSkKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCAqc291cmNlKiBwYXJhbWV0ZXIuCisKKworLi4gZnVuY3Rpb246OiB3YXJuX2V4cGxpY2l0KG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGU9Tm9uZSwgcmVnaXN0cnk9Tm9uZSwgbW9kdWxlX2dsb2JhbHM9Tm9uZSwgc291cmNlPU5vbmUpCiAKICAgIFRoaXMgaXMgYSBsb3ctbGV2ZWwgaW50ZXJmYWNlIHRvIHRoZSBmdW5jdGlvbmFsaXR5IG9mIDpmdW5jOmB3YXJuYCwgcGFzc2luZyBpbgogICAgZXhwbGljaXRseSB0aGUgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lIGFuZCBsaW5lIG51bWJlciwgYW5kIG9wdGlvbmFsbHkgdGhlCkBAIC0zMzYsNiArMzQyLDEyIEBACiAgICBzb3VyY2UgZm9yIG1vZHVsZXMgZm91bmQgaW4gemlwZmlsZXMgb3Igb3RoZXIgbm9uLWZpbGVzeXN0ZW0gaW1wb3J0CiAgICBzb3VyY2VzKS4KIAorICAgKnNvdXJjZSosIGlmIHN1cHBsaWVkLCBpcyB0aGUgZGVzdHJveWVkIG9iamVjdCB3aGljaCBlbWl0dGVkIGEKKyAgIDpleGM6YFJlc291cmNlV2FybmluZ2AuCisKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGQgdGhlICpzb3VyY2UqIHBhcmFtZXRlci4KKwogCiAuLiBmdW5jdGlvbjo6IHNob3d3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSkKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnJlZy5yc3QKaW5kZXggNTJkNTkxYS4uNDhiZGYxNCAxMDA2NDQKLS0tIGEvRG9jL2xpYnJhcnkvd2lucmVnLnJzdAorKysgYi9Eb2MvbGlicmFyeS93aW5yZWcucnN0CkBAIC02MzUsNyArNjM1LDcgQEAKIAogLi4gZGF0YTo6IFJFR19EV09SRF9MSVRUTEVfRU5ESUFOCiAKLSAgIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byA6Y29uc3Q6YFJFR19EV09SRGAuCiAKIC4uIGRhdGE6OiBSRUdfRFdPUkRfQklHX0VORElBTgogCkBAIC02NTksNiArNjU5LDE4IEBACiAKICAgIE5vIGRlZmluZWQgdmFsdWUgdHlwZS4KIAorLi4gZGF0YTo6IFJFR19RV09SRAorCisgICBBIDY0LWJpdCBudW1iZXIuCisKKyAgIC4uIHZlcnNpb25hZGRlZDo6IDMuNgorCisuLiBkYXRhOjogUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4KKworICAgQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIDpjb25zdDpgUkVHX1FXT1JEYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKIC4uIGRhdGE6OiBSRUdfUkVTT1VSQ0VfTElTVAogCiAgICBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC4KZGlmZiAtLWdpdCBhL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdCBiL0RvYy9saWJyYXJ5L3dpbnNvdW5kLnJzdAppbmRleCBkMmM0MjEwLi4zNzJmNzkyIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS93aW5zb3VuZC5yc3QKKysrIGIvRG9jL2xpYnJhcnkvd2luc291bmQucnN0CkBAIC0yNSw3ICsyNSw4IEBACiAuLiBmdW5jdGlvbjo6IFBsYXlTb3VuZChzb3VuZCwgZmxhZ3MpCiAKICAgIENhbGwgdGhlIHVuZGVybHlpbmcgOmM6ZnVuYzpgUGxheVNvdW5kYCBmdW5jdGlvbiBmcm9tIHRoZSBQbGF0Zm9ybSBBUEkuICBUaGUKLSAgICpzb3VuZCogcGFyYW1ldGVyIG1heSBiZSBhIGZpbGVuYW1lLCBhdWRpbyBkYXRhIGFzIGEgc3RyaW5nLCBvciBgYE5vbmVgYC4gIEl0cworICAgKnNvdW5kKiBwYXJhbWV0ZXIgbWF5IGJlIGEgZmlsZW5hbWUsIGEgc3lzdGVtIHNvdW5kIGFsaWFzLCBhdWRpbyBkYXRhIGFzIGEKKyAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAsIG9yIGBgTm9uZWBgLiAgSXRzCiAgICBpbnRlcnByZXRhdGlvbiBkZXBlbmRzIG9uIHRoZSB2YWx1ZSBvZiAqZmxhZ3MqLCB3aGljaCBjYW4gYmUgYSBiaXR3aXNlIE9SZWQKICAgIGNvbWJpbmF0aW9uIG9mIHRoZSBjb25zdGFudHMgZGVzY3JpYmVkIGJlbG93LiBJZiB0aGUgKnNvdW5kKiBwYXJhbWV0ZXIgaXMKICAgIGBgTm9uZWBgLCBhbnkgY3VycmVudGx5IHBsYXlpbmcgd2F2ZWZvcm0gc291bmQgaXMgc3RvcHBlZC4gSWYgdGhlIHN5c3RlbQpAQCAtMzksNyArNDAsOCBAQAogICAgc291bmQgdG8gcGxheTsgcG9zc2libGUgdmFsdWVzIGFyZSBgYC0xYGAsIGBgTUJfSUNPTkFTVEVSSVNLYGAsCiAgICBgYE1CX0lDT05FWENMQU1BVElPTmBgLCBgYE1CX0lDT05IQU5EYGAsIGBgTUJfSUNPTlFVRVNUSU9OYGAsIGFuZCBgYE1CX09LYGAsIGFsbAogICAgZGVzY3JpYmVkIGJlbG93LiAgVGhlIHZhbHVlIGBgLTFgYCBwcm9kdWNlcyBhICJzaW1wbGUgYmVlcCI7IHRoaXMgaXMgdGhlIGZpbmFsCi0gICBmYWxsYmFjayBpZiBhIHNvdW5kIGNhbm5vdCBiZSBwbGF5ZWQgb3RoZXJ3aXNlLgorICAgZmFsbGJhY2sgaWYgYSBzb3VuZCBjYW5ub3QgYmUgcGxheWVkIG90aGVyd2lzZS4gIElmIHRoZSBzeXN0ZW0gaW5kaWNhdGVzIGFuCisgICBlcnJvciwgOmV4YzpgUnVudGltZUVycm9yYCBpcyByYWlzZWQuCiAKIAogLi4gZGF0YTo6IFNORF9GSUxFTkFNRQpAQCAtOTIsNyArOTQsNyBAQAogLi4gZGF0YTo6IFNORF9NRU1PUlkKIAogICAgVGhlICpzb3VuZCogcGFyYW1ldGVyIHRvIDpmdW5jOmBQbGF5U291bmRgIGlzIGEgbWVtb3J5IGltYWdlIG9mIGEgV0FWIGZpbGUsIGFzIGEKLSAgIHN0cmluZy4KKyAgIDp0ZXJtOmBieXRlcy1saWtlIG9iamVjdGAuCiAKICAgIC4uIG5vdGU6OgogCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS93c2dpcmVmLnJzdCBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CmluZGV4IGFhZDI3YTguLmExZDQ0NjkgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CisrKyBiL0RvYy9saWJyYXJ5L3dzZ2lyZWYucnN0CkBAIC0xMzMsOSArMTMzLDkgQEAKICAgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZW52aXJvbi5pdGVtcygpXQogICAgICAgICAgIHJldHVybiByZXQKIAotICAgICAgaHR0cGQgPSBtYWtlX3NlcnZlcignJywgODAwMCwgc2ltcGxlX2FwcCkKLSAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgIHdpdGggbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHNpbXBsZV9hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJTZXJ2aW5nIG9uIHBvcnQgODAwMC4uLiIpCisgICAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCiAKIAogSW4gYWRkaXRpb24gdG8gdGhlIGVudmlyb25tZW50IGZ1bmN0aW9ucyBhYm92ZSwgdGhlIDptb2Q6YHdzZ2lyZWYudXRpbGAgbW9kdWxlCkBAIC0yODUsMTQgKzI4NSwxNCBAQAogCiAgICAgICBmcm9tIHdzZ2lyZWYuc2ltcGxlX3NlcnZlciBpbXBvcnQgbWFrZV9zZXJ2ZXIsIGRlbW9fYXBwCiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIGRlbW9fYXBwKQotICAgICAgcHJpbnQoIlNlcnZpbmcgSFRUUCBvbiBwb3J0IDgwMDAuLi4iKQorICAgICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgZGVtb19hcHApIGFzIGh0dHBkOgorICAgICAgICAgIHByaW50KCJTZXJ2aW5nIEhUVFAgb24gcG9ydCA4MDAwLi4uIikKIAotICAgICAgIyBSZXNwb25kIHRvIHJlcXVlc3RzIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCi0gICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgICAjIFJlc3BvbmQgdG8gcmVxdWVzdHMgdW50aWwgcHJvY2VzcyBpcyBraWxsZWQKKyAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKIAotICAgICAgIyBBbHRlcm5hdGl2ZTogc2VydmUgb25lIHJlcXVlc3QsIHRoZW4gZXhpdAotICAgICAgaHR0cGQuaGFuZGxlX3JlcXVlc3QoKQorICAgICAgICAgICMgQWx0ZXJuYXRpdmU6IHNlcnZlIG9uZSByZXF1ZXN0LCB0aGVuIGV4aXQKKyAgICAgICAgICBodHRwZC5oYW5kbGVfcmVxdWVzdCgpCiAKIAogLi4gZnVuY3Rpb246OiBkZW1vX2FwcChlbnZpcm9uLCBzdGFydF9yZXNwb25zZSkKQEAgLTQzMiw5ICs0MzIsOSBAQAogICAgICAgIyBUaGlzIGlzIHRoZSBhcHBsaWNhdGlvbiB3cmFwcGVkIGluIGEgdmFsaWRhdG9yCiAgICAgICB2YWxpZGF0b3JfYXBwID0gdmFsaWRhdG9yKHNpbXBsZV9hcHApCiAKLSAgICAgIGh0dHBkID0gbWFrZV9zZXJ2ZXIoJycsIDgwMDAsIHZhbGlkYXRvcl9hcHApCi0gICAgICBwcmludCgiTGlzdGVuaW5nIG9uIHBvcnQgODAwMC4uLi4iKQotICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCisgICAgICB3aXRoIG1ha2Vfc2VydmVyKCcnLCA4MDAwLCB2YWxpZGF0b3JfYXBwKSBhcyBodHRwZDoKKyAgICAgICAgICBwcmludCgiTGlzdGVuaW5nIG9uIHBvcnQgODAwMC4uLi4iKQorICAgICAgICAgIGh0dHBkLnNlcnZlX2ZvcmV2ZXIoKQogCiAKIDptb2Q6YHdzZ2lyZWYuaGFuZGxlcnNgIC0tIHNlcnZlci9nYXRld2F5IGJhc2UgY2xhc3NlcwpAQCAtNzc0LDggKzc3NCw4IEBACiAgICAgICAgIyBUaGUgcmV0dXJuZWQgb2JqZWN0IGlzIGdvaW5nIHRvIGJlIHByaW50ZWQKICAgICAgICByZXR1cm4gW2IiSGVsbG8gV29ybGQiXQogCi0gICBodHRwZCA9IG1ha2Vfc2VydmVyKCcnLCA4MDAwLCBoZWxsb193b3JsZF9hcHApCi0gICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQorICAgd2l0aCBtYWtlX3NlcnZlcignJywgODAwMCwgaGVsbG9fd29ybGRfYXBwKSBhcyBodHRwZDoKKyAgICAgICBwcmludCgiU2VydmluZyBvbiBwb3J0IDgwMDAuLi4iKQogCi0gICAjIFNlcnZlIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCi0gICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAjIFNlcnZlIHVudGlsIHByb2Nlc3MgaXMga2lsbGVkCisgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS94bWxycGMuY2xpZW50LnJzdCBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CmluZGV4IGRhZDdhMDIuLjM5MDgyOGUgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CisrKyBiL0RvYy9saWJyYXJ5L3htbHJwYy5jbGllbnQucnN0CkBAIC04OCw5ICs4OCwxMyBAQAogICAgKz09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSsKICAgIHwgYGBib29sZWFuYGAgICAgICAgICAgfCA6Y2xhc3M6YGJvb2xgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGludGBgIG9yIGBgaTRgYCAgICB8IDpjbGFzczpgaW50YCBpbiByYW5nZSBmcm9tIC0yMTQ3NDgzNjQ4IHRvIDIxNDc0ODM2NDcuIHwKKyAgIHwgYGBpbnRgYCwgYGBpMWBgLCAgICAgfCA6Y2xhc3M6YGludGAgaW4gcmFuZ2UgZnJvbSAtMjE0NzQ4MzY0OCB0byAyMTQ3NDgzNjQ3LiB8CisgICB8IGBgaTJgYCwgIGBgaTRgYCwgICAgIHwgVmFsdWVzIGdldCB0aGUgYGA8aW50PmBgIHRhZy4gICAgICAgICAgICAgICAgICAgICAgICAgfAorICAgfCBgYGk4YGAgb3IgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBiaWdpbnRlZ2VyYGAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgfCBgYGRvdWJsZWBgICAgICAgICAgICB8IDpjbGFzczpgZmxvYXRgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgIHwgYGBkb3VibGVgYCBvciAgICAgICAgfCA6Y2xhc3M6YGZsb2F0YC4gIFZhbHVlcyBnZXQgdGhlIGBgPGRvdWJsZT5gYCB0YWcuICAgICB8CisgICB8IGBgZmxvYXRgYCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAogICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKICAgIHwgYGBzdHJpbmdgYCAgICAgICAgICAgfCA6Y2xhc3M6YHN0cmAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8CiAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwpAQCAtMTE0LDYgKzExOCw4IEBACiAgICB8IGBgbmlsYGAgICAgICAgICAgICAgIHwgVGhlIGBgTm9uZWBgIGNvbnN0YW50LiAgUGFzc2luZyBpcyBhbGxvd2VkIG9ubHkgaWYgICAgfAogICAgfCAgICAgICAgICAgICAgICAgICAgICB8ICphbGxvd19ub25lKiBpcyB0cnVlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICB8IGBgYmlnZGVjaW1hbGBgICAgICAgIHwgOmNsYXNzOmBkZWNpbWFsLkRlY2ltYWxgLiAgUmV0dXJuZWQgdHlwZSBvbmx5LiAgICAgICAgfAorICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIAogICAgVGhpcyBpcyB0aGUgZnVsbCBzZXQgb2YgZGF0YSB0eXBlcyBzdXBwb3J0ZWQgYnkgWE1MLVJQQy4gIE1ldGhvZCBjYWxscyBtYXkgYWxzbwogICAgcmFpc2UgYSBzcGVjaWFsIDpleGM6YEZhdWx0YCBpbnN0YW5jZSwgdXNlZCB0byBzaWduYWwgWE1MLVJQQyBzZXJ2ZXIgZXJyb3JzLCBvcgpAQCAtMTM3LDYgKzE0MywxMyBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjUKICAgICAgIEFkZGVkIHRoZSAqY29udGV4dCogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBBZGRlZCBzdXBwb3J0IG9mIHR5cGUgdGFncyB3aXRoIHByZWZpeGVzIChlLmcuIGBgZXg6bmlsYGApLgorICAgICAgQWRkZWQgc3VwcG9ydCBvZiB1bm1hcnNhbGxpbmcgYWRkaXRpb25hbCB0eXBlcyB1c2VkIGJ5IEFwYWNoZSBYTUwtUlBDCisgICAgICBpbXBsZW1lbnRhdGlvbiBmb3IgbnVtZXJpY3M6IGBgaTFgYCwgYGBpMmBgLCBgYGk4YGAsIGBgYmlnaW50ZWdlcmBgLAorICAgICAgYGBmbG9hdGBgIGFuZCBgYGJpZ2RlY2ltYWxgYC4KKyAgICAgIFNlZSBodHRwOi8vd3MuYXBhY2hlLm9yZy94bWxycGMvdHlwZXMuaHRtbCBmb3IgYSBkZXNjcmlwdGlvbi4KKwogCiAuLiBzZWVhbHNvOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkveG1scnBjLnNlcnZlci5yc3QgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAppbmRleCAxYzc3ZTg0Li4wNTExZGRmIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdAorKysgYi9Eb2MvbGlicmFyeS94bWxycGMuc2VydmVyLnJzdApAQCAtMTQ4LDI5ICsxNDgsMjkgQEAKICAgICAgICBycGNfcGF0aHMgPSAoJy9SUEMyJywpCiAKICAgICMgQ3JlYXRlIHNlcnZlcgotICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVxdWVzdEhhbmRsZXI9UmVxdWVzdEhhbmRsZXIpCi0gICBzZXJ2ZXIucmVnaXN0ZXJfaW50cm9zcGVjdGlvbl9mdW5jdGlvbnMoKQorICAgd2l0aCBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlcXVlc3RIYW5kbGVyPVJlcXVlc3RIYW5kbGVyKSBhcyBzZXJ2ZXI6CisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2ludHJvc3BlY3Rpb25fZnVuY3Rpb25zKCkKIAotICAgIyBSZWdpc3RlciBwb3coKSBmdW5jdGlvbjsgdGhpcyB3aWxsIHVzZSB0aGUgdmFsdWUgb2YKLSAgICMgcG93Ll9fbmFtZV9fIGFzIHRoZSBuYW1lLCB3aGljaCBpcyBqdXN0ICdwb3cnLgotICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKKyAgICAgICAjIFJlZ2lzdGVyIHBvdygpIGZ1bmN0aW9uOyB0aGlzIHdpbGwgdXNlIHRoZSB2YWx1ZSBvZgorICAgICAgICMgcG93Ll9fbmFtZV9fIGFzIHRoZSBuYW1lLCB3aGljaCBpcyBqdXN0ICdwb3cnLgorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihwb3cpCiAKLSAgICMgUmVnaXN0ZXIgYSBmdW5jdGlvbiB1bmRlciBhIGRpZmZlcmVudCBuYW1lCi0gICBkZWYgYWRkZXJfZnVuY3Rpb24oeCx5KToKLSAgICAgICByZXR1cm4geCArIHkKLSAgIHNlcnZlci5yZWdpc3Rlcl9mdW5jdGlvbihhZGRlcl9mdW5jdGlvbiwgJ2FkZCcpCisgICAgICAgIyBSZWdpc3RlciBhIGZ1bmN0aW9uIHVuZGVyIGEgZGlmZmVyZW50IG5hbWUKKyAgICAgICBkZWYgYWRkZXJfZnVuY3Rpb24oeCx5KToKKyAgICAgICAgICAgcmV0dXJuIHggKyB5CisgICAgICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKGFkZGVyX2Z1bmN0aW9uLCAnYWRkJykKIAotICAgIyBSZWdpc3RlciBhbiBpbnN0YW5jZTsgYWxsIHRoZSBtZXRob2RzIG9mIHRoZSBpbnN0YW5jZSBhcmUKLSAgICMgcHVibGlzaGVkIGFzIFhNTC1SUEMgbWV0aG9kcyAoaW4gdGhpcyBjYXNlLCBqdXN0ICdtdWwnKS4KLSAgIGNsYXNzIE15RnVuY3M6Ci0gICAgICAgZGVmIG11bChzZWxmLCB4LCB5KToKLSAgICAgICAgICAgcmV0dXJuIHggKiB5CisgICAgICAgIyBSZWdpc3RlciBhbiBpbnN0YW5jZTsgYWxsIHRoZSBtZXRob2RzIG9mIHRoZSBpbnN0YW5jZSBhcmUKKyAgICAgICAjIHB1Ymxpc2hlZCBhcyBYTUwtUlBDIG1ldGhvZHMgKGluIHRoaXMgY2FzZSwganVzdCAnbXVsJykuCisgICAgICAgY2xhc3MgTXlGdW5jczoKKyAgICAgICAgICAgZGVmIG11bChzZWxmLCB4LCB5KToKKyAgICAgICAgICAgICAgIHJldHVybiB4ICogeQogCi0gICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoTXlGdW5jcygpKQorICAgICAgIHNlcnZlci5yZWdpc3Rlcl9pbnN0YW5jZShNeUZ1bmNzKCkpCiAKLSAgICMgUnVuIHRoZSBzZXJ2ZXIncyBtYWluIGxvb3AKLSAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAjIFJ1biB0aGUgc2VydmVyJ3MgbWFpbiBsb29wCisgICAgICAgc2VydmVyLnNlcnZlX2ZvcmV2ZXIoKQogCiBUaGUgZm9sbG93aW5nIGNsaWVudCBjb2RlIHdpbGwgY2FsbCB0aGUgbWV0aG9kcyBtYWRlIGF2YWlsYWJsZSBieSB0aGUgcHJlY2VkaW5nCiBzZXJ2ZXI6OgpAQCAtMjA3LDE4ICsyMDcsMTcgQEAKICAgICAgICAgICAgIGRlZiBnZXRDdXJyZW50VGltZSgpOgogICAgICAgICAgICAgICAgIHJldHVybiBkYXRldGltZS5kYXRldGltZS5ub3coKQogCi0gICAgc2VydmVyID0gU2ltcGxlWE1MUlBDU2VydmVyKCgibG9jYWxob3N0IiwgODAwMCkpCi0gICAgc2VydmVyLnJlZ2lzdGVyX2Z1bmN0aW9uKHBvdykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKLSAgICBzZXJ2ZXIucmVnaXN0ZXJfaW5zdGFuY2UoRXhhbXBsZVNlcnZpY2UoKSwgYWxsb3dfZG90dGVkX25hbWVzPVRydWUpCi0gICAgc2VydmVyLnJlZ2lzdGVyX211bHRpY2FsbF9mdW5jdGlvbnMoKQotICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCi0gICAgdHJ5OgotICAgICAgICBzZXJ2ZXIuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKLSAgICAgICAgc2VydmVyLnNlcnZlcl9jbG9zZSgpCi0gICAgICAgIHN5cy5leGl0KDApCisgICAgd2l0aCBTaW1wbGVYTUxSUENTZXJ2ZXIoKCJsb2NhbGhvc3QiLCA4MDAwKSkgYXMgc2VydmVyOgorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24ocG93KQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfZnVuY3Rpb24obGFtYmRhIHgseTogeCt5LCAnYWRkJykKKyAgICAgICAgc2VydmVyLnJlZ2lzdGVyX2luc3RhbmNlKEV4YW1wbGVTZXJ2aWNlKCksIGFsbG93X2RvdHRlZF9uYW1lcz1UcnVlKQorICAgICAgICBzZXJ2ZXIucmVnaXN0ZXJfbXVsdGljYWxsX2Z1bmN0aW9ucygpCisgICAgICAgIHByaW50KCdTZXJ2aW5nIFhNTC1SUEMgb24gbG9jYWxob3N0IHBvcnQgODAwMCcpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNlcnZlci5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQogCiBUaGlzIEV4YW1wbGVTZXJ2aWNlIGRlbW8gY2FuIGJlIGludm9rZWQgZnJvbSB0aGUgY29tbWFuZCBsaW5lOjoKIApkaWZmIC0tZ2l0IGEvRG9jL2xpYnJhcnkvemlwZmlsZS5yc3QgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAppbmRleCAxZDY1MjZjLi5iZjUyZmEzIDEwMDY0NAotLS0gYS9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdAorKysgYi9Eb2MvbGlicmFyeS96aXBmaWxlLnJzdApAQCAtMTQ3LDEwICsxNDcsMTAgQEAKICAgICpjb21wcmVzc2lvbiogaXMgdGhlIFpJUCBjb21wcmVzc2lvbiBtZXRob2QgdG8gdXNlIHdoZW4gd3JpdGluZyB0aGUgYXJjaGl2ZSwKICAgIGFuZCBzaG91bGQgYmUgOmNvbnN0OmBaSVBfU1RPUkVEYCwgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgOyB1bnJlY29nbml6ZWQKLSAgIHZhbHVlcyB3aWxsIGNhdXNlIDpleGM6YFJ1bnRpbWVFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAorICAgdmFsdWVzIHdpbGwgY2F1c2UgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAgdG8gYmUgcmFpc2VkLiAgSWYgOmNvbnN0OmBaSVBfREVGTEFURURgLAogICAgOmNvbnN0OmBaSVBfQlpJUDJgIG9yIDpjb25zdDpgWklQX0xaTUFgIGlzIHNwZWNpZmllZCBidXQgdGhlIGNvcnJlc3BvbmRpbmcgbW9kdWxlCiAgICAoOm1vZDpgemxpYmAsIDptb2Q6YGJ6MmAgb3IgOm1vZDpgbHptYWApIGlzIG5vdCBhdmFpbGFibGUsIDpleGM6YFJ1bnRpbWVFcnJvcmAKLSAgIGlzIGFsc28gcmFpc2VkLiBUaGUgZGVmYXVsdCBpcyA6Y29uc3Q6YFpJUF9TVE9SRURgLiAgSWYgKmFsbG93WmlwNjQqIGlzCisgICBpcyByYWlzZWQuIFRoZSBkZWZhdWx0IGlzIDpjb25zdDpgWklQX1NUT1JFRGAuICBJZiAqYWxsb3daaXA2NCogaXMKICAgIGBgVHJ1ZWBgICh0aGUgZGVmYXVsdCkgemlwZmlsZSB3aWxsIGNyZWF0ZSBaSVAgZmlsZXMgdGhhdCB1c2UgdGhlIFpJUDY0CiAgICBleHRlbnNpb25zIHdoZW4gdGhlIHppcGZpbGUgaXMgbGFyZ2VyIHRoYW4gMiBHaUIuIElmIGl0IGlzICBmYWxzZSA6bW9kOmB6aXBmaWxlYAogICAgd2lsbCByYWlzZSBhbiBleGNlcHRpb24gd2hlbiB0aGUgWklQIGZpbGUgd291bGQgcmVxdWlyZSBaSVA2NCBleHRlbnNpb25zLgpAQCAtMTc5LDYgKzE3OSwxMCBAQAogICAgICAgQWRkZWQgc3VwcG9ydCBmb3Igd3JpdGluZyB0byB1bnNlZWthYmxlIHN0cmVhbXMuCiAgICAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgYGAneCdgYCBtb2RlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUHJldmlvdXNseSwgYSBwbGFpbiA6ZXhjOmBSdW50aW1lRXJyb3JgIHdhcyByYWlzZWQgZm9yIHVucmVjb2duaXplZAorICAgICAgY29tcHJlc3Npb24gdmFsdWVzLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuY2xvc2UoKQogCkBAIC0yMDUsMTggKzIwOSwxMiBAQAogICAgUmV0dXJuIGEgbGlzdCBvZiBhcmNoaXZlIG1lbWJlcnMgYnkgbmFtZS4KIAogCi0uLiBpbmRleDo6Ci0gICBzaW5nbGU6IHVuaXZlcnNhbCBuZXdsaW5lczsgemlwZmlsZS5aaXBGaWxlLm9wZW4gbWV0aG9kCisuLiBtZXRob2Q6OiBaaXBGaWxlLm9wZW4obmFtZSwgbW9kZT0ncicsIHB3ZD1Ob25lLCAqLCBmb3JjZV96aXA2ND1GYWxzZSkKIAotLi4gbWV0aG9kOjogWmlwRmlsZS5vcGVuKG5hbWUsIG1vZGU9J3InLCBwd2Q9Tm9uZSkKLQotICAgRXh0cmFjdCBhIG1lbWJlciBmcm9tIHRoZSBhcmNoaXZlIGFzIGEgZmlsZS1saWtlIG9iamVjdCAoWmlwRXh0RmlsZSkuICpuYW1lKgotICAgaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuIFRoZQotICAgKm1vZGUqIHBhcmFtZXRlciwgaWYgaW5jbHVkZWQsIG11c3QgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmc6IGBgJ3InYGAgKHRoZQotICAgZGVmYXVsdCksIGBgJ1UnYGAsIG9yIGBgJ3JVJ2BgLiBDaG9vc2luZyBgYCdVJ2BgIG9yICBgYCdyVSdgYCB3aWxsIGVuYWJsZQotICAgOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2Agc3VwcG9ydCBpbiB0aGUgcmVhZC1vbmx5IG9iamVjdC4gICpwd2QqIGlzIHRoZQotICAgcGFzc3dvcmQgdXNlZCBmb3IgZW5jcnlwdGVkIGZpbGVzLiAgQ2FsbGluZyAgOm1ldGg6YC5vcGVuYCBvbiBhIGNsb3NlZAotICAgWmlwRmlsZSB3aWxsIHJhaXNlIGEgIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBBY2Nlc3MgYSBtZW1iZXIgb2YgdGhlIGFyY2hpdmUgYXMgYSBiaW5hcnkgZmlsZS1saWtlIG9iamVjdC4gICpuYW1lKgorICAgY2FuIGJlIGVpdGhlciB0aGUgbmFtZSBvZiBhIGZpbGUgd2l0aGluIHRoZSBhcmNoaXZlIG9yIGEgOmNsYXNzOmBaaXBJbmZvYAorICAgb2JqZWN0LiAgVGhlICptb2RlKiBwYXJhbWV0ZXIsIGlmIGluY2x1ZGVkLCBtdXN0IGJlIGBgJ3InYGAgKHRoZSBkZWZhdWx0KQorICAgb3IgYGAndydgYC4gICpwd2QqIGlzIHRoZSBwYXNzd29yZCB1c2VkIHRvIGRlY3J5cHQgZW5jcnlwdGVkIFpJUCBmaWxlcy4KIAogICAgOm1ldGg6YH5aaXBGaWxlLm9wZW5gIGlzIGFsc28gYSBjb250ZXh0IG1hbmFnZXIgYW5kIHRoZXJlZm9yZSBzdXBwb3J0cyB0aGUKICAgIDprZXl3b3JkOmB3aXRoYCBzdGF0ZW1lbnQ6OgpAQCAtMjI1LDE3ICsyMjMsMjMgQEAKICAgICAgICAgICB3aXRoIG15emlwLm9wZW4oJ2VnZ3MudHh0JykgYXMgbXlmaWxlOgogICAgICAgICAgICAgICBwcmludChteWZpbGUucmVhZCgpKQogCi0gICAuLiBub3RlOjoKKyAgIFdpdGggKm1vZGUqIGBgJ3InYGAgdGhlIGZpbGUtbGlrZSBvYmplY3QKKyAgIChgYFppcEV4dEZpbGVgYCkgaXMgcmVhZC1vbmx5IGFuZCBwcm92aWRlcyB0aGUgZm9sbG93aW5nIG1ldGhvZHM6CisgICA6bWV0aDpgfmlvLkJ1ZmZlcmVkSU9CYXNlLnJlYWRgLCA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZWAsCisgICA6bWV0aDpgfmlvLklPQmFzZS5yZWFkbGluZXNgLCA6bWV0aDpgX19pdGVyX19gLAorICAgOm1ldGg6YH5pdGVyYXRvci5fX25leHRfX2AuICBUaGVzZSBvYmplY3RzIGNhbiBvcGVyYXRlIGluZGVwZW5kZW50bHkgb2YKKyAgIHRoZSBaaXBGaWxlLgogCi0gICAgICBUaGUgZmlsZS1saWtlIG9iamVjdCBpcyByZWFkLW9ubHkgYW5kIHByb3ZpZGVzIHRoZSBmb2xsb3dpbmcgbWV0aG9kczoKLSAgICAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2UucmVhZGAsIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lYCwKLSAgICAgIDptZXRoOmB+aW8uSU9CYXNlLnJlYWRsaW5lc2AsIDptZXRoOmBfX2l0ZXJfX2AsCi0gICAgICA6bWV0aDpgfml0ZXJhdG9yLl9fbmV4dF9fYC4KKyAgIFdpdGggYGBtb2RlPSd3J2BgLCBhIHdyaXRhYmxlIGZpbGUgaGFuZGxlIGlzIHJldHVybmVkLCB3aGljaCBzdXBwb3J0cyB0aGUKKyAgIDptZXRoOmB+aW8uQnVmZmVyZWRJT0Jhc2Uud3JpdGVgIG1ldGhvZC4gIFdoaWxlIGEgd3JpdGFibGUgZmlsZSBoYW5kbGUgaXMgb3BlbiwKKyAgIGF0dGVtcHRpbmcgdG8gcmVhZCBvciB3cml0ZSBvdGhlciBmaWxlcyBpbiB0aGUgWklQIGZpbGUgd2lsbCByYWlzZSBhCisgICA6ZXhjOmBWYWx1ZUVycm9yYC4KIAotICAgLi4gbm90ZTo6Ci0KLSAgICAgIE9iamVjdHMgcmV0dXJuZWQgYnkgOm1ldGg6YC5vcGVuYCBjYW4gb3BlcmF0ZSBpbmRlcGVuZGVudGx5IG9mIHRoZQotICAgICAgWmlwRmlsZS4KKyAgIFdoZW4gd3JpdGluZyBhIGZpbGUsIGlmIHRoZSBmaWxlIHNpemUgaXMgbm90IGtub3duIGluIGFkdmFuY2UgYnV0IG1heSBleGNlZWQKKyAgIDIgR2lCLCBwYXNzIGBgZm9yY2VfemlwNjQ9VHJ1ZWBgIHRvIGVuc3VyZSB0aGF0IHRoZSBoZWFkZXIgZm9ybWF0IGlzCisgICBjYXBhYmxlIG9mIHN1cHBvcnRpbmcgbGFyZ2UgZmlsZXMuICBJZiB0aGUgZmlsZSBzaXplIGlzIGtub3duIGluIGFkdmFuY2UsCisgICBjb25zdHJ1Y3QgYSA6Y2xhc3M6YFppcEluZm9gIG9iamVjdCB3aXRoIDphdHRyOmB+WmlwSW5mby5maWxlX3NpemVgIHNldCwgYW5kCisgICB1c2UgdGhhdCBhcyB0aGUgKm5hbWUqIHBhcmFtZXRlci4KIAogICAgLi4gbm90ZTo6CiAKQEAgLTI0MywxMCArMjQ3LDE5IEBACiAgICAgICBvciBhIDpjbGFzczpgWmlwSW5mb2Agb2JqZWN0LiAgWW91IHdpbGwgYXBwcmVjaWF0ZSB0aGlzIHdoZW4gdHJ5aW5nIHRvIHJlYWQgYQogICAgICAgWklQIGZpbGUgdGhhdCBjb250YWlucyBtZW1iZXJzIHdpdGggZHVwbGljYXRlIG5hbWVzLgogCi0gICAuLiBkZXByZWNhdGVkLXJlbW92ZWQ6OiAzLjQgMy42Ci0gICAgICBUaGUgYGAnVSdgYCBvciAgYGAnclUnYGAgbW9kZS4gIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgUmVtb3ZlZCBzdXBwb3J0IG9mIGBgbW9kZT0nVSdgYC4gIFVzZSA6Y2xhc3M6YGlvLlRleHRJT1dyYXBwZXJgIGZvciByZWFkaW5nCiAgICAgICBjb21wcmVzc2VkIHRleHQgZmlsZXMgaW4gOnRlcm06YHVuaXZlcnNhbCBuZXdsaW5lc2AgbW9kZS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIDptZXRoOmBvcGVuYCBjYW4gbm93IGJlIHVzZWQgdG8gd3JpdGUgZmlsZXMgaW50byB0aGUgYXJjaGl2ZSB3aXRoIHRoZQorICAgICAgYGBtb2RlPSd3J2BgIG9wdGlvbi4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YC5vcGVuYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4KKyAgICAgIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIC4uIG1ldGhvZDo6IFppcEZpbGUuZXh0cmFjdChtZW1iZXIsIHBhdGg9Tm9uZSwgcHdkPU5vbmUpCiAKICAgIEV4dHJhY3QgYSBtZW1iZXIgZnJvbSB0aGUgYXJjaGl2ZSB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeTsgKm1lbWJlcioKQEAgLTI2Nyw2ICsyODAsMTAgQEAKICAgICAgIGNoYXJhY3RlcnMgKGBgOmBgLCBgYDxgYCwgYGA+YGAsIGBgfGBgLCBgYCJgYCwgYGA/YGAsIGFuZCBgYCpgYCkKICAgICAgIHJlcGxhY2VkIGJ5IHVuZGVyc2NvcmUgKGBgX2BgKS4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YGV4dHJhY3RgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCisgICAgICA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCiAKIC4uIG1ldGhvZDo6IFppcEZpbGUuZXh0cmFjdGFsbChwYXRoPU5vbmUsIG1lbWJlcnM9Tm9uZSwgcHdkPU5vbmUpCiAKQEAgLTI4Myw2ICszMDAsMTAgQEAKICAgICAgIGRvdHMgYGAiLi4iYGAuICBUaGlzIG1vZHVsZSBhdHRlbXB0cyB0byBwcmV2ZW50IHRoYXQuCiAgICAgICBTZWUgOm1ldGg6YGV4dHJhY3RgIG5vdGUuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmBleHRyYWN0YWxsYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLnByaW50ZGlyKCkKIApAQCAtMzAwLDE4ICszMjEsMjQgQEAKICAgIGZpbGUgaW4gdGhlIGFyY2hpdmUsIG9yIGEgOmNsYXNzOmBaaXBJbmZvYCBvYmplY3QuICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW4gZm9yCiAgICByZWFkIG9yIGFwcGVuZC4gKnB3ZCogaXMgdGhlIHBhc3N3b3JkIHVzZWQgZm9yIGVuY3J5cHRlZCAgZmlsZXMgYW5kLCBpZiBzcGVjaWZpZWQsCiAgICBpdCB3aWxsIG92ZXJyaWRlIHRoZSBkZWZhdWx0IHBhc3N3b3JkIHNldCB3aXRoIDptZXRoOmBzZXRwYXNzd29yZGAuICBDYWxsaW5nCi0gICA6bWV0aDpgcmVhZGAgb24gYSBjbG9zZWQgWmlwRmlsZSAgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuIENhbGxpbmcKICAgIDptZXRoOmByZWFkYCBvbiBhIFppcEZpbGUgdGhhdCB1c2VzIGEgY29tcHJlc3Npb24gbWV0aG9kIG90aGVyIHRoYW4KICAgIDpjb25zdDpgWklQX1NUT1JFRGAsIDpjb25zdDpgWklQX0RFRkxBVEVEYCwgOmNvbnN0OmBaSVBfQlpJUDJgIG9yCiAgICA6Y29uc3Q6YFpJUF9MWk1BYCB3aWxsIHJhaXNlIGEgOmV4YzpgTm90SW1wbGVtZW50ZWRFcnJvcmAuIEFuIGVycm9yIHdpbGwgYWxzbwogICAgYmUgcmFpc2VkIGlmIHRoZSBjb3JyZXNwb25kaW5nIGNvbXByZXNzaW9uIG1vZHVsZSBpcyBub3QgYXZhaWxhYmxlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgcmVhZGAgb24gYSBjbG9zZWQgWmlwRmlsZSB3aWxsIHJhaXNlIGEgOmV4YzpgVmFsdWVFcnJvcmAuCisgICAgICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKwogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLnRlc3R6aXAoKQogCiAgICBSZWFkIGFsbCB0aGUgZmlsZXMgaW4gdGhlIGFyY2hpdmUgYW5kIGNoZWNrIHRoZWlyIENSQydzIGFuZCBmaWxlIGhlYWRlcnMuCi0gICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGJhZCBmaWxlLCBvciBlbHNlIHJldHVybiBgYE5vbmVgYC4gQ2FsbGluZwotICAgOm1ldGg6YHRlc3R6aXBgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFJ1bnRpbWVFcnJvcmAuCisgICBSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGZpcnN0IGJhZCBmaWxlLCBvciBlbHNlIHJldHVybiBgYE5vbmVgYC4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgIENhbGxpbmcgOm1ldGg6YHRlc3RmaWxlYCBvbiBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYQorICAgICAgOmV4YzpgVmFsdWVFcnJvcmAuICBQcmV2aW91c2x5LCBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KIAogCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlKGZpbGVuYW1lLCBhcmNuYW1lPU5vbmUsIGNvbXByZXNzX3R5cGU9Tm9uZSkKQEAgLTMyMSwxMCArMzQ4LDcgQEAKICAgIGxldHRlciBhbmQgd2l0aCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkKS4gIElmIGdpdmVuLCAqY29tcHJlc3NfdHlwZSoKICAgIG92ZXJyaWRlcyB0aGUgdmFsdWUgZ2l2ZW4gZm9yIHRoZSAqY29tcHJlc3Npb24qIHBhcmFtZXRlciB0byB0aGUgY29uc3RydWN0b3IgZm9yCiAgICB0aGUgbmV3IGVudHJ5LgotICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAgLS0gY2FsbGluZwotICAgOm1ldGg6YHdyaXRlYCBvbiBhIFppcEZpbGUgY3JlYXRlZCB3aXRoIG1vZGUgYGAncidgYCB3aWxsIHJhaXNlIGEKLSAgIDpleGM6YFJ1bnRpbWVFcnJvcmAuICBDYWxsaW5nICA6bWV0aDpgd3JpdGVgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuIHdpdGggbW9kZSBgYCd3J2BgLCBgYCd4J2BgIG9yIGBgJ2EnYGAuCiAKICAgIC4uIG5vdGU6OgogCkBAIC0zNDMsMTYgKzM2NywxOSBAQAogICAgICAgSWYgYGBhcmNuYW1lYGAgKG9yIGBgZmlsZW5hbWVgYCwgaWYgYGBhcmNuYW1lYGAgaXMgIG5vdCBnaXZlbikgY29udGFpbnMgYSBudWxsCiAgICAgICBieXRlLCB0aGUgbmFtZSBvZiB0aGUgZmlsZSBpbiB0aGUgYXJjaGl2ZSB3aWxsIGJlIHRydW5jYXRlZCBhdCB0aGUgbnVsbCBieXRlLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgQ2FsbGluZyA6bWV0aDpgd3JpdGVgIG9uIGEgWmlwRmlsZSBjcmVhdGVkIHdpdGggbW9kZSBgYCdyJ2BgIG9yCisgICAgICBhIGNsb3NlZCBaaXBGaWxlIHdpbGwgcmFpc2UgYSA6ZXhjOmBWYWx1ZUVycm9yYC4gIFByZXZpb3VzbHksCisgICAgICBhIDpleGM6YFJ1bnRpbWVFcnJvcmAgd2FzIHJhaXNlZC4KKworCiAuLiBtZXRob2Q6OiBaaXBGaWxlLndyaXRlc3RyKHppbmZvX29yX2FyY25hbWUsIGRhdGFbLCBjb21wcmVzc190eXBlXSkKIAogICAgV3JpdGUgdGhlIHN0cmluZyAqZGF0YSogdG8gdGhlIGFyY2hpdmU7ICp6aW5mb19vcl9hcmNuYW1lKiBpcyBlaXRoZXIgdGhlIGZpbGUKICAgIG5hbWUgaXQgd2lsbCBiZSBnaXZlbiBpbiB0aGUgYXJjaGl2ZSwgb3IgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlLiAgSWYgaXQncwogICAgYW4gaW5zdGFuY2UsIGF0IGxlYXN0IHRoZSBmaWxlbmFtZSwgZGF0ZSwgYW5kIHRpbWUgbXVzdCBiZSBnaXZlbi4gIElmIGl0J3MgYQogICAgbmFtZSwgdGhlIGRhdGUgYW5kIHRpbWUgaXMgc2V0IHRvIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUuCi0gICBUaGUgYXJjaGl2ZSBtdXN0IGJlIG9wZW5lZCB3aXRoIG1vZGUgYGAndydgYCwgYGAneCdgYCBvciBgYCdhJ2BgIC0tIGNhbGxpbmcKLSAgIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgd2lsbCByYWlzZSBhCi0gICA6ZXhjOmBSdW50aW1lRXJyb3JgLiAgQ2FsbGluZyA6bWV0aDpgd3JpdGVzdHJgIG9uIGEgY2xvc2VkIFppcEZpbGUgd2lsbAotICAgcmFpc2UgYSA6ZXhjOmBSdW50aW1lRXJyb3JgLgorICAgVGhlIGFyY2hpdmUgbXVzdCBiZSBvcGVuZWQgd2l0aCBtb2RlIGBgJ3cnYGAsIGBgJ3gnYGAgb3IgYGAnYSdgYC4KIAogICAgSWYgZ2l2ZW4sICpjb21wcmVzc190eXBlKiBvdmVycmlkZXMgdGhlIHZhbHVlIGdpdmVuIGZvciB0aGUgKmNvbXByZXNzaW9uKgogICAgcGFyYW1ldGVyIHRvIHRoZSBjb25zdHJ1Y3RvciBmb3IgdGhlIG5ldyBlbnRyeSwgb3IgaW4gdGhlICp6aW5mb19vcl9hcmNuYW1lKgpAQCAtMzY4LDYgKzM5NSwxMiBAQAogICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjIKICAgICAgIFRoZSAqY29tcHJlc3NfdHlwZSogYXJndW1lbnQuCiAKKyAgIC4uIHZlcnNpb25jaGFuZ2VkOjogMy42CisgICAgICBDYWxsaW5nIDptZXRoOmB3cml0ZXN0cmAgb24gYSBaaXBGaWxlIGNyZWF0ZWQgd2l0aCBtb2RlIGBgJ3InYGAgb3IKKyAgICAgIGEgY2xvc2VkIFppcEZpbGUgd2lsbCByYWlzZSBhIDpleGM6YFZhbHVlRXJyb3JgLiAgUHJldmlvdXNseSwKKyAgICAgIGEgOmV4YzpgUnVudGltZUVycm9yYCB3YXMgcmFpc2VkLgorCisKIFRoZSBmb2xsb3dpbmcgZGF0YSBhdHRyaWJ1dGVzIGFyZSBhbHNvIGF2YWlsYWJsZToKIAogCkBAIC00NjUsNyArNDk4LDMxIEBACiA6bWV0aDpgLmluZm9saXN0YCBtZXRob2RzIG9mIDpjbGFzczpgWmlwRmlsZWAgb2JqZWN0cy4gIEVhY2ggb2JqZWN0IHN0b3JlcwogaW5mb3JtYXRpb24gYWJvdXQgYSBzaW5nbGUgbWVtYmVyIG9mIHRoZSBaSVAgYXJjaGl2ZS4KIAotSW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBhdHRyaWJ1dGVzOgorVGhlcmUgaXMgb25lIGNsYXNzbWV0aG9kIHRvIG1ha2UgYSA6Y2xhc3M6YFppcEluZm9gIGluc3RhbmNlIGZvciBhIGZpbGVzeXN0ZW0KK2ZpbGU6CisKKy4uIGNsYXNzbWV0aG9kOjogWmlwSW5mby5mcm9tX2ZpbGUoZmlsZW5hbWUsIGFyY25hbWU9Tm9uZSkKKworICAgQ29uc3RydWN0IGEgOmNsYXNzOmBaaXBJbmZvYCBpbnN0YW5jZSBmb3IgYSBmaWxlIG9uIHRoZSBmaWxlc3lzdGVtLCBpbgorICAgcHJlcGFyYXRpb24gZm9yIGFkZGluZyBpdCB0byBhIHppcCBmaWxlLgorCisgICAqZmlsZW5hbWUqIHNob3VsZCBiZSB0aGUgcGF0aCB0byBhIGZpbGUgb3IgZGlyZWN0b3J5IG9uIHRoZSBmaWxlc3lzdGVtLgorCisgICBJZiAqYXJjbmFtZSogaXMgc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGFzIHRoZSBuYW1lIHdpdGhpbiB0aGUgYXJjaGl2ZS4KKyAgIElmICphcmNuYW1lKiBpcyBub3Qgc3BlY2lmaWVkLCB0aGUgbmFtZSB3aWxsIGJlIHRoZSBzYW1lIGFzICpmaWxlbmFtZSosIGJ1dAorICAgd2l0aCBhbnkgZHJpdmUgbGV0dGVyIGFuZCBsZWFkaW5nIHBhdGggc2VwYXJhdG9ycyByZW1vdmVkLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworSW5zdGFuY2VzIGhhdmUgdGhlIGZvbGxvd2luZyBtZXRob2RzIGFuZCBhdHRyaWJ1dGVzOgorCisuLiBtZXRob2Q6OiBaaXBJbmZvLmlzX2RpcigpCisKKyAgIFJldHVybiBUcnVlIGlmIHRoaXMgYXJjaGl2ZSBtZW1iZXIgaXMgYSBkaXJlY3RvcnkuCisKKyAgIFRoaXMgdXNlcyB0aGUgZW50cnkncyBuYW1lOiBkaXJlY3RvcmllcyBzaG91bGQgYWx3YXlzIGVuZCB3aXRoIGBgL2BgLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKIAogCiAuLiBhdHRyaWJ1dGU6OiBaaXBJbmZvLmZpbGVuYW1lCkBAIC01NzQsNCArNjMxLDUgQEAKIAogICAgU2l6ZSBvZiB0aGUgdW5jb21wcmVzc2VkIGZpbGUuCiAKKwogLi4gX1BLWklQIEFwcGxpY2F0aW9uIE5vdGU6IGh0dHBzOi8vcGt3YXJlLmNhY2hlZmx5Lm5ldC93ZWJkb2NzL2Nhc2VzdHVkaWVzL0FQUE5PVEUuVFhUCmRpZmYgLS1naXQgYS9Eb2MvbGlicmFyeS96bGliLnJzdCBiL0RvYy9saWJyYXJ5L3psaWIucnN0CmluZGV4IDFkZTdiYWUuLjNkNzQyYWIgMTAwNjQ0Ci0tLSBhL0RvYy9saWJyYXJ5L3psaWIucnN0CisrKyBiL0RvYy9saWJyYXJ5L3psaWIucnN0CkBAIC00NywxNCArNDcsMTkgQEAKICAgICAgIHBsYXRmb3JtcywgdXNlIGBgYWRsZXIzMihkYXRhKSAmIDB4ZmZmZmZmZmZgYC4KIAogCi0uLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGFbLCBsZXZlbF0pCisuLiBmdW5jdGlvbjo6IGNvbXByZXNzKGRhdGEsIGxldmVsPS0xKQogCiAgICBDb21wcmVzc2VzIHRoZSBieXRlcyBpbiAqZGF0YSosIHJldHVybmluZyBhIGJ5dGVzIG9iamVjdCBjb250YWluaW5nIGNvbXByZXNzZWQgZGF0YS4KLSAgICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIGNvbnRyb2xsaW5nIHRoZSBsZXZlbCBvZiBjb21wcmVzc2lvbjsKKyAgICpsZXZlbCogaXMgYW4gaW50ZWdlciBmcm9tIGBgMGBgIHRvIGBgOWBgIG9yIGBgLTFgYCBjb250cm9sbGluZyB0aGUgbGV2ZWwgb2YgY29tcHJlc3Npb247CiAgICBgYDFgYCBpcyBmYXN0ZXN0IGFuZCBwcm9kdWNlcyB0aGUgbGVhc3QgY29tcHJlc3Npb24sIGBgOWBgIGlzIHNsb3dlc3QgYW5kCi0gICBwcm9kdWNlcyB0aGUgbW9zdC4gIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGA2YGAuCisgICBwcm9kdWNlcyB0aGUgbW9zdC4gIGBgMGBgIGlzIG5vIGNvbXByZXNzaW9uLiAgVGhlIGRlZmF1bHQgdmFsdWUgaXMgYGAtMWBgCisgICAoWl9ERUZBVUxUX0NPTVBSRVNTSU9OKS4gIFpfREVGQVVMVF9DT01QUkVTU0lPTiByZXByZXNlbnRzIGEgZGVmYXVsdAorICAgY29tcHJvbWlzZSBiZXR3ZWVuIHNwZWVkIGFuZCBjb21wcmVzc2lvbiAoY3VycmVudGx5IGVxdWl2YWxlbnQgdG8gbGV2ZWwgNikuCiAgICBSYWlzZXMgdGhlIDpleGM6YGVycm9yYCBleGNlcHRpb24gaWYgYW55IGVycm9yIG9jY3Vycy4KIAorICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICpsZXZlbCogY2FuIG5vdyBiZSB1c2VkIGFzIGEga2V5d29yZCBwYXJhbWV0ZXIuCisKIAogLi4gZnVuY3Rpb246OiBjb21wcmVzc29iaihsZXZlbD0tMSwgbWV0aG9kPURFRkxBVEVELCB3Yml0cz0xNSwgbWVtTGV2ZWw9OCwgc3RyYXRlZ3k9Wl9ERUZBVUxUX1NUUkFURUdZWywgemRpY3RdKQogCkBAIC0xMjQsNyArMTI5LDcgQEAKICAgICAgIHBsYXRmb3JtcywgdXNlIGBgY3JjMzIoZGF0YSkgJiAweGZmZmZmZmZmYGAuCiAKIAotLi4gZnVuY3Rpb246OiBkZWNvbXByZXNzKGRhdGFbLCB3Yml0c1ssIGJ1ZnNpemVdXSkKKy4uIGZ1bmN0aW9uOjogZGVjb21wcmVzcyhkYXRhLCB3Yml0cz1NQVhfV0JJVFMsIGJ1ZnNpemU9REVGX0JVRl9TSVpFKQogCiAgICBEZWNvbXByZXNzZXMgdGhlIGJ5dGVzIGluICpkYXRhKiwgcmV0dXJuaW5nIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlCiAgICB1bmNvbXByZXNzZWQgZGF0YS4gIFRoZSAqd2JpdHMqIHBhcmFtZXRlciBkZXBlbmRzIG9uCkBAIC0xNTksMTQgKzE2NCwxNiBAQAogICAgV2hlbiBkZWNvbXByZXNzaW5nIGEgc3RyZWFtLCB0aGUgd2luZG93IHNpemUgbXVzdCBub3QgYmUgc21hbGxlcgogICAgdGhhbiB0aGUgc2l6ZSBvcmlnaW5hbGx5IHVzZWQgdG8gY29tcHJlc3MgdGhlIHN0cmVhbTsgdXNpbmcgYSB0b28tc21hbGwKICAgIHZhbHVlIG1heSByZXN1bHQgaW4gYW4gOmV4YzpgZXJyb3JgIGV4Y2VwdGlvbi4gVGhlIGRlZmF1bHQgKndiaXRzKiB2YWx1ZQotICAgaXMgMTUsIHdoaWNoIGNvcnJlc3BvbmRzIHRvIHRoZSBsYXJnZXN0IHdpbmRvdyBzaXplIGFuZCByZXF1aXJlcyBhIHpsaWIKLSAgIGhlYWRlciBhbmQgdHJhaWxlciB0byBiZSBpbmNsdWRlZC4KKyAgIGNvcnJlc3BvbmRzIHRvIHRoZSBsYXJnZXN0IHdpbmRvdyBzaXplIGFuZCByZXF1aXJlcyBhIHpsaWIgaGVhZGVyIGFuZAorICAgdHJhaWxlciB0byBiZSBpbmNsdWRlZC4KIAogICAgKmJ1ZnNpemUqIGlzIHRoZSBpbml0aWFsIHNpemUgb2YgdGhlIGJ1ZmZlciB1c2VkIHRvIGhvbGQgZGVjb21wcmVzc2VkIGRhdGEuICBJZgogICAgbW9yZSBzcGFjZSBpcyByZXF1aXJlZCwgdGhlIGJ1ZmZlciBzaXplIHdpbGwgYmUgaW5jcmVhc2VkIGFzIG5lZWRlZCwgc28geW91CiAgICBkb24ndCBoYXZlIHRvIGdldCB0aGlzIHZhbHVlIGV4YWN0bHkgcmlnaHQ7IHR1bmluZyBpdCB3aWxsIG9ubHkgc2F2ZSBhIGZldyBjYWxscwotICAgdG8gOmM6ZnVuYzpgbWFsbG9jYC4gIFRoZSBkZWZhdWx0IHNpemUgaXMgMTYzODQuCisgICB0byA6YzpmdW5jOmBtYWxsb2NgLgogCisgICAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorICAgICAgKndiaXRzKiBhbmQgKmJ1ZnNpemUqIGNhbiBiZSB1c2VkIGFzIGtleXdvcmQgYXJndW1lbnRzLgogCiAuLiBmdW5jdGlvbjo6IGRlY29tcHJlc3NvYmood2JpdHM9MTVbLCB6ZGljdF0pCiAKQEAgLTI1Miw3ICsyNTksNyBAQAogICAgLi4gdmVyc2lvbmFkZGVkOjogMy4zCiAKIAotLi4gbWV0aG9kOjogRGVjb21wcmVzcy5kZWNvbXByZXNzKGRhdGFbLCBtYXhfbGVuZ3RoXSkKKy4uIG1ldGhvZDo6IERlY29tcHJlc3MuZGVjb21wcmVzcyhkYXRhLCBtYXhfbGVuZ3RoPTApCiAKICAgIERlY29tcHJlc3MgKmRhdGEqLCByZXR1cm5pbmcgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEKICAgIGNvcnJlc3BvbmRpbmcgdG8gYXQgbGVhc3QgcGFydCBvZiB0aGUgZGF0YSBpbiAqc3RyaW5nKi4gIFRoaXMgZGF0YSBzaG91bGQgYmUKQEAgLTI2NCw5ICsyNzEsMTEgQEAKICAgIG5vIGxvbmdlciB0aGFuICptYXhfbGVuZ3RoKi4gVGhpcyBtYXkgbWVhbiB0aGF0IG5vdCBhbGwgb2YgdGhlIGNvbXByZXNzZWQgaW5wdXQKICAgIGNhbiBiZSBwcm9jZXNzZWQ7IGFuZCB1bmNvbnN1bWVkIGRhdGEgd2lsbCBiZSBzdG9yZWQgaW4gdGhlIGF0dHJpYnV0ZQogICAgOmF0dHI6YHVuY29uc3VtZWRfdGFpbGAuIFRoaXMgYnl0ZXN0cmluZyBtdXN0IGJlIHBhc3NlZCB0byBhIHN1YnNlcXVlbnQgY2FsbCB0bwotICAgOm1ldGg6YGRlY29tcHJlc3NgIGlmIGRlY29tcHJlc3Npb24gaXMgdG8gY29udGludWUuICBJZiAqbWF4X2xlbmd0aCogaXMgbm90Ci0gICBzdXBwbGllZCB0aGVuIHRoZSB3aG9sZSBpbnB1dCBpcyBkZWNvbXByZXNzZWQsIGFuZCA6YXR0cjpgdW5jb25zdW1lZF90YWlsYCBpcwotICAgZW1wdHkuCisgICA6bWV0aDpgZGVjb21wcmVzc2AgaWYgZGVjb21wcmVzc2lvbiBpcyB0byBjb250aW51ZS4gIElmICptYXhfbGVuZ3RoKiBpcyB6ZXJvCisgICB0aGVuIHRoZSB3aG9sZSBpbnB1dCBpcyBkZWNvbXByZXNzZWQsIGFuZCA6YXR0cjpgdW5jb25zdW1lZF90YWlsYCBpcyBlbXB0eS4KKworICAgLi4gdmVyc2lvbmNoYW5nZWQ6OiAzLjYKKyAgICAgICptYXhfbGVuZ3RoKiBjYW4gYmUgdXNlZCBhcyBhIGtleXdvcmQgYXJndW1lbnQuCiAKIAogLi4gbWV0aG9kOjogRGVjb21wcmVzcy5mbHVzaChbbGVuZ3RoXSkKZGlmZiAtLWdpdCBhL0RvYy9tYWtlLmJhdCBiL0RvYy9tYWtlLmJhdAppbmRleCA1YWI4MDg1Li5kYTFmODc2IDEwMDY0NAotLS0gYS9Eb2MvbWFrZS5iYXQKKysrIGIvRG9jL21ha2UuYmF0CkBAIC00MCw3ICs0MCw3IEBACiAgICAgZ290byBlbmQNCiApDQogDQotJVNQSElOWEJVSUxEJSAyPiBudWwNCislU1BISU5YQlVJTEQlID5udWwgMj4gbnVsDQogaWYgZXJyb3JsZXZlbCA5MDA5ICgNCiAgICAgZWNoby4NCiAgICAgZWNoby5UaGUgJ3NwaGlueC1idWlsZCcgY29tbWFuZCB3YXMgbm90IGZvdW5kLiBNYWtlIHN1cmUgeW91IGhhdmUgU3BoaW54DQpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9jb21wb3VuZF9zdG10cy5yc3QgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAppbmRleCA4OGI5NGVhLi40ZmM2YWYwIDEwMDY0NAotLS0gYS9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2NvbXBvdW5kX3N0bXRzLnJzdApAQCAtNDcxLDEwICs0NzEsMTAgQEAKICAgIGRlY29yYXRvcnM6IGBkZWNvcmF0b3JgKwogICAgZGVjb3JhdG9yOiAiQCIgYGRvdHRlZF9uYW1lYCBbIigiIFtgYXJndW1lbnRfbGlzdGAgWyIsIl1dICIpIl0gTkVXTElORQogICAgZG90dGVkX25hbWU6IGBpZGVudGlmaWVyYCAoIi4iIGBpZGVudGlmaWVyYCkqCi0gICBwYXJhbWV0ZXJfbGlzdDogKGBkZWZwYXJhbWV0ZXJgICIsIikqCi0gICAgICAgICAgICAgICAgIDogfCAiKiIgW2BwYXJhbWV0ZXJgXSAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiAiKioiIGBwYXJhbWV0ZXJgXQotICAgICAgICAgICAgICAgICA6IHwgIioqIiBgcGFyYW1ldGVyYAotICAgICAgICAgICAgICAgICA6IHwgYGRlZnBhcmFtZXRlcmAgWyIsIl0gKQorICAgcGFyYW1ldGVyX2xpc3Q6IGBkZWZwYXJhbWV0ZXJgICgiLCIgYGRlZnBhcmFtZXRlcmApKiBbIiwiIFtgcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NgXV0KKyAgICAgICAgICAgICAgICAgOiB8IGBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc2AKKyAgIHBhcmFtZXRlcl9saXN0X3N0YXJhcmdzOiAiKiIgW2BwYXJhbWV0ZXJgXSAoIiwiIGBkZWZwYXJhbWV0ZXJgKSogWyIsIiBbIioqIiBgcGFyYW1ldGVyYCBbIiwiXV1dCisgICAgICAgICAgICAgICAgICAgICAgICAgOiB8ICIqKiIgYHBhcmFtZXRlcmAgWyIsIl0KICAgIHBhcmFtZXRlcjogYGlkZW50aWZpZXJgIFsiOiIgYGV4cHJlc3Npb25gXQogICAgZGVmcGFyYW1ldGVyOiBgcGFyYW1ldGVyYCBbIj0iIGBleHByZXNzaW9uYF0KICAgIGZ1bmNuYW1lOiBgaWRlbnRpZmllcmAKQEAgLTU0NiwxMSArNTQ2LDEyIEBACiBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyBtZW50aW9uZWQgaW4gdGhlIHBhcmFtZXRlcgogbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tIGtleXdvcmQgYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQKIHZhbHVlcy4gIElmIHRoZSBmb3JtICJgYCppZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUKLXJlY2VpdmluZyBhbnkgZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZgotdGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3IGRpY3Rpb25hcnkKLXJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3IGVtcHR5IGRpY3Rpb25hcnkuCi1QYXJhbWV0ZXJzIGFmdGVyICJgYCpgYCIgb3IgImBgKmlkZW50aWZpZXJgYCIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZAotbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuCityZWNlaXZpbmcgYW55IGV4Y2VzcyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIGRlZmF1bHRpbmcgdG8gdGhlIGVtcHR5IHR1cGxlLgorSWYgdGhlIGZvcm0gImBgKippZGVudGlmaWVyYGAiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3CitvcmRlcmVkIG1hcHBpbmcgcmVjZWl2aW5nIGFueSBleGNlc3Mga2V5d29yZCBhcmd1bWVudHMsIGRlZmF1bHRpbmcgdG8gYQorbmV3IGVtcHR5IG1hcHBpbmcgb2YgdGhlIHNhbWUgdHlwZS4gIFBhcmFtZXRlcnMgYWZ0ZXIgImBgKmBgIiBvcgorImBgKmlkZW50aWZpZXJgYCIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQKK3VzZWQga2V5d29yZCBhcmd1bWVudHMuCiAKIC4uIGluZGV4OjogcGFpcjogZnVuY3Rpb247IGFubm90YXRpb25zCiAKQEAgLTYzMiw2ICs2MzMsMTEgQEAKIGRpY3Rpb25hcnkuICBUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWwKIG5hbWVzcGFjZS4KIAorVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXMgcHJlc2VydmVkCitpbiB0aGUgbmV3IGNsYXNzJ3MgYGBfX2RpY3RfX2BgLiAgTm90ZSB0aGF0IHRoaXMgaXMgcmVsaWFibGUgb25seSByaWdodAorYWZ0ZXIgdGhlIGNsYXNzIGlzIGNyZWF0ZWQgYW5kIG9ubHkgZm9yIGNsYXNzZXMgdGhhdCB3ZXJlIGRlZmluZWQgdXNpbmcKK3RoZSBkZWZpbml0aW9uIHN5bnRheC4KKwogQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyA6cmVmOmBtZXRhY2xhc3NlcyA8bWV0YWNsYXNzZXM+YC4KIAogQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLCA6OgpkaWZmIC0tZ2l0IGEvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0IGIvRG9jL3JlZmVyZW5jZS9kYXRhbW9kZWwucnN0CmluZGV4IDY4OTRjN2MuLjI0NmUyZTMgMTAwNjQ0Ci0tLSBhL0RvYy9yZWZlcmVuY2UvZGF0YW1vZGVsLnJzdAorKysgYi9Eb2MvcmVmZXJlbmNlL2RhdGFtb2RlbC5yc3QKQEAgLTY4NiwxMCArNjg2LDI4IEBACiAgICBBdHRyaWJ1dGUgYXNzaWdubWVudCB1cGRhdGVzIHRoZSBtb2R1bGUncyBuYW1lc3BhY2UgZGljdGlvbmFyeSwgZS5nLiwKICAgIGBgbS54ID0gMWBgIGlzIGVxdWl2YWxlbnQgdG8gYGBtLl9fZGljdF9fWyJ4Il0gPSAxYGAuCiAKKyAgIC4uIGluZGV4OjoKKyAgICAgIHNpbmdsZTogX19uYW1lX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fZG9jX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBzaW5nbGU6IF9fZmlsZV9fIChtb2R1bGUgYXR0cmlidXRlKQorICAgICAgc2luZ2xlOiBfX2Fubm90YXRpb25zX18gKG1vZHVsZSBhdHRyaWJ1dGUpCisgICAgICBwYWlyOiBtb2R1bGU7IG5hbWVzcGFjZQorCisgICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogOmF0dHI6YF9fbmFtZV9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZTsKKyAgIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmCisgICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZworICAgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAgY29sbGVjdGVkIGR1cmluZyBtb2R1bGUKKyAgIGJvZHkgZXhlY3V0aW9uOyA6YXR0cjpgX19maWxlX19gIGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgZmlsZSBmcm9tIHdoaWNoIHRoZQorICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSA6YXR0cjpgX19maWxlX19gCisgICBhdHRyaWJ1dGUgbWF5IGJlIG1pc3NpbmcgZm9yIGNlcnRhaW4gdHlwZXMgb2YgbW9kdWxlcywgc3VjaCBhcyBDIG1vZHVsZXMKKyAgIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3IgZXh0ZW5zaW9uIG1vZHVsZXMKKyAgIGxvYWRlZCBkeW5hbWljYWxseSBmcm9tIGEgc2hhcmVkIGxpYnJhcnksIGl0IGlzIHRoZSBwYXRobmFtZSBvZiB0aGUgc2hhcmVkCisgICBsaWJyYXJ5IGZpbGUuCisKICAgIC4uIGluZGV4Ojogc2luZ2xlOiBfX2RpY3RfXyAobW9kdWxlIGF0dHJpYnV0ZSkKIAotICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlOiA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlIG1vZHVsZSdzIG5hbWVzcGFjZSBhcyBhCi0gICBkaWN0aW9uYXJ5IG9iamVjdC4KKyAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZTogOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGlzIHRoZSBtb2R1bGUncworICAgbmFtZXNwYWNlIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuCiAKICAgIC4uIGltcGwtZGV0YWlsOjoKIApAQCAtNjk4LDIxICs3MTYsNiBAQAogICAgICAgZGljdGlvbmFyeSBzdGlsbCBoYXMgbGl2ZSByZWZlcmVuY2VzLiAgVG8gYXZvaWQgdGhpcywgY29weSB0aGUgZGljdGlvbmFyeQogICAgICAgb3Iga2VlcCB0aGUgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS4KIAotICAgLi4gaW5kZXg6OgotICAgICAgc2luZ2xlOiBfX25hbWVfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHNpbmdsZTogX19kb2NfXyAobW9kdWxlIGF0dHJpYnV0ZSkKLSAgICAgIHNpbmdsZTogX19maWxlX18gKG1vZHVsZSBhdHRyaWJ1dGUpCi0gICAgICBwYWlyOiBtb2R1bGU7IG5hbWVzcGFjZQotCi0gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogOmF0dHI6YF9fbmFtZV9fYCBpcyB0aGUgbW9kdWxlJ3MgbmFtZTsKLSAgIDphdHRyOmBfX2RvY19fYCBpcyB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIGBgTm9uZWBgIGlmCi0gICB1bmF2YWlsYWJsZTsgOmF0dHI6YF9fZmlsZV9fYCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGUKLSAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgOmF0dHI6YF9fZmlsZV9fYAotICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQyBtb2R1bGVzCi0gICB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yIGV4dGVuc2lvbiBtb2R1bGVzCi0gICBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZAotICAgbGlicmFyeSBmaWxlLgotCiBDdXN0b20gY2xhc3NlcwogICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlIHNlY3Rpb24KICAgIDpyZWY6YGNsYXNzYCkuICBBIGNsYXNzIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0LgpAQCAtNzYxLDEzICs3NjQsMTcgQEAKICAgICAgIHNpbmdsZTogX19kaWN0X18gKGNsYXNzIGF0dHJpYnV0ZSkKICAgICAgIHNpbmdsZTogX19iYXNlc19fIChjbGFzcyBhdHRyaWJ1dGUpCiAgICAgICBzaW5nbGU6IF9fZG9jX18gKGNsYXNzIGF0dHJpYnV0ZSkKKyAgICAgIHNpbmdsZTogX19hbm5vdGF0aW9uc19fIChjbGFzcyBhdHRyaWJ1dGUpCiAKICAgIFNwZWNpYWwgYXR0cmlidXRlczogOmF0dHI6YH5kZWZpbml0aW9uLl9fbmFtZV9fYCBpcyB0aGUgY2xhc3MgbmFtZTsgOmF0dHI6YF9fbW9kdWxlX19gIGlzCiAgICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgaXMgdGhlCiAgICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzJ3MgbmFtZXNwYWNlOyA6YXR0cjpgfmNsYXNzLl9fYmFzZXNfX2AgaXMgYQogICAgdHVwbGUgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZQogICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyA6YXR0cjpgX19kb2NfX2AgaXMgdGhlCi0gICBjbGFzcydzIGRvY3VtZW50YXRpb24gc3RyaW5nLCBvciBOb25lIGlmIHVuZGVmaW5lZC4KKyAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkOworICAgOmF0dHI6YF9fYW5ub3RhdGlvbnNfX2AgKG9wdGlvbmFsKSBpcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZworICAgOnRlcm06YHZhcmlhYmxlIGFubm90YXRpb25zIDx2YXJpYWJsZSBhbm5vdGF0aW9uPmAgY29sbGVjdGVkIGR1cmluZworICAgY2xhc3MgYm9keSBleGVjdXRpb24uCiAKIENsYXNzIGluc3RhbmNlcwogICAgLi4gaW5kZXg6OgpAQCAtMTA2Myw2ICsxMDcwLDEyIEBACiBvcGVyYXRpb24gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseQogOmV4YzpgQXR0cmlidXRlRXJyb3JgIG9yIDpleGM6YFR5cGVFcnJvcmApLgogCitTZXR0aW5nIGEgc3BlY2lhbCBtZXRob2QgdG8gYGBOb25lYGAgaW5kaWNhdGVzIHRoYXQgdGhlIGNvcnJlc3BvbmRpbmcKK29wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cworOm1ldGg6YF9faXRlcl9fYCB0byBgYE5vbmVgYCwgdGhlIGNsYXNzIGlzIG5vdCBpdGVyYWJsZSwgc28gY2FsbGluZworOmZ1bmM6YGl0ZXJgIG9uIGl0cyBpbnN0YW5jZXMgd2lsbCByYWlzZSBhIDpleGM6YFR5cGVFcnJvcmAgKHdpdGhvdXQKK2ZhbGxpbmcgYmFjayB0byA6bWV0aDpgX19nZXRpdGVtX19gKS4gWyNdXworCiBXaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzIGltcG9ydGFudCB0aGF0CiB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0IG1ha2VzIHNlbnNlIGZvciB0aGUKIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lIHNlcXVlbmNlcyBtYXkgd29yayB3ZWxsIHdpdGggcmV0cmlldmFsCkBAIC0xMjMzLDggKzEyNDYsOSBAQAogCiAuLiBtZXRob2Q6OiBvYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYykKIAotICAgQ2FsbGVkIGJ5IHRoZSA6ZnVuYzpgZm9ybWF0YCBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlCi0gICA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kIG9mIGNsYXNzIDpjbGFzczpgc3RyYCkgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiCisgICBDYWxsZWQgYnkgdGhlIDpmdW5jOmBmb3JtYXRgIGJ1aWx0LWluIGZ1bmN0aW9uLAorICAgYW5kIGJ5IGV4dGVuc2lvbiwgZXZhbHVhdGlvbiBvZiA6cmVmOmBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzCisgICA8Zi1zdHJpbmdzPmAgYW5kIHRoZSA6bWV0aDpgc3RyLmZvcm1hdGAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIKICAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuIFRoZSBgYGZvcm1hdF9zcGVjYGAgYXJndW1lbnQgaXMKICAgIGEgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zIGRlc2lyZWQuCiAgICBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlIGBgZm9ybWF0X3NwZWNgYCBhcmd1bWVudCBpcyB1cCB0byB0aGUgdHlwZQpAQCAtMTQ5MSw2ICsxNTA1LDE0IEBACiAgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGUgb3duZXIgY2xhc3MuCiAKIAorLi4gbWV0aG9kOjogb2JqZWN0Ll9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSkKKworICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyBjcmVhdGVkLiBUaGUKKyAgIGRlc2NyaXB0b3IgaGFzIGJlZW4gYXNzaWduZWQgdG8gKm5hbWUqLgorCisgICAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjYKKworCiBUaGUgYXR0cmlidXRlIDphdHRyOmBfX29iamNsYXNzX19gIGlzIGludGVycHJldGVkIGJ5IHRoZSA6bW9kOmBpbnNwZWN0YCBtb2R1bGUKIGFzIHNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXMKIGFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzcyBhdHRyaWJ1dGVzKS4KQEAgLTE2MjgsMTEgKzE2NTAsNTYgQEAKICogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lICpfX3Nsb3RzX18qLgogCiAKLS4uIF9tZXRhY2xhc3NlczoKKy4uIF9jbGFzcy1jdXN0b21pemF0aW9uOgogCiBDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbgogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAorV2hlbmV2ZXIgYSBjbGFzcyBpbmhlcml0cyBmcm9tIGFub3RoZXIgY2xhc3MsICpfX2luaXRfc3ViY2xhc3NfXyogaXMKK2NhbGxlZCBvbiB0aGF0IGNsYXNzLiBUaGlzIHdheSwgaXQgaXMgcG9zc2libGUgdG8gd3JpdGUgY2xhc3NlcyB3aGljaAorY2hhbmdlIHRoZSBiZWhhdmlvciBvZiBzdWJjbGFzc2VzLiBUaGlzIGlzIGNsb3NlbHkgcmVsYXRlZCB0byBjbGFzcworZGVjb3JhdG9ycywgYnV0IHdoZXJlIGNsYXNzIGRlY29yYXRvcnMgb25seSBhZmZlY3QgdGhlIHNwZWNpZmljIGNsYXNzIHRoZXkncmUKK2FwcGxpZWQgdG8sIGBgX19pbml0X3N1YmNsYXNzX19gYCBzb2xlbHkgYXBwbGllcyB0byBmdXR1cmUgc3ViY2xhc3NlcyBvZiB0aGUKK2NsYXNzIGRlZmluaW5nIHRoZSBtZXRob2QuCisKKy4uIGNsYXNzbWV0aG9kOjogb2JqZWN0Ll9faW5pdF9zdWJjbGFzc19fKGNscykKKworICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW5ldmVyIHRoZSBjb250YWluaW5nIGNsYXNzIGlzIHN1YmNsYXNzZWQuCisgICAqY2xzKiBpcyB0aGVuIHRoZSBuZXcgc3ViY2xhc3MuIElmIGRlZmluZWQgYXMgYSBub3JtYWwgaW5zdGFuY2UgbWV0aG9kLAorICAgdGhpcyBtZXRob2QgaXMgaW1wbGljaXRseSBjb252ZXJ0ZWQgdG8gYSBjbGFzcyBtZXRob2QuCisKKyAgIEtleXdvcmQgYXJndW1lbnRzIHdoaWNoIGFyZSBnaXZlbiB0byBhIG5ldyBjbGFzcyBhcmUgcGFzc2VkIHRvCisgICB0aGUgcGFyZW50J3MgY2xhc3MgYGBfX2luaXRfc3ViY2xhc3NfX2BgLiBGb3IgY29tcGF0aWJpbGl0eSB3aXRoCisgICBvdGhlciBjbGFzc2VzIHVzaW5nIGBgX19pbml0X3N1YmNsYXNzX19gYCwgb25lIHNob3VsZCB0YWtlIG91dCB0aGUKKyAgIG5lZWRlZCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgcGFzcyB0aGUgb3RoZXJzIG92ZXIgdG8gdGhlIGJhc2UKKyAgIGNsYXNzLCBhcyBpbjo6CisKKyAgICAgICBjbGFzcyBQaGlsb3NvcGhlcjoKKyAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgZGVmYXVsdF9uYW1lLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgY2xzLmRlZmF1bHRfbmFtZSA9IGRlZmF1bHRfbmFtZQorCisgICAgICAgY2xhc3MgQXVzdHJhbGlhblBoaWxvc29waGVyKFBoaWxvc29waGVyLCBkZWZhdWx0X25hbWU9IkJydWNlIik6CisgICAgICAgICAgIHBhc3MKKworICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gYGBvYmplY3QuX19pbml0X3N1YmNsYXNzX19gYCBkb2VzCisgICBub3RoaW5nLCBidXQgcmFpc2VzIGFuIGVycm9yIGlmIGl0IGlzIGNhbGxlZCB3aXRoIGFueSBhcmd1bWVudHMuCisKKyAgIC4uIG5vdGU6OgorCisgICAgICBUaGUgbWV0YWNsYXNzIGhpbnQgYGBtZXRhY2xhc3NgYCBpcyBjb25zdW1lZCBieSB0aGUgcmVzdCBvZiB0aGUgdHlwZQorICAgICAgbWFjaGluZXJ5LCBhbmQgaXMgbmV2ZXIgcGFzc2VkIHRvIGBgX19pbml0X3N1YmNsYXNzX19gYCBpbXBsZW1lbnRhdGlvbnMuCisgICAgICBUaGUgYWN0dWFsIG1ldGFjbGFzcyAocmF0aGVyIHRoYW4gdGhlIGV4cGxpY2l0IGhpbnQpIGNhbiBiZSBhY2Nlc3NlZCBhcworICAgICAgYGB0eXBlKGNscylgYC4KKworICAgLi4gdmVyc2lvbmFkZGVkOjogMy42CisKKworLi4gX21ldGFjbGFzc2VzOgorCitNZXRhY2xhc3NlcworXl5eXl5eXl5eXl4KKwogQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgOmZ1bmM6YHR5cGVgLiBUaGUgY2xhc3MgYm9keSBpcwogZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZQogcmVzdWx0IG9mIGBgdHlwZShuYW1lLCBiYXNlcywgbmFtZXNwYWNlKWBgLgpAQCAtMTY5MCw3ICsxNzU3LDcgQEAKIGFkZGl0aW9uYWwga2V5d29yZCBhcmd1bWVudHMsIGlmIGFueSwgY29tZSBmcm9tIHRoZSBjbGFzcyBkZWZpbml0aW9uKS4KIAogSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gYGBfX3ByZXBhcmVfX2BgIGF0dHJpYnV0ZSwgdGhlbiB0aGUgY2xhc3MgbmFtZXNwYWNlCi1pcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSA6ZnVuYzpgZGljdGAgaW5zdGFuY2UuCitpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSBvcmRlcmVkIG1hcHBpbmcuCiAKIC4uIHNlZWFsc286OgogCkBAIC0xNzM0LDkgKzE4MDEsOSBAQAogaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBhcyB0aGUgZGVmaW5lZCBjbGFzcy4KIAogV2hlbiBhIG5ldyBjbGFzcyBpcyBjcmVhdGVkIGJ5IGBgdHlwZS5fX25ld19fYGAsIHRoZSBvYmplY3QgcHJvdmlkZWQgYXMgdGhlCi1uYW1lc3BhY2UgcGFyYW1ldGVyIGlzIGNvcGllZCB0byBhIHN0YW5kYXJkIFB5dGhvbiBkaWN0aW9uYXJ5IGFuZCB0aGUgb3JpZ2luYWwKLW9iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBiZWNvbWVzIHRoZSA6YXR0cjpgfm9iamVjdC5fX2RpY3RfX2AgYXR0cmlidXRlCi1vZiB0aGUgY2xhc3Mgb2JqZWN0LgorbmFtZXNwYWNlIHBhcmFtZXRlciBpcyBjb3BpZWQgdG8gYSBuZXcgb3JkZXJlZCBtYXBwaW5nIGFuZCB0aGUgb3JpZ2luYWwKK29iamVjdCBpcyBkaXNjYXJkZWQuIFRoZSBuZXcgY29weSBpcyB3cmFwcGVkIGluIGEgcmVhZC1vbmx5IHByb3h5LCB3aGljaAorYmVjb21lcyB0aGUgOmF0dHI6YH5vYmplY3QuX19kaWN0X19gIGF0dHJpYnV0ZSBvZiB0aGUgY2xhc3Mgb2JqZWN0LgogCiAuLiBzZWVhbHNvOjoKIApAQCAtMjA1OSw3ICsyMTI2LDcgQEAKICAgIChgYCtgYCwgYGAtYGAsIGBgKmBgLCBgYEBgYCwgYGAvYGAsIGBgLy9gYCwgYGAlYGAsIDpmdW5jOmBkaXZtb2RgLAogICAgOmZ1bmM6YHBvd2AsIGBgKipgYCwgYGA8PGBgLCBgYD4+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+YDo6CiAKLSAgICBjOlxUZW1wPmM6XFB5dGhvbjM1XHB5dGhvbiAtbSB2ZW52IG15ZW52CisgICAgYzpcPnB5dGhvbiAtbSB2ZW52IG15ZW52IGM6XHBhdGhcdG9cbXllbnYKIAogVGhlIGNvbW1hbmQsIGlmIHJ1biB3aXRoIGBgLWhgYCwgd2lsbCBzaG93IHRoZSBhdmFpbGFibGUgb3B0aW9uczo6CiAKQEAgLTM2LDI1ICs0NCwyNiBAQAogICAgIENyZWF0ZXMgdmlydHVhbCBQeXRob24gZW52aXJvbm1lbnRzIGluIG9uZSBvciBtb3JlIHRhcmdldCBkaXJlY3Rvcmllcy4KIAogICAgIHBvc2l0aW9uYWwgYXJndW1lbnRzOgotICAgICAgRU5WX0RJUiAgICAgICAgICAgICBBIGRpcmVjdG9yeSB0byBjcmVhdGUgdGhlIGVudmlyb25tZW50IGluLgorICAgICAgRU5WX0RJUiAgICAgICAgICAgICAgIEEgZGlyZWN0b3J5IHRvIGNyZWF0ZSB0aGUgZW52aXJvbm1lbnQgaW4uCiAKICAgICBvcHRpb25hbCBhcmd1bWVudHM6Ci0gICAgICAtaCwgLS1oZWxwICAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKLSAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMgR2l2ZSB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBhY2Nlc3MgdG8gdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXRlLXBhY2thZ2VzIGRpci4KLSAgICAgIC0tc3ltbGlua3MgICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJlIG5vdCB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jb3BpZXMgICAgICAgICAgICAgICBUcnkgdG8gdXNlIGNvcGllcyByYXRoZXIgdGhhbiBzeW1saW5rcywgZXZlbiB3aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgotICAgICAgLS1jbGVhciAgICAgICAgICAgICAgICBEZWxldGUgdGhlIGNvbnRlbnRzIG9mIHRoZSBlbnZpcm9ubWVudCBkaXJlY3RvcnkgaWYgaXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBleGlzdHMsIGJlZm9yZSBlbnZpcm9ubWVudCBjcmVhdGlvbi4KLSAgICAgIC0tdXBncmFkZSAgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgUHl0aG9uLCBhc3N1bWluZyBQeXRob24gaGFzIGJlZW4gdXBncmFkZWQgaW4tcGxhY2UuCi0gICAgICAtLXdpdGhvdXQtcGlwICAgICAgICAgIFNraXBzIGluc3RhbGxpbmcgb3IgdXBncmFkaW5nIHBpcCBpbiB0aGUgdmlydHVhbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQorICAgICAgLWgsIC0taGVscCAgICAgICAgICAgIHNob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyAgICAgIC0tc3lzdGVtLXNpdGUtcGFja2FnZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBHaXZlIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50IGFjY2VzcyB0byB0aGUgc3lzdGVtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2l0ZS1wYWNrYWdlcyBkaXIuCisgICAgICAtLXN5bWxpbmtzICAgICAgICAgICAgVHJ5IHRvIHVzZSBzeW1saW5rcyByYXRoZXIgdGhhbiBjb3BpZXMsIHdoZW4gc3ltbGlua3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmUgbm90IHRoZSBkZWZhdWx0IGZvciB0aGUgcGxhdGZvcm0uCisgICAgICAtLWNvcGllcyAgICAgICAgICAgICAgVHJ5IHRvIHVzZSBjb3BpZXMgcmF0aGVyIHRoYW4gc3ltbGlua3MsIGV2ZW4gd2hlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5bWxpbmtzIGFyZSB0aGUgZGVmYXVsdCBmb3IgdGhlIHBsYXRmb3JtLgorICAgICAgLS1jbGVhciAgICAgICAgICAgICAgIERlbGV0ZSB0aGUgY29udGVudHMgb2YgdGhlIGVudmlyb25tZW50IGRpcmVjdG9yeSBpZiBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscmVhZHkgZXhpc3RzLCBiZWZvcmUgZW52aXJvbm1lbnQgY3JlYXRpb24uCisgICAgICAtLXVwZ3JhZGUgICAgICAgICAgICAgVXBncmFkZSB0aGUgZW52aXJvbm1lbnQgZGlyZWN0b3J5IHRvIHVzZSB0aGlzIHZlcnNpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiBQeXRob24sIGFzc3VtaW5nIFB5dGhvbiBoYXMgYmVlbiB1cGdyYWRlZCBpbi1wbGFjZS4KKyAgICAgIC0td2l0aG91dC1waXAgICAgICAgICBTa2lwcyBpbnN0YWxsaW5nIG9yIHVwZ3JhZGluZyBwaXAgaW4gdGhlIHZpcnR1YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnZpcm9ubWVudCAocGlwIGlzIGJvb3RzdHJhcHBlZCBieSBkZWZhdWx0KQogCi1EZXBlbmRpbmcgb24gaG93IHRoZSBgYHZlbnZgYCBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIGludm9rZWQsIHRoZSB1c2FnZSBtZXNzYWdlCi1tYXkgdmFyeSBzbGlnaHRseSwgZS5nLiByZWZlcmVuY2luZyBgYHB5dmVudmBgIHJhdGhlciB0aGFuIGBgdmVudmBgLgorICAgIE9uY2UgYW4gZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgeW91IG1heSB3aXNoIHRvIGFjdGl2YXRlIGl0LCBlLmcuIGJ5CisgICAgc291cmNpbmcgYW4gYWN0aXZhdGUgc2NyaXB0IGluIGl0cyBiaW4gZGlyZWN0b3J5LgogCiAuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNAogICAgSW5zdGFsbHMgcGlwIGJ5IGRlZmF1bHQsIGFkZGVkIHRoZSBgYC0td2l0aG91dC1waXBgYCAgYW5kIGBgLS1jb3BpZXNgYApAQCAtNzMsMTIgKzgyLDEzIEBACiBVbmxlc3MgdGhlIGBgLS13aXRob3V0LXBpcGBgIG9wdGlvbiBpcyBnaXZlbiwgOm1vZDpgZW5zdXJlcGlwYCB3aWxsIGJlCiBpbnZva2VkIHRvIGJvb3RzdHJhcCBgYHBpcGBgIGludG8gdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQuCiAKLU11bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHB5dmVudmBgLCBpbiB3aGljaCBjYXNlIGFuIGlkZW50aWNhbAotdmlydHVhbGVudiB3aWxsIGJlIGNyZWF0ZWQsIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4gb3B0aW9ucywgYXQgZWFjaAotcHJvdmlkZWQgcGF0aC4KK011bHRpcGxlIHBhdGhzIGNhbiBiZSBnaXZlbiB0byBgYHZlbnZgYCwgaW4gd2hpY2ggY2FzZSBhbiBpZGVudGljYWwgdmlydHVhbAorZW52aXJvbm1lbnQgd2lsbCBiZSBjcmVhdGVkLCBhY2NvcmRpbmcgdG8gdGhlIGdpdmVuIG9wdGlvbnMsIGF0IGVhY2ggcHJvdmlkZWQKK3BhdGguCiAKLU9uY2UgYSB2ZW52IGhhcyBiZWVuIGNyZWF0ZWQsIGl0IGNhbiBiZSAiYWN0aXZhdGVkIiB1c2luZyBhIHNjcmlwdCBpbiB0aGUKLXZlbnYncyBiaW5hcnkgZGlyZWN0b3J5LiBUaGUgaW52b2NhdGlvbiBvZiB0aGUgc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgorT25jZSBhIHZpcnR1YWwgZW52aXJvbm1lbnQgaGFzIGJlZW4gY3JlYXRlZCwgaXQgY2FuIGJlICJhY3RpdmF0ZWQiIHVzaW5nIGEKK3NjcmlwdCBpbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCdzIGJpbmFyeSBkaXJlY3RvcnkuIFRoZSBpbnZvY2F0aW9uIG9mIHRoZQorc2NyaXB0IGlzIHBsYXRmb3JtLXNwZWNpZmljOgogCiArLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKIHwgUGxhdGZvcm0gICAgfCBTaGVsbCAgICAgICAgICAgfCBDb21tYW5kIHRvIGFjdGl2YXRlIHZpcnR1YWwgZW52aXJvbm1lbnQgfApAQCAtOTUsMTYgKzEwNSwxNyBAQAogKy0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCiAKIFlvdSBkb24ndCBzcGVjaWZpY2FsbHkgKm5lZWQqIHRvIGFjdGl2YXRlIGFuIGVudmlyb25tZW50OyBhY3RpdmF0aW9uIGp1c3QKLXByZXBlbmRzIHRoZSB2ZW52J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQgInB5dGhvbiIgaW52b2tlcyB0aGUKLXZlbnYncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuIGluc3RhbGxlZCBzY3JpcHRzIHdpdGhvdXQgaGF2aW5nIHRvCi11c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cyBpbnN0YWxsZWQgaW4gYSB2ZW52IHNob3VsZCBiZQotcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LCBhbmQgcnVuIHdpdGggdGhlIHZlbnYncyBQeXRob24gYXV0b21hdGljYWxseS4KK3ByZXBlbmRzIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgYmluYXJ5IGRpcmVjdG9yeSB0byB5b3VyIHBhdGgsIHNvIHRoYXQKKyJweXRob24iIGludm9rZXMgdGhlIHZpcnR1YWwgZW52aXJvbm1lbnQncyBQeXRob24gaW50ZXJwcmV0ZXIgYW5kIHlvdSBjYW4gcnVuCitpbnN0YWxsZWQgc2NyaXB0cyB3aXRob3V0IGhhdmluZyB0byB1c2UgdGhlaXIgZnVsbCBwYXRoLiBIb3dldmVyLCBhbGwgc2NyaXB0cworaW5zdGFsbGVkIGluIGEgdmlydHVhbCBlbnZpcm9ubWVudCBzaG91bGQgYmUgcnVubmFibGUgd2l0aG91dCBhY3RpdmF0aW5nIGl0LAorYW5kIHJ1biB3aXRoIHRoZSB2aXJ0dWFsIGVudmlyb25tZW50J3MgUHl0aG9uIGF1dG9tYXRpY2FsbHkuCiAKLVlvdSBjYW4gZGVhY3RpdmF0ZSBhIHZlbnYgYnkgdHlwaW5nICJkZWFjdGl2YXRlIiBpbiB5b3VyIHNoZWxsLiBUaGUgZXhhY3QKLW1lY2hhbmlzbSBpcyBwbGF0Zm9ybS1zcGVjaWZpYzogZm9yIGV4YW1wbGUsIHRoZSBCYXNoIGFjdGl2YXRpb24gc2NyaXB0IGRlZmluZXMKLWEgImRlYWN0aXZhdGUiIGZ1bmN0aW9uLCB3aGVyZWFzIG9uIFdpbmRvd3MgdGhlcmUgYXJlIHNlcGFyYXRlIHNjcmlwdHMgY2FsbGVkCi1gYGRlYWN0aXZhdGUuYmF0YGAgYW5kIGBgRGVhY3RpdmF0ZS5wczFgYCB3aGljaCBhcmUgaW5zdGFsbGVkIHdoZW4gdGhlIHZlbnYgaXMKLWNyZWF0ZWQuCitZb3UgY2FuIGRlYWN0aXZhdGUgYSB2aXJ0dWFsIGVudmlyb25tZW50IGJ5IHR5cGluZyAiZGVhY3RpdmF0ZSIgaW4geW91ciBzaGVsbC4KK1RoZSBleGFjdCBtZWNoYW5pc20gaXMgcGxhdGZvcm0tc3BlY2lmaWM6IGZvciBleGFtcGxlLCB0aGUgQmFzaCBhY3RpdmF0aW9uCitzY3JpcHQgZGVmaW5lcyBhICJkZWFjdGl2YXRlIiBmdW5jdGlvbiwgd2hlcmVhcyBvbiBXaW5kb3dzIHRoZXJlIGFyZSBzZXBhcmF0ZQorc2NyaXB0cyBjYWxsZWQgYGBkZWFjdGl2YXRlLmJhdGBgIGFuZCBgYERlYWN0aXZhdGUucHMxYGAgd2hpY2ggYXJlIGluc3RhbGxlZAord2hlbiB0aGUgdmlydHVhbCBlbnZpcm9ubWVudCBpcyBjcmVhdGVkLgogCiAuLiB2ZXJzaW9uYWRkZWQ6OiAzLjQKICAgIGBgZmlzaGBgIGFuZCBgYGNzaGBgIGFjdGl2YXRpb24gc2NyaXB0cy4KZGlmZiAtLWdpdCBhL0RvYy91c2luZy93aW5kb3dzLnJzdCBiL0RvYy91c2luZy93aW5kb3dzLnJzdAppbmRleCBhNGE2YTMwLi5iNmNhMGQyIDEwMDY0NAotLS0gYS9Eb2MvdXNpbmcvd2luZG93cy5yc3QKKysrIGIvRG9jL3VzaW5nL3dpbmRvd3MucnN0CkBAIC0yOSwxNSArMjksMTUgQEAKIAogQXMgc3BlY2lmaWVkIGluIDpwZXA6YDExYCwgYSBQeXRob24gcmVsZWFzZSBvbmx5IHN1cHBvcnRzIGEgV2luZG93cyBwbGF0Zm9ybQogd2hpbGUgTWljcm9zb2Z0IGNvbnNpZGVycyB0aGUgcGxhdGZvcm0gdW5kZXIgZXh0ZW5kZWQgc3VwcG9ydC4gVGhpcyBtZWFucyB0aGF0Ci1QeXRob24gMy41IHN1cHBvcnRzIFdpbmRvd3MgVmlzdGEgYW5kIG5ld2VyLiBJZiB5b3UgcmVxdWlyZSBXaW5kb3dzIFhQIHN1cHBvcnQKLXRoZW4gcGxlYXNlIGluc3RhbGwgUHl0aG9uIDMuNC4KK1B5dGhvbiB8dmVyc2lvbnwgc3VwcG9ydHMgV2luZG93cyBWaXN0YSBhbmQgbmV3ZXIuIElmIHlvdSByZXF1aXJlIFdpbmRvd3MgWFAKK3N1cHBvcnQgdGhlbiBwbGVhc2UgaW5zdGFsbCBQeXRob24gMy40LgogCiBJbnN0YWxsYXRpb24gU3RlcHMKIC0tLS0tLS0tLS0tLS0tLS0tLQogCi1Gb3VyIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUgMzItYml0Ci1hbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsIGluaXRpYWwKLWRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCitGb3VyIFB5dGhvbiB8dmVyc2lvbnwgaW5zdGFsbGVycyBhcmUgYXZhaWxhYmxlIGZvciBkb3dubG9hZCAtIHR3byBlYWNoIGZvciB0aGUKKzMyLWJpdCBhbmQgNjQtYml0IHZlcnNpb25zIG9mIHRoZSBpbnRlcnByZXRlci4gVGhlICp3ZWIgaW5zdGFsbGVyKiBpcyBhIHNtYWxsCitpbml0aWFsIGRvd25sb2FkLCBhbmQgaXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRvd25sb2FkIHRoZSByZXF1aXJlZCBjb21wb25lbnRzIGFzCiBuZWNlc3NhcnkuIFRoZSAqb2ZmbGluZSBpbnN0YWxsZXIqIGluY2x1ZGVzIHRoZSBjb21wb25lbnRzIG5lY2Vzc2FyeSBmb3IgYQogZGVmYXVsdCBpbnN0YWxsYXRpb24gYW5kIG9ubHkgcmVxdWlyZXMgYW4gaW50ZXJuZXQgY29ubmVjdGlvbiBmb3Igb3B0aW9uYWwKIGZlYXR1cmVzLiBTZWUgOnJlZjpgaW5zdGFsbC1sYXlvdXQtb3B0aW9uYCBmb3Igb3RoZXIgd2F5cyB0byBhdm9pZCBkb3dubG9hZGluZwpAQCAtNzQsNiArNzQsMzEgQEAKICogSWYgc2VsZWN0ZWQsIHRoZSBpbnN0YWxsIGRpcmVjdG9yeSB3aWxsIGJlIGFkZGVkIHRvIHRoZSBzeXN0ZW0gOmVudnZhcjpgUEFUSGAKICogU2hvcnRjdXRzIGFyZSBhdmFpbGFibGUgZm9yIGFsbCB1c2VycwogCisuLiBfbWF4LXBhdGg6CisKK1JlbW92aW5nIHRoZSBNQVhfUEFUSCBMaW1pdGF0aW9uCistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitXaW5kb3dzIGhpc3RvcmljYWxseSBoYXMgbGltaXRlZCBwYXRoIGxlbmd0aHMgdG8gMjYwIGNoYXJhY3RlcnMuIFRoaXMgbWVhbnQgdGhhdAorcGF0aHMgbG9uZ2VyIHRoYW4gdGhpcyB3b3VsZCBub3QgcmVzb2x2ZSBhbmQgZXJyb3JzIHdvdWxkIHJlc3VsdC4KKworSW4gdGhlIGxhdGVzdCB2ZXJzaW9ucyBvZiBXaW5kb3dzLCB0aGlzIGxpbWl0YXRpb24gY2FuIGJlIGV4cGFuZGVkIHRvCithcHByb3hpbWF0ZWx5IDMyLDAwMCBjaGFyYWN0ZXJzLiBZb3VyIGFkbWluaXN0cmF0b3Igd2lsbCBuZWVkIHRvIGFjdGl2YXRlIHRoZQorIkVuYWJsZSBXaW4zMiBsb25nIHBhdGhzIiBncm91cCBwb2xpY3ksIG9yIHNldCB0aGUgcmVnaXN0cnkgdmFsdWUKK2BgSEtFWV9MT0NBTF9NQUNISU5FXFNZU1RFTVxDdXJyZW50Q29udHJvbFNldFxDb250cm9sXEZpbGVTeXN0ZW1ATG9uZ1BhdGhzRW5hYmxlZGBgCit0byBgYDFgYC4KKworVGhpcyBhbGxvd3MgdGhlIDpmdW5jOmBvcGVuYCBmdW5jdGlvbiwgdGhlIDptb2Q6YG9zYCBtb2R1bGUgYW5kIG1vc3Qgb3RoZXIKK3BhdGggZnVuY3Rpb25hbGl0eSB0byBhY2NlcHQgYW5kIHJldHVybiBwYXRocyBsb25nZXIgdGhhbiAyNjAgY2hhcmFjdGVycyB3aGVuCit1c2luZyBzdHJpbmdzLiAoVXNlIG9mIGJ5dGVzIGFzIHBhdGhzIGlzIGRlcHJlY2F0ZWQgb24gV2luZG93cywgYW5kIHRoaXMgZmVhdHVyZQoraXMgbm90IGF2YWlsYWJsZSB3aGVuIHVzaW5nIGJ5dGVzLikKKworQWZ0ZXIgY2hhbmdpbmcgdGhlIGFib3ZlIG9wdGlvbiwgbm8gZnVydGhlciBjb25maWd1cmF0aW9uIGlzIHJlcXVpcmVkLgorCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCisgICBTdXBwb3J0IGZvciBsb25nIHBhdGhzIHdhcyBlbmFibGVkIGluIFB5dGhvbi4KKwogLi4gX2luc3RhbGwtcXVpZXQtb3B0aW9uOgogCiBJbnN0YWxsaW5nIFdpdGhvdXQgVUkKQEAgLTE2OCwxMyArMTkzLDEzIEBACiBGb3IgZXhhbXBsZSwgdG8gc2lsZW50bHkgaW5zdGFsbCBhIGRlZmF1bHQsIHN5c3RlbS13aWRlIFB5dGhvbiBpbnN0YWxsYXRpb24sCiB5b3UgY291bGQgdXNlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCAoZnJvbSBhbiBlbGV2YXRlZCBjb21tYW5kIHByb21wdCk6OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSAvcXVpZXQgSW5zdGFsbEFsbFVzZXJzPTEgUHJlcGVuZFBhdGg9MSBJbmNsdWRlX3Rlc3Q9MAorICAgIHB5dGhvbi0zLjYuMC5leGUgL3F1aWV0IEluc3RhbGxBbGxVc2Vycz0xIFByZXBlbmRQYXRoPTEgSW5jbHVkZV90ZXN0PTAKIAogVG8gYWxsb3cgdXNlcnMgdG8gZWFzaWx5IGluc3RhbGwgYSBwZXJzb25hbCBjb3B5IG9mIFB5dGhvbiB3aXRob3V0IHRoZSB0ZXN0CiBzdWl0ZSwgeW91IGNvdWxkIHByb3ZpZGUgYSBzaG9ydGN1dCB3aXRoIHRoZSBmb2xsb3dpbmcgY29tbWFuZC4gVGhpcyB3aWxsCiBkaXNwbGF5IGEgc2ltcGxpZmllZCBpbml0aWFsIHBhZ2UgYW5kIGRpc2FsbG93IGN1c3RvbWl6YXRpb246OgogCi0gICAgcHl0aG9uLTMuNS4wLmV4ZSBJbnN0YWxsQWxsVXNlcnM9MCBJbmNsdWRlX2xhdW5jaGVyPTAgSW5jbHVkZV90ZXN0PTAKKyAgICBweXRob24tMy42LjAuZXhlIEluc3RhbGxBbGxVc2Vycz0wIEluY2x1ZGVfbGF1bmNoZXI9MCBJbmNsdWRlX3Rlc3Q9MAogICAgICAgICBTaW1wbGVJbnN0YWxsPTEgU2ltcGxlSW5zdGFsbERlc2NyaXB0aW9uPSJKdXN0IGZvciBtZSwgbm8gdGVzdCBzdWl0ZS4iCiAKIChOb3RlIHRoYXQgb21pdHRpbmcgdGhlIGxhdW5jaGVyIGFsc28gb21pdHMgZmlsZSBhc3NvY2lhdGlvbnMsIGFuZCBpcyBvbmx5CkBAIC0yMDksMTMgKzIzNCwxMyBAQAogdXNlZnVsIHRvIGhhdmUgYSBsb2NhbGx5IGNhY2hlZCBjb3B5LgogCiBFeGVjdXRlIHRoZSBmb2xsb3dpbmcgY29tbWFuZCBmcm9tIENvbW1hbmQgUHJvbXB0IHRvIGRvd25sb2FkIGFsbCBwb3NzaWJsZQotcmVxdWlyZWQgZmlsZXMuICBSZW1lbWJlciB0byBzdWJzdGl0dXRlIGBgcHl0aG9uLTMuNS4wLmV4ZWBgIGZvciB0aGUgYWN0dWFsCityZXF1aXJlZCBmaWxlcy4gIFJlbWVtYmVyIHRvIHN1YnN0aXR1dGUgYGBweXRob24tMy42LjAuZXhlYGAgZm9yIHRoZSBhY3R1YWwKIG5hbWUgb2YgeW91ciBpbnN0YWxsZXIsIGFuZCB0byBjcmVhdGUgbGF5b3V0cyBpbiB0aGVpciBvd24gZGlyZWN0b3JpZXMgdG8KIGF2b2lkIGNvbGxpc2lvbnMgYmV0d2VlbiBmaWxlcyB3aXRoIHRoZSBzYW1lIG5hbWUuCiAKIDo6CiAKLSAgICBweXRob24tMy41LjAuZXhlIC9sYXlvdXQgW29wdGlvbmFsIHRhcmdldCBkaXJlY3RvcnldCisgICAgcHl0aG9uLTMuNi4wLmV4ZSAvbGF5b3V0IFtvcHRpb25hbCB0YXJnZXQgZGlyZWN0b3J5XQogCiBZb3UgbWF5IGFsc28gc3BlY2lmeSB0aGUgYGAvcXVpZXRgYCBvcHRpb24gdG8gaGlkZSB0aGUgcHJvZ3Jlc3MgZGlzcGxheS4KIApAQCAtMzIwLDcgKzM0NSw3IEBACiBUbyB0ZW1wb3JhcmlseSBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBvcGVuIENvbW1hbmQgUHJvbXB0IGFuZCB1c2UgdGhlCiA6Y29tbWFuZDpgc2V0YCBjb21tYW5kOjoKIAotICAgIEM6XD5zZXQgUEFUSD1DOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjU7JVBBVEglCisgICAgQzpcPnNldCBQQVRIPUM6XFByb2dyYW0gRmlsZXNcUHl0aG9uIDMuNjslUEFUSCUKICAgICBDOlw+c2V0IFBZVEhPTlBBVEg9JVBZVEhPTlBBVEglO0M6XE15X3B5dGhvbl9saWIKICAgICBDOlw+cHl0aG9uCiAKQEAgLTM3NiwxMCArNDAxLDEwIEBACiAKIEJlc2lkZXMgdXNpbmcgdGhlIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCBzdGFydCBtZW51IGVudHJ5IGZvciB0aGUgUHl0aG9uCiBpbnRlcnByZXRlciwgeW91IG1pZ2h0IHdhbnQgdG8gc3RhcnQgUHl0aG9uIGluIHRoZSBjb21tYW5kIHByb21wdC4gVGhlCi1pbnN0YWxsZXIgZm9yIFB5dGhvbiAzLjUgYW5kIGxhdGVyIGhhcyBhbiBvcHRpb24gdG8gc2V0IHRoYXQgdXAgZm9yIHlvdS4KK2luc3RhbGxlciBoYXMgYW4gb3B0aW9uIHRvIHNldCB0aGF0IHVwIGZvciB5b3UuCiAKLU9uIHRoZSBmaXJzdCBwYWdlIG9mIHRoZSBpbnN0YWxsZXIsIGFuIG9wdGlvbiBsYWJlbGxlZCAiQWRkIFB5dGhvbiAzLjUgdG8KLVBBVEgiIGNhbiBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCitPbiB0aGUgZmlyc3QgcGFnZSBvZiB0aGUgaW5zdGFsbGVyLCBhbiBvcHRpb24gbGFiZWxsZWQgIkFkZCBQeXRob24gdG8gUEFUSCIKK21heSBiZSBzZWxlY3RlZCB0byBoYXZlIHRoZSBpbnN0YWxsZXIgYWRkIHRoZSBpbnN0YWxsIGxvY2F0aW9uIGludG8gdGhlCiA6ZW52dmFyOmBQQVRIYC4gIFRoZSBsb2NhdGlvbiBvZiB0aGUgOmZpbGU6YFNjcmlwdHNcXGAgZm9sZGVyIGlzIGFsc28gYWRkZWQuCiBUaGlzIGFsbG93cyB5b3UgdG8gdHlwZSA6Y29tbWFuZDpgcHl0aG9uYCB0byBydW4gdGhlIGludGVycHJldGVyLCBhbmQKIDpjb21tYW5kOmBwaXBgIGZvciB0aGUgcGFja2FnZSBpbnN0YWxsZXIuIFRodXMsIHlvdSBjYW4gYWxzbyBleGVjdXRlIHlvdXIKQEAgLTM5Myw3ICs0MTgsNyBAQAogZXhhbXBsZSB2YXJpYWJsZSBjb3VsZCBsb29rIGxpa2UgdGhpcyAoYXNzdW1pbmcgdGhlIGZpcnN0IHR3byBlbnRyaWVzIGFscmVhZHkKIGV4aXN0ZWQpOjoKIAotICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI7QzpcV0lORE9XUztDOlxQcm9ncmFtIEZpbGVzXFB5dGhvbiAzLjUKKyAgICBDOlxXSU5ET1dTXHN5c3RlbTMyO0M6XFdJTkRPV1M7QzpcUHJvZ3JhbSBGaWxlc1xQeXRob24gMy42CiAKIC4uIF9sYXVuY2hlcjoKIApAQCAtNDE4LDYgKzQ0Myw4IEBACiBGcm9tIHRoZSBjb21tYW5kLWxpbmUKIF5eXl5eXl5eXl5eXl5eXl5eXl5eXgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6IDMuNgorCiBTeXN0ZW0td2lkZSBpbnN0YWxsYXRpb25zIG9mIFB5dGhvbiAzLjMgYW5kIGxhdGVyIHdpbGwgcHV0IHRoZSBsYXVuY2hlciBvbiB5b3VyCiA6ZW52dmFyOmBQQVRIYC4gVGhlIGxhdW5jaGVyIGlzIGNvbXBhdGlibGUgd2l0aCBhbGwgYXZhaWxhYmxlIHZlcnNpb25zIG9mCiBQeXRob24sIHNvIGl0IGRvZXMgbm90IG1hdHRlciB3aGljaCB2ZXJzaW9uIGlzIGluc3RhbGxlZC4gVG8gY2hlY2sgdGhhdCB0aGUKQEAgLTQyNywyNSArNDU0LDI2IEBACiAKICAgcHkKIAotWW91IHNob3VsZCBmaW5kIHRoYXQgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFB5dGhvbiAyLnggeW91IGhhdmUgaW5zdGFsbGVkIGlzCitZb3Ugc2hvdWxkIGZpbmQgdGhhdCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIHlvdSBoYXZlIGluc3RhbGxlZCBpcwogc3RhcnRlZCAtIGl0IGNhbiBiZSBleGl0ZWQgYXMgbm9ybWFsLCBhbmQgYW55IGFkZGl0aW9uYWwgY29tbWFuZC1saW5lCiBhcmd1bWVudHMgc3BlY2lmaWVkIHdpbGwgYmUgc2VudCBkaXJlY3RseSB0byBQeXRob24uCiAKLUlmIHlvdSBoYXZlIG11bHRpcGxlIHZlcnNpb25zIG9mIFB5dGhvbiAyLnggaW5zdGFsbGVkIChlLmcuLCAyLjYgYW5kIDIuNykgeW91Ci13aWxsIGhhdmUgbm90aWNlZCB0aGF0IFB5dGhvbiAyLjcgd2FzIHN0YXJ0ZWQgLSB0byBsYXVuY2ggUHl0aG9uIDIuNiwgdHJ5IHRoZQorSWYgeW91IGhhdmUgbXVsdGlwbGUgdmVyc2lvbnMgb2YgUHl0aG9uIGluc3RhbGxlZCAoZS5nLiwgMi43IGFuZCB8dmVyc2lvbnwpIHlvdQord2lsbCBoYXZlIG5vdGljZWQgdGhhdCBQeXRob24gfHZlcnNpb258IHdhcyBzdGFydGVkIC0gdG8gbGF1bmNoIFB5dGhvbiAyLjcsIHRyeQordGhlIGNvbW1hbmQ6CisKKzo6CisKKyAgcHkgLTIuNworCitJZiB5b3Ugd2FudCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCB5b3UgaGF2ZSBpbnN0YWxsZWQsIHRyeSB0aGUKIGNvbW1hbmQ6CiAKIDo6CiAKLSAgcHkgLTIuNgorICBweSAtMgogCi1JZiB5b3UgaGF2ZSBhIFB5dGhvbiAzLnggaW5zdGFsbGVkLCB0cnkgdGhlIGNvbW1hbmQ6Ci0KLTo6Ci0KLSAgcHkgLTMKLQotWW91IHNob3VsZCBmaW5kIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiBQeXRob24gMy54IHN0YXJ0cy4KK1lvdSBzaG91bGQgZmluZCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgUHl0aG9uIDIueCBzdGFydHMuCiAKIElmIHlvdSBzZWUgdGhlIGZvbGxvd2luZyBlcnJvciwgeW91IGRvIG5vdCBoYXZlIHRoZSBsYXVuY2hlciBpbnN0YWxsZWQ6CiAKQEAgLTUwMCw2ICs1MjgsMTEgQEAKIGZpcnN0IGxpbmUgdG8gYGAjISBweXRob24yLjZgYCBhbmQgeW91IHNob3VsZCBmaW5kIHRoZSAyLjYgdmVyc2lvbgogaW5mb3JtYXRpb24gcHJpbnRlZC4KIAorTm90ZSB0aGF0IHVubGlrZSBpbnRlcmFjdGl2ZSB1c2UsIGEgYmFyZSAicHl0aG9uIiB3aWxsIHVzZSB0aGUgbGF0ZXN0Cit2ZXJzaW9uIG9mIFB5dGhvbiAyLnggdGhhdCB5b3UgaGF2ZSBpbnN0YWxsZWQuICBUaGlzIGlzIGZvciBiYWNrd2FyZAorY29tcGF0aWJpbGl0eSBhbmQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBVbml4LCB3aGVyZSB0aGUgY29tbWFuZCBgYHB5dGhvbmBgCit0eXBpY2FsbHkgcmVmZXJzIHRvIFB5dGhvbiAyLgorCiBGcm9tIGZpbGUgYXNzb2NpYXRpb25zCiBeXl5eXl5eXl5eXl5eXl5eXl5eXl5eCiAKQEAgLTY3Niw3ICs3MDksNyBAQAogCiAKIAotLi4gZmluZGluZ19tb2R1bGVzOgorLi4gX2ZpbmRpbmdfbW9kdWxlczoKIAogRmluZGluZyBtb2R1bGVzCiA9PT09PT09PT09PT09PT0KQEAgLTY4Nyw3ICs3MjAsMjQgQEAKIDpmaWxlOmBDOlxcUHl0aG9uXFxMaWJcXGAgYW5kIHRoaXJkLXBhcnR5IG1vZHVsZXMgc2hvdWxkIGJlIHN0b3JlZCBpbgogOmZpbGU6YEM6XFxQeXRob25cXExpYlxcc2l0ZS1wYWNrYWdlc1xcYC4KIAotVGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24gV2luZG93czoKK1RvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgOmRhdGE6YHN5cy5wYXRoYCwgY3JlYXRlIGEgYGAuX3B0aGBgIGZpbGUgd2l0aCB0aGUgc2FtZQorbmFtZSBhcyB0aGUgRExMIChgYHB5dGhvbjM2Ll9wdGhgYCkgb3IgdGhlIGV4ZWN1dGFibGUgKGBgcHl0aG9uLl9wdGhgYCkgYW5kCitzcGVjaWZ5IG9uZSBsaW5lIGZvciBlYWNoIHBhdGggdG8gYWRkIHRvIDpkYXRhOmBzeXMucGF0aGAuIFRoZSBmaWxlIGJhc2VkIG9uIHRoZQorRExMIG5hbWUgb3ZlcnJpZGVzIHRoZSBvbmUgYmFzZWQgb24gdGhlIGV4ZWN1dGFibGUsIHdoaWNoIGFsbG93cyBwYXRocyB0byBiZQorcmVzdHJpY3RlZCBmb3IgYW55IHByb2dyYW0gbG9hZGluZyB0aGUgcnVudGltZSBpZiBkZXNpcmVkLgorCitXaGVuIHRoZSBmaWxlIGV4aXN0cywgYWxsIHJlZ2lzdHJ5IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgYXJlIGlnbm9yZWQsCitpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQsIGFuZCA6bW9kOmBzaXRlYCBpcyBub3QgaW1wb3J0ZWQgdW5sZXNzIG9uZSBsaW5lIGluIHRoZQorZmlsZSBzcGVjaWZpZXMgYGBpbXBvcnQgc2l0ZWBgLiBCbGFuayBwYXRocyBhbmQgbGluZXMgc3RhcnRpbmcgd2l0aCBgYCNgYCBhcmUKK2lnbm9yZWQuIEVhY2ggcGF0aCBtYXkgYmUgYWJzb2x1dGUgb3IgcmVsYXRpdmUgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZSBmaWxlLgorSW1wb3J0IHN0YXRlbWVudHMgb3RoZXIgdGhhbiB0byBgYHNpdGVgYCBhcmUgbm90IHBlcm1pdHRlZCwgYW5kIGFyYml0cmFyeSBjb2RlCitjYW5ub3QgYmUgc3BlY2lmaWVkLgorCitOb3RlIHRoYXQgYGAucHRoYGAgZmlsZXMgKHdpdGhvdXQgbGVhZGluZyB1bmRlcnNjb3JlKSB3aWxsIGJlIHByb2Nlc3NlZCBub3JtYWxseQorYnkgdGhlIDptb2Q6YHNpdGVgIG1vZHVsZS4KKworV2hlbiBubyBgYC5fcHRoYGAgZmlsZSBpcyBmb3VuZCwgdGhpcyBpcyBob3cgOmRhdGE6YHN5cy5wYXRoYCBpcyBwb3B1bGF0ZWQgb24KK1dpbmRvd3M6CiAKICogQW4gZW1wdHkgZW50cnkgaXMgYWRkZWQgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcyB0byB0aGUgY3VycmVudAogICBkaXJlY3RvcnkuCkBAIC03MDYsMTAgKzc1NiwxMSBAQAogCiAqIElmIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSA6ZW52dmFyOmBQWVRIT05IT01FYCBpcyBzZXQsIGl0IGlzIGFzc3VtZWQgYXMKICAgIlB5dGhvbiBIb21lIi4gIE90aGVyd2lzZSwgdGhlIHBhdGggb2YgdGhlIG1haW4gUHl0aG9uIGV4ZWN1dGFibGUgaXMgdXNlZCB0bwotICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGBgTGliXG9zLnB5YGApIHRvIGRlZHVjZSB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEKLSAgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYAotICAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0IGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUKLSAgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aCBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgorICBsb2NhdGUgYSAibGFuZG1hcmsgZmlsZSIgKGVpdGhlciBgYExpYlxvcy5weWBgIG9yIGBgcHl0aG9uWFkuemlwYGApIHRvIGRlZHVjZQorICB0aGUgIlB5dGhvbiBIb21lIi4gIElmIGEgUHl0aG9uIGhvbWUgaXMgZm91bmQsIHRoZSByZWxldmFudCBzdWItZGlyZWN0b3JpZXMKKyAgYWRkZWQgdG8gOmRhdGE6YHN5cy5wYXRoYCAoYGBMaWJgYCwgYGBwbGF0LXdpbmBgLCBldGMpIGFyZSBiYXNlZCBvbiB0aGF0CisgIGZvbGRlci4gIE90aGVyd2lzZSwgdGhlIGNvcmUgUHl0aG9uIHBhdGggaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgUHl0aG9uUGF0aAorICBzdG9yZWQgaW4gdGhlIHJlZ2lzdHJ5LgogCiAqIElmIHRoZSBQeXRob24gSG9tZSBjYW5ub3QgYmUgbG9jYXRlZCwgbm8gOmVudnZhcjpgUFlUSE9OUEFUSGAgaXMgc3BlY2lmaWVkIGluCiAgIHRoZSBlbnZpcm9ubWVudCwgYW5kIG5vIHJlZ2lzdHJ5IGVudHJpZXMgY2FuIGJlIGZvdW5kLCBhIGRlZmF1bHQgcGF0aCB3aXRoCkBAIC03MjIsMTAgKzc3Myw2IEBACiAgIHBhdGggaXMgdXNlZCBpbnN0ZWFkIG9mIHRoZSBwYXRoIHRvIHRoZSBtYWluIGV4ZWN1dGFibGUgd2hlbiBkZWR1Y2luZyB0aGUKICAgaG9tZSBsb2NhdGlvbi4KIAotKiBJZiBgYGFwcGxvY2FsYGAgaXMgc2V0IHRvIHRydWUsIHRoZSBgYGhvbWVgYCBwcm9wZXJ0eSBvciB0aGUgbWFpbiBleGVjdXRhYmxlCi0gIGlzIGFsd2F5cyB1c2VkIGFzIHRoZSBob21lIHBhdGgsIGFuZCBhbGwgZW52aXJvbm1lbnQgdmFyaWFibGVzIG9yIHJlZ2lzdHJ5Ci0gIHZhbHVlcyBhZmZlY3RpbmcgdGhlIHBhdGggYXJlIGlnbm9yZWQuIFRoZSBsYW5kbWFyayBmaWxlIGlzIG5vdCBjaGVja2VkLgotCiBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKIAogKiBXaGVuIHJ1bm5pbmcgOmZpbGU6YHB5dGhvbi5leGVgLCBvciBhbnkgb3RoZXIgLmV4ZSBpbiB0aGUgbWFpbiBQeXRob24KQEAgLTc0NCwxMyArNzkxLDEyIEBACiBGb3IgdGhvc2Ugd2hvIHdhbnQgdG8gYnVuZGxlIFB5dGhvbiBpbnRvIHRoZWlyIGFwcGxpY2F0aW9uIG9yIGRpc3RyaWJ1dGlvbiwgdGhlCiBmb2xsb3dpbmcgYWR2aWNlIHdpbGwgcHJldmVudCBjb25mbGljdHMgd2l0aCBvdGhlciBpbnN0YWxsYXRpb25zOgogCi0qIEluY2x1ZGUgYSBgYHB5dmVudi5jZmdgYCBmaWxlIGFsb25nc2lkZSB5b3VyIGV4ZWN1dGFibGUgY29udGFpbmluZwotICBgYGFwcGxvY2FsID0gdHJ1ZWBgLiBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgeW91ciBvd24gZGlyZWN0b3J5IHdpbGwgYmUgdXNlZCB0bwotICByZXNvbHZlIHBhdGhzIGV2ZW4gaWYgeW91IGhhdmUgaW5jbHVkZWQgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW4gYSBaSVAgZmlsZS4KLSAgSXQgd2lsbCBhbHNvIGlnbm9yZSB1c2VyIHNpdGUtcGFja2FnZXMgYW5kIG90aGVyIHBhdGhzIGxpc3RlZCBpbiB0aGUKLSAgcmVnaXN0cnkuCisqIEluY2x1ZGUgYSBgYC5fcHRoYGAgZmlsZSBhbG9uZ3NpZGUgeW91ciBleGVjdXRhYmxlIGNvbnRhaW5pbmcgdGhlCisgIGRpcmVjdG9yaWVzIHRvIGluY2x1ZGUuIFRoaXMgd2lsbCBpZ25vcmUgcGF0aHMgbGlzdGVkIGluIHRoZSByZWdpc3RyeSBhbmQKKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQgYWxzbyBpZ25vcmUgOm1vZDpgc2l0ZWAgdW5sZXNzIGBgaW1wb3J0IHNpdGVgYCBpcworICBsaXN0ZWQuCiAKLSogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM1LmRsbGAgaW4geW91ciBvd24KKyogSWYgeW91IGFyZSBsb2FkaW5nIDpmaWxlOmBweXRob24zLmRsbGAgb3IgOmZpbGU6YHB5dGhvbjM2LmRsbGAgaW4geW91ciBvd24KICAgZXhlY3V0YWJsZSwgZXhwbGljaXRseSBjYWxsIDpjOmZ1bmM6YFB5X1NldFBhdGhgIG9yIChhdCBsZWFzdCkKICAgOmM6ZnVuYzpgUHlfU2V0UHJvZ3JhbU5hbWVgIGJlZm9yZSA6YzpmdW5jOmBQeV9Jbml0aWFsaXplYC4KIApAQCAtNzYwLDcgKzgwNiw4IEBACiAqIElmIHlvdSBjYW5ub3QgdXNlIHRoZSBwcmV2aW91cyBzdWdnZXN0aW9ucyAoZm9yIGV4YW1wbGUsIHlvdSBhcmUgYQogICBkaXN0cmlidXRpb24gdGhhdCBhbGxvd3MgcGVvcGxlIHRvIHJ1biA6ZmlsZTpgcHl0aG9uLmV4ZWAgZGlyZWN0bHkpLCBlbnN1cmUKICAgdGhhdCB0aGUgbGFuZG1hcmsgZmlsZSAoOmZpbGU6YExpYlxcb3MucHlgKSBleGlzdHMgaW4geW91ciBpbnN0YWxsIGRpcmVjdG9yeS4KLSAgKE5vdGUgdGhhdCBpdCB3aWxsIG5vdCBiZSBkZXRlY3RlZCBpbnNpZGUgYSBaSVAgZmlsZS4pCisgIChOb3RlIHRoYXQgaXQgd2lsbCBub3QgYmUgZGV0ZWN0ZWQgaW5zaWRlIGEgWklQIGZpbGUsIGJ1dCBhIGNvcnJlY3RseSBuYW1lZAorICBaSVAgZmlsZSB3aWxsIGJlIGRldGVjdGVkIGluc3RlYWQuKQogCiBUaGVzZSB3aWxsIGVuc3VyZSB0aGF0IHRoZSBmaWxlcyBpbiBhIHN5c3RlbS13aWRlIGluc3RhbGxhdGlvbiB3aWxsIG5vdCB0YWtlCiBwcmVjZWRlbmNlIG92ZXIgdGhlIGNvcHkgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgYnVuZGxlZCB3aXRoIHlvdXIgYXBwbGljYXRpb24uCkBAIC03NjgsNiArODE1LDE0IEBACiB0aGUgZmlyc3Qgc3VnZ2VzdGlvbiBpcyB0aGUgYmVzdCwgYXMgdGhlIG90aGVyIG1heSBzdGlsbCBiZSBzdXNjZXB0aWJsZSB0bwogbm9uLXN0YW5kYXJkIHBhdGhzIGluIHRoZSByZWdpc3RyeSBhbmQgdXNlciBzaXRlLXBhY2thZ2VzLgogCisuLiB2ZXJzaW9uY2hhbmdlZDo6CisgICAzLjYKKworICAgKiBBZGRzIGBgLl9wdGhgYCBmaWxlIHN1cHBvcnQgYW5kIHJlbW92ZXMgYGBhcHBsb2NhbGBgIG9wdGlvbiBmcm9tCisgICAgIGBgcHl2ZW52LmNmZ2BgLgorICAgKiBBZGRzIGBgcHl0aG9uWFguemlwYGAgYXMgYSBwb3RlbnRpYWwgbGFuZG1hcmsgd2hlbiBkaXJlY3RseSBhZGphY2VudAorICAgICB0byB0aGUgZXhlY3V0YWJsZS4KKwogQWRkaXRpb25hbCBtb2R1bGVzCiA9PT09PT09PT09PT09PT09PT0KIApAQCAtODY3LDcgKzkyMiw3IEBACiBXaGVuIGV4dHJhY3RlZCwgdGhlIGVtYmVkZGVkIGRpc3RyaWJ1dGlvbiBpcyAoYWxtb3N0KSBmdWxseSBpc29sYXRlZCBmcm9tIHRoZQogdXNlcidzIHN5c3RlbSwgaW5jbHVkaW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgc3lzdGVtIHJlZ2lzdHJ5IHNldHRpbmdzLCBhbmQKIGluc3RhbGxlZCBwYWNrYWdlcy4gVGhlIHN0YW5kYXJkIGxpYnJhcnkgaXMgaW5jbHVkZWQgYXMgcHJlLWNvbXBpbGVkIGFuZAotb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM1LmRsbGBgLAorb3B0aW1pemVkIGBgLnB5Y2BgIGZpbGVzIGluIGEgWklQLCBhbmQgYGBweXRob24zLmRsbGBgLCBgYHB5dGhvbjM2LmRsbGBgLAogYGBweXRob24uZXhlYGAgYW5kIGBgcHl0aG9udy5leGVgYCBhcmUgYWxsIHByb3ZpZGVkLiBUY2wvdGsgKGluY2x1ZGluZyBhbGwKIGRlcGVuZGFudHMsIHN1Y2ggYXMgSWRsZSksIHBpcCBhbmQgdGhlIFB5dGhvbiBkb2N1bWVudGF0aW9uIGFyZSBub3QgaW5jbHVkZWQuCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8yLjEucnN0IGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKaW5kZXggMDYzNjZiOC4uNmFhZTcyNiAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzIuMS5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzIuMS5yc3QKQEAgLTM2Nyw3ICszNjcsNyBAQAogCiBUaGlzIHZlcnNpb24gd29ya3MgZm9yIHNpbXBsZSB0aGluZ3Mgc3VjaCBhcyBpbnRlZ2VycywgYnV0IGl0IGhhcyBhIHNpZGUgZWZmZWN0OwogdGhlIGBgX2NhY2hlYGAgZGljdGlvbmFyeSBob2xkcyBhIHJlZmVyZW5jZSB0byB0aGUgcmV0dXJuIHZhbHVlcywgc28gdGhleSdsbAotbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAgVGhpcyBpc24ndAorbmV2ZXIgYmUgZGVhbGxvY2F0ZWQgdW50aWwgdGhlIFB5dGhvbiBwcm9jZXNzIGV4aXRzIGFuZCBjbGVhbnMgdXAuIFRoaXMgaXNuJ3QKIHZlcnkgbm90aWNlYWJsZSBmb3IgaW50ZWdlcnMsIGJ1dCBpZiA6ZnVuYzpgZmAgcmV0dXJucyBhbiBvYmplY3QsIG9yIGEgZGF0YQogc3RydWN0dXJlIHRoYXQgdGFrZXMgdXAgYSBsb3Qgb2YgbWVtb3J5LCB0aGlzIGNhbiBiZSBhIHByb2JsZW0uCiAKZGlmZiAtLWdpdCBhL0RvYy93aGF0c25ldy8zLjIucnN0IGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKaW5kZXggOWYzNTg0ZC4uM2QyMzdlYSAxMDA2NDQKLS0tIGEvRG9jL3doYXRzbmV3LzMuMi5yc3QKKysrIGIvRG9jL3doYXRzbmV3LzMuMi5yc3QKQEAgLTEyNTMsOSArMTI1Myw5IEBACiAKICAgICBAY29udGV4dG1hbmFnZXIKICAgICBkZWYgdHJhY2tfZW50cnlfYW5kX2V4aXQobmFtZSk6Ci0gICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6IHt9Jy5mb3JtYXQobmFtZSkpCisgICAgICAgIGxvZ2dpbmcuaW5mbygnRW50ZXJpbmc6ICVzJywgbmFtZSkKICAgICAgICAgeWllbGQKLSAgICAgICAgbG9nZ2luZy5pbmZvKCdFeGl0aW5nOiB7fScuZm9ybWF0KG5hbWUpKQorICAgICAgICBsb2dnaW5nLmluZm8oJ0V4aXRpbmc6ICVzJywgbmFtZSkKIAogRm9ybWVybHksIHRoaXMgd291bGQgaGF2ZSBvbmx5IGJlZW4gdXNhYmxlIGFzIGEgY29udGV4dCBtYW5hZ2VyOjoKIApkaWZmIC0tZ2l0IGEvRG9jL3doYXRzbmV3LzMuMy5yc3QgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAppbmRleCAxY2ZhOTI2Li40OGI4YTNiIDEwMDY0NAotLS0gYS9Eb2Mvd2hhdHNuZXcvMy4zLnJzdAorKysgYi9Eb2Mvd2hhdHNuZXcvMy4zLnJzdApAQCAtMTA4LDcgKzEwOCw3IEBACiB3aXRoIHRoZSBpbnRlcnByZXRlciBjb3JlLgogCiBUaGlzIFBFUCBhZGRzIHRoZSA6bW9kOmB2ZW52YCBtb2R1bGUgZm9yIHByb2dyYW1tYXRpYyBhY2Nlc3MsIGFuZCB0aGUKLTpyZWY6YHB5dmVudiA8c2NyaXB0cy1weXZlbnY+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+b2JfdHlwZSkKICNkZWZpbmUgUHlfU0laRShvYikgICAgICAgICAgICAgKCgoUHlWYXJPYmplY3QqKShvYikpLT5vYl9zaXplKQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKioqKioqKioqKioqKioqKioqKioqIFN0cmluZyBMaXRlcmFscyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogLyogVGhpcyBzdHJ1Y3R1cmUgaGVscHMgbWFuYWdpbmcgc3RhdGljIHN0cmluZ3MuIFRoZSBiYXNpYyB1c2FnZSBnb2VzIGxpa2UgdGhpczoKICAgIEluc3RlYWQgb2YgZG9pbmcKQEAgLTE0NCwxMCArMTQ1LDEyIEBACiAgICAgUHlPYmplY3QgKm9iamVjdDsKIH0gX1B5X0lkZW50aWZpZXI7CiAKLSNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmdfaW5pdCh2YWx1ZSkgeyAwLCB2YWx1ZSwgMCB9CisjZGVmaW5lIF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpIHsgLm5leHQgPSBOVUxMLCAuc3RyaW5nID0gdmFsdWUsIC5vYmplY3QgPSBOVUxMIH0KICNkZWZpbmUgX1B5X3N0YXRpY19zdHJpbmcodmFybmFtZSwgdmFsdWUpICBzdGF0aWMgX1B5X0lkZW50aWZpZXIgdmFybmFtZSA9IF9QeV9zdGF0aWNfc3RyaW5nX2luaXQodmFsdWUpCiAjZGVmaW5lIF9QeV9JREVOVElGSUVSKHZhcm5hbWUpIF9QeV9zdGF0aWNfc3RyaW5nKFB5SWRfIyN2YXJuYW1lLCAjdmFybmFtZSkKIAorI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLworCiAvKgogVHlwZSBvYmplY3RzIGNvbnRhaW4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgdHlwZSBuYW1lICh0byBoZWxwIHNvbWV3aGF0CiBpbiBkZWJ1Z2dpbmcpLCB0aGUgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIChzZWUgUHlPYmplY3RfTmV3KCkgYW5kCkBAIC01MTIsOCArNTE1LDggQEAKICNlbmRpZgogCiAvKiBHZW5lcmljIG9wZXJhdGlvbnMgb24gb2JqZWN0cyAqLwotc3RydWN0IF9QeV9JZGVudGlmaWVyOwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorc3RydWN0IF9QeV9JZGVudGlmaWVyOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X1ByaW50KFB5T2JqZWN0ICosIEZJTEUgKiwgaW50KTsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0JyZWFrUG9pbnQodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9iamVjdF9EdW1wKFB5T2JqZWN0ICopOwpAQCAtNTMwLDExICs1MzMsMTEgQEAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfR2V0QXR0cihQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9TZXRBdHRyKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIFB5T2JqZWN0X0hhc0F0dHIoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKGludCkgX1B5T2JqZWN0X0lzQWJzdHJhY3QoUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9TZXRBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICosIFB5T2JqZWN0ICopOwogUHlBUElfRlVOQyhpbnQpIF9QeU9iamVjdF9IYXNBdHRySWQoUHlPYmplY3QgKiwgc3RydWN0IF9QeV9JZGVudGlmaWVyICopOwotI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKikgX1B5T2JqZWN0X0dldERpY3RQdHIoUHlPYmplY3QgKik7CiAjZW5kaWYKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPYmplY3RfU2VsZkl0ZXIoUHlPYmplY3QgKik7CkBAIC01NTcsNiArNTYwLDcgQEAKIFB5QVBJX0ZVTkMoaW50KSBQeU9iamVjdF9DYWxsRmluYWxpemVyRnJvbURlYWxsb2MoUHlPYmplY3QgKik7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2FtZSBhcyBQeU9iamVjdF9HZW5lcmlje0dldCxTZXR9QXR0ciwgYnV0IHBhc3NpbmcgdGhlIGF0dHJpYnV0ZXMKICAgIGRpY3QgYXMgdGhlIGxhc3QgcGFyYW1ldGVyLiAqLwogUHlBUElfRlVOQyhQeU9iamVjdCAqKQpAQCAtNTY0LDYgKzU2OCw3IEBACiBQeUFQSV9GVU5DKGludCkKIF9QeU9iamVjdF9HZW5lcmljU2V0QXR0cldpdGhEaWN0KFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogSGVscGVyIHRvIGxvb2sgdXAgYSBidWlsdGluIG9iamVjdCAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQpAQCAtNzA4LDcgKzcxMyw2IEBACiBQeUFQSV9EQVRBKFB5X3NzaXplX3QpIF9QeV9SZWZUb3RhbDsKIFB5QVBJX0ZVTkModm9pZCkgX1B5X05lZ2F0aXZlUmVmY291bnQoY29uc3QgY2hhciAqZm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lbm8sIFB5T2JqZWN0ICpvcCk7Ci1QeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeURpY3RfRHVtbXkodm9pZCk7CiBQeUFQSV9GVU5DKFB5X3NzaXplX3QpIF9QeV9HZXRSZWZUb3RhbCh2b2lkKTsKICNkZWZpbmUgX1B5X0lOQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsKysKICNkZWZpbmUgX1B5X0RFQ19SRUZUT1RBTCAgICAgICAgX1B5X1JlZlRvdGFsLS0KQEAgLTc4NSw3ICs3ODksNyBAQAogICAgICAgICAtLShfcHlfZGVjcmVmX3RtcCktPm9iX3JlZmNudCAhPSAwKSAgICAgICAgICAgICBcCiAgICAgICAgICAgICBfUHlfQ0hFQ0tfUkVGQ05UKF9weV9kZWNyZWZfdG1wKSAgICAgICAgICAgIFwKICAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBfUHlfRGVhbGxvYyhfcHlfZGVjcmVmX3RtcCk7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCiAvKiBTYWZlbHkgZGVjcmVmIGBvcGAgYW5kIHNldCBgb3BgIHRvIE5VTEwsIGVzcGVjaWFsbHkgdXNlZnVsIGluIHRwX2NsZWFyCkBAIC04ODksOCArODkzLDEwIEBACiBQeUFQSV9GVU5DKHZvaWQpIFB5X0luY1JlZihQeU9iamVjdCAqKTsKIFB5QVBJX0ZVTkModm9pZCkgUHlfRGVjUmVmKFB5T2JqZWN0ICopOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgX1B5Tm9uZV9UeXBlOwogUHlBUElfREFUQShQeVR5cGVPYmplY3QpIF9QeU5vdEltcGxlbWVudGVkX1R5cGU7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIC8qCiBfUHlfTm9uZVN0cnVjdCBpcyBhbiBvYmplY3Qgb2YgdW5kZWZpbmVkIHR5cGUgd2hpY2ggY2FuIGJlIHVzZWQgaW4gY29udGV4dHMKQEAgLTkyMywxMCArOTI5LDEyIEBACiAjZGVmaW5lIFB5X0dUIDQKICNkZWZpbmUgUHlfR0UgNQogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBNYXBzIFB5X0xUIHRvIFB5X0dULCAuLi4sIFB5X0dFIHRvIFB5X0xFLgogICogRGVmaW5lZCBpbiBvYmplY3QuYy4KICAqLwogUHlBUElfREFUQShpbnQpIF9QeV9Td2FwcGVkT3BbXTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogCiAvKgpAQCAtMTAyMywxMiArMTAzMSwxNCBAQAogd2l0aCB0aGUgY2FsbCBzdGFjayBuZXZlciBleGNlZWRpbmcgYSBkZXB0aCBvZiBQeVRyYXNoX1VOV0lORF9MRVZFTC4KICovCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFRoaXMgaXMgdGhlIG9sZCBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlZm9yZSAzLjIuNC4KICAgIEtlcHQgZm9yIGJpbmFyeSBjb21wYXRpYmlsaXR5IG9mIGV4dGVuc2lvbnMgdXNpbmcgdGhlIHN0YWJsZSBBQkkuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0KFB5T2JqZWN0Kik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW4odm9pZCk7CiBQeUFQSV9EQVRBKGludCkgX1B5VHJhc2hfZGVsZXRlX25lc3Rpbmc7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcjsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogLyogVGhlIG5ldyB0aHJlYWQtc2FmZSBwcml2YXRlIEFQSSwgaW52b2tlZCBieSB0aGUgbWFjcm9zIGJlbG93LiAqLwogUHlBUElfRlVOQyh2b2lkKSBfUHlUcmFzaF90aHJlYWRfZGVwb3NpdF9vYmplY3QoUHlPYmplY3QqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb2JqaW1wbC5oIGIvSW5jbHVkZS9vYmppbXBsLmgKaW5kZXggNjViNmQ5MS4uYzBlZDliNyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9vYmppbXBsLmgKKysrIGIvSW5jbHVkZS9vYmppbXBsLmgKQEAgLTk5LDggKzk5LDEwIEBACiBQeUFQSV9GVU5DKHZvaWQgKikgUHlPYmplY3RfUmVhbGxvYyh2b2lkICpwdHIsIHNpemVfdCBuZXdfc2l6ZSk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5T2JqZWN0X0ZyZWUodm9pZCAqcHRyKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogVGhpcyBmdW5jdGlvbiByZXR1cm5zIHRoZSBudW1iZXIgb2YgYWxsb2NhdGVkIG1lbW9yeSBibG9ja3MsIHJlZ2FyZGxlc3Mgb2Ygc2l6ZSAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBfUHlfR2V0QWxsb2NhdGVkQmxvY2tzKHZvaWQpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAvKiBNYWNyb3MgKi8KICNpZmRlZiBXSVRIX1BZTUFMTE9DCkBAIC0yMjQsMTEgKzIyNiwxMiBAQAogICogPT09PT09PT09PT09PT09PT09PT09PT09PT0KICAqLwogCi0vKiBDIGVxdWl2YWxlbnQgb2YgZ2MuY29sbGVjdCgpLiAqLworLyogQyBlcXVpdmFsZW50IG9mIGdjLmNvbGxlY3QoKSB3aGljaCBpZ25vcmVzIHRoZSBzdGF0ZSBvZiBnYy5lbmFibGVkLiAqLwogUHlBUElfRlVOQyhQeV9zc2l6ZV90KSBQeUdDX0NvbGxlY3Qodm9pZCk7CiAKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdE5vRmFpbCh2b2lkKTsKK1B5QVBJX0ZVTkMoUHlfc3NpemVfdCkgX1B5R0NfQ29sbGVjdElmRW5hYmxlZCh2b2lkKTsKICNlbmRpZgogCiAvKiBUZXN0IGlmIGEgdHlwZSBoYXMgYSBHQyBoZWFkICovCkBAIC0zMjIsOCArMzI1LDEwIEBACiAgICAgICAgICghUHlUdXBsZV9DaGVja0V4YWN0KG9iaikgfHwgX1B5T2JqZWN0X0dDX0lTX1RSQUNLRUQob2JqKSkpCiAjZW5kaWYgLyogUHlfTElNSVRFRF9BUEkgKi8KIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlPYmplY3RfR0NfTWFsbG9jKHNpemVfdCBzaXplKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5T2JqZWN0X0dDX0NhbGxvYyhzaXplX3Qgc2l6ZSk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIF9QeU9iamVjdF9HQ19OZXcoUHlUeXBlT2JqZWN0ICopOwogUHlBUElfRlVOQyhQeVZhck9iamVjdCAqKSBfUHlPYmplY3RfR0NfTmV3VmFyKFB5VHlwZU9iamVjdCAqLCBQeV9zc2l6ZV90KTsKIFB5QVBJX0ZVTkModm9pZCkgUHlPYmplY3RfR0NfVHJhY2sodm9pZCAqKTsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvb3Bjb2RlLmggYi9JbmNsdWRlL29wY29kZS5oCmluZGV4IDNmOTE3ZmIuLmJlMzYwZTEgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvb3Bjb2RlLmgKKysrIGIvSW5jbHVkZS9vcGNvZGUuaApAQCAtNjAsNiArNjAsNyBAQAogI2RlZmluZSBXSVRIX0NMRUFOVVBfRklOSVNIICAgICAgODIKICNkZWZpbmUgUkVUVVJOX1ZBTFVFICAgICAgICAgICAgIDgzCiAjZGVmaW5lIElNUE9SVF9TVEFSICAgICAgICAgICAgICA4NAorI2RlZmluZSBTRVRVUF9BTk5PVEFUSU9OUyAgICAgICAgODUKICNkZWZpbmUgWUlFTERfVkFMVUUgICAgICAgICAgICAgIDg2CiAjZGVmaW5lIFBPUF9CTE9DSyAgICAgICAgICAgICAgICA4NwogI2RlZmluZSBFTkRfRklOQUxMWSAgICAgICAgICAgICAgODgKQEAgLTk4LDE4ICs5OSwxNyBAQAogI2RlZmluZSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAxMjQKICNkZWZpbmUgU1RPUkVfRkFTVCAgICAgICAgICAgICAgMTI1CiAjZGVmaW5lIERFTEVURV9GQVNUICAgICAgICAgICAgIDEyNgorI2RlZmluZSBTVE9SRV9BTk5PVEFUSU9OICAgICAgICAxMjcKICNkZWZpbmUgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgMTMwCiAjZGVmaW5lIENBTExfRlVOQ1RJT04gICAgICAgICAgIDEzMQogI2RlZmluZSBNQUtFX0ZVTkNUSU9OICAgICAgICAgICAxMzIKICNkZWZpbmUgQlVJTERfU0xJQ0UgICAgICAgICAgICAgMTMzCi0jZGVmaW5lIE1BS0VfQ0xPU1VSRSAgICAgICAgICAgIDEzNAogI2RlZmluZSBMT0FEX0NMT1NVUkUgICAgICAgICAgICAxMzUKICNkZWZpbmUgTE9BRF9ERVJFRiAgICAgICAgICAgICAgMTM2CiAjZGVmaW5lIFNUT1JFX0RFUkVGICAgICAgICAgICAgIDEzNwogI2RlZmluZSBERUxFVEVfREVSRUYgICAgICAgICAgICAxMzgKLSNkZWZpbmUgQ0FMTF9GVU5DVElPTl9WQVIgICAgICAgMTQwCiAjZGVmaW5lIENBTExfRlVOQ1RJT05fS1cgICAgICAgIDE0MQotI2RlZmluZSBDQUxMX0ZVTkNUSU9OX1ZBUl9LVyAgICAxNDIKKyNkZWZpbmUgQ0FMTF9GVU5DVElPTl9FWCAgICAgICAgMTQyCiAjZGVmaW5lIFNFVFVQX1dJVEggICAgICAgICAgICAgIDE0MwogI2RlZmluZSBFWFRFTkRFRF9BUkcgICAgICAgICAgICAxNDQKICNkZWZpbmUgTElTVF9BUFBFTkQgICAgICAgICAgICAgMTQ1CkBAIC0xMjIsNiArMTIyLDEwIEBACiAjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDSyAgICAgIDE1MgogI2RlZmluZSBCVUlMRF9TRVRfVU5QQUNLICAgICAgICAxNTMKICNkZWZpbmUgU0VUVVBfQVNZTkNfV0lUSCAgICAgICAgMTU0CisjZGVmaW5lIEZPUk1BVF9WQUxVRSAgICAgICAgICAgIDE1NQorI2RlZmluZSBCVUlMRF9DT05TVF9LRVlfTUFQICAgICAxNTYKKyNkZWZpbmUgQlVJTERfU1RSSU5HICAgICAgICAgICAgMTU3CisjZGVmaW5lIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgMTU4CiAKIC8qIEVYQ0VQVF9IQU5ETEVSIGlzIGEgc3BlY2lhbCwgaW1wbGljaXQgYmxvY2sgdHlwZSB3aGljaCBpcyBjcmVhdGVkIHdoZW4KICAgIGVudGVyaW5nIGFuIGV4Y2VwdCBoYW5kbGVyLiBJdCBpcyBub3QgYW4gb3Bjb2RlIGJ1dCB3ZSBkZWZpbmUgaXQgaGVyZQpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9vc21vZHVsZS5oIGIvSW5jbHVkZS9vc21vZHVsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxNDY3NTcKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL29zbW9kdWxlLmgKQEAgLTAsMCArMSwxNSBAQAorCisvKiBvcyBtb2R1bGUgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfT1NNT0RVTEVfSAorI2RlZmluZSBQeV9PU01PRFVMRV9ICisjaWZkZWYgX19jcGx1c3BsdXMKK2V4dGVybiAiQyIgeworI2VuZGlmCisKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlPU19GU1BhdGgoUHlPYmplY3QgKnBhdGgpOworCisjaWZkZWYgX19jcGx1c3BsdXMKK30KKyNlbmRpZgorI2VuZGlmIC8qICFQeV9PU01PRFVMRV9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3BhdGNobGV2ZWwuaCBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCmluZGV4IDQ1ZTU3MzYuLjI5ZGE0ODkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCisrKyBiL0luY2x1ZGUvcGF0Y2hsZXZlbC5oCkBAIC0xNywxMyArMTcsMTMgQEAKIC8qIFZlcnNpb24gcGFyc2VkIG91dCBpbnRvIG51bWVyaWMgdmFsdWVzICovCiAvKi0tc3RhcnQgY29uc3RhbnRzLS0qLwogI2RlZmluZSBQWV9NQUpPUl9WRVJTSU9OCTMKLSNkZWZpbmUgUFlfTUlOT1JfVkVSU0lPTgk1Ci0jZGVmaW5lIFBZX01JQ1JPX1ZFUlNJT04JMgotI2RlZmluZSBQWV9SRUxFQVNFX0xFVkVMCVBZX1JFTEVBU0VfTEVWRUxfRklOQUwKLSNkZWZpbmUgUFlfUkVMRUFTRV9TRVJJQUwJMAorI2RlZmluZSBQWV9NSU5PUl9WRVJTSU9OCTYKKyNkZWZpbmUgUFlfTUlDUk9fVkVSU0lPTgkwCisjZGVmaW5lIFBZX1JFTEVBU0VfTEVWRUwJUFlfUkVMRUFTRV9MRVZFTF9CRVRBCisjZGVmaW5lIFBZX1JFTEVBU0VfU0VSSUFMCTIKIAogLyogVmVyc2lvbiBhcyBhIHN0cmluZyAqLwotI2RlZmluZSBQWV9WRVJTSU9OICAgICAgCSIzLjUuMisiCisjZGVmaW5lIFBZX1ZFUlNJT04gICAgICAJIjMuNi4wYjIrIgogLyotLWVuZCBjb25zdGFudHMtLSovCiAKIC8qIFZlcnNpb24gYXMgYSBzaW5nbGUgNC1ieXRlIGhleCBudW1iZXIsIGUuZy4gMHgwMTA1MDJCMiA9PSAxLjUuMmIyLgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIGIvSW5jbHVkZS9wZ2VuaGVhZGVycy5oCmluZGV4IDIwNDlhZTMuLjQ4NDNkZTYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcGdlbmhlYWRlcnMuaAorKysgYi9JbmNsdWRlL3BnZW5oZWFkZXJzLmgKQEAgLTIzLDYgKzIzLDcgQEAKICNkZWZpbmUgZGVsYml0c2V0IF9QeV9kZWxiaXRzZXQKICNkZWZpbmUgZHVtcHRyZWUgX1B5X2R1bXB0cmVlCiAjZGVmaW5lIGZpbmRsYWJlbCBfUHlfZmluZGxhYmVsCisjZGVmaW5lIGZyZWVncmFtbWFyIF9QeV9mcmVlZ3JhbW1hcgogI2RlZmluZSBtZXJnZWJpdHNldCBfUHlfbWVyZ2ViaXRzZXQKICNkZWZpbmUgbWV0YV9ncmFtbWFyIF9QeV9tZXRhX2dyYW1tYXIKICNkZWZpbmUgbmV3Yml0c2V0IF9QeV9uZXdiaXRzZXQKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlfY3Vyc2VzLmggYi9JbmNsdWRlL3B5X2N1cnNlcy5oCmluZGV4IGYyYzA4ZjYuLjNjMjE2OTcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlfY3Vyc2VzLmgKKysrIGIvSW5jbHVkZS9weV9jdXJzZXMuaApAQCAtMTAzLDggKzEwMyw4IEBACiAjZW5kaWYKIAogLyogZ2VuZXJhbCBlcnJvciBtZXNzYWdlcyAqLwotc3RhdGljIGNoYXIgKmNhdGNoYWxsX0VSUiAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7Ci1zdGF0aWMgY2hhciAqY2F0Y2hhbGxfTlVMTCA9ICJjdXJzZXMgZnVuY3Rpb24gcmV0dXJuZWQgTlVMTCI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9FUlJbXSAgPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIEVSUiI7CitzdGF0aWMgY29uc3QgY2hhciBjYXRjaGFsbF9OVUxMW10gPSAiY3Vyc2VzIGZ1bmN0aW9uIHJldHVybmVkIE5VTEwiOwogCiAvKiBGdW5jdGlvbiBQcm90b3R5cGUgTWFjcm9zIC0gVGhleSBhcmUgdWdseSBidXQgdmVyeSwgdmVyeSB1c2VmdWwuIDstKQogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5YXRvbWljLmggYi9JbmNsdWRlL3B5YXRvbWljLmgKaW5kZXggODkwMjhlZi4uODkzZDMwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWF0b21pYy5oCisrKyBiL0luY2x1ZGUvcHlhdG9taWMuaApAQCAtNjEsNyArNjEsNyBAQAogfSBfUHlfbWVtb3J5X29yZGVyOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2FkZHJlc3MgewotICAgIFB5X3VpbnRwdHJfdCBfdmFsdWU7CisgICAgdWludHB0cl90IF92YWx1ZTsKIH0gX1B5X2F0b21pY19hZGRyZXNzOwogCiB0eXBlZGVmIHN0cnVjdCBfUHlfYXRvbWljX2ludCB7CkBAIC05OCw3ICs5OCw3IEBACiB9IF9QeV9tZW1vcnlfb3JkZXI7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfYWRkcmVzcyB7Ci0gICAgUHlfdWludHB0cl90IF92YWx1ZTsKKyAgICB1aW50cHRyX3QgX3ZhbHVlOwogfSBfUHlfYXRvbWljX2FkZHJlc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9QeV9hdG9taWNfaW50IHsKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlkZWJ1Zy5oIGIvSW5jbHVkZS9weWRlYnVnLmgKaW5kZXggMTliZWMyYi4uNmUyM2E4OSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weWRlYnVnLmgKKysrIGIvSW5jbHVkZS9weWRlYnVnLmgKQEAgLTI0LDYgKzI0LDEwIEBACiBQeUFQSV9EQVRBKGludCkgUHlfSGFzaFJhbmRvbWl6YXRpb25GbGFnOwogUHlBUElfREFUQShpbnQpIFB5X0lzb2xhdGVkRmxhZzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKK1B5QVBJX0RBVEEoaW50KSBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnOworI2VuZGlmCisKIC8qIHRoaXMgaXMgYSB3cmFwcGVyIGFyb3VuZCBnZXRlbnYoKSB0aGF0IHBheXMgYXR0ZW50aW9uIHRvCiAgICBQeV9JZ25vcmVFbnZpcm9ubWVudEZsYWcuICBJdCBzaG91bGQgYmUgdXNlZCBmb3IgZ2V0dGluZyB2YXJpYWJsZXMgbGlrZQogICAgUFlUSE9OUEFUSCBhbmQgUFlUSE9OSE9NRSBmcm9tIHRoZSBlbnZpcm9ubWVudCAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5kIGIvSW5jbHVkZS9weWR0cmFjZS5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MzYwNTUKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmQKQEAgLTAsMCArMSwxOSBAQAorLyogUHl0aG9uIERUcmFjZSBwcm92aWRlciAqLworCitwcm92aWRlciBweXRob24geworICAgIHByb2JlIGZ1bmN0aW9uX19lbnRyeShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBmdW5jdGlvbl9fcmV0dXJuKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOworICAgIHByb2JlIGluc3RhbmNlX19uZXdfX3N0YXJ0KGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fbmV3X19kb25lKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqKTsKKyAgICBwcm9iZSBpbnN0YW5jZV9fZGVsZXRlX19zdGFydChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgaW5zdGFuY2VfX2RlbGV0ZV9fZG9uZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7CisgICAgcHJvYmUgbGluZShjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgaW50KTsKKyAgICBwcm9iZSBnY19fc3RhcnQoaW50KTsKKyAgICBwcm9iZSBnY19fZG9uZShsb25nKTsKK307CisKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gcHJvdmlkZXIKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gbW9kdWxlCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIGZ1bmN0aW9uCisjcHJhZ21hIEQgYXR0cmlidXRlcyBFdm9sdmluZy9Fdm9sdmluZy9Db21tb24gcHJvdmlkZXIgcHl0aG9uIG5hbWUKKyNwcmFnbWEgRCBhdHRyaWJ1dGVzIEV2b2x2aW5nL0V2b2x2aW5nL0NvbW1vbiBwcm92aWRlciBweXRob24gYXJncwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWR0cmFjZS5oIGIvSW5jbHVkZS9weWR0cmFjZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE0MGQyZTEKLS0tIC9kZXYvbnVsbAorKysgYi9JbmNsdWRlL3B5ZHRyYWNlLmgKQEAgLTAsMCArMSw1MyBAQAorLyogU3RhdGljIERUcmFjZSBwcm9iZXMgaW50ZXJmYWNlICovCisKKyNpZm5kZWYgUHlfRFRSQUNFX0gKKyNkZWZpbmUgUHlfRFRSQUNFX0gKKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIiB7CisjZW5kaWYKKworI2lmZGVmIFdJVEhfRFRSQUNFCisKKyNpbmNsdWRlICJweWR0cmFjZV9wcm9iZXMuaCIKKworLyogcHlkdHJhY2VfcHJvYmVzLmgsIG9uIHN5c3RlbXMgd2l0aCBEVHJhY2UsIGlzIGF1dG8tZ2VuZXJhdGVkIHRvIGluY2x1ZGUKKyAgIGBQeURUcmFjZV97UFJPQkV9YCBhbmQgYFB5RFRyYWNlX3tQUk9CRX1fRU5BQkxFRCgpYCBtYWNyb3MgZm9yIGV2ZXJ5IHByb2JlCisgICBkZWZpbmVkIGluIHB5ZHRyYWNlX3Byb3ZpZGVyLmQuCisKKyAgIENhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIG11c3QgYmUgZ3VhcmRlZCBieSBhIGBQeURUcmFjZV97UFJPQkV9X0VOQUJMRUQoKWAKKyAgIGNoZWNrIHRvIG1pbmltaXplIHBlcmZvcm1hbmNlIGltcGFjdCB3aGVuIHByb2JpbmcgaXMgb2ZmLiBGb3IgZXhhbXBsZToKKworICAgICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKCkpCisgICAgICAgICAgIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGYpOworKi8KKworI2Vsc2UKKworLyogV2l0aG91dCBEVHJhY2UsIGNvbXBpbGUgdG8gbm90aGluZy4gKi8KKworaW5saW5lIHZvaWQgUHlEVHJhY2VfTElORShjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKSAge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTihjb25zdCBjaGFyICphcmcwLCBjb25zdCBjaGFyICphcmcxLCBpbnQgYXJnMikge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfR0NfRE9ORShpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVChpbnQgYXJnMCkge30KK2lubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX1NUQVJUKGludCBhcmcwKSB7fQoraW5saW5lIHZvaWQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkUoaW50IGFyZzApIHt9CisKK2lubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CitpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVF9FTkFCTEVEKHZvaWQpIHsgcmV0dXJuIDA7IH0KK2lubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKSB7IHJldHVybiAwOyB9CisKKyNlbmRpZiAvKiAhV0lUSF9EVFJBQ0UgKi8KKworI2lmZGVmIF9fY3BsdXNwbHVzCit9CisjZW5kaWYKKyNlbmRpZiAvKiAhUHlfRFRSQUNFX0ggKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHllcnJvcnMuaCBiL0luY2x1ZGUvcHllcnJvcnMuaAppbmRleCAzNWFlZGI3Li4wM2NlZTNkIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5ZXJyb3JzLmgKKysrIGIvSW5jbHVkZS9weWVycm9ycy5oCkBAIC0xNjAsNiArMTYwLDcgQEAKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19PU0Vycm9yOwogUHlBUElfREFUQShQeU9iamVjdCAqKSBQeUV4Y19JbXBvcnRFcnJvcjsKK1B5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfTW9kdWxlTm90Rm91bmRFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfSW5kZXhFcnJvcjsKIFB5QVBJX0RBVEEoUHlPYmplY3QgKikgUHlFeGNfS2V5RXJyb3I7CiBQeUFQSV9EQVRBKFB5T2JqZWN0ICopIFB5RXhjX0tleWJvYXJkSW50ZXJydXB0OwpAQCAtMjgzLDYgKzI4NCw5IEBACiAKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlFcnJfU2V0RXhjV2l0aEFyZ3NLd2FyZ3MoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKICAgICBQeU9iamVjdCAqKTsKKworUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeUVycl9TZXRJbXBvcnRFcnJvclN1YmNsYXNzKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCisgICAgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKFB5T2JqZWN0ICopIFB5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICosIFB5T2JqZWN0ICosCiAgICAgUHlPYmplY3QgKik7CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlnZXRvcHQuaCBiL0luY2x1ZGUvcHlnZXRvcHQuaAppbmRleCA0MjVjN2RkLi45NjI3MjBjIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5Z2V0b3B0LmgKKysrIGIvSW5jbHVkZS9weWdldG9wdC5oCkBAIC0xMSw5ICsxMSw5IEBACiBQeUFQSV9EQVRBKHdjaGFyX3QgKikgX1B5T1Nfb3B0YXJnOwogCiBQeUFQSV9GVU5DKHZvaWQpIF9QeU9TX1Jlc2V0R2V0T3B0KHZvaWQpOwotI2VuZGlmCiAKIFB5QVBJX0ZVTkMoaW50KSBfUHlPU19HZXRPcHQoaW50IGFyZ2MsIHdjaGFyX3QgKiphcmd2LCB3Y2hhcl90ICpvcHRzdHJpbmcpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHloYXNoLmggYi9JbmNsdWRlL3B5aGFzaC5oCmluZGV4IGE3Y2E5MzcuLmE4MTRhZjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHloYXNoLmgKKysrIGIvSW5jbHVkZS9weWhhc2guaApAQCAtMzYsMTQgKzM2LDE0IEBACiAgKiBtZW1vcnkgbGF5b3V0IG9uIDY0IGJpdCBzeXN0ZW1zCiAgKiAgIGNjY2NjY2NjIGNjY2NjY2NjIGNjY2NjY2NjICB1YyAtLSB1bnNpZ25lZCBjaGFyWzI0XQogICogICBwcHBwcHBwcCBzc3Nzc3NzcyAuLi4uLi4uLiAgZm52IC0tIHR3byBQeV9oYXNoX3QKLSAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIFBZX1VJTlQ2NF9UCisgKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byB1aW50NjRfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBzc3Nzc3NzcyAgZGpieDMzYSAtLSAxNiBieXRlcyBwYWRkaW5nICsgb25lIFB5X2hhc2hfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBlZWVlZWVlZSAgcHlleHBhdCBYTUwgaGFzaCBzYWx0CiAgKgogICogbWVtb3J5IGxheW91dCBvbiAzMiBiaXQgc3lzdGVtcwogICogICBjY2NjY2NjYyBjY2NjY2NjYyBjY2NjY2NjYyAgdWMKICAqICAgcHBwcHNzc3MgLi4uLi4uLi4gLi4uLi4uLi4gIGZudiAtLSB0d28gUHlfaGFzaF90Ci0gKiAgIGswazBrMGswIGsxazFrMWsxIC4uLi4uLi4uICBzaXBoYXNoIC0tIHR3byBQWV9VSU5UNjRfVCAoKikKKyAqICAgazBrMGswazAgazFrMWsxazEgLi4uLi4uLi4gIHNpcGhhc2ggLS0gdHdvIHVpbnQ2NF90ICgqKQogICogICAuLi4uLi4uLiAuLi4uLi4uLiBzc3NzLi4uLiAgZGpieDMzYSAtLSAxNiBieXRlcyBwYWRkaW5nICsgb25lIFB5X2hhc2hfdAogICogICAuLi4uLi4uLiAuLi4uLi4uLiBlZWVlLi4uLiAgcHlleHBhdCBYTUwgaGFzaCBzYWx0CiAgKgpAQCAtNTksMTMgKzU5LDExIEBACiAgICAgICAgIFB5X2hhc2hfdCBwcmVmaXg7CiAgICAgICAgIFB5X2hhc2hfdCBzdWZmaXg7CiAgICAgfSBmbnY7Ci0jaWZkZWYgUFlfVUlOVDY0X1QKICAgICAvKiB0d28gdWludDY0IGZvciBTaXBIYXNoMjQgKi8KICAgICBzdHJ1Y3QgewotICAgICAgICBQWV9VSU5UNjRfVCBrMDsKLSAgICAgICAgUFlfVUlOVDY0X1QgazE7CisgICAgICAgIHVpbnQ2NF90IGswOworICAgICAgICB1aW50NjRfdCBrMTsKICAgICB9IHNpcGhhc2g7Ci0jZW5kaWYKICAgICAvKiBhIGRpZmZlcmVudCAoISkgUHlfaGFzaF90IGZvciBzbWFsbCBzdHJpbmcgb3B0aW1pemF0aW9uICovCiAgICAgc3RydWN0IHsKICAgICAgICAgdW5zaWduZWQgY2hhciBwYWRkaW5nWzE2XTsKQEAgLTEyMSw4ICsxMTksNyBAQAogICogY29uZmlndXJlIHNjcmlwdC4KICAqCiAgKiAtIEZOViBpcyBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3JtcyBhbmQgYXJjaGl0ZWN0dXJlcy4KLSAqIC0gU0lQSEFTSDI0IG9ubHkgd29ya3Mgb24gcGxhZm9ybXMgdGhhdCBwcm92aWRlIFBZX1VJTlQ2NF9UIGFuZCBkb2Vzbid0Ci0gKiAgIHJlcXVpcmUgYWxpZ25lZCBtZW1vcnkgZm9yIGludGVnZXJzLgorICogLSBTSVBIQVNIMjQgb25seSB3b3JrcyBvbiBwbGFmb3JtcyB0aGF0IGRvbid0IHJlcXVpcmUgYWxpZ25lZCBtZW1vcnkgZm9yIGludGVnZXJzLgogICogLSBXaXRoIEVYVEVSTkFMIGVtYmVkZGVycyBjYW4gcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSBpbXBsZW1lbnRhdGlvbiB3aXRoOjoKICAqCiAgKiAgICAgUHlIYXNoX0Z1bmNEZWYgUHlIYXNoX0Z1bmMgPSB7Li4ufTsKQEAgLTEzNCw4ICsxMzEsNyBAQAogI2RlZmluZSBQeV9IQVNIX0ZOViAyCiAKICNpZm5kZWYgUHlfSEFTSF9BTEdPUklUSE0KLSMgIGlmIChkZWZpbmVkKFBZX1VJTlQ2NF9UKSAmJiBkZWZpbmVkKFBZX1VJTlQzMl9UKSBcCi0gICAgICAgJiYgIWRlZmluZWQoSEFWRV9BTElHTkVEX1JFUVVJUkVEKSkKKyMgIGlmbmRlZiBIQVZFX0FMSUdORURfUkVRVUlSRUQKICMgICAgZGVmaW5lIFB5X0hBU0hfQUxHT1JJVEhNIFB5X0hBU0hfU0lQSEFTSDI0CiAjICBlbHNlCiAjICAgIGRlZmluZSBQeV9IQVNIX0FMR09SSVRITSBQeV9IQVNIX0ZOVgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weWxpZmVjeWNsZS5oIGIvSW5jbHVkZS9weWxpZmVjeWNsZS5oCmluZGV4IGNjZGViZTIuLjVhNjc2NjYgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlsaWZlY3ljbGUuaAorKysgYi9JbmNsdWRlL3B5bGlmZWN5Y2xlLmgKQEAgLTI3LDYgKzI3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgX1B5X0luaXRpYWxpemVFeF9Qcml2YXRlKGludCwgaW50KTsKICNlbmRpZgogUHlBUElfRlVOQyh2b2lkKSBQeV9GaW5hbGl6ZSh2b2lkKTsKK1B5QVBJX0ZVTkMoaW50KSBQeV9GaW5hbGl6ZUV4KHZvaWQpOwogUHlBUElfRlVOQyhpbnQpIFB5X0lzSW5pdGlhbGl6ZWQodm9pZCk7CiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlfTmV3SW50ZXJwcmV0ZXIodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIFB5X0VuZEludGVycHJldGVyKFB5VGhyZWFkU3RhdGUgKik7CkBAIC0xMDYsNiArMTA3LDcgQEAKIFB5QVBJX0ZVTkModm9pZCkgUHlTbGljZV9GaW5pKHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBfUHlUeXBlX0Zpbmkodm9pZCk7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVJhbmRvbV9GaW5pKHZvaWQpOworUHlBUElfRlVOQyh2b2lkKSBQeUFzeW5jR2VuX0Zpbmkodm9pZCk7CiAKIFB5QVBJX0RBVEEoUHlUaHJlYWRTdGF0ZSAqKSBfUHlfRmluYWxpemluZzsKICNlbmRpZgpAQCAtMTE1LDggKzExNywxMSBAQAogUHlBUElfRlVOQyhQeU9TX3NpZ2hhbmRsZXJfdCkgUHlPU19nZXRzaWcoaW50KTsKIFB5QVBJX0ZVTkMoUHlPU19zaWdoYW5kbGVyX3QpIFB5T1Nfc2V0c2lnKGludCwgUHlPU19zaWdoYW5kbGVyX3QpOwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSYW5kb20gKi8KLVB5QVBJX0ZVTkMoaW50KSBfUHlPU19VUmFuZG9tICh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSk7CitQeUFQSV9GVU5DKGludCkgX1B5T1NfVVJhbmRvbU5vbmJsb2NrKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5bWFjcm8uaCBiL0luY2x1ZGUvcHltYWNyby5oCmluZGV4IDNmNmY1ZGMuLjJhODM5YWIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYWNyby5oCisrKyBiL0luY2x1ZGUvcHltYWNyby5oCkBAIC0xOCw2ICsxOCw5IEBACiAgICBieSAiX19MSU5FX18iLiAqLwogI2RlZmluZSBQeV9TVFJJTkdJRlkoeCkgX1B5X1hTVFJJTkdJRlkoeCkKIAorLyogR2V0IHRoZSBzaXplIG9mIGEgc3RydWN0dXJlIG1lbWJlciBpbiBieXRlcyAqLworI2RlZmluZSBQeV9NRU1CRVJfU0laRSh0eXBlLCBtZW1iZXIpIHNpemVvZigoKHR5cGUgKikwKS0+bWVtYmVyKQorCiAvKiBBcmd1bWVudCBtdXN0IGJlIGEgY2hhciBvciBhbiBpbnQgaW4gWy0xMjgsIDEyN10gb3IgWzAsIDI1NV0uICovCiAjZGVmaW5lIFB5X0NIQVJNQVNLKGMpICgodW5zaWduZWQgY2hhcikoKGMpICYgMHhmZikpCiAKQEAgLTM2LDYgKzM5LDEwIEBACiAjZGVmaW5lIFB5X0JVSUxEX0FTU0VSVF9FWFBSKGNvbmQpIFwKICAgICAoc2l6ZW9mKGNoYXIgWzEgLSAyKiEoY29uZCldKSAtIDEpCiAKKyNkZWZpbmUgUHlfQlVJTERfQVNTRVJUKGNvbmQpICBkbyB7ICAgICAgICAgXAorICAgICAgICAodm9pZClQeV9CVUlMRF9BU1NFUlRfRVhQUihjb25kKTsgICBcCisgICAgfSB3aGlsZSgwKQorCiAvKiBHZXQgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBhIHZpc2libGUgYXJyYXkKIAogICAgVGhpcyBkb2VzIG5vdCB3b3JrIG9uIHBvaW50ZXJzLCBvciBhcnJheXMgZGVjbGFyZWQgYXMgW10sIG9yIGZ1bmN0aW9uCkBAIC03NSwxMiArODIsMTIgQEAKICNkZWZpbmUgX1B5X1NJWkVfUk9VTkRfVVAobiwgYSkgKCgoc2l6ZV90KShuKSArIFwKICAgICAgICAgKHNpemVfdCkoKGEpIC0gMSkpICYgfihzaXplX3QpKChhKSAtIDEpKQogLyogUm91bmQgcG9pbnRlciAicCIgZG93biB0byB0aGUgY2xvc2VzdCAiYSItYWxpZ25lZCBhZGRyZXNzIDw9ICJwIi4gKi8KLSNkZWZpbmUgX1B5X0FMSUdOX0RPV04ocCwgYSkgKCh2b2lkICopKChQeV91aW50cHRyX3QpKHApICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0FMSUdOX0RPV04ocCwgYSkgKCh2b2lkICopKCh1aW50cHRyX3QpKHApICYgfih1aW50cHRyX3QpKChhKSAtIDEpKSkKIC8qIFJvdW5kIHBvaW50ZXIgInAiIHVwIHRvIHRoZSBjbG9zZXN0ICJhIi1hbGlnbmVkIGFkZHJlc3MgPj0gInAiLiAqLwotI2RlZmluZSBfUHlfQUxJR05fVVAocCwgYSkgKCh2b2lkICopKCgoUHlfdWludHB0cl90KShwKSArIFwKLSAgICAgICAgKFB5X3VpbnRwdHJfdCkoKGEpIC0gMSkpICYgfihQeV91aW50cHRyX3QpKChhKSAtIDEpKSkKKyNkZWZpbmUgX1B5X0FMSUdOX1VQKHAsIGEpICgodm9pZCAqKSgoKHVpbnRwdHJfdCkocCkgKyBcCisgICAgICAgICh1aW50cHRyX3QpKChhKSAtIDEpKSAmIH4odWludHB0cl90KSgoYSkgLSAxKSkpCiAvKiBDaGVjayBpZiBwb2ludGVyICJwIiBpcyBhbGlnbmVkIHRvICJhIi1ieXRlcyBib3VuZGFyeS4gKi8KLSNkZWZpbmUgX1B5X0lTX0FMSUdORUQocCwgYSkgKCEoKFB5X3VpbnRwdHJfdCkocCkgJiAoUHlfdWludHB0cl90KSgoYSkgLSAxKSkpCisjZGVmaW5lIF9QeV9JU19BTElHTkVEKHAsIGEpICghKCh1aW50cHRyX3QpKHApICYgKHVpbnRwdHJfdCkoKGEpIC0gMSkpKQogCiAjaWZkZWYgX19HTlVDX18KICNkZWZpbmUgUHlfVU5VU0VEKG5hbWUpIF91bnVzZWRfICMjIG5hbWUgX19hdHRyaWJ1dGVfXygodW51c2VkKSkKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltYXRoLmggYi9JbmNsdWRlL3B5bWF0aC5oCmluZGV4IDFjOGQ3MTguLjcyMTZhMDkgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHltYXRoLmgKKysrIGIvSW5jbHVkZS9weW1hdGguaApAQCAtNTUsNiArNTUsMTIgQEAKICNkZWZpbmUgUHlfTUFUSF9FIDIuNzE4MjgxODI4NDU5MDQ1MjM1NAogI2VuZGlmCiAKKy8qIFRhdSAoMnBpKSB0byA0MCBkaWdpdHMsIHRha2VuIGZyb20gdGF1ZGF5LmNvbS90YXUtZGlnaXRzLiAqLworI2lmbmRlZiBQeV9NQVRIX1RBVQorI2RlZmluZSBQeV9NQVRIX1RBVSA2LjI4MzE4NTMwNzE3OTU4NjQ3NjkyNTI4Njc2NjU1OTAwNTc2ODM5NDNMCisjZW5kaWYKKworCiAvKiBPbiB4ODYsIFB5X0ZPUkNFX0RPVUJMRSBmb3JjZXMgYSBmbG9hdGluZy1wb2ludCBudW1iZXIgb3V0IG9mIGFuIHg4NyBGUFUKICAgIHJlZ2lzdGVyIGFuZCBpbnRvIGEgNjQtYml0IG1lbW9yeSBsb2NhdGlvbiwgcm91bmRpbmcgZnJvbSBleHRlbmRlZAogICAgcHJlY2lzaW9uIHRvIGRvdWJsZSBwcmVjaXNpb24gaW4gdGhlIHByb2Nlc3MuICBPbiBvdGhlciBwbGF0Zm9ybXMgaXQgZG9lcwpAQCAtMTY5LDcgKzE3NSw3IEBACiAgICAgICAgICNwcmFnbWEgZmxvYXRfY29udHJvbCAocG9wKQogICAgICAgICAjZGVmaW5lIFB5X05BTiBfX2ljY19uYW4oKQogICAgICNlbHNlIC8qIElDQ19OQU5fUkVMQVhFRCBhcyBkZWZhdWx0IGZvciBJbnRlbCBDb21waWxlciAqLwotICAgICAgICBzdGF0aWMgdW5pb24geyB1bnNpZ25lZCBjaGFyIGJ1Zls4XTsgZG91YmxlIF9faWNjX25hbjsgfSBfX25hbl9zdG9yZSA9IHswLDAsMCwwLDAsMCwweGY4LDB4N2Z9OworICAgICAgICBzdGF0aWMgY29uc3QgdW5pb24geyB1bnNpZ25lZCBjaGFyIGJ1Zls4XTsgZG91YmxlIF9faWNjX25hbjsgfSBfX25hbl9zdG9yZSA9IHswLDAsMCwwLDAsMCwweGY4LDB4N2Z9OwogICAgICAgICAjZGVmaW5lIFB5X05BTiAoX19uYW5fc3RvcmUuX19pY2NfbmFuKQogICAgICNlbmRpZiAvKiBJQ0NfTkFOX1NUUklDVCAqLwogI2VuZGlmIC8qIF9fSU5URUxfQ09NUElMRVIgKi8KZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHltZW0uaCBiL0luY2x1ZGUvcHltZW0uaAppbmRleCAwNDNkYjY0Li5jZTYzYmY4IDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5bWVtLmgKKysrIGIvSW5jbHVkZS9weW1lbS5oCkBAIC0xNiw4ICsxNiw1MSBAQAogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd0NhbGxvYyhzaXplX3QgbmVsZW0sIHNpemVfdCBlbHNpemUpOwogUHlBUElfRlVOQyh2b2lkICopIFB5TWVtX1Jhd1JlYWxsb2Modm9pZCAqcHRyLCBzaXplX3QgbmV3X3NpemUpOwogUHlBUElfRlVOQyh2b2lkKSBQeU1lbV9SYXdGcmVlKHZvaWQgKnB0cik7CisKKy8qIENvbmZpZ3VyZSB0aGUgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzLiBQYXNzIE5VTEwgdG8gdXNlIGRlZmF1bHQKKyAgIGFsbG9jYXRvcnMuICovCitQeUFQSV9GVU5DKGludCkgX1B5TWVtX1NldHVwQWxsb2NhdG9ycyhjb25zdCBjaGFyICpvcHQpOworCisjaWZkZWYgV0lUSF9QWU1BTExPQworUHlBUElfRlVOQyhpbnQpIF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQodm9pZCk7CiAjZW5kaWYKIAorLyogSWRlbnRpZmllciBvZiBhbiBhZGRyZXNzIHNwYWNlIChkb21haW4pIGluIHRyYWNlbWFsbG9jICovCit0eXBlZGVmIHVuc2lnbmVkIGludCBfUHlUcmFjZU1hbGxvY19kb21haW5fdDsKKworLyogVHJhY2sgYW4gYWxsb2NhdGVkIG1lbW9yeSBibG9jayBpbiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmV0dXJuIC0xIG9uIGVycm9yIChmYWlsZWQgdG8gYWxsb2NhdGUgbWVtb3J5IHRvIHN0b3JlCisgICB0aGUgdHJhY2UpLgorCisgICBSZXR1cm4gLTIgaWYgdHJhY2VtYWxsb2MgaXMgZGlzYWJsZWQuCisKKyAgIElmIG1lbW9yeSBibG9jayBpcyBhbHJlYWR5IHRyYWNrZWQsIHVwZGF0ZSB0aGUgZXhpc3RpbmcgdHJhY2UuICovCitQeUFQSV9GVU5DKGludCkgX1B5VHJhY2VNYWxsb2NfVHJhY2soCisgICAgX1B5VHJhY2VNYWxsb2NfZG9tYWluX3QgZG9tYWluLAorICAgIHVpbnRwdHJfdCBwdHIsCisgICAgc2l6ZV90IHNpemUpOworCisvKiBVbnRyYWNrIGFuIGFsbG9jYXRlZCBtZW1vcnkgYmxvY2sgaW4gdGhlIHRyYWNlbWFsbG9jIG1vZHVsZS4KKyAgIERvIG5vdGhpbmcgaWYgdGhlIGJsb2NrIHdhcyBub3QgdHJhY2tlZC4KKworICAgUmV0dXJuIC0yIGlmIHRyYWNlbWFsbG9jIGlzIGRpc2FibGVkLCBvdGhlcndpc2UgcmV0dXJuIDAuICovCitQeUFQSV9GVU5DKGludCkgX1B5VHJhY2VNYWxsb2NfVW50cmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0cik7CisKKy8qIEdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIGEgbWVtb3J5IGJsb2NrIHdhcyBhbGxvY2F0ZWQuCisKKyAgIFJldHVybiBhIHR1cGxlIG9mIChmaWxlbmFtZTogc3RyLCBsaW5lbm86IGludCkgdHVwbGVzLgorCisgICBSZXR1cm4gTm9uZSBpZiB0aGUgdHJhY2VtYWxsb2MgbW9kdWxlIGlzIGRpc2FibGVkIG9yIGlmIHRoZSBtZW1vcnkgYmxvY2sKKyAgIGlzIG5vdCB0cmFja2VkIGJ5IHRyYWNlbWFsbG9jLgorCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLworUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVRyYWNlTWFsbG9jX0dldFRyYWNlYmFjaygKKyAgICBfUHlUcmFjZU1hbGxvY19kb21haW5fdCBkb21haW4sCisgICAgdWludHB0cl90IHB0cik7CisjZW5kaWYgICAvKiAhUHlfTElNSVRFRF9BUEkgKi8KKwogCiAvKiBCRVdBUkU6CiAKZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHlwb3J0LmggYi9JbmNsdWRlL3B5cG9ydC5oCmluZGV4IGU3ZTUxNzguLjIwZjNkYjcgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlwb3J0LmgKKysrIGIvSW5jbHVkZS9weXBvcnQuaApAQCAtMywxNSArMyw3IEBACiAKICNpbmNsdWRlICJweWNvbmZpZy5oIiAvKiBpbmNsdWRlIGZvciBkZWZpbmVzICovCiAKLS8qIFNvbWUgdmVyc2lvbnMgb2YgSFAtVVggJiBTb2xhcmlzIG5lZWQgaW50dHlwZXMuaCBmb3IgaW50MzJfdCwKLSAgIElOVDMyX01BWCwgZXRjLiAqLwotI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAogI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0jZW5kaWYKLQotI2lmZGVmIEhBVkVfU1RESU5UX0gKLSNpbmNsdWRlIDxzdGRpbnQuaD4KLSNlbmRpZgogCiAvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIFN5bWJvbHMgYW5kIG1hY3JvcyB0byBzdXBwbHkgcGxhdGZvcm0taW5kZXBlbmRlbnQgaW50ZXJmYWNlcyB0byBiYXNpYwpAQCAtMzEsMTQgKzIzLDYgQEAKIE1lYW5pbmc6ICBFeHRyYSBjaGVja3MgY29tcGlsZWQgaW4gZm9yIGRlYnVnIG1vZGUuCiBVc2VkIGluOiAgUHlfU0FGRV9ET1dOQ0FTVAogCi1IQVZFX1VJTlRQVFJfVAotTWVhbmluZzogIFRoZSBDOVggdHlwZSB1aW50cHRyX3QgaXMgc3VwcG9ydGVkIGJ5IHRoZSBjb21waWxlcgotVXNlZCBpbjogIFB5X3VpbnRwdHJfdAotCi1IQVZFX0xPTkdfTE9ORwotTWVhbmluZzogIFRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgQyB0eXBlICJsb25nIGxvbmciCi1Vc2VkIGluOiAgUFlfTE9OR19MT05HCi0KICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwogCiAvKiB0eXBlZGVmcyBmb3Igc29tZSBDOVgtZGVmaW5lZCBzeW5vbnltcyBmb3IgaW50ZWdyYWwgdHlwZXMuCkBAIC01Myw5MSArMzcsMzAgQEAKICAqIGludGVncmFsIHN5bm9ueW1zLiAgT25seSBkZWZpbmUgdGhlIG9uZXMgd2UgYWN0dWFsbHkgbmVlZC4KICAqLwogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKKy8vIGxvbmcgbG9uZyBpcyByZXF1aXJlZCBub3cuIERlZmluZSBIQVZFX0xPTkdfTE9ORyB1bmNvbmRpdGlvbmFsbHkgZm9yCisvLyBjb21wYXRpYmlsaXR5LgorI2RlZmluZSBIQVZFX0xPTkdfTE9ORwogI2lmbmRlZiBQWV9MT05HX0xPTkcKICNkZWZpbmUgUFlfTE9OR19MT05HIGxvbmcgbG9uZwotI2lmIGRlZmluZWQoTExPTkdfTUFYKQogLyogSWYgTExPTkdfTUFYIGlzIGRlZmluZWQgaW4gbGltaXRzLmgsIHVzZSB0aGF0LiAqLwogI2RlZmluZSBQWV9MTE9OR19NSU4gTExPTkdfTUlOCiAjZGVmaW5lIFBZX0xMT05HX01BWCBMTE9OR19NQVgKICNkZWZpbmUgUFlfVUxMT05HX01BWCBVTExPTkdfTUFYCi0jZWxpZiBkZWZpbmVkKF9fTE9OR19MT05HX01BWF9fKQotLyogT3RoZXJ3aXNlLCBpZiBHQ0MgaGFzIGEgYnVpbHRpbiBkZWZpbmUsIHVzZSB0aGF0LiAgKERlZmluaXRpb24gb2YKLSAqIFBZX0xMT05HX01JTiBhc3N1bWVzIHR3bydzIGNvbXBsZW1lbnQgd2l0aCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLikgKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYIF9fTE9OR19MT05HX01BWF9fCi0jZGVmaW5lIFBZX0xMT05HX01JTiAoLVBZX0xMT05HX01BWCAtIDEpCi0jZGVmaW5lIFBZX1VMTE9OR19NQVggKFBZX0xMT05HX01BWCAqIFB5X1VMTCgyKSArIDEpCi0jZWxpZiBkZWZpbmVkKFNJWkVPRl9MT05HX0xPTkcpCi0vKiBPdGhlcndpc2UgY29tcHV0ZSBmcm9tIFNJWkVPRl9MT05HX0xPTkcsIGFzc3VtaW5nIHR3bydzIGNvbXBsZW1lbnQsIG5vCi0gICBwYWRkaW5nIGJpdHMsIGFuZCBubyB0cmFwIHJlcHJlc2VudGF0aW9uLiAgTm90ZTogUFlfVUxMT05HX01BWCB3YXMKLSAgIHByZXZpb3VzbHkgI2RlZmluZWQgYXMgKH4wVUxMKSBoZXJlOyBidXQgdGhhdCdsbCBnaXZlIHRoZSB3cm9uZyB2YWx1ZSBpbiBhCi0gICBwcmVwcm9jZXNzb3IgZXhwcmVzc2lvbiBvbiBzeXN0ZW1zIHdoZXJlIGxvbmcgbG9uZyAhPSBpbnRtYXhfdC4gKi8KLSNkZWZpbmUgUFlfTExPTkdfTUFYICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAoMSArIDIgKiAoKFB5X0xMKDEpIDw8IChDSEFSX0JJVCAqIFNJWkVPRl9MT05HX0xPTkcgLSAyKSkgLSAxKSkKLSNkZWZpbmUgUFlfTExPTkdfTUlOICgtUFlfTExPTkdfTUFYIC0gMSkKLSNkZWZpbmUgUFlfVUxMT05HX01BWCAoUFlfTExPTkdfTUFYICogUHlfVUxMKDIpICsgMSkKLSNlbmRpZiAvKiBMTE9OR19NQVggKi8KLSNlbmRpZgotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCi0KLS8qIGEgYnVpbGQgd2l0aCAzMC1iaXQgZGlnaXRzIGZvciBQeXRob24gaW50ZWdlcnMgbmVlZHMgYW4gZXhhY3Qtd2lkdGgKLSAqIDMyLWJpdCB1bnNpZ25lZCBpbnRlZ2VyIHR5cGUgdG8gc3RvcmUgdGhvc2UgZGlnaXRzLiAgKFdlIGNvdWxkIGp1c3QgdXNlCi0gKiB0eXBlICd1bnNpZ25lZCBsb25nJywgYnV0IHRoYXQgd291bGQgYmUgd2FzdGVmdWwgb24gYSBzeXN0ZW0gd2hlcmUgbG9uZ3MKLSAqIGFyZSA2NC1iaXRzLikgIE9uIFVuaXggc3lzdGVtcywgdGhlIGF1dG9jb25mIG1hY3JvIEFDX1RZUEVfVUlOVDMyX1QgZGVmaW5lcwotICogdWludDMyX3QgdG8gYmUgc3VjaCBhIHR5cGUgdW5sZXNzIHN0ZGludC5oIG9yIGludHR5cGVzLmggZGVmaW5lcyB1aW50MzJfdC4KLSAqIEhvd2V2ZXIsIGl0IGRvZXNuJ3Qgc2V0IEhBVkVfVUlOVDMyX1QsIHNvIHdlIGRvIHRoYXQgaGVyZS4KLSAqLwotI2lmZGVmIHVpbnQzMl90Ci0jZGVmaW5lIEhBVkVfVUlOVDMyX1QgMQogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX1VJTlQzMl9UCi0jaWZuZGVmIFBZX1VJTlQzMl9UCiAjZGVmaW5lIFBZX1VJTlQzMl9UIHVpbnQzMl90Ci0jZW5kaWYKLSNlbmRpZgotCi0vKiBNYWNyb3MgZm9yIGEgNjQtYml0IHVuc2lnbmVkIGludGVnZXIgdHlwZTsgdXNlZCBmb3IgdHlwZSAndHdvZGlnaXRzJyBpbiB0aGUKLSAqIGludGVnZXIgaW1wbGVtZW50YXRpb24sIHdoZW4gMzAtYml0IGRpZ2l0cyBhcmUgZW5hYmxlZC4KLSAqLwotI2lmZGVmIHVpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfVUlOVDY0X1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX1VJTlQ2NF9UCi0jaWZuZGVmIFBZX1VJTlQ2NF9UCiAjZGVmaW5lIFBZX1VJTlQ2NF9UIHVpbnQ2NF90Ci0jZW5kaWYKLSNlbmRpZgogCiAvKiBTaWduZWQgdmFyaWFudHMgb2YgdGhlIGFib3ZlICovCi0jaWZkZWYgaW50MzJfdAotI2RlZmluZSBIQVZFX0lOVDMyX1QgMQotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lOVDMyX1QKLSNpZm5kZWYgUFlfSU5UMzJfVAogI2RlZmluZSBQWV9JTlQzMl9UIGludDMyX3QKLSNlbmRpZgotI2VuZGlmCi0KLSNpZmRlZiBpbnQ2NF90Ci0jZGVmaW5lIEhBVkVfSU5UNjRfVCAxCi0jZW5kaWYKLQotI2lmZGVmIEhBVkVfSU5UNjRfVAotI2lmbmRlZiBQWV9JTlQ2NF9UCiAjZGVmaW5lIFBZX0lOVDY0X1QgaW50NjRfdAotI2VuZGlmCi0jZW5kaWYKIAogLyogSWYgUFlMT05HX0JJVFNfSU5fRElHSVQgaXMgbm90IGRlZmluZWQgdGhlbiB3ZSdsbCB1c2UgMzAtYml0IGRpZ2l0cyBpZiBhbGwKICAgIHRoZSBuZWNlc3NhcnkgaW50ZWdlciB0eXBlcyBhcmUgYXZhaWxhYmxlLCBhbmQgd2UncmUgb24gYSA2NC1iaXQgcGxhdGZvcm0KICAgIChhcyBkZXRlcm1pbmVkIGJ5IFNJWkVPRl9WT0lEX1ApOyBvdGhlcndpc2Ugd2UgdXNlIDE1LWJpdCBkaWdpdHMuICovCiAKICNpZm5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKLSNpZiAoZGVmaW5lZCBIQVZFX1VJTlQ2NF9UICYmIGRlZmluZWQgSEFWRV9JTlQ2NF9UICYmIFwKLSAgICAgZGVmaW5lZCBIQVZFX1VJTlQzMl9UICYmIGRlZmluZWQgSEFWRV9JTlQzMl9UICYmIFNJWkVPRl9WT0lEX1AgPj0gOCkKKyNpZiBTSVpFT0ZfVk9JRF9QID49IDgKICNkZWZpbmUgUFlMT05HX0JJVFNfSU5fRElHSVQgMzAKICNlbHNlCiAjZGVmaW5lIFBZTE9OR19CSVRTX0lOX0RJR0lUIDE1CkBAIC0xNDksMjYgKzcyLDkgQEAKICAqIHdpdGhvdXQgbG9zcyBvZiBpbmZvcm1hdGlvbi4gIFNpbWlsYXJseSBmb3IgaW50cHRyX3QsIHdydCBhIHNpZ25lZAogICogaW50ZWdyYWwgdHlwZS4KICAqLwotI2lmZGVmIEhBVkVfVUlOVFBUUl9UCiB0eXBlZGVmIHVpbnRwdHJfdCAgICAgICBQeV91aW50cHRyX3Q7CiB0eXBlZGVmIGludHB0cl90ICAgICAgICBQeV9pbnRwdHJfdDsKIAotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfSU5UCi10eXBlZGVmIHVuc2lnbmVkIGludCAgICBQeV91aW50cHRyX3Q7Ci10eXBlZGVmIGludCAgICAgICAgICAgICBQeV9pbnRwdHJfdDsKLQotI2VsaWYgU0laRU9GX1ZPSURfUCA8PSBTSVpFT0ZfTE9ORwotdHlwZWRlZiB1bnNpZ25lZCBsb25nICAgUHlfdWludHB0cl90OwotdHlwZWRlZiBsb25nICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbGlmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIChTSVpFT0ZfVk9JRF9QIDw9IFNJWkVPRl9MT05HX0xPTkcpCi10eXBlZGVmIHVuc2lnbmVkIFBZX0xPTkdfTE9ORyAgIFB5X3VpbnRwdHJfdDsKLXR5cGVkZWYgUFlfTE9OR19MT05HICAgICAgICAgICAgUHlfaW50cHRyX3Q7Ci0KLSNlbHNlCi0jICAgZXJyb3IgIlB5dGhvbiBuZWVkcyBhIHR5cGVkZWYgZm9yIFB5X3VpbnRwdHJfdCBpbiBweXBvcnQuaC4iCi0jZW5kaWYgLyogSEFWRV9VSU5UUFRSX1QgKi8KLQogLyogUHlfc3NpemVfdCBpcyBhIHNpZ25lZCBpbnRlZ3JhbCB0eXBlIHN1Y2ggdGhhdCBzaXplb2YoUHlfc3NpemVfdCkgPT0KICAqIHNpemVvZihzaXplX3QpLiAgQzk5IGRvZXNuJ3QgZGVmaW5lIHN1Y2ggYSB0aGluZyBkaXJlY3RseSAoc2l6ZV90IGlzIGFuCiAgKiB1bnNpZ25lZCBpbnRlZ3JhbCB0eXBlKS4gIFNlZSBQRVAgMzUzIGZvciBkZXRhaWxzLgpAQCAtMTk1LDE2ICsxMDEsOCBAQAogdHlwZWRlZiBpbnQgUHlfc3NpemVfY2xlYW5fdDsKICNlbmRpZgogCi0vKiBMYXJnZXN0IHBvc3NpYmxlIHZhbHVlIG9mIHNpemVfdC4KLSAgIFNJWkVfTUFYIGlzIHBhcnQgb2YgQzk5LCBzbyBpdCBtaWdodCBiZSBkZWZpbmVkIG9uIHNvbWUKLSAgIHBsYXRmb3Jtcy4gSWYgaXQgaXMgbm90IGRlZmluZWQsIChzaXplX3QpLTEgaXMgYSBwb3J0YWJsZQotICAgZGVmaW5pdGlvbiBmb3IgQzg5LCBkdWUgdG8gdGhlIHdheSBzaWduZWQtPnVuc2lnbmVkCi0gICBjb252ZXJzaW9uIGlzIGRlZmluZWQuICovCi0jaWZkZWYgU0laRV9NQVgKKy8qIExhcmdlc3QgcG9zc2libGUgdmFsdWUgb2Ygc2l6ZV90LiAqLwogI2RlZmluZSBQWV9TSVpFX01BWCBTSVpFX01BWAotI2Vsc2UKLSNkZWZpbmUgUFlfU0laRV9NQVggKChzaXplX3QpLTEpCi0jZW5kaWYKIAogLyogTGFyZ2VzdCBwb3NpdGl2ZSB2YWx1ZSBvZiB0eXBlIFB5X3NzaXplX3QuICovCiAjZGVmaW5lIFBZX1NTSVpFX1RfTUFYICgoUHlfc3NpemVfdCkoKChzaXplX3QpLTEpPj4xKSkKQEAgLTI0NywyMiArMTQ1LDYgQEAKICMgICBlbmRpZgogI2VuZGlmCiAKLS8qIFBZX0ZPUk1BVF9MT05HX0xPTkcgaXMgYW5hbG9nb3VzIHRvIFBZX0ZPUk1BVF9TSVpFX1QgYWJvdmUsIGJ1dCBmb3IKLSAqIHRoZSBsb25nIGxvbmcgdHlwZSBpbnN0ZWFkIG9mIHRoZSBzaXplX3QgdHlwZS4gIEl0J3Mgb25seSBhdmFpbGFibGUKLSAqIHdoZW4gSEFWRV9MT05HX0xPTkcgaXMgZGVmaW5lZC4gVGhlICJoaWdoIGxldmVsIiBQeXRob24gZm9ybWF0Ci0gKiBmdW5jdGlvbnMgbGlzdGVkIGFib3ZlIHdpbGwgaW50ZXJwcmV0ICJsbGQiIG9yICJsbHUiIGNvcnJlY3RseSBvbgotICogYWxsIHBsYXRmb3Jtcy4KLSAqLwotI2lmZGVmIEhBVkVfTE9OR19MT05HCi0jICAgaWZuZGVmIFBZX0ZPUk1BVF9MT05HX0xPTkcKLSMgICAgICAgaWZkZWYgTVNfV0lORE9XUwotIyAgICAgICAgICAgZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkcgIkk2NCIKLSMgICAgICAgZWxzZQotIyAgICAgICAgICAgZXJyb3IgIlRoaXMgcGxhdGZvcm0ncyBweWNvbmZpZy5oIG5lZWRzIHRvIGRlZmluZSBQWV9GT1JNQVRfTE9OR19MT05HIgotIyAgICAgICBlbmRpZgotIyAgIGVuZGlmCi0jZW5kaWYKLQogLyogUHlfTE9DQUwgY2FuIGJlIHVzZWQgaW5zdGVhZCBvZiBzdGF0aWMgdG8gZ2V0IHRoZSBmYXN0ZXN0IHBvc3NpYmxlIGNhbGxpbmcKICAqIGNvbnZlbnRpb24gZm9yIGZ1bmN0aW9ucyB0aGF0IGFyZSBsb2NhbCB0byBhIGdpdmVuIG1vZHVsZS4KICAqCkBAIC0yOTgsMjYgKzE4MCw5IEBACiAjZGVmaW5lIFB5X0xPQ0FMX0lOTElORSh0eXBlKSBzdGF0aWMgdHlwZQogI2VuZGlmCiAKLS8qIFB5X01FTUNQWSBjYW4gYmUgdXNlZCBpbnN0ZWFkIG9mIG1lbWNweSBpbiBjYXNlcyB3aGVyZSB0aGUgY29waWVkIGJsb2NrcwotICogYXJlIG9mdGVuIHZlcnkgc2hvcnQuICBXaGlsZSBtb3N0IHBsYXRmb3JtcyBoYXZlIGhpZ2hseSBvcHRpbWl6ZWQgY29kZSBmb3IKLSAqIGxhcmdlIHRyYW5zZmVycywgdGhlIHNldHVwIGNvc3RzIGZvciBtZW1jcHkgYXJlIG9mdGVuIHF1aXRlIGhpZ2guICBNRU1DUFkKLSAqIHNvbHZlcyB0aGlzIGJ5IGRvaW5nIHNob3J0IGNvcGllcyAiaW4gbGluZSIuCi0gKi8KLQotI2lmIGRlZmluZWQoX01TQ19WRVIpCi0jZGVmaW5lIFB5X01FTUNQWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHNpemVfdCBpXywgbl8gPSAobGVuZ3RoKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNoYXIgKnRfID0gKHZvaWQqKSAodGFyZ2V0KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGNvbnN0IGNoYXIgKnNfID0gKHZvaWQqKSAoc291cmNlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChuXyA+PSAxNikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBtZW1jcHkodF8sIHNfLCBuXyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBmb3IgKGlfID0gMDsgaV8gPCBuXzsgaV8rKykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgdF9baV9dID0gc19baV9dOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSB3aGlsZSAoMCkKLSNlbHNlCisvKiBQeV9NRU1DUFkgaXMga2VwdCBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHksCisgKiBzZWUgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODEyNiAqLwogI2RlZmluZSBQeV9NRU1DUFkgbWVtY3B5Ci0jZW5kaWYKIAogI2luY2x1ZGUgPHN0ZGxpYi5oPgogCkBAIC01NzAsMTggKzQzNSwxOCBAQAogI2RlZmluZSBIQVZFX1BZX1NFVF81M0JJVF9QUkVDSVNJT04gMQogI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9IRUFERVIgXAogICB1bnNpZ25lZCBpbnQgb2xkX2ZwY3IsIG5ld19mcGNyCi0jZGVmaW5lIF9QeV9TRVRfNTNCSVRfUFJFQ0lTSU9OX1NUQVJUCQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgX19hc21fXyAoImZtb3ZlLmwgJSVmcGNyLCUwIiA6ICI9ZyIgKG9sZF9mcGNyKSk7CQkJXAotICAgIC8qIFNldCBkb3VibGUgcHJlY2lzaW9uIC8gcm91bmQgdG8gbmVhcmVzdC4gICovCQkJXAotICAgIG5ld19mcGNyID0gKG9sZF9mcGNyICYgfjB4ZjApIHwgMHg4MDsJCQkJXAotICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikJCQkJCQlcCi0gICAgICBfX2FzbV9fIHZvbGF0aWxlICgiZm1vdmUubCAlMCwlJWZwY3IiIDogOiAiZyIgKG5ld19mcGNyKSk7CVwKKyNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fU1RBUlQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBfX2FzbV9fICgiZm1vdmUubCAlJWZwY3IsJTAiIDogIj1nIiAob2xkX2ZwY3IpKTsgICAgICAgICAgICAgICAgICAgIFwKKyAgICAvKiBTZXQgZG91YmxlIHByZWNpc2lvbiAvIHJvdW5kIHRvIG5lYXJlc3QuICAqLyAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBuZXdfZnBjciA9IChvbGRfZnBjciAmIH4weGYwKSB8IDB4ODA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAobmV3X2ZwY3IgIT0gb2xkX2ZwY3IpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAobmV3X2ZwY3IpKTsgICAgICAgIFwKICAgfSB3aGlsZSAoMCkKLSNkZWZpbmUgX1B5X1NFVF81M0JJVF9QUkVDSVNJT05fRU5ECQkJCQlcCi0gIGRvIHsJCQkJCQkJCQlcCi0gICAgaWYgKG5ld19mcGNyICE9IG9sZF9mcGNyKQkJCQkJCVwKLSAgICAgIF9fYXNtX18gdm9sYXRpbGUgKCJmbW92ZS5sICUwLCUlZnBjciIgOiA6ICJnIiAob2xkX2ZwY3IpKTsJXAorI2RlZmluZSBfUHlfU0VUXzUzQklUX1BSRUNJU0lPTl9FTkQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGlmIChuZXdfZnBjciAhPSBvbGRfZnBjcikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgX19hc21fXyB2b2xhdGlsZSAoImZtb3ZlLmwgJTAsJSVmcGNyIiA6IDogImciIChvbGRfZnBjcikpOyAgICAgICAgXAogICB9IHdoaWxlICgwKQogI2VuZGlmCiAKQEAgLTg1MCwxMCArNzE1LDYgQEAKICNwcmFnbWEgZXJyb3JfbWVzc2FnZXMgKG9mZixFX0VORF9PRl9MT09QX0NPREVfTk9UX1JFQUNIRUQpCiAjZW5kaWYKIAotLyoKLSAqIE9sZGVyIE1pY3Jvc29mdCBjb21waWxlcnMgZG9uJ3Qgc3VwcG9ydCB0aGUgQzk5IGxvbmcgbG9uZyBsaXRlcmFsIHN1ZmZpeGVzLAotICogc28gdGhlc2Ugd2lsbCBiZSBkZWZpbmVkIGluIFBDL3B5Y29uZmlnLmggZm9yIHRob3NlIGNvbXBpbGVycy4KLSAqLwogI2lmbmRlZiBQeV9MTAogI2RlZmluZSBQeV9MTCh4KSB4IyNMTAogI2VuZGlmCkBAIC04NjIsMTUgKzcyMyw3IEBACiAjZGVmaW5lIFB5X1VMTCh4KSBQeV9MTCh4IyNVKQogI2VuZGlmCiAKLSNpZmRlZiBWQV9MSVNUX0lTX0FSUkFZCi0jZGVmaW5lIFB5X1ZBX0NPUFkoeCwgeSkgUHlfTUVNQ1BZKCh4KSwgKHkpLCBzaXplb2YodmFfbGlzdCkpCi0jZWxzZQotI2lmZGVmIF9fdmFfY29weQotI2RlZmluZSBQeV9WQV9DT1BZIF9fdmFfY29weQotI2Vsc2UKLSNkZWZpbmUgUHlfVkFfQ09QWSh4LCB5KSAoeCkgPSAoeSkKLSNlbmRpZgotI2VuZGlmCisjZGVmaW5lIFB5X1ZBX0NPUFkgdmFfY29weQogCiAvKgogICogQ29udmVuaWVudCBtYWNyb3MgdG8gZGVhbCB3aXRoIGVuZGlhbm5lc3Mgb2YgdGhlIHBsYXRmb3JtLiBXT1JEU19CSUdFTkRJQU4gaXMKQEAgLTkwNiw0ICs3NTksOCBAQAogI2VuZGlmIC8qIF9NU0NfVkVSID49IDE5MDAgKi8KICNlbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCiAKKyNpZmRlZiBfX0FORFJPSURfXworI2luY2x1ZGUgPGFuZHJvaWQvYXBpLWxldmVsLmg+CisjZW5kaWYKKwogI2VuZGlmIC8qIFB5X1BZUE9SVF9IICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RhdGUuaCBiL0luY2x1ZGUvcHlzdGF0ZS5oCmluZGV4IDA0OTlhNzQuLmFmYzNjMGMgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvcHlzdGF0ZS5oCisrKyBiL0luY2x1ZGUvcHlzdGF0ZS5oCkBAIC04LDE0ICs4LDIxIEBACiBleHRlcm4gIkMiIHsKICNlbmRpZgogCisvKiBUaGlzIGxpbWl0YXRpb24gaXMgZm9yIHBlcmZvcm1hbmNlIGFuZCBzaW1wbGljaXR5LiBJZiBuZWVkZWQgaXQgY2FuIGJlCityZW1vdmVkICh3aXRoIGVmZm9ydCkuICovCisjZGVmaW5lIE1BWF9DT19FWFRSQV9VU0VSUyAyNTUKKwogLyogU3RhdGUgc2hhcmVkIGJldHdlZW4gdGhyZWFkcyAqLwogCiBzdHJ1Y3QgX3RzOyAvKiBGb3J3YXJkICovCiBzdHJ1Y3QgX2lzOyAvKiBGb3J3YXJkICovCitzdHJ1Y3QgX2ZyYW1lOyAvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGZvciBQeUZyYW1lT2JqZWN0LiAqLwogCiAjaWZkZWYgUHlfTElNSVRFRF9BUEkKIHR5cGVkZWYgc3RydWN0IF9pcyBQeUludGVycHJldGVyU3RhdGU7CiAjZWxzZQordHlwZWRlZiBQeU9iamVjdCogKCpfUHlGcmFtZUV2YWxGdW5jdGlvbikoc3RydWN0IF9mcmFtZSAqLCBpbnQpOworCiB0eXBlZGVmIHN0cnVjdCBfaXMgewogCiAgICAgc3RydWN0IF9pcyAqbmV4dDsKQEAgLTM2LDE5ICs0MywxNyBAQAogI2lmZGVmIEhBVkVfRExPUEVOCiAgICAgaW50IGRsb3BlbmZsYWdzOwogI2VuZGlmCi0jaWZkZWYgV0lUSF9UU0MKLSAgICBpbnQgdHNjZHVtcDsKLSNlbmRpZgogCiAgICAgUHlPYmplY3QgKmJ1aWx0aW5zX2NvcHk7CisgICAgUHlPYmplY3QgKmltcG9ydF9mdW5jOworICAgIC8qIEluaXRpYWxpemVkIHRvIFB5RXZhbF9FdmFsRnJhbWVEZWZhdWx0KCkuICovCisgICAgX1B5RnJhbWVFdmFsRnVuY3Rpb24gZXZhbF9mcmFtZTsKIH0gUHlJbnRlcnByZXRlclN0YXRlOwogI2VuZGlmCiAKIAogLyogU3RhdGUgdW5pcXVlIHBlciB0aHJlYWQgKi8KIAotc3RydWN0IF9mcmFtZTsgLyogQXZvaWQgaW5jbHVkaW5nIGZyYW1lb2JqZWN0LmggKi8KLQogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUHlfdHJhY2VmdW5jIHJldHVybiAtMSB3aGVuIHJhaXNpbmcgYW4gZXhjZXB0aW9uLCBvciAwIGZvciBzdWNjZXNzLiAqLwogdHlwZWRlZiBpbnQgKCpQeV90cmFjZWZ1bmMpKFB5T2JqZWN0ICosIHN0cnVjdCBfZnJhbWUgKiwgaW50LCBQeU9iamVjdCAqKTsKQEAgLTEzNyw2ICsxNDIsMTIgQEAKICAgICBQeU9iamVjdCAqY29yb3V0aW5lX3dyYXBwZXI7CiAgICAgaW50IGluX2Nvcm91dGluZV93cmFwcGVyOwogCisgICAgUHlfc3NpemVfdCBjb19leHRyYV91c2VyX2NvdW50OworICAgIGZyZWVmdW5jIGNvX2V4dHJhX2ZyZWVmdW5jc1tNQVhfQ09fRVhUUkFfVVNFUlNdOworCisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maXJzdGl0ZXI7CisgICAgUHlPYmplY3QgKmFzeW5jX2dlbl9maW5hbGl6ZXI7CisKICAgICAvKiBYWFggc2lnbmFsIGhhbmRsZXJzIHNob3VsZCBhbHNvIGJlIGhlcmUgKi8KIAogfSBQeVRocmVhZFN0YXRlOwpAQCAtMTQ2LDcgKzE1Nyw5IEBACiBQeUFQSV9GVU5DKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKSBQeUludGVycHJldGVyU3RhdGVfTmV3KHZvaWQpOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfQ2xlYXIoUHlJbnRlcnByZXRlclN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlKFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBfUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZiAhZGVmaW5lZChQeV9MSU1JVEVEX0FQSSkgfHwgUHlfTElNSVRFRF9BUEkrMCA+PSAweDAzMDMwMDAwCiAvKiBOZXcgaW4gMy4zICovCiBQeUFQSV9GVU5DKGludCkgUHlTdGF0ZV9BZGRNb2R1bGUoUHlPYmplY3QqLCBzdHJ1Y3QgUHlNb2R1bGVEZWYqKTsKQEAgLTE1OCwxNCArMTcxLDIwIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeVRocmVhZFN0YXRlICopIFB5VGhyZWFkU3RhdGVfTmV3KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqKTsKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9QcmVhbGxvYyhQeUludGVycHJldGVyU3RhdGUgKik7CiBQeUFQSV9GVU5DKHZvaWQpIF9QeVRocmVhZFN0YXRlX0luaXQoUHlUaHJlYWRTdGF0ZSAqKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIFB5QVBJX0ZVTkModm9pZCkgUHlUaHJlYWRTdGF0ZV9DbGVhcihQeVRocmVhZFN0YXRlICopOwogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZShQeVRocmVhZFN0YXRlICopOworI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogUHlBUElfRlVOQyh2b2lkKSBfUHlUaHJlYWRTdGF0ZV9EZWxldGVFeGNlcHQoUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNpZmRlZiBXSVRIX1RIUkVBRAogUHlBUElfRlVOQyh2b2lkKSBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQodm9pZCk7CisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiBQeUFQSV9GVU5DKHZvaWQpIF9QeUdJTFN0YXRlX1JlaW5pdCh2b2lkKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KICNlbmRpZgogCiAvKiBSZXR1cm4gdGhlIGN1cnJlbnQgdGhyZWFkIHN0YXRlLiBUaGUgZ2xvYmFsIGludGVycHJldGVyIGxvY2sgbXVzdCBiZSBoZWxkLgpAQCAtMTczLDkgKzE5MiwxMSBAQAogICogdGhlIGNhbGxlciBuZWVkbid0IGNoZWNrIGZvciBOVUxMKS4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX0dldCh2b2lkKTsKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogU2ltaWxhciB0byBQeVRocmVhZFN0YXRlX0dldCgpLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvcgogICogaWYgaXQgaXMgTlVMTC4gKi8KIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBfUHlUaHJlYWRTdGF0ZV9VbmNoZWNrZWRHZXQodm9pZCk7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCiAKIFB5QVBJX0ZVTkMoUHlUaHJlYWRTdGF0ZSAqKSBQeVRocmVhZFN0YXRlX1N3YXAoUHlUaHJlYWRTdGF0ZSAqKTsKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgUHlUaHJlYWRTdGF0ZV9HZXREaWN0KHZvaWQpOwpAQCAtMjQxLDExICsyNjIsMjMgQEAKICovCiBQeUFQSV9GVU5DKFB5VGhyZWFkU3RhdGUgKikgUHlHSUxTdGF0ZV9HZXRUaGlzVGhyZWFkU3RhdGUodm9pZCk7CiAKLS8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCi0gKiBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UKLSAqLwogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorLyogSXNzdWUgIzI2NTU4OiBGbGFnIHRvIGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLgorICAgSWYgc2V0IHRvIG5vbi16ZXJvLCBQeUdJTFN0YXRlX0NoZWNrKCkgYWx3YXlzIHJldHVybiAxLiAqLworUHlBUElfREFUQShpbnQpIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQ7CisKKy8qIEhlbHBlci9kaWFnbm9zdGljIGZ1bmN0aW9uIC0gcmV0dXJuIDEgaWYgdGhlIGN1cnJlbnQgdGhyZWFkCisgICBjdXJyZW50bHkgaG9sZHMgdGhlIEdJTCwgMCBvdGhlcndpc2UuCisKKyAgIFRoZSBmdW5jdGlvbiByZXR1cm5zIDEgaWYgX1B5R0lMU3RhdGVfY2hlY2tfZW5hYmxlZCBpcyBub24temVyby4gKi8KIFB5QVBJX0ZVTkMoaW50KSBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpOworCisvKiBVbnNhZmUgZnVuY3Rpb24gdG8gZ2V0IHRoZSBzaW5nbGUgUHlJbnRlcnByZXRlclN0YXRlIHVzZWQgYnkgdGhpcyBwcm9jZXNzJworICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24uCisKKyAgIFJldHVybiBOVUxMIGJlZm9yZSBfUHlHSUxTdGF0ZV9Jbml0KCkgaXMgY2FsbGVkIGFuZCBhZnRlciBfUHlHSUxTdGF0ZV9GaW5pKCkKKyAgIGlzIGNhbGxlZC4gKi8KK1B5QVBJX0ZVTkMoUHlJbnRlcnByZXRlclN0YXRlICopIF9QeUdJTFN0YXRlX0dldEludGVycHJldGVyU3RhdGVVbnNhZmUodm9pZCk7CiAjZW5kaWYKIAogI2VuZGlmICAgLyogI2lmZGVmIFdJVEhfVEhSRUFEICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RyaGV4LmggYi9JbmNsdWRlL3B5c3RyaGV4LmgKaW5kZXggMWRjMTI1NS4uNjZhMzBlMiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cmhleC5oCisrKyBiL0luY2x1ZGUvcHlzdHJoZXguaApAQCAtNSwxMCArNSwxMiBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAorI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogLyogUmV0dXJucyBhIHN0cigpIGNvbnRhaW5pbmcgdGhlIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleChjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKIC8qIFJldHVybnMgYSBieXRlcygpIGNvbnRhaW5pbmcgdGhlIEFTQ0lJIGhleCByZXByZXNlbnRhdGlvbiBvZiBhcmdidWYuICovCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgX1B5X3N0cmhleF9ieXRlcyhjb25zdCBjaGFyKiBhcmdidWYsIGNvbnN0IFB5X3NzaXplX3QgYXJnbGVuKTsKKyNlbmRpZiAvKiAhUHlfTElNSVRFRF9BUEkgKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiB9CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5c3RydG9kLmggYi9JbmNsdWRlL3B5c3RydG9kLmgKaW5kZXggMjNmZDFjNi4uYzFlODRkZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXN0cnRvZC5oCisrKyBiL0luY2x1ZGUvcHlzdHJ0b2QuaApAQCAtMTksNiArMTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKTsKIAogI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQorUHlBUElfRlVOQyhQeU9iamVjdCAqKSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSk7CisKIFB5QVBJX0ZVTkMoZG91YmxlKSBfUHlfcGFyc2VfaW5mX29yX25hbihjb25zdCBjaGFyICpwLCBjaGFyICoqZW5kcHRyKTsKICNlbmRpZgogCmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhvbnJ1bi5oIGIvSW5jbHVkZS9weXRob25ydW4uaAppbmRleCA5YzJlODEzLi5jZmEwYTlmIDEwMDY0NAotLS0gYS9JbmNsdWRlL3B5dGhvbnJ1bi5oCisrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKQEAgLTY2LDggKzY2LDggQEAKICAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgICAgICAgLyogZGVjb2RlZCBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nICovCiAgICAgY29uc3QgY2hhciogZW5jLAogICAgIGludCBzdGFydCwKLSAgICBjaGFyICpwczEsCi0gICAgY2hhciAqcHMyLAorICAgIGNvbnN0IGNoYXIgKnBzMSwKKyAgICBjb25zdCBjaGFyICpwczIsCiAgICAgUHlDb21waWxlckZsYWdzICpmbGFncywKICAgICBpbnQgKmVycmNvZGUsCiAgICAgUHlBcmVuYSAqYXJlbmEpOwpAQCAtNzYsOCArNzYsOCBAQAogICAgIFB5T2JqZWN0ICpmaWxlbmFtZSwKICAgICBjb25zdCBjaGFyKiBlbmMsCiAgICAgaW50IHN0YXJ0LAotICAgIGNoYXIgKnBzMSwKLSAgICBjaGFyICpwczIsCisgICAgY29uc3QgY2hhciAqcHMxLAorICAgIGNvbnN0IGNoYXIgKnBzMiwKICAgICBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLAogICAgIGludCAqZXJyY29kZSwKICAgICBQeUFyZW5hICphcmVuYSk7CmRpZmYgLS1naXQgYS9JbmNsdWRlL3B5dGhyZWFkLmggYi9JbmNsdWRlL3B5dGhyZWFkLmgKaW5kZXggNmU5ZjMwMy4uZGQ2ODFiZSAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRocmVhZC5oCisrKyBiL0luY2x1ZGUvcHl0aHJlYWQuaApAQCAtMzcsMTkgKzM3LDE0IEBACiAgICBtb2R1bGUgZXhwb3NlcyBhIGhpZ2hlci1sZXZlbCBBUEksIHdpdGggdGltZW91dHMgZXhwcmVzc2VkIGluIHNlY29uZHMKICAgIGFuZCBmbG9hdGluZy1wb2ludCBudW1iZXJzIGFsbG93ZWQuCiAqLwotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBQWV9MT05HX0xPTkcKKyNkZWZpbmUgUFlfVElNRU9VVF9UIGxvbmcgbG9uZwogI2RlZmluZSBQWV9USU1FT1VUX01BWCBQWV9MTE9OR19NQVgKLSNlbHNlCi0jZGVmaW5lIFBZX1RJTUVPVVRfVCBsb25nCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIExPTkdfTUFYCi0jZW5kaWYKIAogLyogSW4gdGhlIE5UIEFQSSwgdGhlIHRpbWVvdXQgaXMgYSBEV09SRCBhbmQgaXMgZXhwcmVzc2VkIGluIG1pbGxpc2Vjb25kcyAqLwogI2lmIGRlZmluZWQgKE5UX1RIUkVBRFMpCi0jaWYgKFB5X0xMKDB4RkZGRkZGRkYpICogMTAwMCA8IFBZX1RJTUVPVVRfTUFYKQorI2lmIDB4RkZGRkZGRkZMTCAqIDEwMDAgPCBQWV9USU1FT1VUX01BWAogI3VuZGVmIFBZX1RJTUVPVVRfTUFYCi0jZGVmaW5lIFBZX1RJTUVPVVRfTUFYIChQeV9MTCgweEZGRkZGRkZGKSAqIDEwMDApCisjZGVmaW5lIFBZX1RJTUVPVVRfTUFYICgweEZGRkZGRkZGTEwgKiAxMDAwKQogI2VuZGlmCiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9weXRpbWUuaCBiL0luY2x1ZGUvcHl0aW1lLmgKaW5kZXggNDk0MzIyYy4uODdhYzdmYyAxMDA2NDQKLS0tIGEvSW5jbHVkZS9weXRpbWUuaAorKysgYi9JbmNsdWRlL3B5dGltZS5oCkBAIC0xMywxNiArMTMsMTIgQEAKIGV4dGVybiAiQyIgewogI2VuZGlmCiAKLSNpZmRlZiBQWV9JTlQ2NF9UCiAvKiBfUHlUaW1lX3Q6IFB5dGhvbiB0aW1lc3RhbXAgd2l0aCBzdWJzZWNvbmQgcHJlY2lzaW9uLiBJdCBjYW4gYmUgdXNlZCB0bwogICAgc3RvcmUgYSBkdXJhdGlvbiwgYW5kIHNvIGluZGlyZWN0bHkgYSBkYXRlIChyZWxhdGVkIHRvIGFub3RoZXIgZGF0ZSwgbGlrZQogICAgVU5JWCBlcG9jaCkuICovCi10eXBlZGVmIFBZX0lOVDY0X1QgX1B5VGltZV90OwordHlwZWRlZiBpbnQ2NF90IF9QeVRpbWVfdDsKICNkZWZpbmUgX1B5VGltZV9NSU4gUFlfTExPTkdfTUlOCiAjZGVmaW5lIF9QeVRpbWVfTUFYIFBZX0xMT05HX01BWAotI2Vsc2UKLSMgIGVycm9yICJfUHlUaW1lX3QgbmVlZCBzaWduZWQgNjQtYml0IGludGVnZXIgdHlwZSIKLSNlbmRpZgogCiB0eXBlZGVmIGVudW0gewogICAgIC8qIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpLgpAQCAtMzAsNyArMjYsMTAgQEAKICAgICBfUHlUaW1lX1JPVU5EX0ZMT09SPTAsCiAgICAgLyogUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikuCiAgICAgICAgRm9yIGV4YW1wbGUsIHVzZWQgZm9yIHRpbWVvdXQgdG8gd2FpdCAiYXQgbGVhc3QiIE4gc2Vjb25kcy4gKi8KLSAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkcKKyAgICBfUHlUaW1lX1JPVU5EX0NFSUxJTkc9MSwKKyAgICAvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlci4KKyAgICAgICBGb3IgZXhhbXBsZSwgdXNlZCB0byByb3VuZCBmcm9tIGEgUHl0aG9uIGZsb2F0LiAqLworICAgIF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOCiB9IF9QeVRpbWVfcm91bmRfdDsKIAogLyogQ29udmVydCBhIHRpbWVfdCB0byBhIFB5TG9uZy4gKi8KQEAgLTc1LDcgKzc0LDcgQEAKICAgICAgICAgICAgICgoX1B5VGltZV90KShzZWNvbmRzKSAqICgxMDAwICogMTAwMCAqIDEwMDApKQogCiAvKiBDcmVhdGUgYSB0aW1lc3RhbXAgZnJvbSBhIG51bWJlciBvZiBuYW5vc2Vjb25kcy4gKi8KLVB5QVBJX0ZVTkMoX1B5VGltZV90KSBfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpOworUHlBUElfRlVOQyhfUHlUaW1lX3QpIF9QeVRpbWVfRnJvbU5hbm9zZWNvbmRzKGxvbmcgbG9uZyBucyk7CiAKIC8qIENvbnZlcnQgYSBudW1iZXIgb2Ygc2Vjb25kcyAoUHl0aG9uIGZsb2F0IG9yIGludCkgdG8gYSB0aW1ldGFtcC4KICAgIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLCByZXR1cm4gMCBvbiBzdWNjZXNzLiAqLwpAQCAtMTg1LDYgKzE4NCwxNCBAQAogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkgX1B5VGltZV9Jbml0KHZvaWQpOwogCisvKiBDb252ZXJ0cyBhIHRpbWVzdGFtcCB0byB0aGUgR3JlZ29yaWFuIHRpbWUsIHVzaW5nIHRoZSBsb2NhbCB0aW1lIHpvbmUuCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KK1B5QVBJX0ZVTkMoaW50KSBfUHlUaW1lX2xvY2FsdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSk7CisKKy8qIENvbnZlcnRzIGEgdGltZXN0YW1wIHRvIHRoZSBHcmVnb3JpYW4gdGltZSwgYXNzdW1pbmcgVVRDLgorICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCitQeUFQSV9GVU5DKGludCkgX1B5VGltZV9nbXRpbWUodGltZV90IHQsIHN0cnVjdCB0bSAqdG0pOworCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KICNlbmRpZgpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zZXRvYmplY3QuaCBiL0luY2x1ZGUvc2V0b2JqZWN0LmgKaW5kZXggZjE3YmMxYi4uODdlYzFjOCAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zZXRvYmplY3QuaAorKysgYi9JbmNsdWRlL3NldG9iamVjdC5oCkBAIC0xMCwxMiArMTAsMTMgQEAKIAogLyogVGhlcmUgYXJlIHRocmVlIGtpbmRzIG9mIGVudHJpZXMgaW4gdGhlIHRhYmxlOgogCi0xLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTAotMi4gQWN0aXZlOiAga2V5ICE9IE5VTEwgYW5kIGtleSAhPSBkdW1teQotMy4gRHVtbXk6ICAga2V5ID09IGR1bW15CisxLiBVbnVzZWQ6ICBrZXkgPT0gTlVMTCBhbmQgaGFzaCA9PSAwCisyLiBEdW1teTogICBrZXkgPT0gZHVtbXkgYW5kIGhhc2ggPT0gLTEKKzMuIEFjdGl2ZTogIGtleSAhPSBOVUxMIGFuZCBrZXkgIT0gZHVtbXkgYW5kIGhhc2ggIT0gLTEKIAotVGhlIGhhc2ggZmllbGQgb2YgVW51c2VkIHNsb3RzIGhhdmUgbm8gbWVhbmluZy4KLVRoZSBoYXNoIGZpZWxkIG9mIER1bW1ueSBzbG90cyBhcmUgc2V0IHRvIC0xCitUaGUgaGFzaCBmaWVsZCBvZiBVbnVzZWQgc2xvdHMgaXMgYWx3YXlzIHplcm8uCisKK1RoZSBoYXNoIGZpZWxkIG9mIER1bW15IHNsb3RzIGFyZSBzZXQgdG8gLTEKIG1lYW5pbmcgdGhhdCBkdW1teSBlbnRyaWVzIGNhbiBiZSBkZXRlY3RlZCBieQogZWl0aGVyIGVudHJ5LT5rZXk9PWR1bW15IG9yIGJ5IGVudHJ5LT5oYXNoPT0tMS4KICovCmRpZmYgLS1naXQgYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oIGIvSW5jbHVkZS9zdHJ1Y3RtZW1iZXIuaAppbmRleCA5NDhmNjkwLi41ZGE4YTQ2IDEwMDY0NAotLS0gYS9JbmNsdWRlL3N0cnVjdG1lbWJlci5oCisrKyBiL0luY2x1ZGUvc3RydWN0bWVtYmVyLmgKQEAgLTQ5LDEwICs0OSw4IEBACiAjZGVmaW5lIFRfT0JKRUNUX0VYIDE2ICAvKiBMaWtlIFRfT0JKRUNULCBidXQgcmFpc2VzIEF0dHJpYnV0ZUVycm9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSB2YWx1ZSBpcyBOVUxMLCBpbnN0ZWFkIG9mCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb252ZXJ0aW5nIHRvIE5vbmUuICovCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICNkZWZpbmUgVF9MT05HTE9ORyAgICAgIDE3CiAjZGVmaW5lIFRfVUxPTkdMT05HICAgICAxOAotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAKICNkZWZpbmUgVF9QWVNTSVpFVCAgICAgIDE5ICAgICAgLyogUHlfc3NpemVfdCAqLwogI2RlZmluZSBUX05PTkUgICAgICAgICAgMjAgICAgICAvKiBWYWx1ZSBpcyBhbHdheXMgTm9uZSAqLwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeW10YWJsZS5oIGIvSW5jbHVkZS9zeW10YWJsZS5oCmluZGV4IDE0MDljZDkuLjg2YWUzYzIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvc3ltdGFibGUuaAorKysgYi9JbmNsdWRlL3N5bXRhYmxlLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKICAgICB1bnNpZ25lZCBzdGVfY2hpbGRfZnJlZSA6IDE7ICAvKiB0cnVlIGlmIGEgY2hpbGQgYmxvY2sgaGFzIGZyZWUgdmFycywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRpbmcgZnJlZSByZWZzIHRvIGdsb2JhbHMgKi8KICAgICB1bnNpZ25lZCBzdGVfZ2VuZXJhdG9yIDogMTsgICAvKiB0cnVlIGlmIG5hbWVzcGFjZSBpcyBhIGdlbmVyYXRvciAqLworICAgIHVuc2lnbmVkIHN0ZV9jb3JvdXRpbmUgOiAxOyAgIC8qIHRydWUgaWYgbmFtZXNwYWNlIGlzIGEgY29yb3V0aW5lICovCiAgICAgdW5zaWduZWQgc3RlX3ZhcmFyZ3MgOiAxOyAgICAgLyogdHJ1ZSBpZiBibG9jayBoYXMgdmFyYXJncyAqLwogICAgIHVuc2lnbmVkIHN0ZV92YXJrZXl3b3JkcyA6IDE7IC8qIHRydWUgaWYgYmxvY2sgaGFzIHZhcmtleXdvcmRzICovCiAgICAgdW5zaWduZWQgc3RlX3JldHVybnNfdmFsdWUgOiAxOyAgLyogdHJ1ZSBpZiBuYW1lc3BhY2UgdXNlcyByZXR1cm4gd2l0aApAQCAtOTEsNiArOTIsNyBAQAogI2RlZmluZSBERUZfRlJFRSAyPDw0ICAgICAgICAgIC8qIG5hbWUgdXNlZCBidXQgbm90IGRlZmluZWQgaW4gbmVzdGVkIGJsb2NrICovCiAjZGVmaW5lIERFRl9GUkVFX0NMQVNTIDI8PDUgICAgLyogZnJlZSB2YXJpYWJsZSBmcm9tIGNsYXNzJ3MgbWV0aG9kICovCiAjZGVmaW5lIERFRl9JTVBPUlQgMjw8NiAgICAgICAgLyogYXNzaWdubWVudCBvY2N1cnJlZCB2aWEgaW1wb3J0ICovCisjZGVmaW5lIERFRl9BTk5PVCAyPDw3ICAgICAgICAgLyogdGhpcyBuYW1lIGlzIGFubm90YXRlZCAqLwogCiAjZGVmaW5lIERFRl9CT1VORCAoREVGX0xPQ0FMIHwgREVGX1BBUkFNIHwgREVGX0lNUE9SVCkKIApkaWZmIC0tZ2l0IGEvSW5jbHVkZS9zeXNtb2R1bGUuaCBiL0luY2x1ZGUvc3lzbW9kdWxlLmgKaW5kZXggY2RlMTBhYy4uYzU1NDdmZiAxMDA2NDQKLS0tIGEvSW5jbHVkZS9zeXNtb2R1bGUuaAorKysgYi9JbmNsdWRlL3N5c21vZHVsZS5oCkBAIC04LDExICs4LDExIEBACiAjZW5kaWYKIAogUHlBUElfRlVOQyhQeU9iamVjdCAqKSBQeVN5c19HZXRPYmplY3QoY29uc3QgY2hhciAqKTsKK1B5QVBJX0ZVTkMoaW50KSBQeVN5c19TZXRPYmplY3QoY29uc3QgY2hhciAqLCBQeU9iamVjdCAqKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5U3lzX0dldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXkpOwotI2VuZGlmCi1QeUFQSV9GVU5DKGludCkgUHlTeXNfU2V0T2JqZWN0KGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBQeUFQSV9GVU5DKGludCkgX1B5U3lzX1NldE9iamVjdElkKF9QeV9JZGVudGlmaWVyICprZXksIFB5T2JqZWN0ICopOworI2VuZGlmCiAKIFB5QVBJX0ZVTkModm9pZCkgUHlTeXNfU2V0QXJndihpbnQsIHdjaGFyX3QgKiopOwogUHlBUElfRlVOQyh2b2lkKSBQeVN5c19TZXRBcmd2RXgoaW50LCB3Y2hhcl90ICoqLCBpbnQpOwpkaWZmIC0tZ2l0IGEvSW5jbHVkZS90cmFjZWJhY2suaCBiL0luY2x1ZGUvdHJhY2ViYWNrLmgKaW5kZXggYzNlY2JlMi4uYjU4NzQxMCAxMDA2NDQKLS0tIGEvSW5jbHVkZS90cmFjZWJhY2suaAorKysgYi9JbmNsdWRlL3RyYWNlYmFjay5oCkBAIC0zMSw2ICszMSw3IEBACiBQeUFQSV9EQVRBKFB5VHlwZU9iamVjdCkgUHlUcmFjZUJhY2tfVHlwZTsKICNkZWZpbmUgUHlUcmFjZUJhY2tfQ2hlY2sodikgKFB5X1RZUEUodikgPT0gJlB5VHJhY2VCYWNrX1R5cGUpCiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIC8qIFdyaXRlIHRoZSBQeXRob24gdHJhY2ViYWNrIGludG8gdGhlIGZpbGUgJ2ZkJy4gRm9yIGV4YW1wbGU6CiAKICAgICAgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgZmlyc3QpOgpAQCAtNTMsMTkgKzU0LDY0IEBACiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlKTsKIAogLyogV3JpdGUgdGhlIHRyYWNlYmFjayBvZiBhbGwgdGhyZWFkcyBpbnRvIHRoZSBmaWxlICdmZCcuIGN1cnJlbnRfdGhyZWFkIGNhbiBiZQotICAgTlVMTC4gUmV0dXJuIE5VTEwgb24gc3VjY2Vzcywgb3IgYW4gZXJyb3IgbWVzc2FnZSBvbiBlcnJvci4KKyAgIE5VTEwuCisKKyAgIFJldHVybiBOVUxMIG9uIHN1Y2Nlc3MsIG9yIGFuIGVycm9yIG1lc3NhZ2Ugb24gZXJyb3IuCiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgd3JpdHRlbiBmb3IgZGVidWcgcHVycG9zZSBvbmx5LiBJdCBjYWxscwogICAgX1B5X0R1bXBUcmFjZWJhY2soKSBmb3IgZWFjaCB0aHJlYWQsIGFuZCBzbyBoYXMgdGhlIHNhbWUgbGltaXRhdGlvbnMuIEl0CiAgICBvbmx5IHdyaXRlIHRoZSB0cmFjZWJhY2sgb2YgdGhlIGZpcnN0IDEwMCB0aHJlYWRzOiB3cml0ZSAiLi4uIiBpZiB0aGVyZSBhcmUKICAgIG1vcmUgdGhyZWFkcy4KIAorICAgSWYgY3VycmVudF90c3RhdGUgaXMgTlVMTCwgdGhlIGZ1bmN0aW9uIHRyaWVzIHRvIGdldCB0aGUgUHl0aG9uIHRocmVhZCBzdGF0ZQorICAgb2YgdGhlIGN1cnJlbnQgdGhyZWFkLiBJdCBpcyBub3QgYW4gZXJyb3IgaWYgdGhlIGZ1bmN0aW9uIGlzIHVuYWJsZSB0byBnZXQKKyAgIHRoZSBjdXJyZW50IFB5dGhvbiB0aHJlYWQgc3RhdGUuCisKKyAgIElmIGludGVycCBpcyBOVUxMLCB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gZ2V0IHRoZSBpbnRlcnByZXRlciBzdGF0ZSBmcm9tCisgICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBvciBmcm9tCisgICBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCkgaW4gbGFzdCByZXNvcnQuCisKKyAgIEl0IGlzIGJldHRlciB0byBwYXNzIE5VTEwgdG8gaW50ZXJwIGFuZCBjdXJyZW50X3RzdGF0ZSwgdGhlIGZ1bmN0aW9uIHRyaWVzCisgICBkaWZmZXJlbnQgb3B0aW9ucyB0byByZXRyaWV2ZSB0aGVzZSBpbmZvcm1hdGlvbnMuCisKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKIFB5QVBJX0ZVTkMoY29uc3QgY2hhciopIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygKLSAgICBpbnQgZmQsIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwLAotICAgIFB5VGhyZWFkU3RhdGUgKmN1cnJlbnRfdGhyZWFkKTsKKyAgICBpbnQgZmQsCisgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCisgICAgUHlUaHJlYWRTdGF0ZSAqY3VycmVudF90c3RhdGUpOworI2VuZGlmIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCisKKy8qIFdyaXRlIGEgVW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLiBFbmNvZGUgdGhlIHN0cmluZyB0bworICAgQVNDSUkgdXNpbmcgdGhlIGJhY2tzbGFzaHJlcGxhY2UgZXJyb3IgaGFuZGxlci4KKworICAgRG8gbm90aGluZyBpZiB0ZXh0IGlzIG5vdCBhIFVuaWNvZGUgb2JqZWN0LiBUaGUgZnVuY3Rpb24gYWNjZXB0cyBVbmljb2RlCisgICBzdHJpbmcgd2hpY2ggaXMgbm90IHJlYWR5IChQeVVuaWNvZGVfV0NIQVJfS0lORCkuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wQVNDSUkoaW50IGZkLCBQeU9iamVjdCAqdGV4dCk7CisKKy8qIEZvcm1hdCBhbiBpbnRlZ2VyIGFzIGRlY2ltYWwgaW50byB0aGUgZmlsZSBkZXNjcmlwdG9yIGZkLgorCisgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLworUHlBUElfRlVOQyh2b2lkKSBfUHlfRHVtcERlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUpOworCisvKiBGb3JtYXQgYW4gaW50ZWdlciBhcyBoZXhhZGVjaW1hbCBpbnRvIHRoZSBmaWxlIGRlc2NyaXB0b3IgZmQgd2l0aCBhdCBsZWFzdAorICAgd2lkdGggZGlnaXRzLgorCisgICBUaGUgbWF4aW11bSB3aWR0aCBpcyBzaXplb2YodW5zaWduZWQgbG9uZykqMiBkaWdpdHMuCisKKyAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCitQeUFQSV9GVU5DKHZvaWQpIF9QeV9EdW1wSGV4YWRlY2ltYWwoCisgICAgaW50IGZkLAorICAgIHVuc2lnbmVkIGxvbmcgdmFsdWUsCisgICAgUHlfc3NpemVfdCB3aWR0aCk7CisKKyNlbmRpZiAgIC8qICFQeV9MSU1JVEVEX0FQSSAqLwogCiAjaWZkZWYgX19jcGx1c3BsdXMKIH0KZGlmZiAtLWdpdCBhL0luY2x1ZGUvdW5pY29kZW9iamVjdC5oIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKaW5kZXggMmM0OTZlYS4uNjQzZDEwZCAxMDA2NDQKLS0tIGEvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKKysrIGIvSW5jbHVkZS91bmljb2Rlb2JqZWN0LmgKQEAgLTEwMywxMCArMTAzLDYgQEAKICMgZW5kaWYKICNlbmRpZgogCi0jaWYgZGVmaW5lZChNU19XSU5ET1dTKQotIyAgZGVmaW5lIEhBVkVfTUJDUwotI2VuZGlmCi0KICNpZmRlZiBIQVZFX1dDSEFSX0gKIC8qIFdvcmsgYXJvdW5kIGEgY29zbWV0aWMgYnVnIGluIEJTREkgNC54IHdjaGFyLmg7IHRoYW5rcyB0byBUaG9tYXMgV291dGVycyAqLwogIyBpZmRlZiBfSEFWRV9CU0RJCkBAIC0xMTcsMjEgKzExMyw5IEBACiAKIC8qIFB5X1VDUzQgYW5kIFB5X1VDUzIgYXJlIHR5cGVkZWZzIGZvciB0aGUgcmVzcGVjdGl2ZQogICAgdW5pY29kZSByZXByZXNlbnRhdGlvbnMuICovCi0jaWYgU0laRU9GX0lOVCA9PSA0Ci10eXBlZGVmIHVuc2lnbmVkIGludCBQeV9VQ1M0OwotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotdHlwZWRlZiB1bnNpZ25lZCBsb25nIFB5X1VDUzQ7Ci0jZWxzZQotI2Vycm9yICJDb3VsZCBub3QgZmluZCBhIHByb3BlciB0eXBlZGVmIGZvciBQeV9VQ1M0IgotI2VuZGlmCi0KLSNpZiBTSVpFT0ZfU0hPUlQgPT0gMgotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBQeV9VQ1MyOwotI2Vsc2UKLSNlcnJvciAiQ291bGQgbm90IGZpbmQgYSBwcm9wZXIgdHlwZWRlZiBmb3IgUHlfVUNTMiIKLSNlbmRpZgotCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgUHlfVUNTMTsKK3R5cGVkZWYgdWludDMyX3QgUHlfVUNTNDsKK3R5cGVkZWYgdWludDE2X3QgUHlfVUNTMjsKK3R5cGVkZWYgdWludDhfdCBQeV9VQ1MxOwogCiAvKiAtLS0gSW50ZXJuYWwgVW5pY29kZSBPcGVyYXRpb25zIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTcyLDcgKzE1Niw3IEBACiAgICAgUHlfVU5JQ09ERV9JU05VTUVSSUMoY2gpKQogCiAjZGVmaW5lIFB5X1VOSUNPREVfQ09QWSh0YXJnZXQsIHNvdXJjZSwgbGVuZ3RoKSBcCi0gICAgUHlfTUVNQ1BZKCh0YXJnZXQpLCAoc291cmNlKSwgKGxlbmd0aCkqc2l6ZW9mKFB5X1VOSUNPREUpKQorICAgIG1lbWNweSgodGFyZ2V0KSwgKHNvdXJjZSksIChsZW5ndGgpKnNpemVvZihQeV9VTklDT0RFKSkKIAogI2RlZmluZSBQeV9VTklDT0RFX0ZJTEwodGFyZ2V0LCB2YWx1ZSwgbGVuZ3RoKSBcCiAgICAgZG8ge1B5X3NzaXplX3QgaV87IFB5X1VOSUNPREUgKnRfID0gKHRhcmdldCk7IFB5X1VOSUNPREUgdl8gPSAodmFsdWUpO1wKQEAgLTkwMCw3ICs4ODQsNyBAQAogICAgIC8qIG1pbmltdW0gY2hhcmFjdGVyIChkZWZhdWx0OiAxMjcsIEFTQ0lJKSAqLwogICAgIFB5X1VDUzQgbWluX2NoYXI7CiAKLSAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgYnkgMjUlIChkZWZhdWx0OiAwKS4gKi8KKyAgICAvKiBJZiBub24temVybywgb3ZlcmFsbG9jYXRlIHRoZSBidWZmZXIgKGRlZmF1bHQ6IDApLiAqLwogICAgIHVuc2lnbmVkIGNoYXIgb3ZlcmFsbG9jYXRlOwogCiAgICAgLyogSWYgcmVhZG9ubHkgaXMgMSwgYnVmZmVyIGlzIGEgc2hhcmVkIHN0cmluZyAoY2Fubm90IGJlIG1vZGlmaWVkKQpAQCAtOTM0LDYgKzkxOCwyMyBAQAogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW5ndGgsIFB5X1VDUzQgbWF4Y2hhcik7CiAKKy8qIFByZXBhcmUgdGhlIGJ1ZmZlciB0byBoYXZlIGF0IGxlYXN0IHRoZSBraW5kIEtJTkQuCisgICBGb3IgZXhhbXBsZSwga2luZD1QeVVuaWNvZGVfMkJZVEVfS0lORCBlbnN1cmVzIHRoYXQgdGhlIHdyaXRlciB3aWxsCisgICBzdXBwb3J0IGNoYXJhY3RlcnMgaW4gcmFuZ2UgVSswMDAtVStGRkZGLgorCisgICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyNkZWZpbmUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZChXUklURVIsIEtJTkQpICAgICAgICAgICAgICAgICAgICBcCisgICAgKGFzc2VydCgoS0lORCkgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpLCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAoS0lORCkgPD0gKFdSSVRFUiktPmtpbmQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgPyAwICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIDogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZEludGVybmFsKChXUklURVIpLCAoS0lORCkpKQorCisvKiBEb24ndCBjYWxsIHRoaXMgZnVuY3Rpb24gZGlyZWN0bHksIHVzZSB0aGUgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpCisgICBtYWNybyBpbnN0ZWFkLiAqLworUHlBUElfRlVOQyhpbnQpCitfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kSW50ZXJuYWwoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gUHlVbmljb2RlX0tpbmQga2luZCk7CisKIC8qIEFwcGVuZCBhIFVuaWNvZGUgY2hhcmFjdGVyLgogICAgUmV0dXJuIDAgb24gc3VjY2VzcywgcmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBQeUFQSV9GVU5DKGludCkKQEAgLTE2NDAsMTMgKzE2NDEsMTMgQEAKICAgICApOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX01CQ1MKKyNpZmRlZiBNU19XSU5ET1dTCiAKIC8qIC0tLSBNQkNTIGNvZGVjcyBmb3IgV2luZG93cyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiBQeUFQSV9GVU5DKFB5T2JqZWN0KikgUHlVbmljb2RlX0RlY29kZU1CQ1MoCiAgICAgY29uc3QgY2hhciAqc3RyaW5nLCAgICAgICAgIC8qIE1CQ1MgZW5jb2RlZCBzdHJpbmcgKi8KLSAgICBQeV9zc2l6ZV90IGxlbmd0aCwgICAgICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCisgICAgUHlfc3NpemVfdCBsZW5ndGgsICAgICAgICAgIC8qIHNpemUgb2Ygc3RyaW5nICovCiAgICAgY29uc3QgY2hhciAqZXJyb3JzICAgICAgICAgIC8qIGVycm9yIGhhbmRsaW5nICovCiAgICAgKTsKIApAQCAtMTY4Myw3ICsxNjg0LDcgQEAKICAgICBjb25zdCBjaGFyICplcnJvcnMgICAgICAgICAgLyogZXJyb3IgaGFuZGxpbmcgKi8KICAgICApOwogCi0jZW5kaWYgLyogSEFWRV9NQkNTICovCisjZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiAvKiAtLS0gRGVjaW1hbCBFbmNvZGVyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtMTkzOCw2ICsxOTM5LDE0IEBACiAgICAgUHlPYmplY3QgKnNlcSAgICAgICAgICAgICAgIC8qIFNlcXVlbmNlIG9iamVjdCAqLwogICAgICk7CiAKKyNpZm5kZWYgUHlfTElNSVRFRF9BUEkKK1B5QVBJX0ZVTkMoUHlPYmplY3QgKikgX1B5VW5pY29kZV9Kb2luQXJyYXkoCisgICAgUHlPYmplY3QgKnNlcGFyYXRvciwKKyAgICBQeU9iamVjdCAqKml0ZW1zLAorICAgIFB5X3NzaXplX3Qgc2VxbGVuCisgICAgKTsKKyNlbmRpZiAvKiBQeV9MSU1JVEVEX0FQSSAqLworCiAvKiBSZXR1cm4gMSBpZiBzdWJzdHIgbWF0Y2hlcyBzdHJbc3RhcnQ6ZW5kXSBhdCB0aGUgZ2l2ZW4gdGFpbCBlbmQsIDAKICAgIG90aGVyd2lzZS4gKi8KIApAQCAtMjI0OCwxMSArMjI1NywxNyBAQAogICAgIGludCBjaGVja19jb250ZW50KTsKICNlbmRpZgogCisjaWZuZGVmIFB5X0xJTUlURURfQVBJCiAvKiBSZXR1cm4gYW4gaW50ZXJuZWQgVW5pY29kZSBvYmplY3QgZm9yIGFuIElkZW50aWZpZXI7IG1heSBmYWlsIGlmIHRoZXJlIGlzIG5vIG1lbW9yeS4qLwogUHlBUElfRlVOQyhQeU9iamVjdCopIF9QeVVuaWNvZGVfRnJvbUlkKF9QeV9JZGVudGlmaWVyKik7CiAvKiBDbGVhciBhbGwgc3RhdGljIHN0cmluZ3MuICovCiBQeUFQSV9GVU5DKHZvaWQpIF9QeVVuaWNvZGVfQ2xlYXJTdGF0aWNTdHJpbmdzKHZvaWQpOwogCisvKiBGYXN0IGVxdWFsaXR5IGNoZWNrIHdoZW4gdGhlIGlucHV0cyBhcmUga25vd24gdG8gYmUgZXhhY3QgdW5pY29kZSB0eXBlcworICAgYW5kIHdoZXJlIHRoZSBoYXNoIHZhbHVlcyBhcmUgZXF1YWwgKGkuZS4gYSB2ZXJ5IHByb2JhYmxlIG1hdGNoKSAqLworUHlBUElfRlVOQyhpbnQpIF9QeVVuaWNvZGVfRVEoUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CisjZW5kaWYgLyogIVB5X0xJTUlURURfQVBJICovCisKICNpZmRlZiBfX2NwbHVzcGx1cwogfQogI2VuZGlmCmRpZmYgLS1naXQgYS9JbmNsdWRlL3dhcm5pbmdzLmggYi9JbmNsdWRlL3dhcm5pbmdzLmgKaW5kZXggZWZmYjlmYWQuLmMxYzY5OTIgMTAwNjQ0Ci0tLSBhL0luY2x1ZGUvd2FybmluZ3MuaAorKysgYi9JbmNsdWRlL3dhcm5pbmdzLmgKQEAgLTE3LDYgKzE3LDEzIEBACiAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKICAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCiAgICAgLi4uKTsKKworLyogRW1pdCBhIFJlc291cmNlV2FybmluZyB3YXJuaW5nICovCitQeUFQSV9GVU5DKGludCkgUHlFcnJfUmVzb3VyY2VXYXJuaW5nKAorICAgIFB5T2JqZWN0ICpzb3VyY2UsCisgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsICAgICAgICAgLyogQVNDSUktZW5jb2RlZCBzdHJpbmcgICovCisgICAgLi4uKTsKICNpZm5kZWYgUHlfTElNSVRFRF9BUEkKIFB5QVBJX0ZVTkMoaW50KSBQeUVycl9XYXJuRXhwbGljaXRPYmplY3QoCiAgICAgUHlPYmplY3QgKmNhdGVnb3J5LApkaWZmIC0tZ2l0IGEvTGliL19jb2xsZWN0aW9uc19hYmMucHkgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQppbmRleCA4YmViZDY5Li5lZTdkMGYxIDEwMDY0NAotLS0gYS9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQorKysgYi9MaWIvX2NvbGxlY3Rpb25zX2FiYy5weQpAQCAtMTAsOCArMTAsOCBAQAogaW1wb3J0IHN5cwogCiBfX2FsbF9fID0gWyJBd2FpdGFibGUiLCAiQ29yb3V0aW5lIiwgIkFzeW5jSXRlcmFibGUiLCAiQXN5bmNJdGVyYXRvciIsCi0gICAgICAgICAgICJIYXNoYWJsZSIsICJJdGVyYWJsZSIsICJJdGVyYXRvciIsICJHZW5lcmF0b3IiLAotICAgICAgICAgICAiU2l6ZWQiLCAiQ29udGFpbmVyIiwgIkNhbGxhYmxlIiwKKyAgICAgICAgICAgIkhhc2hhYmxlIiwgIkl0ZXJhYmxlIiwgIkl0ZXJhdG9yIiwgIkdlbmVyYXRvciIsICJSZXZlcnNpYmxlIiwKKyAgICAgICAgICAgIlNpemVkIiwgIkNvbnRhaW5lciIsICJDYWxsYWJsZSIsICJDb2xsZWN0aW9uIiwKICAgICAgICAgICAgIlNldCIsICJNdXRhYmxlU2V0IiwKICAgICAgICAgICAgIk1hcHBpbmciLCAiTXV0YWJsZU1hcHBpbmciLAogICAgICAgICAgICAiTWFwcGluZ1ZpZXciLCAiS2V5c1ZpZXciLCAiSXRlbXNWaWV3IiwgIlZhbHVlc1ZpZXciLApAQCAtNjMsNiArNjMsMTggQEAKIAogIyMjIE9ORS1UUklDSyBQT05JRVMgIyMjCiAKK2RlZiBfY2hlY2tfbWV0aG9kcyhDLCAqbWV0aG9kcyk6CisgICAgbXJvID0gQy5fX21yb19fCisgICAgZm9yIG1ldGhvZCBpbiBtZXRob2RzOgorICAgICAgICBmb3IgQiBpbiBtcm86CisgICAgICAgICAgICBpZiBtZXRob2QgaW4gQi5fX2RpY3RfXzoKKyAgICAgICAgICAgICAgICBpZiBCLl9fZGljdF9fW21ldGhvZF0gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgIHJldHVybiBUcnVlCisKIGNsYXNzIEhhc2hhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC03NCwxMSArODYsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBIYXNoYWJsZToKLSAgICAgICAgICAgIGZvciBCIGluIEMuX19tcm9fXzoKLSAgICAgICAgICAgICAgICBpZiAiX19oYXNoX18iIGluIEIuX19kaWN0X186Ci0gICAgICAgICAgICAgICAgICAgIGlmIEIuX19kaWN0X19bIl9faGFzaF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2hhc2hfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTkzLDExICsxMDEsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBd2FpdGFibGU6Ci0gICAgICAgICAgICBmb3IgQiBpbiBDLl9fbXJvX186Ci0gICAgICAgICAgICAgICAgaWYgIl9fYXdhaXRfXyIgaW4gQi5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgaWYgQi5fX2RpY3RfX1siX19hd2FpdF9fIl06Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2F3YWl0X18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xMzgsMTQgKzE0Miw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKICAgICAgICAgaWYgY2xzIGlzIENvcm91dGluZToKLSAgICAgICAgICAgIG1ybyA9IEMuX19tcm9fXwotICAgICAgICAgICAgZm9yIG1ldGhvZCBpbiAoJ19fYXdhaXRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2F3YWl0X18nLCAnc2VuZCcsICd0aHJvdycsICdjbG9zZScpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKQEAgLTE2Myw4ICsxNjAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBBc3luY0l0ZXJhYmxlOgotICAgICAgICAgICAgaWYgYW55KCJfX2FpdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKToKLSAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0xODMsOSArMTc5LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQXN5bmNJdGVyYXRvcjoKLSAgICAgICAgICAgIGlmIChhbnkoIl9fYW5leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19haXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fYW5leHRfXyIsICJfX2FpdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMDEsOCArMTk1LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9faXRlcl9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19pdGVyX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0yMjEsOSArMjE0LDcgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgSXRlcmF0b3I6Ci0gICAgICAgICAgICBpZiAoYW55KCJfX25leHRfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pIGFuZAotICAgICAgICAgICAgICAgIGFueSgiX19pdGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAnX19pdGVyX18nLCAnX19uZXh0X18nKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogSXRlcmF0b3IucmVnaXN0ZXIoYnl0ZXNfaXRlcmF0b3IpCkBAIC0yNDIsNiArMjMzLDIyIEBACiBJdGVyYXRvci5yZWdpc3Rlcih6aXBfaXRlcmF0b3IpCiAKIAorY2xhc3MgUmV2ZXJzaWJsZShJdGVyYWJsZSk6CisKKyAgICBfX3Nsb3RzX18gPSAoKQorCisgICAgQGFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgd2hpbGUgRmFsc2U6CisgICAgICAgICAgICB5aWVsZCBOb25lCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgUmV2ZXJzaWJsZToKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19yZXZlcnNlZF9fIiwgIl9faXRlcl9fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisKKwogY2xhc3MgR2VuZXJhdG9yKEl0ZXJhdG9yKToKIAogICAgIF9fc2xvdHNfXyA9ICgpCkBAIC0yODUsMTcgKzI5MiwxMCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBHZW5lcmF0b3I6Ci0gICAgICAgICAgICBtcm8gPSBDLl9fbXJvX18KLSAgICAgICAgICAgIGZvciBtZXRob2QgaW4gKCdfX2l0ZXJfXycsICdfX25leHRfXycsICdzZW5kJywgJ3Rocm93JywgJ2Nsb3NlJyk6Ci0gICAgICAgICAgICAgICAgZm9yIGJhc2UgaW4gbXJvOgotICAgICAgICAgICAgICAgICAgICBpZiBtZXRob2QgaW4gYmFzZS5fX2RpY3RfXzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIF9jaGVja19tZXRob2RzKEMsICdfX2l0ZXJfXycsICdfX25leHRfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NlbmQnLCAndGhyb3cnLCAnY2xvc2UnKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAotCiBHZW5lcmF0b3IucmVnaXN0ZXIoZ2VuZXJhdG9yKQogCiAKQEAgLTMxMCw4ICszMTAsNyBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBTaXplZDoKLSAgICAgICAgICAgIGlmIGFueSgiX19sZW5fXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fbGVuX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCkBAIC0zMjYsMTAgKzMyNSwxOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgQyk6CiAgICAgICAgIGlmIGNscyBpcyBDb250YWluZXI6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY29udGFpbnNfXyIgaW4gQi5fX2RpY3RfXyBmb3IgQiBpbiBDLl9fbXJvX18pOgotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICAgICByZXR1cm4gX2NoZWNrX21ldGhvZHMoQywgIl9fY29udGFpbnNfXyIpCiAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCitjbGFzcyBDb2xsZWN0aW9uKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKKworICAgIF9fc2xvdHNfXyA9ICgpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgorICAgICAgICBpZiBjbHMgaXMgQ29sbGVjdGlvbjoKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAgIl9fbGVuX18iLCAiX19pdGVyX18iLCAiX19jb250YWluc19fIikKKyAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCiAKIGNsYXNzIENhbGxhYmxlKG1ldGFjbGFzcz1BQkNNZXRhKToKIApAQCAtMzQyLDE1ICszNDksMTQgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgX19zdWJjbGFzc2hvb2tfXyhjbHMsIEMpOgogICAgICAgICBpZiBjbHMgaXMgQ2FsbGFibGU6Ci0gICAgICAgICAgICBpZiBhbnkoIl9fY2FsbF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXyk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgICAgIHJldHVybiBfY2hlY2tfbWV0aG9kcyhDLCAiX19jYWxsX18iKQogICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKIAogCiAjIyMgU0VUUyAjIyMKIAogCi1jbGFzcyBTZXQoU2l6ZWQsIEl0ZXJhYmxlLCBDb250YWluZXIpOgorY2xhc3MgU2V0KENvbGxlY3Rpb24pOgogCiAgICAgIiIiQSBzZXQgaXMgYSBmaW5pdGUsIGl0ZXJhYmxlIGNvbnRhaW5lci4KIApAQCAtNTc1LDcgKzU4MSw3IEBACiAjIyMgTUFQUElOR1MgIyMjCiAKIAotY2xhc3MgTWFwcGluZyhTaXplZCwgSXRlcmFibGUsIENvbnRhaW5lcik6CitjbGFzcyBNYXBwaW5nKENvbGxlY3Rpb24pOgogCiAgICAgX19zbG90c19fID0gKCkKIApAQCAtNjIzLDYgKzYyOSw4IEBACiAgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKICAgICAgICAgcmV0dXJuIGRpY3Qoc2VsZi5pdGVtcygpKSA9PSBkaWN0KG90aGVyLml0ZW1zKCkpCiAKKyAgICBfX3JldmVyc2VkX18gPSBOb25lCisKIE1hcHBpbmcucmVnaXN0ZXIobWFwcGluZ3Byb3h5KQogCiAKQEAgLTY3Miw3ICs2ODAsNyBAQAogICAgICAgICBleGNlcHQgS2V5RXJyb3I6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB2ID09IHZhbHVlCisgICAgICAgICAgICByZXR1cm4gdiBpcyB2YWx1ZSBvciB2ID09IHZhbHVlCiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKQEAgLTY4Nyw3ICs2OTUsOCBAQAogCiAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCB2YWx1ZSk6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5fbWFwcGluZzoKLSAgICAgICAgICAgIGlmIHZhbHVlID09IHNlbGYuX21hcHBpbmdba2V5XToKKyAgICAgICAgICAgIHYgPSBzZWxmLl9tYXBwaW5nW2tleV0KKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApAQCAtNzk2LDcgKzgwNSw3IEBACiAjIyMgU0VRVUVOQ0VTICMjIwogCiAKLWNsYXNzIFNlcXVlbmNlKFNpemVkLCBJdGVyYWJsZSwgQ29udGFpbmVyKToKK2NsYXNzIFNlcXVlbmNlKFJldmVyc2libGUsIENvbGxlY3Rpb24pOgogCiAgICAgIiIiQWxsIHRoZSBvcGVyYXRpb25zIG9uIGEgcmVhZC1vbmx5IHNlcXVlbmNlLgogCkBAIC04MjIsNyArODMxLDcgQEAKIAogICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgdmFsdWUpOgogICAgICAgICBmb3IgdiBpbiBzZWxmOgotICAgICAgICAgICAgaWYgdiA9PSB2YWx1ZToKKyAgICAgICAgICAgIGlmIHYgaXMgdmFsdWUgb3IgdiA9PSB2YWx1ZToKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvTGliL19jb21wYXRfcGlja2xlLnB5IGIvTGliL19jb21wYXRfcGlja2xlLnB5CmluZGV4IGMwZTA0NDMuLmY2ODQ5NmEgMTAwNjQ0Ci0tLSBhL0xpYi9fY29tcGF0X3BpY2tsZS5weQorKysgYi9MaWIvX2NvbXBhdF9waWNrbGUucHkKQEAgLTI0MiwzICsyNDIsMTAgQEAKIAogZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19PU0VSUk9SX0VYQ0VQVElPTlM6CiAgICAgUkVWRVJTRV9OQU1FX01BUFBJTkdbKCdidWlsdGlucycsIGV4Y25hbWUpXSA9ICgnZXhjZXB0aW9ucycsICdPU0Vycm9yJykKKworUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TID0gKAorICAgICdNb2R1bGVOb3RGb3VuZEVycm9yJywKKykKKworZm9yIGV4Y25hbWUgaW4gUFlUSE9OM19JTVBPUlRFUlJPUl9FWENFUFRJT05TOgorICAgIFJFVkVSU0VfTkFNRV9NQVBQSU5HWygnYnVpbHRpbnMnLCBleGNuYW1lKV0gPSAoJ2V4Y2VwdGlvbnMnLCAnSW1wb3J0RXJyb3InKQpkaWZmIC0tZ2l0IGEvTGliL19vc3hfc3VwcG9ydC5weSBiL0xpYi9fb3N4X3N1cHBvcnQucHkKaW5kZXggMTNmY2Q4Yi4uZWFkZjA2ZiAxMDA2NDQKLS0tIGEvTGliL19vc3hfc3VwcG9ydC5weQorKysgYi9MaWIvX29zeF9zdXBwb3J0LnB5CkBAIC0yMTAsNyArMjEwLDcgQEAKICAgICAgICAgIyBEbyBub3QgYWx0ZXIgYSBjb25maWcgdmFyIGV4cGxpY2l0bHkgb3ZlcnJpZGRlbiBieSBlbnYgdmFyCiAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgY3Ygbm90IGluIG9zLmVudmlyb246CiAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncywgcmUuQVNDSUkpCisgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzLCByZS5BU0NJSSkKICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctaXN5c3Jvb3QgW14gXHRdKicsICcgJywgZmxhZ3MpCiAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIApAQCAtMjMyLDcgKzIzMiw3IEBACiAgICAgaWYgJ0NDJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICByZXR1cm4gX2NvbmZpZ192YXJzCiAKLSAgICBpZiByZS5zZWFyY2goJy1hcmNoXHMrcHBjJywgX2NvbmZpZ192YXJzWydDRkxBR1MnXSkgaXMgbm90IE5vbmU6CisgICAgaWYgcmUuc2VhcmNoKHInLWFyY2hccytwcGMnLCBfY29uZmlnX3ZhcnNbJ0NGTEFHUyddKSBpcyBub3QgTm9uZToKICAgICAgICAgIyBOT1RFOiBDYW5ub3QgdXNlIHN1YnByb2Nlc3MgaGVyZSBiZWNhdXNlIG9mIGJvb3RzdHJhcAogICAgICAgICAjIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIFB5dGhvbiBpdHNlbGYKICAgICAgICAgc3RhdHVzID0gb3Muc3lzdGVtKApAQCAtMjUxLDcgKzI1MSw3IEBACiAgICAgICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgICAgICBpZiBjdiBpbiBfY29uZmlnX3ZhcnMgYW5kIGN2IG5vdCBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgICAgICAgICBmbGFncyA9IF9jb25maWdfdmFyc1tjdl0KLSAgICAgICAgICAgICAgICAgICAgZmxhZ3MgPSByZS5zdWIoJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQorICAgICAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrcHBjXHcqXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgICAgICBfc2F2ZV9tb2RpZmllZF92YWx1ZShfY29uZmlnX3ZhcnMsIGN2LCBmbGFncykKIAogICAgIHJldHVybiBfY29uZmlnX3ZhcnMKQEAgLTI2Nyw3ICsyNjcsNyBAQAogICAgICAgICBmb3IgY3YgaW4gX1VOSVZFUlNBTF9DT05GSUdfVkFSUzoKICAgICAgICAgICAgIGlmIGN2IGluIF9jb25maWdfdmFycyBhbmQgJy1hcmNoJyBpbiBfY29uZmlnX3ZhcnNbY3ZdOgogICAgICAgICAgICAgICAgIGZsYWdzID0gX2NvbmZpZ192YXJzW2N2XQotICAgICAgICAgICAgICAgIGZsYWdzID0gcmUuc3ViKCctYXJjaFxzK1x3K1xzJywgJyAnLCBmbGFncykKKyAgICAgICAgICAgICAgICBmbGFncyA9IHJlLnN1YihyJy1hcmNoXHMrXHcrXHMnLCAnICcsIGZsYWdzKQogICAgICAgICAgICAgICAgIGZsYWdzID0gZmxhZ3MgKyAnICcgKyBhcmNoCiAgICAgICAgICAgICAgICAgX3NhdmVfbW9kaWZpZWRfdmFsdWUoX2NvbmZpZ192YXJzLCBjdiwgZmxhZ3MpCiAKQEAgLTQ2NSw3ICs0NjUsNyBAQAogCiAgICAgICAgICAgICBtYWNoaW5lID0gJ2ZhdCcKIAotICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKCctYXJjaFxzKyhcUyspJywgY2ZsYWdzKQorICAgICAgICAgICAgYXJjaHMgPSByZS5maW5kYWxsKHInLWFyY2hccysoXFMrKScsIGNmbGFncykKICAgICAgICAgICAgIGFyY2hzID0gdHVwbGUoc29ydGVkKHNldChhcmNocykpKQogCiAgICAgICAgICAgICBpZiBsZW4oYXJjaHMpID09IDE6CmRpZmYgLS1naXQgYS9MaWIvX3B5ZGVjaW1hbC5weSBiL0xpYi9fcHlkZWNpbWFsLnB5CmluZGV4IGE1ZWEzNDAuLjBiNDA5MjggMTAwNjQ0Ci0tLSBhL0xpYi9fcHlkZWNpbWFsLnB5CisrKyBiL0xpYi9fcHlkZWNpbWFsLnB5CkBAIC0xNDgsNyArMTQ4LDcgQEAKIF9fbmFtZV9fID0gJ2RlY2ltYWwnICAgICMgRm9yIHBpY2tsaW5nCiBfX3ZlcnNpb25fXyA9ICcxLjcwJyAgICAjIEhpZ2hlc3QgdmVyc2lvbiBvZiB0aGUgc3BlYyB0aGlzIGNvbXBsaWVzIHdpdGgKICAgICAgICAgICAgICAgICAgICAgICAgICMgU2VlIGh0dHA6Ly9zcGVsZW90cm92ZS5jb20vZGVjaW1hbC8KLV9fbGlibXBkZWNfdmVyc2lvbl9fID0gIjIuNC4xIiAjIGNvbXBhdGlibGUgbGlibXBkZWMgdmVyc2lvbgorX19saWJtcGRlY192ZXJzaW9uX18gPSAiMi40LjIiICMgY29tcGF0aWJsZSBsaWJtcGRlYyB2ZXJzaW9uCiAKIGltcG9ydCBtYXRoIGFzIF9tYXRoCiBpbXBvcnQgbnVtYmVycyBhcyBfbnVtYmVycwpAQCAtNTg5LDcgKzU4OSw3IEBACiAgICAgICAgICMgRnJvbSBhIHN0cmluZwogICAgICAgICAjIFJFcyBpbnNpc3Qgb24gcmVhbCBzdHJpbmdzLCBzbyB3ZSBjYW4gdG9vLgogICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgotICAgICAgICAgICAgbSA9IF9wYXJzZXIodmFsdWUuc3RyaXAoKSkKKyAgICAgICAgICAgIG0gPSBfcGFyc2VyKHZhbHVlLnN0cmlwKCkucmVwbGFjZSgiXyIsICIiKSkKICAgICAgICAgICAgIGlmIG0gaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQgPSBnZXRjb250ZXh0KCkKQEAgLTEwMTAsNiArMTAxMCw1NiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIERlY2ltYWxUdXBsZShzZWxmLl9zaWduLCB0dXBsZShtYXAoaW50LCBzZWxmLl9pbnQpKSwgc2VsZi5fZXhwKQogCisgICAgZGVmIGFzX2ludGVnZXJfcmF0aW8oc2VsZik6CisgICAgICAgICIiIkV4cHJlc3MgYSBmaW5pdGUgRGVjaW1hbCBpbnN0YW5jZSBpbiB0aGUgZm9ybSBuIC8gZC4KKworICAgICAgICBSZXR1cm5zIGEgcGFpciAobiwgZCkgb2YgaW50ZWdlcnMuICBXaGVuIGNhbGxlZCBvbiBhbiBpbmZpbml0eQorICAgICAgICBvciBOYU4sIHJhaXNlcyBPdmVyZmxvd0Vycm9yIG9yIFZhbHVlRXJyb3IgcmVzcGVjdGl2ZWx5LgorCisgICAgICAgID4+PiBEZWNpbWFsKCczLjE0JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgxNTcsIDUwKQorICAgICAgICA+Pj4gRGVjaW1hbCgnLTEyM2U1JykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgtMTIzMDAwMDAsIDEpCisgICAgICAgID4+PiBEZWNpbWFsKCcwLjAwJykuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICgwLCAxKQorCisgICAgICAgICIiIgorICAgICAgICBpZiBzZWxmLl9pc19zcGVjaWFsOgorICAgICAgICAgICAgaWYgc2VsZi5pc19uYW4oKToKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlIE92ZXJmbG93RXJyb3IoImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKQorCisgICAgICAgIGlmIG5vdCBzZWxmOgorICAgICAgICAgICAgcmV0dXJuIDAsIDEKKworICAgICAgICAjIEZpbmQgbiwgZCBpbiBsb3dlc3QgdGVybXMgc3VjaCB0aGF0IGFicyhzZWxmKSA9PSBuIC8gZDsKKyAgICAgICAgIyB3ZSdsbCBkZWFsIHdpdGggdGhlIHNpZ24gbGF0ZXIuCisgICAgICAgIG4gPSBpbnQoc2VsZi5faW50KQorICAgICAgICBpZiBzZWxmLl9leHAgPj0gMDoKKyAgICAgICAgICAgICMgc2VsZiBpcyBhbiBpbnRlZ2VyLgorICAgICAgICAgICAgbiwgZCA9IG4gKiAxMCoqc2VsZi5fZXhwLCAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEZpbmQgZDIsIGQ1IHN1Y2ggdGhhdCBhYnMoc2VsZikgPSBuIC8gKDIqKmQyICogNSoqZDUpLgorICAgICAgICAgICAgZDUgPSAtc2VsZi5fZXhwCisgICAgICAgICAgICB3aGlsZSBkNSA+IDAgYW5kIG4gJSA1ID09IDA6CisgICAgICAgICAgICAgICAgbiAvLz0gNQorICAgICAgICAgICAgICAgIGQ1IC09IDEKKworICAgICAgICAgICAgIyAobiAmIC1uKS5iaXRfbGVuZ3RoKCkgLSAxIGNvdW50cyB0cmFpbGluZyB6ZXJvcyBpbiBiaW5hcnkKKyAgICAgICAgICAgICMgcmVwcmVzZW50YXRpb24gb2YgbiAocHJvdmlkZWQgbiBpcyBub256ZXJvKS4KKyAgICAgICAgICAgIGQyID0gLXNlbGYuX2V4cAorICAgICAgICAgICAgc2hpZnQyID0gbWluKChuICYgLW4pLmJpdF9sZW5ndGgoKSAtIDEsIGQyKQorICAgICAgICAgICAgaWYgc2hpZnQyOgorICAgICAgICAgICAgICAgIG4gPj49IHNoaWZ0MgorICAgICAgICAgICAgICAgIGQyIC09IHNoaWZ0MgorCisgICAgICAgICAgICBkID0gNSoqZDUgPDwgZDIKKworICAgICAgICBpZiBzZWxmLl9zaWduOgorICAgICAgICAgICAgbiA9IC1uCisgICAgICAgIHJldHVybiBuLCBkCisKICAgICBkZWYgX19yZXByX18oc2VsZik6CiAgICAgICAgICIiIlJlcHJlc2VudHMgdGhlIG51bWJlciBhcyBhbiBpbnN0YW5jZSBvZiBEZWNpbWFsLiIiIgogICAgICAgICAjIEludmFyaWFudDogIGV2YWwocmVwcihkKSkgPT0gZApAQCAtNDA3NSw3ICs0MTI1LDcgQEAKICAgICAgICAgVGhpcyB3aWxsIG1ha2UgaXQgcm91bmQgdXAgZm9yIHRoYXQgb3BlcmF0aW9uLgogICAgICAgICAiIiIKICAgICAgICAgcm91bmRpbmcgPSBzZWxmLnJvdW5kaW5nCi0gICAgICAgIHNlbGYucm91bmRpbmc9IHR5cGUKKyAgICAgICAgc2VsZi5yb3VuZGluZyA9IHR5cGUKICAgICAgICAgcmV0dXJuIHJvdW5kaW5nCiAKICAgICBkZWYgY3JlYXRlX2RlY2ltYWwoc2VsZiwgbnVtPScwJyk6CkBAIC00MDg0LDEwICs0MTM0LDEwIEBACiAgICAgICAgIFRoaXMgbWV0aG9kIGltcGxlbWVudHMgdGhlIHRvLW51bWJlciBvcGVyYXRpb24gb2YgdGhlCiAgICAgICAgIElCTSBEZWNpbWFsIHNwZWNpZmljYXRpb24uIiIiCiAKLSAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIG51bSAhPSBudW0uc3RyaXAoKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShudW0sIHN0cikgYW5kIChudW0gIT0gbnVtLnN0cmlwKCkgb3IgJ18nIGluIG51bSk6CiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fcmFpc2VfZXJyb3IoQ29udmVyc2lvblN5bnRheCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm8gdHJhaWxpbmcgb3IgbGVhZGluZyB3aGl0ZXNwYWNlIGlzICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGVybWl0dGVkLiIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRyYWlsaW5nIG9yIGxlYWRpbmcgd2hpdGVzcGFjZSBhbmQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmRlcnNjb3JlcyBhcmUgbm90IHBlcm1pdHRlZC4iKQogCiAgICAgICAgIGQgPSBEZWNpbWFsKG51bSwgY29udGV4dD1zZWxmKQogICAgICAgICBpZiBkLl9pc25hbigpIGFuZCBsZW4oZC5faW50KSA+IHNlbGYucHJlYyAtIHNlbGYuY2xhbXA6CmRpZmYgLS1naXQgYS9MaWIvX3B5aW8ucHkgYi9MaWIvX3B5aW8ucHkKaW5kZXggMGQ5OGI3NC4uZDA5NDdmMCAxMDA2NDQKLS0tIGEvTGliL19weWlvLnB5CisrKyBiL0xpYi9fcHlpby5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCBhYmMKIGltcG9ydCBjb2RlY3MKIGltcG9ydCBlcnJubwotaW1wb3J0IGFycmF5CiBpbXBvcnQgc3RhdAogaW1wb3J0IHN5cwogIyBJbXBvcnQgX3RocmVhZCBpbnN0ZWFkIG9mIHRocmVhZGluZyB0byByZWR1Y2Ugc3RhcnR1cCBjb3N0CkBAIC0xNjEsNiArMTYwLDggQEAKICAgICBvcGVuZWQgaW4gYSB0ZXh0IG1vZGUsIGFuZCBmb3IgYnl0ZXMgYSBCeXRlc0lPIGNhbiBiZSB1c2VkIGxpa2UgYSBmaWxlCiAgICAgb3BlbmVkIGluIGEgYmluYXJ5IG1vZGUuCiAgICAgIiIiCisgICAgaWYgbm90IGlzaW5zdGFuY2UoZmlsZSwgaW50KToKKyAgICAgICAgZmlsZSA9IG9zLmZzcGF0aChmaWxlKQogICAgIGlmIG5vdCBpc2luc3RhbmNlKGZpbGUsIChzdHIsIGJ5dGVzLCBpbnQpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJpbnZhbGlkIGZpbGU6ICVyIiAlIGZpbGUpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UobW9kZSwgc3RyKToKQEAgLTE4Miw4ICsxODMsOCBAQAogICAgIHRleHQgPSAidCIgaW4gbW9kZXMKICAgICBiaW5hcnkgPSAiYiIgaW4gbW9kZXMKICAgICBpZiAiVSIgaW4gbW9kZXM6Ci0gICAgICAgIGlmIGNyZWF0aW5nIG9yIHdyaXRpbmcgb3IgYXBwZW5kaW5nOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2FuJ3QgdXNlIFUgYW5kIHdyaXRpbmcgbW9kZSBhdCBvbmNlIikKKyAgICAgICAgaWYgY3JlYXRpbmcgb3Igd3JpdGluZyBvciBhcHBlbmRpbmcgb3IgdXBkYXRpbmc6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJtb2RlIFUgY2Fubm90IGJlIGNvbWJpbmVkIHdpdGggJ3gnLCAndycsICdhJywgb3IgJysnIikKICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCiAgICAgICAgIHdhcm5pbmdzLndhcm4oIidVJyBtb2RlIGlzIGRlcHJlY2F0ZWQiLAogICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKQEAgLTE1MTYsNyArMTUxNyw3IEBACiAgICAgICAgIGlmIHNlbGYuX2ZkID49IDAgYW5kIHNlbGYuX2Nsb3NlZmQgYW5kIG5vdCBzZWxmLmNsb3NlZDoKICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwogICAgICAgICAgICAgd2FybmluZ3Mud2FybigndW5jbG9zZWQgZmlsZSAlcicgJSAoc2VsZiwpLCBSZXNvdXJjZVdhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2tsZXZlbD0yLCBzb3VyY2U9c2VsZikKICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9fZ2V0c3RhdGVfXyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9fc3RycHRpbWUucHkgYi9MaWIvX3N0cnB0aW1lLnB5CmluZGV4IGY4NDIyN2IuLmZlOTQzNjEgMTAwNjQ0Ci0tLSBhL0xpYi9fc3RycHRpbWUucHkKKysrIGIvTGliL19zdHJwdGltZS5weQpAQCAtMTk5LDEyICsxOTksMTUgQEAKICAgICAgICAgICAgICdmJzogciIoP1A8Zj5bMC05XXsxLDZ9KSIsCiAgICAgICAgICAgICAnSCc6IHIiKD9QPEg+MlswLTNdfFswLTFdXGR8XGQpIiwKICAgICAgICAgICAgICdJJzogciIoP1A8ST4xWzAtMl18MFsxLTldfFsxLTldKSIsCisgICAgICAgICAgICAnRyc6IHIiKD9QPEc+XGRcZFxkXGQpIiwKICAgICAgICAgICAgICdqJzogciIoP1A8aj4zNlswLTZdfDNbMC01XVxkfFsxLTJdXGRcZHwwWzEtOV1cZHwwMFsxLTldfFsxLTldXGR8MFsxLTldfFsxLTldKSIsCiAgICAgICAgICAgICAnbSc6IHIiKD9QPG0+MVswLTJdfDBbMS05XXxbMS05XSkiLAogICAgICAgICAgICAgJ00nOiByIig/UDxNPlswLTVdXGR8XGQpIiwKICAgICAgICAgICAgICdTJzogciIoP1A8Uz42WzAtMV18WzAtNV1cZHxcZCkiLAogICAgICAgICAgICAgJ1UnOiByIig/UDxVPjVbMC0zXXxbMC00XVxkfFxkKSIsCiAgICAgICAgICAgICAndyc6IHIiKD9QPHc+WzAtNl0pIiwKKyAgICAgICAgICAgICd1JzogciIoP1A8dT5bMS03XSkiLAorICAgICAgICAgICAgJ1YnOiByIig/UDxWPjVbMC0zXXwwWzEtOV18WzEtNF1cZHxcZCkiLAogICAgICAgICAgICAgIyBXIGlzIHNldCBiZWxvdyBieSB1c2luZyAnVScKICAgICAgICAgICAgICd5JzogciIoP1A8eT5cZFxkKSIsCiAgICAgICAgICAgICAjWFhYOiBEb2VzICdZJyBuZWVkIHRvIHdvcnJ5IGFib3V0IGhhdmluZyBsZXNzIG9yIG1vcmUgdGhhbgpAQCAtMjk5LDYgKzMwMiwyMiBAQAogICAgICAgICByZXR1cm4gMSArIGRheXNfdG9fd2VlayArIGRheV9vZl93ZWVrCiAKIAorZGVmIF9jYWxjX2p1bGlhbl9mcm9tX1YoaXNvX3llYXIsIGlzb193ZWVrLCBpc29fd2Vla2RheSk6CisgICAgIiIiQ2FsY3VsYXRlIHRoZSBKdWxpYW4gZGF5IGJhc2VkIG9uIHRoZSBJU08gODYwMSB5ZWFyLCB3ZWVrLCBhbmQgd2Vla2RheS4KKyAgICBJU08gd2Vla3Mgc3RhcnQgb24gTW9uZGF5cywgd2l0aCB3ZWVrIDAxIGJlaW5nIHRoZSB3ZWVrIGNvbnRhaW5pbmcgNCBKYW4uCisgICAgSVNPIHdlZWsgZGF5cyByYW5nZSBmcm9tIDEgKE1vbmRheSkgdG8gNyAoU3VuZGF5KS4KKyAgICAiIiIKKyAgICBjb3JyZWN0aW9uID0gZGF0ZXRpbWVfZGF0ZShpc29feWVhciwgMSwgNCkuaXNvd2Vla2RheSgpICsgMworICAgIG9yZGluYWwgPSAoaXNvX3dlZWsgKiA3KSArIGlzb193ZWVrZGF5IC0gY29ycmVjdGlvbgorICAgICMgb3JkaW5hbCBtYXkgYmUgbmVnYXRpdmUgb3IgMCBub3csIHdoaWNoIG1lYW5zIHRoZSBkYXRlIGlzIGluIHRoZSBwcmV2aW91cworICAgICMgY2FsZW5kYXIgeWVhcgorICAgIGlmIG9yZGluYWwgPCAxOgorICAgICAgICBvcmRpbmFsICs9IGRhdGV0aW1lX2RhdGUoaXNvX3llYXIsIDEsIDEpLnRvb3JkaW5hbCgpCisgICAgICAgIGlzb195ZWFyIC09IDEKKyAgICAgICAgb3JkaW5hbCAtPSBkYXRldGltZV9kYXRlKGlzb195ZWFyLCAxLCAxKS50b29yZGluYWwoKQorICAgIHJldHVybiBpc29feWVhciwgb3JkaW5hbAorCisKIGRlZiBfc3RycHRpbWUoZGF0YV9zdHJpbmcsIGZvcm1hdD0iJWEgJWIgJWQgJUg6JU06JVMgJVkiKToKICAgICAiIiJSZXR1cm4gYSAyLXR1cGxlIGNvbnNpc3Rpbmcgb2YgYSB0aW1lIHN0cnVjdCBhbmQgYW4gaW50IGNvbnRhaW5pbmcKICAgICB0aGUgbnVtYmVyIG9mIG1pY3Jvc2Vjb25kcyBiYXNlZCBvbiB0aGUgaW5wdXQgc3RyaW5nIGFuZCB0aGUKQEAgLTM0NSwxNSArMzY0LDE1IEBACiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInVuY29udmVydGVkIGRhdGEgcmVtYWluczogJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgZGF0YV9zdHJpbmdbZm91bmQuZW5kKCk6XSkKIAotICAgIHllYXIgPSBOb25lCisgICAgaXNvX3llYXIgPSB5ZWFyID0gTm9uZQogICAgIG1vbnRoID0gZGF5ID0gMQogICAgIGhvdXIgPSBtaW51dGUgPSBzZWNvbmQgPSBmcmFjdGlvbiA9IDAKICAgICB0eiA9IC0xCiAgICAgdHpvZmZzZXQgPSBOb25lCiAgICAgIyBEZWZhdWx0IHRvIC0xIHRvIHNpZ25pZnkgdGhhdCB2YWx1ZXMgbm90IGtub3duOyBub3QgY3JpdGljYWwgdG8gaGF2ZSwKICAgICAjIHRob3VnaAotICAgIHdlZWtfb2ZfeWVhciA9IC0xCi0gICAgd2Vla19vZl95ZWFyX3N0YXJ0ID0gLTEKKyAgICBpc29fd2VlayA9IHdlZWtfb2ZfeWVhciA9IE5vbmUKKyAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSBOb25lCiAgICAgIyB3ZWVrZGF5IGFuZCBqdWxpYW4gZGVmYXVsdGVkIHRvIE5vbmUgc28gYXMgdG8gc2lnbmFsIG5lZWQgdG8gY2FsY3VsYXRlCiAgICAgIyB2YWx1ZXMKICAgICB3ZWVrZGF5ID0ganVsaWFuID0gTm9uZQpAQCAtMzc1LDYgKzM5NCw4IEBACiAgICAgICAgICAgICAgICAgeWVhciArPSAxOTAwCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdZJzoKICAgICAgICAgICAgIHllYXIgPSBpbnQoZm91bmRfZGljdFsnWSddKQorICAgICAgICBlbGlmIGdyb3VwX2tleSA9PSAnRyc6CisgICAgICAgICAgICBpc29feWVhciA9IGludChmb3VuZF9kaWN0WydHJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdtJzoKICAgICAgICAgICAgIG1vbnRoID0gaW50KGZvdW5kX2RpY3RbJ20nXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ0InOgpAQCAtNDIwLDYgKzQ0MSw5IEBACiAgICAgICAgICAgICAgICAgd2Vla2RheSA9IDYKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgd2Vla2RheSAtPSAxCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICd1JzoKKyAgICAgICAgICAgIHdlZWtkYXkgPSBpbnQoZm91bmRfZGljdFsndSddKQorICAgICAgICAgICAgd2Vla2RheSAtPSAxCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdqJzoKICAgICAgICAgICAgIGp1bGlhbiA9IGludChmb3VuZF9kaWN0WydqJ10pCiAgICAgICAgIGVsaWYgZ3JvdXBfa2V5IGluICgnVScsICdXJyk6CkBAIC00MzAsNiArNDU0LDggQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgIyBXIHN0YXJ0cyB3ZWVrIG9uIE1vbmRheS4KICAgICAgICAgICAgICAgICB3ZWVrX29mX3llYXJfc3RhcnQgPSAwCisgICAgICAgIGVsaWYgZ3JvdXBfa2V5ID09ICdWJzoKKyAgICAgICAgICAgIGlzb193ZWVrID0gaW50KGZvdW5kX2RpY3RbJ1YnXSkKICAgICAgICAgZWxpZiBncm91cF9rZXkgPT0gJ3onOgogICAgICAgICAgICAgeiA9IGZvdW5kX2RpY3RbJ3onXQogICAgICAgICAgICAgdHpvZmZzZXQgPSBpbnQoelsxOjNdKSAqIDYwICsgaW50KHpbMzo1XSkKQEAgLTQ1MCwzMiArNDc2LDYxIEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB0eiA9IHZhbHVlCiAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICMgRGVhbCB3aXRoIHRoZSBjYXNlcyB3aGVyZSBhbWJpZ3VpdGllcyBhcml6ZQorICAgICMgZG9uJ3QgYXNzdW1lIGRlZmF1bHQgdmFsdWVzIGZvciBJU08gd2Vlay95ZWFyCisgICAgaWYgeWVhciBpcyBOb25lIGFuZCBpc29feWVhciBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgaXNvX3dlZWsgaXMgTm9uZSBvciB3ZWVrZGF5IGlzIE5vbmU6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJU08geWVhciBkaXJlY3RpdmUgJyVHJyBtdXN0IGJlIHVzZWQgd2l0aCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0aGUgSVNPIHdlZWsgZGlyZWN0aXZlICclVicgYW5kIGEgd2Vla2RheSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJkaXJlY3RpdmUgKCclQScsICclYScsICcldycsIG9yICcldScpLiIpCisgICAgICAgIGlmIGp1bGlhbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkRheSBvZiB0aGUgeWVhciBkaXJlY3RpdmUgJyVqJyBpcyBub3QgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY29tcGF0aWJsZSB3aXRoIElTTyB5ZWFyIGRpcmVjdGl2ZSAnJUcnLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVc2UgJyVZJyBpbnN0ZWFkLiIpCisgICAgZWxpZiB3ZWVrX29mX3llYXIgaXMgTm9uZSBhbmQgaXNvX3dlZWsgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIHdlZWtkYXkgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIG11c3QgYmUgdXNlZCB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSBJU08geWVhciBkaXJlY3RpdmUgJyVHJyBhbmQgYSB3ZWVrZGF5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRpcmVjdGl2ZSAoJyVBJywgJyVhJywgJyV3Jywgb3IgJyV1JykuIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIklTTyB3ZWVrIGRpcmVjdGl2ZSAnJVYnIGlzIGluY29tcGF0aWJsZSB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInRoZSB5ZWFyIGRpcmVjdGl2ZSAnJVknLiBVc2UgdGhlIElTTyB5ZWFyICclRycgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW5zdGVhZC4iKQorCiAgICAgbGVhcF95ZWFyX2ZpeCA9IEZhbHNlCiAgICAgaWYgeWVhciBpcyBOb25lIGFuZCBtb250aCA9PSAyIGFuZCBkYXkgPT0gMjk6CiAgICAgICAgIHllYXIgPSAxOTA0ICAjIDE5MDQgaXMgZmlyc3QgbGVhcCB5ZWFyIG9mIDIwdGggY2VudHVyeQogICAgICAgICBsZWFwX3llYXJfZml4ID0gVHJ1ZQogICAgIGVsaWYgeWVhciBpcyBOb25lOgogICAgICAgICB5ZWFyID0gMTkwMAorCisKICAgICAjIElmIHdlIGtub3cgdGhlIHdlZWsgb2YgdGhlIHllYXIgYW5kIHdoYXQgZGF5IG9mIHRoYXQgd2Vlaywgd2UgY2FuIGZpZ3VyZQogICAgICMgb3V0IHRoZSBKdWxpYW4gZGF5IG9mIHRoZSB5ZWFyLgotICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrX29mX3llYXIgIT0gLTEgYW5kIHdlZWtkYXkgaXMgbm90IE5vbmU6Ci0gICAgICAgIHdlZWtfc3RhcnRzX01vbiA9IFRydWUgaWYgd2Vla19vZl95ZWFyX3N0YXJ0ID09IDAgZWxzZSBGYWxzZQotICAgICAgICBqdWxpYW4gPSBfY2FsY19qdWxpYW5fZnJvbV9VX29yX1coeWVhciwgd2Vla19vZl95ZWFyLCB3ZWVrZGF5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCi0gICAgICAgIGlmIGp1bGlhbiA8PSAwOgorICAgIGlmIGp1bGlhbiBpcyBOb25lIGFuZCB3ZWVrZGF5IGlzIG5vdCBOb25lOgorICAgICAgICBpZiB3ZWVrX29mX3llYXIgaXMgbm90IE5vbmU6CisgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24gPSBUcnVlIGlmIHdlZWtfb2ZfeWVhcl9zdGFydCA9PSAwIGVsc2UgRmFsc2UKKyAgICAgICAgICAgIGp1bGlhbiA9IF9jYWxjX2p1bGlhbl9mcm9tX1Vfb3JfVyh5ZWFyLCB3ZWVrX29mX3llYXIsIHdlZWtkYXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3ZWVrX3N0YXJ0c19Nb24pCisgICAgICAgIGVsaWYgaXNvX3llYXIgaXMgbm90IE5vbmUgYW5kIGlzb193ZWVrIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgeWVhciwganVsaWFuID0gX2NhbGNfanVsaWFuX2Zyb21fVihpc29feWVhciwgaXNvX3dlZWssIHdlZWtkYXkgKyAxKQorICAgICAgICBpZiBqdWxpYW4gaXMgbm90IE5vbmUgYW5kIGp1bGlhbiA8PSAwOgogICAgICAgICAgICAgeWVhciAtPSAxCiAgICAgICAgICAgICB5ZGF5ID0gMzY2IGlmIGNhbGVuZGFyLmlzbGVhcCh5ZWFyKSBlbHNlIDM2NQogICAgICAgICAgICAganVsaWFuICs9IHlkYXkKLSAgICAjIENhbm5vdCBwcmUtY2FsY3VsYXRlIGRhdGV0aW1lX2RhdGUoKSBzaW5jZSBjYW4gY2hhbmdlIGluIEp1bGlhbgotICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YgdGhlIHdlZWsKLSAgICAjIGNhbGN1bGF0aW9uLgorCiAgICAgaWYganVsaWFuIGlzIE5vbmU6CisgICAgICAgICMgQ2Fubm90IHByZS1jYWxjdWxhdGUgZGF0ZXRpbWVfZGF0ZSgpIHNpbmNlIGNhbiBjaGFuZ2UgaW4gSnVsaWFuCisgICAgICAgICMgY2FsY3VsYXRpb24gYW5kIHRodXMgY291bGQgaGF2ZSBkaWZmZXJlbnQgdmFsdWUgZm9yIHRoZSBkYXkgb2YKKyAgICAgICAgIyB0aGUgd2VlayBjYWxjdWxhdGlvbi4KICAgICAgICAgIyBOZWVkIHRvIGFkZCAxIHRvIHJlc3VsdCBzaW5jZSBmaXJzdCBkYXkgb2YgdGhlIHllYXIgaXMgMSwgbm90IDAuCiAgICAgICAgIGp1bGlhbiA9IGRhdGV0aW1lX2RhdGUoeWVhciwgbW9udGgsIGRheSkudG9vcmRpbmFsKCkgLSBcCiAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpICsgMQotICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IGl0IHdpbGwKLSAgICAgICAgICAgIyBiZSBhY2N1cmF0ZS4KLSAgICAgICAgZGF0ZXRpbWVfcmVzdWx0ID0gZGF0ZXRpbWVfZGF0ZS5mcm9tb3JkaW5hbCgoanVsaWFuIC0gMSkgKyBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQorICAgIGVsc2U6ICAjIEFzc3VtZSB0aGF0IGlmIHRoZXkgYm90aGVyZWQgdG8gaW5jbHVkZSBKdWxpYW4gZGF5IChvciBpZiBpdCB3YXMKKyAgICAgICAgICAgIyBjYWxjdWxhdGVkIGFib3ZlIHdpdGggeWVhci93ZWVrL3dlZWtkYXkpIGl0IHdpbGwgYmUgYWNjdXJhdGUuCisgICAgICAgIGRhdGV0aW1lX3Jlc3VsdCA9IGRhdGV0aW1lX2RhdGUuZnJvbW9yZGluYWwoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGp1bGlhbiAtIDEpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRldGltZV9kYXRlKHllYXIsIDEsIDEpLnRvb3JkaW5hbCgpKQogICAgICAgICB5ZWFyID0gZGF0ZXRpbWVfcmVzdWx0LnllYXIKICAgICAgICAgbW9udGggPSBkYXRldGltZV9yZXN1bHQubW9udGgKICAgICAgICAgZGF5ID0gZGF0ZXRpbWVfcmVzdWx0LmRheQpkaWZmIC0tZ2l0IGEvTGliL2FpZmMucHkgYi9MaWIvYWlmYy5weQppbmRleCA3ZWJkYmViLi42OTJkMGJmIDEwMDY0NAotLS0gYS9MaWIvYWlmYy5weQorKysgYi9MaWIvYWlmYy5weQpAQCAtMjU3LDYgKzI1NywxNSBAQAogX2FpZmNfcGFyYW1zID0gbmFtZWR0dXBsZSgnX2FpZmNfcGFyYW1zJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25jaGFubmVscyBzYW1wd2lkdGggZnJhbWVyYXRlIG5mcmFtZXMgY29tcHR5cGUgY29tcG5hbWUnKQogCitfYWlmY19wYXJhbXMubmNoYW5uZWxzLl9fZG9jX18gPSAnTnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzICgxIGZvciBtb25vLCAyIGZvciBzdGVyZW8pJworX2FpZmNfcGFyYW1zLnNhbXB3aWR0aC5fX2RvY19fID0gJ1NhbXBsZSB3aWR0aCBpbiBieXRlcycKK19haWZjX3BhcmFtcy5mcmFtZXJhdGUuX19kb2NfXyA9ICdTYW1wbGluZyBmcmVxdWVuY3knCitfYWlmY19wYXJhbXMubmZyYW1lcy5fX2RvY19fID0gJ051bWJlciBvZiBhdWRpbyBmcmFtZXMnCitfYWlmY19wYXJhbXMuY29tcHR5cGUuX19kb2NfXyA9ICdDb21wcmVzc2lvbiB0eXBlICgiTk9ORSIgZm9yIEFJRkYgZmlsZXMpJworX2FpZmNfcGFyYW1zLmNvbXBuYW1lLl9fZG9jX18gPSAoIiIiXAorQSBodW1hbi1yZWFkYWJsZSB2ZXJzaW9uIG9mIHRoZSBjb21wcmVzc2lvbiB0eXBlCisoJ25vdCBjb21wcmVzc2VkJyBmb3IgQUlGRiBmaWxlcykiIiIpCisKIAogY2xhc3MgQWlmY19yZWFkOgogICAgICMgVmFyaWFibGVzIHVzZWQgaW4gdGhpcyBjbGFzczoKZGlmZiAtLWdpdCBhL0xpYi9hcmdwYXJzZS5weSBiL0xpYi9hcmdwYXJzZS5weQppbmRleCA5YTA2NzE5Li4yMDliNGU5IDEwMDY0NAotLS0gYS9MaWIvYXJncGFyc2UucHkKKysrIGIvTGliL2FyZ3BhcnNlLnB5CkBAIC0xMTgsMTAgKzExOCwxNiBAQAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKICAgICAgICAgdHlwZV9uYW1lID0gdHlwZShzZWxmKS5fX25hbWVfXwogICAgICAgICBhcmdfc3RyaW5ncyA9IFtdCisgICAgICAgIHN0YXJfYXJncyA9IHt9CiAgICAgICAgIGZvciBhcmcgaW4gc2VsZi5fZ2V0X2FyZ3MoKToKICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZChyZXByKGFyZykpCiAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBzZWxmLl9nZXRfa3dhcmdzKCk6Ci0gICAgICAgICAgICBhcmdfc3RyaW5ncy5hcHBlbmQoJyVzPSVyJyAlIChuYW1lLCB2YWx1ZSkpCisgICAgICAgICAgICBpZiBuYW1lLmlzaWRlbnRpZmllcigpOgorICAgICAgICAgICAgICAgIGFyZ19zdHJpbmdzLmFwcGVuZCgnJXM9JXInICUgKG5hbWUsIHZhbHVlKSkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc3Rhcl9hcmdzW25hbWVdID0gdmFsdWUKKyAgICAgICAgaWYgc3Rhcl9hcmdzOgorICAgICAgICAgICAgYXJnX3N0cmluZ3MuYXBwZW5kKCcqKiVzJyAlIHJlcHIoc3Rhcl9hcmdzKSkKICAgICAgICAgcmV0dXJuICclcyglcyknICUgKHR5cGVfbmFtZSwgJywgJy5qb2luKGFyZ19zdHJpbmdzKSkKIAogICAgIGRlZiBfZ2V0X2t3YXJncyhzZWxmKToKQEAgLTIwNCw4ICsyMTAsNiBAQAogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2luZGVudCgpCiAgICAgICAgICAgICBqb2luID0gc2VsZi5mb3JtYXR0ZXIuX2pvaW5fcGFydHMKLSAgICAgICAgICAgIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXM6Ci0gICAgICAgICAgICAgICAgZnVuYygqYXJncykKICAgICAgICAgICAgIGl0ZW1faGVscCA9IGpvaW4oW2Z1bmMoKmFyZ3MpIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuaXRlbXNdKQogICAgICAgICAgICAgaWYgc2VsZi5wYXJlbnQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgc2VsZi5mb3JtYXR0ZXIuX2RlZGVudCgpCmRpZmYgLS1naXQgYS9MaWIvYXN0LnB5IGIvTGliL2FzdC5weQppbmRleCAwMTcwNDcyLi4xNTZhMWYyIDEwMDY0NAotLS0gYS9MaWIvYXN0LnB5CisrKyBiL0xpYi9hc3QucHkKQEAgLTM1LDYgKzM1LDggQEAKICAgICByZXR1cm4gY29tcGlsZShzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBQeUNGX09OTFlfQVNUKQogCiAKK19OVU1fVFlQRVMgPSAoaW50LCBmbG9hdCwgY29tcGxleCkKKwogZGVmIGxpdGVyYWxfZXZhbChub2RlX29yX3N0cmluZyk6CiAgICAgIiIiCiAgICAgU2FmZWx5IGV2YWx1YXRlIGFuIGV4cHJlc3Npb24gbm9kZSBvciBhIHN0cmluZyBjb250YWluaW5nIGEgUHl0aG9uCkBAIC00Nyw3ICs0OSw5IEBACiAgICAgaWYgaXNpbnN0YW5jZShub2RlX29yX3N0cmluZywgRXhwcmVzc2lvbik6CiAgICAgICAgIG5vZGVfb3Jfc3RyaW5nID0gbm9kZV9vcl9zdHJpbmcuYm9keQogICAgIGRlZiBfY29udmVydChub2RlKToKLSAgICAgICAgaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KToKKyAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCAoU3RyLCBCeXRlcykpOgogICAgICAgICAgICAgcmV0dXJuIG5vZGUucwogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTnVtKToKICAgICAgICAgICAgIHJldHVybiBub2RlLm4KQEAgLTYyLDI0ICs2NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW4gemlwKG5vZGUua2V5cywgbm9kZS52YWx1ZXMpKQogICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgTmFtZUNvbnN0YW50KToKICAgICAgICAgICAgIHJldHVybiBub2RlLnZhbHVlCi0gICAgICAgIGVsaWYgaXNpbnN0YW5jZShub2RlLCBVbmFyeU9wKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5vcGVyYW5kLCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgVW5hcnlPcCkgYW5kIGlzaW5zdGFuY2Uobm9kZS5vcCwgKFVBZGQsIFVTdWIpKToKICAgICAgICAgICAgIG9wZXJhbmQgPSBfY29udmVydChub2RlLm9wZXJhbmQpCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgotICAgICAgICAgICAgICAgIHJldHVybiArIG9wZXJhbmQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAotICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBcCi0gICAgICAgICAgICAgaXNpbnN0YW5jZShub2RlLm9wLCAoQWRkLCBTdWIpKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5yaWdodCwgKE51bSwgVW5hcnlPcCwgQmluT3ApKSBhbmQgXAotICAgICAgICAgICAgIGlzaW5zdGFuY2Uobm9kZS5sZWZ0LCAoTnVtLCBVbmFyeU9wLCBCaW5PcCkpOgorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvcGVyYW5kLCBfTlVNX1RZUEVTKToKKyAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG5vZGUub3AsIFVBZGQpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gKyBvcGVyYW5kCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0gb3BlcmFuZAorICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobm9kZSwgQmluT3ApIGFuZCBpc2luc3RhbmNlKG5vZGUub3AsIChBZGQsIFN1YikpOgogICAgICAgICAgICAgbGVmdCA9IF9jb252ZXJ0KG5vZGUubGVmdCkKICAgICAgICAgICAgIHJpZ2h0ID0gX2NvbnZlcnQobm9kZS5yaWdodCkKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKLSAgICAgICAgICAgICAgICByZXR1cm4gbGVmdCArIHJpZ2h0Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobGVmdCwgX05VTV9UWVBFUykgYW5kIGlzaW5zdGFuY2UocmlnaHQsIF9OVU1fVFlQRVMpOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uobm9kZS5vcCwgQWRkKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxlZnQgKyByaWdodAorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBsZWZ0IC0gcmlnaHQKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nOiAnICsgcmVwcihub2RlKSkKICAgICByZXR1cm4gX2NvbnZlcnQobm9kZV9vcl9zdHJpbmcpCiAKQEAgLTE5NiwxMiArMTk3LDE5IEBACiAgICAgIiIiCiAgICAgaWYgbm90IGlzaW5zdGFuY2Uobm9kZSwgKEFzeW5jRnVuY3Rpb25EZWYsIEZ1bmN0aW9uRGVmLCBDbGFzc0RlZiwgTW9kdWxlKSk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXIgY2FuJ3QgaGF2ZSBkb2NzdHJpbmdzIiAlIG5vZGUuX19jbGFzc19fLl9fbmFtZV9fKQotICAgIGlmIG5vZGUuYm9keSBhbmQgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0sIEV4cHIpIGFuZCBcCi0gICAgICAgaXNpbnN0YW5jZShub2RlLmJvZHlbMF0udmFsdWUsIFN0cik6Ci0gICAgICAgIGlmIGNsZWFuOgotICAgICAgICAgICAgaW1wb3J0IGluc3BlY3QKLSAgICAgICAgICAgIHJldHVybiBpbnNwZWN0LmNsZWFuZG9jKG5vZGUuYm9keVswXS52YWx1ZS5zKQotICAgICAgICByZXR1cm4gbm9kZS5ib2R5WzBdLnZhbHVlLnMKKyAgICBpZiBub3Qobm9kZS5ib2R5IGFuZCBpc2luc3RhbmNlKG5vZGUuYm9keVswXSwgRXhwcikpOgorICAgICAgICByZXR1cm4KKyAgICBub2RlID0gbm9kZS5ib2R5WzBdLnZhbHVlCisgICAgaWYgaXNpbnN0YW5jZShub2RlLCBTdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS5zCisgICAgZWxpZiBpc2luc3RhbmNlKG5vZGUsIENvbnN0YW50KSBhbmQgaXNpbnN0YW5jZShub2RlLnZhbHVlLCBzdHIpOgorICAgICAgICB0ZXh0ID0gbm9kZS52YWx1ZQorICAgIGVsc2U6CisgICAgICAgIHJldHVybgorICAgIGlmIGNsZWFuOgorICAgICAgICBpbXBvcnQgaW5zcGVjdAorICAgICAgICB0ZXh0ID0gaW5zcGVjdC5jbGVhbmRvYyh0ZXh0KQorICAgIHJldHVybiB0ZXh0CiAKIAogZGVmIHdhbGsobm9kZSk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNoYXQucHkgYi9MaWIvYXN5bmNoYXQucHkKaW5kZXggZjcyOGQxYi4uZmMxMTQ2YSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaGF0LnB5CisrKyBiL0xpYi9hc3luY2hhdC5weQpAQCAtMjg1LDM1ICsyODUsNiBAQAogICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKLWNsYXNzIGZpZm86Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGxpc3Q9Tm9uZSk6Ci0gICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICB3YXJuaW5ncy53YXJuKCdmaWZvIGNsYXNzIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy42JywKLSAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgaWYgbm90IGxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZSgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLmxpc3QgPSBkZXF1ZShsaXN0KQotCi0gICAgZGVmIF9fbGVuX18oc2VsZik6Ci0gICAgICAgIHJldHVybiBsZW4oc2VsZi5saXN0KQotCi0gICAgZGVmIGlzX2VtcHR5KHNlbGYpOgotICAgICAgICByZXR1cm4gbm90IHNlbGYubGlzdAotCi0gICAgZGVmIGZpcnN0KHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi5saXN0WzBdCi0KLSAgICBkZWYgcHVzaChzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5saXN0LmFwcGVuZChkYXRhKQotCi0gICAgZGVmIHBvcChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5saXN0OgotICAgICAgICAgICAgcmV0dXJuICgxLCBzZWxmLmxpc3QucG9wbGVmdCgpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICgwLCBOb25lKQotCi0KICMgR2l2ZW4gJ2hheXN0YWNrJywgc2VlIGlmIGFueSBwcmVmaXggb2YgJ25lZWRsZScgaXMgYXQgaXRzIGVuZC4gIFRoaXMKICMgYXNzdW1lcyBhbiBleGFjdCBtYXRjaCBoYXMgYWxyZWFkeSBiZWVuIGNoZWNrZWQuICBSZXR1cm4gdGhlIG51bWJlciBvZgogIyBjaGFyYWN0ZXJzIG1hdGNoZWQuCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9iYXNlX2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CmluZGV4IDY0OGI5YjkuLjViNWZjZGUgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Jhc2VfZXZlbnRzLnB5CkBAIC00ODgsNyArNDg4LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5pc19jbG9zZWQoKToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCBldmVudCBsb29wICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX3J1bm5pbmcoKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weSBiL0xpYi9hc3luY2lvL2Jhc2Vfc3VicHJvY2Vzcy5weQppbmRleCAyMzc0MmExLi5hMDBkOWQ1IDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9iYXNlX3N1YnByb2Nlc3MucHkKKysrIGIvTGliL2FzeW5jaW8vYmFzZV9zdWJwcm9jZXNzLnB5CkBAIC0xMjcsNyArMTI3LDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBub3Qgc2VsZi5fY2xvc2VkOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIGdldF9waWQoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5IGIvTGliL2FzeW5jaW8vZnV0dXJlcy5weQppbmRleCBiY2Q0ZDE2Li44N2FlMzBhIDEwMDY0NAotLS0gYS9MaWIvYXN5bmNpby9mdXR1cmVzLnB5CisrKyBiL0xpYi9hc3luY2lvL2Z1dHVyZXMucHkKQEAgLTEyMCw2ICsxMjAsNDYgQEAKICAgICByZXR1cm4gZ2V0YXR0cihvYmosICdfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmcnLCBOb25lKSBpcyBub3QgTm9uZQogCiAKK2RlZiBfZm9ybWF0X2NhbGxiYWNrcyhjYik6CisgICAgIiIiaGVscGVyIGZ1bmN0aW9uIGZvciBGdXR1cmUuX19yZXByX18iIiIKKyAgICBzaXplID0gbGVuKGNiKQorICAgIGlmIG5vdCBzaXplOgorICAgICAgICBjYiA9ICcnCisKKyAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKKyAgICAgICAgcmV0dXJuIGV2ZW50cy5fZm9ybWF0X2NhbGxiYWNrX3NvdXJjZShjYWxsYmFjaywgKCkpCisKKyAgICBpZiBzaXplID09IDE6CisgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQorICAgIGVsaWYgc2l6ZSA9PSAyOgorICAgICAgICBjYiA9ICd7fSwge30nLmZvcm1hdChmb3JtYXRfY2IoY2JbMF0pLCBmb3JtYXRfY2IoY2JbMV0pKQorICAgIGVsaWYgc2l6ZSA+IDI6CisgICAgICAgIGNiID0gJ3t9LCA8e30gbW9yZT4sIHt9Jy5mb3JtYXQoZm9ybWF0X2NiKGNiWzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplLTIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCisgICAgcmV0dXJuICdjYj1bJXNdJyAlIGNiCisKKworZGVmIF9mdXR1cmVfcmVwcl9pbmZvKGZ1dHVyZSk6CisgICAgIyAoRnV0dXJlKSAtPiBzdHIKKyAgICAiIiJoZWxwZXIgZnVuY3Rpb24gZm9yIEZ1dHVyZS5fX3JlcHJfXyIiIgorICAgIGluZm8gPSBbZnV0dXJlLl9zdGF0ZS5sb3dlcigpXQorICAgIGlmIGZ1dHVyZS5fc3RhdGUgPT0gX0ZJTklTSEVEOgorICAgICAgICBpZiBmdXR1cmUuX2V4Y2VwdGlvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KGZ1dHVyZS5fZXhjZXB0aW9uKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5CisgICAgICAgICAgICAjIGZvciB2ZXJ5IGxvbmcgc3RyaW5ncworICAgICAgICAgICAgcmVzdWx0ID0gcmVwcmxpYi5yZXByKGZ1dHVyZS5fcmVzdWx0KQorICAgICAgICAgICAgaW5mby5hcHBlbmQoJ3Jlc3VsdD17fScuZm9ybWF0KHJlc3VsdCkpCisgICAgaWYgZnV0dXJlLl9jYWxsYmFja3M6CisgICAgICAgIGluZm8uYXBwZW5kKF9mb3JtYXRfY2FsbGJhY2tzKGZ1dHVyZS5fY2FsbGJhY2tzKSkKKyAgICBpZiBmdXR1cmUuX3NvdXJjZV90cmFjZWJhY2s6CisgICAgICAgIGZyYW1lID0gZnV0dXJlLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQorICAgICAgICBpbmZvLmFwcGVuZCgnY3JlYXRlZCBhdCAlczolcycgJSAoZnJhbWVbMF0sIGZyYW1lWzFdKSkKKyAgICByZXR1cm4gaW5mbworCisKIGNsYXNzIEZ1dHVyZToKICAgICAiIiJUaGlzIGNsYXNzIGlzICphbG1vc3QqIGNvbXBhdGlibGUgd2l0aCBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLgogCkBAIC0xNzIsNDUgKzIxMiwxMCBAQAogICAgICAgICBpZiBzZWxmLl9sb29wLmdldF9kZWJ1ZygpOgogICAgICAgICAgICAgc2VsZi5fc291cmNlX3RyYWNlYmFjayA9IHRyYWNlYmFjay5leHRyYWN0X3N0YWNrKHN5cy5fZ2V0ZnJhbWUoMSkpCiAKLSAgICBkZWYgX19mb3JtYXRfY2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBjYiA9IHNlbGYuX2NhbGxiYWNrcwotICAgICAgICBzaXplID0gbGVuKGNiKQotICAgICAgICBpZiBub3Qgc2l6ZToKLSAgICAgICAgICAgIGNiID0gJycKLQotICAgICAgICBkZWYgZm9ybWF0X2NiKGNhbGxiYWNrKToKLSAgICAgICAgICAgIHJldHVybiBldmVudHMuX2Zvcm1hdF9jYWxsYmFja19zb3VyY2UoY2FsbGJhY2ssICgpKQotCi0gICAgICAgIGlmIHNpemUgPT0gMToKLSAgICAgICAgICAgIGNiID0gZm9ybWF0X2NiKGNiWzBdKQotICAgICAgICBlbGlmIHNpemUgPT0gMjoKLSAgICAgICAgICAgIGNiID0gJ3t9LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksIGZvcm1hdF9jYihjYlsxXSkpCi0gICAgICAgIGVsaWYgc2l6ZSA+IDI6Ci0gICAgICAgICAgICBjYiA9ICd7fSwgPHt9IG1vcmU+LCB7fScuZm9ybWF0KGZvcm1hdF9jYihjYlswXSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemUtMiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2NiKGNiWy0xXSkpCi0gICAgICAgIHJldHVybiAnY2I9WyVzXScgJSBjYgotCi0gICAgZGVmIF9yZXByX2luZm8oc2VsZik6Ci0gICAgICAgIGluZm8gPSBbc2VsZi5fc3RhdGUubG93ZXIoKV0KLSAgICAgICAgaWYgc2VsZi5fc3RhdGUgPT0gX0ZJTklTSEVEOgotICAgICAgICAgICAgaWYgc2VsZi5fZXhjZXB0aW9uIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdleGNlcHRpb249eyFyfScuZm9ybWF0KHNlbGYuX2V4Y2VwdGlvbikpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICMgdXNlIHJlcHJsaWIgdG8gbGltaXQgdGhlIGxlbmd0aCBvZiB0aGUgb3V0cHV0LCBlc3BlY2lhbGx5Ci0gICAgICAgICAgICAgICAgIyBmb3IgdmVyeSBsb25nIHN0cmluZ3MKLSAgICAgICAgICAgICAgICByZXN1bHQgPSByZXBybGliLnJlcHIoc2VsZi5fcmVzdWx0KQotICAgICAgICAgICAgICAgIGluZm8uYXBwZW5kKCdyZXN1bHQ9e30nLmZvcm1hdChyZXN1bHQpKQotICAgICAgICBpZiBzZWxmLl9jYWxsYmFja3M6Ci0gICAgICAgICAgICBpbmZvLmFwcGVuZChzZWxmLl9fZm9ybWF0X2NhbGxiYWNrcygpKQotICAgICAgICBpZiBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrOgotICAgICAgICAgICAgZnJhbWUgPSBzZWxmLl9zb3VyY2VfdHJhY2ViYWNrWy0xXQotICAgICAgICAgICAgaW5mby5hcHBlbmQoJ2NyZWF0ZWQgYXQgJXM6JXMnICUgKGZyYW1lWzBdLCBmcmFtZVsxXSkpCi0gICAgICAgIHJldHVybiBpbmZvCisgICAgX3JlcHJfaW5mbyA9IF9mdXR1cmVfcmVwcl9pbmZvCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6Ci0gICAgICAgIGluZm8gPSBzZWxmLl9yZXByX2luZm8oKQotICAgICAgICByZXR1cm4gJzwlcyAlcz4nICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCAnICcuam9pbihpbmZvKSkKKyAgICAgICAgcmV0dXJuICc8JXMgJXM+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgJyAnLmpvaW4oc2VsZi5fcmVwcl9pbmZvKCkpKQogCiAgICAgIyBPbiBQeXRob24gMy4zIGFuZCBvbGRlciwgb2JqZWN0cyB3aXRoIGEgZGVzdHJ1Y3RvciBwYXJ0IG9mIGEgcmVmZXJlbmNlCiAgICAgIyBjeWNsZSBhcmUgbmV2ZXIgZGVzdHJveWVkLiBJdCdzIG5vdCBtb3JlIHRoZSBjYXNlIG9uIFB5dGhvbiAzLjQgdGhhbmtzCkBAIC00MjYsNiArNDMxLDIxIEBACiAgICAgICAgICAgICBkZXN0LnNldF9yZXN1bHQocmVzdWx0KQogCiAKK3RyeToKKyAgICBpbXBvcnQgX2FzeW5jaW8KK2V4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICBwYXNzCitlbHNlOgorICAgIF9hc3luY2lvLl9pbml0X21vZHVsZSgKKyAgICAgICAgdHJhY2ViYWNrLmV4dHJhY3Rfc3RhY2ssCisgICAgICAgIGV2ZW50cy5nZXRfZXZlbnRfbG9vcCwKKyAgICAgICAgX2Z1dHVyZV9yZXByX2luZm8sCisgICAgICAgIEludmFsaWRTdGF0ZUVycm9yLAorICAgICAgICBDYW5jZWxsZWRFcnJvcikKKworICAgIEZ1dHVyZSA9IF9hc3luY2lvLkZ1dHVyZQorCisKIGRlZiBfY2hhaW5fZnV0dXJlKHNvdXJjZSwgZGVzdGluYXRpb24pOgogICAgICIiIkNoYWluIHR3byBmdXR1cmVzIHNvIHRoYXQgd2hlbiBvbmUgY29tcGxldGVzLCBzbyBkb2VzIHRoZSBvdGhlci4KIApkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5IGIvTGliL2FzeW5jaW8vcHJvYWN0b3JfZXZlbnRzLnB5CmluZGV4IGZlZjMyMDUuLmZmMTI4NzcgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Byb2FjdG9yX2V2ZW50cy5weQorKysgYi9MaWIvYXN5bmNpby9wcm9hY3Rvcl9ldmVudHMucHkKQEAgLTkyLDcgKzkyLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9zb2NrIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkgYi9MaWIvYXN5bmNpby9zZWxlY3Rvcl9ldmVudHMucHkKaW5kZXggMTJkMzU3Yi4uOWRiZTU1MCAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc2VsZWN0b3JfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3NlbGVjdG9yX2V2ZW50cy5weQpAQCAtNjI3LDcgKzYyNyw4IEBACiAgICAgaWYgY29tcGF0LlBZMzQ6CiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5fc29jayBpcyBub3QgTm9uZToKLSAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2U9c2VsZikKICAgICAgICAgICAgICAgICBzZWxmLl9zb2NrLmNsb3NlKCkKIAogICAgIGRlZiBfZmF0YWxfZXJyb3Ioc2VsZiwgZXhjLCBtZXNzYWdlPSdGYXRhbCBlcnJvciBvbiB0cmFuc3BvcnQnKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3NzbHByb3RvLnB5IGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKaW5kZXggODA0YzVjMy4uOTkxYzc3YiAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKKysrIGIvTGliL2FzeW5jaW8vc3NscHJvdG8ucHkKQEAgLTMzMSw3ICszMzEsOCBAQAogICAgIGlmIGNvbXBhdC5QWTM0OgogICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLl9jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZykKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCB0cmFuc3BvcnQgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgcGF1c2VfcmVhZGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkgYi9MaWIvYXN5bmNpby90ZXN0X3V0aWxzLnB5CmluZGV4IDMwN2ZmZmMuLmZkZDNiYTAgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3Rlc3RfdXRpbHMucHkKKysrIGIvTGliL2FzeW5jaW8vdGVzdF91dGlscy5weQpAQCAtMTE5LDEwICsxMTksMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QnLCAndGVzdF9hc3luY2lvJykKICAgICAgICAga2V5ZmlsZSA9IG9zLnBhdGguam9pbihoZXJlLCAnc3NsX2tleS5wZW0nKQogICAgICAgICBjZXJ0ZmlsZSA9IG9zLnBhdGguam9pbihoZXJlLCAnc3NsX2NlcnQucGVtJykKLSAgICAgICAgc3NvY2sgPSBzc2wud3JhcF9zb2NrZXQocmVxdWVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5ZmlsZT1rZXlmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1jZXJ0ZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9VHJ1ZSkKKyAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisKKyAgICAgICAgc3NvY2sgPSBjb250ZXh0LndyYXBfc29ja2V0KHJlcXVlc3QsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuUmVxdWVzdEhhbmRsZXJDbGFzcyhzc29jaywgY2xpZW50X2FkZHJlc3MsIHNlbGYpCiAgICAgICAgICAgICBzc29jay5jbG9zZSgpCmRpZmYgLS1naXQgYS9MaWIvYXN5bmNpby91bml4X2V2ZW50cy5weSBiL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CmluZGV4IDY1YjYxZGIuLjI4NDM2NzggMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CisrKyBiL0xpYi9hc3luY2lvL3VuaXhfZXZlbnRzLnB5CkBAIC00MTEsNyArNDExLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3BpcGUuY2xvc2UoKQogCiAgICAgZGVmIF9mYXRhbF9lcnJvcihzZWxmLCBleGMsIG1lc3NhZ2U9J0ZhdGFsIGVycm9yIG9uIHBpcGUgdHJhbnNwb3J0Jyk6CkBAIC02MTEsNyArNjEyLDggQEAKICAgICBpZiBjb21wYXQuUFkzNDoKICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICBpZiBzZWxmLl9waXBlIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIHRyYW5zcG9ydCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigidW5jbG9zZWQgdHJhbnNwb3J0ICVyIiAlIHNlbGYsIFJlc291cmNlV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgICAgIHNlbGYuX3BpcGUuY2xvc2UoKQogCiAgICAgZGVmIGFib3J0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weSBiL0xpYi9hc3luY2lvL3dpbmRvd3NfdXRpbHMucHkKaW5kZXggODcwY2QxMy4uN2M2M2ZiOSAxMDA2NDQKLS0tIGEvTGliL2FzeW5jaW8vd2luZG93c191dGlscy5weQorKysgYi9MaWIvYXN5bmNpby93aW5kb3dzX3V0aWxzLnB5CkBAIC0xNTksNyArMTU5LDggQEAKIAogICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICBpZiBzZWxmLl9oYW5kbGUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcpCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJ1bmNsb3NlZCAlciIgJSBzZWxmLCBSZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZT1zZWxmKQogICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAKICAgICBkZWYgX19lbnRlcl9fKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL2FzeW5jb3JlLnB5IGIvTGliL2FzeW5jb3JlLnB5CmluZGV4IDNiNTFmMGYuLjcwNWU0MDYgMTAwNjQ0Ci0tLSBhL0xpYi9hc3luY29yZS5weQorKysgYi9MaWIvYXN5bmNvcmUucHkKQEAgLTMzMyw3ICszMzMsNyBAQAogICAgICAgICBzZWxmLmNvbm5lY3RpbmcgPSBUcnVlCiAgICAgICAgIGVyciA9IHNlbGYuc29ja2V0LmNvbm5lY3RfZXgoYWRkcmVzcykKICAgICAgICAgaWYgZXJyIGluIChFSU5QUk9HUkVTUywgRUFMUkVBRFksIEVXT1VMREJMT0NLKSBcCi0gICAgICAgIG9yIGVyciA9PSBFSU5WQUwgYW5kIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorICAgICAgICBvciBlcnIgPT0gRUlOVkFMIGFuZCBvcy5uYW1lID09ICdudCc6CiAgICAgICAgICAgICBzZWxmLmFkZHIgPSBhZGRyZXNzCiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaWYgZXJyIGluICgwLCBFSVNDT05OKToKQEAgLTU5NSw3ICs1OTUsOCBAQAogCiAgICAgICAgIGRlZiBfX2RlbF9fKHNlbGYpOgogICAgICAgICAgICAgaWYgc2VsZi5mZCA+PSAwOgotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nKQorICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oInVuY2xvc2VkIGZpbGUgJXIiICUgc2VsZiwgUmVzb3VyY2VXYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlPXNlbGYpCiAgICAgICAgICAgICBzZWxmLmNsb3NlKCkKIAogICAgICAgICBkZWYgcmVjdihzZWxmLCAqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvYmFzZTY0LnB5IGIvTGliL2Jhc2U2NC5weQppbmRleCBhZGFlYzFkLi41OGY2YWQ2IDEwMDc1NQotLS0gYS9MaWIvYmFzZTY0LnB5CisrKyBiL0xpYi9iYXNlNjQucHkKQEAgLTU1LDggKzU1LDcgQEAKICAgICBhbHRlcm5hdGl2ZSBhbHBoYWJldCBmb3IgdGhlICcrJyBhbmQgJy8nIGNoYXJhY3RlcnMuICBUaGlzIGFsbG93cyBhbgogICAgIGFwcGxpY2F0aW9uIHRvIGUuZy4gZ2VuZXJhdGUgdXJsIG9yIGZpbGVzeXN0ZW0gc2FmZSBCYXNlNjQgc3RyaW5ncy4KICAgICAiIiIKLSAgICAjIFN0cmlwIG9mZiB0aGUgdHJhaWxpbmcgbmV3bGluZQotICAgIGVuY29kZWQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHMpWzotMV0KKyAgICBlbmNvZGVkID0gYmluYXNjaWkuYjJhX2Jhc2U2NChzLCBuZXdsaW5lPUZhbHNlKQogICAgIGlmIGFsdGNoYXJzIGlzIG5vdCBOb25lOgogICAgICAgICBhc3NlcnQgbGVuKGFsdGNoYXJzKSA9PSAyLCByZXByKGFsdGNoYXJzKQogICAgICAgICByZXR1cm4gZW5jb2RlZC50cmFuc2xhdGUoYnl0ZXMubWFrZXRyYW5zKGInKy8nLCBhbHRjaGFycykpCkBAIC0xNTYsNyArMTU1LDcgQEAKICAgICBsZWZ0b3ZlciA9IGxlbihzKSAlIDUKICAgICAjIFBhZCB0aGUgbGFzdCBxdWFudHVtIHdpdGggemVybyBiaXRzIGlmIG5lY2Vzc2FyeQogICAgIGlmIGxlZnRvdmVyOgotICAgICAgICBzID0gcyArIGJ5dGVzKDUgLSBsZWZ0b3ZlcikgICMgRG9uJ3QgdXNlICs9ICEKKyAgICAgICAgcyA9IHMgKyBiJ1wwJyAqICg1IC0gbGVmdG92ZXIpICAjIERvbid0IHVzZSArPSAhCiAgICAgZW5jb2RlZCA9IGJ5dGVhcnJheSgpCiAgICAgZnJvbV9ieXRlcyA9IGludC5mcm9tX2J5dGVzCiAgICAgYjMydGFiMiA9IF9iMzJ0YWIyCmRpZmYgLS1naXQgYS9MaWIvYnoyLnB5IGIvTGliL2J6Mi5weQppbmRleCBiYzc4YzU0Li42ZjU2MzI4IDEwMDY0NAotLS0gYS9MaWIvYnoyLnB5CisrKyBiL0xpYi9iejIucHkKQEAgLTExLDYgKzExLDcgQEAKIAogZnJvbSBidWlsdGlucyBpbXBvcnQgb3BlbiBhcyBfYnVpbHRpbl9vcGVuCiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHdhcm5pbmdzCiBpbXBvcnQgX2NvbXByZXNzaW9uCiAKQEAgLTQyLDkgKzQzLDkgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmlsZW5hbWUsIG1vZGU9InIiLCBidWZmZXJpbmc9Tm9uZSwgY29tcHJlc3NsZXZlbD05KToKICAgICAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZS4KIAotICAgICAgICBJZiBmaWxlbmFtZSBpcyBhIHN0ciBvciBieXRlcyBvYmplY3QsIGl0IGdpdmVzIHRoZSBuYW1lCi0gICAgICAgIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlIG9iamVjdCwKLSAgICAgICAgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KKyAgICAgICAgSWYgZmlsZW5hbWUgaXMgYSBzdHIsIGJ5dGVzLCBvciBQYXRoTGlrZSBvYmplY3QsIGl0IGdpdmVzIHRoZQorICAgICAgICBuYW1lIG9mIHRoZSBmaWxlIHRvIGJlIG9wZW5lZC4gT3RoZXJ3aXNlLCBpdCBzaG91bGQgYmUgYSBmaWxlCisgICAgICAgIG9iamVjdCwgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIHJlYWQgb3Igd3JpdGUgdGhlIGNvbXByZXNzZWQgZGF0YS4KIAogICAgICAgICBtb2RlIGNhbiBiZSAncicgZm9yIHJlYWRpbmcgKGRlZmF1bHQpLCAndycgZm9yIChvdmVyKXdyaXRpbmcsCiAgICAgICAgICd4JyBmb3IgY3JlYXRpbmcgZXhjbHVzaXZlbHksIG9yICdhJyBmb3IgYXBwZW5kaW5nLiBUaGVzZSBjYW4KQEAgLTkxLDcgKzkyLDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkludmFsaWQgbW9kZTogJXIiICUgKG1vZGUsKSkKIAotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgIHNlbGYuX2ZwID0gX2J1aWx0aW5fb3BlbihmaWxlbmFtZSwgbW9kZSkKICAgICAgICAgICAgIHNlbGYuX2Nsb3NlZnAgPSBUcnVlCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCkBAIC05OSw3ICsxMDAsNyBAQAogICAgICAgICAgICAgc2VsZi5fZnAgPSBmaWxlbmFtZQogICAgICAgICAgICAgc2VsZi5fbW9kZSA9IG1vZGVfY29kZQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyIG9yIGJ5dGVzIG9iamVjdCwgb3IgYSBmaWxlIikKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZmlsZW5hbWUgbXVzdCBiZSBhIHN0ciwgYnl0ZXMsIGZpbGUgb3IgUGF0aExpa2Ugb2JqZWN0IikKIAogICAgICAgICBpZiBzZWxmLl9tb2RlID09IF9NT0RFX1JFQUQ6CiAgICAgICAgICAgICByYXcgPSBfY29tcHJlc3Npb24uRGVjb21wcmVzc1JlYWRlcihzZWxmLl9mcCwKQEAgLTI4OSw4ICsyOTAsOSBAQAogICAgICAgICAgZW5jb2Rpbmc9Tm9uZSwgZXJyb3JzPU5vbmUsIG5ld2xpbmU9Tm9uZSk6CiAgICAgIiIiT3BlbiBhIGJ6aXAyLWNvbXByZXNzZWQgZmlsZSBpbiBiaW5hcnkgb3IgdGV4dCBtb2RlLgogCi0gICAgVGhlIGZpbGVuYW1lIGFyZ3VtZW50IGNhbiBiZSBhbiBhY3R1YWwgZmlsZW5hbWUgKGEgc3RyIG9yIGJ5dGVzCi0gICAgb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgorICAgIFRoZSBmaWxlbmFtZSBhcmd1bWVudCBjYW4gYmUgYW4gYWN0dWFsIGZpbGVuYW1lIChhIHN0ciwgYnl0ZXMsIG9yCisgICAgUGF0aExpa2Ugb2JqZWN0KSwgb3IgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlCisgICAgdG8uCiAKICAgICBUaGUgbW9kZSBhcmd1bWVudCBjYW4gYmUgInIiLCAicmIiLCAidyIsICJ3YiIsICJ4IiwgInhiIiwgImEiIG9yCiAgICAgImFiIiBmb3IgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIsICJ4dCIgb3IgImF0IiBmb3IgdGV4dCBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL2NhbGVuZGFyLnB5IGIvTGliL2NhbGVuZGFyLnB5CmluZGV4IGI1NDcyZjMuLjkyMTQ5YjcgMTAwNjQ0Ci0tLSBhL0xpYi9jYWxlbmRhci5weQorKysgYi9MaWIvY2FsZW5kYXIucHkKQEAgLTEzLDcgKzEzLDkgQEAKIF9fYWxsX18gPSBbIklsbGVnYWxNb250aEVycm9yIiwgIklsbGVnYWxXZWVrZGF5RXJyb3IiLCAic2V0Zmlyc3R3ZWVrZGF5IiwKICAgICAgICAgICAgImZpcnN0d2Vla2RheSIsICJpc2xlYXAiLCAibGVhcGRheXMiLCAid2Vla2RheSIsICJtb250aHJhbmdlIiwKICAgICAgICAgICAgIm1vbnRoY2FsZW5kYXIiLCAicHJtb250aCIsICJtb250aCIsICJwcmNhbCIsICJjYWxlbmRhciIsCi0gICAgICAgICAgICJ0aW1lZ20iLCAibW9udGhfbmFtZSIsICJtb250aF9hYmJyIiwgImRheV9uYW1lIiwgImRheV9hYmJyIl0KKyAgICAgICAgICAgInRpbWVnbSIsICJtb250aF9uYW1lIiwgIm1vbnRoX2FiYnIiLCAiZGF5X25hbWUiLCAiZGF5X2FiYnIiLAorICAgICAgICAgICAiQ2FsZW5kYXIiLCAiVGV4dENhbGVuZGFyIiwgIkhUTUxDYWxlbmRhciIsICJMb2NhbGVUZXh0Q2FsZW5kYXIiLAorICAgICAgICAgICAiTG9jYWxlSFRNTENhbGVuZGFyIiwgIndlZWtoZWFkZXIiXQogCiAjIEV4Y2VwdGlvbiByYWlzZWQgZm9yIGJhZCBpbnB1dCAod2l0aCBzdHJpbmcgcGFyYW1ldGVyIGZvciBkZXRhaWxzKQogZXJyb3IgPSBWYWx1ZUVycm9yCkBAIC02MDQsNTEgKzYwNiw2MyBAQAogCiAKIGRlZiBtYWluKGFyZ3MpOgotICAgIGltcG9ydCBvcHRwYXJzZQotICAgIHBhcnNlciA9IG9wdHBhcnNlLk9wdGlvblBhcnNlcih1c2FnZT0idXNhZ2U6ICVwcm9nIFtvcHRpb25zXSBbeWVhciBbbW9udGhdXSIpCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaW1wb3J0IGFyZ3BhcnNlCisgICAgcGFyc2VyID0gYXJncGFyc2UuQXJndW1lbnRQYXJzZXIoKQorICAgIHRleHRncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ3RleHQgb25seSBhcmd1bWVudHMnKQorICAgIGh0bWxncm91cCA9IHBhcnNlci5hZGRfYXJndW1lbnRfZ3JvdXAoJ2h0bWwgb25seSBhcmd1bWVudHMnKQorICAgIHRleHRncm91cC5hZGRfYXJndW1lbnQoCiAgICAgICAgICItdyIsICItLXdpZHRoIiwKLSAgICAgICAgZGVzdD0id2lkdGgiLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTIsCi0gICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIsIHRleHQgb25seSkiCisgICAgICAgIHR5cGU9aW50LCBkZWZhdWx0PTIsCisgICAgICAgIGhlbHA9IndpZHRoIG9mIGRhdGUgY29sdW1uIChkZWZhdWx0IDIpIgogICAgICkKLSAgICBwYXJzZXIuYWRkX29wdGlvbigKKyAgICB0ZXh0Z3JvdXAuYWRkX2FyZ3VtZW50KAogICAgICAgICAiLWwiLCAiLS1saW5lcyIsCi0gICAgICAgIGRlc3Q9ImxpbmVzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0xLAotICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0xLAorICAgICAgICBoZWxwPSJudW1iZXIgb2YgbGluZXMgZm9yIGVhY2ggd2VlayAoZGVmYXVsdCAxKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1zIiwgIi0tc3BhY2luZyIsCi0gICAgICAgIGRlc3Q9InNwYWNpbmciLCB0eXBlPSJpbnQiLCBkZWZhdWx0PTYsCi0gICAgICAgIGhlbHA9InNwYWNpbmcgYmV0d2VlbiBtb250aHMgKGRlZmF1bHQgNiwgdGV4dCBvbmx5KSIKKyAgICAgICAgdHlwZT1pbnQsIGRlZmF1bHQ9NiwKKyAgICAgICAgaGVscD0ic3BhY2luZyBiZXR3ZWVuIG1vbnRocyAoZGVmYXVsdCA2KSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgdGV4dGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1tIiwgIi0tbW9udGhzIiwKLSAgICAgICAgZGVzdD0ibW9udGhzIiwgdHlwZT0iaW50IiwgZGVmYXVsdD0zLAotICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzLCB0ZXh0IG9ubHkpIgorICAgICAgICB0eXBlPWludCwgZGVmYXVsdD0zLAorICAgICAgICBoZWxwPSJtb250aHMgcGVyIHJvdyAoZGVmYXVsdCAzKSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgaHRtbGdyb3VwLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1jIiwgIi0tY3NzIiwKLSAgICAgICAgZGVzdD0iY3NzIiwgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKLSAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSAoaHRtbCBvbmx5KSIKKyAgICAgICAgZGVmYXVsdD0iY2FsZW5kYXIuY3NzIiwKKyAgICAgICAgaGVscD0iQ1NTIHRvIHVzZSBmb3IgcGFnZSIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi1MIiwgIi0tbG9jYWxlIiwKLSAgICAgICAgZGVzdD0ibG9jYWxlIiwgZGVmYXVsdD1Ob25lLAorICAgICAgICBkZWZhdWx0PU5vbmUsCiAgICAgICAgIGhlbHA9ImxvY2FsZSB0byBiZSB1c2VkIGZyb20gbW9udGggYW5kIHdlZWtkYXkgbmFtZXMiCiAgICAgKQotICAgIHBhcnNlci5hZGRfb3B0aW9uKAorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCiAgICAgICAgICItZSIsICItLWVuY29kaW5nIiwKLSAgICAgICAgZGVzdD0iZW5jb2RpbmciLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgIGhlbHA9IkVuY29kaW5nIHRvIHVzZSBmb3Igb3V0cHV0LiIKKyAgICAgICAgZGVmYXVsdD1Ob25lLAorICAgICAgICBoZWxwPSJlbmNvZGluZyB0byB1c2UgZm9yIG91dHB1dCIKICAgICApCi0gICAgcGFyc2VyLmFkZF9vcHRpb24oCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgKICAgICAgICAgIi10IiwgIi0tdHlwZSIsCi0gICAgICAgIGRlc3Q9InR5cGUiLCBkZWZhdWx0PSJ0ZXh0IiwKKyAgICAgICAgZGVmYXVsdD0idGV4dCIsCiAgICAgICAgIGNob2ljZXM9KCJ0ZXh0IiwgImh0bWwiKSwKICAgICAgICAgaGVscD0ib3V0cHV0IHR5cGUgKHRleHQgb3IgaHRtbCkiCiAgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJ5ZWFyIiwKKyAgICAgICAgbmFyZ3M9Jz8nLCB0eXBlPWludCwKKyAgICAgICAgaGVscD0ieWVhciBudW1iZXIgKDEtOTk5OSkiCisgICAgKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoCisgICAgICAgICJtb250aCIsCisgICAgICAgIG5hcmdzPSc/JywgdHlwZT1pbnQsCisgICAgICAgIGhlbHA9Im1vbnRoIG51bWJlciAoMS0xMiwgdGV4dCBvbmx5KSIKKyAgICApCiAKLSAgICAob3B0aW9ucywgYXJncykgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzKQorICAgIG9wdGlvbnMgPSBwYXJzZXIucGFyc2VfYXJncyhhcmdzWzE6XSkKIAogICAgIGlmIG9wdGlvbnMubG9jYWxlIGFuZCBub3Qgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgcGFyc2VyLmVycm9yKCJpZiAtLWxvY2FsZSBpcyBzcGVjaWZpZWQgLS1lbmNvZGluZyBpcyByZXF1aXJlZCIpCkBAIC02NjYsMTAgKzY4MCwxMCBAQAogICAgICAgICAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZGVmYXVsdGVuY29kaW5nKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3QoZW5jb2Rpbmc9ZW5jb2RpbmcsIGNzcz1vcHRpb25zLmNzcykKICAgICAgICAgd3JpdGUgPSBzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZQotICAgICAgICBpZiBsZW4oYXJncykgPT0gMToKKyAgICAgICAgaWYgb3B0aW9ucy55ZWFyIGlzIE5vbmU6CiAgICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoZGF0ZXRpbWUuZGF0ZS50b2RheSgpLnllYXIsICoqb3B0ZGljdCkpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICB3cml0ZShjYWwuZm9ybWF0eWVhcnBhZ2UoaW50KGFyZ3NbMV0pLCAqKm9wdGRpY3QpKQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHdyaXRlKGNhbC5mb3JtYXR5ZWFycGFnZShvcHRpb25zLnllYXIsICoqb3B0ZGljdCkpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBwYXJzZXIuZXJyb3IoImluY29ycmVjdCBudW1iZXIgb2YgYXJndW1lbnRzIikKICAgICAgICAgICAgIHN5cy5leGl0KDEpCkBAIC02NzksMTggKzY5MywxNSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgY2FsID0gVGV4dENhbGVuZGFyKCkKICAgICAgICAgb3B0ZGljdCA9IGRpY3Qodz1vcHRpb25zLndpZHRoLCBsPW9wdGlvbnMubGluZXMpCi0gICAgICAgIGlmIGxlbihhcmdzKSAhPSAzOgorICAgICAgICBpZiBvcHRpb25zLm1vbnRoIGlzIE5vbmU6CiAgICAgICAgICAgICBvcHRkaWN0WyJjIl0gPSBvcHRpb25zLnNwYWNpbmcKICAgICAgICAgICAgIG9wdGRpY3RbIm0iXSA9IG9wdGlvbnMubW9udGhzCi0gICAgICAgIGlmIGxlbihhcmdzKSA9PSAxOgorICAgICAgICBpZiBvcHRpb25zLnllYXIgaXMgTm9uZToKICAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKGRhdGV0aW1lLmRhdGUudG9kYXkoKS55ZWFyLCAqKm9wdGRpY3QpCi0gICAgICAgIGVsaWYgbGVuKGFyZ3MpID09IDI6Ci0gICAgICAgICAgICByZXN1bHQgPSBjYWwuZm9ybWF0eWVhcihpbnQoYXJnc1sxXSksICoqb3B0ZGljdCkKLSAgICAgICAgZWxpZiBsZW4oYXJncykgPT0gMzoKLSAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXRtb250aChpbnQoYXJnc1sxXSksIGludChhcmdzWzJdKSwgKipvcHRkaWN0KQorICAgICAgICBlbGlmIG9wdGlvbnMubW9udGggaXMgTm9uZToKKyAgICAgICAgICAgIHJlc3VsdCA9IGNhbC5mb3JtYXR5ZWFyKG9wdGlvbnMueWVhciwgKipvcHRkaWN0KQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcGFyc2VyLmVycm9yKCJpbmNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cyIpCi0gICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgcmVzdWx0ID0gY2FsLmZvcm1hdG1vbnRoKG9wdGlvbnMueWVhciwgb3B0aW9ucy5tb250aCwgKipvcHRkaWN0KQogICAgICAgICB3cml0ZSA9IHN5cy5zdGRvdXQud3JpdGUKICAgICAgICAgaWYgb3B0aW9ucy5lbmNvZGluZzoKICAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdC5lbmNvZGUob3B0aW9ucy5lbmNvZGluZykKZGlmZiAtLWdpdCBhL0xpYi9jZ2kucHkgYi9MaWIvY2dpLnB5CmluZGV4IDE4OWM2ZDUuLjIzM2E0OTYgMTAwNzU1Ci0tLSBhL0xpYi9jZ2kucHkKKysrIGIvTGliL2NnaS5weQpAQCAtNDUsNyArNDUsNyBAQAogCiBfX2FsbF9fID0gWyJNaW5pRmllbGRTdG9yYWdlIiwgIkZpZWxkU3RvcmFnZSIsCiAgICAgICAgICAgICJwYXJzZSIsICJwYXJzZV9xcyIsICJwYXJzZV9xc2wiLCAicGFyc2VfbXVsdGlwYXJ0IiwKLSAgICAgICAgICAgInBhcnNlX2hlYWRlciIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCisgICAgICAgICAgICJwYXJzZV9oZWFkZXIiLCAidGVzdCIsICJwcmludF9leGNlcHRpb24iLCAicHJpbnRfZW52aXJvbiIsCiAgICAgICAgICAgICJwcmludF9mb3JtIiwgInByaW50X2RpcmVjdG9yeSIsICJwcmludF9hcmd1bWVudHMiLAogICAgICAgICAgICAicHJpbnRfZW52aXJvbl91c2FnZSIsICJlc2NhcGUiXQogCmRpZmYgLS1naXQgYS9MaWIvY29kZS5weSBiL0xpYi9jb2RlLnB5CmluZGV4IDUzMjQ0ZTMuLjIzMjk1ZjQgMTAwNjQ0Ci0tLSBhL0xpYi9jb2RlLnB5CisrKyBiL0xpYi9jb2RlLnB5CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICAgICAgIiIiUmVzZXQgdGhlIGlucHV0IGJ1ZmZlci4iIiIKICAgICAgICAgc2VsZi5idWZmZXIgPSBbXQogCi0gICAgZGVmIGludGVyYWN0KHNlbGYsIGJhbm5lcj1Ob25lKToKKyAgICBkZWYgaW50ZXJhY3Qoc2VsZiwgYmFubmVyPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgICAgICIiIkNsb3NlbHkgZW11bGF0ZSB0aGUgaW50ZXJhY3RpdmUgUHl0aG9uIGNvbnNvbGUuCiAKICAgICAgICAgVGhlIG9wdGlvbmFsIGJhbm5lciBhcmd1bWVudCBzcGVjaWZpZXMgdGhlIGJhbm5lciB0byBwcmludApAQCAtMTk2LDYgKzE5NiwxMSBAQAogICAgICAgICB0byBjb25mdXNlIHRoaXMgd2l0aCB0aGUgcmVhbCBpbnRlcnByZXRlciAtLSBzaW5jZSBpdCdzIHNvCiAgICAgICAgIGNsb3NlISkuCiAKKyAgICAgICAgVGhlIG9wdGlvbmFsIGV4aXRtc2cgYXJndW1lbnQgc3BlY2lmaWVzIHRoZSBleGl0IG1lc3NhZ2UKKyAgICAgICAgcHJpbnRlZCB3aGVuIGV4aXRpbmcuIFBhc3MgdGhlIGVtcHR5IHN0cmluZyB0byBzdXBwcmVzcworICAgICAgICBwcmludGluZyBhbiBleGl0IG1lc3NhZ2UuIElmIGV4aXRtc2cgaXMgbm90IGdpdmVuIG9yIE5vbmUsCisgICAgICAgIGEgZGVmYXVsdCBtZXNzYWdlIGlzIHByaW50ZWQuCisKICAgICAgICAgIiIiCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHN5cy5wczEKQEAgLTIzMCw2ICsyMzUsMTAgQEAKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKCJcbktleWJvYXJkSW50ZXJydXB0XG4iKQogICAgICAgICAgICAgICAgIHNlbGYucmVzZXRidWZmZXIoKQogICAgICAgICAgICAgICAgIG1vcmUgPSAwCisgICAgICAgIGlmIGV4aXRtc2cgaXMgTm9uZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJ25vdyBleGl0aW5nICVzLi4uXG4nICUgc2VsZi5fX2NsYXNzX18uX19uYW1lX18pCisgICAgICAgIGVsaWYgZXhpdG1zZyAhPSAnJzoKKyAgICAgICAgICAgIHNlbGYud3JpdGUoJyVzXG4nICUgZXhpdG1zZykKIAogICAgIGRlZiBwdXNoKHNlbGYsIGxpbmUpOgogICAgICAgICAiIiJQdXNoIGEgbGluZSB0byB0aGUgaW50ZXJwcmV0ZXIuCkBAIC0yNjcsNyArMjc2LDcgQEAKIAogCiAKLWRlZiBpbnRlcmFjdChiYW5uZXI9Tm9uZSwgcmVhZGZ1bmM9Tm9uZSwgbG9jYWw9Tm9uZSk6CitkZWYgaW50ZXJhY3QoYmFubmVyPU5vbmUsIHJlYWRmdW5jPU5vbmUsIGxvY2FsPU5vbmUsIGV4aXRtc2c9Tm9uZSk6CiAgICAgIiIiQ2xvc2VseSBlbXVsYXRlIHRoZSBpbnRlcmFjdGl2ZSBQeXRob24gaW50ZXJwcmV0ZXIuCiAKICAgICBUaGlzIGlzIGEgYmFja3dhcmRzIGNvbXBhdGlibGUgaW50ZXJmYWNlIHRvIHRoZSBJbnRlcmFjdGl2ZUNvbnNvbGUKQEAgLTI3OSw2ICsyODgsNyBAQAogICAgIGJhbm5lciAtLSBwYXNzZWQgdG8gSW50ZXJhY3RpdmVDb25zb2xlLmludGVyYWN0KCkKICAgICByZWFkZnVuYyAtLSBpZiBub3QgTm9uZSwgcmVwbGFjZXMgSW50ZXJhY3RpdmVDb25zb2xlLnJhd19pbnB1dCgpCiAgICAgbG9jYWwgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIuX19pbml0X18oKQorICAgIGV4aXRtc2cgLS0gcGFzc2VkIHRvIEludGVyYWN0aXZlQ29uc29sZS5pbnRlcmFjdCgpCiAKICAgICAiIiIKICAgICBjb25zb2xlID0gSW50ZXJhY3RpdmVDb25zb2xlKGxvY2FsKQpAQCAtMjg5LDcgKzI5OSw3IEBACiAgICAgICAgICAgICBpbXBvcnQgcmVhZGxpbmUKICAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICAgICAgcGFzcwotICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyKQorICAgIGNvbnNvbGUuaW50ZXJhY3QoYmFubmVyLCBleGl0bXNnKQogCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkgYi9MaWIvY29sbGVjdGlvbnMvX19pbml0X18ucHkKaW5kZXggZWJlOGVlNy4uYmNjNDI5MSAxMDA2NDQKLS0tIGEvTGliL2NvbGxlY3Rpb25zL19faW5pdF9fLnB5CisrKyBiL0xpYi9jb2xsZWN0aW9ucy9fX2luaXRfXy5weQpAQCAtMzUzLDcgKzM1Myw3IEBACiAgICAge25hbWV9ID0gX3Byb3BlcnR5KF9pdGVtZ2V0dGVyKHtpbmRleDpkfSksIGRvYz0nQWxpYXMgZm9yIGZpZWxkIG51bWJlciB7aW5kZXg6ZH0nKQogJycnCiAKLWRlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlKToKK2RlZiBuYW1lZHR1cGxlKHR5cGVuYW1lLCBmaWVsZF9uYW1lcywgKiwgdmVyYm9zZT1GYWxzZSwgcmVuYW1lPUZhbHNlLCBtb2R1bGU9Tm9uZSk6CiAgICAgIiIiUmV0dXJucyBhIG5ldyBzdWJjbGFzcyBvZiB0dXBsZSB3aXRoIG5hbWVkIGZpZWxkcy4KIAogICAgID4+PiBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgWyd4JywgJ3knXSkKQEAgLTM5Myw3ICszOTMsNyBAQAogICAgICAgICAgICAgICAgIGZpZWxkX25hbWVzW2luZGV4XSA9ICdfJWQnICUgaW5kZXgKICAgICAgICAgICAgIHNlZW4uYWRkKG5hbWUpCiAgICAgZm9yIG5hbWUgaW4gW3R5cGVuYW1lXSArIGZpZWxkX25hbWVzOgotICAgICAgICBpZiB0eXBlKG5hbWUpICE9IHN0cjoKKyAgICAgICAgaWYgdHlwZShuYW1lKSBpcyBub3Qgc3RyOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdUeXBlIG5hbWVzIGFuZCBmaWVsZCBuYW1lcyBtdXN0IGJlIHN0cmluZ3MnKQogICAgICAgICBpZiBub3QgbmFtZS5pc2lkZW50aWZpZXIoKToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1R5cGUgbmFtZXMgYW5kIGZpZWxkIG5hbWVzIG11c3QgYmUgdmFsaWQgJwpAQCAtNDM0LDExICs0MzQsMTUgQEAKICAgICAjIEZvciBwaWNrbGluZyB0byB3b3JrLCB0aGUgX19tb2R1bGVfXyB2YXJpYWJsZSBuZWVkcyB0byBiZSBzZXQgdG8gdGhlIGZyYW1lCiAgICAgIyB3aGVyZSB0aGUgbmFtZWQgdHVwbGUgaXMgY3JlYXRlZC4gIEJ5cGFzcyB0aGlzIHN0ZXAgaW4gZW52aXJvbm1lbnRzIHdoZXJlCiAgICAgIyBzeXMuX2dldGZyYW1lIGlzIG5vdCBkZWZpbmVkIChKeXRob24gZm9yIGV4YW1wbGUpIG9yIHN5cy5fZ2V0ZnJhbWUgaXMgbm90Ci0gICAgIyBkZWZpbmVkIGZvciBhcmd1bWVudHMgZ3JlYXRlciB0aGFuIDAgKElyb25QeXRob24pLgotICAgIHRyeToKLSAgICAgICAgcmVzdWx0Ll9fbW9kdWxlX18gPSBfc3lzLl9nZXRmcmFtZSgxKS5mX2dsb2JhbHMuZ2V0KCdfX25hbWVfXycsICdfX21haW5fXycpCi0gICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6Ci0gICAgICAgIHBhc3MKKyAgICAjIGRlZmluZWQgZm9yIGFyZ3VtZW50cyBncmVhdGVyIHRoYW4gMCAoSXJvblB5dGhvbiksIG9yIHdoZXJlIHRoZSB1c2VyIGhhcworICAgICMgc3BlY2lmaWVkIGEgcGFydGljdWxhciBtb2R1bGUuCisgICAgaWYgbW9kdWxlIGlzIE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1vZHVsZSA9IF9zeXMuX2dldGZyYW1lKDEpLmZfZ2xvYmFscy5nZXQoJ19fbmFtZV9fJywgJ19fbWFpbl9fJykKKyAgICAgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvcik6CisgICAgICAgICAgICBwYXNzCisgICAgaWYgbW9kdWxlIGlzIG5vdCBOb25lOgorICAgICAgICByZXN1bHQuX19tb2R1bGVfXyA9IG1vZHVsZQogCiAgICAgcmV0dXJuIHJlc3VsdAogCkBAIC04NDIsNyArODQ2LDcgQEAKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMjIyAgQ2hhaW5NYXAgKGhlbHBlciBmb3IgY29uZmlncGFyc2VyIGFuZCBzdHJpbmcuVGVtcGxhdGUpCisjIyMgIENoYWluTWFwCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogY2xhc3MgQ2hhaW5NYXAoTXV0YWJsZU1hcHBpbmcpOgpAQCAtOTY5LDcgKzk3Myw3IEBACiAgICAgICAgICAgICBkaWN0ID0ga3dhcmdzLnBvcCgnZGljdCcpCiAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIlBhc3NpbmcgJ2RpY3QnIGFzIGtleXdvcmQgYXJndW1lbnQgaXMgZGVwcmVjYXRlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBkaWN0ID0gTm9uZQogICAgICAgICBzZWxmLmRhdGEgPSB7fQpkaWZmIC0tZ2l0IGEvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5IGIvTGliL2NvbGxlY3Rpb25zL19fbWFpbl9fLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjNlMzhlLi4wMDAwMDAwCi0tLSBhL0xpYi9jb2xsZWN0aW9ucy9fX21haW5fXy5weQorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIyMgU2ltcGxlIHRlc3RzCi0jIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIHZlcmlmeSB0aGF0IGluc3RhbmNlcyBjYW4gYmUgcGlja2xlZAotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQotZnJvbSBwaWNrbGUgaW1wb3J0IGxvYWRzLCBkdW1wcwotUG9pbnQgPSBuYW1lZHR1cGxlKCdQb2ludCcsICd4LCB5JywgVHJ1ZSkKLXAgPSBQb2ludCh4PTEwLCB5PTIwKQotYXNzZXJ0IHAgPT0gbG9hZHMoZHVtcHMocCkpCi0KLSMgdGVzdCBhbmQgZGVtb25zdHJhdGUgYWJpbGl0eSB0byBvdmVycmlkZSBtZXRob2RzCi1jbGFzcyBQb2ludChuYW1lZHR1cGxlKCdQb2ludCcsICd4IHknKSk6Ci0gICAgX19zbG90c19fID0gKCkKLSAgICBAcHJvcGVydHkKLSAgICBkZWYgaHlwb3Qoc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi54ICoqIDIgKyBzZWxmLnkgKiogMikgKiogMC41Ci0gICAgZGVmIF9fc3RyX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAnUG9pbnQ6IHg9JTYuM2YgIHk9JTYuM2YgIGh5cG90PSU2LjNmJyAlIChzZWxmLngsIHNlbGYueSwgc2VsZi5oeXBvdCkKLQotZm9yIHAgaW4gUG9pbnQoMywgNCksIFBvaW50KDE0LCA1LzcuKToKLSAgICBwcmludCAocCkKLQotY2xhc3MgUG9pbnQobmFtZWR0dXBsZSgnUG9pbnQnLCAneCB5JykpOgotICAgICdQb2ludCBjbGFzcyB3aXRoIG9wdGltaXplZCBfbWFrZSgpIGFuZCBfcmVwbGFjZSgpIHdpdGhvdXQgZXJyb3ItY2hlY2tpbmcnCi0gICAgX19zbG90c19fID0gKCkKLSAgICBfbWFrZSA9IGNsYXNzbWV0aG9kKHR1cGxlLl9fbmV3X18pCi0gICAgZGVmIF9yZXBsYWNlKHNlbGYsIF9tYXA9bWFwLCAqKmt3ZHMpOgotICAgICAgICByZXR1cm4gc2VsZi5fbWFrZShfbWFwKGt3ZHMuZ2V0LCAoJ3gnLCAneScpLCBzZWxmKSkKLQotcHJpbnQoUG9pbnQoMTEsIDIyKS5fcmVwbGFjZSh4PTEwMCkpCi0KLVBvaW50M0QgPSBuYW1lZHR1cGxlKCdQb2ludDNEJywgUG9pbnQuX2ZpZWxkcyArICgneicsKSkKLXByaW50KFBvaW50M0QuX19kb2NfXykKLQotaW1wb3J0IGRvY3Rlc3QsIGNvbGxlY3Rpb25zCi1UZXN0UmVzdWx0cyA9IG5hbWVkdHVwbGUoJ1Rlc3RSZXN1bHRzJywgJ2ZhaWxlZCBhdHRlbXB0ZWQnKQotcHJpbnQoVGVzdFJlc3VsdHMoKmRvY3Rlc3QudGVzdG1vZChjb2xsZWN0aW9ucykpKQpkaWZmIC0tZ2l0IGEvTGliL2NvbXBpbGVhbGwucHkgYi9MaWIvY29tcGlsZWFsbC5weQppbmRleCAwY2MwYzFkLi4zZTQ1Nzg1IDEwMDY0NAotLS0gYS9MaWIvY29tcGlsZWFsbC5weQorKysgYi9MaWIvY29tcGlsZWFsbC5weQpAQCAtMjUsNiArMjUsOCBAQAogX19hbGxfXyA9IFsiY29tcGlsZV9kaXIiLCJjb21waWxlX2ZpbGUiLCJjb21waWxlX3BhdGgiXQogCiBkZWYgX3dhbGtfZGlyKGRpciwgZGRpcj1Ob25lLCBtYXhsZXZlbHM9MTAsIHF1aWV0PTApOgorICAgIGlmIHF1aWV0IDwgMiBhbmQgaXNpbnN0YW5jZShkaXIsIG9zLlBhdGhMaWtlKToKKyAgICAgICAgZGlyID0gb3MuZnNwYXRoKGRpcikKICAgICBpZiBub3QgcXVpZXQ6CiAgICAgICAgIHByaW50KCdMaXN0aW5nIHshcn0uLi4nLmZvcm1hdChkaXIpKQogICAgIHRyeToKQEAgLTY4LDcgKzcwLDcgQEAKICAgICAiIiIKICAgICBmaWxlcyA9IF93YWxrX2RpcihkaXIsIHF1aWV0PXF1aWV0LCBtYXhsZXZlbHM9bWF4bGV2ZWxzLAogICAgICAgICAgICAgICAgICAgICAgIGRkaXI9ZGRpcikKLSAgICBzdWNjZXNzID0gMQorICAgIHN1Y2Nlc3MgPSBUcnVlCiAgICAgaWYgd29ya2VycyBpcyBub3QgTm9uZSBhbmQgd29ya2VycyAhPSAxIGFuZCBQcm9jZXNzUG9vbEV4ZWN1dG9yIGlzIG5vdCBOb25lOgogICAgICAgICBpZiB3b3JrZXJzIDwgMDoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ3dvcmtlcnMgbXVzdCBiZSBncmVhdGVyIG9yIGVxdWFsIHRvIDAnKQpAQCAtODEsMTIgKzgzLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5PWxlZ2FjeSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6ZT1vcHRpbWl6ZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVzKQotICAgICAgICAgICAgc3VjY2VzcyA9IG1pbihyZXN1bHRzLCBkZWZhdWx0PTEpCisgICAgICAgICAgICBzdWNjZXNzID0gbWluKHJlc3VsdHMsIGRlZmF1bHQ9VHJ1ZSkKICAgICBlbHNlOgogICAgICAgICBmb3IgZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGlmIG5vdCBjb21waWxlX2ZpbGUoZmlsZSwgZGRpciwgZm9yY2UsIHJ4LCBxdWlldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVnYWN5LCBvcHRpbWl6ZSk6Ci0gICAgICAgICAgICAgICAgc3VjY2VzcyA9IDAKKyAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9maWxlKGZ1bGxuYW1lLCBkZGlyPU5vbmUsIGZvcmNlPUZhbHNlLCByeD1Ob25lLCBxdWlldD0wLApAQCAtMTA0LDcgKzEwNiw5IEBACiAgICAgbGVnYWN5OiAgICBpZiBUcnVlLCBwcm9kdWNlIGxlZ2FjeSBweWMgcGF0aHMgaW5zdGVhZCBvZiBQRVAgMzE0NyBwYXRocwogICAgIG9wdGltaXplOiAgb3B0aW1pemF0aW9uIGxldmVsIG9yIC0xIGZvciBsZXZlbCBvZiB0aGUgaW50ZXJwcmV0ZXIKICAgICAiIiIKLSAgICBzdWNjZXNzID0gMQorICAgIHN1Y2Nlc3MgPSBUcnVlCisgICAgaWYgcXVpZXQgPCAyIGFuZCBpc2luc3RhbmNlKGZ1bGxuYW1lLCBvcy5QYXRoTGlrZSk6CisgICAgICAgIGZ1bGxuYW1lID0gb3MuZnNwYXRoKGZ1bGxuYW1lKQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZ1bGxuYW1lKQogICAgIGlmIGRkaXIgaXMgbm90IE5vbmU6CiAgICAgICAgIGRmaWxlID0gb3MucGF0aC5qb2luKGRkaXIsIG5hbWUpCkBAIC0xNDQsNyArMTQ4LDcgQEAKICAgICAgICAgICAgICAgICBvayA9IHB5X2NvbXBpbGUuY29tcGlsZShmdWxsbmFtZSwgY2ZpbGUsIGRmaWxlLCBUcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGltaXplPW9wdGltaXplKQogICAgICAgICAgICAgZXhjZXB0IHB5X2NvbXBpbGUuUHlDb21waWxlRXJyb3IgYXMgZXJyOgotICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSAwCisgICAgICAgICAgICAgICAgc3VjY2VzcyA9IEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgcXVpZXQgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHN1Y2Nlc3MKICAgICAgICAgICAgICAgICBlbGlmIHF1aWV0OgpAQCAtMTU3LDcgKzE2MSw3IEBACiAgICAgICAgICAgICAgICAgbXNnID0gbXNnLmRlY29kZShzeXMuc3Rkb3V0LmVuY29kaW5nKQogICAgICAgICAgICAgICAgIHByaW50KG1zZykKICAgICAgICAgICAgIGV4Y2VwdCAoU3ludGF4RXJyb3IsIFVuaWNvZGVFcnJvciwgT1NFcnJvcikgYXMgZToKLSAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgIHN1Y2Nlc3MgPSBGYWxzZQogICAgICAgICAgICAgICAgIGlmIHF1aWV0ID49IDI6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzdWNjZXNzCiAgICAgICAgICAgICAgICAgZWxpZiBxdWlldDoKQEAgLTE2Nyw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgIHByaW50KGUuX19jbGFzc19fLl9fbmFtZV9fICsgJzonLCBlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBpZiBvayA9PSAwOgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gMAorICAgICAgICAgICAgICAgICAgICBzdWNjZXNzID0gRmFsc2UKICAgICByZXR1cm4gc3VjY2VzcwogCiBkZWYgY29tcGlsZV9wYXRoKHNraXBfY3VyZGlyPTEsIG1heGxldmVscz0wLCBmb3JjZT1GYWxzZSwgcXVpZXQ9MCwKQEAgLTE4Myw3ICsxODcsNyBAQAogICAgIGxlZ2FjeTogYXMgZm9yIGNvbXBpbGVfZGlyKCkgKGRlZmF1bHQgRmFsc2UpCiAgICAgb3B0aW1pemU6IGFzIGZvciBjb21waWxlX2RpcigpIChkZWZhdWx0IC0xKQogICAgICIiIgotICAgIHN1Y2Nlc3MgPSAxCisgICAgc3VjY2VzcyA9IFRydWUKICAgICBmb3IgZGlyIGluIHN5cy5wYXRoOgogICAgICAgICBpZiAobm90IGRpciBvciBkaXIgPT0gb3MuY3VyZGlyKSBhbmQgc2tpcF9jdXJkaXI6CiAgICAgICAgICAgICBpZiBxdWlldCA8IDI6CmRpZmYgLS1naXQgYS9MaWIvY29uY3VycmVudC9mdXR1cmVzL3RocmVhZC5weSBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CmluZGV4IDljM2FlYzkuLjAzZDI3NmIgMTAwNjQ0Ci0tLSBhL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CisrKyBiL0xpYi9jb25jdXJyZW50L2Z1dHVyZXMvdGhyZWFkLnB5CkBAIC04MSwxMiArODEsMTMgQEAKICAgICAgICAgX2Jhc2UuTE9HR0VSLmNyaXRpY2FsKCdFeGNlcHRpb24gaW4gd29ya2VyJywgZXhjX2luZm89VHJ1ZSkKIAogY2xhc3MgVGhyZWFkUG9vbEV4ZWN1dG9yKF9iYXNlLkV4ZWN1dG9yKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgbWF4X3dvcmtlcnM9Tm9uZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1heF93b3JrZXJzPU5vbmUsIHRocmVhZF9uYW1lX3ByZWZpeD0nJyk6CiAgICAgICAgICIiIkluaXRpYWxpemVzIGEgbmV3IFRocmVhZFBvb2xFeGVjdXRvciBpbnN0YW5jZS4KIAogICAgICAgICBBcmdzOgogICAgICAgICAgICAgbWF4X3dvcmtlcnM6IFRoZSBtYXhpbXVtIG51bWJlciBvZiB0aHJlYWRzIHRoYXQgY2FuIGJlIHVzZWQgdG8KICAgICAgICAgICAgICAgICBleGVjdXRlIHRoZSBnaXZlbiBjYWxscy4KKyAgICAgICAgICAgIHRocmVhZF9uYW1lX3ByZWZpeDogQW4gb3B0aW9uYWwgbmFtZSBwcmVmaXggdG8gZ2l2ZSBvdXIgdGhyZWFkcy4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIG1heF93b3JrZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICAjIFVzZSB0aGlzIG51bWJlciBiZWNhdXNlIFRocmVhZFBvb2xFeGVjdXRvciBpcyBvZnRlbgpAQCAtMTAwLDYgKzEwMSw3IEBACiAgICAgICAgIHNlbGYuX3RocmVhZHMgPSBzZXQoKQogICAgICAgICBzZWxmLl9zaHV0ZG93biA9IEZhbHNlCiAgICAgICAgIHNlbGYuX3NodXRkb3duX2xvY2sgPSB0aHJlYWRpbmcuTG9jaygpCisgICAgICAgIHNlbGYuX3RocmVhZF9uYW1lX3ByZWZpeCA9IHRocmVhZF9uYW1lX3ByZWZpeAogCiAgICAgZGVmIHN1Ym1pdChzZWxmLCBmbiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgd2l0aCBzZWxmLl9zaHV0ZG93bl9sb2NrOgpAQCAtMTIxLDggKzEyMywxMSBAQAogICAgICAgICAgICAgcS5wdXQoTm9uZSkKICAgICAgICAgIyBUT0RPKGJxdWlubGFuKTogU2hvdWxkIGF2b2lkIGNyZWF0aW5nIG5ldyB0aHJlYWRzIGlmIHRoZXJlIGFyZSBtb3JlCiAgICAgICAgICMgaWRsZSB0aHJlYWRzIHRoYW4gaXRlbXMgaW4gdGhlIHdvcmsgcXVldWUuCi0gICAgICAgIGlmIGxlbihzZWxmLl90aHJlYWRzKSA8IHNlbGYuX21heF93b3JrZXJzOgotICAgICAgICAgICAgdCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PV93b3JrZXIsCisgICAgICAgIG51bV90aHJlYWRzID0gbGVuKHNlbGYuX3RocmVhZHMpCisgICAgICAgIGlmIG51bV90aHJlYWRzIDwgc2VsZi5fbWF4X3dvcmtlcnM6CisgICAgICAgICAgICB0aHJlYWRfbmFtZSA9ICclc18lZCcgJSAoc2VsZi5fdGhyZWFkX25hbWVfcHJlZml4IG9yIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtX3RocmVhZHMpCisgICAgICAgICAgICB0ID0gdGhyZWFkaW5nLlRocmVhZChuYW1lPXRocmVhZF9uYW1lLCB0YXJnZXQ9X3dvcmtlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3M9KHdlYWtyZWYucmVmKHNlbGYsIHdlYWtyZWZfY2IpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fd29ya19xdWV1ZSkpCiAgICAgICAgICAgICB0LmRhZW1vbiA9IFRydWUKZGlmZiAtLWdpdCBhL0xpYi9jb250ZXh0bGliLnB5IGIvTGliL2NvbnRleHRsaWIucHkKaW5kZXggZDQ0ZWRkNi4uN2Q5NGE1NyAxMDA2NDQKLS0tIGEvTGliL2NvbnRleHRsaWIucHkKKysrIGIvTGliL2NvbnRleHRsaWIucHkKQEAgLTEsMTEgKzEsMzQgQEAKICIiIlV0aWxpdGllcyBmb3Igd2l0aC1zdGF0ZW1lbnQgY29udGV4dHMuICBTZWUgUEVQIDM0My4iIiIKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogCi1fX2FsbF9fID0gWyJjb250ZXh0bWFuYWdlciIsICJjbG9zaW5nIiwgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwKLSAgICAgICAgICAgInJlZGlyZWN0X3N0ZG91dCIsICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorX19hbGxfXyA9IFsiY29udGV4dG1hbmFnZXIiLCAiY2xvc2luZyIsICJBYnN0cmFjdENvbnRleHRNYW5hZ2VyIiwKKyAgICAgICAgICAgIkNvbnRleHREZWNvcmF0b3IiLCAiRXhpdFN0YWNrIiwgInJlZGlyZWN0X3N0ZG91dCIsCisgICAgICAgICAgICJyZWRpcmVjdF9zdGRlcnIiLCAic3VwcHJlc3MiXQorCisKK2NsYXNzIEFic3RyYWN0Q29udGV4dE1hbmFnZXIoYWJjLkFCQyk6CisKKyAgICAiIiJBbiBhYnN0cmFjdCBiYXNlIGNsYXNzIGZvciBjb250ZXh0IG1hbmFnZXJzLiIiIgorCisgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGBzZWxmYCB1cG9uIGVudGVyaW5nIHRoZSBydW50aW1lIGNvbnRleHQuIiIiCisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBAYWJjLmFic3RyYWN0bWV0aG9kCisgICAgZGVmIF9fZXhpdF9fKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk6CisgICAgICAgICIiIlJhaXNlIGFueSBleGNlcHRpb24gdHJpZ2dlcmVkIHdpdGhpbiB0aGUgcnVudGltZSBjb250ZXh0LiIiIgorICAgICAgICByZXR1cm4gTm9uZQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIF9fc3ViY2xhc3Nob29rX18oY2xzLCBDKToKKyAgICAgICAgaWYgY2xzIGlzIEFic3RyYWN0Q29udGV4dE1hbmFnZXI6CisgICAgICAgICAgICBpZiAoYW55KCJfX2VudGVyX18iIGluIEIuX19kaWN0X18gZm9yIEIgaW4gQy5fX21yb19fKSBhbmQKKyAgICAgICAgICAgICAgICBhbnkoIl9fZXhpdF9fIiBpbiBCLl9fZGljdF9fIGZvciBCIGluIEMuX19tcm9fXykpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAogCiAKIGNsYXNzIENvbnRleHREZWNvcmF0b3Iob2JqZWN0KToKQEAgLTMxLDcgKzU0LDcgQEAKICAgICAgICAgcmV0dXJuIGlubmVyCiAKIAotY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IpOgorY2xhc3MgX0dlbmVyYXRvckNvbnRleHRNYW5hZ2VyKENvbnRleHREZWNvcmF0b3IsIEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkhlbHBlciBmb3IgQGNvbnRleHRtYW5hZ2VyIGRlY29yYXRvci4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmdW5jLCBhcmdzLCBrd2RzKToKQEAgLTEzNyw3ICsxNjAsNyBAQAogICAgIHJldHVybiBoZWxwZXIKIAogCi1jbGFzcyBjbG9zaW5nKG9iamVjdCk6CitjbGFzcyBjbG9zaW5nKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogICAgICIiIkNvbnRleHQgdG8gYXV0b21hdGljYWxseSBjbG9zZSBzb21ldGhpbmcgYXQgdGhlIGVuZCBvZiBhIGJsb2NrLgogCiAgICAgQ29kZSBsaWtlIHRoaXM6CkBAIC0xNjIsNyArMTg1LDcgQEAKICAgICAgICAgc2VsZi50aGluZy5jbG9zZSgpCiAKIAotY2xhc3MgX1JlZGlyZWN0U3RyZWFtOgorY2xhc3MgX1JlZGlyZWN0U3RyZWFtKEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgogCiAgICAgX3N0cmVhbSA9IE5vbmUKIApAQCAtMjAyLDcgKzIyNSw3IEBACiAgICAgX3N0cmVhbSA9ICJzdGRlcnIiCiAKIAotY2xhc3Mgc3VwcHJlc3M6CitjbGFzcyBzdXBwcmVzcyhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgdG8gc3VwcHJlc3Mgc3BlY2lmaWVkIGV4Y2VwdGlvbnMKIAogICAgIEFmdGVyIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgZXhlY3V0aW9uIHByb2NlZWRzIHdpdGggdGhlIG5leHQKQEAgLTIzMyw3ICsyNTYsNyBAQAogCiAKICMgSW5zcGlyZWQgYnkgZGlzY3Vzc2lvbnMgb24gaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTEzNTg1Ci1jbGFzcyBFeGl0U3RhY2sob2JqZWN0KToKK2NsYXNzIEV4aXRTdGFjayhBYnN0cmFjdENvbnRleHRNYW5hZ2VyKToKICAgICAiIiJDb250ZXh0IG1hbmFnZXIgZm9yIGR5bmFtaWMgbWFuYWdlbWVudCBvZiBhIHN0YWNrIG9mIGV4aXQgY2FsbGJhY2tzCiAKICAgICBGb3IgZXhhbXBsZToKQEAgLTMxMiw5ICszMzUsNiBAQAogICAgICAgICAiIiJJbW1lZGlhdGVseSB1bndpbmQgdGhlIGNvbnRleHQgc3RhY2siIiIKICAgICAgICAgc2VsZi5fX2V4aXRfXyhOb25lLCBOb25lLCBOb25lKQogCi0gICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYKLQogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqZXhjX2RldGFpbHMpOgogICAgICAgICByZWNlaXZlZF9leGMgPSBleGNfZGV0YWlsc1swXSBpcyBub3QgTm9uZQogCmRpZmYgLS1naXQgYS9MaWIvY29weS5weSBiL0xpYi9jb3B5LnB5CmluZGV4IDk3MmI5NGEuLmY4NjA0MGEgMTAwNjQ0Ci0tLSBhL0xpYi9jb3B5LnB5CisrKyBiL0xpYi9jb3B5LnB5CkBAIC01MSw3ICs1MSw2IEBACiBpbXBvcnQgdHlwZXMKIGltcG9ydCB3ZWFrcmVmCiBmcm9tIGNvcHlyZWcgaW1wb3J0IGRpc3BhdGNoX3RhYmxlCi1pbXBvcnQgYnVpbHRpbnMKIAogY2xhc3MgRXJyb3IoRXhjZXB0aW9uKToKICAgICBwYXNzCkBAIC0xMDIsMzcgKzEwMSwzMyBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigidW4oc2hhbGxvdyljb3B5YWJsZSBvYmplY3Qgb2YgdHlwZSAlcyIgJSBjbHMpCiAKLSAgICByZXR1cm4gX3JlY29uc3RydWN0KHgsIHJ2LCAwKQorICAgIGlmIGlzaW5zdGFuY2UocnYsIHN0cik6CisgICAgICAgIHJldHVybiB4CisgICAgcmV0dXJuIF9yZWNvbnN0cnVjdCh4LCBOb25lLCAqcnYpCiAKIAogX2NvcHlfZGlzcGF0Y2ggPSBkID0ge30KIAogZGVmIF9jb3B5X2ltbXV0YWJsZSh4KToKICAgICByZXR1cm4geAotZm9yIHQgaW4gKHR5cGUoTm9uZSksIGludCwgZmxvYXQsIGJvb2wsIHN0ciwgdHVwbGUsCi0gICAgICAgICAgYnl0ZXMsIGZyb3plbnNldCwgdHlwZSwgcmFuZ2UsCi0gICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksCitmb3IgdCBpbiAodHlwZShOb25lKSwgaW50LCBmbG9hdCwgYm9vbCwgY29tcGxleCwgc3RyLCB0dXBsZSwKKyAgICAgICAgICBieXRlcywgZnJvemVuc2V0LCB0eXBlLCByYW5nZSwgc2xpY2UsCisgICAgICAgICAgdHlwZXMuQnVpbHRpbkZ1bmN0aW9uVHlwZSwgdHlwZShFbGxpcHNpcyksIHR5cGUoTm90SW1wbGVtZW50ZWQpLAogICAgICAgICAgIHR5cGVzLkZ1bmN0aW9uVHlwZSwgd2Vha3JlZi5yZWYpOgogICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIHQgPSBnZXRhdHRyKHR5cGVzLCAiQ29kZVR5cGUiLCBOb25lKQogaWYgdCBpcyBub3QgTm9uZToKICAgICBkW3RdID0gX2NvcHlfaW1tdXRhYmxlCi1mb3IgbmFtZSBpbiAoImNvbXBsZXgiLCAidW5pY29kZSIpOgotICAgIHQgPSBnZXRhdHRyKGJ1aWx0aW5zLCBuYW1lLCBOb25lKQotICAgIGlmIHQgaXMgbm90IE5vbmU6Ci0gICAgICAgIGRbdF0gPSBfY29weV9pbW11dGFibGUKIAotZGVmIF9jb3B5X3dpdGhfY29uc3RydWN0b3IoeCk6Ci0gICAgcmV0dXJuIHR5cGUoeCkoeCkKLWZvciB0IGluIChsaXN0LCBkaWN0LCBzZXQpOgotICAgIGRbdF0gPSBfY29weV93aXRoX2NvbnN0cnVjdG9yCitkW2xpc3RdID0gbGlzdC5jb3B5CitkW2RpY3RdID0gZGljdC5jb3B5CitkW3NldF0gPSBzZXQuY29weQorZFtieXRlYXJyYXldID0gYnl0ZWFycmF5LmNvcHkKIAotZGVmIF9jb3B5X3dpdGhfY29weV9tZXRob2QoeCk6Ci0gICAgcmV0dXJuIHguY29weSgpCiBpZiBQeVN0cmluZ01hcCBpcyBub3QgTm9uZToKLSAgICBkW1B5U3RyaW5nTWFwXSA9IF9jb3B5X3dpdGhfY29weV9tZXRob2QKKyAgICBkW1B5U3RyaW5nTWFwXSA9IFB5U3RyaW5nTWFwLmNvcHkKIAotZGVsIGQKK2RlbCBkLCB0CiAKIGRlZiBkZWVwY29weSh4LCBtZW1vPU5vbmUsIF9uaWw9W10pOgogICAgICIiIkRlZXAgY29weSBvcGVyYXRpb24gb24gYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLgpAQCAtMTc5LDcgKzE3NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBFcnJvcigKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuKGRlZXApY29weWFibGUgb2JqZWN0IG9mIHR5cGUgJXMiICUgY2xzKQotICAgICAgICAgICAgICAgIHkgPSBfcmVjb25zdHJ1Y3QoeCwgcnYsIDEsIG1lbW8pCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShydiwgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgeSA9IHgKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB5ID0gX3JlY29uc3RydWN0KHgsIG1lbW8sICpydikKIAogICAgICMgSWYgaXMgaXRzIG93biBjb3B5LCBkb24ndCBtZW1vaXplLgogICAgIGlmIHkgaXMgbm90IHg6CkBAIC0xOTMsMTMgKzE5MSwxMSBAQAogICAgIHJldHVybiB4CiBkW3R5cGUoTm9uZSldID0gX2RlZXBjb3B5X2F0b21pYwogZFt0eXBlKEVsbGlwc2lzKV0gPSBfZGVlcGNvcHlfYXRvbWljCitkW3R5cGUoTm90SW1wbGVtZW50ZWQpXSA9IF9kZWVwY29weV9hdG9taWMKIGRbaW50XSA9IF9kZWVwY29weV9hdG9taWMKIGRbZmxvYXRdID0gX2RlZXBjb3B5X2F0b21pYwogZFtib29sXSA9IF9kZWVwY29weV9hdG9taWMKLXRyeToKLSAgICBkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBwYXNzCitkW2NvbXBsZXhdID0gX2RlZXBjb3B5X2F0b21pYwogZFtieXRlc10gPSBfZGVlcGNvcHlfYXRvbWljCiBkW3N0cl0gPSBfZGVlcGNvcHlfYXRvbWljCiB0cnk6CkBAIC0yMTEsMTUgKzIwNywxNiBAQAogZFt0eXBlcy5GdW5jdGlvblR5cGVdID0gX2RlZXBjb3B5X2F0b21pYwogZFt3ZWFrcmVmLnJlZl0gPSBfZGVlcGNvcHlfYXRvbWljCiAKLWRlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfbGlzdCh4LCBtZW1vLCBkZWVwY29weT1kZWVwY29weSk6CiAgICAgeSA9IFtdCiAgICAgbWVtb1tpZCh4KV0gPSB5CisgICAgYXBwZW5kID0geS5hcHBlbmQKICAgICBmb3IgYSBpbiB4OgotICAgICAgICB5LmFwcGVuZChkZWVwY29weShhLCBtZW1vKSkKKyAgICAgICAgYXBwZW5kKGRlZXBjb3B5KGEsIG1lbW8pKQogICAgIHJldHVybiB5CiBkW2xpc3RdID0gX2RlZXBjb3B5X2xpc3QKIAotZGVmIF9kZWVwY29weV90dXBsZSh4LCBtZW1vKToKK2RlZiBfZGVlcGNvcHlfdHVwbGUoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSBbZGVlcGNvcHkoYSwgbWVtbykgZm9yIGEgaW4geF0KICAgICAjIFdlJ3JlIG5vdCBnb2luZyB0byBwdXQgdGhlIHR1cGxlIGluIHRoZSBtZW1vLCBidXQgaXQncyBzdGlsbCBpbXBvcnRhbnQgd2UKICAgICAjIGNoZWNrIGZvciBpdCwgaW4gY2FzZSB0aGUgdHVwbGUgY29udGFpbnMgcmVjdXJzaXZlIG11dGFibGUgc3RydWN0dXJlcy4KQEAgLTIzNiw3ICsyMzMsNyBAQAogICAgIHJldHVybiB5CiBkW3R1cGxlXSA9IF9kZWVwY29weV90dXBsZQogCi1kZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbyk6CitkZWYgX2RlZXBjb3B5X2RpY3QoeCwgbWVtbywgZGVlcGNvcHk9ZGVlcGNvcHkpOgogICAgIHkgPSB7fQogICAgIG1lbW9baWQoeCldID0geQogICAgIGZvciBrZXksIHZhbHVlIGluIHguaXRlbXMoKToKQEAgLTI0OCw3ICsyNDUsOSBAQAogCiBkZWYgX2RlZXBjb3B5X21ldGhvZCh4LCBtZW1vKTogIyBDb3B5IGluc3RhbmNlIG1ldGhvZHMKICAgICByZXR1cm4gdHlwZSh4KSh4Ll9fZnVuY19fLCBkZWVwY29weSh4Ll9fc2VsZl9fLCBtZW1vKSkKLV9kZWVwY29weV9kaXNwYXRjaFt0eXBlcy5NZXRob2RUeXBlXSA9IF9kZWVwY29weV9tZXRob2QKK2RbdHlwZXMuTWV0aG9kVHlwZV0gPSBfZGVlcGNvcHlfbWV0aG9kCisKK2RlbCBkCiAKIGRlZiBfa2VlcF9hbGl2ZSh4LCBtZW1vKToKICAgICAiIiJLZWVwcyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IHggaW4gdGhlIG1lbW8uCkBAIC0yNjYsMzEgKzI2NSwxNSBAQAogICAgICAgICAjIGFoYSwgdGhpcyBpcyB0aGUgZmlyc3Qgb25lIDotKQogICAgICAgICBtZW1vW2lkKG1lbW8pXT1beF0KIAotZGVmIF9yZWNvbnN0cnVjdCh4LCBpbmZvLCBkZWVwLCBtZW1vPU5vbmUpOgotICAgIGlmIGlzaW5zdGFuY2UoaW5mbywgc3RyKToKLSAgICAgICAgcmV0dXJuIHgKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShpbmZvLCB0dXBsZSkKLSAgICBpZiBtZW1vIGlzIE5vbmU6Ci0gICAgICAgIG1lbW8gPSB7fQotICAgIG4gPSBsZW4oaW5mbykKLSAgICBhc3NlcnQgbiBpbiAoMiwgMywgNCwgNSkKLSAgICBjYWxsYWJsZSwgYXJncyA9IGluZm9bOjJdCi0gICAgaWYgbiA+IDI6Ci0gICAgICAgIHN0YXRlID0gaW5mb1syXQotICAgIGVsc2U6Ci0gICAgICAgIHN0YXRlID0gTm9uZQotICAgIGlmIG4gPiAzOgotICAgICAgICBsaXN0aXRlciA9IGluZm9bM10KLSAgICBlbHNlOgotICAgICAgICBsaXN0aXRlciA9IE5vbmUKLSAgICBpZiBuID4gNDoKLSAgICAgICAgZGljdGl0ZXIgPSBpbmZvWzRdCi0gICAgZWxzZToKLSAgICAgICAgZGljdGl0ZXIgPSBOb25lCitkZWYgX3JlY29uc3RydWN0KHgsIG1lbW8sIGZ1bmMsIGFyZ3MsCisgICAgICAgICAgICAgICAgIHN0YXRlPU5vbmUsIGxpc3RpdGVyPU5vbmUsIGRpY3RpdGVyPU5vbmUsCisgICAgICAgICAgICAgICAgIGRlZXBjb3B5PWRlZXBjb3B5KToKKyAgICBkZWVwID0gbWVtbyBpcyBub3QgTm9uZQorICAgIGlmIGRlZXAgYW5kIGFyZ3M6CisgICAgICAgIGFyZ3MgPSAoZGVlcGNvcHkoYXJnLCBtZW1vKSBmb3IgYXJnIGluIGFyZ3MpCisgICAgeSA9IGZ1bmMoKmFyZ3MpCiAgICAgaWYgZGVlcDoKLSAgICAgICAgYXJncyA9IGRlZXBjb3B5KGFyZ3MsIG1lbW8pCi0gICAgeSA9IGNhbGxhYmxlKCphcmdzKQotICAgIG1lbW9baWQoeCldID0geQorICAgICAgICBtZW1vW2lkKHgpXSA9IHkKIAogICAgIGlmIHN0YXRlIGlzIG5vdCBOb25lOgogICAgICAgICBpZiBkZWVwOgpAQCAtMzA5LDIyICsyOTIsMjIgQEAKICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cih5LCBrZXksIHZhbHVlKQogCiAgICAgaWYgbGlzdGl0ZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgotICAgICAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgaWYgZGVlcDoKKyAgICAgICAgICAgIGZvciBpdGVtIGluIGxpc3RpdGVyOgogICAgICAgICAgICAgICAgIGl0ZW0gPSBkZWVwY29weShpdGVtLCBtZW1vKQotICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKKyAgICAgICAgICAgICAgICB5LmFwcGVuZChpdGVtKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgZm9yIGl0ZW0gaW4gbGlzdGl0ZXI6CisgICAgICAgICAgICAgICAgeS5hcHBlbmQoaXRlbSkKICAgICBpZiBkaWN0aXRlciBpcyBub3QgTm9uZToKLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6Ci0gICAgICAgICAgICBpZiBkZWVwOgorICAgICAgICBpZiBkZWVwOgorICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGljdGl0ZXI6CiAgICAgICAgICAgICAgICAga2V5ID0gZGVlcGNvcHkoa2V5LCBtZW1vKQogICAgICAgICAgICAgICAgIHZhbHVlID0gZGVlcGNvcHkodmFsdWUsIG1lbW8pCi0gICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIHlba2V5XSA9IHZhbHVlCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBkaWN0aXRlcjoKKyAgICAgICAgICAgICAgICB5W2tleV0gPSB2YWx1ZQogICAgIHJldHVybiB5CiAKLWRlbCBkCi0KLWRlbCB0eXBlcwotCi0jIEhlbHBlciBmb3IgaW5zdGFuY2UgY3JlYXRpb24gd2l0aG91dCBjYWxsaW5nIF9faW5pdF9fCi1jbGFzcyBfRW1wdHlDbGFzczoKLSAgICBwYXNzCitkZWwgdHlwZXMsIHdlYWtyZWYsIFB5U3RyaW5nTWFwCmRpZmYgLS1naXQgYS9MaWIvY3J5cHQucHkgYi9MaWIvY3J5cHQucHkKaW5kZXggNDlhYjk2ZS4uZmJjNWY0YyAxMDA2NDQKLS0tIGEvTGliL2NyeXB0LnB5CisrKyBiL0xpYi9jcnlwdC5weQpAQCAtNTQsOSArNTQsOCBAQAogTUVUSE9EX1NIQTUxMiA9IF9NZXRob2QoJ1NIQTUxMicsICc2JywgMTYsIDEwNikKIAogbWV0aG9kcyA9IFtdCi1mb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSk6Citmb3IgX21ldGhvZCBpbiAoTUVUSE9EX1NIQTUxMiwgTUVUSE9EX1NIQTI1NiwgTUVUSE9EX01ENSwgTUVUSE9EX0NSWVBUKToKICAgICBfcmVzdWx0ID0gY3J5cHQoJycsIF9tZXRob2QpCiAgICAgaWYgX3Jlc3VsdCBhbmQgbGVuKF9yZXN1bHQpID09IF9tZXRob2QudG90YWxfc2l6ZToKICAgICAgICAgbWV0aG9kcy5hcHBlbmQoX21ldGhvZCkKLW1ldGhvZHMuYXBwZW5kKE1FVEhPRF9DUllQVCkKIGRlbCBfcmVzdWx0LCBfbWV0aG9kCmRpZmYgLS1naXQgYS9MaWIvY3N2LnB5IGIvTGliL2Nzdi5weQppbmRleCBjYTQwZTVlLi4wNDgxZWE1IDEwMDY0NAotLS0gYS9MaWIvY3N2LnB5CisrKyBiL0xpYi9jc3YucHkKQEAgLTExLDEzICsxMSwxNSBAQAogICAgICAgICAgICAgICAgICBfX2RvY19fCiBmcm9tIF9jc3YgaW1wb3J0IERpYWxlY3QgYXMgX0RpYWxlY3QKIAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiAKLV9fYWxsX18gPSBbICJRVU9URV9NSU5JTUFMIiwgIlFVT1RFX0FMTCIsICJRVU9URV9OT05OVU1FUklDIiwgIlFVT1RFX05PTkUiLAotICAgICAgICAgICAgIkVycm9yIiwgIkRpYWxlY3QiLCAiX19kb2NfXyIsICJleGNlbCIsICJleGNlbF90YWIiLAotICAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCi0gICAgICAgICAgICAicmVnaXN0ZXJfZGlhbGVjdCIsICJnZXRfZGlhbGVjdCIsICJsaXN0X2RpYWxlY3RzIiwgIlNuaWZmZXIiLAotICAgICAgICAgICAgInVucmVnaXN0ZXJfZGlhbGVjdCIsICJfX3ZlcnNpb25fXyIsICJEaWN0UmVhZGVyIiwgIkRpY3RXcml0ZXIiIF0KK19fYWxsX18gPSBbIlFVT1RFX01JTklNQUwiLCAiUVVPVEVfQUxMIiwgIlFVT1RFX05PTk5VTUVSSUMiLCAiUVVPVEVfTk9ORSIsCisgICAgICAgICAgICJFcnJvciIsICJEaWFsZWN0IiwgIl9fZG9jX18iLCAiZXhjZWwiLCAiZXhjZWxfdGFiIiwKKyAgICAgICAgICAgImZpZWxkX3NpemVfbGltaXQiLCAicmVhZGVyIiwgIndyaXRlciIsCisgICAgICAgICAgICJyZWdpc3Rlcl9kaWFsZWN0IiwgImdldF9kaWFsZWN0IiwgImxpc3RfZGlhbGVjdHMiLCAiU25pZmZlciIsCisgICAgICAgICAgICJ1bnJlZ2lzdGVyX2RpYWxlY3QiLCAiX192ZXJzaW9uX18iLCAiRGljdFJlYWRlciIsICJEaWN0V3JpdGVyIiwKKyAgICAgICAgICAgInVuaXhfZGlhbGVjdCJdCiAKIGNsYXNzIERpYWxlY3Q6CiAgICAgIiIiRGVzY3JpYmUgYSBDU1YgZGlhbGVjdC4KQEAgLTExNSw3ICsxMTcsNyBAQAogICAgICAgICAjIHZhbHVlcwogICAgICAgICB3aGlsZSByb3cgPT0gW106CiAgICAgICAgICAgICByb3cgPSBuZXh0KHNlbGYucmVhZGVyKQotICAgICAgICBkID0gZGljdCh6aXAoc2VsZi5maWVsZG5hbWVzLCByb3cpKQorICAgICAgICBkID0gT3JkZXJlZERpY3QoemlwKHNlbGYuZmllbGRuYW1lcywgcm93KSkKICAgICAgICAgbGYgPSBsZW4oc2VsZi5maWVsZG5hbWVzKQogICAgICAgICBsciA9IGxlbihyb3cpCiAgICAgICAgIGlmIGxmIDwgbHI6CkBAIC0yMTMsMTAgKzIxNSwxMCBAQAogICAgICAgICAiIiIKIAogICAgICAgICBtYXRjaGVzID0gW10KLSAgICAgICAgZm9yIHJlc3RyIGluICgnKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPWRlbGltKScsICMgLCIuKj8iLAotICAgICAgICAgICAgICAgICAgICAgICcoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD9QPGRlbGltPlteXHdcbiJcJ10pKD9QPHNwYWNlPiA/KScsICAgIyAgIi4qPyIsCi0gICAgICAgICAgICAgICAgICAgICAgJyg/UDxkZWxpbT4+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScsICAjICwiLio/IgotICAgICAgICAgICAgICAgICAgICAgICcoPzpefFxuKSg/UDxxdW90ZT5bIlwnXSkuKj8oP1A9cXVvdGUpKD86JHxcbiknKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgIi4qPyIgKG5vIGRlbGltLCBubyBzcGFjZSkKKyAgICAgICAgZm9yIHJlc3RyIGluIChyJyg/UDxkZWxpbT5bXlx3XG4iXCddKSg/UDxzcGFjZT4gPykoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/UD1kZWxpbSknLCAjICwiLio/IiwKKyAgICAgICAgICAgICAgICAgICAgICByJyg/Ol58XG4pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoP1A8ZGVsaW0+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pJywgICAjICAiLio/IiwKKyAgICAgICAgICAgICAgICAgICAgICByJyg/UDxkZWxpbT4+W15cd1xuIlwnXSkoP1A8c3BhY2U+ID8pKD9QPHF1b3RlPlsiXCddKS4qPyg/UD1xdW90ZSkoPzokfFxuKScsICAjICwiLio/IgorICAgICAgICAgICAgICAgICAgICAgIHInKD86XnxcbikoP1A8cXVvdGU+WyJcJ10pLio/KD9QPXF1b3RlKSg/OiR8XG4pJyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgICIuKj8iIChubyBkZWxpbSwgbm8gc3BhY2UpCiAgICAgICAgICAgICByZWdleHAgPSByZS5jb21waWxlKHJlc3RyLCByZS5ET1RBTEwgfCByZS5NVUxUSUxJTkUpCiAgICAgICAgICAgICBtYXRjaGVzID0gcmVnZXhwLmZpbmRhbGwoZGF0YSkKICAgICAgICAgICAgIGlmIG1hdGNoZXM6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5IGIvTGliL2N0eXBlcy9fX2luaXRfXy5weQppbmRleCAwZDg2MDc4Li4xYzlkM2E1IDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL19faW5pdF9fLnB5CisrKyBiL0xpYi9jdHlwZXMvX19pbml0X18ucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGlmIF9fdmVyc2lvbl9fICE9IF9jdHlwZXNfdmVyc2lvbjoKICAgICByYWlzZSBFeGNlcHRpb24oIlZlcnNpb24gbnVtYmVyIG1pc21hdGNoIiwgX192ZXJzaW9uX18sIF9jdHlwZXNfdmVyc2lvbikKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBmcm9tIF9jdHlwZXMgaW1wb3J0IEZvcm1hdEVycm9yCiAKIERFRkFVTFRfTU9ERSA9IFJUTERfTE9DQUwKQEAgLTEwMywxMiArMTAzLDkgQEAKICAgICAgICAgX2NfZnVuY3R5cGVfY2FjaGVbKHJlc3R5cGUsIGFyZ3R5cGVzLCBmbGFncyldID0gQ0Z1bmN0aW9uVHlwZQogICAgICAgICByZXR1cm4gQ0Z1bmN0aW9uVHlwZQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgTG9hZExpYnJhcnkgYXMgX2Rsb3BlbgogICAgIGZyb20gX2N0eXBlcyBpbXBvcnQgRlVOQ0ZMQUdfU1REQ0FMTCBhcyBfRlVOQ0ZMQUdfU1REQ0FMTAotICAgIGlmIF9vcy5uYW1lID09ICJjZSI6Ci0gICAgICAgICMgJ2NlJyBkb2Vzbid0IGhhdmUgdGhlIHN0ZGNhbGwgY2FsbGluZyBjb252ZW50aW9uCi0gICAgICAgIF9GVU5DRkxBR19TVERDQUxMID0gX0ZVTkNGTEFHX0NERUNMCiAKICAgICBfd2luX2Z1bmN0eXBlX2NhY2hlID0ge30KICAgICBkZWYgV0lORlVOQ1RZUEUocmVzdHlwZSwgKmFyZ3R5cGVzLCAqKmt3KToKQEAgLTI2Miw3ICsyNTksNyBAQAogZGVmIF9yZXNldF9jYWNoZSgpOgogICAgIF9wb2ludGVyX3R5cGVfY2FjaGUuY2xlYXIoKQogICAgIF9jX2Z1bmN0eXBlX2NhY2hlLmNsZWFyKCkKLSAgICBpZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CisgICAgaWYgX29zLm5hbWUgPT0gIm50IjoKICAgICAgICAgX3dpbl9mdW5jdHlwZV9jYWNoZS5jbGVhcigpCiAgICAgIyBfU2ltcGxlQ0RhdGEuY193Y2hhcl9wX2Zyb21fcGFyYW0KICAgICBQT0lOVEVSKGNfd2NoYXIpLmZyb21fcGFyYW0gPSBjX3djaGFyX3AuZnJvbV9wYXJhbQpAQCAtMzc0LDcgKzM3MSw3IEBACiAgICAgIiIiCiAgICAgX2Z1bmNfZmxhZ3NfID0gX0ZVTkNGTEFHX0NERUNMIHwgX0ZVTkNGTEFHX1BZVEhPTkFQSQogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogCiAgICAgY2xhc3MgV2luRExMKENETEwpOgogICAgICAgICAiIiJUaGlzIGNsYXNzIHJlcHJlc2VudHMgYSBkbGwgZXhwb3J0aW5nIGZ1bmN0aW9ucyB1c2luZyB0aGUKQEAgLTQyNyw3ICs0MjQsNyBAQAogY2RsbCA9IExpYnJhcnlMb2FkZXIoQ0RMTCkKIHB5ZGxsID0gTGlicmFyeUxvYWRlcihQeURMTCkKIAotaWYgX29zLm5hbWUgaW4gKCJudCIsICJjZSIpOgoraWYgX29zLm5hbWUgPT0gIm50IjoKICAgICBweXRob25hcGkgPSBQeURMTCgicHl0aG9uIGRsbCIsIE5vbmUsIF9zeXMuZGxsaGFuZGxlKQogZWxpZiBfc3lzLnBsYXRmb3JtID09ICJjeWd3aW4iOgogICAgIHB5dGhvbmFwaSA9IFB5RExMKCJsaWJweXRob24lZC4lZC5kbGwiICUgX3N5cy52ZXJzaW9uX2luZm9bOjJdKQpAQCAtNDM1LDcgKzQzMiw3IEBACiAgICAgcHl0aG9uYXBpID0gUHlETEwoTm9uZSkKIAogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6CitpZiBfb3MubmFtZSA9PSAibnQiOgogICAgIHdpbmRsbCA9IExpYnJhcnlMb2FkZXIoV2luRExMKQogICAgIG9sZWRsbCA9IExpYnJhcnlMb2FkZXIoT2xlRExMKQogCkBAIC01MDMsNyArNTAwLDcgQEAKICAgICAgICAgcmV0dXJuIF93c3RyaW5nX2F0KHB0ciwgc2l6ZSkKIAogCi1pZiBfb3MubmFtZSBpbiAoIm50IiwgImNlIik6ICMgQ09NIHN0dWZmCitpZiBfb3MubmFtZSA9PSAibnQiOiAjIENPTSBzdHVmZgogICAgIGRlZiBEbGxHZXRDbGFzc09iamVjdChyY2xzaWQsIHJpaWQsIHBwdik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGNjb20gPSBfX2ltcG9ydF9fKCJjb210eXBlcy5zZXJ2ZXIuaW5wcm9jc2VydmVyIiwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWycqJ10pCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9iaXRmaWVsZHMucHkKaW5kZXggYjM5ZDgyYy4uYzcxZDcxZCAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfYml0ZmllbGRzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2JpdGZpZWxkcy5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiAKLWltcG9ydCBjdHlwZXMKIGltcG9ydCBfY3R5cGVzX3Rlc3QKIAogY2xhc3MgQklUUyhTdHJ1Y3R1cmUpOgpAQCAtMTk3LDcgKzE5Niw3IEBACiAgICAgICAgIGNsYXNzIFgoU3RydWN0dXJlKToKICAgICAgICAgICAgIF9maWVsZHNfID0gWygiYSIsIGNfYnl0ZSwgNCksCiAgICAgICAgICAgICAgICAgICAgICAgICAoImIiLCBjX2ludCwgNCldCi0gICAgICAgIGlmIG9zLm5hbWUgaW4gKCJudCIsICJjZSIpOgorICAgICAgICBpZiBvcy5uYW1lID09ICJudCI6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemVvZihYKSwgc2l6ZW9mKGNfaW50KSoyKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkpCkBAIC0yMjUsNyArMjI0LDcgQEAKICAgICAgICAgIyBNU1ZDIGRvZXMgTk9UIGNvbWJpbmUgY19zaG9ydCBhbmQgY19pbnQgaW50byBvbmUgZmllbGQsIEdDQwogICAgICAgICAjIGRvZXMgKHVubGVzcyBHQ0MgaXMgcnVuIHdpdGggJy1tbXMtYml0ZmllbGRzJyB3aGljaAogICAgICAgICAjIHByb2R1Y2VzIGNvZGUgY29tcGF0aWJsZSB3aXRoIE1TVkMpLgotICAgICAgICBpZiBvcy5uYW1lIGluICgibnQiLCAiY2UiKToKKyAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkgKiA0KQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplb2YoWCksIHNpemVvZihjX2ludCkgKiAyKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2ZpbmQucHkKaW5kZXggOTRiMGI4OS4uYjk5ZmRjYiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZmluZC5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9maW5kLnB5CkBAIC02OSw1ICs2OSw0OCBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGgubGV4aXN0cyh0ZXN0LnN1cHBvcnQuVEVTVEZOKSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmVzdWx0KQogCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdsaW51eCcpLAorICAgICAgICAgICAgICAgICAgICAgJ1Rlc3Qgb25seSB2YWxpZCBmb3IgTGludXgnKQorY2xhc3MgTGliUGF0aEZpbmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9maW5kX29uX2xpYnBhdGgoc2VsZik6CisgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCisgICAgICAgIGltcG9ydCB0ZW1wZmlsZQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsnZ2NjJywgJy0tdmVyc2lvbiddLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuREVWTlVMTCkKKyAgICAgICAgICAgIG91dCwgXyA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdnY2MsIG5lZWRlZCBmb3IgdGVzdCwgbm90IGF2YWlsYWJsZScpCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgZDoKKyAgICAgICAgICAgICMgY3JlYXRlIGFuIGVtcHR5IHRlbXBvcmFyeSBmaWxlCisgICAgICAgICAgICBzcmNuYW1lID0gb3MucGF0aC5qb2luKGQsICdkdW1teS5jJykKKyAgICAgICAgICAgIGxpYm5hbWUgPSAncHlfY3R5cGVzX3Rlc3RfZHVtbXknCisgICAgICAgICAgICBkc3RuYW1lID0gb3MucGF0aC5qb2luKGQsICdsaWIlcy5zbycgJSBsaWJuYW1lKQorICAgICAgICAgICAgd2l0aCBvcGVuKHNyY25hbWUsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMoc3JjbmFtZSkpCisgICAgICAgICAgICAjIGNvbXBpbGUgdGhlIGZpbGUgdG8gYSBzaGFyZWQgbGlicmFyeQorICAgICAgICAgICAgY21kID0gWydnY2MnLCAnLW8nLCBkc3RuYW1lLCAnLS1zaGFyZWQnLAorICAgICAgICAgICAgICAgICAgICctV2wsLXNvbmFtZSxsaWIlcy5zbycgJSBsaWJuYW1lLCBzcmNuYW1lXQorICAgICAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRzdG5hbWUpKQorICAgICAgICAgICAgIyBub3cgY2hlY2sgdGhhdCB0aGUgLnNvIGNhbid0IGJlIGZvdW5kIChzaW5jZSBub3QgaW4KKyAgICAgICAgICAgICMgTERfTElCUkFSWV9QQVRIKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoZmluZF9saWJyYXJ5KGxpYm5hbWUpKQorICAgICAgICAgICAgIyBub3cgYWRkIHRoZSBsb2NhdGlvbiB0byBMRF9MSUJSQVJZX1BBVEgKKyAgICAgICAgICAgIHdpdGggdGVzdC5zdXBwb3J0LkVudmlyb25tZW50VmFyR3VhcmQoKSBhcyBlbnY6CisgICAgICAgICAgICAgICAgS0VZID0gJ0xEX0xJQlJBUllfUEFUSCcKKyAgICAgICAgICAgICAgICBpZiBLRVkgbm90IGluIGVudjoKKyAgICAgICAgICAgICAgICAgICAgdiA9IGQKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB2ID0gJyVzOiVzJyAlIChlbnZbS0VZXSwgZCkKKyAgICAgICAgICAgICAgICBlbnYuc2V0KEtFWSwgdikKKyAgICAgICAgICAgICAgICAjIG5vdyBjaGVjayB0aGF0IHRoZSAuc28gY2FuIGJlIGZvdW5kIChzaW5jZSBpbgorICAgICAgICAgICAgICAgICMgTERfTElCUkFSWV9QQVRIKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9saWJyYXJ5KGxpYm5hbWUpLCAnbGliJXMuc28nICUgbGlibmFtZSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2Z1bmNwdHIucHkKaW5kZXggZmYyNWM4Zi4uZjM0NzM0YiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfZnVuY3B0ci5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9mdW5jcHRyLnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IG9zLCB1bml0dGVzdAoraW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgogCiB0cnk6CkBAIC0zOSw3ICszOSw3IEBACiAgICAgICAgICMgcG9zc2libGUsIGFzIGluIEMsIHRvIGNhbGwgY2RlY2wgZnVuY3Rpb25zIHdpdGggbW9yZSBwYXJhbWV0ZXJzLgogICAgICAgICAjc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjLCAxLCAyLCAzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMoMSwgMiwgMywgNCwgNSwgNiksIDMpCi0gICAgICAgIGlmIG5vdCBXSU5GVU5DVFlQRSBpcyBDRlVOQ1RZUEUgYW5kIG9zLm5hbWUgIT0gImNlIjoKKyAgICAgICAgaWYgbm90IFdJTkZVTkNUWVBFIGlzIENGVU5DVFlQRToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcywgMSwgMiwgMykKIAogICAgIGRlZiB0ZXN0X3N0cnVjdHVyZXMoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfbG9hZGluZy5weQppbmRleCAyODQ2OGMxLi40NTU3MWYzIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9sb2FkaW5nLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X2xvYWRpbmcucHkKQEAgLTExLDggKzExLDYgQEAKICAgICBnbG9iYWwgbGliY19uYW1lCiAgICAgaWYgb3MubmFtZSA9PSAibnQiOgogICAgICAgICBsaWJjX25hbWUgPSBmaW5kX2xpYnJhcnkoImMiKQotICAgIGVsaWYgb3MubmFtZSA9PSAiY2UiOgotICAgICAgICBsaWJjX25hbWUgPSAiY29yZWRsbCIKICAgICBlbGlmIHN5cy5wbGF0Zm9ybSA9PSAiY3lnd2luIjoKICAgICAgICAgbGliY19uYW1lID0gImN5Z3dpbjEuZGxsIgogICAgIGVsc2U6CkBAIC00OSw4ICs0Nyw4IEBACiAgICAgICAgICAgICAgICAgY2RsbC5Mb2FkTGlicmFyeShsaWIpCiAgICAgICAgICAgICAgICAgQ0RMTChsaWIpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lIGluICgibnQiLCAiY2UiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzIChOVC9DRSknKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAndGVzdCBzcGVjaWZpYyB0byBXaW5kb3dzJykKICAgICBkZWYgdGVzdF9sb2FkX2xpYnJhcnkoc2VsZik6CiAgICAgICAgICMgQ1JUIGlzIG5vIGxvbmdlciBkaXJlY3RseSBsb2FkYWJsZS4gU2VlIGlzc3VlMjM2MDYgZm9yIHRoZQogICAgICAgICAjIGRpc2N1c3Npb24gYWJvdXQgYWx0ZXJuYXRpdmUgYXBwcm9hY2hlcy4KQEAgLTY0LDE0ICs2Miw5IEBACiAgICAgICAgICAgICB3aW5kbGxbImtlcm5lbDMyIl0uR2V0TW9kdWxlSGFuZGxlVwogICAgICAgICAgICAgd2luZGxsLkxvYWRMaWJyYXJ5KCJrZXJuZWwzMiIpLkdldE1vZHVsZUhhbmRsZVcKICAgICAgICAgICAgIFdpbkRMTCgia2VybmVsMzIiKS5HZXRNb2R1bGVIYW5kbGVXCi0gICAgICAgIGVsaWYgb3MubmFtZSA9PSAiY2UiOgotICAgICAgICAgICAgd2luZGxsLmNvcmVkbGwuR2V0TW9kdWxlSGFuZGxlVwotICAgICAgICAgICAgd2luZGxsWyJjb3JlZGxsIl0uR2V0TW9kdWxlSGFuZGxlVwotICAgICAgICAgICAgd2luZGxsLkxvYWRMaWJyYXJ5KCJjb3JlZGxsIikuR2V0TW9kdWxlSGFuZGxlVwotICAgICAgICAgICAgV2luRExMKCJjb3JlZGxsIikuR2V0TW9kdWxlSGFuZGxlVwogCi0gICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Mob3MubmFtZSBpbiAoIm50IiwgImNlIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cyAoTlQvQ0UpJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5uYW1lID09ICJudCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3Qgc3BlY2lmaWMgdG8gV2luZG93cycpCiAgICAgZGVmIHRlc3RfbG9hZF9vcmRpbmFsX2Z1bmN0aW9ucyhzZWxmKToKICAgICAgICAgaW1wb3J0IF9jdHlwZXNfdGVzdAogICAgICAgICBkbGwgPSBXaW5ETEwoX2N0eXBlc190ZXN0Ll9fZmlsZV9fKQpkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X29iamVjdHMucHkKaW5kZXggZWY3YjIwYi4uMTllM2RjMSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfb2JqZWN0cy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9vYmplY3RzLnB5CkBAIC01NCw3ICs1NCw3IEBACiAKICcnJwogCi1pbXBvcnQgdW5pdHRlc3QsIGRvY3Rlc3QsIHN5cworaW1wb3J0IHVuaXR0ZXN0LCBkb2N0ZXN0CiAKIGltcG9ydCBjdHlwZXMudGVzdC50ZXN0X29iamVjdHMKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BhcmFtZXRlcnMucHkKaW5kZXggZTU2YmNjZi4uMzYzZjU4NiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGFyYW1ldGVycy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wYXJhbWV0ZXJzLnB5CkBAIC0xLDQgKzEsNCBAQAotaW1wb3J0IHVuaXR0ZXN0LCBzeXMKK2ltcG9ydCB1bml0dGVzdAogZnJvbSBjdHlwZXMudGVzdCBpbXBvcnQgbmVlZF9zeW1ib2wKIAogY2xhc3MgU2ltcGxlVHlwZXNUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC00OSw3ICs0OSw3IEBACiAKICAgICAjIFhYWCBSZXBsYWNlIGJ5IGNfY2hhcl9wIHRlc3RzCiAgICAgZGVmIHRlc3RfY3N0cmluZ3Moc2VsZik6Ci0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX2NoYXJfcCwgYnlyZWYKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IGNfY2hhcl9wCiAKICAgICAgICAgIyBjX2NoYXJfcC5mcm9tX3BhcmFtIG9uIGEgUHl0aG9uIFN0cmluZyBwYWNrcyB0aGUgc3RyaW5nCiAgICAgICAgICMgaW50byBhIGNwYXJhbSBvYmplY3QKQEAgLTY4LDcgKzY4LDcgQEAKIAogICAgIEBuZWVkX3N5bWJvbCgnY193Y2hhcl9wJykKICAgICBkZWYgdGVzdF9jd19zdHJpbmdzKHNlbGYpOgotICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgYnlyZWYsIGNfd2NoYXJfcAorICAgICAgICBmcm9tIGN0eXBlcyBpbXBvcnQgY193Y2hhcl9wCiAKICAgICAgICAgY193Y2hhcl9wLmZyb21fcGFyYW0oIjEyMyIpCiAKQEAgLTk4LDcgKzk4LDcgQEAKICAgICBkZWYgdGVzdF9ieXJlZl9wb2ludGVyKHNlbGYpOgogICAgICAgICAjIFRoZSBmcm9tX3BhcmFtIGNsYXNzIG1ldGhvZCBvZiBQT0lOVEVSKHR5cCkgY2xhc3NlcyBhY2NlcHRzIHdoYXQgaXMKICAgICAgICAgIyByZXR1cm5lZCBieSBieXJlZihvYmopLCBpdCB0eXBlKG9iaikgPT0gdHlwCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3Nob3J0LCBjX3VpbnQsIGNfaW50LCBjX2xvbmcsIHBvaW50ZXIsIFBPSU5URVIsIGJ5cmVmCisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBjX3Nob3J0LCBjX3VpbnQsIGNfaW50LCBjX2xvbmcsIFBPSU5URVIsIGJ5cmVmCiAgICAgICAgIExQSU5UID0gUE9JTlRFUihjX2ludCkKIAogICAgICAgICBMUElOVC5mcm9tX3BhcmFtKGJ5cmVmKGNfaW50KDQyKSkpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5IGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfcGVwMzExOC5weQppbmRleCAzMmY4MDJjLi5kNjgzOTdlIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9wZXAzMTE4LnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3BlcDMxMTgucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY3R5cGVzIGltcG9ydCAqCi1pbXBvcnQgcmUsIHN0cnVjdCwgc3lzCitpbXBvcnQgcmUsIHN5cwogCiBpZiBzeXMuYnl0ZW9yZGVyID09ICJsaXR0bGUiOgogICAgIFRISVNfRU5ESUFOID0gIjwiCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9yZXR1cm5mdW5jcHRycy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5CmluZGV4IDkzZWJhNmIuLjE5NzRmNDAgMTAwNjQ0Ci0tLSBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5CisrKyBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3JldHVybmZ1bmNwdHJzLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGN0eXBlcyBpbXBvcnQgKgotaW1wb3J0IG9zCiAKIGltcG9ydCBfY3R5cGVzX3Rlc3QKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc2l6ZXMucHkgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weQppbmRleCBmOWI1ZTk3Li40Y2VhY2JjIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zaXplcy5weQpAQCAtMiw3ICsyLDYgQEAKIAogZnJvbSBjdHlwZXMgaW1wb3J0ICoKIAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiAKIApkaWZmIC0tZ2l0IGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3N0cnVjdHVyZXMucHkKaW5kZXggYzRhNjUxYy4uOGY2ZmU1ZiAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy90ZXN0L3Rlc3Rfc3RydWN0dXJlcy5weQorKysgYi9MaWIvY3R5cGVzL3Rlc3QvdGVzdF9zdHJ1Y3R1cmVzLnB5CkBAIC0zMjYsMTEgKzMyNiw4IEBACiAKICAgICAgICAgY2xzLCBtc2cgPSBzZWxmLmdldF9leGNlcHQoUGVyc29uLCBiIlNvbWVvbmUiLCAoYiJhIiwgYiJiIiwgYiJjIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2xzLCBSdW50aW1lRXJyb3IpCi0gICAgICAgIGlmIGlzc3ViY2xhc3MoRXhjZXB0aW9uLCBvYmplY3QpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiKFBob25lKSA8Y2xhc3MgJ1R5cGVFcnJvcic+OiB0b28gbWFueSBpbml0aWFsaXplcnMiKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csICIoUGhvbmUpIFR5cGVFcnJvcjogdG9vIG1hbnkgaW5pdGlhbGl6ZXJzIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIoUGhvbmUpIDxjbGFzcyAnVHlwZUVycm9yJz46IHRvbyBtYW55IGluaXRpYWxpemVycyIpCiAKICAgICBkZWYgdGVzdF9odWdlX2ZpZWxkX25hbWUoc2VsZik6CiAgICAgICAgICMgaXNzdWUxMjg4MTogc2VnZmF1bHQgd2l0aCBsYXJnZSBzdHJ1Y3R1cmUgZmllbGQgbmFtZXMKZGlmZiAtLWdpdCBhL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weSBiL0xpYi9jdHlwZXMvdGVzdC90ZXN0X3ZhbHVlcy5weQppbmRleCA1YTNhNDdmLi5lNzFiNDgwIDEwMDY0NAotLS0gYS9MaWIvY3R5cGVzL3Rlc3QvdGVzdF92YWx1ZXMucHkKKysrIGIvTGliL2N0eXBlcy90ZXN0L3Rlc3RfdmFsdWVzLnB5CkBAIC03OSw5ICs3OSw5IEBACiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGl0ZW1zLmFwcGVuZCgoZW50cnkubmFtZS5kZWNvZGUoImFzY2lpIiksIGVudHJ5LnNpemUpKQogCi0gICAgICAgIGV4cGVjdGVkID0gWygiX19oZWxsb19fIiwgMTYxKSwKLSAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fIiwgLTE2MSksCi0gICAgICAgICAgICAgICAgICAgICgiX19waGVsbG9fXy5zcGFtIiwgMTYxKSwKKyAgICAgICAgZXhwZWN0ZWQgPSBbKCJfX2hlbGxvX18iLCAxMzkpLAorICAgICAgICAgICAgICAgICAgICAoIl9fcGhlbGxvX18iLCAtMTM5KSwKKyAgICAgICAgICAgICAgICAgICAgKCJfX3BoZWxsb19fLnNwYW0iLCAxMzkpLAogICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaXRlbXMsIGV4cGVjdGVkLCAiUHlJbXBvcnRfRnJvemVuTW9kdWxlcyBleGFtcGxlICIKICAgICAgICAgICAgICJpbiBEb2MvbGlicmFyeS9jdHlwZXMucnN0IG1heSBiZSBvdXQgb2YgZGF0ZSIpCmRpZmYgLS1naXQgYS9MaWIvY3R5cGVzL3V0aWwucHkgYi9MaWIvY3R5cGVzL3V0aWwucHkKaW5kZXggNzY4NGVhYi4uMzM5YWU4YSAxMDA2NDQKLS0tIGEvTGliL2N0eXBlcy91dGlsLnB5CisrKyBiL0xpYi9jdHlwZXMvdXRpbC5weQpAQCAtNjcsMTYgKzY3LDYgQEAKICAgICAgICAgICAgICAgICByZXR1cm4gZm5hbWUKICAgICAgICAgcmV0dXJuIE5vbmUKIAotaWYgb3MubmFtZSA9PSAiY2UiOgotICAgICMgc2VhcmNoIHBhdGggYWNjb3JkaW5nIHRvIE1TRE46Ci0gICAgIyAtIGFic29sdXRlIHBhdGggc3BlY2lmaWVkIGJ5IGZpbGVuYW1lCi0gICAgIyAtIFRoZSAuZXhlIGxhdW5jaCBkaXJlY3RvcnkKLSAgICAjIC0gdGhlIFdpbmRvd3MgZGlyZWN0b3J5Ci0gICAgIyAtIFJPTSBkbGwgZmlsZXMgKHdoZXJlIGFyZSB0aGV5PykKLSAgICAjIC0gT0VNIHNwZWNpZmllZCBzZWFyY2ggcGF0aDogSEtMTVxMb2FkZXJcU3lzdGVtUGF0aAotICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6Ci0gICAgICAgIHJldHVybiBuYW1lCi0KIGlmIG9zLm5hbWUgPT0gInBvc2l4IiBhbmQgc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iOgogICAgIGZyb20gY3R5cGVzLm1hY2hvbGliLmR5bGQgaW1wb3J0IGR5bGRfZmluZCBhcyBfZHlsZF9maW5kCiAgICAgZGVmIGZpbmRfbGlicmFyeShuYW1lKToKQEAgLTI3MSw4ICsyNjEsOCBAQAogICAgICAgICAgICAgYWJpX3R5cGUgPSBtYWNoX21hcC5nZXQobWFjaGluZSwgJ2xpYmM2JykKIAogICAgICAgICAgICAgIyBYWFggYXNzdW1pbmcgR0xJQkMncyBsZGNvbmZpZyAod2l0aCBvcHRpb24gLXApCi0gICAgICAgICAgICByZWdleCA9IG9zLmZzZW5jb2RlKAotICAgICAgICAgICAgICAgICdccysobGliJXNcLlteXHNdKylccytcKCVzJyAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKSkKKyAgICAgICAgICAgIHJlZ2V4ID0gcidccysobGliJXNcLlteXHNdKylccytcKCVzJworICAgICAgICAgICAgcmVnZXggPSBvcy5mc2VuY29kZShyZWdleCAlIChyZS5lc2NhcGUobmFtZSksIGFiaV90eXBlKSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oWycvc2Jpbi9sZGNvbmZpZycsICctcCddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLkRFVk5VTEwsCkBAIC0yODUsOCArMjc1LDMyIEBACiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICAgICAgZGVmIF9maW5kTGliX2xkKG5hbWUpOgorICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzk5OTggZm9yIHdoeSB0aGlzIGlzIG5lZWRlZAorICAgICAgICAgICAgZXhwciA9IHInW15cKFwpXHNdKmxpYiVzXC5bXlwoXClcc10qJyAlIHJlLmVzY2FwZShuYW1lKQorICAgICAgICAgICAgY21kID0gWydsZCcsICctdCddCisgICAgICAgICAgICBsaWJwYXRoID0gb3MuZW52aXJvbi5nZXQoJ0xEX0xJQlJBUllfUEFUSCcpCisgICAgICAgICAgICBpZiBsaWJwYXRoOgorICAgICAgICAgICAgICAgIGZvciBkIGluIGxpYnBhdGguc3BsaXQoJzonKToKKyAgICAgICAgICAgICAgICAgICAgY21kLmV4dGVuZChbJy1MJywgZF0pCisgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLW8nLCBvcy5kZXZudWxsLCAnLWwlcycgJSBuYW1lXSkKKyAgICAgICAgICAgIHJlc3VsdCA9IE5vbmUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihjbWQsIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICAgICAgICAgICAgICBvdXQsIF8gPSBwLmNvbW11bmljYXRlKCkKKyAgICAgICAgICAgICAgICByZXMgPSByZS5zZWFyY2goZXhwciwgb3MuZnNkZWNvZGUob3V0KSkKKyAgICAgICAgICAgICAgICBpZiByZXM6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHJlcy5ncm91cCgwKQorICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHBhc3MgICMgcmVzdWx0IHdpbGwgYmUgTm9uZQorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAorCiAgICAgICAgIGRlZiBmaW5kX2xpYnJhcnkobmFtZSk6Ci0gICAgICAgICAgICByZXR1cm4gX2ZpbmRTb25hbWVfbGRjb25maWcobmFtZSkgb3IgX2dldF9zb25hbWUoX2ZpbmRMaWJfZ2NjKG5hbWUpKQorICAgICAgICAgICAgIyBTZWUgaXNzdWUgIzk5OTgKKyAgICAgICAgICAgIHJldHVybiBfZmluZFNvbmFtZV9sZGNvbmZpZyhuYW1lKSBvciBcCisgICAgICAgICAgICAgICAgICAgX2dldF9zb25hbWUoX2ZpbmRMaWJfZ2NjKG5hbWUpIG9yIF9maW5kTGliX2xkKG5hbWUpKQogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIHRlc3QgY29kZQpkaWZmIC0tZ2l0IGEvTGliL2RhdGV0aW1lLnB5IGIvTGliL2RhdGV0aW1lLnB5CmluZGV4IGEyMTc4YzcuLjM2Mzc0YWEgMTAwNjQ0Ci0tLSBhL0xpYi9kYXRldGltZS5weQorKysgYi9MaWIvZGF0ZXRpbWUucHkKQEAgLTE1MiwxMiArMTUyLDI2IEBACiAgICAgZG51bSA9IF9kYXlzX2JlZm9yZV9tb250aCh5LCBtKSArIGQKICAgICByZXR1cm4gX3RpbWUuc3RydWN0X3RpbWUoKHksIG0sIGQsIGhoLCBtbSwgc3MsIHdkYXksIGRudW0sIGRzdGZsYWcpKQogCi1kZWYgX2Zvcm1hdF90aW1lKGhoLCBtbSwgc3MsIHVzKToKLSAgICAjIFNraXAgdHJhaWxpbmcgbWljcm9zZWNvbmRzIHdoZW4gdXM9PTAuCi0gICAgcmVzdWx0ID0gIiUwMmQ6JTAyZDolMDJkIiAlIChoaCwgbW0sIHNzKQotICAgIGlmIHVzOgotICAgICAgICByZXN1bHQgKz0gIi4lMDZkIiAlIHVzCi0gICAgcmV0dXJuIHJlc3VsdAorZGVmIF9mb3JtYXRfdGltZShoaCwgbW0sIHNzLCB1cywgdGltZXNwZWM9J2F1dG8nKToKKyAgICBzcGVjcyA9IHsKKyAgICAgICAgJ2hvdXJzJzogJ3s6MDJkfScsCisgICAgICAgICdtaW51dGVzJzogJ3s6MDJkfTp7OjAyZH0nLAorICAgICAgICAnc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfScsCisgICAgICAgICdtaWxsaXNlY29uZHMnOiAnezowMmR9Ons6MDJkfTp7OjAyZH0uezowM2R9JywKKyAgICAgICAgJ21pY3Jvc2Vjb25kcyc6ICd7OjAyZH06ezowMmR9Ons6MDJkfS57OjA2ZH0nCisgICAgfQorCisgICAgaWYgdGltZXNwZWMgPT0gJ2F1dG8nOgorICAgICAgICAjIFNraXAgdHJhaWxpbmcgbWljcm9zZWNvbmRzIHdoZW4gdXM9PTAuCisgICAgICAgIHRpbWVzcGVjID0gJ21pY3Jvc2Vjb25kcycgaWYgdXMgZWxzZSAnc2Vjb25kcycKKyAgICBlbGlmIHRpbWVzcGVjID09ICdtaWxsaXNlY29uZHMnOgorICAgICAgICB1cyAvLz0gMTAwMAorICAgIHRyeToKKyAgICAgICAgZm10ID0gc3BlY3NbdGltZXNwZWNdCisgICAgZXhjZXB0IEtleUVycm9yOgorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdVbmtub3duIHRpbWVzcGVjIHZhbHVlJykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gZm10LmZvcm1hdChoaCwgbW0sIHNzLCB1cykKIAogIyBDb3JyZWN0bHkgc3Vic3RpdHV0ZSBmb3IgJXogYW5kICVaIGVzY2FwZXMgaW4gc3RyZnRpbWUgZm9ybWF0cy4KIGRlZiBfd3JhcF9zdHJmdGltZShvYmplY3QsIGZvcm1hdCwgdGltZXR1cGxlKToKQEAgLTIzNiwxMSArMjUwLDExIEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2Uob2Zmc2V0LCB0aW1lZGVsdGEpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoInR6aW5mby4lcygpIG11c3QgcmV0dXJuIE5vbmUgIgogICAgICAgICAgICAgICAgICAgICAgICAgIm9yIHRpbWVkZWx0YSwgbm90ICclcyciICUgKG5hbWUsIHR5cGUob2Zmc2V0KSkpCi0gICAgaWYgb2Zmc2V0ICUgdGltZWRlbHRhKG1pbnV0ZXM9MSkgb3Igb2Zmc2V0Lm1pY3Jvc2Vjb25kczoKKyAgICBpZiBvZmZzZXQubWljcm9zZWNvbmRzOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJ0emluZm8uJXMoKSBtdXN0IHJldHVybiBhIHdob2xlIG51bWJlciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgIm9mIG1pbnV0ZXMsIGdvdCAlcyIgJSAobmFtZSwgb2Zmc2V0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAib2Ygc2Vjb25kcywgZ290ICVzIiAlIChuYW1lLCBvZmZzZXQpKQogICAgIGlmIG5vdCAtdGltZWRlbHRhKDEpIDwgb2Zmc2V0IDwgdGltZWRlbHRhKDEpOgotICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlcygpPSVzLCBtdXN0IGJlIG11c3QgYmUgc3RyaWN0bHkgYmV0d2VlbiAiCisgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVzKCk9JXMsIG11c3QgYmUgc3RyaWN0bHkgYmV0d2VlbiAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIi10aW1lZGVsdGEoaG91cnM9MjQpIGFuZCB0aW1lZGVsdGEoaG91cnM9MjQpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIG9mZnNldCkpCiAKQEAgLTI3NCw3ICsyODgsNyBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdkYXkgbXVzdCBiZSBpbiAxLi4lZCcgJSBkaW0sIGRheSkKICAgICByZXR1cm4geWVhciwgbW9udGgsIGRheQogCi1kZWYgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCk6CitkZWYgX2NoZWNrX3RpbWVfZmllbGRzKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgZm9sZCk6CiAgICAgaG91ciA9IF9jaGVja19pbnRfZmllbGQoaG91cikKICAgICBtaW51dGUgPSBfY2hlY2tfaW50X2ZpZWxkKG1pbnV0ZSkKICAgICBzZWNvbmQgPSBfY2hlY2tfaW50X2ZpZWxkKHNlY29uZCkKQEAgLTI4Nyw3ICszMDEsOSBAQAogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdzZWNvbmQgbXVzdCBiZSBpbiAwLi41OScsIHNlY29uZCkKICAgICBpZiBub3QgMCA8PSBtaWNyb3NlY29uZCA8PSA5OTk5OTk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ21pY3Jvc2Vjb25kIG11c3QgYmUgaW4gMC4uOTk5OTk5JywgbWljcm9zZWNvbmQpCi0gICAgcmV0dXJuIGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZAorICAgIGlmIGZvbGQgbm90IGluICgwLCAxKToKKyAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZm9sZCBtdXN0IGJlIGVpdGhlciAwIG9yIDEnLCBmb2xkKQorICAgIHJldHVybiBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQKIAogZGVmIF9jaGVja190emluZm9fYXJnKHR6KToKICAgICBpZiB0eiBpcyBub3QgTm9uZSBhbmQgbm90IGlzaW5zdGFuY2UodHosIHR6aW5mbyk6CkBAIC0zMTYsNiArMzMyLDcgQEAKIAogICAgIHJldHVybiBxCiAKKwogY2xhc3MgdGltZWRlbHRhOgogICAgICIiIlJlcHJlc2VudCB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHR3byBkYXRldGltZSBvYmplY3RzLgogCkBAIC05MTUsNyArOTMyLDcgQEAKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKLSAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgorICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgIHloaSwgeWxvID0gZGl2bW9kKHNlbGYuX3llYXIsIDI1NikKICAgICAgICAgcmV0dXJuIGJ5dGVzKFt5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheV0pLAogCkBAIC05MjMsOCArOTQwLDggQEAKICAgICAgICAgeWhpLCB5bG8sIHNlbGYuX21vbnRoLCBzZWxmLl9kYXkgPSBzdHJpbmcKICAgICAgICAgc2VsZi5feWVhciA9IHloaSAqIDI1NiArIHlsbwogCi0gICAgZGVmIF9fcmVkdWNlX18oc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5fX2NsYXNzX18sIHNlbGYuX2dldHN0YXRlKCkpCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZShwcm90b2NvbCkpCiAKIF9kYXRlX2NsYXNzID0gZGF0ZSAgIyBzbyBmdW5jdGlvbnMgdy8gYXJncyBuYW1lZCAiZGF0ZSIgY2FuIGdldCBhdCB0aGUgY2xhc3MKIApAQCAtOTMyLDYgKzk0OSw3IEBACiBkYXRlLm1heCA9IGRhdGUoOTk5OSwgMTIsIDMxKQogZGF0ZS5yZXNvbHV0aW9uID0gdGltZWRlbHRhKGRheXM9MSkKIAorCiBjbGFzcyB0emluZm86CiAgICAgIiIiQWJzdHJhY3QgYmFzZSBjbGFzcyBmb3IgdGltZSB6b25lIGluZm8gY2xhc3Nlcy4KIApAQCAtMTAyMywxMSArMTA0MSwxMSBAQAogICAgIGRzdCgpCiAKICAgICBQcm9wZXJ0aWVzIChyZWFkb25seSk6Ci0gICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8KKyAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZAogICAgICIiIgotICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJworICAgIF9fc2xvdHNfXyA9ICdfaG91cicsICdfbWludXRlJywgJ19zZWNvbmQnLCAnX21pY3Jvc2Vjb25kJywgJ190emluZm8nLCAnX2hhc2hjb2RlJywgJ19mb2xkJwogCi0gICAgZGVmIF9fbmV3X18oY2xzLCBob3VyPTAsIG1pbnV0ZT0wLCBzZWNvbmQ9MCwgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgorICAgIGRlZiBfX25ld19fKGNscywgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsIG1pY3Jvc2Vjb25kPTAsIHR6aW5mbz1Ob25lLCAqLCBmb2xkPTApOgogICAgICAgICAiIiJDb25zdHJ1Y3Rvci4KIAogICAgICAgICBBcmd1bWVudHM6CkBAIC0xMDM1LDE1ICsxMDUzLDE2IEBACiAgICAgICAgIGhvdXIsIG1pbnV0ZSAocmVxdWlyZWQpCiAgICAgICAgIHNlY29uZCwgbWljcm9zZWNvbmQgKGRlZmF1bHQgdG8gemVybykKICAgICAgICAgdHppbmZvIChkZWZhdWx0IHRvIE5vbmUpCisgICAgICAgIGZvbGQgKGtleXdvcmQgb25seSwgZGVmYXVsdCB0byBUcnVlKQogICAgICAgICAiIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShob3VyLCBieXRlcykgYW5kIGxlbihob3VyKSA9PSA2IGFuZCBob3VyWzBdIDwgMjQ6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoaG91ciwgYnl0ZXMpIGFuZCBsZW4oaG91cikgPT0gNiBhbmQgaG91clswXSYweDdGIDwgMjQ6CiAgICAgICAgICAgICAjIFBpY2tsZSBzdXBwb3J0CiAgICAgICAgICAgICBzZWxmID0gb2JqZWN0Ll9fbmV3X18oY2xzKQogICAgICAgICAgICAgc2VsZi5fX3NldHN0YXRlKGhvdXIsIG1pbnV0ZSBvciBOb25lKQogICAgICAgICAgICAgc2VsZi5faGFzaGNvZGUgPSAtMQogICAgICAgICAgICAgcmV0dXJuIHNlbGYKLSAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kID0gX2NoZWNrX3RpbWVfZmllbGRzKAotICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgc2VsZi5faG91ciA9IGhvdXIKQEAgLTEwNTIsNiArMTA3MSw3IEBACiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gbWljcm9zZWNvbmQKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKKyAgICAgICAgc2VsZi5fZm9sZCA9IGZvbGQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICMgUmVhZC1vbmx5IGZpZWxkIGFjY2Vzc29ycwpAQCAtMTA4MCw2ICsxMTAwLDEwIEBACiAgICAgICAgICIiInRpbWV6b25lIGluZm8gb2JqZWN0IiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90emluZm8KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZAorCiAgICAgIyBTdGFuZGFyZCBjb252ZXJzaW9ucywgX19oYXNoX18gKGFuZCBoZWxwZXJzKQogCiAgICAgIyBDb21wYXJpc29ucyBvZiB0aW1lIG9iamVjdHMgd2l0aCBvdGhlci4KQEAgLTExNDUsOSArMTE2OSwxMyBAQAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgIiIiSGFzaC4iIiIKICAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6Ci0gICAgICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuZm9sZDoKKyAgICAgICAgICAgICAgICB0ID0gc2VsZi5yZXBsYWNlKGZvbGQ9MCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYKKyAgICAgICAgICAgIHR6b2ZmID0gdC51dGNvZmZzZXQoKQogICAgICAgICAgICAgaWYgbm90IHR6b2ZmOiAgIyB6ZXJvIG9yIE5vbmUKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godC5fZ2V0c3RhdGUoKVswXSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgaCwgbSA9IGRpdm1vZCh0aW1lZGVsdGEoaG91cnM9c2VsZi5ob3VyLCBtaW51dGVzPXNlbGYubWludXRlKSAtIHR6b2ZmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltZWRlbHRhKGhvdXJzPTEpKQpAQCAtMTE3MSwxMCArMTE5OSwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzaWduID0gIisiCiAgICAgICAgICAgICBoaCwgbW0gPSBkaXZtb2Qob2ZmLCB0aW1lZGVsdGEoaG91cnM9MSkpCi0gICAgICAgICAgICBhc3NlcnQgbm90IG1tICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCi0gICAgICAgICAgICBtbSAvLz0gdGltZWRlbHRhKG1pbnV0ZXM9MSkKKyAgICAgICAgICAgIG1tLCBzcyA9IGRpdm1vZChtbSwgdGltZWRlbHRhKG1pbnV0ZXM9MSkpCiAgICAgICAgICAgICBhc3NlcnQgMCA8PSBoaCA8IDI0CiAgICAgICAgICAgICBvZmYgPSAiJXMlMDJkJXMlMDJkIiAlIChzaWduLCBoaCwgc2VwLCBtbSkKKyAgICAgICAgICAgIGlmIHNzOgorICAgICAgICAgICAgICAgIG9mZiArPSAnOiUwMmQnICUgc3Muc2Vjb25kcwogICAgICAgICByZXR1cm4gb2ZmCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC0xMTkxLDE2ICsxMjIwLDIyIEBACiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCiAgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgdHppbmZvPSVyIiAlIHNlbGYuX3R6aW5mbyArICIpIgorICAgICAgICBpZiBzZWxmLl9mb2xkOgorICAgICAgICAgICAgYXNzZXJ0IHNbLTE6XSA9PSAiKSIKKyAgICAgICAgICAgIHMgPSBzWzotMV0gKyAiLCBmb2xkPTEpIgogICAgICAgICByZXR1cm4gcwogCi0gICAgZGVmIGlzb2Zvcm1hdChzZWxmKToKKyAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHRpbWVzcGVjPSdhdXRvJyk6CiAgICAgICAgICIiIlJldHVybiB0aGUgdGltZSBmb3JtYXR0ZWQgYWNjb3JkaW5nIHRvIElTTy4KIAotICAgICAgICBUaGlzIGlzICdISDpNTTpTUy5tbW1tbW0reno6enonLCBvciAnSEg6TU06U1Mreno6enonIGlmCi0gICAgICAgIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKyAgICAgICAgVGhlIGZ1bGwgZm9ybWF0IGlzICdISDpNTTpTUy5tbW1tbW0reno6enonLiBCeSBkZWZhdWx0LCB0aGUgZnJhY3Rpb25hbAorICAgICAgICBwYXJ0IGlzIG9taXR0ZWQgaWYgc2VsZi5taWNyb3NlY29uZCA9PSAwLgorCisgICAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICAgICAgIHRlcm1zIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuCiAgICAgICAgICIiIgogICAgICAgICBzID0gX2Zvcm1hdF90aW1lKHNlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKQorICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9taWNyb3NlY29uZCwgdGltZXNwZWMpCiAgICAgICAgIHR6ID0gc2VsZi5fdHpzdHIoKQogICAgICAgICBpZiB0ejoKICAgICAgICAgICAgIHMgKz0gdHoKQEAgLTEyNjYsNyArMTMwMSw3IEBACiAgICAgICAgIHJldHVybiBvZmZzZXQKIAogICAgIGRlZiByZXBsYWNlKHNlbGYsIGhvdXI9Tm9uZSwgbWludXRlPU5vbmUsIHNlY29uZD1Ob25lLCBtaWNyb3NlY29uZD1Ob25lLAotICAgICAgICAgICAgICAgIHR6aW5mbz1UcnVlKToKKyAgICAgICAgICAgICAgICB0emluZm89VHJ1ZSwgKiwgZm9sZD1Ob25lKToKICAgICAgICAgIiIiUmV0dXJuIGEgbmV3IHRpbWUgd2l0aCBuZXcgdmFsdWVzIGZvciB0aGUgc3BlY2lmaWVkIGZpZWxkcy4iIiIKICAgICAgICAgaWYgaG91ciBpcyBOb25lOgogICAgICAgICAgICAgaG91ciA9IHNlbGYuaG91cgpAQCAtMTI3OCwxNCArMTMxMywxOSBAQAogICAgICAgICAgICAgbWljcm9zZWNvbmQgPSBzZWxmLm1pY3Jvc2Vjb25kCiAgICAgICAgIGlmIHR6aW5mbyBpcyBUcnVlOgogICAgICAgICAgICAgdHppbmZvID0gc2VsZi50emluZm8KLSAgICAgICAgcmV0dXJuIHRpbWUoaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLCB0emluZm8pCisgICAgICAgIGlmIGZvbGQgaXMgTm9uZToKKyAgICAgICAgICAgIGZvbGQgPSBzZWxmLl9mb2xkCisgICAgICAgIHJldHVybiB0aW1lKGhvdXIsIG1pbnV0ZSwgc2Vjb25kLCBtaWNyb3NlY29uZCwgdHppbmZvLCBmb2xkPWZvbGQpCiAKICAgICAjIFBpY2tsZSBzdXBwb3J0LgogCi0gICAgZGVmIF9nZXRzdGF0ZShzZWxmKToKKyAgICBkZWYgX2dldHN0YXRlKHNlbGYsIHByb3RvY29sPTMpOgogICAgICAgICB1czIsIHVzMyA9IGRpdm1vZChzZWxmLl9taWNyb3NlY29uZCwgMjU2KQogICAgICAgICB1czEsIHVzMiA9IGRpdm1vZCh1czIsIDI1NikKLSAgICAgICAgYmFzZXN0YXRlID0gYnl0ZXMoW3NlbGYuX2hvdXIsIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLAorICAgICAgICBoID0gc2VsZi5faG91cgorICAgICAgICBpZiBzZWxmLl9mb2xkIGFuZCBwcm90b2NvbCA+IDM6CisgICAgICAgICAgICBoICs9IDEyOAorICAgICAgICBiYXNlc3RhdGUgPSBieXRlcyhbaCwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1czEsIHVzMiwgdXMzXSkKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gKGJhc2VzdGF0ZSwpCkBAIC0xMjk1LDEyICsxMzM1LDE4IEBACiAgICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nLCB0emluZm8pOgogICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnIikKLSAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKKyAgICAgICAgaCwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsIHVzMSwgdXMyLCB1czMgPSBzdHJpbmcKKyAgICAgICAgaWYgaCA+IDEyNzoKKyAgICAgICAgICAgIHNlbGYuX2ZvbGQgPSAxCisgICAgICAgICAgICBzZWxmLl9ob3VyID0gaCAtIDEyOAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDAKKyAgICAgICAgICAgIHNlbGYuX2hvdXIgPSBoCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHRpbWUsIHNlbGYuX2dldHN0YXRlKCkpCisgICAgZGVmIF9fcmVkdWNlX2V4X18oc2VsZiwgcHJvdG9jb2wpOgorICAgICAgICByZXR1cm4gKHRpbWUsIHNlbGYuX2dldHN0YXRlKHByb3RvY29sKSkKIAogX3RpbWVfY2xhc3MgPSB0aW1lICAjIHNvIGZ1bmN0aW9ucyB3LyBhcmdzIG5hbWVkICJ0aW1lIiBjYW4gZ2V0IGF0IHRoZSBjbGFzcwogCkBAIC0xMzE3LDE2ICsxMzYzLDE2IEBACiAgICAgX19zbG90c19fID0gZGF0ZS5fX3Nsb3RzX18gKyB0aW1lLl9fc2xvdHNfXwogCiAgICAgZGVmIF9fbmV3X18oY2xzLCB5ZWFyLCBtb250aD1Ob25lLCBkYXk9Tm9uZSwgaG91cj0wLCBtaW51dGU9MCwgc2Vjb25kPTAsCi0gICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUpOgotICAgICAgICBpZiBpc2luc3RhbmNlKHllYXIsIGJ5dGVzKSBhbmQgbGVuKHllYXIpID09IDEwIGFuZCAxIDw9IHllYXJbMl0gPD0gMTI6CisgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQ9MCwgdHppbmZvPU5vbmUsICosIGZvbGQ9MCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoeWVhciwgYnl0ZXMpIGFuZCBsZW4oeWVhcikgPT0gMTAgYW5kIDEgPD0geWVhclsyXSYweDdGIDw9IDEyOgogICAgICAgICAgICAgIyBQaWNrbGUgc3VwcG9ydAogICAgICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgICAgIHNlbGYuX19zZXRzdGF0ZSh5ZWFyLCBtb250aCkKICAgICAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKICAgICAgICAgICAgIHJldHVybiBzZWxmCiAgICAgICAgIHllYXIsIG1vbnRoLCBkYXkgPSBfY2hlY2tfZGF0ZV9maWVsZHMoeWVhciwgbW9udGgsIGRheSkKLSAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kID0gX2NoZWNrX3RpbWVfZmllbGRzKAotICAgICAgICAgICAgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kKQorICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQgPSBfY2hlY2tfdGltZV9maWVsZHMoCisgICAgICAgICAgICBob3VyLCBtaW51dGUsIHNlY29uZCwgbWljcm9zZWNvbmQsIGZvbGQpCiAgICAgICAgIF9jaGVja190emluZm9fYXJnKHR6aW5mbykKICAgICAgICAgc2VsZiA9IG9iamVjdC5fX25ld19fKGNscykKICAgICAgICAgc2VsZi5feWVhciA9IHllYXIKQEAgLTEzMzgsNiArMTM4NCw3IEBACiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gbWljcm9zZWNvbmQKICAgICAgICAgc2VsZi5fdHppbmZvID0gdHppbmZvCiAgICAgICAgIHNlbGYuX2hhc2hjb2RlID0gLTEKKyAgICAgICAgc2VsZi5fZm9sZCA9IGZvbGQKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICMgUmVhZC1vbmx5IGZpZWxkIGFjY2Vzc29ycwpAQCAtMTM2Niw2ICsxNDEzLDEwIEBACiAgICAgICAgICIiInRpbWV6b25lIGluZm8gb2JqZWN0IiIiCiAgICAgICAgIHJldHVybiBzZWxmLl90emluZm8KIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiBmb2xkKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZm9sZAorCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9mcm9tdGltZXN0YW1wKGNscywgdCwgdXRjLCB0eik6CiAgICAgICAgICIiIkNvbnN0cnVjdCBhIGRhdGV0aW1lIGZyb20gYSBQT1NJWCB0aW1lc3RhbXAgKGxpa2UgdGltZS50aW1lKCkpLgpAQCAtMTM4NCw3ICsxNDM1LDIzIEBACiAgICAgICAgIGNvbnZlcnRlciA9IF90aW1lLmdtdGltZSBpZiB1dGMgZWxzZSBfdGltZS5sb2NhbHRpbWUKICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcywgd2Vla2RheSwgamRheSwgZHN0ID0gY29udmVydGVyKHQpCiAgICAgICAgIHNzID0gbWluKHNzLCA1OSkgICAgIyBjbGFtcCBvdXQgbGVhcCBzZWNvbmRzIGlmIHRoZSBwbGF0Zm9ybSBoYXMgdGhlbQotICAgICAgICByZXR1cm4gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgcmVzdWx0ID0gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgaWYgdHogaXMgTm9uZToKKyAgICAgICAgICAgICMgQXMgb2YgdmVyc2lvbiAyMDE1ZiBtYXggZm9sZCBpbiBJQU5BIGRhdGFiYXNlIGlzCisgICAgICAgICAgICAjIDIzIGhvdXJzIGF0IDE5NjktMDktMzAgMTM6MDA6MDAgaW4gS3dhamFsZWluLgorICAgICAgICAgICAgIyBMZXQncyBwcm9iZSAyNCBob3VycyBpbiB0aGUgcGFzdCB0byBkZXRlY3QgYSB0cmFuc2l0aW9uOgorICAgICAgICAgICAgbWF4X2ZvbGRfc2Vjb25kcyA9IDI0ICogMzYwMAorICAgICAgICAgICAgeSwgbSwgZCwgaGgsIG1tLCBzcyA9IGNvbnZlcnRlcih0IC0gbWF4X2ZvbGRfc2Vjb25kcylbOjZdCisgICAgICAgICAgICBwcm9iZTEgPSBjbHMoeSwgbSwgZCwgaGgsIG1tLCBzcywgdXMsIHR6KQorICAgICAgICAgICAgdHJhbnMgPSByZXN1bHQgLSBwcm9iZTEgLSB0aW1lZGVsdGEoMCwgbWF4X2ZvbGRfc2Vjb25kcykKKyAgICAgICAgICAgIGlmIHRyYW5zLmRheXMgPCAwOgorICAgICAgICAgICAgICAgIHksIG0sIGQsIGhoLCBtbSwgc3MgPSBjb252ZXJ0ZXIodCArIHRyYW5zIC8vIHRpbWVkZWx0YSgwLCAxKSlbOjZdCisgICAgICAgICAgICAgICAgcHJvYmUyID0gY2xzKHksIG0sIGQsIGhoLCBtbSwgc3MsIHVzLCB0eikKKyAgICAgICAgICAgICAgICBpZiBwcm9iZTIgPT0gcmVzdWx0OgorICAgICAgICAgICAgICAgICAgICByZXN1bHQuX2ZvbGQgPSAxCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXN1bHQgPSB0ei5mcm9tdXRjKHJlc3VsdCkKKyAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZyb210aW1lc3RhbXAoY2xzLCB0LCB0ej1Ob25lKToKQEAgLTEzOTQsMTAgKzE0NjEsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgX2NoZWNrX3R6aW5mb19hcmcodHopCiAKLSAgICAgICAgcmVzdWx0ID0gY2xzLl9mcm9tdGltZXN0YW1wKHQsIHR6IGlzIG5vdCBOb25lLCB0eikKLSAgICAgICAgaWYgdHogaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICByZXN1bHQgPSB0ei5mcm9tdXRjKHJlc3VsdCkKLSAgICAgICAgcmV0dXJuIHJlc3VsdAorICAgICAgICByZXR1cm4gY2xzLl9mcm9tdGltZXN0YW1wKHQsIHR6IGlzIG5vdCBOb25lLCB0eikKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB1dGNmcm9tdGltZXN0YW1wKGNscywgdCk6CkBAIC0xNDE3LDE1ICsxNDgxLDE3IEBACiAgICAgICAgIHJldHVybiBjbHMudXRjZnJvbXRpbWVzdGFtcCh0KQogCiAgICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIGNvbWJpbmUoY2xzLCBkYXRlLCB0aW1lKToKKyAgICBkZWYgY29tYmluZShjbHMsIGRhdGUsIHRpbWUsIHR6aW5mbz1UcnVlKToKICAgICAgICAgIkNvbnN0cnVjdCBhIGRhdGV0aW1lIGZyb20gYSBnaXZlbiBkYXRlIGFuZCBhIGdpdmVuIHRpbWUuIgogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkYXRlLCBfZGF0ZV9jbGFzcyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRhdGUgYXJndW1lbnQgbXVzdCBiZSBhIGRhdGUgaW5zdGFuY2UiKQogICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0aW1lLCBfdGltZV9jbGFzcyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRpbWUgYXJndW1lbnQgbXVzdCBiZSBhIHRpbWUgaW5zdGFuY2UiKQorICAgICAgICBpZiB0emluZm8gaXMgVHJ1ZToKKyAgICAgICAgICAgIHR6aW5mbyA9IHRpbWUudHppbmZvCiAgICAgICAgIHJldHVybiBjbHMoZGF0ZS55ZWFyLCBkYXRlLm1vbnRoLCBkYXRlLmRheSwKICAgICAgICAgICAgICAgICAgICB0aW1lLmhvdXIsIHRpbWUubWludXRlLCB0aW1lLnNlY29uZCwgdGltZS5taWNyb3NlY29uZCwKLSAgICAgICAgICAgICAgICAgICB0aW1lLnR6aW5mbykKKyAgICAgICAgICAgICAgICAgICB0emluZm8sIGZvbGQ9dGltZS5mb2xkKQogCiAgICAgZGVmIHRpbWV0dXBsZShzZWxmKToKICAgICAgICAgIlJldHVybiBsb2NhbCB0aW1lIHR1cGxlIGNvbXBhdGlibGUgd2l0aCB0aW1lLmxvY2FsdGltZSgpLiIKQEAgLTE0NDAsMTIgKzE1MDYsNDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3QpCiAKKyAgICBkZWYgX21rdGltZShzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIGludGVnZXIgUE9TSVggdGltZXN0YW1wLiIiIgorICAgICAgICBlcG9jaCA9IGRhdGV0aW1lKDE5NzAsIDEsIDEpCisgICAgICAgIG1heF9mb2xkX3NlY29uZHMgPSAyNCAqIDM2MDAKKyAgICAgICAgdCA9IChzZWxmIC0gZXBvY2gpIC8vIHRpbWVkZWx0YSgwLCAxKQorICAgICAgICBkZWYgbG9jYWwodSk6CisgICAgICAgICAgICB5LCBtLCBkLCBoaCwgbW0sIHNzID0gX3RpbWUubG9jYWx0aW1lKHUpWzo2XQorICAgICAgICAgICAgcmV0dXJuIChkYXRldGltZSh5LCBtLCBkLCBoaCwgbW0sIHNzKSAtIGVwb2NoKSAvLyB0aW1lZGVsdGEoMCwgMSkKKworICAgICAgICAjIE91ciBnb2FsIGlzIHRvIHNvbHZlIHQgPSBsb2NhbCh1KSBmb3IgdS4KKyAgICAgICAgYSA9IGxvY2FsKHQpIC0gdAorICAgICAgICB1MSA9IHQgLSBhCisgICAgICAgIHQxID0gbG9jYWwodTEpCisgICAgICAgIGlmIHQxID09IHQ6CisgICAgICAgICAgICAjIFdlIGZvdW5kIG9uZSBzb2x1dGlvbiwgYnV0IGl0IG1heSBub3QgYmUgdGhlIG9uZSB3ZSBuZWVkLgorICAgICAgICAgICAgIyBMb29rIGZvciBhbiBlYXJsaWVyIHNvbHV0aW9uIChpZiBgZm9sZGAgaXMgMCksIG9yIGEKKyAgICAgICAgICAgICMgbGF0ZXIgb25lIChpZiBgZm9sZGAgaXMgMSkuCisgICAgICAgICAgICB1MiA9IHUxICsgKC1tYXhfZm9sZF9zZWNvbmRzLCBtYXhfZm9sZF9zZWNvbmRzKVtzZWxmLmZvbGRdCisgICAgICAgICAgICBiID0gbG9jYWwodTIpIC0gdTIKKyAgICAgICAgICAgIGlmIGEgPT0gYjoKKyAgICAgICAgICAgICAgICByZXR1cm4gdTEKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGIgPSB0MSAtIHUxCisgICAgICAgICAgICBhc3NlcnQgYSAhPSBiCisgICAgICAgIHUyID0gdCAtIGIKKyAgICAgICAgdDIgPSBsb2NhbCh1MikKKyAgICAgICAgaWYgdDIgPT0gdDoKKyAgICAgICAgICAgIHJldHVybiB1MgorICAgICAgICBpZiB0MSA9PSB0OgorICAgICAgICAgICAgcmV0dXJuIHUxCisgICAgICAgICMgV2UgaGF2ZSBmb3VuZCBib3RoIG9mZnNldHMgYSBhbmQgYiwgYnV0IG5laXRoZXIgdCAtIGEgbm9yIHQgLSBiIGlzCisgICAgICAgICMgYSBzb2x1dGlvbi4gIFRoaXMgbWVhbnMgdCBpcyBpbiB0aGUgZ2FwLgorICAgICAgICByZXR1cm4gKG1heCwgbWluKVtzZWxmLmZvbGRdKHUxLCB1MikKKworCiAgICAgZGVmIHRpbWVzdGFtcChzZWxmKToKICAgICAgICAgIlJldHVybiBQT1NJWCB0aW1lc3RhbXAgYXMgZmxvYXQiCiAgICAgICAgIGlmIHNlbGYuX3R6aW5mbyBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuIF90aW1lLm1rdGltZSgoc2VsZi55ZWFyLCBzZWxmLm1vbnRoLCBzZWxmLmRheSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaG91ciwgc2VsZi5taW51dGUsIHNlbGYuc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLTEsIC0xLCAtMSkpICsgc2VsZi5taWNyb3NlY29uZCAvIDFlNgorICAgICAgICAgICAgcyA9IHNlbGYuX21rdGltZSgpCisgICAgICAgICAgICByZXR1cm4gcyArIHNlbGYubWljcm9zZWNvbmQgLyAxZTYKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiAoc2VsZiAtIF9FUE9DSCkudG90YWxfc2Vjb25kcygpCiAKQEAgLTE0NjQsMTUgKzE1NjQsMTYgQEAKIAogICAgIGRlZiB0aW1lKHNlbGYpOgogICAgICAgICAiUmV0dXJuIHRoZSB0aW1lIHBhcnQsIHdpdGggdHppbmZvIE5vbmUuIgotICAgICAgICByZXR1cm4gdGltZShzZWxmLmhvdXIsIHNlbGYubWludXRlLCBzZWxmLnNlY29uZCwgc2VsZi5taWNyb3NlY29uZCkKKyAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQsIGZvbGQ9c2VsZi5mb2xkKQogCiAgICAgZGVmIHRpbWV0eihzZWxmKToKICAgICAgICAgIlJldHVybiB0aGUgdGltZSBwYXJ0LCB3aXRoIHNhbWUgdHppbmZvLiIKICAgICAgICAgcmV0dXJuIHRpbWUoc2VsZi5ob3VyLCBzZWxmLm1pbnV0ZSwgc2VsZi5zZWNvbmQsIHNlbGYubWljcm9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgIHNlbGYuX3R6aW5mbykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fdHppbmZvLCBmb2xkPXNlbGYuZm9sZCkKIAogICAgIGRlZiByZXBsYWNlKHNlbGYsIHllYXI9Tm9uZSwgbW9udGg9Tm9uZSwgZGF5PU5vbmUsIGhvdXI9Tm9uZSwKLSAgICAgICAgICAgICAgICBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsIHR6aW5mbz1UcnVlKToKKyAgICAgICAgICAgICAgICBtaW51dGU9Tm9uZSwgc2Vjb25kPU5vbmUsIG1pY3Jvc2Vjb25kPU5vbmUsIHR6aW5mbz1UcnVlLAorICAgICAgICAgICAgICAgICosIGZvbGQ9Tm9uZSk6CiAgICAgICAgICIiIlJldHVybiBhIG5ldyBkYXRldGltZSB3aXRoIG5ldyB2YWx1ZXMgZm9yIHRoZSBzcGVjaWZpZWQgZmllbGRzLiIiIgogICAgICAgICBpZiB5ZWFyIGlzIE5vbmU6CiAgICAgICAgICAgICB5ZWFyID0gc2VsZi55ZWFyCkBAIC0xNDkwLDQ2ICsxNTkxLDQ1IEBACiAgICAgICAgICAgICBtaWNyb3NlY29uZCA9IHNlbGYubWljcm9zZWNvbmQKICAgICAgICAgaWYgdHppbmZvIGlzIFRydWU6CiAgICAgICAgICAgICB0emluZm8gPSBzZWxmLnR6aW5mbwotICAgICAgICByZXR1cm4gZGF0ZXRpbWUoeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQsIG1pY3Jvc2Vjb25kLAotICAgICAgICAgICAgICAgICAgICAgICAgdHppbmZvKQorICAgICAgICBpZiBmb2xkIGlzIE5vbmU6CisgICAgICAgICAgICBmb2xkID0gc2VsZi5mb2xkCisgICAgICAgIHJldHVybiBkYXRldGltZSh5ZWFyLCBtb250aCwgZGF5LCBob3VyLCBtaW51dGUsIHNlY29uZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbWljcm9zZWNvbmQsIHR6aW5mbywgZm9sZD1mb2xkKQorCisgICAgZGVmIF9sb2NhbF90aW1lem9uZShzZWxmKToKKyAgICAgICAgaWYgc2VsZi50emluZm8gaXMgTm9uZToKKyAgICAgICAgICAgIHRzID0gc2VsZi5fbWt0aW1lKCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHRzID0gKHNlbGYgLSBfRVBPQ0gpIC8vIHRpbWVkZWx0YShzZWNvbmRzPTEpCisgICAgICAgIGxvY2FsdG0gPSBfdGltZS5sb2NhbHRpbWUodHMpCisgICAgICAgIGxvY2FsID0gZGF0ZXRpbWUoKmxvY2FsdG1bOjZdKQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIEV4dHJhY3QgVFogZGF0YSBpZiBhdmFpbGFibGUKKyAgICAgICAgICAgIGdtdG9mZiA9IGxvY2FsdG0udG1fZ210b2ZmCisgICAgICAgICAgICB6b25lID0gbG9jYWx0bS50bV96b25lCisgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgICAgIGRlbHRhID0gbG9jYWwgLSBkYXRldGltZSgqX3RpbWUuZ210aW1lKHRzKVs6Nl0pCisgICAgICAgICAgICB6b25lID0gX3RpbWUuc3RyZnRpbWUoJyVaJywgbG9jYWx0bSkKKyAgICAgICAgICAgIHR6ID0gdGltZXpvbmUoZGVsdGEsIHpvbmUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0eiA9IHRpbWV6b25lKHRpbWVkZWx0YShzZWNvbmRzPWdtdG9mZiksIHpvbmUpCisgICAgICAgIHJldHVybiB0egogCiAgICAgZGVmIGFzdGltZXpvbmUoc2VsZiwgdHo9Tm9uZSk6CiAgICAgICAgIGlmIHR6IGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBzZWxmLnR6aW5mbyBpcyBOb25lOgotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImFzdGltZXpvbmUoKSByZXF1aXJlcyBhbiBhd2FyZSBkYXRldGltZSIpCi0gICAgICAgICAgICB0cyA9IChzZWxmIC0gX0VQT0NIKSAvLyB0aW1lZGVsdGEoc2Vjb25kcz0xKQotICAgICAgICAgICAgbG9jYWx0bSA9IF90aW1lLmxvY2FsdGltZSh0cykKLSAgICAgICAgICAgIGxvY2FsID0gZGF0ZXRpbWUoKmxvY2FsdG1bOjZdKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICMgRXh0cmFjdCBUWiBkYXRhIGlmIGF2YWlsYWJsZQotICAgICAgICAgICAgICAgIGdtdG9mZiA9IGxvY2FsdG0udG1fZ210b2ZmCi0gICAgICAgICAgICAgICAgem9uZSA9IGxvY2FsdG0udG1fem9uZQotICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgotICAgICAgICAgICAgICAgICMgQ29tcHV0ZSBVVEMgb2Zmc2V0IGFuZCBjb21wYXJlIHdpdGggdGhlIHZhbHVlIGltcGxpZWQKLSAgICAgICAgICAgICAgICAjIGJ5IHRtX2lzZHN0LiAgSWYgdGhlIHZhbHVlcyBtYXRjaCwgdXNlIHRoZSB6b25lIG5hbWUKLSAgICAgICAgICAgICAgICAjIGltcGxpZWQgYnkgdG1faXNkc3QuCi0gICAgICAgICAgICAgICAgZGVsdGEgPSBsb2NhbCAtIGRhdGV0aW1lKCpfdGltZS5nbXRpbWUodHMpWzo2XSkKLSAgICAgICAgICAgICAgICBkc3QgPSBfdGltZS5kYXlsaWdodCBhbmQgbG9jYWx0bS50bV9pc2RzdCA+IDAKLSAgICAgICAgICAgICAgICBnbXRvZmYgPSAtKF90aW1lLmFsdHpvbmUgaWYgZHN0IGVsc2UgX3RpbWUudGltZXpvbmUpCi0gICAgICAgICAgICAgICAgaWYgZGVsdGEgPT0gdGltZWRlbHRhKHNlY29uZHM9Z210b2ZmKToKLSAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSwgX3RpbWUudHpuYW1lW2RzdF0pCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZShkZWx0YSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgdHogPSB0aW1lem9uZSh0aW1lZGVsdGEoc2Vjb25kcz1nbXRvZmYpLCB6b25lKQotCisgICAgICAgICAgICB0eiA9IHNlbGYuX2xvY2FsX3RpbWV6b25lKCkKICAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZSh0eiwgdHppbmZvKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigidHogYXJndW1lbnQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiB0emluZm8iKQogCiAgICAgICAgIG15dHogPSBzZWxmLnR6aW5mbwogICAgICAgICBpZiBteXR6IGlzIE5vbmU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJhc3RpbWV6b25lKCkgcmVxdWlyZXMgYW4gYXdhcmUgZGF0ZXRpbWUiKQorICAgICAgICAgICAgbXl0eiA9IHNlbGYuX2xvY2FsX3RpbWV6b25lKCkKIAogICAgICAgICBpZiB0eiBpcyBteXR6OgogICAgICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgICAgICAjIENvbnZlcnQgc2VsZiB0byBVVEMsIGFuZCBhdHRhY2ggdGhlIG5ldyB0aW1lIHpvbmUgb2JqZWN0LgotICAgICAgICBteW9mZnNldCA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgbXlvZmZzZXQgPSBteXR6LnV0Y29mZnNldChzZWxmKQogICAgICAgICBpZiBteW9mZnNldCBpcyBOb25lOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXN0aW1lem9uZSgpIHJlcXVpcmVzIGFuIGF3YXJlIGRhdGV0aW1lIikKICAgICAgICAgdXRjID0gKHNlbGYgLSBteW9mZnNldCkucmVwbGFjZSh0emluZm89dHopCkBAIC0xNTQ5LDIxICsxNjQ5LDI1IEBACiAgICAgICAgICAgICBzZWxmLl9ob3VyLCBzZWxmLl9taW51dGUsIHNlbGYuX3NlY29uZCwKICAgICAgICAgICAgIHNlbGYuX3llYXIpCiAKLSAgICBkZWYgaXNvZm9ybWF0KHNlbGYsIHNlcD0nVCcpOgorICAgIGRlZiBpc29mb3JtYXQoc2VsZiwgc2VwPSdUJywgdGltZXNwZWM9J2F1dG8nKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSB0aW1lIGZvcm1hdHRlZCBhY2NvcmRpbmcgdG8gSVNPLgogCi0gICAgICAgIFRoaXMgaXMgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tJywgb3IgJ1lZWVktTU0tREQgSEg6TU06U1MnIGlmCi0gICAgICAgIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KKyAgICAgICAgVGhlIGZ1bGwgZm9ybWF0IGxvb2tzIGxpa2UgJ1lZWVktTU0tREQgSEg6TU06U1MubW1tbW1tJy4KKyAgICAgICAgQnkgZGVmYXVsdCwgdGhlIGZyYWN0aW9uYWwgcGFydCBpcyBvbWl0dGVkIGlmIHNlbGYubWljcm9zZWNvbmQgPT0gMC4KIAogICAgICAgICBJZiBzZWxmLnR6aW5mbyBpcyBub3QgTm9uZSwgdGhlIFVUQyBvZmZzZXQgaXMgYWxzbyBhdHRhY2hlZCwgZ2l2aW5nCi0gICAgICAgICdZWVlZLU1NLUREIEhIOk1NOlNTLm1tbW1tbStISDpNTScgb3IgJ1lZWVktTU0tREQgSEg6TU06U1MrSEg6TU0nLgorICAgICAgICBnaXZpbmcgYSBmdWxsIGZvcm1hdCBvZiAnWVlZWS1NTS1ERCBISDpNTTpTUy5tbW1tbW0rSEg6TU0nLgogCiAgICAgICAgIE9wdGlvbmFsIGFyZ3VtZW50IHNlcCBzcGVjaWZpZXMgdGhlIHNlcGFyYXRvciBiZXR3ZWVuIGRhdGUgYW5kCiAgICAgICAgIHRpbWUsIGRlZmF1bHQgJ1QnLgorCisgICAgICAgIFRoZSBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBhZGRpdGlvbmFsCisgICAgICAgIHRlcm1zIG9mIHRoZSB0aW1lIHRvIGluY2x1ZGUuCiAgICAgICAgICIiIgogICAgICAgICBzID0gKCIlMDRkLSUwMmQtJTAyZCVjIiAlIChzZWxmLl95ZWFyLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCBzZXApICsKICAgICAgICAgICAgICBfZm9ybWF0X3RpbWUoc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbWljcm9zZWNvbmQsIHRpbWVzcGVjKSkKKwogICAgICAgICBvZmYgPSBzZWxmLnV0Y29mZnNldCgpCiAgICAgICAgIGlmIG9mZiBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGlmIG9mZi5kYXlzIDwgMDoKQEAgLTE1NzIsOSArMTY3NiwxMSBAQAogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzaWduID0gIisiCiAgICAgICAgICAgICBoaCwgbW0gPSBkaXZtb2Qob2ZmLCB0aW1lZGVsdGEoaG91cnM9MSkpCi0gICAgICAgICAgICBhc3NlcnQgbm90IG1tICUgdGltZWRlbHRhKG1pbnV0ZXM9MSksICJ3aG9sZSBtaW51dGUiCi0gICAgICAgICAgICBtbSAvLz0gdGltZWRlbHRhKG1pbnV0ZXM9MSkKKyAgICAgICAgICAgIG1tLCBzcyA9IGRpdm1vZChtbSwgdGltZWRlbHRhKG1pbnV0ZXM9MSkpCiAgICAgICAgICAgICBzICs9ICIlcyUwMmQ6JTAyZCIgJSAoc2lnbiwgaGgsIG1tKQorICAgICAgICAgICAgaWYgc3M6CisgICAgICAgICAgICAgICAgYXNzZXJ0IG5vdCBzcy5taWNyb3NlY29uZHMKKyAgICAgICAgICAgICAgICBzICs9ICI6JTAyZCIgJSBzcy5zZWNvbmRzCiAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgX19yZXByX18oc2VsZik6CkBAIC0xNTkxLDYgKzE2OTcsOSBAQAogICAgICAgICBpZiBzZWxmLl90emluZm8gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBhc3NlcnQgc1stMTpdID09ICIpIgogICAgICAgICAgICAgcyA9IHNbOi0xXSArICIsIHR6aW5mbz0lciIgJSBzZWxmLl90emluZm8gKyAiKSIKKyAgICAgICAgaWYgc2VsZi5fZm9sZDoKKyAgICAgICAgICAgIGFzc2VydCBzWy0xOl0gPT0gIikiCisgICAgICAgICAgICBzID0gc1s6LTFdICsgIiwgZm9sZD0xKSIKICAgICAgICAgcmV0dXJuIHMKIAogICAgIGRlZiBfX3N0cl9fKHNlbGYpOgpAQCAtMTY5Myw2ICsxODAyLDEyIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBteW9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKICAgICAgICAgICAgIG90b2ZmID0gb3RoZXIudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgICMgQXNzdW1lIHRoYXQgYWxsb3dfbWl4ZWQgbWVhbnMgdGhhdCB3ZSBhcmUgY2FsbGVkIGZyb20gX19lcV9fCisgICAgICAgICAgICBpZiBhbGxvd19taXhlZDoKKyAgICAgICAgICAgICAgICBpZiBteW9mZiAhPSBzZWxmLnJlcGxhY2UoZm9sZD1ub3Qgc2VsZi5mb2xkKS51dGNvZmZzZXQoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDIKKyAgICAgICAgICAgICAgICBpZiBvdG9mZiAhPSBvdGhlci5yZXBsYWNlKGZvbGQ9bm90IG90aGVyLmZvbGQpLnV0Y29mZnNldCgpOgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMgogICAgICAgICAgICAgYmFzZV9jb21wYXJlID0gbXlvZmYgPT0gb3RvZmYKIAogICAgICAgICBpZiBiYXNlX2NvbXBhcmU6CkBAIC0xNzYwLDkgKzE4NzUsMTMgQEAKIAogICAgIGRlZiBfX2hhc2hfXyhzZWxmKToKICAgICAgICAgaWYgc2VsZi5faGFzaGNvZGUgPT0gLTE6Ci0gICAgICAgICAgICB0em9mZiA9IHNlbGYudXRjb2Zmc2V0KCkKKyAgICAgICAgICAgIGlmIHNlbGYuZm9sZDoKKyAgICAgICAgICAgICAgICB0ID0gc2VsZi5yZXBsYWNlKGZvbGQ9MCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgdCA9IHNlbGYKKyAgICAgICAgICAgIHR6b2ZmID0gdC51dGNvZmZzZXQoKQogICAgICAgICAgICAgaWYgdHpvZmYgaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2goc2VsZi5fZ2V0c3RhdGUoKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLl9oYXNoY29kZSA9IGhhc2godC5fZ2V0c3RhdGUoKVswXSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZGF5cyA9IF95bWQyb3JkKHNlbGYueWVhciwgc2VsZi5tb250aCwgc2VsZi5kYXkpCiAgICAgICAgICAgICAgICAgc2Vjb25kcyA9IHNlbGYuaG91ciAqIDM2MDAgKyBzZWxmLm1pbnV0ZSAqIDYwICsgc2VsZi5zZWNvbmQKQEAgLTE3NzEsMTEgKzE4OTAsMTQgQEAKIAogICAgICMgUGlja2xlIHN1cHBvcnQuCiAKLSAgICBkZWYgX2dldHN0YXRlKHNlbGYpOgorICAgIGRlZiBfZ2V0c3RhdGUoc2VsZiwgcHJvdG9jb2w9Myk6CiAgICAgICAgIHloaSwgeWxvID0gZGl2bW9kKHNlbGYuX3llYXIsIDI1NikKICAgICAgICAgdXMyLCB1czMgPSBkaXZtb2Qoc2VsZi5fbWljcm9zZWNvbmQsIDI1NikKICAgICAgICAgdXMxLCB1czIgPSBkaXZtb2QodXMyLCAyNTYpCi0gICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFt5aGksIHlsbywgc2VsZi5fbW9udGgsIHNlbGYuX2RheSwKKyAgICAgICAgbSA9IHNlbGYuX21vbnRoCisgICAgICAgIGlmIHNlbGYuX2ZvbGQgYW5kIHByb3RvY29sID4gMzoKKyAgICAgICAgICAgIG0gKz0gMTI4CisgICAgICAgIGJhc2VzdGF0ZSA9IGJ5dGVzKFt5aGksIHlsbywgbSwgc2VsZi5fZGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5faG91ciwgc2VsZi5fbWludXRlLCBzZWxmLl9zZWNvbmQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICB1czEsIHVzMiwgdXMzXSkKICAgICAgICAgaWYgc2VsZi5fdHppbmZvIGlzIE5vbmU6CkBAIC0xNzg2LDE0ICsxOTA4LDIwIEBACiAgICAgZGVmIF9fc2V0c3RhdGUoc2VsZiwgc3RyaW5nLCB0emluZm8pOgogICAgICAgICBpZiB0emluZm8gaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKHR6aW5mbywgX3R6aW5mb19jbGFzcyk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImJhZCB0emluZm8gc3RhdGUgYXJnIikKLSAgICAgICAgKHloaSwgeWxvLCBzZWxmLl9tb250aCwgc2VsZi5fZGF5LCBzZWxmLl9ob3VyLAorICAgICAgICAoeWhpLCB5bG8sIG0sIHNlbGYuX2RheSwgc2VsZi5faG91ciwKICAgICAgICAgIHNlbGYuX21pbnV0ZSwgc2VsZi5fc2Vjb25kLCB1czEsIHVzMiwgdXMzKSA9IHN0cmluZworICAgICAgICBpZiBtID4gMTI3OgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDEKKyAgICAgICAgICAgIHNlbGYuX21vbnRoID0gbSAtIDEyOAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5fZm9sZCA9IDAKKyAgICAgICAgICAgIHNlbGYuX21vbnRoID0gbQogICAgICAgICBzZWxmLl95ZWFyID0geWhpICogMjU2ICsgeWxvCiAgICAgICAgIHNlbGYuX21pY3Jvc2Vjb25kID0gKCgodXMxIDw8IDgpIHwgdXMyKSA8PCA4KSB8IHVzMwogICAgICAgICBzZWxmLl90emluZm8gPSB0emluZm8KIAotICAgIGRlZiBfX3JlZHVjZV9fKHNlbGYpOgotICAgICAgICByZXR1cm4gKHNlbGYuX19jbGFzc19fLCBzZWxmLl9nZXRzdGF0ZSgpKQorICAgIGRlZiBfX3JlZHVjZV9leF9fKHNlbGYsIHByb3RvY29sKToKKyAgICAgICAgcmV0dXJuIChzZWxmLl9fY2xhc3NfXywgc2VsZi5fZ2V0c3RhdGUocHJvdG9jb2wpKQogCiAKIGRhdGV0aW1lLm1pbiA9IGRhdGV0aW1lKDEsIDEsIDEpCkBAIC0xOTEzLDYgKzIwNDEsOCBAQAogCiAgICAgQHN0YXRpY21ldGhvZAogICAgIGRlZiBfbmFtZV9mcm9tX29mZnNldChkZWx0YSk6CisgICAgICAgIGlmIG5vdCBkZWx0YToKKyAgICAgICAgICAgIHJldHVybiAnVVRDJwogICAgICAgICBpZiBkZWx0YSA8IHRpbWVkZWx0YSgwKToKICAgICAgICAgICAgIHNpZ24gPSAnLScKICAgICAgICAgICAgIGRlbHRhID0gLWRlbHRhCmRpZmYgLS1naXQgYS9MaWIvZGJtL2R1bWIucHkgYi9MaWIvZGJtL2R1bWIucHkKaW5kZXggNzc3N2E3Yy4uZTdjNjQ0MCAxMDA2NDQKLS0tIGEvTGliL2RibS9kdW1iLnB5CisrKyBiL0xpYi9kYm0vZHVtYi5weQpAQCAtNDcsNiArNDcsNyBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGViYXNlbmFtZSwgbW9kZSwgZmxhZz0nYycpOgogICAgICAgICBzZWxmLl9tb2RlID0gbW9kZQorICAgICAgICBzZWxmLl9yZWFkb25seSA9IChmbGFnID09ICdyJykKIAogICAgICAgICAjIFRoZSBkaXJlY3RvcnkgZmlsZSBpcyBhIHRleHQgZmlsZS4gIEVhY2ggbGluZSBsb29rcyBsaWtlCiAgICAgICAgICMgICAgIiVyLCAoJWQsICVkKVxuIiAlIChrZXksIHBvcywgc2l6KQpAQCAtODAsNiArODEsMTEgQEAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZiA9IF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICdyJywgZW5jb2Rpbmc9IkxhdGluLTEiKQogICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIGlmIGZsYWcgbm90IGluICgnYycsICduJyk6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiVGhlIGRhdGFiYXNlIGZpbGUgaXMgbWlzc2luZywgdGhlICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW1hbnRpY3Mgb2YgdGhlICdjJyBmbGFnIHdpbGwgYmUgdXNlZC4iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTQpCiAgICAgICAgICAgICB3aXRoIF9pby5vcGVuKHNlbGYuX2RhdGZpbGUsICd3JywgZW5jb2Rpbmc9IkxhdGluLTEiKSBhcyBmOgogICAgICAgICAgICAgICAgIHNlbGYuX2NobW9kKHNlbGYuX2RhdGZpbGUpCiAgICAgICAgIGVsc2U6CkBAIC0xNzgsNiArMTg0LDEwIEBACiAgICAgICAgICAgICBmLndyaXRlKCIlciwgJXJcbiIgJSAoa2V5LmRlY29kZSgiTGF0aW4tMSIpLCBwb3NfYW5kX3Npel9wYWlyKSkKIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbCk6CisgICAgICAgIGlmIHNlbGYuX3JlYWRvbmx5OgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICBrZXkgPSBrZXkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoa2V5LCAoYnl0ZXMsIGJ5dGVhcnJheSkpOgpAQCAtMjEyLDYgKzIyMiwxMCBAQAogICAgICAgICAgICAgIyAoc28gdGhhdCBfY29tbWl0KCkgbmV2ZXIgZ2V0cyBjYWxsZWQpLgogCiAgICAgZGVmIF9fZGVsaXRlbV9fKHNlbGYsIGtleSk6CisgICAgICAgIGlmIHNlbGYuX3JlYWRvbmx5OgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdUaGUgZGF0YWJhc2UgaXMgb3BlbmVkIGZvciByZWFkaW5nIG9ubHknLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgaWYgaXNpbnN0YW5jZShrZXksIHN0cik6CiAgICAgICAgICAgICBrZXkgPSBrZXkuZW5jb2RlKCd1dGYtOCcpCiAgICAgICAgIHNlbGYuX3ZlcmlmeV9vcGVuKCkKQEAgLTMwMCw0ICszMTQsOCBAQAogICAgIGVsc2U6CiAgICAgICAgICMgVHVybiBvZmYgYW55IGJpdHMgdGhhdCBhcmUgc2V0IGluIHRoZSB1bWFzawogICAgICAgICBtb2RlID0gbW9kZSAmICh+dW0pCisgICAgaWYgZmxhZyBub3QgaW4gKCdyJywgJ3cnLCAnYycsICduJyk6CisgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICB3YXJuaW5ncy53YXJuKCJGbGFnIG11c3QgYmUgb25lIG9mICdyJywgJ3cnLCAnYycsIG9yICduJyIsCisgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgcmV0dXJuIF9EYXRhYmFzZShmaWxlLCBtb2RlLCBmbGFnPWZsYWcpCmRpZmYgLS1naXQgYS9MaWIvZGlmZmxpYi5weSBiL0xpYi9kaWZmbGliLnB5CmluZGV4IDA3NmJiYWMuLjIwOTVhNWUgMTAwNjQ0Ci0tLSBhL0xpYi9kaWZmbGliLnB5CisrKyBiL0xpYi9kaWZmbGliLnB5CkBAIC0xNDE1LDcgKzE0MTUsNyBAQAogICAgIGltcG9ydCByZQogCiAgICAgIyByZWd1bGFyIGV4cHJlc3Npb24gZm9yIGZpbmRpbmcgaW50cmFsaW5lIGNoYW5nZSBpbmRpY2VzCi0gICAgY2hhbmdlX3JlID0gcmUuY29tcGlsZSgnKFwrK3xcLSt8XF4rKScpCisgICAgY2hhbmdlX3JlID0gcmUuY29tcGlsZShyJyhcKyt8XC0rfFxeKyknKQogCiAgICAgIyBjcmVhdGUgdGhlIGRpZmZlcmVuY2UgaXRlcmF0b3IgdG8gZ2VuZXJhdGUgdGhlIGRpZmZlcmVuY2VzCiAgICAgZGlmZl9saW5lc19pdGVyYXRvciA9IG5kaWZmKGZyb21saW5lcyx0b2xpbmVzLGxpbmVqdW5rLGNoYXJqdW5rKQpkaWZmIC0tZ2l0IGEvTGliL2Rpcy5weSBiL0xpYi9kaXMucHkKaW5kZXggZjdlM2M3Zi4uMDc5NGI3ZiAxMDA2NDQKLS0tIGEvTGliL2Rpcy5weQorKysgYi9MaWIvZGlzLnB5CkBAIC0xNiw2ICsxNiw4IEBACiBfaGF2ZV9jb2RlID0gKHR5cGVzLk1ldGhvZFR5cGUsIHR5cGVzLkZ1bmN0aW9uVHlwZSwgdHlwZXMuQ29kZVR5cGUsCiAgICAgICAgICAgICAgIGNsYXNzbWV0aG9kLCBzdGF0aWNtZXRob2QsIHR5cGUpCiAKK0ZPUk1BVF9WQUxVRSA9IG9wbWFwWydGT1JNQVRfVkFMVUUnXQorCiBkZWYgX3RyeV9jb21waWxlKHNvdXJjZSwgbmFtZSk6CiAgICAgIiIiQXR0ZW1wdHMgdG8gY29tcGlsZSB0aGUgZ2l2ZW4gc291cmNlLCBmaXJzdCBhcyBhbiBleHByZXNzaW9uIGFuZAogICAgICAgIHRoZW4gYXMgYSBzdGF0ZW1lbnQgaWYgdGhlIGZpcnN0IGFwcHJvYWNoIGZhaWxzLgpAQCAtODcsNiArODksNyBAQAogICAgIDY0OiAiTk9GUkVFIiwKICAgIDEyODogIkNPUk9VVElORSIsCiAgICAyNTY6ICJJVEVSQUJMRV9DT1JPVVRJTkUiLAorICAgNTEyOiAiQVNZTkNfR0VORVJBVE9SIiwKIH0KIAogZGVmIHByZXR0eV9mbGFncyhmbGFncyk6CkBAIC0xNjMsNiArMTY2LDE1IEBACiBfSW5zdHJ1Y3Rpb24gPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCJfSW5zdHJ1Y3Rpb24iLAogICAgICAib3BuYW1lIG9wY29kZSBhcmcgYXJndmFsIGFyZ3JlcHIgb2Zmc2V0IHN0YXJ0c19saW5lIGlzX2p1bXBfdGFyZ2V0IikKIAorX0luc3RydWN0aW9uLm9wbmFtZS5fX2RvY19fID0gIkh1bWFuIHJlYWRhYmxlIG5hbWUgZm9yIG9wZXJhdGlvbiIKK19JbnN0cnVjdGlvbi5vcGNvZGUuX19kb2NfXyA9ICJOdW1lcmljIGNvZGUgZm9yIG9wZXJhdGlvbiIKK19JbnN0cnVjdGlvbi5hcmcuX19kb2NfXyA9ICJOdW1lcmljIGFyZ3VtZW50IHRvIG9wZXJhdGlvbiAoaWYgYW55KSwgb3RoZXJ3aXNlIE5vbmUiCitfSW5zdHJ1Y3Rpb24uYXJndmFsLl9fZG9jX18gPSAiUmVzb2x2ZWQgYXJnIHZhbHVlIChpZiBrbm93biksIG90aGVyd2lzZSBzYW1lIGFzIGFyZyIKK19JbnN0cnVjdGlvbi5hcmdyZXByLl9fZG9jX18gPSAiSHVtYW4gcmVhZGFibGUgZGVzY3JpcHRpb24gb2Ygb3BlcmF0aW9uIGFyZ3VtZW50IgorX0luc3RydWN0aW9uLm9mZnNldC5fX2RvY19fID0gIlN0YXJ0IGluZGV4IG9mIG9wZXJhdGlvbiB3aXRoaW4gYnl0ZWNvZGUgc2VxdWVuY2UiCitfSW5zdHJ1Y3Rpb24uc3RhcnRzX2xpbmUuX19kb2NfXyA9ICJMaW5lIHN0YXJ0ZWQgYnkgdGhpcyBvcGNvZGUgKGlmIGFueSksIG90aGVyd2lzZSBOb25lIgorX0luc3RydWN0aW9uLmlzX2p1bXBfdGFyZ2V0Ll9fZG9jX18gPSAiVHJ1ZSBpZiBvdGhlciBjb2RlIGp1bXBzIHRvIGhlcmUsIG90aGVyd2lzZSBGYWxzZSIKKwogY2xhc3MgSW5zdHJ1Y3Rpb24oX0luc3RydWN0aW9uKToKICAgICAiIiJEZXRhaWxzIGZvciBhIGJ5dGVjb2RlIG9wZXJhdGlvbgogCkBAIC0yNzYsNyArMjg4LDYgQEAKICAgICAiIiIKICAgICBsYWJlbHMgPSBmaW5kbGFiZWxzKGNvZGUpCiAgICAgc3RhcnRzX2xpbmUgPSBOb25lCi0gICAgZnJlZSA9IE5vbmUKICAgICBmb3Igb2Zmc2V0LCBvcCwgYXJnIGluIF91bnBhY2tfb3BhcmdzKGNvZGUpOgogICAgICAgICBpZiBsaW5lc3RhcnRzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgc3RhcnRzX2xpbmUgPSBsaW5lc3RhcnRzLmdldChvZmZzZXQsIE5vbmUpCkBAIC0yOTYsNyArMzA3LDcgQEAKICAgICAgICAgICAgIGVsaWYgb3AgaW4gaGFzbmFtZToKICAgICAgICAgICAgICAgICBhcmd2YWwsIGFyZ3JlcHIgPSBfZ2V0X25hbWVfaW5mbyhhcmcsIG5hbWVzKQogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIGFyZ3ZhbCA9IG9mZnNldCArIDMgKyBhcmcKKyAgICAgICAgICAgICAgICBhcmd2YWwgPSBvZmZzZXQgKyAyICsgYXJnCiAgICAgICAgICAgICAgICAgYXJncmVwciA9ICJ0byAiICsgcmVwcihhcmd2YWwpCiAgICAgICAgICAgICBlbGlmIG9wIGluIGhhc2xvY2FsOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgdmFybmFtZXMpCkBAIC0zMDUsOCArMzE2LDEzIEBACiAgICAgICAgICAgICAgICAgYXJncmVwciA9IGFyZ3ZhbAogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNmcmVlOgogICAgICAgICAgICAgICAgIGFyZ3ZhbCwgYXJncmVwciA9IF9nZXRfbmFtZV9pbmZvKGFyZywgY2VsbHMpCi0gICAgICAgICAgICBlbGlmIG9wIGluIGhhc25hcmdzOgotICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAiJWQgcG9zaXRpb25hbCwgJWQga2V5d29yZCBwYWlyIiAlIChhcmclMjU2LCBhcmcvLzI1NikKKyAgICAgICAgICAgIGVsaWYgb3AgPT0gRk9STUFUX1ZBTFVFOgorICAgICAgICAgICAgICAgIGFyZ3ZhbCA9ICgoTm9uZSwgc3RyLCByZXByLCBhc2NpaSlbYXJnICYgMHgzXSwgYm9vbChhcmcgJiAweDQpKQorICAgICAgICAgICAgICAgIGFyZ3JlcHIgPSAoJycsICdzdHInLCAncmVwcicsICdhc2NpaScpW2FyZyAmIDB4M10KKyAgICAgICAgICAgICAgICBpZiBhcmd2YWxbMV06CisgICAgICAgICAgICAgICAgICAgIGlmIGFyZ3JlcHI6CisgICAgICAgICAgICAgICAgICAgICAgICBhcmdyZXByICs9ICcsICcKKyAgICAgICAgICAgICAgICAgICAgYXJncmVwciArPSAnd2l0aCBmb3JtYXQnCiAgICAgICAgIHlpZWxkIEluc3RydWN0aW9uKG9wbmFtZVtvcF0sIG9wLAogICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIGFyZ3ZhbCwgYXJncmVwciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Zmc2V0LCBzdGFydHNfbGluZSwgaXNfanVtcF90YXJnZXQpCkBAIC0zNDMsMjMgKzM1OSwxNSBAQAogZGlzY28gPSBkaXNhc3NlbWJsZSAgICAgICAgICAgICAgICAgICAgICMgWFhYIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eQogCiBkZWYgX3VucGFja19vcGFyZ3MoY29kZSk6Ci0gICAgIyBlbnVtZXJhdGUoKSBpcyBub3QgYW4gb3B0aW9uLCBzaW5jZSB3ZSBzb21ldGltZXMgcHJvY2VzcwotICAgICMgbXVsdGlwbGUgZWxlbWVudHMgb24gYSBzaW5nbGUgcGFzcyB0aHJvdWdoIHRoZSBsb29wCiAgICAgZXh0ZW5kZWRfYXJnID0gMAotICAgIG4gPSBsZW4oY29kZSkKLSAgICBpID0gMAotICAgIHdoaWxlIGkgPCBuOgorICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihjb2RlKSwgMik6CiAgICAgICAgIG9wID0gY29kZVtpXQotICAgICAgICBvZmZzZXQgPSBpCi0gICAgICAgIGkgPSBpKzEKLSAgICAgICAgYXJnID0gTm9uZQogICAgICAgICBpZiBvcCA+PSBIQVZFX0FSR1VNRU5UOgotICAgICAgICAgICAgYXJnID0gY29kZVtpXSArIGNvZGVbaSsxXSoyNTYgKyBleHRlbmRlZF9hcmcKLSAgICAgICAgICAgIGV4dGVuZGVkX2FyZyA9IDAKLSAgICAgICAgICAgIGkgPSBpKzIKLSAgICAgICAgICAgIGlmIG9wID09IEVYVEVOREVEX0FSRzoKLSAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmcgPSBhcmcqNjU1MzYKLSAgICAgICAgeWllbGQgKG9mZnNldCwgb3AsIGFyZykKKyAgICAgICAgICAgIGFyZyA9IGNvZGVbaSsxXSB8IGV4dGVuZGVkX2FyZworICAgICAgICAgICAgZXh0ZW5kZWRfYXJnID0gKGFyZyA8PCA4KSBpZiBvcCA9PSBFWFRFTkRFRF9BUkcgZWxzZSAwCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBhcmcgPSBOb25lCisgICAgICAgIHlpZWxkIChpLCBvcCwgYXJnKQogCiBkZWYgZmluZGxhYmVscyhjb2RlKToKICAgICAiIiJEZXRlY3QgYWxsIG9mZnNldHMgaW4gYSBieXRlIGNvZGUgd2hpY2ggYXJlIGp1bXAgdGFyZ2V0cy4KQEAgLTM3MCwxNCArMzc4LDE0IEBACiAgICAgbGFiZWxzID0gW10KICAgICBmb3Igb2Zmc2V0LCBvcCwgYXJnIGluIF91bnBhY2tfb3BhcmdzKGNvZGUpOgogICAgICAgICBpZiBhcmcgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICBsYWJlbCA9IC0xCiAgICAgICAgICAgICBpZiBvcCBpbiBoYXNqcmVsOgotICAgICAgICAgICAgICAgIGxhYmVsID0gb2Zmc2V0ICsgMyArIGFyZworICAgICAgICAgICAgICAgIGxhYmVsID0gb2Zmc2V0ICsgMiArIGFyZwogICAgICAgICAgICAgZWxpZiBvcCBpbiBoYXNqYWJzOgogICAgICAgICAgICAgICAgIGxhYmVsID0gYXJnCi0gICAgICAgICAgICBpZiBsYWJlbCA+PSAwOgotICAgICAgICAgICAgICAgIGlmIGxhYmVsIG5vdCBpbiBsYWJlbHM6Ci0gICAgICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBsYWJlbCBub3QgaW4gbGFiZWxzOgorICAgICAgICAgICAgICAgIGxhYmVscy5hcHBlbmQobGFiZWwpCiAgICAgcmV0dXJuIGxhYmVscwogCiBkZWYgZmluZGxpbmVzdGFydHMoY29kZSk6CkBAIC0zODYsOCArMzk0LDggQEAKICAgICBHZW5lcmF0ZSBwYWlycyAob2Zmc2V0LCBsaW5lbm8pIGFzIGRlc2NyaWJlZCBpbiBQeXRob24vY29tcGlsZS5jLgogCiAgICAgIiIiCi0gICAgYnl0ZV9pbmNyZW1lbnRzID0gbGlzdChjb2RlLmNvX2xub3RhYlswOjoyXSkKLSAgICBsaW5lX2luY3JlbWVudHMgPSBsaXN0KGNvZGUuY29fbG5vdGFiWzE6OjJdKQorICAgIGJ5dGVfaW5jcmVtZW50cyA9IGNvZGUuY29fbG5vdGFiWzA6OjJdCisgICAgbGluZV9pbmNyZW1lbnRzID0gY29kZS5jb19sbm90YWJbMTo6Ml0KIAogICAgIGxhc3RsaW5lbm8gPSBOb25lCiAgICAgbGluZW5vID0gY29kZS5jb19maXJzdGxpbmVubwpAQCAtMzk4LDYgKzQwNiw5IEBACiAgICAgICAgICAgICAgICAgeWllbGQgKGFkZHIsIGxpbmVubykKICAgICAgICAgICAgICAgICBsYXN0bGluZW5vID0gbGluZW5vCiAgICAgICAgICAgICBhZGRyICs9IGJ5dGVfaW5jcgorICAgICAgICBpZiBsaW5lX2luY3IgPj0gMHg4MDoKKyAgICAgICAgICAgICMgbGluZV9pbmNyZW1lbnRzIGlzIGFuIGFycmF5IG9mIDgtYml0IHNpZ25lZCBpbnRlZ2VycworICAgICAgICAgICAgbGluZV9pbmNyIC09IDB4MTAwCiAgICAgICAgIGxpbmVubyArPSBsaW5lX2luY3IKICAgICBpZiBsaW5lbm8gIT0gbGFzdGxpbmVubzoKICAgICAgICAgeWllbGQgKGFkZHIsIGxpbmVubykKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvYXJjaGl2ZV91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKaW5kZXggYmVkMTM4NC4uNzhhZTU3NSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKKysrIGIvTGliL2Rpc3R1dGlscy9hcmNoaXZlX3V0aWwucHkKQEAgLTE3MSw3ICsxNzEsNyBAQAogICAgICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5ub3JtcGF0aChvcy5wYXRoLmpvaW4oZGlycGF0aCwgbmFtZSkpCiAgICAgICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHBhdGgpOgogICAgICAgICAgICAgICAgICAgICAgICAgemlwLndyaXRlKHBhdGgsIHBhdGgpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiYWRkaW5nICclcyciICUgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCJhZGRpbmcgJyVzJyIsIHBhdGgpCiAgICAgICAgICAgICB6aXAuY2xvc2UoKQogCiAgICAgcmV0dXJuIHppcF9maWxlbmFtZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jbWQucHkgYi9MaWIvZGlzdHV0aWxzL2NtZC5weQppbmRleCBjODlkNWVmLi45MzlmNzk1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NtZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NtZC5weQpAQCAtMjIxLDcgKzIyMSw3IEBACiAgICAgICAgIHNlbGYuX2Vuc3VyZV9zdHJpbmdsaWtlKG9wdGlvbiwgInN0cmluZyIsIGRlZmF1bHQpCiAKICAgICBkZWYgZW5zdXJlX3N0cmluZ19saXN0KHNlbGYsIG9wdGlvbik6Ci0gICAgICAgICIiIkVuc3VyZSB0aGF0ICdvcHRpb24nIGlzIGEgbGlzdCBvZiBzdHJpbmdzLiAgSWYgJ29wdGlvbicgaXMKKyAgICAgICAgciIiIkVuc3VyZSB0aGF0ICdvcHRpb24nIGlzIGEgbGlzdCBvZiBzdHJpbmdzLiAgSWYgJ29wdGlvbicgaXMKICAgICAgICAgY3VycmVudGx5IGEgc3RyaW5nLCB3ZSBzcGxpdCBpdCBlaXRoZXIgb24gLyxccyovIG9yIC9ccysvLCBzbwogICAgICAgICAiZm9vIGJhciBiYXoiLCAiZm9vLGJhcixiYXoiLCBhbmQgImZvbywgICBiYXIgYmF6IiBhbGwgYmVjb21lCiAgICAgICAgIFsiZm9vIiwgImJhciIsICJiYXoiXS4KQEAgLTMyOSw4ICszMjksNyBAQAogICAgICMgLS0gRXh0ZXJuYWwgd29ybGQgbWFuaXB1bGF0aW9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKICAgICBkZWYgd2FybihzZWxmLCBtc2cpOgotICAgICAgICBsb2cud2Fybigid2FybmluZzogJXM6ICVzXG4iICUKLSAgICAgICAgICAgICAgICAoc2VsZi5nZXRfY29tbWFuZF9uYW1lKCksIG1zZykpCisgICAgICAgIGxvZy53YXJuKCJ3YXJuaW5nOiAlczogJXNcbiIsIHNlbGYuZ2V0X2NvbW1hbmRfbmFtZSgpLCBtc2cpCiAKICAgICBkZWYgZXhlY3V0ZShzZWxmLCBmdW5jLCBhcmdzLCBtc2c9Tm9uZSwgbGV2ZWw9MSk6CiAgICAgICAgIHV0aWwuZXhlY3V0ZShmdW5jLCBhcmdzLCBtc2csIGRyeV9ydW49c2VsZi5kcnlfcnVuKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X2R1bWIucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQppbmRleCBmMWJmYjI0Li5lOTI3NGQ5IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfZHVtYi5weQpAQCAtODUsNyArODUsNyBAQAogICAgICAgICBpbnN0YWxsLnNraXBfYnVpbGQgPSBzZWxmLnNraXBfYnVpbGQKICAgICAgICAgaW5zdGFsbC53YXJuX2RpciA9IDAKIAotICAgICAgICBsb2cuaW5mbygiaW5zdGFsbGluZyB0byAlcyIgJSBzZWxmLmJkaXN0X2RpcikKKyAgICAgICAgbG9nLmluZm8oImluc3RhbGxpbmcgdG8gJXMiLCBzZWxmLmJkaXN0X2RpcikKICAgICAgICAgc2VsZi5ydW5fY29tbWFuZCgnaW5zdGFsbCcpCiAKICAgICAgICAgIyBBbmQgbWFrZSBhbiBhcmNoaXZlIHJlbGF0aXZlIHRvIHRoZSByb290IG9mIHRoZQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF9tc2kucHkKaW5kZXggYjNjZmU5Yy4uYTRiZDVhNSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X21zaS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYmRpc3RfbXNpLnB5CkBAIC0xOTksNyArMTk5LDcgQEAKICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc2VsZi50YXJnZXRfdmVyc2lvbgogICAgICAgICAgICAgaWYgbm90IHRhcmdldF92ZXJzaW9uOgogICAgICAgICAgICAgICAgIGFzc2VydCBzZWxmLnNraXBfYnVpbGQsICJTaG91bGQgaGF2ZSBhbHJlYWR5IGNoZWNrZWQgdGhpcyIKLSAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9IHN5cy52ZXJzaW9uWzA6M10KKyAgICAgICAgICAgICAgICB0YXJnZXRfdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgICAgICAgICAgcGxhdF9zcGVjaWZpZXIgPSAiLiVzLSVzIiAlIChzZWxmLnBsYXRfbmFtZSwgdGFyZ2V0X3ZlcnNpb24pCiAgICAgICAgICAgICBidWlsZCA9IHNlbGYuZ2V0X2ZpbmFsaXplZF9jb21tYW5kKCdidWlsZCcpCiAgICAgICAgICAgICBidWlsZC5idWlsZF9saWIgPSBvcy5wYXRoLmpvaW4oYnVpbGQuYnVpbGRfYmFzZSwKQEAgLTYyMyw3ICs2MjMsNyBAQAogICAgICAgICBjb3N0ID0gUHlEaWFsb2coZGIsICJEaXNrQ29zdERsZyIsIHgsIHksIHcsIGgsIG1vZGFsLCB0aXRsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICJPSyIsICJPSyIsICJPSyIsIGJpdG1hcD1GYWxzZSkKICAgICAgICAgY29zdC50ZXh0KCJUaXRsZSIsIDE1LCA2LCAyMDAsIDE1LCAweDMwMDAzLAotICAgICAgICAgICAgICAgICAgIntcRGxnRm9udEJvbGQ4fURpc2sgU3BhY2UgUmVxdWlyZW1lbnRzIikKKyAgICAgICAgICAgICAgICAgciJ7XERsZ0ZvbnRCb2xkOH1EaXNrIFNwYWNlIFJlcXVpcmVtZW50cyIpCiAgICAgICAgIGNvc3QudGV4dCgiRGVzY3JpcHRpb24iLCAyMCwgMjAsIDI4MCwgMjAsIDB4MzAwMDMsCiAgICAgICAgICAgICAgICAgICAiVGhlIGRpc2sgc3BhY2UgcmVxdWlyZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gb2YgdGhlIHNlbGVjdGVkIGZlYXR1cmVzLiIpCiAgICAgICAgIGNvc3QudGV4dCgiVGV4dCIsIDIwLCA1MywgMzMwLCA2MCwgMywKQEAgLTY3MCw3ICs2NzAsNyBAQAogICAgICAgICBwcm9ncmVzcyA9IFB5RGlhbG9nKGRiLCAiUHJvZ3Jlc3NEbGciLCB4LCB5LCB3LCBoLCBtb2RlbGVzcywgdGl0bGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNhbmNlbCIsICJDYW5jZWwiLCAiQ2FuY2VsIiwgYml0bWFwPUZhbHNlKQogICAgICAgICBwcm9ncmVzcy50ZXh0KCJUaXRsZSIsIDIwLCAxNSwgMjAwLCAxNSwgMHgzMDAwMywKLSAgICAgICAgICAgICAgICAgICAgICAie1xEbGdGb250Qm9sZDh9W1Byb2dyZXNzMV0gW1Byb2R1Y3ROYW1lXSIpCisgICAgICAgICAgICAgICAgICAgICByIntcRGxnRm9udEJvbGQ4fVtQcm9ncmVzczFdIFtQcm9kdWN0TmFtZV0iKQogICAgICAgICBwcm9ncmVzcy50ZXh0KCJUZXh0IiwgMzUsIDY1LCAzMDAsIDMwLCAzLAogICAgICAgICAgICAgICAgICAgICAgICJQbGVhc2Ugd2FpdCB3aGlsZSB0aGUgSW5zdGFsbGVyIFtQcm9ncmVzczJdIFtQcm9kdWN0TmFtZV0uICIKICAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBtYXkgdGFrZSBzZXZlcmFsIG1pbnV0ZXMuIikKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9iZGlzdF93aW5pbnN0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKaW5kZXggMGMwZTJjMS4uZDNlMWQzYSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2JkaXN0X3dpbmluc3QucHkKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICAgICAgdGFyZ2V0X3ZlcnNpb24gPSBzZWxmLnRhcmdldF92ZXJzaW9uCiAgICAgICAgICAgICBpZiBub3QgdGFyZ2V0X3ZlcnNpb246CiAgICAgICAgICAgICAgICAgYXNzZXJ0IHNlbGYuc2tpcF9idWlsZCwgIlNob3VsZCBoYXZlIGFscmVhZHkgY2hlY2tlZCB0aGlzIgotICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gc3lzLnZlcnNpb25bMDozXQorICAgICAgICAgICAgICAgIHRhcmdldF92ZXJzaW9uID0gJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICAgICBwbGF0X3NwZWNpZmllciA9ICIuJXMtJXMiICUgKHNlbGYucGxhdF9uYW1lLCB0YXJnZXRfdmVyc2lvbikKICAgICAgICAgICAgIGJ1aWxkID0gc2VsZi5nZXRfZmluYWxpemVkX2NvbW1hbmQoJ2J1aWxkJykKICAgICAgICAgICAgIGJ1aWxkLmJ1aWxkX2xpYiA9IG9zLnBhdGguam9pbihidWlsZC5idWlsZF9iYXNlLApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkLnB5CmluZGV4IDMzN2RkMGIuLmM2ZjUyZTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGQucHkKQEAgLTgxLDcgKzgxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiLS1wbGF0LW5hbWUgb25seSBzdXBwb3J0ZWQgb24gV2luZG93cyAodHJ5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXNpbmcgJy4vY29uZmlndXJlIC0taGVscCcgb24geW91ciBwbGF0Zm9ybSkiKQogCi0gICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lcyIgJSAoc2VsZi5wbGF0X25hbWUsIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHBsYXRfc3BlY2lmaWVyID0gIi4lcy0lZC4lZCIgJSAoc2VsZi5wbGF0X25hbWUsICpzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAogICAgICAgICAjIE1ha2UgaXQgc28gUHl0aG9uIDIueCBhbmQgUHl0aG9uIDIueCB3aXRoIC0td2l0aC1weWRlYnVnIGRvbid0CiAgICAgICAgICMgc2hhcmUgdGhlIHNhbWUgYnVpbGQgZGlyZWN0b3JpZXMuIERvaW5nIHNvIGNvbmZ1c2VzIHRoZSBidWlsZApAQCAtMTE0LDcgKzExNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3RlbXAnICsgcGxhdF9zcGVjaWZpZXIpCiAgICAgICAgIGlmIHNlbGYuYnVpbGRfc2NyaXB0cyBpcyBOb25lOgogICAgICAgICAgICAgc2VsZi5idWlsZF9zY3JpcHRzID0gb3MucGF0aC5qb2luKHNlbGYuYnVpbGRfYmFzZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0nICsgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2NyaXB0cy0lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKIAogICAgICAgICBpZiBzZWxmLmV4ZWN1dGFibGUgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuZXhlY3V0YWJsZSA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQppbmRleCA3YzI3OGVmLi43NGRlNzgyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9leHQucHkKQEAgLTM2NCw5ICszNjQsOSBAQAogCiAgICAgICAgICAgICBleHRfbmFtZSwgYnVpbGRfaW5mbyA9IGV4dAogCi0gICAgICAgICAgICBsb2cud2FybigoIm9sZC1zdHlsZSAoZXh0X25hbWUsIGJ1aWxkX2luZm8pIHR1cGxlIGZvdW5kIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAiZXh0X21vZHVsZXMgZm9yIGV4dGVuc2lvbiAnJXMnIgotICAgICAgICAgICAgICAgICAgICAgICItLSBwbGVhc2UgY29udmVydCB0byBFeHRlbnNpb24gaW5zdGFuY2UiICUgZXh0X25hbWUpKQorICAgICAgICAgICAgbG9nLndhcm4oIm9sZC1zdHlsZSAoZXh0X25hbWUsIGJ1aWxkX2luZm8pIHR1cGxlIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgICAgICJleHRfbW9kdWxlcyBmb3IgZXh0ZW5zaW9uICclcyciCisgICAgICAgICAgICAgICAgICAgICAiLS0gcGxlYXNlIGNvbnZlcnQgdG8gRXh0ZW5zaW9uIGluc3RhbmNlIiwgZXh0X25hbWUpCiAKICAgICAgICAgICAgIGlmIG5vdCAoaXNpbnN0YW5jZShleHRfbmFtZSwgc3RyKSBhbmQKICAgICAgICAgICAgICAgICAgICAgZXh0ZW5zaW9uX25hbWVfcmUubWF0Y2goZXh0X25hbWUpKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKaW5kZXggOTBhODM4MC4uY2NjNzBlNiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKQEAgLTUxLDcgKzUxLDcgQEAKIAogCiAgICAgZGVmIGNvcHlfc2NyaXB0cyhzZWxmKToKLSAgICAgICAgIiIiQ29weSBlYWNoIHNjcmlwdCBsaXN0ZWQgaW4gJ3NlbGYuc2NyaXB0cyc7IGlmIGl0J3MgbWFya2VkIGFzIGEKKyAgICAgICAgciIiIkNvcHkgZWFjaCBzY3JpcHQgbGlzdGVkIGluICdzZWxmLnNjcmlwdHMnOyBpZiBpdCdzIG1hcmtlZCBhcyBhCiAgICAgICAgIFB5dGhvbiBzY3JpcHQgaW4gdGhlIFVuaXggd2F5IChmaXJzdCBsaW5lIG1hdGNoZXMgJ2ZpcnN0X2xpbmVfcmUnLAogICAgICAgICBpZS4gc3RhcnRzIHdpdGggIlwjISIgYW5kIGNvbnRhaW5zICJweXRob24iKSwgdGhlbiBhZGp1c3QgdGhlIGZpcnN0CiAgICAgICAgIGxpbmUgdG8gcmVmZXIgdG8gdGhlIGN1cnJlbnQgUHl0aG9uIGludGVycHJldGVyIGFzIHdlIGNvcHkuCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2NvbmZpZy5weQppbmRleCA4NDdlODU4Li40YWUxNTNkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvY29uZmlnLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9jb25maWcucHkKQEAgLTksNyArOSw3IEBACiB0aGlzIGhlYWRlciBmaWxlIGxpdmVzIi4KICIiIgogCi1pbXBvcnQgc3lzLCBvcywgcmUKK2ltcG9ydCBvcywgcmUKIAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgQ29tbWFuZAogZnJvbSBkaXN0dXRpbHMuZXJyb3JzIGltcG9ydCBEaXN0dXRpbHNFeGVjRXJyb3IKQEAgLTMzNyw3ICszMzcsNyBAQAogICAgIElmIGhlYWQgaXMgbm90IE5vbmUsIHdpbGwgYmUgZHVtcGVkIGJlZm9yZSB0aGUgZmlsZSBjb250ZW50LgogICAgICIiIgogICAgIGlmIGhlYWQgaXMgTm9uZToKLSAgICAgICAgbG9nLmluZm8oJyVzJyAlIGZpbGVuYW1lKQorICAgICAgICBsb2cuaW5mbygnJXMnLCBmaWxlbmFtZSkKICAgICBlbHNlOgogICAgICAgICBsb2cuaW5mbyhoZWFkKQogICAgIGZpbGUgPSBvcGVuKGZpbGVuYW1lKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgYi9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQppbmRleCA2N2RiMDA3Li4wMjU4ZDNkZSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKQEAgLTE3NSw2ICsxNzUsNyBAQAogICAgICAgICBzZWxmLmNvbXBpbGUgPSBOb25lCiAgICAgICAgIHNlbGYub3B0aW1pemUgPSBOb25lCiAKKyAgICAgICAgIyBEZXByZWNhdGVkCiAgICAgICAgICMgVGhlc2UgdHdvIGFyZSBmb3IgcHV0dGluZyBub24tcGFja2FnaXplZCBkaXN0cmlidXRpb25zIGludG8gdGhlaXIKICAgICAgICAgIyBvd24gZGlyZWN0b3J5IGFuZCBjcmVhdGluZyBhIC5wdGggZmlsZSBpZiBpdCBtYWtlcyBzZW5zZS4KICAgICAgICAgIyAnZXh0cmFfcGF0aCcgY29tZXMgZnJvbSB0aGUgc2V0dXAgZmlsZTsgJ2luc3RhbGxfcGF0aF9maWxlJyBjYW4KQEAgLTI5MCw4ICsyOTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0X3ZlcnNpb24nOiBzZWxmLmRpc3RyaWJ1dGlvbi5nZXRfdmVyc2lvbigpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdkaXN0X2Z1bGxuYW1lJzogc2VsZi5kaXN0cmlidXRpb24uZ2V0X2Z1bGxuYW1lKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb24nOiBweV92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX3Nob3J0JzogcHlfdmVyc2lvblswOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweV92ZXJzaW9uX25vZG90JzogcHlfdmVyc2lvblswXSArIHB5X3ZlcnNpb25bMl0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fc2hvcnQnOiAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3B5X3ZlcnNpb25fbm9kb3QnOiAnJWQlZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzX3ByZWZpeCc6IHByZWZpeCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncHJlZml4JzogcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzeXNfZXhlY19wcmVmaXgnOiBleGVjX3ByZWZpeCwKQEAgLTM0NCw2ICszNDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NjcmlwdHMnLCAnZGF0YScsICdoZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1c2VyYmFzZScsICd1c2Vyc2l0ZScpCiAKKyAgICAgICAgIyBEZXByZWNhdGVkCiAgICAgICAgICMgV2VsbCwgd2UncmUgbm90IGFjdHVhbGx5IGZ1bGx5IGNvbXBsZXRlbHkgZmluYWxpemVkIHlldDogd2Ugc3RpbGwKICAgICAgICAgIyBoYXZlIHRvIGRlYWwgd2l0aCAnZXh0cmFfcGF0aCcsIHdoaWNoIGlzIHRoZSBoYWNrIGZvciBhbGxvd2luZwogICAgICAgICAjIG5vbi1wYWNrYWdpemVkIG1vZHVsZSBkaXN0cmlidXRpb25zIChoZWxsbywgTnVtZXJpY2FsIFB5dGhvbiEpIHRvCkBAIC0zODUsNyArMzg3LDcgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgb3B0X25hbWUgPSBvcHRfbmFtZS50cmFuc2xhdGUobG9uZ29wdF94bGF0ZSkKICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHNlbGYsIG9wdF9uYW1lKQotICAgICAgICAgICAgbG9nLmRlYnVnKCIgICVzOiAlcyIgJSAob3B0X25hbWUsIHZhbCkpCisgICAgICAgICAgICBsb2cuZGVidWcoIiAgJXM6ICVzIiwgb3B0X25hbWUsIHZhbCkKIAogICAgIGRlZiBmaW5hbGl6ZV91bml4KHNlbGYpOgogICAgICAgICAiIiJGaW5hbGl6ZXMgb3B0aW9ucyBmb3IgcG9zaXggcGxhdGZvcm1zLiIiIgpAQCAtNDkwLDYgKzQ5MiwxMCBAQAogICAgICAgICAgICAgc2VsZi5leHRyYV9wYXRoID0gc2VsZi5kaXN0cmlidXRpb24uZXh0cmFfcGF0aAogCiAgICAgICAgIGlmIHNlbGYuZXh0cmFfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIGxvZy53YXJuKAorICAgICAgICAgICAgICAgICJEaXN0cmlidXRpb24gb3B0aW9uIGV4dHJhX3BhdGggaXMgZGVwcmVjYXRlZC4gIgorICAgICAgICAgICAgICAgICJTZWUgaXNzdWUyNzkxOSBmb3IgZGV0YWlscy4iCisgICAgICAgICAgICApCiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYuZXh0cmFfcGF0aCwgc3RyKToKICAgICAgICAgICAgICAgICBzZWxmLmV4dHJhX3BhdGggPSBzZWxmLmV4dHJhX3BhdGguc3BsaXQoJywnKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbF9lZ2dfaW5mby5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CmluZGV4IGMyYTdkNjQuLjBkZGM3MzYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsX2VnZ19pbmZvLnB5CkBAIC0yMSwxMCArMjEsMTAgQEAKIAogICAgIGRlZiBmaW5hbGl6ZV9vcHRpb25zKHNlbGYpOgogICAgICAgICBzZWxmLnNldF91bmRlZmluZWRfb3B0aW9ucygnaW5zdGFsbF9saWInLCgnaW5zdGFsbF9kaXInLCdpbnN0YWxsX2RpcicpKQotICAgICAgICBiYXNlbmFtZSA9ICIlcy0lcy1weSVzLmVnZy1pbmZvIiAlICgKKyAgICAgICAgYmFzZW5hbWUgPSAiJXMtJXMtcHklZC4lZC5lZ2ctaW5mbyIgJSAoCiAgICAgICAgICAgICB0b19maWxlbmFtZShzYWZlX25hbWUoc2VsZi5kaXN0cmlidXRpb24uZ2V0X25hbWUoKSkpLAogICAgICAgICAgICAgdG9fZmlsZW5hbWUoc2FmZV92ZXJzaW9uKHNlbGYuZGlzdHJpYnV0aW9uLmdldF92ZXJzaW9uKCkpKSwKLSAgICAgICAgICAgIHN5cy52ZXJzaW9uWzozXQorICAgICAgICAgICAgKnN5cy52ZXJzaW9uX2luZm9bOjJdCiAgICAgICAgICkKICAgICAgICAgc2VsZi50YXJnZXQgPSBvcy5wYXRoLmpvaW4oc2VsZi5pbnN0YWxsX2RpciwgYmFzZW5hbWUpCiAgICAgICAgIHNlbGYub3V0cHV0cyA9IFtzZWxmLnRhcmdldF0KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9yZWdpc3Rlci5weQppbmRleCA4NjM0M2M4Li4wZmFjOTRlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvcmVnaXN0ZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3JlZ2lzdGVyLnB5CkBAIC01LDcgKzUsNyBAQAogCiAjIGNyZWF0ZWQgMjAwMi8xMC8yMSwgUmljaGFyZCBKb25lcwogCi1pbXBvcnQgb3MsIHN0cmluZywgZ2V0cGFzcworaW1wb3J0IGdldHBhc3MKIGltcG9ydCBpbwogaW1wb3J0IHVybGxpYi5wYXJzZSwgdXJsbGliLnJlcXVlc3QKIGZyb20gd2FybmluZ3MgaW1wb3J0IHdhcm4KQEAgLTk0LDcgKzk0LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgICMgc2VuZCB0aGUgaW5mbyB0byB0aGUgc2VydmVyIGFuZCByZXBvcnQgdGhlIHJlc3VsdAogICAgICAgICAoY29kZSwgcmVzdWx0KSA9IHNlbGYucG9zdF90b19zZXJ2ZXIoc2VsZi5idWlsZF9wb3N0X2RhdGEoJ3ZlcmlmeScpKQotICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJyAlIChjb2RlLCByZXN1bHQpKQorICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogCiAgICAgZGVmIHNlbmRfbWV0YWRhdGEoc2VsZik6CiAgICAgICAgICcnJyBTZW5kIHRoZSBtZXRhZGF0YSB0byB0aGUgcGFja2FnZSBpbmRleCBzZXJ2ZXIuCkBAIC0yMDUsNyArMjA1LDcgQEAKICAgICAgICAgICAgICAgICBkYXRhWydlbWFpbCddID0gaW5wdXQoJyAgIEVNYWlsOiAnKQogICAgICAgICAgICAgY29kZSwgcmVzdWx0ID0gc2VsZi5wb3N0X3RvX3NlcnZlcihkYXRhKQogICAgICAgICAgICAgaWYgY29kZSAhPSAyMDA6Ci0gICAgICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgICAgICAgICBsb2cuaW5mbygnU2VydmVyIHJlc3BvbnNlICglcyk6ICVzJywgY29kZSwgcmVzdWx0KQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBsb2cuaW5mbygnWW91IHdpbGwgcmVjZWl2ZSBhbiBlbWFpbCBzaG9ydGx5LicpCiAgICAgICAgICAgICAgICAgbG9nLmluZm8oKCdGb2xsb3cgdGhlIGluc3RydWN0aW9ucyBpbiBpdCB0byAnCkBAIC0yMTYsNyArMjE2LDcgQEAKICAgICAgICAgICAgIHdoaWxlIG5vdCBkYXRhWydlbWFpbCddOgogICAgICAgICAgICAgICAgIGRhdGFbJ2VtYWlsJ10gPSBpbnB1dCgnWW91ciBlbWFpbCBhZGRyZXNzOiAnKQogICAgICAgICAgICAgY29kZSwgcmVzdWx0ID0gc2VsZi5wb3N0X3RvX3NlcnZlcihkYXRhKQotICAgICAgICAgICAgbG9nLmluZm8oJ1NlcnZlciByZXNwb25zZSAoJXMpOiAlcycgJSAoY29kZSwgcmVzdWx0KSkKKyAgICAgICAgICAgIGxvZy5pbmZvKCdTZXJ2ZXIgcmVzcG9uc2UgKCVzKTogJXMnLCBjb2RlLCByZXN1bHQpCiAKICAgICBkZWYgYnVpbGRfcG9zdF9kYXRhKHNlbGYsIGFjdGlvbik6CiAgICAgICAgICMgZmlndXJlIHRoZSBkYXRhIHRvIHNlbmQgLSB0aGUgbWV0YWRhdGEgcGx1cyBzb21lIGFkZGl0aW9uYWwKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9zZGlzdC5weQppbmRleCA3ZWEzZDVmLi40ZmQxZDQ3IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvc2Rpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jb21tYW5kL3NkaXN0LnB5CkBAIC0zLDcgKzMsNiBAQAogSW1wbGVtZW50cyB0aGUgRGlzdHV0aWxzICdzZGlzdCcgY29tbWFuZCAoY3JlYXRlIGEgc291cmNlIGRpc3RyaWJ1dGlvbikuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogZnJvbSB0eXBlcyBpbXBvcnQgKgogZnJvbSBnbG9iIGltcG9ydCBnbG9iCkBAIC05Miw5ICs5MSw2IEBACiAgICAgbmVnYXRpdmVfb3B0ID0geyduby1kZWZhdWx0cyc6ICd1c2UtZGVmYXVsdHMnLAogICAgICAgICAgICAgICAgICAgICAnbm8tcHJ1bmUnOiAncHJ1bmUnIH0KIAotICAgIGRlZmF1bHRfZm9ybWF0ID0geydwb3NpeCc6ICdnenRhcicsCi0gICAgICAgICAgICAgICAgICAgICAgJ250JzogJ3ppcCcgfQotCiAgICAgc3ViX2NvbW1hbmRzID0gWygnY2hlY2snLCBjaGVja2luZ19tZXRhZGF0YSldCiAKICAgICBkZWYgaW5pdGlhbGl6ZV9vcHRpb25zKHNlbGYpOgpAQCAtMTExLDcgKzEwNyw3IEBACiAgICAgICAgIHNlbGYubWFuaWZlc3Rfb25seSA9IDAKICAgICAgICAgc2VsZi5mb3JjZV9tYW5pZmVzdCA9IDAKIAotICAgICAgICBzZWxmLmZvcm1hdHMgPSBOb25lCisgICAgICAgIHNlbGYuZm9ybWF0cyA9IFsnZ3p0YXInXQogICAgICAgICBzZWxmLmtlZXBfdGVtcCA9IDAKICAgICAgICAgc2VsZi5kaXN0X2RpciA9IE5vbmUKIApAQCAtMTI3LDEzICsxMjMsNiBAQAogICAgICAgICAgICAgc2VsZi50ZW1wbGF0ZSA9ICJNQU5JRkVTVC5pbiIKIAogICAgICAgICBzZWxmLmVuc3VyZV9zdHJpbmdfbGlzdCgnZm9ybWF0cycpCi0gICAgICAgIGlmIHNlbGYuZm9ybWF0cyBpcyBOb25lOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNlbGYuZm9ybWF0cyA9IFtzZWxmLmRlZmF1bHRfZm9ybWF0W29zLm5hbWVdXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IoCi0gICAgICAgICAgICAgICAgICAgICAgImRvbid0IGtub3cgaG93IHRvIGNyZWF0ZSBzb3VyY2UgZGlzdHJpYnV0aW9ucyAiCi0gICAgICAgICAgICAgICAgICAgICAgIm9uIHBsYXRmb3JtICVzIiAlIG9zLm5hbWUpCiAKICAgICAgICAgYmFkX2Zvcm1hdCA9IGFyY2hpdmVfdXRpbC5jaGVja19hcmNoaXZlX2Zvcm1hdHMoc2VsZi5mb3JtYXRzKQogICAgICAgICBpZiBiYWRfZm9ybWF0OgpAQCAtNDIzLDcgKzQxMiw3IEBACiAgICAgICAgICAgICBsb2cuaW5mbyhtc2cpCiAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNmaWxlKGZpbGUpOgotICAgICAgICAgICAgICAgIGxvZy53YXJuKCInJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZSAtLSBza2lwcGluZyIgJSBmaWxlKQorICAgICAgICAgICAgICAgIGxvZy53YXJuKCInJXMnIG5vdCBhIHJlZ3VsYXIgZmlsZSAtLSBza2lwcGluZyIsIGZpbGUpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRlc3QgPSBvcy5wYXRoLmpvaW4oYmFzZV9kaXIsIGZpbGUpCiAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZmlsZSwgZGVzdCwgbGluaz1saW5rKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy9jb3JlLnB5CmluZGV4IGYwNWIzNGIuLmQ2MDNkNGEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvY29yZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL2NvcmUucHkKQEAgLTIwNCwxNiArMjA0LDE1IEBACiAgICAgZ2xvYmFsIF9zZXR1cF9zdG9wX2FmdGVyLCBfc2V0dXBfZGlzdHJpYnV0aW9uCiAgICAgX3NldHVwX3N0b3BfYWZ0ZXIgPSBzdG9wX2FmdGVyCiAKLSAgICBzYXZlX2FyZ3YgPSBzeXMuYXJndgorICAgIHNhdmVfYXJndiA9IHN5cy5hcmd2LmNvcHkoKQogICAgIGcgPSB7J19fZmlsZV9fJzogc2NyaXB0X25hbWV9Ci0gICAgbCA9IHt9CiAgICAgdHJ5OgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuYXJndlswXSA9IHNjcmlwdF9uYW1lCiAgICAgICAgICAgICBpZiBzY3JpcHRfYXJncyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzeXMuYXJndlsxOl0gPSBzY3JpcHRfYXJncwogICAgICAgICAgICAgd2l0aCBvcGVuKHNjcmlwdF9uYW1lLCAncmInKSBhcyBmOgotICAgICAgICAgICAgICAgIGV4ZWMoZi5yZWFkKCksIGcsIGwpCisgICAgICAgICAgICAgICAgZXhlYyhmLnJlYWQoKSwgZykKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5hcmd2ID0gc2F2ZV9hcmd2CiAgICAgICAgICAgICBfc2V0dXBfc3RvcF9hZnRlciA9IE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvY3lnd2luY2NvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggYzg3OTY0Ni4uMWMzNjk5MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKKysrIGIvTGliL2Rpc3R1dGlscy9jeWd3aW5jY29tcGlsZXIucHkKQEAgLTM2OCw3ICszNjgsNyBAQAogICAgICAgICByZXR1cm4gKENPTkZJR19IX1VOQ0VSVEFJTiwKICAgICAgICAgICAgICAgICAiY291bGRuJ3QgcmVhZCAnJXMnOiAlcyIgJSAoZm4sIGV4Yy5zdHJlcnJvcikpCiAKLVJFX1ZFUlNJT04gPSByZS5jb21waWxlKGInKFxkK1wuXGQrKFwuXGQrKSopJykKK1JFX1ZFUlNJT04gPSByZS5jb21waWxlKGJyJyhcZCtcLlxkKyhcLlxkKykqKScpCiAKIGRlZiBfZmluZF9leGVfdmVyc2lvbihjbWQpOgogICAgICIiIkZpbmQgdGhlIHZlcnNpb24gb2YgYW4gZXhlY3V0YWJsZSBieSBydW5uaW5nIGBjbWRgIGluIHRoZSBzaGVsbC4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQppbmRleCBmZmIzM2ZmNi4uNjJhMjQ1MSAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9kaXN0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvZGlzdC5weQpAQCAtMTAxOCw4ICsxMDE4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibWFpbnRhaW5lciIsICJtYWludGFpbmVyX2VtYWlsIiwgInVybCIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImxpY2Vuc2UiLCAiZGVzY3JpcHRpb24iLCAibG9uZ19kZXNjcmlwdGlvbiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgImtleXdvcmRzIiwgInBsYXRmb3JtcyIsICJmdWxsbmFtZSIsICJjb250YWN0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFjdF9lbWFpbCIsICJsaWNlbnNlIiwgImNsYXNzaWZpZXJzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZG93bmxvYWRfdXJsIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiY29udGFjdF9lbWFpbCIsICJjbGFzc2lmaWVycyIsICJkb3dubG9hZF91cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICMgUEVQIDMxNAogICAgICAgICAgICAgICAgICAgICAgICAgICJwcm92aWRlcyIsICJyZXF1aXJlcyIsICJvYnNvbGV0ZXMiLAogICAgICAgICAgICAgICAgICAgICAgICAgICkKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvZXh0ZW5zaW9uLnB5IGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKaW5kZXggN2VmYmI3NC4uYzUwN2RhMyAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKKysrIGIvTGliL2Rpc3R1dGlscy9leHRlbnNpb24ucHkKQEAgLTQsNyArNCw2IEBACiBtb2R1bGVzIGluIHNldHVwIHNjcmlwdHMuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHdhcm5pbmdzCiAKICMgVGhpcyBjbGFzcyBpcyByZWFsbHkgb25seSB1c2VkIGJ5IHRoZSAiYnVpbGRfZXh0IiBjb21tYW5kLCBzbyBpdCBtaWdodApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvZmlsZWxpc3QucHkKaW5kZXggNjUyMmU2OS4uYzkyZDVmZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9maWxlbGlzdC5weQorKysgYi9MaWIvZGlzdHV0aWxzL2ZpbGVsaXN0LnB5CkBAIC0zMDIsMjEgKzMwMiwyNiBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHBhdHRlcm4KIAorICAgICMgZGl0Y2ggc3RhcnQgYW5kIGVuZCBjaGFyYWN0ZXJzCisgICAgc3RhcnQsIF8sIGVuZCA9IGdsb2JfdG9fcmUoJ18nKS5wYXJ0aXRpb24oJ18nKQorCiAgICAgaWYgcGF0dGVybjoKICAgICAgICAgcGF0dGVybl9yZSA9IGdsb2JfdG9fcmUocGF0dGVybikKKyAgICAgICAgYXNzZXJ0IHBhdHRlcm5fcmUuc3RhcnRzd2l0aChzdGFydCkgYW5kIHBhdHRlcm5fcmUuZW5kc3dpdGgoZW5kKQogICAgIGVsc2U6CiAgICAgICAgIHBhdHRlcm5fcmUgPSAnJwogCiAgICAgaWYgcHJlZml4IGlzIG5vdCBOb25lOgotICAgICAgICAjIGRpdGNoIGVuZCBvZiBwYXR0ZXJuIGNoYXJhY3RlcgotICAgICAgICBlbXB0eV9wYXR0ZXJuID0gZ2xvYl90b19yZSgnJykKLSAgICAgICAgcHJlZml4X3JlID0gZ2xvYl90b19yZShwcmVmaXgpWzotbGVuKGVtcHR5X3BhdHRlcm4pXQorICAgICAgICBwcmVmaXhfcmUgPSBnbG9iX3RvX3JlKHByZWZpeCkKKyAgICAgICAgYXNzZXJ0IHByZWZpeF9yZS5zdGFydHN3aXRoKHN0YXJ0KSBhbmQgcHJlZml4X3JlLmVuZHN3aXRoKGVuZCkKKyAgICAgICAgcHJlZml4X3JlID0gcHJlZml4X3JlW2xlbihzdGFydCk6IGxlbihwcmVmaXhfcmUpIC0gbGVuKGVuZCldCiAgICAgICAgIHNlcCA9IG9zLnNlcAogICAgICAgICBpZiBvcy5zZXAgPT0gJ1xcJzoKICAgICAgICAgICAgIHNlcCA9IHInXFwnCi0gICAgICAgIHBhdHRlcm5fcmUgPSAiXiIgKyBzZXAuam9pbigocHJlZml4X3JlLCAiLioiICsgcGF0dGVybl9yZSkpCisgICAgICAgIHBhdHRlcm5fcmUgPSBwYXR0ZXJuX3JlW2xlbihzdGFydCk6IGxlbihwYXR0ZXJuX3JlKSAtIGxlbihlbmQpXQorICAgICAgICBwYXR0ZXJuX3JlID0gciclc1xBJXMlcy4qJXMlcycgJSAoc3RhcnQsIHByZWZpeF9yZSwgc2VwLCBwYXR0ZXJuX3JlLCBlbmQpCiAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBubyBwcmVmaXggLS0gcmVzcGVjdCBhbmNob3IgZmxhZwogICAgICAgICBpZiBhbmNob3I6Ci0gICAgICAgICAgICBwYXR0ZXJuX3JlID0gIl4iICsgcGF0dGVybl9yZQorICAgICAgICAgICAgcGF0dGVybl9yZSA9IHInJXNcQSVzJyAlIChzdGFydCwgcGF0dGVybl9yZVtsZW4oc3RhcnQpOl0pCiAKICAgICByZXR1cm4gcmUuY29tcGlsZShwYXR0ZXJuX3JlKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5IGIvTGliL2Rpc3R1dGlscy9tc3ZjOWNvbXBpbGVyLnB5CmluZGV4IDBiMWZkMTkuLjIxMTkxMjcgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvbXN2Yzljb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL21zdmM5Y29tcGlsZXIucHkKQEAgLTcxNiw3ICs3MTYsNyBAQAogICAgICAgICAgICAgICAgIHIiIiJWQ1xkezJ9XC5DUlQoInwnKS4qPygvPnw8L2Fzc2VtYmx5SWRlbnRpdHk+KSIiIiwKICAgICAgICAgICAgICAgICByZS5ET1RBTEwpCiAgICAgICAgICAgICBtYW5pZmVzdF9idWYgPSByZS5zdWIocGF0dGVybiwgIiIsIG1hbmlmZXN0X2J1ZikKLSAgICAgICAgICAgIHBhdHRlcm4gPSAiPGRlcGVuZGVudEFzc2VtYmx5PlxzKjwvZGVwZW5kZW50QXNzZW1ibHk+IgorICAgICAgICAgICAgcGF0dGVybiA9IHIiPGRlcGVuZGVudEFzc2VtYmx5PlxzKjwvZGVwZW5kZW50QXNzZW1ibHk+IgogICAgICAgICAgICAgbWFuaWZlc3RfYnVmID0gcmUuc3ViKHBhdHRlcm4sICIiLCBtYW5pZmVzdF9idWYpCiAgICAgICAgICAgICAjIE5vdyBzZWUgaWYgYW55IG90aGVyIGFzc2VtYmxpZXMgYXJlIHJlZmVyZW5jZWQgLSBpZiBub3QsIHdlCiAgICAgICAgICAgICAjIGRvbid0IHdhbnQgYSBtYW5pZmVzdCBlbWJlZGRlZC4KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKaW5kZXggNTczNzI0ZC4uOGJmMWE3MCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKQEAgLTcwLDcgKzcwLDcgQEAKICAgICBsZWF2aW5nIG9mZiB0aGUgcGF0Y2hsZXZlbC4gIFNhbXBsZSByZXR1cm4gdmFsdWVzIGNvdWxkIGJlICcxLjUnCiAgICAgb3IgJzIuMicuCiAgICAgIiIiCi0gICAgcmV0dXJuIHN5cy52ZXJzaW9uWzozXQorICAgIHJldHVybiAnJWQuJWQnICUgc3lzLnZlcnNpb25faW5mb1s6Ml0KIAogCiBkZWYgZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wLCBwcmVmaXg9Tm9uZSk6CkBAIC0yNDIsNiArMjQyLDggQEAKICAgICAgICAgcmV0dXJuIG9zLnBhdGguam9pbihfc3lzX2hvbWUgb3IgcHJvamVjdF9iYXNlLCAiTWFrZWZpbGUiKQogICAgIGxpYl9kaXIgPSBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0xKQogICAgIGNvbmZpZ19maWxlID0gJ2NvbmZpZy17fXt9Jy5mb3JtYXQoZ2V0X3B5dGhvbl92ZXJzaW9uKCksIGJ1aWxkX2ZsYWdzKQorICAgIGlmIGhhc2F0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcpOgorICAgICAgICBjb25maWdfZmlsZSArPSAnLSVzJyAlIHN5cy5pbXBsZW1lbnRhdGlvbi5fbXVsdGlhcmNoCiAgICAgcmV0dXJuIG9zLnBhdGguam9pbihsaWJfZGlyLCBjb25maWdfZmlsZSwgJ01ha2VmaWxlJykKIAogCkBAIC0yNzYsNyArMjc4LDcgQEAKIAogIyBSZWdleGVzIG5lZWRlZCBmb3IgcGFyc2luZyBNYWtlZmlsZSAoYW5kIHNpbWlsYXIgc3ludGF4ZXMsCiAjIGxpa2Ugb2xkLXN0eWxlIFNldHVwIGZpbGVzKS4KLV92YXJpYWJsZV9yeCA9IHJlLmNvbXBpbGUoIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQorX3ZhcmlhYmxlX3J4ID0gcmUuY29tcGlsZShyIihbYS16QS1aXVthLXpBLVowLTlfXSspXHMqPVxzKiguKikiKQogX2ZpbmR2YXIxX3J4ID0gcmUuY29tcGlsZShyIlwkXCgoW0EtWmEtel1bQS1aYS16MC05X10qKVwpIikKIF9maW5kdmFyMl9yeCA9IHJlLmNvbXBpbGUociJcJHsoW0EtWmEtel1bQS1aYS16MC05X10qKX0iKQogCkBAIC00MTUsMzggKzQxNywxOCBAQAogCiBkZWYgX2luaXRfcG9zaXgoKToKICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIFBPU0lYIHN5c3RlbXMuIiIiCi0gICAgZyA9IHt9Ci0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6Ci0gICAgdHJ5OgotICAgICAgICBmaWxlbmFtZSA9IGdldF9tYWtlZmlsZV9maWxlbmFtZSgpCi0gICAgICAgIHBhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCBnKQotICAgIGV4Y2VwdCBPU0Vycm9yIGFzIG1zZzoKLSAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotICAgICAgICAgICAgbXlfbXNnID0gbXlfbXNnICsgIiAoJXMpIiAlIG1zZy5zdHJlcnJvcgotCi0gICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotCi0gICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgcHljb25maWcuaDoKLSAgICB0cnk6Ci0gICAgICAgIGZpbGVuYW1lID0gZ2V0X2NvbmZpZ19oX2ZpbGVuYW1lKCkKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmaWxlOgotICAgICAgICAgICAgcGFyc2VfY29uZmlnX2goZmlsZSwgZykKLSAgICBleGNlcHQgT1NFcnJvciBhcyBtc2c6Ci0gICAgICAgIG15X21zZyA9ICJpbnZhbGlkIFB5dGhvbiBpbnN0YWxsYXRpb246IHVuYWJsZSB0byBvcGVuICVzIiAlIGZpbGVuYW1lCi0gICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLQotICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLQotICAgICMgT24gQUlYLCB0aGVyZSBhcmUgd3JvbmcgcGF0aHMgdG8gdGhlIGxpbmtlciBzY3JpcHRzIGluIHRoZSBNYWtlZmlsZQotICAgICMgLS0gdGhlc2UgcGF0aHMgYXJlIHJlbGF0aXZlIHRvIHRoZSBQeXRob24gc291cmNlLCBidXQgd2hlbiBpbnN0YWxsZWQKLSAgICAjIHRoZSBzY3JpcHRzIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeS4KLSAgICBpZiBweXRob25fYnVpbGQ6Ci0gICAgICAgIGdbJ0xEU0hBUkVEJ10gPSBnWydCTERTSEFSRUQnXQotCisgICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIHRoZSBzeXNjb25maWcgbW9kdWxlCisgICAgbmFtZSA9IG9zLmVudmlyb24uZ2V0KCdfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRScsCisgICAgICAgICdfc3lzY29uZmlnZGF0YV97YWJpfV97cGxhdGZvcm19X3ttdWx0aWFyY2h9Jy5mb3JtYXQoCisgICAgICAgIGFiaT1zeXMuYWJpZmxhZ3MsCisgICAgICAgIHBsYXRmb3JtPXN5cy5wbGF0Zm9ybSwKKyAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKKyAgICApKQorICAgIF90ZW1wID0gX19pbXBvcnRfXyhuYW1lLCBnbG9iYWxzKCksIGxvY2FscygpLCBbJ2J1aWxkX3RpbWVfdmFycyddLCAwKQorICAgIGJ1aWxkX3RpbWVfdmFycyA9IF90ZW1wLmJ1aWxkX3RpbWVfdmFycwogICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKLSAgICBfY29uZmlnX3ZhcnMgPSBnCisgICAgX2NvbmZpZ192YXJzID0ge30KKyAgICBfY29uZmlnX3ZhcnMudXBkYXRlKGJ1aWxkX3RpbWVfdmFycykKIAogCiBkZWYgX2luaXRfbnQoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYmRpc3RfcnBtLnB5CmluZGV4IDI1YzE0YWIuLmMxYTJhMDQgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9iZGlzdF9ycG0ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2JkaXN0X3JwbS5weQpAQCAtMywxNiArMywxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKLWltcG9ydCB0ZW1wZmlsZQotaW1wb3J0IHNodXRpbAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdAogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBEaXN0cmlidXRpb24KIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuYmRpc3RfcnBtIGltcG9ydCBiZGlzdF9ycG0KIGZyb20gZGlzdHV0aWxzLnRlc3RzIGltcG9ydCBzdXBwb3J0CiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgZmluZF9leGVjdXRhYmxlCi1mcm9tIGRpc3R1dGlscyBpbXBvcnQgc3Bhd24KLWZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCiAKIFNFVFVQX1BZID0gIiIiXAogZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZC5weQppbmRleCAzMzkxZjM2Li5iMDIwYTViIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGQucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkLnB5CkBAIC0yNyw3ICsyNyw3IEBACiAgICAgICAgICMgYnVpbGRfcGxhdGxpYiBpcyAnYnVpbGQvbGliLnBsYXRmb3JtLXgueFstcHlkZWJ1Z10nCiAgICAgICAgICMgZXhhbXBsZXM6CiAgICAgICAgICMgICBidWlsZC9saWIubWFjb3N4LTEwLjMtaTM4Ni0yLjcKLSAgICAgICAgcGxhdF9zcGVjID0gJy4lcy0lcycgJSAoY21kLnBsYXRfbmFtZSwgc3lzLnZlcnNpb25bMDozXSkKKyAgICAgICAgcGxhdF9zcGVjID0gJy4lcy0lZC4lZCcgJSAoY21kLnBsYXRfbmFtZSwgKnN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICBpZiBoYXNhdHRyKHN5cywgJ2dldHRvdGFscmVmY291bnQnKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjbWQuYnVpbGRfcGxhdGxpYi5lbmRzd2l0aCgnLXB5ZGVidWcnKSkKICAgICAgICAgICAgIHBsYXRfc3BlYyArPSAnLXB5ZGVidWcnCkBAIC00Miw3ICs0Miw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21kLmJ1aWxkX3RlbXAsIHdhbnRlZCkKIAogICAgICAgICAjIGJ1aWxkX3NjcmlwdHMgaXMgYnVpbGQvc2NyaXB0cy14LngKLSAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKGNtZC5idWlsZF9iYXNlLCAnc2NyaXB0cy0nICsgIHN5cy52ZXJzaW9uWzA6M10pCisgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbihjbWQuYnVpbGRfYmFzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzY3JpcHRzLSVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtZC5idWlsZF9zY3JpcHRzLCB3YW50ZWQpCiAKICAgICAgICAgIyBleGVjdXRhYmxlIGlzIG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWN1dGFibGUpCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX2V4dC5weQppbmRleCBmM2RmNTY0Li42YmUwY2EyIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfZXh0LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9leHQucHkKQEAgLTE2Niw3ICsxNjYsNiBAQAogICAgICAgICBjbWQgPSBzZWxmLmJ1aWxkX2V4dChkaXN0KQogICAgICAgICBjbWQuZmluYWxpemVfb3B0aW9ucygpCiAKLSAgICAgICAgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZwogICAgICAgICBweV9pbmNsdWRlID0gc3lzY29uZmlnLmdldF9weXRob25faW5jKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihweV9pbmNsdWRlLCBjbWQuaW5jbHVkZV9kaXJzKQogCmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfYnVpbGRfcHkucHkKaW5kZXggMTgyODNkYy4uMDcxMmU5MiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2J1aWxkX3B5LnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9idWlsZF9weS5weQpAQCAtMTY4LDcgKzE2OCw4IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBzeXMuZG9udF93cml0ZV9ieXRlY29kZSA9IG9sZF9kb250X3dyaXRlX2J5dGVjb2RlCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLCBzZWxmLmxvZ3NbMF1bMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZ3NbMF1bMV0gJSBzZWxmLmxvZ3NbMF1bMl0pCiAKIAogZGVmIHRlc3Rfc3VpdGUoKToKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jbGVhbi5weQppbmRleCBiNjRmMzAwLi5jNjA1YWZkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY2xlYW4ucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NsZWFuLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5jb21tYW5kLmNsZWFuLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBnZXRwYXNzCiAKIGZyb20gZGlzdHV0aWxzLmNvbW1hbmQuY2xlYW4gaW1wb3J0IGNsZWFuCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydApkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb25maWcucHkKaW5kZXggYTM4NDQ5Ny4uNzdlZjc4OCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvbmZpZy5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY29uZmlnLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5weXBpcmMucHlwaXJjLiIiIgotaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQogCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBQeVBJUkNDb21tYW5kCiBmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBEaXN0cmlidXRpb24KZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jb3JlLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKaW5kZXggNjU0MjI3Yy4uMjdjZTczMiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2NvcmUucHkKQEAgLTI5LDYgKzI5LDIxIEBACiBzZXR1cCgpCiAiIiIKIAorc2V0dXBfZG9lc19ub3RoaW5nID0gIiIiXAorZnJvbSBkaXN0dXRpbHMuY29yZSBpbXBvcnQgc2V0dXAKK3NldHVwKCkKKyIiIgorCisKK3NldHVwX2RlZmluZXNfc3ViY2xhc3MgPSAiIiJcCitmcm9tIGRpc3R1dGlscy5jb3JlIGltcG9ydCBzZXR1cAorZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsIGltcG9ydCBpbnN0YWxsIGFzIF9pbnN0YWxsCisKK2NsYXNzIGluc3RhbGwoX2luc3RhbGwpOgorICAgIHN1Yl9jb21tYW5kcyA9IF9pbnN0YWxsLnN1Yl9jb21tYW5kcyArIFsnY21kJ10KKworc2V0dXAoY21kY2xhc3M9eydpbnN0YWxsJzogaW5zdGFsbH0pCisiIiIKIAogY2xhc3MgQ29yZVRlc3RDYXNlKHN1cHBvcnQuRW52aXJvbkd1YXJkLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY3LDYgKzgyLDIxIEBACiAgICAgICAgIGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKICAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfdXNpbmdfX19maWxlX18pKQogCisgICAgZGVmIHRlc3RfcnVuX3NldHVwX3ByZXNlcnZlc19zeXNfYXJndihzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgcnVuX3NldHVwIGRvZXMgbm90IGNsb2JiZXIgc3lzLmFyZ3YKKyAgICAgICAgYXJndl9jb3B5ID0gc3lzLmFyZ3YuY29weSgpCisgICAgICAgIGRpc3R1dGlscy5jb3JlLnJ1bl9zZXR1cCgKKyAgICAgICAgICAgIHNlbGYud3JpdGVfc2V0dXAoc2V0dXBfZG9lc19ub3RoaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuYXJndiwgYXJndl9jb3B5KQorCisgICAgZGVmIHRlc3RfcnVuX3NldHVwX2RlZmluZXNfc3ViY2xhc3Moc2VsZik6CisgICAgICAgICMgTWFrZSBzdXJlIHRoZSBzY3JpcHQgY2FuIHVzZSBfX2ZpbGVfXzsgaWYgdGhhdCdzIG1pc3NpbmcsIHRoZSB0ZXN0CisgICAgICAgICMgc2V0dXAucHkgc2NyaXB0IHdpbGwgcmFpc2UgTmFtZUVycm9yLgorICAgICAgICBkaXN0ID0gZGlzdHV0aWxzLmNvcmUucnVuX3NldHVwKAorICAgICAgICAgICAgc2VsZi53cml0ZV9zZXR1cChzZXR1cF9kZWZpbmVzX3N1YmNsYXNzKSkKKyAgICAgICAgaW5zdGFsbCA9IGRpc3QuZ2V0X2NvbW1hbmRfb2JqKCdpbnN0YWxsJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY21kJywgaW5zdGFsbC5zdWJfY29tbWFuZHMpCisKICAgICBkZWYgdGVzdF9ydW5fc2V0dXBfdXNlc19jdXJyZW50X2RpcihzZWxmKToKICAgICAgICAgIyBUaGlzIHRlc3RzIHRoYXQgdGhlIHNldHVwIHNjcmlwdCBpcyBydW4gd2l0aCB0aGUgY3VycmVudCBkaXJlY3RvcnkKICAgICAgICAgIyBhcyBpdHMgb3duIGN1cnJlbnQgZGlyZWN0b3J5OyB0aGlzIHdhcyB0ZW1wb3JhcmlseSBicm9rZW4gYnkgYQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9jeWd3aW5jY29tcGlsZXIucHkKaW5kZXggODU2OTIxNi4uOWRjODY5ZCAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2N5Z3dpbmNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfY3lnd2luY2NvbXBpbGVyLnB5CkBAIC0zLDExICszLDEwIEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KLWltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gZGlzdHV0aWxzIGltcG9ydCBjeWd3aW5jY29tcGlsZXIKLWZyb20gZGlzdHV0aWxzLmN5Z3dpbmNjb21waWxlciBpbXBvcnQgKEN5Z3dpbkNDb21waWxlciwgY2hlY2tfY29uZmlnX2gsCitmcm9tIGRpc3R1dGlscy5jeWd3aW5jY29tcGlsZXIgaW1wb3J0IChjaGVja19jb25maWdfaCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IX09LLCBDT05GSUdfSF9OT1RPSywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPTkZJR19IX1VOQ0VSVEFJTiwgZ2V0X3ZlcnNpb25zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X21zdmNyKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2RlcF91dGlsLnB5CmluZGV4IDNlMWMzNjYuLmM2ZmFlMzkgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9kZXBfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZGVwX3V0aWwucHkKQEAgLTEsNyArMSw2IEBACiAiIiJUZXN0cyBmb3IgZGlzdHV0aWxzLmRlcF91dGlsLiIiIgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCiAKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlciwgbmV3ZXJfcGFpcndpc2UsIG5ld2VyX2dyb3VwCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc0ZpbGVFcnJvcgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlX3V0aWwucHkKaW5kZXggYTZkMDRmMC4uMDMwNDBhZiAxMDA2NDQKLS0tIGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVfdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZV91dGlsLnB5CkBAIC0xLDcgKzEsNiBAQAogIiIiVGVzdHMgZm9yIGRpc3R1dGlscy5maWxlX3V0aWwuIiIiCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBvcwotaW1wb3J0IHNodXRpbAogaW1wb3J0IGVycm5vCiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IHBhdGNoCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9maWxlbGlzdC5weQppbmRleCAzOTFhZjNjLi5jNzEzNDJkIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfZmlsZWxpc3QucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2ZpbGVsaXN0LnB5CkBAIC01MSwxNCArNTEsMTQgQEAKIAogICAgICAgICBmb3IgZ2xvYiwgcmVnZXggaW4gKAogICAgICAgICAgICAgIyBzaW1wbGUgY2FzZXMKLSAgICAgICAgICAgICgnZm9vKicsIHInZm9vW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8nLCByJ2Zvb1teJShzZXApc11cWig/bXMpJyksCi0gICAgICAgICAgICAoJ2Zvbz8/Jywgcidmb29bXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSwKKyAgICAgICAgICAgICgnZm9vKicsIHInKD9zOmZvb1teJShzZXApc10qKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8nLCByJyg/czpmb29bXiUoc2VwKXNdKVxaJyksCisgICAgICAgICAgICAoJ2Zvbz8/JywgcicoP3M6Zm9vW14lKHNlcClzXVteJShzZXApc10pXFonKSwKICAgICAgICAgICAgICMgc3BlY2lhbCBjYXNlcwotICAgICAgICAgICAgKHInZm9vXFwqJywgcidmb29cXFxcW14lKHNlcClzXSpcWig/bXMpJyksCi0gICAgICAgICAgICAocidmb29cXFwqJywgcidmb29cXFxcXFxbXiUoc2VwKXNdKlxaKD9tcyknKSwKLSAgICAgICAgICAgICgnZm9vPz8/PycsIHInZm9vW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSwKLSAgICAgICAgICAgIChyJ2Zvb1xcPz8nLCByJ2Zvb1xcXFxbXiUoc2VwKXNdW14lKHNlcClzXVxaKD9tcyknKSk6CisgICAgICAgICAgICAocidmb29cXConLCByJyg/czpmb29cXFxcW14lKHNlcClzXSopXFonKSwKKyAgICAgICAgICAgIChyJ2Zvb1xcXConLCByJyg/czpmb29cXFxcXFxbXiUoc2VwKXNdKilcWicpLAorICAgICAgICAgICAgKCdmb28/Pz8/JywgcicoP3M6Zm9vW14lKHNlcClzXVteJShzZXApc11bXiUoc2VwKXNdW14lKHNlcClzXSlcWicpLAorICAgICAgICAgICAgKHInZm9vXFw/PycsIHInKD9zOmZvb1xcXFxbXiUoc2VwKXNdW14lKHNlcClzXSlcWicpKToKICAgICAgICAgICAgIHJlZ2V4ID0gcmVnZXggJSB7J3NlcCc6IHNlcH0KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2xvYl90b19yZShnbG9iKSwgcmVnZXgpCiAKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9kYXRhLnB5CmluZGV4IDRkOGMwMGEuLjMyYWIyOTYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2RhdGEucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfZGF0YS5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2RhdGEuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2RhdGEgaW1wb3J0IGluc3RhbGxfZGF0YQogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9oZWFkZXJzLnB5CmluZGV4IGQ5NTMxNTcuLjIyMTdiMzIgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2hlYWRlcnMucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfaGVhZGVycy5weQpAQCAtMSw4ICsxLDYgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2hlYWRlcnMuIiIiCi1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGdldHBhc3MKIAogZnJvbSBkaXN0dXRpbHMuY29tbWFuZC5pbnN0YWxsX2hlYWRlcnMgaW1wb3J0IGluc3RhbGxfaGVhZGVycwogZnJvbSBkaXN0dXRpbHMudGVzdHMgaW1wb3J0IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weSBiL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9pbnN0YWxsX2xpYi5weQppbmRleCA1Mzc4YWE4Li5mZGE2MzE1IDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfaW5zdGFsbF9saWIucHkKKysrIGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X2luc3RhbGxfbGliLnB5CkBAIC0xMDQsNyArMTA0LDggQEAKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gb2xkX2RvbnRfd3JpdGVfYnl0ZWNvZGUKIAotICAgICAgICBzZWxmLmFzc2VydEluKCdieXRlLWNvbXBpbGluZyBpcyBkaXNhYmxlZCcsIHNlbGYubG9nc1swXVsxXSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYnl0ZS1jb21waWxpbmcgaXMgZGlzYWJsZWQnLAorICAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nc1swXVsxXSAlIHNlbGYubG9nc1swXVsyXSkKIAogCiBkZWYgdGVzdF9zdWl0ZSgpOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5IGIvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3NwYXduLnB5CmluZGV4IDZjN2ViMjAuLjVlZGMyNGEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGVzdHMvdGVzdF9zcGF3bi5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3Rfc3Bhd24ucHkKQEAgLTEsMTEgKzEsMTEgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMuc3Bhd24uIiIiCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzeXMKIGltcG9ydCBvcwotaW1wb3J0IHRpbWUKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRvdXQsIHJ1bl91bml0dGVzdAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgdW5peF9zaGVsbAogCiBmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgX250X3F1b3RlX2FyZ3MKLWZyb20gZGlzdHV0aWxzLnNwYXduIGltcG9ydCBzcGF3biwgZmluZF9leGVjdXRhYmxlCitmcm9tIGRpc3R1dGlscy5zcGF3biBpbXBvcnQgc3Bhd24KIGZyb20gZGlzdHV0aWxzLmVycm9ycyBpbXBvcnQgRGlzdHV0aWxzRXhlY0Vycm9yCiBmcm9tIGRpc3R1dGlscy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogCkBAIC0zMCw5ICszMCw5IEBACiAKICAgICAgICAgIyBjcmVhdGluZyBzb21ldGhpbmcgZXhlY3V0YWJsZQogICAgICAgICAjIHRocm91Z2ggdGhlIHNoZWxsIHRoYXQgcmV0dXJucyAxCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ3Bvc2l4JzoKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtICE9ICd3aW4zMic6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLnNoJykKLSAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjIS9iaW4vc2hcbmV4aXQgMScpCisgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnIyElc1xuZXhpdCAxJyAlIHVuaXhfc2hlbGwpCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAnZm9vLmJhdCcpCiAgICAgICAgICAgICBzZWxmLndyaXRlX2ZpbGUoZXhlLCAnZXhpdCAxJykKQEAgLTQxLDkgKzQxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRGlzdHV0aWxzRXhlY0Vycm9yLCBzcGF3biwgW2V4ZV0pCiAKICAgICAgICAgIyBub3cgc29tZXRoaW5nIHRoYXQgd29ya3MKLSAgICAgICAgaWYgb3MubmFtZSA9PSAncG9zaXgnOgorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uc2gnKQotICAgICAgICAgICAgc2VsZi53cml0ZV9maWxlKGV4ZSwgJyMhL2Jpbi9zaFxuZXhpdCAwJykKKyAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICcjISVzXG5leGl0IDAnICUgdW5peF9zaGVsbCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGV4ZSA9IG9zLnBhdGguam9pbih0bXBkaXIsICdmb28uYmF0JykKICAgICAgICAgICAgIHNlbGYud3JpdGVfZmlsZShleGUsICdleGl0IDAnKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy90ZXN0cy90ZXN0X3VuaXhjY29tcGlsZXIucHkgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weQppbmRleCBlMTcxZWU5Li5lZmJhMjdlIDEwMDY0NAotLS0gYS9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weQorKysgYi9MaWIvZGlzdHV0aWxzL3Rlc3RzL3Rlc3RfdW5peGNjb21waWxlci5weQpAQCAtMSw1ICsxLDQgQEAKICIiIlRlc3RzIGZvciBkaXN0dXRpbHMudW5peGNjb21waWxlci4iIiIKLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgRW52aXJvbm1lbnRWYXJHdWFyZCwgcnVuX3VuaXR0ZXN0CmRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3RleHRfZmlsZS5weSBiL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5CmluZGV4IDQ3ODMzNmYuLjkzYWJhZDMgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5CisrKyBiL0xpYi9kaXN0dXRpbHMvdGV4dF9maWxlLnB5CkBAIC00LDcgKzQsNyBAQAogdGhhdCAob3B0aW9uYWxseSkgdGFrZXMgY2FyZSBvZiBzdHJpcHBpbmcgY29tbWVudHMsIGlnbm9yaW5nIGJsYW5rCiBsaW5lcywgYW5kIGpvaW5pbmcgbGluZXMgd2l0aCBiYWNrc2xhc2hlcy4iIiIKIAotaW1wb3J0IHN5cywgb3MsIGlvCitpbXBvcnQgc3lzLCBpbwogCiAKIGNsYXNzIFRleHRGaWxlOgpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy91dGlsLnB5IGIvTGliL2Rpc3R1dGlscy91dGlsLnB5CmluZGV4IGU0MjMzMjUuLmZkY2Y2ZmEgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdXRpbC5weQorKysgYi9MaWIvZGlzdHV0aWxzL3V0aWwucHkKQEAgLTcsOCArNyw4IEBACiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGltcG9ydGxpYi51dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RyaW5nCitpbXBvcnQgc3lzCiBmcm9tIGRpc3R1dGlscy5lcnJvcnMgaW1wb3J0IERpc3R1dGlsc1BsYXRmb3JtRXJyb3IKIGZyb20gZGlzdHV0aWxzLmRlcF91dGlsIGltcG9ydCBuZXdlcgogZnJvbSBkaXN0dXRpbHMuc3Bhd24gaW1wb3J0IHNwYXduCkBAIC0zNTAsNiArMzUwLDExIEBACiAgICAgZ2VuZXJhdGVkIGluIGluZGlyZWN0IG1vZGU7IHVubGVzcyB5b3Uga25vdyB3aGF0IHlvdSdyZSBkb2luZywgbGVhdmUKICAgICBpdCBzZXQgdG8gTm9uZS4KICAgICAiIiIKKworICAgICMgTGF0ZSBpbXBvcnQgdG8gZml4IGEgYm9vdHN0cmFwIGlzc3VlOiBfcG9zaXhzdWJwcm9jZXNzIGlzIGJ1aWx0IGJ5CisgICAgIyBzZXR1cC5weSwgYnV0IHNldHVwLnB5IHVzZXMgZGlzdHV0aWxzLgorICAgIGltcG9ydCBzdWJwcm9jZXNzCisKICAgICAjIG5vdGhpbmcgaXMgZG9uZSBpZiBzeXMuZG9udF93cml0ZV9ieXRlY29kZSBpcyBUcnVlCiAgICAgaWYgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGU6CiAgICAgICAgIHJhaXNlIERpc3R1dGlsc0J5dGVDb21waWxlRXJyb3IoJ2J5dGUtY29tcGlsaW5nIGlzIGRpc2FibGVkLicpCkBAIC00MTIsMTEgKzQxNyw5IEBACiAKICAgICAgICAgICAgIHNjcmlwdC5jbG9zZSgpCiAKLSAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlLCBzY3JpcHRfbmFtZV0KLSAgICAgICAgaWYgb3B0aW1pemUgPT0gMToKLSAgICAgICAgICAgIGNtZC5pbnNlcnQoMSwgIi1PIikKLSAgICAgICAgZWxpZiBvcHRpbWl6ZSA9PSAyOgotICAgICAgICAgICAgY21kLmluc2VydCgxLCAiLU9PIikKKyAgICAgICAgY21kID0gW3N5cy5leGVjdXRhYmxlXQorICAgICAgICBjbWQuZXh0ZW5kKHN1YnByb2Nlc3MuX29wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQorICAgICAgICBjbWQuYXBwZW5kKHNjcmlwdF9uYW1lKQogICAgICAgICBzcGF3bihjbWQsIGRyeV9ydW49ZHJ5X3J1bikKICAgICAgICAgZXhlY3V0ZShvcy5yZW1vdmUsIChzY3JpcHRfbmFtZSwpLCAicmVtb3ZpbmcgJXMiICUgc2NyaXB0X25hbWUsCiAgICAgICAgICAgICAgICAgZHJ5X3J1bj1kcnlfcnVuKQpkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5IGIvTGliL2Rpc3R1dGlscy92ZXJzaW9ucHJlZGljYXRlLnB5CmluZGV4IGIwZGQ5ZjQuLjA2MmM5OGYgMTAwNjQ0Ci0tLSBhL0xpYi9kaXN0dXRpbHMvdmVyc2lvbnByZWRpY2F0ZS5weQorKysgYi9MaWIvZGlzdHV0aWxzL3ZlcnNpb25wcmVkaWNhdGUucHkKQEAgLTE1NCw3ICsxNTQsNyBAQAogICAgIGdsb2JhbCBfcHJvdmlzaW9uX3J4CiAgICAgaWYgX3Byb3Zpc2lvbl9yeCBpcyBOb25lOgogICAgICAgICBfcHJvdmlzaW9uX3J4ID0gcmUuY29tcGlsZSgKLSAgICAgICAgICAgICIoW2EtekEtWl9dXHcqKD86XC5bYS16QS1aX11cdyopKikoPzpccypcKFxzKihbXilcc10rKVxzKlwpKT8kIiwKKyAgICAgICAgICAgIHIiKFthLXpBLVpfXVx3Kig/OlwuW2EtekEtWl9dXHcqKSopKD86XHMqXChccyooW14pXHNdKylccypcKSk/JCIsCiAgICAgICAgICAgICByZS5BU0NJSSkKICAgICB2YWx1ZSA9IHZhbHVlLnN0cmlwKCkKICAgICBtID0gX3Byb3Zpc2lvbl9yeC5tYXRjaCh2YWx1ZSkKZGlmZiAtLWdpdCBhL0xpYi9kb2N0ZXN0LnB5IGIvTGliL2RvY3Rlc3QucHkKaW5kZXggMzhmZGQ4MC4uMGI3ODU0NCAxMDA2NDQKLS0tIGEvTGliL2RvY3Rlc3QucHkKKysrIGIvTGliL2RvY3Rlc3QucHkKQEAgLTM4MSwxMiArMzgxLDE1IEBACiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2F2ZV9zdGRvdXQKIAogIyBbWFhdIE5vcm1hbGl6ZSB3aXRoIHJlc3BlY3QgdG8gb3MucGF0aC5wYXJkaXI/Ci1kZWYgX21vZHVsZV9yZWxhdGl2ZV9wYXRoKG1vZHVsZSwgcGF0aCk6CitkZWYgX21vZHVsZV9yZWxhdGl2ZV9wYXRoKG1vZHVsZSwgdGVzdF9wYXRoKToKICAgICBpZiBub3QgaW5zcGVjdC5pc21vZHVsZShtb2R1bGUpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0V4cGVjdGVkIGEgbW9kdWxlOiAlcicgJSBtb2R1bGUpCi0gICAgaWYgcGF0aC5zdGFydHN3aXRoKCcvJyk6CisgICAgaWYgdGVzdF9wYXRoLnN0YXJ0c3dpdGgoJy8nKToKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignTW9kdWxlLXJlbGF0aXZlIGZpbGVzIG1heSBub3QgaGF2ZSBhYnNvbHV0ZSBwYXRocycpCiAKKyAgICAjIE5vcm1hbGl6ZSB0aGUgcGF0aC4gT24gV2luZG93cywgcmVwbGFjZSAiLyIgd2l0aCAiXCIuCisgICAgdGVzdF9wYXRoID0gb3MucGF0aC5qb2luKCoodGVzdF9wYXRoLnNwbGl0KCcvJykpKQorCiAgICAgIyBGaW5kIHRoZSBiYXNlIGRpcmVjdG9yeSBmb3IgdGhlIHBhdGguCiAgICAgaWYgaGFzYXR0cihtb2R1bGUsICdfX2ZpbGVfXycpOgogICAgICAgICAjIEEgbm9ybWFsIG1vZHVsZS9wYWNrYWdlCkBAIC0zOTgsMTMgKzQwMSwxOSBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYmFzZWRpciA9IG9zLmN1cmRpcgogICAgIGVsc2U6CisgICAgICAgIGlmIGhhc2F0dHIobW9kdWxlLCAnX19wYXRoX18nKToKKyAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gbW9kdWxlLl9fcGF0aF9fOgorICAgICAgICAgICAgICAgIGZ1bGxwYXRoID0gb3MucGF0aC5qb2luKGRpcmVjdG9yeSwgdGVzdF9wYXRoKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGZ1bGxwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bGxwYXRoCisKICAgICAgICAgIyBBIG1vZHVsZSB3L28gX19maWxlX18gKHRoaXMgaW5jbHVkZXMgYnVpbHRpbnMpCiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkNhbid0IHJlc29sdmUgcGF0aHMgcmVsYXRpdmUgdG8gdGhlIG1vZHVsZSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgIiVyIChpdCBoYXMgbm8gX19maWxlX18pIgogICAgICAgICAgICAgICAgICAgICAgICAgICUgbW9kdWxlLl9fbmFtZV9fKQogCi0gICAgIyBDb21iaW5lIHRoZSBiYXNlIGRpcmVjdG9yeSBhbmQgdGhlIHBhdGguCi0gICAgcmV0dXJuIG9zLnBhdGguam9pbihiYXNlZGlyLCAqKHBhdGguc3BsaXQoJy8nKSkpCisgICAgIyBDb21iaW5lIHRoZSBiYXNlIGRpcmVjdG9yeSBhbmQgdGhlIHRlc3QgcGF0aC4KKyAgICByZXR1cm4gb3MucGF0aC5qb2luKGJhc2VkaXIsIHRlc3RfcGF0aCkKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyMgMi4gRXhhbXBsZSAmIERvY1Rlc3QKQEAgLTc1Niw3ICs3NjUsNyBAQAogCiAgICAgIyBUaGlzIHJlZ3VsYXIgZXhwcmVzc2lvbiBmaW5kcyB0aGUgaW5kZW50YXRpb24gb2YgZXZlcnkgbm9uLWJsYW5rCiAgICAgIyBsaW5lIGluIGEgc3RyaW5nLgotICAgIF9JTkRFTlRfUkUgPSByZS5jb21waWxlKCdeKFsgXSopKD89XFMpJywgcmUuTVVMVElMSU5FKQorICAgIF9JTkRFTlRfUkUgPSByZS5jb21waWxlKHInXihbIF0qKSg/PVxTKScsIHJlLk1VTFRJTElORSkKIAogICAgIGRlZiBfbWluX2luZGVudChzZWxmLCBzKToKICAgICAgICAgIlJldHVybiB0aGUgbWluaW11bSBpbmRlbnRhdGlvbiBvZiBhbnkgbm9uLWJsYW5rIGxpbmUgaW4gYHNgIgpAQCAtMTA5Nyw3ICsxMTA2LDcgQEAKICAgICAgICAgaWYgbGluZW5vIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaWYgc291cmNlX2xpbmVzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVubysxCi0gICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoXnwuKjopXHMqXHcqKCJ8XCcpJykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocicoXnwuKjopXHMqXHcqKCJ8XCcpJykKICAgICAgICAgICAgIGZvciBsaW5lbm8gaW4gcmFuZ2UobGluZW5vLCBsZW4oc291cmNlX2xpbmVzKSk6CiAgICAgICAgICAgICAgICAgaWYgcGF0Lm1hdGNoKHNvdXJjZV9saW5lc1tsaW5lbm9dKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxpbmVubwpAQCAtMTU5OSwxMSArMTYwOCwxMSBAQAogICAgICAgICAjIGJsYW5rIGxpbmUsIHVubGVzcyB0aGUgRE9OVF9BQ0NFUFRfQkxBTktMSU5FIGZsYWcgaXMgdXNlZC4KICAgICAgICAgaWYgbm90IChvcHRpb25mbGFncyAmIERPTlRfQUNDRVBUX0JMQU5LTElORSk6CiAgICAgICAgICAgICAjIFJlcGxhY2UgPEJMQU5LTElORT4gaW4gd2FudCB3aXRoIGEgYmxhbmsgbGluZS4KLSAgICAgICAgICAgIHdhbnQgPSByZS5zdWIoJyg/bSleJXNccyo/JCcgJSByZS5lc2NhcGUoQkxBTktMSU5FX01BUktFUiksCisgICAgICAgICAgICB3YW50ID0gcmUuc3ViKHInKD9tKV4lc1xzKj8kJyAlIHJlLmVzY2FwZShCTEFOS0xJTkVfTUFSS0VSKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJycsIHdhbnQpCiAgICAgICAgICAgICAjIElmIGEgbGluZSBpbiBnb3QgY29udGFpbnMgb25seSBzcGFjZXMsIHRoZW4gcmVtb3ZlIHRoZQogICAgICAgICAgICAgIyBzcGFjZXMuCi0gICAgICAgICAgICBnb3QgPSByZS5zdWIoJyg/bSleXHMqPyQnLCAnJywgZ290KQorICAgICAgICAgICAgZ290ID0gcmUuc3ViKHInKD9tKV5ccyo/JCcsICcnLCBnb3QpCiAgICAgICAgICAgICBpZiBnb3QgPT0gd2FudDoKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvZW1haWwvX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKaW5kZXggNWRmOTUxMS4uNTdkMDFmYiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CisrKyBiL0xpYi9lbWFpbC9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtNjUyLDggKzY1Miw4IEBACiAgICAgICAgIGlmIHZhbHVlLnRva2VuX3R5cGUgPT0gJ2NvbW1lbnQnOgogICAgICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkKICAgICAgICAgcmV0dXJuIHN0cih2YWx1ZSkucmVwbGFjZSgnXFwnLCAnXFxcXCcpLnJlcGxhY2UoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJygnLCAnXCgnKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJywgJ1wpJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKCcsIHInXCgnKS5yZXBsYWNlKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcpJywgcidcKScpCiAKICAgICBAcHJvcGVydHkKICAgICBkZWYgY29udGVudChzZWxmKToKQEAgLTEzNTYsMTUgKzEzNTYsMTUgQEAKIAogX3dzcF9zcGxpdHRlciA9IHJlLmNvbXBpbGUocicoW3t9XSspJy5mb3JtYXQoJycuam9pbihXU1ApKSkuc3BsaXQKIF9ub25fYXRvbV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKLSAgICAnJy5qb2luKEFUT01fRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oQVRPTV9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9wcmludGFibGVfZmluZGVyID0gcmUuY29tcGlsZShyIltceDAwLVx4MjBceDdGXSIpLmZpbmRhbGwKIF9ub25fdG9rZW5fZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihUT0tFTl9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJywnXF0nKSkpLm1hdGNoCisgICAgJycuam9pbihUT0tFTl9FTkRTKS5yZXBsYWNlKCdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogX25vbl9hdHRyaWJ1dGVfZW5kX21hdGNoZXIgPSByZS5jb21waWxlKHIiW157fV0rIi5mb3JtYXQoCi0gICAgJycuam9pbihBVFRSSUJVVEVfRU5EUykucmVwbGFjZSgnXFwnLCdcXFxcJykucmVwbGFjZSgnXScsJ1xdJykpKS5tYXRjaAorICAgICcnLmpvaW4oQVRUUklCVVRFX0VORFMpLnJlcGxhY2UoJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLHInXF0nKSkpLm1hdGNoCiBfbm9uX2V4dGVuZGVkX2F0dHJpYnV0ZV9lbmRfbWF0Y2hlciA9IHJlLmNvbXBpbGUociJbXnt9XSsiLmZvcm1hdCgKICAgICAnJy5qb2luKEVYVEVOREVEX0FUVFJJQlVURV9FTkRTKS5yZXBsYWNlKAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xcJywnXFxcXCcpLnJlcGxhY2UoJ10nLCdcXScpKSkubWF0Y2gKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcXCcsJ1xcXFwnKS5yZXBsYWNlKCddJyxyJ1xdJykpKS5tYXRjaAogCiBkZWYgX3ZhbGlkYXRlX3h0ZXh0KHh0ZXh0KToKICAgICAiIiJJZiBpbnB1dCB0b2tlbiBjb250YWlucyBBU0NJSSBub24tcHJpbnRhYmxlcywgcmVnaXN0ZXIgYSBkZWZlY3QuIiIiCkBAIC0xNTE3LDcgKzE1MTcsNyBAQAogICAgIHJldHVybiB1bnN0cnVjdHVyZWQKIAogZGVmIGdldF9xcF9jdGV4dCh2YWx1ZSk6Ci0gICAgIiIiY3RleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcICggKT4KKyAgICByIiIiY3RleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcICggKT4KIAogICAgIFRoaXMgaXMgbm90IHRoZSBSRkMgY3RleHQsIHNpbmNlIHdlIGFyZSBoYW5kbGluZyBuZXN0ZWQgY29tbWVudHMgaW4gY29tbWVudAogICAgIGFuZCB1bnF1b3RpbmcgcXVvdGVkLXBhaXJzIGhlcmUuICBXZSBhbGxvdyBhbnl0aGluZyBleGNlcHQgdGhlICcoKScKQEAgLTE4NzgsNyArMTg3OCw3IEBACiAgICAgcmV0dXJuIG9ic19sb2NhbF9wYXJ0LCB2YWx1ZQogCiBkZWYgZ2V0X2R0ZXh0KHZhbHVlKToKLSAgICAiIiIgZHRleHQgPSA8cHJpbnRhYmxlIGFzY2lpIGV4Y2VwdCBcIFsgXT4gLyBvYnMtZHRleHQKKyAgICByIiIiIGR0ZXh0ID0gPHByaW50YWJsZSBhc2NpaSBleGNlcHQgXCBbIF0+IC8gb2JzLWR0ZXh0CiAgICAgICAgIG9icy1kdGV4dCA9IG9icy1OTy1XUy1DVEwgLyBxdW90ZWQtcGFpcgogCiAgICAgV2UgYWxsb3cgYW55dGhpbmcgZXhjZXB0IHRoZSBleGNsdWRlZCBjaGFyYWN0ZXJzLCBidXQgaWYgd2UgZmluZCBhbnkKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weSBiL0xpYi9lbWFpbC9fcG9saWN5YmFzZS5weQppbmRleCBjMGQ5OGE0Li5kZjQ2NDk2IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvX3BvbGljeWJhc2UucHkKKysrIGIvTGliL2VtYWlsL19wb2xpY3liYXNlLnB5CkBAIC0xNTQsNiArMTU0LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW0uIFRoaXMgaXMgdXNlZCB3aGVuIHRoZSBtZXNzYWdlIGlzIGJlaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxpemVkIGJ5IGEgZ2VuZXJhdG9yLiBEZWZhdWx0OiBUcnVlLgogCisgICAgbWVzc2FnZV9mYWN0b3J5ICAgICAtLSB0aGUgY2xhc3MgdG8gdXNlIHRvIGNyZWF0ZSBuZXcgbWVzc2FnZSBvYmplY3RzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgSWYgdGhlIHZhbHVlIGlzIE5vbmUsIHRoZSBkZWZhdWx0IGlzIE1lc3NhZ2UuCisKICAgICAiIiIKIAogICAgIHJhaXNlX29uX2RlZmVjdCA9IEZhbHNlCkBAIC0xNjEsNiArMTY0LDcgQEAKICAgICBjdGVfdHlwZSA9ICc4Yml0JwogICAgIG1heF9saW5lX2xlbmd0aCA9IDc4CiAgICAgbWFuZ2xlX2Zyb21fID0gRmFsc2UKKyAgICBtZXNzYWdlX2ZhY3RvcnkgPSBOb25lCiAKICAgICBkZWYgaGFuZGxlX2RlZmVjdChzZWxmLCBvYmosIGRlZmVjdCk6CiAgICAgICAgICIiIkJhc2VkIG9uIHBvbGljeSwgZWl0aGVyIHJhaXNlIGRlZmVjdCBvciBjYWxsIHJlZ2lzdGVyX2RlZmVjdC4KZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weSBiL0xpYi9lbWFpbC9jb250ZW50bWFuYWdlci5weQppbmRleCBiOThjZTI3Li5iOTA0ZGVkIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvY29udGVudG1hbmFnZXIucHkKKysrIGIvTGliL2VtYWlsL2NvbnRlbnRtYW5hZ2VyLnB5CkBAIC0xNDIsNyArMTQyLDcgQEAKIGRlZiBfZW5jb2RlX3RleHQoc3RyaW5nLCBjaGFyc2V0LCBjdGUsIHBvbGljeSk6CiAgICAgbGluZXMgPSBzdHJpbmcuZW5jb2RlKGNoYXJzZXQpLnNwbGl0bGluZXMoKQogICAgIGxpbmVzZXAgPSBwb2xpY3kubGluZXNlcC5lbmNvZGUoJ2FzY2lpJykKLSAgICBkZWYgZW1iZWRlZF9ib2R5KGxpbmVzKTogcmV0dXJuIGxpbmVzZXAuam9pbihsaW5lcykgKyBsaW5lc2VwCisgICAgZGVmIGVtYmVkZGVkX2JvZHkobGluZXMpOiByZXR1cm4gbGluZXNlcC5qb2luKGxpbmVzKSArIGxpbmVzZXAKICAgICBkZWYgbm9ybWFsX2JvZHkobGluZXMpOiByZXR1cm4gYidcbicuam9pbihsaW5lcykgKyBiJ1xuJwogICAgIGlmIGN0ZT09Tm9uZToKICAgICAgICAgIyBVc2UgaGV1cmlzdGljcyB0byBkZWNpZGUgb24gdGhlICJiZXN0IiBlbmNvZGluZy4KQEAgLTE1Myw3ICsxNTMsNyBAQAogICAgICAgICBpZiAocG9saWN5LmN0ZV90eXBlID09ICc4Yml0JyBhbmQKICAgICAgICAgICAgICAgICBtYXgobGVuKHgpIGZvciB4IGluIGxpbmVzKSA8PSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKToKICAgICAgICAgICAgIHJldHVybiAnOGJpdCcsIG5vcm1hbF9ib2R5KGxpbmVzKS5kZWNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCi0gICAgICAgIHNuaWZmID0gZW1iZWRlZF9ib2R5KGxpbmVzWzoxMF0pCisgICAgICAgIHNuaWZmID0gZW1iZWRkZWRfYm9keShsaW5lc1s6MTBdKQogICAgICAgICBzbmlmZl9xcCA9IHF1b3ByaW1pbWUuYm9keV9lbmNvZGUoc25pZmYuZGVjb2RlKCdsYXRpbi0xJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoKQogICAgICAgICBzbmlmZl9iYXNlNjQgPSBiaW5hc2NpaS5iMmFfYmFzZTY0KHNuaWZmKQpAQCAtMTcyLDcgKzE3Miw3IEBACiAgICAgICAgIGRhdGEgPSBxdW9wcmltaW1lLmJvZHlfZW5jb2RlKG5vcm1hbF9ib2R5KGxpbmVzKS5kZWNvZGUoJ2xhdGluLTEnKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICBlbGlmIGN0ZSA9PSAnYmFzZTY0JzoKLSAgICAgICAgZGF0YSA9IF9lbmNvZGVfYmFzZTY0KGVtYmVkZWRfYm9keShsaW5lcyksIHBvbGljeS5tYXhfbGluZV9sZW5ndGgpCisgICAgICAgIGRhdGEgPSBfZW5jb2RlX2Jhc2U2NChlbWJlZGRlZF9ib2R5KGxpbmVzKSwgcG9saWN5Lm1heF9saW5lX2xlbmd0aCkKICAgICBlbHNlOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJVbmtub3duIGNvbnRlbnQgdHJhbnNmZXIgZW5jb2Rpbmcge30iLmZvcm1hdChjdGUpKQogICAgIHJldHVybiBjdGUsIGRhdGEKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9mZWVkcGFyc2VyLnB5IGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKaW5kZXggMGIzMTJlNS4uN2MwN2NhOCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKKysrIGIvTGliL2VtYWlsL2ZlZWRwYXJzZXIucHkKQEAgLTI0LDE1ICsyNCwxNCBAQAogaW1wb3J0IHJlCiAKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwotZnJvbSBlbWFpbCBpbXBvcnQgbWVzc2FnZQogZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIGlvIGltcG9ydCBTdHJpbmdJTwogCi1OTENSRSA9IHJlLmNvbXBpbGUoJ1xyXG58XHJ8XG4nKQotTkxDUkVfYm9sID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pJykKLU5MQ1JFX2VvbCA9IHJlLmNvbXBpbGUoJyhcclxufFxyfFxuKVxaJykKLU5MQ1JFX2NyYWNrID0gcmUuY29tcGlsZSgnKFxyXG58XHJ8XG4pJykKK05MQ1JFID0gcmUuY29tcGlsZShyJ1xyXG58XHJ8XG4nKQorTkxDUkVfYm9sID0gcmUuY29tcGlsZShyJyhcclxufFxyfFxuKScpCitOTENSRV9lb2wgPSByZS5jb21waWxlKHInKFxyXG58XHJ8XG4pXFonKQorTkxDUkVfY3JhY2sgPSByZS5jb21waWxlKHInKFxyXG58XHJ8XG4pJykKICMgUkZDIDI4MjIgJDMuNi44IE9wdGlvbmFsIGZpZWxkcy4gIGZ0ZXh0IGlzICVkMzMtNTcgLyAlZDU5LTEyNiwgQW55IGNoYXJhY3RlcgogIyBleGNlcHQgY29udHJvbHMsIFNQLCBhbmQgIjoiLgogaGVhZGVyUkUgPSByZS5jb21waWxlKHInXihGcm9tIHxbXDA0MS1cMDcxXDA3My1cMTc2XSo6fFtcdCBdKScpCkBAIC0xNDgsMTMgKzE0NywxMSBAQAogICAgICAgICBzZWxmLnBvbGljeSA9IHBvbGljeQogICAgICAgICBzZWxmLl9vbGRfc3R5bGVfZmFjdG9yeSA9IEZhbHNlCiAgICAgICAgIGlmIF9mYWN0b3J5IGlzIE5vbmU6Ci0gICAgICAgICAgICAjIFdoYXQgdGhpcyBzaG91bGQgYmU6Ci0gICAgICAgICAgICAjc2VsZi5fZmFjdG9yeSA9IHBvbGljeS5kZWZhdWx0X21lc3NhZ2VfZmFjdG9yeQotICAgICAgICAgICAgIyBidXQsIGJlY2F1c2Ugd2UgYXJlIHBvc3QgMy40IGZlYXR1cmUgZnJlZXplLCBmaXggd2l0aCB0ZW1wIGhhY2s6Ci0gICAgICAgICAgICBpZiBzZWxmLnBvbGljeSBpcyBjb21wYXQzMjoKLSAgICAgICAgICAgICAgICBzZWxmLl9mYWN0b3J5ID0gbWVzc2FnZS5NZXNzYWdlCisgICAgICAgICAgICBpZiBwb2xpY3kubWVzc2FnZV9mYWN0b3J5IGlzIE5vbmU6CisgICAgICAgICAgICAgICAgZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCisgICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IE1lc3NhZ2UKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IG1lc3NhZ2UuRW1haWxNZXNzYWdlCisgICAgICAgICAgICAgICAgc2VsZi5fZmFjdG9yeSA9IHBvbGljeS5tZXNzYWdlX2ZhY3RvcnkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuX2ZhY3RvcnkgPSBfZmFjdG9yeQogICAgICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL2dlbmVyYXRvci5weSBiL0xpYi9lbWFpbC9nZW5lcmF0b3IucHkKaW5kZXggMjU2Mjc4ZC4uYWU2NzBjMiAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL2dlbmVyYXRvci5weQorKysgYi9MaWIvZW1haWwvZ2VuZXJhdG9yLnB5CkBAIC00NDgsNyArNDQ4LDggQEAKICAgICBMaWtlIHRoZSBHZW5lcmF0b3IgYmFzZSBjbGFzcywgZXhjZXB0IHRoYXQgbm9uLXRleHQgcGFydHMgYXJlIHN1YnN0aXR1dGVkCiAgICAgd2l0aCBhIGZvcm1hdCBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJ0LgogICAgICIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj03OCwgZm10PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fPU5vbmUsIG1heGhlYWRlcmxlbj1Ob25lLCBmbXQ9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICAgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJMaWtlIEdlbmVyYXRvci5fX2luaXRfXygpIGV4Y2VwdCB0aGF0IGFuIGFkZGl0aW9uYWwgb3B0aW9uYWwKICAgICAgICAgYXJndW1lbnQgaXMgYWxsb3dlZC4KIApAQCAtNDcwLDcgKzQ3MSw4IEBACiAKICAgICAgICAgW05vbi10ZXh0ICglKHR5cGUpcykgcGFydCBvZiBtZXNzYWdlIG9taXR0ZWQsIGZpbGVuYW1lICUoZmlsZW5hbWUpc10KICAgICAgICAgIiIiCi0gICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fLCBtYXhoZWFkZXJsZW4pCisgICAgICAgIEdlbmVyYXRvci5fX2luaXRfXyhzZWxmLCBvdXRmcCwgbWFuZ2xlX2Zyb21fLCBtYXhoZWFkZXJsZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9cG9saWN5KQogICAgICAgICBpZiBmbXQgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2ZtdCA9IF9GTVQKICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9oZWFkZXIucHkgYi9MaWIvZW1haWwvaGVhZGVyLnB5CmluZGV4IDY4MjBlYTEuLmM3YjJkZDkgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9oZWFkZXIucHkKKysrIGIvTGliL2VtYWlsL2hlYWRlci5weQpAQCAtNDksNyArNDksNyBAQAogCiAjIEZpbmQgYSBoZWFkZXIgZW1iZWRkZWQgaW4gYSBwdXRhdGl2ZSBoZWFkZXIgdmFsdWUuICBVc2VkIHRvIGNoZWNrIGZvcgogIyBoZWFkZXIgaW5qZWN0aW9uIGF0dGFjay4KLV9lbWJlZGVkX2hlYWRlciA9IHJlLmNvbXBpbGUocidcblteIFx0XSs6JykKK19lbWJlZGRlZF9oZWFkZXIgPSByZS5jb21waWxlKHInXG5bXiBcdF0rOicpCiAKIAogDApAQCAtMzg1LDcgKzM4NSw3IEBACiAgICAgICAgIGlmIHNlbGYuX2NodW5rczoKICAgICAgICAgICAgIGZvcm1hdHRlci5hZGRfdHJhbnNpdGlvbigpCiAgICAgICAgIHZhbHVlID0gZm9ybWF0dGVyLl9zdHIobGluZXNlcCkKLSAgICAgICAgaWYgX2VtYmVkZWRfaGVhZGVyLnNlYXJjaCh2YWx1ZSk6CisgICAgICAgIGlmIF9lbWJlZGRlZF9oZWFkZXIuc2VhcmNoKHZhbHVlKToKICAgICAgICAgICAgIHJhaXNlIEhlYWRlclBhcnNlRXJyb3IoImhlYWRlciB2YWx1ZSBhcHBlYXJzIHRvIGNvbnRhaW4gIgogICAgICAgICAgICAgICAgICJhbiBlbWJlZGRlZCBoZWFkZXI6IHshcn0iLmZvcm1hdCh2YWx1ZSkpCiAgICAgICAgIHJldHVybiB2YWx1ZQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21lc3NhZ2UucHkgYi9MaWIvZW1haWwvbWVzc2FnZS5weQppbmRleCA0YjA0MjgzLi5iNjUxMmYyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWVzc2FnZS5weQorKysgYi9MaWIvZW1haWwvbWVzc2FnZS5weQpAQCAtNCwxOCArNCwxNyBAQAogCiAiIiJCYXNpYyBtZXNzYWdlIG9iamVjdCBmb3IgdGhlIGVtYWlsIHBhY2thZ2Ugb2JqZWN0IG1vZGVsLiIiIgogCi1fX2FsbF9fID0gWydNZXNzYWdlJ10KK19fYWxsX18gPSBbJ01lc3NhZ2UnLCAnRW1haWxNZXNzYWdlJ10KIAogaW1wb3J0IHJlCiBpbXBvcnQgdXUKIGltcG9ydCBxdW9wcmkKLWltcG9ydCB3YXJuaW5ncwogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgU3RyaW5nSU8KIAogIyBJbnRyYXBhY2thZ2UgaW1wb3J0cwogZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwotZnJvbSBlbWFpbC5fcG9saWN5YmFzZSBpbXBvcnQgY29tcGF0MzIKK2Zyb20gZW1haWwuX3BvbGljeWJhc2UgaW1wb3J0IFBvbGljeSwgY29tcGF0MzIKIGZyb20gZW1haWwgaW1wb3J0IGNoYXJzZXQgYXMgX2NoYXJzZXQKIGZyb20gZW1haWwuX2VuY29kZWRfd29yZHMgaW1wb3J0IGRlY29kZV9iCiBDaGFyc2V0ID0gX2NoYXJzZXQuQ2hhcnNldApAQCAtOTUxLDYgKzk1MCwyNiBAQAogICAgICAgICAgICAgcG9saWN5ID0gZGVmYXVsdAogICAgICAgICBNZXNzYWdlLl9faW5pdF9fKHNlbGYsIHBvbGljeSkKIAorCisgICAgZGVmIGFzX3N0cmluZyhzZWxmLCB1bml4ZnJvbT1GYWxzZSwgbWF4aGVhZGVybGVuPU5vbmUsIHBvbGljeT1Ob25lKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBlbnRpcmUgZm9ybWF0dGVkIG1lc3NhZ2UgYXMgYSBzdHJpbmcuCisKKyAgICAgICAgT3B0aW9uYWwgJ3VuaXhmcm9tJywgd2hlbiB0cnVlLCBtZWFucyBpbmNsdWRlIHRoZSBVbml4IEZyb21fIGVudmVsb3BlCisgICAgICAgIGhlYWRlci4gIG1heGhlYWRlcmxlbiBpcyByZXRhaW5lZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZQorICAgICAgICBiYXNlIE1lc3NhZ2UgY2xhc3MsIGJ1dCBkZWZhdWx0cyB0byBOb25lLCBtZWFuaW5nIHRoYXQgdGhlIHBvbGljeSB2YWx1ZQorICAgICAgICBmb3IgbWF4X2xpbmVfbGVuZ3RoIGNvbnRyb2xzIHRoZSBoZWFkZXIgbWF4aW11bSBsZW5ndGguICAncG9saWN5JyBpcworICAgICAgICBwYXNzZWQgdG8gdGhlIEdlbmVyYXRvciBpbnN0YW5jZSB1c2VkIHRvIHNlcmlhbGl6ZSB0aGUgbWVzYXNnZTsgaWYgaXQKKyAgICAgICAgaXMgbm90IHNwZWNpZmllZCB0aGUgcG9saWN5IGFzc29jaWF0ZWQgd2l0aCB0aGUgbWVzc2FnZSBpbnN0YW5jZSBpcworICAgICAgICB1c2VkLgorICAgICAgICAiIiIKKyAgICAgICAgcG9saWN5ID0gc2VsZi5wb2xpY3kgaWYgcG9saWN5IGlzIE5vbmUgZWxzZSBwb2xpY3kKKyAgICAgICAgaWYgbWF4aGVhZGVybGVuIGlzIE5vbmU6CisgICAgICAgICAgICBtYXhoZWFkZXJsZW4gPSBwb2xpY3kubWF4X2xpbmVfbGVuZ3RoCisgICAgICAgIHJldHVybiBzdXBlcigpLmFzX3N0cmluZyhtYXhoZWFkZXJsZW49bWF4aGVhZGVybGVuLCBwb2xpY3k9cG9saWN5KQorCisgICAgZGVmIF9fc3RyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmLmFzX3N0cmluZyhwb2xpY3k9c2VsZi5wb2xpY3kuY2xvbmUodXRmOD1UcnVlKSkKKwogICAgIGRlZiBpc19hdHRhY2htZW50KHNlbGYpOgogICAgICAgICBjX2QgPSBzZWxmLmdldCgnY29udGVudC1kaXNwb3NpdGlvbicpCiAgICAgICAgIHJldHVybiBGYWxzZSBpZiBjX2QgaXMgTm9uZSBlbHNlIGNfZC5jb250ZW50X2Rpc3Bvc2l0aW9uID09ICdhdHRhY2htZW50JwpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvYXBwbGljYXRpb24ucHkgYi9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weQppbmRleCBmNWM1OTA1Li42ODc3ZTU1IDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weQorKysgYi9MaWIvZW1haWwvbWltZS9hcHBsaWNhdGlvbi5weQpAQCAtMTQsNyArMTQsNyBAQAogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGFwcGxpY2F0aW9uLyogTUlNRSBkb2N1bWVudHMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX2RhdGEsIF9zdWJ0eXBlPSdvY3RldC1zdHJlYW0nLAotICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqKl9wYXJhbXMpOgorICAgICAgICAgICAgICAgICBfZW5jb2Rlcj1lbmNvZGVycy5lbmNvZGVfYmFzZTY0LCAqLCBwb2xpY3k9Tm9uZSwgKipfcGFyYW1zKToKICAgICAgICAgIiIiQ3JlYXRlIGFuIGFwcGxpY2F0aW9uLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9kYXRhIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJhdyBhcHBsaWNhdGlvbiBkYXRhLgpAQCAtMzEsNiArMzEsNyBAQAogICAgICAgICAiIiIKICAgICAgICAgaWYgX3N1YnR5cGUgaXMgTm9uZToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignSW52YWxpZCBhcHBsaWNhdGlvbiBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdhcHBsaWNhdGlvbicsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2FwcGxpY2F0aW9uJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9kYXRhKQogICAgICAgICBfZW5jb2RlcihzZWxmKQpkaWZmIC0tZ2l0IGEvTGliL2VtYWlsL21pbWUvYXVkaW8ucHkgYi9MaWIvZW1haWwvbWltZS9hdWRpby5weQppbmRleCBmYmMxMTg5Li40YmNkN2IyIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9hdWRpby5weQorKysgYi9MaWIvZW1haWwvbWltZS9hdWRpby5weQpAQCAtNDMsNyArNDMsNyBAQAogICAgICIiIkNsYXNzIGZvciBnZW5lcmF0aW5nIGF1ZGlvLyogTUlNRSBkb2N1bWVudHMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX2F1ZGlvZGF0YSwgX3N1YnR5cGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBhdWRpby8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfYXVkaW9kYXRhIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJhdyBhdWRpbyBkYXRhLiAgSWYgdGhpcyBkYXRhCkBAIC02OCw2ICs2OCw3IEBACiAgICAgICAgICAgICBfc3VidHlwZSA9IF93aGF0c25kKF9hdWRpb2RhdGEpCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0NvdWxkIG5vdCBmaW5kIGF1ZGlvIE1JTUUgc3VidHlwZScpCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2F1ZGlvJywgX3N1YnR5cGUsICoqX3BhcmFtcykKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnYXVkaW8nLCBfc3VidHlwZSwgcG9saWN5PXBvbGljeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGYuc2V0X3BheWxvYWQoX2F1ZGlvZGF0YSkKICAgICAgICAgX2VuY29kZXIoc2VsZikKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkgYi9MaWIvZW1haWwvbWltZS9iYXNlLnB5CmluZGV4IGFjOTE5MjUuLjFhM2Y5YjUgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL2Jhc2UucHkKKysrIGIvTGliL2VtYWlsL21pbWUvYmFzZS5weQpAQCAtNiw2ICs2LDggQEAKIAogX19hbGxfXyA9IFsnTUlNRUJhc2UnXQogCitpbXBvcnQgZW1haWwucG9saWN5CisKIGZyb20gZW1haWwgaW1wb3J0IG1lc3NhZ2UKIAogCkBAIC0xMywxNCArMTUsMTYgQEAKIGNsYXNzIE1JTUVCYXNlKG1lc3NhZ2UuTWVzc2FnZSk6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgTUlNRSBzcGVjaWFsaXphdGlvbnMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX21haW50eXBlLCBfc3VidHlwZSwgKipfcGFyYW1zKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgX21haW50eXBlLCBfc3VidHlwZSwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIlRoaXMgY29uc3RydWN0b3IgYWRkcyBhIENvbnRlbnQtVHlwZTogYW5kIGEgTUlNRS1WZXJzaW9uOiBoZWFkZXIuCiAKICAgICAgICAgVGhlIENvbnRlbnQtVHlwZTogaGVhZGVyIGlzIHRha2VuIGZyb20gdGhlIF9tYWludHlwZSBhbmQgX3N1YnR5cGUKICAgICAgICAgYXJndW1lbnRzLiAgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGlzIGhlYWRlciBhcmUgdGFrZW4gZnJvbSB0aGUKICAgICAgICAga2V5d29yZCBhcmd1bWVudHMuCiAgICAgICAgICIiIgotICAgICAgICBtZXNzYWdlLk1lc3NhZ2UuX19pbml0X18oc2VsZikKKyAgICAgICAgaWYgcG9saWN5IGlzIE5vbmU6CisgICAgICAgICAgICBwb2xpY3kgPSBlbWFpbC5wb2xpY3kuY29tcGF0MzIKKyAgICAgICAgbWVzc2FnZS5NZXNzYWdlLl9faW5pdF9fKHNlbGYsIHBvbGljeT1wb2xpY3kpCiAgICAgICAgIGN0eXBlID0gJyVzLyVzJyAlIChfbWFpbnR5cGUsIF9zdWJ0eXBlKQogICAgICAgICBzZWxmLmFkZF9oZWFkZXIoJ0NvbnRlbnQtVHlwZScsIGN0eXBlLCAqKl9wYXJhbXMpCiAgICAgICAgIHNlbGZbJ01JTUUtVmVyc2lvbiddID0gJzEuMCcKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL2ltYWdlLnB5IGIvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkKaW5kZXggNTU2MzgyMy4uOTI3MjQ2NCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkKKysrIGIvTGliL2VtYWlsL21pbWUvaW1hZ2UucHkKQEAgLTE3LDcgKzE3LDcgQEAKICAgICAiIiJDbGFzcyBmb3IgZ2VuZXJhdGluZyBpbWFnZS8qIHR5cGUgTUlNRSBkb2N1bWVudHMuIiIiCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgX2ltYWdlZGF0YSwgX3N1YnR5cGU9Tm9uZSwKLSAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKipfcGFyYW1zKToKKyAgICAgICAgICAgICAgICAgX2VuY29kZXI9ZW5jb2RlcnMuZW5jb2RlX2Jhc2U2NCwgKiwgcG9saWN5PU5vbmUsICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZSBhbiBpbWFnZS8qIHR5cGUgTUlNRSBkb2N1bWVudC4KIAogICAgICAgICBfaW1hZ2VkYXRhIGlzIGEgc3RyaW5nIGNvbnRhaW5pbmcgdGhlIHJhdyBpbWFnZSBkYXRhLiAgSWYgdGhpcyBkYXRhCkBAIC00MSw2ICs0MSw3IEBACiAgICAgICAgICAgICBfc3VidHlwZSA9IGltZ2hkci53aGF0KE5vbmUsIF9pbWFnZWRhdGEpCiAgICAgICAgIGlmIF9zdWJ0eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0NvdWxkIG5vdCBndWVzcyBpbWFnZSBNSU1FIHN1YnR5cGUnKQotICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdpbWFnZScsIF9zdWJ0eXBlLCAqKl9wYXJhbXMpCisgICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ2ltYWdlJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKipfcGFyYW1zKQogICAgICAgICBzZWxmLnNldF9wYXlsb2FkKF9pbWFnZWRhdGEpCiAgICAgICAgIF9lbmNvZGVyKHNlbGYpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5IGIvTGliL2VtYWlsL21pbWUvbWVzc2FnZS5weQppbmRleCAyNzVkYmZkLi4wN2U0ZjJkIDEwMDY0NAotLS0gYS9MaWIvZW1haWwvbWltZS9tZXNzYWdlLnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL21lc3NhZ2UucHkKQEAgLTE0LDcgKzE0LDcgQEAKIGNsYXNzIE1JTUVNZXNzYWdlKE1JTUVOb25NdWx0aXBhcnQpOgogICAgICIiIkNsYXNzIHJlcHJlc2VudGluZyBtZXNzYWdlLyogTUlNRSBkb2N1bWVudHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX21zZywgX3N1YnR5cGU9J3JmYzgyMicpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfbXNnLCBfc3VidHlwZT0ncmZjODIyJywgKiwgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgYSBtZXNzYWdlLyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF9tc2cgaXMgYSBtZXNzYWdlIG9iamVjdCBhbmQgbXVzdCBiZSBhbiBpbnN0YW5jZSBvZiBNZXNzYWdlLCBvciBhCkBAIC0yNCw3ICsyNCw3IEBACiAgICAgICAgIGRlZmF1bHQgaXMgInJmYzgyMiIgKHRoaXMgaXMgZGVmaW5lZCBieSB0aGUgTUlNRSBzdGFuZGFyZCwgZXZlbiB0aG91Z2gKICAgICAgICAgdGhlIHRlcm0gInJmYzgyMiIgaXMgdGVjaG5pY2FsbHkgb3V0ZGF0ZWQgYnkgUkZDIDI4MjIpLgogICAgICAgICAiIiIKLSAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAnbWVzc2FnZScsIF9zdWJ0eXBlKQorICAgICAgICBNSU1FTm9uTXVsdGlwYXJ0Ll9faW5pdF9fKHNlbGYsICdtZXNzYWdlJywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3kpCiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKF9tc2csIG1lc3NhZ2UuTWVzc2FnZSk6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ0FyZ3VtZW50IGlzIG5vdCBhbiBpbnN0YW5jZSBvZiBNZXNzYWdlJykKICAgICAgICAgIyBJdCdzIGNvbnZlbmllbnQgdG8gdXNlIHRoaXMgYmFzZSBjbGFzcyBtZXRob2QuICBXZSBuZWVkIHRvIGRvIGl0CmRpZmYgLS1naXQgYS9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkgYi9MaWIvZW1haWwvbWltZS9tdWx0aXBhcnQucHkKaW5kZXggOTY2MTg2NS4uMmQzZjI4OCAxMDA2NDQKLS0tIGEvTGliL2VtYWlsL21pbWUvbXVsdGlwYXJ0LnB5CisrKyBiL0xpYi9lbWFpbC9taW1lL211bHRpcGFydC5weQpAQCAtMTQsNiArMTQsNyBAQAogICAgICIiIkJhc2UgY2xhc3MgZm9yIE1JTUUgbXVsdGlwYXJ0LyogdHlwZSBtZXNzYWdlcy4iIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfc3VidHlwZT0nbWl4ZWQnLCBib3VuZGFyeT1Ob25lLCBfc3VicGFydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgKiwgcG9saWN5PU5vbmUsCiAgICAgICAgICAgICAgICAgICoqX3BhcmFtcyk6CiAgICAgICAgICIiIkNyZWF0ZXMgYSBtdWx0aXBhcnQvKiB0eXBlIG1lc3NhZ2UuCiAKQEAgLTMzLDcgKzM0LDcgQEAKICAgICAgICAgQWRkaXRpb25hbCBwYXJhbWV0ZXJzIGZvciB0aGUgQ29udGVudC1UeXBlIGhlYWRlciBhcmUgdGFrZW4gZnJvbSB0aGUKICAgICAgICAga2V5d29yZCBhcmd1bWVudHMgKG9yIHBhc3NlZCBpbnRvIHRoZSBfcGFyYW1zIGFyZ3VtZW50KS4KICAgICAgICAgIiIiCi0gICAgICAgIE1JTUVCYXNlLl9faW5pdF9fKHNlbGYsICdtdWx0aXBhcnQnLCBfc3VidHlwZSwgKipfcGFyYW1zKQorICAgICAgICBNSU1FQmFzZS5fX2luaXRfXyhzZWxmLCAnbXVsdGlwYXJ0JywgX3N1YnR5cGUsIHBvbGljeT1wb2xpY3ksICoqX3BhcmFtcykKIAogICAgICAgICAjIEluaXRpYWxpc2UgX3BheWxvYWQgdG8gYW4gZW1wdHkgbGlzdCBhcyB0aGUgTWVzc2FnZSBzdXBlcmNsYXNzJ3MKICAgICAgICAgIyBpbXBsZW1lbnRhdGlvbiBvZiBpc19tdWx0aXBhcnQgYXNzdW1lcyB0aGF0IF9wYXlsb2FkIGlzIGEgbGlzdCBmb3IKZGlmZiAtLWdpdCBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkgYi9MaWIvZW1haWwvbWltZS90ZXh0LnB5CmluZGV4IGRhMDMwODYuLjM1YjQ0MjMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9taW1lL3RleHQucHkKKysrIGIvTGliL2VtYWlsL21pbWUvdGV4dC5weQpAQCAtMTQsNyArMTQsNyBAQAogY2xhc3MgTUlNRVRleHQoTUlNRU5vbk11bHRpcGFydCk6CiAgICAgIiIiQ2xhc3MgZm9yIGdlbmVyYXRpbmcgdGV4dC8qIHR5cGUgTUlNRSBkb2N1bWVudHMuIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgX3RleHQsIF9zdWJ0eXBlPSdwbGFpbicsIF9jaGFyc2V0PU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBfdGV4dCwgX3N1YnR5cGU9J3BsYWluJywgX2NoYXJzZXQ9Tm9uZSwgKiwgcG9saWN5PU5vbmUpOgogICAgICAgICAiIiJDcmVhdGUgYSB0ZXh0LyogdHlwZSBNSU1FIGRvY3VtZW50LgogCiAgICAgICAgIF90ZXh0IGlzIHRoZSBzdHJpbmcgZm9yIHRoaXMgbWVzc2FnZSBvYmplY3QuCkBAIC0zNiw3ICszNiw3IEBACiAgICAgICAgICAgICBleGNlcHQgVW5pY29kZUVuY29kZUVycm9yOgogICAgICAgICAgICAgICAgIF9jaGFyc2V0ID0gJ3V0Zi04JwogCi0gICAgICAgIE1JTUVOb25NdWx0aXBhcnQuX19pbml0X18oc2VsZiwgJ3RleHQnLCBfc3VidHlwZSwKKyAgICAgICAgTUlNRU5vbk11bHRpcGFydC5fX2luaXRfXyhzZWxmLCAndGV4dCcsIF9zdWJ0eXBlLCBwb2xpY3k9cG9saWN5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoqeydjaGFyc2V0Jzogc3RyKF9jaGFyc2V0KX0pCiAKICAgICAgICAgc2VsZi5zZXRfcGF5bG9hZChfdGV4dCwgX2NoYXJzZXQpCmRpZmYgLS1naXQgYS9MaWIvZW1haWwvcG9saWN5LnB5IGIvTGliL2VtYWlsL3BvbGljeS5weQppbmRleCAzNWQwZTY5Li41MTMxMzExYWMgMTAwNjQ0Ci0tLSBhL0xpYi9lbWFpbC9wb2xpY3kucHkKKysrIGIvTGliL2VtYWlsL3BvbGljeS5weQpAQCAtNyw2ICs3LDcgQEAKIGZyb20gZW1haWwudXRpbHMgaW1wb3J0IF9oYXNfc3Vycm9nYXRlcwogZnJvbSBlbWFpbC5oZWFkZXJyZWdpc3RyeSBpbXBvcnQgSGVhZGVyUmVnaXN0cnkgYXMgSGVhZGVyUmVnaXN0cnkKIGZyb20gZW1haWwuY29udGVudG1hbmFnZXIgaW1wb3J0IHJhd19kYXRhX21hbmFnZXIKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgRW1haWxNZXNzYWdlCiAKIF9fYWxsX18gPSBbCiAgICAgJ0NvbXBhdDMyJywKQEAgLTgyLDYgKzgzLDcgQEAKIAogICAgICIiIgogCisgICAgbWVzc2FnZV9mYWN0b3J5ID0gRW1haWxNZXNzYWdlCiAgICAgdXRmOCA9IEZhbHNlCiAgICAgcmVmb2xkX3NvdXJjZSA9ICdsb25nJwogICAgIGhlYWRlcl9mYWN0b3J5ID0gSGVhZGVyUmVnaXN0cnkoKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weSBiL0xpYi9lbmNvZGluZ3MvX19pbml0X18ucHkKaW5kZXggOGRkNzEzMC4uYWEyZmI3YyAxMDA2NDQKLS0tIGEvTGliL2VuY29kaW5ncy9fX2luaXRfXy5weQorKysgYi9MaWIvZW5jb2RpbmdzL19faW5pdF9fLnB5CkBAIC0yOSw2ICsyOSw3IEBACiAiIiIjIgogCiBpbXBvcnQgY29kZWNzCitpbXBvcnQgc3lzCiBmcm9tIC4gaW1wb3J0IGFsaWFzZXMKIAogX2NhY2hlID0ge30KQEAgLTU0LDYgKzU1LDcgQEAKICAgICAiIiIKICAgICBpZiBpc2luc3RhbmNlKGVuY29kaW5nLCBieXRlcyk6CiAgICAgICAgIGVuY29kaW5nID0gc3RyKGVuY29kaW5nLCAiYXNjaWkiKQorCiAgICAgY2hhcnMgPSBbXQogICAgIHB1bmN0ID0gRmFsc2UKICAgICBmb3IgYyBpbiBlbmNvZGluZzoKQEAgLTk3LDYgKzk5LDggQEAKICAgICAgICAgICAgIG1vZCA9IF9faW1wb3J0X18oJ2VuY29kaW5ncy4nICsgbW9kbmFtZSwgZnJvbWxpc3Q9X2ltcG9ydF90YWlsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0wKQogICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgICAgICAgICAjIEltcG9ydEVycm9yIG1heSBvY2N1ciBiZWNhdXNlICdlbmNvZGluZ3MuKG1vZG5hbWUpJyBkb2VzIG5vdCBleGlzdCwKKyAgICAgICAgICAgICMgb3IgYmVjYXVzZSBpdCBpbXBvcnRzIGEgbmFtZSB0aGF0IGRvZXMgbm90IGV4aXN0IChzZWUgbWJjcyBhbmQgb2VtKQogICAgICAgICAgICAgcGFzcwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYnJlYWsKQEAgLTE1MCwzICsxNTQsMTYgQEAKIAogIyBSZWdpc3RlciB0aGUgc2VhcmNoX2Z1bmN0aW9uIGluIHRoZSBQeXRob24gY29kZWMgcmVnaXN0cnkKIGNvZGVjcy5yZWdpc3RlcihzZWFyY2hfZnVuY3Rpb24pCisKK2lmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgIGRlZiBfYWxpYXNfbWJjcyhlbmNvZGluZyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBfYm9vdGxvY2FsZQorICAgICAgICAgICAgaWYgZW5jb2RpbmcgPT0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpOgorICAgICAgICAgICAgICAgIGltcG9ydCBlbmNvZGluZ3MubWJjcworICAgICAgICAgICAgICAgIHJldHVybiBlbmNvZGluZ3MubWJjcy5nZXRyZWdlbnRyeSgpCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgICMgSW1wb3J0cyBtYXkgZmFpbCB3aGlsZSB3ZSBhcmUgc2h1dHRpbmcgZG93bgorICAgICAgICAgICAgcGFzcworCisgICAgY29kZWNzLnJlZ2lzdGVyKF9hbGlhc19tYmNzKQpkaWZmIC0tZ2l0IGEvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5IGIvTGliL2VuY29kaW5ncy9hbGlhc2VzLnB5CmluZGV4IDY3YzgyOGQuLjJlNjNjMmYgMTAwNjQ0Ci0tLSBhL0xpYi9lbmNvZGluZ3MvYWxpYXNlcy5weQorKysgYi9MaWIvZW5jb2RpbmdzL2FsaWFzZXMucHkKQEAgLTQ1OCw2ICs0NTgsNyBAQAogICAgICdtYWN0dXJraXNoJyAgICAgICAgIDogJ21hY190dXJraXNoJywKIAogICAgICMgbWJjcyBjb2RlYworICAgICdhbnNpJyAgICAgICAgICAgICAgIDogJ21iY3MnLAogICAgICdkYmNzJyAgICAgICAgICAgICAgIDogJ21iY3MnLAogCiAgICAgIyBwdGNwMTU0IGNvZGVjCmRpZmYgLS1naXQgYS9MaWIvZW5jb2RpbmdzL29lbS5weSBiL0xpYi9lbmNvZGluZ3Mvb2VtLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMzQyNmIKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvZW5jb2RpbmdzL29lbS5weQpAQCAtMCwwICsxLDQxIEBACisiIiIgUHl0aG9uICdvZW0nIENvZGVjIGZvciBXaW5kb3dzCisKKyIiIgorIyBJbXBvcnQgdGhlbSBleHBsaWNpdGx5IHRvIGNhdXNlIGFuIEltcG9ydEVycm9yCisjIG9uIG5vbi1XaW5kb3dzIHN5c3RlbXMKK2Zyb20gY29kZWNzIGltcG9ydCBvZW1fZW5jb2RlLCBvZW1fZGVjb2RlCisjIGZvciBJbmNyZW1lbnRhbERlY29kZXIsIEluY3JlbWVudGFsRW5jb2RlciwgLi4uCitpbXBvcnQgY29kZWNzCisKKyMjIyBDb2RlYyBBUElzCisKK2VuY29kZSA9IG9lbV9lbmNvZGUKKworZGVmIGRlY29kZShpbnB1dCwgZXJyb3JzPSdzdHJpY3QnKToKKyAgICByZXR1cm4gb2VtX2RlY29kZShpbnB1dCwgZXJyb3JzLCBUcnVlKQorCitjbGFzcyBJbmNyZW1lbnRhbEVuY29kZXIoY29kZWNzLkluY3JlbWVudGFsRW5jb2Rlcik6CisgICAgZGVmIGVuY29kZShzZWxmLCBpbnB1dCwgZmluYWw9RmFsc2UpOgorICAgICAgICByZXR1cm4gb2VtX2VuY29kZShpbnB1dCwgc2VsZi5lcnJvcnMpWzBdCisKK2NsYXNzIEluY3JlbWVudGFsRGVjb2Rlcihjb2RlY3MuQnVmZmVyZWRJbmNyZW1lbnRhbERlY29kZXIpOgorICAgIF9idWZmZXJfZGVjb2RlID0gb2VtX2RlY29kZQorCitjbGFzcyBTdHJlYW1Xcml0ZXIoY29kZWNzLlN0cmVhbVdyaXRlcik6CisgICAgZW5jb2RlID0gb2VtX2VuY29kZQorCitjbGFzcyBTdHJlYW1SZWFkZXIoY29kZWNzLlN0cmVhbVJlYWRlcik6CisgICAgZGVjb2RlID0gb2VtX2RlY29kZQorCisjIyMgZW5jb2RpbmdzIG1vZHVsZSBBUEkKKworZGVmIGdldHJlZ2VudHJ5KCk6CisgICAgcmV0dXJuIGNvZGVjcy5Db2RlY0luZm8oCisgICAgICAgIG5hbWU9J29lbScsCisgICAgICAgIGVuY29kZT1lbmNvZGUsCisgICAgICAgIGRlY29kZT1kZWNvZGUsCisgICAgICAgIGluY3JlbWVudGFsZW5jb2Rlcj1JbmNyZW1lbnRhbEVuY29kZXIsCisgICAgICAgIGluY3JlbWVudGFsZGVjb2Rlcj1JbmNyZW1lbnRhbERlY29kZXIsCisgICAgICAgIHN0cmVhbXJlYWRlcj1TdHJlYW1SZWFkZXIsCisgICAgICAgIHN0cmVhbXdyaXRlcj1TdHJlYW1Xcml0ZXIsCisgICAgKQpkaWZmIC0tZ2l0IGEvTGliL2VudW0ucHkgYi9MaWIvZW51bS5weQppbmRleCBiODc4N2QxLi40YmViMTg3IDEwMDY0NAotLS0gYS9MaWIvZW51bS5weQorKysgYi9MaWIvZW51bS5weQpAQCAtMSw4ICsxLDIwIEBACiBpbXBvcnQgc3lzCi1mcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZSwgRHluYW1pY0NsYXNzQXR0cmlidXRlCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCitmcm9tIG9wZXJhdG9yIGltcG9ydCBvcl8gYXMgX29yXywgYW5kXyBhcyBfYW5kXywgeG9yLCBuZWcKIAotX19hbGxfXyA9IFsnRW51bScsICdJbnRFbnVtJywgJ3VuaXF1ZSddCisjIHRyeSBfY29sbGVjdGlvbnMgZmlyc3QgdG8gcmVkdWNlIHN0YXJ0dXAgY29zdAordHJ5OgorICAgIGZyb20gX2NvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CisKKworX19hbGxfXyA9IFsKKyAgICAgICAgJ0VudW1NZXRhJywKKyAgICAgICAgJ0VudW0nLCAnSW50RW51bScsICdGbGFnJywgJ0ludEZsYWcnLAorICAgICAgICAnYXV0bycsICd1bmlxdWUnLAorICAgICAgICBdCiAKIAogZGVmIF9pc19kZXNjcmlwdG9yKG9iaik6CkBAIC0yOCw3ICs0MCw2IEBACiAgICAgICAgICAgICBuYW1lWy0yOi0xXSAhPSAnXycgYW5kCiAgICAgICAgICAgICBsZW4obmFtZSkgPiAyKQogCi0KIGRlZiBfbWFrZV9jbGFzc191bnBpY2tsYWJsZShjbHMpOgogICAgICIiIk1ha2UgdGhlIGdpdmVuIGNsYXNzIHVuLXBpY2tsYWJsZS4iIiIKICAgICBkZWYgX2JyZWFrX29uX2NhbGxfcmVkdWNlKHNlbGYsIHByb3RvKToKQEAgLTM2LDYgKzQ3LDEzIEBACiAgICAgY2xzLl9fcmVkdWNlX2V4X18gPSBfYnJlYWtfb25fY2FsbF9yZWR1Y2UKICAgICBjbHMuX19tb2R1bGVfXyA9ICc8dW5rbm93bj4nCiAKK19hdXRvX251bGwgPSBvYmplY3QoKQorY2xhc3MgYXV0bzoKKyAgICAiIiIKKyAgICBJbnN0YW5jZXMgYXJlIHJlcGxhY2VkIHdpdGggYW4gYXBwcm9wcmlhdGUgdmFsdWUgaW4gRW51bSBjbGFzcyBzdWl0ZXMuCisgICAgIiIiCisgICAgdmFsdWUgPSBfYXV0b19udWxsCisKIAogY2xhc3MgX0VudW1EaWN0KGRpY3QpOgogICAgICIiIlRyYWNrIGVudW0gbWVtYmVyIG9yZGVyIGFuZCBlbnN1cmUgbWVtYmVyIG5hbWVzIGFyZSBub3QgcmV1c2VkLgpAQCAtNDcsNiArNjUsNyBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKICAgICAgICAgc3VwZXIoKS5fX2luaXRfXygpCiAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcyA9IFtdCisgICAgICAgIHNlbGYuX2xhc3RfdmFsdWVzID0gW10KIAogICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKToKICAgICAgICAgIiIiQ2hhbmdlcyBhbnl0aGluZyBub3QgZHVuZGVyZWQgb3Igbm90IGEgZGVzY3JpcHRvci4KQEAgLTU4LDIxICs3NywzMiBAQAogCiAgICAgICAgICIiIgogICAgICAgICBpZiBfaXNfc3VuZGVyKGtleSk6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdfbmFtZXNfIGFyZSByZXNlcnZlZCBmb3IgZnV0dXJlIEVudW0gdXNlJykKKyAgICAgICAgICAgIGlmIGtleSBub3QgaW4gKAorICAgICAgICAgICAgICAgICAgICAnX29yZGVyXycsICdfY3JlYXRlX3BzZXVkb19tZW1iZXJfJywKKyAgICAgICAgICAgICAgICAgICAgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXycsICdfbWlzc2luZ18nLAorICAgICAgICAgICAgICAgICAgICApOgorICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ19uYW1lc18gYXJlIHJlc2VydmVkIGZvciBmdXR1cmUgRW51bSB1c2UnKQorICAgICAgICAgICAgaWYga2V5ID09ICdfZ2VuZXJhdGVfbmV4dF92YWx1ZV8nOgorICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlJywgdmFsdWUpCiAgICAgICAgIGVsaWYgX2lzX2R1bmRlcihrZXkpOgotICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgaWYga2V5ID09ICdfX29yZGVyX18nOgorICAgICAgICAgICAgICAgIGtleSA9ICdfb3JkZXJfJwogICAgICAgICBlbGlmIGtleSBpbiBzZWxmLl9tZW1iZXJfbmFtZXM6CiAgICAgICAgICAgICAjIGRlc2NyaXB0b3Igb3ZlcndyaXRpbmcgYW4gZW51bT8KICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQXR0ZW1wdGVkIHRvIHJldXNlIGtleTogJXInICUga2V5KQogICAgICAgICBlbGlmIG5vdCBfaXNfZGVzY3JpcHRvcih2YWx1ZSk6CiAgICAgICAgICAgICBpZiBrZXkgaW4gc2VsZjoKICAgICAgICAgICAgICAgICAjIGVudW0gb3ZlcndyaXRpbmcgYSBkZXNjcmlwdG9yPwotICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignS2V5IGFscmVhZHkgZGVmaW5lZCBhczogJXInICUgc2VsZltrZXldKQorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignJXIgYWxyZWFkeSBkZWZpbmVkIGFzOiAlcicgJSAoa2V5LCBzZWxmW2tleV0pKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgYXV0byk6CisgICAgICAgICAgICAgICAgaWYgdmFsdWUudmFsdWUgPT0gX2F1dG9fbnVsbDoKKyAgICAgICAgICAgICAgICAgICAgdmFsdWUudmFsdWUgPSBzZWxmLl9nZW5lcmF0ZV9uZXh0X3ZhbHVlKGtleSwgMSwgbGVuKHNlbGYuX21lbWJlcl9uYW1lcyksIHNlbGYuX2xhc3RfdmFsdWVzWzpdKQorICAgICAgICAgICAgICAgIHZhbHVlID0gdmFsdWUudmFsdWUKICAgICAgICAgICAgIHNlbGYuX21lbWJlcl9uYW1lcy5hcHBlbmQoa2V5KQorICAgICAgICAgICAgc2VsZi5fbGFzdF92YWx1ZXMuYXBwZW5kKHZhbHVlKQogICAgICAgICBzdXBlcigpLl9fc2V0aXRlbV9fKGtleSwgdmFsdWUpCiAKIAotCiAjIER1bW15IHZhbHVlIGZvciBFbnVtIGFzIEVudW1NZXRhIGV4cGxpY2l0bHkgY2hlY2tzIGZvciBpdCwgYnV0IG9mIGNvdXJzZQogIyB1bnRpbCBFbnVtTWV0YSBmaW5pc2hlcyBydW5uaW5nIHRoZSBmaXJzdCB0aW1lIHRoZSBFbnVtIGNsYXNzIGRvZXNuJ3QgZXhpc3QuCiAjIFRoaXMgaXMgYWxzbyB3aHkgdGhlcmUgYXJlIGNoZWNrcyBpbiBFbnVtTWV0YSBsaWtlIGBpZiBFbnVtIGlzIG5vdCBOb25lYApAQCAtODMsNyArMTEzLDEzIEBACiAgICAgIiIiTWV0YWNsYXNzIGZvciBFbnVtIiIiCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIGNscywgYmFzZXMpOgotICAgICAgICByZXR1cm4gX0VudW1EaWN0KCkKKyAgICAgICAgIyBjcmVhdGUgdGhlIG5hbWVzcGFjZSBkaWN0CisgICAgICAgIGVudW1fZGljdCA9IF9FbnVtRGljdCgpCisgICAgICAgICMgaW5oZXJpdCBwcmV2aW91cyBmbGFncyBhbmQgX2dlbmVyYXRlX25leHRfdmFsdWVfIGZ1bmN0aW9uCisgICAgICAgIG1lbWJlcl90eXBlLCBmaXJzdF9lbnVtID0gbWV0YWNscy5fZ2V0X21peGluc18oYmFzZXMpCisgICAgICAgIGlmIGZpcnN0X2VudW0gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBlbnVtX2RpY3RbJ19nZW5lcmF0ZV9uZXh0X3ZhbHVlXyddID0gZ2V0YXR0cihmaXJzdF9lbnVtLCAnX2dlbmVyYXRlX25leHRfdmFsdWVfJywgTm9uZSkKKyAgICAgICAgcmV0dXJuIGVudW1fZGljdAogCiAgICAgZGVmIF9fbmV3X18obWV0YWNscywgY2xzLCBiYXNlcywgY2xhc3NkaWN0KToKICAgICAgICAgIyBhbiBFbnVtIGNsYXNzIGlzIGZpbmFsIG9uY2UgZW51bWVyYXRpb24gaXRlbXMgaGF2ZSBiZWVuIGRlZmluZWQ7IGl0CkBAIC05NiwxMiArMTMyLDE1IEBACiAKICAgICAgICAgIyBzYXZlIGVudW0gaXRlbXMgaW50byBzZXBhcmF0ZSBtYXBwaW5nIHNvIHRoZXkgZG9uJ3QgZ2V0IGJha2VkIGludG8KICAgICAgICAgIyB0aGUgbmV3IGNsYXNzCi0gICAgICAgIG1lbWJlcnMgPSB7azogY2xhc3NkaWN0W2tdIGZvciBrIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzfQorICAgICAgICBlbnVtX21lbWJlcnMgPSB7azogY2xhc3NkaWN0W2tdIGZvciBrIGluIGNsYXNzZGljdC5fbWVtYmVyX25hbWVzfQogICAgICAgICBmb3IgbmFtZSBpbiBjbGFzc2RpY3QuX21lbWJlcl9uYW1lczoKICAgICAgICAgICAgIGRlbCBjbGFzc2RpY3RbbmFtZV0KIAorICAgICAgICAjIGFkanVzdCB0aGUgc3VuZGVycworICAgICAgICBfb3JkZXJfID0gY2xhc3NkaWN0LnBvcCgnX29yZGVyXycsIE5vbmUpCisKICAgICAgICAgIyBjaGVjayBmb3IgaWxsZWdhbCBlbnVtIG5hbWVzIChhbnkgb3RoZXJzPykKLSAgICAgICAgaW52YWxpZF9uYW1lcyA9IHNldChtZW1iZXJzKSAmIHsnbXJvJywgfQorICAgICAgICBpbnZhbGlkX25hbWVzID0gc2V0KGVudW1fbWVtYmVycykgJiB7J21ybycsIH0KICAgICAgICAgaWYgaW52YWxpZF9uYW1lczoKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0ludmFsaWQgZW51bSBtZW1iZXIgbmFtZTogezB9Jy5mb3JtYXQoCiAgICAgICAgICAgICAgICAgJywnLmpvaW4oaW52YWxpZF9uYW1lcykpKQpAQCAtMTQ1LDcgKzE4NCw3IEBACiAgICAgICAgICMgYSBjdXN0b20gX19uZXdfXyBpcyBkb2luZyBzb21ldGhpbmcgZnVua3kgd2l0aCB0aGUgdmFsdWVzIC0tIHN1Y2ggYXMKICAgICAgICAgIyBhdXRvLW51bWJlcmluZyA7KQogICAgICAgICBmb3IgbWVtYmVyX25hbWUgaW4gY2xhc3NkaWN0Ll9tZW1iZXJfbmFtZXM6Ci0gICAgICAgICAgICB2YWx1ZSA9IG1lbWJlcnNbbWVtYmVyX25hbWVdCisgICAgICAgICAgICB2YWx1ZSA9IGVudW1fbWVtYmVyc1ttZW1iZXJfbmFtZV0KICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCB0dXBsZSk6CiAgICAgICAgICAgICAgICAgYXJncyA9ICh2YWx1ZSwgKQogICAgICAgICAgICAgZWxzZToKQEAgLTE1OSw3ICsxOTgsMTAgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIgPSBfX25ld19fKGVudW1fY2xhc3MsICphcmdzKQogICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGVudW1fbWVtYmVyLCAnX3ZhbHVlXycpOgotICAgICAgICAgICAgICAgICAgICBlbnVtX21lbWJlci5fdmFsdWVfID0gbWVtYmVyX3R5cGUoKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIG1lbWJlcl90eXBlIGlzIG9iamVjdDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGVudW1fbWVtYmVyLl92YWx1ZV8gPSB2YWx1ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgZW51bV9tZW1iZXIuX3ZhbHVlXyA9IG1lbWJlcl90eXBlKCphcmdzKQogICAgICAgICAgICAgdmFsdWUgPSBlbnVtX21lbWJlci5fdmFsdWVfCiAgICAgICAgICAgICBlbnVtX21lbWJlci5fbmFtZV8gPSBtZW1iZXJfbmFtZQogICAgICAgICAgICAgZW51bV9tZW1iZXIuX19vYmpjbGFzc19fID0gZW51bV9jbGFzcwpAQCAtMjA0LDYgKzI0NiwxNCBAQAogICAgICAgICAgICAgaWYgc2F2ZV9uZXc6CiAgICAgICAgICAgICAgICAgZW51bV9jbGFzcy5fX25ld19tZW1iZXJfXyA9IF9fbmV3X18KICAgICAgICAgICAgIGVudW1fY2xhc3MuX19uZXdfXyA9IEVudW0uX19uZXdfXworCisgICAgICAgICMgcHkzIHN1cHBvcnQgZm9yIGRlZmluaXRpb24gb3JkZXIgKGhlbHBzIGtlZXAgcHkyL3B5MyBjb2RlIGluIHN5bmMpCisgICAgICAgIGlmIF9vcmRlcl8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKF9vcmRlcl8sIHN0cik6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9IF9vcmRlcl8ucmVwbGFjZSgnLCcsICcgJykuc3BsaXQoKQorICAgICAgICAgICAgaWYgX29yZGVyXyAhPSBlbnVtX2NsYXNzLl9tZW1iZXJfbmFtZXNfOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKQorCiAgICAgICAgIHJldHVybiBlbnVtX2NsYXNzCiAKICAgICBkZWYgX19ib29sX18oc2VsZik6CkBAIC0zMjUsMTMgKzM3NSwxOSBAQAogICAgICAgICAiIiIKICAgICAgICAgbWV0YWNscyA9IGNscy5fX2NsYXNzX18KICAgICAgICAgYmFzZXMgPSAoY2xzLCApIGlmIHR5cGUgaXMgTm9uZSBlbHNlICh0eXBlLCBjbHMpCisgICAgICAgIF8sIGZpcnN0X2VudW0gPSBjbHMuX2dldF9taXhpbnNfKGJhc2VzKQogICAgICAgICBjbGFzc2RpY3QgPSBtZXRhY2xzLl9fcHJlcGFyZV9fKGNsYXNzX25hbWUsIGJhc2VzKQogCiAgICAgICAgICMgc3BlY2lhbCBwcm9jZXNzaW5nIG5lZWRlZCBmb3IgbmFtZXM/CiAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZXMsIHN0cik6CiAgICAgICAgICAgICBuYW1lcyA9IG5hbWVzLnJlcGxhY2UoJywnLCAnICcpLnNwbGl0KCkKICAgICAgICAgaWYgaXNpbnN0YW5jZShuYW1lcywgKHR1cGxlLCBsaXN0KSkgYW5kIGlzaW5zdGFuY2UobmFtZXNbMF0sIHN0cik6Ci0gICAgICAgICAgICBuYW1lcyA9IFsoZSwgaSkgZm9yIChpLCBlKSBpbiBlbnVtZXJhdGUobmFtZXMsIHN0YXJ0KV0KKyAgICAgICAgICAgIG9yaWdpbmFsX25hbWVzLCBuYW1lcyA9IG5hbWVzLCBbXQorICAgICAgICAgICAgbGFzdF92YWx1ZXMgPSBbXQorICAgICAgICAgICAgZm9yIGNvdW50LCBuYW1lIGluIGVudW1lcmF0ZShvcmlnaW5hbF9uYW1lcyk6CisgICAgICAgICAgICAgICAgdmFsdWUgPSBmaXJzdF9lbnVtLl9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzWzpdKQorICAgICAgICAgICAgICAgIGxhc3RfdmFsdWVzLmFwcGVuZCh2YWx1ZSkKKyAgICAgICAgICAgICAgICBuYW1lcy5hcHBlbmQoKG5hbWUsIHZhbHVlKSkKIAogICAgICAgICAjIEhlcmUsIG5hbWVzIGlzIGVpdGhlciBhbiBpdGVyYWJsZSBvZiAobmFtZSwgdmFsdWUpIG9yIGEgbWFwcGluZy4KICAgICAgICAgZm9yIGl0ZW0gaW4gbmFtZXM6CkBAIC00NzMsNiArNTI5LDIwIEBACiAgICAgICAgICAgICBmb3IgbWVtYmVyIGluIGNscy5fbWVtYmVyX21hcF8udmFsdWVzKCk6CiAgICAgICAgICAgICAgICAgaWYgbWVtYmVyLl92YWx1ZV8gPT0gdmFsdWU6CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBtZW1iZXIKKyAgICAgICAgIyBzdGlsbCBub3QgZm91bmQgLS0gdHJ5IF9taXNzaW5nXyBob29rCisgICAgICAgIHJldHVybiBjbHMuX21pc3NpbmdfKHZhbHVlKQorCisgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3RfdmFsdWVzKToKKyAgICAgICAgZm9yIGxhc3RfdmFsdWUgaW4gcmV2ZXJzZWQobGFzdF92YWx1ZXMpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHJldHVybiBsYXN0X3ZhbHVlICsgMQorICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc3RhcnQKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIiVyIGlzIG5vdCBhIHZhbGlkICVzIiAlICh2YWx1ZSwgY2xzLl9fbmFtZV9fKSkKIAogICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKQEAgLTU0NCw4ICs2MTQsMjEgQEAKICAgICAgICAgICAgIHNvdXJjZSA9IHZhcnMoc291cmNlKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc291cmNlID0gbW9kdWxlX2dsb2JhbHMKLSAgICAgICAgbWVtYmVycyA9IHtuYW1lOiB2YWx1ZSBmb3IgbmFtZSwgdmFsdWUgaW4gc291cmNlLml0ZW1zKCkKLSAgICAgICAgICAgICAgICBpZiBmaWx0ZXIobmFtZSl9CisgICAgICAgICMgV2UgdXNlIGFuIE9yZGVyZWREaWN0IG9mIHNvcnRlZCBzb3VyY2Uga2V5cyBzbyB0aGF0IHRoZQorICAgICAgICAjIF92YWx1ZTJtZW1iZXJfbWFwIGlzIHBvcHVsYXRlZCBpbiB0aGUgc2FtZSBvcmRlciBldmVyeSB0aW1lCisgICAgICAgICMgZm9yIGEgY29uc2lzdGVudCByZXZlcnNlIG1hcHBpbmcgb2YgbnVtYmVyIHRvIG5hbWUgd2hlbiB0aGVyZQorICAgICAgICAjIGFyZSBtdWx0aXBsZSBuYW1lcyBmb3IgdGhlIHNhbWUgbnVtYmVyIHJhdGhlciB0aGFuIHZhcnlpbmcKKyAgICAgICAgIyBiZXR3ZWVuIHJ1bnMgZHVlIHRvIGhhc2ggcmFuZG9taXphdGlvbiBvZiB0aGUgbW9kdWxlIGRpY3Rpb25hcnkuCisgICAgICAgIG1lbWJlcnMgPSBbCisgICAgICAgICAgICAgICAgKG5hbWUsIHNvdXJjZVtuYW1lXSkKKyAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBzb3VyY2Uua2V5cygpCisgICAgICAgICAgICAgICAgaWYgZmlsdGVyKG5hbWUpXQorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIHNvcnQgYnkgdmFsdWUKKyAgICAgICAgICAgIG1lbWJlcnMuc29ydChrZXk9bGFtYmRhIHQ6ICh0WzFdLCB0WzBdKSkKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgICMgdW5sZXNzIHNvbWUgdmFsdWVzIGFyZW4ndCBjb21wYXJhYmxlLCBpbiB3aGljaCBjYXNlIHNvcnQgYnkgbmFtZQorICAgICAgICAgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgdDogdFswXSkKICAgICAgICAgY2xzID0gY2xzKG5hbWUsIG1lbWJlcnMsIG1vZHVsZT1tb2R1bGUpCiAgICAgICAgIGNscy5fX3JlZHVjZV9leF9fID0gX3JlZHVjZV9leF9ieV9uYW1lCiAgICAgICAgIG1vZHVsZV9nbG9iYWxzLnVwZGF0ZShjbHMuX19tZW1iZXJzX18pCkBAIC01NjAsNiArNjQzLDE4MCBAQAogZGVmIF9yZWR1Y2VfZXhfYnlfbmFtZShzZWxmLCBwcm90byk6CiAgICAgcmV0dXJuIHNlbGYubmFtZQogCitjbGFzcyBGbGFnKEVudW0pOgorICAgICIiIlN1cHBvcnQgZm9yIGZsYWdzIiIiCisKKyAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdF92YWx1ZXMpOgorICAgICAgICAiIiIKKyAgICAgICAgR2VuZXJhdGUgdGhlIG5leHQgdmFsdWUgd2hlbiBub3QgZ2l2ZW4uCisKKyAgICAgICAgbmFtZTogdGhlIG5hbWUgb2YgdGhlIG1lbWJlcgorICAgICAgICBzdGFydDogdGhlIGluaXRpdGFsIHN0YXJ0IHZhbHVlIG9yIE5vbmUKKyAgICAgICAgY291bnQ6IHRoZSBudW1iZXIgb2YgZXhpc3RpbmcgbWVtYmVycworICAgICAgICBsYXN0X3ZhbHVlOiB0aGUgbGFzdCB2YWx1ZSBhc3NpZ25lZCBvciBOb25lCisgICAgICAgICIiIgorICAgICAgICBpZiBub3QgY291bnQ6CisgICAgICAgICAgICByZXR1cm4gc3RhcnQgaWYgc3RhcnQgaXMgbm90IE5vbmUgZWxzZSAxCisgICAgICAgIGZvciBsYXN0X3ZhbHVlIGluIHJldmVyc2VkKGxhc3RfdmFsdWVzKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoaWdoX2JpdCA9IF9oaWdoX2JpdChsYXN0X3ZhbHVlKQorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignSW52YWxpZCBGbGFnIHZhbHVlOiAlcicgJSBsYXN0X3ZhbHVlKSBmcm9tIE5vbmUKKyAgICAgICAgcmV0dXJuIDIgKiogKGhpZ2hfYml0KzEpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX21pc3NpbmdfKGNscywgdmFsdWUpOgorICAgICAgICBvcmlnaW5hbF92YWx1ZSA9IHZhbHVlCisgICAgICAgIGlmIHZhbHVlIDwgMDoKKyAgICAgICAgICAgIHZhbHVlID0gfnZhbHVlCisgICAgICAgIHBvc3NpYmxlX21lbWJlciA9IGNscy5fY3JlYXRlX3BzZXVkb19tZW1iZXJfKHZhbHVlKQorICAgICAgICBpZiBvcmlnaW5hbF92YWx1ZSA8IDA6CisgICAgICAgICAgICBwb3NzaWJsZV9tZW1iZXIgPSB+cG9zc2libGVfbWVtYmVyCisgICAgICAgIHJldHVybiBwb3NzaWJsZV9tZW1iZXIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfY3JlYXRlX3BzZXVkb19tZW1iZXJfKGNscywgdmFsdWUpOgorICAgICAgICAiIiIKKyAgICAgICAgQ3JlYXRlIGEgY29tcG9zaXRlIG1lbWJlciBpZmYgdmFsdWUgY29udGFpbnMgb25seSBtZW1iZXJzLgorICAgICAgICAiIiIKKyAgICAgICAgcHNldWRvX21lbWJlciA9IGNscy5fdmFsdWUybWVtYmVyX21hcF8uZ2V0KHZhbHVlLCBOb25lKQorICAgICAgICBpZiBwc2V1ZG9fbWVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICAjIHZlcmlmeSBhbGwgYml0cyBhcmUgYWNjb3VudGVkIGZvcgorICAgICAgICAgICAgXywgZXh0cmFfZmxhZ3MgPSBfZGVjb21wb3NlKGNscywgdmFsdWUpCisgICAgICAgICAgICBpZiBleHRyYV9mbGFnczoKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCIlciBpcyBub3QgYSB2YWxpZCAlcyIgJSAodmFsdWUsIGNscy5fX25hbWVfXykpCisgICAgICAgICAgICAjIGNvbnN0cnVjdCBhIHNpbmdsZXRvbiBlbnVtIHBzZXVkby1tZW1iZXIKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIgPSBvYmplY3QuX19uZXdfXyhjbHMpCisgICAgICAgICAgICBwc2V1ZG9fbWVtYmVyLl9uYW1lXyA9IE5vbmUKKyAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfW3ZhbHVlXSA9IHBzZXVkb19tZW1iZXIKKyAgICAgICAgcmV0dXJuIHBzZXVkb19tZW1iZXIKKworICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgc2VsZi5fX2NsYXNzX18pOgorICAgICAgICAgICAgcmV0dXJuIE5vdEltcGxlbWVudGVkCisgICAgICAgIHJldHVybiBvdGhlci5fdmFsdWVfICYgc2VsZi5fdmFsdWVfID09IG90aGVyLl92YWx1ZV8KKworICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgaWYgc2VsZi5fbmFtZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJzwlcy4lczogJXI+JyAlIChjbHMuX19uYW1lX18sIHNlbGYuX25hbWVfLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIG1lbWJlcnMsIHVuY292ZXJlZCA9IF9kZWNvbXBvc2UoY2xzLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIHJldHVybiAnPCVzLiVzOiAlcj4nICUgKAorICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAnfCcuam9pbihbc3RyKG0uX25hbWVfIG9yIG0uX3ZhbHVlXykgZm9yIG0gaW4gbWVtYmVyc10pLAorICAgICAgICAgICAgICAgIHNlbGYuX3ZhbHVlXywKKyAgICAgICAgICAgICAgICApCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgY2xzID0gc2VsZi5fX2NsYXNzX18KKyAgICAgICAgaWYgc2VsZi5fbmFtZV8gaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gJyVzLiVzJyAlIChjbHMuX19uYW1lX18sIHNlbGYuX25hbWVfKQorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKGNscywgc2VsZi5fdmFsdWVfKQorICAgICAgICBpZiBsZW4obWVtYmVycykgPT0gMSBhbmQgbWVtYmVyc1swXS5fbmFtZV8gaXMgTm9uZToKKyAgICAgICAgICAgIHJldHVybiAnJXMuJXInICUgKGNscy5fX25hbWVfXywgbWVtYmVyc1swXS5fdmFsdWVfKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuICclcy4lcycgJSAoCisgICAgICAgICAgICAgICAgICAgIGNscy5fX25hbWVfXywKKyAgICAgICAgICAgICAgICAgICAgJ3wnLmpvaW4oW3N0cihtLl9uYW1lXyBvciBtLl92YWx1ZV8pIGZvciBtIGluIG1lbWJlcnNdKSwKKyAgICAgICAgICAgICAgICAgICAgKQorCisgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisKKyAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfICYgb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX3hvcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIHNlbGYuX19jbGFzc19fKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIF4gb3RoZXIuX3ZhbHVlXykKKworICAgIGRlZiBfX2ludmVydF9fKHNlbGYpOgorICAgICAgICBtZW1iZXJzLCB1bmNvdmVyZWQgPSBfZGVjb21wb3NlKHNlbGYuX19jbGFzc19fLCBzZWxmLl92YWx1ZV8pCisgICAgICAgIGludmVydGVkX21lbWJlcnMgPSBbCisgICAgICAgICAgICAgICAgbSBmb3IgbSBpbiBzZWxmLl9fY2xhc3NfXworICAgICAgICAgICAgICAgIGlmIG0gbm90IGluIG1lbWJlcnMgYW5kIG5vdCBtLl92YWx1ZV8gJiBzZWxmLl92YWx1ZV8KKyAgICAgICAgICAgICAgICBdCisgICAgICAgIGludmVydGVkID0gcmVkdWNlKF9vcl8sIGludmVydGVkX21lbWJlcnMsIHNlbGYuX19jbGFzc19fKDApKQorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oaW52ZXJ0ZWQpCisKKworY2xhc3MgSW50RmxhZyhpbnQsIEZsYWcpOgorICAgICIiIlN1cHBvcnQgZm9yIGludGVnZXItYmFzZWQgRmxhZ3MiIiIKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfbWlzc2luZ18oY2xzLCB2YWx1ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBpbnQpOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiJXIgaXMgbm90IGEgdmFsaWQgJXMiICUgKHZhbHVlLCBjbHMuX19uYW1lX18pKQorICAgICAgICBuZXdfbWVtYmVyID0gY2xzLl9jcmVhdGVfcHNldWRvX21lbWJlcl8odmFsdWUpCisgICAgICAgIHJldHVybiBuZXdfbWVtYmVyCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgX2NyZWF0ZV9wc2V1ZG9fbWVtYmVyXyhjbHMsIHZhbHVlKToKKyAgICAgICAgcHNldWRvX21lbWJlciA9IGNscy5fdmFsdWUybWVtYmVyX21hcF8uZ2V0KHZhbHVlLCBOb25lKQorICAgICAgICBpZiBwc2V1ZG9fbWVtYmVyIGlzIE5vbmU6CisgICAgICAgICAgICBuZWVkX3RvX2NyZWF0ZSA9IFt2YWx1ZV0KKyAgICAgICAgICAgICMgZ2V0IHVuYWNjb3VudGVkIGZvciBiaXRzCisgICAgICAgICAgICBfLCBleHRyYV9mbGFncyA9IF9kZWNvbXBvc2UoY2xzLCB2YWx1ZSkKKyAgICAgICAgICAgICMgdGltZXIgPSAxMAorICAgICAgICAgICAgd2hpbGUgZXh0cmFfZmxhZ3M6CisgICAgICAgICAgICAgICAgIyB0aW1lciAtPSAxCisgICAgICAgICAgICAgICAgYml0ID0gX2hpZ2hfYml0KGV4dHJhX2ZsYWdzKQorICAgICAgICAgICAgICAgIGZsYWdfdmFsdWUgPSAyICoqIGJpdAorICAgICAgICAgICAgICAgIGlmIChmbGFnX3ZhbHVlIG5vdCBpbiBjbHMuX3ZhbHVlMm1lbWJlcl9tYXBfIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ192YWx1ZSBub3QgaW4gbmVlZF90b19jcmVhdGUKKyAgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICAgICAgICAgIG5lZWRfdG9fY3JlYXRlLmFwcGVuZChmbGFnX3ZhbHVlKQorICAgICAgICAgICAgICAgIGlmIGV4dHJhX2ZsYWdzID09IC1mbGFnX3ZhbHVlOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9mbGFncyA9IDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBleHRyYV9mbGFncyBePSBmbGFnX3ZhbHVlCisgICAgICAgICAgICBmb3IgdmFsdWUgaW4gcmV2ZXJzZWQobmVlZF90b19jcmVhdGUpOgorICAgICAgICAgICAgICAgICMgY29uc3RydWN0IHNpbmdsZXRvbiBwc2V1ZG8tbWVtYmVycworICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIgPSBpbnQuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX25hbWVfID0gTm9uZQorICAgICAgICAgICAgICAgIHBzZXVkb19tZW1iZXIuX3ZhbHVlXyA9IHZhbHVlCisgICAgICAgICAgICAgICAgY2xzLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0gPSBwc2V1ZG9fbWVtYmVyCisgICAgICAgIHJldHVybiBwc2V1ZG9fbWVtYmVyCisKKyAgICBkZWYgX19vcl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIHwgc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisgICAgICAgIHJldHVybiByZXN1bHQKKworICAgIGRlZiBfX2FuZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIChzZWxmLl9fY2xhc3NfXywgaW50KSk6CisgICAgICAgICAgICByZXR1cm4gTm90SW1wbGVtZW50ZWQKKyAgICAgICAgcmV0dXJuIHNlbGYuX19jbGFzc19fKHNlbGYuX3ZhbHVlXyAmIHNlbGYuX19jbGFzc19fKG90aGVyKS5fdmFsdWVfKQorCisgICAgZGVmIF9feG9yX18oc2VsZiwgb3RoZXIpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgKHNlbGYuX19jbGFzc19fLCBpbnQpKToKKyAgICAgICAgICAgIHJldHVybiBOb3RJbXBsZW1lbnRlZAorICAgICAgICByZXR1cm4gc2VsZi5fX2NsYXNzX18oc2VsZi5fdmFsdWVfIF4gc2VsZi5fX2NsYXNzX18ob3RoZXIpLl92YWx1ZV8pCisKKyAgICBfX3Jvcl9fID0gX19vcl9fCisgICAgX19yYW5kX18gPSBfX2FuZF9fCisgICAgX19yeG9yX18gPSBfX3hvcl9fCisKKyAgICBkZWYgX19pbnZlcnRfXyhzZWxmKToKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fX2NsYXNzX18ofnNlbGYuX3ZhbHVlXykKKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisKK2RlZiBfaGlnaF9iaXQodmFsdWUpOgorICAgICIiInJldHVybnMgaW5kZXggb2YgaGlnaGVzdCBiaXQsIG9yIC0xIGlmIHZhbHVlIGlzIHplcm8gb3IgbmVnYXRpdmUiIiIKKyAgICByZXR1cm4gdmFsdWUuYml0X2xlbmd0aCgpIC0gMQorCiBkZWYgdW5pcXVlKGVudW1lcmF0aW9uKToKICAgICAiIiJDbGFzcyBkZWNvcmF0b3IgZm9yIGVudW1lcmF0aW9ucyBlbnN1cmluZyB1bmlxdWUgbWVtYmVyIHZhbHVlcy4iIiIKICAgICBkdXBsaWNhdGVzID0gW10KQEAgLTU3MiwzICs4MjksNDAgQEAKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignZHVwbGljYXRlIHZhbHVlcyBmb3VuZCBpbiAlcjogJXMnICUKICAgICAgICAgICAgICAgICAoZW51bWVyYXRpb24sIGFsaWFzX2RldGFpbHMpKQogICAgIHJldHVybiBlbnVtZXJhdGlvbgorCitkZWYgX2RlY29tcG9zZShmbGFnLCB2YWx1ZSk6CisgICAgIiIiRXh0cmFjdCBhbGwgbWVtYmVycyBmcm9tIHRoZSB2YWx1ZS4iIiIKKyAgICAjIF9kZWNvbXBvc2UgaXMgb25seSBjYWxsZWQgaWYgdGhlIHZhbHVlIGlzIG5vdCBuYW1lZAorICAgIG5vdF9jb3ZlcmVkID0gdmFsdWUKKyAgICBuZWdhdGl2ZSA9IHZhbHVlIDwgMAorICAgIGlmIG5lZ2F0aXZlOgorICAgICAgICAjIG9ubHkgY2hlY2sgZm9yIG5hbWVkIGZsYWdzCisgICAgICAgIGZsYWdzX3RvX2NoZWNrID0gWworICAgICAgICAgICAgICAgIChtLCB2KQorICAgICAgICAgICAgICAgIGZvciB2LCBtIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfLml0ZW1zKCkKKyAgICAgICAgICAgICAgICBpZiBtLm5hbWUgaXMgbm90IE5vbmUKKyAgICAgICAgICAgICAgICBdCisgICAgZWxzZToKKyAgICAgICAgIyBjaGVjayBmb3IgbmFtZWQgZmxhZ3MgYW5kIHBvd2Vycy1vZi10d28gZmxhZ3MKKyAgICAgICAgZmxhZ3NfdG9fY2hlY2sgPSBbCisgICAgICAgICAgICAgICAgKG0sIHYpCisgICAgICAgICAgICAgICAgZm9yIHYsIG0gaW4gZmxhZy5fdmFsdWUybWVtYmVyX21hcF8uaXRlbXMoKQorICAgICAgICAgICAgICAgIGlmIG0ubmFtZSBpcyBub3QgTm9uZSBvciBfcG93ZXJfb2ZfdHdvKHYpCisgICAgICAgICAgICAgICAgXQorICAgIG1lbWJlcnMgPSBbXQorICAgIGZvciBtZW1iZXIsIG1lbWJlcl92YWx1ZSBpbiBmbGFnc190b19jaGVjazoKKyAgICAgICAgaWYgbWVtYmVyX3ZhbHVlIGFuZCBtZW1iZXJfdmFsdWUgJiB2YWx1ZSA9PSBtZW1iZXJfdmFsdWU6CisgICAgICAgICAgICBtZW1iZXJzLmFwcGVuZChtZW1iZXIpCisgICAgICAgICAgICBub3RfY292ZXJlZCAmPSB+bWVtYmVyX3ZhbHVlCisgICAgaWYgbm90IG1lbWJlcnMgYW5kIHZhbHVlIGluIGZsYWcuX3ZhbHVlMm1lbWJlcl9tYXBfOgorICAgICAgICBtZW1iZXJzLmFwcGVuZChmbGFnLl92YWx1ZTJtZW1iZXJfbWFwX1t2YWx1ZV0pCisgICAgbWVtYmVycy5zb3J0KGtleT1sYW1iZGEgbTogbS5fdmFsdWVfLCByZXZlcnNlPVRydWUpCisgICAgaWYgbGVuKG1lbWJlcnMpID4gMSBhbmQgbWVtYmVyc1swXS52YWx1ZSA9PSB2YWx1ZToKKyAgICAgICAgIyB3ZSBoYXZlIHRoZSBicmVha2Rvd24sIGRvbid0IG5lZWQgdGhlIHZhbHVlIG1lbWJlciBpdHNlbGYKKyAgICAgICAgbWVtYmVycy5wb3AoMCkKKyAgICByZXR1cm4gbWVtYmVycywgbm90X2NvdmVyZWQKKworZGVmIF9wb3dlcl9vZl90d28odmFsdWUpOgorICAgIGlmIHZhbHVlIDwgMToKKyAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgcmV0dXJuIHZhbHVlID09IDIgKiogX2hpZ2hfYml0KHZhbHVlKQpkaWZmIC0tZ2l0IGEvTGliL2ZpbGVpbnB1dC5weSBiL0xpYi9maWxlaW5wdXQucHkKaW5kZXggZDJiNTIwNi4uNzIxZmU5YyAxMDA2NDQKLS0tIGEvTGliL2ZpbGVpbnB1dC5weQorKysgYi9MaWIvZmlsZWlucHV0LnB5CkBAIC03NSwxMyArNzUsMTEgQEAKIGltcG9ydCBzeXMsIG9zCiAKIF9fYWxsX18gPSBbImlucHV0IiwgImNsb3NlIiwgIm5leHRmaWxlIiwgImZpbGVuYW1lIiwgImxpbmVubyIsICJmaWxlbGluZW5vIiwKLSAgICAgICAgICAgImlzZmlyc3RsaW5lIiwgImlzc3RkaW4iLCAiRmlsZUlucHV0Il0KKyAgICAgICAgICAgImZpbGVubyIsICJpc2ZpcnN0bGluZSIsICJpc3N0ZGluIiwgIkZpbGVJbnB1dCIsICJob29rX2NvbXByZXNzZWQiLAorICAgICAgICAgICAiaG9va19lbmNvZGVkIl0KIAogX3N0YXRlID0gTm9uZQogCi0jIE5vIGxvbmdlciB1c2VkCi1ERUZBVUxUX0JVRlNJWkUgPSA4KjEwMjQKLQogZGVmIGlucHV0KGZpbGVzPU5vbmUsIGlucGxhY2U9RmFsc2UsIGJhY2t1cD0iIiwgYnVmc2l6ZT0wLAogICAgICAgICAgIG1vZGU9InIiLCBvcGVuaG9vaz1Ob25lKToKICAgICAiIiJSZXR1cm4gYW4gaW5zdGFuY2Ugb2YgdGhlIEZpbGVJbnB1dCBjbGFzcywgd2hpY2ggY2FuIGJlIGl0ZXJhdGVkLgpAQCAtMjAxLDYgKzE5OSwxMCBAQAogICAgICAgICBzZWxmLl9maWxlcyA9IGZpbGVzCiAgICAgICAgIHNlbGYuX2lucGxhY2UgPSBpbnBsYWNlCiAgICAgICAgIHNlbGYuX2JhY2t1cCA9IGJhY2t1cAorICAgICAgICBpZiBidWZzaXplOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCdidWZzaXplIGlzIGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKICAgICAgICAgc2VsZi5fc2F2ZXN0ZG91dCA9IE5vbmUKICAgICAgICAgc2VsZi5fb3V0cHV0ID0gTm9uZQogICAgICAgICBzZWxmLl9maWxlbmFtZSA9IE5vbmUKQEAgLTM5OCw5ICs0MDAsOSBAQAogICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSkKIAogCi1kZWYgaG9va19lbmNvZGVkKGVuY29kaW5nKToKK2RlZiBob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1Ob25lKToKICAgICBkZWYgb3Blbmhvb2soZmlsZW5hbWUsIG1vZGUpOgotICAgICAgICByZXR1cm4gb3BlbihmaWxlbmFtZSwgbW9kZSwgZW5jb2Rpbmc9ZW5jb2RpbmcpCisgICAgICAgIHJldHVybiBvcGVuKGZpbGVuYW1lLCBtb2RlLCBlbmNvZGluZz1lbmNvZGluZywgZXJyb3JzPWVycm9ycykKICAgICByZXR1cm4gb3Blbmhvb2sKIAogCmRpZmYgLS1naXQgYS9MaWIvZm5tYXRjaC5weSBiL0xpYi9mbm1hdGNoLnB5CmluZGV4IDYzMzBiMGMuLmZkM2I1MTQgMTAwNjQ0Ci0tLSBhL0xpYi9mbm1hdGNoLnB5CisrKyBiL0xpYi9mbm1hdGNoLnB5CkBAIC0xMDYsNCArMTA2LDQgQEAKICAgICAgICAgICAgICAgICByZXMgPSAnJXNbJXNdJyAlIChyZXMsIHN0dWZmKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmVzID0gcmVzICsgcmUuZXNjYXBlKGMpCi0gICAgcmV0dXJuIHJlcyArICdcWig/bXMpJworICAgIHJldHVybiByJyg/czolcylcWicgJSByZXMKZGlmZiAtLWdpdCBhL0xpYi9mcmFjdGlvbnMucHkgYi9MaWIvZnJhY3Rpb25zLnB5CmluZGV4IDlhYWJhYjMuLjgzMzAyMDIgMTAwNjQ0Ci0tLSBhL0xpYi9mcmFjdGlvbnMucHkKKysrIGIvTGliL2ZyYWN0aW9ucy5weQpAQCAtODEsNyArODEsNyBAQAogICAgIF9fc2xvdHNfXyA9ICgnX251bWVyYXRvcicsICdfZGVub21pbmF0b3InKQogCiAgICAgIyBXZSdyZSBpbW11dGFibGUsIHNvIHVzZSBfX25ld19fIG5vdCBfX2luaXRfXwotICAgIGRlZiBfX25ld19fKGNscywgbnVtZXJhdG9yPTAsIGRlbm9taW5hdG9yPU5vbmUsIF9ub3JtYWxpemU9VHJ1ZSk6CisgICAgZGVmIF9fbmV3X18oY2xzLCBudW1lcmF0b3I9MCwgZGVub21pbmF0b3I9Tm9uZSwgKiwgX25vcm1hbGl6ZT1UcnVlKToKICAgICAgICAgIiIiQ29uc3RydWN0cyBhIFJhdGlvbmFsLgogCiAgICAgICAgIFRha2VzIGEgc3RyaW5nIGxpa2UgJzMvMicgb3IgJzEuNScsIGFub3RoZXIgUmF0aW9uYWwgaW5zdGFuY2UsIGEKQEAgLTEyNSwxNyArMTI1LDkgQEAKICAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5kZW5vbWluYXRvcgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmCiAKLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShudW1lcmF0b3IsIGZsb2F0KToKLSAgICAgICAgICAgICAgICAjIEV4YWN0IGNvbnZlcnNpb24gZnJvbSBmbG9hdAotICAgICAgICAgICAgICAgIHZhbHVlID0gRnJhY3Rpb24uZnJvbV9mbG9hdChudW1lcmF0b3IpCi0gICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yID0gdmFsdWUuX251bWVyYXRvcgotICAgICAgICAgICAgICAgIHNlbGYuX2Rlbm9taW5hdG9yID0gdmFsdWUuX2Rlbm9taW5hdG9yCi0gICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKLQotICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgRGVjaW1hbCk6Ci0gICAgICAgICAgICAgICAgdmFsdWUgPSBGcmFjdGlvbi5mcm9tX2RlY2ltYWwobnVtZXJhdG9yKQotICAgICAgICAgICAgICAgIHNlbGYuX251bWVyYXRvciA9IHZhbHVlLl9udW1lcmF0b3IKLSAgICAgICAgICAgICAgICBzZWxmLl9kZW5vbWluYXRvciA9IHZhbHVlLl9kZW5vbWluYXRvcgorICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG51bWVyYXRvciwgKGZsb2F0LCBEZWNpbWFsKSk6CisgICAgICAgICAgICAgICAgIyBFeGFjdCBjb252ZXJzaW9uCisgICAgICAgICAgICAgICAgc2VsZi5fbnVtZXJhdG9yLCBzZWxmLl9kZW5vbWluYXRvciA9IG51bWVyYXRvci5hc19pbnRlZ2VyX3JhdGlvKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgogCiAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UobnVtZXJhdG9yLCBzdHIpOgpAQCAtMjEwLDEwICsyMDIsNiBAQAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKGYsIGZsb2F0KToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiJXMuZnJvbV9mbG9hdCgpIG9ubHkgdGFrZXMgZmxvYXRzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGYsIHR5cGUoZikuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzbmFuKGYpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQotICAgICAgICBpZiBtYXRoLmlzaW5mKGYpOgotICAgICAgICAgICAgcmFpc2UgT3ZlcmZsb3dFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXIgdG8gJXMuIiAlIChmLCBjbHMuX19uYW1lX18pKQogICAgICAgICByZXR1cm4gY2xzKCpmLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIEBjbGFzc21ldGhvZApAQCAtMjI2LDE5ICsyMTQsNyBAQAogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAogICAgICAgICAgICAgICAgICIlcy5mcm9tX2RlY2ltYWwoKSBvbmx5IHRha2VzIERlY2ltYWxzLCBub3QgJXIgKCVzKSIgJQogICAgICAgICAgICAgICAgIChjbHMuX19uYW1lX18sIGRlYywgdHlwZShkZWMpLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX2luZmluaXRlKCk6Ci0gICAgICAgICAgICByYWlzZSBPdmVyZmxvd0Vycm9yKAotICAgICAgICAgICAgICAgICJDYW5ub3QgY29udmVydCAlcyB0byAlcy4iICUgKGRlYywgY2xzLl9fbmFtZV9fKSkKLSAgICAgICAgaWYgZGVjLmlzX25hbigpOgotICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiQ2Fubm90IGNvbnZlcnQgJXMgdG8gJXMuIiAlIChkZWMsIGNscy5fX25hbWVfXykpCi0gICAgICAgIHNpZ24sIGRpZ2l0cywgZXhwID0gZGVjLmFzX3R1cGxlKCkKLSAgICAgICAgZGlnaXRzID0gaW50KCcnLmpvaW4obWFwKHN0ciwgZGlnaXRzKSkpCi0gICAgICAgIGlmIHNpZ246Ci0gICAgICAgICAgICBkaWdpdHMgPSAtZGlnaXRzCi0gICAgICAgIGlmIGV4cCA+PSAwOgotICAgICAgICAgICAgcmV0dXJuIGNscyhkaWdpdHMgKiAxMCAqKiBleHApCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByZXR1cm4gY2xzKGRpZ2l0cywgMTAgKiogLWV4cCkKKyAgICAgICAgcmV0dXJuIGNscygqZGVjLmFzX2ludGVnZXJfcmF0aW8oKSkKIAogICAgIGRlZiBsaW1pdF9kZW5vbWluYXRvcihzZWxmLCBtYXhfZGVub21pbmF0b3I9MTAwMDAwMCk6CiAgICAgICAgICIiIkNsb3Nlc3QgRnJhY3Rpb24gdG8gc2VsZiB3aXRoIGRlbm9taW5hdG9yIGF0IG1vc3QgbWF4X2Rlbm9taW5hdG9yLgpkaWZmIC0tZ2l0IGEvTGliL2Z0cGxpYi5weSBiL0xpYi9mdHBsaWIucHkKaW5kZXggYzQxNmQ4NS4uOGYzNmY1MyAxMDA2NDQKLS0tIGEvTGliL2Z0cGxpYi5weQorKysgYi9MaWIvZnRwbGliLnB5CkBAIC0zNiwxMyArMzYsMTIgQEAKICMgTW9kaWZpZWQgYnkgR2lhbXBhb2xvIFJvZG9sYScgdG8gYWRkIFRMUyBzdXBwb3J0LgogIwogCi1pbXBvcnQgb3MKIGltcG9ydCBzeXMKIGltcG9ydCBzb2NrZXQKLWltcG9ydCB3YXJuaW5ncwogZnJvbSBzb2NrZXQgaW1wb3J0IF9HTE9CQUxfREVGQVVMVF9USU1FT1VUCiAKLV9fYWxsX18gPSBbIkZUUCJdCitfX2FsbF9fID0gWyJGVFAiLCAiZXJyb3JfcmVwbHkiLCAiZXJyb3JfdGVtcCIsICJlcnJvcl9wZXJtIiwgImVycm9yX3Byb3RvIiwKKyAgICAgICAgICAgImFsbF9lcnJvcnMiXQogCiAjIE1hZ2ljIG51bWJlciBmcm9tIDxzb2NrZXQuaD4KIE1TR19PT0IgPSAweDEgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFByb2Nlc3MgZGF0YSBvdXQgb2YgYmFuZApAQCAtNzI5LDYgKzcyOCwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKQEAgLTgyMiw3ICs4MjUsNyBAQAogICAgIGlmIF8xNTBfcmUgaXMgTm9uZToKICAgICAgICAgaW1wb3J0IHJlCiAgICAgICAgIF8xNTBfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCisgICAgICAgICAgICByIjE1MCAuKiBcKChcZCspIGJ5dGVzXCkiLCByZS5JR05PUkVDQVNFIHwgcmUuQVNDSUkpCiAgICAgbSA9IF8xNTBfcmUubWF0Y2gocmVzcCkKICAgICBpZiBub3QgbToKICAgICAgICAgcmV0dXJuIE5vbmUKZGlmZiAtLWdpdCBhL0xpYi9mdW5jdG9vbHMucHkgYi9MaWIvZnVuY3Rvb2xzLnB5CmluZGV4IDIxNDUyM2MuLjk4NDVkZjIgMTAwNjQ0Ci0tLSBhL0xpYi9mdW5jdG9vbHMucHkKKysrIGIvTGliL2Z1bmN0b29scy5weQpAQCAtMjEsNiArMjEsNyBAQAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0eXBlcyBpbXBvcnQgTWFwcGluZ1Byb3h5VHlwZQogZnJvbSB3ZWFrcmVmIGltcG9ydCBXZWFrS2V5RGljdGlvbmFyeQorZnJvbSByZXBybGliIGltcG9ydCByZWN1cnNpdmVfcmVwcgogdHJ5OgogICAgIGZyb20gX3RocmVhZCBpbXBvcnQgUkxvY2sKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIzNywyNiArMjM4LDgzIEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiAjIFB1cmVseSBmdW5jdGlvbmFsLCBubyBkZXNjcmlwdG9yIGJlaGF2aW91cgotZGVmIHBhcnRpYWwoZnVuYywgKmFyZ3MsICoqa2V5d29yZHMpOgorY2xhc3MgcGFydGlhbDoKICAgICAiIiJOZXcgZnVuY3Rpb24gd2l0aCBwYXJ0aWFsIGFwcGxpY2F0aW9uIG9mIHRoZSBnaXZlbiBhcmd1bWVudHMKICAgICBhbmQga2V5d29yZHMuCiAgICAgIiIiCi0gICAgaWYgaGFzYXR0cihmdW5jLCAnZnVuYycpOgotICAgICAgICBhcmdzID0gZnVuYy5hcmdzICsgYXJncwotICAgICAgICB0bXBrdyA9IGZ1bmMua2V5d29yZHMuY29weSgpCi0gICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKLSAgICAgICAga2V5d29yZHMgPSB0bXBrdwotICAgICAgICBkZWwgdG1wa3cKLSAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYwogCi0gICAgZGVmIG5ld2Z1bmMoKmZhcmdzLCAqKmZrZXl3b3Jkcyk6Ci0gICAgICAgIG5ld2tleXdvcmRzID0ga2V5d29yZHMuY29weSgpCi0gICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShma2V5d29yZHMpCi0gICAgICAgIHJldHVybiBmdW5jKCooYXJncyArIGZhcmdzKSwgKipuZXdrZXl3b3JkcykKLSAgICBuZXdmdW5jLmZ1bmMgPSBmdW5jCi0gICAgbmV3ZnVuYy5hcmdzID0gYXJncwotICAgIG5ld2Z1bmMua2V5d29yZHMgPSBrZXl3b3JkcwotICAgIHJldHVybiBuZXdmdW5jCisgICAgX19zbG90c19fID0gImZ1bmMiLCAiYXJncyIsICJrZXl3b3JkcyIsICJfX2RpY3RfXyIsICJfX3dlYWtyZWZfXyIKKworICAgIGRlZiBfX25ld19fKCphcmdzLCAqKmtleXdvcmRzKToKKyAgICAgICAgaWYgbm90IGFyZ3M6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImRlc2NyaXB0b3IgJ19fbmV3X18nIG9mIHBhcnRpYWwgbmVlZHMgYW4gYXJndW1lbnQiKQorICAgICAgICBpZiBsZW4oYXJncykgPCAyOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJ0eXBlICdwYXJ0aWFsJyB0YWtlcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorICAgICAgICBjbHMsIGZ1bmMsICphcmdzID0gYXJncworICAgICAgICBpZiBub3QgY2FsbGFibGUoZnVuYyk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoInRoZSBmaXJzdCBhcmd1bWVudCBtdXN0IGJlIGNhbGxhYmxlIikKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpCisKKyAgICAgICAgaWYgaGFzYXR0cihmdW5jLCAiZnVuYyIpOgorICAgICAgICAgICAgYXJncyA9IGZ1bmMuYXJncyArIGFyZ3MKKyAgICAgICAgICAgIHRtcGt3ID0gZnVuYy5rZXl3b3Jkcy5jb3B5KCkKKyAgICAgICAgICAgIHRtcGt3LnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgICAgIGtleXdvcmRzID0gdG1wa3cKKyAgICAgICAgICAgIGRlbCB0bXBrdworICAgICAgICAgICAgZnVuYyA9IGZ1bmMuZnVuYworCisgICAgICAgIHNlbGYgPSBzdXBlcihwYXJ0aWFsLCBjbHMpLl9fbmV3X18oY2xzKQorCisgICAgICAgIHNlbGYuZnVuYyA9IGZ1bmMKKyAgICAgICAgc2VsZi5hcmdzID0gYXJncworICAgICAgICBzZWxmLmtleXdvcmRzID0ga2V5d29yZHMKKyAgICAgICAgcmV0dXJuIHNlbGYKKworICAgIGRlZiBfX2NhbGxfXygqYXJncywgKiprZXl3b3Jkcyk6CisgICAgICAgIGlmIG5vdCBhcmdzOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJkZXNjcmlwdG9yICdfX2NhbGxfXycgb2YgcGFydGlhbCBuZWVkcyBhbiBhcmd1bWVudCIpCisgICAgICAgIHNlbGYsICphcmdzID0gYXJncworICAgICAgICBuZXdrZXl3b3JkcyA9IHNlbGYua2V5d29yZHMuY29weSgpCisgICAgICAgIG5ld2tleXdvcmRzLnVwZGF0ZShrZXl3b3JkcykKKyAgICAgICAgcmV0dXJuIHNlbGYuZnVuYygqc2VsZi5hcmdzLCAqYXJncywgKipuZXdrZXl3b3JkcykKKworICAgIEByZWN1cnNpdmVfcmVwcigpCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBxdWFsbmFtZSA9IHR5cGUoc2VsZikuX19xdWFsbmFtZV9fCisgICAgICAgIGFyZ3MgPSBbcmVwcihzZWxmLmZ1bmMpXQorICAgICAgICBhcmdzLmV4dGVuZChyZXByKHgpIGZvciB4IGluIHNlbGYuYXJncykKKyAgICAgICAgYXJncy5leHRlbmQoZiJ7a309e3Yhcn0iIGZvciAoaywgdikgaW4gc2VsZi5rZXl3b3Jkcy5pdGVtcygpKQorICAgICAgICBpZiB0eXBlKHNlbGYpLl9fbW9kdWxlX18gPT0gImZ1bmN0b29scyI6CisgICAgICAgICAgICByZXR1cm4gZiJmdW5jdG9vbHMue3F1YWxuYW1lfSh7JywgJy5qb2luKGFyZ3MpfSkiCisgICAgICAgIHJldHVybiBmIntxdWFsbmFtZX0oeycsICcuam9pbihhcmdzKX0pIgorCisgICAgZGVmIF9fcmVkdWNlX18oc2VsZik6CisgICAgICAgIHJldHVybiB0eXBlKHNlbGYpLCAoc2VsZi5mdW5jLCksIChzZWxmLmZ1bmMsIHNlbGYuYXJncywKKyAgICAgICAgICAgICAgIHNlbGYua2V5d29yZHMgb3IgTm9uZSwgc2VsZi5fX2RpY3RfXyBvciBOb25lKQorCisgICAgZGVmIF9fc2V0c3RhdGVfXyhzZWxmLCBzdGF0ZSk6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHN0YXRlLCB0dXBsZSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImFyZ3VtZW50IHRvIF9fc2V0c3RhdGVfXyBtdXN0IGJlIGEgdHVwbGUiKQorICAgICAgICBpZiBsZW4oc3RhdGUpICE9IDQ6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoZiJleHBlY3RlZCA0IGl0ZW1zIGluIHN0YXRlLCBnb3Qge2xlbihzdGF0ZSl9IikKKyAgICAgICAgZnVuYywgYXJncywga3dkcywgbmFtZXNwYWNlID0gc3RhdGUKKyAgICAgICAgaWYgKG5vdCBjYWxsYWJsZShmdW5jKSBvciBub3QgaXNpbnN0YW5jZShhcmdzLCB0dXBsZSkgb3IKKyAgICAgICAgICAgKGt3ZHMgaXMgbm90IE5vbmUgYW5kIG5vdCBpc2luc3RhbmNlKGt3ZHMsIGRpY3QpKSBvcgorICAgICAgICAgICAobmFtZXNwYWNlIGlzIG5vdCBOb25lIGFuZCBub3QgaXNpbnN0YW5jZShuYW1lc3BhY2UsIGRpY3QpKSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImludmFsaWQgcGFydGlhbCBzdGF0ZSIpCisKKyAgICAgICAgYXJncyA9IHR1cGxlKGFyZ3MpICMganVzdCBpbiBjYXNlIGl0J3MgYSBzdWJjbGFzcworICAgICAgICBpZiBrd2RzIGlzIE5vbmU6CisgICAgICAgICAgICBrd2RzID0ge30KKyAgICAgICAgZWxpZiB0eXBlKGt3ZHMpIGlzIG5vdCBkaWN0OiAjIFhYWCBkb2VzIGl0IG5lZWQgdG8gYmUgKmV4YWN0bHkqIGRpY3Q/CisgICAgICAgICAgICBrd2RzID0gZGljdChrd2RzKQorICAgICAgICBpZiBuYW1lc3BhY2UgaXMgTm9uZToKKyAgICAgICAgICAgIG5hbWVzcGFjZSA9IHt9CisKKyAgICAgICAgc2VsZi5fX2RpY3RfXyA9IG5hbWVzcGFjZQorICAgICAgICBzZWxmLmZ1bmMgPSBmdW5jCisgICAgICAgIHNlbGYuYXJncyA9IGFyZ3MKKyAgICAgICAgc2VsZi5rZXl3b3JkcyA9IGt3ZHMKIAogdHJ5OgogICAgIGZyb20gX2Z1bmN0b29scyBpbXBvcnQgcGFydGlhbApkaWZmIC0tZ2l0IGEvTGliL2dlbmVyaWNwYXRoLnB5IGIvTGliL2dlbmVyaWNwYXRoLnB5CmluZGV4IDY3MTQwNjEuLjMwM2IzYjMgMTAwNjQ0Ci0tLSBhL0xpYi9nZW5lcmljcGF0aC5weQorKysgYi9MaWIvZ2VuZXJpY3BhdGgucHkKQEAgLTY5LDYgKzY5LDEyIEBACiBkZWYgY29tbW9ucHJlZml4KG0pOgogICAgICJHaXZlbiBhIGxpc3Qgb2YgcGF0aG5hbWVzLCByZXR1cm5zIHRoZSBsb25nZXN0IGNvbW1vbiBsZWFkaW5nIGNvbXBvbmVudCIKICAgICBpZiBub3QgbTogcmV0dXJuICcnCisgICAgIyBTb21lIHBlb3BsZSBwYXNzIGluIGEgbGlzdCBvZiBwYXRobmFtZSBwYXJ0cyB0byBvcGVyYXRlIGluIGFuIE9TLWFnbm9zdGljCisgICAgIyBmYXNoaW9uOyBkb24ndCB0cnkgdG8gdHJhbnNsYXRlIGluIHRoYXQgY2FzZSBhcyB0aGF0J3MgYW4gYWJ1c2Ugb2YgdGhlCisgICAgIyBBUEkgYW5kIHRoZXkgYXJlIGFscmVhZHkgZG9pbmcgd2hhdCB0aGV5IG5lZWQgdG8gYmUgT1MtYWdub3N0aWMgYW5kIHNvCisgICAgIyB0aGV5IG1vc3QgbGlrZWx5IHdvbid0IGJlIHVzaW5nIGFuIG9zLlBhdGhMaWtlIG9iamVjdCBpbiB0aGUgc3VibGlzdHMuCisgICAgaWYgbm90IGlzaW5zdGFuY2UobVswXSwgKGxpc3QsIHR1cGxlKSk6CisgICAgICAgIG0gPSB0dXBsZShtYXAob3MuZnNwYXRoLCBtKSkKICAgICBzMSA9IG1pbihtKQogICAgIHMyID0gbWF4KG0pCiAgICAgZm9yIGksIGMgaW4gZW51bWVyYXRlKHMxKToKZGlmZiAtLWdpdCBhL0xpYi9nbG9iLnB5IGIvTGliL2dsb2IucHkKaW5kZXggMTYzMzBkOC4uMDAyY2Q5MiAxMDA2NDQKLS0tIGEvTGliL2dsb2IucHkKKysrIGIvTGliL2dsb2IucHkKQEAgLTMwLDE1ICszMCwxNiBAQAogICAgIElmIHJlY3Vyc2l2ZSBpcyB0cnVlLCB0aGUgcGF0dGVybiAnKionIHdpbGwgbWF0Y2ggYW55IGZpbGVzIGFuZAogICAgIHplcm8gb3IgbW9yZSBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXMuCiAgICAgIiIiCi0gICAgaXQgPSBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSkKKyAgICBpdCA9IF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlLCBGYWxzZSkKICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShwYXRobmFtZSk6CiAgICAgICAgIHMgPSBuZXh0KGl0KSAgIyBza2lwIGVtcHR5IHN0cmluZwogICAgICAgICBhc3NlcnQgbm90IHMKICAgICByZXR1cm4gaXQKIAotZGVmIF9pZ2xvYihwYXRobmFtZSwgcmVjdXJzaXZlKToKK2RlZiBfaWdsb2IocGF0aG5hbWUsIHJlY3Vyc2l2ZSwgZGlyb25seSk6CiAgICAgZGlybmFtZSwgYmFzZW5hbWUgPSBvcy5wYXRoLnNwbGl0KHBhdGhuYW1lKQogICAgIGlmIG5vdCBoYXNfbWFnaWMocGF0aG5hbWUpOgorICAgICAgICBhc3NlcnQgbm90IGRpcm9ubHkKICAgICAgICAgaWYgYmFzZW5hbWU6CiAgICAgICAgICAgICBpZiBvcy5wYXRoLmxleGlzdHMocGF0aG5hbWUpOgogICAgICAgICAgICAgICAgIHlpZWxkIHBhdGhuYW1lCkBAIC00OSw0NyArNTAsMzkgQEAKICAgICAgICAgcmV0dXJuCiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIHJlY3Vyc2l2ZSBhbmQgX2lzcmVjdXJzaXZlKGJhc2VuYW1lKToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjIoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHlpZWxkIGZyb20gZ2xvYjEoZGlybmFtZSwgYmFzZW5hbWUpCisgICAgICAgICAgICB5aWVsZCBmcm9tIF9nbG9iMShkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSkKICAgICAgICAgcmV0dXJuCiAgICAgIyBgb3MucGF0aC5zcGxpdCgpYCByZXR1cm5zIHRoZSBhcmd1bWVudCBpdHNlbGYgYXMgYSBkaXJuYW1lIGlmIGl0IGlzIGEKICAgICAjIGRyaXZlIG9yIFVOQyBwYXRoLiAgUHJldmVudCBhbiBpbmZpbml0ZSByZWN1cnNpb24gaWYgYSBkcml2ZSBvciBVTkMgcGF0aAogICAgICMgY29udGFpbnMgbWFnaWMgY2hhcmFjdGVycyAoaS5lLiByJ1xcP1xDOicpLgogICAgIGlmIGRpcm5hbWUgIT0gcGF0aG5hbWUgYW5kIGhhc19tYWdpYyhkaXJuYW1lKToKLSAgICAgICAgZGlycyA9IF9pZ2xvYihkaXJuYW1lLCByZWN1cnNpdmUpCisgICAgICAgIGRpcnMgPSBfaWdsb2IoZGlybmFtZSwgcmVjdXJzaXZlLCBUcnVlKQogICAgIGVsc2U6CiAgICAgICAgIGRpcnMgPSBbZGlybmFtZV0KICAgICBpZiBoYXNfbWFnaWMoYmFzZW5hbWUpOgogICAgICAgICBpZiByZWN1cnNpdmUgYW5kIF9pc3JlY3Vyc2l2ZShiYXNlbmFtZSk6Ci0gICAgICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IyCisgICAgICAgICAgICBnbG9iX2luX2RpciA9IF9nbG9iMgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBnbG9iMQorICAgICAgICAgICAgZ2xvYl9pbl9kaXIgPSBfZ2xvYjEKICAgICBlbHNlOgotICAgICAgICBnbG9iX2luX2RpciA9IGdsb2IwCisgICAgICAgIGdsb2JfaW5fZGlyID0gX2dsb2IwCiAgICAgZm9yIGRpcm5hbWUgaW4gZGlyczoKLSAgICAgICAgZm9yIG5hbWUgaW4gZ2xvYl9pbl9kaXIoZGlybmFtZSwgYmFzZW5hbWUpOgorICAgICAgICBmb3IgbmFtZSBpbiBnbG9iX2luX2RpcihkaXJuYW1lLCBiYXNlbmFtZSwgZGlyb25seSk6CiAgICAgICAgICAgICB5aWVsZCBvcy5wYXRoLmpvaW4oZGlybmFtZSwgbmFtZSkKIAogIyBUaGVzZSAyIGhlbHBlciBmdW5jdGlvbnMgbm9uLXJlY3Vyc2l2ZWx5IGdsb2IgaW5zaWRlIGEgbGl0ZXJhbCBkaXJlY3RvcnkuCi0jIFRoZXkgcmV0dXJuIGEgbGlzdCBvZiBiYXNlbmFtZXMuIGBnbG9iMWAgYWNjZXB0cyBhIHBhdHRlcm4gd2hpbGUgYGdsb2IwYAorIyBUaGV5IHJldHVybiBhIGxpc3Qgb2YgYmFzZW5hbWVzLiAgX2dsb2IxIGFjY2VwdHMgYSBwYXR0ZXJuIHdoaWxlIF9nbG9iMAogIyB0YWtlcyBhIGxpdGVyYWwgYmFzZW5hbWUgKHNvIGl0IG9ubHkgaGFzIHRvIGNoZWNrIGZvciBpdHMgZXhpc3RlbmNlKS4KIAotZGVmIGdsb2IxKGRpcm5hbWUsIHBhdHRlcm4pOgotICAgIGlmIG5vdCBkaXJuYW1lOgotICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJ5dGVzKToKLSAgICAgICAgICAgIGRpcm5hbWUgPSBieXRlcyhvcy5jdXJkaXIsICdBU0NJSScpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkaXJuYW1lID0gb3MuY3VyZGlyCi0gICAgdHJ5OgotICAgICAgICBuYW1lcyA9IG9zLmxpc3RkaXIoZGlybmFtZSkKLSAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgcmV0dXJuIFtdCitkZWYgX2dsb2IxKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgorICAgIG5hbWVzID0gbGlzdChfaXRlcmRpcihkaXJuYW1lLCBkaXJvbmx5KSkKICAgICBpZiBub3QgX2lzaGlkZGVuKHBhdHRlcm4pOgotICAgICAgICBuYW1lcyA9IFt4IGZvciB4IGluIG5hbWVzIGlmIG5vdCBfaXNoaWRkZW4oeCldCisgICAgICAgIG5hbWVzID0gKHggZm9yIHggaW4gbmFtZXMgaWYgbm90IF9pc2hpZGRlbih4KSkKICAgICByZXR1cm4gZm5tYXRjaC5maWx0ZXIobmFtZXMsIHBhdHRlcm4pCiAKLWRlZiBnbG9iMChkaXJuYW1lLCBiYXNlbmFtZSk6CitkZWYgX2dsb2IwKGRpcm5hbWUsIGJhc2VuYW1lLCBkaXJvbmx5KToKICAgICBpZiBub3QgYmFzZW5hbWU6CiAgICAgICAgICMgYG9zLnBhdGguc3BsaXQoKWAgcmV0dXJucyBhbiBlbXB0eSBiYXNlbmFtZSBmb3IgcGF0aHMgZW5kaW5nIHdpdGggYQogICAgICAgICAjIGRpcmVjdG9yeSBzZXBhcmF0b3IuICAncSp4Lycgc2hvdWxkIG1hdGNoIG9ubHkgZGlyZWN0b3JpZXMuCkBAIC0xMDAsMzAgKzkzLDQ5IEBACiAgICAgICAgICAgICByZXR1cm4gW2Jhc2VuYW1lXQogICAgIHJldHVybiBbXQogCisjIEZvbGxvd2luZyBmdW5jdGlvbnMgYXJlIG5vdCBwdWJsaWMgYnV0IGNhbiBiZSB1c2VkIGJ5IHRoaXJkLXBhcnR5IGNvZGUuCisKK2RlZiBnbG9iMChkaXJuYW1lLCBwYXR0ZXJuKToKKyAgICByZXR1cm4gX2dsb2IwKGRpcm5hbWUsIHBhdHRlcm4sIEZhbHNlKQorCitkZWYgZ2xvYjEoZGlybmFtZSwgcGF0dGVybik6CisgICAgcmV0dXJuIF9nbG9iMShkaXJuYW1lLCBwYXR0ZXJuLCBGYWxzZSkKKwogIyBUaGlzIGhlbHBlciBmdW5jdGlvbiByZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwKICMgZGlyZWN0b3J5LgogCi1kZWYgZ2xvYjIoZGlybmFtZSwgcGF0dGVybik6CitkZWYgX2dsb2IyKGRpcm5hbWUsIHBhdHRlcm4sIGRpcm9ubHkpOgogICAgIGFzc2VydCBfaXNyZWN1cnNpdmUocGF0dGVybikKICAgICB5aWVsZCBwYXR0ZXJuWzowXQotICAgIHlpZWxkIGZyb20gX3JsaXN0ZGlyKGRpcm5hbWUpCisgICAgeWllbGQgZnJvbSBfcmxpc3RkaXIoZGlybmFtZSwgZGlyb25seSkKIAotIyBSZWN1cnNpdmVseSB5aWVsZHMgcmVsYXRpdmUgcGF0aG5hbWVzIGluc2lkZSBhIGxpdGVyYWwgZGlyZWN0b3J5LgotZGVmIF9ybGlzdGRpcihkaXJuYW1lKToKKyMgSWYgZGlyb25seSBpcyBmYWxzZSwgeWllbGRzIGFsbCBmaWxlIG5hbWVzIGluc2lkZSBhIGRpcmVjdG9yeS4KKyMgSWYgZGlyb25seSBpcyB0cnVlLCB5aWVsZHMgb25seSBkaXJlY3RvcnkgbmFtZXMuCitkZWYgX2l0ZXJkaXIoZGlybmFtZSwgZGlyb25seSk6CiAgICAgaWYgbm90IGRpcm5hbWU6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlybmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgZGlybmFtZSA9IGJ5dGVzKG9zLmN1cmRpciwgJ0FTQ0lJJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGRpcm5hbWUgPSBvcy5jdXJkaXIKICAgICB0cnk6Ci0gICAgICAgIG5hbWVzID0gb3MubGlzdGRpcihkaXJuYW1lKQotICAgIGV4Y2VwdCBvcy5lcnJvcjoKKyAgICAgICAgd2l0aCBvcy5zY2FuZGlyKGRpcm5hbWUpIGFzIGl0OgorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGl0OgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRpcm9ubHkgb3IgZW50cnkuaXNfZGlyKCk6CisgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBlbnRyeS5uYW1lCisgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgcmV0dXJuCisKKyMgUmVjdXJzaXZlbHkgeWllbGRzIHJlbGF0aXZlIHBhdGhuYW1lcyBpbnNpZGUgYSBsaXRlcmFsIGRpcmVjdG9yeS4KK2RlZiBfcmxpc3RkaXIoZGlybmFtZSwgZGlyb25seSk6CisgICAgbmFtZXMgPSBsaXN0KF9pdGVyZGlyKGRpcm5hbWUsIGRpcm9ubHkpKQogICAgIGZvciB4IGluIG5hbWVzOgogICAgICAgICBpZiBub3QgX2lzaGlkZGVuKHgpOgogICAgICAgICAgICAgeWllbGQgeAogICAgICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihkaXJuYW1lLCB4KSBpZiBkaXJuYW1lIGVsc2UgeAotICAgICAgICAgICAgZm9yIHkgaW4gX3JsaXN0ZGlyKHBhdGgpOgorICAgICAgICAgICAgZm9yIHkgaW4gX3JsaXN0ZGlyKHBhdGgsIGRpcm9ubHkpOgogICAgICAgICAgICAgICAgIHlpZWxkIG9zLnBhdGguam9pbih4LCB5KQogCiAKZGlmZiAtLWdpdCBhL0xpYi9nemlwLnB5IGIvTGliL2d6aXAucHkKaW5kZXggZGE0NDc5ZS4uNzZhYjQ5NyAxMDA2NDQKLS0tIGEvTGliL2d6aXAucHkKKysrIGIvTGliL2d6aXAucHkKQEAgLTQ5LDcgKzQ5LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFyZ3VtZW50ICduZXdsaW5lJyBub3Qgc3VwcG9ydGVkIGluIGJpbmFyeSBtb2RlIikKIAogICAgIGd6X21vZGUgPSBtb2RlLnJlcGxhY2UoInQiLCAiIikKLSAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIChzdHIsIGJ5dGVzLCBvcy5QYXRoTGlrZSkpOgogICAgICAgICBiaW5hcnlfZmlsZSA9IEd6aXBGaWxlKGZpbGVuYW1lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsKQogICAgIGVsaWYgaGFzYXR0cihmaWxlbmFtZSwgInJlYWQiKSBvciBoYXNhdHRyKGZpbGVuYW1lLCAid3JpdGUiKToKICAgICAgICAgYmluYXJ5X2ZpbGUgPSBHemlwRmlsZShOb25lLCBnel9tb2RlLCBjb21wcmVzc2xldmVsLCBmaWxlbmFtZSkKQEAgLTE2NSw2ICsxNjUsOCBAQAogICAgICAgICAgICAgZmlsZW5hbWUgPSBnZXRhdHRyKGZpbGVvYmosICduYW1lJywgJycpCiAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShmaWxlbmFtZSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICcnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBmaWxlbmFtZSA9IG9zLmZzcGF0aChmaWxlbmFtZSkKICAgICAgICAgaWYgbW9kZSBpcyBOb25lOgogICAgICAgICAgICAgbW9kZSA9IGdldGF0dHIoZmlsZW9iaiwgJ21vZGUnLCAncmInKQogCkBAIC0zNTcsMTAgKzM1OSwxMCBAQAogICAgICAgICAgICAgaWYgb2Zmc2V0IDwgc2VsZi5vZmZzZXQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgT1NFcnJvcignTmVnYXRpdmUgc2VlayBpbiB3cml0ZSBtb2RlJykKICAgICAgICAgICAgIGNvdW50ID0gb2Zmc2V0IC0gc2VsZi5vZmZzZXQKLSAgICAgICAgICAgIGNodW5rID0gYnl0ZXMoMTAyNCkKKyAgICAgICAgICAgIGNodW5rID0gYidcMCcgKiAxMDI0CiAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShjb3VudCAvLyAxMDI0KToKICAgICAgICAgICAgICAgICBzZWxmLndyaXRlKGNodW5rKQotICAgICAgICAgICAgc2VsZi53cml0ZShieXRlcyhjb3VudCAlIDEwMjQpKQorICAgICAgICAgICAgc2VsZi53cml0ZShiJ1wwJyAqIChjb3VudCAlIDEwMjQpKQogICAgICAgICBlbGlmIHNlbGYubW9kZSA9PSBSRUFEOgogICAgICAgICAgICAgc2VsZi5fY2hlY2tfbm90X2Nsb3NlZCgpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fYnVmZmVyLnNlZWsob2Zmc2V0LCB3aGVuY2UpCmRpZmYgLS1naXQgYS9MaWIvaGFzaGxpYi5weSBiL0xpYi9oYXNobGliLnB5CmluZGV4IDMxNmNlY2UuLjA1M2E3YWQgMTAwNjQ0Ci0tLSBhL0xpYi9oYXNobGliLnB5CisrKyBiL0xpYi9oYXNobGliLnB5CkBAIC00LDE0ICs0LDE1IEBACiAKIF9fZG9jX18gPSAiIiJoYXNobGliIG1vZHVsZSAtIEEgY29tbW9uIGludGVyZmFjZSB0byBtYW55IGhhc2ggZnVuY3Rpb25zLgogCi1uZXcobmFtZSwgZGF0YT1iJycpIC0gcmV0dXJucyBhIG5ldyBoYXNoIG9iamVjdCBpbXBsZW1lbnRpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gaGFzaCBmdW5jdGlvbjsgaW5pdGlhbGl6aW5nIHRoZSBoYXNoCi0gICAgICAgICAgICAgICAgICAgICAgdXNpbmcgdGhlIGdpdmVuIGJpbmFyeSBkYXRhLgorbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncykgLSByZXR1cm5zIGEgbmV3IGhhc2ggb2JqZWN0IGltcGxlbWVudGluZyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2l2ZW4gaGFzaCBmdW5jdGlvbjsgaW5pdGlhbGl6aW5nIHRoZSBoYXNoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzaW5nIHRoZSBnaXZlbiBiaW5hcnkgZGF0YS4KIAogTmFtZWQgY29uc3RydWN0b3IgZnVuY3Rpb25zIGFyZSBhbHNvIGF2YWlsYWJsZSwgdGhlc2UgYXJlIGZhc3RlcgogdGhhbiB1c2luZyBuZXcobmFtZSk6CiAKLW1kNSgpLCBzaGExKCksIHNoYTIyNCgpLCBzaGEyNTYoKSwgc2hhMzg0KCksIGFuZCBzaGE1MTIoKQorbWQ1KCksIHNoYTEoKSwgc2hhMjI0KCksIHNoYTI1NigpLCBzaGEzODQoKSwgc2hhNTEyKCksIGJsYWtlMmIoKSwgYmxha2UycygpLAorc2hhM18yMjQsIHNoYTNfMjU2LCBzaGEzXzM4NCwgc2hhM181MTIsIHNoYWtlXzEyOCwgYW5kIHNoYWtlXzI1Ni4KIAogTW9yZSBhbGdvcml0aG1zIG1heSBiZSBhdmFpbGFibGUgb24geW91ciBwbGF0Zm9ybSBidXQgdGhlIGFib3ZlIGFyZSBndWFyYW50ZWVkCiB0byBleGlzdC4gIFNlZSB0aGUgYWxnb3JpdGhtc19ndWFyYW50ZWVkIGFuZCBhbGdvcml0aG1zX2F2YWlsYWJsZSBhdHRyaWJ1dGVzCkBAIC01NCw3ICs1NSwxMSBAQAogCiAjIFRoaXMgdHVwbGUgYW5kIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IoKSBtdXN0IGJlIG1vZGlmaWVkIGlmIGEgbmV3CiAjIGFsd2F5cyBhdmFpbGFibGUgYWxnb3JpdGhtIGlzIGFkZGVkLgotX19hbHdheXNfc3VwcG9ydGVkID0gKCdtZDUnLCAnc2hhMScsICdzaGEyMjQnLCAnc2hhMjU2JywgJ3NoYTM4NCcsICdzaGE1MTInKQorX19hbHdheXNfc3VwcG9ydGVkID0gKCdtZDUnLCAnc2hhMScsICdzaGEyMjQnLCAnc2hhMjU2JywgJ3NoYTM4NCcsICdzaGE1MTInLAorICAgICAgICAgICAgICAgICAgICAgICdibGFrZTJiJywgJ2JsYWtlMnMnLAorICAgICAgICAgICAgICAgICAgICAgICdzaGEzXzIyNCcsICdzaGEzXzI1NicsICdzaGEzXzM4NCcsICdzaGEzXzUxMicsCisgICAgICAgICAgICAgICAgICAgICAgJ3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnKQorCiAKIGFsZ29yaXRobXNfZ3VhcmFudGVlZCA9IHNldChfX2Fsd2F5c19zdXBwb3J0ZWQpCiBhbGdvcml0aG1zX2F2YWlsYWJsZSA9IHNldChfX2Fsd2F5c19zdXBwb3J0ZWQpCkBAIC04NSw2ICs5MCwxOSBAQAogICAgICAgICAgICAgaW1wb3J0IF9zaGE1MTIKICAgICAgICAgICAgIGNhY2hlWydTSEEzODQnXSA9IGNhY2hlWydzaGEzODQnXSA9IF9zaGE1MTIuc2hhMzg0CiAgICAgICAgICAgICBjYWNoZVsnU0hBNTEyJ10gPSBjYWNoZVsnc2hhNTEyJ10gPSBfc2hhNTEyLnNoYTUxMgorICAgICAgICBlbGlmIG5hbWUgaW4gKCdibGFrZTJiJywgJ2JsYWtlMnMnKToKKyAgICAgICAgICAgIGltcG9ydCBfYmxha2UyCisgICAgICAgICAgICBjYWNoZVsnYmxha2UyYiddID0gX2JsYWtlMi5ibGFrZTJiCisgICAgICAgICAgICBjYWNoZVsnYmxha2UycyddID0gX2JsYWtlMi5ibGFrZTJzCisgICAgICAgIGVsaWYgbmFtZSBpbiB7J3NoYTNfMjI0JywgJ3NoYTNfMjU2JywgJ3NoYTNfMzg0JywgJ3NoYTNfNTEyJywKKyAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1Nid9OgorICAgICAgICAgICAgaW1wb3J0IF9zaGEzCisgICAgICAgICAgICBjYWNoZVsnc2hhM18yMjQnXSA9IF9zaGEzLnNoYTNfMjI0CisgICAgICAgICAgICBjYWNoZVsnc2hhM18yNTYnXSA9IF9zaGEzLnNoYTNfMjU2CisgICAgICAgICAgICBjYWNoZVsnc2hhM18zODQnXSA9IF9zaGEzLnNoYTNfMzg0CisgICAgICAgICAgICBjYWNoZVsnc2hhM181MTInXSA9IF9zaGEzLnNoYTNfNTEyCisgICAgICAgICAgICBjYWNoZVsnc2hha2VfMTI4J10gPSBfc2hhMy5zaGFrZV8xMjgKKyAgICAgICAgICAgIGNhY2hlWydzaGFrZV8yNTYnXSA9IF9zaGEzLnNoYWtlXzI1NgogICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgcGFzcyAgIyBubyBleHRlbnNpb24gbW9kdWxlLCB0aGlzIGhhc2ggaXMgdW5zdXBwb3J0ZWQuCiAKQEAgLTk2LDYgKzExNCw5IEBACiAKIAogZGVmIF9fZ2V0X29wZW5zc2xfY29uc3RydWN0b3IobmFtZSk6CisgICAgaWYgbmFtZSBpbiB7J2JsYWtlMmInLCAnYmxha2Uycyd9OgorICAgICAgICAjIFByZWZlciBvdXIgYmxha2UyIGltcGxlbWVudGF0aW9uLgorICAgICAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKQogICAgIHRyeToKICAgICAgICAgZiA9IGdldGF0dHIoX2hhc2hsaWIsICdvcGVuc3NsXycgKyBuYW1lKQogICAgICAgICAjIEFsbG93IHRoZSBDIG1vZHVsZSB0byByYWlzZSBWYWx1ZUVycm9yLiAgVGhlIGZ1bmN0aW9uIHdpbGwgYmUKQEAgLTEwNywxNyArMTI4LDIzIEBACiAgICAgICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpCiAKIAotZGVmIF9fcHlfbmV3KG5hbWUsIGRhdGE9YicnKToKK2RlZiBfX3B5X25ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpOgorICAgICIiIm5ldyhuYW1lLCBkYXRhPWInJywgKiprd2FyZ3MpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZQorICAgIG5hbWVkIGFsZ29yaXRobTsgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgorICAgICIiIgorICAgIHJldHVybiBfX2dldF9idWlsdGluX2NvbnN0cnVjdG9yKG5hbWUpKGRhdGEsICoqa3dhcmdzKQorCisKK2RlZiBfX2hhc2hfbmV3KG5hbWUsIGRhdGE9YicnLCAqKmt3YXJncyk6CiAgICAgIiIibmV3KG5hbWUsIGRhdGE9YicnKSAtIFJldHVybiBhIG5ldyBoYXNoaW5nIG9iamVjdCB1c2luZyB0aGUgbmFtZWQgYWxnb3JpdGhtOwogICAgIG9wdGlvbmFsbHkgaW5pdGlhbGl6ZWQgd2l0aCBkYXRhICh3aGljaCBtdXN0IGJlIGJ5dGVzKS4KICAgICAiIiIKLSAgICByZXR1cm4gX19nZXRfYnVpbHRpbl9jb25zdHJ1Y3RvcihuYW1lKShkYXRhKQotCi0KLWRlZiBfX2hhc2hfbmV3KG5hbWUsIGRhdGE9YicnKToKLSAgICAiIiJuZXcobmFtZSwgZGF0YT1iJycpIC0gUmV0dXJuIGEgbmV3IGhhc2hpbmcgb2JqZWN0IHVzaW5nIHRoZSBuYW1lZCBhbGdvcml0aG07Ci0gICAgb3B0aW9uYWxseSBpbml0aWFsaXplZCB3aXRoIGRhdGEgKHdoaWNoIG11c3QgYmUgYnl0ZXMpLgotICAgICIiIgorICAgIGlmIG5hbWUgaW4geydibGFrZTJiJywgJ2JsYWtlMnMnfToKKyAgICAgICAgIyBQcmVmZXIgb3VyIGJsYWtlMiBpbXBsZW1lbnRhdGlvbi4KKyAgICAgICAgIyBPcGVuU1NMIDEuMS4wIGNvbWVzIHdpdGggYSBsaW1pdGVkIGltcGxlbWVudGF0aW9uIG9mIGJsYWtlMmIvcy4KKyAgICAgICAgIyBJdCBkb2VzIG5laXRoZXIgc3VwcG9ydCBrZXllZCBibGFrZTIgbm9yIGFkdmFuY2VkIGZlYXR1cmVzIGxpa2UKKyAgICAgICAgIyBzYWx0LCBwZXJzb25hbCwgdHJlZSBoYXNoaW5nIG9yIFNTRS4KKyAgICAgICAgcmV0dXJuIF9fZ2V0X2J1aWx0aW5fY29uc3RydWN0b3IobmFtZSkoZGF0YSwgKiprd2FyZ3MpCiAgICAgdHJ5OgogICAgICAgICByZXR1cm4gX2hhc2hsaWIubmV3KG5hbWUsIGRhdGEpCiAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CkBAIC0yMDIsNiArMjI5LDEyIEBACiAKICAgICAgICAgcmV0dXJuIGRrZXlbOmRrbGVuXQogCit0cnk6CisgICAgIyBPcGVuU1NMJ3Mgc2NyeXB0IHJlcXVpcmVzIE9wZW5TU0wgMS4xKworICAgIGZyb20gX2hhc2hsaWIgaW1wb3J0IHNjcnlwdAorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKKwogCiBmb3IgX19mdW5jX25hbWUgaW4gX19hbHdheXNfc3VwcG9ydGVkOgogICAgICMgdHJ5IHRoZW0gYWxsLCBzb21lIG1heSBub3Qgd29yayBkdWUgdG8gdGhlIE9wZW5TU0wKQEAgLTIxMiw2ICsyNDUsNyBAQAogICAgICAgICBpbXBvcnQgbG9nZ2luZwogICAgICAgICBsb2dnaW5nLmV4Y2VwdGlvbignY29kZSBmb3IgaGFzaCAlcyB3YXMgbm90IGZvdW5kLicsIF9fZnVuY19uYW1lKQogCisKICMgQ2xlYW51cCBsb2NhbHMoKQogZGVsIF9fYWx3YXlzX3N1cHBvcnRlZCwgX19mdW5jX25hbWUsIF9fZ2V0X2hhc2gKIGRlbCBfX3B5X25ldywgX19oYXNoX25ldywgX19nZXRfb3BlbnNzbF9jb25zdHJ1Y3RvcgpkaWZmIC0tZ2l0IGEvTGliL2htYWMucHkgYi9MaWIvaG1hYy5weQppbmRleCA3Nzc4NWEyLi4xMjEwMjlhIDEwMDY0NAotLS0gYS9MaWIvaG1hYy5weQorKysgYi9MaWIvaG1hYy5weQpAQCAtNzcsNyArNzcsNyBAQAogICAgICAgICBpZiBsZW4oa2V5KSA+IGJsb2Nrc2l6ZToKICAgICAgICAgICAgIGtleSA9IHNlbGYuZGlnZXN0X2NvbnMoa2V5KS5kaWdlc3QoKQogCi0gICAgICAgIGtleSA9IGtleSArIGJ5dGVzKGJsb2Nrc2l6ZSAtIGxlbihrZXkpKQorICAgICAgICBrZXkgPSBrZXkubGp1c3QoYmxvY2tzaXplLCBiJ1wwJykKICAgICAgICAgc2VsZi5vdXRlci51cGRhdGUoa2V5LnRyYW5zbGF0ZSh0cmFuc181QykpCiAgICAgICAgIHNlbGYuaW5uZXIudXBkYXRlKGtleS50cmFuc2xhdGUodHJhbnNfMzYpKQogICAgICAgICBpZiBtc2cgaXMgbm90IE5vbmU6CmRpZmYgLS1naXQgYS9MaWIvaHRtbC9wYXJzZXIucHkgYi9MaWIvaHRtbC9wYXJzZXIucHkKaW5kZXggYjc4MWM2My4uZWY4NjliYyAxMDA2NDQKLS0tIGEvTGliL2h0bWwvcGFyc2VyLnB5CisrKyBiL0xpYi9odG1sL3BhcnNlci5weQpAQCAtMzQsNyArMzQsNyBAQAogIyAgICAgZXhwbG9kZSwgc28gZG9uJ3QgZG8gaXQuCiAjIHNlZSBodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNS90b2tlbml6YXRpb24uaHRtbCN0YWctb3Blbi1zdGF0ZQogIyBhbmQgaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDUvdG9rZW5pemF0aW9uLmh0bWwjdGFnLW5hbWUtc3RhdGUKLXRhZ2ZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKCcoW2EtekEtWl1bXlx0XG5cclxmIC8+XHgwMF0qKSg/OlxzfC8oPyE+KSkqJykKK3RhZ2ZpbmRfdG9sZXJhbnQgPSByZS5jb21waWxlKHInKFthLXpBLVpdW15cdFxuXHJcZiAvPlx4MDBdKikoPzpcc3wvKD8hPikpKicpCiBhdHRyZmluZF90b2xlcmFudCA9IHJlLmNvbXBpbGUoCiAgICAgcicoKD88PVtcJyJccy9dKVteXHMvPl1bXlxzLz0+XSopKFxzKj0rXHMqJwogICAgIHInKFwnW15cJ10qXCd8IlteIl0qInwoPyFbXCciXSlbXj5cc10qKSk/KD86XHN8Lyg/IT4pKSonKQpAQCAtNTYsNyArNTYsNyBAQAogZW5kZW5kdGFnID0gcmUuY29tcGlsZSgnPicpCiAjIHRoZSBIVE1MIDUgc3BlYywgc2VjdGlvbiA4LjEuMi4yLCBkb2Vzbid0IGFsbG93IHNwYWNlcyBiZXR3ZWVuCiAjIDwvIGFuZCB0aGUgdGFnIG5hbWUsIHNvIG1heWJlIHRoaXMgc2hvdWxkIGJlIGZpeGVkCi1lbmR0YWdmaW5kID0gcmUuY29tcGlsZSgnPC9ccyooW2EtekEtWl1bLS5hLXpBLVowLTk6X10qKVxzKj4nKQorZW5kdGFnZmluZCA9IHJlLmNvbXBpbGUocic8L1xzKihbYS16QS1aXVstLmEtekEtWjAtOTpfXSopXHMqPicpCiAKIAogCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9jbGllbnQucHkgYi9MaWIvaHR0cC9jbGllbnQucHkKaW5kZXggMzUyYzEwMS4uYThlNTliOSAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY2xpZW50LnB5CisrKyBiL0xpYi9odHRwL2NsaWVudC5weQpAQCAtMSw0ICsxLDQgQEAKLSIiIkhUVFAvMS4xIGNsaWVudCBsaWJyYXJ5CityIiIiSFRUUC8xLjEgY2xpZW50IGxpYnJhcnkKIAogPGludHJvIHN0dWZmIGdvZXMgaGVyZT4KIDxvdGhlciBzdHVmZiwgdG9vPgpAQCAtNDIwLDYgKzQyMCw3IEBACiAgICAgICAgICAgICBzZWxmLmZwLmZsdXNoKCkKIAogICAgIGRlZiByZWFkYWJsZShzZWxmKToKKyAgICAgICAgIiIiQWx3YXlzIHJldHVybnMgVHJ1ZSIiIgogICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgIyBFbmQgb2YgInJhdyBzdHJlYW0iIG1ldGhvZHMKQEAgLTQ2Nyw2ICs0NjgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBzCiAKICAgICBkZWYgcmVhZGludG8oc2VsZiwgYik6CisgICAgICAgICIiIlJlYWQgdXAgdG8gbGVuKGIpIGJ5dGVzIGludG8gYnl0ZWFycmF5IGIgYW5kIHJldHVybiB0aGUgbnVtYmVyCisgICAgICAgIG9mIGJ5dGVzIHJlYWQuCisgICAgICAgICIiIgorCiAgICAgICAgIGlmIHNlbGYuZnAgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiAwCiAKQEAgLTcwNiw2ICs3MTEsMTcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZnAuZmlsZW5vKCkKIAogICAgIGRlZiBnZXRoZWFkZXIoc2VsZiwgbmFtZSwgZGVmYXVsdD1Ob25lKToKKyAgICAgICAgJycnUmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlIGhlYWRlciBtYXRjaGluZyAqbmFtZSouCisKKyAgICAgICAgSWYgdGhlcmUgYXJlIG11bHRpcGxlIG1hdGNoaW5nIGhlYWRlcnMsIHRoZSB2YWx1ZXMgYXJlCisgICAgICAgIGNvbWJpbmVkIGludG8gYSBzaW5nbGUgc3RyaW5nIHNlcGFyYXRlZCBieSBjb21tYXMgYW5kIHNwYWNlcy4KKworICAgICAgICBJZiBubyBtYXRjaGluZyBoZWFkZXIgaXMgZm91bmQsIHJldHVybnMgKmRlZmF1bHQqIG9yIE5vbmUgaWYKKyAgICAgICAgdGhlICpkZWZhdWx0KiBpcyBub3Qgc3BlY2lmaWVkLgorCisgICAgICAgIElmIHRoZSBoZWFkZXJzIGFyZSB1bmtub3duLCByYWlzZXMgaHR0cC5jbGllbnQuUmVzcG9uc2VOb3RSZWFkeS4KKworICAgICAgICAnJycKICAgICAgICAgaWYgc2VsZi5oZWFkZXJzIGlzIE5vbmU6CiAgICAgICAgICAgICByYWlzZSBSZXNwb25zZU5vdFJlYWR5KCkKICAgICAgICAgaGVhZGVycyA9IHNlbGYuaGVhZGVycy5nZXRfYWxsKG5hbWUpIG9yIGRlZmF1bHQKQEAgLTcyOCwxMiArNzQ0LDQ1IEBACiAgICAgIyBGb3IgY29tcGF0aWJpbGl0eSB3aXRoIG9sZC1zdHlsZSB1cmxsaWIgcmVzcG9uc2VzLgogCiAgICAgZGVmIGluZm8oc2VsZik6CisgICAgICAgICcnJ1JldHVybnMgYW4gaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIG1pbWV0b29scy5NZXNzYWdlIGNvbnRhaW5pbmcKKyAgICAgICAgbWV0YS1pbmZvcm1hdGlvbiBhc3NvY2lhdGVkIHdpdGggdGhlIFVSTC4KKworICAgICAgICBXaGVuIHRoZSBtZXRob2QgaXMgSFRUUCwgdGhlc2UgaGVhZGVycyBhcmUgdGhvc2UgcmV0dXJuZWQgYnkKKyAgICAgICAgdGhlIHNlcnZlciBhdCB0aGUgaGVhZCBvZiB0aGUgcmV0cmlldmVkIEhUTUwgcGFnZSAoaW5jbHVkaW5nCisgICAgICAgIENvbnRlbnQtTGVuZ3RoIGFuZCBDb250ZW50LVR5cGUpLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBGVFAsIGEgQ29udGVudC1MZW5ndGggaGVhZGVyIHdpbGwgYmUKKyAgICAgICAgcHJlc2VudCBpZiAoYXMgaXMgbm93IHVzdWFsKSB0aGUgc2VydmVyIHBhc3NlZCBiYWNrIGEgZmlsZQorICAgICAgICBsZW5ndGggaW4gcmVzcG9uc2UgdG8gdGhlIEZUUCByZXRyaWV2YWwgcmVxdWVzdC4gQQorICAgICAgICBDb250ZW50LVR5cGUgaGVhZGVyIHdpbGwgYmUgcHJlc2VudCBpZiB0aGUgTUlNRSB0eXBlIGNhbiBiZQorICAgICAgICBndWVzc2VkLgorCisgICAgICAgIFdoZW4gdGhlIG1ldGhvZCBpcyBsb2NhbC1maWxlLCByZXR1cm5lZCBoZWFkZXJzIHdpbGwgaW5jbHVkZQorICAgICAgICBhIERhdGUgcmVwcmVzZW50aW5nIHRoZSBmaWxlJ3MgbGFzdC1tb2RpZmllZCB0aW1lLCBhCisgICAgICAgIENvbnRlbnQtTGVuZ3RoIGdpdmluZyBmaWxlIHNpemUsIGFuZCBhIENvbnRlbnQtVHlwZQorICAgICAgICBjb250YWluaW5nIGEgZ3Vlc3MgYXQgdGhlIGZpbGUncyB0eXBlLiBTZWUgYWxzbyB0aGUKKyAgICAgICAgZGVzY3JpcHRpb24gb2YgdGhlIG1pbWV0b29scyBtb2R1bGUuCisKKyAgICAgICAgJycnCiAgICAgICAgIHJldHVybiBzZWxmLmhlYWRlcnMKIAogICAgIGRlZiBnZXR1cmwoc2VsZik6CisgICAgICAgICcnJ1JldHVybiB0aGUgcmVhbCBVUkwgb2YgdGhlIHBhZ2UuCisKKyAgICAgICAgSW4gc29tZSBjYXNlcywgdGhlIEhUVFAgc2VydmVyIHJlZGlyZWN0cyBhIGNsaWVudCB0byBhbm90aGVyCisgICAgICAgIFVSTC4gVGhlIHVybG9wZW4oKSBmdW5jdGlvbiBoYW5kbGVzIHRoaXMgdHJhbnNwYXJlbnRseSwgYnV0IGluCisgICAgICAgIHNvbWUgY2FzZXMgdGhlIGNhbGxlciBuZWVkcyB0byBrbm93IHdoaWNoIFVSTCB0aGUgY2xpZW50IHdhcworICAgICAgICByZWRpcmVjdGVkIHRvLiBUaGUgZ2V0dXJsKCkgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGdldCBhdCB0aGlzCisgICAgICAgIHJlZGlyZWN0ZWQgVVJMLgorCisgICAgICAgICcnJwogICAgICAgICByZXR1cm4gc2VsZi51cmwKIAogICAgIGRlZiBnZXRjb2RlKHNlbGYpOgorICAgICAgICAnJydSZXR1cm4gdGhlIEhUVFAgc3RhdHVzIGNvZGUgdGhhdCB3YXMgc2VudCB3aXRoIHRoZSByZXNwb25zZSwKKyAgICAgICAgb3IgTm9uZSBpZiB0aGUgVVJMIGlzIG5vdCBhbiBIVFRQIFVSTC4KKworICAgICAgICAnJycKICAgICAgICAgcmV0dXJuIHNlbGYuc3RhdHVzCiAKIGNsYXNzIEhUVFBDb25uZWN0aW9uOgpAQCAtNzQ2LDYgKzc5NSw0NCBAQAogICAgIGF1dG9fb3BlbiA9IDEKICAgICBkZWJ1Z2xldmVsID0gMAogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfaXNfdGV4dElPKHN0cmVhbSk6CisgICAgICAgICIiIlRlc3Qgd2hldGhlciBhIGZpbGUtbGlrZSBvYmplY3QgaXMgYSB0ZXh0IG9yIGEgYmluYXJ5IHN0cmVhbS4KKyAgICAgICAgIiIiCisgICAgICAgIHJldHVybiBpc2luc3RhbmNlKHN0cmVhbSwgaW8uVGV4dElPQmFzZSkKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpOgorICAgICAgICAiIiJHZXQgdGhlIGNvbnRlbnQtbGVuZ3RoIGJhc2VkIG9uIHRoZSBib2R5LgorCisgICAgICAgIElmIHRoZSBib2R5IGlzIE5vbmUsIHdlIHNldCBDb250ZW50LUxlbmd0aDogMCBmb3IgbWV0aG9kcyB0aGF0IGV4cGVjdAorICAgICAgICBhIGJvZHkgKFJGQyA3MjMwLCBTZWN0aW9uIDMuMy4yKS4gV2UgYWxzbyBzZXQgdGhlIENvbnRlbnQtTGVuZ3RoIGZvcgorICAgICAgICBhbnkgbWV0aG9kIGlmIHRoZSBib2R5IGlzIGEgc3RyIG9yIGJ5dGVzLWxpa2Ugb2JqZWN0IGFuZCBub3QgYSBmaWxlLgorICAgICAgICAiIiIKKyAgICAgICAgaWYgYm9keSBpcyBOb25lOgorICAgICAgICAgICAgIyBkbyBhbiBleHBsaWNpdCBjaGVjayBmb3Igbm90IE5vbmUgaGVyZSB0byBkaXN0aW5ndWlzaAorICAgICAgICAgICAgIyBiZXR3ZWVuIHVuc2V0IGFuZCBzZXQgYnV0IGVtcHR5CisgICAgICAgICAgICBpZiBtZXRob2QudXBwZXIoKSBpbiBfTUVUSE9EU19FWFBFQ1RJTkdfQk9EWToKKyAgICAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorCisgICAgICAgIGlmIGhhc2F0dHIoYm9keSwgJ3JlYWQnKToKKyAgICAgICAgICAgICMgZmlsZS1saWtlIG9iamVjdC4KKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgIyBkb2VzIGl0IGltcGxlbWVudCB0aGUgYnVmZmVyIHByb3RvY29sIChieXRlcywgYnl0ZWFycmF5LCBhcnJheSk/CisgICAgICAgICAgICBtdiA9IG1lbW9yeXZpZXcoYm9keSkKKyAgICAgICAgICAgIHJldHVybiBtdi5uYnl0ZXMKKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBpZiBpc2luc3RhbmNlKGJvZHksIHN0cik6CisgICAgICAgICAgICByZXR1cm4gbGVuKGJvZHkpCisKKyAgICAgICAgcmV0dXJuIE5vbmUKKwogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBob3N0LCBwb3J0PU5vbmUsIHRpbWVvdXQ9c29ja2V0Ll9HTE9CQUxfREVGQVVMVF9USU1FT1VULAogICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcz1Ob25lKToKICAgICAgICAgc2VsZi50aW1lb3V0ID0gdGltZW91dApAQCAtODg0LDE4ICs5NzEsOSBAQAogICAgICAgICBpZiBoYXNhdHRyKGRhdGEsICJyZWFkIikgOgogICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKICAgICAgICAgICAgICAgICBwcmludCgic2VuZEluZyBhIHJlYWQoKWFibGUiKQotICAgICAgICAgICAgZW5jb2RlID0gRmFsc2UKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBtb2RlID0gZGF0YS5tb2RlCi0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBpby5CeXRlc0lPIGFuZCBvdGhlciBmaWxlLWxpa2Ugb2JqZWN0cyBkb24ndCBoYXZlIGEgYG1vZGVgCi0gICAgICAgICAgICAgICAgIyBhdHRyaWJ1dGUuCi0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBpZiAiYiIgbm90IGluIG1vZGU6Ci0gICAgICAgICAgICAgICAgICAgIGVuY29kZSA9IFRydWUKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJlbmNvZGluZyBmaWxlIHVzaW5nIGlzby04ODU5LTEiKQorICAgICAgICAgICAgZW5jb2RlID0gc2VsZi5faXNfdGV4dElPKGRhdGEpCisgICAgICAgICAgICBpZiBlbmNvZGUgYW5kIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCiAgICAgICAgICAgICB3aGlsZSAxOgogICAgICAgICAgICAgICAgIGRhdGFibG9jayA9IGRhdGEucmVhZChibG9ja3NpemUpCiAgICAgICAgICAgICAgICAgaWYgbm90IGRhdGFibG9jazoKQEAgLTkyMSw3ICs5OTksMjIgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHNlbGYuX2J1ZmZlci5hcHBlbmQocykKIAotICAgIGRlZiBfc2VuZF9vdXRwdXQoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUpOgorICAgIGRlZiBfcmVhZF9yZWFkYWJsZShzZWxmLCByZWFkYWJsZSk6CisgICAgICAgIGJsb2Nrc2l6ZSA9IDgxOTIKKyAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDoKKyAgICAgICAgICAgIHByaW50KCJzZW5kSW5nIGEgcmVhZCgpYWJsZSIpCisgICAgICAgIGVuY29kZSA9IHNlbGYuX2lzX3RleHRJTyhyZWFkYWJsZSkKKyAgICAgICAgaWYgZW5jb2RlIGFuZCBzZWxmLmRlYnVnbGV2ZWwgPiAwOgorICAgICAgICAgICAgcHJpbnQoImVuY29kaW5nIGZpbGUgdXNpbmcgaXNvLTg4NTktMSIpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkYXRhYmxvY2sgPSByZWFkYWJsZS5yZWFkKGJsb2Nrc2l6ZSkKKyAgICAgICAgICAgIGlmIG5vdCBkYXRhYmxvY2s6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgIGlmIGVuY29kZToKKyAgICAgICAgICAgICAgICBkYXRhYmxvY2sgPSBkYXRhYmxvY2suZW5jb2RlKCJpc28tODg1OS0xIikKKyAgICAgICAgICAgIHlpZWxkIGRhdGFibG9jaworCisgICAgZGVmIF9zZW5kX291dHB1dChzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSwgZW5jb2RlX2NodW5rZWQ9RmFsc2UpOgogICAgICAgICAiIiJTZW5kIHRoZSBjdXJyZW50bHkgYnVmZmVyZWQgcmVxdWVzdCBhbmQgY2xlYXIgdGhlIGJ1ZmZlci4KIAogICAgICAgICBBcHBlbmRzIGFuIGV4dHJhIFxcclxcbiB0byB0aGUgYnVmZmVyLgpAQCAtOTMwLDEwICsxMDIzLDUwIEBACiAgICAgICAgIHNlbGYuX2J1ZmZlci5leHRlbmQoKGIiIiwgYiIiKSkKICAgICAgICAgbXNnID0gYiJcclxuIi5qb2luKHNlbGYuX2J1ZmZlcikKICAgICAgICAgZGVsIHNlbGYuX2J1ZmZlcls6XQotCiAgICAgICAgIHNlbGYuc2VuZChtc2cpCisKICAgICAgICAgaWYgbWVzc2FnZV9ib2R5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZW5kKG1lc3NhZ2VfYm9keSkKKworICAgICAgICAgICAgIyBjcmVhdGUgYSBjb25zaXN0ZW50IGludGVyZmFjZSB0byBtZXNzYWdlX2JvZHkKKyAgICAgICAgICAgIGlmIGhhc2F0dHIobWVzc2FnZV9ib2R5LCAncmVhZCcpOgorICAgICAgICAgICAgICAgICMgTGV0IGZpbGUtbGlrZSB0YWtlIHByZWNlZGVuY2Ugb3ZlciBieXRlLWxpa2UuICBUaGlzCisgICAgICAgICAgICAgICAgIyBpcyBuZWVkZWQgdG8gYWxsb3cgdGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgbW1hcCdlZAorICAgICAgICAgICAgICAgICMgZmlsZXMgdG8gYmUgdGFrZW4gaW50byBhY2NvdW50LgorICAgICAgICAgICAgICAgIGNodW5rcyA9IHNlbGYuX3JlYWRfcmVhZGFibGUobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICMgdGhpcyBpcyBzb2xlbHkgdG8gY2hlY2sgdG8gc2VlIGlmIG1lc3NhZ2VfYm9keQorICAgICAgICAgICAgICAgICAgICAjIGltcGxlbWVudHMgdGhlIGJ1ZmZlciBBUEkuICBpdCAvd291bGQvIGJlIGVhc2llcgorICAgICAgICAgICAgICAgICAgICAjIHRvIGNhcHR1cmUgaWYgUHlPYmplY3RfQ2hlY2tCdWZmZXIgd2FzIGV4cG9zZWQKKyAgICAgICAgICAgICAgICAgICAgIyB0byBQeXRob24uCisgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rcyA9IGl0ZXIobWVzc2FnZV9ib2R5KQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJtZXNzYWdlX2JvZHkgc2hvdWxkIGJlIGEgYnl0ZXMtbGlrZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCBvciBhbiBpdGVyYWJsZSwgZ290ICVyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgdHlwZShtZXNzYWdlX2JvZHkpKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICMgdGhlIG9iamVjdCBpbXBsZW1lbnRzIHRoZSBidWZmZXIgaW50ZXJmYWNlIGFuZAorICAgICAgICAgICAgICAgICAgICAjIGNhbiBiZSBwYXNzZWQgZGlyZWN0bHkgaW50byBzb2NrZXQgbWV0aG9kcworICAgICAgICAgICAgICAgICAgICBjaHVua3MgPSAobWVzc2FnZV9ib2R5LCkKKworICAgICAgICAgICAgZm9yIGNodW5rIGluIGNodW5rczoKKyAgICAgICAgICAgICAgICBpZiBub3QgY2h1bms6CisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnWmVybyBsZW5ndGggY2h1bmsgaWdub3JlZCcpCisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBpZiBlbmNvZGVfY2h1bmtlZCBhbmQgc2VsZi5faHR0cF92c24gPT0gMTE6CisgICAgICAgICAgICAgICAgICAgICMgY2h1bmtlZCBlbmNvZGluZworICAgICAgICAgICAgICAgICAgICBjaHVuayA9IGYne2xlbihjaHVuayk6WH1cclxuJy5lbmNvZGUoJ2FzY2lpJykgKyBjaHVuayBcCisgICAgICAgICAgICAgICAgICAgICAgICArIGInXHJcbicKKyAgICAgICAgICAgICAgICBzZWxmLnNlbmQoY2h1bmspCisKKyAgICAgICAgICAgIGlmIGVuY29kZV9jaHVua2VkIGFuZCBzZWxmLl9odHRwX3ZzbiA9PSAxMToKKyAgICAgICAgICAgICAgICAjIGVuZCBjaHVua2VkIHRyYW5zZmVyCisgICAgICAgICAgICAgICAgc2VsZi5zZW5kKGInMFxyXG5cclxuJykKIAogICAgIGRlZiBwdXRyZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBza2lwX2hvc3Q9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgc2tpcF9hY2NlcHRfZW5jb2Rpbmc9RmFsc2UpOgpAQCAtMTA4Nyw1MiArMTIyMCwyNyBAQAogICAgICAgICBoZWFkZXIgPSBoZWFkZXIgKyBiJzogJyArIHZhbHVlCiAgICAgICAgIHNlbGYuX291dHB1dChoZWFkZXIpCiAKLSAgICBkZWYgZW5kaGVhZGVycyhzZWxmLCBtZXNzYWdlX2JvZHk9Tm9uZSk6CisgICAgZGVmIGVuZGhlYWRlcnMoc2VsZiwgbWVzc2FnZV9ib2R5PU5vbmUsICosIGVuY29kZV9jaHVua2VkPUZhbHNlKToKICAgICAgICAgIiIiSW5kaWNhdGUgdGhhdCB0aGUgbGFzdCBoZWFkZXIgbGluZSBoYXMgYmVlbiBzZW50IHRvIHRoZSBzZXJ2ZXIuCiAKICAgICAgICAgVGhpcyBtZXRob2Qgc2VuZHMgdGhlIHJlcXVlc3QgdG8gdGhlIHNlcnZlci4gIFRoZSBvcHRpb25hbCBtZXNzYWdlX2JvZHkKICAgICAgICAgYXJndW1lbnQgY2FuIGJlIHVzZWQgdG8gcGFzcyBhIG1lc3NhZ2UgYm9keSBhc3NvY2lhdGVkIHdpdGggdGhlCi0gICAgICAgIHJlcXVlc3QuICBUaGUgbWVzc2FnZSBib2R5IHdpbGwgYmUgc2VudCBpbiB0aGUgc2FtZSBwYWNrZXQgYXMgdGhlCi0gICAgICAgIG1lc3NhZ2UgaGVhZGVycyBpZiBpdCBpcyBhIHN0cmluZywgb3RoZXJ3aXNlIGl0IGlzIHNlbnQgYXMgYSBzZXBhcmF0ZQotICAgICAgICBwYWNrZXQuCisgICAgICAgIHJlcXVlc3QuCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLl9fc3RhdGUgPT0gX0NTX1JFUV9TVEFSVEVEOgogICAgICAgICAgICAgc2VsZi5fX3N0YXRlID0gX0NTX1JFUV9TRU5UCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBDYW5ub3RTZW5kSGVhZGVyKCkKLSAgICAgICAgc2VsZi5fc2VuZF9vdXRwdXQobWVzc2FnZV9ib2R5KQorICAgICAgICBzZWxmLl9zZW5kX291dHB1dChtZXNzYWdlX2JvZHksIGVuY29kZV9jaHVua2VkPWVuY29kZV9jaHVua2VkKQogCi0gICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSk6CisgICAgZGVmIHJlcXVlc3Qoc2VsZiwgbWV0aG9kLCB1cmwsIGJvZHk9Tm9uZSwgaGVhZGVycz17fSwgKiwKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgICIiIlNlbmQgYSBjb21wbGV0ZSByZXF1ZXN0IHRvIHRoZSBzZXJ2ZXIuIiIiCi0gICAgICAgIHNlbGYuX3NlbmRfcmVxdWVzdChtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycykKKyAgICAgICAgc2VsZi5fc2VuZF9yZXF1ZXN0KG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzLCBlbmNvZGVfY2h1bmtlZCkKIAotICAgIGRlZiBfc2V0X2NvbnRlbnRfbGVuZ3RoKHNlbGYsIGJvZHksIG1ldGhvZCk6Ci0gICAgICAgICMgU2V0IHRoZSBjb250ZW50LWxlbmd0aCBiYXNlZCBvbiB0aGUgYm9keS4gSWYgdGhlIGJvZHkgaXMgImVtcHR5Iiwgd2UKLSAgICAgICAgIyBzZXQgQ29udGVudC1MZW5ndGg6IDAgZm9yIG1ldGhvZHMgdGhhdCBleHBlY3QgYSBib2R5IChSRkMgNzIzMCwKLSAgICAgICAgIyBTZWN0aW9uIDMuMy4yKS4gSWYgdGhlIGJvZHkgaXMgc2V0IGZvciBvdGhlciBtZXRob2RzLCB3ZSBzZXQgdGhlCi0gICAgICAgICMgaGVhZGVyIHByb3ZpZGVkIHdlIGNhbiBmaWd1cmUgb3V0IHdoYXQgdGhlIGxlbmd0aCBpcy4KLSAgICAgICAgdGhlbGVuID0gTm9uZQotICAgICAgICBtZXRob2RfZXhwZWN0c19ib2R5ID0gbWV0aG9kLnVwcGVyKCkgaW4gX01FVEhPRFNfRVhQRUNUSU5HX0JPRFkKLSAgICAgICAgaWYgYm9keSBpcyBOb25lIGFuZCBtZXRob2RfZXhwZWN0c19ib2R5OgotICAgICAgICAgICAgdGhlbGVuID0gJzAnCi0gICAgICAgIGVsaWYgYm9keSBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB0aGVsZW4gPSBzdHIobGVuKGJvZHkpKQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKLSAgICAgICAgICAgICAgICAjIElmIHRoaXMgaXMgYSBmaWxlLWxpa2Ugb2JqZWN0LCB0cnkgdG8KLSAgICAgICAgICAgICAgICAjIGZzdGF0IGl0cyBmaWxlIGRlc2NyaXB0b3IKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHRoZWxlbiA9IHN0cihvcy5mc3RhdChib2R5LmZpbGVubygpKS5zdF9zaXplKQotICAgICAgICAgICAgICAgIGV4Y2VwdCAoQXR0cmlidXRlRXJyb3IsIE9TRXJyb3IpOgotICAgICAgICAgICAgICAgICAgICAjIERvbid0IHNlbmQgYSBsZW5ndGggaWYgdGhpcyBmYWlsZWQKLSAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1Z2xldmVsID4gMDogcHJpbnQoIkNhbm5vdCBzdGF0ISEiKQotCi0gICAgICAgIGlmIHRoZWxlbiBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIHNlbGYucHV0aGVhZGVyKCdDb250ZW50LUxlbmd0aCcsIHRoZWxlbikKLQotICAgIGRlZiBfc2VuZF9yZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5LCBoZWFkZXJzKToKKyAgICBkZWYgX3NlbmRfcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keSwgaGVhZGVycywgZW5jb2RlX2NodW5rZWQpOgogICAgICAgICAjIEhvbm9yIGV4cGxpY2l0bHkgcmVxdWVzdGVkIEhvc3Q6IGFuZCBBY2NlcHQtRW5jb2Rpbmc6IGhlYWRlcnMuCi0gICAgICAgIGhlYWRlcl9uYW1lcyA9IGRpY3QuZnJvbWtleXMoW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKyAgICAgICAgaGVhZGVyX25hbWVzID0gZnJvemVuc2V0KGsubG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzKQogICAgICAgICBza2lwcyA9IHt9CiAgICAgICAgIGlmICdob3N0JyBpbiBoZWFkZXJfbmFtZXM6CiAgICAgICAgICAgICBza2lwc1snc2tpcF9ob3N0J10gPSAxCkBAIC0xMTQxLDE1ICsxMjQ5LDQwIEBACiAKICAgICAgICAgc2VsZi5wdXRyZXF1ZXN0KG1ldGhvZCwgdXJsLCAqKnNraXBzKQogCisgICAgICAgICMgY2h1bmtlZCBlbmNvZGluZyB3aWxsIGhhcHBlbiBpZiBIVFRQLzEuMSBpcyB1c2VkIGFuZCBlaXRoZXIKKyAgICAgICAgIyB0aGUgY2FsbGVyIHBhc3NlcyBlbmNvZGVfY2h1bmtlZD1UcnVlIG9yIHRoZSBmb2xsb3dpbmcKKyAgICAgICAgIyBjb25kaXRpb25zIGhvbGQ6CisgICAgICAgICMgMS4gY29udGVudC1sZW5ndGggaGFzIG5vdCBiZWVuIGV4cGxpY2l0bHkgc2V0CisgICAgICAgICMgMi4gdGhlIGJvZHkgaXMgYSBmaWxlIG9yIGl0ZXJhYmxlLCBidXQgbm90IGEgc3RyIG9yIGJ5dGVzLWxpa2UKKyAgICAgICAgIyAzLiBUcmFuc2Zlci1FbmNvZGluZyBoYXMgTk9UIGJlZW4gZXhwbGljaXRseSBzZXQgYnkgdGhlIGNhbGxlcgorCiAgICAgICAgIGlmICdjb250ZW50LWxlbmd0aCcgbm90IGluIGhlYWRlcl9uYW1lczoKLSAgICAgICAgICAgIHNlbGYuX3NldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpCisgICAgICAgICAgICAjIG9ubHkgY2h1bmsgYm9keSBpZiBub3QgZXhwbGljaXRseSBzZXQgZm9yIGJhY2t3YXJkcworICAgICAgICAgICAgIyBjb21wYXRpYmlsaXR5LCBhc3N1bWluZyB0aGUgY2xpZW50IGNvZGUgaXMgYWxyZWFkeSBoYW5kbGluZyB0aGUKKyAgICAgICAgICAgICMgY2h1bmtpbmcKKyAgICAgICAgICAgIGlmICd0cmFuc2Zlci1lbmNvZGluZycgbm90IGluIGhlYWRlcl9uYW1lczoKKyAgICAgICAgICAgICAgICAjIGlmIGNvbnRlbnQtbGVuZ3RoIGNhbm5vdCBiZSBhdXRvbWF0aWNhbGx5IGRldGVybWluZWQsIGZhbGwKKyAgICAgICAgICAgICAgICAjIGJhY2sgdG8gY2h1bmtlZCBlbmNvZGluZworICAgICAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gRmFsc2UKKyAgICAgICAgICAgICAgICBjb250ZW50X2xlbmd0aCA9IHNlbGYuX2dldF9jb250ZW50X2xlbmd0aChib2R5LCBtZXRob2QpCisgICAgICAgICAgICAgICAgaWYgY29udGVudF9sZW5ndGggaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgaWYgYm9keSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWdsZXZlbCA+IDA6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VuYWJsZSB0byBkZXRlcm1pbmUgc2l6ZSBvZiAlcicgJSBib2R5KQorICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RlX2NodW5rZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcignVHJhbnNmZXItRW5jb2RpbmcnLCAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5wdXRoZWFkZXIoJ0NvbnRlbnQtTGVuZ3RoJywgc3RyKGNvbnRlbnRfbGVuZ3RoKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGVuY29kZV9jaHVua2VkID0gRmFsc2UKKwogICAgICAgICBmb3IgaGRyLCB2YWx1ZSBpbiBoZWFkZXJzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLnB1dGhlYWRlcihoZHIsIHZhbHVlKQogICAgICAgICBpZiBpc2luc3RhbmNlKGJvZHksIHN0cik6CiAgICAgICAgICAgICAjIFJGQyAyNjE2IFNlY3Rpb24gMy43LjEgc2F5cyB0aGF0IHRleHQgZGVmYXVsdCBoYXMgYQogICAgICAgICAgICAgIyBkZWZhdWx0IGNoYXJzZXQgb2YgaXNvLTg4NTktMS4KICAgICAgICAgICAgIGJvZHkgPSBfZW5jb2RlKGJvZHksICdib2R5JykKLSAgICAgICAgc2VsZi5lbmRoZWFkZXJzKGJvZHkpCisgICAgICAgIHNlbGYuZW5kaGVhZGVycyhib2R5LCBlbmNvZGVfY2h1bmtlZD1lbmNvZGVfY2h1bmtlZCkKIAogICAgIGRlZiBnZXRyZXNwb25zZShzZWxmKToKICAgICAgICAgIiIiR2V0IHRoZSByZXNwb25zZSBmcm9tIHRoZSBzZXJ2ZXIuCkBAIC0xMjMyLDYgKzEzNjUsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lPU5vbmUpOgogICAgICAgICAgICAgc3VwZXIoSFRUUFNDb25uZWN0aW9uLCBzZWxmKS5fX2luaXRfXyhob3N0LCBwb3J0LCB0aW1lb3V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfYWRkcmVzcykKKyAgICAgICAgICAgIGlmIChrZXlfZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0X2ZpbGUgaXMgbm90IE5vbmUgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgIGNoZWNrX2hvc3RuYW1lIGlzIG5vdCBOb25lKToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlfZmlsZSwgY2VydF9maWxlIGFuZCBjaGVja19ob3N0bmFtZSBhcmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcHJlY2F0ZWQsIHVzZSBhIGN1c3RvbSBjb250ZXh0IGluc3RlYWQuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5X2ZpbGUgPSBrZXlfZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0X2ZpbGUgPSBjZXJ0X2ZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9odHRwL2Nvb2tpZWphci5weSBiL0xpYi9odHRwL2Nvb2tpZWphci5weQppbmRleCA2ZDQ1NzJhLi5hZGY5NTZkIDEwMDY0NAotLS0gYS9MaWIvaHR0cC9jb29raWVqYXIucHkKKysrIGIvTGliL2h0dHAvY29va2llamFyLnB5CkBAIC0yMDAsNyArMjAwLDcgQEAKIAogU1RSSUNUX0RBVEVfUkUgPSByZS5jb21waWxlKAogICAgIHIiXltTTVRXRl1bYS16XVthLXpdLCAoXGRcZCkgKFtKRk1BU09ORF1bYS16XVthLXpdKSAiCi0gICAgIihcZFxkXGRcZCkgKFxkXGQpOihcZFxkKTooXGRcZCkgR01UJCIsIHJlLkFTQ0lJKQorICAgIHIiKFxkXGRcZFxkKSAoXGRcZCk6KFxkXGQpOihcZFxkKSBHTVQkIiwgcmUuQVNDSUkpCiBXRUVLREFZX1JFID0gcmUuY29tcGlsZSgKICAgICByIl4oPzpTdW58TW9ufFR1ZXxXZWR8VGh1fEZyaXxTYXQpW2Etel0qLD9ccyoiLCByZS5JIHwgcmUuQVNDSUkpCiBMT09TRV9IVFRQX0RBVEVfUkUgPSByZS5jb21waWxlKApAQCAtMjc3LDcgKzI3Nyw3IEBACiAgICAgcmV0dXJuIF9zdHIydGltZShkYXksIG1vbiwgeXIsIGhyLCBtaW4sIHNlYywgdHopCiAKIElTT19EQVRFX1JFID0gcmUuY29tcGlsZSgKLSAgICAiIiJeCisgICAgciIiIl4KICAgICAoXGR7NH0pICAgICAgICAgICAgICAjIHllYXIKICAgICAgICBbLVwvXT8KICAgICAoXGRcZD8pICAgICAgICAgICAgICAjIG51bWVyaWNhbCBtb250aApAQCAtNDExLDcgKzQxMSw3IEBACiAgICAgICAgICAgICAgICAgcGFpcnMgPSBbXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIHNraXAganVuawotICAgICAgICAgICAgICAgIG5vbl9qdW5rLCBucl9qdW5rX2NoYXJzID0gcmUuc3VibigiXls9XHM7XSoiLCAiIiwgdGV4dCkKKyAgICAgICAgICAgICAgICBub25fanVuaywgbnJfanVua19jaGFycyA9IHJlLnN1Ym4ociJeWz1ccztdKiIsICIiLCB0ZXh0KQogICAgICAgICAgICAgICAgIGFzc2VydCBucl9qdW5rX2NoYXJzID4gMCwgKAogICAgICAgICAgICAgICAgICAgICAic3BsaXRfaGVhZGVyX3dvcmRzIGJ1ZzogJyVzJywgJyVzJywgJXMiICUKICAgICAgICAgICAgICAgICAgICAgKG9yaWdfdGV4dCwgdGV4dCwgcGFpcnMpKQpkaWZmIC0tZ2l0IGEvTGliL2h0dHAvY29va2llcy5weSBiL0xpYi9odHRwL2Nvb2tpZXMucHkKaW5kZXggYTczZmUzOC4uYmUzYjA4MCAxMDA2NDQKLS0tIGEvTGliL2h0dHAvY29va2llcy5weQorKysgYi9MaWIvaHR0cC9jb29raWVzLnB5CkBAIC00NTYsOSArNDU2LDggQEAKICMKIAogX0xlZ2FsS2V5Q2hhcnMgID0gciJcd1xkISMlJid+X2A+PEAsOi9cJFwqXCtcLVwuXF5cfFwpXChcP1x9XHtcPSIKLV9MZWdhbFZhbHVlQ2hhcnMgPSBfTGVnYWxLZXlDaGFycyArICdcW1xdJworX0xlZ2FsVmFsdWVDaGFycyA9IF9MZWdhbEtleUNoYXJzICsgcidcW1xdJwogX0Nvb2tpZVBhdHRlcm4gPSByZS5jb21waWxlKHIiIiIKLSAgICAoP3gpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUaGlzIGlzIGEgdmVyYm9zZSBwYXR0ZXJuCiAgICAgXHMqICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3B0aW9uYWwgd2hpdGVzcGFjZSBhdCBzdGFydCBvZiBjb29raWUKICAgICAoP1A8a2V5PiAgICAgICAgICAgICAgICAgICAgICAgIyBTdGFydCBvZiBncm91cCAna2V5JwogICAgIFsiIiIgKyBfTGVnYWxLZXlDaGFycyArIHIiIiJdKz8gICAjIEFueSB3b3JkIG9mIGF0IGxlYXN0IG9uZSBsZXR0ZXIKQEAgLTQ3NSw3ICs0NzQsNyBAQAogICAgICk/ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEVuZCBvZiBvcHRpb25hbCB2YWx1ZSBncm91cAogICAgIFxzKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIEFueSBudW1iZXIgb2Ygc3BhY2VzLgogICAgIChccyt8O3wkKSAgICAgICAgICAgICAgICAgICAgICAjIEVuZGluZyBlaXRoZXIgYXQgc3BhY2UsIHNlbWljb2xvbiwgb3IgRU9TLgotICAgICIiIiwgcmUuQVNDSUkpICAgICAgICAgICAgICAgICAjIE1heSBiZSByZW1vdmVkIGlmIHNhZmUuCisgICAgIiIiLCByZS5BU0NJSSB8IHJlLlZFUkJPU0UpICAgICMgcmUuQVNDSUkgbWF5IGJlIHJlbW92ZWQgaWYgc2FmZS4KIAogCiAjIEF0IGxvbmcgbGFzdCwgaGVyZSBpcyB0aGUgY29va2llIGNsYXNzLiAgVXNpbmcgdGhpcyBjbGFzcyBpcyBhbG1vc3QganVzdCBsaWtlCmRpZmYgLS1naXQgYS9MaWIvaHR0cC9zZXJ2ZXIucHkgYi9MaWIvaHR0cC9zZXJ2ZXIucHkKaW5kZXggMDA2MjBkMS4uZTEyZTQ1YiAxMDA2NDQKLS0tIGEvTGliL2h0dHAvc2VydmVyLnB5CisrKyBiL0xpYi9odHRwL3NlcnZlci5weQpAQCAtODcsNiArODcsNyBAQAogICAgICJTaW1wbGVIVFRQUmVxdWVzdEhhbmRsZXIiLCAiQ0dJSFRUUFJlcXVlc3RIYW5kbGVyIiwKIF0KIAoraW1wb3J0IGVtYWlsLnV0aWxzCiBpbXBvcnQgaHRtbAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgaW8KQEAgLTEyNiw5ICsxMjcsNiBAQAogCiBERUZBVUxUX0VSUk9SX0NPTlRFTlRfVFlQRSA9ICJ0ZXh0L2h0bWw7Y2hhcnNldD11dGYtOCIKIAotZGVmIF9xdW90ZV9odG1sKGh0bWwpOgotICAgIHJldHVybiBodG1sLnJlcGxhY2UoIiYiLCAiJmFtcDsiKS5yZXBsYWNlKCI8IiwgIiZsdDsiKS5yZXBsYWNlKCI+IiwgIiZndDsiKQotCiBjbGFzcyBIVFRQU2VydmVyKHNvY2tldHNlcnZlci5UQ1BTZXJ2ZXIpOgogCiAgICAgYWxsb3dfcmV1c2VfYWRkcmVzcyA9IDEgICAgIyBTZWVtcyB0byBtYWtlIHNlbnNlIGluIHRlc3RpbmcgZW52aXJvbm1lbnQKQEAgLTEzNiw3ICsxMzQsNyBAQAogICAgIGRlZiBzZXJ2ZXJfYmluZChzZWxmKToKICAgICAgICAgIiIiT3ZlcnJpZGUgc2VydmVyX2JpbmQgdG8gc3RvcmUgdGhlIHNlcnZlciBuYW1lLiIiIgogICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyLnNlcnZlcl9iaW5kKHNlbGYpCi0gICAgICAgIGhvc3QsIHBvcnQgPSBzZWxmLnNvY2tldC5nZXRzb2NrbmFtZSgpWzoyXQorICAgICAgICBob3N0LCBwb3J0ID0gc2VsZi5zZXJ2ZXJfYWRkcmVzc1s6Ml0KICAgICAgICAgc2VsZi5zZXJ2ZXJfbmFtZSA9IHNvY2tldC5nZXRmcWRuKGhvc3QpCiAgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBwb3J0CiAKQEAgLTI4MiwxMiArMjgwLDkgQEAKICAgICAgICAgd29yZHMgPSByZXF1ZXN0bGluZS5zcGxpdCgpCiAgICAgICAgIGlmIGxlbih3b3JkcykgPT0gMzoKICAgICAgICAgICAgIGNvbW1hbmQsIHBhdGgsIHZlcnNpb24gPSB3b3JkcwotICAgICAgICAgICAgaWYgdmVyc2lvbls6NV0gIT0gJ0hUVFAvJzoKLSAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCi0gICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCi0gICAgICAgICAgICAgICAgICAgICJCYWQgcmVxdWVzdCB2ZXJzaW9uICglcikiICUgdmVyc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpZiB2ZXJzaW9uWzo1XSAhPSAnSFRUUC8nOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yCiAgICAgICAgICAgICAgICAgYmFzZV92ZXJzaW9uX251bWJlciA9IHZlcnNpb24uc3BsaXQoJy8nLCAxKVsxXQogICAgICAgICAgICAgICAgIHZlcnNpb25fbnVtYmVyID0gYmFzZV92ZXJzaW9uX251bWJlci5zcGxpdCgiLiIpCiAgICAgICAgICAgICAgICAgIyBSRkMgMjE0NSBzZWN0aW9uIDMuMSBzYXlzIHRoZXJlIGNhbiBiZSBvbmx5IG9uZSAiLiIgYW5kCkBAIC0zMDksNyArMzA0LDcgQEAKICAgICAgICAgICAgIGlmIHZlcnNpb25fbnVtYmVyID49ICgyLCAwKToKICAgICAgICAgICAgICAgICBzZWxmLnNlbmRfZXJyb3IoCiAgICAgICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuSFRUUF9WRVJTSU9OX05PVF9TVVBQT1JURUQsCi0gICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgVmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCisgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgdmVyc2lvbiAoJXMpIiAlIGJhc2VfdmVyc2lvbl9udW1iZXIpCiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGVsaWYgbGVuKHdvcmRzKSA9PSAyOgogICAgICAgICAgICAgY29tbWFuZCwgcGF0aCA9IHdvcmRzCkBAIC0zMzIsMTAgKzMyNywxMSBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmhlYWRlcnMgPSBodHRwLmNsaWVudC5wYXJzZV9oZWFkZXJzKHNlbGYucmZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGFzcz1zZWxmLk1lc3NhZ2VDbGFzcykKLSAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkxpbmVUb29Mb25nOgorICAgICAgICBleGNlcHQgaHR0cC5jbGllbnQuTGluZVRvb0xvbmcgYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKAotICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuQkFEX1JFUVVFU1QsCi0gICAgICAgICAgICAgICAgIkxpbmUgdG9vIGxvbmciKQorICAgICAgICAgICAgICAgIEhUVFBTdGF0dXMuUkVRVUVTVF9IRUFERVJfRklFTERTX1RPT19MQVJHRSwKKyAgICAgICAgICAgICAgICAiTGluZSB0b28gbG9uZyIsCisgICAgICAgICAgICAgICAgc3RyKGVycikpCiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgZXhjZXB0IGh0dHAuY2xpZW50LkhUVFBFeGNlcHRpb24gYXMgZXJyOgogICAgICAgICAgICAgc2VsZi5zZW5kX2Vycm9yKApAQCAtNDY1LDggKzQ2MSw4IEBACiAgICAgICAgICAgICAjIChzZWUgYnVnICMxMTAwMjAxKQogICAgICAgICAgICAgY29udGVudCA9IChzZWxmLmVycm9yX21lc3NhZ2VfZm9ybWF0ICUgewogICAgICAgICAgICAgICAgICdjb2RlJzogY29kZSwKLSAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IF9xdW90ZV9odG1sKG1lc3NhZ2UpLAotICAgICAgICAgICAgICAgICdleHBsYWluJzogX3F1b3RlX2h0bWwoZXhwbGFpbikKKyAgICAgICAgICAgICAgICAnbWVzc2FnZSc6IGh0bWwuZXNjYXBlKG1lc3NhZ2UsIHF1b3RlPUZhbHNlKSwKKyAgICAgICAgICAgICAgICAnZXhwbGFpbic6IGh0bWwuZXNjYXBlKGV4cGxhaW4sIHF1b3RlPUZhbHNlKQogICAgICAgICAgICAgfSkKICAgICAgICAgICAgIGJvZHkgPSBjb250ZW50LmVuY29kZSgnVVRGLTgnLCAncmVwbGFjZScpCiAgICAgICAgICAgICBzZWxmLnNlbmRfaGVhZGVyKCJDb250ZW50LVR5cGUiLCBzZWxmLmVycm9yX2NvbnRlbnRfdHlwZSkKQEAgLTQ5MSwxMiArNDg3LDEyIEBACiAKICAgICBkZWYgc2VuZF9yZXNwb25zZV9vbmx5KHNlbGYsIGNvZGUsIG1lc3NhZ2U9Tm9uZSk6CiAgICAgICAgICIiIlNlbmQgdGhlIHJlc3BvbnNlIGhlYWRlciBvbmx5LiIiIgotICAgICAgICBpZiBtZXNzYWdlIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBjb2RlIGluIHNlbGYucmVzcG9uc2VzOgotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSBzZWxmLnJlc3BvbnNlc1tjb2RlXVswXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgaWYgc2VsZi5yZXF1ZXN0X3ZlcnNpb24gIT0gJ0hUVFAvMC45JzoKKyAgICAgICAgICAgIGlmIG1lc3NhZ2UgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBjb2RlIGluIHNlbGYucmVzcG9uc2VzOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gc2VsZi5yZXNwb25zZXNbY29kZV1bMF0KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBtZXNzYWdlID0gJycKICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHNlbGYsICdfaGVhZGVyc19idWZmZXInKToKICAgICAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlciA9IFtdCiAgICAgICAgICAgICBzZWxmLl9oZWFkZXJzX2J1ZmZlci5hcHBlbmQoKCIlcyAlZCAlc1xyXG4iICUKQEAgLTU4MywxMiArNTc5LDcgQEAKICAgICAgICAgIiIiUmV0dXJuIHRoZSBjdXJyZW50IGRhdGUgYW5kIHRpbWUgZm9ybWF0dGVkIGZvciBhIG1lc3NhZ2UgaGVhZGVyLiIiIgogICAgICAgICBpZiB0aW1lc3RhbXAgaXMgTm9uZToKICAgICAgICAgICAgIHRpbWVzdGFtcCA9IHRpbWUudGltZSgpCi0gICAgICAgIHllYXIsIG1vbnRoLCBkYXksIGhoLCBtbSwgc3MsIHdkLCB5LCB6ID0gdGltZS5nbXRpbWUodGltZXN0YW1wKQotICAgICAgICBzID0gIiVzLCAlMDJkICUzcyAlNGQgJTAyZDolMDJkOiUwMmQgR01UIiAlICgKLSAgICAgICAgICAgICAgICBzZWxmLndlZWtkYXluYW1lW3dkXSwKLSAgICAgICAgICAgICAgICBkYXksIHNlbGYubW9udGhuYW1lW21vbnRoXSwgeWVhciwKLSAgICAgICAgICAgICAgICBoaCwgbW0sIHNzKQotICAgICAgICByZXR1cm4gcworICAgICAgICByZXR1cm4gZW1haWwudXRpbHMuZm9ybWF0ZGF0ZSh0aW1lc3RhbXAsIHVzZWdtdD1UcnVlKQogCiAgICAgZGVmIGxvZ19kYXRlX3RpbWVfc3RyaW5nKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIGN1cnJlbnQgdGltZSBmb3JtYXR0ZWQgZm9yIGxvZ2dpbmcuIiIiCkBAIC03MjYsNyArNzE3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJykKICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKICAgICAgICAgICAgIGRpc3BsYXlwYXRoID0gdXJsbGliLnBhcnNlLnVucXVvdGUocGF0aCkKLSAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZShkaXNwbGF5cGF0aCkKKyAgICAgICAgZGlzcGxheXBhdGggPSBodG1sLmVzY2FwZShkaXNwbGF5cGF0aCwgcXVvdGU9RmFsc2UpCiAgICAgICAgIGVuYyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICB0aXRsZSA9ICdEaXJlY3RvcnkgbGlzdGluZyBmb3IgJXMnICUgZGlzcGxheXBhdGgKICAgICAgICAgci5hcHBlbmQoJzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgJwpAQCAtNzUwLDcgKzc0MSw3IEBACiAgICAgICAgICAgICByLmFwcGVuZCgnPGxpPjxhIGhyZWY9IiVzIj4lczwvYT48L2xpPicKICAgICAgICAgICAgICAgICAgICAgJSAodXJsbGliLnBhcnNlLnF1b3RlKGxpbmtuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JzPSdzdXJyb2dhdGVwYXNzJyksCi0gICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZXNjYXBlKGRpc3BsYXluYW1lKSkpCisgICAgICAgICAgICAgICAgICAgICAgIGh0bWwuZXNjYXBlKGRpc3BsYXluYW1lLCBxdW90ZT1GYWxzZSkpKQogICAgICAgICByLmFwcGVuZCgnPC91bD5cbjxocj5cbjwvYm9keT5cbjwvaHRtbD5cbicpCiAgICAgICAgIGVuY29kZWQgPSAnXG4nLmpvaW4ocikuZW5jb2RlKGVuYywgJ3N1cnJvZ2F0ZWVzY2FwZScpCiAgICAgICAgIGYgPSBpby5CeXRlc0lPKCkKQEAgLTExOTEsMTYgKzExODIsMTUgQEAKICAgICBzZXJ2ZXJfYWRkcmVzcyA9IChiaW5kLCBwb3J0KQogCiAgICAgSGFuZGxlckNsYXNzLnByb3RvY29sX3ZlcnNpb24gPSBwcm90b2NvbAotICAgIGh0dHBkID0gU2VydmVyQ2xhc3Moc2VydmVyX2FkZHJlc3MsIEhhbmRsZXJDbGFzcykKLQotICAgIHNhID0gaHR0cGQuc29ja2V0LmdldHNvY2tuYW1lKCkKLSAgICBwcmludCgiU2VydmluZyBIVFRQIG9uIiwgc2FbMF0sICJwb3J0Iiwgc2FbMV0sICIuLi4iKQotICAgIHRyeToKLSAgICAgICAgaHR0cGQuc2VydmVfZm9yZXZlcigpCi0gICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgotICAgICAgICBwcmludCgiXG5LZXlib2FyZCBpbnRlcnJ1cHQgcmVjZWl2ZWQsIGV4aXRpbmcuIikKLSAgICAgICAgaHR0cGQuc2VydmVyX2Nsb3NlKCkKLSAgICAgICAgc3lzLmV4aXQoMCkKKyAgICB3aXRoIFNlcnZlckNsYXNzKHNlcnZlcl9hZGRyZXNzLCBIYW5kbGVyQ2xhc3MpIGFzIGh0dHBkOgorICAgICAgICBzYSA9IGh0dHBkLnNvY2tldC5nZXRzb2NrbmFtZSgpCisgICAgICAgIHNlcnZlX21lc3NhZ2UgPSAiU2VydmluZyBIVFRQIG9uIHtob3N0fSBwb3J0IHtwb3J0fSAoaHR0cDovL3tob3N0fTp7cG9ydH0vKSAuLi4iCisgICAgICAgIHByaW50KHNlcnZlX21lc3NhZ2UuZm9ybWF0KGhvc3Q9c2FbMF0sIHBvcnQ9c2FbMV0pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBodHRwZC5zZXJ2ZV9mb3JldmVyKCkKKyAgICAgICAgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAgICAgcHJpbnQoIlxuS2V5Ym9hcmQgaW50ZXJydXB0IHJlY2VpdmVkLCBleGl0aW5nLiIpCisgICAgICAgICAgICBzeXMuZXhpdCgwKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL011bHRpU3RhdHVzQmFyLnB5IGIvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MmJhOWEuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvTXVsdGlTdGF0dXNCYXIucHkKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLQotY2xhc3MgTXVsdGlTdGF0dXNCYXIoRnJhbWUpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1hc3Rlcj1Ob25lLCAqKmt3KToKLSAgICAgICAgaWYgbWFzdGVyIGlzIE5vbmU6Ci0gICAgICAgICAgICBtYXN0ZXIgPSBUaygpCi0gICAgICAgIEZyYW1lLl9faW5pdF9fKHNlbGYsIG1hc3RlciwgKiprdykKLSAgICAgICAgc2VsZi5sYWJlbHMgPSB7fQotCi0gICAgZGVmIHNldF9sYWJlbChzZWxmLCBuYW1lLCB0ZXh0PScnLCBzaWRlPUxFRlQsIHdpZHRoPTApOgotICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmxhYmVsczoKLSAgICAgICAgICAgIGxhYmVsID0gTGFiZWwoc2VsZiwgYm9yZGVyd2lkdGg9MCwgYW5jaG9yPVcpCi0gICAgICAgICAgICBsYWJlbC5wYWNrKHNpZGU9c2lkZSwgcGFkeT0wLCBwYWR4PTQpCi0gICAgICAgICAgICBzZWxmLmxhYmVsc1tuYW1lXSA9IGxhYmVsCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsYWJlbCA9IHNlbGYubGFiZWxzW25hbWVdCi0gICAgICAgIGlmIHdpZHRoICE9IDA6Ci0gICAgICAgICAgICBsYWJlbC5jb25maWcod2lkdGg9d2lkdGgpCi0gICAgICAgIGxhYmVsLmNvbmZpZyh0ZXh0PXRleHQpCi0KLWRlZiBfbXVsdGlzdGF0dXNfYmFyKHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiAlKHgsIHkgKyAxNTApKQotICAgIHJvb3QudGl0bGUoIlRlc3QgbXVsdGlzdGF0dXMgYmFyIikKLSAgICBmcmFtZSA9IEZyYW1lKHJvb3QpCi0gICAgdGV4dCA9IFRleHQoZnJhbWUpCi0gICAgdGV4dC5wYWNrKCkKLSAgICBtc2IgPSBNdWx0aVN0YXR1c0JhcihmcmFtZSkKLSAgICBtc2Iuc2V0X2xhYmVsKCJvbmUiLCAiaGVsbG8iKQotICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJ3b3JsZCIpCi0gICAgbXNiLnBhY2soc2lkZT1CT1RUT00sIGZpbGw9WCkKLQotICAgIGRlZiBjaGFuZ2UoKToKLSAgICAgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImZvbyIpCi0gICAgICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJiYXIiKQotCi0gICAgYnV0dG9uID0gQnV0dG9uKHJvb3QsIHRleHQ9IlVwZGF0ZSBzdGF0dXMiLCBjb21tYW5kPWNoYW5nZSkKLSAgICBidXR0b24ucGFjayhzaWRlPUJPVFRPTSkKLSAgICBmcmFtZS5wYWNrKCkKLSAgICBmcmFtZS5tYWlubG9vcCgpCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCi0gICAgcnVuKF9tdWx0aXN0YXR1c19iYXIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ORVdTLnR4dCBiL0xpYi9pZGxlbGliL05FV1MudHh0CmluZGV4IDcyOTA1YzEuLmEzZmM1MDEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL05FV1MudHh0CisrKyBiL0xpYi9pZGxlbGliL05FV1MudHh0CkBAIC0xLDQ1ICsxLDEwMSBAQAotV2hhdCdzIE5ldyBpbiBJRExFIDMuNS4zPwotPT09PT09PT09PT09PT09PT09PT09PT09PQotKlJlbGVhc2UgZGF0ZTogMjAxNy0wMS0wMT8qCitXaGF0J3MgTmV3IGluIElETEUgMy42LjA/Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT0KKypSZWxlYXNlIGRhdGU6IDIwMTYtMTItMTY/KgogCiAtIElzc3VlICMxNTMwODogQWRkICdpbnRlcnJ1cHQgZXhlY3V0aW9uJyAoXkMpIHRvIFNoZWxsIG1lbnUuCiAgIFBhdGNoIGJ5IFJvZ2VyIFNlcnd5LCB1cGRhdGVkIGJ5IEJheWFyZCBSYW5kZWwuCiAKIC0gSXNzdWUgIzI3OTIyOiBTdG9wIElETEUgdGVzdHMgZnJvbSAnZmxhc2hpbmcnIGd1aSB3aWRnZXRzIG9uIHRoZSBzY3JlZW4uCiAKKy0gSXNzdWUgIzI3ODkxOiBDb25zaXN0ZW50bHkgZ3JvdXAgYW5kIHNvcnQgaW1wb3J0cyB3aXRoaW4gaWRsZWxpYiBtb2R1bGVzLgorCistIElzc3VlICMxNzY0MjogYWRkIGxhcmdlciBmb250IHNpemVzIGZvciBjbGFzc3Jvb20gcHJvamVjdGlvbi4KKwogLSBBZGQgdmVyc2lvbiB0byB0aXRsZSBvZiBJRExFIGhlbHAgd2luZG93LgogCiAtIElzc3VlICMyNTU2NDogSW4gc2VjdGlvbiBvbiBJRExFIC0tIGNvbnNvbGUgZGlmZmVyZW5jZXMsIG1lbnRpb24gdGhhdAogICB1c2luZyBleGVjIG1lYW5zIHRoYXQgX19idWlsdGluc19fIGlzIGRlZmluZWQgZm9yIGVhY2ggc3RhdGVtZW50LgogCistIElzc3VlICMyNzgyMTogRml4IDMuNi4wYTMgcmVncmVzc2lvbiB0aGF0IHByZXZlbnRlZCBjdXN0b20ga2V5IHNldHMKKyAgZnJvbSBiZWluZyBzZWxlY3RlZCB3aGVuIG5vIGN1c3RvbSB0aGVtZSB3YXMgZGVmaW5lZC4KKwogLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCiAgIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQogICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KIAorLSBJc3N1ZSAjMjc2MjE6IFB1dCBxdWVyeSByZXNwb25zZSB2YWxpZGF0aW9uIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBxdWVyeQorICBib3ggaXRzZWxmIGluc3RlYWQgb2YgaW4gYSBzZXBhcmF0ZSBtYXNzYWdlYm94LiAgUmVkbyB0ZXN0cyB0byBtYXRjaC4KKyAgQWRkIE1hYyBPU1ggcmVmaW5lbWVudHMuICBPcmlnaW5hbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI3NjIwOiBFc2NhcGUga2V5IG5vdyBjbG9zZXMgUXVlcnkgYm94IGFzIGNhbmNlbGxlZC4KKworLSBJc3N1ZSAjMjc2MDk6IElETEU6IHRhYiBhZnRlciBpbml0aWFsIHdoaXRlc3BhY2Ugc2hvdWxkIHRhYiwgbm90CisgIGF1dG9jb21wbGV0ZS4gVGhpcyBmaXhlcyBwcm9ibGVtIHdpdGggd3JpdGluZyBkb2NzdHJpbmdzIGF0IGxlYXN0CisgIHR3aWNlIGluZGVudGVkLgorCistIElzc3VlICMyNzYwOTogRXhwbGljaXRseSByZXR1cm4gTm9uZSB3aGVuIHRoZXJlIGFyZSBhbHNvIG5vbi1Ob25lCisgIHJldHVybnMuIEluIGEgZmV3IGNhc2VzLCByZXZlcnNlIGEgY29uZGl0aW9uIGFuZCBlbGltaW5hdGUgYSByZXR1cm4uCisKIC0gSXNzdWUgIzI1NTA3OiBJRExFIG5vIGxvbmdlciBydW5zIGJ1Z2d5IGNvZGUgYmVjYXVzZSBvZiBpdHMgdGtpbnRlciBpbXBvcnRzLgogICBVc2VycyBtdXN0IGluY2x1ZGUgdGhlIHNhbWUgaW1wb3J0cyByZXF1aXJlZCB0byBydW4gZGlyZWN0bHkgaW4gUHl0aG9uLgogCistIElzc3VlICMyNzE3MzogQWRkICdJRExFIE1vZGVybiBVbml4JyB0byB0aGUgYnVpbHQtaW4ga2V5IHNldHMuCisgIE1ha2UgdGhlIGRlZmF1bHQga2V5IHNldCBkZXBlbmQgb24gdGhlIHBsYXRmb3JtLgorICBBZGQgdGVzdHMgZm9yIHRoZSBjaGFuZ2VzIHRvIHRoZSBjb25maWcgbW9kdWxlLgorCiAtIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCiAKKy0gSXNzdWUgIzI3NDc3OiBJRExFIHNlYXJjaCBkaWFsb2dzIG5vdyB1c2UgdHRrIHdpZGdldHMuCisKKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCisKKy0gSXNzdWUgIzI3NDUyOiBtYWtlIGNvbW1hbmQgbGluZSAiaWRsZS10ZXN0PiBweXRob24gdGVzdF9oZWxwLnB5IiB3b3JrLgorICBfX2ZpbGVfXyBpcyByZWxhdGl2ZSB3aGVuIHB5dGhvbiBpcyBzdGFydGVkIGluIHRoZSBmaWxlJ3MgZGlyZWN0b3J5LgorCistIElzc3VlICMyNzQ1MjogYWRkIGxpbmUgY291bnRlciBhbmQgY3JjIHRvIElETEUgY29uZmlnSGFuZGxlciB0ZXN0IGR1bXAuCisKKy0gSXNzdWUgIzI3MzgwOiBJRExFOiBhZGQgcXVlcnkucHkgd2l0aCBiYXNlIFF1ZXJ5IGRpYWxvZyBhbmQgdHRrIHdpZGdldHMuCisgIE1vZHVsZSBoYWQgc3ViY2xhc3NlcyBTZWN0aW9uTmFtZSwgTW9kdWxlTmFtZSwgYW5kIEhlbHBTb3VyY2UsIHdoaWNoIGFyZQorICB1c2VkIHRvIGdldCBpbmZvcm1hdGlvbiBmcm9tIHVzZXJzIGJ5IGNvbmZpZ2RpYWxvZyBhbmQgZmlsZSA9PkxvYWQgTW9kdWxlLgorICBFYWNoIHN1YmNsYXNzIGhhcyBpdHcgb3duIHZhbGlkaXR5IGNoZWNrcy4gIFVzaW5nIE1vZHVsZU5hbWUgYWxsb3dzIHVzZXJzCisgIHRvIGVkaXQgYmFkIG1vZHVsZSBuYW1lcyBpbnN0ZWFkIG9mIHN0YXJ0aW5nIG92ZXIuCisgIEFkZCB0ZXN0cyBhbmQgZGVsZXRlIHRoZSB0d28gZmlsZXMgY29tYmluZWQgaW50byB0aGUgbmV3IG9uZS4KKworLSBJc3N1ZSAjMjczNzI6IFRlc3RfaWRsZSBubyBsb25nZXIgY2hhbmdlcyB0aGUgbG9jYWxlLgorCiAtIElzc3VlICMyNzM2NTogQWxsb3cgbm9uLWFzY2lpIGNoYXJzIGluIElETEUgTkVXUy50eHQsIGZvciBjb250cmlidXRvciBuYW1lcy4KIAogLSBJc3N1ZSAjMjcyNDU6IElETEU6IENsZWFubHkgZGVsZXRlIGN1c3RvbSB0aGVtZXMgYW5kIGtleSBiaW5kaW5ncy4KICAgUHJldmlvdXNseSwgd2hlbiBJRExFIHdhcyBzdGFydGVkIGZyb20gYSBjb25zb2xlIG9yIGJ5IGltcG9ydCwgYSBjYXNjYWRlCiAgIG9mIHdhcm5pbmdzIHdhcyBlbWl0dGVkLiAgUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KIAorLSBJc3N1ZSAjMjQxMzc6IFJ1biBJRExFLCB0ZXN0X2lkbGUsIGFuZCBodGVzdCB3aXRoIHRraW50ZXIgZGVmYXVsdCByb290IGRpc2FibGVkLgorICBGaXggY29kZSBhbmQgdGVzdHMgdGhhdCBmYWlsIHdpdGggdGhpcyByZXN0cmljdGlvbi4KKyAgRml4IGh0ZXN0cyB0byBub3QgY3JlYXRlIGEgc2Vjb25kIGFuZCByZWR1bmRhbnQgcm9vdCBhbmQgbWFpbmxvb3AuCiAKLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMj8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTYtMDYtMjYqCistIElzc3VlICMyNzMxMDogRml4IElETEUuYXBwIGZhaWx1cmUgdG8gbGF1bmNoIG9uIE9TIFggZHVlIHRvIHZlc3RpZ2lhbCBpbXBvcnQuCiAKIC0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCiAgIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAogICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgogCistIElzc3VlICMyNDc1MDogU3dpdGNoIGFsbCBzY3JvbGxiYXJzIGluIElETEUgdG8gdHRrIHZlcnNpb25zLgorICBXaGVyZSBuZWVkZWQsIG1pbmltYWwgdGVzdHMgYXJlIGFkZGVkIHRvIGNvdmVyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzI0NzU5OiBJRExFIHJlcXVpcmVzIHRrIDguNSBhbmQgYXZhaWxhYmlsaXR5IHR0ayB3aWRnZXRzLgorICBEZWxldGUgbm93IHVubmVlZGVkIHRrIHZlcnNpb24gdGVzdHMgYW5kIGNvZGUgZm9yIG9sZGVyIHZlcnNpb25zLgorICBBZGQgdGVzdCBmb3IgSURMRSBzeW50YXggY29sb3JpemVyLgorCistIElzc3VlICMyNzIzOTogaWRsZWxpYi5tYWNvc3guaXNYeXpUayBmdW5jdGlvbnMgaW5pdGlhbGl6ZSBhcyBuZWVkZWQuCisKKy0gSXNzdWUgIzI3MjYyOiBtb3ZlIEFxdWEgdW5iaW5kaW5nIGNvZGUsIHdoaWNoIGVuYWJsZSBjb250ZXh0IG1lbnVzLCB0byBtYXhvc3guCisKIC0gSXNzdWUgIzI0NzU5OiBNYWtlIGNsZWFyIGluIGlkbGVsaWIuaWRsZV90ZXN0Ll9faW5pdF9fIHRoYXQgdGhlIGRpcmVjdG9yeQogICBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUgYW5kIHRvb2wgZm9yIG1haW50YWluZXJzLgogCi0tIElzc3VlICMyNzE5NjogU3RvcCAnVGhlbWVDaGFuZ2VmJyB3YXJuaW5ncyB3aGVuIHJ1bm5pbmcgSURMRSB0ZXN0cy4KKy0gSXNzdWUgIzI3MTk2OiBTdG9wICdUaGVtZUNoYW5nZWQnIHdhcm5pbmdzIHdoZW4gcnVubmluZyBJRExFIHRlc3RzLgogICBUaGVzZSBwZXJzaXN0ZWQgYWZ0ZXIgb3RoZXIgd2FybmluZ3Mgd2VyZSBzdXBwcmVzc2VkIGluICMyMDU2Ny4KICAgQXBwbHkgU2VyaGl5IFN0b3JjaGFrYSdzIHVwZGF0ZV9pZGxldGFza3Mgc29sdXRpb24gdG8gZm91ciB0ZXN0IGZpbGVzLgogICBSZWNvcmQgdGhpcyBhZGRpdGlvbmFsIGFkdmljZSBpbiBpZGxlX3Rlc3QvUkVBRE1FLnR4dApAQCAtNDcsOSArMTAzLDI2IEBACiAtIElzc3VlICMyMDU2NzogUmV2aXNlIGlkbGVfdGVzdC9SRUFETUUudHh0IHdpdGggYWR2aWNlIGFib3V0IGF2b2lkaW5nCiAgIHRrIHdhcm5pbmcgbWVzc2FnZXMgZnJvbSB0ZXN0cy4gIEFwcGx5IGFkdmljZSB0byBzZXZlcmFsIElETEUgdGVzdHMuCiAKKy0gSXNzdWUgIyAyNDIyNTogVXBkYXRlIGlkbGVsaWIvUkVBRE1FLnR4dCB3aXRoIG5ldyBmaWxlIG5hbWVzCisgIGFuZCBldmVudCBoYW5kbGVycy4KKworLSBJc3N1ZSAjMjcxNTY6IFJlbW92ZSBvYnNvbGV0ZSBjb2RlIG5vdCB1c2VkIGJ5IElETEUuICBSZXBsYWNlbWVudHM6CisgIDEuIGhlbHAudHh0LCByZXBsYWNlZCBieSBoZWxwLmh0bWwsIGlzIG91dC1vZi1kYXRlIGFuZCBzaG91bGQgbm90IGJlIHVzZWQuCisgIEl0cyBkZWRpY2F0ZWQgdmlld2VyIGhhcyBiZSByZXBsYWNlZCBieSB0aGUgaHRtbCB2aWV3ZXIgaW4gaGVscC5weS4KKyAgMi4gJ2ltcG9ydCBpZGxldmVyOyBJID0gaWRsZXZlci5JRExFX1ZFUlNJT04nIGlzIHRoZSBzYW1lIGFzCisgICdpbXBvcnQgc3lzOyBJID0gdmVyc2lvbls6dmVyc2lvbi5pbmRleCgnICcpXScKKyAgMy4gQWZ0ZXIgJ29iID0gc3RhY2t2aWV3ZXIuVmFyaWFibGVzVHJlZUl0ZW0oKmFyZ3MpJywKKyAgJ29iLmtleXMoKScgPT0gJ2xpc3Qob2Iub2JqZWN0LmtleXMpLgorICA0LiBJbiBtYWNvc2MsIHJ1bm5pbmdBc09TWEFQUCA9PSBpc0FxdWFUazsgaWRDYXJib25BcXVhVGsgPT0gaXNDYXJib25UaworCiAtIElzc3VlICMyNzExNzogTWFrZSBjb2xvcml6ZXIgaHRlc3QgYW5kIHR1cnRsZWRlbW8gd29yayB3aXRoIGRhcmsgdGhlbWVzLgogICBNb3ZlIGNvZGUgZm9yIGNvbmZpZ3VyaW5nIHRleHQgd2lkZ2V0IGNvbG9ycyB0byBhIG5ldyBmdW5jdGlvbi4KIAorLSBJc3N1ZSAjMjQyMjU6IFJlbmFtZSBtYW55IGlkbGVsaWIvKi5weSBhbmQgaWRsZV90ZXN0L3Rlc3RfKi5weSBmaWxlcy4KKyAgRWRpdCBmaWxlcyB0byByZXBsYWNlIG9sZCBuYW1lcyB3aXRoIG5ldyBuYW1lcyB3aGVuIHRoZSBvbGQgbmFtZQorICByZWZlcnJlZCB0byB0aGUgbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBjbGFzcyBpdCBjb250YWluZWQuCisgIFNlZSB0aGUgaXNzdWUgYW5kIElETEUgc2VjdGlvbiBpbiBXaGF0J3MgTmV3IGluIDMuNiBmb3IgbW9yZS4KKwogLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCiAgIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCiAKQEAgLTYyLDggKzEzNSw4IEBACiAtIElzc3VlICMxODQxMDogQWRkIHRlc3QgZm9yIElETEUncyBzZWFyY2ggZGlhbG9nLgogICBPcmlnaW5hbCBwYXRjaCBieSBXZXN0bGV5IE1hcnTDrW5lei4KIAotLSBJc3N1ZSAjMjE3MDM6IEFkZCB0ZXN0IGZvciB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KKy0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuICBQYXRjaCBtb3N0bHkgYnkKKyAgU2FpbWFkaGF2IEhlYmxpa2FyIC4KIAogLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCiAKQEAgLTgyLDExICsxNTUsNiBAQAogICBNQVJLIGluIFJFQURNRS50eHQgYW5kIG9wZW4gdGhpcyBhbmQgTkVXUy50eHQgd2l0aCAnYXNjaWknLgogICBSZS1lbmNvZGUgQ1JFRElUUy50eHQgdG8gdXRmLTggYW5kIG9wZW4gaXQgd2l0aCAndXRmLTgnLgogCi0KLVdoYXQncyBOZXcgaW4gSURMRSAzLjUuMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT0KLSpSZWxlYXNlIGRhdGU6IDIwMTUtMTItMDYqCi0KIC0gSXNzdWUgMTUzNDg6IFN0b3AgdGhlIGRlYnVnZ2VyIGVuZ2luZSAobm9ybWFsbHkgaW4gYSB1c2VyIHByb2Nlc3MpCiAgIGJlZm9yZSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aW5kb3cgKHJ1bm5pbmcgaW4gdGhlIElETEUgcHJvY2VzcykuCiAgIFRoaXMgcHJldmVudHMgdGhlIFJ1bnRpbWVFcnJvcnMgdGhhdCB3ZXJlIGJlaW5nIGNhdWdodCBhbmQgaWdub3JlZC4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JFQURNRS50eHQgYi9MaWIvaWRsZWxpYi9SRUFETUUudHh0CmluZGV4IGZmNDQ1MDQuLjUxZThlZjUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1JFQURNRS50eHQKKysrIGIvTGliL2lkbGVsaWIvUkVBRE1FLnR4dApAQCAtMjksNjEgKzI5LDYxIEBACiAKIEltcGxlbWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tLQotQXV0b0NvbXBsZXRlLnB5ICAgIyBDb21wbGV0ZSBhdHRyaWJ1dGUgbmFtZXMgb3IgZmlsZW5hbWVzLgotQXV0b0NvbXBsZXRlV2luZG93LnB5ICAjIERpc3BsYXkgY29tcGxldGlvbnMuCi1BdXRvRXhwYW5kLnB5ICAgICAjIEV4cGFuZCB3b3JkIHdpdGggcHJldmlvdXMgd29yZCBpbiBmaWxlLgotQmluZGluZ3MucHkgICAgICAgIyBEZWZpbmUgbW9zdCBvZiBJRExFIG1lbnUuCi1DYWxsVGlwV2luZG93LnB5ICAjIERpc3BsYXkgY2FsbHRpcC4KLUNhbGxUaXBzLnB5ICAgICAgICMgQ3JlYXRlIGNhbGx0aXAgdGV4dC4KLUNsYXNzQnJvd3Nlci5weSAgICMgQ3JlYXRlIG1vZHVsZSBicm93c2VyIHdpbmRvdy4KLUNvZGVDb250ZXh0LnB5ICAgICMgU2hvdyBjb21wb3VuZCBzdGF0ZW1lbnQgaGVhZGVycyBvdGhlcndpc2Ugbm90IHZpc2libGUuCi1Db2xvckRlbGVnYXRvci5weSAjIENvbG9yaXplIHRleHQgKG5pbSkuCi1EZWJ1Z2dlci5weSAgICAgICAjIERlYnVnIGNvZGUgcnVuIGZyb20gZWRpdG9yOyBzaG93IHdpbmRvdy4KLURlbGVnYXRvci5weSAgICAgICMgRGVmaW5lIGJhc2UgY2xhc3MgZm9yIGRlbGVnYXRvcnMgKG5pbSkuCi1FZGl0b3JXaW5kb3cucHkgICAjIERlZmluZSBtb3N0IG9mIGVkaXRvciBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuCi1GaWxlTGlzdC5weSAgICAgICAjIE9wZW4gZmlsZXMgYW5kIG1hbmFnZSBsaXN0IG9mIG9wZW4gd2luZG93cyAobmltKS4KLUZvcm1hdFBhcmFncmFwaC5weSMgUmUtd3JhcCBtdWx0aWxpbmUgc3RyaW5ncyBhbmQgY29tbWVudHMuCi1HcmVwRGlhbG9nLnB5ICAgICAjIEZpbmQgYWxsIG9jY3VycmVuY2VzIG9mIHBhdHRlcm4gaW4gbXVsdGlwbGUgZmlsZXMuCi1IeXBlclBhcnNlci5weSAgICAjIFBhcnNlIGNvZGUgYXJvdW5kIGEgZ2l2ZW4gaW5kZXguCi1JT0JpbmRpbmcucHkgICAgICAjIE9wZW4sIHJlYWQsIGFuZCB3cml0ZSBmaWxlcwotSWRsZUhpc3RvcnkucHkgICAgIyBHZXQgcHJldmlvdXMgb3IgbmV4dCB1c2VyIGlucHV0IGluIHNoZWxsIChuaW0pCi1NdWx0aUNhbGwucHkgICAgICAjIFdyYXAgdGsgd2lkZ2V0IHRvIGFsbG93IG11bHRpcGxlIGNhbGxzIHBlciBldmVudCAobmltKS4KLU11bHRpU3RhdHVzQmFyLnB5ICMgRGVmaW5lIHN0YXR1cyBiYXIgZm9yIHdpbmRvd3MgKG5pbSkuCi1PYmplY3RCcm93c2VyLnB5ICAjIERlZmluZSBjbGFzcyB1c2VkIGluIFN0YWNrVmlld2VyIChuaW0pLgotT3V0cHV0V2luZG93LnB5ICAgIyBDcmVhdGUgd2luZG93IGZvciBncmVwIG91dHB1dC4KLVBhcmVuTWF0Y2gucHkgICAgICMgTWF0Y2ggZmVuY2Vwb3N0czogKCksIFtdLCBhbmQge30uCi1QYXRoQnJvd3Nlci5weSAgICAjIENyZWF0ZSBwYXRoIGJyb3dzZXIgd2luZG93LgotUGVyY29sYXRvci5weSAgICAgIyBNYW5hZ2UgZGVsZWdhdG9yIHN0YWNrIChuaW0pLgotUHlQYXJzZS5weSAgICAgICAgIyBHaXZlIGluZm9ybWF0aW9uIG9uIGNvZGUgaW5kZW50YXRpb24KLVB5U2hlbGwucHkgICAgICAgICMgU3RhcnQgSURMRSwgbWFuYWdlIHNoZWxsLCBjb21wbGV0ZSBlZGl0b3Igd2luZG93Ci1SZW1vdGVEZWJ1Z2dlci5weSAjIERlYnVnIGNvZGUgcnVuIGluIHJlbW90ZSBwcm9jZXNzLgotUmVtb3RlT2JqZWN0QnJvd3Nlci5weSAjIENvbW11bmljYXRlIG9iamVjdHMgYmV0d2VlbiBwcm9jZXNzZXMgd2l0aCBycGMgKG5pbSkuCi1SZXBsYWNlRGlhbG9nLnB5ICAjIFNlYXJjaCBhbmQgcmVwbGFjZSBwYXR0ZXJuIGluIHRleHQuCi1Sc3RyaXBFeHRlbnNpb24ucHkjIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UKLVNjcmlwdEJpbmRpbmcucHkgICMgQ2hlY2sgYW5kIHJ1biB1c2VyIGNvZGUuCi1TY3JvbGxlZExpc3QucHkgICAjIERlZmluZSBTY3JvbGxlZExpc3Qgd2lkZ2V0IGZvciBJRExFIChuaW0pLgotU2VhcmNoRGlhbG9nLnB5ICAgIyBTZWFyY2ggZm9yIHBhdHRlcm4gaW4gdGV4dC4KLVNlYXJjaERpYWxvZ0Jhc2UucHkgICMgRGVmaW5lIGJhc2UgZm9yIHNlYXJjaCwgcmVwbGFjZSwgYW5kIGdyZXAgZGlhbG9ncy4KLVNlYXJjaEVuZ2luZS5weSAgICMgRGVmaW5lIGVuZ2luZSBmb3IgYWxsIDMgc2VhcmNoIGRpYWxvZ3MuCi1TdGFja1ZpZXdlci5weSAgICAjIFZpZXcgc3RhY2sgYWZ0ZXIgZXhjZXB0aW9uLgotVHJlZVdpZGdldC5weSAgICAgIyBEZWZpbmUgdHJlZSB3aWRnZXIsIHVzZWQgaW4gYnJvd3NlcnMgKG5pbSkuCi1VbmRvRGVsZWdhdG9yLnB5ICAjIE1hbmFnZSB1bmRvIHN0YWNrLgotV2lkZ2V0UmVkaXJlY3Rvci5weSAjIEludGVyY2VwdCB3aWRnZXQgc3ViY29tbWFuZHMgKGZvciBwZXJjb2xhdG9yKSAobmltKS4KLVdpbmRvd0xpc3QucHkgICAgICMgTWFuYWdlIHdpbmRvdyBsaXN0IGFuZCBkZWZpbmUgbGlzdGVkIHRvcCBsZXZlbC4KLVpvb21IZWlnaHQucHkgICAgICMgWm9vbSB3aW5kb3cgdG8gZnVsbCBoZWlnaHQgb2Ygc2NyZWVuLgotYWJvdXREaWFsb2cucHkgICAgIyBEaXNwbGF5IEFib3V0IElETEUgZGlhbG9nLgotY29uZmlnRGlhbG9nLnB5ICAgIyBEaXNwbGF5IHVzZXIgY29uZmlndXJhdGlvbiBkaWFsb2dzLgotY29uZmlnSGFuZGxlci5weSAgIyBMb2FkLCBmZXRjaCwgYW5kIHNhdmUgY29uZmlndXJhdGlvbiAobmltKS4KLWNvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5ICAjIFNwZWNpZnkgaGVscCBzb3VyY2UuCi1jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weSAgIyBTcGVmaWZ5IHVzZXIgY29uZmlnIHNlY3Rpb24gbmFtZQotZHluT3B0aW9uTWVudVdpZGdldC5weSAgIyBkZWZpbmUgbXV0YWJsZSBPcHRpb25NZW51IHdpZGdldCAobmltKS4KK2F1dG9jb21wbGV0ZS5weSAgICMgQ29tcGxldGUgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGVuYW1lcy4KK2F1dG9jb21wbGV0ZV93LnB5ICMgRGlzcGxheSBjb21wbGV0aW9ucy4KK2F1dG9leHBhbmQucHkgICAgICMgRXhwYW5kIHdvcmQgd2l0aCBwcmV2aW91cyB3b3JkIGluIGZpbGUuCiticm93c2VyLnB5ICAgICAgICAjIENyZWF0ZSBtb2R1bGUgYnJvd3NlciB3aW5kb3cuCitjYWxsdGlwX3cucHkgICAgICAjIERpc3BsYXkgY2FsbHRpcC4KK2NhbGx0aXBzLnB5ICAgICAgICMgQ3JlYXRlIGNhbGx0aXAgdGV4dC4KK2NvZGVjb250ZXh0LnB5ICAgICMgU2hvdyBjb21wb3VuZCBzdGF0ZW1lbnQgaGVhZGVycyBvdGhlcndpc2Ugbm90IHZpc2libGUuCitjb2xvcml6ZXIucHkgICAgICAjIENvbG9yaXplIHRleHQgKG5pbSkKK2NvbmZpZy5weSAgICAgICAgICMgTG9hZCwgZmV0Y2gsIGFuZCBzYXZlIGNvbmZpZ3VyYXRpb24gKG5pbSkuCitjb25maWdkaWFsb2cucHkgICAjIERpc3BsYXkgdXNlciBjb25maWd1cmF0aW9uIGRpYWxvZ3MuCitjb25maWdfaGVscC5weSAgICAjIFNwZWNpZnkgaGVscCBzb3VyY2UgaW4gY29uZmlnZGlhbG9nLgorY29uZmlnX2tleS5weSAgICAgIyBDaGFuZ2Uga2V5YmluZGluZ3MuCitkeW5vcHRpb24ucHkgICAgICAjIERlZmluZSBtdXRhYmxlIE9wdGlvbk1lbnUgd2lkZ2V0IChuaW0pLgorZGVidWdvYmoucHkgICAgICAgIyBEZWZpbmUgY2xhc3MgdXNlZCBpbiBzdGFja3ZpZXdlci4KK2RlYnVnb2JqX3IucHkgICAgICMgQ29tbXVuaWNhdGUgb2JqZWN0cyBiZXR3ZWVuIHByb2Nlc3NlcyB3aXRoIHJwYyAobmltKS4KK2RlYnVnZ2VyLnB5ICAgICAgICMgRGVidWcgY29kZSBydW4gZnJvbSBzaGVsbCBvciBlZGl0b3I7IHNob3cgd2luZG93LgorZGVidWdnZXJfci5weSAgICAgIyBEZWJ1ZyBjb2RlIHJ1biBpbiByZW1vdGUgcHJvY2Vzcy4KK2RlbGVnYXRvci5weSAgICAgICMgRGVmaW5lIGJhc2UgY2xhc3MgZm9yIGRlbGVnYXRvcnMgKG5pbSkuCitlZGl0b3IucHkgICAgICAgICAjIERlZmluZSBtb3N0IG9mIGVkaXRvciBhbmQgdXRpbGl0eSBmdW5jdGlvbnMuCitmaWxlbGlzdC5weSAgICAgICAjIE9wZW4gZmlsZXMgYW5kIG1hbmFnZSBsaXN0IG9mIG9wZW4gd2luZG93cyAobmltKS4KK2dyZXAucHkgICAgICAgICAgICMgRmluZCBhbGwgb2NjdXJyZW5jZXMgb2YgcGF0dGVybiBpbiBtdWx0aXBsZSBmaWxlcy4KIGhlbHAucHkgICAgICAgICAgICMgRGlzcGxheSBJRExFJ3MgaHRtbCBkb2MuCi1rZXliaW5kaW5nRGlhbG9nLnB5ICAjIENoYW5nZSBrZXliaW5kaW5ncy4KLW1hY29zeFN1cHBvcnQucHkgICMgSGVscCBJRExFIHJ1biBvbiBNYWNzIChuaW0pLgoraGVscF9hYm91dC5weSAgICAgIyBEaXNwbGF5IEFib3V0IElETEUgZGlhbG9nLgoraGlzdG9yeS5weSAgICAgICAgIyBHZXQgcHJldmlvdXMgb3IgbmV4dCB1c2VyIGlucHV0IGluIHNoZWxsIChuaW0pCitoeXBlcnBhcnNlci5weSAgICAjIFBhcnNlIGNvZGUgYXJvdW5kIGEgZ2l2ZW4gaW5kZXguCitpb21lbnUucHkgICAgICAgICAjIE9wZW4sIHJlYWQsIGFuZCB3cml0ZSBmaWxlcworbWFjb3N4LnB5ICAgICAgICAgIyBIZWxwIElETEUgcnVuIG9uIE1hY3MgKG5pbSkuCittYWlubWVudS5weSAgICAgICAjIERlZmluZSBtb3N0IG9mIElETEUgbWVudS4KK211bHRpY2FsbC5weSAgICAgICMgV3JhcCB0ayB3aWRnZXQgdG8gYWxsb3cgbXVsdGlwbGUgY2FsbHMgcGVyIGV2ZW50IChuaW0pLgorb3V0d2luLnB5ICAgICAgICAgIyBDcmVhdGUgd2luZG93IGZvciBncmVwIG91dHB1dC4KK3BhcmFncmFwaC5weSAgICAgICMgUmUtd3JhcCBtdWx0aWxpbmUgc3RyaW5ncyBhbmQgY29tbWVudHMuCitwYXJlbm1hdGNoLnB5ICAgICAjIE1hdGNoIGZlbmNlcG9zdHM6ICgpLCBbXSwgYW5kIHt9LgorcGF0aGJyb3dzZXIucHkgICAgIyBDcmVhdGUgcGF0aCBicm93c2VyIHdpbmRvdy4KK3BlcmNvbGF0b3IucHkgICAgICMgTWFuYWdlIGRlbGVnYXRvciBzdGFjayAobmltKS4KK3B5cGFyc2UucHkgICAgICAgICMgR2l2ZSBpbmZvcm1hdGlvbiBvbiBjb2RlIGluZGVudGF0aW9uCitweXNoZWxsLnB5ICAgICAgICAjIFN0YXJ0IElETEUsIG1hbmFnZSBzaGVsbCwgY29tcGxldGUgZWRpdG9yIHdpbmRvdworcXVlcnkucHkgICAgICAgICAgIyBRdWVyeSB1c2VyIGZvciBpbmZvcm1hdGlvbgorcmVkaXJlY3Rvci5weSAgICAgIyBJbnRlcmNlcHQgd2lkZ2V0IHN1YmNvbW1hbmRzIChmb3IgcGVyY29sYXRvcikgKG5pbSkuCityZXBsYWNlLnB5ICAgICAgICAjIFNlYXJjaCBhbmQgcmVwbGFjZSBwYXR0ZXJuIGluIHRleHQuCiBycGMucHkgICAgICAgICAgICAjIENvbW11aWNhdGUgYmV0d2VlbiBpZGxlIGFuZCB1c2VyIHByb2Nlc3NlcyAobmltKS4KK3JzdHJpcC5weSAgICAgICAgICMgU3RyaXAgdHJhaWxpbmcgd2hpdGVzcGFjZS4KIHJ1bi5weSAgICAgICAgICAgICMgTWFuYWdlIHVzZXIgY29kZSBleGVjdXRpb24gc3VicHJvY2Vzcy4KK3J1bnNjcmlwdC5weSAgICAgICMgQ2hlY2sgYW5kIHJ1biB1c2VyIGNvZGUuCitzY3JvbGxlZGxpc3QucHkgICAjIERlZmluZSBzY3JvbGxlZGxpc3Qgd2lkZ2V0IGZvciBJRExFIChuaW0pLgorc2VhcmNoLnB5ICAgICAgICAgIyBTZWFyY2ggZm9yIHBhdHRlcm4gaW4gdGV4dC4KK3NlYXJjaGJhc2UucHkgICAgICMgRGVmaW5lIGJhc2UgZm9yIHNlYXJjaCwgcmVwbGFjZSwgYW5kIGdyZXAgZGlhbG9ncy4KK3NlYXJjaGVuZ2luZS5weSAgICMgRGVmaW5lIGVuZ2luZSBmb3IgYWxsIDMgc2VhcmNoIGRpYWxvZ3MuCitzdGFja3ZpZXdlci5weSAgICAjIFZpZXcgc3RhY2sgYWZ0ZXIgZXhjZXB0aW9uLgorc3RhdHVzYmFyLnB5ICAgICAgIyBEZWZpbmUgc3RhdHVzIGJhciBmb3Igd2luZG93cyAobmltKS4KIHRhYmJlZHBhZ2VzLnB5ICAgICMgRGVmaW5lIHRhYmJlZCBwYWdlcyB3aWRnZXQgKG5pbSkuCi10ZXh0Vmlldy5weSAgICAgICAjIERlZmluZSByZWFkLW9ubHkgdGV4dCB3aWRnZXQgKG5pbSkuCit0ZXh0dmlldy5weSAgICAgICAjIERlZmluZSByZWFkLW9ubHkgdGV4dCB3aWRnZXQgKG5pbSkuCit0cmVlLnB5ICAgICAgICAgICAjIERlZmluZSB0cmVlIHdpZGdlciwgdXNlZCBpbiBicm93c2VycyAobmltKS4KK3VuZG8ucHkgICAgICAgICAgICMgTWFuYWdlIHVuZG8gc3RhY2suCit3aW5kb3dzLnB5ICAgICAgICAjIE1hbmFnZSB3aW5kb3cgbGlzdCBhbmQgZGVmaW5lIGxpc3RlZCB0b3AgbGV2ZWwuCit6b29taGVpZ2h0LnB5ICAgICAjIFpvb20gd2luZG93IHRvIGZ1bGwgaGVpZ2h0IG9mIHNjcmVlbi4KIAogQ29uZmlndXJhdGlvbgogLS0tLS0tLS0tLS0tLQpAQCAtMTA0LDEyNyArMTA0LDE0OCBAQAogCiBTdWJkaXJlY3RvcmllcwogLS0tLS0tLS0tLS0tLS0KLUljb25zICAjIHNtYWxsIGltYWdlIGZpbGVzCi1pZGxlX3Rlc3QgICMgZmlsZXMgZm9yIGh1bWFuIHRlc3QgYW5kIGF1dG9tYXRlZCB1bml0IHRlc3RzCitJY29ucyAgICAgICAgIyBzbWFsbCBpbWFnZSBmaWxlcworaWRsZV90ZXN0ICAgICMgZmlsZXMgZm9yIGh1bWFuIHRlc3QgYW5kIGF1dG9tYXRlZCB1bml0IHRlc3RzCiAKIFVudXNlZCBhbmQgRGVwcmVjYXRlZCBmaWxlcyBhbmQgb2JqZWN0cyAobmltKQogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi1FZGl0b3JXaW5kb3cucHk6IEhlbHBkaWFsb2cgYW5kIGhlbHBEaWFsb2cKLVRvb2xUaXAucHk6IHVudXNlZC4KLWhlbHAudHh0Ci1pZGxldmVyLnB5Cit0b29sdGlwLnB5ICMgdW51c2VkCisKIAogCiBJRExFIE1FTlVTCi1Ub3AgbGV2ZWwgaXRlbXMgYW5kIG1vc3Qgc3VibWVudSBpdGVtcyBhcmUgZGVmaW5lZCBpbiBCaW5kaW5ncy4KK1RvcCBsZXZlbCBpdGVtcyBhbmQgbW9zdCBzdWJtZW51IGl0ZW1zIGFyZSBkZWZpbmVkIGluIG1haW5tZW51LgogRXh0ZW5zdGlvbnMgYWRkIHN1Ym1lbnUgaXRlbXMgd2hlbiBhY3RpdmUuICBUaGUgbmFtZXMgZ2l2ZW4gYXJlCiBmb3VuZCwgcXVvdGVkLCBpbiBvbmUgb2YgdGhlc2UgbW9kdWxlcywgcGFpcmVkIHdpdGggYSAnPDxwc2V1ZG9ldmVudD4+Jy4KIEVhY2ggcHNldWRvZXZlbnQgaXMgYm91bmQgdG8gYW4gZXZlbnQgaGFuZGxlci4gIFNvbWUgZXZlbnQgaGFuZGxlcnMKIGNhbGwgYW5vdGhlciBmdW5jdGlvbiB0aGF0IGRvZXMgdGhlIGFjdHVhbCB3b3JrLiAgVGhlIGFubm90YXRpb25zIGJlbG93CiBhcmUgaW50ZW5kZWQgdG8gYXQgbGVhc3QgZ2l2ZSB0aGUgbW9kdWxlIHdoZXJlIHRoZSBhY3R1YWwgd29yayBpcyBkb25lLgorJ2VFVycgPSBlZGl0b3IuRWRpdG9yV2luZG93CiAKLUZpbGUgICMgSU9CaW5kaWcgZXhjZXB0IGFzIG5vdGVkCi0gIE5ldyBGaWxlCi0gIE9wZW4uLi4gICMgSU9CaW5kaW5nLm9wZW4KLSAgT3BlbiBNb2R1bGUKK0ZpbGUKKyAgTmV3IEZpbGUgICAgICAgICAjIGVFVy5uZXdfY2FsbGJhY2sKKyAgT3Blbi4uLiAgICAgICAgICAjIGlvbWVudS5vcGVuCisgIE9wZW4gTW9kdWxlICAgICAgIyBlRXcub3Blbl9tb2R1bGUKICAgUmVjZW50IEZpbGVzCi0gIENsYXNzIEJyb3dzZXIgICMgQ2xhc3MgQnJvd3NlcgotICBQYXRoIEJyb3dzZXIgICMgUGF0aCBCcm93c2VyCisgIENsYXNzIEJyb3dzZXIgICAgIyBlRVcub3Blbl9jbGFzc19icm93c2VyLCBicm93c2VyLkNsYXNzQnJvd3NlcgorICBQYXRoIEJyb3dzZXIgICAgICMgZUVXLm9wZW5fcGF0aF9icm93c2VyLCBwYXRoYnJvd3NlcgogICAtLS0KLSAgU2F2ZSAgIyBJREJpbmRpbmcuc2F2ZQotICBTYXZlIEFzLi4uICAjIElPQmluZGluZy5zYXZlX2FzCi0gIFNhdmUgQ29weSBBcy4uLiAgIyBJT0JpbmRsaW5nLnNhdmVfYV9jb3B5CisgIFNhdmUgICAgICAgICAgICAgIyBpb21lbnUuc2F2ZQorICBTYXZlIEFzLi4uICAgICAgICMgaW9tZW51LnNhdmVfYXMKKyAgU2F2ZSBDb3B5IEFzLi4uICAjIGlvbWVudS5zYXZlX2FfY29weQogICAtLS0KLSAgUHJpbnQgV2luZG93ICAjIElPQmluZGluZy5wcmludF93aW5kb3cKKyAgUHJpbnQgV2luZG93ICAgICAjIGlvbWVudS5wcmludF93aW5kb3cKICAgLS0tCi0gIENsb3NlCi0gIEV4aXQKKyAgQ2xvc2UgICAgICAgICAgICAjIGVFVy5jbG9zZV9ldmVudAorICBFeGl0ICAgICAgICAgICAgICMgZmxpc3QuY2xvc2VfYWxsX2NhbGxiYWNrIChib3VuZCBpbiBlRVcpCiAKIEVkaXQKLSAgVW5kbyAgIyB1bmRvRGVsZWdhdG9yCi0gIFJlZG8gICMgdW5kb0RlbGVnYXRvcgotICAtLS0KLSAgQ3V0Ci0gIENvcHkKLSAgUGFzdGUKLSAgU2VsZWN0IEFsbAotICAtLS0gICMgTmV4dCA1IGl0ZW1zIHVzZSBTZWFyY2hFbmdpbmU7IGRpYWxvZ3MgdXNlIFNlYXJjaERpYWxvZ0Jhc2UKLSAgRmluZCAgIyBTZWFyY2ggRGlhbG9nCi0gIEZpbmQgQWdhaW4KLSAgRmluZCBTZWxlY3Rpb24KLSAgRmluZCBpbiBGaWxlcy4uLiAgIyBHcmVwRGlhbG9nCi0gIFJlcGxhY2UuLi4gICMgUmVwbGFjZURpYWxvZwotICBHbyB0byBMaW5lCi0gIFNob3cgQ29tcGxldGlvbnMgICMgQXV0b0NvbXBsZXRlIGV4dGVuc2lvbiBhbmQgQXV0b0NvbXBsZXRlV2lkb3cgKCZIUCkKLSAgRXhwYW5kIFdvcmQgICMgQXV0b0V4cGFuZCBleHRlbnNpb24KLSAgU2hvdyBjYWxsIHRpcCAgIyBDYWxsdGlwcyBleHRlbnNpb24gYW5kIENhbGx0aXBXaW5kb3cgKCYgSHlwZXJwYXJzZXIpCi0gIFNob3cgc3Vycm91bmRpbmcgcGFyZW5zICAjIFBhcmVuTWF0Y2ggKCYgSHlwZXJwYXJzZXIpCisgIFVuZG8gICAgICAgICAgICAgIyB1bmRvZGVsZWdhdG9yCisgIFJlZG8gICAgICAgICAgICAgIyB1bmRvZGVsZWdhdG9yCisgIC0tLSAgICAgICAgICAgICAgIyBlRVcucmlnaHRfbWVudV9ldmVudAorICBDdXQgICAgICAgICAgICAgICMgZUVXLmN1dAorICBDb3B5ICAgICAgICAgICAgICMgZUVXLmNvcHkKKyAgUGFzdGUgICAgICAgICAgICAjIGVFVy5wYXN0CisgIFNlbGVjdCBBbGwgICAgICAgIyBlRVcuc2VsZWN0X2FsbCAoKyBzZWUgZUVXLnJlbW92ZV9zZWxlY3Rpb24pCisgIC0tLSAgICAgICAgICAgICAgIyBOZXh0IDUgaXRlbXMgdXNlIHNlYXJjaGVuZ2luZTsgZGlhbG9ncyB1c2Ugc2VhcmNoYmFzZQorICBGaW5kICAgICAgICAgICAgICMgZUVXLmZpbmRfZXZlbnQsIHNlYXJjaC5TZWFyY2hEaWFsb2cuZmluZAorICBGaW5kIEFnYWluICAgICAgICMgZUVXLmZpbmRfYWdhaW5fZXZlbnQsIHNTRC5maW5kX2FnYWluCisgIEZpbmQgU2VsZWN0aW9uICAgIyBlRVcuZmluZF9zZWxlY3Rpb25fZXZlbnQsIHNTRC5maW5kX3NlbGVjdGlvbgorICBGaW5kIGluIEZpbGVzLi4uICMgZUVXLmZpbmRfaW5fZmlsZXNfZXZlbnQsIGdyZXAKKyAgUmVwbGFjZS4uLiAgICAgICAjIGVFVy5yZXBsYWNlX2V2ZW50LCByZXBsYWNlLlJlcGxhY2VEaWFsb2cucmVwbGFjZQorICBHbyB0byBMaW5lICAgICAgICMgZUVXLmdvdG9fbGluZV9ldmVudAorICBTaG93IENvbXBsZXRpb25zICMgYXV0b2NvbXBsZXRlIGV4dGVuc2lvbiBhbmQgYXV0b2NvbXBsZXRlV2lkb3cgKCZIUCkKKyAgRXhwYW5kIFdvcmQgICAgICAjIGF1dG9leHBhbmQgZXh0ZW5zaW9uCisgIFNob3cgY2FsbCB0aXAgICAgIyBDYWxsdGlwcyBleHRlbnNpb24gYW5kIENhbGx0aXBXaW5kb3cgKCYgSHlwZXJwYXJzZXIpCisgIFNob3cgc3Vycm91bmRpbmcgcGFyZW5zICAjIHBhcmVubWF0Y2ggKCYgSHlwZXJwYXJzZXIpCiAKLVNoZWxsICAjIFB5U2hlbGwKLSAgVmlldyBMYXN0IFJlc3RhcnQgICAgIyBQeVNoZWxsLlB5U2hlbGwudmlld19yZXN0YXJ0X21hcmsKLSAgUmVzdGFydCBTaGVsbCAgICAgICAgIyBQeVNoZWxsLlB5U2hlbGwucmVzdGFydF9zaGVsbAorU2hlbGwgICMgcHlzaGVsbAorICBWaWV3IExhc3QgUmVzdGFydCAgICAjIHB5c2hlbGwuUHlTaGVsbC52aWV3X3Jlc3RhcnRfbWFyaworICBSZXN0YXJ0IFNoZWxsICAgICAgICAjIHB5c2hlbGwuUHlTaGVsbC5yZXN0YXJ0X3NoZWxsCiAgIEludGVycnVwdCBFeGVjdXRpb24gICMgcHlzaGVsbC5QeVNoZWxsLmNhbmNlbF9jYWxsYmFjawogCiBEZWJ1ZyAoU2hlbGwgb25seSkKICAgR28gdG8gRmlsZS9MaW5lCi0gIERlYnVnZ2VyICAgICAgICAgICAgICAgIyBEZWJ1Z2dlciwgUmVtb3RlRGVidWdnZXIsIFB5U2hlbGwudG9nZ2xlX2RlYnVnZXIKLSAgU3RhY2sgVmlld2VyICAgICAgICAgICAjIFN0YWNrVmlld2VyLCBQeVNoZWxsLm9wZW5fc3RhY2tfdmlld2VyCi0gIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgIyBTdGFja1ZpZXdlcgorICBkZWJ1Z2dlciAgICAgICAgICMgZGVidWdnZXIsIGRlYnVnZ2VyX3IsIFB5U2hlbGwudG9nZ2xlX2RlYnVnZXIKKyAgU3RhY2sgVmlld2VyICAgICAjIHN0YWNrdmlld2VyLCBQeVNoZWxsLm9wZW5fc3RhY2tfdmlld2VyCisgIEF1dG8tb3BlbiBTdGFjayBWaWV3ZXIgICMgc3RhY2t2aWV3ZXIKIAogRm9ybWF0IChFZGl0b3Igb25seSkKLSAgSW5kZW50IFJlZ2lvbgotICBEZWRlbnQgUmVnaW9uCi0gIENvbW1lbnQgT3V0IFJlZ2lvbgotICBVbmNvbW1lbnQgUmVnaW9uCi0gIFRhYmlmeSBSZWdpb24KLSAgVW50YWJpZnkgUmVnaW9uCi0gIFRvZ2dsZSBUYWJzCi0gIE5ldyBJbmRlbnQgV2lkdGgKLSAgRm9ybWF0IFBhcmFncmFwaCAgIyBGb3JtYXRQYXJhZ3JhcGggZXh0ZW5zaW9uCisgIEluZGVudCBSZWdpb24gICAgIyBlRVcuaW5kZW50X3JlZ2lvbl9ldmVudAorICBEZWRlbnQgUmVnaW9uICAgICMgZUVXLmRlZGVudF9yZWdpb25fZXZlbnQKKyAgQ29tbWVudCBPdXQgUmVnLiAjIGVFVy5jb21tZW50X3JlZ2lvbl9ldmVudAorICBVbmNvbW1lbnQgUmVnaW9uICMgZUVXLnVuY29tbWVudF9yZWdpb25fZXZlbnQKKyAgVGFiaWZ5IFJlZ2lvbiAgICAjIGVFVy50YWJpZnlfcmVnaW9uX2V2ZW50CisgIFVudGFiaWZ5IFJlZ2lvbiAgIyBlRVcudW50YWJpZnlfcmVnaW9uX2V2ZW50CisgIFRvZ2dsZSBUYWJzICAgICAgIyBlRVcudG9nZ2xlX3RhYnNfZXZlbnQKKyAgTmV3IEluZGVudCBXaWR0aCAjIGVFVy5jaGFuZ2VfaW5kZW50d2lkdGhfZXZlbnQKKyAgRm9ybWF0IFBhcmFncmFwaCAjIHBhcmFncmFwaCBleHRlbnNpb24KICAgLS0tCi0gIFN0cmlwIHRhaWxpbmcgd2hpdGVzcGFjZSAgIyBSc3RyaXBFeHRlbnNpb24gZXh0ZW5zaW9uCisgIFN0cmlwIHRhaWxpbmcgd2hpdGVzcGFjZSAgIyByc3RyaXAgZXh0ZW5zaW9uCiAKIFJ1biAoRWRpdG9yIG9ubHkpCi0gIFB5dGhvbiBTaGVsbCAgIyBQeVNoZWxsCisgIFB5dGhvbiBTaGVsbCAgICAgIyBweXNoZWxsCiAgIC0tLQotICBDaGVjayBNb2R1bGUgICMgU2NyaXB0QmluZGluZwotICBSdW4gTW9kdWxlICAjIFNjcmlwdEJpbmRpbmcKKyAgQ2hlY2sgTW9kdWxlICAgICAjIHJ1bnNjcmlwdAorICBSdW4gTW9kdWxlICAgICAgICMgcnVuc2NyaXB0CiAKIE9wdGlvbnMKLSAgQ29uZmlndXJlIElETEUgICMgY29uZmlnRGlhbG9nCisgIENvbmZpZ3VyZSBJRExFICAgIyBlRVcuY29uZmlnX2RpYWxvZywgY29uZmlnZGlhbG9nCiAgICAgKHRhYnMgaW4gdGhlIGRpYWxvZykKLSAgICBGb250IHRhYiAgIyBvbmZpZy1tYWluLmRlZgotICAgIEhpZ2hsaWdodCB0YWIgICMgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2csIGNvbmZpZy1oaWdobGlnaHQuZGVmCi0gICAgS2V5cyB0YWIgICMga2V5YmluZGluZ0RpYWxvZywgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2csIG9uZmlnLWtldXMuZGVmCi0gICAgR2VuZXJhbCB0YWIgICMgY29uZmlnSGVscFNvdXJjZUVkaXQsIGNvbmZpZy1tYWluLmRlZgotICBDb25maWd1cmUgRXh0ZW5zaW9ucyAgIyBjb25maWdEaWFsb2cKLSAgICBYeXogdGFiICAjIHh5ei5weSwgY29uZmlnLWV4dGVuc2lvbnMuZGVmCisgICAgRm9udCB0YWIgICAgICAgIyBjb25maWctbWFpbi5kZWYKKyAgICBIaWdobGlnaHQgdGFiICAjIHF1ZXJ5LCBjb25maWctaGlnaGxpZ2h0LmRlZgorICAgIEtleXMgdGFiICAgICAgICMgcXVlcnksIGNvbmZpZ19rZXksIGNvbmZpZ19rZXlzLmRlZgorICAgIEdlbmVyYWwgdGFiICAgICMgY29uZmlnX2hlbHAsIGNvbmZpZy1tYWluLmRlZgorICAgIEV4dGVuc2lvbnMgdGFiICMgY29uZmlnLWV4dGVuc2lvbnMuZGVmLCBjb3JyZXNwb25kaW5nIC5weQogICAtLS0KLSAgQ29kZSBDb250ZXh0IChlZGl0b3Igb25seSkgICMgQ29kZUNvbnRleHQgZXh0ZW5zaW9uCisgIENvZGUgQ29udGV4dCAoZWQpIyBjb2RlY29udGV4dCBleHRlbnNpb24KIAogV2luZG93Ci0gIFpvb21oZWlnaHQgICMgWm9vbUhlaWdodCBleHRlbnNpb24KKyAgWm9vbWhlaWdodCAgICAgICAjIHpvb21oZWlnaHQgZXh0ZW5zaW9uCiAgIC0tLQotICA8b3BlbiB3aW5kb3dzPiAgIyBXaW5kb3dMaXN0CisgIDxvcGVuIHdpbmRvd3M+ICAgIyB3aW5kb3dzCiAKIEhlbHAKLSAgQWJvdXQgSURMRSAgIyBhYm91dERpYWxvZworICBBYm91dCBJRExFICAgICAgICMgZUVXLmFib3V0X2RpYWxvZywgaGVscF9hYm91dC5BYm91dERpYWxvZyAKICAgLS0tCi0gIElETEUgSGVscCAgIyBoZWxwCi0gIFB5dGhvbiBEb2MKLSAgVHVydGxlIERlbW8KKyAgSURMRSBIZWxwICAgICAgICAjIGVFVy5oZWxwX2RpYWxvZywgaGVscHNob3dfaWRsZWhlbHAKKyAgUHl0aG9uIERvYyAgICAgICAjIGVFVy5weXRob25fZG9jcworICBUdXJ0bGUgRGVtbyAgICAgICMgZUVXLm9wZW5fdHVydGxlX2RlbW8KICAgLS0tCiAgIDxvdGhlciBoZWxwIHNvdXJjZXM+CiAKIDxDb250ZXh0IE1lbnU+IChyaWdodCBjbGljaykKLURlZmluZWQgaW4gRWRpdG9yV2luZG93LCBQeVNoZWxsLCBPdXRwdXQKLSAgIEN1dAotICAgQ29weQotICAgUGFzdGUKLSAgIC0tLQotICAgR28gdG8gZmlsZS9saW5lIChzaGVsbCBhbmQgb3V0cHV0IG9ubHkpCi0gICBTZXQgQnJlYWtwb2ludCAoZWRpdG9yIG9ubHkpCi0gICBDbGVhciBCcmVha3BvaW50IChlZGl0b3Igb25seSkKLSBEZWZpbmVkIGluIERlYnVnZ2VyCi0gICBHbyB0byBzb3VyY2UgbGluZQotICAgU2hvdyBzdGFjayBmcmFtZQorICBEZWZpbmVkIGluIGVkaXRvciwgUHlTaGVscHlzaGVsbHV0CisgICAgQ3V0CisgICAgQ29weQorICAgIFBhc3RlCisgICAgLS0tCisgICAgR28gdG8gZmlsZS9saW5lIChzaGVsbCBhbmQgb3V0cHV0IG9ubHkpCisgICAgU2V0IEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQorICAgIENsZWFyIEJyZWFrcG9pbnQgKGVkaXRvciBvbmx5KQorICBEZWZpbmVkIGluIGRlYnVnZ2VyCisgICAgR28gdG8gc291cmNlIGxpbmUKKyAgICBTaG93IHN0YWNrIGZyYW1lCisKKzxObyBtZW51PgorQ2VudGVyIEluc2VydCAgICAgICMgZUVXLmNlbnRlcl9pbnNlcnRfZXZlbnQKKworICAKK0NPREUgU1RZTEUgLS0gR2VuZXJhbGx5IFBFUCA4LgorCitpbXBvcnQKKy0tLS0tLQorUHV0IGltcG9ydCBhdCB0aGUgdG9wLCB1bmxlc3MgdGhlcmUgaXMgYSBnb29kIHJlYXNvbiBvdGhlcndpc2UuCitQRVAgOCBzYXlzIHRvIGdyb3VwIHN0ZGxpYiwgM3JkLXBhcnR5IGRlcGVuZGVuY2llcywgYW5kIHBhY2thZ2UgaW1wb3J0cy4KK0ZvciBpZGxlbGliLCB0aGUgZ3JvdXBzIGFyZSBnZW5lcmFsIHN0ZGxpYiwgdGtpbnRlciwgYW5kIGlkbGVsaWIuCitTb3J0IG1vZHVsZXMgd2l0aGluIGVhY2ggZ3JvdXAsIGV4Y2VwdCB0aGF0IHRraW50ZXIudHRrIGZvbGxvd3MgdGtpbnRlci4KK1NvcnQgJ2Zyb20gaWRsZWxpYiBpbXBvcnQgbW9kMScgYW5kICdmcm9tIGlkbGVsaWIubW9kMiBpbXBvcnQgb2JqZWN0JwordG9nZXRoZXIgYnkgbW9kdWxlLCBpZ25vcmluZyB3aXRoaW4gbW9kdWxlIG9iamVjdHMuCitQdXQgJ2ltcG9ydCBfX21haW5fXycgYWZ0ZXIgb3RoZXIgaWRsZWxpYiBpbXBvcnRzLgorCitJbXBvcnRzIG9ubHkgbmVlZGVkIGZvciB0ZXN0aW5nIGFyZSBwdXQgbm90IGF0IHRoZSB0b3AgYnV0IGluIGFuCitodGVzdCBmdW5jdGlvbiBkZWYgb3IgImlmIF9fbmFtZV9fID09ICdfX21haW5fXyciIGNsYXVzZS4KKworV2l0aGluIG1vZHVsZSBpbXBvcnRzIGxpa2UgImZyb20gaWRsZWxpYi5tb2QgaW1wb3J0IGNsYXNzIiBtYXkgY2F1c2UKK2NpcmN1bGFyIGltcG9ydHMgdG8gZGVhZGxvY2suICBFdmVuIHdpdGhvdXQgdGhpcywgY2lyY3VsYXIgaW1wb3J0cyBtYXkKK3JlcXVpcmUgYXQgbGVhc3Qgb25lIG9mIHRoZSBpbXBvcnRzIHRvIGJlIGRlbGF5ZWQgdW50aWwgYSBmdW5jdGlvbiBjYWxsLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19pbml0X18ucHkgYi9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQppbmRleCA3MTFmNjFiLi43OTFkZGVhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQorKysgYi9MaWIvaWRsZWxpYi9fX2luaXRfXy5weQpAQCAtMSw4ICsxLDEwIEBACiAiIiJUaGUgaWRsZWxpYiBwYWNrYWdlIGltcGxlbWVudHMgdGhlIElkbGUgYXBwbGljYXRpb24uCiAKIElkbGUgaW5jbHVkZXMgYW4gaW50ZXJhY3RpdmUgc2hlbGwgYW5kIGVkaXRvci4KK1N0YXJ0aW5nIHdpdGggUHl0aG9uIDMuNiwgSURMRSByZXF1aXJlcyB0Y2wvdGsgOC41IG9yIGxhdGVyLgogVXNlIHRoZSBmaWxlcyBuYW1lZCBpZGxlLiogdG8gc3RhcnQgSWRsZS4KIAogVGhlIG90aGVyIGZpbGVzIGFyZSBwcml2YXRlIGltcGxlbWVudGF0aW9ucy4gIFRoZWlyIGRldGFpbHMgYXJlIHN1YmplY3QgdG8KIGNoYW5nZS4gIFNlZSBQRVAgNDM0IGZvciBtb3JlLiAgSW1wb3J0IHRoZW0gYXQgeW91ciBvd24gcmlzay4KICIiIgordGVzdGluZyA9IEZhbHNlICAjIFNldCBUcnVlIGJ5IHRlc3QudGVzdF9pZGxlLgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvX19tYWluX18ucHkgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQppbmRleCAyZWRmNWY3Li42MzQ5ZWM3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9fX21haW5fXy5weQorKysgYi9MaWIvaWRsZWxpYi9fX21haW5fXy5weQpAQCAtMyw2ICszLDYgQEAKIAogUnVuIElETEUgYXMgcHl0aG9uIC1tIGlkbGVsaWIKICIiIgotaW1wb3J0IGlkbGVsaWIuUHlTaGVsbAotaWRsZWxpYi5QeVNoZWxsLm1haW4oKQoraW1wb3J0IGlkbGVsaWIucHlzaGVsbAoraWRsZWxpYi5weXNoZWxsLm1haW4oKQogIyBUaGlzIGZpbGUgZG9lcyBub3Qgd29yayBmb3IgMi43OyBTZWUgaXNzdWUgMjQyMTIuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvQ29tcGxldGUucHkgYi9MaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKc2ltaWxhcml0eSBpbmRleCA4NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvY29tcGxldGUucHkKaW5kZXggZmYwODVkNS4uMWU0NGZhNSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlLnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZS5weQpAQCAtMSwyOSArMSwzMCBAQAotIiIiQXV0b0NvbXBsZXRlLnB5IC0gQW4gSURMRSBleHRlbnNpb24gZm9yIGF1dG9tYXRpY2FsbHkgY29tcGxldGluZyBuYW1lcy4KKyIiImF1dG9jb21wbGV0ZS5weSAtIEFuIElETEUgZXh0ZW5zaW9uIGZvciBhdXRvbWF0aWNhbGx5IGNvbXBsZXRpbmcgbmFtZXMuCiAKIFRoaXMgZXh0ZW5zaW9uIGNhbiBjb21wbGV0ZSBlaXRoZXIgYXR0cmlidXRlIG5hbWVzIG9yIGZpbGUgbmFtZXMuIEl0IGNhbiBwb3AKIGEgd2luZG93IHdpdGggYWxsIGF2YWlsYWJsZSBuYW1lcywgZm9yIHRoZSB1c2VyIHRvIHNlbGVjdCBmcm9tLgogIiIiCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBzdHJpbmcKK2ltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi0KLSMgVGhpcyBzdHJpbmcgaW5jbHVkZXMgYWxsIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKLUlEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCi0KLSMgVGhlc2UgY29uc3RhbnRzIHJlcHJlc2VudCB0aGUgdHdvIGRpZmZlcmVudCB0eXBlcyBvZiBjb21wbGV0aW9ucworIyBUaGVzZSBjb25zdGFudHMgcmVwcmVzZW50IHRoZSB0d28gZGlmZmVyZW50IHR5cGVzIG9mIGNvbXBsZXRpb25zLgorIyBUaGV5IG11c3QgYmUgZGVmaW5lZCBoZXJlIHNvIGF1dG9jb21wbGVfdyBjYW4gaW1wb3J0IHRoZW0uCiBDT01QTEVURV9BVFRSSUJVVEVTLCBDT01QTEVURV9GSUxFUyA9IHJhbmdlKDEsIDIrMSkKIAotZnJvbSBpZGxlbGliIGltcG9ydCBBdXRvQ29tcGxldGVXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKLQorZnJvbSBpZGxlbGliIGltcG9ydCBhdXRvY29tcGxldGVfdworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKIGltcG9ydCBfX21haW5fXwogCisjIFRoaXMgc3RyaW5nIGluY2x1ZGVzIGFsbCBjaGFycyB0aGF0IG1heSBiZSBpbiBhbiBpZGVudGlmaWVyLgorIyBUT0RPIFVwZGF0ZSB0aGlzIGhlcmUgYW5kIGVsc2V3aGVyZS4KK0lEX0NIQVJTID0gc3RyaW5nLmFzY2lpX2xldHRlcnMgKyBzdHJpbmcuZGlnaXRzICsgIl8iCisKIFNFUFMgPSBvcy5zZXAKIGlmIG9zLmFsdHNlcDogICMgZS5nLiAnLycgb24gV2luZG93cy4uLgogICAgIFNFUFMgKz0gb3MuYWx0c2VwCiAKKwogY2xhc3MgQXV0b0NvbXBsZXRlOgogCiAgICAgbWVudWRlZnMgPSBbCkBAIC0zNywxOSArMzgsMTcgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luPU5vbmUpOgogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCi0gICAgICAgIGlmIGVkaXR3aW4gaXMgTm9uZTogICMgc3VicHJvY2VzcyBhbmQgdGVzdAotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAotICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyA9IE5vbmUKLQotICAgICAgICAjIGlkIG9mIGRlbGF5ZWQgY2FsbCwgYW5kIHRoZSBpbmRleCBvZiB0aGUgdGV4dCBpbnNlcnQgd2hlbiB0aGUgZGVsYXllZAotICAgICAgICAjIGNhbGwgd2FzIGlzc3VlZC4gSWYgX2RlbGF5ZWRfY29tcGxldGlvbl9pZCBpcyBOb25lLCB0aGVyZSBpcyBubwotICAgICAgICAjIGRlbGF5ZWQgY2FsbC4KLSAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQotICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBOb25lCisgICAgICAgIGlmIGVkaXR3aW4gaXMgbm90IE5vbmU6ICAjIG5vdCBpbiBzdWJwcm9jZXNzIG9yIHRlc3QKKyAgICAgICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAorICAgICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBOb25lCisgICAgICAgICAgICAjIGlkIG9mIGRlbGF5ZWQgY2FsbCwgYW5kIHRoZSBpbmRleCBvZiB0aGUgdGV4dCBpbnNlcnQgd2hlbgorICAgICAgICAgICAgIyB0aGUgZGVsYXllZCBjYWxsIHdhcyBpc3N1ZWQuIElmIF9kZWxheWVkX2NvbXBsZXRpb25faWQgaXMKKyAgICAgICAgICAgICMgTm9uZSwgdGhlcmUgaXMgbm8gZGVsYXllZCBjYWxsLgorICAgICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQorICAgICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4ID0gTm9uZQogCiAgICAgZGVmIF9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coc2VsZik6Ci0gICAgICAgIHJldHVybiBBdXRvQ29tcGxldGVXaW5kb3cuQXV0b0NvbXBsZXRlV2luZG93KHNlbGYudGV4dCkKKyAgICAgICAgcmV0dXJuIGF1dG9jb21wbGV0ZV93LkF1dG9Db21wbGV0ZVdpbmRvdyhzZWxmLnRleHQpCiAKICAgICBkZWYgX3JlbW92ZV9hdXRvY29tcGxldGVfd2luZG93KHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICBpZiBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdzoKQEAgLTgwLDE2ICs3OSwxNyBAQAogICAgICAgICBvcGVuIGEgY29tcGxldGlvbiBsaXN0IGFmdGVyIHRoYXQgKGlmIHRoZXJlIGlzIG1vcmUgdGhhbiBvbmUKICAgICAgICAgY29tcGxldGlvbikKICAgICAgICAgIiIiCi0gICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpIGFuZCBldmVudC5tY19zdGF0ZToKLSAgICAgICAgICAgICMgQSBtb2RpZmllciB3YXMgcHJlc3NlZCBhbG9uZyB3aXRoIHRoZSB0YWIsIGNvbnRpbnVlIGFzIHVzdWFsLgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGhhc2F0dHIoZXZlbnQsICJtY19zdGF0ZSIpIGFuZCBldmVudC5tY19zdGF0ZSBvclwKKyAgICAgICAgICAgICAgICBub3Qgc2VsZi50ZXh0LmdldCgiaW5zZXJ0IGxpbmVzdGFydCIsICJpbnNlcnQiKS5zdHJpcCgpOgorICAgICAgICAgICAgIyBBIG1vZGlmaWVyIHdhcyBwcmVzc2VkIGFsb25nIHdpdGggdGhlIHRhYiBvcgorICAgICAgICAgICAgIyB0aGVyZSBpcyBvbmx5IHByZXZpb3VzIHdoaXRlc3BhY2Ugb24gdGhpcyBsaW5lLCBzbyB0YWIuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBpZiBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdyBhbmQgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cuaXNfYWN0aXZlKCk6CiAgICAgICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZXdpbmRvdy5jb21wbGV0ZSgpCiAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgb3BlbmVkID0gc2VsZi5vcGVuX2NvbXBsZXRpb25zKEZhbHNlLCBUcnVlLCBUcnVlKQotICAgICAgICAgICAgaWYgb3BlbmVkOgotICAgICAgICAgICAgICAgIHJldHVybiAiYnJlYWsiCisgICAgICAgICAgICByZXR1cm4gImJyZWFrIiBpZiBvcGVuZWQgZWxzZSBOb25lCiAKICAgICBkZWYgX29wZW5fY29tcGxldGlvbnNfbGF0ZXIoc2VsZiwgKmFyZ3MpOgogICAgICAgICBzZWxmLl9kZWxheWVkX2NvbXBsZXRpb25faW5kZXggPSBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpCkBAIC0xMDEsOSArMTAxLDggQEAKIAogICAgIGRlZiBfZGVsYXllZF9vcGVuX2NvbXBsZXRpb25zKHNlbGYsICphcmdzKToKICAgICAgICAgc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2lkID0gTm9uZQotICAgICAgICBpZiBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpICE9IHNlbGYuX2RlbGF5ZWRfY29tcGxldGlvbl9pbmRleDoKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLm9wZW5fY29tcGxldGlvbnMoKmFyZ3MpCisgICAgICAgIGlmIHNlbGYudGV4dC5pbmRleCgiaW5zZXJ0IikgPT0gc2VsZi5fZGVsYXllZF9jb21wbGV0aW9uX2luZGV4OgorICAgICAgICAgICAgc2VsZi5vcGVuX2NvbXBsZXRpb25zKCphcmdzKQogCiAgICAgZGVmIG9wZW5fY29tcGxldGlvbnMoc2VsZiwgZXZhbGZ1bmNzLCBjb21wbGV0ZSwgdXNlcldhbnRzV2luLCBtb2RlPU5vbmUpOgogICAgICAgICAiIiJGaW5kIHRoZSBjb21wbGV0aW9ucyBhbmQgY3JlYXRlIHRoZSBBdXRvQ29tcGxldGVXaW5kb3cuCkBAIC0xNDgsMTcgKzE0NywxNyBAQAogICAgICAgICAgICAgICAgIGNvbXBfd2hhdCA9IGhwLmdldF9leHByZXNzaW9uKCkKICAgICAgICAgICAgICAgICBpZiBub3QgY29tcF93aGF0IG9yIFwKICAgICAgICAgICAgICAgICAgICAobm90IGV2YWxmdW5jcyBhbmQgY29tcF93aGF0LmZpbmQoJygnKSAhPSAtMSk6Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBjb21wX3doYXQgPSAiIgogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgICAgIGlmIGNvbXBsZXRlIGFuZCBub3QgY29tcF93aGF0IGFuZCBub3QgY29tcF9zdGFydDoKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgY29tcF9saXN0cyA9IHNlbGYuZmV0Y2hfY29tcGxldGlvbnMoY29tcF93aGF0LCBtb2RlKQogICAgICAgICBpZiBub3QgY29tcF9saXN0c1swXToKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKICAgICAgICAgc2VsZi5hdXRvY29tcGxldGV3aW5kb3cgPSBzZWxmLl9tYWtlX2F1dG9jb21wbGV0ZV93aW5kb3coKQogICAgICAgICByZXR1cm4gbm90IHNlbGYuYXV0b2NvbXBsZXRld2luZG93LnNob3dfd2luZG93KAogICAgICAgICAgICAgICAgIGNvbXBfbGlzdHMsICJpbnNlcnQtJWRjIiAlIGxlbihjb21wX3N0YXJ0KSwKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weSBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0F1dG9Db21wbGV0ZVdpbmRvdy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvYXV0b2NvbXBsZXRlX3cucHkKaW5kZXggMmVlNjg3OC4uMzM3NGM2ZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQXV0b0NvbXBsZXRlV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2F1dG9jb21wbGV0ZV93LnB5CkBAIC0xLDkgKzEsMTEgQEAKICIiIgotQW4gYXV0by1jb21wbGV0aW9uIHdpbmRvdyBmb3IgSURMRSwgdXNlZCBieSB0aGUgQXV0b0NvbXBsZXRlIGV4dGVuc2lvbgorQW4gYXV0by1jb21wbGV0aW9uIHdpbmRvdyBmb3IgSURMRSwgdXNlZCBieSB0aGUgYXV0b2NvbXBsZXRlIGV4dGVuc2lvbgogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5NdWx0aUNhbGwgaW1wb3J0IE1DX1NISUZUCi1mcm9tIGlkbGVsaWIuQXV0b0NvbXBsZXRlIGltcG9ydCBDT01QTEVURV9GSUxFUywgQ09NUExFVEVfQVRUUklCVVRFUworZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCisKK2Zyb20gaWRsZWxpYi5hdXRvY29tcGxldGUgaW1wb3J0IENPTVBMRVRFX0ZJTEVTLCBDT01QTEVURV9BVFRSSUJVVEVTCitmcm9tIGlkbGVsaWIubXVsdGljYWxsIGltcG9ydCBNQ19TSElGVAogCiBISURFX1ZJUlRVQUxfRVZFTlRfTkFNRSA9ICI8PGF1dG9jb21wbGV0ZXdpbmRvdy1oaWRlPj4iCiBISURFX1NFUVVFTkNFUyA9ICgiPEZvY3VzT3V0PiIsICI8QnV0dG9uUHJlc3M+IikKQEAgLTM0LDggKzM2LDggQEAKICAgICAgICAgc2VsZi5jb21wbGV0aW9ucyA9IE5vbmUKICAgICAgICAgIyBBIGxpc3Qgd2l0aCBtb3JlIGNvbXBsZXRpb25zLCBvciBOb25lCiAgICAgICAgIHNlbGYubW9yZWNvbXBsZXRpb25zID0gTm9uZQotICAgICAgICAjIFRoZSBjb21wbGV0aW9uIG1vZGUuIEVpdGhlciBBdXRvQ29tcGxldGUuQ09NUExFVEVfQVRUUklCVVRFUyBvcgotICAgICAgICAjIEF1dG9Db21wbGV0ZS5DT01QTEVURV9GSUxFUworICAgICAgICAjIFRoZSBjb21wbGV0aW9uIG1vZGUuIEVpdGhlciBhdXRvY29tcGxldGUuQ09NUExFVEVfQVRUUklCVVRFUyBvcgorICAgICAgICAjIGF1dG9jb21wbGV0ZS5DT01QTEVURV9GSUxFUwogICAgICAgICBzZWxmLm1vZGUgPSBOb25lCiAgICAgICAgICMgVGhlIGN1cnJlbnQgY29tcGxldGlvbiBzdGFydCwgb24gdGhlIHRleHQgYm94IChhIHN0cmluZykKICAgICAgICAgc2VsZi5zdGFydCA9IE5vbmUKQEAgLTIxNSw2ICsyMTcsNyBAQAogICAgICAgICBzZWxmLndpbmNvbmZpZ2lkID0gYWN3LmJpbmQoV0lOQ09ORklHX1NFUVVFTkNFLCBzZWxmLndpbmNvbmZpZ19ldmVudCkKICAgICAgICAgc2VsZi5kb3VibGVjbGlja2lkID0gbGlzdGJveC5iaW5kKERPVUJMRUNMSUNLX1NFUVVFTkNFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kb3VibGVjbGlja19ldmVudCkKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiB3aW5jb25maWdfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKQEAgLTIzOCwxNiArMjQxLDE0IEBACiAgICAgICAgIGFjdy53bV9nZW9tZXRyeSgiKyVkKyVkIiAlIChuZXdfeCwgbmV3X3kpKQogCiAgICAgZGVmIGhpZGVfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKKyAgICAgICAgaWYgc2VsZi5pc19hY3RpdmUoKToKKyAgICAgICAgICAgIHNlbGYuaGlkZV93aW5kb3coKQogCiAgICAgZGVmIGxpc3RzZWxlY3RfZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBpZiBub3Qgc2VsZi5pc19hY3RpdmUoKToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBzZWxmLnVzZXJ3YW50c3dpbmRvdyA9IFRydWUKLSAgICAgICAgY3Vyc2VsID0gaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkKLSAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuY29tcGxldGlvbnNbY3Vyc2VsXSkKKyAgICAgICAgaWYgc2VsZi5pc19hY3RpdmUoKToKKyAgICAgICAgICAgIHNlbGYudXNlcndhbnRzd2luZG93ID0gVHJ1ZQorICAgICAgICAgICAgY3Vyc2VsID0gaW50KHNlbGYubGlzdGJveC5jdXJzZWxlY3Rpb24oKVswXSkKKyAgICAgICAgICAgIHNlbGYuX2NoYW5nZV9zdGFydChzZWxmLmNvbXBsZXRpb25zW2N1cnNlbF0pCiAKICAgICBkZWYgZG91YmxlY2xpY2tfZXZlbnQoc2VsZiwgZXZlbnQpOgogICAgICAgICAjIFB1dCB0aGUgc2VsZWN0ZWQgY29tcGxldGlvbiBpbiB0aGUgdGV4dCwgYW5kIGNsb3NlIHRoZSBsaXN0CkBAIC0yNTcsNyArMjU4LDcgQEAKIAogICAgIGRlZiBrZXlwcmVzc19ldmVudChzZWxmLCBldmVudCk6CiAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2FjdGl2ZSgpOgotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICByZXR1cm4gTm9uZQogICAgICAgICBrZXlzeW0gPSBldmVudC5rZXlzeW0KICAgICAgICAgaWYgaGFzYXR0cihldmVudCwgIm1jX3N0YXRlIik6CiAgICAgICAgICAgICBzdGF0ZSA9IGV2ZW50Lm1jX3N0YXRlCkBAIC0yODIsNyArMjgzLDcgQEAKICAgICAgICAgICAgICAgICAjIGtleXN5bSA9PSAiQmFja1NwYWNlIgogICAgICAgICAgICAgICAgIGlmIGxlbihzZWxmLnN0YXJ0KSA9PSAwOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgICAgICAgICAgc2VsZi5fY2hhbmdlX3N0YXJ0KHNlbGYuc3RhcnRbOi0xXSkKICAgICAgICAgICAgIHNlbGYubGFzdHR5cGVkc3RhcnQgPSBzZWxmLnN0YXJ0CiAgICAgICAgICAgICBzZWxmLmxpc3Rib3guc2VsZWN0X2NsZWFyKDAsIGludChzZWxmLmxpc3Rib3guY3Vyc2VsZWN0aW9uKClbMF0pKQpAQCAtMjkyLDcgKzI5Myw3IEBACiAKICAgICAgICAgZWxpZiBrZXlzeW0gPT0gIlJldHVybiI6CiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIChzZWxmLm1vZGUgPT0gQ09NUExFVEVfQVRUUklCVVRFUyBhbmQga2V5c3ltIGluCiAgICAgICAgICAgICAgICgicGVyaW9kIiwgInNwYWNlIiwgInBhcmVubGVmdCIsICJwYXJlbnJpZ2h0IiwgImJyYWNrZXRsZWZ0IiwKQEAgLTMwOCw3ICszMDksNyBAQAogICAgICAgICAgICAgICAgYW5kIChzZWxmLm1vZGUgPT0gQ09NUExFVEVfQVRUUklCVVRFUyBvciBzZWxmLnN0YXJ0KToKICAgICAgICAgICAgICAgICBzZWxmLl9jaGFuZ2Vfc3RhcnQoc2VsZi5jb21wbGV0aW9uc1tjdXJzZWxdKQogICAgICAgICAgICAgc2VsZi5oaWRlX3dpbmRvdygpCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBrZXlzeW0gaW4gKCJIb21lIiwgIkVuZCIsICJQcmlvciIsICJOZXh0IiwgIlVwIiwgIkRvd24iKSBhbmQgXAogICAgICAgICAgICAgIG5vdCBzdGF0ZToKQEAgLTM0OSwxMiArMzUwLDEyIEBACiAgICAgICAgICAgICAgICAgIyBmaXJzdCB0YWI7IGxldCBBdXRvQ29tcGxldGUgaGFuZGxlIHRoZSBjb21wbGV0aW9uCiAgICAgICAgICAgICAgICAgc2VsZi51c2Vyd2FudHN3aW5kb3cgPSBUcnVlCiAgICAgICAgICAgICAgICAgc2VsZi5sYXN0a2V5X3dhc190YWIgPSBUcnVlCi0gICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgICAgICBlbGlmIGFueShzIGluIGtleXN5bSBmb3IgcyBpbiAoIlNoaWZ0IiwgIkNvbnRyb2wiLCAiQWx0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJNZXRhIiwgIkNvbW1hbmQiLCAiT3B0aW9uIikpOgogICAgICAgICAgICAgIyBBIG1vZGlmaWVyIGtleSwgc28gaWdub3JlCi0gICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIHJldHVybiBOb25lCiAKICAgICAgICAgZWxpZiBldmVudC5jaGFyIGFuZCBldmVudC5jaGFyID49ICcgJzoKICAgICAgICAgICAgICMgUmVndWxhciBjaGFyYWN0ZXIgd2l0aCBhIG5vbi1sZW5ndGgtMSBrZXljb2RlCkBAIC0zNjgsNyArMzY5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgICMgVW5rbm93biBldmVudCwgY2xvc2UgdGhlIHdpbmRvdyBhbmQgbGV0IGl0IHRocm91Z2guCiAgICAgICAgICAgICBzZWxmLmhpZGVfd2luZG93KCkKLSAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAogICAgIGRlZiBrZXlyZWxlYXNlX2V2ZW50KHNlbGYsIGV2ZW50KToKICAgICAgICAgaWYgbm90IHNlbGYuaXNfYWN0aXZlKCk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5IGIvTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9BdXRvRXhwYW5kLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9hdXRvZXhwYW5kLnB5CmluZGV4IDcwNTkwNTQuLjZiNDZiZWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0F1dG9FeHBhbmQucHkKKysrIGIvTGliL2lkbGVsaWIvYXV0b2V4cGFuZC5weQpAQCAtMTIsOCArMTIsOCBAQAogCiBUaGlzIGlzIGFuIGV4dGVuc2lvbiBmaWxlIGFuZCB0aGVyZSBpcyBvbmx5IG9uZSBpbnN0YW5jZSBvZiBBdXRvRXhwYW5kLgogJycnCi1pbXBvcnQgc3RyaW5nCiBpbXBvcnQgcmUKK2ltcG9ydCBzdHJpbmcKIAogIyMjJCBldmVudCA8PGV4cGFuZC13b3JkPj4KICMjIyQgd2luIDxBbHQtc2xhc2g+CkBAIC0zMSw2ICszMSw3IEBACiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZWRpdHdpbik6CiAgICAgICAgIHNlbGYudGV4dCA9IGVkaXR3aW4udGV4dAorICAgICAgICBzZWxmLmJlbGwgPSBzZWxmLnRleHQuYmVsbAogICAgICAgICBzZWxmLnN0YXRlID0gTm9uZQogCiAgICAgZGVmIGV4cGFuZF93b3JkX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTQ2LDE0ICs0NywxNCBAQAogICAgICAgICAgICAgICAgIHdvcmRzID0gc2VsZi5nZXR3b3JkcygpCiAgICAgICAgICAgICAgICAgaW5kZXggPSAwCiAgICAgICAgIGlmIG5vdCB3b3JkczoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkKKyAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4gImJyZWFrIgogICAgICAgICB3b3JkID0gc2VsZi5nZXRwcmV2d29yZCgpCiAgICAgICAgIHNlbGYudGV4dC5kZWxldGUoImluc2VydCAtICVkIGNoYXJzIiAlIGxlbih3b3JkKSwgImluc2VydCIpCiAgICAgICAgIG5ld3dvcmQgPSB3b3Jkc1tpbmRleF0KICAgICAgICAgaW5kZXggPSAoaW5kZXggKyAxKSAlIGxlbih3b3JkcykKICAgICAgICAgaWYgaW5kZXggPT0gMDoKLSAgICAgICAgICAgIHNlbGYudGV4dC5iZWxsKCkgICAgICAgICAgICAjIFdhcm4gd2UgY3ljbGVkIGFyb3VuZAorICAgICAgICAgICAgc2VsZi5iZWxsKCkgICAgICAgICAgICAjIFdhcm4gd2UgY3ljbGVkIGFyb3VuZAogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCJpbnNlcnQiLCBuZXd3b3JkKQogICAgICAgICBjdXJpbnNlcnQgPSBzZWxmLnRleHQuaW5kZXgoImluc2VydCIpCiAgICAgICAgIGN1cmxpbmUgPSBzZWxmLnRleHQuZ2V0KCJpbnNlcnQgbGluZXN0YXJ0IiwgImluc2VydCBsaW5lZW5kIikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2Jyb3dzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQ2xhc3NCcm93c2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9icm93c2VyLnB5CmluZGV4IGQwOWM1MmYuLmVhMDU2MzggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NsYXNzQnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9icm93c2VyLnB5CkBAIC0xMSwxNiArMTEsMTYgQEAKICIiIgogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKIGltcG9ydCBweWNsYnIKK2ltcG9ydCBzeXMKIAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCi1mcm9tIGlkbGVsaWIuV2luZG93TGlzdCBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKLWZyb20gaWRsZWxpYi5UcmVlV2lkZ2V0IGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwKK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlTm9kZSwgVHJlZUl0ZW0sIFNjcm9sbGVkQ2FudmFzCitmcm9tIGlkbGVsaWIud2luZG93cyBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKIAogZmlsZV9vcGVuID0gTm9uZSAgIyBNZXRob2QuLi5JdGVtIGFuZCBDbGFzcy4uLkl0ZW0gdXNlIHRoaXMuCi0jIE5vcm1hbGx5IFB5U2hlbGwuZmxpc3Qub3BlbiwgYnV0IHRoZXJlIGlzIG5vIFB5U2hlbGwuZmxpc3QgZm9yIGh0ZXN0LgorIyBOb3JtYWxseSBweXNoZWxsLmZsaXN0Lm9wZW4sIGJ1dCB0aGVyZSBpcyBubyBweXNoZWxsLmZsaXN0IGZvciBodGVzdC4KIAogY2xhc3MgQ2xhc3NCcm93c2VyOgogCkBAIC0zMiw3ICszMiw3IEBACiAgICAgICAgICIiIgogICAgICAgICBnbG9iYWwgZmlsZV9vcGVuCiAgICAgICAgIGlmIG5vdCBfaHRlc3Q6Ci0gICAgICAgICAgICBmaWxlX29wZW4gPSBQeVNoZWxsLmZsaXN0Lm9wZW4KKyAgICAgICAgICAgIGZpbGVfb3BlbiA9IHB5c2hlbGwuZmxpc3Qub3BlbgogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIHNlbGYuZmlsZSA9IG9zLnBhdGguam9pbihwYXRoWzBdLCBzZWxmLm5hbWUgKyAiLnB5IikKICAgICAgICAgc2VsZi5faHRlc3QgPSBfaHRlc3QKQEAgLTk1LDcgKzk1LDcgQEAKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2VsZi5maWxlKToKICAgICAgICAgICAgIHJldHVybgotICAgICAgICBQeVNoZWxsLmZsaXN0Lm9wZW4oc2VsZi5maWxlKQorICAgICAgICBweXNoZWxsLmZsaXN0Lm9wZW4oc2VsZi5maWxlKQogCiAgICAgZGVmIElzRXhwYW5kYWJsZShzZWxmKToKICAgICAgICAgcmV0dXJuIG9zLnBhdGgubm9ybWNhc2Uoc2VsZi5maWxlWy0zOl0pID09ICIucHkiCkBAIC0yMjYsNyArMjI2LDcgQEAKICAgICAgICAgICAgIGZpbGUgPSBzeXMuYXJndlswXQogICAgIGRpciwgZmlsZSA9IG9zLnBhdGguc3BsaXQoZmlsZSkKICAgICBuYW1lID0gb3MucGF0aC5zcGxpdGV4dChmaWxlKVswXQotICAgIGZsaXN0ID0gUHlTaGVsbC5QeVNoZWxsRmlsZUxpc3QocGFyZW50KQorICAgIGZsaXN0ID0gcHlzaGVsbC5QeVNoZWxsRmlsZUxpc3QocGFyZW50KQogICAgIGdsb2JhbCBmaWxlX29wZW4KICAgICBmaWxlX29wZW4gPSBmbGlzdC5vcGVuCiAgICAgQ2xhc3NCcm93c2VyKGZsaXN0LCBuYW1lLCBbZGlyXSwgX2h0ZXN0PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5IGIvTGliL2lkbGVsaWIvY2FsbHRpcF93LnB5CnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NhbGxUaXBXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2NhbGx0aXBfdy5weQppbmRleCA5ZWVjMTc1Li5jNzM2MWQxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DYWxsVGlwV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2NhbGx0aXBfdy5weQpAQCAtMSw3ICsxLDcgQEAKICIiIkEgQ2FsbFRpcCB3aW5kb3cgY2xhc3MgZm9yIFRraW50ZXIvSURMRS4KIAotQWZ0ZXIgVG9vbFRpcC5weSwgd2hpY2ggdXNlcyBpZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKLVVzZWQgYnkgdGhlIENhbGxUaXBzIElETEUgZXh0ZW5zaW9uLgorQWZ0ZXIgdG9vbHRpcC5weSwgd2hpY2ggdXNlcyBpZGVhcyBnbGVhbmVkIGZyb20gUHlTb2wKK1VzZWQgYnkgdGhlIGNhbGx0aXBzIElETEUgZXh0ZW5zaW9uLgogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBMYWJlbCwgTEVGVCwgU09MSUQsIFRjbEVycm9yCiAKQEAgLTEzOCw4ICsxMzgsOCBAQAogCiAgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHRvcC50aXRsZSgiVGVzdCBjYWxsdGlwcyIpCi0gICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlIChwYXJlbnQud2luZm9fcm9vdHgoKSArIDIwMCwKLSAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlICh4ICsgMjUwLCB5ICsgMTc1KSkKICAgICB0ZXh0ID0gVGV4dCh0b3ApCiAgICAgdGV4dC5wYWNrKHNpZGU9TEVGVCwgZmlsbD1CT1RILCBleHBhbmQ9MSkKICAgICB0ZXh0Lmluc2VydCgiaW5zZXJ0IiwgInN0cmluZy5zcGxpdCIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9DYWxsVGlwcy5weSBiL0xpYi9pZGxlbGliL2NhbGx0aXBzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0NhbGxUaXBzLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jYWxsdGlwcy5weQppbmRleCA4MWJkNWYxLi40YzVhZWEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9DYWxsVGlwcy5weQorKysgYi9MaWIvaWRsZWxpYi9jYWxsdGlwcy5weQpAQCAtMSwxOSArMSwxOSBAQAotIiIiQ2FsbFRpcHMucHkgLSBBbiBJRExFIEV4dGVuc2lvbiB0byBKb2cgWW91ciBNZW1vcnkKKyIiImNhbGx0aXBzLnB5IC0gQW4gSURMRSBFeHRlbnNpb24gdG8gSm9nIFlvdXIgTWVtb3J5CiAKIENhbGwgVGlwcyBhcmUgZmxvYXRpbmcgd2luZG93cyB3aGljaCBkaXNwbGF5IGZ1bmN0aW9uLCBjbGFzcywgYW5kIG1ldGhvZAogcGFyYW1ldGVyIGFuZCBkb2NzdHJpbmcgaW5mb3JtYXRpb24gd2hlbiB5b3UgdHlwZSBhbiBvcGVuaW5nIHBhcmVudGhlc2lzLCBhbmQKIHdoaWNoIGRpc2FwcGVhciB3aGVuIHlvdSB0eXBlIGEgY2xvc2luZyBwYXJlbnRoZXNpcy4KIAogIiIiCi1pbXBvcnQgX19tYWluX18KIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHR5cGVzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcFdpbmRvdwotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgorZnJvbSBpZGxlbGliIGltcG9ydCBjYWxsdGlwX3cKK2Zyb20gaWRsZWxpYi5oeXBlcnBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2ltcG9ydCBfX21haW5fXwogCiBjbGFzcyBDYWxsVGlwczoKIApAQCAtMzcsNyArMzcsNyBAQAogCiAgICAgZGVmIF9tYWtlX3RrX2NhbGx0aXBfd2luZG93KHNlbGYpOgogICAgICAgICAjIFNlZSBfX2luaXRfXyBmb3IgdXNhZ2UKLSAgICAgICAgcmV0dXJuIENhbGxUaXBXaW5kb3cuQ2FsbFRpcChzZWxmLnRleHQpCisgICAgICAgIHJldHVybiBjYWxsdGlwX3cuQ2FsbFRpcChzZWxmLnRleHQpCiAKICAgICBkZWYgX3JlbW92ZV9jYWxsdGlwX3dpbmRvdyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2FsbHRpcDoKQEAgLTEyMCw3ICsxMjAsNyBAQAogX01BWF9DT0xTID0gODUKIF9NQVhfTElORVMgPSA1ICAjIGVub3VnaCBmb3IgYnl0ZXMKIF9JTkRFTlQgPSAnICcqNCAgIyBmb3Igd3JhcHBlZCBzaWduYXR1cmVzCi1fZmlyc3RfcGFyYW0gPSByZS5jb21waWxlKCcoPzw9XCgpXHcqXCw/XHMqJykKK19maXJzdF9wYXJhbSA9IHJlLmNvbXBpbGUocicoPzw9XCgpXHcqXCw/XHMqJykKIF9kZWZhdWx0X2NhbGxhYmxlX2FyZ3NwZWMgPSAiU2VlIHNvdXJjZSBvciBkb2MiCiAKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkgYi9MaWIvaWRsZWxpYi9jb2RlY29udGV4dC5weQpzaW1pbGFyaXR5IGluZGV4IDk3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Db2RlQ29udGV4dC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKaW5kZXggN2QyNWFkYS4uZjI1ZTFiMyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvQ29kZUNvbnRleHQucHkKKysrIGIvTGliL2lkbGVsaWIvY29kZWNvbnRleHQucHkKQEAgLTEsMTkgKzEsMjEgQEAKLSIiIkNvZGVDb250ZXh0IC0gRXh0ZW5zaW9uIHRvIGRpc3BsYXkgdGhlIGJsb2NrIGNvbnRleHQgYWJvdmUgdGhlIGVkaXQgd2luZG93CisiIiJjb2RlY29udGV4dCAtIEV4dGVuc2lvbiB0byBkaXNwbGF5IHRoZSBibG9jayBjb250ZXh0IGFib3ZlIHRoZSBlZGl0IHdpbmRvdwogCiBPbmNlIGNvZGUgaGFzIHNjcm9sbGVkIG9mZiB0aGUgdG9wIG9mIGEgd2luZG93LCBpdCBjYW4gYmUgZGlmZmljdWx0IHRvCiBkZXRlcm1pbmUgd2hpY2ggYmxvY2sgeW91IGFyZSBpbi4gIFRoaXMgZXh0ZW5zaW9uIGltcGxlbWVudHMgYSBwYW5lIGF0IHRoZSB0b3AKIG9mIGVhY2ggSURMRSBlZGl0IHdpbmRvdyB3aGljaCBwcm92aWRlcyBibG9jayBzdHJ1Y3R1cmUgaGludHMuICBUaGVzZSBoaW50cyBhcmUKIHRoZSBsaW5lcyB3aGljaCBjb250YWluIHRoZSBibG9jayBvcGVuaW5nIGtleXdvcmRzLCBlLmcuICdpZicsIGZvciB0aGUKIGVuY2xvc2luZyBibG9jay4gIFRoZSBudW1iZXIgb2YgaGludCBsaW5lcyBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBudW1saW5lcwotdmFyaWFibGUgaW4gdGhlIENvZGVDb250ZXh0IHNlY3Rpb24gb2YgY29uZmlnLWV4dGVuc2lvbnMuZGVmLiBMaW5lcyB3aGljaCBkbwordmFyaWFibGUgaW4gdGhlIGNvZGVjb250ZXh0IHNlY3Rpb24gb2YgY29uZmlnLWV4dGVuc2lvbnMuZGVmLiBMaW5lcyB3aGljaCBkbwogbm90IG9wZW4gYmxvY2tzIGFyZSBub3Qgc2hvd24gaW4gdGhlIGNvbnRleHQgaGludHMgcGFuZS4KIAogIiIiCi1pbXBvcnQgdGtpbnRlcgotZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgVE9QLCBMRUZULCBYLCBXLCBTVU5LRU4KIGltcG9ydCByZQogZnJvbSBzeXMgaW1wb3J0IG1heHNpemUgYXMgSU5GSU5JVFkKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorCitpbXBvcnQgdGtpbnRlcgorZnJvbSB0a2ludGVyLmNvbnN0YW50cyBpbXBvcnQgVE9QLCBMRUZULCBYLCBXLCBTVU5LRU4KKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKIAogQkxPQ0tPUEVORVJTID0geyJjbGFzcyIsICJkZWYiLCAiZWxpZiIsICJlbHNlIiwgImV4Y2VwdCIsICJmaW5hbGx5IiwgImZvciIsCiAgICAgICAgICAgICAgICAgICAgICJpZiIsICJ0cnkiLCAid2hpbGUiLCAid2l0aCJ9CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2NvbG9yaXplci5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9Db2xvckRlbGVnYXRvci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29sb3JpemVyLnB5CmluZGV4IDAyZWFjNDcuLjczMTBiYjIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0NvbG9yRGVsZWdhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2NvbG9yaXplci5weQpAQCAtMSwxMCArMSwxMCBAQAotaW1wb3J0IHRpbWUKLWltcG9ydCByZQotaW1wb3J0IGtleXdvcmQKIGltcG9ydCBidWlsdGlucwotZnJvbSB0a2ludGVyIGltcG9ydCBUa1ZlcnNpb24KLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitpbXBvcnQga2V5d29yZAoraW1wb3J0IHJlCitpbXBvcnQgdGltZQorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCiAKIERFQlVHID0gRmFsc2UKIApAQCAtNDksMTEgKzQ5LDggQEAKICAgICAgICAgaW5zZXJ0YmFja2dyb3VuZD1jdXJzb3JfY29sb3IsCiAgICAgICAgIHNlbGVjdGZvcmVncm91bmQ9c2VsZWN0X2NvbG9yc1snZm9yZWdyb3VuZCddLAogICAgICAgICBzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSwKLSAgICAgICAgKQotICAgIGlmIFRrVmVyc2lvbiA+PSA4LjU6Ci0gICAgICAgIHRleHQuY29uZmlnKAotICAgICAgICAgICAgaW5hY3RpdmVzZWxlY3RiYWNrZ3JvdW5kPXNlbGVjdF9jb2xvcnNbJ2JhY2tncm91bmQnXSkKLQorICAgICAgICBpbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQ9c2VsZWN0X2NvbG9yc1snYmFja2dyb3VuZCddLCAgIyBuZXcgaW4gOC41CisgICAgKQogCiBjbGFzcyBDb2xvckRlbGVnYXRvcihEZWxlZ2F0b3IpOgogCkBAIC0yNTksMTIgKzI1NiwxMiBAQAogCiBkZWYgX2NvbG9yX2RlbGVnYXRvcihwYXJlbnQpOiAgIyBodGVzdCAjCiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAotICAgIGZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCisgICAgZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKIAogICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRlc3QgQ29sb3JEZWxlZ2F0b3IiKQotICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAocGFyZW50LndpbmZvX3Jvb3R4KCkgKyAyMDAsCi0gICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiMjAweDEwMCslZCslZCIgJSAoeCArIDI1MCwgeSArIDE3NSkpCiAgICAgc291cmNlID0gImlmIHNvbWVuYW1lOiB4ID0gJ2FiYycgIyBjb21tZW50XG5wcmludFxuIgogICAgIHRleHQgPSBUZXh0KHRvcCwgYmFja2dyb3VuZD0id2hpdGUiKQogICAgIHRleHQucGFjayhleHBhbmQ9MSwgZmlsbD0iYm90aCIpCkBAIC0yNzcsNSArMjc0LDkgQEAKICAgICBwLmluc2VydGZpbHRlcihkKQogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfY29sb3JpemVyJywKKyAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9jb2xvcl9kZWxlZ2F0b3IpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYgYi9MaWIvaWRsZWxpYi9jb25maWcta2V5cy5kZWYKaW5kZXggM2JmY2I2OS4uNjQ3ODhmOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnLWtleXMuZGVmCisrKyBiL0xpYi9pZGxlbGliL2NvbmZpZy1rZXlzLmRlZgpAQCAtMTA5LDYgKzEwOSw1NyBAQAogZGVsLXdvcmQtbGVmdD08QWx0LUtleS1CYWNrU3BhY2U+CiBkZWwtd29yZC1yaWdodD08QWx0LUtleS1kPgogCitbSURMRSBNb2Rlcm4gVW5peF0KK2NvcHkgPSA8Q29udHJvbC1TaGlmdC1LZXktQz4gPENvbnRyb2wtS2V5LUluc2VydD4KK2N1dCA9IDxDb250cm9sLUtleS14PiA8U2hpZnQtS2V5LURlbGV0ZT4KK3Bhc3RlID0gPENvbnRyb2wtS2V5LXY+IDxTaGlmdC1LZXktSW5zZXJ0PgorYmVnaW5uaW5nLW9mLWxpbmUgPSA8S2V5LUhvbWU+CitjZW50ZXItaW5zZXJ0ID0gPENvbnRyb2wtS2V5LWw+CitjbG9zZS1hbGwtd2luZG93cyA9IDxDb250cm9sLUtleS1xPgorY2xvc2Utd2luZG93ID0gPENvbnRyb2wtS2V5LXc+IDxDb250cm9sLVNoaWZ0LUtleS1XPgorZG8tbm90aGluZyA9IDxDb250cm9sLUtleS1GMTI+CitlbmQtb2YtZmlsZSA9IDxDb250cm9sLUtleS1kPgoraGlzdG9yeS1uZXh0ID0gPEFsdC1LZXktbj4gPE1ldGEtS2V5LW4+CitoaXN0b3J5LXByZXZpb3VzID0gPEFsdC1LZXktcD4gPE1ldGEtS2V5LXA+CitpbnRlcnJ1cHQtZXhlY3V0aW9uID0gPENvbnRyb2wtS2V5LWM+Cit2aWV3LXJlc3RhcnQgPSA8S2V5LUY2PgorcmVzdGFydC1zaGVsbCA9IDxDb250cm9sLUtleS1GNj4KK29wZW4tY2xhc3MtYnJvd3NlciA9IDxDb250cm9sLUtleS1iPgorb3Blbi1tb2R1bGUgPSA8Q29udHJvbC1LZXktbT4KK29wZW4tbmV3LXdpbmRvdyA9IDxDb250cm9sLUtleS1uPgorb3Blbi13aW5kb3ctZnJvbS1maWxlID0gPENvbnRyb2wtS2V5LW8+CitwbGFpbi1uZXdsaW5lLWFuZC1pbmRlbnQgPSA8Q29udHJvbC1LZXktaj4KK3ByaW50LXdpbmRvdyA9IDxDb250cm9sLUtleS1wPgorcHl0aG9uLWNvbnRleHQtaGVscCA9IDxTaGlmdC1LZXktRjE+CitweXRob24tZG9jcyA9IDxLZXktRjE+CityZWRvID0gPENvbnRyb2wtU2hpZnQtS2V5LVo+CityZW1vdmUtc2VsZWN0aW9uID0gPEtleS1Fc2NhcGU+CitzYXZlLWNvcHktb2Ytd2luZG93LWFzLWZpbGUgPSA8QWx0LVNoaWZ0LUtleS1TPgorc2F2ZS13aW5kb3ctYXMtZmlsZSA9IDxDb250cm9sLVNoaWZ0LUtleS1TPgorc2F2ZS13aW5kb3cgPSA8Q29udHJvbC1LZXktcz4KK3NlbGVjdC1hbGwgPSA8Q29udHJvbC1LZXktYT4KK3RvZ2dsZS1hdXRvLWNvbG9yaW5nID0gPENvbnRyb2wtS2V5LXNsYXNoPgordW5kbyA9IDxDb250cm9sLUtleS16PgorZmluZCA9IDxDb250cm9sLUtleS1mPgorZmluZC1hZ2FpbiA9IDxLZXktRjM+CitmaW5kLWluLWZpbGVzID0gPENvbnRyb2wtU2hpZnQtS2V5LWY+CitmaW5kLXNlbGVjdGlvbiA9IDxDb250cm9sLUtleS1oPgorcmVwbGFjZSA9IDxDb250cm9sLUtleS1yPgorZ290by1saW5lID0gPENvbnRyb2wtS2V5LWc+CitzbWFydC1iYWNrc3BhY2UgPSA8S2V5LUJhY2tTcGFjZT4KK25ld2xpbmUtYW5kLWluZGVudCA9IDxLZXktUmV0dXJuPiA8S2V5LUtQX0VudGVyPgorc21hcnQtaW5kZW50ID0gPEtleS1UYWI+CitpbmRlbnQtcmVnaW9uID0gPENvbnRyb2wtS2V5LWJyYWNrZXRyaWdodD4KK2RlZGVudC1yZWdpb24gPSA8Q29udHJvbC1LZXktYnJhY2tldGxlZnQ+Citjb21tZW50LXJlZ2lvbiA9IDxDb250cm9sLUtleS1kPgordW5jb21tZW50LXJlZ2lvbiA9IDxDb250cm9sLVNoaWZ0LUtleS1EPgordGFiaWZ5LXJlZ2lvbiA9IDxBbHQtS2V5LTU+Cit1bnRhYmlmeS1yZWdpb24gPSA8QWx0LUtleS02PgordG9nZ2xlLXRhYnMgPSA8Q29udHJvbC1LZXktVD4KK2NoYW5nZS1pbmRlbnR3aWR0aCA9IDxBbHQtS2V5LXU+CitkZWwtd29yZC1sZWZ0ID0gPENvbnRyb2wtS2V5LUJhY2tTcGFjZT4KK2RlbC13b3JkLXJpZ2h0ID0gPENvbnRyb2wtS2V5LURlbGV0ZT4KKwogW0lETEUgQ2xhc3NpYyBNYWNdCiBjb3B5PTxDb21tYW5kLUtleS1jPgogY3V0PTxDb21tYW5kLUtleS14PgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmIGIvTGliL2lkbGVsaWIvY29uZmlnLW1haW4uZGVmCmluZGV4IDhlYmJjMWIuLmE2MWJiYTcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZy1tYWluLmRlZgorKysgYi9MaWIvaWRsZWxpYi9jb25maWctbWFpbi5kZWYKQEAgLTcwLDcgKzcwLDkgQEAKIAogW0tleXNdCiBkZWZhdWx0PSAxCi1uYW1lPSBJRExFIENsYXNzaWMgV2luZG93cworbmFtZT0KK25hbWUyPQorIyBuYW1lMiBzZXQgaW4gdXNlciBjb25maWctbWFpbi5jZmcgZm9yIGtleXMgYWRkZWQgYWZ0ZXIgMjAxNiBKdWx5IDEKIAogW0hpc3RvcnldCiBjeWNsaWM9MQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weSBiL0xpYi9pZGxlbGliL2NvbmZpZy5weQpzaW1pbGFyaXR5IGluZGV4IDg3JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9jb25maWdIYW5kbGVyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWcucHkKaW5kZXggODk1NDQ4OC4uMTBmZTNiYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGFuZGxlci5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWcucHkKQEAgLTcsNyArNyw3IEBACiBhbmQgaWYgYSBmaWxlIGJlY29tZXMgZW1wdHksIGl0IHdpbGwgYmUgZGVsZXRlZC4KIAogVGhlIGNvbnRlbnRzIG9mIHRoZSB1c2VyIGZpbGVzIG1heSBiZSBhbHRlcmVkIHVzaW5nIHRoZSBPcHRpb25zL0NvbmZpZ3VyZSBJRExFCi1tZW51IHRvIGFjY2VzcyB0aGUgY29uZmlndXJhdGlvbiBHVUkgKGNvbmZpZ0RpYWxvZy5weSksIG9yIG1hbnVhbGx5LgorbWVudSB0byBhY2Nlc3MgdGhlIGNvbmZpZ3VyYXRpb24gR1VJIChjb25maWdkaWFsb2cucHkpLCBvciBtYW51YWxseS4KIAogVGhyb3VnaG91dCB0aGlzIG1vZHVsZSB0aGVyZSBpcyBhbiBlbXBoYXNpcyBvbiByZXR1cm5pbmcgdXNlYWJsZSBkZWZhdWx0cwogd2hlbiBhIHByb2JsZW0gb2NjdXJzIGluIHJldHVybmluZyBhIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uIHZhbHVlIGJhY2sgdG8KQEAgLTE4LDExICsxOCwxMCBAQAogIiIiCiAjIFRPRE9zIGFkZGVkIE9jdCAyMDE0LCB0anIKIAorZnJvbSBjb25maWdwYXJzZXIgaW1wb3J0IENvbmZpZ1BhcnNlcgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiAKLWZyb20gY29uZmlncGFyc2VyIGltcG9ydCBDb25maWdQYXJzZXIKLWZyb20gdGtpbnRlciBpbXBvcnQgVGtWZXJzaW9uCiBmcm9tIHRraW50ZXIuZm9udCBpbXBvcnQgRm9udCwgbmFtZXRvZm9udAogCiBjbGFzcyBJbnZhbGlkQ29uZmlnVHlwZShFeGNlcHRpb24pOiBwYXNzCkBAIC0yMzAsMTUgKzIyOSwxMiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlPXR5cGUsIHJhdz1yYXcpCiAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgotICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldE9wdGlvbiAtXG4nCisgICAgICAgICAgICB3YXJuaW5nID0gKCdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJwogICAgICAgICAgICAgICAgICAgICAgICAnIGludmFsaWQgJXIgdmFsdWUgZm9yIGNvbmZpZ3VyYXRpb24gb3B0aW9uICVyXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgZnJvbSBzZWN0aW9uICVyOiAlcicgJQogICAgICAgICAgICAgICAgICAgICAgICAodHlwZSwgb3B0aW9uLCBzZWN0aW9uLAogICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnVzZXJDZmdbY29uZmlnVHlwZV0uR2V0KHNlY3Rpb24sIG9wdGlvbiwgcmF3PXJhdykpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgc2VsZi5kZWZhdWx0Q2ZnW2NvbmZpZ1R5cGVdLmhhc19vcHRpb24oc2VjdGlvbixvcHRpb24pOgogICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmF1bHRDZmdbY29uZmlnVHlwZV0uR2V0KApAQCAtMjQ3LDE1ICsyNDMsMTIgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgI3JldHVybmluZyBkZWZhdWx0LCBwcmludCB3YXJuaW5nCiAgICAgICAgIGlmIHdhcm5fb25fZGVmYXVsdDoKLSAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIucHkgLSBJZGxlQ29uZi5HZXRPcHRpb24gLVxuJworICAgICAgICAgICAgd2FybmluZyA9ICgnXG4gV2FybmluZzogY29uZmlnLnB5IC0gSWRsZUNvbmYuR2V0T3B0aW9uIC1cbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcgY29uZmlndXJhdGlvbiBvcHRpb24gJXJcbicKICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIHNlY3Rpb24gJXIuXG4nCiAgICAgICAgICAgICAgICAgICAgICAgICcgcmV0dXJuaW5nIGRlZmF1bHQgdmFsdWU6ICVyJyAlCiAgICAgICAgICAgICAgICAgICAgICAgIChvcHRpb24sIHNlY3Rpb24sIGRlZmF1bHQpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgotICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsIGNvbmZpZ1R5cGUsIHNlY3Rpb24sIG9wdGlvbikKICAgICAgICAgcmV0dXJuIGRlZmF1bHQKIAogICAgIGRlZiBTZXRPcHRpb24oc2VsZiwgY29uZmlnVHlwZSwgc2VjdGlvbiwgb3B0aW9uLCB2YWx1ZSk6CkBAIC0zNTgsNTIgKzM1MSw3MyBAQAogICAgICAgICBmb3IgZWxlbWVudCBpbiB0aGVtZToKICAgICAgICAgICAgIGlmIG5vdCBjZmdQYXJzZXIuaGFzX29wdGlvbih0aGVtZU5hbWUsIGVsZW1lbnQpOgogICAgICAgICAgICAgICAgICMgUHJpbnQgd2FybmluZyB0aGF0IHdpbGwgcmV0dXJuIGEgZGVmYXVsdCBjb2xvcgotICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZ0hhbmRsZXIuSWRsZUNvbmYuR2V0VGhlbWVEaWN0JworICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoJ1xuIFdhcm5pbmc6IGNvbmZpZy5JZGxlQ29uZi5HZXRUaGVtZURpY3QnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIC1cbiBwcm9ibGVtIHJldHJpZXZpbmcgdGhlbWUgZWxlbWVudCAlcicKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBmcm9tIHRoZW1lICVyLlxuJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCBjb2xvcjogJXInICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlbGVtZW50LCB0aGVtZU5hbWUsIHRoZW1lW2VsZW1lbnRdKSkKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHByaW50KHdhcm5pbmcsIGZpbGU9c3lzLnN0ZGVycikKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdoaWdobGlnaHQnLCB0aGVtZU5hbWUsIGVsZW1lbnQpCiAgICAgICAgICAgICB0aGVtZVtlbGVtZW50XSA9IGNmZ1BhcnNlci5HZXQoCiAgICAgICAgICAgICAgICAgICAgIHRoZW1lTmFtZSwgZWxlbWVudCwgZGVmYXVsdD10aGVtZVtlbGVtZW50XSkKICAgICAgICAgcmV0dXJuIHRoZW1lCiAKICAgICBkZWYgQ3VycmVudFRoZW1lKHNlbGYpOgotICAgICAgICAiIiJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgdGV4dCBjb2xvciB0aGVtZS4KKyAgICAgICAgIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSB0ZXh0IGNvbG9yIHRoZW1lLiIKKyAgICAgICAgcmV0dXJuIHNlbGYuY3VycmVudF9jb2xvcnNfYW5kX2tleXMoJ1RoZW1lJykKIAotICAgICAgICBpZGxlbGliLmNvbmZpZy1tYWluLmRlZiBpbmNsdWRlcyB0aGlzIHNlY3Rpb24KKyAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6CisgICAgICAgICIiIlJldHVybiB0aGUgbmFtZSBvZiB0aGUgY3VycmVudGx5IGFjdGl2ZSBrZXkgc2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cygnS2V5cycpCisKKyAgICBkZWYgY3VycmVudF9jb2xvcnNfYW5kX2tleXMoc2VsZiwgc2VjdGlvbik6CisgICAgICAgICIiIlJldHVybiB0aGUgY3VycmVudGx5IGFjdGl2ZSBuYW1lIGZvciBUaGVtZSBvciBLZXlzIHNlY3Rpb24uCisKKyAgICAgICAgaWRsZWxpYi5jb25maWctbWFpbi5kZWYgKCdkZWZhdWx0JykgaW5jbHVkZXMgdGhlc2Ugc2VjdGlvbnMKKwogICAgICAgICBbVGhlbWVdCiAgICAgICAgIGRlZmF1bHQ9IDEKICAgICAgICAgbmFtZT0gSURMRSBDbGFzc2ljCiAgICAgICAgIG5hbWUyPQotICAgICAgICAjIG5hbWUyIHNldCBpbiB1c2VyIGNvbmZpZy1tYWluLmNmZyBmb3IgdGhlbWVzIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEKIAotICAgICAgICBJdGVtIG5hbWUyIGlzIG5lZWRlZCBiZWNhdXNlIHNldHRpbmcgbmFtZSB0byBhIG5ldyBidWlsdGluCi0gICAgICAgIGNhdXNlcyBvbGRlciBJRExFcyB0byBkaXNwbGF5IG11bHRpcGxlIGVycm9yIG1lc3NhZ2VzIG9yIHF1aXQuCisgICAgICAgIFtLZXlzXQorICAgICAgICBkZWZhdWx0PSAxCisgICAgICAgIG5hbWU9CisgICAgICAgIG5hbWUyPQorCisgICAgICAgIEl0ZW0gJ25hbWUyJywgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKCdkZWZhdWx0JykgdGhlbWVzIGFuZCBrZXlzCisgICAgICAgIGFkZGVkIGFmdGVyIDIwMTUgT2N0IDEgYW5kIDIwMTYgSnVseSAxLiAgVGhpcyBrbHVkZ2UgaXMgbmVlZGVkCisgICAgICAgIGJlY2F1c2Ugc2V0dGluZyAnbmFtZScgdG8gYSBidWlsdGluIG5vdCBkZWZpbmVkIGluIG9sZGVyIElETEVzCisgICAgICAgIHRvIGRpc3BsYXkgbXVsdGlwbGUgZXJyb3IgbWVzc2FnZXMgb3IgcXVpdC4KICAgICAgICAgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjUzMTMuCi0gICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsIG5hbWUyIHRha2VzIHByZWNlZGVuY2Ugb3ZlciBuYW1lLAotICAgICAgICB3aGlsZSBvbGRlciBJRExFcyB3aWxsIGp1c3QgdXNlIG5hbWUuCisgICAgICAgIFdoZW4gZGVmYXVsdCA9IFRydWUsICduYW1lMicgdGFrZXMgcHJlY2VkZW5jZSBvdmVyICduYW1lJywKKyAgICAgICAgd2hpbGUgb2xkZXIgSURMRXMgd2lsbCBqdXN0IHVzZSBuYW1lLiAgV2hlbiBkZWZhdWx0ID0gRmFsc2UsCisgICAgICAgICduYW1lMicgbWF5IHN0aWxsIGJlIHNldCwgYnV0IGl0IGlzIGlnbm9yZWQuCiAgICAgICAgICIiIgotICAgICAgICBkZWZhdWx0ID0gc2VsZi5HZXRPcHRpb24oJ21haW4nLCAnVGhlbWUnLCAnZGVmYXVsdCcsCisgICAgICAgIGNmZ25hbWUgPSAnaGlnaGxpZ2h0JyBpZiBzZWN0aW9uID09ICdUaGVtZScgZWxzZSAna2V5cycKKyAgICAgICAgZGVmYXVsdCA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ2RlZmF1bHQnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcsIGRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgbmFtZSA9ICcnCiAgICAgICAgIGlmIGRlZmF1bHQ6Ci0gICAgICAgICAgICB0aGVtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgJ1RoZW1lJywgJ25hbWUyJywgZGVmYXVsdD0nJykKLSAgICAgICAgaWYgZGVmYXVsdCBhbmQgbm90IHRoZW1lIG9yIG5vdCBkZWZhdWx0OgotICAgICAgICAgICAgdGhlbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJywgZGVmYXVsdD0nJykKLSAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKLSAgICAgICAgaWYgc291cmNlWydoaWdobGlnaHQnXS5oYXNfc2VjdGlvbih0aGVtZSk6Ci0gICAgICAgICAgICByZXR1cm4gdGhlbWUKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLkdldE9wdGlvbignbWFpbicsIHNlY3Rpb24sICduYW1lMicsIGRlZmF1bHQ9JycpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgbmFtZSA9IHNlbGYuR2V0T3B0aW9uKCdtYWluJywgc2VjdGlvbiwgJ25hbWUnLCBkZWZhdWx0PScnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgc291cmNlID0gc2VsZi5kZWZhdWx0Q2ZnIGlmIGRlZmF1bHQgZWxzZSBzZWxmLnVzZXJDZmcKKyAgICAgICAgICAgIGlmIHNvdXJjZVtjZmduYW1lXS5oYXNfc2VjdGlvbihuYW1lKToKKyAgICAgICAgICAgICAgICByZXR1cm4gbmFtZQorICAgICAgICByZXR1cm4gIklETEUgQ2xhc3NpYyIgaWYgc2VjdGlvbiA9PSAnVGhlbWUnIGVsc2Ugc2VsZi5kZWZhdWx0X2tleXMoKQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBkZWZhdWx0X2tleXMoKToKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKKyAgICAgICAgICAgIHJldHVybiAnSURMRSBDbGFzc2ljIFdpbmRvd3MnCisgICAgICAgIGVsaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgcmV0dXJuICdJRExFIENsYXNzaWMgT1NYJwogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuICJJRExFIENsYXNzaWMiCisgICAgICAgICAgICByZXR1cm4gJ0lETEUgTW9kZXJuIFVuaXgnCiAKLSAgICBkZWYgQ3VycmVudEtleXMoc2VsZik6Ci0gICAgICAgICJSZXR1cm4gdGhlIG5hbWUgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUga2V5IHNldC4iCi0gICAgICAgIHJldHVybiBzZWxmLkdldE9wdGlvbignbWFpbicsICdLZXlzJywgJ25hbWUnLCBkZWZhdWx0PScnKQotCi0gICAgZGVmIEdldEV4dGVuc2lvbnMoc2VsZiwgYWN0aXZlX29ubHk9VHJ1ZSwgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgorICAgIGRlZiBHZXRFeHRlbnNpb25zKHNlbGYsIGFjdGl2ZV9vbmx5PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgZWRpdG9yX29ubHk9RmFsc2UsIHNoZWxsX29ubHk9RmFsc2UpOgogICAgICAgICAiIiJSZXR1cm4gZXh0ZW5zaW9ucyBpbiBkZWZhdWx0IGFuZCB1c2VyIGNvbmZpZy1leHRlbnNpb25zIGZpbGVzLgogCiAgICAgICAgIElmIGFjdGl2ZV9vbmx5IFRydWUsIG9ubHkgcmV0dXJuIGFjdGl2ZSAoZW5hYmxlZCkgZXh0ZW5zaW9ucwpAQCAtNDIzLDcgKzQzNyw3IEBACiAgICAgICAgICAgICAgICAgaWYgc2VsZi5HZXRPcHRpb24oJ2V4dGVuc2lvbnMnLCBleHRuLCAnZW5hYmxlJywgZGVmYXVsdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGU9J2Jvb2wnKToKICAgICAgICAgICAgICAgICAgICAgI3RoZSBleHRlbnNpb24gaXMgZW5hYmxlZAotICAgICAgICAgICAgICAgICAgICBpZiBlZGl0b3Jfb25seSBvciBzaGVsbF9vbmx5OiAgIyBUT0RPIGlmIGJvdGgsIGNvbnRyYWRpY3RvcnkKKyAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHkgb3Igc2hlbGxfb25seTogICMgVE9ETyBib3RoIFRydWUgY29udHJhZGljdAogICAgICAgICAgICAgICAgICAgICAgICAgaWYgZWRpdG9yX29ubHk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uID0gImVuYWJsZV9lZGl0b3IiCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtNTI4LDcgKzU0Miw4IEBACiAgICAgICAgIGV2ZW50U3RyIC0gdmlydHVhbCBldmVudCwgaW5jbHVkaW5nIGJyYWNrZXRzLCBhcyBpbiAnPDxldmVudD4+Jy4KICAgICAgICAgIiIiCiAgICAgICAgIGV2ZW50TmFtZSA9IGV2ZW50U3RyWzI6LTJdICN0cmltIG9mZiB0aGUgYW5nbGUgYnJhY2tldHMKLSAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0T3B0aW9uKCdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnROYW1lLCBkZWZhdWx0PScnKS5zcGxpdCgpCisgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldE9wdGlvbigna2V5cycsIGtleVNldE5hbWUsIGV2ZW50TmFtZSwgZGVmYXVsdD0nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5fb25fZGVmYXVsdD1GYWxzZSkuc3BsaXQoKQogICAgICAgICByZXR1cm4gYmluZGluZwogCiAgICAgZGVmIEdldEN1cnJlbnRLZXlTZXQoc2VsZik6CkBAIC02MzksMjAgKzY1NCwyOCBAQAogICAgICAgICAgICAgJzw8ZGVsLXdvcmQtcmlnaHQ+Pic6IFsnPENvbnRyb2wtS2V5LURlbGV0ZT4nXQogICAgICAgICAgICAgfQogICAgICAgICBpZiBrZXlTZXROYW1lOgotICAgICAgICAgICAgZm9yIGV2ZW50IGluIGtleUJpbmRpbmdzOgotICAgICAgICAgICAgICAgIGJpbmRpbmcgPSBzZWxmLkdldEtleUJpbmRpbmcoa2V5U2V0TmFtZSwgZXZlbnQpCi0gICAgICAgICAgICAgICAgaWYgYmluZGluZzoKLSAgICAgICAgICAgICAgICAgICAga2V5QmluZGluZ3NbZXZlbnRdID0gYmluZGluZwotICAgICAgICAgICAgICAgIGVsc2U6ICN3ZSBhcmUgZ29pbmcgdG8gcmV0dXJuIGEgZGVmYXVsdCwgcHJpbnQgd2FybmluZwotICAgICAgICAgICAgICAgICAgICB3YXJuaW5nPSgnXG4gV2FybmluZzogY29uZmlnSGFuZGxlci5weSAtIElkbGVDb25mLkdldENvcmVLZXlzJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgLVxuIHByb2JsZW0gcmV0cmlldmluZyBrZXkgYmluZGluZyBmb3IgZXZlbnQgJXInCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuIGZyb20ga2V5IHNldCAlci5cbicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnIHJldHVybmluZyBkZWZhdWx0IHZhbHVlOiAlcicgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmVudCwga2V5U2V0TmFtZSwga2V5QmluZGluZ3NbZXZlbnRdKSkKLSAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQod2FybmluZywgZmlsZT1zeXMuc3RkZXJyKQotICAgICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgIGlmIG5vdCAoc2VsZi51c2VyQ2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkgb3IKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWZhdWx0Q2ZnWydrZXlzJ10uaGFzX3NlY3Rpb24oa2V5U2V0TmFtZSkpOgorICAgICAgICAgICAgICAgIHdhcm5pbmcgPSAoCisgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICcga2V5IHNldCAlciBpcyBub3QgZGVmaW5lZCwgdXNpbmcgZGVmYXVsdCBiaW5kaW5ncy4nICUKKyAgICAgICAgICAgICAgICAgICAgKGtleVNldE5hbWUsKQorICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBfd2Fybih3YXJuaW5nLCAna2V5cycsIGtleVNldE5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZvciBldmVudCBpbiBrZXlCaW5kaW5nczoKKyAgICAgICAgICAgICAgICAgICAgYmluZGluZyA9IHNlbGYuR2V0S2V5QmluZGluZyhrZXlTZXROYW1lLCBldmVudCkKKyAgICAgICAgICAgICAgICAgICAgaWYgYmluZGluZzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGtleUJpbmRpbmdzW2V2ZW50XSA9IGJpbmRpbmcKKyAgICAgICAgICAgICAgICAgICAgZWxzZTogI3dlIGFyZSBnb2luZyB0byByZXR1cm4gYSBkZWZhdWx0LCBwcmludCB3YXJuaW5nCisgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nID0gKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdcbiBXYXJuaW5nOiBjb25maWcucHkgLSBJZGxlQ29uZi5HZXRDb3JlS2V5cyAtXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBwcm9ibGVtIHJldHJpZXZpbmcga2V5IGJpbmRpbmcgZm9yIGV2ZW50ICVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyBmcm9tIGtleSBzZXQgJXIuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyByZXR1cm5pbmcgZGVmYXVsdCB2YWx1ZTogJXInICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZXZlbnQsIGtleVNldE5hbWUsIGtleUJpbmRpbmdzW2V2ZW50XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICAgICAgIF93YXJuKHdhcm5pbmcsICdrZXlzJywga2V5U2V0TmFtZSwgZXZlbnQpCiAgICAgICAgIHJldHVybiBrZXlCaW5kaW5ncwogCiAgICAgZGVmIEdldEV4dHJhSGVscFNvdXJjZUxpc3Qoc2VsZiwgY29uZmlnU2V0KToKQEAgLTcxMywxNiArNzM2LDEzIEBACiAgICAgICAgIGJvbGQgPSBzZWxmLkdldE9wdGlvbihjb25maWdUeXBlLCBzZWN0aW9uLCAnZm9udC1ib2xkJywgZGVmYXVsdD0wLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0nYm9vbCcpCiAgICAgICAgIGlmIChmYW1pbHkgPT0gJ1RrRml4ZWRGb250Jyk6Ci0gICAgICAgICAgICBpZiBUa1ZlcnNpb24gPCA4LjU6Ci0gICAgICAgICAgICAgICAgZmFtaWx5ID0gJ0NvdXJpZXInCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKLSAgICAgICAgICAgICAgICBhY3R1YWxGb250ID0gRm9udC5hY3R1YWwoZikKLSAgICAgICAgICAgICAgICBmYW1pbHkgPSBhY3R1YWxGb250WydmYW1pbHknXQotICAgICAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KLSAgICAgICAgICAgICAgICBpZiBzaXplIDw9IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNpemUgPSAxMCAgIyBpZiBmb250IGluIHBpeGVscywgaWdub3JlIGFjdHVhbCBzaXplCi0gICAgICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddPT0nYm9sZCcKKyAgICAgICAgICAgIGYgPSBGb250KG5hbWU9J1RrRml4ZWRGb250JywgZXhpc3RzPVRydWUsIHJvb3Q9cm9vdCkKKyAgICAgICAgICAgIGFjdHVhbEZvbnQgPSBGb250LmFjdHVhbChmKQorICAgICAgICAgICAgZmFtaWx5ID0gYWN0dWFsRm9udFsnZmFtaWx5J10KKyAgICAgICAgICAgIHNpemUgPSBhY3R1YWxGb250WydzaXplJ10KKyAgICAgICAgICAgIGlmIHNpemUgPD0gMDoKKyAgICAgICAgICAgICAgICBzaXplID0gMTAgICMgaWYgZm9udCBpbiBwaXhlbHMsIGlnbm9yZSBhY3R1YWwgc2l6ZQorICAgICAgICAgICAgYm9sZCA9IGFjdHVhbEZvbnRbJ3dlaWdodCddID09ICdib2xkJwogICAgICAgICByZXR1cm4gKGZhbWlseSwgc2l6ZSwgJ2JvbGQnIGlmIGJvbGQgZWxzZSAnbm9ybWFsJykKIAogICAgIGRlZiBMb2FkQ2ZnRmlsZXMoc2VsZik6CkBAIC03MzksNiArNzU5LDE4IEBACiAKIGlkbGVDb25mID0gSWRsZUNvbmYoKQogCisKK193YXJuZWQgPSBzZXQoKQorZGVmIF93YXJuKG1zZywgKmtleSk6CisgICAga2V5ID0gKG1zZywpICsga2V5CisgICAgaWYga2V5IG5vdCBpbiBfd2FybmVkOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBwcmludChtc2csIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIF93YXJuZWQuYWRkKGtleSkKKworCiAjIFRPRE8gUmV2aXNlIHRlc3Qgb3V0cHV0LCB3cml0ZSBleHBhbmRlZCB1bml0dGVzdAogIwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2NvbmZpZ0hlbHBTb3VyY2VFZGl0LnB5IGIvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkZTgxMTguLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvY29uZmlnSGVscFNvdXJjZUVkaXQucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotIkRpYWxvZyB0byBzcGVjaWZ5IG9yIGVkaXQgdGhlIHBhcmFtZXRlcnMgZm9yIGEgdXNlciBjb25maWd1cmVkIGhlbHAgc291cmNlLiIKLQotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KLWZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWltcG9ydCB0a2ludGVyLmZpbGVkaWFsb2cgYXMgdGtGaWxlRGlhbG9nCi0KLWNsYXNzIEdldEhlbHBTb3VyY2VEaWFsb2coVG9wbGV2ZWwpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCBtZW51SXRlbT0nJywgZmlsZVBhdGg9JycsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIkdldCBtZW51IGVudHJ5IGFuZCB1cmwvIGxvY2FsIGZpbGUgbG9jYXRpb24gZm9yIEFkZGl0aW9uYWwgSGVscAotCi0gICAgICAgIFVzZXIgc2VsZWN0cyBhIG5hbWUgZm9yIHRoZSBIZWxwIHJlc291cmNlIGFuZCBwcm92aWRlcyBhIHdlYiB1cmwKLSAgICAgICAgb3IgYSBsb2NhbCBmaWxlIGFzIGl0cyBzb3VyY2UuICBUaGUgdXNlciBjYW4gZW50ZXIgYSB1cmwgb3IgYnJvd3NlCi0gICAgICAgIGZvciB0aGUgZmlsZS4KLQotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi5tZW51LnNldChtZW51SXRlbSkKLSAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlUGF0aCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKLSAgICAgICAgI25lZWRzIHRvIGJlIGRvbmUgaGVyZSBzbyB0aGF0IHRoZSB3aW5mb19yZXF3aWR0aCBpcyB2YWxpZAotICAgICAgICBzZWxmLnVwZGF0ZV9pZGxldGFza3MoKQotICAgICAgICAjY2VudHJlIGRpYWxvZyBvdmVyIHBhcmVudC4gYmVsb3cgcGFyZW50IGlmIHJ1bm5pbmcgaHRlc3QuCi0gICAgICAgIHNlbGYuZ2VvbWV0cnkoCi0gICAgICAgICAgICAgICAgIislZCslZCIgJSAoCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsKLSAgICAgICAgICAgICAgICAgICAgKHBhcmVudC53aW5mb193aWR0aCgpLzIgLSBzZWxmLndpbmZvX3JlcXdpZHRoKCkvMiksCi0gICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsKLSAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKLSAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkpKQotICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICNnZW9tZXRyeSBzZXQsIHVuaGlkZQotICAgICAgICBzZWxmLmJpbmQoJzxSZXR1cm4+Jywgc2VsZi5vaykKLSAgICAgICAgc2VsZi53YWl0X3dpbmRvdygpCi0KLSAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6Ci0gICAgICAgIHNlbGYubWVudSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLnBhdGggPSBTdHJpbmdWYXIoc2VsZikKLSAgICAgICAgc2VsZi5mb250U2l6ZSA9IFN0cmluZ1ZhcihzZWxmKQotICAgICAgICBzZWxmLmZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsIGJvcmRlcndpZHRoPTIsIHJlbGllZj1HUk9PVkUpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluLnBhY2soc2lkZT1UT1AsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGxhYmVsTWVudSA9IExhYmVsKHNlbGYuZnJhbWVNYWluLCBhbmNob3I9VywganVzdGlmeT1MRUZULAotICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdNZW51IEl0ZW06JykKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubWVudSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD0zMCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxQYXRoID0gTGFiZWwoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRleHQ9J0hlbHAgRmlsZSBQYXRoOiBFbnRlciBVUkwgb3IgYnJvd3NlIGZvciBmaWxlJykKLSAgICAgICAgc2VsZi5lbnRyeVBhdGggPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYucGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWR0aD00MCkKLSAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgbGFiZWxNZW51LnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5TWVudS5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgbGFiZWxQYXRoLnBhY2soYW5jaG9yPVcsIHBhZHg9NSwgcGFkeT0zKQotICAgICAgICBzZWxmLmVudHJ5UGF0aC5wYWNrKGFuY2hvcj1XLCBwYWR4PTUsIHBhZHk9MykKLSAgICAgICAgYnJvd3NlQnV0dG9uID0gQnV0dG9uKHNlbGYuZnJhbWVNYWluLCB0ZXh0PSdCcm93c2UnLCB3aWR0aD04LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLmJyb3dzZV9maWxlKQotICAgICAgICBicm93c2VCdXR0b24ucGFjayhwYWR5PTMpCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYpCi0gICAgICAgIGZyYW1lQnV0dG9ucy5wYWNrKHNpZGU9Qk9UVE9NLCBmaWxsPVgpCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPSycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgZGVmYXVsdD1BQ1RJVkUsICBjb21tYW5kPXNlbGYub2spCi0gICAgICAgIHNlbGYuYnV0dG9uT2suZ3JpZChyb3c9MCwgY29sdW1uPTAsIHBhZHg9NSxwYWR5PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLmNhbmNlbCkKLSAgICAgICAgc2VsZi5idXR0b25DYW5jZWwuZ3JpZChyb3c9MCwgY29sdW1uPTEsIHBhZHg9NSwgcGFkeT01KQotCi0gICAgZGVmIGJyb3dzZV9maWxlKHNlbGYpOgotICAgICAgICBmaWxldHlwZXMgPSBbCi0gICAgICAgICAgICAoIkhUTUwgRmlsZXMiLCAiKi5odG0gKi5odG1sIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiUERGIEZpbGVzIiwgIioucGRmIiwgIlRFWFQiKSwKLSAgICAgICAgICAgICgiV2luZG93cyBIZWxwIEZpbGVzIiwgIiouY2htIiksCi0gICAgICAgICAgICAoIlRleHQgRmlsZXMiLCAiKi50eHQiLCAiVEVYVCIpLAotICAgICAgICAgICAgKCJBbGwgRmlsZXMiLCAiKiIpXQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICBkaXIsIGJhc2UgPSBvcy5wYXRoLnNwbGl0KHBhdGgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBiYXNlID0gTm9uZQotICAgICAgICAgICAgaWYgc3lzLnBsYXRmb3JtWzozXSA9PSAnd2luJzoKLSAgICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKHN5cy5leGVjdXRhYmxlKSwgJ0RvYycpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNkaXIoZGlyKToKLSAgICAgICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgZGlyID0gb3MuZ2V0Y3dkKCkKLSAgICAgICAgb3BlbmRpYWxvZyA9IHRrRmlsZURpYWxvZy5PcGVuKHBhcmVudD1zZWxmLCBmaWxldHlwZXM9ZmlsZXR5cGVzKQotICAgICAgICBmaWxlID0gb3BlbmRpYWxvZy5zaG93KGluaXRpYWxkaXI9ZGlyLCBpbml0aWFsZmlsZT1iYXNlKQotICAgICAgICBpZiBmaWxlOgotICAgICAgICAgICAgc2VsZi5wYXRoLnNldChmaWxlKQotCi0gICAgZGVmIG1lbnVfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIGEgc2Vuc2libGUgbWVudSBpdGVtIG5hbWUiCi0gICAgICAgIG1lbnVfb2sgPSBUcnVlCi0gICAgICAgIG1lbnUgPSBzZWxmLm1lbnUuZ2V0KCkKLSAgICAgICAgbWVudS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBtZW51OgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTm8gbWVudSBpdGVtIHNwZWNpZmllZCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICBlbGlmIGxlbihtZW51KSA+IDMwOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTWVudSBJdGVtIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTWVudSBpdGVtIHRvbyBsb25nOicKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXG5MaW1pdCAzMCBjaGFyYWN0ZXJzLicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgc2VsZi5lbnRyeU1lbnUuZm9jdXNfc2V0KCkKLSAgICAgICAgICAgIG1lbnVfb2sgPSBGYWxzZQotICAgICAgICByZXR1cm4gbWVudV9vawotCi0gICAgZGVmIHBhdGhfb2soc2VsZik6Ci0gICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIG1lbnUgZmlsZSBwYXRoIgotICAgICAgICBwYXRoX29rID0gVHJ1ZQotICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpCi0gICAgICAgIHBhdGguc3RyaXAoKQotICAgICAgICBpZiBub3QgcGF0aDogI25vIHBhdGggc3BlY2lmaWVkCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBoZWxwIGZpbGUgcGF0aCBzcGVjaWZpZWQuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyZW50PXNlbGYpCi0gICAgICAgICAgICBzZWxmLmVudHJ5UGF0aC5mb2N1c19zZXQoKQotICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIGVsaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3LicsICdodHRwJykpOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgaWYgcGF0aFs6NV0gPT0gJ2ZpbGU6JzoKLSAgICAgICAgICAgICAgICBwYXRoID0gcGF0aFs1Ol0KLSAgICAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdGaWxlIFBhdGggRXJyb3InLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nSGVscCBmaWxlIHBhdGggZG9lcyBub3QgZXhpc3QuJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmKQotICAgICAgICAgICAgICAgIHNlbGYuZW50cnlQYXRoLmZvY3VzX3NldCgpCi0gICAgICAgICAgICAgICAgcGF0aF9vayA9IEZhbHNlCi0gICAgICAgIHJldHVybiBwYXRoX29rCi0KLSAgICBkZWYgb2soc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIGlmIHNlbGYubWVudV9vaygpIGFuZCBzZWxmLnBhdGhfb2soKToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gKHNlbGYubWVudS5nZXQoKS5zdHJpcCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmdldCgpLnN0cmlwKCkpCi0gICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6Ci0gICAgICAgICAgICAgICAgcGF0aCA9IHNlbGYucmVzdWx0WzFdCi0gICAgICAgICAgICAgICAgaWYgcGF0aC5zdGFydHN3aXRoKCgnd3d3JywgJ2ZpbGU6JywgJ2h0dHA6JywgJ2h0dHBzOicpKToKLSAgICAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICMgTWFjIFNhZmFyaSBpbnNpc3RzIG9uIHVzaW5nIHRoZSBVUkkgZm9ybSBmb3IgbG9jYWwgZmlsZXMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBsaXN0KHNlbGYucmVzdWx0KQotICAgICAgICAgICAgICAgICAgICBzZWxmLnJlc3VsdFsxXSA9ICJmaWxlOi8vIiArIHBhdGgKLSAgICAgICAgICAgIHNlbGYuZGVzdHJveSgpCi0KLSAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBzZWxmLnJlc3VsdCA9IE5vbmUKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19oZWxwJywKLSAgICAgICAgICAgICAgICAgICB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKLQotICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgotICAgIHJ1bihHZXRIZWxwU291cmNlRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTEzNzgzNi4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9jb25maWdTZWN0aW9uTmFtZURpYWxvZy5weQorKysgL2Rldi9udWxsCkBAIC0xLDk4ICswLDAgQEAKLSIiIgotRGlhbG9nIHRoYXQgYWxsb3dzIHVzZXIgdG8gc3BlY2lmeSBhIG5ldyBjb25maWcgZmlsZSBzZWN0aW9uIG5hbWUuCi1Vc2VkIHRvIGdldCBuZXcgaGlnaGxpZ2h0IHRoZW1lIGFuZCBrZXliaW5kaW5nIHNldCBuYW1lcy4KLVRoZSAncmV0dXJuIHZhbHVlJyBmb3IgdGhlIGRpYWxvZywgdXNlZCB0d28gcGxhY2VkIGluIGNvbmZpZ0RpYWxvZy5weSwKLWlzIHRoZSAucmVzdWx0IGF0dHJpYnV0ZSBzZXQgaW4gdGhlIE9rIGFuZCBDYW5jZWwgbWV0aG9kcy4KLSIiIgotZnJvbSB0a2ludGVyIGltcG9ydCAqCi1pbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotCi1jbGFzcyBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXMsIF9odGVzdD1GYWxzZSk6Ci0gICAgICAgICIiIgotICAgICAgICBtZXNzYWdlIC0gc3RyaW5nLCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheQotICAgICAgICB1c2VkX25hbWVzIC0gc3RyaW5nIGNvbGxlY3Rpb24sIG5hbWVzIGFscmVhZHkgaW4gdXNlIGZvciB2YWxpZGl0eSBjaGVjawotICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAotICAgICAgICAiIiIKLSAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQotICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RkFMU0UsIHdpZHRoPUZBTFNFKQotICAgICAgICBzZWxmLnRpdGxlKHRpdGxlKQotICAgICAgICBzZWxmLnRyYW5zaWVudChwYXJlbnQpCi0gICAgICAgIHNlbGYuZ3JhYl9zZXQoKQotICAgICAgICBzZWxmLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5DYW5jZWwpCi0gICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50Ci0gICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKLSAgICAgICAgc2VsZi51c2VkX25hbWVzID0gdXNlZF9uYW1lcwotICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5Ci0gICAgICAgIHNlbGYudXBkYXRlX2lkbGV0YXNrcygpCi0gICAgICAgICNuZWVkcyB0byBiZSBkb25lIGhlcmUgc28gdGhhdCB0aGUgd2luZm9fcmVxd2lkdGggaXMgdmFsaWQKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mby5jb25maWcod2lkdGg9c2VsZi5mcmFtZU1haW4ud2luZm9fcmVxd2lkdGgoKSkKLSAgICAgICAgc2VsZi5nZW9tZXRyeSgKLSAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R4KCkgKwotICAgICAgICAgICAgICAgICAgICAocGFyZW50LndpbmZvX3dpZHRoKCkvMiAtIHNlbGYud2luZm9fcmVxd2lkdGgoKS8yKSwKLSAgICAgICAgICAgICAgICAgICAgcGFyZW50LndpbmZvX3Jvb3R5KCkgKwotICAgICAgICAgICAgICAgICAgICAoKHBhcmVudC53aW5mb19oZWlnaHQoKS8yIC0gc2VsZi53aW5mb19yZXFoZWlnaHQoKS8yKQotICAgICAgICAgICAgICAgICAgICBpZiBub3QgX2h0ZXN0IGVsc2UgMTAwKQotICAgICAgICAgICAgICAgICkgKSAgI2NlbnRyZSBkaWFsb2cgb3ZlciBwYXJlbnQgKG9yIGJlbG93IGh0ZXN0IGJveCkKLSAgICAgICAgc2VsZi5kZWljb25pZnkoKSAgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQotCi0gICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgotICAgICAgICBzZWxmLm5hbWUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZm9udFNpemUgPSBTdHJpbmdWYXIoc2VsZi5wYXJlbnQpCi0gICAgICAgIHNlbGYuZnJhbWVNYWluID0gRnJhbWUoc2VsZiwgYm9yZGVyd2lkdGg9MiwgcmVsaWVmPVNVTktFTikKLSAgICAgICAgc2VsZi5mcmFtZU1haW4ucGFjayhzaWRlPVRPUCwgZXhwYW5kPVRSVUUsIGZpbGw9Qk9USCkKLSAgICAgICAgc2VsZi5tZXNzYWdlSW5mbyA9IE1lc3NhZ2Uoc2VsZi5mcmFtZU1haW4sIGFuY2hvcj1XLCBqdXN0aWZ5PUxFRlQsCi0gICAgICAgICAgICAgICAgICAgIHBhZHg9NSwgcGFkeT01LCB0ZXh0PXNlbGYubWVzc2FnZSkgIyxhc3BlY3Q9MjAwKQotICAgICAgICBlbnRyeU5hbWUgPSBFbnRyeShzZWxmLmZyYW1lTWFpbiwgdGV4dHZhcmlhYmxlPXNlbGYubmFtZSwgd2lkdGg9MzApCi0gICAgICAgIGVudHJ5TmFtZS5mb2N1c19zZXQoKQotICAgICAgICBzZWxmLm1lc3NhZ2VJbmZvLnBhY2socGFkeD01LCBwYWR5PTUpICMsIGV4cGFuZD1UUlVFLCBmaWxsPUJPVEgpCi0gICAgICAgIGVudHJ5TmFtZS5wYWNrKHBhZHg9NSwgcGFkeT01KQotCi0gICAgICAgIGZyYW1lQnV0dG9ucyA9IEZyYW1lKHNlbGYsIHBhZHk9MikKLSAgICAgICAgZnJhbWVCdXR0b25zLnBhY2soc2lkZT1CT1RUT00pCi0gICAgICAgIHNlbGYuYnV0dG9uT2sgPSBCdXR0b24oZnJhbWVCdXR0b25zLCB0ZXh0PSdPaycsCi0gICAgICAgICAgICAgICAgd2lkdGg9OCwgY29tbWFuZD1zZWxmLk9rKQotICAgICAgICBzZWxmLmJ1dHRvbk9rLnBhY2soc2lkZT1MRUZULCBwYWR4PTUpCi0gICAgICAgIHNlbGYuYnV0dG9uQ2FuY2VsID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2FuY2VsJywKLSAgICAgICAgICAgICAgICB3aWR0aD04LCBjb21tYW5kPXNlbGYuQ2FuY2VsKQotICAgICAgICBzZWxmLmJ1dHRvbkNhbmNlbC5wYWNrKHNpZGU9UklHSFQsIHBhZHg9NSkKLQotICAgIGRlZiBuYW1lX29rKHNlbGYpOgotICAgICAgICAnJycgQWZ0ZXIgc3RyaXBwaW5nIGVudGVyZWQgbmFtZSwgY2hlY2sgdGhhdCBpdCBpcyBhICBzZW5zaWJsZQotICAgICAgICBDb25maWdQYXJzZXIgZmlsZSBzZWN0aW9uIG5hbWUuIFJldHVybiBpdCBpZiBpdCBpcywgJycgaWYgbm90LgotICAgICAgICAnJycKLSAgICAgICAgbmFtZSA9IHNlbGYubmFtZS5nZXQoKS5zdHJpcCgpCi0gICAgICAgIGlmIG5vdCBuYW1lOiAjbm8gbmFtZSBzcGVjaWZpZWQKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J05hbWUgRXJyb3InLAotICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPSdObyBuYW1lIHNwZWNpZmllZC4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgZWxpZiBsZW4obmFtZSk+MzA6ICNuYW1lIHRvbyBsb25nCi0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKHRpdGxlPSdOYW1lIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nTmFtZSB0b28gbG9uZy4gSXQgc2hvdWxkIGJlIG5vIG1vcmUgdGhhbiAnKwotICAgICAgICAgICAgICAgICAgICAnMzAgY2hhcmFjdGVycy4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICBlbGlmIG5hbWUgaW4gc2VsZi51c2VkX25hbWVzOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcih0aXRsZT0nTmFtZSBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1RoaXMgbmFtZSBpcyBhbHJlYWR5IGluIHVzZS4nLCBwYXJlbnQ9c2VsZikKLSAgICAgICAgICAgIG5hbWUgPSAnJwotICAgICAgICByZXR1cm4gbmFtZQotCi0gICAgZGVmIE9rKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBuYW1lID0gc2VsZi5uYW1lX29rKCkKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gbmFtZQotICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotICAgIGRlZiBDYW5jZWwoc2VsZiwgZXZlbnQ9Tm9uZSk6Ci0gICAgICAgIHNlbGYucmVzdWx0ID0gJycKLSAgICAgICAgc2VsZi5kZXN0cm95KCkKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2NvbmZpZ19uYW1lJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCi0KLSAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KLSAgICBydW4oR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9rZXliaW5kaW5nRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9jb25maWdfa2V5LnB5CmluZGV4IGU2NDM4YmYuLjI2MDIyOTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2tleWJpbmRpbmdEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvY29uZmlnX2tleS5weQpAQCAtMiwzMSArMiwzNSBAQAogRGlhbG9nIGZvciBidWlsZGluZyBUa2ludGVyIGFjY2VsZXJhdG9yIGtleSBiaW5kaW5ncwogIiIiCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIGltcG9ydCBzdHJpbmcKIGltcG9ydCBzeXMKIAogY2xhc3MgR2V0S2V5c0RpYWxvZyhUb3BsZXZlbCk6Ci0gICAgZGVmIF9faW5pdF9fKHNlbGYscGFyZW50LHRpdGxlLGFjdGlvbixjdXJyZW50S2V5U2VxdWVuY2VzLF9odGVzdD1GYWxzZSk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIGFjdGlvbiwgY3VycmVudEtleVNlcXVlbmNlcywKKyAgICAgICAgICAgICAgICAgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgogICAgICAgICAiIiIKICAgICAgICAgYWN0aW9uIC0gc3RyaW5nLCB0aGUgbmFtZSBvZiB0aGUgdmlydHVhbCBldmVudCB0aGVzZSBrZXlzIHdpbGwgYmUKICAgICAgICAgICAgICAgICAgbWFwcGVkIHRvCiAgICAgICAgIGN1cnJlbnRLZXlzIC0gbGlzdCwgYSBsaXN0IG9mIGFsbCBrZXkgc2VxdWVuY2UgbGlzdHMgY3VycmVudGx5IG1hcHBlZAogICAgICAgICAgICAgICAgICB0byB2aXJ0dWFsIGV2ZW50cywgZm9yIG92ZXJsYXAgY2hlY2tpbmcKKyAgICAgICAgX3V0ZXN0IC0gYm9vbCwgZG8gbm90IHdhaXQgd2hlbiBydW5uaW5nIHVuaXR0ZXN0CiAgICAgICAgIF9odGVzdCAtIGJvb2wsIGNoYW5nZSBib3ggbG9jYXRpb24gd2hlbiBydW5uaW5nIGh0ZXN0CiAgICAgICAgICIiIgogICAgICAgICBUb3BsZXZlbC5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCisgICAgICAgIHNlbGYud2l0aGRyYXcoKSAjaGlkZSB3aGlsZSBzZXR0aW5nIGdlb21ldHJ5CiAgICAgICAgIHNlbGYuY29uZmlndXJlKGJvcmRlcndpZHRoPTUpCi0gICAgICAgIHNlbGYucmVzaXphYmxlKGhlaWdodD1GQUxTRSx3aWR0aD1GQUxTRSkKKyAgICAgICAgc2VsZi5yZXNpemFibGUoaGVpZ2h0PUZBTFNFLCB3aWR0aD1GQUxTRSkKICAgICAgICAgc2VsZi50aXRsZSh0aXRsZSkKICAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQogICAgICAgICBzZWxmLmdyYWJfc2V0KCkKICAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuQ2FuY2VsKQogICAgICAgICBzZWxmLnBhcmVudCA9IHBhcmVudAogICAgICAgICBzZWxmLmFjdGlvbj1hY3Rpb24KLSAgICAgICAgc2VsZi5jdXJyZW50S2V5U2VxdWVuY2VzPWN1cnJlbnRLZXlTZXF1ZW5jZXMKLSAgICAgICAgc2VsZi5yZXN1bHQ9JycKLSAgICAgICAgc2VsZi5rZXlTdHJpbmc9U3RyaW5nVmFyKHNlbGYpCisgICAgICAgIHNlbGYuY3VycmVudEtleVNlcXVlbmNlcyA9IGN1cnJlbnRLZXlTZXF1ZW5jZXMKKyAgICAgICAgc2VsZi5yZXN1bHQgPSAnJworICAgICAgICBzZWxmLmtleVN0cmluZyA9IFN0cmluZ1ZhcihzZWxmKQogICAgICAgICBzZWxmLmtleVN0cmluZy5zZXQoJycpCiAgICAgICAgIHNlbGYuU2V0TW9kaWZpZXJzRm9yUGxhdGZvcm0oKSAjIHNldCBzZWxmLm1vZGlmaWVycywgc2VsZi5tb2RpZmllcl9sYWJlbAogICAgICAgICBzZWxmLm1vZGlmaWVyX3ZhcnMgPSBbXQpAQCAtMzcsNyArNDEsNiBAQAogICAgICAgICBzZWxmLmFkdmFuY2VkID0gRmFsc2UKICAgICAgICAgc2VsZi5DcmVhdGVXaWRnZXRzKCkKICAgICAgICAgc2VsZi5Mb2FkRmluYWxLZXlMaXN0KCkKLSAgICAgICAgc2VsZi53aXRoZHJhdygpICNoaWRlIHdoaWxlIHNldHRpbmcgZ2VvbWV0cnkKICAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkKICAgICAgICAgc2VsZi5nZW9tZXRyeSgKICAgICAgICAgICAgICAgICAiKyVkKyVkIiAlICgKQEAgLTQ3LDggKzUwLDkgQEAKICAgICAgICAgICAgICAgICAgICAgKChwYXJlbnQud2luZm9faGVpZ2h0KCkvMiAtIHNlbGYud2luZm9fcmVxaGVpZ2h0KCkvMikKICAgICAgICAgICAgICAgICAgICAgaWYgbm90IF9odGVzdCBlbHNlIDE1MCkKICAgICAgICAgICAgICAgICApICkgICNjZW50cmUgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpCi0gICAgICAgIHNlbGYuZGVpY29uaWZ5KCkgI2dlb21ldHJ5IHNldCwgdW5oaWRlCi0gICAgICAgIHNlbGYud2FpdF93aW5kb3coKQorICAgICAgICBpZiBub3QgX3V0ZXN0OgorICAgICAgICAgICAgc2VsZi5kZWljb25pZnkoKSAjZ2VvbWV0cnkgc2V0LCB1bmhpZGUKKyAgICAgICAgICAgIHNlbGYud2FpdF93aW5kb3coKQogCiAgICAgZGVmIENyZWF0ZVdpZGdldHMoc2VsZik6CiAgICAgICAgIGZyYW1lTWFpbiA9IEZyYW1lKHNlbGYsYm9yZGVyd2lkdGg9MixyZWxpZWY9U1VOS0VOKQpAQCAtMjYxLDYgKzI2NSw3IEBACiAgICAgICAgICAgICBrZXlzT0sgPSBUcnVlCiAgICAgICAgIHJldHVybiBrZXlzT0sKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgogICAgIHJ1bihHZXRLZXlzRGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvY29uZmlnRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvY29uZmlnZGlhbG9nLnB5CmluZGV4IDVmNWJkMzYuLmZhNDdhYWEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2NvbmZpZ0RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9jb25maWdkaWFsb2cucHkKQEAgLTEwLDE4ICsxMCwxOCBAQAogCiAiIiIKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgogaW1wb3J0IHRraW50ZXIuY29sb3JjaG9vc2VyIGFzIHRrQ29sb3JDaG9vc2VyCiBpbXBvcnQgdGtpbnRlci5mb250IGFzIHRrRm9udAoraW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKIAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIuZHluT3B0aW9uTWVudVdpZGdldCBpbXBvcnQgRHluT3B0aW9uTWVudQotZnJvbSBpZGxlbGliLmtleWJpbmRpbmdEaWFsb2cgaW1wb3J0IEdldEtleXNEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdTZWN0aW9uTmFtZURpYWxvZyBpbXBvcnQgR2V0Q2ZnU2VjdGlvbk5hbWVEaWFsb2cKLWZyb20gaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdCBpbXBvcnQgR2V0SGVscFNvdXJjZURpYWxvZworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWdfa2V5IGltcG9ydCBHZXRLZXlzRGlhbG9nCitmcm9tIGlkbGVsaWIuZHlub3B0aW9uIGltcG9ydCBEeW5PcHRpb25NZW51Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLnF1ZXJ5IGltcG9ydCBTZWN0aW9uTmFtZSwgSGVscFNvdXJjZQogZnJvbSBpZGxlbGliLnRhYmJlZHBhZ2VzIGltcG9ydCBUYWJiZWRQYWdlU2V0Ci1mcm9tIGlkbGVsaWIudGV4dFZpZXcgaW1wb3J0IHZpZXdfdGV4dAotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIudGV4dHZpZXcgaW1wb3J0IHZpZXdfdGV4dAogCiBjbGFzcyBDb25maWdEaWFsb2coVG9wbGV2ZWwpOgogCkBAIC05MSw3ICs5MSw3IEBACiAgICAgICAgIHNlbGYuY3JlYXRlX2FjdGlvbl9idXR0b25zKCkucGFjayhzaWRlPUJPVFRPTSkKIAogICAgIGRlZiBjcmVhdGVfYWN0aW9uX2J1dHRvbnMoc2VsZik6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIENoYW5naW5nIHRoZSBkZWZhdWx0IHBhZGRpbmcgb24gT1NYIHJlc3VsdHMgaW4gdW5yZWFkYWJsZQogICAgICAgICAgICAgIyB0ZXh0IGluIHRoZSBidXR0b25zCiAgICAgICAgICAgICBwYWRkaW5nQXJncyA9IHt9CkBAIC0zNDEsNiArMzQxLDcgQEAKICAgICAgICAgYnV0dG9uU2F2ZUN1c3RvbUtleXMgPSBCdXR0b24oCiAgICAgICAgICAgICAgICAgZnJhbWVzWzFdLCB0ZXh0PSdTYXZlIGFzIE5ldyBDdXN0b20gS2V5IFNldCcsCiAgICAgICAgICAgICAgICAgY29tbWFuZD1zZWxmLlNhdmVBc05ld0tleVNldCkKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMgPSBMYWJlbChmcmFtZXNbMF0sIGJkPTIpCiAKICAgICAgICAgIyN3aWRnZXQgcGFja2luZwogICAgICAgICAjYm9keQpAQCAtMzYxLDYgKzM2Miw3IEBACiAgICAgICAgIHNlbGYucmFkaW9LZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0wLCBzdGlja3k9VytOUykKICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uZ3JpZChyb3c9MCwgY29sdW1uPTEsIHN0aWNreT1OU0VXKQogICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQ3VzdG9tLmdyaWQocm93PTEsIGNvbHVtbj0xLCBzdGlja3k9TlNFVykKKyAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuZ3JpZChyb3c9MCwgY29sdW1uPTIsIHN0aWNreT1OU0VXLCBwYWR4PTUsIHBhZHk9NSkKICAgICAgICAgc2VsZi5idXR0b25EZWxldGVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGJ1dHRvblNhdmVDdXN0b21LZXlzLnBhY2soc2lkZT1MRUZULCBmaWxsPVgsIGV4cGFuZD1UcnVlLCBwYWR4PTIpCiAgICAgICAgIGZyYW1lc1swXS5wYWNrKHNpZGU9VE9QLCBmaWxsPUJPVEgsIGV4cGFuZD1UcnVlKQpAQCAtNDY0LDI0ICs0NjYsMjQgQEAKICAgICAgICAgcmV0dXJuIGZyYW1lCiAKICAgICBkZWYgQXR0YWNoVmFyQ2FsbGJhY2tzKHNlbGYpOgotICAgICAgICBzZWxmLmZvbnRTaXplLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCi0gICAgICAgIHNlbGYuZm9udE5hbWUudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKLSAgICAgICAgc2VsZi5mb250Qm9sZC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQotICAgICAgICBzZWxmLnNwYWNlTnVtLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3NwYWNlTnVtKQotICAgICAgICBzZWxmLmNvbG91ci50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jb2xvdXIpCi0gICAgICAgIHNlbGYuYnVpbHRpblRoZW1lLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5UaGVtZSkKLSAgICAgICAgc2VsZi5jdXN0b21UaGVtZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21UaGVtZSkKLSAgICAgICAgc2VsZi50aGVtZUlzQnVpbHRpbi50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF90aGVtZUlzQnVpbHRpbikKLSAgICAgICAgc2VsZi5oaWdobGlnaHRUYXJnZXQudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfaGlnaGxpZ2h0VGFyZ2V0KQotICAgICAgICBzZWxmLmtleUJpbmRpbmcudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfa2V5QmluZGluZykKLSAgICAgICAgc2VsZi5idWlsdGluS2V5cy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluS2V5cykKLSAgICAgICAgc2VsZi5jdXN0b21LZXlzLnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX2N1c3RvbUtleXMpCi0gICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4udHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfa2V5c0FyZUJ1aWx0aW4pCi0gICAgICAgIHNlbGYud2luV2lkdGgudHJhY2VfdmFyaWFibGUoJ3cnLCBzZWxmLlZhckNoYW5nZWRfd2luV2lkdGgpCi0gICAgICAgIHNlbGYud2luSGVpZ2h0LnRyYWNlX3ZhcmlhYmxlKCd3Jywgc2VsZi5WYXJDaGFuZ2VkX3dpbkhlaWdodCkKLSAgICAgICAgc2VsZi5zdGFydHVwRWRpdC50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9zdGFydHVwRWRpdCkKLSAgICAgICAgc2VsZi5hdXRvU2F2ZS50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9hdXRvU2F2ZSkKLSAgICAgICAgc2VsZi5lbmNvZGluZy50cmFjZV92YXJpYWJsZSgndycsIHNlbGYuVmFyQ2hhbmdlZF9lbmNvZGluZykKKyAgICAgICAgc2VsZi5mb250U2l6ZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2ZvbnQpCisgICAgICAgIHNlbGYuZm9udE5hbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9mb250KQorICAgICAgICBzZWxmLmZvbnRCb2xkLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZm9udCkKKyAgICAgICAgc2VsZi5zcGFjZU51bS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3NwYWNlTnVtKQorICAgICAgICBzZWxmLmNvbG91ci50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2NvbG91cikKKyAgICAgICAgc2VsZi5idWlsdGluVGhlbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUpCisgICAgICAgIHNlbGYuY3VzdG9tVGhlbWUudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21UaGVtZSkKKyAgICAgICAgc2VsZi50aGVtZUlzQnVpbHRpbi50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX3RoZW1lSXNCdWlsdGluKQorICAgICAgICBzZWxmLmhpZ2hsaWdodFRhcmdldC50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2hpZ2hsaWdodFRhcmdldCkKKyAgICAgICAgc2VsZi5rZXlCaW5kaW5nLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfa2V5QmluZGluZykKKyAgICAgICAgc2VsZi5idWlsdGluS2V5cy50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2J1aWx0aW5LZXlzKQorICAgICAgICBzZWxmLmN1c3RvbUtleXMudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9jdXN0b21LZXlzKQorICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfa2V5c0FyZUJ1aWx0aW4pCisgICAgICAgIHNlbGYud2luV2lkdGgudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF93aW5XaWR0aCkKKyAgICAgICAgc2VsZi53aW5IZWlnaHQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF93aW5IZWlnaHQpCisgICAgICAgIHNlbGYuc3RhcnR1cEVkaXQudHJhY2VfYWRkKCd3cml0ZScsIHNlbGYuVmFyQ2hhbmdlZF9zdGFydHVwRWRpdCkKKyAgICAgICAgc2VsZi5hdXRvU2F2ZS50cmFjZV9hZGQoJ3dyaXRlJywgc2VsZi5WYXJDaGFuZ2VkX2F1dG9TYXZlKQorICAgICAgICBzZWxmLmVuY29kaW5nLnRyYWNlX2FkZCgnd3JpdGUnLCBzZWxmLlZhckNoYW5nZWRfZW5jb2RpbmcpCiAKICAgICBkZWYgcmVtb3ZlX3Zhcl9jYWxsYmFja3Moc2VsZik6CiAgICAgICAgICJSZW1vdmUgY2FsbGJhY2tzIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLiIKQEAgLTQ5Miw3ICs0OTQsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYua2V5QmluZGluZywgc2VsZi5idWlsdGluS2V5cywgc2VsZi5jdXN0b21LZXlzLAogICAgICAgICAgICAgICAgIHNlbGYua2V5c0FyZUJ1aWx0aW4sIHNlbGYud2luV2lkdGgsIHNlbGYud2luSGVpZ2h0LAogICAgICAgICAgICAgICAgIHNlbGYuc3RhcnR1cEVkaXQsIHNlbGYuYXV0b1NhdmUsIHNlbGYuZW5jb2RpbmcsKToKLSAgICAgICAgICAgIHZhci50cmFjZV92ZGVsZXRlKCd3JywgdmFyLnRyYWNlX3ZpbmZvKClbMF1bMV0pCisgICAgICAgICAgICB2YXIudHJhY2VfcmVtb3ZlKCd3cml0ZScsIHZhci50cmFjZV9pbmZvKClbMF1bMV0pCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9mb250KHNlbGYsICpwYXJhbXMpOgogICAgICAgICAnJydXaGVuIG9uZSBmb250IGF0dHJpYnV0ZSBjaGFuZ2VzLCBzYXZlIHRoZW0gYWxsLCBhcyB0aGV5IGFyZQpAQCAtNTE0LDEwICs1MTYsMTEgQEAKICAgICAgICAgc2VsZi5Pbk5ld0NvbG91clNldCgpCiAKICAgICBkZWYgVmFyQ2hhbmdlZF9idWlsdGluVGhlbWUoc2VsZiwgKnBhcmFtcyk6CisgICAgICAgIG9sZHRoZW1lcyA9ICgnSURMRSBDbGFzc2ljJywgJ0lETEUgTmV3JykKICAgICAgICAgdmFsdWUgPSBzZWxmLmJ1aWx0aW5UaGVtZS5nZXQoKQotICAgICAgICBpZiB2YWx1ZSA9PSAnSURMRSBEYXJrJzoKLSAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJykgIT0gJ0lETEUgTmV3JzoKLSAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCAnSURMRSBDbGFzc2ljJykKKyAgICAgICAgaWYgdmFsdWUgbm90IGluIG9sZHRoZW1lczoKKyAgICAgICAgICAgIGlmIGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdUaGVtZScsICduYW1lJykgbm90IGluIG9sZHRoZW1lczoKKyAgICAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUnLCBvbGR0aGVtZXNbMF0pCiAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdtYWluJywgJ1RoZW1lJywgJ25hbWUyJywgdmFsdWUpCiAgICAgICAgICAgICBzZWxmLm5ld19jdXN0b21fdGhlbWUuY29uZmlnKHRleHQ9J05ldyB0aGVtZSwgc2VlIEhlbHAnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZz0nIzUwMDAwMCcpCkBAIC01NTcsOCArNTYwLDIzIEBACiAgICAgICAgICAgICBzZWxmLkFkZENoYW5nZWRJdGVtKCdleHRlbnNpb25zJywgZXh0S2V5YmluZFNlY3Rpb24sIGV2ZW50LCB2YWx1ZSkKIAogICAgIGRlZiBWYXJDaGFuZ2VkX2J1aWx0aW5LZXlzKHNlbGYsICpwYXJhbXMpOgorICAgICAgICBvbGRrZXlzID0gKAorICAgICAgICAgICAgJ0lETEUgQ2xhc3NpYyBXaW5kb3dzJywKKyAgICAgICAgICAgICdJRExFIENsYXNzaWMgVW5peCcsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIE1hYycsCisgICAgICAgICAgICAnSURMRSBDbGFzc2ljIE9TWCcsCisgICAgICAgICkKICAgICAgICAgdmFsdWUgPSBzZWxmLmJ1aWx0aW5LZXlzLmdldCgpCi0gICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgdmFsdWUpCisgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRrZXlzOgorICAgICAgICAgICAgaWYgaWRsZUNvbmYuR2V0T3B0aW9uKCdtYWluJywgJ0tleXMnLCAnbmFtZScpIG5vdCBpbiBvbGRrZXlzOgorICAgICAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lJywgb2xka2V5c1swXSkKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lMicsIHZhbHVlKQorICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuY29uZmlnKHRleHQ9J05ldyBrZXkgc2V0LCBzZWUgSGVscCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmc9JyM1MDAwMDAnKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5BZGRDaGFuZ2VkSXRlbSgnbWFpbicsICdLZXlzJywgJ25hbWUnLCB2YWx1ZSkKKyAgICAgICAgICAgIHNlbGYuQWRkQ2hhbmdlZEl0ZW0oJ21haW4nLCAnS2V5cycsICduYW1lMicsICcnKQorICAgICAgICAgICAgc2VsZi5uZXdfY3VzdG9tX2tleXMuY29uZmlnKHRleHQ9JycsIGZnPSdibGFjaycpCiAgICAgICAgIHNlbGYuTG9hZEtleXNMaXN0KHZhbHVlKQogCiAgICAgZGVmIFZhckNoYW5nZWRfY3VzdG9tS2V5cyhzZWxmLCAqcGFyYW1zKToKQEAgLTY4Myw3ICs3MDEsNyBAQAogICAgIGRlZiBHZXROZXdLZXlzTmFtZShzZWxmLCBtZXNzYWdlKToKICAgICAgICAgdXNlZE5hbWVzID0gKGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCd1c2VyJywgJ2tleXMnKSArCiAgICAgICAgICAgICAgICAgaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ2RlZmF1bHQnLCAna2V5cycpKQotICAgICAgICBuZXdLZXlTZXQgPSBHZXRDZmdTZWN0aW9uTmFtZURpYWxvZygKKyAgICAgICAgbmV3S2V5U2V0ID0gU2VjdGlvbk5hbWUoCiAgICAgICAgICAgICAgICAgc2VsZiwgJ05ldyBDdXN0b20gS2V5IFNldCcsIG1lc3NhZ2UsIHVzZWROYW1lcykucmVzdWx0CiAgICAgICAgIHJldHVybiBuZXdLZXlTZXQKIApAQCAtNzY3LDggKzc4NSwxMCBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5TZXRNZW51KGl0ZW1MaXN0LCBpdGVtTGlzdFswXSkKICAgICAgICAgI3JldmVydCB0byBkZWZhdWx0IGtleSBzZXQKLSAgICAgICAgc2VsZi5rZXlzQXJlQnVpbHRpbi5zZXQoaWRsZUNvbmYuZGVmYXVsdENmZ1snbWFpbiddLkdldCgnS2V5cycsICdkZWZhdWx0JykpCi0gICAgICAgIHNlbGYuYnVpbHRpbktleXMuc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnbmFtZScpKQorICAgICAgICBzZWxmLmtleXNBcmVCdWlsdGluLnNldChpZGxlQ29uZi5kZWZhdWx0Q2ZnWydtYWluJ10KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLkdldCgnS2V5cycsICdkZWZhdWx0JykpCisgICAgICAgIHNlbGYuYnVpbHRpbktleXMuc2V0KGlkbGVDb25mLmRlZmF1bHRDZmdbJ21haW4nXS5HZXQoJ0tleXMnLCAnbmFtZScpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGlkbGVDb25mLmRlZmF1bHRfa2V5cygpKQogICAgICAgICAjdXNlciBjYW4ndCBiYWNrIG91dCBvZiB0aGVzZSBjaGFuZ2VzLCB0aGV5IG11c3QgYmUgYXBwbGllZCBub3cKICAgICAgICAgc2VsZi5TYXZlQWxsQ2hhbmdlZENvbmZpZ3MoKQogICAgICAgICBzZWxmLkFjdGl2YXRlQ29uZmlnQ2hhbmdlcygpCkBAIC04MzYsNyArODU2LDcgQEAKICAgICBkZWYgR2V0TmV3VGhlbWVOYW1lKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICB1c2VkTmFtZXMgPSAoaWRsZUNvbmYuR2V0U2VjdGlvbkxpc3QoJ3VzZXInLCAnaGlnaGxpZ2h0JykgKwogICAgICAgICAgICAgICAgIGlkbGVDb25mLkdldFNlY3Rpb25MaXN0KCdkZWZhdWx0JywgJ2hpZ2hsaWdodCcpKQotICAgICAgICBuZXdUaGVtZSA9IEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nKAorICAgICAgICBuZXdUaGVtZSA9IFNlY3Rpb25OYW1lKAogICAgICAgICAgICAgICAgIHNlbGYsICdOZXcgQ3VzdG9tIFRoZW1lJywgbWVzc2FnZSwgdXNlZE5hbWVzKS5yZXN1bHQKICAgICAgICAgcmV0dXJuIG5ld1RoZW1lCiAKQEAgLTkzOSw3ICs5NTksOCBAQAogICAgICAgICAgICAgICAgIHNlbGYuYnV0dG9uSGVscExpc3RSZW1vdmUuY29uZmlnKHN0YXRlPURJU0FCTEVEKQogCiAgICAgZGVmIEhlbHBMaXN0SXRlbUFkZChzZWxmKToKLSAgICAgICAgaGVscFNvdXJjZSA9IEdldEhlbHBTb3VyY2VEaWFsb2coc2VsZiwgJ05ldyBIZWxwIFNvdXJjZScpLnJlc3VsdAorICAgICAgICBoZWxwU291cmNlID0gSGVscFNvdXJjZShzZWxmLCAnTmV3IEhlbHAgU291cmNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKS5yZXN1bHQKICAgICAgICAgaWYgaGVscFNvdXJjZToKICAgICAgICAgICAgIHNlbGYudXNlckhlbHBMaXN0LmFwcGVuZCgoaGVscFNvdXJjZVswXSwgaGVscFNvdXJjZVsxXSkpCiAgICAgICAgICAgICBzZWxmLmxpc3RIZWxwLmluc2VydChFTkQsIGhlbHBTb3VyY2VbMF0pCkBAIC05NDksMTYgKzk3MCwxNyBAQAogICAgIGRlZiBIZWxwTGlzdEl0ZW1FZGl0KHNlbGYpOgogICAgICAgICBpdGVtSW5kZXggPSBzZWxmLmxpc3RIZWxwLmluZGV4KEFOQ0hPUikKICAgICAgICAgaGVscFNvdXJjZSA9IHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0KLSAgICAgICAgbmV3SGVscFNvdXJjZSA9IEdldEhlbHBTb3VyY2VEaWFsb2coCi0gICAgICAgICAgICAgICAgc2VsZiwgJ0VkaXQgSGVscCBTb3VyY2UnLCBtZW51SXRlbT1oZWxwU291cmNlWzBdLAotICAgICAgICAgICAgICAgIGZpbGVQYXRoPWhlbHBTb3VyY2VbMV0pLnJlc3VsdAotICAgICAgICBpZiAobm90IG5ld0hlbHBTb3VyY2UpIG9yIChuZXdIZWxwU291cmNlID09IGhlbHBTb3VyY2UpOgotICAgICAgICAgICAgcmV0dXJuICNubyBjaGFuZ2VzCi0gICAgICAgIHNlbGYudXNlckhlbHBMaXN0W2l0ZW1JbmRleF0gPSBuZXdIZWxwU291cmNlCi0gICAgICAgIHNlbGYubGlzdEhlbHAuZGVsZXRlKGl0ZW1JbmRleCkKLSAgICAgICAgc2VsZi5saXN0SGVscC5pbnNlcnQoaXRlbUluZGV4LCBuZXdIZWxwU291cmNlWzBdKQotICAgICAgICBzZWxmLlVwZGF0ZVVzZXJIZWxwQ2hhbmdlZEl0ZW1zKCkKLSAgICAgICAgc2VsZi5TZXRIZWxwTGlzdEJ1dHRvblN0YXRlcygpCisgICAgICAgIG5ld0hlbHBTb3VyY2UgPSBIZWxwU291cmNlKAorICAgICAgICAgICAgICAgIHNlbGYsICdFZGl0IEhlbHAgU291cmNlJywKKyAgICAgICAgICAgICAgICBtZW51aXRlbT1oZWxwU291cmNlWzBdLAorICAgICAgICAgICAgICAgIGZpbGVwYXRoPWhlbHBTb3VyY2VbMV0sCisgICAgICAgICAgICAgICAgKS5yZXN1bHQKKyAgICAgICAgaWYgbmV3SGVscFNvdXJjZSBhbmQgbmV3SGVscFNvdXJjZSAhPSBoZWxwU291cmNlOgorICAgICAgICAgICAgc2VsZi51c2VySGVscExpc3RbaXRlbUluZGV4XSA9IG5ld0hlbHBTb3VyY2UKKyAgICAgICAgICAgIHNlbGYubGlzdEhlbHAuZGVsZXRlKGl0ZW1JbmRleCkKKyAgICAgICAgICAgIHNlbGYubGlzdEhlbHAuaW5zZXJ0KGl0ZW1JbmRleCwgbmV3SGVscFNvdXJjZVswXSkKKyAgICAgICAgICAgIHNlbGYuVXBkYXRlVXNlckhlbHBDaGFuZ2VkSXRlbXMoKQorICAgICAgICAgICAgc2VsZi5TZXRIZWxwTGlzdEJ1dHRvblN0YXRlcygpCiAKICAgICBkZWYgSGVscExpc3RJdGVtUmVtb3ZlKHNlbGYpOgogICAgICAgICBpdGVtSW5kZXggPSBzZWxmLmxpc3RIZWxwLmluZGV4KEFOQ0hPUikKQEAgLTk5Niw3ICsxMDE4LDggQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgIyNmb250IHNpemUgZHJvcGRvd24KICAgICAgICAgc2VsZi5vcHRNZW51Rm9udFNpemUuU2V0TWVudSgoJzcnLCAnOCcsICc5JywgJzEwJywgJzExJywgJzEyJywgJzEzJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzIyJyksIGZvbnRTaXplICkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzE0JywgJzE2JywgJzE4JywgJzIwJywgJzIyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzI1JywgJzI5JywgJzM0JywgJzQwJyksIGZvbnRTaXplICkKICAgICAgICAgIyNmb250V2VpZ2h0CiAgICAgICAgIHNlbGYuZm9udEJvbGQuc2V0KGZvbnRCb2xkKQogICAgICAgICAjI2ZvbnQgc2FtcGxlCkBAIC0xMDY1LDcgKzEwODgsNyBAQAogICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0N1c3RvbS5TZXRNZW51KGl0ZW1MaXN0LCBjdXJyZW50T3B0aW9uKQogICAgICAgICAgICAgaXRlbUxpc3QgPSBpZGxlQ29uZi5HZXRTZWN0aW9uTGlzdCgnZGVmYXVsdCcsICdrZXlzJykKICAgICAgICAgICAgIGl0ZW1MaXN0LnNvcnQoKQotICAgICAgICAgICAgc2VsZi5vcHRNZW51S2V5c0J1aWx0aW4uU2V0TWVudShpdGVtTGlzdCwgaXRlbUxpc3RbMF0pCisgICAgICAgICAgICBzZWxmLm9wdE1lbnVLZXlzQnVpbHRpbi5TZXRNZW51KGl0ZW1MaXN0LCBpZGxlQ29uZi5kZWZhdWx0X2tleXMoKSkKICAgICAgICAgc2VsZi5TZXRLZXlzVHlwZSgpCiAgICAgICAgICMjbG9hZCBrZXlzZXQgZWxlbWVudCBsaXN0CiAgICAgICAgIGtleVNldE5hbWUgPSBpZGxlQ29uZi5DdXJyZW50S2V5cygpCkBAIC0xMzY3LDEyICsxMzkwLDE4IEBACiBbQ2FuY2VsXSBvbmx5IGNhbmNlbHMgY2hhbmdlcyBtYWRlIHNpbmNlIHRoZSBsYXN0IHNhdmUuCiAnJycKIGhlbHBfcGFnZXMgPSB7Ci0gICAgJ0hpZ2hsaWdodGluZyc6JycnCisgICAgJ0hpZ2hsaWdodGluZyc6ICcnJwogSGlnaGxpZ2h0aW5nOgogVGhlIElETEUgRGFyayBjb2xvciB0aGVtZSBpcyBuZXcgaW4gT2N0b2JlciAyMDE1LiAgSXQgY2FuIG9ubHkKIGJlIHVzZWQgd2l0aCBvbGRlciBJRExFIHJlbGVhc2VzIGlmIGl0IGlzIHNhdmVkIGFzIGEgY3VzdG9tCiB0aGVtZSwgd2l0aCBhIGRpZmZlcmVudCBuYW1lLgotJycnCisnJycsCisgICAgJ0tleXMnOiAnJycKK0tleXM6CitUaGUgSURMRSBNb2Rlcm4gVW5peCBrZXkgc2V0IGlzIG5ldyBpbiBKdW5lIDIwMTYuICBJdCBjYW4gb25seQorYmUgdXNlZCB3aXRoIG9sZGVyIElETEUgcmVsZWFzZXMgaWYgaXQgaXMgc2F2ZWQgYXMgYSBjdXN0b20KK2tleSBzZXQsIHdpdGggYSBkaWZmZXJlbnQgbmFtZS4KKycnJywKIH0KIAogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9EZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0RlYnVnZ2VyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQppbmRleCBkNWUyMTdkLi4xMTRkMGQxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9EZWJ1Z2dlci5weQorKysgYi9MaWIvaWRsZWxpYi9kZWJ1Z2dlci5weQpAQCAtMSw5ICsxLDEyIEBACi1pbXBvcnQgb3MKIGltcG9ydCBiZGIKK2ltcG9ydCBvcworCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWZyb20gaWRsZWxpYi5XaW5kb3dMaXN0IGltcG9ydCBMaXN0ZWRUb3BsZXZlbAotZnJvbSBpZGxlbGliLlNjcm9sbGVkTGlzdCBpbXBvcnQgU2Nyb2xsZWRMaXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLnNjcm9sbGVkbGlzdCBpbXBvcnQgU2Nyb2xsZWRMaXN0Citmcm9tIGlkbGVsaWIud2luZG93cyBpbXBvcnQgTGlzdGVkVG9wbGV2ZWwKIAogCiBjbGFzcyBJZGIoYmRiLkJkYik6CkBAIC0zNCw4ICszNywxMCBAQAogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHByZXZfZnJhbWUgPSBmcmFtZS5mX2JhY2sKLSAgICAgICAgICAgIGlmIHByZXZfZnJhbWUuZl9jb2RlLmNvX2ZpbGVuYW1lLmNvdW50KCdEZWJ1Z2dlci5weScpOgotICAgICAgICAgICAgICAgICMgKHRoYXQgdGVzdCB3aWxsIGNhdGNoIGJvdGggRGVidWdnZXIucHkgYW5kIFJlbW90ZURlYnVnZ2VyLnB5KQorICAgICAgICAgICAgcHJldl9uYW1lID0gcHJldl9mcmFtZS5mX2NvZGUuY29fZmlsZW5hbWUKKyAgICAgICAgICAgIGlmICdpZGxlbGliJyBpbiBwcmV2X25hbWUgYW5kICdkZWJ1Z2dlcicgaW4gcHJldl9uYW1lOgorICAgICAgICAgICAgICAgICMgY2F0Y2ggYm90aCBpZGxlbGliL2RlYnVnZ2VyLnB5IGFuZCBpZGxlbGliL2RlYnVnZ2VyX3IucHkKKyAgICAgICAgICAgICAgICAjIG9uIGJvdGggcG9zaXggYW5kIHdpbmRvd3MKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHJldHVybiBzZWxmLmluX3JwY19jb2RlKHByZXZfZnJhbWUpCiAKQEAgLTM3MCw3ICszNzUsNyBAQAogY2xhc3MgU3RhY2tWaWV3ZXIoU2Nyb2xsZWRMaXN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIsIGZsaXN0LCBndWkpOgotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAgICAgIyBBdCBsZWFzdCBvbiB3aXRoIHRoZSBzdG9jayBBcXVhVGsgdmVyc2lvbiBvbiBPU1ggMTAuNCB5b3UnbGwKICAgICAgICAgICAgICMgZ2V0IGEgc2hha2luZyBHVUkgdGhhdCBldmVudHVhbGx5IGtpbGxzIElETEUgaWYgdGhlIHdpZHRoCiAgICAgICAgICAgICAjIGFyZ3VtZW50IGlzIHNwZWNpZmllZC4KQEAgLTUwMiw3ICs1MDcsNyBAQAogICAgICAgICAgICAgIwogICAgICAgICAgICAgIyBUaGVyZSBpcyBhbHNvIGFuIG9ic2N1cmUgYnVnIGluIHNvcnRlZChkaWN0KSB3aGVyZSB0aGUKICAgICAgICAgICAgICMgaW50ZXJwcmV0ZXIgZ2V0cyBpbnRvIGEgbG9vcCByZXF1ZXN0aW5nIG5vbi1leGlzdGluZyBkaWN0WzBdLAotICAgICAgICAgICAgIyBkaWN0WzFdLCBkaWN0WzJdLCBldGMgZnJvbSB0aGUgUmVtb3RlRGVidWdnZXIuRGljdFByb3h5LgorICAgICAgICAgICAgIyBkaWN0WzFdLCBkaWN0WzJdLCBldGMgZnJvbSB0aGUgZGVidWdnZXJfci5EaWN0UHJveHkuCiAgICAgICAgICAgICAjIyMKICAgICAgICAgICAgIGtleXNfbGlzdCA9IGRpY3Qua2V5cygpCiAgICAgICAgICAgICBuYW1lcyA9IHNvcnRlZChrZXlzX2xpc3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9SZW1vdGVEZWJ1Z2dlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnZ2VyX3IucHkKaW5kZXggYmUyMjYyZi4uYmM5NzEyNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUmVtb3RlRGVidWdnZXIucHkKKysrIGIvTGliL2lkbGVsaWIvZGVidWdnZXJfci5weQpAQCAtMjEsNyArMjEsNyBAQAogIiIiCiAKIGltcG9ydCB0eXBlcwotZnJvbSBpZGxlbGliIGltcG9ydCBEZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z2dlcgogCiBkZWJ1Z2dpbmcgPSAwCiAKQEAgLTE4Nyw3ICsxODcsNyBAQAogCiAgICAgIiIiCiAgICAgZ3VpX3Byb3h5ID0gR1VJUHJveHkocnBjaGFuZGxlciwgZ3VpX2FkYXBfb2lkKQotICAgIGlkYiA9IERlYnVnZ2VyLklkYihndWlfcHJveHkpCisgICAgaWRiID0gZGVidWdnZXIuSWRiKGd1aV9wcm94eSkKICAgICBpZGJfYWRhcCA9IElkYkFkYXB0ZXIoaWRiKQogICAgIHJwY2hhbmRsZXIucmVnaXN0ZXIoaWRiX2FkYXBfb2lkLCBpZGJfYWRhcCkKICAgICByZXR1cm4gaWRiX2FkYXBfb2lkCkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICBpZGJfYWRhcF9vaWQgPSBycGNjbHQucmVtb3RlY2FsbCgiZXhlYyIsICJzdGFydF90aGVfZGVidWdnZXIiLFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGd1aV9hZGFwX29pZCwpLCB7fSkKICAgICBpZGJfcHJveHkgPSBJZGJQcm94eShycGNjbHQsIHB5c2hlbGwsIGlkYl9hZGFwX29pZCkKLSAgICBndWkgPSBEZWJ1Z2dlci5EZWJ1Z2dlcihweXNoZWxsLCBpZGJfcHJveHkpCisgICAgZ3VpID0gZGVidWdnZXIuRGVidWdnZXIocHlzaGVsbCwgaWRiX3Byb3h5KQogICAgIGd1aV9hZGFwID0gR1VJQWRhcHRlcihycGNjbHQsIGd1aSkKICAgICBycGNjbHQucmVnaXN0ZXIoZ3VpX2FkYXBfb2lkLCBndWlfYWRhcCkKICAgICByZXR1cm4gZ3VpCkBAIC0zNzMsNyArMzczLDcgQEAKICAgICBSZXF1ZXN0IHRoYXQgdGhlIFJQQ1NlcnZlciBzaHV0IGRvd24gdGhlIHN1YnByb2Nlc3MgZGVidWdnZXIgYW5kIGxpbmsuCiAgICAgVW5yZWdpc3RlciB0aGUgR1VJQWRhcHRlciwgd2hpY2ggd2lsbCBjYXVzZSBhIEdDIG9uIHRoZSBJZGxlIHByb2Nlc3MKICAgICBkZWJ1Z2dlciBhbmQgUlBDIGxpbmsgb2JqZWN0cy4gIChUaGUgc2Vjb25kIHJlZmVyZW5jZSB0byB0aGUgZGVidWdnZXIgR1VJCi0gICAgaXMgZGVsZXRlZCBpbiBQeVNoZWxsLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcigpLikKKyAgICBpcyBkZWxldGVkIGluIHB5c2hlbGwuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKCkuKQogCiAgICAgIiIiCiAgICAgY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihycGNjbHQpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9PYmplY3RCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvZGVidWdvYmoucHkKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZGVidWdvYmoucHkKaW5kZXggN2I1N2FhNC4uYjcwYjEzYyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvT2JqZWN0QnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9kZWJ1Z29iai5weQpAQCAtOCwxMyArOCwxMCBAQAogCiAjIFhYWCBUTyBETzoKICMgLSBmb3IgY2xhc3Nlcy9tb2R1bGVzLCBhZGQgIm9wZW4gc291cmNlIiB0byBvYmplY3QgYnJvd3NlcgotCi1pbXBvcnQgcmUKLQotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVJdGVtLCBUcmVlTm9kZSwgU2Nyb2xsZWRDYW52YXMKLQogZnJvbSByZXBybGliIGltcG9ydCBSZXByCiAKK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlSXRlbSwgVHJlZU5vZGUsIFNjcm9sbGVkQ2FudmFzCisKIG15cmVwciA9IFJlcHIoKQogbXlyZXByLm1heHN0cmluZyA9IDEwMAogbXlyZXByLm1heG90aGVyID0gMTAwCkBAIC0xMjIsMjEgKzExOSwyMCBAQAogICAgIHJldHVybiBjKGxhYmVsdGV4dCwgb2JqZWN0LCBzZXRmdW5jdGlvbikKIAogCi1kZWYgX29iamVjdF9icm93c2VyKHBhcmVudCk6CitkZWYgX29iamVjdF9icm93c2VyKHBhcmVudCk6ICAjIGh0ZXN0ICMKICAgICBpbXBvcnQgc3lzCi0gICAgZnJvbSB0a2ludGVyIGltcG9ydCBUawotICAgIHJvb3QgPSBUaygpCi0gICAgcm9vdC50aXRsZSgiVGVzdCBPYmplY3RCcm93c2VyIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCi0gICAgcm9vdC5jb25maWd1cmUoYmQ9MCwgYmc9InllbGxvdyIpCi0gICAgcm9vdC5mb2N1c19zZXQoKQotICAgIHNjID0gU2Nyb2xsZWRDYW52YXMocm9vdCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKKyAgICB0b3AgPSBUb3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IGRlYnVnIG9iamVjdCBicm93c2VyIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyAxMDAsIHkgKyAxNzUpKQorICAgIHRvcC5jb25maWd1cmUoYmQ9MCwgYmc9InllbGxvdyIpCisgICAgdG9wLmZvY3VzX3NldCgpCisgICAgc2MgPSBTY3JvbGxlZENhbnZhcyh0b3AsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIikKICAgICBpdGVtID0gbWFrZV9vYmplY3R0cmVlaXRlbSgic3lzIiwgc3lzKQogICAgIG5vZGUgPSBUcmVlTm9kZShzYy5jYW52YXMsIE5vbmUsIGl0ZW0pCiAgICAgbm9kZS51cGRhdGUoKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUmVtb3RlT2JqZWN0QnJvd3Nlci5weSBiL0xpYi9pZGxlbGliL2RlYnVnb2JqX3IucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlbW90ZU9iamVjdEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2RlYnVnb2JqX3IucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2RlbGVnYXRvci5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRGVsZWdhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9kZWxlZ2F0b3IucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkgYi9MaWIvaWRsZWxpYi9keW5vcHRpb24ucHkKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvZHluT3B0aW9uTWVudVdpZGdldC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CmluZGV4IDUxNWI0YmEuLjljNmZmYTQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2R5bk9wdGlvbk1lbnVXaWRnZXQucHkKKysrIGIvTGliL2lkbGVsaWIvZHlub3B0aW9uLnB5CkBAIC0zLDYgKzMsNyBAQAogYW5kIHNldHRpbmcgb2YgaGlnaGxpZ2h0dGhpY2tuZXNzCiAiIiIKIGltcG9ydCBjb3B5CisKIGZyb20gdGtpbnRlciBpbXBvcnQgT3B0aW9uTWVudSwgX3NldGl0LCBTdHJpbmdWYXIsIEJ1dHRvbgogCiBjbGFzcyBEeW5PcHRpb25NZW51KE9wdGlvbk1lbnUpOgpAQCAtMzQsMTIgKzM1LDEyIEBACiAgICAgICAgICAgICBzZWxmLnZhcmlhYmxlLnNldCh2YWx1ZSkKIAogZGVmIF9keW5fb3B0aW9uX21lbnUocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsICMgKyBTdHJpbmdWYXIsIEJ1dHRvbgogCi0gICAgdG9wID0gVG9wbGV2ZWwoKQorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKICAgICB0b3AudGl0bGUoIlRldHMgZHluYW1pYyBvcHRpb24gbWVudSIpCi0gICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlIChwYXJlbnQud2luZm9fcm9vdHgoKSArIDIwMCwKLSAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eSgpICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIyMDB4MTAwKyVkKyVkIiAlICh4ICsgMjUwLCB5ICsgMTc1KSkKICAgICB0b3AuZm9jdXNfc2V0KCkKIAogICAgIHZhciA9IFN0cmluZ1Zhcih0b3ApCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9FZGl0b3JXaW5kb3cucHkgYi9MaWIvaWRsZWxpYi9lZGl0b3IucHkKc2ltaWxhcml0eSBpbmRleCA4OSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9lZGl0b3IucHkKaW5kZXggOTk0NGRhMy4uYWU0NzVjYiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRWRpdG9yV2luZG93LnB5CisrKyBiL0xpYi9pZGxlbGliL2VkaXRvci5weQpAQCAtNiwyOCArNiwzNCBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLnNpbXBsZWRpYWxvZyBhcyB0a1NpbXBsZURpYWxvZwotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2ltcG9ydCB0b2tlbml6ZQogaW1wb3J0IHRyYWNlYmFjawogaW1wb3J0IHdlYmJyb3dzZXIKIAotZnJvbSBpZGxlbGliLk11bHRpQ2FsbCBpbXBvcnQgTXVsdGlDYWxsQ3JlYXRvcgotZnJvbSBpZGxlbGliIGltcG9ydCBXaW5kb3dMaXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaERpYWxvZwotZnJvbSBpZGxlbGliIGltcG9ydCBHcmVwRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFJlcGxhY2VEaWFsb2cKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlQYXJzZQotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCi1mcm9tIGlkbGVsaWIgaW1wb3J0IGFib3V0RGlhbG9nLCB0ZXh0VmlldywgY29uZmlnRGlhbG9nCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgU2Nyb2xsYmFyCitpbXBvcnQgdGtpbnRlci5zaW1wbGVkaWFsb2cgYXMgdGtTaW1wbGVEaWFsb2cKK2ltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIgaW1wb3J0IGNvbmZpZ2RpYWxvZworZnJvbSBpZGxlbGliIGltcG9ydCBncmVwCiBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHAKK2Zyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3gKK2Zyb20gaWRsZWxpYi5tdWx0aWNhbGwgaW1wb3J0IE11bHRpQ2FsbENyZWF0b3IKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlwYXJzZQorZnJvbSBpZGxlbGliIGltcG9ydCBxdWVyeQorZnJvbSBpZGxlbGliIGltcG9ydCByZXBsYWNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaAorZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0dmlldworZnJvbSBpZGxlbGliIGltcG9ydCB3aW5kb3dzCiAKICMgVGhlIGRlZmF1bHQgdGFiIHNldHRpbmcgZm9yIGEgVGV4dCB3aWRnZXQsIGluIGF2ZXJhZ2Utd2lkdGggY2hhcmFjdGVycy4KIFRLX1RBQldJRFRIX0RFRkFVTFQgPSA4Ci0KIF9weV92ZXJzaW9uID0gJyAoJXMpJyAlIHBsYXRmb3JtLnB5dGhvbl92ZXJzaW9uKCkKIAorCiBkZWYgX3NwaGlueF92ZXJzaW9uKCk6CiAgICAgIkZvcm1hdCBzeXMudmVyc2lvbl9pbmZvIHRvIHByb2R1Y2UgdGhlIFNwaGlueCB2ZXJzaW9uIHN0cmluZyB1c2VkIHRvIGluc3RhbGwgdGhlIGNobSBkb2NzIgogICAgIG1ham9yLCBtaW5vciwgbWljcm8sIGxldmVsLCBzZXJpYWwgPSBzeXMudmVyc2lvbl9pbmZvCkBAIC00MCw2MyArNDYsMTYgQEAKICAgICByZXR1cm4gcmVsZWFzZQogCiAKLWNsYXNzIEhlbHBEaWFsb2cob2JqZWN0KToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmKToKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBOb25lICAgICAgIyBwYXJlbnQgb2YgaGVscCB3aW5kb3cKLSAgICAgICAgc2VsZi5kbGcgPSBOb25lICAgICAgICAgIyB0aGUgaGVscCB3aW5kb3cgaXRlc2VsZgotCi0gICAgZGVmIGRpc3BsYXkoc2VsZiwgcGFyZW50LCBuZWFyPU5vbmUpOgotICAgICAgICAiIiIgRGlzcGxheSB0aGUgaGVscCBkaWFsb2cuCi0KLSAgICAgICAgICAgIHBhcmVudCAtIHBhcmVudCB3aWRnZXQgZm9yIHRoZSBoZWxwIHdpbmRvdwotCi0gICAgICAgICAgICBuZWFyIC0gYSBUb3BsZXZlbCB3aWRnZXQgKGUuZy4gRWRpdG9yV2luZG93IG9yIFB5U2hlbGwpCi0gICAgICAgICAgICAgICAgICAgdG8gdXNlIGFzIGEgcmVmZXJlbmNlIGZvciBwbGFjaW5nIHRoZSBoZWxwIHdpbmRvdwotICAgICAgICAiIiIKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzIGFzIHcKLSAgICAgICAgdy53YXJuKCJFZGl0b3JXaW5kb3cuSGVscERpYWxvZyBpcyBubyBsb25nZXIgdXNlZCBieSBJZGxlLlxuIgotICAgICAgICAgICAgICAgIkl0IHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYgb3IgbGF0ZXIuXG4iCi0gICAgICAgICAgICAgICAiSXQgaGFzIGJlZW4gcmVwbGFjZWQgYnkgcHJpdmF0ZSBoZWxwLkhlbHBXaW5kb3dcbiIsCi0gICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICAgICAgaWYgc2VsZi5kbGcgaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYuc2hvd19kaWFsb2cocGFyZW50KQotICAgICAgICBpZiBuZWFyOgotICAgICAgICAgICAgc2VsZi5uZWFyd2luZG93KG5lYXIpCi0KLSAgICBkZWYgc2hvd19kaWFsb2coc2VsZiwgcGFyZW50KToKLSAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKLSAgICAgICAgZm49b3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwnaGVscC50eHQnKQotICAgICAgICBzZWxmLmRsZyA9IGRsZyA9IHRleHRWaWV3LnZpZXdfZmlsZShwYXJlbnQsJ0hlbHAnLGZuLCBtb2RhbD1GYWxzZSkKLSAgICAgICAgZGxnLmJpbmQoJzxEZXN0cm95PicsIHNlbGYuZGVzdHJveSwgJysnKQotCi0gICAgZGVmIG5lYXJ3aW5kb3coc2VsZiwgbmVhcik6Ci0gICAgICAgICMgUGxhY2UgdGhlIGhlbHAgZGlhbG9nIG5lYXIgdGhlIHdpbmRvdyBzcGVjaWZpZWQgYnkgcGFyZW50LgotICAgICAgICAjIE5vdGUgLSB0aGlzIG1heSBub3QgcmVwb3NpdGlvbiB0aGUgd2luZG93IGluIE1ldGFjaXR5Ci0gICAgICAgICMgIGlmICIvYXBwcy9tZXRhY2l0eS9nZW5lcmFsL2Rpc2FibGVfd29ya2Fyb3VuZHMiIGlzIGVuYWJsZWQKLSAgICAgICAgZGxnID0gc2VsZi5kbGcKLSAgICAgICAgZ2VvbSA9IChuZWFyLndpbmZvX3Jvb3R4KCkgKyAxMCwgbmVhci53aW5mb19yb290eSgpICsgMTApCi0gICAgICAgIGRsZy53aXRoZHJhdygpCi0gICAgICAgIGRsZy5nZW9tZXRyeSgiPSslZCslZCIgJSBnZW9tKQotICAgICAgICBkbGcuZGVpY29uaWZ5KCkKLSAgICAgICAgZGxnLmxpZnQoKQotCi0gICAgZGVmIGRlc3Ryb3koc2VsZiwgZXY9Tm9uZSk6Ci0gICAgICAgIHNlbGYuZGxnID0gTm9uZQotICAgICAgICBzZWxmLnBhcmVudCA9IE5vbmUKLQotaGVscERpYWxvZyA9IEhlbHBEaWFsb2coKSAgIyBzaW5nbGV0b24gaW5zdGFuY2UsIG5vIGxvbmdlciB1c2VkCi0KLQogY2xhc3MgRWRpdG9yV2luZG93KG9iamVjdCk6Ci0gICAgZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLSAgICBmcm9tIGlkbGVsaWIuQ29sb3JEZWxlZ2F0b3IgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKLSAgICBmcm9tIGlkbGVsaWIuVW5kb0RlbGVnYXRvciBpbXBvcnQgVW5kb0RlbGVnYXRvcgotICAgIGZyb20gaWRsZWxpYi5JT0JpbmRpbmcgaW1wb3J0IElPQmluZGluZywgZmlsZXN5c3RlbWVuY29kaW5nLCBlbmNvZGluZwotICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQmluZGluZ3MKKyAgICBmcm9tIGlkbGVsaWIucGVyY29sYXRvciBpbXBvcnQgUGVyY29sYXRvcgorICAgIGZyb20gaWRsZWxpYi5jb2xvcml6ZXIgaW1wb3J0IENvbG9yRGVsZWdhdG9yLCBjb2xvcl9jb25maWcKKyAgICBmcm9tIGlkbGVsaWIudW5kbyBpbXBvcnQgVW5kb0RlbGVnYXRvcgorICAgIGZyb20gaWRsZWxpYi5pb21lbnUgaW1wb3J0IElPQmluZGluZywgZW5jb2RpbmcKKyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IG1haW5tZW51CiAgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbAotICAgIGZyb20gaWRsZWxpYi5NdWx0aVN0YXR1c0JhciBpbXBvcnQgTXVsdGlTdGF0dXNCYXIKKyAgICBmcm9tIGlkbGVsaWIuc3RhdHVzYmFyIGltcG9ydCBNdWx0aVN0YXR1c0JhcgogCisgICAgZmlsZXN5c3RlbWVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICAjIGZvciBmaWxlIG5hbWVzCiAgICAgaGVscF91cmwgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgZmlsZW5hbWU9Tm9uZSwga2V5PU5vbmUsIHJvb3Q9Tm9uZSk6CkBAIC0xMzYsMTEgKzk1LDExIEBACiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIHN5cy5wczEgPSAnPj4+ICcKICAgICAgICAgc2VsZi5tZW51YmFyID0gTWVudShyb290KQotICAgICAgICBzZWxmLnRvcCA9IHRvcCA9IFdpbmRvd0xpc3QuTGlzdGVkVG9wbGV2ZWwocm9vdCwgbWVudT1zZWxmLm1lbnViYXIpCisgICAgICAgIHNlbGYudG9wID0gdG9wID0gd2luZG93cy5MaXN0ZWRUb3BsZXZlbChyb290LCBtZW51PXNlbGYubWVudWJhcikKICAgICAgICAgaWYgZmxpc3Q6CiAgICAgICAgICAgICBzZWxmLnRraW50ZXJfdmFycyA9IGZsaXN0LnZhcnMKICAgICAgICAgICAgICNzZWxmLnRvcC5pbnN0YW5jZV9kaWN0IG1ha2VzIGZsaXN0LmludmVyc2VkaWN0IGF2YWlsYWJsZSB0bwotICAgICAgICAgICAgI2NvbmZpZ0RpYWxvZy5weSBzbyBpdCBjYW4gYWNjZXNzIGFsbCBFZGl0b3JXaW5kb3cgaW5zdGFuY2VzCisgICAgICAgICAgICAjY29uZmlnZGlhbG9nLnB5IHNvIGl0IGNhbiBhY2Nlc3MgYWxsIEVkaXRvcldpbmRvdyBpbnN0YW5jZXMKICAgICAgICAgICAgIHNlbGYudG9wLmluc3RhbmNlX2RpY3QgPSBmbGlzdC5pbnZlcnNlZGljdAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi50a2ludGVyX3ZhcnMgPSB7fSAgIyBrZXlzOiBUa2ludGVyIGV2ZW50IG5hbWVzCkBAIC0xNTgsMTMgKzExNywxMCBAQAogICAgICAgICAgICAgICAgICd3cmFwJzogJ25vbmUnLAogICAgICAgICAgICAgICAgICdoaWdobGlnaHR0aGlja25lc3MnOiAwLAogICAgICAgICAgICAgICAgICd3aWR0aCc6IHNlbGYud2lkdGgsCi0gICAgICAgICAgICAgICAgJ2hlaWdodCc6IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdFZGl0b3JXaW5kb3cnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlaWdodCcsIHR5cGU9J2ludCcpfQotICAgICAgICBpZiBUa1ZlcnNpb24gPj0gOC41OgotICAgICAgICAgICAgIyBTdGFydGluZyB3aXRoIHRrIDguNSB3ZSBoYXZlIHRvIHNldCB0aGUgbmV3IHRhYnN0eWxlIG9wdGlvbgotICAgICAgICAgICAgIyB0byAnd29yZHByb2Nlc3NvcicgdG8gYWNoaWV2ZSB0aGUgc2FtZSBkaXNwbGF5IG9mIHRhYnMgYXMgaW4KLSAgICAgICAgICAgICMgb2xkZXIgdGsgdmVyc2lvbnMuCi0gICAgICAgICAgICB0ZXh0X29wdGlvbnNbJ3RhYnN0eWxlJ10gPSAnd29yZHByb2Nlc3NvcicKKyAgICAgICAgICAgICAgICAndGFic3R5bGUnOiAnd29yZHByb2Nlc3NvcicsICAjIG5ldyBpbiA4LjUKKyAgICAgICAgICAgICAgICAnaGVpZ2h0JzogaWRsZUNvbmYuR2V0T3B0aW9uKAorICAgICAgICAgICAgICAgICAgICAgICAgJ21haW4nLCAnRWRpdG9yV2luZG93JywgJ2hlaWdodCcsIHR5cGU9J2ludCcpLAorICAgICAgICAgICAgICAgIH0KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dCA9IE11bHRpQ2FsbENyZWF0b3IoVGV4dCkodGV4dF9mcmFtZSwgKip0ZXh0X29wdGlvbnMpCiAgICAgICAgIHNlbGYudG9wLmZvY3VzZWRfd2lkZ2V0ID0gc2VsZi50ZXh0CiAKQEAgLTE3Myw3ICsxMjksNyBAQAogCiAgICAgICAgIHNlbGYudG9wLnByb3RvY29sKCJXTV9ERUxFVEVfV0lORE9XIiwgc2VsZi5jbG9zZSkKICAgICAgICAgc2VsZi50b3AuYmluZCgiPDxjbG9zZS13aW5kb3c+PiIsIHNlbGYuY2xvc2VfZXZlbnQpCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQXF1YVRrKCk6CiAgICAgICAgICAgICAjIENvbW1hbmQtVyBvbiBlZGl0b3J3aW5kb3dzIGRvZXNuJ3Qgd29yayB3aXRob3V0IHRoaXMuCiAgICAgICAgICAgICB0ZXh0LmJpbmQoJzw8Y2xvc2Utd2luZG93Pj4nLCBzZWxmLmNsb3NlX2V2ZW50KQogICAgICAgICAgICAgIyBTb21lIE9TIFggc3lzdGVtcyBoYXZlIG9ubHkgb25lIG1vdXNlIGJ1dHRvbiwgc28gdXNlCkBAIC0zMDksNyArMjY1LDcgQEAKICAgICAgICAgICAgICAgICBtZW51LmFkZF9zZXBhcmF0b3IoKQogICAgICAgICAgICAgICAgIGVuZCA9IGVuZCArIDEKICAgICAgICAgICAgIHNlbGYud21lbnVfZW5kID0gZW5kCi0gICAgICAgICAgICBXaW5kb3dMaXN0LnJlZ2lzdGVyX2NhbGxiYWNrKHNlbGYucG9zdHdpbmRvd3NtZW51KQorICAgICAgICAgICAgd2luZG93cy5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKIAogICAgICAgICAjIFNvbWUgYWJzdHJhY3Rpb25zIHNvIElETEUgZXh0ZW5zaW9ucyBhcmUgY3Jvc3MtSURFCiAgICAgICAgIHNlbGYuYXNreWVzbm8gPSB0a01lc3NhZ2VCb3guYXNreWVzbm8KQEAgLTQxOCw3ICszNzQsNyBAQAogICAgICAgICAgICAgdW5kZXJsaW5lLCBsYWJlbCA9IHByZXBzdHIobGFiZWwpCiAgICAgICAgICAgICBtZW51ZGljdFtuYW1lXSA9IG1lbnUgPSBNZW51KG1iYXIsIG5hbWU9bmFtZSwgdGVhcm9mZj0wKQogICAgICAgICAgICAgbWJhci5hZGRfY2FzY2FkZShsYWJlbD1sYWJlbCwgbWVudT1tZW51LCB1bmRlcmxpbmU9dW5kZXJsaW5lKQotICAgICAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQ2FyYm9uVGsoKToKKyAgICAgICAgaWYgbWFjb3N4LmlzQ2FyYm9uVGsoKToKICAgICAgICAgICAgICMgSW5zZXJ0IHRoZSBhcHBsaWNhdGlvbiBtZW51CiAgICAgICAgICAgICBtZW51ZGljdFsnYXBwbGljYXRpb24nXSA9IG1lbnUgPSBNZW51KG1iYXIsIG5hbWU9J2FwcGxlJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVhcm9mZj0wKQpAQCAtNDM5LDcgKzM5NSw3IEBACiAgICAgICAgICAgICBlbmQgPSAtMQogICAgICAgICBpZiBlbmQgPiBzZWxmLndtZW51X2VuZDoKICAgICAgICAgICAgIG1lbnUuZGVsZXRlKHNlbGYud21lbnVfZW5kKzEsIGVuZCkKLSAgICAgICAgV2luZG93TGlzdC5hZGRfd2luZG93c190b19tZW51KG1lbnUpCisgICAgICAgIHdpbmRvd3MuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQogCiAgICAgcm1lbnUgPSBOb25lCiAKQEAgLTUwNywxNyArNDYzLDE3IEBACiAKICAgICBkZWYgYWJvdXRfZGlhbG9nKHNlbGYsIGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIEhlbHAgJ0Fib3V0IElETEUnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5hYm91dF9kaWFsb2cuCi0gICAgICAgIGFib3V0RGlhbG9nLkFib3V0RGlhbG9nKHNlbGYudG9wLCdBYm91dCBJRExFJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmFib3V0X2RpYWxvZy4KKyAgICAgICAgaGVscF9hYm91dC5BYm91dERpYWxvZyhzZWxmLnRvcCwnQWJvdXQgSURMRScpCiAKICAgICBkZWYgY29uZmlnX2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBPcHRpb25zICdDb25maWd1cmUgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggbWFjb3N4U3VwcG9ydC5vdmVycmlkZVJvb3RNZW51LmNvbmZpZ19kaWFsb2cuCi0gICAgICAgIGNvbmZpZ0RpYWxvZy5Db25maWdEaWFsb2coc2VsZi50b3AsJ1NldHRpbmdzJykKKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmNvbmZpZ19kaWFsb2cuCisgICAgICAgIGNvbmZpZ2RpYWxvZy5Db25maWdEaWFsb2coc2VsZi50b3AsJ1NldHRpbmdzJykKIAogICAgIGRlZiBoZWxwX2RpYWxvZyhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdJRExFIEhlbHAnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudS5oZWxwX2RpYWxvZy4KKyAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIG1hY29zeC5vdmVycmlkZVJvb3RNZW51LmhlbHBfZGlhbG9nLgogICAgICAgICBpZiBzZWxmLnJvb3Q6CiAgICAgICAgICAgICBwYXJlbnQgPSBzZWxmLnJvb3QKICAgICAgICAgZWxzZToKQEAgLTU5MCwyMyArNTQ2LDIzIEBACiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFNlYXJjaERpYWxvZy5maW5kKHNlbGYudGV4dCkKKyAgICAgICAgc2VhcmNoLmZpbmQoc2VsZi50ZXh0KQogICAgICAgICByZXR1cm4gImJyZWFrIgogCiAgICAgZGVmIGZpbmRfYWdhaW5fZXZlbnQoc2VsZiwgZXZlbnQpOgotICAgICAgICBTZWFyY2hEaWFsb2cuZmluZF9hZ2FpbihzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kX2FnYWluKHNlbGYudGV4dCkKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogICAgIGRlZiBmaW5kX3NlbGVjdGlvbl9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFNlYXJjaERpYWxvZy5maW5kX3NlbGVjdGlvbihzZWxmLnRleHQpCisgICAgICAgIHNlYXJjaC5maW5kX3NlbGVjdGlvbihzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZmluZF9pbl9maWxlc19ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIEdyZXBEaWFsb2cuZ3JlcChzZWxmLnRleHQsIHNlbGYuaW8sIHNlbGYuZmxpc3QpCisgICAgICAgIGdyZXAuZ3JlcChzZWxmLnRleHQsIHNlbGYuaW8sIHNlbGYuZmxpc3QpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgcmVwbGFjZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIFJlcGxhY2VEaWFsb2cucmVwbGFjZShzZWxmLnRleHQpCisgICAgICAgIHJlcGxhY2UucmVwbGFjZShzZWxmLnRleHQpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAKICAgICBkZWYgZ290b19saW5lX2V2ZW50KHNlbGYsIGV2ZW50KToKQEAgLTYyMiw0NiArNTc4LDI3IEBACiAgICAgICAgIHRleHQuc2VlKCJpbnNlcnQiKQogCiAgICAgZGVmIG9wZW5fbW9kdWxlKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICAjIFhYWCBTaG91bGRuJ3QgdGhpcyBiZSBpbiBJT0JpbmRpbmc/CisgICAgICAgICIiIkdldCBtb2R1bGUgbmFtZSBmcm9tIHVzZXIgYW5kIG9wZW4gaXQuCisKKyAgICAgICAgUmV0dXJuIG1vZHVsZSBwYXRoIG9yIE5vbmUgZm9yIGNhbGxzIGJ5IG9wZW5fY2xhc3NfYnJvd3NlcgorICAgICAgICB3aGVuIGxhdHRlciBpcyBub3QgaW52b2tlZCBpbiBuYW1lZCBlZGl0b3Igd2luZG93LgorICAgICAgICAiIiIKKyAgICAgICAgIyBYWFggVGhpcywgb3Blbl9jbGFzc19icm93c2VyLCBhbmQgb3Blbl9wYXRoX2Jyb3dzZXIKKyAgICAgICAgIyB3b3VsZCBmaXQgYmV0dGVyIGluIGlvbWVudS5JT0JpbmRpbmcuCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIG5hbWUgPSBzZWxmLnRleHQuZ2V0KCJzZWwuZmlyc3QiLCAic2VsLmxhc3QiKQorICAgICAgICAgICAgbmFtZSA9IHNlbGYudGV4dC5nZXQoInNlbC5maXJzdCIsICJzZWwubGFzdCIpLnN0cmlwKCkKICAgICAgICAgZXhjZXB0IFRjbEVycm9yOgotICAgICAgICAgICAgbmFtZSA9ICIiCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBuYW1lID0gbmFtZS5zdHJpcCgpCi0gICAgICAgIG5hbWUgPSB0a1NpbXBsZURpYWxvZy5hc2tzdHJpbmcoIk1vZHVsZSIsCi0gICAgICAgICAgICAgICAgICJFbnRlciB0aGUgbmFtZSBvZiBhIFB5dGhvbiBtb2R1bGVcbiIKLSAgICAgICAgICAgICAgICAgInRvIHNlYXJjaCBvbiBzeXMucGF0aCBhbmQgb3BlbjoiLAotICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0LCBpbml0aWFsdmFsdWU9bmFtZSkKLSAgICAgICAgaWYgbmFtZToKLSAgICAgICAgICAgIG5hbWUgPSBuYW1lLnN0cmlwKCkKLSAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgIyBYWFggT3VnaHQgdG8gaW5zZXJ0IGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeSBpbiBmcm9udCBvZiBwYXRoCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHNwZWMgPSBpbXBvcnRsaWIudXRpbC5maW5kX3NwZWMobmFtZSkKLSAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBJbXBvcnRFcnJvcikgYXMgbXNnOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgc3RyKG1zZyksIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgc3BlYyBpcyBOb25lOgotICAgICAgICAgICAgdGtNZXNzYWdlQm94LnNob3dlcnJvcigiSW1wb3J0IGVycm9yIiwgIm1vZHVsZSBub3QgZm91bmQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHNwZWMubG9hZGVyLCBpbXBvcnRsaWIuYWJjLlNvdXJjZUxvYWRlcik6Ci0gICAgICAgICAgICB0a01lc3NhZ2VCb3guc2hvd2Vycm9yKCJJbXBvcnQgZXJyb3IiLCAibm90IGEgc291cmNlLWJhc2VkIG1vZHVsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1zZWxmLnRleHQpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZV9wYXRoID0gc3BlYy5sb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCi0gICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKLSAgICAgICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIkltcG9ydCBlcnJvciIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsb2FkZXIgZG9lcyBub3Qgc3VwcG9ydCBnZXRfZmlsZW5hbWUiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGlmIHNlbGYuZmxpc3Q6Ci0gICAgICAgICAgICBzZWxmLmZsaXN0Lm9wZW4oZmlsZV9wYXRoKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5pby5sb2FkZmlsZShmaWxlX3BhdGgpCisgICAgICAgICAgICBuYW1lID0gJycKKyAgICAgICAgZmlsZV9wYXRoID0gcXVlcnkuTW9kdWxlTmFtZSgKKyAgICAgICAgICAgICAgICBzZWxmLnRleHQsICJPcGVuIE1vZHVsZSIsCisgICAgICAgICAgICAgICAgIkVudGVyIHRoZSBuYW1lIG9mIGEgUHl0aG9uIG1vZHVsZVxuIgorICAgICAgICAgICAgICAgICJ0byBzZWFyY2ggb24gc3lzLnBhdGggYW5kIG9wZW46IiwKKyAgICAgICAgICAgICAgICBuYW1lKS5yZXN1bHQKKyAgICAgICAgaWYgZmlsZV9wYXRoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgaWYgc2VsZi5mbGlzdDoKKyAgICAgICAgICAgICAgICBzZWxmLmZsaXN0Lm9wZW4oZmlsZV9wYXRoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmlvLmxvYWRmaWxlKGZpbGVfcGF0aCkKICAgICAgICAgcmV0dXJuIGZpbGVfcGF0aAogCiAgICAgZGVmIG9wZW5fY2xhc3NfYnJvd3NlcihzZWxmLCBldmVudD1Ob25lKToKQEAgLTY3MywxMiArNjEwLDEyIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGhlYWQsIHRhaWwgPSBvcy5wYXRoLnNwbGl0KGZpbGVuYW1lKQogICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KHRhaWwpCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgQ2xhc3NCcm93c2VyCi0gICAgICAgIENsYXNzQnJvd3Nlci5DbGFzc0Jyb3dzZXIoc2VsZi5mbGlzdCwgYmFzZSwgW2hlYWRdKQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGJyb3dzZXIKKyAgICAgICAgYnJvd3Nlci5DbGFzc0Jyb3dzZXIoc2VsZi5mbGlzdCwgYmFzZSwgW2hlYWRdKQogCiAgICAgZGVmIG9wZW5fcGF0aF9icm93c2VyKHNlbGYsIGV2ZW50PU5vbmUpOgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IFBhdGhCcm93c2VyCi0gICAgICAgIFBhdGhCcm93c2VyLlBhdGhCcm93c2VyKHNlbGYuZmxpc3QpCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgcGF0aGJyb3dzZXIKKyAgICAgICAgcGF0aGJyb3dzZXIuUGF0aEJyb3dzZXIoc2VsZi5mbGlzdCkKIAogICAgIGRlZiBvcGVuX3R1cnRsZV9kZW1vKHNlbGYsIGV2ZW50ID0gTm9uZSk6CiAgICAgICAgIGltcG9ydCBzdWJwcm9jZXNzCkBAIC03MzksNyArNjc2LDcgQEAKIAogICAgIGRlZiBSZXNldENvbG9yaXplcihzZWxmKToKICAgICAgICAgIlVwZGF0ZSB0aGUgY29sb3IgdGhlbWUiCi0gICAgICAgICMgQ2FsbGVkIGZyb20gc2VsZi5maWxlbmFtZV9jaGFuZ2VfaG9vayBhbmQgZnJvbSBjb25maWdEaWFsb2cucHkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBzZWxmLmZpbGVuYW1lX2NoYW5nZV9ob29rIGFuZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogICAgICAgICBzZWxmLl9ybWNvbG9yaXplcigpCiAgICAgICAgIHNlbGYuX2FkZGNvbG9yaXplcigpCiAgICAgICAgIEVkaXRvcldpbmRvdy5jb2xvcl9jb25maWcoc2VsZi50ZXh0KQpAQCAtNzU5LDE0ICs2OTYsMTQgQEAKIAogICAgIGRlZiBSZXNldEZvbnQoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIHRleHQgd2lkZ2V0cycgZm9udCBpZiBpdCBpcyBjaGFuZ2VkIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogCiAgICAgICAgIHNlbGYudGV4dFsnZm9udCddID0gaWRsZUNvbmYuR2V0Rm9udChzZWxmLnJvb3QsICdtYWluJywnRWRpdG9yV2luZG93JykKIAogICAgIGRlZiBSZW1vdmVLZXliaW5kaW5ncyhzZWxmKToKICAgICAgICAgIlJlbW92ZSB0aGUga2V5YmluZGluZ3MgYmVmb3JlIHRoZXkgYXJlIGNoYW5nZWQuIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQotICAgICAgICBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKKyAgICAgICAgc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCiAgICAgICAgIGZvciBldmVudCwga2V5bGlzdCBpbiBrZXlkZWZzLml0ZW1zKCk6CiAgICAgICAgICAgICBzZWxmLnRleHQuZXZlbnRfZGVsZXRlKGV2ZW50LCAqa2V5bGlzdCkKICAgICAgICAgZm9yIGV4dGVuc2lvbk5hbWUgaW4gc2VsZi5nZXRfc3RhbmRhcmRfZXh0ZW5zaW9uX25hbWVzKCk6CkBAIC03NzcsOCArNzE0LDggQEAKIAogICAgIGRlZiBBcHBseUtleWJpbmRpbmdzKHNlbGYpOgogICAgICAgICAiVXBkYXRlIHRoZSBrZXliaW5kaW5ncyBhZnRlciB0aGV5IGFyZSBjaGFuZ2VkIgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQotICAgICAgICBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcyA9IGtleWRlZnMgPSBpZGxlQ29uZi5HZXRDdXJyZW50S2V5U2V0KCkKKyAgICAgICAgIyBDYWxsZWQgZnJvbSBjb25maWdkaWFsb2cucHkKKyAgICAgICAgc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMgPSBrZXlkZWZzID0gaWRsZUNvbmYuR2V0Q3VycmVudEtleVNldCgpCiAgICAgICAgIHNlbGYuYXBwbHlfYmluZGluZ3MoKQogICAgICAgICBmb3IgZXh0ZW5zaW9uTmFtZSBpbiBzZWxmLmdldF9zdGFuZGFyZF9leHRlbnNpb25fbmFtZXMoKToKICAgICAgICAgICAgIHhrZXlkZWZzID0gaWRsZUNvbmYuR2V0RXh0ZW5zaW9uQmluZGluZ3MoZXh0ZW5zaW9uTmFtZSkKQEAgLTc4Niw3ICs3MjMsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXBwbHlfYmluZGluZ3MoeGtleWRlZnMpCiAgICAgICAgICN1cGRhdGUgbWVudSBhY2NlbGVyYXRvcnMKICAgICAgICAgbWVudUV2ZW50RGljdCA9IHt9Ci0gICAgICAgIGZvciBtZW51IGluIHNlbGYuQmluZGluZ3MubWVudWRlZnM6CisgICAgICAgIGZvciBtZW51IGluIHNlbGYubWFpbm1lbnUubWVudWRlZnM6CiAgICAgICAgICAgICBtZW51RXZlbnREaWN0W21lbnVbMF1dID0ge30KICAgICAgICAgICAgIGZvciBpdGVtIGluIG1lbnVbMV06CiAgICAgICAgICAgICAgICAgaWYgaXRlbToKQEAgLTgxMyw3ICs3NTAsNyBAQAogCiAgICAgZGVmIHNldF9ub3RhYnNfaW5kZW50d2lkdGgoc2VsZik6CiAgICAgICAgICJVcGRhdGUgdGhlIGluZGVudHdpZHRoIGlmIGNoYW5nZWQgYW5kIG5vdCB1c2luZyB0YWJzIGluIHRoaXMgd2luZG93IgotICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ0RpYWxvZy5weQorICAgICAgICAjIENhbGxlZCBmcm9tIGNvbmZpZ2RpYWxvZy5weQogICAgICAgICBpZiBub3Qgc2VsZi51c2V0YWJzOgogICAgICAgICAgICAgc2VsZi5pbmRlbnR3aWR0aCA9IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdJbmRlbnQnLCdudW0tc3BhY2VzJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZT0naW50JykKQEAgLTk5Myw3ICs5MzAsNyBAQAogICAgIGRlZiBfY2xvc2Uoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaW8uZmlsZW5hbWU6CiAgICAgICAgICAgICBzZWxmLnVwZGF0ZV9yZWNlbnRfZmlsZXNfbGlzdChuZXdfZmlsZT1zZWxmLmlvLmZpbGVuYW1lKQotICAgICAgICBXaW5kb3dMaXN0LnVucmVnaXN0ZXJfY2FsbGJhY2soc2VsZi5wb3N0d2luZG93c21lbnUpCisgICAgICAgIHdpbmRvd3MudW5yZWdpc3Rlcl9jYWxsYmFjayhzZWxmLnBvc3R3aW5kb3dzbWVudSkKICAgICAgICAgc2VsZi51bmxvYWRfZXh0ZW5zaW9ucygpCiAgICAgICAgIHNlbGYuaW8uY2xvc2UoKQogICAgICAgICBzZWxmLmlvID0gTm9uZQpAQCAtMTAzMSwxMiArOTY4LDI1IEBACiAgICAgZGVmIGdldF9zdGFuZGFyZF9leHRlbnNpb25fbmFtZXMoc2VsZik6CiAgICAgICAgIHJldHVybiBpZGxlQ29uZi5HZXRFeHRlbnNpb25zKGVkaXRvcl9vbmx5PVRydWUpCiAKKyAgICBleHRmaWxlcyA9IHsgICMgbWFwIGNvbmZpZy1leHRlbnNpb24gc2VjdGlvbiBuYW1lcyB0byBuZXcgZmlsZSBuYW1lcworICAgICAgICAnQXV0b0NvbXBsZXRlJzogJ2F1dG9jb21wbGV0ZScsCisgICAgICAgICdBdXRvRXhwYW5kJzogJ2F1dG9leHBhbmQnLAorICAgICAgICAnQ2FsbFRpcHMnOiAnY2FsbHRpcHMnLAorICAgICAgICAnQ29kZUNvbnRleHQnOiAnY29kZWNvbnRleHQnLAorICAgICAgICAnRm9ybWF0UGFyYWdyYXBoJzogJ3BhcmFncmFwaCcsCisgICAgICAgICdQYXJlbk1hdGNoJzogJ3BhcmVubWF0Y2gnLAorICAgICAgICAnUnN0cmlwRXh0ZW5zaW9uJzogJ3JzdHJpcCcsCisgICAgICAgICdTY3JpcHRCaW5kaW5nJzogJ3J1bnNjcmlwdCcsCisgICAgICAgICdab29tSGVpZ2h0JzogJ3pvb21oZWlnaHQnLAorICAgICAgICB9CisKICAgICBkZWYgbG9hZF9leHRlbnNpb24oc2VsZiwgbmFtZSk6CisgICAgICAgIGZuYW1lID0gc2VsZi5leHRmaWxlcy5nZXQobmFtZSwgbmFtZSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCcuJyArIG5hbWUsIHBhY2thZ2U9X19wYWNrYWdlX18pCisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJy4nICsgZm5hbWUsIHBhY2thZ2U9X19wYWNrYWdlX18pCiAgICAgICAgICAgICBleGNlcHQgKEltcG9ydEVycm9yLCBUeXBlRXJyb3IpOgotICAgICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG5hbWUpCisgICAgICAgICAgICAgICAgbW9kID0gaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoZm5hbWUpCiAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgIHByaW50KCJcbkZhaWxlZCB0byBpbXBvcnQgZXh0ZW5zaW9uOiAiLCBuYW1lKQogICAgICAgICAgICAgcmFpc2UKQEAgLTEwNjAsNyArMTAxMCw3IEBACiAKICAgICBkZWYgYXBwbHlfYmluZGluZ3Moc2VsZiwga2V5ZGVmcz1Ob25lKToKICAgICAgICAgaWYga2V5ZGVmcyBpcyBOb25lOgotICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYuQmluZGluZ3MuZGVmYXVsdF9rZXlkZWZzCisgICAgICAgICAgICBrZXlkZWZzID0gc2VsZi5tYWlubWVudS5kZWZhdWx0X2tleWRlZnMKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICB0ZXh0LmtleWRlZnMgPSBrZXlkZWZzCiAgICAgICAgIGZvciBldmVudCwga2V5bGlzdCBpbiBrZXlkZWZzLml0ZW1zKCk6CkBAIC0xMDczLDkgKzEwMjMsOSBAQAogICAgICAgICBNZW51cyB0aGF0IGFyZSBhYnNlbnQgb3IgTm9uZSBpbiBzZWxmLm1lbnVkaWN0IGFyZSBpZ25vcmVkLgogICAgICAgICAiIiIKICAgICAgICAgaWYgbWVudWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIG1lbnVkZWZzID0gc2VsZi5CaW5kaW5ncy5tZW51ZGVmcworICAgICAgICAgICAgbWVudWRlZnMgPSBzZWxmLm1haW5tZW51Lm1lbnVkZWZzCiAgICAgICAgIGlmIGtleWRlZnMgaXMgTm9uZToKLSAgICAgICAgICAgIGtleWRlZnMgPSBzZWxmLkJpbmRpbmdzLmRlZmF1bHRfa2V5ZGVmcworICAgICAgICAgICAga2V5ZGVmcyA9IHNlbGYubWFpbm1lbnUuZGVmYXVsdF9rZXlkZWZzCiAgICAgICAgIG1lbnVkaWN0ID0gc2VsZi5tZW51ZGljdAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIGZvciBtbmFtZSwgZW50cnlsaXN0IGluIG1lbnVkZWZzOgpAQCAtMTMwMiw3ICsxMjUyLDcgQEAKICAgICAgICAgICAgICMgYWRqdXN0IGluZGVudGF0aW9uIGZvciBjb250aW51YXRpb25zIGFuZCBibG9jawogICAgICAgICAgICAgIyBvcGVuL2Nsb3NlIGZpcnN0IG5lZWQgdG8gZmluZCB0aGUgbGFzdCBzdG10CiAgICAgICAgICAgICBsbm8gPSBpbmRleDJsaW5lKHRleHQuaW5kZXgoJ2luc2VydCcpKQotICAgICAgICAgICAgeSA9IFB5UGFyc2UuUGFyc2VyKHNlbGYuaW5kZW50d2lkdGgsIHNlbGYudGFid2lkdGgpCisgICAgICAgICAgICB5ID0gcHlwYXJzZS5QYXJzZXIoc2VsZi5pbmRlbnR3aWR0aCwgc2VsZi50YWJ3aWR0aCkKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmNvbnRleHRfdXNlX3BzMToKICAgICAgICAgICAgICAgICBmb3IgY29udGV4dCBpbiBzZWxmLm51bV9jb250ZXh0X2xpbmVzOgogICAgICAgICAgICAgICAgICAgICBzdGFydGF0ID0gbWF4KGxubyAtIGNvbnRleHQsIDEpCkBAIC0xMzI2LDIyICsxMjc2LDIyIEBACiAgICAgICAgICAgICAgICAgeS5zZXRfbG8oMCkKIAogICAgICAgICAgICAgYyA9IHkuZ2V0X2NvbnRpbnVhdGlvbl90eXBlKCkKLSAgICAgICAgICAgIGlmIGMgIT0gUHlQYXJzZS5DX05PTkU6CisgICAgICAgICAgICBpZiBjICE9IHB5cGFyc2UuQ19OT05FOgogICAgICAgICAgICAgICAgICMgVGhlIGN1cnJlbnQgc3RtdCBoYXNuJ3QgZW5kZWQgeWV0LgotICAgICAgICAgICAgICAgIGlmIGMgPT0gUHlQYXJzZS5DX1NUUklOR19GSVJTVF9MSU5FOgorICAgICAgICAgICAgICAgIGlmIGMgPT0gcHlwYXJzZS5DX1NUUklOR19GSVJTVF9MSU5FOgogICAgICAgICAgICAgICAgICAgICAjIGFmdGVyIHRoZSBmaXJzdCBsaW5lIG9mIGEgc3RyaW5nOyBkbyBub3QgaW5kZW50IGF0IGFsbAogICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgZWxpZiBjID09IFB5UGFyc2UuQ19TVFJJTkdfTkVYVF9MSU5FUzoKKyAgICAgICAgICAgICAgICBlbGlmIGMgPT0gcHlwYXJzZS5DX1NUUklOR19ORVhUX0xJTkVTOgogICAgICAgICAgICAgICAgICAgICAjIGluc2lkZSBhIHN0cmluZyB3aGljaCBzdGFydGVkIGJlZm9yZSB0aGlzIGxpbmU7CiAgICAgICAgICAgICAgICAgICAgICMganVzdCBtaW1pYyB0aGUgY3VycmVudCBpbmRlbnQKICAgICAgICAgICAgICAgICAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsIGluZGVudCkKLSAgICAgICAgICAgICAgICBlbGlmIGMgPT0gUHlQYXJzZS5DX0JSQUNLRVQ6CisgICAgICAgICAgICAgICAgZWxpZiBjID09IHB5cGFyc2UuQ19CUkFDS0VUOgogICAgICAgICAgICAgICAgICAgICAjIGxpbmUgdXAgd2l0aCB0aGUgZmlyc3QgKGlmIGFueSkgZWxlbWVudCBvZiB0aGUKICAgICAgICAgICAgICAgICAgICAgIyBsYXN0IG9wZW4gYnJhY2tldCBzdHJ1Y3R1cmU7IGVsc2UgaW5kZW50IG9uZQogICAgICAgICAgICAgICAgICAgICAjIGxldmVsIGJleW9uZCB0aGUgaW5kZW50IG9mIHRoZSBsaW5lIHdpdGggdGhlCiAgICAgICAgICAgICAgICAgICAgICMgbGFzdCBvcGVuIGJyYWNrZXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZWluZGVudF90byh5LmNvbXB1dGVfYnJhY2tldF9pbmRlbnQoKSkKLSAgICAgICAgICAgICAgICBlbGlmIGMgPT0gUHlQYXJzZS5DX0JBQ0tTTEFTSDoKKyAgICAgICAgICAgICAgICBlbGlmIGMgPT0gcHlwYXJzZS5DX0JBQ0tTTEFTSDoKICAgICAgICAgICAgICAgICAgICAgIyBpZiBtb3JlIHRoYW4gb25lIGxpbmUgaW4gdGhpcyBzdG10IGFscmVhZHksIGp1c3QKICAgICAgICAgICAgICAgICAgICAgIyBtaW1pYyB0aGUgY3VycmVudCBpbmRlbnQ7IGVsc2UgaWYgaW5pdGlhbCBsaW5lCiAgICAgICAgICAgICAgICAgICAgICMgaGFzIGEgc3RhcnQgb24gYW4gYXNzaWdubWVudCBzdG10LCBpbmRlbnQgdG8KQEAgLTE1NjksOSArMTUxOSw2IEBACiAgICAgICAgICAgICBicmVhawogICAgIHJldHVybiByYXcsIGVmZmVjdGl2ZQogCi1pbXBvcnQgdG9rZW5pemUKLV90b2tlbml6ZSA9IHRva2VuaXplCi1kZWwgdG9rZW5pemUKIAogY2xhc3MgSW5kZW50U2VhcmNoZXIob2JqZWN0KToKIApAQCAtMTU5Niw4ICsxNTQzLDggQEAKICAgICAgICAgcmV0dXJuIHNlbGYudGV4dC5nZXQobWFyaywgbWFyayArICIgbGluZWVuZCsxYyIpCiAKICAgICBkZWYgdG9rZW5lYXRlcihzZWxmLCB0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSwKLSAgICAgICAgICAgICAgICAgICBJTkRFTlQ9X3Rva2VuaXplLklOREVOVCwKLSAgICAgICAgICAgICAgICAgICBOQU1FPV90b2tlbml6ZS5OQU1FLAorICAgICAgICAgICAgICAgICAgIElOREVOVD10b2tlbml6ZS5JTkRFTlQsCisgICAgICAgICAgICAgICAgICAgTkFNRT10b2tlbml6ZS5OQU1FLAogICAgICAgICAgICAgICAgICAgIE9QRU5FUlM9KCdjbGFzcycsICdkZWYnLCAnZm9yJywgJ2lmJywgJ3RyeScsICd3aGlsZScpKToKICAgICAgICAgaWYgc2VsZi5maW5pc2hlZDoKICAgICAgICAgICAgIHBhc3MKQEAgLTE2MDgsMTkgKzE1NTUsMTkgQEAKICAgICAgICAgICAgIHNlbGYuZmluaXNoZWQgPSAxCiAKICAgICBkZWYgcnVuKHNlbGYpOgotICAgICAgICBzYXZlX3RhYnNpemUgPSBfdG9rZW5pemUudGFic2l6ZQotICAgICAgICBfdG9rZW5pemUudGFic2l6ZSA9IHNlbGYudGFid2lkdGgKKyAgICAgICAgc2F2ZV90YWJzaXplID0gdG9rZW5pemUudGFic2l6ZQorICAgICAgICB0b2tlbml6ZS50YWJzaXplID0gc2VsZi50YWJ3aWR0aAogICAgICAgICB0cnk6CiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgdG9rZW5zID0gX3Rva2VuaXplLmdlbmVyYXRlX3Rva2VucyhzZWxmLnJlYWRsaW5lKQorICAgICAgICAgICAgICAgIHRva2VucyA9IHRva2VuaXplLmdlbmVyYXRlX3Rva2VucyhzZWxmLnJlYWRsaW5lKQogICAgICAgICAgICAgICAgIGZvciB0b2tlbiBpbiB0b2tlbnM6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW5lYXRlcigqdG9rZW4pCi0gICAgICAgICAgICBleGNlcHQgKF90b2tlbml6ZS5Ub2tlbkVycm9yLCBTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGNlcHQgKHRva2VuaXplLlRva2VuRXJyb3IsIFN5bnRheEVycm9yKToKICAgICAgICAgICAgICAgICAjIHNpbmNlIHdlIGN1dCBvZmYgdGhlIHRva2VuaXplciBlYXJseSwgd2UgY2FuIHRyaWdnZXIKICAgICAgICAgICAgICAgICAjIHNwdXJpb3VzIGVycm9ycwogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIF90b2tlbml6ZS50YWJzaXplID0gc2F2ZV90YWJzaXplCisgICAgICAgICAgICB0b2tlbml6ZS50YWJzaXplID0gc2F2ZV90YWJzaXplCiAgICAgICAgIHJldHVybiBzZWxmLmJsa29wZW5saW5lLCBzZWxmLmluZGVudGVkbGluZQogCiAjIyMgZW5kIGF1dG9pbmRlbnQgY29kZSAjIyMKQEAgLTE2NDQsNyArMTU5MSw3IEBACiAgICAga2V5bGlzdCA9IGtleWRlZnMuZ2V0KGV2ZW50bmFtZSkKICAgICAjIGlzc3VlMTA5NDA6IHRlbXBvcmFyeSB3b3JrYXJvdW5kIHRvIHByZXZlbnQgaGFuZyB3aXRoIE9TIFggQ29jb2EgVGsgOC41CiAgICAgIyBpZiBub3Qga2V5bGlzdDoKLSAgICBpZiAobm90IGtleWxpc3QpIG9yIChtYWNvc3hTdXBwb3J0LmlzQ29jb2FUaygpIGFuZCBldmVudG5hbWUgaW4geworICAgIGlmIChub3Qga2V5bGlzdCkgb3IgKG1hY29zeC5pc0NvY29hVGsoKSBhbmQgZXZlbnRuYW1lIGluIHsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPDxvcGVuLW1vZHVsZT4+IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiPDxnb3RvLWxpbmU+PiIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjw8Y2hhbmdlLWluZGVudHdpZHRoPj4ifSk6CkBAIC0xNjc5LDEyICsxNjI2LDE1IEBACiAgICAgICAgIGZpbGVuYW1lID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICBmaWxlbmFtZSA9IE5vbmUKLSAgICBtYWNvc3hTdXBwb3J0LnNldHVwQXBwKHJvb3QsIE5vbmUpCisgICAgbWFjb3N4LnNldHVwQXBwKHJvb3QsIE5vbmUpCiAgICAgZWRpdCA9IEVkaXRvcldpbmRvdyhyb290PXJvb3QsIGZpbGVuYW1lPWZpbGVuYW1lKQogICAgIGVkaXQudGV4dC5iaW5kKCI8PGNsb3NlLWFsbC13aW5kb3dzPj4iLCBlZGl0LmNsb3NlX2V2ZW50KQogICAgICMgRG9lcyBub3Qgc3RvcCBlcnJvciwgbmVpdGhlciBkb2VzIGZvbGxvd2luZwogICAgICMgZWRpdC50ZXh0LmJpbmQoIjw8Y2xvc2Utd2luZG93Pj4iLCBlZGl0LmNsb3NlX2V2ZW50KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfZWRpdG9yJywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX2VkaXRvcl93aW5kb3cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weSBiL0xpYi9pZGxlbGliL2ZpbGVsaXN0LnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0ZpbGVMaXN0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9maWxlbGlzdC5weQppbmRleCBhOTk4OWE4Li5mNDZhZDdjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9GaWxlTGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi9maWxlbGlzdC5weQpAQCAtMSw0ICsxLDUgQEAKIGltcG9ydCBvcworCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKQEAgLTYsNyArNyw3IEBACiBjbGFzcyBGaWxlTGlzdDoKIAogICAgICMgTi5CLiB0aGlzIGltcG9ydCBvdmVycmlkZGVuIGluIFB5U2hlbGxGaWxlTGlzdC4KLSAgICBmcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKKyAgICBmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290KToKICAgICAgICAgc2VsZi5yb290ID0gcm9vdApAQCAtMTExLDcgKzExMiw3IEBACiAKIAogZGVmIF90ZXN0KCk6Ci0gICAgZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgZml4d29yZGJyZWFrcworICAgIGZyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IGZpeHdvcmRicmVha3MKICAgICBpbXBvcnQgc3lzCiAgICAgcm9vdCA9IFRrKCkKICAgICBmaXh3b3JkYnJlYWtzKHJvb3QpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvZ3JlcC5weQpzaW1pbGFyaXR5IGluZGV4IDgyJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9HcmVwRGlhbG9nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9ncmVwLnB5CmluZGV4IDcyMWIyMzEuLjY0YmEyOGQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0dyZXBEaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvZ3JlcC5weQpAQCAtMSwxNyArMSwxOSBAQAotaW1wb3J0IG9zCiBpbXBvcnQgZm5tYXRjaAotaW1wb3J0IHJlICAjIGZvciBodGVzdAoraW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1mcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgQm9vbGVhblZhciwgQ2hlY2tidXR0b24gICMgZm9yIEdyZXBEaWFsb2cKLWZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQsIEJ1dHRvbiwgU0VMLCBFTkQgICMgZm9yIGh0ZXN0Ci1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKLSMgSW1wb3J0aW5nIE91dHB1dFdpbmRvdyBmYWlscyBkdWUgdG8gaW1wb3J0IGxvb3AKKworZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIEJvb2xlYW5WYXIKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IENoZWNrYnV0dG9uCisKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQorCisjIEltcG9ydGluZyBPdXRwdXRXaW5kb3cgaGVyZSBmYWlscyBkdWUgdG8gaW1wb3J0IGxvb3AKICMgRWRpdG9yV2luZG93IC0+IEdyZXBEaWFsb3AgLT4gT3V0cHV0V2luZG93IC0+IEVkaXRvcldpbmRvdwogCiBkZWYgZ3JlcCh0ZXh0LCBpbz1Ob25lLCBmbGlzdD1Ob25lKToKICAgICByb290ID0gdGV4dC5fcm9vdCgpCi0gICAgZW5naW5lID0gU2VhcmNoRW5naW5lLmdldChyb290KQorICAgIGVuZ2luZSA9IHNlYXJjaGVuZ2luZS5nZXQocm9vdCkKICAgICBpZiBub3QgaGFzYXR0cihlbmdpbmUsICJfZ3JlcGRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX2dyZXBkaWFsb2cgPSBHcmVwRGlhbG9nKHJvb3QsIGVuZ2luZSwgZmxpc3QpCiAgICAgZGlhbG9nID0gZW5naW5lLl9ncmVwZGlhbG9nCkBAIC00NywxMyArNDksMTAgQEAKICAgICAgICAgc2VsZi5nbG9iZW50ID0gc2VsZi5tYWtlX2VudHJ5KCJJbiBmaWxlczoiLCBzZWxmLmdsb2J2YXIpWzBdCiAKICAgICBkZWYgY3JlYXRlX290aGVyX2J1dHRvbnMoc2VsZik6Ci0gICAgICAgIGYgPSBzZWxmLm1ha2VfZnJhbWUoKVswXQotCi0gICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGYsIGFuY2hvcj0idyIsCi0gICAgICAgICAgICAgICAgdmFyaWFibGU9c2VsZi5yZWN2YXIsCisgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKAorICAgICAgICAgICAgICAgIHNlbGYubWFrZV9mcmFtZSgpWzBdLCB2YXJpYWJsZT1zZWxmLnJlY3ZhciwKICAgICAgICAgICAgICAgICB0ZXh0PSJSZWN1cnNlIGRvd24gc3ViZGlyZWN0b3JpZXMiKQogICAgICAgICBidG4ucGFjayhzaWRlPSJ0b3AiLCBmaWxsPSJib3RoIikKLSAgICAgICAgYnRuLnNlbGVjdCgpCiAKICAgICBkZWYgY3JlYXRlX2NvbW1hbmRfYnV0dG9ucyhzZWxmKToKICAgICAgICAgU2VhcmNoRGlhbG9nQmFzZS5jcmVhdGVfY29tbWFuZF9idXR0b25zKHNlbGYpCkBAIC02Nyw3ICs2Niw3IEBACiAgICAgICAgIGlmIG5vdCBwYXRoOgogICAgICAgICAgICAgc2VsZi50b3AuYmVsbCgpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZnJvbSBpZGxlbGliLk91dHB1dFdpbmRvdyBpbXBvcnQgT3V0cHV0V2luZG93ICAjIGxlYXZlIGhlcmUhCisgICAgICAgIGZyb20gaWRsZWxpYi5vdXR3aW4gaW1wb3J0IE91dHB1dFdpbmRvdyAgIyBsZWF2ZSBoZXJlIQogICAgICAgICBzYXZlID0gc3lzLnN0ZG91dAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gT3V0cHV0V2luZG93KHNlbGYuZmxpc3QpCkBAIC0xMzEsMTQgKzEzMCwxNiBAQAogCiAKIGRlZiBfZ3JlcF9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgIGZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgR3JlcERpYWxvZyIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIFNFTCwgRU5ECisgICAgZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgQnV0dG9uCisgICAgZnJvbSBpZGxlbGliLnB5c2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgR3JlcERpYWxvZyIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAotICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHJvb3QpCi0gICAgdGV4dCA9IFRleHQocm9vdCwgaGVpZ2h0PTUpCisgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QodG9wKQorICAgIHRleHQgPSBUZXh0KHRvcCwgaGVpZ2h0PTUpCiAgICAgdGV4dC5wYWNrKCkKIAogICAgIGRlZiBzaG93X2dyZXBfZGlhbG9nKCk6CkBAIC0xNDYsOSArMTQ3LDggQEAKICAgICAgICAgZ3JlcCh0ZXh0LCBmbGlzdD1mbGlzdCkKICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKFNFTCwgIjEuMCIsIEVORCkKIAotICAgIGJ1dHRvbiA9IEJ1dHRvbihyb290LCB0ZXh0PSJTaG93IEdyZXBEaWFsb2ciLCBjb21tYW5kPXNob3dfZ3JlcF9kaWFsb2cpCisgICAgYnV0dG9uID0gQnV0dG9uKHRvcCwgdGV4dD0iU2hvdyBHcmVwRGlhbG9nIiwgY29tbWFuZD1zaG93X2dyZXBfZGlhbG9nKQogICAgIGJ1dHRvbi5wYWNrKCkKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2hlbHAucHkgYi9MaWIvaWRsZWxpYi9oZWxwLnB5CmluZGV4IGE3MDA4ZTkuLjc3ZTAxYTMgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2hlbHAucHkKKysrIGIvTGliL2lkbGVsaWIvaGVscC5weQpAQCAtNCw3ICs0LDcgQEAKIAogSGVscCA9PiBBYm91dCBJRExFOiBkaXBsYXkgQWJvdXQgSWRsZSBkaWFsb2cKIAotPHRvIGJlIG1vdmVkIGhlcmUgZnJvbSBhYm91dERpYWxvZy5weT4KKzx0byBiZSBtb3ZlZCBoZXJlIGZyb20gaGVscF9hYm91dC5weT4KIAogCiBIZWxwID0+IElETEUgSGVscDogRGlzcGxheSBoZWxwLmh0bWwgd2l0aCBwcm9wZXIgZm9ybWF0dGluZy4KQEAgLTI1LDE1ICsyNSwxNCBAQAogc2hvd19pZGxlaGVscCAtIENyZWF0ZSBIZWxwV2luZG93LiAgQ2FsbGVkIGluIEVkaXRvcldpbmRvdy5oZWxwX2RpYWxvZy4KICIiIgogZnJvbSBodG1sLnBhcnNlciBpbXBvcnQgSFRNTFBhcnNlcgotZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBpc2RpciwgaXNmaWxlLCBqb2luCitmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGRpcm5hbWUsIGlzZmlsZSwgam9pbgogZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24KLWZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgU2Nyb2xsYmFyLCBNZW51LCBNZW51YnV0dG9uCi1mcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKIAotdXNlX3R0ayA9IEZhbHNlICMgdW50aWwgYXZhaWxhYmxlIHRvIGltcG9ydAotaWYgdXNlX3R0azoKLSAgICBmcm9tIHRraW50ZXIudHRrIGltcG9ydCBNZW51YnV0dG9uCitmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBGcmFtZSwgVGV4dCwgTWVudQorZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgTWVudWJ1dHRvbiwgU2Nyb2xsYmFyCitmcm9tIHRraW50ZXIgaW1wb3J0IGZvbnQgYXMgdGtmb250CisKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKICMjIEFib3V0IElETEUgIyMKIApAQCAtMTk3LDE1ICsxOTYsMTggQEAKICAgICAiRGlzcGxheSBodG1sIHRleHQsIHNjcm9sbGJhciwgYW5kIHRvYy4iCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgZmlsZW5hbWUpOgogICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBwYXJlbnQpCi0gICAgICAgIHRleHQgPSBIZWxwVGV4dChzZWxmLCBmaWxlbmFtZSkKKyAgICAgICAgIyBrZWVwIHJlZmVyZW5jZXMgdG8gd2lkZ2V0cyBmb3IgdGVzdCBhY2Nlc3MuCisgICAgICAgIHNlbGYudGV4dCA9IHRleHQgPSBIZWxwVGV4dChzZWxmLCBmaWxlbmFtZSkKICAgICAgICAgc2VsZlsnYmFja2dyb3VuZCddID0gdGV4dFsnYmFja2dyb3VuZCddCi0gICAgICAgIHNjcm9sbCA9IFNjcm9sbGJhcihzZWxmLCBjb21tYW5kPXRleHQueXZpZXcpCisgICAgICAgIHNlbGYudG9jID0gdG9jID0gc2VsZi50b2NfbWVudSh0ZXh0KQorICAgICAgICBzZWxmLnNjcm9sbCA9IHNjcm9sbCA9IFNjcm9sbGJhcihzZWxmLCBjb21tYW5kPXRleHQueXZpZXcpCiAgICAgICAgIHRleHRbJ3lzY3JvbGxjb21tYW5kJ10gPSBzY3JvbGwuc2V0CisKICAgICAgICAgc2VsZi5yb3djb25maWd1cmUoMCwgd2VpZ2h0PTEpCiAgICAgICAgIHNlbGYuY29sdW1uY29uZmlndXJlKDEsIHdlaWdodD0xKSAgIyB0ZXh0Ci0gICAgICAgIHNlbGYudG9jX21lbnUodGV4dCkuZ3JpZChjb2x1bW49MCwgcm93PTAsIHN0aWNreT0nbncnKQotICAgICAgICB0ZXh0LmdyaWQoY29sdW1uPTEsIHJvdz0wLCBzdGlja3k9J25zZXcnKQotICAgICAgICBzY3JvbGwuZ3JpZChjb2x1bW49Miwgcm93PTAsIHN0aWNreT0nbnMnKQorICAgICAgICB0b2MuZ3JpZChyb3c9MCwgY29sdW1uPTAsIHN0aWNreT0nbncnKQorICAgICAgICB0ZXh0LmdyaWQocm93PTAsIGNvbHVtbj0xLCBzdGlja3k9J25zZXcnKQorICAgICAgICBzY3JvbGwuZ3JpZChyb3c9MCwgY29sdW1uPTIsIHN0aWNreT0nbnMnKQogCiAgICAgZGVmIHRvY19tZW51KHNlbGYsIHRleHQpOgogICAgICAgICAiQ3JlYXRlIHRhYmxlIG9mIGNvbnRlbnRzIGFzIGRyb3AtZG93biBtZW51LiIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2hlbHAudHh0IGIvTGliL2lkbGVsaWIvaGVscC50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5ZmJlMGIuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaGVscC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzNzIgKzAsMCBAQAotVGhpcyBmaWxlLCBpZGxlbGliL2hlbHAudHh0IGlzIG91dC1vZi1kYXRlIGFuZCBubyBsb25nZXIgdXNlZCBieSBJZGxlLgotSXQgaXMgZGVwcmVjYXRlZCBhbmQgd2lsbCBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUsIHBvc3NpYmx5IGluIDMuNgotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi1bU2VlIHRoZSBlbmQgb2YgdGhpcyBmaWxlIGZvciAqKiBUSVBTICoqIG9uIHVzaW5nIElETEUgISFdCi0KLUlETEUgaXMgdGhlIFB5dGhvbiBJREUgYnVpbHQgd2l0aCB0aGUgdGtpbnRlciBHVUkgdG9vbGtpdC4KLQotSURMRSBoYXMgdGhlIGZvbGxvd2luZyBmZWF0dXJlczoKLS1jb2RlZCBpbiAxMDAlIHB1cmUgUHl0aG9uLCB1c2luZyB0aGUgdGtpbnRlciBHVUkgdG9vbGtpdAotLWNyb3NzLXBsYXRmb3JtOiB3b3JrcyBvbiBXaW5kb3dzLCBVbml4LCBhbmQgT1MgWAotLW11bHRpLXdpbmRvdyB0ZXh0IGVkaXRvciB3aXRoIG11bHRpcGxlIHVuZG8sIFB5dGhvbiBjb2xvcml6aW5nLCBzbWFydCBpbmRlbnQsCi1jYWxsIHRpcHMsIGFuZCBtYW55IG90aGVyIGZlYXR1cmVzCi0tUHl0aG9uIHNoZWxsIHdpbmRvdyAoYS5rLmEgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIpCi0tZGVidWdnZXIgKG5vdCBjb21wbGV0ZSwgYnV0IHlvdSBjYW4gc2V0IGJyZWFrcG9pbnRzLCB2aWV3IGFuZCBzdGVwKQotCi1NZW51czoKLQotSURMRSBoYXMgdHdvIHdpbmRvdyB0eXBlcyB0aGUgU2hlbGwgd2luZG93IGFuZCB0aGUgRWRpdG9yIHdpbmRvdy4gSXQgaXMKLXBvc3NpYmxlIHRvIGhhdmUgbXVsdGlwbGUgZWRpdG9yIHdpbmRvd3Mgc2ltdWx0YW5lb3VzbHkuIElETEUncwotbWVudXMgZHluYW1pY2FsbHkgY2hhbmdlIGJhc2VkIG9uIHdoaWNoIHdpbmRvdyBpcyBjdXJyZW50bHkgc2VsZWN0ZWQuIEVhY2ggbWVudQotZG9jdW1lbnRlZCBiZWxvdyBpbmRpY2F0ZXMgd2hpY2ggd2luZG93IHR5cGUgaXQgaXMgYXNzb2NpYXRlZCB3aXRoLiAKLQotRmlsZSBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBOZXcgRmlsZSAgICAgICAgIC0tIENyZWF0ZSBhIG5ldyBmaWxlIGVkaXRpbmcgd2luZG93Ci0gICAgICAgIE9wZW4uLi4gICAgICAgICAgLS0gT3BlbiBhbiBleGlzdGluZyBmaWxlCi0gICAgICAgIE9wZW4gTW9kdWxlLi4uICAgLS0gT3BlbiBhbiBleGlzdGluZyBtb2R1bGUgKHNlYXJjaGVzIHN5cy5wYXRoKQotICAgICAgICBSZWNlbnQgRmlsZXMuLi4gIC0tIE9wZW4gYSBsaXN0IG9mIHJlY2VudCBmaWxlcwotICAgICAgICBDbGFzcyBCcm93c2VyICAgIC0tIFNob3cgY2xhc3NlcyBhbmQgbWV0aG9kcyBpbiBjdXJyZW50IGZpbGUKLSAgICAgICAgUGF0aCBCcm93c2VyICAgICAtLSBTaG93IHN5cy5wYXRoIGRpcmVjdG9yaWVzLCBtb2R1bGVzLCBjbGFzc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBtZXRob2RzCi0gICAgICAgIC0tLQotICAgICAgICBTYXZlICAgICAgICAgICAgIC0tIFNhdmUgY3VycmVudCB3aW5kb3cgdG8gdGhlIGFzc29jaWF0ZWQgZmlsZSAodW5zYXZlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvd3MgaGF2ZSBhICogYmVmb3JlIGFuZCBhZnRlciB0aGUgd2luZG93IHRpdGxlKQotCi0gICAgICAgIFNhdmUgQXMuLi4gICAgICAgLS0gU2F2ZSBjdXJyZW50IHdpbmRvdyB0byBuZXcgZmlsZSwgd2hpY2ggYmVjb21lcwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBhc3NvY2lhdGVkIGZpbGUKLSAgICAgICAgU2F2ZSBDb3B5IEFzLi4uICAtLSBTYXZlIGN1cnJlbnQgd2luZG93IHRvIGRpZmZlcmVudCBmaWxlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aG91dCBjaGFuZ2luZyB0aGUgYXNzb2NpYXRlZCBmaWxlCi0gICAgICAgIC0tLQotICAgICAgICBQcmludCBXaW5kb3cgICAgIC0tIFByaW50IHRoZSBjdXJyZW50IHdpbmRvdwotICAgICAgICAtLS0KLSAgICAgICAgQ2xvc2UgICAgICAgICAgICAtLSBDbG9zZSBjdXJyZW50IHdpbmRvdyAoYXNrcyB0byBzYXZlIGlmIHVuc2F2ZWQpCi0gICAgICAgIEV4aXQgICAgICAgICAgICAgLS0gQ2xvc2UgYWxsIHdpbmRvd3MsIHF1aXQgKGFza3MgdG8gc2F2ZSBpZiB1bnNhdmVkKQotCi1FZGl0IE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIFVuZG8gICAgICAgICAgICAgLS0gVW5kbyBsYXN0IGNoYW5nZSB0byBjdXJyZW50IHdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIG1heGltdW0gb2YgMTAwMCBjaGFuZ2VzIG1heSBiZSB1bmRvbmUpCi0gICAgICAgIFJlZG8gICAgICAgICAgICAgLS0gUmVkbyBsYXN0IHVuZG9uZSBjaGFuZ2UgdG8gY3VycmVudCB3aW5kb3cKLSAgICAgICAgLS0tCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIFNlbGVjdCBBbGwgICAgICAgLS0gU2VsZWN0IHRoZSBlbnRpcmUgY29udGVudHMgb2YgdGhlIGVkaXQgYnVmZmVyCi0gICAgICAgIC0tLQotICAgICAgICBGaW5kLi4uICAgICAgICAgIC0tIE9wZW4gYSBzZWFyY2ggZGlhbG9nIGJveCB3aXRoIG1hbnkgb3B0aW9ucwotICAgICAgICBGaW5kIEFnYWluICAgICAgIC0tIFJlcGVhdCBsYXN0IHNlYXJjaAotICAgICAgICBGaW5kIFNlbGVjdGlvbiAgIC0tIFNlYXJjaCBmb3IgdGhlIHN0cmluZyBpbiB0aGUgc2VsZWN0aW9uCi0gICAgICAgIEZpbmQgaW4gRmlsZXMuLi4gLS0gT3BlbiBhIHNlYXJjaCBkaWFsb2cgYm94IGZvciBzZWFyY2hpbmcgZmlsZXMKLSAgICAgICAgUmVwbGFjZS4uLiAgICAgICAtLSBPcGVuIGEgc2VhcmNoLWFuZC1yZXBsYWNlIGRpYWxvZyBib3gKLSAgICAgICAgR28gdG8gTGluZSAgICAgICAtLSBBc2sgZm9yIGEgbGluZSBudW1iZXIgYW5kIHNob3cgdGhhdCBsaW5lCi0gICAgICAgIEV4cGFuZCBXb3JkICAgICAgLS0gRXhwYW5kIHRoZSB3b3JkIHlvdSBoYXZlIHR5cGVkIHRvIG1hdGNoIGFub3RoZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JkIGluIHRoZSBzYW1lIGJ1ZmZlcjsgcmVwZWF0IHRvIGdldCBhCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlmZmVyZW50IGV4cGFuc2lvbgotICAgICAgICBTaG93IENhbGx0aXAgICAgIC0tIEFmdGVyIGFuIHVuY2xvc2VkIHBhcmVudGhlc2lzIGZvciBhIGZ1bmN0aW9uLCBvcGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBzbWFsbCB3aW5kb3cgd2l0aCBmdW5jdGlvbiBwYXJhbWV0ZXIgaGludHMKLSAgICAgICAgU2hvdyBQYXJlbnMgICAgICAtLSBIaWdobGlnaHQgdGhlIHN1cnJvdW5kaW5nIHBhcmVudGhlc2lzCi0gICAgICAgIFNob3cgQ29tcGxldGlvbnMgLS0gT3BlbiBhIHNjcm9sbCB3aW5kb3cgYWxsb3dpbmcgc2VsZWN0aW9uIGtleXdvcmRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGF0dHJpYnV0ZXMuIChzZWUgJypUSVBTKicsIGJlbG93KQotCi1Gb3JtYXQgTWVudSAoRWRpdG9yIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBJbmRlbnQgUmVnaW9uICAgICAgIC0tIFNoaWZ0IHNlbGVjdGVkIGxpbmVzIHJpZ2h0IGJ5IHRoZSBpbmRlbnQgd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA0IHNwYWNlcykKLSAgICAgICAgRGVkZW50IFJlZ2lvbiAgICAgICAtLSBTaGlmdCBzZWxlY3RlZCBsaW5lcyBsZWZ0IGJ5IHRoZSBpbmRlbnQgd2lkdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZGVmYXVsdCA0IHNwYWNlcykKLSAgICAgICAgQ29tbWVudCBPdXQgUmVnaW9uICAtLSBJbnNlcnQgIyMgaW4gZnJvbnQgb2Ygc2VsZWN0ZWQgbGluZXMKLSAgICAgICAgVW5jb21tZW50IFJlZ2lvbiAgICAtLSBSZW1vdmUgbGVhZGluZyAjIG9yICMjIGZyb20gc2VsZWN0ZWQgbGluZXMKLSAgICAgICAgVGFiaWZ5IFJlZ2lvbiAgICAgICAtLSBUdXJucyAqbGVhZGluZyogc3RyZXRjaGVzIG9mIHNwYWNlcyBpbnRvIHRhYnMuCi0gICAgICAgICAgICAgICAgKE5vdGU6IFdlIHJlY29tbWVuZCB1c2luZyA0IHNwYWNlIGJsb2NrcyB0byBpbmRlbnQgUHl0aG9uIGNvZGUuKQotICAgICAgICBVbnRhYmlmeSBSZWdpb24gICAgIC0tIFR1cm4gKmFsbCogdGFicyBpbnRvIHRoZSBjb3JyZW50IG51bWJlciBvZiBzcGFjZXMKLSAgICAgICAgVG9nZ2xlIHRhYnMgICAgICAgICAtLSBPcGVuIGEgZGlhbG9nIHRvIHN3aXRjaCBiZXR3ZWVuIGluZGVudGluZyB3aXRoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BhY2VzIGFuZCB0YWJzLgotICAgICAgICBOZXcgSW5kZW50IFdpZHRoLi4uIC0tIE9wZW4gYSBkaWFsb2cgdG8gY2hhbmdlIGluZGVudCB3aWR0aC4gIFRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2VwdGVkIGRlZmF1bHQgYnkgdGhlIFB5dGhvbiBjb21tdW5pdHkgaXMgNAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwYWNlcy4KLSAgICAgICAgRm9ybWF0IFBhcmFncmFwaCAgICAtLSBSZWZvcm1hdCB0aGUgY3VycmVudCBibGFuay1saW5lLXNlcGFyYXRlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFncmFwaC4gQWxsIGxpbmVzIGluIHRoZSBwYXJhZ3JhcGggd2lsbCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdHRlZCB0byBsZXNzIHRoYW4gODAgY29sdW1ucy4KLSAgICAgICAgLS0tCi0gICAgICAgIFN0cmlwIHRyYWlsaW5nIHdoaXRlc3BhY2UgLS0gUmVtb3ZlZCBhbnkgc3BhY2UgY2hhcmFjdGVycyBhZnRlciB0aGUgZW5kCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGhlIGxhc3Qgbm9uLXNwYWNlIGNoYXJhY3RlcgotCi1SdW4gTWVudSAoRWRpdG9yIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBQeXRob24gU2hlbGwgLS0gT3BlbiBvciB3YWtlIHVwIHRoZSBQeXRob24gc2hlbGwgd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBDaGVjayBNb2R1bGUgLS0gQ2hlY2sgdGhlIHN5bnRheCBvZiB0aGUgbW9kdWxlIGN1cnJlbnRseSBvcGVuIGluIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgRWRpdG9yIHdpbmRvdy4gIElmIHRoZSBtb2R1bGUgaGFzIG5vdCBiZWVuIHNhdmVkIElETEUKLSAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvbXB0IHRoZSB1c2VyIHRvIHNhdmUgdGhlIGNvZGUuCi0gICAgICAgIFJ1biBNb2R1bGUgICAtLSBSZXN0YXJ0IHRoZSBzaGVsbCB0byBjbGVhbiB0aGUgZW52aXJvbm1lbnQsIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgIGV4ZWN1dGUgdGhlIGN1cnJlbnRseSBvcGVuIG1vZHVsZS4gSWYgdGhlIG1vZHVsZSBoYXMKLSAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBiZWVuIHNhdmVkIElETEUgd2lsbCBwcm9tcHQgdGhlIHVzZXIgdG8gc2F2ZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvZGUuCi0KLVNoZWxsIE1lbnUgKFNoZWxsIHdpbmRvdyBvbmx5KToKLQotICAgICAgICBWaWV3IExhc3QgUmVzdGFydCAtLSBTY3JvbGwgdGhlIHNoZWxsIHdpbmRvdyB0byB0aGUgbGFzdCBTaGVsbCByZXN0YXJ0Ci0gICAgICAgIFJlc3RhcnQgU2hlbGwgICAgIC0tIFJlc3RhcnQgdGhlIHNoZWxsIHRvIGNsZWFuIHRoZSBlbnZpcm9ubWVudAotCi1EZWJ1ZyBNZW51IChTaGVsbCB3aW5kb3cgb25seSk6Ci0KLSAgICAgICAgR28gdG8gRmlsZS9MaW5lICAgLS0gTG9vayBhcm91bmQgdGhlIGluc2VydCBwb2ludCBmb3IgYSBmaWxlbmFtZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgbGluZSBudW1iZXIsIG9wZW4gdGhlIGZpbGUsIGFuZCBzaG93IHRoZSBsaW5lLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VmdWwgdG8gdmlldyB0aGUgc291cmNlIGxpbmVzIHJlZmVyZW5jZWQgaW4gYW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uIHRyYWNlYmFjay4gIEF2YWlsYWJsZSBpbiB0aGUgY29udGV4dAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZW51IG9mIHRoZSBTaGVsbCB3aW5kb3cuCi0gICAgICAgIERlYnVnZ2VyICh0b2dnbGUpIC0tIFRoaXMgZmVhdHVyZSBpcyBub3QgY29tcGxldGUgYW5kIGNvbnNpZGVyZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZXJpbWVudGFsLiBSdW4gY29tbWFuZHMgaW4gdGhlIHNoZWxsIHVuZGVyIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWJ1Z2dlci4KLSAgICAgICAgU3RhY2sgVmlld2VyICAgICAgLS0gU2hvdyB0aGUgc3RhY2sgdHJhY2ViYWNrIG9mIHRoZSBsYXN0IGV4Y2VwdGlvbgotICAgICAgICBBdXRvLW9wZW4gU3RhY2sgVmlld2VyICh0b2dnbGUpIC0tIFRvZ2dsZSBhdXRvbWF0aWNhbGx5IG9wZW5pbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgdmlld2VyIG9uIHVuaGFuZGxlZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdGlvbgotCi1PcHRpb25zIE1lbnUgKFNoZWxsIGFuZCBFZGl0b3IpOgotCi0gICAgICAgIENvbmZpZ3VyZSBJRExFIC0tIE9wZW4gYSBjb25maWd1cmF0aW9uIGRpYWxvZy4gIEZvbnRzLCBpbmRlbnRhdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAga2V5YmluZGluZ3MsIGFuZCBjb2xvciB0aGVtZXMgbWF5IGJlIGFsdGVyZWQuCi0gICAgICAgICAgICAgICAgICAgICAgICAgIFN0YXJ0dXAgUHJlZmVyZW5jZXMgbWF5IGJlIHNldCwgYW5kIGFkZGl0aW9uYWwgSGVscAotICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzIGNhbiBiZSBzcGVjaWZpZWQuICBPbiBPUyBYLCBvcGVuIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGRpYWxvZyBieSBzZWxlY3RpbmcgUHJlZmVyZW5jZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGFwcGxpY2F0aW9uIG1lbnUuCi0KLSAgICAgICAgLS0tCi0gICAgICAgIENvZGUgQ29udGV4dCAodG9nZ2xlKSAtLSBPcGVuIGEgcGFuZSBhdCB0aGUgdG9wIG9mIHRoZSBlZGl0IHdpbmRvdwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggc2hvd3MgdGhlIGJsb2NrIGNvbnRleHQgb2YgdGhlIHNlY3Rpb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIGNvZGUgd2hpY2ggaXMgc2Nyb2xsaW5nIG9mZiB0aGUgdG9wIG9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93LiBUaGlzIGlzIG5vdCBwcmVzZW50IGluIHRoZSBTaGVsbAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93IG9ubHkgdGhlIEVkaXRvciB3aW5kb3cuCi0KLVdpbmRvdyBNZW51IChTaGVsbCBhbmQgRWRpdG9yKToKLQotICAgICAgICBab29tIEhlaWdodCAtLSBUb2dnbGVzIHRoZSB3aW5kb3cgYmV0d2VlbiBub3JtYWwgc2l6ZSAoNDB4ODAgaW5pdGlhbAotICAgICAgICBzZXR0aW5nKSBhbmQgbWF4aW11bSBoZWlnaHQuICBUaGUgaW5pdGlhbCBzaXplIGlzIGluIHRoZSBDb25maWd1cmUKLSAgICAgICAgSURMRSBkaWFsb2cgdW5kZXIgdGhlIGdlbmVyYWwgdGFiLgotICAgICAgICAtLS0KLSAgICAgICAgVGhlIHJlc3Qgb2YgdGhpcyBtZW51IGxpc3RzIHRoZSBuYW1lcyBvZiBhbGwgb3BlbiB3aW5kb3dzOwotICAgICAgICBzZWxlY3Qgb25lIHRvIGJyaW5nIGl0IHRvIHRoZSBmb3JlZ3JvdW5kIChkZWljb25pZnlpbmcgaXQgaWYKLSAgICAgICAgbmVjZXNzYXJ5KS4KLQotSGVscCBNZW51OgotCi0gICAgICAgIEFib3V0IElETEUgIC0tIFZlcnNpb24sIGNvcHlyaWdodCwgbGljZW5zZSwgY3JlZGl0cwotICAgICAgICAtLS0KLSAgICAgICAgSURMRSBIZWxwICAgLS0gRGlzcGxheSB0aGlzIGZpbGUgd2hpY2ggaXMgYSBoZWxwIGZpbGUgZm9yIElETEUKLSAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsaW5nIHRoZSBtZW51IG9wdGlvbnMsIGJhc2ljIGVkaXRpbmcgYW5kIG5hdmlnYXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgIGFuZCBvdGhlciB0aXBzLgotICAgICAgICBQeXRob24gRG9jcyAtLSBBY2Nlc3MgbG9jYWwgUHl0aG9uIGRvY3VtZW50YXRpb24sIGlmCi0gICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxlZC4gIE9yIHdpbGwgc3RhcnQgYSB3ZWIgYnJvd3NlciBhbmQgb3BlbgotICAgICAgICAgICAgICAgICAgICAgICBkb2NzLnB5dGhvbi5vcmcgc2hvd2luZyB0aGUgbGF0ZXN0IFB5dGhvbiBkb2N1bWVudGF0aW9uLgotICAgICAgICAtLS0KLSAgICAgICAgQWRkaXRpb25hbCBoZWxwIHNvdXJjZXMgbWF5IGJlIGFkZGVkIGhlcmUgd2l0aCB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nIHVuZGVyIHRoZSBHZW5lcmFsIHRhYi4KLQotRWRpdG9yIGNvbnRleHQgbWVudSAoUmlnaHQtY2xpY2sgLyBDb250cm9sLWNsaWNrIG9uIE9TIFggaW4gRWRpdCB3aW5kb3cpOgotCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIFNldCBCcmVha3BvaW50ICAgLS0gU2V0cyBhIGJyZWFrcG9pbnQuIEJyZWFrcG9pbnRzIGFyZSBvbmx5IGVuYWJsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHRoZSBkZWJ1Z2dlciBpcyBvcGVuLgotICAgICAgICBDbGVhciBCcmVha3BvaW50IC0tIENsZWFycyB0aGUgYnJlYWtwb2ludCBvbiB0aGF0IGxpbmUKLQotU2hlbGwgY29udGV4dCBtZW51IChSaWdodC1jbGljayAvIENvbnRyb2wtY2xpY2sgb24gT1MgWCBpbiBTaGVsbCB3aW5kb3cpOgotCi0gICAgICAgIEN1dCAgICAgICAgICAgICAgLS0gQ29weSBhIHNlbGVjdGlvbiBpbnRvIHN5c3RlbS13aWRlIGNsaXBib2FyZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGVuIGRlbGV0ZSB0aGUgc2VsZWN0aW9uCi0gICAgICAgIENvcHkgICAgICAgICAgICAgLS0gQ29weSBzZWxlY3Rpb24gaW50byBzeXN0ZW0td2lkZSBjbGlwYm9hcmQKLSAgICAgICAgUGFzdGUgICAgICAgICAgICAtLSBJbnNlcnQgc3lzdGVtLXdpZGUgY2xpcGJvYXJkIGludG8gd2luZG93Ci0gICAgICAgIC0tLQotICAgICAgICBHbyB0byBmaWxlL2xpbmUgIC0tIFNhbWUgYXMgaW4gRGVidWcgbWVudQotCi0KLSoqIFRJUFMgKioKLT09PT09PT09PT0KLQotQWRkaXRpb25hbCBIZWxwIFNvdXJjZXM6Ci0KLSAgICAgICAgV2luZG93cyB1c2VycyBjYW4gR29vZ2xlIG9uIHpvcGVzaGVsZi5jaG0gdG8gYWNjZXNzIFpvcGUgaGVscCBmaWxlcyBpbgotICAgICAgICB0aGUgV2luZG93cyBoZWxwIGZvcm1hdC4gIFRoZSBBZGRpdGlvbmFsIEhlbHAgU291cmNlcyBmZWF0dXJlIG9mIHRoZQotICAgICAgICBjb25maWd1cmF0aW9uIEdVSSBzdXBwb3J0cyAuY2htLCBhbG9uZyB3aXRoIGFueSBvdGhlciBmaWxldHlwZXMKLSAgICAgICAgc3VwcG9ydGVkIGJ5IHlvdXIgYnJvd3Nlci4gIFN1cHBseSBhIE1lbnUgSXRlbSB0aXRsZSwgYW5kIGVudGVyIHRoZQotICAgICAgICBsb2NhdGlvbiBpbiB0aGUgSGVscCBGaWxlIFBhdGggc2xvdCBvZiB0aGUgTmV3IEhlbHAgU291cmNlIGRpYWxvZy4gIFVzZQotICAgICAgICBodHRwOi8vIGFuZC9vciB3d3cuIHRvIGlkZW50aWZ5IGV4dGVybmFsIFVSTHMsIG9yIGRvd25sb2FkIHRoZSBmaWxlIGFuZAotICAgICAgICBicm93c2UgZm9yIGl0cyBwYXRoIG9uIHlvdXIgbWFjaGluZSB1c2luZyB0aGUgQnJvd3NlIGJ1dHRvbi4KLQotICAgICAgICBBbGwgdXNlcnMgY2FuIGFjY2VzcyB0aGUgZXh0ZW5zaXZlIHNvdXJjZXMgb2YgaGVscCwgaW5jbHVkaW5nCi0gICAgICAgIHR1dG9yaWFscywgYXZhaWxhYmxlIGF0IGRvY3MucHl0aG9uLm9yZy4gIFNlbGVjdGVkIFVSTHMgY2FuIGJlIGFkZGVkCi0gICAgICAgIG9yIHJlbW92ZWQgZnJvbSB0aGUgSGVscCBtZW51IGF0IGFueSB0aW1lIHVzaW5nIENvbmZpZ3VyZSBJRExFLgotCi1CYXNpYyBlZGl0aW5nIGFuZCBuYXZpZ2F0aW9uOgotCi0gICAgICAgIEJhY2tzcGFjZSBkZWxldGVzIGNoYXIgdG8gdGhlIGxlZnQ7IERFTCBkZWxldGVzIGNoYXIgdG8gdGhlIHJpZ2h0LgotICAgICAgICBDb250cm9sLWJhY2tzcGFjZSBkZWxldGVzIHdvcmQgbGVmdCwgQ29udHJvbC1ERUwgZGVsZXRlcyB3b3JkIHJpZ2h0LgotICAgICAgICBBcnJvdyBrZXlzIGFuZCBQYWdlIFVwL0Rvd24gbW92ZSBhcm91bmQuCi0gICAgICAgIENvbnRyb2wtbGVmdC9yaWdodCBBcnJvdyBtb3ZlcyBieSB3b3JkcyBpbiBhIHN0cmFuZ2UgYnV0IHVzZWZ1bCB3YXkuCi0gICAgICAgIEhvbWUvRW5kIGdvIHRvIGJlZ2luL2VuZCBvZiBsaW5lLgotICAgICAgICBDb250cm9sLUhvbWUvRW5kIGdvIHRvIGJlZ2luL2VuZCBvZiBmaWxlLgotICAgICAgICBTb21lIHVzZWZ1bCBFbWFjcyBiaW5kaW5ncyBhcmUgaW5oZXJpdGVkIGZyb20gVGNsL1RrOgotICAgICAgICAgICAgICAgIENvbnRyb2wtYSAgICAgYmVnaW5uaW5nIG9mIGxpbmUKLSAgICAgICAgICAgICAgICBDb250cm9sLWUgICAgIGVuZCBvZiBsaW5lCi0gICAgICAgICAgICAgICAgQ29udHJvbC1rICAgICBraWxsIGxpbmUgKGJ1dCBkb2Vzbid0IHB1dCBpdCBpbiBjbGlwYm9hcmQpCi0gICAgICAgICAgICAgICAgQ29udHJvbC1sICAgICBjZW50ZXIgd2luZG93IGFyb3VuZCB0aGUgaW5zZXJ0aW9uIHBvaW50Ci0gICAgICAgIFN0YW5kYXJkIGtleWJpbmRpbmdzIChsaWtlIENvbnRyb2wtYyB0byBjb3B5IGFuZCBDb250cm9sLXYgdG8KLSAgICAgICAgcGFzdGUpIG1heSB3b3JrLiAgS2V5YmluZGluZ3MgYXJlIHNlbGVjdGVkIGluIHRoZSBDb25maWd1cmUgSURMRQotICAgICAgICBkaWFsb2cuCi0KLUF1dG9tYXRpYyBpbmRlbnRhdGlvbjoKLQotICAgICAgICBBZnRlciBhIGJsb2NrLW9wZW5pbmcgc3RhdGVtZW50LCB0aGUgbmV4dCBsaW5lIGlzIGluZGVudGVkIGJ5IDQgc3BhY2VzCi0gICAgICAgIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBieSBvbmUgdGFiKS4gIEFmdGVyIGNlcnRhaW4ga2V5d29yZHMKLSAgICAgICAgKGJyZWFrLCByZXR1cm4gZXRjLikgdGhlIG5leHQgbGluZSBpcyBkZWRlbnRlZC4gIEluIGxlYWRpbmcKLSAgICAgICAgaW5kZW50YXRpb24sIEJhY2tzcGFjZSBkZWxldGVzIHVwIHRvIDQgc3BhY2VzIGlmIHRoZXkgYXJlIHRoZXJlLiAgVGFiCi0gICAgICAgIGluc2VydHMgc3BhY2VzIChpbiB0aGUgUHl0aG9uIFNoZWxsIHdpbmRvdyBvbmUgdGFiKSwgbnVtYmVyIGRlcGVuZHMgb24KLSAgICAgICAgSW5kZW50IFdpZHRoLiBDdXJyZW50bHkgdGFicyBhcmUgcmVzdHJpY3RlZCB0byBmb3VyIHNwYWNlcyBkdWUKLSAgICAgICAgdG8gVGNsL1RrIGxpbWl0YXRpb25zLgotCi0gICAgICAgIFNlZSBhbHNvIHRoZSBpbmRlbnQvZGVkZW50IHJlZ2lvbiBjb21tYW5kcyBpbiB0aGUgZWRpdCBtZW51LgotCi1Db21wbGV0aW9uczoKLQotICAgICAgICBDb21wbGV0aW9ucyBhcmUgc3VwcGxpZWQgZm9yIGZ1bmN0aW9ucywgY2xhc3NlcywgYW5kIGF0dHJpYnV0ZXMgb2YKLSAgICAgICAgY2xhc3NlcywgYm90aCBidWlsdC1pbiBhbmQgdXNlci1kZWZpbmVkLiAgQ29tcGxldGlvbnMgYXJlIGFsc28gcHJvdmlkZWQKLSAgICAgICAgZm9yIGZpbGVuYW1lcy4KLQotICAgICAgICBUaGUgQXV0b0NvbXBsZXRlV2luZG93IChBQ1cpIHdpbGwgb3BlbiBhZnRlciBhIHByZWRlZmluZWQgZGVsYXkKLSAgICAgICAgKGRlZmF1bHQgaXMgdHdvIHNlY29uZHMpIGFmdGVyIGEgJy4nIG9yIChpbiBhIHN0cmluZykgYW4gb3Muc2VwIGlzCi0gICAgICAgIHR5cGVkLiAgSWYgYWZ0ZXIgb25lIG9mIHRob3NlIGNoYXJhY3RlcnMgKHBsdXMgemVybyBvciBtb3JlIG90aGVyCi0gICAgICAgIGNoYXJhY3RlcnMpIGEgdGFiIGlzIHR5cGVkIHRoZSBBQ1cgd2lsbCBvcGVuIGltbWVkaWF0ZWx5IGlmIGEgcG9zc2libGUKLSAgICAgICAgY29udGludWF0aW9uIGlzIGZvdW5kLgotCi0gICAgICAgIElmIHRoZXJlIGlzIG9ubHkgb25lIHBvc3NpYmxlIGNvbXBsZXRpb24gZm9yIHRoZSBjaGFyYWN0ZXJzIGVudGVyZWQsIGEKLSAgICAgICAgdGFiIHdpbGwgc3VwcGx5IHRoYXQgY29tcGxldGlvbiB3aXRob3V0IG9wZW5pbmcgdGhlIEFDVy4KLQotICAgICAgICAnU2hvdyBDb21wbGV0aW9ucycgd2lsbCBmb3JjZSBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LCBieSBkZWZhdWx0IHRoZQotICAgICAgICBDb250cm9sLXNwYWNlIGtleXMgd2lsbCBvcGVuIGEgY29tcGxldGlvbnMgd2luZG93LiAgSW4gYW4gZW1wdHkKLSAgICAgICAgc3RyaW5nLCB0aGlzIHdpbGwgY29udGFpbiB0aGUgZmlsZXMgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgT24gYQotICAgICAgICBibGFuayBsaW5lLCBpdCB3aWxsIGNvbnRhaW4gdGhlIGJ1aWx0LWluIGFuZCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIGFuZAotICAgICAgICBjbGFzc2VzIGluIHRoZSBjdXJyZW50IG5hbWUgc3BhY2VzLCBwbHVzIGFueSBtb2R1bGVzIGltcG9ydGVkLiAgSWYgc29tZQotICAgICAgICBjaGFyYWN0ZXJzIGhhdmUgYmVlbiBlbnRlcmVkLCB0aGUgQUNXIHdpbGwgYXR0ZW1wdCB0byBiZSBtb3JlIHNwZWNpZmljLgotCi0gICAgICAgIElmIHN0cmluZyBvZiBjaGFyYWN0ZXJzIGlzIHR5cGVkLCB0aGUgQUNXIHNlbGVjdGlvbiB3aWxsIGp1bXAgdG8gdGhlCi0gICAgICAgIGVudHJ5IG1vc3QgY2xvc2VseSBtYXRjaGluZyB0aG9zZSBjaGFyYWN0ZXJzLiBFbnRlcmluZyBhIHRhYiB3aWxsIGNhdXNlCi0gICAgICAgIHRoZSBsb25nZXN0IG5vbi1hbWJpZ3VvdXMgbWF0Y2ggdG8gYmUgZW50ZXJlZCBpbiB0aGUgRWRpdCB3aW5kb3cgb3IKLSAgICAgICAgU2hlbGwuICBUd28gdGFicyBpbiBhIHJvdyB3aWxsIHN1cHBseSB0aGUgY3VycmVudCBBQ1cgc2VsZWN0aW9uLCBhcwotICAgICAgICB3aWxsIHJldHVybiBvciBhIGRvdWJsZSBjbGljay4gIEN1cnNvciBrZXlzLCBQYWdlIFVwL0Rvd24sIG1vdXNlCi0gICAgICAgIHNlbGVjdGlvbiwgYW5kIHRoZSBzY3JvbGwgd2hlZWwgYWxsIG9wZXJhdGUgb24gdGhlIEFDVy4KLQotICAgICAgICAiSGlkZGVuIiBhdHRyaWJ1dGVzIGNhbiBiZSBhY2Nlc3NlZCBieSB0eXBpbmcgdGhlIGJlZ2lubmluZyBvZiBoaWRkZW4KLSAgICAgICAgbmFtZSBhZnRlciBhICcuJywgIGUuZy4gJ18nLiAgVGhpcyBhbGxvd3MgYWNjZXNzIHRvIG1vZHVsZXMgd2l0aAotICAgICAgICAnX19hbGxfXycgc2V0LCBvciB0byBjbGFzcy1wcml2YXRlIGF0dHJpYnV0ZXMuCi0KLSAgICAgICAgQ29tcGxldGlvbnMgYW5kIHRoZSAnRXhwYW5kIFdvcmQnIGZhY2lsaXR5IGNhbiBzYXZlIGEgbG90IG9mIHR5cGluZyEKLQotICAgICAgICBDb21wbGV0aW9ucyBhcmUgY3VycmVudGx5IGxpbWl0ZWQgdG8gdGhvc2UgaW4gdGhlIG5hbWVzcGFjZXMuICBOYW1lcyBpbgotICAgICAgICBhbiBFZGl0b3Igd2luZG93IHdoaWNoIGFyZSBub3QgdmlhIF9fbWFpbl9fIG9yIHN5cy5tb2R1bGVzIHdpbGwgbm90IGJlCi0gICAgICAgIGZvdW5kLiAgUnVuIHRoZSBtb2R1bGUgb25jZSB3aXRoIHlvdXIgaW1wb3J0cyB0byBjb3JyZWN0IHRoaXMKLSAgICAgICAgc2l0dWF0aW9uLiAgTm90ZSB0aGF0IElETEUgaXRzZWxmIHBsYWNlcyBxdWl0ZSBhIGZldyBtb2R1bGVzIGluCi0gICAgICAgIHN5cy5tb2R1bGVzLCBzbyBtdWNoIGNhbiBiZSBmb3VuZCBieSBkZWZhdWx0LCBlLmcuIHRoZSByZSBtb2R1bGUuCi0KLSAgICAgICAgSWYgeW91IGRvbid0IGxpa2UgdGhlIEFDVyBwb3BwaW5nIHVwIHVuYmlkZGVuLCBzaW1wbHkgbWFrZSB0aGUgZGVsYXkKLSAgICAgICAgbG9uZ2VyIG9yIGRpc2FibGUgdGhlIGV4dGVuc2lvbi4gIE9yIGFub3RoZXIgb3B0aW9uIGlzIHRoZSBkZWxheSBjb3VsZAotICAgICAgICBiZSBzZXQgdG8gemVyby4gQW5vdGhlciBhbHRlcm5hdGl2ZSB0byBwcmV2ZW50aW5nIEFDVyBwb3B1cHMgaXMgdG8KLSAgICAgICAgZGlzYWJsZSB0aGUgY2FsbCB0aXBzIGV4dGVuc2lvbi4KLQotUHl0aG9uIFNoZWxsIHdpbmRvdzoKLQotICAgICAgICBDb250cm9sLWMgaW50ZXJydXB0cyBleGVjdXRpbmcgY29tbWFuZC4KLSAgICAgICAgQ29udHJvbC1kIHNlbmRzIGVuZC1vZi1maWxlOyBjbG9zZXMgd2luZG93IGlmIHR5cGVkIGF0ID4+PiBwcm9tcHQuCi0gICAgICAgIEFsdC0vIGV4cGFuZCB3b3JkIGlzIGFsc28gdXNlZnVsIHRvIHJlZHVjZSB0eXBpbmcuCi0KLSAgICBDb21tYW5kIGhpc3Rvcnk6Ci0KLSAgICAgICAgQWx0LXAgcmV0cmlldmVzIHByZXZpb3VzIGNvbW1hbmQgbWF0Y2hpbmcgd2hhdCB5b3UgaGF2ZSB0eXBlZC4gT24gT1MgWAotICAgICAgICB1c2UgQ29udHJvbC1wLgotICAgICAgICBBbHQtbiByZXRyaWV2ZXMgbmV4dC4gT24gT1MgWCB1c2UgQ29udHJvbC1uLgotICAgICAgICBSZXR1cm4gd2hpbGUgY3Vyc29yIGlzIG9uIGEgcHJldmlvdXMgY29tbWFuZCByZXRyaWV2ZXMgdGhhdCBjb21tYW5kLgotCi0gICAgU3ludGF4IGNvbG9yczoKLQotICAgICAgICBUaGUgY29sb3JpbmcgaXMgYXBwbGllZCBpbiBhIGJhY2tncm91bmQgInRocmVhZCIsIHNvIHlvdSBtYXkKLSAgICAgICAgb2NjYXNpb25hbGx5IHNlZSB1bmNvbG9yaXplZCB0ZXh0LiAgVG8gY2hhbmdlIHRoZSBjb2xvcgotICAgICAgICBzY2hlbWUsIHVzZSB0aGUgQ29uZmlndXJlIElETEUgLyBIaWdobGlnaHRpbmcgZGlhbG9nLgotCi0gICAgUHl0aG9uIGRlZmF1bHQgc3ludGF4IGNvbG9yczoKLQotICAgICAgICBLZXl3b3JkcyAgICAgICAgb3JhbmdlCi0gICAgICAgIEJ1aWx0aW5zICAgICAgICByb3lhbCBwdXJwbGUKLSAgICAgICAgU3RyaW5ncyAgICAgICAgIGdyZWVuCi0gICAgICAgIENvbW1lbnRzICAgICAgICByZWQKLSAgICAgICAgRGVmaW5pdGlvbnMgICAgIGJsdWUKLQotICAgIFNoZWxsIGRlZmF1bHQgY29sb3JzOgotCi0gICAgICAgIENvbnNvbGUgb3V0cHV0ICBicm93bgotICAgICAgICBzdGRvdXQgICAgICAgICAgYmx1ZQotICAgICAgICBzdGRlcnIgICAgICAgICAgcmVkCi0gICAgICAgIHN0ZGluICAgICAgICAgICBibGFjawotCi1PdGhlciBwcmVmZXJlbmNlczoKLQotICAgICAgICBUaGUgZm9udCBwcmVmZXJlbmNlcywgaGlnaGxpZ2h0aW5nLCBrZXlzLCBhbmQgZ2VuZXJhbCBwcmVmZXJlbmNlcyBjYW4KLSAgICAgICAgYmUgY2hhbmdlZCB2aWEgdGhlIENvbmZpZ3VyZSBJRExFIG1lbnUgb3B0aW9uLiAgQmUgc3VyZSB0byBub3RlIHRoYXQKLSAgICAgICAga2V5cyBjYW4gYmUgdXNlciBkZWZpbmVkLCBJRExFIHNoaXBzIHdpdGggZm91ciBidWlsdCBpbiBrZXkgc2V0cy4gSW4KLSAgICAgICAgYWRkaXRpb24gYSB1c2VyIGNhbiBjcmVhdGUgYSBjdXN0b20ga2V5IHNldCBpbiB0aGUgQ29uZmlndXJlIElETEUKLSAgICAgICAgZGlhbG9nIHVuZGVyIHRoZSBrZXlzIHRhYi4KLQotQ29tbWFuZCBsaW5lIHVzYWdlOgotCi0gICAgICAgIEVudGVyIGlkbGUgLWggYXQgdGhlIGNvbW1hbmQgcHJvbXB0IHRvIGdldCBhIHVzYWdlIG1lc3NhZ2UuCi0KLSAgICAgICAgaWRsZS5weSBbLWMgY29tbWFuZF0gWy1kXSBbLWVdIFstc10gWy10IHRpdGxlXSBbYXJnXSAuLi4KLQotICAgICAgICAtYyBjb21tYW5kICBydW4gdGhpcyBjb21tYW5kCi0gICAgICAgIC1kICAgICAgICAgIGVuYWJsZSBkZWJ1Z2dlcgotICAgICAgICAtZSAgICAgICAgICBlZGl0IG1vZGU7IGFyZ3VtZW50cyBhcmUgZmlsZXMgdG8gYmUgZWRpdGVkCi0gICAgICAgIC1zICAgICAgICAgIHJ1biAkSURMRVNUQVJUVVAgb3IgJFBZVEhPTlNUQVJUVVAgZmlyc3QKLSAgICAgICAgLXQgdGl0bGUgICAgc2V0IHRpdGxlIG9mIHNoZWxsIHdpbmRvdwotCi0gICAgICAgIElmIHRoZXJlIGFyZSBhcmd1bWVudHM6Ci0gICAgICAgIDEuIElmIC1lIGlzIHVzZWQsIGFyZ3VtZW50cyBhcmUgZmlsZXMgb3BlbmVkIGZvciBlZGl0aW5nIGFuZCBzeXMuYXJndgotICAgICAgICAgICByZWZsZWN0cyB0aGUgYXJndW1lbnRzIHBhc3NlZCB0byBJRExFIGl0c2VsZi4KLSAgICAgICAgMi4gT3RoZXJ3aXNlLCBpZiAtYyBpcyB1c2VkLCBhbGwgYXJndW1lbnRzIGFyZSBwbGFjZWQgaW4KLSAgICAgICAgICAgc3lzLmFyZ3ZbMTouLi5dLCB3aXRoIHN5cy5hcmd2WzBdIHNldCB0byAtYy4KLSAgICAgICAgMy4gT3RoZXJ3aXNlLCBpZiBuZWl0aGVyIC1lIG5vciAtYyBpcyB1c2VkLCB0aGUgZmlyc3QgYXJndW1lbnQgaXMgYQotICAgICAgICAgICBzY3JpcHQgd2hpY2ggaXMgZXhlY3V0ZWQgd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cyBpbgotICAgICAgICAgICBzeXMuYXJndlsxOi4uLl0gIGFuZCBzeXMuYXJndlswXSBzZXQgdG8gdGhlIHNjcmlwdCBuYW1lLiAgSWYgdGhlCi0gICAgICAgICAgIHNjcmlwdCBuYW1lIGlzIC0sIG5vIHNjcmlwdCBpcyBleGVjdXRlZCBidXQgYW4gaW50ZXJhY3RpdmUgUHl0aG9uCi0gICAgICAgICAgIHNlc3Npb24gaXMgc3RhcnRlZDsgdGhlIGFyZ3VtZW50cyBhcmUgc3RpbGwgYXZhaWxhYmxlIGluIHN5cy5hcmd2LgotCi1SdW5uaW5nIHdpdGhvdXQgYSBzdWJwcm9jZXNzOiAoREVQUkVDQVRFRCBpbiBQeXRob24gMy40IHNlZSBJc3N1ZSAxNjEyMykKLQotICAgICAgICBJZiBJRExFIGlzIHN0YXJ0ZWQgd2l0aCB0aGUgLW4gY29tbWFuZCBsaW5lIHN3aXRjaCBpdCB3aWxsIHJ1biBpbiBhCi0gICAgICAgIHNpbmdsZSBwcm9jZXNzIGFuZCB3aWxsIG5vdCBjcmVhdGUgdGhlIHN1YnByb2Nlc3Mgd2hpY2ggcnVucyB0aGUgUlBDCi0gICAgICAgIFB5dGhvbiBleGVjdXRpb24gc2VydmVyLiAgVGhpcyBjYW4gYmUgdXNlZnVsIGlmIFB5dGhvbiBjYW5ub3QgY3JlYXRlCi0gICAgICAgIHRoZSBzdWJwcm9jZXNzIG9yIHRoZSBSUEMgc29ja2V0IGludGVyZmFjZSBvbiB5b3VyIHBsYXRmb3JtLiAgSG93ZXZlciwKLSAgICAgICAgaW4gdGhpcyBtb2RlIHVzZXIgY29kZSBpcyBub3QgaXNvbGF0ZWQgZnJvbSBJRExFIGl0c2VsZi4gIEFsc28sIHRoZQotICAgICAgICBlbnZpcm9ubWVudCBpcyBub3QgcmVzdGFydGVkIHdoZW4gUnVuL1J1biBNb2R1bGUgKEY1KSBpcyBzZWxlY3RlZC4gIElmCi0gICAgICAgIHlvdXIgY29kZSBoYXMgYmVlbiBtb2RpZmllZCwgeW91IG11c3QgcmVsb2FkKCkgdGhlIGFmZmVjdGVkIG1vZHVsZXMgYW5kCi0gICAgICAgIHJlLWltcG9ydCBhbnkgc3BlY2lmaWMgaXRlbXMgKGUuZy4gZnJvbSBmb28gaW1wb3J0IGJheikgaWYgdGhlIGNoYW5nZXMKLSAgICAgICAgYXJlIHRvIHRha2UgZWZmZWN0LiAgRm9yIHRoZXNlIHJlYXNvbnMsIGl0IGlzIHByZWZlcmFibGUgdG8gcnVuIElETEUKLSAgICAgICAgd2l0aCB0aGUgZGVmYXVsdCBzdWJwcm9jZXNzIGlmIGF0IGFsbCBwb3NzaWJsZS4KLQotRXh0ZW5zaW9uczoKLQotICAgICAgICBJRExFIGNvbnRhaW5zIGFuIGV4dGVuc2lvbiBmYWNpbGl0eS4gIFNlZSB0aGUgYmVnaW5uaW5nIG9mCi0gICAgICAgIGNvbmZpZy1leHRlbnNpb25zLmRlZiBpbiB0aGUgaWRsZWxpYiBkaXJlY3RvcnkgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCi0gICAgICAgIFRoZSBkZWZhdWx0IGV4dGVuc2lvbnMgYXJlIGN1cnJlbnRseToKLQotICAgICAgICAgICAgICAgIEZvcm1hdFBhcmFncmFwaAotICAgICAgICAgICAgICAgIEF1dG9FeHBhbmQKLSAgICAgICAgICAgICAgICBab29tSGVpZ2h0Ci0gICAgICAgICAgICAgICAgU2NyaXB0QmluZGluZwotICAgICAgICAgICAgICAgIENhbGxUaXBzCi0gICAgICAgICAgICAgICAgUGFyZW5NYXRjaAotICAgICAgICAgICAgICAgIEF1dG9Db21wbGV0ZQotICAgICAgICAgICAgICAgIENvZGVDb250ZXh0CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9hYm91dERpYWxvZy5weSBiL0xpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2hlbHBfYWJvdXQucHkKaW5kZXggYThmNzVkMi4uMDcxYmQzZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvYWJvdXREaWFsb2cucHkKKysrIGIvTGliL2lkbGVsaWIvaGVscF9hYm91dC5weQpAQCAtMSwxMSArMSwxMyBAQAogIiIiQWJvdXQgRGlhbG9nIGZvciBJRExFCiAKICIiIgotCiBpbXBvcnQgb3MKIGZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCisKIGZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldworCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3CisKIAogY2xhc3MgQWJvdXREaWFsb2coVG9wbGV2ZWwpOgogICAgICIiIk1vZGFsIGFib3V0IGRpYWxvZyBmb3IgaWRsZQpAQCAtMTM1LDE3ICsxMzcsMTggQEAKICAgICBkZWYgZGlzcGxheV9wcmludGVyX3RleHQoc2VsZiwgdGl0bGUsIHByaW50ZXIpOgogICAgICAgICBwcmludGVyLl9QcmludGVyX19zZXR1cCgpCiAgICAgICAgIHRleHQgPSAnXG4nLmpvaW4ocHJpbnRlci5fUHJpbnRlcl9fbGluZXMpCi0gICAgICAgIHRleHRWaWV3LnZpZXdfdGV4dChzZWxmLCB0aXRsZSwgdGV4dCkKKyAgICAgICAgdGV4dHZpZXcudmlld190ZXh0KHNlbGYsIHRpdGxlLCB0ZXh0KQogCiAgICAgZGVmIGRpc3BsYXlfZmlsZV90ZXh0KHNlbGYsIHRpdGxlLCBmaWxlbmFtZSwgZW5jb2Rpbmc9Tm9uZSk6CiAgICAgICAgIGZuID0gb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwgZmlsZW5hbWUpCi0gICAgICAgIHRleHRWaWV3LnZpZXdfZmlsZShzZWxmLCB0aXRsZSwgZm4sIGVuY29kaW5nKQorICAgICAgICB0ZXh0dmlldy52aWV3X2ZpbGUoc2VsZiwgdGl0bGUsIGZuLCBlbmNvZGluZykKIAogICAgIGRlZiBPayhzZWxmLCBldmVudD1Ob25lKToKICAgICAgICAgc2VsZi5kZXN0cm95KCkKIAorCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGltcG9ydCB1bml0dGVzdAotICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGVscGFib3V0JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9oZWxwX2Fib3V0JywgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKEFib3V0RGlhbG9nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSWRsZUhpc3RvcnkucHkgYi9MaWIvaWRsZWxpYi9oaXN0b3J5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9oaXN0b3J5LnB5CmluZGV4IDA3OGFmMjkuLjU2ZjUzYTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0lkbGVIaXN0b3J5LnB5CisrKyBiL0xpYi9pZGxlbGliL2hpc3RvcnkucHkKQEAgLTEsMTEgKzEsMTIgQEAKICJJbXBsZW1lbnQgSWRsZSBTaGVsbCBoaXN0b3J5IG1lY2hhbmlzbSB3aXRoIEhpc3RvcnkgY2xhc3MiCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKKwogCiBjbGFzcyBIaXN0b3J5OgogICAgICcnJyBJbXBsZW1lbnQgSWRsZSBTaGVsbCBoaXN0b3J5IG1lY2hhbmlzbS4KIAotICAgIHN0b3JlIC0gU3RvcmUgc291cmNlIHN0YXRlbWVudCAoY2FsbGVkIGZyb20gUHlTaGVsbC5yZXNldG91dHB1dCkuCisgICAgc3RvcmUgLSBTdG9yZSBzb3VyY2Ugc3RhdGVtZW50IChjYWxsZWQgZnJvbSBweXNoZWxsLnJlc2V0b3V0cHV0KS4KICAgICBmZXRjaCAtIEZldGNoIHN0b3JlZCBzdGF0ZW1lbnQgbWF0Y2hpbmcgcHJlZml4IGFscmVhZHkgZW50ZXJlZC4KICAgICBoaXN0b3J5X25leHQgLSBCb3VuZCB0byA8PGhpc3RvcnktbmV4dD4+IGV2ZW50IChkZWZhdWx0IEFsdC1OKS4KICAgICBoaXN0b3J5X3ByZXYgLSBCb3VuZCB0byA8PGhpc3RvcnktcHJldj4+IGV2ZW50IChkZWZhdWx0IEFsdC1QKS4KQEAgLTk5LDYgKzEwMCw3IEBACiAgICAgICAgIHNlbGYucG9pbnRlciA9IE5vbmUKICAgICAgICAgc2VsZi5wcmVmaXggPSBOb25lCiAKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtYWluCi0gICAgbWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9pZGxlaGlzdG9yeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorICAgIG1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfaGlzdG9yeScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkgYi9MaWIvaWRsZWxpYi9oeXBlcnBhcnNlci5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9IeXBlclBhcnNlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKaW5kZXggNzdjYjA1Ny4uNDUwYTcwOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSHlwZXJQYXJzZXIucHkKKysrIGIvTGliL2lkbGVsaWIvaHlwZXJwYXJzZXIucHkKQEAgLTQsMTEgKzQsMTAgQEAKIHByb3BlciBpbmRlbnRhdGlvbiBvZiBjb2RlLiAgSHlwZXJQYXJzZXIgZ2l2ZXMgYWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbgogdGhlIHN0cnVjdHVyZSBvZiBjb2RlLgogIiIiCi0KLWltcG9ydCBzdHJpbmcKIGZyb20ga2V5d29yZCBpbXBvcnQgaXNrZXl3b3JkCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5UGFyc2UKK2ltcG9ydCBzdHJpbmcKIAorZnJvbSBpZGxlbGliIGltcG9ydCBweXBhcnNlCiAKICMgYWxsIEFTQ0lJIGNoYXJzIHRoYXQgbWF5IGJlIGluIGFuIGlkZW50aWZpZXIKIF9BU0NJSV9JRF9DSEFSUyA9IGZyb3plbnNldChzdHJpbmcuYXNjaWlfbGV0dGVycyArIHN0cmluZy5kaWdpdHMgKyAiXyIpCkBAIC0zMCw3ICsyOSw3IEBACiAgICAgICAgIHNlbGYuZWRpdHdpbiA9IGVkaXR3aW4KICAgICAgICAgc2VsZi50ZXh0ID0gdGV4dCA9IGVkaXR3aW4udGV4dAogCi0gICAgICAgIHBhcnNlciA9IFB5UGFyc2UuUGFyc2VyKGVkaXR3aW4uaW5kZW50d2lkdGgsIGVkaXR3aW4udGFid2lkdGgpCisgICAgICAgIHBhcnNlciA9IHB5cGFyc2UuUGFyc2VyKGVkaXR3aW4uaW5kZW50d2lkdGgsIGVkaXR3aW4udGFid2lkdGgpCiAKICAgICAgICAgZGVmIGluZGV4MmxpbmUoaW5kZXgpOgogICAgICAgICAgICAgcmV0dXJuIGludChmbG9hdChpbmRleCkpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlLnB5IGIvTGliL2lkbGVsaWIvaWRsZS5weQppbmRleCAxNDE1MzRkLi40ODVkNWE3IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGUucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgb3MucGF0aAogaW1wb3J0IHN5cwogCisKICMgRW5hYmxlIHJ1bm5pbmcgSURMRSB3aXRoIGlkbGVsaWIgaW4gYSBub24tc3RhbmRhcmQgbG9jYXRpb24uCiAjIFRoaXMgd2FzIG9uY2UgdXNlZCB0byBydW4gZGV2ZWxvcG1lbnQgdmVyc2lvbnMgb2YgSURMRS4KICMgQmVjYXVzZSBQRVAgNDM0IGRlY2xhcmVkIGlkbGUucHkgYSBwdWJsaWMgaW50ZXJmYWNlLApAQCAtOSw1ICsxMCw1IEBACiBpZiBpZGxlbGliX2RpciBub3QgaW4gc3lzLnBhdGg6CiAgICAgc3lzLnBhdGguaW5zZXJ0KDAsIGlkbGVsaWJfZGlyKQogCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgbWFpbiAgIyBUaGlzIGlzIHN1YmplY3QgdG8gY2hhbmdlCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbiAgIyBUaGlzIGlzIHN1YmplY3QgdG8gY2hhbmdlCiBtYWluKCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGUucHl3IGIvTGliL2lkbGVsaWIvaWRsZS5weXcKaW5kZXggMTQyY2IzMi4uZTczYzA0OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZS5weXcKKysrIGIvTGliL2lkbGVsaWIvaWRsZS5weXcKQEAgLTEsMTAgKzEsMTAgQEAKIHRyeToKLSAgICBpbXBvcnQgaWRsZWxpYi5QeVNoZWxsCisgICAgaW1wb3J0IGlkbGVsaWIucHlzaGVsbAogZXhjZXB0IEltcG9ydEVycm9yOgotICAgICMgSURMRSBpcyBub3QgaW5zdGFsbGVkLCBidXQgbWF5YmUgUHlTaGVsbCBpcyBvbiBzeXMucGF0aDoKLSAgICBmcm9tIC4gaW1wb3J0IFB5U2hlbGwKKyAgICAjIElETEUgaXMgbm90IGluc3RhbGxlZCwgYnV0IG1heWJlIHB5c2hlbGwgaXMgb24gc3lzLnBhdGg6CisgICAgZnJvbSAuIGltcG9ydCBweXNoZWxsCiAgICAgaW1wb3J0IG9zCi0gICAgaWRsZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoUHlTaGVsbC5fX2ZpbGVfXykpCisgICAgaWRsZWRpciA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgocHlzaGVsbC5fX2ZpbGVfXykpCiAgICAgaWYgaWRsZWRpciAhPSBvcy5nZXRjd2QoKToKICAgICAgICAgIyBXZSdyZSBub3QgaW4gdGhlIElETEUgZGlyZWN0b3J5LCBoZWxwIHRoZSBzdWJwcm9jZXNzIGZpbmQgcnVuLnB5CiAgICAgICAgIHB5cGF0aCA9IG9zLmVudmlyb24uZ2V0KCdQWVRIT05QQVRIJywgJycpCkBAIC0xMiw2ICsxMiw2IEBACiAgICAgICAgICAgICBvcy5lbnZpcm9uWydQWVRIT05QQVRIJ10gPSBweXBhdGggKyAnOicgKyBpZGxlZGlyCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBvcy5lbnZpcm9uWydQWVRIT05QQVRIJ10gPSBpZGxlZGlyCi0gICAgUHlTaGVsbC5tYWluKCkKKyAgICBweXNoZWxsLm1haW4oKQogZWxzZToKLSAgICBpZGxlbGliLlB5U2hlbGwubWFpbigpCisgICAgaWRsZWxpYi5weXNoZWxsLm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L19faW5pdF9fLnB5CmluZGV4IDg0NWM5MmQuLmFkMDY3YjQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9fX2luaXRfXy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvX19pbml0X18ucHkKQEAgLTEsNiArMSw4IEBACiAnJydpZGxlbGliLmlkbGVfdGVzdCBpcyBhIHByaXZhdGUgaW1wbGVtZW50YXRpb24gb2YgdGVzdC50ZXN0X2lkbGUsCiB3aGljaCB0ZXN0cyB0aGUgSURMRSBhcHBsaWNhdGlvbiBhcyBwYXJ0IG9mIHRoZSBzdGRsaWIgdGVzdCBzdWl0ZS4KIFJ1biBJRExFIHRlc3RzIGFsb25lIHdpdGggInB5dGhvbiAtbSB0ZXN0LnRlc3RfaWRsZSIuCitTdGFydGluZyB3aXRoIFB5dGhvbiAzLjYsIElETEUgcmVxdWlyZXMgdGNsL3RrIDguNSBvciBsYXRlci4KKwogVGhpcyBwYWNrYWdlIGFuZCBpdHMgY29udGFpbmVkIG1vZHVsZXMgYXJlIHN1YmplY3QgdG8gY2hhbmdlIGFuZAogYW55IGRpcmVjdCB1c2UgaXMgYXQgeW91ciBvd24gcmlzay4KICcnJwpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L2h0ZXN0LnB5CmluZGV4IDU4ZTYyY2IuLjZmNjc2YWUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9odGVzdC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvaHRlc3QucHkKQEAgLTU5LDE5ICs1OSwyMCBAQAogCiAKIE1vZHVsZXMgYW5kIGNsYXNzZXMgbm90IGJlaW5nIHRlc3RlZCBhdCB0aGUgbW9tZW50OgotUHlTaGVsbC5QeVNoZWxsRWRpdG9yV2luZG93Ci1EZWJ1Z2dlci5EZWJ1Z2dlcgotQXV0b0NvbXBsZXRlV2luZG93LkF1dG9Db21wbGV0ZVdpbmRvdwotT3V0cHV0V2luZG93Lk91dHB1dFdpbmRvdyAoaW5kaXJlY3RseSBiZWluZyB0ZXN0ZWQgd2l0aCBncmVwIHRlc3QpCitweXNoZWxsLlB5U2hlbGxFZGl0b3JXaW5kb3cKK2RlYnVnZ2VyLkRlYnVnZ2VyCithdXRvY29tcGxldGVfdy5BdXRvQ29tcGxldGVXaW5kb3cKK291dHdpbi5PdXRwdXRXaW5kb3cgKGluZGlyZWN0bHkgYmVpbmcgdGVzdGVkIHdpdGggZ3JlcCB0ZXN0KQogJycnCiAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBpbXBvcnRfbW9kdWxlCi1mcm9tIGlkbGVsaWIubWFjb3N4U3VwcG9ydCBpbXBvcnQgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cwogaW1wb3J0IHRraW50ZXIgYXMgdGsKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgordGsuTm9EZWZhdWx0Um9vdCgpCiAKIEFib3V0RGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnYWJvdXREaWFsb2cnLAotICAgICdrd2RzJzogeyd0aXRsZSc6ICdhYm91dERpYWxvZyB0ZXN0JywKKyAgICAnZmlsZSc6ICdoZWxwX2Fib3V0JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnaGVscF9hYm91dCB0ZXN0JywKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZSwKICAgICAgICAgICAgICB9LAogICAgICdtc2cnOiAiVGVzdCBldmVyeSBidXR0b24uIEVuc3VyZSBQeXRob24sIFRLIGFuZCBJRExFIHZlcnNpb25zICIKQEAgLTc5LDE0ICs4MCwxNCBAQAogICAgIH0KIAogX2NhbGx0aXBfd2luZG93X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnQ2FsbFRpcFdpbmRvdycsCisgICAgJ2ZpbGUnOiAnY2FsbHRpcF93JywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVHlwaW5nICcoJyBzaG91bGQgZGlzcGxheSBhIGNhbGx0aXAuXG4iCiAgICAgICAgICAgICJUeXBpbmcgJykgc2hvdWxkIGhpZGUgdGhlIGNhbGx0aXAuXG4iCiAgICAgfQogCiBfY2xhc3NfYnJvd3Nlcl9zcGVjID0gewotICAgICdmaWxlJzogJ0NsYXNzQnJvd3NlcicsCisgICAgJ2ZpbGUnOiAnYnJvd3NlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkluc3BlY3QgbmFtZXMgb2YgbW9kdWxlLCBjbGFzcyh3aXRoIHN1cGVyY2xhc3MgaWYgIgogICAgICAgICAgICAiYXBwbGljYWJsZSksIG1ldGhvZHMgYW5kIGZ1bmN0aW9ucy5cblRvZ2dsZSBuZXN0ZWQgaXRlbXMuXG4iCkBAIC05NSw3ICs5Niw3IEBACiAgICAgfQogCiBfY29sb3JfZGVsZWdhdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnQ29sb3JEZWxlZ2F0b3InLAorICAgICdmaWxlJzogJ2NvbG9yaXplcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSB0ZXh0IGlzIHNhbXBsZSBQeXRob24gY29kZS5cbiIKICAgICAgICAgICAgIkVuc3VyZSBjb21wb25lbnRzIGxpa2UgY29tbWVudHMsIGtleXdvcmRzLCBidWlsdGlucyxcbiIKQEAgLTEwNCw3ICsxMDUsNyBAQAogICAgIH0KIAogQ29uZmlnRGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnY29uZmlnRGlhbG9nJywKKyAgICAnZmlsZSc6ICdjb25maWdkaWFsb2cnLAogICAgICdrd2RzJzogeyd0aXRsZSc6ICdDb25maWdEaWFsb2dUZXN0JywKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZSx9LAogICAgICdtc2cnOiAiSURMRSBwcmVmZXJlbmNlcyBkaWFsb2cuXG4iCkBAIC0xMjEsNyArMTIyLDcgQEAKIAogIyBUT0RPIEltcHJvdmUgbWVzc2FnZQogX2R5bl9vcHRpb25fbWVudV9zcGVjID0gewotICAgICdmaWxlJzogJ2R5bk9wdGlvbk1lbnVXaWRnZXQnLAorICAgICdmaWxlJzogJ2R5bm9wdGlvbicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlNlbGVjdCBvbmUgb2YgdGhlIG1hbnkgb3B0aW9ucyBpbiB0aGUgJ29sZCBvcHRpb24gc2V0Jy5cbiIKICAgICAgICAgICAgIkNsaWNrIHRoZSBidXR0b24gdG8gY2hhbmdlIHRoZSBvcHRpb24gc2V0LlxuIgpAQCAtMTMwLDM5ICsxMzEsMTUgQEAKIAogIyBUT0RPIGVkaXQgd3JhcHBlcgogX2VkaXRvcl93aW5kb3dfc3BlYyA9IHsKLSAgICdmaWxlJzogJ0VkaXRvcldpbmRvdycsCisgICAnZmlsZSc6ICdlZGl0b3InLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJUZXN0IGVkaXRvciBmdW5jdGlvbnMgb2YgaW50ZXJlc3QuXG4iCiAgICAgICAgICAgICJCZXN0IHRvIGNsb3NlIGVkaXRvciBmaXJzdC4iCiAgICAgfQogCi1HZXRDZmdTZWN0aW9uTmFtZURpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nJywKLSAgICAna3dkcyc6IHsndGl0bGUnOidHZXQgTmFtZScsCi0gICAgICAgICAgICAgJ21lc3NhZ2UnOidFbnRlciBzb21ldGhpbmcnLAotICAgICAgICAgICAgICd1c2VkX25hbWVzJzogeydhYmMnfSwKLSAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCi0gICAgJ21zZyc6ICJBZnRlciB0aGUgdGV4dCBlbnRlcmVkIHdpdGggW09rXSBpcyBzdHJpcHBlZCwgPG5vdGhpbmc+LCAiCi0gICAgICAgICAgICInYWJjJywgb3IgbW9yZSB0aGF0IDMwIGNoYXJzIGFyZSBlcnJvcnMuXG4iCi0gICAgICAgICAgICJDbG9zZSAnR2V0IE5hbWUnIHdpdGggYSB2YWxpZCBlbnRyeSAocHJpbnRlZCB0byBTaGVsbCksICIKLSAgICAgICAgICAgIltDYW5jZWxdLCBvciBbWF0iLAotICAgIH0KLQotR2V0SGVscFNvdXJjZURpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2NvbmZpZ0hlbHBTb3VyY2VFZGl0JywKLSAgICAna3dkcyc6IHsndGl0bGUnOiAnR2V0IGhlbHBzb3VyY2UnLAotICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKLSAgICAnbXNnJzogIkVudGVyIG1lbnUgaXRlbSBuYW1lIGFuZCBoZWxwIGZpbGUgcGF0aFxuICIKLSAgICAgICAgICAgIjxub3RoaW5nPiBhbmQgbW9yZSB0aGFuIDMwIGNoYXJzIGFyZSBpbnZhbGlkIG1lbnUgaXRlbSBuYW1lcy5cbiIKLSAgICAgICAgICAgIjxub3RoaW5nPiwgZmlsZSBkb2VzIG5vdCBleGlzdCBhcmUgaW52YWxpZCBwYXRoIGl0ZW1zLlxuIgotICAgICAgICAgICAiVGVzdCBmb3IgaW5jb21wbGV0ZSB3ZWIgYWRkcmVzcyBmb3IgaGVscCBmaWxlIHBhdGguXG4iCi0gICAgICAgICAgICJBIHZhbGlkIGVudHJ5IHdpbGwgYmUgcHJpbnRlZCB0byBzaGVsbCB3aXRoIFswa10uXG4iCi0gICAgICAgICAgICJbQ2FuY2VsXSB3aWxsIHByaW50IE5vbmUgdG8gc2hlbGwiLAotICAgIH0KLQogIyBVcGRhdGUgb25jZSBpc3N1ZTIxNTE5IGlzIHJlc29sdmVkLgogR2V0S2V5c0RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ2tleWJpbmRpbmdEaWFsb2cnLAorICAgICdmaWxlJzogJ2NvbmZpZ19rZXknLAogICAgICdrd2RzJzogeyd0aXRsZSc6ICdUZXN0IGtleWJpbmRpbmdzJywKICAgICAgICAgICAgICAnYWN0aW9uJzogJ2ZpbmQtYWdhaW4nLAogICAgICAgICAgICAgICdjdXJyZW50S2V5U2VxdWVuY2VzJzogWycnXSAsCkBAIC0xNzcsNyArMTU0LDcgQEAKICAgICB9CiAKIF9ncmVwX2RpYWxvZ19zcGVjID0gewotICAgICdmaWxlJzogJ0dyZXBEaWFsb2cnLAorICAgICdmaWxlJzogJ2dyZXAnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayB0aGUgJ1Nob3cgR3JlcERpYWxvZycgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB0aGUgdmFyaW91cyAnRmluZC1pbi1maWxlcycgZnVuY3Rpb25zLlxuIgpAQCAtMTg2LDggKzE2MywyNCBAQAogICAgICAgICAgICAic2hvdWxkIG9wZW4gdGhhdCBmaWxlIFxuaW4gYSBuZXcgRWRpdG9yV2luZG93LiIKICAgICB9CiAKK0hlbHBTb3VyY2Vfc3BlYyA9IHsKKyAgICAnZmlsZSc6ICdxdWVyeScsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ0hlbHAgbmFtZSBhbmQgc291cmNlJywKKyAgICAgICAgICAgICAnbWVudWl0ZW0nOiAndGVzdCcsCisgICAgICAgICAgICAgJ2ZpbGVwYXRoJzogX19maWxlX18sCisgICAgICAgICAgICAgJ3VzZWRfbmFtZXMnOiB7J2FiYyd9LAorICAgICAgICAgICAgICdfaHRlc3QnOiBUcnVlfSwKKyAgICAnbXNnJzogIkVudGVyIG1lbnUgaXRlbSBuYW1lIGFuZCBoZWxwIGZpbGUgcGF0aFxuIgorICAgICAgICAgICAiJycsID4gdGhhbiAzMCBjaGFycywgYW5kICdhYmMnIGFyZSBpbnZhbGlkIG1lbnUgaXRlbSBuYW1lcy5cbiIKKyAgICAgICAgICAgIicnIGFuZCBmaWxlIGRvZXMgbm90IGV4aXN0IGFyZSBpbnZhbGlkIHBhdGggaXRlbXMuXG4iCisgICAgICAgICAgICJBbnkgdXJsICgnd3d3Li4uJywgJ2h0dHAuLi4nKSBpcyBhY2NlcHRlZC5cbiIKKyAgICAgICAgICAgIlRlc3QgQnJvd3NlIHdpdGggYW5kIHdpdGhvdXQgcGF0aCwgYXMgY2Fubm90IHVuaXR0ZXN0LlxuIgorICAgICAgICAgICAiW09rXSBvciA8UmV0dXJuPiBwcmludHMgdmFsaWQgZW50cnkgdG8gc2hlbGxcbiIKKyAgICAgICAgICAgIltDYW5jZWxdIG9yIDxFc2NhcGU+IHByaW50cyBOb25lIHRvIHNoZWxsIgorICAgIH0KKwogX2lvX2JpbmRpbmdfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdJT0JpbmRpbmcnLAorICAgICdmaWxlJzogJ2lvbWVudScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRlc3QgdGhlIGZvbGxvd2luZyBiaW5kaW5ncy5cbiIKICAgICAgICAgICAgIjxDb250cm9sLW8+IHRvIG9wZW4gZmlsZSBmcm9tIGRpYWxvZy5cbiIKQEAgLTIwMCw3ICsxOTMsNyBAQAogICAgIH0KIAogX211bHRpX2NhbGxfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdNdWx0aUNhbGwnLAorICAgICdmaWxlJzogJ211bHRpY2FsbCcsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSBmb2xsb3dpbmcgYWN0aW9ucyBzaG91bGQgdHJpZ2dlciBhIHByaW50IHRvIGNvbnNvbGUgb3IgSURMRSIKICAgICAgICAgICAgIiBTaGVsbC5cbkVudGVyaW5nIGFuZCBsZWF2aW5nIHRoZSB0ZXh0IGFyZWEsIGtleSBlbnRyeSwgIgpAQCAtMjEwLDE0ICsyMDMsMTQgQEAKICAgICB9CiAKIF9tdWx0aXN0YXR1c19iYXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdNdWx0aVN0YXR1c0JhcicsCisgICAgJ2ZpbGUnOiAnc3RhdHVzYmFyJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiRW5zdXJlIHByZXNlbmNlIG9mIG11bHRpLXN0YXR1cyBiYXIgYmVsb3cgdGV4dCBhcmVhLlxuIgogICAgICAgICAgICAiQ2xpY2sgJ1VwZGF0ZSBTdGF0dXMnIHRvIGNoYW5nZSB0aGUgbXVsdGktc3RhdHVzIHRleHQiCiAgICAgfQogCiBfb2JqZWN0X2Jyb3dzZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdPYmplY3RCcm93c2VyJywKKyAgICAnZmlsZSc6ICdkZWJ1Z29iaicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkRvdWJsZSBjbGljayBvbiBpdGVtcyB1cHRvIHRoZSBsb3dlc3QgbGV2ZWwuXG4iCiAgICAgICAgICAgICJBdHRyaWJ1dGVzIG9mIHRoZSBvYmplY3RzIGFuZCByZWxhdGVkIGluZm9ybWF0aW9uICIKQEAgLTIyNSw3ICsyMTgsNyBAQAogICAgIH0KIAogX3BhdGhfYnJvd3Nlcl9zcGVjID0gewotICAgICdmaWxlJzogJ1BhdGhCcm93c2VyJywKKyAgICAnZmlsZSc6ICdwYXRoYnJvd3NlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRlc3QgZm9yIGNvcnJlY3QgZGlzcGxheSBvZiBhbGwgcGF0aHMgaW4gc3lzLnBhdGguXG4iCiAgICAgICAgICAgICJUb2dnbGUgbmVzdGVkIGl0ZW1zIHVwdG8gdGhlIGxvd2VzdCBsZXZlbC5cbiIKQEAgLTIzNCw3ICsyMjcsNyBAQAogICAgIH0KIAogX3BlcmNvbGF0b3Jfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdQZXJjb2xhdG9yJywKKyAgICAnZmlsZSc6ICdwZXJjb2xhdG9yJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiVGhlcmUgYXJlIHR3byB0cmFjZXJzIHdoaWNoIGNhbiBiZSB0b2dnbGVkIHVzaW5nIGEgY2hlY2tib3guXG4iCiAgICAgICAgICAgICJUb2dnbGluZyBhIHRyYWNlciAnb24nIGJ5IGNoZWNraW5nIGl0IHNob3VsZCBwcmludCB0cmFjZXIiCkBAIC0yNDQsOCArMjM3LDIwIEBACiAgICAgICAgICAgICJUZXN0IGZvciBhY3Rpb25zIGxpa2UgdGV4dCBlbnRyeSwgYW5kIHJlbW92YWwuIgogICAgIH0KIAorUXVlcnlfc3BlYyA9IHsKKyAgICAnZmlsZSc6ICdxdWVyeScsCisgICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1F1ZXJ5JywKKyAgICAgICAgICAgICAnbWVzc2FnZSc6ICdFbnRlciBzb21ldGhpbmcnLAorICAgICAgICAgICAgICd0ZXh0MCc6ICdHbycsCisgICAgICAgICAgICAgJ19odGVzdCc6IFRydWV9LAorICAgICdtc2cnOiAiRW50ZXIgd2l0aCA8UmV0dXJuPiBvciBbT2tdLiAgUHJpbnQgdmFsaWQgZW50cnkgdG8gU2hlbGxcbiIKKyAgICAgICAgICAgIkJsYW5rIGxpbmUsIGFmdGVyIHN0cmlwcGluZywgaXMgaWdub3JlZFxuIgorICAgICAgICAgICAiQ2xvc2UgZGlhbG9nIHdpdGggdmFsaWQgZW50cnksIDxFc2NhcGU+LCBbQ2FuY2VsXSwgW1hdIgorICAgIH0KKworCiBfcmVwbGFjZV9kaWFsb2dfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdSZXBsYWNlRGlhbG9nJywKKyAgICAnZmlsZSc6ICdyZXBsYWNlJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiQ2xpY2sgdGhlICdSZXBsYWNlJyBidXR0b24uXG4iCiAgICAgICAgICAgICJUZXN0IHZhcmlvdXMgcmVwbGFjZSBvcHRpb25zIGluIHRoZSAnUmVwbGFjZSBkaWFsb2cnLlxuIgpAQCAtMjUzLDE1ICsyNTgsMjIgQEAKICAgICB9CiAKIF9zZWFyY2hfZGlhbG9nX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnU2VhcmNoRGlhbG9nJywKKyAgICAnZmlsZSc6ICdzZWFyY2gnLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayB0aGUgJ1NlYXJjaCcgYnV0dG9uLlxuIgogICAgICAgICAgICAiVGVzdCB2YXJpb3VzIHNlYXJjaCBvcHRpb25zIGluIHRoZSAnU2VhcmNoIGRpYWxvZycuXG4iCiAgICAgICAgICAgICJDbGljayBbQ2xvc2VdIG9yIFtYXSB0byBjbG9zZSB0aGUgJ1NlYXJjaCBEaWFsb2cnLiIKICAgICB9CiAKK19zZWFyY2hiYXNlX3NwZWMgPSB7CisgICAgJ2ZpbGUnOiAnc2VhcmNoYmFzZScsCisgICAgJ2t3ZHMnOiB7fSwKKyAgICAnbXNnJzogIkNoZWNrIHRoZSBhcHBlYXJhbmNlIG9mIHRoZSBiYXNlIHNlYXJjaCBkaWFsb2dcbiIKKyAgICAgICAgICAgIkl0cyBvbmx5IGFjdGlvbiBpcyB0byBjbG9zZS4iCisgICAgfQorCiBfc2Nyb2xsZWRfbGlzdF9zcGVjID0gewotICAgICdmaWxlJzogJ1Njcm9sbGVkTGlzdCcsCisgICAgJ2ZpbGUnOiAnc2Nyb2xsZWRsaXN0JywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiWW91IHNob3VsZCBzZWUgYSBzY3JvbGxhYmxlIGxpc3Qgb2YgaXRlbXNcbiIKICAgICAgICAgICAgIlNlbGVjdGluZyAoY2xpY2tpbmcpIG9yIGRvdWJsZSBjbGlja2luZyBhbiBpdGVtICIKQEAgLTI3Nyw3ICsyODksNyBAQAogICAgIH0KIAogX3N0YWNrX3ZpZXdlcl9zcGVjID0gewotICAgICdmaWxlJzogJ1N0YWNrVmlld2VyJywKKyAgICAnZmlsZSc6ICdzdGFja3ZpZXdlcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkEgc3RhY2t0cmFjZSBmb3IgYSBOYW1lRXJyb3IgZXhjZXB0aW9uLlxuIgogICAgICAgICAgICAiRXhwYW5kICdpZGxlbGliIC4uLicgYW5kICc8bG9jYWxzPicuXG4iCkBAIC0yOTUsOCArMzA3LDggQEAKICAgICB9CiAKIFRleHRWaWV3ZXJfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICd0ZXh0VmlldycsCi0gICAgJ2t3ZHMnOiB7J3RpdGxlJzogJ1Rlc3QgdGV4dFZpZXcnLAorICAgICdmaWxlJzogJ3RleHR2aWV3JywKKyAgICAna3dkcyc6IHsndGl0bGUnOiAnVGVzdCB0ZXh0dmlldycsCiAgICAgICAgICAgICAgJ3RleHQnOidUaGUgcXVpY2sgYnJvd24gZm94IGp1bXBzIG92ZXIgdGhlIGxhenkgZG9nLlxuJyozNSwKICAgICAgICAgICAgICAnX2h0ZXN0JzogVHJ1ZX0sCiAgICAgJ21zZyc6ICJUZXN0IGZvciByZWFkLW9ubHkgcHJvcGVydHkgb2YgdGV4dC5cbiIKQEAgLTMwNCwyMSArMzE2LDIxIEBACiAgICAgIH0KIAogX3Rvb2x0aXBfc3BlYyA9IHsKLSAgICAnZmlsZSc6ICdUb29sVGlwJywKKyAgICAnZmlsZSc6ICd0b29sdGlwJywKICAgICAna3dkcyc6IHt9LAogICAgICdtc2cnOiAiUGxhY2UgbW91c2UgY3Vyc29yIG92ZXIgYm90aCB0aGUgYnV0dG9uc1xuIgogICAgICAgICAgICAiQSB0b29sdGlwIHNob3VsZCBhcHBlYXIgd2l0aCBzb21lIHRleHQuIgogICAgIH0KIAogX3RyZWVfd2lkZ2V0X3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnVHJlZVdpZGdldCcsCisgICAgJ2ZpbGUnOiAndHJlZScsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIlRoZSBjYW52YXMgaXMgc2Nyb2xsYWJsZS5cbiIKICAgICAgICAgICAgIkNsaWNrIG9uIGZvbGRlcnMgdXB0byB0byB0aGUgbG93ZXN0IGxldmVsLiIKICAgICB9CiAKIF91bmRvX2RlbGVnYXRvcl9zcGVjID0gewotICAgICdmaWxlJzogJ1VuZG9EZWxlZ2F0b3InLAorICAgICdmaWxlJzogJ3VuZG8nLAogICAgICdrd2RzJzoge30sCiAgICAgJ21zZyc6ICJDbGljayBbVW5kb10gdG8gdW5kbyBhbnkgYWN0aW9uLlxuIgogICAgICAgICAgICAiQ2xpY2sgW1JlZG9dIHRvIHJlZG8gYW55IGFjdGlvbi5cbiIKQEAgLTMyNyw3ICszMzksNyBAQAogICAgIH0KIAogX3dpZGdldF9yZWRpcmVjdG9yX3NwZWMgPSB7Ci0gICAgJ2ZpbGUnOiAnV2lkZ2V0UmVkaXJlY3RvcicsCisgICAgJ2ZpbGUnOiAncmVkaXJlY3RvcicsCiAgICAgJ2t3ZHMnOiB7fSwKICAgICAnbXNnJzogIkV2ZXJ5IHRleHQgaW5zZXJ0IHNob3VsZCBiZSBwcmludGVkIHRvIHRoZSBjb25zb2xlLiIKICAgICAgICAgICAgIm9yIHRoZSBJRExFIHNoZWxsLiIKQEAgLTMzNywxNCArMzQ5LDEzIEBACiAgICAgcm9vdCA9IHRrLlRrKCkKICAgICByb290LnRpdGxlKCdJRExFIGh0ZXN0JykKICAgICByb290LnJlc2l6YWJsZSgwLCAwKQotICAgIF9pbml0aWFsaXplVGtWYXJpYW50VGVzdHMocm9vdCkKIAogICAgICMgYSBzY3JvbGxhYmxlIExhYmVsIGxpa2UgY29uc3RhbnQgd2lkdGggdGV4dCB3aWRnZXQuCiAgICAgZnJhbWVMYWJlbCA9IHRrLkZyYW1lKHJvb3QsIHBhZHg9MTApCiAgICAgZnJhbWVMYWJlbC5wYWNrKCkKICAgICB0ZXh0ID0gdGsuVGV4dChmcmFtZUxhYmVsLCB3cmFwPSd3b3JkJykKICAgICB0ZXh0LmNvbmZpZ3VyZShiZz1yb290LmNnZXQoJ2JnJyksIHJlbGllZj0nZmxhdCcsIGhlaWdodD00LCB3aWR0aD03MCkKLSAgICBzY3JvbGxiYXIgPSB0ay5TY3JvbGxiYXIoZnJhbWVMYWJlbCwgY29tbWFuZD10ZXh0Lnl2aWV3KQorICAgIHNjcm9sbGJhciA9IFNjcm9sbGJhcihmcmFtZUxhYmVsLCBjb21tYW5kPXRleHQueXZpZXcpCiAgICAgdGV4dC5jb25maWcoeXNjcm9sbGNvbW1hbmQ9c2Nyb2xsYmFyLnNldCkKICAgICBzY3JvbGxiYXIucGFjayhzaWRlPSdyaWdodCcsIGZpbGw9J3knLCBleHBhbmQ9RmFsc2UpCiAgICAgdGV4dC5wYWNrKHNpZGU9J2xlZnQnLCBmaWxsPSdib3RoJywgZXhwYW5kPVRydWUpCkBAIC0zNjUsMTEgKzM3NiwxMSBAQAogICAgICAgICAgICAgICAgIHRlc3QgPSBnZXRhdHRyKG1vZCwgdGVzdF9uYW1lKQogICAgICAgICAgICAgICAgIHRlc3RfbGlzdC5hcHBlbmQoKHRlc3Rfc3BlYywgdGVzdCkpCiAKLSAgICB0ZXN0X25hbWUgPSB0ay5TdHJpbmdWYXIoJycpCisgICAgdGVzdF9uYW1lID0gdGsuU3RyaW5nVmFyKHJvb3QpCiAgICAgY2FsbGFibGVfb2JqZWN0ID0gTm9uZQogICAgIHRlc3Rfa3dkcyA9IE5vbmUKIAotICAgIGRlZiBuZXh0KCk6CisgICAgZGVmIG5leHRfdGVzdCgpOgogCiAgICAgICAgIG5vbmxvY2FsIHRlc3RfbmFtZSwgY2FsbGFibGVfb2JqZWN0LCB0ZXN0X2t3ZHMKICAgICAgICAgaWYgbGVuKHRlc3RfbGlzdCkgPT0gMToKQEAgLTM4NCwyMCArMzk1LDI2IEBACiAgICAgICAgIHRleHQuaW5zZXJ0KCIxLjAiLHRlc3Rfc3BlY1snbXNnJ10pCiAgICAgICAgIHRleHQuY29uZmlndXJlKHN0YXRlPSdkaXNhYmxlZCcpICMgcHJlc2VydmUgcmVhZC1vbmx5IHByb3BlcnR5CiAKLSAgICBkZWYgcnVuX3Rlc3QoKToKKyAgICBkZWYgcnVuX3Rlc3QoXz1Ob25lKToKICAgICAgICAgd2lkZ2V0ID0gY2FsbGFibGVfb2JqZWN0KCoqdGVzdF9rd2RzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBwcmludCh3aWRnZXQucmVzdWx0KQogICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CiAgICAgICAgICAgICBwYXNzCiAKLSAgICBidXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dHZhcmlhYmxlPXRlc3RfbmFtZSwgY29tbWFuZD1ydW5fdGVzdCkKKyAgICBkZWYgY2xvc2UoXz1Ob25lKToKKyAgICAgICAgcm9vdC5kZXN0cm95KCkKKworICAgIGJ1dHRvbiA9IHRrLkJ1dHRvbihyb290LCB0ZXh0dmFyaWFibGU9dGVzdF9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PSdhY3RpdmUnLCBjb21tYW5kPXJ1bl90ZXN0KQorICAgIG5leHRfYnV0dG9uID0gdGsuQnV0dG9uKHJvb3QsIHRleHQ9Ik5leHQiLCBjb21tYW5kPW5leHRfdGVzdCkKICAgICBidXR0b24ucGFjaygpCi0gICAgbmV4dF9idXR0b24gPSB0ay5CdXR0b24ocm9vdCwgdGV4dD0iTmV4dCIsIGNvbW1hbmQ9bmV4dCkKICAgICBuZXh0X2J1dHRvbi5wYWNrKCkKKyAgICBuZXh0X2J1dHRvbi5mb2N1c19zZXQoKQorICAgIHJvb3QuYmluZCgnPEtleS1SZXR1cm4+JywgcnVuX3Rlc3QpCisgICAgcm9vdC5iaW5kKCc8S2V5LUVzY2FwZT4nLCBjbG9zZSkKIAotICAgIG5leHQoKQotCisgICAgbmV4dF90ZXN0KCkKICAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvbW9ja19pZGxlLnB5CmluZGV4IDE2NzJhMzQuLmM3YjQ5ZWYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC9tb2NrX2lkbGUucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L21vY2tfaWRsZS5weQpAQCAtMzMsNyArMzMsNyBAQAogCiAKIGNsYXNzIEVkaXRvcjoKLSAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93IGNsYXNzLgorICAgICcnJ01pbmltYWxseSBpbWl0YXRlIGVkaXRvci5FZGl0b3JXaW5kb3cgY2xhc3MuCiAgICAgJycnCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUsIGZpbGVuYW1lPU5vbmUsIGtleT1Ob25lLCByb290PU5vbmUpOgogICAgICAgICBzZWxmLnRleHQgPSBUZXh0KCkKQEAgLTQ2LDcgKzQ2LDcgQEAKIAogCiBjbGFzcyBVbmRvRGVsZWdhdG9yOgotICAgICcnJ01pbmltYWxseSBpbWl0YXRlIFVuZG9EZWxlZ2F0b3IsVW5kb0RlbGVnYXRvciBjbGFzcy4KKyAgICAnJydNaW5pbWFsbHkgaW1pdGF0ZSB1bmRvLlVuZG9EZWxlZ2F0b3IgY2xhc3MuCiAgICAgJycnCiAgICAgIyBBIHJlYWwgdW5kbyBibG9jayBpcyBvbmx5IG5lZWRlZCBmb3IgdXNlciBpbnRlcmFjdGlvbi4KICAgICBkZWYgdW5kb19ibG9ja19zdGFydCgqYXJncyk6CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvY29tcGxldGUucHkKaW5kZXggNWZjODk5ZC4uZjNmMmRlYSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2NvbXBsZXRlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9jb21wbGV0ZS5weQpAQCAtMSw5ICsxLDEzIEBACisnJycgVGVzdCBhdXRvY29tcGxldGUgYW5kIGF1dG9jb21wbGVfdworCitDb3ZlcmFnZSBvZiBhdXRvY29tcGxlOiA1NiUKKycnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIAotaW1wb3J0IGlkbGVsaWIuQXV0b0NvbXBsZXRlIGFzIGFjCi1pbXBvcnQgaWRsZWxpYi5BdXRvQ29tcGxldGVXaW5kb3cgYXMgYWN3CitpbXBvcnQgaWRsZWxpYi5hdXRvY29tcGxldGUgYXMgYWMKK2ltcG9ydCBpZGxlbGliLmF1dG9jb21wbGV0ZV93IGFzIGFjdwogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX2lkbGUgaW1wb3J0IEZ1bmMKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgRXZlbnQKIApAQCAtOTEsNiArOTUsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoYXV0b2NvbXBsZXRlLmF1dG9jb21wbGV0ZV9ldmVudChldikpCiAgICAgICAgIGRlbCBldi5tY19zdGF0ZQogCisgICAgICAgICMgVGVzdCB0aGF0IHRhYiBhZnRlciB3aGl0ZXNwYWNlIGlzIGlnbm9yZWQuCisgICAgICAgIHNlbGYudGV4dC5pbnNlcnQoJzEuMCcsICcgICAgICAgICIiIkRvY3N0cmluZy5cbiAgICAnKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShhdXRvY29tcGxldGUuYXV0b2NvbXBsZXRlX2V2ZW50KGV2KSkKKyAgICAgICAgc2VsZi50ZXh0LmRlbGV0ZSgnMS4wJywgJ2VuZCcpCisKICAgICAgICAgIyBJZiBhdXRvY29tcGxldGUgd2luZG93IGlzIG9wZW4sIGNvbXBsZXRlKCkgbWV0aG9kIGlzIGNhbGxlZAogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAncmUuJykKICAgICAgICAgIyBUaGlzIG11c3QgY2FsbCBhdXRvY29tcGxldGUuX21ha2VfYXV0b2NvbXBsZXRlX3dpbmRvdygpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfYXV0b2V4cGFuZC5weQppbmRleCBkMmEzMTU2Li5hZTgxODZjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9hdXRvZXhwYW5kLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2F1dG9leHBhbmQucHkKQEAgLTEsOSArMSw5IEBACi0iIiJVbml0IHRlc3RzIGZvciBpZGxlbGliLkF1dG9FeHBhbmQiIiIKKyIiIlVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuYXV0b2V4cGFuZCIiIgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGV4dCwgVGsKICNmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFRleHQKLWZyb20gaWRsZWxpYi5BdXRvRXhwYW5kIGltcG9ydCBBdXRvRXhwYW5kCitmcm9tIGlkbGVsaWIuYXV0b2V4cGFuZCBpbXBvcnQgQXV0b0V4cGFuZAogCiAKIGNsYXNzIER1bW15X0VkaXR3aW46CkBAIC0yMiw2ICsyMiw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBjbHMudGV4dCA9IFRleHQoKQogICAgICAgICBjbHMuYXV0b19leHBhbmQgPSBBdXRvRXhwYW5kKER1bW15X0VkaXR3aW4oY2xzLnRleHQpKQorICAgICAgICBjbHMuYXV0b19leHBhbmQuYmVsbCA9IGxhbWJkYTogTm9uZQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKQEAgLTEzNyw1ICsxMzgsNiBAQAogICAgICAgICBuZXdfc3RhdGUgPSBzZWxmLmF1dG9fZXhwYW5kLnN0YXRlCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaW5pdGlhbF9zdGF0ZSwgbmV3X3N0YXRlKQogCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NhbGx0aXBzLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKaW5kZXggYjJhNzMzYy4uMGIxMTYwMiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY2FsbHRpcHMucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpZGxlbGliLkNhbGxUaXBzIGFzIGN0CitpbXBvcnQgaWRsZWxpYi5jYWxsdGlwcyBhcyBjdAogaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdHlwZXMKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29sb3JpemVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzOGJjM2UKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb2xvcml6ZXIucHkKQEAgLTAsMCArMSw1NiBAQAorJycnVGVzdCBpZGxlbGliL2NvbG9yaXplci5weQorCitQZXJmb3JtIG1pbmltYWwgc2FuaXR5IGNoZWNrcyB0aGF0IG1vZHVsZSBpbXBvcnRzIGFuZCBzb21lIHRoaW5ncyBydW4uCisKK0NvdmVyYWdlIDIyJS4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBjb2xvcml6ZXIgICMgYWx3YXlzIHRlc3QgaW1wb3J0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKK2ltcG9ydCB1bml0dGVzdAorCisKK2NsYXNzIEZ1bmN0aW9uVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hbnkoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb2xvcml6ZXIuYW55KCd0ZXN0JywgKCdhJywgJ2InKSkpCisKKyAgICBkZWYgdGVzdF9tYWtlX3BhdChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbG9yaXplci5tYWtlX3BhdCgpKQorCisKK2NsYXNzIENvbG9yQ29uZmlnVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy50ZXh0ID0gVGV4dChjbHMucm9vdCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMudGV4dAorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9jb2xvcml6ZXIoc2VsZik6CisgICAgICAgIGNvbG9yaXplci5jb2xvcl9jb25maWcoc2VsZi50ZXh0KQorCitjbGFzcyBDb2xvckRlbGVnYXRvclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gVGsoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfY29sb3JpemVyKHNlbGYpOgorICAgICAgICBjb2xvcml6ZXIuQ29sb3JEZWxlZ2F0b3IoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZy5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hM2ZhMWEzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnLnB5CkBAIC0wLDAgKzEsMTYwIEBACisnJydUZXN0IGlkbGVsaWIuY29uZmlnLgorCitNdWNoIGlzIHRlc3RlZCBieSBvcGVuaW5nIGNvbmZpZyBkaWFsb2cgbGl2ZSBvciBpbiB0ZXN0X2NvbmZpZ2RpYWxvZy4KK0NvdmVyYWdlOiAyNyUKKycnJworZnJvbSBzeXMgaW1wb3J0IG1vZHVsZXMKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBjYXB0dXJlZF9zdGRlcnIKK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWcKKworIyBUZXN0cyBzaG91bGQgbm90IGRlcGVuZCBvbiBmb3J0dWl0b3VzIHVzZXIgY29uZmlndXJhdGlvbnMuCisjIFRoZXkgbXVzdCBub3QgYWZmZWN0IGFjdHVhbCB1c2VyIC5jZmcgZmlsZXMuCisjIFJlcGxhY2UgdXNlciBwYXJzZXJzIHdpdGggZW1wdHkgcGFyc2VycyB0aGF0IGNhbm5vdCBiZSBzYXZlZC4KKworaWRsZUNvbmYgPSBjb25maWcuaWRsZUNvbmYKK3VzZXJjZmcgPSBpZGxlQ29uZi51c2VyQ2ZnCit0ZXN0Y2ZnID0ge30KK3VzZXJtYWluID0gdGVzdGNmZ1snbWFpbiddID0gY29uZmlnLklkbGVVc2VyQ29uZlBhcnNlcignJykgICMgZmlsZW5hbWUKK3VzZXJoaWdoID0gdGVzdGNmZ1snaGlnaGxpZ2h0J10gPSBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKQordXNlcmtleXMgPSB0ZXN0Y2ZnWydrZXlzJ10gPSBjb25maWcuSWRsZVVzZXJDb25mUGFyc2VyKCcnKQorCitkZWYgc2V0VXBNb2R1bGUoKToKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdGVzdGNmZworCitkZWYgdGVhckRvd25Nb2R1bGUoKToKKyAgICBpZGxlQ29uZi51c2VyQ2ZnID0gdXNlcmNmZworCisKK2NsYXNzIEN1cnJlbnRDb2xvcktleXNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiIgVGVzdCBjb2xvcmtleXMgZnVuY3Rpb24gd2l0aCB1c2VyIGNvbmZpZyBbVGhlbWVdIGFuZCBbS2V5c10gcGF0dGVybnMuCisKKyAgICAgICAgY29sb3JrZXlzID0gY29uZmlnLklkbGVDb25mLmN1cnJlbnRfY29sb3JzX2FuZF9rZXlzCisgICAgICAgIFRlc3QgYWxsIHBhdHRlcm5zIHdyaXR0ZW4gYnkgSURMRSBhbmQgc29tZSBlcnJvcnMKKyAgICAgICAgSXRlbSAnZGVmYXVsdCcgc2hvdWxkIHJlYWxseSBiZSAnYnVpbHRpbicgKHZlcnN1cyAnY3VzdG9tKS4KKyAgICAiIiIKKyAgICBjb2xvcmtleXMgPSBpZGxlQ29uZi5jdXJyZW50X2NvbG9yc19hbmRfa2V5cworICAgIGRlZmF1bHRfdGhlbWUgPSAnSURMRSBDbGFzc2ljJworICAgIGRlZmF1bHRfa2V5cyA9IGlkbGVDb25mLmRlZmF1bHRfa2V5cygpCisKKyAgICBkZWYgdGVzdF9vbGRfYnVpbHRpbl90aGVtZShzZWxmKToKKyAgICAgICAgIyBPbiBpbml0aWFsIGluc3RhbGxhdGlvbiwgdXNlciBtYWluIGlzIGJsYW5rLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgICMgRm9yIG9sZCBkZWZhdWx0LCBuYW1lMiBtdXN0IGJlIGJsYW5rLgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtUaGVtZV0KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICAnJycpCisgICAgICAgICMgSURMRSBvbWl0cyAnbmFtZScgZm9yIGRlZmF1bHQgb2xkIGJ1aWx0aW4gdGhlbWUuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgIyBJRExFIGFkZHMgJ25hbWUnIGZvciBub24tZGVmYXVsdCBvbGQgYnVpbHRpbiB0aGVtZS4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdJRExFIE5ldycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgTmV3JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgb2xkIGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnVGhlbWUnXVsnbmFtZSddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgc2VsZi5kZWZhdWx0X3RoZW1lKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorCisgICAgZGVmIHRlc3RfbmV3X2J1aWx0aW5fdGhlbWUoc2VsZik6CisgICAgICAgICMgSURMRSB3cml0ZXMgbmFtZTIgZm9yIG5ldyBidWlsdGlucy4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbVGhlbWVdCisgICAgICAgICAgICBkZWZhdWx0ID0gVHJ1ZQorICAgICAgICAgICAgbmFtZTIgPSBJRExFIERhcmsKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgRGFyaycpCisgICAgICAgICMgTGVmdG92ZXIgJ25hbWUnLCBub3QgcmVtb3ZlZCwgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUnXSA9ICdJRExFIE5ldycKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnVGhlbWUnKSwgJ0lETEUgRGFyaycpCisgICAgICAgICMgRXJyb25lb3VzIG5vbi1kZWZhdWx0IG5ldyBidWlsdGluIHJldmVydHMgdG8gZGVmYXVsdC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCBzZWxmLmRlZmF1bHRfdGhlbWUpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdUaGVtZScpCisKKyAgICBkZWYgdGVzdF91c2VyX292ZXJyaWRlX3RoZW1lKHNlbGYpOgorICAgICAgICAjIEVycm9uZW91cyBjdXN0b20gbmFtZSAobm8gZGVmaW5pdGlvbikgcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtUaGVtZV0KKyAgICAgICAgICAgIGRlZmF1bHQgPSBGYWxzZQorICAgICAgICAgICAgbmFtZSA9IEN1c3RvbSBEYXJrCisgICAgICAgICAgICAnJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksIHNlbGYuZGVmYXVsdF90aGVtZSkKKyAgICAgICAgIyBDdXN0b20gbmFtZSBpcyB2YWxpZCB3aXRoIG1hdGNoaW5nIFNlY3Rpb24gbmFtZS4KKyAgICAgICAgdXNlcmhpZ2gucmVhZF9zdHJpbmcoJ1tDdXN0b20gRGFya11cbmE9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ1RoZW1lJyksICdDdXN0b20gRGFyaycpCisgICAgICAgICMgTmFtZTIgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ1RoZW1lJ11bJ25hbWUyJ10gPSAnbm9uLWV4aXN0ZW50JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdUaGVtZScpLCAnQ3VzdG9tIERhcmsnKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignVGhlbWUnKQorICAgICAgICB1c2VyaGlnaC5yZW1vdmVfc2VjdGlvbignQ3VzdG9tIERhcmsnKQorCisgICAgZGVmIHRlc3Rfb2xkX2J1aWx0aW5fa2V5cyhzZWxmKToKKyAgICAgICAgIyBPbiBpbml0aWFsIGluc3RhbGxhdGlvbiwgdXNlciBtYWluIGlzIGJsYW5rLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksIHNlbGYuZGVmYXVsdF9rZXlzKQorICAgICAgICAjIEZvciBvbGQgZGVmYXVsdCwgbmFtZTIgbXVzdCBiZSBibGFuaywgbmFtZSBpcyBhbHdheXMgdXNlZC4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICBuYW1lID0gSURMRSBDbGFzc2ljIFVuaXgKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBDbGFzc2ljIFVuaXgnKQorICAgICAgICAjIEVycm9uZW91cyBub24tZGVmYXVsdCBvbGQgYnVpbHRpbiByZXZlcnRzIHRvIGRlZmF1bHQuCisgICAgICAgIHVzZXJtYWluWydLZXlzJ11bJ25hbWUnXSA9ICdub24tZXhpc3RlbnQnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgc2VsZi5kZWZhdWx0X2tleXMpCisgICAgICAgIHVzZXJtYWluLnJlbW92ZV9zZWN0aW9uKCdLZXlzJykKKworICAgIGRlZiB0ZXN0X25ld19idWlsdGluX2tleXMoc2VsZik6CisgICAgICAgICMgSURMRSB3cml0ZXMgbmFtZTIgZm9yIG5ldyBidWlsdGlucy4KKyAgICAgICAgdXNlcm1haW4ucmVhZF9zdHJpbmcoJycnCisgICAgICAgICAgICBbS2V5c10KKyAgICAgICAgICAgIGRlZmF1bHQgPSBUcnVlCisgICAgICAgICAgICBuYW1lMiA9IElETEUgTW9kZXJuIFVuaXgKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnSURMRSBNb2Rlcm4gVW5peCcpCisgICAgICAgICMgTGVmdG92ZXIgJ25hbWUnLCBub3QgcmVtb3ZlZCwgaXMgaWdub3JlZC4KKyAgICAgICAgdXNlcm1haW5bJ0tleXMnXVsnbmFtZSddID0gJ0lETEUgQ2xhc3NpYyBVbml4JworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29sb3JrZXlzKCdLZXlzJyksICdJRExFIE1vZGVybiBVbml4JykKKyAgICAgICAgIyBFcnJvbmVvdXMgbm9uLWRlZmF1bHQgbmV3IGJ1aWx0aW4gcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgdXNlcm1haW4ucmVtb3ZlX3NlY3Rpb24oJ0tleXMnKQorCisgICAgZGVmIHRlc3RfdXNlcl9vdmVycmlkZV9rZXlzKHNlbGYpOgorICAgICAgICAjIEVycm9uZW91cyBjdXN0b20gbmFtZSAobm8gZGVmaW5pdGlvbikgcmV2ZXJ0cyB0byBkZWZhdWx0LgorICAgICAgICB1c2VybWFpbi5yZWFkX3N0cmluZygnJycKKyAgICAgICAgICAgIFtLZXlzXQorICAgICAgICAgICAgZGVmYXVsdCA9IEZhbHNlCisgICAgICAgICAgICBuYW1lID0gQ3VzdG9tIEtleXMKKyAgICAgICAgICAgICcnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCBzZWxmLmRlZmF1bHRfa2V5cykKKyAgICAgICAgIyBDdXN0b20gbmFtZSBpcyB2YWxpZCB3aXRoIG1hdGNoaW5nIFNlY3Rpb24gbmFtZS4KKyAgICAgICAgdXNlcmtleXMucmVhZF9zdHJpbmcoJ1tDdXN0b20gS2V5c11cbmE9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb2xvcmtleXMoJ0tleXMnKSwgJ0N1c3RvbSBLZXlzJykKKyAgICAgICAgIyBOYW1lMiBpcyBpZ25vcmVkLgorICAgICAgICB1c2VybWFpblsnS2V5cyddWyduYW1lMiddID0gJ25vbi1leGlzdGVudCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbG9ya2V5cygnS2V5cycpLCAnQ3VzdG9tIEtleXMnKQorICAgICAgICB1c2VybWFpbi5yZW1vdmVfc2VjdGlvbignS2V5cycpCisgICAgICAgIHVzZXJrZXlzLnJlbW92ZV9zZWN0aW9uKCdDdXN0b20gS2V5cycpCisKKworY2xhc3MgV2FybmluZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfd2FybihzZWxmKToKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIGNvbmZpZy5fd2FybmVkID0gc2V0KCkKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm5pbmcnLCAna2V5JykKKyAgICAgICAgRXF1YWwoY29uZmlnLl93YXJuZWQsIHsoJ3dhcm5pbmcnLCdrZXknKX0pCisgICAgICAgIEVxdWFsKHN0ZGVyci5nZXR2YWx1ZSgpLCAnd2FybmluZycrJ1xuJykKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9zdGRlcnIoKSBhcyBzdGRlcnI6CisgICAgICAgICAgICBjb25maWcuX3dhcm4oJ3dhcm5pbmcnLCAna2V5JykKKyAgICAgICAgRXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICcnKQorICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZGVycigpIGFzIHN0ZGVycjoKKyAgICAgICAgICAgIGNvbmZpZy5fd2Fybignd2FybjInLCAneWVrJykKKyAgICAgICAgRXF1YWwoY29uZmlnLl93YXJuZWQsIHsoJ3dhcm5pbmcnLCdrZXknKSwgKCd3YXJuMicsJ3llaycpfSkKKyAgICAgICAgRXF1YWwoc3RkZXJyLmdldHZhbHVlKCksICd3YXJuMicrJ1xuJykKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfaGVscC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19oZWxwLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjRmOGVkLi4wMDAwMDAwCi0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19oZWxwLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSIiIlVuaXR0ZXN0cyBmb3IgaWRsZWxpYi5jb25maWdIZWxwU291cmNlRWRpdCIiIgotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhciwgTWJveCwgRW50cnkKLWZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnSGVscFNvdXJjZUVkaXQgYXMgaGVscF9kaWFsb2dfbW9kdWxlCi0KLWhlbHBfZGlhbG9nID0gaGVscF9kaWFsb2dfbW9kdWxlLkdldEhlbHBTb3VyY2VEaWFsb2cKLQotCi1jbGFzcyBEdW1teV9oZWxwX2RpYWxvZzoKLSAgICAjIE1vY2sgZm9yIHRlc3RpbmcgdGhlIGZvbGxvd2luZyBtZXRob2RzIG9mIGhlbHBfZGlhbG9nCi0gICAgbWVudV9vayA9IGhlbHBfZGlhbG9nLm1lbnVfb2sKLSAgICBwYXRoX29rID0gaGVscF9kaWFsb2cucGF0aF9vawotICAgIG9rID0gaGVscF9kaWFsb2cub2sKLSAgICBjYW5jZWwgPSBoZWxwX2RpYWxvZy5jYW5jZWwKLSAgICAjIEF0dHJpYnV0ZXMsIGNvbnN0YW50IG9yIHZhcmlhYmxlLCBuZWVkZWQgZm9yIHRlc3RzCi0gICAgbWVudSA9IFZhcigpCi0gICAgZW50cnlNZW51ID0gRW50cnkoKQotICAgIHBhdGggPSBWYXIoKQotICAgIGVudHJ5UGF0aCA9IEVudHJ5KCkKLSAgICByZXN1bHQgPSBOb25lCi0gICAgZGVzdHJveWVkID0gRmFsc2UKLQotICAgIGRlZiBkZXN0cm95KHNlbGYpOgotICAgICAgICBzZWxmLmRlc3Ryb3llZCA9IFRydWUKLQotCi0jIG1lbnVfb2sgYW5kIHBhdGhfb2sgY2FsbCBNYm94LnNob3dlcnJvciBpZiBtZW51IGFuZCBwYXRoIGFyZSBub3Qgb2suCi1vcmlnX21ib3ggPSBoZWxwX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94Ci1zaG93ZXJyb3IgPSBNYm94LnNob3dlcnJvcgotCi0KLWNsYXNzIENvbmZpZ0hlbHBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkaWFsb2cgPSBEdW1teV9oZWxwX2RpYWxvZygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBoZWxwX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gTWJveAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgaGVscF9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IG9yaWdfbWJveAotCi0gICAgZGVmIHRlc3RfYmxhbmtfbWVudShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubWVudS5zZXQoJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cubWVudV9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ01lbnUgSXRlbSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9sb25nX21lbnUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCdoZWxsbycgKiAxMCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5tZW51X29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTWVudSBJdGVtIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbG9uZycsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfZ29vZF9tZW51KHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5tZW51LnNldCgnaGVscCcpCi0gICAgICAgIHNob3dlcnJvci50aXRsZSA9ICdObyBFcnJvcicgICMgc2hvdWxkIG5vdCBiZSBjYWxsZWQKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLm1lbnVfb2soKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdObyBFcnJvcicpCi0KLSAgICBkZWYgdGVzdF9ibGFua19wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnJykKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignTm8nLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2ludmFsaWRfZmlsZV9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnZm9vYmFyJyAqIDEwMCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnRmlsZSBQYXRoIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGV4aXN0Jywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF9pbnZhbGlkX3VybF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnd3cuZm9vYmFyLmNvbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgICAgIHNlbGYuZGlhbG9nLnBhdGguc2V0KCdodHQuZm9vYmFyLmNvbScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5kaWFsb2cucGF0aF9vaygpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ0ZpbGUgUGF0aCBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBleGlzdCcsIHNob3dlcnJvci5tZXNzYWdlKQotCi0gICAgZGVmIHRlc3RfZ29vZF9wYXRoKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5wYXRoLnNldCgnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5wYXRoX29rKCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3Rfb2soc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLm1lbnUuc2V0KCdoZWxwJykKLSAgICAgICAgc2VsZi5kaWFsb2cucGF0aC5zZXQoJ2h0dHBzOi8vZG9jcy5weXRob24ub3JnJykKLSAgICAgICAgc2VsZi5kaWFsb2cub2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgKCdoZWxwJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuZGlhbG9nLmRlc3Ryb3llZCkKLQotICAgIGRlZiB0ZXN0X2NhbmNlbChzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cuZGVzdHJveWVkID0gRmFsc2UKLSAgICAgICAgc2VsZi5kaWFsb2cuY2FuY2VsKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5yZXN1bHQsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ19rZXkucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlM2YyYzgKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfa2V5LnB5CkBAIC0wLDAgKzEsMzMgQEAKKycnJyBUZXN0IGlkbGVsaWIuY29uZmlnX2tleS4KKworQ292ZXJhZ2U6IDU2JSBmcm9tIGNyZWF0aW5nIGFuZCBjbG9zaW5nIGRpYWxvZy4KKycnJworZnJvbSBpZGxlbGliIGltcG9ydCBjb25maWdfa2V5Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CisKKworY2xhc3MgR2V0S2V5c1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZSgpICAjIFN0b3AgImNhbid0IHJ1biBldmVudCBjb21tYW5kIiB3YXJuaW5nLgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKworICAgIGRlZiB0ZXN0X2luaXQoc2VsZik6CisgICAgICAgIGRpYSA9IGNvbmZpZ19rZXkuR2V0S2V5c0RpYWxvZygKKyAgICAgICAgICAgIHNlbGYucm9vdCwgJ3Rlc3QnLCAnPDxUZXN0Pj4nLCBbJzxLZXktRjEyPiddLCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgZGlhLkNhbmNlbCgpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnX25hbWUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfbmFtZS5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDBlNzJiOS4uMDAwMDAwMAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdfbmFtZS5weQorKysgL2Rldi9udWxsCkBAIC0xLDc1ICswLDAgQEAKLSIiIlVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuY29uZmlnU2VjdGlvbk5hbWVEaWFsb2ciIiIKLWltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBWYXIsIE1ib3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnU2VjdGlvbk5hbWVEaWFsb2cgYXMgbmFtZV9kaWFsb2dfbW9kdWxlCi0KLW5hbWVfZGlhbG9nID0gbmFtZV9kaWFsb2dfbW9kdWxlLkdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCi0KLWNsYXNzIER1bW15X25hbWVfZGlhbG9nOgotICAgICMgTW9jayBmb3IgdGVzdGluZyB0aGUgZm9sbG93aW5nIG1ldGhvZHMgb2YgbmFtZV9kaWFsb2cKLSAgICBuYW1lX29rID0gbmFtZV9kaWFsb2cubmFtZV9vawotICAgIE9rID0gbmFtZV9kaWFsb2cuT2sKLSAgICBDYW5jZWwgPSBuYW1lX2RpYWxvZy5DYW5jZWwKLSAgICAjIEF0dHJpYnV0ZXMsIGNvbnN0YW50IG9yIHZhcmlhYmxlLCBuZWVkZWQgZm9yIHRlc3RzCi0gICAgdXNlZF9uYW1lcyA9IFsndXNlZCddCi0gICAgbmFtZSA9IFZhcigpCi0gICAgcmVzdWx0ID0gTm9uZQotICAgIGRlc3Ryb3llZCA9IEZhbHNlCi0gICAgZGVmIGRlc3Ryb3koc2VsZik6Ci0gICAgICAgIHNlbGYuZGVzdHJveWVkID0gVHJ1ZQotCi0jIG5hbWVfb2sgY2FsbHMgTWJveC5zaG93ZXJyb3IgaWYgbmFtZSBpcyBub3Qgb2sKLW9yaWdfbWJveCA9IG5hbWVfZGlhbG9nX21vZHVsZS50a01lc3NhZ2VCb3gKLXNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCi0KLWNsYXNzIENvbmZpZ05hbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkaWFsb2cgPSBEdW1teV9uYW1lX2RpYWxvZygpCi0KLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBuYW1lX2RpYWxvZ19tb2R1bGUudGtNZXNzYWdlQm94ID0gTWJveAotCi0gICAgQGNsYXNzbWV0aG9kCi0gICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgbmFtZV9kaWFsb2dfbW9kdWxlLnRrTWVzc2FnZUJveCA9IG9yaWdfbWJveAotCi0gICAgZGVmIHRlc3RfYmxhbmtfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJyAnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLm5hbWVfb2soKSwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTmFtZSBFcnJvcicpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ05vJywgc2hvd2Vycm9yLm1lc3NhZ2UpCi0KLSAgICBkZWYgdGVzdF91c2VkX25hbWUoc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCd1c2VkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRpYWxvZy5uYW1lX29rKCksICcnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNob3dlcnJvci50aXRsZSwgJ05hbWUgRXJyb3InKQotICAgICAgICBzZWxmLmFzc2VydEluKCd1c2UnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2xvbmdfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJ2dvb2QnKjgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaG93ZXJyb3IudGl0bGUsICdOYW1lIEVycm9yJykKLSAgICAgICAgc2VsZi5hc3NlcnRJbigndG9vIGxvbmcnLCBzaG93ZXJyb3IubWVzc2FnZSkKLQotICAgIGRlZiB0ZXN0X2dvb2RfbmFtZShzZWxmKToKLSAgICAgICAgc2VsZi5kaWFsb2cubmFtZS5zZXQoJyAgZ29vZCAnKQotICAgICAgICBzaG93ZXJyb3IudGl0bGUgPSAnTm8gRXJyb3InICAjIHNob3VsZCBub3QgYmUgY2FsbGVkCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kaWFsb2cubmFtZV9vaygpLCAnZ29vZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2hvd2Vycm9yLnRpdGxlLCAnTm8gRXJyb3InKQotCi0gICAgZGVmIHRlc3Rfb2soc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3llZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuZGlhbG9nLm5hbWUuc2V0KCdnb29kJykKLSAgICAgICAgc2VsZi5kaWFsb2cuT2soKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgJ2dvb2QnKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5kaWFsb2cuZGVzdHJveWVkKQotCi0gICAgZGVmIHRlc3RfY2FuY2VsKHNlbGYpOgotICAgICAgICBzZWxmLmRpYWxvZy5kZXN0cm95ZWQgPSBGYWxzZQotICAgICAgICBzZWxmLmRpYWxvZy5DYW5jZWwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZGlhbG9nLnJlc3VsdCwgJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5kZXN0cm95ZWQpCi0KLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfY29uZmlnZGlhbG9nLnB5CmluZGV4IDVjMDk3OTAuLjcwYmQxNGUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2NvbmZpZ2RpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9jb25maWdkaWFsb2cucHkKQEAgLTEsMTQgKzEsMTMgQEAKLScnJ1Rlc3QgaWRsZWxpYi5jb25maWdEaWFsb2cuCisnJydUZXN0IGlkbGVsaWIuY29uZmlnZGlhbG9nLgogCiBDb3ZlcmFnZTogNDYlIGp1c3QgYnkgY3JlYXRpbmcgZGlhbG9nLgogVGhlIG90aGVyIGhhbGYgaXMgY29kZSBmb3Igd29ya2luZyB3aXRoIHVzZXIgY3VzdG9taXphdGlvbnMuCiAnJycKLWZyb20gaWRsZWxpYi5jb25maWdEaWFsb2cgaW1wb3J0IENvbmZpZ0RpYWxvZyAgIyBhbHdheXMgdGVzdCBpbXBvcnQKK2Zyb20gaWRsZWxpYi5jb25maWdkaWFsb2cgaW1wb3J0IENvbmZpZ0RpYWxvZyAgIyBhbHdheXMgdGVzdCBpbXBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydCBhcyBtYWNvc3gKIAogY2xhc3MgQ29uZmlnRGlhbG9nVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE2LDcgKzE1LDYgQEAKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucm9vdCA9IFRrKCkKICAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQotICAgICAgICBtYWNvc3guX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhjbHMucm9vdCkKIAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CkBAIC0yNCw3ICsyMiw3IEBACiAgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQogICAgICAgICBkZWwgY2xzLnJvb3QKIAotICAgIGRlZiB0ZXN0X2RpYWxvZyhzZWxmKToKKyAgICBkZWYgdGVzdF9jb25maWdkaWFsb2coc2VsZik6CiAgICAgICAgIGQgPSBDb25maWdEaWFsb2coc2VsZi5yb290LCAnVGVzdCcsIF91dGVzdD1UcnVlKQogICAgICAgICBkLnJlbW92ZV92YXJfY2FsbGJhY2tzKCkKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWJ1Z2dlci5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2JhOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVidWdnZXIucHkKQEAgLTAsMCArMSwyOSBAQAorJycnIFRlc3QgaWRsZWxpYi5kZWJ1Z2dlci4KKworQ292ZXJhZ2U6IDE5JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnZ2VyCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrCisKKworY2xhc3MgTmFtZVNwYWNlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKyAgICAgICAgY2xzLnJvb3Qud2l0aGRyYXcoKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgZGVidWdnZXIuTmFtZXNwYWNlVmlld2VyKHNlbGYucm9vdCwgJ1Rlc3QnKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2RlbGVnYXRvci5weQppbmRleCAxZjBiYWE5Li44NTYyNGZiIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9kZWxlZ2F0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZGVsZWdhdG9yLnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgogCiBjbGFzcyBEZWxlZ2F0b3JUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG1lbnUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weQppbmRleCBhMjU4ZTI5Li4xN2ViMjVjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0bWVudS5weQpAQCAtNSw4ICs1LDkgQEAKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiBpbXBvcnQgdGtpbnRlciBhcyB0aworZnJvbSB0a2ludGVyIGltcG9ydCB0dGsKIGltcG9ydCB1bml0dGVzdAotZnJvbSBpZGxlbGliIGltcG9ydCBQeVNoZWxsCitmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwKIAogY2xhc3MgUGFzdGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAnJydUZXN0IHBhc3RpbmcgaW50byB3aWRnZXRzIHRoYXQgYWxsb3cgcGFzdGluZy4KQEAgLTE2LDE3ICsxNywxOCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CiAgICAgICAgIGNscy5yb290ID0gcm9vdCA9IHRrLlRrKCkKLSAgICAgICAgcm9vdC53aXRoZHJhdygpCi0gICAgICAgIFB5U2hlbGwuZml4X3gxMV9wYXN0ZShyb290KQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIHB5c2hlbGwuZml4X3gxMV9wYXN0ZShyb290KQogICAgICAgICBjbHMudGV4dCA9IHRrLlRleHQocm9vdCkKICAgICAgICAgY2xzLmVudHJ5ID0gdGsuRW50cnkocm9vdCkKKyAgICAgICAgY2xzLnRlbnRyeSA9IHR0ay5FbnRyeShyb290KQogICAgICAgICBjbHMuc3BpbiA9IHRrLlNwaW5ib3gocm9vdCkKICAgICAgICAgcm9vdC5jbGlwYm9hcmRfY2xlYXIoKQogICAgICAgICByb290LmNsaXBib2FyZF9hcHBlbmQoJ3R3bycpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICBkZWwgY2xzLnRleHQsIGNscy5lbnRyeSwgY2xzLnNwaW4KKyAgICAgICAgZGVsIGNscy50ZXh0LCBjbHMuZW50cnksIGNscy50ZW50cnkKICAgICAgICAgY2xzLnJvb3QuY2xpcGJvYXJkX2NsZWFyKCkKICAgICAgICAgY2xzLnJvb3QudXBkYXRlX2lkbGV0YXNrcygpCiAgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQpAQCAtNDQsMTYgKzQ2LDE2IEBACiAKICAgICBkZWYgdGVzdF9wYXN0ZV9lbnRyeShzZWxmKToKICAgICAgICAgIlRlc3QgcGFzdGluZyBpbnRvIGFuIGVudHJ5IHdpdGggYW5kIHdpdGhvdXQgYSBzZWxlY3Rpb24uIgotICAgICAgICAjIE9uIDMuNiwgZ2VuZXJhdGVkIDw8UGFzdGU+PiBmYWlscyB3aXRob3V0IGVtcHR5IHNlbGVjdCByYW5nZQotICAgICAgICAjIGZvciAnbm8gc2VsZWN0aW9uJy4gIExpdmUgd2lkZ2V0IHdvcmtzIGZpbmUuCi0gICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeQotICAgICAgICBmb3IgZW5kLCBhbnMgaW4gKDAsICdvbmV0d28nKSwgKCdlbmQnLCAndHdvJyk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbnRyeT1lbnRyeSwgZW5kPWVuZCwgYW5zPWFucyk6Ci0gICAgICAgICAgICAgICAgZW50cnkuZGVsZXRlKDAsICdlbmQnKQotICAgICAgICAgICAgICAgIGVudHJ5Lmluc2VydCgwLCAnb25lJykKLSAgICAgICAgICAgICAgICBlbnRyeS5zZWxlY3RfcmFuZ2UoMCwgZW5kKSAgIyBzZWUgbm90ZQotICAgICAgICAgICAgICAgIGVudHJ5LmV2ZW50X2dlbmVyYXRlKCc8PFBhc3RlPj4nKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW50cnkuZ2V0KCksIGFucykKKyAgICAgICAgIyBHZW5lcmF0ZWQgPDxQYXN0ZT4+IGZhaWxzIGZvciB0ayBlbnRyeSB3aXRob3V0IGVtcHR5IHNlbGVjdAorICAgICAgICAjIHJhbmdlIGZvciAnbm8gc2VsZWN0aW9uJy4gIExpdmUgd2lkZ2V0IHdvcmtzIGZpbmUuCisgICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJ5LCBzZWxmLnRlbnRyeToKKyAgICAgICAgICAgIGZvciBlbmQsIGFucyBpbiAoMCwgJ29uZXR3bycpLCAoJ2VuZCcsICd0d28nKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChlbnRyeT1lbnRyeSwgZW5kPWVuZCwgYW5zPWFucyk6CisgICAgICAgICAgICAgICAgICAgIGVudHJ5LmRlbGV0ZSgwLCAnZW5kJykKKyAgICAgICAgICAgICAgICAgICAgZW50cnkuaW5zZXJ0KDAsICdvbmUnKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5zZWxlY3RfcmFuZ2UoMCwgZW5kKQorICAgICAgICAgICAgICAgICAgICBlbnRyeS5ldmVudF9nZW5lcmF0ZSgnPDxQYXN0ZT4+JykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5nZXQoKSwgYW5zKQogCiAgICAgZGVmIHRlc3RfcGFzdGVfc3BpbihzZWxmKToKICAgICAgICAgIlRlc3QgcGFzdGluZyBpbnRvIGEgc3BpbmJveCB3aXRoIGFuZCB3aXRob3V0IGEgc2VsZWN0aW9uLiIKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2VkaXRvci5weQppbmRleCBhMzFkMjZkLi5lOWQyOWQ0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9lZGl0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZWRpdG9yLnB5CkBAIC0xLDYgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiAKIGNsYXNzIEVkaXRvcl9mdW5jX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2dyZXAucHkKaW5kZXggMGQ4ZmYwZC4uNmI1NGMxMyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZ3JlcC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9ncmVwLnB5CkBAIC0xLDUgKzEsNSBAQAogIiIiICFDaGFuZ2luZyB0aGlzIGxpbmUgd2lsbCBicmVhayBUZXN0X2ZpbmRmaWxlLnRlc3RfZm91bmQhCi1Ob24tZ3VpIHVuaXQgdGVzdHMgZm9yIGlkbGVsaWIuR3JlcERpYWxvZyBtZXRob2RzLgorTm9uLWd1aSB1bml0IHRlc3RzIGZvciBncmVwLkdyZXBEaWFsb2cgbWV0aG9kcy4KIGR1bW15X2NvbW1hbmQgY2FsbHMgZ3JlcF9pdCBjYWxscyBmaW5kZmlsZXMuCiBBbiBleGNlcHRpb24gcmFpc2VkIGluIG9uZSBtZXRob2Qgd2lsbCBmYWlsIGNhbGxlcnMuCiBPdGhlcndpc2UsIHRlc3RzIGFyZSBtb3N0bHkgaW5kZXBlbmRlbnQuCkBAIC04LDcgKzgsNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgotZnJvbSBpZGxlbGliLkdyZXBEaWFsb2cgaW1wb3J0IEdyZXBEaWFsb2cKK2Zyb20gaWRsZWxpYi5ncmVwIGltcG9ydCBHcmVwRGlhbG9nCiBpbXBvcnQgcmUKIAogY2xhc3MgRHVtbXlfc2VhcmNoZW5naW5lOgpAQCAtNzIsNyArNzIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUobGluZXNbNF0uc3RhcnRzd2l0aCgnKEhpbnQ6JykpCiAKIGNsYXNzIERlZmF1bHRfY29tbWFuZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVG8gd3JpdGUgdGhpcywgbW9kZSBPdXRwdXRXaW5kb3cgaW1wb3J0IHRvIHRvcCBvZiBHcmVwRGlhbG9nCisgICAgIyBUbyB3cml0ZSB0aGlzLCBtb3ZlIG91dHdpbiBpbXBvcnQgdG8gdG9wIG9mIEdyZXBEaWFsb2cKICAgICAjIHNvIGl0IGNhbiBiZSByZXBsYWNlZCBieSBjYXB0dXJlZF9zdGRvdXQgaW4gY2xhc3Mgc2V0dXAvdGVhcmRvd24uCiAgICAgcGFzcwogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYzY4ZTIzCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscC5weQpAQCAtMCwwICsxLDM0IEBACisnJydUZXN0IGlkbGVsaWIuaGVscC4KKworQ292ZXJhZ2U6IDg3JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHAKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitmcm9tIG9zLnBhdGggaW1wb3J0IGFic3BhdGgsIGRpcm5hbWUsIGpvaW4KK2Zyb20gdGtpbnRlciBpbXBvcnQgVGsKK2ltcG9ydCB1bml0dGVzdAorCitjbGFzcyBIZWxwRnJhbWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgICJCeSBpdHNlbGYsIHRoaXMgdGVzdHMgdGhhdCBmaWxlIHBhcnNlZCB3aXRob3V0IGV4Y2VwdGlvbi4iCisgICAgICAgIGNscy5yb290ID0gcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGhlbHBmaWxlID0gam9pbihkaXJuYW1lKGRpcm5hbWUoYWJzcGF0aChfX2ZpbGVfXykpKSwgJ2hlbHAuaHRtbCcpCisgICAgICAgIGNscy5mcmFtZSA9IGhlbHAuSGVscEZyYW1lKHJvb3QsIGhlbHBmaWxlKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKKyAgICAgICAgZGVsIGNscy5mcmFtZQorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorCisgICAgZGVmIHRlc3RfbGluZTEoc2VsZik6CisgICAgICAgIHRleHQgPSBzZWxmLmZyYW1lLnRleHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXh0LmdldCgnMS4wJywgJzEuZW5kJyksICcgSURMRSAnKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaGVscF9hYm91dC5weQppbmRleCBkMGEwMTI3Li44NDNlZmI5IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oZWxwX2Fib3V0LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hlbHBfYWJvdXQucHkKQEAgLTIsMTAgKzIsMTAgQEAKIAogQ292ZXJhZ2U6CiAnJycKLWZyb20gaWRsZWxpYiBpbXBvcnQgYWJvdXREaWFsb2cgYXMgaGVscF9hYm91dAotZnJvbSBpZGxlbGliIGltcG9ydCB0ZXh0VmlldyBhcyB0ZXh0dmlldworZnJvbSBpZGxlbGliIGltcG9ydCBoZWxwX2Fib3V0Citmcm9tIGlkbGVsaWIgaW1wb3J0IHRleHR2aWV3CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Citmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3hfZnVuYwogaW1wb3J0IHVuaXR0ZXN0CiAKIEFib3V0ID0gaGVscF9hYm91dC5BYm91dERpYWxvZwpAQCAtMTksMzMgKzE5LDMzIEBACiAKIAogY2xhc3MgRGlzcGxheUZpbGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICAiVGVzdCB0aGF0IC50eHQgZmlsZXMgYXJlIGZvdW5kIGFuZCBwcm9wZXJseSBkZWNvZGVkLiIKICAgICBkaWFsb2cgPSBEdW1teV9hYm91dF9kaWFsb2coKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLm9yaWdfbWJveCA9IHRleHR2aWV3LnRrTWVzc2FnZUJveAorICAgICAgICBjbHMub3JpZ19lcnJvciA9IHRleHR2aWV3LnNob3dlcnJvcgogICAgICAgICBjbHMub3JpZ192aWV3ID0gdGV4dHZpZXcudmlld190ZXh0Ci0gICAgICAgIGNscy5tYm94ID0gTWJveCgpCisgICAgICAgIGNscy5lcnJvciA9IE1ib3hfZnVuYygpCiAgICAgICAgIGNscy52aWV3ID0gRnVuYygpCi0gICAgICAgIHRleHR2aWV3LnRrTWVzc2FnZUJveCA9IGNscy5tYm94CisgICAgICAgIHRleHR2aWV3LnNob3dlcnJvciA9IGNscy5lcnJvcgogICAgICAgICB0ZXh0dmlldy52aWV3X3RleHQgPSBjbHMudmlldwogICAgICAgICBjbHMuQWJvdXQgPSBEdW1teV9hYm91dF9kaWFsb2coKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKLSAgICAgICAgdGV4dHZpZXcudGtNZXNzYWdlQm94ID0gY2xzLm9yaWdfbWJveAorICAgICAgICB0ZXh0dmlldy5zaG93ZXJyb3IgPSBjbHMub3JpZ19lcnJvcgogICAgICAgICB0ZXh0dmlldy52aWV3X3RleHQgPSBjbHMub3JpZ192aWV3CiAKICAgICBkZWYgdGVzdF9maWxlX2lzcGxheShzZWxmKToKICAgICAgICAgZm9yIGhhbmRsZXIgaW4gKHNlbGYuZGlhbG9nLmlkbGVfY3JlZGl0cywKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZGlhbG9nLmlkbGVfcmVhZG1lLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kaWFsb2cuaWRsZV9uZXdzKToKLSAgICAgICAgICAgIHNlbGYubWJveC5zaG93ZXJyb3IubWVzc2FnZSA9ICcnCisgICAgICAgICAgICBzZWxmLmVycm9yLm1lc3NhZ2UgPSAnJwogICAgICAgICAgICAgc2VsZi52aWV3LmNhbGxlZCA9IEZhbHNlCi0gICAgICAgICAgICBoYW5kbGVyKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5tYm94LnNob3dlcnJvci5tZXNzYWdlLCAnJykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi52aWV3LmNhbGxlZCwgVHJ1ZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGhhbmRsZXI9aGFuZGxlcik6CisgICAgICAgICAgICAgICAgaGFuZGxlcigpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmVycm9yLm1lc3NhZ2UsICcnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi52aWV3LmNhbGxlZCwgVHJ1ZSkKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaWRsZWhpc3RvcnkucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oaXN0b3J5LnB5CmluZGV4IDZlN2M2YzMuLmIyNzgwMTAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lkbGVoaXN0b3J5LnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2hpc3RvcnkucHkKQEAgLTQsOCArNCw4IEBACiBpbXBvcnQgdGtpbnRlciBhcyB0awogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0IGFzIHRrVGV4dAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0IGFzIG1rVGV4dAotZnJvbSBpZGxlbGliLklkbGVIaXN0b3J5IGltcG9ydCBIaXN0b3J5Ci1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5oaXN0b3J5IGltcG9ydCBIaXN0b3J5Citmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiBsaW5lMSA9ICdhID0gNycKIGxpbmUyID0gJ2IgPSBhJwpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaHlwZXJwYXJzZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weQppbmRleCA5Y2UzZjJjLi43M2M4MjgxIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9oeXBlcnBhcnNlci5weQpAQCAtMSw5ICsxLDkgQEAKLSIiIlVuaXR0ZXN0IGZvciBpZGxlbGliLkh5cGVyUGFyc2VyIiIiCisiIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5oeXBlcnBhcnNlci5weS4iIiIKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKLWZyb20gaWRsZWxpYi5IeXBlclBhcnNlciBpbXBvcnQgSHlwZXJQYXJzZXIKK2Zyb20gaWRsZWxpYi5lZGl0b3IgaW1wb3J0IEVkaXRvcldpbmRvdworZnJvbSBpZGxlbGliLmh5cGVycGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgogCiBjbGFzcyBEdW1teUVkaXR3aW46CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKc2ltaWxhcml0eSBpbmRleCA5OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfaW8ucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2lvbWVudS5weQppbmRleCBlMGUzYjk4Li42NWJmNTkzIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pby5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9pb21lbnUucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbwotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQorCitmcm9tIGlkbGVsaWIucnVuIGltcG9ydCBQc2V1ZG9JbnB1dEZpbGUsIFBzZXVkb091dHB1dEZpbGUKIAogCiBjbGFzcyBTKHN0cik6CkBAIC0yMzAsNCArMjMxLDQgQEAKIAogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9tYWNvc3gucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFlNzVkOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X21hY29zeC5weQpAQCAtMCwwICsxLDEwMyBAQAorJycnVGVzdCBpZGxlbGliLm1hY29zeC5weS4KKworQ292ZXJhZ2U6IDcxJSBvbiBXaW5kb3dzLgorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitpbXBvcnQgc3lzCitpbXBvcnQgdGtpbnRlciBhcyB0aworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QubW9jayBhcyBtb2NrCitmcm9tIGlkbGVsaWIuZmlsZWxpc3QgaW1wb3J0IEZpbGVMaXN0CisKK21hY3R5cGVzID0geydjYXJib24nLCAnY29jb2EnLCAneHF1YXJ0eid9Citub250eXBlcyA9IHsnb3RoZXInfQorYWxsdHlwZXMgPSBtYWN0eXBlcyB8IG5vbnR5cGVzCisKKworY2xhc3MgSW5pdFRrdHlwZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IF9pbml0X3RrX3R5cGUuIgorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKKyAgICAgICAgcmVxdWlyZXMoJ2d1aScpCisgICAgICAgIGNscy5yb290ID0gdGsuVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisgICAgICAgIGNscy5vcmlnX3BsYXRmb3JtID0gbWFjb3N4LnBsYXRmb3JtCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC51cGRhdGVfaWRsZXRhc2tzKCkKKyAgICAgICAgY2xzLnJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCBjbHMucm9vdAorICAgICAgICBtYWNvc3gucGxhdGZvcm0gPSBjbHMub3JpZ19wbGF0Zm9ybQorCisgICAgZGVmIHRlc3RfaW5pdF9zZXRzX3RrdHlwZShzZWxmKToKKyAgICAgICAgIlRlc3QgdGhhdCBfaW5pdF90a190eXBlIHNldHMgX3RrX3R5cGUgYWNjb3JkaW5nIHRvIHBsYXRmb3JtLiIKKyAgICAgICAgZm9yIHBsYXRmb3JtLCB0eXBlcyBpbiAoJ2RhcndpbicsIGFsbHR5cGVzKSwgKCdvdGhlcicsIG5vbnR5cGVzKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBsYXRmb3JtPXBsYXRmb3JtKToKKyAgICAgICAgICAgICAgICBtYWNvc3gucGxhdGZvcm0gPSBwbGF0Zm9ybQorICAgICAgICAgICAgICAgIG1hY29zeC5fdGtfdHlwZSA9PSBOb25lCisgICAgICAgICAgICAgICAgbWFjb3N4Ll9pbml0X3RrX3R5cGUoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWFjb3N4Ll90a190eXBlLCB0eXBlcykKKworCitjbGFzcyBJc1R5cGVUa1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IGVhY2ggb2YgdGhlIGZvdXIgaXNUeXBlVGsgcHJlZGVjYXRlcy4iCisgICAgaXNmdW5jcyA9ICgobWFjb3N4LmlzQXF1YVRrLCAoJ2NhcmJvbicsICdjb2NvYScpKSwKKyAgICAgICAgICAgICAgIChtYWNvc3guaXNDYXJib25UaywgKCdjYXJib24nKSksCisgICAgICAgICAgICAgICAobWFjb3N4LmlzQ29jb2FUaywgKCdjb2NvYScpKSwKKyAgICAgICAgICAgICAgIChtYWNvc3guaXNYUXVhcnR6LCAoJ3hxdWFydHonKSksCisgICAgICAgICAgICAgICApCisKKyAgICBAbW9jay5wYXRjaCgnaWRsZWxpYi5tYWNvc3guX2luaXRfdGtfdHlwZScpCisgICAgZGVmIHRlc3RfaXNfY2FsbHNfaW5pdChzZWxmLCBtb2NraW5pdCk6CisgICAgICAgICJUZXN0IHRoYXQgZWFjaCBpc1R5cGVUayBjYWxscyBfaW5pdF90a190eXBlIHdoZW4gX3RrX3R5cGUgaXMgTm9uZS4iCisgICAgICAgIG1hY29zeC5fdGtfdHlwZSA9IE5vbmUKKyAgICAgICAgZm9yIGZ1bmMsIHdoZW50cnVlIGluIHNlbGYuaXNmdW5jczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZ1bmM9ZnVuYyk6CisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vY2tpbml0LmNhbGxlZCkKKyAgICAgICAgICAgICAgICBtb2NraW5pdC5yZXNldF9tb2NrKCkKKworICAgIGRlZiB0ZXN0X2lzZnVuY3Moc2VsZik6CisgICAgICAgICJUZXN0IHRoYXQgZWFjaCBpc1R5cGVUayByZXR1cm4gY29ycmVjdCBib29sLiIKKyAgICAgICAgZm9yIGZ1bmMsIHdoZW50cnVlIGluIHNlbGYuaXNmdW5jczoKKyAgICAgICAgICAgIGZvciB0a3R5cGUgaW4gYWxsdHlwZXM6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZnVuYz1mdW5jLCB3aGVudHJ1ZT13aGVudHJ1ZSwgdGt0eXBlPXRrdHlwZSk6CisgICAgICAgICAgICAgICAgICAgIG1hY29zeC5fdGtfdHlwZSA9IHRrdHlwZQorICAgICAgICAgICAgICAgICAgICAoc2VsZi5hc3NlcnRUcnVlIGlmIHRrdHlwZSBpbiB3aGVudHJ1ZSBlbHNlIHNlbGYuYXNzZXJ0RmFsc2UpXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChmdW5jKCkpCisKKworY2xhc3MgU2V0dXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiVGVzdCBzZXR1cEFwcC4iCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKyAgICAgICAgY2xzLnJvb3QgPSB0ay5UaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LnVwZGF0ZV9pZGxldGFza3MoKQorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBAbW9jay5wYXRjaCgnaWRsZWxpYi5tYWNvc3gub3ZlcnJpZGVSb290TWVudScpICAjMjczMTIKKyAgICBkZWYgdGVzdF9zZXR1cGFwcChzZWxmLCBvdmVycmlkZVJvb3RNZW51KToKKyAgICAgICAgIkNhbGwgc2V0dXBBcHAgd2l0aCBlYWNoIHBvc3NpYmxlIGdyYXBoaWNzIHR5cGUuIgorICAgICAgICByb290ID0gc2VsZi5yb290CisgICAgICAgIGZsaXN0ID0gRmlsZUxpc3Qocm9vdCkKKyAgICAgICAgZm9yIHRrdHlwZSBpbiBhbGx0eXBlczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRrdHlwZT10a3R5cGUpOgorICAgICAgICAgICAgICAgIG1hY29zeC5fdGtfdHlwZSA9IHRrdHlwZQorICAgICAgICAgICAgICAgIG1hY29zeC5zZXR1cEFwcChyb290LCBmbGlzdCkKKyAgICAgICAgICAgICAgICBpZiB0a3R5cGUgaW4gKCdjYXJib24nLCAnY29jb2EnKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG92ZXJyaWRlUm9vdE1lbnUuY2FsbGVkKQorICAgICAgICAgICAgICAgIG92ZXJyaWRlUm9vdE1lbnUucmVzZXRfbW9jaygpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfZm9ybWF0cGFyYWdyYXBoLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTglCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyYWdyYXBoLnB5CmluZGV4IGI2ZWIyZjMuLmJhMzUwYzkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X2Zvcm1hdHBhcmFncmFwaC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJhZ3JhcGgucHkKQEAgLTEsNyArMSw3IEBACi0jIFRlc3QgdGhlIGZ1bmN0aW9ucyBhbmQgbWFpbiBjbGFzcyBtZXRob2Qgb2YgRm9ybWF0UGFyYWdyYXBoLnB5CisjIFRlc3QgdGhlIGZ1bmN0aW9ucyBhbmQgbWFpbiBjbGFzcyBtZXRob2Qgb2YgcGFyYWdyYXBoLnB5CiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gaWRsZWxpYiBpbXBvcnQgRm9ybWF0UGFyYWdyYXBoIGFzIGZwCi1mcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcGFyYWdyYXBoIGFzIGZwCitmcm9tIGlkbGVsaWIuZWRpdG9yIGltcG9ydCBFZGl0b3JXaW5kb3cKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogCkBAIC0zOCw3ICszOCw3IEBACiAKIAogY2xhc3MgRmluZFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICIiIlRlc3QgdGhlIGZpbmRfcGFyYWdyYXBoIGZ1bmN0aW9uIGluIEZvcm1hdFBhcmFncmFwaC4KKyAgICAiIiJUZXN0IHRoZSBmaW5kX3BhcmFncmFwaCBmdW5jdGlvbiBpbiBwYXJhZ3JhcGggbW9kdWxlLgogCiAgICAgVXNpbmcgdGhlIHJ1bmNhc2UoKSBmdW5jdGlvbiwgZmluZF9wYXJhZ3JhcGgoKSBpcyBjYWxsZWQgd2l0aCAnbWFyaycgc2V0IGF0CiAgICAgbXVsdGlwbGUgaW5kZXhlcyBiZWZvcmUgYW5kIGluc2lkZSB0aGUgdGVzdCBwYXJhZ3JhcGguCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGFyZW5tYXRjaC5weQppbmRleCA5NWNjMjJjLi4wNTFmN2VhIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXJlbm1hdGNoLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BhcmVubWF0Y2gucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IGlkbGVsaWIuUGFyZW5NYXRjaC4KKycnJ1Rlc3QgaWRsZWxpYi5wYXJlbm1hdGNoLgogCiBUaGlzIG11c3QgY3VycmVudGx5IGJlIGEgZ3VpIHRlc3QgYmVjYXVzZSBQYXJlbk1hdGNoIG1ldGhvZHMgdXNlCiBzZXZlcmFsIHRleHQgbWV0aG9kcyBub3QgZGVmaW5lZCBvbiBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrLlRleHQuCkBAIC05LDcgKzksNyBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0Lm1vY2sgaW1wb3J0IE1vY2sKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRleHQKLWZyb20gaWRsZWxpYi5QYXJlbk1hdGNoIGltcG9ydCBQYXJlbk1hdGNoCitmcm9tIGlkbGVsaWIucGFyZW5tYXRjaCBpbXBvcnQgUGFyZW5NYXRjaAogCiBjbGFzcyBEdW1teUVkaXR3aW46CiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRleHQpOgpAQCAtMzgsMTIgKzM4LDE3IEBACiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBzZWxmLnRleHQuZGVsZXRlKCcxLjAnLCAnZW5kJykKIAorICAgIGRlZiBnZXRfcGFyZW5tYXRjaChzZWxmKToKKyAgICAgICAgcG0gPSBQYXJlbk1hdGNoKHNlbGYuZWRpdHdpbikKKyAgICAgICAgcG0uYmVsbCA9IGxhbWJkYTogTm9uZQorICAgICAgICByZXR1cm4gcG0KKwogICAgIGRlZiB0ZXN0X3BhcmVuX2V4cHJlc3Npb24oc2VsZik6CiAgICAgICAgICIiIgogICAgICAgICBUZXN0IFBhcmVuTWF0Y2ggd2l0aCAnZXhwcmVzc2lvbicgc3R5bGUuCiAgICAgICAgICIiIgogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0Ci0gICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtID0gc2VsZi5nZXRfcGFyZW5tYXRjaCgpCiAgICAgICAgIHBtLnNldF9zdHlsZSgnZXhwcmVzc2lvbicpCiAKICAgICAgICAgdGV4dC5pbnNlcnQoJ2luc2VydCcsICdkZWYgZm9vYmFyKGEsIGInKQpAQCAtNjYsNyArNzEsNyBAQAogICAgICAgICBUZXN0IFBhcmVuTWF0Y2ggd2l0aCAnZGVmYXVsdCcgc3R5bGUuCiAgICAgICAgICIiIgogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0Ci0gICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtID0gc2VsZi5nZXRfcGFyZW5tYXRjaCgpCiAgICAgICAgIHBtLnNldF9zdHlsZSgnZGVmYXVsdCcpCiAKICAgICAgICAgdGV4dC5pbnNlcnQoJ2luc2VydCcsICdkZWYgZm9vYmFyKGEsIGInKQpAQCAtODYsNyArOTEsNyBAQAogICAgICAgICBUaGVzZSBjYXNlcyBmb3JjZSBjb25kaXRpb25hbCBleHByZXNzaW9uIGFuZCBhbHRlcm5hdGUgcGF0aHMuCiAgICAgICAgICIiIgogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0Ci0gICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtID0gc2VsZi5nZXRfcGFyZW5tYXRjaCgpCiAKICAgICAgICAgdGV4dC5pbnNlcnQoJ2luc2VydCcsICcjIHRoaXMgaXMgYSBjb21tZW4pJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocG0ucGFyZW5fY2xvc2VkX2V2ZW50KCdldmVudCcpKQpAQCAtOTksNyArMTA0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocG0ucGFyZW5fY2xvc2VkX2V2ZW50KCdldmVudCcpKQogCiAgICAgZGVmIHRlc3RfaGFuZGxlX3Jlc3RvcmVfdGltZXIoc2VsZik6Ci0gICAgICAgIHBtID0gUGFyZW5NYXRjaChzZWxmLmVkaXR3aW4pCisgICAgICAgIHBtID0gc2VsZi5nZXRfcGFyZW5tYXRjaCgpCiAgICAgICAgIHBtLnJlc3RvcmVfZXZlbnQgPSBNb2NrKCkKICAgICAgICAgcG0uaGFuZGxlX3Jlc3RvcmVfdGltZXIoMCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBtLnJlc3RvcmVfZXZlbnQuY2FsbGVkKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGF0aGJyb3dzZXIucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weQppbmRleCBhZmI4ODZmLi44MTNjYmNjIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wYXRoYnJvd3Nlci5weQpAQCAtMiwxMyArMiwxMyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCiBpbXBvcnQgaWRsZWxpYgotZnJvbSBpZGxlbGliIGltcG9ydCBQYXRoQnJvd3NlcgorZnJvbSBpZGxlbGliIGltcG9ydCBwYXRoYnJvd3NlcgogCiBjbGFzcyBQYXRoQnJvd3NlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfRGlyQnJvd3NlclRyZWVJdGVtKHNlbGYpOgogICAgICAgICAjIElzc3VlMTYyMjYgLSBtYWtlIHN1cmUgdGhhdCBnZXR0aW5nIGEgc3VibGlzdCB3b3JrcwotICAgICAgICBkID0gUGF0aEJyb3dzZXIuRGlyQnJvd3NlclRyZWVJdGVtKCcnKQorICAgICAgICBkID0gcGF0aGJyb3dzZXIuRGlyQnJvd3NlclRyZWVJdGVtKCcnKQogICAgICAgICBkLkdldFN1Ykxpc3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnLCBkLkdldFRleHQoKSkKIApAQCAtMTcsMTEgKzE3LDExIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5pc3BhY2thZ2VkaXIoZGlyICsgJy9JY29ucycpLCBGYWxzZSkKIAogICAgIGRlZiB0ZXN0X1BhdGhCcm93c2VyVHJlZUl0ZW0oc2VsZik6Ci0gICAgICAgIHAgPSBQYXRoQnJvd3Nlci5QYXRoQnJvd3NlclRyZWVJdGVtKCkKKyAgICAgICAgcCA9IHBhdGhicm93c2VyLlBhdGhCcm93c2VyVHJlZUl0ZW0oKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuR2V0VGV4dCgpLCAnc3lzLnBhdGgnKQogICAgICAgICBzdWIgPSBwLkdldFN1Ykxpc3QoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdWIpLCBsZW4oc3lzLnBhdGgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3ViWzBdKSwgUGF0aEJyb3dzZXIuRGlyQnJvd3NlclRyZWVJdGVtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoc3ViWzBdKSwgcGF0aGJyb3dzZXIuRGlyQnJvd3NlclRyZWVJdGVtKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcGVyY29sYXRvci5weQppbmRleCA0YzBhN2FkLi41NzNiOWExIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9wZXJjb2xhdG9yLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3BlcmNvbGF0b3IucHkKQEAgLTEsMTAgKzEsMTAgQEAKLScnJ1Rlc3QgUGVyY29sYXRvcicnJworJycnVGVzdCBwZXJjb2xhdG9yLnB5LicnJwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCiByZXF1aXJlcygnZ3VpJykKIAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRraW50ZXIgaW1wb3J0IFRleHQsIFRrLCBFTkQKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yLCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yLCBEZWxlZ2F0b3IKIAogCiBjbGFzcyBNeUZpbHRlcihEZWxlZ2F0b3IpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9xdWVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmFmOGViCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcXVlcnkucHkKQEAgLTAsMCArMSwzNTMgQEAKKyIiIlRlc3QgaWRsZWxpYi5xdWVyeS4KKworTm9uLWd1aSB0ZXN0cyBmb3IgUXVlcnksIFNlY3Rpb25OYW1lLCBNb2R1bGVOYW1lLCBhbmQgSGVscFNvdXJjZSB1c2UKK2R1bW15IHZlcnNpb25zIHRoYXQgZXh0cmFjdCB0aGUgbm9uLWd1aSBtZXRob2RzIGFuZCBhZGQgb3RoZXIgbmVlZGVkCithdHRyaWJ1dGVzLiAgR1VJIHRlc3RzIGNyZWF0ZSBhbiBpbnN0YW5jZSBvZiBlYWNoIGNsYXNzIGFuZCBzaW11bGF0ZQorZW50cmllcyBhbmQgYnV0dG9uIGNsaWNrcy4gIFN1YmNsYXNzIHRlc3RzIG9ubHkgdGFyZ2V0IHRoZSBuZXcgY29kZSBpbgordGhlIHN1YmNsYXNzIGRlZmluaXRpb24uCisKK1RoZSBhcHBlYXJhbmNlIG9mIHRoZSB3aWRnZXRzIGlzIGNoZWNrZWQgYnkgdGhlIFF1ZXJ5IGFuZAorSGVscFNvdXJjZSBodGVzdHMuICBUaGVzZSBhcmUgcnVuIGJ5IHJ1bm5pbmcgcXVlcnkucHkuCisKK0NvdmVyYWdlOiA5NCUgKDEwMCUgZm9yIFF1ZXJ5IGFuZCBTZWN0aW9uTmFtZSkuCis2IG9mIDggbWlzc2luZyBhcmUgTW9kdWxlTmFtZSBleGNlcHRpb25zIEkgZG9uJ3Qga25vdyBob3cgdG8gdHJpZ2dlci4KKyIiIgorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJlcXVpcmVzCitpbXBvcnQgc3lzCitmcm9tIHRraW50ZXIgaW1wb3J0IFRrCitpbXBvcnQgdW5pdHRlc3QKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKK2Zyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja190ayBpbXBvcnQgVmFyCitmcm9tIGlkbGVsaWIgaW1wb3J0IHF1ZXJ5CisKKworIyBOT04tR1VJIFRFU1RTCisKK2NsYXNzIFF1ZXJ5VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgUXVlcnkgYmFzZSBjbGFzcy4iCisKKyAgICBjbGFzcyBEdW1teV9RdWVyeToKKyAgICAgICAgIyBUZXN0IHRoZSBmb2xsb3dpbmcgUXVlcnkgbWV0aG9kcy4KKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5RdWVyeS5lbnRyeV9vaworICAgICAgICBvayA9IHF1ZXJ5LlF1ZXJ5Lm9rCisgICAgICAgIGNhbmNlbCA9IHF1ZXJ5LlF1ZXJ5LmNhbmNlbAorICAgICAgICAjIEFkZCBhdHRyaWJ1dGVzIGFuZCBpbml0aWFsaXphdGlvbiBuZWVkZWQgZm9yIHRlc3RzLgorICAgICAgICBlbnRyeSA9IFZhcigpCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X2VudHJ5KToKKyAgICAgICAgICAgIHNlbGYuZW50cnkuc2V0KGR1bW15X2VudHJ5KQorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgICAgIHNlbGYucmVzdWx0ID0gTm9uZQorICAgICAgICAgICAgc2VsZi5kZXN0cm95ZWQgPSBGYWxzZQorICAgICAgICBkZWYgc2hvd2Vycm9yKHNlbGYsIG1lc3NhZ2UpOgorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gbWVzc2FnZQorICAgICAgICBkZWYgZGVzdHJveShzZWxmKToKKyAgICAgICAgICAgIHNlbGYuZGVzdHJveWVkID0gVHJ1ZQorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIEZhbHNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignYmxhbmsgbGluZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfZW50cnlfb2tfZ29vZChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9RdWVyeSgnICBnb29kICcpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBFcXVhbChkaWFsb2cuZW50cnlfb2soKSwgJ2dvb2QnKQorICAgICAgICBFcXVhbCgoZGlhbG9nLnJlc3VsdCwgZGlhbG9nLmRlc3Ryb3llZCksIChOb25lLCBGYWxzZSkpCisgICAgICAgIEVxdWFsKGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddLCAnJykKKworICAgIGRlZiB0ZXN0X29rX2JsYW5rKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X1F1ZXJ5KCcnKQorICAgICAgICBkaWFsb2cuZW50cnkuZm9jdXNfc2V0ID0gbW9jay5Nb2NrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cub2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGRpYWxvZy5lbnRyeS5mb2N1c19zZXQuY2FsbGVkKQorICAgICAgICBkZWwgZGlhbG9nLmVudHJ5LmZvY3VzX3NldAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIEZhbHNlKSkKKworICAgIGRlZiB0ZXN0X29rX2dvb2Qoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJ2dvb2QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKCdnb29kJywgVHJ1ZSkpCisKKyAgICBkZWYgdGVzdF9jYW5jZWwoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfUXVlcnkoJ2RvZXMgbm90IG1hdHRlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmNhbmNlbCgpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChkaWFsb2cucmVzdWx0LCBkaWFsb2cuZGVzdHJveWVkKSwgKE5vbmUsIFRydWUpKQorCisKK2NsYXNzIFNlY3Rpb25OYW1lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIlRlc3QgU2VjdGlvbk5hbWUgc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfU2VjdGlvbk5hbWU6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuU2VjdGlvbk5hbWUuZW50cnlfb2sgICMgRnVuY3Rpb24gYmVpbmcgdGVzdGVkLgorICAgICAgICB1c2VkX25hbWVzID0gWyd1c2VkJ10KKyAgICAgICAgZW50cnkgPSBWYXIoKQorICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9lbnRyeSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5LnNldChkdW1teV9lbnRyeSkKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9ICcnCisgICAgICAgIGRlZiBzaG93ZXJyb3Ioc2VsZiwgbWVzc2FnZSk6CisgICAgICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSBtZXNzYWdlCisKKyAgICBkZWYgdGVzdF9ibGFua19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdubyBuYW1lJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF91c2VkX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgndXNlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3VzZScsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfbG9uZ19zZWN0aW9uX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfU2VjdGlvbk5hbWUoJ2dvb2QnKjgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2xvbmdlciB0aGFuIDMwJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9nb29kX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9TZWN0aW9uTmFtZSgnICBnb29kICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksICdnb29kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKworY2xhc3MgTW9kdWxlTmFtZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IE1vZHVsZU5hbWUgc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfTW9kdWxlTmFtZToKKyAgICAgICAgZW50cnlfb2sgPSBxdWVyeS5Nb2R1bGVOYW1lLmVudHJ5X29rICAjIEZ1bmN0aW9uIGJlaW5nIHRlc3RlZC4KKyAgICAgICAgdGV4dDAgPSAnJworICAgICAgICBlbnRyeSA9IFZhcigpCisgICAgICAgIGVudHJ5X2Vycm9yID0ge30KKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGR1bW15X2VudHJ5KToKKyAgICAgICAgICAgIHNlbGYuZW50cnkuc2V0KGR1bW15X2VudHJ5KQorICAgICAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlKToKKyAgICAgICAgICAgIHNlbGYuZW50cnlfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKworICAgIGRlZiB0ZXN0X2JsYW5rX21vZHVsZV9uYW1lKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X01vZHVsZU5hbWUoJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdubyBuYW1lJywgZGlhbG9nLmVudHJ5X2Vycm9yWyd0ZXh0J10pCisKKyAgICBkZWYgdGVzdF9ib2d1c19tb2R1bGVfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCdfX25hbWVfeHl6MTIzX3Nob3VsZF9ub3RfZXhpc3RfXycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLmVudHJ5X29rKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ25vdCBmb3VuZCcsIGRpYWxvZy5lbnRyeV9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfY19zb3VyY2VfbmFtZShzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9Nb2R1bGVOYW1lKCdpdGVydG9vbHMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdzb3VyY2UtYmFzZWQnLCBkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X2dvb2RfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfTW9kdWxlTmFtZSgnaWRsZWxpYicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShkaWFsb2cuZW50cnlfb2soKS5lbmRzd2l0aCgnX19pbml0X18ucHknKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnlfZXJyb3JbJ3RleHQnXSwgJycpCisKKworIyAzIEhlbHBTb3VyY2UgdGVzdCBjbGFzc2VzIGVhY2ggdGVzdCBvbmUgZnVuY3Rpb24uCisKK29yaWdfcGxhdGZvcm0gPSBxdWVyeS5wbGF0Zm9ybQorCitjbGFzcyBIZWxwc291cmNlQnJvd3NlZmlsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IGJyb3dzZV9maWxlIG1ldGhvZCBvZiBNb2R1bGVOYW1lIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIGJyb3dzZV9maWxlID0gcXVlcnkuSGVscFNvdXJjZS5icm93c2VfZmlsZQorICAgICAgICBwYXRodmFyID0gVmFyKCkKKworICAgIGRlZiB0ZXN0X2ZpbGVfcmVwbGFjZXNfcGF0aChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCkKKyAgICAgICAgIyBQYXRoIGlzIHdpZGdldCBlbnRyeSwgZWl0aGVyICcnIG9yIHNvbWV0aGluZy4KKyAgICAgICAgIyBGdW5jIHJldHVybiBpcyBmaWxlIGRpYWxvZyByZXR1cm4sIGVpdGhlciAnJyBvciBzb21ldGhpbmcuCisgICAgICAgICMgRnVuYyByZXR1cm4gc2hvdWxkIG92ZXJyaWRlIHdpZGdldCBlbnRyeS4KKyAgICAgICAgIyBXZSBuZWVkIGFsbCA0IGNvbWJpbmF0aW9uIHRvIHRlc3QgYWxsIChtb3N0KSBjb2RlIHBhdGhzLgorICAgICAgICBmb3IgcGF0aCwgZnVuYywgcmVzdWx0IGluICgKKyAgICAgICAgICAgICAgICAoJycsIGxhbWJkYSBhLGIsYzonJywgJycpLAorICAgICAgICAgICAgICAgICgnJywgbGFtYmRhIGEsYixjOiBfX2ZpbGVfXywgX19maWxlX18pLAorICAgICAgICAgICAgICAgICgnaHRlc3QnLCBsYW1iZGEgYSxiLGM6JycsICdodGVzdCcpLAorICAgICAgICAgICAgICAgICgnaHRlc3QnLCBsYW1iZGEgYSxiLGM6IF9fZmlsZV9fLCBfX2ZpbGVfXykpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cucGF0aHZhci5zZXQocGF0aCkKKyAgICAgICAgICAgICAgICBkaWFsb2cuYXNrZmlsZW5hbWUgPSBmdW5jCisgICAgICAgICAgICAgICAgZGlhbG9nLmJyb3dzZV9maWxlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5wYXRodmFyLmdldCgpLCByZXN1bHQpCisKKworY2xhc3MgSGVscHNvdXJjZVBhdGhva1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IHBhdGhfb2sgbWV0aG9kIG9mIEhlbHBTb3VyY2Ugc3ViY2xhc3Mgb2YgUXVlcnkuIgorCisgICAgY2xhc3MgRHVtbXlfSGVscFNvdXJjZToKKyAgICAgICAgcGF0aF9vayA9IHF1ZXJ5LkhlbHBTb3VyY2UucGF0aF9vaworICAgICAgICBwYXRoID0gVmFyKCkKKyAgICAgICAgcGF0aF9lcnJvciA9IHt9CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkdW1teV9wYXRoKToKKyAgICAgICAgICAgIHNlbGYucGF0aC5zZXQoZHVtbXlfcGF0aCkKKyAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlLCB3aWRnZXQ9Tm9uZSk6CisgICAgICAgICAgICBzZWxmLnBhdGhfZXJyb3JbJ3RleHQnXSA9IG1lc3NhZ2UKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIHF1ZXJ5LnBsYXRmb3JtID0gb3JpZ19wbGF0Zm9ybQorCisgICAgZGVmIHRlc3RfcGF0aF9va19ibGFuayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5EdW1teV9IZWxwU291cmNlKCcgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9vaygpLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEluKCdubyBoZWxwIGZpbGUnLCBkaWFsb2cucGF0aF9lcnJvclsndGV4dCddKQorCisgICAgZGVmIHRlc3RfcGF0aF9va19iYWQoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZShfX2ZpbGVfXyArICdiYWQtYmFkLWJhZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignbm90IGV4aXN0JywgZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSkKKworICAgIGRlZiB0ZXN0X3BhdGhfb2tfd2ViKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoJycpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBmb3IgdXJsIGluICd3d3cucHkub3JnJywgJ2h0dHA6Ly9weS5vcmcnOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBkaWFsb2cucGF0aC5zZXQodXJsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgdXJsKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfZXJyb3JbJ3RleHQnXSwgJycpCisKKyAgICBkZWYgdGVzdF9wYXRoX29rX2ZpbGUoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuRHVtbXlfSGVscFNvdXJjZSgnJykKKyAgICAgICAgZm9yIHBsYXRmb3JtLCBwcmVmaXggaW4gKCdkYXJ3aW4nLCAnZmlsZTovLycpLCAoJ290aGVyJywgJycpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoKToKKyAgICAgICAgICAgICAgICBxdWVyeS5wbGF0Zm9ybSA9IHBsYXRmb3JtCisgICAgICAgICAgICAgICAgZGlhbG9nLnBhdGguc2V0KF9fZmlsZV9fKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlhbG9nLnBhdGhfb2soKSwgcHJlZml4ICsgX19maWxlX18pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucGF0aF9lcnJvclsndGV4dCddLCAnJykKKworCitjbGFzcyBIZWxwc291cmNlRW50cnlva1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICJUZXN0IGVudHJ5X29rIG1ldGhvZCBvZiBIZWxwU291cmNlIHN1YmNsYXNzIG9mIFF1ZXJ5LiIKKworICAgIGNsYXNzIER1bW15X0hlbHBTb3VyY2U6CisgICAgICAgIGVudHJ5X29rID0gcXVlcnkuSGVscFNvdXJjZS5lbnRyeV9vaworICAgICAgICBlbnRyeV9lcnJvciA9IHt9CisgICAgICAgIHBhdGhfZXJyb3IgPSB7fQorICAgICAgICBkZWYgaXRlbV9vayhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLm5hbWUKKyAgICAgICAgZGVmIHBhdGhfb2soc2VsZik6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICBkZWYgdGVzdF9lbnRyeV9va19oZWxwc291cmNlKHNlbGYpOgorICAgICAgICBkaWFsb2cgPSBzZWxmLkR1bW15X0hlbHBTb3VyY2UoKQorICAgICAgICBmb3IgbmFtZSwgcGF0aCwgcmVzdWx0IGluICgoTm9uZSwgTm9uZSwgTm9uZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChOb25lLCAnZG9jLnR4dCcsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RvYycsIE5vbmUsIE5vbmUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2RvYycsICdkb2MudHh0JywgKCdkb2MnLCAnZG9jLnR4dCcpKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCgpOgorICAgICAgICAgICAgICAgIGRpYWxvZy5uYW1lLCBkaWFsb2cucGF0aCA9IG5hbWUsIHBhdGgKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5lbnRyeV9vaygpLCByZXN1bHQpCisKKworIyBHVUkgVEVTVFMKKworY2xhc3MgUXVlcnlHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorICAgICAgICBjbHMucm9vdCA9IHJvb3QgPSBUaygpCisgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKKyAgICAgICAgY2xzLmRpYWxvZyA9IHF1ZXJ5LlF1ZXJ5KHJvb3QsICdURVNUJywgJ3Rlc3QnLCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgY2xzLmRpYWxvZy5kZXN0cm95ID0gbW9jay5Nb2NrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGRlbCBjbHMuZGlhbG9nCisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5kaWFsb2cuZW50cnkuZGVsZXRlKDAsICdlbmQnKQorICAgICAgICBzZWxmLmRpYWxvZy5yZXN1bHQgPSBOb25lCisgICAgICAgIHNlbGYuZGlhbG9nLmRlc3Ryb3kucmVzZXRfbW9jaygpCisKKyAgICBkZWYgdGVzdF9jbGlja19vayhzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5kaWFsb2cKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnYWJjJykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsICdhYmMnKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmRlc3Ryb3kuY2FsbGVkKQorCisgICAgZGVmIHRlc3RfY2xpY2tfYmxhbmsoc2VsZik6CisgICAgICAgIGRpYWxvZyA9IHNlbGYuZGlhbG9nCisgICAgICAgIGRpYWxvZy5idXR0b25fb2suaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGRpYWxvZy5kZXN0cm95LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2NsaWNrX2NhbmNlbChzZWxmKToKKyAgICAgICAgZGlhbG9nID0gc2VsZi5kaWFsb2cKKyAgICAgICAgZGlhbG9nLmVudHJ5Lmluc2VydCgwLCAnYWJjJykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9jYW5jZWwuaW52b2tlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cucmVzdWx0LCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLmRlc3Ryb3kuY2FsbGVkKQorCisKK2NsYXNzIFNlY3Rpb25uYW1lR3VpVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICByZXF1aXJlcygnZ3VpJykKKworICAgIGRlZiB0ZXN0X2NsaWNrX3NlY3Rpb25fbmFtZShzZWxmKToKKyAgICAgICAgcm9vdCA9IFRrKCkKKyAgICAgICAgcm9vdC53aXRoZHJhdygpCisgICAgICAgIGRpYWxvZyA9ICBxdWVyeS5TZWN0aW9uTmFtZShyb290LCAnVCcsICd0JywgeydhYmMnfSwgX3V0ZXN0PVRydWUpCisgICAgICAgIEVxdWFsID0gc2VsZi5hc3NlcnRFcXVhbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy51c2VkX25hbWVzLCB7J2FiYyd9KQorICAgICAgICBkaWFsb2cuZW50cnkuaW5zZXJ0KDAsICdva2F5JykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpYWxvZy5yZXN1bHQsICdva2F5JykKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2NsYXNzIE1vZHVsZW5hbWVHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorCisgICAgZGVmIHRlc3RfY2xpY2tfbW9kdWxlX25hbWUoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuTW9kdWxlTmFtZShyb290LCAnVCcsICd0JywgJ2lkbGVsaWInLCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cudGV4dDAsICdpZGxlbGliJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaWFsb2cuZW50cnkuZ2V0KCksICdpZGxlbGliJykKKyAgICAgICAgZGlhbG9nLmJ1dHRvbl9vay5pbnZva2UoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZGlhbG9nLnJlc3VsdC5lbmRzd2l0aCgnX19pbml0X18ucHknKSkKKyAgICAgICAgZGVsIGRpYWxvZworICAgICAgICByb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgcm9vdAorCisKK2NsYXNzIEhlbHBzb3VyY2VHdWlUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHJlcXVpcmVzKCdndWknKQorCisgICAgZGVmIHRlc3RfY2xpY2tfaGVscF9zb3VyY2Uoc2VsZik6CisgICAgICAgIHJvb3QgPSBUaygpCisgICAgICAgIHJvb3Qud2l0aGRyYXcoKQorICAgICAgICBkaWFsb2cgPSAgcXVlcnkuSGVscFNvdXJjZShyb290LCAnVCcsIG1lbnVpdGVtPSdfX3Rlc3RfXycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVwYXRoPV9fZmlsZV9fLCBfdXRlc3Q9VHJ1ZSkKKyAgICAgICAgRXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCisgICAgICAgIEVxdWFsKGRpYWxvZy5lbnRyeS5nZXQoKSwgJ19fdGVzdF9fJykKKyAgICAgICAgRXF1YWwoZGlhbG9nLnBhdGguZ2V0KCksIF9fZmlsZV9fKQorICAgICAgICBkaWFsb2cuYnV0dG9uX29rLmludm9rZSgpCisgICAgICAgIHByZWZpeCA9ICJmaWxlOi8vIiBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgZWxzZSAnJworICAgICAgICBFcXVhbChkaWFsb2cucmVzdWx0LCAoJ19fdGVzdF9fJywgcHJlZml4ICsgX19maWxlX18pKQorICAgICAgICBkZWwgZGlhbG9nCisgICAgICAgIHJvb3QuZGVzdHJveSgpCisgICAgICAgIGRlbCByb290CisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2lkZ2V0cmVkaXIucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTclCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZWRpcmVjdG9yLnB5CmluZGV4IGJhYTk3NWQuLmIwMzg1ZmEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dpZGdldHJlZGlyLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlZGlyZWN0b3IucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IGlkbGVsaWIuV2lkZ2V0UmVkaXJlY3Rvci4KKycnJ1Rlc3QgaWRsZWxpYi5yZWRpcmVjdG9yLgogCiAxMDAlIGNvdmVyYWdlCiAnJycKQEAgLTYsNyArNiw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0LCBUY2xFcnJvcgotZnJvbSBpZGxlbGliLldpZGdldFJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKK2Zyb20gaWRsZWxpYi5yZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCiAKIAogY2xhc3MgSW5pdENsb3NlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0xMjAsNiArMTIwLDUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnJvb3QuY2FsbChzZWxmLnRleHQuX3csICdpbnNlcnQnLCAnYm9vJyksICcnKQogCiAKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZWRpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcmVwbGFjZS5weQppbmRleCBmZjQ0ODIwLi45OTEzZWQyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yZXBsYWNlZGlhbG9nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JlcGxhY2UucHkKQEAgLTEsNCArMSw0IEBACi0iIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5SZXBsYWNlRGlhbG9nIiIiCisiIiJVbml0dGVzdCBmb3IgaWRsZWxpYi5yZXBsYWNlLnB5IiIiCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIHJlcXVpcmVzKCdndWknKQogCkBAIC02LDggKzYsOCBAQAogZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBNb2NrCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3gKLWltcG9ydCBpZGxlbGliLlNlYXJjaEVuZ2luZSBhcyBzZQotaW1wb3J0IGlkbGVsaWIuUmVwbGFjZURpYWxvZyBhcyByZAoraW1wb3J0IGlkbGVsaWIuc2VhcmNoZW5naW5lIGFzIHNlCitmcm9tIGlkbGVsaWIucmVwbGFjZSBpbXBvcnQgUmVwbGFjZURpYWxvZwogCiBvcmlnX21ib3ggPSBzZS50a01lc3NhZ2VCb3gKIHNob3dlcnJvciA9IE1ib3guc2hvd2Vycm9yCkBAIC0yMSw3ICsyMSw4IEBACiAgICAgICAgIGNscy5yb290LndpdGhkcmF3KCkKICAgICAgICAgc2UudGtNZXNzYWdlQm94ID0gTWJveAogICAgICAgICBjbHMuZW5naW5lID0gc2UuU2VhcmNoRW5naW5lKGNscy5yb290KQotICAgICAgICBjbHMuZGlhbG9nID0gcmQuUmVwbGFjZURpYWxvZyhjbHMucm9vdCwgY2xzLmVuZ2luZSkKKyAgICAgICAgY2xzLmRpYWxvZyA9IFJlcGxhY2VEaWFsb2coY2xzLnJvb3QsIGNscy5lbmdpbmUpCisgICAgICAgIGNscy5kaWFsb2cuYmVsbCA9IGxhbWJkYTogTm9uZQogICAgICAgICBjbHMuZGlhbG9nLm9rID0gTW9jaygpCiAgICAgICAgIGNscy50ZXh0ID0gVGV4dChjbHMucm9vdCkKICAgICAgICAgY2xzLnRleHQudW5kb19ibG9ja19zdGFydCA9IE1vY2soKQpAQCAtNzAsNyArNzEsNiBAQAogICAgICAgICAjIHRleHQgZm91bmQgYW5kIHJlcGxhY2VkCiAgICAgICAgIHB2LnNldCgnYScpCiAgICAgICAgIHJ2LnNldCgnYXNkZicpCi0gICAgICAgIHNlbGYuZGlhbG9nLm9wZW4oc2VsZi50ZXh0KQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgZXF1YWwodGV4dC5nZXQoJzEuOCcsICcxLjEyJyksICdhc2RmJykKIApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICB0ZXh0Lm1hcmtfc2V0KCdpbnNlcnQnLCAnZW5kJykKICAgICAgICAgdGV4dC5pbnNlcnQoJ2luc2VydCcsICdcbmxpbmU0MjonKQogICAgICAgICBiZWZvcmVfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKLSAgICAgICAgcHYuc2V0KCdbYS16XVtcZF0rJykKKyAgICAgICAgcHYuc2V0KHInW2Etel1bXGRdKycpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBhZnRlcl90ZXh0ID0gdGV4dC5nZXQoJzEuMCcsICdlbmQnKQogICAgICAgICBlcXVhbChiZWZvcmVfdGV4dCwgYWZ0ZXJfdGV4dCkKQEAgLTE5Miw3ICsxOTIsNyBAQAogICAgICAgICBzZWxmLmVuZ2luZS5yZXZhci5zZXQoVHJ1ZSkKIAogICAgICAgICBiZWZvcmVfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKLSAgICAgICAgcHYuc2V0KCdbYS16XVtcZF0rJykKKyAgICAgICAgcHYuc2V0KHInW2Etel1bXGRdKycpCiAgICAgICAgIHJ2LnNldCgnaGVsbG8nKQogICAgICAgICByZXBsYWNlKCkKICAgICAgICAgYWZ0ZXJfdGV4dCA9IHRleHQuZ2V0KCcxLjAnLCAnZW5kJykKQEAgLTIwNyw3ICsyMDcsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdlcnJvcicsIHNob3dlcnJvci50aXRsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignRW1wdHknLCBzaG93ZXJyb3IubWVzc2FnZSkKIAotICAgICAgICBwdi5zZXQoJ1tcZCcpCisgICAgICAgIHB2LnNldChyJ1tcZCcpCiAgICAgICAgIHJlcGxhY2UoKQogICAgICAgICBzZWxmLmFzc2VydEluKCdlcnJvcicsIHNob3dlcnJvci50aXRsZSkKICAgICAgICAgc2VsZi5hc3NlcnRJbignUGF0dGVybicsIHNob3dlcnJvci5tZXNzYWdlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfcnN0cmlwLnB5CmluZGV4IDFjOTBiOTMuLjEzMGU2YmUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3JzdHJpcC5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9yc3RyaXAucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBpZGxlbGliLlJzdHJpcEV4dGVuc2lvbiBhcyBycworaW1wb3J0IGlkbGVsaWIucnN0cmlwIGFzIHJzCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRWRpdG9yCiAKIGNsYXNzIHJzdHJpcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjEsNyArMjEsNyBAQAogICAgIGRlZiB0ZXN0X3JzdHJpcF9tdWx0aXBsZShzZWxmKToKICAgICAgICAgZWRpdG9yID0gRWRpdG9yKCkKICAgICAgICAgIyAgVW5jb21tZW50IGZvbGxvd2luZyB0byB2ZXJpZnkgdGhhdCB0ZXN0IHBhc3NlcyB3aXRoIHJlYWwgd2lkZ2V0cy4KLSMjICAgICAgICBmcm9tIGlkbGVsaWIuRWRpdG9yV2luZG93IGltcG9ydCBFZGl0b3JXaW5kb3cgYXMgRWRpdG9yCisjIyAgICAgICAgZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93IGFzIEVkaXRvcgogIyMgICAgICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVGsKICMjICAgICAgICBlZGl0b3IgPSBFZGl0b3Iocm9vdD1UaygpKQogICAgICAgICB0ZXh0ID0gZWRpdG9yLnRleHQKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3Njcm9sbGVkbGlzdC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmFhYmZlCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2Nyb2xsZWRsaXN0LnB5CkBAIC0wLDAgKzEsMjkgQEAKKycnJyBUZXN0IGlkbGVsaWIuc2Nyb2xsZWRsaXN0LgorCitDb3ZlcmFnZTogMzklCisnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2Nyb2xsZWRsaXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKK3JlcXVpcmVzKCdndWknKQoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRraW50ZXIgaW1wb3J0IFRrCisKKworY2xhc3MgU2Nyb2xsZWRMaXN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdCA9IFRrKCkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290LmRlc3Ryb3koKQorICAgICAgICBkZWwgY2xzLnJvb3QKKworCisgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKKyAgICAgICAgc2Nyb2xsZWRsaXN0LlNjcm9sbGVkTGlzdChzZWxmLnJvb3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CnNpbWlsYXJpdHkgaW5kZXggOTElCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoLnB5CmluZGV4IDE5MGM4NjYuLjgwZmE5M2EgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGRpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2gucHkKQEAgLTEsNCArMSw0IEBACi0iIiJUZXN0IFNlYXJjaERpYWxvZyBjbGFzcyBpbiBTZWFyY2hEaWFsb2d1ZS5weSIiIgorIiIiVGVzdCBTZWFyY2hEaWFsb2cgY2xhc3MgaW4gaWRsZWxpYi5zZWFyY2gucHkiIiIKIAogIyBEb2VzIG5vdCBjdXJyZW50bHkgdGVzdCB0aGUgZXZlbnQgaGFuZGxlciB3cmFwcGVycy4KICMgQSB1c2FnZSB0ZXN0IHNob3VsZCBzaW11bGF0ZSBjbGlja3MgYW5kIGNoZWNrIGhpbGlnaHRpbmcuCkBAIC0xMSw4ICsxMSw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0a2ludGVyIGFzIHRrCiBmcm9tIHRraW50ZXIgaW1wb3J0IEJvb2xlYW5WYXIKLWltcG9ydCBpZGxlbGliLlNlYXJjaEVuZ2luZSBhcyBzZQotaW1wb3J0IGlkbGVsaWIuU2VhcmNoRGlhbG9nIGFzIHNkCitpbXBvcnQgaWRsZWxpYi5zZWFyY2hlbmdpbmUgYXMgc2UKK2ltcG9ydCBpZGxlbGliLnNlYXJjaCBhcyBzZAogCiAKIGNsYXNzIFNlYXJjaERpYWxvZ1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMjksNiArMjksNyBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbmdpbmUgPSBzZS5TZWFyY2hFbmdpbmUoc2VsZi5yb290KQogICAgICAgICBzZWxmLmRpYWxvZyA9IHNkLlNlYXJjaERpYWxvZyhzZWxmLnJvb3QsIHNlbGYuZW5naW5lKQorICAgICAgICBzZWxmLmRpYWxvZy5iZWxsID0gbGFtYmRhOiBOb25lCiAgICAgICAgIHNlbGYudGV4dCA9IHRrLlRleHQoc2VsZi5yb290KQogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KCcxLjAnLCAnSGVsbG8gV29ybGQhJykKIApAQCAtMzgsNiArMzksNyBAQAogCiAgICAgICAgIHNlbGYuZW5naW5lLnNldHBhdCgnJykKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmRpYWxvZy5maW5kX2FnYWluKHRleHQpKQorICAgICAgICBzZWxmLmRpYWxvZy5iZWxsID0gbGFtYmRhOiBOb25lCiAKICAgICAgICAgc2VsZi5lbmdpbmUuc2V0cGF0KCdIZWxsbycpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLmRpYWxvZy5maW5kX2FnYWluKHRleHQpKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weSBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKc2ltaWxhcml0eSBpbmRleCA4NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZGlhbG9nYmFzZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoYmFzZS5weQppbmRleCA4MDM2YjkxLi5kNzY5ZmEyIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hkaWFsb2diYXNlLnB5CisrKyBiL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGJhc2UucHkKQEAgLTEsMTQgKzEsMTMgQEAKLScnJ1VuaXR0ZXN0cyBmb3IgaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CisnJyd0ZXN0cyBpZGxlbGliLnNlYXJjaGJhc2UuCiAKIENvdmVyYWdlOiA5OSUuIFRoZSBvbmx5IHRoaW5nIG5vdCBjb3ZlcmVkIGlzIGluY29uc2VxdWVudGlhbCAtLQogdGVzdGluZyBza2lwcGluZyBvZiBzdWl0ZSB3aGVuIHNlbGYubmVlZHdyYXBidXR0b24gaXMgZmFsc2UuCi0KICcnJwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgVGssIFRvcGxldmVsLCBGcmFtZSAjIywgQm9vbGVhblZhciwgU3RyaW5nVmFyCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZSBhcyBzZQotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlIGFzIHNkYgorZnJvbSBpZGxlbGliIGltcG9ydCBzZWFyY2hlbmdpbmUgYXMgc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoYmFzZSBhcyBzZGIKIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QubW9ja19pZGxlIGltcG9ydCBGdW5jCiAjIyBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhcgogCkBAIC03NCw3ICs3Myw3IEBACiAgICAgZGVmIHRlc3RfbWFrZV9lbnRyeShzZWxmKToKICAgICAgICAgZXF1YWwgPSBzZWxmLmFzc2VydEVxdWFsCiAgICAgICAgIHNlbGYuZGlhbG9nLnJvdyA9IDAKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgZW50cnksIGxhYmVsID0gc2VsZi5kaWFsb2cubWFrZV9lbnRyeSgiVGVzdDoiLCAnaGVsbG8nKQogICAgICAgICBlcXVhbChsYWJlbFsndGV4dCddLCAnVGVzdDonKQogCkBAIC04Nyw2ICs4Niw3IEBACiAgICAgICAgIGVxdWFsKHNlbGYuZGlhbG9nLnJvdywgMSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9lbnRyaWVzKHNlbGYpOgorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAogICAgICAgICBzZWxmLmVuZ2luZS5zZXRwYXQoJ2hlbGxvJykKICAgICAgICAgc2VsZi5kaWFsb2cuY3JlYXRlX2VudHJpZXMoKQpAQCAtOTQsNyArOTQsNyBAQAogCiAgICAgZGVmIHRlc3RfbWFrZV9mcmFtZShzZWxmKToKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAotICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBUb3BsZXZlbChzZWxmLnJvb3QpCisgICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IHNlbGYucm9vdAogICAgICAgICBmcmFtZSwgbGFiZWwgPSBzZWxmLmRpYWxvZy5tYWtlX2ZyYW1lKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsYWJlbCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmcmFtZSwgRnJhbWUpCkBAIC0xMDQsNyArMTA0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZyYW1lLCBGcmFtZSkKIAogICAgIGRlZiBidG5fdGVzdF9zZXR1cChzZWxmLCBtZXRoKToKLSAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cucm93ID0gMAogICAgICAgICByZXR1cm4gbWV0aCgpCiAKQEAgLTExOSwxMSArMTE5LDYgQEAKICAgICAgICAgICAgICAgICB2YXIsIGxhYmVsID0gc3BlYwogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnV0dG9uWyd0ZXh0J10sIGxhYmVsKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCBzdGF0ZSkKLSAgICAgICAgICAgICAgICBpZiBzdGF0ZSA9PSAxOgotICAgICAgICAgICAgICAgICAgICBidXR0b24uZGVzZWxlY3QoKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGJ1dHRvbi5zZWxlY3QoKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFyLmdldCgpLCAxIC0gc3RhdGUpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfb3RoZXJfYnV0dG9ucyhzZWxmKToKICAgICAgICAgZm9yIHN0YXRlIGluIChGYWxzZSwgVHJ1ZSk6CkBAIC0xMzksMTggKzEzNCwxNSBAQAogICAgICAgICAgICAgICAgICAgICAjIGhpdCBvdGhlciBidXR0b24sIHRoZW4gdGhpcyBvbmUKICAgICAgICAgICAgICAgICAgICAgIyBpbmRleGVzIGRlcGVuZCBvbiBidXR0b24gb3JkZXIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIHN0YXRlKQotICAgICAgICAgICAgICAgICAgICBidXR0b25zW3ZhbF0uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIDEgLSBzdGF0ZSkKLSAgICAgICAgICAgICAgICAgICAgYnV0dG9uc1sxLXZhbF0uc2VsZWN0KCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YXIuZ2V0KCksIHN0YXRlKQogCiAgICAgZGVmIHRlc3RfbWFrZV9idXR0b24oc2VsZik6Ci0gICAgICAgIHNlbGYuZGlhbG9nLnRvcCA9IFRvcGxldmVsKHNlbGYucm9vdCkKKyAgICAgICAgc2VsZi5kaWFsb2cudG9wID0gc2VsZi5yb290CiAgICAgICAgIHNlbGYuZGlhbG9nLmJ1dHRvbmZyYW1lID0gRnJhbWUoc2VsZi5kaWFsb2cudG9wKQogICAgICAgICBidG4gPSBzZWxmLmRpYWxvZy5tYWtlX2J1dHRvbignVGVzdCcsIHNlbGYuZGlhbG9nLmNsb3NlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ0blsndGV4dCddLCAnVGVzdCcpCiAKICAgICBkZWYgdGVzdF9jcmVhdGVfY29tbWFuZF9idXR0b25zKHNlbGYpOgorICAgICAgICBzZWxmLmRpYWxvZy50b3AgPSBzZWxmLnJvb3QKICAgICAgICAgc2VsZi5kaWFsb2cuY3JlYXRlX2NvbW1hbmRfYnV0dG9ucygpCiAgICAgICAgICMgTG9vayBmb3IgY2xvc2UgYnV0dG9uIGNvbW1hbmQgaW4gYnV0dG9uZnJhbWUKICAgICAgICAgY2xvc2VidXR0b25jb21tYW5kID0gJycKQEAgLTE2MCw2ICsxNTIsNSBAQAogICAgICAgICBzZWxmLmFzc2VydEluKCdjbG9zZScsIGNsb3NlYnV0dG9uY29tbWFuZCkKIAogCi0KIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MiwgZXhpdD0yKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5IGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfc2VhcmNoZW5naW5lLnB5CmluZGV4IGVkYmQ1NTguLmIzYWE4ZWIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3NlYXJjaGVuZ2luZS5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF9zZWFyY2hlbmdpbmUucHkKQEAgLTEsNCArMSw0IEBACi0nJydUZXN0IGZ1bmN0aW9ucyBhbmQgU2VhcmNoRW5naW5lIGNsYXNzIGluIFNlYXJjaEVuZ2luZS5weS4nJycKKycnJ1Rlc3QgZnVuY3Rpb25zIGFuZCBTZWFyY2hFbmdpbmUgY2xhc3MgaW4gaWRsZWxpYi5zZWFyY2hlbmdpbmUucHkuJycnCiAKICMgV2l0aCBtb2NrIHJlcGxhY2VtZW50cywgdGhlIG1vZHVsZSBkb2VzIG5vdCB1c2UgYW55IGd1aSB3aWRnZXRzLgogIyBUaGUgdXNlIG9mIHRrLlRleHQgaXMgYXZvaWRlZCAoZm9yIG5vdywgdW50aWwgbW9jayBUZXh0IGlzIGltcHJvdmVkKQpAQCAtMTAsNyArMTAsNyBAQAogIyBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcmVxdWlyZXMKIGZyb20gdGtpbnRlciBpbXBvcnQgIEJvb2xlYW5WYXIsIFN0cmluZ1ZhciwgVGNsRXJyb3IgICMgLFRrLCBUZXh0CiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUgYXMgc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lIGFzIHNlCiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IFZhciwgTWJveAogZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0IGFzIG1vY2tUZXh0CiAKQEAgLTEzOSwxMCArMTM5LDEwIEBACiAKICAgICBkZWYgdGVzdF9zZXRjb29rZWRwYXQoc2VsZik6CiAgICAgICAgIGVuZ2luZSA9IHNlbGYuZW5naW5lCi0gICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQoJ1xzJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbmdpbmUuZ2V0cGF0KCksICdccycpCisgICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQocidccycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCByJ1xzJykKICAgICAgICAgZW5naW5lLnJldmFyLnNldCgxKQotICAgICAgICBlbmdpbmUuc2V0Y29va2VkcGF0KCdccycpCisgICAgICAgIGVuZ2luZS5zZXRjb29rZWRwYXQocidccycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5naW5lLmdldHBhdCgpLCByJ1xccycpCiAKICAgICBkZWYgdGVzdF9nZXRjb29rZWRwYXQoc2VsZik6CkBAIC0xNTYsMTAgKzE1NiwxMCBAQAogICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksIHInXGJoZWxsb1xiJykKICAgICAgICAgZW5naW5lLndvcmR2YXIuc2V0KEZhbHNlKQogCi0gICAgICAgIGVuZ2luZS5zZXRwYXQoJ1xzJykKKyAgICAgICAgZW5naW5lLnNldHBhdChyJ1xzJykKICAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCByJ1xccycpCiAgICAgICAgIGVuZ2luZS5yZXZhci5zZXQoVHJ1ZSkKLSAgICAgICAgRXF1YWwoZW5naW5lLmdldGNvb2tlZHBhdCgpLCAnXHMnKQorICAgICAgICBFcXVhbChlbmdpbmUuZ2V0Y29va2VkcGF0KCksIHInXHMnKQogCiAgICAgZGVmIHRlc3RfZ2V0cHJvZyhzZWxmKToKICAgICAgICAgZW5naW5lID0gc2VsZi5lbmdpbmUKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgICAgICBjbHMucGF0ID0gcmUuY29tcGlsZSgndGFyZ2V0JykKICAgICAgICAgY2xzLnJlcyA9ICgyLCAoMTAsIDE2KSkgICMgbGluZSwgc2xpY2UgaW5kZXhlcyBvZiAndGFyZ2V0JwogICAgICAgICBjbHMuZmFpbHBhdCA9IHJlLmNvbXBpbGUoJ3h5eicpICAjIG5vdCBpbiB0ZXh0Ci0gICAgICAgIGNscy5lbXB0eXBhdCA9IHJlLmNvbXBpbGUoJ1x3KicpICAjIGVtcHR5IG1hdGNoIHBvc3NpYmxlCisgICAgICAgIGNscy5lbXB0eXBhdCA9IHJlLmNvbXBpbGUocidcdyonKSAgIyBlbXB0eSBtYXRjaCBwb3NzaWJsZQogCiAgICAgZGVmIG1ha2Vfc2VhcmNoKHNlbGYsIGZ1bmMpOgogICAgICAgICBkZWYgc2VhcmNoKHBhdCwgbGluZSwgY29sLCB3cmFwLCBvaz0wKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0LnB5CmluZGV4IDdlODIzZGYuLmE1YmE3YmIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RleHQucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dC5weQpAQCAtMSwxNyArMSwxOSBAQAotIyBUZXN0IG1vY2tfdGsuVGV4dCBjbGFzcyBhZ2FpbnN0IHRraW50ZXIuVGV4dCBjbGFzcyBieSBydW5uaW5nIHNhbWUgdGVzdHMgd2l0aCBib3RoLgorJycnIFRlc3QgbW9ja190ay5UZXh0IGNsYXNzIGFnYWluc3QgdGtpbnRlci5UZXh0IGNsYXNzCisKK1J1biBzYW1lIHRlc3RzIHdpdGggYm90aCBieSBjcmVhdGluZyBhIG1peGluIGNsYXNzLgorJycnCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwotCiBmcm9tIF90a2ludGVyIGltcG9ydCBUY2xFcnJvcgogCiBjbGFzcyBUZXh0VGVzdChvYmplY3QpOgorICAgICJEZWZpbmUgaXRlbXMgY29tbW9uIHRvIGJvdGggc2V0cyBvZiB0ZXN0cy4iCiAKLSAgICBodyA9ICdoZWxsb1xud29ybGQnICAjIHVzdWFsIGluaXRpYWwgaW5zZXJ0IGFmdGVyIGluaXRpYWxpemF0aW9uCisgICAgaHcgPSAnaGVsbG9cbndvcmxkJyAgIyBTZXZlcmFsIHRlc3RzIGluc2VydCB0aGlzIGFmdGVyIGFmdGVyIGluaXRpYWxpemF0aW9uLgogICAgIGh3biA9IGh3KydcbicgICMgXG4gcHJlc2VudCBhdCBpbml0aWFsaXphdGlvbiwgYmVmb3JlIGluc2VydAogCi0gICAgVGV4dCA9IE5vbmUKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudGV4dCA9IHNlbGYuVGV4dCgpCisgICAgIyBzZXRVcENsYXNzIGRlZmluZXMgY2xzLlRleHQgYW5kIG1heWJlIGNscy5yb290LgorICAgICMgc2V0VXAgZGVmaW5lcyBzZWxmLnRleHQgZnJvbSBUZXh0IGFuZCBtYXliZSByb290LgogCiAgICAgZGVmIHRlc3RfaW5pdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnRleHQuZ2V0KCcxLjAnKSwgJ1xuJykKQEAgLTE5Niw2ICsxOTgsMTAgQEAKICAgICAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBUZXh0CiAgICAgICAgIGNscy5UZXh0ID0gVGV4dAogCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLnRleHQgPSBzZWxmLlRleHQoKQorCisKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CiAgICAgICAgICMgdGVzdCBlbmRmbGFncyAoLTEsIDApIG5vdCB0ZXN0ZWQgYnkgdGVzdF9pbmRleCAod2hpY2ggdXNlcyArMSkKICAgICAgICAgZGVjb2RlID0gc2VsZi50ZXh0Ll9kZWNvZGUKQEAgLTIyMiw2ICsyMjgsOSBAQAogICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKICAgICAgICAgZGVsIGNscy5yb290CiAKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGV4dCA9IHNlbGYuVGV4dChzZWxmLnJvb3QpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdGV4dHZpZXcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weQppbmRleCA1ZDJlNjAwLi5mMDE4ZjVlIDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90ZXh0dmlldy5weQpAQCAtMSwyMSArMSwyMSBAQAotJycnVGVzdCBpZGxlbGliLnRleHRWaWV3LgorJycnVGVzdCBpZGxlbGliLnRleHR2aWV3LgogCiBTaW5jZSBhbGwgbWV0aG9kcyBhbmQgZnVuY3Rpb25zIGNyZWF0ZSAob3IgZGVzdHJveSkgYSBUZXh0Vmlld2VyLCB3aGljaAogaXMgYSB3aWRnZXQgY29udGFpbmluZyBtdWx0aXBsZSB3aWRnZXRzLCBhbGwgdGVzdHMgbXVzdCBiZSBndWkgdGVzdHMuCiBVc2luZyBtb2NrIFRleHQgd291bGQgbm90IGNoYW5nZSB0aGlzLiAgT3RoZXIgbW9ja3MgYXJlIHVzZWQgdG8gcmV0cmlldmUKIGluZm9ybWF0aW9uIGFib3V0IGNhbGxzLgogCi1UaGUgY292ZXJhZ2UgaXMgZXNzZW50aWFsbHkgMTAwJS4KK0NvdmVyYWdlOiA5NCUuCiAnJycKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGV4dHZpZXcgYXMgdHYKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcwogcmVxdWlyZXMoJ2d1aScpCiAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zCiBmcm9tIHRraW50ZXIgaW1wb3J0IFRrCi1mcm9tIGlkbGVsaWIgaW1wb3J0IHRleHRWaWV3IGFzIHR2CiBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfaWRsZSBpbXBvcnQgRnVuYwotZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5tb2NrX3RrIGltcG9ydCBNYm94Citmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lm1vY2tfdGsgaW1wb3J0IE1ib3hfZnVuYwogCiBkZWYgc2V0VXBNb2R1bGUoKToKICAgICBnbG9iYWwgcm9vdApAQCAtNjQsMTcgKzY0LDE3IEBACiAgICAgICAgIHZpZXcuZGVzdHJveSgpCiAKIAotY2xhc3MgdGV4dHZpZXdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK2NsYXNzIFZpZXdGdW5jdGlvblRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgY2xzLm9yaWdfbWJveCA9IHR2LnRrTWVzc2FnZUJveAotICAgICAgICB0di50a01lc3NhZ2VCb3ggPSBNYm94CisgICAgICAgIGNscy5vcmlnX2Vycm9yID0gdHYuc2hvd2Vycm9yCisgICAgICAgIHR2LnNob3dlcnJvciA9IE1ib3hfZnVuYygpCiAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgotICAgICAgICB0di50a01lc3NhZ2VCb3ggPSBjbHMub3JpZ19tYm94Ci0gICAgICAgIGRlbCBjbHMub3JpZ19tYm94CisgICAgICAgIHR2LnNob3dlcnJvciA9IGNscy5vcmlnX2Vycm9yCisgICAgICAgIGRlbCBjbHMub3JpZ19lcnJvcgogCiAgICAgZGVmIHRlc3Rfdmlld190ZXh0KHNlbGYpOgogICAgICAgICAjIElmIG1vZGFsIFRydWUsIGdldCB0ayBlcnJvciAnY2FuJ3QgaW52b2tlICJldmVudCIgY29tbWFuZCcuCkBAIC05MCw3ICs5MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1Rlc3QnLCB2aWV3LnRleHRWaWV3LmdldCgnMS4wJywgJzEuZW5kJykpCiAgICAgICAgIHZpZXcuT2soKQogCi0gICAgICAgICMgTW9jayBtZXNzYWdlYm94IHdpbGwgYmUgdXNlZCBhbmQgdmlld19maWxlIHdpbGwgbm90IHJldHVybiBhbnl0aGluZworICAgICAgICAjIE1vY2sgc2hvd2Vycm9yIHdpbGwgYmUgdXNlZDsgdmlld19maWxlIHdpbGwgcmV0dXJuIE5vbmUuCiAgICAgICAgIHRlc3RmaWxlID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnLi4vbm90dGhlcmUucHknKQogICAgICAgICB2aWV3ID0gdHYudmlld19maWxlKHJvb3QsICdUaXRsZScsIHRlc3RmaWxlLCBtb2RhbD1GYWxzZSkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUodmlldykKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3RyZWUucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5YmE5NjQKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF90cmVlLnB5CkBAIC0wLDAgKzEsMzYgQEAKKycnJyBUZXN0IGlkbGVsaWIudHJlZS4KKworQ292ZXJhZ2U6IDU2JQorJycnCitmcm9tIGlkbGVsaWIgaW1wb3J0IHRyZWUKK2Zyb20gdGVzdC5zdXBwb3J0IGltcG9ydCByZXF1aXJlcworcmVxdWlyZXMoJ2d1aScpCitpbXBvcnQgb3MKK2ltcG9ydCB1bml0dGVzdAorZnJvbSB0a2ludGVyIGltcG9ydCBUaworCisKK2NsYXNzIFRyZWVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIGNscy5yb290ID0gVGsoKQorICAgICAgICBjbHMucm9vdC53aXRoZHJhdygpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMucm9vdC5kZXN0cm95KCkKKyAgICAgICAgZGVsIGNscy5yb290CisKKyAgICBkZWYgdGVzdF9pbml0KHNlbGYpOgorICAgICAgICAjIFN0YXJ0IHdpdGggY29kZSBzbGlnaHRseSBhZGFwdGVkIGZyb20gaHRlc3QuCisgICAgICAgIHNjID0gdHJlZS5TY3JvbGxlZENhbnZhcygKKyAgICAgICAgICAgIHNlbGYucm9vdCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQorICAgICAgICBzYy5mcmFtZS5wYWNrKGV4cGFuZD0xLCBmaWxsPSJib3RoIiwgc2lkZT0nbGVmdCcpCisgICAgICAgIGl0ZW0gPSB0cmVlLkZpbGVUcmVlSXRlbSh0cmVlLklDT05ESVIpCisgICAgICAgIG5vZGUgPSB0cmVlLlRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKKyAgICAgICAgbm9kZS5leHBhbmQoKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbih2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG9kZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3VuZG8ucHkKaW5kZXggMmI4M2M5OS4uZTg3MjkyNyAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3RfdW5kb2RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF91bmRvLnB5CkBAIC0xLDQgKzEsNCBAQAotIiIiVW5pdHRlc3QgZm9yIFVuZG9EZWxlZ2F0b3IgaW4gaWRsZWxpYi5VbmRvRGVsZWdhdG9yLgorIiIiVW5pdHRlc3QgZm9yIFVuZG9EZWxlZ2F0b3IgaW4gaWRsZWxpYi51bmRvLnB5LgogCiBDb3ZlcmFnZSBhYm91dCA4MCUgKHJldGVzdCkuCiAiIiIKQEAgLTgsOCArOCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdW5pdHRlc3QubW9jayBpbXBvcnQgTW9jawogZnJvbSB0a2ludGVyIGltcG9ydCBUZXh0LCBUawotZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5QZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCitmcm9tIGlkbGVsaWIudW5kbyBpbXBvcnQgVW5kb0RlbGVnYXRvcgorZnJvbSBpZGxlbGliLnBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKIAogCiBjbGFzcyBVbmRvRGVsZWdhdG9yVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC0yOSw4ICsyOSw4IEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHNlbGYuZGVsZWdhdG9yID0gVW5kb0RlbGVnYXRvcigpCisgICAgICAgIHNlbGYuZGVsZWdhdG9yLmJlbGwgPSBNb2NrKCkKICAgICAgICAgc2VsZi5wZXJjb2xhdG9yLmluc2VydGZpbHRlcihzZWxmLmRlbGVnYXRvcikKLSAgICAgICAgc2VsZi5kZWxlZ2F0b3IuYmVsbCA9IE1vY2sod3JhcHM9c2VsZi5kZWxlZ2F0b3IuYmVsbCkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgc2VsZi5wZXJjb2xhdG9yLnJlbW92ZWZpbHRlcihzZWxmLmRlbGVnYXRvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkgYi9MaWIvaWRsZWxpYi9pZGxlX3Rlc3QvdGVzdF93YXJuaW5nLnB5CmluZGV4IDE4NjI3ZGQuLmYzMjY5ZjEgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL2lkbGVfdGVzdC90ZXN0X3dhcm5pbmcucHkKKysrIGIvTGliL2lkbGVsaWIvaWRsZV90ZXN0L3Rlc3Rfd2FybmluZy5weQpAQCAtMSw0ICsxLDQgQEAKLScnJ1Rlc3Qgd2FybmluZ3MgcmVwbGFjZW1lbnQgaW4gUHlTaGVsbC5weSBhbmQgcnVuLnB5LgorJycnVGVzdCB3YXJuaW5ncyByZXBsYWNlbWVudCBpbiBweXNoZWxsLnB5IGFuZCBydW4ucHkuCiAKIFRoaXMgZmlsZSBjb3VsZCBiZSBleHBhbmRlZCB0byBpbmNsdWRlIHRyYWNlYmFjayBvdmVycmlkZXMKIChpbiBzYW1lIHR3byBtb2R1bGVzKS4gSWYgc28sIGNoYW5nZSBuYW1lLgpAQCAtMTcsOSArMTcsOSBAQAogcnVubmluZ19pbl9pZGxlID0gJ2lkbGUnIGluIHNob3d3YXJuaW5nLl9fbmFtZV9fCiAKIGZyb20gaWRsZWxpYiBpbXBvcnQgcnVuCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFB5U2hlbGwgYXMgc2hlbGwKK2Zyb20gaWRsZWxpYiBpbXBvcnQgcHlzaGVsbCBhcyBzaGVsbAogCi0jIFRoZSBmb2xsb3dpbmcgd2FzIGdlbmVyYXRlZCBmcm9tIFB5U2hlbGwuaWRsZV9mb3JtYXR3YXJuaW5nCisjIFRoZSBmb2xsb3dpbmcgd2FzIGdlbmVyYXRlZCBmcm9tIHB5c2hlbGwuaWRsZV9mb3JtYXR3YXJuaW5nCiAjIGFuZCBjaGVja2VkIGFzIG1hdGNoaW5nIGV4cGVjdGF0aW9uLgogaWRsZW1zZyA9ICcnJwogV2FybmluZyAoZnJvbSB3YXJuaW5ncyBtb2R1bGUpOgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvaWRsZXZlci5weSBiL0xpYi9pZGxlbGliL2lkbGV2ZXIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlOWY2OWEuLjAwMDAwMDAKLS0tIGEvTGliL2lkbGVsaWIvaWRsZXZlci5weQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLSIiIgotVGhlIHNlcGFyYXRlIElkbGUgdmVyc2lvbiB3YXMgZWxpbWluYXRlZCB5ZWFycyBhZ287Ci1pZGxlbGliLmlkbGV2ZXIgaXMgbm8gbG9uZ2VyIHVzZWQgYnkgSWRsZQotYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYgb3IgbGF0ZXIuICBVc2UKLSAgICBmcm9tIHN5cyBpbXBvcnQgdmVyc2lvbgotICAgIElETEVfVkVSU0lPTiA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV0KLSIiIgotIyBLZXB0IGZvciBub3cgb25seSBmb3IgcG9zc2libGUgZXhpc3RpbmcgZXh0ZW5zaW9uIHVzZQotaW1wb3J0IHdhcm5pbmdzIGFzIHcKLXcud2FybihfX2RvY19fLCBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLWZyb20gc3lzIGltcG9ydCB2ZXJzaW9uCi1JRExFX1ZFUlNJT04gPSB2ZXJzaW9uWzp2ZXJzaW9uLmluZGV4KCcgJyldCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9JT0JpbmRpbmcucHkgYi9MaWIvaWRsZWxpYi9pb21lbnUucHkKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9pb21lbnUucHkKaW5kZXggODRmMzlhMi4uMzQxNGM3YiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvSU9CaW5kaW5nLnB5CisrKyBiL0xpYi9pZGxlbGliL2lvbWVudS5weQpAQCAtMTAsNTcgKzEwLDYwIEBACiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAogZnJvbSB0a2ludGVyLnNpbXBsZWRpYWxvZyBpbXBvcnQgYXNrc3RyaW5nCiAKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgoraW1wb3J0IGlkbGVsaWIKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKLQotIyBUcnkgc2V0dGluZyB0aGUgbG9jYWxlLCBzbyB0aGF0IHdlIGNhbiBmaW5kIG91dAotIyB3aGF0IGVuY29kaW5nIHRvIHVzZQotdHJ5OgotICAgIGltcG9ydCBsb2NhbGUKLSAgICBsb2NhbGUuc2V0bG9jYWxlKGxvY2FsZS5MQ19DVFlQRSwgIiIpCi1leGNlcHQgKEltcG9ydEVycm9yLCBsb2NhbGUuRXJyb3IpOgotICAgIHBhc3MKLQotIyBFbmNvZGluZyBmb3IgZmlsZSBuYW1lcwotZmlsZXN5c3RlbWVuY29kaW5nID0gc3lzLmdldGZpbGVzeXN0ZW1lbmNvZGluZygpICAjIyMgY3VycmVudGx5IHVudXNlZAotCi1sb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCi1pZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAjIE9uIFdpbmRvd3MsIHdlIGNvdWxkIHVzZSAibWJjcyIuIEhvd2V2ZXIsIHRvIGdpdmUgdGhlIHVzZXIKLSAgICAjIGEgcG9ydGFibGUgZW5jb2RpbmcgbmFtZSwgd2UgbmVlZCB0byBmaW5kIHRoZSBjb2RlIHBhZ2UKLSAgICB0cnk6Ci0gICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5nZXRkZWZhdWx0bG9jYWxlKClbMV0KLSAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCi0gICAgZXhjZXB0IExvb2t1cEVycm9yOgotICAgICAgICBwYXNzCitpZiBpZGxlbGliLnRlc3Rpbmc6ICAjIFNldCBUcnVlIGJ5IHRlc3QudGVzdF9pZGxlIHRvIGF2b2lkIHNldGxvY2FsZS4KKyAgICBlbmNvZGluZyA9ICd1dGYtOCcKIGVsc2U6CisgICAgIyBUcnkgc2V0dGluZyB0aGUgbG9jYWxlLCBzbyB0aGF0IHdlIGNhbiBmaW5kIG91dAorICAgICMgd2hhdCBlbmNvZGluZyB0byB1c2UKICAgICB0cnk6Ci0gICAgICAgICMgRGlmZmVyZW50IHRoaW5ncyBjYW4gZmFpbCBoZXJlOiB0aGUgbG9jYWxlIG1vZHVsZSBtYXkgbm90IGJlCi0gICAgICAgICMgbG9hZGVkLCBpdCBtYXkgbm90IG9mZmVyIG5sX2xhbmdpbmZvLCBvciBDT0RFU0VULCBvciB0aGUKLSAgICAgICAgIyByZXN1bHRpbmcgY29kZXNldCBtYXkgYmUgdW5rbm93biB0byBQeXRob24uIFdlIGlnbm9yZSBhbGwKLSAgICAgICAgIyB0aGVzZSBwcm9ibGVtcywgZmFsbGluZyBiYWNrIHRvIEFTQ0lJCi0gICAgICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZS5ubF9sYW5naW5mbyhsb2NhbGUuQ09ERVNFVCkKLSAgICAgICAgaWYgbG9jYWxlX2VuY29kaW5nIGlzIE5vbmUgb3IgbG9jYWxlX2VuY29kaW5nIGlzICcnOgotICAgICAgICAgICAgIyBzaXR1YXRpb24gb2NjdXJzIG9uIE1hYyBPUyBYCi0gICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSAnYXNjaWknCi0gICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgIGV4Y2VwdCAoTmFtZUVycm9yLCBBdHRyaWJ1dGVFcnJvciwgTG9va3VwRXJyb3IpOgotICAgICAgICAjIFRyeSBnZXRkZWZhdWx0bG9jYWxlOiBpdCBwYXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLAotICAgICAgICAjIHdoaWNoIG1heSBnaXZlIGEgY2x1ZS4gVW5mb3J0dW5hdGVseSwgZ2V0ZGVmYXVsdGxvY2FsZSBoYXMKLSAgICAgICAgIyBidWdzIHRoYXQgY2FuIGNhdXNlIFZhbHVlRXJyb3IuCisgICAgICAgIGltcG9ydCBsb2NhbGUKKyAgICAgICAgbG9jYWxlLnNldGxvY2FsZShsb2NhbGUuTENfQ1RZUEUsICIiKQorICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIGxvY2FsZS5FcnJvcik6CisgICAgICAgIHBhc3MKKworICAgIGxvY2FsZV9kZWNvZGUgPSAnYXNjaWknCisgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICMgT24gV2luZG93cywgd2UgY291bGQgdXNlICJtYmNzIi4gSG93ZXZlciwgdG8gZ2l2ZSB0aGUgdXNlcgorICAgICAgICAjIGEgcG9ydGFibGUgZW5jb2RpbmcgbmFtZSwgd2UgbmVlZCB0byBmaW5kIHRoZSBjb2RlIHBhZ2UKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLmdldGRlZmF1bHRsb2NhbGUoKVsxXQorICAgICAgICAgICAgY29kZWNzLmxvb2t1cChsb2NhbGVfZW5jb2RpbmcpCisgICAgICAgIGV4Y2VwdCBMb29rdXBFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICBlbHNlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICAjIERpZmZlcmVudCB0aGluZ3MgY2FuIGZhaWwgaGVyZTogdGhlIGxvY2FsZSBtb2R1bGUgbWF5IG5vdCBiZQorICAgICAgICAgICAgIyBsb2FkZWQsIGl0IG1heSBub3Qgb2ZmZXIgbmxfbGFuZ2luZm8sIG9yIENPREVTRVQsIG9yIHRoZQorICAgICAgICAgICAgIyByZXN1bHRpbmcgY29kZXNldCBtYXkgYmUgdW5rbm93biB0byBQeXRob24uIFdlIGlnbm9yZSBhbGwKKyAgICAgICAgICAgICMgdGhlc2UgcHJvYmxlbXMsIGZhbGxpbmcgYmFjayB0byBBU0NJSQorICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gbG9jYWxlLm5sX2xhbmdpbmZvKGxvY2FsZS5DT0RFU0VUKQogICAgICAgICAgICAgaWYgbG9jYWxlX2VuY29kaW5nIGlzIE5vbmUgb3IgbG9jYWxlX2VuY29kaW5nIGlzICcnOgogICAgICAgICAgICAgICAgICMgc2l0dWF0aW9uIG9jY3VycyBvbiBNYWMgT1MgWAogICAgICAgICAgICAgICAgIGxvY2FsZV9lbmNvZGluZyA9ICdhc2NpaScKICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQotICAgICAgICBleGNlcHQgKFZhbHVlRXJyb3IsIExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZXhjZXB0IChOYW1lRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBMb29rdXBFcnJvcik6CisgICAgICAgICAgICAjIFRyeSBnZXRkZWZhdWx0bG9jYWxlOiBpdCBwYXJzZXMgZW52aXJvbm1lbnQgdmFyaWFibGVzLAorICAgICAgICAgICAgIyB3aGljaCBtYXkgZ2l2ZSBhIGNsdWUuIFVuZm9ydHVuYXRlbHksIGdldGRlZmF1bHRsb2NhbGUgaGFzCisgICAgICAgICAgICAjIGJ1Z3MgdGhhdCBjYW4gY2F1c2UgVmFsdWVFcnJvci4KKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBsb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGUuZ2V0ZGVmYXVsdGxvY2FsZSgpWzFdCisgICAgICAgICAgICAgICAgaWYgbG9jYWxlX2VuY29kaW5nIGlzIE5vbmUgb3IgbG9jYWxlX2VuY29kaW5nIGlzICcnOgorICAgICAgICAgICAgICAgICAgICAjIHNpdHVhdGlvbiBvY2N1cnMgb24gTWFjIE9TIFgKKyAgICAgICAgICAgICAgICAgICAgbG9jYWxlX2VuY29kaW5nID0gJ2FzY2lpJworICAgICAgICAgICAgICAgIGNvZGVjcy5sb29rdXAobG9jYWxlX2VuY29kaW5nKQorICAgICAgICAgICAgZXhjZXB0IChWYWx1ZUVycm9yLCBMb29rdXBFcnJvcik6CisgICAgICAgICAgICAgICAgcGFzcwogCi1sb2NhbGVfZW5jb2RpbmcgPSBsb2NhbGVfZW5jb2RpbmcubG93ZXIoKQorICAgIGxvY2FsZV9lbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZy5sb3dlcigpCiAKLWVuY29kaW5nID0gbG9jYWxlX2VuY29kaW5nICAjIyMgS0JLIDA3U2VwMDcgIFRoaXMgaXMgdXNlZCBhbGwgb3ZlciBJRExFLCBjaGVjayEKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIyMgJ2VuY29kaW5nJyBpcyB1c2VkIGJlbG93IGluIGVuY29kZSgpLCBjaGVjayEKKyAgICBlbmNvZGluZyA9IGxvY2FsZV9lbmNvZGluZworICAgICMgRW5jb2RpbmcgaXMgdXNlZCBpbiBtdWx0aXBsZSBmaWxlczsgbG9jYWxlX2VuY29kaW5nIG5vd2hlcmUuCisgICAgIyBUaGUgb25seSB1c2Ugb2YgJ2VuY29kaW5nJyBiZWxvdyBpcyBpbiBfZGVjb2RlIGFzIGluaXRpYWwgdmFsdWUKKyAgICAjIG9mIGRlcHJlY2F0ZWQgYmxvY2sgYXNraW5nIHVzZXIgZm9yIGVuY29kaW5nLgorICAgICMgUGVyaGFwcyB1c2UgZWxzZXdoZXJlIHNob3VsZCBiZSByZXZpZXdlZC4KIAogY29kaW5nX3JlID0gcmUuY29tcGlsZShyJ15bIFx0XGZdKiMuKj9jb2RpbmdbOj1dWyBcdF0qKFstXHcuXSspJywgcmUuQVNDSUkpCiBibGFua19yZSA9IHJlLmNvbXBpbGUocideWyBcdFxmXSooPzpbI1xyXG5dfCQpJywgcmUuQVNDSUkpCkBAIC0xMDcsNiArMTEwLDkgQEAKIAogCiBjbGFzcyBJT0JpbmRpbmc6CisjIE9uZSBpbnN0YW5jZSBwZXIgZWRpdG9yIFdpbmRvdyBzbyBtZXRob2RzIGtub3cgd2hpY2ggdG8gc2F2ZSwgY2xvc2UuCisjIE9wZW4gcmV0dXJucyBmb2N1cyB0byBzZWxmLmVkaXR3aW4gaWYgYWJvcnRlZC4KKyMgRWRpdG9yV2luZG93Lm9wZW5fbW9kdWxlLCBvdGhlcnMsIGJlbG9uZyBoZXJlLgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGVkaXR3aW4pOgogICAgICAgICBzZWxmLmVkaXR3aW4gPSBlZGl0d2luCkBAIC0zMDEsNyArMzA3LDcgQEAKICAgICAgICAgICAgICAgICAiVGhlIGZpbGUncyBlbmNvZGluZyBpcyBpbnZhbGlkIGZvciBQeXRob24gMy54LlxuIgogICAgICAgICAgICAgICAgICJJRExFIHdpbGwgY29udmVydCBpdCB0byBVVEYtOC5cbiIKICAgICAgICAgICAgICAgICAiV2hhdCBpcyB0aGUgY3VycmVudCBlbmNvZGluZyBvZiB0aGUgZmlsZT8iLAotICAgICAgICAgICAgICAgIGluaXRpYWx2YWx1ZSA9IGxvY2FsZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICBpbml0aWFsdmFsdWUgPSBlbmNvZGluZywKICAgICAgICAgICAgICAgICBwYXJlbnQgPSBzZWxmLmVkaXR3aW4udGV4dCkKIAogICAgICAgICAgICAgaWYgZW5jOgpAQCAtNTI5LDggKzUzNSw4IEBACiAKICAgICByb290ID0gVG9wbGV2ZWwocGFyZW50KQogICAgIHJvb3QudGl0bGUoIlRlc3QgSU9CaW5kaW5nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAgICAgY2xhc3MgTXlFZGl0V2luOgogICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGV4dCk6CiAgICAgICAgICAgICBzZWxmLnRleHQgPSB0ZXh0CkBAIC01NjEsNSArNTY3LDggQEAKICAgICBJT0JpbmRpbmcoZWRpdHdpbikKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgdW5pdHRlc3QKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X2lvbWVudScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9pb19iaW5kaW5nKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weSBiL0xpYi9pZGxlbGliL21hY29zeC5weQpzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9tYWNvc3hTdXBwb3J0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9tYWNvc3gucHkKaW5kZXggYjk2YmFlMS4uYzIyNWRkOSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvbWFjb3N4U3VwcG9ydC5weQorKysgYi9MaWIvaWRsZWxpYi9tYWNvc3gucHkKQEAgLTEsMzAgKzEsMjUgQEAKICIiIgogQSBudW1iZXIgb2YgZnVuY3Rpb25zIHRoYXQgZW5oYW5jZSBJRExFIG9uIE1hYyBPU1guCiAiIiIKLWltcG9ydCBzeXMKLWltcG9ydCB0a2ludGVyCi1mcm9tIG9zIGltcG9ydCBwYXRoCitmcm9tIHN5cyBpbXBvcnQgcGxhdGZvcm0gICMgVXNlZCBpbiBfaW5pdF90a190eXBlLCBjaGFuZ2VkIGJ5IHRlc3QuCiBpbXBvcnQgd2FybmluZ3MKIAotZGVmIHJ1bm5pbmdBc09TWEFwcCgpOgotICAgIHdhcm5pbmdzLndhcm4oInJ1bm5pbmdBc09TWEFwcCgpIGlzIGRlcHJlY2F0ZWQsIHVzZSBpc0FxdWFUaygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgIHJldHVybiBpc0FxdWFUaygpCitpbXBvcnQgdGtpbnRlcgogCi1kZWYgaXNDYXJib25BcXVhVGsocm9vdCk6Ci0gICAgd2FybmluZ3Mud2FybigiaXNDYXJib25BcXVhVGsocm9vdCkgaXMgZGVwcmVjYXRlZCwgdXNlIGlzQ2FyYm9uVGsoKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gaXNDYXJib25UaygpCisKKyMjIERlZmluZSBmdW5jdGlvbnMgdGhhdCBxdWVyeSB0aGUgTWFjIGdyYXBoaWNzIHR5cGUuCisjIyBfdGtfdHlwZSBhbmQgaXRzIGluaXRpYWxpemVyIGFyZSBwcml2YXRlIHRvIHRoaXMgc2VjdGlvbi4KIAogX3RrX3R5cGUgPSBOb25lCiAKLWRlZiBfaW5pdGlhbGl6ZVRrVmFyaWFudFRlc3RzKHJvb3QpOgorZGVmIF9pbml0X3RrX3R5cGUoKToKICAgICAiIiIKICAgICBJbml0aWFsaXplcyBPUyBYIFRrIHZhcmlhbnQgdmFsdWVzIGZvcgogICAgIGlzQXF1YVRrKCksIGlzQ2FyYm9uVGsoKSwgaXNDb2NvYVRrKCksIGFuZCBpc1hRdWFydHooKS4KICAgICAiIiIKICAgICBnbG9iYWwgX3RrX3R5cGUKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKICAgICAgICAgd3MgPSByb290LnRrLmNhbGwoJ3RrJywgJ3dpbmRvd2luZ3N5c3RlbScpCiAgICAgICAgIGlmICd4MTEnIGluIHdzOgogICAgICAgICAgICAgX3RrX3R5cGUgPSAieHF1YXJ0eiIKQEAgLTM0LDYgKzI5LDcgQEAKICAgICAgICAgICAgIF90a190eXBlID0gImNvY29hIgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgX3RrX3R5cGUgPSAiY2FyYm9uIgorICAgICAgICByb290LmRlc3Ryb3koKQogICAgIGVsc2U6CiAgICAgICAgIF90a190eXBlID0gIm90aGVyIgogCkBAIC00MSw3ICszNyw4IEBACiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYSBuYXRpdmUgT1MgWCBUayAoQ29jb2Egb3IgQ2FyYm9uKS4KICAgICAiIiIKLSAgICBhc3NlcnQgX3RrX3R5cGUgaXMgbm90IE5vbmUKKyAgICBpZiBub3QgX3RrX3R5cGU6CisgICAgICAgIF9pbml0X3RrX3R5cGUoKQogICAgIHJldHVybiBfdGtfdHlwZSA9PSAiY29jb2EiIG9yIF90a190eXBlID09ICJjYXJib24iCiAKIGRlZiBpc0NhcmJvblRrKCk6CkBAIC00OSwyMyArNDYsMjcgQEAKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhIENhcmJvbiBBcXVhIFRrIChpbnN0ZWFkIG9mIHRoZQogICAgIG5ld2VyIENvY29hIEFxdWEgVGspLgogICAgICIiIgotICAgIGFzc2VydCBfdGtfdHlwZSBpcyBub3QgTm9uZQorICAgIGlmIG5vdCBfdGtfdHlwZToKKyAgICAgICAgX2luaXRfdGtfdHlwZSgpCiAgICAgcmV0dXJuIF90a190eXBlID09ICJjYXJib24iCiAKIGRlZiBpc0NvY29hVGsoKToKICAgICAiIiIKICAgICBSZXR1cm5zIFRydWUgaWYgSURMRSBpcyB1c2luZyBhIENvY29hIEFxdWEgVGsuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gImNvY29hIgogCiBkZWYgaXNYUXVhcnR6KCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBUcnVlIGlmIElETEUgaXMgdXNpbmcgYW4gT1MgWCBYMTEgVGsuCiAgICAgIiIiCi0gICAgYXNzZXJ0IF90a190eXBlIGlzIG5vdCBOb25lCisgICAgaWYgbm90IF90a190eXBlOgorICAgICAgICBfaW5pdF90a190eXBlKCkKICAgICByZXR1cm4gX3RrX3R5cGUgPT0gInhxdWFydHoiCiAKKwogZGVmIHRrVmVyc2lvbldhcm5pbmcocm9vdCk6CiAgICAgIiIiCiAgICAgUmV0dXJucyBhIHN0cmluZyB3YXJuaW5nIG1lc3NhZ2UgaWYgdGhlIFRrIHZlcnNpb24gaW4gdXNlIGFwcGVhcnMgdG8KQEAgLTg2LDYgKzg3LDkgQEAKICAgICBlbHNlOgogICAgICAgICByZXR1cm4gRmFsc2UKIAorCisjIyBGaXggdGhlIG1lbnUgYW5kIHJlbGF0ZWQgZnVuY3Rpb25zLgorCiBkZWYgYWRkT3BlbkV2ZW50U3VwcG9ydChyb290LCBmbGlzdCk6CiAgICAgIiIiCiAgICAgVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHdpbGwgcmVzcG9uZCB0byBvcGVuIEFwcGxlRXZlbnRzLCB3aGljaApAQCAtMTI0LDIzICsxMjgsMjMgQEAKICAgICAjIER1ZSB0byBhIChtaXMtKWZlYXR1cmUgb2YgVGtBcXVhIHRoZSB1c2VyIHdpbGwgYWxzbyBzZWUgYW4gZW1wdHkgSGVscAogICAgICMgbWVudS4KICAgICBmcm9tIHRraW50ZXIgaW1wb3J0IE1lbnUKLSAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IEJpbmRpbmdzCi0gICAgZnJvbSBpZGxlbGliIGltcG9ydCBXaW5kb3dMaXN0CisgICAgZnJvbSBpZGxlbGliIGltcG9ydCBtYWlubWVudQorICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgd2luZG93cwogCi0gICAgY2xvc2VJdGVtID0gQmluZGluZ3MubWVudWRlZnNbMF1bMV1bLTJdCisgICAgY2xvc2VJdGVtID0gbWFpbm1lbnUubWVudWRlZnNbMF1bMV1bLTJdCiAKICAgICAjIFJlbW92ZSB0aGUgbGFzdCAzIGl0ZW1zIG9mIHRoZSBmaWxlIG1lbnU6IGEgc2VwYXJhdG9yLCBjbG9zZSB3aW5kb3cgYW5kCiAgICAgIyBxdWl0LiBDbG9zZSB3aW5kb3cgd2lsbCBiZSByZWluc2VydGVkIGp1c3QgYWJvdmUgdGhlIHNhdmUgaXRlbSwgd2hlcmUKICAgICAjIGl0IHNob3VsZCBiZSBhY2NvcmRpbmcgdG8gdGhlIEhJRy4gUXVpdCBpcyBpbiB0aGUgYXBwbGljYXRpb24gbWVudS4KLSAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbMF1bMV1bLTM6XQotICAgIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdLmluc2VydCg2LCBjbG9zZUl0ZW0pCisgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWzBdWzFdWy0zOl0KKyAgICBtYWlubWVudS5tZW51ZGVmc1swXVsxXS5pbnNlcnQoNiwgY2xvc2VJdGVtKQogCiAgICAgIyBSZW1vdmUgdGhlICdBYm91dCcgZW50cnkgZnJvbSB0aGUgaGVscCBtZW51LCBpdCBpcyBpbiB0aGUgYXBwbGljYXRpb24KICAgICAjIG1lbnUKLSAgICBkZWwgQmluZGluZ3MubWVudWRlZnNbLTFdWzFdWzA6Ml0KKyAgICBkZWwgbWFpbm1lbnUubWVudWRlZnNbLTFdWzFdWzA6Ml0KICAgICAjIFJlbW92ZSB0aGUgJ0NvbmZpZ3VyZSBJZGxlJyBlbnRyeSBmcm9tIHRoZSBvcHRpb25zIG1lbnUsIGl0IGlzIGluIHRoZQogICAgICMgYXBwbGljYXRpb24gbWVudSBhcyAnUHJlZmVyZW5jZXMnCi0gICAgZGVsIEJpbmRpbmdzLm1lbnVkZWZzWy0yXVsxXVswXQorICAgIGRlbCBtYWlubWVudS5tZW51ZGVmc1stMl1bMV1bMF0KICAgICBtZW51YmFyID0gTWVudShyb290KQogICAgIHJvb3QuY29uZmlndXJlKG1lbnU9bWVudWJhcikKICAgICBtZW51ZGljdCA9IHt9CkBAIC0xNTUsMzAgKzE1OSwzMCBAQAogCiAgICAgICAgIGlmIGVuZCA+IDA6CiAgICAgICAgICAgICBtZW51LmRlbGV0ZSgwLCBlbmQpCi0gICAgICAgIFdpbmRvd0xpc3QuYWRkX3dpbmRvd3NfdG9fbWVudShtZW51KQotICAgIFdpbmRvd0xpc3QucmVnaXN0ZXJfY2FsbGJhY2socG9zdHdpbmRvd3NtZW51KQorICAgICAgICB3aW5kb3dzLmFkZF93aW5kb3dzX3RvX21lbnUobWVudSkKKyAgICB3aW5kb3dzLnJlZ2lzdGVyX2NhbGxiYWNrKHBvc3R3aW5kb3dzbWVudSkKIAogICAgIGRlZiBhYm91dF9kaWFsb2coZXZlbnQ9Tm9uZSk6CiAgICAgICAgICJIYW5kbGUgSGVscCAnQWJvdXQgSURMRScgZXZlbnQuIgotICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggRWRpdG9yV2luZG93LkVkaXRvcldpbmRvdy5hYm91dF9kaWFsb2cuCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgYWJvdXREaWFsb2cKLSAgICAgICAgYWJvdXREaWFsb2cuQWJvdXREaWFsb2cocm9vdCwgJ0Fib3V0IElETEUnKQorICAgICAgICAjIFN5bmNocm9uaXplIHdpdGggZWRpdG9yLkVkaXRvcldpbmRvdy5hYm91dF9kaWFsb2cuCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaGVscF9hYm91dAorICAgICAgICBoZWxwX2Fib3V0LkFib3V0RGlhbG9nKHJvb3QsICdBYm91dCBJRExFJykKIAogICAgIGRlZiBjb25maWdfZGlhbG9nKGV2ZW50PU5vbmUpOgogICAgICAgICAiSGFuZGxlIE9wdGlvbnMgJ0NvbmZpZ3VyZSBJRExFJyBldmVudC4iCi0gICAgICAgICMgU3luY2hyb25pemUgd2l0aCBFZGl0b3JXaW5kb3cuRWRpdG9yV2luZG93LmNvbmZpZ19kaWFsb2cuCi0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnRGlhbG9nCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBlZGl0b3IuRWRpdG9yV2luZG93LmNvbmZpZ19kaWFsb2cuCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgY29uZmlnZGlhbG9nCiAKICAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgcm9vdCBvYmplY3QgaGFzIGFuIGluc3RhbmNlX2RpY3QgYXR0cmlidXRlLAogICAgICAgICAjIG1pcnJvcnMgY29kZSBpbiBFZGl0b3JXaW5kb3cgKGFsdGhvdWdoIHRoYXQgc2V0cyB0aGUgYXR0cmlidXRlCiAgICAgICAgICMgb24gYW4gRWRpdG9yV2luZG93IGluc3RhbmNlIHRoYXQgaXMgdGhlbiBwYXNzZWQgYXMgdGhlIGZpcnN0CiAgICAgICAgICMgYXJndW1lbnQgdG8gQ29uZmlnRGlhbG9nKQogICAgICAgICByb290Lmluc3RhbmNlX2RpY3QgPSBmbGlzdC5pbnZlcnNlZGljdAotICAgICAgICBjb25maWdEaWFsb2cuQ29uZmlnRGlhbG9nKHJvb3QsICdTZXR0aW5ncycpCisgICAgICAgIGNvbmZpZ2RpYWxvZy5Db25maWdEaWFsb2cocm9vdCwgJ1NldHRpbmdzJykKIAogICAgIGRlZiBoZWxwX2RpYWxvZyhldmVudD1Ob25lKToKICAgICAgICAgIkhhbmRsZSBIZWxwICdJRExFIEhlbHAnIGV2ZW50LiIKLSAgICAgICAgIyBTeW5jaHJvbml6ZSB3aXRoIEVkaXRvcldpbmRvdy5FZGl0b3JXaW5kb3cuaGVscF9kaWFsb2cuCisgICAgICAgICMgU3luY2hyb25pemUgd2l0aCBlZGl0b3IuRWRpdG9yV2luZG93LmhlbHBfZGlhbG9nLgogICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGhlbHAKICAgICAgICAgaGVscC5zaG93X2lkbGVoZWxwKHJvb3QpCiAKQEAgLTE5OCwyOSArMjAyLDMzIEBACiAgICAgICAgIG1lbnVkaWN0WydhcHBsaWNhdGlvbiddID0gbWVudSA9IE1lbnUobWVudWJhciwgbmFtZT0nYXBwbGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlYXJvZmY9MCkKICAgICAgICAgbWVudWJhci5hZGRfY2FzY2FkZShsYWJlbD0nSURMRScsIG1lbnU9bWVudSkKLSAgICAgICAgQmluZGluZ3MubWVudWRlZnMuaW5zZXJ0KDAsCisgICAgICAgIG1haW5tZW51Lm1lbnVkZWZzLmluc2VydCgwLAogICAgICAgICAgICAgKCdhcHBsaWNhdGlvbicsIFsKICAgICAgICAgICAgICAgICAoJ0Fib3V0IElETEUnLCAnPDxhYm91dC1pZGxlPj4nKSwKICAgICAgICAgICAgICAgICAgICAgTm9uZSwKICAgICAgICAgICAgICAgICBdKSkKLSAgICAgICAgdGt2ZXJzaW9uID0gcm9vdC50ay5ldmFsKCdpbmZvIHBhdGNobGV2ZWwnKQotICAgICAgICBpZiB0dXBsZShtYXAoaW50LCB0a3ZlcnNpb24uc3BsaXQoJy4nKSkpIDwgKDgsIDQsIDE0KToKLSAgICAgICAgICAgICMgZm9yIGVhcmxpZXIgQXF1YVRrIHZlcnNpb25zLCBzdXBwbHkgYSBQcmVmZXJlbmNlcyBtZW51IGl0ZW0KLSAgICAgICAgICAgIEJpbmRpbmdzLm1lbnVkZWZzWzBdWzFdLmFwcGVuZCgKLSAgICAgICAgICAgICAgICAgICAgKCdfUHJlZmVyZW5jZXMuLi4uJywgJzw8b3Blbi1jb25maWctZGlhbG9nPj4nKSwKLSAgICAgICAgICAgICAgICApCiAgICAgaWYgaXNDb2NvYVRrKCk6CiAgICAgICAgICMgcmVwbGFjZSBkZWZhdWx0IEFib3V0IGRpYWxvZyB3aXRoIEFib3V0IElETEUgb25lCiAgICAgICAgIHJvb3QuY3JlYXRlY29tbWFuZCgndGtBYm91dERpYWxvZycsIGFib3V0X2RpYWxvZykKICAgICAgICAgIyByZXBsYWNlIGRlZmF1bHQgIkhlbHAiIGl0ZW0gaW4gSGVscCBtZW51CiAgICAgICAgIHJvb3QuY3JlYXRlY29tbWFuZCgnOjp0azo6bWFjOjpTaG93SGVscCcsIGhlbHBfZGlhbG9nKQogICAgICAgICAjIHJlbW92ZSByZWR1bmRhbnQgIklETEUgSGVscCIgZnJvbSBtZW51Ci0gICAgICAgIGRlbCBCaW5kaW5ncy5tZW51ZGVmc1stMV1bMV1bMF0KKyAgICAgICAgZGVsIG1haW5tZW51Lm1lbnVkZWZzWy0xXVsxXVswXQorCitkZWYgZml4YjJjb250ZXh0KHJvb3QpOgorICAgICcnJ1JlbW92ZWQgYmFkIEFxdWFUayBCdXR0b24tMiAocmlnaHQpIGFuZCBQYXN0ZSBiaW5kaW5ncy4KKworICAgIFRoZXkgcHJldmVudCBjb250ZXh0IG1lbnUgYWNjZXNzIGFuZCBzZWVtIHRvIGJlIGdvbmUgaW4gQXF1YVRrOC42LgorICAgIFNlZSBpc3N1ZSAjMjQ4MDEuCisgICAgJycnCisgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyPicpCisgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyLU1vdGlvbj4nKQorICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzw8UGFzdGVTZWxlY3Rpb24+PicpCiAKIGRlZiBzZXR1cEFwcChyb290LCBmbGlzdCk6CiAgICAgIiIiCiAgICAgUGVyZm9ybSBpbml0aWFsIE9TIFggY3VzdG9taXphdGlvbnMgaWYgbmVlZGVkLgotICAgIENhbGxlZCBmcm9tIFB5U2hlbGwubWFpbigpIGFmdGVyIGluaXRpYWwgY2FsbHMgdG8gVGsoKQorICAgIENhbGxlZCBmcm9tIHB5c2hlbGwubWFpbigpIGFmdGVyIGluaXRpYWwgY2FsbHMgdG8gVGsoKQogCiAgICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0aHJlZSBtYWpvciB2ZXJzaW9ucyBvZiBUayBpbiB1c2Ugb24gT1MgWDoKICAgICAgICAgMS4gQXF1YSBDb2NvYSBUayAobmF0aXZlIGRlZmF1bHQgc2luY2UgT1MgWCAxMC42KQpAQCAtMjMzLDggKzI0MSwxMyBAQAogICAgIGlzQXF1YVRrKCksIGlzQ2FyYm9uVGsoKSwgaXNDb2NvYVRrKCksIGlzWFF1YXJ0eigpIGZ1bmN0aW9ucyB3aGljaAogICAgIGFyZSBpbml0aWFsaXplZCBoZXJlIGFzIHdlbGwuCiAgICAgIiIiCi0gICAgX2luaXRpYWxpemVUa1ZhcmlhbnRUZXN0cyhyb290KQogICAgIGlmIGlzQXF1YVRrKCk6CiAgICAgICAgIGhpZGVUa0NvbnNvbGUocm9vdCkKICAgICAgICAgb3ZlcnJpZGVSb290TWVudShyb290LCBmbGlzdCkKICAgICAgICAgYWRkT3BlbkV2ZW50U3VwcG9ydChyb290LCBmbGlzdCkKKyAgICAgICAgZml4YjJjb250ZXh0KHJvb3QpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtYWluCisgICAgbWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9tYWNvc3gnLCB2ZXJib3NpdHk9MikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL0JpbmRpbmdzLnB5IGIvTGliL2lkbGVsaWIvbWFpbm1lbnUucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvQmluZGluZ3MucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL21haW5tZW51LnB5CmluZGV4IGUxOWEyNzkuLjY1MzQ1Y2QgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL0JpbmRpbmdzLnB5CisrKyBiL0xpYi9pZGxlbGliL21haW5tZW51LnB5CkBAIC0xMCw5ICsxMCw5IEBACiAiIiIKIGZyb20gaW1wb3J0bGliLnV0aWwgaW1wb3J0IGZpbmRfc3BlYwogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYi5jb25maWcgaW1wb3J0IGlkbGVDb25mCiAKLSMgICBXYXJuaW5nOiBtZW51ZGVmcyBpcyBhbHRlcmVkIGluIG1hY29zeFN1cHBvcnQub3ZlcnJpZGVSb290TWVudSgpCisjICAgV2FybmluZzogbWVudWRlZnMgaXMgYWx0ZXJlZCBpbiBtYWNvc3gub3ZlcnJpZGVSb290TWVudSgpCiAjICAgYWZ0ZXIgaXQgaXMgZGV0ZXJtaW5lZCB0aGF0IGFuIE9TIFggQXF1YSBUayBpcyBpbiB1c2UsCiAjICAgd2hpY2ggY2Fubm90IGJlIGRvbmUgdW50aWwgYWZ0ZXIgVGsoKSBpcyBmaXJzdCBjYWxsZWQuCiAjICAgRG8gbm90IGFsdGVyIHRoZSAnZmlsZScsICdvcHRpb25zJywgb3IgJ2hlbHAnIGNhc2NhZGVzIGhlcmUKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL011bHRpQ2FsbC5weSBiL0xpYi9pZGxlbGliL211bHRpY2FsbC5weQpzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL211bHRpY2FsbC5weQppbmRleCA4NDYyODU0Li5iNzRmZWQ0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9NdWx0aUNhbGwucHkKKysrIGIvTGliL2lkbGVsaWIvbXVsdGljYWxsLnB5CkBAIC0yOCw5ICsyOCw5IEBACiAgICB1bmxlc3MgdGhpcyBjb25mbGljdHMgd2l0aCB0aGUgZmlyc3QgcnVsZS4KIEVhY2ggZnVuY3Rpb24gd2lsbCBiZSBjYWxsZWQgYXQgbW9zdCBvbmNlIGZvciBlYWNoIGV2ZW50LgogIiIiCi0KLWltcG9ydCBzeXMKIGltcG9ydCByZQoraW1wb3J0IHN5cworCiBpbXBvcnQgdGtpbnRlcgogCiAjIHRoZSBldmVudCB0eXBlIGNvbnN0YW50cywgd2hpY2ggZGVmaW5lIHRoZSBtZWFuaW5nIG9mIG1jX3R5cGUKQEAgLTQxNCwxMiArNDE0LDEyIEBACiAgICAgcmV0dXJuIE11bHRpQ2FsbAogCiAKLWRlZiBfbXVsdGlfY2FsbChwYXJlbnQpOgotICAgIHJvb3QgPSB0a2ludGVyLlRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IE11bHRpQ2FsbCIpCi0gICAgd2lkdGgsIGhlaWdodCwgeCwgeSA9IGxpc3QobWFwKGludCwgcmUuc3BsaXQoJ1t4K10nLCBwYXJlbnQuZ2VvbWV0cnkoKSkpKQotICAgIHJvb3QuZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQotICAgIHRleHQgPSBNdWx0aUNhbGxDcmVhdG9yKHRraW50ZXIuVGV4dCkocm9vdCkKK2RlZiBfbXVsdGlfY2FsbChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gdGtpbnRlci5Ub3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IE11bHRpQ2FsbCIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0ZXh0ID0gTXVsdGlDYWxsQ3JlYXRvcih0a2ludGVyLlRleHQpKHRvcCkKICAgICB0ZXh0LnBhY2soKQogICAgIGRlZiBiaW5kc2VxKHNlcSwgbj1bMF0pOgogICAgICAgICBkZWYgaGFuZGxlcihldmVudCk6CkBAIC00MzksNyArNDM5LDYgQEAKICAgICBiaW5kc2VxKCI8Rm9jdXNPdXQ+IikKICAgICBiaW5kc2VxKCI8RW50ZXI+IikKICAgICBiaW5kc2VxKCI8TGVhdmU+IikKLSAgICByb290Lm1haW5sb29wKCkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL091dHB1dFdpbmRvdy5weSBiL0xpYi9pZGxlbGliL291dHdpbi5weQpzaW1pbGFyaXR5IGluZGV4IDk2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL291dHdpbi5weQppbmRleCBlNjE0ZjliLi5mNmQyOTE1IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9PdXRwdXRXaW5kb3cucHkKKysrIGIvTGliL2lkbGVsaWIvb3V0d2luLnB5CkBAIC0xLDggKzEsMTEgQEAKLWZyb20gdGtpbnRlciBpbXBvcnQgKgotZnJvbSBpZGxlbGliLkVkaXRvcldpbmRvdyBpbXBvcnQgRWRpdG9yV2luZG93CiBpbXBvcnQgcmUKKworZnJvbSB0a2ludGVyIGltcG9ydCAqCiBpbXBvcnQgdGtpbnRlci5tZXNzYWdlYm94IGFzIHRrTWVzc2FnZUJveAotZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKKworZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93Citmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQorCiAKIGNsYXNzIE91dHB1dFdpbmRvdyhFZGl0b3JXaW5kb3cpOgogCkBAIC0zNiw3ICszOSw3IEBACiAKICAgICBkZWYgd3JpdGUoc2VsZiwgcywgdGFncz0oKSwgbWFyaz0iaW5zZXJ0Iik6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocywgKGJ5dGVzLCBieXRlcykpOgotICAgICAgICAgICAgcyA9IHMuZGVjb2RlKElPQmluZGluZy5lbmNvZGluZywgInJlcGxhY2UiKQorICAgICAgICAgICAgcyA9IHMuZGVjb2RlKGlvbWVudS5lbmNvZGluZywgInJlcGxhY2UiKQogICAgICAgICBzZWxmLnRleHQuaW5zZXJ0KG1hcmssIHMsIHRhZ3MpCiAgICAgICAgIHNlbGYudGV4dC5zZWUobWFyaykKICAgICAgICAgc2VsZi50ZXh0LnVwZGF0ZSgpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9Gb3JtYXRQYXJhZ3JhcGgucHkgYi9MaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wYXJhZ3JhcGgucHkKaW5kZXggN2E5ZDE4NS4uZjExYmRhZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvRm9ybWF0UGFyYWdyYXBoLnB5CisrKyBiL0xpYi9pZGxlbGliL3BhcmFncmFwaC5weQpAQCAtMTQsOSArMTQsMTAgQEAKICAgc3BhY2VzLCB0aGV5IHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgcGFydCBvZiB0aGUgc2FtZSBibG9jay4KICogRmFuY3kgY29tbWVudHMsIGxpa2UgdGhpcyBidWxsZXRlZCBsaXN0LCBhcmVuJ3QgaGFuZGxlZCA6LSkKICIiIgotCiBpbXBvcnQgcmUKLWZyb20gaWRsZWxpYi5jb25maWdIYW5kbGVyIGltcG9ydCBpZGxlQ29uZgorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorCiAKIGNsYXNzIEZvcm1hdFBhcmFncmFwaDoKIApAQCAtMTI5LDcgKzEzMCw3IEBACiAgICAgcGFydGlhbCA9IGluZGVudDEKICAgICB3aGlsZSBpIDwgbiBhbmQgbm90IGlzX2FsbF93aGl0ZShsaW5lc1tpXSk6CiAgICAgICAgICMgWFhYIFNob3VsZCB0YWtlIGRvdWJsZSBzcGFjZSBhZnRlciBwZXJpb2QgKGV0Yy4pIGludG8gYWNjb3VudAotICAgICAgICB3b3JkcyA9IHJlLnNwbGl0KCIoXHMrKSIsIGxpbmVzW2ldKQorICAgICAgICB3b3JkcyA9IHJlLnNwbGl0KHIiKFxzKykiLCBsaW5lc1tpXSkKICAgICAgICAgZm9yIGogaW4gcmFuZ2UoMCwgbGVuKHdvcmRzKSwgMik6CiAgICAgICAgICAgICB3b3JkID0gd29yZHNbal0KICAgICAgICAgICAgIGlmIG5vdCB3b3JkOgpAQCAtMTg5LDcgKzE5MCw4IEBACiAgICAgaWYgbSBpcyBOb25lOiByZXR1cm4gIiIKICAgICByZXR1cm4gbS5ncm91cCgxKQogCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9mb3JtYXRwYXJhZ3JhcGgnLAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcGFyYWdyYXBoJywKICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weSBiL0xpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGFyZW5NYXRjaC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvcGFyZW5tYXRjaC5weQppbmRleCA0N2UxMGYzLi5jY2VjNzA4IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9QYXJlbk1hdGNoLnB5CisrKyBiL0xpYi9pZGxlbGliL3BhcmVubWF0Y2gucHkKQEAgLTQsOSArNCw4IEBACiBwYXJlbi4gIFBhcmVuIGhlcmUgaXMgdXNlZCBnZW5lcmljYWxseTsgdGhlIG1hdGNoaW5nIGFwcGxpZXMgdG8KIHBhcmVudGhlc2VzLCBzcXVhcmUgYnJhY2tldHMsIGFuZCBjdXJseSBicmFjZXMuCiAiIiIKLQotZnJvbSBpZGxlbGliLkh5cGVyUGFyc2VyIGltcG9ydCBIeXBlclBhcnNlcgotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGlkbGVsaWIuaHlwZXJwYXJzZXIgaW1wb3J0IEh5cGVyUGFyc2VyCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgogCiBfb3BlbmVycyA9IHsnKSc6JygnLCddJzonWycsJ30nOid7J30KIENIRUNLX0RFTEFZID0gMTAwICMgbWlsbGlzZWNvbmRzCkBAIC02NCw2ICs2Myw3IEBACiAgICAgICAgICMgYW5kIGRlYWN0aXZhdGVfcmVzdG9yZSAod2hpY2ggY2FsbHMgZXZlbnRfZGVsZXRlKS4KICAgICAgICAgZWRpdHdpbi50ZXh0LmJpbmQoc2VsZi5SRVNUT1JFX1ZJUlRVQUxfRVZFTlRfTkFNRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN0b3JlX2V2ZW50KQorICAgICAgICBzZWxmLmJlbGwgPSBzZWxmLnRleHQuYmVsbCBpZiBzZWxmLkJFTEwgZWxzZSBsYW1iZGE6IE5vbmUKICAgICAgICAgc2VsZi5jb3VudGVyID0gMAogICAgICAgICBzZWxmLmlzX3Jlc3RvcmVfYWN0aXZlID0gMAogICAgICAgICBzZWxmLnNldF9zdHlsZShzZWxmLlNUWUxFKQpAQCAtOTMsNyArOTMsNyBAQAogICAgICAgICBpbmRpY2VzID0gKEh5cGVyUGFyc2VyKHNlbGYuZWRpdHdpbiwgImluc2VydCIpCiAgICAgICAgICAgICAgICAgICAgLmdldF9zdXJyb3VuZGluZ19icmFja2V0cygpKQogICAgICAgICBpZiBpbmRpY2VzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLndhcm5fbWlzbWF0Y2hlZCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYWN0aXZhdGVfcmVzdG9yZSgpCiAgICAgICAgIHNlbGYuY3JlYXRlX3RhZyhpbmRpY2VzKQpAQCAtMTA5LDcgKzEwOSw3IEBACiAgICAgICAgICAgICByZXR1cm4KICAgICAgICAgaW5kaWNlcyA9IGhwLmdldF9zdXJyb3VuZGluZ19icmFja2V0cyhfb3BlbmVyc1tjbG9zZXJdLCBUcnVlKQogICAgICAgICBpZiBpbmRpY2VzIGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLndhcm5fbWlzbWF0Y2hlZCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIHNlbGYuYWN0aXZhdGVfcmVzdG9yZSgpCiAgICAgICAgIHNlbGYuY3JlYXRlX3RhZyhpbmRpY2VzKQpAQCAtMTI0LDEwICsxMjQsNiBAQAogICAgICAgICBpZiB0aW1lcl9jb3VudCA9PSBzZWxmLmNvdW50ZXI6CiAgICAgICAgICAgICBzZWxmLnJlc3RvcmVfZXZlbnQoKQogCi0gICAgZGVmIHdhcm5fbWlzbWF0Y2hlZChzZWxmKToKLSAgICAgICAgaWYgc2VsZi5CRUxMOgotICAgICAgICAgICAgc2VsZi50ZXh0LmJlbGwoKQotCiAgICAgIyBhbnkgb25lIG9mIHRoZSBjcmVhdGVfdGFnX1hYWCBtZXRob2RzIGNhbiBiZSB1c2VkIGRlcGVuZGluZyBvbgogICAgICMgdGhlIHN0eWxlCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5IGIvTGliL2lkbGVsaWIvcGF0aGJyb3dzZXIucHkKc2ltaWxhcml0eSBpbmRleCA5NSUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUGF0aEJyb3dzZXIucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CmluZGV4IDlhYjc2MzIuLjZjMTk1MDggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BhdGhCcm93c2VyLnB5CisrKyBiL0xpYi9pZGxlbGliL3BhdGhicm93c2VyLnB5CkBAIC0xLDEwICsxLDEwIEBACitpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQogCi1mcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgVHJlZUl0ZW0KLWZyb20gaWRsZWxpYi5DbGFzc0Jyb3dzZXIgaW1wb3J0IENsYXNzQnJvd3NlciwgTW9kdWxlQnJvd3NlclRyZWVJdGVtCi1mcm9tIGlkbGVsaWIuUHlTaGVsbCBpbXBvcnQgUHlTaGVsbEZpbGVMaXN0Citmcm9tIGlkbGVsaWIuYnJvd3NlciBpbXBvcnQgQ2xhc3NCcm93c2VyLCBNb2R1bGVCcm93c2VyVHJlZUl0ZW0KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKK2Zyb20gaWRsZWxpYi50cmVlIGltcG9ydCBUcmVlSXRlbQogCiAKIGNsYXNzIFBhdGhCcm93c2VyKENsYXNzQnJvd3Nlcik6CkBAIC0yNCw2ICsyNCw3IEBACiAgICAgZGVmIHJvb3Rub2RlKHNlbGYpOgogICAgICAgICByZXR1cm4gUGF0aEJyb3dzZXJUcmVlSXRlbSgpCiAKKwogY2xhc3MgUGF0aEJyb3dzZXJUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgR2V0VGV4dChzZWxmKToKQEAgLTM2LDYgKzM3LDcgQEAKICAgICAgICAgICAgIHN1Ymxpc3QuYXBwZW5kKGl0ZW0pCiAgICAgICAgIHJldHVybiBzdWJsaXN0CiAKKwogY2xhc3MgRGlyQnJvd3NlclRyZWVJdGVtKFRyZWVJdGVtKToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkaXIsIHBhY2thZ2VzPVtdKToKQEAgLTk1LDYgKzk3LDcgQEAKICAgICAgICAgc29ydGVkLnNvcnQoKQogICAgICAgICByZXR1cm4gc29ydGVkCiAKKwogZGVmIF9wYXRoX2Jyb3dzZXIocGFyZW50KTogICMgaHRlc3QgIwogICAgIGZsaXN0ID0gUHlTaGVsbEZpbGVMaXN0KHBhcmVudCkKICAgICBQYXRoQnJvd3NlcihmbGlzdCwgX2h0ZXN0PVRydWUpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5IGIvTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QZXJjb2xhdG9yLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9wZXJjb2xhdG9yLnB5CmluZGV4IGI4YmUyYWEuLmQxOGRhZjAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1BlcmNvbGF0b3IucHkKKysrIGIvTGliL2lkbGVsaWIvcGVyY29sYXRvci5weQpAQCAtMSw1ICsxLDUgQEAKLWZyb20gaWRsZWxpYi5XaWRnZXRSZWRpcmVjdG9yIGltcG9ydCBXaWRnZXRSZWRpcmVjdG9yCi1mcm9tIGlkbGVsaWIuRGVsZWdhdG9yIGltcG9ydCBEZWxlZ2F0b3IKK2Zyb20gaWRsZWxpYi5kZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLnJlZGlyZWN0b3IgaW1wb3J0IFdpZGdldFJlZGlyZWN0b3IKIAogCiBjbGFzcyBQZXJjb2xhdG9yOgpAQCAtNTcsNyArNTcsNiBAQAogCiBkZWYgX3BlcmNvbGF0b3IocGFyZW50KTogICMgaHRlc3QgIwogICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCi0gICAgaW1wb3J0IHJlCiAKICAgICBjbGFzcyBUcmFjZXIoRGVsZWdhdG9yKToKICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUpOgpAQCAtNzQsOCArNzMsOCBAQAogCiAgICAgYm94ID0gdGsuVG9wbGV2ZWwocGFyZW50KQogICAgIGJveC50aXRsZSgiVGVzdCBQZXJjb2xhdG9yIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IHRrLlRleHQoYm94KQogICAgIHAgPSBQZXJjb2xhdG9yKHRleHQpCiAgICAgcGluID0gcC5pbnNlcnRmaWx0ZXIKQEAgLTg5LDEwICs4OCwxMCBAQAogICAgICAgICAocGluIGlmIHZhcjIuZ2V0KCkgZWxzZSBwb3V0KSh0MikKIAogICAgIHRleHQucGFjaygpCi0gICAgdmFyMSA9IHRrLkludFZhcigpCisgICAgdmFyMSA9IHRrLkludFZhcihwYXJlbnQpCiAgICAgY2IxID0gdGsuQ2hlY2tidXR0b24oYm94LCB0ZXh0PSJUcmFjZXIxIiwgY29tbWFuZD10b2dnbGUxLCB2YXJpYWJsZT12YXIxKQogICAgIGNiMS5wYWNrKCkKLSAgICB2YXIyID0gdGsuSW50VmFyKCkKKyAgICB2YXIyID0gdGsuSW50VmFyKHBhcmVudCkKICAgICBjYjIgPSB0ay5DaGVja2J1dHRvbihib3gsIHRleHQ9IlRyYWNlcjIiLCBjb21tYW5kPXRvZ2dsZTIsIHZhcmlhYmxlPXZhcjIpCiAgICAgY2IyLnBhY2soKQogCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QeVBhcnNlLnB5IGIvTGliL2lkbGVsaWIvcHlwYXJzZS5weQpzaW1pbGFyaXR5IGluZGV4IDk5JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QeVBhcnNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9weXBhcnNlLnB5CmluZGV4IDljY2JiMjUuLjY3MzlkZmQgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1B5UGFyc2UucHkKKysrIGIvTGliL2lkbGVsaWIvcHlwYXJzZS5weQpAQCAtMSw2ICsxLDYgQEAKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IE1hcHBpbmcKIGltcG9ydCByZQogaW1wb3J0IHN5cwotZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgTWFwcGluZwogCiAjIFJlYXNvbiBsYXN0IHN0bXQgaXMgY29udGludWVkIChvciBDX05PTkUgaWYgaXQncyBub3QpLgogKENfTk9ORSwgQ19CQUNLU0xBU0gsIENfU1RSSU5HX0ZJUlNUX0xJTkUsCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9QeVNoZWxsLnB5IGIvTGliL2lkbGVsaWIvcHlzaGVsbC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9QeVNoZWxsLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9weXNoZWxsLnB5CmluZGV4IDVkZWM2OGUuLmUxZWFkZTEgMTAwNzU1Ci0tLSBhL0xpYi9pZGxlbGliL1B5U2hlbGwucHkKKysrIGIvTGliL2lkbGVsaWIvcHlzaGVsbC5weQpAQCAtMSwyMSArMSw1IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi1pbXBvcnQgZ2V0b3B0Ci1pbXBvcnQgb3MKLWltcG9ydCBvcy5wYXRoCi1pbXBvcnQgcmUKLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCi1pbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgdGltZQotaW1wb3J0IHRva2VuaXplCi1pbXBvcnQgaW8KLQotaW1wb3J0IGxpbmVjYWNoZQotZnJvbSBjb2RlIGltcG9ydCBJbnRlcmFjdGl2ZUludGVycHJldGVyCi1mcm9tIHBsYXRmb3JtIGltcG9ydCBweXRob25fdmVyc2lvbiwgc3lzdGVtCi0KIHRyeToKICAgICBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIzLDE3ICs3LDQyIEBACiAgICAgICAgICAgIllvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsuICoqIiwgZmlsZT1zeXMuX19zdGRlcnJfXykKICAgICBzeXMuZXhpdCgxKQogaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKK2lmIFRrVmVyc2lvbiA8IDguNToKKyAgICByb290ID0gVGsoKSAgIyBvdGhlcndpc2UgY3JlYXRlIHJvb3QgaW4gbWFpbgorICAgIHJvb3Qud2l0aGRyYXcoKQorICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IoIklkbGUgQ2Fubm90IFN0YXJ0IiwKKyAgICAgICAgICAgICJJZGxlIHJlcXVpcmVzIHRjbC90ayA4LjUrLCBub3QgJHMuIiAlIFRrVmVyc2lvbiwKKyAgICAgICAgICAgIHBhcmVudD1yb290KQorICAgIHN5cy5leGl0KDEpCiAKLWZyb20gaWRsZWxpYi5FZGl0b3JXaW5kb3cgaW1wb3J0IEVkaXRvcldpbmRvdywgZml4d29yZGJyZWFrcwotZnJvbSBpZGxlbGliLkZpbGVMaXN0IGltcG9ydCBGaWxlTGlzdAotZnJvbSBpZGxlbGliLkNvbG9yRGVsZWdhdG9yIGltcG9ydCBDb2xvckRlbGVnYXRvcgotZnJvbSBpZGxlbGliLlVuZG9EZWxlZ2F0b3IgaW1wb3J0IFVuZG9EZWxlZ2F0b3IKLWZyb20gaWRsZWxpYi5PdXRwdXRXaW5kb3cgaW1wb3J0IE91dHB1dFdpbmRvdwotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIGNvZGUgaW1wb3J0IEludGVyYWN0aXZlSW50ZXJwcmV0ZXIKK2ltcG9ydCBnZXRvcHQKK2ltcG9ydCBpbworaW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IG9zCitpbXBvcnQgb3MucGF0aAorZnJvbSBwbGF0Zm9ybSBpbXBvcnQgcHl0aG9uX3ZlcnNpb24sIHN5c3RlbQoraW1wb3J0IHJlCitpbXBvcnQgc29ja2V0CitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHRocmVhZGluZworaW1wb3J0IHRpbWUKK2ltcG9ydCB0b2tlbml6ZQoraW1wb3J0IHdhcm5pbmdzCisKK2Zyb20gaWRsZWxpYiBpbXBvcnQgdGVzdGluZyAgIyBib29sIHZhbHVlCitmcm9tIGlkbGVsaWIuY29sb3JpemVyIGltcG9ydCBDb2xvckRlbGVnYXRvcgorZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXIKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXJfcgorZnJvbSBpZGxlbGliLmVkaXRvciBpbXBvcnQgRWRpdG9yV2luZG93LCBmaXh3b3JkYnJlYWtzCitmcm9tIGlkbGVsaWIuZmlsZWxpc3QgaW1wb3J0IEZpbGVMaXN0Citmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorZnJvbSBpZGxlbGliLm91dHdpbiBpbXBvcnQgT3V0cHV0V2luZG93CiBmcm9tIGlkbGVsaWIgaW1wb3J0IHJwYwotZnJvbSBpZGxlbGliIGltcG9ydCBEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBSZW1vdGVEZWJ1Z2dlcgotZnJvbSBpZGxlbGliIGltcG9ydCBtYWNvc3hTdXBwb3J0Citmcm9tIGlkbGVsaWIucnVuIGltcG9ydCBpZGxlX2Zvcm1hdHdhcm5pbmcsIFBzZXVkb0lucHV0RmlsZSwgUHNldWRvT3V0cHV0RmlsZQorZnJvbSBpZGxlbGliLnVuZG8gaW1wb3J0IFVuZG9EZWxlZ2F0b3IKIAogSE9TVCA9ICcxMjcuMC4wLjEnICMgcHl0aG9uIGV4ZWN1dGlvbiBzZXJ2ZXIgb24gbG9jYWxob3N0IGxvb3BiYWNrCiBQT1JUID0gMCAgIyBzb21lZGF5IHBhc3MgaW4gaG9zdCwgcG9ydCBmb3IgcmVtb3RlIGRlYnVnIGNhcGFiaWxpdHkKQEAgLTQzLDIwICs1Miw2IEBACiAjIHRlbXBvcmFyaWx5IHJlZGlyZWN0IHRoZSBzdHJlYW0gdG8gdGhlIHNoZWxsIHdpbmRvdyB0byBkaXNwbGF5IHdhcm5pbmdzIHdoZW4KICMgY2hlY2tpbmcgdXNlcidzIGNvZGUuCiB3YXJuaW5nX3N0cmVhbSA9IHN5cy5fX3N0ZGVycl9fICAjIE5vbmUsIGF0IGxlYXN0IG9uIFdpbmRvd3MsIGlmIG5vIGNvbnNvbGUuCi1pbXBvcnQgd2FybmluZ3MKLQotZGVmIGlkbGVfZm9ybWF0d2FybmluZyhtZXNzYWdlLCBjYXRlZ29yeSwgZmlsZW5hbWUsIGxpbmVubywgbGluZT1Ob25lKToKLSAgICAiIiJGb3JtYXQgd2FybmluZ3MgdGhlIElETEUgd2F5LiIiIgotCi0gICAgcyA9ICJcbldhcm5pbmcgKGZyb20gd2FybmluZ3MgbW9kdWxlKTpcbiIKLSAgICBzICs9ICcgIEZpbGUgXCIlc1wiLCBsaW5lICVzXG4nICUgKGZpbGVuYW1lLCBsaW5lbm8pCi0gICAgaWYgbGluZSBpcyBOb25lOgotICAgICAgICBsaW5lID0gbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIGxpbmVubykKLSAgICBsaW5lID0gbGluZS5zdHJpcCgpCi0gICAgaWYgbGluZToKLSAgICAgICAgcyArPSAiICAgICVzXG4iICUgbGluZQotICAgIHMgKz0gIiVzOiAlc1xuIiAlIChjYXRlZ29yeS5fX25hbWVfXywgbWVzc2FnZSkKLSAgICByZXR1cm4gcwogCiBkZWYgaWRsZV9zaG93d2FybmluZygKICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGZpbGU9Tm9uZSwgbGluZT1Ob25lKToKQEAgLTQxMCw3ICs0MDUsNyBAQAogICAgICAgICAjIHJ1biBmcm9tIHRoZSBJRExFIHNvdXJjZSBkaXJlY3RvcnkuCiAgICAgICAgIGRlbF9leGl0ZiA9IGlkbGVDb25mLkdldE9wdGlvbignbWFpbicsICdHZW5lcmFsJywgJ2RlbGV0ZS1leGl0ZnVuYycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PUZhbHNlLCB0eXBlPSdib29sJykKLSAgICAgICAgaWYgX19uYW1lX18gPT0gJ2lkbGVsaWIuUHlTaGVsbCc6CisgICAgICAgIGlmIF9fbmFtZV9fID09ICdpZGxlbGliLnB5c2hlbGwnOgogICAgICAgICAgICAgY29tbWFuZCA9ICJfX2ltcG9ydF9fKCdpZGxlbGliLnJ1bicpLnJ1bi5tYWluKCVyKSIgJSAoZGVsX2V4aXRmLCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbW1hbmQgPSAiX19pbXBvcnRfXygncnVuJykubWFpbiglcikiICUgKGRlbF9leGl0ZiwpCkBAIC00NjgsNyArNDYzLDcgQEAKICAgICAgICAgaWYgZGVidWc6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgIyBPbmx5IGNsb3NlIHN1YnByb2Nlc3MgZGVidWdnZXIsIGRvbid0IHVucmVnaXN0ZXIgZ3VpX2FkYXAhCi0gICAgICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIuY2xvc2Vfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9yLmNsb3NlX3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCiAgICAgICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAjIEtpbGwgc3VicHJvY2Vzcywgc3Bhd24gYSBuZXcgb25lLCBhY2NlcHQgY29ubmVjdGlvbi4KQEAgLTQ5Nyw3ICs0OTIsNyBAQAogICAgICAgICAjIHJlc3RhcnQgc3VicHJvY2VzcyBkZWJ1Z2dlcgogICAgICAgICBpZiBkZWJ1ZzoKICAgICAgICAgICAgICMgUmVzdGFydGVkIGRlYnVnZ2VyIGNvbm5lY3RzIHRvIGN1cnJlbnQgaW5zdGFuY2Ugb2YgZGVidWcgR1VJCi0gICAgICAgICAgICBSZW1vdGVEZWJ1Z2dlci5yZXN0YXJ0X3N1YnByb2Nlc3NfZGVidWdnZXIoc2VsZi5ycGNjbHQpCisgICAgICAgICAgICBkZWJ1Z2dlcl9yLnJlc3RhcnRfc3VicHJvY2Vzc19kZWJ1Z2dlcihzZWxmLnJwY2NsdCkKICAgICAgICAgICAgICMgcmVsb2FkIHJlbW90ZSBkZWJ1Z2dlciBicmVha3BvaW50cyBmb3IgYWxsIFB5U2hlbGxFZGl0V2luZG93cwogICAgICAgICAgICAgZGVidWcubG9hZF9icmVha3BvaW50cygpCiAgICAgICAgIHNlbGYuY29tcGlsZS5jb21waWxlci5mbGFncyA9IHNlbGYub3JpZ2luYWxfY29tcGlsZXJfZmxhZ3MKQEAgLTU3OCw3ICs1NzMsNyBAQAogICAgICAgICAgICAgICAgIGlmIHNlbGYudGtjb25zb2xlLmdldHZhcigiPDx0b2dnbGUtaml0LXN0YWNrLXZpZXdlcj4+Iik6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVtb3RlX3N0YWNrX3ZpZXdlcigpCiAgICAgICAgICAgICBlbGlmIGhvdyA9PSAiRVJST1IiOgotICAgICAgICAgICAgICAgIGVycm1zZyA9ICJQeVNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXI6IFN1YnByb2Nlc3MgRVJST1I6XG4iCisgICAgICAgICAgICAgICAgZXJybXNnID0gInB5c2hlbGwuTW9kaWZpZWRJbnRlcnByZXRlcjogU3VicHJvY2VzcyBFUlJPUjpcbiIKICAgICAgICAgICAgICAgICBwcmludChlcnJtc2csIHdoYXQsIGZpbGU9c3lzLl9fc3RkZXJyX18pCiAgICAgICAgICAgICAgICAgcHJpbnQoZXJybXNnLCB3aGF0LCBmaWxlPWNvbnNvbGUpCiAgICAgICAgICAgICAjIHdlIHJlY2VpdmVkIGEgcmVzcG9uc2UgdG8gdGhlIGN1cnJlbnRseSBhY3RpdmUgc2VxIG51bWJlcjoKQEAgLTYxMywxMyArNjA4LDEzIEBACiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIHJlbW90ZV9zdGFja192aWV3ZXIoc2VsZik6Ci0gICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlT2JqZWN0QnJvd3NlcgorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGRlYnVnb2JqX3IKICAgICAgICAgb2lkID0gc2VsZi5ycGNjbHQucmVtb3RlcXVldWUoImV4ZWMiLCAic3RhY2t2aWV3ZXIiLCAoImZsaXN0IiwpLCB7fSkKICAgICAgICAgaWYgb2lkIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLnRrY29uc29sZS5yb290LmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGl0ZW0gPSBSZW1vdGVPYmplY3RCcm93c2VyLlN0dWJPYmplY3RUcmVlSXRlbShzZWxmLnJwY2NsdCwgb2lkKQotICAgICAgICBmcm9tIGlkbGVsaWIuVHJlZVdpZGdldCBpbXBvcnQgU2Nyb2xsZWRDYW52YXMsIFRyZWVOb2RlCisgICAgICAgIGl0ZW0gPSBkZWJ1Z29ial9yLlN0dWJPYmplY3RUcmVlSXRlbShzZWxmLnJwY2NsdCwgb2lkKQorICAgICAgICBmcm9tIGlkbGVsaWIudHJlZSBpbXBvcnQgU2Nyb2xsZWRDYW52YXMsIFRyZWVOb2RlCiAgICAgICAgIHRvcCA9IFRvcGxldmVsKHNlbGYudGtjb25zb2xlLnJvb3QpCiAgICAgICAgIHRoZW1lID0gaWRsZUNvbmYuQ3VycmVudFRoZW1lKCkKICAgICAgICAgYmFja2dyb3VuZCA9IGlkbGVDb25mLkdldEhpZ2hsaWdodCh0aGVtZSwgJ25vcm1hbCcpWydiYWNrZ3JvdW5kJ10KQEAgLTY2Miw5ICs2NTcsOSBAQAogICAgICAgICAjIGF0IHRoZSBtb21lbnQsIEludGVyYWN0aXZlSW50ZXJwcmV0ZXIgZXhwZWN0cyBzdHIKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2Uoc291cmNlLCBzdHIpCiAgICAgICAgICNpZiBpc2luc3RhbmNlKHNvdXJjZSwgc3RyKToKLSAgICAgICAgIyAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZworICAgICAgICAjICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgaW9tZW51CiAgICAgICAgICMgICAgdHJ5OgotICAgICAgICAjICAgICAgICBzb3VyY2UgPSBzb3VyY2UuZW5jb2RlKElPQmluZGluZy5lbmNvZGluZykKKyAgICAgICAgIyAgICAgICAgc291cmNlID0gc291cmNlLmVuY29kZShpb21lbnUuZW5jb2RpbmcpCiAgICAgICAgICMgICAgZXhjZXB0IFVuaWNvZGVFcnJvcjoKICAgICAgICAgIyAgICAgICAgc2VsZi50a2NvbnNvbGUucmVzZXRvdXRwdXQoKQogICAgICAgICAjICAgICAgICBzZWxmLndyaXRlKCJVbnN1cHBvcnRlZCBjaGFyYWN0ZXJzIGluIGlucHV0XG4iKQpAQCAtODUwLDcgKzg0NSw3IEBACiAKIAogICAgICMgTmV3IGNsYXNzZXMKLSAgICBmcm9tIGlkbGVsaWIuSWRsZUhpc3RvcnkgaW1wb3J0IEhpc3RvcnkKKyAgICBmcm9tIGlkbGVsaWIuaGlzdG9yeSBpbXBvcnQgSGlzdG9yeQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZsaXN0PU5vbmUpOgogICAgICAgICBpZiB1c2Vfc3VicHJvY2VzczoKQEAgLTg4OCwxMSArODgzLDExIEBACiAgICAgICAgIHNlbGYuc2F2ZV9zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgICAgIHNlbGYuc2F2ZV9zdGRlcnIgPSBzeXMuc3RkZXJyCiAgICAgICAgIHNlbGYuc2F2ZV9zdGRpbiA9IHN5cy5zdGRpbgotICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IElPQmluZGluZwotICAgICAgICBzZWxmLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYsICJzdGRpbiIsIElPQmluZGluZy5lbmNvZGluZykKLSAgICAgICAgc2VsZi5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRvdXQiLCBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3RkZXJyIiwgSU9CaW5kaW5nLmVuY29kaW5nKQotICAgICAgICBzZWxmLmNvbnNvbGUgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJjb25zb2xlIiwgSU9CaW5kaW5nLmVuY29kaW5nKQorICAgICAgICBmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudQorICAgICAgICBzZWxmLnN0ZGluID0gUHNldWRvSW5wdXRGaWxlKHNlbGYsICJzdGRpbiIsIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc2VsZi5zdGRvdXQgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJzdGRvdXQiLCBpb21lbnUuZW5jb2RpbmcpCisgICAgICAgIHNlbGYuc3RkZXJyID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLCAic3RkZXJyIiwgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzZWxmLmNvbnNvbGUgPSBQc2V1ZG9PdXRwdXRGaWxlKHNlbGYsICJjb25zb2xlIiwgaW9tZW51LmVuY29kaW5nKQogICAgICAgICBpZiBub3QgdXNlX3N1YnByb2Nlc3M6CiAgICAgICAgICAgICBzeXMuc3Rkb3V0ID0gc2VsZi5zdGRvdXQKICAgICAgICAgICAgIHN5cy5zdGRlcnIgPSBzZWxmLnN0ZGVycgpAQCAtOTAwLDcgKzg5NSw3IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgICMgcGFnZSBoZWxwKCkgdGV4dCB0byBzaGVsbC4KICAgICAgICAgICAgIGltcG9ydCBweWRvYyAjIGltcG9ydCBtdXN0IGJlIGRvbmUgaGVyZSB0byBjYXB0dXJlIGkvbyByZWJpbmRpbmcuCi0gICAgICAgICAgICAjIFhYWCBLQksgMjdEZWMwNyB1c2UgYSB0ZXh0VmlldyBzb21lZGF5LCBidXQgbXVzdCB3b3JrIHcvbyBzdWJwcm9jCisgICAgICAgICAgICAjIFhYWCBLQksgMjdEZWMwNyB1c2UgVGV4dFZpZXdlciBzb21lZGF5LCBidXQgbXVzdCB3b3JrIHcvbyBzdWJwcm9jCiAgICAgICAgICAgICBweWRvYy5wYWdlciA9IHB5ZG9jLnBsYWlucGFnZXIKICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgc3lzLnN0ZGVyciA9IHN5cy5fX3N0ZGVycl9fCkBAIC05NTQsNyArOTQ5LDcgQEAKICAgICAgICAgICAgIHNlbGYuaW50ZXJwLnNldGRlYnVnZ2VyKE5vbmUpCiAgICAgICAgICAgICBkYi5jbG9zZSgpCiAgICAgICAgICAgICBpZiBzZWxmLmludGVycC5ycGNjbHQ6Ci0gICAgICAgICAgICAgICAgUmVtb3RlRGVidWdnZXIuY2xvc2VfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCkKKyAgICAgICAgICAgICAgICBkZWJ1Z2dlcl9yLmNsb3NlX3JlbW90ZV9kZWJ1Z2dlcihzZWxmLmludGVycC5ycGNjbHQpCiAgICAgICAgICAgICBzZWxmLnJlc2V0b3V0cHV0KCkKICAgICAgICAgICAgIHNlbGYuY29uc29sZS53cml0ZSgiW0RFQlVHIE9GRl1cbiIpCiAgICAgICAgICAgICBzeXMucHMxID0gIj4+PiAiCkBAIC05NjMsMTAgKzk1OCwxMCBAQAogCiAgICAgZGVmIG9wZW5fZGVidWdnZXIoc2VsZik6CiAgICAgICAgIGlmIHNlbGYuaW50ZXJwLnJwY2NsdDoKLSAgICAgICAgICAgIGRiZ19ndWkgPSBSZW1vdGVEZWJ1Z2dlci5zdGFydF9yZW1vdGVfZGVidWdnZXIoc2VsZi5pbnRlcnAucnBjY2x0LAorICAgICAgICAgICAgZGJnX2d1aSA9IGRlYnVnZ2VyX3Iuc3RhcnRfcmVtb3RlX2RlYnVnZ2VyKHNlbGYuaW50ZXJwLnJwY2NsdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRiZ19ndWkgPSBEZWJ1Z2dlci5EZWJ1Z2dlcihzZWxmKQorICAgICAgICAgICAgZGJnX2d1aSA9IGRlYnVnZ2VyLkRlYnVnZ2VyKHNlbGYpCiAgICAgICAgIHNlbGYuaW50ZXJwLnNldGRlYnVnZ2VyKGRiZ19ndWkpCiAgICAgICAgIGRiZ19ndWkubG9hZF9icmVha3BvaW50cygpCiAgICAgICAgIHN5cy5wczEgPSAiW0RFQlVHIE9OXVxuPj4+ICIKQEAgLTEyNDEsNyArMTIzNiw3IEBACiAgICAgICAgICAgICAgICAgIihzeXMubGFzdF90cmFjZWJhY2sgaXMgbm90IGRlZmluZWQpIiwKICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZi50ZXh0KQogICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZyb20gaWRsZWxpYi5TdGFja1ZpZXdlciBpbXBvcnQgU3RhY2tCcm93c2VyCisgICAgICAgIGZyb20gaWRsZWxpYi5zdGFja3ZpZXdlciBpbXBvcnQgU3RhY2tCcm93c2VyCiAgICAgICAgIFN0YWNrQnJvd3NlcihzZWxmLnJvb3QsIHNlbGYuZmxpc3QpCiAKICAgICBkZWYgdmlld19yZXN0YXJ0X21hcmsoc2VsZiwgZXZlbnQ9Tm9uZSk6CkBAIC0xMzA5LDkyICsxMzA0LDYgQEAKICAgICAgICAgICAgIHJldHVybiAnZGlzYWJsZWQnCiAgICAgICAgIHJldHVybiBzdXBlcigpLnJtZW51X2NoZWNrX3Bhc3RlKCkKIAotY2xhc3MgUHNldWRvRmlsZShpby5UZXh0SU9CYXNlKToKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2Rpbmc9Tm9uZSk6Ci0gICAgICAgIHNlbGYuc2hlbGwgPSBzaGVsbAotICAgICAgICBzZWxmLnRhZ3MgPSB0YWdzCi0gICAgICAgIHNlbGYuX2VuY29kaW5nID0gZW5jb2RpbmcKLQotICAgIEBwcm9wZXJ0eQotICAgIGRlZiBlbmNvZGluZyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuX2VuY29kaW5nCi0KLSAgICBAcHJvcGVydHkKLSAgICBkZWYgbmFtZShzZWxmKToKLSAgICAgICAgcmV0dXJuICc8JXM+JyAlIHNlbGYudGFncwotCi0gICAgZGVmIGlzYXR0eShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotCi1jbGFzcyBQc2V1ZG9PdXRwdXRGaWxlKFBzZXVkb0ZpbGUpOgotCi0gICAgZGVmIHdyaXRhYmxlKHNlbGYpOgotICAgICAgICByZXR1cm4gVHJ1ZQotCi0gICAgZGVmIHdyaXRlKHNlbGYsIHMpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIndyaXRlIHRvIGNsb3NlZCBmaWxlIikKLSAgICAgICAgaWYgdHlwZShzKSBpcyBub3Qgc3RyOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgc3RyLCBub3QgJyArIHR5cGUocykuX19uYW1lX18pCi0gICAgICAgICAgICAjIFNlZSBpc3N1ZSAjMTk0ODEKLSAgICAgICAgICAgIHMgPSBzdHIuX19zdHJfXyhzKQotICAgICAgICByZXR1cm4gc2VsZi5zaGVsbC53cml0ZShzLCBzZWxmLnRhZ3MpCi0KLQotY2xhc3MgUHNldWRvSW5wdXRGaWxlKFBzZXVkb0ZpbGUpOgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKLSAgICAgICAgUHNldWRvRmlsZS5fX2luaXRfXyhzZWxmLCBzaGVsbCwgdGFncywgZW5jb2RpbmcpCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKLQotICAgIGRlZiByZWFkYWJsZShzZWxmKToKLSAgICAgICAgcmV0dXJuIFRydWUKLQotICAgIGRlZiByZWFkKHNlbGYsIHNpemU9LTEpOgotICAgICAgICBpZiBzZWxmLmNsb3NlZDoKLSAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCi0gICAgICAgIGlmIHNpemUgaXMgTm9uZToKLSAgICAgICAgICAgIHNpemUgPSAtMQotICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCi0gICAgICAgIHJlc3VsdCA9IHNlbGYuX2xpbmVfYnVmZmVyCi0gICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gJycKLSAgICAgICAgaWYgc2l6ZSA8IDA6Ci0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgd2hpbGUgbGVuKHJlc3VsdCkgPCBzaXplOgotICAgICAgICAgICAgICAgIGxpbmUgPSBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICBpZiBub3QgbGluZTogYnJlYWsKLSAgICAgICAgICAgICAgICByZXN1bHQgKz0gbGluZQotICAgICAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSByZXN1bHRbc2l6ZTpdCi0gICAgICAgICAgICByZXN1bHQgPSByZXN1bHRbOnNpemVdCi0gICAgICAgIHJldHVybiByZXN1bHQKLQotICAgIGRlZiByZWFkbGluZShzZWxmLCBzaXplPS0xKToKLSAgICAgICAgaWYgc2VsZi5jbG9zZWQ6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJyZWFkIGZyb20gY2xvc2VkIGZpbGUiKQotICAgICAgICBpZiBzaXplIGlzIE5vbmU6Ci0gICAgICAgICAgICBzaXplID0gLTEKLSAgICAgICAgZWxpZiBub3QgaXNpbnN0YW5jZShzaXplLCBpbnQpOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdtdXN0IGJlIGludCwgbm90ICcgKyB0eXBlKHNpemUpLl9fbmFtZV9fKQotICAgICAgICBsaW5lID0gc2VsZi5fbGluZV9idWZmZXIgb3Igc2VsZi5zaGVsbC5yZWFkbGluZSgpCi0gICAgICAgIGlmIHNpemUgPCAwOgotICAgICAgICAgICAgc2l6ZSA9IGxlbihsaW5lKQotICAgICAgICBlb2wgPSBsaW5lLmZpbmQoJ1xuJywgMCwgc2l6ZSkKLSAgICAgICAgaWYgZW9sID49IDA6Ci0gICAgICAgICAgICBzaXplID0gZW9sICsgMQotICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IGxpbmVbc2l6ZTpdCi0gICAgICAgIHJldHVybiBsaW5lWzpzaXplXQotCi0gICAgZGVmIGNsb3NlKHNlbGYpOgotICAgICAgICBzZWxmLnNoZWxsLmNsb3NlKCkKLQogCiBkZWYgZml4X3gxMV9wYXN0ZShyb290KToKICAgICAiTWFrZSBwYXN0ZSByZXBsYWNlIHNlbGVjdGlvbiBvbiB4MTEuICBTZWUgaXNzdWUgIzUxMjQuIgpAQCAtMTU0MCw3ICsxNDQ5LDEwIEBACiAgICAgZW5hYmxlX2VkaXQgPSBlbmFibGVfZWRpdCBvciBlZGl0X3N0YXJ0CiAgICAgZW5hYmxlX3NoZWxsID0gZW5hYmxlX3NoZWxsIG9yIG5vdCBlbmFibGVfZWRpdAogCi0gICAgIyBzdGFydCBlZGl0b3IgYW5kL29yIHNoZWxsIHdpbmRvd3M6CisgICAgIyBTZXR1cCByb290LiAgRG9uJ3QgYnJlYWsgdXNlciBjb2RlIHJ1biBpbiBJRExFIHByb2Nlc3MuCisgICAgIyBEb24ndCBjaGFuZ2UgZW52aXJvbm1lbnQgd2hlbiB0ZXN0aW5nLgorICAgIGlmIHVzZV9zdWJwcm9jZXNzIGFuZCBub3QgdGVzdGluZzoKKyAgICAgICAgTm9EZWZhdWx0Um9vdCgpCiAgICAgcm9vdCA9IFRrKGNsYXNzTmFtZT0iSWRsZSIpCiAgICAgcm9vdC53aXRoZHJhdygpCiAKQEAgLTE1NDksMjUgKzE0NjEsMTkgQEAKICAgICBpZiBzeXN0ZW0oKSA9PSAnV2luZG93cyc6CiAgICAgICAgIGljb25maWxlID0gb3MucGF0aC5qb2luKGljb25kaXIsICdpZGxlLmljbycpCiAgICAgICAgIHJvb3Qud21faWNvbmJpdG1hcChkZWZhdWx0PWljb25maWxlKQotICAgIGVsaWYgVGtWZXJzaW9uID49IDguNToKKyAgICBlbHNlOgogICAgICAgICBleHQgPSAnLnBuZycgaWYgVGtWZXJzaW9uID49IDguNiBlbHNlICcuZ2lmJwogICAgICAgICBpY29uZmlsZXMgPSBbb3MucGF0aC5qb2luKGljb25kaXIsICdpZGxlXyVkJXMnICUgKHNpemUsIGV4dCkpCiAgICAgICAgICAgICAgICAgICAgICBmb3Igc2l6ZSBpbiAoMTYsIDMyLCA0OCldCi0gICAgICAgIGljb25zID0gW1Bob3RvSW1hZ2UoZmlsZT1pY29uZmlsZSkgZm9yIGljb25maWxlIGluIGljb25maWxlc10KKyAgICAgICAgaWNvbnMgPSBbUGhvdG9JbWFnZShtYXN0ZXI9cm9vdCwgZmlsZT1pY29uZmlsZSkKKyAgICAgICAgICAgICAgICAgZm9yIGljb25maWxlIGluIGljb25maWxlc10KICAgICAgICAgcm9vdC53bV9pY29ucGhvdG8oVHJ1ZSwgKmljb25zKQogCisgICAgIyBzdGFydCBlZGl0b3IgYW5kL29yIHNoZWxsIHdpbmRvd3M6CiAgICAgZml4d29yZGJyZWFrcyhyb290KQogICAgIGZpeF94MTFfcGFzdGUocm9vdCkKICAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQotICAgIG1hY29zeFN1cHBvcnQuc2V0dXBBcHAocm9vdCwgZmxpc3QpCi0KLSAgICBpZiBtYWNvc3hTdXBwb3J0LmlzQXF1YVRrKCk6Ci0gICAgICAgICMgVGhlcmUgYXJlIHNvbWUgc2NyZXdlZCB1cCA8Mj4gY2xhc3MgYmluZGluZ3MgZm9yIHRleHQKLSAgICAgICAgIyB3aWRnZXRzIGRlZmluZWQgaW4gVGsgd2hpY2ggd2UgbmVlZCB0byBkbyBhd2F5IHdpdGguCi0gICAgICAgICMgU2VlIGlzc3VlICMyNDgwMS4KLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPEIyPicpCi0gICAgICAgIHJvb3QudW5iaW5kX2NsYXNzKCdUZXh0JywgJzxCMi1Nb3Rpb24+JykKLSAgICAgICAgcm9vdC51bmJpbmRfY2xhc3MoJ1RleHQnLCAnPDxQYXN0ZVNlbGVjdGlvbj4+JykKKyAgICBtYWNvc3guc2V0dXBBcHAocm9vdCwgZmxpc3QpCiAKICAgICBpZiBlbmFibGVfZWRpdDoKICAgICAgICAgaWYgbm90IChjbWQgb3Igc2NyaXB0KToKQEAgLTE1ODIsNyArMTQ4OCw3IEBACiAgICAgICAgIHNoZWxsID0gZmxpc3Qub3Blbl9zaGVsbCgpCiAgICAgICAgIGlmIG5vdCBzaGVsbDoKICAgICAgICAgICAgIHJldHVybiAjIGNvdWxkbid0IG9wZW4gc2hlbGwKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpIGFuZCBmbGlzdC5kaWN0OgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKSBhbmQgZmxpc3QuZGljdDoKICAgICAgICAgICAgICMgT24gT1NYOiB3aGVuIHRoZSB1c2VyIGhhcyBkb3VibGUtY2xpY2tlZCBvbiBhIGZpbGUgdGhhdCBjYXVzZXMKICAgICAgICAgICAgICMgSURMRSB0byBiZSBsYXVuY2hlZCB0aGUgc2hlbGwgd2luZG93IHdpbGwgb3BlbiBqdXN0IGluIGZyb250IG9mCiAgICAgICAgICAgICAjIHRoZSBmaWxlIHNoZSB3YW50cyB0byBzZWUuIExvd2VyIHRoZSBpbnRlcnByZXRlciB3aW5kb3cgd2hlbgpAQCAtMTYxNiw3ICsxNTIyLDcgQEAKICAgICAgICAgIyBjaGVjayBmb3IgcHJvYmxlbWF0aWMgT1MgWCBUayB2ZXJzaW9ucyBhbmQgcHJpbnQgYSB3YXJuaW5nCiAgICAgICAgICMgbWVzc2FnZSBpbiB0aGUgSURMRSBzaGVsbCB3aW5kb3c7IHRoaXMgaXMgbGVzcyBpbnRydXNpdmUKICAgICAgICAgIyB0aGFuIGFsd2F5cyBvcGVuaW5nIGEgc2VwYXJhdGUgd2luZG93LgotICAgICAgICB0a3ZlcnNpb253YXJuaW5nID0gbWFjb3N4U3VwcG9ydC50a1ZlcnNpb25XYXJuaW5nKHJvb3QpCisgICAgICAgIHRrdmVyc2lvbndhcm5pbmcgPSBtYWNvc3gudGtWZXJzaW9uV2FybmluZyhyb290KQogICAgICAgICBpZiB0a3ZlcnNpb253YXJuaW5nOgogICAgICAgICAgICAgc2hlbGwuaW50ZXJwLnJ1bmNvbW1hbmQoInByaW50KCclcycpIiAlIHRrdmVyc2lvbndhcm5pbmcpCiAKQEAgLTE2MjYsNyArMTUzMiw3IEBACiAgICAgY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBzeXMubW9kdWxlc1snUHlTaGVsbCddID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KKyAgICBzeXMubW9kdWxlc1sncHlzaGVsbCddID0gc3lzLm1vZHVsZXNbJ19fbWFpbl9fJ10KICAgICBtYWluKCkKIAogY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkgICMgTWFrZSBzdXJlIHR1cm5lZCBvZmY7IHNlZSBpc3N1ZSAxODA4MQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvcXVlcnkucHkgYi9MaWIvaWRsZWxpYi9xdWVyeS5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjFmMWUyCi0tLSAvZGV2L251bGwKKysrIGIvTGliL2lkbGVsaWIvcXVlcnkucHkKQEAgLTAsMCArMSwzMDggQEAKKyIiIgorRGlhbG9ncyB0aGF0IHF1ZXJ5IHVzZXJzIGFuZCB2ZXJpZnkgdGhlIGFuc3dlciBiZWZvcmUgYWNjZXB0aW5nLgorVXNlIHR0ayB3aWRnZXRzLCBsaW1pdGluZyB1c2UgdG8gdGNsL3RrIDguNSssIGFzIGluIElETEUgMy42Ky4KKworUXVlcnkgaXMgdGhlIGdlbmVyaWMgYmFzZSBjbGFzcyBmb3IgYSBwb3B1cCBkaWFsb2cuCitUaGUgdXNlciBtdXN0IGVpdGhlciBlbnRlciBhIHZhbGlkIGFuc3dlciBvciBjbG9zZSB0aGUgZGlhbG9nLgorRW50cmllcyBhcmUgdmFsaWRhdGVkIHdoZW4gPFJldHVybj4gaXMgZW50ZXJlZCBvciBbT2tdIGlzIGNsaWNrZWQuCitFbnRyaWVzIGFyZSBpZ25vcmVkIHdoZW4gW0NhbmNlbF0gb3IgW1hdIGFyZSBjbGlja2VkLgorVGhlICdyZXR1cm4gdmFsdWUnIGlzIC5yZXN1bHQgc2V0IHRvIGVpdGhlciBhIHZhbGlkIGFuc3dlciBvciBOb25lLgorCitTdWJjbGFzcyBTZWN0aW9uTmFtZSBnZXRzIGEgbmFtZSBmb3IgYSBuZXcgY29uZmlnIGZpbGUgc2VjdGlvbi4KK0NvbmZpZ2RpYWxvZyB1c2VzIGl0IGZvciBuZXcgaGlnaGxpZ2h0IHRoZW1lIGFuZCBrZXliaW5kaW5nIHNldCBuYW1lcy4KK1N1YmNsYXNzIE1vZHVsZU5hbWUgZ2V0cyBhIG5hbWUgZm9yIEZpbGUgPT4gT3BlbiBNb2R1bGUuCitTdWJjbGFzcyBIZWxwU291cmNlIGdldHMgbWVudSBpdGVtIGFuZCBwYXRoIGZvciBhZGRpdGlvbnMgdG8gSGVscCBtZW51LgorIiIiCisjIFF1ZXJ5IGFuZCBTZWN0aW9uIG5hbWUgcmVzdWx0IGZyb20gc3BsaXR0aW5nIEdldENmZ1NlY3Rpb25OYW1lRGlhbG9nCisjIG9mIGNvbmZpZ1NlY3Rpb25OYW1lRGlhbG9nLnB5ICh0ZW1wb3JhcmlseSBjb25maWdfc2VjLnB5KSBpbnRvCisjIGdlbmVyaWMgYW5kIHNwZWNpZmljIHBhcnRzLiAgMy42IG9ubHksIEp1bHkgMjAxNi4KKyMgTW9kdWxlTmFtZS5lbnRyeV9vayBjYW1lIGZyb20gZWRpdG9yLkVkaXRvcldpbmRvdy5sb2FkX21vZHVsZS4KKyMgSGVscFNvdXJjZSB3YXMgZXh0cmFjdGVkIGZyb20gY29uZmlnSGVscFNvdXJjZUVkaXQucHkgKHRlbXBvcmFyaWx5CisjIGNvbmZpZ19oZWxwLnB5KSwgd2l0aCBkYXJ3aW4gY29kZSBtb3ZlZCBmcm9tIG9rIHRvIHBhdGhfb2suCisKK2ltcG9ydCBpbXBvcnRsaWIKK2ltcG9ydCBvcworZnJvbSBzeXMgaW1wb3J0IGV4ZWN1dGFibGUsIHBsYXRmb3JtICAjIFBsYXRmb3JtIGlzIHNldCBmb3Igb25lIHRlc3QuCisKK2Zyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFN0cmluZ1ZhciwgVywgRSwgTiwgUworZnJvbSB0a2ludGVyLnR0ayBpbXBvcnQgRnJhbWUsIEJ1dHRvbiwgRW50cnksIExhYmVsCitmcm9tIHRraW50ZXIgaW1wb3J0IGZpbGVkaWFsb2cKK2Zyb20gdGtpbnRlci5mb250IGltcG9ydCBGb250CisKK2NsYXNzIFF1ZXJ5KFRvcGxldmVsKToKKyAgICAiIiJCYXNlIGNsYXNzIGZvciBnZXR0aW5nIHZlcmlmaWVkIGFuc3dlciBmcm9tIGEgdXNlci4KKworICAgIEZvciB0aGlzIGJhc2UgY2xhc3MsIGFjY2VwdCBhbnkgbm9uLWJsYW5rIHN0cmluZy4KKyAgICAiIiIKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgKiwgdGV4dDA9JycsIHVzZWRfbmFtZXM9e30sCisgICAgICAgICAgICAgICAgIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgIiIiQ3JlYXRlIHBvcHVwLCBkbyBub3QgcmV0dXJuIHVudGlsIHRrIHdpZGdldCBkZXN0cm95ZWQuCisKKyAgICAgICAgQWRkaXRpb25hbCBzdWJjbGFzcyBpbml0IG11c3QgYmUgZG9uZSBiZWZvcmUgY2FsbGluZyB0aGlzCisgICAgICAgIHVubGVzcyAgX3V0ZXN0PVRydWUgaXMgcGFzc2VkIHRvIHN1cHByZXNzIHdhaXRfd2luZG93KCkuCisKKyAgICAgICAgdGl0bGUgLSBzdHJpbmcsIHRpdGxlIG9mIHBvcHVwIGRpYWxvZworICAgICAgICBtZXNzYWdlIC0gc3RyaW5nLCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UgdG8gZGlzcGxheQorICAgICAgICB0ZXh0MCAtIGluaXRpYWwgdmFsdWUgZm9yIGVudHJ5CisgICAgICAgIHVzZWRfbmFtZXMgLSBuYW1lcyBhbHJlYWR5IGluIHVzZQorICAgICAgICBfaHRlc3QgLSBib29sLCBjaGFuZ2UgYm94IGxvY2F0aW9uIHdoZW4gcnVubmluZyBodGVzdAorICAgICAgICBfdXRlc3QgLSBib29sLCBsZWF2ZSB3aW5kb3cgaGlkZGVuIGFuZCBub3QgbW9kYWwKKyAgICAgICAgIiIiCisgICAgICAgIFRvcGxldmVsLl9faW5pdF9fKHNlbGYsIHBhcmVudCkKKyAgICAgICAgc2VsZi53aXRoZHJhdygpICAjIEhpZGUgd2hpbGUgY29uZmlndXJpbmcsIGVzcGVjaWFsbHkgZ2VvbWV0cnkuCisgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CisgICAgICAgIHNlbGYudGl0bGUodGl0bGUpCisgICAgICAgIHNlbGYubWVzc2FnZSA9IG1lc3NhZ2UKKyAgICAgICAgc2VsZi50ZXh0MCA9IHRleHQwCisgICAgICAgIHNlbGYudXNlZF9uYW1lcyA9IHVzZWRfbmFtZXMKKyAgICAgICAgc2VsZi50cmFuc2llbnQocGFyZW50KQorICAgICAgICBzZWxmLmdyYWJfc2V0KCkKKyAgICAgICAgd2luZG93aW5nc3lzdGVtID0gc2VsZi50ay5jYWxsKCd0aycsICd3aW5kb3dpbmdzeXN0ZW0nKQorICAgICAgICBpZiB3aW5kb3dpbmdzeXN0ZW0gPT0gJ2FxdWEnOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHNlbGYudGsuY2FsbCgnOjp0azo6dW5zdXBwb3J0ZWQ6Ok1hY1dpbmRvd1N0eWxlJywgJ3N0eWxlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fdywgJ21vdmVhYmxlTW9kYWwnLCAnJykKKyAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBzZWxmLmJpbmQoIjxDb21tYW5kLS4+Iiwgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYuYmluZCgnPEtleS1Fc2NhcGU+Jywgc2VsZi5jYW5jZWwpCisgICAgICAgIHNlbGYucHJvdG9jb2woIldNX0RFTEVURV9XSU5ET1ciLCBzZWxmLmNhbmNlbCkKKyAgICAgICAgc2VsZi5iaW5kKCc8S2V5LVJldHVybj4nLCBzZWxmLm9rKQorICAgICAgICBzZWxmLmJpbmQoIjxLUF9FbnRlcj4iLCBzZWxmLm9rKQorICAgICAgICBzZWxmLnJlc2l6YWJsZShoZWlnaHQ9RmFsc2UsIHdpZHRoPUZhbHNlKQorICAgICAgICBzZWxmLmNyZWF0ZV93aWRnZXRzKCkKKyAgICAgICAgc2VsZi51cGRhdGVfaWRsZXRhc2tzKCkgICMgTmVlZGVkIGhlcmUgZm9yIHdpbmZvX3JlcXdpZHRoIGJlbG93LgorICAgICAgICBzZWxmLmdlb21ldHJ5KCAgIyBDZW50ZXIgZGlhbG9nIG92ZXIgcGFyZW50IChvciBiZWxvdyBodGVzdCBib3gpLgorICAgICAgICAgICAgICAgICIrJWQrJWQiICUgKAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHgoKSArCisgICAgICAgICAgICAgICAgICAgIChwYXJlbnQud2luZm9fd2lkdGgoKS8yIC0gc2VsZi53aW5mb19yZXF3aWR0aCgpLzIpLAorICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArCisgICAgICAgICAgICAgICAgICAgICgocGFyZW50LndpbmZvX2hlaWdodCgpLzIgLSBzZWxmLndpbmZvX3JlcWhlaWdodCgpLzIpCisgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBfaHRlc3QgZWxzZSAxNTApCisgICAgICAgICAgICAgICAgKSApCisgICAgICAgIGlmIG5vdCBfdXRlc3Q6CisgICAgICAgICAgICBzZWxmLmRlaWNvbmlmeSgpICAjIFVuaGlkZSBub3cgdGhhdCBnZW9tZXRyeSBzZXQuCisgICAgICAgICAgICBzZWxmLndhaXRfd2luZG93KCkKKworICAgIGRlZiBjcmVhdGVfd2lkZ2V0cyhzZWxmKTogICMgQ2FsbCBmcm9tIG92ZXJyaWRlLCBpZiBhbnkuCisgICAgICAgICMgQmluZCB0byBzZWxmIHdpZGdldHMgbmVlZGVkIGZvciBlbnRyeV9vayBvciB1bml0dGVzdC4KKyAgICAgICAgc2VsZi5mcmFtZSA9IGZyYW1lID0gRnJhbWUoc2VsZiwgcGFkZGluZz0xMCkKKyAgICAgICAgZnJhbWUuZ3JpZChjb2x1bW49MCwgcm93PTAsIHN0aWNreT0nbmV3cycpCisgICAgICAgIGZyYW1lLmdyaWRfY29sdW1uY29uZmlndXJlKDAsIHdlaWdodD0xKQorCisgICAgICAgIGVudHJ5bGFiZWwgPSBMYWJlbChmcmFtZSwgYW5jaG9yPSd3JywganVzdGlmeT0nbGVmdCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PXNlbGYubWVzc2FnZSkKKyAgICAgICAgc2VsZi5lbnRyeXZhciA9IFN0cmluZ1ZhcihzZWxmLCBzZWxmLnRleHQwKQorICAgICAgICBzZWxmLmVudHJ5ID0gRW50cnkoZnJhbWUsIHdpZHRoPTMwLCB0ZXh0dmFyaWFibGU9c2VsZi5lbnRyeXZhcikKKyAgICAgICAgc2VsZi5lbnRyeS5mb2N1c19zZXQoKQorICAgICAgICBzZWxmLmVycm9yX2ZvbnQgPSBGb250KG5hbWU9J1RrQ2FwdGlvbkZvbnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4aXN0cz1UcnVlLCByb290PXNlbGYucGFyZW50KQorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yID0gTGFiZWwoZnJhbWUsIHRleHQ9JyAnLCBmb3JlZ3JvdW5kPSdyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9udD1zZWxmLmVycm9yX2ZvbnQpCisgICAgICAgIHNlbGYuYnV0dG9uX29rID0gQnV0dG9uKAorICAgICAgICAgICAgICAgIGZyYW1lLCB0ZXh0PSdPSycsIGRlZmF1bHQ9J2FjdGl2ZScsIGNvbW1hbmQ9c2VsZi5vaykKKyAgICAgICAgc2VsZi5idXR0b25fY2FuY2VsID0gQnV0dG9uKAorICAgICAgICAgICAgICAgIGZyYW1lLCB0ZXh0PSdDYW5jZWwnLCBjb21tYW5kPXNlbGYuY2FuY2VsKQorCisgICAgICAgIGVudHJ5bGFiZWwuZ3JpZChjb2x1bW49MCwgcm93PTAsIGNvbHVtbnNwYW49MywgcGFkeD01LCBzdGlja3k9VykKKyAgICAgICAgc2VsZi5lbnRyeS5ncmlkKGNvbHVtbj0wLCByb3c9MSwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsIHN0aWNreT1XK0UsCisgICAgICAgICAgICAgICAgICAgICAgICBwYWR5PVsxMCwwXSkKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvci5ncmlkKGNvbHVtbj0wLCByb3c9MiwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGlja3k9VytFKQorICAgICAgICBzZWxmLmJ1dHRvbl9vay5ncmlkKGNvbHVtbj0xLCByb3c9OTksIHBhZHg9NSkKKyAgICAgICAgc2VsZi5idXR0b25fY2FuY2VsLmdyaWQoY29sdW1uPTIsIHJvdz05OSwgcGFkeD01KQorCisgICAgZGVmIHNob3dlcnJvcihzZWxmLCBtZXNzYWdlLCB3aWRnZXQ9Tm9uZSk6CisgICAgICAgICNzZWxmLmJlbGwoZGlzcGxheW9mPXNlbGYpCisgICAgICAgICh3aWRnZXQgb3Igc2VsZi5lbnRyeV9lcnJvcilbJ3RleHQnXSA9ICdFUlJPUjogJyArIG1lc3NhZ2UKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKTogICMgRXhhbXBsZTogdXN1YWxseSByZXBsYWNlLgorICAgICAgICAiUmV0dXJuIG5vbi1ibGFuayBlbnRyeSBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgZW50cnkgPSBzZWxmLmVudHJ5LmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IGVudHJ5OgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ2JsYW5rIGxpbmUuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBlbnRyeQorCisgICAgZGVmIG9rKHNlbGYsIGV2ZW50PU5vbmUpOiAgIyBEbyBub3QgcmVwbGFjZS4KKyAgICAgICAgJycnSWYgZW50cnkgaXMgdmFsaWQsIGJpbmQgaXQgdG8gJ3Jlc3VsdCcgYW5kIGRlc3Ryb3kgdGsgd2lkZ2V0LgorCisgICAgICAgIE90aGVyd2lzZSBsZWF2ZSBkaWFsb2cgb3BlbiBmb3IgdXNlciB0byBjb3JyZWN0IGVudHJ5IG9yIGNhbmNlbC4KKyAgICAgICAgJycnCisgICAgICAgIGVudHJ5ID0gc2VsZi5lbnRyeV9vaygpCisgICAgICAgIGlmIGVudHJ5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5yZXN1bHQgPSBlbnRyeQorICAgICAgICAgICAgc2VsZi5kZXN0cm95KCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgW09rXSBtb3ZlcyBmb2N1cy4gICg8UmV0dXJuPiBkb2VzIG5vdC4pICBNb3ZlIGl0IGJhY2suCisgICAgICAgICAgICBzZWxmLmVudHJ5LmZvY3VzX3NldCgpCisKKyAgICBkZWYgY2FuY2VsKHNlbGYsIGV2ZW50PU5vbmUpOiAgIyBEbyBub3QgcmVwbGFjZS4KKyAgICAgICAgIlNldCBkaWFsb2cgcmVzdWx0IHRvIE5vbmUgYW5kIGRlc3Ryb3kgdGsgd2lkZ2V0LiIKKyAgICAgICAgc2VsZi5yZXN1bHQgPSBOb25lCisgICAgICAgIHNlbGYuZGVzdHJveSgpCisKKworY2xhc3MgU2VjdGlvbk5hbWUoUXVlcnkpOgorICAgICJHZXQgYSBuYW1lIGZvciBhIGNvbmZpZyBmaWxlIHNlY3Rpb24gbmFtZS4iCisgICAgIyBVc2VkIGluIENvbmZpZ0RpYWxvZy5HZXROZXdLZXlzTmFtZSwgLkdldE5ld1RoZW1lTmFtZSAoODM3KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsIG1lc3NhZ2UsIHVzZWRfbmFtZXMsCisgICAgICAgICAgICAgICAgICosIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB1c2VkX25hbWVzPXVzZWRfbmFtZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBzZW5zaWJsZSBDb25maWdQYXJzZXIgc2VjdGlvbiBuYW1lIG9yIE5vbmUuIgorICAgICAgICBzZWxmLmVudHJ5X2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5lbnRyeS5nZXQoKS5zdHJpcCgpCisgICAgICAgIGlmIG5vdCBuYW1lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIG5hbWUgc3BlY2lmaWVkLicpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIGxlbihuYW1lKT4zMDoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCduYW1lIGlzIGxvbmdlciB0aGFuIDMwIGNoYXJhY3RlcnMuJykKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIGVsaWYgbmFtZSBpbiBzZWxmLnVzZWRfbmFtZXM6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcignbmFtZSBpcyBhbHJlYWR5IGluIHVzZS4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgcmV0dXJuIG5hbWUKKworCitjbGFzcyBNb2R1bGVOYW1lKFF1ZXJ5KToKKyAgICAiR2V0IGEgbW9kdWxlIG5hbWUgZm9yIE9wZW4gTW9kdWxlIG1lbnUgZW50cnkuIgorICAgICMgVXNlZCBpbiBvcGVuX21vZHVsZSAoZWRpdG9yLkVkaXRvcldpbmRvdyB1bnRpbCBtb3ZlIHRvIGlvYmluZGluZykuCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50LCB0aXRsZSwgbWVzc2FnZSwgdGV4dDAsCisgICAgICAgICAgICAgICAgICosIF9odGVzdD1GYWxzZSwgX3V0ZXN0PUZhbHNlKToKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXyhwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MD10ZXh0MCwKKyAgICAgICAgICAgICAgICAgICAgICAgX2h0ZXN0PV9odGVzdCwgX3V0ZXN0PV91dGVzdCkKKworICAgIGRlZiBlbnRyeV9vayhzZWxmKToKKyAgICAgICAgIlJldHVybiBlbnRlcmVkIG1vZHVsZSBuYW1lIGFzIGZpbGUgcGF0aCBvciBOb25lLiIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgbmFtZSA9IHNlbGYuZW50cnkuZ2V0KCkuc3RyaXAoKQorICAgICAgICBpZiBub3QgbmFtZToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdubyBuYW1lIHNwZWNpZmllZC4nKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIyBYWFggT3VnaHQgdG8gaW5zZXJ0IGN1cnJlbnQgZmlsZSdzIGRpcmVjdG9yeSBpbiBmcm9udCBvZiBwYXRoLgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzcGVjID0gaW1wb3J0bGliLnV0aWwuZmluZF9zcGVjKG5hbWUpCisgICAgICAgIGV4Y2VwdCAoVmFsdWVFcnJvciwgSW1wb3J0RXJyb3IpIGFzIG1zZzoKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKHN0cihtc2cpKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgc3BlYyBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoIm1vZHVsZSBub3QgZm91bmQiKQorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uoc3BlYy5sb2FkZXIsIGltcG9ydGxpYi5hYmMuU291cmNlTG9hZGVyKToKKyAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCJub3QgYSBzb3VyY2UtYmFzZWQgbW9kdWxlIikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGZpbGVfcGF0aCA9IHNwZWMubG9hZGVyLmdldF9maWxlbmFtZShuYW1lKQorICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICBzZWxmLnNob3dlcnJvcigibG9hZGVyIGRvZXMgbm90IHN1cHBvcnQgZ2V0X2ZpbGVuYW1lIiwKKyAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQ9c2VsZikKKyAgICAgICAgICAgIHJldHVybiBOb25lCisgICAgICAgIHJldHVybiBmaWxlX3BhdGgKKworCitjbGFzcyBIZWxwU291cmNlKFF1ZXJ5KToKKyAgICAiR2V0IG1lbnUgbmFtZSBhbmQgaGVscCBzb3VyY2UgZm9yIEhlbHAgbWVudS4iCisgICAgIyBVc2VkIGluIENvbmZpZ0RpYWxvZy5IZWxwTGlzdEl0ZW1BZGQvRWRpdCwgKDk0MS85KQorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhcmVudCwgdGl0bGUsICosIG1lbnVpdGVtPScnLCBmaWxlcGF0aD0nJywKKyAgICAgICAgICAgICAgICAgdXNlZF9uYW1lcz17fSwgX2h0ZXN0PUZhbHNlLCBfdXRlc3Q9RmFsc2UpOgorICAgICAgICAiIiJHZXQgbWVudSBlbnRyeSBhbmQgdXJsL2xvY2FsIGZpbGUgZm9yIEFkZGl0aW9uYWwgSGVscC4KKworICAgICAgICBVc2VyIGVudGVycyBhIG5hbWUgZm9yIHRoZSBIZWxwIHJlc291cmNlIGFuZCBhIHdlYiB1cmwgb3IgZmlsZQorICAgICAgICBuYW1lLiBUaGUgdXNlciBjYW4gYnJvd3NlIGZvciB0aGUgZmlsZS4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYuZmlsZXBhdGggPSBmaWxlcGF0aAorICAgICAgICBtZXNzYWdlID0gJ05hbWUgZm9yIGl0ZW0gb24gSGVscCBtZW51OicKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygKKyAgICAgICAgICAgICAgICBwYXJlbnQsIHRpdGxlLCBtZXNzYWdlLCB0ZXh0MD1tZW51aXRlbSwKKyAgICAgICAgICAgICAgICB1c2VkX25hbWVzPXVzZWRfbmFtZXMsIF9odGVzdD1faHRlc3QsIF91dGVzdD1fdXRlc3QpCisKKyAgICBkZWYgY3JlYXRlX3dpZGdldHMoc2VsZik6CisgICAgICAgIHN1cGVyKCkuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBmcmFtZSA9IHNlbGYuZnJhbWUKKyAgICAgICAgcGF0aGxhYmVsID0gTGFiZWwoZnJhbWUsIGFuY2hvcj0ndycsIGp1c3RpZnk9J2xlZnQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICB0ZXh0PSdIZWxwIEZpbGUgUGF0aDogRW50ZXIgVVJMIG9yIGJyb3dzZSBmb3IgZmlsZScpCisgICAgICAgIHNlbGYucGF0aHZhciA9IFN0cmluZ1ZhcihzZWxmLCBzZWxmLmZpbGVwYXRoKQorICAgICAgICBzZWxmLnBhdGggPSBFbnRyeShmcmFtZSwgdGV4dHZhcmlhYmxlPXNlbGYucGF0aHZhciwgd2lkdGg9NDApCisgICAgICAgIGJyb3dzZSA9IEJ1dHRvbihmcmFtZSwgdGV4dD0nQnJvd3NlJywgd2lkdGg9OCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5icm93c2VfZmlsZSkKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yID0gTGFiZWwoZnJhbWUsIHRleHQ9JyAnLCBmb3JlZ3JvdW5kPSdyZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb250PXNlbGYuZXJyb3JfZm9udCkKKworICAgICAgICBwYXRobGFiZWwuZ3JpZChjb2x1bW49MCwgcm93PTEwLCBjb2x1bW5zcGFuPTMsIHBhZHg9NSwgcGFkeT1bMTAsMF0sCisgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XKQorICAgICAgICBzZWxmLnBhdGguZ3JpZChjb2x1bW49MCwgcm93PTExLCBjb2x1bW5zcGFuPTIsIHBhZHg9NSwgc3RpY2t5PVcrRSwKKyAgICAgICAgICAgICAgICAgICAgICAgcGFkeT1bMTAsMF0pCisgICAgICAgIGJyb3dzZS5ncmlkKGNvbHVtbj0yLCByb3c9MTEsIHBhZHg9NSwgc3RpY2t5PVcrUykKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yLmdyaWQoY29sdW1uPTAsIHJvdz0xMiwgY29sdW1uc3Bhbj0zLCBwYWR4PTUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0aWNreT1XK0UpCisKKyAgICBkZWYgYXNrZmlsZW5hbWUoc2VsZiwgZmlsZXR5cGVzLCBpbml0ZGlyLCBpbml0ZmlsZSk6ICAjIGh0ZXN0ICMKKyAgICAgICAgIyBFeHRyYWN0ZWQgZnJvbSBicm93c2VfZmlsZSBzbyBjYW4gbW9jayBmb3IgdW5pdHRlc3RzLgorICAgICAgICAjIENhbm5vdCB1bml0dGVzdCBhcyBjYW5ub3Qgc2ltdWxhdGUgYnV0dG9uIGNsaWNrcy4KKyAgICAgICAgIyBUZXN0IGJ5IHJ1bm5pbmcgaHRlc3QsIHN1Y2ggYXMgYnkgcnVubmluZyB0aGlzIGZpbGUuCisgICAgICAgIHJldHVybiBmaWxlZGlhbG9nLk9wZW4ocGFyZW50PXNlbGYsIGZpbGV0eXBlcz1maWxldHlwZXMpXAorICAgICAgICAgICAgICAgLnNob3coaW5pdGlhbGRpcj1pbml0ZGlyLCBpbml0aWFsZmlsZT1pbml0ZmlsZSkKKworICAgIGRlZiBicm93c2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZXR5cGVzID0gWworICAgICAgICAgICAgKCJIVE1MIEZpbGVzIiwgIiouaHRtICouaHRtbCIsICJURVhUIiksCisgICAgICAgICAgICAoIlBERiBGaWxlcyIsICIqLnBkZiIsICJURVhUIiksCisgICAgICAgICAgICAoIldpbmRvd3MgSGVscCBGaWxlcyIsICIqLmNobSIpLAorICAgICAgICAgICAgKCJUZXh0IEZpbGVzIiwgIioudHh0IiwgIlRFWFQiKSwKKyAgICAgICAgICAgICgiQWxsIEZpbGVzIiwgIioiKV0KKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aHZhci5nZXQoKQorICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgZGlyLCBiYXNlID0gb3MucGF0aC5zcGxpdChwYXRoKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgYmFzZSA9IE5vbmUKKyAgICAgICAgICAgIGlmIHBsYXRmb3JtWzozXSA9PSAnd2luJzoKKyAgICAgICAgICAgICAgICBkaXIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGV4ZWN1dGFibGUpLCAnRG9jJykKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2RpcihkaXIpOgorICAgICAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXIgPSBvcy5nZXRjd2QoKQorICAgICAgICBmaWxlID0gc2VsZi5hc2tmaWxlbmFtZShmaWxldHlwZXMsIGRpciwgYmFzZSkKKyAgICAgICAgaWYgZmlsZToKKyAgICAgICAgICAgIHNlbGYucGF0aHZhci5zZXQoZmlsZSkKKworICAgIGl0ZW1fb2sgPSBTZWN0aW9uTmFtZS5lbnRyeV9vayAgIyBsb2NhbGl6ZSBmb3IgdGVzdCBvdmVycmlkZQorCisgICAgZGVmIHBhdGhfb2soc2VsZik6CisgICAgICAgICJTaW1wbGUgdmFsaWRpdHkgY2hlY2sgZm9yIG1lbnUgZmlsZSBwYXRoIgorICAgICAgICBwYXRoID0gc2VsZi5wYXRoLmdldCgpLnN0cmlwKCkKKyAgICAgICAgaWYgbm90IHBhdGg6ICNubyBwYXRoIHNwZWNpZmllZAorICAgICAgICAgICAgc2VsZi5zaG93ZXJyb3IoJ25vIGhlbHAgZmlsZSBwYXRoIHNwZWNpZmllZC4nLCBzZWxmLnBhdGhfZXJyb3IpCisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICBlbGlmIG5vdCBwYXRoLnN0YXJ0c3dpdGgoKCd3d3cuJywgJ2h0dHAnKSk6CisgICAgICAgICAgICBpZiBwYXRoWzo1XSA9PSAnZmlsZTonOgorICAgICAgICAgICAgICAgIHBhdGggPSBwYXRoWzU6XQorICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHBhdGgpOgorICAgICAgICAgICAgICAgIHNlbGYuc2hvd2Vycm9yKCdoZWxwIGZpbGUgcGF0aCBkb2VzIG5vdCBleGlzdC4nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGF0aF9lcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgaWYgcGxhdGZvcm0gPT0gJ2Rhcndpbic6ICAjIGZvciBNYWMgU2FmYXJpCisgICAgICAgICAgICAgICAgcGF0aCA9ICAiZmlsZTovLyIgKyBwYXRoCisgICAgICAgIHJldHVybiBwYXRoCisKKyAgICBkZWYgZW50cnlfb2soc2VsZik6CisgICAgICAgICJSZXR1cm4gYXBwYXJlbnRseSB2YWxpZCAobmFtZSwgcGF0aCkgb3IgTm9uZSIKKyAgICAgICAgc2VsZi5lbnRyeV9lcnJvclsndGV4dCddID0gJycKKyAgICAgICAgc2VsZi5wYXRoX2Vycm9yWyd0ZXh0J10gPSAnJworICAgICAgICBuYW1lID0gc2VsZi5pdGVtX29rKCkKKyAgICAgICAgcGF0aCA9IHNlbGYucGF0aF9vaygpCisgICAgICAgIHJldHVybiBOb25lIGlmIG5hbWUgaXMgTm9uZSBvciBwYXRoIGlzIE5vbmUgZWxzZSAobmFtZSwgcGF0aCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIGltcG9ydCB1bml0dGVzdAorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfcXVlcnknLCB2ZXJib3NpdHk9MiwgZXhpdD1GYWxzZSkKKworICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgorICAgIHJ1bihRdWVyeSwgSGVscFNvdXJjZSkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkgYi9MaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1dpZGdldFJlZGlyZWN0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JlZGlyZWN0b3IucHkKaW5kZXggYjY2YmU5ZS4uZWM2ODFkZSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2lkZ2V0UmVkaXJlY3Rvci5weQorKysgYi9MaWIvaWRsZWxpYi9yZWRpcmVjdG9yLnB5CkBAIC0xMDQsNyArMTA0LDcgQEAKIAogICAgICAgICBOb3RlIHRoYXQgaWYgYSByZWdpc3RlcmVkIGZ1bmN0aW9uIGlzIGNhbGxlZCwgdGhlIG9wZXJhdGlvbiBpcyBub3QKICAgICAgICAgcGFzc2VkIHRocm91Z2ggdG8gVGsuICBBcHBseSB0aGUgZnVuY3Rpb24gcmV0dXJuZWQgYnkgc2VsZi5yZWdpc3RlcigpCi0gICAgICAgIHRvICphcmdzIHRvIGFjY29tcGxpc2ggdGhhdC4gIEZvciBhbiBleGFtcGxlLCBzZWUgQ29sb3JEZWxlZ2F0b3IucHkuCisgICAgICAgIHRvICphcmdzIHRvIGFjY29tcGxpc2ggdGhhdC4gIEZvciBhbiBleGFtcGxlLCBzZWUgY29sb3JpemVyLnB5LgogCiAgICAgICAgICcnJwogICAgICAgICBtID0gc2VsZi5fb3BlcmF0aW9ucy5nZXQob3BlcmF0aW9uKQpAQCAtMTUxLDE0ICsxNTEsMTMgQEAKIAogCiBkZWYgX3dpZGdldF9yZWRpcmVjdG9yKHBhcmVudCk6ICAjIGh0ZXN0ICMKLSAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRrLCBUZXh0Ci0gICAgaW1wb3J0IHJlCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAogCi0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFdpZGdldFJlZGlyZWN0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICB0ZXh0ID0gVGV4dChyb290KQorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB0b3AudGl0bGUoIlRlc3QgV2lkZ2V0UmVkaXJlY3RvciIpCisgICAgeCwgeSA9IG1hcChpbnQsIHBhcmVudC5nZW9tZXRyeSgpLnNwbGl0KCcrJylbMTpdKQorICAgIHRvcC5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKKyAgICB0ZXh0ID0gVGV4dCh0b3ApCiAgICAgdGV4dC5wYWNrKCkKICAgICB0ZXh0LmZvY3VzX3NldCgpCiAgICAgcmVkaXIgPSBXaWRnZXRSZWRpcmVjdG9yKHRleHQpCkBAIC0xNjYsMTEgKzE2NSwxMSBAQAogICAgICAgICBwcmludCgiaW5zZXJ0IiwgYXJncykKICAgICAgICAgb3JpZ2luYWxfaW5zZXJ0KCphcmdzKQogICAgIG9yaWdpbmFsX2luc2VydCA9IHJlZGlyLnJlZ2lzdGVyKCJpbnNlcnQiLCBteV9pbnNlcnQpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF93aWRnZXRyZWRpcicsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZWRpcmVjdG9yJywKICAgICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF93aWRnZXRfcmVkaXJlY3RvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkgYi9MaWIvaWRsZWxpYi9yZXBsYWNlLnB5CnNpbWlsYXJpdHkgaW5kZXggOTMlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1JlcGxhY2VEaWFsb2cucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3JlcGxhY2UucHkKaW5kZXggZjJlYTIyZS4uYWJkOWU1OSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvUmVwbGFjZURpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9yZXBsYWNlLnB5CkBAIC0zLDE4ICszLDE4IEBACiBEZWZpbmVzIHZhcmlvdXMgcmVwbGFjZSByZWxhdGVkIGZ1bmN0aW9ucyBsaWtlIHJlcGxhY2UsIHJlcGxhY2UgYWxsLAogcmVwbGFjZStmaW5kLgogIiIiCi1mcm9tIHRraW50ZXIgaW1wb3J0ICoKLQotZnJvbSBpZGxlbGliIGltcG9ydCBTZWFyY2hFbmdpbmUKLWZyb20gaWRsZWxpYi5TZWFyY2hEaWFsb2dCYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCiBpbXBvcnQgcmUKIAorZnJvbSB0a2ludGVyIGltcG9ydCBTdHJpbmdWYXIsIFRjbEVycm9yCisKK2Zyb20gaWRsZWxpYi5zZWFyY2hiYXNlIGltcG9ydCBTZWFyY2hEaWFsb2dCYXNlCitmcm9tIGlkbGVsaWIgaW1wb3J0IHNlYXJjaGVuZ2luZQogCiBkZWYgcmVwbGFjZSh0ZXh0KToKICAgICAiIiJSZXR1cm5zIGEgc2luZ2xldG9uIFJlcGxhY2VEaWFsb2cgaW5zdGFuY2UuVGhlIHNpbmdsZSBkaWFsb2cKICAgICAgc2F2ZXMgdXNlciBlbnRyaWVzIGFuZCBwcmVmZXJlbmNlcyBhY3Jvc3MgaW5zdGFuY2VzLiIiIgogICAgIHJvb3QgPSB0ZXh0Ll9yb290KCkKLSAgICBlbmdpbmUgPSBTZWFyY2hFbmdpbmUuZ2V0KHJvb3QpCisgICAgZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChyb290KQogICAgIGlmIG5vdCBoYXNhdHRyKGVuZ2luZSwgIl9yZXBsYWNlZGlhbG9nIik6CiAgICAgICAgIGVuZ2luZS5fcmVwbGFjZWRpYWxvZyA9IFJlcGxhY2VEaWFsb2cocm9vdCwgZW5naW5lKQogICAgIGRpYWxvZyA9IGVuZ2luZS5fcmVwbGFjZWRpYWxvZwpAQCAtOTUsNyArOTUsNyBAQAogICAgICAgICB0ZXh0ID0gc2VsZi50ZXh0CiAgICAgICAgIHJlcyA9IHNlbGYuZW5naW5lLnNlYXJjaF90ZXh0KHRleHQsIHByb2cpCiAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICB0ZXh0LmJlbGwoKQorICAgICAgICAgICAgc2VsZi5iZWxsKCkKICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0ZXh0LnRhZ19yZW1vdmUoInNlbCIsICIxLjAiLCAiZW5kIikKICAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCJoaXQiLCAiMS4wIiwgImVuZCIpCkBAIC0xNDIsNyArMTQyLDcgQEAKICAgICAgICAgdGV4dCA9IHNlbGYudGV4dAogICAgICAgICByZXMgPSBzZWxmLmVuZ2luZS5zZWFyY2hfdGV4dCh0ZXh0LCBOb25lLCBvaykKICAgICAgICAgaWYgbm90IHJlczoKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGxpbmUsIG0gPSByZXMKICAgICAgICAgaSwgaiA9IG0uc3BhbigpCkBAIC0xNjQsNyArMTY0LDcgQEAKICAgICAgICAgICAgIHBvcyA9IE5vbmUKICAgICAgICAgaWYgbm90IHBvczoKICAgICAgICAgICAgIGZpcnN0ID0gbGFzdCA9IHBvcyA9IHRleHQuaW5kZXgoImluc2VydCIpCi0gICAgICAgIGxpbmUsIGNvbCA9IFNlYXJjaEVuZ2luZS5nZXRfbGluZV9jb2wocG9zKQorICAgICAgICBsaW5lLCBjb2wgPSBzZWFyY2hlbmdpbmUuZ2V0X2xpbmVfY29sKHBvcykKICAgICAgICAgY2hhcnMgPSB0ZXh0LmdldCgiJWQuMCIgJSBsaW5lLCAiJWQuMCIgJSAobGluZSsxKSkKICAgICAgICAgbSA9IHByb2cubWF0Y2goY2hhcnMsIGNvbCkKICAgICAgICAgaWYgbm90IHByb2c6CkBAIC0yMDQsMTEgKzIwNCwxMyBAQAogCiAKIGRlZiBfcmVwbGFjZV9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgICIiImh0ZXN0IHdyYXBwZXIgZnVuY3Rpb24iIiIKKyAgICBmcm9tIHRraW50ZXIgaW1wb3J0IFRvcGxldmVsLCBUZXh0LCBFTkQsIFNFTAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorCiAgICAgYm94ID0gVG9wbGV2ZWwocGFyZW50KQogICAgIGJveC50aXRsZSgiVGVzdCBSZXBsYWNlRGlhbG9nIikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgYm94Lmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQogCiAgICAgIyBtb2NrIHVuZG8gZGVsZWdhdG9yIG1ldGhvZHMKICAgICBkZWYgdW5kb19ibG9ja19zdGFydCgpOgpAQCAtMjM0LDcgKzIzNiw3IEBACiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9yZXBsYWNlZGlhbG9nJywKKyAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3JlcGxhY2UnLAogICAgICAgICAgICAgICAgIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQogCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ycGMucHkgYi9MaWIvaWRsZWxpYi9ycGMucHkKaW5kZXggNDgxMDVmMi4uOGY1N2VkYjggMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3JwYy5weQorKysgYi9MaWIvaWRsZWxpYi9ycGMucHkKQEAgLTI2LDIzICsyNiwyMSBAQAogYWNjb21wbGlzaGVkIGluIElkbGUuCiAKICIiIgotCi1pbXBvcnQgc3lzCi1pbXBvcnQgb3MKK2ltcG9ydCBidWlsdGlucworaW1wb3J0IGNvcHlyZWcKIGltcG9ydCBpbwotaW1wb3J0IHNvY2tldAoraW1wb3J0IG1hcnNoYWwKK2ltcG9ydCBvcworaW1wb3J0IHBpY2tsZQoraW1wb3J0IHF1ZXVlCiBpbXBvcnQgc2VsZWN0CitpbXBvcnQgc29ja2V0CiBpbXBvcnQgc29ja2V0c2VydmVyCiBpbXBvcnQgc3RydWN0Ci1pbXBvcnQgcGlja2xlCitpbXBvcnQgc3lzCiBpbXBvcnQgdGhyZWFkaW5nCi1pbXBvcnQgcXVldWUKIGltcG9ydCB0cmFjZWJhY2sKLWltcG9ydCBjb3B5cmVnCiBpbXBvcnQgdHlwZXMKLWltcG9ydCBtYXJzaGFsCi1pbXBvcnQgYnVpbHRpbnMKLQogCiBkZWYgdW5waWNrbGVfY29kZShtcyk6CiAgICAgY28gPSBtYXJzaGFsLmxvYWRzKG1zKQpAQCAtNjAsMTAgKzU4LDEyIEBACiAgICAgcC5kdW1wKG9iaikKICAgICByZXR1cm4gZi5nZXR2YWx1ZSgpCiAKKwogY2xhc3MgQ29kZVBpY2tsZXIocGlja2xlLlBpY2tsZXIpOgogICAgIGRpc3BhdGNoX3RhYmxlID0ge3R5cGVzLkNvZGVUeXBlOiBwaWNrbGVfY29kZX0KICAgICBkaXNwYXRjaF90YWJsZS51cGRhdGUoY29weXJlZy5kaXNwYXRjaF90YWJsZSkKIAorCiBCVUZTSVpFID0gOCoxMDI0CiBMT0NBTEhPU1QgPSAnMTI3LjAuMC4xJwogCkBAIC00ODcsMTYgKzQ4NywxOSBAQAogICAgICMgVG9rZW4gbWl4LWluIGNsYXNzCiAgICAgcGFzcwogCisKIGRlZiByZW1vdGVyZWYob2JqKToKICAgICBvaWQgPSBpZChvYmopCiAgICAgb2JqZWN0dGFibGVbb2lkXSA9IG9iagogICAgIHJldHVybiBSZW1vdGVQcm94eShvaWQpCiAKKwogY2xhc3MgUmVtb3RlUHJveHkob2JqZWN0KToKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBvaWQpOgogICAgICAgICBzZWxmLm9pZCA9IG9pZAogCisKIGNsYXNzIFJQQ0hhbmRsZXIoc29ja2V0c2VydmVyLkJhc2VSZXF1ZXN0SGFuZGxlciwgU29ja2V0SU8pOgogCiAgICAgZGVidWdnaW5nID0gRmFsc2UKQEAgLTUxNCw2ICs1MTcsNyBAQAogICAgIGRlZiBnZXRfcmVtb3RlX3Byb3h5KHNlbGYsIG9pZCk6CiAgICAgICAgIHJldHVybiBSUENQcm94eShzZWxmLCBvaWQpCiAKKwogY2xhc3MgUlBDQ2xpZW50KFNvY2tldElPKToKIAogICAgIGRlYnVnZ2luZyA9IEZhbHNlCkBAIC01MzksNiArNTQzLDcgQEAKICAgICBkZWYgZ2V0X3JlbW90ZV9wcm94eShzZWxmLCBvaWQpOgogICAgICAgICByZXR1cm4gUlBDUHJveHkoc2VsZiwgb2lkKQogCisKIGNsYXNzIFJQQ1Byb3h5KG9iamVjdCk6CiAKICAgICBfX21ldGhvZHMgPSBOb25lCkBAIC01ODcsNiArNTkyLDcgQEAKICAgICAgICAgaWYgbm90IGNhbGxhYmxlKGF0dHIpOgogICAgICAgICAgICAgYXR0cmlidXRlc1tuYW1lXSA9IDEKIAorCiBjbGFzcyBNZXRob2RQcm94eShvYmplY3QpOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNvY2tpbywgb2lkLCBuYW1lKToKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1JzdHJpcEV4dGVuc2lvbi5weSBiL0xpYi9pZGxlbGliL3JzdHJpcC5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvUnN0cmlwRXh0ZW5zaW9uLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9yc3RyaXAucHkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3J1bi5weSBiL0xpYi9pZGxlbGliL3J1bi5weQppbmRleCAyOGNlNDIwLi5hZmE5NzQ0IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9ydW4ucHkKKysrIGIvTGliL2lkbGVsaWIvcnVuLnB5CkBAIC0xLDMzICsxLDQ1IEBACi1pbXBvcnQgc3lzCitpbXBvcnQgaW8KIGltcG9ydCBsaW5lY2FjaGUKK2ltcG9ydCBxdWV1ZQoraW1wb3J0IHN5cwogaW1wb3J0IHRpbWUKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBfdGhyZWFkIGFzIHRocmVhZAogaW1wb3J0IHRocmVhZGluZwotaW1wb3J0IHF1ZXVlCi1pbXBvcnQgdGtpbnRlcgoraW1wb3J0IHdhcm5pbmdzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgQ2FsbFRpcHMKLWZyb20gaWRsZWxpYiBpbXBvcnQgQXV0b0NvbXBsZXRlCitpbXBvcnQgdGtpbnRlciAgIyBUY2wsIGRlbGV0aW9ucywgbWVzc2FnZWJveCBpZiBzdGFydHVwIGZhaWxzCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlRGVidWdnZXIKLWZyb20gaWRsZWxpYiBpbXBvcnQgUmVtb3RlT2JqZWN0QnJvd3NlcgotZnJvbSBpZGxlbGliIGltcG9ydCBTdGFja1ZpZXdlcgotZnJvbSBpZGxlbGliIGltcG9ydCBycGMKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAotZnJvbSBpZGxlbGliIGltcG9ydCBJT0JpbmRpbmcKLQorZnJvbSBpZGxlbGliIGltcG9ydCBhdXRvY29tcGxldGUgICMgQXV0b0NvbXBsZXRlLCBmZXRjaF9lbmNvZGluZ3MKK2Zyb20gaWRsZWxpYiBpbXBvcnQgY2FsbHRpcHMgICMgQ2FsbFRpcHMKK2Zyb20gaWRsZWxpYiBpbXBvcnQgZGVidWdnZXJfciAgIyBzdGFydF9kZWJ1Z2dlcgorZnJvbSBpZGxlbGliIGltcG9ydCBkZWJ1Z29ial9yICAjIHJlbW90ZV9vYmplY3RfdHJlZV9pdGVtCitmcm9tIGlkbGVsaWIgaW1wb3J0IGlvbWVudSAgIyBlbmNvZGluZworZnJvbSBpZGxlbGliIGltcG9ydCBycGMgICMgbXVsdGlwbGUgb2JqZWN0cworZnJvbSBpZGxlbGliIGltcG9ydCBzdGFja3ZpZXdlciAgIyBTdGFja1RyZWVJdGVtCiBpbXBvcnQgX19tYWluX18KIAogZm9yIG1vZCBpbiAoJ3NpbXBsZWRpYWxvZycsICdtZXNzYWdlYm94JywgJ2ZvbnQnLAogICAgICAgICAgICAgJ2RpYWxvZycsICdmaWxlZGlhbG9nJywgJ2NvbW1vbmRpYWxvZycsCi0gICAgICAgICAgICAnY29sb3JjaG9vc2VyJyk6CisgICAgICAgICAgICAndHRrJyk6CiAgICAgZGVsYXR0cih0a2ludGVyLCBtb2QpCiAgICAgZGVsIHN5cy5tb2R1bGVzWyd0a2ludGVyLicgKyBtb2RdCiAKIExPQ0FMSE9TVCA9ICcxMjcuMC4wLjEnCiAKLWltcG9ydCB3YXJuaW5ncworCitkZWYgaWRsZV9mb3JtYXR3YXJuaW5nKG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBsaW5lPU5vbmUpOgorICAgICIiIkZvcm1hdCB3YXJuaW5ncyB0aGUgSURMRSB3YXkuIiIiCisKKyAgICBzID0gIlxuV2FybmluZyAoZnJvbSB3YXJuaW5ncyBtb2R1bGUpOlxuIgorICAgIHMgKz0gJyAgRmlsZSBcIiVzXCIsIGxpbmUgJXNcbicgJSAoZmlsZW5hbWUsIGxpbmVubykKKyAgICBpZiBsaW5lIGlzIE5vbmU6CisgICAgICAgIGxpbmUgPSBsaW5lY2FjaGUuZ2V0bGluZShmaWxlbmFtZSwgbGluZW5vKQorICAgIGxpbmUgPSBsaW5lLnN0cmlwKCkKKyAgICBpZiBsaW5lOgorICAgICAgICBzICs9ICIgICAgJXNcbiIgJSBsaW5lCisgICAgcyArPSAiJXM6ICVzXG4iICUgKGNhdGVnb3J5Ll9fbmFtZV9fLCBtZXNzYWdlKQorICAgIHJldHVybiBzCiAKIGRlZiBpZGxlX3Nob3d3YXJuaW5nX3N1YnByb2MoCiAgICAgICAgIG1lc3NhZ2UsIGNhdGVnb3J5LCBmaWxlbmFtZSwgbGluZW5vLCBmaWxlPU5vbmUsIGxpbmU9Tm9uZSk6CkBAIC0zOCw3ICs1MCw3IEBACiAgICAgaWYgZmlsZSBpcyBOb25lOgogICAgICAgICBmaWxlID0gc3lzLnN0ZGVycgogICAgIHRyeToKLSAgICAgICAgZmlsZS53cml0ZShQeVNoZWxsLmlkbGVfZm9ybWF0d2FybmluZygKKyAgICAgICAgZmlsZS53cml0ZShpZGxlX2Zvcm1hdHdhcm5pbmcoCiAgICAgICAgICAgICAgICAgbWVzc2FnZSwgY2F0ZWdvcnksIGZpbGVuYW1lLCBsaW5lbm8sIGxpbmUpKQogICAgIGV4Y2VwdCBJT0Vycm9yOgogICAgICAgICBwYXNzICMgdGhlIGZpbGUgKHByb2JhYmx5IHN0ZGVycikgaXMgaW52YWxpZCAtIHRoaXMgd2FybmluZyBnZXRzIGxvc3QuCkBAIC04OCw3ICsxMDAsNyBAQAogICAgIE15SGFuZGxlciBvYmplY3QuICBUaGF0IHJlZmVyZW5jZSBpcyBzYXZlZCBhcyBhdHRyaWJ1dGUgcnBjaGFuZGxlciBvZiB0aGUKICAgICBFeGVjdXRpdmUgaW5zdGFuY2UuICBUaGUgRXhlY3V0aXZlIG1ldGhvZHMgaGF2ZSBhY2Nlc3MgdG8gdGhlIHJlZmVyZW5jZSBhbmQKICAgICBjYW4gcGFzcyBpdCBvbiB0byBlbnRpdGllcyB0aGF0IHRoZXkgY29tbWFuZAotICAgIChlLmcuIFJlbW90ZURlYnVnZ2VyLkRlYnVnZ2VyLnN0YXJ0X2RlYnVnZ2VyKCkpLiAgVGhlIGxhdHRlciwgaW4gdHVybiwgY2FuCisgICAgKGUuZy4gZGVidWdnZXJfci5EZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcigpKS4gIFRoZSBsYXR0ZXIsIGluIHR1cm4sIGNhbgogICAgIGNhbGwgTXlIYW5kbGVyKFNvY2tldElPKSByZWdpc3Rlci91bnJlZ2lzdGVyIG1ldGhvZHMgdmlhIHRoZSByZWZlcmVuY2UgdG8KICAgICByZWdpc3RlciBhbmQgdW5yZWdpc3RlciB0aGVtc2VsdmVzLgogCkBAIC0yMTAsNyArMjIyLDcgQEAKICAgICAgICAgICAgIHRiZSA9IHRyYWNlYmFjay5leHRyYWN0X3RiKHRiKQogICAgICAgICAgICAgcHJpbnQoJ1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTonLCBmaWxlPWVmaWxlKQogICAgICAgICAgICAgZXhjbHVkZSA9ICgicnVuLnB5IiwgInJwYy5weSIsICJ0aHJlYWRpbmcucHkiLCAicXVldWUucHkiLAotICAgICAgICAgICAgICAgICAgICAgICAiUmVtb3RlRGVidWdnZXIucHkiLCAiYmRiLnB5IikKKyAgICAgICAgICAgICAgICAgICAgICAgImRlYnVnZ2VyX3IucHkiLCAiYmRiLnB5IikKICAgICAgICAgICAgIGNsZWFudXBfdHJhY2ViYWNrKHRiZSwgZXhjbHVkZSkKICAgICAgICAgICAgIHRyYWNlYmFjay5wcmludF9saXN0KHRiZSwgZmlsZT1lZmlsZSkKICAgICAgICAgbGluZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4Y2VwdGlvbl9vbmx5KHR5cCwgZXhjKQpAQCAtMjY3LDYgKzI3OSw3IEBACiAgICAgY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkKICAgICBzeXMuZXhpdCgwKQogCisKIGNsYXNzIE15UlBDU2VydmVyKHJwYy5SUENTZXJ2ZXIpOgogCiAgICAgZGVmIGhhbmRsZV9lcnJvcihzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CkBAIC0yOTcsNiArMzEwLDk2IEBACiAgICAgICAgICAgICBxdWl0dGluZyA9IFRydWUKICAgICAgICAgICAgIHRocmVhZC5pbnRlcnJ1cHRfbWFpbigpCiAKKworIyBQc2V1ZG9maWxlcyBmb3Igc2hlbGwtcmVtb3RlIGNvbW11bmljYXRpb24gKGFsc28gdXNlZCBpbiBweXNoZWxsKQorCitjbGFzcyBQc2V1ZG9GaWxlKGlvLlRleHRJT0Jhc2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZz1Ob25lKToKKyAgICAgICAgc2VsZi5zaGVsbCA9IHNoZWxsCisgICAgICAgIHNlbGYudGFncyA9IHRhZ3MKKyAgICAgICAgc2VsZi5fZW5jb2RpbmcgPSBlbmNvZGluZworCisgICAgQHByb3BlcnR5CisgICAgZGVmIGVuY29kaW5nKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fZW5jb2RpbmcKKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBuYW1lKHNlbGYpOgorICAgICAgICByZXR1cm4gJzwlcz4nICUgc2VsZi50YWdzCisKKyAgICBkZWYgaXNhdHR5KHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisKK2NsYXNzIFBzZXVkb091dHB1dEZpbGUoUHNldWRvRmlsZSk6CisKKyAgICBkZWYgd3JpdGFibGUoc2VsZik6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgd3JpdGUoc2VsZiwgcyk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigid3JpdGUgdG8gY2xvc2VkIGZpbGUiKQorICAgICAgICBpZiB0eXBlKHMpIGlzIG5vdCBzdHI6CisgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShzLCBzdHIpOgorICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBzdHIsIG5vdCAnICsgdHlwZShzKS5fX25hbWVfXykKKyAgICAgICAgICAgICMgU2VlIGlzc3VlICMxOTQ4MQorICAgICAgICAgICAgcyA9IHN0ci5fX3N0cl9fKHMpCisgICAgICAgIHJldHVybiBzZWxmLnNoZWxsLndyaXRlKHMsIHNlbGYudGFncykKKworCitjbGFzcyBQc2V1ZG9JbnB1dEZpbGUoUHNldWRvRmlsZSk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgc2hlbGwsIHRhZ3MsIGVuY29kaW5nPU5vbmUpOgorICAgICAgICBQc2V1ZG9GaWxlLl9faW5pdF9fKHNlbGYsIHNoZWxsLCB0YWdzLCBlbmNvZGluZykKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJworCisgICAgZGVmIHJlYWRhYmxlKHNlbGYpOgorICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgZGVmIHJlYWQoc2VsZiwgc2l6ZT0tMSk6CisgICAgICAgIGlmIHNlbGYuY2xvc2VkOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigicmVhZCBmcm9tIGNsb3NlZCBmaWxlIikKKyAgICAgICAgaWYgc2l6ZSBpcyBOb25lOgorICAgICAgICAgICAgc2l6ZSA9IC0xCisgICAgICAgIGVsaWYgbm90IGlzaW5zdGFuY2Uoc2l6ZSwgaW50KToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignbXVzdCBiZSBpbnQsIG5vdCAnICsgdHlwZShzaXplKS5fX25hbWVfXykKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5fbGluZV9idWZmZXIKKyAgICAgICAgc2VsZi5fbGluZV9idWZmZXIgPSAnJworICAgICAgICBpZiBzaXplIDwgMDoKKyAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhaworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB3aGlsZSBsZW4ocmVzdWx0KSA8IHNpemU6CisgICAgICAgICAgICAgICAgbGluZSA9IHNlbGYuc2hlbGwucmVhZGxpbmUoKQorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lOiBicmVhaworICAgICAgICAgICAgICAgIHJlc3VsdCArPSBsaW5lCisgICAgICAgICAgICBzZWxmLl9saW5lX2J1ZmZlciA9IHJlc3VsdFtzaXplOl0KKyAgICAgICAgICAgIHJlc3VsdCA9IHJlc3VsdFs6c2l6ZV0KKyAgICAgICAgcmV0dXJuIHJlc3VsdAorCisgICAgZGVmIHJlYWRsaW5lKHNlbGYsIHNpemU9LTEpOgorICAgICAgICBpZiBzZWxmLmNsb3NlZDoKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoInJlYWQgZnJvbSBjbG9zZWQgZmlsZSIpCisgICAgICAgIGlmIHNpemUgaXMgTm9uZToKKyAgICAgICAgICAgIHNpemUgPSAtMQorICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHNpemUsIGludCk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ211c3QgYmUgaW50LCBub3QgJyArIHR5cGUoc2l6ZSkuX19uYW1lX18pCisgICAgICAgIGxpbmUgPSBzZWxmLl9saW5lX2J1ZmZlciBvciBzZWxmLnNoZWxsLnJlYWRsaW5lKCkKKyAgICAgICAgaWYgc2l6ZSA8IDA6CisgICAgICAgICAgICBzaXplID0gbGVuKGxpbmUpCisgICAgICAgIGVvbCA9IGxpbmUuZmluZCgnXG4nLCAwLCBzaXplKQorICAgICAgICBpZiBlb2wgPj0gMDoKKyAgICAgICAgICAgIHNpemUgPSBlb2wgKyAxCisgICAgICAgIHNlbGYuX2xpbmVfYnVmZmVyID0gbGluZVtzaXplOl0KKyAgICAgICAgcmV0dXJuIGxpbmVbOnNpemVdCisKKyAgICBkZWYgY2xvc2Uoc2VsZik6CisgICAgICAgIHNlbGYuc2hlbGwuY2xvc2UoKQorCisKIGNsYXNzIE15SGFuZGxlcihycGMuUlBDSGFuZGxlcik6CiAKICAgICBkZWYgaGFuZGxlKHNlbGYpOgpAQCAtMzA0LDEyICs0MDcsMTIgQEAKICAgICAgICAgZXhlY3V0aXZlID0gRXhlY3V0aXZlKHNlbGYpCiAgICAgICAgIHNlbGYucmVnaXN0ZXIoImV4ZWMiLCBleGVjdXRpdmUpCiAgICAgICAgIHNlbGYuY29uc29sZSA9IHNlbGYuZ2V0X3JlbW90ZV9wcm94eSgiY29uc29sZSIpCi0gICAgICAgIHN5cy5zdGRpbiA9IFB5U2hlbGwuUHNldWRvSW5wdXRGaWxlKHNlbGYuY29uc29sZSwgInN0ZGluIiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHN5cy5zdGRvdXQgPSBQeVNoZWxsLlBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3Rkb3V0IiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCi0gICAgICAgIHN5cy5zdGRlcnIgPSBQeVNoZWxsLlBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkZXJyIiwKLSAgICAgICAgICAgICAgICBJT0JpbmRpbmcuZW5jb2RpbmcpCisgICAgICAgIHN5cy5zdGRpbiA9IFBzZXVkb0lucHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRpbiIsCisgICAgICAgICAgICAgICAgaW9tZW51LmVuY29kaW5nKQorICAgICAgICBzeXMuc3Rkb3V0ID0gUHNldWRvT3V0cHV0RmlsZShzZWxmLmNvbnNvbGUsICJzdGRvdXQiLAorICAgICAgICAgICAgICAgIGlvbWVudS5lbmNvZGluZykKKyAgICAgICAgc3lzLnN0ZGVyciA9IFBzZXVkb091dHB1dEZpbGUoc2VsZi5jb25zb2xlLCAic3RkZXJyIiwKKyAgICAgICAgICAgICAgICBpb21lbnUuZW5jb2RpbmcpCiAKICAgICAgICAgc3lzLmRpc3BsYXlob29rID0gcnBjLmRpc3BsYXlob29rCiAgICAgICAgICMgcGFnZSBoZWxwKCkgdGV4dCB0byBzaGVsbC4KQEAgLTM0NSw4ICs0NDgsOCBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBycGNoYW5kbGVyKToKICAgICAgICAgc2VsZi5ycGNoYW5kbGVyID0gcnBjaGFuZGxlcgogICAgICAgICBzZWxmLmxvY2FscyA9IF9fbWFpbl9fLl9fZGljdF9fCi0gICAgICAgIHNlbGYuY2FsbHRpcCA9IENhbGxUaXBzLkNhbGxUaXBzKCkKLSAgICAgICAgc2VsZi5hdXRvY29tcGxldGUgPSBBdXRvQ29tcGxldGUuQXV0b0NvbXBsZXRlKCkKKyAgICAgICAgc2VsZi5jYWxsdGlwID0gY2FsbHRpcHMuQ2FsbFRpcHMoKQorICAgICAgICBzZWxmLmF1dG9jb21wbGV0ZSA9IGF1dG9jb21wbGV0ZS5BdXRvQ29tcGxldGUoKQogCiAgICAgZGVmIHJ1bmNvZGUoc2VsZiwgY29kZSk6CiAgICAgICAgIGdsb2JhbCBpbnRlcnJ1cHRhYmxlCkBAIC0zNzgsNyArNDgxLDcgQEAKICAgICAgICAgICAgIHRocmVhZC5pbnRlcnJ1cHRfbWFpbigpCiAKICAgICBkZWYgc3RhcnRfdGhlX2RlYnVnZ2VyKHNlbGYsIGd1aV9hZGFwX29pZCk6Ci0gICAgICAgIHJldHVybiBSZW1vdGVEZWJ1Z2dlci5zdGFydF9kZWJ1Z2dlcihzZWxmLnJwY2hhbmRsZXIsIGd1aV9hZGFwX29pZCkKKyAgICAgICAgcmV0dXJuIGRlYnVnZ2VyX3Iuc3RhcnRfZGVidWdnZXIoc2VsZi5ycGNoYW5kbGVyLCBndWlfYWRhcF9vaWQpCiAKICAgICBkZWYgc3RvcF90aGVfZGVidWdnZXIoc2VsZiwgaWRiX2FkYXBfb2lkKToKICAgICAgICAgIlVucmVnaXN0ZXIgdGhlIElkYiBBZGFwdGVyLiAgTGluayBvYmplY3RzIGFuZCBJZGIgdGhlbiBzdWJqZWN0IHRvIEdDIgpAQCAtNDAyLDcgKzUwNSw3IEBACiAgICAgICAgICAgICB0YiA9IHRiLnRiX25leHQKICAgICAgICAgc3lzLmxhc3RfdHlwZSA9IHR5cAogICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbAotICAgICAgICBpdGVtID0gU3RhY2tWaWV3ZXIuU3RhY2tUcmVlSXRlbShmbGlzdCwgdGIpCi0gICAgICAgIHJldHVybiBSZW1vdGVPYmplY3RCcm93c2VyLnJlbW90ZV9vYmplY3RfdHJlZV9pdGVtKGl0ZW0pCisgICAgICAgIGl0ZW0gPSBzdGFja3ZpZXdlci5TdGFja1RyZWVJdGVtKGZsaXN0LCB0YikKKyAgICAgICAgcmV0dXJuIGRlYnVnb2JqX3IucmVtb3RlX29iamVjdF90cmVlX2l0ZW0oaXRlbSkKIAogY2FwdHVyZV93YXJuaW5ncyhGYWxzZSkgICMgTWFrZSBzdXJlIHR1cm5lZCBvZmY7IHNlZSBpc3N1ZSAxODA4MQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weSBiL0xpYi9pZGxlbGliL3J1bnNjcmlwdC5weQpzaW1pbGFyaXR5IGluZGV4IDk1JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TY3JpcHRCaW5kaW5nLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKaW5kZXggNWNiODE4ZC4uNzlkODZhZCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU2NyaXB0QmluZGluZy5weQorKysgYi9MaWIvaWRsZWxpYi9ydW5zY3JpcHQucHkKQEAgLTIwLDExICsyMCwxMiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgdGFibmFubnkKIGltcG9ydCB0b2tlbml6ZQotaW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKLWZyb20gaWRsZWxpYiBpbXBvcnQgUHlTaGVsbAogCi1mcm9tIGlkbGVsaWIuY29uZmlnSGFuZGxlciBpbXBvcnQgaWRsZUNvbmYKLWZyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4U3VwcG9ydAoraW1wb3J0IHRraW50ZXIubWVzc2FnZWJveCBhcyB0a01lc3NhZ2VCb3gKKworZnJvbSBpZGxlbGliLmNvbmZpZyBpbXBvcnQgaWRsZUNvbmYKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4Citmcm9tIGlkbGVsaWIgaW1wb3J0IHB5c2hlbGwKIAogaW5kZW50X21lc3NhZ2UgPSAiIiJFcnJvcjogSW5jb25zaXN0ZW50IGluZGVudGF0aW9uIGRldGVjdGVkIQogCkBAIC00NiwxMiArNDcsMTIgQEAKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBlZGl0d2luKToKICAgICAgICAgc2VsZi5lZGl0d2luID0gZWRpdHdpbgotICAgICAgICAjIFByb3ZpZGUgaW5zdGFuY2UgdmFyaWFibGVzIHJlZmVyZW5jZWQgYnkgRGVidWdnZXIKKyAgICAgICAgIyBQcm92aWRlIGluc3RhbmNlIHZhcmlhYmxlcyByZWZlcmVuY2VkIGJ5IGRlYnVnZ2VyCiAgICAgICAgICMgWFhYIFRoaXMgc2hvdWxkIGJlIGRvbmUgZGlmZmVyZW50bHkKICAgICAgICAgc2VsZi5mbGlzdCA9IHNlbGYuZWRpdHdpbi5mbGlzdAogICAgICAgICBzZWxmLnJvb3QgPSBzZWxmLmVkaXR3aW4ucm9vdAogCi0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNDb2NvYVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NvY29hVGsoKToKICAgICAgICAgICAgIHNlbGYuZWRpdHdpbi50ZXh0X2ZyYW1lLmJpbmQoJzw8cnVuLW1vZHVsZS1ldmVudC0yPj4nLCBzZWxmLl9ydW5fbW9kdWxlX2V2ZW50KQogCiAgICAgZGVmIGNoZWNrX21vZHVsZV9ldmVudChzZWxmLCBldmVudCk6CkBAIC0xMTIsNyArMTEzLDcgQEAKICAgICAgICAgICAgIHNoZWxsLnNldF93YXJuaW5nX3N0cmVhbShzYXZlZF9zdHJlYW0pCiAKICAgICBkZWYgcnVuX21vZHVsZV9ldmVudChzZWxmLCBldmVudCk6Ci0gICAgICAgIGlmIG1hY29zeFN1cHBvcnQuaXNDb2NvYVRrKCk6CisgICAgICAgIGlmIG1hY29zeC5pc0NvY29hVGsoKToKICAgICAgICAgICAgICMgVGstQ29jb2EgaW4gTWFjT1NYIGlzIGJyb2tlbiB1bnRpbCBhdCBsZWFzdAogICAgICAgICAgICAgIyBUayA4LjUuOSwgYW5kIHdpdGhvdXQgdGhpcyByYXRoZXIKICAgICAgICAgICAgICMgY3J1ZGUgd29ya2Fyb3VuZCBJRExFIHdvdWxkIGhhbmcgd2hlbiBhIHVzZXIKQEAgLTE0Miw3ICsxNDMsNyBAQAogICAgICAgICBpZiBub3Qgc2VsZi50YWJuYW5ueShmaWxlbmFtZSk6CiAgICAgICAgICAgICByZXR1cm4gJ2JyZWFrJwogICAgICAgICBpbnRlcnAgPSBzZWxmLnNoZWxsLmludGVycAotICAgICAgICBpZiBQeVNoZWxsLnVzZV9zdWJwcm9jZXNzOgorICAgICAgICBpZiBweXNoZWxsLnVzZV9zdWJwcm9jZXNzOgogICAgICAgICAgICAgaW50ZXJwLnJlc3RhcnRfc3VicHJvY2Vzcyh3aXRoX2N3ZD1GYWxzZSwgZmlsZW5hbWU9CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmVkaXR3aW4uX2ZpbGVuYW1lX3RvX3VuaWNvZGUoZmlsZW5hbWUpKQogICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQpAQCAtMTYxLDcgKzE2Miw3IEBACiAgICAgICAgIGludGVycC5wcmVwZW5kX3N5c3BhdGgoZmlsZW5hbWUpCiAgICAgICAgICMgWFhYIEtCSyAwM0p1bDA0IFdoZW4gcnVuIHcvbyBzdWJwcm9jZXNzLCBydW50aW1lIHdhcm5pbmdzIHN0aWxsCiAgICAgICAgICMgICAgICAgICBnbyB0byBfX3N0ZGVycl9fLiAgV2l0aCBzdWJwcm9jZXNzLCB0aGV5IGdvIHRvIHRoZSBzaGVsbC4KLSAgICAgICAgIyAgICAgICAgIE5lZWQgdG8gY2hhbmdlIHN0cmVhbXMgaW4gUHlTaGVsbC5Nb2RpZmllZEludGVycHJldGVyLgorICAgICAgICAjICAgICAgICAgTmVlZCB0byBjaGFuZ2Ugc3RyZWFtcyBpbiBweXNoZWxsLk1vZGlmaWVkSW50ZXJwcmV0ZXIuCiAgICAgICAgIGludGVycC5ydW5jb2RlKGNvZGUpCiAgICAgICAgIHJldHVybiAnYnJlYWsnCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1Njcm9sbGVkTGlzdC5weSBiL0xpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQpzaW1pbGFyaXR5IGluZGV4IDkxJQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3Njcm9sbGVkbGlzdC5weQppbmRleCA1MzU3NmI1Li5jYzA4YzI2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9TY3JvbGxlZExpc3QucHkKKysrIGIvTGliL2lkbGVsaWIvc2Nyb2xsZWRsaXN0LnB5CkBAIC0xLDUgKzEsOCBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeAorCiAKIGNsYXNzIFNjcm9sbGVkTGlzdDoKIApAQCAtMjMsNyArMjYsNyBAQAogICAgICAgICAjIEJpbmQgZXZlbnRzIHRvIHRoZSBsaXN0IGJveAogICAgICAgICBsaXN0Ym94LmJpbmQoIjxCdXR0b25SZWxlYXNlLTE+Iiwgc2VsZi5jbGlja19ldmVudCkKICAgICAgICAgbGlzdGJveC5iaW5kKCI8RG91YmxlLUJ1dHRvblJlbGVhc2UtMT4iLCBzZWxmLmRvdWJsZV9jbGlja19ldmVudCkKLSAgICAgICAgaWYgbWFjb3N4U3VwcG9ydC5pc0FxdWFUaygpOgorICAgICAgICBpZiBtYWNvc3guaXNBcXVhVGsoKToKICAgICAgICAgICAgIGxpc3Rib3guYmluZCgiPEJ1dHRvblByZXNzLTI+Iiwgc2VsZi5wb3B1cF9ldmVudCkKICAgICAgICAgICAgIGxpc3Rib3guYmluZCgiPENvbnRyb2wtQnV0dG9uLTE+Iiwgc2VsZi5wb3B1cF9ldmVudCkKICAgICAgICAgZWxzZToKQEAgLTEyNCwyMiArMTI3LDIwIEBACiAgICAgICAgIHBhc3MKIAogCi1kZWYgX3Njcm9sbGVkX2xpc3QocGFyZW50KToKLSAgICByb290ID0gVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgU2Nyb2xsZWRMaXN0IikKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE1MCkpCitkZWYgX3Njcm9sbGVkX2xpc3QocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgrMjAwLCB5ICsgMTc1KSkKICAgICBjbGFzcyBNeVNjcm9sbGVkTGlzdChTY3JvbGxlZExpc3QpOgogICAgICAgICBkZWYgZmlsbF9tZW51KHNlbGYpOiBzZWxmLm1lbnUuYWRkX2NvbW1hbmQobGFiZWw9InJpZ2h0IGNsaWNrIikKICAgICAgICAgZGVmIG9uX3NlbGVjdChzZWxmLCBpbmRleCk6IHByaW50KCJzZWxlY3QiLCBzZWxmLmdldChpbmRleCkpCiAgICAgICAgIGRlZiBvbl9kb3VibGUoc2VsZiwgaW5kZXgpOiBwcmludCgiZG91YmxlIiwgc2VsZi5nZXQoaW5kZXgpKQogCi0gICAgc2Nyb2xsZWRfbGlzdCA9IE15U2Nyb2xsZWRMaXN0KHJvb3QpCisgICAgc2Nyb2xsZWRfbGlzdCA9IE15U2Nyb2xsZWRMaXN0KHRvcCkKICAgICBmb3IgaSBpbiByYW5nZSgzMCk6CiAgICAgICAgIHNjcm9sbGVkX2xpc3QuYXBwZW5kKCJJdGVtICUwMmQiICUgaSkKIAotICAgIHJvb3QubWFpbmxvb3AoKQotCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgICMgQXQgdGhlIG1vbWVudCwgdGVzdF9zY3JvbGxlZGxpc3QgbWVyZWx5IGNyZWF0ZXMgaW5zdGFuY2UsIGxpa2UgaHRlc3QuCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF9zY3JvbGxlZF9saXN0KQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRGlhbG9nLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoLnB5CnNpbWlsYXJpdHkgaW5kZXggODIlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoLnB5CmluZGV4IDc2NWQ1M2YuLjRiOTA2NTkgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZy5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2gucHkKQEAgLTEsMTIgKzEsMTIgQEAKLWZyb20gdGtpbnRlciBpbXBvcnQgKgorZnJvbSB0a2ludGVyIGltcG9ydCBUY2xFcnJvcgogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IFNlYXJjaEVuZ2luZQotZnJvbSBpZGxlbGliLlNlYXJjaERpYWxvZ0Jhc2UgaW1wb3J0IFNlYXJjaERpYWxvZ0Jhc2UKK2Zyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCitmcm9tIGlkbGVsaWIuc2VhcmNoYmFzZSBpbXBvcnQgU2VhcmNoRGlhbG9nQmFzZQogCiBkZWYgX3NldHVwKHRleHQpOgogICAgICJDcmVhdGUgb3IgZmluZCB0aGUgc2luZ2xldG9uIFNlYXJjaERpYWxvZyBpbnN0YW5jZS4iCiAgICAgcm9vdCA9IHRleHQuX3Jvb3QoKQotICAgIGVuZ2luZSA9IFNlYXJjaEVuZ2luZS5nZXQocm9vdCkKKyAgICBlbmdpbmUgPSBzZWFyY2hlbmdpbmUuZ2V0KHJvb3QpCiAgICAgaWYgbm90IGhhc2F0dHIoZW5naW5lLCAiX3NlYXJjaGRpYWxvZyIpOgogICAgICAgICBlbmdpbmUuX3NlYXJjaGRpYWxvZyA9IFNlYXJjaERpYWxvZyhyb290LCBlbmdpbmUpCiAgICAgcmV0dXJuIGVuZ2luZS5fc2VhcmNoZGlhbG9nCkBAIC0yNCw2ICsyNCw3IEBACiAgICAgIkhhbmRsZSB0aGUgZWRpdG9yIGVkaXQgbWVudSBpdGVtIGFuZCBjb3JyZXNwb25kaW5nIGV2ZW50LiIKICAgICByZXR1cm4gX3NldHVwKHRleHQpLmZpbmRfc2VsZWN0aW9uKHRleHQpCiAKKwogY2xhc3MgU2VhcmNoRGlhbG9nKFNlYXJjaERpYWxvZ0Jhc2UpOgogCiAgICAgZGVmIGNyZWF0ZV93aWRnZXRzKHNlbGYpOgpAQCAtNTEsNyArNTIsNyBAQAogICAgICAgICAgICAgICAgIHNlbGZpcnN0ID0gdGV4dC5pbmRleCgic2VsLmZpcnN0IikKICAgICAgICAgICAgICAgICBzZWxsYXN0ID0gdGV4dC5pbmRleCgic2VsLmxhc3QiKQogICAgICAgICAgICAgICAgIGlmIHNlbGZpcnN0ID09IGZpcnN0IGFuZCBzZWxsYXN0ID09IGxhc3Q6Ci0gICAgICAgICAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYmVsbCgpCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICAgICAgZXhjZXB0IFRjbEVycm9yOgogICAgICAgICAgICAgICAgIHBhc3MKQEAgLTYxLDcgKzYyLDcgQEAKICAgICAgICAgICAgIHRleHQuc2VlKCJpbnNlcnQiKQogICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHRleHQuYmVsbCgpCisgICAgICAgICAgICBzZWxmLmJlbGwoKQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgZmluZF9zZWxlY3Rpb24oc2VsZiwgdGV4dCk6CkBAIC03MiwyNiArNzMsMzAgQEAKIAogCiBkZWYgX3NlYXJjaF9kaWFsb2cocGFyZW50KTogICMgaHRlc3QgIwotICAgICcnJ0Rpc3BsYXkgc2VhcmNoIHRlc3QgYm94LicnJworICAgICJEaXNwbGF5IHNlYXJjaCB0ZXN0IGJveC4iCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgVGV4dAorICAgIGZyb20gdGtpbnRlci50dGsgaW1wb3J0IEJ1dHRvbgorCiAgICAgYm94ID0gVG9wbGV2ZWwocGFyZW50KQogICAgIGJveC50aXRsZSgiVGVzdCBTZWFyY2hEaWFsb2ciKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICBib3guZ2VvbWV0cnkoIislZCslZCIlKHgsIHkgKyAxNTApKQorICAgIHgsIHkgPSBtYXAoaW50LCBwYXJlbnQuZ2VvbWV0cnkoKS5zcGxpdCgnKycpWzE6XSkKKyAgICBib3guZ2VvbWV0cnkoIislZCslZCIgJSAoeCwgeSArIDE3NSkpCiAgICAgdGV4dCA9IFRleHQoYm94LCBpbmFjdGl2ZXNlbGVjdGJhY2tncm91bmQ9J2dyYXknKQogICAgIHRleHQucGFjaygpCiAgICAgdGV4dC5pbnNlcnQoImluc2VydCIsIlRoaXMgaXMgYSBzYW1wbGUgc3RyaW5nLlxuIio1KQogCiAgICAgZGVmIHNob3dfZmluZCgpOgotICAgICAgICB0ZXh0LnRhZ19hZGQoU0VMLCAiMS4wIiwgRU5EKQorICAgICAgICB0ZXh0LnRhZ19hZGQoJ3NlbCcsICcxLjAnLCAnZW5kJykKICAgICAgICAgX3NldHVwKHRleHQpLm9wZW4odGV4dCkKLSAgICAgICAgdGV4dC50YWdfcmVtb3ZlKFNFTCwgIjEuMCIsIEVORCkKKyAgICAgICAgdGV4dC50YWdfcmVtb3ZlKCdzZWwnLCAnMS4wJywgJ2VuZCcpCiAKICAgICBidXR0b24gPSBCdXR0b24oYm94LCB0ZXh0PSJTZWFyY2ggKHNlbGVjdGlvbiBpZ25vcmVkKSIsIGNvbW1hbmQ9c2hvd19maW5kKQogICAgIGJ1dHRvbi5wYWNrKCkKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgdW5pdHRlc3QKLSAgICB1bml0dGVzdC5tYWluKCdpZGxlbGliLmlkbGVfdGVzdC50ZXN0X3NlYXJjaGRpYWxvZycsCisgICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF9zZWFyY2gnLAogICAgICAgICAgICAgICAgICAgdmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KICAgICBydW4oX3NlYXJjaF9kaWFsb2cpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TZWFyY2hEaWFsb2dCYXNlLnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi9zZWFyY2hiYXNlLnB5CmluZGV4IDVmYTg0ZTIuLjVmODE3ODUgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaERpYWxvZ0Jhc2UucHkKKysrIGIvTGliL2lkbGVsaWIvc2VhcmNoYmFzZS5weQpAQCAtMSw3ICsxLDggQEAKICcnJ0RlZmluZSBTZWFyY2hEaWFsb2dCYXNlIHVzZWQgYnkgU2VhcmNoLCBSZXBsYWNlLCBhbmQgR3JlcCBkaWFsb2dzLicnJwogCi1mcm9tIHRraW50ZXIgaW1wb3J0IChUb3BsZXZlbCwgRnJhbWUsIEVudHJ5LCBMYWJlbCwgQnV0dG9uLAotICAgICAgICAgICAgICAgICAgICAgQ2hlY2tidXR0b24sIFJhZGlvYnV0dG9uKQorZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IEVudHJ5LCBMYWJlbCwgQnV0dG9uLCBDaGVja2J1dHRvbiwgUmFkaW9idXR0b24KKwogCiBjbGFzcyBTZWFyY2hEaWFsb2dCYXNlOgogICAgICcnJ0NyZWF0ZSBtb3N0IG9mIGEgMyBvciA0IHJvdywgMyBjb2x1bW4gc2VhcmNoIGRpYWxvZy4KQEAgLTc5LDYgKzgwLDcgQEAKICAgICAgICAgdG9wLndtX3RpdGxlKHNlbGYudGl0bGUpCiAgICAgICAgIHRvcC53bV9pY29ubmFtZShzZWxmLmljb24pCiAgICAgICAgIHNlbGYudG9wID0gdG9wCisgICAgICAgIHNlbGYuYmVsbCA9IHRvcC5iZWxsCiAKICAgICAgICAgc2VsZi5yb3cgPSAwCiAgICAgICAgIHNlbGYudG9wLmdyaWRfY29sdW1uY29uZmlndXJlKDAsIHBhZD0yLCB3ZWlnaHQ9MCkKQEAgLTEyNSw3ICsxMjcsNyBAQAogICAgIGRlZiBjcmVhdGVfb3B0aW9uX2J1dHRvbnMoc2VsZik6CiAgICAgICAgICcnJ1JldHVybiAoZmlsbGVkIGZyYW1lLCBvcHRpb25zKSBmb3IgdGVzdGluZy4KIAotICAgICAgICBPcHRpb25zIGlzIGEgbGlzdCBvZiBTZWFyY2hFbmdpbmUgYm9vbGVhbnZhciwgbGFiZWwgcGFpcnMuCisgICAgICAgIE9wdGlvbnMgaXMgYSBsaXN0IG9mIHNlYXJjaGVuZ2luZSBib29sZWFudmFyLCBsYWJlbCBwYWlycy4KICAgICAgICAgQSBncmlkZGVkIGZyYW1lIGZyb20gbWFrZV9mcmFtZSBpcyBmaWxsZWQgd2l0aCBhIENoZWNrYnV0dG9uCiAgICAgICAgIGZvciBlYWNoIHBhaXIsIGJvdW5kIHRvIHRoZSB2YXIsIHdpdGggdGhlIGNvcnJlc3BvbmRpbmcgbGFiZWwuCiAgICAgICAgICcnJwpAQCAtMTM3LDEwICsxMzksOCBAQAogICAgICAgICBpZiBzZWxmLm5lZWR3cmFwYnV0dG9uOgogICAgICAgICAgICAgb3B0aW9ucy5hcHBlbmQoKGVuZ2luZS53cmFwdmFyLCAiV3JhcCBhcm91bmQiKSkKICAgICAgICAgZm9yIHZhciwgbGFiZWwgaW4gb3B0aW9uczoKLSAgICAgICAgICAgIGJ0biA9IENoZWNrYnV0dG9uKGZyYW1lLCBhbmNob3I9InciLCB2YXJpYWJsZT12YXIsIHRleHQ9bGFiZWwpCisgICAgICAgICAgICBidG4gPSBDaGVja2J1dHRvbihmcmFtZSwgdmFyaWFibGU9dmFyLCB0ZXh0PWxhYmVsKQogICAgICAgICAgICAgYnRuLnBhY2soc2lkZT0ibGVmdCIsIGZpbGw9ImJvdGgiKQotICAgICAgICAgICAgaWYgdmFyLmdldCgpOgotICAgICAgICAgICAgICAgIGJ0bi5zZWxlY3QoKQogICAgICAgICByZXR1cm4gZnJhbWUsIG9wdGlvbnMKIAogICAgIGRlZiBjcmVhdGVfb3RoZXJfYnV0dG9ucyhzZWxmKToKQEAgLTE1MywxMSArMTUzLDggQEAKICAgICAgICAgdmFyID0gc2VsZi5lbmdpbmUuYmFja3ZhcgogICAgICAgICBvdGhlcnMgPSBbKDEsICdVcCcpLCAoMCwgJ0Rvd24nKV0KICAgICAgICAgZm9yIHZhbCwgbGFiZWwgaW4gb3RoZXJzOgotICAgICAgICAgICAgYnRuID0gUmFkaW9idXR0b24oZnJhbWUsIGFuY2hvcj0idyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZT12YXIsIHZhbHVlPXZhbCwgdGV4dD1sYWJlbCkKKyAgICAgICAgICAgIGJ0biA9IFJhZGlvYnV0dG9uKGZyYW1lLCB2YXJpYWJsZT12YXIsIHZhbHVlPXZhbCwgdGV4dD1sYWJlbCkKICAgICAgICAgICAgIGJ0bi5wYWNrKHNpZGU9ImxlZnQiLCBmaWxsPSJib3RoIikKLSAgICAgICAgICAgIGlmIHZhci5nZXQoKSA9PSB2YWw6Ci0gICAgICAgICAgICAgICAgYnRuLnNlbGVjdCgpCiAgICAgICAgIHJldHVybiBmcmFtZSwgb3RoZXJzCiAKICAgICBkZWYgbWFrZV9idXR0b24oc2VsZiwgbGFiZWwsIGNvbW1hbmQsIGlzZGVmPTApOgpAQCAtMTc4LDcgKzE3NSwyNiBAQAogICAgICAgICBiID0gc2VsZi5tYWtlX2J1dHRvbigiY2xvc2UiLCBzZWxmLmNsb3NlKQogICAgICAgICBiLmxvd2VyKCkKIAorCitjbGFzcyBfc2VhcmNoYmFzZShTZWFyY2hEaWFsb2dCYXNlKTogICMgaHRlc3QgIworICAgICJDcmVhdGUgYXV0by1vcGVuaW5nIGRpYWxvZyB3aXRoIG5vIHRleHQgY29ubmVjdGlvbi4iCisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgaW1wb3J0IHJlCisgICAgICAgIGZyb20gaWRsZWxpYiBpbXBvcnQgc2VhcmNoZW5naW5lCisKKyAgICAgICAgc2VsZi5yb290ID0gcGFyZW50CisgICAgICAgIHNlbGYuZW5naW5lID0gc2VhcmNoZW5naW5lLmdldChwYXJlbnQpCisgICAgICAgIHNlbGYuY3JlYXRlX3dpZGdldHMoKQorICAgICAgICBwcmludChwYXJlbnQuZ2VvbWV0cnkoKSkKKyAgICAgICAgd2lkdGgsaGVpZ2h0LCB4LHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKKyAgICAgICAgc2VsZi50b3AuZ2VvbWV0cnkoIislZCslZCIgJSAoeCArIDQwLCB5ICsgMTc1KSkKKworICAgIGRlZiBkZWZhdWx0X2NvbW1hbmQoc2VsZiwgZHVtbXkpOiBwYXNzCisKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbigKLSAgICAgICAgJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoZGlhbG9nYmFzZScsIHZlcmJvc2l0eT0yKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3Rfc2VhcmNoYmFzZScsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKF9zZWFyY2hiYXNlKQpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU2VhcmNoRW5naW5lLnB5IGIvTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc2VhcmNoZW5naW5lLnB5CmluZGV4IDM3ODgzYmYuLjI1M2YxYjAgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1NlYXJjaEVuZ2luZS5weQorKysgYi9MaWIvaWRsZWxpYi9zZWFyY2hlbmdpbmUucHkKQEAgLTEsNSArMSw2IEBACiAnJydEZWZpbmUgU2VhcmNoRW5naW5lIGZvciBzZWFyY2ggZGlhbG9ncy4nJycKIGltcG9ydCByZQorCiBmcm9tIHRraW50ZXIgaW1wb3J0IFN0cmluZ1ZhciwgQm9vbGVhblZhciwgVGNsRXJyb3IKIGltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94CiAKQEAgLTE0LDYgKzE1LDcgQEAKICAgICAgICAgIyBUaGlzIGNyZWF0ZXMgYSBjeWNsZSB0aGF0IHBlcnNpc3RzIHVudGlsIHJvb3QgaXMgZGVsZXRlZC4KICAgICByZXR1cm4gcm9vdC5fc2VhcmNoZW5naW5lCiAKKwogY2xhc3MgU2VhcmNoRW5naW5lOgogICAgICIiIkhhbmRsZXMgc2VhcmNoaW5nIGEgdGV4dCB3aWRnZXQgZm9yIEZpbmQsIFJlcGxhY2UsIGFuZCBHcmVwLiIiIgogCkBAIC01Nyw3ICs1OSw3IEBACiAKICAgICBkZWYgc2V0Y29va2VkcGF0KHNlbGYsIHBhdCk6CiAgICAgICAgICJTZXQgcGF0dGVybiBhZnRlciBlc2NhcGluZyBpZiByZS4iCi0gICAgICAgICMgY2FsbGVkIG9ubHkgaW4gU2VhcmNoRGlhbG9nLnB5OiA2NgorICAgICAgICAjIGNhbGxlZCBvbmx5IGluIHNlYXJjaC5weTogNjYKICAgICAgICAgaWYgc2VsZi5pc3JlKCk6CiAgICAgICAgICAgICBwYXQgPSByZS5lc2NhcGUocGF0KQogICAgICAgICBzZWxmLnNldHBhdChwYXQpCkBAIC0xODYsNiArMTg4LDcgQEAKICAgICAgICAgICAgIGNvbCA9IGxlbihjaGFycykgLSAxCiAgICAgICAgIHJldHVybiBOb25lCiAKKwogZGVmIHNlYXJjaF9yZXZlcnNlKHByb2csIGNoYXJzLCBjb2wpOgogICAgICcnJ1NlYXJjaCBiYWNrd2FyZHMgYW5kIHJldHVybiBhbiByZSBtYXRjaCBvYmplY3Qgb3IgTm9uZS4KIApkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkgYi9MaWIvaWRsZWxpYi9zdGFja3ZpZXdlci5weQpzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9TdGFja1ZpZXdlci5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKaW5kZXggY2NjNzU1Yy4uMDY5OGRlZiAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvU3RhY2tWaWV3ZXIucHkKKysrIGIvTGliL2lkbGVsaWIvc3RhY2t2aWV3ZXIucHkKQEAgLTEsMTIgKzEsMTIgQEAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGxpbmVjYWNoZQoraW1wb3J0IG9zCiBpbXBvcnQgcmUKK2ltcG9ydCBzeXMKKwogaW1wb3J0IHRraW50ZXIgYXMgdGsKIAotZnJvbSBpZGxlbGliLlRyZWVXaWRnZXQgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKLWZyb20gaWRsZWxpYi5PYmplY3RCcm93c2VyIGltcG9ydCBPYmplY3RUcmVlSXRlbSwgbWFrZV9vYmplY3R0cmVlaXRlbQotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IFB5U2hlbGxGaWxlTGlzdAorZnJvbSBpZGxlbGliLmRlYnVnb2JqIGltcG9ydCBPYmplY3RUcmVlSXRlbSwgbWFrZV9vYmplY3R0cmVlaXRlbQorZnJvbSBpZGxlbGliLnRyZWUgaW1wb3J0IFRyZWVOb2RlLCBUcmVlSXRlbSwgU2Nyb2xsZWRDYW52YXMKIAogZGVmIFN0YWNrQnJvd3Nlcihyb290LCBmbGlzdD1Ob25lLCB0Yj1Ob25lLCB0b3A9Tm9uZSk6CiAgICAgaWYgdG9wIGlzIE5vbmU6CkBAIC0xNyw2ICsxNyw3IEBACiAgICAgbm9kZSA9IFRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKICAgICBub2RlLmV4cGFuZCgpCiAKKwogY2xhc3MgU3RhY2tUcmVlSXRlbShUcmVlSXRlbSk6CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZmxpc3Q9Tm9uZSwgdGI9Tm9uZSk6CkBAIC01NSw2ICs1Niw3IEBACiAgICAgICAgICAgICBzdWJsaXN0LmFwcGVuZChpdGVtKQogICAgICAgICByZXR1cm4gc3VibGlzdAogCisKIGNsYXNzIEZyYW1lVHJlZUl0ZW0oVHJlZUl0ZW0pOgogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZm8sIGZsaXN0KToKQEAgLTk2LDYgKzk4LDcgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGZpbGVuYW1lKToKICAgICAgICAgICAgICAgICBzZWxmLmZsaXN0LmdvdG9maWxlbGluZShmaWxlbmFtZSwgbGluZW5vKQogCisKIGNsYXNzIFZhcmlhYmxlc1RyZWVJdGVtKE9iamVjdFRyZWVJdGVtKToKIAogICAgIGRlZiBHZXRUZXh0KHNlbGYpOgpAQCAtMTIwLDE1ICsxMjMsMTQgQEAKICAgICAgICAgICAgIHN1Ymxpc3QuYXBwZW5kKGl0ZW0pCiAgICAgICAgIHJldHVybiBzdWJsaXN0CiAKLSAgICBkZWYga2V5cyhzZWxmKTogICMgdW51c2VkLCBsZWZ0IGZvciBwb3NzaWJsZSAzcmQgcGFydHkgdXNlCi0gICAgICAgIHJldHVybiBsaXN0KHNlbGYub2JqZWN0LmtleXMoKSkKIAotZGVmIF9zdGFja192aWV3ZXIocGFyZW50KToKLSAgICByb290ID0gdGsuVGsoKQotICAgIHJvb3QudGl0bGUoIlRlc3QgU3RhY2tWaWV3ZXIiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBmbGlzdCA9IFB5U2hlbGxGaWxlTGlzdChyb290KQorZGVmIF9zdGFja192aWV3ZXIocGFyZW50KTogICMgaHRlc3QgIworICAgIGZyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBQeVNoZWxsRmlsZUxpc3QKKyAgICB0b3AgPSB0ay5Ub3BsZXZlbChwYXJlbnQpCisgICAgdG9wLnRpdGxlKCJUZXN0IFN0YWNrVmlld2VyIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHggKyA1MCwgeSArIDE3NSkpCisgICAgZmxpc3QgPSBQeVNoZWxsRmlsZUxpc3QodG9wKQogICAgIHRyeTogIyB0byBvYnRhaW4gYSB0cmFjZWJhY2sgb2JqZWN0CiAgICAgICAgIGludGVudGlvbmFsX25hbWVfZXJyb3IKICAgICBleGNlcHQgTmFtZUVycm9yOgpAQCAtMTM5LDcgKzE0MSw3IEBACiAgICAgc3lzLmxhc3RfdmFsdWUgPSBleGNfdmFsdWUKICAgICBzeXMubGFzdF90cmFjZWJhY2sgPSBleGNfdGIKIAotICAgIFN0YWNrQnJvd3Nlcihyb290LCBmbGlzdD1mbGlzdCwgdG9wPXJvb3QsIHRiPWV4Y190YikKKyAgICBTdGFja0Jyb3dzZXIodG9wLCBmbGlzdD1mbGlzdCwgdG9wPXRvcCwgdGI9ZXhjX3RiKQogCiAgICAgIyByZXN0b3JlIHN5cyB0byBvcmlnaW5hbCBzdGF0ZQogICAgIGRlbCBzeXMubGFzdF90eXBlCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkgYi9MaWIvaWRsZWxpYi9zdGF0dXNiYXIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODYxODUyOAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi9pZGxlbGliL3N0YXR1c2Jhci5weQpAQCAtMCwwICsxLDQ2IEBACitmcm9tIHRraW50ZXIgaW1wb3J0IEZyYW1lLCBMYWJlbAorCisKK2NsYXNzIE11bHRpU3RhdHVzQmFyKEZyYW1lKToKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpOgorICAgICAgICBGcmFtZS5fX2luaXRfXyhzZWxmLCBtYXN0ZXIsICoqa3cpCisgICAgICAgIHNlbGYubGFiZWxzID0ge30KKworICAgIGRlZiBzZXRfbGFiZWwoc2VsZiwgbmFtZSwgdGV4dD0nJywgc2lkZT0nbGVmdCcsIHdpZHRoPTApOgorICAgICAgICBpZiBuYW1lIG5vdCBpbiBzZWxmLmxhYmVsczoKKyAgICAgICAgICAgIGxhYmVsID0gTGFiZWwoc2VsZiwgYm9yZGVyd2lkdGg9MCwgYW5jaG9yPSd3JykKKyAgICAgICAgICAgIGxhYmVsLnBhY2soc2lkZT1zaWRlLCBwYWR5PTAsIHBhZHg9NCkKKyAgICAgICAgICAgIHNlbGYubGFiZWxzW25hbWVdID0gbGFiZWwKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGxhYmVsID0gc2VsZi5sYWJlbHNbbmFtZV0KKyAgICAgICAgaWYgd2lkdGggIT0gMDoKKyAgICAgICAgICAgIGxhYmVsLmNvbmZpZyh3aWR0aD13aWR0aCkKKyAgICAgICAgbGFiZWwuY29uZmlnKHRleHQ9dGV4dCkKKworCitkZWYgX211bHRpc3RhdHVzX2JhcihwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgZnJvbSB0a2ludGVyIGltcG9ydCBUb3BsZXZlbCwgRnJhbWUsIFRleHQsIEJ1dHRvbgorICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUoeCwgeSArIDE3NSkpCisgICAgdG9wLnRpdGxlKCJUZXN0IG11bHRpc3RhdHVzIGJhciIpCisgICAgZnJhbWUgPSBGcmFtZSh0b3ApCisgICAgdGV4dCA9IFRleHQoZnJhbWUsIGhlaWdodD01LCB3aWR0aD00MCkKKyAgICB0ZXh0LnBhY2soKQorICAgIG1zYiA9IE11bHRpU3RhdHVzQmFyKGZyYW1lKQorICAgIG1zYi5zZXRfbGFiZWwoIm9uZSIsICJoZWxsbyIpCisgICAgbXNiLnNldF9sYWJlbCgidHdvIiwgIndvcmxkIikKKyAgICBtc2IucGFjayhzaWRlPSdib3R0b20nLCBmaWxsPSd4JykKKworICAgIGRlZiBjaGFuZ2UoKToKKyAgICAgICAgbXNiLnNldF9sYWJlbCgib25lIiwgImZvbyIpCisgICAgICAgIG1zYi5zZXRfbGFiZWwoInR3byIsICJiYXIiKQorCisgICAgYnV0dG9uID0gQnV0dG9uKHRvcCwgdGV4dD0iVXBkYXRlIHN0YXR1cyIsIGNvbW1hbmQ9Y2hhbmdlKQorICAgIGJ1dHRvbi5wYWNrKHNpZGU9J2JvdHRvbScpCisgICAgZnJhbWUucGFjaygpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCisgICAgcnVuKF9tdWx0aXN0YXR1c19iYXIpCmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi90YWJiZWRwYWdlcy5weSBiL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CmluZGV4IDk2NWY5ZjguLjQxODZmYTIgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CisrKyBiL0xpYi9pZGxlbGliL3RhYmJlZHBhZ2VzLnB5CkBAIC0yODUsNiArMjg1LDcgQEAKICAgICAgICAgICAgICMgcGxhY2VkIGhpZGUgaXQKICAgICAgICAgICAgIHNlbGYudGFiX3NldC5sb3dlcigpCiAKKwogY2xhc3MgVGFiYmVkUGFnZVNldChGcmFtZSk6CiAgICAgIiIiQSBUa2ludGVyIHRhYmJlZC1wYW5lIHdpZGdldC4KIApAQCAtMzAyLDYgKzMwMyw3IEBACiAgICAgcmVtb3ZlX3BhZ2UoKSBtZXRob2RzLgogCiAgICAgIiIiCisKICAgICBjbGFzcyBQYWdlKG9iamVjdCk6CiAgICAgICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIFRhYmJlZFBhZ2VTZXQncyBwYWdlcy4KIApAQCAtNDY3LDMxICs0NjksMjkgQEAKIAogICAgICAgICBzZWxmLl90YWJfc2V0LnNldF9zZWxlY3RlZF90YWIocGFnZV9uYW1lKQogCi1kZWYgX3RhYmJlZF9wYWdlcyhwYXJlbnQpOgotICAgICMgdGVzdCBkaWFsb2cKLSAgICByb290PVRrKCkKLSAgICB3aWR0aCwgaGVpZ2h0LCB4LCB5ID0gbGlzdChtYXAoaW50LCByZS5zcGxpdCgnW3grXScsIHBhcmVudC5nZW9tZXRyeSgpKSkpCi0gICAgcm9vdC5nZW9tZXRyeSgiKyVkKyVkIiUoeCwgeSArIDE3NSkpCi0gICAgcm9vdC50aXRsZSgiVGVzdCB0YWJiZWQgcGFnZXMiKQotICAgIHRhYlBhZ2U9VGFiYmVkUGFnZVNldChyb290LCBwYWdlX25hbWVzPVsnRm9vYmFyJywnQmF6J10sIG5fcm93cz0wLAorCitkZWYgX3RhYmJlZF9wYWdlcyhwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wPVRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNzUpKQorICAgIHRvcC50aXRsZSgiVGVzdCB0YWJiZWQgcGFnZXMiKQorICAgIHRhYlBhZ2U9VGFiYmVkUGFnZVNldCh0b3AsIHBhZ2VfbmFtZXM9WydGb29iYXInLCdCYXonXSwgbl9yb3dzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGFuZF90YWJzPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICApCiAgICAgdGFiUGFnZS5wYWNrKHNpZGU9VE9QLCBleHBhbmQ9VFJVRSwgZmlsbD1CT1RIKQogICAgIExhYmVsKHRhYlBhZ2UucGFnZXNbJ0Zvb2JhciddLmZyYW1lLCB0ZXh0PSdGb28nLCBwYWR5PTIwKS5wYWNrKCkKICAgICBMYWJlbCh0YWJQYWdlLnBhZ2VzWydGb29iYXInXS5mcmFtZSwgdGV4dD0nQmFyJywgcGFkeT0yMCkucGFjaygpCiAgICAgTGFiZWwodGFiUGFnZS5wYWdlc1snQmF6J10uZnJhbWUsIHRleHQ9J0JheicpLnBhY2soKQotICAgIGVudHJ5UGdOYW1lPUVudHJ5KHJvb3QpCi0gICAgYnV0dG9uQWRkPUJ1dHRvbihyb290LCB0ZXh0PSdBZGQgUGFnZScsCisgICAgZW50cnlQZ05hbWU9RW50cnkodG9wKQorICAgIGJ1dHRvbkFkZD1CdXR0b24odG9wLCB0ZXh0PSdBZGQgUGFnZScsCiAgICAgICAgICAgICBjb21tYW5kPWxhbWJkYTp0YWJQYWdlLmFkZF9wYWdlKGVudHJ5UGdOYW1lLmdldCgpKSkKLSAgICBidXR0b25SZW1vdmU9QnV0dG9uKHJvb3QsIHRleHQ9J1JlbW92ZSBQYWdlJywKKyAgICBidXR0b25SZW1vdmU9QnV0dG9uKHRvcCwgdGV4dD0nUmVtb3ZlIFBhZ2UnLAogICAgICAgICAgICAgY29tbWFuZD1sYW1iZGE6dGFiUGFnZS5yZW1vdmVfcGFnZShlbnRyeVBnTmFtZS5nZXQoKSkpCi0gICAgbGFiZWxQZ05hbWU9TGFiZWwocm9vdCwgdGV4dD0nbmFtZSBvZiBwYWdlIHRvIGFkZC9yZW1vdmU6JykKKyAgICBsYWJlbFBnTmFtZT1MYWJlbCh0b3AsIHRleHQ9J25hbWUgb2YgcGFnZSB0byBhZGQvcmVtb3ZlOicpCiAgICAgYnV0dG9uQWRkLnBhY2socGFkeD01LCBwYWR5PTUpCiAgICAgYnV0dG9uUmVtb3ZlLnBhY2socGFkeD01LCBwYWR5PTUpCiAgICAgbGFiZWxQZ05hbWUucGFjayhwYWR4PTUpCiAgICAgZW50cnlQZ05hbWUucGFjayhwYWR4PTUpCi0gICAgcm9vdC5tYWlubG9vcCgpCi0KIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBmcm9tIGlkbGVsaWIuaWRsZV90ZXN0Lmh0ZXN0IGltcG9ydCBydW4KZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL3RleHRWaWV3LnB5IGIvTGliL2lkbGVsaWIvdGV4dHZpZXcucHkKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvdGV4dFZpZXcucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3RleHR2aWV3LnB5CmluZGV4IDEyYWMzMTkuLmFkZWUzMjYgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL3RleHRWaWV3LnB5CisrKyBiL0xpYi9pZGxlbGliL3RleHR2aWV3LnB5CkBAIC0xLDE0ICsxLDE0IEBACiAiIiJTaW1wbGUgdGV4dCBicm93c2VyIGZvciBJRExFCiAKICIiIgotCiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKLWltcG9ydCB0a2ludGVyLm1lc3NhZ2Vib3ggYXMgdGtNZXNzYWdlQm94Citmcm9tIHRraW50ZXIudHRrIGltcG9ydCBTY3JvbGxiYXIKK2Zyb20gdGtpbnRlci5tZXNzYWdlYm94IGltcG9ydCBzaG93ZXJyb3IKKwogCiBjbGFzcyBUZXh0Vmlld2VyKFRvcGxldmVsKToKLSAgICAiIiJBIHNpbXBsZSB0ZXh0IHZpZXdlciBkaWFsb2cgZm9yIElETEUKKyAgICAiQSBzaW1wbGUgdGV4dCB2aWV3ZXIgZGlhbG9nIGZvciBJRExFLiIKIAotICAgICIiIgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXJlbnQsIHRpdGxlLCB0ZXh0LCBtb2RhbD1UcnVlLCBfaHRlc3Q9RmFsc2UpOgogICAgICAgICAiIiJTaG93IHRoZSBnaXZlbiB0ZXh0IGluIGEgc2Nyb2xsYWJsZSB3aW5kb3cgd2l0aCBhICdjbG9zZScgYnV0dG9uCiAKQEAgLTIwLDExICsyMCwxMSBAQAogICAgICAgICAiIiIKICAgICAgICAgVG9wbGV2ZWwuX19pbml0X18oc2VsZiwgcGFyZW50KQogICAgICAgICBzZWxmLmNvbmZpZ3VyZShib3JkZXJ3aWR0aD01KQotICAgICAgICAjIHBsYWNlIGRpYWxvZyBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdAorICAgICAgICAjIFBsYWNlIGRpYWxvZyBiZWxvdyBwYXJlbnQgaWYgcnVubmluZyBodGVzdC4KICAgICAgICAgc2VsZi5nZW9tZXRyeSgiPSVkeCVkKyVkKyVkIiAlICg3NTAsIDUwMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudC53aW5mb19yb290eCgpICsgMTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQud2luZm9fcm9vdHkoKSArICgxMCBpZiBub3QgX2h0ZXN0IGVsc2UgMTAwKSkpCi0gICAgICAgICNlbGd1YXZhcyAtIGNvbmZpZyBwbGFjZWhvbGRlcnMgdGlsIGNvbmZpZyBzdHVmZiBjb21wbGV0ZWQKKyAgICAgICAgIyBUT0RPOiBnZXQgZmcvYmcgZnJvbSB0aGVtZS4KICAgICAgICAgc2VsZi5iZyA9ICcjZmZmZmZmJwogICAgICAgICBzZWxmLmZnID0gJyMwMDAwMDAnCiAKQEAgLTMzLDkgKzMzLDkgQEAKICAgICAgICAgc2VsZi5wcm90b2NvbCgiV01fREVMRVRFX1dJTkRPVyIsIHNlbGYuT2spCiAgICAgICAgIHNlbGYucGFyZW50ID0gcGFyZW50CiAgICAgICAgIHNlbGYudGV4dFZpZXcuZm9jdXNfc2V0KCkKLSAgICAgICAgI2tleSBiaW5kaW5ncyBmb3IgdGhpcyBkaWFsb2cKLSAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsc2VsZi5PaykgI2Rpc21pc3MgZGlhbG9nCi0gICAgICAgIHNlbGYuYmluZCgnPEVzY2FwZT4nLHNlbGYuT2spICNkaXNtaXNzIGRpYWxvZworICAgICAgICAjIEJpbmQga2V5cyBmb3IgY2xvc2luZyB0aGlzIGRpYWxvZy4KKyAgICAgICAgc2VsZi5iaW5kKCc8UmV0dXJuPicsc2VsZi5PaykKKyAgICAgICAgc2VsZi5iaW5kKCc8RXNjYXBlPicsc2VsZi5PaykKICAgICAgICAgc2VsZi50ZXh0Vmlldy5pbnNlcnQoMC4wLCB0ZXh0KQogICAgICAgICBzZWxmLnRleHRWaWV3LmNvbmZpZyhzdGF0ZT1ESVNBQkxFRCkKIApAQCAtNTAsNyArNTAsNyBAQAogICAgICAgICBzZWxmLmJ1dHRvbk9rID0gQnV0dG9uKGZyYW1lQnV0dG9ucywgdGV4dD0nQ2xvc2UnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQ9c2VsZi5PaywgdGFrZWZvY3VzPUZBTFNFKQogICAgICAgICBzZWxmLnNjcm9sbGJhclZpZXcgPSBTY3JvbGxiYXIoZnJhbWVUZXh0LCBvcmllbnQ9VkVSVElDQUwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlZm9jdXM9RkFMU0UsIGhpZ2hsaWdodHRoaWNrbmVzcz0wKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFrZWZvY3VzPUZBTFNFKQogICAgICAgICBzZWxmLnRleHRWaWV3ID0gVGV4dChmcmFtZVRleHQsIHdyYXA9V09SRCwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZnPXNlbGYuZmcsIGJnPXNlbGYuYmcpCiAgICAgICAgIHNlbGYuc2Nyb2xsYmFyVmlldy5jb25maWcoY29tbWFuZD1zZWxmLnRleHRWaWV3Lnl2aWV3KQpAQCAtNzIsMTQgKzcyLDE0IEBACiAgICAgdHJ5OgogICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICdyJywgZW5jb2Rpbmc9ZW5jb2RpbmcpIGFzIGZpbGU6CiAgICAgICAgICAgICBjb250ZW50cyA9IGZpbGUucmVhZCgpCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J0ZpbGUgTG9hZCBFcnJvcicsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVzc2FnZT0nVW5hYmxlIHRvIGxvYWQgZmlsZSAlciAuJyAlIGZpbGVuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCisgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgIHNob3dlcnJvcih0aXRsZT0nRmlsZSBMb2FkIEVycm9yJywKKyAgICAgICAgICAgICAgICAgIG1lc3NhZ2U9J1VuYWJsZSB0byBsb2FkIGZpbGUgJXIgLicgJSBmaWxlbmFtZSwKKyAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCiAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvciBhcyBlcnI6Ci0gICAgICAgIHRrTWVzc2FnZUJveC5zaG93ZXJyb3IodGl0bGU9J1VuaWNvZGUgRGVjb2RlIEVycm9yJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlPXN0cihlcnIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCisgICAgICAgIHNob3dlcnJvcih0aXRsZT0nVW5pY29kZSBEZWNvZGUgRXJyb3InLAorICAgICAgICAgICAgICAgICAgbWVzc2FnZT1zdHIoZXJyKSwKKyAgICAgICAgICAgICAgICAgIHBhcmVudD1wYXJlbnQpCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuIHZpZXdfdGV4dChwYXJlbnQsIHRpdGxlLCBjb250ZW50cywgbW9kYWwpCiAKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1Rvb2xUaXAucHkgYi9MaWIvaWRsZWxpYi90b29sdGlwLnB5CnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1Rvb2xUaXAucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3Rvb2x0aXAucHkKaW5kZXggOTY0MTA3ZS4uODQzZmI0YSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVG9vbFRpcC5weQorKysgYi9MaWIvaWRsZWxpYi90b29sdGlwLnB5CkBAIC0xLDQgKzEsNCBAQAotIyBnZW5lcmFsIHB1cnBvc2UgJ3Rvb2x0aXAnIHJvdXRpbmVzIC0gY3VycmVudGx5IHVudXNlZCBpbiBpZGxlZm9yaworIyBnZW5lcmFsIHB1cnBvc2UgJ3Rvb2x0aXAnIHJvdXRpbmVzIC0gY3VycmVudGx5IHVudXNlZCBpbiBpZGxlbGliCiAjIChhbHRob3VnaCB0aGUgJ2NhbGx0aXBzJyBleHRlbnNpb24gaXMgcGFydGx5IGJhc2VkIG9uIHRoaXMgY29kZSkKICMgbWF5IGJlIHVzZWZ1bCBmb3Igc29tZSBwdXJwb3NlcyBpbiAob3IgYWxtb3N0IGluIDspIHRoZSBjdXJyZW50IHByb2plY3Qgc2NvcGUKICMgSWRlYXMgZ2xlYW5lZCBmcm9tIFB5U29sCkBAIC03NiwyMSArNzYsMjAgQEAKICAgICAgICAgZm9yIGl0ZW0gaW4gc2VsZi5pdGVtczoKICAgICAgICAgICAgIGxpc3Rib3guaW5zZXJ0KEVORCwgaXRlbSkKIAotZGVmIF90b29sdGlwKHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IHRvb2x0aXAiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBsYWJlbCA9IExhYmVsKHJvb3QsIHRleHQ9IlBsYWNlIHlvdXIgbW91c2Ugb3ZlciBidXR0b25zIikKK2RlZiBfdG9vbHRpcChwYXJlbnQpOiAgIyBodGVzdCAjCisgICAgdG9wID0gVG9wbGV2ZWwocGFyZW50KQorICAgIHRvcC50aXRsZSgiVGVzdCB0b29sdGlwIikKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgsIHkgKyAxNTApKQorICAgIGxhYmVsID0gTGFiZWwodG9wLCB0ZXh0PSJQbGFjZSB5b3VyIG1vdXNlIG92ZXIgYnV0dG9ucyIpCiAgICAgbGFiZWwucGFjaygpCi0gICAgYnV0dG9uMSA9IEJ1dHRvbihyb290LCB0ZXh0PSJCdXR0b24gMSIpCi0gICAgYnV0dG9uMiA9IEJ1dHRvbihyb290LCB0ZXh0PSJCdXR0b24gMiIpCisgICAgYnV0dG9uMSA9IEJ1dHRvbih0b3AsIHRleHQ9IkJ1dHRvbiAxIikKKyAgICBidXR0b24yID0gQnV0dG9uKHRvcCwgdGV4dD0iQnV0dG9uIDIiKQogICAgIGJ1dHRvbjEucGFjaygpCiAgICAgYnV0dG9uMi5wYWNrKCkKICAgICBUb29sVGlwKGJ1dHRvbjEsICJUaGlzIGlzIHRvb2x0aXAgdGV4dCBmb3IgYnV0dG9uMS4iKQogICAgIExpc3Rib3hUb29sVGlwKGJ1dHRvbjIsIFsiVGhpcyBpcyIsIm11bHRpcGxlIGxpbmUiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0b29sdGlwIHRleHQiLCJmb3IgYnV0dG9uMiJdKQotICAgIHJvb3QubWFpbmxvb3AoKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIGZyb20gaWRsZWxpYi5pZGxlX3Rlc3QuaHRlc3QgaW1wb3J0IHJ1bgpkaWZmIC0tZ2l0IGEvTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weSBiL0xpYi9pZGxlbGliL3RyZWUucHkKc2ltaWxhcml0eSBpbmRleCA5NiUKcmVuYW1lIGZyb20gTGliL2lkbGVsaWIvVHJlZVdpZGdldC5weQpyZW5hbWUgdG8gTGliL2lkbGVsaWIvdHJlZS5weQppbmRleCBhMTk1NzhmLi4yOTJjZTM2IDEwMDY0NAotLS0gYS9MaWIvaWRsZWxpYi9UcmVlV2lkZ2V0LnB5CisrKyBiL0xpYi9pZGxlbGliL3RyZWUucHkKQEAgLTE1LDEwICsxNSwxMiBAQAogIyAtIG9wdGltaXplIHRyZWUgcmVkcmF3IGFmdGVyIGV4cGFuZCBvZiBzdWJub2RlCiAKIGltcG9ydCBvcwotZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKLWZyb20gaWRsZWxpYiBpbXBvcnQgWm9vbUhlaWdodAotZnJvbSBpZGxlbGliLmNvbmZpZ0hhbmRsZXIgaW1wb3J0IGlkbGVDb25mCitmcm9tIHRraW50ZXIgaW1wb3J0ICoKK2Zyb20gdGtpbnRlci50dGsgaW1wb3J0IFNjcm9sbGJhcgorCitmcm9tIGlkbGVsaWIuY29uZmlnIGltcG9ydCBpZGxlQ29uZgorZnJvbSBpZGxlbGliIGltcG9ydCB6b29taGVpZ2h0CiAKIElDT05ESVIgPSAiSWNvbnMiCiAKQEAgLTQ0NSwyMiArNDQ3LDIxIEBACiAgICAgICAgIHNlbGYuY2FudmFzLnl2aWV3X3Njcm9sbCgxLCAidW5pdCIpCiAgICAgICAgIHJldHVybiAiYnJlYWsiCiAgICAgZGVmIHpvb21faGVpZ2h0KHNlbGYsIGV2ZW50KToKLSAgICAgICAgWm9vbUhlaWdodC56b29tX2hlaWdodChzZWxmLm1hc3RlcikKKyAgICAgICAgem9vbWhlaWdodC56b29tX2hlaWdodChzZWxmLm1hc3RlcikKICAgICAgICAgcmV0dXJuICJicmVhayIKIAogCi1kZWYgX3RyZWVfd2lkZ2V0KHBhcmVudCk6Ci0gICAgcm9vdCA9IFRrKCkKLSAgICByb290LnRpdGxlKCJUZXN0IFRyZWVXaWRnZXQiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICByb290Lmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKLSAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHJvb3QsIGJnPSJ3aGl0ZSIsIGhpZ2hsaWdodHRoaWNrbmVzcz0wLCB0YWtlZm9jdXM9MSkKK2RlZiBfdHJlZV93aWRnZXQocGFyZW50KTogICMgaHRlc3QgIworICAgIHRvcCA9IFRvcGxldmVsKHBhcmVudCkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdG9wLmdlb21ldHJ5KCIrJWQrJWQiICUgKHgrNTAsIHkrMTc1KSkKKyAgICBzYyA9IFNjcm9sbGVkQ2FudmFzKHRvcCwgYmc9IndoaXRlIiwgaGlnaGxpZ2h0dGhpY2tuZXNzPTAsIHRha2Vmb2N1cz0xKQogICAgIHNjLmZyYW1lLnBhY2soZXhwYW5kPTEsIGZpbGw9ImJvdGgiLCBzaWRlPUxFRlQpCi0gICAgaXRlbSA9IEZpbGVUcmVlSXRlbShvcy5nZXRjd2QoKSkKKyAgICBpdGVtID0gRmlsZVRyZWVJdGVtKElDT05ESVIpCiAgICAgbm9kZSA9IFRyZWVOb2RlKHNjLmNhbnZhcywgTm9uZSwgaXRlbSkKICAgICBub2RlLmV4cGFuZCgpCi0gICAgcm9vdC5tYWlubG9vcCgpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIyB0ZXN0X3RyZWUgaXMgY3VycmVudGx5IGEgY29weSBvZiB0aGlzCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF90cmVlX3dpZGdldCkKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkgYi9MaWIvaWRsZWxpYi91bmRvLnB5CnNpbWlsYXJpdHkgaW5kZXggOTUlCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1VuZG9EZWxlZ2F0b3IucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3VuZG8ucHkKaW5kZXggMWMyNTAyZC4uNDMzMmYxMCAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvVW5kb0RlbGVnYXRvci5weQorKysgYi9MaWIvaWRsZWxpYi91bmRvLnB5CkBAIC0xLDcgKzEsOSBAQAogaW1wb3J0IHN0cmluZwotZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKLWZyb20gaWRsZWxpYi5EZWxlZ2F0b3IgaW1wb3J0IERlbGVnYXRvcgorZnJvbSBpZGxlbGliLmRlbGVnYXRvciBpbXBvcnQgRGVsZWdhdG9yCisKKyMgdGtpbnR0ZXIgaW1wb3J0IG5vdCBuZWVkZWQgYmVjYXVzZSBtb2R1bGUgZG9lcyBub3QgY3JlYXRlIHdpZGdldHMsCisjIGFsdGhvdWdoIG1hbnkgbWV0aG9kcyBvcGVyYXRlIG9uIHRleHQgd2lkZ2V0IGFyZ3VtZW50cy4KIAogIyQgZXZlbnQgPDxyZWRvPj4KICMkIHdpbiA8Q29udHJvbC15PgpAQCAtMTU4LDcgKzE2MCw2IEBACiAKIAogY2xhc3MgQ29tbWFuZDoKLQogICAgICMgQmFzZSBjbGFzcyBmb3IgVW5kb2FibGUgY29tbWFuZHMKIAogICAgIHRhZ3MgPSBOb25lCkBAIC0yMDQsNyArMjA1LDYgQEAKIAogCiBjbGFzcyBJbnNlcnRDb21tYW5kKENvbW1hbmQpOgotCiAgICAgIyBVbmRvYWJsZSBpbnNlcnQgY29tbWFuZAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4MSwgY2hhcnMsIHRhZ3M9Tm9uZSk6CkBAIC0yNjIsNyArMjYyLDYgQEAKIAogCiBjbGFzcyBEZWxldGVDb21tYW5kKENvbW1hbmQpOgotCiAgICAgIyBVbmRvYWJsZSBkZWxldGUgY29tbWFuZAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGluZGV4MSwgaW5kZXgyPU5vbmUpOgpAQCAtMjk3LDggKzI5Niw4IEBACiAgICAgICAgIHRleHQuc2VlKCdpbnNlcnQnKQogICAgICAgICAjI3N5cy5fX3N0ZGVycl9fLndyaXRlKCJ1bmRvOiAlc1xuIiAlIHNlbGYpCiAKLWNsYXNzIENvbW1hbmRTZXF1ZW5jZShDb21tYW5kKToKIAorY2xhc3MgQ29tbWFuZFNlcXVlbmNlKENvbW1hbmQpOgogICAgICMgV3JhcHBlciBmb3IgYSBzZXF1ZW5jZSBvZiB1bmRvYWJsZSBjbWRzIHRvIGJlIHVuZG9uZS9yZWRvbmUKICAgICAjIGFzIGEgdW5pdAogCkBAIC0zMzgsMTMgKzMzNywxMiBAQAogCiAKIGRlZiBfdW5kb19kZWxlZ2F0b3IocGFyZW50KTogICMgaHRlc3QgIwotICAgIGltcG9ydCByZQotICAgIGltcG9ydCB0a2ludGVyIGFzIHRrCi0gICAgZnJvbSBpZGxlbGliLlBlcmNvbGF0b3IgaW1wb3J0IFBlcmNvbGF0b3IKLSAgICB1bmRvd2luID0gdGsuVG9wbGV2ZWwoKQorICAgIGZyb20gdGtpbnRlciBpbXBvcnQgVG9wbGV2ZWwsIFRleHQsIEJ1dHRvbgorICAgIGZyb20gaWRsZWxpYi5wZXJjb2xhdG9yIGltcG9ydCBQZXJjb2xhdG9yCisgICAgdW5kb3dpbiA9IFRvcGxldmVsKHBhcmVudCkKICAgICB1bmRvd2luLnRpdGxlKCJUZXN0IFVuZG9EZWxlZ2F0b3IiKQotICAgIHdpZHRoLCBoZWlnaHQsIHgsIHkgPSBsaXN0KG1hcChpbnQsIHJlLnNwbGl0KCdbeCtdJywgcGFyZW50Lmdlb21ldHJ5KCkpKSkKLSAgICB1bmRvd2luLmdlb21ldHJ5KCIrJWQrJWQiJSh4LCB5ICsgMTUwKSkKKyAgICB4LCB5ID0gbWFwKGludCwgcGFyZW50Lmdlb21ldHJ5KCkuc3BsaXQoJysnKVsxOl0pCisgICAgdW5kb3dpbi5nZW9tZXRyeSgiKyVkKyVkIiAlICh4LCB5ICsgMTc1KSkKIAogICAgIHRleHQgPSBUZXh0KHVuZG93aW4sIGhlaWdodD0xMCkKICAgICB0ZXh0LnBhY2soKQpAQCAtMzYyLDcgKzM2MCw3IEBACiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgaW1wb3J0IHVuaXR0ZXN0Ci0gICAgdW5pdHRlc3QubWFpbignaWRsZWxpYi5pZGxlX3Rlc3QudGVzdF91bmRvZGVsZWdhdG9yJywgdmVyYm9zaXR5PTIsCi0gICAgICAgICAgICAgICAgICBleGl0PUZhbHNlKQorICAgIHVuaXR0ZXN0Lm1haW4oJ2lkbGVsaWIuaWRsZV90ZXN0LnRlc3RfdW5kbycsIHZlcmJvc2l0eT0yLCBleGl0PUZhbHNlKQorCiAgICAgZnJvbSBpZGxlbGliLmlkbGVfdGVzdC5odGVzdCBpbXBvcnQgcnVuCiAgICAgcnVuKF91bmRvX2RlbGVnYXRvcikKZGlmZiAtLWdpdCBhL0xpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkgYi9MaWIvaWRsZWxpYi93aW5kb3dzLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi9pZGxlbGliL1dpbmRvd0xpc3QucHkKcmVuYW1lIHRvIExpYi9pZGxlbGliL3dpbmRvd3MucHkKaW5kZXggYmM3NDM0OC4uYTNmODU4YSAxMDA2NDQKLS0tIGEvTGliL2lkbGVsaWIvV2luZG93TGlzdC5weQorKysgYi9MaWIvaWRsZWxpYi93aW5kb3dzLnB5CkBAIC0xLDUgKzEsNiBAQAogZnJvbSB0a2ludGVyIGltcG9ydCAqCiAKKwogY2xhc3MgV2luZG93TGlzdDoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTQ4LDYgKzQ5LDcgQEAKICAgICAgICAgICAgICAgICB0LCB2LCB0YiA9IHN5cy5leGNfaW5mbygpCiAgICAgICAgICAgICAgICAgcHJpbnQoIndhcm5pbmc6IGNhbGxiYWNrIGZhaWxlZCBpbiBXaW5kb3dMaXN0IiwgdCwgIjoiLCB2KQogCisKIHJlZ2lzdHJ5ID0gV2luZG93TGlzdCgpCiAKIGFkZF93aW5kb3dzX3RvX21lbnUgPSByZWdpc3RyeS5hZGRfd2luZG93c190b19tZW51CmRpZmYgLS1naXQgYS9MaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5IGIvTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQpzaW1pbGFyaXR5IGluZGV4IDk0JQpyZW5hbWUgZnJvbSBMaWIvaWRsZWxpYi9ab29tSGVpZ2h0LnB5CnJlbmFtZSB0byBMaWIvaWRsZWxpYi96b29taGVpZ2h0LnB5CmluZGV4IGE1ZDY3OWUuLmFhNGE0MjcgMTAwNjQ0Ci0tLSBhL0xpYi9pZGxlbGliL1pvb21IZWlnaHQucHkKKysrIGIvTGliL2lkbGVsaWIvem9vbWhlaWdodC5weQpAQCAtMyw3ICszLDggQEAKIGltcG9ydCByZQogaW1wb3J0IHN5cwogCi1mcm9tIGlkbGVsaWIgaW1wb3J0IG1hY29zeFN1cHBvcnQKK2Zyb20gaWRsZWxpYiBpbXBvcnQgbWFjb3N4CisKIAogY2xhc3MgWm9vbUhlaWdodDoKIApAQCAtMjAsNiArMjEsNyBAQAogICAgICAgICB0b3AgPSBzZWxmLmVkaXR3aW4udG9wCiAgICAgICAgIHpvb21faGVpZ2h0KHRvcCkKIAorCiBkZWYgem9vbV9oZWlnaHQodG9wKToKICAgICBnZW9tID0gdG9wLndtX2dlb21ldHJ5KCkKICAgICBtID0gcmUubWF0Y2gociIoXGQrKXgoXGQrKVwrKC0/XGQrKVwrKC0/XGQrKSIsIGdlb20pCkBAIC0zMiw3ICszNCw3IEBACiAgICAgICAgIG5ld3kgPSAwCiAgICAgICAgIG5ld2hlaWdodCA9IG5ld2hlaWdodCAtIDcyCiAKLSAgICBlbGlmIG1hY29zeFN1cHBvcnQuaXNBcXVhVGsoKToKKyAgICBlbGlmIG1hY29zeC5pc0FxdWFUaygpOgogICAgICAgICAjIFRoZSAnODgnIGJlbG93IGlzIGEgbWFnaWMgbnVtYmVyIHRoYXQgYXZvaWRzIHBsYWNpbmcgdGhlIGJvdHRvbQogICAgICAgICAjIG9mIHRoZSB3aW5kb3cgYmVsb3cgdGhlIHBhbmVsIG9uIG15IG1hY2hpbmUuIEkgZG9uJ3Qga25vdyBob3cKICAgICAgICAgIyB0byBjYWxjdWxhdGUgdGhlIGNvcnJlY3QgdmFsdWUgZm9yIHRoaXMgd2l0aCB0a2ludGVyLgpkaWZmIC0tZ2l0IGEvTGliL2ltYXBsaWIucHkgYi9MaWIvaW1hcGxpYi5weQppbmRleCA0ZThhNGJiLi5jYWQ1MDhhIDEwMDY0NAotLS0gYS9MaWIvaW1hcGxpYi5weQorKysgYi9MaWIvaW1hcGxpYi5weQpAQCAtMTExLDcgKzExMSwxNSBAQAogIyBMaXRlcmFsIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgogTGl0ZXJhbCA9IHJlLmNvbXBpbGUoYnInLip7KD9QPHNpemU+XGQrKX0kJywgcmUuQVNDSUkpCiBNYXBDUkxGID0gcmUuY29tcGlsZShicidcclxufFxyfFxuJykKLVJlc3BvbnNlX2NvZGUgPSByZS5jb21waWxlKGJyJ1xbKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPlteXF1dKikpP1xdJykKKyMgV2Ugbm8gbG9uZ2VyIGV4Y2x1ZGUgdGhlICddJyBjaGFyYWN0ZXIgZnJvbSB0aGUgZGF0YSBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQorIyBjb2RlLCBldmVuIHRob3VnaCBpdCB2aW9sYXRlcyB0aGUgUkZDLiAgUG9wdWxhciBJTUFQIHNlcnZlcnMgc3VjaCBhcyBHbWFpbAorIyBhbGxvdyBmbGFncyB3aXRoICddJywgYW5kIHRoZXJlIGFyZSBwcm9ncmFtcyAoaW5jbHVkaW5nIGltYXBsaWIhKSB0aGF0IGNhbgorIyBwcm9kdWNlIHRoZW0uICBUaGUgcHJvYmxlbSB3aXRoIHRoaXMgaXMgaWYgdGhlICd0ZXh0JyBwb3J0aW9uIG9mIHRoZSByZXNwb25zZQorIyBpbmNsdWRlcyBhICddJyB3ZSdsbCBwYXJzZSB0aGUgcmVzcG9uc2Ugd3JvbmcgKHdoaWNoIGlzIHRoZSBwb2ludCBvZiB0aGUgUkZDCisjIHJlc3RyaWN0aW9uKS4gIEhvd2V2ZXIsIHRoYXQgc2VlbXMgbGVzcyBsaWtlbHkgdG8gYmUgYSBwcm9ibGVtIGluIHByYWN0aWNlCisjIHRoYW4gYmVpbmcgdW5hYmxlIHRvIGNvcnJlY3RseSBwYXJzZSBmbGFncyB0aGF0IGluY2x1ZGUgJ10nIGNoYXJzLCB3aGljaAorIyB3YXMgcmVwb3J0ZWQgYXMgYSByZWFsLXdvcmxkIHByb2JsZW0gaW4gaXNzdWUgIzIxODE1LgorUmVzcG9uc2VfY29kZSA9IHJlLmNvbXBpbGUoYnInXFsoP1A8dHlwZT5bQS1aLV0rKSggKD9QPGRhdGE+LiopKT9cXScpCiBVbnRhZ2dlZF9yZXNwb25zZSA9IHJlLmNvbXBpbGUoYnInXCogKD9QPHR5cGU+W0EtWi1dKykoICg/UDxkYXRhPi4qKSk/JykKICMgVW50YWdnZWRfc3RhdHVzIGlzIG5vIGxvbmdlciB1c2VkOyBrZXB0IGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5CiBVbnRhZ2dlZF9zdGF0dXMgPSByZS5jb21waWxlKApAQCAtMTI0LDcgKzEzMiw3IEBACiAKIGNsYXNzIElNQVA0OgogCi0gICAgIiIiSU1BUDQgY2xpZW50IGNsYXNzLgorICAgIHIiIiJJTUFQNCBjbGllbnQgY2xhc3MuCiAKICAgICBJbnN0YW50aWF0ZSB3aXRoOiBJTUFQNChbaG9zdFssIHBvcnRdXSkKIApAQCAtMTI1OSw3ICsxMjY3LDEwIEBACiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic3NsX2NvbnRleHQgYW5kIGNlcnRmaWxlIGFyZ3VtZW50cyBhcmUgbXV0dWFsbHkgIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4Y2x1c2l2ZSIpCi0KKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBzc2xfY29udGV4dCBpbnN0ZWFkIiwgRGVwcmVjYXRpb25XYXJuaW5nLCAyKQogICAgICAgICAgICAgc2VsZi5rZXlmaWxlID0ga2V5ZmlsZQogICAgICAgICAgICAgc2VsZi5jZXJ0ZmlsZSA9IGNlcnRmaWxlCiAgICAgICAgICAgICBpZiBzc2xfY29udGV4dCBpcyBOb25lOgpAQCAtMTUyNyw3ICsxNTM4LDcgQEAKICAgICAoJ3NlbGVjdCcsICgnL3RtcC95eXogMicsKSksCiAgICAgKCdzZWFyY2gnLCAoTm9uZSwgJ1NVQkpFQ1QnLCAndGVzdCcpKSwKICAgICAoJ2ZldGNoJywgKCcxJywgJyhGTEFHUyBJTlRFUk5BTERBVEUgUkZDODIyKScpKSwKLSAgICAoJ3N0b3JlJywgKCcxJywgJ0ZMQUdTJywgJyhcRGVsZXRlZCknKSksCisgICAgKCdzdG9yZScsICgnMScsICdGTEFHUycsIHInKFxEZWxldGVkKScpKSwKICAgICAoJ25hbWVzcGFjZScsICgpKSwKICAgICAoJ2V4cHVuZ2UnLCAoKSksCiAgICAgKCdyZWNlbnQnLCAoKSksCmRpZmYgLS1naXQgYS9MaWIvaW1naGRyLnB5IGIvTGliL2ltZ2hkci5weQppbmRleCBiMjY3OTI1Li43NmU4YWJiIDEwMDY0NAotLS0gYS9MaWIvaW1naGRyLnB5CisrKyBiL0xpYi9pbWdoZHIucHkKQEAgLTEsNSArMSw3IEBACiAiIiJSZWNvZ25pemUgaW1hZ2UgZmlsZSBmb3JtYXRzIGJhc2VkIG9uIHRoZWlyIGZpcnN0IGZldyBieXRlcy4iIiIKIAorZnJvbSBvcyBpbXBvcnQgUGF0aExpa2UKKwogX19hbGxfXyA9IFsid2hhdCJdCiAKICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIwpAQCAtMTAsNyArMTIsNyBAQAogICAgIGYgPSBOb25lCiAgICAgdHJ5OgogICAgICAgICBpZiBoIGlzIE5vbmU6Ci0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGUsIChzdHIsIFBhdGhMaWtlKSk6CiAgICAgICAgICAgICAgICAgZiA9IG9wZW4oZmlsZSwgJ3JiJykKICAgICAgICAgICAgICAgICBoID0gZi5yZWFkKDMyKQogICAgICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL0xpYi9pbXAucHkgYi9MaWIvaW1wLnB5CmluZGV4IGUyNjQzOTEuLjc4MWZmMjMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXAucHkKKysrIGIvTGliL2ltcC5weQpAQCAtMzAsNyArMzAsNyBAQAogCiB3YXJuaW5ncy53YXJuKCJ0aGUgaW1wIG1vZHVsZSBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBpbXBvcnRsaWI7ICIKICAgICAgICAgICAgICAgInNlZSB0aGUgbW9kdWxlJ3MgZG9jdW1lbnRhdGlvbiBmb3IgYWx0ZXJuYXRpdmUgdXNlcyIsCi0gICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAKICMgREVQUkVDQVRFRAogU0VBUkNIX0VSUk9SID0gMApkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5CmluZGV4IDllZWNiZmUuLmE1MzFhMDMgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weQorKysgYi9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkKQEAgLTM2LDIzICszNiw2IEBACiAgICAgcmV0dXJuIHR5cGUoc3lzKShuYW1lKQogCiAKLWNsYXNzIF9NYW5hZ2VSZWxvYWQ6Ci0KLSAgICAiIiJNYW5hZ2VzIHRoZSBwb3NzaWJsZSBjbGVhbi11cCBvZiBzeXMubW9kdWxlcyBmb3IgbG9hZF9tb2R1bGUoKS4iIiIKLQotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBuYW1lKToKLSAgICAgICAgc2VsZi5fbmFtZSA9IG5hbWUKLQotICAgIGRlZiBfX2VudGVyX18oc2VsZik6Ci0gICAgICAgIHNlbGYuX2lzX3JlbG9hZCA9IHNlbGYuX25hbWUgaW4gc3lzLm1vZHVsZXMKLQotICAgIGRlZiBfX2V4aXRfXyhzZWxmLCAqYXJncyk6Ci0gICAgICAgIGlmIGFueShhcmcgaXMgbm90IE5vbmUgZm9yIGFyZyBpbiBhcmdzKSBhbmQgbm90IHNlbGYuX2lzX3JlbG9hZDoKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBkZWwgc3lzLm1vZHVsZXNbc2VsZi5fbmFtZV0KLSAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KICMgTW9kdWxlLWxldmVsIGxvY2tpbmcgIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogIyBBIGRpY3QgbWFwcGluZyBtb2R1bGUgbmFtZXMgdG8gd2Vha3JlZnMgb2YgX01vZHVsZUxvY2sgaW5zdGFuY2VzCkBAIC0yNzAsNyArMjUzLDcgQEAKICMgTW9kdWxlIHNwZWNpZmljYXRpb25zICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZGVmIF9tb2R1bGVfcmVwcihtb2R1bGUpOgotICAgICMgVGhlIGltcGxlbWVudGF0aW9uIG9mIE1vZHVsZVR5cGVfX3JlcHJfXygpLgorICAgICMgVGhlIGltcGxlbWVudGF0aW9uIG9mIE1vZHVsZVR5cGUuX19yZXByX18oKS4KICAgICBsb2FkZXIgPSBnZXRhdHRyKG1vZHVsZSwgJ19fbG9hZGVyX18nLCBOb25lKQogICAgIGlmIGhhc2F0dHIobG9hZGVyLCAnbW9kdWxlX3JlcHInKToKICAgICAgICAgIyBBcyBzb29uIGFzIEJ1aWx0aW5JbXBvcnRlciwgRnJvemVuSW1wb3J0ZXIsIGFuZCBOYW1lc3BhY2VMb2FkZXIKQEAgLTU3Niw5ICs1NTksOCBAQAogICAgICAgICAjIG1vZHVsZSBjcmVhdGlvbiBzaG91bGQgYmUgdXNlZC4KICAgICAgICAgbW9kdWxlID0gc3BlYy5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogICAgIGVsaWYgaGFzYXR0cihzcGVjLmxvYWRlciwgJ2V4ZWNfbW9kdWxlJyk6Ci0gICAgICAgIF93YXJuaW5ncy53YXJuKCdzdGFydGluZyBpbiBQeXRob24gMy42LCBsb2FkZXJzIGRlZmluaW5nIGV4ZWNfbW9kdWxlKCkgJwotICAgICAgICAgICAgICAgICAgICAgICAnbXVzdCBhbHNvIGRlZmluZSBjcmVhdGVfbW9kdWxlKCknLAotICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2xvYWRlcnMgdGhhdCBkZWZpbmUgZXhlY19tb2R1bGUoKSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdtdXN0IGFsc28gZGVmaW5lIGNyZWF0ZV9tb2R1bGUoKScpCiAgICAgaWYgbW9kdWxlIGlzIE5vbmU6CiAgICAgICAgIG1vZHVsZSA9IF9uZXdfbW9kdWxlKHNwZWMubmFtZSkKICAgICBfaW5pdF9tb2R1bGVfYXR0cnMoc3BlYywgbW9kdWxlKQpAQCAtNjAzLDcgKzU4NSw3IEBACiAKICMgVXNlZCBieSBpbXBvcnRsaWIucmVsb2FkKCkgYW5kIF9sb2FkX21vZHVsZV9zaGltKCkuCiBkZWYgX2V4ZWMoc3BlYywgbW9kdWxlKToKLSAgICAiIiJFeGVjdXRlIHRoZSBzcGVjIGluIGFuIGV4aXN0aW5nIG1vZHVsZSdzIG5hbWVzcGFjZS4iIiIKKyAgICAiIiJFeGVjdXRlIHRoZSBzcGVjJ3Mgc3BlY2lmaWVkIG1vZHVsZSBpbiBhbiBleGlzdGluZyBtb2R1bGUncyBuYW1lc3BhY2UuIiIiCiAgICAgbmFtZSA9IHNwZWMubmFtZQogICAgIF9pbXAuYWNxdWlyZV9sb2NrKCkKICAgICB3aXRoIF9Nb2R1bGVMb2NrTWFuYWdlcihuYW1lKToKQEAgLTg3NywxNCArODU5LDIxIEBACiAKIAogZGVmIF9maW5kX3NwZWMobmFtZSwgcGF0aCwgdGFyZ2V0PU5vbmUpOgotICAgICIiIkZpbmQgYSBtb2R1bGUncyBsb2FkZXIuIiIiCi0gICAgaWYgc3lzLm1ldGFfcGF0aCBpcyBub3QgTm9uZSBhbmQgbm90IHN5cy5tZXRhX3BhdGg6CisgICAgIiIiRmluZCBhIG1vZHVsZSdzIHNwZWMuIiIiCisgICAgbWV0YV9wYXRoID0gc3lzLm1ldGFfcGF0aAorICAgIGlmIG1ldGFfcGF0aCBpcyBOb25lOgorICAgICAgICAjIFB5SW1wb3J0X0NsZWFudXAoKSBpcyBydW5uaW5nIG9yIGhhcyBiZWVuIGNhbGxlZC4KKyAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoInN5cy5tZXRhX3BhdGggaXMgTm9uZSwgUHl0aG9uIGlzIGxpa2VseSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJzaHV0dGluZyBkb3duIikKKworICAgIGlmIG5vdCBtZXRhX3BhdGg6CiAgICAgICAgIF93YXJuaW5ncy53YXJuKCdzeXMubWV0YV9wYXRoIGlzIGVtcHR5JywgSW1wb3J0V2FybmluZykKKwogICAgICMgV2UgY2hlY2sgc3lzLm1vZHVsZXMgaGVyZSBmb3IgdGhlIHJlbG9hZCBjYXNlLiAgV2hpbGUgYSBwYXNzZWQtaW4KICAgICAjIHRhcmdldCB3aWxsIHVzdWFsbHkgaW5kaWNhdGUgYSByZWxvYWQgdGhlcmUgaXMgbm8gZ3VhcmFudGVlLCB3aGVyZWFzCiAgICAgIyBzeXMubW9kdWxlcyBwcm92aWRlcyBvbmUuCiAgICAgaXNfcmVsb2FkID0gbmFtZSBpbiBzeXMubW9kdWxlcwotICAgIGZvciBmaW5kZXIgaW4gc3lzLm1ldGFfcGF0aDoKKyAgICBmb3IgZmluZGVyIGluIG1ldGFfcGF0aDoKICAgICAgICAgd2l0aCBfSW1wb3J0TG9ja0NvbnRleHQoKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBmaW5kX3NwZWMgPSBmaW5kZXIuZmluZF9zcGVjCkBAIC05MjUsNiArOTE0LDkgQEAKICAgICBpZiBsZXZlbCA+IDA6CiAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHBhY2thZ2UsIHN0cik6CiAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ19fcGFja2FnZV9fIG5vdCBzZXQgdG8gYSBzdHJpbmcnKQorICAgICAgICBlbGlmIG5vdCBwYWNrYWdlOgorICAgICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ2F0dGVtcHRlZCByZWxhdGl2ZSBpbXBvcnQgd2l0aCBubyBrbm93biBwYXJlbnQgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3BhY2thZ2UnKQogICAgICAgICBlbGlmIHBhY2thZ2Ugbm90IGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgbXNnID0gKCdQYXJlbnQgbW9kdWxlIHshcn0gbm90IGxvYWRlZCwgY2Fubm90IHBlcmZvcm0gcmVsYXRpdmUgJwogICAgICAgICAgICAgICAgICAgICdpbXBvcnQnKQpAQCAtOTUwLDEwICs5NDIsMTAgQEAKICAgICAgICAgICAgIHBhdGggPSBwYXJlbnRfbW9kdWxlLl9fcGF0aF9fCiAgICAgICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKICAgICAgICAgICAgIG1zZyA9IChfRVJSX01TRyArICc7IHshcn0gaXMgbm90IGEgcGFja2FnZScpLmZvcm1hdChuYW1lLCBwYXJlbnQpCi0gICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtc2csIG5hbWU9bmFtZSkgZnJvbSBOb25lCisgICAgICAgICAgICByYWlzZSBNb2R1bGVOb3RGb3VuZEVycm9yKG1zZywgbmFtZT1uYW1lKSBmcm9tIE5vbmUKICAgICBzcGVjID0gX2ZpbmRfc3BlYyhuYW1lLCBwYXRoKQogICAgIGlmIHNwZWMgaXMgTm9uZToKLSAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCisgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IoX0VSUl9NU0cuZm9ybWF0KG5hbWUpLCBuYW1lPW5hbWUpCiAgICAgZWxzZToKICAgICAgICAgbW9kdWxlID0gX2xvYWRfdW5sb2NrZWQoc3BlYykKICAgICBpZiBwYXJlbnQ6CkBAIC05ODksMTAgKzk4MSwxMSBAQAogICAgICAgICBfaW1wLnJlbGVhc2VfbG9jaygpCiAgICAgICAgIG1lc3NhZ2UgPSAoJ2ltcG9ydCBvZiB7fSBoYWx0ZWQ7ICcKICAgICAgICAgICAgICAgICAgICAnTm9uZSBpbiBzeXMubW9kdWxlcycuZm9ybWF0KG5hbWUpKQotICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCBuYW1lPW5hbWUpCisgICAgICAgIHJhaXNlIE1vZHVsZU5vdEZvdW5kRXJyb3IobWVzc2FnZSwgbmFtZT1uYW1lKQogICAgIF9sb2NrX3VubG9ja19tb2R1bGUobmFtZSkKICAgICByZXR1cm4gbW9kdWxlCiAKKwogZGVmIF9oYW5kbGVfZnJvbWxpc3QobW9kdWxlLCBmcm9tbGlzdCwgaW1wb3J0Xyk6CiAgICAgIiIiRmlndXJlIG91dCB3aGF0IF9faW1wb3J0X18gc2hvdWxkIHJldHVybi4KIApAQCAtMTAxNCwxMyArMTAwNywxMiBAQAogICAgICAgICAgICAgICAgIGZyb21fbmFtZSA9ICd7fS57fScuZm9ybWF0KG1vZHVsZS5fX25hbWVfXywgeCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIF9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoaW1wb3J0XywgZnJvbV9uYW1lKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBleGM6CisgICAgICAgICAgICAgICAgZXhjZXB0IE1vZHVsZU5vdEZvdW5kRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgICAgICAgICAjIEJhY2t3YXJkcy1jb21wYXRpYmlsaXR5IGRpY3RhdGVzIHdlIGlnbm9yZSBmYWlsZWQKICAgICAgICAgICAgICAgICAgICAgIyBpbXBvcnRzIHRyaWdnZXJlZCBieSBmcm9tbGlzdCBmb3IgbW9kdWxlcyB0aGF0IGRvbid0CiAgICAgICAgICAgICAgICAgICAgICMgZXhpc3QuCi0gICAgICAgICAgICAgICAgICAgIGlmIHN0cihleGMpLnN0YXJ0c3dpdGgoX0VSUl9NU0dfUFJFRklYKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09IGZyb21fbmFtZToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBpZiBleGMubmFtZSA9PSBmcm9tX25hbWU6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgIHJldHVybiBtb2R1bGUKIApAQCAtMTAzMyw3ICsxMDI1LDE5IEBACiAKICAgICAiIiIKICAgICBwYWNrYWdlID0gZ2xvYmFscy5nZXQoJ19fcGFja2FnZV9fJykKLSAgICBpZiBwYWNrYWdlIGlzIE5vbmU6CisgICAgc3BlYyA9IGdsb2JhbHMuZ2V0KCdfX3NwZWNfXycpCisgICAgaWYgcGFja2FnZSBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgc3BlYyBpcyBub3QgTm9uZSBhbmQgcGFja2FnZSAhPSBzcGVjLnBhcmVudDoKKyAgICAgICAgICAgIF93YXJuaW5ncy53YXJuKCJfX3BhY2thZ2VfXyAhPSBfX3NwZWNfXy5wYXJlbnQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZiIoe3BhY2thZ2Uhcn0gIT0ge3NwZWMucGFyZW50IXJ9KSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRXYXJuaW5nLCBzdGFja2xldmVsPTMpCisgICAgICAgIHJldHVybiBwYWNrYWdlCisgICAgZWxpZiBzcGVjIGlzIG5vdCBOb25lOgorICAgICAgICByZXR1cm4gc3BlYy5wYXJlbnQKKyAgICBlbHNlOgorICAgICAgICBfd2FybmluZ3Mud2FybigiY2FuJ3QgcmVzb2x2ZSBwYWNrYWdlIGZyb20gX19zcGVjX18gb3IgX19wYWNrYWdlX18sICIKKyAgICAgICAgICAgICAgICAgICAgICAgImZhbGxpbmcgYmFjayBvbiBfX25hbWVfXyBhbmQgX19wYXRoX18iLAorICAgICAgICAgICAgICAgICAgICAgICBJbXBvcnRXYXJuaW5nLCBzdGFja2xldmVsPTMpCiAgICAgICAgIHBhY2thZ2UgPSBnbG9iYWxzWydfX25hbWVfXyddCiAgICAgICAgIGlmICdfX3BhdGhfXycgbm90IGluIGdsb2JhbHM6CiAgICAgICAgICAgICBwYWNrYWdlID0gcGFja2FnZS5ycGFydGl0aW9uKCcuJylbMF0KZGlmZiAtLWdpdCBhL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBiL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weQppbmRleCBlNTRkNjkxLi41Y2I1OGFiIDEwMDY0NAotLS0gYS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkKKysrIGIvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5CkBAIC0xMzcsMTAgKzEzNyw2IEBACiAjIGEgLnB5YyBmaWxlIGluIHRleHQgbW9kZSB0aGUgbWFnaWMgbnVtYmVyIHdpbGwgYmUgd3Jvbmc7IGFsc28sIHRoZQogIyBBcHBsZSBNUFcgY29tcGlsZXIgc3dhcHMgdGhlaXIgdmFsdWVzLCBib3RjaGluZyBzdHJpbmcgY29uc3RhbnRzLgogIwotIyBUaGUgbWFnaWMgbnVtYmVycyBtdXN0IGJlIHNwYWNlZCBhcGFydCBhdCBsZWFzdCAyIHZhbHVlcywgYXMgdGhlCi0jIC1VIGludGVycGV0ZXIgZmxhZyB3aWxsIGNhdXNlIE1BR0lDKzEgYmVpbmcgdXNlZC4gVGhleSBoYXZlIGJlZW4KLSMgb2RkIG51bWJlcnMgZm9yIHNvbWUgdGltZSBub3cuCi0jCiAjIFRoZXJlIHdlcmUgYSB2YXJpZXR5IG9mIG9sZCBzY2hlbWVzIGZvciBzZXR0aW5nIHRoZSBtYWdpYyBudW1iZXIuCiAjIFRoZSBjdXJyZW50IHdvcmtpbmcgc2NoZW1lIGlzIHRvIGluY3JlbWVudCB0aGUgcHJldmlvdXMgdmFsdWUgYnkKICMgMTAuCkBAIC0yMzEsNiArMjI3LDE4IEBACiAjICAgICBQeXRob24gMy41YjIgIDMzNDAgKGZpeCBkaWN0aW9uYXJ5IGRpc3BsYXkgZXZhbHVhdGlvbiBvcmRlciAjMTEyMDUpCiAjICAgICBQeXRob24gMy41YjIgIDMzNTAgKGFkZCBHRVRfWUlFTERfRlJPTV9JVEVSIG9wY29kZSAjMjQ0MDApCiAjICAgICBQeXRob24gMy41LjIgIDMzNTEgKGZpeCBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCBvcGNvZGUgIzI3Mjg2KQorIyAgICAgUHl0aG9uIDMuNmEwICAzMzYwIChhZGQgRk9STUFUX1ZBTFVFIG9wY29kZSAjMjU0ODMKKyMgICAgIFB5dGhvbiAzLjZhMCAgMzM2MSAobGluZW5vIGRlbHRhIG9mIGNvZGUuY29fbG5vdGFiIGJlY29tZXMgc2lnbmVkKQorIyAgICAgUHl0aG9uIDMuNmExICAzMzcwICgxNiBiaXQgd29yZGNvZGUpCisjICAgICBQeXRob24gMy42YTEgIDMzNzEgKGFkZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZSAjMjcxNDApCisjICAgICBQeXRob24gMy42YTEgIDMzNzIgKE1BS0VfRlVOQ1RJT04gc2ltcGxpZmljYXRpb24sIHJlbW92ZSBNQUtFX0NMT1NVUkUKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIzI3MDk1KQorIyAgICAgUHl0aG9uIDMuNmIxICAzMzczIChhZGQgQlVJTERfU1RSSU5HIG9wY29kZSAjMjcwNzgpCisjICAgICBQeXRob24gMy42YjEgIDMzNzUgKGFkZCBTRVRVUF9BTk5PVEFUSU9OUyBhbmQgU1RPUkVfQU5OT1RBVElPTiBvcGNvZGVzCisjICAgICAgICAgICAgICAgICAgICAgICAgICMyNzk4NSkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NiAoc2ltcGxpZnkgQ0FMTF9GVU5DVElPTnMgJiBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCkKKyMgICAgIFB5dGhvbiAzLjZiMSAgMzM3NyAoc2V0IF9fY2xhc3NfXyBjZWxsIGZyb20gdHlwZS5fX25ld19fICMyMzcyMikKKyMgICAgIFB5dGhvbiAzLjZiMiAgMzM3OCAoYWRkIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwgIzI4MjU3KQogIwogIyBNQUdJQyBtdXN0IGNoYW5nZSB3aGVuZXZlciB0aGUgYnl0ZWNvZGUgZW1pdHRlZCBieSB0aGUgY29tcGlsZXIgbWF5IG5vCiAjIGxvbmdlciBiZSB1bmRlcnN0b29kIGJ5IG9sZGVyIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgZXZhbCBsb29wICh1c3VhbGx5CkBAIC0yMzksNyArMjQ3LDcgQEAKICMgV2hlbmV2ZXIgTUFHSUNfTlVNQkVSIGlzIGNoYW5nZWQsIHRoZSByYW5nZXMgaW4gdGhlIG1hZ2ljX3ZhbHVlcyBhcnJheQogIyBpbiBQQy9sYXVuY2hlci5jIG11c3QgYWxzbyBiZSB1cGRhdGVkLgogCi1NQUdJQ19OVU1CRVIgPSAoMzM1MSkudG9fYnl0ZXMoMiwgJ2xpdHRsZScpICsgYidcclxuJworTUFHSUNfTlVNQkVSID0gKDMzNzgpLnRvX2J5dGVzKDIsICdsaXR0bGUnKSArIGInXHJcbicKIF9SQVdfTUFHSUNfTlVNQkVSID0gaW50LmZyb21fYnl0ZXMoTUFHSUNfTlVNQkVSLCAnbGl0dGxlJykgICMgRm9yIGltcG9ydC5jCiAKIF9QWUNBQ0hFID0gJ19fcHljYWNoZV9fJwpAQCAtMjc2LDYgKzI4NCw3IEBACiAgICAgICAgICAgICBtZXNzYWdlID0gJ2RlYnVnX292ZXJyaWRlIG9yIG9wdGltaXphdGlvbiBtdXN0IGJlIHNldCB0byBOb25lJwogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKG1lc3NhZ2UpCiAgICAgICAgIG9wdGltaXphdGlvbiA9ICcnIGlmIGRlYnVnX292ZXJyaWRlIGVsc2UgMQorICAgIHBhdGggPSBfb3MuZnNwYXRoKHBhdGgpCiAgICAgaGVhZCwgdGFpbCA9IF9wYXRoX3NwbGl0KHBhdGgpCiAgICAgYmFzZSwgc2VwLCByZXN0ID0gdGFpbC5ycGFydGl0aW9uKCcuJykKICAgICB0YWcgPSBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnCkBAIC0zMDYsNiArMzE1LDcgQEAKICAgICAiIiIKICAgICBpZiBzeXMuaW1wbGVtZW50YXRpb24uY2FjaGVfdGFnIGlzIE5vbmU6CiAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoJ3N5cy5pbXBsZW1lbnRhdGlvbi5jYWNoZV90YWcgaXMgTm9uZScpCisgICAgcGF0aCA9IF9vcy5mc3BhdGgocGF0aCkKICAgICBoZWFkLCBweWNhY2hlX2ZpbGVuYW1lID0gX3BhdGhfc3BsaXQocGF0aCkKICAgICBoZWFkLCBweWNhY2hlID0gX3BhdGhfc3BsaXQoaGVhZCkKICAgICBpZiBweWNhY2hlICE9IF9QWUNBQ0hFOgpAQCAtMzcxLDE0ICszODEsNiBAQAogICAgIHJldHVybiBtb2RlCiAKIAotZGVmIF92ZXJib3NlX21lc3NhZ2UobWVzc2FnZSwgKmFyZ3MsIHZlcmJvc2l0eT0xKToKLSAgICAiIiJQcmludCB0aGUgbWVzc2FnZSB0byBzdGRlcnIgaWYgLXYvUFlUSE9OVkVSQk9TRSBpcyB0dXJuZWQgb24uIiIiCi0gICAgaWYgc3lzLmZsYWdzLnZlcmJvc2UgPj0gdmVyYm9zaXR5OgotICAgICAgICBpZiBub3QgbWVzc2FnZS5zdGFydHN3aXRoKCgnIycsICdpbXBvcnQgJykpOgotICAgICAgICAgICAgbWVzc2FnZSA9ICcjICcgKyBtZXNzYWdlCi0gICAgICAgIHByaW50KG1lc3NhZ2UuZm9ybWF0KCphcmdzKSwgZmlsZT1zeXMuc3RkZXJyKQotCi0KIGRlZiBfY2hlY2tfbmFtZShtZXRob2QpOgogICAgICIiIkRlY29yYXRvciB0byB2ZXJpZnkgdGhhdCB0aGUgbW9kdWxlIGJlaW5nIHJlcXVlc3RlZCBtYXRjaGVzIHRoZSBvbmUgdGhlCiAgICAgbG9hZGVyIGNhbiBoYW5kbGUuCkBAIC00NDgsMTUgKzQ1MCwxNSBAQAogICAgIHJhd19zaXplID0gZGF0YVs4OjEyXQogICAgIGlmIG1hZ2ljICE9IE1BR0lDX05VTUJFUjoKICAgICAgICAgbWVzc2FnZSA9ICdiYWQgbWFnaWMgbnVtYmVyIGluIHshcn06IHshcn0nLmZvcm1hdChuYW1lLCBtYWdpYykKLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgcmFpc2UgSW1wb3J0RXJyb3IobWVzc2FnZSwgKipleGNfZGV0YWlscykKICAgICBlbGlmIGxlbihyYXdfdGltZXN0YW1wKSAhPSA0OgogICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgdGltZXN0YW1wIGluIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgne30nLCBtZXNzYWdlKQogICAgICAgICByYWlzZSBFT0ZFcnJvcihtZXNzYWdlKQogICAgIGVsaWYgbGVuKHJhd19zaXplKSAhPSA0OgogICAgICAgICBtZXNzYWdlID0gJ3JlYWNoZWQgRU9GIHdoaWxlIHJlYWRpbmcgc2l6ZSBvZiBzb3VyY2UgaW4geyFyfScuZm9ybWF0KG5hbWUpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fScsIG1lc3NhZ2UpCiAgICAgICAgIHJhaXNlIEVPRkVycm9yKG1lc3NhZ2UpCiAgICAgaWYgc291cmNlX3N0YXRzIGlzIG5vdCBOb25lOgogICAgICAgICB0cnk6CkBAIC00NjYsNyArNDY4LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGlmIF9yX2xvbmcocmF3X3RpbWVzdGFtcCkgIT0gc291cmNlX210aW1lOgogICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAnYnl0ZWNvZGUgaXMgc3RhbGUgZm9yIHshcn0nLmZvcm1hdChuYW1lKQotICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3t9JywgbWVzc2FnZSkKICAgICAgICAgICAgICAgICByYWlzZSBJbXBvcnRFcnJvcihtZXNzYWdlLCAqKmV4Y19kZXRhaWxzKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzb3VyY2Vfc2l6ZSA9IHNvdXJjZV9zdGF0c1snc2l6ZSddICYgMHhGRkZGRkZGRgpAQCAtNDgzLDcgKzQ4NSw3IEBACiAgICAgIiIiQ29tcGlsZSBieXRlY29kZSBhcyByZXR1cm5lZCBieSBfdmFsaWRhdGVfYnl0ZWNvZGVfaGVhZGVyKCkuIiIiCiAgICAgY29kZSA9IG1hcnNoYWwubG9hZHMoZGF0YSkKICAgICBpZiBpc2luc3RhbmNlKGNvZGUsIF9jb2RlX3R5cGUpOgotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHshcn0nLCBieXRlY29kZV9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20geyFyfScsIGJ5dGVjb2RlX3BhdGgpCiAgICAgICAgIGlmIHNvdXJjZV9wYXRoIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgX2ltcC5fZml4X2NvX2ZpbGVuYW1lKGNvZGUsIHNvdXJjZV9wYXRoKQogICAgICAgICByZXR1cm4gY29kZQpAQCAtNTQxLDYgKzU0Myw4IEBACiAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBsb2FkZXIuZ2V0X2ZpbGVuYW1lKG5hbWUpCiAgICAgICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcworICAgIGVsc2U6CisgICAgICAgIGxvY2F0aW9uID0gX29zLmZzcGF0aChsb2NhdGlvbikKIAogICAgICMgSWYgdGhlIGxvY2F0aW9uIGlzIG9uIHRoZSBmaWxlc3lzdGVtLCBidXQgZG9lc24ndCBhY3R1YWxseSBleGlzdCwKICAgICAjIHdlIGNvdWxkIHJldHVybiBOb25lIGhlcmUsIGluZGljYXRpbmcgdGhhdCB0aGUgbG9jYXRpb24gaXMgbm90CkBAIC02MTAsNyArNjE0LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJlZ2lzdHJ5X2tleSA9IGNscy5SRUdJU1RSWV9LRVkKICAgICAgICAga2V5ID0gcmVnaXN0cnlfa2V5LmZvcm1hdChmdWxsbmFtZT1mdWxsbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249JyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICB3aXRoIGNscy5fb3Blbl9yZWdpc3RyeShrZXkpIGFzIGhrZXk6CiAgICAgICAgICAgICAgICAgZmlsZXBhdGggPSBfd2lucmVnLlF1ZXJ5VmFsdWUoaGtleSwgJycpCkBAIC02NzMsNiArNjc3LDcgQEAKICAgICAgICAgX2Jvb3RzdHJhcC5fY2FsbF93aXRoX2ZyYW1lc19yZW1vdmVkKGV4ZWMsIGNvZGUsIG1vZHVsZS5fX2RpY3RfXykKIAogICAgIGRlZiBsb2FkX21vZHVsZShzZWxmLCBmdWxsbmFtZSk6CisgICAgICAgICIiIlRoaXMgbW9kdWxlIGlzIGRlcHJlY2F0ZWQuIiIiCiAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQogCiAKQEAgLTc2NiwyMSArNzcxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCAoSW1wb3J0RXJyb3IsIEVPRkVycm9yKToKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ3t9IG1hdGNoZXMge30nLCBieXRlY29kZV9wYXRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCd7fSBtYXRjaGVzIHt9JywgYnl0ZWNvZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBfY29tcGlsZV9ieXRlY29kZShieXRlc19kYXRhLCBuYW1lPWZ1bGxuYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ5dGVjb2RlX3BhdGg9Ynl0ZWNvZGVfcGF0aCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VfcGF0aD1zb3VyY2VfcGF0aCkKICAgICAgICAgc291cmNlX2J5dGVzID0gc2VsZi5nZXRfZGF0YShzb3VyY2VfcGF0aCkKICAgICAgICAgY29kZV9vYmplY3QgPSBzZWxmLnNvdXJjZV90b19jb2RlKHNvdXJjZV9ieXRlcywgc291cmNlX3BhdGgpCi0gICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvZGUgb2JqZWN0IGZyb20ge30nLCBzb3VyY2VfcGF0aCkKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdjb2RlIG9iamVjdCBmcm9tIHt9Jywgc291cmNlX3BhdGgpCiAgICAgICAgIGlmIChub3Qgc3lzLmRvbnRfd3JpdGVfYnl0ZWNvZGUgYW5kIGJ5dGVjb2RlX3BhdGggaXMgbm90IE5vbmUgYW5kCiAgICAgICAgICAgICAgICAgc291cmNlX210aW1lIGlzIG5vdCBOb25lKToKICAgICAgICAgICAgIGRhdGEgPSBfY29kZV90b19ieXRlY29kZShjb2RlX29iamVjdCwgc291cmNlX210aW1lLAogICAgICAgICAgICAgICAgICAgICBsZW4oc291cmNlX2J5dGVzKSkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLl9jYWNoZV9ieXRlY29kZShzb3VyY2VfcGF0aCwgYnl0ZWNvZGVfcGF0aCwgZGF0YSkKLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd3cm90ZSB7IXJ9JywgYnl0ZWNvZGVfcGF0aCkKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ3dyb3RlIHshcn0nLCBieXRlY29kZV9wYXRoKQogICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICByZXR1cm4gY29kZV9vYmplY3QKQEAgLTg2MCwxNCArODY1LDE2IEBACiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CiAgICAgICAgICAgICAgICAgIyBDb3VsZCBiZSBhIHBlcm1pc3Npb24gZXJyb3IsIHJlYWQtb25seSBmaWxlc3lzdGVtOiBqdXN0IGZvcmdldAogICAgICAgICAgICAgICAgICMgYWJvdXQgd3JpdGluZyB0aGUgZGF0YS4KLSAgICAgICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdjb3VsZCBub3QgY3JlYXRlIHshcn06IHshcn0nLCBwYXJlbnQsIGV4YykKKyAgICAgICAgICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmVudCwgZXhjKQogICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICB0cnk6CiAgICAgICAgICAgICBfd3JpdGVfYXRvbWljKHBhdGgsIGRhdGEsIF9tb2RlKQotICAgICAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY3JlYXRlZCB7IXJ9JywgcGF0aCkKICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgogICAgICAgICAgICAgIyBTYW1lIGFzIGFib3ZlOiBqdXN0IGRvbid0IHdyaXRlIHRoZSBieXRlY29kZS4KLSAgICAgICAgICAgIF92ZXJib3NlX21lc3NhZ2UoJ2NvdWxkIG5vdCBjcmVhdGUgeyFyfTogeyFyfScsIHBhdGgsIGV4YykKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnY291bGQgbm90IGNyZWF0ZSB7IXJ9OiB7IXJ9JywgcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGMpCiAKIAogY2xhc3MgU291cmNlbGVzc0ZpbGVMb2FkZXIoRmlsZUxvYWRlciwgX0xvYWRlckJhc2ljcyk6CkBAIC05MTIsMTQgKzkxOSwxNCBAQAogICAgICAgICAiIiJDcmVhdGUgYW4gdW5pdGlhbGl6ZWQgZXh0ZW5zaW9uIG1vZHVsZSIiIgogICAgICAgICBtb2R1bGUgPSBfYm9vdHN0cmFwLl9jYWxsX3dpdGhfZnJhbWVzX3JlbW92ZWQoCiAgICAgICAgICAgICBfaW1wLmNyZWF0ZV9keW5hbWljLCBzcGVjKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gbG9hZGVkIGZyb20geyFyfScsCisgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgnZXh0ZW5zaW9uIG1vZHVsZSB7IXJ9IGxvYWRlZCBmcm9tIHshcn0nLAogICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWMubmFtZSwgc2VsZi5wYXRoKQogICAgICAgICByZXR1cm4gbW9kdWxlCiAKICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgIiIiSW5pdGlhbGl6ZSBhbiBleHRlbnNpb24gbW9kdWxlIiIiCiAgICAgICAgIF9ib290c3RyYXAuX2NhbGxfd2l0aF9mcmFtZXNfcmVtb3ZlZChfaW1wLmV4ZWNfZHluYW1pYywgbW9kdWxlKQotICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKKyAgICAgICAgX2Jvb3RzdHJhcC5fdmVyYm9zZV9tZXNzYWdlKCdleHRlbnNpb24gbW9kdWxlIHshcn0gZXhlY3V0ZWQgZnJvbSB7IXJ9JywKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLm5hbWUsIHNlbGYucGF0aCkKIAogICAgIGRlZiBpc19wYWNrYWdlKHNlbGYsIGZ1bGxuYW1lKToKQEAgLTk4NSw2ICs5OTIsOSBAQAogICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGl0ZXIoc2VsZi5fcmVjYWxjdWxhdGUoKSkKIAorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpbmRleCwgcGF0aCk6CisgICAgICAgIHNlbGYuX3BhdGhbaW5kZXhdID0gcGF0aAorCiAgICAgZGVmIF9fbGVuX18oc2VsZik6CiAgICAgICAgIHJldHVybiBsZW4oc2VsZi5fcmVjYWxjdWxhdGUoKSkKIApAQCAtMTAzNCw3ICsxMDQ0LDggQEAKIAogICAgICAgICAiIiIKICAgICAgICAgIyBUaGUgaW1wb3J0IHN5c3RlbSBuZXZlciBjYWxscyB0aGlzIG1ldGhvZC4KLSAgICAgICAgX3ZlcmJvc2VfbWVzc2FnZSgnbmFtZXNwYWNlIG1vZHVsZSBsb2FkZWQgd2l0aCBwYXRoIHshcn0nLCBzZWxmLl9wYXRoKQorICAgICAgICBfYm9vdHN0cmFwLl92ZXJib3NlX21lc3NhZ2UoJ25hbWVzcGFjZSBtb2R1bGUgbG9hZGVkIHdpdGggcGF0aCB7IXJ9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX3BhdGgpCiAgICAgICAgIHJldHVybiBfYm9vdHN0cmFwLl9sb2FkX21vZHVsZV9zaGltKHNlbGYsIGZ1bGxuYW1lKQogCiAKQEAgLTEwNTQsMTEgKzEwNjUsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIF9wYXRoX2hvb2tzKGNscywgcGF0aCk6Ci0gICAgICAgICIiIlNlYXJjaCBzZXF1ZW5jZSBvZiBob29rcyBmb3IgYSBmaW5kZXIgZm9yICdwYXRoJy4KLQotICAgICAgICBJZiAnaG9va3MnIGlzIGZhbHNlIHRoZW4gdXNlIHN5cy5wYXRoX2hvb2tzLgotCi0gICAgICAgICIiIgorICAgICAgICAiIiJTZWFyY2ggc3lzLnBhdGhfaG9va3MgZm9yIGEgZmluZGVyIGZvciAncGF0aCcuIiIiCiAgICAgICAgIGlmIHN5cy5wYXRoX2hvb2tzIGlzIG5vdCBOb25lIGFuZCBub3Qgc3lzLnBhdGhfaG9va3M6CiAgICAgICAgICAgICBfd2FybmluZ3Mud2Fybignc3lzLnBhdGhfaG9va3MgaXMgZW1wdHknLCBJbXBvcnRXYXJuaW5nKQogICAgICAgICBmb3IgaG9vayBpbiBzeXMucGF0aF9ob29rczoKQEAgLTExNDAsOCArMTE0NywxMCBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGZpbmRfc3BlYyhjbHMsIGZ1bGxuYW1lLCBwYXRoPU5vbmUsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiZmluZCB0aGUgbW9kdWxlIG9uIHN5cy5wYXRoIG9yICdwYXRoJyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQKLSAgICAgICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuIiIiCisgICAgICAgICIiIlRyeSB0byBmaW5kIGEgc3BlYyBmb3IgJ2Z1bGxuYW1lJyBvbiBzeXMucGF0aCBvciAncGF0aCcuCisKKyAgICAgICAgVGhlIHNlYXJjaCBpcyBiYXNlZCBvbiBzeXMucGF0aF9ob29rcyBhbmQgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuCisgICAgICAgICIiIgogICAgICAgICBpZiBwYXRoIGlzIE5vbmU6CiAgICAgICAgICAgICBwYXRoID0gc3lzLnBhdGgKICAgICAgICAgc3BlYyA9IGNscy5fZ2V0X3NwZWMoZnVsbG5hbWUsIHBhdGgsIHRhcmdldCkKQEAgLTEyMjEsOCArMTIzMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VibW9kdWxlX3NlYXJjaF9sb2NhdGlvbnM9c21zbCkKIAogICAgIGRlZiBmaW5kX3NwZWMoc2VsZiwgZnVsbG5hbWUsIHRhcmdldD1Ob25lKToKLSAgICAgICAgIiIiVHJ5IHRvIGZpbmQgYSBzcGVjIGZvciB0aGUgc3BlY2lmaWVkIG1vZHVsZS4gIFJldHVybnMgdGhlCi0gICAgICAgIG1hdGNoaW5nIHNwZWMsIG9yIE5vbmUgaWYgbm90IGZvdW5kLiIiIgorICAgICAgICAiIiJUcnkgdG8gZmluZCBhIHNwZWMgZm9yIHRoZSBzcGVjaWZpZWQgbW9kdWxlLgorCisgICAgICAgIFJldHVybnMgdGhlIG1hdGNoaW5nIHNwZWMsIG9yIE5vbmUgaWYgbm90IGZvdW5kLgorICAgICAgICAiIiIKICAgICAgICAgaXNfbmFtZXNwYWNlID0gRmFsc2UKICAgICAgICAgdGFpbF9tb2R1bGUgPSBmdWxsbmFtZS5ycGFydGl0aW9uKCcuJylbMl0KICAgICAgICAgdHJ5OgpAQCAtMTI1NCwxMiArMTI2NSwxMyBAQAogICAgICAgICAjIENoZWNrIGZvciBhIGZpbGUgdy8gYSBwcm9wZXIgc3VmZml4IGV4aXN0cy4KICAgICAgICAgZm9yIHN1ZmZpeCwgbG9hZGVyX2NsYXNzIGluIHNlbGYuX2xvYWRlcnM6CiAgICAgICAgICAgICBmdWxsX3BhdGggPSBfcGF0aF9qb2luKHNlbGYucGF0aCwgdGFpbF9tb2R1bGUgKyBzdWZmaXgpCi0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCd0cnlpbmcge30nLmZvcm1hdChmdWxsX3BhdGgpLCB2ZXJib3NpdHk9MikKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgndHJ5aW5nIHt9JywgZnVsbF9wYXRoLCB2ZXJib3NpdHk9MikKICAgICAgICAgICAgIGlmIGNhY2hlX21vZHVsZSArIHN1ZmZpeCBpbiBjYWNoZToKICAgICAgICAgICAgICAgICBpZiBfcGF0aF9pc2ZpbGUoZnVsbF9wYXRoKToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2dldF9zcGVjKGxvYWRlcl9jbGFzcywgZnVsbG5hbWUsIGZ1bGxfcGF0aCwgTm9uZSwgdGFyZ2V0KQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZ2V0X3NwZWMobG9hZGVyX2NsYXNzLCBmdWxsbmFtZSwgZnVsbF9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFyZ2V0KQogICAgICAgICBpZiBpc19uYW1lc3BhY2U6Ci0gICAgICAgICAgICBfdmVyYm9zZV9tZXNzYWdlKCdwb3NzaWJsZSBuYW1lc3BhY2UgZm9yIHt9Jy5mb3JtYXQoYmFzZV9wYXRoKSkKKyAgICAgICAgICAgIF9ib290c3RyYXAuX3ZlcmJvc2VfbWVzc2FnZSgncG9zc2libGUgbmFtZXNwYWNlIGZvciB7fScsIGJhc2VfcGF0aCkKICAgICAgICAgICAgIHNwZWMgPSBfYm9vdHN0cmFwLk1vZHVsZVNwZWMoZnVsbG5hbWUsIE5vbmUpCiAgICAgICAgICAgICBzcGVjLnN1Ym1vZHVsZV9zZWFyY2hfbG9jYXRpb25zID0gW2Jhc2VfcGF0aF0KICAgICAgICAgICAgIHJldHVybiBzcGVjCkBAIC0xNDMwLDggKzE0NDIsMyBAQAogICAgIGlmIF9vcy5fX25hbWVfXyA9PSAnbnQnOgogICAgICAgICBzeXMubWV0YV9wYXRoLmFwcGVuZChXaW5kb3dzUmVnaXN0cnlGaW5kZXIpCiAgICAgc3lzLm1ldGFfcGF0aC5hcHBlbmQoUGF0aEZpbmRlcikKLQotICAgICMgWFhYIFdlIGV4cG9zZSBhIGNvdXBsZSBvZiBjbGFzc2VzIGluIF9ib290c3RyYXAgZm9yIHRoZSBzYWtlIG9mCi0gICAgIyBhIHNldHVwdG9vbHMgYnVnIChodHRwczovL2JpdGJ1Y2tldC5vcmcvcHlwYS9zZXR1cHRvb2xzL2lzc3VlLzM3OCkuCi0gICAgX2Jvb3RzdHJhcF9tb2R1bGUuRmlsZUZpbmRlciA9IEZpbGVGaW5kZXIKLSAgICBfYm9vdHN0cmFwX21vZHVsZS5Tb3VyY2VGaWxlTG9hZGVyID0gU291cmNlRmlsZUxvYWRlcgpkaWZmIC0tZ2l0IGEvTGliL2ltcG9ydGxpYi91dGlsLnB5IGIvTGliL2ltcG9ydGxpYi91dGlsLnB5CmluZGV4IGUxZmEwN2EuLjZiZGYwZDQgMTAwNjQ0Ci0tLSBhL0xpYi9pbXBvcnRsaWIvdXRpbC5weQorKysgYi9MaWIvaW1wb3J0bGliL3V0aWwucHkKQEAgLTIyLDggKzIyLDggQEAKICAgICBpZiBub3QgbmFtZS5zdGFydHN3aXRoKCcuJyk6CiAgICAgICAgIHJldHVybiBuYW1lCiAgICAgZWxpZiBub3QgcGFja2FnZToKLSAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSByZWxhdGl2ZSBuYW1lICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnKG5vIGxlYWRpbmcgZG90KScuZm9ybWF0KG5hbWUpKQorICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYnbm8gcGFja2FnZSBzcGVjaWZpZWQgZm9yIHtyZXByKG5hbWUpfSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyhyZXF1aXJlZCBmb3IgcmVsYXRpdmUgbW9kdWxlIG5hbWVzKScpCiAgICAgbGV2ZWwgPSAwCiAgICAgZm9yIGNoYXJhY3RlciBpbiBuYW1lOgogICAgICAgICBpZiBjaGFyYWN0ZXIgIT0gJy4nOgpAQCAtMjA0LDExICsyMDQsNiBAQAogICAgIHJldHVybiBtb2R1bGVfZm9yX2xvYWRlcl93cmFwcGVyCiAKIAotY2xhc3MgX01vZHVsZSh0eXBlcy5Nb2R1bGVUeXBlKToKLQotICAgICIiIkEgc3ViY2xhc3Mgb2YgdGhlIG1vZHVsZSB0eXBlIHRvIGFsbG93IF9fY2xhc3NfXyBtYW5pcHVsYXRpb24uIiIiCi0KLQogY2xhc3MgX0xhenlNb2R1bGUodHlwZXMuTW9kdWxlVHlwZSk6CiAKICAgICAiIiJBIHN1YmNsYXNzIG9mIHRoZSBtb2R1bGUgdHlwZSB3aGljaCB0cmlnZ2VycyBsb2FkaW5nIHVwb24gYXR0cmlidXRlIGFjY2Vzcy4iIiIKQEAgLTIxOCwxMyArMjEzLDE0IEBACiAgICAgICAgICMgQWxsIG1vZHVsZSBtZXRhZGF0YSBtdXN0IGJlIGdhcm5lcmVkIGZyb20gX19zcGVjX18gaW4gb3JkZXIgdG8gYXZvaWQKICAgICAgICAgIyB1c2luZyBtdXRhdGVkIHZhbHVlcy4KICAgICAgICAgIyBTdG9wIHRyaWdnZXJpbmcgdGhpcyBtZXRob2QuCi0gICAgICAgIHNlbGYuX19jbGFzc19fID0gX01vZHVsZQorICAgICAgICBzZWxmLl9fY2xhc3NfXyA9IHR5cGVzLk1vZHVsZVR5cGUKICAgICAgICAgIyBHZXQgdGhlIG9yaWdpbmFsIG5hbWUgdG8gbWFrZSBzdXJlIG5vIG9iamVjdCBzdWJzdGl0dXRpb24gb2NjdXJyZWQKICAgICAgICAgIyBpbiBzeXMubW9kdWxlcy4KICAgICAgICAgb3JpZ2luYWxfbmFtZSA9IHNlbGYuX19zcGVjX18ubmFtZQogICAgICAgICAjIEZpZ3VyZSBvdXQgZXhhY3RseSB3aGF0IGF0dHJpYnV0ZXMgd2VyZSBtdXRhdGVkIGJldHdlZW4gdGhlIGNyZWF0aW9uCiAgICAgICAgICMgb2YgdGhlIG1vZHVsZSBhbmQgbm93LgotICAgICAgICBhdHRyc190aGVuID0gc2VsZi5fX3NwZWNfXy5sb2FkZXJfc3RhdGUKKyAgICAgICAgYXR0cnNfdGhlbiA9IHNlbGYuX19zcGVjX18ubG9hZGVyX3N0YXRlWydfX2RpY3RfXyddCisgICAgICAgIG9yaWdpbmFsX3R5cGUgPSBzZWxmLl9fc3BlY19fLmxvYWRlcl9zdGF0ZVsnX19jbGFzc19fJ10KICAgICAgICAgYXR0cnNfbm93ID0gc2VsZi5fX2RpY3RfXwogICAgICAgICBhdHRyc191cGRhdGVkID0ge30KICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gYXR0cnNfbm93Lml0ZW1zKCk6CkBAIC0yMzksOSArMjM1LDkgQEAKICAgICAgICAgIyBvYmplY3Qgd2FzIHB1dCBpbnRvIHN5cy5tb2R1bGVzLgogICAgICAgICBpZiBvcmlnaW5hbF9uYW1lIGluIHN5cy5tb2R1bGVzOgogICAgICAgICAgICAgaWYgaWQoc2VsZikgIT0gaWQoc3lzLm1vZHVsZXNbb3JpZ2luYWxfbmFtZV0pOgotICAgICAgICAgICAgICAgIG1zZyA9ICgnbW9kdWxlIG9iamVjdCBmb3IgeyFyfSBzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyAnCi0gICAgICAgICAgICAgICAgICAgICAgICdkdXJpbmcgYSBsYXp5IGxvYWQnKQotICAgICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IobXNnLmZvcm1hdChvcmlnaW5hbF9uYW1lKSkKKyAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKGYibW9kdWxlIG9iamVjdCBmb3Ige29yaWdpbmFsX25hbWUhcn0gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzdGl0dXRlZCBpbiBzeXMubW9kdWxlcyBkdXJpbmcgYSBsYXp5ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibG9hZCIpCiAgICAgICAgICMgVXBkYXRlIGFmdGVyIGxvYWRpbmcgc2luY2UgdGhhdCdzIHdoYXQgd291bGQgaGFwcGVuIGluIGFuIGVhZ2VyCiAgICAgICAgICMgbG9hZGluZyBzaXR1YXRpb24uCiAgICAgICAgIHNlbGYuX19kaWN0X18udXBkYXRlKGF0dHJzX3VwZGF0ZWQpCkBAIC0yNzUsOCArMjcxLDcgQEAKICAgICAgICAgc2VsZi5sb2FkZXIgPSBsb2FkZXIKIAogICAgIGRlZiBjcmVhdGVfbW9kdWxlKHNlbGYsIHNwZWMpOgotICAgICAgICAiIiJDcmVhdGUgYSBtb2R1bGUgd2hpY2ggY2FuIGhhdmUgaXRzIF9fY2xhc3NfXyBtYW5pcHVsYXRlZC4iIiIKLSAgICAgICAgcmV0dXJuIF9Nb2R1bGUoc3BlYy5uYW1lKQorICAgICAgICByZXR1cm4gc2VsZi5sb2FkZXIuY3JlYXRlX21vZHVsZShzcGVjKQogCiAgICAgZGVmIGV4ZWNfbW9kdWxlKHNlbGYsIG1vZHVsZSk6CiAgICAgICAgICIiIk1ha2UgdGhlIG1vZHVsZSBsb2FkIGxhemlseS4iIiIKQEAgLTI4Niw1ICsyODEsOCBAQAogICAgICAgICAjIG9uIGFuIG9iamVjdCB3b3VsZCBoYXZlIHRyaWdnZXJlZCB0aGUgbG9hZCwKICAgICAgICAgIyBlLmcuIGBgbW9kdWxlLl9fc3BlY19fLmxvYWRlciA9IE5vbmVgYCB3b3VsZCB0cmlnZ2VyIGEgbG9hZCBmcm9tCiAgICAgICAgICMgdHJ5aW5nIHRvIGFjY2VzcyBtb2R1bGUuX19zcGVjX18uCi0gICAgICAgIG1vZHVsZS5fX3NwZWNfXy5sb2FkZXJfc3RhdGUgPSBtb2R1bGUuX19kaWN0X18uY29weSgpCisgICAgICAgIGxvYWRlcl9zdGF0ZSA9IHt9CisgICAgICAgIGxvYWRlcl9zdGF0ZVsnX19kaWN0X18nXSA9IG1vZHVsZS5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgbG9hZGVyX3N0YXRlWydfX2NsYXNzX18nXSA9IG1vZHVsZS5fX2NsYXNzX18KKyAgICAgICAgbW9kdWxlLl9fc3BlY19fLmxvYWRlcl9zdGF0ZSA9IGxvYWRlcl9zdGF0ZQogICAgICAgICBtb2R1bGUuX19jbGFzc19fID0gX0xhenlNb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi9pbnNwZWN0LnB5IGIvTGliL2luc3BlY3QucHkKaW5kZXggY2ExZDU1MS4uMjM4MDA5NSAxMDA2NDQKLS0tIGEvTGliL2luc3BlY3QucHkKKysrIGIvTGliL2luc3BlY3QucHkKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBnZXRtb2R1bGUoKSAtIGRldGVybWluZSB0aGUgbW9kdWxlIHRoYXQgYW4gb2JqZWN0IGNhbWUgZnJvbQogICAgIGdldGNsYXNzdHJlZSgpIC0gYXJyYW5nZSBjbGFzc2VzIHNvIGFzIHRvIHJlcHJlc2VudCB0aGVpciBoaWVyYXJjaHkKIAotICAgIGdldGFyZ3NwZWMoKSwgZ2V0YXJndmFsdWVzKCksIGdldGNhbGxhcmdzKCkgLSBnZXQgaW5mbyBhYm91dCBmdW5jdGlvbiBhcmd1bWVudHMKKyAgICBnZXRhcmd2YWx1ZXMoKSwgZ2V0Y2FsbGFyZ3MoKSAtIGdldCBpbmZvIGFib3V0IGZ1bmN0aW9uIGFyZ3VtZW50cwogICAgIGdldGZ1bGxhcmdzcGVjKCkgLSBzYW1lLCB3aXRoIHN1cHBvcnQgZm9yIFB5dGhvbiAzIGZlYXR1cmVzCiAgICAgZm9ybWF0YXJnc3BlYygpLCBmb3JtYXRhcmd2YWx1ZXMoKSAtIGZvcm1hdCBhbiBhcmd1bWVudCBzcGVjCiAgICAgZ2V0b3V0ZXJmcmFtZXMoKSwgZ2V0aW5uZXJmcmFtZXMoKSAtIGdldCBpbmZvIGFib3V0IGZyYW1lcwpAQCAtMTg1LDYgKzE4NSwxMyBAQAogICAgIHJldHVybiBib29sKChpc2Z1bmN0aW9uKG9iamVjdCkgb3IgaXNtZXRob2Qob2JqZWN0KSkgYW5kCiAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fY29kZV9fLmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FKQogCitkZWYgaXNhc3luY2dlbmZ1bmN0aW9uKG9iamVjdCk6CisgICAgcmV0dXJuIGJvb2woKGlzZnVuY3Rpb24ob2JqZWN0KSBvciBpc21ldGhvZChvYmplY3QpKSBhbmQKKyAgICAgICAgICAgICAgICBvYmplY3QuX19jb2RlX18uY29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpCisKK2RlZiBpc2FzeW5jZ2VuKG9iamVjdCk6CisgICAgcmV0dXJuIGlzaW5zdGFuY2Uob2JqZWN0LCB0eXBlcy5Bc3luY0dlbmVyYXRvclR5cGUpCisKIGRlZiBpc2dlbmVyYXRvcihvYmplY3QpOgogICAgICIiIlJldHVybiB0cnVlIGlmIHRoZSBvYmplY3QgaXMgYSBnZW5lcmF0b3IuCiAKQEAgLTYyMywyMyArNjMwLDYgQEAKICAgICByYWlzZSBUeXBlRXJyb3IoJ3shcn0gaXMgbm90IGEgbW9kdWxlLCBjbGFzcywgbWV0aG9kLCAnCiAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvbiwgdHJhY2ViYWNrLCBmcmFtZSwgb3IgY29kZSBvYmplY3QnLmZvcm1hdChvYmplY3QpKQogCi1Nb2R1bGVJbmZvID0gbmFtZWR0dXBsZSgnTW9kdWxlSW5mbycsICduYW1lIHN1ZmZpeCBtb2RlIG1vZHVsZV90eXBlJykKLQotZGVmIGdldG1vZHVsZWluZm8ocGF0aCk6Ci0gICAgIiIiR2V0IHRoZSBtb2R1bGUgbmFtZSwgc3VmZml4LCBtb2RlLCBhbmQgbW9kdWxlIHR5cGUgZm9yIGEgZ2l2ZW4gZmlsZS4iIiIKLSAgICB3YXJuaW5ncy53YXJuKCdpbnNwZWN0LmdldG1vZHVsZWluZm8oKSBpcyBkZXByZWNhdGVkJywgRGVwcmVjYXRpb25XYXJuaW5nLAotICAgICAgICAgICAgICAgICAgMikKLSAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgaW1wb3J0IGltcAotICAgIGZpbGVuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQotICAgIHN1ZmZpeGVzID0gWygtbGVuKHN1ZmZpeCksIHN1ZmZpeCwgbW9kZSwgbXR5cGUpCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIG1vZGUsIG10eXBlIGluIGltcC5nZXRfc3VmZml4ZXMoKV0KLSAgICBzdWZmaXhlcy5zb3J0KCkgIyB0cnkgbG9uZ2VzdCBzdWZmaXhlcyBmaXJzdCwgaW4gY2FzZSB0aGV5IG92ZXJsYXAKLSAgICBmb3IgbmVnbGVuLCBzdWZmaXgsIG1vZGUsIG10eXBlIGluIHN1ZmZpeGVzOgotICAgICAgICBpZiBmaWxlbmFtZVtuZWdsZW46XSA9PSBzdWZmaXg6Ci0gICAgICAgICAgICByZXR1cm4gTW9kdWxlSW5mbyhmaWxlbmFtZVs6bmVnbGVuXSwgc3VmZml4LCBtb2RlLCBtdHlwZSkKLQogZGVmIGdldG1vZHVsZW5hbWUocGF0aCk6CiAgICAgIiIiUmV0dXJuIHRoZSBtb2R1bGUgbmFtZSBmb3IgYSBnaXZlbiBmaWxlLCBvciBOb25lLiIiIgogICAgIGZuYW1lID0gb3MucGF0aC5iYXNlbmFtZShwYXRoKQpAQCAtMTA2MCw4ICsxMDUwLDYgQEAKICAgICAna3dvbmx5ZGVmYXVsdHMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIG5hbWVzIGZyb20ga3dvbmx5YXJncyB0byBkZWZhdWx0cy4KICAgICAnYW5ub3RhdGlvbnMnIGlzIGEgZGljdGlvbmFyeSBtYXBwaW5nIGFyZ3VtZW50IG5hbWVzIHRvIGFubm90YXRpb25zLgogCi0gICAgVGhlIGZpcnN0IGZvdXIgaXRlbXMgaW4gdGhlIHR1cGxlIGNvcnJlc3BvbmQgdG8gZ2V0YXJnc3BlYygpLgotCiAgICAgVGhpcyBmdW5jdGlvbiBpcyBkZXByZWNhdGVkLCB1c2UgaW5zcGVjdC5zaWduYXR1cmUoKSBpbnN0ZWFkLgogICAgICIiIgogCkBAIC0xMTcyLDggKzExNjAsNyBAQAogICAgICAgICAgICAgICAgICAgZm9ybWF0dmFsdWU9bGFtYmRhIHZhbHVlOiAnPScgKyByZXByKHZhbHVlKSwKICAgICAgICAgICAgICAgICAgIGZvcm1hdHJldHVybnM9bGFtYmRhIHRleHQ6ICcgLT4gJyArIHRleHQsCiAgICAgICAgICAgICAgICAgICBmb3JtYXRhbm5vdGF0aW9uPWZvcm1hdGFubm90YXRpb24pOgotICAgICIiIkZvcm1hdCBhbiBhcmd1bWVudCBzcGVjIGZyb20gdGhlIHZhbHVlcyByZXR1cm5lZCBieSBnZXRhcmdzcGVjCi0gICAgb3IgZ2V0ZnVsbGFyZ3NwZWMuCisgICAgIiIiRm9ybWF0IGFuIGFyZ3VtZW50IHNwZWMgZnJvbSB0aGUgdmFsdWVzIHJldHVybmVkIGJ5IGdldGZ1bGxhcmdzcGVjLgogCiAgICAgVGhlIGZpcnN0IHNldmVuIGFyZ3VtZW50cyBhcmUgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cywKICAgICBrd29ubHlhcmdzLCBrd29ubHlkZWZhdWx0cywgYW5ub3RhdGlvbnMpLiAgVGhlIG90aGVyIGZpdmUgYXJndW1lbnRzCkBAIC0yNDE1LDYgKzI0MDIsMjAgQEAKICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgc3RyKToKICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigibmFtZSBtdXN0IGJlIGEgc3RyLCBub3QgYSB7IXJ9Ii5mb3JtYXQobmFtZSkpCiAKKyAgICAgICAgaWYgbmFtZVswXSA9PSAnLicgYW5kIG5hbWVbMTpdLmlzZGlnaXQoKToKKyAgICAgICAgICAgICMgVGhlc2UgYXJlIGltcGxpY2l0IGFyZ3VtZW50cyBnZW5lcmF0ZWQgYnkgY29tcHJlaGVuc2lvbnMuIEluCisgICAgICAgICAgICAjIG9yZGVyIHRvIHByb3ZpZGUgYSBmcmllbmRsaWVyIGludGVyZmFjZSB0byB1c2Vycywgd2UgcmVjYXN0CisgICAgICAgICAgICAjIHRoZWlyIG5hbWUgYXMgImltcGxpY2l0TiIgYW5kIHRyZWF0IHRoZW0gYXMgcG9zaXRpb25hbC1vbmx5LgorICAgICAgICAgICAgIyBTZWUgaXNzdWUgMTk2MTEuCisgICAgICAgICAgICBpZiBraW5kICE9IF9QT1NJVElPTkFMX09SX0tFWVdPUkQ6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigKKyAgICAgICAgICAgICAgICAgICAgJ2ltcGxpY2l0IGFyZ3VtZW50cyBtdXN0IGJlIHBhc3NlZCBpbiBhcyB7fScuZm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgX1BPU0lUSU9OQUxfT1JfS0VZV09SRAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgc2VsZi5fa2luZCA9IF9QT1NJVElPTkFMX09OTFkKKyAgICAgICAgICAgIG5hbWUgPSAnaW1wbGljaXR7fScuZm9ybWF0KG5hbWVbMTpdKQorCiAgICAgICAgIGlmIG5vdCBuYW1lLmlzaWRlbnRpZmllcigpOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigneyFyfSBpcyBub3QgYSB2YWxpZCBwYXJhbWV0ZXIgbmFtZScuZm9ybWF0KG5hbWUpKQogCmRpZmYgLS1naXQgYS9MaWIvaW8ucHkgYi9MaWIvaW8ucHkKaW5kZXggZTAzZGI5Ny4uOTY4ZWU1MCAxMDA2NDQKLS0tIGEvTGliL2lvLnB5CisrKyBiL0xpYi9pby5weQpAQCAtOTAsMyArOTAsMTAgQEAKIGZvciBrbGFzcyBpbiAoU3RyaW5nSU8sIFRleHRJT1dyYXBwZXIpOgogICAgIFRleHRJT0Jhc2UucmVnaXN0ZXIoa2xhc3MpCiBkZWwga2xhc3MKKwordHJ5OgorICAgIGZyb20gX2lvIGltcG9ydCBfV2luZG93c0NvbnNvbGVJTworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIHBhc3MKK2Vsc2U6CisgICAgUmF3SU9CYXNlLnJlZ2lzdGVyKF9XaW5kb3dzQ29uc29sZUlPKQpkaWZmIC0tZ2l0IGEvTGliL2lwYWRkcmVzcy5weSBiL0xpYi9pcGFkZHJlc3MucHkKaW5kZXggMWY5MDA1OC4uMjBmMzNjYiAxMDA2NDQKLS0tIGEvTGliL2lwYWRkcmVzcy5weQorKysgYi9MaWIvaXBhZGRyZXNzLnB5CkBAIC02MzYsMTIgKzYzNiwxMiBAQAogICAgICAgICBicm9hZGNhc3QgPSBpbnQoc2VsZi5icm9hZGNhc3RfYWRkcmVzcykKICAgICAgICAgaWYgbiA+PSAwOgogICAgICAgICAgICAgaWYgbmV0d29yayArIG4gPiBicm9hZGNhc3Q6Ci0gICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcgorICAgICAgICAgICAgICAgIHJhaXNlIEluZGV4RXJyb3IoJ2FkZHJlc3Mgb3V0IG9mIHJhbmdlJykKICAgICAgICAgICAgIHJldHVybiBzZWxmLl9hZGRyZXNzX2NsYXNzKG5ldHdvcmsgKyBuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbiArPSAxCiAgICAgICAgICAgICBpZiBicm9hZGNhc3QgKyBuIDwgbmV0d29yazoKLSAgICAgICAgICAgICAgICByYWlzZSBJbmRleEVycm9yCisgICAgICAgICAgICAgICAgcmFpc2UgSW5kZXhFcnJvcignYWRkcmVzcyBvdXQgb2YgcmFuZ2UnKQogICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2FkZHJlc3NfY2xhc3MoYnJvYWRjYXN0ICsgbikKIAogICAgIGRlZiBfX2x0X18oc2VsZiwgb3RoZXIpOgpkaWZmIC0tZ2l0IGEvTGliL2pzb24vX19pbml0X18ucHkgYi9MaWIvanNvbi9fX2luaXRfXy5weQppbmRleCBmNzJiMDU4Li44ZGNjNjc4IDEwMDY0NAotLS0gYS9MaWIvanNvbi9fX2luaXRfXy5weQorKysgYi9MaWIvanNvbi9fX2luaXRfXy5weQpAQCAtMTA1LDYgKzEwNSw3IEBACiAKIGZyb20gLmRlY29kZXIgaW1wb3J0IEpTT05EZWNvZGVyLCBKU09ORGVjb2RlRXJyb3IKIGZyb20gLmVuY29kZXIgaW1wb3J0IEpTT05FbmNvZGVyCitpbXBvcnQgY29kZWNzCiAKIF9kZWZhdWx0X2VuY29kZXIgPSBKU09ORW5jb2RlcigKICAgICBza2lwa2V5cz1GYWxzZSwKQEAgLTExNiw3ICsxMTcsNyBAQAogICAgIGRlZmF1bHQ9Tm9uZSwKICkKIAotZGVmIGR1bXAob2JqLCBmcCwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAorZGVmIGR1bXAob2JqLCBmcCwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLCBjaGVja19jaXJjdWxhcj1UcnVlLAogICAgICAgICBhbGxvd19uYW49VHJ1ZSwgY2xzPU5vbmUsIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsCiAgICAgICAgIGRlZmF1bHQ9Tm9uZSwgc29ydF9rZXlzPUZhbHNlLCAqKmt3KToKICAgICAiIiJTZXJpYWxpemUgYGBvYmpgYCBhcyBhIEpTT04gZm9ybWF0dGVkIHN0cmVhbSB0byBgYGZwYGAgKGEKQEAgLTE3OSw3ICsxODAsNyBAQAogICAgICAgICBmcC53cml0ZShjaHVuaykKIAogCi1kZWYgZHVtcHMob2JqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCitkZWYgZHVtcHMob2JqLCAqLCBza2lwa2V5cz1GYWxzZSwgZW5zdXJlX2FzY2lpPVRydWUsIGNoZWNrX2NpcmN1bGFyPVRydWUsCiAgICAgICAgIGFsbG93X25hbj1UcnVlLCBjbHM9Tm9uZSwgaW5kZW50PU5vbmUsIHNlcGFyYXRvcnM9Tm9uZSwKICAgICAgICAgZGVmYXVsdD1Ob25lLCBzb3J0X2tleXM9RmFsc2UsICoqa3cpOgogICAgICIiIlNlcmlhbGl6ZSBgYG9iamBgIHRvIGEgSlNPTiBmb3JtYXR0ZWQgYGBzdHJgYC4KQEAgLTI0MCw3ICsyNDEsMzYgQEAKIF9kZWZhdWx0X2RlY29kZXIgPSBKU09ORGVjb2RlcihvYmplY3RfaG9vaz1Ob25lLCBvYmplY3RfcGFpcnNfaG9vaz1Ob25lKQogCiAKLWRlZiBsb2FkKGZwLCBjbHM9Tm9uZSwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKK2RlZiBkZXRlY3RfZW5jb2RpbmcoYik6CisgICAgYnN0YXJ0c3dpdGggPSBiLnN0YXJ0c3dpdGgKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYzMl9CRSwgY29kZWNzLkJPTV9VVEYzMl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0zMicKKyAgICBpZiBic3RhcnRzd2l0aCgoY29kZWNzLkJPTV9VVEYxNl9CRSwgY29kZWNzLkJPTV9VVEYxNl9MRSkpOgorICAgICAgICByZXR1cm4gJ3V0Zi0xNicKKyAgICBpZiBic3RhcnRzd2l0aChjb2RlY3MuQk9NX1VURjgpOgorICAgICAgICByZXR1cm4gJ3V0Zi04LXNpZycKKworICAgIGlmIGxlbihiKSA+PSA0OgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgMDAgLS0gLS0gLSB1dGYtMzItYmUKKyAgICAgICAgICAgICMgMDAgWFggLS0gLS0gLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJyBpZiBiWzFdIGVsc2UgJ3V0Zi0zMi1iZScKKyAgICAgICAgaWYgbm90IGJbMV06CisgICAgICAgICAgICAjIFhYIDAwIDAwIDAwIC0gdXRmLTMyLWxlCisgICAgICAgICAgICAjIFhYIDAwIFhYIFhYIC0gdXRmLTE2LWxlCisgICAgICAgICAgICByZXR1cm4gJ3V0Zi0xNi1sZScgaWYgYlsyXSBvciBiWzNdIGVsc2UgJ3V0Zi0zMi1sZScKKyAgICBlbGlmIGxlbihiKSA9PSAyOgorICAgICAgICBpZiBub3QgYlswXToKKyAgICAgICAgICAgICMgMDAgWFggLSB1dGYtMTYtYmUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWJlJworICAgICAgICBpZiBub3QgYlsxXToKKyAgICAgICAgICAgICMgWFggMDAgLSB1dGYtMTYtbGUKKyAgICAgICAgICAgIHJldHVybiAndXRmLTE2LWxlJworICAgICMgZGVmYXVsdAorICAgIHJldHVybiAndXRmLTgnCisKKworZGVmIGxvYWQoZnAsICosIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6CiAgICAgIiIiRGVzZXJpYWxpemUgYGBmcGBgIChhIGBgLnJlYWQoKWBgLXN1cHBvcnRpbmcgZmlsZS1saWtlIG9iamVjdCBjb250YWluaW5nCiAgICAgYSBKU09OIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCkBAIC0yNjgsMTAgKzI5OCwxMCBAQAogICAgICAgICBwYXJzZV9jb25zdGFudD1wYXJzZV9jb25zdGFudCwgb2JqZWN0X3BhaXJzX2hvb2s9b2JqZWN0X3BhaXJzX2hvb2ssICoqa3cpCiAKIAotZGVmIGxvYWRzKHMsIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAorZGVmIGxvYWRzKHMsICosIGVuY29kaW5nPU5vbmUsIGNscz1Ob25lLCBvYmplY3RfaG9vaz1Ob25lLCBwYXJzZV9mbG9hdD1Ob25lLAogICAgICAgICBwYXJzZV9pbnQ9Tm9uZSwgcGFyc2VfY29uc3RhbnQ9Tm9uZSwgb2JqZWN0X3BhaXJzX2hvb2s9Tm9uZSwgKiprdyk6Ci0gICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCBpbnN0YW5jZSBjb250YWluaW5nIGEgSlNPTgotICAgIGRvY3VtZW50KSB0byBhIFB5dGhvbiBvYmplY3QuCisgICAgIiIiRGVzZXJpYWxpemUgYGBzYGAgKGEgYGBzdHJgYCwgYGBieXRlc2BgIG9yIGBgYnl0ZWFycmF5YGAgaW5zdGFuY2UKKyAgICBjb250YWluaW5nIGEgSlNPTiBkb2N1bWVudCkgdG8gYSBQeXRob24gb2JqZWN0LgogCiAgICAgYGBvYmplY3RfaG9va2BgIGlzIGFuIG9wdGlvbmFsIGZ1bmN0aW9uIHRoYXQgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUKICAgICByZXN1bHQgb2YgYW55IG9iamVjdCBsaXRlcmFsIGRlY29kZSAoYSBgYGRpY3RgYCkuIFRoZSByZXR1cm4gdmFsdWUgb2YKQEAgLTMwNywxMiArMzM3LDE2IEBACiAgICAgVGhlIGBgZW5jb2RpbmdgYCBhcmd1bWVudCBpcyBpZ25vcmVkIGFuZCBkZXByZWNhdGVkLgogCiAgICAgIiIiCi0gICAgaWYgbm90IGlzaW5zdGFuY2Uocywgc3RyKToKLSAgICAgICAgcmFpc2UgVHlwZUVycm9yKCd0aGUgSlNPTiBvYmplY3QgbXVzdCBiZSBzdHIsIG5vdCB7IXJ9Jy5mb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcy5fX2NsYXNzX18uX19uYW1lX18pKQotICAgIGlmIHMuc3RhcnRzd2l0aCh1J1x1ZmVmZicpOgotICAgICAgICByYWlzZSBKU09ORGVjb2RlRXJyb3IoIlVuZXhwZWN0ZWQgVVRGLTggQk9NIChkZWNvZGUgdXNpbmcgdXRmLTgtc2lnKSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGlmIGlzaW5zdGFuY2Uocywgc3RyKToKKyAgICAgICAgaWYgcy5zdGFydHN3aXRoKCdcdWZlZmYnKToKKyAgICAgICAgICAgIHJhaXNlIEpTT05EZWNvZGVFcnJvcigiVW5leHBlY3RlZCBVVEYtOCBCT00gKGRlY29kZSB1c2luZyB1dGYtOC1zaWcpIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLCAwKQorICAgIGVsc2U6CisgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHMsIChieXRlcywgYnl0ZWFycmF5KSk6CisgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoJ3RoZSBKU09OIG9iamVjdCBtdXN0IGJlIHN0ciwgYnl0ZXMgb3IgYnl0ZWFycmF5LCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ25vdCB7IXJ9Jy5mb3JtYXQocy5fX2NsYXNzX18uX19uYW1lX18pKQorICAgICAgICBzID0gcy5kZWNvZGUoZGV0ZWN0X2VuY29kaW5nKHMpLCAnc3Vycm9nYXRlcGFzcycpCisKICAgICBpZiAoY2xzIGlzIE5vbmUgYW5kIG9iamVjdF9ob29rIGlzIE5vbmUgYW5kCiAgICAgICAgICAgICBwYXJzZV9pbnQgaXMgTm9uZSBhbmQgcGFyc2VfZmxvYXQgaXMgTm9uZSBhbmQKICAgICAgICAgICAgIHBhcnNlX2NvbnN0YW50IGlzIE5vbmUgYW5kIG9iamVjdF9wYWlyc19ob29rIGlzIE5vbmUgYW5kIG5vdCBrdyk6CmRpZmYgLS1naXQgYS9MaWIvanNvbi9kZWNvZGVyLnB5IGIvTGliL2pzb24vZGVjb2Rlci5weQppbmRleCAwZjAzZjIwLi4yNDIyYzZhIDEwMDY0NAotLS0gYS9MaWIvanNvbi9kZWNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2RlY29kZXIucHkKQEAgLTI4MCw3ICsyODAsNyBAQAogCiAgICAgIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgb2JqZWN0X2hvb2s9Tm9uZSwgcGFyc2VfZmxvYXQ9Tm9uZSwKICAgICAgICAgICAgIHBhcnNlX2ludD1Ob25lLCBwYXJzZV9jb25zdGFudD1Ob25lLCBzdHJpY3Q9VHJ1ZSwKICAgICAgICAgICAgIG9iamVjdF9wYWlyc19ob29rPU5vbmUpOgogICAgICAgICAiIiJgYG9iamVjdF9ob29rYGAsIGlmIHNwZWNpZmllZCwgd2lsbCBiZSBjYWxsZWQgd2l0aCB0aGUgcmVzdWx0CmRpZmYgLS1naXQgYS9MaWIvanNvbi9lbmNvZGVyLnB5IGIvTGliL2pzb24vZW5jb2Rlci5weQppbmRleCBkNTk2NDg5Li40MWE0OTdjIDEwMDY0NAotLS0gYS9MaWIvanNvbi9lbmNvZGVyLnB5CisrKyBiL0xpYi9qc29uL2VuY29kZXIucHkKQEAgLTEwMSw3ICsxMDEsNyBAQAogICAgICIiIgogICAgIGl0ZW1fc2VwYXJhdG9yID0gJywgJwogICAgIGtleV9zZXBhcmF0b3IgPSAnOiAnCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHNraXBrZXlzPUZhbHNlLCBlbnN1cmVfYXNjaWk9VHJ1ZSwKKyAgICBkZWYgX19pbml0X18oc2VsZiwgKiwgc2tpcGtleXM9RmFsc2UsIGVuc3VyZV9hc2NpaT1UcnVlLAogICAgICAgICAgICAgY2hlY2tfY2lyY3VsYXI9VHJ1ZSwgYWxsb3dfbmFuPVRydWUsIHNvcnRfa2V5cz1GYWxzZSwKICAgICAgICAgICAgIGluZGVudD1Ob25lLCBzZXBhcmF0b3JzPU5vbmUsIGRlZmF1bHQ9Tm9uZSk6CiAgICAgICAgICIiIkNvbnN0cnVjdG9yIGZvciBKU09ORW5jb2Rlciwgd2l0aCBzZW5zaWJsZSBkZWZhdWx0cy4KQEAgLTE3Niw3ICsxNzYsOCBAQAogICAgICAgICAgICAgICAgIHJldHVybiBKU09ORW5jb2Rlci5kZWZhdWx0KHNlbGYsIG8pCiAKICAgICAgICAgIiIiCi0gICAgICAgIHJhaXNlIFR5cGVFcnJvcihyZXByKG8pICsgIiBpcyBub3QgSlNPTiBzZXJpYWxpemFibGUiKQorICAgICAgICByYWlzZSBUeXBlRXJyb3IoIk9iamVjdCBvZiB0eXBlICclcycgaXMgbm90IEpTT04gc2VyaWFsaXphYmxlIiAlCisgICAgICAgICAgICAgICAgICAgICAgICBvLl9fY2xhc3NfXy5fX25hbWVfXykKIAogICAgIGRlZiBlbmNvZGUoc2VsZiwgbyk6CiAgICAgICAgICIiIlJldHVybiBhIEpTT04gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGEgUHl0aG9uIGRhdGEgc3RydWN0dXJlLgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvR3JhbW1hci50eHQgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAppbmRleCA2MDUwM2RkLi4yYWJkNWVlIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dAorKysgYi9MaWIvbGliMnRvMy9HcmFtbWFyLnR4dApAQCAtNTQsMTIgKzU0LDEzIEBACiBzaW1wbGVfc3RtdDogc21hbGxfc3RtdCAoJzsnIHNtYWxsX3N0bXQpKiBbJzsnXSBORVdMSU5FCiBzbWFsbF9zdG10OiAoZXhwcl9zdG10IHwgcHJpbnRfc3RtdCAgfCBkZWxfc3RtdCB8IHBhc3Nfc3RtdCB8IGZsb3dfc3RtdCB8CiAgICAgICAgICAgICAgaW1wb3J0X3N0bXQgfCBnbG9iYWxfc3RtdCB8IGV4ZWNfc3RtdCB8IGFzc2VydF9zdG10KQotZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAorZXhwcl9zdG10OiB0ZXN0bGlzdF9zdGFyX2V4cHIgKGFubmFzc2lnbiB8IGF1Z2Fzc2lnbiAoeWllbGRfZXhwcnx0ZXN0bGlzdCkgfAogICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCithbm5hc3NpZ246ICc6JyB0ZXN0IFsnPScgdGVzdF0KIHRlc3RsaXN0X3N0YXJfZXhwcjogKHRlc3R8c3Rhcl9leHByKSAoJywnICh0ZXN0fHN0YXJfZXhwcikpKiBbJywnXQogYXVnYXNzaWduOiAoJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nIHwKICAgICAgICAgICAgICc8PD0nIHwgJz4+PScgfCAnKio9JyB8ICcvLz0nKQotIyBGb3Igbm9ybWFsIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKKyMgRm9yIG5vcm1hbCBhbmQgYW5ub3RhdGVkIGFzc2lnbm1lbnRzLCBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucyBlbmZvcmNlZCBieSB0aGUgaW50ZXJwcmV0ZXIKIHByaW50X3N0bXQ6ICdwcmludCcgKCBbIHRlc3QgKCcsJyB0ZXN0KSogWycsJ10gXSB8CiAgICAgICAgICAgICAgICAgICAgICAgJz4+JyB0ZXN0IFsgKCcsJyB0ZXN0KSsgWycsJ10gXSApCiBkZWxfc3RtdDogJ2RlbCcgZXhwcmxpc3QKQEAgLTE2MCw3ICsxNjEsNyBAQAogCSAgICBzdGFyX2V4cHIgKQogCiBjb21wX2l0ZXI6IGNvbXBfZm9yIHwgY29tcF9pZgotY29tcF9mb3I6ICdmb3InIGV4cHJsaXN0ICdpbicgdGVzdGxpc3Rfc2FmZSBbY29tcF9pdGVyXQorY29tcF9mb3I6IFtBU1lOQ10gJ2ZvcicgZXhwcmxpc3QgJ2luJyB0ZXN0bGlzdF9zYWZlIFtjb21wX2l0ZXJdCiBjb21wX2lmOiAnaWYnIG9sZF90ZXN0IFtjb21wX2l0ZXJdCiAKIHRlc3RsaXN0MTogdGVzdCAoJywnIHRlc3QpKgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weSBiL0xpYi9saWIydG8zL2ZpeGVyX3V0aWwucHkKaW5kZXggNDQ1MDJiZi4uYmFiZTZjYiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXJfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcl91dGlsLnB5CkBAIC0xLDggKzEsNiBAQAogIiIiVXRpbGl0eSBmdW5jdGlvbnMsIG5vZGUgY29uc3RydWN0aW9uIG1hY3JvcywgZXRjLiIiIgogIyBBdXRob3I6IENvbGxpbiBXaW50ZXIKIAotZnJvbSBpdGVydG9vbHMgaW1wb3J0IGlzbGljZQotCiAjIExvY2FsIGltcG9ydHMKIGZyb20gLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAucHl0cmVlIGltcG9ydCBMZWFmLCBOb2RlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZGljdC5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CmluZGV4IDk2M2Y5NTIuLmQzNjU1YzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9kaWN0LnB5CkBAIC0zMCw5ICszMCw4IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IHB5dHJlZQogZnJvbSAuLiBpbXBvcnQgcGF0Y29tcAotZnJvbSAuLnBnZW4yIGltcG9ydCB0b2tlbgogZnJvbSAuLiBpbXBvcnQgZml4ZXJfYmFzZQotZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUsIENhbGwsIExQYXJlbiwgUlBhcmVuLCBBcmdMaXN0LCBEb3QKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBEb3QKIGZyb20gLi4gaW1wb3J0IGZpeGVyX3V0aWwKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZXhlYy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CmluZGV4IDJjOWI3MmQuLmFiOTIxZWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9leGVjLnB5CkBAIC0xMCw3ICsxMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4uIGltcG9ydCBweXRyZWUKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBDb21tYSwgTmFtZSwgQ2FsbAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2ZpbHRlci5weQppbmRleCAzOTE4ODlmLi5iYjY3MThjIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfZmlsdGVyLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9maWx0ZXIucHkKQEAgLTE0LDcgKzE0LDYgQEAKICIiIgogCiAjIExvY2FsIGltcG9ydHMKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBMaXN0Q29tcCwgaW5fc3BlY2lhbF9jb250ZXh0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9oYXNfa2V5LnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKaW5kZXggMThjNTYwZi4uNDM5NzA4YyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X2hhc19rZXkucHkKQEAgLTMxLDcgKzMxLDYgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBweXRyZWUKLWZyb20gLi5wZ2VuMiBpbXBvcnQgdG9rZW4KIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBwYXJlbnRoZXNpemUKIApkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9tZXRhY2xhc3MucHkKaW5kZXggNDZjN2FhZi4uOGUzNDQ2MyAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X21ldGFjbGFzcy5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbWV0YWNsYXNzLnB5CkBAIC0yMCw3ICsyMCw3IEBACiAjIExvY2FsIGltcG9ydHMKIGZyb20gLi4gaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gLi5weWdyYW0gaW1wb3J0IHRva2VuCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcywgTm9kZSwgTGVhZgorZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IHN5bXMsIE5vZGUsIExlYWYKIAogCiBkZWYgaGFzX21ldGFjbGFzcyhwYXJlbnQpOgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X25vbnplcm8ucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQppbmRleCBhZDkxYTI5Li5jMjI5NTk2IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQorKysgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfbm9uemVyby5weQpAQCAtMyw3ICszLDcgQEAKIAogIyBMb2NhbCBpbXBvcnRzCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgc3ltcworZnJvbSAuLmZpeGVyX3V0aWwgaW1wb3J0IE5hbWUKIAogY2xhc3MgRml4Tm9uemVybyhmaXhlcl9iYXNlLkJhc2VGaXgpOgogICAgIEJNX2NvbXBhdGlibGUgPSBUcnVlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkgYi9MaWIvbGliMnRvMy9maXhlcy9maXhfcHJpbnQucHkKaW5kZXggYTFmZTJmNS4uODc4MDMyMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3ByaW50LnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF9wcmludC5weQpAQCAtMTgsNyArMTgsNyBAQAogZnJvbSAuLiBpbXBvcnQgcHl0cmVlCiBmcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCi1mcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZSwgQ2FsbCwgQ29tbWEsIFN0cmluZywgaXNfdHVwbGUKK2Zyb20gLi5maXhlcl91dGlsIGltcG9ydCBOYW1lLCBDYWxsLCBDb21tYSwgU3RyaW5nCiAKIAogcGFyZW5kX2V4cHIgPSBwYXRjb21wLmNvbXBpbGVfcGF0dGVybigKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weSBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF90eXBlcy5weQppbmRleCBkYjM0MTA0Li42N2JmNTFmIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdHlwZXMucHkKKysrIGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3R5cGVzLnB5CkBAIC0yMCw3ICsyMCw2IEBACiAiIiIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIC4ucGdlbjIgaW1wb3J0IHRva2VuCiBmcm9tIC4uIGltcG9ydCBmaXhlcl9iYXNlCiBmcm9tIC4uZml4ZXJfdXRpbCBpbXBvcnQgTmFtZQogCkBAIC00Miw3ICs0MSw3IEBACiAgICAgICAgICdOb3RJbXBsZW1lbnRlZFR5cGUnIDogJ3R5cGUoTm90SW1wbGVtZW50ZWQpJywKICAgICAgICAgJ1NsaWNlVHlwZScgOiAnc2xpY2UnLAogICAgICAgICAnU3RyaW5nVHlwZSc6ICdieXRlcycsICMgWFhYID8KLSAgICAgICAgJ1N0cmluZ1R5cGVzJyA6ICdzdHInLCAjIFhYWCA/CisgICAgICAgICdTdHJpbmdUeXBlcycgOiAnKHN0ciwpJywgIyBYWFggPwogICAgICAgICAnVHVwbGVUeXBlJzogJ3R1cGxlJywKICAgICAgICAgJ1R5cGVUeXBlJyA6ICd0eXBlJywKICAgICAgICAgJ1VuaWNvZGVUeXBlJzogJ3N0cicsCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5IGIvTGliL2xpYjJ0bzMvZml4ZXMvZml4X3VybGxpYi5weQppbmRleCAxNDgxY2Q5Li41YTM2MDQ5IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy9maXhlcy9maXhfdXJsbGliLnB5CisrKyBiL0xpYi9saWIydG8zL2ZpeGVzL2ZpeF91cmxsaWIucHkKQEAgLTYsNyArNiw2IEBACiAKICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLmZpeGVzLmZpeF9pbXBvcnRzIGltcG9ydCBhbHRlcm5hdGVzLCBGaXhJbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IGZpeGVyX2Jhc2UKIGZyb20gbGliMnRvMy5maXhlcl91dGlsIGltcG9ydCAoTmFtZSwgQ29tbWEsIEZyb21JbXBvcnQsIE5ld2xpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbmRfaW5kZW50YXRpb24sIE5vZGUsIHN5bXMpCiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3JlZmFjdG9yLnB5IGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKaW5kZXggMDcyODA4My4uYzVhMWFhMiAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvcmVmYWN0b3IucHkKQEAgLTgsOCArOCw2IEBACiBwcm92aWRlcyBpbmZyYXN0cnVjdHVyZSB0byB3cml0ZSB5b3VyIG93biByZWZhY3RvcmluZyB0b29sLgogIiIiCiAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKLQogX19hdXRob3JfXyA9ICJHdWlkbyB2YW4gUm9zc3VtIDxndWlkb0BweXRob24ub3JnPiIKIAogCkBAIC0yNiw3ICsyNCw2IEBACiBmcm9tIC5wZ2VuMiBpbXBvcnQgZHJpdmVyLCB0b2tlbml6ZSwgdG9rZW4KIGZyb20gLmZpeGVyX3V0aWwgaW1wb3J0IGZpbmRfcm9vdAogZnJvbSAuIGltcG9ydCBweXRyZWUsIHB5Z3JhbQotZnJvbSAuIGltcG9ydCBidG1fdXRpbHMgYXMgYnUKIGZyb20gLiBpbXBvcnQgYnRtX21hdGNoZXIgYXMgYm0KIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkgYi9MaWIvbGliMnRvMy90ZXN0cy9kYXRhL3B5M190ZXN0X2dyYW1tYXIucHkKaW5kZXggYzBiZjdmMi4uY2YzMWE1NCAxMDA2NDQKLS0tIGEvTGliL2xpYjJ0bzMvdGVzdHMvZGF0YS9weTNfdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL2RhdGEvcHkzX3Rlc3RfZ3JhbW1hci5weQpAQCAtMzE5LDcgKzMxOSw3IEBACiAgICAgICAgIGRlZiBmKHgpIC0+IGxpc3Q6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZi5fX2Fubm90YXRpb25zX18sIHsncmV0dXJuJzogbGlzdH0pCiAKLSAgICAgICAgIyB0ZXN0IE1BS0VfQ0xPU1VSRSB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCisgICAgICAgICMgdGVzdCBjbG9zdXJlcyB3aXRoIGEgdmFyaWV0eSBvZiBvcGFyZydzCiAgICAgICAgIGNsb3N1cmUgPSAxCiAgICAgICAgIGRlZiBmKCk6IHJldHVybiBjbG9zdXJlCiAgICAgICAgIGRlZiBmKHg9MSk6IHJldHVybiBjbG9zdXJlCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvc3VwcG9ydC5weQppbmRleCAwODk3MTc3Li5hZTdjZmU4IDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy9zdXBwb3J0LnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3N1cHBvcnQucHkKQEAgLTMsMTAgKzMsOCBAQAogCiAjIFB5dGhvbiBpbXBvcnRzCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIGltcG9ydCBvcwogaW1wb3J0IG9zLnBhdGgKLWltcG9ydCByZQogZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CiAKICMgTG9jYWwgaW1wb3J0cwpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9hbGxfZml4ZXJzLnB5CmluZGV4IDE1MDc5ZmUuLmMwNTA3Y2YgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfYWxsX2ZpeGVycy5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2FsbF9maXhlcnMucHkKQEAgLTEwLDcgKzEwLDYgQEAKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHJlZmFjdG9yCiBmcm9tIC4gaW1wb3J0IHN1cHBvcnQKIAogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X2ZpeGVycy5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CmluZGV4IDY0MGRjZWYuLmIzZjI2ODAgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfZml4ZXJzLnB5CkBAIC0yLDEyICsyLDExIEBACiAKICMgUHl0aG9uIGltcG9ydHMKIGltcG9ydCBvcwotaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgY2hhaW4KIGZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKIAogIyBMb2NhbCBpbXBvcnRzCi1mcm9tIGxpYjJ0bzMgaW1wb3J0IHB5Z3JhbSwgcHl0cmVlLCByZWZhY3RvciwgZml4ZXJfdXRpbAorZnJvbSBsaWIydG8zIGltcG9ydCBweWdyYW0sIGZpeGVyX3V0aWwKIGZyb20gbGliMnRvMy50ZXN0cyBpbXBvcnQgc3VwcG9ydAogCiAKQEAgLTMyMzQsNiArMzIzMywxMCBAQAogICAgICAgICBhID0gIiIidHlwZShOb25lKSIiIgogICAgICAgICBzZWxmLmNoZWNrKGIsIGEpCiAKKyAgICAgICAgYiA9ICJ0eXBlcy5TdHJpbmdUeXBlcyIKKyAgICAgICAgYSA9ICIoc3RyLCkiCisgICAgICAgIHNlbGYuY2hlY2soYiwgYSkKKwogY2xhc3MgVGVzdF9pZGlvbXMoRml4ZXJUZXN0Q2FzZSk6CiAgICAgZml4ZXIgPSAiaWRpb21zIgogCmRpZmYgLS1naXQgYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3BhcnNlci5weSBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CmluZGV4IGU0YTAxOTQuLjlhOTY5ZTggMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcGFyc2VyLnB5CkBAIC04LDcgKzgsNyBAQAogCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0Ci1mcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIsIHRlc3RfZGlyCitmcm9tIC5zdXBwb3J0IGltcG9ydCBkcml2ZXIKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlCiAKICMgUHl0aG9uIGltcG9ydHMKQEAgLTEzNCw2ICsxMzQsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAiIiIpCiAKICAgICAgICAgc2VsZi52YWxpZGF0ZSgiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGJdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB7aSBmb3IgaSBpbiBiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzeW5jIGZvciBpIGluIGEgaWYgYXdhaXQgaQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGl9CisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbYXdhaXQgaSBmb3IgaSBpbiBiIGlmIGF3YWl0IGNdCisgICAgICAgICAgICAgICAgICAgICAgIiIiKQorCisgICAgICAgIHNlbGYudmFsaWRhdGUoIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbIGkgZm9yIGkgaW4gYiBpZiBjXQorICAgICAgICAgICAgICAgICAgICAgICIiIikKKworICAgICAgICBzZWxmLnZhbGlkYXRlKCIiImFzeW5jIGRlZiBmb28oKToKIAogICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCiAKQEAgLTI3Miw2ICsyOTAsMzYgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZShzKQogCiAKKyMgQWRhcHRlZCBmcm9tIFB5dGhvbiAzJ3MgTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5OkdyYW1tYXJUZXN0cy50ZXN0X3Zhcl9hbm5vdAorY2xhc3MgVGVzdFZhckFubm90YXRpb25zKEdyYW1tYXJUZXN0KToKKyAgICBkZWYgdGVzdF8xKHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJ2YXIxOiBpbnQgPSA1IikKKworICAgIGRlZiB0ZXN0XzIoc2VsZik6CisgICAgICAgIHNlbGYudmFsaWRhdGUoInZhcjI6IFtpbnQsIHN0cl0iKQorCisgICAgZGVmIHRlc3RfMyhzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHN0OiBzdHIgPSAnSGVsbG8nXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBhLmI6IGludCA9ICgxLCAyKVxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcmV0dXJuIHN0XG4iKQorCisgICAgZGVmIHRlc3RfNChzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgiZGVmIGZiYWQoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IGludFxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgcHJpbnQoeClcbiIpCisKKyAgICBkZWYgdGVzdF81KHNlbGYpOgorICAgICAgICBzZWxmLnZhbGlkYXRlKCJjbGFzcyBDOlxuIgorICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBzOiBzdHIgPSAnYXR0cidcbiIKKyAgICAgICAgICAgICAgICAgICAgICAiICAgIHogPSAyXG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgc2VsZi54OiBpbnQgPSB4XG4iKQorCisgICAgZGVmIHRlc3RfNihzZWxmKToKKyAgICAgICAgc2VsZi52YWxpZGF0ZSgibHN0OiBMaXN0W2ludF0gPSBbXSIpCisKIGNsYXNzIFRlc3RFeGNlcHQoR3JhbW1hclRlc3QpOgogICAgIGRlZiB0ZXN0X25ldyhzZWxmKToKICAgICAgICAgcyA9ICIiIgpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9weXRyZWUucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQppbmRleCA0ZDU4NWE4Li4xNzcxMjZkIDEwMDY0NAotLS0gYS9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3B5dHJlZS5weQpAQCAtOSwxMSArOSw2IEBACiBlc3BlY2lhbGx5IHdoZW4gZGVidWdnaW5nIGEgdGVzdC4KICIiIgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KLWltcG9ydCBzeXMKLWltcG9ydCB3YXJuaW5ncwotCiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3JlZmFjdG9yLnB5CmluZGV4IDg1NjMwMDEuLmU5YmFlNWUgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfcmVmYWN0b3IucHkKKysrIGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF9yZWZhY3Rvci5weQpAQCAtMiwyNCArMiwxOCBAQAogVW5pdCB0ZXN0cyBmb3IgcmVmYWN0b3IucHkuCiAiIiIKIAotZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAotCiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBjb2RlY3MKLWltcG9ydCBvcGVyYXRvcgogaW1wb3J0IGlvCiBpbXBvcnQgcmUKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIAogZnJvbSBsaWIydG8zIGltcG9ydCByZWZhY3RvciwgcHlncmFtLCBmaXhlcl9iYXNlCiBmcm9tIGxpYjJ0bzMucGdlbjIgaW1wb3J0IHRva2VuCiAKLWZyb20gLiBpbXBvcnQgc3VwcG9ydAotCiAKIFRFU1RfREFUQV9ESVIgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgImRhdGEiKQogRklYRVJfRElSID0gb3MucGF0aC5qb2luKFRFU1RfREFUQV9ESVIsICJmaXhlcnMiKQpkaWZmIC0tZ2l0IGEvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5IGIvTGliL2xpYjJ0bzMvdGVzdHMvdGVzdF91dGlsLnB5CmluZGV4IGQyYmU4MmMuLmM2YzYxMzkgMTAwNjQ0Ci0tLSBhL0xpYi9saWIydG8zL3Rlc3RzL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvbGliMnRvMy90ZXN0cy90ZXN0X3V0aWwucHkKQEAgLTMsOSArMyw2IEBACiAjIFRlc3RpbmcgaW1wb3J0cwogZnJvbSAuIGltcG9ydCBzdXBwb3J0CiAKLSMgUHl0aG9uIGltcG9ydHMKLWltcG9ydCBvcy5wYXRoCi0KICMgTG9jYWwgaW1wb3J0cwogZnJvbSBsaWIydG8zLnB5dHJlZSBpbXBvcnQgTm9kZSwgTGVhZgogZnJvbSBsaWIydG8zIGltcG9ydCBmaXhlcl91dGlsCmRpZmYgLS1naXQgYS9MaWIvbG9jYWxlLnB5IGIvTGliL2xvY2FsZS5weQppbmRleCA2ZDU5Y2Q4Li40ZGUwMDkwIDEwMDY0NAotLS0gYS9MaWIvbG9jYWxlLnB5CisrKyBiL0xpYi9sb2NhbGUucHkKQEAgLTMwMiwxMiArMzAyLDE2IEBACiAKIGRlZiBkZWxvY2FsaXplKHN0cmluZyk6CiAgICAgIlBhcnNlcyBhIHN0cmluZyBhcyBhIG5vcm1hbGl6ZWQgbnVtYmVyIGFjY29yZGluZyB0byB0aGUgbG9jYWxlIHNldHRpbmdzLiIKKworICAgIGNvbnYgPSBsb2NhbGVjb252KCkKKwogICAgICNGaXJzdCwgZ2V0IHJpZCBvZiB0aGUgZ3JvdXBpbmcKLSAgICB0cyA9IGxvY2FsZWNvbnYoKVsndGhvdXNhbmRzX3NlcCddCisgICAgdHMgPSBjb252Wyd0aG91c2FuZHNfc2VwJ10KICAgICBpZiB0czoKICAgICAgICAgc3RyaW5nID0gc3RyaW5nLnJlcGxhY2UodHMsICcnKQorCiAgICAgI25leHQsIHJlcGxhY2UgdGhlIGRlY2ltYWwgcG9pbnQgd2l0aCBhIGRvdAotICAgIGRkID0gbG9jYWxlY29udigpWydkZWNpbWFsX3BvaW50J10KKyAgICBkZCA9IGNvbnZbJ2RlY2ltYWxfcG9pbnQnXQogICAgIGlmIGRkOgogICAgICAgICBzdHJpbmcgPSBzdHJpbmcucmVwbGFjZShkZCwgJy4nKQogICAgIHJldHVybiBzdHJpbmcKZGlmZiAtLWdpdCBhL0xpYi9sb2dnaW5nL19faW5pdF9fLnB5IGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKaW5kZXggMjI3NDRlMS4uMjU5MGQ2NSAxMDA2NDQKLS0tIGEvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKKysrIGIvTGliL2xvZ2dpbmcvX19pbml0X18ucHkKQEAgLTMzLDggKzMzLDkgQEAKICAgICAgICAgICAgJ1N0cmVhbUhhbmRsZXInLCAnV0FSTicsICdXQVJOSU5HJywgJ2FkZExldmVsTmFtZScsICdiYXNpY0NvbmZpZycsCiAgICAgICAgICAgICdjYXB0dXJlV2FybmluZ3MnLCAnY3JpdGljYWwnLCAnZGVidWcnLCAnZGlzYWJsZScsICdlcnJvcicsCiAgICAgICAgICAgICdleGNlcHRpb24nLCAnZmF0YWwnLCAnZ2V0TGV2ZWxOYW1lJywgJ2dldExvZ2dlcicsICdnZXRMb2dnZXJDbGFzcycsCi0gICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3dhcm4nLCAnd2FybmluZycsCi0gICAgICAgICAgICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLCAnbGFzdFJlc29ydCddCisgICAgICAgICAgICdpbmZvJywgJ2xvZycsICdtYWtlTG9nUmVjb3JkJywgJ3NldExvZ2dlckNsYXNzJywgJ3NodXRkb3duJywKKyAgICAgICAgICAgJ3dhcm4nLCAnd2FybmluZycsICdnZXRMb2dSZWNvcmRGYWN0b3J5JywgJ3NldExvZ1JlY29yZEZhY3RvcnknLAorICAgICAgICAgICAnbGFzdFJlc29ydCcsICdyYWlzZUV4Y2VwdGlvbnMnXQogCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwpAQCAtMTA3LDYgKzEwOCw3IEBACiB9CiBfbmFtZVRvTGV2ZWwgPSB7CiAgICAgJ0NSSVRJQ0FMJzogQ1JJVElDQUwsCisgICAgJ0ZBVEFMJzogRkFUQUwsCiAgICAgJ0VSUk9SJzogRVJST1IsCiAgICAgJ1dBUk4nOiBXQVJOSU5HLAogICAgICdXQVJOSU5HJzogV0FSTklORywKQEAgLTkzNSw2ICs5MzcsMTAgQEAKICAgICAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICAgICAgZGVsIHQsIHYsIHRiCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgbGV2ZWwpCisKIGNsYXNzIFN0cmVhbUhhbmRsZXIoSGFuZGxlcik6CiAgICAgIiIiCiAgICAgQSBoYW5kbGVyIGNsYXNzIHdoaWNoIHdyaXRlcyBsb2dnaW5nIHJlY29yZHMsIGFwcHJvcHJpYXRlbHkgZm9ybWF0dGVkLApAQCAtOTg2LDYgKzk5MiwxNCBAQAogICAgICAgICBleGNlcHQgRXhjZXB0aW9uOgogICAgICAgICAgICAgc2VsZi5oYW5kbGVFcnJvcihyZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIG5hbWUgPSBnZXRhdHRyKHNlbGYuc3RyZWFtLCAnbmFtZScsICcnKQorICAgICAgICBpZiBuYW1lOgorICAgICAgICAgICAgbmFtZSArPSAnICcKKyAgICAgICAgcmV0dXJuICc8JXMgJXMoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIG5hbWUsIGxldmVsKQorCisKIGNsYXNzIEZpbGVIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIEEgaGFuZGxlciBjbGFzcyB3aGljaCB3cml0ZXMgZm9ybWF0dGVkIGxvZ2dpbmcgcmVjb3JkcyB0byBkaXNrIGZpbGVzLgpAQCAtOTk0LDYgKzEwMDgsOCBAQAogICAgICAgICAiIiIKICAgICAgICAgT3BlbiB0aGUgc3BlY2lmaWVkIGZpbGUgYW5kIHVzZSBpdCBhcyB0aGUgc3RyZWFtIGZvciBsb2dnaW5nLgogICAgICAgICAiIiIKKyAgICAgICAgIyBJc3N1ZSAjMjc0OTM6IGFkZCBzdXBwb3J0IGZvciBQYXRoIG9iamVjdHMgdG8gYmUgcGFzc2VkIGluCisgICAgICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgICAgICAja2VlcCB0aGUgYWJzb2x1dGUgcGF0aCwgb3RoZXJ3aXNlIGRlcml2ZWQgY2xhc3NlcyB3aGljaCB1c2UgdGhpcwogICAgICAgICAjbWF5IGNvbWUgYSBjcm9wcGVyIHdoZW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGNoYW5nZXMKICAgICAgICAgc2VsZi5iYXNlRmlsZW5hbWUgPSBvcy5wYXRoLmFic3BhdGgoZmlsZW5hbWUpCkBAIC0xMDQ4LDYgKzEwNjQsMTEgQEAKICAgICAgICAgICAgIHNlbGYuc3RyZWFtID0gc2VsZi5fb3BlbigpCiAgICAgICAgIFN0cmVhbUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKHNlbGYubGV2ZWwpCisgICAgICAgIHJldHVybiAnPCVzICVzICglcyk+JyAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5iYXNlRmlsZW5hbWUsIGxldmVsKQorCisKIGNsYXNzIF9TdGRlcnJIYW5kbGVyKFN0cmVhbUhhbmRsZXIpOgogICAgICIiIgogICAgIFRoaXMgY2xhc3MgaXMgbGlrZSBhIFN0cmVhbUhhbmRsZXIgdXNpbmcgc3lzLnN0ZGVyciwgYnV0IGFsd2F5cyB1c2VzCkBAIC0xNTQwLDYgKzE1NjEsMTEgQEAKICAgICAgICAgICAgIHN1ZmZpeCA9ICcuJy5qb2luKChzZWxmLm5hbWUsIHN1ZmZpeCkpCiAgICAgICAgIHJldHVybiBzZWxmLm1hbmFnZXIuZ2V0TG9nZ2VyKHN1ZmZpeCkKIAorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgbGV2ZWwgPSBnZXRMZXZlbE5hbWUoc2VsZi5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwgbGV2ZWwpCisKKwogY2xhc3MgUm9vdExvZ2dlcihMb2dnZXIpOgogICAgICIiIgogICAgIEEgcm9vdCBsb2dnZXIgaXMgbm90IHRoYXQgZGlmZmVyZW50IHRvIGFueSBvdGhlciBsb2dnZXIsIGV4Y2VwdCB0aGF0CkBAIC0xNjY2LDYgKzE2OTIsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBzZWxmLmxvZ2dlci5oYXNIYW5kbGVycygpCiAKKyAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgIGxvZ2dlciA9IHNlbGYubG9nZ2VyCisgICAgICAgIGxldmVsID0gZ2V0TGV2ZWxOYW1lKGxvZ2dlci5nZXRFZmZlY3RpdmVMZXZlbCgpKQorICAgICAgICByZXR1cm4gJzwlcyAlcyAoJXMpPicgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIGxvZ2dlci5uYW1lLCBsZXZlbCkKKwogcm9vdCA9IFJvb3RMb2dnZXIoV0FSTklORykKIExvZ2dlci5yb290ID0gcm9vdAogTG9nZ2VyLm1hbmFnZXIgPSBNYW5hZ2VyKExvZ2dlci5yb290KQpkaWZmIC0tZ2l0IGEvTGliL2xvZ2dpbmcvaGFuZGxlcnMucHkgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQppbmRleCBjMzlhNTZmLi43ZDc3OTczIDEwMDY0NAotLS0gYS9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQorKysgYi9MaWIvbG9nZ2luZy9oYW5kbGVycy5weQpAQCAtMjQ2LDYgKzI0Niw5IEBACiAKICAgICAgICAgc2VsZi5leHRNYXRjaCA9IHJlLmNvbXBpbGUoc2VsZi5leHRNYXRjaCwgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuaW50ZXJ2YWwgPSBzZWxmLmludGVydmFsICogaW50ZXJ2YWwgIyBtdWx0aXBseSBieSB1bml0cyByZXF1ZXN0ZWQKKyAgICAgICAgIyBUaGUgZm9sbG93aW5nIGxpbmUgYWRkZWQgYmVjYXVzZSB0aGUgZmlsZW5hbWUgcGFzc2VkIGluIGNvdWxkIGJlIGEKKyAgICAgICAgIyBwYXRoIG9iamVjdCAoc2VlIElzc3VlICMyNzQ5MyksIGJ1dCBzZWxmLmJhc2VGaWxlbmFtZSB3aWxsIGJlIGEgc3RyaW5nCisgICAgICAgIGZpbGVuYW1lID0gc2VsZi5iYXNlRmlsZW5hbWUKICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpOgogICAgICAgICAgICAgdCA9IG9zLnN0YXQoZmlsZW5hbWUpW1NUX01USU1FXQogICAgICAgICBlbHNlOgpAQCAtNDQwLDExICs0NDMsMTEgQEAKICAgICAgICAgICAgIHNyZXMgPSBvcy5mc3RhdChzZWxmLnN0cmVhbS5maWxlbm8oKSkKICAgICAgICAgICAgIHNlbGYuZGV2LCBzZWxmLmlubyA9IHNyZXNbU1RfREVWXSwgc3Jlc1tTVF9JTk9dCiAKLSAgICBkZWYgZW1pdChzZWxmLCByZWNvcmQpOgorICAgIGRlZiByZW9wZW5JZk5lZWRlZChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIEVtaXQgYSByZWNvcmQuCisgICAgICAgIFJlb3BlbiBsb2cgZmlsZSBpZiBuZWVkZWQuCiAKLSAgICAgICAgRmlyc3QgY2hlY2sgaWYgdGhlIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgYW5kIGlmIGl0CisgICAgICAgIENoZWNrcyBpZiB0aGUgdW5kZXJseWluZyBmaWxlIGhhcyBjaGFuZ2VkLCBhbmQgaWYgaXQKICAgICAgICAgaGFzLCBjbG9zZSB0aGUgb2xkIHN0cmVhbSBhbmQgcmVvcGVuIHRoZSBmaWxlIHRvIGdldCB0aGUKICAgICAgICAgY3VycmVudCBzdHJlYW0uCiAgICAgICAgICIiIgpAQCAtNDY3LDYgKzQ3MCwxNSBAQAogICAgICAgICAgICAgICAgICMgb3BlbiBhIG5ldyBmaWxlIGhhbmRsZSBhbmQgZ2V0IG5ldyBzdGF0IGluZm8gZnJvbSB0aGF0IGZkCiAgICAgICAgICAgICAgICAgc2VsZi5zdHJlYW0gPSBzZWxmLl9vcGVuKCkKICAgICAgICAgICAgICAgICBzZWxmLl9zdGF0c3RyZWFtKCkKKworICAgIGRlZiBlbWl0KHNlbGYsIHJlY29yZCk6CisgICAgICAgICIiIgorICAgICAgICBFbWl0IGEgcmVjb3JkLgorCisgICAgICAgIElmIHVuZGVybHlpbmcgZmlsZSBoYXMgY2hhbmdlZCwgcmVvcGVuIHRoZSBmaWxlIGJlZm9yZSBlbWl0dGluZyB0aGUKKyAgICAgICAgcmVjb3JkIHRvIGl0LgorICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5yZW9wZW5JZk5lZWRlZCgpCiAgICAgICAgIGxvZ2dpbmcuRmlsZUhhbmRsZXIuZW1pdChzZWxmLCByZWNvcmQpCiAKIApAQCAtMTIyOSwxNyArMTI0MSwyNSBAQAogICAgIGZsdXNoaW5nIHRoZW0gdG8gYSB0YXJnZXQgaGFuZGxlci4gRmx1c2hpbmcgb2NjdXJzIHdoZW5ldmVyIHRoZSBidWZmZXIKICAgICBpcyBmdWxsLCBvciB3aGVuIGFuIGV2ZW50IG9mIGEgY2VydGFpbiBzZXZlcml0eSBvciBncmVhdGVyIGlzIHNlZW4uCiAgICAgIiIiCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGNhcGFjaXR5LCBmbHVzaExldmVsPWxvZ2dpbmcuRVJST1IsIHRhcmdldD1Ob25lKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgY2FwYWNpdHksIGZsdXNoTGV2ZWw9bG9nZ2luZy5FUlJPUiwgdGFyZ2V0PU5vbmUsCisgICAgICAgICAgICAgICAgIGZsdXNoT25DbG9zZT1UcnVlKToKICAgICAgICAgIiIiCiAgICAgICAgIEluaXRpYWxpemUgdGhlIGhhbmRsZXIgd2l0aCB0aGUgYnVmZmVyIHNpemUsIHRoZSBsZXZlbCBhdCB3aGljaAogICAgICAgICBmbHVzaGluZyBzaG91bGQgb2NjdXIgYW5kIGFuIG9wdGlvbmFsIHRhcmdldC4KIAogICAgICAgICBOb3RlIHRoYXQgd2l0aG91dCBhIHRhcmdldCBiZWluZyBzZXQgZWl0aGVyIGhlcmUgb3IgdmlhIHNldFRhcmdldCgpLAogICAgICAgICBhIE1lbW9yeUhhbmRsZXIgaXMgbm8gdXNlIHRvIGFueW9uZSEKKworICAgICAgICBUaGUgYGBmbHVzaE9uQ2xvc2VgYCBhcmd1bWVudCBpcyBgYFRydWVgYCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eQorICAgICAgICByZWFzb25zIC0gdGhlIG9sZCBiZWhhdmlvdXIgaXMgdGhhdCB3aGVuIHRoZSBoYW5kbGVyIGlzIGNsb3NlZCwgdGhlCisgICAgICAgIGJ1ZmZlciBpcyBmbHVzaGVkLCBldmVuIGlmIHRoZSBmbHVzaCBsZXZlbCBoYXNuJ3QgYmVlbiBleGNlZWRlZCBub3IgdGhlCisgICAgICAgIGNhcGFjaXR5IGV4Y2VlZGVkLiBUbyBwcmV2ZW50IHRoaXMsIHNldCBgYGZsdXNoT25DbG9zZWBgIHRvIGBgRmFsc2VgYC4KICAgICAgICAgIiIiCiAgICAgICAgIEJ1ZmZlcmluZ0hhbmRsZXIuX19pbml0X18oc2VsZiwgY2FwYWNpdHkpCiAgICAgICAgIHNlbGYuZmx1c2hMZXZlbCA9IGZsdXNoTGV2ZWwKICAgICAgICAgc2VsZi50YXJnZXQgPSB0YXJnZXQKKyAgICAgICAgIyBTZWUgSXNzdWUgIzI2NTU5IGZvciB3aHkgdGhpcyBoYXMgYmVlbiBhZGRlZAorICAgICAgICBzZWxmLmZsdXNoT25DbG9zZSA9IGZsdXNoT25DbG9zZQogCiAgICAgZGVmIHNob3VsZEZsdXNoKHNlbGYsIHJlY29yZCk6CiAgICAgICAgICIiIgpAQCAtMTI3MywxMCArMTI5MywxMiBAQAogCiAgICAgZGVmIGNsb3NlKHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgRmx1c2gsIHNldCB0aGUgdGFyZ2V0IHRvIE5vbmUgYW5kIGxvc2UgdGhlIGJ1ZmZlci4KKyAgICAgICAgRmx1c2gsIGlmIGFwcHJvcHJpYXRlbHkgY29uZmlndXJlZCwgc2V0IHRoZSB0YXJnZXQgdG8gTm9uZSBhbmQgbG9zZSB0aGUKKyAgICAgICAgYnVmZmVyLgogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5mbHVzaCgpCisgICAgICAgICAgICBpZiBzZWxmLmZsdXNoT25DbG9zZToKKyAgICAgICAgICAgICAgICBzZWxmLmZsdXNoKCkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuYWNxdWlyZSgpCiAgICAgICAgICAgICB0cnk6CmRpZmYgLS1naXQgYS9MaWIvbHptYS5weSBiL0xpYi9sem1hLnB5CmluZGV4IDdkZmYxYzMuLjA4MTdiODcgMTAwNjQ0Ci0tLSBhL0xpYi9sem1hLnB5CisrKyBiL0xpYi9sem1hLnB5CkBAIC0yMyw2ICsyMyw3IEBACiAKIGltcG9ydCBidWlsdGlucwogaW1wb3J0IGlvCitpbXBvcnQgb3MKIGZyb20gX2x6bWEgaW1wb3J0ICoKIGZyb20gX2x6bWEgaW1wb3J0IF9lbmNvZGVfZmlsdGVyX3Byb3BlcnRpZXMsIF9kZWNvZGVfZmlsdGVyX3Byb3BlcnRpZXMKIGltcG9ydCBfY29tcHJlc3Npb24KQEAgLTQ5LDkgKzUwLDEwIEBACiAgICAgICAgICAgICAgICAgIGZvcm1hdD1Ob25lLCBjaGVjaz0tMSwgcHJlc2V0PU5vbmUsIGZpbHRlcnM9Tm9uZSk6CiAgICAgICAgICIiIk9wZW4gYW4gTFpNQS1jb21wcmVzc2VkIGZpbGUgaW4gYmluYXJ5IG1vZGUuCiAKLSAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciBvcgotICAgICAgICBieXRlcyBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQgY2FuCi0gICAgICAgIGJlIGFuIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgICAgICAgZmlsZW5hbWUgY2FuIGJlIGVpdGhlciBhbiBhY3R1YWwgZmlsZSBuYW1lIChnaXZlbiBhcyBhIHN0ciwKKyAgICAgICAgYnl0ZXMsIG9yIFBhdGhMaWtlIG9iamVjdCksIGluIHdoaWNoIGNhc2UgdGhlIG5hbWVkIGZpbGUgaXMKKyAgICAgICAgb3BlbmVkLCBvciBpdCBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yCisgICAgICAgIHdyaXRlIHRvLgogCiAgICAgICAgIG1vZGUgY2FuIGJlICJyIiBmb3IgcmVhZGluZyAoZGVmYXVsdCksICJ3IiBmb3IgKG92ZXIpd3JpdGluZywKICAgICAgICAgIngiIGZvciBjcmVhdGluZyBleGNsdXNpdmVseSwgb3IgImEiIGZvciBhcHBlbmRpbmcuIFRoZXNlIGNhbgpAQCAtMTEyLDcgKzExNCw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJJbnZhbGlkIG1vZGU6IHshcn0iLmZvcm1hdChtb2RlKSkKIAotICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcykpOgorICAgICAgICBpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCAoc3RyLCBieXRlcywgb3MuUGF0aExpa2UpKToKICAgICAgICAgICAgIGlmICJiIiBub3QgaW4gbW9kZToKICAgICAgICAgICAgICAgICBtb2RlICs9ICJiIgogICAgICAgICAgICAgc2VsZi5fZnAgPSBidWlsdGlucy5vcGVuKGZpbGVuYW1lLCBtb2RlKQpAQCAtMTIyLDcgKzEyNCw3IEBACiAgICAgICAgICAgICBzZWxmLl9mcCA9IGZpbGVuYW1lCiAgICAgICAgICAgICBzZWxmLl9tb2RlID0gbW9kZV9jb2RlCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoImZpbGVuYW1lIG11c3QgYmUgYSBzdHIgb3IgYnl0ZXMgb2JqZWN0LCBvciBhIGZpbGUiKQorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJmaWxlbmFtZSBtdXN0IGJlIGEgc3RyLCBieXRlcywgZmlsZSBvciBQYXRoTGlrZSBvYmplY3QiKQogCiAgICAgICAgIGlmIHNlbGYuX21vZGUgPT0gX01PREVfUkVBRDoKICAgICAgICAgICAgIHJhdyA9IF9jb21wcmVzc2lvbi5EZWNvbXByZXNzUmVhZGVyKHNlbGYuX2ZwLCBMWk1BRGVjb21wcmVzc29yLApAQCAtMjYzLDkgKzI2NSw5IEBACiAgICAgICAgICBlbmNvZGluZz1Ob25lLCBlcnJvcnM9Tm9uZSwgbmV3bGluZT1Ob25lKToKICAgICAiIiJPcGVuIGFuIExaTUEtY29tcHJlc3NlZCBmaWxlIGluIGJpbmFyeSBvciB0ZXh0IG1vZGUuCiAKLSAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyIG9yIGJ5dGVzCi0gICAgb2JqZWN0KSwgaW4gd2hpY2ggY2FzZSB0aGUgbmFtZWQgZmlsZSBpcyBvcGVuZWQsIG9yIGl0IGNhbiBiZSBhbgotICAgIGV4aXN0aW5nIGZpbGUgb2JqZWN0IHRvIHJlYWQgZnJvbSBvciB3cml0ZSB0by4KKyAgICBmaWxlbmFtZSBjYW4gYmUgZWl0aGVyIGFuIGFjdHVhbCBmaWxlIG5hbWUgKGdpdmVuIGFzIGEgc3RyLCBieXRlcywKKyAgICBvciBQYXRoTGlrZSBvYmplY3QpLCBpbiB3aGljaCBjYXNlIHRoZSBuYW1lZCBmaWxlIGlzIG9wZW5lZCwgb3IgaXQKKyAgICBjYW4gYmUgYW4gZXhpc3RpbmcgZmlsZSBvYmplY3QgdG8gcmVhZCBmcm9tIG9yIHdyaXRlIHRvLgogCiAgICAgVGhlIG1vZGUgYXJndW1lbnQgY2FuIGJlICJyIiwgInJiIiAoZGVmYXVsdCksICJ3IiwgIndiIiwgIngiLCAieGIiLAogICAgICJhIiwgb3IgImFiIiBmb3IgYmluYXJ5IG1vZGUsIG9yICJydCIsICJ3dCIsICJ4dCIsIG9yICJhdCIgZm9yIHRleHQKZGlmZiAtLWdpdCBhL0xpYi9tYWlsYm94LnB5IGIvTGliL21haWxib3gucHkKaW5kZXggMDI3MGUyNS4uMGUyMzk4NyAxMDA2NDQKLS0tIGEvTGliL21haWxib3gucHkKKysrIGIvTGliL21haWxib3gucHkKQEAgLTIzLDkgKzIzLDEwIEBACiBleGNlcHQgSW1wb3J0RXJyb3I6CiAgICAgZmNudGwgPSBOb25lCiAKLV9fYWxsX18gPSBbICdNYWlsYm94JywgJ01haWxkaXInLCAnbWJveCcsICdNSCcsICdCYWJ5bCcsICdNTURGJywKLSAgICAgICAgICAgICdNZXNzYWdlJywgJ01haWxkaXJNZXNzYWdlJywgJ21ib3hNZXNzYWdlJywgJ01ITWVzc2FnZScsCi0gICAgICAgICAgICAnQmFieWxNZXNzYWdlJywgJ01NREZNZXNzYWdlJ10KK19fYWxsX18gPSBbJ01haWxib3gnLCAnTWFpbGRpcicsICdtYm94JywgJ01IJywgJ0JhYnlsJywgJ01NREYnLAorICAgICAgICAgICAnTWVzc2FnZScsICdNYWlsZGlyTWVzc2FnZScsICdtYm94TWVzc2FnZScsICdNSE1lc3NhZ2UnLAorICAgICAgICAgICAnQmFieWxNZXNzYWdlJywgJ01NREZNZXNzYWdlJywgJ0Vycm9yJywgJ05vU3VjaE1haWxib3hFcnJvcicsCisgICAgICAgICAgICdOb3RFbXB0eUVycm9yJywgJ0V4dGVybmFsQ2xhc2hFcnJvcicsICdGb3JtYXRFcnJvciddCiAKIGxpbmVzZXAgPSBvcy5saW5lc2VwLmVuY29kZSgnYXNjaWknKQogCmRpZmYgLS1naXQgYS9MaWIvbWltZXR5cGVzLnB5IGIvTGliL21pbWV0eXBlcy5weQppbmRleCAwYmU3NmFkLi45YTg4NjgwIDEwMDY0NAotLS0gYS9MaWIvbWltZXR5cGVzLnB5CisrKyBiL0xpYi9taW1ldHlwZXMucHkKQEAgLTMzLDggKzMzLDEwIEBACiAgICAgX3dpbnJlZyA9IE5vbmUKIAogX19hbGxfXyA9IFsKLSAgICAiZ3Vlc3NfdHlwZSIsImd1ZXNzX2V4dGVuc2lvbiIsImd1ZXNzX2FsbF9leHRlbnNpb25zIiwKLSAgICAiYWRkX3R5cGUiLCJyZWFkX21pbWVfdHlwZXMiLCJpbml0IgorICAgICJrbm93bmZpbGVzIiwgImluaXRlZCIsICJNaW1lVHlwZXMiLAorICAgICJndWVzc190eXBlIiwgImd1ZXNzX2FsbF9leHRlbnNpb25zIiwgImd1ZXNzX2V4dGVuc2lvbiIsCisgICAgImFkZF90eXBlIiwgImluaXQiLCAicmVhZF9taW1lX3R5cGVzIiwKKyAgICAic3VmZml4X21hcCIsICJlbmNvZGluZ3NfbWFwIiwgInR5cGVzX21hcCIsICJjb21tb25fdHlwZXMiCiBdCiAKIGtub3duZmlsZXMgPSBbCmRpZmYgLS1naXQgYS9MaWIvbW9kdWxlZmluZGVyLnB5IGIvTGliL21vZHVsZWZpbmRlci5weQppbmRleCA4MTAzNTAyLi5lMjIwMzE1IDEwMDY0NAotLS0gYS9MaWIvbW9kdWxlZmluZGVyLnB5CisrKyBiL0xpYi9tb2R1bGVmaW5kZXIucHkKQEAgLTEwLDcgKzEwLDcgQEAKIGltcG9ydCBzdHJ1Y3QKIGltcG9ydCB3YXJuaW5ncwogd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZykKKyAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKICAgICBpbXBvcnQgaW1wCiAKIExPQURfQ09OU1QgPSBkaXMub3BtYXBbJ0xPQURfQ09OU1QnXQpAQCAtMzM2LDggKzMzNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmdWxsbmFtZSA9IG5hbWUgKyAiLiIgKyBzdWIKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2FkZF9iYWRtb2R1bGUoZnVsbG5hbWUsIGNhbGxlcikKIAotICAgIGRlZiBzY2FuX29wY29kZXNfMjUoc2VsZiwgY28sCi0gICAgICAgICAgICAgICAgICAgICB1bnBhY2sgPSBzdHJ1Y3QudW5wYWNrKToKKyAgICBkZWYgc2Nhbl9vcGNvZGVzKHNlbGYsIGNvKToKICAgICAgICAgIyBTY2FuIHRoZSBjb2RlLCBhbmQgeWllbGQgJ2ludGVyZXN0aW5nJyBvcGNvZGUgY29tYmluYXRpb25zCiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCiAgICAgICAgIG5hbWVzID0gY28uY29fbmFtZXMKQEAgLTM2MCw3ICszNTksNyBAQAogCiAgICAgZGVmIHNjYW5fY29kZShzZWxmLCBjbywgbSk6CiAgICAgICAgIGNvZGUgPSBjby5jb19jb2RlCi0gICAgICAgIHNjYW5uZXIgPSBzZWxmLnNjYW5fb3Bjb2Rlc18yNQorICAgICAgICBzY2FubmVyID0gc2VsZi5zY2FuX29wY29kZXMKICAgICAgICAgZm9yIHdoYXQsIGFyZ3MgaW4gc2Nhbm5lcihjbyk6CiAgICAgICAgICAgICBpZiB3aGF0ID09ICJzdG9yZSI6CiAgICAgICAgICAgICAgICAgbmFtZSwgPSBhcmdzCmRpZmYgLS1naXQgYS9MaWIvbXNpbGliL19faW5pdF9fLnB5IGIvTGliL21zaWxpYi9fX2luaXRfXy5weQppbmRleCA2ZDBhMjhmLi5mMDM3MGMyIDEwMDY0NAotLS0gYS9MaWIvbXNpbGliL19faW5pdF9fLnB5CisrKyBiL0xpYi9tc2lsaWIvX19pbml0X18ucHkKQEAgLTEsNyArMSw3IEBACiAjIENvcHlyaWdodCAoQykgMjAwNSBNYXJ0aW4gdi4gTMO2d2lzCiAjIExpY2Vuc2VkIHRvIFBTRiB1bmRlciBhIENvbnRyaWJ1dG9yIEFncmVlbWVudC4KIGZyb20gX21zaSBpbXBvcnQgKgotaW1wb3J0IGdsb2IKK2ltcG9ydCBmbm1hdGNoCiBpbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IHN0cmluZwpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgZGVmIG1ha2Vfc2hvcnQoc2VsZiwgZmlsZSk6CiAgICAgICAgIG9sZGZpbGUgPSBmaWxlCiAgICAgICAgIGZpbGUgPSBmaWxlLnJlcGxhY2UoJysnLCAnXycpCi0gICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiAnICIvXFtdOjs9LCcpCisgICAgICAgIGZpbGUgPSAnJy5qb2luKGMgZm9yIGMgaW4gZmlsZSBpZiBub3QgYyBpbiByJyAiL1xbXTo7PSwnKQogICAgICAgICBwYXJ0cyA9IGZpbGUuc3BsaXQoIi4iKQogICAgICAgICBpZiBsZW4ocGFydHMpID4gMToKICAgICAgICAgICAgIHByZWZpeCA9ICIiLmpvaW4ocGFydHNbOi0xXSkudXBwZXIoKQpAQCAtMzc5LDcgKzM3OSwxMyBAQAogICAgIGRlZiBnbG9iKHNlbGYsIHBhdHRlcm4sIGV4Y2x1ZGUgPSBOb25lKToKICAgICAgICAgIiIiQWRkIGEgbGlzdCBvZiBmaWxlcyB0byB0aGUgY3VycmVudCBjb21wb25lbnQgYXMgc3BlY2lmaWVkIGluIHRoZQogICAgICAgICBnbG9iIHBhdHRlcm4uIEluZGl2aWR1YWwgZmlsZXMgY2FuIGJlIGV4Y2x1ZGVkIGluIHRoZSBleGNsdWRlIGxpc3QuIiIiCi0gICAgICAgIGZpbGVzID0gZ2xvYi5nbG9iMShzZWxmLmFic29sdXRlLCBwYXR0ZXJuKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmaWxlcyA9IG9zLmxpc3RkaXIoc2VsZi5hYnNvbHV0ZSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gW10KKyAgICAgICAgaWYgcGF0dGVybls6MV0gIT0gJy4nOgorICAgICAgICAgICAgZmlsZXMgPSAoZiBmb3IgZiBpbiBmaWxlcyBpZiBmWzBdICE9ICcuJykKKyAgICAgICAgZmlsZXMgPSBmbm1hdGNoLmZpbHRlcihmaWxlcywgcGF0dGVybikKICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICBpZiBleGNsdWRlIGFuZCBmIGluIGV4Y2x1ZGU6IGNvbnRpbnVlCiAgICAgICAgICAgICBzZWxmLmFkZF9maWxlKGYpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2Nvbm5lY3Rpb24ucHkKaW5kZXggZDBhMWI4Ni4uZDQ5ZThmMCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb25uZWN0aW9uLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29ubmVjdGlvbi5weQpAQCAtMjAsMTEgKzIwLDExIEBACiAKIGltcG9ydCBfbXVsdGlwcm9jZXNzaW5nCiAKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogZnJvbSAuIGltcG9ydCBBdXRoZW50aWNhdGlvbkVycm9yLCBCdWZmZXJUb29TaG9ydAotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCitfRm9ya2luZ1BpY2tsZXIgPSByZWR1Y3Rpb24uRm9ya2luZ1BpY2tsZXIKIAogdHJ5OgogICAgIGltcG9ydCBfd2luYXBpCkBAIC0yMDMsNyArMjAzLDcgQEAKICAgICAgICAgIiIiU2VuZCBhIChwaWNrbGFibGUpIG9iamVjdCIiIgogICAgICAgICBzZWxmLl9jaGVja19jbG9zZWQoKQogICAgICAgICBzZWxmLl9jaGVja193cml0YWJsZSgpCi0gICAgICAgIHNlbGYuX3NlbmRfYnl0ZXMoRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKKyAgICAgICAgc2VsZi5fc2VuZF9ieXRlcyhfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKSkKIAogICAgIGRlZiByZWN2X2J5dGVzKHNlbGYsIG1heGxlbmd0aD1Ob25lKToKICAgICAgICAgIiIiCkBAIC0yNDgsNyArMjQ4LDcgQEAKICAgICAgICAgc2VsZi5fY2hlY2tfY2xvc2VkKCkKICAgICAgICAgc2VsZi5fY2hlY2tfcmVhZGFibGUoKQogICAgICAgICBidWYgPSBzZWxmLl9yZWN2X2J5dGVzKCkKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKGJ1Zi5nZXRidWZmZXIoKSkKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhidWYuZ2V0YnVmZmVyKCkpCiAKICAgICBkZWYgcG9sbChzZWxmLCB0aW1lb3V0PTAuMCk6CiAgICAgICAgICIiIldoZXRoZXIgdGhlcmUgaXMgYW55IGlucHV0IGF2YWlsYWJsZSB0byBiZSByZWFkIiIiCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2NvbnRleHQucHkKaW5kZXggNjM4NDlmOS4uMDk0NTVlMiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9jb250ZXh0LnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvY29udGV4dC5weQpAQCAtMyw2ICszLDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCitmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogCiBfX2FsbF9fID0gW10gICAgICAgICAgICAjIHRoaW5ncyBhcmUgY29waWVkIGZyb20gaGVyZSB0byBfX2luaXRfXy5weQogCkBAIC0xOTgsNiArMTk5LDE2IEBACiAgICAgZGVmIHNldF9zdGFydF9tZXRob2Qoc2VsZiwgbWV0aG9kPU5vbmUpOgogICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdjYW5ub3Qgc2V0IHN0YXJ0IG1ldGhvZCBvZiBjb25jcmV0ZSBjb250ZXh0JykKIAorICAgIEBwcm9wZXJ0eQorICAgIGRlZiByZWR1Y2VyKHNlbGYpOgorICAgICAgICAnJydDb250cm9scyBob3cgb2JqZWN0cyB3aWxsIGJlIHJlZHVjZWQgdG8gYSBmb3JtIHRoYXQgY2FuIGJlCisgICAgICAgIHNoYXJlZCB3aXRoIG90aGVyIHByb2Nlc3Nlcy4nJycKKyAgICAgICAgcmV0dXJuIGdsb2JhbHMoKS5nZXQoJ3JlZHVjdGlvbicpCisKKyAgICBAcmVkdWNlci5zZXR0ZXIKKyAgICBkZWYgcmVkdWNlcihzZWxmLCByZWR1Y3Rpb24pOgorICAgICAgICBnbG9iYWxzKClbJ3JlZHVjdGlvbiddID0gcmVkdWN0aW9uCisKICAgICBkZWYgX2NoZWNrX2F2YWlsYWJsZShzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC0yNDUsNyArMjU2LDYgQEAKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CiAgICAgICAgICAgICByZXR1cm4gWydzcGF3biddCiAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBmcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogICAgICAgICAgICAgaWYgcmVkdWN0aW9uLkhBVkVfU0VORF9IQU5ETEU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFsnZm9yaycsICdzcGF3bicsICdmb3Jrc2VydmVyJ10KICAgICAgICAgICAgIGVsc2U6CkBAIC0yOTIsNyArMzAyLDYgQEAKICAgICAgICAgX25hbWUgPSAnZm9ya3NlcnZlcicKICAgICAgICAgUHJvY2VzcyA9IEZvcmtTZXJ2ZXJQcm9jZXNzCiAgICAgICAgIGRlZiBfY2hlY2tfYXZhaWxhYmxlKHNlbGYpOgotICAgICAgICAgICAgZnJvbSAuIGltcG9ydCByZWR1Y3Rpb24KICAgICAgICAgICAgIGlmIG5vdCByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCdmb3Jrc2VydmVyIHN0YXJ0IG1ldGhvZCBub3QgYXZhaWxhYmxlJykKIApkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9mb3Jrc2VydmVyLnB5CmluZGV4IGFkMDFlZGUuLmYyYzE3OWUgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvZm9ya3NlcnZlci5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL2ZvcmtzZXJ2ZXIucHkKQEAgLTksNyArOSw3IEBACiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHNlbWFwaG9yZV90cmFja2VyCiBmcm9tIC4gaW1wb3J0IHNwYXduCiBmcm9tIC4gaW1wb3J0IHV0aWwKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvaGVhcC5weQppbmRleCA0NGQ5NjM4Li40NDMzMjE1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL2hlYXAucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9oZWFwLnB5CkBAIC0xNCw4ICsxNCw3IEBACiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB0aHJlYWRpbmcKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Ci1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBhc3NlcnRfc3Bhd25pbmcKIGZyb20gLiBpbXBvcnQgdXRpbAogCiBfX2FsbF9fID0gWydCdWZmZXJXcmFwcGVyJ10KQEAgLTQ4LDcgKzQ3LDcgQEAKICAgICAgICAgICAgIHNlbGYuX3N0YXRlID0gKHNlbGYuc2l6ZSwgc2VsZi5uYW1lKQogCiAgICAgICAgIGRlZiBfX2dldHN0YXRlX18oc2VsZik6Ci0gICAgICAgICAgICBjb250ZXh0LmFzc2VydF9zcGF3bmluZyhzZWxmKQorICAgICAgICAgICAgYXNzZXJ0X3NwYXduaW5nKHNlbGYpCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RhdGUKIAogICAgICAgICBkZWYgX19zZXRzdGF0ZV9fKHNlbGYsIHN0YXRlKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL21hbmFnZXJzLnB5CmluZGV4IGIxNzU0NzAuLmI5Y2U4NGIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvbWFuYWdlcnMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9tYW5hZ2Vycy5weQpAQCAtMjMsMTAgKzIzLDkgQEAKIGZyb20gdHJhY2ViYWNrIGltcG9ydCBmb3JtYXRfZXhjCiAKIGZyb20gLiBpbXBvcnQgY29ubmVjdGlvbgotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGdldF9zcGF3bmluZ19wb3BlbgogZnJvbSAuIGltcG9ydCBwb29sCiBmcm9tIC4gaW1wb3J0IHByb2Nlc3MKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIGZyb20gLiBpbXBvcnQgZ2V0X2NvbnRleHQKIApAQCAtMTQyLDcgKzE0MSw4IEBACiAKICAgICAgICAgc2VsZi5pZF90b19vYmogPSB7JzAnOiAoTm9uZSwgKCkpfQogICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50ID0ge30KLSAgICAgICAgc2VsZi5tdXRleCA9IHRocmVhZGluZy5STG9jaygpCisgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqID0ge30KKyAgICAgICAgc2VsZi5tdXRleCA9IHRocmVhZGluZy5Mb2NrKCkKIAogICAgIGRlZiBzZXJ2ZV9mb3JldmVyKHNlbGYpOgogICAgICAgICAnJycKQEAgLTIyNyw3ICsyMjcsMTQgQEAKICAgICAgICAgICAgICAgICBtZXRob2RuYW1lID0gb2JqID0gTm9uZQogICAgICAgICAgICAgICAgIHJlcXVlc3QgPSByZWN2KCkKICAgICAgICAgICAgICAgICBpZGVudCwgbWV0aG9kbmFtZSwgYXJncywga3dkcyA9IHJlcXVlc3QKLSAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IGlkX3RvX29ialtpZGVudF0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIG9iaiwgZXhwb3NlZCwgZ2V0dHlwZWlkID0gaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBrZToKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgb2JqLCBleHBvc2VkLCBnZXR0eXBlaWQgPSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19sb2NhbF9wcm94eV9vYmpbaWRlbnRdCisgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBLZXlFcnJvciBhcyBzZWNvbmRfa2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBrZQogCiAgICAgICAgICAgICAgICAgaWYgbWV0aG9kbmFtZSBub3QgaW4gZXhwb3NlZDoKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoCkBAIC0zMDgsNyArMzE1LDcgQEAKICAgICAgICAgJycnCiAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKICAgICAgICAgICAgIHJlc3VsdCA9IFtdCi0gICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX29iai5rZXlzKCkpCisgICAgICAgICAgICBrZXlzID0gbGlzdChzZWxmLmlkX3RvX3JlZmNvdW50LmtleXMoKSkKICAgICAgICAgICAgIGtleXMuc29ydCgpCiAgICAgICAgICAgICBmb3IgaWRlbnQgaW4ga2V5czoKICAgICAgICAgICAgICAgICBpZiBpZGVudCAhPSAnMCc6CkBAIC0zMjEsNyArMzI4LDggQEAKICAgICAgICAgJycnCiAgICAgICAgIE51bWJlciBvZiBzaGFyZWQgb2JqZWN0cwogICAgICAgICAnJycKLSAgICAgICAgcmV0dXJuIGxlbihzZWxmLmlkX3RvX29iaikgLSAxICAgICAgIyBkb24ndCBjb3VudCBpZGVudD0nMCcKKyAgICAgICAgIyBEb2Vzbid0IHVzZSAobGVuKHNlbGYuaWRfdG9fb2JqKSAtIDEpIGFzIHdlIHNob3VsZG4ndCBjb3VudCBpZGVudD0nMCcKKyAgICAgICAgcmV0dXJuIGxlbihzZWxmLmlkX3RvX3JlZmNvdW50KQogCiAgICAgZGVmIHNodXRkb3duKHNlbGYsIGMpOgogICAgICAgICAnJycKQEAgLTM2MywxMyArMzcxLDkgQEAKICAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IChvYmosIHNldChleHBvc2VkKSwgbWV0aG9kX3RvX3R5cGVpZCkKICAgICAgICAgICAgIGlmIGlkZW50IG5vdCBpbiBzZWxmLmlkX3RvX3JlZmNvdW50OgogICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID0gMAotICAgICAgICAgICAgIyBpbmNyZW1lbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBpbW1lZGlhdGVseSwgdG8gYXZvaWQKLSAgICAgICAgICAgICMgdGhpcyBvYmplY3QgYmVpbmcgZ2FyYmFnZSBjb2xsZWN0ZWQgYmVmb3JlIGEgUHJveHkKLSAgICAgICAgICAgICMgb2JqZWN0IGZvciBpdCBjYW4gYmUgY3JlYXRlZC4gIFRoZSBjYWxsZXIgb2YgY3JlYXRlKCkKLSAgICAgICAgICAgICMgaXMgcmVzcG9uc2libGUgZm9yIGRvaW5nIGEgZGVjcmVmIG9uY2UgdGhlIFByb3h5IG9iamVjdAotICAgICAgICAgICAgIyBoYXMgYmVlbiBjcmVhdGVkLgotICAgICAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCi0gICAgICAgICAgICByZXR1cm4gaWRlbnQsIHR1cGxlKGV4cG9zZWQpCisKKyAgICAgICAgc2VsZi5pbmNyZWYoYywgaWRlbnQpCisgICAgICAgIHJldHVybiBpZGVudCwgdHVwbGUoZXhwb3NlZCkKIAogICAgIGRlZiBnZXRfbWV0aG9kcyhzZWxmLCBjLCB0b2tlbik6CiAgICAgICAgICcnJwpAQCAtMzg3LDE1ICszOTEsNDUgQEAKIAogICAgIGRlZiBpbmNyZWYoc2VsZiwgYywgaWRlbnQpOgogICAgICAgICB3aXRoIHNlbGYubXV0ZXg6Ci0gICAgICAgICAgICBzZWxmLmlkX3RvX3JlZmNvdW50W2lkZW50XSArPSAxCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gKz0gMQorICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yIGFzIGtlOgorICAgICAgICAgICAgICAgICMgSWYgbm8gZXh0ZXJuYWwgcmVmZXJlbmNlcyBleGlzdCBidXQgYW4gaW50ZXJuYWwgKHRvIHRoZQorICAgICAgICAgICAgICAgICMgbWFuYWdlcikgc3RpbGwgZG9lcyBhbmQgYSBuZXcgZXh0ZXJuYWwgcmVmZXJlbmNlIGlzIGNyZWF0ZWQKKyAgICAgICAgICAgICAgICAjIGZyb20gaXQsIHJlc3RvcmUgdGhlIG1hbmFnZXIncyB0cmFja2luZyBvZiBpdCBmcm9tIHRoZQorICAgICAgICAgICAgICAgICMgcHJldmlvdXNseSBzdGFzaGVkIGludGVybmFsIHJlZi4KKyAgICAgICAgICAgICAgICBpZiBpZGVudCBpbiBzZWxmLmlkX3RvX2xvY2FsX3Byb3h5X29iajoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0gPSAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fb2JqW2lkZW50XSA9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICBvYmosIGV4cG9zZWQsIGdldHR5cGVpZCA9IHNlbGYuaWRfdG9fb2JqW2lkZW50XQorICAgICAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdTZXJ2ZXIgcmUtZW5hYmxlZCB0cmFja2luZyAmIElOQ1JFRiAlcicsIGlkZW50KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIGtlCiAKICAgICBkZWYgZGVjcmVmKHNlbGYsIGMsIGlkZW50KToKKyAgICAgICAgaWYgaWRlbnQgbm90IGluIHNlbGYuaWRfdG9fcmVmY291bnQgYW5kIFwKKyAgICAgICAgICAgIGlkZW50IGluIHNlbGYuaWRfdG9fbG9jYWxfcHJveHlfb2JqOgorICAgICAgICAgICAgdXRpbC5kZWJ1ZygnU2VydmVyIERFQ1JFRiBza2lwcGluZyAlcicsIGlkZW50KQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgd2l0aCBzZWxmLm11dGV4OgogICAgICAgICAgICAgYXNzZXJ0IHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID49IDEKICAgICAgICAgICAgIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdIC09IDEKICAgICAgICAgICAgIGlmIHNlbGYuaWRfdG9fcmVmY291bnRbaWRlbnRdID09IDA6Ci0gICAgICAgICAgICAgICAgZGVsIHNlbGYuaWRfdG9fb2JqW2lkZW50XSwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0KLSAgICAgICAgICAgICAgICB1dGlsLmRlYnVnKCdkaXNwb3Npbmcgb2Ygb2JqIHdpdGggaWQgJXInLCBpZGVudCkKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19yZWZjb3VudFtpZGVudF0KKworICAgICAgICBpZiBpZGVudCBub3QgaW4gc2VsZi5pZF90b19yZWZjb3VudDoKKyAgICAgICAgICAgICMgVHdvLXN0ZXAgcHJvY2VzcyBpbiBjYXNlIHRoZSBvYmplY3QgdHVybnMgb3V0IHRvIGNvbnRhaW4gb3RoZXIKKyAgICAgICAgICAgICMgcHJveHkgb2JqZWN0cyAoZS5nLiBhIG1hbmFnZWQgbGlzdCBvZiBtYW5hZ2VkIGxpc3RzKS4KKyAgICAgICAgICAgICMgT3RoZXJ3aXNlLCBkZWxldGluZyBzZWxmLmlkX3RvX29ialtpZGVudF0gd291bGQgdHJpZ2dlciB0aGUKKyAgICAgICAgICAgICMgZGVsZXRpbmcgb2YgdGhlIHN0b3JlZCB2YWx1ZSAoYW5vdGhlciBtYW5hZ2VkIG9iamVjdCkgd2hpY2ggd291bGQKKyAgICAgICAgICAgICMgaW4gdHVybiBhdHRlbXB0IHRvIGFjcXVpcmUgdGhlIG11dGV4IHRoYXQgaXMgYWxyZWFkeSBoZWxkIGhlcmUuCisgICAgICAgICAgICBzZWxmLmlkX3RvX29ialtpZGVudF0gPSAoTm9uZSwgKCksIE5vbmUpICAjIHRocmVhZC1zYWZlCisgICAgICAgICAgICB1dGlsLmRlYnVnKCdkaXNwb3Npbmcgb2Ygb2JqIHdpdGggaWQgJXInLCBpZGVudCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5tdXRleDoKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5pZF90b19vYmpbaWRlbnRdCisKIAogIwogIyBDbGFzcyB0byByZXByZXNlbnQgc3RhdGUgb2YgYSBtYW5hZ2VyCkBAIC02NTgsNyArNjkyLDcgQEAKICAgICBfbXV0ZXggPSB1dGlsLkZvcmtBd2FyZVRocmVhZExvY2soKQogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRva2VuLCBzZXJpYWxpemVyLCBtYW5hZ2VyPU5vbmUsCi0gICAgICAgICAgICAgICAgIGF1dGhrZXk9Tm9uZSwgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSk6CisgICAgICAgICAgICAgICAgIGF1dGhrZXk9Tm9uZSwgZXhwb3NlZD1Ob25lLCBpbmNyZWY9VHJ1ZSwgbWFuYWdlcl9vd25lZD1GYWxzZSk6CiAgICAgICAgIHdpdGggQmFzZVByb3h5Ll9tdXRleDoKICAgICAgICAgICAgIHRsc19pZHNldCA9IEJhc2VQcm94eS5fYWRkcmVzc190b19sb2NhbC5nZXQodG9rZW4uYWRkcmVzcywgTm9uZSkKICAgICAgICAgICAgIGlmIHRsc19pZHNldCBpcyBOb25lOgpAQCAtNjgwLDYgKzcxNCwxMiBAQAogICAgICAgICBzZWxmLl9zZXJpYWxpemVyID0gc2VyaWFsaXplcgogICAgICAgICBzZWxmLl9DbGllbnQgPSBsaXN0ZW5lcl9jbGllbnRbc2VyaWFsaXplcl1bMV0KIAorICAgICAgICAjIFNob3VsZCBiZSBzZXQgdG8gVHJ1ZSBvbmx5IHdoZW4gYSBwcm94eSBvYmplY3QgaXMgYmVpbmcgY3JlYXRlZAorICAgICAgICAjIG9uIHRoZSBtYW5hZ2VyIHNlcnZlcjsgcHJpbWFyeSB1c2UgY2FzZTogbmVzdGVkIHByb3h5IG9iamVjdHMuCisgICAgICAgICMgUmVidWlsZFByb3h5IGRldGVjdHMgd2hlbiBhIHByb3h5IGlzIGJlaW5nIGNyZWF0ZWQgb24gdGhlIG1hbmFnZXIKKyAgICAgICAgIyBhbmQgc2V0cyB0aGlzIHZhbHVlIGFwcHJvcHJpYXRlbHkuCisgICAgICAgIHNlbGYuX293bmVkX2J5X21hbmFnZXIgPSBtYW5hZ2VyX293bmVkCisKICAgICAgICAgaWYgYXV0aGtleSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHNlbGYuX2F1dGhrZXkgPSBwcm9jZXNzLkF1dGhlbnRpY2F0aW9uU3RyaW5nKGF1dGhrZXkpCiAgICAgICAgIGVsaWYgc2VsZi5fbWFuYWdlciBpcyBub3QgTm9uZToKQEAgLTczOCw2ICs3NzgsMTAgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuX2NhbGxtZXRob2QoJyNHRVRWQUxVRScpCiAKICAgICBkZWYgX2luY3JlZihzZWxmKToKKyAgICAgICAgaWYgc2VsZi5fb3duZWRfYnlfbWFuYWdlcjoKKyAgICAgICAgICAgIHV0aWwuZGVidWcoJ293bmVkX2J5X21hbmFnZXIgc2tpcHBlZCBJTkNSRUYgb2YgJXInLCBzZWxmLl90b2tlbi5pZCkKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgIGNvbm4gPSBzZWxmLl9DbGllbnQoc2VsZi5fdG9rZW4uYWRkcmVzcywgYXV0aGtleT1zZWxmLl9hdXRoa2V5KQogICAgICAgICBkaXNwYXRjaChjb25uLCBOb25lLCAnaW5jcmVmJywgKHNlbGYuX2lkLCkpCiAgICAgICAgIHV0aWwuZGVidWcoJ0lOQ1JFRiAlcicsIHNlbGYuX3Rva2VuLmlkKQpAQCAtNzg4LDcgKzgzMiw3IEBACiAKICAgICBkZWYgX19yZWR1Y2VfXyhzZWxmKToKICAgICAgICAga3dkcyA9IHt9Ci0gICAgICAgIGlmIGNvbnRleHQuZ2V0X3NwYXduaW5nX3BvcGVuKCkgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIGdldF9zcGF3bmluZ19wb3BlbigpIGlzIG5vdCBOb25lOgogICAgICAgICAgICAga3dkc1snYXV0aGtleSddID0gc2VsZi5fYXV0aGtleQogCiAgICAgICAgIGlmIGdldGF0dHIoc2VsZiwgJ19pc2F1dG8nLCBGYWxzZSk6CkBAIC04MjIsMTkgKzg2NiwxOSBAQAogZGVmIFJlYnVpbGRQcm94eShmdW5jLCB0b2tlbiwgc2VyaWFsaXplciwga3dkcyk6CiAgICAgJycnCiAgICAgRnVuY3Rpb24gdXNlZCBmb3IgdW5waWNrbGluZyBwcm94eSBvYmplY3RzLgotCi0gICAgSWYgcG9zc2libGUgdGhlIHNoYXJlZCBvYmplY3QgaXMgcmV0dXJuZWQsIG9yIG90aGVyd2lzZSBhIHByb3h5IGZvciBpdC4KICAgICAnJycKICAgICBzZXJ2ZXIgPSBnZXRhdHRyKHByb2Nlc3MuY3VycmVudF9wcm9jZXNzKCksICdfbWFuYWdlcl9zZXJ2ZXInLCBOb25lKQotCiAgICAgaWYgc2VydmVyIGFuZCBzZXJ2ZXIuYWRkcmVzcyA9PSB0b2tlbi5hZGRyZXNzOgotICAgICAgICByZXR1cm4gc2VydmVyLmlkX3RvX29ialt0b2tlbi5pZF1bMF0KLSAgICBlbHNlOgotICAgICAgICBpbmNyZWYgPSAoCi0gICAgICAgICAgICBrd2RzLnBvcCgnaW5jcmVmJywgVHJ1ZSkgYW5kCi0gICAgICAgICAgICBub3QgZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX2luaGVyaXRpbmcnLCBGYWxzZSkKLSAgICAgICAgICAgICkKLSAgICAgICAgcmV0dXJuIGZ1bmModG9rZW4sIHNlcmlhbGl6ZXIsIGluY3JlZj1pbmNyZWYsICoqa3dkcykKKyAgICAgICAgdXRpbC5kZWJ1ZygnUmVidWlsZCBhIHByb3h5IG93bmVkIGJ5IG1hbmFnZXIsIHRva2VuPSVyJywgdG9rZW4pCisgICAgICAgIGt3ZHNbJ21hbmFnZXJfb3duZWQnXSA9IFRydWUKKyAgICAgICAgaWYgdG9rZW4uaWQgbm90IGluIHNlcnZlci5pZF90b19sb2NhbF9wcm94eV9vYmo6CisgICAgICAgICAgICBzZXJ2ZXIuaWRfdG9fbG9jYWxfcHJveHlfb2JqW3Rva2VuLmlkXSA9IFwKKyAgICAgICAgICAgICAgICBzZXJ2ZXIuaWRfdG9fb2JqW3Rva2VuLmlkXQorICAgIGluY3JlZiA9ICgKKyAgICAgICAga3dkcy5wb3AoJ2luY3JlZicsIFRydWUpIGFuZAorICAgICAgICBub3QgZ2V0YXR0cihwcm9jZXNzLmN1cnJlbnRfcHJvY2VzcygpLCAnX2luaGVyaXRpbmcnLCBGYWxzZSkKKyAgICAgICAgKQorICAgIHJldHVybiBmdW5jKHRva2VuLCBzZXJpYWxpemVyLCBpbmNyZWY9aW5jcmVmLCAqKmt3ZHMpCiAKICMKICMgRnVuY3Rpb25zIHRvIGNyZWF0ZSBwcm94aWVzIGFuZCBwcm94eSB0eXBlcwpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb29sLnB5CmluZGV4IDZkMjU0NjkuLmZmZGY0MjYgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9vbC5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3Bvb2wucHkKQEAgLTYzOCwyMiArNjM4LDI2IEBACiAgICAgICAgICAgICBzZWxmLl9udW1iZXJfbGVmdCA9IGxlbmd0aC8vY2h1bmtzaXplICsgYm9vbChsZW5ndGggJSBjaHVua3NpemUpCiAKICAgICBkZWYgX3NldChzZWxmLCBpLCBzdWNjZXNzX3Jlc3VsdCk6CisgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0IC09IDEKICAgICAgICAgc3VjY2VzcywgcmVzdWx0ID0gc3VjY2Vzc19yZXN1bHQKLSAgICAgICAgaWYgc3VjY2VzczoKKyAgICAgICAgaWYgc3VjY2VzcyBhbmQgc2VsZi5fc3VjY2VzczoKICAgICAgICAgICAgIHNlbGYuX3ZhbHVlW2kqc2VsZi5fY2h1bmtzaXplOihpKzEpKnNlbGYuX2NodW5rc2l6ZV0gPSByZXN1bHQKLSAgICAgICAgICAgIHNlbGYuX251bWJlcl9sZWZ0IC09IDEKICAgICAgICAgICAgIGlmIHNlbGYuX251bWJlcl9sZWZ0ID09IDA6CiAgICAgICAgICAgICAgICAgaWYgc2VsZi5fY2FsbGJhY2s6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQogICAgICAgICAgICAgICAgIGRlbCBzZWxmLl9jYWNoZVtzZWxmLl9qb2JdCiAgICAgICAgICAgICAgICAgc2VsZi5fZXZlbnQuc2V0KCkKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuX3N1Y2Nlc3MgPSBGYWxzZQotICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKLSAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgotICAgICAgICAgICAgICAgIHNlbGYuX2Vycm9yX2NhbGxiYWNrKHNlbGYuX3ZhbHVlKQotICAgICAgICAgICAgZGVsIHNlbGYuX2NhY2hlW3NlbGYuX2pvYl0KLSAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCisgICAgICAgICAgICBpZiBub3Qgc3VjY2VzcyBhbmQgc2VsZi5fc3VjY2VzczoKKyAgICAgICAgICAgICAgICAjIG9ubHkgc3RvcmUgZmlyc3QgZXhjZXB0aW9uCisgICAgICAgICAgICAgICAgc2VsZi5fc3VjY2VzcyA9IEZhbHNlCisgICAgICAgICAgICAgICAgc2VsZi5fdmFsdWUgPSByZXN1bHQKKyAgICAgICAgICAgIGlmIHNlbGYuX251bWJlcl9sZWZ0ID09IDA6CisgICAgICAgICAgICAgICAgIyBvbmx5IGNvbnNpZGVyIHRoZSByZXN1bHQgcmVhZHkgb25jZSBhbGwgam9icyBhcmUgZG9uZQorICAgICAgICAgICAgICAgIGlmIHNlbGYuX2Vycm9yX2NhbGxiYWNrOgorICAgICAgICAgICAgICAgICAgICBzZWxmLl9lcnJvcl9jYWxsYmFjayhzZWxmLl92YWx1ZSkKKyAgICAgICAgICAgICAgICBkZWwgc2VsZi5fY2FjaGVbc2VsZi5fam9iXQorICAgICAgICAgICAgICAgIHNlbGYuX2V2ZW50LnNldCgpCiAKICMKICMgQ2xhc3Mgd2hvc2UgaW5zdGFuY2VzIGFyZSByZXR1cm5lZCBieSBgUG9vbC5pbWFwKClgCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX2ZvcmtzZXJ2ZXIucHkKaW5kZXggZTc5MjE5NC4uMjIyZGIyZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fZm9ya3NlcnZlci5weQpAQCAtMSwxMCArMSw5IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uLCBzZXRfc3Bhd25pbmdfcG9wZW4KIGlmIG5vdCByZWR1Y3Rpb24uSEFWRV9TRU5EX0hBTkRMRToKICAgICByYWlzZSBJbXBvcnRFcnJvcignTm8gc3VwcG9ydCBmb3Igc2VuZGluZyBmZHMgYmV0d2VlbiBwcm9jZXNzZXMnKQotZnJvbSAuIGltcG9ydCBjb250ZXh0CiBmcm9tIC4gaW1wb3J0IGZvcmtzZXJ2ZXIKIGZyb20gLiBpbXBvcnQgcG9wZW5fZm9yawogZnJvbSAuIGltcG9ydCBzcGF3bgpAQCAtNDIsMTIgKzQxLDEyIEBACiAgICAgZGVmIF9sYXVuY2goc2VsZiwgcHJvY2Vzc19vYmopOgogICAgICAgICBwcmVwX2RhdGEgPSBzcGF3bi5nZXRfcHJlcGFyYXRpb25fZGF0YShwcm9jZXNzX29iai5fbmFtZSkKICAgICAgICAgYnVmID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIGJ1ZikKICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCBidWYpCiAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBjb250ZXh0LnNldF9zcGF3bmluZ19wb3BlbihOb25lKQorICAgICAgICAgICAgc2V0X3NwYXduaW5nX3BvcGVuKE5vbmUpCiAKICAgICAgICAgc2VsZi5zZW50aW5lbCwgdyA9IGZvcmtzZXJ2ZXIuY29ubmVjdF90b19uZXdfcHJvY2VzcyhzZWxmLl9mZHMpCiAgICAgICAgIHV0aWwuRmluYWxpemUoc2VsZiwgb3MuY2xvc2UsIChzZWxmLnNlbnRpbmVsLCkpCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl9wb3NpeC5weQppbmRleCA2YjBhOGQ2Li45OGY4ZjBhIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3Bvc2l4LnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fcG9zaXgucHkKQEAgLTEsOSArMSw4IEBACiBpbXBvcnQgaW8KIGltcG9ydCBvcwogCi1mcm9tIC4gaW1wb3J0IGNvbnRleHQKK2Zyb20gLmNvbnRleHQgaW1wb3J0IHJlZHVjdGlvbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHBvcGVuX2ZvcmsKLWZyb20gLiBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHNwYXduCiBmcm9tIC4gaW1wb3J0IHV0aWwKIApAQCAtNDIsMTIgKzQxLDEyIEBACiAgICAgICAgIHNlbGYuX2Zkcy5hcHBlbmQodHJhY2tlcl9mZCkKICAgICAgICAgcHJlcF9kYXRhID0gc3Bhd24uZ2V0X3ByZXBhcmF0aW9uX2RhdGEocHJvY2Vzc19vYmouX25hbWUpCiAgICAgICAgIGZwID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihzZWxmKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIGZwKQogICAgICAgICAgICAgcmVkdWN0aW9uLmR1bXAocHJvY2Vzc19vYmosIGZwKQogICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgIHNldF9zcGF3bmluZ19wb3BlbihOb25lKQogCiAgICAgICAgIHBhcmVudF9yID0gY2hpbGRfdyA9IGNoaWxkX3IgPSBwYXJlbnRfdyA9IE5vbmUKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weSBiL0xpYi9tdWx0aXByb2Nlc3NpbmcvcG9wZW5fc3Bhd25fd2luMzIucHkKaW5kZXggM2I1MzA2OC4uNmZkNTg4ZiAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9wb3Blbl9zcGF3bl93aW4zMi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3BvcGVuX3NwYXduX3dpbjMyLnB5CkBAIC00LDkgKzQsOCBAQAogaW1wb3J0IHN5cwogaW1wb3J0IF93aW5hcGkKIAotZnJvbSAuIGltcG9ydCBjb250ZXh0Citmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGdldF9zcGF3bmluZ19wb3Blbiwgc2V0X3NwYXduaW5nX3BvcGVuCiBmcm9tIC4gaW1wb3J0IHNwYXduCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgogZnJvbSAuIGltcG9ydCB1dGlsCiAKIF9fYWxsX18gPSBbJ1BvcGVuJ10KQEAgLTYwLDE1ICs1OSwxNSBAQAogICAgICAgICAgICAgdXRpbC5GaW5hbGl6ZShzZWxmLCBfd2luYXBpLkNsb3NlSGFuZGxlLCAoc2VsZi5zZW50aW5lbCwpKQogCiAgICAgICAgICAgICAjIHNlbmQgaW5mb3JtYXRpb24gdG8gY2hpbGQKLSAgICAgICAgICAgIGNvbnRleHQuc2V0X3NwYXduaW5nX3BvcGVuKHNlbGYpCisgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oc2VsZikKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICByZWR1Y3Rpb24uZHVtcChwcmVwX2RhdGEsIHRvX2NoaWxkKQogICAgICAgICAgICAgICAgIHJlZHVjdGlvbi5kdW1wKHByb2Nlc3Nfb2JqLCB0b19jaGlsZCkKICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgY29udGV4dC5zZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKKyAgICAgICAgICAgICAgICBzZXRfc3Bhd25pbmdfcG9wZW4oTm9uZSkKIAogICAgIGRlZiBkdXBsaWNhdGVfZm9yX2NoaWxkKHNlbGYsIGhhbmRsZSk6Ci0gICAgICAgIGFzc2VydCBzZWxmIGlzIGNvbnRleHQuZ2V0X3NwYXduaW5nX3BvcGVuKCkKKyAgICAgICAgYXNzZXJ0IHNlbGYgaXMgZ2V0X3NwYXduaW5nX3BvcGVuKCkKICAgICAgICAgcmV0dXJuIHJlZHVjdGlvbi5kdXBsaWNhdGUoaGFuZGxlLCBzZWxmLnNlbnRpbmVsKQogCiAgICAgZGVmIHdhaXQoc2VsZiwgdGltZW91dD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcXVldWVzLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKaW5kZXggNzg2YTMwMy4uZGRhMDNkZCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9xdWV1ZXMucHkKQEAgLTIzLDkgKzIzLDkgQEAKIAogZnJvbSAuIGltcG9ydCBjb25uZWN0aW9uCiBmcm9tIC4gaW1wb3J0IGNvbnRleHQKK19Gb3JraW5nUGlja2xlciA9IGNvbnRleHQucmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIGZyb20gLnV0aWwgaW1wb3J0IGRlYnVnLCBpbmZvLCBGaW5hbGl6ZSwgcmVnaXN0ZXJfYWZ0ZXJfZm9yaywgaXNfZXhpdGluZwotZnJvbSAucmVkdWN0aW9uIGltcG9ydCBGb3JraW5nUGlja2xlcgogCiAjCiAjIFF1ZXVlIHR5cGUgdXNpbmcgYSBwaXBlLCBidWZmZXIgYW5kIHRocmVhZApAQCAtMTEwLDcgKzExMCw3IEBACiAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgIHNlbGYuX3Jsb2NrLnJlbGVhc2UoKQogICAgICAgICAjIHVuc2VyaWFsaXplIHRoZSBkYXRhIGFmdGVyIGhhdmluZyByZWxlYXNlZCB0aGUgbG9jawotICAgICAgICByZXR1cm4gRm9ya2luZ1BpY2tsZXIubG9hZHMocmVzKQorICAgICAgICByZXR1cm4gX0ZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKIAogICAgIGRlZiBxc2l6ZShzZWxmKToKICAgICAgICAgIyBSYWlzZXMgTm90SW1wbGVtZW50ZWRFcnJvciBvbiBNYWMgT1NYIGJlY2F1c2Ugb2YgYnJva2VuIHNlbV9nZXR2YWx1ZSgpCkBAIC0yMzgsNyArMjM4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICAgICAgICAgICAgICAgICAgIyBzZXJpYWxpemUgdGhlIGRhdGEgYmVmb3JlIGFjcXVpcmluZyB0aGUgbG9jawotICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQorICAgICAgICAgICAgICAgICAgICAgICAgb2JqID0gX0ZvcmtpbmdQaWNrbGVyLmR1bXBzKG9iaikKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHdhY3F1aXJlIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9ieXRlcyhvYmopCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgpAQCAtMzQyLDExICszNDIsMTEgQEAKICAgICAgICAgd2l0aCBzZWxmLl9ybG9jazoKICAgICAgICAgICAgIHJlcyA9IHNlbGYuX3JlYWRlci5yZWN2X2J5dGVzKCkKICAgICAgICAgIyB1bnNlcmlhbGl6ZSB0aGUgZGF0YSBhZnRlciBoYXZpbmcgcmVsZWFzZWQgdGhlIGxvY2sKLSAgICAgICAgcmV0dXJuIEZvcmtpbmdQaWNrbGVyLmxvYWRzKHJlcykKKyAgICAgICAgcmV0dXJuIF9Gb3JraW5nUGlja2xlci5sb2FkcyhyZXMpCiAKICAgICBkZWYgcHV0KHNlbGYsIG9iaik6CiAgICAgICAgICMgc2VyaWFsaXplIHRoZSBkYXRhIGJlZm9yZSBhY3F1aXJpbmcgdGhlIGxvY2sKLSAgICAgICAgb2JqID0gRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQorICAgICAgICBvYmogPSBfRm9ya2luZ1BpY2tsZXIuZHVtcHMob2JqKQogICAgICAgICBpZiBzZWxmLl93bG9jayBpcyBOb25lOgogICAgICAgICAgICAgIyB3cml0ZXMgdG8gYSBtZXNzYWdlIG9yaWVudGVkIHdpbjMyIHBpcGUgYXJlIGF0b21pYwogICAgICAgICAgICAgc2VsZi5fd3JpdGVyLnNlbmRfYnl0ZXMob2JqKQpkaWZmIC0tZ2l0IGEvTGliL211bHRpcHJvY2Vzc2luZy9yZWR1Y3Rpb24ucHkgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQppbmRleCA4ZjIwOWI0Li5jMDQzYzlhIDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQorKysgYi9MaWIvbXVsdGlwcm9jZXNzaW5nL3JlZHVjdGlvbi5weQpAQCAtNyw2ICs3LDcgQEAKICMgTGljZW5zZWQgdG8gUFNGIHVuZGVyIGEgQ29udHJpYnV0b3IgQWdyZWVtZW50LgogIwogCitmcm9tIGFiYyBpbXBvcnQgQUJDTWV0YSwgYWJzdHJhY3RtZXRob2QKIGltcG9ydCBjb3B5cmVnCiBpbXBvcnQgZnVuY3Rvb2xzCiBpbXBvcnQgaW8KQEAgLTIzOCwzICsyMzksMzYgQEAKICAgICAgICAgZmQgPSBkZi5kZXRhY2goKQogICAgICAgICByZXR1cm4gc29ja2V0LnNvY2tldChmYW1pbHksIHR5cGUsIHByb3RvLCBmaWxlbm89ZmQpCiAgICAgcmVnaXN0ZXIoc29ja2V0LnNvY2tldCwgX3JlZHVjZV9zb2NrZXQpCisKKworY2xhc3MgQWJzdHJhY3RSZWR1Y2VyKG1ldGFjbGFzcz1BQkNNZXRhKToKKyAgICAnJydBYnN0cmFjdCBiYXNlIGNsYXNzIGZvciB1c2UgaW4gaW1wbGVtZW50aW5nIGEgUmVkdWN0aW9uIGNsYXNzCisgICAgc3VpdGFibGUgZm9yIHVzZSBpbiByZXBsYWNpbmcgdGhlIHN0YW5kYXJkIHJlZHVjdGlvbiBtZWNoYW5pc20KKyAgICB1c2VkIGluIG11bHRpcHJvY2Vzc2luZy4nJycKKyAgICBGb3JraW5nUGlja2xlciA9IEZvcmtpbmdQaWNrbGVyCisgICAgcmVnaXN0ZXIgPSByZWdpc3RlcgorICAgIGR1bXAgPSBkdW1wCisgICAgc2VuZF9oYW5kbGUgPSBzZW5kX2hhbmRsZQorICAgIHJlY3ZfaGFuZGxlID0gcmVjdl9oYW5kbGUKKworICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICBzdGVhbF9oYW5kbGUgPSBzdGVhbF9oYW5kbGUKKyAgICAgICAgZHVwbGljYXRlID0gZHVwbGljYXRlCisgICAgICAgIER1cEhhbmRsZSA9IER1cEhhbmRsZQorICAgIGVsc2U6CisgICAgICAgIHNlbmRmZHMgPSBzZW5kZmRzCisgICAgICAgIHJlY3ZmZHMgPSByZWN2ZmRzCisgICAgICAgIER1cEZkID0gRHVwRmQKKworICAgIF9yZWR1Y2VfbWV0aG9kID0gX3JlZHVjZV9tZXRob2QKKyAgICBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yID0gX3JlZHVjZV9tZXRob2RfZGVzY3JpcHRvcgorICAgIF9yZWJ1aWxkX3BhcnRpYWwgPSBfcmVidWlsZF9wYXJ0aWFsCisgICAgX3JlZHVjZV9zb2NrZXQgPSBfcmVkdWNlX3NvY2tldAorICAgIF9yZWJ1aWxkX3NvY2tldCA9IF9yZWJ1aWxkX3NvY2tldAorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsICphcmdzKToKKyAgICAgICAgcmVnaXN0ZXIodHlwZShfQygpLmYpLCBfcmVkdWNlX21ldGhvZCkKKyAgICAgICAgcmVnaXN0ZXIodHlwZShsaXN0LmFwcGVuZCksIF9yZWR1Y2VfbWV0aG9kX2Rlc2NyaXB0b3IpCisgICAgICAgIHJlZ2lzdGVyKHR5cGUoaW50Ll9fYWRkX18pLCBfcmVkdWNlX21ldGhvZF9kZXNjcmlwdG9yKQorICAgICAgICByZWdpc3RlcihmdW5jdG9vbHMucGFydGlhbCwgX3JlZHVjZV9wYXJ0aWFsKQorICAgICAgICByZWdpc3Rlcihzb2NrZXQuc29ja2V0LCBfcmVkdWNlX3NvY2tldCkKZGlmZiAtLWdpdCBhL0xpYi9tdWx0aXByb2Nlc3NpbmcvcmVzb3VyY2Vfc2hhcmVyLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKaW5kZXggNWU0NmZjNi4uZTQ0YTcyOCAxMDA2NDQKLS0tIGEvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKKysrIGIvTGliL211bHRpcHJvY2Vzc2luZy9yZXNvdXJjZV9zaGFyZXIucHkKQEAgLTE1LDcgKzE1LDcgQEAKIGltcG9ydCB0aHJlYWRpbmcKIAogZnJvbSAuIGltcG9ydCBwcm9jZXNzCi1mcm9tIC4gaW1wb3J0IHJlZHVjdGlvbgorZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnc3RvcCddCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NoYXJlZGN0eXBlcy5weSBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CmluZGV4IDQyNThmNTkuLjI1Y2JjZjIgMTAwNjQ0Ci0tLSBhL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc2hhcmVkY3R5cGVzLnB5CkBAIC0xMyw4ICsxMyw4IEBACiBmcm9tIC4gaW1wb3J0IGhlYXAKIGZyb20gLiBpbXBvcnQgZ2V0X2NvbnRleHQKIAotZnJvbSAuY29udGV4dCBpbXBvcnQgYXNzZXJ0X3NwYXduaW5nCi1mcm9tIC5yZWR1Y3Rpb24gaW1wb3J0IEZvcmtpbmdQaWNrbGVyCitmcm9tIC5jb250ZXh0IGltcG9ydCByZWR1Y3Rpb24sIGFzc2VydF9zcGF3bmluZworX0ZvcmtpbmdQaWNrbGVyID0gcmVkdWN0aW9uLkZvcmtpbmdQaWNrbGVyCiAKIF9fYWxsX18gPSBbJ1Jhd1ZhbHVlJywgJ1Jhd0FycmF5JywgJ1ZhbHVlJywgJ0FycmF5JywgJ2NvcHknLCAnc3luY2hyb25pemVkJ10KIApAQCAtMTM0LDcgKzEzNCw3IEBACiBkZWYgcmVidWlsZF9jdHlwZSh0eXBlXywgd3JhcHBlciwgbGVuZ3RoKToKICAgICBpZiBsZW5ndGggaXMgbm90IE5vbmU6CiAgICAgICAgIHR5cGVfID0gdHlwZV8gKiBsZW5ndGgKLSAgICBGb3JraW5nUGlja2xlci5yZWdpc3Rlcih0eXBlXywgcmVkdWNlX2N0eXBlKQorICAgIF9Gb3JraW5nUGlja2xlci5yZWdpc3Rlcih0eXBlXywgcmVkdWNlX2N0eXBlKQogICAgIGJ1ZiA9IHdyYXBwZXIuY3JlYXRlX21lbW9yeXZpZXcoKQogICAgIG9iaiA9IHR5cGVfLmZyb21fYnVmZmVyKGJ1ZikKICAgICBvYmouX3dyYXBwZXIgPSB3cmFwcGVyCmRpZmYgLS1naXQgYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5IGIvTGliL211bHRpcHJvY2Vzc2luZy9zcGF3bi5weQppbmRleCA0ZDc2OTUxLi5kZmI5ZjY1IDEwMDY0NAotLS0gYS9MaWIvbXVsdGlwcm9jZXNzaW5nL3NwYXduLnB5CisrKyBiL0xpYi9tdWx0aXByb2Nlc3Npbmcvc3Bhd24ucHkKQEAgLTksMTMgKzksMTMgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgcGlja2xlCiBpbXBvcnQgc3lzCiBpbXBvcnQgcnVucHkKIGltcG9ydCB0eXBlcwogCiBmcm9tIC4gaW1wb3J0IGdldF9zdGFydF9tZXRob2QsIHNldF9zdGFydF9tZXRob2QKIGZyb20gLiBpbXBvcnQgcHJvY2VzcworZnJvbSAuY29udGV4dCBpbXBvcnQgcmVkdWN0aW9uCiBmcm9tIC4gaW1wb3J0IHV0aWwKIAogX19hbGxfXyA9IFsnX21haW4nLCAnZnJlZXplX3N1cHBvcnQnLCAnc2V0X2V4ZWN1dGFibGUnLCAnZ2V0X2V4ZWN1dGFibGUnLApAQCAtOTYsOCArOTYsNyBAQAogICAgIGFzc2VydCBpc19mb3JraW5nKHN5cy5hcmd2KQogICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgogICAgICAgICBpbXBvcnQgbXN2Y3J0Ci0gICAgICAgIGZyb20gLnJlZHVjdGlvbiBpbXBvcnQgc3RlYWxfaGFuZGxlCi0gICAgICAgIG5ld19oYW5kbGUgPSBzdGVhbF9oYW5kbGUocGFyZW50X3BpZCwgcGlwZV9oYW5kbGUpCisgICAgICAgIG5ld19oYW5kbGUgPSByZWR1Y3Rpb24uc3RlYWxfaGFuZGxlKHBhcmVudF9waWQsIHBpcGVfaGFuZGxlKQogICAgICAgICBmZCA9IG1zdmNydC5vcGVuX29zZmhhbmRsZShuZXdfaGFuZGxlLCBvcy5PX1JET05MWSkKICAgICBlbHNlOgogICAgICAgICBmcm9tIC4gaW1wb3J0IHNlbWFwaG9yZV90cmFja2VyCkBAIC0xMTEsOSArMTEwLDkgQEAKICAgICB3aXRoIG9zLmZkb3BlbihmZCwgJ3JiJywgY2xvc2VmZD1UcnVlKSBhcyBmcm9tX3BhcmVudDoKICAgICAgICAgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZyA9IFRydWUKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHBpY2tsZS5sb2FkKGZyb21fcGFyZW50KQorICAgICAgICAgICAgcHJlcGFyYXRpb25fZGF0YSA9IHJlZHVjdGlvbi5waWNrbGUubG9hZChmcm9tX3BhcmVudCkKICAgICAgICAgICAgIHByZXBhcmUocHJlcGFyYXRpb25fZGF0YSkKLSAgICAgICAgICAgIHNlbGYgPSBwaWNrbGUubG9hZChmcm9tX3BhcmVudCkKKyAgICAgICAgICAgIHNlbGYgPSByZWR1Y3Rpb24ucGlja2xlLmxvYWQoZnJvbV9wYXJlbnQpCiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBkZWwgcHJvY2Vzcy5jdXJyZW50X3Byb2Nlc3MoKS5faW5oZXJpdGluZwogICAgIHJldHVybiBzZWxmLl9ib290c3RyYXAoKQpkaWZmIC0tZ2l0IGEvTGliL250cGF0aC5weSBiL0xpYi9udHBhdGgucHkKaW5kZXggYWY2YTcwOS4uYThmNGIzNyAxMDA2NDQKLS0tIGEvTGliL250cGF0aC5weQorKysgYi9MaWIvbnRwYXRoLnB5CkBAIC0yOCw4ICsyOCw2IEBACiBwYXRoc2VwID0gJzsnCiBhbHRzZXAgPSAnLycKIGRlZnBhdGggPSAnLjtDOlxcYmluJwotaWYgJ2NlJyBpbiBzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXM6Ci0gICAgZGVmcGF0aCA9ICdcXFdpbmRvd3MnCiBkZXZudWxsID0gJ251bCcKIAogZGVmIF9nZXRfYm90aHNlcHMocGF0aCk6CkBAIC00Niw2ICs0NCw3IEBACiAgICAgIiIiTm9ybWFsaXplIGNhc2Ugb2YgcGF0aG5hbWUuCiAKICAgICBNYWtlcyBhbGwgY2hhcmFjdGVycyBsb3dlcmNhc2UgYW5kIGFsbCBzbGFzaGVzIGludG8gYmFja3NsYXNoZXMuIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHRyeToKICAgICAgICAgaWYgaXNpbnN0YW5jZShzLCBieXRlcyk6CiAgICAgICAgICAgICByZXR1cm4gcy5yZXBsYWNlKGInLycsIGInXFwnKS5sb3dlcigpCkBAIC02NiwxMiArNjUsMTQgQEAKIAogZGVmIGlzYWJzKHMpOgogICAgICIiIlRlc3Qgd2hldGhlciBhIHBhdGggaXMgYWJzb2x1dGUiIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgcyA9IHNwbGl0ZHJpdmUocylbMV0KICAgICByZXR1cm4gbGVuKHMpID4gMCBhbmQgc1swXSBpbiBfZ2V0X2JvdGhzZXBzKHMpCiAKIAogIyBKb2luIHR3byAob3IgbW9yZSkgcGF0aHMuCiBkZWYgam9pbihwYXRoLCAqcGF0aHMpOgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgc2VwcyA9IGInXFwvJwpAQCAtODQsNyArODUsNyBAQAogICAgICAgICBpZiBub3QgcGF0aHM6CiAgICAgICAgICAgICBwYXRoWzowXSArIHNlcCAgIzIzNzgwOiBFbnN1cmUgY29tcGF0aWJsZSBkYXRhIHR5cGUgZXZlbiBpZiBwIGlzIG51bGwuCiAgICAgICAgIHJlc3VsdF9kcml2ZSwgcmVzdWx0X3BhdGggPSBzcGxpdGRyaXZlKHBhdGgpCi0gICAgICAgIGZvciBwIGluIHBhdGhzOgorICAgICAgICBmb3IgcCBpbiBtYXAob3MuZnNwYXRoLCBwYXRocyk6CiAgICAgICAgICAgICBwX2RyaXZlLCBwX3BhdGggPSBzcGxpdGRyaXZlKHApCiAgICAgICAgICAgICBpZiBwX3BhdGggYW5kIHBfcGF0aFswXSBpbiBzZXBzOgogICAgICAgICAgICAgICAgICMgU2Vjb25kIHBhdGggaXMgYWJzb2x1dGUKQEAgLTEzNiw2ICsxMzcsNyBAQAogICAgIFBhdGhzIGNhbm5vdCBjb250YWluIGJvdGggYSBkcml2ZSBsZXR0ZXIgYW5kIGEgVU5DIHBhdGguCiAKICAgICAiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgaWYgbGVuKHApID49IDI6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICAgICAgc2VwID0gYidcXCcKQEAgLTE5OSw3ICsyMDEsNyBAQAogCiAgICAgUmV0dXJuIHR1cGxlIChoZWFkLCB0YWlsKSB3aGVyZSB0YWlsIGlzIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLgogICAgIEVpdGhlciBwYXJ0IG1heSBiZSBlbXB0eS4iIiIKLQorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwKQogICAgIGQsIHAgPSBzcGxpdGRyaXZlKHApCiAgICAgIyBzZXQgaSB0byBpbmRleCBiZXlvbmQgcCdzIGxhc3Qgc2xhc2gKQEAgLTIxOCw2ICsyMjAsNyBAQAogIyBJdCBpcyBhbHdheXMgdHJ1ZSB0aGF0IHJvb3QgKyBleHQgPT0gcC4KIAogZGVmIHNwbGl0ZXh0KHApOgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBpZiBpc2luc3RhbmNlKHAsIGJ5dGVzKToKICAgICAgICAgcmV0dXJuIGdlbmVyaWNwYXRoLl9zcGxpdGV4dChwLCBiJ1xcJywgYicvJywgYicuJykKICAgICBlbHNlOgpAQCAtMjc4LDYgKzI4MSw3IEBACiBkZWYgaXNtb3VudChwYXRoKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGEgbW91bnQgcG9pbnQgKGEgZHJpdmUgcm9vdCwgdGhlIHJvb3Qgb2YgYQogICAgIHNoYXJlLCBvciBhIG1vdW50ZWQgdm9sdW1lKSIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBzZXBzID0gX2dldF9ib3Roc2VwcyhwYXRoKQogICAgIHBhdGggPSBhYnNwYXRoKHBhdGgpCiAgICAgcm9vdCwgcmVzdCA9IHNwbGl0ZHJpdmUocGF0aCkKQEAgLTMwNSw2ICszMDksNyBAQAogICAgICIiIkV4cGFuZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3RzLgogCiAgICAgSWYgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLCBkbyBub3RoaW5nLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgdGlsZGUgPSBiJ34nCiAgICAgZWxzZToKQEAgLTM1NCw2ICszNTksNyBAQAogICAgICIiIkV4cGFuZCBzaGVsbCB2YXJpYWJsZXMgb2YgdGhlIGZvcm1zICR2YXIsICR7dmFyfSBhbmQgJXZhciUuCiAKICAgICBVbmtub3duIHZhcmlhYmxlcyBhcmUgbGVmdCB1bmNoYW5nZWQuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBpZiBiJyQnIG5vdCBpbiBwYXRoIGFuZCBiJyUnIG5vdCBpbiBwYXRoOgogICAgICAgICAgICAgcmV0dXJuIHBhdGgKQEAgLTQ2NCw2ICs0NzAsNyBAQAogCiBkZWYgbm9ybXBhdGgocGF0aCk6CiAgICAgIiIiTm9ybWFsaXplIHBhdGgsIGVsaW1pbmF0aW5nIGRvdWJsZSBzbGFzaGVzLCBldGMuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJ1xcJwogICAgICAgICBhbHRzZXAgPSBiJy8nCkBAIC01MTgsNiArNTI1LDcgQEAKIGV4Y2VwdCBJbXBvcnRFcnJvcjogIyBub3QgcnVubmluZyBvbiBXaW5kb3dzIC0gbW9jayB1cCBzb21ldGhpbmcgc2Vuc2libGUKICAgICBkZWYgYWJzcGF0aChwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBhYnNvbHV0ZSB2ZXJzaW9uIG9mIGEgcGF0aC4iIiIKKyAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICBpZiBub3QgaXNhYnMocGF0aCk6CiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgICAgICAgICBjd2QgPSBvcy5nZXRjd2RiKCkKQEAgLTUzMSw2ICs1MzksNyBAQAogICAgICAgICAiIiJSZXR1cm4gdGhlIGFic29sdXRlIHZlcnNpb24gb2YgYSBwYXRoLiIiIgogCiAgICAgICAgIGlmIHBhdGg6ICMgRW1wdHkgcGF0aCBtdXN0IHJldHVybiBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LgorICAgICAgICAgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgIHBhdGggPSBfZ2V0ZnVsbHBhdGhuYW1lKHBhdGgpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKQEAgLTU0OSw2ICs1NTgsNyBAQAogCiBkZWYgcmVscGF0aChwYXRoLCBzdGFydD1Ob25lKToKICAgICAiIiJSZXR1cm4gYSByZWxhdGl2ZSB2ZXJzaW9uIG9mIGEgcGF0aCIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYidcXCcKICAgICAgICAgY3VyZGlyID0gYicuJwpAQCAtNTY0LDYgKzU3NCw3IEBACiAgICAgaWYgbm90IHBhdGg6CiAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIm5vIHBhdGggc3BlY2lmaWVkIikKIAorICAgIHN0YXJ0ID0gb3MuZnNwYXRoKHN0YXJ0KQogICAgIHRyeToKICAgICAgICAgc3RhcnRfYWJzID0gYWJzcGF0aChub3JtcGF0aChzdGFydCkpCiAgICAgICAgIHBhdGhfYWJzID0gYWJzcGF0aChub3JtcGF0aChwYXRoKSkKQEAgLTYwNyw2ICs2MTgsNyBAQAogICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCiAKKyAgICBwYXRocyA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIHBhdGhzKSkKICAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInXFwnCiAgICAgICAgIGFsdHNlcCA9IGInLycKZGlmZiAtLWdpdCBhL0xpYi9vcGNvZGUucHkgYi9MaWIvb3Bjb2RlLnB5CmluZGV4IDRjODI2YTcuLmI1OTE2YjYgMTAwNjQ0Ci0tLSBhL0xpYi9vcGNvZGUucHkKKysrIGIvTGliL29wY29kZS5weQpAQCAtMzEsMTIgKzMxLDEwIEBACiBoYXNsb2NhbCA9IFtdCiBoYXNjb21wYXJlID0gW10KIGhhc2ZyZWUgPSBbXQotaGFzbmFyZ3MgPSBbXQoraGFzbmFyZ3MgPSBbXSAjIHVudXNlZAogCiBvcG1hcCA9IHt9Ci1vcG5hbWUgPSBbJyddICogMjU2Ci1mb3Igb3AgaW4gcmFuZ2UoMjU2KTogb3BuYW1lW29wXSA9ICc8JXI+JyAlIChvcCwpCi1kZWwgb3AKK29wbmFtZSA9IFsnPCVyPicgJSAob3AsKSBmb3Igb3AgaW4gcmFuZ2UoMjU2KV0KIAogZGVmIGRlZl9vcChuYW1lLCBvcCk6CiAgICAgb3BuYW1lW29wXSA9IG5hbWUKQEAgLTEyMSw3ICsxMTksNyBAQAogCiBkZWZfb3AoJ1JFVFVSTl9WQUxVRScsIDgzKQogZGVmX29wKCdJTVBPUlRfU1RBUicsIDg0KQotCitkZWZfb3AoJ1NFVFVQX0FOTk9UQVRJT05TJywgODUpCiBkZWZfb3AoJ1lJRUxEX1ZBTFVFJywgODYpCiBkZWZfb3AoJ1BPUF9CTE9DSycsIDg3KQogZGVmX29wKCdFTkRfRklOQUxMWScsIDg4KQpAQCAtMTcxLDEzICsxNjksMTIgQEAKIGhhc2xvY2FsLmFwcGVuZCgxMjUpCiBkZWZfb3AoJ0RFTEVURV9GQVNUJywgMTI2KSAgICAgICMgTG9jYWwgdmFyaWFibGUgbnVtYmVyCiBoYXNsb2NhbC5hcHBlbmQoMTI2KQorbmFtZV9vcCgnU1RPUkVfQU5OT1RBVElPTicsIDEyNykgIyBJbmRleCBpbiBuYW1lIGxpc3QKIAogZGVmX29wKCdSQUlTRV9WQVJBUkdTJywgMTMwKSAgICAjIE51bWJlciBvZiByYWlzZSBhcmd1bWVudHMgKDEsIDIsIG9yIDMpCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDEzMSkKLWRlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBOdW1iZXIgb2YgYXJncyB3aXRoIGRlZmF1bHQgdmFsdWVzCitkZWZfb3AoJ0NBTExfRlVOQ1RJT04nLCAxMzEpICAgICMgI2FyZ3MKK2RlZl9vcCgnTUFLRV9GVU5DVElPTicsIDEzMikgICAgIyBGbGFncwogZGVmX29wKCdCVUlMRF9TTElDRScsIDEzMykgICAgICAjIE51bWJlciBvZiBpdGVtcwotZGVmX29wKCdNQUtFX0NMT1NVUkUnLCAxMzQpCiBkZWZfb3AoJ0xPQURfQ0xPU1VSRScsIDEzNSkKIGhhc2ZyZWUuYXBwZW5kKDEzNSkKIGRlZl9vcCgnTE9BRF9ERVJFRicsIDEzNikKQEAgLTE4NywxMiArMTg0LDggQEAKIGRlZl9vcCgnREVMRVRFX0RFUkVGJywgMTM4KQogaGFzZnJlZS5hcHBlbmQoMTM4KQogCi1kZWZfb3AoJ0NBTExfRlVOQ1RJT05fVkFSJywgMTQwKSAgICAgIyAjYXJncyArICgja3dhcmdzIDw8IDgpCi1oYXNuYXJncy5hcHBlbmQoMTQwKQotZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0tXJywgMTQxKSAgICAgICMgI2FyZ3MgKyAoI2t3YXJncyA8PCA4KQotaGFzbmFyZ3MuYXBwZW5kKDE0MSkKLWRlZl9vcCgnQ0FMTF9GVU5DVElPTl9WQVJfS1cnLCAxNDIpICAjICNhcmdzICsgKCNrd2FyZ3MgPDwgOCkKLWhhc25hcmdzLmFwcGVuZCgxNDIpCitkZWZfb3AoJ0NBTExfRlVOQ1RJT05fS1cnLCAxNDEpICAjICNhcmdzICsgI2t3YXJncworZGVmX29wKCdDQUxMX0ZVTkNUSU9OX0VYJywgMTQyKSAgIyBGbGFncwogCiBqcmVsX29wKCdTRVRVUF9XSVRIJywgMTQzKQogCkBAIC0yMDMsOCArMTk2LDYgQEAKIGRlZl9vcCgnTE9BRF9DTEFTU0RFUkVGJywgMTQ4KQogaGFzZnJlZS5hcHBlbmQoMTQ4KQogCi1qcmVsX29wKCdTRVRVUF9BU1lOQ19XSVRIJywgMTU0KQotCiBkZWZfb3AoJ0VYVEVOREVEX0FSRycsIDE0NCkKIEVYVEVOREVEX0FSRyA9IDE0NAogCkBAIC0yMTQsNCArMjA1LDExIEBACiBkZWZfb3AoJ0JVSUxEX1RVUExFX1VOUEFDSycsIDE1MikKIGRlZl9vcCgnQlVJTERfU0VUX1VOUEFDSycsIDE1MykKIAoranJlbF9vcCgnU0VUVVBfQVNZTkNfV0lUSCcsIDE1NCkKKworZGVmX29wKCdGT1JNQVRfVkFMVUUnLCAxNTUpCitkZWZfb3AoJ0JVSUxEX0NPTlNUX0tFWV9NQVAnLCAxNTYpCitkZWZfb3AoJ0JVSUxEX1NUUklORycsIDE1NykKK2RlZl9vcCgnQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCcsIDE1OCkKKwogZGVsIGRlZl9vcCwgbmFtZV9vcCwganJlbF9vcCwgamFic19vcApkaWZmIC0tZ2l0IGEvTGliL29wdHBhcnNlLnB5IGIvTGliL29wdHBhcnNlLnB5CmluZGV4IDc0YjNiMzYuLmU4YWMxZTEgMTAwNjQ0Ci0tLSBhL0xpYi9vcHRwYXJzZS5weQorKysgYi9MaWIvb3B0cGFyc2UucHkKQEAgLTM4LDcgKzM4LDggQEAKICAgICAgICAgICAgJ09wdGlvbkVycm9yJywKICAgICAgICAgICAgJ09wdGlvbkNvbmZsaWN0RXJyb3InLAogICAgICAgICAgICAnT3B0aW9uVmFsdWVFcnJvcicsCi0gICAgICAgICAgICdCYWRPcHRpb25FcnJvciddCisgICAgICAgICAgICdCYWRPcHRpb25FcnJvcicsCisgICAgICAgICAgICdjaGVja19jaG9pY2UnXQogCiBfX2NvcHlyaWdodF9fID0gIiIiCiBDb3B5cmlnaHQgKGMpIDIwMDEtMjAwNiBHcmVnb3J5IFAuIFdhcmQuICBBbGwgcmlnaHRzIHJlc2VydmVkLgpkaWZmIC0tZ2l0IGEvTGliL29zLnB5IGIvTGliL29zLnB5CmluZGV4IGI0YzY1MWQuLjBjOTEwN2MgMTAwNjQ0Ci0tLSBhL0xpYi9vcy5weQorKysgYi9MaWIvb3MucHkKQEAgLTEsMTIgKzEsMTIgQEAKIHIiIiJPUyByb3V0aW5lcyBmb3IgTlQgb3IgUG9zaXggZGVwZW5kaW5nIG9uIHdoYXQgc3lzdGVtIHdlJ3JlIG9uLgogCiBUaGlzIGV4cG9ydHM6Ci0gIC0gYWxsIGZ1bmN0aW9ucyBmcm9tIHBvc2l4LCBudCBvciBjZSwgZS5nLiB1bmxpbmssIHN0YXQsIGV0Yy4KKyAgLSBhbGwgZnVuY3Rpb25zIGZyb20gcG9zaXggb3IgbnQsIGUuZy4gdW5saW5rLCBzdGF0LCBldGMuCiAgIC0gb3MucGF0aCBpcyBlaXRoZXIgcG9zaXhwYXRoIG9yIG50cGF0aAotICAtIG9zLm5hbWUgaXMgZWl0aGVyICdwb3NpeCcsICdudCcgb3IgJ2NlJy4KLSAgLSBvcy5jdXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBjdXJyZW50IGRpcmVjdG9yeSAoJy4nIG9yICc6JykKLSAgLSBvcy5wYXJkaXIgaXMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBwYXJlbnQgZGlyZWN0b3J5ICgnLi4nIG9yICc6OicpCi0gIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJzonIG9yICdcXCcpCisgIC0gb3MubmFtZSBpcyBlaXRoZXIgJ3Bvc2l4JyBvciAnbnQnCisgIC0gb3MuY3VyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgY3VycmVudCBkaXJlY3RvcnkgKGFsd2F5cyAnLicpCisgIC0gb3MucGFyZGlyIGlzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgcGFyZW50IGRpcmVjdG9yeSAoYWx3YXlzICcuLicpCisgIC0gb3Muc2VwIGlzIHRoZSAob3IgYSBtb3N0IGNvbW1vbikgcGF0aG5hbWUgc2VwYXJhdG9yICgnLycgb3IgJ1xcJykKICAgLSBvcy5leHRzZXAgaXMgdGhlIGV4dGVuc2lvbiBzZXBhcmF0b3IgKGFsd2F5cyAnLicpCiAgIC0gb3MuYWx0c2VwIGlzIHRoZSBhbHRlcm5hdGUgcGF0aG5hbWUgc2VwYXJhdG9yIChOb25lIG9yICcvJykKICAgLSBvcy5wYXRoc2VwIGlzIHRoZSBjb21wb25lbnQgc2VwYXJhdG9yIHVzZWQgaW4gJFBBVEggZXRjCkBAIC0yMiw3ICsyMiw3IEBACiAiIiIKIAogIycKLQoraW1wb3J0IGFiYwogaW1wb3J0IHN5cywgZXJybm8KIGltcG9ydCBzdGF0IGFzIHN0CiAKQEAgLTg1LDI3ICs4NSw2IEBACiAgICAgZXhjZXB0IEltcG9ydEVycm9yOgogICAgICAgICBwYXNzCiAKLWVsaWYgJ2NlJyBpbiBfbmFtZXM6Ci0gICAgbmFtZSA9ICdjZScKLSAgICBsaW5lc2VwID0gJ1xyXG4nCi0gICAgZnJvbSBjZSBpbXBvcnQgKgotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2V4aXQKLSAgICAgICAgX19hbGxfXy5hcHBlbmQoJ19leGl0JykKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKLSAgICAjIFdlIGNhbiB1c2UgdGhlIHN0YW5kYXJkIFdpbmRvd3MgcGF0aC4KLSAgICBpbXBvcnQgbnRwYXRoIGFzIHBhdGgKLQotICAgIGltcG9ydCBjZQotICAgIF9fYWxsX18uZXh0ZW5kKF9nZXRfZXhwb3J0c19saXN0KGNlKSkKLSAgICBkZWwgY2UKLQotICAgIHRyeToKLSAgICAgICAgZnJvbSBjZSBpbXBvcnQgX2hhdmVfZnVuY3Rpb25zCi0gICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICBwYXNzCi0KIGVsc2U6CiAgICAgcmFpc2UgSW1wb3J0RXJyb3IoJ25vIG9zIHNwZWNpZmljIG1vZHVsZSBmb3VuZCcpCiAKQEAgLTM1Myw5ICszMzIsMTAgQEAKICAgICAgICAgICAgIGRpcnMucmVtb3ZlKCdDVlMnKSAgIyBkb24ndCB2aXNpdCBDVlMgZGlyZWN0b3JpZXMKIAogICAgICIiIgotCisgICAgdG9wID0gZnNwYXRoKHRvcCkKICAgICBkaXJzID0gW10KICAgICBub25kaXJzID0gW10KKyAgICB3YWxrX2RpcnMgPSBbXQogCiAgICAgIyBXZSBtYXkgbm90IGhhdmUgcmVhZCBwZXJtaXNzaW9uIGZvciB0b3AsIGluIHdoaWNoIGNhc2Ugd2UgY2FuJ3QKICAgICAjIGdldCBhIGxpc3Qgb2YgdGhlIGZpbGVzIHRoZSBkaXJlY3RvcnkgY29udGFpbnMuICBvcy53YWxrCkBAIC0zNjMsNDggKzM0Myw1NSBAQAogICAgICMgbWlub3IgcmVhc29uIHdoZW4gKHNheSkgYSB0aG91c2FuZCByZWFkYWJsZSBkaXJlY3RvcmllcyBhcmUgc3RpbGwKICAgICAjIGxlZnQgdG8gdmlzaXQuICBUaGF0IGxvZ2ljIGlzIGNvcGllZCBoZXJlLgogICAgIHRyeToKLSAgICAgICAgaWYgbmFtZSA9PSAnbnQnIGFuZCBpc2luc3RhbmNlKHRvcCwgYnl0ZXMpOgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IF9kdW1teV9zY2FuZGlyKHRvcCkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90ZSB0aGF0IHNjYW5kaXIgaXMgZ2xvYmFsIGluIHRoaXMgbW9kdWxlIGR1ZQotICAgICAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgotICAgICAgICAgICAgc2NhbmRpcl9pdCA9IHNjYW5kaXIodG9wKQotICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyX2l0KQorICAgICAgICAjIE5vdGUgdGhhdCBzY2FuZGlyIGlzIGdsb2JhbCBpbiB0aGlzIG1vZHVsZSBkdWUKKyAgICAgICAgIyB0byBlYXJsaWVyIGltcG9ydC0qLgorICAgICAgICBzY2FuZGlyX2l0ID0gc2NhbmRpcih0b3ApCiAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CiAgICAgICAgIGlmIG9uZXJyb3IgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBvbmVycm9yKGVycm9yKQogICAgICAgICByZXR1cm4KIAotICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICMgSWYgaXNfZGlyKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlIGVudHJ5IGlzIG5vdAotICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCi0gICAgICAgICAgICBpc19kaXIgPSBGYWxzZQotCi0gICAgICAgIGlmIGlzX2RpcjoKLSAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBub25kaXJzLmFwcGVuZChlbnRyeS5uYW1lKQotCi0gICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6Ci0gICAgICAgICAgICAjIEJvdHRvbS11cDogcmVjdXJzZSBpbnRvIHN1Yi1kaXJlY3RvcnksIGJ1dCBleGNsdWRlIHN5bWxpbmtzIHRvCi0gICAgICAgICAgICAjIGRpcmVjdG9yaWVzIGlmIGZvbGxvd2xpbmtzIGlzIEZhbHNlCi0gICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKLSAgICAgICAgICAgICAgICB3YWxrX2ludG8gPSBUcnVlCi0gICAgICAgICAgICBlbHNlOgorICAgIHdpdGggc2NhbmRpcl9pdDoKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKLSAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgIyBJZiBpc19zeW1saW5rKCkgcmFpc2VzIGFuIE9TRXJyb3IsIGNvbnNpZGVyIHRoYXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgotICAgICAgICAgICAgICAgICAgICAjIG9zLnBhdGguaXNsaW5rKCkuCi0gICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBGYWxzZQotICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisgICAgICAgICAgICAgICAgICAgIGVudHJ5ID0gbmV4dChzY2FuZGlyX2l0KQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXJyb3I6CisgICAgICAgICAgICAgICAgaWYgb25lcnJvciBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgb25lcnJvcihlcnJvcikKKyAgICAgICAgICAgICAgICByZXR1cm4KIAotICAgICAgICAgICAgaWYgd2Fsa19pbnRvOgotICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhlbnRyeS5wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpc19kaXIgPSBlbnRyeS5pc19kaXIoKQorICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgIyBJZiBpc19kaXIoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUgZW50cnkgaXMgbm90CisgICAgICAgICAgICAgICAgIyBhIGRpcmVjdG9yeSwgc2FtZSBiZWhhdmlvdXIgdGhhbiBvcy5wYXRoLmlzZGlyKCkuCisgICAgICAgICAgICAgICAgaXNfZGlyID0gRmFsc2UKKworICAgICAgICAgICAgaWYgaXNfZGlyOgorICAgICAgICAgICAgICAgIGRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG5vbmRpcnMuYXBwZW5kKGVudHJ5Lm5hbWUpCisKKyAgICAgICAgICAgIGlmIG5vdCB0b3Bkb3duIGFuZCBpc19kaXI6CisgICAgICAgICAgICAgICAgIyBCb3R0b20tdXA6IHJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3J5LCBidXQgZXhjbHVkZSBzeW1saW5rcyB0bworICAgICAgICAgICAgICAgICMgZGlyZWN0b3JpZXMgaWYgZm9sbG93bGlua3MgaXMgRmFsc2UKKyAgICAgICAgICAgICAgICBpZiBmb2xsb3dsaW5rczoKKyAgICAgICAgICAgICAgICAgICAgd2Fsa19pbnRvID0gVHJ1ZQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlzX3N5bWxpbmsgPSBlbnRyeS5pc19zeW1saW5rKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAjIElmIGlzX3N5bWxpbmsoKSByYWlzZXMgYW4gT1NFcnJvciwgY29uc2lkZXIgdGhhdCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICMgZW50cnkgaXMgbm90IGEgc3ltYm9saWMgbGluaywgc2FtZSBiZWhhdmlvdXIgdGhhbgorICAgICAgICAgICAgICAgICAgICAgICAgIyBvcy5wYXRoLmlzbGluaygpLgorICAgICAgICAgICAgICAgICAgICAgICAgaXNfc3ltbGluayA9IEZhbHNlCisgICAgICAgICAgICAgICAgICAgIHdhbGtfaW50byA9IG5vdCBpc19zeW1saW5rCisKKyAgICAgICAgICAgICAgICBpZiB3YWxrX2ludG86CisgICAgICAgICAgICAgICAgICAgIHdhbGtfZGlycy5hcHBlbmQoZW50cnkucGF0aCkKIAogICAgICMgWWllbGQgYmVmb3JlIHJlY3Vyc2lvbiBpZiBnb2luZyB0b3AgZG93bgogICAgIGlmIHRvcGRvd246CkBAIC00MjEsNTcgKzQwOCwxMiBAQAogICAgICAgICAgICAgaWYgZm9sbG93bGlua3Mgb3Igbm90IGlzbGluayhuZXdfcGF0aCk6CiAgICAgICAgICAgICAgICAgeWllbGQgZnJvbSB3YWxrKG5ld19wYXRoLCB0b3Bkb3duLCBvbmVycm9yLCBmb2xsb3dsaW5rcykKICAgICBlbHNlOgorICAgICAgICAjIFJlY3Vyc2UgaW50byBzdWItZGlyZWN0b3JpZXMKKyAgICAgICAgZm9yIG5ld19wYXRoIGluIHdhbGtfZGlyczoKKyAgICAgICAgICAgIHlpZWxkIGZyb20gd2FsayhuZXdfcGF0aCwgdG9wZG93biwgb25lcnJvciwgZm9sbG93bGlua3MpCiAgICAgICAgICMgWWllbGQgYWZ0ZXIgcmVjdXJzaW9uIGlmIGdvaW5nIGJvdHRvbSB1cAogICAgICAgICB5aWVsZCB0b3AsIGRpcnMsIG5vbmRpcnMKIAotY2xhc3MgX0R1bW15RGlyRW50cnk6Ci0gICAgIiIiRHVtbXkgaW1wbGVtZW50YXRpb24gb2YgRGlyRW50cnkKLQotICAgIE9ubHkgdXNlZCBpbnRlcm5hbGx5IGJ5IG9zLndhbGsoYnl0ZXMpLiBTaW5jZSBvcy53YWxrKCkgZG9lc24ndCBuZWVkIHRoZQotICAgIGZvbGxvd19zeW1saW5rcyBwYXJhbWV0ZXI6IGRvbid0IGltcGxlbWVudCBpdCwgYWx3YXlzIGZvbGxvdyBzeW1ib2xpYwotICAgIGxpbmtzLgotICAgICIiIgotCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIGRpciwgbmFtZSk6Ci0gICAgICAgIHNlbGYubmFtZSA9IG5hbWUKLSAgICAgICAgc2VsZi5wYXRoID0gcGF0aC5qb2luKGRpciwgbmFtZSkKLSAgICAgICAgIyBNaW1pY2sgRmluZEZpcnN0RmlsZS9GaW5kTmV4dEZpbGU6IHdlIHNob3VsZCBnZXQgZmlsZSBhdHRyaWJ1dGVzCi0gICAgICAgICMgd2hpbGUgaXRlcmF0aW5nIG9uIGEgZGlyZWN0b3J5Ci0gICAgICAgIHNlbGYuX3N0YXQgPSBOb25lCi0gICAgICAgIHNlbGYuX2xzdGF0ID0gTm9uZQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLnN0YXQoZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgIHBhc3MKLQotICAgIGRlZiBzdGF0KHNlbGYsICosIGZvbGxvd19zeW1saW5rcz1UcnVlKToKLSAgICAgICAgaWYgZm9sbG93X3N5bWxpbmtzOgotICAgICAgICAgICAgaWYgc2VsZi5fc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX3N0YXQgPSBzdGF0KHNlbGYucGF0aCkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9zdGF0Ci0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBpZiBzZWxmLl9sc3RhdCBpcyBOb25lOgotICAgICAgICAgICAgICAgIHNlbGYuX2xzdGF0ID0gc3RhdChzZWxmLnBhdGgsIGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgICAgIHJldHVybiBzZWxmLl9sc3RhdAotCi0gICAgZGVmIGlzX2RpcihzZWxmKToKLSAgICAgICAgaWYgc2VsZi5fbHN0YXQgaXMgbm90IE5vbmUgYW5kIG5vdCBzZWxmLmlzX3N5bWxpbmsoKToKLSAgICAgICAgICAgICMgdXNlIHRoZSBjYWNoZSBsc3RhdAotICAgICAgICAgICAgc3RhdCA9IHNlbGYuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCi0gICAgICAgICAgICByZXR1cm4gc3QuU19JU0RJUihzdGF0LnN0X21vZGUpCi0KLSAgICAgICAgc3RhdCA9IHNlbGYuc3RhdCgpCi0gICAgICAgIHJldHVybiBzdC5TX0lTRElSKHN0YXQuc3RfbW9kZSkKLQotICAgIGRlZiBpc19zeW1saW5rKHNlbGYpOgotICAgICAgICBzdGF0ID0gc2VsZi5zdGF0KGZvbGxvd19zeW1saW5rcz1GYWxzZSkKLSAgICAgICAgcmV0dXJuIHN0LlNfSVNMTksoc3RhdC5zdF9tb2RlKQotCi1kZWYgX2R1bW15X3NjYW5kaXIoZGlyKToKLSAgICAjIGxpc3RkaXItYmFzZWQgaW1wbGVtZW50YXRpb24gZm9yIGJ5dGVzIHBhdGNoZXMgb24gV2luZG93cwotICAgIGZvciBuYW1lIGluIGxpc3RkaXIoZGlyKToKLSAgICAgICAgeWllbGQgX0R1bW15RGlyRW50cnkoZGlyLCBuYW1lKQotCiBfX2FsbF9fLmFwcGVuZCgid2FsayIpCiAKIGlmIHtvcGVuLCBzdGF0fSA8PSBzdXBwb3J0c19kaXJfZmQgYW5kIHtsaXN0ZGlyLCBzdGF0fSA8PSBzdXBwb3J0c19mZDoKQEAgLTUwOSw2ICs0NTEsOCBAQAogICAgICAgICAgICAgaWYgJ0NWUycgaW4gZGlyczoKICAgICAgICAgICAgICAgICBkaXJzLnJlbW92ZSgnQ1ZTJykgICMgZG9uJ3QgdmlzaXQgQ1ZTIGRpcmVjdG9yaWVzCiAgICAgICAgICIiIgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh0b3AsIGludCkgb3Igbm90IGhhc2F0dHIodG9wLCAnX19pbmRleF9fJyk6CisgICAgICAgICAgICB0b3AgPSBmc3BhdGgodG9wKQogICAgICAgICAjIE5vdGU6IFRvIGd1YXJkIGFnYWluc3Qgc3ltbGluayByYWNlcywgd2UgdXNlIHRoZSBzdGFuZGFyZAogICAgICAgICAjIGxzdGF0KCkvb3BlbigpL2ZzdGF0KCkgdHJpY2suCiAgICAgICAgIG9yaWdfc3QgPSBzdGF0KHRvcCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlLCBkaXJfZmQ9ZGlyX2ZkKQpAQCAtODQzLDM2ICs3ODcsMzEgQEAKIAogZGVmIF9mc2NvZGVjKCk6CiAgICAgZW5jb2RpbmcgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkKLSAgICBpZiBlbmNvZGluZyA9PSAnbWJjcyc6Ci0gICAgICAgIGVycm9ycyA9ICdzdHJpY3QnCi0gICAgZWxzZToKLSAgICAgICAgZXJyb3JzID0gJ3N1cnJvZ2F0ZWVzY2FwZScKKyAgICBlcnJvcnMgPSBzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycygpCiAKICAgICBkZWYgZnNlbmNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJFbmNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSB0byB0aGUgZmlsZXN5c3RlbQorICAgICAgICBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuCisgICAgICAgIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIEVuY29kZSBmaWxlbmFtZSB0byB0aGUgZmlsZXN5c3RlbSBlbmNvZGluZyB3aXRoICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yCi0gICAgICAgIGhhbmRsZXIsIHJldHVybiBieXRlcyB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIGJ5dGVzKToKLSAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZQotICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgc3RyKToKICAgICAgICAgICAgIHJldHVybiBmaWxlbmFtZS5lbmNvZGUoZW5jb2RpbmcsIGVycm9ycykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0IGJ5dGVzIG9yIHN0ciwgbm90ICVzIiAlIHR5cGUoZmlsZW5hbWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lCiAKICAgICBkZWYgZnNkZWNvZGUoZmlsZW5hbWUpOgorICAgICAgICAiIiJEZWNvZGUgZmlsZW5hbWUgKGFuIG9zLlBhdGhMaWtlLCBieXRlcywgb3Igc3RyKSBmcm9tIHRoZSBmaWxlc3lzdGVtCisgICAgICAgIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uCisgICAgICAgIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcworICAgICAgICAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KICAgICAgICAgIiIiCi0gICAgICAgIERlY29kZSBmaWxlbmFtZSBmcm9tIHRoZSBmaWxlc3lzdGVtIGVuY29kaW5nIHdpdGggJ3N1cnJvZ2F0ZWVzY2FwZScgZXJyb3IKLSAgICAgICAgaGFuZGxlciwgcmV0dXJuIHN0ciB1bmNoYW5nZWQuIE9uIFdpbmRvd3MsIHVzZSAnc3RyaWN0JyBlcnJvciBoYW5kbGVyIGlmCi0gICAgICAgIHRoZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBpcyAnbWJjcycgKHdoaWNoIGlzIHRoZSBkZWZhdWx0IGVuY29kaW5nKS4KLSAgICAgICAgIiIiCi0gICAgICAgIGlmIGlzaW5zdGFuY2UoZmlsZW5hbWUsIHN0cik6Ci0gICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKLSAgICAgICAgZWxpZiBpc2luc3RhbmNlKGZpbGVuYW1lLCBieXRlcyk6CisgICAgICAgIGZpbGVuYW1lID0gZnNwYXRoKGZpbGVuYW1lKSAgIyBEb2VzIHR5cGUtY2hlY2tpbmcgb2YgYGZpbGVuYW1lYC4KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmaWxlbmFtZSwgYnl0ZXMpOgogICAgICAgICAgICAgcmV0dXJuIGZpbGVuYW1lLmRlY29kZShlbmNvZGluZywgZXJyb3JzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJleHBlY3QgYnl0ZXMgb3Igc3RyLCBub3QgJXMiICUgdHlwZShmaWxlbmFtZSkuX19uYW1lX18pCisgICAgICAgICAgICByZXR1cm4gZmlsZW5hbWUKIAogICAgIHJldHVybiBmc2VuY29kZSwgZnNkZWNvZGUKIApAQCAtMTA3MCwzICsxMDA5LDU1IEBACiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiaW52YWxpZCBmZCB0eXBlICglcywgZXhwZWN0ZWQgaW50ZWdlcikiICUgdHlwZShmZCkpCiAgICAgaW1wb3J0IGlvCiAgICAgcmV0dXJuIGlvLm9wZW4oZmQsICphcmdzLCAqKmt3YXJncykKKworCisjIEZvciB0ZXN0aW5nIHB1cnBvc2VzLCBtYWtlIHN1cmUgdGhlIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSB3aGVuIHRoZSBDCisjIGltcGxlbWVudGF0aW9uIGV4aXN0cy4KK2RlZiBfZnNwYXRoKHBhdGgpOgorICAgICIiIlJldHVybiB0aGUgcGF0aCByZXByZXNlbnRhdGlvbiBvZiBhIHBhdGgtbGlrZSBvYmplY3QuCisKKyAgICBJZiBzdHIgb3IgYnl0ZXMgaXMgcGFzc2VkIGluLCBpdCBpcyByZXR1cm5lZCB1bmNoYW5nZWQuIE90aGVyd2lzZSB0aGUKKyAgICBvcy5QYXRoTGlrZSBpbnRlcmZhY2UgaXMgdXNlZCB0byBnZXQgdGhlIHBhdGggcmVwcmVzZW50YXRpb24uIElmIHRoZQorICAgIHBhdGggcmVwcmVzZW50YXRpb24gaXMgbm90IHN0ciBvciBieXRlcywgVHlwZUVycm9yIGlzIHJhaXNlZC4gSWYgdGhlCisgICAgcHJvdmlkZWQgcGF0aCBpcyBub3Qgc3RyLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIFR5cGVFcnJvciBpcyByYWlzZWQuCisgICAgIiIiCisgICAgaWYgaXNpbnN0YW5jZShwYXRoLCAoc3RyLCBieXRlcykpOgorICAgICAgICByZXR1cm4gcGF0aAorCisgICAgIyBXb3JrIGZyb20gdGhlIG9iamVjdCdzIHR5cGUgdG8gbWF0Y2ggbWV0aG9kIHJlc29sdXRpb24gb2Ygb3RoZXIgbWFnaWMKKyAgICAjIG1ldGhvZHMuCisgICAgcGF0aF90eXBlID0gdHlwZShwYXRoKQorICAgIHRyeToKKyAgICAgICAgcGF0aF9yZXByID0gcGF0aF90eXBlLl9fZnNwYXRoX18ocGF0aCkKKyAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgIGlmIGhhc2F0dHIocGF0aF90eXBlLCAnX19mc3BhdGhfXycpOgorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiZXhwZWN0ZWQgc3RyLCBieXRlcyBvciBvcy5QYXRoTGlrZSBvYmplY3QsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICIgKyBwYXRoX3R5cGUuX19uYW1lX18pCisgICAgaWYgaXNpbnN0YW5jZShwYXRoX3JlcHIsIChzdHIsIGJ5dGVzKSk6CisgICAgICAgIHJldHVybiBwYXRoX3JlcHIKKyAgICBlbHNlOgorICAgICAgICByYWlzZSBUeXBlRXJyb3IoImV4cGVjdGVkIHt9Ll9fZnNwYXRoX18oKSB0byByZXR1cm4gc3RyIG9yIGJ5dGVzLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAibm90IHt9Ii5mb3JtYXQocGF0aF90eXBlLl9fbmFtZV9fLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUocGF0aF9yZXByKS5fX25hbWVfXykpCisKKyMgSWYgdGhlcmUgaXMgbm8gQyBpbXBsZW1lbnRhdGlvbiwgbWFrZSB0aGUgcHVyZSBQeXRob24gdmVyc2lvbiB0aGUKKyMgaW1wbGVtZW50YXRpb24gYXMgdHJhbnNwYXJlbnRseSBhcyBwb3NzaWJsZS4KK2lmIG5vdCBfZXhpc3RzKCdmc3BhdGgnKToKKyAgICBmc3BhdGggPSBfZnNwYXRoCisgICAgZnNwYXRoLl9fbmFtZV9fID0gImZzcGF0aCIKKworCitjbGFzcyBQYXRoTGlrZShhYmMuQUJDKToKKworICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGltcGxlbWVudGluZyB0aGUgZmlsZSBzeXN0ZW0gcGF0aCBwcm90b2NvbC4iIiIKKworICAgIEBhYmMuYWJzdHJhY3RtZXRob2QKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSBmaWxlIHN5c3RlbSBwYXRoIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBvYmplY3QuIiIiCisgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBfX3N1YmNsYXNzaG9va19fKGNscywgc3ViY2xhc3MpOgorICAgICAgICByZXR1cm4gaGFzYXR0cihzdWJjbGFzcywgJ19fZnNwYXRoX18nKQpkaWZmIC0tZ2l0IGEvTGliL3BhdGhsaWIucHkgYi9MaWIvcGF0aGxpYi5weQppbmRleCAxNDgwZTJmLi4xYjVhYjM4IDEwMDY0NAotLS0gYS9MaWIvcGF0aGxpYi5weQorKysgYi9MaWIvcGF0aGxpYi5weQpAQCAtMzg1LDYgKzM4NSw4IEBACiAKICAgICBsaXN0ZGlyID0gX3dyYXBfc3RyZnVuYyhvcy5saXN0ZGlyKQogCisgICAgc2NhbmRpciA9IF93cmFwX3N0cmZ1bmMob3Muc2NhbmRpcikKKwogICAgIGNobW9kID0gX3dyYXBfc3RyZnVuYyhvcy5jaG1vZCkKIAogICAgIGlmIGhhc2F0dHIob3MsICJsY2htb2QiKToKQEAgLTQyOSwyNSArNDMxLDYgQEAKICMgR2xvYmJpbmcgaGVscGVycwogIwogCi1AY29udGV4dG1hbmFnZXIKLWRlZiBfY2FjaGVkKGZ1bmMpOgotICAgIHRyeToKLSAgICAgICAgZnVuYy5fX2NhY2hlZF9fCi0gICAgICAgIHlpZWxkIGZ1bmMKLSAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgIGNhY2hlID0ge30KLSAgICAgICAgZGVmIHdyYXBwZXIoKmFyZ3MpOgotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBjYWNoZVthcmdzXQotICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICAgICAgICAgIHZhbHVlID0gY2FjaGVbYXJnc10gPSBmdW5jKCphcmdzKQotICAgICAgICAgICAgICAgIHJldHVybiB2YWx1ZQotICAgICAgICB3cmFwcGVyLl9fY2FjaGVkX18gPSBUcnVlCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHlpZWxkIHdyYXBwZXIKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGNhY2hlLmNsZWFyKCkKLQogZGVmIF9tYWtlX3NlbGVjdG9yKHBhdHRlcm5fcGFydHMpOgogICAgIHBhdCA9IHBhdHRlcm5fcGFydHNbMF0KICAgICBjaGlsZF9wYXJ0cyA9IHBhdHRlcm5fcGFydHNbMTpdCkBAIC00NzMsOCArNDU2LDEwIEBACiAgICAgICAgIHNlbGYuY2hpbGRfcGFydHMgPSBjaGlsZF9wYXJ0cwogICAgICAgICBpZiBjaGlsZF9wYXJ0czoKICAgICAgICAgICAgIHNlbGYuc3VjY2Vzc29yID0gX21ha2Vfc2VsZWN0b3IoY2hpbGRfcGFydHMpCisgICAgICAgICAgICBzZWxmLmRpcm9ubHkgPSBUcnVlCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLnN1Y2Nlc3NvciA9IF9UZXJtaW5hdGluZ1NlbGVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuZGlyb25seSA9IEZhbHNlCiAKICAgICBkZWYgc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgpOgogICAgICAgICAiIiJJdGVyYXRlIG92ZXIgYWxsIGNoaWxkIHBhdGhzIG9mIGBwYXJlbnRfcGF0aGAgbWF0Y2hlZCBieSB0aGlzCkBAIC00ODIsMTMgKzQ2NywxNSBAQAogICAgICAgICBwYXRoX2NscyA9IHR5cGUocGFyZW50X3BhdGgpCiAgICAgICAgIGlzX2RpciA9IHBhdGhfY2xzLmlzX2RpcgogICAgICAgICBleGlzdHMgPSBwYXRoX2Nscy5leGlzdHMKLSAgICAgICAgbGlzdGRpciA9IHBhcmVudF9wYXRoLl9hY2Nlc3Nvci5saXN0ZGlyCi0gICAgICAgIHJldHVybiBzZWxmLl9zZWxlY3RfZnJvbShwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpCisgICAgICAgIHNjYW5kaXIgPSBwYXJlbnRfcGF0aC5fYWNjZXNzb3Iuc2NhbmRpcgorICAgICAgICBpZiBub3QgaXNfZGlyKHBhcmVudF9wYXRoKToKKyAgICAgICAgICAgIHJldHVybiBpdGVyKFtdKQorICAgICAgICByZXR1cm4gc2VsZi5fc2VsZWN0X2Zyb20ocGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKQogCiAKIGNsYXNzIF9UZXJtaW5hdGluZ1NlbGVjdG9yOgogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgeWllbGQgcGFyZW50X3BhdGgKIAogCkBAIC00OTgsMTMgKzQ4NSwxMSBAQAogICAgICAgICBzZWxmLm5hbWUgPSBuYW1lCiAgICAgICAgIF9TZWxlY3Rvci5fX2luaXRfXyhzZWxmLCBjaGlsZF9wYXJ0cykKIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgoc2VsZi5uYW1lKQotICAgICAgICAgICAgaWYgZXhpc3RzKHBhdGgpOgotICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgbGlzdGRpcik6CisgICAgICAgICAgICBpZiAoaXNfZGlyIGlmIHNlbGYuZGlyb25seSBlbHNlIGV4aXN0cykocGF0aCk6CisgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCkBAIC01MTYsMTcgKzUwMSwxOCBAQAogICAgICAgICBzZWxmLnBhdCA9IHJlLmNvbXBpbGUoZm5tYXRjaC50cmFuc2xhdGUocGF0KSkKICAgICAgICAgX1NlbGVjdG9yLl9faW5pdF9fKHNlbGYsIGNoaWxkX3BhcnRzKQogCi0gICAgZGVmIF9zZWxlY3RfZnJvbShzZWxmLCBwYXJlbnRfcGF0aCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgorICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBzY2FuZGlyKToKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgbm90IGlzX2RpcihwYXJlbnRfcGF0aCk6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgICAgICBjZiA9IHBhcmVudF9wYXRoLl9mbGF2b3VyLmNhc2Vmb2xkCi0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBjYXNlZm9sZGVkID0gY2YobmFtZSkKLSAgICAgICAgICAgICAgICBpZiBzZWxmLnBhdC5tYXRjaChjYXNlZm9sZGVkKToKLSAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKLSAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tKHBhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKKyAgICAgICAgICAgIGVudHJpZXMgPSBsaXN0KHNjYW5kaXIocGFyZW50X3BhdGgpKQorICAgICAgICAgICAgZm9yIGVudHJ5IGluIGVudHJpZXM6CisgICAgICAgICAgICAgICAgaWYgbm90IHNlbGYuZGlyb25seSBvciBlbnRyeS5pc19kaXIoKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGVudHJ5Lm5hbWUKKyAgICAgICAgICAgICAgICAgICAgY2FzZWZvbGRlZCA9IGNmKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucGF0Lm1hdGNoKGNhc2Vmb2xkZWQpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IHBhcmVudF9wYXRoLl9tYWtlX2NoaWxkX3JlbHBhdGgobmFtZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuc3VjY2Vzc29yLl9zZWxlY3RfZnJvbShwYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGQgcAogICAgICAgICBleGNlcHQgUGVybWlzc2lvbkVycm9yOgogICAgICAgICAgICAgcmV0dXJuCiAKQEAgLTUzNywzMiArNTIzLDMwIEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdCwgY2hpbGRfcGFydHMpOgogICAgICAgICBfU2VsZWN0b3IuX19pbml0X18oc2VsZiwgY2hpbGRfcGFydHMpCiAKLSAgICBkZWYgX2l0ZXJhdGVfZGlyZWN0b3JpZXMoc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgZGVmIF9pdGVyYXRlX2RpcmVjdG9yaWVzKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIHNjYW5kaXIpOgogICAgICAgICB5aWVsZCBwYXJlbnRfcGF0aAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBsaXN0ZGlyKHBhcmVudF9wYXRoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChuYW1lKQotICAgICAgICAgICAgICAgIGlmIGlzX2RpcihwYXRoKSBhbmQgbm90IHBhdGguaXNfc3ltbGluaygpOgotICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2RpciwgbGlzdGRpcik6CisgICAgICAgICAgICBlbnRyaWVzID0gbGlzdChzY2FuZGlyKHBhcmVudF9wYXRoKSkKKyAgICAgICAgICAgIGZvciBlbnRyeSBpbiBlbnRyaWVzOgorICAgICAgICAgICAgICAgIGlmIGVudHJ5LmlzX2RpcigpIGFuZCBub3QgZW50cnkuaXNfc3ltbGluaygpOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gcGFyZW50X3BhdGguX21ha2VfY2hpbGRfcmVscGF0aChlbnRyeS5uYW1lKQorICAgICAgICAgICAgICAgICAgICBmb3IgcCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhdGgsIGlzX2Rpciwgc2NhbmRpcik6CiAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIAotICAgIGRlZiBfc2VsZWN0X2Zyb20oc2VsZiwgcGFyZW50X3BhdGgsIGlzX2RpciwgZXhpc3RzLCBsaXN0ZGlyKToKKyAgICBkZWYgX3NlbGVjdF9mcm9tKHNlbGYsIHBhcmVudF9wYXRoLCBpc19kaXIsIGV4aXN0cywgc2NhbmRpcik6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIGlmIG5vdCBpc19kaXIocGFyZW50X3BhdGgpOgotICAgICAgICAgICAgICAgIHJldHVybgotICAgICAgICAgICAgd2l0aCBfY2FjaGVkKGxpc3RkaXIpIGFzIGxpc3RkaXI6Ci0gICAgICAgICAgICAgICAgeWllbGRlZCA9IHNldCgpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzdWNjZXNzb3Jfc2VsZWN0ID0gc2VsZi5zdWNjZXNzb3IuX3NlbGVjdF9mcm9tCi0gICAgICAgICAgICAgICAgICAgIGZvciBzdGFydGluZ19wb2ludCBpbiBzZWxmLl9pdGVyYXRlX2RpcmVjdG9yaWVzKHBhcmVudF9wYXRoLCBpc19kaXIsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIGxpc3RkaXIpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHAgbm90IGluIHlpZWxkZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHlpZWxkIHAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKLSAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICB5aWVsZGVkLmNsZWFyKCkKKyAgICAgICAgICAgIHlpZWxkZWQgPSBzZXQoKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHN1Y2Nlc3Nvcl9zZWxlY3QgPSBzZWxmLnN1Y2Nlc3Nvci5fc2VsZWN0X2Zyb20KKyAgICAgICAgICAgICAgICBmb3Igc3RhcnRpbmdfcG9pbnQgaW4gc2VsZi5faXRlcmF0ZV9kaXJlY3RvcmllcyhwYXJlbnRfcGF0aCwgaXNfZGlyLCBzY2FuZGlyKToKKyAgICAgICAgICAgICAgICAgICAgZm9yIHAgaW4gc3VjY2Vzc29yX3NlbGVjdChzdGFydGluZ19wb2ludCwgaXNfZGlyLCBleGlzdHMsIHNjYW5kaXIpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgcCBub3QgaW4geWllbGRlZDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5aWVsZCBwCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgeWllbGRlZC5hZGQocCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgeWllbGRlZC5jbGVhcigpCiAgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3I6CiAgICAgICAgICAgICByZXR1cm4KIApAQCAtNjM0LDEzICs2MTgsMTYgQEAKICAgICAgICAgZm9yIGEgaW4gYXJnczoKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgUHVyZVBhdGgpOgogICAgICAgICAgICAgICAgIHBhcnRzICs9IGEuX3BhcnRzCi0gICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKLSAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCi0gICAgICAgICAgICAgICAgcGFydHMuYXBwZW5kKHN0cihhKSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAotICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgc2hvdWxkIGJlIGEgcGF0aCBvciBzdHIgb2JqZWN0LCBub3QgJXIiCi0gICAgICAgICAgICAgICAgICAgICUgdHlwZShhKSkKKyAgICAgICAgICAgICAgICBhID0gb3MuZnNwYXRoKGEpCisgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgorICAgICAgICAgICAgICAgICAgICAjIEZvcmNlLWNhc3Qgc3RyIHN1YmNsYXNzZXMgdG8gc3RyIChpc3N1ZSAjMjExMjcpCisgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzdHIoYSkpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKAorICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3VtZW50IHNob3VsZCBiZSBhIHN0ciBvYmplY3Qgb3IgYW4gb3MuUGF0aExpa2UgIgorICAgICAgICAgICAgICAgICAgICAgICAgIm9iamVjdCByZXR1cm5pbmcgc3RyLCBub3QgJXIiCisgICAgICAgICAgICAgICAgICAgICAgICAlIHR5cGUoYSkpCiAgICAgICAgIHJldHVybiBjbHMuX2ZsYXZvdXIucGFyc2VfcGFydHMocGFydHMpCiAKICAgICBAY2xhc3NtZXRob2QKQEAgLTY5Myw2ICs2ODAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wYXJ0cykgb3IgJy4nCiAgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3RyCiAKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmKQorCiAgICAgZGVmIGFzX3Bvc2l4KHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gdGhlIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiB0aGUgcGF0aCB3aXRoIGZvcndhcmQgKC8pCiAgICAgICAgIHNsYXNoZXMuIiIiCkBAIC05NDMsNiArOTMzLDEwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIHJldHVybiBUcnVlCiAKKyMgQ2FuJ3Qgc3ViY2xhc3Mgb3MuUGF0aExpa2UgZnJvbSBQdXJlUGF0aCBhbmQga2VlcCB0aGUgY29uc3RydWN0b3IKKyMgb3B0aW1pemF0aW9ucyBpbiBQdXJlUGF0aC5fcGFyc2VfYXJncygpLgorb3MuUGF0aExpa2UucmVnaXN0ZXIoUHVyZVBhdGgpCisKIAogY2xhc3MgUHVyZVBvc2l4UGF0aChQdXJlUGF0aCk6CiAgICAgX2ZsYXZvdXIgPSBfcG9zaXhfZmxhdm91cgpkaWZmIC0tZ2l0IGEvTGliL3BkYi5weSBiL0xpYi9wZGIucHkKaW5kZXggNDc5NzI2NS4uOTc2MThiMCAxMDA3NTUKLS0tIGEvTGliL3BkYi5weQorKysgYi9MaWIvcGRiLnB5CkBAIC01Miw3ICs1Miw4IEBACiBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkIGF0IHRoZQogZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWYgYm90aAogZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kIGFsaWFzZXMKLWRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuCitkZWZpbmVkIHRoZXJlIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSBsb2NhbCBmaWxlLiAgVGhpcyBiZWhhdmlvciBjYW4gYmUKK2Rpc2FibGVkIGJ5IHBhc3NpbmcgdGhlICJyZWFkcmM9RmFsc2UiIGFyZ3VtZW50IHRvIHRoZSBQZGIgY29uc3RydWN0b3IuCiAKIEFzaWRlIGZyb20gYWxpYXNlcywgdGhlIGRlYnVnZ2VyIGlzIG5vdCBkaXJlY3RseSBwcm9ncmFtbWFibGU7IGJ1dCBpdAogaXMgaW1wbGVtZW50ZWQgYXMgYSBjbGFzcyBmcm9tIHdoaWNoIHlvdSBjYW4gZGVyaXZlIHlvdXIgb3duIGRlYnVnZ2VyCkBAIC0xMzcsNyArMTM4LDcgQEAKICAgICBfcHJldmlvdXNfc2lnaW50X2hhbmRsZXIgPSBOb25lCiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsCi0gICAgICAgICAgICAgICAgIG5vc2lnaW50PUZhbHNlKToKKyAgICAgICAgICAgICAgICAgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKToKICAgICAgICAgYmRiLkJkYi5fX2luaXRfXyhzZWxmLCBza2lwPXNraXApCiAgICAgICAgIGNtZC5DbWQuX19pbml0X18oc2VsZiwgY29tcGxldGVrZXksIHN0ZGluLCBzdGRvdXQpCiAgICAgICAgIGlmIHN0ZG91dDoKQEAgLTE2MCwxOCArMTYxLDE5IEBACiAKICAgICAgICAgIyBSZWFkICRIT01FLy5wZGJyYyBhbmQgLi8ucGRicmMKICAgICAgICAgc2VsZi5yY0xpbmVzID0gW10KLSAgICAgICAgaWYgJ0hPTUUnIGluIG9zLmVudmlyb246Ci0gICAgICAgICAgICBlbnZIb21lID0gb3MuZW52aXJvblsnSE9NRSddCisgICAgICAgIGlmIHJlYWRyYzoKKyAgICAgICAgICAgIGlmICdIT01FJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgICAgIGVudkhvbWUgPSBvcy5lbnZpcm9uWydIT01FJ10KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZW52SG9tZSwgIi5wZGJyYyIpKSBhcyByY0ZpbGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZW52SG9tZSwgIi5wZGJyYyIpKSBhcyByY0ZpbGU6CisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKCIucGRicmMiKSBhcyByY0ZpbGU6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYucmNMaW5lcy5leHRlbmQocmNGaWxlKQogICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB3aXRoIG9wZW4oIi5wZGJyYyIpIGFzIHJjRmlsZToKLSAgICAgICAgICAgICAgICBzZWxmLnJjTGluZXMuZXh0ZW5kKHJjRmlsZSkKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICBwYXNzCiAKICAgICAgICAgc2VsZi5jb21tYW5kcyA9IHt9ICMgYXNzb2NpYXRlcyBhIGNvbW1hbmQgbGlzdCB0byBicmVha3BvaW50IG51bWJlcnMKICAgICAgICAgc2VsZi5jb21tYW5kc19kb3Byb21wdCA9IHt9ICMgZm9yIGVhY2ggYnAgbnVtLCB0ZWxscyBpZiB0aGUgcHJvbXB0CmRpZmYgLS1naXQgYS9MaWIvcGlja2xlLnB5IGIvTGliL3BpY2tsZS5weQppbmRleCAwNDBlY2IyLi5jODM3MGM5IDEwMDY0NAotLS0gYS9MaWIvcGlja2xlLnB5CisrKyBiL0xpYi9waWNrbGUucHkKQEAgLTI3LDYgKzI3LDcgQEAKIGZyb20gY29weXJlZyBpbXBvcnQgZGlzcGF0Y2hfdGFibGUKIGZyb20gY29weXJlZyBpbXBvcnQgX2V4dGVuc2lvbl9yZWdpc3RyeSwgX2ludmVydGVkX3JlZ2lzdHJ5LCBfZXh0ZW5zaW9uX2NhY2hlCiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgaXNsaWNlCitmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogaW1wb3J0IHN5cwogZnJvbSBzeXMgaW1wb3J0IG1heHNpemUKIGZyb20gc3RydWN0IGltcG9ydCBwYWNrLCB1bnBhY2sKQEAgLTU0OCw3ICs1NDksNyBAQAogICAgICAgICB3cml0ZSA9IHNlbGYud3JpdGUKIAogICAgICAgICBmdW5jX25hbWUgPSBnZXRhdHRyKGZ1bmMsICJfX25hbWVfXyIsICIiKQotICAgICAgICBpZiBzZWxmLnByb3RvID49IDQgYW5kIGZ1bmNfbmFtZSA9PSAiX19uZXdvYmpfZXhfXyI6CisgICAgICAgIGlmIHNlbGYucHJvdG8gPj0gMiBhbmQgZnVuY19uYW1lID09ICJfX25ld29ial9leF9fIjoKICAgICAgICAgICAgIGNscywgYXJncywga3dhcmdzID0gYXJncwogICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIoY2xzLCAiX19uZXdfXyIpOgogICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoImFyZ3NbMF0gZnJvbSB7fSBhcmdzIGhhcyBubyBfX25ld19fIgpAQCAtNTU2LDEwICs1NTcsMTYgQEAKICAgICAgICAgICAgIGlmIG9iaiBpcyBub3QgTm9uZSBhbmQgY2xzIGlzIG5vdCBvYmouX19jbGFzc19fOgogICAgICAgICAgICAgICAgIHJhaXNlIFBpY2tsaW5nRXJyb3IoImFyZ3NbMF0gZnJvbSB7fSBhcmdzIGhhcyB0aGUgd3JvbmcgY2xhc3MiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuZm9ybWF0KGZ1bmNfbmFtZSkpCi0gICAgICAgICAgICBzYXZlKGNscykKLSAgICAgICAgICAgIHNhdmUoYXJncykKLSAgICAgICAgICAgIHNhdmUoa3dhcmdzKQotICAgICAgICAgICAgd3JpdGUoTkVXT0JKX0VYKQorICAgICAgICAgICAgaWYgc2VsZi5wcm90byA+PSA0OgorICAgICAgICAgICAgICAgIHNhdmUoY2xzKQorICAgICAgICAgICAgICAgIHNhdmUoYXJncykKKyAgICAgICAgICAgICAgICBzYXZlKGt3YXJncykKKyAgICAgICAgICAgICAgICB3cml0ZShORVdPQkpfRVgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZ1bmMgPSBwYXJ0aWFsKGNscy5fX25ld19fLCBjbHMsICphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICBzYXZlKGZ1bmMpCisgICAgICAgICAgICAgICAgc2F2ZSgoKSkKKyAgICAgICAgICAgICAgICB3cml0ZShSRURVQ0UpCiAgICAgICAgIGVsaWYgc2VsZi5wcm90byA+PSAyIGFuZCBmdW5jX25hbWUgPT0gIl9fbmV3b2JqX18iOgogICAgICAgICAgICAgIyBBIF9fcmVkdWNlX18gaW1wbGVtZW50YXRpb24gY2FuIGRpcmVjdCBwcm90b2NvbCAyIG9yIG5ld2VyIHRvCiAgICAgICAgICAgICAjIHVzZSB0aGUgbW9yZSBlZmZpY2llbnQgTkVXT0JKIG9wY29kZSwgd2hpbGUgc3RpbGwKQEAgLTEwMjgsNyArMTAzNSw3IEBACiAgICAgICAgIHNlbGYuX3VuZnJhbWVyID0gX1VuZnJhbWVyKHNlbGYuX2ZpbGVfcmVhZCwgc2VsZi5fZmlsZV9yZWFkbGluZSkKICAgICAgICAgc2VsZi5yZWFkID0gc2VsZi5fdW5mcmFtZXIucmVhZAogICAgICAgICBzZWxmLnJlYWRsaW5lID0gc2VsZi5fdW5mcmFtZXIucmVhZGxpbmUKLSAgICAgICAgc2VsZi5tYXJrID0gb2JqZWN0KCkgIyBhbnkgbmV3IHVuaXF1ZSBvYmplY3QKKyAgICAgICAgc2VsZi5tZXRhc3RhY2sgPSBbXQogICAgICAgICBzZWxmLnN0YWNrID0gW10KICAgICAgICAgc2VsZi5hcHBlbmQgPSBzZWxmLnN0YWNrLmFwcGVuZAogICAgICAgICBzZWxmLnByb3RvID0gMApAQCAtMTA0NCwyMCArMTA1MSwxMiBAQAogICAgICAgICBleGNlcHQgX1N0b3AgYXMgc3RvcGluc3Q6CiAgICAgICAgICAgICByZXR1cm4gc3RvcGluc3QudmFsdWUKIAotICAgICMgUmV0dXJuIGxhcmdlc3QgaW5kZXggayBzdWNoIHRoYXQgc2VsZi5zdGFja1trXSBpcyBzZWxmLm1hcmsuCi0gICAgIyBJZiB0aGUgc3RhY2sgZG9lc24ndCBjb250YWluIGEgbWFyaywgZXZlbnR1YWxseSByYWlzZXMgSW5kZXhFcnJvci4KLSAgICAjIFRoaXMgY291bGQgYmUgc3BlZCBieSBtYWludGFpbmluZyBhbm90aGVyIHN0YWNrLCBvZiBpbmRpY2VzIGF0IHdoaWNoCi0gICAgIyB0aGUgbWFyayBhcHBlYXJzLiAgRm9yIHRoYXQgbWF0dGVyLCB0aGUgbGF0dGVyIHN0YWNrIHdvdWxkIHN1ZmZpY2UsCi0gICAgIyBhbmQgd2Ugd291bGRuJ3QgbmVlZCB0byBwdXNoIG1hcmsgb2JqZWN0cyBvbiBzZWxmLnN0YWNrIGF0IGFsbC4KLSAgICAjIERvaW5nIHNvIGlzIHByb2JhYmx5IGEgZ29vZCB0aGluZywgdGhvdWdoLCBzaW5jZSBpZiB0aGUgcGlja2xlIGlzCi0gICAgIyBjb3JydXB0IChvciBob3N0aWxlKSB3ZSBtYXkgZ2V0IGEgY2x1ZSBmcm9tIGZpbmRpbmcgc2VsZi5tYXJrIGVtYmVkZGVkCi0gICAgIyBpbiB1bnBpY2tsZWQgb2JqZWN0cy4KLSAgICBkZWYgbWFya2VyKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFyawotICAgICAgICBrID0gbGVuKHN0YWNrKS0xCi0gICAgICAgIHdoaWxlIHN0YWNrW2tdIGlzIG5vdCBtYXJrOiBrID0gay0xCi0gICAgICAgIHJldHVybiBrCisgICAgIyBSZXR1cm4gYSBsaXN0IG9mIGl0ZW1zIHB1c2hlZCBpbiB0aGUgc3RhY2sgYWZ0ZXIgbGFzdCBNQVJLIGluc3RydWN0aW9uLgorICAgIGRlZiBwb3BfbWFyayhzZWxmKToKKyAgICAgICAgaXRlbXMgPSBzZWxmLnN0YWNrCisgICAgICAgIHNlbGYuc3RhY2sgPSBzZWxmLm1ldGFzdGFjay5wb3AoKQorICAgICAgICBzZWxmLmFwcGVuZCA9IHNlbGYuc3RhY2suYXBwZW5kCisgICAgICAgIHJldHVybiBpdGVtcwogCiAgICAgZGVmIHBlcnNpc3RlbnRfbG9hZChzZWxmLCBwaWQpOgogICAgICAgICByYWlzZSBVbnBpY2tsaW5nRXJyb3IoInVuc3VwcG9ydGVkIHBlcnNpc3RlbnQgaWQgZW5jb3VudGVyZWQiKQpAQCAtMTIzOCw4ICsxMjM3LDggQEAKICAgICBkaXNwYXRjaFtTSE9SVF9CSU5VTklDT0RFWzBdXSA9IGxvYWRfc2hvcnRfYmludW5pY29kZQogCiAgICAgZGVmIGxvYWRfdHVwbGUoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNlbGYuc3RhY2tbazpdID0gW3R1cGxlKHNlbGYuc3RhY2tbaysxOl0pXQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBzZWxmLmFwcGVuZCh0dXBsZShpdGVtcykpCiAgICAgZGlzcGF0Y2hbVFVQTEVbMF1dID0gbG9hZF90dXBsZQogCiAgICAgZGVmIGxvYWRfZW1wdHlfdHVwbGUoc2VsZik6CkBAIC0xMjcxLDIxICsxMjcwLDIwIEBACiAgICAgZGlzcGF0Y2hbRU1QVFlfU0VUWzBdXSA9IGxvYWRfZW1wdHlfc2V0CiAKICAgICBkZWYgbG9hZF9mcm96ZW5zZXQoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNlbGYuc3RhY2tbazpdID0gW2Zyb3plbnNldChzZWxmLnN0YWNrW2srMTpdKV0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2VsZi5hcHBlbmQoZnJvemVuc2V0KGl0ZW1zKSkKICAgICBkaXNwYXRjaFtGUk9aRU5TRVRbMF1dID0gbG9hZF9mcm96ZW5zZXQKIAogICAgIGRlZiBsb2FkX2xpc3Qoc2VsZik6Ci0gICAgICAgIGsgPSBzZWxmLm1hcmtlcigpCi0gICAgICAgIHNlbGYuc3RhY2tbazpdID0gW3NlbGYuc3RhY2tbaysxOl1dCisgICAgICAgIGl0ZW1zID0gc2VsZi5wb3BfbWFyaygpCisgICAgICAgIHNlbGYuYXBwZW5kKGl0ZW1zKQogICAgIGRpc3BhdGNoW0xJU1RbMF1dID0gbG9hZF9saXN0CiAKICAgICBkZWYgbG9hZF9kaWN0KHNlbGYpOgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBpdGVtcyA9IHNlbGYuc3RhY2tbaysxOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKICAgICAgICAgZCA9IHtpdGVtc1tpXTogaXRlbXNbaSsxXQogICAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIGxlbihpdGVtcyksIDIpfQotICAgICAgICBzZWxmLnN0YWNrW2s6XSA9IFtkXQorICAgICAgICBzZWxmLmFwcGVuZChkKQogICAgIGRpc3BhdGNoW0RJQ1RbMF1dID0gbG9hZF9kaWN0CiAKICAgICAjIElOU1QgYW5kIE9CSiBkaWZmZXIgb25seSBpbiBob3cgdGhleSBnZXQgYSBjbGFzcyBvYmplY3QuICBJdCdzIG5vdApAQCAtMTI5Myw5ICsxMjkxLDcgQEAKICAgICAjIHByZXZpb3VzbHkgZGl2ZXJnZWQgYW5kIGdyZXcgZGlmZmVyZW50IGJ1Z3MuCiAgICAgIyBrbGFzcyBpcyB0aGUgY2xhc3MgdG8gaW5zdGFudGlhdGUsIGFuZCBrIHBvaW50cyB0byB0aGUgdG9wbW9zdCBtYXJrCiAgICAgIyBvYmplY3QsIGZvbGxvd2luZyB3aGljaCBhcmUgdGhlIGFyZ3VtZW50cyBmb3Iga2xhc3MuX19pbml0X18uCi0gICAgZGVmIF9pbnN0YW50aWF0ZShzZWxmLCBrbGFzcywgayk6Ci0gICAgICAgIGFyZ3MgPSB0dXBsZShzZWxmLnN0YWNrW2srMTpdKQotICAgICAgICBkZWwgc2VsZi5zdGFja1trOl0KKyAgICBkZWYgX2luc3RhbnRpYXRlKHNlbGYsIGtsYXNzLCBhcmdzKToKICAgICAgICAgaWYgKGFyZ3Mgb3Igbm90IGlzaW5zdGFuY2Uoa2xhc3MsIHR5cGUpIG9yCiAgICAgICAgICAgICBoYXNhdHRyKGtsYXNzLCAiX19nZXRpbml0YXJnc19fIikpOgogICAgICAgICAgICAgdHJ5OgpAQCAtMTMxMSwxNCArMTMwNywxNCBAQAogICAgICAgICBtb2R1bGUgPSBzZWxmLnJlYWRsaW5lKClbOi0xXS5kZWNvZGUoImFzY2lpIikKICAgICAgICAgbmFtZSA9IHNlbGYucmVhZGxpbmUoKVs6LTFdLmRlY29kZSgiYXNjaWkiKQogICAgICAgICBrbGFzcyA9IHNlbGYuZmluZF9jbGFzcyhtb2R1bGUsIG5hbWUpCi0gICAgICAgIHNlbGYuX2luc3RhbnRpYXRlKGtsYXNzLCBzZWxmLm1hcmtlcigpKQorICAgICAgICBzZWxmLl9pbnN0YW50aWF0ZShrbGFzcywgc2VsZi5wb3BfbWFyaygpKQogICAgIGRpc3BhdGNoW0lOU1RbMF1dID0gbG9hZF9pbnN0CiAKICAgICBkZWYgbG9hZF9vYmooc2VsZik6CiAgICAgICAgICMgU3RhY2sgaXMgLi4uIG1hcmtvYmplY3QgY2xhc3NvYmplY3QgYXJnMSBhcmcyIC4uLgotICAgICAgICBrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBrbGFzcyA9IHNlbGYuc3RhY2sucG9wKGsrMSkKLSAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoa2xhc3MsIGspCisgICAgICAgIGFyZ3MgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgY2xzID0gYXJncy5wb3AoMCkKKyAgICAgICAgc2VsZi5faW5zdGFudGlhdGUoY2xzLCBhcmdzKQogICAgIGRpc3BhdGNoW09CSlswXV0gPSBsb2FkX29iagogCiAgICAgZGVmIGxvYWRfbmV3b2JqKHNlbGYpOgpAQCAtMTQwMywxMiArMTM5OSwxNCBAQAogICAgIGRpc3BhdGNoW1JFRFVDRVswXV0gPSBsb2FkX3JlZHVjZQogCiAgICAgZGVmIGxvYWRfcG9wKHNlbGYpOgotICAgICAgICBkZWwgc2VsZi5zdGFja1stMV0KKyAgICAgICAgaWYgc2VsZi5zdGFjazoKKyAgICAgICAgICAgIGRlbCBzZWxmLnN0YWNrWy0xXQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wb3BfbWFyaygpCiAgICAgZGlzcGF0Y2hbUE9QWzBdXSA9IGxvYWRfcG9wCiAKICAgICBkZWYgbG9hZF9wb3BfbWFyayhzZWxmKToKLSAgICAgICAgayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgZGVsIHNlbGYuc3RhY2tbazpdCisgICAgICAgIHNlbGYucG9wX21hcmsoKQogICAgIGRpc3BhdGNoW1BPUF9NQVJLWzBdXSA9IGxvYWRfcG9wX21hcmsKIAogICAgIGRlZiBsb2FkX2R1cChzZWxmKToKQEAgLTE0NjQsMTcgKzE0NjIsMTQgQEAKICAgICBkaXNwYXRjaFtBUFBFTkRbMF1dID0gbG9hZF9hcHBlbmQKIAogICAgIGRlZiBsb2FkX2FwcGVuZHMoc2VsZik6Ci0gICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawotICAgICAgICBtYXJrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBsaXN0X29iaiA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBpdGVtcyA9IHN0YWNrW21hcmsgKyAxOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgbGlzdF9vYmogPSBzZWxmLnN0YWNrWy0xXQogICAgICAgICBpZiBpc2luc3RhbmNlKGxpc3Rfb2JqLCBsaXN0KToKICAgICAgICAgICAgIGxpc3Rfb2JqLmV4dGVuZChpdGVtcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGFwcGVuZCA9IGxpc3Rfb2JqLmFwcGVuZAogICAgICAgICAgICAgZm9yIGl0ZW0gaW4gaXRlbXM6CiAgICAgICAgICAgICAgICAgYXBwZW5kKGl0ZW0pCi0gICAgICAgIGRlbCBzdGFja1ttYXJrOl0KICAgICBkaXNwYXRjaFtBUFBFTkRTWzBdXSA9IGxvYWRfYXBwZW5kcwogCiAgICAgZGVmIGxvYWRfc2V0aXRlbShzZWxmKToKQEAgLTE0ODYsMjcgKzE0ODEsMjEgQEAKICAgICBkaXNwYXRjaFtTRVRJVEVNWzBdXSA9IGxvYWRfc2V0aXRlbQogCiAgICAgZGVmIGxvYWRfc2V0aXRlbXMoc2VsZik6Ci0gICAgICAgIHN0YWNrID0gc2VsZi5zdGFjawotICAgICAgICBtYXJrID0gc2VsZi5tYXJrZXIoKQotICAgICAgICBkaWN0ID0gc3RhY2tbbWFyayAtIDFdCi0gICAgICAgIGZvciBpIGluIHJhbmdlKG1hcmsgKyAxLCBsZW4oc3RhY2spLCAyKToKLSAgICAgICAgICAgIGRpY3Rbc3RhY2tbaV1dID0gc3RhY2tbaSArIDFdCi0KLSAgICAgICAgZGVsIHN0YWNrW21hcms6XQorICAgICAgICBpdGVtcyA9IHNlbGYucG9wX21hcmsoKQorICAgICAgICBkaWN0ID0gc2VsZi5zdGFja1stMV0KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgbGVuKGl0ZW1zKSwgMik6CisgICAgICAgICAgICBkaWN0W2l0ZW1zW2ldXSA9IGl0ZW1zW2kgKyAxXQogICAgIGRpc3BhdGNoW1NFVElURU1TWzBdXSA9IGxvYWRfc2V0aXRlbXMKIAogICAgIGRlZiBsb2FkX2FkZGl0ZW1zKHNlbGYpOgotICAgICAgICBzdGFjayA9IHNlbGYuc3RhY2sKLSAgICAgICAgbWFyayA9IHNlbGYubWFya2VyKCkKLSAgICAgICAgc2V0X29iaiA9IHN0YWNrW21hcmsgLSAxXQotICAgICAgICBpdGVtcyA9IHN0YWNrW21hcmsgKyAxOl0KKyAgICAgICAgaXRlbXMgPSBzZWxmLnBvcF9tYXJrKCkKKyAgICAgICAgc2V0X29iaiA9IHNlbGYuc3RhY2tbLTFdCiAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2V0X29iaiwgc2V0KToKICAgICAgICAgICAgIHNldF9vYmoudXBkYXRlKGl0ZW1zKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgYWRkID0gc2V0X29iai5hZGQKICAgICAgICAgICAgIGZvciBpdGVtIGluIGl0ZW1zOgogICAgICAgICAgICAgICAgIGFkZChpdGVtKQotICAgICAgICBkZWwgc3RhY2tbbWFyazpdCiAgICAgZGlzcGF0Y2hbQURESVRFTVNbMF1dID0gbG9hZF9hZGRpdGVtcwogCiAgICAgZGVmIGxvYWRfYnVpbGQoc2VsZik6CkBAIC0xNTM0LDcgKzE1MjMsOSBAQAogICAgIGRpc3BhdGNoW0JVSUxEWzBdXSA9IGxvYWRfYnVpbGQKIAogICAgIGRlZiBsb2FkX21hcmsoc2VsZik6Ci0gICAgICAgIHNlbGYuYXBwZW5kKHNlbGYubWFyaykKKyAgICAgICAgc2VsZi5tZXRhc3RhY2suYXBwZW5kKHNlbGYuc3RhY2spCisgICAgICAgIHNlbGYuc3RhY2sgPSBbXQorICAgICAgICBzZWxmLmFwcGVuZCA9IHNlbGYuc3RhY2suYXBwZW5kCiAgICAgZGlzcGF0Y2hbTUFSS1swXV0gPSBsb2FkX21hcmsKIAogICAgIGRlZiBsb2FkX3N0b3Aoc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvcGlja2xldG9vbHMucHkgYi9MaWIvcGlja2xldG9vbHMucHkKaW5kZXggMTZhZTdkNS4uNWUxMjliNSAxMDA2NDQKLS0tIGEvTGliL3BpY2tsZXRvb2xzLnB5CisrKyBiL0xpYi9waWNrbGV0b29scy5weQpAQCAtNzA3LDcgKzcwNyw3IEBACiAgICAgPj4+IGVuYyA9IHMuZW5jb2RlKCd1dGYtOCcpCiAgICAgPj4+IGVuYwogICAgIGInYWJjZFx4ZWFceGFmXHg4ZCcKLSAgICA+Pj4gbiA9IGJ5dGVzKFtsZW4oZW5jKV0pICsgYnl0ZXMoNykgICMgbGl0dGxlLWVuZGlhbiA4LWJ5dGUgbGVuZ3RoCisgICAgPj4+IG4gPSBieXRlcyhbbGVuKGVuYyldKSArIGInXDAnICogNyAgIyBsaXR0bGUtZW5kaWFuIDgtYnl0ZSBsZW5ndGgKICAgICA+Pj4gdCA9IHJlYWRfdW5pY29kZXN0cmluZzgoaW8uQnl0ZXNJTyhuICsgZW5jICsgYidqdW5rJykpCiAgICAgPj4+IHMgPT0gdAogICAgIFRydWUKQEAgLTI0NDAsNiArMjQ0MCw3IEBACiAgICAgICAgIGlmIG9wY29kZS5uYW1lIGluICgiUFVUIiwgIkJJTlBVVCIsICJMT05HX0JJTlBVVCIsICJNRU1PSVpFIik6CiAgICAgICAgICAgICBpZiBvcGNvZGUubmFtZSA9PSAiTUVNT0laRSI6CiAgICAgICAgICAgICAgICAgbWVtb19pZHggPSBsZW4obWVtbykKKyAgICAgICAgICAgICAgICBtYXJrbXNnID0gIihhcyAlZCkiICUgbWVtb19pZHgKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgYXNzZXJ0IGFyZyBpcyBub3QgTm9uZQogICAgICAgICAgICAgICAgIG1lbW9faWR4ID0gYXJnCmRpZmYgLS1naXQgYS9MaWIvcGtndXRpbC5weSBiL0xpYi9wa2d1dGlsLnB5CmluZGV4IDgxZDQxOGQuLmUzN2FkNDUgMTAwNjQ0Ci0tLSBhL0xpYi9wa2d1dGlsLnB5CisrKyBiL0xpYi9wa2d1dGlsLnB5CkBAIC0xLDUgKzEsNiBAQAogIiIiVXRpbGl0aWVzIHRvIHN1cHBvcnQgcGFja2FnZXMuIiIiCiAKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBzaW5nbGVkaXNwYXRjaCBhcyBzaW1wbGVnZW5lcmljCiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKQEAgLTE0LDkgKzE1LDE0IEBACiAgICAgJ2dldF9pbXBvcnRlcicsICdpdGVyX2ltcG9ydGVycycsICdnZXRfbG9hZGVyJywgJ2ZpbmRfbG9hZGVyJywKICAgICAnd2Fsa19wYWNrYWdlcycsICdpdGVyX21vZHVsZXMnLCAnZ2V0X2RhdGEnLAogICAgICdJbXBJbXBvcnRlcicsICdJbXBMb2FkZXInLCAncmVhZF9jb2RlJywgJ2V4dGVuZF9wYXRoJywKKyAgICAnTW9kdWxlSW5mbycsCiBdCiAKIAorTW9kdWxlSW5mbyA9IG5hbWVkdHVwbGUoJ01vZHVsZUluZm8nLCAnbW9kdWxlX2ZpbmRlciBuYW1lIGlzcGtnJykKK01vZHVsZUluZm8uX19kb2NfXyA9ICdBIG5hbWVkdHVwbGUgd2l0aCBtaW5pbWFsIGluZm8gYWJvdXQgYSBtb2R1bGUuJworCisKIGRlZiBfZ2V0X3NwZWMoZmluZGVyLCBuYW1lKToKICAgICAiIiJSZXR1cm4gdGhlIGZpbmRlci1zcGVjaWZpYyBtb2R1bGUgc3BlYy4iIiIKICAgICAjIFdvcmtzIHdpdGggbGVnYWN5IGZpbmRlcnMuCkBAIC00NSw3ICs1MSw3IEBACiAKIAogZGVmIHdhbGtfcGFja2FnZXMocGF0aD1Ob25lLCBwcmVmaXg9JycsIG9uZXJyb3I9Tm9uZSk6Ci0gICAgIiIiWWllbGRzIChtb2R1bGVfZmluZGVyLCBuYW1lLCBpc3BrZykgZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5CisgICAgIiIiWWllbGRzIE1vZHVsZUluZm8gZm9yIGFsbCBtb2R1bGVzIHJlY3Vyc2l2ZWx5CiAgICAgb24gcGF0aCwgb3IsIGlmIHBhdGggaXMgTm9uZSwgYWxsIGFjY2Vzc2libGUgbW9kdWxlcy4KIAogICAgICdwYXRoJyBzaG91bGQgYmUgZWl0aGVyIE5vbmUgb3IgYSBsaXN0IG9mIHBhdGhzIHRvIGxvb2sgZm9yCkBAIC03OCwzMSArODQsMzEgQEAKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIG1bcF0gPSBUcnVlCiAKLSAgICBmb3IgaW1wb3J0ZXIsIG5hbWUsIGlzcGtnIGluIGl0ZXJfbW9kdWxlcyhwYXRoLCBwcmVmaXgpOgotICAgICAgICB5aWVsZCBpbXBvcnRlciwgbmFtZSwgaXNwa2cKKyAgICBmb3IgaW5mbyBpbiBpdGVyX21vZHVsZXMocGF0aCwgcHJlZml4KToKKyAgICAgICAgeWllbGQgaW5mbwogCi0gICAgICAgIGlmIGlzcGtnOgorICAgICAgICBpZiBpbmZvLmlzcGtnOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIF9faW1wb3J0X18obmFtZSkKKyAgICAgICAgICAgICAgICBfX2ltcG9ydF9fKGluZm8ubmFtZSkKICAgICAgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoaW5mby5uYW1lKQogICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKICAgICAgICAgICAgICAgICBpZiBvbmVycm9yIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgICAgICAgICBvbmVycm9yKG5hbWUpCisgICAgICAgICAgICAgICAgICAgIG9uZXJyb3IoaW5mby5uYW1lKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW25hbWVdLCAnX19wYXRoX18nLCBOb25lKSBvciBbXQorICAgICAgICAgICAgICAgIHBhdGggPSBnZXRhdHRyKHN5cy5tb2R1bGVzW2luZm8ubmFtZV0sICdfX3BhdGhfXycsIE5vbmUpIG9yIFtdCiAKICAgICAgICAgICAgICAgICAjIGRvbid0IHRyYXZlcnNlIHBhdGggaXRlbXMgd2UndmUgc2VlbiBiZWZvcmUKICAgICAgICAgICAgICAgICBwYXRoID0gW3AgZm9yIHAgaW4gcGF0aCBpZiBub3Qgc2VlbihwKV0KIAotICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gd2Fsa19wYWNrYWdlcyhwYXRoLCBuYW1lKycuJywgb25lcnJvcikKKyAgICAgICAgICAgICAgICB5aWVsZCBmcm9tIHdhbGtfcGFja2FnZXMocGF0aCwgaW5mby5uYW1lKycuJywgb25lcnJvcikKIAogCiBkZWYgaXRlcl9tb2R1bGVzKHBhdGg9Tm9uZSwgcHJlZml4PScnKToKLSAgICAiIiJZaWVsZHMgKG1vZHVsZV9maW5kZXIsIG5hbWUsIGlzcGtnKSBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gcGF0aCwKKyAgICAiIiJZaWVsZHMgTW9kdWxlSW5mbyBmb3IgYWxsIHN1Ym1vZHVsZXMgb24gcGF0aCwKICAgICBvciwgaWYgcGF0aCBpcyBOb25lLCBhbGwgdG9wLWxldmVsIG1vZHVsZXMgb24gc3lzLnBhdGguCiAKICAgICAncGF0aCcgc2hvdWxkIGJlIGVpdGhlciBOb25lIG9yIGEgbGlzdCBvZiBwYXRocyB0byBsb29rIGZvcgpAQCAtMTExLDcgKzExNyw2IEBACiAgICAgJ3ByZWZpeCcgaXMgYSBzdHJpbmcgdG8gb3V0cHV0IG9uIHRoZSBmcm9udCBvZiBldmVyeSBtb2R1bGUgbmFtZQogICAgIG9uIG91dHB1dC4KICAgICAiIiIKLQogICAgIGlmIHBhdGggaXMgTm9uZToKICAgICAgICAgaW1wb3J0ZXJzID0gaXRlcl9pbXBvcnRlcnMoKQogICAgIGVsc2U6CkBAIC0xMjIsNyArMTI3LDcgQEAKICAgICAgICAgZm9yIG5hbWUsIGlzcGtnIGluIGl0ZXJfaW1wb3J0ZXJfbW9kdWxlcyhpLCBwcmVmaXgpOgogICAgICAgICAgICAgaWYgbmFtZSBub3QgaW4geWllbGRlZDoKICAgICAgICAgICAgICAgICB5aWVsZGVkW25hbWVdID0gMQotICAgICAgICAgICAgICAgIHlpZWxkIGksIG5hbWUsIGlzcGtnCisgICAgICAgICAgICAgICAgeWllbGQgTW9kdWxlSW5mbyhpLCBuYW1lLCBpc3BrZykKIAogCiBAc2ltcGxlZ2VuZXJpYwpAQCAtMTgwLDcgKzE4NSw3IEBACiBkZWYgX2ltcG9ydF9pbXAoKToKICAgICBnbG9iYWwgaW1wCiAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgICAgICBpbXAgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgnaW1wJykKIAogY2xhc3MgSW1wSW1wb3J0ZXI6CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1haXg0L0lOLnB5IGIvTGliL3BsYXQtYWl4NC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDNmOGYyMy4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1haXg0L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTY1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXQvbmguaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hpbmUuaAotTElUVExFX0VORElBTiA9IDEyMzQKLUJJR19FTkRJQU4gPSA0MzIxCi1QRFBfRU5ESUFOID0gMzQxMgotQllURV9PUkRFUiA9IEJJR19FTkRJQU4KLURFRkFVTFRfR1BSID0gMHhERUFEQkVFRgotTVNSX0VFID0gMHg4MDAwCi1NU1JfUFIgPSAweDQwMDAKLU1TUl9GUCA9IDB4MjAwMAotTVNSX01FID0gMHgxMDAwCi1NU1JfRkUgPSAweDA4MDAKLU1TUl9GRTAgPSAweDA4MDAKLU1TUl9TRSA9IDB4MDQwMAotTVNSX0JFID0gMHgwMjAwCi1NU1JfSUUgPSAweDAxMDAKLU1TUl9GRTEgPSAweDAxMDAKLU1TUl9BTCA9IDB4MDA4MAotTVNSX0lQID0gMHgwMDQwCi1NU1JfSVIgPSAweDAwMjAKLU1TUl9EUiA9IDB4MDAxMAotTVNSX1BNID0gMHgwMDA0Ci1ERUZBVUxUX01TUiA9IChNU1JfRUUgfCBNU1JfTUUgfCBNU1JfQUwgfCBNU1JfSVIgfCBNU1JfRFIpCi1ERUZBVUxUX1VTRVJfTVNSID0gKERFRkFVTFRfTVNSIHwgTVNSX1BSKQotQ1JfTFQgPSAweDgwMDAwMDAwCi1DUl9HVCA9IDB4NDAwMDAwMDAKLUNSX0VRID0gMHgyMDAwMDAwMAotQ1JfU08gPSAweDEwMDAwMDAwCi1DUl9GWCA9IDB4MDgwMDAwMDAKLUNSX0ZFWCA9IDB4MDQwMDAwMDAKLUNSX1ZYID0gMHgwMjAwMDAwMAotQ1JfT1ggPSAweDAxMDAwMDAwCi1YRVJfU08gPSAweDgwMDAwMDAwCi1YRVJfT1YgPSAweDQwMDAwMDAwCi1YRVJfQ0EgPSAweDIwMDAwMDAwCi1kZWYgWEVSX0NPTVBfQllURSh4ZXIpOiByZXR1cm4gKCh4ZXIgPj4gOCkgJiAweDAwMDAwMEZGKQotCi1kZWYgWEVSX0xFTkdUSCh4ZXIpOiByZXR1cm4gKHhlciAmIDB4MDAwMDAwN0YpCi0KLURTSVNSX0lPID0gMHg4MDAwMDAwMAotRFNJU1JfUEZUID0gMHg0MDAwMDAwMAotRFNJU1JfTE9DSyA9IDB4MjAwMDAwMDAKLURTSVNSX0ZQSU8gPSAweDEwMDAwMDAwCi1EU0lTUl9QUk9UID0gMHgwODAwMDAwMAotRFNJU1JfTE9PUCA9IDB4MDQwMDAwMDAKLURTSVNSX0RSU1QgPSAweDA0MDAwMDAwCi1EU0lTUl9TVCA9IDB4MDIwMDAwMDAKLURTSVNSX1NFR0IgPSAweDAxMDAwMDAwCi1EU0lTUl9EQUJSID0gMHgwMDQwMDAwMAotRFNJU1JfRUFSID0gMHgwMDEwMDAwMAotU1JSX0lTX1BGVCA9IDB4NDAwMDAwMDAKLVNSUl9JU19JU1BFQyA9IDB4MjAwMDAwMDAKLVNSUl9JU19JSU8gPSAweDEwMDAwMDAwCi1TUlJfSVNfR1VBUkQgPSAweDEwMDAwMDAwCi1TUlJfSVNfUFJPVCA9IDB4MDgwMDAwMDAKLVNSUl9JU19MT09QID0gMHgwNDAwMDAwMAotU1JSX1BSX0ZQRU4gPSAweDAwMTAwMDAwCi1TUlJfUFJfSU5WQUwgPSAweDAwMDgwMDAwCi1TUlJfUFJfUFJJViA9IDB4MDAwNDAwMDAKLVNSUl9QUl9UUkFQID0gMHgwMDAyMDAwMAotU1JSX1BSX0lNUFJFID0gMHgwMDAxMDAwMAotZGVmIEJVSURfN0ZfU1JWQUwocmFkZHIpOiByZXR1cm4gKDB4ODdGMDAwMDAgfCAoKCh1aW50KShyYWRkcikpID4+IDI4KSkKLQotQlRfMjU2TSA9IDB4MUZGQwotQlRfMTI4TSA9IDB4MEZGQwotQlRfNjRNID0gMHgwN0ZDCi1CVF8zMk0gPSAweDAzRkMKLUJUXzE2TSA9IDB4MDFGQwotQlRfOE0gPSAweDAwRkMKLUJUXzRNID0gMHgwMDdDCi1CVF8yTSA9IDB4MDAzQwotQlRfMU0gPSAweDAwMUMKLUJUXzUxMksgPSAweDAwMEMKLUJUXzI1NksgPSAweDAwMDQKLUJUXzEyOEsgPSAweDAwMDAKLUJUX05PQUNDRVNTID0gMHgwCi1CVF9SRE9OTFkgPSAweDEKLUJUX1dSSVRFID0gMHgyCi1CVF9WUyA9IDB4MgotQlRfVlAgPSAweDEKLWRlZiBCQVRfRVNFRyhkYmF0dSk6IHJldHVybiAoKCh1aW50KShkYmF0dSkgPj4gMjgpKQotCi1NSU5fQkFUX1NJWkUgPSAweDAwMDIwMDAwCi1NQVhfQkFUX1NJWkUgPSAweDEwMDAwMDAwCi1kZWYgbnRvaGwoeCk6IHJldHVybiAoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ubCh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiAoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19MT0NBTCA9IDYzCi1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX0JJUCA9IDB4NTMKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9USU1FU0VSVkVSID0gMzcKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX01BWF9MT0NBTF9HUk9VUCA9IDB4ZTAwMDAwZmYKLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9BTlkgPSAweDAwMDAwMDAwCi1JTkFERFJfQlJPQURDQVNUID0gMHhmZmZmZmZmZgotSU5BRERSX0xPT1BCQUNLID0gMHg3ZjAwMDAwMQotSU5BRERSX05PTkUgPSAweGZmZmZmZmZmCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1haXg0L3JlZ2VuIGIvTGliL3BsYXQtYWl4NC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNTdhNzFjNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1haXg0L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0jISAvYmluL3NoCi1jYXNlIGB1bmFtZSAtc3ZgIGluCi0nQUlYIDQnKikgIDs7Ci0qKSAgICAgIGVjaG8gUHJvYmFibHkgbm90IG9uIGFuIEFJWCA0IHN5c3RlbSAxPiYyCi0gICAgICAgIGV4aXQgMTs7Ci1lc2FjCi1zZXQgLXYKLWgycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1kYXJ3aW4vSU4ucHkgYi9MaWIvcGxhdC1kYXJ3aW4vSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiNmJlMzMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZGFyd2luL0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsNjYyICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYXBwbGVhcGlvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuIHByb3RvcwotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAjeAotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYXR0cmlidXRlX18oeCk6IHJldHVybgotCi1kZWYgX19DT1BZUklHSFQocyk6IHJldHVybiBfX0lEU1RSSU5HKGNvcHlyaWdodCxzKQotCi1kZWYgX19SQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcocmNzaWQscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhzY2NzaWQscykKLQotZGVmIF9fUFJPSkVDVF9WRVJTSU9OKHMpOiByZXR1cm4gX19JRFNUUklORyhwcm9qZWN0X3ZlcnNpb24scykKLQotX19EQVJXSU5fVU5JWDAzID0gMQotX19EQVJXSU5fVU5JWDAzID0gMAotX19EQVJXSU5fVU5JWDAzID0gMAotX19EQVJXSU5fVU5JWDAzID0gMQotX19EQVJXSU5fNjRfQklUX0lOT19UID0gMQotX19EQVJXSU5fNjRfQklUX0lOT19UID0gMAotX19EQVJXSU5fNjRfQklUX0lOT19UID0gMAotX19EQVJXSU5fTk9OX0NBTkNFTEFCTEUgPSAwCi1fX0RBUldJTl9WRVJTXzEwNTAgPSAxCi1fX0RBUldJTl9WRVJTXzEwNTAgPSAwCi1fX0RBUldJTl9TVUZfVU5JWDAzID0gIiRVTklYMjAwMyIKLV9fREFSV0lOX1NVRl9VTklYMDNfU0VUID0gMQotX19EQVJXSU5fU1VGX1VOSVgwM19TRVQgPSAwCi1fX0RBUldJTl9TVUZfNjRfQklUX0lOT19UID0gIiRJTk9ERTY0IgotX19EQVJXSU5fU1VGX05PTl9DQU5DRUxBQkxFID0gIiROT0NBTkNFTCIKLV9fREFSV0lOX1NVRl8xMDUwID0gIiQxMDUwIgotX19EQVJXSU5fU1VGX1VOSVgwM19TRVQgPSAwCi1fX0RBUldJTl9TVUZfRVhUU04gPSAiJERBUldJTl9FWFRTTiIKLV9fREFSV0lOX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDAKLWRlZiBfX0RBUldJTl9MREJMX0NPTVBBVCh4KTogcmV0dXJuCi0KLWRlZiBfX0RBUldJTl9MREJMX0NPTVBBVDIoeCk6IHJldHVybgotCi1fX0RBUldJTl9MT05HX0RPVUJMRV9JU19ET1VCTEUgPSAxCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQoeCk6IHJldHVybgotCi1kZWYgX19EQVJXSU5fTERCTF9DT01QQVQyKHgpOiByZXR1cm4KLQotX19EQVJXSU5fTE9OR19ET1VCTEVfSVNfRE9VQkxFID0gMAotX0RBUldJTl9GRUFUVVJFX0xPTkdfRE9VQkxFX0lTX0RPVUJMRSA9IDEKLV9EQVJXSU5fRkVBVFVSRV9VTklYX0NPTkZPUk1BTkNFID0gMwotX0RBUldJTl9GRUFUVVJFXzY0X0JJVF9JTk9ERSA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvX3R5cGVzLmgKLV9fUFRIUkVBRF9TSVpFX18gPSAxMTY4Ci1fX1BUSFJFQURfQVRUUl9TSVpFX18gPSA1NgotX19QVEhSRUFEX01VVEVYQVRUUl9TSVpFX18gPSA4Ci1fX1BUSFJFQURfTVVURVhfU0laRV9fID0gNTYKLV9fUFRIUkVBRF9DT05EQVRUUl9TSVpFX18gPSA4Ci1fX1BUSFJFQURfQ09ORF9TSVpFX18gPSA0MAotX19QVEhSRUFEX09OQ0VfU0laRV9fID0gOAotX19QVEhSRUFEX1JXTE9DS19TSVpFX18gPSAxOTIKLV9fUFRIUkVBRF9SV0xPQ0tBVFRSX1NJWkVfXyA9IDE2Ci1fX1BUSFJFQURfU0laRV9fID0gNTk2Ci1fX1BUSFJFQURfQVRUUl9TSVpFX18gPSAzNgotX19QVEhSRUFEX01VVEVYQVRUUl9TSVpFX18gPSA4Ci1fX1BUSFJFQURfTVVURVhfU0laRV9fID0gNDAKLV9fUFRIUkVBRF9DT05EQVRUUl9TSVpFX18gPSA0Ci1fX1BUSFJFQURfQ09ORF9TSVpFX18gPSAyNAotX19QVEhSRUFEX09OQ0VfU0laRV9fID0gNAotX19QVEhSRUFEX1JXTE9DS19TSVpFX18gPSAxMjQKLV9fUFRIUkVBRF9SV0xPQ0tBVFRSX1NJWkVfXyA9IDEyCi1fX0RBUldJTl9OVUxMID0gMAotCi0jIEluY2x1ZGVkIGZyb20gc3RkaW50LmgKLV9fV09SRFNJWkUgPSA2NAotX19XT1JEU0laRSA9IDMyCi1JTlQ4X01BWCA9IDEyNwotSU5UMTZfTUFYID0gMzI3NjcKLUlOVDMyX01BWCA9IDIxNDc0ODM2NDcKLUlOVDhfTUlOID0gLTEyOAotSU5UMTZfTUlOID0gLTMyNzY4Ci1JTlQzMl9NSU4gPSAoLUlOVDMyX01BWC0xKQotVUlOVDhfTUFYID0gMjU1Ci1VSU5UMTZfTUFYID0gNjU1MzUKLUlOVF9MRUFTVDhfTUlOID0gSU5UOF9NSU4KLUlOVF9MRUFTVDE2X01JTiA9IElOVDE2X01JTgotSU5UX0xFQVNUMzJfTUlOID0gSU5UMzJfTUlOCi1JTlRfTEVBU1Q4X01BWCA9IElOVDhfTUFYCi1JTlRfTEVBU1QxNl9NQVggPSBJTlQxNl9NQVgKLUlOVF9MRUFTVDMyX01BWCA9IElOVDMyX01BWAotVUlOVF9MRUFTVDhfTUFYID0gVUlOVDhfTUFYCi1VSU5UX0xFQVNUMTZfTUFYID0gVUlOVDE2X01BWAotSU5UX0ZBU1Q4X01JTiA9IElOVDhfTUlOCi1JTlRfRkFTVDE2X01JTiA9IElOVDE2X01JTgotSU5UX0ZBU1QzMl9NSU4gPSBJTlQzMl9NSU4KLUlOVF9GQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0ZBU1QxNl9NQVggPSBJTlQxNl9NQVgKLUlOVF9GQVNUMzJfTUFYID0gSU5UMzJfTUFYCi1VSU5UX0ZBU1Q4X01BWCA9IFVJTlQ4X01BWAotVUlOVF9GQVNUMTZfTUFYID0gVUlOVDE2X01BWAotSU5UUFRSX01JTiA9IElOVDMyX01JTgotSU5UUFRSX01BWCA9IElOVDMyX01BWAotUFRSRElGRl9NSU4gPSBJTlQzMl9NSU4KLVBUUkRJRkZfTUFYID0gSU5UMzJfTUFYCi1XQ0hBUl9NQVggPSAweDdmZmZmZmZmCi1XQ0hBUl9NSU4gPSAwCi1XQ0hBUl9NSU4gPSAoLVdDSEFSX01BWC0xKQotV0lOVF9NSU4gPSBJTlQzMl9NSU4KLVdJTlRfTUFYID0gSU5UMzJfTUFYCi1TSUdfQVRPTUlDX01JTiA9IElOVDMyX01JTgotU0lHX0FUT01JQ19NQVggPSBJTlQzMl9NQVgKLWRlZiBJTlQ4X0Modik6IHJldHVybiAodikKLQotZGVmIElOVDE2X0Modik6IHJldHVybiAodikKLQotZGVmIElOVDMyX0Modik6IHJldHVybiAodikKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NvY2tldC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL19wYXJhbS5oCi1TT0NLX1NUUkVBTSA9IDEKLVNPQ0tfREdSQU0gPSAyCi1TT0NLX1JBVyA9IDMKLVNPQ0tfUkRNID0gNAotU09DS19TRVFQQUNLRVQgPSA1Ci1TT19ERUJVRyA9IDB4MDAwMQotU09fQUNDRVBUQ09OTiA9IDB4MDAwMgotU09fUkVVU0VBRERSID0gMHgwMDA0Ci1TT19LRUVQQUxJVkUgPSAweDAwMDgKLVNPX0RPTlRST1VURSA9IDB4MDAxMAotU09fQlJPQURDQVNUID0gMHgwMDIwCi1TT19VU0VMT09QQkFDSyA9IDB4MDA0MAotU09fTElOR0VSID0gMHgwMDgwCi1TT19MSU5HRVIgPSAweDEwODAKLVNPX09PQklOTElORSA9IDB4MDEwMAotU09fUkVVU0VQT1JUID0gMHgwMjAwCi1TT19USU1FU1RBTVAgPSAweDA0MDAKLVNPX0FDQ0VQVEZJTFRFUiA9IDB4MTAwMAotU09fRE9OVFRSVU5DID0gMHgyMDAwCi1TT19XQU5UTU9SRSA9IDB4NDAwMAotU09fV0FOVE9PQkZMQUcgPSAweDgwMDAKLVNPX1NOREJVRiA9IDB4MTAwMQotU09fUkNWQlVGID0gMHgxMDAyCi1TT19TTkRMT1dBVCA9IDB4MTAwMwotU09fUkNWTE9XQVQgPSAweDEwMDQKLVNPX1NORFRJTUVPID0gMHgxMDA1Ci1TT19SQ1ZUSU1FTyA9IDB4MTAwNgotU09fRVJST1IgPSAweDEwMDcKLVNPX1RZUEUgPSAweDEwMDgKLVNPX05SRUFEID0gMHgxMDIwCi1TT19OS0UgPSAweDEwMjEKLVNPX05PU0lHUElQRSA9IDB4MTAyMgotU09fTk9BRERSRVJSID0gMHgxMDIzCi1TT19OV1JJVEUgPSAweDEwMjQKLVNPX1JFVVNFU0hBUkVVSUQgPSAweDEwMjUKLVNPX05PVElGWUNPTkZMSUNUID0gMHgxMDI2Ci1TT19MSU5HRVJfU0VDID0gMHgxMDgwCi1TT19SRVNUUklDVElPTlMgPSAweDEwODEKLVNPX1JFU1RSSUNUX0RFTllJTiA9IDB4MDAwMDAwMDEKLVNPX1JFU1RSSUNUX0RFTllPVVQgPSAweDAwMDAwMDAyCi1TT19SRVNUUklDVF9ERU5ZU0VUID0gKC0yMTQ3NDgzNjQ4KQotU09fTEFCRUwgPSAweDEwMTAKLVNPX1BFRVJMQUJFTCA9IDB4MTAxMQotU09MX1NPQ0tFVCA9IDB4ZmZmZgotQUZfVU5TUEVDID0gMAotQUZfVU5JWCA9IDEKLUFGX0xPQ0FMID0gQUZfVU5JWAotQUZfSU5FVCA9IDIKLUFGX0lNUExJTksgPSAzCi1BRl9QVVAgPSA0Ci1BRl9DSEFPUyA9IDUKLUFGX05TID0gNgotQUZfSVNPID0gNwotQUZfT1NJID0gQUZfSVNPCi1BRl9FQ01BID0gOAotQUZfREFUQUtJVCA9IDkKLUFGX0NDSVRUID0gMTAKLUFGX1NOQSA9IDExCi1BRl9ERUNuZXQgPSAxMgotQUZfRExJID0gMTMKLUFGX0xBVCA9IDE0Ci1BRl9IWUxJTksgPSAxNQotQUZfQVBQTEVUQUxLID0gMTYKLUFGX1JPVVRFID0gMTcKLUFGX0xJTksgPSAxOAotcHNldWRvX0FGX1hUUCA9IDE5Ci1BRl9DT0lQID0gMjAKLUFGX0NOVCA9IDIxCi1wc2V1ZG9fQUZfUlRJUCA9IDIyCi1BRl9JUFggPSAyMwotQUZfU0lQID0gMjQKLXBzZXVkb19BRl9QSVAgPSAyNQotQUZfTkRSViA9IDI3Ci1BRl9JU0ROID0gMjgKLUFGX0UxNjQgPSBBRl9JU0ROCi1wc2V1ZG9fQUZfS0VZID0gMjkKLUFGX0lORVQ2ID0gMzAKLUFGX05BVE0gPSAzMQotQUZfU1lTVEVNID0gMzIKLUFGX05FVEJJT1MgPSAzMwotQUZfUFBQID0gMzQKLUFGX0FUTSA9IDMwCi1wc2V1ZG9fQUZfSERSQ01QTFQgPSAzNQotQUZfUkVTRVJWRURfMzYgPSAzNgotQUZfTkVUR1JBUEggPSAzMgotQUZfTUFYID0gMzcKLVNPQ0tfTUFYQUREUkxFTiA9IDI1NQotX1NTX01BWFNJWkUgPSAxMjgKLVBGX1VOU1BFQyA9IEFGX1VOU1BFQwotUEZfTE9DQUwgPSBBRl9MT0NBTAotUEZfVU5JWCA9IFBGX0xPQ0FMCi1QRl9JTkVUID0gQUZfSU5FVAotUEZfSU1QTElOSyA9IEFGX0lNUExJTksKLVBGX1BVUCA9IEFGX1BVUAotUEZfQ0hBT1MgPSBBRl9DSEFPUwotUEZfTlMgPSBBRl9OUwotUEZfSVNPID0gQUZfSVNPCi1QRl9PU0kgPSBBRl9JU08KLVBGX0VDTUEgPSBBRl9FQ01BCi1QRl9EQVRBS0lUID0gQUZfREFUQUtJVAotUEZfQ0NJVFQgPSBBRl9DQ0lUVAotUEZfU05BID0gQUZfU05BCi1QRl9ERUNuZXQgPSBBRl9ERUNuZXQKLVBGX0RMSSA9IEFGX0RMSQotUEZfTEFUID0gQUZfTEFUCi1QRl9IWUxJTksgPSBBRl9IWUxJTksKLVBGX0FQUExFVEFMSyA9IEFGX0FQUExFVEFMSwotUEZfUk9VVEUgPSBBRl9ST1VURQotUEZfTElOSyA9IEFGX0xJTksKLVBGX1hUUCA9IHBzZXVkb19BRl9YVFAKLVBGX0NPSVAgPSBBRl9DT0lQCi1QRl9DTlQgPSBBRl9DTlQKLVBGX1NJUCA9IEFGX1NJUAotUEZfSVBYID0gQUZfSVBYCi1QRl9SVElQID0gcHNldWRvX0FGX1JUSVAKLVBGX1BJUCA9IHBzZXVkb19BRl9QSVAKLVBGX05EUlYgPSBBRl9ORFJWCi1QRl9JU0ROID0gQUZfSVNETgotUEZfS0VZID0gcHNldWRvX0FGX0tFWQotUEZfSU5FVDYgPSBBRl9JTkVUNgotUEZfTkFUTSA9IEFGX05BVE0KLVBGX1NZU1RFTSA9IEFGX1NZU1RFTQotUEZfTkVUQklPUyA9IEFGX05FVEJJT1MKLVBGX1BQUCA9IEFGX1BQUAotUEZfUkVTRVJWRURfMzYgPSBBRl9SRVNFUlZFRF8zNgotUEZfQVRNID0gQUZfQVRNCi1QRl9ORVRHUkFQSCA9IEFGX05FVEdSQVBICi1QRl9NQVggPSBBRl9NQVgKLU5FVF9NQVhJRCA9IEFGX01BWAotTkVUX1JUX0RVTVAgPSAxCi1ORVRfUlRfRkxBR1MgPSAyCi1ORVRfUlRfSUZMSVNUID0gMwotTkVUX1JUX1NUQVQgPSA0Ci1ORVRfUlRfVFJBU0ggPSA1Ci1ORVRfUlRfSUZMSVNUMiA9IDYKLU5FVF9SVF9EVU1QMiA9IDcKLU5FVF9SVF9NQVhJRCA9IDgKLVNPTUFYQ09OTiA9IDEyOAotTVNHX09PQiA9IDB4MQotTVNHX1BFRUsgPSAweDIKLU1TR19ET05UUk9VVEUgPSAweDQKLU1TR19FT1IgPSAweDgKLU1TR19UUlVOQyA9IDB4MTAKLU1TR19DVFJVTkMgPSAweDIwCi1NU0dfV0FJVEFMTCA9IDB4NDAKLU1TR19ET05UV0FJVCA9IDB4ODAKLU1TR19FT0YgPSAweDEwMAotTVNHX1dBSVRTVFJFQU0gPSAweDIwMAotTVNHX0ZMVVNIID0gMHg0MDAKLU1TR19IT0xEID0gMHg4MDAKLU1TR19TRU5EID0gMHgxMDAwCi1NU0dfSEFWRU1PUkUgPSAweDIwMDAKLU1TR19SQ1ZNT1JFID0gMHg0MDAwCi1NU0dfTkVFRFNBID0gMHgxMDAwMAotQ01HUk9VUF9NQVggPSAxNgotU0NNX1JJR0hUUyA9IDB4MDEKLVNDTV9USU1FU1RBTVAgPSAweDAyCi1TQ01fQ1JFRFMgPSAweDAzCi1TSFVUX1JEID0gMAotU0hVVF9XUiA9IDEKLVNIVVRfUkRXUiA9IDIKLQotIyBJbmNsdWRlZCBmcm9tIG1hY2hpbmUvZW5kaWFuLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fZW5kaWFuLmgKLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1kZWYgTlRPSEwoeCk6IHJldHVybiAoeCkKLQotZGVmIE5UT0hTKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBIVE9OTCh4KTogcmV0dXJuICh4KQotCi1kZWYgSFRPTlMoeCk6IHJldHVybiAoeCkKLQotCi0jIEluY2x1ZGVkIGZyb20gbGlia2Vybi9fT1NCeXRlT3JkZXIuaAotZGVmIF9fREFSV0lOX09TU3dhcENvbnN0SW50MTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBDb25zdEludDMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwQ29uc3RJbnQ2NCh4KTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gbGlia2Vybi9pMzg2L19PU0J5dGVPcmRlci5oCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KTogcmV0dXJuIFwKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDY0KHgpOiByZXR1cm4gXAotCi1kZWYgX19EQVJXSU5fT1NTd2FwSW50MTYoeCk6IHJldHVybiBfT1NTd2FwSW50MTYoeCkKLQotZGVmIF9fREFSV0lOX09TU3dhcEludDMyKHgpOiByZXR1cm4gX09TU3dhcEludDMyKHgpCi0KLWRlZiBfX0RBUldJTl9PU1N3YXBJbnQ2NCh4KTogcmV0dXJuIF9PU1N3YXBJbnQ2NCh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiBfX0RBUldJTl9PU1N3YXBJbnQxNih4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX0RBUldJTl9PU1N3YXBJbnQxNih4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiBfX0RBUldJTl9PU1N3YXBJbnQzMih4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fRElWRVJUID0gMjU0Ci1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotX19EQVJXSU5fSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1JFU0VSVkVEID0gX19EQVJXSU5fSVBQT1JUX1JFU0VSVkVECi1JUFBPUlRfVVNFUlJFU0VSVkVEID0gNTAwMAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1JTkFERFJfTk9ORSA9ICgtMSkKLWRlZiBJTl9MSU5LTE9DQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgSU5fQ0xBU1NCX05FVCkgPT0gSU5fTElOS0xPQ0FMTkVUTlVNKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfU1RSSVBIRFIgPSAyMwotSVBfUkVDVlRUTCA9IDI0Ci1JUF9GV19BREQgPSA0MAotSVBfRldfREVMID0gNDEKLUlQX0ZXX0ZMVVNIID0gNDIKLUlQX0ZXX1pFUk8gPSA0MwotSVBfRldfR0VUID0gNDQKLUlQX0ZXX1JFU0VUTE9HID0gNDUKLUlQX09MRF9GV19BREQgPSA1MAotSVBfT0xEX0ZXX0RFTCA9IDUxCi1JUF9PTERfRldfRkxVU0ggPSA1MgotSVBfT0xEX0ZXX1pFUk8gPSA1MwotSVBfT0xEX0ZXX0dFVCA9IDU0Ci1JUF9OQVRfX1hYWCA9IDU1Ci1JUF9PTERfRldfUkVTRVRMT0cgPSA1NgotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfVFJBRkZJQ19NR1RfQkFDS0dST1VORCA9IDY1Ci1JUF9GT1JDRV9PVVRfSUZQID0gNjkKLVRSQUZGSUNfTUdUX1NPX0JBQ0tHUk9VTkQgPSAweDAwMDEKLVRSQUZGSUNfTUdUX1NPX0JHX1NVUFBSRVNTRUQgPSAweDAwMDIKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICIyMDAxMDUyOC9hcHBsZS1kYXJ3aW4iCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfUEtUSU5GTyA9IDE5Ci1JUFY2X0hPUExJTUlUID0gMjAKLUlQVjZfTkVYVEhPUCA9IDIxCi1JUFY2X0hPUE9QVFMgPSAyMgotSVBWNl9EU1RPUFRTID0gMjMKLUlQVjZfUlRIRFIgPSAyNAotSVBWNl9QS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9WNk9OTFkgPSAyNwotSVBWNl9CSU5EVjZPTkxZID0gSVBWNl9WNk9OTFkKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX01BWElEID0gNDIKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWRhcndpbi9yZWdlbiBiL0xpYi9wbGF0LWRhcndpbi9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYTIwY2RjMS4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1kYXJ3aW4vcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uJEVYRSAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkNC9JTi5weSBiL0xpYi9wbGF0LWZyZWVic2Q0L0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2EyNDE4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q0L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzU1ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19TVCA9IDcKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QSUdQID0gOQotSVBQUk9UT19SQ0NNT04gPSAxMAotSVBQUk9UT19OVlBJSSA9IDExCi1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX0FSR1VTID0gMTMKLUlQUFJPVE9fRU1DT04gPSAxNAotSVBQUk9UT19YTkVUID0gMTUKLUlQUFJPVE9fQ0hBT1MgPSAxNgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19NVVggPSAxOAotSVBQUk9UT19NRUFTID0gMTkKLUlQUFJPVE9fSE1QID0gMjAKLUlQUFJPVE9fUFJNID0gMjEKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFJVTksxID0gMjMKLUlQUFJPVE9fVFJVTksyID0gMjQKLUlQUFJPVE9fTEVBRjEgPSAyNQotSVBQUk9UT19MRUFGMiA9IDI2Ci1JUFBST1RPX1JEUCA9IDI3Ci1JUFBST1RPX0lSVFAgPSAyOAotSVBQUk9UT19UUCA9IDI5Ci1JUFBST1RPX0JMVCA9IDMwCi1JUFBST1RPX05TUCA9IDMxCi1JUFBST1RPX0lOUCA9IDMyCi1JUFBST1RPX1NFUCA9IDMzCi1JUFBST1RPXzNQQyA9IDM0Ci1JUFBST1RPX0lEUFIgPSAzNQotSVBQUk9UT19YVFAgPSAzNgotSVBQUk9UT19ERFAgPSAzNwotSVBQUk9UT19DTVRQID0gMzgKLUlQUFJPVE9fVFBYWCA9IDM5Ci1JUFBST1RPX0lMID0gNDAKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1NEUlAgPSA0MgotSVBQUk9UT19ST1VUSU5HID0gNDMKLUlQUFJPVE9fRlJBR01FTlQgPSA0NAotSVBQUk9UT19JRFJQID0gNDUKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0dSRSA9IDQ3Ci1JUFBST1RPX01IUlAgPSA0OAotSVBQUk9UT19CSEEgPSA0OQotSVBQUk9UT19FU1AgPSA1MAotSVBQUk9UT19BSCA9IDUxCi1JUFBST1RPX0lOTFNQID0gNTIKLUlQUFJPVE9fU1dJUEUgPSA1MwotSVBQUk9UT19OSFJQID0gNTQKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19QR00gPSAxMTMKLUlQUFJPVE9fRElWRVJUID0gMjU0Ci1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotZGVmIElOX0NMQVNTQShpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweDgwMDAwMDAwKSA9PSAwKQotCi1JTl9DTEFTU0FfTkVUID0gMHhmZjAwMDAwMAotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhjMDAwMDAwMCkgPT0gMHg4MDAwMDAwMCkKLQotSU5fQ0xBU1NCX05FVCA9IDB4ZmZmZjAwMDAKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhlMDAwMDAwMCkgPT0gMHhjMDAwMDAwMCkKLQotSU5fQ0xBU1NDX05FVCA9IDB4ZmZmZmZmMDAKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0NfSE9TVCA9IDB4MDAwMDAwZmYKLWRlZiBJTl9DTEFTU0QoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhlMDAwMDAwMCkKLQotSU5fQ0xBU1NEX05FVCA9IDB4ZjAwMDAwMDAKLUlOX0NMQVNTRF9OU0hJRlQgPSAyOAotSU5fQ0xBU1NEX0hPU1QgPSAweDBmZmZmZmZmCi1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLWRlZiBJTl9FWFBFUklNRU5UQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLUlOQUREUl9OT05FID0gMHhmZmZmZmZmZgotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlORVRfQUREUlNUUkxFTiA9IDE2Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9xdWV1ZS5oCi1kZWYgU0xJU1RfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFNMSVNUX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTVEFJTFFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBMSVNUX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgVEFJTFFfSEVBRF9JTklUSUFMSVpFUihoZWFkKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgQ0lSQ0xFUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotX19LQU1FX1ZFUlNJT04gPSAiMjAwMDA3MDEvRnJlZUJTRC1jdXJyZW50IgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4ZmYwMTAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweGZmMDIwMDAwCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweGZmZmYwMDAwCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLUlQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLUlQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfUEtUSU5GTyA9IDE5Ci1JUFY2X0hPUExJTUlUID0gMjAKLUlQVjZfTkVYVEhPUCA9IDIxCi1JUFY2X0hPUE9QVFMgPSAyMgotSVBWNl9EU1RPUFRTID0gMjMKLUlQVjZfUlRIRFIgPSAyNAotSVBWNl9QS1RPUFRJT05TID0gMjUKLUlQVjZfQ0hFQ0tTVU0gPSAyNgotSVBWNl9CSU5EVjZPTkxZID0gMjcKLUlQVjZfSVBTRUNfUE9MSUNZID0gMjgKLUlQVjZfRkFJVEggPSAyOQotSVBWNl9GV19BREQgPSAzMAotSVBWNl9GV19ERUwgPSAzMQotSVBWNl9GV19GTFVTSCA9IDMyCi1JUFY2X0ZXX1pFUk8gPSAzMwotSVBWNl9GV19HRVQgPSAzNAotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfQklORFY2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfTUFYSUQgPSAyOApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDQvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkNC9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNC9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDUvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkNS9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNhMjQxOC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNS9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDM1NSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19QSU0gPSAxMDMKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX0RJVkVSVCA9IDI1NAotSVBQUk9UT19SQVcgPSAyNTUKLUlQUFJPVE9fTUFYID0gMjU2Ci1JUFBST1RPX0RPTkUgPSAyNTcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1JUFBPUlRfSElGSVJTVEFVVE8gPSA0OTE1MgotSVBQT1JUX0hJTEFTVEFVVE8gPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEU1RBUlQgPSA2MDAKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcXVldWUuaAotZGVmIFNMSVNUX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBTTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFNUQUlMUV9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgU1RBSUxRX0VOVFJZKHR5cGUpOiByZXR1cm4gXAotCi1kZWYgTElTVF9IRUFEX0lOSVRJQUxJWkVSKGhlYWQpOiByZXR1cm4gXAotCi1kZWYgTElTVF9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIFRBSUxRX0hFQURfSU5JVElBTElaRVIoaGVhZCk6IHJldHVybiBcCi0KLWRlZiBUQUlMUV9FTlRSWSh0eXBlKTogcmV0dXJuIFwKLQotZGVmIENJUkNMRVFfRU5UUlkodHlwZSk6IHJldHVybiBcCi0KLV9fS0FNRV9WRVJTSU9OID0gIjIwMDAwNzAxL0ZyZWVCU0QtY3VycmVudCIKLUlQVjZQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBWNlBPUlRfQU5PTk1JTiA9IDQ5MTUyCi1JUFY2UE9SVF9BTk9OTUFYID0gNjU1MzUKLUlQVjZQT1JUX1JFU0VSVkVETUlOID0gNjAwCi1JUFY2UE9SVF9SRVNFUlZFRE1BWCA9IChJUFY2UE9SVF9SRVNFUlZFRC0xKQotSU5FVDZfQUREUlNUUkxFTiA9IDQ2Ci1JUFY2X0FERFJfSU5UMzJfT05FID0gMQotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDIKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweGZmMDEwMDAwCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHhmZjAyMDAwMAotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHhmZmZmMDAwMAotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ODBmZQotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4YzBmZQotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4MDJmZgotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2X1BLVElORk8gPSAxOQotSVBWNl9IT1BMSU1JVCA9IDIwCi1JUFY2X05FWFRIT1AgPSAyMQotSVBWNl9IT1BPUFRTID0gMjIKLUlQVjZfRFNUT1BUUyA9IDIzCi1JUFY2X1JUSERSID0gMjQKLUlQVjZfUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfQklORFY2T05MWSA9IDI3Ci1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX0JJTkRWNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX01BWElEID0gMjgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q1L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDUvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDUvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q2L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDYvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2MGJmODQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDYvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NTEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2xvbmdfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9sb25nKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfbG9uZ192YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KQotCi1kZWYgX19odG9ubCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19odG9ucyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1kZWYgX19udG9obCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19udG9ocyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1VEUCA9IDE3Ci1kZWYgaHRvbmwoeCk6IHJldHVybiBfX2h0b25sKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuIF9faHRvbnMoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19udG9obCh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiBfX250b2hzKHgpCi0KLUlQUFJPVE9fUkFXID0gMjU1Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX01PQklMRSA9IDU1Ci1JUFBST1RPX1RMU1AgPSA1NgotSVBQUk9UT19TS0lQID0gNTcKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1NDVFAgPSAxMzIKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX0NBUlAgPSAxMTIKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX1BGU1lOQyA9IDI0MAotSVBQUk9UT19PTERfRElWRVJUID0gMjU0Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBST1RPX0RJVkVSVCA9IDI1OAotSVBQUk9UT19TUEFDRVIgPSAzMjc2NwotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1JUFBPUlRfTUFYID0gNjU1MzUKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgMHg4MDAwMDAwMCkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9IDB4ZmYwMDAwMDAKLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX0hPU1QgPSAweDAwZmZmZmZmCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4YzAwMDAwMDApID09IDB4ODAwMDAwMDApCi0KLUlOX0NMQVNTQl9ORVQgPSAweGZmZmYwMDAwCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZTAwMDAwMDApID09IDB4YzAwMDAwMDApCi0KLUlOX0NMQVNTQ19ORVQgPSAweGZmZmZmZjAwCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZTAwMDAwMDApCi0KLUlOX0NMQVNTRF9ORVQgPSAweGYwMDAwMDAwCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmIDB4ZjAwMDAwMDApID09IDB4ZjAwMDAwMDApCi0KLWRlZiBJTl9CQURDTEFTUyhpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGYwMDAwMDAwKQotCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1NFTkRTUkNBRERSID0gSVBfUkVDVkRTVEFERFIKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSA5Ci1JUF9NVUxUSUNBU1RfVFRMID0gMTAKLUlQX01VTFRJQ0FTVF9MT09QID0gMTEKLUlQX0FERF9NRU1CRVJTSElQID0gMTIKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEzCi1JUF9NVUxUSUNBU1RfVklGID0gMTQKLUlQX1JTVlBfT04gPSAxNQotSVBfUlNWUF9PRkYgPSAxNgotSVBfUlNWUF9WSUZfT04gPSAxNwotSVBfUlNWUF9WSUZfT0ZGID0gMTgKLUlQX1BPUlRSQU5HRSA9IDE5Ci1JUF9SRUNWSUYgPSAyMAotSVBfSVBTRUNfUE9MSUNZID0gMjEKLUlQX0ZBSVRIID0gMjIKLUlQX09ORVNCQ0FTVCA9IDIzCi1JUF9GV19UQUJMRV9BREQgPSA0MAotSVBfRldfVEFCTEVfREVMID0gNDEKLUlQX0ZXX1RBQkxFX0ZMVVNIID0gNDIKLUlQX0ZXX1RBQkxFX0dFVFNJWkUgPSA0MwotSVBfRldfVEFCTEVfTElTVCA9IDQ0Ci1JUF9GV19BREQgPSA1MAotSVBfRldfREVMID0gNTEKLUlQX0ZXX0ZMVVNIID0gNTIKLUlQX0ZXX1pFUk8gPSA1MwotSVBfRldfR0VUID0gNTQKLUlQX0ZXX1JFU0VUTE9HID0gNTUKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0RFRkFVTFRfTVVMVElDQVNUX1RUTCA9IDEKLUlQX0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSAyMAotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4ZmYwMTAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweGZmMDIwMDAwCi1JUFY2X0FERFJfSU5UMzJfU01QID0gMHgwMDAwZmZmZgotSVBWNl9BRERSX0lOVDE2X1VMTCA9IDB4ZmU4MAotSVBWNl9BRERSX0lOVDE2X1VTTCA9IDB4ZmVjMAotSVBWNl9BRERSX0lOVDE2X01MTCA9IDB4ZmYwMgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDB4MDEwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAweDAyMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gMHgwMDAwMDFmZgotSVBWNl9BRERSX0lOVDMyX01MTCA9IDB4MDAwMDAyZmYKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweGZmZmYwMDAwCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9SVEhEUl9MT09TRSA9IDAKLUlQVjZfUlRIRFJfU1RSSUNUID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0hPUFMgPSAxCi1JUFY2X0RFRkFVTFRfTVVMVElDQVNUX0xPT1AgPSAxCi1JUFY2X1BPUlRSQU5HRV9ERUZBVUxUID0gMAotSVBWNl9QT1JUUkFOR0VfSElHSCA9IDEKLUlQVjZfUE9SVFJBTkdFX0xPVyA9IDIKLUlQVjZQUk9UT19NQVhJRCA9IChJUFBST1RPX1BJTSArIDEpCi1JUFY2Q1RMX0ZPUldBUkRJTkcgPSAxCi1JUFY2Q1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUFY2Q1RMX0RFRkhMSU0gPSAzCi1JUFY2Q1RMX0RFRk1UVSA9IDQKLUlQVjZDVExfRk9SV1NSQ1JUID0gNQotSVBWNkNUTF9TVEFUUyA9IDYKLUlQVjZDVExfTVJUU1RBVFMgPSA3Ci1JUFY2Q1RMX01SVFBST1RPID0gOAotSVBWNkNUTF9NQVhGUkFHUEFDS0VUUyA9IDkKLUlQVjZDVExfU09VUkNFQ0hFQ0sgPSAxMAotSVBWNkNUTF9TT1VSQ0VDSEVDS19MT0dJTlQgPSAxMQotSVBWNkNUTF9BQ0NFUFRfUlRBRFYgPSAxMgotSVBWNkNUTF9LRUVQRkFJVEggPSAxMwotSVBWNkNUTF9MT0dfSU5URVJWQUwgPSAxNAotSVBWNkNUTF9IRFJORVNUTElNSVQgPSAxNQotSVBWNkNUTF9EQURfQ09VTlQgPSAxNgotSVBWNkNUTF9BVVRPX0ZMT1dMQUJFTCA9IDE3Ci1JUFY2Q1RMX0RFRk1DQVNUSExJTSA9IDE4Ci1JUFY2Q1RMX0dJRl9ITElNID0gMTkKLUlQVjZDVExfS0FNRV9WRVJTSU9OID0gMjAKLUlQVjZDVExfVVNFX0RFUFJFQ0FURUQgPSAyMQotSVBWNkNUTF9SUl9QUlVORSA9IDIyCi1JUFY2Q1RMX01BUFBFRF9BRERSID0gMjMKLUlQVjZDVExfVjZPTkxZID0gMjQKLUlQVjZDVExfUlRFWFBJUkUgPSAyNQotSVBWNkNUTF9SVE1JTkVYUElSRSA9IDI2Ci1JUFY2Q1RMX1JUTUFYQ0FDSEUgPSAyNwotSVBWNkNUTF9VU0VURU1QQUREUiA9IDMyCi1JUFY2Q1RMX1RFTVBQTFRJTUUgPSAzMwotSVBWNkNUTF9URU1QVkxUSU1FID0gMzQKLUlQVjZDVExfQVVUT19MSU5LTE9DQUwgPSAzNQotSVBWNkNUTF9SSVA2U1RBVFMgPSAzNgotSVBWNkNUTF9QUkVGRVJfVEVNUEFERFIgPSAzNwotSVBWNkNUTF9BRERSQ1RMUE9MSUNZID0gMzgKLUlQVjZDVExfVVNFX0RFRkFVTFRaT05FID0gMzkKLUlQVjZDVExfTUFYRlJBR1MgPSA0MQotSVBWNkNUTF9JRlEgPSA0MgotSVBWNkNUTF9JU0FUQVBSVFIgPSA0MwotSVBWNkNUTF9NQ0FTVF9QTVRVID0gNDQKLUlQVjZDVExfU1RFQUxUSCA9IDQ1Ci1JUFY2Q1RMX01BWElEID0gNDYKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q2L3JlZ2VuIGIvTGliL3BsYXQtZnJlZWJzZDYvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDhhYTY4OTguLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDYvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWZyZWVic2Q3L0lOLnB5IGIvTGliL3BsYXQtZnJlZWJzZDcvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlM2IzYTIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtZnJlZWJzZDcvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NzEgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fX0dOVUNMSUtFX0FTTSA9IDMKLV9fR05VQ0xJS0VfQVNNID0gMgotX19HTlVDTElLRV9fX1RZUEVPRiA9IDEKLV9fR05VQ0xJS0VfX19PRkZTRVRPRiA9IDEKLV9fR05VQ0xJS0VfX19TRUNUSU9OID0gMQotX19HTlVDTElLRV9BVFRSSUJVVEVfTU9ERV9ESSA9IDEKLV9fR05VQ0xJS0VfQ1RPUl9TRUNUSU9OX0hBTkRMSU5HID0gMQotX19HTlVDTElLRV9CVUlMVElOX0NPTlNUQU5UX1AgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFSQVJHUyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9TVERBUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fVkFBTElTVCA9IDEKLV9fR05VQ19WQV9MSVNUX0NPTVBBVElCSUxJVFkgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTkVYVF9BUkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fTUVNQ1BZID0gMQotX19DQ19TVVBQT1JUU19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FID0gMQotX19DQ19TVVBQT1JUU19fX0lOTElORV9fID0gMQotX19DQ19TVVBQT1JUU19fX0ZVTkNfXyA9IDEKLV9fQ0NfU1VQUE9SVFNfV0FSTklORyA9IDEKLV9fQ0NfU1VQUE9SVFNfVkFSQURJQ19YWFggPSAxCi1fX0NDX1NVUFBPUlRTX0RZTkFNSUNfQVJSQVlfSU5JVCA9IDEKLV9fQ0NfSU5UX0lTXzMyQklUID0gMQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gcHJvdG9zCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLWRlZiBfX1hTVFJJTkcoeCk6IHJldHVybiBfX1NUUklORyh4KQotCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiAoKQotCi1kZWYgX19TVFJJTkcoeCk6IHJldHVybiAieCIKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fYWxpZ25lZCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fYWxpZ25lZF9fKHgpKSkKLQotZGVmIF9fc2VjdGlvbih4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fc2VjdGlvbl9fKHgpKSkKLQotZGVmIF9fbm9ubnVsbCh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fbm9ubnVsbF9fKHgpKSkKLQotZGVmIF9fcHJlZGljdF90cnVlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAxKQotCi1kZWYgX19wcmVkaWN0X2ZhbHNlKGV4cCk6IHJldHVybiBfX2J1aWx0aW5fZXhwZWN0KChleHApLCAwKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIChleHApCi0KLWRlZiBfX2Zvcm1hdF9hcmcoZm10YXJnKTogcmV0dXJuIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X2FyZ19fIChmbXRhcmcpKSkKLQotZGVmIF9fRkJTRElEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3Jjc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fUkNTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRF9TT1VSQ0Uocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfc291cmNlXyxfX0xJTkVfXykscykKLQotZGVmIF9fU0NDU0lEKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX3NjY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX0NPUFlSSUdIVChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19jb3B5cmlnaHRfLF9fTElORV9fKSxzKQotCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTkwMDkKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTIwOQotX19YU0lfVklTSUJMRSA9IDYwMAotX1BPU0lYX0NfU09VUkNFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNTAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9DX1NPVVJDRSA9IDE5ODgwOAotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTk5Ci1fX1BPU0lYX1ZJU0lCTEUgPSAxOTk1MDYKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTMwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MjA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkwMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5ODgwOAotX19JU09fQ19WSVNJQkxFID0gMAotX19QT1NJWF9WSVNJQkxFID0gMAotX19YU0lfVklTSUJMRSA9IDAKLV9fQlNEX1ZJU0lCTEUgPSAwCi1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDIwMDExMgotX19YU0lfVklTSUJMRSA9IDYwMAotX19CU0RfVklTSUJMRSA9IDEKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9fdHlwZXMuaAotCi0jIEluY2x1ZGVkIGZyb20gbWFjaGluZS9lbmRpYW4uaAotX1FVQURfSElHSFdPUkQgPSAxCi1fUVVBRF9MT1dXT1JEID0gMAotX0xJVFRMRV9FTkRJQU4gPSAxMjM0Ci1fQklHX0VORElBTiA9IDQzMjEKLV9QRFBfRU5ESUFOID0gMzQxMgotX0JZVEVfT1JERVIgPSBfTElUVExFX0VORElBTgotTElUVExFX0VORElBTiA9IF9MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfUERQX0VORElBTgotQllURV9PUkRFUiA9IF9CWVRFX09SREVSCi1kZWYgX193b3JkX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fd29yZF9zd2FwX2ludCh4KTogcmV0dXJuIF9fd29yZF9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF92YXIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF9pbnQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF9pbnRfdmFyKHgpCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfY29uc3QoeCk6IHJldHVybiBcCi0KLWRlZiBfX2J5dGVfc3dhcF93b3JkKHgpOiByZXR1cm4gX19ieXRlX3N3YXBfd29yZF92YXIoeCkKLQotZGVmIF9faHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9faHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotZGVmIF9fbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwMzIoeCkKLQotZGVmIF9fbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwMTYoeCkKLQotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19VRFAgPSAxNwotZGVmIGh0b25sKHgpOiByZXR1cm4gX19odG9ubCh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2h0b25zKHgpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuIF9fbnRvaGwoeCkKLQotZGVmIG50b2hzKHgpOiByZXR1cm4gX19udG9ocyh4KQotCi1JUFBST1RPX1JBVyA9IDI1NQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQUFJPVE9fSE9QT1BUUyA9IDAKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUFY0ID0gNAotSVBQUk9UT19JUElQID0gSVBQUk9UT19JUFY0Ci1JUFBST1RPX1NUID0gNwotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BJR1AgPSA5Ci1JUFBST1RPX1JDQ01PTiA9IDEwCi1JUFBST1RPX05WUElJID0gMTEKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fQVJHVVMgPSAxMwotSVBQUk9UT19FTUNPTiA9IDE0Ci1JUFBST1RPX1hORVQgPSAxNQotSVBQUk9UT19DSEFPUyA9IDE2Ci1JUFBST1RPX01VWCA9IDE4Ci1JUFBST1RPX01FQVMgPSAxOQotSVBQUk9UT19ITVAgPSAyMAotSVBQUk9UT19QUk0gPSAyMQotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19UUlVOSzEgPSAyMwotSVBQUk9UT19UUlVOSzIgPSAyNAotSVBQUk9UT19MRUFGMSA9IDI1Ci1JUFBST1RPX0xFQUYyID0gMjYKLUlQUFJPVE9fUkRQID0gMjcKLUlQUFJPVE9fSVJUUCA9IDI4Ci1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fQkxUID0gMzAKLUlQUFJPVE9fTlNQID0gMzEKLUlQUFJPVE9fSU5QID0gMzIKLUlQUFJPVE9fU0VQID0gMzMKLUlQUFJPVE9fM1BDID0gMzQKLUlQUFJPVE9fSURQUiA9IDM1Ci1JUFBST1RPX1hUUCA9IDM2Ci1JUFBST1RPX0REUCA9IDM3Ci1JUFBST1RPX0NNVFAgPSAzOAotSVBQUk9UT19UUFhYID0gMzkKLUlQUFJPVE9fSUwgPSA0MAotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fU0RSUCA9IDQyCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0lEUlAgPSA0NQotSVBQUk9UT19SU1ZQID0gNDYKLUlQUFJPVE9fR1JFID0gNDcKLUlQUFJPVE9fTUhSUCA9IDQ4Ci1JUFBST1RPX0JIQSA9IDQ5Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSU5MU1AgPSA1MgotSVBQUk9UT19TV0lQRSA9IDUzCi1JUFBST1RPX05IUlAgPSA1NAotSVBQUk9UT19NT0JJTEUgPSA1NQotSVBQUk9UT19UTFNQID0gNTYKLUlQUFJPVE9fU0tJUCA9IDU3Ci1JUFBST1RPX0lDTVBWNiA9IDU4Ci1JUFBST1RPX05PTkUgPSA1OQotSVBQUk9UT19EU1RPUFRTID0gNjAKLUlQUFJPVE9fQUhJUCA9IDYxCi1JUFBST1RPX0NGVFAgPSA2MgotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX1NBVEVYUEFLID0gNjQKLUlQUFJPVE9fS1JZUFRPTEFOID0gNjUKLUlQUFJPVE9fUlZEID0gNjYKLUlQUFJPVE9fSVBQQyA9IDY3Ci1JUFBST1RPX0FERlMgPSA2OAotSVBQUk9UT19TQVRNT04gPSA2OQotSVBQUk9UT19WSVNBID0gNzAKLUlQUFJPVE9fSVBDViA9IDcxCi1JUFBST1RPX0NQTlggPSA3MgotSVBQUk9UT19DUEhCID0gNzMKLUlQUFJPVE9fV1NOID0gNzQKLUlQUFJPVE9fUFZQID0gNzUKLUlQUFJPVE9fQlJTQVRNT04gPSA3NgotSVBQUk9UT19ORCA9IDc3Ci1JUFBST1RPX1dCTU9OID0gNzgKLUlQUFJPVE9fV0JFWFBBSyA9IDc5Ci1JUFBST1RPX0VPTiA9IDgwCi1JUFBST1RPX1ZNVFAgPSA4MQotSVBQUk9UT19TVk1UUCA9IDgyCi1JUFBST1RPX1ZJTkVTID0gODMKLUlQUFJPVE9fVFRQID0gODQKLUlQUFJPVE9fSUdQID0gODUKLUlQUFJPVE9fREdQID0gODYKLUlQUFJPVE9fVENGID0gODcKLUlQUFJPVE9fSUdSUCA9IDg4Ci1JUFBST1RPX09TUEZJR1AgPSA4OQotSVBQUk9UT19TUlBDID0gOTAKLUlQUFJPVE9fTEFSUCA9IDkxCi1JUFBST1RPX01UUCA9IDkyCi1JUFBST1RPX0FYMjUgPSA5MwotSVBQUk9UT19JUEVJUCA9IDk0Ci1JUFBST1RPX01JQ1AgPSA5NQotSVBQUk9UT19TQ0NTUCA9IDk2Ci1JUFBST1RPX0VUSEVSSVAgPSA5NwotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX0FQRVMgPSA5OQotSVBQUk9UT19HTVRQID0gMTAwCi1JUFBST1RPX0lQQ09NUCA9IDEwOAotSVBQUk9UT19TQ1RQID0gMTMyCi1JUFBST1RPX1BJTSA9IDEwMwotSVBQUk9UT19DQVJQID0gMTEyCi1JUFBST1RPX1BHTSA9IDExMwotSVBQUk9UT19QRlNZTkMgPSAyNDAKLUlQUFJPVE9fT0xEX0RJVkVSVCA9IDI1NAotSVBQUk9UT19NQVggPSAyNTYKLUlQUFJPVE9fRE9ORSA9IDI1NwotSVBQUk9UT19ESVZFUlQgPSAyNTgKLUlQUFJPVE9fU1BBQ0VSID0gMzI3NjcKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9ISUZJUlNUQVVUTyA9IDQ5MTUyCi1JUFBPUlRfSElMQVNUQVVUTyA9IDY1NTM1Ci1JUFBPUlRfUkVTRVJWRURTVEFSVCA9IDYwMAotSVBQT1JUX01BWCA9IDY1NTM1Ci1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9IDB4MDBmZmZmZmYKLUlOX0NMQVNTQV9NQVggPSAxMjgKLWRlZiBJTl9DTEFTU0IoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gMHgwMDAwZmZmZgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1kZWYgSU5fQ0xBU1NDKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5fQ0xBU1NEX05FVCA9ICgtMjY4NDM1NDU2KQotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI2ODQzNTQ1NikpID09ICgtMjY4NDM1NDU2KSkKLQotZGVmIElOX0JBRENMQVNTKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fTElOS0xPQ0FMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtNjU1MzYpKSA9PSAoLTE0NDI5NzE2NDgpKQotCi1kZWYgSU5fTE9DQUxfR1JPVVAoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNTYpKSA9PSAoLTUzNjg3MDkxMikpCi0KLUlOQUREUl9OT05FID0gKC0xKQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfU0VORFNSQ0FERFIgPSBJUF9SRUNWRFNUQUREUgotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX01VTFRJQ0FTVF9WSUYgPSAxNAotSVBfUlNWUF9PTiA9IDE1Ci1JUF9SU1ZQX09GRiA9IDE2Ci1JUF9SU1ZQX1ZJRl9PTiA9IDE3Ci1JUF9SU1ZQX1ZJRl9PRkYgPSAxOAotSVBfUE9SVFJBTkdFID0gMTkKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9JUFNFQ19QT0xJQ1kgPSAyMQotSVBfRkFJVEggPSAyMgotSVBfT05FU0JDQVNUID0gMjMKLUlQX0ZXX1RBQkxFX0FERCA9IDQwCi1JUF9GV19UQUJMRV9ERUwgPSA0MQotSVBfRldfVEFCTEVfRkxVU0ggPSA0MgotSVBfRldfVEFCTEVfR0VUU0laRSA9IDQzCi1JUF9GV19UQUJMRV9MSVNUID0gNDQKLUlQX0ZXX0FERCA9IDUwCi1JUF9GV19ERUwgPSA1MQotSVBfRldfRkxVU0ggPSA1MgotSVBfRldfWkVSTyA9IDUzCi1JUF9GV19HRVQgPSA1NAotSVBfRldfUkVTRVRMT0cgPSA1NQotSVBfRldfTkFUX0NGRyA9IDU2Ci1JUF9GV19OQVRfREVMID0gNTcKLUlQX0ZXX05BVF9HRVRfQ09ORklHID0gNTgKLUlQX0ZXX05BVF9HRVRfTE9HID0gNTkKLUlQX0RVTU1ZTkVUX0NPTkZJR1VSRSA9IDYwCi1JUF9EVU1NWU5FVF9ERUwgPSA2MQotSVBfRFVNTVlORVRfRkxVU0ggPSA2MgotSVBfRFVNTVlORVRfR0VUID0gNjQKLUlQX1JFQ1ZUVEwgPSA2NQotSVBfTUlOVFRMID0gNjYKLUlQX0RPTlRGUkFHID0gNjcKLUlQX0FERF9TT1VSQ0VfTUVNQkVSU0hJUCA9IDcwCi1JUF9EUk9QX1NPVVJDRV9NRU1CRVJTSElQID0gNzEKLUlQX0JMT0NLX1NPVVJDRSA9IDcyCi1JUF9VTkJMT0NLX1NPVVJDRSA9IDczCi1JUF9NU0ZJTFRFUiA9IDc0Ci1NQ0FTVF9KT0lOX0dST1VQID0gODAKLU1DQVNUX0xFQVZFX0dST1VQID0gODEKLU1DQVNUX0pPSU5fU09VUkNFX0dST1VQID0gODIKLU1DQVNUX0xFQVZFX1NPVVJDRV9HUk9VUCA9IDgzCi1NQ0FTVF9CTE9DS19TT1VSQ0UgPSA4NAotTUNBU1RfVU5CTE9DS19TT1VSQ0UgPSA4NQotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01JTl9NRU1CRVJTSElQUyA9IDMxCi1JUF9NQVhfTUVNQkVSU0hJUFMgPSA0MDk1Ci1JUF9NQVhfU09VUkNFX0ZJTFRFUiA9IDEwMjQKLU1DQVNUX0lOQ0xVREUgPSAxCi1NQ0FTVF9FWENMVURFID0gMgotSVBfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUF9QT1JUUkFOR0VfSElHSCA9IDEKLUlQX1BPUlRSQU5HRV9MT1cgPSAyCi1JUFBST1RPX01BWElEID0gKElQUFJPVE9fQUggKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9SVEVYUElSRSA9IDUKLUlQQ1RMX1JUTUlORVhQSVJFID0gNgotSVBDVExfUlRNQVhDQUNIRSA9IDcKLUlQQ1RMX1NPVVJDRVJPVVRFID0gOAotSVBDVExfRElSRUNURURCUk9BRENBU1QgPSA5Ci1JUENUTF9JTlRSUU1BWExFTiA9IDEwCi1JUENUTF9JTlRSUURST1BTID0gMTEKLUlQQ1RMX1NUQVRTID0gMTIKLUlQQ1RMX0FDQ0VQVFNPVVJDRVJPVVRFID0gMTMKLUlQQ1RMX0ZBU1RGT1JXQVJESU5HID0gMTQKLUlQQ1RMX0tFRVBGQUlUSCA9IDE1Ci1JUENUTF9HSUZfVFRMID0gMTYKLUlQQ1RMX01BWElEID0gMTcKLWRlZiBpbl9udWxsaG9zdCh4KTogcmV0dXJuICgoeCkuc19hZGRyID09IElOQUREUl9BTlkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQ2L2luNi5oCi1fX0tBTUVfVkVSU0lPTiA9ICJGcmVlQlNEIgotSVBWNlBPUlRfUkVTRVJWRUQgPSAxMDI0Ci1JUFY2UE9SVF9BTk9OTUlOID0gNDkxNTIKLUlQVjZQT1JUX0FOT05NQVggPSA2NTUzNQotSVBWNlBPUlRfUkVTRVJWRURNSU4gPSA2MDAKLUlQVjZQT1JUX1JFU0VSVkVETUFYID0gKElQVjZQT1JUX1JFU0VSVkVELTEpCi1JTkVUNl9BRERSU1RSTEVOID0gNDYKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAxCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMgotSVBWNl9BRERSX0lOVDMyX01OTCA9ICgtMTY3MTE2ODApCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gKC0xNjY0NjE0NCkKLUlQVjZfQUREUl9JTlQzMl9TTVAgPSAweDAwMDBmZmZmCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHhmZTgwCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhmZWMwCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHhmZjAyCi1JUFY2X0FERFJfSU5UMzJfT05FID0gMHgwMTAwMDAwMAotSVBWNl9BRERSX0lOVDMyX1RXTyA9IDB4MDIwMDAwMDAKLUlQVjZfQUREUl9JTlQzMl9NTkwgPSAweDAwMDAwMWZmCi1JUFY2X0FERFJfSU5UMzJfTUxMID0gMHgwMDAwMDJmZgotSVBWNl9BRERSX0lOVDMyX1NNUCA9ICgtNjU1MzYpCi1JUFY2X0FERFJfSU5UMTZfVUxMID0gMHg4MGZlCi1JUFY2X0FERFJfSU5UMTZfVVNMID0gMHhjMGZlCi1JUFY2X0FERFJfSU5UMTZfTUxMID0gMHgwMmZmCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0Q09NUEFUKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRUQoYSk6IHJldHVybiBcCi0KLUlQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotSVBWNl9BRERSX1NDT1BFX0xJTktMT0NBTCA9IDB4MDIKLUlQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1JUFY2X0FERFJfU0NPUEVfR0xPQkFMID0gMHgwZQotX19JUFY2X0FERFJfU0NPUEVfTk9ERUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfSU5URkFDRUxPQ0FMID0gMHgwMQotX19JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotX19JUFY2X0FERFJfU0NPUEVfU0lURUxPQ0FMID0gMHgwNQotX19JUFY2X0FERFJfU0NPUEVfT1JHTE9DQUwgPSAweDA4Ci1fX0lQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1kZWYgSU42X0lTX0FERFJfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfSU5URkFDRUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfU0NPUEVfRU1CRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0RFUFJFQ0FURUQoYSk6IHJldHVybiBcCi0KLWRlZiBJRkE2X0lTX0lOVkFMSUQoYSk6IHJldHVybiBcCi0KLUlQVjZfT1BUSU9OUyA9IDEKLUlQVjZfUkVDVk9QVFMgPSA1Ci1JUFY2X1JFQ1ZSRVRPUFRTID0gNgotSVBWNl9SRUNWRFNUQUREUiA9IDcKLUlQVjZfUkVUT1BUUyA9IDgKLUlQVjZfU09DS09QVF9SRVNFUlZFRDEgPSAzCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDQKLUlQVjZfTVVMVElDQVNUX0lGID0gOQotSVBWNl9NVUxUSUNBU1RfSE9QUyA9IDEwCi1JUFY2X01VTFRJQ0FTVF9MT09QID0gMTEKLUlQVjZfSk9JTl9HUk9VUCA9IDEyCi1JUFY2X0xFQVZFX0dST1VQID0gMTMKLUlQVjZfUE9SVFJBTkdFID0gMTQKLUlDTVA2X0ZJTFRFUiA9IDE4Ci1JUFY2XzIyOTJQS1RJTkZPID0gMTkKLUlQVjZfMjI5MkhPUExJTUlUID0gMjAKLUlQVjZfMjI5Mk5FWFRIT1AgPSAyMQotSVBWNl8yMjkySE9QT1BUUyA9IDIyCi1JUFY2XzIyOTJEU1RPUFRTID0gMjMKLUlQVjZfMjI5MlJUSERSID0gMjQKLUlQVjZfMjI5MlBLVE9QVElPTlMgPSAyNQotSVBWNl9DSEVDS1NVTSA9IDI2Ci1JUFY2X1Y2T05MWSA9IDI3Ci1JUFY2X0JJTkRWNk9OTFkgPSBJUFY2X1Y2T05MWQotSVBWNl9JUFNFQ19QT0xJQ1kgPSAyOAotSVBWNl9GQUlUSCA9IDI5Ci1JUFY2X0ZXX0FERCA9IDMwCi1JUFY2X0ZXX0RFTCA9IDMxCi1JUFY2X0ZXX0ZMVVNIID0gMzIKLUlQVjZfRldfWkVSTyA9IDMzCi1JUFY2X0ZXX0dFVCA9IDM0Ci1JUFY2X1JUSERSRFNUT1BUUyA9IDM1Ci1JUFY2X1JFQ1ZQS1RJTkZPID0gMzYKLUlQVjZfUkVDVkhPUExJTUlUID0gMzcKLUlQVjZfUkVDVlJUSERSID0gMzgKLUlQVjZfUkVDVkhPUE9QVFMgPSAzOQotSVBWNl9SRUNWRFNUT1BUUyA9IDQwCi1JUFY2X1JFQ1ZSVEhEUkRTVE9QVFMgPSA0MQotSVBWNl9VU0VfTUlOX01UVSA9IDQyCi1JUFY2X1JFQ1ZQQVRITVRVID0gNDMKLUlQVjZfUEFUSE1UVSA9IDQ0Ci1JUFY2X1JFQUNIQ09ORiA9IDQ1Ci1JUFY2X1BLVElORk8gPSA0NgotSVBWNl9IT1BMSU1JVCA9IDQ3Ci1JUFY2X05FWFRIT1AgPSA0OAotSVBWNl9IT1BPUFRTID0gNDkKLUlQVjZfRFNUT1BUUyA9IDUwCi1JUFY2X1JUSERSID0gNTEKLUlQVjZfUEtUT1BUSU9OUyA9IDUyCi1JUFY2X1JFQ1ZUQ0xBU1MgPSA1NwotSVBWNl9BVVRPRkxPV0xBQkVMID0gNTkKLUlQVjZfVENMQVNTID0gNjEKLUlQVjZfRE9OVEZSQUcgPSA2MgotSVBWNl9QUkVGRVJfVEVNUEFERFIgPSA2MwotSVBWNl9NU0ZJTFRFUiA9IDc0Ci1JUFY2X1JUSERSX0xPT1NFID0gMAotSVBWNl9SVEhEUl9TVFJJQ1QgPSAxCi1JUFY2X1JUSERSX1RZUEVfMCA9IDAKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfSE9QUyA9IDEKLUlQVjZfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQVjZfUE9SVFJBTkdFX0RFRkFVTFQgPSAwCi1JUFY2X1BPUlRSQU5HRV9ISUdIID0gMQotSVBWNl9QT1JUUkFOR0VfTE9XID0gMgotSVBWNlBST1RPX01BWElEID0gKElQUFJPVE9fUElNICsgMSkKLUlQVjZDVExfRk9SV0FSRElORyA9IDEKLUlQVjZDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQVjZDVExfREVGSExJTSA9IDMKLUlQVjZDVExfREVGTVRVID0gNAotSVBWNkNUTF9GT1JXU1JDUlQgPSA1Ci1JUFY2Q1RMX1NUQVRTID0gNgotSVBWNkNUTF9NUlRTVEFUUyA9IDcKLUlQVjZDVExfTVJUUFJPVE8gPSA4Ci1JUFY2Q1RMX01BWEZSQUdQQUNLRVRTID0gOQotSVBWNkNUTF9TT1VSQ0VDSEVDSyA9IDEwCi1JUFY2Q1RMX1NPVVJDRUNIRUNLX0xPR0lOVCA9IDExCi1JUFY2Q1RMX0FDQ0VQVF9SVEFEViA9IDEyCi1JUFY2Q1RMX0tFRVBGQUlUSCA9IDEzCi1JUFY2Q1RMX0xPR19JTlRFUlZBTCA9IDE0Ci1JUFY2Q1RMX0hEUk5FU1RMSU1JVCA9IDE1Ci1JUFY2Q1RMX0RBRF9DT1VOVCA9IDE2Ci1JUFY2Q1RMX0FVVE9fRkxPV0xBQkVMID0gMTcKLUlQVjZDVExfREVGTUNBU1RITElNID0gMTgKLUlQVjZDVExfR0lGX0hMSU0gPSAxOQotSVBWNkNUTF9LQU1FX1ZFUlNJT04gPSAyMAotSVBWNkNUTF9VU0VfREVQUkVDQVRFRCA9IDIxCi1JUFY2Q1RMX1JSX1BSVU5FID0gMjIKLUlQVjZDVExfTUFQUEVEX0FERFIgPSAyMwotSVBWNkNUTF9WNk9OTFkgPSAyNAotSVBWNkNUTF9SVEVYUElSRSA9IDI1Ci1JUFY2Q1RMX1JUTUlORVhQSVJFID0gMjYKLUlQVjZDVExfUlRNQVhDQUNIRSA9IDI3Ci1JUFY2Q1RMX1VTRVRFTVBBRERSID0gMzIKLUlQVjZDVExfVEVNUFBMVElNRSA9IDMzCi1JUFY2Q1RMX1RFTVBWTFRJTUUgPSAzNAotSVBWNkNUTF9BVVRPX0xJTktMT0NBTCA9IDM1Ci1JUFY2Q1RMX1JJUDZTVEFUUyA9IDM2Ci1JUFY2Q1RMX1BSRUZFUl9URU1QQUREUiA9IDM3Ci1JUFY2Q1RMX0FERFJDVExQT0xJQ1kgPSAzOAotSVBWNkNUTF9VU0VfREVGQVVMVFpPTkUgPSAzOQotSVBWNkNUTF9NQVhGUkFHUyA9IDQxCi1JUFY2Q1RMX0lGUSA9IDQyCi1JUFY2Q1RMX0lTQVRBUFJUUiA9IDQzCi1JUFY2Q1RMX01DQVNUX1BNVFUgPSA0NAotSVBWNkNUTF9TVEVBTFRIID0gNDUKLUlQVjZDVExfTUFYSUQgPSA0NgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDcvcmVnZW4gYi9MaWIvcGxhdC1mcmVlYnNkNy9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOGFhNjg5OC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkNy9yZWdlbgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEgL2Jpbi9zaAotc2V0IC12Ci1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaApkaWZmIC0tZ2l0IGEvTGliL3BsYXQtZnJlZWJzZDgvSU4ucHkgYi9MaWIvcGxhdC1mcmVlYnNkOC9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUzYjNhMi4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1mcmVlYnNkOC9JTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDU3MSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NkZWZzLmgKLV9fR05VQ0xJS0VfQVNNID0gMwotX19HTlVDTElLRV9BU00gPSAyCi1fX0dOVUNMSUtFX19fVFlQRU9GID0gMQotX19HTlVDTElLRV9fX09GRlNFVE9GID0gMQotX19HTlVDTElLRV9fX1NFQ1RJT04gPSAxCi1fX0dOVUNMSUtFX0FUVFJJQlVURV9NT0RFX0RJID0gMQotX19HTlVDTElLRV9DVE9SX1NFQ1RJT05fSEFORExJTkcgPSAxCi1fX0dOVUNMSUtFX0JVSUxUSU5fQ09OU1RBTlRfUCA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQVJBUkdTID0gMQotX19HTlVDTElLRV9CVUlMVElOX1NUREFSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9WQUFMSVNUID0gMQotX19HTlVDX1ZBX0xJU1RfQ09NUEFUSUJJTElUWSA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9ORVhUX0FSRyA9IDEKLV9fR05VQ0xJS0VfQlVJTFRJTl9NRU1DUFkgPSAxCi1fX0NDX1NVUFBPUlRTX0lOTElORSA9IDEKLV9fQ0NfU1VQUE9SVFNfX19JTkxJTkUgPSAxCi1fX0NDX1NVUFBPUlRTX19fSU5MSU5FX18gPSAxCi1fX0NDX1NVUFBPUlRTX19fRlVOQ19fID0gMQotX19DQ19TVVBQT1JUU19XQVJOSU5HID0gMQotX19DQ19TVVBQT1JUU19WQVJBRElDX1hYWCA9IDEKLV9fQ0NfU1VQUE9SVFNfRFlOQU1JQ19BUlJBWV9JTklUID0gMQotX19DQ19JTlRfSVNfMzJCSVQgPSAxCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fWFNUUklORyh4KTogcmV0dXJuIF9fU1RSSU5HKHgpCi0KLWRlZiBfX1AocHJvdG9zKTogcmV0dXJuICgpCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICJ4IgotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19hbGlnbmVkKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19hbGlnbmVkX18oeCkpKQotCi1kZWYgX19zZWN0aW9uKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19zZWN0aW9uX18oeCkpKQotCi1kZWYgX19ub25udWxsKHgpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19ub25udWxsX18oeCkpKQotCi1kZWYgX19wcmVkaWN0X3RydWUoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDEpCi0KLWRlZiBfX3ByZWRpY3RfZmFsc2UoZXhwKTogcmV0dXJuIF9fYnVpbHRpbl9leHBlY3QoKGV4cCksIDApCi0KLWRlZiBfX3ByZWRpY3RfdHJ1ZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fcHJlZGljdF9mYWxzZShleHApOiByZXR1cm4gKGV4cCkKLQotZGVmIF9fZm9ybWF0X2FyZyhmbXRhcmcpOiByZXR1cm4gX19hdHRyaWJ1dGVfXygoX19mb3JtYXRfYXJnX18gKGZtdGFyZykpKQotCi1kZWYgX19GQlNESUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fcmNzaWRfLF9fTElORV9fKSxzKQotCi1kZWYgX19SQ1NJRChzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF8sX19MSU5FX18pLHMpCi0KLWRlZiBfX1JDU0lEX1NPVVJDRShzKTogcmV0dXJuIF9fSURTVFJJTkcoX19DT05DQVQoX19yY3NpZF9zb3VyY2VfLF9fTElORV9fKSxzKQotCi1kZWYgX19TQ0NTSUQocyk6IHJldHVybiBfX0lEU1RSSU5HKF9fQ09OQ0FUKF9fc2Njc2lkXyxfX0xJTkVfXykscykKLQotZGVmIF9fQ09QWVJJR0hUKHMpOiByZXR1cm4gX19JRFNUUklORyhfX0NPTkNBVChfX2NvcHlyaWdodF8sX19MSU5FX18pLHMpCi0KLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTAwOQotX1BPU0lYX0NfU09VUkNFID0gMTk5MjA5Ci1fX1hTSV9WSVNJQkxFID0gNjAwCi1fUE9TSVhfQ19TT1VSQ0UgPSAyMDAxMTIKLV9fWFNJX1ZJU0lCTEUgPSA1MDAKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX0NfU09VUkNFID0gMTk4ODA4Ci1fX1BPU0lYX1ZJU0lCTEUgPSAyMDAxMTIKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTkKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTUwNgotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk5MzA5Ci1fX0lTT19DX1ZJU0lCTEUgPSAxOTkwCi1fX1BPU0lYX1ZJU0lCTEUgPSAxOTkyMDkKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDE5OTAwOQotX19JU09fQ19WSVNJQkxFID0gMTk5MAotX19QT1NJWF9WSVNJQkxFID0gMTk4ODA4Ci1fX0lTT19DX1ZJU0lCTEUgPSAwCi1fX1BPU0lYX1ZJU0lCTEUgPSAwCi1fX1hTSV9WSVNJQkxFID0gMAotX19CU0RfVklTSUJMRSA9IDAKLV9fSVNPX0NfVklTSUJMRSA9IDE5OTAKLV9fUE9TSVhfVklTSUJMRSA9IDAKLV9fWFNJX1ZJU0lCTEUgPSAwCi1fX0JTRF9WSVNJQkxFID0gMAotX19JU09fQ19WSVNJQkxFID0gMTk5OQotX19QT1NJWF9WSVNJQkxFID0gMjAwMTEyCi1fX1hTSV9WSVNJQkxFID0gNjAwCi1fX0JTRF9WSVNJQkxFID0gMQotX19JU09fQ19WSVNJQkxFID0gMTk5OQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL190eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBtYWNoaW5lL2VuZGlhbi5oCi1fUVVBRF9ISUdIV09SRCA9IDEKLV9RVUFEX0xPV1dPUkQgPSAwCi1fTElUVExFX0VORElBTiA9IDEyMzQKLV9CSUdfRU5ESUFOID0gNDMyMQotX1BEUF9FTkRJQU4gPSAzNDEyCi1fQllURV9PUkRFUiA9IF9MSVRUTEVfRU5ESUFOCi1MSVRUTEVfRU5ESUFOID0gX0xJVFRMRV9FTkRJQU4KLUJJR19FTkRJQU4gPSBfQklHX0VORElBTgotUERQX0VORElBTiA9IF9QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX0JZVEVfT1JERVIKLWRlZiBfX3dvcmRfc3dhcF9pbnRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50X2NvbnN0KHgpOiByZXR1cm4gXAotCi1kZWYgX193b3JkX3N3YXBfaW50KHgpOiByZXR1cm4gX193b3JkX3N3YXBfaW50X3Zhcih4KQotCi1kZWYgX19ieXRlX3N3YXBfaW50X3Zhcih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX2ludCh4KTogcmV0dXJuIF9fYnl0ZV9zd2FwX2ludF92YXIoeCkKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmRfdmFyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ieXRlX3N3YXBfd29yZF9jb25zdCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnl0ZV9zd2FwX3dvcmQoeCk6IHJldHVybiBfX2J5dGVfc3dhcF93b3JkX3Zhcih4KQotCi1kZWYgX19odG9ubCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19odG9ucyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1kZWYgX19udG9obCh4KTogcmV0dXJuIF9fYnN3YXAzMih4KQotCi1kZWYgX19udG9ocyh4KTogcmV0dXJuIF9fYnN3YXAxNih4KQotCi1JUFBST1RPX0lQID0gMAotSVBQUk9UT19JQ01QID0gMQotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX1VEUCA9IDE3Ci1kZWYgaHRvbmwoeCk6IHJldHVybiBfX2h0b25sKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuIF9faHRvbnMoeCkKLQotZGVmIG50b2hsKHgpOiByZXR1cm4gX19udG9obCh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiBfX250b2hzKHgpCi0KLUlQUFJPVE9fUkFXID0gMjU1Ci1JTkVUX0FERFJTVFJMRU4gPSAxNgotSVBQUk9UT19IT1BPUFRTID0gMAotSVBQUk9UT19JR01QID0gMgotSVBQUk9UT19HR1AgPSAzCi1JUFBST1RPX0lQVjQgPSA0Ci1JUFBST1RPX0lQSVAgPSBJUFBST1RPX0lQVjQKLUlQUFJPVE9fU1QgPSA3Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUElHUCA9IDkKLUlQUFJPVE9fUkNDTU9OID0gMTAKLUlQUFJPVE9fTlZQSUkgPSAxMQotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19BUkdVUyA9IDEzCi1JUFBST1RPX0VNQ09OID0gMTQKLUlQUFJPVE9fWE5FVCA9IDE1Ci1JUFBST1RPX0NIQU9TID0gMTYKLUlQUFJPVE9fTVVYID0gMTgKLUlQUFJPVE9fTUVBUyA9IDE5Ci1JUFBST1RPX0hNUCA9IDIwCi1JUFBST1RPX1BSTSA9IDIxCi1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RSVU5LMSA9IDIzCi1JUFBST1RPX1RSVU5LMiA9IDI0Ci1JUFBST1RPX0xFQUYxID0gMjUKLUlQUFJPVE9fTEVBRjIgPSAyNgotSVBQUk9UT19SRFAgPSAyNwotSVBQUk9UT19JUlRQID0gMjgKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19CTFQgPSAzMAotSVBQUk9UT19OU1AgPSAzMQotSVBQUk9UT19JTlAgPSAzMgotSVBQUk9UT19TRVAgPSAzMwotSVBQUk9UT18zUEMgPSAzNAotSVBQUk9UT19JRFBSID0gMzUKLUlQUFJPVE9fWFRQID0gMzYKLUlQUFJPVE9fRERQID0gMzcKLUlQUFJPVE9fQ01UUCA9IDM4Ci1JUFBST1RPX1RQWFggPSAzOQotSVBQUk9UT19JTCA9IDQwCi1JUFBST1RPX0lQVjYgPSA0MQotSVBQUk9UT19TRFJQID0gNDIKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fSURSUCA9IDQ1Ci1JUFBST1RPX1JTVlAgPSA0NgotSVBQUk9UT19HUkUgPSA0NwotSVBQUk9UT19NSFJQID0gNDgKLUlQUFJPVE9fQkhBID0gNDkKLUlQUFJPVE9fRVNQID0gNTAKLUlQUFJPVE9fQUggPSA1MQotSVBQUk9UT19JTkxTUCA9IDUyCi1JUFBST1RPX1NXSVBFID0gNTMKLUlQUFJPVE9fTkhSUCA9IDU0Ci1JUFBST1RPX01PQklMRSA9IDU1Ci1JUFBST1RPX1RMU1AgPSA1NgotSVBQUk9UT19TS0lQID0gNTcKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19BSElQID0gNjEKLUlQUFJPVE9fQ0ZUUCA9IDYyCi1JUFBST1RPX0hFTExPID0gNjMKLUlQUFJPVE9fU0FURVhQQUsgPSA2NAotSVBQUk9UT19LUllQVE9MQU4gPSA2NQotSVBQUk9UT19SVkQgPSA2NgotSVBQUk9UT19JUFBDID0gNjcKLUlQUFJPVE9fQURGUyA9IDY4Ci1JUFBST1RPX1NBVE1PTiA9IDY5Ci1JUFBST1RPX1ZJU0EgPSA3MAotSVBQUk9UT19JUENWID0gNzEKLUlQUFJPVE9fQ1BOWCA9IDcyCi1JUFBST1RPX0NQSEIgPSA3MwotSVBQUk9UT19XU04gPSA3NAotSVBQUk9UT19QVlAgPSA3NQotSVBQUk9UT19CUlNBVE1PTiA9IDc2Ci1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fV0JNT04gPSA3OAotSVBQUk9UT19XQkVYUEFLID0gNzkKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fVk1UUCA9IDgxCi1JUFBST1RPX1NWTVRQID0gODIKLUlQUFJPVE9fVklORVMgPSA4MwotSVBQUk9UT19UVFAgPSA4NAotSVBQUk9UT19JR1AgPSA4NQotSVBQUk9UT19ER1AgPSA4NgotSVBQUk9UT19UQ0YgPSA4NwotSVBQUk9UT19JR1JQID0gODgKLUlQUFJPVE9fT1NQRklHUCA9IDg5Ci1JUFBST1RPX1NSUEMgPSA5MAotSVBQUk9UT19MQVJQID0gOTEKLUlQUFJPVE9fTVRQID0gOTIKLUlQUFJPVE9fQVgyNSA9IDkzCi1JUFBST1RPX0lQRUlQID0gOTQKLUlQUFJPVE9fTUlDUCA9IDk1Ci1JUFBST1RPX1NDQ1NQID0gOTYKLUlQUFJPVE9fRVRIRVJJUCA9IDk3Ci1JUFBST1RPX0VOQ0FQID0gOTgKLUlQUFJPVE9fQVBFUyA9IDk5Ci1JUFBST1RPX0dNVFAgPSAxMDAKLUlQUFJPVE9fSVBDT01QID0gMTA4Ci1JUFBST1RPX1NDVFAgPSAxMzIKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX0NBUlAgPSAxMTIKLUlQUFJPVE9fUEdNID0gMTEzCi1JUFBST1RPX1BGU1lOQyA9IDI0MAotSVBQUk9UT19PTERfRElWRVJUID0gMjU0Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQUk9UT19ET05FID0gMjU3Ci1JUFBST1RPX0RJVkVSVCA9IDI1OAotSVBQUk9UT19TUEFDRVIgPSAzMjc2NwotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX0hJRklSU1RBVVRPID0gNDkxNTIKLUlQUE9SVF9ISUxBU1RBVVRPID0gNjU1MzUKLUlQUE9SVF9SRVNFUlZFRFNUQVJUID0gNjAwCi1JUFBPUlRfTUFYID0gNjU1MzUKLWRlZiBJTl9DTEFTU0EoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yMTQ3NDgzNjQ4KSkgPT0gMCkKLQotSU5fQ0xBU1NBX05FVCA9ICgtMTY3NzcyMTYpCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTEwNzM3NDE4MjQpKSA9PSAoLTIxNDc0ODM2NDgpKQotCi1JTl9DTEFTU0JfTkVUID0gKC02NTUzNikKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX0hPU1QgPSAweDAwMDBmZmZmCi1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLWRlZiBJTl9DTEFTU0MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC01MzY4NzA5MTIpKSA9PSAoLTEwNzM3NDE4MjQpKQotCi1JTl9DTEFTU0NfTkVUID0gKC0yNTYpCi1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NDX0hPU1QgPSAweDAwMDAwMGZmCi1kZWYgSU5fQ0xBU1NEKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC01MzY4NzA5MTIpKQotCi1JTl9DTEFTU0RfTkVUID0gKC0yNjg0MzU0NTYpCi1JTl9DTEFTU0RfTlNISUZUID0gMjgKLUlOX0NMQVNTRF9IT1NUID0gMHgwZmZmZmZmZgotZGVmIElOX01VTFRJQ0FTVChpKTogcmV0dXJuIElOX0NMQVNTRChpKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGkpOiByZXR1cm4gKCgodV9pbnQzMl90KShpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC0yNjg0MzU0NTYpKSA9PSAoLTI2ODQzNTQ1NikpCi0KLWRlZiBJTl9MSU5LTE9DQUwoaSk6IHJldHVybiAoKCh1X2ludDMyX3QpKGkpICYgKC02NTUzNikpID09ICgtMTQ0Mjk3MTY0OCkpCi0KLWRlZiBJTl9MT0NBTF9HUk9VUChpKTogcmV0dXJuICgoKHVfaW50MzJfdCkoaSkgJiAoLTI1NikpID09ICgtNTM2ODcwOTEyKSkKLQotSU5BRERSX05PTkUgPSAoLTEpCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSVBfT1BUSU9OUyA9IDEKLUlQX0hEUklOQ0wgPSAyCi1JUF9UT1MgPSAzCi1JUF9UVEwgPSA0Ci1JUF9SRUNWT1BUUyA9IDUKLUlQX1JFQ1ZSRVRPUFRTID0gNgotSVBfUkVDVkRTVEFERFIgPSA3Ci1JUF9TRU5EU1JDQUREUiA9IElQX1JFQ1ZEU1RBRERSCi1JUF9SRVRPUFRTID0gOAotSVBfTVVMVElDQVNUX0lGID0gOQotSVBfTVVMVElDQVNUX1RUTCA9IDEwCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDExCi1JUF9BRERfTUVNQkVSU0hJUCA9IDEyCi1JUF9EUk9QX01FTUJFUlNISVAgPSAxMwotSVBfTVVMVElDQVNUX1ZJRiA9IDE0Ci1JUF9SU1ZQX09OID0gMTUKLUlQX1JTVlBfT0ZGID0gMTYKLUlQX1JTVlBfVklGX09OID0gMTcKLUlQX1JTVlBfVklGX09GRiA9IDE4Ci1JUF9QT1JUUkFOR0UgPSAxOQotSVBfUkVDVklGID0gMjAKLUlQX0lQU0VDX1BPTElDWSA9IDIxCi1JUF9GQUlUSCA9IDIyCi1JUF9PTkVTQkNBU1QgPSAyMwotSVBfRldfVEFCTEVfQUREID0gNDAKLUlQX0ZXX1RBQkxFX0RFTCA9IDQxCi1JUF9GV19UQUJMRV9GTFVTSCA9IDQyCi1JUF9GV19UQUJMRV9HRVRTSVpFID0gNDMKLUlQX0ZXX1RBQkxFX0xJU1QgPSA0NAotSVBfRldfQUREID0gNTAKLUlQX0ZXX0RFTCA9IDUxCi1JUF9GV19GTFVTSCA9IDUyCi1JUF9GV19aRVJPID0gNTMKLUlQX0ZXX0dFVCA9IDU0Ci1JUF9GV19SRVNFVExPRyA9IDU1Ci1JUF9GV19OQVRfQ0ZHID0gNTYKLUlQX0ZXX05BVF9ERUwgPSA1NwotSVBfRldfTkFUX0dFVF9DT05GSUcgPSA1OAotSVBfRldfTkFUX0dFVF9MT0cgPSA1OQotSVBfRFVNTVlORVRfQ09ORklHVVJFID0gNjAKLUlQX0RVTU1ZTkVUX0RFTCA9IDYxCi1JUF9EVU1NWU5FVF9GTFVTSCA9IDYyCi1JUF9EVU1NWU5FVF9HRVQgPSA2NAotSVBfUkVDVlRUTCA9IDY1Ci1JUF9NSU5UVEwgPSA2NgotSVBfRE9OVEZSQUcgPSA2NwotSVBfQUREX1NPVVJDRV9NRU1CRVJTSElQID0gNzAKLUlQX0RST1BfU09VUkNFX01FTUJFUlNISVAgPSA3MQotSVBfQkxPQ0tfU09VUkNFID0gNzIKLUlQX1VOQkxPQ0tfU09VUkNFID0gNzMKLUlQX01TRklMVEVSID0gNzQKLU1DQVNUX0pPSU5fR1JPVVAgPSA4MAotTUNBU1RfTEVBVkVfR1JPVVAgPSA4MQotTUNBU1RfSk9JTl9TT1VSQ0VfR1JPVVAgPSA4MgotTUNBU1RfTEVBVkVfU09VUkNFX0dST1VQID0gODMKLU1DQVNUX0JMT0NLX1NPVVJDRSA9IDg0Ci1NQ0FTVF9VTkJMT0NLX1NPVVJDRSA9IDg1Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUlOX01FTUJFUlNISVBTID0gMzEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDQwOTUKLUlQX01BWF9TT1VSQ0VfRklMVEVSID0gMTAyNAotTUNBU1RfSU5DTFVERSA9IDEKLU1DQVNUX0VYQ0xVREUgPSAyCi1JUF9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQX1BPUlRSQU5HRV9ISUdIID0gMQotSVBfUE9SVFJBTkdFX0xPVyA9IDIKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19BSCArIDEpCi1JUENUTF9GT1JXQVJESU5HID0gMQotSVBDVExfU0VORFJFRElSRUNUUyA9IDIKLUlQQ1RMX0RFRlRUTCA9IDMKLUlQQ1RMX0RFRk1UVSA9IDQKLUlQQ1RMX1JURVhQSVJFID0gNQotSVBDVExfUlRNSU5FWFBJUkUgPSA2Ci1JUENUTF9SVE1BWENBQ0hFID0gNwotSVBDVExfU09VUkNFUk9VVEUgPSA4Ci1JUENUTF9ESVJFQ1RFREJST0FEQ0FTVCA9IDkKLUlQQ1RMX0lOVFJRTUFYTEVOID0gMTAKLUlQQ1RMX0lOVFJRRFJPUFMgPSAxMQotSVBDVExfU1RBVFMgPSAxMgotSVBDVExfQUNDRVBUU09VUkNFUk9VVEUgPSAxMwotSVBDVExfRkFTVEZPUldBUkRJTkcgPSAxNAotSVBDVExfS0VFUEZBSVRIID0gMTUKLUlQQ1RMX0dJRl9UVEwgPSAxNgotSVBDVExfTUFYSUQgPSAxNwotZGVmIGluX251bGxob3N0KHgpOiByZXR1cm4gKCh4KS5zX2FkZHIgPT0gSU5BRERSX0FOWSkKLQotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldDYvaW42LmgKLV9fS0FNRV9WRVJTSU9OID0gIkZyZWVCU0QiCi1JUFY2UE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQVjZQT1JUX0FOT05NSU4gPSA0OTE1MgotSVBWNlBPUlRfQU5PTk1BWCA9IDY1NTM1Ci1JUFY2UE9SVF9SRVNFUlZFRE1JTiA9IDYwMAotSVBWNlBPUlRfUkVTRVJWRURNQVggPSAoSVBWNlBPUlRfUkVTRVJWRUQtMSkKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9BRERSX0lOVDMyX09ORSA9IDEKLUlQVjZfQUREUl9JTlQzMl9UV08gPSAyCi1JUFY2X0FERFJfSU5UMzJfTU5MID0gKC0xNjcxMTY4MCkKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAoLTE2NjQ2MTQ0KQotSVBWNl9BRERSX0lOVDMyX1NNUCA9IDB4MDAwMGZmZmYKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweGZlODAKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGZlYzAKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweGZmMDIKLUlQVjZfQUREUl9JTlQzMl9PTkUgPSAweDAxMDAwMDAwCi1JUFY2X0FERFJfSU5UMzJfVFdPID0gMHgwMjAwMDAwMAotSVBWNl9BRERSX0lOVDMyX01OTCA9IDB4MDAwMDAxZmYKLUlQVjZfQUREUl9JTlQzMl9NTEwgPSAweDAwMDAwMmZmCi1JUFY2X0FERFJfSU5UMzJfU01QID0gKC02NTUzNikKLUlQVjZfQUREUl9JTlQxNl9VTEwgPSAweDgwZmUKLUlQVjZfQUREUl9JTlQxNl9VU0wgPSAweGMwZmUKLUlQVjZfQUREUl9JTlQxNl9NTEwgPSAweDAyZmYKLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhKTogcmV0dXJuIFwKLQotSVBWNl9BRERSX1NDT1BFX05PREVMT0NBTCA9IDB4MDEKLUlQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1JUFY2X0FERFJfU0NPUEVfTElOS0xPQ0FMID0gMHgwMgotSVBWNl9BRERSX1NDT1BFX1NJVEVMT0NBTCA9IDB4MDUKLUlQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLUlQVjZfQUREUl9TQ09QRV9HTE9CQUwgPSAweDBlCi1fX0lQVjZfQUREUl9TQ09QRV9OT0RFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9JTlRGQUNFTE9DQUwgPSAweDAxCi1fX0lQVjZfQUREUl9TQ09QRV9MSU5LTE9DQUwgPSAweDAyCi1fX0lQVjZfQUREUl9TQ09QRV9TSVRFTE9DQUwgPSAweDA1Ci1fX0lQVjZfQUREUl9TQ09QRV9PUkdMT0NBTCA9IDB4MDgKLV9fSVBWNl9BRERSX1NDT1BFX0dMT0JBTCA9IDB4MGUKLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19JTlRGQUNFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX05PREVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX1NDT1BFX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19TQ09QRV9FTUJFRChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfREVQUkVDQVRFRChhKTogcmV0dXJuIFwKLQotZGVmIElGQTZfSVNfSU5WQUxJRChhKTogcmV0dXJuIFwKLQotSVBWNl9PUFRJT05TID0gMQotSVBWNl9SRUNWT1BUUyA9IDUKLUlQVjZfUkVDVlJFVE9QVFMgPSA2Ci1JUFY2X1JFQ1ZEU1RBRERSID0gNwotSVBWNl9SRVRPUFRTID0gOAotSVBWNl9TT0NLT1BUX1JFU0VSVkVEMSA9IDMKLUlQVjZfVU5JQ0FTVF9IT1BTID0gNAotSVBWNl9NVUxUSUNBU1RfSUYgPSA5Ci1JUFY2X01VTFRJQ0FTVF9IT1BTID0gMTAKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBWNl9KT0lOX0dST1VQID0gMTIKLUlQVjZfTEVBVkVfR1JPVVAgPSAxMwotSVBWNl9QT1JUUkFOR0UgPSAxNAotSUNNUDZfRklMVEVSID0gMTgKLUlQVjZfMjI5MlBLVElORk8gPSAxOQotSVBWNl8yMjkySE9QTElNSVQgPSAyMAotSVBWNl8yMjkyTkVYVEhPUCA9IDIxCi1JUFY2XzIyOTJIT1BPUFRTID0gMjIKLUlQVjZfMjI5MkRTVE9QVFMgPSAyMwotSVBWNl8yMjkyUlRIRFIgPSAyNAotSVBWNl8yMjkyUEtUT1BUSU9OUyA9IDI1Ci1JUFY2X0NIRUNLU1VNID0gMjYKLUlQVjZfVjZPTkxZID0gMjcKLUlQVjZfQklORFY2T05MWSA9IElQVjZfVjZPTkxZCi1JUFY2X0lQU0VDX1BPTElDWSA9IDI4Ci1JUFY2X0ZBSVRIID0gMjkKLUlQVjZfRldfQUREID0gMzAKLUlQVjZfRldfREVMID0gMzEKLUlQVjZfRldfRkxVU0ggPSAzMgotSVBWNl9GV19aRVJPID0gMzMKLUlQVjZfRldfR0VUID0gMzQKLUlQVjZfUlRIRFJEU1RPUFRTID0gMzUKLUlQVjZfUkVDVlBLVElORk8gPSAzNgotSVBWNl9SRUNWSE9QTElNSVQgPSAzNwotSVBWNl9SRUNWUlRIRFIgPSAzOAotSVBWNl9SRUNWSE9QT1BUUyA9IDM5Ci1JUFY2X1JFQ1ZEU1RPUFRTID0gNDAKLUlQVjZfUkVDVlJUSERSRFNUT1BUUyA9IDQxCi1JUFY2X1VTRV9NSU5fTVRVID0gNDIKLUlQVjZfUkVDVlBBVEhNVFUgPSA0MwotSVBWNl9QQVRITVRVID0gNDQKLUlQVjZfUkVBQ0hDT05GID0gNDUKLUlQVjZfUEtUSU5GTyA9IDQ2Ci1JUFY2X0hPUExJTUlUID0gNDcKLUlQVjZfTkVYVEhPUCA9IDQ4Ci1JUFY2X0hPUE9QVFMgPSA0OQotSVBWNl9EU1RPUFRTID0gNTAKLUlQVjZfUlRIRFIgPSA1MQotSVBWNl9QS1RPUFRJT05TID0gNTIKLUlQVjZfUkVDVlRDTEFTUyA9IDU3Ci1JUFY2X0FVVE9GTE9XTEFCRUwgPSA1OQotSVBWNl9UQ0xBU1MgPSA2MQotSVBWNl9ET05URlJBRyA9IDYyCi1JUFY2X1BSRUZFUl9URU1QQUREUiA9IDYzCi1JUFY2X01TRklMVEVSID0gNzQKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9IT1BTID0gMQotSVBWNl9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9QT1JUUkFOR0VfREVGQVVMVCA9IDAKLUlQVjZfUE9SVFJBTkdFX0hJR0ggPSAxCi1JUFY2X1BPUlRSQU5HRV9MT1cgPSAyCi1JUFY2UFJPVE9fTUFYSUQgPSAoSVBQUk9UT19QSU0gKyAxKQotSVBWNkNUTF9GT1JXQVJESU5HID0gMQotSVBWNkNUTF9TRU5EUkVESVJFQ1RTID0gMgotSVBWNkNUTF9ERUZITElNID0gMwotSVBWNkNUTF9ERUZNVFUgPSA0Ci1JUFY2Q1RMX0ZPUldTUkNSVCA9IDUKLUlQVjZDVExfU1RBVFMgPSA2Ci1JUFY2Q1RMX01SVFNUQVRTID0gNwotSVBWNkNUTF9NUlRQUk9UTyA9IDgKLUlQVjZDVExfTUFYRlJBR1BBQ0tFVFMgPSA5Ci1JUFY2Q1RMX1NPVVJDRUNIRUNLID0gMTAKLUlQVjZDVExfU09VUkNFQ0hFQ0tfTE9HSU5UID0gMTEKLUlQVjZDVExfQUNDRVBUX1JUQURWID0gMTIKLUlQVjZDVExfS0VFUEZBSVRIID0gMTMKLUlQVjZDVExfTE9HX0lOVEVSVkFMID0gMTQKLUlQVjZDVExfSERSTkVTVExJTUlUID0gMTUKLUlQVjZDVExfREFEX0NPVU5UID0gMTYKLUlQVjZDVExfQVVUT19GTE9XTEFCRUwgPSAxNwotSVBWNkNUTF9ERUZNQ0FTVEhMSU0gPSAxOAotSVBWNkNUTF9HSUZfSExJTSA9IDE5Ci1JUFY2Q1RMX0tBTUVfVkVSU0lPTiA9IDIwCi1JUFY2Q1RMX1VTRV9ERVBSRUNBVEVEID0gMjEKLUlQVjZDVExfUlJfUFJVTkUgPSAyMgotSVBWNkNUTF9NQVBQRURfQUREUiA9IDIzCi1JUFY2Q1RMX1Y2T05MWSA9IDI0Ci1JUFY2Q1RMX1JURVhQSVJFID0gMjUKLUlQVjZDVExfUlRNSU5FWFBJUkUgPSAyNgotSVBWNkNUTF9SVE1BWENBQ0hFID0gMjcKLUlQVjZDVExfVVNFVEVNUEFERFIgPSAzMgotSVBWNkNUTF9URU1QUExUSU1FID0gMzMKLUlQVjZDVExfVEVNUFZMVElNRSA9IDM0Ci1JUFY2Q1RMX0FVVE9fTElOS0xPQ0FMID0gMzUKLUlQVjZDVExfUklQNlNUQVRTID0gMzYKLUlQVjZDVExfUFJFRkVSX1RFTVBBRERSID0gMzcKLUlQVjZDVExfQUREUkNUTFBPTElDWSA9IDM4Ci1JUFY2Q1RMX1VTRV9ERUZBVUxUWk9ORSA9IDM5Ci1JUFY2Q1RMX01BWEZSQUdTID0gNDEKLUlQVjZDVExfSUZRID0gNDIKLUlQVjZDVExfSVNBVEFQUlRSID0gNDMKLUlQVjZDVExfTUNBU1RfUE1UVSA9IDQ0Ci1JUFY2Q1RMX1NURUFMVEggPSA0NQotSVBWNkNUTF9NQVhJRCA9IDQ2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1mcmVlYnNkOC9yZWdlbiBiL0xpYi9wbGF0LWZyZWVic2Q4L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWZyZWVic2Q4L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLXB5dGhvbiAuLi8uLi9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuIGIvTGliL3BsYXQtZ2VuZXJpYy9yZWdlbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggYzk2MTY3ZC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jISAvYmluL3NoCi1zZXQgLXYKLWV2YWwgJFBZVEhPTl9GT1JfQlVJTEQgLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICInKHVfbG9uZyknIiAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9DRFJPTS5weSBiL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzQwOTM2Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0NEUk9NLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMjA3ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvbGludXgvY2Ryb20uaAotCi1DRFJPTVBBVVNFID0gMHg1MzAxCi1DRFJPTVJFU1VNRSA9IDB4NTMwMgotQ0RST01QTEFZTVNGID0gMHg1MzAzCi1DRFJPTVBMQVlUUktJTkQgPSAweDUzMDQKLUNEUk9NUkVBRFRPQ0hEUiA9IDB4NTMwNQotQ0RST01SRUFEVE9DRU5UUlkgPSAweDUzMDYKLUNEUk9NU1RPUCA9IDB4NTMwNwotQ0RST01TVEFSVCA9IDB4NTMwOAotQ0RST01FSkVDVCA9IDB4NTMwOQotQ0RST01WT0xDVFJMID0gMHg1MzBhCi1DRFJPTVNVQkNITkwgPSAweDUzMGIKLUNEUk9NUkVBRE1PREUyID0gMHg1MzBjCi1DRFJPTVJFQURNT0RFMSA9IDB4NTMwZAotQ0RST01SRUFEQVVESU8gPSAweDUzMGUKLUNEUk9NRUpFQ1RfU1cgPSAweDUzMGYKLUNEUk9NTVVMVElTRVNTSU9OID0gMHg1MzEwCi1DRFJPTV9HRVRfTUNOID0gMHg1MzExCi1DRFJPTV9HRVRfVVBDID0gQ0RST01fR0VUX01DTgotQ0RST01SRVNFVCA9IDB4NTMxMgotQ0RST01WT0xSRUFEID0gMHg1MzEzCi1DRFJPTVJFQURSQVcgPSAweDUzMTQKLUNEUk9NUkVBRENPT0tFRCA9IDB4NTMxNQotQ0RST01TRUVLID0gMHg1MzE2Ci1DRFJPTVBMQVlCTEsgPSAweDUzMTcKLUNEUk9NUkVBREFMTCA9IDB4NTMxOAotQ0RST01HRVRTUElORE9XTiA9IDB4NTMxZAotQ0RST01TRVRTUElORE9XTiA9IDB4NTMxZQotQ0RST01DTE9TRVRSQVkgPSAweDUzMTkKLUNEUk9NX1NFVF9PUFRJT05TID0gMHg1MzIwCi1DRFJPTV9DTEVBUl9PUFRJT05TID0gMHg1MzIxCi1DRFJPTV9TRUxFQ1RfU1BFRUQgPSAweDUzMjIKLUNEUk9NX1NFTEVDVF9ESVNDID0gMHg1MzIzCi1DRFJPTV9NRURJQV9DSEFOR0VEID0gMHg1MzI1Ci1DRFJPTV9EUklWRV9TVEFUVVMgPSAweDUzMjYKLUNEUk9NX0RJU0NfU1RBVFVTID0gMHg1MzI3Ci1DRFJPTV9DSEFOR0VSX05TTE9UUyA9IDB4NTMyOAotQ0RST01fTE9DS0RPT1IgPSAweDUzMjkKLUNEUk9NX0RFQlVHID0gMHg1MzMwCi1DRFJPTV9HRVRfQ0FQQUJJTElUWSA9IDB4NTMzMQotQ0RST01BVURJT0JVRlNJWiA9IDB4NTM4MgotRFZEX1JFQURfU1RSVUNUID0gMHg1MzkwCi1EVkRfV1JJVEVfU1RSVUNUID0gMHg1MzkxCi1EVkRfQVVUSCA9IDB4NTM5MgotQ0RST01fU0VORF9QQUNLRVQgPSAweDUzOTMKLUNEUk9NX05FWFRfV1JJVEFCTEUgPSAweDUzOTQKLUNEUk9NX0xBU1RfV1JJVFRFTiA9IDB4NTM5NQotQ0RST01fUEFDS0VUX1NJWkUgPSAxMgotQ0dDX0RBVEFfVU5LTk9XTiA9IDAKLUNHQ19EQVRBX1dSSVRFID0gMQotQ0dDX0RBVEFfUkVBRCA9IDIKLUNHQ19EQVRBX05PTkUgPSAzCi1DRF9NSU5TID0gNzQKLUNEX1NFQ1MgPSA2MAotQ0RfRlJBTUVTID0gNzUKLUNEX1NZTkNfU0laRSA9IDEyCi1DRF9NU0ZfT0ZGU0VUID0gMTUwCi1DRF9DSFVOS19TSVpFID0gMjQKLUNEX05VTV9PRl9DSFVOS1MgPSA5OAotQ0RfRlJBTUVTSVpFX1NVQiA9IDk2Ci1DRF9IRUFEX1NJWkUgPSA0Ci1DRF9TVUJIRUFEX1NJWkUgPSA4Ci1DRF9FRENfU0laRSA9IDQKLUNEX1pFUk9fU0laRSA9IDgKLUNEX0VDQ19TSVpFID0gMjc2Ci1DRF9GUkFNRVNJWkUgPSAyMDQ4Ci1DRF9GUkFNRVNJWkVfUkFXID0gMjM1MgotQ0RfRlJBTUVTSVpFX1JBV0VSID0gMjY0NgotQ0RfRlJBTUVTSVpFX1JBVzEgPSAoQ0RfRlJBTUVTSVpFX1JBVy1DRF9TWU5DX1NJWkUpCi1DRF9GUkFNRVNJWkVfUkFXMCA9IChDRF9GUkFNRVNJWkVfUkFXLUNEX1NZTkNfU0laRS1DRF9IRUFEX1NJWkUpCi1DRF9YQV9IRUFEID0gKENEX0hFQURfU0laRStDRF9TVUJIRUFEX1NJWkUpCi1DRF9YQV9UQUlMID0gKENEX0VEQ19TSVpFK0NEX0VDQ19TSVpFKQotQ0RfWEFfU1lOQ19IRUFEID0gKENEX1NZTkNfU0laRStDRF9YQV9IRUFEKQotQ0RST01fTEJBID0gMHgwMQotQ0RST01fTVNGID0gMHgwMgotQ0RST01fREFUQV9UUkFDSyA9IDB4MDQKLUNEUk9NX0xFQURPVVQgPSAweEFBCi1DRFJPTV9BVURJT19JTlZBTElEID0gMHgwMAotQ0RST01fQVVESU9fUExBWSA9IDB4MTEKLUNEUk9NX0FVRElPX1BBVVNFRCA9IDB4MTIKLUNEUk9NX0FVRElPX0NPTVBMRVRFRCA9IDB4MTMKLUNEUk9NX0FVRElPX0VSUk9SID0gMHgxNAotQ0RST01fQVVESU9fTk9fU1RBVFVTID0gMHgxNQotQ0RDX0NMT1NFX1RSQVkgPSAweDEKLUNEQ19PUEVOX1RSQVkgPSAweDIKLUNEQ19MT0NLID0gMHg0Ci1DRENfU0VMRUNUX1NQRUVEID0gMHg4Ci1DRENfU0VMRUNUX0RJU0MgPSAweDEwCi1DRENfTVVMVElfU0VTU0lPTiA9IDB4MjAKLUNEQ19NQ04gPSAweDQwCi1DRENfTUVESUFfQ0hBTkdFRCA9IDB4ODAKLUNEQ19QTEFZX0FVRElPID0gMHgxMDAKLUNEQ19SRVNFVCA9IDB4MjAwCi1DRENfSU9DVExTID0gMHg0MDAKLUNEQ19EUklWRV9TVEFUVVMgPSAweDgwMAotQ0RDX0dFTkVSSUNfUEFDS0VUID0gMHgxMDAwCi1DRENfQ0RfUiA9IDB4MjAwMAotQ0RDX0NEX1JXID0gMHg0MDAwCi1DRENfRFZEID0gMHg4MDAwCi1DRENfRFZEX1IgPSAweDEwMDAwCi1DRENfRFZEX1JBTSA9IDB4MjAwMDAKLUNEU19OT19JTkZPID0gMAotQ0RTX05PX0RJU0MgPSAxCi1DRFNfVFJBWV9PUEVOID0gMgotQ0RTX0RSSVZFX05PVF9SRUFEWSA9IDMKLUNEU19ESVNDX09LID0gNAotQ0RTX0FVRElPID0gMTAwCi1DRFNfREFUQV8xID0gMTAxCi1DRFNfREFUQV8yID0gMTAyCi1DRFNfWEFfMl8xID0gMTAzCi1DRFNfWEFfMl8yID0gMTA0Ci1DRFNfTUlYRUQgPSAxMDUKLUNET19BVVRPX0NMT1NFID0gMHgxCi1DRE9fQVVUT19FSkVDVCA9IDB4MgotQ0RPX1VTRV9GRkxBR1MgPSAweDQKLUNET19MT0NLID0gMHg4Ci1DRE9fQ0hFQ0tfVFlQRSA9IDB4MTAKLUNEX1BBUlRfTUFYID0gNjQKLUNEX1BBUlRfTUFTSyA9IChDRF9QQVJUX01BWCAtIDEpCi1HUENNRF9CTEFOSyA9IDB4YTEKLUdQQ01EX0NMT1NFX1RSQUNLID0gMHg1YgotR1BDTURfRkxVU0hfQ0FDSEUgPSAweDM1Ci1HUENNRF9GT1JNQVRfVU5JVCA9IDB4MDQKLUdQQ01EX0dFVF9DT05GSUdVUkFUSU9OID0gMHg0NgotR1BDTURfR0VUX0VWRU5UX1NUQVRVU19OT1RJRklDQVRJT04gPSAweDRhCi1HUENNRF9HRVRfUEVSRk9STUFOQ0UgPSAweGFjCi1HUENNRF9JTlFVSVJZID0gMHgxMgotR1BDTURfTE9BRF9VTkxPQUQgPSAweGE2Ci1HUENNRF9NRUNIQU5JU01fU1RBVFVTID0gMHhiZAotR1BDTURfTU9ERV9TRUxFQ1RfMTAgPSAweDU1Ci1HUENNRF9NT0RFX1NFTlNFXzEwID0gMHg1YQotR1BDTURfUEFVU0VfUkVTVU1FID0gMHg0YgotR1BDTURfUExBWV9BVURJT18xMCA9IDB4NDUKLUdQQ01EX1BMQVlfQVVESU9fTVNGID0gMHg0NwotR1BDTURfUExBWV9BVURJT19USSA9IDB4NDgKLUdQQ01EX1BMQVlfQ0QgPSAweGJjCi1HUENNRF9QUkVWRU5UX0FMTE9XX01FRElVTV9SRU1PVkFMID0gMHgxZQotR1BDTURfUkVBRF8xMCA9IDB4MjgKLUdQQ01EX1JFQURfMTIgPSAweGE4Ci1HUENNRF9SRUFEX0NEVkRfQ0FQQUNJVFkgPSAweDI1Ci1HUENNRF9SRUFEX0NEID0gMHhiZQotR1BDTURfUkVBRF9DRF9NU0YgPSAweGI5Ci1HUENNRF9SRUFEX0RJU0NfSU5GTyA9IDB4NTEKLUdQQ01EX1JFQURfRFZEX1NUUlVDVFVSRSA9IDB4YWQKLUdQQ01EX1JFQURfRk9STUFUX0NBUEFDSVRJRVMgPSAweDIzCi1HUENNRF9SRUFEX0hFQURFUiA9IDB4NDQKLUdQQ01EX1JFQURfVFJBQ0tfUlpPTkVfSU5GTyA9IDB4NTIKLUdQQ01EX1JFQURfU1VCQ0hBTk5FTCA9IDB4NDIKLUdQQ01EX1JFQURfVE9DX1BNQV9BVElQID0gMHg0MwotR1BDTURfUkVQQUlSX1JaT05FX1RSQUNLID0gMHg1OAotR1BDTURfUkVQT1JUX0tFWSA9IDB4YTQKLUdQQ01EX1JFUVVFU1RfU0VOU0UgPSAweDAzCi1HUENNRF9SRVNFUlZFX1JaT05FX1RSQUNLID0gMHg1MwotR1BDTURfU0NBTiA9IDB4YmEKLUdQQ01EX1NFRUsgPSAweDJiCi1HUENNRF9TRU5EX0RWRF9TVFJVQ1RVUkUgPSAweGFkCi1HUENNRF9TRU5EX0VWRU5UID0gMHhhMgotR1BDTURfU0VORF9LRVkgPSAweGEzCi1HUENNRF9TRU5EX09QQyA9IDB4NTQKLUdQQ01EX1NFVF9SRUFEX0FIRUFEID0gMHhhNwotR1BDTURfU0VUX1NUUkVBTUlORyA9IDB4YjYKLUdQQ01EX1NUQVJUX1NUT1BfVU5JVCA9IDB4MWIKLUdQQ01EX1NUT1BfUExBWV9TQ0FOID0gMHg0ZQotR1BDTURfVEVTVF9VTklUX1JFQURZID0gMHgwMAotR1BDTURfVkVSSUZZXzEwID0gMHgyZgotR1BDTURfV1JJVEVfMTAgPSAweDJhCi1HUENNRF9XUklURV9BTkRfVkVSSUZZXzEwID0gMHgyZQotR1BDTURfU0VUX1NQRUVEID0gMHhiYgotR1BDTURfUExBWUFVRElPX1RJID0gMHg0OAotR1BDTURfR0VUX01FRElBX1NUQVRVUyA9IDB4ZGEKLUdQTU9ERV9SX1dfRVJST1JfUEFHRSA9IDB4MDEKLUdQTU9ERV9XUklURV9QQVJNU19QQUdFID0gMHgwNQotR1BNT0RFX0FVRElPX0NUTF9QQUdFID0gMHgwZQotR1BNT0RFX1BPV0VSX1BBR0UgPSAweDFhCi1HUE1PREVfRkFVTFRfRkFJTF9QQUdFID0gMHgxYwotR1BNT0RFX1RPX1BST1RFQ1RfUEFHRSA9IDB4MWQKLUdQTU9ERV9DQVBBQklMSVRJRVNfUEFHRSA9IDB4MmEKLUdQTU9ERV9BTExfUEFHRVMgPSAweDNmCi1HUE1PREVfQ0RST01fUEFHRSA9IDB4MGQKLURWRF9TVFJVQ1RfUEhZU0lDQUwgPSAweDAwCi1EVkRfU1RSVUNUX0NPUFlSSUdIVCA9IDB4MDEKLURWRF9TVFJVQ1RfRElTQ0tFWSA9IDB4MDIKLURWRF9TVFJVQ1RfQkNBID0gMHgwMwotRFZEX1NUUlVDVF9NQU5VRkFDVCA9IDB4MDQKLURWRF9MQVlFUlMgPSA0Ci1EVkRfTFVfU0VORF9BR0lEID0gMAotRFZEX0hPU1RfU0VORF9DSEFMTEVOR0UgPSAxCi1EVkRfTFVfU0VORF9LRVkxID0gMgotRFZEX0xVX1NFTkRfQ0hBTExFTkdFID0gMwotRFZEX0hPU1RfU0VORF9LRVkyID0gNAotRFZEX0FVVEhfRVNUQUJMSVNIRUQgPSA1Ci1EVkRfQVVUSF9GQUlMVVJFID0gNgotRFZEX0xVX1NFTkRfVElUTEVfS0VZID0gNwotRFZEX0xVX1NFTkRfQVNGID0gOAotRFZEX0lOVkFMSURBVEVfQUdJRCA9IDkKLURWRF9MVV9TRU5EX1JQQ19TVEFURSA9IDEwCi1EVkRfSE9TVF9TRU5EX1JQQ19TVEFURSA9IDExCi1EVkRfQ1BNX05PX0NPUFlSSUdIVCA9IDAKLURWRF9DUE1fQ09QWVJJR0hURUQgPSAxCi1EVkRfQ1BfU0VDX05PTkUgPSAwCi1EVkRfQ1BfU0VDX0VYSVNUID0gMQotRFZEX0NHTVNfVU5SRVNUUklDVEVEID0gMAotRFZEX0NHTVNfU0lOR0xFID0gMgotRFZEX0NHTVNfUkVTVFJJQ1RFRCA9IDMKLQotQ0RST01fTUFYX1NMT1RTID0gMjU2CmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9ETEZDTi5weSBiL0xpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZDEwYWM0Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L0RMRkNOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9kbGZjbi5oCi1fRExGQ05fSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGZlYXR1cmVzLmgKLV9GRUFUVVJFU19IID0gMQotX19VU0VfQU5TSSA9IDEKLV9fRkFWT1JfQlNEID0gMQotX0lTT0M5OV9TT1VSQ0UgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fWE9QRU5fU09VUkNFID0gNjAwCi1fWE9QRU5fU09VUkNFX0VYVEVOREVEID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fX1VTRV9QT1NJWCA9IDEKLV9fVVNFX1BPU0lYMiA9IDEKLV9fVVNFX1BPU0lYMTk5MzA5ID0gMQotX19VU0VfUE9TSVgxOTk1MDYgPSAxCi1fX1VTRV9YT1BFTiA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfVU5JWDk4ID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fX1VTRV9YT1BFTjJLID0gMQotX19VU0VfSVNPQzk5ID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0ZJTEVfT0ZGU0VUNjQgPSAxCi1fX1VTRV9NSVNDID0gMQotX19VU0VfQlNEID0gMQotX19VU0VfU1ZJRCA9IDEKLV9fVVNFX0dOVSA9IDEKLV9fVVNFX1JFRU5UUkFOVCA9IDEKLV9fU1REQ19JRUNfNTU5X18gPSAxCi1fX1NURENfSUVDXzU1OV9DT01QTEVYX18gPSAxCi1fX1NURENfSVNPXzEwNjQ2X18gPSAyMDAwMDkKLV9fR05VX0xJQlJBUllfXyA9IDYKLV9fR0xJQkNfXyA9IDIKLV9fR0xJQkNfTUlOT1JfXyA9IDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fU1lTX0NERUZTX0ggPSAxCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1AoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFswXQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFsxXQotZGVmIF9fQVNNTkFNRShjbmFtZSk6IHJldHVybiBfX0FTTU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIGNuYW1lKQotCi1kZWYgX19hdHRyaWJ1dGVfXyh4eXopOiByZXR1cm4KLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4KLQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9FWFRFUk5fSU5MSU5FUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGdudS9zdHVicy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2RsZmNuLmgKLVJUTERfTEFaWSA9IDB4MDAwMDEKLVJUTERfTk9XID0gMHgwMDAwMgotUlRMRF9CSU5ESU5HX01BU0sgPSAweDMKLVJUTERfTk9MT0FEID0gMHgwMDAwNAotUlRMRF9HTE9CQUwgPSAweDAwMTAwCi1SVExEX0xPQ0FMID0gMAotUlRMRF9OT0RFTEVURSA9IDB4MDEwMDAKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LWxpbnV4L0lOLnB5IGIvTGliL3BsYXQtbGludXgvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3ZDMwMDIuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbGludXgvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2MTUgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLV9ORVRJTkVUX0lOX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBmZWF0dXJlcy5oCi1fRkVBVFVSRVNfSCA9IDEKLV9fVVNFX0FOU0kgPSAxCi1fX0ZBVk9SX0JTRCA9IDEKLV9JU09DOTlfU09VUkNFID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1hPUEVOX1NPVVJDRSA9IDYwMAotX1hPUEVOX1NPVVJDRV9FWFRFTkRFRCA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fQlNEX1NPVVJDRSA9IDEKLV9TVklEX1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX19VU0VfSVNPQzk5ID0gMQotX1BPU0lYX1NPVVJDRSA9IDEKLV9QT1NJWF9DX1NPVVJDRSA9IDIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX19VU0VfUE9TSVggPSAxCi1fX1VTRV9QT1NJWDIgPSAxCi1fX1VTRV9QT1NJWDE5OTMwOSA9IDEKLV9fVVNFX1BPU0lYMTk5NTA2ID0gMQotX19VU0VfWE9QRU4gPSAxCi1fX1VTRV9YT1BFTl9FWFRFTkRFRCA9IDEKLV9fVVNFX1VOSVg5OCA9IDEKLV9MQVJHRUZJTEVfU09VUkNFID0gMQotX19VU0VfWE9QRU4ySyA9IDEKLV9fVVNFX0lTT0M5OSA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9GSUxFX09GRlNFVDY0ID0gMQotX19VU0VfTUlTQyA9IDEKLV9fVVNFX0JTRCA9IDEKLV9fVVNFX1NWSUQgPSAxCi1fX1VTRV9HTlUgPSAxCi1fX1VTRV9SRUVOVFJBTlQgPSAxCi1fX1NURENfSUVDXzU1OV9fID0gMQotX19TVERDX0lFQ181NTlfQ09NUExFWF9fID0gMQotX19TVERDX0lTT18xMDY0Nl9fID0gMjAwMDA5Ci1fX0dOVV9MSUJSQVJZX18gPSA2Ci1fX0dMSUJDX18gPSAyCi1fX0dMSUJDX01JTk9SX18gPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY2RlZnMuaAotX1NZU19DREVGU19IID0gMQotZGVmIF9fUE1UKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QKGFyZ3MpOiByZXR1cm4gYXJncwotCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1NUUklORyh4KTogcmV0dXJuICN4Ci0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMF0KLV9fZmxleGFyciA9IFtdCi1fX2ZsZXhhcnIgPSBbMV0KLWRlZiBfX0FTTU5BTUUoY25hbWUpOiByZXR1cm4gX19BU01OQU1FMiAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCBjbmFtZSkKLQotZGVmIF9fYXR0cmlidXRlX18oeHl6KTogcmV0dXJuCi0KLWRlZiBfX2F0dHJpYnV0ZV9mb3JtYXRfYXJnX18oeCk6IHJldHVybiBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfYXJnX18gKHgpKSkKLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuCi0KLV9fVVNFX0xBUkdFRklMRSA9IDEKLV9fVVNFX0xBUkdFRklMRTY0ID0gMQotX19VU0VfRVhURVJOX0lOTElORVMgPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBnbnUvc3R1YnMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3RkaW50LmgKLV9TVERJTlRfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvd2NoYXIuaAotX0JJVFNfV0NIQVJfSCA9IDEKLV9fV0NIQVJfTUlOID0gKC0yMTQ3NDgzNjQ3IC0gMSkKLV9fV0NIQVJfTUFYID0gKDIxNDc0ODM2NDcpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3dvcmRzaXplLmgKLV9fV09SRFNJWkUgPSAzMgotZGVmIF9fSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgTAotCi1kZWYgX19VSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIF9fSU5UNjRfQyhjKTogcmV0dXJuIGMgIyMgTEwKLQotZGVmIF9fVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMTAotCi1JTlQ4X01JTiA9ICgtMTI4KQotSU5UMTZfTUlOID0gKC0zMjc2Ny0xKQotSU5UMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlQ2NF9NSU4gPSAoLV9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KS0xKQotSU5UOF9NQVggPSAoMTI3KQotSU5UMTZfTUFYID0gKDMyNzY3KQotSU5UMzJfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlQ2NF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVDhfTUFYID0gKDI1NSkKLVVJTlQxNl9NQVggPSAoNjU1MzUpCi1VSU5UNjRfTUFYID0gKF9fVUlOVDY0X0MoMTg0NDY3NDQwNzM3MDk1NTE2MTUpKQotSU5UX0xFQVNUOF9NSU4gPSAoLTEyOCkKLUlOVF9MRUFTVDE2X01JTiA9ICgtMzI3NjctMSkKLUlOVF9MRUFTVDMyX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX0xFQVNUNjRfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVF9MRUFTVDhfTUFYID0gKDEyNykKLUlOVF9MRUFTVDE2X01BWCA9ICgzMjc2NykKLUlOVF9MRUFTVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UX0xFQVNUNjRfTUFYID0gKF9fSU5UNjRfQyg5MjIzMzcyMDM2ODU0Nzc1ODA3KSkKLVVJTlRfTEVBU1Q4X01BWCA9ICgyNTUpCi1VSU5UX0xFQVNUMTZfTUFYID0gKDY1NTM1KQotVUlOVF9MRUFTVDY0X01BWCA9IChfX1VJTlQ2NF9DKDE4NDQ2NzQ0MDczNzA5NTUxNjE1KSkKLUlOVF9GQVNUOF9NSU4gPSAoLTEyOCkKLUlOVF9GQVNUMTZfTUlOID0gKC05MjIzMzcyMDM2ODU0Nzc1ODA3LTEpCi1JTlRfRkFTVDMyX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotSU5UX0ZBU1QxNl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9GQVNUMzJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRfRkFTVDY0X01JTiA9ICgtX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpLTEpCi1JTlRfRkFTVDhfTUFYID0gKDEyNykKLUlOVF9GQVNUMTZfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1JTlRfRkFTVDMyX01BWCA9ICg5MjIzMzcyMDM2ODU0Nzc1ODA3KQotSU5UX0ZBU1QxNl9NQVggPSAoMjE0NzQ4MzY0NykKLUlOVF9GQVNUMzJfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRfRkFTVDY0X01BWCA9IChfX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNykpCi1VSU5UX0ZBU1Q4X01BWCA9ICgyNTUpCi1VSU5UX0ZBU1Q2NF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1JTlRQVFJfTUlOID0gKC05MjIzMzcyMDM2ODU0Nzc1ODA3LTEpCi1JTlRQVFJfTUFYID0gKDkyMjMzNzIwMzY4NTQ3NzU4MDcpCi1JTlRQVFJfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1JTlRQVFJfTUFYID0gKDIxNDc0ODM2NDcpCi1JTlRNQVhfTUlOID0gKC1fX0lOVDY0X0MoOTIyMzM3MjAzNjg1NDc3NTgwNyktMSkKLUlOVE1BWF9NQVggPSAoX19JTlQ2NF9DKDkyMjMzNzIwMzY4NTQ3NzU4MDcpKQotVUlOVE1BWF9NQVggPSAoX19VSU5UNjRfQygxODQ0Njc0NDA3MzcwOTU1MTYxNSkpCi1QVFJESUZGX01JTiA9ICgtOTIyMzM3MjAzNjg1NDc3NTgwNy0xKQotUFRSRElGRl9NQVggPSAoOTIyMzM3MjAzNjg1NDc3NTgwNykKLVBUUkRJRkZfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1QVFJESUZGX01BWCA9ICgyMTQ3NDgzNjQ3KQotU0lHX0FUT01JQ19NSU4gPSAoLTIxNDc0ODM2NDctMSkKLVNJR19BVE9NSUNfTUFYID0gKDIxNDc0ODM2NDcpCi1XQ0hBUl9NSU4gPSBfX1dDSEFSX01JTgotV0NIQVJfTUFYID0gX19XQ0hBUl9NQVgKLWRlZiBJTlQ4X0MoYyk6IHJldHVybiBjCi0KLWRlZiBJTlQxNl9DKGMpOiByZXR1cm4gYwotCi1kZWYgSU5UMzJfQyhjKTogcmV0dXJuIGMKLQotZGVmIElOVDY0X0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIElOVDY0X0MoYyk6IHJldHVybiBjICMjIExMCi0KLWRlZiBVSU5UOF9DKGMpOiByZXR1cm4gYyAjIyBVCi0KLWRlZiBVSU5UMTZfQyhjKTogcmV0dXJuIGMgIyMgVQotCi1kZWYgVUlOVDMyX0MoYyk6IHJldHVybiBjICMjIFUKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gYyAjIyBVTAotCi1kZWYgVUlOVDY0X0MoYyk6IHJldHVybiBjICMjIFVMTAotCi1kZWYgSU5UTUFYX0MoYyk6IHJldHVybiBjICMjIEwKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIGMgIyMgVUwKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBMTAotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gYyAjIyBVTEwKLQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy90eXBlcy5oCi1fQklUU19UWVBFU19IID0gMQotX19GRF9TRVRTSVpFID0gMTAyNAotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9wdGhyZWFkdHlwZXMuaAotX0JJVFNfUFRIUkVBRFRZUEVTX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NjaGVkLmgKLVNDSEVEX09USEVSID0gMAotU0NIRURfRklGTyA9IDEKLVNDSEVEX1JSID0gMgotQ1NJR05BTCA9IDB4MDAwMDAwZmYKLUNMT05FX1ZNID0gMHgwMDAwMDEwMAotQ0xPTkVfRlMgPSAweDAwMDAwMjAwCi1DTE9ORV9GSUxFUyA9IDB4MDAwMDA0MDAKLUNMT05FX1NJR0hBTkQgPSAweDAwMDAwODAwCi1DTE9ORV9QSUQgPSAweDAwMDAxMDAwCi1DTE9ORV9QVFJBQ0UgPSAweDAwMDAyMDAwCi1DTE9ORV9WRk9SSyA9IDB4MDAwMDQwMDAKLV9fZGVmaW5lZF9zY2hlZHBhcmFtID0gMQotZGVmIElOX0NMQVNTQShhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMjE0NzQ4MzY0OCkpID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAoLTE2Nzc3MjE2KQotSU5fQ0xBU1NBX05TSElGVCA9IDI0Ci1JTl9DTEFTU0FfSE9TVCA9ICgoLTEpICYgfklOX0NMQVNTQV9ORVQpCi1JTl9DTEFTU0FfTUFYID0gMTI4Ci1kZWYgSU5fQ0xBU1NCKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC0xMDczNzQxODI0KSkgPT0gKC0yMTQ3NDgzNjQ4KSkKLQotSU5fQ0xBU1NCX05FVCA9ICgtNjU1MzYpCi1JTl9DTEFTU0JfTlNISUZUID0gMTYKLUlOX0NMQVNTQl9IT1NUID0gKCgtMSkgJiB+SU5fQ0xBU1NCX05FVCkKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtNTM2ODcwOTEyKSkgPT0gKC0xMDczNzQxODI0KSkKLQotSU5fQ0xBU1NDX05FVCA9ICgtMjU2KQotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gKCgtMSkgJiB+SU5fQ0xBU1NDX05FVCkKLWRlZiBJTl9DTEFTU0QoYSk6IHJldHVybiAoKCgoaW5fYWRkcl90KShhKSkgJiAoLTI2ODQzNTQ1NikpID09ICgtNTM2ODcwOTEyKSkKLQotZGVmIElOX01VTFRJQ0FTVChhKTogcmV0dXJuIElOX0NMQVNTRChhKQotCi1kZWYgSU5fRVhQRVJJTUVOVEFMKGEpOiByZXR1cm4gKCgoKGluX2FkZHJfdCkoYSkpICYgKC01MzY4NzA5MTIpKSA9PSAoLTUzNjg3MDkxMikpCi0KLWRlZiBJTl9CQURDTEFTUyhhKTogcmV0dXJuICgoKChpbl9hZGRyX3QpKGEpKSAmICgtMjY4NDM1NDU2KSkgPT0gKC0yNjg0MzU0NTYpKQotCi1JTl9MT09QQkFDS05FVCA9IDEyNwotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zb2NrZXQuaAotCi0jIEluY2x1ZGVkIGZyb20gbGltaXRzLmgKLV9MSUJDX0xJTUlUU19IXyA9IDEKLU1CX0xFTl9NQVggPSAxNgotX0xJTUlUU19IID0gMQotQ0hBUl9CSVQgPSA4Ci1TQ0hBUl9NSU4gPSAoLTEyOCkKLVNDSEFSX01BWCA9IDEyNwotVUNIQVJfTUFYID0gMjU1Ci1DSEFSX01JTiA9IDAKLUNIQVJfTUFYID0gVUNIQVJfTUFYCi1DSEFSX01JTiA9IFNDSEFSX01JTgotQ0hBUl9NQVggPSBTQ0hBUl9NQVgKLVNIUlRfTUlOID0gKC0zMjc2OCkKLVNIUlRfTUFYID0gMzI3NjcKLVVTSFJUX01BWCA9IDY1NTM1Ci1JTlRfTUFYID0gMjE0NzQ4MzY0NwotTE9OR19NQVggPSA5MjIzMzcyMDM2ODU0Nzc1ODA3Ci1MT05HX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUlOID0gKC1MT05HX01BWCAtIDEpCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3Bvc2l4MV9saW0uaAotX0JJVFNfUE9TSVgxX0xJTV9IID0gMQotX1BPU0lYX0FJT19MSVNUSU9fTUFYID0gMgotX1BPU0lYX0FJT19NQVggPSAxCi1fUE9TSVhfQVJHX01BWCA9IDQwOTYKLV9QT1NJWF9DSElMRF9NQVggPSA2Ci1fUE9TSVhfREVMQVlUSU1FUl9NQVggPSAzMgotX1BPU0lYX0xJTktfTUFYID0gOAotX1BPU0lYX01BWF9DQU5PTiA9IDI1NQotX1BPU0lYX01BWF9JTlBVVCA9IDI1NQotX1BPU0lYX01RX09QRU5fTUFYID0gOAotX1BPU0lYX01RX1BSSU9fTUFYID0gMzIKLV9QT1NJWF9OR1JPVVBTX01BWCA9IDAKLV9QT1NJWF9PUEVOX01BWCA9IDE2Ci1fUE9TSVhfRkRfU0VUU0laRSA9IF9QT1NJWF9PUEVOX01BWAotX1BPU0lYX05BTUVfTUFYID0gMTQKLV9QT1NJWF9QQVRIX01BWCA9IDI1NgotX1BPU0lYX1BJUEVfQlVGID0gNTEyCi1fUE9TSVhfUlRTSUdfTUFYID0gOAotX1BPU0lYX1NFTV9OU0VNU19NQVggPSAyNTYKLV9QT1NJWF9TRU1fVkFMVUVfTUFYID0gMzI3NjcKLV9QT1NJWF9TSUdRVUVVRV9NQVggPSAzMgotX1BPU0lYX1NTSVpFX01BWCA9IDMyNzY3Ci1fUE9TSVhfU1RSRUFNX01BWCA9IDgKLV9QT1NJWF9UWk5BTUVfTUFYID0gNgotX1BPU0lYX1FMSU1JVCA9IDEKLV9QT1NJWF9ISVdBVCA9IF9QT1NJWF9QSVBFX0JVRgotX1BPU0lYX1VJT19NQVhJT1YgPSAxNgotX1BPU0lYX1RUWV9OQU1FX01BWCA9IDkKLV9QT1NJWF9USU1FUl9NQVggPSAzMgotX1BPU0lYX0xPR0lOX05BTUVfTUFYID0gOQotX1BPU0lYX0NMT0NLUkVTX01JTiA9IDIwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2xvY2FsX2xpbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBsaW51eC9saW1pdHMuaAotTlJfT1BFTiA9IDEwMjQKLU5HUk9VUFNfTUFYID0gMzIKLUFSR19NQVggPSAxMzEwNzIKLUNISUxEX01BWCA9IDk5OQotT1BFTl9NQVggPSAyNTYKLUxJTktfTUFYID0gMTI3Ci1NQVhfQ0FOT04gPSAyNTUKLU1BWF9JTlBVVCA9IDI1NQotTkFNRV9NQVggPSAyNTUKLVBBVEhfTUFYID0gNDA5NgotUElQRV9CVUYgPSA0MDk2Ci1SVFNJR19NQVggPSAzMgotX1BPU0lYX1RIUkVBRF9LRVlTX01BWCA9IDEyOAotUFRIUkVBRF9LRVlTX01BWCA9IDEwMjQKLV9QT1NJWF9USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gNAotUFRIUkVBRF9ERVNUUlVDVE9SX0lURVJBVElPTlMgPSBfUE9TSVhfVEhSRUFEX0RFU1RSVUNUT1JfSVRFUkFUSU9OUwotX1BPU0lYX1RIUkVBRF9USFJFQURTX01BWCA9IDY0Ci1QVEhSRUFEX1RIUkVBRFNfTUFYID0gMTAyNAotQUlPX1BSSU9fREVMVEFfTUFYID0gMjAKLVBUSFJFQURfU1RBQ0tfTUlOID0gMTYzODQKLVRJTUVSX01BWCA9IDI1NgotU1NJWkVfTUFYID0gTE9OR19NQVgKLU5HUk9VUFNfTUFYID0gX1BPU0lYX05HUk9VUFNfTUFYCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3Bvc2l4Ml9saW0uaAotX0JJVFNfUE9TSVgyX0xJTV9IID0gMQotX1BPU0lYMl9CQ19CQVNFX01BWCA9IDk5Ci1fUE9TSVgyX0JDX0RJTV9NQVggPSAyMDQ4Ci1fUE9TSVgyX0JDX1NDQUxFX01BWCA9IDk5Ci1fUE9TSVgyX0JDX1NUUklOR19NQVggPSAxMDAwCi1fUE9TSVgyX0NPTExfV0VJR0hUU19NQVggPSAyCi1fUE9TSVgyX0VYUFJfTkVTVF9NQVggPSAzMgotX1BPU0lYMl9MSU5FX01BWCA9IDIwNDgKLV9QT1NJWDJfUkVfRFVQX01BWCA9IDI1NQotX1BPU0lYMl9DSEFSQ0xBU1NfTkFNRV9NQVggPSAxNAotQkNfQkFTRV9NQVggPSBfUE9TSVgyX0JDX0JBU0VfTUFYCi1CQ19ESU1fTUFYID0gX1BPU0lYMl9CQ19ESU1fTUFYCi1CQ19TQ0FMRV9NQVggPSBfUE9TSVgyX0JDX1NDQUxFX01BWAotQkNfU1RSSU5HX01BWCA9IF9QT1NJWDJfQkNfU1RSSU5HX01BWAotQ09MTF9XRUlHSFRTX01BWCA9IDI1NQotRVhQUl9ORVNUX01BWCA9IF9QT1NJWDJfRVhQUl9ORVNUX01BWAotTElORV9NQVggPSBfUE9TSVgyX0xJTkVfTUFYCi1DSEFSQ0xBU1NfTkFNRV9NQVggPSAyMDQ4Ci1SRV9EVVBfTUFYID0gKDB4N2ZmZikKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMveG9wZW5fbGltLmgKLV9YT1BFTl9MSU1fSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc3RkaW9fbGltLmgKLUxfdG1wbmFtID0gMjAKLVRNUF9NQVggPSAyMzgzMjgKLUZJTEVOQU1FX01BWCA9IDQwOTYKLUxfY3Rlcm1pZCA9IDkKLUxfY3VzZXJpZCA9IDkKLUZPUEVOX01BWCA9IDE2Ci1JT1ZfTUFYID0gMTAyNAotX1hPUEVOX0lPVl9NQVggPSBfUE9TSVhfVUlPX01BWElPVgotTkxfQVJHTUFYID0gX1BPU0lYX0FSR19NQVgKLU5MX0xBTkdNQVggPSBfUE9TSVgyX0xJTkVfTUFYCi1OTF9NU0dNQVggPSBJTlRfTUFYCi1OTF9OTUFYID0gSU5UX01BWAotTkxfU0VUTUFYID0gSU5UX01BWAotTkxfVEVYVE1BWCA9IElOVF9NQVgKLU5aRVJPID0gMjAKLVdPUkRfQklUID0gMTYKLVdPUkRfQklUID0gMzIKLVdPUkRfQklUID0gNjQKLVdPUkRfQklUID0gMTYKLVdPUkRfQklUID0gMzIKLVdPUkRfQklUID0gNjQKLVdPUkRfQklUID0gMzIKLUxPTkdfQklUID0gMzIKLUxPTkdfQklUID0gNjQKLUxPTkdfQklUID0gMzIKLUxPTkdfQklUID0gNjQKLUxPTkdfQklUID0gNjQKLUxPTkdfQklUID0gMzIKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBGX1VOU1BFQyA9IDAKLVBGX0xPQ0FMID0gMQotUEZfVU5JWCA9IFBGX0xPQ0FMCi1QRl9GSUxFID0gUEZfTE9DQUwKLVBGX0lORVQgPSAyCi1QRl9BWDI1ID0gMwotUEZfSVBYID0gNAotUEZfQVBQTEVUQUxLID0gNQotUEZfTkVUUk9NID0gNgotUEZfQlJJREdFID0gNwotUEZfQVRNUFZDID0gOAotUEZfWDI1ID0gOQotUEZfSU5FVDYgPSAxMAotUEZfUk9TRSA9IDExCi1QRl9ERUNuZXQgPSAxMgotUEZfTkVUQkVVSSA9IDEzCi1QRl9TRUNVUklUWSA9IDE0Ci1QRl9LRVkgPSAxNQotUEZfTkVUTElOSyA9IDE2Ci1QRl9ST1VURSA9IFBGX05FVExJTksKLVBGX1BBQ0tFVCA9IDE3Ci1QRl9BU0ggPSAxOAotUEZfRUNPTkVUID0gMTkKLVBGX0FUTVNWQyA9IDIwCi1QRl9TTkEgPSAyMgotUEZfSVJEQSA9IDIzCi1QRl9QUFBPWCA9IDI0Ci1QRl9XQU5QSVBFID0gMjUKLVBGX0JMVUVUT09USCA9IDMxCi1QRl9NQVggPSAzMgotQUZfVU5TUEVDID0gUEZfVU5TUEVDCi1BRl9MT0NBTCA9IFBGX0xPQ0FMCi1BRl9VTklYID0gUEZfVU5JWAotQUZfRklMRSA9IFBGX0ZJTEUKLUFGX0lORVQgPSBQRl9JTkVUCi1BRl9BWDI1ID0gUEZfQVgyNQotQUZfSVBYID0gUEZfSVBYCi1BRl9BUFBMRVRBTEsgPSBQRl9BUFBMRVRBTEsKLUFGX05FVFJPTSA9IFBGX05FVFJPTQotQUZfQlJJREdFID0gUEZfQlJJREdFCi1BRl9BVE1QVkMgPSBQRl9BVE1QVkMKLUFGX1gyNSA9IFBGX1gyNQotQUZfSU5FVDYgPSBQRl9JTkVUNgotQUZfUk9TRSA9IFBGX1JPU0UKLUFGX0RFQ25ldCA9IFBGX0RFQ25ldAotQUZfTkVUQkVVSSA9IFBGX05FVEJFVUkKLUFGX1NFQ1VSSVRZID0gUEZfU0VDVVJJVFkKLUFGX0tFWSA9IFBGX0tFWQotQUZfTkVUTElOSyA9IFBGX05FVExJTksKLUFGX1JPVVRFID0gUEZfUk9VVEUKLUFGX1BBQ0tFVCA9IFBGX1BBQ0tFVAotQUZfQVNIID0gUEZfQVNICi1BRl9FQ09ORVQgPSBQRl9FQ09ORVQKLUFGX0FUTVNWQyA9IFBGX0FUTVNWQwotQUZfU05BID0gUEZfU05BCi1BRl9JUkRBID0gUEZfSVJEQQotQUZfUFBQT1ggPSBQRl9QUFBPWAotQUZfV0FOUElQRSA9IFBGX1dBTlBJUEUKLUFGX0JMVUVUT09USCA9IFBGX0JMVUVUT09USAotQUZfTUFYID0gUEZfTUFYCi1TT0xfUkFXID0gMjU1Ci1TT0xfREVDTkVUID0gMjYxCi1TT0xfWDI1ID0gMjYyCi1TT0xfUEFDS0VUID0gMjYzCi1TT0xfQVRNID0gMjY0Ci1TT0xfQUFMID0gMjY1Ci1TT0xfSVJEQSA9IDI2NgotU09NQVhDT05OID0gMTI4Ci0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3NvY2thZGRyLmgKLV9CSVRTX1NPQ0tBRERSX0ggPSAxCi1kZWYgX19TT0NLQUREUl9DT01NT04oc2FfcHJlZml4KTogcmV0dXJuIFwKLQotX1NTX1NJWkUgPSAxMjgKLWRlZiBDTVNHX0ZJUlNUSERSKG1oZHIpOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSBhc20vc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIGFzbS9zb2NraW9zLmgKLUZJT1NFVE9XTiA9IDB4ODkwMQotU0lPQ1NQR1JQID0gMHg4OTAyCi1GSU9HRVRPV04gPSAweDg5MDMKLVNJT0NHUEdSUCA9IDB4ODkwNAotU0lPQ0FUTUFSSyA9IDB4ODkwNQotU0lPQ0dTVEFNUCA9IDB4ODkwNgotU09MX1NPQ0tFVCA9IDEKLVNPX0RFQlVHID0gMQotU09fUkVVU0VBRERSID0gMgotU09fVFlQRSA9IDMKLVNPX0VSUk9SID0gNAotU09fRE9OVFJPVVRFID0gNQotU09fQlJPQURDQVNUID0gNgotU09fU05EQlVGID0gNwotU09fUkNWQlVGID0gOAotU09fS0VFUEFMSVZFID0gOQotU09fT09CSU5MSU5FID0gMTAKLVNPX05PX0NIRUNLID0gMTEKLVNPX1BSSU9SSVRZID0gMTIKLVNPX0xJTkdFUiA9IDEzCi1TT19CU0RDT01QQVQgPSAxNAotU09fUEFTU0NSRUQgPSAxNgotU09fUEVFUkNSRUQgPSAxNwotU09fUkNWTE9XQVQgPSAxOAotU09fU05ETE9XQVQgPSAxOQotU09fUkNWVElNRU8gPSAyMAotU09fU05EVElNRU8gPSAyMQotU09fU0VDVVJJVFlfQVVUSEVOVElDQVRJT04gPSAyMgotU09fU0VDVVJJVFlfRU5DUllQVElPTl9UUkFOU1BPUlQgPSAyMwotU09fU0VDVVJJVFlfRU5DUllQVElPTl9ORVRXT1JLID0gMjQKLVNPX0JJTkRUT0RFVklDRSA9IDI1Ci1TT19BVFRBQ0hfRklMVEVSID0gMjYKLVNPX0RFVEFDSF9GSUxURVIgPSAyNwotU09fUEVFUk5BTUUgPSAyOAotU09fVElNRVNUQU1QID0gMjkKLVNDTV9USU1FU1RBTVAgPSBTT19USU1FU1RBTVAKLVNPX0FDQ0VQVENPTk4gPSAzMAotU09DS19TVFJFQU0gPSAxCi1TT0NLX0RHUkFNID0gMgotU09DS19SQVcgPSAzCi1TT0NLX1JETSA9IDQKLVNPQ0tfU0VRUEFDS0VUID0gNQotU09DS19QQUNLRVQgPSAxMAotU09DS19NQVggPSAoU09DS19QQUNLRVQrMSkKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvaW4uaAotSVBfVE9TID0gMQotSVBfVFRMID0gMgotSVBfSERSSU5DTCA9IDMKLUlQX09QVElPTlMgPSA0Ci1JUF9ST1VURVJfQUxFUlQgPSA1Ci1JUF9SRUNWT1BUUyA9IDYKLUlQX1JFVE9QVFMgPSA3Ci1JUF9QS1RJTkZPID0gOAotSVBfUEtUT1BUSU9OUyA9IDkKLUlQX1BNVFVESVNDID0gMTAKLUlQX01UVV9ESVNDT1ZFUiA9IDEwCi1JUF9SRUNWRVJSID0gMTEKLUlQX1JFQ1ZUVEwgPSAxMgotSVBfUkVDVlRPUyA9IDEzCi1JUF9NVUxUSUNBU1RfSUYgPSAzMgotSVBfTVVMVElDQVNUX1RUTCA9IDMzCi1JUF9NVUxUSUNBU1RfTE9PUCA9IDM0Ci1JUF9BRERfTUVNQkVSU0hJUCA9IDM1Ci1JUF9EUk9QX01FTUJFUlNISVAgPSAzNgotSVBfUkVDVlJFVE9QVFMgPSBJUF9SRVRPUFRTCi1JUF9QTVRVRElTQ19ET05UID0gMAotSVBfUE1UVURJU0NfV0FOVCA9IDEKLUlQX1BNVFVESVNDX0RPID0gMgotU09MX0lQID0gMAotSVBfREVGQVVMVF9NVUxUSUNBU1RfVFRMID0gMQotSVBfREVGQVVMVF9NVUxUSUNBU1RfTE9PUCA9IDEKLUlQX01BWF9NRU1CRVJTSElQUyA9IDIwCi1JUFY2X0FERFJGT1JNID0gMQotSVBWNl9QS1RJTkZPID0gMgotSVBWNl9IT1BPUFRTID0gMwotSVBWNl9EU1RPUFRTID0gNAotSVBWNl9SVEhEUiA9IDUKLUlQVjZfUEtUT1BUSU9OUyA9IDYKLUlQVjZfQ0hFQ0tTVU0gPSA3Ci1JUFY2X0hPUExJTUlUID0gOAotSVBWNl9ORVhUSE9QID0gOQotSVBWNl9BVVRISERSID0gMTAKLUlQVjZfVU5JQ0FTVF9IT1BTID0gMTYKLUlQVjZfTVVMVElDQVNUX0lGID0gMTcKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAxOAotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDE5Ci1JUFY2X0pPSU5fR1JPVVAgPSAyMAotSVBWNl9MRUFWRV9HUk9VUCA9IDIxCi1JUFY2X1JPVVRFUl9BTEVSVCA9IDIyCi1JUFY2X01UVV9ESVNDT1ZFUiA9IDIzCi1JUFY2X01UVSA9IDI0Ci1JUFY2X1JFQ1ZFUlIgPSAyNQotSVBWNl9SWEhPUE9QVFMgPSBJUFY2X0hPUE9QVFMKLUlQVjZfUlhEU1RPUFRTID0gSVBWNl9EU1RPUFRTCi1JUFY2X0FERF9NRU1CRVJTSElQID0gSVBWNl9KT0lOX0dST1VQCi1JUFY2X0RST1BfTUVNQkVSU0hJUCA9IElQVjZfTEVBVkVfR1JPVVAKLUlQVjZfUE1UVURJU0NfRE9OVCA9IDAKLUlQVjZfUE1UVURJU0NfV0FOVCA9IDEKLUlQVjZfUE1UVURJU0NfRE8gPSAyCi1TT0xfSVBWNiA9IDQxCi1TT0xfSUNNUFY2ID0gNTgKLUlQVjZfUlRIRFJfTE9PU0UgPSAwCi1JUFY2X1JUSERSX1NUUklDVCA9IDEKLUlQVjZfUlRIRFJfVFlQRV8wID0gMAotCi0jIEluY2x1ZGVkIGZyb20gZW5kaWFuLmgKLV9FTkRJQU5fSCA9IDEKLV9fTElUVExFX0VORElBTiA9IDEyMzQKLV9fQklHX0VORElBTiA9IDQzMjEKLV9fUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvZW5kaWFuLmgKLV9fQllURV9PUkRFUiA9IF9fTElUVExFX0VORElBTgotX19GTE9BVF9XT1JEX09SREVSID0gX19CWVRFX09SREVSCi1MSVRUTEVfRU5ESUFOID0gX19MSVRUTEVfRU5ESUFOCi1CSUdfRU5ESUFOID0gX19CSUdfRU5ESUFOCi1QRFBfRU5ESUFOID0gX19QRFBfRU5ESUFOCi1CWVRFX09SREVSID0gX19CWVRFX09SREVSCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL2J5dGVzd2FwLmgKLV9CSVRTX0JZVEVTV0FQX0ggPSAxCi1kZWYgX19ic3dhcF9jb25zdGFudF8xNih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMTYoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzE2KHgpOiByZXR1cm4gX19ic3dhcF9jb25zdGFudF8xNiAoeCkKLQotZGVmIF9fYnN3YXBfY29uc3RhbnRfMzIoeCk6IHJldHVybiBcCi0KLWRlZiBfX2Jzd2FwXzMyKHgpOiByZXR1cm4gXAotCi1kZWYgX19ic3dhcF8zMih4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfMzIoeCk6IHJldHVybiBfX2Jzd2FwX2NvbnN0YW50XzMyICh4KQotCi1kZWYgX19ic3dhcF9jb25zdGFudF82NCh4KTogcmV0dXJuIFwKLQotZGVmIF9fYnN3YXBfNjQoeCk6IHJldHVybiBcCi0KLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaGwoeCk6IHJldHVybiBfX2Jzd2FwXzMyICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiBfX2Jzd2FwXzE2ICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiBfX2Jzd2FwXzMyICh4KQotCi1kZWYgaHRvbnMoeCk6IHJldHVybiBfX2Jzd2FwXzE2ICh4KQotCi1kZWYgSU42X0lTX0FERFJfVU5TUEVDSUZJRUQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xJTktMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1NJVEVMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX0dMT0JBTChhKTogcmV0dXJuCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9UWVBFUy5weSBiL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlN2EzMjRiLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L1RZUEVTLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTcwICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL3R5cGVzLmgKLV9TWVNfVFlQRVNfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGZlYXR1cmVzLmgKLV9GRUFUVVJFU19IID0gMQotX19VU0VfQU5TSSA9IDEKLV9fRkFWT1JfQlNEID0gMQotX0lTT0M5OV9TT1VSQ0UgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fWE9QRU5fU09VUkNFID0gNjAwCi1fWE9QRU5fU09VUkNFX0VYVEVOREVEID0gMQotX0xBUkdFRklMRTY0X1NPVVJDRSA9IDEKLV9CU0RfU09VUkNFID0gMQotX1NWSURfU09VUkNFID0gMQotX0JTRF9TT1VSQ0UgPSAxCi1fU1ZJRF9TT1VSQ0UgPSAxCi1fX1VTRV9JU09DOTkgPSAxCi1fUE9TSVhfU09VUkNFID0gMQotX1BPU0lYX0NfU09VUkNFID0gMgotX1BPU0lYX0NfU09VUkNFID0gMTk5NTA2Ci1fX1VTRV9QT1NJWCA9IDEKLV9fVVNFX1BPU0lYMiA9IDEKLV9fVVNFX1BPU0lYMTk5MzA5ID0gMQotX19VU0VfUE9TSVgxOTk1MDYgPSAxCi1fX1VTRV9YT1BFTiA9IDEKLV9fVVNFX1hPUEVOX0VYVEVOREVEID0gMQotX19VU0VfVU5JWDk4ID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fX1VTRV9YT1BFTjJLID0gMQotX19VU0VfSVNPQzk5ID0gMQotX19VU0VfWE9QRU5fRVhURU5ERUQgPSAxCi1fX1VTRV9MQVJHRUZJTEUgPSAxCi1fX1VTRV9MQVJHRUZJTEU2NCA9IDEKLV9fVVNFX0ZJTEVfT0ZGU0VUNjQgPSAxCi1fX1VTRV9NSVNDID0gMQotX19VU0VfQlNEID0gMQotX19VU0VfU1ZJRCA9IDEKLV9fVVNFX0dOVSA9IDEKLV9fVVNFX1JFRU5UUkFOVCA9IDEKLV9fU1REQ19JRUNfNTU5X18gPSAxCi1fX1NURENfSUVDXzU1OV9DT01QTEVYX18gPSAxCi1fX1NURENfSVNPXzEwNjQ2X18gPSAyMDAwMDkKLV9fR05VX0xJQlJBUllfXyA9IDYKLV9fR0xJQkNfXyA9IDIKLV9fR0xJQkNfTUlOT1JfXyA9IDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1fU1lTX0NERUZTX0ggPSAxCi1kZWYgX19QTVQoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1AoYXJncyk6IHJldHVybiBhcmdzCi0KLWRlZiBfX1BNVChhcmdzKTogcmV0dXJuIGFyZ3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFswXQotX19mbGV4YXJyID0gW10KLV9fZmxleGFyciA9IFsxXQotZGVmIF9fQVNNTkFNRShjbmFtZSk6IHJldHVybiBfX0FTTU5BTUUyIChfX1VTRVJfTEFCRUxfUFJFRklYX18sIGNuYW1lKQotCi1kZWYgX19hdHRyaWJ1dGVfXyh4eXopOiByZXR1cm4KLQotZGVmIF9fYXR0cmlidXRlX2Zvcm1hdF9hcmdfXyh4KTogcmV0dXJuIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9hcmdfXyAoeCkpKQotCi1kZWYgX19hdHRyaWJ1dGVfZm9ybWF0X2FyZ19fKHgpOiByZXR1cm4KLQotX19VU0VfTEFSR0VGSUxFID0gMQotX19VU0VfTEFSR0VGSUxFNjQgPSAxCi1fX1VTRV9FWFRFUk5fSU5MSU5FUyA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGdudS9zdHVicy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3R5cGVzLmgKLV9CSVRTX1RZUEVTX0ggPSAxCi1fX0ZEX1NFVFNJWkUgPSAxMDI0Ci0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3B0aHJlYWR0eXBlcy5oCi1fQklUU19QVEhSRUFEVFlQRVNfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2NoZWQuaAotU0NIRURfT1RIRVIgPSAwCi1TQ0hFRF9GSUZPID0gMQotU0NIRURfUlIgPSAyCi1DU0lHTkFMID0gMHgwMDAwMDBmZgotQ0xPTkVfVk0gPSAweDAwMDAwMTAwCi1DTE9ORV9GUyA9IDB4MDAwMDAyMDAKLUNMT05FX0ZJTEVTID0gMHgwMDAwMDQwMAotQ0xPTkVfU0lHSEFORCA9IDB4MDAwMDA4MDAKLUNMT05FX1BJRCA9IDB4MDAwMDEwMDAKLUNMT05FX1BUUkFDRSA9IDB4MDAwMDIwMDAKLUNMT05FX1ZGT1JLID0gMHgwMDAwNDAwMAotX19kZWZpbmVkX3NjaGVkcGFyYW0gPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLV9USU1FX0ggPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBiaXRzL3RpbWUuaAotX0JJVFNfVElNRV9IID0gMQotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi1DTE9DS19SRUFMVElNRSA9IDAKLUNMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCA9IDIKLUNMT0NLX1RIUkVBRF9DUFVUSU1FX0lEID0gMwotVElNRVJfQUJTVElNRSA9IDEKLV9TVFJVQ1RfVElNRVZBTCA9IDEKLUNMS19UQ0sgPSBDTE9DS1NfUEVSX1NFQwotX19jbG9ja190X2RlZmluZWQgPSAxCi1fX3RpbWVfdF9kZWZpbmVkID0gMQotX19jbG9ja2lkX3RfZGVmaW5lZCA9IDEKLV9fdGltZXJfdF9kZWZpbmVkID0gMQotX190aW1lc3BlY19kZWZpbmVkID0gMQotZGVmIF9faXNsZWFwKHllYXIpOiByZXR1cm4gXAotCi1fX0JJVF9UWVBFU19ERUZJTkVEX18gPSAxCi0KLSMgSW5jbHVkZWQgZnJvbSBlbmRpYW4uaAotX0VORElBTl9IID0gMQotX19MSVRUTEVfRU5ESUFOID0gMTIzNAotX19CSUdfRU5ESUFOID0gNDMyMQotX19QRFBfRU5ESUFOID0gMzQxMgotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9lbmRpYW4uaAotX19CWVRFX09SREVSID0gX19MSVRUTEVfRU5ESUFOCi1fX0ZMT0FUX1dPUkRfT1JERVIgPSBfX0JZVEVfT1JERVIKLUxJVFRMRV9FTkRJQU4gPSBfX0xJVFRMRV9FTkRJQU4KLUJJR19FTkRJQU4gPSBfX0JJR19FTkRJQU4KLVBEUF9FTkRJQU4gPSBfX1BEUF9FTkRJQU4KLUJZVEVfT1JERVIgPSBfX0JZVEVfT1JERVIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotX1NZU19TRUxFQ1RfSCA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIGJpdHMvc2VsZWN0LmgKLWRlZiBfX0ZEX1pFUk8oZmRzcCk6IHJldHVybiBcCi0KLWRlZiBfX0ZEX1pFUk8oc2V0KTogcmV0dXJuIFwKLQotCi0jIEluY2x1ZGVkIGZyb20gYml0cy9zaWdzZXQuaAotX1NJR1NFVF9IX3R5cGVzID0gMQotX1NJR1NFVF9IX2ZucyA9IDEKLWRlZiBfX3NpZ21hc2soc2lnKTogcmV0dXJuIFwKLQotZGVmIF9fc2lnZW1wdHlzZXQoc2V0KTogcmV0dXJuIFwKLQotZGVmIF9fc2lnZmlsbHNldChzZXQpOiByZXR1cm4gXAotCi1kZWYgX19zaWdpc2VtcHR5c2V0KHNldCk6IHJldHVybiBcCi0KLWRlZiBfX0ZERUxUKGQpOiByZXR1cm4gKChkKSAvIF9fTkZEQklUUykKLQotRkRfU0VUU0laRSA9IF9fRkRfU0VUU0laRQotZGVmIEZEX1pFUk8oZmRzZXRwKTogcmV0dXJuIF9fRkRfWkVSTyAoZmRzZXRwKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3lzbWFjcm9zLmgKLV9TWVNfU1lTTUFDUk9TX0ggPSAxCi1kZWYgbWFqb3IoZGV2KTogcmV0dXJuICgoaW50KSgoKGRldikgPj4gOCkgJiAweGZmKSkKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGludCkoKGRldikgJiAweGZmKSkKLQotZGVmIG1ham9yKGRldik6IHJldHVybiAoKChkZXYpLl9fdmFsWzFdID4+IDgpICYgMHhmZikKLQotZGVmIG1pbm9yKGRldik6IHJldHVybiAoKGRldikuX192YWxbMV0gJiAweGZmKQotCi1kZWYgbWFqb3IoZGV2KTogcmV0dXJuICgoKGRldikuX192YWxbMF0gPj4gOCkgJiAweGZmKQotCi1kZWYgbWlub3IoZGV2KTogcmV0dXJuICgoZGV2KS5fX3ZhbFswXSAmIDB4ZmYpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1saW51eC9yZWdlbiBiL0xpYi9wbGF0LWxpbnV4L3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBjNzY5NTBlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LWxpbnV4L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi0jISAvYmluL3NoCi1jYXNlIGB1bmFtZWAgaW4KLUxpbnV4KikJOzsKLSopCWVjaG8gUHJvYmFibHkgbm90IG9uIGEgTGludXggc3lzdGVtIDE+JjIKLQlleGl0IDE7OwotZXNhYwotc2V0IC12Ci1oMnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmggL3Vzci9pbmNsdWRlL2RsZmNuLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW5ldGJzZDEvSU4ucHkgYi9MaWIvcGxhdC1uZXRic2QxL0lOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzRjNTFlLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5ldGJzZDEvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotSVBQUk9UT19JUCA9IDAKLUlQUFJPVE9fSUNNUCA9IDEKLUlQUFJPVE9fSUdNUCA9IDIKLUlQUFJPVE9fR0dQID0gMwotSVBQUk9UT19JUElQID0gNAotSVBQUk9UT19UQ1AgPSA2Ci1JUFBST1RPX0VHUCA9IDgKLUlQUFJPVE9fUFVQID0gMTIKLUlQUFJPVE9fVURQID0gMTcKLUlQUFJPVE9fSURQID0gMjIKLUlQUFJPVE9fVFAgPSAyOQotSVBQUk9UT19FT04gPSA4MAotSVBQUk9UT19FTkNBUCA9IDk4Ci1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA1MDAwCi1kZWYgX19JUEFERFIoeCk6IHJldHVybiAoKHVfaW50MzJfdCkoeCkpCi0KLUlOX0NMQVNTQV9OU0hJRlQgPSAyNAotSU5fQ0xBU1NBX01BWCA9IDEyOAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfTUFYID0gNjU1MzYKLUlOX0NMQVNTQ19OU0hJRlQgPSA4Ci1JTl9DTEFTU0RfTlNISUZUID0gMjgKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotSU5fTE9PUEJBQ0tORVQgPSAxMjcKLUlQX09QVElPTlMgPSAxCi1JUF9IRFJJTkNMID0gMgotSVBfVE9TID0gMwotSVBfVFRMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9UVEwgPSAxMAotSVBfTVVMVElDQVNUX0xPT1AgPSAxMQotSVBfQUREX01FTUJFUlNISVAgPSAxMgotSVBfRFJPUF9NRU1CRVJTSElQID0gMTMKLUlQX1JFQ1ZJRiA9IDIwCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlQUFJPVE9fTUFYSUQgPSAoSVBQUk9UT19JRFAgKyAxKQotSVBDVExfRk9SV0FSRElORyA9IDEKLUlQQ1RMX1NFTkRSRURJUkVDVFMgPSAyCi1JUENUTF9ERUZUVEwgPSAzCi1JUENUTF9ERUZNVFUgPSA0Ci1JUENUTF9GT1JXU1JDUlQgPSA1Ci1JUENUTF9ESVJFQ1RFREJDQVNUID0gNgotSVBDVExfQUxMT1dTUkNSVCA9IDcKLUlQQ1RMX01BWElEID0gOAotZGVmIGluX251bGxob3N0KHgpOiByZXR1cm4gKCh4KS5zX2FkZHIgPT0gSU5BRERSX0FOWSkKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW5ldGJzZDEvcmVnZW4gYi9MaWIvcGxhdC1uZXRic2QxL3JlZ2VuCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA4YWE2ODk4Li4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LW5ldGJzZDEvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotcHl0aG9uIC4uLy4uL1Rvb2xzL3NjcmlwdHMvaDJweS5weSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LW5leHQzL3JlZ2VuIGIvTGliL3BsYXQtbmV4dDMvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDdhMDM2MTMuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtbmV4dDMvcmVnZW4KKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLSMhIC9iaW4vc2gKLXNldCAtdgotSU5DTFVERT0iL05leHREZXZlbG9wZXIvSGVhZGVyczsvTmV4dERldmVsb3Blci9IZWFkZXJzL2Fuc2k7L05leHREZXZlbG9wZXIvSGVhZGVycy9ic2QiCi1leHBvcnQgSU5DTFVERQotCi1weXRob24gLi4vLi4vVG9vbHMvc2NyaXB0cy9oMnB5LnB5IC1pICcodV9sb25nKScgL3Vzci9pbmNsdWRlL2JzZC9uZXRpbmV0L2luLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9DRElPLnB5IGIvTGliL3BsYXQtc3Vub3M1L0NESU8ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NjZiNTAuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L0NESU8ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9jZGlvLmgKLUNEUk9NX0xCQSA9IDB4MDEKLUNEUk9NX01TRiA9IDB4MDIKLUNEUk9NX0RBVEFfVFJBQ0sgPSAweDA0Ci1DRFJPTV9MRUFET1VUID0gMHhBQQotQ0RST01fQVVESU9fSU5WQUxJRCA9IDB4MDAKLUNEUk9NX0FVRElPX1BMQVkgPSAweDExCi1DRFJPTV9BVURJT19QQVVTRUQgPSAweDEyCi1DRFJPTV9BVURJT19DT01QTEVURUQgPSAweDEzCi1DRFJPTV9BVURJT19FUlJPUiA9IDB4MTQKLUNEUk9NX0FVRElPX05PX1NUQVRVUyA9IDB4MTUKLUNEUk9NX0RBX05PX1NVQkNPREUgPSAweDAwCi1DRFJPTV9EQV9TVUJRID0gMHgwMQotQ0RST01fREFfQUxMX1NVQkNPREUgPSAweDAyCi1DRFJPTV9EQV9TVUJDT0RFX09OTFkgPSAweDAzCi1DRFJPTV9YQV9EQVRBID0gMHgwMAotQ0RST01fWEFfU0VDVE9SX0RBVEEgPSAweDAxCi1DRFJPTV9YQV9EQVRBX1dfRVJST1IgPSAweDAyCi1DRFJPTV9CTEtfNTEyID0gNTEyCi1DRFJPTV9CTEtfMTAyNCA9IDEwMjQKLUNEUk9NX0JMS18yMDQ4ID0gMjA0OAotQ0RST01fQkxLXzIwNTYgPSAyMDU2Ci1DRFJPTV9CTEtfMjMzNiA9IDIzMzYKLUNEUk9NX0JMS18yMzQwID0gMjM0MAotQ0RST01fQkxLXzIzNTIgPSAyMzUyCi1DRFJPTV9CTEtfMjM2OCA9IDIzNjgKLUNEUk9NX0JMS18yNDQ4ID0gMjQ0OAotQ0RST01fQkxLXzI2NDYgPSAyNjQ2Ci1DRFJPTV9CTEtfMjY0NyA9IDI2NDcKLUNEUk9NX0JMS19TVUJDT0RFID0gOTYKLUNEUk9NX05PUk1BTF9TUEVFRCA9IDB4MDAKLUNEUk9NX0RPVUJMRV9TUEVFRCA9IDB4MDEKLUNEUk9NX1FVQURfU1BFRUQgPSAweDAzCi1DRFJPTV9UV0VMVkVfU1BFRUQgPSAweDBDCi1DRFJPTV9NQVhJTVVNX1NQRUVEID0gMHhmZgotQ0RJT0MgPSAoMHgwNCA8PCA4KQotQ0RST01QQVVTRSA9IChDRElPQ3wxNTEpCi1DRFJPTVJFU1VNRSA9IChDRElPQ3wxNTIpCi1DRFJPTVBMQVlNU0YgPSAoQ0RJT0N8MTUzKQotQ0RST01QTEFZVFJLSU5EID0gKENESU9DfDE1NCkKLUNEUk9NUkVBRFRPQ0hEUiA9IChDRElPQ3wxNTUpCi1DRFJPTVJFQURUT0NFTlRSWSA9IChDRElPQ3wxNTYpCi1DRFJPTVNUT1AgPSAoQ0RJT0N8MTU3KQotQ0RST01TVEFSVCA9IChDRElPQ3wxNTgpCi1DRFJPTUVKRUNUID0gKENESU9DfDE1OSkKLUNEUk9NVk9MQ1RSTCA9IChDRElPQ3wxNjApCi1DRFJPTVNVQkNITkwgPSAoQ0RJT0N8MTYxKQotQ0RST01SRUFETU9ERTIgPSAoQ0RJT0N8MTYyKQotQ0RST01SRUFETU9ERTEgPSAoQ0RJT0N8MTYzKQotQ0RST01SRUFET0ZGU0VUID0gKENESU9DfDE2NCkKLUNEUk9NR0JMS01PREUgPSAoQ0RJT0N8MTY1KQotQ0RST01TQkxLTU9ERSA9IChDRElPQ3wxNjYpCi1DRFJPTUNEREEgPSAoQ0RJT0N8MTY3KQotQ0RST01DRFhBID0gKENESU9DfDE2OCkKLUNEUk9NU1VCQ09ERSA9IChDRElPQ3wxNjkpCi1DRFJPTUdEUlZTUEVFRCA9IChDRElPQ3wxNzApCi1DRFJPTVNEUlZTUEVFRCA9IChDRElPQ3wxNzEpCi1TQ01EX1JFQURfVE9DID0gMHg0MwotU0NNRF9QTEFZQVVESU9fTVNGID0gMHg0NwotU0NNRF9QTEFZQVVESU9fVEkgPSAweDQ4Ci1TQ01EX1BBVVNFX1JFU1VNRSA9IDB4NEIKLVNDTURfUkVBRF9TVUJDSEFOTkVMID0gMHg0MgotU0NNRF9QTEFZQVVESU8xMCA9IDB4NDUKLVNDTURfUExBWVRSQUNLX1JFTDEwID0gMHg0OQotU0NNRF9SRUFEX0hFQURFUiA9IDB4NDQKLVNDTURfUExBWUFVRElPMTIgPSAweEE1Ci1TQ01EX1BMQVlUUkFDS19SRUwxMiA9IDB4QTkKLVNDTURfQ0RfUExBWUJBQ0tfQ09OVFJPTCA9IDB4QzkKLVNDTURfQ0RfUExBWUJBQ0tfU1RBVFVTID0gMHhDNAotU0NNRF9SRUFEX0NEREEgPSAweEQ4Ci1TQ01EX1JFQURfQ0RYQSA9IDB4REIKLVNDTURfUkVBRF9BTExfU1VCQ09ERVMgPSAweERGCi1DRFJPTV9NT0RFMl9TSVpFID0gMjMzNgpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L0RMRkNOLnB5IGIvTGliL3BsYXQtc3Vub3M1L0RMRkNOLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDkyMzUwLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9ETEZDTi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvZGxmY24uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotUlRMRF9MQVpZID0gMHgwMDAwMQotUlRMRF9OT1cgPSAweDAwMDAyCi1SVExEX05PTE9BRCA9IDB4MDAwMDQKLVJUTERfR0xPQkFMID0gMHgwMDEwMAotUlRMRF9MT0NBTCA9IDB4MDAwMDAKLVJUTERfUEFSRU5UID0gMHgwMDIwMAotUlRMRF9HUk9VUCA9IDB4MDA0MDAKLVJUTERfV09STEQgPSAweDAwODAwCi1SVExEX05PREVMRVRFID0gMHgwMTAwMAotUlRMRF9DT05GR0VOID0gMHgxMDAwMAotUlRMRF9SRUxfUkVMQVRJVkUgPSAweDAwMDAxCi1SVExEX1JFTF9FWEVDID0gMHgwMDAwMgotUlRMRF9SRUxfREVQRU5EUyA9IDB4MDAwMDQKLVJUTERfUkVMX1BSRUxPQUQgPSAweDAwMDA4Ci1SVExEX1JFTF9TRUxGID0gMHgwMDAxMAotUlRMRF9SRUxfV0VBSyA9IDB4MDAwMjAKLVJUTERfUkVMX0FMTCA9IDB4MDBmZmYKLVJUTERfTUVNT1JZID0gMHgwMTAwMAotUlRMRF9TVFJJUCA9IDB4MDIwMDAKLVJUTERfTk9IRUFQID0gMHgwNDAwMAotUlRMRF9DT05GU0VUID0gMHgxMDAwMAotUlRMRF9ESV9MTUlEID0gMQotUlRMRF9ESV9MSU5LTUFQID0gMgotUlRMRF9ESV9DT05GSUdBRERSID0gMwotUlRMRF9ESV9NQVggPSAzCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvSU4ucHkgYi9MaWIvcGxhdC1zdW5vczUvSU4ucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk1NzJlYWQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L0lOLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTQyMSArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL25ldGluZXQvaW4uaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ZlYXR1cmVfdGVzdHMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cmVhbS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdm5vZGUuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RfbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaGxvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotTE9DS19IRUxEX1ZBTFVFID0gMHhmZgotZGVmIFNQSU5fTE9DSyhwbCk6IHJldHVybiAoKHBsKSA+IGlwbHRvc3BsKExPQ0tfTEVWRUwpKQotCi1kZWYgTE9DS19TQU1QTEVfSU5URVJWQUwoaSk6IHJldHVybiAoKChpKSAmIDB4ZmYpID09IDApCi0KLUNMT0NLX0xFVkVMID0gMTAKLUxPQ0tfTEVWRUwgPSAxMAotRElTUF9MRVZFTCA9IChMT0NLX0xFVkVMICsgMSkKLVBUUjI0X0xTQiA9IDUKLVBUUjI0X01TQiA9IChQVFIyNF9MU0IgKyAyNCkKLVBUUjI0X0FMSUdOID0gMzIKLVBUUjI0X0JBU0UgPSAweGUwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcGFyYW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotX1BPU0lYX1ZESVNBQkxFID0gMAotTUFYX0lOUFVUID0gNTEyCi1NQVhfQ0FOT04gPSAyNTYKLVVJRF9OT0JPRFkgPSA2MDAwMQotR0lEX05PQk9EWSA9IFVJRF9OT0JPRFkKLVVJRF9OT0FDQ0VTUyA9IDYwMDAyCi1NQVhfVEFTS0lEID0gOTk5OTk5Ci1NQVhfTUFYUElEID0gOTk5OTk5Ci1ERUZBVUxUX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9KVU1QUElEID0gMTAwMDAwCi1ERUZBVUxUX01BWFBJRCA9IDMwMDAwCi1ERUZBVUxUX0pVTVBQSUQgPSAwCi1NQVhVSUQgPSAyMTQ3NDgzNjQ3Ci1NQVhQUk9KSUQgPSBNQVhVSUQKLU1BWExJTksgPSAzMjc2NwotTk1PVU5UID0gNDAKLUNBTkJTSVogPSAyNTYKLU5PRklMRSA9IDIwCi1OR1JPVVBTX1VNSU4gPSAwCi1OR1JPVVBTX1VNQVggPSAzMgotTkdST1VQU19NQVhfREVGQVVMVCA9IDE2Ci1OWkVSTyA9IDIwCi1OVUxMID0gMAotTlVMTCA9IDAKLUNNQVNLID0gMG8yMgotQ0RMSU1JVCA9ICgxPDwxMSkKLU5CUFMgPSAweDIwMDAwCi1OQlBTQ1RSID0gNTEyCi1VQlNJWkUgPSA1MTIKLVNDVFJTSEZUID0gOQotU1lTTkFNRSA9IDkKLVBSRU1PVEUgPSAzOQotTUFYUEFUSExFTiA9IDEwMjQKLU1BWFNZTUxJTktTID0gMjAKLU1BWE5BTUVMRU4gPSAyNTYKLU5BRERSID0gMTMKLVBJUEVfQlVGID0gNTEyMAotUElQRV9NQVggPSA1MTIwCi1OQkJZID0gOAotTUFYQlNJWkUgPSA4MTkyCi1ERVZfQlNJWkUgPSA1MTIKLURFVl9CU0hJRlQgPSA5Ci1NQVhGUkFHID0gOAotTUFYT0ZGMzJfVCA9IDB4N2ZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZmZmZmZmZmZmCi1NQVhPRkZTRVRfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZTRVRfVCA9IDB4N2ZmZmZmZmYKLWRlZiBidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGRidG9iKGRiKTogcmV0dXJuICAgXAotCi1kZWYgbGJ0b2RiKGJ5dGVzKTogcmV0dXJuICAgXAotCi1kZWYgbGRidG9iKGRiKTogcmV0dXJuICAgXAotCi1OQ0FSR1MzMiA9IDB4MTAwMDAwCi1OQ0FSR1M2NCA9IDB4MjAwMDAwCi1OQ0FSR1MgPSBOQ0FSR1M2NAotTkNBUkdTID0gTkNBUkdTMzIKLUZTSElGVCA9IDgKLUZTQ0FMRSA9ICgxPDxGU0hJRlQpCi1kZWYgREVMQVkobik6IHJldHVybiBkcnZfdXNlY3dhaXQobikKLQotZGVmIG1tdV9wdG9iKHgpOiByZXR1cm4gKCh4KSA8PCBNTVVfUEFHRVNISUZUKQotCi1kZWYgbW11X2J0b3AoeCk6IHJldHVybiAoKCh4KSkgPj4gTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wcih4KTogcmV0dXJuICgoKCh4KSArIE1NVV9QQUdFT0ZGU0VUKSA+PiBNTVVfUEFHRVNISUZUKSkKLQotZGVmIG1tdV9wdG9kKHgpOiByZXR1cm4gKCh4KSA8PCAoTU1VX1BBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgcHRvYih4KTogcmV0dXJuICgoeCkgPDwgUEFHRVNISUZUKQotCi1kZWYgYnRvcCh4KTogcmV0dXJuICgoKHgpID4+IFBBR0VTSElGVCkpCi0KLWRlZiBidG9wcih4KTogcmV0dXJuICgoKCh4KSArIFBBR0VPRkZTRVQpID4+IFBBR0VTSElGVCkpCi0KLWRlZiBkdG9wKEREKTogcmV0dXJuICgoKEREKSArIE5EUFAgLSAxKSA+PiAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBkdG9wdChERCk6IHJldHVybiAoKEREKSA+PiAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLV9BSU9fTElTVElPX01BWCA9ICg0MDk2KQotX0FJT19NQVggPSAoLTEpCi1fTVFfT1BFTl9NQVggPSAoMzIpCi1fTVFfUFJJT19NQVggPSAoMzIpCi1fU0VNX05TRU1TX01BWCA9IElOVF9NQVgKLV9TRU1fVkFMVUVfTUFYID0gSU5UX01BWAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1fQ1NfUEFUSCA9IDY1Ci1fQ1NfTEZTX0NGTEFHUyA9IDY4Ci1fQ1NfTEZTX0xERkxBR1MgPSA2OQotX0NTX0xGU19MSUJTID0gNzAKLV9DU19MRlNfTElOVEZMQUdTID0gNzEKLV9DU19MRlM2NF9DRkxBR1MgPSA3MgotX0NTX0xGUzY0X0xERkxBR1MgPSA3MwotX0NTX0xGUzY0X0xJQlMgPSA3NAotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDc1Ci1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9DRkxBR1MgPSA3MDAKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MgPSA3MDEKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMgPSA3MDIKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUyA9IDcwMwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUyA9IDcwNQotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MgPSA3MDYKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MSUJTID0gNzA3Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTID0gNzA4Ci1fQ1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUyA9IDcwOQotX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTID0gNzEwCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMgPSA3MTEKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTID0gNzEyCi1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTID0gNzEzCi1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUyA9IDcxNAotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMgPSA3MTUKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MgPSA3MTYKLV9TQ19BUkdfTUFYID0gMQotX1NDX0NISUxEX01BWCA9IDIKLV9TQ19DTEtfVENLID0gMwotX1NDX05HUk9VUFNfTUFYID0gNAotX1NDX09QRU5fTUFYID0gNQotX1NDX0pPQl9DT05UUk9MID0gNgotX1NDX1NBVkVEX0lEUyA9IDcKLV9TQ19WRVJTSU9OID0gOAotX1NDX1BBU1NfTUFYID0gOQotX1NDX0xPR05BTUVfTUFYID0gMTAKLV9TQ19QQUdFU0laRSA9IDExCi1fU0NfWE9QRU5fVkVSU0lPTiA9IDEyCi1fU0NfTlBST0NFU1NPUlNfQ09ORiA9IDE0Ci1fU0NfTlBST0NFU1NPUlNfT05MTiA9IDE1Ci1fU0NfU1RSRUFNX01BWCA9IDE2Ci1fU0NfVFpOQU1FX01BWCA9IDE3Ci1fU0NfQUlPX0xJU1RJT19NQVggPSAxOAotX1NDX0FJT19NQVggPSAxOQotX1NDX0FJT19QUklPX0RFTFRBX01BWCA9IDIwCi1fU0NfQVNZTkNIUk9OT1VTX0lPID0gMjEKLV9TQ19ERUxBWVRJTUVSX01BWCA9IDIyCi1fU0NfRlNZTkMgPSAyMwotX1NDX01BUFBFRF9GSUxFUyA9IDI0Ci1fU0NfTUVNTE9DSyA9IDI1Ci1fU0NfTUVNTE9DS19SQU5HRSA9IDI2Ci1fU0NfTUVNT1JZX1BST1RFQ1RJT04gPSAyNwotX1NDX01FU1NBR0VfUEFTU0lORyA9IDI4Ci1fU0NfTVFfT1BFTl9NQVggPSAyOQotX1NDX01RX1BSSU9fTUFYID0gMzAKLV9TQ19QUklPUklUSVpFRF9JTyA9IDMxCi1fU0NfUFJJT1JJVFlfU0NIRURVTElORyA9IDMyCi1fU0NfUkVBTFRJTUVfU0lHTkFMUyA9IDMzCi1fU0NfUlRTSUdfTUFYID0gMzQKLV9TQ19TRU1BUEhPUkVTID0gMzUKLV9TQ19TRU1fTlNFTVNfTUFYID0gMzYKLV9TQ19TRU1fVkFMVUVfTUFYID0gMzcKLV9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMgPSAzOAotX1NDX1NJR1FVRVVFX01BWCA9IDM5Ci1fU0NfU0lHUlRfTUlOID0gNDAKLV9TQ19TSUdSVF9NQVggPSA0MQotX1NDX1NZTkNIUk9OSVpFRF9JTyA9IDQyCi1fU0NfVElNRVJTID0gNDMKLV9TQ19USU1FUl9NQVggPSA0NAotX1NDXzJfQ19CSU5EID0gNDUKLV9TQ18yX0NfREVWID0gNDYKLV9TQ18yX0NfVkVSU0lPTiA9IDQ3Ci1fU0NfMl9GT1JUX0RFViA9IDQ4Ci1fU0NfMl9GT1JUX1JVTiA9IDQ5Ci1fU0NfMl9MT0NBTEVERUYgPSA1MAotX1NDXzJfU1dfREVWID0gNTEKLV9TQ18yX1VQRSA9IDUyCi1fU0NfMl9WRVJTSU9OID0gNTMKLV9TQ19CQ19CQVNFX01BWCA9IDU0Ci1fU0NfQkNfRElNX01BWCA9IDU1Ci1fU0NfQkNfU0NBTEVfTUFYID0gNTYKLV9TQ19CQ19TVFJJTkdfTUFYID0gNTcKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gNTgKLV9TQ19FWFBSX05FU1RfTUFYID0gNTkKLV9TQ19MSU5FX01BWCA9IDYwCi1fU0NfUkVfRFVQX01BWCA9IDYxCi1fU0NfWE9QRU5fQ1JZUFQgPSA2MgotX1NDX1hPUEVOX0VOSF9JMThOID0gNjMKLV9TQ19YT1BFTl9TSE0gPSA2NAotX1NDXzJfQ0hBUl9URVJNID0gNjYKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDY3Ci1fU0NfQVRFWElUX01BWCA9IDc2Ci1fU0NfSU9WX01BWCA9IDc3Ci1fU0NfWE9QRU5fVU5JWCA9IDc4Ci1fU0NfUEFHRV9TSVpFID0gX1NDX1BBR0VTSVpFCi1fU0NfVF9JT1ZfTUFYID0gNzkKLV9TQ19QSFlTX1BBR0VTID0gNTAwCi1fU0NfQVZQSFlTX1BBR0VTID0gNTAxCi1fU0NfQ09IRVJfQkxLU1ogPSA1MDMKLV9TQ19TUExJVF9DQUNIRSA9IDUwNAotX1NDX0lDQUNIRV9TWiA9IDUwNQotX1NDX0RDQUNIRV9TWiA9IDUwNgotX1NDX0lDQUNIRV9MSU5FU1ogPSA1MDcKLV9TQ19EQ0FDSEVfTElORVNaID0gNTA4Ci1fU0NfSUNBQ0hFX0JMS1NaID0gNTA5Ci1fU0NfRENBQ0hFX0JMS1NaID0gNTEwCi1fU0NfRENBQ0hFX1RCTEtTWiA9IDUxMQotX1NDX0lDQUNIRV9BU1NPQyA9IDUxMgotX1NDX0RDQUNIRV9BU1NPQyA9IDUxMwotX1NDX01BWFBJRCA9IDUxNAotX1NDX1NUQUNLX1BST1QgPSA1MTUKLV9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gNTY4Ci1fU0NfR0VUR1JfUl9TSVpFX01BWCA9IDU2OQotX1NDX0dFVFBXX1JfU0laRV9NQVggPSA1NzAKLV9TQ19MT0dJTl9OQU1FX01BWCA9IDU3MQotX1NDX1RIUkVBRF9LRVlTX01BWCA9IDU3MgotX1NDX1RIUkVBRF9TVEFDS19NSU4gPSA1NzMKLV9TQ19USFJFQURfVEhSRUFEU19NQVggPSA1NzQKLV9TQ19UVFlfTkFNRV9NQVggPSA1NzUKLV9TQ19USFJFQURTID0gNTc2Ci1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gNTc3Ci1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFID0gNTc4Ci1fU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSA1NzkKLV9TQ19USFJFQURfUFJJT19JTkhFUklUID0gNTgwCi1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4MQotX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCA9IDU4MgotX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyA9IDU4MwotX1NDX1hPUEVOX0xFR0FDWSA9IDcxNwotX1NDX1hPUEVOX1JFQUxUSU1FID0gNzE4Ci1fU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUyA9IDcxOQotX1NDX1hCUzVfSUxQMzJfT0ZGMzIgPSA3MjAKLV9TQ19YQlM1X0lMUDMyX09GRkJJRyA9IDcyMQotX1NDX1hCUzVfTFA2NF9PRkY2NCA9IDcyMgotX1NDX1hCUzVfTFBCSUdfT0ZGQklHID0gNzIzCi1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0FTWU5DX0lPID0gMTAKLV9QQ19QUklPX0lPID0gMTEKLV9QQ19TWU5DX0lPID0gMTIKLV9QQ19GSUxFU0laRUJJVFMgPSA2NwotX1BDX0xBU1QgPSA2NwotX1BPU0lYX1ZFUlNJT04gPSAxOTk1MDYKLV9QT1NJWDJfVkVSU0lPTiA9IDE5OTIwOQotX1BPU0lYMl9DX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9YT1BFTl9SRUFMVElNRSA9IDEKLV9YT1BFTl9FTkhfSTE4TiA9IDEKLV9YT1BFTl9TSE0gPSAxCi1fUE9TSVgyX0NfQklORCA9IDEKLV9QT1NJWDJfQ0hBUl9URVJNID0gMQotX1BPU0lYMl9MT0NBTEVERUYgPSAxCi1fUE9TSVgyX0NfREVWID0gMQotX1BPU0lYMl9TV19ERVYgPSAxCi1fUE9TSVgyX1VQRSA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tdXRleC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1kZWYgTVVURVhfSEVMRCh4KTogcmV0dXJuIChtdXRleF9vd25lZCh4KSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3J3bG9jay5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1kZWYgUldfUkVBRF9IRUxEKHgpOiByZXR1cm4gKHJ3X3JlYWRfaGVsZCgoeCkpKQotCi1kZWYgUldfV1JJVEVfSEVMRCh4KTogcmV0dXJuIChyd193cml0ZV9oZWxkKCh4KSkpCi0KLWRlZiBSV19MT0NLX0hFTEQoeCk6IHJldHVybiAocndfbG9ja19oZWxkKCh4KSkpCi0KLWRlZiBSV19JU1dSSVRFUih4KTogcmV0dXJuIChyd19pc3dyaXRlcih4KSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbWFwaG9yZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGhyZWFkLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbHdwLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25kdmFyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlczMyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfdHlwZXMuaAotVElNRTMyX01BWCA9IElOVDMyX01BWAotVElNRTMyX01JTiA9IElOVDMyX01JTgotZGVmIFRJTUVWQUxfT1ZFUkZMT1codHYpOiByZXR1cm4gXAotCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUlUSU1FUl9SRUFMUFJPRiA9IDMKLWRlZiBJVElNRVJWQUxfT1ZFUkZMT1coaXR2KTogcmV0dXJuIFwKLQotU0VDID0gMQotTUlMTElTRUMgPSAxMDAwCi1NSUNST1NFQyA9IDEwMDAwMDAKLU5BTk9TRUMgPSAxMDAwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZV9pbXBsLmgKLWRlZiBUSU1FU1BFQ19PVkVSRkxPVyh0cyk6IHJldHVybiBcCi0KLWRlZiBJVElNRVJTUEVDX09WRVJGTE9XKGl0KTogcmV0dXJuIFwKLQotX19DTE9DS19SRUFMVElNRTAgPSAwCi1DTE9DS19WSVJUVUFMID0gMQotQ0xPQ0tfUFJPRiA9IDIKLV9fQ0xPQ0tfUkVBTFRJTUUzID0gMwotQ0xPQ0tfSElHSFJFUyA9IDQKLUNMT0NLX01BWCA9IDUKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTMKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTAKLVRJTUVSX1JFTFRJTUUgPSAweDAKLVRJTUVSX0FCU1RJTUUgPSAweDEKLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNjU1MzYKLUZEX1NFVFNJWkUgPSAxMDI0Ci1fTkJCWSA9IDgKLU5CQlkgPSBfTkJCWQotZGVmIEZEX1pFUk8ocCk6IHJldHVybiBiemVybygocCksIHNpemVvZiAoKihwKSkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zaWduYWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzby9zaWduYWxfaXNvLmgKLVNJR0hVUCA9IDEKLVNJR0lOVCA9IDIKLVNJR1FVSVQgPSAzCi1TSUdJTEwgPSA0Ci1TSUdUUkFQID0gNQotU0lHSU9UID0gNgotU0lHQUJSVCA9IDYKLVNJR0VNVCA9IDcKLVNJR0ZQRSA9IDgKLVNJR0tJTEwgPSA5Ci1TSUdCVVMgPSAxMAotU0lHU0VHViA9IDExCi1TSUdTWVMgPSAxMgotU0lHUElQRSA9IDEzCi1TSUdBTFJNID0gMTQKLVNJR1RFUk0gPSAxNQotU0lHVVNSMSA9IDE2Ci1TSUdVU1IyID0gMTcKLVNJR0NMRCA9IDE4Ci1TSUdDSExEID0gMTgKLVNJR1BXUiA9IDE5Ci1TSUdXSU5DSCA9IDIwCi1TSUdVUkcgPSAyMQotU0lHUE9MTCA9IDIyCi1TSUdJTyA9IFNJR1BPTEwKLVNJR1NUT1AgPSAyMwotU0lHVFNUUCA9IDI0Ci1TSUdDT05UID0gMjUKLVNJR1RUSU4gPSAyNgotU0lHVFRPVSA9IDI3Ci1TSUdWVEFMUk0gPSAyOAotU0lHUFJPRiA9IDI5Ci1TSUdYQ1BVID0gMzAKLVNJR1hGU1ogPSAzMQotU0lHV0FJVElORyA9IDMyCi1TSUdMV1AgPSAzMwotU0lHRlJFRVpFID0gMzQKLVNJR1RIQVcgPSAzNQotU0lHQ0FOQ0VMID0gMzYKLVNJR0xPU1QgPSAzNwotX1NJR1JUTUlOID0gMzgKLV9TSUdSVE1BWCA9IDQ1Ci1TSUdfQkxPQ0sgPSAxCi1TSUdfVU5CTE9DSyA9IDIKLVNJR19TRVRNQVNLID0gMwotU0lHTk9fTUFTSyA9IDB4RkYKLVNJR0RFRkVSID0gMHgxMDAKLVNJR0hPTEQgPSAweDIwMAotU0lHUkVMU0UgPSAweDQwMAotU0lHSUdOT1JFID0gMHg4MDAKLVNJR1BBVVNFID0gMHgxMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnaW5mby5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1TSUdFVl9OT05FID0gMQotU0lHRVZfU0lHTkFMID0gMgotU0lHRVZfVEhSRUFEID0gMwotU0lfTk9JTkZPID0gMzI3NjcKLVNJX1VTRVIgPSAwCi1TSV9MV1AgPSAoLTEpCi1TSV9RVUVVRSA9ICgtMikKLVNJX1RJTUVSID0gKC0zKQotU0lfQVNZTkNJTyA9ICgtNCkKLVNJX01FU0dRID0gKC01KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hzaWcuaAotSUxMX0lMTE9QQyA9IDEKLUlMTF9JTExPUE4gPSAyCi1JTExfSUxMQURSID0gMwotSUxMX0lMTFRSUCA9IDQKLUlMTF9QUlZPUEMgPSA1Ci1JTExfUFJWUkVHID0gNgotSUxMX0NPUFJPQyA9IDcKLUlMTF9CQURTVEsgPSA4Ci1OU0lHSUxMID0gOAotRU1UX1RBR09WRiA9IDEKLUVNVF9DUENPVkYgPSAyCi1OU0lHRU1UID0gMgotRlBFX0lOVERJViA9IDEKLUZQRV9JTlRPVkYgPSAyCi1GUEVfRkxURElWID0gMwotRlBFX0ZMVE9WRiA9IDQKLUZQRV9GTFRVTkQgPSA1Ci1GUEVfRkxUUkVTID0gNgotRlBFX0ZMVElOViA9IDcKLUZQRV9GTFRTVUIgPSA4Ci1OU0lHRlBFID0gOAotU0VHVl9NQVBFUlIgPSAxCi1TRUdWX0FDQ0VSUiA9IDIKLU5TSUdTRUdWID0gMgotQlVTX0FEUkFMTiA9IDEKLUJVU19BRFJFUlIgPSAyCi1CVVNfT0JKRVJSID0gMwotTlNJR0JVUyA9IDMKLVRSQVBfQlJLUFQgPSAxCi1UUkFQX1RSQUNFID0gMgotVFJBUF9SV0FUQ0ggPSAzCi1UUkFQX1dXQVRDSCA9IDQKLVRSQVBfWFdBVENIID0gNQotTlNJR1RSQVAgPSA1Ci1DTERfRVhJVEVEID0gMQotQ0xEX0tJTExFRCA9IDIKLUNMRF9EVU1QRUQgPSAzCi1DTERfVFJBUFBFRCA9IDQKLUNMRF9TVE9QUEVEID0gNQotQ0xEX0NPTlRJTlVFRCA9IDYKLU5TSUdDTEQgPSA2Ci1QT0xMX0lOID0gMQotUE9MTF9PVVQgPSAyCi1QT0xMX01TRyA9IDMKLVBPTExfRVJSID0gNAotUE9MTF9QUkkgPSA1Ci1QT0xMX0hVUCA9IDYKLU5TSUdQT0xMID0gNgotUFJPRl9TSUcgPSAxCi1OU0lHUFJPRiA9IDEKLVNJX01BWFNaID0gMjU2Ci1TSV9NQVhTWiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfc3RkX2ltcGwuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0kzMl9NQVhTWiA9IDEyOAotZGVmIFNJX0NBTlFVRVVFKGMpOiByZXR1cm4gKChjKSA8PSBTSV9RVUVVRSkKLQotU0FfTk9DTERTVE9QID0gMHgwMDAyMDAwMAotU0FfT05TVEFDSyA9IDB4MDAwMDAwMDEKLVNBX1JFU0VUSEFORCA9IDB4MDAwMDAwMDIKLVNBX1JFU1RBUlQgPSAweDAwMDAwMDA0Ci1TQV9TSUdJTkZPID0gMHgwMDAwMDAwOAotU0FfTk9ERUZFUiA9IDB4MDAwMDAwMTAKLVNBX05PQ0xEV0FJVCA9IDB4MDAwMTAwMDAKLVNBX1dBSVRTSUcgPSAweDAwMDEwMDAwCi1OU0lHID0gNDYKLU1BWFNJRyA9IDQ1Ci1TX1NJR05BTCA9IDEKLVNfU0lHU0VUID0gMgotU19TSUdBQ1RJT04gPSAzCi1TX05PTkUgPSA0Ci1NSU5TSUdTVEtTWiA9IDIwNDgKLVNJR1NUS1NaID0gODE5MgotU1NfT05TVEFDSyA9IDB4MDAwMDAwMDEKLVNTX0RJU0FCTEUgPSAweDAwMDAwMDAyCi1TTl9QUk9DID0gMQotU05fQ0FOQ0VMID0gMgotU05fU0VORCA9IDMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91Y29udGV4dC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVnc2V0LmgKLVJFR19DQ1IgPSAoMCkKLVJFR19QU1IgPSAoMCkKLVJFR19QU1IgPSAoMCkKLVJFR19QQyA9ICgxKQotUkVHX25QQyA9ICgyKQotUkVHX1kgPSAoMykKLVJFR19HMSA9ICg0KQotUkVHX0cyID0gKDUpCi1SRUdfRzMgPSAoNikKLVJFR19HNCA9ICg3KQotUkVHX0c1ID0gKDgpCi1SRUdfRzYgPSAoOSkKLVJFR19HNyA9ICgxMCkKLVJFR19PMCA9ICgxMSkKLVJFR19PMSA9ICgxMikKLVJFR19PMiA9ICgxMykKLVJFR19PMyA9ICgxNCkKLVJFR19PNCA9ICgxNSkKLVJFR19PNSA9ICgxNikKLVJFR19PNiA9ICgxNykKLVJFR19PNyA9ICgxOCkKLVJFR19BU0kgPSAoMTkpCi1SRUdfRlBSUyA9ICgyMCkKLVJFR19QUyA9IFJFR19QU1IKLVJFR19TUCA9IFJFR19PNgotUkVHX1IwID0gUkVHX08wCi1SRUdfUjEgPSBSRUdfTzEKLV9OR1JFRyA9IDIxCi1fTkdSRUcgPSAxOQotTkdSRUcgPSBfTkdSRUcKLV9OR1JFRzMyID0gMTkKLV9OR1JFRzY0ID0gMjEKLVNQQVJDX01BWFJFR1dJTkRPVyA9IDMxCi1NQVhGUFEgPSAxNgotWFJTX0lEID0gMHg3ODcyNzMwMAotCi0jIEluY2x1ZGVkIGZyb20gdjcvc3lzL3ByaXZyZWdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wc3IuaAotUFNSX0NXUCA9IDB4MDAwMDAwMUYKLVBTUl9FVCA9IDB4MDAwMDAwMjAKLVBTUl9QUyA9IDB4MDAwMDAwNDAKLVBTUl9TID0gMHgwMDAwMDA4MAotUFNSX1BJTCA9IDB4MDAwMDBGMDAKLVBTUl9FRiA9IDB4MDAwMDEwMDAKLVBTUl9FQyA9IDB4MDAwMDIwMDAKLVBTUl9SU1YgPSAweDAwMEZDMDAwCi1QU1JfSUNDID0gMHgwMEYwMDAwMAotUFNSX0MgPSAweDAwMTAwMDAwCi1QU1JfViA9IDB4MDAyMDAwMDAKLVBTUl9aID0gMHgwMDQwMDAwMAotUFNSX04gPSAweDAwODAwMDAwCi1QU1JfVkVSID0gMHgwRjAwMDAwMAotUFNSX0lNUEwgPSAweEYwMDAwMDAwCi1QU0xfQUxMQ0MgPSBQU1JfSUNDCi1QU0xfVVNFUiA9IChQU1JfUykKLVBTTF9VU0VSTUFTSyA9IChQU1JfSUNDKQotUFNMX1VCSVRTID0gKFBTUl9JQ0N8UFNSX0VGKQotZGVmIFVTRVJNT0RFKHBzKTogcmV0dXJuICgoKHBzKSAmIFBTUl9QUykgPT0gMCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Zzci5oCi1GU1JfQ0VYQyA9IDB4MDAwMDAwMWYKLUZTUl9BRVhDID0gMHgwMDAwMDNlMAotRlNSX0ZDQyA9IDB4MDAwMDBjMDAKLUZTUl9QUiA9IDB4MDAwMDEwMDAKLUZTUl9RTkUgPSAweDAwMDAyMDAwCi1GU1JfRlRUID0gMHgwMDAxYzAwMAotRlNSX1ZFUiA9IDB4MDAwZTAwMDAKLUZTUl9URU0gPSAweDBmODAwMDAwCi1GU1JfUlAgPSAweDMwMDAwMDAwCi1GU1JfUkQgPSAweGMwMDAwMDAwCi1GU1JfVkVSX1NISUZUID0gMTcKLUZTUl9GQ0MxID0gMHgwMDAwMDAwMwotRlNSX0ZDQzIgPSAweDAwMDAwMDBDCi1GU1JfRkNDMyA9IDB4MDAwMDAwMzAKLUZTUl9DRVhDX05YID0gMHgwMDAwMDAwMQotRlNSX0NFWENfRFogPSAweDAwMDAwMDAyCi1GU1JfQ0VYQ19VRiA9IDB4MDAwMDAwMDQKLUZTUl9DRVhDX09GID0gMHgwMDAwMDAwOAotRlNSX0NFWENfTlYgPSAweDAwMDAwMDEwCi1GU1JfQUVYQ19OWCA9ICgweDEgPDwgNSkKLUZTUl9BRVhDX0RaID0gKDB4MiA8PCA1KQotRlNSX0FFWENfVUYgPSAoMHg0IDw8IDUpCi1GU1JfQUVYQ19PRiA9ICgweDggPDwgNSkKLUZTUl9BRVhDX05WID0gKDB4MTAgPDwgNSkKLUZUVF9OT05FID0gMAotRlRUX0lFRUUgPSAxCi1GVFRfVU5GSU4gPSAyCi1GVFRfVU5JTVAgPSAzCi1GVFRfU0VRID0gNAotRlRUX0FMSUdOID0gNQotRlRUX0RGQVVMVCA9IDYKLUZTUl9GVFRfU0hJRlQgPSAxNAotRlNSX0ZUVF9JRUVFID0gKEZUVF9JRUVFICAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5GSU4gPSAoRlRUX1VORklOICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9VTklNUCA9IChGVFRfVU5JTVAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1NFUSA9IChGVFRfU0VRICAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0FMSUdOID0gKEZUVF9BTElHTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfREZBVUxUID0gKEZUVF9ERkFVTFQgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9URU1fTlggPSAoMHgxIDw8IDIzKQotRlNSX1RFTV9EWiA9ICgweDIgPDwgMjMpCi1GU1JfVEVNX1VGID0gKDB4NCA8PCAyMykKLUZTUl9URU1fT0YgPSAoMHg4IDw8IDIzKQotRlNSX1RFTV9OViA9ICgweDEwIDw8IDIzKQotUlBfREJMRVhUID0gMAotUlBfU0lOR0xFID0gMQotUlBfRE9VQkxFID0gMgotUlBfUkVTRVJWRUQgPSAzCi1SRF9ORUFSID0gMAotUkRfWkVSMCA9IDEKLVJEX1BPU0lORiA9IDIKLVJEX05FR0lORiA9IDMKLUZQUlNfREwgPSAweDEKLUZQUlNfRFUgPSAweDIKLUZQUlNfRkVGID0gMHg0Ci1QSUxfTUFYID0gMHhmCi1kZWYgU0FWRV9HTE9CQUxTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX09VVFMoUlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFNBVkVfV0lORE9XKFNCUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgU1RPUkVfRlBSRUdTKEZQKTogcmV0dXJuIFwKLQotZGVmIExPQURfRlBSRUdTKEZQKTogcmV0dXJuIFwKLQotX1NQQVJDX01BWFJFR1dJTkRPVyA9IDMxCi1fWFJTX0lEID0gMHg3ODcyNzMwMAotR0VUQ09OVEVYVCA9IDAKLVNFVENPTlRFWFQgPSAxCi1VQ19TSUdNQVNLID0gMG8wMQotVUNfU1RBQ0sgPSAwbzAyCi1VQ19DUFUgPSAwbzA0Ci1VQ19NQVUgPSAwbzEwCi1VQ19GUFUgPSBVQ19NQVUKLVVDX0lOVFIgPSAwbzIwCi1VQ19BU1IgPSAwbzQwCi1VQ19NQ09OVEVYVCA9IChVQ19DUFV8VUNfRlBVfFVDX0FTUikKLVVDX0FMTCA9IChVQ19TSUdNQVNLfFVDX1NUQUNLfFVDX01DT05URVhUKQotX1NJR1FVRVVFX01BWCA9IDMyCi1fU0lHTk9USUZZX01BWCA9IDMyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcGNiLmgKLUlOU1RSX1ZBTElEID0gMHgwMgotTk9STUFMX1NURVAgPSAweDA0Ci1XQVRDSF9TVEVQID0gMHgwOAotQ1BDX09WRVJGTE9XID0gMHgxMAotQVNZTkNfSFdFUlIgPSAweDIwCi1TVEVQX05PTkUgPSAwCi1TVEVQX1JFUVVFU1RFRCA9IDEKLVNURVBfQUNUSVZFID0gMgotU1RFUF9XQVNBQ1RJVkUgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXNhY2N0LmgKLUxNU19VU0VSID0gMAotTE1TX1NZU1RFTSA9IDEKLUxNU19UUkFQID0gMgotTE1TX1RGQVVMVCA9IDMKLUxNU19ERkFVTFQgPSA0Ci1MTVNfS0ZBVUxUID0gNQotTE1TX1VTRVJfTE9DSyA9IDYKLUxNU19TTEVFUCA9IDcKLUxNU19XQUlUX0NQVSA9IDgKLUxNU19TVE9QUEVEID0gOQotTk1TVEFURVMgPSAxMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2x3cC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3luY2guaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVVNZTkNfVEhSRUFEID0gMHgwMAotVVNZTkNfUFJPQ0VTUyA9IDB4MDEKLUxPQ0tfTk9STUFMID0gMHgwMAotTE9DS19FUlJPUkNIRUNLID0gMHgwMgotTE9DS19SRUNVUlNJVkUgPSAweDA0Ci1VU1lOQ19QUk9DRVNTX1JPQlVTVCA9IDB4MDgKLUxPQ0tfUFJJT19OT05FID0gMHgwMAotTE9DS19QUklPX0lOSEVSSVQgPSAweDEwCi1MT0NLX1BSSU9fUFJPVEVDVCA9IDB4MjAKLUxPQ0tfU1RBTExfTlAgPSAweDAwCi1MT0NLX1JPQlVTVF9OUCA9IDB4NDAKLUxPQ0tfT1dORVJERUFEID0gMHgxCi1MT0NLX05PVFJFQ09WRVJBQkxFID0gMHgyCi1MT0NLX0lOSVRFRCA9IDB4NAotTE9DS19VTk1BUFBFRCA9IDB4OAotTFdQX0RFVEFDSEVEID0gMHgwMDAwMDA0MAotTFdQX1NVU1BFTkRFRCA9IDB4MDAwMDAwODAKLV9fTFdQX0FTTFdQID0gMHgwMDAwMDEwMAotTUFYU1lTQVJHUyA9IDgKLU5PUk1BTFJFVFVSTiA9IDAKLUpVU1RSRVRVUk4gPSAxCi1MV1BfVVNFUiA9IDB4MDEKLUxXUF9TWVMgPSAweDAyCi1UU19GUkVFID0gMHgwMAotVFNfU0xFRVAgPSAweDAxCi1UU19SVU4gPSAweDAyCi1UU19PTlBST0MgPSAweDA0Ci1UU19aT01CID0gMHgwOAotVFNfU1RPUFBFRCA9IDB4MTAKLVRfSU5UUl9USFJFQUQgPSAweDAwMDEKLVRfV0FLRUFCTEUgPSAweDAwMDIKLVRfVE9NQVNLID0gMHgwMDA0Ci1UX1RBTExPQ1NUSyA9IDB4MDAwOAotVF9XT1VMREJMT0NLID0gMHgwMDIwCi1UX0RPTlRCTE9DSyA9IDB4MDA0MAotVF9ET05UUEVORCA9IDB4MDA4MAotVF9TWVNfUFJPRiA9IDB4MDEwMAotVF9XQUlUQ1ZTRU0gPSAweDAyMDAKLVRfV0FUQ0hQVCA9IDB4MDQwMAotVF9QQU5JQyA9IDB4MDgwMAotVFBfSE9MRExXUCA9IDB4MDAwMgotVFBfVFdBSVQgPSAweDAwMDQKLVRQX0xXUEVYSVQgPSAweDAwMDgKLVRQX1BSU1RPUCA9IDB4MDAxMAotVFBfQ0hLUFQgPSAweDAwMjAKLVRQX0VYSVRMV1AgPSAweDAwNDAKLVRQX1BSVlNUT1AgPSAweDAwODAKLVRQX01TQUNDVCA9IDB4MDEwMAotVFBfU1RPUFBJTkcgPSAweDAyMDAKLVRQX1dBVENIUFQgPSAweDA0MDAKLVRQX1BBVVNFID0gMHgwODAwCi1UUF9DSEFOR0VCSU5EID0gMHgxMDAwCi1UU19MT0FEID0gMHgwMDAxCi1UU19ET05UX1NXQVAgPSAweDAwMDIKLVRTX1NXQVBFTlEgPSAweDAwMDQKLVRTX09OX1NXQVBRID0gMHgwMDA4Ci1UU19DU1RBUlQgPSAweDAxMDAKLVRTX1VOUEFVU0UgPSAweDAyMDAKLVRTX1hTVEFSVCA9IDB4MDQwMAotVFNfUFNUQVJUID0gMHgwODAwCi1UU19SRVNVTUUgPSAweDEwMDAKLVRTX0NSRUFURSA9IDB4MjAwMAotVFNfQUxMU1RBUlQgPSBcCi0gICAgICAgIChUU19DU1RBUlR8VFNfVU5QQVVTRXxUU19YU1RBUlR8VFNfUFNUQVJUfFRTX1JFU1VNRXxUU19DUkVBVEUpCi1kZWYgQ1BSX1ZTVE9QUEVEKHQpOiByZXR1cm4gXAotCi1kZWYgVEhSRUFEX1RSQU5TSVRJT04odHApOiByZXR1cm4gdGhyZWFkX3RyYW5zaXRpb24odHApOwotCi1kZWYgVEhSRUFEX1NUT1AodHApOiByZXR1cm4gXAotCi1kZWYgVEhSRUFEX1pPTUIodHApOiByZXR1cm4gVEhSRUFEX1NFVF9TVEFURSh0cCwgVFNfWk9NQiwgTlVMTCkKLQotZGVmIFNFTUFfSEVMRCh4KTogcmV0dXJuIChzZW1hX2hlbGQoKHgpKSkKLQotTk9fTE9DS1NfSEVMRCA9IDEKLU5PX0NPTVBFVElOR19USFJFQURTID0gMQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NyZWQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Vpby5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVzb3VyY2UuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotUFJJT19QUk9DRVNTID0gMAotUFJJT19QR1JQID0gMQotUFJJT19VU0VSID0gMgotUkxJTUlUX0NQVSA9IDAKLVJMSU1JVF9GU0laRSA9IDEKLVJMSU1JVF9EQVRBID0gMgotUkxJTUlUX1NUQUNLID0gMwotUkxJTUlUX0NPUkUgPSA0Ci1STElNSVRfTk9GSUxFID0gNQotUkxJTUlUX1ZNRU0gPSA2Ci1STElNSVRfQVMgPSBSTElNSVRfVk1FTQotUkxJTV9OTElNSVRTID0gNwotUkxJTV9JTkZJTklUWSA9ICgtMykKLVJMSU1fU0FWRURfTUFYID0gKC0yKQotUkxJTV9TQVZFRF9DVVIgPSAoLTEpCi1STElNX0lORklOSVRZID0gMHg3ZmZmZmZmZgotUkxJTV9TQVZFRF9NQVggPSAweDdmZmZmZmZlCi1STElNX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLVJMSU0zMl9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU0zMl9TQVZFRF9NQVggPSAweDdmZmZmZmZlCi1STElNMzJfU0FWRURfQ1VSID0gMHg3ZmZmZmZmZAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21vZGVsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZWJ1Zy5oCi1kZWYgQVNTRVJUNjQoeCk6IHJldHVybiBBU1NFUlQoeCkKLQotZGVmIEFTU0VSVDMyKHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLURBVEFNT0RFTF9NQVNLID0gMHgwRkYwMDAwMAotREFUQU1PREVMX0lMUDMyID0gMHgwMDEwMDAwMAotREFUQU1PREVMX0xQNjQgPSAweDAwMjAwMDAwCi1EQVRBTU9ERUxfTk9ORSA9IDAKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfTFA2NAotREFUQU1PREVMX05BVElWRSA9IERBVEFNT0RFTF9JTFAzMgotZGVmIFNUUlVDVF9TSVpFKGhhbmRsZSk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyLm02NCkKLQotZGVmIFNJWkVPRl9QVFIodW1vZGVsKTogcmV0dXJuIFwKLQotZGVmIFNUUlVDVF9TSVpFKGhhbmRsZSk6IHJldHVybiAoc2l6ZW9mICgqKGhhbmRsZSkucHRyKSkKLQotZGVmIFNUUlVDVF9CVUYoaGFuZGxlKTogcmV0dXJuICgoaGFuZGxlKS5wdHIpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBzaXplb2YgKGNhZGRyX3QpCi0KLWRlZiBsd3BfZ2V0ZGF0YW1vZGVsKHQpOiByZXR1cm4gREFUQU1PREVMX0lMUDMyCi0KLVJVU0FHRV9TRUxGID0gMAotUlVTQUdFX0NISUxEUkVOID0gLTEKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3NlZ19lbnVtLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9idWYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tzdGF0LmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLUtTVEFUX1NUUkxFTiA9IDMxCi1kZWYgS1NUQVRfRU5URVIoayk6IHJldHVybiBcCi0KLWRlZiBLU1RBVF9FWElUKGspOiByZXR1cm4gXAotCi1LU1RBVF9UWVBFX1JBVyA9IDAKLUtTVEFUX1RZUEVfTkFNRUQgPSAxCi1LU1RBVF9UWVBFX0lOVFIgPSAyCi1LU1RBVF9UWVBFX0lPID0gMwotS1NUQVRfVFlQRV9USU1FUiA9IDQKLUtTVEFUX05VTV9UWVBFUyA9IDUKLUtTVEFUX0ZMQUdfVklSVFVBTCA9IDB4MDEKLUtTVEFUX0ZMQUdfVkFSX1NJWkUgPSAweDAyCi1LU1RBVF9GTEFHX1dSSVRBQkxFID0gMHgwNAotS1NUQVRfRkxBR19QRVJTSVNURU5UID0gMHgwOAotS1NUQVRfRkxBR19ET1JNQU5UID0gMHgxMAotS1NUQVRfRkxBR19JTlZBTElEID0gMHgyMAotS1NUQVRfUkVBRCA9IDAKLUtTVEFUX1dSSVRFID0gMQotS1NUQVRfREFUQV9DSEFSID0gMAotS1NUQVRfREFUQV9JTlQzMiA9IDEKLUtTVEFUX0RBVEFfVUlOVDMyID0gMgotS1NUQVRfREFUQV9JTlQ2NCA9IDMKLUtTVEFUX0RBVEFfVUlOVDY0ID0gNAotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQzMgotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDMyCi1LU1RBVF9EQVRBX0xPTkcgPSBLU1RBVF9EQVRBX0lOVDY0Ci1LU1RBVF9EQVRBX1VMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfTE9ORyA9IDcKLUtTVEFUX0RBVEFfVUxPTkcgPSA4Ci1LU1RBVF9EQVRBX0xPTkdMT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9OR0xPTkcgPSBLU1RBVF9EQVRBX1VJTlQ2NAotS1NUQVRfREFUQV9GTE9BVCA9IDUKLUtTVEFUX0RBVEFfRE9VQkxFID0gNgotS1NUQVRfSU5UUl9IQVJEID0gMAotS1NUQVRfSU5UUl9TT0ZUID0gMQotS1NUQVRfSU5UUl9XQVRDSERPRyA9IDIKLUtTVEFUX0lOVFJfU1BVUklPVVMgPSAzCi1LU1RBVF9JTlRSX01VTFRTVkMgPSA0Ci1LU1RBVF9OVU1fSU5UUlMgPSA1Ci1CX0JVU1kgPSAweDAwMDEKLUJfRE9ORSA9IDB4MDAwMgotQl9FUlJPUiA9IDB4MDAwNAotQl9QQUdFSU8gPSAweDAwMTAKLUJfUEhZUyA9IDB4MDAyMAotQl9SRUFEID0gMHgwMDQwCi1CX1dSSVRFID0gMHgwMTAwCi1CX0tFUk5CVUYgPSAweDAwMDgKLUJfV0FOVEVEID0gMHgwMDgwCi1CX0FHRSA9IDB4MDAwMjAwCi1CX0FTWU5DID0gMHgwMDA0MDAKLUJfREVMV1JJID0gMHgwMDA4MDAKLUJfU1RBTEUgPSAweDAwMTAwMAotQl9ET05UTkVFRCA9IDB4MDAyMDAwCi1CX1JFTUFQUEVEID0gMHgwMDQwMDAKLUJfRlJFRSA9IDB4MDA4MDAwCi1CX0lOVkFMID0gMHgwMTAwMDAKLUJfRk9SQ0UgPSAweDAyMDAwMAotQl9IRUFEID0gMHgwNDAwMDAKLUJfTk9DQUNIRSA9IDB4MDgwMDAwCi1CX1RSVU5DID0gMHgxMDAwMDAKLUJfU0hBRE9XID0gMHgyMDAwMDAKLUJfUkVUUllXUkkgPSAweDQwMDAwMAotZGVmIG5vdGF2YWlsKGJwKTogcmV0dXJuIFwKLQotZGVmIEJXUklURShicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUyKGJwKTogcmV0dXJuIFwKLQotVlJPT1QgPSAweDAxCi1WTk9DQUNIRSA9IDB4MDIKLVZOT01BUCA9IDB4MDQKLVZEVVAgPSAweDA4Ci1WTk9TV0FQID0gMHgxMAotVk5PTU9VTlQgPSAweDIwCi1WSVNTV0FQID0gMHg0MAotVlNXQVBMSUtFID0gMHg4MAotVlZGU0xPQ0sgPSAweDEwMAotVlZGU1dBSVQgPSAweDIwMAotVlZNTE9DSyA9IDB4NDAwCi1WRElST1BFTiA9IDB4ODAwCi1WVk1FWEVDID0gMHgxMDAwCi1WUFhGUyA9IDB4MjAwMAotQVRfVFlQRSA9IDB4MDAwMQotQVRfTU9ERSA9IDB4MDAwMgotQVRfVUlEID0gMHgwMDA0Ci1BVF9HSUQgPSAweDAwMDgKLUFUX0ZTSUQgPSAweDAwMTAKLUFUX05PREVJRCA9IDB4MDAyMAotQVRfTkxJTksgPSAweDAwNDAKLUFUX1NJWkUgPSAweDAwODAKLUFUX0FUSU1FID0gMHgwMTAwCi1BVF9NVElNRSA9IDB4MDIwMAotQVRfQ1RJTUUgPSAweDA0MDAKLUFUX1JERVYgPSAweDA4MDAKLUFUX0JMS1NJWkUgPSAweDEwMDAKLUFUX05CTE9DS1MgPSAweDIwMDAKLUFUX1ZDT0RFID0gMHg0MDAwCi1BVF9BTEwgPSAoQVRfVFlQRXxBVF9NT0RFfEFUX1VJRHxBVF9HSUR8QVRfRlNJRHxBVF9OT0RFSUR8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfTkxJTkt8QVRfU0laRXxBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9SREVWfEFUX0JMS1NJWkV8QVRfTkJMT0NLU3xBVF9WQ09ERSkKLUFUX1NUQVQgPSAoQVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfEFUX05MSU5LfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8QVRfUkRFVikKLUFUX1RJTUVTID0gKEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FKQotQVRfTk9TRVQgPSAoQVRfTkxJTkt8QVRfUkRFVnxBVF9GU0lEfEFUX05PREVJRHxBVF9UWVBFfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX0JMS1NJWkV8QVRfTkJMT0NLU3xBVF9WQ09ERSkKLVZTVUlEID0gMG80MDAwCi1WU0dJRCA9IDBvMjAwMAotVlNWVFggPSAwbzEwMDAKLVZSRUFEID0gMG8wNDAwCi1WV1JJVEUgPSAwbzAyMDAKLVZFWEVDID0gMG8wMTAwCi1NT0RFTUFTSyA9IDBvNzc3NwotUEVSTU1BU0sgPSAwbzA3NzcKLWRlZiBNQU5ETU9ERShtb2RlKTogcmV0dXJuICgoKG1vZGUpICYgKFZTR0lEfChWRVhFQz4+MykpKSA9PSBWU0dJRCkKLQotVlNBX0FDTCA9IDB4MDAwMQotVlNBX0FDTENOVCA9IDB4MDAwMgotVlNBX0RGQUNMID0gMHgwMDA0Ci1WU0FfREZBQ0xDTlQgPSAweDAwMDgKLUxPT0tVUF9ESVIgPSAweDAxCi1EVU1QX0FMTE9DID0gMAotRFVNUF9GUkVFID0gMQotRFVNUF9TQ0FOID0gMgotQVRUUl9VVElNRSA9IDB4MDEKLUFUVFJfRVhFQyA9IDB4MDIKLUFUVFJfQ09NTSA9IDB4MDQKLUFUVFJfSElOVCA9IDB4MDgKLUFUVFJfUkVBTCA9IDB4MTAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9wb2xsLmgKLVBPTExJTiA9IDB4MDAwMQotUE9MTFBSSSA9IDB4MDAwMgotUE9MTE9VVCA9IDB4MDAwNAotUE9MTFJETk9STSA9IDB4MDA0MAotUE9MTFdSTk9STSA9IFBPTExPVVQKLVBPTExSREJBTkQgPSAweDAwODAKLVBPTExXUkJBTkQgPSAweDAxMDAKLVBPTExOT1JNID0gUE9MTFJETk9STQotUE9MTEVSUiA9IDB4MDAwOAotUE9MTEhVUCA9IDB4MDAxMAotUE9MTE5WQUwgPSAweDAwMjAKLVBPTExSRU1PVkUgPSAweDA4MDAKLVBPTExSRERBVEEgPSAweDAyMDAKLVBPTExOT0VSUiA9IDB4MDQwMAotUE9MTENMT1NFRCA9IDB4ODAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cm1kZXAuaAotZGVmIHN0cl9hbGlnbmVkKFgpOiByZXR1cm4gKCgodWxvbmdfdCkoWCkgJiAoc2l6ZW9mIChpbnQpIC0gMSkpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJmdC5oCi10ZGVsdGFfdF9zeiA9IDEyCi1GVEVWX01BU0sgPSAweDFGRkYKLUZURVZfSVNXUiA9IDB4ODAwMAotRlRFVl9DUyA9IDB4NDAwMAotRlRFVl9QUyA9IDB4MjAwMAotRlRFVl9RTUFTSyA9IDB4MUYwMAotRlRFVl9BTExPQ01BU0sgPSAweDFGRjgKLUZURVZfQUxMT0NCID0gMHgwMDAwCi1GVEVWX0VTQkFMTE9DID0gMHgwMDAxCi1GVEVWX0RFU0JBTExPQyA9IDB4MDAwMgotRlRFVl9FU0JBTExPQ0EgPSAweDAwMDMKLUZURVZfREVTQkFMTE9DQSA9IDB4MDAwNAotRlRFVl9BTExPQ0JJRyA9IDB4MDAwNQotRlRFVl9BTExPQ0JXID0gMHgwMDA2Ci1GVEVWX0ZSRUVCID0gMHgwMDA4Ci1GVEVWX0RVUEIgPSAweDAwMDkKLUZURVZfQ09QWUIgPSAweDAwMEEKLUZURVZfQ0FMTEVSID0gMHgwMDBGCi1GVEVWX1BVVCA9IDB4MDEwMAotRlRFVl9GU1lOQ1EgPSAweDAxMDMKLUZURVZfRFNZTkNRID0gMHgwMTA0Ci1GVEVWX1BVVFEgPSAweDAxMDUKLUZURVZfR0VUUSA9IDB4MDEwNgotRlRFVl9STVZRID0gMHgwMTA3Ci1GVEVWX0lOU1EgPSAweDAxMDgKLUZURVZfUFVUQlEgPSAweDAxMDkKLUZURVZfRkxVU0hRID0gMHgwMTBBCi1GVEVWX1JFUExZUSA9IDB4MDEwQgotRlRFVl9QVVRORVhUID0gMHgwMTBECi1GVEVWX1JXTkVYVCA9IDB4MDEwRQotRlRFVl9RV0lOTkVSID0gMHgwMTBGCi1GVEVWX0dFV1JJVEUgPSAweDAxMDEKLWRlZiBGVEZMV19IQVNIKGgpOiByZXR1cm4gKCgodW5zaWduZWQpKGgpKSVmdGZsd19oYXNoX3N6KQotCi1GVEJMS19FVk5UUyA9IDB4OQotUUVOQUIgPSAweDAwMDAwMDAxCi1RV0FOVFIgPSAweDAwMDAwMDAyCi1RV0FOVFcgPSAweDAwMDAwMDA0Ci1RRlVMTCA9IDB4MDAwMDAwMDgKLVFSRUFEUiA9IDB4MDAwMDAwMTAKLVFVU0UgPSAweDAwMDAwMDIwCi1RTk9FTkIgPSAweDAwMDAwMDQwCi1RQkFDSyA9IDB4MDAwMDAxMDAKLVFITElTVCA9IDB4MDAwMDAyMDAKLVFQQUlSID0gMHgwMDAwMDgwMAotUVBFUlEgPSAweDAwMDAxMDAwCi1RUEVSTU9EID0gMHgwMDAwMjAwMAotUU1UU0FGRSA9IDB4MDAwMDQwMDAKLVFNVE9VVFBFUklNID0gMHgwMDAwODAwMAotUU1UX1RZUEVNQVNLID0gKFFQQUlSfFFQRVJRfFFQRVJNT0R8UU1UU0FGRXxRTVRPVVRQRVJJTSkKLVFJTlNFUlZJQ0UgPSAweDAwMDEwMDAwCi1RV0NMT1NFID0gMHgwMDAyMDAwMAotUUVORCA9IDB4MDAwNDAwMDAKLVFXQU5UV1NZTkMgPSAweDAwMDgwMDAwCi1RU1lOQ1NUUiA9IDB4MDAxMDAwMDAKLVFJU0RSViA9IDB4MDAyMDAwMDAKLVFIT1QgPSAweDAwNDAwMDAwCi1RTkVYVEhPVCA9IDB4MDA4MDAwMDAKLV9RSU5TRVJUSU5HID0gMHgwNDAwMDAwMAotX1FSRU1PVklORyA9IDB4MDgwMDAwMDAKLVFfU1FRVUVVRUQgPSAweDAxCi1RX1NRRFJBSU5JTkcgPSAweDAyCi1RQl9GVUxMID0gMHgwMQotUUJfV0FOVFcgPSAweDAyCi1RQl9CQUNLID0gMHgwNAotTkJBTkQgPSAyNTYKLVNUUlVJT1RfTk9ORSA9IC0xCi1TVFJVSU9UX0RPTlRDQVJFID0gMAotU1RSVUlPVF9TVEFOREFSRCA9IDEKLVNUUlVJT1RfSVAgPSAyCi1EQkxLX1JFRk1JTiA9IDB4MDEKLVNUUlVJT19TUEVDID0gMHgwMQotU1RSVUlPX0RPTkUgPSAweDAyCi1TVFJVSU9fSVAgPSAweDA0Ci1TVFJVSU9fWkMgPSAweDA4Ci1TVFJVSU9fSUNLID0gMHgxMAotTVNHTUFSSyA9IDB4MDEKLU1TR05PTE9PUCA9IDB4MDIKLU1TR0RFTElNID0gMHgwNAotTVNHTk9HRVQgPSAweDA4Ci1NU0dNQVJLTkVYVCA9IDB4MTAKLU1TR05PVE1BUktORVhUID0gMHgyMAotTV9EQVRBID0gMHgwMAotTV9QUk9UTyA9IDB4MDEKLU1fQlJFQUsgPSAweDA4Ci1NX1BBU1NGUCA9IDB4MDkKLU1fRVZFTlQgPSAweDBhCi1NX1NJRyA9IDB4MGIKLU1fREVMQVkgPSAweDBjCi1NX0NUTCA9IDB4MGQKLU1fSU9DVEwgPSAweDBlCi1NX1NFVE9QVFMgPSAweDEwCi1NX1JTRSA9IDB4MTEKLU1fSU9DQUNLID0gMHg4MQotTV9JT0NOQUsgPSAweDgyCi1NX1BDUFJPVE8gPSAweDgzCi1NX1BDU0lHID0gMHg4NAotTV9SRUFEID0gMHg4NQotTV9GTFVTSCA9IDB4ODYKLU1fU1RPUCA9IDB4ODcKLU1fU1RBUlQgPSAweDg4Ci1NX0hBTkdVUCA9IDB4ODkKLU1fRVJST1IgPSAweDhhCi1NX0NPUFlJTiA9IDB4OGIKLU1fQ09QWU9VVCA9IDB4OGMKLU1fSU9DREFUQSA9IDB4OGQKLU1fUENSU0UgPSAweDhlCi1NX1NUT1BJID0gMHg4ZgotTV9TVEFSVEkgPSAweDkwCi1NX1BDRVZFTlQgPSAweDkxCi1NX1VOSEFOR1VQID0gMHg5MgotUU5PUk0gPSAweDAwCi1RUENUTCA9IDB4ODAKLUlPQ19NT0RFTFMgPSBEQVRBTU9ERUxfTUFTSwotSU9DX0lMUDMyID0gREFUQU1PREVMX0lMUDMyCi1JT0NfTFA2NCA9IERBVEFNT0RFTF9MUDY0Ci1JT0NfTkFUSVZFID0gREFUQU1PREVMX05BVElWRQotSU9DX05PTkUgPSBEQVRBTU9ERUxfTk9ORQotU1RSQ0FOT04gPSAweDAxCi1SRUNPUFkgPSAweDAyCi1TT19BTEwgPSAweDAwM2YKLVNPX1JFQURPUFQgPSAweDAwMDEKLVNPX1dST0ZGID0gMHgwMDAyCi1TT19NSU5QU1ogPSAweDAwMDQKLVNPX01BWFBTWiA9IDB4MDAwOAotU09fSElXQVQgPSAweDAwMTAKLVNPX0xPV0FUID0gMHgwMDIwCi1TT19NUkVBRE9OID0gMHgwMDQwCi1TT19NUkVBRE9GRiA9IDB4MDA4MAotU09fTkRFTE9OID0gMHgwMTAwCi1TT19OREVMT0ZGID0gMHgwMjAwCi1TT19JU1RUWSA9IDB4MDQwMAotU09fSVNOVFRZID0gMHgwODAwCi1TT19UT1NUT1AgPSAweDEwMDAKLVNPX1RPTlNUT1AgPSAweDIwMDAKLVNPX0JBTkQgPSAweDQwMDAKLVNPX0RFTElNID0gMHg4MDAwCi1TT19OT0RFTElNID0gMHgwMTAwMDAKLVNPX1NUUkhPTEQgPSAweDAyMDAwMAotU09fRVJST1BUID0gMHgwNDAwMDAKLVNPX0NPUFlPUFQgPSAweDA4MDAwMAotU09fTUFYQkxLID0gMHgxMDAwMDAKLURFRl9JT1ZfTUFYID0gMTYKLUlORk9EX0ZJUlNUQllURVMgPSAweDAyCi1JTkZPRF9CWVRFUyA9IDB4MDQKLUlORk9EX0NPVU5UID0gMHgwOAotSU5GT0RfQ09QWU9VVCA9IDB4MTAKLU1PRE9QRU4gPSAweDEKLUNMT05FT1BFTiA9IDB4MgotQ09OU09QRU4gPSAweDQKLU9QRU5GQUlMID0gLTEKLUJQUklfTE8gPSAxCi1CUFJJX01FRCA9IDIKLUJQUklfSEkgPSAzCi1CUFJJX0ZUID0gNAotSU5GUFNaID0gLTEKLUZMVVNIQUxMID0gMQotRkxVU0hEQVRBID0gMAotU1RSSElHSCA9IDUxMjAKLVNUUkxPVyA9IDEwMjQKLU1BWElPQ0JTWiA9IDEwMjQKLVBFUklNX0lOTkVSID0gMQotUEVSSU1fT1VURVIgPSAyCi1kZWYgZGF0YW1zZyh0eXBlKTogcmV0dXJuIFwKLQotZGVmIHN0cmFsbihhKTogcmV0dXJuIChjYWRkcl90KSgoaW50cHRyX3QpKGEpICYgfihzaXplb2YgKGludCktMSkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9ieXRlb3JkZXIuaAotZGVmIG50b2hsKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBudG9ocyh4KTogcmV0dXJuICh4KQotCi1kZWYgaHRvbmwoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25zKHgpOiByZXR1cm4gKHgpCi0KLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fRU5DQVAgPSA0Ci1JUFBST1RPX1RDUCA9IDYKLUlQUFJPVE9fRUdQID0gOAotSVBQUk9UT19QVVAgPSAxMgotSVBQUk9UT19VRFAgPSAxNwotSVBQUk9UT19JRFAgPSAyMgotSVBQUk9UT19JUFY2ID0gNDEKLUlQUFJPVE9fUk9VVElORyA9IDQzCi1JUFBST1RPX0ZSQUdNRU5UID0gNDQKLUlQUFJPVE9fUlNWUCA9IDQ2Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fUElNID0gMTAzCi1JUFBST1RPX1JBVyA9IDI1NQotSVBQUk9UT19NQVggPSAyNTYKLUlQUE9SVF9FQ0hPID0gNwotSVBQT1JUX0RJU0NBUkQgPSA5Ci1JUFBPUlRfU1lTVEFUID0gMTEKLUlQUE9SVF9EQVlUSU1FID0gMTMKLUlQUE9SVF9ORVRTVEFUID0gMTUKLUlQUE9SVF9GVFAgPSAyMQotSVBQT1JUX1RFTE5FVCA9IDIzCi1JUFBPUlRfU01UUCA9IDI1Ci1JUFBPUlRfVElNRVNFUlZFUiA9IDM3Ci1JUFBPUlRfTkFNRVNFUlZFUiA9IDQyCi1JUFBPUlRfV0hPSVMgPSA0MwotSVBQT1JUX01UUCA9IDU3Ci1JUFBPUlRfQk9PVFBTID0gNjcKLUlQUE9SVF9CT09UUEMgPSA2OAotSVBQT1JUX1RGVFAgPSA2OQotSVBQT1JUX1JKRSA9IDc3Ci1JUFBPUlRfRklOR0VSID0gNzkKLUlQUE9SVF9UVFlMSU5LID0gODcKLUlQUE9SVF9TVVBEVVAgPSA5NQotSVBQT1JUX0VYRUNTRVJWRVIgPSA1MTIKLUlQUE9SVF9MT0dJTlNFUlZFUiA9IDUxMwotSVBQT1JUX0NNRFNFUlZFUiA9IDUxNAotSVBQT1JUX0VGU1NFUlZFUiA9IDUyMAotSVBQT1JUX0JJRkZVRFAgPSA1MTIKLUlQUE9SVF9XSE9TRVJWRVIgPSA1MTMKLUlQUE9SVF9ST1VURVNFUlZFUiA9IDUyMAotSVBQT1JUX1JFU0VSVkVEID0gMTAyNAotSVBQT1JUX1VTRVJSRVNFUlZFRCA9IDUwMDAKLUlNUExJTktfSVAgPSAxNTUKLUlNUExJTktfTE9XRVhQRVIgPSAxNTYKLUlNUExJTktfSElHSEVYUEVSID0gMTU4Ci1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9NQVggPSAxMjgKLUlOX0NMQVNTQl9OU0hJRlQgPSAxNgotSU5fQ0xBU1NCX01BWCA9IDY1NTM2Ci1JTl9DTEFTU0NfTlNISUZUID0gOAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1kZWYgSU5fTVVMVElDQVNUKGkpOiByZXR1cm4gSU5fQ0xBU1NEKGkpCi0KLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1kZWYgSU5fU0VUX0xPT1BCQUNLX0FERFIoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9VTlNQRUNJRklFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX0xPT1BCQUNLKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTE9PUEJBQ0soYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NVUxUSUNBU1QoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NVUxUSUNBU1QoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9MSU5LTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9TSVRFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNE1BUFBFRChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX1Y0TUFQUEVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRURfQU5ZKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRNQVBQRURfQU5ZKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfVjRDT01QQVQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9WNENPTVBBVChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX1JFU0VSVkVEKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfUkVTRVJWRUQoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19OT0RFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19MSU5LTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19TSVRFTE9DQUwoYWRkcik6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19PUkdMT0NBTChhZGRyKTogcmV0dXJuIFwKLQotZGVmIElONl9JU19BRERSX01DX09SR0xPQ0FMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGFkZHIpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfR0xPQkFMKGFkZHIpOiByZXR1cm4gXAotCi1JUF9PUFRJT05TID0gMQotSVBfSERSSU5DTCA9IDIKLUlQX1RPUyA9IDMKLUlQX1RUTCA9IDQKLUlQX1JFQ1ZPUFRTID0gNQotSVBfUkVDVlJFVE9QVFMgPSA2Ci1JUF9SRUNWRFNUQUREUiA9IDcKLUlQX1JFVE9QVFMgPSA4Ci1JUF9NVUxUSUNBU1RfSUYgPSAweDEwCi1JUF9NVUxUSUNBU1RfVFRMID0gMHgxMQotSVBfTVVMVElDQVNUX0xPT1AgPSAweDEyCi1JUF9BRERfTUVNQkVSU0hJUCA9IDB4MTMKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDB4MTQKLUlQX1NFQ19PUFQgPSAweDIyCi1JUFNFQ19QUkVGX05FVkVSID0gMHgwMQotSVBTRUNfUFJFRl9SRVFVSVJFRCA9IDB4MDIKLUlQU0VDX1BSRUZfVU5JUVVFID0gMHgwNAotSVBfQUREX1BST1hZX0FERFIgPSAweDQwCi1JUF9CT1VORF9JRiA9IDB4NDEKLUlQX1VOU1BFQ19TUkMgPSAweDQyCi1JUF9SRVVTRUFERFIgPSAweDEwNAotSVBfRE9OVFJPVVRFID0gMHgxMDUKLUlQX0JST0FEQ0FTVCA9IDB4MTA2Ci1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBWNl9SVEhEUl9UWVBFXzAgPSAwCi1JUFY2X1VOSUNBU1RfSE9QUyA9IDB4NQotSVBWNl9NVUxUSUNBU1RfSUYgPSAweDYKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAweDcKLUlQVjZfTVVMVElDQVNUX0xPT1AgPSAweDgKLUlQVjZfSk9JTl9HUk9VUCA9IDB4OQotSVBWNl9MRUFWRV9HUk9VUCA9IDB4YQotSVBWNl9BRERfTUVNQkVSU0hJUCA9IDB4OQotSVBWNl9EUk9QX01FTUJFUlNISVAgPSAweGEKLUlQVjZfUEtUSU5GTyA9IDB4YgotSVBWNl9IT1BMSU1JVCA9IDB4YwotSVBWNl9ORVhUSE9QID0gMHhkCi1JUFY2X0hPUE9QVFMgPSAweGUKLUlQVjZfRFNUT1BUUyA9IDB4ZgotSVBWNl9SVEhEUiA9IDB4MTAKLUlQVjZfUlRIRFJEU1RPUFRTID0gMHgxMQotSVBWNl9SRUNWUEtUSU5GTyA9IDB4MTIKLUlQVjZfUkVDVkhPUExJTUlUID0gMHgxMwotSVBWNl9SRUNWSE9QT1BUUyA9IDB4MTQKLUlQVjZfUkVDVkRTVE9QVFMgPSAweDE1Ci1JUFY2X1JFQ1ZSVEhEUiA9IDB4MTYKLUlQVjZfUkVDVlJUSERSRFNUT1BUUyA9IDB4MTcKLUlQVjZfQ0hFQ0tTVU0gPSAweDE4Ci1JUFY2X0JPVU5EX0lGID0gMHg0MQotSVBWNl9VTlNQRUNfU1JDID0gMHg0MgotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9QQUQxX09QVCA9IDAKZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXN1bm9zNS9TVFJPUFRTLnB5IGIvTGliL3BsYXQtc3Vub3M1L1NUUk9QVFMucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNzM1YzQuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L1NUUk9QVFMucHkKKysrIC9kZXYvbnVsbApAQCAtMSwxODEzICswLDAgQEAKLSMgR2VuZXJhdGVkIGJ5IGgycHkgZnJvbSAvdXNyL2luY2x1ZGUvc3lzL3N0cm9wdHMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ZlYXR1cmVfdGVzdHMuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzYV9kZWZzLmgKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDgKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fQ0hBUl9BTElHTk1FTlQgPSAxCi1fU0hPUlRfQUxJR05NRU5UID0gMgotX0lOVF9BTElHTk1FTlQgPSA0Ci1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19MT05HX0FMSUdOTUVOVCA9IDQKLV9ET1VCTEVfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDQKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gNAotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDAKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gOAotX0RPVUJMRV9BTElHTk1FTlQgPSA4Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMQotX0xPTkdfQUxJR05NRU5UID0gNAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDQKLV9NQVhfQUxJR05NRU5UID0gOAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfRE9VQkxFX0FMSUdOTUVOVCA9IDE2Ci1fUE9JTlRFUl9BTElHTk1FTlQgPSA4Ci1fTUFYX0FMSUdOTUVOVCA9IDE2Ci1fUE9TSVhfQ19TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFNjRfU09VUkNFID0gMQotX0xBUkdFRklMRV9TT1VSQ0UgPSAxCi1fRklMRV9PRkZTRVRfQklUUyA9IDY0Ci1fRklMRV9PRkZTRVRfQklUUyA9IDMyCi1fUE9TSVhfQ19TT1VSQ0UgPSAxOTk1MDYKLV9QT1NJWF9QVEhSRUFEX1NFTUFOVElDUyA9IDEKLV9YT1BFTl9WRVJTSU9OID0gNTAwCi1fWE9QRU5fVkVSU0lPTiA9IDQKLV9YT1BFTl9WRVJTSU9OID0gMwotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NvbmYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RfbG9jay5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaGxvY2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotTE9DS19IRUxEX1ZBTFVFID0gMHhmZgotZGVmIFNQSU5fTE9DSyhwbCk6IHJldHVybiAoKHBsKSA+IGlwbHRvc3BsKExPQ0tfTEVWRUwpKQotCi1kZWYgTE9DS19TQU1QTEVfSU5URVJWQUwoaSk6IHJldHVybiAoKChpKSAmIDB4ZmYpID09IDApCi0KLUNMT0NLX0xFVkVMID0gMTAKLUxPQ0tfTEVWRUwgPSAxMAotRElTUF9MRVZFTCA9IChMT0NLX0xFVkVMICsgMSkKLVBUUjI0X0xTQiA9IDUKLVBUUjI0X01TQiA9IChQVFIyNF9MU0IgKyAyNCkKLVBUUjI0X0FMSUdOID0gMzIKLVBUUjI0X0JBU0UgPSAweGUwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcGFyYW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotX1BPU0lYX1ZESVNBQkxFID0gMAotTUFYX0lOUFVUID0gNTEyCi1NQVhfQ0FOT04gPSAyNTYKLVVJRF9OT0JPRFkgPSA2MDAwMQotR0lEX05PQk9EWSA9IFVJRF9OT0JPRFkKLVVJRF9OT0FDQ0VTUyA9IDYwMDAyCi1NQVhfVEFTS0lEID0gOTk5OTk5Ci1NQVhfTUFYUElEID0gOTk5OTk5Ci1ERUZBVUxUX01BWFBJRCA9IDk5OTk5OQotREVGQVVMVF9KVU1QUElEID0gMTAwMDAwCi1ERUZBVUxUX01BWFBJRCA9IDMwMDAwCi1ERUZBVUxUX0pVTVBQSUQgPSAwCi1NQVhVSUQgPSAyMTQ3NDgzNjQ3Ci1NQVhQUk9KSUQgPSBNQVhVSUQKLU1BWExJTksgPSAzMjc2NwotTk1PVU5UID0gNDAKLUNBTkJTSVogPSAyNTYKLU5PRklMRSA9IDIwCi1OR1JPVVBTX1VNSU4gPSAwCi1OR1JPVVBTX1VNQVggPSAzMgotTkdST1VQU19NQVhfREVGQVVMVCA9IDE2Ci1OWkVSTyA9IDIwCi1OVUxMID0gMAotTlVMTCA9IDAKLUNNQVNLID0gMG8yMgotQ0RMSU1JVCA9ICgxPDwxMSkKLU5CUFMgPSAweDIwMDAwCi1OQlBTQ1RSID0gNTEyCi1VQlNJWkUgPSA1MTIKLVNDVFJTSEZUID0gOQotU1lTTkFNRSA9IDkKLVBSRU1PVEUgPSAzOQotTUFYUEFUSExFTiA9IDEwMjQKLU1BWFNZTUxJTktTID0gMjAKLU1BWE5BTUVMRU4gPSAyNTYKLU5BRERSID0gMTMKLVBJUEVfQlVGID0gNTEyMAotUElQRV9NQVggPSA1MTIwCi1OQkJZID0gOAotTUFYQlNJWkUgPSA4MTkyCi1ERVZfQlNJWkUgPSA1MTIKLURFVl9CU0hJRlQgPSA5Ci1NQVhGUkFHID0gOAotTUFYT0ZGMzJfVCA9IDB4N2ZmZmZmZmYKLU1BWE9GRl9UID0gMHg3ZmZmZmZmZmZmZmZmZmZmCi1NQVhPRkZTRVRfVCA9IDB4N2ZmZmZmZmZmZmZmZmZmZgotTUFYT0ZGX1QgPSAweDdmZmZmZmZmCi1NQVhPRkZTRVRfVCA9IDB4N2ZmZmZmZmYKLWRlZiBidG9kYihieXRlcyk6IHJldHVybiAgIFwKLQotZGVmIGRidG9iKGRiKTogcmV0dXJuICAgXAotCi1kZWYgbGJ0b2RiKGJ5dGVzKTogcmV0dXJuICAgXAotCi1kZWYgbGRidG9iKGRiKTogcmV0dXJuICAgXAotCi1OQ0FSR1MzMiA9IDB4MTAwMDAwCi1OQ0FSR1M2NCA9IDB4MjAwMDAwCi1OQ0FSR1MgPSBOQ0FSR1M2NAotTkNBUkdTID0gTkNBUkdTMzIKLUZTSElGVCA9IDgKLUZTQ0FMRSA9ICgxPDxGU0hJRlQpCi1kZWYgREVMQVkobik6IHJldHVybiBkcnZfdXNlY3dhaXQobikKLQotZGVmIG1tdV9wdG9iKHgpOiByZXR1cm4gKCh4KSA8PCBNTVVfUEFHRVNISUZUKQotCi1kZWYgbW11X2J0b3AoeCk6IHJldHVybiAoKCh4KSkgPj4gTU1VX1BBR0VTSElGVCkKLQotZGVmIG1tdV9idG9wcih4KTogcmV0dXJuICgoKCh4KSArIE1NVV9QQUdFT0ZGU0VUKSA+PiBNTVVfUEFHRVNISUZUKSkKLQotZGVmIG1tdV9wdG9kKHgpOiByZXR1cm4gKCh4KSA8PCAoTU1VX1BBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgcHRvZCh4KTogcmV0dXJuICgoeCkgPDwgKFBBR0VTSElGVCAtIERFVl9CU0hJRlQpKQotCi1kZWYgcHRvYih4KTogcmV0dXJuICgoeCkgPDwgUEFHRVNISUZUKQotCi1kZWYgYnRvcCh4KTogcmV0dXJuICgoKHgpID4+IFBBR0VTSElGVCkpCi0KLWRlZiBidG9wcih4KTogcmV0dXJuICgoKCh4KSArIFBBR0VPRkZTRVQpID4+IFBBR0VTSElGVCkpCi0KLWRlZiBkdG9wKEREKTogcmV0dXJuICgoKEREKSArIE5EUFAgLSAxKSA+PiAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLWRlZiBkdG9wdChERCk6IHJldHVybiAoKEREKSA+PiAoUEFHRVNISUZUIC0gREVWX0JTSElGVCkpCi0KLV9BSU9fTElTVElPX01BWCA9ICg0MDk2KQotX0FJT19NQVggPSAoLTEpCi1fTVFfT1BFTl9NQVggPSAoMzIpCi1fTVFfUFJJT19NQVggPSAoMzIpCi1fU0VNX05TRU1TX01BWCA9IElOVF9NQVgKLV9TRU1fVkFMVUVfTUFYID0gSU5UX01BWAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VuaXN0ZC5oCi1fQ1NfUEFUSCA9IDY1Ci1fQ1NfTEZTX0NGTEFHUyA9IDY4Ci1fQ1NfTEZTX0xERkxBR1MgPSA2OQotX0NTX0xGU19MSUJTID0gNzAKLV9DU19MRlNfTElOVEZMQUdTID0gNzEKLV9DU19MRlM2NF9DRkxBR1MgPSA3MgotX0NTX0xGUzY0X0xERkxBR1MgPSA3MwotX0NTX0xGUzY0X0xJQlMgPSA3NAotX0NTX0xGUzY0X0xJTlRGTEFHUyA9IDc1Ci1fQ1NfWEJTNV9JTFAzMl9PRkYzMl9DRkxBR1MgPSA3MDAKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xERkxBR1MgPSA3MDEKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xJQlMgPSA3MDIKLV9DU19YQlM1X0lMUDMyX09GRjMyX0xJTlRGTEFHUyA9IDcwMwotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0NGTEFHUyA9IDcwNQotX0NTX1hCUzVfSUxQMzJfT0ZGQklHX0xERkxBR1MgPSA3MDYKLV9DU19YQlM1X0lMUDMyX09GRkJJR19MSUJTID0gNzA3Ci1fQ1NfWEJTNV9JTFAzMl9PRkZCSUdfTElOVEZMQUdTID0gNzA4Ci1fQ1NfWEJTNV9MUDY0X09GRjY0X0NGTEFHUyA9IDcwOQotX0NTX1hCUzVfTFA2NF9PRkY2NF9MREZMQUdTID0gNzEwCi1fQ1NfWEJTNV9MUDY0X09GRjY0X0xJQlMgPSA3MTEKLV9DU19YQlM1X0xQNjRfT0ZGNjRfTElOVEZMQUdTID0gNzEyCi1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfQ0ZMQUdTID0gNzEzCi1fQ1NfWEJTNV9MUEJJR19PRkZCSUdfTERGTEFHUyA9IDcxNAotX0NTX1hCUzVfTFBCSUdfT0ZGQklHX0xJQlMgPSA3MTUKLV9DU19YQlM1X0xQQklHX09GRkJJR19MSU5URkxBR1MgPSA3MTYKLV9TQ19BUkdfTUFYID0gMQotX1NDX0NISUxEX01BWCA9IDIKLV9TQ19DTEtfVENLID0gMwotX1NDX05HUk9VUFNfTUFYID0gNAotX1NDX09QRU5fTUFYID0gNQotX1NDX0pPQl9DT05UUk9MID0gNgotX1NDX1NBVkVEX0lEUyA9IDcKLV9TQ19WRVJTSU9OID0gOAotX1NDX1BBU1NfTUFYID0gOQotX1NDX0xPR05BTUVfTUFYID0gMTAKLV9TQ19QQUdFU0laRSA9IDExCi1fU0NfWE9QRU5fVkVSU0lPTiA9IDEyCi1fU0NfTlBST0NFU1NPUlNfQ09ORiA9IDE0Ci1fU0NfTlBST0NFU1NPUlNfT05MTiA9IDE1Ci1fU0NfU1RSRUFNX01BWCA9IDE2Ci1fU0NfVFpOQU1FX01BWCA9IDE3Ci1fU0NfQUlPX0xJU1RJT19NQVggPSAxOAotX1NDX0FJT19NQVggPSAxOQotX1NDX0FJT19QUklPX0RFTFRBX01BWCA9IDIwCi1fU0NfQVNZTkNIUk9OT1VTX0lPID0gMjEKLV9TQ19ERUxBWVRJTUVSX01BWCA9IDIyCi1fU0NfRlNZTkMgPSAyMwotX1NDX01BUFBFRF9GSUxFUyA9IDI0Ci1fU0NfTUVNTE9DSyA9IDI1Ci1fU0NfTUVNTE9DS19SQU5HRSA9IDI2Ci1fU0NfTUVNT1JZX1BST1RFQ1RJT04gPSAyNwotX1NDX01FU1NBR0VfUEFTU0lORyA9IDI4Ci1fU0NfTVFfT1BFTl9NQVggPSAyOQotX1NDX01RX1BSSU9fTUFYID0gMzAKLV9TQ19QUklPUklUSVpFRF9JTyA9IDMxCi1fU0NfUFJJT1JJVFlfU0NIRURVTElORyA9IDMyCi1fU0NfUkVBTFRJTUVfU0lHTkFMUyA9IDMzCi1fU0NfUlRTSUdfTUFYID0gMzQKLV9TQ19TRU1BUEhPUkVTID0gMzUKLV9TQ19TRU1fTlNFTVNfTUFYID0gMzYKLV9TQ19TRU1fVkFMVUVfTUFYID0gMzcKLV9TQ19TSEFSRURfTUVNT1JZX09CSkVDVFMgPSAzOAotX1NDX1NJR1FVRVVFX01BWCA9IDM5Ci1fU0NfU0lHUlRfTUlOID0gNDAKLV9TQ19TSUdSVF9NQVggPSA0MQotX1NDX1NZTkNIUk9OSVpFRF9JTyA9IDQyCi1fU0NfVElNRVJTID0gNDMKLV9TQ19USU1FUl9NQVggPSA0NAotX1NDXzJfQ19CSU5EID0gNDUKLV9TQ18yX0NfREVWID0gNDYKLV9TQ18yX0NfVkVSU0lPTiA9IDQ3Ci1fU0NfMl9GT1JUX0RFViA9IDQ4Ci1fU0NfMl9GT1JUX1JVTiA9IDQ5Ci1fU0NfMl9MT0NBTEVERUYgPSA1MAotX1NDXzJfU1dfREVWID0gNTEKLV9TQ18yX1VQRSA9IDUyCi1fU0NfMl9WRVJTSU9OID0gNTMKLV9TQ19CQ19CQVNFX01BWCA9IDU0Ci1fU0NfQkNfRElNX01BWCA9IDU1Ci1fU0NfQkNfU0NBTEVfTUFYID0gNTYKLV9TQ19CQ19TVFJJTkdfTUFYID0gNTcKLV9TQ19DT0xMX1dFSUdIVFNfTUFYID0gNTgKLV9TQ19FWFBSX05FU1RfTUFYID0gNTkKLV9TQ19MSU5FX01BWCA9IDYwCi1fU0NfUkVfRFVQX01BWCA9IDYxCi1fU0NfWE9QRU5fQ1JZUFQgPSA2MgotX1NDX1hPUEVOX0VOSF9JMThOID0gNjMKLV9TQ19YT1BFTl9TSE0gPSA2NAotX1NDXzJfQ0hBUl9URVJNID0gNjYKLV9TQ19YT1BFTl9YQ1VfVkVSU0lPTiA9IDY3Ci1fU0NfQVRFWElUX01BWCA9IDc2Ci1fU0NfSU9WX01BWCA9IDc3Ci1fU0NfWE9QRU5fVU5JWCA9IDc4Ci1fU0NfUEFHRV9TSVpFID0gX1NDX1BBR0VTSVpFCi1fU0NfVF9JT1ZfTUFYID0gNzkKLV9TQ19QSFlTX1BBR0VTID0gNTAwCi1fU0NfQVZQSFlTX1BBR0VTID0gNTAxCi1fU0NfQ09IRVJfQkxLU1ogPSA1MDMKLV9TQ19TUExJVF9DQUNIRSA9IDUwNAotX1NDX0lDQUNIRV9TWiA9IDUwNQotX1NDX0RDQUNIRV9TWiA9IDUwNgotX1NDX0lDQUNIRV9MSU5FU1ogPSA1MDcKLV9TQ19EQ0FDSEVfTElORVNaID0gNTA4Ci1fU0NfSUNBQ0hFX0JMS1NaID0gNTA5Ci1fU0NfRENBQ0hFX0JMS1NaID0gNTEwCi1fU0NfRENBQ0hFX1RCTEtTWiA9IDUxMQotX1NDX0lDQUNIRV9BU1NPQyA9IDUxMgotX1NDX0RDQUNIRV9BU1NPQyA9IDUxMwotX1NDX01BWFBJRCA9IDUxNAotX1NDX1NUQUNLX1BST1QgPSA1MTUKLV9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gNTY4Ci1fU0NfR0VUR1JfUl9TSVpFX01BWCA9IDU2OQotX1NDX0dFVFBXX1JfU0laRV9NQVggPSA1NzAKLV9TQ19MT0dJTl9OQU1FX01BWCA9IDU3MQotX1NDX1RIUkVBRF9LRVlTX01BWCA9IDU3MgotX1NDX1RIUkVBRF9TVEFDS19NSU4gPSA1NzMKLV9TQ19USFJFQURfVEhSRUFEU19NQVggPSA1NzQKLV9TQ19UVFlfTkFNRV9NQVggPSA1NzUKLV9TQ19USFJFQURTID0gNTc2Ci1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tBRERSID0gNTc3Ci1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFID0gNTc4Ci1fU0NfVEhSRUFEX1BSSU9SSVRZX1NDSEVEVUxJTkcgPSA1NzkKLV9TQ19USFJFQURfUFJJT19JTkhFUklUID0gNTgwCi1fU0NfVEhSRUFEX1BSSU9fUFJPVEVDVCA9IDU4MQotX1NDX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCA9IDU4MgotX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyA9IDU4MwotX1NDX1hPUEVOX0xFR0FDWSA9IDcxNwotX1NDX1hPUEVOX1JFQUxUSU1FID0gNzE4Ci1fU0NfWE9QRU5fUkVBTFRJTUVfVEhSRUFEUyA9IDcxOQotX1NDX1hCUzVfSUxQMzJfT0ZGMzIgPSA3MjAKLV9TQ19YQlM1X0lMUDMyX09GRkJJRyA9IDcyMQotX1NDX1hCUzVfTFA2NF9PRkY2NCA9IDcyMgotX1NDX1hCUzVfTFBCSUdfT0ZGQklHID0gNzIzCi1fUENfTElOS19NQVggPSAxCi1fUENfTUFYX0NBTk9OID0gMgotX1BDX01BWF9JTlBVVCA9IDMKLV9QQ19OQU1FX01BWCA9IDQKLV9QQ19QQVRIX01BWCA9IDUKLV9QQ19QSVBFX0JVRiA9IDYKLV9QQ19OT19UUlVOQyA9IDcKLV9QQ19WRElTQUJMRSA9IDgKLV9QQ19DSE9XTl9SRVNUUklDVEVEID0gOQotX1BDX0FTWU5DX0lPID0gMTAKLV9QQ19QUklPX0lPID0gMTEKLV9QQ19TWU5DX0lPID0gMTIKLV9QQ19GSUxFU0laRUJJVFMgPSA2NwotX1BDX0xBU1QgPSA2NwotX1BPU0lYX1ZFUlNJT04gPSAxOTk1MDYKLV9QT1NJWDJfVkVSU0lPTiA9IDE5OTIwOQotX1BPU0lYMl9DX1ZFUlNJT04gPSAxOTkyMDkKLV9YT1BFTl9YQ1VfVkVSU0lPTiA9IDQKLV9YT1BFTl9SRUFMVElNRSA9IDEKLV9YT1BFTl9FTkhfSTE4TiA9IDEKLV9YT1BFTl9TSE0gPSAxCi1fUE9TSVgyX0NfQklORCA9IDEKLV9QT1NJWDJfQ0hBUl9URVJNID0gMQotX1BPU0lYMl9MT0NBTEVERUYgPSAxCi1fUE9TSVgyX0NfREVWID0gMQotX1BPU0lYMl9TV19ERVYgPSAxCi1fUE9TSVgyX1VQRSA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tdXRleC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1kZWYgTVVURVhfSEVMRCh4KTogcmV0dXJuIChtdXRleF9vd25lZCh4KSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3J3bG9jay5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1kZWYgUldfUkVBRF9IRUxEKHgpOiByZXR1cm4gKHJ3X3JlYWRfaGVsZCgoeCkpKQotCi1kZWYgUldfV1JJVEVfSEVMRCh4KTogcmV0dXJuIChyd193cml0ZV9oZWxkKCh4KSkpCi0KLWRlZiBSV19MT0NLX0hFTEQoeCk6IHJldHVybiAocndfbG9ja19oZWxkKCh4KSkpCi0KLWRlZiBSV19JU1dSSVRFUih4KTogcmV0dXJuIChyd19pc3dyaXRlcih4KSkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbWFwaG9yZS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGhyZWFkLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rbHdwLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb25kdmFyLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlczMyLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfdHlwZXMuaAotVElNRTMyX01BWCA9IElOVDMyX01BWAotVElNRTMyX01JTiA9IElOVDMyX01JTgotZGVmIFRJTUVWQUxfT1ZFUkZMT1codHYpOiByZXR1cm4gXAotCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUlUSU1FUl9SRUFMUFJPRiA9IDMKLWRlZiBJVElNRVJWQUxfT1ZFUkZMT1coaXR2KTogcmV0dXJuIFwKLQotU0VDID0gMQotTUlMTElTRUMgPSAxMDAwCi1NSUNST1NFQyA9IDEwMDAwMDAKLU5BTk9TRUMgPSAxMDAwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZV9pbXBsLmgKLWRlZiBUSU1FU1BFQ19PVkVSRkxPVyh0cyk6IHJldHVybiBcCi0KLWRlZiBJVElNRVJTUEVDX09WRVJGTE9XKGl0KTogcmV0dXJuIFwKLQotX19DTE9DS19SRUFMVElNRTAgPSAwCi1DTE9DS19WSVJUVUFMID0gMQotQ0xPQ0tfUFJPRiA9IDIKLV9fQ0xPQ0tfUkVBTFRJTUUzID0gMwotQ0xPQ0tfSElHSFJFUyA9IDQKLUNMT0NLX01BWCA9IDUKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTMKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTAKLVRJTUVSX1JFTFRJTUUgPSAweDAKLVRJTUVSX0FCU1RJTUUgPSAweDEKLWRlZiBUSUNLX1RPX1NFQyh0aWNrKTogcmV0dXJuICgodGljaykgLyBoeikKLQotZGVmIFNFQ19UT19USUNLKHNlYyk6IHJldHVybiAoKHNlYykgKiBoeikKLQotZGVmIFRJQ0tfVE9fTVNFQyh0aWNrKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDSyhtc2VjKTogcmV0dXJuIFwKLQotZGVmIE1TRUNfVE9fVElDS19ST1VORFVQKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19VU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIHVzZWNfcGVyX3RpY2spCi0KLWRlZiBVU0VDX1RPX1RJQ0sodXNlYyk6IHJldHVybiAoKHVzZWMpIC8gdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDS19ST1VORFVQKHVzZWMpOiByZXR1cm4gXAotCi1kZWYgVElDS19UT19OU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAqIG5zZWNfcGVyX3RpY2spCi0KLWRlZiBOU0VDX1RPX1RJQ0sobnNlYyk6IHJldHVybiAoKG5zZWMpIC8gbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDS19ST1VORFVQKG5zZWMpOiByZXR1cm4gXAotCi1kZWYgVElNRVZBTF9UT19USUNLKHR2cCk6IHJldHVybiBcCi0KLWRlZiBUSU1FU1RSVUNfVE9fVElDSyh0c3ApOiByZXR1cm4gXAotCi0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLQotIyBJbmNsdWRlZCBmcm9tIGlzby90aW1lX2lzby5oCi1OVUxMID0gMAotTlVMTCA9IDAKLUNMT0NLU19QRVJfU0VDID0gMTAwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNjU1MzYKLUZEX1NFVFNJWkUgPSAxMDI0Ci1fTkJCWSA9IDgKLU5CQlkgPSBfTkJCWQotZGVmIEZEX1pFUk8ocCk6IHJldHVybiBiemVybygocCksIHNpemVvZiAoKihwKSkpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zaWduYWwuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2lzby9zaWduYWxfaXNvLmgKLVNJR0hVUCA9IDEKLVNJR0lOVCA9IDIKLVNJR1FVSVQgPSAzCi1TSUdJTEwgPSA0Ci1TSUdUUkFQID0gNQotU0lHSU9UID0gNgotU0lHQUJSVCA9IDYKLVNJR0VNVCA9IDcKLVNJR0ZQRSA9IDgKLVNJR0tJTEwgPSA5Ci1TSUdCVVMgPSAxMAotU0lHU0VHViA9IDExCi1TSUdTWVMgPSAxMgotU0lHUElQRSA9IDEzCi1TSUdBTFJNID0gMTQKLVNJR1RFUk0gPSAxNQotU0lHVVNSMSA9IDE2Ci1TSUdVU1IyID0gMTcKLVNJR0NMRCA9IDE4Ci1TSUdDSExEID0gMTgKLVNJR1BXUiA9IDE5Ci1TSUdXSU5DSCA9IDIwCi1TSUdVUkcgPSAyMQotU0lHUE9MTCA9IDIyCi1TSUdJTyA9IFNJR1BPTEwKLVNJR1NUT1AgPSAyMwotU0lHVFNUUCA9IDI0Ci1TSUdDT05UID0gMjUKLVNJR1RUSU4gPSAyNgotU0lHVFRPVSA9IDI3Ci1TSUdWVEFMUk0gPSAyOAotU0lHUFJPRiA9IDI5Ci1TSUdYQ1BVID0gMzAKLVNJR1hGU1ogPSAzMQotU0lHV0FJVElORyA9IDMyCi1TSUdMV1AgPSAzMwotU0lHRlJFRVpFID0gMzQKLVNJR1RIQVcgPSAzNQotU0lHQ0FOQ0VMID0gMzYKLVNJR0xPU1QgPSAzNwotX1NJR1JUTUlOID0gMzgKLV9TSUdSVE1BWCA9IDQ1Ci1TSUdfQkxPQ0sgPSAxCi1TSUdfVU5CTE9DSyA9IDIKLVNJR19TRVRNQVNLID0gMwotU0lHTk9fTUFTSyA9IDB4RkYKLVNJR0RFRkVSID0gMHgxMDAKLVNJR0hPTEQgPSAweDIwMAotU0lHUkVMU0UgPSAweDQwMAotU0lHSUdOT1JFID0gMHg4MDAKLVNJR1BBVVNFID0gMHgxMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2lnaW5mby5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1TSUdFVl9OT05FID0gMQotU0lHRVZfU0lHTkFMID0gMgotU0lHRVZfVEhSRUFEID0gMwotU0lfTk9JTkZPID0gMzI3NjcKLVNJX1VTRVIgPSAwCi1TSV9MV1AgPSAoLTEpCi1TSV9RVUVVRSA9ICgtMikKLVNJX1RJTUVSID0gKC0zKQotU0lfQVNZTkNJTyA9ICgtNCkKLVNJX01FU0dRID0gKC01KQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL21hY2hzaWcuaAotSUxMX0lMTE9QQyA9IDEKLUlMTF9JTExPUE4gPSAyCi1JTExfSUxMQURSID0gMwotSUxMX0lMTFRSUCA9IDQKLUlMTF9QUlZPUEMgPSA1Ci1JTExfUFJWUkVHID0gNgotSUxMX0NPUFJPQyA9IDcKLUlMTF9CQURTVEsgPSA4Ci1OU0lHSUxMID0gOAotRU1UX1RBR09WRiA9IDEKLUVNVF9DUENPVkYgPSAyCi1OU0lHRU1UID0gMgotRlBFX0lOVERJViA9IDEKLUZQRV9JTlRPVkYgPSAyCi1GUEVfRkxURElWID0gMwotRlBFX0ZMVE9WRiA9IDQKLUZQRV9GTFRVTkQgPSA1Ci1GUEVfRkxUUkVTID0gNgotRlBFX0ZMVElOViA9IDcKLUZQRV9GTFRTVUIgPSA4Ci1OU0lHRlBFID0gOAotU0VHVl9NQVBFUlIgPSAxCi1TRUdWX0FDQ0VSUiA9IDIKLU5TSUdTRUdWID0gMgotQlVTX0FEUkFMTiA9IDEKLUJVU19BRFJFUlIgPSAyCi1CVVNfT0JKRVJSID0gMwotTlNJR0JVUyA9IDMKLVRSQVBfQlJLUFQgPSAxCi1UUkFQX1RSQUNFID0gMgotVFJBUF9SV0FUQ0ggPSAzCi1UUkFQX1dXQVRDSCA9IDQKLVRSQVBfWFdBVENIID0gNQotTlNJR1RSQVAgPSA1Ci1DTERfRVhJVEVEID0gMQotQ0xEX0tJTExFRCA9IDIKLUNMRF9EVU1QRUQgPSAzCi1DTERfVFJBUFBFRCA9IDQKLUNMRF9TVE9QUEVEID0gNQotQ0xEX0NPTlRJTlVFRCA9IDYKLU5TSUdDTEQgPSA2Ci1QT0xMX0lOID0gMQotUE9MTF9PVVQgPSAyCi1QT0xMX01TRyA9IDMKLVBPTExfRVJSID0gNAotUE9MTF9QUkkgPSA1Ci1QT0xMX0hVUCA9IDYKLU5TSUdQT0xMID0gNgotUFJPRl9TSUcgPSAxCi1OU0lHUFJPRiA9IDEKLVNJX01BWFNaID0gMjU2Ci1TSV9NQVhTWiA9IDEyOAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWVfc3RkX2ltcGwuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotU0kzMl9NQVhTWiA9IDEyOAotZGVmIFNJX0NBTlFVRVVFKGMpOiByZXR1cm4gKChjKSA8PSBTSV9RVUVVRSkKLQotU0FfTk9DTERTVE9QID0gMHgwMDAyMDAwMAotU0FfT05TVEFDSyA9IDB4MDAwMDAwMDEKLVNBX1JFU0VUSEFORCA9IDB4MDAwMDAwMDIKLVNBX1JFU1RBUlQgPSAweDAwMDAwMDA0Ci1TQV9TSUdJTkZPID0gMHgwMDAwMDAwOAotU0FfTk9ERUZFUiA9IDB4MDAwMDAwMTAKLVNBX05PQ0xEV0FJVCA9IDB4MDAwMTAwMDAKLVNBX1dBSVRTSUcgPSAweDAwMDEwMDAwCi1OU0lHID0gNDYKLU1BWFNJRyA9IDQ1Ci1TX1NJR05BTCA9IDEKLVNfU0lHU0VUID0gMgotU19TSUdBQ1RJT04gPSAzCi1TX05PTkUgPSA0Ci1NSU5TSUdTVEtTWiA9IDIwNDgKLVNJR1NUS1NaID0gODE5MgotU1NfT05TVEFDSyA9IDB4MDAwMDAwMDEKLVNTX0RJU0FCTEUgPSAweDAwMDAwMDAyCi1TTl9QUk9DID0gMQotU05fQ0FOQ0VMID0gMgotU05fU0VORCA9IDMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91Y29udGV4dC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcmVnc2V0LmgKLVJFR19DQ1IgPSAoMCkKLVJFR19QU1IgPSAoMCkKLVJFR19QU1IgPSAoMCkKLVJFR19QQyA9ICgxKQotUkVHX25QQyA9ICgyKQotUkVHX1kgPSAoMykKLVJFR19HMSA9ICg0KQotUkVHX0cyID0gKDUpCi1SRUdfRzMgPSAoNikKLVJFR19HNCA9ICg3KQotUkVHX0c1ID0gKDgpCi1SRUdfRzYgPSAoOSkKLVJFR19HNyA9ICgxMCkKLVJFR19PMCA9ICgxMSkKLVJFR19PMSA9ICgxMikKLVJFR19PMiA9ICgxMykKLVJFR19PMyA9ICgxNCkKLVJFR19PNCA9ICgxNSkKLVJFR19PNSA9ICgxNikKLVJFR19PNiA9ICgxNykKLVJFR19PNyA9ICgxOCkKLVJFR19BU0kgPSAoMTkpCi1SRUdfRlBSUyA9ICgyMCkKLVJFR19QUyA9IFJFR19QU1IKLVJFR19TUCA9IFJFR19PNgotUkVHX1IwID0gUkVHX08wCi1SRUdfUjEgPSBSRUdfTzEKLV9OR1JFRyA9IDIxCi1fTkdSRUcgPSAxOQotTkdSRUcgPSBfTkdSRUcKLV9OR1JFRzMyID0gMTkKLV9OR1JFRzY0ID0gMjEKLVNQQVJDX01BWFJFR1dJTkRPVyA9IDMxCi1NQVhGUFEgPSAxNgotWFJTX0lEID0gMHg3ODcyNzMwMAotCi0jIEluY2x1ZGVkIGZyb20gdjcvc3lzL3ByaXZyZWdzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHY3L3N5cy9wc3IuaAotUFNSX0NXUCA9IDB4MDAwMDAwMUYKLVBTUl9FVCA9IDB4MDAwMDAwMjAKLVBTUl9QUyA9IDB4MDAwMDAwNDAKLVBTUl9TID0gMHgwMDAwMDA4MAotUFNSX1BJTCA9IDB4MDAwMDBGMDAKLVBTUl9FRiA9IDB4MDAwMDEwMDAKLVBTUl9FQyA9IDB4MDAwMDIwMDAKLVBTUl9SU1YgPSAweDAwMEZDMDAwCi1QU1JfSUNDID0gMHgwMEYwMDAwMAotUFNSX0MgPSAweDAwMTAwMDAwCi1QU1JfViA9IDB4MDAyMDAwMDAKLVBTUl9aID0gMHgwMDQwMDAwMAotUFNSX04gPSAweDAwODAwMDAwCi1QU1JfVkVSID0gMHgwRjAwMDAwMAotUFNSX0lNUEwgPSAweEYwMDAwMDAwCi1QU0xfQUxMQ0MgPSBQU1JfSUNDCi1QU0xfVVNFUiA9IChQU1JfUykKLVBTTF9VU0VSTUFTSyA9IChQU1JfSUNDKQotUFNMX1VCSVRTID0gKFBTUl9JQ0N8UFNSX0VGKQotZGVmIFVTRVJNT0RFKHBzKTogcmV0dXJuICgoKHBzKSAmIFBTUl9QUykgPT0gMCkKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Zzci5oCi1GU1JfQ0VYQyA9IDB4MDAwMDAwMWYKLUZTUl9BRVhDID0gMHgwMDAwMDNlMAotRlNSX0ZDQyA9IDB4MDAwMDBjMDAKLUZTUl9QUiA9IDB4MDAwMDEwMDAKLUZTUl9RTkUgPSAweDAwMDAyMDAwCi1GU1JfRlRUID0gMHgwMDAxYzAwMAotRlNSX1ZFUiA9IDB4MDAwZTAwMDAKLUZTUl9URU0gPSAweDBmODAwMDAwCi1GU1JfUlAgPSAweDMwMDAwMDAwCi1GU1JfUkQgPSAweGMwMDAwMDAwCi1GU1JfVkVSX1NISUZUID0gMTcKLUZTUl9GQ0MxID0gMHgwMDAwMDAwMwotRlNSX0ZDQzIgPSAweDAwMDAwMDBDCi1GU1JfRkNDMyA9IDB4MDAwMDAwMzAKLUZTUl9DRVhDX05YID0gMHgwMDAwMDAwMQotRlNSX0NFWENfRFogPSAweDAwMDAwMDAyCi1GU1JfQ0VYQ19VRiA9IDB4MDAwMDAwMDQKLUZTUl9DRVhDX09GID0gMHgwMDAwMDAwOAotRlNSX0NFWENfTlYgPSAweDAwMDAwMDEwCi1GU1JfQUVYQ19OWCA9ICgweDEgPDwgNSkKLUZTUl9BRVhDX0RaID0gKDB4MiA8PCA1KQotRlNSX0FFWENfVUYgPSAoMHg0IDw8IDUpCi1GU1JfQUVYQ19PRiA9ICgweDggPDwgNSkKLUZTUl9BRVhDX05WID0gKDB4MTAgPDwgNSkKLUZUVF9OT05FID0gMAotRlRUX0lFRUUgPSAxCi1GVFRfVU5GSU4gPSAyCi1GVFRfVU5JTVAgPSAzCi1GVFRfU0VRID0gNAotRlRUX0FMSUdOID0gNQotRlRUX0RGQVVMVCA9IDYKLUZTUl9GVFRfU0hJRlQgPSAxNAotRlNSX0ZUVF9JRUVFID0gKEZUVF9JRUVFICAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfVU5GSU4gPSAoRlRUX1VORklOICA8PCBGU1JfRlRUX1NISUZUKQotRlNSX0ZUVF9VTklNUCA9IChGVFRfVU5JTVAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX1NFUSA9IChGVFRfU0VRICAgIDw8IEZTUl9GVFRfU0hJRlQpCi1GU1JfRlRUX0FMSUdOID0gKEZUVF9BTElHTiAgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9GVFRfREZBVUxUID0gKEZUVF9ERkFVTFQgPDwgRlNSX0ZUVF9TSElGVCkKLUZTUl9URU1fTlggPSAoMHgxIDw8IDIzKQotRlNSX1RFTV9EWiA9ICgweDIgPDwgMjMpCi1GU1JfVEVNX1VGID0gKDB4NCA8PCAyMykKLUZTUl9URU1fT0YgPSAoMHg4IDw8IDIzKQotRlNSX1RFTV9OViA9ICgweDEwIDw8IDIzKQotUlBfREJMRVhUID0gMAotUlBfU0lOR0xFID0gMQotUlBfRE9VQkxFID0gMgotUlBfUkVTRVJWRUQgPSAzCi1SRF9ORUFSID0gMAotUkRfWkVSMCA9IDEKLVJEX1BPU0lORiA9IDIKLVJEX05FR0lORiA9IDMKLUZQUlNfREwgPSAweDEKLUZQUlNfRFUgPSAweDIKLUZQUlNfRkVGID0gMHg0Ci1QSUxfTUFYID0gMHhmCi1kZWYgU0FWRV9HTE9CQUxTKFJQKTogcmV0dXJuIFwKLQotZGVmIFJFU1RPUkVfR0xPQkFMUyhSUCk6IHJldHVybiBcCi0KLWRlZiBTQVZFX09VVFMoUlApOiByZXR1cm4gXAotCi1kZWYgUkVTVE9SRV9PVVRTKFJQKTogcmV0dXJuIFwKLQotZGVmIFNBVkVfV0lORE9XKFNCUCk6IHJldHVybiBcCi0KLWRlZiBSRVNUT1JFX1dJTkRPVyhTQlApOiByZXR1cm4gXAotCi1kZWYgU1RPUkVfRlBSRUdTKEZQKTogcmV0dXJuIFwKLQotZGVmIExPQURfRlBSRUdTKEZQKTogcmV0dXJuIFwKLQotX1NQQVJDX01BWFJFR1dJTkRPVyA9IDMxCi1fWFJTX0lEID0gMHg3ODcyNzMwMAotR0VUQ09OVEVYVCA9IDAKLVNFVENPTlRFWFQgPSAxCi1VQ19TSUdNQVNLID0gMG8wMQotVUNfU1RBQ0sgPSAwbzAyCi1VQ19DUFUgPSAwbzA0Ci1VQ19NQVUgPSAwbzEwCi1VQ19GUFUgPSBVQ19NQVUKLVVDX0lOVFIgPSAwbzIwCi1VQ19BU1IgPSAwbzQwCi1VQ19NQ09OVEVYVCA9IChVQ19DUFV8VUNfRlBVfFVDX0FTUikKLVVDX0FMTCA9IChVQ19TSUdNQVNLfFVDX1NUQUNLfFVDX01DT05URVhUKQotX1NJR1FVRVVFX01BWCA9IDMyCi1fU0lHTk9USUZZX01BWCA9IDMyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcGNiLmgKLUlOU1RSX1ZBTElEID0gMHgwMgotTk9STUFMX1NURVAgPSAweDA0Ci1XQVRDSF9TVEVQID0gMHgwOAotQ1BDX09WRVJGTE9XID0gMHgxMAotQVNZTkNfSFdFUlIgPSAweDIwCi1TVEVQX05PTkUgPSAwCi1TVEVQX1JFUVVFU1RFRCA9IDEKLVNURVBfQUNUSVZFID0gMgotU1RFUF9XQVNBQ1RJVkUgPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbXNhY2N0LmgKLUxNU19VU0VSID0gMAotTE1TX1NZU1RFTSA9IDEKLUxNU19UUkFQID0gMgotTE1TX1RGQVVMVCA9IDMKLUxNU19ERkFVTFQgPSA0Ci1MTVNfS0ZBVUxUID0gNQotTE1TX1VTRVJfTE9DSyA9IDYKLUxNU19TTEVFUCA9IDcKLUxNU19XQUlUX0NQVSA9IDgKLUxNU19TVE9QUEVEID0gOQotTk1TVEFURVMgPSAxMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2x3cC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3luY2guaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVVNZTkNfVEhSRUFEID0gMHgwMAotVVNZTkNfUFJPQ0VTUyA9IDB4MDEKLUxPQ0tfTk9STUFMID0gMHgwMAotTE9DS19FUlJPUkNIRUNLID0gMHgwMgotTE9DS19SRUNVUlNJVkUgPSAweDA0Ci1VU1lOQ19QUk9DRVNTX1JPQlVTVCA9IDB4MDgKLUxPQ0tfUFJJT19OT05FID0gMHgwMAotTE9DS19QUklPX0lOSEVSSVQgPSAweDEwCi1MT0NLX1BSSU9fUFJPVEVDVCA9IDB4MjAKLUxPQ0tfU1RBTExfTlAgPSAweDAwCi1MT0NLX1JPQlVTVF9OUCA9IDB4NDAKLUxPQ0tfT1dORVJERUFEID0gMHgxCi1MT0NLX05PVFJFQ09WRVJBQkxFID0gMHgyCi1MT0NLX0lOSVRFRCA9IDB4NAotTE9DS19VTk1BUFBFRCA9IDB4OAotTFdQX0RFVEFDSEVEID0gMHgwMDAwMDA0MAotTFdQX1NVU1BFTkRFRCA9IDB4MDAwMDAwODAKLV9fTFdQX0FTTFdQID0gMHgwMDAwMDEwMAotTUFYU1lTQVJHUyA9IDgKLU5PUk1BTFJFVFVSTiA9IDAKLUpVU1RSRVRVUk4gPSAxCi1MV1BfVVNFUiA9IDB4MDEKLUxXUF9TWVMgPSAweDAyCi1UU19GUkVFID0gMHgwMAotVFNfU0xFRVAgPSAweDAxCi1UU19SVU4gPSAweDAyCi1UU19PTlBST0MgPSAweDA0Ci1UU19aT01CID0gMHgwOAotVFNfU1RPUFBFRCA9IDB4MTAKLVRfSU5UUl9USFJFQUQgPSAweDAwMDEKLVRfV0FLRUFCTEUgPSAweDAwMDIKLVRfVE9NQVNLID0gMHgwMDA0Ci1UX1RBTExPQ1NUSyA9IDB4MDAwOAotVF9XT1VMREJMT0NLID0gMHgwMDIwCi1UX0RPTlRCTE9DSyA9IDB4MDA0MAotVF9ET05UUEVORCA9IDB4MDA4MAotVF9TWVNfUFJPRiA9IDB4MDEwMAotVF9XQUlUQ1ZTRU0gPSAweDAyMDAKLVRfV0FUQ0hQVCA9IDB4MDQwMAotVF9QQU5JQyA9IDB4MDgwMAotVFBfSE9MRExXUCA9IDB4MDAwMgotVFBfVFdBSVQgPSAweDAwMDQKLVRQX0xXUEVYSVQgPSAweDAwMDgKLVRQX1BSU1RPUCA9IDB4MDAxMAotVFBfQ0hLUFQgPSAweDAwMjAKLVRQX0VYSVRMV1AgPSAweDAwNDAKLVRQX1BSVlNUT1AgPSAweDAwODAKLVRQX01TQUNDVCA9IDB4MDEwMAotVFBfU1RPUFBJTkcgPSAweDAyMDAKLVRQX1dBVENIUFQgPSAweDA0MDAKLVRQX1BBVVNFID0gMHgwODAwCi1UUF9DSEFOR0VCSU5EID0gMHgxMDAwCi1UU19MT0FEID0gMHgwMDAxCi1UU19ET05UX1NXQVAgPSAweDAwMDIKLVRTX1NXQVBFTlEgPSAweDAwMDQKLVRTX09OX1NXQVBRID0gMHgwMDA4Ci1UU19DU1RBUlQgPSAweDAxMDAKLVRTX1VOUEFVU0UgPSAweDAyMDAKLVRTX1hTVEFSVCA9IDB4MDQwMAotVFNfUFNUQVJUID0gMHgwODAwCi1UU19SRVNVTUUgPSAweDEwMDAKLVRTX0NSRUFURSA9IDB4MjAwMAotVFNfQUxMU1RBUlQgPSBcCi0gICAgICAgIChUU19DU1RBUlR8VFNfVU5QQVVTRXxUU19YU1RBUlR8VFNfUFNUQVJUfFRTX1JFU1VNRXxUU19DUkVBVEUpCi1kZWYgQ1BSX1ZTVE9QUEVEKHQpOiByZXR1cm4gXAotCi1kZWYgVEhSRUFEX1RSQU5TSVRJT04odHApOiByZXR1cm4gdGhyZWFkX3RyYW5zaXRpb24odHApOwotCi1kZWYgVEhSRUFEX1NUT1AodHApOiByZXR1cm4gXAotCi1kZWYgVEhSRUFEX1pPTUIodHApOiByZXR1cm4gVEhSRUFEX1NFVF9TVEFURSh0cCwgVFNfWk9NQiwgTlVMTCkKLQotZGVmIFNFTUFfSEVMRCh4KTogcmV0dXJuIChzZW1hX2hlbGQoKHgpKSkKLQotTk9fTE9DS1NfSEVMRCA9IDEKLU5PX0NPTVBFVElOR19USFJFQURTID0gMQotRk1OQU1FU1ogPSA4Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3lzdG0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Byb2MuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2NyZWQuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3VzZXIuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Jlc291cmNlLmgKLWZyb20gVFlQRVMgaW1wb3J0ICoKLVBSSU9fUFJPQ0VTUyA9IDAKLVBSSU9fUEdSUCA9IDEKLVBSSU9fVVNFUiA9IDIKLVJMSU1JVF9DUFUgPSAwCi1STElNSVRfRlNJWkUgPSAxCi1STElNSVRfREFUQSA9IDIKLVJMSU1JVF9TVEFDSyA9IDMKLVJMSU1JVF9DT1JFID0gNAotUkxJTUlUX05PRklMRSA9IDUKLVJMSU1JVF9WTUVNID0gNgotUkxJTUlUX0FTID0gUkxJTUlUX1ZNRU0KLVJMSU1fTkxJTUlUUyA9IDcKLVJMSU1fSU5GSU5JVFkgPSAoLTMpCi1STElNX1NBVkVEX01BWCA9ICgtMikKLVJMSU1fU0FWRURfQ1VSID0gKC0xKQotUkxJTV9JTkZJTklUWSA9IDB4N2ZmZmZmZmYKLVJMSU1fU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTV9TQVZFRF9DVVIgPSAweDdmZmZmZmZkCi1STElNMzJfSU5GSU5JVFkgPSAweDdmZmZmZmZmCi1STElNMzJfU0FWRURfTUFYID0gMHg3ZmZmZmZmZQotUkxJTTMyX1NBVkVEX0NVUiA9IDB4N2ZmZmZmZmQKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tb2RlbC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGVidWcuaAotZGVmIEFTU0VSVDY0KHgpOiByZXR1cm4gQVNTRVJUKHgpCi0KLWRlZiBBU1NFUlQzMih4KTogcmV0dXJuIEFTU0VSVCh4KQotCi1EQVRBTU9ERUxfTUFTSyA9IDB4MEZGMDAwMDAKLURBVEFNT0RFTF9JTFAzMiA9IDB4MDAxMDAwMDAKLURBVEFNT0RFTF9MUDY0ID0gMHgwMDIwMDAwMAotREFUQU1PREVMX05PTkUgPSAwCi1EQVRBTU9ERUxfTkFUSVZFID0gREFUQU1PREVMX0xQNjQKLURBVEFNT0RFTF9OQVRJVkUgPSBEQVRBTU9ERUxfSUxQMzIKLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gXAotCi1kZWYgU1RSVUNUX0JVRihoYW5kbGUpOiByZXR1cm4gKChoYW5kbGUpLnB0ci5tNjQpCi0KLWRlZiBTSVpFT0ZfUFRSKHVtb2RlbCk6IHJldHVybiBcCi0KLWRlZiBTVFJVQ1RfU0laRShoYW5kbGUpOiByZXR1cm4gKHNpemVvZiAoKihoYW5kbGUpLnB0cikpCi0KLWRlZiBTVFJVQ1RfQlVGKGhhbmRsZSk6IHJldHVybiAoKGhhbmRsZSkucHRyKQotCi1kZWYgU0laRU9GX1BUUih1bW9kZWwpOiByZXR1cm4gc2l6ZW9mIChjYWRkcl90KQotCi1kZWYgbHdwX2dldGRhdGFtb2RlbCh0KTogcmV0dXJuIERBVEFNT0RFTF9JTFAzMgotCi1SVVNBR0VfU0VMRiA9IDAKLVJVU0FHRV9DSElMRFJFTiA9IC0xCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYXV4di5oCi1BVF9OVUxMID0gMAotQVRfSUdOT1JFID0gMQotQVRfRVhFQ0ZEID0gMgotQVRfUEhEUiA9IDMKLUFUX1BIRU5UID0gNAotQVRfUEhOVU0gPSA1Ci1BVF9QQUdFU1ogPSA2Ci1BVF9CQVNFID0gNwotQVRfRkxBR1MgPSA4Ci1BVF9FTlRSWSA9IDkKLUFUX0RDQUNIRUJTSVpFID0gMTAKLUFUX0lDQUNIRUJTSVpFID0gMTEKLUFUX1VDQUNIRUJTSVpFID0gMTIKLUFUX1NVTl9VSUQgPSAyMDAwCi1BVF9TVU5fUlVJRCA9IDIwMDEKLUFUX1NVTl9HSUQgPSAyMDAyCi1BVF9TVU5fUkdJRCA9IDIwMDMKLUFUX1NVTl9MREVMRiA9IDIwMDQKLUFUX1NVTl9MRFNIRFIgPSAyMDA1Ci1BVF9TVU5fTEROQU1FID0gMjAwNgotQVRfU1VOX0xQQUdFU1ogPSAyMDA3Ci1BVF9TVU5fUExBVEZPUk0gPSAyMDA4Ci1BVF9TVU5fSFdDQVAgPSAyMDA5Ci1BVF9TVU5fSUZMVVNIID0gMjAxMAotQVRfU1VOX0NQVSA9IDIwMTEKLUFUX1NVTl9FTVVMX0VOVFJZID0gMjAxMgotQVRfU1VOX0VNVUxfRVhFQ0ZEID0gMjAxMwotQVRfU1VOX0VYRUNOQU1FID0gMjAxNAotQVRfU1VOX01NVSA9IDIwMTUKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9lcnJuby5oCi1FUEVSTSA9IDEKLUVOT0VOVCA9IDIKLUVTUkNIID0gMwotRUlOVFIgPSA0Ci1FSU8gPSA1Ci1FTlhJTyA9IDYKLUUyQklHID0gNwotRU5PRVhFQyA9IDgKLUVCQURGID0gOQotRUNISUxEID0gMTAKLUVBR0FJTiA9IDExCi1FTk9NRU0gPSAxMgotRUFDQ0VTID0gMTMKLUVGQVVMVCA9IDE0Ci1FTk9UQkxLID0gMTUKLUVCVVNZID0gMTYKLUVFWElTVCA9IDE3Ci1FWERFViA9IDE4Ci1FTk9ERVYgPSAxOQotRU5PVERJUiA9IDIwCi1FSVNESVIgPSAyMQotRUlOVkFMID0gMjIKLUVORklMRSA9IDIzCi1FTUZJTEUgPSAyNAotRU5PVFRZID0gMjUKLUVUWFRCU1kgPSAyNgotRUZCSUcgPSAyNwotRU5PU1BDID0gMjgKLUVTUElQRSA9IDI5Ci1FUk9GUyA9IDMwCi1FTUxJTksgPSAzMQotRVBJUEUgPSAzMgotRURPTSA9IDMzCi1FUkFOR0UgPSAzNAotRU5PTVNHID0gMzUKLUVJRFJNID0gMzYKLUVDSFJORyA9IDM3Ci1FTDJOU1lOQyA9IDM4Ci1FTDNITFQgPSAzOQotRUwzUlNUID0gNDAKLUVMTlJORyA9IDQxCi1FVU5BVENIID0gNDIKLUVOT0NTSSA9IDQzCi1FTDJITFQgPSA0NAotRURFQURMSyA9IDQ1Ci1FTk9MQ0sgPSA0NgotRUNBTkNFTEVEID0gNDcKLUVOT1RTVVAgPSA0OAotRURRVU9UID0gNDkKLUVCQURFID0gNTAKLUVCQURSID0gNTEKLUVYRlVMTCA9IDUyCi1FTk9BTk8gPSA1MwotRUJBRFJRQyA9IDU0Ci1FQkFEU0xUID0gNTUKLUVERUFETE9DSyA9IDU2Ci1FQkZPTlQgPSA1NwotRU9XTkVSREVBRCA9IDU4Ci1FTk9UUkVDT1ZFUkFCTEUgPSA1OQotRU5PU1RSID0gNjAKLUVOT0RBVEEgPSA2MQotRVRJTUUgPSA2MgotRU5PU1IgPSA2MwotRU5PTkVUID0gNjQKLUVOT1BLRyA9IDY1Ci1FUkVNT1RFID0gNjYKLUVOT0xJTksgPSA2NwotRUFEViA9IDY4Ci1FU1JNTlQgPSA2OQotRUNPTU0gPSA3MAotRVBST1RPID0gNzEKLUVMT0NLVU5NQVBQRUQgPSA3MgotRU5PVEFDVElWRSA9IDczCi1FTVVMVElIT1AgPSA3NAotRUJBRE1TRyA9IDc3Ci1FTkFNRVRPT0xPTkcgPSA3OAotRU9WRVJGTE9XID0gNzkKLUVOT1RVTklRID0gODAKLUVCQURGRCA9IDgxCi1FUkVNQ0hHID0gODIKLUVMSUJBQ0MgPSA4MwotRUxJQkJBRCA9IDg0Ci1FTElCU0NOID0gODUKLUVMSUJNQVggPSA4NgotRUxJQkVYRUMgPSA4NwotRUlMU0VRID0gODgKLUVOT1NZUyA9IDg5Ci1FTE9PUCA9IDkwCi1FUkVTVEFSVCA9IDkxCi1FU1RSUElQRSA9IDkyCi1FTk9URU1QVFkgPSA5MwotRVVTRVJTID0gOTQKLUVOT1RTT0NLID0gOTUKLUVERVNUQUREUlJFUSA9IDk2Ci1FTVNHU0laRSA9IDk3Ci1FUFJPVE9UWVBFID0gOTgKLUVOT1BST1RPT1BUID0gOTkKLUVQUk9UT05PU1VQUE9SVCA9IDEyMAotRVNPQ0tUTk9TVVBQT1JUID0gMTIxCi1FT1BOT1RTVVBQID0gMTIyCi1FUEZOT1NVUFBPUlQgPSAxMjMKLUVBRk5PU1VQUE9SVCA9IDEyNAotRUFERFJJTlVTRSA9IDEyNQotRUFERFJOT1RBVkFJTCA9IDEyNgotRU5FVERPV04gPSAxMjcKLUVORVRVTlJFQUNIID0gMTI4Ci1FTkVUUkVTRVQgPSAxMjkKLUVDT05OQUJPUlRFRCA9IDEzMAotRUNPTk5SRVNFVCA9IDEzMQotRU5PQlVGUyA9IDEzMgotRUlTQ09OTiA9IDEzMwotRU5PVENPTk4gPSAxMzQKLUVTSFVURE9XTiA9IDE0MwotRVRPT01BTllSRUZTID0gMTQ0Ci1FVElNRURPVVQgPSAxNDUKLUVDT05OUkVGVVNFRCA9IDE0NgotRUhPU1RET1dOID0gMTQ3Ci1FSE9TVFVOUkVBQ0ggPSAxNDgKLUVXT1VMREJMT0NLID0gRUFHQUlOCi1FQUxSRUFEWSA9IDE0OQotRUlOUFJPR1JFU1MgPSAxNTAKLUVTVEFMRSA9IDE1MQotUFNBUkdTWiA9IDgwCi1QU0NPTVNJWiA9IDE0Ci1NQVhDT01MRU4gPSAxNgotX19LRVJOX05BVVhWX0lNUEwgPSAxOQotX19LRVJOX05BVVhWX0lNUEwgPSAyMQotX19LRVJOX05BVVhWX0lNUEwgPSAyMQotUFNBUkdTWiA9IDgwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvd2F0Y2hwb2ludC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9zZWdfZW51bS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29weW9wcy5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnVmLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3RhdC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1LU1RBVF9TVFJMRU4gPSAzMQotZGVmIEtTVEFUX0VOVEVSKGspOiByZXR1cm4gXAotCi1kZWYgS1NUQVRfRVhJVChrKTogcmV0dXJuIFwKLQotS1NUQVRfVFlQRV9SQVcgPSAwCi1LU1RBVF9UWVBFX05BTUVEID0gMQotS1NUQVRfVFlQRV9JTlRSID0gMgotS1NUQVRfVFlQRV9JTyA9IDMKLUtTVEFUX1RZUEVfVElNRVIgPSA0Ci1LU1RBVF9OVU1fVFlQRVMgPSA1Ci1LU1RBVF9GTEFHX1ZJUlRVQUwgPSAweDAxCi1LU1RBVF9GTEFHX1ZBUl9TSVpFID0gMHgwMgotS1NUQVRfRkxBR19XUklUQUJMRSA9IDB4MDQKLUtTVEFUX0ZMQUdfUEVSU0lTVEVOVCA9IDB4MDgKLUtTVEFUX0ZMQUdfRE9STUFOVCA9IDB4MTAKLUtTVEFUX0ZMQUdfSU5WQUxJRCA9IDB4MjAKLUtTVEFUX1JFQUQgPSAwCi1LU1RBVF9XUklURSA9IDEKLUtTVEFUX0RBVEFfQ0hBUiA9IDAKLUtTVEFUX0RBVEFfSU5UMzIgPSAxCi1LU1RBVF9EQVRBX1VJTlQzMiA9IDIKLUtTVEFUX0RBVEFfSU5UNjQgPSAzCi1LU1RBVF9EQVRBX1VJTlQ2NCA9IDQKLUtTVEFUX0RBVEFfTE9ORyA9IEtTVEFUX0RBVEFfSU5UMzIKLUtTVEFUX0RBVEFfVUxPTkcgPSBLU1RBVF9EQVRBX1VJTlQzMgotS1NUQVRfREFUQV9MT05HID0gS1NUQVRfREFUQV9JTlQ2NAotS1NUQVRfREFUQV9VTE9ORyA9IEtTVEFUX0RBVEFfVUlOVDY0Ci1LU1RBVF9EQVRBX0xPTkcgPSA3Ci1LU1RBVF9EQVRBX1VMT05HID0gOAotS1NUQVRfREFUQV9MT05HTE9ORyA9IEtTVEFUX0RBVEFfSU5UNjQKLUtTVEFUX0RBVEFfVUxPTkdMT05HID0gS1NUQVRfREFUQV9VSU5UNjQKLUtTVEFUX0RBVEFfRkxPQVQgPSA1Ci1LU1RBVF9EQVRBX0RPVUJMRSA9IDYKLUtTVEFUX0lOVFJfSEFSRCA9IDAKLUtTVEFUX0lOVFJfU09GVCA9IDEKLUtTVEFUX0lOVFJfV0FUQ0hET0cgPSAyCi1LU1RBVF9JTlRSX1NQVVJJT1VTID0gMwotS1NUQVRfSU5UUl9NVUxUU1ZDID0gNAotS1NUQVRfTlVNX0lOVFJTID0gNQotQl9CVVNZID0gMHgwMDAxCi1CX0RPTkUgPSAweDAwMDIKLUJfRVJST1IgPSAweDAwMDQKLUJfUEFHRUlPID0gMHgwMDEwCi1CX1BIWVMgPSAweDAwMjAKLUJfUkVBRCA9IDB4MDA0MAotQl9XUklURSA9IDB4MDEwMAotQl9LRVJOQlVGID0gMHgwMDA4Ci1CX1dBTlRFRCA9IDB4MDA4MAotQl9BR0UgPSAweDAwMDIwMAotQl9BU1lOQyA9IDB4MDAwNDAwCi1CX0RFTFdSSSA9IDB4MDAwODAwCi1CX1NUQUxFID0gMHgwMDEwMDAKLUJfRE9OVE5FRUQgPSAweDAwMjAwMAotQl9SRU1BUFBFRCA9IDB4MDA0MDAwCi1CX0ZSRUUgPSAweDAwODAwMAotQl9JTlZBTCA9IDB4MDEwMDAwCi1CX0ZPUkNFID0gMHgwMjAwMDAKLUJfSEVBRCA9IDB4MDQwMDAwCi1CX05PQ0FDSEUgPSAweDA4MDAwMAotQl9UUlVOQyA9IDB4MTAwMDAwCi1CX1NIQURPVyA9IDB4MjAwMDAwCi1CX1JFVFJZV1JJID0gMHg0MDAwMDAKLWRlZiBub3RhdmFpbChicCk6IHJldHVybiBcCi0KLWRlZiBCV1JJVEUoYnApOiByZXR1cm4gXAotCi1kZWYgQldSSVRFMihicCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9haW9fcmVxLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotV1BfTk9XQVRDSCA9IDB4MDEKLVdQX1NFVFBST1QgPSAweDAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZXIuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotX1RJTUVSX01BWCA9IDMyCi1JVExLX0xPQ0tFRCA9IDB4MDEKLUlUTEtfV0FOVEVEID0gMHgwMgotSVRMS19SRU1PVkUgPSAweDA0Ci1JVF9QRVJMV1AgPSAweDAxCi1JVF9TSUdOQUwgPSAweDAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdXRyYXAuaAotVVRfSU5TVFJVQ1RJT05fRElTQUJMRUQgPSAxCi1VVF9JTlNUUlVDVElPTl9FUlJPUiA9IDIKLVVUX0lOU1RSVUNUSU9OX1BST1RFQ1RJT04gPSAzCi1VVF9JTExUUkFQX0lOU1RSVUNUSU9OID0gNAotVVRfSUxMRUdBTF9JTlNUUlVDVElPTiA9IDUKLVVUX1BSSVZJTEVHRURfT1BDT0RFID0gNgotVVRfRlBfRElTQUJMRUQgPSA3Ci1VVF9GUF9FWENFUFRJT05fSUVFRV83NTQgPSA4Ci1VVF9GUF9FWENFUFRJT05fT1RIRVIgPSA5Ci1VVF9UQUdfT1ZFUkZMT1cgPSAxMAotVVRfRElWSVNJT05fQllfWkVSTyA9IDExCi1VVF9EQVRBX0VYQ0VQVElPTiA9IDEyCi1VVF9EQVRBX0VSUk9SID0gMTMKLVVUX0RBVEFfUFJPVEVDVElPTiA9IDE0Ci1VVF9NRU1fQUREUkVTU19OT1RfQUxJR05FRCA9IDE1Ci1VVF9QUklWSUxFR0VEX0FDVElPTiA9IDE2Ci1VVF9BU1lOQ19EQVRBX0VSUk9SID0gMTcKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTYgPSAxOAotVVRfVFJBUF9JTlNUUlVDVElPTl8xNyA9IDE5Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzE4ID0gMjAKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMTkgPSAyMQotVVRfVFJBUF9JTlNUUlVDVElPTl8yMCA9IDIyCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzIxID0gMjMKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjIgPSAyNAotVVRfVFJBUF9JTlNUUlVDVElPTl8yMyA9IDI1Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI0ID0gMjYKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjUgPSAyNwotVVRfVFJBUF9JTlNUUlVDVElPTl8yNiA9IDI4Ci1VVF9UUkFQX0lOU1RSVUNUSU9OXzI3ID0gMjkKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMjggPSAzMAotVVRfVFJBUF9JTlNUUlVDVElPTl8yOSA9IDMxCi1VVF9UUkFQX0lOU1RSVUNUSU9OXzMwID0gMzIKLVVUX1RSQVBfSU5TVFJVQ1RJT05fMzEgPSAzMwotVVRSQVBfVjhQX0ZQX0RJU0FCTEVEID0gVVRfRlBfRElTQUJMRUQKLVVUUkFQX1Y4UF9NRU1fQUREUkVTU19OT1RfQUxJR05FRCA9IFVUX01FTV9BRERSRVNTX05PVF9BTElHTkVECi1VVF9QUkVDSVNFX01BWFRSQVBTID0gMzMKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9yZWZzdHIuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3Rhc2suaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVEFTS19OT1JNQUwgPSAweDAKLVRBU0tfRklOQUwgPSAweDEKLVRBU0tfRklOQUxJVFkgPSAweDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pZF9zcGFjZS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdm1lbS5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1WTV9TTEVFUCA9IDB4MDAwMDAwMDAKLVZNX05PU0xFRVAgPSAweDAwMDAwMDAxCi1WTV9QQU5JQyA9IDB4MDAwMDAwMDIKLVZNX0tNRkxBR1MgPSAweDAwMDAwMGZmCi1WTV9CRVNURklUID0gMHgwMDAwMDEwMAotVk1FTV9BTExPQyA9IDB4MDEKLVZNRU1fRlJFRSA9IDB4MDIKLVZNRU1fU1BBTiA9IDB4MTAKLUlTUF9OT1JNQUwgPSAweDAKLUlTUF9SRVNFUlZFID0gMHgxCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZXhhY2N0X2ltcGwuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ttZW0uaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotS01fU0xFRVAgPSAweDAwMDAKLUtNX05PU0xFRVAgPSAweDAwMDEKLUtNX1BBTklDID0gMHgwMDAyCi1LTV9WTUZMQUdTID0gMHgwMGZmCi1LTV9GTEFHUyA9IDB4ZmZmZgotS01DX05PVE9VQ0ggPSAweDAwMDEwMDAwCi1LTUNfTk9ERUJVRyA9IDB4MDAwMjAwMDAKLUtNQ19OT01BR0FaSU5FID0gMHgwMDA0MDAwMAotS01DX05PSEFTSCA9IDB4MDAwODAwMDAKLUtNQ19RQ0FDSEUgPSAweDAwMTAwMDAwCi1fSVNBX0lBMzIgPSAwCi1fSVNBX0lBNjQgPSAxCi1TU0xFRVAgPSAxCi1TUlVOID0gMgotU1pPTUIgPSAzCi1TU1RPUCA9IDQKLVNJREwgPSA1Ci1TT05QUk9DID0gNgotQ0xEUEVORCA9IDB4MDAwMQotQ0xEQ09OVCA9IDB4MDAwMgotU1NZUyA9IDB4MDAwMDAwMDEKLVNUUkMgPSAweDAwMDAwMDAyCi1TTE9BRCA9IDB4MDAwMDAwMDgKLVNMT0NLID0gMHgwMDAwMDAxMAotU1BSRVhFQyA9IDB4MDAwMDAwMjAKLVNQUk9DVFIgPSAweDAwMDAwMDQwCi1TUFJGT1JLID0gMHgwMDAwMDA4MAotU0tJTExFRCA9IDB4MDAwMDAxMDAKLVNVTE9BRCA9IDB4MDAwMDAyMDAKLVNSVU5MQ0wgPSAweDAwMDAwNDAwCi1TQlBUQURKID0gMHgwMDAwMDgwMAotU0tJTExDTCA9IDB4MDAwMDEwMDAKLVNPV0VVUEMgPSAweDAwMDAyMDAwCi1TRVhFQ0VEID0gMHgwMDAwNDAwMAotU1BBU1lOQyA9IDB4MDAwMDgwMDAKLVNKQ1RMID0gMHgwMDAxMDAwMAotU05PV0FJVCA9IDB4MDAwMjAwMDAKLVNWRk9SSyA9IDB4MDAwNDAwMDAKLVNWRldBSVQgPSAweDAwMDgwMDAwCi1FWElUTFdQUyA9IDB4MDAxMDAwMDAKLUhPTERGT1JLID0gMHgwMDIwMDAwMAotU1dBSVRTSUcgPSAweDAwNDAwMDAwCi1IT0xERk9SSzEgPSAweDAwODAwMDAwCi1DT1JFRFVNUCA9IDB4MDEwMDAwMDAKLVNNU0FDQ1QgPSAweDAyMDAwMDAwCi1BU0xXUCA9IDB4MDQwMDAwMDAKLVNQUkxPQ0sgPSAweDA4MDAwMDAwCi1OT0NEID0gMHgxMDAwMDAwMAotSE9MRFdBVENIID0gMHgyMDAwMDAwMAotU01TRk9SSyA9IDB4NDAwMDAwMDAKLVNET0NPUkUgPSAweDgwMDAwMDAwCi1GT1JSRUFMID0gMAotSlVTVExPT0tJTkcgPSAxCi1TVVNQRU5EX05PUk1BTCA9IDAKLVNVU1BFTkRfUEFVU0UgPSAxCi1OT0NMQVNTID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaXR5cGVzLmgKLURESV9ERVZJQ0VfQVRUUl9WMCA9IDB4MDAwMQotRERJX05FVkVSU1dBUF9BQ0MgPSAweDAwCi1ERElfU1RSVUNUVVJFX0xFX0FDQyA9IDB4MDEKLURESV9TVFJVQ1RVUkVfQkVfQUNDID0gMHgwMgotRERJX1NUUklDVE9SREVSX0FDQyA9IDB4MDAKLURESV9VTk9SREVSRURfT0tfQUNDID0gMHgwMQotRERJX01FUkdJTkdfT0tfQUNDID0gMHgwMgotRERJX0xPQURDQUNISU5HX09LX0FDQyA9IDB4MDMKLURESV9TVE9SRUNBQ0hJTkdfT0tfQUNDID0gMHgwNAotRERJX0RBVEFfU1owMV9BQ0MgPSAxCi1ERElfREFUQV9TWjAyX0FDQyA9IDIKLURESV9EQVRBX1NaMDRfQUNDID0gNAotRERJX0RBVEFfU1owOF9BQ0MgPSA4Ci1WRVJTX0FDQ0hETCA9IDB4MDAwMQotREVWSURfTk9ORSA9IDAKLURFVklEX1NDU0kzX1dXTiA9IDEKLURFVklEX1NDU0lfU0VSSUFMID0gMgotREVWSURfRkFCID0gMwotREVWSURfRU5DQVAgPSA0Ci1ERVZJRF9NQVhUWVBFID0gNAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZhcmFyZ3MuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3ZhX2xpc3QuaAotVkFfQUxJR04gPSA4Ci1kZWYgX0FSR1NJWkVPRih0KTogcmV0dXJuICgoc2l6ZW9mICh0KSArIFZBX0FMSUdOIC0gMSkgJiB+KFZBX0FMSUdOIC0gMSkpCi0KLVZBX0FMSUdOID0gOAotZGVmIF9BUkdTSVpFT0YodCk6IHJldHVybiAoKHNpemVvZiAodCkgKyBWQV9BTElHTiAtIDEpICYgfihWQV9BTElHTiAtIDEpKQotCi1OU1lTQ0FMTCA9IDI1NgotU0VfMzJSVkFMMSA9IDB4MAotU0VfMzJSVkFMMiA9IDB4MQotU0VfNjRSVkFMID0gMHgyCi1TRV9SVkFMX01BU0sgPSAweDMKLVNFX0xPQURBQkxFID0gMHgwOAotU0VfTE9BREVEID0gMHgxMAotU0VfTk9VTkxPQUQgPSAweDIwCi1TRV9BUkdDID0gMHg0MAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Rldm9wcy5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvcG9sbC5oCi1QT0xMSU4gPSAweDAwMDEKLVBPTExQUkkgPSAweDAwMDIKLVBPTExPVVQgPSAweDAwMDQKLVBPTExSRE5PUk0gPSAweDAwNDAKLVBPTExXUk5PUk0gPSBQT0xMT1VUCi1QT0xMUkRCQU5EID0gMHgwMDgwCi1QT0xMV1JCQU5EID0gMHgwMTAwCi1QT0xMTk9STSA9IFBPTExSRE5PUk0KLVBPTExFUlIgPSAweDAwMDgKLVBPTExIVVAgPSAweDAwMTAKLVBPTExOVkFMID0gMHgwMDIwCi1QT0xMUkVNT1ZFID0gMHgwODAwCi1QT0xMUkREQVRBID0gMHgwMjAwCi1QT0xMTk9FUlIgPSAweDA0MDAKLVBPTExDTE9TRUQgPSAweDgwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHZtL2FzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHZtL3NlZy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdm5vZGUuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotVlJPT1QgPSAweDAxCi1WTk9DQUNIRSA9IDB4MDIKLVZOT01BUCA9IDB4MDQKLVZEVVAgPSAweDA4Ci1WTk9TV0FQID0gMHgxMAotVk5PTU9VTlQgPSAweDIwCi1WSVNTV0FQID0gMHg0MAotVlNXQVBMSUtFID0gMHg4MAotVlZGU0xPQ0sgPSAweDEwMAotVlZGU1dBSVQgPSAweDIwMAotVlZNTE9DSyA9IDB4NDAwCi1WRElST1BFTiA9IDB4ODAwCi1WVk1FWEVDID0gMHgxMDAwCi1WUFhGUyA9IDB4MjAwMAotQVRfVFlQRSA9IDB4MDAwMQotQVRfTU9ERSA9IDB4MDAwMgotQVRfVUlEID0gMHgwMDA0Ci1BVF9HSUQgPSAweDAwMDgKLUFUX0ZTSUQgPSAweDAwMTAKLUFUX05PREVJRCA9IDB4MDAyMAotQVRfTkxJTksgPSAweDAwNDAKLUFUX1NJWkUgPSAweDAwODAKLUFUX0FUSU1FID0gMHgwMTAwCi1BVF9NVElNRSA9IDB4MDIwMAotQVRfQ1RJTUUgPSAweDA0MDAKLUFUX1JERVYgPSAweDA4MDAKLUFUX0JMS1NJWkUgPSAweDEwMDAKLUFUX05CTE9DS1MgPSAweDIwMDAKLUFUX1ZDT0RFID0gMHg0MDAwCi1BVF9BTEwgPSAoQVRfVFlQRXxBVF9NT0RFfEFUX1VJRHxBVF9HSUR8QVRfRlNJRHxBVF9OT0RFSUR8XAotICAgICAgICAgICAgICAgICAgICAgICAgQVRfTkxJTkt8QVRfU0laRXxBVF9BVElNRXxBVF9NVElNRXxBVF9DVElNRXxcCi0gICAgICAgICAgICAgICAgICAgICAgICBBVF9SREVWfEFUX0JMS1NJWkV8QVRfTkJMT0NLU3xBVF9WQ09ERSkKLUFUX1NUQVQgPSAoQVRfTU9ERXxBVF9VSUR8QVRfR0lEfEFUX0ZTSUR8QVRfTk9ERUlEfEFUX05MSU5LfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX1NJWkV8QVRfQVRJTUV8QVRfTVRJTUV8QVRfQ1RJTUV8QVRfUkRFVikKLUFUX1RJTUVTID0gKEFUX0FUSU1FfEFUX01USU1FfEFUX0NUSU1FKQotQVRfTk9TRVQgPSAoQVRfTkxJTkt8QVRfUkRFVnxBVF9GU0lEfEFUX05PREVJRHxBVF9UWVBFfFwKLSAgICAgICAgICAgICAgICAgICAgICAgIEFUX0JMS1NJWkV8QVRfTkJMT0NLU3xBVF9WQ09ERSkKLVZTVUlEID0gMG80MDAwCi1WU0dJRCA9IDBvMjAwMAotVlNWVFggPSAwbzEwMDAKLVZSRUFEID0gMG8wNDAwCi1WV1JJVEUgPSAwbzAyMDAKLVZFWEVDID0gMG8wMTAwCi1NT0RFTUFTSyA9IDBvNzc3NwotUEVSTU1BU0sgPSAwbzA3NzcKLWRlZiBNQU5ETU9ERShtb2RlKTogcmV0dXJuICgoKG1vZGUpICYgKFZTR0lEfChWRVhFQz4+MykpKSA9PSBWU0dJRCkKLQotVlNBX0FDTCA9IDB4MDAwMQotVlNBX0FDTENOVCA9IDB4MDAwMgotVlNBX0RGQUNMID0gMHgwMDA0Ci1WU0FfREZBQ0xDTlQgPSAweDAwMDgKLUxPT0tVUF9ESVIgPSAweDAxCi1EVU1QX0FMTE9DID0gMAotRFVNUF9GUkVFID0gMQotRFVNUF9TQ0FOID0gMgotQVRUUl9VVElNRSA9IDB4MDEKLUFUVFJfRVhFQyA9IDB4MDIKLUFUVFJfQ09NTSA9IDB4MDQKLUFUVFJfSElOVCA9IDB4MDgKLUFUVFJfUkVBTCA9IDB4MTAKLQotIyBJbmNsdWRlZCBmcm9tIHZtL2ZhdWx0Y29kZS5oCi1GQ19IV0VSUiA9IDB4MQotRkNfQUxJR04gPSAweDIKLUZDX09CSkVSUiA9IDB4MwotRkNfUFJPVCA9IDB4NAotRkNfTk9NQVAgPSAweDUKLUZDX05PU1VQUE9SVCA9IDB4NgotZGVmIEZDX01BS0VfRVJSKGUpOiByZXR1cm4gKCgoZSkgPDwgOCkgfCBGQ19PQkpFUlIpCi0KLWRlZiBGQ19DT0RFKGZjKTogcmV0dXJuICgoZmMpICYgMHhmZikKLQotZGVmIEZDX0VSUk5PKGZjKTogcmV0dXJuICgodW5zaWduZWQpKGZjKSA+PiA4KQotCi0KLSMgSW5jbHVkZWQgZnJvbSB2bS9oYXQuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gdm0vcGFnZS5oCi1QQUdFX0hBU0hBVkVMRU4gPSA0Ci1QQUdFX0hBU0hWUFNISUZUID0gNgotUEdfRVhDTCA9IDB4MDAwMQotUEdfV0FJVCA9IDB4MDAwMgotUEdfUEhZU0NPTlRJRyA9IDB4MDAwNAotUEdfTUFUQ0hfQ09MT1IgPSAweDAwMDgKLVBHX05PUkVMT0MgPSAweDAwMTAKLVBHX0ZSRUVfTElTVCA9IDEKLVBHX0NBQ0hFX0xJU1QgPSAyCi1QR19MSVNUX1RBSUwgPSAwCi1QR19MSVNUX0hFQUQgPSAxCi1kZWYgcGFnZV9uZXh0X3JhdyhQUCk6IHJldHVybiBwYWdlX25leHRuX3JhdygoUFApLCAxKQotCi1QQUdFX0lPX0lOVVNFID0gMHgxCi1QQUdFX0lPX1dBTlRFRCA9IDB4MgotUEdSRUxfTk9UUkVMID0gMHgxCi1QR1JFTF9DTEVBTiA9IDB4MgotUEdSRUxfTU9EID0gMHgzCi1QX0ZSRUUgPSAweDgwCi1QX05PUkVMT0MgPSAweDQwCi1kZWYgUFBfU0VUQUdFRChwcCk6IHJldHVybiBBU1NFUlQoUFBfSVNBR0VEKHBwKSkKLQotSEFUX0ZMQUdTX1JFU1YgPSAweEZGMDAwMDAwCi1IQVRfTE9BRCA9IDB4MDAKLUhBVF9MT0FEX0xPQ0sgPSAweDAxCi1IQVRfTE9BRF9BRFYgPSAweDA0Ci1IQVRfTE9BRF9DT05USUcgPSAweDEwCi1IQVRfTE9BRF9OT0NPTlNJU1QgPSAweDIwCi1IQVRfTE9BRF9TSEFSRSA9IDB4NDAKLUhBVF9MT0FEX1JFTUFQID0gMHg4MAotSEFUX1JFTE9BRF9TSEFSRSA9IDB4MTAwCi1IQVRfUExBVF9BVFRSX01BU0sgPSAweEYwMDAwMAotSEFUX1BST1RfTUFTSyA9IDB4MEYKLUhBVF9OT0ZBVUxUID0gMHgxMAotSEFUX05PU1lOQyA9IDB4MjAKLUhBVF9TVFJJQ1RPUkRFUiA9IDB4MDAwMAotSEFUX1VOT1JERVJFRF9PSyA9IDB4MDEwMAotSEFUX01FUkdJTkdfT0sgPSAweDAyMDAKLUhBVF9MT0FEQ0FDSElOR19PSyA9IDB4MDMwMAotSEFUX1NUT1JFQ0FDSElOR19PSyA9IDB4MDQwMAotSEFUX09SREVSX01BU0sgPSAweDA3MDAKLUhBVF9ORVZFUlNXQVAgPSAweDAwMDAKLUhBVF9TVFJVQ1RVUkVfQkUgPSAweDEwMDAKLUhBVF9TVFJVQ1RVUkVfTEUgPSAweDIwMDAKLUhBVF9FTkRJQU5fTUFTSyA9IDB4MzAwMAotSEFUX0NPVyA9IDB4MDAwMQotSEFUX1VOTE9BRCA9IDB4MDAKLUhBVF9VTkxPQURfTk9TWU5DID0gMHgwMgotSEFUX1VOTE9BRF9VTkxPQ0sgPSAweDA0Ci1IQVRfVU5MT0FEX09USEVSID0gMHgwOAotSEFUX1VOTE9BRF9VTk1BUCA9IDB4MTAKLUhBVF9TWU5DX0RPTlRaRVJPID0gMHgwMAotSEFUX1NZTkNfWkVST1JNID0gMHgwMQotSEFUX1NZTkNfU1RPUE9OX1JFRiA9IDB4MDIKLUhBVF9TWU5DX1NUT1BPTl9NT0QgPSAweDA0Ci1IQVRfU1lOQ19TVE9QT05fUk0gPSAoSEFUX1NZTkNfU1RPUE9OX1JFRiB8IEhBVF9TWU5DX1NUT1BPTl9NT0QpCi1IQVRfRFVQX0FMTCA9IDEKLUhBVF9EVVBfQ09XID0gMgotSEFUX01BUCA9IDB4MDAKLUhBVF9BRFZfUEdVTkxPQUQgPSAweDAwCi1IQVRfRk9SQ0VfUEdVTkxPQUQgPSAweDAxCi1QX01PRCA9IDB4MQotUF9SRUYgPSAweDIKLVBfUk8gPSAweDQKLWRlZiBoYXRfaXNtb2QocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfTU9EKSkKLQotZGVmIGhhdF9pc3JlZihwcCk6IHJldHVybiAoaGF0X3BhZ2VfZ2V0YXR0cihwcCwgUF9SRUYpKQotCi1kZWYgaGF0X2lzcm8ocHApOiByZXR1cm4gKGhhdF9wYWdlX2dldGF0dHIocHAsIFBfUk8pKQotCi1kZWYgaGF0X3NldG1vZChwcCk6IHJldHVybiAoaGF0X3BhZ2Vfc2V0YXR0cihwcCwgUF9NT0QpKQotCi1kZWYgaGF0X3NldHJlZihwcCk6IHJldHVybiAoaGF0X3BhZ2Vfc2V0YXR0cihwcCwgUF9SRUYpKQotCi1kZWYgaGF0X3NldHJlZm1vZChwcCk6IHJldHVybiAoaGF0X3BhZ2Vfc2V0YXR0cihwcCwgUF9SRUZ8UF9NT0QpKQotCi1kZWYgaGF0X2Nscm1vZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfY2xyYXR0cihwcCwgUF9NT0QpKQotCi1kZWYgaGF0X2NscnJlZihwcCk6IHJldHVybiAoaGF0X3BhZ2VfY2xyYXR0cihwcCwgUF9SRUYpKQotCi1kZWYgaGF0X2NscnJlZm1vZChwcCk6IHJldHVybiAoaGF0X3BhZ2VfY2xyYXR0cihwcCwgUF9SRUZ8UF9NT0QpKQotCi1kZWYgaGF0X3BhZ2VfaXNfbWFwcGVkKHBwKTogcmV0dXJuIChoYXRfcGFnZV9nZXRzaGFyZShwcCkpCi0KLUhBVF9ET05UQUxMT0MgPSAwCi1IQVRfQUxMT0MgPSAxCi1IUk1fU0hJRlQgPSA0Ci1IUk1fQllURVMgPSAoMSA8PCBIUk1fU0hJRlQpCi1IUk1fUEFHRVMgPSAoKEhSTV9CWVRFUyAqIE5CQlkpIC8gMikKLUhSTV9QR1BFUkJZVEUgPSAoTkJCWS8yKQotSFJNX1BHQllURU1BU0sgPSAoSFJNX1BHUEVSQllURS0xKQotSFJNX0hBU0hTSVpFID0gMHgyMDAKLUhSTV9IQVNITUFTSyA9IChIUk1fSEFTSFNJWkUgLSAxKQotSFJNX0JMSVNUX0lOQ1IgPSAweDIwMAotSFJNX1NXU01PTklEID0gMQotU1NMX05MRVZFTFMgPSA0Ci1TU0xfQkZBQ1RPUiA9IDQKLVNTTF9MT0cyQkYgPSAyCi1TRUdQX0FTWU5DX0ZMVVNIID0gMHgxCi1TRUdQX0ZPUkNFX1dJUkVEID0gMHgyCi1TRUdQX1NVQ0NFU1MgPSAwCi1TRUdQX0ZBSUwgPSAxCi1kZWYgc2VnX3BhZ2VzKHNlZyk6IHJldHVybiBcCi0KLUlFX05PTUVNID0gLTEKLUFTX1BBR0xDSyA9IDB4ODAKLUFTX0NMQUlNR0FQID0gMHg0MAotQVNfVU5NQVBXQUlUID0gMHgyMAotZGVmIEFTX1RZUEVfNjRCSVQoYXNfKTogcmV0dXJuIFwKLQotQVNfTFJFUF9MSU5LRURMSVNUID0gMAotQVNfTFJFUF9TS0lQTElTVCA9IDEKLUFTX01VVEFUSU9OX1RIUkVTSCA9IDIyNQotQUhfRElSID0gMHgxCi1BSF9MTyA9IDB4MAotQUhfSEkgPSAweDEKLUFIX0NPTlRBSU4gPSAweDIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kZGlkbWFyZXEuaAotRE1BX1VOSVRfOCA9IDEKLURNQV9VTklUXzE2ID0gMgotRE1BX1VOSVRfMzIgPSA0Ci1ETUFMSU1fVkVSMCA9ICgoMHg4NjAwMDAwMCkgKyAwKQotRERJX0RNQV9GT1JDRV9QSFlTSUNBTCA9IDB4MDEwMAotRE1BX0FUVFJfVjAgPSAwCi1ETUFfQVRUUl9WRVJTSU9OID0gRE1BX0FUVFJfVjAKLURESV9ETUFfQ0FMTEJBQ0tfUlVOT1VUID0gMAotRERJX0RNQV9DQUxMQkFDS19ET05FID0gMQotRERJX0RNQV9XUklURSA9IDB4MDAwMQotRERJX0RNQV9SRUFEID0gMHgwMDAyCi1ERElfRE1BX1JEV1IgPSAoRERJX0RNQV9SRUFEIHwgRERJX0RNQV9XUklURSkKLURESV9ETUFfUkVEWk9ORSA9IDB4MDAwNAotRERJX0RNQV9QQVJUSUFMID0gMHgwMDA4Ci1ERElfRE1BX0NPTlNJU1RFTlQgPSAweDAwMTAKLURESV9ETUFfRVhDTFVTSVZFID0gMHgwMDIwCi1ERElfRE1BX1NUUkVBTUlORyA9IDB4MDA0MAotRERJX0RNQV9TQlVTXzY0QklUID0gMHgyMDAwCi1ERElfRE1BX01BUFBFRCA9IDAKLURESV9ETUFfTUFQT0sgPSAwCi1ERElfRE1BX1BBUlRJQUxfTUFQID0gMQotRERJX0RNQV9ET05FID0gMgotRERJX0RNQV9OT1JFU09VUkNFUyA9IC0xCi1ERElfRE1BX05PTUFQUElORyA9IC0yCi1ERElfRE1BX1RPT0JJRyA9IC0zCi1ERElfRE1BX1RPT1NNQUxMID0gLTQKLURESV9ETUFfTE9DS0VEID0gLTUKLURESV9ETUFfQkFETElNSVRTID0gLTYKLURESV9ETUFfU1RBTEUgPSAtNwotRERJX0RNQV9CQURBVFRSID0gLTgKLURESV9ETUFfSU5VU0UgPSAtOQotRERJX0RNQV9TWU5DX0ZPUkRFViA9IDB4MAotRERJX0RNQV9TWU5DX0ZPUkNQVSA9IDB4MQotRERJX0RNQV9TWU5DX0ZPUktFUk5FTCA9IDB4MgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RkaW1hcHJlcS5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbW1hbi5oCi1QUk9UX1JFQUQgPSAweDEKLVBST1RfV1JJVEUgPSAweDIKLVBST1RfRVhFQyA9IDB4NAotUFJPVF9VU0VSID0gMHg4Ci1QUk9UX1pGT0QgPSAoUFJPVF9SRUFEIHwgUFJPVF9XUklURSB8IFBST1RfRVhFQyB8IFBST1RfVVNFUikKLVBST1RfQUxMID0gKFBST1RfUkVBRCB8IFBST1RfV1JJVEUgfCBQUk9UX0VYRUMgfCBQUk9UX1VTRVIpCi1QUk9UX05PTkUgPSAweDAKLU1BUF9TSEFSRUQgPSAxCi1NQVBfUFJJVkFURSA9IDIKLU1BUF9UWVBFID0gMHhmCi1NQVBfRklYRUQgPSAweDEwCi1NQVBfTk9SRVNFUlZFID0gMHg0MAotTUFQX0FOT04gPSAweDEwMAotTUFQX0FOT05ZTU9VUyA9IE1BUF9BTk9OCi1NQVBfUkVOQU1FID0gMHgyMAotUFJPQ19URVhUID0gKFBST1RfRVhFQyB8IFBST1RfUkVBRCkKLVBST0NfREFUQSA9IChQUk9UX1JFQUQgfCBQUk9UX1dSSVRFIHwgUFJPVF9FWEVDKQotU0hBUkVEID0gMHgxMAotUFJJVkFURSA9IDB4MjAKLVZBTElEX0FUVFIgPSAoUFJPVF9SRUFEfFBST1RfV1JJVEV8UFJPVF9FWEVDfFNIQVJFRHxQUklWQVRFKQotUFJPVF9FWENMID0gMHgyMAotX01BUF9MT1czMiA9IDB4ODAKLV9NQVBfTkVXID0gMHg4MDAwMDAwMAotZnJvbSBUWVBFUyBpbXBvcnQgKgotTUFEVl9OT1JNQUwgPSAwCi1NQURWX1JBTkRPTSA9IDEKLU1BRFZfU0VRVUVOVElBTCA9IDIKLU1BRFZfV0lMTE5FRUQgPSAzCi1NQURWX0RPTlRORUVEID0gNAotTUFEVl9GUkVFID0gNQotTVNfT0xEU1lOQyA9IDB4MAotTVNfU1lOQyA9IDB4NAotTVNfQVNZTkMgPSAweDEKLU1TX0lOVkFMSURBVEUgPSAweDIKLU1DX1NZTkMgPSAxCi1NQ19MT0NLID0gMgotTUNfVU5MT0NLID0gMwotTUNfQURWSVNFID0gNAotTUNfTE9DS0FTID0gNQotTUNfVU5MT0NLQVMgPSA2Ci1NQ0xfQ1VSUkVOVCA9IDB4MQotTUNMX0ZVVFVSRSA9IDB4MgotRERJX01BUF9WRVJTSU9OID0gMHgwMDAxCi1ERElfTUZfVVNFUl9NQVBQSU5HID0gMHgxCi1ERElfTUZfS0VSTkVMX01BUFBJTkcgPSAweDIKLURESV9NRl9ERVZJQ0VfTUFQUElORyA9IDB4NAotRERJX01FX0dFTkVSSUMgPSAoLTEpCi1ERElfTUVfVU5JTVBMRU1FTlRFRCA9ICgtMikKLURESV9NRV9OT1JFU09VUkNFUyA9ICgtMykKLURESV9NRV9VTlNVUFBPUlRFRCA9ICgtNCkKLURESV9NRV9SRUdTUEVDX1JBTkdFID0gKC01KQotRERJX01FX1JOVU1CRVJfUkFOR0UgPSAoLTYpCi1ERElfTUVfSU5WQUwgPSAoLTcpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpcHJvcGRlZnMuaAotZGVmIENFTExTXzEyNzVfVE9fQllURVMobik6IHJldHVybiAoKG4pICogUFJPUF8xMjc1X0NFTExfU0laRSkKLQotZGVmIEJZVEVTX1RPXzEyNzVfQ0VMTFMobik6IHJldHVybiAoKG4pIC8gUFJPUF8xMjc1X0NFTExfU0laRSkKLQotUEhfRlJPTV9QUk9NID0gMHgwMQotRERJX1BST1BfU1VDQ0VTUyA9IDAKLURESV9QUk9QX05PVF9GT1VORCA9IDEKLURESV9QUk9QX1VOREVGSU5FRCA9IDIKLURESV9QUk9QX05PX01FTU9SWSA9IDMKLURESV9QUk9QX0lOVkFMX0FSRyA9IDQKLURESV9QUk9QX0JVRl9UT09fU01BTEwgPSA1Ci1ERElfUFJPUF9DQU5OT1RfREVDT0RFID0gNgotRERJX1BST1BfQ0FOTk9UX0VOQ09ERSA9IDcKLURESV9QUk9QX0VORF9PRl9EQVRBID0gOAotRERJX1BST1BfRk9VTkRfMTI3NSA9IDI1NQotUFJPUF8xMjc1X0lOVF9TSVpFID0gNAotRERJX1BST1BfRE9OVFBBU1MgPSAweDAwMDEKLURESV9QUk9QX0NBTlNMRUVQID0gMHgwMDAyCi1ERElfUFJPUF9TWVNURU1fREVGID0gMHgwMDA0Ci1ERElfUFJPUF9OT1RQUk9NID0gMHgwMDA4Ci1ERElfUFJPUF9ET05UU0xFRVAgPSAweDAwMTAKLURESV9QUk9QX1NUQUNLX0NSRUFURSA9IDB4MDAyMAotRERJX1BST1BfVU5ERUZfSVQgPSAweDAwNDAKLURESV9QUk9QX0hXX0RFRiA9IDB4MDA4MAotRERJX1BST1BfVFlQRV9JTlQgPSAweDAxMDAKLURESV9QUk9QX1RZUEVfU1RSSU5HID0gMHgwMjAwCi1ERElfUFJPUF9UWVBFX0JZVEUgPSAweDA0MDAKLURESV9QUk9QX1RZUEVfQ09NUE9TSVRFID0gMHgwODAwCi1ERElfUFJPUF9UWVBFX0FOWSA9IChERElfUFJPUF9UWVBFX0lOVCAgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9TVFJJTkcgICAgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9CWVRFICAgICAgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9DT01QT1NJVEUpCi1ERElfUFJPUF9UWVBFX01BU0sgPSAoRERJX1BST1BfVFlQRV9JTlQgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9TVFJJTkcgICAgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9CWVRFICAgICAgfCAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRERJX1BST1BfVFlQRV9DT01QT1NJVEUpCi1ERElfUkVMQVRJVkVfQUREUkVTU0lORyA9ICJyZWxhdGl2ZS1hZGRyZXNzaW5nIgotRERJX0dFTkVSSUNfQUREUkVTU0lORyA9ICJnZW5lcmljLWFkZHJlc3NpbmciCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvZGRpZGV2bWFwLmgKLUtNRU1fUEFHRUFCTEUgPSAweDEwMAotS01FTV9OT05fUEFHRUFCTEUgPSAweDIwMAotVU1FTV9MT0NLRUQgPSAweDQwMAotVU1FTV9UUkFTSCA9IDB4ODAwCi1ERVZNQVBfT1BTX1JFViA9IDEKLURFVk1BUF9ERUZBVUxUUyA9IDB4MDAKLURFVk1BUF9NQVBQSU5HX0lOVkFMSUQgPSAweDAxCi1ERVZNQVBfQUxMT1dfUkVNQVAgPSAweDAyCi1ERVZNQVBfVVNFX1BBR0VTSVpFID0gMHgwNAotREVWTUFQX1NFVFVQX0ZMQUdTID0gXAotICAgICAgICAoREVWTUFQX01BUFBJTkdfSU5WQUxJRCB8IERFVk1BUF9BTExPV19SRU1BUCB8IERFVk1BUF9VU0VfUEFHRVNJWkUpCi1ERVZNQVBfU0VUVVBfRE9ORSA9IDB4MTAwCi1ERVZNQVBfTE9DS19JTklURUQgPSAweDIwMAotREVWTUFQX0ZBVUxUSU5HID0gMHg0MDAKLURFVk1BUF9MT0NLRUQgPSAweDgwMAotREVWTUFQX0ZMQUdfTEFSR0UgPSAweDEwMDAKLURESV9VTUVNX1NMRUVQID0gMHgwCi1ERElfVU1FTV9OT1NMRUVQID0gMHgwMQotRERJX1VNRU1fUEFHRUFCTEUgPSAweDAyCi1ERElfVU1FTV9UUkFTSCA9IDB4MDQKLURESV9VTUVNTE9DS19SRUFEID0gMHgwMQotRERJX1VNRU1MT0NLX1dSSVRFID0gMHgwMgotCi0jIEluY2x1ZGVkIGZyb20gc3lzL25leHVzZGVmcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbmV4dXNpbnRyLmgKLUJVU09fUkVWID0gNAotQlVTT19SRVZfMyA9IDMKLUJVU09fUkVWXzQgPSA0Ci1ERVZPX1JFViA9IDMKLUNCX1JFViA9IDEKLURESV9JREVOVElGSUVEID0gKDApCi1ERElfTk9UX0lERU5USUZJRUQgPSAoLTEpCi1ERElfUFJPQkVfRkFJTFVSRSA9IEVOWElPCi1ERElfUFJPQkVfRE9OVENBUkUgPSAwCi1ERElfUFJPQkVfUEFSVElBTCA9IDEKLURESV9QUk9CRV9TVUNDRVNTID0gMgotTUFQREVWX1JFViA9IDEKLWZyb20gVFlQRVMgaW1wb3J0ICoKLURfTkVXID0gMHgwMAotX0RfT0xEID0gMHgwMQotRF9UQVBFID0gMHgwOAotRF9NVFNBRkUgPSAweDAwMjAKLV9EX1FORVhUTEVTUyA9IDB4MDA0MAotX0RfTVRPQ1NIQVJFRCA9IDB4MDA4MAotRF9NVE9DRVhDTCA9IDB4MDgwMAotRF9NVFBVVFNIQVJFRCA9IDB4MTAwMAotRF9NVFBFUlEgPSAweDIwMDAKLURfTVRRUEFJUiA9IDB4NDAwMAotRF9NVFBFUk1PRCA9IDB4NjAwMAotRF9NVE9VVFBFUklNID0gMHg4MDAwCi1fRF9NVENCU0hBUkVEID0gMHgxMDAwMAotRF9NVElOTkVSX01PRCA9IChEX01UUFVUU0hBUkVEfF9EX01UT0NTSEFSRUR8X0RfTVRDQlNIQVJFRCkKLURfTVRPVVRFUl9NT0QgPSAoRF9NVE9DRVhDTCkKLURfTVAgPSBEX01UU0FGRQotRF82NEJJVCA9IDB4MjAwCi1EX1NZTkNTVFIgPSAweDQwMAotRF9ERVZNQVAgPSAweDEwMAotRF9IT1RQTFVHID0gMHg0Ci1TTkRaRVJPID0gMHgwMDEKLVNORFBJUEUgPSAweDAwMgotUk5PUk0gPSAweDAwMAotUk1TR0QgPSAweDAwMQotUk1TR04gPSAweDAwMgotUk1PREVNQVNLID0gMHgwMDMKLVJQUk9UREFUID0gMHgwMDQKLVJQUk9URElTID0gMHgwMDgKLVJQUk9UTk9STSA9IDB4MDEwCi1SUFJPVE1BU0sgPSAweDAxYwotUkZMVVNITUFTSyA9IDB4MDIwCi1SRkxVU0hQQ1BST1QgPSAweDAyMAotUkVSUk5PUk0gPSAweDAwMQotUkVSUk5PTlBFUlNJU1QgPSAweDAwMgotUkVSUk1BU0sgPSAoUkVSUk5PUk18UkVSUk5PTlBFUlNJU1QpCi1XRVJSTk9STSA9IDB4MDA0Ci1XRVJSTk9OUEVSU0lTVCA9IDB4MDA4Ci1XRVJSTUFTSyA9IChXRVJSTk9STXxXRVJSTk9OUEVSU0lTVCkKLUZMVVNIUiA9IDB4MDEKLUZMVVNIVyA9IDB4MDIKLUZMVVNIUlcgPSAweDAzCi1GTFVTSEJBTkQgPSAweDA0Ci1NQVBJTk9LID0gMHgwMQotTk9NQVBJTiA9IDB4MDIKLVJFTUFQT0sgPSAweDA0Ci1OT1JFTUFQID0gMHgwOAotU19JTlBVVCA9IDB4MDAwMQotU19ISVBSSSA9IDB4MDAwMgotU19PVVRQVVQgPSAweDAwMDQKLVNfTVNHID0gMHgwMDA4Ci1TX0VSUk9SID0gMHgwMDEwCi1TX0hBTkdVUCA9IDB4MDAyMAotU19SRE5PUk0gPSAweDAwNDAKLVNfV1JOT1JNID0gU19PVVRQVVQKLVNfUkRCQU5EID0gMHgwMDgwCi1TX1dSQkFORCA9IDB4MDEwMAotU19CQU5EVVJHID0gMHgwMjAwCi1SU19ISVBSSSA9IDB4MDEKLVNUUlVJT19QT1NUUE9ORSA9IDB4MDgKLVNUUlVJT19NQVBJTiA9IDB4MTAKLU1TR19ISVBSSSA9IDB4MDEKLU1TR19BTlkgPSAweDAyCi1NU0dfQkFORCA9IDB4MDQKLU1TR19YUEc0ID0gMHgwOAotTVNHX0lQRUVLID0gMHgxMAotTVNHX0RJU0NBUkRUQUlMID0gMHgyMAotTVNHX0hPTERTSUcgPSAweDQwCi1NU0dfSUdORVJST1IgPSAweDgwCi1NU0dfREVMQVlFUlJPUiA9IDB4MTAwCi1NU0dfSUdORkxPVyA9IDB4MjAwCi1NU0dfTk9NQVJLID0gMHg0MDAKLU1PUkVDVEwgPSAxCi1NT1JFREFUQSA9IDIKLU1VWElEX0FMTCA9ICgtMSkKLUFOWU1BUksgPSAweDAxCi1MQVNUTUFSSyA9IDB4MDIKLV9JTkZUSU0gPSAtMQotSU5GVElNID0gX0lORlRJTQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtc3Vub3M1L1RZUEVTLnB5IGIvTGliL3BsYXQtc3Vub3M1L1RZUEVTLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTRlNmIxLi4wMDAwMDAwCi0tLSBhL0xpYi9wbGF0LXN1bm9zNS9UWVBFUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMxMyArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy90eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXNhX2RlZnMuaAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfQUxJR05NRU5UID0gOAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9MT05HX0RPVUJMRV9BTElHTk1FTlQgPSAxNgotX1BPSU5URVJfQUxJR05NRU5UID0gOAotX01BWF9BTElHTk1FTlQgPSAxNgotX0FMSUdOTUVOVF9SRVFVSVJFRCA9IDEKLV9DSEFSX0FMSUdOTUVOVCA9IDEKLV9TSE9SVF9BTElHTk1FTlQgPSAyCi1fSU5UX0FMSUdOTUVOVCA9IDQKLV9MT05HX0FMSUdOTUVOVCA9IDQKLV9MT05HX0xPTkdfQUxJR05NRU5UID0gNAotX0RPVUJMRV9BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gNAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA0Ci1fQUxJR05NRU5UX1JFUVVJUkVEID0gMAotX0NIQVJfQUxJR05NRU5UID0gMQotX1NIT1JUX0FMSUdOTUVOVCA9IDIKLV9JTlRfQUxJR05NRU5UID0gNAotX0xPTkdfTE9OR19BTElHTk1FTlQgPSA4Ci1fRE9VQkxFX0FMSUdOTUVOVCA9IDgKLV9BTElHTk1FTlRfUkVRVUlSRUQgPSAxCi1fTE9OR19BTElHTk1FTlQgPSA0Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gOAotX1BPSU5URVJfQUxJR05NRU5UID0gNAotX01BWF9BTElHTk1FTlQgPSA4Ci1fTE9OR19BTElHTk1FTlQgPSA4Ci1fTE9OR19ET1VCTEVfQUxJR05NRU5UID0gMTYKLV9QT0lOVEVSX0FMSUdOTUVOVCA9IDgKLV9NQVhfQUxJR05NRU5UID0gMTYKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9mZWF0dXJlX3Rlc3RzLmgKLV9QT1NJWF9DX1NPVVJDRSA9IDEKLV9MQVJHRUZJTEU2NF9TT1VSQ0UgPSAxCi1fTEFSR0VGSUxFX1NPVVJDRSA9IDEKLV9GSUxFX09GRlNFVF9CSVRTID0gNjQKLV9GSUxFX09GRlNFVF9CSVRTID0gMzIKLV9QT1NJWF9DX1NPVVJDRSA9IDE5OTUwNgotX1BPU0lYX1BUSFJFQURfU0VNQU5USUNTID0gMQotX1hPUEVOX1ZFUlNJT04gPSA1MDAKLV9YT1BFTl9WRVJTSU9OID0gNAotX1hPUEVOX1ZFUlNJT04gPSAzCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbWFjaHR5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnR0eXBlcy5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X3R5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnRfbGltaXRzLmgKLUlOVDhfTUFYID0gKDEyNykKLUlOVDE2X01BWCA9ICgzMjc2NykKLUlOVDMyX01BWCA9ICgyMTQ3NDgzNjQ3KQotSU5UTUFYX01BWCA9IElOVDMyX01BWAotSU5UX0xFQVNUOF9NQVggPSBJTlQ4X01BWAotSU5UX0xFQVNUMTZfTUFYID0gSU5UMTZfTUFYCi1JTlRfTEVBU1QzMl9NQVggPSBJTlQzMl9NQVgKLUlOVDhfTUlOID0gKC0xMjgpCi1JTlQxNl9NSU4gPSAoLTMyNzY3LTEpCi1JTlQzMl9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVE1BWF9NSU4gPSBJTlQzMl9NSU4KLUlOVF9MRUFTVDhfTUlOID0gSU5UOF9NSU4KLUlOVF9MRUFTVDE2X01JTiA9IElOVDE2X01JTgotSU5UX0xFQVNUMzJfTUlOID0gSU5UMzJfTUlOCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaW50X2NvbnN0LmgKLWRlZiBJTlQ4X0MoYyk6IHJldHVybiAoYykKLQotZGVmIElOVDE2X0MoYyk6IHJldHVybiAoYykKLQotZGVmIElOVDMyX0MoYyk6IHJldHVybiAoYykKLQotZGVmIElOVDY0X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsbCkKLQotZGVmIElOVDY0X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsbGwpCi0KLWRlZiBVSU5UOF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHUpCi0KLWRlZiBVSU5UMTZfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1KQotCi1kZWYgVUlOVDMyX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdSkKLQotZGVmIFVJTlQ2NF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsKQotCi1kZWYgVUlOVDY0X0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsdWxsKQotCi1kZWYgSU5UTUFYX0MoYyk6IHJldHVybiBfX0NPTkNBVF9fKGMsbCkKLQotZGVmIFVJTlRNQVhfQyhjKTogcmV0dXJuIF9fQ09OQ0FUX18oYyx1bCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLGxsKQotCi1kZWYgVUlOVE1BWF9DKGMpOiByZXR1cm4gX19DT05DQVRfXyhjLHVsbCkKLQotZGVmIElOVE1BWF9DKGMpOiByZXR1cm4gKGMpCi0KLWRlZiBVSU5UTUFYX0MoYyk6IHJldHVybiAoYykKLQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2ludF9mbXRpby5oCi1QUklkOCA9ICJkIgotUFJJZDE2ID0gImQiCi1QUklkMzIgPSAiZCIKLVBSSWQ2NCA9ICJsZCIKLVBSSWQ2NCA9ICJsbGQiCi1QUklkTEVBU1Q4ID0gImQiCi1QUklkTEVBU1QxNiA9ICJkIgotUFJJZExFQVNUMzIgPSAiZCIKLVBSSWRMRUFTVDY0ID0gImxkIgotUFJJZExFQVNUNjQgPSAibGxkIgotUFJJaTggPSAiaSIKLVBSSWkxNiA9ICJpIgotUFJJaTMyID0gImkiCi1QUklpNjQgPSAibGkiCi1QUklpNjQgPSAibGxpIgotUFJJaUxFQVNUOCA9ICJpIgotUFJJaUxFQVNUMTYgPSAiaSIKLVBSSWlMRUFTVDMyID0gImkiCi1QUklpTEVBU1Q2NCA9ICJsaSIKLVBSSWlMRUFTVDY0ID0gImxsaSIKLVBSSW84ID0gIm8iCi1QUklvMTYgPSAibyIKLVBSSW8zMiA9ICJvIgotUFJJbzY0ID0gImxvIgotUFJJbzY0ID0gImxsbyIKLVBSSW9MRUFTVDggPSAibyIKLVBSSW9MRUFTVDE2ID0gIm8iCi1QUklvTEVBU1QzMiA9ICJvIgotUFJJb0xFQVNUNjQgPSAibG8iCi1QUklvTEVBU1Q2NCA9ICJsbG8iCi1QUkl4OCA9ICJ4IgotUFJJeDE2ID0gIngiCi1QUkl4MzIgPSAieCIKLVBSSXg2NCA9ICJseCIKLVBSSXg2NCA9ICJsbHgiCi1QUkl4TEVBU1Q4ID0gIngiCi1QUkl4TEVBU1QxNiA9ICJ4IgotUFJJeExFQVNUMzIgPSAieCIKLVBSSXhMRUFTVDY0ID0gImx4IgotUFJJeExFQVNUNjQgPSAibGx4IgotUFJJWDggPSAiWCIKLVBSSVgxNiA9ICJYIgotUFJJWDMyID0gIlgiCi1QUklYNjQgPSAibFgiCi1QUklYNjQgPSAibGxYIgotUFJJWExFQVNUOCA9ICJYIgotUFJJWExFQVNUMTYgPSAiWCIKLVBSSVhMRUFTVDMyID0gIlgiCi1QUklYTEVBU1Q2NCA9ICJsWCIKLVBSSVhMRUFTVDY0ID0gImxsWCIKLVBSSXU4ID0gInUiCi1QUkl1MTYgPSAidSIKLVBSSXUzMiA9ICJ1IgotUFJJdTY0ID0gImx1IgotUFJJdTY0ID0gImxsdSIKLVBSSXVMRUFTVDggPSAidSIKLVBSSXVMRUFTVDE2ID0gInUiCi1QUkl1TEVBU1QzMiA9ICJ1IgotUFJJdUxFQVNUNjQgPSAibHUiCi1QUkl1TEVBU1Q2NCA9ICJsbHUiCi1TQ05kMTYgPSAiaGQiCi1TQ05kMzIgPSAiZCIKLVNDTmQ2NCA9ICJsZCIKLVNDTmQ2NCA9ICJsbGQiCi1TQ05pMTYgPSAiaGkiCi1TQ05pMzIgPSAiaSIKLVNDTmk2NCA9ICJsaSIKLVNDTmk2NCA9ICJsbGkiCi1TQ05vMTYgPSAiaG8iCi1TQ05vMzIgPSAibyIKLVNDTm82NCA9ICJsbyIKLVNDTm82NCA9ICJsbG8iCi1TQ051MTYgPSAiaHUiCi1TQ051MzIgPSAidSIKLVNDTnU2NCA9ICJsdSIKLVNDTnU2NCA9ICJsbHUiCi1TQ054MTYgPSAiaHgiCi1TQ054MzIgPSAieCIKLVNDTng2NCA9ICJseCIKLVNDTng2NCA9ICJsbHgiCi1QUklkTUFYID0gImxkIgotUFJJb01BWCA9ICJsbyIKLVBSSXhNQVggPSAibHgiCi1QUkl1TUFYID0gImx1IgotUFJJZE1BWCA9ICJsbGQiCi1QUklvTUFYID0gImxsbyIKLVBSSXhNQVggPSAibGx4IgotUFJJdU1BWCA9ICJsbHUiCi1QUklkTUFYID0gImQiCi1QUklvTUFYID0gIm8iCi1QUkl4TUFYID0gIngiCi1QUkl1TUFYID0gInUiCi1TQ05pTUFYID0gImxpIgotU0NOZE1BWCA9ICJsZCIKLVNDTm9NQVggPSAibG8iCi1TQ054TUFYID0gImx4IgotU0NOaU1BWCA9ICJsbGkiCi1TQ05kTUFYID0gImxsZCIKLVNDTm9NQVggPSAibGxvIgotU0NOeE1BWCA9ICJsbHgiCi1TQ05pTUFYID0gImkiCi1TQ05kTUFYID0gImQiCi1TQ05vTUFYID0gIm8iCi1TQ054TUFYID0gIngiCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdHlwZXMzMi5oCi1TSFJUX01JTiA9ICgtMzI3NjgpCi1TSFJUX01BWCA9IDMyNzY3Ci1VU0hSVF9NQVggPSA2NTUzNQotSU5UX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUlOID0gKC05MjIzMzcyMDM2ODU0Nzc1ODA3LTEpCi1MT05HX01BWCA9IDkyMjMzNzIwMzY4NTQ3NzU4MDcKLUxPTkdfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1MT05HX01BWCA9IDIxNDc0ODM2NDcKLVBfTVlJRCA9ICgtMSkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWxlY3QuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RpbWUuaAotVElNRTMyX01BWCA9IElOVDMyX01BWAotVElNRTMyX01JTiA9IElOVDMyX01JTgotZGVmIFRJTUVWQUxfT1ZFUkZMT1codHYpOiByZXR1cm4gXAotCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1EU1RfTk9ORSA9IDAKLURTVF9VU0EgPSAxCi1EU1RfQVVTVCA9IDIKLURTVF9XRVQgPSAzCi1EU1RfTUVUID0gNAotRFNUX0VFVCA9IDUKLURTVF9DQU4gPSA2Ci1EU1RfR0IgPSA3Ci1EU1RfUlVNID0gOAotRFNUX1RVUiA9IDkKLURTVF9BVVNUQUxUID0gMTAKLUlUSU1FUl9SRUFMID0gMAotSVRJTUVSX1ZJUlRVQUwgPSAxCi1JVElNRVJfUFJPRiA9IDIKLUlUSU1FUl9SRUFMUFJPRiA9IDMKLWRlZiBJVElNRVJWQUxfT1ZFUkZMT1coaXR2KTogcmV0dXJuIFwKLQotU0VDID0gMQotTUlMTElTRUMgPSAxMDAwCi1NSUNST1NFQyA9IDEwMDAwMDAKLU5BTk9TRUMgPSAxMDAwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdGltZV9pbXBsLmgKLWRlZiBUSU1FU1BFQ19PVkVSRkxPVyh0cyk6IHJldHVybiBcCi0KLWRlZiBJVElNRVJTUEVDX09WRVJGTE9XKGl0KTogcmV0dXJuIFwKLQotX19DTE9DS19SRUFMVElNRTAgPSAwCi1DTE9DS19WSVJUVUFMID0gMQotQ0xPQ0tfUFJPRiA9IDIKLV9fQ0xPQ0tfUkVBTFRJTUUzID0gMwotQ0xPQ0tfSElHSFJFUyA9IDQKLUNMT0NLX01BWCA9IDUKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTMKLUNMT0NLX1JFQUxUSU1FID0gX19DTE9DS19SRUFMVElNRTAKLVRJTUVSX1JFTFRJTUUgPSAweDAKLVRJTUVSX0FCU1RJTUUgPSAweDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9tdXRleC5oCi1mcm9tIFRZUEVTIGltcG9ydCAqCi1kZWYgTVVURVhfSEVMRCh4KTogcmV0dXJuIChtdXRleF9vd25lZCh4KSkKLQotZGVmIFRJQ0tfVE9fU0VDKHRpY2spOiByZXR1cm4gKCh0aWNrKSAvIGh6KQotCi1kZWYgU0VDX1RPX1RJQ0soc2VjKTogcmV0dXJuICgoc2VjKSAqIGh6KQotCi1kZWYgVElDS19UT19NU0VDKHRpY2spOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLKG1zZWMpOiByZXR1cm4gXAotCi1kZWYgTVNFQ19UT19USUNLX1JPVU5EVVAobXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX1VTRUModGljayk6IHJldHVybiAoKHRpY2spICogdXNlY19wZXJfdGljaykKLQotZGVmIFVTRUNfVE9fVElDSyh1c2VjKTogcmV0dXJuICgodXNlYykgLyB1c2VjX3Blcl90aWNrKQotCi1kZWYgVVNFQ19UT19USUNLX1JPVU5EVVAodXNlYyk6IHJldHVybiBcCi0KLWRlZiBUSUNLX1RPX05TRUModGljayk6IHJldHVybiAoKHRpY2spICogbnNlY19wZXJfdGljaykKLQotZGVmIE5TRUNfVE9fVElDSyhuc2VjKTogcmV0dXJuICgobnNlYykgLyBuc2VjX3Blcl90aWNrKQotCi1kZWYgTlNFQ19UT19USUNLX1JPVU5EVVAobnNlYyk6IHJldHVybiBcCi0KLWRlZiBUSU1FVkFMX1RPX1RJQ0sodHZwKTogcmV0dXJuIFwKLQotZGVmIFRJTUVTVFJVQ19UT19USUNLKHRzcCk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIHRpbWUuaAotZnJvbSBUWVBFUyBpbXBvcnQgKgotCi0jIEluY2x1ZGVkIGZyb20gaXNvL3RpbWVfaXNvLmgKLU5VTEwgPSAwCi1OVUxMID0gMAotQ0xPQ0tTX1BFUl9TRUMgPSAxMDAwMDAwCi1GRF9TRVRTSVpFID0gNjU1MzYKLUZEX1NFVFNJWkUgPSAxMDI0Ci1fTkJCWSA9IDgKLU5CQlkgPSBfTkJCWQotZGVmIEZEX1pFUk8ocCk6IHJldHVybiBiemVybygocCksIHNpemVvZiAoKihwKSkpCmRpZmYgLS1naXQgYS9MaWIvcGxhdC1zdW5vczUvcmVnZW4gYi9MaWIvcGxhdC1zdW5vczUvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDc4Y2I3ZGUuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtc3Vub3M1L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0jISAvYmluL3NoCi1jYXNlIGB1bmFtZSAtc3JgIGluCi0nU3VuT1MgNS4nKikJOzsKLSopCWVjaG8gUHJvYmFibHkgbm90IG9uIGEgU29sYXJpcyAyIHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaCAvdXNyL2luY2x1ZGUvbmV0aW5ldC9pbi5oIC91c3IvaW5jbHVkZS9zeXMvc3Ryb3B0cy5oIC91c3IvaW5jbHVkZS9kbGZjbi5oCi0KZGlmZiAtLWdpdCBhL0xpYi9wbGF0LXVuaXh3YXJlNy9JTi5weSBiL0xpYi9wbGF0LXVuaXh3YXJlNy9JTi5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwMjNiNC4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC11bml4d2FyZTcvSU4ucHkKKysrIC9kZXYvbnVsbApAQCAtMSw4MzYgKzAsMCBAQAotIyBHZW5lcmF0ZWQgYnkgaDJweSBmcm9tIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW5fZi5oCi1kZWYgSU5fQ0xBU1NBKGkpOiByZXR1cm4gKCgoaW50KShpKSAmIDB4ODAwMDAwMDApID09IDApCi0KLUlOX0NMQVNTQV9ORVQgPSAweGZmMDAwMDAwCi1JTl9DTEFTU0FfTlNISUZUID0gMjQKLUlOX0NMQVNTQV9IT1NUID0gMHgwMGZmZmZmZgotSU5fQ0xBU1NBX01BWCA9IDEyOAotZGVmIElOX0NMQVNTQihpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGMwMDAwMDAwKSA9PSAweDgwMDAwMDAwKQotCi1JTl9DTEFTU0JfTkVUID0gMHhmZmZmMDAwMAotSU5fQ0xBU1NCX05TSElGVCA9IDE2Ci1JTl9DTEFTU0JfSE9TVCA9IDB4MDAwMGZmZmYKLUlOX0NMQVNTQl9NQVggPSA2NTUzNgotZGVmIElOX0NMQVNTQyhpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGMwMDAwMDAwKQotCi1JTl9DTEFTU0NfTkVUID0gMHhmZmZmZmYwMAotSU5fQ0xBU1NDX05TSElGVCA9IDgKLUlOX0NMQVNTQ19IT1NUID0gMHgwMDAwMDBmZgotZGVmIElOX0NMQVNTRChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGYwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1JTl9DTEFTU0RfTkVUID0gMHhmMDAwMDAwMAotSU5fQ0xBU1NEX05TSElGVCA9IDI4Ci1JTl9DTEFTU0RfSE9TVCA9IDB4MGZmZmZmZmYKLWRlZiBJTl9NVUxUSUNBU1QoaSk6IHJldHVybiBJTl9DTEFTU0QoaSkKLQotZGVmIElOX0VYUEVSSU1FTlRBTChpKTogcmV0dXJuICgoKGludCkoaSkgJiAweGUwMDAwMDAwKSA9PSAweGUwMDAwMDAwKQotCi1kZWYgSU5fQkFEQ0xBU1MoaSk6IHJldHVybiAoKChpbnQpKGkpICYgMHhmMDAwMDAwMCkgPT0gMHhmMDAwMDAwMCkKLQotSU5BRERSX0FOWSA9IDB4MDAwMDAwMDAKLUlOQUREUl9MT09QQkFDSyA9IDB4N2YwMDAwMDEKLUlOQUREUl9CUk9BRENBU1QgPSAweGZmZmZmZmZmCi1JTkFERFJfTk9ORSA9IDB4ZmZmZmZmZmYKLUlOX0xPT1BCQUNLTkVUID0gMTI3Ci1JTkFERFJfVU5TUEVDX0dST1VQID0gMHhlMDAwMDAwMAotSU5BRERSX0FMTEhPU1RTX0dST1VQID0gMHhlMDAwMDAwMQotSU5BRERSX0FMTFJUUlNfR1JPVVAgPSAweGUwMDAwMDAyCi1JTkFERFJfTUFYX0xPQ0FMX0dST1VQID0gMHhlMDAwMDBmZgotCi0jIEluY2x1ZGVkIGZyb20gbmV0aW5ldC9pbjYuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3R5cGVzLmgKLWRlZiBxdWFkX2xvdyh4KTogcmV0dXJuIHgudmFsWzBdCi0KLUFEVF9FTUFTS1NJWkUgPSA4Ci1TSFJUX01JTiA9IC0zMjc2OAotU0hSVF9NQVggPSAzMjc2NwotSU5UX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotSU5UX01BWCA9IDIxNDc0ODM2NDcKLUxPTkdfTUlOID0gKC0yMTQ3NDgzNjQ3LTEpCi1MT05HX01BWCA9IDIxNDc0ODM2NDcKLU9GRjMyX01BWCA9IExPTkdfTUFYCi1JU1RBVF9BU1NFUlRFRCA9IDAKLUlTVEFUX0FTU1VNRUQgPSAxCi1JU1RBVF9OT05FID0gMgotT0ZGX01BWCA9IE9GRjMyX01BWAotQ0xPQ0tfTUFYID0gTE9OR19NQVgKLVBfTVlJRCA9ICgtMSkKLVBfTVlIT1NUSUQgPSAoLTEpCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc2VsZWN0LmgKLUZEX1NFVFNJWkUgPSA0MDk2Ci1OQkJZID0gOAotTlVMTCA9IDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9iaXR5cGVzLmgKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW42X2YuaAotZGVmIElONl9JU19BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gSU42X0FERFJfRVFVQUxfTChhLCAwLCAwLCAwLCAwKQotCi1kZWYgSU42X1NFVF9BRERSX1VOU1BFQ0lGSUVEKGEpOiByZXR1cm4gSU42X0FERFJfQ09QWV9MKGEsIDAsIDAsIDAsIDApCi0KLWRlZiBJTjZfSVNfQUREUl9BTlkoYSk6IHJldHVybiBJTjZfQUREUl9FUVVBTF9MKGEsIDAsIDAsIDAsIDApCi0KLWRlZiBJTjZfU0VUX0FERFJfQU5ZKGEpOiByZXR1cm4gSU42X0FERFJfQ09QWV9MKGEsIDAsIDAsIDAsIDApCi0KLWRlZiBJTjZfSVNfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIElONl9BRERSX0VRVUFMX0woYSwgMCwgMCwgMCwgMHgwMTAwMDAwMCkKLQotZGVmIElONl9TRVRfQUREUl9MT09QQkFDSyhhKTogcmV0dXJuIElONl9BRERSX0NPUFlfTChhLCAwLCAwLCAwLCAweDAxMDAwMDAwKQotCi1JTjZfTUNfRkxBR19QRVJNQU5FTlQgPSAweDAKLUlONl9NQ19GTEFHX1RSQU5TSUVOVCA9IDB4MQotSU42X01DX1NDT1BFX05PREVMT0NBTCA9IDB4MQotSU42X01DX1NDT1BFX0xJTktMT0NBTCA9IDB4MgotSU42X01DX1NDT1BFX1NJVEVMT0NBTCA9IDB4NQotSU42X01DX1NDT1BFX09SR0xPQ0FMID0gMHg4Ci1JTjZfTUNfU0NPUEVfR0xPQkFMID0gMHhFCi1kZWYgSU42X0lTX0FERFJfTUNfTk9ERUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfTElOS0xPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfU0lURUxPQ0FMKGEpOiByZXR1cm4gXAotCi1kZWYgSU42X0lTX0FERFJfTUNfT1JHTE9DQUwoYSk6IHJldHVybiBcCi0KLWRlZiBJTjZfSVNfQUREUl9NQ19HTE9CQUwoYSk6IHJldHVybiBcCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jb252c2EuaAotX19ORVRMSUJfVVcyMTFfU1ZSNCA9IDEKLV9fTkVUTElCX1VXMjExX1hQRzQgPSAyCi1fX05FVExJQl9HRU1JTklfU1ZSNCA9IDMKLV9fTkVUTElCX0dFTUlOSV9YUEc0ID0gNAotX19ORVRMSUJfRlAxX1NWUjQgPSA1Ci1fX05FVExJQl9GUDFfWFBHNCA9IDYKLV9fTkVUTElCX0JBU0VfVkVSU0lPTl9fID0gX19ORVRMSUJfVVcyMTFfU1ZSNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfRlAxX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9YUEc0Ci1fX05FVExJQl9WRVJTSU9OX18gPSBfX05FVExJQl9HRU1JTklfU1ZSNAotX19ORVRMSUJfVkVSU0lPTl9fID0gX19ORVRMSUJfR0VNSU5JX1hQRzQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1NWUjQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX1VXMjExX1hQRzQKLV9fTkVUTElCX1ZFUlNJT05fXyA9IF9fTkVUTElCX0ZQMV9YUEc0Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvYnl0ZW9yZGVyLmgKLUxJVFRMRV9FTkRJQU4gPSAxMjM0Ci1CSUdfRU5ESUFOID0gNDMyMQotUERQX0VORElBTiA9IDM0MTIKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9ieXRlb3JkZXJfZi5oCi1CWVRFX09SREVSID0gTElUVExFX0VORElBTgotZGVmIGh0b25sKGhsKTogcmV0dXJuIF9faHRvbmwoaGwpCi0KLWRlZiBudG9obChubCk6IHJldHVybiBfX250b2hsKG5sKQotCi1kZWYgaHRvbnMoaHMpOiByZXR1cm4gX19odG9ucyhocykKLQotZGVmIG50b2hzKG5zKTogcmV0dXJuIF9fbnRvaHMobnMpCi0KLWRlZiBudG9obCh4KTogcmV0dXJuICh4KQotCi1kZWYgbnRvaHMoeCk6IHJldHVybiAoeCkKLQotZGVmIGh0b25sKHgpOiByZXR1cm4gKHgpCi0KLWRlZiBodG9ucyh4KTogcmV0dXJuICh4KQotCi1kZWYgX19ORVRMSUJfVkVSU0lPTl9JU19YUEc0KHZlcnNpb24pOiByZXR1cm4gKCgodmVyc2lvbikgJSAyKSA9PSAwKQotCi1kZWYgX19ORVRMSUJfVkVSU0lPTl9IQVNfU0FMRU4odmVyc2lvbik6IHJldHVybiAoKHZlcnNpb24pID49IF9fTkVUTElCX0dFTUlOSV9TVlI0KQotCi1kZWYgX19ORVRMSUJfVkVSU0lPTl9JU19JS1ModmVyc2lvbik6IHJldHVybiAoKHZlcnNpb24pID49IF9fTkVUTElCX0ZQMV9TVlI0KQotCi1kZWYgU0FfRkFNSUxZX0dFVChzYSk6IHJldHVybiBcCi0KLUlORVQ2X0FERFJTVFJMRU4gPSA0NgotSVBWNl9VTklDQVNUX0hPUFMgPSAzCi1JUFY2X0FERFJGT1JNID0gMjQKLUlQVjZfTVVMVElDQVNUX0hPUFMgPSAyNQotSVBWNl9NVUxUSUNBU1RfSUYgPSAyNgotSVBWNl9NVUxUSUNBU1RfTE9PUCA9IDI3Ci1JUFY2X0FERF9NRU1CRVJTSElQID0gMjgKLUlQVjZfRFJPUF9NRU1CRVJTSElQID0gMjkKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbnNyZW0uaAotZGVmIExJU1RfSU5JVChoZWFkKTogcmV0dXJuIFwKLQotZGVmIExJU1RfSU5JVChoZWFkKTogcmV0dXJuIFwKLQotZGVmIHJlbXF1ZShhKTogcmV0dXJuIFJFTVFVRShhKQotCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc29ja2V0LmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy91aW8uaAotU0hVVF9SRCA9IDAKLVNIVVRfV1IgPSAxCi1TSFVUX1JEV1IgPSAyCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvbmV0Y29uZmlnLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jZGVmcy5oCi1kZWYgX19QKHByb3Rvcyk6IHJldHVybiBwcm90b3MKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gI3gKLQotZGVmIF9fUChwcm90b3MpOiByZXR1cm4gKCkKLQotZGVmIF9fU1RSSU5HKHgpOiByZXR1cm4gIngiCi0KLU5FVENPTkZJRyA9ICIvZXRjL25ldGNvbmZpZyIKLU5FVFBBVEggPSAiTkVUUEFUSCIKLU5DX1RQSV9DTFRTID0gMQotTkNfVFBJX0NPVFMgPSAyCi1OQ19UUElfQ09UU19PUkQgPSAzCi1OQ19UUElfUkFXID0gNAotTkNfTk9GTEFHID0gMDAKLU5DX1ZJU0lCTEUgPSAwbzEKLU5DX0JST0FEQ0FTVCA9IDBvMgotTkNfTk9QUk9UT0ZNTFkgPSAiLSIKLU5DX0xPT1BCQUNLID0gImxvb3BiYWNrIgotTkNfSU5FVCA9ICJpbmV0IgotTkNfSU5FVDYgPSAiaW5ldDYiCi1OQ19JTVBMSU5LID0gImltcGxpbmsiCi1OQ19QVVAgPSAicHVwIgotTkNfQ0hBT1MgPSAiY2hhb3MiCi1OQ19OUyA9ICJucyIKLU5DX05CUyA9ICJuYnMiCi1OQ19FQ01BID0gImVjbWEiCi1OQ19EQVRBS0lUID0gImRhdGFraXQiCi1OQ19DQ0lUVCA9ICJjY2l0dCIKLU5DX1NOQSA9ICJzbmEiCi1OQ19ERUNORVQgPSAiZGVjbmV0IgotTkNfRExJID0gImRsaSIKLU5DX0xBVCA9ICJsYXQiCi1OQ19IWUxJTksgPSAiaHlsaW5rIgotTkNfQVBQTEVUQUxLID0gImFwcGxldGFsayIKLU5DX05JVCA9ICJuaXQiCi1OQ19JRUVFODAyID0gImllZWU4MDIiCi1OQ19PU0kgPSAib3NpIgotTkNfWDI1ID0gIngyNSIKLU5DX09TSU5FVCA9ICJvc2luZXQiCi1OQ19HT1NJUCA9ICJnb3NpcCIKLU5DX05FVFdBUkUgPSAibmV0d2FyZSIKLU5DX05PUFJPVE8gPSAiLSIKLU5DX1RDUCA9ICJ0Y3AiCi1OQ19VRFAgPSAidWRwIgotTkNfSUNNUCA9ICJpY21wIgotTkNfSVBYID0gImlweCIKLU5DX1NQWCA9ICJzcHgiCi1OQ19UUElfQ0xUUyA9IDEKLU5DX1RQSV9DT1RTID0gMgotTkNfVFBJX0NPVFNfT1JEID0gMwotTkNfVFBJX1JBVyA9IDQKLVNPQ0tfU1RSRUFNID0gMgotU09DS19ER1JBTSA9IDEKLVNPQ0tfUkFXID0gNAotU09DS19SRE0gPSA1Ci1TT0NLX1NFUVBBQ0tFVCA9IDYKLVNPX0RFQlVHID0gMHgwMDAxCi1TT19BQ0NFUFRDT05OID0gMHgwMDAyCi1TT19SRVVTRUFERFIgPSAweDAwMDQKLVNPX0tFRVBBTElWRSA9IDB4MDAwOAotU09fRE9OVFJPVVRFID0gMHgwMDEwCi1TT19CUk9BRENBU1QgPSAweDAwMjAKLVNPX1VTRUxPT1BCQUNLID0gMHgwMDQwCi1TT19MSU5HRVIgPSAweDAwODAKLVNPX09PQklOTElORSA9IDB4MDEwMAotU09fT1JEUkVMID0gMHgwMjAwCi1TT19JTUFTT0NLRVQgPSAweDA0MDAKLVNPX01HTVQgPSAweDA4MDAKLVNPX1JFVVNFUE9SVCA9IDB4MTAwMAotU09fTElTVEVOSU5HID0gMHgyMDAwCi1TT19SRFdSID0gMHg0MDAwCi1TT19TRU1BID0gMHg4MDAwCi1TT19ET05UTElOR0VSID0gKH5TT19MSU5HRVIpCi1TT19TTkRCVUYgPSAweDEwMDEKLVNPX1JDVkJVRiA9IDB4MTAwMgotU09fU05ETE9XQVQgPSAweDEwMDMKLVNPX1JDVkxPV0FUID0gMHgxMDA0Ci1TT19TTkRUSU1FTyA9IDB4MTAwNQotU09fUkNWVElNRU8gPSAweDEwMDYKLVNPX0VSUk9SID0gMHgxMDA3Ci1TT19UWVBFID0gMHgxMDA4Ci1TT19QUk9UT1RZUEUgPSAweDEwMDkKLVNPX0FMTFJBVyA9IDB4MTAwYQotU09MX1NPQ0tFVCA9IDB4ZmZmZgotQUZfVU5TUEVDID0gMAotQUZfVU5JWCA9IDEKLUFGX0xPQ0FMID0gQUZfVU5JWAotQUZfSU5FVCA9IDIKLUFGX0lNUExJTksgPSAzCi1BRl9QVVAgPSA0Ci1BRl9DSEFPUyA9IDUKLUFGX05TID0gNgotQUZfTkJTID0gNwotQUZfRUNNQSA9IDgKLUFGX0RBVEFLSVQgPSA5Ci1BRl9DQ0lUVCA9IDEwCi1BRl9TTkEgPSAxMQotQUZfREVDbmV0ID0gMTIKLUFGX0RMSSA9IDEzCi1BRl9MQVQgPSAxNAotQUZfSFlMSU5LID0gMTUKLUFGX0FQUExFVEFMSyA9IDE2Ci1BRl9OSVQgPSAxNwotQUZfODAyID0gMTgKLUFGX09TSSA9IDE5Ci1BRl9JU08gPSBBRl9PU0kKLUFGX1gyNSA9IDIwCi1BRl9PU0lORVQgPSAyMQotQUZfR09TSVAgPSAyMgotQUZfWU5FVCA9IDIzCi1BRl9ST1VURSA9IDI0Ci1BRl9MSU5LID0gMjUKLXBzZXVkb19BRl9YVFAgPSAyNgotQUZfSU5FVDYgPSAyNwotQUZfTUFYID0gMjcKLUFGX0lORVRfQlNXQVAgPSAweDAyMDAKLVBGX1VOU1BFQyA9IEFGX1VOU1BFQwotUEZfVU5JWCA9IEFGX1VOSVgKLVBGX0xPQ0FMID0gQUZfTE9DQUwKLVBGX0lORVQgPSBBRl9JTkVUCi1QRl9JTVBMSU5LID0gQUZfSU1QTElOSwotUEZfUFVQID0gQUZfUFVQCi1QRl9DSEFPUyA9IEFGX0NIQU9TCi1QRl9OUyA9IEFGX05TCi1QRl9OQlMgPSBBRl9OQlMKLVBGX0VDTUEgPSBBRl9FQ01BCi1QRl9EQVRBS0lUID0gQUZfREFUQUtJVAotUEZfQ0NJVFQgPSBBRl9DQ0lUVAotUEZfU05BID0gQUZfU05BCi1QRl9ERUNuZXQgPSBBRl9ERUNuZXQKLVBGX0RMSSA9IEFGX0RMSQotUEZfTEFUID0gQUZfTEFUCi1QRl9IWUxJTksgPSBBRl9IWUxJTksKLVBGX0FQUExFVEFMSyA9IEFGX0FQUExFVEFMSwotUEZfTklUID0gQUZfTklUCi1QRl84MDIgPSBBRl84MDIKLVBGX09TSSA9IEFGX09TSQotUEZfSVNPID0gUEZfT1NJCi1QRl9YMjUgPSBBRl9YMjUKLVBGX09TSU5FVCA9IEFGX09TSU5FVAotUEZfR09TSVAgPSBBRl9HT1NJUAotUEZfWU5FVCA9IEFGX1lORVQKLVBGX1JPVVRFID0gQUZfUk9VVEUKLVBGX0xJTksgPSBBRl9MSU5LCi1wc2V1ZG9fUEZfWFRQID0gcHNldWRvX0FGX1hUUAotUEZfSU5FVDYgPSBBRl9JTkVUNgotUEZfTUFYID0gQUZfTUFYCi1TT01BWENPTk4gPSA1Ci1TQ01fUklHSFRTID0gMQotTVNHX09PQiA9IDB4MQotTVNHX1BFRUsgPSAweDIKLU1TR19ET05UUk9VVEUgPSAweDQKLU1TR19DVFJVTkMgPSAweDgKLU1TR19UUlVOQyA9IDB4MTAKLU1TR19FT1IgPSAweDMwCi1NU0dfV0FJVEFMTCA9IDB4MjAKLU1TR19NQVhJT1ZMRU4gPSAxNgotZGVmIE9QVExFTih4KTogcmV0dXJuICgoKCh4KSArIHNpemVvZihpbnQpIC0gMSkgLyBzaXplb2YoaW50KSkgKiBzaXplb2YoaW50KSkKLQotR0lBUkcgPSAweDEKLUNPTlRJID0gMHgyCi1HSVRBQiA9IDB4NAotU09DS0VUU1lTID0gODgKLVNPQ0tFVFNZUyA9IDgzCi1TT19BQ0NFUFQgPSAxCi1TT19CSU5EID0gMgotU09fQ09OTkVDVCA9IDMKLVNPX0dFVFBFRVJOQU1FID0gNAotU09fR0VUU09DS05BTUUgPSA1Ci1TT19HRVRTT0NLT1BUID0gNgotU09fTElTVEVOID0gNwotU09fUkVDViA9IDgKLVNPX1JFQ1ZGUk9NID0gOQotU09fU0VORCA9IDEwCi1TT19TRU5EVE8gPSAxMQotU09fU0VUU09DS09QVCA9IDEyCi1TT19TSFVURE9XTiA9IDEzCi1TT19TT0NLRVQgPSAxNAotU09fU09DS1BPTEwgPSAxNQotU09fR0VUSVBET01BSU4gPSAxNgotU09fU0VUSVBET01BSU4gPSAxNwotU09fQURKVElNRSA9IDE4Ci0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvc3RyZWFtLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jcmVkLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9rc3luY2guaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2RsLmgKLVNJR05CSVQgPSAweDgwMDAwMDAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvaXBsLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9kaXNwX3AuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3RyYXAuaAotRElWRVJSID0gMAotU0dMU1RQID0gMQotTk1JRkxUID0gMgotQlBURkxUID0gMwotSU5UT0ZMVCA9IDQKLUJPVU5ERkxUID0gNQotSU5WT1BGTFQgPSA2Ci1OT0VYVEZMVCA9IDcKLURCTEZMVCA9IDgKLUVYVE9WUkZMVCA9IDkKLUlOVlRTU0ZMVCA9IDEwCi1TRUdOUEZMVCA9IDExCi1TVEtGTFQgPSAxMgotR1BGTFQgPSAxMwotUEdGTFQgPSAxNAotRVhURVJSRkxUID0gMTYKLUFMSUdORkxUID0gMTcKLU1DRUZMVCA9IDE4Ci1VU0VSRkxUID0gMHgxMDAKLVRSUF9QUkVFTVBUID0gMHgyMDAKLVRSUF9VTlVTRUQgPSAweDIwMQotUEZfRVJSX01BU0sgPSAweDAxCi1QRl9FUlJfUEFHRSA9IDAKLVBGX0VSUl9QUk9UID0gMQotUEZfRVJSX1dSSVRFID0gMgotUEZfRVJSX1VTRVIgPSA0Ci1FVlRfU1RSU0NIRUQgPSAweDA0Ci1FVlRfR0xPQkNBTExPVVQgPSAweDA4Ci1FVlRfTENMQ0FMTE9VVCA9IDB4MTAKLUVWVF9TT0ZUSU5UTUFTSyA9IChFVlRfU1RSU0NIRUR8RVZUX0dMT0JDQUxMT1VUfEVWVF9MQ0xDQUxMT1VUKQotUEwwID0gMAotUEwxID0gMQotUEwyID0gMgotUEwzID0gMwotUEw0ID0gNAotUEw1ID0gNQotUEw2ID0gNgotUExISSA9IDgKLVBMNyA9IFBMSEkKLVBMQkFTRSA9IFBMMAotUExUSU1FT1VUID0gUEwxCi1QTERJU0sgPSBQTDUKLVBMU1RSID0gUEw2Ci1QTFRUWSA9IFBMU1RSCi1QTE1JTiA9IFBMMAotUExNSU4gPSBQTDEKLU1BWF9JTlRSX0xFVkVMUyA9IDEwCi1NQVhfSU5UUl9ORVNUSU5HID0gNTAKLVNUUlNDSEVEID0gRVZUX1NUUlNDSEVECi1HTE9CQUxTT0ZUSU5UID0gRVZUX0dMT0JDQUxMT1VUCi1MT0NBTFNPRlRJTlQgPSBFVlRfTENMQ0FMTE9VVAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tzeW5jaF9wLmgKLWRlZiBHRVRfVElNRSh0aW1lcCk6IHJldHVybiBcCi0KLUxLX1RIUkVTSE9MRCA9IDUwMDAwMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2xpc3QuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2xpc3Rhc20uaAotZGVmIHJlbXF1ZV9udWxsKGUpOiByZXR1cm4gXAotCi1kZWYgTFNfSVNFTVBUWShsaXN0cCk6IHJldHVybiBcCi0KLUxLX0JBU0lDID0gMHgxCi1MS19TTEVFUCA9IDB4MgotTEtfTk9TVEFUUyA9IDB4NAotZGVmIENZQ0xFU19TSU5DRShjKTogcmV0dXJuIENZQ0xFU19CRVRXRUVOKChjKSwgQ1lDTEVTKCkpCi0KLUxTQl9OTEtEUyA9IDkyCi1FVlRfUlVOUlVOID0gMHgwMQotRVZUX0tQUlVOUlVOID0gMHgwMgotU1BfVU5MT0NLRUQgPSAwCi1TUF9MT0NLRUQgPSAxCi1LU19MT0NLVEVTVCA9IDB4MDEKLUtTX01QU1RBVFMgPSAweDAyCi1LU19ERUlOSVRFRCA9IDB4MDQKLUtTX05WTFRUUkFDRSA9IDB4MDgKLVJXU19SRUFEID0gKG9yZCgncicpKQotUldTX1dSSVRFID0gKG9yZCgndycpKQotUldTX1VOTE9DS0VEID0gKG9yZCgndScpKQotUldTX0JVU1kgPSAob3JkKCdiJykpCi1kZWYgU0xFRVBfTE9DS09XTkVEKGxrcCk6IHJldHVybiBcCi0KLWRlZiBTTEVFUF9ESVNPV04obGtwKTogcmV0dXJuIFwKLQotS1NfTk9QUk1QVCA9IDB4MDAwMDAwMDEKLV9fS1NfTE9DS1RFU1QgPSBLU19MT0NLVEVTVAotX19LU19MT0NLVEVTVCA9IDAKLV9fS1NfTVBTVEFUUyA9IEtTX01QU1RBVFMKLV9fS1NfTVBTVEFUUyA9IDAKLV9fS1NfTlZMVFRSQUNFID0gS1NfTlZMVFRSQUNFCi1fX0tTX05WTFRUUkFDRSA9IDAKLUtTRkxBR1MgPSAoX19LU19MT0NLVEVTVHxfX0tTX01QU1RBVFN8X19LU19OVkxUVFJBQ0UpCi1LU1ZVTklQUk9DID0gMQotS1NWTVBERUJVRyA9IDIKLUtTVk1QTk9ERUJVRyA9IDMKLUtTVkZMQUcgPSBLU1ZVTklQUk9DCi1LU1ZGTEFHID0gS1NWTVBERUJVRwotS1NWRkxBRyA9IEtTVk1QTk9ERUJVRwotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2tzaW5saW5lLmgKLV9BX1NQX0xPQ0tFRCA9IDEKLV9BX1NQX1VOTE9DS0VEID0gMAotX0FfSU5WUEwgPSAtMQotZGVmIF9BVE9NSUNfSU5UX0lOQ1IoYXRvbWljX2ludHApOiByZXR1cm4gXAotCi1kZWYgX0FUT01JQ19JTlRfREVDUihhdG9taWNfaW50cCk6IHJldHVybiBcCi0KLWRlZiBBVE9NSUNfSU5UX1JFQUQoYXRvbWljX2ludHApOiByZXR1cm4gX0FUT01JQ19JTlRfUkVBRChhdG9taWNfaW50cCkKLQotZGVmIEFUT01JQ19JTlRfSU5DUihhdG9taWNfaW50cCk6IHJldHVybiBfQVRPTUlDX0lOVF9JTkNSKGF0b21pY19pbnRwKQotCi1kZWYgQVRPTUlDX0lOVF9ERUNSKGF0b21pY19pbnRwKTogcmV0dXJuIF9BVE9NSUNfSU5UX0RFQ1IoYXRvbWljX2ludHApCi0KLWRlZiBGU1BJTl9JTklUKGxwKTogcmV0dXJuCi0KLWRlZiBGU1BJTl9MT0NLKGwpOiByZXR1cm4gRElTQUJMRSgpCi0KLWRlZiBGU1BJTl9UUllMT0NLKGwpOiByZXR1cm4gKERJU0FCTEUoKSwgQl9UUlVFKQotCi1kZWYgRlNQSU5fVU5MT0NLKGwpOiByZXR1cm4gRU5BQkxFKCkKLQotZGVmIExPQ0tfREVJTklUKGxwKTogcmV0dXJuCi0KLWRlZiBMT0NLX0RFQUxMT0MobHApOiByZXR1cm4KLQotZGVmIExPQ0tfT1dORUQobHApOiByZXR1cm4gKEJfVFJVRSkKLQotZGVmIFJXX0RFSU5JVChscCk6IHJldHVybgotCi1kZWYgUldfREVBTExPQyhscCk6IHJldHVybgotCi1kZWYgUldfT1dORUQobHApOiByZXR1cm4gKEJfVFJVRSkKLQotZGVmIElTX0xPQ0tFRChsb2NrcCk6IHJldHVybiBCX0ZBTFNFCi0KLWRlZiBMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFwKLQotZGVmIFRSWUxPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIExPQ0tfU0hfUExNSU4obG9ja3ApOiByZXR1cm4gTE9DS19QTE1JTihsb2NrcCkKLQotZGVmIFJXX1JETE9DS19QTE1JTihsb2NrcCk6IHJldHVybiBMT0NLX1BMTUlOKGxvY2twKQotCi1kZWYgUldfV1JMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfUExNSU4obG9ja3ApCi0KLWRlZiBMT0NLX0RFSU5JVChsKTogcmV0dXJuCi0KLWRlZiBMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBUUllMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFRSWUxPQ0soKGxvY2twKSwgUExNSU4pCi0KLWRlZiBMT0NLX1NIX1BMTUlOKGxvY2twKTogcmV0dXJuIExPQ0tfU0goKGxvY2twKSwgUExNSU4pCi0KLWRlZiBSV19SRExPQ0tfUExNSU4obG9ja3ApOiByZXR1cm4gUldfUkRMT0NLKChsb2NrcCksIFBMTUlOKQotCi1kZWYgUldfV1JMT0NLX1BMTUlOKGxvY2twKTogcmV0dXJuIFJXX1dSTE9DSygobG9ja3ApLCBQTE1JTikKLQotZGVmIEZTUElOX0lTX0xPQ0tFRChmc3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgU1BJTl9JU19MT0NLRUQobG9ja3ApOiByZXR1cm4gQl9GQUxTRQotCi1kZWYgRlNQSU5fT1dORUQobCk6IHJldHVybiAoQl9UUlVFKQotCi1DUl9NTERSRUFMID0gMHgwMDAwMDAwMQotQ1JfUkRVTVAgPSAweDAwMDAwMDAyCi1kZWYgY3Job2xkKGNyZWRwKTogcmV0dXJuIGNyaG9sZG4oKGNyZWRwKSwgMSkKLQotZGVmIGNyZnJlZShjcmVkcCk6IHJldHVybiBjcmZyZWVuKChjcmVkcCksIDEpCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zdHJtZGVwLmgKLWRlZiBzdHJfYWxpZ25lZChYKTogcmV0dXJuICgoKHVpbnQpKFgpICYgKHNpemVvZihpbnQpIC0gMSkpID09IDApCi0KLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9lbmdpbmUuaAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL2Nsb2NrLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90aW1lLmgKLURTVF9OT05FID0gMAotRFNUX1VTQSA9IDEKLURTVF9BVVNUID0gMgotRFNUX1dFVCA9IDMKLURTVF9NRVQgPSA0Ci1EU1RfRUVUID0gNQotRFNUX0NBTiA9IDYKLURTVF9HQiA9IDcKLURTVF9SVU0gPSA4Ci1EU1RfVFVSID0gOQotRFNUX0FVU1RBTFQgPSAxMAotSVRJTUVSX1JFQUwgPSAwCi1JVElNRVJfVklSVFVBTCA9IDEKLUlUSU1FUl9QUk9GID0gMgotRkRfU0VUU0laRSA9IDQwOTYKLUZEX05CQlkgPSA4Ci0KLSMgSW5jbHVkZWQgZnJvbSB0aW1lLmgKLU5VTEwgPSAwCi1DTE9DS1NfUEVSX1NFQyA9IDEwMDAwMDAKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9jbG9ja19wLmgKLUNHQklUUyA9IDQKLUlEQklUUyA9IDI4Ci1kZWYgdG9pZF91bnBhY2tjZyhpZHZhbCk6IHJldHVybiAoKChpZHZhbCkgPj4gSURCSVRTKSAmIDB4ZikKLQotZGVmIHRvaWRfdW5wYWNraWQoaWR2YWwpOiByZXR1cm4gKChpZHZhbCkgJiAweGZmZmZmZmYpCi0KLWRlZiB0b2lkX3VucGFja2NnKGlkdmFsKTogcmV0dXJuIDAKLQotZGVmIHRvaWRfdW5wYWNraWQoaWR2YWwpOiByZXR1cm4gKGlkdmFsKQotCi1OQ0FMTE9VVF9IQVNIID0gMTAyNAotQ0FMTE9VVF9NQVhWQUwgPSAweDdmZmZmZmZmCi1UT19QRVJJT0RJQyA9IDB4ODAwMDAwMDAKLVRPX0lNTUVESUFURSA9IDB4ODAwMDAwMDAKLVNFQyA9IDEKLU1JTExJU0VDID0gMTAwMAotTUlDUk9TRUMgPSAxMDAwMDAwCi1OQU5PU0VDID0gMTAwMDAwMDAwMAotU0VDSFIgPSAoNjAqNjApCi1TRUNEQVkgPSAoMjQqU0VDSFIpCi1TRUNZUiA9ICgzNjUqU0VDREFZKQotZGVmIFRJTUVfT1dORURfUihjZ251bSk6IHJldHVybiAoQl9UUlVFKQotCi1MT09QU0VDT05EUyA9IDE4MDAKLUxPT1BNSUNST1NFQ09ORFMgPSAoTE9PUFNFQ09ORFMgKiBNSUNST1NFQykKLWRlZiBUSUNLU19TSU5DRSh0KTogcmV0dXJuIFRJQ0tTX0JFVFdFRU4odCwgVElDS1MoKSkKLQotTUFYUlFTID0gMgotRV9PRkZMSU5FID0gMHgwMQotRV9CQUQgPSAweDAyCi1FX1NIVVRET1dOID0gMHgwNAotRV9EUklWRVIgPSAweDA4Ci1FX0RFRkFVTFRLRUVQID0gMHgxMDAKLUVfRFJJVkVSQk9VTkQgPSAweDIwMAotRV9FWENMVVNJVkUgPSAweDQwMAotRV9DR0xFQURFUiA9IDB4ODAwCi1FX05PV0FZID0gKEVfT0ZGTElORXxFX0JBRHxFX1NIVVRET1dOKQotRV9CT1VORCA9IDB4MDEKLUVfR0xPQkFMID0gMHgwMAotRV9VTkFWQUlMID0gLTEKLUVOR0lORV9PTkxJTkUgPSAxCi1kZWYgUFJPQ0VTU09SX1VOTUFQKGUpOiByZXR1cm4gKChlKSAtIGVuZ2luZSkKLQotQk9PVEVORyA9IDAKLVFNT1ZFRCA9IDB4MDAwMQotUVdBTlRSID0gMHgwMDAyCi1RV0FOVFcgPSAweDAwMDQKLVFGVUxMID0gMHgwMDA4Ci1RUkVBRFIgPSAweDAwMTAKLVFVU0UgPSAweDAwMjAKLVFOT0VOQiA9IDB4MDA0MAotUVVQID0gMHgwMDgwCi1RQkFDSyA9IDB4MDEwMAotUUlOVEVSID0gMHgwMjAwCi1RUFJPQ1NPTiA9IDB4MDQwMAotUVRPRU5BQiA9IDB4MDgwMAotUUZSRUVaRSA9IDB4MTAwMAotUUJPVU5EID0gMHgyMDAwCi1RREVGQ05UID0gMHg0MDAwCi1RRU5BQiA9IDB4MDAwMQotUVNWQ0JVU1kgPSAweDAwMDIKLVNUUk1fUFVUQ05UX1RBQkxFUyA9IDMxCi1kZWYgU1RSTV9NWUVOR19QVVRDTlQoc2RwKTogcmV0dXJuIFNUUk1fUFVUQ05UKGwuZW5nX251bSwgc2RwKQotCi1RQl9GVUxMID0gMHgwMQotUUJfV0FOVFcgPSAweDAyCi1RQl9CQUNLID0gMHgwNAotTkJBTkQgPSAyNTYKLURCX1dBU0RVUEVEID0gMHgxCi1EQl8yUElFQ0UgPSAweDIKLVNUUkxFQUtIQVNIU1ogPSAxMDIxCi1NU0dNQVJLID0gMHgwMQotTVNHTk9MT09QID0gMHgwMgotTVNHREVMSU0gPSAweDA0Ci1NU0dOT0dFVCA9IDB4MDgKLU1TR0xPRyA9IDB4MTAKLU1fREFUQSA9IDB4MDAKLU1fUFJPVE8gPSAweDAxCi1NX0JSRUFLID0gMHgwOAotTV9QQVNTRlAgPSAweDA5Ci1NX1NJRyA9IDB4MGIKLU1fREVMQVkgPSAweDBjCi1NX0NUTCA9IDB4MGQKLU1fSU9DVEwgPSAweDBlCi1NX1NFVE9QVFMgPSAweDEwCi1NX1JTRSA9IDB4MTEKLU1fVFJBSUwgPSAweDEyCi1NX0lPQ0FDSyA9IDB4ODEKLU1fSU9DTkFLID0gMHg4MgotTV9QQ1BST1RPID0gMHg4MwotTV9QQ1NJRyA9IDB4ODQKLU1fUkVBRCA9IDB4ODUKLU1fRkxVU0ggPSAweDg2Ci1NX1NUT1AgPSAweDg3Ci1NX1NUQVJUID0gMHg4OAotTV9IQU5HVVAgPSAweDg5Ci1NX0VSUk9SID0gMHg4YQotTV9DT1BZSU4gPSAweDhiCi1NX0NPUFlPVVQgPSAweDhjCi1NX0lPQ0RBVEEgPSAweDhkCi1NX1BDUlNFID0gMHg4ZQotTV9TVE9QSSA9IDB4OGYKLU1fU1RBUlRJID0gMHg5MAotTV9QQ0NUTCA9IDB4OTEKLU1fUENTRVRPUFRTID0gMHg5MgotUU5PUk0gPSAweDAwCi1RUENUTCA9IDB4ODAKLVNUUkNBTk9OID0gMHgwMQotUkVDT1BZID0gMHgwMgotU09fQUxMID0gMHgwMDNmCi1TT19SRUFET1BUID0gMHgwMDAxCi1TT19XUk9GRiA9IDB4MDAwMgotU09fTUlOUFNaID0gMHgwMDA0Ci1TT19NQVhQU1ogPSAweDAwMDgKLVNPX0hJV0FUID0gMHgwMDEwCi1TT19MT1dBVCA9IDB4MDAyMAotU09fTVJFQURPTiA9IDB4MDA0MAotU09fTVJFQURPRkYgPSAweDAwODAKLVNPX05ERUxPTiA9IDB4MDEwMAotU09fTkRFTE9GRiA9IDB4MDIwMAotU09fSVNUVFkgPSAweDA0MDAKLVNPX0lTTlRUWSA9IDB4MDgwMAotU09fVE9TVE9QID0gMHgxMDAwCi1TT19UT05TVE9QID0gMHgyMDAwCi1TT19CQU5EID0gMHg0MDAwCi1TT19ERUxJTSA9IDB4ODAwMAotU09fTk9ERUxJTSA9IDB4MDEwMDAwCi1TT19TVFJIT0xEID0gMHgwMjAwMDAKLVNPX0xPT1AgPSAweDA0MDAwMAotRFJWT1BFTiA9IDB4MAotTU9ET1BFTiA9IDB4MQotQ0xPTkVPUEVOID0gMHgyCi1PUEVORkFJTCA9IC0xCi1CUFJJX0xPID0gMQotQlBSSV9NRUQgPSAyCi1CUFJJX0hJID0gMwotSU5GUFNaID0gLTEKLUZMVVNIQUxMID0gMQotRkxVU0hEQVRBID0gMAotU1RSSElHSCA9IDUxMjAKLVNUUkxPVyA9IDEwMjQKLU1BWElPQ0JTWiA9IDEwMjQKLWRlZiBzdHJhbG4oYSk6IHJldHVybiAoY2FkZHJfdCkoKGludCkoYSkgJiB+KHNpemVvZihpbnQpLTEpKQotCi1JUE1fSUQgPSAyMDAKLUlDTVBNX0lEID0gMjAxCi1UQ1BNX0lEID0gMjAyCi1VRFBNX0lEID0gMjAzCi1BUlBNX0lEID0gMjA0Ci1BUFBNX0lEID0gMjA1Ci1SSVBNX0lEID0gMjA2Ci1QUFBNX0lEID0gMjA3Ci1BSERMQ01fSUQgPSAyMDgKLU1IRExDUklQTV9JRCA9IDIwOQotSERMQ01fSUQgPSAyMTAKLVBQQ0lEX0lEID0gMjExCi1JR01QTV9JRCA9IDIxMgotSVBJUE1fSUQgPSAyMTMKLUlQUFJPVE9fSVAgPSAwCi1JUFBST1RPX0hPUE9QVFMgPSAwCi1JUFBST1RPX0lDTVAgPSAxCi1JUFBST1RPX0lHTVAgPSAyCi1JUFBST1RPX0dHUCA9IDMKLUlQUFJPVE9fSVBJUCA9IDQKLUlQUFJPVE9fVENQID0gNgotSVBQUk9UT19FR1AgPSA4Ci1JUFBST1RPX1BVUCA9IDEyCi1JUFBST1RPX1VEUCA9IDE3Ci1JUFBST1RPX0lEUCA9IDIyCi1JUFBST1RPX1RQID0gMjkKLUlQUFJPVE9fSVBWNiA9IDQxCi1JUFBST1RPX1JPVVRJTkcgPSA0MwotSVBQUk9UT19GUkFHTUVOVCA9IDQ0Ci1JUFBST1RPX0VTUCA9IDUwCi1JUFBST1RPX0FIID0gNTEKLUlQUFJPVE9fSUNNUFY2ID0gNTgKLUlQUFJPVE9fTk9ORSA9IDU5Ci1JUFBST1RPX0RTVE9QVFMgPSA2MAotSVBQUk9UT19IRUxMTyA9IDYzCi1JUFBST1RPX05EID0gNzcKLUlQUFJPVE9fRU9OID0gODAKLUlQUFJPVE9fUkFXID0gMjU1Ci1JUFBST1RPX01BWCA9IDI1NgotSVBQT1JUX0VDSE8gPSA3Ci1JUFBPUlRfRElTQ0FSRCA9IDkKLUlQUE9SVF9TWVNUQVQgPSAxMQotSVBQT1JUX0RBWVRJTUUgPSAxMwotSVBQT1JUX05FVFNUQVQgPSAxNQotSVBQT1JUX0ZUUCA9IDIxCi1JUFBPUlRfVEVMTkVUID0gMjMKLUlQUE9SVF9TTVRQID0gMjUKLUlQUE9SVF9USU1FU0VSVkVSID0gMzcKLUlQUE9SVF9OQU1FU0VSVkVSID0gNDIKLUlQUE9SVF9XSE9JUyA9IDQzCi1JUFBPUlRfTVRQID0gNTcKLUlQUE9SVF9URlRQID0gNjkKLUlQUE9SVF9SSkUgPSA3NwotSVBQT1JUX0ZJTkdFUiA9IDc5Ci1JUFBPUlRfVFRZTElOSyA9IDg3Ci1JUFBPUlRfU1VQRFVQID0gOTUKLUlQUE9SVF9FWEVDU0VSVkVSID0gNTEyCi1JUFBPUlRfTE9HSU5TRVJWRVIgPSA1MTMKLUlQUE9SVF9DTURTRVJWRVIgPSA1MTQKLUlQUE9SVF9FRlNTRVJWRVIgPSA1MjAKLUlQUE9SVF9CSUZGVURQID0gNTEyCi1JUFBPUlRfV0hPU0VSVkVSID0gNTEzCi1JUFBPUlRfUk9VVEVTRVJWRVIgPSA1MjAKLUlQUE9SVF9SRVNFUlZFRCA9IDEwMjQKLUlQUE9SVF9VU0VSUkVTRVJWRUQgPSA2NTUzNQotSVBQT1JUX1JFU0VSVkVEX0xPVyA9IDUxMgotSVBQT1JUX1JFU0VSVkVEX0hJR0ggPSAxMDIzCi1JUFBPUlRfVVNFUlJFU0VSVkVEX0xPVyA9IDMyNzY4Ci1JUFBPUlRfVVNFUlJFU0VSVkVEX0hJR0ggPSA2NTUzNQotSU5FVF9BRERSU1RSTEVOID0gMTYKLUlQX09QVElPTlMgPSAxCi1JUF9UT1MgPSAyCi1JUF9UVEwgPSAzCi1JUF9IRFJJTkNMID0gNAotSVBfUkVDVk9QVFMgPSA1Ci1JUF9SRUNWUkVUT1BUUyA9IDYKLUlQX1JFQ1ZEU1RBRERSID0gNwotSVBfUkVUT1BUUyA9IDgKLUlQX01VTFRJQ0FTVF9JRiA9IDkKLUlQX01VTFRJQ0FTVF9MT09QID0gMTAKLUlQX0FERF9NRU1CRVJTSElQID0gMTEKLUlQX0RST1BfTUVNQkVSU0hJUCA9IDEyCi1JUF9CUk9BRENBU1RfSUYgPSAxNAotSVBfUkVDVklGSU5ERVggPSAxNQotSVBfTVVMVElDQVNUX1RUTCA9IDE2Ci1NUlRfSU5JVCA9IDE3Ci1NUlRfRE9ORSA9IDE4Ci1NUlRfQUREX1ZJRiA9IDE5Ci1NUlRfREVMX1ZJRiA9IDIwCi1NUlRfQUREX01GQyA9IDIxCi1NUlRfREVMX01GQyA9IDIyCi1NUlRfVkVSU0lPTiA9IDIzCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9UVEwgPSAxCi1JUF9ERUZBVUxUX01VTFRJQ0FTVF9MT09QID0gMQotSVBfTUFYX01FTUJFUlNISVBTID0gMjAKLUlOQUREUl9VTlNQRUNfR1JPVVAgPSAweGUwMDAwMDAwCi1JTkFERFJfQUxMSE9TVFNfR1JPVVAgPSAweGUwMDAwMDAxCi1JTkFERFJfQUxMUlRSU19HUk9VUCA9IDB4ZTAwMDAwMDIKLUlOQUREUl9NQVhfTE9DQUxfR1JPVVAgPSAweGUwMDAwMGZmCi0KLSMgSW5jbHVkZWQgZnJvbSBuZXRpbmV0L2luX21wLmgKLQotIyBJbmNsdWRlZCBmcm9tIG5ldGluZXQvaW5fbXBfZGRpLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9pbmxpbmUuaAotSVBfSElFUl9CQVNFID0gKDIwKQotZGVmIEFTU0VSVF9MT0NLKHgpOiByZXR1cm4KLQotZGVmIEFTU0VSVF9XUkxPQ0soeCk6IHJldHVybgotCi1kZWYgQVNTRVJUX1VOTE9DSyh4KTogcmV0dXJuCi0KLWRlZiBDQU5QVVQocSk6IHJldHVybiBjYW5wdXQoKHEpKQotCi1kZWYgQ0FOUFVUTkVYVChxKTogcmV0dXJuIGNhbnB1dG5leHQoKHEpKQotCi1JTkVUX0RFQlVHID0gMQpkaWZmIC0tZ2l0IGEvTGliL3BsYXQtdW5peHdhcmU3L1NUUk9QVFMucHkgYi9MaWIvcGxhdC11bml4d2FyZTcvU1RST1BUUy5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWY1MGE5Yy4uMDAwMDAwMAotLS0gYS9MaWIvcGxhdC11bml4d2FyZTcvU1RST1BUUy5weQorKysgL2Rldi9udWxsCkBAIC0xLDMyOCArMCwwIEBACi0jIEdlbmVyYXRlZCBieSBoMnB5IGZyb20gL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy90eXBlcy5oCi1kZWYgcXVhZF9sb3coeCk6IHJldHVybiB4LnZhbFswXQotCi1BRFRfRU1BU0tTSVpFID0gOAotU0hSVF9NSU4gPSAtMzI3NjgKLVNIUlRfTUFYID0gMzI3NjcKLUlOVF9NSU4gPSAoLTIxNDc0ODM2NDctMSkKLUlOVF9NQVggPSAyMTQ3NDgzNjQ3Ci1MT05HX01JTiA9ICgtMjE0NzQ4MzY0Ny0xKQotTE9OR19NQVggPSAyMTQ3NDgzNjQ3Ci1PRkYzMl9NQVggPSBMT05HX01BWAotSVNUQVRfQVNTRVJURUQgPSAwCi1JU1RBVF9BU1NVTUVEID0gMQotSVNUQVRfTk9ORSA9IDIKLU9GRl9NQVggPSBPRkYzMl9NQVgKLUNMT0NLX01BWCA9IExPTkdfTUFYCi1QX01ZSUQgPSAoLTEpCi1QX01ZSE9TVElEID0gKC0xKQotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3NlbGVjdC5oCi1GRF9TRVRTSVpFID0gNDA5NgotTkJCWSA9IDgKLU5VTEwgPSAwCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvY29uZi5oCi1EX05FVyA9IDB4MDAKLURfT0xEID0gMHgwMQotRF9ETUEgPSAweDAyCi1EX0JMS09GRiA9IDB4NDAwCi1EX0xGUyA9IDB4ODAwMAotRF9TVFIgPSAweDA4MDAKLURfTU9EID0gMHgxMDAwCi1EX1BTRVVETyA9IDB4MjAwMAotRF9SQU5ET00gPSAweDQwMDAKLURfSE9UID0gMHgxMDAwMAotRF9TRUVLTkVHID0gMHgwNAotRF9UQVBFID0gMHgwOAotRF9OT0JSS1VQID0gMHgxMAotRF9JTklUUFVCID0gMHgyMAotRF9OT1NQRUNNQUNEQVRBID0gMHg0MAotRF9SRFdFUSA9IDB4ODAKLVNFQ01BU0sgPSAoRF9JTklUUFVCfERfTk9TUEVDTUFDREFUQXxEX1JEV0VRKQotREFGX1JFUURNQSA9IDB4MQotREFGX1BIWVNSRVEgPSAweDIKLURBRl9QUkU4ID0gMHg0Ci1EQUZfU1RBVElDID0gMHg4Ci1EQUZfU1RSID0gMHgxMAotRF9NUCA9IDB4MTAwCi1EX1VQRiA9IDB4MjAwCi1ST09URlNfTkFNRVNaID0gNwotRk1OQU1FU1ogPSA4Ci1NQ0RfVkVSU0lPTiA9IDEKLURJX0JDQlAgPSAwCi1ESV9NRURJQSA9IDEKLQotIyBJbmNsdWRlZCBmcm9tIHN5cy9zZWNzeXMuaAotRVNfTUFDT1BFTkxJRCA9IDEKLUVTX01BQ1NZU0xJRCA9IDIKLUVTX01BQ1JPT1RMSUQgPSAzCi1FU19QUlZJTkZPID0gNAotRVNfUFJWU0VUQ05UID0gNQotRVNfUFJWU0VUUyA9IDYKLUVTX01BQ0FEVExJRCA9IDcKLUVTX1BSVklEID0gOAotRVNfVFBHRVRNQUpPUiA9IDkKLVNBX0VYRUMgPSAwbzAxCi1TQV9XUklURSA9IDBvMDIKLVNBX1JFQUQgPSAwbzA0Ci1TQV9TVUJTSVpFID0gMG8xMAotCi0jIEluY2x1ZGVkIGZyb20gc3lzL3N0cm9wdHNfZi5oCi1YX1NUUiA9IChvcmQoJ1MnKTw8OCkKLVhfSV9CQVNFID0gKFhfU1RSfDBvMjAwKQotWF9JX05SRUFEID0gKFhfU1RSfDBvMjAxKQotWF9JX1BVU0ggPSAoWF9TVFJ8MG8yMDIpCi1YX0lfUE9QID0gKFhfU1RSfDBvMjAzKQotWF9JX0xPT0sgPSAoWF9TVFJ8MG8yMDQpCi1YX0lfRkxVU0ggPSAoWF9TVFJ8MG8yMDUpCi1YX0lfU1JET1BUID0gKFhfU1RSfDBvMjA2KQotWF9JX0dSRE9QVCA9IChYX1NUUnwwbzIwNykKLVhfSV9TVFIgPSAoWF9TVFJ8MG8yMTApCi1YX0lfU0VUU0lHID0gKFhfU1RSfDBvMjExKQotWF9JX0dFVFNJRyA9IChYX1NUUnwwbzIxMikKLVhfSV9GSU5EID0gKFhfU1RSfDBvMjEzKQotWF9JX0xJTksgPSAoWF9TVFJ8MG8yMTQpCi1YX0lfVU5MSU5LID0gKFhfU1RSfDBvMjE1KQotWF9JX1BFRUsgPSAoWF9TVFJ8MG8yMTcpCi1YX0lfRkRJTlNFUlQgPSAoWF9TVFJ8MG8yMjApCi1YX0lfU0VOREZEID0gKFhfU1RSfDBvMjIxKQotWF9JX1JFQ1ZGRCA9IChYX1NUUnwwbzIyMikKLQotIyBJbmNsdWRlZCBmcm9tIHVuaXN0ZC5oCi0KLSMgSW5jbHVkZWQgZnJvbSBzeXMvdW5pc3RkLmgKLVJfT0sgPSAwbzA0Ci1XX09LID0gMG8wMgotWF9PSyA9IDBvMDEKLUZfT0sgPSAwMDAKLUVGRl9PTkxZX09LID0gMG8xMAotRVhfT0sgPSAwbzIwCi1TRUVLX1NFVCA9IDAKLVNFRUtfQ1VSID0gMQotU0VFS19FTkQgPSAyCi1fU0NfQVJHX01BWCA9IDEKLV9TQ19DSElMRF9NQVggPSAyCi1fU0NfQ0xLX1RDSyA9IDMKLV9TQ19OR1JPVVBTX01BWCA9IDQKLV9TQ19PUEVOX01BWCA9IDUKLV9TQ19KT0JfQ09OVFJPTCA9IDYKLV9TQ19TQVZFRF9JRFMgPSA3Ci1fU0NfVkVSU0lPTiA9IDgKLV9TQ19QQVNTX01BWCA9IDkKLV9TQ19MT0dOQU1FX01BWCA9IDEwCi1fU0NfUEFHRVNJWkUgPSAxMQotX1NDX1BBR0VfU0laRSA9IF9TQ19QQUdFU0laRQotX1NDX1hPUEVOX1ZFUlNJT04gPSAxMgotX1NDX05BQ0xTX01BWCA9IDEzCi1fU0NfTlBST0NFU1NPUlNfQ09ORiA9IDE0Ci1fU0NfTlBST0NFU1NPUlNfT05MTiA9IDE1Ci1fU0NfTlBST0NFU1NFUyA9IDM5Ci1fU0NfVE9UQUxfTUVNT1JZID0gNDAKLV9TQ19VU0VBQkxFX01FTU9SWSA9IDQxCi1fU0NfR0VORVJBTF9NRU1PUlkgPSA0MgotX1NDX0RFRElDQVRFRF9NRU1PUlkgPSA0MwotX1NDX05DR1NfQ09ORiA9IDQ0Ci1fU0NfTkNHU19PTkxOID0gNDUKLV9TQ19NQVhfQ1BVU19QRVJfQ0cgPSA0NgotX1NDX0NHX1NJTVBMRV9JTVBMID0gNDcKLV9TQ19DQUNIRV9MSU5FID0gNDgKLV9TQ19TWVNURU1fSUQgPSA0OQotX1NDX1RIUkVBRFMgPSA1MQotX1NDX1RIUkVBRF9BVFRSX1NUQUNLQUREUiA9IDUyCi1fU0NfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFID0gNTMKLV9TQ19USFJFQURfREVTVFJVQ1RPUl9JVEVSQVRJT05TID0gNTQKLV9TQ19USFJFQURfS0VZU19NQVggPSA1NQotX1NDX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gNTYKLV9TQ19USFJFQURfUFJJT19JTkhFUklUID0gNTcKLV9TQ19USFJFQURfUFJJT19QUk9URUNUID0gNTgKLV9TQ19USFJFQURfU1RBQ0tfTUlOID0gNTkKLV9TQ19USFJFQURfUFJPQ0VTU19TSEFSRUQgPSA2MAotX1NDX1RIUkVBRF9TQUZFX0ZVTkNUSU9OUyA9IDYxCi1fU0NfVEhSRUFEX1RIUkVBRFNfTUFYID0gNjIKLV9TQ19LRVJORUxfVk0gPSA2MwotX1NDX1RaTkFNRV9NQVggPSAzMjAKLV9TQ19TVFJFQU1fTUFYID0gMzIxCi1fU0NfWE9QRU5fQ1JZUFQgPSAzMjMKLV9TQ19YT1BFTl9FTkhfSTE4TiA9IDMyNAotX1NDX1hPUEVOX1NITSA9IDMyNQotX1NDX1hPUEVOX1hDVV9WRVJTSU9OID0gMzI3Ci1fU0NfQUVTX09TX1ZFUlNJT04gPSAzMzAKLV9TQ19BVEVYSVRfTUFYID0gMzMxCi1fU0NfMl9DX0JJTkQgPSAzNTAKLV9TQ18yX0NfREVWID0gMzUxCi1fU0NfMl9DX1ZFUlNJT04gPSAzNTIKLV9TQ18yX0NIQVJfVEVSTSA9IDM1MwotX1NDXzJfRk9SVF9ERVYgPSAzNTQKLV9TQ18yX0ZPUlRfUlVOID0gMzU1Ci1fU0NfMl9MT0NBTEVERUYgPSAzNTYKLV9TQ18yX1NXX0RFViA9IDM1NwotX1NDXzJfVVBFID0gMzU4Ci1fU0NfMl9WRVJTSU9OID0gMzU5Ci1fU0NfQkNfQkFTRV9NQVggPSAzNzAKLV9TQ19CQ19ESU1fTUFYID0gMzcxCi1fU0NfQkNfU0NBTEVfTUFYID0gMzcyCi1fU0NfQkNfU1RSSU5HX01BWCA9IDM3MwotX1NDX0NPTExfV0VJR0hUU19NQVggPSAzODAKLV9TQ19FWFBSX05FU1RfTUFYID0gMzgxCi1fU0NfTElORV9NQVggPSAzODIKLV9TQ19SRV9EVVBfTUFYID0gMzgzCi1fU0NfSU9WX01BWCA9IDM5MAotX1NDX05QUk9DX0NPTkYgPSAzOTEKLV9TQ19OUFJPQ19PTkxOID0gMzkyCi1fU0NfWE9QRU5fVU5JWCA9IDQwMAotX1NDX1NFTUFQSE9SRVMgPSA0NDAKLV9DU19QQVRIID0gMQotX19PX0NTX0hPU1ROQU1FID0gMgotX0NTX1JFTEVBU0UgPSAzCi1fQ1NfVkVSU0lPTiA9IDQKLV9fT19DU19NQUNISU5FID0gNQotX19PX0NTX0FSQ0hJVEVDVFVSRSA9IDYKLV9DU19IV19TRVJJQUwgPSA3Ci1fX09fQ1NfSFdfUFJPVklERVIgPSA4Ci1fQ1NfU1JQQ19ET01BSU4gPSA5Ci1fQ1NfSU5JVFRBQl9OQU1FID0gMTAKLV9fT19DU19TWVNOQU1FID0gMTEKLV9DU19MRlNfQ0ZMQUdTID0gMjAKLV9DU19MRlNfTERGTEFHUyA9IDIxCi1fQ1NfTEZTX0xJQlMgPSAyMgotX0NTX0xGU19MSU5URkxBR1MgPSAyMwotX0NTX0xGUzY0X0NGTEFHUyA9IDI0Ci1fQ1NfTEZTNjRfTERGTEFHUyA9IDI1Ci1fQ1NfTEZTNjRfTElCUyA9IDI2Ci1fQ1NfTEZTNjRfTElOVEZMQUdTID0gMjcKLV9DU19BUkNISVRFQ1RVUkUgPSAxMDAKLV9DU19CVVNUWVBFUyA9IDEwMQotX0NTX0hPU1ROQU1FID0gMTAyCi1fQ1NfSFdfUFJPVklERVIgPSAxMDMKLV9DU19LRVJORUxfU1RBTVAgPSAxMDQKLV9DU19NQUNISU5FID0gMTA1Ci1fQ1NfT1NfQkFTRSA9IDEwNgotX0NTX09TX1BST1ZJREVSID0gMTA3Ci1fQ1NfU1lTTkFNRSA9IDEwOAotX0NTX1VTRVJfTElNSVQgPSAxMDkKLV9QQ19MSU5LX01BWCA9IDEKLV9QQ19NQVhfQ0FOT04gPSAyCi1fUENfTUFYX0lOUFVUID0gMwotX1BDX05BTUVfTUFYID0gNAotX1BDX1BBVEhfTUFYID0gNQotX1BDX1BJUEVfQlVGID0gNgotX1BDX05PX1RSVU5DID0gNwotX1BDX1ZESVNBQkxFID0gOAotX1BDX0NIT1dOX1JFU1RSSUNURUQgPSA5Ci1fUENfRklMRVNJWkVCSVRTID0gMTAKLV9QT1NJWF9WRVJTSU9OID0gMTk5MDA5Ci1fWE9QRU5fVkVSU0lPTiA9IDQKLUdGX1BBVEggPSAiL2V0Yy9ncm91cCIKLVBGX1BBVEggPSAiL2V0Yy9wYXNzd2QiCi1GX1VMT0NLID0gMAotRl9MT0NLID0gMQotRl9UTE9DSyA9IDIKLUZfVEVTVCA9IDMKLV9QT1NJWF9KT0JfQ09OVFJPTCA9IDEKLV9QT1NJWF9TQVZFRF9JRFMgPSAxCi1fUE9TSVhfVkRJU0FCTEUgPSAwCi1OVUxMID0gMAotU1RESU5fRklMRU5PID0gMAotU1RET1VUX0ZJTEVOTyA9IDEKLVNUREVSUl9GSUxFTk8gPSAyCi1fWE9QRU5fVU5JWCA9IDEKLV9YT1BFTl9FTkhfSTE4TiA9IDEKLV9YT1BFTl9YUEc0ID0gMQotX1BPU0lYMl9DX1ZFUlNJT04gPSAxOTkyMDkKLV9QT1NJWDJfVkVSU0lPTiA9IDE5OTIwOQotX1hPUEVOX1hDVV9WRVJTSU9OID0gNAotX1BPU0lYX1NFTUFQSE9SRVMgPSAxCi1fUE9TSVhfVEhSRUFEUyA9IDEKLV9QT1NJWF9USFJFQURfQVRUUl9TVEFDS0FERFIgPSAxCi1fUE9TSVhfVEhSRUFEX0FUVFJfU1RBQ0tTSVpFID0gMQotX1BPU0lYX1RIUkVBRF9QUklPUklUWV9TQ0hFRFVMSU5HID0gMQotX1BPU0lYX1RIUkVBRF9QUk9DRVNTX1NIQVJFRCA9IDEKLV9QT1NJWF9USFJFQURfU0FGRV9GVU5DVElPTlMgPSAxCi1fUE9TSVgyX0NfQklORCA9IDEKLV9QT1NJWDJfQ0hBUl9URVJNID0gMQotX1BPU0lYMl9GT1JUX1JVTiA9IDEKLV9QT1NJWDJfTE9DQUxFREVGID0gMQotX1BPU0lYMl9VUEUgPSAxCi1fTEZTX0FTWU5DSFJPTk9VU19JTyA9IDEKLV9MRlNfTEFSR0VGSUxFID0gMQotX0xGUzY0X0FTWU5DSFJPTk9VU19JTyA9IDEKLV9MRlM2NF9MQVJHRUZJTEUgPSAxCi1fTEZTNjRfU1RESU8gPSAxCi1GTU5BTUVTWiA9IDgKLVNORFpFUk8gPSAweDAwMQotU05EUElQRSA9IDB4MDAyCi1STk9STSA9IDB4MDAwCi1STVNHRCA9IDB4MDAxCi1STVNHTiA9IDB4MDAyCi1STU9ERU1BU0sgPSAweDAwMwotUlBST1REQVQgPSAweDAwNAotUlBST1RESVMgPSAweDAwOAotUlBST1ROT1JNID0gMHgwMTAKLVJQUk9UTUFTSyA9IDB4MDFjCi1GTFVTSFIgPSAweDAxCi1GTFVTSFcgPSAweDAyCi1GTFVTSFJXID0gMHgwMwotRkxVU0hCQU5EID0gMHgwNAotU19JTlBVVCA9IDB4MDAwMQotU19ISVBSSSA9IDB4MDAwMgotU19PVVRQVVQgPSAweDAwMDQKLVNfTVNHID0gMHgwMDA4Ci1TX0VSUk9SID0gMHgwMDEwCi1TX0hBTkdVUCA9IDB4MDAyMAotU19SRE5PUk0gPSAweDAwNDAKLVNfV1JOT1JNID0gU19PVVRQVVQKLVNfUkRCQU5EID0gMHgwMDgwCi1TX1dSQkFORCA9IDB4MDEwMAotU19CQU5EVVJHID0gMHgwMjAwCi1SU19ISVBSSSA9IDB4MDEKLU1TR19ISVBSSSA9IDB4MDEKLU1TR19BTlkgPSAweDAyCi1NU0dfQkFORCA9IDB4MDQKLU1TR19ESVNDQVJEID0gMHgwOAotTVNHX1BFRUtJT0NUTCA9IDB4MTAKLU1PUkVDVEwgPSAxCi1NT1JFREFUQSA9IDIKLU1VWElEX0FMTCA9ICgtMSkKLUFOWU1BUksgPSAweDAxCi1MQVNUTUFSSyA9IDB4MDIKLVNUUiA9IChvcmQoJ1MnKTw8OCkKLUlfTlJFQUQgPSAoU1RSfDBvMSkKLUlfUFVTSCA9IChTVFJ8MG8yKQotSV9QT1AgPSAoU1RSfDBvMykKLUlfTE9PSyA9IChTVFJ8MG80KQotSV9GTFVTSCA9IChTVFJ8MG81KQotSV9TUkRPUFQgPSAoU1RSfDBvNikKLUlfR1JET1BUID0gKFNUUnwwbzcpCi1JX1NUUiA9IChTVFJ8MG8xMCkKLUlfU0VUU0lHID0gKFNUUnwwbzExKQotSV9HRVRTSUcgPSAoU1RSfDBvMTIpCi1JX0ZJTkQgPSAoU1RSfDBvMTMpCi1JX0xJTksgPSAoU1RSfDBvMTQpCi1JX1VOTElOSyA9IChTVFJ8MG8xNSkKLUlfUEVFSyA9IChTVFJ8MG8xNykKLUlfRkRJTlNFUlQgPSAoU1RSfDBvMjApCi1JX1NFTkRGRCA9IChTVFJ8MG8yMSkKLUlfUkVDVkZEID0gKFNUUnwwbzIyKQotSV9FX1JFQ1ZGRCA9IChTVFJ8MG8xNikKLUlfUkVDVkZEID0gKFNUUnwwbzE2KQotSV9SRUNWRkQgPSAoU1RSfDBvMjIpCi1JX1NXUk9QVCA9IChTVFJ8MG8yMykKLUlfR1dST1BUID0gKFNUUnwwbzI0KQotSV9MSVNUID0gKFNUUnwwbzI1KQotSV9QTElOSyA9IChTVFJ8MG8yNikKLUlfUFVOTElOSyA9IChTVFJ8MG8yNykKLUlfRkxVU0hCQU5EID0gKFNUUnwwbzM0KQotSV9DS0JBTkQgPSAoU1RSfDBvMzUpCi1JX0dFVEJBTkQgPSAoU1RSfDBvMzYpCi1JX0FUTUFSSyA9IChTVFJ8MG8zNykKLUlfU0VUQ0xUSU1FID0gKFNUUnwwbzQwKQotSV9HRVRDTFRJTUUgPSAoU1RSfDBvNDEpCi1JX0NBTlBVVCA9IChTVFJ8MG80MikKLUlfU19SRUNWRkQgPSAoU1RSfDBvNDMpCi1JX1NUQVRTID0gKFNUUnwwbzQ0KQotSV9CSUdQSVBFID0gKFNUUnwwbzQ1KQotSV9HRVRUUCA9IChTVFJ8MG80NikKLUlORlRJTSA9IC0xCmRpZmYgLS1naXQgYS9MaWIvcGxhdC11bml4d2FyZTcvcmVnZW4gYi9MaWIvcGxhdC11bml4d2FyZTcvcmVnZW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDY4OTk4YTcuLjAwMDAwMDAKLS0tIGEvTGliL3BsYXQtdW5peHdhcmU3L3JlZ2VuCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi0jISAvYmluL3NoCi1jYXNlIGB1bmFtZSAtc3JgIGluCi1Vbml4V2FyZSopCTs7Ci0qKQllY2hvIFByb2JhYmx5IG5vdCBvbiBhIFVuaXhXYXJlIHN5c3RlbSAxPiYyCi0JZXhpdCAxOzsKLWVzYWMKLXNldCAtdgotaDJweSAtaSAnKHVfbG9uZyknIC91c3IvaW5jbHVkZS9uZXRpbmV0L2luLmgKLWgycHkgL3Vzci9pbmNsdWRlL3N5cy9zdHJvcHRzLmgKZGlmZiAtLWdpdCBhL0xpYi9wbGF0Zm9ybS5weSBiL0xpYi9wbGF0Zm9ybS5weQppbmRleCAzZTcyNmE3Li5lNDhhZDBiIDEwMDc1NQotLS0gYS9MaWIvcGxhdGZvcm0ucHkKKysrIGIvTGliL3BsYXRmb3JtLnB5CkBAIC0xMyw3ICsxMyw2IEBACiAjICAgIFB5dGhvbiBidWcgdHJhY2tlciAoaHR0cDovL2J1Z3MucHl0aG9uLm9yZykgYW5kIGFzc2lnbiB0aGVtIHRvICJsZW1idXJnIi4KICMKICMgICAgU3RpbGwgbmVlZGVkOgotIyAgICAqIG1vcmUgc3VwcG9ydCBmb3IgV2luQ0UKICMgICAgKiBzdXBwb3J0IGZvciBNUy1ET1MgKFB5dGhvbkRYID8pCiAjICAgICogc3VwcG9ydCBmb3IgQW1pZ2EgYW5kIG90aGVyIHN0aWxsIHVuc3VwcG9ydGVkIHBsYXRmb3JtcyBydW5uaW5nIFB5dGhvbgogIyAgICAqIHN1cHBvcnQgZm9yIGFkZGl0aW9uYWwgTGludXggZGlzdHJpYnV0aW9ucwpAQCAtMjUyLDEzICsyNTEsMTMgQEAKIAogX3JlbGVhc2VfZmlsZW5hbWUgPSByZS5jb21waWxlKHInKFx3KylbLV9dKHJlbGVhc2V8dmVyc2lvbiknLCByZS5BU0NJSSkKIF9sc2JfcmVsZWFzZV92ZXJzaW9uID0gcmUuY29tcGlsZShyJyguKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcgcmVsZWFzZSAnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoW1xkLl0rKScKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1teKF0qKD86XCgoLispXCkpPycsIHJlLkFTQ0lJKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInIHJlbGVhc2UgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKFtcZC5dKyknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidbXihdKig/OlwoKC4rKVwpKT8nLCByZS5BU0NJSSkKIF9yZWxlYXNlX3ZlcnNpb24gPSByZS5jb21waWxlKHInKFteMC05XSspJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcoPzogcmVsZWFzZSApPycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnKFtcZC5dKyknCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1teKF0qKD86XCgoLispXCkpPycsIHJlLkFTQ0lJKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcicoPzogcmVsZWFzZSApPycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInKFtcZC5dKyknCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1teKF0qKD86XCgoLispXCkpPycsIHJlLkFTQ0lJKQogCiAjIFNlZSBhbHNvIGh0dHA6Ly93d3cubm92ZWxsLmNvbS9jb29sc29sdXRpb25zL2ZlYXR1cmUvMTEyNTEuaHRtbAogIyBhbmQgaHR0cDovL2xpbnV4bWFmaWEuY29tL2ZhcS9BZG1pbi9yZWxlYXNlLWZpbGVzLmh0bWwKQEAgLTQwOCw4ICs0MDcsOCBAQAogICAgIHJldHVybiB2ZXJzaW9uCiAKIF92ZXJfb3V0cHV0ID0gcmUuY29tcGlsZShyJyg/OihbXHcgXSspIChbXHcuXSspICcKLSAgICAgICAgICAgICAgICAgICAgICAgICAnLionCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ1xbLiogKFtcZC5dKylcXSknKQorICAgICAgICAgICAgICAgICAgICAgICAgIHInLionCisgICAgICAgICAgICAgICAgICAgICAgICAgcidcWy4qIChbXGQuXSspXF0pJykKIAogIyBFeGFtcGxlcyBvZiBWRVIgY29tbWFuZCBvdXRwdXQ6CiAjCkBAIC01MDksNyArNTA4LDcgQEAKICAgICAgICAgZnJvbSBfd2lucmVnIGltcG9ydCBPcGVuS2V5RXgsIFF1ZXJ5VmFsdWVFeCwgQ2xvc2VLZXksIEhLRVlfTE9DQUxfTUFDSElORQogCiAgICAgd2ludmVyID0gZ2V0d2luZG93c3ZlcnNpb24oKQotICAgIG1haiwgbWluLCBidWlsZCA9IHdpbnZlci5fcGxhdGZvcm1fdmVyc2lvbiBvciB3aW52ZXJbOjNdCisgICAgbWFqLCBtaW4sIGJ1aWxkID0gd2ludmVyLnBsYXRmb3JtX3ZlcnNpb24gb3Igd2ludmVyWzozXQogICAgIHZlcnNpb24gPSAnezB9LnsxfS57Mn0nLmZvcm1hdChtYWosIG1pbiwgYnVpbGQpCiAKICAgICByZWxlYXNlID0gKF9XSU4zMl9DTElFTlRfUkVMRUFTRVMuZ2V0KChtYWosIG1pbikpIG9yCkBAIC0xMDk1LDIyICsxMDk0LDIyIEBACiAKIF9pcm9ucHl0aG9uX3N5c192ZXJzaW9uX3BhcnNlciA9IHJlLmNvbXBpbGUoCiAgICAgcidJcm9uUHl0aG9uXHMqJwotICAgICcoW1xkXC5dKyknCi0gICAgJyg/OiBcKChbXGRcLl0rKVwpKT8nCi0gICAgJyBvbiAoLk5FVCBbXGRcLl0rKScsIHJlLkFTQ0lJKQorICAgIHInKFtcZFwuXSspJworICAgIHInKD86IFwoKFtcZFwuXSspXCkpPycKKyAgICByJyBvbiAoLk5FVCBbXGRcLl0rKScsIHJlLkFTQ0lJKQogCiAjIElyb25QeXRob24gY292ZXJpbmcgMi42IGFuZCAyLjcKIF9pcm9ucHl0aG9uMjZfc3lzX3ZlcnNpb25fcGFyc2VyID0gcmUuY29tcGlsZSgKICAgICByJyhbXGQuXSspXHMqJwotICAgICdcKElyb25QeXRob25ccyonCi0gICAgJ1tcZC5dK1xzKicKLSAgICAnXCgoW1xkLl0rKVwpIG9uIChbXHcuXSsgW1xkLl0rKD86IFwoXGQrLWJpdFwpKT8pXCknCisgICAgcidcKElyb25QeXRob25ccyonCisgICAgcidbXGQuXStccyonCisgICAgcidcKChbXGQuXSspXCkgb24gKFtcdy5dKyBbXGQuXSsoPzogXChcZCstYml0XCkpPylcKScKICkKIAogX3B5cHlfc3lzX3ZlcnNpb25fcGFyc2VyID0gcmUuY29tcGlsZSgKICAgICByJyhbXHcuK10rKVxzKicKLSAgICAnXCgjPyhbXixdKyksXHMqKFtcdyBdKyksXHMqKFtcdyA6XSspXClccyonCi0gICAgJ1xbUHlQeSBbXlxdXStcXT8nKQorICAgIHInXCgjPyhbXixdKyksXHMqKFtcdyBdKyksXHMqKFtcdyA6XSspXClccyonCisgICAgcidcW1B5UHkgW15cXV0rXF0/JykKIAogX3N5c192ZXJzaW9uX2NhY2hlID0ge30KIApAQCAtMTM0NSw3ICsxMzQ0LDcgQEAKICAgICAgICAgICAgICMgc2VlIGlzc3VlICMxMzIyIGZvciBtb3JlIGluZm9ybWF0aW9uCiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvcGxpc3RsaWIucHkgYi9MaWIvcGxpc3RsaWIucHkKaW5kZXggMjUwMmIzOS4uMDliZTVmZCAxMDA2NDQKLS0tIGEvTGliL3BsaXN0bGliLnB5CisrKyBiL0xpYi9wbGlzdGxpYi5weQpAQCAtNDcsNyArNDcsNyBAQAogIiIiCiBfX2FsbF9fID0gWwogICAgICJyZWFkUGxpc3QiLCAid3JpdGVQbGlzdCIsICJyZWFkUGxpc3RGcm9tQnl0ZXMiLCAid3JpdGVQbGlzdFRvQnl0ZXMiLAotICAgICJQbGlzdCIsICJEYXRhIiwgIkRpY3QiLCAiRk1UX1hNTCIsICJGTVRfQklOQVJZIiwKKyAgICAiUGxpc3QiLCAiRGF0YSIsICJEaWN0IiwgIkludmFsaWRGaWxlRXhjZXB0aW9uIiwgIkZNVF9YTUwiLCAiRk1UX0JJTkFSWSIsCiAgICAgImxvYWQiLCAiZHVtcCIsICJsb2FkcyIsICJkdW1wcyIKIF0KIApkaWZmIC0tZ2l0IGEvTGliL3BvcGxpYi5weSBiL0xpYi9wb3BsaWIucHkKaW5kZXggZjY3MjM5MC4uY2FlNjk1MCAxMDA2NDQKLS0tIGEvTGliL3BvcGxpYi5weQorKysgYi9MaWIvcG9wbGliLnB5CkBAIC00MzEsNiArNDMxLDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIHNlbGYua2V5ZmlsZSA9IGtleWZpbGUKICAgICAgICAgICAgIHNlbGYuY2VydGZpbGUgPSBjZXJ0ZmlsZQogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBOb25lOgpkaWZmIC0tZ2l0IGEvTGliL3Bvc2l4cGF0aC5weSBiL0xpYi9wb3NpeHBhdGgucHkKaW5kZXggZDlmM2Y5OS4uNmRiZGFiMiAxMDA2NDQKLS0tIGEvTGliL3Bvc2l4cGF0aC5weQorKysgYi9MaWIvcG9zaXhwYXRoLnB5CkBAIC00OSw2ICs0OSw3IEBACiAKIGRlZiBub3JtY2FzZShzKToKICAgICAiIiJOb3JtYWxpemUgY2FzZSBvZiBwYXRobmFtZS4gIEhhcyBubyBlZmZlY3QgdW5kZXIgUG9zaXgiIiIKKyAgICBzID0gb3MuZnNwYXRoKHMpCiAgICAgaWYgbm90IGlzaW5zdGFuY2UocywgKGJ5dGVzLCBzdHIpKToKICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCJub3JtY2FzZSgpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCAiCiAgICAgICAgICAgICAgICAgICAgICAgICAibm90ICd7fSciLmZvcm1hdChzLl9fY2xhc3NfXy5fX25hbWVfXykpCkBAIC02MCw2ICs2MSw3IEBACiAKIGRlZiBpc2FicyhzKToKICAgICAiIiJUZXN0IHdoZXRoZXIgYSBwYXRoIGlzIGFic29sdXRlIiIiCisgICAgcyA9IG9zLmZzcGF0aChzKQogICAgIHNlcCA9IF9nZXRfc2VwKHMpCiAgICAgcmV0dXJuIHMuc3RhcnRzd2l0aChzZXApCiAKQEAgLTczLDEyICs3NSwxMyBAQAogICAgIElmIGFueSBjb21wb25lbnQgaXMgYW4gYWJzb2x1dGUgcGF0aCwgYWxsIHByZXZpb3VzIHBhdGggY29tcG9uZW50cwogICAgIHdpbGwgYmUgZGlzY2FyZGVkLiAgQW4gZW1wdHkgbGFzdCBwYXJ0IHdpbGwgcmVzdWx0IGluIGEgcGF0aCB0aGF0CiAgICAgZW5kcyB3aXRoIGEgc2VwYXJhdG9yLiIiIgorICAgIGEgPSBvcy5mc3BhdGgoYSkKICAgICBzZXAgPSBfZ2V0X3NlcChhKQogICAgIHBhdGggPSBhCiAgICAgdHJ5OgogICAgICAgICBpZiBub3QgcDoKICAgICAgICAgICAgIHBhdGhbOjBdICsgc2VwICAjMjM3ODA6IEVuc3VyZSBjb21wYXRpYmxlIGRhdGEgdHlwZSBldmVuIGlmIHAgaXMgbnVsbC4KLSAgICAgICAgZm9yIGIgaW4gcDoKKyAgICAgICAgZm9yIGIgaW4gbWFwKG9zLmZzcGF0aCwgcCk6CiAgICAgICAgICAgICBpZiBiLnN0YXJ0c3dpdGgoc2VwKToKICAgICAgICAgICAgICAgICBwYXRoID0gYgogICAgICAgICAgICAgZWxpZiBub3QgcGF0aCBvciBwYXRoLmVuZHN3aXRoKHNlcCk6CkBAIC05OSw2ICsxMDIsNyBAQAogZGVmIHNwbGl0KHApOgogICAgICIiIlNwbGl0IGEgcGF0aG5hbWUuICBSZXR1cm5zIHR1cGxlICIoaGVhZCwgdGFpbCkiIHdoZXJlICJ0YWlsIiBpcwogICAgIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhlIGZpbmFsIHNsYXNoLiAgRWl0aGVyIHBhcnQgbWF5IGJlIGVtcHR5LiIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXAgPSBfZ2V0X3NlcChwKQogICAgIGkgPSBwLnJmaW5kKHNlcCkgKyAxCiAgICAgaGVhZCwgdGFpbCA9IHBbOmldLCBwW2k6XQpAQCAtMTEzLDYgKzExNyw3IEBACiAjIEl0IGlzIGFsd2F5cyB0cnVlIHRoYXQgcm9vdCArIGV4dCA9PSBwLgogCiBkZWYgc3BsaXRleHQocCk6CisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIGlmIGlzaW5zdGFuY2UocCwgYnl0ZXMpOgogICAgICAgICBzZXAgPSBiJy8nCiAgICAgICAgIGV4dHNlcCA9IGInLicKQEAgLTEyOCw2ICsxMzMsNyBAQAogZGVmIHNwbGl0ZHJpdmUocCk6CiAgICAgIiIiU3BsaXQgYSBwYXRobmFtZSBpbnRvIGRyaXZlIGFuZCBwYXRoLiBPbiBQb3NpeCwgZHJpdmUgaXMgYWx3YXlzCiAgICAgZW1wdHkuIiIiCisgICAgcCA9IG9zLmZzcGF0aChwKQogICAgIHJldHVybiBwWzowXSwgcAogCiAKQEAgLTEzNSw2ICsxNDEsNyBAQAogCiBkZWYgYmFzZW5hbWUocCk6CiAgICAgIiIiUmV0dXJucyB0aGUgZmluYWwgY29tcG9uZW50IG9mIGEgcGF0aG5hbWUiIiIKKyAgICBwID0gb3MuZnNwYXRoKHApCiAgICAgc2VwID0gX2dldF9zZXAocCkKICAgICBpID0gcC5yZmluZChzZXApICsgMQogICAgIHJldHVybiBwW2k6XQpAQCAtMTQ0LDYgKzE1MSw3IEBACiAKIGRlZiBkaXJuYW1lKHApOgogICAgICIiIlJldHVybnMgdGhlIGRpcmVjdG9yeSBjb21wb25lbnQgb2YgYSBwYXRobmFtZSIiIgorICAgIHAgPSBvcy5mc3BhdGgocCkKICAgICBzZXAgPSBfZ2V0X3NlcChwKQogICAgIGkgPSBwLnJmaW5kKHNlcCkgKyAxCiAgICAgaGVhZCA9IHBbOmldCkBAIC0yMjIsNiArMjMwLDcgQEAKIGRlZiBleHBhbmR1c2VyKHBhdGgpOgogICAgICIiIkV4cGFuZCB+IGFuZCB+dXNlciBjb25zdHJ1Y3Rpb25zLiAgSWYgdXNlciBvciAkSE9NRSBpcyB1bmtub3duLAogICAgIGRvIG5vdGhpbmcuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICB0aWxkZSA9IGInficKICAgICBlbHNlOgpAQCAtMjY3LDYgKzI3Niw3IEBACiBkZWYgZXhwYW5kdmFycyhwYXRoKToKICAgICAiIiJFeHBhbmQgc2hlbGwgdmFyaWFibGVzIG9mIGZvcm0gJHZhciBhbmQgJHt2YXJ9LiAgVW5rbm93biB2YXJpYWJsZXMKICAgICBhcmUgbGVmdCB1bmNoYW5nZWQuIiIiCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGdsb2JhbCBfdmFycHJvZywgX3ZhcnByb2diCiAgICAgaWYgaXNpbnN0YW5jZShwYXRoLCBieXRlcyk6CiAgICAgICAgIGlmIGInJCcgbm90IGluIHBhdGg6CkBAIC0zMTgsNiArMzI4LDcgQEAKIAogZGVmIG5vcm1wYXRoKHBhdGgpOgogICAgICIiIk5vcm1hbGl6ZSBwYXRoLCBlbGltaW5hdGluZyBkb3VibGUgc2xhc2hlcywgZXRjLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBpc2luc3RhbmNlKHBhdGgsIGJ5dGVzKToKICAgICAgICAgc2VwID0gYicvJwogICAgICAgICBlbXB0eSA9IGInJwpAQCAtMzU1LDYgKzM2Niw3IEBACiAKIGRlZiBhYnNwYXRoKHBhdGgpOgogICAgICIiIlJldHVybiBhbiBhYnNvbHV0ZSBwYXRoLiIiIgorICAgIHBhdGggPSBvcy5mc3BhdGgocGF0aCkKICAgICBpZiBub3QgaXNhYnMocGF0aCk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICAgICAgY3dkID0gb3MuZ2V0Y3dkYigpCkBAIC0zNzAsNiArMzgyLDcgQEAKIGRlZiByZWFscGF0aChmaWxlbmFtZSk6CiAgICAgIiIiUmV0dXJuIHRoZSBjYW5vbmljYWwgcGF0aCBvZiB0aGUgc3BlY2lmaWVkIGZpbGVuYW1lLCBlbGltaW5hdGluZyBhbnkKIHN5bWJvbGljIGxpbmtzIGVuY291bnRlcmVkIGluIHRoZSBwYXRoLiIiIgorICAgIGZpbGVuYW1lID0gb3MuZnNwYXRoKGZpbGVuYW1lKQogICAgIHBhdGgsIG9rID0gX2pvaW5yZWFscGF0aChmaWxlbmFtZVs6MF0sIGZpbGVuYW1lLCB7fSkKICAgICByZXR1cm4gYWJzcGF0aChwYXRoKQogCkBAIC00MzQsNiArNDQ3LDcgQEAKICAgICBpZiBub3QgcGF0aDoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm8gcGF0aCBzcGVjaWZpZWQiKQogCisgICAgcGF0aCA9IG9zLmZzcGF0aChwYXRoKQogICAgIGlmIGlzaW5zdGFuY2UocGF0aCwgYnl0ZXMpOgogICAgICAgICBjdXJkaXIgPSBiJy4nCiAgICAgICAgIHNlcCA9IGInLycKQEAgLTQ0NSw2ICs0NTksOCBAQAogCiAgICAgaWYgc3RhcnQgaXMgTm9uZToKICAgICAgICAgc3RhcnQgPSBjdXJkaXIKKyAgICBlbHNlOgorICAgICAgICBzdGFydCA9IG9zLmZzcGF0aChzdGFydCkKIAogICAgIHRyeToKICAgICAgICAgc3RhcnRfbGlzdCA9IFt4IGZvciB4IGluIGFic3BhdGgoc3RhcnQpLnNwbGl0KHNlcCkgaWYgeF0KQEAgLTQ3Miw2ICs0ODgsNyBAQAogICAgIGlmIG5vdCBwYXRoczoKICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignY29tbW9ucGF0aCgpIGFyZyBpcyBhbiBlbXB0eSBzZXF1ZW5jZScpCiAKKyAgICBwYXRocyA9IHR1cGxlKG1hcChvcy5mc3BhdGgsIHBhdGhzKSkKICAgICBpZiBpc2luc3RhbmNlKHBhdGhzWzBdLCBieXRlcyk6CiAgICAgICAgIHNlcCA9IGInLycKICAgICAgICAgY3VyZGlyID0gYicuJwpkaWZmIC0tZ2l0IGEvTGliL3B5Y2xici5weSBiL0xpYi9weWNsYnIucHkKaW5kZXggNGQ0MGI4Ny4uZDdkYmE5NyAxMDA2NDQKLS0tIGEvTGliL3B5Y2xici5weQorKysgYi9MaWIvcHljbGJyLnB5CkBAIC00MCwxMiArNDAsMTAgQEAKICIiIgogCiBpbXBvcnQgaW8KLWltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgdG9rZW5pemUKIGZyb20gdG9rZW4gaW1wb3J0IE5BTUUsIERFREVOVCwgT1AKLWZyb20gb3BlcmF0b3IgaW1wb3J0IGl0ZW1nZXR0ZXIKIAogX19hbGxfXyA9IFsicmVhZG1vZHVsZSIsICJyZWFkbW9kdWxlX2V4IiwgIkNsYXNzIiwgIkZ1bmN0aW9uIl0KIApAQCAtMzI4LDYgKzMyNiw3IEBACiBkZWYgX21haW4oKToKICAgICAjIE1haW4gcHJvZ3JhbSBmb3IgdGVzdGluZy4KICAgICBpbXBvcnQgb3MKKyAgICBmcm9tIG9wZXJhdG9yIGltcG9ydCBpdGVtZ2V0dGVyCiAgICAgbW9kID0gc3lzLmFyZ3ZbMV0KICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtb2QpOgogICAgICAgICBwYXRoID0gW29zLnBhdGguZGlybmFtZShtb2QpXQpkaWZmIC0tZ2l0IGEvTGliL3B5ZG9jLnB5IGIvTGliL3B5ZG9jLnB5Cm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMGQwZDBhYi4uMzlkYjM5MQotLS0gYS9MaWIvcHlkb2MucHkKKysrIGIvTGliL3B5ZG9jLnB5CkBAIC0yMDksNiArMjA5LDE4IEBACiAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChuYW1lLCBraW5kLCBjbHMsIHZhbHVlKSkKICAgICByZXR1cm4gcmVzdWx0cwogCitkZWYgc29ydF9hdHRyaWJ1dGVzKGF0dHJzLCBvYmplY3QpOgorICAgICdTb3J0IHRoZSBhdHRycyBsaXN0IGluLXBsYWNlIGJ5IF9maWVsZHMgYW5kIHRoZW4gYWxwaGFiZXRpY2FsbHkgYnkgbmFtZScKKyAgICAjIFRoaXMgYWxsb3dzIGRhdGEgZGVzY3JpcHRvcnMgdG8gYmUgb3JkZXJlZCBhY2NvcmRpbmcKKyAgICAjIHRvIGEgX2ZpZWxkcyBhdHRyaWJ1dGUgaWYgcHJlc2VudC4KKyAgICBmaWVsZHMgPSBnZXRhdHRyKG9iamVjdCwgJ19maWVsZHMnLCBbXSkKKyAgICB0cnk6CisgICAgICAgIGZpZWxkX29yZGVyID0ge25hbWUgOiBpLWxlbihmaWVsZHMpIGZvciAoaSwgbmFtZSkgaW4gZW51bWVyYXRlKGZpZWxkcyl9CisgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgZmllbGRfb3JkZXIgPSB7fQorICAgIGtleWZ1bmMgPSBsYW1iZGEgYXR0cjogKGZpZWxkX29yZGVyLmdldChhdHRyWzBdLCAwKSwgYXR0clswXSkKKyAgICBhdHRycy5zb3J0KGtleT1rZXlmdW5jKQorCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIG1vZHVsZSBtYW5pcHVsYXRpb24KIAogZGVmIGlzcGFja2FnZShwYXRoKToKQEAgLTMzOCw3ICszNTAsNyBAQAogICAgICAgICBlbGlmIGV4YyBpcyBTeW50YXhFcnJvcjoKICAgICAgICAgICAgICMgQSBTeW50YXhFcnJvciBvY2N1cnJlZCBiZWZvcmUgd2UgY291bGQgZXhlY3V0ZSB0aGUgbW9kdWxlLgogICAgICAgICAgICAgcmFpc2UgRXJyb3JEdXJpbmdJbXBvcnQodmFsdWUuZmlsZW5hbWUsIGluZm8pCi0gICAgICAgIGVsaWYgZXhjIGlzIEltcG9ydEVycm9yIGFuZCB2YWx1ZS5uYW1lID09IHBhdGg6CisgICAgICAgIGVsaWYgaXNzdWJjbGFzcyhleGMsIEltcG9ydEVycm9yKSBhbmQgdmFsdWUubmFtZSA9PSBwYXRoOgogICAgICAgICAgICAgIyBObyBzdWNoIG1vZHVsZSBpbiB0aGUgcGF0aC4KICAgICAgICAgICAgIHJldHVybiBOb25lCiAgICAgICAgIGVsc2U6CkBAIC04NjgsOCArODgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fbW9kdWxlX18pCiAgICAgICAgICAgICB0YWcgKz0gJzo8YnI+XG4nCiAKLSAgICAgICAgICAgICMgU29ydCBhdHRycyBieSBuYW1lLgotICAgICAgICAgICAgYXR0cnMuc29ydChrZXk9bGFtYmRhIHQ6IHRbMF0pCisgICAgICAgICAgICBzb3J0X2F0dHJpYnV0ZXMoYXR0cnMsIG9iamVjdCkKIAogICAgICAgICAgICAgIyBQdW1wIG91dCB0aGUgYXR0cnMsIHNlZ3JlZ2F0ZWQgYnkga2luZC4KICAgICAgICAgICAgIGF0dHJzID0gc3BpbGwoJ01ldGhvZHMgJXMnICUgdGFnLCBhdHRycywKQEAgLTEyODcsOCArMTI5OCw4IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHRhZyA9ICJpbmhlcml0ZWQgZnJvbSAlcyIgJSBjbGFzc25hbWUodGhpc2NsYXNzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JqZWN0Ll9fbW9kdWxlX18pCi0gICAgICAgICAgICAjIFNvcnQgYXR0cnMgYnkgbmFtZS4KLSAgICAgICAgICAgIGF0dHJzLnNvcnQoKQorCisgICAgICAgICAgICBzb3J0X2F0dHJpYnV0ZXMoYXR0cnMsIG9iamVjdCkKIAogICAgICAgICAgICAgIyBQdW1wIG91dCB0aGUgYXR0cnMsIHNlZ3JlZ2F0ZWQgYnkga2luZC4KICAgICAgICAgICAgIGF0dHJzID0gc3BpbGwoIk1ldGhvZHMgJXM6XG4iICUgdGFnLCBhdHRycywKQEAgLTE0MTgsMTMgKzE0MjksMTQgQEAKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKICAgICBpZiBub3Qgc3lzLnN0ZGluLmlzYXR0eSgpIG9yIG5vdCBzeXMuc3Rkb3V0LmlzYXR0eSgpOgogICAgICAgICByZXR1cm4gcGxhaW5wYWdlcgotICAgIGlmICdQQUdFUicgaW4gb3MuZW52aXJvbjoKKyAgICB1c2VfcGFnZXIgPSBvcy5lbnZpcm9uLmdldCgnTUFOUEFHRVInKSBvciBvcy5lbnZpcm9uLmdldCgnUEFHRVInKQorICAgIGlmIHVzZV9wYWdlcjoKICAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6ICMgcGlwZXMgY29tcGxldGVseSBicm9rZW4gaW4gV2luZG93cwotICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiB0ZW1wZmlsZXBhZ2VyKHBsYWluKHRleHQpLCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiB0ZW1wZmlsZXBhZ2VyKHBsYWluKHRleHQpLCB1c2VfcGFnZXIpCiAgICAgICAgIGVsaWYgb3MuZW52aXJvbi5nZXQoJ1RFUk0nKSBpbiAoJ2R1bWInLCAnZW1hY3MnKToKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHBsYWluKHRleHQpLCBvcy5lbnZpcm9uWydQQUdFUiddKQorICAgICAgICAgICAgcmV0dXJuIGxhbWJkYSB0ZXh0OiBwaXBlcGFnZXIocGxhaW4odGV4dCksIHVzZV9wYWdlcikKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiBsYW1iZGEgdGV4dDogcGlwZXBhZ2VyKHRleHQsIG9zLmVudmlyb25bJ1BBR0VSJ10pCisgICAgICAgICAgICByZXR1cm4gbGFtYmRhIHRleHQ6IHBpcGVwYWdlcih0ZXh0LCB1c2VfcGFnZXIpCiAgICAgaWYgb3MuZW52aXJvbi5nZXQoJ1RFUk0nKSBpbiAoJ2R1bWInLCAnZW1hY3MnKToKICAgICAgICAgcmV0dXJuIHBsYWlucGFnZXIKICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKQEAgLTE5MDEsMTAgKzE5MTMsMTAgQEAKIAogICAgIGRlZiBpbnRybyhzZWxmKToKICAgICAgICAgc2VsZi5vdXRwdXQud3JpdGUoJycnCi1XZWxjb21lIHRvIFB5dGhvbiAlcydzIGhlbHAgdXRpbGl0eSEKK1dlbGNvbWUgdG8gUHl0aG9uIHswfSdzIGhlbHAgdXRpbGl0eSEKIAogSWYgdGhpcyBpcyB5b3VyIGZpcnN0IHRpbWUgdXNpbmcgUHl0aG9uLCB5b3Ugc2hvdWxkIGRlZmluaXRlbHkgY2hlY2sgb3V0Ci10aGUgdHV0b3JpYWwgb24gdGhlIEludGVybmV0IGF0IGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvJXMvdHV0b3JpYWwvLgordGhlIHR1dG9yaWFsIG9uIHRoZSBJbnRlcm5ldCBhdCBodHRwOi8vZG9jcy5weXRob24ub3JnL3swfS90dXRvcmlhbC8uCiAKIEVudGVyIHRoZSBuYW1lIG9mIGFueSBtb2R1bGUsIGtleXdvcmQsIG9yIHRvcGljIHRvIGdldCBoZWxwIG9uIHdyaXRpbmcKIFB5dGhvbiBwcm9ncmFtcyBhbmQgdXNpbmcgUHl0aG9uIG1vZHVsZXMuICBUbyBxdWl0IHRoaXMgaGVscCB1dGlsaXR5IGFuZApAQCAtMTkxNCw3ICsxOTI2LDcgQEAKICJtb2R1bGVzIiwgImtleXdvcmRzIiwgInN5bWJvbHMiLCBvciAidG9waWNzIi4gIEVhY2ggbW9kdWxlIGFsc28gY29tZXMKIHdpdGggYSBvbmUtbGluZSBzdW1tYXJ5IG9mIHdoYXQgaXQgZG9lczsgdG8gbGlzdCB0aGUgbW9kdWxlcyB3aG9zZSBuYW1lCiBvciBzdW1tYXJ5IGNvbnRhaW4gYSBnaXZlbiBzdHJpbmcgc3VjaCBhcyAic3BhbSIsIHR5cGUgIm1vZHVsZXMgc3BhbSIuCi0nJycgJSB0dXBsZShbc3lzLnZlcnNpb25bOjNdXSoyKSkKKycnJy5mb3JtYXQoJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKSkKIAogICAgIGRlZiBsaXN0KHNlbGYsIGl0ZW1zLCBjb2x1bW5zPTQsIHdpZHRoPTgwKToKICAgICAgICAgaXRlbXMgPSBsaXN0KHNvcnRlZChpdGVtcykpCmRpZmYgLS1naXQgYS9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkgYi9MaWIvcHlkb2NfZGF0YS90b3BpY3MucHkKaW5kZXggZDZmMTM2Ni4uYWFmMmNlNiAxMDA2NDQKLS0tIGEvTGliL3B5ZG9jX2RhdGEvdG9waWNzLnB5CisrKyBiL0xpYi9weWRvY19kYXRhL3RvcGljcy5weQpAQCAtMSw3OSArMSwxMjk0OSBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KLSMgQXV0b2dlbmVyYXRlZCBieSBTcGhpbnggb24gU2F0IEp1biAyNSAxNDowODo0NCAyMDE2Ci10b3BpY3MgPSB7J2Fzc2VydCc6IHUnXG5UaGUgImFzc2VydCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqXG5cbkFzc2VydCBzdGF0ZW1lbnRzIGFyZSBhIGNvbnZlbmllbnQgd2F5IHRvIGluc2VydCBkZWJ1Z2dpbmcgYXNzZXJ0aW9uc1xuaW50byBhIHByb2dyYW06XG5cbiAgIGFzc2VydF9zdG10IDo6PSAiYXNzZXJ0IiBleHByZXNzaW9uIFsiLCIgZXhwcmVzc2lvbl1cblxuVGhlIHNpbXBsZSBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24iLCBpcyBlcXVpdmFsZW50IHRvXG5cbiAgIGlmIF9fZGVidWdfXzpcbiAgICAgICBpZiBub3QgZXhwcmVzc2lvbjogcmFpc2UgQXNzZXJ0aW9uRXJyb3JcblxuVGhlIGV4dGVuZGVkIGZvcm0sICJhc3NlcnQgZXhwcmVzc2lvbjEsIGV4cHJlc3Npb24yIiwgaXMgZXF1aXZhbGVudCB0b1xuXG4gICBpZiBfX2RlYnVnX186XG4gICAgICAgaWYgbm90IGV4cHJlc3Npb24xOiByYWlzZSBBc3NlcnRpb25FcnJvcihleHByZXNzaW9uMilcblxuVGhlc2UgZXF1aXZhbGVuY2VzIGFzc3VtZSB0aGF0ICJfX2RlYnVnX18iIGFuZCAiQXNzZXJ0aW9uRXJyb3IiIHJlZmVyXG50byB0aGUgYnVpbHQtaW4gdmFyaWFibGVzIHdpdGggdGhvc2UgbmFtZXMuICBJbiB0aGUgY3VycmVudFxuaW1wbGVtZW50YXRpb24sIHRoZSBidWlsdC1pbiB2YXJpYWJsZSAiX19kZWJ1Z19fIiBpcyAiVHJ1ZSIgdW5kZXJcbm5vcm1hbCBjaXJjdW1zdGFuY2VzLCAiRmFsc2UiIHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCAoY29tbWFuZFxubGluZSBvcHRpb24gLU8pLiAgVGhlIGN1cnJlbnQgY29kZSBnZW5lcmF0b3IgZW1pdHMgbm8gY29kZSBmb3IgYW5cbmFzc2VydCBzdGF0ZW1lbnQgd2hlbiBvcHRpbWl6YXRpb24gaXMgcmVxdWVzdGVkIGF0IGNvbXBpbGUgdGltZS4gIE5vdGVcbnRoYXQgaXQgaXMgdW5uZWNlc3NhcnkgdG8gaW5jbHVkZSB0aGUgc291cmNlIGNvZGUgZm9yIHRoZSBleHByZXNzaW9uXG50aGF0IGZhaWxlZCBpbiB0aGUgZXJyb3IgbWVzc2FnZTsgaXQgd2lsbCBiZSBkaXNwbGF5ZWQgYXMgcGFydCBvZiB0aGVcbnN0YWNrIHRyYWNlLlxuXG5Bc3NpZ25tZW50cyB0byAiX19kZWJ1Z19fIiBhcmUgaWxsZWdhbC4gIFRoZSB2YWx1ZSBmb3IgdGhlIGJ1aWx0LWluXG52YXJpYWJsZSBpcyBkZXRlcm1pbmVkIHdoZW4gdGhlIGludGVycHJldGVyIHN0YXJ0cy5cbicsCi0gJ2Fzc2lnbm1lbnQnOiB1J1xuQXNzaWdubWVudCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqKipcblxuQXNzaWdubWVudCBzdGF0ZW1lbnRzIGFyZSB1c2VkIHRvIChyZSliaW5kIG5hbWVzIHRvIHZhbHVlcyBhbmQgdG9cbm1vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcblxuICAgYXNzaWdubWVudF9zdG10IDo6PSAodGFyZ2V0X2xpc3QgIj0iKSsgKHN0YXJyZWRfZXhwcmVzc2lvbiB8IHlpZWxkX2V4cHJlc3Npb24pXG4gICB0YXJnZXRfbGlzdCAgICAgOjo9IHRhcmdldCAoIiwiIHRhcmdldCkqIFsiLCJdXG4gICB0YXJnZXQgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbiAgICAgICAgICAgICAgfCAiKCIgdGFyZ2V0X2xpc3QgIikiXG4gICAgICAgICAgICAgIHwgIlsiIFt0YXJnZXRfbGlzdF0gIl0iXG4gICAgICAgICAgICAgIHwgYXR0cmlidXRlcmVmXG4gICAgICAgICAgICAgIHwgc3Vic2NyaXB0aW9uXG4gICAgICAgICAgICAgIHwgc2xpY2luZ1xuICAgICAgICAgICAgICB8ICIqIiB0YXJnZXRcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIGZvclxuKmF0dHJpYnV0ZXJlZiosICpzdWJzY3JpcHRpb24qLCBhbmQgKnNsaWNpbmcqLilcblxuQW4gYXNzaWdubWVudCBzdGF0ZW1lbnQgZXZhbHVhdGVzIHRoZSBleHByZXNzaW9uIGxpc3QgKHJlbWVtYmVyIHRoYXRcbnRoaXMgY2FuIGJlIGEgc2luZ2xlIGV4cHJlc3Npb24gb3IgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCwgdGhlIGxhdHRlclxueWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvIGVhY2ggb2ZcbnRoZSB0YXJnZXQgbGlzdHMsIGZyb20gbGVmdCB0byByaWdodC5cblxuQXNzaWdubWVudCBpcyBkZWZpbmVkIHJlY3Vyc2l2ZWx5IGRlcGVuZGluZyBvbiB0aGUgZm9ybSBvZiB0aGUgdGFyZ2V0XG4obGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiBhdHRyaWJ1dGVcbnJlZmVyZW5jZSwgc3Vic2NyaXB0aW9uIG9yIHNsaWNpbmcpLCB0aGUgbXV0YWJsZSBvYmplY3QgbXVzdFxudWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzIHZhbGlkaXR5LCBhbmRcbm1heSByYWlzZSBhbiBleGNlcHRpb24gaWYgdGhlIGFzc2lnbm1lbnQgaXMgdW5hY2NlcHRhYmxlLiAgVGhlIHJ1bGVzXG5vYnNlcnZlZCBieSB2YXJpb3VzIHR5cGVzIGFuZCB0aGUgZXhjZXB0aW9ucyByYWlzZWQgYXJlIGdpdmVuIHdpdGggdGhlXG5kZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZVxuaGllcmFyY2h5KikuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgdGFyZ2V0IGxpc3QsIG9wdGlvbmFsbHkgZW5jbG9zZWQgaW5cbnBhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cywgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhcyBmb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBlbXB0eTogVGhlIG9iamVjdCBtdXN0IGFsc28gYmUgYW4gZW1wdHlcbiAgaXRlcmFibGUuXG5cbiogSWYgdGhlIHRhcmdldCBsaXN0IGlzIGEgc2luZ2xlIHRhcmdldCBpbiBwYXJlbnRoZXNlczogVGhlIG9iamVjdFxuICBpcyBhc3NpZ25lZCB0byB0aGF0IHRhcmdldC5cblxuKiBJZiB0aGUgdGFyZ2V0IGxpc3QgaXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiB0YXJnZXRzLCBvciBhXG4gIHNpbmdsZSB0YXJnZXQgaW4gc3F1YXJlIGJyYWNrZXRzOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGVcbiAgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldFxuICBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZSBhc3NpZ25lZCwgZnJvbSBsZWZ0IHRvIHJpZ2h0LCB0byB0aGVcbiAgY29ycmVzcG9uZGluZyB0YXJnZXRzLlxuXG4gICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhblxuICAgIGFzdGVyaXNrLCBjYWxsZWQgYSAic3RhcnJlZCIgdGFyZ2V0OiBUaGUgb2JqZWN0IG11c3QgYmUgYW5cbiAgICBpdGVyYWJsZSB3aXRoIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlXG4gICAgdGFyZ2V0IGxpc3QsIG1pbnVzIG9uZS4gIFRoZSBmaXJzdCBpdGVtcyBvZiB0aGUgaXRlcmFibGUgYXJlXG4gICAgYXNzaWduZWQsIGZyb20gbGVmdCB0byByaWdodCwgdG8gdGhlIHRhcmdldHMgYmVmb3JlIHRoZSBzdGFycmVkXG4gICAgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zIG9mIHRoZSBpdGVyYWJsZSBhcmUgYXNzaWduZWQgdG8gdGhlXG4gICAgdGFyZ2V0cyBhZnRlciB0aGUgc3RhcnJlZCB0YXJnZXQuICBBIGxpc3Qgb2YgdGhlIHJlbWFpbmluZyBpdGVtc1xuICAgIGluIHRoZSBpdGVyYWJsZSBpcyB0aGVuIGFzc2lnbmVkIHRvIHRoZSBzdGFycmVkIHRhcmdldCAodGhlIGxpc3RcbiAgICBjYW4gYmUgZW1wdHkpLlxuXG4gICogRWxzZTogVGhlIG9iamVjdCBtdXN0IGJlIGFuIGl0ZXJhYmxlIHdpdGggdGhlIHNhbWUgbnVtYmVyIG9mXG4gICAgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlIHRhcmdldCBsaXN0LCBhbmQgdGhlIGl0ZW1zIGFyZVxuICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nIHRhcmdldHMuXG5cbkFzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSBkZWZpbmVkIGFzXG5mb2xsb3dzLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYW4gaWRlbnRpZmllciAobmFtZSk6XG5cbiAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIG9yICJub25sb2NhbCIgc3RhdGVtZW50XG4gICAgaW4gdGhlIGN1cnJlbnQgY29kZSBibG9jazogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGVcbiAgICBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZS5cblxuICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsXG4gICAgbmFtZXNwYWNlIG9yIHRoZSBvdXRlciBuYW1lc3BhY2UgZGV0ZXJtaW5lZCBieSAibm9ubG9jYWwiLFxuICAgIHJlc3BlY3RpdmVseS5cblxuICBUaGUgbmFtZSBpcyByZWJvdW5kIGlmIGl0IHdhcyBhbHJlYWR5IGJvdW5kLiAgVGhpcyBtYXkgY2F1c2UgdGhlXG4gIHJlZmVyZW5jZSBjb3VudCBmb3IgdGhlIG9iamVjdCBwcmV2aW91c2x5IGJvdW5kIHRvIHRoZSBuYW1lIHRvIHJlYWNoXG4gIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzIGRlc3RydWN0b3IgKGlmIGl0XG4gIGhhcyBvbmUpIHRvIGJlIGNhbGxlZC5cblxuKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGF0dHJpYnV0ZSByZWZlcmVuY2U6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW5cbiAgdGhlIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYW4gb2JqZWN0IHdpdGhcbiAgYXNzaWduYWJsZSBhdHRyaWJ1dGVzOyBpZiB0aGlzIGlzIG5vdCB0aGUgY2FzZSwgIlR5cGVFcnJvciIgaXNcbiAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0b1xuICB0aGUgZ2l2ZW4gYXR0cmlidXRlOyBpZiBpdCBjYW5ub3QgcGVyZm9ybSB0aGUgYXNzaWdubWVudCwgaXQgcmFpc2VzXG4gIGFuIGV4Y2VwdGlvbiAodXN1YWxseSBidXQgbm90IG5lY2Vzc2FyaWx5ICJBdHRyaWJ1dGVFcnJvciIpLlxuXG4gIE5vdGU6IElmIHRoZSBvYmplY3QgaXMgYSBjbGFzcyBpbnN0YW5jZSBhbmQgdGhlIGF0dHJpYnV0ZSByZWZlcmVuY2VcbiAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgZXhwcmVzc2lvbixcbiAgImEueCIgY2FuIGFjY2VzcyBlaXRoZXIgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG9yIChpZiBubyBpbnN0YW5jZVxuICBhdHRyaWJ1dGUgZXhpc3RzKSBhIGNsYXNzIGF0dHJpYnV0ZS4gIFRoZSBMSFMgdGFyZ2V0ICJhLngiIGlzIGFsd2F5c1xuICBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuICBUaHVzLCB0aGVcbiAgdHdvIG9jY3VycmVuY2VzIG9mICJhLngiIGRvIG5vdCBuZWNlc3NhcmlseSByZWZlciB0byB0aGUgc2FtZVxuICBhdHRyaWJ1dGU6IGlmIHRoZSBSSFMgZXhwcmVzc2lvbiByZWZlcnMgdG8gYSBjbGFzcyBhdHRyaWJ1dGUsIHRoZVxuICBMSFMgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBhdHRyaWJ1dGUgYXMgdGhlIHRhcmdldCBvZiB0aGVcbiAgYXNzaWdubWVudDpcblxuICAgICBjbGFzcyBDbHM6XG4gICAgICAgICB4ID0gMyAgICAgICAgICAgICAjIGNsYXNzIHZhcmlhYmxlXG4gICAgIGluc3QgPSBDbHMoKVxuICAgICBpbnN0LnggPSBpbnN0LnggKyAxICAgIyB3cml0ZXMgaW5zdC54IGFzIDQgbGVhdmluZyBDbHMueCBhcyAzXG5cbiAgVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBhcHBseSB0byBkZXNjcmlwdG9yXG4gIGF0dHJpYnV0ZXMsIHN1Y2ggYXMgcHJvcGVydGllcyBjcmVhdGVkIHdpdGggInByb3BlcnR5KCkiLlxuXG4qIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgZWl0aGVyIGEgbXV0YWJsZSBzZXF1ZW5jZVxuICBvYmplY3QgKHN1Y2ggYXMgYSBsaXN0KSBvciBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSkuXG4gIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG5cbiAgSWYgdGhlIHByaW1hcnkgaXMgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdCAoc3VjaCBhcyBhIGxpc3QpLCB0aGVcbiAgc3Vic2NyaXB0IG11c3QgeWllbGQgYW4gaW50ZWdlci4gIElmIGl0IGlzIG5lZ2F0aXZlLCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoIGlzIGFkZGVkIHRvIGl0LiAgVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmVcbiAgaW50ZWdlciBsZXNzIHRoYW4gdGhlIHNlcXVlbmNlXCdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyBhc2tlZFxuICB0byBhc3NpZ24gdGhlIGFzc2lnbmVkIG9iamVjdCB0byBpdHMgaXRlbSB3aXRoIHRoYXQgaW5kZXguICBJZiB0aGVcbiAgaW5kZXggaXMgb3V0IG9mIHJhbmdlLCAiSW5kZXhFcnJvciIgaXMgcmFpc2VkIChhc3NpZ25tZW50IHRvIGFcbiAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cblxuICBJZiB0aGUgcHJpbWFyeSBpcyBhIG1hcHBpbmcgb2JqZWN0IChzdWNoIGFzIGEgZGljdGlvbmFyeSksIHRoZVxuICBzdWJzY3JpcHQgbXVzdCBoYXZlIGEgdHlwZSBjb21wYXRpYmxlIHdpdGggdGhlIG1hcHBpbmdcJ3Mga2V5IHR5cGUsXG4gIGFuZCB0aGUgbWFwcGluZyBpcyB0aGVuIGFza2VkIHRvIGNyZWF0ZSBhIGtleS9kYXR1bSBwYWlyIHdoaWNoIG1hcHNcbiAgdGhlIHN1YnNjcmlwdCB0byB0aGUgYXNzaWduZWQgb2JqZWN0LiAgVGhpcyBjYW4gZWl0aGVyIHJlcGxhY2UgYW5cbiAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhIG5ld1xuICBrZXkvdmFsdWUgcGFpciAoaWYgbm8ga2V5IHdpdGggdGhlIHNhbWUgdmFsdWUgZXhpc3RlZCkuXG5cbiAgRm9yIHVzZXItZGVmaW5lZCBvYmplY3RzLCB0aGUgIl9fc2V0aXRlbV9fKCkiIG1ldGhvZCBpcyBjYWxsZWQgd2l0aFxuICBhcHByb3ByaWF0ZSBhcmd1bWVudHMuXG5cbiogSWYgdGhlIHRhcmdldCBpcyBhIHNsaWNpbmc6IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gdGhlXG4gIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlIG9iamVjdFxuICAoc3VjaCBhcyBhIGxpc3QpLiAgVGhlIGFzc2lnbmVkIG9iamVjdCBzaG91bGQgYmUgYSBzZXF1ZW5jZSBvYmplY3RcbiAgb2YgdGhlIHNhbWUgdHlwZS4gIE5leHQsIHRoZSBsb3dlciBhbmQgdXBwZXIgYm91bmQgZXhwcmVzc2lvbnMgYXJlXG4gIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgdGhlXG4gIHNlcXVlbmNlXCdzIGxlbmd0aC4gIFRoZSBib3VuZHMgc2hvdWxkIGV2YWx1YXRlIHRvIGludGVnZXJzLiBJZlxuICBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZVwncyBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGVcbiAgcmVzdWx0aW5nIGJvdW5kcyBhcmUgY2xpcHBlZCB0byBsaWUgYmV0d2VlbiB6ZXJvIGFuZCB0aGUgc2VxdWVuY2VcJ3NcbiAgbGVuZ3RoLCBpbmNsdXNpdmUuICBGaW5hbGx5LCB0aGUgc2VxdWVuY2Ugb2JqZWN0IGlzIGFza2VkIHRvIHJlcGxhY2VcbiAgdGhlIHNsaWNlIHdpdGggdGhlIGl0ZW1zIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZS4gIFRoZSBsZW5ndGggb2ZcbiAgdGhlIHNsaWNlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBhc3NpZ25lZCBzZXF1ZW5jZSxcbiAgdGh1cyBjaGFuZ2luZyB0aGUgbGVuZ3RoIG9mIHRoZSB0YXJnZXQgc2VxdWVuY2UsIGlmIHRoZSB0YXJnZXRcbiAgc2VxdWVuY2UgYWxsb3dzIGl0LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uLCB0aGVcbnN5bnRheCBmb3IgdGFyZ2V0cyBpcyB0YWtlbiB0byBiZSB0aGUgc2FtZSBhcyBmb3IgZXhwcmVzc2lvbnMsIGFuZFxuaW52YWxpZCBzeW50YXggaXMgcmVqZWN0ZWQgZHVyaW5nIHRoZSBjb2RlIGdlbmVyYXRpb24gcGhhc2UsIGNhdXNpbmdcbmxlc3MgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMuXG5cbkFsdGhvdWdoIHRoZSBkZWZpbml0aW9uIG9mIGFzc2lnbm1lbnQgaW1wbGllcyB0aGF0IG92ZXJsYXBzIGJldHdlZW5cbnRoZSBsZWZ0LWhhbmQgc2lkZSBhbmQgdGhlIHJpZ2h0LWhhbmQgc2lkZSBhcmUgXCdzaW11bHRhbmVvdXNcJyAoZm9yXG5leGFtcGxlICJhLCBiID0gYiwgYSIgc3dhcHMgdHdvIHZhcmlhYmxlcyksIG92ZXJsYXBzICp3aXRoaW4qIHRoZVxuY29sbGVjdGlvbiBvZiBhc3NpZ25lZC10byB2YXJpYWJsZXMgb2NjdXIgbGVmdC10by1yaWdodCwgc29tZXRpbWVzXG5yZXN1bHRpbmcgaW4gY29uZnVzaW9uLiAgRm9yIGluc3RhbmNlLCB0aGUgZm9sbG93aW5nIHByb2dyYW0gcHJpbnRzXG4iWzAsIDJdIjpcblxuICAgeCA9IFswLCAxXVxuICAgaSA9IDBcbiAgIGksIHhbaV0gPSAxLCAyICAgICAgICAgIyBpIGlzIHVwZGF0ZWQsIHRoZW4geFtpXSBpcyB1cGRhdGVkXG4gICBwcmludCh4KVxuXG5TZWUgYWxzbzogKipQRVAgMzEzMioqIC0gRXh0ZW5kZWQgSXRlcmFibGUgVW5wYWNraW5nXG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAiKnRhcmdldCIgZmVhdHVyZS5cblxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgc3RhdGVtZW50LCBvZiBhXG5iaW5hcnkgb3BlcmF0aW9uIGFuZCBhbiBhc3NpZ25tZW50IHN0YXRlbWVudDpcblxuICAgYXVnbWVudGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0IGF1Z29wIChleHByZXNzaW9uX2xpc3QgfCB5aWVsZF9leHByZXNzaW9uKVxuICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8IHN1YnNjcmlwdGlvbiB8IHNsaWNpbmdcbiAgIGF1Z29wICAgICAgICAgICAgICAgICAgICAgOjo9ICIrPSIgfCAiLT0iIHwgIio9IiB8ICJAPSIgfCAiLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbiAgICAgICAgICAgICB8ICI+Pj0iIHwgIjw8PSIgfCAiJj0iIHwgIl49IiB8ICJ8PSJcblxuKFNlZSBzZWN0aW9uICpQcmltYXJpZXMqIGZvciB0aGUgc3ludGF4IGRlZmluaXRpb25zIG9mIHRoZSBsYXN0IHRocmVlXG5zeW1ib2xzLilcblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXZhbHVhdGVzIHRoZSB0YXJnZXQgKHdoaWNoLCB1bmxpa2Ugbm9ybWFsXG5hc3NpZ25tZW50IHN0YXRlbWVudHMsIGNhbm5vdCBiZSBhbiB1bnBhY2tpbmcpIGFuZCB0aGUgZXhwcmVzc2lvblxubGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgYXNzaWdubWVudFxub24gdGhlIHR3byBvcGVyYW5kcywgYW5kIGFzc2lnbnMgdGhlIHJlc3VsdCB0byB0aGUgb3JpZ2luYWwgdGFyZ2V0LlxuVGhlIHRhcmdldCBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLlxuXG5BbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlIHJld3JpdHRlbiBhc1xuInggPSB4ICsgMSIgdG8gYWNoaWV2ZSBhIHNpbWlsYXIsIGJ1dCBub3QgZXhhY3RseSBlcXVhbCBlZmZlY3QuIEluIHRoZVxuYXVnbWVudGVkIHZlcnNpb24sICJ4IiBpcyBvbmx5IGV2YWx1YXRlZCBvbmNlLiBBbHNvLCB3aGVuIHBvc3NpYmxlLFxudGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCByYXRoZXIgdGhhblxuY3JlYXRpbmcgYSBuZXcgb2JqZWN0IGFuZCBhc3NpZ25pbmcgdGhhdCB0byB0aGUgdGFyZ2V0LCB0aGUgb2xkIG9iamVjdFxuaXMgbW9kaWZpZWQgaW5zdGVhZC5cblxuVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSBsZWZ0LVxuaGFuZCBzaWRlICpiZWZvcmUqIGV2YWx1YXRpbmcgdGhlIHJpZ2h0LWhhbmQgc2lkZS4gIEZvciBleGFtcGxlLCAiYVtpXVxuKz0gZih4KSIgZmlyc3QgbG9va3MtdXAgImFbaV0iLCB0aGVuIGl0IGV2YWx1YXRlcyAiZih4KSIgYW5kIHBlcmZvcm1zXG50aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gImFbaV0iLlxuXG5XaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyBpbiBhXG5zaW5nbGUgc3RhdGVtZW50LCB0aGUgYXNzaWdubWVudCBkb25lIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50XG5zdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gU2ltaWxhcmx5LFxud2l0aCB0aGUgZXhjZXB0aW9uIG9mIHRoZSBwb3NzaWJsZSAqaW4tcGxhY2UqIGJlaGF2aW9yLCB0aGUgYmluYXJ5XG5vcGVyYXRpb24gcGVyZm9ybWVkIGJ5IGF1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBzYW1lIGFzIHRoZSBub3JtYWxcbmJpbmFyeSBvcGVyYXRpb25zLlxuXG5Gb3IgdGFyZ2V0cyB3aGljaCBhcmUgYXR0cmlidXRlIHJlZmVyZW5jZXMsIHRoZSBzYW1lICpjYXZlYXQgYWJvdXRcbmNsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzKiBhcHBsaWVzIGFzIGZvciByZWd1bGFyIGFzc2lnbm1lbnRzLlxuJywKLSAnYXRvbS1pZGVudGlmaWVycyc6IHUnXG5JZGVudGlmaWVycyAoTmFtZXMpXG4qKioqKioqKioqKioqKioqKioqXG5cbkFuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlIHNlY3Rpb25cbipJZGVudGlmaWVycyBhbmQga2V5d29yZHMqIGZvciBsZXhpY2FsIGRlZmluaXRpb24gYW5kIHNlY3Rpb24gKk5hbWluZ1xuYW5kIGJpbmRpbmcqIGZvciBkb2N1bWVudGF0aW9uIG9mIG5hbWluZyBhbmQgYmluZGluZy5cblxuV2hlbiB0aGUgbmFtZSBpcyBib3VuZCB0byBhbiBvYmplY3QsIGV2YWx1YXRpb24gb2YgdGhlIGF0b20geWllbGRzXG50aGF0IG9iamVjdC4gV2hlbiBhIG5hbWUgaXMgbm90IGJvdW5kLCBhbiBhdHRlbXB0IHRvIGV2YWx1YXRlIGl0XG5yYWlzZXMgYSAiTmFtZUVycm9yIiBleGNlcHRpb24uXG5cbioqUHJpdmF0ZSBuYW1lIG1hbmdsaW5nOioqIFdoZW4gYW4gaWRlbnRpZmllciB0aGF0IHRleHR1YWxseSBvY2N1cnMgaW5cbmEgY2xhc3MgZGVmaW5pdGlvbiBiZWdpbnMgd2l0aCB0d28gb3IgbW9yZSB1bmRlcnNjb3JlIGNoYXJhY3RlcnMgYW5kXG5kb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzIGNvbnNpZGVyZWQgYSAqcHJpdmF0ZVxubmFtZSogb2YgdGhhdCBjbGFzcy4gUHJpdmF0ZSBuYW1lcyBhcmUgdHJhbnNmb3JtZWQgdG8gYSBsb25nZXIgZm9ybVxuYmVmb3JlIGNvZGUgaXMgZ2VuZXJhdGVkIGZvciB0aGVtLiAgVGhlIHRyYW5zZm9ybWF0aW9uIGluc2VydHMgdGhlXG5jbGFzcyBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCBhbmQgYSBzaW5nbGUgdW5kZXJzY29yZVxuaW5zZXJ0ZWQsIGluIGZyb250IG9mIHRoZSBuYW1lLiAgRm9yIGV4YW1wbGUsIHRoZSBpZGVudGlmaWVyICJfX3NwYW0iXG5vY2N1cnJpbmcgaW4gYSBjbGFzcyBuYW1lZCAiSGFtIiB3aWxsIGJlIHRyYW5zZm9ybWVkIHRvICJfSGFtX19zcGFtIi5cblRoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5bnRhY3RpY2FsIGNvbnRleHQgaW4gd2hpY2hcbnRoZSBpZGVudGlmaWVyIGlzIHVzZWQuICBJZiB0aGUgdHJhbnNmb3JtZWQgbmFtZSBpcyBleHRyZW1lbHkgbG9uZ1xuKGxvbmdlciB0aGFuIDI1NSBjaGFyYWN0ZXJzKSwgaW1wbGVtZW50YXRpb24gZGVmaW5lZCB0cnVuY2F0aW9uIG1heVxuaGFwcGVuLiBJZiB0aGUgY2xhc3MgbmFtZSBjb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLCBub1xudHJhbnNmb3JtYXRpb24gaXMgZG9uZS5cbicsCi0gJ2F0b20tbGl0ZXJhbHMnOiB1IlxuTGl0ZXJhbHNcbioqKioqKioqXG5cblB5dGhvbiBzdXBwb3J0cyBzdHJpbmcgYW5kIGJ5dGVzIGxpdGVyYWxzIGFuZCB2YXJpb3VzIG51bWVyaWNcbmxpdGVyYWxzOlxuXG4gICBsaXRlcmFsIDo6PSBzdHJpbmdsaXRlcmFsIHwgYnl0ZXNsaXRlcmFsXG4gICAgICAgICAgICAgICB8IGludGVnZXIgfCBmbG9hdG51bWJlciB8IGltYWdudW1iZXJcblxuRXZhbHVhdGlvbiBvZiBhIGxpdGVyYWwgeWllbGRzIGFuIG9iamVjdCBvZiB0aGUgZ2l2ZW4gdHlwZSAoc3RyaW5nLFxuYnl0ZXMsIGludGVnZXIsIGZsb2F0aW5nIHBvaW50IG51bWJlciwgY29tcGxleCBudW1iZXIpIHdpdGggdGhlIGdpdmVuXG52YWx1ZS4gIFRoZSB2YWx1ZSBtYXkgYmUgYXBwcm94aW1hdGVkIGluIHRoZSBjYXNlIG9mIGZsb2F0aW5nIHBvaW50XG5hbmQgaW1hZ2luYXJ5IChjb21wbGV4KSBsaXRlcmFscy4gIFNlZSBzZWN0aW9uICpMaXRlcmFscyogZm9yIGRldGFpbHMuXG5cbkFsbCBsaXRlcmFscyBjb3JyZXNwb25kIHRvIGltbXV0YWJsZSBkYXRhIHR5cGVzLCBhbmQgaGVuY2UgdGhlXG5vYmplY3QncyBpZGVudGl0eSBpcyBsZXNzIGltcG9ydGFudCB0aGFuIGl0cyB2YWx1ZS4gIE11bHRpcGxlXG5ldmFsdWF0aW9ucyBvZiBsaXRlcmFscyB3aXRoIHRoZSBzYW1lIHZhbHVlIChlaXRoZXIgdGhlIHNhbWVcbm9jY3VycmVuY2UgaW4gdGhlIHByb2dyYW0gdGV4dCBvciBhIGRpZmZlcmVudCBvY2N1cnJlbmNlKSBtYXkgb2J0YWluXG50aGUgc2FtZSBvYmplY3Qgb3IgYSBkaWZmZXJlbnQgb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUuXG4iLAotICdhdHRyaWJ1dGUtYWNjZXNzJzogdSdcbkN1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgbWVhbmluZyBvZlxuYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAieC5uYW1lIikgZm9yXG5jbGFzcyBpbnN0YW5jZXMuXG5cbm9iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlIGF0dHJpYnV0ZSBpbiB0aGVcbiAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyBpdCBmb3VuZFxuICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLiBUaGlzXG4gICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW5cbiAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuXG4gICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgbWVjaGFuaXNtLFxuICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCBhc3ltbWV0cnlcbiAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzIGRvbmUgYm90aCBmb3JcbiAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiIHdvdWxkIGhhdmVcbiAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlIHRoYXQgYXRcbiAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sIGJ5IG5vdFxuICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IChidXRcbiAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSBnZXQgdG90YWxcbiAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuXG5vYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuXG4gICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgZm9yXG4gICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICJfX2dldGF0dHJfXygpIixcbiAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbiAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgbWV0aG9kXG4gICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlIHJlY3Vyc2lvbiBpblxuICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlIGJhc2UgY2xhc3NcbiAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0IG5lZWRzLCBmb3JcbiAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG5cbiAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbFxuICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgbGFuZ3VhZ2Ugc3ludGF4XG4gICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlICpTcGVjaWFsIG1ldGhvZCBsb29rdXAqLlxuXG5vYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBhc3NpZ25tZW50IGlzIGF0dGVtcHRlZC4gIFRoaXMgaXMgY2FsbGVkXG4gICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSBpbiB0aGVcbiAgIGluc3RhbmNlIGRpY3Rpb25hcnkpLiAqbmFtZSogaXMgdGhlIGF0dHJpYnV0ZSBuYW1lLCAqdmFsdWUqIGlzIHRoZVxuICAgdmFsdWUgdG8gYmUgYXNzaWduZWQgdG8gaXQuXG5cbiAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBpdFxuICAgc2hvdWxkIGNhbGwgdGhlIGJhc2UgY2xhc3MgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSwgZm9yIGV4YW1wbGUsXG4gICAib2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKSIuXG5cbm9iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuXG4gICBMaWtlICJfX3NldGF0dHJfXygpIiBidXQgZm9yIGF0dHJpYnV0ZSBkZWxldGlvbiBpbnN0ZWFkIG9mXG4gICBhc3NpZ25tZW50LiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBpZiAiZGVsIG9iai5uYW1lIiBpc1xuICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cblxub2JqZWN0Ll9fZGlyX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gImRpcigpIiBpcyBjYWxsZWQgb24gdGhlIG9iamVjdC4gQSBzZXF1ZW5jZSBtdXN0IGJlXG4gICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSBsaXN0IGFuZFxuICAgc29ydHMgaXQuXG5cblxuSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzXG49PT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIGZvbGxvd2luZyBtZXRob2RzIG9ubHkgYXBwbHkgd2hlbiBhbiBpbnN0YW5jZSBvZiB0aGUgY2xhc3NcbmNvbnRhaW5pbmcgdGhlIG1ldGhvZCAoYSBzby1jYWxsZWQgKmRlc2NyaXB0b3IqIGNsYXNzKSBhcHBlYXJzIGluIGFuXG4qb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgb3duZXJcJ3MgY2xhc3NcbmRpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgcGFyZW50cykuICBJbiB0aGVcbmV4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgd2hvc2UgbmFtZSBpc1xudGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cblxub2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuXG4gICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyBhdHRyaWJ1dGVcbiAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgYXR0cmlidXRlXG4gICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICppbnN0YW5jZSogaXMgdGhlXG4gICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICJOb25lIiB3aGVuXG4gICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzIG1ldGhvZCBzaG91bGRcbiAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gIkF0dHJpYnV0ZUVycm9yIlxuICAgZXhjZXB0aW9uLlxuXG5vYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZSBvd25lclxuICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG5cbm9iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiBvZiB0aGVcbiAgIG93bmVyIGNsYXNzLlxuXG5UaGUgYXR0cmlidXRlICJfX29iamNsYXNzX18iIGlzIGludGVycHJldGVkIGJ5IHRoZSAiaW5zcGVjdCIgbW9kdWxlIGFzXG5zcGVjaWZ5aW5nIHRoZSBjbGFzcyB3aGVyZSB0aGlzIG9iamVjdCB3YXMgZGVmaW5lZCAoc2V0dGluZyB0aGlzXG5hcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mIGR5bmFtaWMgY2xhc3NcbmF0dHJpYnV0ZXMpLiBGb3IgY2FsbGFibGVzLCBpdCBtYXkgaW5kaWNhdGUgdGhhdCBhbiBpbnN0YW5jZSBvZiB0aGVcbmdpdmVuIHR5cGUgKG9yIGEgc3ViY2xhc3MpIGlzIGV4cGVjdGVkIG9yIHJlcXVpcmVkIGFzIHRoZSBmaXJzdFxucG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzIGF0dHJpYnV0ZSBmb3JcbnVuYm91bmQgbWV0aG9kcyB0aGF0IGFyZSBpbXBsZW1lbnRlZCBpbiBDKS5cblxuXG5JbnZva2luZyBEZXNjcmlwdG9yc1xuPT09PT09PT09PT09PT09PT09PT1cblxuSW4gZ2VuZXJhbCwgYSBkZXNjcmlwdG9yIGlzIGFuIG9iamVjdCBhdHRyaWJ1dGUgd2l0aCAiYmluZGluZ1xuYmVoYXZpb3IiLCBvbmUgd2hvc2UgYXR0cmlidXRlIGFjY2VzcyBoYXMgYmVlbiBvdmVycmlkZGVuIGJ5IG1ldGhvZHNcbmluIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCBhbmRcbiJfX2RlbGV0ZV9fKCkiLiBJZiBhbnkgb2YgdGhvc2UgbWV0aG9kcyBhcmUgZGVmaW5lZCBmb3IgYW4gb2JqZWN0LCBpdFxuaXMgc2FpZCB0byBiZSBhIGRlc2NyaXB0b3IuXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgc2V0LCBvciBkZWxldGVcbnRoZSBhdHRyaWJ1dGUgZnJvbSBhbiBvYmplY3RcJ3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiYS54IiBoYXMgYVxubG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSBjbGFzc2VzIG9mXG4idHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuXG5Ib3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgdGhlXG5kZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBhbmRcbmludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluIHRoZVxucHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlIGRlZmluZWQgYW5kXG5ob3cgdGhleSB3ZXJlIGNhbGxlZC5cblxuVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAiYS54Ii4gSG93XG50aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG5cbkRpcmVjdCBDYWxsXG4gICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlIGRpcmVjdGx5XG4gICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuXG5JbnN0YW5jZSBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgaW50byB0aGVcbiAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cblxuQ2xhc3MgQmluZGluZ1xuICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBjYWxsOlxuICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuXG5TdXBlciBCaW5kaW5nXG4gICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAic3VwZXIoQixcbiAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgY2xhc3MgIkEiXG4gICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3Igd2l0aCB0aGVcbiAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuXG5Gb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBkZXBlbmRzXG5vbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yIGNhbiBkZWZpbmVcbmFueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbmRvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSB3aWxsIHJldHVyblxudGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgb2JqZWN0XCdzXG5pbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSWYgdGhlIGRlc2NyaXB0b3IgZGVmaW5lcyAiX19zZXRfXygpIiBhbmQvb3JcbiJfX2RlbGV0ZV9fKCkiLCBpdCBpcyBhIGRhdGEgZGVzY3JpcHRvcjsgaWYgaXQgZGVmaW5lcyBuZWl0aGVyLCBpdCBpc1xuYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgZGVmaW5lIGJvdGhcbiJfX2dldF9fKCkiIGFuZCAiX19zZXRfXygpIiwgd2hpbGUgbm9uLWRhdGEgZGVzY3JpcHRvcnMgaGF2ZSBqdXN0IHRoZVxuIl9fZ2V0X18oKSIgbWV0aG9kLiAgRGF0YSBkZXNjcmlwdG9ycyB3aXRoICJfX3NldF9fKCkiIGFuZCAiX19nZXRfXygpIlxuZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgZGljdGlvbmFyeS4gIEluXG5jb250cmFzdCwgbm9uLWRhdGEgZGVzY3JpcHRvcnMgY2FuIGJlIG92ZXJyaWRkZW4gYnkgaW5zdGFuY2VzLlxuXG5QeXRob24gbWV0aG9kcyAoaW5jbHVkaW5nICJzdGF0aWNtZXRob2QoKSIgYW5kICJjbGFzc21ldGhvZCgpIikgYXJlXG5pbXBsZW1lbnRlZCBhcyBub24tZGF0YSBkZXNjcmlwdG9ycy4gIEFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2FuXG5yZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgaW5zdGFuY2VzIHRvXG5hY3F1aXJlIGJlaGF2aW9ycyB0aGF0IGRpZmZlciBmcm9tIG90aGVyIGluc3RhbmNlcyBvZiB0aGUgc2FtZSBjbGFzcy5cblxuVGhlICJwcm9wZXJ0eSgpIiBmdW5jdGlvbiBpcyBpbXBsZW1lbnRlZCBhcyBhIGRhdGEgZGVzY3JpcHRvci5cbkFjY29yZGluZ2x5LCBpbnN0YW5jZXMgY2Fubm90IG92ZXJyaWRlIHRoZSBiZWhhdmlvciBvZiBhIHByb3BlcnR5LlxuXG5cbl9fc2xvdHNfX1xuPT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGluc3RhbmNlcyBvZiBjbGFzc2VzIGhhdmUgYSBkaWN0aW9uYXJ5IGZvciBhdHRyaWJ1dGVcbnN0b3JhZ2UuICBUaGlzIHdhc3RlcyBzcGFjZSBmb3Igb2JqZWN0cyBoYXZpbmcgdmVyeSBmZXcgaW5zdGFuY2VcbnZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gY3JlYXRpbmcgbGFyZ2Vcbm51bWJlcnMgb2YgaW5zdGFuY2VzLlxuXG5UaGUgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbiBieSBkZWZpbmluZyAqX19zbG90c19fKiBpbiBhIGNsYXNzXG5kZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSBvZiBpbnN0YW5jZVxudmFyaWFibGVzIGFuZCByZXNlcnZlcyBqdXN0IGVub3VnaCBzcGFjZSBpbiBlYWNoIGluc3RhbmNlIHRvIGhvbGQgYVxudmFsdWUgZm9yIGVhY2ggdmFyaWFibGUuICBTcGFjZSBpcyBzYXZlZCBiZWNhdXNlICpfX2RpY3RfXyogaXMgbm90XG5jcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuXG5vYmplY3QuX19zbG90c19fXG5cbiAgIFRoaXMgY2xhc3MgdmFyaWFibGUgY2FuIGJlIGFzc2lnbmVkIGEgc3RyaW5nLCBpdGVyYWJsZSwgb3Igc2VxdWVuY2VcbiAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICpfX3Nsb3RzX18qXG4gICByZXNlcnZlcyBzcGFjZSBmb3IgdGhlIGRlY2xhcmVkIHZhcmlhYmxlcyBhbmQgcHJldmVudHMgdGhlXG4gICBhdXRvbWF0aWMgY3JlYXRpb24gb2YgKl9fZGljdF9fKiBhbmQgKl9fd2Vha3JlZl9fKiBmb3IgZWFjaFxuICAgaW5zdGFuY2UuXG5cblxuTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgKl9fZGljdF9fKlxuICBhdHRyaWJ1dGUgb2YgdGhhdCBjbGFzcyB3aWxsIGFsd2F5cyBiZSBhY2Nlc3NpYmxlLCBzbyBhICpfX3Nsb3RzX18qXG4gIGRlZmluaXRpb24gaW4gdGhlIHN1YmNsYXNzIGlzIG1lYW5pbmdsZXNzLlxuXG4qIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlIGFzc2lnbmVkIG5ld1xuICB2YXJpYWJsZXMgbm90IGxpc3RlZCBpbiB0aGUgKl9fc2xvdHNfXyogZGVmaW5pdGlvbi4gIEF0dGVtcHRzIHRvXG4gIGFzc2lnbiB0byBhbiB1bmxpc3RlZCB2YXJpYWJsZSBuYW1lIHJhaXNlcyAiQXR0cmlidXRlRXJyb3IiLiBJZlxuICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuIGFkZFxuICAiXCdfX2RpY3RfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsIGNsYXNzZXNcbiAgZGVmaW5pbmcgKl9fc2xvdHNfXyogZG8gbm90IHN1cHBvcnQgd2VhayByZWZlcmVuY2VzIHRvIGl0c1xuICBpbnN0YW5jZXMuIElmIHdlYWsgcmVmZXJlbmNlIHN1cHBvcnQgaXMgbmVlZGVkLCB0aGVuIGFkZFxuICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgKl9fc2xvdHNfXypcbiAgZGVjbGFyYXRpb24uXG5cbiogKl9fc2xvdHNfXyogYXJlIGltcGxlbWVudGVkIGF0IHRoZSBjbGFzcyBsZXZlbCBieSBjcmVhdGluZ1xuICBkZXNjcmlwdG9ycyAoKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyopIGZvciBlYWNoIHZhcmlhYmxlIG5hbWUuICBBc1xuICBhIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yXG4gIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSBjbGFzc1xuICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG5cbiogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlIGNsYXNzXG4gIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAqX19kaWN0X18qXG4gIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgY29udGFpbiBuYW1lc1xuICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cblxuKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsIHRoZVxuICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgaW5hY2Nlc3NpYmxlXG4gIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSBiYXNlIGNsYXNzKS5cbiAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSBmdXR1cmUsIGFcbiAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cblxuKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgZnJvbVxuICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiIGFuZCAidHVwbGUiLlxuXG4qIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gTWFwcGluZ3NcbiAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nIG1heSBiZVxuICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG5cbiogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSBzYW1lXG4gICpfX3Nsb3RzX18qLlxuJywKLSAnYXR0cmlidXRlLXJlZmVyZW5jZXMnOiB1J1xuQXR0cmlidXRlIHJlZmVyZW5jZXNcbioqKioqKioqKioqKioqKioqKioqXG5cbkFuIGF0dHJpYnV0ZSByZWZlcmVuY2UgaXMgYSBwcmltYXJ5IGZvbGxvd2VkIGJ5IGEgcGVyaW9kIGFuZCBhIG5hbWU6XG5cbiAgIGF0dHJpYnV0ZXJlZiA6Oj0gcHJpbWFyeSAiLiIgaWRlbnRpZmllclxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgdGhhdCBzdXBwb3J0c1xuYXR0cmlidXRlIHJlZmVyZW5jZXMsIHdoaWNoIG1vc3Qgb2JqZWN0cyBkby4gIFRoaXMgb2JqZWN0IGlzIHRoZW5cbmFza2VkIHRvIHByb2R1Y2UgdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzIHRoZSBpZGVudGlmaWVyLiAgVGhpc1xucHJvZHVjdGlvbiBjYW4gYmUgY3VzdG9taXplZCBieSBvdmVycmlkaW5nIHRoZSAiX19nZXRhdHRyX18oKSIgbWV0aG9kLlxuSWYgdGhpcyBhdHRyaWJ1dGUgaXMgbm90IGF2YWlsYWJsZSwgdGhlIGV4Y2VwdGlvbiAiQXR0cmlidXRlRXJyb3IiIGlzXG5yYWlzZWQuICBPdGhlcndpc2UsIHRoZSB0eXBlIGFuZCB2YWx1ZSBvZiB0aGUgb2JqZWN0IHByb2R1Y2VkIGlzXG5kZXRlcm1pbmVkIGJ5IHRoZSBvYmplY3QuICBNdWx0aXBsZSBldmFsdWF0aW9ucyBvZiB0aGUgc2FtZSBhdHRyaWJ1dGVcbnJlZmVyZW5jZSBtYXkgeWllbGQgZGlmZmVyZW50IG9iamVjdHMuXG4nLAotICdhdWdhc3NpZ24nOiB1J1xuQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgb2YgYVxuYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG5cbiAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbiAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCBzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4gICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4gICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG5cbihTZWUgc2VjdGlvbiAqUHJpbWFyaWVzKiBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCB0aHJlZVxuc3ltYm9scy4pXG5cbkFuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV2YWx1YXRlcyB0aGUgdGFyZ2V0ICh3aGljaCwgdW5saWtlIG5vcm1hbFxuYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlIGV4cHJlc3Npb25cbmxpc3QsIHBlcmZvcm1zIHRoZSBiaW5hcnkgb3BlcmF0aW9uIHNwZWNpZmljIHRvIHRoZSB0eXBlIG9mIGFzc2lnbm1lbnRcbm9uIHRoZSB0d28gb3BlcmFuZHMsIGFuZCBhc3NpZ25zIHRoZSByZXN1bHQgdG8gdGhlIG9yaWdpbmFsIHRhcmdldC5cblRoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cblxuQW4gYXVnbWVudGVkIGFzc2lnbm1lbnQgZXhwcmVzc2lvbiBsaWtlICJ4ICs9IDEiIGNhbiBiZSByZXdyaXR0ZW4gYXNcbiJ4ID0geCArIDEiIHRvIGFjaGlldmUgYSBzaW1pbGFyLCBidXQgbm90IGV4YWN0bHkgZXF1YWwgZWZmZWN0LiBJbiB0aGVcbmF1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiBwb3NzaWJsZSxcbnRoZSBhY3R1YWwgb3BlcmF0aW9uIGlzIHBlcmZvcm1lZCAqaW4tcGxhY2UqLCBtZWFuaW5nIHRoYXQgcmF0aGVyIHRoYW5cbmNyZWF0aW5nIGEgbmV3IG9iamVjdCBhbmQgYXNzaWduaW5nIHRoYXQgdG8gdGhlIHRhcmdldCwgdGhlIG9sZCBvYmplY3RcbmlzIG1vZGlmaWVkIGluc3RlYWQuXG5cblVubGlrZSBub3JtYWwgYXNzaWdubWVudHMsIGF1Z21lbnRlZCBhc3NpZ25tZW50cyBldmFsdWF0ZSB0aGUgbGVmdC1cbmhhbmQgc2lkZSAqYmVmb3JlKiBldmFsdWF0aW5nIHRoZSByaWdodC1oYW5kIHNpZGUuICBGb3IgZXhhbXBsZSwgImFbaV1cbis9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCBwZXJmb3Jtc1xudGhlIGFkZGl0aW9uLCBhbmQgbGFzdGx5LCBpdCB3cml0ZXMgdGhlIHJlc3VsdCBiYWNrIHRvICJhW2ldIi5cblxuV2l0aCB0aGUgZXhjZXB0aW9uIG9mIGFzc2lnbmluZyB0byB0dXBsZXMgYW5kIG11bHRpcGxlIHRhcmdldHMgaW4gYVxuc2luZ2xlIHN0YXRlbWVudCwgdGhlIGFzc2lnbm1lbnQgZG9uZSBieSBhdWdtZW50ZWQgYXNzaWdubWVudFxuc3RhdGVtZW50cyBpcyBoYW5kbGVkIHRoZSBzYW1lIHdheSBhcyBub3JtYWwgYXNzaWdubWVudHMuIFNpbWlsYXJseSxcbndpdGggdGhlIGV4Y2VwdGlvbiBvZiB0aGUgcG9zc2libGUgKmluLXBsYWNlKiBiZWhhdmlvciwgdGhlIGJpbmFyeVxub3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgbm9ybWFsXG5iaW5hcnkgb3BlcmF0aW9ucy5cblxuRm9yIHRhcmdldHMgd2hpY2ggYXJlIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCB0aGUgc2FtZSAqY2F2ZWF0IGFib3V0XG5jbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyogYXBwbGllcyBhcyBmb3IgcmVndWxhciBhc3NpZ25tZW50cy5cbicsCi0gJ2JpbmFyeSc6IHUnXG5CaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBiaW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zIGhhdmUgdGhlIGNvbnZlbnRpb25hbCBwcmlvcml0eVxubGV2ZWxzLiAgTm90ZSB0aGF0IHNvbWUgb2YgdGhlc2Ugb3BlcmF0aW9ucyBhbHNvIGFwcGx5IHRvIGNlcnRhaW4gbm9uLVxubnVtZXJpYyB0eXBlcy4gIEFwYXJ0IGZyb20gdGhlIHBvd2VyIG9wZXJhdG9yLCB0aGVyZSBhcmUgb25seSB0d29cbmxldmVscywgb25lIGZvciBtdWx0aXBsaWNhdGl2ZSBvcGVyYXRvcnMgYW5kIG9uZSBmb3IgYWRkaXRpdmVcbm9wZXJhdG9yczpcblxuICAgbV9leHByIDo6PSB1X2V4cHIgfCBtX2V4cHIgIioiIHVfZXhwciB8IG1fZXhwciAiQCIgbV9leHByIHxcbiAgICAgICAgICAgICAgbV9leHByICIvLyIgdV9leHByfCBtX2V4cHIgIi8iIHVfZXhwciB8XG4gICAgICAgICAgICAgIG1fZXhwciAiJSIgdV9leHByXG4gICBhX2V4cHIgOjo9IG1fZXhwciB8IGFfZXhwciAiKyIgbV9leHByIHwgYV9leHByICItIiBtX2V4cHJcblxuVGhlICIqIiAobXVsdGlwbGljYXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcHJvZHVjdCBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIGFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMsIG9yIG9uZSBhcmd1bWVudCBtdXN0IGJlIGFuXG5pbnRlZ2VyIGFuZCB0aGUgb3RoZXIgbXVzdCBiZSBhIHNlcXVlbmNlLiBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZVxubnVtYmVycyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUgYW5kIHRoZW4gbXVsdGlwbGllZCB0b2dldGhlci5cbkluIHRoZSBsYXR0ZXIgY2FzZSwgc2VxdWVuY2UgcmVwZXRpdGlvbiBpcyBwZXJmb3JtZWQ7IGEgbmVnYXRpdmVcbnJlcGV0aXRpb24gZmFjdG9yIHlpZWxkcyBhbiBlbXB0eSBzZXF1ZW5jZS5cblxuVGhlICJAIiAoYXQpIG9wZXJhdG9yIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIG1hdHJpeFxubXVsdGlwbGljYXRpb24uICBObyBidWlsdGluIFB5dGhvbiB0eXBlcyBpbXBsZW1lbnQgdGhpcyBvcGVyYXRvci5cblxuTmV3IGluIHZlcnNpb24gMy41LlxuXG5UaGUgIi8iIChkaXZpc2lvbikgYW5kICIvLyIgKGZsb29yIGRpdmlzaW9uKSBvcGVyYXRvcnMgeWllbGQgdGhlXG5xdW90aWVudCBvZiB0aGVpciBhcmd1bWVudHMuICBUaGUgbnVtZXJpYyBhcmd1bWVudHMgYXJlIGZpcnN0XG5jb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS4gRGl2aXNpb24gb2YgaW50ZWdlcnMgeWllbGRzIGEgZmxvYXQsIHdoaWxlXG5mbG9vciBkaXZpc2lvbiBvZiBpbnRlZ2VycyByZXN1bHRzIGluIGFuIGludGVnZXI7IHRoZSByZXN1bHQgaXMgdGhhdFxub2YgbWF0aGVtYXRpY2FsIGRpdmlzaW9uIHdpdGggdGhlIFwnZmxvb3JcJyBmdW5jdGlvbiBhcHBsaWVkIHRvIHRoZVxucmVzdWx0LiAgRGl2aXNpb24gYnkgemVybyByYWlzZXMgdGhlICJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLlxuXG5UaGUgIiUiIChtb2R1bG8pIG9wZXJhdG9yIHlpZWxkcyB0aGUgcmVtYWluZGVyIGZyb20gdGhlIGRpdmlzaW9uIG9mXG50aGUgZmlyc3QgYXJndW1lbnQgYnkgdGhlIHNlY29uZC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgZmlyc3RcbmNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLiAgQSB6ZXJvIHJpZ2h0IGFyZ3VtZW50IHJhaXNlcyB0aGVcbiJaZXJvRGl2aXNpb25FcnJvciIgZXhjZXB0aW9uLiAgVGhlIGFyZ3VtZW50cyBtYXkgYmUgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGUuZy4sICIzLjE0JTAuNyIgZXF1YWxzICIwLjM0IiAoc2luY2UgIjMuMTQiIGVxdWFscyAiNCowLjcgK1xuMC4zNCIuKSAgVGhlIG1vZHVsbyBvcGVyYXRvciBhbHdheXMgeWllbGRzIGEgcmVzdWx0IHdpdGggdGhlIHNhbWUgc2lnblxuYXMgaXRzIHNlY29uZCBvcGVyYW5kIChvciB6ZXJvKTsgdGhlIGFic29sdXRlIHZhbHVlIG9mIHRoZSByZXN1bHQgaXNcbnN0cmljdGx5IHNtYWxsZXIgdGhhbiB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHNlY29uZCBvcGVyYW5kIFsxXS5cblxuVGhlIGZsb29yIGRpdmlzaW9uIGFuZCBtb2R1bG8gb3BlcmF0b3JzIGFyZSBjb25uZWN0ZWQgYnkgdGhlIGZvbGxvd2luZ1xuaWRlbnRpdHk6ICJ4ID09ICh4Ly95KSp5ICsgKHgleSkiLiAgRmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBhcmUgYWxzb1xuY29ubmVjdGVkIHdpdGggdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJkaXZtb2QoKSI6ICJkaXZtb2QoeCwgeSkgPT1cbih4Ly95LCB4JXkpIi4gWzJdLlxuXG5JbiBhZGRpdGlvbiB0byBwZXJmb3JtaW5nIHRoZSBtb2R1bG8gb3BlcmF0aW9uIG9uIG51bWJlcnMsIHRoZSAiJSJcbm9wZXJhdG9yIGlzIGFsc28gb3ZlcmxvYWRlZCBieSBzdHJpbmcgb2JqZWN0cyB0byBwZXJmb3JtIG9sZC1zdHlsZVxuc3RyaW5nIGZvcm1hdHRpbmcgKGFsc28ga25vd24gYXMgaW50ZXJwb2xhdGlvbikuICBUaGUgc3ludGF4IGZvclxuc3RyaW5nIGZvcm1hdHRpbmcgaXMgZGVzY3JpYmVkIGluIHRoZSBQeXRob24gTGlicmFyeSBSZWZlcmVuY2UsXG5zZWN0aW9uICpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqLlxuXG5UaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgImRpdm1vZCgpIlxuZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvIGFcbmZsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgImFicygpIiBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cblxuVGhlICIrIiAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbmFyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBiZSBzZXF1ZW5jZXMgb2YgdGhlIHNhbWVcbnR5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZVxuYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbmNvbmNhdGVuYXRlZC5cblxuVGhlICItIiAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHMgYXJndW1lbnRzLlxuVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS5cbicsCi0gJ2JpdHdpc2UnOiB1J1xuQmluYXJ5IGJpdHdpc2Ugb3BlcmF0aW9uc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5FYWNoIG9mIHRoZSB0aHJlZSBiaXR3aXNlIG9wZXJhdGlvbnMgaGFzIGEgZGlmZmVyZW50IHByaW9yaXR5IGxldmVsOlxuXG4gICBhbmRfZXhwciA6Oj0gc2hpZnRfZXhwciB8IGFuZF9leHByICImIiBzaGlmdF9leHByXG4gICB4b3JfZXhwciA6Oj0gYW5kX2V4cHIgfCB4b3JfZXhwciAiXiIgYW5kX2V4cHJcbiAgIG9yX2V4cHIgIDo6PSB4b3JfZXhwciB8IG9yX2V4cHIgInwiIHhvcl9leHByXG5cblRoZSAiJiIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIEFORCBvZiBpdHMgYXJndW1lbnRzLCB3aGljaCBtdXN0XG5iZSBpbnRlZ2Vycy5cblxuVGhlICJeIiBvcGVyYXRvciB5aWVsZHMgdGhlIGJpdHdpc2UgWE9SIChleGNsdXNpdmUgT1IpIG9mIGl0c1xuYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuXG5UaGUgInwiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSAoaW5jbHVzaXZlKSBPUiBvZiBpdHMgYXJndW1lbnRzLFxud2hpY2ggbXVzdCBiZSBpbnRlZ2Vycy5cbicsCi0gJ2JsdGluLWNvZGUtb2JqZWN0cyc6IHUnXG5Db2RlIE9iamVjdHNcbioqKioqKioqKioqKlxuXG5Db2RlIG9iamVjdHMgYXJlIHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvIHJlcHJlc2VudCAicHNldWRvLVxuY29tcGlsZWQiIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUgc3VjaCBhcyBhIGZ1bmN0aW9uIGJvZHkuIFRoZXkgZGlmZmVyXG5mcm9tIGZ1bmN0aW9uIG9iamVjdHMgYmVjYXVzZSB0aGV5IGRvblwndCBjb250YWluIGEgcmVmZXJlbmNlIHRvIHRoZWlyXG5nbG9iYWwgZXhlY3V0aW9uIGVudmlyb25tZW50LiAgQ29kZSBvYmplY3RzIGFyZSByZXR1cm5lZCBieSB0aGUgYnVpbHQtXG5pbiAiY29tcGlsZSgpIiBmdW5jdGlvbiBhbmQgY2FuIGJlIGV4dHJhY3RlZCBmcm9tIGZ1bmN0aW9uIG9iamVjdHNcbnRocm91Z2ggdGhlaXIgIl9fY29kZV9fIiBhdHRyaWJ1dGUuIFNlZSBhbHNvIHRoZSAiY29kZSIgbW9kdWxlLlxuXG5BIGNvZGUgb2JqZWN0IGNhbiBiZSBleGVjdXRlZCBvciBldmFsdWF0ZWQgYnkgcGFzc2luZyBpdCAoaW5zdGVhZCBvZiBhXG5zb3VyY2Ugc3RyaW5nKSB0byB0aGUgImV4ZWMoKSIgb3IgImV2YWwoKSIgIGJ1aWx0LWluIGZ1bmN0aW9ucy5cblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogdSdcblRoZSBFbGxpcHNpcyBPYmplY3RcbioqKioqKioqKioqKioqKioqKipcblxuVGhpcyBvYmplY3QgaXMgY29tbW9ubHkgdXNlZCBieSBzbGljaW5nIChzZWUgKlNsaWNpbmdzKikuICBJdCBzdXBwb3J0c1xubm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuIkVsbGlwc2lzIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKEVsbGlwc2lzKSgpIiBwcm9kdWNlcyB0aGVcbiJFbGxpcHNpcyIgc2luZ2xldG9uLlxuXG5JdCBpcyB3cml0dGVuIGFzICJFbGxpcHNpcyIgb3IgIi4uLiIuXG4nLAotICdibHRpbi1udWxsLW9iamVjdCc6IHUnXG5UaGUgTnVsbCBPYmplY3RcbioqKioqKioqKioqKioqKlxuXG5UaGlzIG9iamVjdCBpcyByZXR1cm5lZCBieSBmdW5jdGlvbnMgdGhhdCBkb25cJ3QgZXhwbGljaXRseSByZXR1cm4gYVxudmFsdWUuICBJdCBzdXBwb3J0cyBubyBzcGVjaWFsIG9wZXJhdGlvbnMuICBUaGVyZSBpcyBleGFjdGx5IG9uZSBudWxsXG5vYmplY3QsIG5hbWVkICJOb25lIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKE5vbmUpKCkiIHByb2R1Y2VzIHRoZVxuc2FtZSBzaW5nbGV0b24uXG5cbkl0IGlzIHdyaXR0ZW4gYXMgIk5vbmUiLlxuJywKLSAnYmx0aW4tdHlwZS1vYmplY3RzJzogdSdcblR5cGUgT2JqZWN0c1xuKioqKioqKioqKioqXG5cblR5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gb2JqZWN0XCdzIHR5cGUgaXNcbmFjY2Vzc2VkIGJ5IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAidHlwZSgpIi4gIFRoZXJlIGFyZSBubyBzcGVjaWFsXG5vcGVyYXRpb25zIG9uIHR5cGVzLiAgVGhlIHN0YW5kYXJkIG1vZHVsZSAidHlwZXMiIGRlZmluZXMgbmFtZXMgZm9yXG5hbGwgc3RhbmRhcmQgYnVpbHQtaW4gdHlwZXMuXG5cblR5cGVzIGFyZSB3cml0dGVuIGxpa2UgdGhpczogIjxjbGFzcyBcJ2ludFwnPiIuXG4nLAotICdib29sZWFucyc6IHUnXG5Cb29sZWFuIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKlxuXG4gICBvcl90ZXN0ICA6Oj0gYW5kX3Rlc3QgfCBvcl90ZXN0ICJvciIgYW5kX3Rlc3RcbiAgIGFuZF90ZXN0IDo6PSBub3RfdGVzdCB8IGFuZF90ZXN0ICJhbmQiIG5vdF90ZXN0XG4gICBub3RfdGVzdCA6Oj0gY29tcGFyaXNvbiB8ICJub3QiIG5vdF90ZXN0XG5cbkluIHRoZSBjb250ZXh0IG9mIEJvb2xlYW4gb3BlcmF0aW9ucywgYW5kIGFsc28gd2hlbiBleHByZXNzaW9ucyBhcmVcbnVzZWQgYnkgY29udHJvbCBmbG93IHN0YXRlbWVudHMsIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgZmFsc2U6ICJGYWxzZSIsICJOb25lIiwgbnVtZXJpYyB6ZXJvIG9mIGFsbCB0eXBlcywgYW5kIGVtcHR5XG5zdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbmRpY3Rpb25hcmllcywgc2V0cyBhbmQgZnJvemVuc2V0cykuICBBbGwgb3RoZXIgdmFsdWVzIGFyZSBpbnRlcnByZXRlZFxuYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgYnlcbnByb3ZpZGluZyBhICJfX2Jvb2xfXygpIiBtZXRob2QuXG5cblRoZSBvcGVyYXRvciAibm90IiB5aWVsZHMgIlRydWUiIGlmIGl0cyBhcmd1bWVudCBpcyBmYWxzZSwgIkZhbHNlIlxub3RoZXJ3aXNlLlxuXG5UaGUgZXhwcmVzc2lvbiAieCBhbmQgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIGZhbHNlLCBpdHNcbnZhbHVlIGlzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWVcbmlzIHJldHVybmVkLlxuXG5UaGUgZXhwcmVzc2lvbiAieCBvciB5IiBmaXJzdCBldmFsdWF0ZXMgKngqOyBpZiAqeCogaXMgdHJ1ZSwgaXRzIHZhbHVlXG5pcyByZXR1cm5lZDsgb3RoZXJ3aXNlLCAqeSogaXMgZXZhbHVhdGVkIGFuZCB0aGUgcmVzdWx0aW5nIHZhbHVlIGlzXG5yZXR1cm5lZC5cblxuKE5vdGUgdGhhdCBuZWl0aGVyICJhbmQiIG5vciAib3IiIHJlc3RyaWN0IHRoZSB2YWx1ZSBhbmQgdHlwZSB0aGV5XG5yZXR1cm4gdG8gIkZhbHNlIiBhbmQgIlRydWUiLCBidXQgcmF0aGVyIHJldHVybiB0aGUgbGFzdCBldmFsdWF0ZWRcbmFyZ3VtZW50LiAgVGhpcyBpcyBzb21ldGltZXMgdXNlZnVsLCBlLmcuLCBpZiAicyIgaXMgYSBzdHJpbmcgdGhhdFxuc2hvdWxkIGJlIHJlcGxhY2VkIGJ5IGEgZGVmYXVsdCB2YWx1ZSBpZiBpdCBpcyBlbXB0eSwgdGhlIGV4cHJlc3Npb25cbiJzIG9yIFwnZm9vXCciIHlpZWxkcyB0aGUgZGVzaXJlZCB2YWx1ZS4gIEJlY2F1c2UgIm5vdCIgaGFzIHRvIGNyZWF0ZSBhXG5uZXcgdmFsdWUsIGl0IHJldHVybnMgYSBib29sZWFuIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2YgaXRzXG5hcmd1bWVudCAoZm9yIGV4YW1wbGUsICJub3QgXCdmb29cJyIgcHJvZHVjZXMgIkZhbHNlIiByYXRoZXIgdGhhbiAiXCdcJyIuKVxuJywKLSAnYnJlYWsnOiB1J1xuVGhlICJicmVhayIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgYnJlYWtfc3RtdCA6Oj0gImJyZWFrIlxuXG4iYnJlYWsiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgIndoaWxlIlxubG9vcCwgYnV0IG5vdCBuZXN0ZWQgaW4gYSBmdW5jdGlvbiBvciBjbGFzcyBkZWZpbml0aW9uIHdpdGhpbiB0aGF0XG5sb29wLlxuXG5JdCB0ZXJtaW5hdGVzIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBsb29wLCBza2lwcGluZyB0aGUgb3B0aW9uYWwgImVsc2UiXG5jbGF1c2UgaWYgdGhlIGxvb3AgaGFzIG9uZS5cblxuSWYgYSAiZm9yIiBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgImJyZWFrIiwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbmtlZXBzIGl0cyBjdXJyZW50IHZhbHVlLlxuXG5XaGVuICJicmVhayIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAiZmluYWxseSJcbmNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHkgbGVhdmluZyB0aGVcbmxvb3AuXG4nLAotICdjYWxsYWJsZS10eXBlcyc6IHUnXG5FbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuKioqKioqKioqKioqKioqKioqKioqKioqKipcblxub2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzICJjYWxsZWQiIGFzIGEgZnVuY3Rpb247IGlmIHRoaXMgbWV0aG9kXG4gICBpcyBkZWZpbmVkLCAieChhcmcxLCBhcmcyLCAuLi4pIiBpcyBhIHNob3J0aGFuZCBmb3JcbiAgICJ4Ll9fY2FsbF9fKGFyZzEsIGFyZzIsIC4uLikiLlxuJywKLSAnY2FsbHMnOiB1J1xuQ2FsbHNcbioqKioqXG5cbkEgY2FsbCBjYWxscyBhIGNhbGxhYmxlIG9iamVjdCAoZS5nLiwgYSAqZnVuY3Rpb24qKSB3aXRoIGEgcG9zc2libHlcbmVtcHR5IHNlcmllcyBvZiAqYXJndW1lbnRzKjpcblxuICAgY2FsbCAgICAgICAgICAgICAgICAgOjo9IHByaW1hcnkgIigiIFthcmd1bWVudF9saXN0IFsiLCJdIHwgY29tcHJlaGVuc2lvbl0gIikiXG4gICBhcmd1bWVudF9saXN0ICAgICAgICA6Oj0gcG9zaXRpb25hbF9hcmd1bWVudHMgWyIsIiBzdGFycmVkX2FuZF9rZXl3b3Jkc11cbiAgICAgICAgICAgICAgICAgICAgICAgWyIsIiBrZXl3b3Jkc19hcmd1bWVudHNdXG4gICAgICAgICAgICAgICAgICAgICB8IHN0YXJyZWRfYW5kX2tleXdvcmRzIFsiLCIga2V5d29yZHNfYXJndW1lbnRzXVxuICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3Jkc19hcmd1bWVudHNcbiAgIHBvc2l0aW9uYWxfYXJndW1lbnRzIDo6PSBbIioiXSBleHByZXNzaW9uICgiLCIgWyIqIl0gZXhwcmVzc2lvbikqXG4gICBzdGFycmVkX2FuZF9rZXl3b3JkcyA6Oj0gKCIqIiBleHByZXNzaW9uIHwga2V5d29yZF9pdGVtKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgIioiIGV4cHJlc3Npb24gfCAiLCIga2V5d29yZF9pdGVtKSpcbiAgIGtleXdvcmRzX2FyZ3VtZW50cyAgIDo6PSAoa2V5d29yZF9pdGVtIHwgIioqIiBleHByZXNzaW9uKVxuICAgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGtleXdvcmRfaXRlbSB8ICIqKiIgZXhwcmVzc2lvbikqXG4gICBrZXl3b3JkX2l0ZW0gICAgICAgICA6Oj0gaWRlbnRpZmllciAiPSIgZXhwcmVzc2lvblxuXG5BbiBvcHRpb25hbCB0cmFpbGluZyBjb21tYSBtYXkgYmUgcHJlc2VudCBhZnRlciB0aGUgcG9zaXRpb25hbCBhbmRcbmtleXdvcmQgYXJndW1lbnRzIGJ1dCBkb2VzIG5vdCBhZmZlY3QgdGhlIHNlbWFudGljcy5cblxuVGhlIHByaW1hcnkgbXVzdCBldmFsdWF0ZSB0byBhIGNhbGxhYmxlIG9iamVjdCAodXNlci1kZWZpbmVkXG5mdW5jdGlvbnMsIGJ1aWx0LWluIGZ1bmN0aW9ucywgbWV0aG9kcyBvZiBidWlsdC1pbiBvYmplY3RzLCBjbGFzc1xub2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuIl9fY2FsbF9fKCkiIG1ldGhvZCBhcmUgY2FsbGFibGUpLiAgQWxsIGFyZ3VtZW50IGV4cHJlc3Npb25zIGFyZVxuZXZhbHVhdGVkIGJlZm9yZSB0aGUgY2FsbCBpcyBhdHRlbXB0ZWQuICBQbGVhc2UgcmVmZXIgdG8gc2VjdGlvblxuKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBmb3JtYWwgKnBhcmFtZXRlciogbGlzdHMuXG5cbklmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBwcmVzZW50LCB0aGV5IGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG9cbnBvc2l0aW9uYWwgYXJndW1lbnRzLCBhcyBmb2xsb3dzLiAgRmlyc3QsIGEgbGlzdCBvZiB1bmZpbGxlZCBzbG90cyBpc1xuY3JlYXRlZCBmb3IgdGhlIGZvcm1hbCBwYXJhbWV0ZXJzLiAgSWYgdGhlcmUgYXJlIE4gcG9zaXRpb25hbFxuYXJndW1lbnRzLCB0aGV5IGFyZSBwbGFjZWQgaW4gdGhlIGZpcnN0IE4gc2xvdHMuICBOZXh0LCBmb3IgZWFjaFxua2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG5jb3JyZXNwb25kaW5nIHNsb3QgKGlmIHRoZSBpZGVudGlmaWVyIGlzIHRoZSBzYW1lIGFzIHRoZSBmaXJzdCBmb3JtYWxcbnBhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgaXNcbmFscmVhZHkgZmlsbGVkLCBhICJUeXBlRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuIE90aGVyd2lzZSwgdGhlXG52YWx1ZSBvZiB0aGUgYXJndW1lbnQgaXMgcGxhY2VkIGluIHRoZSBzbG90LCBmaWxsaW5nIGl0IChldmVuIGlmIHRoZVxuZXhwcmVzc2lvbiBpcyAiTm9uZSIsIGl0IGZpbGxzIHRoZSBzbG90KS4gIFdoZW4gYWxsIGFyZ3VtZW50cyBoYXZlXG5iZWVuIHByb2Nlc3NlZCwgdGhlIHNsb3RzIHRoYXQgYXJlIHN0aWxsIHVuZmlsbGVkIGFyZSBmaWxsZWQgd2l0aCB0aGVcbmNvcnJlc3BvbmRpbmcgZGVmYXVsdCB2YWx1ZSBmcm9tIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uLiAgKERlZmF1bHRcbnZhbHVlcyBhcmUgY2FsY3VsYXRlZCwgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZDsgdGh1cywgYVxubXV0YWJsZSBvYmplY3Qgc3VjaCBhcyBhIGxpc3Qgb3IgZGljdGlvbmFyeSB1c2VkIGFzIGRlZmF1bHQgdmFsdWUgd2lsbFxuYmUgc2hhcmVkIGJ5IGFsbCBjYWxscyB0aGF0IGRvblwndCBzcGVjaWZ5IGFuIGFyZ3VtZW50IHZhbHVlIGZvciB0aGVcbmNvcnJlc3BvbmRpbmcgc2xvdDsgdGhpcyBzaG91bGQgdXN1YWxseSBiZSBhdm9pZGVkLikgIElmIHRoZXJlIGFyZSBhbnlcbnVuZmlsbGVkIHNsb3RzIGZvciB3aGljaCBubyBkZWZhdWx0IHZhbHVlIGlzIHNwZWNpZmllZCwgYSAiVHlwZUVycm9yIlxuZXhjZXB0aW9uIGlzIHJhaXNlZC4gIE90aGVyd2lzZSwgdGhlIGxpc3Qgb2YgZmlsbGVkIHNsb3RzIGlzIHVzZWQgYXNcbnRoZSBhcmd1bWVudCBsaXN0IGZvciB0aGUgY2FsbC5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuYnVpbHQtaW4gZnVuY3Rpb25zIHdob3NlIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBkbyBub3QgaGF2ZSBuYW1lcywgZXZlblxuaWYgdGhleSBhcmUgXCduYW1lZFwnIGZvciB0aGUgcHVycG9zZSBvZiBkb2N1bWVudGF0aW9uLCBhbmQgd2hpY2hcbnRoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlIGNhc2VcbmZvciBmdW5jdGlvbnMgaW1wbGVtZW50ZWQgaW4gQyB0aGF0IHVzZSAiUHlBcmdfUGFyc2VUdXBsZSgpIiB0byBwYXJzZVxudGhlaXIgYXJndW1lbnRzLlxuXG5JZiB0aGVyZSBhcmUgbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGFuIHRoZXJlIGFyZSBmb3JtYWwgcGFyYW1ldGVyXG5zbG90cywgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG51c2luZyB0aGUgc3ludGF4ICIqaWRlbnRpZmllciIgaXMgcHJlc2VudDsgaW4gdGhpcyBjYXNlLCB0aGF0IGZvcm1hbFxucGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzXG4ob3IgYW4gZW1wdHkgdHVwbGUgaWYgdGhlcmUgd2VyZSBubyBleGNlc3MgcG9zaXRpb25hbCBhcmd1bWVudHMpLlxuXG5JZiBhbnkga2V5d29yZCBhcmd1bWVudCBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgZm9ybWFsIHBhcmFtZXRlclxubmFtZSwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLCB1bmxlc3MgYSBmb3JtYWwgcGFyYW1ldGVyXG51c2luZyB0aGUgc3ludGF4ICIqKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCBmb3JtYWxcbnBhcmFtZXRlciByZWNlaXZlcyBhIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgZXhjZXNzIGtleXdvcmRcbmFyZ3VtZW50cyAodXNpbmcgdGhlIGtleXdvcmRzIGFzIGtleXMgYW5kIHRoZSBhcmd1bWVudCB2YWx1ZXMgYXNcbmNvcnJlc3BvbmRpbmcgdmFsdWVzKSwgb3IgYSAobmV3KSBlbXB0eSBkaWN0aW9uYXJ5IGlmIHRoZXJlIHdlcmUgbm9cbmV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cy5cblxuSWYgdGhlIHN5bnRheCAiKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsICJleHByZXNzaW9uIlxubXVzdCBldmFsdWF0ZSB0byBhbiAqaXRlcmFibGUqLiAgRWxlbWVudHMgZnJvbSB0aGVzZSBpdGVyYWJsZXMgYXJlXG50cmVhdGVkIGFzIGlmIHRoZXkgd2VyZSBhZGRpdGlvbmFsIHBvc2l0aW9uYWwgYXJndW1lbnRzLiAgRm9yIHRoZSBjYWxsXG4iZih4MSwgeDIsICp5LCB4MywgeDQpIiwgaWYgKnkqIGV2YWx1YXRlcyB0byBhIHNlcXVlbmNlICp5MSosIC4uLixcbip5TSosIHRoaXMgaXMgZXF1aXZhbGVudCB0byBhIGNhbGwgd2l0aCBNKzQgcG9zaXRpb25hbCBhcmd1bWVudHMgKngxKixcbip4MiosICp5MSosIC4uLiwgKnlNKiwgKngzKiwgKng0Ki5cblxuQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4IG1heVxuYXBwZWFyICphZnRlciogZXhwbGljaXQga2V5d29yZCBhcmd1bWVudHMsIGl0IGlzIHByb2Nlc3NlZCAqYmVmb3JlKlxudGhlIGtleXdvcmQgYXJndW1lbnRzIChhbmQgYW55ICIqKmV4cHJlc3Npb24iIGFyZ3VtZW50cyAtLSBzZWUgYmVsb3cpLlxuU286XG5cbiAgID4+PiBkZWYgZihhLCBiKTpcbiAgIC4uLiAgICAgcHJpbnQoYSwgYilcbiAgIC4uLlxuICAgPj4+IGYoYj0xLCAqKDIsKSlcbiAgIDIgMVxuICAgPj4+IGYoYT0xLCAqKDIsKSlcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuICAgVHlwZUVycm9yOiBmKCkgZ290IG11bHRpcGxlIHZhbHVlcyBmb3Iga2V5d29yZCBhcmd1bWVudCBcJ2FcJ1xuICAgPj4+IGYoMSwgKigyLCkpXG4gICAxIDJcblxuSXQgaXMgdW51c3VhbCBmb3IgYm90aCBrZXl3b3JkIGFyZ3VtZW50cyBhbmQgdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4XG50byBiZSB1c2VkIGluIHRoZSBzYW1lIGNhbGwsIHNvIGluIHByYWN0aWNlIHRoaXMgY29uZnVzaW9uIGRvZXMgbm90XG5hcmlzZS5cblxuSWYgdGhlIHN5bnRheCAiKipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLFxuImV4cHJlc3Npb24iIG11c3QgZXZhbHVhdGUgdG8gYSAqbWFwcGluZyosIHRoZSBjb250ZW50cyBvZiB3aGljaCBhcmVcbnRyZWF0ZWQgYXMgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cy4gIElmIGEga2V5d29yZCBpcyBhbHJlYWR5XG5wcmVzZW50IChhcyBhbiBleHBsaWNpdCBrZXl3b3JkIGFyZ3VtZW50LCBvciBmcm9tIGFub3RoZXIgdW5wYWNraW5nKSxcbmEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cblxuRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiXG5jYW5ub3QgYmUgdXNlZCBhcyBwb3NpdGlvbmFsIGFyZ3VtZW50IHNsb3RzIG9yIGFzIGtleXdvcmQgYXJndW1lbnRcbm5hbWVzLlxuXG5DaGFuZ2VkIGluIHZlcnNpb24gMy41OiBGdW5jdGlvbiBjYWxscyBhY2NlcHQgYW55IG51bWJlciBvZiAiKiIgYW5kXG4iKioiIHVucGFja2luZ3MsIHBvc2l0aW9uYWwgYXJndW1lbnRzIG1heSBmb2xsb3cgaXRlcmFibGUgdW5wYWNraW5nc1xuKCIqIiksIGFuZCBrZXl3b3JkIGFyZ3VtZW50cyBtYXkgZm9sbG93IGRpY3Rpb25hcnkgdW5wYWNraW5ncyAoIioqIikuXG5PcmlnaW5hbGx5IHByb3Bvc2VkIGJ5ICoqUEVQIDQ0OCoqLlxuXG5BIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgIk5vbmUiLCB1bmxlc3MgaXQgcmFpc2VzIGFuXG5leGNlcHRpb24uICBIb3cgdGhpcyB2YWx1ZSBpcyBjb21wdXRlZCBkZXBlbmRzIG9uIHRoZSB0eXBlIG9mIHRoZVxuY2FsbGFibGUgb2JqZWN0LlxuXG5JZiBpdCBpcy0tLVxuXG5hIHVzZXItZGVmaW5lZCBmdW5jdGlvbjpcbiAgIFRoZSBjb2RlIGJsb2NrIGZvciB0aGUgZnVuY3Rpb24gaXMgZXhlY3V0ZWQsIHBhc3NpbmcgaXQgdGhlXG4gICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCB0aGVcbiAgIGZvcm1hbCBwYXJhbWV0ZXJzIHRvIHRoZSBhcmd1bWVudHM7IHRoaXMgaXMgZGVzY3JpYmVkIGluIHNlY3Rpb25cbiAgICpGdW5jdGlvbiBkZWZpbml0aW9ucyouICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgInJldHVybiJcbiAgIHN0YXRlbWVudCwgdGhpcyBzcGVjaWZpZXMgdGhlIHJldHVybiB2YWx1ZSBvZiB0aGUgZnVuY3Rpb24gY2FsbC5cblxuYSBidWlsdC1pbiBmdW5jdGlvbiBvciBtZXRob2Q6XG4gICBUaGUgcmVzdWx0IGlzIHVwIHRvIHRoZSBpbnRlcnByZXRlcjsgc2VlICpCdWlsdC1pbiBGdW5jdGlvbnMqIGZvclxuICAgdGhlIGRlc2NyaXB0aW9ucyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuXG5cbmEgY2xhc3Mgb2JqZWN0OlxuICAgQSBuZXcgaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyBpcyByZXR1cm5lZC5cblxuYSBjbGFzcyBpbnN0YW5jZSBtZXRob2Q6XG4gICBUaGUgY29ycmVzcG9uZGluZyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aXRoIGFuIGFyZ3VtZW50XG4gICBsaXN0IHRoYXQgaXMgb25lIGxvbmdlciB0aGFuIHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjYWxsOiB0aGVcbiAgIGluc3RhbmNlIGJlY29tZXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxuXG5hIGNsYXNzIGluc3RhbmNlOlxuICAgVGhlIGNsYXNzIG11c3QgZGVmaW5lIGEgIl9fY2FsbF9fKCkiIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyB0aGVuIHRoZVxuICAgc2FtZSBhcyBpZiB0aGF0IG1ldGhvZCB3YXMgY2FsbGVkLlxuJywKLSAnY2xhc3MnOiB1J1xuQ2xhc3MgZGVmaW5pdGlvbnNcbioqKioqKioqKioqKioqKioqXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBkZWZpbmVzIGEgY2xhc3Mgb2JqZWN0IChzZWUgc2VjdGlvbiAqVGhlIHN0YW5kYXJkXG50eXBlIGhpZXJhcmNoeSopOlxuXG4gICBjbGFzc2RlZiAgICA6Oj0gW2RlY29yYXRvcnNdICJjbGFzcyIgY2xhc3NuYW1lIFtpbmhlcml0YW5jZV0gIjoiIHN1aXRlXG4gICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbiAgIGNsYXNzbmFtZSAgIDo6PSBpZGVudGlmaWVyXG5cbkEgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSBsaXN0XG51c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSAqQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb24qXG5mb3IgbW9yZSBhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhXG5jbGFzcyBvYmplY3Qgd2hpY2ggYWxsb3dzIHN1YmNsYXNzaW5nLiAgQ2xhc3NlcyB3aXRob3V0IGFuIGluaGVyaXRhbmNlXG5saXN0IGluaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuXG4gICBjbGFzcyBGb286XG4gICAgICAgcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbyhvYmplY3QpOlxuICAgICAgIHBhc3NcblxuVGhlIGNsYXNzXCdzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lIChzZWVcbipOYW1pbmcgYW5kIGJpbmRpbmcqKSwgdXNpbmcgYSBuZXdseSBjcmVhdGVkIGxvY2FsIG5hbWVzcGFjZSBhbmQgdGhlXG5vcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuZnVuY3Rpb24gZGVmaW5pdGlvbnMuKSAgV2hlbiB0aGUgY2xhc3NcJ3Mgc3VpdGUgZmluaXNoZXMgZXhlY3V0aW9uLCBpdHNcbmV4ZWN1dGlvbiBmcmFtZSBpcyBkaXNjYXJkZWQgYnV0IGl0cyBsb2NhbCBuYW1lc3BhY2UgaXMgc2F2ZWQuIFs0XSBBXG5jbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgYmFzZVxuY2xhc3NlcyBhbmQgdGhlIHNhdmVkIGxvY2FsIG5hbWVzcGFjZSBmb3IgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5LlxuVGhlIGNsYXNzIG5hbWUgaXMgYm91bmQgdG8gdGhpcyBjbGFzcyBvYmplY3QgaW4gdGhlIG9yaWdpbmFsIGxvY2FsXG5uYW1lc3BhY2UuXG5cbkNsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgKm1ldGFjbGFzc2VzKi5cblxuQ2xhc3NlcyBjYW4gYWxzbyBiZSBkZWNvcmF0ZWQ6IGp1c3QgbGlrZSB3aGVuIGRlY29yYXRpbmcgZnVuY3Rpb25zLFxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBjbGFzcyBGb286IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBjbGFzcyBGb286IHBhc3NcbiAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcblxuVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lIGFzIGZvclxuZnVuY3Rpb24gZGVjb3JhdG9ycy4gIFRoZSByZXN1bHQgbXVzdCBiZSBhIGNsYXNzIG9iamVjdCwgd2hpY2ggaXMgdGhlblxuYm91bmQgdG8gdGhlIGNsYXNzIG5hbWUuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIFZhcmlhYmxlcyBkZWZpbmVkIGluIHRoZSBjbGFzcyBkZWZpbml0aW9uIGFyZVxuY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlIGF0dHJpYnV0ZXNcbmNhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbmluc3RhbmNlIGF0dHJpYnV0ZXMgYXJlIGFjY2Vzc2libGUgdGhyb3VnaCB0aGUgbm90YXRpb24gIiJzZWxmLm5hbWUiIixcbmFuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSBuYW1lXG53aGVuIGFjY2Vzc2VkIGluIHRoaXMgd2F5LiAgQ2xhc3MgYXR0cmlidXRlcyBjYW4gYmUgdXNlZCBhcyBkZWZhdWx0c1xuZm9yIGluc3RhbmNlIGF0dHJpYnV0ZXMsIGJ1dCB1c2luZyBtdXRhYmxlIHZhbHVlcyB0aGVyZSBjYW4gbGVhZCB0b1xudW5leHBlY3RlZCByZXN1bHRzLiAgKkRlc2NyaXB0b3JzKiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgaW5zdGFuY2VcbnZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuXG5TZWUgYWxzbzogKipQRVAgMzExNSoqIC0gTWV0YWNsYXNzZXMgaW4gUHl0aG9uIDMgKipQRVAgMzEyOSoqIC1cbiAgQ2xhc3MgRGVjb3JhdG9yc1xuJywKLSAnY29tcGFyaXNvbnMnOiB1J1xuQ29tcGFyaXNvbnNcbioqKioqKioqKioqXG5cblVubGlrZSBDLCBhbGwgY29tcGFyaXNvbiBvcGVyYXRpb25zIGluIFB5dGhvbiBoYXZlIHRoZSBzYW1lIHByaW9yaXR5LFxud2hpY2ggaXMgbG93ZXIgdGhhbiB0aGF0IG9mIGFueSBhcml0aG1ldGljLCBzaGlmdGluZyBvciBiaXR3aXNlXG5vcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgdGhlXG5pbnRlcnByZXRhdGlvbiB0aGF0IGlzIGNvbnZlbnRpb25hbCBpbiBtYXRoZW1hdGljczpcblxuICAgY29tcGFyaXNvbiAgICA6Oj0gb3JfZXhwciAoIGNvbXBfb3BlcmF0b3Igb3JfZXhwciApKlxuICAgY29tcF9vcGVyYXRvciA6Oj0gIjwiIHwgIj4iIHwgIj09IiB8ICI+PSIgfCAiPD0iIHwgIiE9IlxuICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcblxuQ29tcGFyaXNvbnMgeWllbGQgYm9vbGVhbiB2YWx1ZXM6ICJUcnVlIiBvciAiRmFsc2UiLlxuXG5Db21wYXJpc29ucyBjYW4gYmUgY2hhaW5lZCBhcmJpdHJhcmlseSwgZS5nLiwgInggPCB5IDw9IHoiIGlzXG5lcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzIGV2YWx1YXRlZCBvbmx5XG5vbmNlIChidXQgaW4gYm90aCBjYXNlcyAieiIgaXMgbm90IGV2YWx1YXRlZCBhdCBhbGwgd2hlbiAieCA8IHkiIGlzXG5mb3VuZCB0byBiZSBmYWxzZSkuXG5cbkZvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgKm9wMSosXG4qb3AyKiwgLi4uLCAqb3BOKiBhcmUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIHRoZW4gImEgb3AxIGIgb3AyIGMgLi4uIHlcbm9wTiB6IiBpcyBlcXVpdmFsZW50IHRvICJhIG9wMSBiIGFuZCBiIG9wMiBjIGFuZCAuLi4geSBvcE4geiIsIGV4Y2VwdFxudGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cblxuTm90ZSB0aGF0ICJhIG9wMSBiIG9wMiBjIiBkb2VzblwndCBpbXBseSBhbnkga2luZCBvZiBjb21wYXJpc29uIGJldHdlZW5cbiphKiBhbmQgKmMqLCBzbyB0aGF0LCBlLmcuLCAieCA8IHkgPiB6IiBpcyBwZXJmZWN0bHkgbGVnYWwgKHRob3VnaFxucGVyaGFwcyBub3QgcHJldHR5KS5cblxuXG5WYWx1ZSBjb21wYXJpc29uc1xuPT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSB0aGUgdmFsdWVzXG5vZiB0d28gb2JqZWN0cy4gIFRoZSBvYmplY3RzIGRvIG5vdCBuZWVkIHRvIGhhdmUgdGhlIHNhbWUgdHlwZS5cblxuQ2hhcHRlciAqT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlcyogc3RhdGVzIHRoYXQgb2JqZWN0cyBoYXZlIGEgdmFsdWVcbihpbiBhZGRpdGlvbiB0byB0eXBlIGFuZCBpZGVudGl0eSkuICBUaGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzIGFcbnJhdGhlciBhYnN0cmFjdCBub3Rpb24gaW4gUHl0aG9uOiBGb3IgZXhhbXBsZSwgdGhlcmUgaXMgbm8gY2Fub25pY2FsXG5hY2Nlc3MgbWV0aG9kIGZvciBhbiBvYmplY3RcJ3MgdmFsdWUuICBBbHNvLCB0aGVyZSBpcyBubyByZXF1aXJlbWVudFxudGhhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IHNob3VsZCBiZSBjb25zdHJ1Y3RlZCBpbiBhIHBhcnRpY3VsYXIgd2F5LFxuZS5nLiBjb21wcmlzZWQgb2YgYWxsIGl0cyBkYXRhIGF0dHJpYnV0ZXMuIENvbXBhcmlzb24gb3BlcmF0b3JzXG5pbXBsZW1lbnQgYSBwYXJ0aWN1bGFyIG5vdGlvbiBvZiB3aGF0IHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaXMuICBPbmVcbmNhbiB0aGluayBvZiB0aGVtIGFzIGRlZmluaW5nIHRoZSB2YWx1ZSBvZiBhbiBvYmplY3QgaW5kaXJlY3RseSwgYnlcbm1lYW5zIG9mIHRoZWlyIGNvbXBhcmlzb24gaW1wbGVtZW50YXRpb24uXG5cbkJlY2F1c2UgYWxsIHR5cGVzIGFyZSAoZGlyZWN0IG9yIGluZGlyZWN0KSBzdWJ0eXBlcyBvZiAib2JqZWN0IiwgdGhleVxuaW5oZXJpdCB0aGUgZGVmYXVsdCBjb21wYXJpc29uIGJlaGF2aW9yIGZyb20gIm9iamVjdCIuICBUeXBlcyBjYW5cbmN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIGJ5IGltcGxlbWVudGluZyAqcmljaCBjb21wYXJpc29uXG5tZXRob2RzKiBsaWtlICJfX2x0X18oKSIsIGRlc2NyaWJlZCBpbiAqQmFzaWMgY3VzdG9taXphdGlvbiouXG5cblRoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBlcXVhbGl0eSBjb21wYXJpc29uICgiPT0iIGFuZCAiIT0iKSBpcyBiYXNlZFxub24gdGhlIGlkZW50aXR5IG9mIHRoZSBvYmplY3RzLiAgSGVuY2UsIGVxdWFsaXR5IGNvbXBhcmlzb24gb2Zcbmluc3RhbmNlcyB3aXRoIHRoZSBzYW1lIGlkZW50aXR5IHJlc3VsdHMgaW4gZXF1YWxpdHksIGFuZCBlcXVhbGl0eVxuY29tcGFyaXNvbiBvZiBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgaWRlbnRpdGllcyByZXN1bHRzIGluXG5pbmVxdWFsaXR5LiAgQSBtb3RpdmF0aW9uIGZvciB0aGlzIGRlZmF1bHQgYmVoYXZpb3IgaXMgdGhlIGRlc2lyZSB0aGF0XG5hbGwgb2JqZWN0cyBzaG91bGQgYmUgcmVmbGV4aXZlIChpLmUuICJ4IGlzIHkiIGltcGxpZXMgInggPT0geSIpLlxuXG5BIGRlZmF1bHQgb3JkZXIgY29tcGFyaXNvbiAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSBpcyBub3QgcHJvdmlkZWQ7XG5hbiBhdHRlbXB0IHJhaXNlcyAiVHlwZUVycm9yIi4gIEEgbW90aXZhdGlvbiBmb3IgdGhpcyBkZWZhdWx0IGJlaGF2aW9yXG5pcyB0aGUgbGFjayBvZiBhIHNpbWlsYXIgaW52YXJpYW50IGFzIGZvciBlcXVhbGl0eS5cblxuVGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24sIHRoYXQgaW5zdGFuY2VzIHdpdGhcbmRpZmZlcmVudCBpZGVudGl0aWVzIGFyZSBhbHdheXMgdW5lcXVhbCwgbWF5IGJlIGluIGNvbnRyYXN0IHRvIHdoYXRcbnR5cGVzIHdpbGwgbmVlZCB0aGF0IGhhdmUgYSBzZW5zaWJsZSBkZWZpbml0aW9uIG9mIG9iamVjdCB2YWx1ZSBhbmRcbnZhbHVlLWJhc2VkIGVxdWFsaXR5LiAgU3VjaCB0eXBlcyB3aWxsIG5lZWQgdG8gY3VzdG9taXplIHRoZWlyXG5jb21wYXJpc29uIGJlaGF2aW9yLCBhbmQgaW4gZmFjdCwgYSBudW1iZXIgb2YgYnVpbHQtaW4gdHlwZXMgaGF2ZSBkb25lXG50aGF0LlxuXG5UaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBjb21wYXJpc29uIGJlaGF2aW9yIG9mIHRoZSBtb3N0XG5pbXBvcnRhbnQgYnVpbHQtaW4gdHlwZXMuXG5cbiogTnVtYmVycyBvZiBidWlsdC1pbiBudW1lcmljIHR5cGVzICgqTnVtZXJpYyBUeXBlcyAtLS0gaW50LCBmbG9hdCxcbiAgY29tcGxleCopIGFuZCBvZiB0aGUgc3RhbmRhcmQgbGlicmFyeSB0eXBlcyAiZnJhY3Rpb25zLkZyYWN0aW9uIiBhbmRcbiAgImRlY2ltYWwuRGVjaW1hbCIgY2FuIGJlIGNvbXBhcmVkIHdpdGhpbiBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLFxuICB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0IGNvbXBsZXggbnVtYmVycyBkbyBub3Qgc3VwcG9ydCBvcmRlclxuICBjb21wYXJpc29uLiAgV2l0aGluIHRoZSBsaW1pdHMgb2YgdGhlIHR5cGVzIGludm9sdmVkLCB0aGV5IGNvbXBhcmVcbiAgbWF0aGVtYXRpY2FsbHkgKGFsZ29yaXRobWljYWxseSkgY29ycmVjdCB3aXRob3V0IGxvc3Mgb2YgcHJlY2lzaW9uLlxuXG4gIFRoZSBub3QtYS1udW1iZXIgdmFsdWVzICJmbG9hdChcJ05hTlwnKSIgYW5kICJEZWNpbWFsKFwnTmFOXCcpIiBhcmVcbiAgc3BlY2lhbC4gIFRoZXkgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzICgieCBpcyB4IiBpcyB0cnVlKSBidXRcbiAgYXJlIG5vdCBlcXVhbCB0byB0aGVtc2VsdmVzICgieCA9PSB4IiBpcyBmYWxzZSkuICBBZGRpdGlvbmFsbHksXG4gIGNvbXBhcmluZyBhbnkgbnVtYmVyIHRvIGEgbm90LWEtbnVtYmVyIHZhbHVlIHdpbGwgcmV0dXJuICJGYWxzZSIuXG4gIEZvciBleGFtcGxlLCBib3RoICIzIDwgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgPCAzIiB3aWxsXG4gIHJldHVybiAiRmFsc2UiLlxuXG4qIEJpbmFyeSBzZXF1ZW5jZXMgKGluc3RhbmNlcyBvZiAiYnl0ZXMiIG9yICJieXRlYXJyYXkiKSBjYW4gYmVcbiAgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMuICBUaGV5IGNvbXBhcmVcbiAgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgdGhlIG51bWVyaWMgdmFsdWVzIG9mIHRoZWlyIGVsZW1lbnRzLlxuXG4qIFN0cmluZ3MgKGluc3RhbmNlcyBvZiAic3RyIikgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGVcbiAgbnVtZXJpY2FsIFVuaWNvZGUgY29kZSBwb2ludHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICJvcmQoKSIpIG9mIHRoZWlyIGNoYXJhY3RlcnMuIFszXVxuXG4gIFN0cmluZ3MgYW5kIGJpbmFyeSBzZXF1ZW5jZXMgY2Fubm90IGJlIGRpcmVjdGx5IGNvbXBhcmVkLlxuXG4qIFNlcXVlbmNlcyAoaW5zdGFuY2VzIG9mICJ0dXBsZSIsICJsaXN0Iiwgb3IgInJhbmdlIikgY2FuIGJlXG4gIGNvbXBhcmVkIG9ubHkgd2l0aGluIGVhY2ggb2YgdGhlaXIgdHlwZXMsIHdpdGggdGhlIHJlc3RyaWN0aW9uIHRoYXRcbiAgcmFuZ2VzIGRvIG5vdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24uICBFcXVhbGl0eSBjb21wYXJpc29uIGFjcm9zc1xuICB0aGVzZSB0eXBlcyByZXN1bHRzIGluIHVuZXF1YWxpdHksIGFuZCBvcmRlcmluZyBjb21wYXJpc29uIGFjcm9zc1xuICB0aGVzZSB0eXBlcyByYWlzZXMgIlR5cGVFcnJvciIuXG5cbiAgU2VxdWVuY2VzIGNvbXBhcmUgbGV4aWNvZ3JhcGhpY2FsbHkgdXNpbmcgY29tcGFyaXNvbiBvZlxuICBjb3JyZXNwb25kaW5nIGVsZW1lbnRzLCB3aGVyZWJ5IHJlZmxleGl2aXR5IG9mIHRoZSBlbGVtZW50cyBpc1xuICBlbmZvcmNlZC5cblxuICBJbiBlbmZvcmNpbmcgcmVmbGV4aXZpdHkgb2YgZWxlbWVudHMsIHRoZSBjb21wYXJpc29uIG9mIGNvbGxlY3Rpb25zXG4gIGFzc3VtZXMgdGhhdCBmb3IgYSBjb2xsZWN0aW9uIGVsZW1lbnQgIngiLCAieCA9PSB4IiBpcyBhbHdheXMgdHJ1ZS5cbiAgQmFzZWQgb24gdGhhdCBhc3N1bXB0aW9uLCBlbGVtZW50IGlkZW50aXR5IGlzIGNvbXBhcmVkIGZpcnN0LCBhbmRcbiAgZWxlbWVudCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBvbmx5IGZvciBkaXN0aW5jdCBlbGVtZW50cy4gIFRoaXNcbiAgYXBwcm9hY2ggeWllbGRzIHRoZSBzYW1lIHJlc3VsdCBhcyBhIHN0cmljdCBlbGVtZW50IGNvbXBhcmlzb25cbiAgd291bGQsIGlmIHRoZSBjb21wYXJlZCBlbGVtZW50cyBhcmUgcmVmbGV4aXZlLiAgRm9yIG5vbi1yZWZsZXhpdmVcbiAgZWxlbWVudHMsIHRoZSByZXN1bHQgaXMgZGlmZmVyZW50IHRoYW4gZm9yIHN0cmljdCBlbGVtZW50XG4gIGNvbXBhcmlzb24sIGFuZCBtYXkgYmUgc3VycHJpc2luZzogIFRoZSBub24tcmVmbGV4aXZlIG5vdC1hLW51bWJlclxuICB2YWx1ZXMgZm9yIGV4YW1wbGUgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgY29tcGFyaXNvbiBiZWhhdmlvciB3aGVuXG4gIHVzZWQgaW4gYSBsaXN0OlxuXG4gICAgID4+PiBuYW4gPSBmbG9hdChcJ05hTlwnKVxuICAgICA+Pj4gbmFuIGlzIG5hblxuICAgICBUcnVlXG4gICAgID4+PiBuYW4gPT0gbmFuXG4gICAgIEZhbHNlICAgICAgICAgICAgICAgICA8LS0gdGhlIGRlZmluZWQgbm9uLXJlZmxleGl2ZSBiZWhhdmlvciBvZiBOYU5cbiAgICAgPj4+IFtuYW5dID09IFtuYW5dXG4gICAgIFRydWUgICAgICAgICAgICAgICAgICA8LS0gbGlzdCBlbmZvcmNlcyByZWZsZXhpdml0eSBhbmQgdGVzdHMgaWRlbnRpdHkgZmlyc3RcblxuICBMZXhpY29ncmFwaGljYWwgY29tcGFyaXNvbiBiZXR3ZWVuIGJ1aWx0LWluIGNvbGxlY3Rpb25zIHdvcmtzIGFzXG4gIGZvbGxvd3M6XG5cbiAgKiBGb3IgdHdvIGNvbGxlY3Rpb25zIHRvIGNvbXBhcmUgZXF1YWwsIHRoZXkgbXVzdCBiZSBvZiB0aGUgc2FtZVxuICAgIHR5cGUsIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLCBhbmQgZWFjaCBwYWlyIG9mIGNvcnJlc3BvbmRpbmdcbiAgICBlbGVtZW50cyBtdXN0IGNvbXBhcmUgZXF1YWwgKGZvciBleGFtcGxlLCAiWzEsMl0gPT0gKDEsMikiIGlzXG4gICAgZmFsc2UgYmVjYXVzZSB0aGUgdHlwZSBpcyBub3QgdGhlIHNhbWUpLlxuXG4gICogQ29sbGVjdGlvbnMgdGhhdCBzdXBwb3J0IG9yZGVyIGNvbXBhcmlzb24gYXJlIG9yZGVyZWQgdGhlIHNhbWVcbiAgICBhcyB0aGVpciBmaXJzdCB1bmVxdWFsIGVsZW1lbnRzIChmb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gWzEsMix5XSJcbiAgICBoYXMgdGhlIHNhbWUgdmFsdWUgYXMgInggPD0geSIpLiAgSWYgYSBjb3JyZXNwb25kaW5nIGVsZW1lbnQgZG9lc1xuICAgIG5vdCBleGlzdCwgdGhlIHNob3J0ZXIgY29sbGVjdGlvbiBpcyBvcmRlcmVkIGZpcnN0IChmb3IgZXhhbXBsZSxcbiAgICAiWzEsMl0gPCBbMSwyLDNdIiBpcyB0cnVlKS5cblxuKiBNYXBwaW5ncyAoaW5zdGFuY2VzIG9mICJkaWN0IikgY29tcGFyZSBlcXVhbCBpZiBhbmQgb25seSBpZiB0aGV5XG4gIGhhdmUgZXF1YWwgKihrZXksIHZhbHVlKSogcGFpcnMuIEVxdWFsaXR5IGNvbXBhcmlzb24gb2YgdGhlIGtleXMgYW5kXG4gIGVsZW1lbnRzIGVuZm9yY2VzIHJlZmxleGl2aXR5LlxuXG4gIE9yZGVyIGNvbXBhcmlzb25zICgiPCIsICI+IiwgIjw9IiwgYW5kICI+PSIpIHJhaXNlICJUeXBlRXJyb3IiLlxuXG4qIFNldHMgKGluc3RhbmNlcyBvZiAic2V0IiBvciAiZnJvemVuc2V0IikgY2FuIGJlIGNvbXBhcmVkIHdpdGhpblxuICBhbmQgYWNyb3NzIHRoZWlyIHR5cGVzLlxuXG4gIFRoZXkgZGVmaW5lIG9yZGVyIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZCBzdXBlcnNldFxuICB0ZXN0cy4gIFRob3NlIHJlbGF0aW9ucyBkbyBub3QgZGVmaW5lIHRvdGFsIG9yZGVyaW5ncyAoZm9yIGV4YW1wbGUsXG4gIHRoZSB0d28gc2V0cyAiezEsMn0iIGFuZCAiezIsM30iIGFyZSBub3QgZXF1YWwsIG5vciBzdWJzZXRzIG9mIG9uZVxuICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzIGFyZSBub3RcbiAgYXBwcm9wcmlhdGUgYXJndW1lbnRzIGZvciBmdW5jdGlvbnMgd2hpY2ggZGVwZW5kIG9uIHRvdGFsIG9yZGVyaW5nXG4gIChmb3IgZXhhbXBsZSwgIm1pbigpIiwgIm1heCgpIiwgYW5kICJzb3J0ZWQoKSIgcHJvZHVjZSB1bmRlZmluZWRcbiAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMpLlxuXG4gIENvbXBhcmlzb24gb2Ygc2V0cyBlbmZvcmNlcyByZWZsZXhpdml0eSBvZiBpdHMgZWxlbWVudHMuXG5cbiogTW9zdCBvdGhlciBidWlsdC1pbiB0eXBlcyBoYXZlIG5vIGNvbXBhcmlzb24gbWV0aG9kcyBpbXBsZW1lbnRlZCxcbiAgc28gdGhleSBpbmhlcml0IHRoZSBkZWZhdWx0IGNvbXBhcmlzb24gYmVoYXZpb3IuXG5cblVzZXItZGVmaW5lZCBjbGFzc2VzIHRoYXQgY3VzdG9taXplIHRoZWlyIGNvbXBhcmlzb24gYmVoYXZpb3Igc2hvdWxkXG5mb2xsb3cgc29tZSBjb25zaXN0ZW5jeSBydWxlcywgaWYgcG9zc2libGU6XG5cbiogRXF1YWxpdHkgY29tcGFyaXNvbiBzaG91bGQgYmUgcmVmbGV4aXZlLiBJbiBvdGhlciB3b3JkcywgaWRlbnRpY2FsXG4gIG9iamVjdHMgc2hvdWxkIGNvbXBhcmUgZXF1YWw6XG5cbiAgICAgInggaXMgeSIgaW1wbGllcyAieCA9PSB5IlxuXG4qIENvbXBhcmlzb24gc2hvdWxkIGJlIHN5bW1ldHJpYy4gSW4gb3RoZXIgd29yZHMsIHRoZSBmb2xsb3dpbmdcbiAgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuXG4gICAgICJ4ID09IHkiIGFuZCAieSA9PSB4IlxuXG4gICAgICJ4ICE9IHkiIGFuZCAieSAhPSB4IlxuXG4gICAgICJ4IDwgeSIgYW5kICJ5ID4geCJcblxuICAgICAieCA8PSB5IiBhbmQgInkgPj0geCJcblxuKiBDb21wYXJpc29uIHNob3VsZCBiZSB0cmFuc2l0aXZlLiBUaGUgZm9sbG93aW5nIChub24tZXhoYXVzdGl2ZSlcbiAgZXhhbXBsZXMgaWxsdXN0cmF0ZSB0aGF0OlxuXG4gICAgICJ4ID4geSBhbmQgeSA+IHoiIGltcGxpZXMgInggPiB6IlxuXG4gICAgICJ4IDwgeSBhbmQgeSA8PSB6IiBpbXBsaWVzICJ4IDwgeiJcblxuKiBJbnZlcnNlIGNvbXBhcmlzb24gc2hvdWxkIHJlc3VsdCBpbiB0aGUgYm9vbGVhbiBuZWdhdGlvbi4gSW4gb3RoZXJcbiAgd29yZHMsIHRoZSBmb2xsb3dpbmcgZXhwcmVzc2lvbnMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgcmVzdWx0OlxuXG4gICAgICJ4ID09IHkiIGFuZCAibm90IHggIT0geSJcblxuICAgICAieCA8IHkiIGFuZCAibm90IHggPj0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcblxuICAgICAieCA+IHkiIGFuZCAibm90IHggPD0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcblxuICBUaGUgbGFzdCB0d28gZXhwcmVzc2lvbnMgYXBwbHkgdG8gdG90YWxseSBvcmRlcmVkIGNvbGxlY3Rpb25zIChlLmcuXG4gIHRvIHNlcXVlbmNlcywgYnV0IG5vdCB0byBzZXRzIG9yIG1hcHBpbmdzKS4gU2VlIGFsc28gdGhlXG4gICJ0b3RhbF9vcmRlcmluZygpIiBkZWNvcmF0b3IuXG5cblB5dGhvbiBkb2VzIG5vdCBlbmZvcmNlIHRoZXNlIGNvbnNpc3RlbmN5IHJ1bGVzLiBJbiBmYWN0LCB0aGVcbm5vdC1hLW51bWJlciB2YWx1ZXMgYXJlIGFuIGV4YW1wbGUgZm9yIG5vdCBmb2xsb3dpbmcgdGhlc2UgcnVsZXMuXG5cblxuTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluIHMiXG5ldmFsdWF0ZXMgdG8gdHJ1ZSBpZiAqeCogaXMgYSBtZW1iZXIgb2YgKnMqLCBhbmQgZmFsc2Ugb3RoZXJ3aXNlLiAgInhcbm5vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbmFuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICJpbiIgdGVzdHNcbndoZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbmxpc3QsIHR1cGxlLCBzZXQsIGZyb3plbnNldCwgZGljdCwgb3IgY29sbGVjdGlvbnMuZGVxdWUsIHRoZVxuZXhwcmVzc2lvbiAieCBpbiB5IiBpcyBlcXVpdmFsZW50IHRvICJhbnkoeCBpcyBlIG9yIHggPT0gZSBmb3IgZSBpblxueSkiLlxuXG5Gb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgKngqIGlzXG5hIHN1YnN0cmluZyBvZiAqeSouICBBbiBlcXVpdmFsZW50IHRlc3QgaXMgInkuZmluZCh4KSAhPSAtMSIuICBFbXB0eVxuc3RyaW5ncyBhcmUgYWx3YXlzIGNvbnNpZGVyZWQgdG8gYmUgYSBzdWJzdHJpbmcgb2YgYW55IG90aGVyIHN0cmluZyxcbnNvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZGVmaW5lIHRoZSAiX19jb250YWluc19fKCkiIG1ldGhvZCwgInhcbmluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuXG5Gb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiIGJ1dCBkb1xuZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG5pcyBwcm9kdWNlZCB3aGlsZSBpdGVyYXRpbmcgb3ZlciAieSIuICBJZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkXG5kdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24uXG5cbkxhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgZGVmaW5lc1xuIl9fZ2V0aXRlbV9fKCkiLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmIHRoZXJlIGlzIGEgbm9uLVxubmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG5pbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55IG90aGVyXG5leGNlcHRpb24gaXMgcmFpc2VkLCBpdCBpcyBhcyBpZiAiaW4iIHJhaXNlZCB0aGF0IGV4Y2VwdGlvbikuXG5cblRoZSBvcGVyYXRvciAibm90IGluIiBpcyBkZWZpbmVkIHRvIGhhdmUgdGhlIGludmVyc2UgdHJ1ZSB2YWx1ZSBvZlxuImluIi5cblxuXG5JZGVudGl0eSBjb21wYXJpc29uc1xuPT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdG9ycyAiaXMiIGFuZCAiaXMgbm90IiB0ZXN0IGZvciBvYmplY3QgaWRlbnRpdHk6ICJ4IGlzIHkiIGlzXG50cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICAieCBpcyBub3QgeSJcbnlpZWxkcyB0aGUgaW52ZXJzZSB0cnV0aCB2YWx1ZS4gWzRdXG4nLAotICdjb21wb3VuZCc6IHUnXG5Db21wb3VuZCBzdGF0ZW1lbnRzXG4qKioqKioqKioqKioqKioqKioqXG5cbkNvbXBvdW5kIHN0YXRlbWVudHMgY29udGFpbiAoZ3JvdXBzIG9mKSBvdGhlciBzdGF0ZW1lbnRzOyB0aGV5IGFmZmVjdFxub3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICBJblxuZ2VuZXJhbCwgY29tcG91bmQgc3RhdGVtZW50cyBzcGFuIG11bHRpcGxlIGxpbmVzLCBhbHRob3VnaCBpbiBzaW1wbGVcbmluY2FybmF0aW9ucyBhIHdob2xlIGNvbXBvdW5kIHN0YXRlbWVudCBtYXkgYmUgY29udGFpbmVkIGluIG9uZSBsaW5lLlxuXG5UaGUgImlmIiwgIndoaWxlIiBhbmQgImZvciIgc3RhdGVtZW50cyBpbXBsZW1lbnQgdHJhZGl0aW9uYWwgY29udHJvbFxuZmxvdyBjb25zdHJ1Y3RzLiAgInRyeSIgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cFxuY29kZSBmb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzLCB3aGlsZSB0aGUgIndpdGgiIHN0YXRlbWVudCBhbGxvd3MgdGhlXG5leGVjdXRpb24gb2YgaW5pdGlhbGl6YXRpb24gYW5kIGZpbmFsaXphdGlvbiBjb2RlIGFyb3VuZCBhIGJsb2NrIG9mXG5jb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHkgY29tcG91bmRcbnN0YXRlbWVudHMuXG5cbkEgY29tcG91bmQgc3RhdGVtZW50IGNvbnNpc3RzIG9mIG9uZSBvciBtb3JlIFwnY2xhdXNlcy5cJyAgQSBjbGF1c2VcbmNvbnNpc3RzIG9mIGEgaGVhZGVyIGFuZCBhIFwnc3VpdGUuXCcgIFRoZSBjbGF1c2UgaGVhZGVycyBvZiBhXG5wYXJ0aWN1bGFyIGNvbXBvdW5kIHN0YXRlbWVudCBhcmUgYWxsIGF0IHRoZSBzYW1lIGluZGVudGF0aW9uIGxldmVsLlxuRWFjaCBjbGF1c2UgaGVhZGVyIGJlZ2lucyB3aXRoIGEgdW5pcXVlbHkgaWRlbnRpZnlpbmcga2V5d29yZCBhbmQgZW5kc1xud2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG5jbGF1c2UuICBBIHN1aXRlIGNhbiBiZSBvbmUgb3IgbW9yZSBzZW1pY29sb24tc2VwYXJhdGVkIHNpbXBsZVxuc3RhdGVtZW50cyBvbiB0aGUgc2FtZSBsaW5lIGFzIHRoZSBoZWFkZXIsIGZvbGxvd2luZyB0aGUgaGVhZGVyXCdzXG5jb2xvbiwgb3IgaXQgY2FuIGJlIG9uZSBvciBtb3JlIGluZGVudGVkIHN0YXRlbWVudHMgb24gc3Vic2VxdWVudFxubGluZXMuICBPbmx5IHRoZSBsYXR0ZXIgZm9ybSBvZiBhIHN1aXRlIGNhbiBjb250YWluIG5lc3RlZCBjb21wb3VuZFxuc3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG5cJ3QgYmVcbmNsZWFyIHRvIHdoaWNoICJpZiIgY2xhdXNlIGEgZm9sbG93aW5nICJlbHNlIiBjbGF1c2Ugd291bGQgYmVsb25nOlxuXG4gICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG5cbkFsc28gbm90ZSB0aGF0IHRoZSBzZW1pY29sb24gYmluZHMgdGlnaHRlciB0aGFuIHRoZSBjb2xvbiBpbiB0aGlzXG5jb250ZXh0LCBzbyB0aGF0IGluIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSwgZWl0aGVyIGFsbCBvciBub25lIG9mIHRoZVxuInByaW50KCkiIGNhbGxzIGFyZSBleGVjdXRlZDpcblxuICAgaWYgeCA8IHkgPCB6OiBwcmludCh4KTsgcHJpbnQoeSk7IHByaW50KHopXG5cblN1bW1hcml6aW5nOlxuXG4gICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IHdoaWxlX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgZm9yX3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbiAgICAgICAgICAgICAgICAgICAgIHwgd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGZ1bmNkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbiAgICAgICAgICAgICAgICAgICAgIHwgYXN5bmNfd2l0aF9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX2Zvcl9zdG10XG4gICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX2Z1bmNkZWZcbiAgIHN1aXRlICAgICAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgTkVXTElORSBJTkRFTlQgc3RhdGVtZW50KyBERURFTlRcbiAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuICAgc3RtdF9saXN0ICAgICA6Oj0gc2ltcGxlX3N0bXQgKCI7IiBzaW1wbGVfc3RtdCkqIFsiOyJdXG5cbk5vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSAiTkVXTElORSIgcG9zc2libHkgZm9sbG93ZWQgYnkgYVxuIkRFREVOVCIuICBBbHNvIG5vdGUgdGhhdCBvcHRpb25hbCBjb250aW51YXRpb24gY2xhdXNlcyBhbHdheXMgYmVnaW5cbndpdGggYSBrZXl3b3JkIHRoYXQgY2Fubm90IHN0YXJ0IGEgc3RhdGVtZW50LCB0aHVzIHRoZXJlIGFyZSBub1xuYW1iaWd1aXRpZXMgKHRoZSBcJ2RhbmdsaW5nICJlbHNlIlwnIHByb2JsZW0gaXMgc29sdmVkIGluIFB5dGhvbiBieVxucmVxdWlyaW5nIG5lc3RlZCAiaWYiIHN0YXRlbWVudHMgdG8gYmUgaW5kZW50ZWQpLlxuXG5UaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zIHBsYWNlc1xuZWFjaCBjbGF1c2Ugb24gYSBzZXBhcmF0ZSBsaW5lIGZvciBjbGFyaXR5LlxuXG5cblRoZSAiaWYiIHN0YXRlbWVudFxuPT09PT09PT09PT09PT09PT09XG5cblRoZSAiaWYiIHN0YXRlbWVudCBpcyB1c2VkIGZvciBjb25kaXRpb25hbCBleGVjdXRpb246XG5cbiAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICggImVsaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlICkqXG4gICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuSXQgc2VsZWN0cyBleGFjdGx5IG9uZSBvZiB0aGUgc3VpdGVzIGJ5IGV2YWx1YXRpbmcgdGhlIGV4cHJlc3Npb25zIG9uZVxuYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiAqQm9vbGVhbiBvcGVyYXRpb25zKlxuZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4oYW5kIG5vIG90aGVyIHBhcnQgb2YgdGhlICJpZiIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCkuXG5JZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG5wcmVzZW50LCBpcyBleGVjdXRlZC5cblxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgIndoaWxlIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgcmVwZWF0ZWQgZXhlY3V0aW9uIGFzIGxvbmcgYXMgYW5cbmV4cHJlc3Npb24gaXMgdHJ1ZTpcblxuICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cblRoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsIGV4ZWN1dGVzIHRoZVxuZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0IHRpbWVcbml0IGlzIHRlc3RlZCkgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZFxuYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG5cbkEgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlIGxvb3BcbndpdGhvdXQgZXhlY3V0aW5nIHRoZSAiZWxzZSIgY2xhdXNlXCdzIHN1aXRlLiAgQSAiY29udGludWUiIHN0YXRlbWVudFxuZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyBiYWNrXG50byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuXG5cblRoZSAiZm9yIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT1cblxuVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSBzZXF1ZW5jZVxuKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4iZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uKSxcbnRoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgbG9vcFxudGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBjb250aW51ZXNcbndpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG5pdGVtLlxuXG5UaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0IGxpc3QuXG5UaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyBpbmNsdWRpbmdcbnRob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcblxuICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuICAgICAgIHByaW50KGkpXG4gICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIG5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgaVxuOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcblxuXG5UaGUgInRyeSIgc3RhdGVtZW50XG49PT09PT09PT09PT09PT09PT09XG5cblRoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCBjb2RlXG5mb3IgYSBncm91cCBvZiBzdGF0ZW1lbnRzOlxuXG4gICB0cnlfc3RtdCAgOjo9IHRyeTFfc3RtdCB8IHRyeTJfc3RtdFxuICAgdHJ5MV9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgc3VpdGUpK1xuICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbiAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4gICB0cnkyX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgICAiZmluYWxseSIgIjoiIHN1aXRlXG5cblRoZSAiZXhjZXB0IiBjbGF1c2Uocykgc3BlY2lmeSBvbmUgb3IgbW9yZSBleGNlcHRpb24gaGFuZGxlcnMuIFdoZW4gbm9cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbmV4ZWN1dGVkLiBXaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIHN1aXRlLCBhIHNlYXJjaCBmb3IgYW5cbmV4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0IGNsYXVzZXNcbmluIHR1cm4gdW50aWwgb25lIGlzIGZvdW5kIHRoYXQgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLiAgQW4gZXhwcmVzc2lvbi1cbmxlc3MgZXhjZXB0IGNsYXVzZSwgaWYgcHJlc2VudCwgbXVzdCBiZSBsYXN0OyBpdCBtYXRjaGVzIGFueVxuZXhjZXB0aW9uLiAgRm9yIGFuIGV4Y2VwdCBjbGF1c2Ugd2l0aCBhbiBleHByZXNzaW9uLCB0aGF0IGV4cHJlc3Npb25cbmlzIGV2YWx1YXRlZCwgYW5kIHRoZSBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uIGlmIHRoZSByZXN1bHRpbmdcbm9iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzIGNvbXBhdGlibGVcbndpdGggYW4gZXhjZXB0aW9uIGlmIGl0IGlzIHRoZSBjbGFzcyBvciBhIGJhc2UgY2xhc3Mgb2YgdGhlIGV4Y2VwdGlvblxub2JqZWN0IG9yIGEgdHVwbGUgY29udGFpbmluZyBhbiBpdGVtIGNvbXBhdGlibGUgd2l0aCB0aGUgZXhjZXB0aW9uLlxuXG5JZiBubyBleGNlcHQgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiwgdGhlIHNlYXJjaCBmb3IgYW4gZXhjZXB0aW9uXG5oYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gc3RhY2suXG5bMV1cblxuSWYgdGhlIGV2YWx1YXRpb24gb2YgYW4gZXhwcmVzc2lvbiBpbiB0aGUgaGVhZGVyIG9mIGFuIGV4Y2VwdCBjbGF1c2VcbnJhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyBjYW5jZWxlZCBhbmRcbmEgc2VhcmNoIHN0YXJ0cyBmb3IgdGhlIG5ldyBleGNlcHRpb24gaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uXG50aGUgY2FsbCBzdGFjayAoaXQgaXMgdHJlYXRlZCBhcyBpZiB0aGUgZW50aXJlICJ0cnkiIHN0YXRlbWVudCByYWlzZWRcbnRoZSBleGNlcHRpb24pLlxuXG5XaGVuIGEgbWF0Y2hpbmcgZXhjZXB0IGNsYXVzZSBpcyBmb3VuZCwgdGhlIGV4Y2VwdGlvbiBpcyBhc3NpZ25lZCB0b1xudGhlIHRhcmdldCBzcGVjaWZpZWQgYWZ0ZXIgdGhlICJhcyIga2V5d29yZCBpbiB0aGF0IGV4Y2VwdCBjbGF1c2UsIGlmXG5wcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQuICBBbGwgZXhjZXB0XG5jbGF1c2VzIG11c3QgaGF2ZSBhbiBleGVjdXRhYmxlIGJsb2NrLiAgV2hlbiB0aGUgZW5kIG9mIHRoaXMgYmxvY2sgaXNcbnJlYWNoZWQsIGV4ZWN1dGlvbiBjb250aW51ZXMgbm9ybWFsbHkgYWZ0ZXIgdGhlIGVudGlyZSB0cnkgc3RhdGVtZW50LlxuKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSBleGNlcHRpb24sXG5hbmQgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlIHRyeSBjbGF1c2Ugb2YgdGhlIGlubmVyIGhhbmRsZXIsIHRoZVxub3V0ZXIgaGFuZGxlciB3aWxsIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbi4pXG5cbldoZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyBjbGVhcmVkXG5hdCB0aGUgZW5kIG9mIHRoZSBleGNlcHQgY2xhdXNlLiAgVGhpcyBpcyBhcyBpZlxuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIGZvb1xuXG53YXMgdHJhbnNsYXRlZCB0b1xuXG4gICBleGNlcHQgRSBhcyBOOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgZm9vXG4gICAgICAgZmluYWxseTpcbiAgICAgICAgICAgZGVsIE5cblxuVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byBiZVxuYWJsZSB0byByZWZlciB0byBpdCBhZnRlciB0aGUgZXhjZXB0IGNsYXVzZS4gIEV4Y2VwdGlvbnMgYXJlIGNsZWFyZWRcbmJlY2F1c2Ugd2l0aCB0aGUgdHJhY2ViYWNrIGF0dGFjaGVkIHRvIHRoZW0sIHRoZXkgZm9ybSBhIHJlZmVyZW5jZVxuY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lIGFsaXZlXG51bnRpbCB0aGUgbmV4dCBnYXJiYWdlIGNvbGxlY3Rpb24gb2NjdXJzLlxuXG5CZWZvcmUgYW4gZXhjZXB0IGNsYXVzZVwncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbmV4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCB2aWFcbiJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZiB0aGVcbmV4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopIGlkZW50aWZ5aW5nIHRoZSBwb2ludCBpbiB0aGVcbnByb2dyYW0gd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZC4gICJzeXMuZXhjX2luZm8oKSIgdmFsdWVzIGFyZVxucmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gcmV0dXJuaW5nXG5mcm9tIGEgZnVuY3Rpb24gdGhhdCBoYW5kbGVkIGFuIGV4Y2VwdGlvbi5cblxuVGhlIG9wdGlvbmFsICJlbHNlIiBjbGF1c2UgaXMgZXhlY3V0ZWQgaWYgYW5kIHdoZW4gY29udHJvbCBmbG93cyBvZmZcbnRoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgYXJlXG5ub3QgaGFuZGxlZCBieSB0aGUgcHJlY2VkaW5nICJleGNlcHQiIGNsYXVzZXMuXG5cbklmICJmaW5hbGx5IiBpcyBwcmVzZW50LCBpdCBzcGVjaWZpZXMgYSBcJ2NsZWFudXBcJyBoYW5kbGVyLiAgVGhlICJ0cnkiXG5jbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgSWYgYW5cbmV4Y2VwdGlvbiBvY2N1cnMgaW4gYW55IG9mIHRoZSBjbGF1c2VzIGFuZCBpcyBub3QgaGFuZGxlZCwgdGhlXG5leGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkLiAgSWZcbnRoZXJlIGlzIGEgc2F2ZWQgZXhjZXB0aW9uIGl0IGlzIHJlLXJhaXNlZCBhdCB0aGUgZW5kIG9mIHRoZSAiZmluYWxseSJcbmNsYXVzZS4gIElmIHRoZSAiZmluYWxseSIgY2xhdXNlIHJhaXNlcyBhbm90aGVyIGV4Y2VwdGlvbiwgdGhlIHNhdmVkXG5leGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UgZXhlY3V0ZXMgYSAicmV0dXJuIiBvciAiYnJlYWsiIHN0YXRlbWVudCwgdGhlIHNhdmVkIGV4Y2VwdGlvblxuaXMgZGlzY2FyZGVkOlxuXG4gICA+Pj4gZGVmIGYoKTpcbiAgIC4uLiAgICAgdHJ5OlxuICAgLi4uICAgICAgICAgMS8wXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gNDJcbiAgIC4uLlxuICAgPj4+IGYoKVxuICAgNDJcblxuVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtIGR1cmluZ1xuZXhlY3V0aW9uIG9mIHRoZSAiZmluYWxseSIgY2xhdXNlLlxuXG5XaGVuIGEgInJldHVybiIsICJicmVhayIgb3IgImNvbnRpbnVlIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgaW4gdGhlXG4idHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiBjbGF1c2UgaXNcbmFsc28gZXhlY3V0ZWQgXCdvbiB0aGUgd2F5IG91dC5cJyBBICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGlsbGVnYWwgaW5cbnRoZSAiZmluYWxseSIgY2xhdXNlLiAoVGhlIHJlYXNvbiBpcyBhIHByb2JsZW0gd2l0aCB0aGUgY3VycmVudFxuaW1wbGVtZW50YXRpb24gLS0tIHRoaXMgcmVzdHJpY3Rpb24gbWF5IGJlIGxpZnRlZCBpbiB0aGUgZnV0dXJlKS5cblxuVGhlIHJldHVybiB2YWx1ZSBvZiBhIGZ1bmN0aW9uIGlzIGRldGVybWluZWQgYnkgdGhlIGxhc3QgInJldHVybiJcbnN0YXRlbWVudCBleGVjdXRlZC4gIFNpbmNlIHRoZSAiZmluYWxseSIgY2xhdXNlIGFsd2F5cyBleGVjdXRlcywgYVxuInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzIGJlIHRoZVxubGFzdCBvbmUgZXhlY3V0ZWQ6XG5cbiAgID4+PiBkZWYgZm9vKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIHJldHVybiBcJ3RyeVwnXG4gICAuLi4gICAgIGZpbmFsbHk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdmaW5hbGx5XCdcbiAgIC4uLlxuICAgPj4+IGZvbygpXG4gICBcJ2ZpbmFsbHlcJ1xuXG5BZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbipFeGNlcHRpb25zKiwgYW5kIGluZm9ybWF0aW9uIG9uIHVzaW5nIHRoZSAicmFpc2UiIHN0YXRlbWVudCB0b1xuZ2VuZXJhdGUgZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiAqVGhlIHJhaXNlIHN0YXRlbWVudCouXG5cblxuVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbj09PT09PT09PT09PT09PT09PT09XG5cblRoZSAid2l0aCIgc3RhdGVtZW50IGlzIHVzZWQgdG8gd3JhcCB0aGUgZXhlY3V0aW9uIG9mIGEgYmxvY2sgd2l0aFxubWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiAqV2l0aCBTdGF0ZW1lbnRcbkNvbnRleHQgTWFuYWdlcnMqKS4gVGhpcyBhbGxvd3MgY29tbW9uICJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbnVzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cblxuICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4gICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuXG5UaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyBhc1xuZm9sbG93czpcblxuMS4gVGhlIGNvbnRleHQgZXhwcmVzc2lvbiAodGhlIGV4cHJlc3Npb24gZ2l2ZW4gaW4gdGhlICJ3aXRoX2l0ZW0iKVxuICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cblxuMi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgaXMgbG9hZGVkIGZvciBsYXRlciB1c2UuXG5cbjMuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZW50ZXJfXygpIiBtZXRob2QgaXMgaW52b2tlZC5cblxuNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4gICB2YWx1ZSBmcm9tICJfX2VudGVyX18oKSIgaXMgYXNzaWduZWQgdG8gaXQuXG5cbiAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgIl9fZW50ZXJfXygpIlxuICAgICBtZXRob2QgcmV0dXJucyB3aXRob3V0IGFuIGVycm9yLCB0aGVuICJfX2V4aXRfXygpIiB3aWxsIGFsd2F5cyBiZVxuICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4gICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3Igb2NjdXJyaW5nXG4gICAgIHdpdGhpbiB0aGUgc3VpdGUgd291bGQgYmUuIFNlZSBzdGVwIDYgYmVsb3cuXG5cbjUuIFRoZSBzdWl0ZSBpcyBleGVjdXRlZC5cblxuNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuICAgZXhjZXB0aW9uIGNhdXNlZCB0aGUgc3VpdGUgdG8gYmUgZXhpdGVkLCBpdHMgdHlwZSwgdmFsdWUsIGFuZFxuICAgdHJhY2ViYWNrIGFyZSBwYXNzZWQgYXMgYXJndW1lbnRzIHRvICJfX2V4aXRfXygpIi4gT3RoZXJ3aXNlLCB0aHJlZVxuICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG5cbiAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuIHZhbHVlXG4gICBmcm9tIHRoZSAiX19leGl0X18oKSIgbWV0aG9kIHdhcyBmYWxzZSwgdGhlIGV4Y2VwdGlvbiBpcyByZXJhaXNlZC5cbiAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgYW5kXG4gICBleGVjdXRpb24gY29udGludWVzIHdpdGggdGhlIHN0YXRlbWVudCBmb2xsb3dpbmcgdGhlICJ3aXRoIlxuICAgc3RhdGVtZW50LlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBmb3IgYW55IHJlYXNvbiBvdGhlciB0aGFuIGFuIGV4Y2VwdGlvbiwgdGhlXG4gICByZXR1cm4gdmFsdWUgZnJvbSAiX19leGl0X18oKSIgaXMgaWdub3JlZCwgYW5kIGV4ZWN1dGlvbiBwcm9jZWVkc1xuICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cblxuV2l0aCBtb3JlIHRoYW4gb25lIGl0ZW0sIHRoZSBjb250ZXh0IG1hbmFnZXJzIGFyZSBwcm9jZXNzZWQgYXMgaWZcbm11bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuXG4gICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbiAgICAgICBzdWl0ZVxuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIHdpdGggQSgpIGFzIGE6XG4gICAgICAgd2l0aCBCKCkgYXMgYjpcbiAgICAgICAgICAgc3VpdGVcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCBleHByZXNzaW9ucy5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuRnVuY3Rpb24gZGVmaW5pdGlvbnNcbj09PT09PT09PT09PT09PT09PT09XG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBkZWZpbmVzIGEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKTpcblxuICAgZnVuY2RlZiAgICAgICAgOjo9IFtkZWNvcmF0b3JzXSAiZGVmIiBmdW5jbmFtZSAiKCIgW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4gICBkZWNvcmF0b3JzICAgICA6Oj0gZGVjb3JhdG9yK1xuICAgZGVjb3JhdG9yICAgICAgOjo9ICJAIiBkb3R0ZWRfbmFtZSBbIigiIFthcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbiAgIGRvdHRlZF9uYW1lICAgIDo6PSBpZGVudGlmaWVyICgiLiIgaWRlbnRpZmllcikqXG4gICBwYXJhbWV0ZXJfbGlzdCA6Oj0gKGRlZnBhcmFtZXRlciAiLCIpKlxuICAgICAgICAgICAgICAgICAgICAgIHwgIioiIFtwYXJhbWV0ZXJdICgiLCIgZGVmcGFyYW1ldGVyKSogWyIsIiAiKioiIHBhcmFtZXRlcl1cbiAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyXG4gICAgICAgICAgICAgICAgICAgICAgfCBkZWZwYXJhbWV0ZXIgWyIsIl0gKVxuICAgcGFyYW1ldGVyICAgICAgOjo9IGlkZW50aWZpZXIgWyI6IiBleHByZXNzaW9uXVxuICAgZGVmcGFyYW1ldGVyICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4gICBmdW5jbmFtZSAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uIGJpbmRzXG50aGUgZnVuY3Rpb24gbmFtZSBpbiB0aGUgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UgdG8gYSBmdW5jdGlvbiBvYmplY3RcbihhIHdyYXBwZXIgYXJvdW5kIHRoZSBleGVjdXRhYmxlIGNvZGUgZm9yIHRoZSBmdW5jdGlvbikuICBUaGlzXG5mdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gdGhlIGN1cnJlbnQgZ2xvYmFsIG5hbWVzcGFjZVxuYXMgdGhlIGdsb2JhbCBuYW1lc3BhY2UgdG8gYmUgdXNlZCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuXG5cblRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgZ2V0c1xuZXhlY3V0ZWQgb25seSB3aGVuIHRoZSBmdW5jdGlvbiBpcyBjYWxsZWQuIFszXVxuXG5BIGZ1bmN0aW9uIGRlZmluaXRpb24gbWF5IGJlIHdyYXBwZWQgYnkgb25lIG9yIG1vcmUgKmRlY29yYXRvcipcbmV4cHJlc3Npb25zLiBEZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIGV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBpc1xuZGVmaW5lZCwgaW4gdGhlIHNjb3BlIHRoYXQgY29udGFpbnMgdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24uICBUaGVcbnJlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gb2JqZWN0XG5hcyB0aGUgb25seSBhcmd1bWVudC4gVGhlIHJldHVybmVkIHZhbHVlIGlzIGJvdW5kIHRvIHRoZSBmdW5jdGlvbiBuYW1lXG5pbnN0ZWFkIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuICBNdWx0aXBsZSBkZWNvcmF0b3JzIGFyZSBhcHBsaWVkIGluXG5uZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuXG4gICBAZjEoYXJnKVxuICAgQGYyXG4gICBkZWYgZnVuYygpOiBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgZGVmIGZ1bmMoKTogcGFzc1xuICAgZnVuYyA9IGYxKGFyZykoZjIoZnVuYykpXG5cbldoZW4gb25lIG9yIG1vcmUgKnBhcmFtZXRlcnMqIGhhdmUgdGhlIGZvcm0gKnBhcmFtZXRlciogIj0iXG4qZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcy4iXG5Gb3IgYSBwYXJhbWV0ZXIgd2l0aCBhIGRlZmF1bHQgdmFsdWUsIHRoZSBjb3JyZXNwb25kaW5nICphcmd1bWVudCogbWF5XG5iZSBvbWl0dGVkIGZyb20gYSBjYWxsLCBpbiB3aGljaCBjYXNlIHRoZSBwYXJhbWV0ZXJcJ3MgZGVmYXVsdCB2YWx1ZSBpc1xuc3Vic3RpdHV0ZWQuICBJZiBhIHBhcmFtZXRlciBoYXMgYSBkZWZhdWx0IHZhbHVlLCBhbGwgZm9sbG93aW5nXG5wYXJhbWV0ZXJzIHVwIHVudGlsIHRoZSAiIioiIiBtdXN0IGFsc28gaGF2ZSBhIGRlZmF1bHQgdmFsdWUgLS0tIHRoaXNcbmlzIGEgc3ludGFjdGljIHJlc3RyaWN0aW9uIHRoYXQgaXMgbm90IGV4cHJlc3NlZCBieSB0aGUgZ3JhbW1hci5cblxuKipEZWZhdWx0IHBhcmFtZXRlciB2YWx1ZXMgYXJlIGV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQgd2hlbiB0aGVcbmZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSBleHByZXNzaW9uIGlzXG5ldmFsdWF0ZWQgb25jZSwgd2hlbiB0aGUgZnVuY3Rpb24gaXMgZGVmaW5lZCwgYW5kIHRoYXQgdGhlIHNhbWUgInByZS1cbmNvbXB1dGVkIiB2YWx1ZSBpcyB1c2VkIGZvciBlYWNoIGNhbGwuICBUaGlzIGlzIGVzcGVjaWFsbHkgaW1wb3J0YW50XG50byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoIGFzIGFcbmxpc3Qgb3IgYSBkaWN0aW9uYXJ5OiBpZiB0aGUgZnVuY3Rpb24gbW9kaWZpZXMgdGhlIG9iamVjdCAoZS5nLiBieVxuYXBwZW5kaW5nIGFuIGl0ZW0gdG8gYSBsaXN0KSwgdGhlIGRlZmF1bHQgdmFsdWUgaXMgaW4gZWZmZWN0IG1vZGlmaWVkLlxuVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgdG8gdXNlXG4iTm9uZSIgYXMgdGhlIGRlZmF1bHQsIGFuZCBleHBsaWNpdGx5IHRlc3QgZm9yIGl0IGluIHRoZSBib2R5IG9mIHRoZVxuZnVuY3Rpb24sIGUuZy46XG5cbiAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbiAgICAgICBpZiBwZW5ndWluIGlzIE5vbmU6XG4gICAgICAgICAgIHBlbmd1aW4gPSBbXVxuICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbiAgICAgICByZXR1cm4gcGVuZ3VpblxuXG5GdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb25cbipDYWxscyouIEEgZnVuY3Rpb24gY2FsbCBhbHdheXMgYXNzaWducyB2YWx1ZXMgdG8gYWxsIHBhcmFtZXRlcnNcbm1lbnRpb25lZCBpbiB0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbVxua2V5d29yZCBhcmd1bWVudHMsIG9yIGZyb20gZGVmYXVsdCB2YWx1ZXMuICBJZiB0aGUgZm9ybVxuIiIqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgdHVwbGUgcmVjZWl2aW5nIGFueVxuZXhjZXNzIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuICBJZiB0aGVcbmZvcm0gIiIqKmlkZW50aWZpZXIiIiBpcyBwcmVzZW50LCBpdCBpcyBpbml0aWFsaXplZCB0byBhIG5ld1xuZGljdGlvbmFyeSByZWNlaXZpbmcgYW55IGV4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cywgZGVmYXVsdGluZyB0byBhIG5ld1xuZW1wdHkgZGljdGlvbmFyeS4gUGFyYW1ldGVycyBhZnRlciAiIioiIiBvciAiIippZGVudGlmaWVyIiIgYXJlXG5rZXl3b3JkLW9ubHkgcGFyYW1ldGVycyBhbmQgbWF5IG9ubHkgYmUgcGFzc2VkIHVzZWQga2V5d29yZCBhcmd1bWVudHMuXG5cblBhcmFtZXRlcnMgbWF5IGhhdmUgYW5ub3RhdGlvbnMgb2YgdGhlIGZvcm0gIiI6IGV4cHJlc3Npb24iIiBmb2xsb3dpbmdcbnRoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuIHRob3NlXG5vZiB0aGUgZm9ybSAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiLiAgRnVuY3Rpb25zIG1heSBoYXZlXG4icmV0dXJuIiBhbm5vdGF0aW9uIG9mIHRoZSBmb3JtICIiLT4gZXhwcmVzc2lvbiIiIGFmdGVyIHRoZSBwYXJhbWV0ZXJcbmxpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCBhcmVcbmV2YWx1YXRlZCB3aGVuIHRoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLiAgQW5ub3RhdGlvbnMgbWF5XG5iZSBldmFsdWF0ZWQgaW4gYSBkaWZmZXJlbnQgb3JkZXIgdGhhbiB0aGV5IGFwcGVhciBpbiB0aGUgc291cmNlIGNvZGUuXG5UaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuZnVuY3Rpb24uICBUaGUgYW5ub3RhdGlvbiB2YWx1ZXMgYXJlIGF2YWlsYWJsZSBhcyB2YWx1ZXMgb2YgYVxuZGljdGlvbmFyeSBrZXllZCBieSB0aGUgcGFyYW1ldGVyc1wnIG5hbWVzIGluIHRoZSAiX19hbm5vdGF0aW9uc19fIlxuYXR0cmlidXRlIG9mIHRoZSBmdW5jdGlvbiBvYmplY3QuXG5cbkl0IGlzIGFsc28gcG9zc2libGUgdG8gY3JlYXRlIGFub255bW91cyBmdW5jdGlvbnMgKGZ1bmN0aW9ucyBub3QgYm91bmRcbnRvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuZXhwcmVzc2lvbnMsIGRlc2NyaWJlZCBpbiBzZWN0aW9uICpMYW1iZGFzKi4gIE5vdGUgdGhhdCB0aGUgbGFtYmRhXG5leHByZXNzaW9uIGlzIG1lcmVseSBhIHNob3J0aGFuZCBmb3IgYSBzaW1wbGlmaWVkIGZ1bmN0aW9uIGRlZmluaXRpb247XG5hIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSAiImRlZiIiIHN0YXRlbWVudCBjYW4gYmUgcGFzc2VkIGFyb3VuZCBvclxuYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSBsYW1iZGFcbmV4cHJlc3Npb24uICBUaGUgIiJkZWYiIiBmb3JtIGlzIGFjdHVhbGx5IG1vcmUgcG93ZXJmdWwgc2luY2UgaXRcbmFsbG93cyB0aGUgZXhlY3V0aW9uIG9mIG11bHRpcGxlIHN0YXRlbWVudHMgYW5kIGFubm90YXRpb25zLlxuXG4qKlByb2dyYW1tZXJcJ3Mgbm90ZToqKiBGdW5jdGlvbnMgYXJlIGZpcnN0LWNsYXNzIG9iamVjdHMuICBBICIiZGVmIiJcbnN0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuZnVuY3Rpb24gdGhhdCBjYW4gYmUgcmV0dXJuZWQgb3IgcGFzc2VkIGFyb3VuZC4gIEZyZWUgdmFyaWFibGVzIHVzZWRcbmluIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSBmdW5jdGlvblxuY29udGFpbmluZyB0aGUgZGVmLiAgU2VlIHNlY3Rpb24gKk5hbWluZyBhbmQgYmluZGluZyogZm9yIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTA3KiogLSBGdW5jdGlvbiBBbm5vdGF0aW9uc1xuXG4gICAgIFRoZSBvcmlnaW5hbCBzcGVjaWZpY2F0aW9uIGZvciBmdW5jdGlvbiBhbm5vdGF0aW9ucy5cblxuXG5DbGFzcyBkZWZpbml0aW9uc1xuPT09PT09PT09PT09PT09PT1cblxuQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmRcbnR5cGUgaGllcmFyY2h5Kik6XG5cbiAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgc3VpdGVcbiAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcblxuQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlIGxpc3RcbnVzdWFsbHkgZ2l2ZXMgYSBsaXN0IG9mIGJhc2UgY2xhc3NlcyAoc2VlICpDdXN0b21pemluZyBjbGFzcyBjcmVhdGlvbipcbmZvciBtb3JlIGFkdmFuY2VkIHVzZXMpLCBzbyBlYWNoIGl0ZW0gaW4gdGhlIGxpc3Qgc2hvdWxkIGV2YWx1YXRlIHRvIGFcbmNsYXNzIG9iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2Vcbmxpc3QgaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG5cbiAgIGNsYXNzIEZvbzpcbiAgICAgICBwYXNzXG5cbmlzIGVxdWl2YWxlbnQgdG9cblxuICAgY2xhc3MgRm9vKG9iamVjdCk6XG4gICAgICAgcGFzc1xuXG5UaGUgY2xhc3NcJ3Mgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBpbiBhIG5ldyBleGVjdXRpb24gZnJhbWUgKHNlZVxuKk5hbWluZyBhbmQgYmluZGluZyopLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCB0aGVcbm9yaWdpbmFsIGdsb2JhbCBuYW1lc3BhY2UuIChVc3VhbGx5LCB0aGUgc3VpdGUgY29udGFpbnMgbW9zdGx5XG5mdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzc1wncyBzdWl0ZSBmaW5pc2hlcyBleGVjdXRpb24sIGl0c1xuZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdIEFcbmNsYXNzIG9iamVjdCBpcyB0aGVuIGNyZWF0ZWQgdXNpbmcgdGhlIGluaGVyaXRhbmNlIGxpc3QgZm9yIHRoZSBiYXNlXG5jbGFzc2VzIGFuZCB0aGUgc2F2ZWQgbG9jYWwgbmFtZXNwYWNlIGZvciB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnkuXG5UaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbm5hbWVzcGFjZS5cblxuQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyAqbWV0YWNsYXNzZXMqLlxuXG5DbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyBmdW5jdGlvbnMsXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGNsYXNzIEZvbzogcGFzc1xuXG5pcyBlcXVpdmFsZW50IHRvXG5cbiAgIGNsYXNzIEZvbzogcGFzc1xuICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuXG5UaGUgZXZhbHVhdGlvbiBydWxlcyBmb3IgdGhlIGRlY29yYXRvciBleHByZXNzaW9ucyBhcmUgdGhlIHNhbWUgYXMgZm9yXG5mdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBtdXN0IGJlIGEgY2xhc3Mgb2JqZWN0LCB3aGljaCBpcyB0aGVuXG5ib3VuZCB0byB0aGUgY2xhc3MgbmFtZS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gYXJlXG5jbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgYXR0cmlidXRlc1xuY2FuIGJlIHNldCBpbiBhIG1ldGhvZCB3aXRoICJzZWxmLm5hbWUgPSB2YWx1ZSIuICBCb3RoIGNsYXNzIGFuZFxuaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAiInNlbGYubmFtZSIiLFxuYW5kIGFuIGluc3RhbmNlIGF0dHJpYnV0ZSBoaWRlcyBhIGNsYXNzIGF0dHJpYnV0ZSB3aXRoIHRoZSBzYW1lIG5hbWVcbndoZW4gYWNjZXNzZWQgaW4gdGhpcyB3YXkuICBDbGFzcyBhdHRyaWJ1dGVzIGNhbiBiZSB1c2VkIGFzIGRlZmF1bHRzXG5mb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkIHRvXG51bmV4cGVjdGVkIHJlc3VsdHMuICAqRGVzY3JpcHRvcnMqIGNhbiBiZSB1c2VkIHRvIGNyZWF0ZSBpbnN0YW5jZVxudmFyaWFibGVzIHdpdGggZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMyAqKlBFUCAzMTI5KiogLVxuICBDbGFzcyBEZWNvcmF0b3JzXG5cblxuQ29yb3V0aW5lc1xuPT09PT09PT09PVxuXG5OZXcgaW4gdmVyc2lvbiAzLjUuXG5cblxuQ29yb3V0aW5lIGZ1bmN0aW9uIGRlZmluaXRpb25cbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgIGFzeW5jX2Z1bmNkZWYgOjo9IFtkZWNvcmF0b3JzXSAiYXN5bmMiICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcblxuRXhlY3V0aW9uIG9mIFB5dGhvbiBjb3JvdXRpbmVzIGNhbiBiZSBzdXNwZW5kZWQgYW5kIHJlc3VtZWQgYXQgbWFueVxucG9pbnRzIChzZWUgKmNvcm91dGluZSopLiAgSW4gdGhlIGJvZHkgb2YgYSBjb3JvdXRpbmUsIGFueSAiYXdhaXQiIGFuZFxuImFzeW5jIiBpZGVudGlmaWVycyBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHM7ICJhd2FpdCIgZXhwcmVzc2lvbnMsXG4iYXN5bmMgZm9yIiBhbmQgImFzeW5jIHdpdGgiIGNhbiBvbmx5IGJlIHVzZWQgaW4gY29yb3V0aW5lIGJvZGllcy5cblxuRnVuY3Rpb25zIGRlZmluZWQgd2l0aCAiYXN5bmMgZGVmIiBzeW50YXggYXJlIGFsd2F5cyBjb3JvdXRpbmVcbmZ1bmN0aW9ucywgZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluICJhd2FpdCIgb3IgImFzeW5jIiBrZXl3b3Jkcy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAieWllbGQiIGV4cHJlc3Npb25zIGluICJhc3luYyBkZWYiXG5jb3JvdXRpbmVzLlxuXG5BbiBleGFtcGxlIG9mIGEgY29yb3V0aW5lIGZ1bmN0aW9uOlxuXG4gICBhc3luYyBkZWYgZnVuYyhwYXJhbTEsIHBhcmFtMik6XG4gICAgICAgZG9fc3R1ZmYoKVxuICAgICAgIGF3YWl0IHNvbWVfY29yb3V0aW5lKClcblxuXG5UaGUgImFzeW5jIGZvciIgc3RhdGVtZW50XG4tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgIGFzeW5jX2Zvcl9zdG10IDo6PSAiYXN5bmMiIGZvcl9zdG10XG5cbkFuICphc3luY2hyb25vdXMgaXRlcmFibGUqIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiBpdHNcbippdGVyKiBpbXBsZW1lbnRhdGlvbiwgYW5kICphc3luY2hyb25vdXMgaXRlcmF0b3IqIGNhbiBjYWxsXG5hc3luY2hyb25vdXMgY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC5cblxuVGhlICJhc3luYyBmb3IiIHN0YXRlbWVudCBhbGxvd3MgY29udmVuaWVudCBpdGVyYXRpb24gb3ZlclxuYXN5bmNocm9ub3VzIGl0ZXJhdG9ycy5cblxuVGhlIGZvbGxvd2luZyBjb2RlOlxuXG4gICBhc3luYyBmb3IgVEFSR0VUIGluIElURVI6XG4gICAgICAgQkxPQ0tcbiAgIGVsc2U6XG4gICAgICAgQkxPQ0syXG5cbklzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuXG4gICBpdGVyID0gKElURVIpXG4gICBpdGVyID0gdHlwZShpdGVyKS5fX2FpdGVyX18oaXRlcilcbiAgIHJ1bm5pbmcgPSBUcnVlXG4gICB3aGlsZSBydW5uaW5nOlxuICAgICAgIHRyeTpcbiAgICAgICAgICAgVEFSR0VUID0gYXdhaXQgdHlwZShpdGVyKS5fX2FuZXh0X18oaXRlcilcbiAgICAgICBleGNlcHQgU3RvcEFzeW5jSXRlcmF0aW9uOlxuICAgICAgICAgICBydW5uaW5nID0gRmFsc2VcbiAgICAgICBlbHNlOlxuICAgICAgICAgICBCTE9DS1xuICAgZWxzZTpcbiAgICAgICBCTE9DSzJcblxuU2VlIGFsc28gIl9fYWl0ZXJfXygpIiBhbmQgIl9fYW5leHRfXygpIiBmb3IgZGV0YWlscy5cblxuSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiBhblxuImFzeW5jIGRlZiIgZnVuY3Rpb24uXG5cblxuVGhlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnRcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbiAgIGFzeW5jX3dpdGhfc3RtdCA6Oj0gImFzeW5jIiB3aXRoX3N0bXRcblxuQW4gKmFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIqIGlzIGEgKmNvbnRleHQgbWFuYWdlciogdGhhdCBpcyBhYmxlXG50byBzdXNwZW5kIGV4ZWN1dGlvbiBpbiBpdHMgKmVudGVyKiBhbmQgKmV4aXQqIG1ldGhvZHMuXG5cblRoZSBmb2xsb3dpbmcgY29kZTpcblxuICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjpcbiAgICAgICBCTE9DS1xuXG5JcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcblxuICAgbWdyID0gKEVYUFIpXG4gICBhZXhpdCA9IHR5cGUobWdyKS5fX2FleGl0X19cbiAgIGFlbnRlciA9IHR5cGUobWdyKS5fX2FlbnRlcl9fKG1ncilcbiAgIGV4YyA9IFRydWVcblxuICAgVkFSID0gYXdhaXQgYWVudGVyXG4gICB0cnk6XG4gICAgICAgQkxPQ0tcbiAgIGV4Y2VwdDpcbiAgICAgICBpZiBub3QgYXdhaXQgYWV4aXQobWdyLCAqc3lzLmV4Y19pbmZvKCkpOlxuICAgICAgICAgICByYWlzZVxuICAgZWxzZTpcbiAgICAgICBhd2FpdCBhZXhpdChtZ3IsIE5vbmUsIE5vbmUsIE5vbmUpXG5cblNlZSBhbHNvICJfX2FlbnRlcl9fKCkiIGFuZCAiX19hZXhpdF9fKCkiIGZvciBkZXRhaWxzLlxuXG5JdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiBhblxuImFzeW5jIGRlZiIgZnVuY3Rpb24uXG5cblNlZSBhbHNvOiAqKlBFUCA0OTIqKiAtIENvcm91dGluZXMgd2l0aCBhc3luYyBhbmQgYXdhaXQgc3ludGF4XG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gVGhlIGV4Y2VwdGlvbiBpcyBwcm9wYWdhdGVkIHRvIHRoZSBpbnZvY2F0aW9uIHN0YWNrIHVubGVzc1xuICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbiAgICBleGNlcHRpb24uIFRoYXQgbmV3IGV4Y2VwdGlvbiBjYXVzZXMgdGhlIG9sZCBvbmUgdG8gYmUgbG9zdC5cblxuWzJdIEN1cnJlbnRseSwgY29udHJvbCAiZmxvd3Mgb2ZmIHRoZSBlbmQiIGV4Y2VwdCBpbiB0aGUgY2FzZSBvZlxuICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4gICAgImJyZWFrIiBzdGF0ZW1lbnQuXG5cblszXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuICAgIGZ1bmN0aW9uIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgZnVuY3Rpb25cJ3MgIl9fZG9jX18iXG4gICAgYXR0cmlidXRlIGFuZCB0aGVyZWZvcmUgdGhlIGZ1bmN0aW9uXCdzICpkb2NzdHJpbmcqLlxuXG5bNF0gQSBzdHJpbmcgbGl0ZXJhbCBhcHBlYXJpbmcgYXMgdGhlIGZpcnN0IHN0YXRlbWVudCBpbiB0aGUgY2xhc3NcbiAgICBib2R5IGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIG5hbWVzcGFjZVwncyAiX19kb2NfXyIgaXRlbSBhbmRcbiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzXCdzICpkb2NzdHJpbmcqLlxuJywKLSAnY29udGV4dC1tYW5hZ2Vycyc6IHUnXG5XaXRoIFN0YXRlbWVudCBDb250ZXh0IE1hbmFnZXJzXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbkEgKmNvbnRleHQgbWFuYWdlciogaXMgYW4gb2JqZWN0IHRoYXQgZGVmaW5lcyB0aGUgcnVudGltZSBjb250ZXh0IHRvXG5iZSBlc3RhYmxpc2hlZCB3aGVuIGV4ZWN1dGluZyBhICJ3aXRoIiBzdGF0ZW1lbnQuIFRoZSBjb250ZXh0IG1hbmFnZXJcbmhhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCBydW50aW1lIGNvbnRleHRcbmZvciB0aGUgZXhlY3V0aW9uIG9mIHRoZSBibG9jayBvZiBjb2RlLiAgQ29udGV4dCBtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbmludm9rZWQgdXNpbmcgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgKGRlc2NyaWJlZCBpbiBzZWN0aW9uICpUaGUgd2l0aFxuc3RhdGVtZW50KiksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyIG1ldGhvZHMuXG5cblR5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCByZXN0b3JpbmcgdmFyaW91c1xua2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCBjbG9zaW5nIG9wZW5lZFxuZmlsZXMsIGV0Yy5cblxuRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlICpDb250ZXh0IE1hbmFnZXIgVHlwZXMqLlxuXG5vYmplY3QuX19lbnRlcl9fKHNlbGYpXG5cbiAgIEVudGVyIHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlICJ3aXRoIlxuICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZFwncyByZXR1cm4gdmFsdWUgdG8gdGhlIHRhcmdldChzKVxuICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG5cbm9iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG5cbiAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgcGFyYW1ldGVyc1xuICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSBleGl0ZWQuIElmIHRoZVxuICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgYXJndW1lbnRzIHdpbGxcbiAgIGJlICJOb25lIi5cblxuICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gc3VwcHJlc3MgdGhlXG4gICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgc2hvdWxkXG4gICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSBwcm9jZXNzZWRcbiAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuXG4gICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSBwYXNzZWQtaW5cbiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyXCdzIHJlc3BvbnNpYmlsaXR5LlxuXG5TZWUgYWxzbzogKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuXG4gICAgIFRoZSBzcGVjaWZpY2F0aW9uLCBiYWNrZ3JvdW5kLCBhbmQgZXhhbXBsZXMgZm9yIHRoZSBQeXRob24gIndpdGgiXG4gICAgIHN0YXRlbWVudC5cbicsCi0gJ2NvbnRpbnVlJzogdSdcblRoZSAiY29udGludWUiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIGNvbnRpbnVlX3N0bXQgOjo9ICJjb250aW51ZSJcblxuImNvbnRpbnVlIiBtYXkgb25seSBvY2N1ciBzeW50YWN0aWNhbGx5IG5lc3RlZCBpbiBhICJmb3IiIG9yICJ3aGlsZSJcbmxvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvciAiZmluYWxseSJcbmNsYXVzZSB3aXRoaW4gdGhhdCBsb29wLiAgSXQgY29udGludWVzIHdpdGggdGhlIG5leHQgY3ljbGUgb2YgdGhlXG5uZWFyZXN0IGVuY2xvc2luZyBsb29wLlxuXG5XaGVuICJjb250aW51ZSIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYVxuImZpbmFsbHkiIGNsYXVzZSwgdGhhdCAiZmluYWxseSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGJlZm9yZSByZWFsbHlcbnN0YXJ0aW5nIHRoZSBuZXh0IGxvb3AgY3ljbGUuXG4nLAotICdjb252ZXJzaW9ucyc6IHUnXG5Bcml0aG1ldGljIGNvbnZlcnNpb25zXG4qKioqKioqKioqKioqKioqKioqKioqXG5cbldoZW4gYSBkZXNjcmlwdGlvbiBvZiBhbiBhcml0aG1ldGljIG9wZXJhdG9yIGJlbG93IHVzZXMgdGhlIHBocmFzZVxuInRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmUgY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUsIiB0aGlzIG1lYW5zXG50aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgYXMgZm9sbG93czpcblxuKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzIGNvbnZlcnRlZCB0b1xuICBjb21wbGV4O1xuXG4qIG90aGVyd2lzZSwgaWYgZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCB0aGVcbiAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuXG4qIG90aGVyd2lzZSwgYm90aCBtdXN0IGJlIGludGVnZXJzIGFuZCBubyBjb252ZXJzaW9uIGlzIG5lY2Vzc2FyeS5cblxuU29tZSBhZGRpdGlvbmFsIHJ1bGVzIGFwcGx5IGZvciBjZXJ0YWluIG9wZXJhdG9ycyAoZS5nLiwgYSBzdHJpbmcgYXMgYVxubGVmdCBhcmd1bWVudCB0byB0aGUgXCclXCcgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSB0aGVpciBvd25cbmNvbnZlcnNpb24gYmVoYXZpb3IuXG4nLAotICdjdXN0b21pemF0aW9uJzogdSdcbkJhc2ljIGN1c3RvbWl6YXRpb25cbioqKioqKioqKioqKioqKioqKipcblxub2JqZWN0Ll9fbmV3X18oY2xzWywgLi4uXSlcblxuICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICJfX25ld19fKCkiIGlzIGFcbiAgIHN0YXRpYyBtZXRob2QgKHNwZWNpYWwtY2FzZWQgc28geW91IG5lZWQgbm90IGRlY2xhcmUgaXQgYXMgc3VjaClcbiAgIHRoYXQgdGFrZXMgdGhlIGNsYXNzIG9mIHdoaWNoIGFuIGluc3RhbmNlIHdhcyByZXF1ZXN0ZWQgYXMgaXRzXG4gICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSBwYXNzZWQgdG8gdGhlXG4gICBvYmplY3QgY29uc3RydWN0b3IgZXhwcmVzc2lvbiAodGhlIGNhbGwgdG8gdGhlIGNsYXNzKS4gIFRoZSByZXR1cm5cbiAgIHZhbHVlIG9mICJfX25ld19fKCkiIHNob3VsZCBiZSB0aGUgbmV3IG9iamVjdCBpbnN0YW5jZSAodXN1YWxseSBhblxuICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuXG4gICBUeXBpY2FsIGltcGxlbWVudGF0aW9ucyBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgdGhlIGNsYXNzIGJ5XG4gICBpbnZva2luZyB0aGUgc3VwZXJjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgdXNpbmdcbiAgICJzdXBlcihjdXJyZW50Y2xhc3MsIGNscykuX19uZXdfXyhjbHNbLCAuLi5dKSIgd2l0aCBhcHByb3ByaWF0ZVxuICAgYXJndW1lbnRzIGFuZCB0aGVuIG1vZGlmeWluZyB0aGUgbmV3bHktY3JlYXRlZCBpbnN0YW5jZSBhc1xuICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG5cbiAgIElmICJfX25ld19fKCkiIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIGJlIGludm9rZWQgbGlrZVxuICAgIl9faW5pdF9fKHNlbGZbLCAuLi5dKSIsIHdoZXJlICpzZWxmKiBpcyB0aGUgbmV3IGluc3RhbmNlIGFuZCB0aGVcbiAgIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRoZSBzYW1lIGFzIHdlcmUgcGFzc2VkIHRvICJfX25ld19fKCkiLlxuXG4gICBJZiAiX19uZXdfXygpIiBkb2VzIG5vdCByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgKmNscyosIHRoZW4gdGhlIG5ld1xuICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuXG4gICAiX19uZXdfXygpIiBpcyBpbnRlbmRlZCBtYWlubHkgdG8gYWxsb3cgc3ViY2xhc3NlcyBvZiBpbW11dGFibGVcbiAgIHR5cGVzIChsaWtlIGludCwgc3RyLCBvciB0dXBsZSkgdG8gY3VzdG9taXplIGluc3RhbmNlIGNyZWF0aW9uLiAgSXRcbiAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gb3JkZXIgdG9cbiAgIGN1c3RvbWl6ZSBjbGFzcyBjcmVhdGlvbi5cblxub2JqZWN0Ll9faW5pdF9fKHNlbGZbLCAuLi5dKVxuXG4gICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICJfX25ld19fKCkiKSwgYnV0XG4gICBiZWZvcmUgaXQgaXMgcmV0dXJuZWQgdG8gdGhlIGNhbGxlci4gIFRoZSBhcmd1bWVudHMgYXJlIHRob3NlXG4gICBwYXNzZWQgdG8gdGhlIGNsYXNzIGNvbnN0cnVjdG9yIGV4cHJlc3Npb24uICBJZiBhIGJhc2UgY2xhc3MgaGFzIGFuXG4gICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgbWV0aG9kLCBpZlxuICAgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdCB0byBlbnN1cmUgcHJvcGVyIGluaXRpYWxpemF0aW9uIG9mIHRoZVxuICAgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZTsgZm9yIGV4YW1wbGU6XG4gICAiQmFzZUNsYXNzLl9faW5pdF9fKHNlbGYsIFthcmdzLi4uXSkiLlxuXG4gICBCZWNhdXNlICJfX25ld19fKCkiIGFuZCAiX19pbml0X18oKSIgd29yayB0b2dldGhlciBpbiBjb25zdHJ1Y3RpbmdcbiAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byBjdXN0b21pc2VcbiAgIGl0KSwgbm8gbm9uLSJOb25lIiB2YWx1ZSBtYXkgYmUgcmV0dXJuZWQgYnkgIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuICAgd2lsbCBjYXVzZSBhICJUeXBlRXJyb3IiIHRvIGJlIHJhaXNlZCBhdCBydW50aW1lLlxuXG5vYmplY3QuX19kZWxfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgYWJvdXQgdG8gYmUgZGVzdHJveWVkLiAgVGhpcyBpcyBhbHNvXG4gICBjYWxsZWQgYSBkZXN0cnVjdG9yLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhICJfX2RlbF9fKCkiIG1ldGhvZCwgdGhlXG4gICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0IGV4cGxpY2l0bHkgY2FsbCBpdFxuICAgdG8gZW5zdXJlIHByb3BlciBkZWxldGlvbiBvZiB0aGUgYmFzZSBjbGFzcyBwYXJ0IG9mIHRoZSBpbnN0YW5jZS5cbiAgIE5vdGUgdGhhdCBpdCBpcyBwb3NzaWJsZSAodGhvdWdoIG5vdCByZWNvbW1lbmRlZCEpIGZvciB0aGVcbiAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgaW5zdGFuY2UgYnlcbiAgIGNyZWF0aW5nIGEgbmV3IHJlZmVyZW5jZSB0byBpdC4gIEl0IG1heSB0aGVuIGJlIGNhbGxlZCBhdCBhIGxhdGVyXG4gICB0aW1lIHdoZW4gdGhpcyBuZXcgcmVmZXJlbmNlIGlzIGRlbGV0ZWQuICBJdCBpcyBub3QgZ3VhcmFudGVlZCB0aGF0XG4gICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCBleGlzdCB3aGVuXG4gICB0aGUgaW50ZXJwcmV0ZXIgZXhpdHMuXG5cbiAgIE5vdGU6ICJkZWwgeCIgZG9lc25cJ3QgZGlyZWN0bHkgY2FsbCAieC5fX2RlbF9fKCkiIC0tLSB0aGUgZm9ybWVyXG4gICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSBsYXR0ZXIgaXNcbiAgICAgb25seSBjYWxsZWQgd2hlbiAieCJcJ3MgcmVmZXJlbmNlIGNvdW50IHJlYWNoZXMgemVyby4gIFNvbWUgY29tbW9uXG4gICAgIHNpdHVhdGlvbnMgdGhhdCBtYXkgcHJldmVudCB0aGUgcmVmZXJlbmNlIGNvdW50IG9mIGFuIG9iamVjdCBmcm9tXG4gICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuIG9iamVjdHMgKGUuZy4sXG4gICAgIGEgZG91Ymx5LWxpbmtlZCBsaXN0IG9yIGEgdHJlZSBkYXRhIHN0cnVjdHVyZSB3aXRoIHBhcmVudCBhbmRcbiAgICAgY2hpbGQgcG9pbnRlcnMpOyBhIHJlZmVyZW5jZSB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSBvZlxuICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbiAgICAgInN5cy5leGNfaW5mbygpWzJdIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpOyBvciBhIHJlZmVyZW5jZVxuICAgICB0byB0aGUgb2JqZWN0IG9uIHRoZSBzdGFjayBmcmFtZSB0aGF0IHJhaXNlZCBhbiB1bmhhbmRsZWRcbiAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMubGFzdF90cmFjZWJhY2siIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSkuICBUaGUgZmlyc3RcbiAgICAgc2l0dWF0aW9uIGNhbiBvbmx5IGJlIHJlbWVkaWVkIGJ5IGV4cGxpY2l0bHkgYnJlYWtpbmcgdGhlIGN5Y2xlcztcbiAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvIHRoZVxuICAgICB0cmFjZWJhY2sgb2JqZWN0IHdoZW4gaXQgaXMgbm8gbG9uZ2VyIHVzZWZ1bCwgYW5kIHRoZSB0aGlyZCBjYW5cbiAgICAgYmUgcmVzb2x2ZWQgYnkgc3RvcmluZyAiTm9uZSIgaW4gInN5cy5sYXN0X3RyYWNlYmFjayIuIENpcmN1bGFyXG4gICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkIHVwIHdoZW4gdGhlXG4gICAgIGN5Y2xpYyBnYXJiYWdlIGNvbGxlY3RvciBpcyBlbmFibGVkIChpdFwncyBvbiBieSBkZWZhdWx0KS4gUmVmZXJcbiAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSBpbmZvcm1hdGlvblxuICAgICBhYm91dCB0aGlzIHRvcGljLlxuXG4gICBXYXJuaW5nOiBEdWUgdG8gdGhlIHByZWNhcmlvdXMgY2lyY3Vtc3RhbmNlcyB1bmRlciB3aGljaFxuICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgZHVyaW5nXG4gICAgIHRoZWlyIGV4ZWN1dGlvbiBhcmUgaWdub3JlZCwgYW5kIGEgd2FybmluZyBpcyBwcmludGVkIHRvXG4gICAgICJzeXMuc3RkZXJyIiBpbnN0ZWFkLiBBbHNvLCB3aGVuICJfX2RlbF9fKCkiIGlzIGludm9rZWQgaW5cbiAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiBleGVjdXRpb24gb2YgdGhlXG4gICAgIHByb2dyYW0gaXMgZG9uZSksIG90aGVyIGdsb2JhbHMgcmVmZXJlbmNlZCBieSB0aGUgIl9fZGVsX18oKSJcbiAgICAgbWV0aG9kIG1heSBhbHJlYWR5IGhhdmUgYmVlbiBkZWxldGVkIG9yIGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nXG4gICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gIEZvciB0aGlzXG4gICAgIHJlYXNvbiwgIl9fZGVsX18oKSIgbWV0aG9kcyBzaG91bGQgZG8gdGhlIGFic29sdXRlIG1pbmltdW0gbmVlZGVkXG4gICAgIHRvIG1haW50YWluIGV4dGVybmFsIGludmFyaWFudHMuICBTdGFydGluZyB3aXRoIHZlcnNpb24gMS41LFxuICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCBhIHNpbmdsZVxuICAgICB1bmRlcnNjb3JlIGFyZSBkZWxldGVkIGZyb20gdGhlaXIgbW9kdWxlIGJlZm9yZSBvdGhlciBnbG9iYWxzIGFyZVxuICAgICBkZWxldGVkOyBpZiBubyBvdGhlciByZWZlcmVuY2VzIHRvIHN1Y2ggZ2xvYmFscyBleGlzdCwgdGhpcyBtYXlcbiAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsIGF2YWlsYWJsZSBhdCB0aGVcbiAgICAgdGltZSB3aGVuIHRoZSAiX19kZWxfXygpIiBtZXRob2QgaXMgY2FsbGVkLlxuXG5vYmplY3QuX19yZXByX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAib2ZmaWNpYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgSWYgYXQgYWxsIHBvc3NpYmxlLCB0aGlzXG4gICBzaG91bGQgbG9vayBsaWtlIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gdGhhdCBjb3VsZCBiZSB1c2VkIHRvXG4gICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gYXBwcm9wcmlhdGVcbiAgIGVudmlyb25tZW50KS4gIElmIHRoaXMgaXMgbm90IHBvc3NpYmxlLCBhIHN0cmluZyBvZiB0aGUgZm9ybVxuICAgIjwuLi5zb21lIHVzZWZ1bCBkZXNjcmlwdGlvbi4uLj4iIHNob3VsZCBiZSByZXR1cm5lZC4gVGhlIHJldHVyblxuICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAiX19yZXByX18oKSIgYnV0XG4gICBub3QgIl9fc3RyX18oKSIsIHRoZW4gIl9fcmVwcl9fKCkiIGlzIGFsc28gdXNlZCB3aGVuIGFuICJpbmZvcm1hbCJcbiAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBpbnN0YW5jZXMgb2YgdGhhdCBjbGFzcyBpcyByZXF1aXJlZC5cblxuICAgVGhpcyBpcyB0eXBpY2FsbHkgdXNlZCBmb3IgZGVidWdnaW5nLCBzbyBpdCBpcyBpbXBvcnRhbnQgdGhhdCB0aGVcbiAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuXG5vYmplY3QuX19zdHJfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgInN0cihvYmplY3QpIiBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9ucyAiZm9ybWF0KCkiIGFuZFxuICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSBzdHJpbmdcbiAgIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhICpzdHJpbmcqXG4gICBvYmplY3QuXG5cbiAgIFRoaXMgbWV0aG9kIGRpZmZlcnMgZnJvbSAib2JqZWN0Ll9fcmVwcl9fKCkiIGluIHRoYXQgdGhlcmUgaXMgbm9cbiAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb246IGFcbiAgIG1vcmUgY29udmVuaWVudCBvciBjb25jaXNlIHJlcHJlc2VudGF0aW9uIGNhbiBiZSB1c2VkLlxuXG4gICBUaGUgZGVmYXVsdCBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkIGJ5IHRoZSBidWlsdC1pbiB0eXBlICJvYmplY3QiXG4gICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuXG5vYmplY3QuX19ieXRlc19fKHNlbGYpXG5cbiAgIENhbGxlZCBieSAiYnl0ZXMoKSIgdG8gY29tcHV0ZSBhIGJ5dGUtc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuXG4gICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuXG5vYmplY3QuX19mb3JtYXRfXyhzZWxmLCBmb3JtYXRfc3BlYylcblxuICAgQ2FsbGVkIGJ5IHRoZSAiZm9ybWF0KCkiIGJ1aWx0LWluIGZ1bmN0aW9uIChhbmQgYnkgZXh0ZW5zaW9uLCB0aGVcbiAgICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBvZiBjbGFzcyAic3RyIikgdG8gcHJvZHVjZSBhICJmb3JtYXR0ZWQiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiBUaGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyBhXG4gICBzdHJpbmcgdGhhdCBjb250YWlucyBhIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnNcbiAgIGRlc2lyZWQuIFRoZSBpbnRlcnByZXRhdGlvbiBvZiB0aGUgImZvcm1hdF9zcGVjIiBhcmd1bWVudCBpcyB1cCB0b1xuICAgdGhlIHR5cGUgaW1wbGVtZW50aW5nICJfX2Zvcm1hdF9fKCkiLCBob3dldmVyIG1vc3QgY2xhc3NlcyB3aWxsXG4gICBlaXRoZXIgZGVsZWdhdGUgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYVxuICAgc2ltaWxhciBmb3JtYXR0aW5nIG9wdGlvbiBzeW50YXguXG5cbiAgIFNlZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlXG4gICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cblxuICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiIGl0c2VsZlxuICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuXG5vYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG5cbiAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgaXMgYXNcbiAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAieC5fX2xlX18oeSkiLFxuICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAieD55IiBjYWxsc1xuICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuXG4gICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICJOb3RJbXBsZW1lbnRlZCJcbiAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgb2ZcbiAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCBmb3IgYVxuICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gYW55IHZhbHVlLFxuICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gY29udGV4dCAoZS5nLixcbiAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICJib29sKCkiXG4gICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciBmYWxzZS5cblxuICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgaW52ZXJ0cyB0aGVcbiAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyBvdGhlciBpbXBsaWVkXG4gICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yIGV4YW1wbGUsIHRoZVxuICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gYXV0b21hdGljYWxseVxuICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3Qgb3BlcmF0aW9uLCBzZWVcbiAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG5cbiAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgbm90ZXMgb25cbiAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSBjb21wYXJpc29uXG4gICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cblxuICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAodG8gYmUgdXNlZFxuICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0IHRoZSByaWdodFxuICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgZWFjaCBvdGhlclwnc1xuICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyByZWZsZWN0aW9uLFxuICAgYW5kICJfX2VxX18oKSIgYW5kICJfX25lX18oKSIgYXJlIHRoZWlyIG93biByZWZsZWN0aW9uLiBJZiB0aGVcbiAgIG9wZXJhbmRzIGFyZSBvZiBkaWZmZXJlbnQgdHlwZXMsIGFuZCByaWdodCBvcGVyYW5kXCdzIHR5cGUgaXMgYVxuICAgZGlyZWN0IG9yIGluZGlyZWN0IHN1YmNsYXNzIG9mIHRoZSBsZWZ0IG9wZXJhbmRcJ3MgdHlwZSwgdGhlXG4gICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgb3RoZXJ3aXNlIHRoZVxuICAgbGVmdCBvcGVyYW5kXCdzIG1ldGhvZCBoYXMgcHJpb3JpdHkuICBWaXJ0dWFsIHN1YmNsYXNzaW5nIGlzIG5vdFxuICAgY29uc2lkZXJlZC5cblxub2JqZWN0Ll9faGFzaF9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSBidWlsdC1pbiBmdW5jdGlvbiAiaGFzaCgpIiBhbmQgZm9yIG9wZXJhdGlvbnMgb24gbWVtYmVyc1xuICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAiZGljdCIuXG4gICAiX19oYXNoX18oKSIgc2hvdWxkIHJldHVybiBhbiBpbnRlZ2VyLiAgVGhlIG9ubHkgcmVxdWlyZWQgcHJvcGVydHlcbiAgIGlzIHRoYXQgb2JqZWN0cyB3aGljaCBjb21wYXJlIGVxdWFsIGhhdmUgdGhlIHNhbWUgaGFzaCB2YWx1ZTsgaXQgaXNcbiAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlIG9yKSB0aGUgaGFzaFxuICAgdmFsdWVzIGZvciB0aGUgY29tcG9uZW50cyBvZiB0aGUgb2JqZWN0IHRoYXQgYWxzbyBwbGF5IGEgcGFydCBpblxuICAgY29tcGFyaXNvbiBvZiBvYmplY3RzLlxuXG4gICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gb2JqZWN0XCdzXG4gICAgIGN1c3RvbSAiX19oYXNoX18oKSIgbWV0aG9kIHRvIHRoZSBzaXplIG9mIGEgIlB5X3NzaXplX3QiLiAgVGhpc1xuICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uIDMyLWJpdFxuICAgICBidWlsZHMuIElmIGFuIG9iamVjdFwncyAgICJfX2hhc2hfXygpIiBtdXN0IGludGVyb3BlcmF0ZSBvbiBidWlsZHNcbiAgICAgb2YgZGlmZmVyZW50IGJpdCBzaXplcywgYmUgc3VyZSB0byBjaGVjayB0aGUgd2lkdGggb24gYWxsXG4gICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggInB5dGhvbiAtY1xuICAgICAiaW1wb3J0IHN5czsgcHJpbnQoc3lzLmhhc2hfaW5mby53aWR0aCkiIi5cblxuICAgSWYgYSBjbGFzcyBkb2VzIG5vdCBkZWZpbmUgYW4gIl9fZXFfXygpIiBtZXRob2QgaXQgc2hvdWxkIG5vdFxuICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgIl9fZXFfXygpIlxuICAgYnV0IG5vdCAiX19oYXNoX18oKSIsIGl0cyBpbnN0YW5jZXMgd2lsbCBub3QgYmUgdXNhYmxlIGFzIGl0ZW1zIGluXG4gICBoYXNoYWJsZSBjb2xsZWN0aW9ucy4gIElmIGEgY2xhc3MgZGVmaW5lcyBtdXRhYmxlIG9iamVjdHMgYW5kXG4gICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90IGltcGxlbWVudFxuICAgIl9faGFzaF9fKCkiLCBzaW5jZSB0aGUgaW1wbGVtZW50YXRpb24gb2YgaGFzaGFibGUgY29sbGVjdGlvbnNcbiAgIHJlcXVpcmVzIHRoYXQgYSBrZXlcJ3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSBvYmplY3RcJ3MgaGFzaFxuICAgdmFsdWUgY2hhbmdlcywgaXQgd2lsbCBiZSBpbiB0aGUgd3JvbmcgaGFzaCBidWNrZXQpLlxuXG4gICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiBtZXRob2RzIGJ5XG4gICBkZWZhdWx0OyB3aXRoIHRoZW0sIGFsbCBvYmplY3RzIGNvbXBhcmUgdW5lcXVhbCAoZXhjZXB0IHdpdGhcbiAgIHRoZW1zZWx2ZXMpIGFuZCAieC5fX2hhc2hfXygpIiByZXR1cm5zIGFuIGFwcHJvcHJpYXRlIHZhbHVlIHN1Y2hcbiAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09IGhhc2goeSkiLlxuXG4gICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAiX19oYXNoX18oKSJcbiAgIHdpbGwgaGF2ZSBpdHMgIl9faGFzaF9fKCkiIGltcGxpY2l0bHkgc2V0IHRvICJOb25lIi4gIFdoZW4gdGhlXG4gICAiX19oYXNoX18oKSIgbWV0aG9kIG9mIGEgY2xhc3MgaXMgIk5vbmUiLCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzXG4gICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtIGF0dGVtcHRzIHRvXG4gICByZXRyaWV2ZSB0aGVpciBoYXNoIHZhbHVlLCBhbmQgd2lsbCBhbHNvIGJlIGNvcnJlY3RseSBpZGVudGlmaWVkIGFzXG4gICB1bmhhc2hhYmxlIHdoZW4gY2hlY2tpbmcgImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiLlxuXG4gICBJZiBhIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgbmVlZHMgdG8gcmV0YWluIHRoZVxuICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSBpbnRlcnByZXRlclxuICAgbXVzdCBiZSB0b2xkIHRoaXMgZXhwbGljaXRseSBieSBzZXR0aW5nICJfX2hhc2hfXyA9XG4gICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IGRvZXMgbm90IG92ZXJyaWRlICJfX2VxX18oKSIgd2lzaGVzIHRvIHN1cHByZXNzXG4gICBoYXNoIHN1cHBvcnQsIGl0IHNob3VsZCBpbmNsdWRlICJfX2hhc2hfXyA9IE5vbmUiIGluIHRoZSBjbGFzc1xuICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiIHRoYXRcbiAgIGV4cGxpY2l0bHkgcmFpc2VzIGEgIlR5cGVFcnJvciIgd291bGQgYmUgaW5jb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgaGFzaGFibGUgYnkgYW4gImlzaW5zdGFuY2Uob2JqLCBjb2xsZWN0aW9ucy5IYXNoYWJsZSkiIGNhbGwuXG5cbiAgIE5vdGU6IEJ5IGRlZmF1bHQsIHRoZSAiX19oYXNoX18oKSIgdmFsdWVzIG9mIHN0ciwgYnl0ZXMgYW5kXG4gICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSByYW5kb20gdmFsdWUuXG4gICAgIEFsdGhvdWdoIHRoZXkgcmVtYWluIGNvbnN0YW50IHdpdGhpbiBhbiBpbmRpdmlkdWFsIFB5dGhvblxuICAgICBwcm9jZXNzLCB0aGV5IGFyZSBub3QgcHJlZGljdGFibGUgYmV0d2VlbiByZXBlYXRlZCBpbnZvY2F0aW9ucyBvZlxuICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCBhIGRlbmlhbC1cbiAgICAgb2Ytc2VydmljZSBjYXVzZWQgYnkgY2FyZWZ1bGx5LWNob3NlbiBpbnB1dHMgdGhhdCBleHBsb2l0IHRoZVxuICAgICB3b3JzdCBjYXNlIHBlcmZvcm1hbmNlIG9mIGEgZGljdCBpbnNlcnRpb24sIE8obl4yKSBjb21wbGV4aXR5LlxuICAgICBTZWUgaHR0cDovL3d3dy5vY2VydC5vcmcvYWR2aXNvcmllcy9vY2VydC0yMDExLTAwMy5odG1sIGZvclxuICAgICBkZXRhaWxzLkNoYW5naW5nIGhhc2ggdmFsdWVzIGFmZmVjdHMgdGhlIGl0ZXJhdGlvbiBvcmRlciBvZlxuICAgICBkaWN0cywgc2V0cyBhbmQgb3RoZXIgbWFwcGluZ3MuICBQeXRob24gaGFzIG5ldmVyIG1hZGUgZ3VhcmFudGVlc1xuICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuIDMyLWJpdCBhbmRcbiAgICAgNjQtYml0IGJ1aWxkcykuU2VlIGFsc28gIlBZVEhPTkhBU0hTRUVEIi5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogSGFzaCByYW5kb21pemF0aW9uIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC5cblxub2JqZWN0Ll9fYm9vbF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluIG9wZXJhdGlvblxuICAgImJvb2woKSI7IHNob3VsZCByZXR1cm4gIkZhbHNlIiBvciAiVHJ1ZSIuICBXaGVuIHRoaXMgbWV0aG9kIGlzIG5vdFxuICAgZGVmaW5lZCwgIl9fbGVuX18oKSIgaXMgY2FsbGVkLCBpZiBpdCBpcyBkZWZpbmVkLCBhbmQgdGhlIG9iamVjdCBpc1xuICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgZGVmaW5lc1xuICAgbmVpdGhlciAiX19sZW5fXygpIiBub3IgIl9fYm9vbF9fKCkiLCBhbGwgaXRzIGluc3RhbmNlcyBhcmVcbiAgIGNvbnNpZGVyZWQgdHJ1ZS5cbicsCi0gJ2RlYnVnZ2VyJzogdSdcbiJwZGIiIC0tLSBUaGUgUHl0aG9uIERlYnVnZ2VyXG4qKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG4qKlNvdXJjZSBjb2RlOioqIExpYi9wZGIucHlcblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgbW9kdWxlICJwZGIiIGRlZmluZXMgYW4gaW50ZXJhY3RpdmUgc291cmNlIGNvZGUgZGVidWdnZXIgZm9yXG5QeXRob24gcHJvZ3JhbXMuICBJdCBzdXBwb3J0cyBzZXR0aW5nIChjb25kaXRpb25hbCkgYnJlYWtwb2ludHMgYW5kXG5zaW5nbGUgc3RlcHBpbmcgYXQgdGhlIHNvdXJjZSBsaW5lIGxldmVsLCBpbnNwZWN0aW9uIG9mIHN0YWNrIGZyYW1lcyxcbnNvdXJjZSBjb2RlIGxpc3RpbmcsIGFuZCBldmFsdWF0aW9uIG9mIGFyYml0cmFyeSBQeXRob24gY29kZSBpbiB0aGVcbmNvbnRleHQgb2YgYW55IHN0YWNrIGZyYW1lLiAgSXQgYWxzbyBzdXBwb3J0cyBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmdcbmFuZCBjYW4gYmUgY2FsbGVkIHVuZGVyIHByb2dyYW0gY29udHJvbC5cblxuVGhlIGRlYnVnZ2VyIGlzIGV4dGVuc2libGUgLS0gaXQgaXMgYWN0dWFsbHkgZGVmaW5lZCBhcyB0aGUgY2xhc3NcbiJQZGIiLiBUaGlzIGlzIGN1cnJlbnRseSB1bmRvY3VtZW50ZWQgYnV0IGVhc2lseSB1bmRlcnN0b29kIGJ5IHJlYWRpbmdcbnRoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzICJiZGIiIGFuZCAiY21kIi5cblxuVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyAiKFBkYikiLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhIHByb2dyYW0gdW5kZXJcbmNvbnRyb2wgb2YgdGhlIGRlYnVnZ2VyIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IHBkYi5ydW4oXCdteW1vZHVsZS50ZXN0KClcJylcbiAgID4gPHN0cmluZz4oMCk/KClcbiAgIChQZGIpIGNvbnRpbnVlXG4gICA+IDxzdHJpbmc+KDEpPygpXG4gICAoUGRiKSBjb250aW51ZVxuICAgTmFtZUVycm9yOiBcJ3NwYW1cJ1xuICAgPiA8c3RyaW5nPigxKT8oKVxuICAgKFBkYilcblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogVGFiLWNvbXBsZXRpb24gdmlhIHRoZSAicmVhZGxpbmUiIG1vZHVsZSBpc1xuYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgZ2xvYmFsXG5hbmQgbG9jYWwgbmFtZXMgYXJlIG9mZmVyZWQgYXMgYXJndW1lbnRzIG9mIHRoZSAicCIgY29tbWFuZC5cblxuInBkYi5weSIgY2FuIGFsc28gYmUgaW52b2tlZCBhcyBhIHNjcmlwdCB0byBkZWJ1ZyBvdGhlciBzY3JpcHRzLiAgRm9yXG5leGFtcGxlOlxuXG4gICBweXRob24zIC1tIHBkYiBteXNjcmlwdC5weVxuXG5XaGVuIGludm9rZWQgYXMgYSBzY3JpcHQsIHBkYiB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgcG9zdC1tb3J0ZW1cbmRlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgcG9zdC1cbm1vcnRlbSBkZWJ1Z2dpbmcgKG9yIGFmdGVyIG5vcm1hbCBleGl0IG9mIHRoZSBwcm9ncmFtKSwgcGRiIHdpbGxcbnJlc3RhcnQgdGhlIHByb2dyYW0uICBBdXRvbWF0aWMgcmVzdGFydGluZyBwcmVzZXJ2ZXMgcGRiXCdzIHN0YXRlIChzdWNoXG5hcyBicmVha3BvaW50cykgYW5kIGluIG1vc3QgY2FzZXMgaXMgbW9yZSB1c2VmdWwgdGhhbiBxdWl0dGluZyB0aGVcbmRlYnVnZ2VyIHVwb24gcHJvZ3JhbVwncyBleGl0LlxuXG5OZXcgaW4gdmVyc2lvbiAzLjI6ICJwZGIucHkiIG5vdyBhY2NlcHRzIGEgIi1jIiBvcHRpb24gdGhhdCBleGVjdXRlc1xuY29tbWFuZHMgYXMgaWYgZ2l2ZW4gaW4gYSAiLnBkYnJjIiBmaWxlLCBzZWUgKkRlYnVnZ2VyIENvbW1hbmRzKi5cblxuVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgcHJvZ3JhbSBpc1xudG8gaW5zZXJ0XG5cbiAgIGltcG9ydCBwZGI7IHBkYi5zZXRfdHJhY2UoKVxuXG5hdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuIHRoZW5cbnN0ZXAgdGhyb3VnaCB0aGUgY29kZSBmb2xsb3dpbmcgdGhpcyBzdGF0ZW1lbnQsIGFuZCBjb250aW51ZSBydW5uaW5nXG53aXRob3V0IHRoZSBkZWJ1Z2dlciB1c2luZyB0aGUgImNvbnRpbnVlIiBjb21tYW5kLlxuXG5UaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuXG4gICA+Pj4gaW1wb3J0IHBkYlxuICAgPj4+IGltcG9ydCBteW1vZHVsZVxuICAgPj4+IG15bW9kdWxlLnRlc3QoKVxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDQsIGluIHRlc3RcbiAgICAgICB0ZXN0MigpXG4gICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4gICAgICAgcHJpbnQoc3BhbSlcbiAgIE5hbWVFcnJvcjogc3BhbVxuICAgPj4+IHBkYi5wbSgpXG4gICA+IC4vbXltb2R1bGUucHkoMyl0ZXN0MigpXG4gICAtPiBwcmludChzcGFtKVxuICAgKFBkYilcblxuVGhlIG1vZHVsZSBkZWZpbmVzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOyBlYWNoIGVudGVycyB0aGUgZGVidWdnZXJcbmluIGEgc2xpZ2h0bHkgZGlmZmVyZW50IHdheTpcblxucGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV4ZWN1dGUgdGhlICpzdGF0ZW1lbnQqIChnaXZlbiBhcyBhIHN0cmluZyBvciBhIGNvZGUgb2JqZWN0KSB1bmRlclxuICAgZGVidWdnZXIgY29udHJvbC4gIFRoZSBkZWJ1Z2dlciBwcm9tcHQgYXBwZWFycyBiZWZvcmUgYW55IGNvZGUgaXNcbiAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSAiY29udGludWUiLCBvciB5b3UgY2FuXG4gICBzdGVwIHRocm91Z2ggdGhlIHN0YXRlbWVudCB1c2luZyAic3RlcCIgb3IgIm5leHQiIChhbGwgdGhlc2VcbiAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgKmxvY2FscypcbiAgIGFyZ3VtZW50cyBzcGVjaWZ5IHRoZSBlbnZpcm9ubWVudCBpbiB3aGljaCB0aGUgY29kZSBpcyBleGVjdXRlZDsgYnlcbiAgIGRlZmF1bHQgdGhlIGRpY3Rpb25hcnkgb2YgdGhlIG1vZHVsZSAiX19tYWluX18iIGlzIHVzZWQuICAoU2VlIHRoZVxuICAgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluICJleGVjKCkiIG9yICJldmFsKCkiIGZ1bmN0aW9ucy4pXG5cbnBkYi5ydW5ldmFsKGV4cHJlc3Npb24sIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG5cbiAgIEV2YWx1YXRlIHRoZSAqZXhwcmVzc2lvbiogKGdpdmVuIGFzIGEgc3RyaW5nIG9yIGEgY29kZSBvYmplY3QpXG4gICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiAicnVuZXZhbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zIHRoZVxuICAgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24uICBPdGhlcndpc2UgdGhpcyBmdW5jdGlvbiBpcyBzaW1pbGFyIHRvXG4gICAicnVuKCkiLlxuXG5wZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcblxuICAgQ2FsbCB0aGUgKmZ1bmN0aW9uKiAoYSBmdW5jdGlvbiBvciBtZXRob2Qgb2JqZWN0LCBub3QgYSBzdHJpbmcpXG4gICB3aXRoIHRoZSBnaXZlbiBhcmd1bWVudHMuICBXaGVuICJydW5jYWxsKCkiIHJldHVybnMsIGl0IHJldHVybnNcbiAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzXG4gICBhcyBzb29uIGFzIHRoZSBmdW5jdGlvbiBpcyBlbnRlcmVkLlxuXG5wZGIuc2V0X3RyYWNlKClcblxuICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyB1c2VmdWwgdG9cbiAgIGhhcmQtY29kZSBhIGJyZWFrcG9pbnQgYXQgYSBnaXZlbiBwb2ludCBpbiBhIHByb2dyYW0sIGV2ZW4gaWYgdGhlXG4gICBjb2RlIGlzIG5vdCBvdGhlcndpc2UgYmVpbmcgZGVidWdnZWQgKGUuZy4gd2hlbiBhbiBhc3NlcnRpb25cbiAgIGZhaWxzKS5cblxucGRiLnBvc3RfbW9ydGVtKHRyYWNlYmFjaz1Ob25lKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqIG9iamVjdC4gIElmIG5vXG4gICAqdHJhY2ViYWNrKiBpcyBnaXZlbiwgaXQgdXNlcyB0aGUgb25lIG9mIHRoZSBleGNlcHRpb24gdGhhdCBpc1xuICAgY3VycmVudGx5IGJlaW5nIGhhbmRsZWQgKGFuIGV4Y2VwdGlvbiBtdXN0IGJlIGJlaW5nIGhhbmRsZWQgaWYgdGhlXG4gICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuXG5wZGIucG0oKVxuXG4gICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIHRyYWNlYmFjayBmb3VuZCBpblxuICAgInN5cy5sYXN0X3RyYWNlYmFjayIuXG5cblRoZSAicnVuKiIgZnVuY3Rpb25zIGFuZCAic2V0X3RyYWNlKCkiIGFyZSBhbGlhc2VzIGZvciBpbnN0YW50aWF0aW5nXG50aGUgIlBkYiIgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lLiAgSWYgeW91IHdhbnRcbnRvIGFjY2VzcyBmdXJ0aGVyIGZlYXR1cmVzLCB5b3UgaGF2ZSB0byBkbyB0aGlzIHlvdXJzZWxmOlxuXG5jbGFzcyBjbGFzcyBwZGIuUGRiKGNvbXBsZXRla2V5PVwndGFiXCcsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCBza2lwPU5vbmUsIG5vc2lnaW50PUZhbHNlKVxuXG4gICAiUGRiIiBpcyB0aGUgZGVidWdnZXIgY2xhc3MuXG5cbiAgIFRoZSAqY29tcGxldGVrZXkqLCAqc3RkaW4qIGFuZCAqc3Rkb3V0KiBhcmd1bWVudHMgYXJlIHBhc3NlZCB0byB0aGVcbiAgIHVuZGVybHlpbmcgImNtZC5DbWQiIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuXG4gICBUaGUgKnNraXAqIGFyZ3VtZW50LCBpZiBnaXZlbiwgbXVzdCBiZSBhbiBpdGVyYWJsZSBvZiBnbG9iLXN0eWxlXG4gICBtb2R1bGUgbmFtZSBwYXR0ZXJucy4gIFRoZSBkZWJ1Z2dlciB3aWxsIG5vdCBzdGVwIGludG8gZnJhbWVzIHRoYXRcbiAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiBbMV1cblxuICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggaXMgc2VudFxuICAgd2hlbiB0aGUgdXNlciBwcmVzc2VzICJDdHJsLUMiIG9uIHRoZSBjb25zb2xlKSB3aGVuIHlvdSBnaXZlIGFcbiAgICJjb250aW51ZSIgY29tbWFuZC4gVGhpcyBhbGxvd3MgeW91IHRvIGJyZWFrIGludG8gdGhlIGRlYnVnZ2VyXG4gICBhZ2FpbiBieSBwcmVzc2luZyAiQ3RybC1DIi4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggdGhlXG4gICBTSUdJTlQgaGFuZGxlciwgc2V0ICpub3NpZ2ludCogdG90IHRydWUuXG5cbiAgIEV4YW1wbGUgY2FsbCB0byBlbmFibGUgdHJhY2luZyB3aXRoICpza2lwKjpcblxuICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVtcJ2RqYW5nby4qXCddKS5zZXRfdHJhY2UoKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjE6IFRoZSAqc2tpcCogYXJndW1lbnQuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMjogVGhlICpub3NpZ2ludCogYXJndW1lbnQuICBQcmV2aW91c2x5LCBhIFNJR0lOVFxuICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cblxuICAgcnVuKHN0YXRlbWVudCwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbiAgIHJ1bmNhbGwoZnVuY3Rpb24sICphcmdzLCAqKmt3ZHMpXG4gICBzZXRfdHJhY2UoKVxuXG4gICAgICBTZWUgdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSBmdW5jdGlvbnMgZXhwbGFpbmVkIGFib3ZlLlxuXG5cbkRlYnVnZ2VyIENvbW1hbmRzXG49PT09PT09PT09PT09PT09PVxuXG5UaGUgY29tbWFuZHMgcmVjb2duaXplZCBieSB0aGUgZGVidWdnZXIgYXJlIGxpc3RlZCBiZWxvdy4gIE1vc3RcbmNvbW1hbmRzIGNhbiBiZSBhYmJyZXZpYXRlZCB0byBvbmUgb3IgdHdvIGxldHRlcnMgYXMgaW5kaWNhdGVkOyBlLmcuXG4iaChlbHApIiBtZWFucyB0aGF0IGVpdGhlciAiaCIgb3IgImhlbHAiIGNhbiBiZSB1c2VkIHRvIGVudGVyIHRoZSBoZWxwXG5jb21tYW5kIChidXQgbm90ICJoZSIgb3IgImhlbCIsIG5vciAiSCIgb3IgIkhlbHAiIG9yICJIRUxQIikuXG5Bcmd1bWVudHMgdG8gY29tbWFuZHMgbXVzdCBiZSBzZXBhcmF0ZWQgYnkgd2hpdGVzcGFjZSAoc3BhY2VzIG9yXG50YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzICgiW10iKSBpblxudGhlIGNvbW1hbmQgc3ludGF4OyB0aGUgc3F1YXJlIGJyYWNrZXRzIG11c3Qgbm90IGJlIHR5cGVkLlxuQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgYmFyXG4oInwiKS5cblxuRW50ZXJpbmcgYSBibGFuayBsaW5lIHJlcGVhdHMgdGhlIGxhc3QgY29tbWFuZCBlbnRlcmVkLiAgRXhjZXB0aW9uOiBpZlxudGhlIGxhc3QgY29tbWFuZCB3YXMgYSAibGlzdCIgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlIGxpc3RlZC5cblxuQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc25cJ3QgcmVjb2duaXplIGFyZSBhc3N1bWVkIHRvIGJlIFB5dGhvblxuc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZC4gIFB5dGhvbiBzdGF0ZW1lbnRzIGNhbiBhbHNvIGJlIHByZWZpeGVkIHdpdGggYW4gZXhjbGFtYXRpb25cbnBvaW50ICgiISIpLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtIGJlaW5nXG5kZWJ1Z2dlZDsgaXQgaXMgZXZlbiBwb3NzaWJsZSB0byBjaGFuZ2UgYSB2YXJpYWJsZSBvciBjYWxsIGEgZnVuY3Rpb24uXG5XaGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMgaW4gc3VjaCBhIHN0YXRlbWVudCwgdGhlIGV4Y2VwdGlvbiBuYW1lIGlzXG5wcmludGVkIGJ1dCB0aGUgZGVidWdnZXJcJ3Mgc3RhdGUgaXMgbm90IGNoYW5nZWQuXG5cblRoZSBkZWJ1Z2dlciBzdXBwb3J0cyAqYWxpYXNlcyouICBBbGlhc2VzIGNhbiBoYXZlIHBhcmFtZXRlcnMgd2hpY2hcbmFsbG93cyBvbmUgYSBjZXJ0YWluIGxldmVsIG9mIGFkYXB0YWJpbGl0eSB0byB0aGUgY29udGV4dCB1bmRlclxuZXhhbWluYXRpb24uXG5cbk11bHRpcGxlIGNvbW1hbmRzIG1heSBiZSBlbnRlcmVkIG9uIGEgc2luZ2xlIGxpbmUsIHNlcGFyYXRlZCBieSAiOzsiLlxuKEEgc2luZ2xlICI7IiBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSBjb21tYW5kc1xuaW4gYSBsaW5lIHRoYXQgaXMgcGFzc2VkIHRvIHRoZSBQeXRob24gcGFyc2VyLikgIE5vIGludGVsbGlnZW5jZSBpc1xuYXBwbGllZCB0byBzZXBhcmF0aW5nIHRoZSBjb21tYW5kczsgdGhlIGlucHV0IGlzIHNwbGl0IGF0IHRoZSBmaXJzdFxuIjs7IiBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWQgc3RyaW5nLlxuXG5JZiBhIGZpbGUgIi5wZGJyYyIgZXhpc3RzIGluIHRoZSB1c2VyXCdzIGhvbWUgZGlyZWN0b3J5IG9yIGluIHRoZVxuY3VycmVudCBkaXJlY3RvcnksIGl0IGlzIHJlYWQgaW4gYW5kIGV4ZWN1dGVkIGFzIGlmIGl0IGhhZCBiZWVuIHR5cGVkXG5hdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciBhbGlhc2VzLiAgSWZcbmJvdGggZmlsZXMgZXhpc3QsIHRoZSBvbmUgaW4gdGhlIGhvbWUgZGlyZWN0b3J5IGlzIHJlYWQgZmlyc3QgYW5kXG5hbGlhc2VzIGRlZmluZWQgdGhlcmUgY2FuIGJlIG92ZXJyaWRkZW4gYnkgdGhlIGxvY2FsIGZpbGUuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICIucGRicmMiIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG5jb250aW51ZSBkZWJ1Z2dpbmcsIHN1Y2ggYXMgImNvbnRpbnVlIiBvciAibmV4dCIuICBQcmV2aW91c2x5LCB0aGVzZVxuY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cblxuaChlbHApIFtjb21tYW5kXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBwcmludCB0aGUgbGlzdCBvZiBhdmFpbGFibGUgY29tbWFuZHMuICBXaXRoIGFcbiAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICAiaGVscCBwZGIiXG4gICBkaXNwbGF5cyB0aGUgZnVsbCBkb2N1bWVudGF0aW9uICh0aGUgZG9jc3RyaW5nIG9mIHRoZSAicGRiIlxuICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLCAiaGVscFxuICAgZXhlYyIgbXVzdCBiZSBlbnRlcmVkIHRvIGdldCBoZWxwIG9uIHRoZSAiISIgY29tbWFuZC5cblxudyhoZXJlKVxuXG4gICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgYm90dG9tLiAgQW5cbiAgIGFycm93IGluZGljYXRlcyB0aGUgY3VycmVudCBmcmFtZSwgd2hpY2ggZGV0ZXJtaW5lcyB0aGUgY29udGV4dCBvZlxuICAgbW9zdCBjb21tYW5kcy5cblxuZChvd24pIFtjb3VudF1cblxuICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIGRvd24gaW4gdGhlXG4gICBzdGFjayB0cmFjZSAodG8gYSBuZXdlciBmcmFtZSkuXG5cbnUocCkgW2NvdW50XVxuXG4gICBNb3ZlIHRoZSBjdXJyZW50IGZyYW1lICpjb3VudCogKGRlZmF1bHQgb25lKSBsZXZlbHMgdXAgaW4gdGhlIHN0YWNrXG4gICB0cmFjZSAodG8gYW4gb2xkZXIgZnJhbWUpLlxuXG5iKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cblxuICAgV2l0aCBhICpsaW5lbm8qIGFyZ3VtZW50LCBzZXQgYSBicmVhayB0aGVyZSBpbiB0aGUgY3VycmVudCBmaWxlLlxuICAgV2l0aCBhICpmdW5jdGlvbiogYXJndW1lbnQsIHNldCBhIGJyZWFrIGF0IHRoZSBmaXJzdCBleGVjdXRhYmxlXG4gICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlIHByZWZpeGVkXG4gICB3aXRoIGEgZmlsZW5hbWUgYW5kIGEgY29sb24sIHRvIHNwZWNpZnkgYSBicmVha3BvaW50IGluIGFub3RoZXJcbiAgIGZpbGUgKHByb2JhYmx5IG9uZSB0aGF0IGhhc25cJ3QgYmVlbiBsb2FkZWQgeWV0KS4gIFRoZSBmaWxlIGlzXG4gICBzZWFyY2hlZCBvbiAic3lzLnBhdGgiLiAgTm90ZSB0aGF0IGVhY2ggYnJlYWtwb2ludCBpcyBhc3NpZ25lZCBhXG4gICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuXG4gICBJZiBhIHNlY29uZCBhcmd1bWVudCBpcyBwcmVzZW50LCBpdCBpcyBhbiBleHByZXNzaW9uIHdoaWNoIG11c3RcbiAgIGV2YWx1YXRlIHRvIHRydWUgYmVmb3JlIHRoZSBicmVha3BvaW50IGlzIGhvbm9yZWQuXG5cbiAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoIGJyZWFrcG9pbnQsXG4gICB0aGUgbnVtYmVyIG9mIHRpbWVzIHRoYXQgYnJlYWtwb2ludCBoYXMgYmVlbiBoaXQsIHRoZSBjdXJyZW50XG4gICBpZ25vcmUgY291bnQsIGFuZCB0aGUgYXNzb2NpYXRlZCBjb25kaXRpb24gaWYgYW55LlxuXG50YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuXG4gICBUZW1wb3JhcnkgYnJlYWtwb2ludCwgd2hpY2ggaXMgcmVtb3ZlZCBhdXRvbWF0aWNhbGx5IHdoZW4gaXQgaXNcbiAgIGZpcnN0IGhpdC4gVGhlIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgZm9yICJicmVhayIuXG5cbmNsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuXG4gICBXaXRoIGEgKmZpbGVuYW1lOmxpbmVubyogYXJndW1lbnQsIGNsZWFyIGFsbCB0aGUgYnJlYWtwb2ludHMgYXRcbiAgIHRoaXMgbGluZS4gV2l0aCBhIHNwYWNlIHNlcGFyYXRlZCBsaXN0IG9mIGJyZWFrcG9pbnQgbnVtYmVycywgY2xlYXJcbiAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgZmlyc3RcbiAgIGFzayBjb25maXJtYXRpb24pLlxuXG5kaXNhYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cblxuICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuICAgYnJlYWtwb2ludCBudW1iZXJzLiAgRGlzYWJsaW5nIGEgYnJlYWtwb2ludCBtZWFucyBpdCBjYW5ub3QgY2F1c2VcbiAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgYnJlYWtwb2ludCwgaXRcbiAgIHJlbWFpbnMgaW4gdGhlIGxpc3Qgb2YgYnJlYWtwb2ludHMgYW5kIGNhbiBiZSAocmUtKWVuYWJsZWQuXG5cbmVuYWJsZSBbYnBudW1iZXIgW2JwbnVtYmVyIC4uLl1dXG5cbiAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuXG5pZ25vcmUgYnBudW1iZXIgW2NvdW50XVxuXG4gICBTZXQgdGhlIGlnbm9yZSBjb3VudCBmb3IgdGhlIGdpdmVuIGJyZWFrcG9pbnQgbnVtYmVyLiAgSWYgY291bnQgaXNcbiAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyBhY3RpdmVcbiAgIHdoZW4gdGhlIGlnbm9yZSBjb3VudCBpcyB6ZXJvLiAgV2hlbiBub24temVybywgdGhlIGNvdW50IGlzXG4gICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlIGJyZWFrcG9pbnRcbiAgIGlzIG5vdCBkaXNhYmxlZCBhbmQgYW55IGFzc29jaWF0ZWQgY29uZGl0aW9uIGV2YWx1YXRlcyB0byB0cnVlLlxuXG5jb25kaXRpb24gYnBudW1iZXIgW2NvbmRpdGlvbl1cblxuICAgU2V0IGEgbmV3ICpjb25kaXRpb24qIGZvciB0aGUgYnJlYWtwb2ludCwgYW4gZXhwcmVzc2lvbiB3aGljaCBtdXN0XG4gICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgKmNvbmRpdGlvbipcbiAgIGlzIGFic2VudCwgYW55IGV4aXN0aW5nIGNvbmRpdGlvbiBpcyByZW1vdmVkOyBpLmUuLCB0aGUgYnJlYWtwb2ludFxuICAgaXMgbWFkZSB1bmNvbmRpdGlvbmFsLlxuXG5jb21tYW5kcyBbYnBudW1iZXJdXG5cbiAgIFNwZWNpZnkgYSBsaXN0IG9mIGNvbW1hbmRzIGZvciBicmVha3BvaW50IG51bWJlciAqYnBudW1iZXIqLiAgVGhlXG4gICBjb21tYW5kcyB0aGVtc2VsdmVzIGFwcGVhciBvbiB0aGUgZm9sbG93aW5nIGxpbmVzLiAgVHlwZSBhIGxpbmVcbiAgIGNvbnRhaW5pbmcganVzdCAiZW5kIiB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuXG4gICAgICAoUGRiKSBjb21tYW5kcyAxXG4gICAgICAoY29tKSBwIHNvbWVfdmFyaWFibGVcbiAgICAgIChjb20pIGVuZFxuICAgICAgKFBkYilcblxuICAgVG8gcmVtb3ZlIGFsbCBjb21tYW5kcyBmcm9tIGEgYnJlYWtwb2ludCwgdHlwZSBjb21tYW5kcyBhbmQgZm9sbG93XG4gICBpdCBpbW1lZGlhdGVseSB3aXRoICJlbmQiOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuXG4gICBXaXRoIG5vICpicG51bWJlciogYXJndW1lbnQsIGNvbW1hbmRzIHJlZmVycyB0byB0aGUgbGFzdCBicmVha3BvaW50XG4gICBzZXQuXG5cbiAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwIGFnYWluLlxuICAgU2ltcGx5IHVzZSB0aGUgY29udGludWUgY29tbWFuZCwgb3Igc3RlcCwgb3IgYW55IG90aGVyIGNvbW1hbmQgdGhhdFxuICAgcmVzdW1lcyBleGVjdXRpb24uXG5cbiAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgY29udGludWUsXG4gICBzdGVwLCBuZXh0LCByZXR1cm4sIGp1bXAsIHF1aXQgYW5kIHRoZWlyIGFiYnJldmlhdGlvbnMpIHRlcm1pbmF0ZXNcbiAgIHRoZSBjb21tYW5kIGxpc3QgKGFzIGlmIHRoYXQgY29tbWFuZCB3YXMgaW1tZWRpYXRlbHkgZm9sbG93ZWQgYnlcbiAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiB3aXRoIGFcbiAgIHNpbXBsZSBuZXh0IG9yIHN0ZXApLCB5b3UgbWF5IGVuY291bnRlciBhbm90aGVyIGJyZWFrcG9pbnQtLXdoaWNoXG4gICBjb3VsZCBoYXZlIGl0cyBvd24gY29tbWFuZCBsaXN0LCBsZWFkaW5nIHRvIGFtYmlndWl0aWVzIGFib3V0IHdoaWNoXG4gICBsaXN0IHRvIGV4ZWN1dGUuXG5cbiAgIElmIHlvdSB1c2UgdGhlIFwnc2lsZW50XCcgY29tbWFuZCBpbiB0aGUgY29tbWFuZCBsaXN0LCB0aGUgdXN1YWxcbiAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyBtYXkgYmVcbiAgIGRlc2lyYWJsZSBmb3IgYnJlYWtwb2ludHMgdGhhdCBhcmUgdG8gcHJpbnQgYSBzcGVjaWZpYyBtZXNzYWdlIGFuZFxuICAgdGhlbiBjb250aW51ZS4gIElmIG5vbmUgb2YgdGhlIG90aGVyIGNvbW1hbmRzIHByaW50IGFueXRoaW5nLCB5b3VcbiAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG5cbnModGVwKVxuXG4gICBFeGVjdXRlIHRoZSBjdXJyZW50IGxpbmUsIHN0b3AgYXQgdGhlIGZpcnN0IHBvc3NpYmxlIG9jY2FzaW9uXG4gICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiB0aGVcbiAgIGN1cnJlbnQgZnVuY3Rpb24pLlxuXG5uKGV4dClcblxuICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24gaXNcbiAgIHJlYWNoZWQgb3IgaXQgcmV0dXJucy4gIChUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuICJuZXh0IiBhbmQgInN0ZXAiXG4gICBpcyB0aGF0ICJzdGVwIiBzdG9wcyBpbnNpZGUgYSBjYWxsZWQgZnVuY3Rpb24sIHdoaWxlICJuZXh0IlxuICAgZXhlY3V0ZXMgY2FsbGVkIGZ1bmN0aW9ucyBhdCAobmVhcmx5KSBmdWxsIHNwZWVkLCBvbmx5IHN0b3BwaW5nIGF0XG4gICB0aGUgbmV4dCBsaW5lIGluIHRoZSBjdXJyZW50IGZ1bmN0aW9uLilcblxudW50KGlsKSBbbGluZW5vXVxuXG4gICBXaXRob3V0IGFyZ3VtZW50LCBjb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IG9uZSBpcyByZWFjaGVkLlxuXG4gICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhIG51bWJlclxuICAgZ3JlYXRlciBvciBlcXVhbCB0byB0aGF0IGlzIHJlYWNoZWQuICBJbiBib3RoIGNhc2VzLCBhbHNvIHN0b3Agd2hlblxuICAgdGhlIGN1cnJlbnQgZnJhbWUgcmV0dXJucy5cblxuICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgbnVtYmVyLlxuXG5yKGV0dXJuKVxuXG4gICBDb250aW51ZSBleGVjdXRpb24gdW50aWwgdGhlIGN1cnJlbnQgZnVuY3Rpb24gcmV0dXJucy5cblxuYyhvbnQoaW51ZSkpXG5cbiAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzIGVuY291bnRlcmVkLlxuXG5qKHVtcCkgbGluZW5vXG5cbiAgIFNldCB0aGUgbmV4dCBsaW5lIHRoYXQgd2lsbCBiZSBleGVjdXRlZC4gIE9ubHkgYXZhaWxhYmxlIGluIHRoZVxuICAgYm90dG9tLW1vc3QgZnJhbWUuICBUaGlzIGxldHMgeW91IGp1bXAgYmFjayBhbmQgZXhlY3V0ZSBjb2RlIGFnYWluLFxuICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb25cJ3Qgd2FudCB0byBydW4uXG5cbiAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yIGluc3RhbmNlXG4gICBpdCBpcyBub3QgcG9zc2libGUgdG8ganVtcCBpbnRvIHRoZSBtaWRkbGUgb2YgYSAiZm9yIiBsb29wIG9yIG91dFxuICAgb2YgYSAiZmluYWxseSIgY2xhdXNlLlxuXG5sKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG5cbiAgIExpc3Qgc291cmNlIGNvZGUgZm9yIHRoZSBjdXJyZW50IGZpbGUuICBXaXRob3V0IGFyZ3VtZW50cywgbGlzdCAxMVxuICAgbGluZXMgYXJvdW5kIHRoZSBjdXJyZW50IGxpbmUgb3IgY29udGludWUgdGhlIHByZXZpb3VzIGxpc3RpbmcuXG4gICBXaXRoICIuIiBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS4gIFdpdGhcbiAgIG9uZSBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgYXQgdGhhdCBsaW5lLiAgV2l0aCB0d29cbiAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgbGVzc1xuICAgdGhhbiB0aGUgZmlyc3QsIGl0IGlzIGludGVycHJldGVkIGFzIGEgY291bnQuXG5cbiAgIFRoZSBjdXJyZW50IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUgaXMgaW5kaWNhdGVkIGJ5ICItPiIuICBJZiBhblxuICAgZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uIHdhc1xuICAgb3JpZ2luYWxseSByYWlzZWQgb3IgcHJvcGFnYXRlZCBpcyBpbmRpY2F0ZWQgYnkgIj4+IiwgaWYgaXQgZGlmZmVyc1xuICAgZnJvbSB0aGUgY3VycmVudCBsaW5lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAiPj4iIG1hcmtlci5cblxubGwgfCBsb25nbGlzdFxuXG4gICBMaXN0IGFsbCBzb3VyY2UgY29kZSBmb3IgdGhlIGN1cnJlbnQgZnVuY3Rpb24gb3IgZnJhbWUuXG4gICBJbnRlcmVzdGluZyBsaW5lcyBhcmUgbWFya2VkIGFzIGZvciAibGlzdCIuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYShyZ3MpXG5cbiAgIFByaW50IHRoZSBhcmd1bWVudCBsaXN0IG9mIHRoZSBjdXJyZW50IGZ1bmN0aW9uLlxuXG5wIGV4cHJlc3Npb25cblxuICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCBpdHNcbiAgIHZhbHVlLlxuXG4gICBOb3RlOiAicHJpbnQoKSIgY2FuIGFsc28gYmUgdXNlZCwgYnV0IGlzIG5vdCBhIGRlYnVnZ2VyIGNvbW1hbmRcbiAgICAgLS0tIHRoaXMgZXhlY3V0ZXMgdGhlIFB5dGhvbiAicHJpbnQoKSIgZnVuY3Rpb24uXG5cbnBwIGV4cHJlc3Npb25cblxuICAgTGlrZSB0aGUgInAiIGNvbW1hbmQsIGV4Y2VwdCB0aGUgdmFsdWUgb2YgdGhlIGV4cHJlc3Npb24gaXMgcHJldHR5LVxuICAgcHJpbnRlZCB1c2luZyB0aGUgInBwcmludCIgbW9kdWxlLlxuXG53aGF0aXMgZXhwcmVzc2lvblxuXG4gICBQcmludCB0aGUgdHlwZSBvZiB0aGUgKmV4cHJlc3Npb24qLlxuXG5zb3VyY2UgZXhwcmVzc2lvblxuXG4gICBUcnkgdG8gZ2V0IHNvdXJjZSBjb2RlIGZvciB0aGUgZ2l2ZW4gb2JqZWN0IGFuZCBkaXNwbGF5IGl0LlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERpc3BsYXkgdGhlIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uIGlmIGl0IGNoYW5nZWQsIGVhY2ggdGltZVxuICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuXG4gICBXaXRob3V0IGV4cHJlc3Npb24sIGxpc3QgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSBjdXJyZW50XG4gICBmcmFtZS5cblxuICAgTmV3IGluIHZlcnNpb24gMy4yLlxuXG51bmRpc3BsYXkgW2V4cHJlc3Npb25dXG5cbiAgIERvIG5vdCBkaXNwbGF5IHRoZSBleHByZXNzaW9uIGFueSBtb3JlIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuICAgV2l0aG91dCBleHByZXNzaW9uLCBjbGVhciBhbGwgZGlzcGxheSBleHByZXNzaW9ucyBmb3IgdGhlIGN1cnJlbnRcbiAgIGZyYW1lLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjIuXG5cbmludGVyYWN0XG5cbiAgIFN0YXJ0IGFuIGludGVyYXRpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSAiY29kZSIgbW9kdWxlKSB3aG9zZVxuICAgZ2xvYmFsIG5hbWVzcGFjZSBjb250YWlucyBhbGwgdGhlIChnbG9iYWwgYW5kIGxvY2FsKSBuYW1lcyBmb3VuZCBpblxuICAgdGhlIGN1cnJlbnQgc2NvcGUuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuYWxpYXMgW25hbWUgW2NvbW1hbmRdXVxuXG4gICBDcmVhdGUgYW4gYWxpYXMgY2FsbGVkICpuYW1lKiB0aGF0IGV4ZWN1dGVzICpjb21tYW5kKi4gIFRoZSBjb21tYW5kXG4gICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuIGJlXG4gICBpbmRpY2F0ZWQgYnkgIiUxIiwgIiUyIiwgYW5kIHNvIG9uLCB3aGlsZSAiJSoiIGlzIHJlcGxhY2VkIGJ5IGFsbFxuICAgdGhlIHBhcmFtZXRlcnMuIElmIG5vIGNvbW1hbmQgaXMgZ2l2ZW4sIHRoZSBjdXJyZW50IGFsaWFzIGZvclxuICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgbGlzdGVkLlxuXG4gICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlIGxlZ2FsbHlcbiAgIHR5cGVkIGF0IHRoZSBwZGIgcHJvbXB0LiAgTm90ZSB0aGF0IGludGVybmFsIHBkYiBjb21tYW5kcyAqY2FuKiBiZVxuICAgb3ZlcnJpZGRlbiBieSBhbGlhc2VzLiAgU3VjaCBhIGNvbW1hbmQgaXMgdGhlbiBoaWRkZW4gdW50aWwgdGhlXG4gICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgZmlyc3RcbiAgIHdvcmQgb2YgdGhlIGNvbW1hbmQgbGluZTsgYWxsIG90aGVyIHdvcmRzIGluIHRoZSBsaW5lIGFyZSBsZWZ0XG4gICBhbG9uZS5cblxuICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gcGxhY2VkXG4gICBpbiB0aGUgIi5wZGJyYyIgZmlsZSk6XG5cbiAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzICh1c2FnZSAicGkgY2xhc3NJbnN0IilcbiAgICAgIGFsaWFzIHBpIGZvciBrIGluICUxLl9fZGljdF9fLmtleXMoKTogcHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4gICAgICAjIFByaW50IGluc3RhbmNlIHZhcmlhYmxlcyBpbiBzZWxmXG4gICAgICBhbGlhcyBwcyBwaSBzZWxmXG5cbnVuYWxpYXMgbmFtZVxuXG4gICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cblxuISBzdGF0ZW1lbnRcblxuICAgRXhlY3V0ZSB0aGUgKG9uZS1saW5lKSAqc3RhdGVtZW50KiBpbiB0aGUgY29udGV4dCBvZiB0aGUgY3VycmVudFxuICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlIGZpcnN0XG4gICB3b3JkIG9mIHRoZSBzdGF0ZW1lbnQgcmVzZW1ibGVzIGEgZGVidWdnZXIgY29tbWFuZC4gIFRvIHNldCBhXG4gICBnbG9iYWwgdmFyaWFibGUsIHlvdSBjYW4gcHJlZml4IHRoZSBhc3NpZ25tZW50IGNvbW1hbmQgd2l0aCBhXG4gICAiZ2xvYmFsIiBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcblxuICAgICAgKFBkYikgZ2xvYmFsIGxpc3Rfb3B0aW9uczsgbGlzdF9vcHRpb25zID0gW1wnLWxcJ11cbiAgICAgIChQZGIpXG5cbnJ1biBbYXJncyAuLi5dXG5yZXN0YXJ0IFthcmdzIC4uLl1cblxuICAgUmVzdGFydCB0aGUgZGVidWdnZWQgUHl0aG9uIHByb2dyYW0uICBJZiBhbiBhcmd1bWVudCBpcyBzdXBwbGllZCxcbiAgIGl0IGlzIHNwbGl0IHdpdGggInNobGV4IiBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbiAgICJzeXMuYXJndiIuIEhpc3RvcnksIGJyZWFrcG9pbnRzLCBhY3Rpb25zIGFuZCBkZWJ1Z2dlciBvcHRpb25zIGFyZVxuICAgcHJlc2VydmVkLiAicmVzdGFydCIgaXMgYW4gYWxpYXMgZm9yICJydW4iLlxuXG5xKHVpdClcblxuICAgUXVpdCBmcm9tIHRoZSBkZWJ1Z2dlci4gIFRoZSBwcm9ncmFtIGJlaW5nIGV4ZWN1dGVkIGlzIGFib3J0ZWQuXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiBtb2R1bGVcbiAgICBpcyBkZXRlcm1pbmVkIGJ5IHRoZSAiX19uYW1lX18iIGluIHRoZSBmcmFtZSBnbG9iYWxzLlxuJywKLSAnZGVsJzogdSdcblRoZSAiZGVsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG5cbkRlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCBpc1xuZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuaGludHMuXG5cbkRlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG50byByaWdodC5cblxuRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsIG9yXG5nbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSAiZ2xvYmFsIlxuc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG4iTmFtZUVycm9yIiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG5cbkRlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyBwYXNzZWRcbnRvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbmVxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0IGV2ZW5cbnRoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbmJsb2NrLlxuJywKLSAnZGljdCc6IHUnXG5EaWN0aW9uYXJ5IGRpc3BsYXlzXG4qKioqKioqKioqKioqKioqKioqXG5cbkEgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuZW5jbG9zZWQgaW4gY3VybHkgYnJhY2VzOlxuXG4gICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICJ9IlxuICAga2V5X2RhdHVtX2xpc3QgICAgIDo6PSBrZXlfZGF0dW0gKCIsIiBrZXlfZGF0dW0pKiBbIiwiXVxuICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIHwgIioqIiBvcl9leHByXG4gICBkaWN0X2NvbXByZWhlbnNpb24gOjo9IGV4cHJlc3Npb24gIjoiIGV4cHJlc3Npb24gY29tcF9mb3JcblxuQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuXG5JZiBhIGNvbW1hLXNlcGFyYXRlZCBzZXF1ZW5jZSBvZiBrZXkvZGF0dW0gcGFpcnMgaXMgZ2l2ZW4sIHRoZXkgYXJlXG5ldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgZGljdGlvbmFyeTpcbmVhY2gga2V5IG9iamVjdCBpcyB1c2VkIGFzIGEga2V5IGludG8gdGhlIGRpY3Rpb25hcnkgdG8gc3RvcmUgdGhlXG5jb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbm11bHRpcGxlIHRpbWVzIGluIHRoZSBrZXkvZGF0dW0gbGlzdCwgYW5kIHRoZSBmaW5hbCBkaWN0aW9uYXJ5XCdzIHZhbHVlXG5mb3IgdGhhdCBrZXkgd2lsbCBiZSB0aGUgbGFzdCBvbmUgZ2l2ZW4uXG5cbkEgZG91YmxlIGFzdGVyaXNrICIqKiIgZGVub3RlcyAqZGljdGlvbmFyeSB1bnBhY2tpbmcqLiBJdHMgb3BlcmFuZFxubXVzdCBiZSBhICptYXBwaW5nKi4gIEVhY2ggbWFwcGluZyBpdGVtIGlzIGFkZGVkIHRvIHRoZSBuZXdcbmRpY3Rpb25hcnkuICBMYXRlciB2YWx1ZXMgcmVwbGFjZSB2YWx1ZXMgYWxyZWFkeSBzZXQgYnkgZWFybGllclxua2V5L2RhdHVtIHBhaXJzIGFuZCBlYXJsaWVyIGRpY3Rpb25hcnkgdW5wYWNraW5ncy5cblxuTmV3IGluIHZlcnNpb24gMy41OiBVbnBhY2tpbmcgaW50byBkaWN0aW9uYXJ5IGRpc3BsYXlzLCBvcmlnaW5hbGx5XG5wcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cblxuQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbm5lZWRzIHR3byBleHByZXNzaW9ucyBzZXBhcmF0ZWQgd2l0aCBhIGNvbG9uIGZvbGxvd2VkIGJ5IHRoZSB1c3VhbFxuImZvciIgYW5kICJpZiIgY2xhdXNlcy4gV2hlbiB0aGUgY29tcHJlaGVuc2lvbiBpcyBydW4sIHRoZSByZXN1bHRpbmdcbmtleSBhbmQgdmFsdWUgZWxlbWVudHMgYXJlIGluc2VydGVkIGluIHRoZSBuZXcgZGljdGlvbmFyeSBpbiB0aGUgb3JkZXJcbnRoZXkgYXJlIHByb2R1Y2VkLlxuXG5SZXN0cmljdGlvbnMgb24gdGhlIHR5cGVzIG9mIHRoZSBrZXkgdmFsdWVzIGFyZSBsaXN0ZWQgZWFybGllciBpblxuc2VjdGlvbiAqVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5Ki4gIChUbyBzdW1tYXJpemUsIHRoZSBrZXkgdHlwZVxuc2hvdWxkIGJlICpoYXNoYWJsZSosIHdoaWNoIGV4Y2x1ZGVzIGFsbCBtdXRhYmxlIG9iamVjdHMuKSAgQ2xhc2hlc1xuYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG5yaWdodG1vc3QgaW4gdGhlIGRpc3BsYXkpIHN0b3JlZCBmb3IgYSBnaXZlbiBrZXkgdmFsdWUgcHJldmFpbHMuXG4nLAotICdkeW5hbWljLWZlYXR1cmVzJzogdSdcbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG5cbk5hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0IGNvbXBpbGVcbnRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcblxuICAgaSA9IDEwXG4gICBkZWYgZigpOlxuICAgICAgIHByaW50KGkpXG4gICBpID0gNDJcbiAgIGYoKVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKLSAnZWxzZSc6IHUnXG5UaGUgImlmIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuXG4gICBpZl9zdG10IDo6PSAiaWYiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG5cbkl0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyBvbmVcbmJ5IG9uZSB1bnRpbCBvbmUgaXMgZm91bmQgdG8gYmUgdHJ1ZSAoc2VlIHNlY3Rpb24gKkJvb2xlYW4gb3BlcmF0aW9ucypcbmZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyBleGVjdXRlZFxuKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuSWYgYWxsIGV4cHJlc3Npb25zIGFyZSBmYWxzZSwgdGhlIHN1aXRlIG9mIHRoZSAiZWxzZSIgY2xhdXNlLCBpZlxucHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nLAotICdleGNlcHRpb25zJzogdSdcbkV4Y2VwdGlvbnNcbioqKioqKioqKipcblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4ZWNtb2RlbCc6IHUnXG5FeGVjdXRpb24gbW9kZWxcbioqKioqKioqKioqKioqKlxuXG5cblN0cnVjdHVyZSBvZiBhIHByb2dyYW1cbj09PT09PT09PT09PT09PT09PT09PT1cblxuQSBQeXRob24gcHJvZ3JhbSBpcyBjb25zdHJ1Y3RlZCBmcm9tIGNvZGUgYmxvY2tzLiBBICpibG9jayogaXMgYSBwaWVjZVxub2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGEgdW5pdC4gVGhlIGZvbGxvd2luZyBhcmVcbmJsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3MgZGVmaW5pdGlvbi4gRWFjaFxuY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdCBmaWxlIChhIGZpbGUgZ2l2ZW5cbmFzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWQgYXMgYSBjb21tYW5kIGxpbmVcbmFyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQSBzY3JpcHQgY29tbWFuZCAoYVxuY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZSB3aXRoIHRoZSBcJyoqLWMqKlwnXG5vcHRpb24pIGlzIGEgY29kZSBibG9jay4gIFRoZSBzdHJpbmcgYXJndW1lbnQgcGFzc2VkIHRvIHRoZSBidWlsdC1pblxuZnVuY3Rpb25zICJldmFsKCkiIGFuZCAiZXhlYygpIiBpcyBhIGNvZGUgYmxvY2suXG5cbkEgY29kZSBibG9jayBpcyBleGVjdXRlZCBpbiBhbiAqZXhlY3V0aW9uIGZyYW1lKi4gIEEgZnJhbWUgY29udGFpbnNcbnNvbWUgYWRtaW5pc3RyYXRpdmUgaW5mb3JtYXRpb24gKHVzZWQgZm9yIGRlYnVnZ2luZykgYW5kIGRldGVybWluZXNcbndoZXJlIGFuZCBob3cgZXhlY3V0aW9uIGNvbnRpbnVlcyBhZnRlciB0aGUgY29kZSBibG9ja1wncyBleGVjdXRpb24gaGFzXG5jb21wbGV0ZWQuXG5cblxuTmFtaW5nIGFuZCBiaW5kaW5nXG49PT09PT09PT09PT09PT09PT1cblxuXG5CaW5kaW5nIG9mIG5hbWVzXG4tLS0tLS0tLS0tLS0tLS0tXG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0IGJsb2NrLFxudW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlXG5tb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZVxuY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlXG5ibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuXG5FYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAqYmluZGluZypcbm9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiBydWxlcy5cblxuXG5SZXNvbHV0aW9uIG9mIG5hbWVzXG4tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbkEgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgbG9jYWxcbnZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiB0aGVcbmRlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSBibG9ja3NcbmNvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrIGludHJvZHVjZXNcbmEgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gSWZcbnRoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbFxudmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50IHdoZXJlIHRoZVxubmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG5kZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxud2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cbklmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSBieVxuc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSBuYW1lc3BhY2Vcbm9mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkIGZpcnN0LiAgSWZcbnRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gIFRoZVxuImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uXG5pbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlIHZhcmlhYmxlXG5jb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSBnbG9iYWwuXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgbm90XG5leGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5DbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiBhcmVcbnNwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gaXMgYW5cbmV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSByZWZlcmVuY2VzXG5mb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uIHRoYXRcbnVuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFRoZVxubmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IG9mXG50aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0b1xudGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS1cbnRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSB0aGV5IGFyZVxuaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nXG53aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5cbkJ1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cbk5hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0IGNvbXBpbGVcbnRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcblxuICAgaSA9IDEwXG4gICBkZWYgZigpOlxuICAgICAgIHByaW50KGkpXG4gICBpID0gNDJcbiAgIGYoKVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuXG5cbkV4Y2VwdGlvbnNcbj09PT09PT09PT1cblxuRXhjZXB0aW9ucyBhcmUgYSBtZWFucyBvZiBicmVha2luZyBvdXQgb2YgdGhlIG5vcm1hbCBmbG93IG9mIGNvbnRyb2xcbm9mIGEgY29kZSBibG9jayBpbiBvcmRlciB0byBoYW5kbGUgZXJyb3JzIG9yIG90aGVyIGV4Y2VwdGlvbmFsXG5jb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgZXJyb3IgaXNcbmRldGVjdGVkOyBpdCBtYXkgYmUgKmhhbmRsZWQqIGJ5IHRoZSBzdXJyb3VuZGluZyBjb2RlIGJsb2NrIG9yIGJ5IGFueVxuY29kZSBibG9jayB0aGF0IGRpcmVjdGx5IG9yIGluZGlyZWN0bHkgaW52b2tlZCB0aGUgY29kZSBibG9jayB3aGVyZVxudGhlIGVycm9yIG9jY3VycmVkLlxuXG5UaGUgUHl0aG9uIGludGVycHJldGVyIHJhaXNlcyBhbiBleGNlcHRpb24gd2hlbiBpdCBkZXRlY3RzIGEgcnVuLXRpbWVcbmVycm9yIChzdWNoIGFzIGRpdmlzaW9uIGJ5IHplcm8pLiAgQSBQeXRob24gcHJvZ3JhbSBjYW4gYWxzb1xuZXhwbGljaXRseSByYWlzZSBhbiBleGNlcHRpb24gd2l0aCB0aGUgInJhaXNlIiBzdGF0ZW1lbnQuIEV4Y2VwdGlvblxuaGFuZGxlcnMgYXJlIHNwZWNpZmllZCB3aXRoIHRoZSAidHJ5IiAuLi4gImV4Y2VwdCIgc3RhdGVtZW50LiAgVGhlXG4iZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSBjbGVhbnVwXG5jb2RlIHdoaWNoIGRvZXMgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLCBidXQgaXMgZXhlY3V0ZWQgd2hldGhlciBhblxuZXhjZXB0aW9uIG9jY3VycmVkIG9yIG5vdCBpbiB0aGUgcHJlY2VkaW5nIGNvZGUuXG5cblB5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiBleGNlcHRpb25cbmhhbmRsZXIgY2FuIGZpbmQgb3V0IHdoYXQgaGFwcGVuZWQgYW5kIGNvbnRpbnVlIGV4ZWN1dGlvbiBhdCBhbiBvdXRlclxubGV2ZWwsIGJ1dCBpdCBjYW5ub3QgcmVwYWlyIHRoZSBjYXVzZSBvZiB0aGUgZXJyb3IgYW5kIHJldHJ5IHRoZVxuZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlIG9mIGNvZGVcbmZyb20gdGhlIHRvcCkuXG5cbldoZW4gYW4gZXhjZXB0aW9uIGlzIG5vdCBoYW5kbGVkIGF0IGFsbCwgdGhlIGludGVycHJldGVyIHRlcm1pbmF0ZXNcbmV4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiBsb29wLiAgSW5cbmVpdGhlciBjYXNlLCBpdCBwcmludHMgYSBzdGFjayBiYWNrdHJhY2UsIGV4Y2VwdCB3aGVuIHRoZSBleGNlcHRpb24gaXNcbiJTeXN0ZW1FeGl0Ii5cblxuRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgY2xhdXNlIGlzXG5zZWxlY3RlZCBkZXBlbmRpbmcgb24gdGhlIGNsYXNzIG9mIHRoZSBpbnN0YW5jZTogaXQgbXVzdCByZWZlcmVuY2UgdGhlXG5jbGFzcyBvZiB0aGUgaW5zdGFuY2Ugb3IgYSBiYXNlIGNsYXNzIHRoZXJlb2YuICBUaGUgaW5zdGFuY2UgY2FuIGJlXG5yZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlXG5leGNlcHRpb25hbCBjb25kaXRpb24uXG5cbk5vdGU6IEV4Y2VwdGlvbiBtZXNzYWdlcyBhcmUgbm90IHBhcnQgb2YgdGhlIFB5dGhvbiBBUEkuICBUaGVpclxuICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0IHdpdGhvdXRcbiAgd2FybmluZyBhbmQgc2hvdWxkIG5vdCBiZSByZWxpZWQgb24gYnkgY29kZSB3aGljaCB3aWxsIHJ1biB1bmRlclxuICBtdWx0aXBsZSB2ZXJzaW9ucyBvZiB0aGUgaW50ZXJwcmV0ZXIuXG5cblNlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSB0cnlcbnN0YXRlbWVudCogYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuXG4tWyBGb290bm90ZXMgXS1cblxuWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkIGJ5XG4gICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgaXNcbiAgICBjb21waWxlZC5cbicsCi0gJ2V4cHJsaXN0cyc6IHUnXG5FeHByZXNzaW9uIGxpc3RzXG4qKioqKioqKioqKioqKioqXG5cbiAgIGV4cHJlc3Npb25fbGlzdCAgICA6Oj0gZXhwcmVzc2lvbiAoICIsIiBleHByZXNzaW9uICkqIFsiLCJdXG4gICBzdGFycmVkX2xpc3QgICAgICAgOjo9IHN0YXJyZWRfaXRlbSAoICIsIiBzdGFycmVkX2l0ZW0gKSogWyIsIl1cbiAgIHN0YXJyZWRfZXhwcmVzc2lvbiA6Oj0gZXhwcmVzc2lvbiB8ICggc3RhcnJlZF9pdGVtICIsIiApKiBbc3RhcnJlZF9pdGVtXVxuICAgc3RhcnJlZF9pdGVtICAgICAgIDo6PSBleHByZXNzaW9uIHwgIioiIG9yX2V4cHJcblxuRXhjZXB0IHdoZW4gcGFydCBvZiBhIGxpc3Qgb3Igc2V0IGRpc3BsYXksIGFuIGV4cHJlc3Npb24gbGlzdFxuY29udGFpbmluZyBhdCBsZWFzdCBvbmUgY29tbWEgeWllbGRzIGEgdHVwbGUuICBUaGUgbGVuZ3RoIG9mIHRoZSB0dXBsZVxuaXMgdGhlIG51bWJlciBvZiBleHByZXNzaW9ucyBpbiB0aGUgbGlzdC4gIFRoZSBleHByZXNzaW9ucyBhcmVcbmV2YWx1YXRlZCBmcm9tIGxlZnQgdG8gcmlnaHQuXG5cbkFuIGFzdGVyaXNrICIqIiBkZW5vdGVzICppdGVyYWJsZSB1bnBhY2tpbmcqLiAgSXRzIG9wZXJhbmQgbXVzdCBiZSBhblxuKml0ZXJhYmxlKi4gIFRoZSBpdGVyYWJsZSBpcyBleHBhbmRlZCBpbnRvIGEgc2VxdWVuY2Ugb2YgaXRlbXMsIHdoaWNoXG5hcmUgaW5jbHVkZWQgaW4gdGhlIG5ldyB0dXBsZSwgbGlzdCwgb3Igc2V0LCBhdCB0aGUgc2l0ZSBvZiB0aGVcbnVucGFja2luZy5cblxuTmV3IGluIHZlcnNpb24gMy41OiBJdGVyYWJsZSB1bnBhY2tpbmcgaW4gZXhwcmVzc2lvbiBsaXN0cywgb3JpZ2luYWxseVxucHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG5cblRoZSB0cmFpbGluZyBjb21tYSBpcyByZXF1aXJlZCBvbmx5IHRvIGNyZWF0ZSBhIHNpbmdsZSB0dXBsZSAoYS5rLmEuIGFcbipzaW5nbGV0b24qKTsgaXQgaXMgb3B0aW9uYWwgaW4gYWxsIG90aGVyIGNhc2VzLiAgQSBzaW5nbGUgZXhwcmVzc2lvblxud2l0aG91dCBhIHRyYWlsaW5nIGNvbW1hIGRvZXNuXCd0IGNyZWF0ZSBhIHR1cGxlLCBidXQgcmF0aGVyIHlpZWxkcyB0aGVcbnZhbHVlIG9mIHRoYXQgZXhwcmVzc2lvbi4gKFRvIGNyZWF0ZSBhbiBlbXB0eSB0dXBsZSwgdXNlIGFuIGVtcHR5IHBhaXJcbm9mIHBhcmVudGhlc2VzOiAiKCkiLilcbicsCi0gJ2Zsb2F0aW5nJzogdSdcbkZsb2F0aW5nIHBvaW50IGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5GbG9hdGluZyBwb2ludCBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbFxuZGVmaW5pdGlvbnM6XG5cbiAgIGZsb2F0bnVtYmVyICAgOjo9IHBvaW50ZmxvYXQgfCBleHBvbmVudGZsb2F0XG4gICBwb2ludGZsb2F0ICAgIDo6PSBbaW50cGFydF0gZnJhY3Rpb24gfCBpbnRwYXJ0ICIuIlxuICAgZXhwb25lbnRmbG9hdCA6Oj0gKGludHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuICAgaW50cGFydCAgICAgICA6Oj0gZGlnaXQrXG4gICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXQrXG4gICBleHBvbmVudCAgICAgIDo6PSAoImUiIHwgIkUiKSBbIisiIHwgIi0iXSBkaWdpdCtcblxuTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkIHVzaW5nXG5yYWRpeCAxMC4gRm9yIGV4YW1wbGUsICIwNzdlMDEwIiBpcyBsZWdhbCwgYW5kIGRlbm90ZXMgdGhlIHNhbWUgbnVtYmVyXG5hcyAiNzdlMTAiLiBUaGUgYWxsb3dlZCByYW5nZSBvZiBmbG9hdGluZyBwb2ludCBsaXRlcmFscyBpc1xuaW1wbGVtZW50YXRpb24tZGVwZW5kZW50LiBTb21lIGV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOlxuXG4gICAzLjE0ICAgIDEwLiAgICAuMDAxICAgIDFlMTAwICAgIDMuMTRlLTEwICAgIDBlMFxuXG5Ob3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgIi0xIlxuaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgIi0iIGFuZCB0aGVcbmxpdGVyYWwgIjEiLlxuJywKLSAnZm9yJzogdSdcblRoZSAiZm9yIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKipcblxuVGhlICJmb3IiIHN0YXRlbWVudCBpcyB1c2VkIHRvIGl0ZXJhdGUgb3ZlciB0aGUgZWxlbWVudHMgb2YgYSBzZXF1ZW5jZVxuKHN1Y2ggYXMgYSBzdHJpbmcsIHR1cGxlIG9yIGxpc3QpIG9yIG90aGVyIGl0ZXJhYmxlIG9iamVjdDpcblxuICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5UaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGV2YWx1YXRlZCBvbmNlOyBpdCBzaG91bGQgeWllbGQgYW4gaXRlcmFibGVcbm9iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4iZXhwcmVzc2lvbl9saXN0Ii4gIFRoZSBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIG9uY2UgZm9yIGVhY2ggaXRlbVxucHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlIGl0ZXJhdG9yLiAgRWFjaFxuaXRlbSBpbiB0dXJuIGlzIGFzc2lnbmVkIHRvIHRoZSB0YXJnZXQgbGlzdCB1c2luZyB0aGUgc3RhbmRhcmQgcnVsZXNcbmZvciBhc3NpZ25tZW50cyAoc2VlICpBc3NpZ25tZW50IHN0YXRlbWVudHMqKSwgYW5kIHRoZW4gdGhlIHN1aXRlIGlzXG5leGVjdXRlZC4gIFdoZW4gdGhlIGl0ZW1zIGFyZSBleGhhdXN0ZWQgKHdoaWNoIGlzIGltbWVkaWF0ZWx5IHdoZW4gdGhlXG5zZXF1ZW5jZSBpcyBlbXB0eSBvciBhbiBpdGVyYXRvciByYWlzZXMgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uKSxcbnRoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgbG9vcFxudGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBjb250aW51ZXNcbndpdGggdGhlIG5leHQgaXRlbSwgb3Igd2l0aCB0aGUgImVsc2UiIGNsYXVzZSBpZiB0aGVyZSBpcyBubyBuZXh0XG5pdGVtLlxuXG5UaGUgZm9yLWxvb3AgbWFrZXMgYXNzaWdubWVudHMgdG8gdGhlIHZhcmlhYmxlcyhzKSBpbiB0aGUgdGFyZ2V0IGxpc3QuXG5UaGlzIG92ZXJ3cml0ZXMgYWxsIHByZXZpb3VzIGFzc2lnbm1lbnRzIHRvIHRob3NlIHZhcmlhYmxlcyBpbmNsdWRpbmdcbnRob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcblxuICAgZm9yIGkgaW4gcmFuZ2UoMTApOlxuICAgICAgIHByaW50KGkpXG4gICAgICAgaSA9IDUgICAgICAgICAgICAgIyB0aGlzIHdpbGwgbm90IGFmZmVjdCB0aGUgZm9yLWxvb3BcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGJlY2F1c2UgaSB3aWxsIGJlIG92ZXJ3cml0dGVuIHdpdGggdGhlIG5leHRcbiAgICAgICAgICAgICAgICAgICAgICAgICAjIGluZGV4IGluIHRoZSByYW5nZVxuXG5OYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgZmluaXNoZWQsXG5idXQgaWYgdGhlIHNlcXVlbmNlIGlzIGVtcHR5LCB0aGV5IHdpbGwgbm90IGhhdmUgYmVlbiBhc3NpZ25lZCB0byBhdFxuYWxsIGJ5IHRoZSBsb29wLiAgSGludDogdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJyYW5nZSgpIiByZXR1cm5zIGFuXG5pdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsXCdzICJmb3IgaVxuOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgMl0iLlxuXG5Ob3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IHRoZVxuICBsb29wICh0aGlzIGNhbiBvbmx5IG9jY3VyIGZvciBtdXRhYmxlIHNlcXVlbmNlcywgaS5lLiBsaXN0cykuICBBblxuICBpbnRlcm5hbCBjb3VudGVyIGlzIHVzZWQgdG8ga2VlcCB0cmFjayBvZiB3aGljaCBpdGVtIGlzIHVzZWQgbmV4dCxcbiAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciBoYXNcbiAgcmVhY2hlZCB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSB0aGUgbG9vcCB0ZXJtaW5hdGVzLiAgVGhpcyBtZWFuc1xuICB0aGF0IGlmIHRoZSBzdWl0ZSBkZWxldGVzIHRoZSBjdXJyZW50IChvciBhIHByZXZpb3VzKSBpdGVtIGZyb20gdGhlXG4gIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgaW5kZXggb2ZcbiAgdGhlIGN1cnJlbnQgaXRlbSB3aGljaCBoYXMgYWxyZWFkeSBiZWVuIHRyZWF0ZWQpLiAgTGlrZXdpc2UsIGlmIHRoZVxuICBzdWl0ZSBpbnNlcnRzIGFuIGl0ZW0gaW4gdGhlIHNlcXVlbmNlIGJlZm9yZSB0aGUgY3VycmVudCBpdGVtLCB0aGVcbiAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlIGxvb3AuXG4gIFRoaXMgY2FuIGxlYWQgdG8gbmFzdHkgYnVncyB0aGF0IGNhbiBiZSBhdm9pZGVkIGJ5IG1ha2luZyBhXG4gIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuXG4gICAgIGZvciB4IGluIGFbOl06XG4gICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicsCi0gJ2Zvcm1hdHN0cmluZ3MnOiB1J1xuRm9ybWF0IFN0cmluZyBTeW50YXhcbioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QgYW5kIHRoZSAiRm9ybWF0dGVyIiBjbGFzcyBzaGFyZSB0aGUgc2FtZVxuc3ludGF4IGZvciBmb3JtYXQgc3RyaW5ncyAoYWx0aG91Z2ggaW4gdGhlIGNhc2Ugb2YgIkZvcm1hdHRlciIsXG5zdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS5cblxuRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5IGN1cmx5IGJyYWNlc1xuInt9Ii4gQW55dGhpbmcgdGhhdCBpcyBub3QgY29udGFpbmVkIGluIGJyYWNlcyBpcyBjb25zaWRlcmVkIGxpdGVyYWxcbnRleHQsIHdoaWNoIGlzIGNvcGllZCB1bmNoYW5nZWQgdG8gdGhlIG91dHB1dC4gIElmIHlvdSBuZWVkIHRvIGluY2x1ZGVcbmEgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5IGRvdWJsaW5nOlxuInt7IiBhbmQgIn19Ii5cblxuVGhlIGdyYW1tYXIgZm9yIGEgcmVwbGFjZW1lbnQgZmllbGQgaXMgYXMgZm9sbG93czpcblxuICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiBjb252ZXJzaW9uXSBbIjoiIGZvcm1hdF9zcGVjXSAifSJcbiAgICAgIGZpZWxkX25hbWUgICAgICAgIDo6PSBhcmdfbmFtZSAoIi4iIGF0dHJpYnV0ZV9uYW1lIHwgIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbiAgICAgIGFyZ19uYW1lICAgICAgICAgIDo6PSBbaWRlbnRpZmllciB8IGludGVnZXJdXG4gICAgICBhdHRyaWJ1dGVfbmFtZSAgICA6Oj0gaWRlbnRpZmllclxuICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbiAgICAgIGluZGV4X3N0cmluZyAgICAgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJdIj4gK1xuICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuICAgICAgZm9ybWF0X3NwZWMgICAgICAgOjo9IDxkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbj5cblxuSW4gbGVzcyBmb3JtYWwgdGVybXMsIHRoZSByZXBsYWNlbWVudCBmaWVsZCBjYW4gc3RhcnQgd2l0aCBhXG4qZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSBmb3JtYXR0ZWRcbmFuZCBpbnNlcnRlZCBpbnRvIHRoZSBvdXRwdXQgaW5zdGVhZCBvZiB0aGUgcmVwbGFjZW1lbnQgZmllbGQuIFRoZVxuKmZpZWxkX25hbWUqIGlzIG9wdGlvbmFsbHkgZm9sbG93ZWQgYnkgYSAgKmNvbnZlcnNpb24qIGZpZWxkLCB3aGljaCBpc1xucHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgIlwnIVwnIiwgYW5kIGEgKmZvcm1hdF9zcGVjKiwgd2hpY2ggaXNcbnByZWNlZGVkIGJ5IGEgY29sb24gIlwnOlwnIi4gIFRoZXNlIHNwZWNpZnkgYSBub24tZGVmYXVsdCBmb3JtYXQgZm9yIHRoZVxucmVwbGFjZW1lbnQgdmFsdWUuXG5cblNlZSBhbHNvIHRoZSAqRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSogc2VjdGlvbi5cblxuVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzIGVpdGhlciBhXG5udW1iZXIgb3IgYSBrZXl3b3JkLiAgSWYgaXRcJ3MgYSBudW1iZXIsIGl0IHJlZmVycyB0byBhIHBvc2l0aW9uYWxcbmFyZ3VtZW50LCBhbmQgaWYgaXRcJ3MgYSBrZXl3b3JkLCBpdCByZWZlcnMgdG8gYSBuYW1lZCBrZXl3b3JkXG5hcmd1bWVudC4gIElmIHRoZSBudW1lcmljYWwgYXJnX25hbWVzIGluIGEgZm9ybWF0IHN0cmluZyBhcmUgMCwgMSwgMixcbi4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpIGFuZCB0aGVcbm51bWJlcnMgMCwgMSwgMiwgLi4uIHdpbGwgYmUgYXV0b21hdGljYWxseSBpbnNlcnRlZCBpbiB0aGF0IG9yZGVyLlxuQmVjYXVzZSAqYXJnX25hbWUqIGlzIG5vdCBxdW90ZS1kZWxpbWl0ZWQsIGl0IGlzIG5vdCBwb3NzaWJsZSB0b1xuc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyAiXCcxMFwnIiBvclxuIlwnOi1dXCciKSB3aXRoaW4gYSBmb3JtYXQgc3RyaW5nLiBUaGUgKmFyZ19uYW1lKiBjYW4gYmUgZm9sbG93ZWQgYnkgYW55XG5udW1iZXIgb2YgaW5kZXggb3IgYXR0cmlidXRlIGV4cHJlc3Npb25zLiBBbiBleHByZXNzaW9uIG9mIHRoZSBmb3JtXG4iXCcubmFtZVwnIiBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgImdldGF0dHIoKSIsIHdoaWxlIGFuXG5leHByZXNzaW9uIG9mIHRoZSBmb3JtICJcJ1tpbmRleF1cJyIgZG9lcyBhbiBpbmRleCBsb29rdXAgdXNpbmdcbiJfX2dldGl0ZW1fXygpIi5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyBjYW4gYmVcbm9taXR0ZWQsIHNvICJcJ3t9IHt9XCciIGlzIGVxdWl2YWxlbnQgdG8gIlwnezB9IHsxfVwnIi5cblxuU29tZSBzaW1wbGUgZm9ybWF0IHN0cmluZyBleGFtcGxlczpcblxuICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgICMgUmVmZXJlbmNlcyBmaXJzdCBwb3NpdGlvbmFsIGFyZ3VtZW50XG4gICAiQnJpbmcgbWUgYSB7fSIgICAgICAgICAgICAgICAgICAgIyBJbXBsaWNpdGx5IHJlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbiAgICJGcm9tIHt9IHRvIHt9IiAgICAgICAgICAgICAgICAgICAjIFNhbWUgYXMgIkZyb20gezB9IHRvIHsxfSJcbiAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCBhcmd1bWVudCBcJ25hbWVcJ1xuICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgb2YgZmlyc3QgcG9zaXRpb25hbCBhcmdcbiAgICJVbml0cyBkZXN0cm95ZWQ6IHtwbGF5ZXJzWzBdfSIgICAjIEZpcnN0IGVsZW1lbnQgb2Yga2V5d29yZCBhcmd1bWVudCBcJ3BsYXllcnNcJy5cblxuVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSBmb3JtYXR0aW5nLlxuTm9ybWFsbHksIHRoZSBqb2Igb2YgZm9ybWF0dGluZyBhIHZhbHVlIGlzIGRvbmUgYnkgdGhlICJfX2Zvcm1hdF9fKCkiXG5tZXRob2Qgb2YgdGhlIHZhbHVlIGl0c2VsZi4gIEhvd2V2ZXIsIGluIHNvbWUgY2FzZXMgaXQgaXMgZGVzaXJhYmxlIHRvXG5mb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLCBvdmVycmlkaW5nIGl0cyBvd25cbmRlZmluaXRpb24gb2YgZm9ybWF0dGluZy4gIEJ5IGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGEgc3RyaW5nIGJlZm9yZVxuY2FsbGluZyAiX19mb3JtYXRfXygpIiwgdGhlIG5vcm1hbCBmb3JtYXR0aW5nIGxvZ2ljIGlzIGJ5cGFzc2VkLlxuXG5UaHJlZSBjb252ZXJzaW9uIGZsYWdzIGFyZSBjdXJyZW50bHkgc3VwcG9ydGVkOiAiXCchc1wnIiB3aGljaCBjYWxsc1xuInN0cigpIiBvbiB0aGUgdmFsdWUsICJcJyFyXCciIHdoaWNoIGNhbGxzICJyZXByKCkiIGFuZCAiXCchYVwnIiB3aGljaFxuY2FsbHMgImFzY2lpKCkiLlxuXG5Tb21lIGV4YW1wbGVzOlxuXG4gICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgYXJndW1lbnQgZmlyc3RcbiAgICJCcmluZyBvdXQgdGhlIGhvbHkge25hbWUhcn0iICAgICMgQ2FsbHMgcmVwcigpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuICAgIk1vcmUgeyFhfSIgICAgICAgICAgICAgICAgICAgICAgIyBDYWxscyBhc2NpaSgpIG9uIHRoZSBhcmd1bWVudCBmaXJzdFxuXG5UaGUgKmZvcm1hdF9zcGVjKiBmaWVsZCBjb250YWlucyBhIHNwZWNpZmljYXRpb24gb2YgaG93IHRoZSB2YWx1ZVxuc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgYWxpZ25tZW50LFxucGFkZGluZywgZGVjaW1hbCBwcmVjaXNpb24gYW5kIHNvIG9uLiAgRWFjaCB2YWx1ZSB0eXBlIGNhbiBkZWZpbmUgaXRzXG5vd24gImZvcm1hdHRpbmcgbWluaS1sYW5ndWFnZSIgb3IgaW50ZXJwcmV0YXRpb24gb2YgdGhlICpmb3JtYXRfc3BlYyouXG5cbk1vc3QgYnVpbHQtaW4gdHlwZXMgc3VwcG9ydCBhIGNvbW1vbiBmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UsIHdoaWNoXG5pcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cblxuQSAqZm9ybWF0X3NwZWMqIGZpZWxkIGNhbiBhbHNvIGluY2x1ZGUgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkc1xud2l0aGluIGl0LiBUaGVzZSBuZXN0ZWQgcmVwbGFjZW1lbnQgZmllbGRzIG1heSBjb250YWluIGEgZmllbGQgbmFtZSxcbmNvbnZlcnNpb24gZmxhZyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBkZWVwZXIgbmVzdGluZyBpcyBub3RcbmFsbG93ZWQuICBUaGUgcmVwbGFjZW1lbnQgZmllbGRzIHdpdGhpbiB0aGUgZm9ybWF0X3NwZWMgYXJlXG5zdWJzdGl0dXRlZCBiZWZvcmUgdGhlICpmb3JtYXRfc3BlYyogc3RyaW5nIGlzIGludGVycHJldGVkLiBUaGlzXG5hbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYSB2YWx1ZSB0byBiZSBkeW5hbWljYWxseSBzcGVjaWZpZWQuXG5cblNlZSB0aGUgKkZvcm1hdCBleGFtcGxlcyogc2VjdGlvbiBmb3Igc29tZSBleGFtcGxlcy5cblxuXG5Gb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbiJGb3JtYXQgc3BlY2lmaWNhdGlvbnMiIGFyZSB1c2VkIHdpdGhpbiByZXBsYWNlbWVudCBmaWVsZHMgY29udGFpbmVkXG53aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlIHByZXNlbnRlZFxuKHNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqKS4gIFRoZXkgY2FuIGFsc28gYmUgcGFzc2VkIGRpcmVjdGx5IHRvIHRoZVxuYnVpbHQtaW4gImZvcm1hdCgpIiBmdW5jdGlvbi4gIEVhY2ggZm9ybWF0dGFibGUgdHlwZSBtYXkgZGVmaW5lIGhvd1xudGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzIHRvIGJlIGludGVycHJldGVkLlxuXG5Nb3N0IGJ1aWx0LWluIHR5cGVzIGltcGxlbWVudCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZm9yIGZvcm1hdFxuc3BlY2lmaWNhdGlvbnMsIGFsdGhvdWdoIHNvbWUgb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBhcmUgb25seVxuc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuXG5BIGdlbmVyYWwgY29udmVudGlvbiBpcyB0aGF0IGFuIGVtcHR5IGZvcm1hdCBzdHJpbmcgKCIiIiIpIHByb2R1Y2VzXG50aGUgc2FtZSByZXN1bHQgYXMgaWYgeW91IGhhZCBjYWxsZWQgInN0cigpIiBvbiB0aGUgdmFsdWUuIEEgbm9uLWVtcHR5XG5mb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuXG5UaGUgZ2VuZXJhbCBmb3JtIG9mIGEgKnN0YW5kYXJkIGZvcm1hdCBzcGVjaWZpZXIqIGlzOlxuXG4gICBmb3JtYXRfc3BlYyA6Oj0gW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bLF1bLnByZWNpc2lvbl1bdHlwZV1cbiAgIGZpbGwgICAgICAgIDo6PSA8YW55IGNoYXJhY3Rlcj5cbiAgIGFsaWduICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbiAgIHNpZ24gICAgICAgIDo6PSAiKyIgfCAiLSIgfCAiICJcbiAgIHdpZHRoICAgICAgIDo6PSBpbnRlZ2VyXG4gICBwcmVjaXNpb24gICA6Oj0gaW50ZWdlclxuICAgdHlwZSAgICAgICAgOjo9ICJiIiB8ICJjIiB8ICJkIiB8ICJlIiB8ICJFIiB8ICJmIiB8ICJGIiB8ICJnIiB8ICJHIiB8ICJuIiB8ICJvIiB8ICJzIiB8ICJ4IiB8ICJYIiB8ICIlIlxuXG5JZiBhIHZhbGlkICphbGlnbiogdmFsdWUgaXMgc3BlY2lmaWVkLCBpdCBjYW4gYmUgcHJlY2VkZWQgYnkgYSAqZmlsbCpcbmNoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlIGlmXG5vbWl0dGVkLiBJdCBpcyBub3QgcG9zc2libGUgdG8gdXNlIGEgbGl0ZXJhbCBjdXJseSBicmFjZSAoIiJ7IiIgb3JcbiIifSIiKSBhcyB0aGUgKmZpbGwqIGNoYXJhY3RlciB3aGVuIHVzaW5nIHRoZSAic3RyLmZvcm1hdCgpIiBtZXRob2QuXG5Ib3dldmVyLCBpdCBpcyBwb3NzaWJsZSB0byBpbnNlcnQgYSBjdXJseSBicmFjZSB3aXRoIGEgbmVzdGVkXG5yZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgbGltaXRhdGlvbiBkb2VzblwndCBhZmZlY3QgdGhlICJmb3JtYXQoKSJcbmZ1bmN0aW9uLlxuXG5UaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyBmb2xsb3dzOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBPcHRpb24gICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJzxcJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSBsZWZ0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICB8XG4gICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0IG9iamVjdHMpLiAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnPlwnIiAgICAgfCBGb3JjZXMgdGhlIGZpZWxkIHRvIGJlIHJpZ2h0LWFsaWduZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgIHxcbiAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yIG51bWJlcnMpLiAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCc9XCciICAgICB8IEZvcmNlcyB0aGUgcGFkZGluZyB0byBiZSBwbGFjZWQgYWZ0ZXIgdGhlIHNpZ24gKGlmIGFueSkgICAgfFxuICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yIHByaW50aW5nIGZpZWxkcyAgIHxcbiAgIHwgICAgICAgICAgIHwgaW4gdGhlIGZvcm0gXCcrMDAwMDAwMTIwXCcuIFRoaXMgYWxpZ25tZW50IG9wdGlvbiBpcyBvbmx5ICAgIHxcbiAgIHwgICAgICAgICAgIHwgdmFsaWQgZm9yIG51bWVyaWMgdHlwZXMuICBJdCBiZWNvbWVzIHRoZSBkZWZhdWx0IHdoZW4gXCcwXCcgIHxcbiAgIHwgICAgICAgICAgIHwgaW1tZWRpYXRlbHkgcHJlY2VkZXMgdGhlIGZpZWxkIHdpZHRoLiAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdeXCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluIHRoZSBhdmFpbGFibGUgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbk5vdGUgdGhhdCB1bmxlc3MgYSBtaW5pbXVtIGZpZWxkIHdpZHRoIGlzIGRlZmluZWQsIHRoZSBmaWVsZCB3aWR0aFxud2lsbCBhbHdheXMgYmUgdGhlIHNhbWUgc2l6ZSBhcyB0aGUgZGF0YSB0byBmaWxsIGl0LCBzbyB0aGF0IHRoZVxuYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG5cblRoZSAqc2lnbiogb3B0aW9uIGlzIG9ubHkgdmFsaWQgZm9yIG51bWJlciB0eXBlcywgYW5kIGNhbiBiZSBvbmUgb2ZcbnRoZSBmb2xsb3dpbmc6XG5cbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE9wdGlvbiAgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbiAgIHwgIlwnK1wnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgZm9yIGJvdGggcG9zaXRpdmUgYXMgIHxcbiAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSBudW1iZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCctXCciICAgICB8IGluZGljYXRlcyB0aGF0IGEgc2lnbiBzaG91bGQgYmUgdXNlZCBvbmx5IGZvciBuZWdhdGl2ZSAgICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0IGJlaGF2aW9yKS4gICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IHNwYWNlICAgICB8IGluZGljYXRlcyB0aGF0IGEgbGVhZGluZyBzcGFjZSBzaG91bGQgYmUgdXNlZCBvbiBwb3NpdGl2ZSAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlIG51bWJlcnMuICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblRoZSAiXCcjXCciIG9wdGlvbiBjYXVzZXMgdGhlICJhbHRlcm5hdGUgZm9ybSIgdG8gYmUgdXNlZCBmb3IgdGhlXG5jb252ZXJzaW9uLiAgVGhlIGFsdGVybmF0ZSBmb3JtIGlzIGRlZmluZWQgZGlmZmVyZW50bHkgZm9yIGRpZmZlcmVudFxudHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgY29tcGxleCBhbmRcbkRlY2ltYWwgdHlwZXMuIEZvciBpbnRlZ2Vycywgd2hlbiBiaW5hcnksIG9jdGFsLCBvciBoZXhhZGVjaW1hbCBvdXRwdXRcbmlzIHVzZWQsIHRoaXMgb3B0aW9uIGFkZHMgdGhlIHByZWZpeCByZXNwZWN0aXZlICJcJzBiXCciLCAiXCcwb1wnIiwgb3JcbiJcJzB4XCciIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kIERlY2ltYWwgdGhlXG5hbHRlcm5hdGUgZm9ybSBjYXVzZXMgdGhlIHJlc3VsdCBvZiB0aGUgY29udmVyc2lvbiB0byBhbHdheXMgY29udGFpbiBhXG5kZWNpbWFsLXBvaW50IGNoYXJhY3RlciwgZXZlbiBpZiBubyBkaWdpdHMgZm9sbG93IGl0LiBOb3JtYWxseSwgYVxuZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlIGNvbnZlcnNpb25zXG5vbmx5IGlmIGEgZGlnaXQgZm9sbG93cyBpdC4gSW4gYWRkaXRpb24sIGZvciAiXCdnXCciIGFuZCAiXCdHXCciXG5jb252ZXJzaW9ucywgdHJhaWxpbmcgemVyb3MgYXJlIG5vdCByZW1vdmVkIGZyb20gdGhlIHJlc3VsdC5cblxuVGhlICJcJyxcJyIgb3B0aW9uIHNpZ25hbHMgdGhlIHVzZSBvZiBhIGNvbW1hIGZvciBhIHRob3VzYW5kcyBzZXBhcmF0b3IuXG5Gb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlICJcJ25cJyIgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZVxuaW5zdGVhZC5cblxuQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogQWRkZWQgdGhlICJcJyxcJyIgb3B0aW9uIChzZWUgYWxzbyAqKlBFUCAzNzgqKikuXG5cbip3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgd2lkdGguICBJZiBub3RcbnNwZWNpZmllZCwgdGhlbiB0aGUgZmllbGQgd2lkdGggd2lsbCBiZSBkZXRlcm1pbmVkIGJ5IHRoZSBjb250ZW50LlxuXG5XaGVuIG5vIGV4cGxpY2l0IGFsaWdubWVudCBpcyBnaXZlbiwgcHJlY2VkaW5nIHRoZSAqd2lkdGgqIGZpZWxkIGJ5IGFcbnplcm8gKCJcJzBcJyIpIGNoYXJhY3RlciBlbmFibGVzIHNpZ24tYXdhcmUgemVyby1wYWRkaW5nIGZvciBudW1lcmljXG50eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhICpmaWxsKiBjaGFyYWN0ZXIgb2YgIlwnMFwnIiB3aXRoIGFuXG4qYWxpZ25tZW50KiB0eXBlIG9mICJcJz1cJyIuXG5cblRoZSAqcHJlY2lzaW9uKiBpcyBhIGRlY2ltYWwgbnVtYmVyIGluZGljYXRpbmcgaG93IG1hbnkgZGlnaXRzIHNob3VsZFxuYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50IHZhbHVlXG5mb3JtYXR0ZWQgd2l0aCAiXCdmXCciIGFuZCAiXCdGXCciLCBvciBiZWZvcmUgYW5kIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50XG5mb3IgYSBmbG9hdGluZyBwb2ludCB2YWx1ZSBmb3JtYXR0ZWQgd2l0aCAiXCdnXCciIG9yICJcJ0dcJyIuICBGb3Igbm9uLVxubnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtIGluIG90aGVyXG53b3JkcywgaG93IG1hbnkgY2hhcmFjdGVycyB3aWxsIGJlIHVzZWQgZnJvbSB0aGUgZmllbGQgY29udGVudC4gVGhlXG4qcHJlY2lzaW9uKiBpcyBub3QgYWxsb3dlZCBmb3IgaW50ZWdlciB2YWx1ZXMuXG5cbkZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlIHByZXNlbnRlZC5cblxuVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdzXCciICAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdHlwZSBmb3Igc3RyaW5ncyBhbmQgICAgfFxuICAgfCAgICAgICAgICAgfCBtYXkgYmUgb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICJcJ3NcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5UaGUgYXZhaWxhYmxlIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcblxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgVHlwZSAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXCdiXCciICAgICB8IEJpbmFyeSBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDIuICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnY1wnIiAgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSBjb3JyZXNwb25kaW5nICAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgdW5pY29kZSBjaGFyYWN0ZXIgYmVmb3JlIHByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdkXCciICAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTAuICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnb1wnIiAgICAgfCBPY3RhbCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlIDguICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ3hcJyIgICAgIHwgSGV4IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluIGJhc2UgMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4gICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSA5LiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnWFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAxNiwgdXNpbmcgdXBwZXItICAgIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZSBsZXR0ZXJzIGZvciB0aGUgZGlnaXRzIGFib3ZlIDkuICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCduXCciICAgICB8IE51bWJlci4gVGhpcyBpcyB0aGUgc2FtZSBhcyAiXCdkXCciLCBleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4gICB8ICAgICAgICAgICB8IGN1cnJlbnQgbG9jYWxlIHNldHRpbmcgdG8gaW5zZXJ0IHRoZSBhcHByb3ByaWF0ZSBudW1iZXIgICAgfFxuICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgY2hhcmFjdGVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICJcJ2RcJyIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5JbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gYmUgZm9ybWF0dGVkXG53aXRoIHRoZSBmbG9hdGluZyBwb2ludCBwcmVzZW50YXRpb24gdHlwZXMgbGlzdGVkIGJlbG93IChleGNlcHQgIlwnblwnIlxuYW5kIE5vbmUpLiBXaGVuIGRvaW5nIHNvLCAiZmxvYXQoKSIgaXMgdXNlZCB0byBjb252ZXJ0IHRoZSBpbnRlZ2VyIHRvXG5hIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cblxuVGhlIGF2YWlsYWJsZSBwcmVzZW50YXRpb24gdHlwZXMgZm9yIGZsb2F0aW5nIHBvaW50IGFuZCBkZWNpbWFsIHZhbHVlc1xuYXJlOlxuXG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCBUeXBlICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICs9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4gICB8ICJcJ2VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFByaW50cyB0aGUgbnVtYmVyIGluIHNjaWVudGlmaWMgICAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgXCdlXCcgdG8gaW5kaWNhdGUgdGhlIGV4cG9uZW50LiAgICB8XG4gICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAiNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnRVwnIiAgICAgfCBFeHBvbmVudCBub3RhdGlvbi4gU2FtZSBhcyAiXCdlXCciIGV4Y2VwdCBpdCB1c2VzIGFuIHVwcGVyICAgfFxuICAgfCAgICAgICAgICAgfCBjYXNlIFwnRVwnIGFzIHRoZSBzZXBhcmF0b3IgY2hhcmFjdGVyLiAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZlwnIiAgICAgfCBGaXhlZCBwb2ludC4gRGlzcGxheXMgdGhlIG51bWJlciBhcyBhIGZpeGVkLXBvaW50IG51bWJlci4gIHxcbiAgIHwgICAgICAgICAgIHwgVGhlIGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXCdGXCciICAgICB8IEZpeGVkIHBvaW50LiBTYW1lIGFzICJcJ2ZcJyIsIGJ1dCBjb252ZXJ0cyAibmFuIiB0byAiTkFOIiAgICB8XG4gICB8ICAgICAgICAgICB8IGFuZCAiaW5mIiB0byAiSU5GIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnZ1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gIEZvciBhIGdpdmVuIHByZWNpc2lvbiAicCA+PSAxIiwgdGhpcyAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcm91bmRzIHRoZSBudW1iZXIgdG8gInAiIHNpZ25pZmljYW50IGRpZ2l0cyBhbmQgdGhlbiAgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgZm9ybWF0IG9yIGluICAgICAgfFxuICAgfCAgICAgICAgICAgfCBzY2llbnRpZmljIG5vdGF0aW9uLCBkZXBlbmRpbmcgb24gaXRzIG1hZ25pdHVkZS4gIFRoZSAgICAgIHxcbiAgIHwgICAgICAgICAgIHwgcHJlY2lzZSBydWxlcyBhcmUgYXMgZm9sbG93czogc3VwcG9zZSB0aGF0IHRoZSByZXN1bHQgICAgICB8XG4gICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kIHByZWNpc2lvbiAicC0xIiB8XG4gICB8ICAgICAgICAgICB8IHdvdWxkIGhhdmUgZXhwb25lbnQgImV4cCIuICBUaGVuIGlmICItNCA8PSBleHAgPCBwIiwgdGhlICAgfFxuICAgfCAgICAgICAgICAgfCBudW1iZXIgaXMgZm9ybWF0dGVkIHdpdGggcHJlc2VudGF0aW9uIHR5cGUgIlwnZlwnIiBhbmQgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgbnVtYmVyIGlzIGZvcm1hdHRlZCAgIHxcbiAgIHwgICAgICAgICAgIHwgd2l0aCBwcmVzZW50YXRpb24gdHlwZSAiXCdlXCciIGFuZCBwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbiAgIHwgICAgICAgICAgIHwgY2FzZXMgaW5zaWduaWZpY2FudCB0cmFpbGluZyB6ZXJvcyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgYWxzbyByZW1vdmVkIGlmICAgICAgfFxuICAgfCAgICAgICAgICAgfCB0aGVyZSBhcmUgbm8gcmVtYWluaW5nIGRpZ2l0cyBmb2xsb3dpbmcgaXQuICBQb3NpdGl2ZSBhbmQgIHxcbiAgIHwgICAgICAgICAgIHwgbmVnYXRpdmUgaW5maW5pdHksIHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSB6ZXJvLCBhbmQgbmFucywgICB8XG4gICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAiLTAiIGFuZCAibmFuIiAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCByZXNwZWN0aXZlbHksIHJlZ2FyZGxlc3Mgb2YgdGhlIHByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbiAgIHwgICAgICAgICAgIHwgIjAiIGlzIHRyZWF0ZWQgYXMgZXF1aXZhbGVudCB0byBhIHByZWNpc2lvbiBvZiAiMSIuIFRoZSAgICB8XG4gICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICI2Ii4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnR1wnIiAgICAgfCBHZW5lcmFsIGZvcm1hdC4gU2FtZSBhcyAiXCdnXCciIGV4Y2VwdCBzd2l0Y2hlcyB0byAiXCdFXCciIGlmICB8XG4gICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSByZXByZXNlbnRhdGlvbnMgb2YgaW5maW5pdHkgfFxuICAgfCAgICAgICAgICAgfCBhbmQgTmFOIGFyZSB1cHBlcmNhc2VkLCB0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsIGV4Y2VwdCB0aGF0IGl0IHVzZXMgdGhlIHxcbiAgIHwgICAgICAgICAgIHwgY3VycmVudCBsb2NhbGUgc2V0dGluZyB0byBpbnNlcnQgdGhlIGFwcHJvcHJpYXRlIG51bWJlciAgICB8XG4gICB8ICAgICAgICAgICB8IHNlcGFyYXRvciBjaGFyYWN0ZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuICAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlwnJVwnIiAgICAgfCBQZXJjZW50YWdlLiBNdWx0aXBsaWVzIHRoZSBudW1iZXIgYnkgMTAwIGFuZCBkaXNwbGF5cyBpbiAgIHxcbiAgIHwgICAgICAgICAgIHwgZml4ZWQgKCJcJ2ZcJyIpIGZvcm1hdCwgZm9sbG93ZWQgYnkgYSBwZXJjZW50IHNpZ24uICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8IE5vbmUgICAgICB8IFNpbWlsYXIgdG8gIlwnZ1wnIiwgZXhjZXB0IHRoYXQgZml4ZWQtcG9pbnQgbm90YXRpb24sIHdoZW4gICB8XG4gICB8ICAgICAgICAgICB8IHVzZWQsIGhhcyBhdCBsZWFzdCBvbmUgZGlnaXQgcGFzdCB0aGUgZGVjaW1hbCBwb2ludC4gVGhlICAgfFxuICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyBhcyBoaWdoIGFzIG5lZWRlZCB0byByZXByZXNlbnQgdGhlICAgIHxcbiAgIHwgICAgICAgICAgIHwgcGFydGljdWxhciB2YWx1ZS4gVGhlIG92ZXJhbGwgZWZmZWN0IGlzIHRvIG1hdGNoIHRoZSAgICAgICB8XG4gICB8ICAgICAgICAgICB8IG91dHB1dCBvZiAic3RyKCkiIGFzIGFsdGVyZWQgYnkgdGhlIG90aGVyIGZvcm1hdCAgICAgICAgICAgfFxuICAgfCAgICAgICAgICAgfCBtb2RpZmllcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cblxuRm9ybWF0IGV4YW1wbGVzXG49PT09PT09PT09PT09PT1cblxuVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGV4YW1wbGVzIG9mIHRoZSAic3RyLmZvcm1hdCgpIiBzeW50YXggYW5kXG5jb21wYXJpc29uIHdpdGggdGhlIG9sZCAiJSItZm9ybWF0dGluZy5cblxuSW4gbW9zdCBvZiB0aGUgY2FzZXMgdGhlIHN5bnRheCBpcyBzaW1pbGFyIHRvIHRoZSBvbGQgIiUiLWZvcm1hdHRpbmcsXG53aXRoIHRoZSBhZGRpdGlvbiBvZiB0aGUgInt9IiBhbmQgd2l0aCAiOiIgdXNlZCBpbnN0ZWFkIG9mICIlIi4gRm9yXG5leGFtcGxlLCAiXCclMDMuMmZcJyIgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gIlwnezowMy4yZn1cJyIuXG5cblRoZSBuZXcgZm9ybWF0IHN5bnRheCBhbHNvIHN1cHBvcnRzIG5ldyBhbmQgZGlmZmVyZW50IG9wdGlvbnMsIHNob3duXG5pbiB0aGUgZm9sbG93IGV4YW1wbGVzLlxuXG5BY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuXG4gICA+Pj4gXCd7MH0sIHsxfSwgezJ9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2EsIGIsIGNcJ1xuICAgPj4+IFwne30sIHt9LCB7fVwnLmZvcm1hdChcJ2FcJywgXCdiXCcsIFwnY1wnKSAgIyAzLjErIG9ubHlcbiAgIFwnYSwgYiwgY1wnXG4gICA+Pj4gXCd7Mn0sIHsxfSwgezB9XCcuZm9ybWF0KFwnYVwnLCBcJ2JcJywgXCdjXCcpXG4gICBcJ2MsIGIsIGFcJ1xuICAgPj4+IFwnezJ9LCB7MX0sIHswfVwnLmZvcm1hdCgqXCdhYmNcJykgICAgICAjIHVucGFja2luZyBhcmd1bWVudCBzZXF1ZW5jZVxuICAgXCdjLCBiLCBhXCdcbiAgID4+PiBcJ3swfXsxfXswfVwnLmZvcm1hdChcJ2FicmFcJywgXCdjYWRcJykgICAjIGFyZ3VtZW50c1wnIGluZGljZXMgY2FuIGJlIHJlcGVhdGVkXG4gICBcJ2FicmFjYWRhYnJhXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuXG4gICA+Pj4gXCdDb29yZGluYXRlczoge2xhdGl0dWRlfSwge2xvbmdpdHVkZX1cJy5mb3JtYXQobGF0aXR1ZGU9XCczNy4yNE5cJywgbG9uZ2l0dWRlPVwnLTExNS44MVdcJylcbiAgIFwnQ29vcmRpbmF0ZXM6IDM3LjI0TiwgLTExNS44MVdcJ1xuICAgPj4+IGNvb3JkID0ge1wnbGF0aXR1ZGVcJzogXCczNy4yNE5cJywgXCdsb25naXR1ZGVcJzogXCctMTE1LjgxV1wnfVxuICAgPj4+IFwnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sIHtsb25naXR1ZGV9XCcuZm9ybWF0KCoqY29vcmQpXG4gICBcJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXXCdcblxuQWNjZXNzaW5nIGFyZ3VtZW50c1wnIGF0dHJpYnV0ZXM6XG5cbiAgID4+PiBjID0gMy01alxuICAgPj4+IChcJ1RoZSBjb21wbGV4IG51bWJlciB7MH0gaXMgZm9ybWVkIGZyb20gdGhlIHJlYWwgcGFydCB7MC5yZWFsfSBcJ1xuICAgLi4uICBcJ2FuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgezAuaW1hZ30uXCcpLmZvcm1hdChjKVxuICAgXCdUaGUgY29tcGxleCBudW1iZXIgKDMtNWopIGlzIGZvcm1lZCBmcm9tIHRoZSByZWFsIHBhcnQgMy4wIGFuZCB0aGUgaW1hZ2luYXJ5IHBhcnQgLTUuMC5cJ1xuICAgPj4+IGNsYXNzIFBvaW50OlxuICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4gICAuLi4gICAgICAgICBzZWxmLngsIHNlbGYueSA9IHgsIHlcbiAgIC4uLiAgICAgZGVmIF9fc3RyX18oc2VsZik6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCdQb2ludCh7c2VsZi54fSwge3NlbGYueX0pXCcuZm9ybWF0KHNlbGY9c2VsZilcbiAgIC4uLlxuICAgPj4+IHN0cihQb2ludCg0LCAyKSlcbiAgIFwnUG9pbnQoNCwgMilcJ1xuXG5BY2Nlc3NpbmcgYXJndW1lbnRzXCcgaXRlbXM6XG5cbiAgID4+PiBjb29yZCA9ICgzLCA1KVxuICAgPj4+IFwnWDogezBbMF19OyAgWTogezBbMV19XCcuZm9ybWF0KGNvb3JkKVxuICAgXCdYOiAzOyAgWTogNVwnXG5cblJlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuXG4gICA+Pj4gInJlcHIoKSBzaG93cyBxdW90ZXM6IHshcn07IHN0cigpIGRvZXNuXCd0OiB7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4gICAicmVwcigpIHNob3dzIHF1b3RlczogXCd0ZXN0MVwnOyBzdHIoKSBkb2VzblwndDogdGVzdDIiXG5cbkFsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG5cbiAgID4+PiBcJ3s6PDMwfVwnLmZvcm1hdChcJ2xlZnQgYWxpZ25lZFwnKVxuICAgXCdsZWZ0IGFsaWduZWQgICAgICAgICAgICAgICAgICBcJ1xuICAgPj4+IFwnezo+MzB9XCcuZm9ybWF0KFwncmlnaHQgYWxpZ25lZFwnKVxuICAgXCcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWRcJ1xuICAgPj4+IFwnezpeMzB9XCcuZm9ybWF0KFwnY2VudGVyZWRcJylcbiAgIFwnICAgICAgICAgICBjZW50ZXJlZCAgICAgICAgICAgXCdcbiAgID4+PiBcJ3s6Kl4zMH1cJy5mb3JtYXQoXCdjZW50ZXJlZFwnKSAgIyB1c2UgXCcqXCcgYXMgYSBmaWxsIGNoYXJcbiAgIFwnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqXCdcblxuUmVwbGFjaW5nICIlK2YiLCAiJS1mIiwgYW5kICIlIGYiIGFuZCBzcGVjaWZ5aW5nIGEgc2lnbjpcblxuICAgPj4+IFwnezorZn07IHs6K2Z9XCcuZm9ybWF0KDMuMTQsIC0zLjE0KSAgIyBzaG93IGl0IGFsd2F5c1xuICAgXCcrMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7OiBmfTsgezogZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSBmb3IgcG9zaXRpdmUgbnVtYmVyc1xuICAgXCcgMy4xNDAwMDA7IC0zLjE0MDAwMFwnXG4gICA+Pj4gXCd7Oi1mfTsgezotZn1cJy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgb25seSB0aGUgbWludXMgLS0gc2FtZSBhcyBcJ3s6Zn07IHs6Zn1cJ1xuICAgXCczLjE0MDAwMDsgLTMuMTQwMDAwXCdcblxuUmVwbGFjaW5nICIleCIgYW5kICIlbyIgYW5kIGNvbnZlcnRpbmcgdGhlIHZhbHVlIHRvIGRpZmZlcmVudCBiYXNlczpcblxuICAgPj4+ICMgZm9ybWF0IGFsc28gc3VwcG9ydHMgYmluYXJ5IG51bWJlcnNcbiAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiB7MDpifSIuZm9ybWF0KDQyKVxuICAgXCdpbnQ6IDQyOyAgaGV4OiAyYTsgIG9jdDogNTI7ICBiaW46IDEwMTAxMFwnXG4gICA+Pj4gIyB3aXRoIDB4LCAwbywgb3IgMGIgYXMgcHJlZml4OlxuICAgPj4+ICJpbnQ6IHswOmR9OyAgaGV4OiB7MDojeH07ICBvY3Q6IHswOiNvfTsgIGJpbjogezA6I2J9Ii5mb3JtYXQoNDIpXG4gICBcJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwXCdcblxuVXNpbmcgdGhlIGNvbW1hIGFzIGEgdGhvdXNhbmRzIHNlcGFyYXRvcjpcblxuICAgPj4+IFwnezosfVwnLmZvcm1hdCgxMjM0NTY3ODkwKVxuICAgXCcxLDIzNCw1NjcsODkwXCdcblxuRXhwcmVzc2luZyBhIHBlcmNlbnRhZ2U6XG5cbiAgID4+PiBwb2ludHMgPSAxOVxuICAgPj4+IHRvdGFsID0gMjJcbiAgID4+PiBcJ0NvcnJlY3QgYW5zd2VyczogezouMiV9XCcuZm9ybWF0KHBvaW50cy90b3RhbClcbiAgIFwnQ29ycmVjdCBhbnN3ZXJzOiA4Ni4zNiVcJ1xuXG5Vc2luZyB0eXBlLXNwZWNpZmljIGZvcm1hdHRpbmc6XG5cbiAgID4+PiBpbXBvcnQgZGF0ZXRpbWVcbiAgID4+PiBkID0gZGF0ZXRpbWUuZGF0ZXRpbWUoMjAxMCwgNywgNCwgMTIsIDE1LCA1OClcbiAgID4+PiBcJ3s6JVktJW0tJWQgJUg6JU06JVN9XCcuZm9ybWF0KGQpXG4gICBcJzIwMTAtMDctMDQgMTI6MTU6NThcJ1xuXG5OZXN0aW5nIGFyZ3VtZW50cyBhbmQgbW9yZSBjb21wbGV4IGV4YW1wbGVzOlxuXG4gICA+Pj4gZm9yIGFsaWduLCB0ZXh0IGluIHppcChcJzxePlwnLCBbXCdsZWZ0XCcsIFwnY2VudGVyXCcsIFwncmlnaHRcJ10pOlxuICAgLi4uICAgICBcJ3swOntmaWxsfXthbGlnbn0xNn1cJy5mb3JtYXQodGV4dCwgZmlsbD1hbGlnbiwgYWxpZ249YWxpZ24pXG4gICAuLi5cbiAgIFwnbGVmdDw8PDw8PDw8PDw8PFwnXG4gICBcJ15eXl5eY2VudGVyXl5eXl5cJ1xuICAgXCc+Pj4+Pj4+Pj4+PnJpZ2h0XCdcbiAgID4+PlxuICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbiAgID4+PiBcJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfVwnLmZvcm1hdCgqb2N0ZXRzKVxuICAgXCdDMEE4MDAwMVwnXG4gICA+Pj4gaW50KF8sIDE2KVxuICAgMzIzMjIzNTUyMVxuICAgPj4+XG4gICA+Pj4gd2lkdGggPSA1XG4gICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTogI2RvY3Rlc3Q6ICtOT1JNQUxJWkVfV0hJVEVTUEFDRVxuICAgLi4uICAgICBmb3IgYmFzZSBpbiBcJ2RYb2JcJzpcbiAgIC4uLiAgICAgICAgIHByaW50KFwnezA6e3dpZHRofXtiYXNlfX1cJy5mb3JtYXQobnVtLCBiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPVwnIFwnKVxuICAgLi4uICAgICBwcmludCgpXG4gICAuLi5cbiAgICAgICA1ICAgICA1ICAgICA1ICAgMTAxXG4gICAgICAgNiAgICAgNiAgICAgNiAgIDExMFxuICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbiAgICAgICA4ICAgICA4ICAgIDEwICAxMDAwXG4gICAgICAgOSAgICAgOSAgICAxMSAgMTAwMVxuICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbiAgICAgIDExICAgICBCICAgIDEzICAxMDExXG4nLAotICdmdW5jdGlvbic6IHUnXG5GdW5jdGlvbiBkZWZpbml0aW9uc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IChzZWVcbnNlY3Rpb24gKlRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSopOlxuXG4gICBmdW5jZGVmICAgICAgICA6Oj0gW2RlY29yYXRvcnNdICJkZWYiIGZ1bmNuYW1lICIoIiBbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbiAgIGRlY29yYXRvcnMgICAgIDo6PSBkZWNvcmF0b3IrXG4gICBkZWNvcmF0b3IgICAgICA6Oj0gIkAiIGRvdHRlZF9uYW1lIFsiKCIgW2FyZ3VtZW50X2xpc3QgWyIsIl1dICIpIl0gTkVXTElORVxuICAgZG90dGVkX25hbWUgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbiAgIHBhcmFtZXRlcl9saXN0IDo6PSAoZGVmcGFyYW1ldGVyICIsIikqXG4gICAgICAgICAgICAgICAgICAgICAgfCAiKiIgW3BhcmFtZXRlcl0gKCIsIiBkZWZwYXJhbWV0ZXIpKiBbIiwiICIqKiIgcGFyYW1ldGVyXVxuICAgICAgICAgICAgICAgICAgICAgIHwgIioqIiBwYXJhbWV0ZXJcbiAgICAgICAgICAgICAgICAgICAgICB8IGRlZnBhcmFtZXRlciBbIiwiXSApXG4gICBwYXJhbWV0ZXIgICAgICA6Oj0gaWRlbnRpZmllciBbIjoiIGV4cHJlc3Npb25dXG4gICBkZWZwYXJhbWV0ZXIgICA6Oj0gcGFyYW1ldGVyIFsiPSIgZXhwcmVzc2lvbl1cbiAgIGZ1bmNuYW1lICAgICAgIDo6PSBpZGVudGlmaWVyXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIEl0cyBleGVjdXRpb24gYmluZHNcbnRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBjdXJyZW50IGxvY2FsIG5hbWVzcGFjZSB0byBhIGZ1bmN0aW9uIG9iamVjdFxuKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbmZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgY3VycmVudCBnbG9iYWwgbmFtZXNwYWNlXG5hcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cblxuVGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gZG9lcyBub3QgZXhlY3V0ZSB0aGUgZnVuY3Rpb24gYm9keTsgdGhpcyBnZXRzXG5leGVjdXRlZCBvbmx5IHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC4gWzNdXG5cbkEgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuZXhwcmVzc2lvbnMuIERlY29yYXRvciBleHByZXNzaW9ucyBhcmUgZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzXG5kZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gIFRoZVxucmVzdWx0IG11c3QgYmUgYSBjYWxsYWJsZSwgd2hpY2ggaXMgaW52b2tlZCB3aXRoIHRoZSBmdW5jdGlvbiBvYmplY3RcbmFzIHRoZSBvbmx5IGFyZ3VtZW50LiBUaGUgcmV0dXJuZWQgdmFsdWUgaXMgYm91bmQgdG8gdGhlIGZ1bmN0aW9uIG5hbWVcbmluc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgaW5cbm5lc3RlZCBmYXNoaW9uLiBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlXG5cbiAgIEBmMShhcmcpXG4gICBAZjJcbiAgIGRlZiBmdW5jKCk6IHBhc3NcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICBkZWYgZnVuYygpOiBwYXNzXG4gICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcblxuV2hlbiBvbmUgb3IgbW9yZSAqcGFyYW1ldGVycyogaGF2ZSB0aGUgZm9ybSAqcGFyYW1ldGVyKiAiPSJcbipleHByZXNzaW9uKiwgdGhlIGZ1bmN0aW9uIGlzIHNhaWQgdG8gaGF2ZSAiZGVmYXVsdCBwYXJhbWV0ZXIgdmFsdWVzLiJcbkZvciBhIHBhcmFtZXRlciB3aXRoIGEgZGVmYXVsdCB2YWx1ZSwgdGhlIGNvcnJlc3BvbmRpbmcgKmFyZ3VtZW50KiBtYXlcbmJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlclwncyBkZWZhdWx0IHZhbHVlIGlzXG5zdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbnBhcmFtZXRlcnMgdXAgdW50aWwgdGhlICIiKiIiIG11c3QgYWxzbyBoYXZlIGEgZGVmYXVsdCB2YWx1ZSAtLS0gdGhpc1xuaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSBncmFtbWFyLlxuXG4qKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuIHRoZVxuZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4qKiBUaGlzIG1lYW5zIHRoYXQgdGhlIGV4cHJlc3Npb24gaXNcbmV2YWx1YXRlZCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkLCBhbmQgdGhhdCB0aGUgc2FtZSAicHJlLVxuY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSBpbXBvcnRhbnRcbnRvIHVuZGVyc3RhbmQgd2hlbiBhIGRlZmF1bHQgcGFyYW1ldGVyIGlzIGEgbXV0YWJsZSBvYmplY3QsIHN1Y2ggYXMgYVxubGlzdCBvciBhIGRpY3Rpb25hcnk6IGlmIHRoZSBmdW5jdGlvbiBtb2RpZmllcyB0aGUgb2JqZWN0IChlLmcuIGJ5XG5hcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgbW9kaWZpZWQuXG5UaGlzIGlzIGdlbmVyYWxseSBub3Qgd2hhdCB3YXMgaW50ZW5kZWQuICBBIHdheSBhcm91bmQgdGhpcyBpcyB0byB1c2VcbiJOb25lIiBhcyB0aGUgZGVmYXVsdCwgYW5kIGV4cGxpY2l0bHkgdGVzdCBmb3IgaXQgaW4gdGhlIGJvZHkgb2YgdGhlXG5mdW5jdGlvbiwgZS5nLjpcblxuICAgZGVmIHdoYXRzX29uX3RoZV90ZWxseShwZW5ndWluPU5vbmUpOlxuICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbiAgICAgICAgICAgcGVuZ3VpbiA9IFtdXG4gICAgICAgcGVuZ3Vpbi5hcHBlbmQoInByb3BlcnR5IG9mIHRoZSB6b28iKVxuICAgICAgIHJldHVybiBwZW5ndWluXG5cbkZ1bmN0aW9uIGNhbGwgc2VtYW50aWNzIGFyZSBkZXNjcmliZWQgaW4gbW9yZSBkZXRhaWwgaW4gc2VjdGlvblxuKkNhbGxzKi4gQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVyc1xubWVudGlvbmVkIGluIHRoZSBwYXJhbWV0ZXIgbGlzdCwgZWl0aGVyIGZyb20gcG9zaXRpb24gYXJndW1lbnRzLCBmcm9tXG5rZXl3b3JkIGFyZ3VtZW50cywgb3IgZnJvbSBkZWZhdWx0IHZhbHVlcy4gIElmIHRoZSBmb3JtXG4iIippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55XG5leGNlc3MgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBkZWZhdWx0aW5nIHRvIHRoZSBlbXB0eSB0dXBsZS4gIElmIHRoZVxuZm9ybSAiIioqaWRlbnRpZmllciIiIGlzIHByZXNlbnQsIGl0IGlzIGluaXRpYWxpemVkIHRvIGEgbmV3XG5kaWN0aW9uYXJ5IHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgbmV3XG5lbXB0eSBkaWN0aW9uYXJ5LiBQYXJhbWV0ZXJzIGFmdGVyICIiKiIiIG9yICIiKmlkZW50aWZpZXIiIiBhcmVcbmtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSBwYXNzZWQgdXNlZCBrZXl3b3JkIGFyZ3VtZW50cy5cblxuUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiIGZvbGxvd2luZ1xudGhlIHBhcmFtZXRlciBuYW1lLiAgQW55IHBhcmFtZXRlciBtYXkgaGF2ZSBhbiBhbm5vdGF0aW9uIGV2ZW4gdGhvc2Vcbm9mIHRoZSBmb3JtICIqaWRlbnRpZmllciIgb3IgIioqaWRlbnRpZmllciIuICBGdW5jdGlvbnMgbWF5IGhhdmVcbiJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlIHBhcmFtZXRlclxubGlzdC4gIFRoZXNlIGFubm90YXRpb25zIGNhbiBiZSBhbnkgdmFsaWQgUHl0aG9uIGV4cHJlc3Npb24gYW5kIGFyZVxuZXZhbHVhdGVkIHdoZW4gdGhlIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuICBBbm5vdGF0aW9ucyBtYXlcbmJlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS5cblRoZSBwcmVzZW5jZSBvZiBhbm5vdGF0aW9ucyBkb2VzIG5vdCBjaGFuZ2UgdGhlIHNlbWFudGljcyBvZiBhXG5mdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG5kaWN0aW9uYXJ5IGtleWVkIGJ5IHRoZSBwYXJhbWV0ZXJzXCcgbmFtZXMgaW4gdGhlICJfX2Fubm90YXRpb25zX18iXG5hdHRyaWJ1dGUgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC5cblxuSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCBib3VuZFxudG8gYSBuYW1lKSwgZm9yIGltbWVkaWF0ZSB1c2UgaW4gZXhwcmVzc2lvbnMuICBUaGlzIHVzZXMgbGFtYmRhXG5leHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gKkxhbWJkYXMqLiAgTm90ZSB0aGF0IHRoZSBsYW1iZGFcbmV4cHJlc3Npb24gaXMgbWVyZWx5IGEgc2hvcnRoYW5kIGZvciBhIHNpbXBsaWZpZWQgZnVuY3Rpb24gZGVmaW5pdGlvbjtcbmEgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kIG9yXG5hc3NpZ25lZCB0byBhbm90aGVyIG5hbWUganVzdCBsaWtlIGEgZnVuY3Rpb24gZGVmaW5lZCBieSBhIGxhbWJkYVxuZXhwcmVzc2lvbi4gIFRoZSAiImRlZiIiIGZvcm0gaXMgYWN0dWFsbHkgbW9yZSBwb3dlcmZ1bCBzaW5jZSBpdFxuYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG5cbioqUHJvZ3JhbW1lclwncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIiJkZWYiIlxuc3RhdGVtZW50IGV4ZWN1dGVkIGluc2lkZSBhIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIGxvY2FsXG5mdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgdXNlZFxuaW4gdGhlIG5lc3RlZCBmdW5jdGlvbiBjYW4gYWNjZXNzIHRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgdGhlIGZ1bmN0aW9uXG5jb250YWluaW5nIHRoZSBkZWYuICBTZWUgc2VjdGlvbiAqTmFtaW5nIGFuZCBiaW5kaW5nKiBmb3IgZGV0YWlscy5cblxuU2VlIGFsc286ICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG5cbiAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKLSAnZ2xvYmFsJzogdSdcblRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgZ2xvYmFsX3N0bXQgOjo9ICJnbG9iYWwiIGlkZW50aWZpZXIgKCIsIiBpZGVudGlmaWVyKSpcblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBpcyBhIGRlY2xhcmF0aW9uIHdoaWNoIGhvbGRzIGZvciB0aGUgZW50aXJlXG5jdXJyZW50IGNvZGUgYmxvY2suICBJdCBtZWFucyB0aGF0IHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgYXJlIHRvIGJlXG5pbnRlcnByZXRlZCBhcyBnbG9iYWxzLiAgSXQgd291bGQgYmUgaW1wb3NzaWJsZSB0byBhc3NpZ24gdG8gYSBnbG9iYWxcbnZhcmlhYmxlIHdpdGhvdXQgImdsb2JhbCIsIGFsdGhvdWdoIGZyZWUgdmFyaWFibGVzIG1heSByZWZlciB0b1xuZ2xvYmFscyB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGdsb2JhbC5cblxuTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIHVzZWQgaW4gdGhlIHNhbWUgY29kZVxuYmxvY2sgdGV4dHVhbGx5IHByZWNlZGluZyB0aGF0ICJnbG9iYWwiIHN0YXRlbWVudC5cblxuTmFtZXMgbGlzdGVkIGluIGEgImdsb2JhbCIgc3RhdGVtZW50IG11c3Qgbm90IGJlIGRlZmluZWQgYXMgZm9ybWFsXG5wYXJhbWV0ZXJzIG9yIGluIGEgImZvciIgbG9vcCBjb250cm9sIHRhcmdldCwgImNsYXNzIiBkZWZpbml0aW9uLFxuZnVuY3Rpb24gZGVmaW5pdGlvbiwgb3IgImltcG9ydCIgc3RhdGVtZW50LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGRvZXMgbm90XG5lbmZvcmNlIHRoZSB0d28gcmVzdHJpY3Rpb25zLCBidXQgcHJvZ3JhbXMgc2hvdWxkIG5vdCBhYnVzZSB0aGlzXG5mcmVlZG9tLCBhcyBmdXR1cmUgaW1wbGVtZW50YXRpb25zIG1heSBlbmZvcmNlIHRoZW0gb3Igc2lsZW50bHkgY2hhbmdlXG50aGUgbWVhbmluZyBvZiB0aGUgcHJvZ3JhbS5cblxuKipQcm9ncmFtbWVyXCdzIG5vdGU6KiogdGhlICJnbG9iYWwiIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBwYXJzZXIuICBJdFxuYXBwbGllcyBvbmx5IHRvIGNvZGUgcGFyc2VkIGF0IHRoZSBzYW1lIHRpbWUgYXMgdGhlICJnbG9iYWwiXG5zdGF0ZW1lbnQuIEluIHBhcnRpY3VsYXIsIGEgImdsb2JhbCIgc3RhdGVtZW50IGNvbnRhaW5lZCBpbiBhIHN0cmluZ1xub3IgY29kZSBvYmplY3Qgc3VwcGxpZWQgdG8gdGhlIGJ1aWx0LWluICJleGVjKCkiIGZ1bmN0aW9uIGRvZXMgbm90XG5hZmZlY3QgdGhlIGNvZGUgYmxvY2sgKmNvbnRhaW5pbmcqIHRoZSBmdW5jdGlvbiBjYWxsLCBhbmQgY29kZVxuY29udGFpbmVkIGluIHN1Y2ggYSBzdHJpbmcgaXMgdW5hZmZlY3RlZCBieSAiZ2xvYmFsIiBzdGF0ZW1lbnRzIGluIHRoZVxuY29kZSBjb250YWluaW5nIHRoZSBmdW5jdGlvbiBjYWxsLiAgVGhlIHNhbWUgYXBwbGllcyB0byB0aGUgImV2YWwoKSJcbmFuZCAiY29tcGlsZSgpIiBmdW5jdGlvbnMuXG4nLAotICdpZC1jbGFzc2VzJzogdSdcblJlc2VydmVkIGNsYXNzZXMgb2YgaWRlbnRpZmllcnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQ2VydGFpbiBjbGFzc2VzIG9mIGlkZW50aWZpZXJzIChiZXNpZGVzIGtleXdvcmRzKSBoYXZlIHNwZWNpYWxcbm1lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgbGVhZGluZyBhbmRcbnRyYWlsaW5nIHVuZGVyc2NvcmUgY2hhcmFjdGVyczpcblxuIl8qIlxuICAgTm90IGltcG9ydGVkIGJ5ICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIuICBUaGUgc3BlY2lhbCBpZGVudGlmaWVyICJfIlxuICAgaXMgdXNlZCBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgdG8gc3RvcmUgdGhlIHJlc3VsdCBvZiB0aGVcbiAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gIFdoZW4gbm90XG4gICBpbiBpbnRlcmFjdGl2ZSBtb2RlLCAiXyIgaGFzIG5vIHNwZWNpYWwgbWVhbmluZyBhbmQgaXMgbm90IGRlZmluZWQuXG4gICBTZWUgc2VjdGlvbiAqVGhlIGltcG9ydCBzdGF0ZW1lbnQqLlxuXG4gICBOb3RlOiBUaGUgbmFtZSAiXyIgaXMgb2Z0ZW4gdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoXG4gICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlXG4gICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyBjb252ZW50aW9uLlxuXG4iX18qX18iXG4gICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlIGludGVycHJldGVyXG4gICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgQ3VycmVudFxuICAgc3lzdGVtIG5hbWVzIGFyZSBkaXNjdXNzZWQgaW4gdGhlICpTcGVjaWFsIG1ldGhvZCBuYW1lcyogc2VjdGlvblxuICAgYW5kIGVsc2V3aGVyZS4gIE1vcmUgd2lsbCBsaWtlbHkgYmUgZGVmaW5lZCBpbiBmdXR1cmUgdmVyc2lvbnMgb2ZcbiAgIFB5dGhvbi4gICpBbnkqIHVzZSBvZiAiX18qX18iIG5hbWVzLCBpbiBhbnkgY29udGV4dCwgdGhhdCBkb2VzIG5vdFxuICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2Ugd2l0aG91dFxuICAgd2FybmluZy5cblxuIl9fKiJcbiAgIENsYXNzLXByaXZhdGUgbmFtZXMuICBOYW1lcyBpbiB0aGlzIGNhdGVnb3J5LCB3aGVuIHVzZWQgd2l0aGluIHRoZVxuICAgY29udGV4dCBvZiBhIGNsYXNzIGRlZmluaXRpb24sIGFyZSByZS13cml0dGVuIHRvIHVzZSBhIG1hbmdsZWQgZm9ybVxuICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiBiYXNlIGFuZFxuICAgZGVyaXZlZCBjbGFzc2VzLiBTZWUgc2VjdGlvbiAqSWRlbnRpZmllcnMgKE5hbWVzKSouXG4nLAotICdpZGVudGlmaWVycyc6IHUnXG5JZGVudGlmaWVycyBhbmQga2V5d29yZHNcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5JZGVudGlmaWVycyAoYWxzbyByZWZlcnJlZCB0byBhcyAqbmFtZXMqKSBhcmUgZGVzY3JpYmVkIGJ5IHRoZVxuZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnMuXG5cblRoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlIHN0YW5kYXJkXG5hbm5leCBVQVgtMzEsIHdpdGggZWxhYm9yYXRpb24gYW5kIGNoYW5nZXMgYXMgZGVmaW5lZCBiZWxvdzsgc2VlIGFsc29cbioqUEVQIDMxMzEqKiBmb3IgZnVydGhlciBkZXRhaWxzLlxuXG5XaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzIGZvclxuaWRlbnRpZmllcnMgYXJlIHRoZSBzYW1lIGFzIGluIFB5dGhvbiAyLng6IHRoZSB1cHBlcmNhc2UgYW5kIGxvd2VyY2FzZVxubGV0dGVycyAiQSIgdGhyb3VnaCAiWiIsIHRoZSB1bmRlcnNjb3JlICJfIiBhbmQsIGV4Y2VwdCBmb3IgdGhlIGZpcnN0XG5jaGFyYWN0ZXIsIHRoZSBkaWdpdHMgIjAiIHRocm91Z2ggIjkiLlxuXG5QeXRob24gMy4wIGludHJvZHVjZXMgYWRkaXRpb25hbCBjaGFyYWN0ZXJzIGZyb20gb3V0c2lkZSB0aGUgQVNDSUlcbnJhbmdlIChzZWUgKipQRVAgMzEzMSoqKS4gIEZvciB0aGVzZSBjaGFyYWN0ZXJzLCB0aGUgY2xhc3NpZmljYXRpb25cbnVzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzIGluY2x1ZGVkIGluIHRoZVxuInVuaWNvZGVkYXRhIiBtb2R1bGUuXG5cbklkZW50aWZpZXJzIGFyZSB1bmxpbWl0ZWQgaW4gbGVuZ3RoLiAgQ2FzZSBpcyBzaWduaWZpY2FudC5cblxuICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuICAgaWRfc3RhcnQgICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gZ2VuZXJhbCBjYXRlZ29yaWVzIEx1LCBMbCwgTHQsIExtLCBMbywgTmwsIHRoZSB1bmRlcnNjb3JlLCBhbmQgY2hhcmFjdGVycyB3aXRoIHRoZSBPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbiAgIGlkX2NvbnRpbnVlICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0LCBwbHVzIGNoYXJhY3RlcnMgaW4gdGhlIGNhdGVnb3JpZXMgTW4sIE1jLCBOZCwgUGMgYW5kIG90aGVycyB3aXRoIHRoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbiAgIHhpZF9zdGFydCAgICA6Oj0gPGFsbCBjaGFyYWN0ZXJzIGluIGlkX3N0YXJ0IHdob3NlIE5GS0Mgbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfc3RhcnQgeGlkX2NvbnRpbnVlKiI+XG4gICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDIG5vcm1hbGl6YXRpb24gaXMgaW4gImlkX2NvbnRpbnVlKiI+XG5cblRoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG5cbiogKkx1KiAtIHVwcGVyY2FzZSBsZXR0ZXJzXG5cbiogKkxsKiAtIGxvd2VyY2FzZSBsZXR0ZXJzXG5cbiogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG5cbiogKkxtKiAtIG1vZGlmaWVyIGxldHRlcnNcblxuKiAqTG8qIC0gb3RoZXIgbGV0dGVyc1xuXG4qICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuXG4qICpNbiogLSBub25zcGFjaW5nIG1hcmtzXG5cbiogKk1jKiAtIHNwYWNpbmcgY29tYmluaW5nIG1hcmtzXG5cbiogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuXG4qICpQYyogLSBjb25uZWN0b3IgcHVuY3R1YXRpb25zXG5cbiogKk90aGVyX0lEX1N0YXJ0KiAtIGV4cGxpY2l0IGxpc3Qgb2YgY2hhcmFjdGVycyBpbiBQcm9wTGlzdC50eHQgdG9cbiAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuXG4qICpPdGhlcl9JRF9Db250aW51ZSogLSBsaWtld2lzZVxuXG5BbGwgaWRlbnRpZmllcnMgYXJlIGNvbnZlcnRlZCBpbnRvIHRoZSBub3JtYWwgZm9ybSBORktDIHdoaWxlIHBhcnNpbmc7XG5jb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG5cbkEgbm9uLW5vcm1hdGl2ZSBIVE1MIGZpbGUgbGlzdGluZyBhbGwgdmFsaWQgaWRlbnRpZmllciBjaGFyYWN0ZXJzIGZvclxuVW5pY29kZSA0LjEgY2FuIGJlIGZvdW5kIGF0IGh0dHBzOi8vd3d3LmRjbC5ocGkudW5pLVxucG90c2RhbS5kZS9ob21lL2xvZXdpcy90YWJsZS0zMTMxLmh0bWwuXG5cblxuS2V5d29yZHNcbj09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgaWRlbnRpZmllcnMgYXJlIHVzZWQgYXMgcmVzZXJ2ZWQgd29yZHMsIG9yICprZXl3b3Jkcyogb2ZcbnRoZSBsYW5ndWFnZSwgYW5kIGNhbm5vdCBiZSB1c2VkIGFzIG9yZGluYXJ5IGlkZW50aWZpZXJzLiAgVGhleSBtdXN0XG5iZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuXG4gICBGYWxzZSAgICAgIGNsYXNzICAgICAgZmluYWxseSAgICBpcyAgICAgICAgIHJldHVyblxuICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbiAgIFRydWUgICAgICAgZGVmICAgICAgICBmcm9tICAgICAgIG5vbmxvY2FsICAgd2hpbGVcbiAgIGFuZCAgICAgICAgZGVsICAgICAgICBnbG9iYWwgICAgIG5vdCAgICAgICAgd2l0aFxuICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuICAgYXNzZXJ0ICAgICBlbHNlICAgICAgIGltcG9ydCAgICAgcGFzc1xuICAgYnJlYWsgICAgICBleGNlcHQgICAgIGluICAgICAgICAgcmFpc2VcblxuXG5SZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkNlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSBzcGVjaWFsXG5tZWFuaW5ncy4gIFRoZXNlIGNsYXNzZXMgYXJlIGlkZW50aWZpZWQgYnkgdGhlIHBhdHRlcm5zIG9mIGxlYWRpbmcgYW5kXG50cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG5cbiJfKiJcbiAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgaWRlbnRpZmllciAiXyJcbiAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YgdGhlXG4gICBsYXN0IGV2YWx1YXRpb247IGl0IGlzIHN0b3JlZCBpbiB0aGUgImJ1aWx0aW5zIiBtb2R1bGUuICBXaGVuIG5vdFxuICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCBkZWZpbmVkLlxuICAgU2VlIHNlY3Rpb24gKlRoZSBpbXBvcnQgc3RhdGVtZW50Ki5cblxuICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuICAgICBpbnRlcm5hdGlvbmFsaXphdGlvbjsgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZVxuICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgY29udmVudGlvbi5cblxuIl9fKl9fIlxuICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSBpbnRlcnByZXRlclxuICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gIEN1cnJlbnRcbiAgIHN5c3RlbSBuYW1lcyBhcmUgZGlzY3Vzc2VkIGluIHRoZSAqU3BlY2lhbCBtZXRob2QgbmFtZXMqIHNlY3Rpb25cbiAgIGFuZCBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zIG9mXG4gICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgZG9lcyBub3RcbiAgIGZvbGxvdyBleHBsaWNpdGx5IGRvY3VtZW50ZWQgdXNlLCBpcyBzdWJqZWN0IHRvIGJyZWFrYWdlIHdpdGhvdXRcbiAgIHdhcm5pbmcuXG5cbiJfXyoiXG4gICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkIHdpdGhpbiB0aGVcbiAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSBtYW5nbGVkIGZvcm1cbiAgIHRvIGhlbHAgYXZvaWQgbmFtZSBjbGFzaGVzIGJldHdlZW4gInByaXZhdGUiIGF0dHJpYnV0ZXMgb2YgYmFzZSBhbmRcbiAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gKklkZW50aWZpZXJzIChOYW1lcykqLlxuJywKLSAnaWYnOiB1J1xuVGhlICJpZiIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKipcblxuVGhlICJpZiIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIGNvbmRpdGlvbmFsIGV4ZWN1dGlvbjpcblxuICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuICAgICAgICAgICAgICAgKCAiZWxpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGUgKSpcbiAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuXG5JdCBzZWxlY3RzIGV4YWN0bHkgb25lIG9mIHRoZSBzdWl0ZXMgYnkgZXZhbHVhdGluZyB0aGUgZXhwcmVzc2lvbnMgb25lXG5ieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uICpCb29sZWFuIG9wZXJhdGlvbnMqXG5mb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbihhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgZXZhbHVhdGVkKS5cbklmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbnByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKLSAnaW1hZ2luYXJ5JzogdSdcbkltYWdpbmFyeSBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqXG5cbkltYWdpbmFyeSBsaXRlcmFscyBhcmUgZGVzY3JpYmVkIGJ5IHRoZSBmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9uczpcblxuICAgaW1hZ251bWJlciA6Oj0gKGZsb2F0bnVtYmVyIHwgaW50cGFydCkgKCJqIiB8ICJKIilcblxuQW4gaW1hZ2luYXJ5IGxpdGVyYWwgeWllbGRzIGEgY29tcGxleCBudW1iZXIgd2l0aCBhIHJlYWwgcGFydCBvZiAwLjAuXG5Db21wbGV4IG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGFzIGEgcGFpciBvZiBmbG9hdGluZyBwb2ludCBudW1iZXJzXG5hbmQgaGF2ZSB0aGUgc2FtZSByZXN0cmljdGlvbnMgb24gdGhlaXIgcmFuZ2UuICBUbyBjcmVhdGUgYSBjb21wbGV4XG5udW1iZXIgd2l0aCBhIG5vbnplcm8gcmVhbCBwYXJ0LCBhZGQgYSBmbG9hdGluZyBwb2ludCBudW1iZXIgdG8gaXQsXG5lLmcuLCAiKDMrNGopIi4gIFNvbWUgZXhhbXBsZXMgb2YgaW1hZ2luYXJ5IGxpdGVyYWxzOlxuXG4gICAzLjE0aiAgIDEwLmogICAgMTBqICAgICAuMDAxaiAgIDFlMTAwaiAgMy4xNGUtMTBqXG4nLAotICdpbXBvcnQnOiB1J1xuVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqKlxuXG4gICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciBbImFzIiBuYW1lXVxuICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbiAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbiAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbiAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5UaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG5zdGVwczpcblxuMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuXG4yLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cbldoZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSB0aGVcbnR3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgdGhvdWdoXG50aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZHVhbCBpbXBvcnQgc3RhdGVtZW50cy5cblxuVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBhcmVcbmRlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgKmltcG9ydCBzeXN0ZW0qLFxud2hpY2ggYWxzbyBkZXNjcmliZXMgdGhlIHZhcmlvdXMgdHlwZXMgb2YgcGFja2FnZXMgYW5kIG1vZHVsZXMgdGhhdFxuY2FuIGJlIGltcG9ydGVkLCBhcyB3ZWxsIGFzIGFsbCB0aGUgaG9va3MgdGhhdCBjYW4gYmUgdXNlZCB0b1xuY3VzdG9taXplIHRoZSBpbXBvcnQgc3lzdGVtLiBOb3RlIHRoYXQgZmFpbHVyZXMgaW4gdGhpcyBzdGVwIG1heVxuaW5kaWNhdGUgZWl0aGVyIHRoYXQgdGhlIG1vZHVsZSBjb3VsZCBub3QgYmUgbG9jYXRlZCwgKm9yKiB0aGF0IGFuXG5lcnJvciBvY2N1cnJlZCB3aGlsZSBpbml0aWFsaXppbmcgdGhlIG1vZHVsZSwgd2hpY2ggaW5jbHVkZXMgZXhlY3V0aW9uXG5vZiB0aGUgbW9kdWxlXCdzIGNvZGUuXG5cbklmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgbWFkZVxuYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG5cbiogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgZm9sbG93aW5nXG4gICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cblxuKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgYVxuICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlXCdzIG5hbWUgaXMgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZVxuICBhcyBhIHJlZmVyZW5jZSB0byB0aGUgaW1wb3J0ZWQgbW9kdWxlXG5cbiogSWYgdGhlIG1vZHVsZSBiZWluZyBpbXBvcnRlZCBpcyAqbm90KiBhIHRvcCBsZXZlbCBtb2R1bGUsIHRoZW4gdGhlXG4gIG5hbWUgb2YgdGhlIHRvcCBsZXZlbCBwYWNrYWdlIHRoYXQgY29udGFpbnMgdGhlIG1vZHVsZSBpcyBib3VuZCBpblxuICB0aGUgbG9jYWwgbmFtZXNwYWNlIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSB0b3AgbGV2ZWwgcGFja2FnZS4gVGhlXG4gIGltcG9ydGVkIG1vZHVsZSBtdXN0IGJlIGFjY2Vzc2VkIHVzaW5nIGl0cyBmdWxsIHF1YWxpZmllZCBuYW1lXG4gIHJhdGhlciB0aGFuIGRpcmVjdGx5XG5cblRoZSAiZnJvbSIgZm9ybSB1c2VzIGEgc2xpZ2h0bHkgbW9yZSBjb21wbGV4IHByb2Nlc3M6XG5cbjEuIGZpbmQgdGhlIG1vZHVsZSBzcGVjaWZpZWQgaW4gdGhlICJmcm9tIiBjbGF1c2UsIGxvYWRpbmcgYW5kXG4gICBpbml0aWFsaXppbmcgaXQgaWYgbmVjZXNzYXJ5O1xuXG4yLiBmb3IgZWFjaCBvZiB0aGUgaWRlbnRpZmllcnMgc3BlY2lmaWVkIGluIHRoZSAiaW1wb3J0IiBjbGF1c2VzOlxuXG4gICAxLiBjaGVjayBpZiB0aGUgaW1wb3J0ZWQgbW9kdWxlIGhhcyBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lXG5cbiAgIDIuIGlmIG5vdCwgYXR0ZW1wdCB0byBpbXBvcnQgYSBzdWJtb2R1bGUgd2l0aCB0aGF0IG5hbWUgYW5kIHRoZW5cbiAgICAgIGNoZWNrIHRoZSBpbXBvcnRlZCBtb2R1bGUgYWdhaW4gZm9yIHRoYXQgYXR0cmlidXRlXG5cbiAgIDMuIGlmIHRoZSBhdHRyaWJ1dGUgaXMgbm90IGZvdW5kLCAiSW1wb3J0RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgNC4gb3RoZXJ3aXNlLCBhIHJlZmVyZW5jZSB0byB0aGF0IHZhbHVlIGlzIHN0b3JlZCBpbiB0aGUgbG9jYWxcbiAgICAgIG5hbWVzcGFjZSwgdXNpbmcgdGhlIG5hbWUgaW4gdGhlICJhcyIgY2xhdXNlIGlmIGl0IGlzIHByZXNlbnQsXG4gICAgICBvdGhlcndpc2UgdXNpbmcgdGhlIGF0dHJpYnV0ZSBuYW1lXG5cbkV4YW1wbGVzOlxuXG4gICBpbXBvcnQgZm9vICAgICAgICAgICAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgYm91bmQgbG9jYWxseVxuICAgaW1wb3J0IGZvby5iYXIuYmF6ICAgICAgICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCwgZm9vIGJvdW5kIGxvY2FsbHlcbiAgIGltcG9ydCBmb28uYmFyLmJheiBhcyBmYmIgICMgZm9vLmJhci5iYXogaW1wb3J0ZWQgYW5kIGJvdW5kIGFzIGZiYlxuICAgZnJvbSBmb28uYmFyIGltcG9ydCBiYXogICAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgYmF6XG4gICBmcm9tIGZvbyBpbXBvcnQgYXR0ciAgICAgICAjIGZvbyBpbXBvcnRlZCBhbmQgZm9vLmF0dHIgYm91bmQgYXMgYXR0clxuXG5JZiB0aGUgbGlzdCBvZiBpZGVudGlmaWVycyBpcyByZXBsYWNlZCBieSBhIHN0YXIgKCJcJypcJyIpLCBhbGwgcHVibGljXG5uYW1lcyBkZWZpbmVkIGluIHRoZSBtb2R1bGUgYXJlIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZVxuc2NvcGUgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG5cblRoZSAqcHVibGljIG5hbWVzKiBkZWZpbmVkIGJ5IGEgbW9kdWxlIGFyZSBkZXRlcm1pbmVkIGJ5IGNoZWNraW5nIHRoZVxubW9kdWxlXCdzIG5hbWVzcGFjZSBmb3IgYSB2YXJpYWJsZSBuYW1lZCAiX19hbGxfXyI7IGlmIGRlZmluZWQsIGl0IG11c3RcbmJlIGEgc2VxdWVuY2Ugb2Ygc3RyaW5ncyB3aGljaCBhcmUgbmFtZXMgZGVmaW5lZCBvciBpbXBvcnRlZCBieSB0aGF0XG5tb2R1bGUuICBUaGUgbmFtZXMgZ2l2ZW4gaW4gIl9fYWxsX18iIGFyZSBhbGwgY29uc2lkZXJlZCBwdWJsaWMgYW5kXG5hcmUgcmVxdWlyZWQgdG8gZXhpc3QuICBJZiAiX19hbGxfXyIgaXMgbm90IGRlZmluZWQsIHRoZSBzZXQgb2YgcHVibGljXG5uYW1lcyBpbmNsdWRlcyBhbGwgbmFtZXMgZm91bmQgaW4gdGhlIG1vZHVsZVwncyBuYW1lc3BhY2Ugd2hpY2ggZG8gbm90XG5iZWdpbiB3aXRoIGFuIHVuZGVyc2NvcmUgY2hhcmFjdGVyICgiXCdfXCciKS4gICJfX2FsbF9fIiBzaG91bGQgY29udGFpblxudGhlIGVudGlyZSBwdWJsaWMgQVBJLiBJdCBpcyBpbnRlbmRlZCB0byBhdm9pZCBhY2NpZGVudGFsbHkgZXhwb3J0aW5nXG5pdGVtcyB0aGF0IGFyZSBub3QgcGFydCBvZiB0aGUgQVBJIChzdWNoIGFzIGxpYnJhcnkgbW9kdWxlcyB3aGljaCB3ZXJlXG5pbXBvcnRlZCBhbmQgdXNlZCB3aXRoaW4gdGhlIG1vZHVsZSkuXG5cblRoZSB3aWxkIGNhcmQgZm9ybSBvZiBpbXBvcnQgLS0tICJmcm9tIG1vZHVsZSBpbXBvcnQgKiIgLS0tIGlzIG9ubHlcbmFsbG93ZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC4gIEF0dGVtcHRpbmcgdG8gdXNlIGl0IGluIGNsYXNzIG9yXG5mdW5jdGlvbiBkZWZpbml0aW9ucyB3aWxsIHJhaXNlIGEgIlN5bnRheEVycm9yIi5cblxuV2hlbiBzcGVjaWZ5aW5nIHdoYXQgbW9kdWxlIHRvIGltcG9ydCB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSB0aGVcbmFic29sdXRlIG5hbWUgb2YgdGhlIG1vZHVsZS4gV2hlbiBhIG1vZHVsZSBvciBwYWNrYWdlIGlzIGNvbnRhaW5lZFxud2l0aGluIGFub3RoZXIgcGFja2FnZSBpdCBpcyBwb3NzaWJsZSB0byBtYWtlIGEgcmVsYXRpdmUgaW1wb3J0IHdpdGhpblxudGhlIHNhbWUgdG9wIHBhY2thZ2Ugd2l0aG91dCBoYXZpbmcgdG8gbWVudGlvbiB0aGUgcGFja2FnZSBuYW1lLiBCeVxudXNpbmcgbGVhZGluZyBkb3RzIGluIHRoZSBzcGVjaWZpZWQgbW9kdWxlIG9yIHBhY2thZ2UgYWZ0ZXIgImZyb20iIHlvdVxuY2FuIHNwZWNpZnkgaG93IGhpZ2ggdG8gdHJhdmVyc2UgdXAgdGhlIGN1cnJlbnQgcGFja2FnZSBoaWVyYXJjaHlcbndpdGhvdXQgc3BlY2lmeWluZyBleGFjdCBuYW1lcy4gT25lIGxlYWRpbmcgZG90IG1lYW5zIHRoZSBjdXJyZW50XG5wYWNrYWdlIHdoZXJlIHRoZSBtb2R1bGUgbWFraW5nIHRoZSBpbXBvcnQgZXhpc3RzLiBUd28gZG90cyBtZWFucyB1cFxub25lIHBhY2thZ2UgbGV2ZWwuIFRocmVlIGRvdHMgaXMgdXAgdHdvIGxldmVscywgZXRjLiBTbyBpZiB5b3UgZXhlY3V0ZVxuImZyb20gLiBpbXBvcnQgbW9kIiBmcm9tIGEgbW9kdWxlIGluIHRoZSAicGtnIiBwYWNrYWdlIHRoZW4geW91IHdpbGxcbmVuZCB1cCBpbXBvcnRpbmcgInBrZy5tb2QiLiBJZiB5b3UgZXhlY3V0ZSAiZnJvbSAuLnN1YnBrZzIgaW1wb3J0IG1vZCJcbmZyb20gd2l0aGluICJwa2cuc3VicGtnMSIgeW91IHdpbGwgaW1wb3J0ICJwa2cuc3VicGtnMi5tb2QiLiBUaGVcbnNwZWNpZmljYXRpb24gZm9yIHJlbGF0aXZlIGltcG9ydHMgaXMgY29udGFpbmVkIHdpdGhpbiAqKlBFUCAzMjgqKi5cblxuImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGlzIHByb3ZpZGVkIHRvIHN1cHBvcnQgYXBwbGljYXRpb25zIHRoYXRcbmRldGVybWluZSBkeW5hbWljYWxseSB0aGUgbW9kdWxlcyB0byBiZSBsb2FkZWQuXG5cblxuRnV0dXJlIHN0YXRlbWVudHNcbj09PT09PT09PT09PT09PT09XG5cbkEgKmZ1dHVyZSBzdGF0ZW1lbnQqIGlzIGEgZGlyZWN0aXZlIHRvIHRoZSBjb21waWxlciB0aGF0IGEgcGFydGljdWxhclxubW9kdWxlIHNob3VsZCBiZSBjb21waWxlZCB1c2luZyBzeW50YXggb3Igc2VtYW50aWNzIHRoYXQgd2lsbCBiZVxuYXZhaWxhYmxlIGluIGEgc3BlY2lmaWVkIGZ1dHVyZSByZWxlYXNlIG9mIFB5dGhvbiB3aGVyZSB0aGUgZmVhdHVyZVxuYmVjb21lcyBzdGFuZGFyZC5cblxuVGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgaW50ZW5kZWQgdG8gZWFzZSBtaWdyYXRpb24gdG8gZnV0dXJlIHZlcnNpb25zXG5vZiBQeXRob24gdGhhdCBpbnRyb2R1Y2UgaW5jb21wYXRpYmxlIGNoYW5nZXMgdG8gdGhlIGxhbmd1YWdlLiAgSXRcbmFsbG93cyB1c2Ugb2YgdGhlIG5ldyBmZWF0dXJlcyBvbiBhIHBlci1tb2R1bGUgYmFzaXMgYmVmb3JlIHRoZVxucmVsZWFzZSBpbiB3aGljaCB0aGUgZmVhdHVyZSBiZWNvbWVzIHN0YW5kYXJkLlxuXG4gICBmdXR1cmVfc3RhdGVtZW50IDo6PSAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqXG4gICAgICAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiAiX19mdXR1cmVfXyIgImltcG9ydCIgIigiIGZlYXR1cmUgWyJhcyIgbmFtZV1cbiAgICAgICAgICAgICAgICAgICAgICAgICgiLCIgZmVhdHVyZSBbImFzIiBuYW1lXSkqIFsiLCJdICIpIlxuICAgZmVhdHVyZSAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuICAgbmFtZSAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgbXVzdCBhcHBlYXIgbmVhciB0aGUgdG9wIG9mIHRoZSBtb2R1bGUuICBUaGUgb25seVxubGluZXMgdGhhdCBjYW4gYXBwZWFyIGJlZm9yZSBhIGZ1dHVyZSBzdGF0ZW1lbnQgYXJlOlxuXG4qIHRoZSBtb2R1bGUgZG9jc3RyaW5nIChpZiBhbnkpLFxuXG4qIGNvbW1lbnRzLFxuXG4qIGJsYW5rIGxpbmVzLCBhbmRcblxuKiBvdGhlciBmdXR1cmUgc3RhdGVtZW50cy5cblxuVGhlIGZlYXR1cmVzIHJlY29nbml6ZWQgYnkgUHl0aG9uIDMuMCBhcmUgImFic29sdXRlX2ltcG9ydCIsXG4iZGl2aXNpb24iLCAiZ2VuZXJhdG9ycyIsICJ1bmljb2RlX2xpdGVyYWxzIiwgInByaW50X2Z1bmN0aW9uIixcbiJuZXN0ZWRfc2NvcGVzIiBhbmQgIndpdGhfc3RhdGVtZW50Ii4gIFRoZXkgYXJlIGFsbCByZWR1bmRhbnQgYmVjYXVzZVxudGhleSBhcmUgYWx3YXlzIGVuYWJsZWQsIGFuZCBvbmx5IGtlcHQgZm9yIGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5LlxuXG5BIGZ1dHVyZSBzdGF0ZW1lbnQgaXMgcmVjb2duaXplZCBhbmQgdHJlYXRlZCBzcGVjaWFsbHkgYXQgY29tcGlsZVxudGltZTogQ2hhbmdlcyB0byB0aGUgc2VtYW50aWNzIG9mIGNvcmUgY29uc3RydWN0cyBhcmUgb2Z0ZW5cbmltcGxlbWVudGVkIGJ5IGdlbmVyYXRpbmcgZGlmZmVyZW50IGNvZGUuICBJdCBtYXkgZXZlbiBiZSB0aGUgY2FzZVxudGhhdCBhIG5ldyBmZWF0dXJlIGludHJvZHVjZXMgbmV3IGluY29tcGF0aWJsZSBzeW50YXggKHN1Y2ggYXMgYSBuZXdcbnJlc2VydmVkIHdvcmQpLCBpbiB3aGljaCBjYXNlIHRoZSBjb21waWxlciBtYXkgbmVlZCB0byBwYXJzZSB0aGVcbm1vZHVsZSBkaWZmZXJlbnRseS4gIFN1Y2ggZGVjaXNpb25zIGNhbm5vdCBiZSBwdXNoZWQgb2ZmIHVudGlsXG5ydW50aW1lLlxuXG5Gb3IgYW55IGdpdmVuIHJlbGVhc2UsIHRoZSBjb21waWxlciBrbm93cyB3aGljaCBmZWF0dXJlIG5hbWVzIGhhdmVcbmJlZW4gZGVmaW5lZCwgYW5kIHJhaXNlcyBhIGNvbXBpbGUtdGltZSBlcnJvciBpZiBhIGZ1dHVyZSBzdGF0ZW1lbnRcbmNvbnRhaW5zIGEgZmVhdHVyZSBub3Qga25vd24gdG8gaXQuXG5cblRoZSBkaXJlY3QgcnVudGltZSBzZW1hbnRpY3MgYXJlIHRoZSBzYW1lIGFzIGZvciBhbnkgaW1wb3J0IHN0YXRlbWVudDpcbnRoZXJlIGlzIGEgc3RhbmRhcmQgbW9kdWxlICJfX2Z1dHVyZV9fIiwgZGVzY3JpYmVkIGxhdGVyLCBhbmQgaXQgd2lsbFxuYmUgaW1wb3J0ZWQgaW4gdGhlIHVzdWFsIHdheSBhdCB0aGUgdGltZSB0aGUgZnV0dXJlIHN0YXRlbWVudCBpc1xuZXhlY3V0ZWQuXG5cblRoZSBpbnRlcmVzdGluZyBydW50aW1lIHNlbWFudGljcyBkZXBlbmQgb24gdGhlIHNwZWNpZmljIGZlYXR1cmVcbmVuYWJsZWQgYnkgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQuXG5cbk5vdGUgdGhhdCB0aGVyZSBpcyBub3RoaW5nIHNwZWNpYWwgYWJvdXQgdGhlIHN0YXRlbWVudDpcblxuICAgaW1wb3J0IF9fZnV0dXJlX18gW2FzIG5hbWVdXG5cblRoYXQgaXMgbm90IGEgZnV0dXJlIHN0YXRlbWVudDsgaXRcJ3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCB3aXRoXG5ubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuXG5Db2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4iY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlIHN0YXRlbWVudFxud2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkIHdpdGggdGhlXG5mdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbiJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgZGV0YWlscy5cblxuQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCB3aWxsXG50YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAqLWkqIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0IG5hbWVcbnRvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSBpblxuZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuZXhlY3V0ZWQuXG5cblNlZSBhbHNvOiAqKlBFUCAyMzYqKiAtIEJhY2sgdG8gdGhlIF9fZnV0dXJlX19cblxuICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCi0gJ2luJzogdSdcbk1lbWJlcnNoaXAgdGVzdCBvcGVyYXRpb25zXG4qKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgb3BlcmF0b3JzICJpbiIgYW5kICJub3QgaW4iIHRlc3QgZm9yIG1lbWJlcnNoaXAuICAieCBpbiBzIlxuZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG5ub3QgaW4gcyIgcmV0dXJucyB0aGUgbmVnYXRpb24gb2YgInggaW4gcyIuICBBbGwgYnVpbHQtaW4gc2VxdWVuY2VzXG5hbmQgc2V0IHR5cGVzIHN1cHBvcnQgdGhpcyBhcyB3ZWxsIGFzIGRpY3Rpb25hcnksIGZvciB3aGljaCAiaW4iIHRlc3RzXG53aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyBzdWNoIGFzXG5saXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIG9yIGNvbGxlY3Rpb25zLmRlcXVlLCB0aGVcbmV4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbnkpIi5cblxuRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBpc1xuYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gLTEiLiAgRW1wdHlcbnN0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG5zbyAiIiIgaW4gImFiYyIiIHdpbGwgcmV0dXJuICJUcnVlIi5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG5pbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICJ5Ll9fY29udGFpbnNfXyh4KSIgaXMgdHJ1ZS5cblxuRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbmRlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAieCA9PSB6IlxuaXMgcHJvZHVjZWQgd2hpbGUgaXRlcmF0aW5nIG92ZXIgInkiLiAgSWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZFxuZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuXG5MYXN0bHksIHRoZSBvbGQtc3R5bGUgaXRlcmF0aW9uIHByb3RvY29sIGlzIHRyaWVkOiBpZiBhIGNsYXNzIGRlZmluZXNcbiJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbm5lZ2F0aXZlIGludGVnZXIgaW5kZXggKmkqIHN1Y2ggdGhhdCAieCA9PSB5W2ldIiwgYW5kIGFsbCBsb3dlclxuaW50ZWdlciBpbmRpY2VzIGRvIG5vdCByYWlzZSAiSW5kZXhFcnJvciIgZXhjZXB0aW9uLiAgKElmIGFueSBvdGhlclxuZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuXG5UaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgdmFsdWUgb2ZcbiJpbiIuXG4nLAotICdpbnRlZ2Vycyc6IHUnXG5JbnRlZ2VyIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cbkludGVnZXIgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIGludGVnZXIgICAgICAgIDo6PSBkZWNpbWFsaW50ZWdlciB8IG9jdGludGVnZXIgfCBoZXhpbnRlZ2VyIHwgYmluaW50ZWdlclxuICAgZGVjaW1hbGludGVnZXIgOjo9IG5vbnplcm9kaWdpdCBkaWdpdCogfCAiMCIrXG4gICBub256ZXJvZGlnaXQgICA6Oj0gIjEiLi4uIjkiXG4gICBkaWdpdCAgICAgICAgICA6Oj0gIjAiLi4uIjkiXG4gICBvY3RpbnRlZ2VyICAgICA6Oj0gIjAiICgibyIgfCAiTyIpIG9jdGRpZ2l0K1xuICAgaGV4aW50ZWdlciAgICAgOjo9ICIwIiAoIngiIHwgIlgiKSBoZXhkaWdpdCtcbiAgIGJpbmludGVnZXIgICAgIDo6PSAiMCIgKCJiIiB8ICJCIikgYmluZGlnaXQrXG4gICBvY3RkaWdpdCAgICAgICA6Oj0gIjAiLi4uIjciXG4gICBoZXhkaWdpdCAgICAgICA6Oj0gZGlnaXQgfCAiYSIuLi4iZiIgfCAiQSIuLi4iRiJcbiAgIGJpbmRpZ2l0ICAgICAgIDo6PSAiMCIgfCAiMSJcblxuVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tIHdoYXRcbmNhbiBiZSBzdG9yZWQgaW4gYXZhaWxhYmxlIG1lbW9yeS5cblxuTm90ZSB0aGF0IGxlYWRpbmcgemVyb3MgaW4gYSBub24temVybyBkZWNpbWFsIG51bWJlciBhcmUgbm90IGFsbG93ZWQuXG5UaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoIFB5dGhvblxudXNlZCBiZWZvcmUgdmVyc2lvbiAzLjAuXG5cblNvbWUgZXhhbXBsZXMgb2YgaW50ZWdlciBsaXRlcmFsczpcblxuICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4gICAzICAgICA3OTIyODE2MjUxNDI2NDMzNzU5MzU0Mzk1MDMzNiAgICAgMG8zNzcgICAgMHhkZWFkYmVlZlxuJywKLSAnbGFtYmRhJzogdSdcbkxhbWJkYXNcbioqKioqKipcblxuICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4gICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06IGV4cHJlc3Npb25fbm9jb25kXG5cbkxhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvIGNyZWF0ZVxuYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6IGV4cHJlc3Npb24iXG55aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgZnVuY3Rpb25cbm9iamVjdCBkZWZpbmVkIHdpdGhcblxuICAgZGVmIDxsYW1iZGE+KGFyZ3VtZW50cyk6XG4gICAgICAgcmV0dXJuIGV4cHJlc3Npb25cblxuU2VlIHNlY3Rpb24gKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgdGhlIHN5bnRheCBvZiBwYXJhbWV0ZXIgbGlzdHMuXG5Ob3RlIHRoYXQgZnVuY3Rpb25zIGNyZWF0ZWQgd2l0aCBsYW1iZGEgZXhwcmVzc2lvbnMgY2Fubm90IGNvbnRhaW5cbnN0YXRlbWVudHMgb3IgYW5ub3RhdGlvbnMuXG4nLAotICdsaXN0cyc6IHUnXG5MaXN0IGRpc3BsYXlzXG4qKioqKioqKioqKioqXG5cbkEgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkIGluXG5zcXVhcmUgYnJhY2tldHM6XG5cbiAgIGxpc3RfZGlzcGxheSA6Oj0gIlsiIFtzdGFycmVkX2xpc3QgfCBjb21wcmVoZW5zaW9uXSAiXSJcblxuQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LCB0aGUgY29udGVudHMgYmVpbmcgc3BlY2lmaWVkXG5ieSBlaXRoZXIgYSBsaXN0IG9mIGV4cHJlc3Npb25zIG9yIGEgY29tcHJlaGVuc2lvbi4gIFdoZW4gYSBjb21tYS1cbnNlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlIGV2YWx1YXRlZFxuZnJvbSBsZWZ0IHRvIHJpZ2h0IGFuZCBwbGFjZWQgaW50byB0aGUgbGlzdCBvYmplY3QgaW4gdGhhdCBvcmRlci5cbldoZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZVxuZWxlbWVudHMgcmVzdWx0aW5nIGZyb20gdGhlIGNvbXByZWhlbnNpb24uXG4nLAotICduYW1pbmcnOiB1J1xuTmFtaW5nIGFuZCBiaW5kaW5nXG4qKioqKioqKioqKioqKioqKipcblxuXG5CaW5kaW5nIG9mIG5hbWVzXG49PT09PT09PT09PT09PT09XG5cbipOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgYmluZGluZ1xub3BlcmF0aW9ucy5cblxuVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvIGZ1bmN0aW9ucyxcbiJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCB0aGVcbmNsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCBhcmVcbmlkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgb3IgYWZ0ZXJcbiJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiIHN0YXRlbWVudFxub2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbmltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICBUaGlzIGZvcm1cbm1heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cblxuQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCBib3VuZCBmb3JcbnRoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlIG5hbWUpLlxuXG5FYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgZGVmaW5lZCBieSBhXG5jbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSB0b3AtbGV2ZWxcbmNvZGUgYmxvY2spLlxuXG5JZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0IGJsb2NrLFxudW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgYXQgdGhlXG5tb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlIG1vZHVsZVxuY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSBjb2RlXG5ibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuXG5FYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAqYmluZGluZypcbm9mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiBydWxlcy5cblxuXG5SZXNvbHV0aW9uIG9mIG5hbWVzXG49PT09PT09PT09PT09PT09PT09XG5cbkEgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmIGEgbG9jYWxcbnZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICBJZiB0aGVcbmRlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSBibG9ja3NcbmNvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrIGludHJvZHVjZXNcbmEgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuXG5XaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlIG5lYXJlc3RcbmVuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlIGJsb2NrXG5pcyBjYWxsZWQgdGhlIGJsb2NrXCdzICplbnZpcm9ubWVudCouXG5cbldoZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC4gSWZcbnRoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSBsb2NhbFxudmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50IHdoZXJlIHRoZVxubmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4iVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG5cbklmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgYWxsXG51c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byB0aGVcbmN1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiBhXG5ibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG5kZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxud2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lIGJpbmRpbmdcbm9wZXJhdGlvbnMuXG5cbklmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgbmFtZVxuc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluIHRoZVxudG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsIG5hbWVzcGFjZSBieVxuc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSBuYW1lc3BhY2Vcbm9mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkIGZpcnN0LiAgSWZcbnRoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gIFRoZVxuImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cblxuVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uXG5pbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlIHZhcmlhYmxlXG5jb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSBnbG9iYWwuXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgbm90XG5leGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuXG5UaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgYVxubW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgY2FsbGVkXG4iX19tYWluX18iLlxuXG5DbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiBhcmVcbnNwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gaXMgYW5cbmV4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSByZWZlcmVuY2VzXG5mb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uIHRoYXRcbnVuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuIFRoZVxubmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5IG9mXG50aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgbGltaXRlZCB0b1xudGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgLS1cbnRoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSB0aGV5IGFyZVxuaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nXG53aWxsIGZhaWw6XG5cbiAgIGNsYXNzIEE6XG4gICAgICAgYSA9IDQyXG4gICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuXG5cbkJ1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlIGJsb2NrXG5pcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyBnbG9iYWxcbm5hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyIGNhc2VcbnRoZSBtb2R1bGVcJ3MgZGljdGlvbmFyeSBpcyB1c2VkKS4gIEJ5IGRlZmF1bHQsIHdoZW4gaW4gdGhlICJfX21haW5fXyJcbm1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgdGhlIGJ1aWx0LWluIG1vZHVsZSAiYnVpbHRpbnMiOyB3aGVuIGluIGFueVxub3RoZXIgbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyBhbiBhbGlhcyBmb3IgdGhlIGRpY3Rpb25hcnkgb2YgdGhlXG4iYnVpbHRpbnMiIG1vZHVsZSBpdHNlbGYuICAiX19idWlsdGluc19fIiBjYW4gYmUgc2V0IHRvIGEgdXNlci1jcmVhdGVkXG5kaWN0aW9uYXJ5IHRvIGNyZWF0ZSBhIHdlYWsgZm9ybSBvZiByZXN0cmljdGVkIGV4ZWN1dGlvbi5cblxuKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBVc2VycyBzaG91bGQgbm90IHRvdWNoXG4iX19idWlsdGluc19fIjsgaXQgaXMgc3RyaWN0bHkgYW4gaW1wbGVtZW50YXRpb24gZGV0YWlsLiAgVXNlcnNcbndhbnRpbmcgdG8gb3ZlcnJpZGUgdmFsdWVzIGluIHRoZSBidWlsdGlucyBuYW1lc3BhY2Ugc2hvdWxkICJpbXBvcnQiXG50aGUgImJ1aWx0aW5zIiBtb2R1bGUgYW5kIG1vZGlmeSBpdHMgYXR0cmlidXRlcyBhcHByb3ByaWF0ZWx5LlxuXG5cbkludGVyYWN0aW9uIHdpdGggZHluYW1pYyBmZWF0dXJlc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbk5hbWUgcmVzb2x1dGlvbiBvZiBmcmVlIHZhcmlhYmxlcyBvY2N1cnMgYXQgcnVudGltZSwgbm90IGF0IGNvbXBpbGVcbnRpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcblxuICAgaSA9IDEwXG4gICBkZWYgZigpOlxuICAgICAgIHByaW50KGkpXG4gICBpID0gNDJcbiAgIGYoKVxuXG5UaGVyZSBhcmUgc2V2ZXJhbCBjYXNlcyB3aGVyZSBQeXRob24gc3RhdGVtZW50cyBhcmUgaWxsZWdhbCB3aGVuIHVzZWRcbmluIGNvbmp1bmN0aW9uIHdpdGggbmVzdGVkIHNjb3BlcyB0aGF0IGNvbnRhaW4gZnJlZSB2YXJpYWJsZXMuXG5cbklmIGEgdmFyaWFibGUgaXMgcmVmZXJlbmNlZCBpbiBhbiBlbmNsb3Npbmcgc2NvcGUsIGl0IGlzIGlsbGVnYWwgdG9cbmRlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSB0aW1lLlxuXG5UaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgdG8gdGhlIGZ1bGxcbmVudmlyb25tZW50IGZvciByZXNvbHZpbmcgbmFtZXMuICBOYW1lcyBtYXkgYmUgcmVzb2x2ZWQgaW4gdGhlIGxvY2FsXG5hbmQgZ2xvYmFsIG5hbWVzcGFjZXMgb2YgdGhlIGNhbGxlci4gIEZyZWUgdmFyaWFibGVzIGFyZSBub3QgcmVzb2x2ZWRcbmluIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gIFsxXVxuVGhlICJleGVjKCkiIGFuZCAiZXZhbCgpIiBmdW5jdGlvbnMgaGF2ZSBvcHRpb25hbCBhcmd1bWVudHMgdG9cbm92ZXJyaWRlIHRoZSBnbG9iYWwgYW5kIGxvY2FsIG5hbWVzcGFjZS4gIElmIG9ubHkgb25lIG5hbWVzcGFjZSBpc1xuc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKLSAnbm9ubG9jYWwnOiB1J1xuVGhlICJub25sb2NhbCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKioqKipcblxuICAgbm9ubG9jYWxfc3RtdCA6Oj0gIm5vbmxvY2FsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG5cblRoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgdGhlIGxpc3RlZCBpZGVudGlmaWVycyB0byByZWZlciB0b1xucHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGV4Y2x1ZGluZ1xuZ2xvYmFscy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYmluZGluZyBpc1xudG8gc2VhcmNoIHRoZSBsb2NhbCBuYW1lc3BhY2UgZmlyc3QuICBUaGUgc3RhdGVtZW50IGFsbG93c1xuZW5jYXBzdWxhdGVkIGNvZGUgdG8gcmViaW5kIHZhcmlhYmxlcyBvdXRzaWRlIG9mIHRoZSBsb2NhbCBzY29wZVxuYmVzaWRlcyB0aGUgZ2xvYmFsIChtb2R1bGUpIHNjb3BlLlxuXG5OYW1lcyBsaXN0ZWQgaW4gYSAibm9ubG9jYWwiIHN0YXRlbWVudCwgdW5saWtlIHRob3NlIGxpc3RlZCBpbiBhXG4iZ2xvYmFsIiBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG5lbmNsb3Npbmcgc2NvcGUgKHRoZSBzY29wZSBpbiB3aGljaCBhIG5ldyBiaW5kaW5nIHNob3VsZCBiZSBjcmVhdGVkXG5jYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cblxuTmFtZXMgbGlzdGVkIGluIGEgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgbXVzdCBub3QgY29sbGlkZSB3aXRoIHByZS1cbmV4aXN0aW5nIGJpbmRpbmdzIGluIHRoZSBsb2NhbCBzY29wZS5cblxuU2VlIGFsc286ICoqUEVQIDMxMDQqKiAtIEFjY2VzcyB0byBOYW1lcyBpbiBPdXRlciBTY29wZXNcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKLSAnbnVtYmVycyc6IHUnXG5OdW1lcmljIGxpdGVyYWxzXG4qKioqKioqKioqKioqKioqXG5cblRoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnRcbm51bWJlcnMsIGFuZCBpbWFnaW5hcnkgbnVtYmVycy4gIFRoZXJlIGFyZSBubyBjb21wbGV4IGxpdGVyYWxzXG4oY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG5pbWFnaW5hcnkgbnVtYmVyKS5cblxuTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICItMSJcbmlzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yIFwnIi0iXCcgYW5kIHRoZVxubGl0ZXJhbCAiMSIuXG4nLAotICdudW1lcmljLXR5cGVzJzogdSdcbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzIGNhbGxlZC5cbiAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nXG4gICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvXG4gICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0XG4gICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pblxuICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKVxuICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lc1xuICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsXG4gICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0b1xuICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0XG4gICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpY1xuICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGVcbiAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzc1xuICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID1cbiAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluXG4gICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzXG4gICAoc2VlICpXaHkgZG9lcyBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlXG4gICBhZGRpdGlvbiB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhXG4gICBtb2RlbC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICIrIixcbiAgICJhYnMoKSIgYW5kICJ+IikuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICJpbnQoKSIsXG4gICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGVcbiAgIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciBQeXRob24gbmVlZHNcbiAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciBvYmplY3QgKHN1Y2hcbiAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAib2N0KCkiXG4gICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbnVtZXJpY1xuICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG5cbiAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsIHdoZW5cbiAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlIGRlZmluZWQsIGFuZFxuICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG4nLAotICdvYmplY3RzJzogdSdcbk9iamVjdHMsIHZhbHVlcyBhbmQgdHlwZXNcbioqKioqKioqKioqKioqKioqKioqKioqKipcblxuKk9iamVjdHMqIGFyZSBQeXRob25cJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhIFB5dGhvblxucHJvZ3JhbSBpcyByZXByZXNlbnRlZCBieSBvYmplY3RzIG9yIGJ5IHJlbGF0aW9ucyBiZXR3ZWVuIG9iamVjdHMuIChJblxuYSBzZW5zZSwgYW5kIGluIGNvbmZvcm1hbmNlIHRvIFZvbiBOZXVtYW5uXCdzIG1vZGVsIG9mIGEgInN0b3JlZFxucHJvZ3JhbSBjb21wdXRlciwiIGNvZGUgaXMgYWxzbyByZXByZXNlbnRlZCBieSBvYmplY3RzLilcblxuRXZlcnkgb2JqZWN0IGhhcyBhbiBpZGVudGl0eSwgYSB0eXBlIGFuZCBhIHZhbHVlLiAgQW4gb2JqZWN0XCdzXG4qaWRlbnRpdHkqIG5ldmVyIGNoYW5nZXMgb25jZSBpdCBoYXMgYmVlbiBjcmVhdGVkOyB5b3UgbWF5IHRoaW5rIG9mIGl0XG5hcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yIGNvbXBhcmVzIHRoZVxuaWRlbnRpdHkgb2YgdHdvIG9iamVjdHM7IHRoZSAiaWQoKSIgZnVuY3Rpb24gcmV0dXJucyBhbiBpbnRlZ2VyXG5yZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuXG4qKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEZvciBDUHl0aG9uLCAiaWQoeCkiIGlzIHRoZSBtZW1vcnlcbmFkZHJlc3Mgd2hlcmUgIngiIGlzIHN0b3JlZC5cblxuQW4gb2JqZWN0XCdzIHR5cGUgZGV0ZXJtaW5lcyB0aGUgb3BlcmF0aW9ucyB0aGF0IHRoZSBvYmplY3Qgc3VwcG9ydHNcbihlLmcuLCAiZG9lcyBpdCBoYXZlIGEgbGVuZ3RoPyIpIGFuZCBhbHNvIGRlZmluZXMgdGhlIHBvc3NpYmxlIHZhbHVlc1xuZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gb2JqZWN0XCdzXG50eXBlICh3aGljaCBpcyBhbiBvYmplY3QgaXRzZWxmKS4gIExpa2UgaXRzIGlkZW50aXR5LCBhbiBvYmplY3RcJ3Ncbip0eXBlKiBpcyBhbHNvIHVuY2hhbmdlYWJsZS4gWzFdXG5cblRoZSAqdmFsdWUqIG9mIHNvbWUgb2JqZWN0cyBjYW4gY2hhbmdlLiAgT2JqZWN0cyB3aG9zZSB2YWx1ZSBjYW5cbmNoYW5nZSBhcmUgc2FpZCB0byBiZSAqbXV0YWJsZSo7IG9iamVjdHMgd2hvc2UgdmFsdWUgaXMgdW5jaGFuZ2VhYmxlXG5vbmNlIHRoZXkgYXJlIGNyZWF0ZWQgYXJlIGNhbGxlZCAqaW1tdXRhYmxlKi4gKFRoZSB2YWx1ZSBvZiBhblxuaW1tdXRhYmxlIGNvbnRhaW5lciBvYmplY3QgdGhhdCBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGVcbm9iamVjdCBjYW4gY2hhbmdlIHdoZW4gdGhlIGxhdHRlclwncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyIHRoZVxuY29udGFpbmVyIGlzIHN0aWxsIGNvbnNpZGVyZWQgaW1tdXRhYmxlLCBiZWNhdXNlIHRoZSBjb2xsZWN0aW9uIG9mXG5vYmplY3RzIGl0IGNvbnRhaW5zIGNhbm5vdCBiZSBjaGFuZ2VkLiAgU28sIGltbXV0YWJpbGl0eSBpcyBub3RcbnN0cmljdGx5IHRoZSBzYW1lIGFzIGhhdmluZyBhbiB1bmNoYW5nZWFibGUgdmFsdWUsIGl0IGlzIG1vcmUgc3VidGxlLilcbkFuIG9iamVjdFwncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbm51bWJlcnMsIHN0cmluZ3MgYW5kIHR1cGxlcyBhcmUgaW1tdXRhYmxlLCB3aGlsZSBkaWN0aW9uYXJpZXMgYW5kXG5saXN0cyBhcmUgbXV0YWJsZS5cblxuT2JqZWN0cyBhcmUgbmV2ZXIgZXhwbGljaXRseSBkZXN0cm95ZWQ7IGhvd2V2ZXIsIHdoZW4gdGhleSBiZWNvbWVcbnVucmVhY2hhYmxlIHRoZXkgbWF5IGJlIGdhcmJhZ2UtY29sbGVjdGVkLiAgQW4gaW1wbGVtZW50YXRpb24gaXNcbmFsbG93ZWQgdG8gcG9zdHBvbmUgZ2FyYmFnZSBjb2xsZWN0aW9uIG9yIG9taXQgaXQgYWx0b2dldGhlciAtLS0gaXQgaXNcbmEgbWF0dGVyIG9mIGltcGxlbWVudGF0aW9uIHF1YWxpdHkgaG93IGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xuaW1wbGVtZW50ZWQsIGFzIGxvbmcgYXMgbm8gb2JqZWN0cyBhcmUgY29sbGVjdGVkIHRoYXQgYXJlIHN0aWxsXG5yZWFjaGFibGUuXG5cbioqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQ1B5dGhvbiBjdXJyZW50bHkgdXNlcyBhIHJlZmVyZW5jZS1cbmNvdW50aW5nIHNjaGVtZSB3aXRoIChvcHRpb25hbCkgZGVsYXllZCBkZXRlY3Rpb24gb2YgY3ljbGljYWxseSBsaW5rZWRcbmdhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG51bnJlYWNoYWJsZSwgYnV0IGlzIG5vdCBndWFyYW50ZWVkIHRvIGNvbGxlY3QgZ2FyYmFnZSBjb250YWluaW5nXG5jaXJjdWxhciByZWZlcmVuY2VzLiAgU2VlIHRoZSBkb2N1bWVudGF0aW9uIG9mIHRoZSAiZ2MiIG1vZHVsZSBmb3JcbmluZm9ybWF0aW9uIG9uIGNvbnRyb2xsaW5nIHRoZSBjb2xsZWN0aW9uIG9mIGN5Y2xpYyBnYXJiYWdlLiBPdGhlclxuaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgZGVwZW5kXG5vbiBpbW1lZGlhdGUgZmluYWxpemF0aW9uIG9mIG9iamVjdHMgd2hlbiB0aGV5IGJlY29tZSB1bnJlYWNoYWJsZSAoc29cbnlvdSBzaG91bGQgYWx3YXlzIGNsb3NlIGZpbGVzIGV4cGxpY2l0bHkpLlxuXG5Ob3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb25cJ3MgdHJhY2luZyBvciBkZWJ1Z2dpbmdcbmZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlIGNvbGxlY3RhYmxlLlxuQWxzbyBub3RlIHRoYXQgY2F0Y2hpbmcgYW4gZXhjZXB0aW9uIHdpdGggYSBcJyJ0cnkiLi4uImV4Y2VwdCJcJ1xuc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gImV4dGVybmFsIiByZXNvdXJjZXMgc3VjaCBhcyBvcGVuXG5maWxlcyBvciB3aW5kb3dzLiAgSXQgaXMgdW5kZXJzdG9vZCB0aGF0IHRoZXNlIHJlc291cmNlcyBhcmUgZnJlZWRcbndoZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgY29sbGVjdGlvbiBpc1xubm90IGd1YXJhbnRlZWQgdG8gaGFwcGVuLCBzdWNoIG9iamVjdHMgYWxzbyBwcm92aWRlIGFuIGV4cGxpY2l0IHdheSB0b1xucmVsZWFzZSB0aGUgZXh0ZXJuYWwgcmVzb3VyY2UsIHVzdWFsbHkgYSAiY2xvc2UoKSIgbWV0aG9kLiBQcm9ncmFtc1xuYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG5cJyJ0cnkiLi4uImZpbmFsbHkiXCcgc3RhdGVtZW50IGFuZCB0aGUgXCcid2l0aCJcJyBzdGF0ZW1lbnQgcHJvdmlkZVxuY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG5cblNvbWUgb2JqZWN0cyBjb250YWluIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0czsgdGhlc2UgYXJlIGNhbGxlZFxuKmNvbnRhaW5lcnMqLiBFeGFtcGxlcyBvZiBjb250YWluZXJzIGFyZSB0dXBsZXMsIGxpc3RzIGFuZFxuZGljdGlvbmFyaWVzLiAgVGhlIHJlZmVyZW5jZXMgYXJlIHBhcnQgb2YgYSBjb250YWluZXJcJ3MgdmFsdWUuICBJblxubW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgdGhlXG52YWx1ZXMsIG5vdCB0aGUgaWRlbnRpdGllcyBvZiB0aGUgY29udGFpbmVkIG9iamVjdHM7IGhvd2V2ZXIsIHdoZW4gd2VcbnRhbGsgYWJvdXQgdGhlIG11dGFiaWxpdHkgb2YgYSBjb250YWluZXIsIG9ubHkgdGhlIGlkZW50aXRpZXMgb2YgdGhlXG5pbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbmNvbnRhaW5lciAobGlrZSBhIHR1cGxlKSBjb250YWlucyBhIHJlZmVyZW5jZSB0byBhIG11dGFibGUgb2JqZWN0LCBpdHNcbnZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuXG5UeXBlcyBhZmZlY3QgYWxtb3N0IGFsbCBhc3BlY3RzIG9mIG9iamVjdCBiZWhhdmlvci4gIEV2ZW4gdGhlXG5pbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgaW1tdXRhYmxlXG50eXBlcywgb3BlcmF0aW9ucyB0aGF0IGNvbXB1dGUgbmV3IHZhbHVlcyBtYXkgYWN0dWFsbHkgcmV0dXJuIGFcbnJlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsIHdoaWxlXG5mb3IgbXV0YWJsZSBvYmplY3RzIHRoaXMgaXMgbm90IGFsbG93ZWQuICBFLmcuLCBhZnRlciAiYSA9IDE7IGIgPSAxIixcbiJhIiBhbmQgImIiIG1heSBvciBtYXkgbm90IHJlZmVyIHRvIHRoZSBzYW1lIG9iamVjdCB3aXRoIHRoZSB2YWx1ZVxub25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9IFtdIiwgImMiXG5hbmQgImQiIGFyZSBndWFyYW50ZWVkIHRvIHJlZmVyIHRvIHR3byBkaWZmZXJlbnQsIHVuaXF1ZSwgbmV3bHlcbmNyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgImMgPSBkID0gW10iIGFzc2lnbnMgdGhlIHNhbWUgb2JqZWN0XG50byBib3RoICJjIiBhbmQgImQiLilcbicsCi0gJ29wZXJhdG9yLXN1bW1hcnknOiB1J1xuT3BlcmF0b3IgcHJlY2VkZW5jZVxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIHRhYmxlIHN1bW1hcml6ZXMgdGhlIG9wZXJhdG9yIHByZWNlZGVuY2UgaW4gUHl0aG9uLCBmcm9tXG5sb3dlc3QgcHJlY2VkZW5jZSAobGVhc3QgYmluZGluZykgdG8gaGlnaGVzdCBwcmVjZWRlbmNlIChtb3N0XG5iaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSBwcmVjZWRlbmNlLiAgVW5sZXNzXG50aGUgc3ludGF4IGlzIGV4cGxpY2l0bHkgZ2l2ZW4sIG9wZXJhdG9ycyBhcmUgYmluYXJ5LiAgT3BlcmF0b3JzIGluXG50aGUgc2FtZSBib3ggZ3JvdXAgbGVmdCB0byByaWdodCAoZXhjZXB0IGZvciBleHBvbmVudGlhdGlvbiwgd2hpY2hcbmdyb3VwcyBmcm9tIHJpZ2h0IHRvIGxlZnQpLlxuXG5Ob3RlIHRoYXQgY29tcGFyaXNvbnMsIG1lbWJlcnNoaXAgdGVzdHMsIGFuZCBpZGVudGl0eSB0ZXN0cywgYWxsIGhhdmVcbnRoZSBzYW1lIHByZWNlZGVuY2UgYW5kIGhhdmUgYSBsZWZ0LXRvLXJpZ2h0IGNoYWluaW5nIGZlYXR1cmUgYXNcbmRlc2NyaWJlZCBpbiB0aGUgKkNvbXBhcmlzb25zKiBzZWN0aW9uLlxuXG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdG9yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRGVzY3JpcHRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG58ICJsYW1iZGEiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTGFtYmRhIGV4cHJlc3Npb24gICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpZiIgLS0gImVsc2UiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQ29uZGl0aW9uYWwgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJvciIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJhbmQiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJub3QiICJ4IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQm9vbGVhbiBOT1QgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJpbiIsICJub3QgaW4iLCAiaXMiLCAiaXMgbm90IiwgIjwiLCAiPD0iLCAiPiIsIHwgQ29tcGFyaXNvbnMsIGluY2x1ZGluZyBtZW1iZXJzaGlwICAgICB8XG58ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdGVzdHMgYW5kIGlkZW50aXR5IHRlc3RzICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBYT1IgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQml0d2lzZSBBTkQgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgU2hpZnRzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQWRkaXRpb24gYW5kIHN1YnRyYWN0aW9uICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgIHwgTXVsdGlwbGljYXRpb24sIG1hdHJpeCBtdWx0aXBsaWNhdGlvbiB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGl2aXNpb24sIHJlbWFpbmRlciBbNV0gICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIreCIsICIteCIsICJ+eCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIqKiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJhd2FpdCIgIngiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJ4W2luZGV4XSIsICJ4W2luZGV4OmluZGV4XSIsICAgICAgICAgICAgICAgICAgIHwgU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG58ICJ4KGFyZ3VtZW50cy4uLikiLCAieC5hdHRyaWJ1dGUiICAgICAgICAgICAgICAgIHwgYXR0cmlidXRlIHJlZmVyZW5jZSAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICIoZXhwcmVzc2lvbnMuLi4pIiwgIltleHByZXNzaW9ucy4uLl0iLCAie2tleTogIHwgQmluZGluZyBvciB0dXBsZSBkaXNwbGF5LCBsaXN0ICAgICAgICB8XG58IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSwgZGljdGlvbmFyeSBkaXNwbGF5LCBzZXQgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gV2hpbGUgImFicyh4JXkpIDwgYWJzKHkpIiBpcyB0cnVlIG1hdGhlbWF0aWNhbGx5LCBmb3IgZmxvYXRzXG4gICAgaXQgbWF5IG5vdCBiZSB0cnVlIG51bWVyaWNhbGx5IGR1ZSB0byByb3VuZG9mZi4gIEZvciBleGFtcGxlLCBhbmRcbiAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuIElFRUUgNzU0IGRvdWJsZS1cbiAgICBwcmVjaXNpb24gbnVtYmVyLCBpbiBvcmRlciB0aGF0ICItMWUtMTAwICUgMWUxMDAiIGhhdmUgdGhlIHNhbWVcbiAgICBzaWduIGFzICIxZTEwMCIsIHRoZSBjb21wdXRlZCByZXN1bHQgaXMgIi0xZS0xMDAgKyAxZTEwMCIsIHdoaWNoXG4gICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlIGZ1bmN0aW9uXG4gICAgIm1hdGguZm1vZCgpIiByZXR1cm5zIGEgcmVzdWx0IHdob3NlIHNpZ24gbWF0Y2hlcyB0aGUgc2lnbiBvZiB0aGVcbiAgICBmaXJzdCBhcmd1bWVudCBpbnN0ZWFkLCBhbmQgc28gcmV0dXJucyAiLTFlLTEwMCIgaW4gdGhpcyBjYXNlLlxuICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgYXBwbGljYXRpb24uXG5cblsyXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiB5LCBpdFwnc1xuICAgIHBvc3NpYmxlIGZvciAieC8veSIgdG8gYmUgb25lIGxhcmdlciB0aGFuICIoeC14JXkpLy95IiBkdWUgdG9cbiAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgcmVzdWx0LCBpblxuICAgIG9yZGVyIHRvIHByZXNlcnZlIHRoYXQgImRpdm1vZCh4LHkpWzBdICogeSArIHggJSB5IiBiZSB2ZXJ5IGNsb3NlXG4gICAgdG8gIngiLlxuXG5bM10gVGhlIFVuaWNvZGUgc3RhbmRhcmQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuICpjb2RlIHBvaW50cyogKGUuZy5cbiAgICBVKzAwNDEpIGFuZCAqYWJzdHJhY3QgY2hhcmFjdGVycyogKGUuZy4gIkxBVElOIENBUElUQUwgTEVUVEVSIEEiKS5cbiAgICBXaGlsZSBtb3N0IGFic3RyYWN0IGNoYXJhY3RlcnMgaW4gVW5pY29kZSBhcmUgb25seSByZXByZXNlbnRlZFxuICAgIHVzaW5nIG9uZSBjb2RlIHBvaW50LCB0aGVyZSBpcyBhIG51bWJlciBvZiBhYnN0cmFjdCBjaGFyYWN0ZXJzXG4gICAgdGhhdCBjYW4gaW4gYWRkaXRpb24gYmUgcmVwcmVzZW50ZWQgdXNpbmcgYSBzZXF1ZW5jZSBvZiBtb3JlIHRoYW5cbiAgICBvbmUgY29kZSBwb2ludC4gIEZvciBleGFtcGxlLCB0aGUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTlxuICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgYSBzaW5nbGVcbiAgICAqcHJlY29tcG9zZWQgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDBDNywgb3IgYXMgYSBzZXF1ZW5jZVxuICAgIG9mIGEgKmJhc2UgY2hhcmFjdGVyKiBhdCBjb2RlIHBvc2l0aW9uIFUrMDA0MyAoTEFUSU4gQ0FQSVRBTFxuICAgIExFVFRFUiBDKSwgZm9sbG93ZWQgYnkgYSAqY29tYmluaW5nIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvblxuICAgIFUrMDMyNyAoQ09NQklOSU5HIENFRElMTEEpLlxuXG4gICAgVGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzIG9uIHN0cmluZ3MgY29tcGFyZSBhdCB0aGUgbGV2ZWwgb2ZcbiAgICBVbmljb2RlIGNvZGUgcG9pbnRzLiBUaGlzIG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSB0byBodW1hbnMuICBGb3JcbiAgICBleGFtcGxlLCAiIlxcdTAwQzciID09ICJcXHUwMDQzXFx1MDMyNyIiIGlzICJGYWxzZSIsIGV2ZW4gdGhvdWdoIGJvdGhcbiAgICBzdHJpbmdzIHJlcHJlc2VudCB0aGUgc2FtZSBhYnN0cmFjdCBjaGFyYWN0ZXIgIkxBVElOIENBUElUQUxcbiAgICBMRVRURVIgQyBXSVRIIENFRElMTEEiLlxuXG4gICAgVG8gY29tcGFyZSBzdHJpbmdzIGF0IHRoZSBsZXZlbCBvZiBhYnN0cmFjdCBjaGFyYWN0ZXJzICh0aGF0IGlzLFxuICAgIGluIGEgd2F5IGludHVpdGl2ZSB0byBodW1hbnMpLCB1c2UgInVuaWNvZGVkYXRhLm5vcm1hbGl6ZSgpIi5cblxuWzRdIER1ZSB0byBhdXRvbWF0aWMgZ2FyYmFnZS1jb2xsZWN0aW9uLCBmcmVlIGxpc3RzLCBhbmQgdGhlXG4gICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlIHNlZW1pbmdseSB1bnVzdWFsXG4gICAgYmVoYXZpb3VyIGluIGNlcnRhaW4gdXNlcyBvZiB0aGUgImlzIiBvcGVyYXRvciwgbGlrZSB0aG9zZVxuICAgIGludm9sdmluZyBjb21wYXJpc29ucyBiZXR3ZWVuIGluc3RhbmNlIG1ldGhvZHMsIG9yIGNvbnN0YW50cy5cbiAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG5cbls1XSBUaGUgIiUiIG9wZXJhdG9yIGlzIGFsc28gdXNlZCBmb3Igc3RyaW5nIGZvcm1hdHRpbmc7IHRoZSBzYW1lXG4gICAgcHJlY2VkZW5jZSBhcHBsaWVzLlxuXG5bNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gYXJpdGhtZXRpY1xuICAgIG9yIGJpdHdpc2UgdW5hcnkgb3BlcmF0b3Igb24gaXRzIHJpZ2h0LCB0aGF0IGlzLCAiMioqLTEiIGlzICIwLjUiLlxuJywKLSAncGFzcyc6IHUnXG5UaGUgInBhc3MiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKipcblxuICAgcGFzc19zdG10IDo6PSAicGFzcyJcblxuInBhc3MiIGlzIGEgbnVsbCBvcGVyYXRpb24gLS0tIHdoZW4gaXQgaXMgZXhlY3V0ZWQsIG5vdGhpbmcgaGFwcGVucy5cbkl0IGlzIHVzZWZ1bCBhcyBhIHBsYWNlaG9sZGVyIHdoZW4gYSBzdGF0ZW1lbnQgaXMgcmVxdWlyZWRcbnN5bnRhY3RpY2FsbHksIGJ1dCBubyBjb2RlIG5lZWRzIHRvIGJlIGV4ZWN1dGVkLCBmb3IgZXhhbXBsZTpcblxuICAgZGVmIGYoYXJnKTogcGFzcyAgICAjIGEgZnVuY3Rpb24gdGhhdCBkb2VzIG5vdGhpbmcgKHlldClcblxuICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAotICdwb3dlcic6IHUnXG5UaGUgcG93ZXIgb3BlcmF0b3JcbioqKioqKioqKioqKioqKioqKlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgYmluZHMgbW9yZSB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0c1xubGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gIFRoZVxuc3ludGF4IGlzOlxuXG4gICBwb3dlciA6Oj0gKCBhd2FpdF9leHByIHwgcHJpbWFyeSApIFsiKioiIHVfZXhwcl1cblxuVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsIHRoZVxub3BlcmF0b3JzIGFyZSBldmFsdWF0ZWQgZnJvbSByaWdodCB0byBsZWZ0ICh0aGlzIGRvZXMgbm90IGNvbnN0cmFpblxudGhlIGV2YWx1YXRpb24gb3JkZXIgZm9yIHRoZSBvcGVyYW5kcyk6ICItMSoqMiIgcmVzdWx0cyBpbiAiLTEiLlxuXG5UaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuZnVuY3Rpb24sIHdoZW4gY2FsbGVkIHdpdGggdHdvIGFyZ3VtZW50czogaXQgeWllbGRzIGl0cyBsZWZ0IGFyZ3VtZW50XG5yYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyBhcmVcbmZpcnN0IGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlLCBhbmQgdGhlIHJlc3VsdCBpcyBvZiB0aGF0IHR5cGUuXG5cbkZvciBpbnQgb3BlcmFuZHMsIHRoZSByZXN1bHQgaGFzIHRoZSBzYW1lIHR5cGUgYXMgdGhlIG9wZXJhbmRzIHVubGVzc1xudGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuY29udmVydGVkIHRvIGZsb2F0IGFuZCBhIGZsb2F0IHJlc3VsdCBpcyBkZWxpdmVyZWQuIEZvciBleGFtcGxlLFxuIjEwKioyIiByZXR1cm5zICIxMDAiLCBidXQgIjEwKiotMiIgcmV0dXJucyAiMC4wMSIuXG5cblJhaXNpbmcgIjAuMCIgdG8gYSBuZWdhdGl2ZSBwb3dlciByZXN1bHRzIGluIGEgIlplcm9EaXZpc2lvbkVycm9yIi5cblJhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAiY29tcGxleCJcbm51bWJlci4gKEluIGVhcmxpZXIgdmVyc2lvbnMgaXQgcmFpc2VkIGEgIlZhbHVlRXJyb3IiLilcbicsCi0gJ3JhaXNlJzogdSdcblRoZSAicmFpc2UiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cbiAgIHJhaXNlX3N0bXQgOjo9ICJyYWlzZSIgW2V4cHJlc3Npb24gWyJmcm9tIiBleHByZXNzaW9uXV1cblxuSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0IGV4Y2VwdGlvblxudGhhdCB3YXMgYWN0aXZlIGluIHRoZSBjdXJyZW50IHNjb3BlLiAgSWYgbm8gZXhjZXB0aW9uIGlzIGFjdGl2ZSBpblxudGhlIGN1cnJlbnQgc2NvcGUsIGEgIlJ1bnRpbWVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCBpbmRpY2F0aW5nXG50aGF0IHRoaXMgaXMgYW4gZXJyb3IuXG5cbk90aGVyd2lzZSwgInJhaXNlIiBldmFsdWF0ZXMgdGhlIGZpcnN0IGV4cHJlc3Npb24gYXMgdGhlIGV4Y2VwdGlvblxub2JqZWN0LiAgSXQgbXVzdCBiZSBlaXRoZXIgYSBzdWJjbGFzcyBvciBhbiBpbnN0YW5jZSBvZlxuIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbm9idGFpbmVkIHdoZW4gbmVlZGVkIGJ5IGluc3RhbnRpYXRpbmcgdGhlIGNsYXNzIHdpdGggbm8gYXJndW1lbnRzLlxuXG5UaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZVwncyBjbGFzcywgdGhlXG4qdmFsdWUqIGlzIHRoZSBpbnN0YW5jZSBpdHNlbGYuXG5cbkEgdHJhY2ViYWNrIG9iamVjdCBpcyBub3JtYWxseSBjcmVhdGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBhbiBleGNlcHRpb25cbmlzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsIHdoaWNoXG5pcyB3cml0YWJsZS4gWW91IGNhbiBjcmVhdGUgYW4gZXhjZXB0aW9uIGFuZCBzZXQgeW91ciBvd24gdHJhY2ViYWNrIGluXG5vbmUgc3RlcCB1c2luZyB0aGUgIndpdGhfdHJhY2ViYWNrKCkiIGV4Y2VwdGlvbiBtZXRob2QgKHdoaWNoIHJldHVybnNcbnRoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgYXJndW1lbnQpLFxubGlrZSBzbzpcblxuICAgcmFpc2UgRXhjZXB0aW9uKCJmb28gb2NjdXJyZWQiKS53aXRoX3RyYWNlYmFjayh0cmFjZWJhY2tvYmopXG5cblRoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSBzZWNvbmRcbipleHByZXNzaW9uKiBtdXN0IGJlIGFub3RoZXIgZXhjZXB0aW9uIGNsYXNzIG9yIGluc3RhbmNlLCB3aGljaCB3aWxsXG50aGVuIGJlIGF0dGFjaGVkIHRvIHRoZSByYWlzZWQgZXhjZXB0aW9uIGFzIHRoZSAiX19jYXVzZV9fIiBhdHRyaWJ1dGVcbih3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgYm90aFxuZXhjZXB0aW9ucyB3aWxsIGJlIHByaW50ZWQ6XG5cbiAgID4+PiB0cnk6XG4gICAuLi4gICAgIHByaW50KDEgLyAwKVxuICAgLi4uIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyBleGNlcHRpb246XG5cbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbiAgIFJ1bnRpbWVFcnJvcjogU29tZXRoaW5nIGJhZCBoYXBwZW5lZFxuXG5BIHNpbWlsYXIgbWVjaGFuaXNtIHdvcmtzIGltcGxpY2l0bHkgaWYgYW4gZXhjZXB0aW9uIGlzIHJhaXNlZCBpbnNpZGVcbmFuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiBpc1xudGhlbiBhdHRhY2hlZCBhcyB0aGUgbmV3IGV4Y2VwdGlvblwncyAiX19jb250ZXh0X18iIGF0dHJpYnV0ZTpcblxuICAgPj4+IHRyeTpcbiAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4gICAuLi4gZXhjZXB0OlxuICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKVxuICAgLi4uXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4gICBaZXJvRGl2aXNpb25FcnJvcjogaW50IGRpdmlzaW9uIG9yIG1vZHVsbyBieSB6ZXJvXG5cbiAgIER1cmluZyBoYW5kbGluZyBvZiB0aGUgYWJvdmUgZXhjZXB0aW9uLCBhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG5cbkFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuKkV4Y2VwdGlvbnMqLCBhbmQgaW5mb3JtYXRpb24gYWJvdXQgaGFuZGxpbmcgZXhjZXB0aW9ucyBpcyBpbiBzZWN0aW9uXG4qVGhlIHRyeSBzdGF0ZW1lbnQqLlxuJywKLSAncmV0dXJuJzogdSdcblRoZSAicmV0dXJuIiBzdGF0ZW1lbnRcbioqKioqKioqKioqKioqKioqKioqKipcblxuICAgcmV0dXJuX3N0bXQgOjo9ICJyZXR1cm4iIFtleHByZXNzaW9uX2xpc3RdXG5cbiJyZXR1cm4iIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbixcbm5vdCB3aXRoaW4gYSBuZXN0ZWQgY2xhc3MgZGVmaW5pdGlvbi5cblxuSWYgYW4gZXhwcmVzc2lvbiBsaXN0IGlzIHByZXNlbnQsIGl0IGlzIGV2YWx1YXRlZCwgZWxzZSAiTm9uZSIgaXNcbnN1YnN0aXR1dGVkLlxuXG4icmV0dXJuIiBsZWF2ZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gY2FsbCB3aXRoIHRoZSBleHByZXNzaW9uIGxpc3QgKG9yXG4iTm9uZSIpIGFzIHJldHVybiB2YWx1ZS5cblxuV2hlbiAicmV0dXJuIiBwYXNzZXMgY29udHJvbCBvdXQgb2YgYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCBhICJmaW5hbGx5IlxuY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlIHJlYWxseSBsZWF2aW5nIHRoZVxuZnVuY3Rpb24uXG5cbkluIGEgZ2VuZXJhdG9yIGZ1bmN0aW9uLCB0aGUgInJldHVybiIgc3RhdGVtZW50IGluZGljYXRlcyB0aGF0IHRoZVxuZ2VuZXJhdG9yIGlzIGRvbmUgYW5kIHdpbGwgY2F1c2UgIlN0b3BJdGVyYXRpb24iIHRvIGJlIHJhaXNlZC4gVGhlXG5yZXR1cm5lZCB2YWx1ZSAoaWYgYW55KSBpcyB1c2VkIGFzIGFuIGFyZ3VtZW50IHRvIGNvbnN0cnVjdFxuIlN0b3BJdGVyYXRpb24iIGFuZCBiZWNvbWVzIHRoZSAiU3RvcEl0ZXJhdGlvbi52YWx1ZSIgYXR0cmlidXRlLlxuJywKLSAnc2VxdWVuY2UtdHlwZXMnOiB1J1xuRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciBvYmplY3RzLlxuQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSBvciBtYXBwaW5nc1xuKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyB3ZWxsLiAgVGhlXG5maXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgdG9cbmVtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCB0aGVcbmFsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrIDwgTiIgd2hlcmVcbipOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggZGVmaW5lIGFcbnJhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzIHByb3ZpZGUgdGhlXG5tZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICJjbGVhcigpIixcbiJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAidXBkYXRlKCkiXG5iZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob25cJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSBvYmplY3RzLlxuVGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlIHByb3ZpZGVzIGEgIk11dGFibGVNYXBwaW5nIiBhYnN0cmFjdCBiYXNlXG5jbGFzcyB0byBoZWxwIGNyZWF0ZSB0aG9zZSBtZXRob2RzIGZyb20gYSBiYXNlIHNldCBvZiAiX19nZXRpdGVtX18oKSIsXG4iX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlIHNlcXVlbmNlc1xuc2hvdWxkIHByb3ZpZGUgbWV0aG9kcyAiYXBwZW5kKCkiLCAiY291bnQoKSIsICJpbmRleCgpIiwgImV4dGVuZCgpIixcbiJpbnNlcnQoKSIsICJwb3AoKSIsICJyZW1vdmUoKSIsICJyZXZlcnNlKCkiIGFuZCAic29ydCgpIiwgbGlrZSBQeXRob25cbnN0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCBpbXBsZW1lbnRcbmFkZGl0aW9uIChtZWFuaW5nIGNvbmNhdGVuYXRpb24pIGFuZCBtdWx0aXBsaWNhdGlvbiAobWVhbmluZ1xucmVwZXRpdGlvbikgYnkgZGVmaW5pbmcgdGhlIG1ldGhvZHMgIl9fYWRkX18oKSIsICJfX3JhZGRfXygpIixcbiJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiIGRlc2NyaWJlZFxuYmVsb3c7IHRoZXkgc2hvdWxkIG5vdCBkZWZpbmUgb3RoZXIgbnVtZXJpY2FsIG9wZXJhdG9ycy4gIEl0IGlzXG5yZWNvbW1lbmRlZCB0aGF0IGJvdGggbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlXG4iX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iIG9wZXJhdG9yO1xuZm9yIG1hcHBpbmdzLCAiaW4iIHNob3VsZCBzZWFyY2ggdGhlIG1hcHBpbmdcJ3Mga2V5czsgZm9yIHNlcXVlbmNlcywgaXRcbnNob3VsZCBzZWFyY2ggdGhyb3VnaCB0aGUgdmFsdWVzLiAgSXQgaXMgZnVydGhlciByZWNvbW1lbmRlZCB0aGF0IGJvdGhcbm1hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kIHRvIGFsbG93XG5lZmZpY2llbnQgaXRlcmF0aW9uIHRocm91Z2ggdGhlIGNvbnRhaW5lcjsgZm9yIG1hcHBpbmdzLCAiX19pdGVyX18oKSJcbnNob3VsZCBiZSB0aGUgc2FtZSBhcyAia2V5cygpIjsgZm9yIHNlcXVlbmNlcywgaXQgc2hvdWxkIGl0ZXJhdGVcbnRocm91Z2ggdGhlIHZhbHVlcy5cblxub2JqZWN0Ll9fbGVuX18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIi4gIFNob3VsZCByZXR1cm5cbiAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiBvYmplY3QgdGhhdFxuICAgZG9lc25cJ3QgZGVmaW5lIGEgIl9fYm9vbF9fKCkiIG1ldGhvZCBhbmQgd2hvc2UgIl9fbGVuX18oKSIgbWV0aG9kXG4gICByZXR1cm5zIHplcm8gaXMgY29uc2lkZXJlZCB0byBiZSBmYWxzZSBpbiBhIEJvb2xlYW4gY29udGV4dC5cblxub2JqZWN0Ll9fbGVuZ3RoX2hpbnRfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkIHJldHVybiBhblxuICAgZXN0aW1hdGVkIGxlbmd0aCBmb3IgdGhlIG9iamVjdCAod2hpY2ggbWF5IGJlIGdyZWF0ZXIgb3IgbGVzcyB0aGFuXG4gICB0aGUgYWN0dWFsIGxlbmd0aCkuIFRoZSBsZW5ndGggbXVzdCBiZSBhbiBpbnRlZ2VyICI+PSIgMC4gVGhpc1xuICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkIGZvclxuICAgY29ycmVjdG5lc3MuXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSBtZXRob2RzLlxuICBBIGNhbGwgbGlrZVxuXG4gICAgIGFbMToyXSA9IGJcblxuICBpcyB0cmFuc2xhdGVkIHRvXG5cbiAgICAgYVtzbGljZSgxLCAyLCBOb25lKV0gPSBiXG5cbiAgYW5kIHNvIGZvcnRoLiAgTWlzc2luZyBzbGljZSBpdGVtcyBhcmUgYWx3YXlzIGZpbGxlZCBpbiB3aXRoICJOb25lIi5cblxub2JqZWN0Ll9fZ2V0aXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3Igc2VxdWVuY2UgdHlwZXMsXG4gICB0aGUgYWNjZXB0ZWQga2V5cyBzaG91bGQgYmUgaW50ZWdlcnMgYW5kIHNsaWNlIG9iamVjdHMuICBOb3RlIHRoYXRcbiAgIHRoZSBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIGluZGV4ZXMgKGlmIHRoZSBjbGFzcyB3aXNoZXNcbiAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC4gSWZcbiAgICprZXkqIGlzIG9mIGFuIGluYXBwcm9wcmlhdGUgdHlwZSwgIlR5cGVFcnJvciIgbWF5IGJlIHJhaXNlZDsgaWYgb2ZcbiAgIGEgdmFsdWUgb3V0c2lkZSB0aGUgc2V0IG9mIGluZGV4ZXMgZm9yIHRoZSBzZXF1ZW5jZSAoYWZ0ZXIgYW55XG4gICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICJJbmRleEVycm9yIiBzaG91bGQgYmVcbiAgIHJhaXNlZC4gRm9yIG1hcHBpbmcgdHlwZXMsIGlmICprZXkqIGlzIG1pc3NpbmcgKG5vdCBpbiB0aGVcbiAgIGNvbnRhaW5lciksICJLZXlFcnJvciIgc2hvdWxkIGJlIHJhaXNlZC5cblxuICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgcmFpc2VkIGZvclxuICAgICBpbGxlZ2FsIGluZGV4ZXMgdG8gYWxsb3cgcHJvcGVyIGRldGVjdGlvbiBvZiB0aGUgZW5kIG9mIHRoZVxuICAgICBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIGJ5ICJkaWN0Ii4iX19nZXRpdGVtX18oKSIgdG8gaW1wbGVtZW50ICJzZWxmW2tleV0iIGZvciBkaWN0XG4gICBzdWJjbGFzc2VzIHdoZW4ga2V5IGlzIG5vdCBpbiB0aGUgZGljdGlvbmFyeS5cblxub2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgYXNzaWdubWVudCB0byAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgaWYgbmV3IGtleXNcbiAgIGNhbiBiZSBhZGRlZCwgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50cyBjYW4gYmUgcmVwbGFjZWQuICBUaGVcbiAgIHNhbWUgZXhjZXB0aW9ucyBzaG91bGQgYmUgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yXG4gICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxub2JqZWN0Ll9fZGVsaXRlbV9fKHNlbGYsIGtleSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBkZWxldGlvbiBvZiAic2VsZltrZXldIi4gIFNhbWUgbm90ZSBhcyBmb3JcbiAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yIG1hcHBpbmdzIGlmXG4gICB0aGUgb2JqZWN0cyBzdXBwb3J0IHJlbW92YWwgb2Yga2V5cywgb3IgZm9yIHNlcXVlbmNlcyBpZiBlbGVtZW50c1xuICAgY2FuIGJlIHJlbW92ZWQgZnJvbSB0aGUgc2VxdWVuY2UuICBUaGUgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZVxuICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19pdGVyX18oc2VsZilcblxuICAgVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYW4gaXRlcmF0b3IgaXMgcmVxdWlyZWQgZm9yIGEgY29udGFpbmVyLlxuICAgVGhpcyBtZXRob2Qgc2hvdWxkIHJldHVybiBhIG5ldyBpdGVyYXRvciBvYmplY3QgdGhhdCBjYW4gaXRlcmF0ZVxuICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgaXQgc2hvdWxkXG4gICBpdGVyYXRlIG92ZXIgdGhlIGtleXMgb2YgdGhlIGNvbnRhaW5lci5cblxuICAgSXRlcmF0b3Igb2JqZWN0cyBhbHNvIG5lZWQgdG8gaW1wbGVtZW50IHRoaXMgbWV0aG9kOyB0aGV5IGFyZVxuICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiBpdGVyYXRvclxuICAgb2JqZWN0cywgc2VlICpJdGVyYXRvciBUeXBlcyouXG5cbm9iamVjdC5fX3JldmVyc2VkX18oc2VsZilcblxuICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvIGltcGxlbWVudFxuICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0XG4gICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2Ugb3JkZXIuXG5cbiAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAicmV2ZXJzZWQoKSJcbiAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAoIl9fbGVuX18oKSJcbiAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlIHByb3RvY29sXG4gICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSBhblxuICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgcHJvdmlkZWQgYnlcbiAgICJyZXZlcnNlZCgpIi5cblxuVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgbm9ybWFsbHlcbmltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCBjb250YWluZXJcbm9iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlIGVmZmljaWVudFxuaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgc2VxdWVuY2UuXG5cbm9iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkIHJldHVybiB0cnVlXG4gICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyBvYmplY3RzLCB0aGlzXG4gICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlIHZhbHVlcyBvclxuICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuXG4gICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlIG1lbWJlcnNoaXAgdGVzdFxuICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCBzZXF1ZW5jZVxuICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSAqdGhpcyBzZWN0aW9uIGluIHRoZVxuICAgbGFuZ3VhZ2UgcmVmZXJlbmNlKi5cbicsCi0gJ3NoaWZ0aW5nJzogdSdcblNoaWZ0aW5nIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKipcblxuVGhlIHNoaWZ0aW5nIG9wZXJhdGlvbnMgaGF2ZSBsb3dlciBwcmlvcml0eSB0aGFuIHRoZSBhcml0aG1ldGljXG5vcGVyYXRpb25zOlxuXG4gICBzaGlmdF9leHByIDo6PSBhX2V4cHIgfCBzaGlmdF9leHByICggIjw8IiB8ICI+PiIgKSBhX2V4cHJcblxuVGhlc2Ugb3BlcmF0b3JzIGFjY2VwdCBpbnRlZ2VycyBhcyBhcmd1bWVudHMuICBUaGV5IHNoaWZ0IHRoZSBmaXJzdFxuYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5IHRoZVxuc2Vjb25kIGFyZ3VtZW50LlxuXG5BIHJpZ2h0IHNoaWZ0IGJ5ICpuKiBiaXRzIGlzIGRlZmluZWQgYXMgZmxvb3IgZGl2aXNpb24gYnkgInBvdygyLG4pIi5cbkEgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggInBvdygyLG4pIi5cblxuTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbiAgcmVxdWlyZWQgdG8gYmUgYXQgbW9zdCAic3lzLm1heHNpemUiLiAgSWYgdGhlIHJpZ2h0LWhhbmQgb3BlcmFuZCBpc1xuICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKLSAnc2xpY2luZ3MnOiB1J1xuU2xpY2luZ3NcbioqKioqKioqXG5cbkEgc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sIGFcbnN0cmluZywgdHVwbGUgb3IgbGlzdCkuICBTbGljaW5ncyBtYXkgYmUgdXNlZCBhcyBleHByZXNzaW9ucyBvciBhc1xudGFyZ2V0cyBpbiBhc3NpZ25tZW50IG9yICJkZWwiIHN0YXRlbWVudHMuICBUaGUgc3ludGF4IGZvciBhIHNsaWNpbmc6XG5cbiAgIHNsaWNpbmcgICAgICA6Oj0gcHJpbWFyeSAiWyIgc2xpY2VfbGlzdCAiXSJcbiAgIHNsaWNlX2xpc3QgICA6Oj0gc2xpY2VfaXRlbSAoIiwiIHNsaWNlX2l0ZW0pKiBbIiwiXVxuICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4gICBwcm9wZXJfc2xpY2UgOjo9IFtsb3dlcl9ib3VuZF0gIjoiIFt1cHBlcl9ib3VuZF0gWyAiOiIgW3N0cmlkZV0gXVxuICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4gICB1cHBlcl9ib3VuZCAgOjo9IGV4cHJlc3Npb25cbiAgIHN0cmlkZSAgICAgICA6Oj0gZXhwcmVzc2lvblxuXG5UaGVyZSBpcyBhbWJpZ3VpdHkgaW4gdGhlIGZvcm1hbCBzeW50YXggaGVyZTogYW55dGhpbmcgdGhhdCBsb29rcyBsaWtlXG5hbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55IHN1YnNjcmlwdGlvblxuY2FuIGJlIGludGVycHJldGVkIGFzIGEgc2xpY2luZy4gIFJhdGhlciB0aGFuIGZ1cnRoZXIgY29tcGxpY2F0aW5nIHRoZVxuc3ludGF4LCB0aGlzIGlzIGRpc2FtYmlndWF0ZWQgYnkgZGVmaW5pbmcgdGhhdCBpbiB0aGlzIGNhc2UgdGhlXG5pbnRlcnByZXRhdGlvbiBhcyBhIHN1YnNjcmlwdGlvbiB0YWtlcyBwcmlvcml0eSBvdmVyIHRoZVxuaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG5jb250YWlucyBubyBwcm9wZXIgc2xpY2UpLlxuXG5UaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyBpbmRleGVkXG4odXNpbmcgdGhlIHNhbWUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZCBhcyBub3JtYWwgc3Vic2NyaXB0aW9uKSB3aXRoIGFcbmtleSB0aGF0IGlzIGNvbnN0cnVjdGVkIGZyb20gdGhlIHNsaWNlIGxpc3QsIGFzIGZvbGxvd3MuICBJZiB0aGUgc2xpY2Vcbmxpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGVcbmNvbnZlcnNpb24gb2YgdGhlIHNsaWNlIGl0ZW1zOyBvdGhlcndpc2UsIHRoZSBjb252ZXJzaW9uIG9mIHRoZSBsb25lXG5zbGljZSBpdGVtIGlzIHRoZSBrZXkuICBUaGUgY29udmVyc2lvbiBvZiBhIHNsaWNlIGl0ZW0gdGhhdCBpcyBhblxuZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciBzbGljZSBpcyBhXG5zbGljZSBvYmplY3QgKHNlZSBzZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSB3aG9zZVxuInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGVcbmV4cHJlc3Npb25zIGdpdmVuIGFzIGxvd2VyIGJvdW5kLCB1cHBlciBib3VuZCBhbmQgc3RyaWRlLFxucmVzcGVjdGl2ZWx5LCBzdWJzdGl0dXRpbmcgIk5vbmUiIGZvciBtaXNzaW5nIGV4cHJlc3Npb25zLlxuJywKLSAnc3BlY2lhbGF0dHJzJzogdSdcblNwZWNpYWwgQXR0cmlidXRlc1xuKioqKioqKioqKioqKioqKioqXG5cblRoZSBpbXBsZW1lbnRhdGlvbiBhZGRzIGEgZmV3IHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXMgdG8gc2V2ZXJhbFxub2JqZWN0IHR5cGVzLCB3aGVyZSB0aGV5IGFyZSByZWxldmFudC4gIFNvbWUgb2YgdGhlc2UgYXJlIG5vdCByZXBvcnRlZFxuYnkgdGhlICJkaXIoKSIgYnVpbHQtaW4gZnVuY3Rpb24uXG5cbm9iamVjdC5fX2RpY3RfX1xuXG4gICBBIGRpY3Rpb25hcnkgb3Igb3RoZXIgbWFwcGluZyBvYmplY3QgdXNlZCB0byBzdG9yZSBhbiBvYmplY3RcJ3NcbiAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cblxuaW5zdGFuY2UuX19jbGFzc19fXG5cbiAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG5cbmNsYXNzLl9fYmFzZXNfX1xuXG4gICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuXG5jbGFzcy5fX25hbWVfX1xuXG4gICBUaGUgbmFtZSBvZiB0aGUgY2xhc3Mgb3IgdHlwZS5cblxuY2xhc3MuX19xdWFsbmFtZV9fXG5cbiAgIFRoZSAqcXVhbGlmaWVkIG5hbWUqIG9mIHRoZSBjbGFzcyBvciB0eXBlLlxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjMuXG5cbmNsYXNzLl9fbXJvX19cblxuICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgd2hlblxuICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cblxuY2xhc3MubXJvKClcblxuICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplIHRoZVxuICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgYXQgY2xhc3NcbiAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG5cbmNsYXNzLl9fc3ViY2xhc3Nlc19fKClcblxuICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyBpbW1lZGlhdGVcbiAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgcmVmZXJlbmNlc1xuICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG5cbiAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuICAgICAgWzxjbGFzcyBcJ2Jvb2xcJz5dXG5cbi1bIEZvb3Rub3RlcyBdLVxuXG5bMV0gQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiB0aGVzZSBzcGVjaWFsIG1ldGhvZHMgbWF5IGJlIGZvdW5kXG4gICAgaW4gdGhlIFB5dGhvbiBSZWZlcmVuY2UgTWFudWFsICgqQmFzaWMgY3VzdG9taXphdGlvbiopLlxuXG5bMl0gQXMgYSBjb25zZXF1ZW5jZSwgdGhlIGxpc3QgIlsxLCAyXSIgaXMgY29uc2lkZXJlZCBlcXVhbCB0b1xuICAgICJbMS4wLCAyLjBdIiwgYW5kIHNpbWlsYXJseSBmb3IgdHVwbGVzLlxuXG5bM10gVGhleSBtdXN0IGhhdmUgc2luY2UgdGhlIHBhcnNlciBjYW5cJ3QgdGVsbCB0aGUgdHlwZSBvZiB0aGVcbiAgICBvcGVyYW5kcy5cblxuWzRdIENhc2VkIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgIGJlaW5nIG9uZSBvZiAiTHUiIChMZXR0ZXIsIHVwcGVyY2FzZSksICJMbCIgKExldHRlciwgbG93ZXJjYXNlKSxcbiAgICBvciAiTHQiIChMZXR0ZXIsIHRpdGxlY2FzZSkuXG5cbls1XSBUbyBmb3JtYXQgb25seSBhIHR1cGxlIHlvdSBzaG91bGQgdGhlcmVmb3JlIHByb3ZpZGUgYVxuICAgIHNpbmdsZXRvbiB0dXBsZSB3aG9zZSBvbmx5IGVsZW1lbnQgaXMgdGhlIHR1cGxlIHRvIGJlIGZvcm1hdHRlZC5cbicsCi0gJ3NwZWNpYWxuYW1lcyc6IHUnXG5TcGVjaWFsIG1ldGhvZCBuYW1lc1xuKioqKioqKioqKioqKioqKioqKipcblxuQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5IHNwZWNpYWxcbnN5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCBzbGljaW5nKSBieVxuZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uXCdzIGFwcHJvYWNoIHRvXG4qb3BlcmF0b3Igb3ZlcmxvYWRpbmcqLCBhbGxvd2luZyBjbGFzc2VzIHRvIGRlZmluZSB0aGVpciBvd24gYmVoYXZpb3JcbndpdGggcmVzcGVjdCB0byBsYW5ndWFnZSBvcGVyYXRvcnMuICBGb3IgaW5zdGFuY2UsIGlmIGEgY2xhc3MgZGVmaW5lc1xuYSBtZXRob2QgbmFtZWQgIl9fZ2V0aXRlbV9fKCkiLCBhbmQgIngiIGlzIGFuIGluc3RhbmNlIG9mIHRoaXMgY2xhc3MsXG50aGVuICJ4W2ldIiBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gInR5cGUoeCkuX19nZXRpdGVtX18oeCwgaSkiLlxuRXhjZXB0IHdoZXJlIG1lbnRpb25lZCwgYXR0ZW1wdHMgdG8gZXhlY3V0ZSBhbiBvcGVyYXRpb24gcmFpc2UgYW5cbmV4Y2VwdGlvbiB3aGVuIG5vIGFwcHJvcHJpYXRlIG1ldGhvZCBpcyBkZWZpbmVkICh0eXBpY2FsbHlcbiJBdHRyaWJ1dGVFcnJvciIgb3IgIlR5cGVFcnJvciIpLlxuXG5XaGVuIGltcGxlbWVudGluZyBhIGNsYXNzIHRoYXQgZW11bGF0ZXMgYW55IGJ1aWx0LWluIHR5cGUsIGl0IGlzXG5pbXBvcnRhbnQgdGhhdCB0aGUgZW11bGF0aW9uIG9ubHkgYmUgaW1wbGVtZW50ZWQgdG8gdGhlIGRlZ3JlZSB0aGF0IGl0XG5tYWtlcyBzZW5zZSBmb3IgdGhlIG9iamVjdCBiZWluZyBtb2RlbGxlZC4gIEZvciBleGFtcGxlLCBzb21lXG5zZXF1ZW5jZXMgbWF5IHdvcmsgd2VsbCB3aXRoIHJldHJpZXZhbCBvZiBpbmRpdmlkdWFsIGVsZW1lbnRzLCBidXRcbmV4dHJhY3RpbmcgYSBzbGljZSBtYXkgbm90IG1ha2Ugc2Vuc2UuICAoT25lIGV4YW1wbGUgb2YgdGhpcyBpcyB0aGVcbiJOb2RlTGlzdCIgaW50ZXJmYWNlIGluIHRoZSBXM0NcJ3MgRG9jdW1lbnQgT2JqZWN0IE1vZGVsLilcblxuXG5CYXNpYyBjdXN0b21pemF0aW9uXG49PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG5cbiAgIENhbGxlZCB0byBjcmVhdGUgYSBuZXcgaW5zdGFuY2Ugb2YgY2xhc3MgKmNscyouICAiX19uZXdfXygpIiBpcyBhXG4gICBzdGF0aWMgbWV0aG9kIChzcGVjaWFsLWNhc2VkIHNvIHlvdSBuZWVkIG5vdCBkZWNsYXJlIGl0IGFzIHN1Y2gpXG4gICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkIGFzIGl0c1xuICAgZmlyc3QgYXJndW1lbnQuICBUaGUgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhvc2UgcGFzc2VkIHRvIHRoZVxuICAgb2JqZWN0IGNvbnN0cnVjdG9yIGV4cHJlc3Npb24gKHRoZSBjYWxsIHRvIHRoZSBjbGFzcykuICBUaGUgcmV0dXJuXG4gICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgKHVzdWFsbHkgYW5cbiAgIGluc3RhbmNlIG9mICpjbHMqKS5cblxuICAgVHlwaWNhbCBpbXBsZW1lbnRhdGlvbnMgY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIHRoZSBjbGFzcyBieVxuICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4gICAic3VwZXIoY3VycmVudGNsYXNzLCBjbHMpLl9fbmV3X18oY2xzWywgLi4uXSkiIHdpdGggYXBwcm9wcmlhdGVcbiAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgYXNcbiAgIG5lY2Vzc2FyeSBiZWZvcmUgcmV0dXJuaW5nIGl0LlxuXG4gICBJZiAiX19uZXdfXygpIiByZXR1cm5zIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbiAgICJfX2luaXRfXyhzZWxmWywgLi4uXSkiLCB3aGVyZSAqc2VsZiogaXMgdGhlIG5ldyBpbnN0YW5jZSBhbmQgdGhlXG4gICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAiX19uZXdfXygpIi5cblxuICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCB0aGVuIHRoZSBuZXdcbiAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBub3QgYmUgaW52b2tlZC5cblxuICAgIl9fbmV3X18oKSIgaXMgaW50ZW5kZWQgbWFpbmx5IHRvIGFsbG93IHN1YmNsYXNzZXMgb2YgaW1tdXRhYmxlXG4gICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSBjcmVhdGlvbi4gIEl0XG4gICBpcyBhbHNvIGNvbW1vbmx5IG92ZXJyaWRkZW4gaW4gY3VzdG9tIG1ldGFjbGFzc2VzIGluIG9yZGVyIHRvXG4gICBjdXN0b21pemUgY2xhc3MgY3JlYXRpb24uXG5cbm9iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcblxuICAgQ2FsbGVkIGFmdGVyIHRoZSBpbnN0YW5jZSBoYXMgYmVlbiBjcmVhdGVkIChieSAiX19uZXdfXygpIiksIGJ1dFxuICAgYmVmb3JlIGl0IGlzIHJldHVybmVkIHRvIHRoZSBjYWxsZXIuICBUaGUgYXJndW1lbnRzIGFyZSB0aG9zZVxuICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlIGNsYXNzIGhhcyBhblxuICAgIl9faW5pdF9fKCkiIG1ldGhvZCwgdGhlIGRlcml2ZWQgY2xhc3NcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCwgaWZcbiAgIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXQgdG8gZW5zdXJlIHByb3BlciBpbml0aWFsaXphdGlvbiBvZiB0aGVcbiAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuICAgIkJhc2VDbGFzcy5fX2luaXRfXyhzZWxmLCBbYXJncy4uLl0pIi5cblxuICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gY29uc3RydWN0aW5nXG4gICBvYmplY3RzICgiX19uZXdfXygpIiB0byBjcmVhdGUgaXQsIGFuZCAiX19pbml0X18oKSIgdG8gY3VzdG9taXNlXG4gICBpdCksIG5vIG5vbi0iTm9uZSIgdmFsdWUgbWF5IGJlIHJldHVybmVkIGJ5ICJfX2luaXRfXygpIjsgZG9pbmcgc29cbiAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cblxub2JqZWN0Ll9fZGVsX18oc2VsZilcblxuICAgQ2FsbGVkIHdoZW4gdGhlIGluc3RhbmNlIGlzIGFib3V0IHRvIGJlIGRlc3Ryb3llZC4gIFRoaXMgaXMgYWxzb1xuICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiBtZXRob2QsIHRoZVxuICAgZGVyaXZlZCBjbGFzc1wncyAiX19kZWxfXygpIiBtZXRob2QsIGlmIGFueSwgbXVzdCBleHBsaWNpdGx5IGNhbGwgaXRcbiAgIHRvIGVuc3VyZSBwcm9wZXIgZGVsZXRpb24gb2YgdGhlIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2UuXG4gICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgdGhlXG4gICAiX19kZWxfXygpIiBtZXRob2QgdG8gcG9zdHBvbmUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGluc3RhbmNlIGJ5XG4gICBjcmVhdGluZyBhIG5ldyByZWZlcmVuY2UgdG8gaXQuICBJdCBtYXkgdGhlbiBiZSBjYWxsZWQgYXQgYSBsYXRlclxuICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90IGd1YXJhbnRlZWQgdGhhdFxuICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgY2FsbGVkIGZvciBvYmplY3RzIHRoYXQgc3RpbGwgZXhpc3Qgd2hlblxuICAgdGhlIGludGVycHJldGVyIGV4aXRzLlxuXG4gICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gdGhlIGZvcm1lclxuICAgICBkZWNyZW1lbnRzIHRoZSByZWZlcmVuY2UgY291bnQgZm9yICJ4IiBieSBvbmUsIGFuZCB0aGUgbGF0dGVyIGlzXG4gICAgIG9ubHkgY2FsbGVkIHdoZW4gIngiXCdzIHJlZmVyZW5jZSBjb3VudCByZWFjaGVzIHplcm8uICBTb21lIGNvbW1vblxuICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiBvYmplY3QgZnJvbVxuICAgICBnb2luZyB0byB6ZXJvIGluY2x1ZGU6IGNpcmN1bGFyIHJlZmVyZW5jZXMgYmV0d2VlbiBvYmplY3RzIChlLmcuLFxuICAgICBhIGRvdWJseS1saW5rZWQgbGlzdCBvciBhIHRyZWUgZGF0YSBzdHJ1Y3R1cmUgd2l0aCBwYXJlbnQgYW5kXG4gICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgb2ZcbiAgICAgYSBmdW5jdGlvbiB0aGF0IGNhdWdodCBhbiBleGNlcHRpb24gKHRoZSB0cmFjZWJhY2sgc3RvcmVkIGluXG4gICAgICJzeXMuZXhjX2luZm8oKVsyXSIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKTsgb3IgYSByZWZlcmVuY2VcbiAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gdW5oYW5kbGVkXG4gICAgIGV4Y2VwdGlvbiBpbiBpbnRlcmFjdGl2ZSBtb2RlICh0aGUgdHJhY2ViYWNrIHN0b3JlZCBpblxuICAgICAic3lzLmxhc3RfdHJhY2ViYWNrIiBrZWVwcyB0aGUgc3RhY2sgZnJhbWUgYWxpdmUpLiAgVGhlIGZpcnN0XG4gICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nIHRoZSBjeWNsZXM7XG4gICAgIHRoZSBzZWNvbmQgY2FuIGJlIHJlc29sdmVkIGJ5IGZyZWVpbmcgdGhlIHJlZmVyZW5jZSB0byB0aGVcbiAgICAgdHJhY2ViYWNrIG9iamVjdCB3aGVuIGl0IGlzIG5vIGxvbmdlciB1c2VmdWwsIGFuZCB0aGUgdGhpcmQgY2FuXG4gICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiBDaXJjdWxhclxuICAgICByZWZlcmVuY2VzIHdoaWNoIGFyZSBnYXJiYWdlIGFyZSBkZXRlY3RlZCBhbmQgY2xlYW5lZCB1cCB3aGVuIHRoZVxuICAgICBjeWNsaWMgZ2FyYmFnZSBjb2xsZWN0b3IgaXMgZW5hYmxlZCAoaXRcJ3Mgb24gYnkgZGVmYXVsdCkuIFJlZmVyXG4gICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb25cbiAgICAgYWJvdXQgdGhpcyB0b3BpYy5cblxuICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbiAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyIGR1cmluZ1xuICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCB0b1xuICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkIGluXG4gICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gZXhlY3V0aW9uIG9mIHRoZVxuICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICJfX2RlbF9fKCkiXG4gICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZ1xuICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICBGb3IgdGhpc1xuICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSBtaW5pbXVtIG5lZWRlZFxuICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uIDEuNSxcbiAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSBzaW5nbGVcbiAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgZ2xvYmFscyBhcmVcbiAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsIHRoaXMgbWF5XG4gICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCBhdmFpbGFibGUgYXQgdGhlXG4gICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cblxub2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG5cbiAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgIm9mZmljaWFsIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgdGhpc1xuICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgdXNlZCB0b1xuICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuIGFwcHJvcHJpYXRlXG4gICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlIGZvcm1cbiAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSByZXR1cm5cbiAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgIl9fcmVwcl9fKCkiIGJ1dFxuICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAiaW5mb3JtYWwiXG4gICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgcmVxdWlyZWQuXG5cbiAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlXG4gICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cblxub2JqZWN0Ll9fc3RyX18oc2VsZilcblxuICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImZvcm1hdCgpIiBhbmRcbiAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgc3RyaW5nXG4gICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAqc3RyaW5nKlxuICAgb2JqZWN0LlxuXG4gICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0IHRoZXJlIGlzIG5vXG4gICBleHBlY3RhdGlvbiB0aGF0ICJfX3N0cl9fKCkiIHJldHVybiBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uOiBhXG4gICBtb3JlIGNvbnZlbmllbnQgb3IgY29uY2lzZSByZXByZXNlbnRhdGlvbiBjYW4gYmUgdXNlZC5cblxuICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAib2JqZWN0IlxuICAgY2FsbHMgIm9iamVjdC5fX3JlcHJfXygpIi5cblxub2JqZWN0Ll9fYnl0ZXNfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhblxuICAgb2JqZWN0LiBUaGlzIHNob3VsZCByZXR1cm4gYSAiYnl0ZXMiIG9iamVjdC5cblxub2JqZWN0Ll9fZm9ybWF0X18oc2VsZiwgZm9ybWF0X3NwZWMpXG5cbiAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiAoYW5kIGJ5IGV4dGVuc2lvbiwgdGhlXG4gICAic3RyLmZvcm1hdCgpIiBtZXRob2Qgb2YgY2xhc3MgInN0ciIpIHRvIHByb2R1Y2UgYSAiZm9ybWF0dGVkIlxuICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYVxuICAgc3RyaW5nIHRoYXQgY29udGFpbnMgYSBkZXNjcmlwdGlvbiBvZiB0aGUgZm9ybWF0dGluZyBvcHRpb25zXG4gICBkZXNpcmVkLiBUaGUgaW50ZXJwcmV0YXRpb24gb2YgdGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgdXAgdG9cbiAgIHRoZSB0eXBlIGltcGxlbWVudGluZyAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbFxuICAgZWl0aGVyIGRlbGVnYXRlIGZvcm1hdHRpbmcgdG8gb25lIG9mIHRoZSBidWlsdC1pbiB0eXBlcywgb3IgdXNlIGFcbiAgIHNpbWlsYXIgZm9ybWF0dGluZyBvcHRpb24gc3ludGF4LlxuXG4gICBTZWUgKkZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZVxuICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG5cbiAgIFRoZSByZXR1cm4gdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjQ6IFRoZSBfX2Zvcm1hdF9fIG1ldGhvZCBvZiAib2JqZWN0IiBpdHNlbGZcbiAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cblxub2JqZWN0Ll9fbHRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19lcV9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbmVfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19nZV9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbiAgIGNvcnJlc3BvbmRlbmNlIGJldHdlZW4gb3BlcmF0b3Igc3ltYm9scyBhbmQgbWV0aG9kIG5hbWVzIGlzIGFzXG4gICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgInguX19sZV9fKHkpIixcbiAgICJ4PT15IiBjYWxscyAieC5fX2VxX18oeSkiLCAieCE9eSIgY2FsbHMgInguX19uZV9fKHkpIiwgIng+eSIgY2FsbHNcbiAgICJ4Ll9fZ3RfXyh5KSIsIGFuZCAieD49eSIgY2FsbHMgInguX19nZV9fKHkpIi5cblxuICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAiTm90SW1wbGVtZW50ZWQiXG4gICBpZiBpdCBkb2VzIG5vdCBpbXBsZW1lbnQgdGhlIG9wZXJhdGlvbiBmb3IgYSBnaXZlbiBwYWlyIG9mXG4gICBhcmd1bWVudHMuIEJ5IGNvbnZlbnRpb24sICJGYWxzZSIgYW5kICJUcnVlIiBhcmUgcmV0dXJuZWQgZm9yIGFcbiAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuIGFueSB2YWx1ZSxcbiAgIHNvIGlmIHRoZSBjb21wYXJpc29uIG9wZXJhdG9yIGlzIHVzZWQgaW4gYSBCb29sZWFuIGNvbnRleHQgKGUuZy4sXG4gICBpbiB0aGUgY29uZGl0aW9uIG9mIGFuICJpZiIgc3RhdGVtZW50KSwgUHl0aG9uIHdpbGwgY2FsbCAiYm9vbCgpIlxuICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgZmFsc2UuXG5cbiAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kIGludmVydHMgdGhlXG4gICByZXN1bHQgdW5sZXNzIGl0IGlzICJOb3RJbXBsZW1lbnRlZCIuICBUaGVyZSBhcmUgbm8gb3RoZXIgaW1wbGllZFxuICAgcmVsYXRpb25zaGlwcyBhbW9uZyB0aGUgY29tcGFyaXNvbiBvcGVyYXRvcnMsIGZvciBleGFtcGxlLCB0aGVcbiAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvIGF1dG9tYXRpY2FsbHlcbiAgIGdlbmVyYXRlIG9yZGVyaW5nIG9wZXJhdGlvbnMgZnJvbSBhIHNpbmdsZSByb290IG9wZXJhdGlvbiwgc2VlXG4gICAiZnVuY3Rvb2xzLnRvdGFsX29yZGVyaW5nKCkiLlxuXG4gICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50IG5vdGVzIG9uXG4gICBjcmVhdGluZyAqaGFzaGFibGUqIG9iamVjdHMgd2hpY2ggc3VwcG9ydCBjdXN0b20gY29tcGFyaXNvblxuICAgb3BlcmF0aW9ucyBhbmQgYXJlIHVzYWJsZSBhcyBkaWN0aW9uYXJ5IGtleXMuXG5cbiAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgKHRvIGJlIHVzZWRcbiAgIHdoZW4gdGhlIGxlZnQgYXJndW1lbnQgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uIGJ1dCB0aGUgcmlnaHRcbiAgIGFyZ3VtZW50IGRvZXMpOyByYXRoZXIsICJfX2x0X18oKSIgYW5kICJfX2d0X18oKSIgYXJlIGVhY2ggb3RoZXJcJ3NcbiAgIHJlZmxlY3Rpb24sICJfX2xlX18oKSIgYW5kICJfX2dlX18oKSIgYXJlIGVhY2ggb3RoZXJcJ3MgcmVmbGVjdGlvbixcbiAgIGFuZCAiX19lcV9fKCkiIGFuZCAiX19uZV9fKCkiIGFyZSB0aGVpciBvd24gcmVmbGVjdGlvbi4gSWYgdGhlXG4gICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZFwncyB0eXBlIGlzIGFcbiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kXCdzIHR5cGUsIHRoZVxuICAgcmVmbGVjdGVkIG1ldGhvZCBvZiB0aGUgcmlnaHQgb3BlcmFuZCBoYXMgcHJpb3JpdHksIG90aGVyd2lzZSB0aGVcbiAgIGxlZnQgb3BlcmFuZFwncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyBpcyBub3RcbiAgIGNvbnNpZGVyZWQuXG5cbm9iamVjdC5fX2hhc2hfXyhzZWxmKVxuXG4gICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zIG9uIG1lbWJlcnNcbiAgIG9mIGhhc2hlZCBjb2xsZWN0aW9ucyBpbmNsdWRpbmcgInNldCIsICJmcm96ZW5zZXQiLCBhbmQgImRpY3QiLlxuICAgIl9faGFzaF9fKCkiIHNob3VsZCByZXR1cm4gYW4gaW50ZWdlci4gIFRoZSBvbmx5IHJlcXVpcmVkIHByb3BlcnR5XG4gICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggdmFsdWU7IGl0IGlzXG4gICBhZHZpc2VkIHRvIHNvbWVob3cgbWl4IHRvZ2V0aGVyIChlLmcuIHVzaW5nIGV4Y2x1c2l2ZSBvcikgdGhlIGhhc2hcbiAgIHZhbHVlcyBmb3IgdGhlIGNvbXBvbmVudHMgb2YgdGhlIG9iamVjdCB0aGF0IGFsc28gcGxheSBhIHBhcnQgaW5cbiAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cblxuICAgTm90ZTogImhhc2goKSIgdHJ1bmNhdGVzIHRoZSB2YWx1ZSByZXR1cm5lZCBmcm9tIGFuIG9iamVjdFwnc1xuICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICJQeV9zc2l6ZV90Ii4gIFRoaXNcbiAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAzMi1iaXRcbiAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCBpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4gICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uIGFsbFxuICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICJweXRob24gLWNcbiAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG5cbiAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCBub3RcbiAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICJfX2VxX18oKSJcbiAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyBpdGVtcyBpblxuICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzIGFuZFxuICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbiAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlIGNvbGxlY3Rpb25zXG4gICByZXF1aXJlcyB0aGF0IGEga2V5XCdzIGhhc2ggdmFsdWUgaXMgaW1tdXRhYmxlIChpZiB0aGUgb2JqZWN0XCdzIGhhc2hcbiAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cblxuICAgVXNlci1kZWZpbmVkIGNsYXNzZXMgaGF2ZSAiX19lcV9fKCkiIGFuZCAiX19oYXNoX18oKSIgbWV0aG9kcyBieVxuICAgZGVmYXVsdDsgd2l0aCB0aGVtLCBhbGwgb2JqZWN0cyBjb21wYXJlIHVuZXF1YWwgKGV4Y2VwdCB3aXRoXG4gICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSB2YWx1ZSBzdWNoXG4gICB0aGF0ICJ4ID09IHkiIGltcGxpZXMgYm90aCB0aGF0ICJ4IGlzIHkiIGFuZCAiaGFzaCh4KSA9PSBoYXNoKHkpIi5cblxuICAgQSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIGFuZCBkb2VzIG5vdCBkZWZpbmUgIl9faGFzaF9fKCkiXG4gICB3aWxsIGhhdmUgaXRzICJfX2hhc2hfXygpIiBpbXBsaWNpdGx5IHNldCB0byAiTm9uZSIuICBXaGVuIHRoZVxuICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc1xuICAgd2lsbCByYWlzZSBhbiBhcHByb3ByaWF0ZSAiVHlwZUVycm9yIiB3aGVuIGEgcHJvZ3JhbSBhdHRlbXB0cyB0b1xuICAgcmV0cmlldmUgdGhlaXIgaGFzaCB2YWx1ZSwgYW5kIHdpbGwgYWxzbyBiZSBjb3JyZWN0bHkgaWRlbnRpZmllZCBhc1xuICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIi5cblxuICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiB0aGVcbiAgIGltcGxlbWVudGF0aW9uIG9mICJfX2hhc2hfXygpIiBmcm9tIGEgcGFyZW50IGNsYXNzLCB0aGUgaW50ZXJwcmV0ZXJcbiAgIG11c3QgYmUgdG9sZCB0aGlzIGV4cGxpY2l0bHkgYnkgc2V0dGluZyAiX19oYXNoX18gPVxuICAgPFBhcmVudENsYXNzPi5fX2hhc2hfXyIuXG5cbiAgIElmIGEgY2xhc3MgdGhhdCBkb2VzIG5vdCBvdmVycmlkZSAiX19lcV9fKCkiIHdpc2hlcyB0byBzdXBwcmVzc1xuICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgY2xhc3NcbiAgIGRlZmluaXRpb24uIEEgY2xhc3Mgd2hpY2ggZGVmaW5lcyBpdHMgb3duICJfX2hhc2hfXygpIiB0aGF0XG4gICBleHBsaWNpdGx5IHJhaXNlcyBhICJUeXBlRXJyb3IiIHdvdWxkIGJlIGluY29ycmVjdGx5IGlkZW50aWZpZWQgYXNcbiAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiBjYWxsLlxuXG4gICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzIGFuZFxuICAgICBkYXRldGltZSBvYmplY3RzIGFyZSAic2FsdGVkIiB3aXRoIGFuIHVucHJlZGljdGFibGUgcmFuZG9tIHZhbHVlLlxuICAgICBBbHRob3VnaCB0aGV5IHJlbWFpbiBjb25zdGFudCB3aXRoaW4gYW4gaW5kaXZpZHVhbCBQeXRob25cbiAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgaW52b2NhdGlvbnMgb2ZcbiAgICAgUHl0aG9uLlRoaXMgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBwcm90ZWN0aW9uIGFnYWluc3QgYSBkZW5pYWwtXG4gICAgIG9mLXNlcnZpY2UgY2F1c2VkIGJ5IGNhcmVmdWxseS1jaG9zZW4gaW5wdXRzIHRoYXQgZXhwbG9pdCB0aGVcbiAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgY29tcGxleGl0eS5cbiAgICAgU2VlIGh0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbiAgICAgZGV0YWlscy5DaGFuZ2luZyBoYXNoIHZhbHVlcyBhZmZlY3RzIHRoZSBpdGVyYXRpb24gb3JkZXIgb2ZcbiAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlIGd1YXJhbnRlZXNcbiAgICAgYWJvdXQgdGhpcyBvcmRlcmluZyAoYW5kIGl0IHR5cGljYWxseSB2YXJpZXMgYmV0d2VlbiAzMi1iaXQgYW5kXG4gICAgIDY0LWJpdCBidWlsZHMpLlNlZSBhbHNvICJQWVRIT05IQVNIU0VFRCIuXG5cbiAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5IGRlZmF1bHQuXG5cbm9iamVjdC5fX2Jvb2xfXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRydXRoIHZhbHVlIHRlc3RpbmcgYW5kIHRoZSBidWlsdC1pbiBvcGVyYXRpb25cbiAgICJib29sKCkiOyBzaG91bGQgcmV0dXJuICJGYWxzZSIgb3IgIlRydWUiLiAgV2hlbiB0aGlzIG1ldGhvZCBpcyBub3RcbiAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kIHRoZSBvYmplY3QgaXNcbiAgIGNvbnNpZGVyZWQgdHJ1ZSBpZiBpdHMgcmVzdWx0IGlzIG5vbnplcm8uICBJZiBhIGNsYXNzIGRlZmluZXNcbiAgIG5laXRoZXIgIl9fbGVuX18oKSIgbm9yICJfX2Jvb2xfXygpIiwgYWxsIGl0cyBpbnN0YW5jZXMgYXJlXG4gICBjb25zaWRlcmVkIHRydWUuXG5cblxuQ3VzdG9taXppbmcgYXR0cmlidXRlIGFjY2Vzc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gY3VzdG9taXplIHRoZSBtZWFuaW5nIG9mXG5hdHRyaWJ1dGUgYWNjZXNzICh1c2Ugb2YsIGFzc2lnbm1lbnQgdG8sIG9yIGRlbGV0aW9uIG9mICJ4Lm5hbWUiKSBmb3JcbmNsYXNzIGluc3RhbmNlcy5cblxub2JqZWN0Ll9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB3aGVuIGFuIGF0dHJpYnV0ZSBsb29rdXAgaGFzIG5vdCBmb3VuZCB0aGUgYXR0cmlidXRlIGluIHRoZVxuICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgbm9yIGlzIGl0IGZvdW5kXG4gICBpbiB0aGUgY2xhc3MgdHJlZSBmb3IgInNlbGYiKS4gICJuYW1lIiBpcyB0aGUgYXR0cmlidXRlIG5hbWUuIFRoaXNcbiAgIG1ldGhvZCBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG5cbiAgIE5vdGUgdGhhdCBpZiB0aGUgYXR0cmlidXRlIGlzIGZvdW5kIHRocm91Z2ggdGhlIG5vcm1hbCBtZWNoYW5pc20sXG4gICAiX19nZXRhdHRyX18oKSIgaXMgbm90IGNhbGxlZC4gIChUaGlzIGlzIGFuIGludGVudGlvbmFsIGFzeW1tZXRyeVxuICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgZG9uZSBib3RoIGZvclxuICAgZWZmaWNpZW5jeSByZWFzb25zIGFuZCBiZWNhdXNlIG90aGVyd2lzZSAiX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuICAgbm8gd2F5IHRvIGFjY2VzcyBvdGhlciBhdHRyaWJ1dGVzIG9mIHRoZSBpbnN0YW5jZS4gIE5vdGUgdGhhdCBhdFxuICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsIGNvbnRyb2wgYnkgbm90XG4gICBpbnNlcnRpbmcgYW55IHZhbHVlcyBpbiB0aGUgaW5zdGFuY2UgYXR0cmlidXRlIGRpY3Rpb25hcnkgKGJ1dFxuICAgaW5zdGVhZCBpbnNlcnRpbmcgdGhlbSBpbiBhbm90aGVyIG9iamVjdCkuICBTZWUgdGhlXG4gICAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgYmVsb3cgZm9yIGEgd2F5IHRvIGFjdHVhbGx5IGdldCB0b3RhbFxuICAgY29udHJvbCBvdmVyIGF0dHJpYnV0ZSBhY2Nlc3MuXG5cbm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG5cbiAgIENhbGxlZCB1bmNvbmRpdGlvbmFsbHkgdG8gaW1wbGVtZW50IGF0dHJpYnV0ZSBhY2Nlc3NlcyBmb3JcbiAgIGluc3RhbmNlcyBvZiB0aGUgY2xhc3MuIElmIHRoZSBjbGFzcyBhbHNvIGRlZmluZXMgIl9fZ2V0YXR0cl9fKCkiLFxuICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICJfX2dldGF0dHJpYnV0ZV9fKCkiIGVpdGhlclxuICAgY2FsbHMgaXQgZXhwbGljaXRseSBvciByYWlzZXMgYW4gIkF0dHJpYnV0ZUVycm9yIi4gVGhpcyBtZXRob2RcbiAgIHNob3VsZCByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuXG4gICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgaW5maW5pdGUgcmVjdXJzaW9uIGluXG4gICB0aGlzIG1ldGhvZCwgaXRzIGltcGxlbWVudGF0aW9uIHNob3VsZCBhbHdheXMgY2FsbCB0aGUgYmFzZSBjbGFzc1xuICAgbWV0aG9kIHdpdGggdGhlIHNhbWUgbmFtZSB0byBhY2Nlc3MgYW55IGF0dHJpYnV0ZXMgaXQgbmVlZHMsIGZvclxuICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cblxuICAgTm90ZTogVGhpcyBtZXRob2QgbWF5IHN0aWxsIGJlIGJ5cGFzc2VkIHdoZW4gbG9va2luZyB1cCBzcGVjaWFsXG4gICAgIG1ldGhvZHMgYXMgdGhlIHJlc3VsdCBvZiBpbXBsaWNpdCBpbnZvY2F0aW9uIHZpYSBsYW5ndWFnZSBzeW50YXhcbiAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgKlNwZWNpYWwgbWV0aG9kIGxvb2t1cCouXG5cbm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHdoZW4gYW4gYXR0cmlidXRlIGFzc2lnbm1lbnQgaXMgYXR0ZW1wdGVkLiAgVGhpcyBpcyBjYWxsZWRcbiAgIGluc3RlYWQgb2YgdGhlIG5vcm1hbCBtZWNoYW5pc20gKGkuZS4gc3RvcmUgdGhlIHZhbHVlIGluIHRoZVxuICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICp2YWx1ZSogaXMgdGhlXG4gICB2YWx1ZSB0byBiZSBhc3NpZ25lZCB0byBpdC5cblxuICAgSWYgIl9fc2V0YXR0cl9fKCkiIHdhbnRzIHRvIGFzc2lnbiB0byBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUsIGl0XG4gICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCBmb3IgZXhhbXBsZSxcbiAgICJvYmplY3QuX19zZXRhdHRyX18oc2VsZiwgbmFtZSwgdmFsdWUpIi5cblxub2JqZWN0Ll9fZGVsYXR0cl9fKHNlbGYsIG5hbWUpXG5cbiAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uIGluc3RlYWQgb2ZcbiAgIGFzc2lnbm1lbnQuICBUaGlzIHNob3VsZCBvbmx5IGJlIGltcGxlbWVudGVkIGlmICJkZWwgb2JqLm5hbWUiIGlzXG4gICBtZWFuaW5nZnVsIGZvciB0aGUgb2JqZWN0LlxuXG5vYmplY3QuX19kaXJfXyhzZWxmKVxuXG4gICBDYWxsZWQgd2hlbiAiZGlyKCkiIGlzIGNhbGxlZCBvbiB0aGUgb2JqZWN0LiBBIHNlcXVlbmNlIG11c3QgYmVcbiAgIHJldHVybmVkLiAiZGlyKCkiIGNvbnZlcnRzIHRoZSByZXR1cm5lZCBzZXF1ZW5jZSB0byBhIGxpc3QgYW5kXG4gICBzb3J0cyBpdC5cblxuXG5JbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSBjbGFzc1xuY29udGFpbmluZyB0aGUgbWV0aG9kIChhIHNvLWNhbGxlZCAqZGVzY3JpcHRvciogY2xhc3MpIGFwcGVhcnMgaW4gYW5cbipvd25lciogY2xhc3MgKHRoZSBkZXNjcmlwdG9yIG11c3QgYmUgaW4gZWl0aGVyIHRoZSBvd25lclwncyBjbGFzc1xuZGljdGlvbmFyeSBvciBpbiB0aGUgY2xhc3MgZGljdGlvbmFyeSBmb3Igb25lIG9mIGl0cyBwYXJlbnRzKS4gIEluIHRoZVxuZXhhbXBsZXMgYmVsb3csICJ0aGUgYXR0cmlidXRlIiByZWZlcnMgdG8gdGhlIGF0dHJpYnV0ZSB3aG9zZSBuYW1lIGlzXG50aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3NcJyAiX19kaWN0X18iLlxuXG5vYmplY3QuX19nZXRfXyhzZWxmLCBpbnN0YW5jZSwgb3duZXIpXG5cbiAgIENhbGxlZCB0byBnZXQgdGhlIGF0dHJpYnV0ZSBvZiB0aGUgb3duZXIgY2xhc3MgKGNsYXNzIGF0dHJpYnV0ZVxuICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSBhdHRyaWJ1dGVcbiAgIGFjY2VzcykuICpvd25lciogaXMgYWx3YXlzIHRoZSBvd25lciBjbGFzcywgd2hpbGUgKmluc3RhbmNlKiBpcyB0aGVcbiAgIGluc3RhbmNlIHRoYXQgdGhlIGF0dHJpYnV0ZSB3YXMgYWNjZXNzZWQgdGhyb3VnaCwgb3IgIk5vbmUiIHdoZW5cbiAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgbWV0aG9kIHNob3VsZFxuICAgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhbiAiQXR0cmlidXRlRXJyb3IiXG4gICBleGNlcHRpb24uXG5cbm9iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIHNldCB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICppbnN0YW5jZSogb2YgdGhlIG93bmVyXG4gICBjbGFzcyB0byBhIG5ldyB2YWx1ZSwgKnZhbHVlKi5cblxub2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG5cbiAgIENhbGxlZCB0byBkZWxldGUgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mIHRoZVxuICAgb3duZXIgY2xhc3MuXG5cblRoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICJpbnNwZWN0IiBtb2R1bGUgYXNcbnNwZWNpZnlpbmcgdGhlIGNsYXNzIHdoZXJlIHRoaXMgb2JqZWN0IHdhcyBkZWZpbmVkIChzZXR0aW5nIHRoaXNcbmFwcHJvcHJpYXRlbHkgY2FuIGFzc2lzdCBpbiBydW50aW1lIGludHJvc3BlY3Rpb24gb2YgZHluYW1pYyBjbGFzc1xuYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuIGluc3RhbmNlIG9mIHRoZVxuZ2l2ZW4gdHlwZSAob3IgYSBzdWJjbGFzcykgaXMgZXhwZWN0ZWQgb3IgcmVxdWlyZWQgYXMgdGhlIGZpcnN0XG5wb3NpdGlvbmFsIGFyZ3VtZW50IChmb3IgZXhhbXBsZSwgQ1B5dGhvbiBzZXRzIHRoaXMgYXR0cmlidXRlIGZvclxudW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuXG5cbkludm9raW5nIERlc2NyaXB0b3JzXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5JbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICJiaW5kaW5nXG5iZWhhdmlvciIsIG9uZSB3aG9zZSBhdHRyaWJ1dGUgYWNjZXNzIGhhcyBiZWVuIG92ZXJyaWRkZW4gYnkgbWV0aG9kc1xuaW4gdGhlIGRlc2NyaXB0b3IgcHJvdG9jb2w6ICAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIsIGFuZFxuIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciBhbiBvYmplY3QsIGl0XG5pcyBzYWlkIHRvIGJlIGEgZGVzY3JpcHRvci5cblxuVGhlIGRlZmF1bHQgYmVoYXZpb3IgZm9yIGF0dHJpYnV0ZSBhY2Nlc3MgaXMgdG8gZ2V0LCBzZXQsIG9yIGRlbGV0ZVxudGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdFwncyBkaWN0aW9uYXJ5LiBGb3IgaW5zdGFuY2UsICJhLngiIGhhcyBhXG5sb29rdXAgY2hhaW4gc3RhcnRpbmcgd2l0aCAiYS5fX2RpY3RfX1tcJ3hcJ10iLCB0aGVuXG4idHlwZShhKS5fX2RpY3RfX1tcJ3hcJ10iLCBhbmQgY29udGludWluZyB0aHJvdWdoIHRoZSBiYXNlIGNsYXNzZXMgb2ZcbiJ0eXBlKGEpIiBleGNsdWRpbmcgbWV0YWNsYXNzZXMuXG5cbkhvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nIG9uZSBvZiB0aGVcbmRlc2NyaXB0b3IgbWV0aG9kcywgdGhlbiBQeXRob24gbWF5IG92ZXJyaWRlIHRoZSBkZWZhdWx0IGJlaGF2aW9yIGFuZFxuaW52b2tlIHRoZSBkZXNjcmlwdG9yIG1ldGhvZCBpbnN0ZWFkLiAgV2hlcmUgdGhpcyBvY2N1cnMgaW4gdGhlXG5wcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIHdlcmUgZGVmaW5lZCBhbmRcbmhvdyB0aGV5IHdlcmUgY2FsbGVkLlxuXG5UaGUgc3RhcnRpbmcgcG9pbnQgZm9yIGRlc2NyaXB0b3IgaW52b2NhdGlvbiBpcyBhIGJpbmRpbmcsICJhLngiLiBIb3dcbnRoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcblxuRGlyZWN0IENhbGxcbiAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgZGlyZWN0bHlcbiAgIGludm9rZXMgYSBkZXNjcmlwdG9yIG1ldGhvZDogICAgInguX19nZXRfXyhhKSIuXG5cbkluc3RhbmNlIEJpbmRpbmdcbiAgIElmIGJpbmRpbmcgdG8gYW4gb2JqZWN0IGluc3RhbmNlLCAiYS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuICAgY2FsbDogInR5cGUoYSkuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oYSwgdHlwZShhKSkiLlxuXG5DbGFzcyBCaW5kaW5nXG4gICBJZiBiaW5kaW5nIHRvIGEgY2xhc3MsICJBLngiIGlzIHRyYW5zZm9ybWVkIGludG8gdGhlIGNhbGw6XG4gICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG5cblN1cGVyIEJpbmRpbmdcbiAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICJzdXBlcihCLFxuICAgb2JqKS5tKCkiIHNlYXJjaGVzICJvYmouX19jbGFzc19fLl9fbXJvX18iIGZvciB0aGUgYmFzZSBjbGFzcyAiQSJcbiAgIGltbWVkaWF0ZWx5IHByZWNlZGluZyAiQiIgYW5kIHRoZW4gaW52b2tlcyB0aGUgZGVzY3JpcHRvciB3aXRoIHRoZVxuICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCBvYmouX19jbGFzc19fKSIuXG5cbkZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciBpbnZvY2F0aW9uIGRlcGVuZHNcbm9uIHRoZSB3aGljaCBkZXNjcmlwdG9yIG1ldGhvZHMgYXJlIGRlZmluZWQuICBBIGRlc2NyaXB0b3IgY2FuIGRlZmluZVxuYW55IGNvbWJpbmF0aW9uIG9mICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiBhbmQgIl9fZGVsZXRlX18oKSIuICBJZiBpdFxuZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgYXR0cmlidXRlIHdpbGwgcmV0dXJuXG50aGUgZGVzY3JpcHRvciBvYmplY3QgaXRzZWxmIHVubGVzcyB0aGVyZSBpcyBhIHZhbHVlIGluIHRoZSBvYmplY3RcJ3Ncbmluc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiIGFuZC9vclxuIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzIG5laXRoZXIsIGl0IGlzXG5hIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgYm90aFxuIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlIGp1c3QgdGhlXG4iX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICJfX2dldF9fKCkiXG5kZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSBkaWN0aW9uYXJ5LiAgSW5cbmNvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSBpbnN0YW5jZXMuXG5cblB5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgImNsYXNzbWV0aG9kKCkiKSBhcmVcbmltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5cbnJlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCBpbnN0YW5jZXMgdG9cbmFjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSBzYW1lIGNsYXNzLlxuXG5UaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSBkZXNjcmlwdG9yLlxuQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgcHJvcGVydHkuXG5cblxuX19zbG90c19fXG4tLS0tLS0tLS1cblxuQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yIGF0dHJpYnV0ZVxuc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyBpbnN0YW5jZVxudmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiBjcmVhdGluZyBsYXJnZVxubnVtYmVycyBvZiBpbnN0YW5jZXMuXG5cblRoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgY2xhc3NcbmRlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mIGluc3RhbmNlXG52YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gaG9sZCBhXG52YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiBpcyBub3RcbmNyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG5cbm9iamVjdC5fX3Nsb3RzX19cblxuICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgKl9fc2xvdHNfXypcbiAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyB0aGVcbiAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciBlYWNoXG4gICBpbnN0YW5jZS5cblxuXG5Ob3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxufn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cblxuKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAqX19kaWN0X18qXG4gIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgKl9fc2xvdHNfXypcbiAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG5cbiogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgYXNzaWduZWQgbmV3XG4gIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgQXR0ZW1wdHMgdG9cbiAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICJBdHRyaWJ1dGVFcnJvciIuIElmXG4gIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4gICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgY2xhc3Nlc1xuICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gaXRzXG4gIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4gICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAqX19zbG90c19fKlxuICBkZWNsYXJhdGlvbi5cblxuKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5IGNyZWF0aW5nXG4gIGRlc2NyaXB0b3JzICgqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKikgZm9yIGVhY2ggdmFyaWFibGUgbmFtZS4gIEFzXG4gIGEgcmVzdWx0LCBjbGFzcyBhdHRyaWJ1dGVzIGNhbm5vdCBiZSB1c2VkIHRvIHNldCBkZWZhdWx0IHZhbHVlcyBmb3JcbiAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgdGhlIGNsYXNzXG4gIGF0dHJpYnV0ZSB3b3VsZCBvdmVyd3JpdGUgdGhlIGRlc2NyaXB0b3IgYXNzaWdubWVudC5cblxuKiBUaGUgYWN0aW9uIG9mIGEgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gaXMgbGltaXRlZCB0byB0aGUgY2xhc3NcbiAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgaGF2ZSBhICpfX2RpY3RfXypcbiAgdW5sZXNzIHRoZXkgYWxzbyBkZWZpbmUgKl9fc2xvdHNfXyogKHdoaWNoIG11c3Qgb25seSBjb250YWluIG5hbWVzXG4gIG9mIGFueSAqYWRkaXRpb25hbCogc2xvdHMpLlxuXG4qIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSBjbGFzcywgdGhlXG4gIGluc3RhbmNlIHZhcmlhYmxlIGRlZmluZWQgYnkgdGhlIGJhc2UgY2xhc3Mgc2xvdCBpcyBpbmFjY2Vzc2libGVcbiAgKGV4Y2VwdCBieSByZXRyaWV2aW5nIGl0cyBkZXNjcmlwdG9yIGRpcmVjdGx5IGZyb20gdGhlIGJhc2UgY2xhc3MpLlxuICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gdGhlIGZ1dHVyZSwgYVxuICBjaGVjayBtYXkgYmUgYWRkZWQgdG8gcHJldmVudCB0aGlzLlxuXG4qIE5vbmVtcHR5ICpfX3Nsb3RzX18qIGRvZXMgbm90IHdvcmsgZm9yIGNsYXNzZXMgZGVyaXZlZCBmcm9tXG4gICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICJieXRlcyIgYW5kICJ0dXBsZSIuXG5cbiogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICpfX3Nsb3RzX18qLiBNYXBwaW5nc1xuICBtYXkgYWxzbyBiZSB1c2VkOyBob3dldmVyLCBpbiB0aGUgZnV0dXJlLCBzcGVjaWFsIG1lYW5pbmcgbWF5IGJlXG4gIGFzc2lnbmVkIHRvIHRoZSB2YWx1ZXMgY29ycmVzcG9uZGluZyB0byBlYWNoIGtleS5cblxuKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgdGhlIHNhbWVcbiAgKl9fc2xvdHNfXyouXG5cblxuQ3VzdG9taXppbmcgY2xhc3MgY3JlYXRpb25cbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbkJ5IGRlZmF1bHQsIGNsYXNzZXMgYXJlIGNvbnN0cnVjdGVkIHVzaW5nICJ0eXBlKCkiLiBUaGUgY2xhc3MgYm9keSBpc1xuZXhlY3V0ZWQgaW4gYSBuZXcgbmFtZXNwYWNlIGFuZCB0aGUgY2xhc3MgbmFtZSBpcyBib3VuZCBsb2NhbGx5IHRvIHRoZVxucmVzdWx0IG9mICJ0eXBlKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpIi5cblxuVGhlIGNsYXNzIGNyZWF0aW9uIHByb2Nlc3MgY2FuIGJlIGN1c3RvbWlzZWQgYnkgcGFzc2luZyB0aGVcbiJtZXRhY2xhc3MiIGtleXdvcmQgYXJndW1lbnQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gbGluZSwgb3IgYnlcbmluaGVyaXRpbmcgZnJvbSBhbiBleGlzdGluZyBjbGFzcyB0aGF0IGluY2x1ZGVkIHN1Y2ggYW4gYXJndW1lbnQuIEluXG50aGUgZm9sbG93aW5nIGV4YW1wbGUsIGJvdGggIk15Q2xhc3MiIGFuZCAiTXlTdWJjbGFzcyIgYXJlIGluc3RhbmNlc1xub2YgIk1ldGEiOlxuXG4gICBjbGFzcyBNZXRhKHR5cGUpOlxuICAgICAgIHBhc3NcblxuICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TWV0YSk6XG4gICAgICAgcGFzc1xuXG4gICBjbGFzcyBNeVN1YmNsYXNzKE15Q2xhc3MpOlxuICAgICAgIHBhc3NcblxuQW55IG90aGVyIGtleXdvcmQgYXJndW1lbnRzIHRoYXQgYXJlIHNwZWNpZmllZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvblxuYXJlIHBhc3NlZCB0aHJvdWdoIHRvIGFsbCBtZXRhY2xhc3Mgb3BlcmF0aW9ucyBkZXNjcmliZWQgYmVsb3cuXG5cbldoZW4gYSBjbGFzcyBkZWZpbml0aW9uIGlzIGV4ZWN1dGVkLCB0aGUgZm9sbG93aW5nIHN0ZXBzIG9jY3VyOlxuXG4qIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaXMgZGV0ZXJtaW5lZFxuXG4qIHRoZSBjbGFzcyBuYW1lc3BhY2UgaXMgcHJlcGFyZWRcblxuKiB0aGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZFxuXG4qIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZFxuXG5cbkRldGVybWluaW5nIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3Ncbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuVGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBmb3IgYSBjbGFzcyBkZWZpbml0aW9uIGlzIGRldGVybWluZWQgYXNcbmZvbGxvd3M6XG5cbiogaWYgbm8gYmFzZXMgYW5kIG5vIGV4cGxpY2l0IG1ldGFjbGFzcyBhcmUgZ2l2ZW4sIHRoZW4gInR5cGUoKSIgaXNcbiAgdXNlZFxuXG4qIGlmIGFuIGV4cGxpY2l0IG1ldGFjbGFzcyBpcyBnaXZlbiBhbmQgaXQgaXMgKm5vdCogYW4gaW5zdGFuY2Ugb2ZcbiAgInR5cGUoKSIsIHRoZW4gaXQgaXMgdXNlZCBkaXJlY3RseSBhcyB0aGUgbWV0YWNsYXNzXG5cbiogaWYgYW4gaW5zdGFuY2Ugb2YgInR5cGUoKSIgaXMgZ2l2ZW4gYXMgdGhlIGV4cGxpY2l0IG1ldGFjbGFzcywgb3JcbiAgYmFzZXMgYXJlIGRlZmluZWQsIHRoZW4gdGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgdXNlZFxuXG5UaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBzZWxlY3RlZCBmcm9tIHRoZSBleHBsaWNpdGx5IHNwZWNpZmllZFxubWV0YWNsYXNzIChpZiBhbnkpIGFuZCB0aGUgbWV0YWNsYXNzZXMgKGkuZS4gInR5cGUoY2xzKSIpIG9mIGFsbFxuc3BlY2lmaWVkIGJhc2UgY2xhc3Nlcy4gVGhlIG1vc3QgZGVyaXZlZCBtZXRhY2xhc3MgaXMgb25lIHdoaWNoIGlzIGFcbnN1YnR5cGUgb2YgKmFsbCogb2YgdGhlc2UgY2FuZGlkYXRlIG1ldGFjbGFzc2VzLiBJZiBub25lIG9mIHRoZVxuY2FuZGlkYXRlIG1ldGFjbGFzc2VzIG1lZXRzIHRoYXQgY3JpdGVyaW9uLCB0aGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uXG53aWxsIGZhaWwgd2l0aCAiVHlwZUVycm9yIi5cblxuXG5QcmVwYXJpbmcgdGhlIGNsYXNzIG5hbWVzcGFjZVxuLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGhhcyBiZWVuIGlkZW50aWZpZWQsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgcHJlcGFyZWQuIElmIHRoZSBtZXRhY2xhc3MgaGFzIGEgIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsXG5pdCBpcyBjYWxsZWQgYXMgIm5hbWVzcGFjZSA9IG1ldGFjbGFzcy5fX3ByZXBhcmVfXyhuYW1lLCBiYXNlcyxcbioqa3dkcykiICh3aGVyZSB0aGUgYWRkaXRpb25hbCBrZXl3b3JkIGFyZ3VtZW50cywgaWYgYW55LCBjb21lIGZyb21cbnRoZSBjbGFzcyBkZWZpbml0aW9uKS5cblxuSWYgdGhlIG1ldGFjbGFzcyBoYXMgbm8gIl9fcHJlcGFyZV9fIiBhdHRyaWJ1dGUsIHRoZW4gdGhlIGNsYXNzXG5uYW1lc3BhY2UgaXMgaW5pdGlhbGlzZWQgYXMgYW4gZW1wdHkgImRpY3QoKSIgaW5zdGFuY2UuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE1KiogLSBNZXRhY2xhc3NlcyBpbiBQeXRob24gMzAwMFxuXG4gICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcblxuXG5FeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgZ2xvYmFscygpLFxubmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gImV4ZWMoKSIgaXMgdGhhdFxubGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSBtZXRob2RzKSB0b1xucmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSBjbGFzc1xuZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG5cbkhvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSBmdW5jdGlvbixcbm1ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgZGVmaW5lZCBhdCB0aGVcbmNsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBmaXJzdFxucGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgYWNjZXNzZWQgYXQgYWxsXG5mcm9tIHN0YXRpYyBtZXRob2RzLlxuXG5cbkNyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3Rcbi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlIGNsYXNzXG5ib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxubmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlIHRoZSBzYW1lXG5hcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG5cblRoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlIHplcm8tXG5hcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgY2xvc3VyZVxucmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgYm9keSByZWZlclxudG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvIGFyZ3VtZW50IGZvcm1cbm9mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgYmFzZWQgb25cbmxleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgdG8gbWFrZSB0aGVcbmN1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhlXG5tZXRob2QuXG5cbkFmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSBjbGFzc1xuZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlIHJlc3VsdGluZ1xub2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgY2xhc3MuXG5cbldoZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSAidHlwZS5fX25ld19fIiwgdGhlIG9iamVjdCBwcm92aWRlZCBhc1xudGhlIG5hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgc3RhbmRhcmQgUHl0aG9uIGRpY3Rpb25hcnkgYW5kXG50aGUgb3JpZ2luYWwgb2JqZWN0IGlzIGRpc2NhcmRlZC4gVGhlIG5ldyBjb3B5IGJlY29tZXMgdGhlICJfX2RpY3RfXyJcbmF0dHJpYnV0ZSBvZiB0aGUgY2xhc3Mgb2JqZWN0LlxuXG5TZWUgYWxzbzogKipQRVAgMzEzNSoqIC0gTmV3IHN1cGVyXG5cbiAgICAgRGVzY3JpYmVzIHRoZSBpbXBsaWNpdCAiX19jbGFzc19fIiBjbG9zdXJlIHJlZmVyZW5jZVxuXG5cbk1ldGFjbGFzcyBleGFtcGxlXG4tLS0tLS0tLS0tLS0tLS0tLVxuXG5UaGUgcG90ZW50aWFsIHVzZXMgZm9yIG1ldGFjbGFzc2VzIGFyZSBib3VuZGxlc3MuIFNvbWUgaWRlYXMgdGhhdCBoYXZlXG5iZWVuIGV4cGxvcmVkIGluY2x1ZGUgbG9nZ2luZywgaW50ZXJmYWNlIGNoZWNraW5nLCBhdXRvbWF0aWNcbmRlbGVnYXRpb24sIGF1dG9tYXRpYyBwcm9wZXJ0eSBjcmVhdGlvbiwgcHJveGllcywgZnJhbWV3b3JrcywgYW5kXG5hdXRvbWF0aWMgcmVzb3VyY2UgbG9ja2luZy9zeW5jaHJvbml6YXRpb24uXG5cbkhlcmUgaXMgYW4gZXhhbXBsZSBvZiBhIG1ldGFjbGFzcyB0aGF0IHVzZXMgYW5cbiJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIgdG8gcmVtZW1iZXIgdGhlIG9yZGVyIHRoYXQgY2xhc3MgdmFyaWFibGVzXG5hcmUgZGVmaW5lZDpcblxuICAgY2xhc3MgT3JkZXJlZENsYXNzKHR5cGUpOlxuXG4gICAgICAgQGNsYXNzbWV0aG9kXG4gICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXR1cm4gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKVxuXG4gICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlLCAqKmt3ZHMpOlxuICAgICAgICAgICByZXN1bHQgPSB0eXBlLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgZGljdChuYW1lc3BhY2UpKVxuICAgICAgICAgICByZXN1bHQubWVtYmVycyA9IHR1cGxlKG5hbWVzcGFjZSlcbiAgICAgICAgICAgcmV0dXJuIHJlc3VsdFxuXG4gICBjbGFzcyBBKG1ldGFjbGFzcz1PcmRlcmVkQ2xhc3MpOlxuICAgICAgIGRlZiBvbmUoc2VsZik6IHBhc3NcbiAgICAgICBkZWYgdHdvKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIHRocmVlKHNlbGYpOiBwYXNzXG4gICAgICAgZGVmIGZvdXIoc2VsZik6IHBhc3NcblxuICAgPj4+IEEubWVtYmVyc1xuICAgKFwnX19tb2R1bGVfX1wnLCBcJ29uZVwnLCBcJ3R3b1wnLCBcJ3RocmVlXCcsIFwnZm91clwnKVxuXG5XaGVuIHRoZSBjbGFzcyBkZWZpbml0aW9uIGZvciAqQSogZ2V0cyBleGVjdXRlZCwgdGhlIHByb2Nlc3MgYmVnaW5zXG53aXRoIGNhbGxpbmcgdGhlIG1ldGFjbGFzc1wncyAiX19wcmVwYXJlX18oKSIgbWV0aG9kIHdoaWNoIHJldHVybnMgYW5cbmVtcHR5ICJjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCIuICBUaGF0IG1hcHBpbmcgcmVjb3JkcyB0aGUgbWV0aG9kcyBhbmRcbmF0dHJpYnV0ZXMgb2YgKkEqIGFzIHRoZXkgYXJlIGRlZmluZWQgd2l0aGluIHRoZSBib2R5IG9mIHRoZSBjbGFzc1xuc3RhdGVtZW50LiBPbmNlIHRob3NlIGRlZmluaXRpb25zIGFyZSBleGVjdXRlZCwgdGhlIG9yZGVyZWQgZGljdGlvbmFyeVxuaXMgZnVsbHkgcG9wdWxhdGVkIGFuZCB0aGUgbWV0YWNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCBnZXRzXG5pbnZva2VkLiAgVGhhdCBtZXRob2QgYnVpbGRzIHRoZSBuZXcgdHlwZSBhbmQgaXQgc2F2ZXMgdGhlIG9yZGVyZWRcbmRpY3Rpb25hcnkga2V5cyBpbiBhbiBhdHRyaWJ1dGUgY2FsbGVkICJtZW1iZXJzIi5cblxuXG5DdXN0b21pemluZyBpbnN0YW5jZSBhbmQgc3ViY2xhc3MgY2hlY2tzXG49PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBhcmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBvZiB0aGVcbiJpc2luc3RhbmNlKCkiIGFuZCAiaXNzdWJjbGFzcygpIiBidWlsdC1pbiBmdW5jdGlvbnMuXG5cbkluIHBhcnRpY3VsYXIsIHRoZSBtZXRhY2xhc3MgImFiYy5BQkNNZXRhIiBpbXBsZW1lbnRzIHRoZXNlIG1ldGhvZHMgaW5cbm9yZGVyIHRvIGFsbG93IHRoZSBhZGRpdGlvbiBvZiBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKEFCQ3MpIGFzXG4idmlydHVhbCBiYXNlIGNsYXNzZXMiIHRvIGFueSBjbGFzcyBvciB0eXBlIChpbmNsdWRpbmcgYnVpbHQtaW5cbnR5cGVzKSwgaW5jbHVkaW5nIG90aGVyIEFCQ3MuXG5cbmNsYXNzLl9faW5zdGFuY2VjaGVja19fKHNlbGYsIGluc3RhbmNlKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiAqaW5zdGFuY2UqIHNob3VsZCBiZSBjb25zaWRlcmVkIGEgKGRpcmVjdCBvclxuICAgaW5kaXJlY3QpIGluc3RhbmNlIG9mICpjbGFzcyouIElmIGRlZmluZWQsIGNhbGxlZCB0byBpbXBsZW1lbnRcbiAgICJpc2luc3RhbmNlKGluc3RhbmNlLCBjbGFzcykiLlxuXG5jbGFzcy5fX3N1YmNsYXNzY2hlY2tfXyhzZWxmLCBzdWJjbGFzcylcblxuICAgUmV0dXJuIHRydWUgaWYgKnN1YmNsYXNzKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3Qgb3JcbiAgIGluZGlyZWN0KSBzdWJjbGFzcyBvZiAqY2xhc3MqLiAgSWYgZGVmaW5lZCwgY2FsbGVkIHRvIGltcGxlbWVudFxuICAgImlzc3ViY2xhc3Moc3ViY2xhc3MsIGNsYXNzKSIuXG5cbk5vdGUgdGhhdCB0aGVzZSBtZXRob2RzIGFyZSBsb29rZWQgdXAgb24gdGhlIHR5cGUgKG1ldGFjbGFzcykgb2YgYVxuY2xhc3MuICBUaGV5IGNhbm5vdCBiZSBkZWZpbmVkIGFzIGNsYXNzIG1ldGhvZHMgaW4gdGhlIGFjdHVhbCBjbGFzcy5cblRoaXMgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBsb29rdXAgb2Ygc3BlY2lhbCBtZXRob2RzIHRoYXQgYXJlIGNhbGxlZFxub24gaW5zdGFuY2VzLCBvbmx5IGluIHRoaXMgY2FzZSB0aGUgaW5zdGFuY2UgaXMgaXRzZWxmIGEgY2xhc3MuXG5cblNlZSBhbHNvOiAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcblxuICAgICBJbmNsdWRlcyB0aGUgc3BlY2lmaWNhdGlvbiBmb3IgY3VzdG9taXppbmcgImlzaW5zdGFuY2UoKSIgYW5kXG4gICAgICJpc3N1YmNsYXNzKCkiIGJlaGF2aW9yIHRocm91Z2ggIl9faW5zdGFuY2VjaGVja19fKCkiIGFuZFxuICAgICAiX19zdWJjbGFzc2NoZWNrX18oKSIsIHdpdGggbW90aXZhdGlvbiBmb3IgdGhpcyBmdW5jdGlvbmFsaXR5IGluXG4gICAgIHRoZSBjb250ZXh0IG9mIGFkZGluZyBBYnN0cmFjdCBCYXNlIENsYXNzZXMgKHNlZSB0aGUgImFiYyJcbiAgICAgbW9kdWxlKSB0byB0aGUgbGFuZ3VhZ2UuXG5cblxuRW11bGF0aW5nIGNhbGxhYmxlIG9iamVjdHNcbj09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbm9iamVjdC5fX2NhbGxfXyhzZWxmWywgYXJncy4uLl0pXG5cbiAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiB0aGlzIG1ldGhvZFxuICAgaXMgZGVmaW5lZCwgIngoYXJnMSwgYXJnMiwgLi4uKSIgaXMgYSBzaG9ydGhhbmQgZm9yXG4gICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cblxuXG5FbXVsYXRpbmcgY29udGFpbmVyIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PT09XG5cblRoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBpbXBsZW1lbnQgY29udGFpbmVyIG9iamVjdHMuXG5Db250YWluZXJzIHVzdWFsbHkgYXJlIHNlcXVlbmNlcyAoc3VjaCBhcyBsaXN0cyBvciB0dXBsZXMpIG9yIG1hcHBpbmdzXG4obGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzIHdlbGwuICBUaGVcbmZpcnN0IHNldCBvZiBtZXRob2RzIGlzIHVzZWQgZWl0aGVyIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSBvciB0b1xuZW11bGF0ZSBhIG1hcHBpbmc7IHRoZSBkaWZmZXJlbmNlIGlzIHRoYXQgZm9yIGEgc2VxdWVuY2UsIHRoZVxuYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9IGsgPCBOIiB3aGVyZVxuKk4qIGlzIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlLCBvciBzbGljZSBvYmplY3RzLCB3aGljaCBkZWZpbmUgYVxucmFuZ2Ugb2YgaXRlbXMuICBJdCBpcyBhbHNvIHJlY29tbWVuZGVkIHRoYXQgbWFwcGluZ3MgcHJvdmlkZSB0aGVcbm1ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgImNsZWFyKCkiLFxuInNldGRlZmF1bHQoKSIsICJwb3AoKSIsICJwb3BpdGVtKCkiLCAiY29weSgpIiwgYW5kICJ1cGRhdGUoKSJcbmJlaGF2aW5nIHNpbWlsYXIgdG8gdGhvc2UgZm9yIFB5dGhvblwncyBzdGFuZGFyZCBkaWN0aW9uYXJ5IG9iamVjdHMuXG5UaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciIGFic3RyYWN0IGJhc2VcbmNsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICJfX2dldGl0ZW1fXygpIixcbiJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgc2VxdWVuY2VzXG5zaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAiZXh0ZW5kKCkiLFxuImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCBsaWtlIFB5dGhvblxuc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkIGltcGxlbWVudFxuYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uIChtZWFuaW5nXG5yZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgIl9fcmFkZF9fKCkiLFxuIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgZGVzY3JpYmVkXG5iZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXQgaXNcbnJlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbiJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgb3BlcmF0b3I7XG5mb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3Igc2VxdWVuY2VzLCBpdFxuc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkIHRoYXQgYm90aFxubWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgdG8gYWxsb3dcbmVmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICJfX2l0ZXJfXygpIlxuc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgaXRlcmF0ZVxudGhyb3VnaCB0aGUgdmFsdWVzLlxuXG5vYmplY3QuX19sZW5fXyhzZWxmKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgU2hvdWxkIHJldHVyblxuICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuIG9iamVjdCB0aGF0XG4gICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAiX19sZW5fXygpIiBtZXRob2RcbiAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiBjb250ZXh0LlxuXG5vYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG5cbiAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgcmV0dXJuIGFuXG4gICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciBvciBsZXNzIHRoYW5cbiAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAwLiBUaGlzXG4gICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgZm9yXG4gICBjb3JyZWN0bmVzcy5cblxuICAgTmV3IGluIHZlcnNpb24gMy40LlxuXG5Ob3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlIG1ldGhvZHMuXG4gIEEgY2FsbCBsaWtlXG5cbiAgICAgYVsxOjJdID0gYlxuXG4gIGlzIHRyYW5zbGF0ZWQgdG9cblxuICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcblxuICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluIHdpdGggIk5vbmUiLlxuXG5vYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciBzZXF1ZW5jZSB0eXBlcyxcbiAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy4gIE5vdGUgdGhhdFxuICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlIGNsYXNzIHdpc2hlc1xuICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgcmFpc2VkOyBpZiBvZlxuICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlIChhZnRlciBhbnlcbiAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluIHRoZVxuICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuXG4gICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSByYWlzZWQgZm9yXG4gICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgdGhlXG4gICAgIHNlcXVlbmNlLlxuXG5vYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgInNlbGZba2V5XSIgZm9yIGRpY3RcbiAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5vYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSBub3RlIGFzIGZvclxuICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiBuZXcga2V5c1xuICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSByZXBsYWNlZC4gIFRoZVxuICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3JcbiAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuXG5vYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlIGFzIGZvclxuICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgbWFwcGluZ3MgaWZcbiAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzXG4gICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgc2hvdWxkIGJlXG4gICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG5cbm9iamVjdC5fX2l0ZXJfXyhzZWxmKVxuXG4gICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSBjb250YWluZXIuXG4gICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiBpdGVyYXRlXG4gICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCBzaG91bGRcbiAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuXG4gICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgYXJlXG4gICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGl0ZXJhdG9yXG4gICBvYmplY3RzLCBzZWUgKkl0ZXJhdG9yIFR5cGVzKi5cblxub2JqZWN0Ll9fcmV2ZXJzZWRfXyhzZWxmKVxuXG4gICBDYWxsZWQgKGlmIHByZXNlbnQpIGJ5IHRoZSAicmV2ZXJzZWQoKSIgYnVpbHQtaW4gdG8gaW1wbGVtZW50XG4gICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3Igb2JqZWN0IHRoYXRcbiAgIGl0ZXJhdGVzIG92ZXIgYWxsIHRoZSBvYmplY3RzIGluIHRoZSBjb250YWluZXIgaW4gcmV2ZXJzZSBvcmRlci5cblxuICAgSWYgdGhlICJfX3JldmVyc2VkX18oKSIgbWV0aG9kIGlzIG5vdCBwcm92aWRlZCwgdGhlICJyZXZlcnNlZCgpIlxuICAgYnVpbHQtaW4gd2lsbCBmYWxsIGJhY2sgdG8gdXNpbmcgdGhlIHNlcXVlbmNlIHByb3RvY29sICgiX19sZW5fXygpIlxuICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgc2VxdWVuY2UgcHJvdG9jb2xcbiAgIHNob3VsZCBvbmx5IHByb3ZpZGUgIl9fcmV2ZXJzZWRfXygpIiBpZiB0aGV5IGNhbiBwcm92aWRlIGFuXG4gICBpbXBsZW1lbnRhdGlvbiB0aGF0IGlzIG1vcmUgZWZmaWNpZW50IHRoYW4gdGhlIG9uZSBwcm92aWRlZCBieVxuICAgInJldmVyc2VkKCkiLlxuXG5UaGUgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycyAoImluIiBhbmQgIm5vdCBpbiIpIGFyZSBub3JtYWxseVxuaW1wbGVtZW50ZWQgYXMgYW4gaXRlcmF0aW9uIHRocm91Z2ggYSBzZXF1ZW5jZS4gIEhvd2V2ZXIsIGNvbnRhaW5lclxub2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhIG1vcmUgZWZmaWNpZW50XG5pbXBsZW1lbnRhdGlvbiwgd2hpY2ggYWxzbyBkb2VzIG5vdCByZXF1aXJlIHRoZSBvYmplY3QgYmUgYSBzZXF1ZW5jZS5cblxub2JqZWN0Ll9fY29udGFpbnNfXyhzZWxmLCBpdGVtKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMuICBTaG91bGQgcmV0dXJuIHRydWVcbiAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nIG9iamVjdHMsIHRoaXNcbiAgIHNob3VsZCBjb25zaWRlciB0aGUga2V5cyBvZiB0aGUgbWFwcGluZyByYXRoZXIgdGhhbiB0aGUgdmFsdWVzIG9yXG4gICB0aGUga2V5LWl0ZW0gcGFpcnMuXG5cbiAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgbWVtYmVyc2hpcCB0ZXN0XG4gICBmaXJzdCB0cmllcyBpdGVyYXRpb24gdmlhICJfX2l0ZXJfXygpIiwgdGhlbiB0aGUgb2xkIHNlcXVlbmNlXG4gICBpdGVyYXRpb24gcHJvdG9jb2wgdmlhICJfX2dldGl0ZW1fXygpIiwgc2VlICp0aGlzIHNlY3Rpb24gaW4gdGhlXG4gICBsYW5ndWFnZSByZWZlcmVuY2UqLlxuXG5cbkVtdWxhdGluZyBudW1lcmljIHR5cGVzXG49PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gZW11bGF0ZSBudW1lcmljIG9iamVjdHMuXG5NZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkIGJ5IHRoZVxucGFydGljdWxhciBraW5kIG9mIG51bWJlciBpbXBsZW1lbnRlZCAoZS5nLiwgYml0d2lzZSBvcGVyYXRpb25zIGZvclxubm9uLWludGVncmFsIG51bWJlcnMpIHNob3VsZCBiZSBsZWZ0IHVuZGVmaW5lZC5cblxub2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19zdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX211bF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX190cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19mbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19kaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Bvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbm9iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19hbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxub2JqZWN0Ll9fb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5IGFyaXRobWV0aWNcbiAgIG9wZXJhdGlvbnMgKCIrIiwgIi0iLCAiKiIsICJAIiwgIi8iLCAiLy8iLCAiJSIsICJkaXZtb2QoKSIsXG4gICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKS4gIEZvciBpbnN0YW5jZSwgdG9cbiAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhXG4gICBjbGFzcyB0aGF0IGhhcyBhbiAiX19hZGRfXygpIiBtZXRob2QsICJ4Ll9fYWRkX18oeSkiIGlzIGNhbGxlZC5cbiAgIFRoZSAiX19kaXZtb2RfXygpIiBtZXRob2Qgc2hvdWxkIGJlIHRoZSBlcXVpdmFsZW50IHRvIHVzaW5nXG4gICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSByZWxhdGVkIHRvXG4gICAiX190cnVlZGl2X18oKSIuICBOb3RlIHRoYXQgIl9fcG93X18oKSIgc2hvdWxkIGJlIGRlZmluZWQgdG8gYWNjZXB0XG4gICBhbiBvcHRpb25hbCB0aGlyZCBhcmd1bWVudCBpZiB0aGUgdGVybmFyeSB2ZXJzaW9uIG9mIHRoZSBidWlsdC1pblxuICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG5cbiAgIElmIG9uZSBvZiB0aG9zZSBtZXRob2RzIGRvZXMgbm90IHN1cHBvcnQgdGhlIG9wZXJhdGlvbiB3aXRoIHRoZVxuICAgc3VwcGxpZWQgYXJndW1lbnRzLCBpdCBzaG91bGQgcmV0dXJuICJOb3RJbXBsZW1lbnRlZCIuXG5cbm9iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19yZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JkaXZtb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jwb3dfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jyc2hpZnRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3JhbmRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX3Jvcl9fKHNlbGYsIG90aGVyKVxuXG4gICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgYXJpdGhtZXRpY1xuICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgImRpdm1vZCgpIixcbiAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpIHdpdGggcmVmbGVjdGVkIChzd2FwcGVkKVxuICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0IG9wZXJhbmQgZG9lc1xuICAgbm90IHN1cHBvcnQgdGhlIGNvcnJlc3BvbmRpbmcgb3BlcmF0aW9uIGFuZCB0aGUgb3BlcmFuZHMgYXJlIG9mXG4gICBkaWZmZXJlbnQgdHlwZXMuIFsyXSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4IC1cbiAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAiX19yc3ViX18oKSJcbiAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiByZXR1cm5zXG4gICAqTm90SW1wbGVtZW50ZWQqLlxuXG4gICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICJfX3Jwb3dfXygpIiAodGhlXG4gICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cblxuICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmRcJ3MgdHlwZSBpcyBhIHN1YmNsYXNzIG9mIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3MgdHlwZSBhbmQgdGhhdCBzdWJjbGFzcyBwcm92aWRlcyB0aGUgcmVmbGVjdGVkIG1ldGhvZFxuICAgICBmb3IgdGhlIG9wZXJhdGlvbiwgdGhpcyBtZXRob2Qgd2lsbCBiZSBjYWxsZWQgYmVmb3JlIHRoZSBsZWZ0XG4gICAgIG9wZXJhbmRcJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyBzdWJjbGFzc2VzXG4gICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9yc1wnIG9wZXJhdGlvbnMuXG5cbm9iamVjdC5fX2lhZGRfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltYXRtdWxfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pZmxvb3JkaXZfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2ltb2RfXyhzZWxmLCBvdGhlcilcbm9iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG5vYmplY3QuX19pbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pcnNoaWZ0X18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19peG9yX18oc2VsZiwgb3RoZXIpXG5vYmplY3QuX19pb3JfXyhzZWxmLCBvdGhlcilcblxuICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYXVnbWVudGVkIGFyaXRobWV0aWNcbiAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgIioqPSIsXG4gICAiPDw9IiwgIj4+PSIsICImPSIsICJePSIsICJ8PSIpLiAgVGhlc2UgbWV0aG9kcyBzaG91bGQgYXR0ZW1wdCB0b1xuICAgZG8gdGhlIG9wZXJhdGlvbiBpbi1wbGFjZSAobW9kaWZ5aW5nICpzZWxmKikgYW5kIHJldHVybiB0aGUgcmVzdWx0XG4gICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSBzcGVjaWZpY1xuICAgbWV0aG9kIGlzIG5vdCBkZWZpbmVkLCB0aGUgYXVnbWVudGVkIGFzc2lnbm1lbnQgZmFsbHMgYmFjayB0byB0aGVcbiAgIG5vcm1hbCBtZXRob2RzLiAgRm9yIGluc3RhbmNlLCBpZiAqeCogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzc1xuICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICJ4ID1cbiAgIHguX19pYWRkX18oeSkiIC4gT3RoZXJ3aXNlLCAieC5fX2FkZF9fKHkpIiBhbmQgInkuX19yYWRkX18oeCkiIGFyZVxuICAgY29uc2lkZXJlZCwgYXMgd2l0aCB0aGUgZXZhbHVhdGlvbiBvZiAieCArIHkiLiBJbiBjZXJ0YWluXG4gICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluIHVuZXhwZWN0ZWQgZXJyb3JzXG4gICAoc2VlICpXaHkgZG9lcyBhX3R1cGxlW2ldICs9IFtcJ2l0ZW1cJ10gcmFpc2UgYW4gZXhjZXB0aW9uIHdoZW4gdGhlXG4gICBhZGRpdGlvbiB3b3Jrcz8qKSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mIHRoZSBkYXRhXG4gICBtb2RlbC5cblxub2JqZWN0Ll9fbmVnX18oc2VsZilcbm9iamVjdC5fX3Bvc19fKHNlbGYpXG5vYmplY3QuX19hYnNfXyhzZWxmKVxub2JqZWN0Ll9faW52ZXJ0X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICgiLSIsICIrIixcbiAgICJhYnMoKSIgYW5kICJ+IikuXG5cbm9iamVjdC5fX2NvbXBsZXhfXyhzZWxmKVxub2JqZWN0Ll9faW50X18oc2VsZilcbm9iamVjdC5fX2Zsb2F0X18oc2VsZilcbm9iamVjdC5fX3JvdW5kX18oc2VsZlssIG5dKVxuXG4gICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICJpbnQoKSIsXG4gICAiZmxvYXQoKSIgYW5kICJyb3VuZCgpIi4gIFNob3VsZCByZXR1cm4gYSB2YWx1ZSBvZiB0aGUgYXBwcm9wcmlhdGVcbiAgIHR5cGUuXG5cbm9iamVjdC5fX2luZGV4X18oc2VsZilcblxuICAgQ2FsbGVkIHRvIGltcGxlbWVudCAib3BlcmF0b3IuaW5kZXgoKSIsIGFuZCB3aGVuZXZlciBQeXRob24gbmVlZHNcbiAgIHRvIGxvc3NsZXNzbHkgY29udmVydCB0aGUgbnVtZXJpYyBvYmplY3QgdG8gYW4gaW50ZWdlciBvYmplY3QgKHN1Y2hcbiAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAib2N0KCkiXG4gICBmdW5jdGlvbnMpLiBQcmVzZW5jZSBvZiB0aGlzIG1ldGhvZCBpbmRpY2F0ZXMgdGhhdCB0aGUgbnVtZXJpY1xuICAgb2JqZWN0IGlzIGFuIGludGVnZXIgdHlwZS4gIE11c3QgcmV0dXJuIGFuIGludGVnZXIuXG5cbiAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsIHdoZW5cbiAgICAgIl9faW5kZXhfXygpIiBpcyBkZWZpbmVkICJfX2ludF9fKCkiIHNob3VsZCBhbHNvIGJlIGRlZmluZWQsIGFuZFxuICAgICBib3RoIHNob3VsZCByZXR1cm4gdGhlIHNhbWUgdmFsdWUuXG5cblxuV2l0aCBTdGF0ZW1lbnQgQ29udGV4dCBNYW5hZ2Vyc1xuPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5BICpjb250ZXh0IG1hbmFnZXIqIGlzIGFuIG9iamVjdCB0aGF0IGRlZmluZXMgdGhlIHJ1bnRpbWUgY29udGV4dCB0b1xuYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgY29udGV4dCBtYW5hZ2VyXG5oYW5kbGVzIHRoZSBlbnRyeSBpbnRvLCBhbmQgdGhlIGV4aXQgZnJvbSwgdGhlIGRlc2lyZWQgcnVudGltZSBjb250ZXh0XG5mb3IgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgYmxvY2sgb2YgY29kZS4gIENvbnRleHQgbWFuYWdlcnMgYXJlIG5vcm1hbGx5XG5pbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAqVGhlIHdpdGhcbnN0YXRlbWVudCopLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyB0aGVpciBtZXRob2RzLlxuXG5UeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgcmVzdG9yaW5nIHZhcmlvdXNcbmtpbmRzIG9mIGdsb2JhbCBzdGF0ZSwgbG9ja2luZyBhbmQgdW5sb2NraW5nIHJlc291cmNlcywgY2xvc2luZyBvcGVuZWRcbmZpbGVzLCBldGMuXG5cbkZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSAqQ29udGV4dCBNYW5hZ2VyIFR5cGVzKi5cblxub2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuXG4gICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAid2l0aCJcbiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2RcJ3MgcmV0dXJuIHZhbHVlIHRvIHRoZSB0YXJnZXQocylcbiAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgYW55LlxuXG5vYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuXG4gICBFeGl0IHRoZSBydW50aW1lIGNvbnRleHQgcmVsYXRlZCB0byB0aGlzIG9iamVjdC4gVGhlIHBhcmFtZXRlcnNcbiAgIGRlc2NyaWJlIHRoZSBleGNlcHRpb24gdGhhdCBjYXVzZWQgdGhlIGNvbnRleHQgdG8gYmUgZXhpdGVkLiBJZiB0aGVcbiAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlIGFyZ3VtZW50cyB3aWxsXG4gICBiZSAiTm9uZSIuXG5cbiAgIElmIGFuIGV4Y2VwdGlvbiBpcyBzdXBwbGllZCwgYW5kIHRoZSBtZXRob2Qgd2lzaGVzIHRvIHN1cHByZXNzIHRoZVxuICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksIGl0IHNob3VsZFxuICAgcmV0dXJuIGEgdHJ1ZSB2YWx1ZS4gT3RoZXJ3aXNlLCB0aGUgZXhjZXB0aW9uIHdpbGwgYmUgcHJvY2Vzc2VkXG4gICBub3JtYWxseSB1cG9uIGV4aXQgZnJvbSB0aGlzIG1ldGhvZC5cblxuICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgcGFzc2VkLWluXG4gICBleGNlcHRpb247IHRoaXMgaXMgdGhlIGNhbGxlclwncyByZXNwb25zaWJpbGl0eS5cblxuU2VlIGFsc286ICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcblxuICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICJ3aXRoIlxuICAgICBzdGF0ZW1lbnQuXG5cblxuU3BlY2lhbCBtZXRob2QgbG9va3VwXG49PT09PT09PT09PT09PT09PT09PT1cblxuRm9yIGN1c3RvbSBjbGFzc2VzLCBpbXBsaWNpdCBpbnZvY2F0aW9ucyBvZiBzcGVjaWFsIG1ldGhvZHMgYXJlIG9ubHlcbmd1YXJhbnRlZWQgdG8gd29yayBjb3JyZWN0bHkgaWYgZGVmaW5lZCBvbiBhbiBvYmplY3RcJ3MgdHlwZSwgbm90IGluXG50aGUgb2JqZWN0XCdzIGluc3RhbmNlIGRpY3Rpb25hcnkuICBUaGF0IGJlaGF2aW91ciBpcyB0aGUgcmVhc29uIHdoeVxudGhlIGZvbGxvd2luZyBjb2RlIHJhaXNlcyBhbiBleGNlcHRpb246XG5cbiAgID4+PiBjbGFzcyBDOlxuICAgLi4uICAgICBwYXNzXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fID0gbGFtYmRhOiA1XG4gICA+Pj4gbGVuKGMpXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBUeXBlRXJyb3I6IG9iamVjdCBvZiB0eXBlIFwnQ1wnIGhhcyBubyBsZW4oKVxuXG5UaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2Ygc3BlY2lhbFxubWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlIGltcGxlbWVudGVkIGJ5XG5hbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCBvZiB0aGVzZVxubWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgZmFpbCB3aGVuXG5pbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG5cbiAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbiAgIFRydWVcbiAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbiAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbiAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciBcJ19faGFzaF9fXCcgb2YgXCdpbnRcJyBvYmplY3QgbmVlZHMgYW4gYXJndW1lbnRcblxuSW5jb3JyZWN0bHkgYXR0ZW1wdGluZyB0byBpbnZva2UgYW4gdW5ib3VuZCBtZXRob2Qgb2YgYSBjbGFzcyBpbiB0aGlzXG53YXkgaXMgc29tZXRpbWVzIHJlZmVycmVkIHRvIGFzIFwnbWV0YWNsYXNzIGNvbmZ1c2lvblwnLCBhbmQgaXMgYXZvaWRlZFxuYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuXG4gICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4gICBUcnVlXG4gICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4gICBUcnVlXG5cbkluIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgaW50ZXJlc3Qgb2ZcbmNvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gYnlwYXNzZXNcbnRoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzIG1ldGFjbGFzczpcblxuICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbiAgIC4uLlxuICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4gICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4gICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbiAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4gICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4gICAuLi5cbiAgID4+PiBjID0gQygpXG4gICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSBpbnN0YW5jZVxuICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSB0eXBlXG4gICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbiAgIDEwXG4gICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4gICAxMFxuXG5CeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gcHJvdmlkZXNcbnNpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgaW50ZXJwcmV0ZXIsIGF0XG50aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsIG1ldGhvZHMgKHRoZVxuc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiBvcmRlciB0byBiZVxuY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cbicsCi0gJ3N0cmluZy1tZXRob2RzJzogdSdcblN0cmluZyBNZXRob2RzXG4qKioqKioqKioqKioqKlxuXG5TdHJpbmdzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMsIGFsb25nIHdpdGhcbnRoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuXG5TdHJpbmdzIGFsc28gc3VwcG9ydCB0d28gc3R5bGVzIG9mIHN0cmluZyBmb3JtYXR0aW5nLCBvbmUgcHJvdmlkaW5nIGFcbmxhcmdlIGRlZ3JlZSBvZiBmbGV4aWJpbGl0eSBhbmQgY3VzdG9taXphdGlvbiAoc2VlICJzdHIuZm9ybWF0KCkiLFxuKkZvcm1hdCBTdHJpbmcgU3ludGF4KiBhbmQgKkN1c3RvbSBTdHJpbmcgRm9ybWF0dGluZyopIGFuZCB0aGUgb3RoZXJcbmJhc2VkIG9uIEMgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciByYW5nZSBvZlxudHlwZXMgYW5kIGlzIHNsaWdodGx5IGhhcmRlciB0byB1c2UgY29ycmVjdGx5LCBidXQgaXMgb2Z0ZW4gZmFzdGVyIGZvclxudGhlIGNhc2VzIGl0IGNhbiBoYW5kbGUgKCpwcmludGYtc3R5bGUgU3RyaW5nIEZvcm1hdHRpbmcqKS5cblxuVGhlICpUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMqIHNlY3Rpb24gb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgY292ZXJzXG5hIG51bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCB1dGlsaXRpZXNcbihpbmNsdWRpbmcgcmVndWxhciBleHByZXNzaW9uIHN1cHBvcnQgaW4gdGhlICJyZSIgbW9kdWxlKS5cblxuc3RyLmNhcGl0YWxpemUoKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBpdHMgZmlyc3QgY2hhcmFjdGVyIGNhcGl0YWxpemVkXG4gICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cblxuc3RyLmNhc2Vmb2xkKClcblxuICAgUmV0dXJuIGEgY2FzZWZvbGRlZCBjb3B5IG9mIHRoZSBzdHJpbmcuIENhc2Vmb2xkZWQgc3RyaW5ncyBtYXkgYmVcbiAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuXG4gICBDYXNlZm9sZGluZyBpcyBzaW1pbGFyIHRvIGxvd2VyY2FzaW5nIGJ1dCBtb3JlIGFnZ3Jlc3NpdmUgYmVjYXVzZVxuICAgaXQgaXMgaW50ZW5kZWQgdG8gcmVtb3ZlIGFsbCBjYXNlIGRpc3RpbmN0aW9ucyBpbiBhIHN0cmluZy4gRm9yXG4gICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnXHhkZlwnIiBpcyBlcXVpdmFsZW50IHRvICIic3MiIi5cbiAgIFNpbmNlIGl0IGlzIGFscmVhZHkgbG93ZXJjYXNlLCAibG93ZXIoKSIgd291bGQgZG8gbm90aGluZyB0byAiXCdceGRmXCciO1xuICAgImNhc2Vmb2xkKCkiIGNvbnZlcnRzIGl0IHRvICIic3MiIi5cblxuICAgVGhlIGNhc2Vmb2xkaW5nIGFsZ29yaXRobSBpcyBkZXNjcmliZWQgaW4gc2VjdGlvbiAzLjEzIG9mIHRoZVxuICAgVW5pY29kZSBTdGFuZGFyZC5cblxuICAgTmV3IGluIHZlcnNpb24gMy4zLlxuXG5zdHIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKVxuXG4gICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgaXMgZG9uZVxuICAgdXNpbmcgdGhlIHNwZWNpZmllZCAqZmlsbGNoYXIqIChkZWZhdWx0IGlzIGFuIEFTQ0lJIHNwYWNlKS4gVGhlXG4gICBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG9cbiAgICJsZW4ocykiLlxuXG5zdHIuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqc3ViKlxuICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmRcbiAgICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblxuc3RyLmVuY29kZShlbmNvZGluZz0idXRmLTgiLCBlcnJvcnM9InN0cmljdCIpXG5cbiAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzIG9iamVjdC4gRGVmYXVsdFxuICAgZW5jb2RpbmcgaXMgIlwndXRmLThcJyIuICplcnJvcnMqIG1heSBiZSBnaXZlbiB0byBzZXQgYSBkaWZmZXJlbnRcbiAgIGVycm9yIGhhbmRsaW5nIHNjaGVtZS4gVGhlIGRlZmF1bHQgZm9yICplcnJvcnMqIGlzICJcJ3N0cmljdFwnIixcbiAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gT3RoZXIgcG9zc2libGVcbiAgIHZhbHVlcyBhcmUgIlwnaWdub3JlXCciLCAiXCdyZXBsYWNlXCciLCAiXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbiAgICJcJ2JhY2tzbGFzaHJlcGxhY2VcJyIgYW5kIGFueSBvdGhlciBuYW1lIHJlZ2lzdGVyZWQgdmlhXG4gICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiAqRXJyb3IgSGFuZGxlcnMqLiBGb3IgYSBsaXN0XG4gICBvZiBwb3NzaWJsZSBlbmNvZGluZ3MsIHNlZSBzZWN0aW9uICpTdGFuZGFyZCBFbmNvZGluZ3MqLlxuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBrZXl3b3JkIGFyZ3VtZW50cyBhZGRlZC5cblxuc3RyLmVuZHN3aXRoKHN1ZmZpeFssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIFJldHVybiAiVHJ1ZSIgaWYgdGhlIHN0cmluZyBlbmRzIHdpdGggdGhlIHNwZWNpZmllZCAqc3VmZml4KixcbiAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2Ygc3VmZml4ZXNcbiAgIHRvIGxvb2sgZm9yLiAgV2l0aCBvcHRpb25hbCAqc3RhcnQqLCB0ZXN0IGJlZ2lubmluZyBhdCB0aGF0XG4gICBwb3NpdGlvbi4gIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5leHBhbmR0YWJzKHRhYnNpemU9OClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyBhcmUgcmVwbGFjZWRcbiAgIGJ5IG9uZSBvciBtb3JlIHNwYWNlcywgZGVwZW5kaW5nIG9uIHRoZSBjdXJyZW50IGNvbHVtbiBhbmQgdGhlXG4gICBnaXZlbiB0YWIgc2l6ZS4gIFRhYiBwb3NpdGlvbnMgb2NjdXIgZXZlcnkgKnRhYnNpemUqIGNoYXJhY3RlcnNcbiAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgYW5kIHNvIG9uKS5cbiAgIFRvIGV4cGFuZCB0aGUgc3RyaW5nLCB0aGUgY3VycmVudCBjb2x1bW4gaXMgc2V0IHRvIHplcm8gYW5kIHRoZVxuICAgc3RyaW5nIGlzIGV4YW1pbmVkIGNoYXJhY3RlciBieSBjaGFyYWN0ZXIuICBJZiB0aGUgY2hhcmFjdGVyIGlzIGFcbiAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCBpbiB0aGUgcmVzdWx0XG4gICB1bnRpbCB0aGUgY3VycmVudCBjb2x1bW4gaXMgZXF1YWwgdG8gdGhlIG5leHQgdGFiIHBvc2l0aW9uLiAoVGhlXG4gICB0YWIgY2hhcmFjdGVyIGl0c2VsZiBpcyBub3QgY29waWVkLikgIElmIHRoZSBjaGFyYWN0ZXIgaXMgYSBuZXdsaW5lXG4gICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50IGNvbHVtbiBpc1xuICAgcmVzZXQgdG8gemVyby4gIEFueSBvdGhlciBjaGFyYWN0ZXIgaXMgY29waWVkIHVuY2hhbmdlZCBhbmQgdGhlXG4gICBjdXJyZW50IGNvbHVtbiBpcyBpbmNyZW1lbnRlZCBieSBvbmUgcmVnYXJkbGVzcyBvZiBob3cgdGhlXG4gICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoKVxuICAgXCcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNFwnXG4gICA+Pj4gXCcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNFwnLmV4cGFuZHRhYnMoNClcbiAgIFwnMDEgIDAxMiAwMTIzICAgIDAxMjM0XCdcblxuc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gdGhlIHN0cmluZyB3aGVyZSBzdWJzdHJpbmcgKnN1YiogaXNcbiAgIGZvdW5kIHdpdGhpbiB0aGUgc2xpY2UgInNbc3RhcnQ6ZW5kXSIuICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KlxuICAgYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4gIFJldHVybiAiLTEiIGlmXG4gICAqc3ViKiBpcyBub3QgZm91bmQuXG5cbiAgIE5vdGU6IFRoZSAiZmluZCgpIiBtZXRob2Qgc2hvdWxkIGJlIHVzZWQgb25seSBpZiB5b3UgbmVlZCB0byBrbm93XG4gICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgc3Vic3RyaW5nIG9yIG5vdCxcbiAgICAgdXNlIHRoZSAiaW4iIG9wZXJhdG9yOlxuXG4gICAgICAgID4+PiBcJ1B5XCcgaW4gXCdQeXRob25cJ1xuICAgICAgICBUcnVlXG5cbnN0ci5mb3JtYXQoKmFyZ3MsICoqa3dhcmdzKVxuXG4gICBQZXJmb3JtIGEgc3RyaW5nIGZvcm1hdHRpbmcgb3BlcmF0aW9uLiAgVGhlIHN0cmluZyBvbiB3aGljaCB0aGlzXG4gICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciByZXBsYWNlbWVudCBmaWVsZHNcbiAgIGRlbGltaXRlZCBieSBicmFjZXMgInt9Ii4gIEVhY2ggcmVwbGFjZW1lbnQgZmllbGQgY29udGFpbnMgZWl0aGVyXG4gICB0aGUgbnVtZXJpYyBpbmRleCBvZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQsIG9yIHRoZSBuYW1lIG9mIGFcbiAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGVhY2hcbiAgIHJlcGxhY2VtZW50IGZpZWxkIGlzIHJlcGxhY2VkIHdpdGggdGhlIHN0cmluZyB2YWx1ZSBvZiB0aGVcbiAgIGNvcnJlc3BvbmRpbmcgYXJndW1lbnQuXG5cbiAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4gICBcJ1RoZSBzdW0gb2YgMSArIDIgaXMgM1wnXG5cbiAgIFNlZSAqRm9ybWF0IFN0cmluZyBTeW50YXgqIGZvciBhIGRlc2NyaXB0aW9uIG9mIHRoZSB2YXJpb3VzXG4gICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCBzdHJpbmdzLlxuXG5zdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuXG4gICBTaW1pbGFyIHRvICJzdHIuZm9ybWF0KCoqbWFwcGluZykiLCBleGNlcHQgdGhhdCAibWFwcGluZyIgaXMgdXNlZFxuICAgZGlyZWN0bHkgYW5kIG5vdCBjb3BpZWQgdG8gYSAiZGljdCIuICBUaGlzIGlzIHVzZWZ1bCBpZiBmb3IgZXhhbXBsZVxuICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcblxuICAgPj4+IGNsYXNzIERlZmF1bHQoZGljdCk6XG4gICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgLi4uICAgICAgICAgcmV0dXJuIGtleVxuICAgLi4uXG4gICA+Pj4gXCd7bmFtZX0gd2FzIGJvcm4gaW4ge2NvdW50cnl9XCcuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9XCdHdWlkb1wnKSlcbiAgIFwnR3VpZG8gd2FzIGJvcm4gaW4gY291bnRyeVwnXG5cbiAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cblxuc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG5cbiAgIExpa2UgImZpbmQoKSIsIGJ1dCByYWlzZSAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdFxuICAgZm91bmQuXG5cbnN0ci5pc2FsbnVtKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgYWxwaGFudW1lcmljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQSBjaGFyYWN0ZXIgImMiXG4gICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAiVHJ1ZSI6XG4gICAiYy5pc2FscGhhKCkiLCAiYy5pc2RlY2ltYWwoKSIsICJjLmlzZGlnaXQoKSIsIG9yICJjLmlzbnVtZXJpYygpIi5cblxuc3RyLmlzYWxwaGEoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBhbHBoYWJldGljIGFuZFxuICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgQWxwaGFiZXRpY1xuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlclxuICAgZGF0YWJhc2UgYXMgIkxldHRlciIsIGkuZS4sIHRob3NlIHdpdGggZ2VuZXJhbCBjYXRlZ29yeSBwcm9wZXJ0eVxuICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlIHRoYXQgdGhpcyBpc1xuICAgZGlmZmVyZW50IGZyb20gdGhlICJBbHBoYWJldGljIiBwcm9wZXJ0eSBkZWZpbmVkIGluIHRoZSBVbmljb2RlXG4gICBTdGFuZGFyZC5cblxuc3RyLmlzZGVjaW1hbCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRlY2ltYWwgY2hhcmFjdGVyc1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gRGVjaW1hbFxuICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgY2F0ZWdvcnlcbiAgIGluY2x1ZGVzIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGNhbiBiZSB1c2VkIHRvXG4gICBmb3JtIGRlY2ltYWwtcmFkaXggbnVtYmVycywgZS5nLiBVKzA2NjAsIEFSQUJJQy1JTkRJQyBESUdJVCBaRVJPLlxuXG5zdHIuaXNkaWdpdCgpXG5cbiAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyBhbmQgdGhlcmUgaXNcbiAgIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIERpZ2l0cyBpbmNsdWRlIGRlY2ltYWxcbiAgIGNoYXJhY3RlcnMgYW5kIGRpZ2l0cyB0aGF0IG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc3VjaCBhcyB0aGVcbiAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgYSBjaGFyYWN0ZXJcbiAgIHRoYXQgaGFzIHRoZSBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQgb3JcbiAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuXG5zdHIuaXNpZGVudGlmaWVyKClcblxuICAgUmV0dXJuIHRydWUgaWYgdGhlIHN0cmluZyBpcyBhIHZhbGlkIGlkZW50aWZpZXIgYWNjb3JkaW5nIHRvIHRoZVxuICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiAqSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzKi5cblxuICAgVXNlICJrZXl3b3JkLmlza2V5d29yZCgpIiB0byB0ZXN0IGZvciByZXNlcnZlZCBpZGVudGlmaWVycyBzdWNoIGFzXG4gICAiZGVmIiBhbmQgImNsYXNzIi5cblxuc3RyLmlzbG93ZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgbG93ZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuaXNudW1lcmljKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgbnVtZXJpYyBjaGFyYWN0ZXJzLFxuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gTnVtZXJpY1xuICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyB0aGF0IGhhdmVcbiAgIHRoZSBVbmljb2RlIG51bWVyaWMgdmFsdWUgcHJvcGVydHksIGUuZy4gVSsyMTU1LCBWVUxHQVIgRlJBQ1RJT05cbiAgIE9ORSBGSUZUSC4gIEZvcm1hbGx5LCBudW1lcmljIGNoYXJhY3RlcnMgYXJlIHRob3NlIHdpdGggdGhlXG4gICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsIG9yXG4gICBOdW1lcmljX1R5cGU9TnVtZXJpYy5cblxuc3RyLmlzcHJpbnRhYmxlKClcblxuICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgcHJpbnRhYmxlIG9yIHRoZVxuICAgc3RyaW5nIGlzIGVtcHR5LCBmYWxzZSBvdGhlcndpc2UuICBOb25wcmludGFibGUgY2hhcmFjdGVycyBhcmVcbiAgIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UgYXNcbiAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgKDB4MjApIHdoaWNoIGlzXG4gICBjb25zaWRlcmVkIHByaW50YWJsZS4gIChOb3RlIHRoYXQgcHJpbnRhYmxlIGNoYXJhY3RlcnMgaW4gdGhpc1xuICAgY29udGV4dCBhcmUgdGhvc2Ugd2hpY2ggc2hvdWxkIG5vdCBiZSBlc2NhcGVkIHdoZW4gInJlcHIoKSIgaXNcbiAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgb2Ygc3RyaW5nc1xuICAgd3JpdHRlbiB0byAic3lzLnN0ZG91dCIgb3IgInN5cy5zdGRlcnIiLilcblxuc3RyLmlzc3BhY2UoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZ1xuICAgYW5kIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjaGFyYWN0ZXIsIGZhbHNlIG90aGVyd2lzZS4gIFdoaXRlc3BhY2VcbiAgIGNoYXJhY3RlcnMgIGFyZSB0aG9zZSBjaGFyYWN0ZXJzIGRlZmluZWQgaW4gdGhlIFVuaWNvZGUgY2hhcmFjdGVyXG4gICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoIGJpZGlyZWN0aW9uYWxcbiAgIHByb3BlcnR5IGJlaW5nIG9uZSBvZiAiV1MiLCAiQiIsIG9yICJTIi5cblxuc3RyLmlzdGl0bGUoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kIHRoZXJlIGlzIGF0XG4gICBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmb3IgZXhhbXBsZSB1cHBlcmNhc2UgY2hhcmFjdGVycyBtYXkgb25seVxuICAgZm9sbG93IHVuY2FzZWQgY2hhcmFjdGVycyBhbmQgbG93ZXJjYXNlIGNoYXJhY3RlcnMgb25seSBjYXNlZCBvbmVzLlxuICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cblxuc3RyLmlzdXBwZXIoKVxuXG4gICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2FzZWQgY2hhcmFjdGVycyBbNF0gaW4gdGhlIHN0cmluZyBhcmUgdXBwZXJjYXNlXG4gICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLlxuXG5zdHIuam9pbihpdGVyYWJsZSlcblxuICAgUmV0dXJuIGEgc3RyaW5nIHdoaWNoIGlzIHRoZSBjb25jYXRlbmF0aW9uIG9mIHRoZSBzdHJpbmdzIGluIHRoZVxuICAgKml0ZXJhYmxlKiAqaXRlcmFibGUqLiAgQSAiVHlwZUVycm9yIiB3aWxsIGJlIHJhaXNlZCBpZiB0aGVyZSBhcmVcbiAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiBvYmplY3RzLlxuICAgVGhlIHNlcGFyYXRvciBiZXR3ZWVuIGVsZW1lbnRzIGlzIHRoZSBzdHJpbmcgcHJvdmlkaW5nIHRoaXMgbWV0aG9kLlxuXG5zdHIubGp1c3Qod2lkdGhbLCBmaWxsY2hhcl0pXG5cbiAgIFJldHVybiB0aGUgc3RyaW5nIGxlZnQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLmxvd2VyKClcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIHRoZSBjYXNlZCBjaGFyYWN0ZXJzIFs0XVxuICAgY29udmVydGVkIHRvIGxvd2VyY2FzZS5cblxuICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIubHN0cmlwKFtjaGFyc10pXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyByZW1vdmVkLiAgVGhlXG4gICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlXG4gICByZW1vdmVkLiAgSWYgb21pdHRlZCBvciAiTm9uZSIsIHRoZSAqY2hhcnMqIGFyZ3VtZW50IGRlZmF1bHRzIHRvXG4gICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgcHJlZml4OyByYXRoZXIsXG4gICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuXG4gICAgICA+Pj4gXCcgICBzcGFjaW91cyAgIFwnLmxzdHJpcCgpXG4gICAgICBcJ3NwYWNpb3VzICAgXCdcbiAgICAgID4+PiBcJ3d3dy5leGFtcGxlLmNvbVwnLmxzdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlLmNvbVwnXG5cbnN0YXRpYyBzdHIubWFrZXRyYW5zKHhbLCB5Wywgel1dKVxuXG4gICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSBmb3JcbiAgICJzdHIudHJhbnNsYXRlKCkiLlxuXG4gICBJZiB0aGVyZSBpcyBvbmx5IG9uZSBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIGRpY3Rpb25hcnkgbWFwcGluZ1xuICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgbGVuZ3RoIDEpIHRvXG4gICBVbmljb2RlIG9yZGluYWxzLCBzdHJpbmdzIChvZiBhcmJpdHJhcnkgbGVuZ3Rocykgb3IgTm9uZS5cbiAgIENoYXJhY3RlciBrZXlzIHdpbGwgdGhlbiBiZSBjb252ZXJ0ZWQgdG8gb3JkaW5hbHMuXG5cbiAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiBlcXVhbCBsZW5ndGgsXG4gICBhbmQgaW4gdGhlIHJlc3VsdGluZyBkaWN0aW9uYXJ5LCBlYWNoIGNoYXJhY3RlciBpbiB4IHdpbGwgYmUgbWFwcGVkXG4gICB0byB0aGUgY2hhcmFjdGVyIGF0IHRoZSBzYW1lIHBvc2l0aW9uIGluIHkuICBJZiB0aGVyZSBpcyBhIHRoaXJkXG4gICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlIG1hcHBlZCB0b1xuICAgTm9uZSBpbiB0aGUgcmVzdWx0LlxuXG5zdHIucGFydGl0aW9uKHNlcClcblxuICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kIHJldHVybiBhXG4gICAzLXR1cGxlIGNvbnRhaW5pbmcgdGhlIHBhcnQgYmVmb3JlIHRoZSBzZXBhcmF0b3IsIHRoZSBzZXBhcmF0b3JcbiAgIGl0c2VsZiwgYW5kIHRoZSBwYXJ0IGFmdGVyIHRoZSBzZXBhcmF0b3IuICBJZiB0aGUgc2VwYXJhdG9yIGlzIG5vdFxuICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgZm9sbG93ZWQgYnlcbiAgIHR3byBlbXB0eSBzdHJpbmdzLlxuXG5zdHIucmVwbGFjZShvbGQsIG5ld1ssIGNvdW50XSlcblxuICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyAqb2xkKlxuICAgcmVwbGFjZWQgYnkgKm5ldyouICBJZiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgKmNvdW50KiBpcyBnaXZlbiwgb25seVxuICAgdGhlIGZpcnN0ICpjb3VudCogb2NjdXJyZW5jZXMgYXJlIHJlcGxhY2VkLlxuXG5zdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBmb3VuZCwgc3VjaCB0aGF0ICpzdWIqIGlzIGNvbnRhaW5lZCB3aXRoaW4gInNbc3RhcnQ6ZW5kXSIuXG4gICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlXG4gICBub3RhdGlvbi4gIFJldHVybiAiLTEiIG9uIGZhaWx1cmUuXG5cbnN0ci5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSlcblxuICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgc3Vic3RyaW5nICpzdWIqIGlzXG4gICBub3QgZm91bmQuXG5cbnN0ci5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSlcblxuICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLlxuICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSVxuICAgc3BhY2UpLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzIHJldHVybmVkIGlmICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yXG4gICBlcXVhbCB0byAibGVuKHMpIi5cblxuc3RyLnJwYXJ0aXRpb24oc2VwKVxuXG4gICBTcGxpdCB0aGUgc3RyaW5nIGF0IHRoZSBsYXN0IG9jY3VycmVuY2Ugb2YgKnNlcCosIGFuZCByZXR1cm4gYVxuICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgc2VwYXJhdG9yXG4gICBpdHNlbGYsIGFuZCB0aGUgcGFydCBhZnRlciB0aGUgc2VwYXJhdG9yLiAgSWYgdGhlIHNlcGFyYXRvciBpcyBub3RcbiAgIGZvdW5kLCByZXR1cm4gYSAzLXR1cGxlIGNvbnRhaW5pbmcgdHdvIGVtcHR5IHN0cmluZ3MsIGZvbGxvd2VkIGJ5XG4gICB0aGUgc3RyaW5nIGl0c2VsZi5cblxuc3RyLnJzcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAqbWF4c3BsaXQqIHNwbGl0c1xuICAgYXJlIGRvbmUsIHRoZSAqcmlnaHRtb3N0KiBvbmVzLiAgSWYgKnNlcCogaXMgbm90IHNwZWNpZmllZCBvclxuICAgIk5vbmUiLCBhbnkgd2hpdGVzcGFjZSBzdHJpbmcgaXMgYSBzZXBhcmF0b3IuICBFeGNlcHQgZm9yIHNwbGl0dGluZ1xuICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCBpc1xuICAgZGVzY3JpYmVkIGluIGRldGFpbCBiZWxvdy5cblxuc3RyLnJzdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzIHJlbW92ZWQuICBUaGVcbiAgICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGUgc2V0IG9mIGNoYXJhY3RlcnMgdG8gYmVcbiAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgZGVmYXVsdHMgdG9cbiAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSBzdWZmaXg7IHJhdGhlcixcbiAgIGFsbCBjb21iaW5hdGlvbnMgb2YgaXRzIHZhbHVlcyBhcmUgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcucnN0cmlwKClcbiAgICAgIFwnICAgc3BhY2lvdXNcJ1xuICAgICAgPj4+IFwnbWlzc2lzc2lwcGlcJy5yc3RyaXAoXCdpcHpcJylcbiAgICAgIFwnbWlzc2lzc1wnXG5cbnN0ci5zcGxpdChzZXA9Tm9uZSwgbWF4c3BsaXQ9LTEpXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqIGFzIHRoZVxuICAgZGVsaW1pdGVyIHN0cmluZy4gIElmICptYXhzcGxpdCogaXMgZ2l2ZW4sIGF0IG1vc3QgKm1heHNwbGl0KlxuICAgc3BsaXRzIGFyZSBkb25lICh0aHVzLCB0aGUgbGlzdCB3aWxsIGhhdmUgYXQgbW9zdCAibWF4c3BsaXQrMSJcbiAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCB0aGVuIHRoZXJlIGlzXG4gICBubyBsaW1pdCBvbiB0aGUgbnVtYmVyIG9mIHNwbGl0cyAoYWxsIHBvc3NpYmxlIHNwbGl0cyBhcmUgbWFkZSkuXG5cbiAgIElmICpzZXAqIGlzIGdpdmVuLCBjb25zZWN1dGl2ZSBkZWxpbWl0ZXJzIGFyZSBub3QgZ3JvdXBlZCB0b2dldGhlclxuICAgYW5kIGFyZSBkZWVtZWQgdG8gZGVsaW1pdCBlbXB0eSBzdHJpbmdzIChmb3IgZXhhbXBsZSxcbiAgICJcJzEsLDJcJy5zcGxpdChcJyxcJykiIHJldHVybnMgIltcJzFcJywgXCdcJywgXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbiAgIG1heSBjb25zaXN0IG9mIG11bHRpcGxlIGNoYXJhY3RlcnMgKGZvciBleGFtcGxlLFxuICAgIlwnMTw+Mjw+M1wnLnNwbGl0KFwnPD5cJykiIHJldHVybnMgIltcJzFcJywgXCcyXCcsIFwnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbiAgIGVtcHR5IHN0cmluZyB3aXRoIGEgc3BlY2lmaWVkIHNlcGFyYXRvciByZXR1cm5zICJbXCdcJ10iLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSwyLDNcJy5zcGxpdChcJyxcJywgbWF4c3BsaXQ9MSlcbiAgICAgIFtcJzFcJywgXCcyLDNcJ11cbiAgICAgID4+PiBcJzEsMiwsMyxcJy5zcGxpdChcJyxcJylcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnXCcsIFwnM1wnLCBcJ1wnXVxuXG4gICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgc3BsaXR0aW5nXG4gICBhbGdvcml0aG0gaXMgYXBwbGllZDogcnVucyBvZiBjb25zZWN1dGl2ZSB3aGl0ZXNwYWNlIGFyZSByZWdhcmRlZFxuICAgYXMgYSBzaW5nbGUgc2VwYXJhdG9yLCBhbmQgdGhlIHJlc3VsdCB3aWxsIGNvbnRhaW4gbm8gZW1wdHkgc3RyaW5nc1xuICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yIHRyYWlsaW5nXG4gICB3aGl0ZXNwYWNlLiAgQ29uc2VxdWVudGx5LCBzcGxpdHRpbmcgYW4gZW1wdHkgc3RyaW5nIG9yIGEgc3RyaW5nXG4gICBjb25zaXN0aW5nIG9mIGp1c3Qgd2hpdGVzcGFjZSB3aXRoIGEgIk5vbmUiIHNlcGFyYXRvciByZXR1cm5zICJbXSIuXG5cbiAgIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gXCcxIDIgM1wnLnNwbGl0KClcbiAgICAgIFtcJzFcJywgXCcyXCcsIFwnM1wnXVxuICAgICAgPj4+IFwnMSAyIDNcJy5zcGxpdChtYXhzcGxpdD0xKVxuICAgICAgW1wnMVwnLCBcJzIgM1wnXVxuICAgICAgPj4+IFwnICAgMSAgIDIgICAzICAgXCcuc3BsaXQoKVxuICAgICAgW1wnMVwnLCBcJzJcJywgXCczXCddXG5cbnN0ci5zcGxpdGxpbmVzKFtrZWVwZW5kc10pXG5cbiAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIGxpbmVzIGluIHRoZSBzdHJpbmcsIGJyZWFraW5nIGF0IGxpbmVcbiAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSByZXN1bHRpbmcgbGlzdFxuICAgdW5sZXNzICprZWVwZW5kcyogaXMgZ2l2ZW4gYW5kIHRydWUuXG5cbiAgIFRoaXMgbWV0aG9kIHNwbGl0cyBvbiB0aGUgZm9sbG93aW5nIGxpbmUgYm91bmRhcmllcy4gIEluXG4gICBwYXJ0aWN1bGFyLCB0aGUgYm91bmRhcmllcyBhcmUgYSBzdXBlcnNldCBvZiAqdW5pdmVyc2FsIG5ld2xpbmVzKi5cblxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgUmVwcmVzZW50YXRpb24gICAgICAgICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4gICArPT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09K1xuICAgfCAiXFxuIiAgICAgICAgICAgICAgICAgICAgfCBMaW5lIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyIiAgICAgICAgICAgICAgICAgICAgfCBDYXJyaWFnZSBSZXR1cm4gICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFxyXFxuIiAgICAgICAgICAgICAgICAgIHwgQ2FycmlhZ2UgUmV0dXJuICsgTGluZSBGZWVkICAgfFxuICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbiAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgVGFidWxhdGlvbiAgICAgICAgICAgICAgIHxcbiAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4gICB8ICJcXGYiIG9yICJcXHgwYyIgICAgICAgICAgfCBGb3JtIEZlZWQgICAgICAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWMiICAgICAgICAgICAgICAgICAgfCBGaWxlIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWQiICAgICAgICAgICAgICAgICAgfCBHcm91cCBTZXBhcmF0b3IgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4MWUiICAgICAgICAgICAgICAgICAgfCBSZWNvcmQgU2VwYXJhdG9yICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx4ODUiICAgICAgICAgICAgICAgICAgfCBOZXh0IExpbmUgKEMxIENvbnRyb2wgQ29kZSkgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOCIgICAgICAgICAgICAgICAgfCBMaW5lIFNlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuICAgfCAiXFx1MjAyOSIgICAgICAgICAgICAgICAgfCBQYXJhZ3JhcGggU2VwYXJhdG9yICAgICAgICAgICB8XG4gICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG4gICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiXFx2IiBhbmQgIlxcZiIgYWRkZWQgdG8gbGlzdCBvZiBsaW5lXG4gICBib3VuZGFyaWVzLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+IFwnYWIgY1xcblxcbmRlIGZnXFxya2xcXHJcXG5cJy5zcGxpdGxpbmVzKClcbiAgICAgIFtcJ2FiIGNcJywgXCdcJywgXCdkZSBmZ1wnLCBcJ2tsXCddXG4gICAgICA+Pj4gXCdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcblwnLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSlcbiAgICAgIFtcJ2FiIGNcXG5cJywgXCdcXG5cJywgXCdkZSBmZ1xcclwnLCBcJ2tsXFxyXFxuXCddXG5cbiAgIFVubGlrZSAic3BsaXQoKSIgd2hlbiBhIGRlbGltaXRlciBzdHJpbmcgKnNlcCogaXMgZ2l2ZW4sIHRoaXNcbiAgIG1ldGhvZCByZXR1cm5zIGFuIGVtcHR5IGxpc3QgZm9yIHRoZSBlbXB0eSBzdHJpbmcsIGFuZCBhIHRlcm1pbmFsXG4gICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuXG4gICAgICA+Pj4gIiIuc3BsaXRsaW5lcygpXG4gICAgICBbXVxuICAgICAgPj4+ICJPbmUgbGluZVxcbiIuc3BsaXRsaW5lcygpXG4gICAgICBbXCdPbmUgbGluZVwnXVxuXG4gICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcblxuICAgICAgPj4+IFwnXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1wnXVxuICAgICAgPj4+IFwnVHdvIGxpbmVzXFxuXCcuc3BsaXQoXCdcXG5cJylcbiAgICAgIFtcJ1R3byBsaW5lc1wnLCBcJ1wnXVxuXG5zdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuXG4gICBSZXR1cm4gIlRydWUiIGlmIHN0cmluZyBzdGFydHMgd2l0aCB0aGUgKnByZWZpeCosIG90aGVyd2lzZSByZXR1cm5cbiAgICJGYWxzZSIuICpwcmVmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgcHJlZml4ZXMgdG8gbG9vayBmb3IuXG4gICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuICAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgc3RyaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cbnN0ci5zdHJpcChbY2hhcnNdKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmdcbiAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgc3BlY2lmeWluZyB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIHRvIGJlIHJlbW92ZWQuIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKlxuICAgYXJndW1lbnQgZGVmYXVsdHMgdG8gcmVtb3Zpbmcgd2hpdGVzcGFjZS4gVGhlICpjaGFycyogYXJndW1lbnQgaXNcbiAgIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZVxuICAgc3RyaXBwZWQ6XG5cbiAgICAgID4+PiBcJyAgIHNwYWNpb3VzICAgXCcuc3RyaXAoKVxuICAgICAgXCdzcGFjaW91c1wnXG4gICAgICA+Pj4gXCd3d3cuZXhhbXBsZS5jb21cJy5zdHJpcChcJ2Ntb3d6LlwnKVxuICAgICAgXCdleGFtcGxlXCdcblxuICAgVGhlIG91dGVybW9zdCBsZWFkaW5nIGFuZCB0cmFpbGluZyAqY2hhcnMqIGFyZ3VtZW50IHZhbHVlcyBhcmVcbiAgIHN0cmlwcGVkIGZyb20gdGhlIHN0cmluZy4gQ2hhcmFjdGVycyBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBsZWFkaW5nXG4gICBlbmQgdW50aWwgcmVhY2hpbmcgYSBzdHJpbmcgY2hhcmFjdGVyIHRoYXQgaXMgbm90IGNvbnRhaW5lZCBpbiB0aGVcbiAgIHNldCBvZiBjaGFyYWN0ZXJzIGluICpjaGFycyouIEEgc2ltaWxhciBhY3Rpb24gdGFrZXMgcGxhY2Ugb24gdGhlXG4gICB0cmFpbGluZyBlbmQuIEZvciBleGFtcGxlOlxuXG4gICAgICA+Pj4gY29tbWVudF9zdHJpbmcgPSBcJyMuLi4uLi4uIFNlY3Rpb24gMy4yLjEgSXNzdWUgIzMyIC4uLi4uLi5cJ1xuICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKFwnLiMhIFwnKVxuICAgICAgXCdTZWN0aW9uIDMuMi4xIElzc3VlICMzMlwnXG5cbnN0ci5zd2FwY2FzZSgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzIGNvbnZlcnRlZCB0b1xuICAgbG93ZXJjYXNlIGFuZCB2aWNlIHZlcnNhLiBOb3RlIHRoYXQgaXQgaXMgbm90IG5lY2Vzc2FyaWx5IHRydWUgdGhhdFxuICAgInMuc3dhcGNhc2UoKS5zd2FwY2FzZSgpID09IHMiLlxuXG5zdHIudGl0bGUoKVxuXG4gICBSZXR1cm4gYSB0aXRsZWNhc2VkIHZlcnNpb24gb2YgdGhlIHN0cmluZyB3aGVyZSB3b3JkcyBzdGFydCB3aXRoIGFuXG4gICB1cHBlcmNhc2UgY2hhcmFjdGVyIGFuZCB0aGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIGxvd2VyY2FzZS5cblxuICAgRm9yIGV4YW1wbGU6XG5cbiAgICAgID4+PiBcJ0hlbGxvIHdvcmxkXCcudGl0bGUoKVxuICAgICAgXCdIZWxsbyBXb3JsZFwnXG5cbiAgIFRoZSBhbGdvcml0aG0gdXNlcyBhIHNpbXBsZSBsYW5ndWFnZS1pbmRlcGVuZGVudCBkZWZpbml0aW9uIG9mIGFcbiAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiB3b3JrcyBpblxuICAgbWFueSBjb250ZXh0cyBidXQgaXQgbWVhbnMgdGhhdCBhcG9zdHJvcGhlcyBpbiBjb250cmFjdGlvbnMgYW5kXG4gICBwb3NzZXNzaXZlcyBmb3JtIHdvcmQgYm91bmRhcmllcywgd2hpY2ggbWF5IG5vdCBiZSB0aGUgZGVzaXJlZFxuICAgcmVzdWx0OlxuXG4gICAgICA+Pj4gInRoZXlcJ3JlIGJpbGxcJ3MgZnJpZW5kcyBmcm9tIHRoZSBVSyIudGl0bGUoKVxuICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcblxuICAgQSB3b3JrYXJvdW5kIGZvciBhcG9zdHJvcGhlcyBjYW4gYmUgY29uc3RydWN0ZWQgdXNpbmcgcmVndWxhclxuICAgZXhwcmVzc2lvbnM6XG5cbiAgICAgID4+PiBpbXBvcnQgcmVcbiAgICAgID4+PiBkZWYgdGl0bGVjYXNlKHMpOlxuICAgICAgLi4uICAgICByZXR1cm4gcmUuc3ViKHIiW0EtWmEtel0rKFwnW0EtWmEtel0rKT8iLFxuICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogbW8uZ3JvdXAoMClbMF0udXBwZXIoKSArXG4gICAgICAuLi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbiAgICAgIC4uLiAgICAgICAgICAgICAgICAgICBzKVxuICAgICAgLi4uXG4gICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbiAgICAgICJUaGV5XCdyZSBCaWxsXCdzIEZyaWVuZHMuIlxuXG5zdHIudHJhbnNsYXRlKHRhYmxlKVxuXG4gICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgaW4gd2hpY2ggZWFjaCBjaGFyYWN0ZXIgaGFzIGJlZW4gbWFwcGVkXG4gICB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4gIFRoZSB0YWJsZSBtdXN0IGJlIGFuIG9iamVjdFxuICAgdGhhdCBpbXBsZW1lbnRzIGluZGV4aW5nIHZpYSAiX19nZXRpdGVtX18oKSIsIHR5cGljYWxseSBhICptYXBwaW5nKlxuICAgb3IgKnNlcXVlbmNlKi4gIFdoZW4gaW5kZXhlZCBieSBhIFVuaWNvZGUgb3JkaW5hbCAoYW4gaW50ZWdlciksIHRoZVxuICAgdGFibGUgb2JqZWN0IGNhbiBkbyBhbnkgb2YgdGhlIGZvbGxvd2luZzogcmV0dXJuIGEgVW5pY29kZSBvcmRpbmFsXG4gICBvciBhIHN0cmluZywgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gb25lIG9yIG1vcmUgb3RoZXIgY2hhcmFjdGVycztcbiAgIHJldHVybiAiTm9uZSIsIHRvIGRlbGV0ZSB0aGUgY2hhcmFjdGVyIGZyb20gdGhlIHJldHVybiBzdHJpbmc7IG9yXG4gICByYWlzZSBhICJMb29rdXBFcnJvciIgZXhjZXB0aW9uLCB0byBtYXAgdGhlIGNoYXJhY3RlciB0byBpdHNlbGYuXG5cbiAgIFlvdSBjYW4gdXNlICJzdHIubWFrZXRyYW5zKCkiIHRvIGNyZWF0ZSBhIHRyYW5zbGF0aW9uIG1hcCBmcm9tXG4gICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuXG4gICBTZWUgYWxzbyB0aGUgImNvZGVjcyIgbW9kdWxlIGZvciBhIG1vcmUgZmxleGlibGUgYXBwcm9hY2ggdG8gY3VzdG9tXG4gICBjaGFyYWN0ZXIgbWFwcGluZ3MuXG5cbnN0ci51cHBlcigpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgY2hhcmFjdGVycyBbNF1cbiAgIGNvbnZlcnRlZCB0byB1cHBlcmNhc2UuICBOb3RlIHRoYXQgInN0ci51cHBlcigpLmlzdXBwZXIoKSIgbWlnaHQgYmVcbiAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgVW5pY29kZVxuICAgY2F0ZWdvcnkgb2YgdGhlIHJlc3VsdGluZyBjaGFyYWN0ZXIocykgaXMgbm90ICJMdSIgKExldHRlcixcbiAgIHVwcGVyY2FzZSksIGJ1dCBlLmcuICJMdCIgKExldHRlciwgdGl0bGVjYXNlKS5cblxuICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgb2YgdGhlXG4gICBVbmljb2RlIFN0YW5kYXJkLlxuXG5zdHIuemZpbGwod2lkdGgpXG5cbiAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIEFTQ0lJICJcJzBcJyIgZGlnaXRzIHRvXG4gICBtYWtlIGEgc3RyaW5nIG9mIGxlbmd0aCAqd2lkdGgqLiBBIGxlYWRpbmcgc2lnbiBwcmVmaXhcbiAgICgiXCcrXCciLyJcJy1cJyIpIGlzIGhhbmRsZWQgYnkgaW5zZXJ0aW5nIHRoZSBwYWRkaW5nICphZnRlciogdGhlIHNpZ25cbiAgIGNoYXJhY3RlciByYXRoZXIgdGhhbiBiZWZvcmUuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWZcbiAgICp3aWR0aCogaXMgbGVzcyB0aGFuIG9yIGVxdWFsIHRvICJsZW4ocykiLlxuXG4gICBGb3IgZXhhbXBsZTpcblxuICAgICAgPj4+ICI0MiIuemZpbGwoNSlcbiAgICAgIFwnMDAwNDJcJ1xuICAgICAgPj4+ICItNDIiLnpmaWxsKDUpXG4gICAgICBcJy0wMDQyXCdcbicsCi0gJ3N0cmluZ3MnOiB1J1xuU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5TdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgZGVmaW5pdGlvbnM6XG5cbiAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuICAgc3RyaW5ncHJlZml4ICAgIDo6PSAiciIgfCAidSIgfCAiUiIgfCAiVSJcbiAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyBzaG9ydHN0cmluZ2l0ZW0qIFwnIlwnXG4gICBsb25nc3RyaW5nICAgICAgOjo9ICJcJ1wnXCciIGxvbmdzdHJpbmdpdGVtKiAiXCdcJ1wnIiB8IFwnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0c3RyaW5naXRlbSA6Oj0gc2hvcnRzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBsb25nc3RyaW5naXRlbSAgOjo9IGxvbmdzdHJpbmdjaGFyIHwgc3RyaW5nZXNjYXBlc2VxXG4gICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lIG9yIHRoZSBxdW90ZT5cbiAgIGxvbmdzdHJpbmdjaGFyICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cblxuICAgYnl0ZXNsaXRlcmFsICAgOjo9IGJ5dGVzcHJlZml4KHNob3J0Ynl0ZXMgfCBsb25nYnl0ZXMpXG4gICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICJyYiIgfCAickIiIHwgIlJiIiB8ICJSQiJcbiAgIHNob3J0Ynl0ZXMgICAgIDo6PSAiXCciIHNob3J0Ynl0ZXNpdGVtKiAiXCciIHwgXCciXCcgc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4gICBsb25nYnl0ZXMgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ2J5dGVzaXRlbSogIlwnXCdcJyIgfCBcJyIiIlwnIGxvbmdieXRlc2l0ZW0qIFwnIiIiXCdcbiAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBsb25nYnl0ZXNpdGVtICA6Oj0gbG9uZ2J5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4gICBzaG9ydGJ5dGVzY2hhciA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCIgb3IgbmV3bGluZSBvciB0aGUgcXVvdGU+XG4gICBsb25nYnl0ZXNjaGFyICA6Oj0gPGFueSBBU0NJSSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4gICBieXRlc2VzY2FwZXNlcSA6Oj0gIlxcIiA8YW55IEFTQ0lJIGNoYXJhY3Rlcj5cblxuT25lIHN5bnRhY3RpYyByZXN0cmljdGlvbiBub3QgaW5kaWNhdGVkIGJ5IHRoZXNlIHByb2R1Y3Rpb25zIGlzIHRoYXRcbndoaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgInN0cmluZ3ByZWZpeCIgb3IgImJ5dGVzcHJlZml4IlxuYW5kIHRoZSByZXN0IG9mIHRoZSBsaXRlcmFsLiBUaGUgc291cmNlIGNoYXJhY3RlciBzZXQgaXMgZGVmaW5lZCBieVxudGhlIGVuY29kaW5nIGRlY2xhcmF0aW9uOyBpdCBpcyBVVEYtOCBpZiBubyBlbmNvZGluZyBkZWNsYXJhdGlvbiBpc1xuZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiAqRW5jb2RpbmcgZGVjbGFyYXRpb25zKi5cblxuSW4gcGxhaW4gRW5nbGlzaDogQm90aCB0eXBlcyBvZiBsaXRlcmFscyBjYW4gYmUgZW5jbG9zZWQgaW4gbWF0Y2hpbmdcbnNpbmdsZSBxdW90ZXMgKCJcJyIpIG9yIGRvdWJsZSBxdW90ZXMgKCIiIikuICBUaGV5IGNhbiBhbHNvIGJlIGVuY2xvc2VkXG5pbiBtYXRjaGluZyBncm91cHMgb2YgdGhyZWUgc2luZ2xlIG9yIGRvdWJsZSBxdW90ZXMgKHRoZXNlIGFyZVxuZ2VuZXJhbGx5IHJlZmVycmVkIHRvIGFzICp0cmlwbGUtcXVvdGVkIHN0cmluZ3MqKS4gIFRoZSBiYWNrc2xhc2hcbigiXFwiKSBjaGFyYWN0ZXIgaXMgdXNlZCB0byBlc2NhcGUgY2hhcmFjdGVycyB0aGF0IG90aGVyd2lzZSBoYXZlIGFcbnNwZWNpYWwgbWVhbmluZywgc3VjaCBhcyBuZXdsaW5lLCBiYWNrc2xhc2ggaXRzZWxmLCBvciB0aGUgcXVvdGVcbmNoYXJhY3Rlci5cblxuQnl0ZXMgbGl0ZXJhbHMgYXJlIGFsd2F5cyBwcmVmaXhlZCB3aXRoICJcJ2JcJyIgb3IgIlwnQlwnIjsgdGhleSBwcm9kdWNlXG5hbiBpbnN0YW5jZSBvZiB0aGUgImJ5dGVzIiB0eXBlIGluc3RlYWQgb2YgdGhlICJzdHIiIHR5cGUuICBUaGV5IG1heVxub25seSBjb250YWluIEFTQ0lJIGNoYXJhY3RlcnM7IGJ5dGVzIHdpdGggYSBudW1lcmljIHZhbHVlIG9mIDEyOCBvclxuZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG5cbkFzIG9mIFB5dGhvbiAzLjMgaXQgaXMgcG9zc2libGUgYWdhaW4gdG8gcHJlZml4IHN0cmluZyBsaXRlcmFscyB3aXRoIGFcbiJ1IiBwcmVmaXggdG8gc2ltcGxpZnkgbWFpbnRlbmFuY2Ugb2YgZHVhbCAyLnggYW5kIDMueCBjb2RlYmFzZXMuXG5cbkJvdGggc3RyaW5nIGFuZCBieXRlcyBsaXRlcmFscyBtYXkgb3B0aW9uYWxseSBiZSBwcmVmaXhlZCB3aXRoIGFcbmxldHRlciAiXCdyXCciIG9yICJcJ1JcJyI7IHN1Y2ggc3RyaW5ncyBhcmUgY2FsbGVkICpyYXcgc3RyaW5ncyogYW5kIHRyZWF0XG5iYWNrc2xhc2hlcyBhcyBsaXRlcmFsIGNoYXJhY3RlcnMuICBBcyBhIHJlc3VsdCwgaW4gc3RyaW5nIGxpdGVyYWxzLFxuIlwnXFxVXCciIGFuZCAiXCdcXHVcJyIgZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgc3BlY2lhbGx5LlxuR2l2ZW4gdGhhdCBQeXRob24gMi54XCdzIHJhdyB1bmljb2RlIGxpdGVyYWxzIGJlaGF2ZSBkaWZmZXJlbnRseSB0aGFuXG5QeXRob24gMy54XCdzIHRoZSAiXCd1clwnIiBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cblxuTmV3IGluIHZlcnNpb24gMy4zOiBUaGUgIlwncmJcJyIgcHJlZml4IG9mIHJhdyBieXRlcyBsaXRlcmFscyBoYXMgYmVlblxuYWRkZWQgYXMgYSBzeW5vbnltIG9mICJcJ2JyXCciLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsXG4oInVcJ3ZhbHVlXCciKSB3YXMgcmVpbnRyb2R1Y2VkIHRvIHNpbXBsaWZ5IHRoZSBtYWludGVuYW5jZSBvZiBkdWFsXG5QeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cbkluIHRyaXBsZS1xdW90ZWQgbGl0ZXJhbHMsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSBhbGxvd2VkXG4oYW5kIGFyZSByZXRhaW5lZCksIGV4Y2VwdCB0aGF0IHRocmVlIHVuZXNjYXBlZCBxdW90ZXMgaW4gYSByb3dcbnRlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gdGhlXG5saXRlcmFsLCBpLmUuIGVpdGhlciAiXCciIG9yICIiIi4pXG5cblVubGVzcyBhbiAiXCdyXCciIG9yICJcJ1JcJyIgcHJlZml4IGlzIHByZXNlbnQsIGVzY2FwZSBzZXF1ZW5jZXMgaW4gc3RyaW5nXG5hbmQgYnl0ZXMgbGl0ZXJhbHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvIHRob3NlXG51c2VkIGJ5IFN0YW5kYXJkIEMuICBUaGUgcmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZTpcblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCBFc2NhcGUgU2VxdWVuY2UgICB8IE1lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgfFxuKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xufCAiXFxuZXdsaW5lIiAgICAgICAgfCBCYWNrc2xhc2ggYW5kIG5ld2xpbmUgaWdub3JlZCAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcXFwiICAgICAgICAgICAgICB8IEJhY2tzbGFzaCAoIlxcIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcXCciICAgICAgICAgICAgICB8IFNpbmdsZSBxdW90ZSAoIlwnIikgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcIiIgICAgICAgICAgICAgIHwgRG91YmxlIHF1b3RlICgiIiIpICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXGEiICAgICAgICAgICAgICB8IEFTQ0lJIEJlbGwgKEJFTCkgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxiIiAgICAgICAgICAgICAgfCBBU0NJSSBCYWNrc3BhY2UgKEJTKSAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcZiIgICAgICAgICAgICAgIHwgQVNDSUkgRm9ybWZlZWQgKEZGKSAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXG4iICAgICAgICAgICAgICB8IEFTQ0lJIExpbmVmZWVkIChMRikgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxyIiAgICAgICAgICAgICAgfCBBU0NJSSBDYXJyaWFnZSBSZXR1cm4gKENSKSAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxcdCIgICAgICAgICAgICAgIHwgQVNDSUkgSG9yaXpvbnRhbCBUYWIgKFRBQikgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHYiICAgICAgICAgICAgICB8IEFTQ0lJIFZlcnRpY2FsIFRhYiAoVlQpICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxvb28iICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBvY3RhbCB2YWx1ZSAqb29vKiAgfCAoMSwzKSAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgIlxceGhoIiAgICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggaGV4IHZhbHVlICpoaCogICAgIHwgKDIsMykgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG5cbkVzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG5cbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbnwgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgIHxcbis9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbnwgIlxcTntuYW1lfSIgICAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgKDQpICAgICB8XG58ICAgICAgICAgICAgICAgICAgIHwgVW5pY29kZSBkYXRhYmFzZSAgICAgICAgICAgICAgICAgIHwgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG58ICJcXHV4eHh4IiAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIDE2LWJpdCBoZXggdmFsdWUgICB8ICg1KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICB8ICp4eHh4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xufCAiXFxVeHh4eHh4eHgiICAgICAgfCBDaGFyYWN0ZXIgd2l0aCAzMi1iaXQgaGV4IHZhbHVlICAgfCAoNikgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG5cbjIuIFVubGlrZSBpbiBTdGFuZGFyZCBDLCBleGFjdGx5IHR3byBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuMy4gSW4gYSBieXRlcyBsaXRlcmFsLCBoZXhhZGVjaW1hbCBhbmQgb2N0YWwgZXNjYXBlcyBkZW5vdGUgdGhlXG4gICBieXRlIHdpdGggdGhlIGdpdmVuIHZhbHVlLiBJbiBhIHN0cmluZyBsaXRlcmFsLCB0aGVzZSBlc2NhcGVzXG4gICBkZW5vdGUgYSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cblxuNC4gQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMzogU3VwcG9ydCBmb3IgbmFtZSBhbGlhc2VzIFsxXSBoYXMgYmVlblxuICAgYWRkZWQuXG5cbjUuIEV4YWN0bHkgZm91ciBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cblxuNi4gQW55IFVuaWNvZGUgY2hhcmFjdGVyIGNhbiBiZSBlbmNvZGVkIHRoaXMgd2F5LiAgRXhhY3RseSBlaWdodFxuICAgaGV4IGRpZ2l0cyBhcmUgcmVxdWlyZWQuXG5cblVubGlrZSBTdGFuZGFyZCBDLCBhbGwgdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlIGxlZnQgaW4gdGhlXG5zdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSByZXN1bHQqLiAgKFRoaXNcbmJlaGF2aW9yIGlzIHVzZWZ1bCB3aGVuIGRlYnVnZ2luZzogaWYgYW4gZXNjYXBlIHNlcXVlbmNlIGlzIG1pc3R5cGVkLFxudGhlIHJlc3VsdGluZyBvdXRwdXQgaXMgbW9yZSBlYXNpbHkgcmVjb2duaXplZCBhcyBicm9rZW4uKSAgSXQgaXMgYWxzb1xuaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gc3RyaW5nXG5saXRlcmFscyBmYWxsIGludG8gdGhlIGNhdGVnb3J5IG9mIHVucmVjb2duaXplZCBlc2NhcGVzIGZvciBieXRlc1xubGl0ZXJhbHMuXG5cbkV2ZW4gaW4gYSByYXcgbGl0ZXJhbCwgcXVvdGVzIGNhbiBiZSBlc2NhcGVkIHdpdGggYSBiYWNrc2xhc2gsIGJ1dCB0aGVcbmJhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCAiciJcXCIiIiBpcyBhIHZhbGlkXG5zdHJpbmcgbGl0ZXJhbCBjb25zaXN0aW5nIG9mIHR3byBjaGFyYWN0ZXJzOiBhIGJhY2tzbGFzaCBhbmQgYSBkb3VibGVcbnF1b3RlOyAiciJcXCIiIGlzIG5vdCBhIHZhbGlkIHN0cmluZyBsaXRlcmFsIChldmVuIGEgcmF3IHN0cmluZyBjYW5ub3RcbmVuZCBpbiBhbiBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzKS4gIFNwZWNpZmljYWxseSwgKmEgcmF3IGxpdGVyYWxcbmNhbm5vdCBlbmQgaW4gYSBzaW5nbGUgYmFja3NsYXNoKiAoc2luY2UgdGhlIGJhY2tzbGFzaCB3b3VsZCBlc2NhcGVcbnRoZSBmb2xsb3dpbmcgcXVvdGUgY2hhcmFjdGVyKS4gIE5vdGUgYWxzbyB0aGF0IGEgc2luZ2xlIGJhY2tzbGFzaFxuZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzIHBhcnRcbm9mIHRoZSBsaXRlcmFsLCAqbm90KiBhcyBhIGxpbmUgY29udGludWF0aW9uLlxuJywKLSAnc3Vic2NyaXB0aW9ucyc6IHUnXG5TdWJzY3JpcHRpb25zXG4qKioqKioqKioqKioqXG5cbkEgc3Vic2NyaXB0aW9uIHNlbGVjdHMgYW4gaXRlbSBvZiBhIHNlcXVlbmNlIChzdHJpbmcsIHR1cGxlIG9yIGxpc3QpXG5vciBtYXBwaW5nIChkaWN0aW9uYXJ5KSBvYmplY3Q6XG5cbiAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuXG5UaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCB0aGF0IHN1cHBvcnRzIHN1YnNjcmlwdGlvblxuKGxpc3RzIG9yIGRpY3Rpb25hcmllcyBmb3IgZXhhbXBsZSkuICBVc2VyLWRlZmluZWQgb2JqZWN0cyBjYW4gc3VwcG9ydFxuc3Vic2NyaXB0aW9uIGJ5IGRlZmluaW5nIGEgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cblxuRm9yIGJ1aWx0LWluIG9iamVjdHMsIHRoZXJlIGFyZSB0d28gdHlwZXMgb2Ygb2JqZWN0cyB0aGF0IHN1cHBvcnRcbnN1YnNjcmlwdGlvbjpcblxuSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgZXZhbHVhdGUgdG8gYW5cbm9iamVjdCB3aG9zZSB2YWx1ZSBpcyBvbmUgb2YgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcsIGFuZCB0aGVcbnN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSB2YWx1ZSBpbiB0aGUgbWFwcGluZyB0aGF0IGNvcnJlc3BvbmRzIHRvIHRoYXRcbmtleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyBleGFjdGx5IG9uZVxuaXRlbS4pXG5cbklmIHRoZSBwcmltYXJ5IGlzIGEgc2VxdWVuY2UsIHRoZSBleHByZXNzaW9uIChsaXN0KSBtdXN0IGV2YWx1YXRlIHRvXG5hbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb24pLlxuXG5UaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgaW5kaWNlcyBpblxuc2VxdWVuY2VzOyBob3dldmVyLCBidWlsdC1pbiBzZXF1ZW5jZXMgYWxsIHByb3ZpZGUgYSAiX19nZXRpdGVtX18oKSJcbm1ldGhvZCB0aGF0IGludGVycHJldHMgbmVnYXRpdmUgaW5kaWNlcyBieSBhZGRpbmcgdGhlIGxlbmd0aCBvZiB0aGVcbnNlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCAieFstMV0iIHNlbGVjdHMgdGhlIGxhc3QgaXRlbSBvZiAieCIpLlxuVGhlIHJlc3VsdGluZyB2YWx1ZSBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciBsZXNzIHRoYW4gdGhlIG51bWJlclxub2YgaXRlbXMgaW4gdGhlIHNlcXVlbmNlLCBhbmQgdGhlIHN1YnNjcmlwdGlvbiBzZWxlY3RzIHRoZSBpdGVtIHdob3NlXG5pbmRleCBpcyB0aGF0IHZhbHVlIChjb3VudGluZyBmcm9tIHplcm8pLiBTaW5jZSB0aGUgc3VwcG9ydCBmb3Jcbm5lZ2F0aXZlIGluZGljZXMgYW5kIHNsaWNpbmcgb2NjdXJzIGluIHRoZSBvYmplY3RcJ3MgIl9fZ2V0aXRlbV9fKCkiXG5tZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gZXhwbGljaXRseSBhZGRcbnRoYXQgc3VwcG9ydC5cblxuQSBzdHJpbmdcJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSBzZXBhcmF0ZSBkYXRhXG50eXBlIGJ1dCBhIHN0cmluZyBvZiBleGFjdGx5IG9uZSBjaGFyYWN0ZXIuXG4nLAotICd0cnV0aCc6IHUnXG5UcnV0aCBWYWx1ZSBUZXN0aW5nXG4qKioqKioqKioqKioqKioqKioqXG5cbkFueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gImlmIiBvclxuIndoaWxlIiBjb25kaXRpb24gb3IgYXMgb3BlcmFuZCBvZiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zIGJlbG93LiBUaGVcbmZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG5cbiogIk5vbmUiXG5cbiogIkZhbHNlIlxuXG4qIHplcm8gb2YgYW55IG51bWVyaWMgdHlwZSwgZm9yIGV4YW1wbGUsICIwIiwgIjAuMCIsICIwaiIuXG5cbiogYW55IGVtcHR5IHNlcXVlbmNlLCBmb3IgZXhhbXBsZSwgIlwnXCciLCAiKCkiLCAiW10iLlxuXG4qIGFueSBlbXB0eSBtYXBwaW5nLCBmb3IgZXhhbXBsZSwgInt9Ii5cblxuKiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMsIGlmIHRoZSBjbGFzcyBkZWZpbmVzIGFcbiAgIl9fYm9vbF9fKCkiIG9yICJfX2xlbl9fKCkiIG1ldGhvZCwgd2hlbiB0aGF0IG1ldGhvZCByZXR1cm5zIHRoZVxuICBpbnRlZ2VyIHplcm8gb3IgImJvb2wiIHZhbHVlICJGYWxzZSIuIFsxXVxuXG5BbGwgb3RoZXIgdmFsdWVzIGFyZSBjb25zaWRlcmVkIHRydWUgLS0tIHNvIG9iamVjdHMgb2YgbWFueSB0eXBlcyBhcmVcbmFsd2F5cyB0cnVlLlxuXG5PcGVyYXRpb25zIGFuZCBidWlsdC1pbiBmdW5jdGlvbnMgdGhhdCBoYXZlIGEgQm9vbGVhbiByZXN1bHQgYWx3YXlzXG5yZXR1cm4gIjAiIG9yICJGYWxzZSIgZm9yIGZhbHNlIGFuZCAiMSIgb3IgIlRydWUiIGZvciB0cnVlLCB1bmxlc3Ncbm90aGVyd2lzZSBzdGF0ZWQuIChJbXBvcnRhbnQgZXhjZXB0aW9uOiB0aGUgQm9vbGVhbiBvcGVyYXRpb25zICJvciJcbmFuZCAiYW5kIiBhbHdheXMgcmV0dXJuIG9uZSBvZiB0aGVpciBvcGVyYW5kcy4pXG4nLAotICd0cnknOiB1J1xuVGhlICJ0cnkiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgInRyeSIgc3RhdGVtZW50IHNwZWNpZmllcyBleGNlcHRpb24gaGFuZGxlcnMgYW5kL29yIGNsZWFudXAgY29kZVxuZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcblxuICAgdHJ5X3N0bXQgIDo6PSB0cnkxX3N0bXQgfCB0cnkyX3N0bXRcbiAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICgiZXhjZXB0IiBbZXhwcmVzc2lvbiBbImFzIiBpZGVudGlmaWVyXV0gIjoiIHN1aXRlKStcbiAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4gICAgICAgICAgICAgICAgIFsiZmluYWxseSIgIjoiIHN1aXRlXVxuICAgdHJ5Ml9zdG10IDo6PSAidHJ5IiAiOiIgc3VpdGVcbiAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuXG5UaGUgImV4Y2VwdCIgY2xhdXNlKHMpIHNwZWNpZnkgb25lIG9yIG1vcmUgZXhjZXB0aW9uIGhhbmRsZXJzLiBXaGVuIG5vXG5leGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBjbGF1c2UsIG5vIGV4Y2VwdGlvbiBoYW5kbGVyIGlzXG5leGVjdXRlZC4gV2hlbiBhbiBleGNlcHRpb24gb2NjdXJzIGluIHRoZSAidHJ5IiBzdWl0ZSwgYSBzZWFyY2ggZm9yIGFuXG5leGNlcHRpb24gaGFuZGxlciBpcyBzdGFydGVkLiAgVGhpcyBzZWFyY2ggaW5zcGVjdHMgdGhlIGV4Y2VwdCBjbGF1c2VzXG5pbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuIGV4cHJlc3Npb24tXG5sZXNzIGV4Y2VwdCBjbGF1c2UsIGlmIHByZXNlbnQsIG11c3QgYmUgbGFzdDsgaXQgbWF0Y2hlcyBhbnlcbmV4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCBleHByZXNzaW9uXG5pcyBldmFsdWF0ZWQsIGFuZCB0aGUgY2xhdXNlIG1hdGNoZXMgdGhlIGV4Y2VwdGlvbiBpZiB0aGUgcmVzdWx0aW5nXG5vYmplY3QgaXMgImNvbXBhdGlibGUiIHdpdGggdGhlIGV4Y2VwdGlvbi4gIEFuIG9iamVjdCBpcyBjb21wYXRpYmxlXG53aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSBleGNlcHRpb25cbm9iamVjdCBvciBhIHR1cGxlIGNvbnRhaW5pbmcgYW4gaXRlbSBjb21wYXRpYmxlIHdpdGggdGhlIGV4Y2VwdGlvbi5cblxuSWYgbm8gZXhjZXB0IGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24sIHRoZSBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvblxuaGFuZGxlciBjb250aW51ZXMgaW4gdGhlIHN1cnJvdW5kaW5nIGNvZGUgYW5kIG9uIHRoZSBpbnZvY2F0aW9uIHN0YWNrLlxuWzFdXG5cbklmIHRoZSBldmFsdWF0aW9uIG9mIGFuIGV4cHJlc3Npb24gaW4gdGhlIGhlYWRlciBvZiBhbiBleGNlcHQgY2xhdXNlXG5yYWlzZXMgYW4gZXhjZXB0aW9uLCB0aGUgb3JpZ2luYWwgc2VhcmNoIGZvciBhIGhhbmRsZXIgaXMgY2FuY2VsZWQgYW5kXG5hIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvblxudGhlIGNhbGwgc3RhY2sgKGl0IGlzIHRyZWF0ZWQgYXMgaWYgdGhlIGVudGlyZSAidHJ5IiBzdGF0ZW1lbnQgcmFpc2VkXG50aGUgZXhjZXB0aW9uKS5cblxuV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgYXNzaWduZWQgdG9cbnRoZSB0YXJnZXQgc3BlY2lmaWVkIGFmdGVyIHRoZSAiYXMiIGtleXdvcmQgaW4gdGhhdCBleGNlcHQgY2xhdXNlLCBpZlxucHJlc2VudCwgYW5kIHRoZSBleGNlcHQgY2xhdXNlXCdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrIGlzXG5yZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5IHN0YXRlbWVudC5cbihUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgZXhjZXB0aW9uLFxuYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbm91dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuXG5XaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICBmb29cblxud2FzIHRyYW5zbGF0ZWQgdG9cblxuICAgZXhjZXB0IEUgYXMgTjpcbiAgICAgICB0cnk6XG4gICAgICAgICAgIGZvb1xuICAgICAgIGZpbmFsbHk6XG4gICAgICAgICAgIGRlbCBOXG5cblRoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbmFibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG5iZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbmN5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxudW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cblxuQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2VcJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG5leGNlcHRpb24gYXJlIHN0b3JlZCBpbiB0aGUgInN5cyIgbW9kdWxlIGFuZCBjYW4gYmUgYWNjZXNzZWQgdmlhXG4ic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3Rpbmcgb2YgdGhlXG5leGNlcHRpb24gY2xhc3MsIHRoZSBleGNlcHRpb24gaW5zdGFuY2UgYW5kIGEgdHJhY2ViYWNrIG9iamVjdCAoc2VlXG5zZWN0aW9uICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqKSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG5wcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbnJlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG5cblRoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG50aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxubm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuXG5JZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAidHJ5IlxuY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmIGFuXG5leGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gIElmXG50aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgImZpbmFsbHkiXG5jbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICJmaW5hbGx5IlxuY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbmlzIGRpc2NhcmRlZDpcblxuICAgPj4+IGRlZiBmKCk6XG4gICAuLi4gICAgIHRyeTpcbiAgIC4uLiAgICAgICAgIDEvMFxuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4gICAuLi5cbiAgID4+PiBmKClcbiAgIDQyXG5cblRoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbmV4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cblxuV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlIGlzXG5hbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsIGluXG50aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbmltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG5cblRoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG5zdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbiJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSB0aGVcbmxhc3Qgb25lIGV4ZWN1dGVkOlxuXG4gICA+Pj4gZGVmIGZvbygpOlxuICAgLi4uICAgICB0cnk6XG4gICAuLi4gICAgICAgICByZXR1cm4gXCd0cnlcJ1xuICAgLi4uICAgICBmaW5hbGx5OlxuICAgLi4uICAgICAgICAgcmV0dXJuIFwnZmluYWxseVwnXG4gICAuLi5cbiAgID4+PiBmb28oKVxuICAgXCdmaW5hbGx5XCdcblxuQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4qRXhjZXB0aW9ucyosIGFuZCBpbmZvcm1hdGlvbiBvbiB1c2luZyB0aGUgInJhaXNlIiBzdGF0ZW1lbnQgdG9cbmdlbmVyYXRlIGV4Y2VwdGlvbnMgbWF5IGJlIGZvdW5kIGluIHNlY3Rpb24gKlRoZSByYWlzZSBzdGF0ZW1lbnQqLlxuJywKLSAndHlwZXMnOiB1J1xuVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4qKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gIEV4dGVuc2lvblxubW9kdWxlcyAod3JpdHRlbiBpbiBDLCBKYXZhLCBvciBvdGhlciBsYW5ndWFnZXMsIGRlcGVuZGluZyBvbiB0aGVcbmltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcblB5dGhvbiBtYXkgYWRkIHR5cGVzIHRvIHRoZSB0eXBlIGhpZXJhcmNoeSAoZS5nLiwgcmF0aW9uYWwgbnVtYmVycyxcbmVmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoIGFkZGl0aW9uc1xud2lsbCBvZnRlbiBiZSBwcm92aWRlZCB2aWEgdGhlIHN0YW5kYXJkIGxpYnJhcnkgaW5zdGVhZC5cblxuU29tZSBvZiB0aGUgdHlwZSBkZXNjcmlwdGlvbnMgYmVsb3cgY29udGFpbiBhIHBhcmFncmFwaCBsaXN0aW5nXG5cJ3NwZWNpYWwgYXR0cmlidXRlcy5cJyAgVGhlc2UgYXJlIGF0dHJpYnV0ZXMgdGhhdCBwcm92aWRlIGFjY2VzcyB0byB0aGVcbmltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyIGRlZmluaXRpb25cbm1heSBjaGFuZ2UgaW4gdGhlIGZ1dHVyZS5cblxuTm9uZVxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lICJOb25lIi4gSXRcbiAgIGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucywgZS5nLixcbiAgIGl0IGlzIHJldHVybmVkIGZyb20gZnVuY3Rpb25zIHRoYXQgZG9uXCd0IGV4cGxpY2l0bHkgcmV0dXJuXG4gICBhbnl0aGluZy4gSXRzIHRydXRoIHZhbHVlIGlzIGZhbHNlLlxuXG5Ob3RJbXBsZW1lbnRlZFxuICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoIHRoaXNcbiAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4gICAiTm90SW1wbGVtZW50ZWQiLiBOdW1lcmljIG1ldGhvZHMgYW5kIHJpY2ggY29tcGFyaXNvbiBtZXRob2RzXG4gICBzaG91bGQgcmV0dXJuIHRoaXMgdmFsdWUgaWYgdGhleSBkbyBub3QgaW1wbGVtZW50IHRoZSBvcGVyYXRpb24gZm9yXG4gICB0aGUgb3BlcmFuZHMgcHJvdmlkZWQuICAoVGhlIGludGVycHJldGVyIHdpbGwgdGhlbiB0cnkgdGhlXG4gICByZWZsZWN0ZWQgb3BlcmF0aW9uLCBvciBzb21lIG90aGVyIGZhbGxiYWNrLCBkZXBlbmRpbmcgb24gdGhlXG4gICBvcGVyYXRvci4pICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cblxuICAgU2VlICpJbXBsZW1lbnRpbmcgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyogZm9yIG1vcmUgZGV0YWlscy5cblxuRWxsaXBzaXNcbiAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCB0aGlzXG4gICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCAiLi4uIiBvciB0aGVcbiAgIGJ1aWx0LWluIG5hbWUgIkVsbGlwc2lzIi4gIEl0cyB0cnV0aCB2YWx1ZSBpcyB0cnVlLlxuXG4ibnVtYmVycy5OdW1iZXIiXG4gICBUaGVzZSBhcmUgY3JlYXRlZCBieSBudW1lcmljIGxpdGVyYWxzIGFuZCByZXR1cm5lZCBhcyByZXN1bHRzIGJ5XG4gICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICBOdW1lcmljXG4gICBvYmplY3RzIGFyZSBpbW11dGFibGU7IG9uY2UgY3JlYXRlZCB0aGVpciB2YWx1ZSBuZXZlciBjaGFuZ2VzLlxuICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuICAgbnVtYmVycywgYnV0IHN1YmplY3QgdG8gdGhlIGxpbWl0YXRpb25zIG9mIG51bWVyaWNhbCByZXByZXNlbnRhdGlvblxuICAgaW4gY29tcHV0ZXJzLlxuXG4gICBQeXRob24gZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuIGludGVnZXJzLCBmbG9hdGluZyBwb2ludCBudW1iZXJzLCBhbmRcbiAgIGNvbXBsZXggbnVtYmVyczpcblxuICAgIm51bWJlcnMuSW50ZWdyYWwiXG4gICAgICBUaGVzZSByZXByZXNlbnQgZWxlbWVudHMgZnJvbSB0aGUgbWF0aGVtYXRpY2FsIHNldCBvZiBpbnRlZ2Vyc1xuICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG5cbiAgICAgIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgaW50ZWdlcnM6XG5cbiAgICAgIEludGVnZXJzICgiaW50IilcblxuICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4gICAgICAgICBhdmFpbGFibGUgKHZpcnR1YWwpIG1lbW9yeSBvbmx5LiAgRm9yIHRoZSBwdXJwb3NlIG9mIHNoaWZ0XG4gICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCBhbmRcbiAgICAgICAgIG5lZ2F0aXZlIG51bWJlcnMgYXJlIHJlcHJlc2VudGVkIGluIGEgdmFyaWFudCBvZiAyXCdzXG4gICAgICAgICBjb21wbGVtZW50IHdoaWNoIGdpdmVzIHRoZSBpbGx1c2lvbiBvZiBhbiBpbmZpbml0ZSBzdHJpbmcgb2ZcbiAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG5cbiAgICAgIEJvb2xlYW5zICgiYm9vbCIpXG4gICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbiAgICAgICAgIG9iamVjdHMgcmVwcmVzZW50aW5nIHRoZSB2YWx1ZXMgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSB0aGVcbiAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiB0aGVcbiAgICAgICAgIGludGVnZXIgdHlwZSwgYW5kIEJvb2xlYW4gdmFsdWVzIGJlaGF2ZSBsaWtlIHRoZSB2YWx1ZXMgMCBhbmRcbiAgICAgICAgIDEsIHJlc3BlY3RpdmVseSwgaW4gYWxtb3N0IGFsbCBjb250ZXh0cywgdGhlIGV4Y2VwdGlvbiBiZWluZ1xuICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgIiJGYWxzZSIiIG9yXG4gICAgICAgICAiIlRydWUiIiBhcmUgcmV0dXJuZWQsIHJlc3BlY3RpdmVseS5cblxuICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlIHRoZVxuICAgICAgbW9zdCBtZWFuaW5nZnVsIGludGVycHJldGF0aW9uIG9mIHNoaWZ0IGFuZCBtYXNrIG9wZXJhdGlvbnNcbiAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cblxuICAgIm51bWJlcnMuUmVhbCIgKCJmbG9hdCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50XG4gICAgICBudW1iZXJzLiBZb3UgYXJlIGF0IHRoZSBtZXJjeSBvZiB0aGUgdW5kZXJseWluZyBtYWNoaW5lXG4gICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbiAgICAgIHJhbmdlIGFuZCBoYW5kbGluZyBvZiBvdmVyZmxvdy4gUHl0aG9uIGRvZXMgbm90IHN1cHBvcnQgc2luZ2xlLVxuICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciBhbmRcbiAgICAgIG1lbW9yeSB1c2FnZSB0aGF0IGFyZSB1c3VhbGx5IHRoZSByZWFzb24gZm9yIHVzaW5nIHRoZXNlIGFyZVxuICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlIGlzXG4gICAgICBubyByZWFzb24gdG8gY29tcGxpY2F0ZSB0aGUgbGFuZ3VhZ2Ugd2l0aCB0d28ga2luZHMgb2YgZmxvYXRpbmdcbiAgICAgIHBvaW50IG51bWJlcnMuXG5cbiAgICJudW1iZXJzLkNvbXBsZXgiICgiY29tcGxleCIpXG4gICAgICBUaGVzZSByZXByZXNlbnQgY29tcGxleCBudW1iZXJzIGFzIGEgcGFpciBvZiBtYWNoaW5lLWxldmVsXG4gICAgICBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnMuICBUaGUgc2FtZSBjYXZlYXRzIGFwcGx5XG4gICAgICBhcyBmb3IgZmxvYXRpbmcgcG9pbnQgbnVtYmVycy4gVGhlIHJlYWwgYW5kIGltYWdpbmFyeSBwYXJ0cyBvZiBhXG4gICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbiAgICAgIGF0dHJpYnV0ZXMgInoucmVhbCIgYW5kICJ6LmltYWciLlxuXG5TZXF1ZW5jZXNcbiAgIFRoZXNlIHJlcHJlc2VudCBmaW5pdGUgb3JkZXJlZCBzZXRzIGluZGV4ZWQgYnkgbm9uLW5lZ2F0aXZlXG4gICBudW1iZXJzLiBUaGUgYnVpbHQtaW4gZnVuY3Rpb24gImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXNcbiAgIG9mIGEgc2VxdWVuY2UuIFdoZW4gdGhlIGxlbmd0aCBvZiBhIHNlcXVlbmNlIGlzICpuKiwgdGhlIGluZGV4IHNldFxuICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICphKiBpc1xuICAgc2VsZWN0ZWQgYnkgImFbaV0iLlxuXG4gICBTZXF1ZW5jZXMgYWxzbyBzdXBwb3J0IHNsaWNpbmc6ICJhW2k6al0iIHNlbGVjdHMgYWxsIGl0ZW1zIHdpdGhcbiAgIGluZGV4ICprKiBzdWNoIHRoYXQgKmkqICI8PSIgKmsqICI8IiAqaiouICBXaGVuIHVzZWQgYXMgYW5cbiAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyBpbXBsaWVzXG4gICB0aGF0IHRoZSBpbmRleCBzZXQgaXMgcmVudW1iZXJlZCBzbyB0aGF0IGl0IHN0YXJ0cyBhdCAwLlxuXG4gICBTb21lIHNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgImV4dGVuZGVkIHNsaWNpbmciIHdpdGggYSB0aGlyZCAic3RlcCJcbiAgIHBhcmFtZXRlcjogImFbaTpqOmtdIiBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCogd2hlcmVcbiAgICJ4ID0gaSArIG4qayIsICpuKiAiPj0iICIwIiBhbmQgKmkqICI8PSIgKngqICI8IiAqaiouXG5cbiAgIFNlcXVlbmNlcyBhcmUgZGlzdGluZ3Vpc2hlZCBhY2NvcmRpbmcgdG8gdGhlaXIgbXV0YWJpbGl0eTpcblxuICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgQW4gb2JqZWN0IG9mIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlIGNhbm5vdCBjaGFuZ2Ugb25jZSBpdCBpc1xuICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgb2JqZWN0cyxcbiAgICAgIHRoZXNlIG90aGVyIG9iamVjdHMgbWF5IGJlIG11dGFibGUgYW5kIG1heSBiZSBjaGFuZ2VkOyBob3dldmVyLFxuICAgICAgdGhlIGNvbGxlY3Rpb24gb2Ygb2JqZWN0cyBkaXJlY3RseSByZWZlcmVuY2VkIGJ5IGFuIGltbXV0YWJsZVxuICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuXG4gICAgICBUaGUgZm9sbG93aW5nIHR5cGVzIGFyZSBpbW11dGFibGUgc2VxdWVuY2VzOlxuXG4gICAgICBTdHJpbmdzXG4gICAgICAgICBBIHN0cmluZyBpcyBhIHNlcXVlbmNlIG9mIHZhbHVlcyB0aGF0IHJlcHJlc2VudCBVbmljb2RlIGNvZGVcbiAgICAgICAgIHBvaW50cy4gQWxsIHRoZSBjb2RlIHBvaW50cyBpbiB0aGUgcmFuZ2UgIlUrMDAwMCAtIFUrMTBGRkZGIlxuICAgICAgICAgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgUHl0aG9uIGRvZXNuXCd0IGhhdmUgYSAiY2hhciJcbiAgICAgICAgIHR5cGU7IGluc3RlYWQsIGV2ZXJ5IGNvZGUgcG9pbnQgaW4gdGhlIHN0cmluZyBpcyByZXByZXNlbnRlZFxuICAgICAgICAgYXMgYSBzdHJpbmcgb2JqZWN0IHdpdGggbGVuZ3RoICIxIi4gIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgICAgICAgIm9yZCgpIiBjb252ZXJ0cyBhIGNvZGUgcG9pbnQgZnJvbSBpdHMgc3RyaW5nIGZvcm0gdG8gYW5cbiAgICAgICAgIGludGVnZXIgaW4gdGhlIHJhbmdlICIwIC0gMTBGRkZGIjsgImNocigpIiBjb252ZXJ0cyBhblxuICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiIHRvIHRoZSBjb3JyZXNwb25kaW5nIGxlbmd0aFxuICAgICAgICAgIjEiIHN0cmluZyBvYmplY3QuICJzdHIuZW5jb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGNvbnZlcnQgYVxuICAgICAgICAgInN0ciIgdG8gImJ5dGVzIiB1c2luZyB0aGUgZ2l2ZW4gdGV4dCBlbmNvZGluZywgYW5kXG4gICAgICAgICAiYnl0ZXMuZGVjb2RlKCkiIGNhbiBiZSB1c2VkIHRvIGFjaGlldmUgdGhlIG9wcG9zaXRlLlxuXG4gICAgICBUdXBsZXNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIHR1cGxlIGFyZSBhcmJpdHJhcnkgUHl0aG9uIG9iamVjdHMuIFR1cGxlcyBvZlxuICAgICAgICAgdHdvIG9yIG1vcmUgaXRlbXMgYXJlIGZvcm1lZCBieSBjb21tYS1zZXBhcmF0ZWQgbGlzdHMgb2ZcbiAgICAgICAgIGV4cHJlc3Npb25zLiAgQSB0dXBsZSBvZiBvbmUgaXRlbSAoYSBcJ3NpbmdsZXRvblwnKSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhZmZpeGluZyBhIGNvbW1hIHRvIGFuIGV4cHJlc3Npb24gKGFuIGV4cHJlc3Npb24gYnlcbiAgICAgICAgIGl0c2VsZiBkb2VzIG5vdCBjcmVhdGUgYSB0dXBsZSwgc2luY2UgcGFyZW50aGVzZXMgbXVzdCBiZVxuICAgICAgICAgdXNhYmxlIGZvciBncm91cGluZyBvZiBleHByZXNzaW9ucykuICBBbiBlbXB0eSB0dXBsZSBjYW4gYmVcbiAgICAgICAgIGZvcm1lZCBieSBhbiBlbXB0eSBwYWlyIG9mIHBhcmVudGhlc2VzLlxuXG4gICAgICBCeXRlc1xuICAgICAgICAgQSBieXRlcyBvYmplY3QgaXMgYW4gaW1tdXRhYmxlIGFycmF5LiAgVGhlIGl0ZW1zIGFyZSA4LWJpdFxuICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4gICAgICAgICBCeXRlcyBsaXRlcmFscyAobGlrZSAiYlwnYWJjXCciKSBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uXG4gICAgICAgICAiYnl0ZXMoKSIgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuICAgICAgICAgYnl0ZXMgb2JqZWN0cyBjYW4gYmUgZGVjb2RlZCB0byBzdHJpbmdzIHZpYSB0aGUgImRlY29kZSgpIlxuICAgICAgICAgbWV0aG9kLlxuXG4gICBNdXRhYmxlIHNlcXVlbmNlc1xuICAgICAgTXV0YWJsZSBzZXF1ZW5jZXMgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZC4gIFRoZVxuICAgICAgc3Vic2NyaXB0aW9uIGFuZCBzbGljaW5nIG5vdGF0aW9ucyBjYW4gYmUgdXNlZCBhcyB0aGUgdGFyZ2V0IG9mXG4gICAgICBhc3NpZ25tZW50IGFuZCAiZGVsIiAoZGVsZXRlKSBzdGF0ZW1lbnRzLlxuXG4gICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcblxuICAgICAgTGlzdHNcbiAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzIGFyZVxuICAgICAgICAgZm9ybWVkIGJ5IHBsYWNpbmcgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdCBvZiBleHByZXNzaW9ucyBpblxuICAgICAgICAgc3F1YXJlIGJyYWNrZXRzLiAoTm90ZSB0aGF0IHRoZXJlIGFyZSBubyBzcGVjaWFsIGNhc2VzIG5lZWRlZFxuICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcblxuICAgICAgQnl0ZSBBcnJheXNcbiAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgYnlcbiAgICAgICAgIHRoZSBidWlsdC1pbiAiYnl0ZWFycmF5KCkiIGNvbnN0cnVjdG9yLiAgQXNpZGUgZnJvbSBiZWluZ1xuICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgcHJvdmlkZVxuICAgICAgICAgdGhlIHNhbWUgaW50ZXJmYWNlIGFuZCBmdW5jdGlvbmFsaXR5IGFzIGltbXV0YWJsZSBieXRlc1xuICAgICAgICAgb2JqZWN0cy5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGUgImFycmF5IiBwcm92aWRlcyBhbiBhZGRpdGlvbmFsIGV4YW1wbGUgb2YgYVxuICAgICAgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCBhcyBkb2VzIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS5cblxuU2V0IHR5cGVzXG4gICBUaGVzZSByZXByZXNlbnQgdW5vcmRlcmVkLCBmaW5pdGUgc2V0cyBvZiB1bmlxdWUsIGltbXV0YWJsZVxuICAgb2JqZWN0cy4gQXMgc3VjaCwgdGhleSBjYW5ub3QgYmUgaW5kZXhlZCBieSBhbnkgc3Vic2NyaXB0LiBIb3dldmVyLFxuICAgdGhleSBjYW4gYmUgaXRlcmF0ZWQgb3ZlciwgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiXG4gICByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBzZXQuIENvbW1vbiB1c2VzIGZvciBzZXRzIGFyZSBmYXN0XG4gICBtZW1iZXJzaGlwIHRlc3RpbmcsIHJlbW92aW5nIGR1cGxpY2F0ZXMgZnJvbSBhIHNlcXVlbmNlLCBhbmRcbiAgIGNvbXB1dGluZyBtYXRoZW1hdGljYWwgb3BlcmF0aW9ucyBzdWNoIGFzIGludGVyc2VjdGlvbiwgdW5pb24sXG4gICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG5cbiAgIEZvciBzZXQgZWxlbWVudHMsIHRoZSBzYW1lIGltbXV0YWJpbGl0eSBydWxlcyBhcHBseSBhcyBmb3JcbiAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvclxuICAgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kXG4gICAiMS4wIiksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cblxuICAgVGhlcmUgYXJlIGN1cnJlbnRseSB0d28gaW50cmluc2ljIHNldCB0eXBlczpcblxuICAgU2V0c1xuICAgICAgVGhlc2UgcmVwcmVzZW50IGEgbXV0YWJsZSBzZXQuIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluXG4gICAgICAic2V0KCkiIGNvbnN0cnVjdG9yIGFuZCBjYW4gYmUgbW9kaWZpZWQgYWZ0ZXJ3YXJkcyBieSBzZXZlcmFsXG4gICAgICBtZXRob2RzLCBzdWNoIGFzICJhZGQoKSIuXG5cbiAgIEZyb3plbiBzZXRzXG4gICAgICBUaGVzZSByZXByZXNlbnQgYW4gaW1tdXRhYmxlIHNldC4gIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlXG4gICAgICBidWlsdC1pbiAiZnJvemVuc2V0KCkiIGNvbnN0cnVjdG9yLiAgQXMgYSBmcm96ZW5zZXQgaXMgaW1tdXRhYmxlXG4gICAgICBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZiBhbm90aGVyXG4gICAgICBzZXQsIG9yIGFzIGEgZGljdGlvbmFyeSBrZXkuXG5cbk1hcHBpbmdzXG4gICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IGFyYml0cmFyeSBpbmRleFxuICAgc2V0cy4gVGhlIHN1YnNjcmlwdCBub3RhdGlvbiAiYVtrXSIgc2VsZWN0cyB0aGUgaXRlbSBpbmRleGVkIGJ5ICJrIlxuICAgZnJvbSB0aGUgbWFwcGluZyAiYSI7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kIGFzIHRoZVxuICAgdGFyZ2V0IG9mIGFzc2lnbm1lbnRzIG9yICJkZWwiIHN0YXRlbWVudHMuIFRoZSBidWlsdC1pbiBmdW5jdGlvblxuICAgImxlbigpIiByZXR1cm5zIHRoZSBudW1iZXIgb2YgaXRlbXMgaW4gYSBtYXBwaW5nLlxuXG4gICBUaGVyZSBpcyBjdXJyZW50bHkgYSBzaW5nbGUgaW50cmluc2ljIG1hcHBpbmcgdHlwZTpcblxuICAgRGljdGlvbmFyaWVzXG4gICAgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IG5lYXJseVxuICAgICAgYXJiaXRyYXJ5IHZhbHVlcy4gIFRoZSBvbmx5IHR5cGVzIG9mIHZhbHVlcyBub3QgYWNjZXB0YWJsZSBhc1xuICAgICAga2V5cyBhcmUgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9yIG90aGVyXG4gICAgICBtdXRhYmxlIHR5cGVzIHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuIGJ5IG9iamVjdFxuICAgICAgaWRlbnRpdHksIHRoZSByZWFzb24gYmVpbmcgdGhhdCB0aGUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uIG9mXG4gICAgICBkaWN0aW9uYXJpZXMgcmVxdWlyZXMgYSBrZXlcJ3MgaGFzaCB2YWx1ZSB0byByZW1haW4gY29uc3RhbnQuXG4gICAgICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzIGZvciBudW1lcmljXG4gICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICIxLjAiKVxuICAgICAgdGhlbiB0aGV5IGNhbiBiZSB1c2VkIGludGVyY2hhbmdlYWJseSB0byBpbmRleCB0aGUgc2FtZVxuICAgICAgZGljdGlvbmFyeSBlbnRyeS5cblxuICAgICAgRGljdGlvbmFyaWVzIGFyZSBtdXRhYmxlOyB0aGV5IGNhbiBiZSBjcmVhdGVkIGJ5IHRoZSAiey4uLn0iXG4gICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gKkRpY3Rpb25hcnkgZGlzcGxheXMqKS5cblxuICAgICAgVGhlIGV4dGVuc2lvbiBtb2R1bGVzICJkYm0ubmRibSIgYW5kICJkYm0uZ251IiBwcm92aWRlXG4gICAgICBhZGRpdGlvbmFsIGV4YW1wbGVzIG9mIG1hcHBpbmcgdHlwZXMsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyJcbiAgICAgIG1vZHVsZS5cblxuQ2FsbGFibGUgdHlwZXNcbiAgIFRoZXNlIGFyZSB0aGUgdHlwZXMgdG8gd2hpY2ggdGhlIGZ1bmN0aW9uIGNhbGwgb3BlcmF0aW9uIChzZWVcbiAgIHNlY3Rpb24gKkNhbGxzKikgY2FuIGJlIGFwcGxpZWQ6XG5cbiAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbiAgICAgIEEgdXNlci1kZWZpbmVkIGZ1bmN0aW9uIG9iamVjdCBpcyBjcmVhdGVkIGJ5IGEgZnVuY3Rpb25cbiAgICAgIGRlZmluaXRpb24gKHNlZSBzZWN0aW9uICpGdW5jdGlvbiBkZWZpbml0aW9ucyopLiAgSXQgc2hvdWxkIGJlXG4gICAgICBjYWxsZWQgd2l0aCBhbiBhcmd1bWVudCBsaXN0IGNvbnRhaW5pbmcgdGhlIHNhbWUgbnVtYmVyIG9mIGl0ZW1zXG4gICAgICBhcyB0aGUgZnVuY3Rpb25cJ3MgZm9ybWFsIHBhcmFtZXRlciBsaXN0LlxuXG4gICAgICBTcGVjaWFsIGF0dHJpYnV0ZXM6XG5cbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8IEF0dHJpYnV0ZSAgICAgICAgICAgICAgICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKz09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PStcbiAgICAgIHwgIl9fZG9jX18iICAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgc3RyaW5nLCBvciAiTm9uZSIgaWYgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHVuYXZhaWxhYmxlOyBub3QgaW5oZXJpdGVkIGJ5ICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdWJjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fbmFtZV9fIiAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyBuYW1lICAgICAgICAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fcXVhbG5hbWVfXyIgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAqcXVhbGlmaWVkIG5hbWUqIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTmV3IGluIHZlcnNpb24gMy4zLiAgICAgICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX21vZHVsZV9fIiAgICAgICAgICAgICAgfCBUaGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSAgICAgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24gd2FzIGRlZmluZWQgaW4sIG9yICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJOb25lIiBpZiB1bmF2YWlsYWJsZS4gICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19kZWZhdWx0c19fIiAgICAgICAgICAgIHwgQSB0dXBsZSBjb250YWluaW5nIGRlZmF1bHQgICAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmd1bWVudHMgdGhhdCBoYXZlIGRlZmF1bHRzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb3IgIk5vbmUiIGlmIG5vIGFyZ3VtZW50cyBoYXZlICB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19jb2RlX18iICAgICAgICAgICAgICAgIHwgVGhlIGNvZGUgb2JqZWN0IHJlcHJlc2VudGluZyAgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19nbG9iYWxzX18iICAgICAgICAgICAgIHwgQSByZWZlcmVuY2UgdG8gdGhlIGRpY3Rpb25hcnkgICB8IFJlYWQtb25seSAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uXCdzICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCB8ICAgICAgICAgICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG5hbWVzcGFjZSBvZiB0aGUgbW9kdWxlIGluICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGljaCB0aGUgZnVuY3Rpb24gd2FzIGRlZmluZWQuIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fZGljdF9fIiAgICAgICAgICAgICAgICB8IFRoZSBuYW1lc3BhY2Ugc3VwcG9ydGluZyAgICAgICAgfCBXcml0YWJsZSAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcmJpdHJhcnkgZnVuY3Rpb24gYXR0cmlidXRlcy4gIHwgICAgICAgICAgICAgfFxuICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbiAgICAgIHwgIl9fY2xvc3VyZV9fIiAgICAgICAgICAgICB8ICJOb25lIiBvciBhIHR1cGxlIG9mIGNlbGxzIHRoYXQgfCBSZWFkLW9ubHkgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBjb250YWluIGJpbmRpbmdzIGZvciB0aGUgICAgICAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb25cJ3MgZnJlZSB2YXJpYWJsZXMuICAgICAgfCAgICAgICAgICAgICB8XG4gICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuICAgICAgfCAiX19hbm5vdGF0aW9uc19fIiAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgYW5ub3RhdGlvbnMgICB8IFdyaXRhYmxlICAgIHxcbiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IG9mIHBhcmFtZXRlcnMuICBUaGUga2V5cyBvZiB0aGUgfCAgICAgICAgICAgICB8XG4gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5kICJcJ3JldHVyblwnIiBmb3IgdGhlIHJldHVybiAgIHwgICAgICAgICAgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYW5ub3RhdGlvbiwgaWYgcHJvdmlkZWQuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4gICAgICB8ICJfX2t3ZGVmYXVsdHNfXyIgICAgICAgICAgfCBBIGRpY3QgY29udGFpbmluZyBkZWZhdWx0cyBmb3IgIHwgV3JpdGFibGUgICAgfFxuICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwga2V5d29yZC1vbmx5IHBhcmFtZXRlcnMuICAgICAgICB8ICAgICAgICAgICAgIHxcbiAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG5cbiAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiB0aGVcbiAgICAgIGFzc2lnbmVkIHZhbHVlLlxuXG4gICAgICBGdW5jdGlvbiBvYmplY3RzIGFsc28gc3VwcG9ydCBnZXR0aW5nIGFuZCBzZXR0aW5nIGFyYml0cmFyeVxuICAgICAgYXR0cmlidXRlcywgd2hpY2ggY2FuIGJlIHVzZWQsIGZvciBleGFtcGxlLCB0byBhdHRhY2ggbWV0YWRhdGFcbiAgICAgIHRvIGZ1bmN0aW9ucy4gIFJlZ3VsYXIgYXR0cmlidXRlIGRvdC1ub3RhdGlvbiBpcyB1c2VkIHRvIGdldCBhbmRcbiAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb25seVxuICAgICAgc3VwcG9ydHMgZnVuY3Rpb24gYXR0cmlidXRlcyBvbiB1c2VyLWRlZmluZWQgZnVuY3Rpb25zLiBGdW5jdGlvblxuICAgICAgYXR0cmlidXRlcyBvbiBidWlsdC1pbiBmdW5jdGlvbnMgbWF5IGJlIHN1cHBvcnRlZCBpbiB0aGVcbiAgICAgIGZ1dHVyZS4qXG5cbiAgICAgIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgYSBmdW5jdGlvblwncyBkZWZpbml0aW9uIGNhbiBiZVxuICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mIGludGVybmFsXG4gICAgICB0eXBlcyBiZWxvdy5cblxuICAgSW5zdGFuY2UgbWV0aG9kc1xuICAgICAgQW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBjb21iaW5lcyBhIGNsYXNzLCBhIGNsYXNzIGluc3RhbmNlIGFuZFxuICAgICAgYW55IGNhbGxhYmxlIG9iamVjdCAobm9ybWFsbHkgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24pLlxuXG4gICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiX19zZWxmX18iIGlzIHRoZSBjbGFzcyBpbnN0YW5jZVxuICAgICAgb2JqZWN0LCAiX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBvYmplY3Q7ICJfX2RvY19fIiBpcyB0aGVcbiAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzICJfX2Z1bmNfXy5fX2RvY19fIik7ICJfX25hbWVfXyJcbiAgICAgIGlzIHRoZSBtZXRob2QgbmFtZSAoc2FtZSBhcyAiX19mdW5jX18uX19uYW1lX18iKTsgIl9fbW9kdWxlX18iXG4gICAgICBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBtZXRob2Qgd2FzIGRlZmluZWQgaW4sIG9yICJOb25lIlxuICAgICAgaWYgdW5hdmFpbGFibGUuXG5cbiAgICAgIE1ldGhvZHMgYWxzbyBzdXBwb3J0IGFjY2Vzc2luZyAoYnV0IG5vdCBzZXR0aW5nKSB0aGUgYXJiaXRyYXJ5XG4gICAgICBmdW5jdGlvbiBhdHRyaWJ1dGVzIG9uIHRoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdC5cblxuICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuICAgICAgYXR0cmlidXRlIG9mIGEgY2xhc3MgKHBlcmhhcHMgdmlhIGFuIGluc3RhbmNlIG9mIHRoYXQgY2xhc3MpLCBpZlxuICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbiAgICAgIG1ldGhvZCBvYmplY3QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSB1c2VyLVxuICAgICAgZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgZnJvbSBhIGNsYXNzIHZpYSBvbmUgb2YgaXRzIGluc3RhbmNlcyxcbiAgICAgIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UsIGFuZCB0aGUgbWV0aG9kIG9iamVjdFxuICAgICAgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzICJfX2Z1bmNfXyIgYXR0cmlidXRlIGlzXG4gICAgICB0aGUgb3JpZ2luYWwgZnVuY3Rpb24gb2JqZWN0LlxuXG4gICAgICBXaGVuIGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QgaXMgY3JlYXRlZCBieSByZXRyaWV2aW5nXG4gICAgICBhbm90aGVyIG1ldGhvZCBvYmplY3QgZnJvbSBhIGNsYXNzIG9yIGluc3RhbmNlLCB0aGUgYmVoYXZpb3VyIGlzXG4gICAgICB0aGUgc2FtZSBhcyBmb3IgYSBmdW5jdGlvbiBvYmplY3QsIGV4Y2VwdCB0aGF0IHRoZSAiX19mdW5jX18iXG4gICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCBvYmplY3RcbiAgICAgIGJ1dCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSBjbGFzc1xuICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiX19zZWxmX18iIGF0dHJpYnV0ZVxuICAgICAgaXMgdGhlIGNsYXNzIGl0c2VsZiwgYW5kIGl0cyAiX19mdW5jX18iIGF0dHJpYnV0ZSBpcyB0aGVcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjYWxsZWQsIHRoZSB1bmRlcmx5aW5nXG4gICAgICBmdW5jdGlvbiAoIl9fZnVuY19fIikgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzIGluc3RhbmNlXG4gICAgICAoIl9fc2VsZl9fIikgaW4gZnJvbnQgb2YgdGhlIGFyZ3VtZW50IGxpc3QuICBGb3IgaW5zdGFuY2UsIHdoZW5cbiAgICAgICJDIiBpcyBhIGNsYXNzIHdoaWNoIGNvbnRhaW5zIGEgZGVmaW5pdGlvbiBmb3IgYSBmdW5jdGlvbiAiZigpIixcbiAgICAgIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgIkMiLCBjYWxsaW5nICJ4LmYoMSkiIGlzIGVxdWl2YWxlbnQgdG9cbiAgICAgIGNhbGxpbmcgIkMuZih4LCAxKSIuXG5cbiAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBkZXJpdmVkIGZyb20gYSBjbGFzcyBtZXRob2RcbiAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluICJfX3NlbGZfXyIgd2lsbCBhY3R1YWxseVxuICAgICAgYmUgdGhlIGNsYXNzIGl0c2VsZiwgc28gdGhhdCBjYWxsaW5nIGVpdGhlciAieC5mKDEpIiBvciAiQy5mKDEpIlxuICAgICAgaXMgZXF1aXZhbGVudCB0byBjYWxsaW5nICJmKEMsMSkiIHdoZXJlICJmIiBpcyB0aGUgdW5kZXJseWluZ1xuICAgICAgZnVuY3Rpb24uXG5cbiAgICAgIE5vdGUgdGhhdCB0aGUgdHJhbnNmb3JtYXRpb24gZnJvbSBmdW5jdGlvbiBvYmplY3QgdG8gaW5zdGFuY2VcbiAgICAgIG1ldGhvZCBvYmplY3QgaGFwcGVucyBlYWNoIHRpbWUgdGhlIGF0dHJpYnV0ZSBpcyByZXRyaWV2ZWQgZnJvbVxuICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbiAgICAgIGFzc2lnbiB0aGUgYXR0cmlidXRlIHRvIGEgbG9jYWwgdmFyaWFibGUgYW5kIGNhbGwgdGhhdCBsb2NhbFxuICAgICAgdmFyaWFibGUuIEFsc28gbm90aWNlIHRoYXQgdGhpcyB0cmFuc2Zvcm1hdGlvbiBvbmx5IGhhcHBlbnMgZm9yXG4gICAgICB1c2VyLWRlZmluZWQgZnVuY3Rpb25zOyBvdGhlciBjYWxsYWJsZSBvYmplY3RzIChhbmQgYWxsIG5vbi1cbiAgICAgIGNhbGxhYmxlIG9iamVjdHMpIGFyZSByZXRyaWV2ZWQgd2l0aG91dCB0cmFuc2Zvcm1hdGlvbi4gIEl0IGlzXG4gICAgICBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucyB3aGljaCBhcmVcbiAgICAgIGF0dHJpYnV0ZXMgb2YgYSBjbGFzcyBpbnN0YW5jZSBhcmUgbm90IGNvbnZlcnRlZCB0byBib3VuZFxuICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiBhdHRyaWJ1dGVcbiAgICAgIG9mIHRoZSBjbGFzcy5cblxuICAgR2VuZXJhdG9yIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggdXNlcyB0aGUgInlpZWxkIiBzdGF0ZW1lbnQgKHNlZVxuICAgICAgc2VjdGlvbiAqVGhlIHlpZWxkIHN0YXRlbWVudCopIGlzIGNhbGxlZCBhICpnZW5lcmF0b3IgZnVuY3Rpb24qLlxuICAgICAgU3VjaCBhIGZ1bmN0aW9uLCB3aGVuIGNhbGxlZCwgYWx3YXlzIHJldHVybnMgYW4gaXRlcmF0b3Igb2JqZWN0XG4gICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogIGNhbGxpbmdcbiAgICAgIHRoZSBpdGVyYXRvclwncyAiaXRlcmF0b3IuX19uZXh0X18oKSIgbWV0aG9kIHdpbGwgY2F1c2UgdGhlXG4gICAgICBmdW5jdGlvbiB0byBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICJ5aWVsZCJcbiAgICAgIHN0YXRlbWVudC4gIFdoZW4gdGhlIGZ1bmN0aW9uIGV4ZWN1dGVzIGEgInJldHVybiIgc3RhdGVtZW50IG9yXG4gICAgICBmYWxscyBvZmYgdGhlIGVuZCwgYSAiU3RvcEl0ZXJhdGlvbiIgZXhjZXB0aW9uIGlzIHJhaXNlZCBhbmQgdGhlXG4gICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvIGJlXG4gICAgICByZXR1cm5lZC5cblxuICAgQ29yb3V0aW5lIGZ1bmN0aW9uc1xuICAgICAgQSBmdW5jdGlvbiBvciBtZXRob2Qgd2hpY2ggaXMgZGVmaW5lZCB1c2luZyAiYXN5bmMgZGVmIiBpc1xuICAgICAgY2FsbGVkIGEgKmNvcm91dGluZSBmdW5jdGlvbiouICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLFxuICAgICAgcmV0dXJucyBhICpjb3JvdXRpbmUqIG9iamVjdC4gIEl0IG1heSBjb250YWluICJhd2FpdCJcbiAgICAgIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzICJhc3luYyB3aXRoIiBhbmQgImFzeW5jIGZvciIgc3RhdGVtZW50cy5cbiAgICAgIFNlZSBhbHNvIHRoZSAqQ29yb3V0aW5lIE9iamVjdHMqIHNlY3Rpb24uXG5cbiAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuICAgICAgQSBidWlsdC1pbiBmdW5jdGlvbiBvYmplY3QgaXMgYSB3cmFwcGVyIGFyb3VuZCBhIEMgZnVuY3Rpb24uXG4gICAgICBFeGFtcGxlcyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYXJlICJsZW4oKSIgYW5kICJtYXRoLnNpbigpIlxuICAgICAgKCJtYXRoIiBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgb2ZcbiAgICAgIHRoZSBhcmd1bWVudHMgYXJlIGRldGVybWluZWQgYnkgdGhlIEMgZnVuY3Rpb24uIFNwZWNpYWwgcmVhZC1cbiAgICAgIG9ubHkgYXR0cmlidXRlczogIl9fZG9jX18iIGlzIHRoZSBmdW5jdGlvblwncyBkb2N1bWVudGF0aW9uXG4gICAgICBzdHJpbmcsIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZTsgIl9fbmFtZV9fIiBpcyB0aGUgZnVuY3Rpb25cJ3NcbiAgICAgIG5hbWU7ICJfX3NlbGZfXyIgaXMgc2V0IHRvICJOb25lIiAoYnV0IHNlZSB0aGUgbmV4dCBpdGVtKTtcbiAgICAgICJfX21vZHVsZV9fIiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZFxuICAgICAgaW4gb3IgIk5vbmUiIGlmIHVuYXZhaWxhYmxlLlxuXG4gICBCdWlsdC1pbiBtZXRob2RzXG4gICAgICBUaGlzIGlzIHJlYWxseSBhIGRpZmZlcmVudCBkaXNndWlzZSBvZiBhIGJ1aWx0LWluIGZ1bmN0aW9uLCB0aGlzXG4gICAgICB0aW1lIGNvbnRhaW5pbmcgYW4gb2JqZWN0IHBhc3NlZCB0byB0aGUgQyBmdW5jdGlvbiBhcyBhblxuICAgICAgaW1wbGljaXQgZXh0cmEgYXJndW1lbnQuICBBbiBleGFtcGxlIG9mIGEgYnVpbHQtaW4gbWV0aG9kIGlzXG4gICAgICAiYWxpc3QuYXBwZW5kKCkiLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbiAgICAgIGNhc2UsIHRoZSBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGUgIl9fc2VsZl9fIiBpcyBzZXQgdG8gdGhlXG4gICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuXG4gICBDbGFzc2VzXG4gICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzIGZhY3Rvcmllc1xuICAgICAgZm9yIG5ldyBpbnN0YW5jZXMgb2YgdGhlbXNlbHZlcywgYnV0IHZhcmlhdGlvbnMgYXJlIHBvc3NpYmxlIGZvclxuICAgICAgY2xhc3MgdHlwZXMgdGhhdCBvdmVycmlkZSAiX19uZXdfXygpIi4gIFRoZSBhcmd1bWVudHMgb2YgdGhlXG4gICAgICBjYWxsIGFyZSBwYXNzZWQgdG8gIl9fbmV3X18oKSIgYW5kLCBpbiB0aGUgdHlwaWNhbCBjYXNlLCB0b1xuICAgICAgIl9faW5pdF9fKCkiIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cblxuICAgQ2xhc3MgSW5zdGFuY2VzXG4gICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgZGVmaW5pbmdcbiAgICAgIGEgIl9fY2FsbF9fKCkiIG1ldGhvZCBpbiB0aGVpciBjbGFzcy5cblxuTW9kdWxlc1xuICAgTW9kdWxlcyBhcmUgYSBiYXNpYyBvcmdhbml6YXRpb25hbCB1bml0IG9mIFB5dGhvbiBjb2RlLCBhbmQgYXJlXG4gICBjcmVhdGVkIGJ5IHRoZSAqaW1wb3J0IHN5c3RlbSogYXMgaW52b2tlZCBlaXRoZXIgYnkgdGhlICJpbXBvcnQiXG4gICBzdGF0ZW1lbnQgKHNlZSAiaW1wb3J0IiksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbiAgICJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBhbmQgYnVpbHQtaW4gIl9faW1wb3J0X18oKSIuICBBIG1vZHVsZVxuICAgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzIGlzXG4gICB0aGUgZGljdGlvbmFyeSByZWZlcmVuY2VkIGJ5IHRoZSAiX19nbG9iYWxzX18iIGF0dHJpYnV0ZSBvZlxuICAgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbiAgIHRyYW5zbGF0ZWQgdG8gbG9va3VwcyBpbiB0aGlzIGRpY3Rpb25hcnksIGUuZy4sICJtLngiIGlzIGVxdWl2YWxlbnRcbiAgIHRvICJtLl9fZGljdF9fWyJ4Il0iLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZVxuICAgb2JqZWN0IHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgbW9kdWxlIChzaW5jZSBpdCBpc25cJ3QgbmVlZGVkIG9uY2VcbiAgIHRoZSBpbml0aWFsaXphdGlvbiBpcyBkb25lKS5cblxuICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlXCdzIG5hbWVzcGFjZSBkaWN0aW9uYXJ5LFxuICAgZS5nLiwgIm0ueCA9IDEiIGlzIGVxdWl2YWxlbnQgdG8gIm0uX19kaWN0X19bIngiXSA9IDEiLlxuXG4gICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6ICJfX2RpY3RfXyIgaXMgdGhlIG1vZHVsZVwncyBuYW1lc3BhY2VcbiAgIGFzIGEgZGljdGlvbmFyeSBvYmplY3QuXG5cbiAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogQmVjYXVzZSBvZiB0aGUgd2F5IENQeXRob25cbiAgIGNsZWFycyBtb2R1bGUgZGljdGlvbmFyaWVzLCB0aGUgbW9kdWxlIGRpY3Rpb25hcnkgd2lsbCBiZSBjbGVhcmVkXG4gICB3aGVuIHRoZSBtb2R1bGUgZmFsbHMgb3V0IG9mIHNjb3BlIGV2ZW4gaWYgdGhlIGRpY3Rpb25hcnkgc3RpbGwgaGFzXG4gICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgdGhlXG4gICBtb2R1bGUgYXJvdW5kIHdoaWxlIHVzaW5nIGl0cyBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuXG4gICBQcmVkZWZpbmVkICh3cml0YWJsZSkgYXR0cmlidXRlczogIl9fbmFtZV9fIiBpcyB0aGUgbW9kdWxlXCdzIG5hbWU7XG4gICAiX19kb2NfXyIgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmXG4gICB1bmF2YWlsYWJsZTsgIl9fZmlsZV9fIiBpcyB0aGUgcGF0aG5hbWUgb2YgdGhlIGZpbGUgZnJvbSB3aGljaCB0aGVcbiAgIG1vZHVsZSB3YXMgbG9hZGVkLCBpZiBpdCB3YXMgbG9hZGVkIGZyb20gYSBmaWxlLiBUaGUgIl9fZmlsZV9fIlxuICAgYXR0cmlidXRlIG1heSBiZSBtaXNzaW5nIGZvciBjZXJ0YWluIHR5cGVzIG9mIG1vZHVsZXMsIHN1Y2ggYXMgQ1xuICAgbW9kdWxlcyB0aGF0IGFyZSBzdGF0aWNhbGx5IGxpbmtlZCBpbnRvIHRoZSBpbnRlcnByZXRlcjsgZm9yXG4gICBleHRlbnNpb24gbW9kdWxlcyBsb2FkZWQgZHluYW1pY2FsbHkgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LCBpdCBpc1xuICAgdGhlIHBhdGhuYW1lIG9mIHRoZSBzaGFyZWQgbGlicmFyeSBmaWxlLlxuXG5DdXN0b20gY2xhc3Nlc1xuICAgQ3VzdG9tIGNsYXNzIHR5cGVzIGFyZSB0eXBpY2FsbHkgY3JlYXRlZCBieSBjbGFzcyBkZWZpbml0aW9ucyAoc2VlXG4gICBzZWN0aW9uICpDbGFzcyBkZWZpbml0aW9ucyopLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWRcbiAgIGJ5IGEgZGljdGlvbmFyeSBvYmplY3QuIENsYXNzIGF0dHJpYnV0ZSByZWZlcmVuY2VzIGFyZSB0cmFuc2xhdGVkXG4gICB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIkMueCIgaXMgdHJhbnNsYXRlZCB0b1xuICAgIkMuX19kaWN0X19bIngiXSIgKGFsdGhvdWdoIHRoZXJlIGFyZSBhIG51bWJlciBvZiBob29rcyB3aGljaCBhbGxvd1xuICAgZm9yIG90aGVyIG1lYW5zIG9mIGxvY2F0aW5nIGF0dHJpYnV0ZXMpLiBXaGVuIHRoZSBhdHRyaWJ1dGUgbmFtZSBpc1xuICAgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbiAgIGNsYXNzZXMuIFRoaXMgc2VhcmNoIG9mIHRoZSBiYXNlIGNsYXNzZXMgdXNlcyB0aGUgQzMgbWV0aG9kXG4gICByZXNvbHV0aW9uIG9yZGVyIHdoaWNoIGJlaGF2ZXMgY29ycmVjdGx5IGV2ZW4gaW4gdGhlIHByZXNlbmNlIG9mXG4gICBcJ2RpYW1vbmRcJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuICAgaW5oZXJpdGFuY2UgcGF0aHMgbGVhZGluZyBiYWNrIHRvIGEgY29tbW9uIGFuY2VzdG9yLiBBZGRpdGlvbmFsXG4gICBkZXRhaWxzIG9uIHRoZSBDMyBNUk8gdXNlZCBieSBQeXRob24gY2FuIGJlIGZvdW5kIGluIHRoZVxuICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4gICBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL3JlbGVhc2VzLzIuMy9tcm8vLlxuXG4gICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzICJDIiwgc2F5KSB3b3VsZCB5aWVsZCBhXG4gICBjbGFzcyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZFxuICAgb2JqZWN0IHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlcyBpcyAiQyIuICBXaGVuIGl0IHdvdWxkIHlpZWxkIGFcbiAgIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBvYmplY3Qgd3JhcHBlZCBieVxuICAgdGhlIHN0YXRpYyBtZXRob2Qgb2JqZWN0LiBTZWUgc2VjdGlvbiAqSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKlxuICAgZm9yIGFub3RoZXIgd2F5IGluIHdoaWNoIGF0dHJpYnV0ZXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBtYXlcbiAgIGRpZmZlciBmcm9tIHRob3NlIGFjdHVhbGx5IGNvbnRhaW5lZCBpbiBpdHMgIl9fZGljdF9fIi5cblxuICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3NcJ3MgZGljdGlvbmFyeSwgbmV2ZXJcbiAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cblxuICAgQSBjbGFzcyBvYmplY3QgY2FuIGJlIGNhbGxlZCAoc2VlIGFib3ZlKSB0byB5aWVsZCBhIGNsYXNzIGluc3RhbmNlXG4gICAoc2VlIGJlbG93KS5cblxuICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBjbGFzcyBuYW1lOyAiX19tb2R1bGVfXyIgaXNcbiAgIHRoZSBtb2R1bGUgbmFtZSBpbiB3aGljaCB0aGUgY2xhc3Mgd2FzIGRlZmluZWQ7ICJfX2RpY3RfXyIgaXMgdGhlXG4gICBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGNsYXNzXCdzIG5hbWVzcGFjZTsgIl9fYmFzZXNfXyIgaXMgYSB0dXBsZVxuICAgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluIHRoZVxuICAgb3JkZXIgb2YgdGhlaXIgb2NjdXJyZW5jZSBpbiB0aGUgYmFzZSBjbGFzcyBsaXN0OyAiX19kb2NfXyIgaXMgdGhlXG4gICBjbGFzc1wncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgTm9uZSBpZiB1bmRlZmluZWQuXG5cbkNsYXNzIGluc3RhbmNlc1xuICAgQSBjbGFzcyBpbnN0YW5jZSBpcyBjcmVhdGVkIGJ5IGNhbGxpbmcgYSBjbGFzcyBvYmplY3QgKHNlZSBhYm92ZSkuXG4gICBBIGNsYXNzIGluc3RhbmNlIGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBhcyBhIGRpY3Rpb25hcnkgd2hpY2hcbiAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4gICBXaGVuIGFuIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQgdGhlcmUsIGFuZCB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MgaGFzXG4gICBhbiBhdHRyaWJ1dGUgYnkgdGhhdCBuYW1lLCB0aGUgc2VhcmNoIGNvbnRpbnVlcyB3aXRoIHRoZSBjbGFzc1xuICAgYXR0cmlidXRlcy4gIElmIGEgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kIHRoYXQgaXMgYSB1c2VyLWRlZmluZWRcbiAgIGZ1bmN0aW9uIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0XG4gICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuICAgY2xhc3MgbWV0aG9kIG9iamVjdHMgYXJlIGFsc28gdHJhbnNmb3JtZWQ7IHNlZSBhYm92ZSB1bmRlclxuICAgIkNsYXNzZXMiLiAgU2VlIHNlY3Rpb24gKkltcGxlbWVudGluZyBEZXNjcmlwdG9ycyogZm9yIGFub3RoZXIgd2F5XG4gICBpbiB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heVxuICAgZGlmZmVyIGZyb20gdGhlIG9iamVjdHMgYWN0dWFsbHkgc3RvcmVkIGluIHRoZSBjbGFzc1wncyAiX19kaWN0X18iLlxuICAgSWYgbm8gY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdFwncyBjbGFzcyBoYXMgYVxuICAgIl9fZ2V0YXR0cl9fKCkiIG1ldGhvZCwgdGhhdCBpcyBjYWxsZWQgdG8gc2F0aXNmeSB0aGUgbG9va3VwLlxuXG4gICBBdHRyaWJ1dGUgYXNzaWdubWVudHMgYW5kIGRlbGV0aW9ucyB1cGRhdGUgdGhlIGluc3RhbmNlXCdzXG4gICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzXCdzIGRpY3Rpb25hcnkuICBJZiB0aGUgY2xhc3MgaGFzIGFcbiAgICJfX3NldGF0dHJfXygpIiBvciAiX19kZWxhdHRyX18oKSIgbWV0aG9kLCB0aGlzIGlzIGNhbGxlZCBpbnN0ZWFkXG4gICBvZiB1cGRhdGluZyB0aGUgaW5zdGFuY2UgZGljdGlvbmFyeSBkaXJlY3RseS5cblxuICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgbWFwcGluZ3NcbiAgIGlmIHRoZXkgaGF2ZSBtZXRob2RzIHdpdGggY2VydGFpbiBzcGVjaWFsIG5hbWVzLiAgU2VlIHNlY3Rpb25cbiAgICpTcGVjaWFsIG1ldGhvZCBuYW1lcyouXG5cbiAgIFNwZWNpYWwgYXR0cmlidXRlczogIl9fZGljdF9fIiBpcyB0aGUgYXR0cmlidXRlIGRpY3Rpb25hcnk7XG4gICAiX19jbGFzc19fIiBpcyB0aGUgaW5zdGFuY2VcJ3MgY2xhc3MuXG5cbkkvTyBvYmplY3RzIChhbHNvIGtub3duIGFzIGZpbGUgb2JqZWN0cylcbiAgIEEgKmZpbGUgb2JqZWN0KiByZXByZXNlbnRzIGFuIG9wZW4gZmlsZS4gIFZhcmlvdXMgc2hvcnRjdXRzIGFyZVxuICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiBmdW5jdGlvbixcbiAgIGFuZCBhbHNvICJvcy5wb3BlbigpIiwgIm9zLmZkb3BlbigpIiwgYW5kIHRoZSAibWFrZWZpbGUoKSIgbWV0aG9kXG4gICBvZiBzb2NrZXQgb2JqZWN0cyAoYW5kIHBlcmhhcHMgYnkgb3RoZXIgZnVuY3Rpb25zIG9yIG1ldGhvZHNcbiAgIHByb3ZpZGVkIGJ5IGV4dGVuc2lvbiBtb2R1bGVzKS5cblxuICAgVGhlIG9iamVjdHMgInN5cy5zdGRpbiIsICJzeXMuc3Rkb3V0IiBhbmQgInN5cy5zdGRlcnIiIGFyZVxuICAgaW5pdGlhbGl6ZWQgdG8gZmlsZSBvYmplY3RzIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGludGVycHJldGVyXCdzXG4gICBzdGFuZGFyZCBpbnB1dCwgb3V0cHV0IGFuZCBlcnJvciBzdHJlYW1zOyB0aGV5IGFyZSBhbGwgb3BlbiBpbiB0ZXh0XG4gICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbiAgICJpby5UZXh0SU9CYXNlIiBhYnN0cmFjdCBjbGFzcy5cblxuSW50ZXJuYWwgdHlwZXNcbiAgIEEgZmV3IHR5cGVzIHVzZWQgaW50ZXJuYWxseSBieSB0aGUgaW50ZXJwcmV0ZXIgYXJlIGV4cG9zZWQgdG8gdGhlXG4gICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuICAgaW50ZXJwcmV0ZXIsIGJ1dCB0aGV5IGFyZSBtZW50aW9uZWQgaGVyZSBmb3IgY29tcGxldGVuZXNzLlxuXG4gICBDb2RlIG9iamVjdHNcbiAgICAgIENvZGUgb2JqZWN0cyByZXByZXNlbnQgKmJ5dGUtY29tcGlsZWQqIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUsXG4gICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbiAgICAgIGZ1bmN0aW9uIG9iamVjdCBpcyB0aGF0IHRoZSBmdW5jdGlvbiBvYmplY3QgY29udGFpbnMgYW4gZXhwbGljaXRcbiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb25cJ3MgZ2xvYmFscyAodGhlIG1vZHVsZSBpbiB3aGljaCBpdCB3YXNcbiAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4gICAgICBkZWZhdWx0IGFyZ3VtZW50IHZhbHVlcyBhcmUgc3RvcmVkIGluIHRoZSBmdW5jdGlvbiBvYmplY3QsIG5vdFxuICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkIGF0XG4gICAgICBydW4tdGltZSkuICBVbmxpa2UgZnVuY3Rpb24gb2JqZWN0cywgY29kZSBvYmplY3RzIGFyZSBpbW11dGFibGVcbiAgICAgIGFuZCBjb250YWluIG5vIHJlZmVyZW5jZXMgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIHRvIG11dGFibGVcbiAgICAgIG9iamVjdHMuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJjb19uYW1lIiBnaXZlcyB0aGUgZnVuY3Rpb24gbmFtZTtcbiAgICAgICJjb19hcmdjb3VudCIgaXMgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoaW5jbHVkaW5nXG4gICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyIG9mXG4gICAgICBsb2NhbCB2YXJpYWJsZXMgdXNlZCBieSB0aGUgZnVuY3Rpb24gKGluY2x1ZGluZyBhcmd1bWVudHMpO1xuICAgICAgImNvX3Zhcm5hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbFxuICAgICAgdmFyaWFibGVzIChzdGFydGluZyB3aXRoIHRoZSBhcmd1bWVudCBuYW1lcyk7ICJjb19jZWxsdmFycyIgaXMgYVxuICAgICAgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlXG4gICAgICByZWZlcmVuY2VkIGJ5IG5lc3RlZCBmdW5jdGlvbnM7ICJjb19mcmVldmFycyIgaXMgYSB0dXBsZVxuICAgICAgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgZnJlZSB2YXJpYWJsZXM7ICJjb19jb2RlIiBpcyBhIHN0cmluZ1xuICAgICAgcmVwcmVzZW50aW5nIHRoZSBzZXF1ZW5jZSBvZiBieXRlY29kZSBpbnN0cnVjdGlvbnM7ICJjb19jb25zdHMiXG4gICAgICBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX25hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuICAgICAgImNvX2ZpbGVuYW1lIiBpcyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgY29tcGlsZWQ7XG4gICAgICAiY29fZmlyc3RsaW5lbm8iIGlzIHRoZSBmaXJzdCBsaW5lIG51bWJlciBvZiB0aGUgZnVuY3Rpb247XG4gICAgICAiY29fbG5vdGFiIiBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4gICAgICBvZmZzZXRzIHRvIGxpbmUgbnVtYmVycyAoZm9yIGRldGFpbHMgc2VlIHRoZSBzb3VyY2UgY29kZSBvZiB0aGVcbiAgICAgIGludGVycHJldGVyKTsgImNvX3N0YWNrc2l6ZSIgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbiAgICAgIChpbmNsdWRpbmcgbG9jYWwgdmFyaWFibGVzKTsgImNvX2ZsYWdzIiBpcyBhbiBpbnRlZ2VyIGVuY29kaW5nIGFcbiAgICAgIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuXG4gICAgICBUaGUgZm9sbG93aW5nIGZsYWcgYml0cyBhcmUgZGVmaW5lZCBmb3IgImNvX2ZsYWdzIjogYml0ICIweDA0IlxuICAgICAgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKmFyZ3VtZW50cyIgc3ludGF4IHRvIGFjY2VwdCBhblxuICAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0ICIweDA4IiBpcyBzZXQgaWZcbiAgICAgIHRoZSBmdW5jdGlvbiB1c2VzIHRoZSAiKiprZXl3b3JkcyIgc3ludGF4IHRvIGFjY2VwdCBhcmJpdHJhcnlcbiAgICAgIGtleXdvcmQgYXJndW1lbnRzOyBiaXQgIjB4MjAiIGlzIHNldCBpZiB0aGUgZnVuY3Rpb24gaXMgYVxuICAgICAgZ2VuZXJhdG9yLlxuXG4gICAgICBGdXR1cmUgZmVhdHVyZSBkZWNsYXJhdGlvbnMgKCJmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uIilcbiAgICAgIGFsc28gdXNlIGJpdHMgaW4gImNvX2ZsYWdzIiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgY29kZSBvYmplY3RcbiAgICAgIHdhcyBjb21waWxlZCB3aXRoIGEgcGFydGljdWxhciBmZWF0dXJlIGVuYWJsZWQ6IGJpdCAiMHgyMDAwIiBpc1xuICAgICAgc2V0IGlmIHRoZSBmdW5jdGlvbiB3YXMgY29tcGlsZWQgd2l0aCBmdXR1cmUgZGl2aXNpb24gZW5hYmxlZDtcbiAgICAgIGJpdHMgIjB4MTAiIGFuZCAiMHgxMDAwIiB3ZXJlIHVzZWQgaW4gZWFybGllciB2ZXJzaW9ucyBvZlxuICAgICAgUHl0aG9uLlxuXG4gICAgICBPdGhlciBiaXRzIGluICJjb19mbGFncyIgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG5cbiAgICAgIElmIGEgY29kZSBvYmplY3QgcmVwcmVzZW50cyBhIGZ1bmN0aW9uLCB0aGUgZmlyc3QgaXRlbSBpblxuICAgICAgImNvX2NvbnN0cyIgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbiAgICAgICJOb25lIiBpZiB1bmRlZmluZWQuXG5cbiAgIEZyYW1lIG9iamVjdHNcbiAgICAgIEZyYW1lIG9iamVjdHMgcmVwcmVzZW50IGV4ZWN1dGlvbiBmcmFtZXMuICBUaGV5IG1heSBvY2N1ciBpblxuICAgICAgdHJhY2ViYWNrIG9iamVjdHMgKHNlZSBiZWxvdykuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJmX2JhY2siIGlzIHRvIHRoZSBwcmV2aW91cyBzdGFja1xuICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSBib3R0b21cbiAgICAgIHN0YWNrIGZyYW1lOyAiZl9jb2RlIiBpcyB0aGUgY29kZSBvYmplY3QgYmVpbmcgZXhlY3V0ZWQgaW4gdGhpc1xuICAgICAgZnJhbWU7ICJmX2xvY2FscyIgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwIGxvY2FsXG4gICAgICB2YXJpYWJsZXM7ICJmX2dsb2JhbHMiIGlzIHVzZWQgZm9yIGdsb2JhbCB2YXJpYWJsZXM7XG4gICAgICAiZl9idWlsdGlucyIgaXMgdXNlZCBmb3IgYnVpbHQtaW4gKGludHJpbnNpYykgbmFtZXM7ICJmX2xhc3RpIlxuICAgICAgZ2l2ZXMgdGhlIHByZWNpc2UgaW5zdHJ1Y3Rpb24gKHRoaXMgaXMgYW4gaW5kZXggaW50byB0aGVcbiAgICAgIGJ5dGVjb2RlIHN0cmluZyBvZiB0aGUgY29kZSBvYmplY3QpLlxuXG4gICAgICBTcGVjaWFsIHdyaXRhYmxlIGF0dHJpYnV0ZXM6ICJmX3RyYWNlIiwgaWYgbm90ICJOb25lIiwgaXMgYVxuICAgICAgZnVuY3Rpb24gY2FsbGVkIGF0IHRoZSBzdGFydCBvZiBlYWNoIHNvdXJjZSBjb2RlIGxpbmUgKHRoaXMgaXNcbiAgICAgIHVzZWQgYnkgdGhlIGRlYnVnZ2VyKTsgImZfbGluZW5vIiBpcyB0aGUgY3VycmVudCBsaW5lIG51bWJlciBvZlxuICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiBqdW1wc1xuICAgICAgdG8gdGhlIGdpdmVuIGxpbmUgKG9ubHkgZm9yIHRoZSBib3R0b20tbW9zdCBmcmFtZSkuICBBIGRlYnVnZ2VyXG4gICAgICBjYW4gaW1wbGVtZW50IGEgSnVtcCBjb21tYW5kIChha2EgU2V0IE5leHQgU3RhdGVtZW50KSBieSB3cml0aW5nXG4gICAgICB0byBmX2xpbmVuby5cblxuICAgICAgRnJhbWUgb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIGZyYW1lLmNsZWFyKClcblxuICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBoZWxkIGJ5XG4gICAgICAgICB0aGUgZnJhbWUuICBBbHNvLCBpZiB0aGUgZnJhbWUgYmVsb25nZWQgdG8gYSBnZW5lcmF0b3IsIHRoZVxuICAgICAgICAgZ2VuZXJhdG9yIGlzIGZpbmFsaXplZC4gIFRoaXMgaGVscHMgYnJlYWsgcmVmZXJlbmNlIGN5Y2xlc1xuICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbiAgICAgICAgIGV4Y2VwdGlvbiBhbmQgc3RvcmluZyBpdHMgdHJhY2ViYWNrIGZvciBsYXRlciB1c2UpLlxuXG4gICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSBleGVjdXRpbmcuXG5cbiAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cblxuICAgVHJhY2ViYWNrIG9iamVjdHNcbiAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gIEFcbiAgICAgIHRyYWNlYmFjayBvYmplY3QgaXMgY3JlYXRlZCB3aGVuIGFuIGV4Y2VwdGlvbiBvY2N1cnMuICBXaGVuIHRoZVxuICAgICAgc2VhcmNoIGZvciBhbiBleGNlcHRpb24gaGFuZGxlciB1bndpbmRzIHRoZSBleGVjdXRpb24gc3RhY2ssIGF0XG4gICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250IG9mXG4gICAgICB0aGUgY3VycmVudCB0cmFjZWJhY2suICBXaGVuIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIGlzIGVudGVyZWQsXG4gICAgICB0aGUgc3RhY2sgdHJhY2UgaXMgbWFkZSBhdmFpbGFibGUgdG8gdGhlIHByb2dyYW0uIChTZWUgc2VjdGlvblxuICAgICAgKlRoZSB0cnkgc3RhdGVtZW50Ki4pIEl0IGlzIGFjY2Vzc2libGUgYXMgdGhlIHRoaXJkIGl0ZW0gb2YgdGhlXG4gICAgICB0dXBsZSByZXR1cm5lZCBieSAic3lzLmV4Y19pbmZvKCkiLiBXaGVuIHRoZSBwcm9ncmFtIGNvbnRhaW5zIG5vXG4gICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5IGZvcm1hdHRlZClcbiAgICAgIHRvIHRoZSBzdGFuZGFyZCBlcnJvciBzdHJlYW07IGlmIHRoZSBpbnRlcnByZXRlciBpcyBpbnRlcmFjdGl2ZSxcbiAgICAgIGl0IGlzIGFsc28gbWFkZSBhdmFpbGFibGUgdG8gdGhlIHVzZXIgYXMgInN5cy5sYXN0X3RyYWNlYmFjayIuXG5cbiAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJ0Yl9uZXh0IiBpcyB0aGUgbmV4dCBsZXZlbCBpbiB0aGVcbiAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkKSwgb3JcbiAgICAgICJOb25lIiBpZiB0aGVyZSBpcyBubyBuZXh0IGxldmVsOyAidGJfZnJhbWUiIHBvaW50cyB0byB0aGVcbiAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlIGxpbmVcbiAgICAgIG51bWJlciB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkOyAidGJfbGFzdGkiIGluZGljYXRlcyB0aGVcbiAgICAgIHByZWNpc2UgaW5zdHJ1Y3Rpb24uICBUaGUgbGluZSBudW1iZXIgYW5kIGxhc3QgaW5zdHJ1Y3Rpb24gaW5cbiAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbiAgICAgIG9iamVjdCBpZiB0aGUgZXhjZXB0aW9uIG9jY3VycmVkIGluIGEgInRyeSIgc3RhdGVtZW50IHdpdGggbm9cbiAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuXG4gICBTbGljZSBvYmplY3RzXG4gICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICJfX2dldGl0ZW1fXygpIlxuICAgICAgbWV0aG9kcy4gIFRoZXkgYXJlIGFsc28gY3JlYXRlZCBieSB0aGUgYnVpbHQtaW4gInNsaWNlKCkiXG4gICAgICBmdW5jdGlvbi5cblxuICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInN0YXJ0IiBpcyB0aGUgbG93ZXIgYm91bmQ7ICJzdG9wIlxuICAgICAgaXMgdGhlIHVwcGVyIGJvdW5kOyAic3RlcCIgaXMgdGhlIHN0ZXAgdmFsdWU7IGVhY2ggaXMgIk5vbmUiIGlmXG4gICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cblxuICAgICAgU2xpY2Ugb2JqZWN0cyBzdXBwb3J0IG9uZSBtZXRob2Q6XG5cbiAgICAgIHNsaWNlLmluZGljZXMoc2VsZiwgbGVuZ3RoKVxuXG4gICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuICAgICAgICAgY29tcHV0ZXMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHNsaWNlIHRoYXQgdGhlIHNsaWNlIG9iamVjdFxuICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqIGl0ZW1zLlxuICAgICAgICAgSXQgcmV0dXJucyBhIHR1cGxlIG9mIHRocmVlIGludGVnZXJzOyByZXNwZWN0aXZlbHkgdGhlc2UgYXJlXG4gICAgICAgICB0aGUgKnN0YXJ0KiBhbmQgKnN0b3AqIGluZGljZXMgYW5kIHRoZSAqc3RlcCogb3Igc3RyaWRlXG4gICAgICAgICBsZW5ndGggb2YgdGhlIHNsaWNlLiBNaXNzaW5nIG9yIG91dC1vZi1ib3VuZHMgaW5kaWNlcyBhcmVcbiAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuXG4gICBTdGF0aWMgbWV0aG9kIG9iamVjdHNcbiAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbiAgICAgIHRyYW5zZm9ybWF0aW9uIG9mIGZ1bmN0aW9uIG9iamVjdHMgdG8gbWV0aG9kIG9iamVjdHMgZGVzY3JpYmVkXG4gICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuICAgICAgb2JqZWN0LCB1c3VhbGx5IGEgdXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3QuIFdoZW4gYSBzdGF0aWNcbiAgICAgIG1ldGhvZCBvYmplY3QgaXMgcmV0cmlldmVkIGZyb20gYSBjbGFzcyBvciBhIGNsYXNzIGluc3RhbmNlLCB0aGVcbiAgICAgIG9iamVjdCBhY3R1YWxseSByZXR1cm5lZCBpcyB0aGUgd3JhcHBlZCBvYmplY3QsIHdoaWNoIGlzIG5vdFxuICAgICAgc3ViamVjdCB0byBhbnkgZnVydGhlciB0cmFuc2Zvcm1hdGlvbi4gU3RhdGljIG1ldGhvZCBvYmplY3RzIGFyZVxuICAgICAgbm90IHRoZW1zZWx2ZXMgY2FsbGFibGUsIGFsdGhvdWdoIHRoZSBvYmplY3RzIHRoZXkgd3JhcCB1c3VhbGx5XG4gICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbiAgICAgICJzdGF0aWNtZXRob2QoKSIgY29uc3RydWN0b3IuXG5cbiAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4gICAgICBBIGNsYXNzIG1ldGhvZCBvYmplY3QsIGxpa2UgYSBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXMgYSB3cmFwcGVyXG4gICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0IG9iamVjdFxuICAgICAgaXMgcmV0cmlldmVkIGZyb20gY2xhc3NlcyBhbmQgY2xhc3MgaW5zdGFuY2VzLiBUaGUgYmVoYXZpb3VyIG9mXG4gICAgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyB1cG9uIHN1Y2ggcmV0cmlldmFsIGlzIGRlc2NyaWJlZCBhYm92ZSxcbiAgICAgIHVuZGVyICJVc2VyLWRlZmluZWQgbWV0aG9kcyIuIENsYXNzIG1ldGhvZCBvYmplY3RzIGFyZSBjcmVhdGVkXG4gICAgICBieSB0aGUgYnVpbHQtaW4gImNsYXNzbWV0aG9kKCkiIGNvbnN0cnVjdG9yLlxuJywKLSAndHlwZXNmdW5jdGlvbnMnOiB1J1xuRnVuY3Rpb25zXG4qKioqKioqKipcblxuRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSBvbmx5XG5vcGVyYXRpb24gb24gYSBmdW5jdGlvbiBvYmplY3QgaXMgdG8gY2FsbCBpdDogImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuXG5UaGVyZSBhcmUgcmVhbGx5IHR3byBmbGF2b3JzIG9mIGZ1bmN0aW9uIG9iamVjdHM6IGJ1aWx0LWluIGZ1bmN0aW9uc1xuYW5kIHVzZXItZGVmaW5lZCBmdW5jdGlvbnMuICBCb3RoIHN1cHBvcnQgdGhlIHNhbWUgb3BlcmF0aW9uICh0byBjYWxsXG50aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgaGVuY2UgdGhlXG5kaWZmZXJlbnQgb2JqZWN0IHR5cGVzLlxuXG5TZWUgKkZ1bmN0aW9uIGRlZmluaXRpb25zKiBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCi0gJ3R5cGVzbWFwcGluZyc6IHUnXG5NYXBwaW5nIFR5cGVzIC0tLSAiZGljdCJcbioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BICptYXBwaW5nKiBvYmplY3QgbWFwcyAqaGFzaGFibGUqIHZhbHVlcyB0byBhcmJpdHJhcnkgb2JqZWN0cy5cbk1hcHBpbmdzIGFyZSBtdXRhYmxlIG9iamVjdHMuICBUaGVyZSBpcyBjdXJyZW50bHkgb25seSBvbmUgc3RhbmRhcmRcbm1hcHBpbmcgdHlwZSwgdGhlICpkaWN0aW9uYXJ5Ki4gIChGb3Igb3RoZXIgY29udGFpbmVycyBzZWUgdGhlIGJ1aWx0LVxuaW4gImxpc3QiLCAic2V0IiwgYW5kICJ0dXBsZSIgY2xhc3NlcywgYW5kIHRoZSAiY29sbGVjdGlvbnMiIG1vZHVsZS4pXG5cbkEgZGljdGlvbmFyeVwncyBrZXlzIGFyZSAqYWxtb3N0KiBhcmJpdHJhcnkgdmFsdWVzLiAgVmFsdWVzIHRoYXQgYXJlXG5ub3QgKmhhc2hhYmxlKiwgdGhhdCBpcywgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMsIGRpY3Rpb25hcmllcyBvclxub3RoZXIgbXV0YWJsZSB0eXBlcyAodGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgb2JqZWN0XG5pZGVudGl0eSkgbWF5IG5vdCBiZSB1c2VkIGFzIGtleXMuICBOdW1lcmljIHR5cGVzIHVzZWQgZm9yIGtleXMgb2JleVxudGhlIG5vcm1hbCBydWxlcyBmb3IgbnVtZXJpYyBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsXG4oc3VjaCBhcyAiMSIgYW5kICIxLjAiKSB0aGVuIHRoZXkgY2FuIGJlIHVzZWQgaW50ZXJjaGFuZ2VhYmx5IHRvIGluZGV4XG50aGUgc2FtZSBkaWN0aW9uYXJ5IGVudHJ5LiAgKE5vdGUgaG93ZXZlciwgdGhhdCBzaW5jZSBjb21wdXRlcnMgc3RvcmVcbmZsb2F0aW5nLXBvaW50IG51bWJlcnMgYXMgYXBwcm94aW1hdGlvbnMgaXQgaXMgdXN1YWxseSB1bndpc2UgdG8gdXNlXG50aGVtIGFzIGRpY3Rpb25hcnkga2V5cy4pXG5cbkRpY3Rpb25hcmllcyBjYW4gYmUgY3JlYXRlZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgImtleTpcbnZhbHVlIiBwYWlycyB3aXRoaW4gYnJhY2VzLCBmb3IgZXhhbXBsZTogIntcJ2phY2tcJzogNDA5OCwgXCdzam9lcmRcJzpcbjQxMjd9IiBvciAiezQwOTg6IFwnamFja1wnLCA0MTI3OiBcJ3Nqb2VyZFwnfSIsIG9yIGJ5IHRoZSAiZGljdCJcbmNvbnN0cnVjdG9yLlxuXG5jbGFzcyBjbGFzcyBkaWN0KCoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KG1hcHBpbmcsICoqa3dhcmcpXG5jbGFzcyBjbGFzcyBkaWN0KGl0ZXJhYmxlLCAqKmt3YXJnKVxuXG4gICBSZXR1cm4gYSBuZXcgZGljdGlvbmFyeSBpbml0aWFsaXplZCBmcm9tIGFuIG9wdGlvbmFsIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50IGFuZCBhIHBvc3NpYmx5IGVtcHR5IHNldCBvZiBrZXl3b3JkIGFyZ3VtZW50cy5cblxuICAgSWYgbm8gcG9zaXRpb25hbCBhcmd1bWVudCBpcyBnaXZlbiwgYW4gZW1wdHkgZGljdGlvbmFyeSBpcyBjcmVhdGVkLlxuICAgSWYgYSBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuIGFuZCBpdCBpcyBhIG1hcHBpbmcgb2JqZWN0LCBhXG4gICBkaWN0aW9uYXJ5IGlzIGNyZWF0ZWQgd2l0aCB0aGUgc2FtZSBrZXktdmFsdWUgcGFpcnMgYXMgdGhlIG1hcHBpbmdcbiAgIG9iamVjdC4gIE90aGVyd2lzZSwgdGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgbXVzdCBiZSBhbiAqaXRlcmFibGUqXG4gICBvYmplY3QuICBFYWNoIGl0ZW0gaW4gdGhlIGl0ZXJhYmxlIG11c3QgaXRzZWxmIGJlIGFuIGl0ZXJhYmxlIHdpdGhcbiAgIGV4YWN0bHkgdHdvIG9iamVjdHMuICBUaGUgZmlyc3Qgb2JqZWN0IG9mIGVhY2ggaXRlbSBiZWNvbWVzIGEga2V5XG4gICBpbiB0aGUgbmV3IGRpY3Rpb25hcnksIGFuZCB0aGUgc2Vjb25kIG9iamVjdCB0aGUgY29ycmVzcG9uZGluZ1xuICAgdmFsdWUuICBJZiBhIGtleSBvY2N1cnMgbW9yZSB0aGFuIG9uY2UsIHRoZSBsYXN0IHZhbHVlIGZvciB0aGF0IGtleVxuICAgYmVjb21lcyB0aGUgY29ycmVzcG9uZGluZyB2YWx1ZSBpbiB0aGUgbmV3IGRpY3Rpb25hcnkuXG5cbiAgIElmIGtleXdvcmQgYXJndW1lbnRzIGFyZSBnaXZlbiwgdGhlIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGVpclxuICAgdmFsdWVzIGFyZSBhZGRlZCB0byB0aGUgZGljdGlvbmFyeSBjcmVhdGVkIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LiAgSWYgYSBrZXkgYmVpbmcgYWRkZWQgaXMgYWxyZWFkeSBwcmVzZW50LCB0aGUgdmFsdWUgZnJvbVxuICAgdGhlIGtleXdvcmQgYXJndW1lbnQgcmVwbGFjZXMgdGhlIHZhbHVlIGZyb20gdGhlIHBvc2l0aW9uYWxcbiAgIGFyZ3VtZW50LlxuXG4gICBUbyBpbGx1c3RyYXRlLCB0aGUgZm9sbG93aW5nIGV4YW1wbGVzIGFsbCByZXR1cm4gYSBkaWN0aW9uYXJ5IGVxdWFsXG4gICB0byAieyJvbmUiOiAxLCAidHdvIjogMiwgInRocmVlIjogM30iOlxuXG4gICAgICA+Pj4gYSA9IGRpY3Qob25lPTEsIHR3bz0yLCB0aHJlZT0zKVxuICAgICAgPj4+IGIgPSB7XCdvbmVcJzogMSwgXCd0d29cJzogMiwgXCd0aHJlZVwnOiAzfVxuICAgICAgPj4+IGMgPSBkaWN0KHppcChbXCdvbmVcJywgXCd0d29cJywgXCd0aHJlZVwnXSwgWzEsIDIsIDNdKSlcbiAgICAgID4+PiBkID0gZGljdChbKFwndHdvXCcsIDIpLCAoXCdvbmVcJywgMSksIChcJ3RocmVlXCcsIDMpXSlcbiAgICAgID4+PiBlID0gZGljdCh7XCd0aHJlZVwnOiAzLCBcJ29uZVwnOiAxLCBcJ3R3b1wnOiAyfSlcbiAgICAgID4+PiBhID09IGIgPT0gYyA9PSBkID09IGVcbiAgICAgIFRydWVcblxuICAgUHJvdmlkaW5nIGtleXdvcmQgYXJndW1lbnRzIGFzIGluIHRoZSBmaXJzdCBleGFtcGxlIG9ubHkgd29ya3MgZm9yXG4gICBrZXlzIHRoYXQgYXJlIHZhbGlkIFB5dGhvbiBpZGVudGlmaWVycy4gIE90aGVyd2lzZSwgYW55IHZhbGlkIGtleXNcbiAgIGNhbiBiZSB1c2VkLlxuXG4gICBUaGVzZSBhcmUgdGhlIG9wZXJhdGlvbnMgdGhhdCBkaWN0aW9uYXJpZXMgc3VwcG9ydCAoYW5kIHRoZXJlZm9yZSxcbiAgIGN1c3RvbSBtYXBwaW5nIHR5cGVzIHNob3VsZCBzdXBwb3J0IHRvbyk6XG5cbiAgIGxlbihkKVxuXG4gICAgICBSZXR1cm4gdGhlIG51bWJlciBvZiBpdGVtcyBpbiB0aGUgZGljdGlvbmFyeSAqZCouXG5cbiAgIGRba2V5XVxuXG4gICAgICBSZXR1cm4gdGhlIGl0ZW0gb2YgKmQqIHdpdGgga2V5ICprZXkqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZlxuICAgICAgKmtleSogaXMgbm90IGluIHRoZSBtYXAuXG5cbiAgICAgIElmIGEgc3ViY2xhc3Mgb2YgZGljdCBkZWZpbmVzIGEgbWV0aG9kICJfX21pc3NpbmdfXygpIiBhbmQgKmtleSpcbiAgICAgIGlzIG5vdCBwcmVzZW50LCB0aGUgImRba2V5XSIgb3BlcmF0aW9uIGNhbGxzIHRoYXQgbWV0aG9kIHdpdGhcbiAgICAgIHRoZSBrZXkgKmtleSogYXMgYXJndW1lbnQuICBUaGUgImRba2V5XSIgb3BlcmF0aW9uIHRoZW4gcmV0dXJuc1xuICAgICAgb3IgcmFpc2VzIHdoYXRldmVyIGlzIHJldHVybmVkIG9yIHJhaXNlZCBieSB0aGVcbiAgICAgICJfX21pc3NpbmdfXyhrZXkpIiBjYWxsLiBObyBvdGhlciBvcGVyYXRpb25zIG9yIG1ldGhvZHMgaW52b2tlXG4gICAgICAiX19taXNzaW5nX18oKSIuIElmICJfX21pc3NpbmdfXygpIiBpcyBub3QgZGVmaW5lZCwgIktleUVycm9yIlxuICAgICAgaXMgcmFpc2VkLiAiX19taXNzaW5nX18oKSIgbXVzdCBiZSBhIG1ldGhvZDsgaXQgY2Fubm90IGJlIGFuXG4gICAgICBpbnN0YW5jZSB2YXJpYWJsZTpcblxuICAgICAgICAgPj4+IGNsYXNzIENvdW50ZXIoZGljdCk6XG4gICAgICAgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuICAgICAgICAgLi4uICAgICAgICAgcmV0dXJuIDBcbiAgICAgICAgID4+PiBjID0gQ291bnRlcigpXG4gICAgICAgICA+Pj4gY1tcJ3JlZFwnXVxuICAgICAgICAgMFxuICAgICAgICAgPj4+IGNbXCdyZWRcJ10gKz0gMVxuICAgICAgICAgPj4+IGNbXCdyZWRcJ11cbiAgICAgICAgIDFcblxuICAgICAgVGhlIGV4YW1wbGUgYWJvdmUgc2hvd3MgcGFydCBvZiB0aGUgaW1wbGVtZW50YXRpb24gb2ZcbiAgICAgICJjb2xsZWN0aW9ucy5Db3VudGVyIi4gIEEgZGlmZmVyZW50ICJfX21pc3NpbmdfXyIgbWV0aG9kIGlzIHVzZWRcbiAgICAgIGJ5ICJjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdCIuXG5cbiAgIGRba2V5XSA9IHZhbHVlXG5cbiAgICAgIFNldCAiZFtrZXldIiB0byAqdmFsdWUqLlxuXG4gICBkZWwgZFtrZXldXG5cbiAgICAgIFJlbW92ZSAiZFtrZXldIiBmcm9tICpkKi4gIFJhaXNlcyBhICJLZXlFcnJvciIgaWYgKmtleSogaXMgbm90XG4gICAgICBpbiB0aGUgbWFwLlxuXG4gICBrZXkgaW4gZFxuXG4gICAgICBSZXR1cm4gIlRydWUiIGlmICpkKiBoYXMgYSBrZXkgKmtleSosIGVsc2UgIkZhbHNlIi5cblxuICAga2V5IG5vdCBpbiBkXG5cbiAgICAgIEVxdWl2YWxlbnQgdG8gIm5vdCBrZXkgaW4gZCIuXG5cbiAgIGl0ZXIoZClcblxuICAgICAgUmV0dXJuIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIGtleXMgb2YgdGhlIGRpY3Rpb25hcnkuICBUaGlzIGlzIGFcbiAgICAgIHNob3J0Y3V0IGZvciAiaXRlcihkLmtleXMoKSkiLlxuXG4gICBjbGVhcigpXG5cbiAgICAgIFJlbW92ZSBhbGwgaXRlbXMgZnJvbSB0aGUgZGljdGlvbmFyeS5cblxuICAgY29weSgpXG5cbiAgICAgIFJldHVybiBhIHNoYWxsb3cgY29weSBvZiB0aGUgZGljdGlvbmFyeS5cblxuICAgY2xhc3NtZXRob2QgZnJvbWtleXMoc2VxWywgdmFsdWVdKVxuXG4gICAgICBDcmVhdGUgYSBuZXcgZGljdGlvbmFyeSB3aXRoIGtleXMgZnJvbSAqc2VxKiBhbmQgdmFsdWVzIHNldCB0b1xuICAgICAgKnZhbHVlKi5cblxuICAgICAgImZyb21rZXlzKCkiIGlzIGEgY2xhc3MgbWV0aG9kIHRoYXQgcmV0dXJucyBhIG5ldyBkaWN0aW9uYXJ5LlxuICAgICAgKnZhbHVlKiBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIGdldChrZXlbLCBkZWZhdWx0XSlcblxuICAgICAgUmV0dXJuIHRoZSB2YWx1ZSBmb3IgKmtleSogaWYgKmtleSogaXMgaW4gdGhlIGRpY3Rpb25hcnksIGVsc2VcbiAgICAgICpkZWZhdWx0Ki4gSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiwgaXQgZGVmYXVsdHMgdG8gIk5vbmUiLCBzb1xuICAgICAgdGhhdCB0aGlzIG1ldGhvZCBuZXZlciByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBpdGVtcygpXG5cbiAgICAgIFJldHVybiBhIG5ldyB2aWV3IG9mIHRoZSBkaWN0aW9uYXJ5XCdzIGl0ZW1zICgiKGtleSwgdmFsdWUpIlxuICAgICAgcGFpcnMpLiBTZWUgdGhlICpkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cyouXG5cbiAgIGtleXMoKVxuXG4gICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeVwncyBrZXlzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgcG9wKGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gaXRzIHZhbHVlLFxuICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgKmtleSogaXNcbiAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSAiS2V5RXJyb3IiIGlzIHJhaXNlZC5cblxuICAgcG9waXRlbSgpXG5cbiAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyIGZyb20gdGhlXG4gICAgICBkaWN0aW9uYXJ5LlxuXG4gICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSBkaWN0aW9uYXJ5XG4gICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuXG4gICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuXG4gICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmIG5vdCwgaW5zZXJ0XG4gICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgKmRlZmF1bHQqXG4gICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG5cbiAgIHVwZGF0ZShbb3RoZXJdKVxuXG4gICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gKm90aGVyKixcbiAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuXG4gICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgYW5cbiAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyIGl0ZXJhYmxlcyBvZlxuICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgZGljdGlvbmFyeVxuICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAiZC51cGRhdGUocmVkPTEsXG4gICAgICBibHVlPTIpIi5cblxuICAgdmFsdWVzKClcblxuICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgdmFsdWVzLiAgU2VlIHRoZVxuICAgICAgKmRvY3VtZW50YXRpb24gb2YgdmlldyBvYmplY3RzKi5cblxuICAgRGljdGlvbmFyaWVzIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZSBzYW1lICIoa2V5LFxuICAgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJywgXCc+XCcpIHJhaXNlXG4gICAiVHlwZUVycm9yIi5cblxuU2VlIGFsc286ICJ0eXBlcy5NYXBwaW5nUHJveHlUeXBlIiBjYW4gYmUgdXNlZCB0byBjcmVhdGUgYSByZWFkLW9ubHlcbiAgdmlldyBvZiBhICJkaWN0Ii5cblxuXG5EaWN0aW9uYXJ5IHZpZXcgb2JqZWN0c1xuPT09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9iamVjdHMgcmV0dXJuZWQgYnkgImRpY3Qua2V5cygpIiwgImRpY3QudmFsdWVzKCkiIGFuZFxuImRpY3QuaXRlbXMoKSIgYXJlICp2aWV3IG9iamVjdHMqLiAgVGhleSBwcm92aWRlIGEgZHluYW1pYyB2aWV3IG9uIHRoZVxuZGljdGlvbmFyeVwncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnkgY2hhbmdlcyxcbnRoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG5cbkRpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgcmVzcGVjdGl2ZSBkYXRhLFxuYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcblxubGVuKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuXG5pdGVyKGRpY3R2aWV3KVxuXG4gICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zIChyZXByZXNlbnRlZCBhc1xuICAgdHVwbGVzIG9mICIoa2V5LCB2YWx1ZSkiKSBpbiB0aGUgZGljdGlvbmFyeS5cblxuICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciB3aGljaCBpc1xuICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgZGVwZW5kcyBvblxuICAgdGhlIGRpY3Rpb25hcnlcJ3MgaGlzdG9yeSBvZiBpbnNlcnRpb25zIGFuZCBkZWxldGlvbnMuIElmIGtleXMsXG4gICB2YWx1ZXMgYW5kIGl0ZW1zIHZpZXdzIGFyZSBpdGVyYXRlZCBvdmVyIHdpdGggbm8gaW50ZXJ2ZW5pbmdcbiAgIG1vZGlmaWNhdGlvbnMgdG8gdGhlIGRpY3Rpb25hcnksIHRoZSBvcmRlciBvZiBpdGVtcyB3aWxsIGRpcmVjdGx5XG4gICBjb3JyZXNwb25kLiAgVGhpcyBhbGxvd3MgdGhlIGNyZWF0aW9uIG9mICIodmFsdWUsIGtleSkiIHBhaXJzIHVzaW5nXG4gICAiemlwKCkiOiAicGFpcnMgPSB6aXAoZC52YWx1ZXMoKSwgZC5rZXlzKCkpIi4gIEFub3RoZXIgd2F5IHRvXG4gICBjcmVhdGUgdGhlIHNhbWUgbGlzdCBpcyAicGFpcnMgPSBbKHYsIGspIGZvciAoaywgdikgaW4gZC5pdGVtcygpXSIuXG5cbiAgIEl0ZXJhdGluZyB2aWV3cyB3aGlsZSBhZGRpbmcgb3IgZGVsZXRpbmcgZW50cmllcyBpbiB0aGUgZGljdGlvbmFyeVxuICAgbWF5IHJhaXNlIGEgIlJ1bnRpbWVFcnJvciIgb3IgZmFpbCB0byBpdGVyYXRlIG92ZXIgYWxsIGVudHJpZXMuXG5cbnggaW4gZGljdHZpZXdcblxuICAgUmV0dXJuICJUcnVlIiBpZiAqeCogaXMgaW4gdGhlIHVuZGVybHlpbmcgZGljdGlvbmFyeVwncyBrZXlzLCB2YWx1ZXNcbiAgIG9yIGl0ZW1zIChpbiB0aGUgbGF0dGVyIGNhc2UsICp4KiBzaG91bGQgYmUgYSAiKGtleSwgdmFsdWUpIlxuICAgdHVwbGUpLlxuXG5LZXlzIHZpZXdzIGFyZSBzZXQtbGlrZSBzaW5jZSB0aGVpciBlbnRyaWVzIGFyZSB1bmlxdWUgYW5kIGhhc2hhYmxlLlxuSWYgYWxsIHZhbHVlcyBhcmUgaGFzaGFibGUsIHNvIHRoYXQgIihrZXksIHZhbHVlKSIgcGFpcnMgYXJlIHVuaXF1ZVxuYW5kIGhhc2hhYmxlLCB0aGVuIHRoZSBpdGVtcyB2aWV3IGlzIGFsc28gc2V0LWxpa2UuICAoVmFsdWVzIHZpZXdzIGFyZVxubm90IHRyZWF0ZWQgYXMgc2V0LWxpa2Ugc2luY2UgdGhlIGVudHJpZXMgYXJlIGdlbmVyYWxseSBub3QgdW5pcXVlLilcbkZvciBzZXQtbGlrZSB2aWV3cywgYWxsIG9mIHRoZSBvcGVyYXRpb25zIGRlZmluZWQgZm9yIHRoZSBhYnN0cmFjdFxuYmFzZSBjbGFzcyAiY29sbGVjdGlvbnMuYWJjLlNldCIgYXJlIGF2YWlsYWJsZSAoZm9yIGV4YW1wbGUsICI9PSIsXG4iPCIsIG9yICJeIikuXG5cbkFuIGV4YW1wbGUgb2YgZGljdGlvbmFyeSB2aWV3IHVzYWdlOlxuXG4gICA+Pj4gZGlzaGVzID0ge1wnZWdnc1wnOiAyLCBcJ3NhdXNhZ2VcJzogMSwgXCdiYWNvblwnOiAxLCBcJ3NwYW1cJzogNTAwfVxuICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4gICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG5cbiAgID4+PiAjIGl0ZXJhdGlvblxuICAgPj4+IG4gPSAwXG4gICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4gICAuLi4gICAgIG4gKz0gdmFsXG4gICA+Pj4gcHJpbnQobilcbiAgIDUwNFxuXG4gICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgb3JkZXJcbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdlZ2dzXCcsIFwnYmFjb25cJywgXCdzYXVzYWdlXCcsIFwnc3BhbVwnXVxuICAgPj4+IGxpc3QodmFsdWVzKVxuICAgWzIsIDEsIDEsIDUwMF1cblxuICAgPj4+ICMgdmlldyBvYmplY3RzIGFyZSBkeW5hbWljIGFuZCByZWZsZWN0IGRpY3QgY2hhbmdlc1xuICAgPj4+IGRlbCBkaXNoZXNbXCdlZ2dzXCddXG4gICA+Pj4gZGVsIGRpc2hlc1tcJ3NhdXNhZ2VcJ11cbiAgID4+PiBsaXN0KGtleXMpXG4gICBbXCdzcGFtXCcsIFwnYmFjb25cJ11cblxuICAgPj4+ICMgc2V0IG9wZXJhdGlvbnNcbiAgID4+PiBrZXlzICYge1wnZWdnc1wnLCBcJ2JhY29uXCcsIFwnc2FsYWRcJ31cbiAgIHtcJ2JhY29uXCd9XG4gICA+Pj4ga2V5cyBeIHtcJ3NhdXNhZ2VcJywgXCdqdWljZVwnfVxuICAge1wnanVpY2VcJywgXCdzYXVzYWdlXCcsIFwnYmFjb25cJywgXCdzcGFtXCd9XG4nLAotICd0eXBlc21ldGhvZHMnOiB1J1xuTWV0aG9kc1xuKioqKioqKlxuXG5NZXRob2RzIGFyZSBmdW5jdGlvbnMgdGhhdCBhcmUgY2FsbGVkIHVzaW5nIHRoZSBhdHRyaWJ1dGUgbm90YXRpb24uXG5UaGVyZSBhcmUgdHdvIGZsYXZvcnM6IGJ1aWx0LWluIG1ldGhvZHMgKHN1Y2ggYXMgImFwcGVuZCgpIiBvbiBsaXN0cylcbmFuZCBjbGFzcyBpbnN0YW5jZSBtZXRob2RzLiAgQnVpbHQtaW4gbWV0aG9kcyBhcmUgZGVzY3JpYmVkIHdpdGggdGhlXG50eXBlcyB0aGF0IHN1cHBvcnQgdGhlbS5cblxuSWYgeW91IGFjY2VzcyBhIG1ldGhvZCAoYSBmdW5jdGlvbiBkZWZpbmVkIGluIGEgY2xhc3MgbmFtZXNwYWNlKVxudGhyb3VnaCBhbiBpbnN0YW5jZSwgeW91IGdldCBhIHNwZWNpYWwgb2JqZWN0OiBhICpib3VuZCBtZXRob2QqIChhbHNvXG5jYWxsZWQgKmluc3RhbmNlIG1ldGhvZCopIG9iamVjdC4gV2hlbiBjYWxsZWQsIGl0IHdpbGwgYWRkIHRoZSAic2VsZiJcbmFyZ3VtZW50IHRvIHRoZSBhcmd1bWVudCBsaXN0LiAgQm91bmQgbWV0aG9kcyBoYXZlIHR3byBzcGVjaWFsIHJlYWQtXG5vbmx5IGF0dHJpYnV0ZXM6ICJtLl9fc2VsZl9fIiBpcyB0aGUgb2JqZWN0IG9uIHdoaWNoIHRoZSBtZXRob2Rcbm9wZXJhdGVzLCBhbmQgIm0uX19mdW5jX18iIGlzIHRoZSBmdW5jdGlvbiBpbXBsZW1lbnRpbmcgdGhlIG1ldGhvZC5cbkNhbGxpbmcgIm0oYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIgaXMgY29tcGxldGVseSBlcXVpdmFsZW50IHRvXG5jYWxsaW5nICJtLl9fZnVuY19fKG0uX19zZWxmX18sIGFyZy0xLCBhcmctMiwgLi4uLCBhcmctbikiLlxuXG5MaWtlIGZ1bmN0aW9uIG9iamVjdHMsIGJvdW5kIG1ldGhvZCBvYmplY3RzIHN1cHBvcnQgZ2V0dGluZyBhcmJpdHJhcnlcbmF0dHJpYnV0ZXMuICBIb3dldmVyLCBzaW5jZSBtZXRob2QgYXR0cmlidXRlcyBhcmUgYWN0dWFsbHkgc3RvcmVkIG9uXG50aGUgdW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3QgKCJtZXRoLl9fZnVuY19fIiksIHNldHRpbmcgbWV0aG9kXG5hdHRyaWJ1dGVzIG9uIGJvdW5kIG1ldGhvZHMgaXMgZGlzYWxsb3dlZC4gIEF0dGVtcHRpbmcgdG8gc2V0IGFuXG5hdHRyaWJ1dGUgb24gYSBtZXRob2QgcmVzdWx0cyBpbiBhbiAiQXR0cmlidXRlRXJyb3IiIGJlaW5nIHJhaXNlZC4gIEluXG5vcmRlciB0byBzZXQgYSBtZXRob2QgYXR0cmlidXRlLCB5b3UgbmVlZCB0byBleHBsaWNpdGx5IHNldCBpdCBvbiB0aGVcbnVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0OlxuXG4gICA+Pj4gY2xhc3MgQzpcbiAgIC4uLiAgICAgZGVmIG1ldGhvZChzZWxmKTpcbiAgIC4uLiAgICAgICAgIHBhc3NcbiAgIC4uLlxuICAgPj4+IGMgPSBDKClcbiAgID4+PiBjLm1ldGhvZC53aG9hbWkgPSBcJ215IG5hbWUgaXMgbWV0aG9kXCcgICMgY2FuXCd0IHNldCBvbiB0aGUgbWV0aG9kXG4gICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4gICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+XG4gICBBdHRyaWJ1dGVFcnJvcjogXCdtZXRob2RcJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSBcJ3dob2FtaVwnXG4gICA+Pj4gYy5tZXRob2QuX19mdW5jX18ud2hvYW1pID0gXCdteSBuYW1lIGlzIG1ldGhvZFwnXG4gICA+Pj4gYy5tZXRob2Qud2hvYW1pXG4gICBcJ215IG5hbWUgaXMgbWV0aG9kXCdcblxuU2VlICpUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkqIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuJywKLSAndHlwZXNtb2R1bGVzJzogdSdcbk1vZHVsZXNcbioqKioqKipcblxuVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczogIm0ubmFtZSIsXG53aGVyZSAqbSogaXMgYSBtb2R1bGUgYW5kICpuYW1lKiBhY2Nlc3NlcyBhIG5hbWUgZGVmaW5lZCBpbiAqbSpcJ3NcbnN5bWJvbCB0YWJsZS4gTW9kdWxlIGF0dHJpYnV0ZXMgY2FuIGJlIGFzc2lnbmVkIHRvLiAgKE5vdGUgdGhhdCB0aGVcbiJpbXBvcnQiIHN0YXRlbWVudCBpcyBub3QsIHN0cmljdGx5IHNwZWFraW5nLCBhbiBvcGVyYXRpb24gb24gYSBtb2R1bGVcbm9iamVjdDsgImltcG9ydCBmb28iIGRvZXMgbm90IHJlcXVpcmUgYSBtb2R1bGUgb2JqZWN0IG5hbWVkICpmb28qIHRvXG5leGlzdCwgcmF0aGVyIGl0IHJlcXVpcmVzIGFuIChleHRlcm5hbCkgKmRlZmluaXRpb24qIGZvciBhIG1vZHVsZVxubmFtZWQgKmZvbyogc29tZXdoZXJlLilcblxuQSBzcGVjaWFsIGF0dHJpYnV0ZSBvZiBldmVyeSBtb2R1bGUgaXMgIl9fZGljdF9fIi4gVGhpcyBpcyB0aGVcbmRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgbW9kdWxlXCdzIHN5bWJvbCB0YWJsZS4gTW9kaWZ5aW5nIHRoaXNcbmRpY3Rpb25hcnkgd2lsbCBhY3R1YWxseSBjaGFuZ2UgdGhlIG1vZHVsZVwncyBzeW1ib2wgdGFibGUsIGJ1dCBkaXJlY3RcbmFzc2lnbm1lbnQgdG8gdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91IGNhbiB3cml0ZVxuIm0uX19kaWN0X19bXCdhXCddID0gMSIsIHdoaWNoIGRlZmluZXMgIm0uYSIgdG8gYmUgIjEiLCBidXQgeW91IGNhblwndFxud3JpdGUgIm0uX19kaWN0X18gPSB7fSIpLiAgTW9kaWZ5aW5nICJfX2RpY3RfXyIgZGlyZWN0bHkgaXMgbm90XG5yZWNvbW1lbmRlZC5cblxuTW9kdWxlcyBidWlsdCBpbnRvIHRoZSBpbnRlcnByZXRlciBhcmUgd3JpdHRlbiBsaWtlIHRoaXM6ICI8bW9kdWxlXG5cJ3N5c1wnIChidWlsdC1pbik+Ii4gIElmIGxvYWRlZCBmcm9tIGEgZmlsZSwgdGhleSBhcmUgd3JpdHRlbiBhc1xuIjxtb2R1bGUgXCdvc1wnIGZyb20gXCcvdXNyL2xvY2FsL2xpYi9weXRob25YLlkvb3MucHljXCc+Ii5cbicsCi0gJ3R5cGVzc2VxJzogdSdcblNlcXVlbmNlIFR5cGVzIC0tLSAibGlzdCIsICJ0dXBsZSIsICJyYW5nZSJcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcblxuVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2Vcbm9iamVjdHMuIEFkZGl0aW9uYWwgc2VxdWVuY2UgdHlwZXMgdGFpbG9yZWQgZm9yIHByb2Nlc3Npbmcgb2YgKmJpbmFyeVxuZGF0YSogYW5kICp0ZXh0IHN0cmluZ3MqIGFyZSBkZXNjcmliZWQgaW4gZGVkaWNhdGVkIHNlY3Rpb25zLlxuXG5cbkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zXG49PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb3BlcmF0aW9ucyBpbiB0aGUgZm9sbG93aW5nIHRhYmxlIGFyZSBzdXBwb3J0ZWQgYnkgbW9zdCBzZXF1ZW5jZVxudHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDXG5pcyBwcm92aWRlZCB0byBtYWtlIGl0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnNcbm9uIGN1c3RvbSBzZXF1ZW5jZSB0eXBlcy5cblxuVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nIHByaW9yaXR5LlxuSW4gdGhlIHRhYmxlLCAqcyogYW5kICp0KiBhcmUgc2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUsICpuKiwgKmkqLFxuKmoqIGFuZCAqayogYXJlIGludGVnZXJzIGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueVxudHlwZSBhbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLlxuXG5UaGUgImluIiBhbmQgIm5vdCBpbiIgb3BlcmF0aW9ucyBoYXZlIHRoZSBzYW1lIHByaW9yaXRpZXMgYXMgdGhlXG5jb21wYXJpc29uIG9wZXJhdGlvbnMuIFRoZSAiKyIgKGNvbmNhdGVuYXRpb24pIGFuZCAiKiIgKHJlcGV0aXRpb24pXG5vcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpY1xub3BlcmF0aW9ucy5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgIHwgUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xufCAieCBpbiBzIiAgICAgICAgICAgICAgICAgICB8ICJUcnVlIiBpZiBhbiBpdGVtIG9mICpzKiBpcyAgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJGYWxzZSIgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAieCBub3QgaW4gcyIgICAgICAgICAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgIHwgKDEpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJUcnVlIiAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicyArIHQiICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb25jYXRlbmF0aW9uIG9mICpzKiBhbmQgKnQqIHwgKDYpKDcpICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInMgKiBuIiBvciAibiAqIHMiICAgICAgICAgfCBlcXVpdmFsZW50IHRvIGFkZGluZyAqcyogdG8gICAgICB8ICgyKSg3KSAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0c2VsZiAqbiogdGltZXMgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgInNbaV0iICAgICAgICAgICAgICAgICAgICAgfCAqaSp0aCBpdGVtIG9mICpzKiwgb3JpZ2luIDAgICAgICB8ICgzKSAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzW2k6al0iICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgfCAoMykoNCkgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogICAgIHwgKDMpKDUpICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAibGVuKHMpIiAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbnwgIm1pbihzKSIgICAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJtYXgocykiICAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgfCAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xufCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mIHwgKDgpICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKngqIGluICpzKiAoYXQgb3IgYWZ0ZXIgaW5kZXggICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqaSogYW5kIGJlZm9yZSBpbmRleCAqaiopICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG58ICJzLmNvdW50KHgpIiAgICAgICAgICAgICAgIHwgdG90YWwgbnVtYmVyIG9mIG9jY3VycmVuY2VzIG9mICAgfCAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG5cblNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlIGFsc28gc3VwcG9ydCBjb21wYXJpc29ucy4gIEluIHBhcnRpY3VsYXIsXG50dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbmNvcnJlc3BvbmRpbmcgZWxlbWVudHMuIFRoaXMgbWVhbnMgdGhhdCB0byBjb21wYXJlIGVxdWFsLCBldmVyeVxuZWxlbWVudCBtdXN0IGNvbXBhcmUgZXF1YWwgYW5kIHRoZSB0d28gc2VxdWVuY2VzIG11c3QgYmUgb2YgdGhlIHNhbWVcbnR5cGUgYW5kIGhhdmUgdGhlIHNhbWUgbGVuZ3RoLiAgKEZvciBmdWxsIGRldGFpbHMgc2VlICpDb21wYXJpc29ucyogaW5cbnRoZSBsYW5ndWFnZSByZWZlcmVuY2UuKVxuXG5Ob3RlczpcblxuMS4gV2hpbGUgdGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3Igc2ltcGxlXG4gICBjb250YWlubWVudCB0ZXN0aW5nIGluIHRoZSBnZW5lcmFsIGNhc2UsIHNvbWUgc3BlY2lhbGlzZWQgc2VxdWVuY2VzXG4gICAoc3VjaCBhcyAic3RyIiwgImJ5dGVzIiBhbmQgImJ5dGVhcnJheSIpIGFsc28gdXNlIHRoZW0gZm9yXG4gICBzdWJzZXF1ZW5jZSB0ZXN0aW5nOlxuXG4gICAgICA+Pj4gImdnIiBpbiAiZWdncyJcbiAgICAgIFRydWVcblxuMi4gVmFsdWVzIG9mICpuKiBsZXNzIHRoYW4gIjAiIGFyZSB0cmVhdGVkIGFzICIwIiAod2hpY2ggeWllbGRzIGFuXG4gICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIHRoYXQgaXRlbXMgaW4gdGhlXG4gICBzZXF1ZW5jZSAqcyogYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGUgdGltZXMuXG4gICBUaGlzIG9mdGVuIGhhdW50cyBuZXcgUHl0aG9uIHByb2dyYW1tZXJzOyBjb25zaWRlcjpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbiAgICAgID4+PiBsaXN0c1xuICAgICAgW1tdLCBbXSwgW11dXG4gICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4gICAgICA+Pj4gbGlzdHNcbiAgICAgIFtbM10sIFszXSwgWzNdXVxuXG4gICBXaGF0IGhhcyBoYXBwZW5lZCBpcyB0aGF0ICJbW11dIiBpcyBhIG9uZS1lbGVtZW50IGxpc3QgY29udGFpbmluZ1xuICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mICJbW11dICogMyIgYXJlIHJlZmVyZW5jZXNcbiAgIHRvIHRoaXMgc2luZ2xlIGVtcHR5IGxpc3QuICBNb2RpZnlpbmcgYW55IG9mIHRoZSBlbGVtZW50cyBvZlxuICAgImxpc3RzIiBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbiAgIGRpZmZlcmVudCBsaXN0cyB0aGlzIHdheTpcblxuICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuICAgICAgPj4+IGxpc3RzWzBdLmFwcGVuZCgzKVxuICAgICAgPj4+IGxpc3RzWzFdLmFwcGVuZCg1KVxuICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuICAgICAgPj4+IGxpc3RzXG4gICAgICBbWzNdLCBbNV0sIFs3XV1cblxuICAgRnVydGhlciBleHBsYW5hdGlvbiBpcyBhdmFpbGFibGUgaW4gdGhlIEZBUSBlbnRyeSAqSG93IGRvIEkgY3JlYXRlXG4gICBhIG11bHRpZGltZW5zaW9uYWwgbGlzdD8qLlxuXG4zLiBJZiAqaSogb3IgKmoqIGlzIG5lZ2F0aXZlLCB0aGUgaW5kZXggaXMgcmVsYXRpdmUgdG8gdGhlIGVuZCBvZlxuICAgdGhlIHN0cmluZzogImxlbihzKSArIGkiIG9yICJsZW4ocykgKyBqIiBpcyBzdWJzdGl0dXRlZC4gIEJ1dCBub3RlXG4gICB0aGF0ICItMCIgaXMgc3RpbGwgIjAiLlxuXG40LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyBkZWZpbmVkIGFzIHRoZSBzZXF1ZW5jZSBvZlxuICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0ICJpIDw9IGsgPCBqIi4gIElmICppKiBvciAqaiogaXNcbiAgIGdyZWF0ZXIgdGhhbiAibGVuKHMpIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLFxuICAgdXNlICIwIi4gIElmICpqKiBpcyBvbWl0dGVkIG9yICJOb25lIiwgdXNlICJsZW4ocykiLiAgSWYgKmkqIGlzXG4gICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXMgZW1wdHkuXG5cbjUuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIHdpdGggc3RlcCAqayogaXMgZGVmaW5lZCBhcyB0aGVcbiAgIHNlcXVlbmNlIG9mIGl0ZW1zIHdpdGggaW5kZXggICJ4ID0gaSArIG4qayIgc3VjaCB0aGF0ICIwIDw9IG4gPFxuICAgKGotaSkvayIuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlICJpIiwgImkrayIsICJpKzIqayIsXG4gICAiaSszKmsiIGFuZCBzbyBvbiwgc3RvcHBpbmcgd2hlbiAqaiogaXMgcmVhY2hlZCAoYnV0IG5ldmVyXG4gICBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2VcbiAgICJsZW4ocykiLiAgSWYgKmkqIG9yICpqKiBhcmUgb21pdHRlZCBvciAiTm9uZSIsIHRoZXkgYmVjb21lICJlbmQiXG4gICB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogY2Fubm90IGJlXG4gICB6ZXJvLiBJZiAqayogaXMgIk5vbmUiLCBpdCBpcyB0cmVhdGVkIGxpa2UgIjEiLlxuXG42LiBDb25jYXRlbmF0aW5nIGltbXV0YWJsZSBzZXF1ZW5jZXMgYWx3YXlzIHJlc3VsdHMgaW4gYSBuZXdcbiAgIG9iamVjdC4gVGhpcyBtZWFucyB0aGF0IGJ1aWxkaW5nIHVwIGEgc2VxdWVuY2UgYnkgcmVwZWF0ZWRcbiAgIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgdG90YWxcbiAgIHNlcXVlbmNlIGxlbmd0aC4gVG8gZ2V0IGEgbGluZWFyIHJ1bnRpbWUgY29zdCwgeW91IG11c3Qgc3dpdGNoIHRvXG4gICBvbmUgb2YgdGhlIGFsdGVybmF0aXZlcyBiZWxvdzpcblxuICAgKiBpZiBjb25jYXRlbmF0aW5nICJzdHIiIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCB1c2VcbiAgICAgInN0ci5qb2luKCkiIGF0IHRoZSBlbmQgb3IgZWxzZSB3cml0ZSB0byBhbiAiaW8uU3RyaW5nSU8iXG4gICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgImJ5dGVzIiBvYmplY3RzLCB5b3UgY2FuIHNpbWlsYXJseSB1c2VcbiAgICAgImJ5dGVzLmpvaW4oKSIgb3IgImlvLkJ5dGVzSU8iLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4gICAgIGNvbmNhdGVuYXRpb24gd2l0aCBhICJieXRlYXJyYXkiIG9iamVjdC4gICJieXRlYXJyYXkiIG9iamVjdHMgYXJlXG4gICAgIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbVxuXG4gICAqIGlmIGNvbmNhdGVuYXRpbmcgInR1cGxlIiBvYmplY3RzLCBleHRlbmQgYSAibGlzdCIgaW5zdGVhZFxuXG4gICAqIGZvciBvdGhlciB0eXBlcywgaW52ZXN0aWdhdGUgdGhlIHJlbGV2YW50IGNsYXNzIGRvY3VtZW50YXRpb25cblxuNy4gU29tZSBzZXF1ZW5jZSB0eXBlcyAoc3VjaCBhcyAicmFuZ2UiKSBvbmx5IHN1cHBvcnQgaXRlbVxuICAgc2VxdWVuY2VzIHRoYXQgZm9sbG93IHNwZWNpZmljIHBhdHRlcm5zLCBhbmQgaGVuY2UgZG9uXCd0IHN1cHBvcnRcbiAgIHNlcXVlbmNlIGNvbmNhdGVuYXRpb24gb3IgcmVwZXRpdGlvbi5cblxuOC4gImluZGV4IiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouIFdoZW5cbiAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgYWxsb3dcbiAgIGVmZmljaWVudCBzZWFyY2hpbmcgb2Ygc3Vic2VjdGlvbnMgb2YgdGhlIHNlcXVlbmNlLiBQYXNzaW5nIHRoZVxuICAgZXh0cmEgYXJndW1lbnRzIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byB1c2luZyAic1tpOmpdLmluZGV4KHgpIixcbiAgIG9ubHkgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCBiZWluZ1xuICAgcmVsYXRpdmUgdG8gdGhlIHN0YXJ0IG9mIHRoZSBzZXF1ZW5jZSByYXRoZXIgdGhhbiB0aGUgc3RhcnQgb2YgdGhlXG4gICBzbGljZS5cblxuXG5JbW11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT09PVxuXG5UaGUgb25seSBvcGVyYXRpb24gdGhhdCBpbW11dGFibGUgc2VxdWVuY2UgdHlwZXMgZ2VuZXJhbGx5IGltcGxlbWVudFxudGhhdCBpcyBub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzIHN1cHBvcnQgZm9yXG50aGUgImhhc2goKSIgYnVpbHQtaW4uXG5cblRoaXMgc3VwcG9ydCBhbGxvd3MgaW1tdXRhYmxlIHNlcXVlbmNlcywgc3VjaCBhcyAidHVwbGUiIGluc3RhbmNlcywgdG9cbmJlIHVzZWQgYXMgImRpY3QiIGtleXMgYW5kIHN0b3JlZCBpbiAic2V0IiBhbmQgImZyb3plbnNldCIgaW5zdGFuY2VzLlxuXG5BdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgdW5oYXNoYWJsZVxudmFsdWVzIHdpbGwgcmVzdWx0IGluICJUeXBlRXJyb3IiLlxuXG5cbk11dGFibGUgU2VxdWVuY2UgVHlwZXNcbj09PT09PT09PT09PT09PT09PT09PT1cblxuVGhlIG9wZXJhdGlvbnMgaW4gdGhlIGZvbGxvd2luZyB0YWJsZSBhcmUgZGVmaW5lZCBvbiBtdXRhYmxlIHNlcXVlbmNlXG50eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgcHJvdmlkZWQgdG8gbWFrZVxuaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gc2VxdWVuY2VcbnR5cGVzLlxuXG5JbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlLCAqdCogaXMgYW55XG5pdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55IHR5cGUgYW5kXG52YWx1ZSByZXN0cmljdGlvbnMgaW1wb3NlZCBieSAqcyogKGZvciBleGFtcGxlLCAiYnl0ZWFycmF5IiBvbmx5XG5hY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCA8PSAyNTUiKS5cblxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58IE9wZXJhdGlvbiAgICAgICAgICAgICAgICAgICAgICB8IFJlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09K1xufCAic1tpXSA9IHgiICAgICAgICAgICAgICAgICAgICAgfCBpdGVtICppKiBvZiAqcyogaXMgcmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmpdID0gdCIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiB0aGUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9IFtdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgInNbaTpqOmtdIiBhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRob3NlIG9mICp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqOmtdIiAgICAgICAgICAgICAgICAgfCByZW1vdmVzIHRoZSBlbGVtZW50cyBvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgbGlzdCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mIHRoZSAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lIGFzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgInNbbGVuKHMpOmxlbihzKV0gPSBbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNsZWFyKCkiICAgICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgYWxsIGl0ZW1zIGZyb20gInMiIChzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCBzWzpdIikgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgInMiICAgIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlIGNvbnRlbnRzIG9mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKnQqIChmb3IgdGhlIG1vc3QgcGFydCB0aGUgc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSA9IHQiKSAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgY29udGVudHMgICAgfCAoNikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogdGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogYXQgdGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBpbmRleCBnaXZlbiBieSAqaSogKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSBbeF0iKSAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqIGFuZCAgICB8ICgyKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICpzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gZnJvbSAqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoZXJlICJzW2ldID09IHgiICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5yZXZlcnNlKCkiICAgICAgICAgICAgICAgICAgfCByZXZlcnNlcyB0aGUgaXRlbXMgb2YgKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHBsYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuXG5Ob3RlczpcblxuMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cblxuMi4gVGhlIG9wdGlvbmFsIGFyZ3VtZW50ICppKiBkZWZhdWx0cyB0byAiLTEiLCBzbyB0aGF0IGJ5IGRlZmF1bHRcbiAgIHRoZSBsYXN0IGl0ZW0gaXMgcmVtb3ZlZCBhbmQgcmV0dXJuZWQuXG5cbjMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cblxuNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgZm9yXG4gICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnNcbiAgIHRoYXQgaXQgb3BlcmF0ZXMgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgcmV2ZXJzZWRcbiAgIHNlcXVlbmNlLlxuXG41LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGVcbiAgIGludGVyZmFjZXMgb2YgbXV0YWJsZSBjb250YWluZXJzIHRoYXQgZG9uXCd0IHN1cHBvcnQgc2xpY2luZ1xuICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuXG4gICBOZXcgaW4gdmVyc2lvbiAzLjM6ICJjbGVhcigpIiBhbmQgImNvcHkoKSIgbWV0aG9kcy5cblxuNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgaW1wbGVtZW50aW5nXG4gICAiX19pbmRleF9fKCkiLiAgWmVybyBhbmQgbmVnYXRpdmUgdmFsdWVzIG9mICpuKiBjbGVhciB0aGUgc2VxdWVuY2UuXG4gICBJdGVtcyBpbiB0aGUgc2VxdWVuY2UgYXJlIG5vdCBjb3BpZWQ7IHRoZXkgYXJlIHJlZmVyZW5jZWQgbXVsdGlwbGVcbiAgIHRpbWVzLCBhcyBleHBsYWluZWQgZm9yICJzICogbiIgdW5kZXIgKkNvbW1vbiBTZXF1ZW5jZSBPcGVyYXRpb25zKi5cblxuXG5MaXN0c1xuPT09PT1cblxuTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyBvZlxuaG9tb2dlbmVvdXMgaXRlbXMgKHdoZXJlIHRoZSBwcmVjaXNlIGRlZ3JlZSBvZiBzaW1pbGFyaXR5IHdpbGwgdmFyeSBieVxuYXBwbGljYXRpb24pLlxuXG5jbGFzcyBjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG5cbiAgIExpc3RzIG1heSBiZSBjb25zdHJ1Y3RlZCBpbiBzZXZlcmFsIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHNxdWFyZSBicmFja2V0cyB0byBkZW5vdGUgdGhlIGVtcHR5IGxpc3Q6ICJbXSJcblxuICAgKiBVc2luZyBzcXVhcmUgYnJhY2tldHMsIHNlcGFyYXRpbmcgaXRlbXMgd2l0aCBjb21tYXM6ICJbYV0iLFxuICAgICAiW2EsIGIsIGNdIlxuXG4gICAqIFVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uOiAiW3ggZm9yIHggaW4gaXRlcmFibGVdIlxuXG4gICAqIFVzaW5nIHRoZSB0eXBlIGNvbnN0cnVjdG9yOiAibGlzdCgpIiBvciAibGlzdChpdGVyYWJsZSkiXG5cbiAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgbGlzdCwgYSBjb3B5IGlzIG1hZGUgYW5kXG4gICByZXR1cm5lZCwgc2ltaWxhciB0byAiaXRlcmFibGVbOl0iLiBGb3IgZXhhbXBsZSwgImxpc3QoXCdhYmNcJykiXG4gICByZXR1cm5zICJbXCdhXCcsIFwnYlwnLCBcJ2NcJ10iIGFuZCAibGlzdCggKDEsIDIsIDMpICkiIHJldHVybnMgIlsxLCAyLFxuICAgM10iLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHlcbiAgIGxpc3QsICJbXSIuXG5cbiAgIE1hbnkgb3RoZXIgb3BlcmF0aW9ucyBhbHNvIHByb2R1Y2UgbGlzdHMsIGluY2x1ZGluZyB0aGUgInNvcnRlZCgpIlxuICAgYnVpbHQtaW4uXG5cbiAgIExpc3RzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIGFuZCAqbXV0YWJsZSogc2VxdWVuY2VcbiAgIG9wZXJhdGlvbnMuIExpc3RzIGFsc28gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFkZGl0aW9uYWwgbWV0aG9kOlxuXG4gICBzb3J0KCosIGtleT1Ob25lLCByZXZlcnNlPU5vbmUpXG5cbiAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5ICI8IiBjb21wYXJpc29uc1xuICAgICAgYmV0d2VlbiBpdGVtcy4gRXhjZXB0aW9ucyBhcmUgbm90IHN1cHByZXNzZWQgLSBpZiBhbnkgY29tcGFyaXNvblxuICAgICAgb3BlcmF0aW9ucyBmYWlsLCB0aGUgZW50aXJlIHNvcnQgb3BlcmF0aW9uIHdpbGwgZmFpbCAoYW5kIHRoZVxuICAgICAgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0IGluIGEgcGFydGlhbGx5IG1vZGlmaWVkIHN0YXRlKS5cblxuICAgICAgInNvcnQoKSIgYWNjZXB0cyB0d28gYXJndW1lbnRzIHRoYXQgY2FuIG9ubHkgYmUgcGFzc2VkIGJ5XG4gICAgICBrZXl3b3JkICgqa2V5d29yZC1vbmx5IGFyZ3VtZW50cyopOlxuXG4gICAgICAqa2V5KiBzcGVjaWZpZXMgYSBmdW5jdGlvbiBvZiBvbmUgYXJndW1lbnQgdGhhdCBpcyB1c2VkIHRvXG4gICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yIGV4YW1wbGUsXG4gICAgICAia2V5PXN0ci5sb3dlciIpLiBUaGUga2V5IGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBpdGVtIGluIHRoZSBsaXN0XG4gICAgICBpcyBjYWxjdWxhdGVkIG9uY2UgYW5kIHRoZW4gdXNlZCBmb3IgdGhlIGVudGlyZSBzb3J0aW5nIHByb2Nlc3MuXG4gICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAiTm9uZSIgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSBzb3J0ZWRcbiAgICAgIGRpcmVjdGx5IHdpdGhvdXQgY2FsY3VsYXRpbmcgYSBzZXBhcmF0ZSBrZXkgdmFsdWUuXG5cbiAgICAgIFRoZSAiZnVuY3Rvb2xzLmNtcF90b19rZXkoKSIgdXRpbGl0eSBpcyBhdmFpbGFibGUgdG8gY29udmVydCBhXG4gICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cblxuICAgICAgKnJldmVyc2UqIGlzIGEgYm9vbGVhbiB2YWx1ZS4gIElmIHNldCB0byAiVHJ1ZSIsIHRoZW4gdGhlIGxpc3RcbiAgICAgIGVsZW1lbnRzIGFyZSBzb3J0ZWQgYXMgaWYgZWFjaCBjb21wYXJpc29uIHdlcmUgcmV2ZXJzZWQuXG5cbiAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiBzcGFjZVxuICAgICAgd2hlbiBzb3J0aW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgdXNlcnMgdGhhdCBpdCBvcGVyYXRlc1xuICAgICAgYnkgc2lkZSBlZmZlY3QsIGl0IGRvZXMgbm90IHJldHVybiB0aGUgc29ydGVkIHNlcXVlbmNlICh1c2VcbiAgICAgICJzb3J0ZWQoKSIgdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0IGluc3RhbmNlKS5cblxuICAgICAgVGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCBpc1xuICAgICAgc3RhYmxlIGlmIGl0IGd1YXJhbnRlZXMgbm90IHRvIGNoYW5nZSB0aGUgcmVsYXRpdmUgb3JkZXIgb2ZcbiAgICAgIGVsZW1lbnRzIHRoYXQgY29tcGFyZSBlcXVhbCAtLS0gdGhpcyBpcyBoZWxwZnVsIGZvciBzb3J0aW5nIGluXG4gICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgc2FsYXJ5XG4gICAgICBncmFkZSkuXG5cbiAgICAgICoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogV2hpbGUgYSBsaXN0IGlzIGJlaW5nIHNvcnRlZCxcbiAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlIGxpc3QgaXNcbiAgICAgIHVuZGVmaW5lZC4gIFRoZSBDIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBtYWtlcyB0aGUgbGlzdCBhcHBlYXJcbiAgICAgIGVtcHR5IGZvciB0aGUgZHVyYXRpb24sIGFuZCByYWlzZXMgIlZhbHVlRXJyb3IiIGlmIGl0IGNhbiBkZXRlY3RcbiAgICAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuXG5cblR1cGxlc1xuPT09PT09XG5cblR1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgY29sbGVjdGlvbnMgb2ZcbmhldGVyb2dlbmVvdXMgZGF0YSAoc3VjaCBhcyB0aGUgMi10dXBsZXMgcHJvZHVjZWQgYnkgdGhlICJlbnVtZXJhdGUoKSJcbmJ1aWx0LWluKS4gVHVwbGVzIGFyZSBhbHNvIHVzZWQgZm9yIGNhc2VzIHdoZXJlIGFuIGltbXV0YWJsZSBzZXF1ZW5jZVxub2YgaG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhICJzZXQiIG9yXG4iZGljdCIgaW5zdGFuY2UpLlxuXG5jbGFzcyBjbGFzcyB0dXBsZShbaXRlcmFibGVdKVxuXG4gICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG5cbiAgICogVXNpbmcgYSBwYWlyIG9mIHBhcmVudGhlc2VzIHRvIGRlbm90ZSB0aGUgZW1wdHkgdHVwbGU6ICIoKSJcblxuICAgKiBVc2luZyBhIHRyYWlsaW5nIGNvbW1hIGZvciBhIHNpbmdsZXRvbiB0dXBsZTogImEsIiBvciAiKGEsKSJcblxuICAgKiBTZXBhcmF0aW5nIGl0ZW1zIHdpdGggY29tbWFzOiAiYSwgYiwgYyIgb3IgIihhLCBiLCBjKSJcblxuICAgKiBVc2luZyB0aGUgInR1cGxlKCkiIGJ1aWx0LWluOiAidHVwbGUoKSIgb3IgInR1cGxlKGl0ZXJhYmxlKSJcblxuICAgVGhlIGNvbnN0cnVjdG9yIGJ1aWxkcyBhIHR1cGxlIHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gdGhlXG4gICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSpcJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgYVxuICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiBpdGVyYXRvclxuICAgb2JqZWN0LiAgSWYgKml0ZXJhYmxlKiBpcyBhbHJlYWR5IGEgdHVwbGUsIGl0IGlzIHJldHVybmVkXG4gICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCAidHVwbGUoXCdhYmNcJykiIHJldHVybnMgIihcJ2FcJywgXCdiXCcsIFwnY1wnKSJcbiAgIGFuZCAidHVwbGUoIFsxLCAyLCAzXSApIiByZXR1cm5zICIoMSwgMiwgMykiLiBJZiBubyBhcmd1bWVudCBpc1xuICAgZ2l2ZW4sIHRoZSBjb25zdHJ1Y3RvciBjcmVhdGVzIGEgbmV3IGVtcHR5IHR1cGxlLCAiKCkiLlxuXG4gICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCB0aGVcbiAgIHBhcmVudGhlc2VzLiBUaGUgcGFyZW50aGVzZXMgYXJlIG9wdGlvbmFsLCBleGNlcHQgaW4gdGhlIGVtcHR5XG4gICB0dXBsZSBjYXNlLCBvciB3aGVuIHRoZXkgYXJlIG5lZWRlZCB0byBhdm9pZCBzeW50YWN0aWMgYW1iaWd1aXR5LlxuICAgRm9yIGV4YW1wbGUsICJmKGEsIGIsIGMpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSBhcmd1bWVudHMsXG4gICB3aGlsZSAiZigoYSwgYiwgYykpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCBhIDMtdHVwbGUgYXMgdGhlIHNvbGVcbiAgIGFyZ3VtZW50LlxuXG4gICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgKmNvbW1vbiogc2VxdWVuY2Ugb3BlcmF0aW9ucy5cblxuRm9yIGhldGVyb2dlbmVvdXMgY29sbGVjdGlvbnMgb2YgZGF0YSB3aGVyZSBhY2Nlc3MgYnkgbmFtZSBpcyBjbGVhcmVyXG50aGFuIGFjY2VzcyBieSBpbmRleCwgImNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSIgbWF5IGJlIGEgbW9yZVxuYXBwcm9wcmlhdGUgY2hvaWNlIHRoYW4gYSBzaW1wbGUgdHVwbGUgb2JqZWN0LlxuXG5cblJhbmdlc1xuPT09PT09XG5cblRoZSAicmFuZ2UiIHR5cGUgcmVwcmVzZW50cyBhbiBpbW11dGFibGUgc2VxdWVuY2Ugb2YgbnVtYmVycyBhbmQgaXNcbmNvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gImZvciIgbG9vcHMuXG5cbmNsYXNzIGNsYXNzIHJhbmdlKHN0b3ApXG5jbGFzcyBjbGFzcyByYW5nZShzdGFydCwgc3RvcFssIHN0ZXBdKVxuXG4gICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzIChlaXRoZXJcbiAgIGJ1aWx0LWluICJpbnQiIG9yIGFueSBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSAiX19pbmRleF9fIlxuICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0b1xuICAgIjEiLiBJZiB0aGUgKnN0YXJ0KiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAiMCIuIElmXG4gICAqc3RlcCogaXMgemVybywgIlZhbHVlRXJyb3IiIGlzIHJhaXNlZC5cblxuICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSAiciIgYXJlIGRldGVybWluZWRcbiAgIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiIHdoZXJlICJpID49IDAiIGFuZCAicltpXSA8XG4gICBzdG9wIi5cblxuICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbFxuICAgZGV0ZXJtaW5lZCBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiwgYnV0IHRoZVxuICAgY29uc3RyYWludHMgYXJlICJpID49IDAiIGFuZCAicltpXSA+IHN0b3AiLlxuXG4gICBBIHJhbmdlIG9iamVjdCB3aWxsIGJlIGVtcHR5IGlmICJyWzBdIiBkb2VzIG5vdCBtZWV0IHRoZSB2YWx1ZVxuICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlIGFyZVxuICAgaW50ZXJwcmV0ZWQgYXMgaW5kZXhpbmcgZnJvbSB0aGUgZW5kIG9mIHRoZSBzZXF1ZW5jZSBkZXRlcm1pbmVkIGJ5XG4gICB0aGUgcG9zaXRpdmUgaW5kaWNlcy5cblxuICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgYXJlXG4gICBwZXJtaXR0ZWQgYnV0IHNvbWUgZmVhdHVyZXMgKHN1Y2ggYXMgImxlbigpIikgbWF5IHJhaXNlXG4gICAiT3ZlcmZsb3dFcnJvciIuXG5cbiAgIFJhbmdlIGV4YW1wbGVzOlxuXG4gICAgICA+Pj4gbGlzdChyYW5nZSgxMCkpXG4gICAgICBbMCwgMSwgMiwgMywgNCwgNSwgNiwgNywgOCwgOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSlcbiAgICAgIFsxLCAyLCAzLCA0LCA1LCA2LCA3LCA4LCA5LCAxMF1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDMwLCA1KSlcbiAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDAsIDEwLCAzKSlcbiAgICAgIFswLCAzLCA2LCA5XVxuICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpXG4gICAgICBbMCwgLTEsIC0yLCAtMywgLTQsIC01LCAtNiwgLTcsIC04LCAtOV1cbiAgICAgID4+PiBsaXN0KHJhbmdlKDApKVxuICAgICAgW11cbiAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDApKVxuICAgICAgW11cblxuICAgUmFuZ2VzIGltcGxlbWVudCBhbGwgb2YgdGhlICpjb21tb24qIHNlcXVlbmNlIG9wZXJhdGlvbnMgZXhjZXB0XG4gICBjb25jYXRlbmF0aW9uIGFuZCByZXBldGl0aW9uIChkdWUgdG8gdGhlIGZhY3QgdGhhdCByYW5nZSBvYmplY3RzXG4gICBjYW4gb25seSByZXByZXNlbnQgc2VxdWVuY2VzIHRoYXQgZm9sbG93IGEgc3RyaWN0IHBhdHRlcm4gYW5kXG4gICByZXBldGl0aW9uIGFuZCBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgcGF0dGVybikuXG5cbiAgIHN0YXJ0XG5cbiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0YXJ0KiBwYXJhbWV0ZXIgKG9yICIwIiBpZiB0aGUgcGFyYW1ldGVyIHdhc1xuICAgICAgbm90IHN1cHBsaWVkKVxuXG4gICBzdG9wXG5cbiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0b3AqIHBhcmFtZXRlclxuXG4gICBzdGVwXG5cbiAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0ZXAqIHBhcmFtZXRlciAob3IgIjEiIGlmIHRoZSBwYXJhbWV0ZXIgd2FzXG4gICAgICBub3Qgc3VwcGxpZWQpXG5cblRoZSBhZHZhbnRhZ2Ugb2YgdGhlICJyYW5nZSIgdHlwZSBvdmVyIGEgcmVndWxhciAibGlzdCIgb3IgInR1cGxlIiBpc1xudGhhdCBhICJyYW5nZSIgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKSBhbW91bnQgb2Zcbm1lbW9yeSwgbm8gbWF0dGVyIHRoZSBzaXplIG9mIHRoZSByYW5nZSBpdCByZXByZXNlbnRzIChhcyBpdCBvbmx5XG5zdG9yZXMgdGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIHZhbHVlcywgY2FsY3VsYXRpbmcgaW5kaXZpZHVhbFxuaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuXG5SYW5nZSBvYmplY3RzIGltcGxlbWVudCB0aGUgImNvbGxlY3Rpb25zLmFiYy5TZXF1ZW5jZSIgQUJDLCBhbmRcbnByb3ZpZGUgZmVhdHVyZXMgc3VjaCBhcyBjb250YWlubWVudCB0ZXN0cywgZWxlbWVudCBpbmRleCBsb29rdXAsXG5zbGljaW5nIGFuZCBzdXBwb3J0IGZvciBuZWdhdGl2ZSBpbmRpY2VzIChzZWUgKlNlcXVlbmNlIFR5cGVzIC0tLVxubGlzdCwgdHVwbGUsIHJhbmdlKik6XG5cbj4+PiByID0gcmFuZ2UoMCwgMjAsIDIpXG4+Pj4gclxucmFuZ2UoMCwgMjAsIDIpXG4+Pj4gMTEgaW4gclxuRmFsc2Vcbj4+PiAxMCBpbiByXG5UcnVlXG4+Pj4gci5pbmRleCgxMClcbjVcbj4+PiByWzVdXG4xMFxuPj4+IHJbOjVdXG5yYW5nZSgwLCAxMCwgMilcbj4+PiByWy0xXVxuMThcblxuVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoICI9PSIgYW5kICIhPSIgY29tcGFyZXMgdGhlbSBhc1xuc2VxdWVuY2VzLiAgVGhhdCBpcywgdHdvIHJhbmdlIG9iamVjdHMgYXJlIGNvbnNpZGVyZWQgZXF1YWwgaWYgdGhleVxucmVwcmVzZW50IHRoZSBzYW1lIHNlcXVlbmNlIG9mIHZhbHVlcy4gIChOb3RlIHRoYXQgdHdvIHJhbmdlIG9iamVjdHNcbnRoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIlxuYXR0cmlidXRlcywgZm9yIGV4YW1wbGUgInJhbmdlKDApID09IHJhbmdlKDIsIDEsIDMpIiBvciAicmFuZ2UoMCwgMyxcbjIpID09IHJhbmdlKDAsIDQsIDIpIi4pXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0IHNsaWNpbmdcbmFuZCBuZWdhdGl2ZSBpbmRpY2VzLiBUZXN0ICJpbnQiIG9iamVjdHMgZm9yIG1lbWJlcnNoaXAgaW4gY29uc3RhbnRcbnRpbWUgaW5zdGVhZCBvZiBpdGVyYXRpbmcgdGhyb3VnaCBhbGwgaXRlbXMuXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSBcJz09XCcgYW5kIFwnIT1cJyB0byBjb21wYXJlIHJhbmdlIG9iamVjdHNcbmJhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgY29tcGFyaW5nXG5iYXNlZCBvbiBvYmplY3QgaWRlbnRpdHkpLlxuXG5OZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAic3RhcnQiLCAic3RvcCIgYW5kICJzdGVwIiBhdHRyaWJ1dGVzLlxuJywKLSAndHlwZXNzZXEtbXV0YWJsZSc6IHUnXG5NdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4qKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSBzZXF1ZW5jZVxudHlwZXMuIFRoZSAiY29sbGVjdGlvbnMuYWJjLk11dGFibGVTZXF1ZW5jZSIgQUJDIGlzIHByb3ZpZGVkIHRvIG1ha2Vcbml0IGVhc2llciB0byBjb3JyZWN0bHkgaW1wbGVtZW50IHRoZXNlIG9wZXJhdGlvbnMgb24gY3VzdG9tIHNlcXVlbmNlXG50eXBlcy5cblxuSW4gdGhlIHRhYmxlICpzKiBpcyBhbiBpbnN0YW5jZSBvZiBhIG11dGFibGUgc2VxdWVuY2UgdHlwZSwgKnQqIGlzIGFueVxuaXRlcmFibGUgb2JqZWN0IGFuZCAqeCogaXMgYW4gYXJiaXRyYXJ5IG9iamVjdCB0aGF0IG1lZXRzIGFueSB0eXBlIGFuZFxudmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgb25seVxuYWNjZXB0cyBpbnRlZ2VycyB0aGF0IG1lZXQgdGhlIHZhbHVlIHJlc3RyaWN0aW9uICIwIDw9IHggPD0gMjU1IikuXG5cbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICB8IE5vdGVzICAgICAgICAgICAgICAgICB8XG4rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbnwgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkIGJ5ICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqXSA9IHQiICAgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiBpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgY29udGVudHMgb2YgdGhlICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSBbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aG9zZSBvZiAqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgImRlbCBzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyB0aGUgZWxlbWVudHMgb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlIGxpc3QgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlIGVuZCBvZiB0aGUgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSBhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2xlbihzKTpsZW4ocyldID0gW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jbGVhcigpIiAgICAgICAgICAgICAgICAgICAgfCByZW1vdmVzIGFsbCBpdGVtcyBmcm9tICJzIiAoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgc1s6XSIpICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyBjb3B5IG9mICJzIiAgICB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xufCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG58ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp0KiAoZm9yIHRoZSBtb3N0IHBhcnQgdGhlIHNhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gPSB0IikgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzIGNvbnRlbnRzICAgIHwgKDYpICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qIHRpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG58ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbnwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaW5kZXggZ2l2ZW4gYnkgKmkqIChzYW1lIGFzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gW3hdIikgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICppKiBhbmQgICAgfCAoMikgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCB3aGVyZSAic1tpXSA9PSB4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbnwgInMucmV2ZXJzZSgpIiAgICAgICAgICAgICAgICAgIHwgcmV2ZXJzZXMgdGhlIGl0ZW1zIG9mICpzKiBpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxufCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBwbGFjZSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcblxuTm90ZXM6XG5cbjEuICp0KiBtdXN0IGhhdmUgdGhlIHNhbWUgbGVuZ3RoIGFzIHRoZSBzbGljZSBpdCBpcyByZXBsYWNpbmcuXG5cbjIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSBkZWZhdWx0XG4gICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuXG4zLiAicmVtb3ZlIiByYWlzZXMgIlZhbHVlRXJyb3IiIHdoZW4gKngqIGlzIG5vdCBmb3VuZCBpbiAqcyouXG5cbjQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuICAgZWNvbm9teSBvZiBzcGFjZSB3aGVuIHJldmVyc2luZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzXG4gICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlIHJldmVyc2VkXG4gICBzZXF1ZW5jZS5cblxuNS4gImNsZWFyKCkiIGFuZCAiY29weSgpIiBhcmUgaW5jbHVkZWQgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlXG4gICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvblwndCBzdXBwb3J0IHNsaWNpbmdcbiAgIG9wZXJhdGlvbnMgKHN1Y2ggYXMgImRpY3QiIGFuZCAic2V0IilcblxuICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG5cbjYuIFRoZSB2YWx1ZSAqbiogaXMgYW4gaW50ZWdlciwgb3IgYW4gb2JqZWN0IGltcGxlbWVudGluZ1xuICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlIHNlcXVlbmNlLlxuICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlXG4gICB0aW1lcywgYXMgZXhwbGFpbmVkIGZvciAicyAqIG4iIHVuZGVyICpDb21tb24gU2VxdWVuY2UgT3BlcmF0aW9ucyouXG4nLAotICd1bmFyeSc6IHUnXG5VbmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnNcbioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuXG5BbGwgdW5hcnkgYXJpdGhtZXRpYyBhbmQgYml0d2lzZSBvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHk6XG5cbiAgIHVfZXhwciA6Oj0gcG93ZXIgfCAiLSIgdV9leHByIHwgIisiIHVfZXhwciB8ICJ+IiB1X2V4cHJcblxuVGhlIHVuYXJ5ICItIiAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbmFyZ3VtZW50LlxuXG5UaGUgdW5hcnkgIisiIChwbHVzKSBvcGVyYXRvciB5aWVsZHMgaXRzIG51bWVyaWMgYXJndW1lbnQgdW5jaGFuZ2VkLlxuXG5UaGUgdW5hcnkgIn4iIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgaXRzXG5pbnRlZ2VyIGFyZ3VtZW50LiAgVGhlIGJpdHdpc2UgaW52ZXJzaW9uIG9mICJ4IiBpcyBkZWZpbmVkIGFzXG4iLSh4KzEpIi4gIEl0IG9ubHkgYXBwbGllcyB0byBpbnRlZ3JhbCBudW1iZXJzLlxuXG5JbiBhbGwgdGhyZWUgY2FzZXMsIGlmIHRoZSBhcmd1bWVudCBkb2VzIG5vdCBoYXZlIHRoZSBwcm9wZXIgdHlwZSwgYVxuIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicsCi0gJ3doaWxlJzogdSdcblRoZSAid2hpbGUiIHN0YXRlbWVudFxuKioqKioqKioqKioqKioqKioqKioqXG5cblRoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuZXhwcmVzc2lvbiBpcyB0cnVlOlxuXG4gICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4gICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cblxuVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgdGhlXG5maXJzdCBzdWl0ZTsgaWYgdGhlIGV4cHJlc3Npb24gaXMgZmFsc2UgKHdoaWNoIG1heSBiZSB0aGUgZmlyc3QgdGltZVxuaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzIGV4ZWN1dGVkXG5hbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cblxuQSAiYnJlYWsiIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgdGVybWluYXRlcyB0aGUgbG9vcFxud2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgc3RhdGVtZW50XG5leGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzIGJhY2tcbnRvIHRlc3RpbmcgdGhlIGV4cHJlc3Npb24uXG4nLAotICd3aXRoJzogdSdcblRoZSAid2l0aCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKlxuXG5UaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrIHdpdGhcbm1ldGhvZHMgZGVmaW5lZCBieSBhIGNvbnRleHQgbWFuYWdlciAoc2VlIHNlY3Rpb24gKldpdGggU3RhdGVtZW50XG5Db250ZXh0IE1hbmFnZXJzKikuIFRoaXMgYWxsb3dzIGNvbW1vbiAidHJ5Ii4uLiJleGNlcHQiLi4uImZpbmFsbHkiXG51c2FnZSBwYXR0ZXJucyB0byBiZSBlbmNhcHN1bGF0ZWQgZm9yIGNvbnZlbmllbnQgcmV1c2UuXG5cbiAgIHdpdGhfc3RtdCA6Oj0gIndpdGgiIHdpdGhfaXRlbSAoIiwiIHdpdGhfaXRlbSkqICI6IiBzdWl0ZVxuICAgd2l0aF9pdGVtIDo6PSBleHByZXNzaW9uIFsiYXMiIHRhcmdldF1cblxuVGhlIGV4ZWN1dGlvbiBvZiB0aGUgIndpdGgiIHN0YXRlbWVudCB3aXRoIG9uZSAiaXRlbSIgcHJvY2VlZHMgYXNcbmZvbGxvd3M6XG5cbjEuIFRoZSBjb250ZXh0IGV4cHJlc3Npb24gKHRoZSBleHByZXNzaW9uIGdpdmVuIGluIHRoZSAid2l0aF9pdGVtIilcbiAgIGlzIGV2YWx1YXRlZCB0byBvYnRhaW4gYSBjb250ZXh0IG1hbmFnZXIuXG5cbjIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuXG4zLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG5cbjQuIElmIGEgdGFyZ2V0IHdhcyBpbmNsdWRlZCBpbiB0aGUgIndpdGgiIHN0YXRlbWVudCwgdGhlIHJldHVyblxuICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuXG4gICBOb3RlOiBUaGUgIndpdGgiIHN0YXRlbWVudCBndWFyYW50ZWVzIHRoYXQgaWYgdGhlICJfX2VudGVyX18oKSJcbiAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgYmVcbiAgICAgY2FsbGVkLiBUaHVzLCBpZiBhbiBlcnJvciBvY2N1cnMgZHVyaW5nIHRoZSBhc3NpZ25tZW50IHRvIHRoZVxuICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuXG41LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG5cbjYuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLiAgSWYgYW5cbiAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbiAgIHRyYWNlYmFjayBhcmUgcGFzc2VkIGFzIGFyZ3VtZW50cyB0byAiX19leGl0X18oKSIuIE90aGVyd2lzZSwgdGhyZWVcbiAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuXG4gICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiB2YWx1ZVxuICAgZnJvbSB0aGUgIl9fZXhpdF9fKCkiIG1ldGhvZCB3YXMgZmFsc2UsIHRoZSBleGNlcHRpb24gaXMgcmVyYWlzZWQuXG4gICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbiAgIHN0YXRlbWVudC5cblxuICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiBleGNlcHRpb24sIHRoZVxuICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gcHJvY2VlZHNcbiAgIGF0IHRoZSBub3JtYWwgbG9jYXRpb24gZm9yIHRoZSBraW5kIG9mIGV4aXQgdGhhdCB3YXMgdGFrZW4uXG5cbldpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzIGlmXG5tdWx0aXBsZSAid2l0aCIgc3RhdGVtZW50cyB3ZXJlIG5lc3RlZDpcblxuICAgd2l0aCBBKCkgYXMgYSwgQigpIGFzIGI6XG4gICAgICAgc3VpdGVcblxuaXMgZXF1aXZhbGVudCB0b1xuXG4gICB3aXRoIEEoKSBhcyBhOlxuICAgICAgIHdpdGggQigpIGFzIGI6XG4gICAgICAgICAgIHN1aXRlXG5cbkNoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IFN1cHBvcnQgZm9yIG11bHRpcGxlIGNvbnRleHQgZXhwcmVzc2lvbnMuXG5cblNlZSBhbHNvOiAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG5cbiAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAid2l0aCJcbiAgICAgc3RhdGVtZW50LlxuJywKLSAneWllbGQnOiB1J1xuVGhlICJ5aWVsZCIgc3RhdGVtZW50XG4qKioqKioqKioqKioqKioqKioqKipcblxuICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuXG5BICJ5aWVsZCIgc3RhdGVtZW50IGlzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvIGEgKnlpZWxkXG5leHByZXNzaW9uKi4gVGhlIHlpZWxkIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBvbWl0IHRoZSBwYXJlbnRoZXNlc1xudGhhdCB3b3VsZCBvdGhlcndpc2UgYmUgcmVxdWlyZWQgaW4gdGhlIGVxdWl2YWxlbnQgeWllbGQgZXhwcmVzc2lvblxuc3RhdGVtZW50LiBGb3IgZXhhbXBsZSwgdGhlIHlpZWxkIHN0YXRlbWVudHNcblxuICAgeWllbGQgPGV4cHI+XG4gICB5aWVsZCBmcm9tIDxleHByPlxuXG5hcmUgZXF1aXZhbGVudCB0byB0aGUgeWllbGQgZXhwcmVzc2lvbiBzdGF0ZW1lbnRzXG5cbiAgICh5aWVsZCA8ZXhwcj4pXG4gICAoeWllbGQgZnJvbSA8ZXhwcj4pXG5cbllpZWxkIGV4cHJlc3Npb25zIGFuZCBzdGF0ZW1lbnRzIGFyZSBvbmx5IHVzZWQgd2hlbiBkZWZpbmluZyBhXG4qZ2VuZXJhdG9yKiBmdW5jdGlvbiwgYW5kIGFyZSBvbmx5IHVzZWQgaW4gdGhlIGJvZHkgb2YgdGhlIGdlbmVyYXRvclxuZnVuY3Rpb24uICBVc2luZyB5aWVsZCBpbiBhIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgc3VmZmljaWVudCB0byBjYXVzZVxudGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbm9ybWFsXG5mdW5jdGlvbi5cblxuRm9yIGZ1bGwgZGV0YWlscyBvZiAieWllbGQiIHNlbWFudGljcywgcmVmZXIgdG8gdGhlICpZaWVsZFxuZXhwcmVzc2lvbnMqIHNlY3Rpb24uXG4nfQorIyBBdXRvZ2VuZXJhdGVkIGJ5IFNwaGlueCBvbiBNb24gT2N0IDEwIDE1OjU5OjE3IDIwMTYKK3RvcGljcyA9IHsnYXNzZXJ0JzogJ1xuJworICAgICAgICAgICAnVGhlICJhc3NlcnQiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBc3NlcnQgc3RhdGVtZW50cyBhcmUgYSBjb252ZW5pZW50IHdheSB0byBpbnNlcnQgZGVidWdnaW5nICcKKyAgICAgICAgICAgJ2Fzc2VydGlvbnNcbicKKyAgICAgICAgICAgJ2ludG8gYSBwcm9ncmFtOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBhc3NlcnRfc3RtdCA6Oj0gImFzc2VydCIgZXhwcmVzc2lvbiBbIiwiIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBzaW1wbGUgZm9ybSwgImFzc2VydCBleHByZXNzaW9uIiwgaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpZiBfX2RlYnVnX186XG4nCisgICAgICAgICAgICcgICAgICAgaWYgbm90IGV4cHJlc3Npb246IHJhaXNlIEFzc2VydGlvbkVycm9yXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBleHRlbmRlZCBmb3JtLCAiYXNzZXJ0IGV4cHJlc3Npb24xLCBleHByZXNzaW9uMiIsIGlzICcKKyAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgaWYgX19kZWJ1Z19fOlxuJworICAgICAgICAgICAnICAgICAgIGlmIG5vdCBleHByZXNzaW9uMTogcmFpc2UgQXNzZXJ0aW9uRXJyb3IoZXhwcmVzc2lvbjIpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZXNlIGVxdWl2YWxlbmNlcyBhc3N1bWUgdGhhdCAiX19kZWJ1Z19fIiBhbmQgIkFzc2VydGlvbkVycm9yIiAnCisgICAgICAgICAgICdyZWZlclxuJworICAgICAgICAgICAndG8gdGhlIGJ1aWx0LWluIHZhcmlhYmxlcyB3aXRoIHRob3NlIG5hbWVzLiAgSW4gdGhlIGN1cnJlbnRcbicKKyAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLCB0aGUgYnVpbHQtaW4gdmFyaWFibGUgIl9fZGVidWdfXyIgaXMgIlRydWUiIHVuZGVyXG4nCisgICAgICAgICAgICdub3JtYWwgY2lyY3Vtc3RhbmNlcywgIkZhbHNlIiB3aGVuIG9wdGltaXphdGlvbiBpcyByZXF1ZXN0ZWQgJworICAgICAgICAgICAnKGNvbW1hbmRcbicKKyAgICAgICAgICAgJ2xpbmUgb3B0aW9uIC1PKS4gIFRoZSBjdXJyZW50IGNvZGUgZ2VuZXJhdG9yIGVtaXRzIG5vIGNvZGUgZm9yIGFuXG4nCisgICAgICAgICAgICdhc3NlcnQgc3RhdGVtZW50IHdoZW4gb3B0aW1pemF0aW9uIGlzIHJlcXVlc3RlZCBhdCBjb21waWxlIHRpbWUuICAnCisgICAgICAgICAgICdOb3RlXG4nCisgICAgICAgICAgICd0aGF0IGl0IGlzIHVubmVjZXNzYXJ5IHRvIGluY2x1ZGUgdGhlIHNvdXJjZSBjb2RlIGZvciB0aGUgJworICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAndGhhdCBmYWlsZWQgaW4gdGhlIGVycm9yIG1lc3NhZ2U7IGl0IHdpbGwgYmUgZGlzcGxheWVkIGFzIHBhcnQgb2YgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdzdGFjayB0cmFjZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQXNzaWdubWVudHMgdG8gIl9fZGVidWdfXyIgYXJlIGlsbGVnYWwuICBUaGUgdmFsdWUgZm9yIHRoZSAnCisgICAgICAgICAgICdidWlsdC1pblxuJworICAgICAgICAgICAndmFyaWFibGUgaXMgZGV0ZXJtaW5lZCB3aGVuIHRoZSBpbnRlcnByZXRlciBzdGFydHMuXG4nLAorICdhc3NpZ25tZW50JzogJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgc3RhdGVtZW50cyBhcmUgdXNlZCB0byAocmUpYmluZCBuYW1lcyB0byB2YWx1ZXMgYW5kICcKKyAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgJ21vZGlmeSBhdHRyaWJ1dGVzIG9yIGl0ZW1zIG9mIG11dGFibGUgb2JqZWN0czpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICBhc3NpZ25tZW50X3N0bXQgOjo9ICh0YXJnZXRfbGlzdCAiPSIpKyAoc3RhcnJlZF9leHByZXNzaW9uICcKKyAgICAgICAgICAgICAgICd8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICAnICAgdGFyZ2V0X2xpc3QgICAgIDo6PSB0YXJnZXQgKCIsIiB0YXJnZXQpKiBbIiwiXVxuJworICAgICAgICAgICAgICAgJyAgIHRhcmdldCAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCAiKCIgW3RhcmdldF9saXN0XSAiKSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgIlsiIFt0YXJnZXRfbGlzdF0gIl0iXG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgICAgICB8IGF0dHJpYnV0ZXJlZlxuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCBzdWJzY3JpcHRpb25cbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgIHwgc2xpY2luZ1xuJworICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgfCAiKiIgdGFyZ2V0XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBmb3IgJworICAgICAgICAgICAgICAgJyphdHRyaWJ1dGVyZWYqLFxuJworICAgICAgICAgICAgICAgJypzdWJzY3JpcHRpb24qLCBhbmQgKnNsaWNpbmcqLilcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhc3NpZ25tZW50IHN0YXRlbWVudCBldmFsdWF0ZXMgdGhlIGV4cHJlc3Npb24gbGlzdCAnCisgICAgICAgICAgICAgICAnKHJlbWVtYmVyIHRoYXRcbicKKyAgICAgICAgICAgICAgICd0aGlzIGNhbiBiZSBhIHNpbmdsZSBleHByZXNzaW9uIG9yIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QsIHRoZSAnCisgICAgICAgICAgICAgICAnbGF0dGVyXG4nCisgICAgICAgICAgICAgICAneWllbGRpbmcgYSB0dXBsZSkgYW5kIGFzc2lnbnMgdGhlIHNpbmdsZSByZXN1bHRpbmcgb2JqZWN0IHRvICcKKyAgICAgICAgICAgICAgICdlYWNoIG9mXG4nCisgICAgICAgICAgICAgICAndGhlIHRhcmdldCBsaXN0cywgZnJvbSBsZWZ0IHRvIHJpZ2h0LlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgaXMgZGVmaW5lZCByZWN1cnNpdmVseSBkZXBlbmRpbmcgb24gdGhlIGZvcm0gb2YgdGhlICcKKyAgICAgICAgICAgICAgICd0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcobGlzdCkuIFdoZW4gYSB0YXJnZXQgaXMgcGFydCBvZiBhIG11dGFibGUgb2JqZWN0IChhbiAnCisgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAncmVmZXJlbmNlLCBzdWJzY3JpcHRpb24gb3Igc2xpY2luZyksIHRoZSBtdXRhYmxlIG9iamVjdCBtdXN0XG4nCisgICAgICAgICAgICAgICAndWx0aW1hdGVseSBwZXJmb3JtIHRoZSBhc3NpZ25tZW50IGFuZCBkZWNpZGUgYWJvdXQgaXRzICcKKyAgICAgICAgICAgICAgICd2YWxpZGl0eSwgYW5kXG4nCisgICAgICAgICAgICAgICAnbWF5IHJhaXNlIGFuIGV4Y2VwdGlvbiBpZiB0aGUgYXNzaWdubWVudCBpcyB1bmFjY2VwdGFibGUuICBUaGUgJworICAgICAgICAgICAgICAgJ3J1bGVzXG4nCisgICAgICAgICAgICAgICAnb2JzZXJ2ZWQgYnkgdmFyaW91cyB0eXBlcyBhbmQgdGhlIGV4Y2VwdGlvbnMgcmFpc2VkIGFyZSBnaXZlbiAnCisgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICdkZWZpbml0aW9uIG9mIHRoZSBvYmplY3QgdHlwZXMgKHNlZSBzZWN0aW9uIFRoZSBzdGFuZGFyZCB0eXBlXG4nCisgICAgICAgICAgICAgICAnaGllcmFyY2h5KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBc3NpZ25tZW50IG9mIGFuIG9iamVjdCB0byBhIHRhcmdldCBsaXN0LCBvcHRpb25hbGx5IGVuY2xvc2VkICcKKyAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgJ3BhcmVudGhlc2VzIG9yIHNxdWFyZSBicmFja2V0cywgaXMgcmVjdXJzaXZlbHkgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICAgICAnZm9sbG93cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBlbXB0eTogVGhlIG9iamVjdCBtdXN0IGFsc28gYmUgYW4gJworICAgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgICAnICBpdGVyYWJsZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIHNpbmdsZSB0YXJnZXQgaW4gcGFyZW50aGVzZXM6IFRoZSAnCisgICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICAnICBpcyBhc3NpZ25lZCB0byB0aGF0IHRhcmdldC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgbGlzdCBpcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IG9mIHRhcmdldHMsIG9yICcKKyAgICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgICAnICBzaW5nbGUgdGFyZ2V0IGluIHNxdWFyZSBicmFja2V0czogVGhlIG9iamVjdCBtdXN0IGJlIGFuICcKKyAgICAgICAgICAgICAgICdpdGVyYWJsZVxuJworICAgICAgICAgICAgICAgJyAgd2l0aCB0aGUgc2FtZSBudW1iZXIgb2YgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgaW4gdGhlICcKKyAgICAgICAgICAgICAgICd0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcgIGxpc3QsIGFuZCB0aGUgaXRlbXMgYXJlIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvICcKKyAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICcgIGNvcnJlc3BvbmRpbmcgdGFyZ2V0cy5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICogSWYgdGhlIHRhcmdldCBsaXN0IGNvbnRhaW5zIG9uZSB0YXJnZXQgcHJlZml4ZWQgd2l0aCBhblxuJworICAgICAgICAgICAgICAgJyAgICBhc3RlcmlzaywgY2FsbGVkIGEgInN0YXJyZWQiIHRhcmdldDogVGhlIG9iamVjdCBtdXN0IGJlICcKKyAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgJyAgICBpdGVyYWJsZSB3aXRoIGF0IGxlYXN0IGFzIG1hbnkgaXRlbXMgYXMgdGhlcmUgYXJlIHRhcmdldHMgJworICAgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICAgJyAgICB0YXJnZXQgbGlzdCwgbWludXMgb25lLiAgVGhlIGZpcnN0IGl0ZW1zIG9mIHRoZSBpdGVyYWJsZSAnCisgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAnICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSB0YXJnZXRzIGJlZm9yZSB0aGUgJworICAgICAgICAgICAgICAgJ3N0YXJyZWRcbicKKyAgICAgICAgICAgICAgICcgICAgdGFyZ2V0LiAgVGhlIGZpbmFsIGl0ZW1zIG9mIHRoZSBpdGVyYWJsZSBhcmUgYXNzaWduZWQgdG8gJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgICB0YXJnZXRzIGFmdGVyIHRoZSBzdGFycmVkIHRhcmdldC4gIEEgbGlzdCBvZiB0aGUgcmVtYWluaW5nICcKKyAgICAgICAgICAgICAgICdpdGVtc1xuJworICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgaXRlcmFibGUgaXMgdGhlbiBhc3NpZ25lZCB0byB0aGUgc3RhcnJlZCB0YXJnZXQgJworICAgICAgICAgICAgICAgJyh0aGUgbGlzdFxuJworICAgICAgICAgICAgICAgJyAgICBjYW4gYmUgZW1wdHkpLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBFbHNlOiBUaGUgb2JqZWN0IG11c3QgYmUgYW4gaXRlcmFibGUgd2l0aCB0aGUgc2FtZSBudW1iZXIgJworICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAnICAgIGl0ZW1zIGFzIHRoZXJlIGFyZSB0YXJnZXRzIGluIHRoZSB0YXJnZXQgbGlzdCwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAnaXRlbXMgYXJlXG4nCisgICAgICAgICAgICAgICAnICAgIGFzc2lnbmVkLCBmcm9tIGxlZnQgdG8gcmlnaHQsIHRvIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAgICAgICd0YXJnZXRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fzc2lnbm1lbnQgb2YgYW4gb2JqZWN0IHRvIGEgc2luZ2xlIHRhcmdldCBpcyByZWN1cnNpdmVseSAnCisgICAgICAgICAgICAgICAnZGVmaW5lZCBhc1xuJworICAgICAgICAgICAgICAgJ2ZvbGxvd3MuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGFuIGlkZW50aWZpZXIgKG5hbWUpOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgKiBJZiB0aGUgbmFtZSBkb2VzIG5vdCBvY2N1ciBpbiBhICJnbG9iYWwiIG9yICJub25sb2NhbCIgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICAgJyAgICBpbiB0aGUgY3VycmVudCBjb2RlIGJsb2NrOiB0aGUgbmFtZSBpcyBib3VuZCB0byB0aGUgb2JqZWN0ICcKKyAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgY3VycmVudCBsb2NhbCBuYW1lc3BhY2UuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAqIE90aGVyd2lzZTogdGhlIG5hbWUgaXMgYm91bmQgdG8gdGhlIG9iamVjdCBpbiB0aGUgZ2xvYmFsXG4nCisgICAgICAgICAgICAgICAnICAgIG5hbWVzcGFjZSBvciB0aGUgb3V0ZXIgbmFtZXNwYWNlIGRldGVybWluZWQgYnkgJworICAgICAgICAgICAgICAgJyJub25sb2NhbCIsXG4nCisgICAgICAgICAgICAgICAnICAgIHJlc3BlY3RpdmVseS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIFRoZSBuYW1lIGlzIHJlYm91bmQgaWYgaXQgd2FzIGFscmVhZHkgYm91bmQuICBUaGlzIG1heSBjYXVzZSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnICByZWZlcmVuY2UgY291bnQgZm9yIHRoZSBvYmplY3QgcHJldmlvdXNseSBib3VuZCB0byB0aGUgbmFtZSAnCisgICAgICAgICAgICAgICAndG8gcmVhY2hcbicKKyAgICAgICAgICAgICAgICcgIHplcm8sIGNhdXNpbmcgdGhlIG9iamVjdCB0byBiZSBkZWFsbG9jYXRlZCBhbmQgaXRzICcKKyAgICAgICAgICAgICAgICdkZXN0cnVjdG9yIChpZiBpdFxuJworICAgICAgICAgICAgICAgJyAgaGFzIG9uZSkgdG8gYmUgY2FsbGVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyogSWYgdGhlIHRhcmdldCBpcyBhbiBhdHRyaWJ1dGUgcmVmZXJlbmNlOiBUaGUgcHJpbWFyeSAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpblxuJworICAgICAgICAgICAgICAgJyAgdGhlIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYW4gb2JqZWN0IHdpdGhcbicKKyAgICAgICAgICAgICAgICcgIGFzc2lnbmFibGUgYXR0cmlidXRlczsgaWYgdGhpcyBpcyBub3QgdGhlIGNhc2UsICJUeXBlRXJyb3IiICcKKyAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgJyAgcmFpc2VkLiAgVGhhdCBvYmplY3QgaXMgdGhlbiBhc2tlZCB0byBhc3NpZ24gdGhlIGFzc2lnbmVkICcKKyAgICAgICAgICAgICAgICdvYmplY3QgdG9cbicKKyAgICAgICAgICAgICAgICcgIHRoZSBnaXZlbiBhdHRyaWJ1dGU7IGlmIGl0IGNhbm5vdCBwZXJmb3JtIHRoZSBhc3NpZ25tZW50LCBpdCAnCisgICAgICAgICAgICAgICAncmFpc2VzXG4nCisgICAgICAgICAgICAgICAnICBhbiBleGNlcHRpb24gKHVzdWFsbHkgYnV0IG5vdCBuZWNlc3NhcmlseSAnCisgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBOb3RlOiBJZiB0aGUgb2JqZWN0IGlzIGEgY2xhc3MgaW5zdGFuY2UgYW5kIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgJyAgb2NjdXJzIG9uIGJvdGggc2lkZXMgb2YgdGhlIGFzc2lnbm1lbnQgb3BlcmF0b3IsIHRoZSBSSFMgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24sXG4nCisgICAgICAgICAgICAgICAnICAiYS54IiBjYW4gYWNjZXNzIGVpdGhlciBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgb3IgKGlmIG5vICcKKyAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIGV4aXN0cykgYSBjbGFzcyBhdHRyaWJ1dGUuICBUaGUgTEhTIHRhcmdldCAiYS54IiAnCisgICAgICAgICAgICAgICAnaXMgYWx3YXlzXG4nCisgICAgICAgICAgICAgICAnICBzZXQgYXMgYW4gaW5zdGFuY2UgYXR0cmlidXRlLCBjcmVhdGluZyBpdCBpZiBuZWNlc3NhcnkuICAnCisgICAgICAgICAgICAgICAnVGh1cywgdGhlXG4nCisgICAgICAgICAgICAgICAnICB0d28gb2NjdXJyZW5jZXMgb2YgImEueCIgZG8gbm90IG5lY2Vzc2FyaWx5IHJlZmVyIHRvIHRoZSAnCisgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlOiBpZiB0aGUgUkhTIGV4cHJlc3Npb24gcmVmZXJzIHRvIGEgY2xhc3MgJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgdGhlXG4nCisgICAgICAgICAgICAgICAnICBMSFMgY3JlYXRlcyBhIG5ldyBpbnN0YW5jZSBhdHRyaWJ1dGUgYXMgdGhlIHRhcmdldCBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIGFzc2lnbm1lbnQ6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgICBjbGFzcyBDbHM6XG4nCisgICAgICAgICAgICAgICAnICAgICAgICAgeCA9IDMgICAgICAgICAgICAgIyBjbGFzcyB2YXJpYWJsZVxuJworICAgICAgICAgICAgICAgJyAgICAgaW5zdCA9IENscygpXG4nCisgICAgICAgICAgICAgICAnICAgICBpbnN0LnggPSBpbnN0LnggKyAxICAgIyB3cml0ZXMgaW5zdC54IGFzIDQgbGVhdmluZyBDbHMueCAnCisgICAgICAgICAgICAgICAnYXMgM1xuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgVGhpcyBkZXNjcmlwdGlvbiBkb2VzIG5vdCBuZWNlc3NhcmlseSBhcHBseSB0byBkZXNjcmlwdG9yXG4nCisgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGVzLCBzdWNoIGFzIHByb3BlcnRpZXMgY3JlYXRlZCB3aXRoICJwcm9wZXJ0eSgpIi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqIElmIHRoZSB0YXJnZXQgaXMgYSBzdWJzY3JpcHRpb246IFRoZSBwcmltYXJ5IGV4cHJlc3Npb24gaW4gJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgJyAgcmVmZXJlbmNlIGlzIGV2YWx1YXRlZC4gIEl0IHNob3VsZCB5aWVsZCBlaXRoZXIgYSBtdXRhYmxlICcKKyAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgJyAgb2JqZWN0IChzdWNoIGFzIGEgbGlzdCkgb3IgYSBtYXBwaW5nIG9iamVjdCAoc3VjaCBhcyBhICcKKyAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5KS5cbicKKyAgICAgICAgICAgICAgICcgIE5leHQsIHRoZSBzdWJzY3JpcHQgZXhwcmVzc2lvbiBpcyBldmFsdWF0ZWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICBJZiB0aGUgcHJpbWFyeSBpcyBhIG11dGFibGUgc2VxdWVuY2Ugb2JqZWN0IChzdWNoIGFzIGEgJworICAgICAgICAgICAgICAgJ2xpc3QpLCB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHN1YnNjcmlwdCBtdXN0IHlpZWxkIGFuIGludGVnZXIuICBJZiBpdCBpcyBuZWdhdGl2ZSwgdGhlICcKKyAgICAgICAgICAgICAgICJzZXF1ZW5jZSdzXG4iCisgICAgICAgICAgICAgICAnICBsZW5ndGggaXMgYWRkZWQgdG8gaXQuICBUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAnbm9ubmVnYXRpdmVcbicKKyAgICAgICAgICAgICAgICIgIGludGVnZXIgbGVzcyB0aGFuIHRoZSBzZXF1ZW5jZSdzIGxlbmd0aCwgYW5kIHRoZSBzZXF1ZW5jZSBpcyAiCisgICAgICAgICAgICAgICAnYXNrZWRcbicKKyAgICAgICAgICAgICAgICcgIHRvIGFzc2lnbiB0aGUgYXNzaWduZWQgb2JqZWN0IHRvIGl0cyBpdGVtIHdpdGggdGhhdCBpbmRleC4gICcKKyAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIGluZGV4IGlzIG91dCBvZiByYW5nZSwgIkluZGV4RXJyb3IiIGlzIHJhaXNlZCAoYXNzaWdubWVudCB0byAnCisgICAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICAgJyAgc3Vic2NyaXB0ZWQgc2VxdWVuY2UgY2Fubm90IGFkZCBuZXcgaXRlbXMgdG8gYSBsaXN0KS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIElmIHRoZSBwcmltYXJ5IGlzIGEgbWFwcGluZyBvYmplY3QgKHN1Y2ggYXMgYSBkaWN0aW9uYXJ5KSwgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc3Vic2NyaXB0IG11c3QgaGF2ZSBhIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSBtYXBwaW5nJ3Mga2V5ICIKKyAgICAgICAgICAgICAgICd0eXBlLFxuJworICAgICAgICAgICAgICAgJyAgYW5kIHRoZSBtYXBwaW5nIGlzIHRoZW4gYXNrZWQgdG8gY3JlYXRlIGEga2V5L2RhdHVtIHBhaXIgJworICAgICAgICAgICAgICAgJ3doaWNoIG1hcHNcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzdWJzY3JpcHQgdG8gdGhlIGFzc2lnbmVkIG9iamVjdC4gIFRoaXMgY2FuIGVpdGhlciAnCisgICAgICAgICAgICAgICAncmVwbGFjZSBhblxuJworICAgICAgICAgICAgICAgJyAgZXhpc3Rpbmcga2V5L3ZhbHVlIHBhaXIgd2l0aCB0aGUgc2FtZSBrZXkgdmFsdWUsIG9yIGluc2VydCBhICcKKyAgICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAgICcgIGtleS92YWx1ZSBwYWlyIChpZiBubyBrZXkgd2l0aCB0aGUgc2FtZSB2YWx1ZSBleGlzdGVkKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgIEZvciB1c2VyLWRlZmluZWQgb2JqZWN0cywgdGhlICJfX3NldGl0ZW1fXygpIiBtZXRob2QgaXMgJworICAgICAgICAgICAgICAgJ2NhbGxlZCB3aXRoXG4nCisgICAgICAgICAgICAgICAnICBhcHByb3ByaWF0ZSBhcmd1bWVudHMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKiBJZiB0aGUgdGFyZ2V0IGlzIGEgc2xpY2luZzogVGhlIHByaW1hcnkgZXhwcmVzc2lvbiBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICcgIHJlZmVyZW5jZSBpcyBldmFsdWF0ZWQuICBJdCBzaG91bGQgeWllbGQgYSBtdXRhYmxlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIChzdWNoIGFzIGEgbGlzdCkuICBUaGUgYXNzaWduZWQgb2JqZWN0IHNob3VsZCBiZSBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAgICcgIG9mIHRoZSBzYW1lIHR5cGUuICBOZXh0LCB0aGUgbG93ZXIgYW5kIHVwcGVyIGJvdW5kICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9ucyBhcmVcbicKKyAgICAgICAgICAgICAgICcgIGV2YWx1YXRlZCwgaW5zb2ZhciB0aGV5IGFyZSBwcmVzZW50OyBkZWZhdWx0cyBhcmUgemVybyBhbmQgJworICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgIiAgc2VxdWVuY2UncyBsZW5ndGguICBUaGUgYm91bmRzIHNob3VsZCBldmFsdWF0ZSB0byBpbnRlZ2Vycy4gIgorICAgICAgICAgICAgICAgJ0lmXG4nCisgICAgICAgICAgICAgICAiICBlaXRoZXIgYm91bmQgaXMgbmVnYXRpdmUsIHRoZSBzZXF1ZW5jZSdzIGxlbmd0aCBpcyBhZGRlZCB0byAiCisgICAgICAgICAgICAgICAnaXQuICBUaGVcbicKKyAgICAgICAgICAgICAgICcgIHJlc3VsdGluZyBib3VuZHMgYXJlIGNsaXBwZWQgdG8gbGllIGJldHdlZW4gemVybyBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICJzZXF1ZW5jZSdzXG4iCisgICAgICAgICAgICAgICAnICBsZW5ndGgsIGluY2x1c2l2ZS4gIEZpbmFsbHksIHRoZSBzZXF1ZW5jZSBvYmplY3QgaXMgYXNrZWQgdG8gJworICAgICAgICAgICAgICAgJ3JlcGxhY2VcbicKKyAgICAgICAgICAgICAgICcgIHRoZSBzbGljZSB3aXRoIHRoZSBpdGVtcyBvZiB0aGUgYXNzaWduZWQgc2VxdWVuY2UuICBUaGUgJworICAgICAgICAgICAgICAgJ2xlbmd0aCBvZlxuJworICAgICAgICAgICAgICAgJyAgdGhlIHNsaWNlIG1heSBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgbGVuZ3RoIG9mIHRoZSBhc3NpZ25lZCAnCisgICAgICAgICAgICAgICAnc2VxdWVuY2UsXG4nCisgICAgICAgICAgICAgICAnICB0aHVzIGNoYW5naW5nIHRoZSBsZW5ndGggb2YgdGhlIHRhcmdldCBzZXF1ZW5jZSwgaWYgdGhlICcKKyAgICAgICAgICAgICAgICd0YXJnZXRcbicKKyAgICAgICAgICAgICAgICcgIHNlcXVlbmNlIGFsbG93cyBpdC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIEluIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAgICdpbXBsZW1lbnRhdGlvbiwgdGhlXG4nCisgICAgICAgICAgICAgICAnc3ludGF4IGZvciB0YXJnZXRzIGlzIHRha2VuIHRvIGJlIHRoZSBzYW1lIGFzIGZvciBleHByZXNzaW9ucywgJworICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgJ2ludmFsaWQgc3ludGF4IGlzIHJlamVjdGVkIGR1cmluZyB0aGUgY29kZSBnZW5lcmF0aW9uIHBoYXNlLCAnCisgICAgICAgICAgICAgICAnY2F1c2luZ1xuJworICAgICAgICAgICAgICAgJ2xlc3MgZGV0YWlsZWQgZXJyb3IgbWVzc2FnZXMuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQWx0aG91Z2ggdGhlIGRlZmluaXRpb24gb2YgYXNzaWdubWVudCBpbXBsaWVzIHRoYXQgb3ZlcmxhcHMgJworICAgICAgICAgICAgICAgJ2JldHdlZW5cbicKKyAgICAgICAgICAgICAgICJ0aGUgbGVmdC1oYW5kIHNpZGUgYW5kIHRoZSByaWdodC1oYW5kIHNpZGUgYXJlICdzaW11bHRhbmVvdXMnICIKKyAgICAgICAgICAgICAgICcoZm9yXG4nCisgICAgICAgICAgICAgICAnZXhhbXBsZSAiYSwgYiA9IGIsIGEiIHN3YXBzIHR3byB2YXJpYWJsZXMpLCBvdmVybGFwcyAqd2l0aGluKiAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnY29sbGVjdGlvbiBvZiBhc3NpZ25lZC10byB2YXJpYWJsZXMgb2NjdXIgbGVmdC10by1yaWdodCwgJworICAgICAgICAgICAgICAgJ3NvbWV0aW1lc1xuJworICAgICAgICAgICAgICAgJ3Jlc3VsdGluZyBpbiBjb25mdXNpb24uICBGb3IgaW5zdGFuY2UsIHRoZSBmb2xsb3dpbmcgcHJvZ3JhbSAnCisgICAgICAgICAgICAgICAncHJpbnRzXG4nCisgICAgICAgICAgICAgICAnIlswLCAyXSI6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgeCA9IFswLCAxXVxuJworICAgICAgICAgICAgICAgJyAgIGkgPSAwXG4nCisgICAgICAgICAgICAgICAnICAgaSwgeFtpXSA9IDEsIDIgICAgICAgICAjIGkgaXMgdXBkYXRlZCwgdGhlbiB4W2ldIGlzICcKKyAgICAgICAgICAgICAgICd1cGRhdGVkXG4nCisgICAgICAgICAgICAgICAnICAgcHJpbnQoeClcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICcgICoqUEVQIDMxMzIqKiAtIEV4dGVuZGVkIEl0ZXJhYmxlIFVucGFja2luZ1xuJworICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24gZm9yIHRoZSAiKnRhcmdldCIgZmVhdHVyZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0F1Z21lbnRlZCBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgb2YgYVxuJworICAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb24gYW5kIGFuIGFzc2lnbm1lbnQgc3RhdGVtZW50OlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAnCisgICAgICAgICAgICAgICAnKGV4cHJlc3Npb25fbGlzdCB8IHlpZWxkX2V4cHJlc3Npb24pXG4nCisgICAgICAgICAgICAgICAnICAgYXVndGFyZ2V0ICAgICAgICAgICAgICAgICA6Oj0gaWRlbnRpZmllciB8IGF0dHJpYnV0ZXJlZiB8ICcKKyAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICAnICAgYXVnb3AgICAgICAgICAgICAgICAgICAgICA6Oj0gIis9IiB8ICItPSIgfCAiKj0iIHwgIkA9IiB8ICcKKyAgICAgICAgICAgICAgICciLz0iIHwgIi8vPSIgfCAiJT0iIHwgIioqPSJcbicKKyAgICAgICAgICAgICAgICcgICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnKFNlZSBzZWN0aW9uIFByaW1hcmllcyBmb3IgdGhlIHN5bnRheCBkZWZpbml0aW9ucyBvZiB0aGUgbGFzdCAnCisgICAgICAgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICAgICAgICdzeW1ib2xzLilcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSAnCisgICAgICAgICAgICAgICAnbm9ybWFsXG4nCisgICAgICAgICAgICAgICAnYXNzaWdubWVudCBzdGF0ZW1lbnRzLCBjYW5ub3QgYmUgYW4gdW5wYWNraW5nKSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICAnbGlzdCwgcGVyZm9ybXMgdGhlIGJpbmFyeSBvcGVyYXRpb24gc3BlY2lmaWMgdG8gdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgICdvbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgICAndGFyZ2V0LlxuJworICAgICAgICAgICAgICAgJ1RoZSB0YXJnZXQgaXMgb25seSBldmFsdWF0ZWQgb25jZS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBleHByZXNzaW9uIGxpa2UgInggKz0gMSIgY2FuIGJlICcKKyAgICAgICAgICAgICAgICdyZXdyaXR0ZW4gYXNcbicKKyAgICAgICAgICAgICAgICcieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsICcKKyAgICAgICAgICAgICAgICdlZmZlY3QuIEluIHRoZVxuJworICAgICAgICAgICAgICAgJ2F1Z21lbnRlZCB2ZXJzaW9uLCAieCIgaXMgb25seSBldmFsdWF0ZWQgb25jZS4gQWxzbywgd2hlbiAnCisgICAgICAgICAgICAgICAncG9zc2libGUsXG4nCisgICAgICAgICAgICAgICAndGhlIGFjdHVhbCBvcGVyYXRpb24gaXMgcGVyZm9ybWVkICppbi1wbGFjZSosIG1lYW5pbmcgdGhhdCAnCisgICAgICAgICAgICAgICAncmF0aGVyIHRoYW5cbicKKyAgICAgICAgICAgICAgICdjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSAnCisgICAgICAgICAgICAgICAnb2xkIG9iamVjdFxuJworICAgICAgICAgICAgICAgJ2lzIG1vZGlmaWVkIGluc3RlYWQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVW5saWtlIG5vcm1hbCBhc3NpZ25tZW50cywgYXVnbWVudGVkIGFzc2lnbm1lbnRzIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAnbGVmdC1cbicKKyAgICAgICAgICAgICAgICdoYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yICcKKyAgICAgICAgICAgICAgICdleGFtcGxlLCAiYVtpXVxuJworICAgICAgICAgICAgICAgJys9IGYoeCkiIGZpcnN0IGxvb2tzLXVwICJhW2ldIiwgdGhlbiBpdCBldmFsdWF0ZXMgImYoeCkiIGFuZCAnCisgICAgICAgICAgICAgICAncGVyZm9ybXNcbicKKyAgICAgICAgICAgICAgICd0aGUgYWRkaXRpb24sIGFuZCBsYXN0bHksIGl0IHdyaXRlcyB0aGUgcmVzdWx0IGJhY2sgdG8gJworICAgICAgICAgICAgICAgJyJhW2ldIi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdXaXRoIHRoZSBleGNlcHRpb24gb2YgYXNzaWduaW5nIHRvIHR1cGxlcyBhbmQgbXVsdGlwbGUgdGFyZ2V0cyAnCisgICAgICAgICAgICAgICAnaW4gYVxuJworICAgICAgICAgICAgICAgJ3NpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnRzIGlzIGhhbmRsZWQgdGhlIHNhbWUgd2F5IGFzIG5vcm1hbCBhc3NpZ25tZW50cy4gJworICAgICAgICAgICAgICAgJ1NpbWlsYXJseSxcbicKKyAgICAgICAgICAgICAgICd3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSAnCisgICAgICAgICAgICAgICAnYmluYXJ5XG4nCisgICAgICAgICAgICAgICAnb3BlcmF0aW9uIHBlcmZvcm1lZCBieSBhdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgc2FtZSBhcyB0aGUgJworICAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAgJ2JpbmFyeSBvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0ZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgY2F2ZWF0ICcKKyAgICAgICAgICAgICAgICdhYm91dFxuJworICAgICAgICAgICAgICAgJ2NsYXNzIGFuZCBpbnN0YW5jZSBhdHRyaWJ1dGVzIGFwcGxpZXMgYXMgZm9yIHJlZ3VsYXIgJworICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0Fubm90YXRlZCBhc3NpZ25tZW50IHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnQW5ub3RhdGlvbiBhc3NpZ25tZW50IGlzIHRoZSBjb21iaW5hdGlvbiwgaW4gYSBzaW5nbGUgJworICAgICAgICAgICAgICAgJ3N0YXRlbWVudCwgb2YgYVxuJworICAgICAgICAgICAgICAgJ3ZhcmlhYmxlIG9yIGF0dHJpYnV0ZSBhbm5vdGF0aW9uIGFuZCBhbiBvcHRpb25hbCBhc3NpZ25tZW50ICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgYW5ub3RhdGVkX2Fzc2lnbm1lbnRfc3RtdCA6Oj0gYXVndGFyZ2V0ICI6IiBleHByZXNzaW9uIFsiPSIgJworICAgICAgICAgICAgICAgJ2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnVGhlIGRpZmZlcmVuY2UgZnJvbSBub3JtYWwgQXNzaWdubWVudCBzdGF0ZW1lbnRzIGlzIHRoYXQgb25seSAnCisgICAgICAgICAgICAgICAnc2luZ2xlXG4nCisgICAgICAgICAgICAgICAndGFyZ2V0IGFuZCBvbmx5IHNpbmdsZSByaWdodCBoYW5kIHNpZGUgdmFsdWUgaXMgYWxsb3dlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdGb3Igc2ltcGxlIG5hbWVzIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgaWYgaW4gY2xhc3Mgb3IgbW9kdWxlICcKKyAgICAgICAgICAgICAgICdzY29wZSxcbicKKyAgICAgICAgICAgICAgICd0aGUgYW5ub3RhdGlvbnMgYXJlIGV2YWx1YXRlZCBhbmQgc3RvcmVkIGluIGEgc3BlY2lhbCBjbGFzcyBvciAnCisgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAnYXR0cmlidXRlICJfX2Fubm90YXRpb25zX18iIHRoYXQgaXMgYSBkaWN0aW9uYXJ5IG1hcHBpbmcgZnJvbSAnCisgICAgICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgICAgICduYW1lcyAobWFuZ2xlZCBpZiBwcml2YXRlKSB0byBldmFsdWF0ZWQgYW5ub3RhdGlvbnMuIFRoaXMgJworICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpc1xuJworICAgICAgICAgICAgICAgJ3dyaXRhYmxlIGFuZCBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYXQgdGhlIHN0YXJ0IG9mIGNsYXNzIG9yICcKKyAgICAgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgICAgICdib2R5IGV4ZWN1dGlvbiwgaWYgYW5ub3RhdGlvbnMgYXJlIGZvdW5kIHN0YXRpY2FsbHkuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRm9yIGV4cHJlc3Npb25zIGFzIGFzc2lnbm1lbnQgdGFyZ2V0cywgdGhlIGFubm90YXRpb25zIGFyZSAnCisgICAgICAgICAgICAgICAnZXZhbHVhdGVkXG4nCisgICAgICAgICAgICAgICAnaWYgaW4gY2xhc3Mgb3IgbW9kdWxlIHNjb3BlLCBidXQgbm90IHN0b3JlZC5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYW5ub3RhdGVkIGluIGEgZnVuY3Rpb24gc2NvcGUsIHRoZW4gdGhpcyBuYW1lIGlzICcKKyAgICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICAgJ2ZvciB0aGF0IHNjb3BlLiBBbm5vdGF0aW9ucyBhcmUgbmV2ZXIgZXZhbHVhdGVkIGFuZCBzdG9yZWQgaW4gJworICAgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgICAnc2NvcGVzLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0lmIHRoZSByaWdodCBoYW5kIHNpZGUgaXMgcHJlc2VudCwgYW4gYW5ub3RhdGVkIGFzc2lnbm1lbnQgJworICAgICAgICAgICAgICAgJ3BlcmZvcm1zXG4nCisgICAgICAgICAgICAgICAndGhlIGFjdHVhbCBhc3NpZ25tZW50IGJlZm9yZSBldmFsdWF0aW5nIGFubm90YXRpb25zICh3aGVyZVxuJworICAgICAgICAgICAgICAgJ2FwcGxpY2FibGUpLiBJZiB0aGUgcmlnaHQgaGFuZCBzaWRlIGlzIG5vdCBwcmVzZW50IGZvciBhbiAnCisgICAgICAgICAgICAgICAnZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICAgJ3RhcmdldCwgdGhlbiB0aGUgaW50ZXJwcmV0ZXIgZXZhbHVhdGVzIHRoZSB0YXJnZXQgZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAndGhlIGxhc3RcbicKKyAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIgb3IgIl9fc2V0YXR0cl9fKCkiIGNhbGwuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDUyNioqIC0gVmFyaWFibGUgYW5kIGF0dHJpYnV0ZSBhbm5vdGF0aW9uICcKKyAgICAgICAgICAgICAgICdzeW50YXhcbicKKyAgICAgICAgICAgICAgICcgICoqUEVQIDQ4NCoqIC0gVHlwZSBoaW50c1xuJywKKyAnYXRvbS1pZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJZGVudGlmaWVycyAoTmFtZXMpXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0FuIGlkZW50aWZpZXIgb2NjdXJyaW5nIGFzIGFuIGF0b20gaXMgYSBuYW1lLiAgU2VlICcKKyAgICAgICAgICAgICAgICAgICAgICdzZWN0aW9uIElkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGtleXdvcmRzIGZvciBsZXhpY2FsIGRlZmluaXRpb24gYW5kIHNlY3Rpb24gTmFtaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdhbmQgYmluZGluZyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2N1bWVudGF0aW9uIG9mIG5hbWluZyBhbmQgYmluZGluZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdXaGVuIHRoZSBuYW1lIGlzIGJvdW5kIHRvIGFuIG9iamVjdCwgZXZhbHVhdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0b20geWllbGRzXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhhdCBvYmplY3QuIFdoZW4gYSBuYW1lIGlzIG5vdCBib3VuZCwgYW4gYXR0ZW1wdCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICdyYWlzZXMgYSAiTmFtZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKipQcml2YXRlIG5hbWUgbWFuZ2xpbmc6KiogV2hlbiBhbiBpZGVudGlmaWVyIHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ3RleHR1YWxseSBvY2N1cnMgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdhIGNsYXNzIGRlZmluaXRpb24gYmVnaW5zIHdpdGggdHdvIG9yIG1vcmUgdW5kZXJzY29yZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICdkb2VzIG5vdCBlbmQgaW4gdHdvIG9yIG1vcmUgdW5kZXJzY29yZXMsIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdjb25zaWRlcmVkIGEgKnByaXZhdGVcbicKKyAgICAgICAgICAgICAgICAgICAgICduYW1lKiBvZiB0aGF0IGNsYXNzLiBQcml2YXRlIG5hbWVzIGFyZSB0cmFuc2Zvcm1lZCB0byBhICcKKyAgICAgICAgICAgICAgICAgICAgICdsb25nZXIgZm9ybVxuJworICAgICAgICAgICAgICAgICAgICAgJ2JlZm9yZSBjb2RlIGlzIGdlbmVyYXRlZCBmb3IgdGhlbS4gIFRoZSB0cmFuc2Zvcm1hdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzcyBuYW1lLCB3aXRoIGxlYWRpbmcgdW5kZXJzY29yZXMgcmVtb3ZlZCBhbmQgYSAnCisgICAgICAgICAgICAgICAgICAgICAnc2luZ2xlIHVuZGVyc2NvcmVcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnNlcnRlZCwgaW4gZnJvbnQgb2YgdGhlIG5hbWUuICBGb3IgZXhhbXBsZSwgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfX3NwYW0iXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2NjdXJyaW5nIGluIGEgY2xhc3MgbmFtZWQgIkhhbSIgd2lsbCBiZSB0cmFuc2Zvcm1lZCB0byAnCisgICAgICAgICAgICAgICAgICAgICAnIl9IYW1fX3NwYW0iLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1RoaXMgdHJhbnNmb3JtYXRpb24gaXMgaW5kZXBlbmRlbnQgb2YgdGhlIHN5bnRhY3RpY2FsICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZXh0IGluIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIGlkZW50aWZpZXIgaXMgdXNlZC4gIElmIHRoZSB0cmFuc2Zvcm1lZCBuYW1lIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdleHRyZW1lbHkgbG9uZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyhsb25nZXIgdGhhbiAyNTUgY2hhcmFjdGVycyksIGltcGxlbWVudGF0aW9uIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAgICAgJ3RydW5jYXRpb24gbWF5XG4nCisgICAgICAgICAgICAgICAgICAgICAnaGFwcGVuLiBJZiB0aGUgY2xhc3MgbmFtZSBjb25zaXN0cyBvbmx5IG9mIHVuZGVyc2NvcmVzLCAnCisgICAgICAgICAgICAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm1hdGlvbiBpcyBkb25lLlxuJywKKyAnYXRvbS1saXRlcmFscyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdMaXRlcmFsc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnUHl0aG9uIHN1cHBvcnRzIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgYW5kIHZhcmlvdXMgJworICAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICdsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBsaXRlcmFsIDo6PSBzdHJpbmdsaXRlcmFsIHwgYnl0ZXNsaXRlcmFsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgfCBpbnRlZ2VyIHwgZmxvYXRudW1iZXIgfCBpbWFnbnVtYmVyXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRXZhbHVhdGlvbiBvZiBhIGxpdGVyYWwgeWllbGRzIGFuIG9iamVjdCBvZiB0aGUgZ2l2ZW4gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnKHN0cmluZyxcbicKKyAgICAgICAgICAgICAgICAgICdieXRlcywgaW50ZWdlciwgZmxvYXRpbmcgcG9pbnQgbnVtYmVyLCBjb21wbGV4IG51bWJlcikgd2l0aCAnCisgICAgICAgICAgICAgICAgICAndGhlIGdpdmVuXG4nCisgICAgICAgICAgICAgICAgICAndmFsdWUuICBUaGUgdmFsdWUgbWF5IGJlIGFwcHJveGltYXRlZCBpbiB0aGUgY2FzZSBvZiAnCisgICAgICAgICAgICAgICAgICAnZmxvYXRpbmcgcG9pbnRcbicKKyAgICAgICAgICAgICAgICAgICdhbmQgaW1hZ2luYXJ5IChjb21wbGV4KSBsaXRlcmFscy4gIFNlZSBzZWN0aW9uIExpdGVyYWxzIGZvciAnCisgICAgICAgICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBbGwgbGl0ZXJhbHMgY29ycmVzcG9uZCB0byBpbW11dGFibGUgZGF0YSB0eXBlcywgYW5kIGhlbmNlICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICJvYmplY3QncyBpZGVudGl0eSBpcyBsZXNzIGltcG9ydGFudCB0aGFuIGl0cyB2YWx1ZS4gICIKKyAgICAgICAgICAgICAgICAgICdNdWx0aXBsZVxuJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRpb25zIG9mIGxpdGVyYWxzIHdpdGggdGhlIHNhbWUgdmFsdWUgKGVpdGhlciB0aGUgJworICAgICAgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAgICAgICdvY2N1cnJlbmNlIGluIHRoZSBwcm9ncmFtIHRleHQgb3IgYSBkaWZmZXJlbnQgb2NjdXJyZW5jZSkgJworICAgICAgICAgICAgICAgICAgJ21heSBvYnRhaW5cbicKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBvYmplY3Qgb3IgYSBkaWZmZXJlbnQgb2JqZWN0IHdpdGggdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlLlxuJywKKyAnYXR0cmlidXRlLWFjY2Vzcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdDdXN0b21pemluZyBhdHRyaWJ1dGUgYWNjZXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBjdXN0b21pemUgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdtZWFuaW5nIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnIngubmFtZSIpIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJ2NsYXNzIGluc3RhbmNlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdXN1YWwgcGxhY2VzIChpLmUuIGl0IGlzIG5vdCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ25vciBpcyBpdCBmb3VuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjbGFzcyB0cmVlIGZvciAic2VsZiIpLiAgIm5hbWUiIGlzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIG5hbWUuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgJworICAgICAgICAgICAgICAgICAgICAgJ29yIHJhaXNlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGlmIHRoZSBhdHRyaWJ1dGUgaXMgZm91bmQgdGhyb3VnaCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ25vcm1hbCBtZWNoYW5pc20sXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAgICAnaW50ZW50aW9uYWwgYXN5bW1ldHJ5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYmV0d2VlbiAiX19nZXRhdHRyX18oKSIgYW5kICJfX3NldGF0dHJfXygpIi4pIFRoaXMgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ2RvbmUgYm90aCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBlZmZpY2llbmN5IHJlYXNvbnMgYW5kIGJlY2F1c2Ugb3RoZXJ3aXNlICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIgd291bGQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICAnCisgICAgICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IGF0XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbGVhc3QgZm9yIGluc3RhbmNlIHZhcmlhYmxlcywgeW91IGNhbiBmYWtlIHRvdGFsICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250cm9sIGJ5IG5vdFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc2VydGluZyBhbnkgdmFsdWVzIGluIHRoZSBpbnN0YW5jZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgKGJ1dFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1ldGhvZCBiZWxvdyBmb3IgYSB3YXkgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2FjdHVhbGx5IGdldCB0b3RhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHVuY29uZGl0aW9uYWxseSB0byBpbXBsZW1lbnQgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgICAgICAgICdhY2Nlc3NlcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgdGhlIGxhdHRlciB3aWxsIG5vdCBiZSBjYWxsZWQgdW5sZXNzICcKKyAgICAgICAgICAgICAgICAgICAgICciX19nZXRhdHRyaWJ1dGVfXygpIiBlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBjYWxscyBpdCBleHBsaWNpdGx5IG9yIHJhaXNlcyBhbiAiQXR0cmlidXRlRXJyb3IiLiAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSAnCisgICAgICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiQXR0cmlidXRlRXJyb3IiIGV4Y2VwdGlvbi4gSW4gb3JkZXIgdG8gYXZvaWQgJworICAgICAgICAgICAgICAgICAgICAgJ2luZmluaXRlIHJlY3Vyc2lvbiBpblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoaXMgbWV0aG9kLCBpdHMgaW1wbGVtZW50YXRpb24gc2hvdWxkIGFsd2F5cyBjYWxsICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgYmFzZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0ICcKKyAgICAgICAgICAgICAgICAgICAgICduZWVkcywgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhhbXBsZSwgIm9iamVjdC5fX2dldGF0dHJpYnV0ZV9fKHNlbGYsIG5hbWUpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBUaGlzIG1ldGhvZCBtYXkgc3RpbGwgYmUgYnlwYXNzZWQgd2hlbiBsb29raW5nICcKKyAgICAgICAgICAgICAgICAgICAgICd1cCBzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgJworICAgICAgICAgICAgICAgICAgICAgJ2xhbmd1YWdlIHN5bnRheFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgb3IgYnVpbHQtaW4gZnVuY3Rpb25zLiBTZWUgU3BlY2lhbCBtZXRob2QgbG9va3VwLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICAnCisgICAgICAgICAgICAgICAgICAgICAnVGhpcyBpcyBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0ZWFkIG9mIHRoZSBub3JtYWwgbWVjaGFuaXNtIChpLmUuIHN0b3JlIHRoZSB2YWx1ZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UgZGljdGlvbmFyeSkuICpuYW1lKiBpcyB0aGUgYXR0cmlidXRlIG5hbWUsICcKKyAgICAgICAgICAgICAgICAgICAgICcqdmFsdWUqIGlzIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmICJfX3NldGF0dHJfXygpIiB3YW50cyB0byBhc3NpZ24gdG8gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgaXRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY2FsbCB0aGUgYmFzZSBjbGFzcyBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lLCAnCisgICAgICAgICAgICAgICAgICAgICAnZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIExpa2UgIl9fc2V0YXR0cl9fKCkiIGJ1dCBmb3IgYXR0cmlidXRlIGRlbGV0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0ZWFkIG9mXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCAnCisgICAgICAgICAgICAgICAgICAgICAnb2JqLm5hbWUiIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbWVhbmluZ2Z1bCBmb3IgdGhlIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgJworICAgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIG11c3QgYmVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm5lZC4gImRpcigpIiBjb252ZXJ0cyB0aGUgcmV0dXJuZWQgc2VxdWVuY2UgdG8gYSAnCisgICAgICAgICAgICAgICAgICAgICAnbGlzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBzb3J0cyBpdC5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgb25seSBhcHBseSB3aGVuIGFuIGluc3RhbmNlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAgICAgJ2FwcGVhcnMgaW4gYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcqb3duZXIqIGNsYXNzICh0aGUgZGVzY3JpcHRvciBtdXN0IGJlIGluIGVpdGhlciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgIm93bmVyJ3MgY2xhc3NcbiIKKyAgICAgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IG9yIGluIHRoZSBjbGFzcyBkaWN0aW9uYXJ5IGZvciBvbmUgb2YgaXRzICcKKyAgICAgICAgICAgICAgICAgICAgICdwYXJlbnRzKS4gIEluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgICAgJ3dob3NlIG5hbWUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICJ0aGUga2V5IG9mIHRoZSBwcm9wZXJ0eSBpbiB0aGUgb3duZXIgY2xhc3MnICIKKyAgICAgICAgICAgICAgICAgICAgICciX19kaWN0X18iLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldF9fKHNlbGYsIGluc3RhbmNlLCBvd25lcilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKSBvciBvZiBhbiBpbnN0YW5jZSBvZiB0aGF0IGNsYXNzIChpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYWNjZXNzKS4gKm93bmVyKiBpcyBhbHdheXMgdGhlIG93bmVyIGNsYXNzLCB3aGlsZSAnCisgICAgICAgICAgICAgICAgICAgICAnKmluc3RhbmNlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICcKKyAgICAgICAgICAgICAgICAgICAgICciTm9uZSIgd2hlblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhdHRyaWJ1dGUgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgKm93bmVyKi4gIFRoaXMgJworICAgICAgICAgICAgICAgICAgICAgJ21ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gdGhlIChjb21wdXRlZCkgYXR0cmlidXRlIHZhbHVlIG9yIHJhaXNlIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldF9fKHNlbGYsIGluc3RhbmNlLCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gc2V0IHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgdGhlIG93bmVyXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGVsZXRlX18oc2VsZiwgaW5zdGFuY2UpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGRlbGV0ZSB0aGUgYXR0cmlidXRlIG9uIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICcqaW5zdGFuY2UqIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGF0IHRoZSB0aW1lIHRoZSBvd25pbmcgY2xhc3MgKm93bmVyKiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnY3JlYXRlZC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRvciBoYXMgYmVlbiBhc3NpZ25lZCB0byAqbmFtZSouXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy42LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBhdHRyaWJ1dGUgIl9fb2JqY2xhc3NfXyIgaXMgaW50ZXJwcmV0ZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICciaW5zcGVjdCIgbW9kdWxlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAgICAgJyhzZXR0aW5nIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZWx5IGNhbiBhc3Npc3QgaW4gcnVudGltZSBpbnRyb3NwZWN0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICdkeW5hbWljIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcykuIEZvciBjYWxsYWJsZXMsIGl0IG1heSBpbmRpY2F0ZSB0aGF0IGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdnaXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlIGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudCAoZm9yIGV4YW1wbGUsIENQeXRob24gc2V0cyB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAndW5ib3VuZCBtZXRob2RzIHRoYXQgYXJlIGltcGxlbWVudGVkIGluIEMpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ludm9raW5nIERlc2NyaXB0b3JzXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbiBnZW5lcmFsLCBhIGRlc2NyaXB0b3IgaXMgYW4gb2JqZWN0IGF0dHJpYnV0ZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAgICciYmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gJworICAgICAgICAgICAgICAgICAgICAgJ292ZXJyaWRkZW4gYnkgbWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBkZXNjcmlwdG9yIHByb3RvY29sOiAgIl9fZ2V0X18oKSIsICJfX3NldF9fKCkiLCAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIuIElmIGFueSBvZiB0aG9zZSBtZXRob2RzIGFyZSBkZWZpbmVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgICAnYW4gb2JqZWN0LCBpdFxuJworICAgICAgICAgICAgICAgICAgICAgJ2lzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBhdHRyaWJ1dGUgYWNjZXNzIGlzIHRvIGdldCwgJworICAgICAgICAgICAgICAgICAgICAgJ3NldCwgb3IgZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICAgICAidGhlIGF0dHJpYnV0ZSBmcm9tIGFuIG9iamVjdCdzIGRpY3Rpb25hcnkuIEZvciBpbnN0YW5jZSwgIgorICAgICAgICAgICAgICAgICAgICAgJyJhLngiIGhhcyBhXG4nCisgICAgICAgICAgICAgICAgICAgICAnbG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuJworICAgICAgICAgICAgICAgICAgICAgJyJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXSIsIGFuZCBjb250aW51aW5nIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzZXMgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAgICcidHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGlmIHRoZSBsb29rZWQtdXAgdmFsdWUgaXMgYW4gb2JqZWN0IGRlZmluaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICdvbmUgb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvciBtZXRob2RzLCB0aGVuIFB5dGhvbiBtYXkgb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2ludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdwcmVjZWRlbmNlIGNoYWluIGRlcGVuZHMgb24gd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgICAgICd3ZXJlIGRlZmluZWQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAnaG93IHRoZXkgd2VyZSBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSAnCisgICAgICAgICAgICAgICAgICAgICAnYmluZGluZywgImEueCIuIEhvd1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBhcmd1bWVudHMgYXJlIGFzc2VtYmxlZCBkZXBlbmRzIG9uICJhIjpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdEaXJlY3QgQ2FsbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBzaW1wbGVzdCBhbmQgbGVhc3QgY29tbW9uIGNhbGwgaXMgd2hlbiB1c2VyIGNvZGUgJworICAgICAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW52b2tlcyBhIGRlc2NyaXB0b3IgbWV0aG9kOiAgICAieC5fX2dldF9fKGEpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhbiBvYmplY3QgaW5zdGFuY2UsICJhLngiIGlzICcKKyAgICAgICAgICAgICAgICAgICAgICd0cmFuc2Zvcm1lZCBpbnRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdDbGFzcyBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2FsbDpcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAiQS5fX2RpY3RfX1tcJ3hcJ10uX19nZXRfXyhOb25lLCBBKSIuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnU3VwZXIgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIElmICJhIiBpcyBhbiBpbnN0YW5jZSBvZiAic3VwZXIiLCB0aGVuIHRoZSBiaW5kaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICcic3VwZXIoQixcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvYmopLm0oKSIgc2VhcmNoZXMgIm9iai5fX2NsYXNzX18uX19tcm9fXyIgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcyAiQSJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIHdpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgY2FsbDogIkEuX19kaWN0X19bXCdtXCddLl9fZ2V0X18ob2JqLCAnCisgICAgICAgICAgICAgICAgICAgICAnb2JqLl9fY2xhc3NfXykiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ZvciBpbnN0YW5jZSBiaW5kaW5ncywgdGhlIHByZWNlZGVuY2Ugb2YgZGVzY3JpcHRvciAnCisgICAgICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbiBkZXBlbmRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnb24gdGhlIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyBhcmUgZGVmaW5lZC4gIEEgJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaXB0b3IgY2FuIGRlZmluZVxuJworICAgICAgICAgICAgICAgICAgICAgJ2FueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gIElmIGl0XG4nCisgICAgICAgICAgICAgICAgICAgICAnZG9lcyBub3QgZGVmaW5lICJfX2dldF9fKCkiLCB0aGVuIGFjY2Vzc2luZyB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSB3aWxsIHJldHVyblxuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBkZXNjcmlwdG9yIG9iamVjdCBpdHNlbGYgdW5sZXNzIHRoZXJlIGlzIGEgdmFsdWUgaW4gJworICAgICAgICAgICAgICAgICAgICAgInRoZSBvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgICAgICciX19zZXRfXygpIiBhbmQvb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIiwgaXQgaXMgYSBkYXRhIGRlc2NyaXB0b3I7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgICAgJ25laXRoZXIsIGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnYSBub24tZGF0YSBkZXNjcmlwdG9yLiAgTm9ybWFsbHksIGRhdGEgZGVzY3JpcHRvcnMgJworICAgICAgICAgICAgICAgICAgICAgJ2RlZmluZSBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyAnCisgICAgICAgICAgICAgICAgICAgICAnaGF2ZSBqdXN0IHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiIG1ldGhvZC4gIERhdGEgZGVzY3JpcHRvcnMgd2l0aCAiX19zZXRfXygpIiAnCisgICAgICAgICAgICAgICAgICAgICAnYW5kICJfX2dldF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhbHdheXMgb3ZlcnJpZGUgYSByZWRlZmluaXRpb24gaW4gYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuICBJblxuJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJyJjbGFzc21ldGhvZCgpIikgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQgYXMgbm9uLWRhdGEgZGVzY3JpcHRvcnMuICBBY2NvcmRpbmdseSwgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyBjYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICdyZWRlZmluZSBhbmQgb3ZlcnJpZGUgbWV0aG9kcy4gIFRoaXMgYWxsb3dzIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2FjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBjbGFzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSAnCisgICAgICAgICAgICAgICAgICAgICAnZGVzY3JpcHRvci5cbicKKyAgICAgICAgICAgICAgICAgICAgICdBY2NvcmRpbmdseSwgaW5zdGFuY2VzIGNhbm5vdCBvdmVycmlkZSB0aGUgYmVoYXZpb3Igb2YgYSAnCisgICAgICAgICAgICAgICAgICAgICAncHJvcGVydHkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICAgICAnPT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgICAgICdzdG9yYWdlLiAgVGhpcyB3YXN0ZXMgc3BhY2UgZm9yIG9iamVjdHMgaGF2aW5nIHZlcnkgZmV3ICcKKyAgICAgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy4gIFRoZSBzcGFjZSBjb25zdW1wdGlvbiBjYW4gYmVjb21lIGFjdXRlIHdoZW4gJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nIGxhcmdlXG4nCisgICAgICAgICAgICAgICAgICAgICAnbnVtYmVycyBvZiBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnVGhlIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4gYnkgZGVmaW5pbmcgKl9fc2xvdHNfXyogaW4gJworICAgICAgICAgICAgICAgICAgICAgJ2EgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLiBUaGUgKl9fc2xvdHNfXyogZGVjbGFyYXRpb24gdGFrZXMgYSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnb2YgaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggJworICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIHRvIGhvbGQgYVxuJworICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlIGZvciBlYWNoIHZhcmlhYmxlLiAgU3BhY2UgaXMgc2F2ZWQgYmVjYXVzZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fZGljdF9fKiBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAgICdjcmVhdGVkIGZvciBlYWNoIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBUaGlzIGNsYXNzIHZhcmlhYmxlIGNhbiBiZSBhc3NpZ25lZCBhIHN0cmluZywgJworICAgICAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlLCBvciBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIG9mIHN0cmluZ3Mgd2l0aCB2YXJpYWJsZSBuYW1lcyB1c2VkIGJ5IGluc3RhbmNlcy4gICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCAnCisgICAgICAgICAgICAgICAgICAgICAncHJldmVudHMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgYXV0b21hdGljIGNyZWF0aW9uIG9mICpfX2RpY3RfXyogYW5kICpfX3dlYWtyZWZfXyogJworICAgICAgICAgICAgICAgICAgICAgJ2ZvciBlYWNoXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnTm90ZXMgb24gdXNpbmcgKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogV2hlbiBpbmhlcml0aW5nIGZyb20gYSBjbGFzcyB3aXRob3V0ICpfX3Nsb3RzX18qLCB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX2RpY3RfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvICcKKyAgICAgICAgICAgICAgICAgICAgICdhICpfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWZpbml0aW9uIGluIHRoZSBzdWJjbGFzcyBpcyBtZWFuaW5nbGVzcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIFdpdGhvdXQgYSAqX19kaWN0X18qIHZhcmlhYmxlLCBpbnN0YW5jZXMgY2Fubm90IGJlICcKKyAgICAgICAgICAgICAgICAgICAgICdhc3NpZ25lZCBuZXdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICAgICAgICAgJ0F0dGVtcHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhc3NpZ24gdG8gYW4gdW5saXN0ZWQgdmFyaWFibGUgbmFtZSByYWlzZXMgJworICAgICAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIuIElmXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkeW5hbWljIGFzc2lnbm1lbnQgb2YgbmV3IHZhcmlhYmxlcyBpcyBkZXNpcmVkLCB0aGVuICcKKyAgICAgICAgICAgICAgICAgICAgICdhZGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGRlY2xhcmF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX3dlYWtyZWZfXyogdmFyaWFibGUgZm9yIGVhY2ggaW5zdGFuY2UsICcKKyAgICAgICAgICAgICAgICAgICAgICdjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2VzLiBJZiB3ZWFrIHJlZmVyZW5jZSBzdXBwb3J0IGlzIG5lZWRlZCwgdGhlbiAnCisgICAgICAgICAgICAgICAgICAgICAnYWRkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAiXCdfX3dlYWtyZWZfX1wnIiB0byB0aGUgc2VxdWVuY2Ugb2Ygc3RyaW5ncyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJypfX3Nsb3RzX18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqICpfX3Nsb3RzX18qIGFyZSBpbXBsZW1lbnRlZCBhdCB0aGUgY2xhc3MgbGV2ZWwgYnkgJworICAgICAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBkZXNjcmlwdG9ycyAoSW1wbGVtZW50aW5nIERlc2NyaXB0b3JzKSBmb3IgZWFjaCAnCisgICAgICAgICAgICAgICAgICAgICAndmFyaWFibGUgbmFtZS4gIEFzIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgICAndmFsdWVzIGZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGVzIGRlZmluZWQgYnkgKl9fc2xvdHNfXyo7IG90aGVyd2lzZSwgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgYXR0cmlidXRlIHdvdWxkIG92ZXJ3cml0ZSB0aGUgZGVzY3JpcHRvciBhc3NpZ25tZW50LlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBjbGFzc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgd2hlcmUgaXQgaXMgZGVmaW5lZC4gIEFzIGEgcmVzdWx0LCBzdWJjbGFzc2VzIHdpbGwgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgYSAqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICAgICAnICB1bmxlc3MgdGhleSBhbHNvIGRlZmluZSAqX19zbG90c19fKiAod2hpY2ggbXVzdCBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250YWluIG5hbWVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcqIElmIGEgY2xhc3MgZGVmaW5lcyBhIHNsb3QgYWxzbyBkZWZpbmVkIGluIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICAgICAnY2xhc3MsIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgaW5zdGFuY2UgdmFyaWFibGUgZGVmaW5lZCBieSB0aGUgYmFzZSBjbGFzcyBzbG90IGlzICcKKyAgICAgICAgICAgICAgICAgICAgICdpbmFjY2Vzc2libGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnYmFzZSBjbGFzcykuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBUaGlzIHJlbmRlcnMgdGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0gdW5kZWZpbmVkLiAgSW4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBmdXR1cmUsIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIGNoZWNrIG1heSBiZSBhZGRlZCB0byBwcmV2ZW50IHRoaXMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgJworICAgICAgICAgICAgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICJ2YXJpYWJsZS1sZW5ndGgiIGJ1aWx0LWluIHR5cGVzIHN1Y2ggYXMgImludCIsICcKKyAgICAgICAgICAgICAgICAgICAgICciYnl0ZXMiIGFuZCAidHVwbGUiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyogQW55IG5vbi1zdHJpbmcgaXRlcmFibGUgbWF5IGJlIGFzc2lnbmVkIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICcqX19zbG90c19fKi4gTWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAgICcgIG1heSBhbHNvIGJlIHVzZWQ7IGhvd2V2ZXIsIGluIHRoZSBmdXR1cmUsIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICAgICAgJ21lYW5pbmcgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKiAqX19jbGFzc19fKiBhc3NpZ25tZW50IHdvcmtzIG9ubHkgaWYgYm90aCBjbGFzc2VzIGhhdmUgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAqX19zbG90c19fKi5cbicsCisgJ2F0dHJpYnV0ZS1yZWZlcmVuY2VzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdBdHRyaWJ1dGUgcmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnQW4gYXR0cmlidXRlIHJlZmVyZW5jZSBpcyBhIHByaW1hcnkgZm9sbG93ZWQgYnkgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3BlcmlvZCBhbmQgYSBuYW1lOlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnICAgYXR0cmlidXRlcmVmIDo6PSBwcmltYXJ5ICIuIiBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGFuIG9iamVjdCBvZiBhIHR5cGUgJworICAgICAgICAgICAgICAgICAgICAgICAgICd0aGF0IHN1cHBvcnRzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSByZWZlcmVuY2VzLCB3aGljaCBtb3N0IG9iamVjdHMgZG8uICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzIHRoZW5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAnYXNrZWQgdG8gcHJvZHVjZSB0aGUgYXR0cmlidXRlIHdob3NlIG5hbWUgaXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllci4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAncHJvZHVjdGlvbiBjYW4gYmUgY3VzdG9taXplZCBieSBvdmVycmlkaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ0lmIHRoaXMgYXR0cmlidXRlIGlzIG5vdCBhdmFpbGFibGUsIHRoZSBleGNlcHRpb24gJworICAgICAgICAgICAgICAgICAgICAgICAgICciQXR0cmlidXRlRXJyb3IiIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JhaXNlZC4gIE90aGVyd2lzZSwgdGhlIHR5cGUgYW5kIHZhbHVlIG9mIHRoZSBvYmplY3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWNlZCBpc1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHRoZSBvYmplY3QuICBNdWx0aXBsZSBldmFsdWF0aW9ucyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lIGF0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgbWF5IHlpZWxkIGRpZmZlcmVudCBvYmplY3RzLlxuJywKKyAnYXVnYXNzaWduJzogJ1xuJworICAgICAgICAgICAgICAnQXVnbWVudGVkIGFzc2lnbm1lbnQgc3RhdGVtZW50c1xuJworICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBdWdtZW50ZWQgYXNzaWdubWVudCBpcyB0aGUgY29tYmluYXRpb24sIGluIGEgc2luZ2xlIHN0YXRlbWVudCwgJworICAgICAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbiBhbmQgYW4gYXNzaWdubWVudCBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z21lbnRlZF9hc3NpZ25tZW50X3N0bXQgOjo9IGF1Z3RhcmdldCBhdWdvcCAnCisgICAgICAgICAgICAgICcoZXhwcmVzc2lvbl9saXN0IHwgeWllbGRfZXhwcmVzc2lvbilcbicKKyAgICAgICAgICAgICAgJyAgIGF1Z3RhcmdldCAgICAgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgfCBhdHRyaWJ1dGVyZWYgfCAnCisgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gfCBzbGljaW5nXG4nCisgICAgICAgICAgICAgICcgICBhdWdvcCAgICAgICAgICAgICAgICAgICAgIDo6PSAiKz0iIHwgIi09IiB8ICIqPSIgfCAiQD0iIHwgJworICAgICAgICAgICAgICAnIi89IiB8ICIvLz0iIHwgIiU9IiB8ICIqKj0iXG4nCisgICAgICAgICAgICAgICcgICAgICAgICAgICAgfCAiPj49IiB8ICI8PD0iIHwgIiY9IiB8ICJePSIgfCAifD0iXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyhTZWUgc2VjdGlvbiBQcmltYXJpZXMgZm9yIHRoZSBzeW50YXggZGVmaW5pdGlvbnMgb2YgdGhlIGxhc3QgJworICAgICAgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICAgICAgJ3N5bWJvbHMuKVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBbiBhdWdtZW50ZWQgYXNzaWdubWVudCBldmFsdWF0ZXMgdGhlIHRhcmdldCAod2hpY2gsIHVubGlrZSAnCisgICAgICAgICAgICAgICdub3JtYWxcbicKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgc3RhdGVtZW50cywgY2Fubm90IGJlIGFuIHVucGFja2luZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICdsaXN0LCBwZXJmb3JtcyB0aGUgYmluYXJ5IG9wZXJhdGlvbiBzcGVjaWZpYyB0byB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgICAgICdhc3NpZ25tZW50XG4nCisgICAgICAgICAgICAgICdvbiB0aGUgdHdvIG9wZXJhbmRzLCBhbmQgYXNzaWducyB0aGUgcmVzdWx0IHRvIHRoZSBvcmlnaW5hbCAnCisgICAgICAgICAgICAgICd0YXJnZXQuXG4nCisgICAgICAgICAgICAgICdUaGUgdGFyZ2V0IGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGF1Z21lbnRlZCBhc3NpZ25tZW50IGV4cHJlc3Npb24gbGlrZSAieCArPSAxIiBjYW4gYmUgJworICAgICAgICAgICAgICAncmV3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICcieCA9IHggKyAxIiB0byBhY2hpZXZlIGEgc2ltaWxhciwgYnV0IG5vdCBleGFjdGx5IGVxdWFsIGVmZmVjdC4gJworICAgICAgICAgICAgICAnSW4gdGhlXG4nCisgICAgICAgICAgICAgICdhdWdtZW50ZWQgdmVyc2lvbiwgIngiIGlzIG9ubHkgZXZhbHVhdGVkIG9uY2UuIEFsc28sIHdoZW4gJworICAgICAgICAgICAgICAncG9zc2libGUsXG4nCisgICAgICAgICAgICAgICd0aGUgYWN0dWFsIG9wZXJhdGlvbiBpcyBwZXJmb3JtZWQgKmluLXBsYWNlKiwgbWVhbmluZyB0aGF0ICcKKyAgICAgICAgICAgICAgJ3JhdGhlciB0aGFuXG4nCisgICAgICAgICAgICAgICdjcmVhdGluZyBhIG5ldyBvYmplY3QgYW5kIGFzc2lnbmluZyB0aGF0IHRvIHRoZSB0YXJnZXQsIHRoZSBvbGQgJworICAgICAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgICAgICdpcyBtb2RpZmllZCBpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdVbmxpa2Ugbm9ybWFsIGFzc2lnbm1lbnRzLCBhdWdtZW50ZWQgYXNzaWdubWVudHMgZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgJ2xlZnQtXG4nCisgICAgICAgICAgICAgICdoYW5kIHNpZGUgKmJlZm9yZSogZXZhbHVhdGluZyB0aGUgcmlnaHQtaGFuZCBzaWRlLiAgRm9yICcKKyAgICAgICAgICAgICAgJ2V4YW1wbGUsICJhW2ldXG4nCisgICAgICAgICAgICAgICcrPSBmKHgpIiBmaXJzdCBsb29rcy11cCAiYVtpXSIsIHRoZW4gaXQgZXZhbHVhdGVzICJmKHgpIiBhbmQgJworICAgICAgICAgICAgICAncGVyZm9ybXNcbicKKyAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbiwgYW5kIGxhc3RseSwgaXQgd3JpdGVzIHRoZSByZXN1bHQgYmFjayB0byAiYVtpXSIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1dpdGggdGhlIGV4Y2VwdGlvbiBvZiBhc3NpZ25pbmcgdG8gdHVwbGVzIGFuZCBtdWx0aXBsZSB0YXJnZXRzICcKKyAgICAgICAgICAgICAgJ2luIGFcbicKKyAgICAgICAgICAgICAgJ3NpbmdsZSBzdGF0ZW1lbnQsIHRoZSBhc3NpZ25tZW50IGRvbmUgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnRcbicKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudHMgaXMgaGFuZGxlZCB0aGUgc2FtZSB3YXkgYXMgbm9ybWFsIGFzc2lnbm1lbnRzLiAnCisgICAgICAgICAgICAgICdTaW1pbGFybHksXG4nCisgICAgICAgICAgICAgICd3aXRoIHRoZSBleGNlcHRpb24gb2YgdGhlIHBvc3NpYmxlICppbi1wbGFjZSogYmVoYXZpb3IsIHRoZSAnCisgICAgICAgICAgICAgICdiaW5hcnlcbicKKyAgICAgICAgICAgICAgJ29wZXJhdGlvbiBwZXJmb3JtZWQgYnkgYXVnbWVudGVkIGFzc2lnbm1lbnQgaXMgdGhlIHNhbWUgYXMgdGhlICcKKyAgICAgICAgICAgICAgJ25vcm1hbFxuJworICAgICAgICAgICAgICAnYmluYXJ5IG9wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0ZvciB0YXJnZXRzIHdoaWNoIGFyZSBhdHRyaWJ1dGUgcmVmZXJlbmNlcywgdGhlIHNhbWUgY2F2ZWF0ICcKKyAgICAgICAgICAgICAgJ2Fib3V0XG4nCisgICAgICAgICAgICAgICdjbGFzcyBhbmQgaW5zdGFuY2UgYXR0cmlidXRlcyBhcHBsaWVzIGFzIGZvciByZWd1bGFyICcKKyAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnRzLlxuJywKKyAnYmluYXJ5JzogJ1xuJworICAgICAgICAgICAnQmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYmluYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyBoYXZlIHRoZSBjb252ZW50aW9uYWwgcHJpb3JpdHlcbicKKyAgICAgICAgICAgJ2xldmVscy4gIE5vdGUgdGhhdCBzb21lIG9mIHRoZXNlIG9wZXJhdGlvbnMgYWxzbyBhcHBseSB0byBjZXJ0YWluICcKKyAgICAgICAgICAgJ25vbi1cbicKKyAgICAgICAgICAgJ251bWVyaWMgdHlwZXMuICBBcGFydCBmcm9tIHRoZSBwb3dlciBvcGVyYXRvciwgdGhlcmUgYXJlIG9ubHkgdHdvXG4nCisgICAgICAgICAgICdsZXZlbHMsIG9uZSBmb3IgbXVsdGlwbGljYXRpdmUgb3BlcmF0b3JzIGFuZCBvbmUgZm9yIGFkZGl0aXZlXG4nCisgICAgICAgICAgICdvcGVyYXRvcnM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIG1fZXhwciA6Oj0gdV9leHByIHwgbV9leHByICIqIiB1X2V4cHIgfCBtX2V4cHIgIkAiIG1fZXhwciB8XG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgIG1fZXhwciAiLy8iIHVfZXhwcnwgbV9leHByICIvIiB1X2V4cHIgfFxuJworICAgICAgICAgICAnICAgICAgICAgICAgICBtX2V4cHIgIiUiIHVfZXhwclxuJworICAgICAgICAgICAnICAgYV9leHByIDo6PSBtX2V4cHIgfCBhX2V4cHIgIisiIG1fZXhwciB8IGFfZXhwciAiLSIgbV9leHByXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiKiIgKG11bHRpcGxpY2F0aW9uKSBvcGVyYXRvciB5aWVsZHMgdGhlIHByb2R1Y3Qgb2YgaXRzICcKKyAgICAgICAgICAgJ2FyZ3VtZW50cy5cbicKKyAgICAgICAgICAgJ1RoZSBhcmd1bWVudHMgbXVzdCBlaXRoZXIgYm90aCBiZSBudW1iZXJzLCBvciBvbmUgYXJndW1lbnQgbXVzdCBiZSAnCisgICAgICAgICAgICdhblxuJworICAgICAgICAgICAnaW50ZWdlciBhbmQgdGhlIG90aGVyIG11c3QgYmUgYSBzZXF1ZW5jZS4gSW4gdGhlIGZvcm1lciBjYXNlLCB0aGVcbicKKyAgICAgICAgICAgJ251bWJlcnMgYXJlIGNvbnZlcnRlZCB0byBhIGNvbW1vbiB0eXBlIGFuZCB0aGVuIG11bHRpcGxpZWQgJworICAgICAgICAgICAndG9nZXRoZXIuXG4nCisgICAgICAgICAgICdJbiB0aGUgbGF0dGVyIGNhc2UsIHNlcXVlbmNlIHJlcGV0aXRpb24gaXMgcGVyZm9ybWVkOyBhIG5lZ2F0aXZlXG4nCisgICAgICAgICAgICdyZXBldGl0aW9uIGZhY3RvciB5aWVsZHMgYW4gZW1wdHkgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiQCIgKGF0KSBvcGVyYXRvciBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIGZvciBtYXRyaXhcbicKKyAgICAgICAgICAgJ211bHRpcGxpY2F0aW9uLiAgTm8gYnVpbHRpbiBQeXRob24gdHlwZXMgaW1wbGVtZW50IHRoaXMgb3BlcmF0b3IuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuNS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIvIiAoZGl2aXNpb24pIGFuZCAiLy8iIChmbG9vciBkaXZpc2lvbikgb3BlcmF0b3JzIHlpZWxkIHRoZVxuJworICAgICAgICAgICAncXVvdGllbnQgb2YgdGhlaXIgYXJndW1lbnRzLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuIERpdmlzaW9uIG9mIGludGVnZXJzIHlpZWxkcyBhIGZsb2F0LCAnCisgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAnZmxvb3IgZGl2aXNpb24gb2YgaW50ZWdlcnMgcmVzdWx0cyBpbiBhbiBpbnRlZ2VyOyB0aGUgcmVzdWx0IGlzICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgIm9mIG1hdGhlbWF0aWNhbCBkaXZpc2lvbiB3aXRoIHRoZSAnZmxvb3InIGZ1bmN0aW9uIGFwcGxpZWQgdG8gdGhlXG4iCisgICAgICAgICAgICdyZXN1bHQuICBEaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyB0aGUgIlplcm9EaXZpc2lvbkVycm9yIiAnCisgICAgICAgICAgICdleGNlcHRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiJSIgKG1vZHVsbykgb3BlcmF0b3IgeWllbGRzIHRoZSByZW1haW5kZXIgZnJvbSB0aGUgZGl2aXNpb24gJworICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgJ3RoZSBmaXJzdCBhcmd1bWVudCBieSB0aGUgc2Vjb25kLiAgVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSAnCisgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAnY29udmVydGVkIHRvIGEgY29tbW9uIHR5cGUuICBBIHplcm8gcmlnaHQgYXJndW1lbnQgcmFpc2VzIHRoZVxuJworICAgICAgICAgICAnIlplcm9EaXZpc2lvbkVycm9yIiBleGNlcHRpb24uICBUaGUgYXJndW1lbnRzIG1heSBiZSBmbG9hdGluZyAnCisgICAgICAgICAgICdwb2ludFxuJworICAgICAgICAgICAnbnVtYmVycywgZS5nLiwgIjMuMTQlMC43IiBlcXVhbHMgIjAuMzQiIChzaW5jZSAiMy4xNCIgZXF1YWxzICcKKyAgICAgICAgICAgJyI0KjAuNyArXG4nCisgICAgICAgICAgICcwLjM0Ii4pICBUaGUgbW9kdWxvIG9wZXJhdG9yIGFsd2F5cyB5aWVsZHMgYSByZXN1bHQgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICdzaWduXG4nCisgICAgICAgICAgICdhcyBpdHMgc2Vjb25kIG9wZXJhbmQgKG9yIHplcm8pOyB0aGUgYWJzb2x1dGUgdmFsdWUgb2YgdGhlIHJlc3VsdCAnCisgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAnc3RyaWN0bHkgc21hbGxlciB0aGFuIHRoZSBhYnNvbHV0ZSB2YWx1ZSBvZiB0aGUgc2Vjb25kIG9wZXJhbmQgJworICAgICAgICAgICAnWzFdLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmxvb3IgZGl2aXNpb24gYW5kIG1vZHVsbyBvcGVyYXRvcnMgYXJlIGNvbm5lY3RlZCBieSB0aGUgJworICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICdpZGVudGl0eTogInggPT0gKHgvL3kpKnkgKyAoeCV5KSIuICBGbG9vciBkaXZpc2lvbiBhbmQgbW9kdWxvIGFyZSAnCisgICAgICAgICAgICdhbHNvXG4nCisgICAgICAgICAgICdjb25uZWN0ZWQgd2l0aCB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gImRpdm1vZCgpIjogImRpdm1vZCh4LCB5KSA9PVxuJworICAgICAgICAgICAnKHgvL3ksIHgleSkiLiBbMl0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIHBlcmZvcm1pbmcgdGhlIG1vZHVsbyBvcGVyYXRpb24gb24gbnVtYmVycywgdGhlICcKKyAgICAgICAgICAgJyIlIlxuJworICAgICAgICAgICAnb3BlcmF0b3IgaXMgYWxzbyBvdmVybG9hZGVkIGJ5IHN0cmluZyBvYmplY3RzIHRvIHBlcmZvcm0gJworICAgICAgICAgICAnb2xkLXN0eWxlXG4nCisgICAgICAgICAgICdzdHJpbmcgZm9ybWF0dGluZyAoYWxzbyBrbm93biBhcyBpbnRlcnBvbGF0aW9uKS4gIFRoZSBzeW50YXggZm9yXG4nCisgICAgICAgICAgICdzdHJpbmcgZm9ybWF0dGluZyBpcyBkZXNjcmliZWQgaW4gdGhlIFB5dGhvbiBMaWJyYXJ5IFJlZmVyZW5jZSxcbicKKyAgICAgICAgICAgJ3NlY3Rpb24gcHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZmxvb3IgZGl2aXNpb24gb3BlcmF0b3IsIHRoZSBtb2R1bG8gb3BlcmF0b3IsIGFuZCB0aGUgJworICAgICAgICAgICAnImRpdm1vZCgpIlxuJworICAgICAgICAgICAnZnVuY3Rpb24gYXJlIG5vdCBkZWZpbmVkIGZvciBjb21wbGV4IG51bWJlcnMuICBJbnN0ZWFkLCBjb252ZXJ0IHRvICcKKyAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgJ2Zsb2F0aW5nIHBvaW50IG51bWJlciB1c2luZyB0aGUgImFicygpIiBmdW5jdGlvbiBpZiBhcHByb3ByaWF0ZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICIrIiAoYWRkaXRpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgc3VtIG9mIGl0cyBhcmd1bWVudHMuICBUaGVcbicKKyAgICAgICAgICAgJ2FyZ3VtZW50cyBtdXN0IGVpdGhlciBib3RoIGJlIG51bWJlcnMgb3IgYm90aCBiZSBzZXF1ZW5jZXMgb2YgdGhlICcKKyAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgJ3R5cGUuICBJbiB0aGUgZm9ybWVyIGNhc2UsIHRoZSBudW1iZXJzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gJworICAgICAgICAgICAndHlwZVxuJworICAgICAgICAgICAnYW5kIHRoZW4gYWRkZWQgdG9nZXRoZXIuIEluIHRoZSBsYXR0ZXIgY2FzZSwgdGhlIHNlcXVlbmNlcyBhcmVcbicKKyAgICAgICAgICAgJ2NvbmNhdGVuYXRlZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICItIiAoc3VidHJhY3Rpb24pIG9wZXJhdG9yIHlpZWxkcyB0aGUgZGlmZmVyZW5jZSBvZiBpdHMgJworICAgICAgICAgICAnYXJndW1lbnRzLlxuJworICAgICAgICAgICAnVGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZS5cbicsCisgJ2JpdHdpc2UnOiAnXG4nCisgICAgICAgICAgICAnQmluYXJ5IGJpdHdpc2Ugb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFYWNoIG9mIHRoZSB0aHJlZSBiaXR3aXNlIG9wZXJhdGlvbnMgaGFzIGEgZGlmZmVyZW50IHByaW9yaXR5ICcKKyAgICAgICAgICAgICdsZXZlbDpcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBhbmRfZXhwciA6Oj0gc2hpZnRfZXhwciB8IGFuZF9leHByICImIiBzaGlmdF9leHByXG4nCisgICAgICAgICAgICAnICAgeG9yX2V4cHIgOjo9IGFuZF9leHByIHwgeG9yX2V4cHIgIl4iIGFuZF9leHByXG4nCisgICAgICAgICAgICAnICAgb3JfZXhwciAgOjo9IHhvcl9leHByIHwgb3JfZXhwciAifCIgeG9yX2V4cHJcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgIiYiIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBBTkQgb2YgaXRzIGFyZ3VtZW50cywgd2hpY2ggJworICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICdiZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgIl4iIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBYT1IgKGV4Y2x1c2l2ZSBPUikgb2YgaXRzXG4nCisgICAgICAgICAgICAnYXJndW1lbnRzLCB3aGljaCBtdXN0IGJlIGludGVnZXJzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZSAifCIgb3BlcmF0b3IgeWllbGRzIHRoZSBiaXR3aXNlIChpbmNsdXNpdmUpIE9SIG9mIGl0cyAnCisgICAgICAgICAgICAnYXJndW1lbnRzLFxuJworICAgICAgICAgICAgJ3doaWNoIG11c3QgYmUgaW50ZWdlcnMuXG4nLAorICdibHRpbi1jb2RlLW9iamVjdHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdDb2RlIE9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdDb2RlIG9iamVjdHMgYXJlIHVzZWQgYnkgdGhlIGltcGxlbWVudGF0aW9uIHRvICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudCAicHNldWRvLVxuJworICAgICAgICAgICAgICAgICAgICAgICAnY29tcGlsZWQiIGV4ZWN1dGFibGUgUHl0aG9uIGNvZGUgc3VjaCBhcyBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2JvZHkuIFRoZXkgZGlmZmVyXG4nCisgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIGZ1bmN0aW9uIG9iamVjdHMgYmVjYXVzZSB0aGV5IGRvbid0IGNvbnRhaW4gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICdyZWZlcmVuY2UgdG8gdGhlaXJcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2dsb2JhbCBleGVjdXRpb24gZW52aXJvbm1lbnQuICBDb2RlIG9iamVjdHMgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ3JldHVybmVkIGJ5IHRoZSBidWlsdC1cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2luICJjb21waWxlKCkiIGZ1bmN0aW9uIGFuZCBjYW4gYmUgZXh0cmFjdGVkIGZyb20gJworICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAndGhyb3VnaCB0aGVpciAiX19jb2RlX18iIGF0dHJpYnV0ZS4gU2VlIGFsc28gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJyJjb2RlIiBtb2R1bGUuXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ0EgY29kZSBvYmplY3QgY2FuIGJlIGV4ZWN1dGVkIG9yIGV2YWx1YXRlZCBieSBwYXNzaW5nICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2l0IChpbnN0ZWFkIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ3NvdXJjZSBzdHJpbmcpIHRvIHRoZSAiZXhlYygpIiBvciAiZXZhbCgpIiAgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zLlxuJworICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdTZWUgVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5IGZvciBtb3JlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ2luZm9ybWF0aW9uLlxuJywKKyAnYmx0aW4tZWxsaXBzaXMtb2JqZWN0JzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIEVsbGlwc2lzIE9iamVjdFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdUaGlzIG9iamVjdCBpcyBjb21tb25seSB1c2VkIGJ5IHNsaWNpbmcgKHNlZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdTbGljaW5ncykuICBJdCBzdXBwb3J0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgZXhhY3RseSBvbmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxsaXBzaXMgb2JqZWN0LCBuYW1lZFxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnIkVsbGlwc2lzIiAoYSBidWlsdC1pbiBuYW1lKS4gICJ0eXBlKEVsbGlwc2lzKSgpIiAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWNlcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJyJFbGxpcHNpcyIgc2luZ2xldG9uLlxuJworICAgICAgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJFbGxpcHNpcyIgb3IgIi4uLiIuXG4nLAorICdibHRpbi1udWxsLW9iamVjdCc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAnVGhlIE51bGwgT2JqZWN0XG4nCisgICAgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAiVGhpcyBvYmplY3QgaXMgcmV0dXJuZWQgYnkgZnVuY3Rpb25zIHRoYXQgZG9uJ3QgIgorICAgICAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJldHVybiBhXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ3ZhbHVlLiAgSXQgc3VwcG9ydHMgbm8gc3BlY2lhbCBvcGVyYXRpb25zLiAgVGhlcmUgaXMgJworICAgICAgICAgICAgICAgICAgICAgICdleGFjdGx5IG9uZSBudWxsXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ29iamVjdCwgbmFtZWQgIk5vbmUiIChhIGJ1aWx0LWluIG5hbWUpLiAgInR5cGUoTm9uZSkoKSIgJworICAgICAgICAgICAgICAgICAgICAgICdwcm9kdWNlcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICAnc2FtZSBzaW5nbGV0b24uXG4nCisgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICdJdCBpcyB3cml0dGVuIGFzICJOb25lIi5cbicsCisgJ2JsdGluLXR5cGUtb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgT2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1R5cGUgb2JqZWN0cyByZXByZXNlbnQgdGhlIHZhcmlvdXMgb2JqZWN0IHR5cGVzLiAgQW4gJworICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgdHlwZSBpc1xuIgorICAgICAgICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYnkgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJ0eXBlKCkiLiAgVGhlcmUgYXJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgJ25vIHNwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgb24gdHlwZXMuICBUaGUgc3RhbmRhcmQgbW9kdWxlICJ0eXBlcyIgJworICAgICAgICAgICAgICAgICAgICAgICAnZGVmaW5lcyBuYW1lcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ2FsbCBzdGFuZGFyZCBidWlsdC1pbiB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgICAnVHlwZXMgYXJlIHdyaXR0ZW4gbGlrZSB0aGlzOiAiPGNsYXNzIFwnaW50XCc+Ii5cbicsCisgJ2Jvb2xlYW5zJzogJ1xuJworICAgICAgICAgICAgICdCb29sZWFuIG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBvcl90ZXN0ICA6Oj0gYW5kX3Rlc3QgfCBvcl90ZXN0ICJvciIgYW5kX3Rlc3RcbicKKyAgICAgICAgICAgICAnICAgYW5kX3Rlc3QgOjo9IG5vdF90ZXN0IHwgYW5kX3Rlc3QgImFuZCIgbm90X3Rlc3RcbicKKyAgICAgICAgICAgICAnICAgbm90X3Rlc3QgOjo9IGNvbXBhcmlzb24gfCAibm90IiBub3RfdGVzdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSW4gdGhlIGNvbnRleHQgb2YgQm9vbGVhbiBvcGVyYXRpb25zLCBhbmQgYWxzbyB3aGVuIGV4cHJlc3Npb25zICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3VzZWQgYnkgY29udHJvbCBmbG93IHN0YXRlbWVudHMsIHRoZSBmb2xsb3dpbmcgdmFsdWVzIGFyZSAnCisgICAgICAgICAgICAgJ2ludGVycHJldGVkXG4nCisgICAgICAgICAgICAgJ2FzIGZhbHNlOiAiRmFsc2UiLCAiTm9uZSIsIG51bWVyaWMgemVybyBvZiBhbGwgdHlwZXMsIGFuZCBlbXB0eVxuJworICAgICAgICAgICAgICdzdHJpbmdzIGFuZCBjb250YWluZXJzIChpbmNsdWRpbmcgc3RyaW5ncywgdHVwbGVzLCBsaXN0cyxcbicKKyAgICAgICAgICAgICAnZGljdGlvbmFyaWVzLCBzZXRzIGFuZCBmcm96ZW5zZXRzKS4gIEFsbCBvdGhlciB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAnaW50ZXJwcmV0ZWRcbicKKyAgICAgICAgICAgICAnYXMgdHJ1ZS4gIFVzZXItZGVmaW5lZCBvYmplY3RzIGNhbiBjdXN0b21pemUgdGhlaXIgdHJ1dGggdmFsdWUgJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICdwcm92aWRpbmcgYSAiX19ib29sX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG9wZXJhdG9yICJub3QiIHlpZWxkcyAiVHJ1ZSIgaWYgaXRzIGFyZ3VtZW50IGlzIGZhbHNlLCAnCisgICAgICAgICAgICAgJyJGYWxzZSJcbicKKyAgICAgICAgICAgICAnb3RoZXJ3aXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4cHJlc3Npb24gInggYW5kIHkiIGZpcnN0IGV2YWx1YXRlcyAqeCo7IGlmICp4KiBpcyBmYWxzZSwgJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAndmFsdWUgaXMgcmV0dXJuZWQ7IG90aGVyd2lzZSwgKnkqIGlzIGV2YWx1YXRlZCBhbmQgdGhlIHJlc3VsdGluZyAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJ2lzIHJldHVybmVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4cHJlc3Npb24gInggb3IgeSIgZmlyc3QgZXZhbHVhdGVzICp4KjsgaWYgKngqIGlzIHRydWUsIGl0cyAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJ2lzIHJldHVybmVkOyBvdGhlcndpc2UsICp5KiBpcyBldmFsdWF0ZWQgYW5kIHRoZSByZXN1bHRpbmcgdmFsdWUgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdyZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyhOb3RlIHRoYXQgbmVpdGhlciAiYW5kIiBub3IgIm9yIiByZXN0cmljdCB0aGUgdmFsdWUgYW5kIHR5cGUgJworICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgJ3JldHVybiB0byAiRmFsc2UiIGFuZCAiVHJ1ZSIsIGJ1dCByYXRoZXIgcmV0dXJuIHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnZXZhbHVhdGVkXG4nCisgICAgICAgICAgICAgJ2FyZ3VtZW50LiAgVGhpcyBpcyBzb21ldGltZXMgdXNlZnVsLCBlLmcuLCBpZiAicyIgaXMgYSBzdHJpbmcgJworICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgJ3Nob3VsZCBiZSByZXBsYWNlZCBieSBhIGRlZmF1bHQgdmFsdWUgaWYgaXQgaXMgZW1wdHksIHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnInMgb3IgXCdmb29cJyIgeWllbGRzIHRoZSBkZXNpcmVkIHZhbHVlLiAgQmVjYXVzZSAibm90IiBoYXMgdG8gJworICAgICAgICAgICAgICdjcmVhdGUgYVxuJworICAgICAgICAgICAgICduZXcgdmFsdWUsIGl0IHJldHVybnMgYSBib29sZWFuIHZhbHVlIHJlZ2FyZGxlc3Mgb2YgdGhlIHR5cGUgb2YgJworICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQgKGZvciBleGFtcGxlLCAibm90IFwnZm9vXCciIHByb2R1Y2VzICJGYWxzZSIgcmF0aGVyICcKKyAgICAgICAgICAgICAndGhhbiAiXCdcJyIuKVxuJywKKyAnYnJlYWsnOiAnXG4nCisgICAgICAgICAgJ1RoZSAiYnJlYWsiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGJyZWFrX3N0bXQgOjo9ICJicmVhayJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyJicmVhayIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSAiZm9yIiBvciAid2hpbGUiXG4nCisgICAgICAgICAgJ2xvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiB3aXRoaW4gdGhhdFxuJworICAgICAgICAgICdsb29wLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSXQgdGVybWluYXRlcyB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbG9vcCwgc2tpcHBpbmcgdGhlIG9wdGlvbmFsICcKKyAgICAgICAgICAnImVsc2UiXG4nCisgICAgICAgICAgJ2NsYXVzZSBpZiB0aGUgbG9vcCBoYXMgb25lLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgYSAiZm9yIiBsb29wIGlzIHRlcm1pbmF0ZWQgYnkgImJyZWFrIiwgdGhlIGxvb3AgY29udHJvbCB0YXJnZXRcbicKKyAgICAgICAgICAna2VlcHMgaXRzIGN1cnJlbnQgdmFsdWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdXaGVuICJicmVhayIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYSAnCisgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICdjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnbG9vcC5cbicsCisgJ2NhbGxhYmxlLXR5cGVzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgY2FsbGFibGUgb2JqZWN0c1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fY2FsbF9fKHNlbGZbLCBhcmdzLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyAiY2FsbGVkIiBhcyBhIGZ1bmN0aW9uOyBpZiAnCisgICAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAieC5fX2NhbGxfXyhhcmcxLCBhcmcyLCAuLi4pIi5cbicsCisgJ2NhbGxzJzogJ1xuJworICAgICAgICAgICdDYWxsc1xuJworICAgICAgICAgICcqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjYWxsIGNhbGxzIGEgY2FsbGFibGUgb2JqZWN0IChlLmcuLCBhICpmdW5jdGlvbiopIHdpdGggYSAnCisgICAgICAgICAgJ3Bvc3NpYmx5XG4nCisgICAgICAgICAgJ2VtcHR5IHNlcmllcyBvZiAqYXJndW1lbnRzKjpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNhbGwgICAgICAgICAgICAgICAgIDo6PSBwcmltYXJ5ICIoIiBbYXJndW1lbnRfbGlzdCBbIiwiXSB8ICcKKyAgICAgICAgICAnY29tcHJlaGVuc2lvbl0gIikiXG4nCisgICAgICAgICAgJyAgIGFyZ3VtZW50X2xpc3QgICAgICAgIDo6PSBwb3NpdGlvbmFsX2FyZ3VtZW50cyBbIiwiICcKKyAgICAgICAgICAnc3RhcnJlZF9hbmRfa2V5d29yZHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgWyIsIiBrZXl3b3Jkc19hcmd1bWVudHNdXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgc3RhcnJlZF9hbmRfa2V5d29yZHMgWyIsIiAnCisgICAgICAgICAgJ2tleXdvcmRzX2FyZ3VtZW50c11cbicKKyAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3Jkc19hcmd1bWVudHNcbicKKyAgICAgICAgICAnICAgcG9zaXRpb25hbF9hcmd1bWVudHMgOjo9IFsiKiJdIGV4cHJlc3Npb24gKCIsIiBbIioiXSAnCisgICAgICAgICAgJ2V4cHJlc3Npb24pKlxuJworICAgICAgICAgICcgICBzdGFycmVkX2FuZF9rZXl3b3JkcyA6Oj0gKCIqIiBleHByZXNzaW9uIHwga2V5d29yZF9pdGVtKVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCIsIiAiKiIgZXhwcmVzc2lvbiB8ICIsIiAnCisgICAgICAgICAgJ2tleXdvcmRfaXRlbSkqXG4nCisgICAgICAgICAgJyAgIGtleXdvcmRzX2FyZ3VtZW50cyAgIDo6PSAoa2V5d29yZF9pdGVtIHwgIioqIiBleHByZXNzaW9uKVxuJworICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgICgiLCIga2V5d29yZF9pdGVtIHwgIioqIiBleHByZXNzaW9uKSpcbicKKyAgICAgICAgICAnICAga2V5d29yZF9pdGVtICAgICAgICAgOjo9IGlkZW50aWZpZXIgIj0iIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FuIG9wdGlvbmFsIHRyYWlsaW5nIGNvbW1hIG1heSBiZSBwcmVzZW50IGFmdGVyIHRoZSBwb3NpdGlvbmFsIGFuZFxuJworICAgICAgICAgICdrZXl3b3JkIGFyZ3VtZW50cyBidXQgZG9lcyBub3QgYWZmZWN0IHRoZSBzZW1hbnRpY3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcHJpbWFyeSBtdXN0IGV2YWx1YXRlIHRvIGEgY2FsbGFibGUgb2JqZWN0ICh1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnZnVuY3Rpb25zLCBidWlsdC1pbiBmdW5jdGlvbnMsIG1ldGhvZHMgb2YgYnVpbHQtaW4gb2JqZWN0cywgY2xhc3NcbicKKyAgICAgICAgICAnb2JqZWN0cywgbWV0aG9kcyBvZiBjbGFzcyBpbnN0YW5jZXMsIGFuZCBhbGwgb2JqZWN0cyBoYXZpbmcgYVxuJworICAgICAgICAgICciX19jYWxsX18oKSIgbWV0aG9kIGFyZSBjYWxsYWJsZSkuICBBbGwgYXJndW1lbnQgZXhwcmVzc2lvbnMgYXJlXG4nCisgICAgICAgICAgJ2V2YWx1YXRlZCBiZWZvcmUgdGhlIGNhbGwgaXMgYXR0ZW1wdGVkLiAgUGxlYXNlIHJlZmVyIHRvIHNlY3Rpb25cbicKKyAgICAgICAgICAnRnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIHRoZSBzeW50YXggb2YgZm9ybWFsICpwYXJhbWV0ZXIqIGxpc3RzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIHByZXNlbnQsIHRoZXkgYXJlIGZpcnN0IGNvbnZlcnRlZCB0b1xuJworICAgICAgICAgICdwb3NpdGlvbmFsIGFyZ3VtZW50cywgYXMgZm9sbG93cy4gIEZpcnN0LCBhIGxpc3Qgb2YgdW5maWxsZWQgc2xvdHMgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICdjcmVhdGVkIGZvciB0aGUgZm9ybWFsIHBhcmFtZXRlcnMuICBJZiB0aGVyZSBhcmUgTiBwb3NpdGlvbmFsXG4nCisgICAgICAgICAgJ2FyZ3VtZW50cywgdGhleSBhcmUgcGxhY2VkIGluIHRoZSBmaXJzdCBOIHNsb3RzLiAgTmV4dCwgZm9yIGVhY2hcbicKKyAgICAgICAgICAna2V5d29yZCBhcmd1bWVudCwgdGhlIGlkZW50aWZpZXIgaXMgdXNlZCB0byBkZXRlcm1pbmUgdGhlXG4nCisgICAgICAgICAgJ2NvcnJlc3BvbmRpbmcgc2xvdCAoaWYgdGhlIGlkZW50aWZpZXIgaXMgdGhlIHNhbWUgYXMgdGhlIGZpcnN0ICcKKyAgICAgICAgICAnZm9ybWFsXG4nCisgICAgICAgICAgJ3BhcmFtZXRlciBuYW1lLCB0aGUgZmlyc3Qgc2xvdCBpcyB1c2VkLCBhbmQgc28gb24pLiAgSWYgdGhlIHNsb3QgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICdhbHJlYWR5IGZpbGxlZCwgYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLiBPdGhlcndpc2UsIHRoZVxuJworICAgICAgICAgICd2YWx1ZSBvZiB0aGUgYXJndW1lbnQgaXMgcGxhY2VkIGluIHRoZSBzbG90LCBmaWxsaW5nIGl0IChldmVuIGlmICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2V4cHJlc3Npb24gaXMgIk5vbmUiLCBpdCBmaWxscyB0aGUgc2xvdCkuICBXaGVuIGFsbCBhcmd1bWVudHMgaGF2ZVxuJworICAgICAgICAgICdiZWVuIHByb2Nlc3NlZCwgdGhlIHNsb3RzIHRoYXQgYXJlIHN0aWxsIHVuZmlsbGVkIGFyZSBmaWxsZWQgd2l0aCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICdjb3JyZXNwb25kaW5nIGRlZmF1bHQgdmFsdWUgZnJvbSB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAnKERlZmF1bHRcbicKKyAgICAgICAgICAndmFsdWVzIGFyZSBjYWxjdWxhdGVkLCBvbmNlLCB3aGVuIHRoZSBmdW5jdGlvbiBpcyBkZWZpbmVkOyB0aHVzLCBhXG4nCisgICAgICAgICAgJ211dGFibGUgb2JqZWN0IHN1Y2ggYXMgYSBsaXN0IG9yIGRpY3Rpb25hcnkgdXNlZCBhcyBkZWZhdWx0IHZhbHVlICcKKyAgICAgICAgICAnd2lsbFxuJworICAgICAgICAgICJiZSBzaGFyZWQgYnkgYWxsIGNhbGxzIHRoYXQgZG9uJ3Qgc3BlY2lmeSBhbiBhcmd1bWVudCB2YWx1ZSBmb3IgIgorICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyBzbG90OyB0aGlzIHNob3VsZCB1c3VhbGx5IGJlIGF2b2lkZWQuKSAgSWYgdGhlcmUgYXJlICcKKyAgICAgICAgICAnYW55XG4nCisgICAgICAgICAgJ3VuZmlsbGVkIHNsb3RzIGZvciB3aGljaCBubyBkZWZhdWx0IHZhbHVlIGlzIHNwZWNpZmllZCwgYSAnCisgICAgICAgICAgJyJUeXBlRXJyb3IiXG4nCisgICAgICAgICAgJ2V4Y2VwdGlvbiBpcyByYWlzZWQuICBPdGhlcndpc2UsIHRoZSBsaXN0IG9mIGZpbGxlZCBzbG90cyBpcyB1c2VkICcKKyAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAndGhlIGFyZ3VtZW50IGxpc3QgZm9yIHRoZSBjYWxsLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBBbiBpbXBsZW1lbnRhdGlvbiBtYXkgcHJvdmlkZVxuJworICAgICAgICAgICdidWlsdC1pbiBmdW5jdGlvbnMgd2hvc2UgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGRvIG5vdCBoYXZlIG5hbWVzLCAnCisgICAgICAgICAgJ2V2ZW5cbicKKyAgICAgICAgICAiaWYgdGhleSBhcmUgJ25hbWVkJyBmb3IgdGhlIHB1cnBvc2Ugb2YgZG9jdW1lbnRhdGlvbiwgYW5kIHdoaWNoXG4iCisgICAgICAgICAgJ3RoZXJlZm9yZSBjYW5ub3QgYmUgc3VwcGxpZWQgYnkga2V5d29yZC4gIEluIENQeXRob24sIHRoaXMgaXMgdGhlICcKKyAgICAgICAgICAnY2FzZVxuJworICAgICAgICAgICdmb3IgZnVuY3Rpb25zIGltcGxlbWVudGVkIGluIEMgdGhhdCB1c2UgIlB5QXJnX1BhcnNlVHVwbGUoKSIgdG8gJworICAgICAgICAgICdwYXJzZVxuJworICAgICAgICAgICd0aGVpciBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGVyZSBhcmUgbW9yZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyB0aGFuIHRoZXJlIGFyZSBmb3JtYWwgJworICAgICAgICAgICdwYXJhbWV0ZXJcbicKKyAgICAgICAgICAnc2xvdHMsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsICcKKyAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgJ3VzaW5nIHRoZSBzeW50YXggIippZGVudGlmaWVyIiBpcyBwcmVzZW50OyBpbiB0aGlzIGNhc2UsIHRoYXQgJworICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAncGFyYW1ldGVyIHJlY2VpdmVzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgZXhjZXNzIHBvc2l0aW9uYWwgJworICAgICAgICAgICdhcmd1bWVudHNcbicKKyAgICAgICAgICAnKG9yIGFuIGVtcHR5IHR1cGxlIGlmIHRoZXJlIHdlcmUgbm8gZXhjZXNzIHBvc2l0aW9uYWwgYXJndW1lbnRzKS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIGFueSBrZXl3b3JkIGFyZ3VtZW50IGRvZXMgbm90IGNvcnJlc3BvbmQgdG8gYSBmb3JtYWwgcGFyYW1ldGVyXG4nCisgICAgICAgICAgJ25hbWUsIGEgIlR5cGVFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZCwgdW5sZXNzIGEgZm9ybWFsIHBhcmFtZXRlclxuJworICAgICAgICAgICd1c2luZyB0aGUgc3ludGF4ICIqKmlkZW50aWZpZXIiIGlzIHByZXNlbnQ7IGluIHRoaXMgY2FzZSwgdGhhdCAnCisgICAgICAgICAgJ2Zvcm1hbFxuJworICAgICAgICAgICdwYXJhbWV0ZXIgcmVjZWl2ZXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgdGhlIGV4Y2VzcyBrZXl3b3JkXG4nCisgICAgICAgICAgJ2FyZ3VtZW50cyAodXNpbmcgdGhlIGtleXdvcmRzIGFzIGtleXMgYW5kIHRoZSBhcmd1bWVudCB2YWx1ZXMgYXNcbicKKyAgICAgICAgICAnY29ycmVzcG9uZGluZyB2YWx1ZXMpLCBvciBhIChuZXcpIGVtcHR5IGRpY3Rpb25hcnkgaWYgdGhlcmUgd2VyZSAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJ2V4Y2VzcyBrZXl3b3JkIGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0lmIHRoZSBzeW50YXggIipleHByZXNzaW9uIiBhcHBlYXJzIGluIHRoZSBmdW5jdGlvbiBjYWxsLCAnCisgICAgICAgICAgJyJleHByZXNzaW9uIlxuJworICAgICAgICAgICdtdXN0IGV2YWx1YXRlIHRvIGFuICppdGVyYWJsZSouICBFbGVtZW50cyBmcm9tIHRoZXNlIGl0ZXJhYmxlcyBhcmVcbicKKyAgICAgICAgICAndHJlYXRlZCBhcyBpZiB0aGV5IHdlcmUgYWRkaXRpb25hbCBwb3NpdGlvbmFsIGFyZ3VtZW50cy4gIEZvciB0aGUgJworICAgICAgICAgICdjYWxsXG4nCisgICAgICAgICAgJyJmKHgxLCB4MiwgKnksIHgzLCB4NCkiLCBpZiAqeSogZXZhbHVhdGVzIHRvIGEgc2VxdWVuY2UgKnkxKiwgLi4uLFxuJworICAgICAgICAgICcqeU0qLCB0aGlzIGlzIGVxdWl2YWxlbnQgdG8gYSBjYWxsIHdpdGggTSs0IHBvc2l0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAnKngxKixcbicKKyAgICAgICAgICAnKngyKiwgKnkxKiwgLi4uLCAqeU0qLCAqeDMqLCAqeDQqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjb25zZXF1ZW5jZSBvZiB0aGlzIGlzIHRoYXQgYWx0aG91Z2ggdGhlICIqZXhwcmVzc2lvbiIgc3ludGF4ICcKKyAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgJ2FwcGVhciAqYWZ0ZXIqIGV4cGxpY2l0IGtleXdvcmQgYXJndW1lbnRzLCBpdCBpcyBwcm9jZXNzZWQgJworICAgICAgICAgICcqYmVmb3JlKlxuJworICAgICAgICAgICd0aGUga2V5d29yZCBhcmd1bWVudHMgKGFuZCBhbnkgIioqZXhwcmVzc2lvbiIgYXJndW1lbnRzIC0tIHNlZSAnCisgICAgICAgICAgJ2JlbG93KS5cbicKKyAgICAgICAgICAnU286XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gZGVmIGYoYSwgYik6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoYSwgYilcbicKKyAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgJyAgID4+PiBmKGI9MSwgKigyLCkpXG4nCisgICAgICAgICAgJyAgIDIgMVxuJworICAgICAgICAgICcgICA+Pj4gZihhPTEsICooMiwpKVxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gP1xuJworICAgICAgICAgICIgICBUeXBlRXJyb3I6IGYoKSBnb3QgbXVsdGlwbGUgdmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICdhJ1xuIgorICAgICAgICAgICcgICA+Pj4gZigxLCAqKDIsKSlcbicKKyAgICAgICAgICAnICAgMSAyXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJdCBpcyB1bnVzdWFsIGZvciBib3RoIGtleXdvcmQgYXJndW1lbnRzIGFuZCB0aGUgIipleHByZXNzaW9uIiAnCisgICAgICAgICAgJ3N5bnRheFxuJworICAgICAgICAgICd0byBiZSB1c2VkIGluIHRoZSBzYW1lIGNhbGwsIHNvIGluIHByYWN0aWNlIHRoaXMgY29uZnVzaW9uIGRvZXMgJworICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAnYXJpc2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdJZiB0aGUgc3ludGF4ICIqKmV4cHJlc3Npb24iIGFwcGVhcnMgaW4gdGhlIGZ1bmN0aW9uIGNhbGwsXG4nCisgICAgICAgICAgJyJleHByZXNzaW9uIiBtdXN0IGV2YWx1YXRlIHRvIGEgKm1hcHBpbmcqLCB0aGUgY29udGVudHMgb2Ygd2hpY2ggJworICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAndHJlYXRlZCBhcyBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLiAgSWYgYSBrZXl3b3JkIGlzIGFscmVhZHlcbicKKyAgICAgICAgICAncHJlc2VudCAoYXMgYW4gZXhwbGljaXQga2V5d29yZCBhcmd1bWVudCwgb3IgZnJvbSBhbm90aGVyICcKKyAgICAgICAgICAndW5wYWNraW5nKSxcbicKKyAgICAgICAgICAnYSAiVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9ybWFsIHBhcmFtZXRlcnMgdXNpbmcgdGhlIHN5bnRheCAiKmlkZW50aWZpZXIiIG9yICIqKmlkZW50aWZpZXIiXG4nCisgICAgICAgICAgJ2Nhbm5vdCBiZSB1c2VkIGFzIHBvc2l0aW9uYWwgYXJndW1lbnQgc2xvdHMgb3IgYXMga2V5d29yZCBhcmd1bWVudFxuJworICAgICAgICAgICduYW1lcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjU6IEZ1bmN0aW9uIGNhbGxzIGFjY2VwdCBhbnkgbnVtYmVyIG9mICIqIiAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICciKioiIHVucGFja2luZ3MsIHBvc2l0aW9uYWwgYXJndW1lbnRzIG1heSBmb2xsb3cgaXRlcmFibGUgJworICAgICAgICAgICd1bnBhY2tpbmdzXG4nCisgICAgICAgICAgJygiKiIpLCBhbmQga2V5d29yZCBhcmd1bWVudHMgbWF5IGZvbGxvdyBkaWN0aW9uYXJ5IHVucGFja2luZ3MgJworICAgICAgICAgICcoIioqIikuXG4nCisgICAgICAgICAgJ09yaWdpbmFsbHkgcHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBIGNhbGwgYWx3YXlzIHJldHVybnMgc29tZSB2YWx1ZSwgcG9zc2libHkgIk5vbmUiLCB1bmxlc3MgaXQgcmFpc2VzICcKKyAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAnZXhjZXB0aW9uLiAgSG93IHRoaXMgdmFsdWUgaXMgY29tcHV0ZWQgZGVwZW5kcyBvbiB0aGUgdHlwZSBvZiB0aGVcbicKKyAgICAgICAgICAnY2FsbGFibGUgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgaXQgaXMtLS1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgdXNlci1kZWZpbmVkIGZ1bmN0aW9uOlxuJworICAgICAgICAgICcgICBUaGUgY29kZSBibG9jayBmb3IgdGhlIGZ1bmN0aW9uIGlzIGV4ZWN1dGVkLCBwYXNzaW5nIGl0IHRoZVxuJworICAgICAgICAgICcgICBhcmd1bWVudCBsaXN0LiAgVGhlIGZpcnN0IHRoaW5nIHRoZSBjb2RlIGJsb2NrIHdpbGwgZG8gaXMgYmluZCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICBmb3JtYWwgcGFyYW1ldGVycyB0byB0aGUgYXJndW1lbnRzOyB0aGlzIGlzIGRlc2NyaWJlZCBpbiAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnICAgRnVuY3Rpb24gZGVmaW5pdGlvbnMuICBXaGVuIHRoZSBjb2RlIGJsb2NrIGV4ZWN1dGVzIGEgInJldHVybiJcbicKKyAgICAgICAgICAnICAgc3RhdGVtZW50LCB0aGlzIHNwZWNpZmllcyB0aGUgcmV0dXJuIHZhbHVlIG9mIHRoZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ2NhbGwuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGJ1aWx0LWluIGZ1bmN0aW9uIG9yIG1ldGhvZDpcbicKKyAgICAgICAgICAnICAgVGhlIHJlc3VsdCBpcyB1cCB0byB0aGUgaW50ZXJwcmV0ZXI7IHNlZSBCdWlsdC1pbiBGdW5jdGlvbnMgZm9yICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGRlc2NyaXB0aW9ucyBvZiBidWlsdC1pbiBmdW5jdGlvbnMgYW5kIG1ldGhvZHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdhIGNsYXNzIG9iamVjdDpcbicKKyAgICAgICAgICAnICAgQSBuZXcgaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyBpcyByZXR1cm5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2EgY2xhc3MgaW5zdGFuY2UgbWV0aG9kOlxuJworICAgICAgICAgICcgICBUaGUgY29ycmVzcG9uZGluZyB1c2VyLWRlZmluZWQgZnVuY3Rpb24gaXMgY2FsbGVkLCB3aXRoIGFuICcKKyAgICAgICAgICAnYXJndW1lbnRcbicKKyAgICAgICAgICAnICAgbGlzdCB0aGF0IGlzIG9uZSBsb25nZXIgdGhhbiB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY2FsbDogdGhlXG4nCisgICAgICAgICAgJyAgIGluc3RhbmNlIGJlY29tZXMgdGhlIGZpcnN0IGFyZ3VtZW50LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYSBjbGFzcyBpbnN0YW5jZTpcbicKKyAgICAgICAgICAnICAgVGhlIGNsYXNzIG11c3QgZGVmaW5lIGEgIl9fY2FsbF9fKCkiIG1ldGhvZDsgdGhlIGVmZmVjdCBpcyB0aGVuICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHNhbWUgYXMgaWYgdGhhdCBtZXRob2Qgd2FzIGNhbGxlZC5cbicsCisgJ2NsYXNzJzogJ1xuJworICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uc1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGRlZmluZXMgYSBjbGFzcyBvYmplY3QgKHNlZSBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgJ3N0YW5kYXJkXG4nCisgICAgICAgICAgJ3R5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIGNsYXNzZGVmICAgIDo6PSBbZGVjb3JhdG9yc10gImNsYXNzIiBjbGFzc25hbWUgW2luaGVyaXRhbmNlXSAiOiIgJworICAgICAgICAgICdzdWl0ZVxuJworICAgICAgICAgICcgICBpbmhlcml0YW5jZSA6Oj0gIigiIFthcmd1bWVudF9saXN0XSAiKSJcbicKKyAgICAgICAgICAnICAgY2xhc3NuYW1lICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgY2xhc3MgZGVmaW5pdGlvbiBpcyBhbiBleGVjdXRhYmxlIHN0YXRlbWVudC4gIFRoZSBpbmhlcml0YW5jZSAnCisgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAndXN1YWxseSBnaXZlcyBhIGxpc3Qgb2YgYmFzZSBjbGFzc2VzIChzZWUgTWV0YWNsYXNzZXMgZm9yIG1vcmVcbicKKyAgICAgICAgICAnYWR2YW5jZWQgdXNlcyksIHNvIGVhY2ggaXRlbSBpbiB0aGUgbGlzdCBzaG91bGQgZXZhbHVhdGUgdG8gYSAnCisgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgJ29iamVjdCB3aGljaCBhbGxvd3Mgc3ViY2xhc3NpbmcuICBDbGFzc2VzIHdpdGhvdXQgYW4gaW5oZXJpdGFuY2UgJworICAgICAgICAgICdsaXN0XG4nCisgICAgICAgICAgJ2luaGVyaXQsIGJ5IGRlZmF1bHQsIGZyb20gdGhlIGJhc2UgY2xhc3MgIm9iamVjdCI7IGhlbmNlLFxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOlxuJworICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnaXMgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vKG9iamVjdCk6XG4nCisgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICJUaGUgY2xhc3MncyBzdWl0ZSBpcyB0aGVuIGV4ZWN1dGVkIGluIGEgbmV3IGV4ZWN1dGlvbiBmcmFtZSAoc2VlXG4iCisgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZyksIHVzaW5nIGEgbmV3bHkgY3JlYXRlZCBsb2NhbCBuYW1lc3BhY2UgYW5kIHRoZVxuJworICAgICAgICAgICdvcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuJworICAgICAgICAgICJmdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzcydzIHN1aXRlIGZpbmlzaGVzIGV4ZWN1dGlvbiwgIgorICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAnZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gWzRdICcKKyAgICAgICAgICAnQVxuJworICAgICAgICAgICdjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgJworICAgICAgICAgICdiYXNlXG4nCisgICAgICAgICAgJ2NsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICdUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgbG9jYWxcbicKKyAgICAgICAgICAnbmFtZXNwYWNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIG9yZGVyIGluIHdoaWNoIGF0dHJpYnV0ZXMgYXJlIGRlZmluZWQgaW4gdGhlIGNsYXNzIGJvZHkgaXNcbicKKyAgICAgICAgICAncHJlc2VydmVkIGluIHRoZSBuZXcgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIE5vdGUgdGhhdCB0aGlzIGlzICcKKyAgICAgICAgICAncmVsaWFibGVcbicKKyAgICAgICAgICAnb25seSByaWdodCBhZnRlciB0aGUgY2xhc3MgaXMgY3JlYXRlZCBhbmQgb25seSBmb3IgY2xhc3NlcyB0aGF0ICcKKyAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICdkZWZpbmVkIHVzaW5nIHRoZSBkZWZpbml0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0NsYXNzIGNyZWF0aW9uIGNhbiBiZSBjdXN0b21pemVkIGhlYXZpbHkgdXNpbmcgbWV0YWNsYXNzZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdDbGFzc2VzIGNhbiBhbHNvIGJlIGRlY29yYXRlZDoganVzdCBsaWtlIHdoZW4gZGVjb3JhdGluZyAnCisgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEBmMShhcmcpXG4nCisgICAgICAgICAgJyAgIEBmMlxuJworICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgY2xhc3MgRm9vOiBwYXNzXG4nCisgICAgICAgICAgJyAgIEZvbyA9IGYxKGFyZykoZjIoRm9vKSlcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSBldmFsdWF0aW9uIHJ1bGVzIGZvciB0aGUgZGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSB0aGUgc2FtZSBhcyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICdmdW5jdGlvbiBkZWNvcmF0b3JzLiAgVGhlIHJlc3VsdCBpcyB0aGVuIGJvdW5kIHRvIHRoZSBjbGFzcyBuYW1lLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiKipQcm9ncmFtbWVyJ3Mgbm90ZToqKiBWYXJpYWJsZXMgZGVmaW5lZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAiCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdjbGFzcyBhdHRyaWJ1dGVzOyB0aGV5IGFyZSBzaGFyZWQgYnkgaW5zdGFuY2VzLiAgSW5zdGFuY2UgJworICAgICAgICAgICdhdHRyaWJ1dGVzXG4nCisgICAgICAgICAgJ2NhbiBiZSBzZXQgaW4gYSBtZXRob2Qgd2l0aCAic2VsZi5uYW1lID0gdmFsdWUiLiAgQm90aCBjbGFzcyBhbmRcbicKKyAgICAgICAgICAnaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAnCisgICAgICAgICAgJyIic2VsZi5uYW1lIiIsXG4nCisgICAgICAgICAgJ2FuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAnd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgJworICAgICAgICAgICdkZWZhdWx0c1xuJworICAgICAgICAgICdmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkICcKKyAgICAgICAgICAndG9cbicKKyAgICAgICAgICAndW5leHBlY3RlZCByZXN1bHRzLiAgRGVzY3JpcHRvcnMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG4nCisgICAgICAgICAgJ3ZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4nCisgICAgICAgICAgJyAgQ2xhc3MgRGVjb3JhdG9yc1xuJywKKyAnY29tcGFyaXNvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdVbmxpa2UgQywgYWxsIGNvbXBhcmlzb24gb3BlcmF0aW9ucyBpbiBQeXRob24gaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3ByaW9yaXR5LFxuJworICAgICAgICAgICAgICAgICd3aGljaCBpcyBsb3dlciB0aGFuIHRoYXQgb2YgYW55IGFyaXRobWV0aWMsIHNoaWZ0aW5nIG9yICcKKyAgICAgICAgICAgICAgICAnYml0d2lzZVxuJworICAgICAgICAgICAgICAgICdvcGVyYXRpb24uICBBbHNvIHVubGlrZSBDLCBleHByZXNzaW9ucyBsaWtlICJhIDwgYiA8IGMiIGhhdmUgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gdGhhdCBpcyBjb252ZW50aW9uYWwgaW4gbWF0aGVtYXRpY3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uICAgIDo6PSBvcl9leHByICggY29tcF9vcGVyYXRvciBvcl9leHByICkqXG4nCisgICAgICAgICAgICAgICAgJyAgIGNvbXBfb3BlcmF0b3IgOjo9ICI8IiB8ICI+IiB8ICI9PSIgfCAiPj0iIHwgIjw9IiB8ICIhPSJcbicKKyAgICAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCAiaXMiIFsibm90Il0gfCBbIm5vdCJdICJpbiJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIHlpZWxkIGJvb2xlYW4gdmFsdWVzOiAiVHJ1ZSIgb3IgIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NvbXBhcmlzb25zIGNhbiBiZSBjaGFpbmVkIGFyYml0cmFyaWx5LCBlLmcuLCAieCA8IHkgPD0geiIgJworICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvICJ4IDwgeSBhbmQgeSA8PSB6IiwgZXhjZXB0IHRoYXQgInkiIGlzICcKKyAgICAgICAgICAgICAgICAnZXZhbHVhdGVkIG9ubHlcbicKKyAgICAgICAgICAgICAgICAnb25jZSAoYnV0IGluIGJvdGggY2FzZXMgInoiIGlzIG5vdCBldmFsdWF0ZWQgYXQgYWxsIHdoZW4gInggPCAnCisgICAgICAgICAgICAgICAgJ3kiIGlzXG4nCisgICAgICAgICAgICAgICAgJ2ZvdW5kIHRvIGJlIGZhbHNlKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0Zvcm1hbGx5LCBpZiAqYSosICpiKiwgKmMqLCAuLi4sICp5KiwgKnoqIGFyZSBleHByZXNzaW9ucyBhbmQgJworICAgICAgICAgICAgICAgICcqb3AxKixcbicKKyAgICAgICAgICAgICAgICAnKm9wMiosIC4uLiwgKm9wTiogYXJlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCB0aGVuICJhIG9wMSBiIG9wMiAnCisgICAgICAgICAgICAgICAgJ2MgLi4uIHlcbicKKyAgICAgICAgICAgICAgICAnb3BOIHoiIGlzIGVxdWl2YWxlbnQgdG8gImEgb3AxIGIgYW5kIGIgb3AyIGMgYW5kIC4uLiB5IG9wTiAnCisgICAgICAgICAgICAgICAgJ3oiLCBleGNlcHRcbicKKyAgICAgICAgICAgICAgICAndGhhdCBlYWNoIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkIGF0IG1vc3Qgb25jZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCAiYSBvcDEgYiBvcDIgYyIgZG9lc25cJ3QgaW1wbHkgYW55IGtpbmQgb2YgJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIGJldHdlZW5cbicKKyAgICAgICAgICAgICAgICAnKmEqIGFuZCAqYyosIHNvIHRoYXQsIGUuZy4sICJ4IDwgeSA+IHoiIGlzIHBlcmZlY3RseSBsZWdhbCAnCisgICAgICAgICAgICAgICAgJyh0aG91Z2hcbicKKyAgICAgICAgICAgICAgICAncGVyaGFwcyBub3QgcHJldHR5KS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdWYWx1ZSBjb21wYXJpc29uc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIG9wZXJhdG9ycyAiPCIsICI+IiwgIj09IiwgIj49IiwgIjw9IiwgYW5kICIhPSIgY29tcGFyZSAnCisgICAgICAgICAgICAgICAgJ3RoZSB2YWx1ZXNcbicKKyAgICAgICAgICAgICAgICAnb2YgdHdvIG9iamVjdHMuICBUaGUgb2JqZWN0cyBkbyBub3QgbmVlZCB0byBoYXZlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAgICAndHlwZS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0NoYXB0ZXIgT2JqZWN0cywgdmFsdWVzIGFuZCB0eXBlcyBzdGF0ZXMgdGhhdCBvYmplY3RzIGhhdmUgYSAnCisgICAgICAgICAgICAgICAgJ3ZhbHVlIChpblxuJworICAgICAgICAgICAgICAgICdhZGRpdGlvbiB0byB0eXBlIGFuZCBpZGVudGl0eSkuICBUaGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzIGEgJworICAgICAgICAgICAgICAgICdyYXRoZXJcbicKKyAgICAgICAgICAgICAgICAnYWJzdHJhY3Qgbm90aW9uIGluIFB5dGhvbjogRm9yIGV4YW1wbGUsIHRoZXJlIGlzIG5vIGNhbm9uaWNhbCAnCisgICAgICAgICAgICAgICAgJ2FjY2Vzc1xuJworICAgICAgICAgICAgICAgICJtZXRob2QgZm9yIGFuIG9iamVjdCdzIHZhbHVlLiAgQWxzbywgdGhlcmUgaXMgbm8gcmVxdWlyZW1lbnQgIgorICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICd2YWx1ZSBvZiBhbiBvYmplY3Qgc2hvdWxkIGJlIGNvbnN0cnVjdGVkIGluIGEgcGFydGljdWxhciB3YXksICcKKyAgICAgICAgICAgICAgICAnZS5nLlxuJworICAgICAgICAgICAgICAgICdjb21wcmlzZWQgb2YgYWxsIGl0cyBkYXRhIGF0dHJpYnV0ZXMuIENvbXBhcmlzb24gb3BlcmF0b3JzICcKKyAgICAgICAgICAgICAgICAnaW1wbGVtZW50IGFcbicKKyAgICAgICAgICAgICAgICAncGFydGljdWxhciBub3Rpb24gb2Ygd2hhdCB0aGUgdmFsdWUgb2YgYW4gb2JqZWN0IGlzLiAgT25lIGNhbiAnCisgICAgICAgICAgICAgICAgJ3RoaW5rIG9mXG4nCisgICAgICAgICAgICAgICAgJ3RoZW0gYXMgZGVmaW5pbmcgdGhlIHZhbHVlIG9mIGFuIG9iamVjdCBpbmRpcmVjdGx5LCBieSBtZWFucyAnCisgICAgICAgICAgICAgICAgJ29mIHRoZWlyXG4nCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb24gaW1wbGVtZW50YXRpb24uXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdCZWNhdXNlIGFsbCB0eXBlcyBhcmUgKGRpcmVjdCBvciBpbmRpcmVjdCkgc3VidHlwZXMgb2YgJworICAgICAgICAgICAgICAgICcib2JqZWN0IiwgdGhleVxuJworICAgICAgICAgICAgICAgICdpbmhlcml0IHRoZSBkZWZhdWx0IGNvbXBhcmlzb24gYmVoYXZpb3IgZnJvbSAib2JqZWN0Ii4gIFR5cGVzICcKKyAgICAgICAgICAgICAgICAnY2FuXG4nCisgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yIGJ5IGltcGxlbWVudGluZyAqcmljaCAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAnbWV0aG9kcyogbGlrZSAiX19sdF9fKCkiLCBkZXNjcmliZWQgaW4gQmFzaWMgY3VzdG9taXphdGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGJlaGF2aW9yIGZvciBlcXVhbGl0eSBjb21wYXJpc29uICgiPT0iIGFuZCAiIT0iKSAnCisgICAgICAgICAgICAgICAgJ2lzIGJhc2VkXG4nCisgICAgICAgICAgICAgICAgJ29uIHRoZSBpZGVudGl0eSBvZiB0aGUgb2JqZWN0cy4gIEhlbmNlLCBlcXVhbGl0eSBjb21wYXJpc29uICcKKyAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAnaW5zdGFuY2VzIHdpdGggdGhlIHNhbWUgaWRlbnRpdHkgcmVzdWx0cyBpbiBlcXVhbGl0eSwgYW5kICcKKyAgICAgICAgICAgICAgICAnZXF1YWxpdHlcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBvZiBpbnN0YW5jZXMgd2l0aCBkaWZmZXJlbnQgaWRlbnRpdGllcyByZXN1bHRzIGluXG4nCisgICAgICAgICAgICAgICAgJ2luZXF1YWxpdHkuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCBiZWhhdmlvciBpcyB0aGUgJworICAgICAgICAgICAgICAgICdkZXNpcmUgdGhhdFxuJworICAgICAgICAgICAgICAgICdhbGwgb2JqZWN0cyBzaG91bGQgYmUgcmVmbGV4aXZlIChpLmUuICJ4IGlzIHkiIGltcGxpZXMgInggPT0gJworICAgICAgICAgICAgICAgICd5IikuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBIGRlZmF1bHQgb3JkZXIgY29tcGFyaXNvbiAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSBpcyBub3QgJworICAgICAgICAgICAgICAgICdwcm92aWRlZDtcbicKKyAgICAgICAgICAgICAgICAnYW4gYXR0ZW1wdCByYWlzZXMgIlR5cGVFcnJvciIuICBBIG1vdGl2YXRpb24gZm9yIHRoaXMgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yXG4nCisgICAgICAgICAgICAgICAgJ2lzIHRoZSBsYWNrIG9mIGEgc2ltaWxhciBpbnZhcmlhbnQgYXMgZm9yIGVxdWFsaXR5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnVGhlIGJlaGF2aW9yIG9mIHRoZSBkZWZhdWx0IGVxdWFsaXR5IGNvbXBhcmlzb24sIHRoYXQgJworICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgd2l0aFxuJworICAgICAgICAgICAgICAgICdkaWZmZXJlbnQgaWRlbnRpdGllcyBhcmUgYWx3YXlzIHVuZXF1YWwsIG1heSBiZSBpbiBjb250cmFzdCAnCisgICAgICAgICAgICAgICAgJ3RvIHdoYXRcbicKKyAgICAgICAgICAgICAgICAndHlwZXMgd2lsbCBuZWVkIHRoYXQgaGF2ZSBhIHNlbnNpYmxlIGRlZmluaXRpb24gb2Ygb2JqZWN0ICcKKyAgICAgICAgICAgICAgICAndmFsdWUgYW5kXG4nCisgICAgICAgICAgICAgICAgJ3ZhbHVlLWJhc2VkIGVxdWFsaXR5LiAgU3VjaCB0eXBlcyB3aWxsIG5lZWQgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgICAgICAndGhlaXJcbicKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBiZWhhdmlvciwgYW5kIGluIGZhY3QsIGEgbnVtYmVyIG9mIGJ1aWx0LWluIHR5cGVzICcKKyAgICAgICAgICAgICAgICAnaGF2ZSBkb25lXG4nCisgICAgICAgICAgICAgICAgJ3RoYXQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGxpc3QgZGVzY3JpYmVzIHRoZSBjb21wYXJpc29uIGJlaGF2aW9yIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgJ21vc3RcbicKKyAgICAgICAgICAgICAgICAnaW1wb3J0YW50IGJ1aWx0LWluIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBOdW1iZXJzIG9mIGJ1aWx0LWluIG51bWVyaWMgdHlwZXMgKE51bWVyaWMgVHlwZXMgLS0tIGludCwgJworICAgICAgICAgICAgICAgICdmbG9hdCxcbicKKyAgICAgICAgICAgICAgICAnICBjb21wbGV4KSBhbmQgb2YgdGhlIHN0YW5kYXJkIGxpYnJhcnkgdHlwZXMgJworICAgICAgICAgICAgICAgICciZnJhY3Rpb25zLkZyYWN0aW9uIiBhbmRcbicKKyAgICAgICAgICAgICAgICAnICAiZGVjaW1hbC5EZWNpbWFsIiBjYW4gYmUgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgJworICAgICAgICAgICAgICAgICd0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAnICB3aXRoIHRoZSByZXN0cmljdGlvbiB0aGF0IGNvbXBsZXggbnVtYmVycyBkbyBub3Qgc3VwcG9ydCAnCisgICAgICAgICAgICAgICAgJ29yZGVyXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyaXNvbi4gIFdpdGhpbiB0aGUgbGltaXRzIG9mIHRoZSB0eXBlcyBpbnZvbHZlZCwgdGhleSAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmVcbicKKyAgICAgICAgICAgICAgICAnICBtYXRoZW1hdGljYWxseSAoYWxnb3JpdGhtaWNhbGx5KSBjb3JyZWN0IHdpdGhvdXQgbG9zcyBvZiAnCisgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgVGhlIG5vdC1hLW51bWJlciB2YWx1ZXMgImZsb2F0KFwnTmFOXCcpIiBhbmQgJworICAgICAgICAgICAgICAgICciRGVjaW1hbChcJ05hTlwnKSIgYXJlXG4nCisgICAgICAgICAgICAgICAgJyAgc3BlY2lhbC4gIFRoZXkgYXJlIGlkZW50aWNhbCB0byB0aGVtc2VsdmVzICgieCBpcyB4IiBpcyAnCisgICAgICAgICAgICAgICAgJ3RydWUpIGJ1dFxuJworICAgICAgICAgICAgICAgICcgIGFyZSBub3QgZXF1YWwgdG8gdGhlbXNlbHZlcyAoInggPT0geCIgaXMgZmFsc2UpLiAgJworICAgICAgICAgICAgICAgICdBZGRpdGlvbmFsbHksXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyaW5nIGFueSBudW1iZXIgdG8gYSBub3QtYS1udW1iZXIgdmFsdWUgd2lsbCByZXR1cm4gJworICAgICAgICAgICAgICAgICciRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICcgIEZvciBleGFtcGxlLCBib3RoICIzIDwgZmxvYXQoXCdOYU5cJykiIGFuZCAiZmxvYXQoXCdOYU5cJykgJworICAgICAgICAgICAgICAgICc8IDMiIHdpbGxcbicKKyAgICAgICAgICAgICAgICAnICByZXR1cm4gIkZhbHNlIi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogQmluYXJ5IHNlcXVlbmNlcyAoaW5zdGFuY2VzIG9mICJieXRlcyIgb3IgImJ5dGVhcnJheSIpIGNhbiAnCisgICAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyZWQgd2l0aGluIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMuICBUaGV5IGNvbXBhcmVcbicKKyAgICAgICAgICAgICAgICAnICBsZXhpY29ncmFwaGljYWxseSB1c2luZyB0aGUgbnVtZXJpYyB2YWx1ZXMgb2YgdGhlaXIgJworICAgICAgICAgICAgICAgICdlbGVtZW50cy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogU3RyaW5ncyAoaW5zdGFuY2VzIG9mICJzdHIiKSBjb21wYXJlIGxleGljb2dyYXBoaWNhbGx5ICcKKyAgICAgICAgICAgICAgICAndXNpbmcgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgbnVtZXJpY2FsIFVuaWNvZGUgY29kZSBwb2ludHMgKHRoZSByZXN1bHQgb2YgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgICAgICAnICAib3JkKCkiKSBvZiB0aGVpciBjaGFyYWN0ZXJzLiBbM11cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgU3RyaW5ncyBhbmQgYmluYXJ5IHNlcXVlbmNlcyBjYW5ub3QgYmUgZGlyZWN0bHkgY29tcGFyZWQuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIFNlcXVlbmNlcyAoaW5zdGFuY2VzIG9mICJ0dXBsZSIsICJsaXN0Iiwgb3IgInJhbmdlIikgY2FuICcKKyAgICAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAgICAnICBjb21wYXJlZCBvbmx5IHdpdGhpbiBlYWNoIG9mIHRoZWlyIHR5cGVzLCB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICAgJ3Jlc3RyaWN0aW9uIHRoYXRcbicKKyAgICAgICAgICAgICAgICAnICByYW5nZXMgZG8gbm90IHN1cHBvcnQgb3JkZXIgY29tcGFyaXNvbi4gIEVxdWFsaXR5ICcKKyAgICAgICAgICAgICAgICAnY29tcGFyaXNvbiBhY3Jvc3NcbicKKyAgICAgICAgICAgICAgICAnICB0aGVzZSB0eXBlcyByZXN1bHRzIGluIHVuZXF1YWxpdHksIGFuZCBvcmRlcmluZyBjb21wYXJpc29uICcKKyAgICAgICAgICAgICAgICAnYWNyb3NzXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlc2UgdHlwZXMgcmFpc2VzICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBTZXF1ZW5jZXMgY29tcGFyZSBsZXhpY29ncmFwaGljYWxseSB1c2luZyBjb21wYXJpc29uIG9mXG4nCisgICAgICAgICAgICAgICAgJyAgY29ycmVzcG9uZGluZyBlbGVtZW50cywgd2hlcmVieSByZWZsZXhpdml0eSBvZiB0aGUgZWxlbWVudHMgJworICAgICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICAgICcgIGVuZm9yY2VkLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBJbiBlbmZvcmNpbmcgcmVmbGV4aXZpdHkgb2YgZWxlbWVudHMsIHRoZSBjb21wYXJpc29uIG9mICcKKyAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnICBhc3N1bWVzIHRoYXQgZm9yIGEgY29sbGVjdGlvbiBlbGVtZW50ICJ4IiwgInggPT0geCIgaXMgJworICAgICAgICAgICAgICAgICdhbHdheXMgdHJ1ZS5cbicKKyAgICAgICAgICAgICAgICAnICBCYXNlZCBvbiB0aGF0IGFzc3VtcHRpb24sIGVsZW1lbnQgaWRlbnRpdHkgaXMgY29tcGFyZWQgJworICAgICAgICAgICAgICAgICdmaXJzdCwgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgZWxlbWVudCBjb21wYXJpc29uIGlzIHBlcmZvcm1lZCBvbmx5IGZvciBkaXN0aW5jdCAnCisgICAgICAgICAgICAgICAgJ2VsZW1lbnRzLiAgVGhpc1xuJworICAgICAgICAgICAgICAgICcgIGFwcHJvYWNoIHlpZWxkcyB0aGUgc2FtZSByZXN1bHQgYXMgYSBzdHJpY3QgZWxlbWVudCAnCisgICAgICAgICAgICAgICAgJ2NvbXBhcmlzb25cbicKKyAgICAgICAgICAgICAgICAnICB3b3VsZCwgaWYgdGhlIGNvbXBhcmVkIGVsZW1lbnRzIGFyZSByZWZsZXhpdmUuICBGb3IgJworICAgICAgICAgICAgICAgICdub24tcmVmbGV4aXZlXG4nCisgICAgICAgICAgICAgICAgJyAgZWxlbWVudHMsIHRoZSByZXN1bHQgaXMgZGlmZmVyZW50IHRoYW4gZm9yIHN0cmljdCBlbGVtZW50XG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGFyaXNvbiwgYW5kIG1heSBiZSBzdXJwcmlzaW5nOiAgVGhlIG5vbi1yZWZsZXhpdmUgJworICAgICAgICAgICAgICAgICdub3QtYS1udW1iZXJcbicKKyAgICAgICAgICAgICAgICAnICB2YWx1ZXMgZm9yIGV4YW1wbGUgcmVzdWx0IGluIHRoZSBmb2xsb3dpbmcgY29tcGFyaXNvbiAnCisgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIHdoZW5cbicKKyAgICAgICAgICAgICAgICAnICB1c2VkIGluIGEgbGlzdDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgIiAgICAgPj4+IG5hbiA9IGZsb2F0KCdOYU4nKVxuIgorICAgICAgICAgICAgICAgICcgICAgID4+PiBuYW4gaXMgbmFuXG4nCisgICAgICAgICAgICAgICAgJyAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICcgICAgID4+PiBuYW4gPT0gbmFuXG4nCisgICAgICAgICAgICAgICAgJyAgICAgRmFsc2UgICAgICAgICAgICAgICAgIDwtLSB0aGUgZGVmaW5lZCBub24tcmVmbGV4aXZlICcKKyAgICAgICAgICAgICAgICAnYmVoYXZpb3Igb2YgTmFOXG4nCisgICAgICAgICAgICAgICAgJyAgICAgPj4+IFtuYW5dID09IFtuYW5dXG4nCisgICAgICAgICAgICAgICAgJyAgICAgVHJ1ZSAgICAgICAgICAgICAgICAgIDwtLSBsaXN0IGVuZm9yY2VzIHJlZmxleGl2aXR5IGFuZCAnCisgICAgICAgICAgICAgICAgJ3Rlc3RzIGlkZW50aXR5IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIExleGljb2dyYXBoaWNhbCBjb21wYXJpc29uIGJldHdlZW4gYnVpbHQtaW4gY29sbGVjdGlvbnMgJworICAgICAgICAgICAgICAgICd3b3JrcyBhc1xuJworICAgICAgICAgICAgICAgICcgIGZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICogRm9yIHR3byBjb2xsZWN0aW9ucyB0byBjb21wYXJlIGVxdWFsLCB0aGV5IG11c3QgYmUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAnc2FtZVxuJworICAgICAgICAgICAgICAgICcgICAgdHlwZSwgaGF2ZSB0aGUgc2FtZSBsZW5ndGgsIGFuZCBlYWNoIHBhaXIgb2YgJworICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgJyAgICBlbGVtZW50cyBtdXN0IGNvbXBhcmUgZXF1YWwgKGZvciBleGFtcGxlLCAiWzEsMl0gPT0gJworICAgICAgICAgICAgICAgICcoMSwyKSIgaXNcbicKKyAgICAgICAgICAgICAgICAnICAgIGZhbHNlIGJlY2F1c2UgdGhlIHR5cGUgaXMgbm90IHRoZSBzYW1lKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgKiBDb2xsZWN0aW9ucyB0aGF0IHN1cHBvcnQgb3JkZXIgY29tcGFyaXNvbiBhcmUgb3JkZXJlZCB0aGUgJworICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgJyAgICBhcyB0aGVpciBmaXJzdCB1bmVxdWFsIGVsZW1lbnRzIChmb3IgZXhhbXBsZSwgIlsxLDIseF0gPD0gJworICAgICAgICAgICAgICAgICdbMSwyLHldIlxuJworICAgICAgICAgICAgICAgICcgICAgaGFzIHRoZSBzYW1lIHZhbHVlIGFzICJ4IDw9IHkiKS4gIElmIGEgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgICAgJ2VsZW1lbnQgZG9lc1xuJworICAgICAgICAgICAgICAgICcgICAgbm90IGV4aXN0LCB0aGUgc2hvcnRlciBjb2xsZWN0aW9uIGlzIG9yZGVyZWQgZmlyc3QgKGZvciAnCisgICAgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgJyAgICAiWzEsMl0gPCBbMSwyLDNdIiBpcyB0cnVlKS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogTWFwcGluZ3MgKGluc3RhbmNlcyBvZiAiZGljdCIpIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgJworICAgICAgICAgICAgICAgICd0aGV5XG4nCisgICAgICAgICAgICAgICAgJyAgaGF2ZSBlcXVhbCAqKGtleSwgdmFsdWUpKiBwYWlycy4gRXF1YWxpdHkgY29tcGFyaXNvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICdrZXlzIGFuZFxuJworICAgICAgICAgICAgICAgICcgIGVsZW1lbnRzIGVuZm9yY2VzIHJlZmxleGl2aXR5LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBPcmRlciBjb21wYXJpc29ucyAoIjwiLCAiPiIsICI8PSIsIGFuZCAiPj0iKSByYWlzZSAnCisgICAgICAgICAgICAgICAgJyJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBTZXRzIChpbnN0YW5jZXMgb2YgInNldCIgb3IgImZyb3plbnNldCIpIGNhbiBiZSBjb21wYXJlZCAnCisgICAgICAgICAgICAgICAgJ3dpdGhpblxuJworICAgICAgICAgICAgICAgICcgIGFuZCBhY3Jvc3MgdGhlaXIgdHlwZXMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZXkgZGVmaW5lIG9yZGVyIGNvbXBhcmlzb24gb3BlcmF0b3JzIHRvIG1lYW4gc3Vic2V0IGFuZCAnCisgICAgICAgICAgICAgICAgJ3N1cGVyc2V0XG4nCisgICAgICAgICAgICAgICAgJyAgdGVzdHMuICBUaG9zZSByZWxhdGlvbnMgZG8gbm90IGRlZmluZSB0b3RhbCBvcmRlcmluZ3MgKGZvciAnCisgICAgICAgICAgICAgICAgJ2V4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgJyAgdGhlIHR3byBzZXRzICJ7MSwyfSIgYW5kICJ7MiwzfSIgYXJlIG5vdCBlcXVhbCwgbm9yIHN1YnNldHMgJworICAgICAgICAgICAgICAgICdvZiBvbmVcbicKKyAgICAgICAgICAgICAgICAnICBhbm90aGVyLCBub3Igc3VwZXJzZXRzIG9mIG9uZSBhbm90aGVyKS4gIEFjY29yZGluZ2x5LCBzZXRzICcKKyAgICAgICAgICAgICAgICAnYXJlIG5vdFxuJworICAgICAgICAgICAgICAgICcgIGFwcHJvcHJpYXRlIGFyZ3VtZW50cyBmb3IgZnVuY3Rpb25zIHdoaWNoIGRlcGVuZCBvbiB0b3RhbCAnCisgICAgICAgICAgICAgICAgJ29yZGVyaW5nXG4nCisgICAgICAgICAgICAgICAgJyAgKGZvciBleGFtcGxlLCAibWluKCkiLCAibWF4KCkiLCBhbmQgInNvcnRlZCgpIiBwcm9kdWNlICcKKyAgICAgICAgICAgICAgICAndW5kZWZpbmVkXG4nCisgICAgICAgICAgICAgICAgJyAgcmVzdWx0cyBnaXZlbiBhIGxpc3Qgb2Ygc2V0cyBhcyBpbnB1dHMpLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICBDb21wYXJpc29uIG9mIHNldHMgZW5mb3JjZXMgcmVmbGV4aXZpdHkgb2YgaXRzIGVsZW1lbnRzLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBNb3N0IG90aGVyIGJ1aWx0LWluIHR5cGVzIGhhdmUgbm8gY29tcGFyaXNvbiBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAnaW1wbGVtZW50ZWQsXG4nCisgICAgICAgICAgICAgICAgJyAgc28gdGhleSBpbmhlcml0IHRoZSBkZWZhdWx0IGNvbXBhcmlzb24gYmVoYXZpb3IuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdVc2VyLWRlZmluZWQgY2xhc3NlcyB0aGF0IGN1c3RvbWl6ZSB0aGVpciBjb21wYXJpc29uIGJlaGF2aW9yICcKKyAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgJ2ZvbGxvdyBzb21lIGNvbnNpc3RlbmN5IHJ1bGVzLCBpZiBwb3NzaWJsZTpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogRXF1YWxpdHkgY29tcGFyaXNvbiBzaG91bGQgYmUgcmVmbGV4aXZlLiBJbiBvdGhlciB3b3JkcywgJworICAgICAgICAgICAgICAgICdpZGVudGljYWxcbicKKyAgICAgICAgICAgICAgICAnICBvYmplY3RzIHNob3VsZCBjb21wYXJlIGVxdWFsOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCBpcyB5IiBpbXBsaWVzICJ4ID09IHkiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqIENvbXBhcmlzb24gc2hvdWxkIGJlIHN5bW1ldHJpYy4gSW4gb3RoZXIgd29yZHMsIHRoZSAnCisgICAgICAgICAgICAgICAgJ2ZvbGxvd2luZ1xuJworICAgICAgICAgICAgICAgICcgIGV4cHJlc3Npb25zIHNob3VsZCBoYXZlIHRoZSBzYW1lIHJlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPT0geSIgYW5kICJ5ID09IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4ICE9IHkiIGFuZCAieSAhPSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkiIGFuZCAieSA+IHgiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDw9IHkiIGFuZCAieSA+PSB4IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBDb21wYXJpc29uIHNob3VsZCBiZSB0cmFuc2l0aXZlLiBUaGUgZm9sbG93aW5nICcKKyAgICAgICAgICAgICAgICAnKG5vbi1leGhhdXN0aXZlKVxuJworICAgICAgICAgICAgICAgICcgIGV4YW1wbGVzIGlsbHVzdHJhdGUgdGhhdDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPiB5IGFuZCB5ID4geiIgaW1wbGllcyAieCA+IHoiXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgICAgICJ4IDwgeSBhbmQgeSA8PSB6IiBpbXBsaWVzICJ4IDwgeiJcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogSW52ZXJzZSBjb21wYXJpc29uIHNob3VsZCByZXN1bHQgaW4gdGhlIGJvb2xlYW4gbmVnYXRpb24uICcKKyAgICAgICAgICAgICAgICAnSW4gb3RoZXJcbicKKyAgICAgICAgICAgICAgICAnICB3b3JkcywgdGhlIGZvbGxvd2luZyBleHByZXNzaW9ucyBzaG91bGQgaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgJ3Jlc3VsdDpcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPT0geSIgYW5kICJub3QgeCAhPSB5IlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgICAieCA8IHkiIGFuZCAibm90IHggPj0geSIgKGZvciB0b3RhbCBvcmRlcmluZylcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyAgICAgInggPiB5IiBhbmQgIm5vdCB4IDw9IHkiIChmb3IgdG90YWwgb3JkZXJpbmcpXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcgIFRoZSBsYXN0IHR3byBleHByZXNzaW9ucyBhcHBseSB0byB0b3RhbGx5IG9yZGVyZWQgJworICAgICAgICAgICAgICAgICdjb2xsZWN0aW9ucyAoZS5nLlxuJworICAgICAgICAgICAgICAgICcgIHRvIHNlcXVlbmNlcywgYnV0IG5vdCB0byBzZXRzIG9yIG1hcHBpbmdzKS4gU2VlIGFsc28gdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgInRvdGFsX29yZGVyaW5nKCkiIGRlY29yYXRvci5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1B5dGhvbiBkb2VzIG5vdCBlbmZvcmNlIHRoZXNlIGNvbnNpc3RlbmN5IHJ1bGVzLiBJbiBmYWN0LCAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdub3QtYS1udW1iZXIgdmFsdWVzIGFyZSBhbiBleGFtcGxlIGZvciBub3QgZm9sbG93aW5nIHRoZXNlICcKKyAgICAgICAgICAgICAgICAncnVsZXMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnTWVtYmVyc2hpcCB0ZXN0IG9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRvcnMgImluIiBhbmQgIm5vdCBpbiIgdGVzdCBmb3IgbWVtYmVyc2hpcC4gICJ4IGluICcKKyAgICAgICAgICAgICAgICAncyJcbicKKyAgICAgICAgICAgICAgICAnZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlICcKKyAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlLiAgInhcbicKKyAgICAgICAgICAgICAgICAnbm90IGluIHMiIHJldHVybnMgdGhlIG5lZ2F0aW9uIG9mICJ4IGluIHMiLiAgQWxsIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgJ2FuZCBzZXQgdHlwZXMgc3VwcG9ydCB0aGlzIGFzIHdlbGwgYXMgZGljdGlvbmFyeSwgZm9yIHdoaWNoICcKKyAgICAgICAgICAgICAgICAnImluIiB0ZXN0c1xuJworICAgICAgICAgICAgICAgICd3aGV0aGVyIHRoZSBkaWN0aW9uYXJ5IGhhcyBhIGdpdmVuIGtleS4gRm9yIGNvbnRhaW5lciB0eXBlcyAnCisgICAgICAgICAgICAgICAgJ3N1Y2ggYXNcbicKKyAgICAgICAgICAgICAgICAnbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG4nCisgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgJworICAgICAgICAgICAgICAgICdmb3IgZSBpblxuJworICAgICAgICAgICAgICAgICd5KSIuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3IgdGhlIHN0cmluZyBhbmQgYnl0ZXMgdHlwZXMsICJ4IGluIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgJworICAgICAgICAgICAgICAgICdpZiAqeCogaXNcbicKKyAgICAgICAgICAgICAgICAnYSBzdWJzdHJpbmcgb2YgKnkqLiAgQW4gZXF1aXZhbGVudCB0ZXN0IGlzICJ5LmZpbmQoeCkgIT0gJworICAgICAgICAgICAgICAgICctMSIuICBFbXB0eVxuJworICAgICAgICAgICAgICAgICdzdHJpbmdzIGFyZSBhbHdheXMgY29uc2lkZXJlZCB0byBiZSBhIHN1YnN0cmluZyBvZiBhbnkgb3RoZXIgJworICAgICAgICAgICAgICAgICdzdHJpbmcsXG4nCisgICAgICAgICAgICAgICAgJ3NvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiAnCisgICAgICAgICAgICAgICAgJ21ldGhvZCwgInhcbicKKyAgICAgICAgICAgICAgICAnaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiAieS5fX2NvbnRhaW5zX18oeCkiIGlzIHRydWUuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdGb3IgdXNlci1kZWZpbmVkIGNsYXNzZXMgd2hpY2ggZG8gbm90IGRlZmluZSAiX19jb250YWluc19fKCkiICcKKyAgICAgICAgICAgICAgICAnYnV0IGRvXG4nCisgICAgICAgICAgICAgICAgJ2RlZmluZSAiX19pdGVyX18oKSIsICJ4IGluIHkiIGlzIHRydWUgaWYgc29tZSB2YWx1ZSAieiIgd2l0aCAnCisgICAgICAgICAgICAgICAgJyJ4ID09IHoiXG4nCisgICAgICAgICAgICAgICAgJ2lzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyAnCisgICAgICAgICAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAgICAgICAgICdkdXJpbmcgdGhlIGl0ZXJhdGlvbiwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0xhc3RseSwgdGhlIG9sZC1zdHlsZSBpdGVyYXRpb24gcHJvdG9jb2wgaXMgdHJpZWQ6IGlmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhICcKKyAgICAgICAgICAgICAgICAnbm9uLVxuJworICAgICAgICAgICAgICAgICduZWdhdGl2ZSBpbnRlZ2VyIGluZGV4ICppKiBzdWNoIHRoYXQgInggPT0geVtpXSIsIGFuZCBhbGwgJworICAgICAgICAgICAgICAgICdsb3dlclxuJworICAgICAgICAgICAgICAgICdpbnRlZ2VyIGluZGljZXMgZG8gbm90IHJhaXNlICJJbmRleEVycm9yIiBleGNlcHRpb24uICAoSWYgYW55ICcKKyAgICAgICAgICAgICAgICAnb3RoZXJcbicKKyAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCAnCisgICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbikuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3IgIm5vdCBpbiIgaXMgZGVmaW5lZCB0byBoYXZlIHRoZSBpbnZlcnNlIHRydWUgJworICAgICAgICAgICAgICAgICd2YWx1ZSBvZlxuJworICAgICAgICAgICAgICAgICciaW4iLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0lkZW50aXR5IGNvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgb3BlcmF0b3JzICJpcyIgYW5kICJpcyBub3QiIHRlc3QgZm9yIG9iamVjdCBpZGVudGl0eTogInggJworICAgICAgICAgICAgICAgICdpcyB5IiBpc1xuJworICAgICAgICAgICAgICAgICd0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiBhbmQgKnkqIGFyZSB0aGUgc2FtZSBvYmplY3QuICBPYmplY3QgJworICAgICAgICAgICAgICAgICdpZGVudGl0eVxuJworICAgICAgICAgICAgICAgICdpcyBkZXRlcm1pbmVkIHVzaW5nIHRoZSAiaWQoKSIgZnVuY3Rpb24uICAieCBpcyBub3QgeSIgeWllbGRzICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJ2ludmVyc2UgdHJ1dGggdmFsdWUuIFs0XVxuJywKKyAnY29tcG91bmQnOiAnXG4nCisgICAgICAgICAgICAgJ0NvbXBvdW5kIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29tcG91bmQgc3RhdGVtZW50cyBjb250YWluIChncm91cHMgb2YpIG90aGVyIHN0YXRlbWVudHM7IHRoZXkgJworICAgICAgICAgICAgICdhZmZlY3RcbicKKyAgICAgICAgICAgICAnb3IgY29udHJvbCB0aGUgZXhlY3V0aW9uIG9mIHRob3NlIG90aGVyIHN0YXRlbWVudHMgaW4gc29tZSB3YXkuICAnCisgICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAgJ2dlbmVyYWwsIGNvbXBvdW5kIHN0YXRlbWVudHMgc3BhbiBtdWx0aXBsZSBsaW5lcywgYWx0aG91Z2ggaW4gJworICAgICAgICAgICAgICdzaW1wbGVcbicKKyAgICAgICAgICAgICAnaW5jYXJuYXRpb25zIGEgd2hvbGUgY29tcG91bmQgc3RhdGVtZW50IG1heSBiZSBjb250YWluZWQgaW4gb25lICcKKyAgICAgICAgICAgICAnbGluZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiaWYiLCAid2hpbGUiIGFuZCAiZm9yIiBzdGF0ZW1lbnRzIGltcGxlbWVudCB0cmFkaXRpb25hbCAnCisgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAnZmxvdyBjb25zdHJ1Y3RzLiAgInRyeSIgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgJworICAgICAgICAgICAgICdjbGVhbnVwXG4nCisgICAgICAgICAgICAgJ2NvZGUgZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50cywgd2hpbGUgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgJworICAgICAgICAgICAgICdhbGxvd3MgdGhlXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiBpbml0aWFsaXphdGlvbiBhbmQgZmluYWxpemF0aW9uIGNvZGUgYXJvdW5kIGEgYmxvY2sgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdjb2RlLiAgRnVuY3Rpb24gYW5kIGNsYXNzIGRlZmluaXRpb25zIGFyZSBhbHNvIHN5bnRhY3RpY2FsbHkgJworICAgICAgICAgICAgICdjb21wb3VuZFxuJworICAgICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQSBjb21wb3VuZCBzdGF0ZW1lbnQgY29uc2lzdHMgb2Ygb25lIG9yIG1vcmUgJ2NsYXVzZXMuJyAgQSAiCisgICAgICAgICAgICAgJ2NsYXVzZVxuJworICAgICAgICAgICAgICJjb25zaXN0cyBvZiBhIGhlYWRlciBhbmQgYSAnc3VpdGUuJyAgVGhlIGNsYXVzZSBoZWFkZXJzIG9mIGFcbiIKKyAgICAgICAgICAgICAncGFydGljdWxhciBjb21wb3VuZCBzdGF0ZW1lbnQgYXJlIGFsbCBhdCB0aGUgc2FtZSBpbmRlbnRhdGlvbiAnCisgICAgICAgICAgICAgJ2xldmVsLlxuJworICAgICAgICAgICAgICdFYWNoIGNsYXVzZSBoZWFkZXIgYmVnaW5zIHdpdGggYSB1bmlxdWVseSBpZGVudGlmeWluZyBrZXl3b3JkICcKKyAgICAgICAgICAgICAnYW5kIGVuZHNcbicKKyAgICAgICAgICAgICAnd2l0aCBhIGNvbG9uLiAgQSBzdWl0ZSBpcyBhIGdyb3VwIG9mIHN0YXRlbWVudHMgY29udHJvbGxlZCBieSBhXG4nCisgICAgICAgICAgICAgJ2NsYXVzZS4gIEEgc3VpdGUgY2FuIGJlIG9uZSBvciBtb3JlIHNlbWljb2xvbi1zZXBhcmF0ZWQgc2ltcGxlXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudHMgb24gdGhlIHNhbWUgbGluZSBhcyB0aGUgaGVhZGVyLCBmb2xsb3dpbmcgdGhlICcKKyAgICAgICAgICAgICAiaGVhZGVyJ3NcbiIKKyAgICAgICAgICAgICAnY29sb24sIG9yIGl0IGNhbiBiZSBvbmUgb3IgbW9yZSBpbmRlbnRlZCBzdGF0ZW1lbnRzIG9uICcKKyAgICAgICAgICAgICAnc3Vic2VxdWVudFxuJworICAgICAgICAgICAgICdsaW5lcy4gIE9ubHkgdGhlIGxhdHRlciBmb3JtIG9mIGEgc3VpdGUgY2FuIGNvbnRhaW4gbmVzdGVkICcKKyAgICAgICAgICAgICAnY29tcG91bmRcbicKKyAgICAgICAgICAgICAic3RhdGVtZW50czsgdGhlIGZvbGxvd2luZyBpcyBpbGxlZ2FsLCBtb3N0bHkgYmVjYXVzZSBpdCB3b3VsZG4ndCAiCisgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgJ2NsZWFyIHRvIHdoaWNoICJpZiIgY2xhdXNlIGEgZm9sbG93aW5nICJlbHNlIiBjbGF1c2Ugd291bGQgJworICAgICAgICAgICAgICdiZWxvbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpZiB0ZXN0MTogaWYgdGVzdDI6IHByaW50KHgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCB0aGUgc2VtaWNvbG9uIGJpbmRzIHRpZ2h0ZXIgdGhhbiB0aGUgY29sb24gaW4gJworICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgJ2NvbnRleHQsIHNvIHRoYXQgaW4gdGhlIGZvbGxvd2luZyBleGFtcGxlLCBlaXRoZXIgYWxsIG9yIG5vbmUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnInByaW50KCkiIGNhbGxzIGFyZSBleGVjdXRlZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGlmIHggPCB5IDwgejogcHJpbnQoeCk7IHByaW50KHkpOyBwcmludCh6KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU3VtbWFyaXppbmc6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjb21wb3VuZF9zdG10IDo6PSBpZl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgd2hpbGVfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGZvcl9zdG10XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgdHJ5X3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCB3aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBmdW5jZGVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgIHwgY2xhc3NkZWZcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY193aXRoX3N0bXRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgfCBhc3luY19mb3Jfc3RtdFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICB8IGFzeW5jX2Z1bmNkZWZcbicKKyAgICAgICAgICAgICAnICAgc3VpdGUgICAgICAgICA6Oj0gc3RtdF9saXN0IE5FV0xJTkUgfCBORVdMSU5FIElOREVOVCAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudCsgREVERU5UXG4nCisgICAgICAgICAgICAgJyAgIHN0YXRlbWVudCAgICAgOjo9IHN0bXRfbGlzdCBORVdMSU5FIHwgY29tcG91bmRfc3RtdFxuJworICAgICAgICAgICAgICcgICBzdG10X2xpc3QgICAgIDo6PSBzaW1wbGVfc3RtdCAoIjsiIHNpbXBsZV9zdG10KSogWyI7Il1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGUgdGhhdCBzdGF0ZW1lbnRzIGFsd2F5cyBlbmQgaW4gYSAiTkVXTElORSIgcG9zc2libHkgZm9sbG93ZWQgJworICAgICAgICAgICAgICdieSBhXG4nCisgICAgICAgICAgICAgJyJERURFTlQiLiAgQWxzbyBub3RlIHRoYXQgb3B0aW9uYWwgY29udGludWF0aW9uIGNsYXVzZXMgYWx3YXlzICcKKyAgICAgICAgICAgICAnYmVnaW5cbicKKyAgICAgICAgICAgICAnd2l0aCBhIGtleXdvcmQgdGhhdCBjYW5ub3Qgc3RhcnQgYSBzdGF0ZW1lbnQsIHRodXMgdGhlcmUgYXJlIG5vXG4nCisgICAgICAgICAgICAgJ2FtYmlndWl0aWVzICh0aGUgXCdkYW5nbGluZyAiZWxzZSJcJyBwcm9ibGVtIGlzIHNvbHZlZCBpbiBQeXRob24gJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICdyZXF1aXJpbmcgbmVzdGVkICJpZiIgc3RhdGVtZW50cyB0byBiZSBpbmRlbnRlZCkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZm9ybWF0dGluZyBvZiB0aGUgZ3JhbW1hciBydWxlcyBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zICcKKyAgICAgICAgICAgICAncGxhY2VzXG4nCisgICAgICAgICAgICAgJ2VhY2ggY2xhdXNlIG9uIGEgc2VwYXJhdGUgbGluZSBmb3IgY2xhcml0eS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zIG9uZVxuJworICAgICAgICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gJworICAgICAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJ2ZvciB0aGUgZGVmaW5pdGlvbiBvZiB0cnVlIGFuZCBmYWxzZSk7IHRoZW4gdGhhdCBzdWl0ZSBpcyAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVkXG4nCisgICAgICAgICAgICAgJyhhbmQgbm8gb3RoZXIgcGFydCBvZiB0aGUgImlmIiBzdGF0ZW1lbnQgaXMgZXhlY3V0ZWQgb3IgJworICAgICAgICAgICAgICdldmFsdWF0ZWQpLlxuJworICAgICAgICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsICcKKyAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAncHJlc2VudCwgaXMgZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJ3aGlsZSIgc3RhdGVtZW50IGlzIHVzZWQgZm9yIHJlcGVhdGVkIGV4ZWN1dGlvbiBhcyBsb25nIGFzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0cnVlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2hpbGVfc3RtdCA6Oj0gIndoaWxlIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoaXMgcmVwZWF0ZWRseSB0ZXN0cyB0aGUgZXhwcmVzc2lvbiBhbmQsIGlmIGl0IGlzIHRydWUsICcKKyAgICAgICAgICAgICAnZXhlY3V0ZXMgdGhlXG4nCisgICAgICAgICAgICAgJ2ZpcnN0IHN1aXRlOyBpZiB0aGUgZXhwcmVzc2lvbiBpcyBmYWxzZSAod2hpY2ggbWF5IGJlIHRoZSBmaXJzdCAnCisgICAgICAgICAgICAgJ3RpbWVcbicKKyAgICAgICAgICAgICAnaXQgaXMgdGVzdGVkKSB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmIHByZXNlbnQsIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWRcbicKKyAgICAgICAgICAgICAnYW5kIHRoZSBsb29wIHRlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgZ29lcyAnCisgICAgICAgICAgICAgJ2JhY2tcbicKKyAgICAgICAgICAgICAndG8gdGVzdGluZyB0aGUgZXhwcmVzc2lvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICcoc3VjaCBhcyBhIHN0cmluZywgdHVwbGUgb3IgbGlzdCkgb3Igb3RoZXIgaXRlcmFibGUgb2JqZWN0OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZm9yX3N0bXQgOjo9ICJmb3IiIHRhcmdldF9saXN0ICJpbiIgZXhwcmVzc2lvbl9saXN0ICI6IiAnCisgICAgICAgICAgICAgJ3N1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBleHByZXNzaW9uIGxpc3QgaXMgZXZhbHVhdGVkIG9uY2U7IGl0IHNob3VsZCB5aWVsZCBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhYmxlXG4nCisgICAgICAgICAgICAgJ29iamVjdC4gIEFuIGl0ZXJhdG9yIGlzIGNyZWF0ZWQgZm9yIHRoZSByZXN1bHQgb2YgdGhlXG4nCisgICAgICAgICAgICAgJyJleHByZXNzaW9uX2xpc3QiLiAgVGhlIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgb25jZSBmb3IgZWFjaCAnCisgICAgICAgICAgICAgJ2l0ZW1cbicKKyAgICAgICAgICAgICAncHJvdmlkZWQgYnkgdGhlIGl0ZXJhdG9yLCBpbiB0aGUgb3JkZXIgcmV0dXJuZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAnaXRlcmF0b3IuICBFYWNoXG4nCisgICAgICAgICAgICAgJ2l0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkICcKKyAgICAgICAgICAgICAncnVsZXNcbicKKyAgICAgICAgICAgICAnZm9yIGFzc2lnbm1lbnRzIChzZWUgQXNzaWdubWVudCBzdGF0ZW1lbnRzKSwgYW5kIHRoZW4gdGhlIHN1aXRlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuICBXaGVuIHRoZSBpdGVtcyBhcmUgZXhoYXVzdGVkICh3aGljaCBpcyBpbW1lZGlhdGVseSAnCisgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgJ3NlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiksXG4nCisgICAgICAgICAgICAgJ3RoZSBzdWl0ZSBpbiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgZXhlY3V0ZWQsIGFuZCB0aGUgJworICAgICAgICAgICAgICdsb29wXG4nCisgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSAnCisgICAgICAgICAgICAgJ2xvb3BcbicKKyAgICAgICAgICAgICAnd2l0aG91dCBleGVjdXRpbmcgdGhlICJlbHNlIiBjbGF1c2VcJ3Mgc3VpdGUuICBBICJjb250aW51ZSIgJworICAgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHNraXBzIHRoZSByZXN0IG9mIHRoZSBzdWl0ZSBhbmQgJworICAgICAgICAgICAgICdjb250aW51ZXNcbicKKyAgICAgICAgICAgICAnd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vICcKKyAgICAgICAgICAgICAnbmV4dFxuJworICAgICAgICAgICAgICdpdGVtLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvci1sb29wIG1ha2VzIGFzc2lnbm1lbnRzIHRvIHRoZSB2YXJpYWJsZXMocykgaW4gdGhlIHRhcmdldCAnCisgICAgICAgICAgICAgJ2xpc3QuXG4nCisgICAgICAgICAgICAgJ1RoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzICcKKyAgICAgICAgICAgICAnaW5jbHVkaW5nXG4nCisgICAgICAgICAgICAgJ3Rob3NlIG1hZGUgaW4gdGhlIHN1aXRlIG9mIHRoZSBmb3ItbG9vcDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZvciBpIGluIHJhbmdlKDEwKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHByaW50KGkpXG4nCisgICAgICAgICAgICAgJyAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAgIyBiZWNhdXNlIGkgd2lsbCBiZSBvdmVyd3JpdHRlbiB3aXRoICcKKyAgICAgICAgICAgICAndGhlIG5leHRcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOYW1lcyBpbiB0aGUgdGFyZ2V0IGxpc3QgYXJlIG5vdCBkZWxldGVkIHdoZW4gdGhlIGxvb3AgaXMgJworICAgICAgICAgICAgICdmaW5pc2hlZCxcbicKKyAgICAgICAgICAgICAnYnV0IGlmIHRoZSBzZXF1ZW5jZSBpcyBlbXB0eSwgdGhleSB3aWxsIG5vdCBoYXZlIGJlZW4gYXNzaWduZWQgJworICAgICAgICAgICAgICd0byBhdFxuJworICAgICAgICAgICAgICdhbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICJpdGVyYXRvciBvZiBpbnRlZ2VycyBzdWl0YWJsZSB0byBlbXVsYXRlIHRoZSBlZmZlY3Qgb2YgUGFzY2FsJ3MgIgorICAgICAgICAgICAgICciZm9yIGlcbicKKyAgICAgICAgICAgICAnOj0gYSB0byBiIGRvIjsgZS5nLiwgImxpc3QocmFuZ2UoMykpIiByZXR1cm5zIHRoZSBsaXN0ICJbMCwgMSwgJworICAgICAgICAgICAgICcyXSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlOiBUaGVyZSBpcyBhIHN1YnRsZXR5IHdoZW4gdGhlIHNlcXVlbmNlIGlzIGJlaW5nIG1vZGlmaWVkIGJ5ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgbG9vcCAodGhpcyBjYW4gb25seSBvY2N1ciBmb3IgbXV0YWJsZSBzZXF1ZW5jZXMsIGkuZS4gbGlzdHMpLiAgJworICAgICAgICAgICAgICdBblxuJworICAgICAgICAgICAgICcgIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCAnCisgICAgICAgICAgICAgJ25leHQsXG4nCisgICAgICAgICAgICAgJyAgYW5kIHRoaXMgaXMgaW5jcmVtZW50ZWQgb24gZWFjaCBpdGVyYXRpb24uICBXaGVuIHRoaXMgY291bnRlciAnCisgICAgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICAgICcgIHJlYWNoZWQgdGhlIGxlbmd0aCBvZiB0aGUgc2VxdWVuY2UgdGhlIGxvb3AgdGVybWluYXRlcy4gIFRoaXMgJworICAgICAgICAgICAgICdtZWFuc1xuJworICAgICAgICAgICAgICcgIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gJworICAgICAgICAgICAgICdmcm9tIHRoZVxuJworICAgICAgICAgICAgICcgIHNlcXVlbmNlLCB0aGUgbmV4dCBpdGVtIHdpbGwgYmUgc2tpcHBlZCAoc2luY2UgaXQgZ2V0cyB0aGUgJworICAgICAgICAgICAgICdpbmRleCBvZlxuJworICAgICAgICAgICAgICcgIHRoZSBjdXJyZW50IGl0ZW0gd2hpY2ggaGFzIGFscmVhZHkgYmVlbiB0cmVhdGVkKS4gIExpa2V3aXNlLCAnCisgICAgICAgICAgICAgJ2lmIHRoZVxuJworICAgICAgICAgICAgICcgIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgY3VycmVudCBpdGVtIHdpbGwgYmUgdHJlYXRlZCBhZ2FpbiB0aGUgbmV4dCB0aW1lIHRocm91Z2ggdGhlICcKKyAgICAgICAgICAgICAnbG9vcC5cbicKKyAgICAgICAgICAgICAnICBUaGlzIGNhbiBsZWFkIHRvIG5hc3R5IGJ1Z3MgdGhhdCBjYW4gYmUgYXZvaWRlZCBieSBtYWtpbmcgYVxuJworICAgICAgICAgICAgICcgIHRlbXBvcmFyeSBjb3B5IHVzaW5nIGEgc2xpY2Ugb2YgdGhlIHdob2xlIHNlcXVlbmNlLCBlLmcuLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICBmb3IgeCBpbiBhWzpdOlxuJworICAgICAgICAgICAgICcgICAgICAgICBpZiB4IDwgMDogYS5yZW1vdmUoeClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgInRyeSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnQgc3BlY2lmaWVzIGV4Y2VwdGlvbiBoYW5kbGVycyBhbmQvb3IgY2xlYW51cCAnCisgICAgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAgICAnZm9yIGEgZ3JvdXAgb2Ygc3RhdGVtZW50czpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4nCisgICAgICAgICAgICAgJyAgIHRyeTFfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgKCJleGNlcHQiIFtleHByZXNzaW9uIFsiYXMiIGlkZW50aWZpZXJdXSAiOiIgJworICAgICAgICAgICAgICdzdWl0ZSkrXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJlbHNlIiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgWyJmaW5hbGx5IiAiOiIgc3VpdGVdXG4nCisgICAgICAgICAgICAgJyAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgImZpbmFsbHkiICI6IiBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gJworICAgICAgICAgICAgICdXaGVuIG5vXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnMgaW4gdGhlICJ0cnkiIGNsYXVzZSwgbm8gZXhjZXB0aW9uIGhhbmRsZXIgaXNcbicKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoICcKKyAgICAgICAgICAgICAnZm9yIGFuXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBoYW5kbGVyIGlzIHN0YXJ0ZWQuICBUaGlzIHNlYXJjaCBpbnNwZWN0cyB0aGUgZXhjZXB0ICcKKyAgICAgICAgICAgICAnY2xhdXNlc1xuJworICAgICAgICAgICAgICdpbiB0dXJuIHVudGlsIG9uZSBpcyBmb3VuZCB0aGF0IG1hdGNoZXMgdGhlIGV4Y2VwdGlvbi4gIEFuICcKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbi1cbicKKyAgICAgICAgICAgICAnbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG4nCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbi4gIEZvciBhbiBleGNlcHQgY2xhdXNlIHdpdGggYW4gZXhwcmVzc2lvbiwgdGhhdCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlICcKKyAgICAgICAgICAgICAncmVzdWx0aW5nXG4nCisgICAgICAgICAgICAgJ29iamVjdCBpcyAiY29tcGF0aWJsZSIgd2l0aCB0aGUgZXhjZXB0aW9uLiAgQW4gb2JqZWN0IGlzICcKKyAgICAgICAgICAgICAnY29tcGF0aWJsZVxuJworICAgICAgICAgICAgICd3aXRoIGFuIGV4Y2VwdGlvbiBpZiBpdCBpcyB0aGUgY2xhc3Mgb3IgYSBiYXNlIGNsYXNzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICdvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICdoYW5kbGVyIGNvbnRpbnVlcyBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb24gdGhlIGludm9jYXRpb24gJworICAgICAgICAgICAgICdzdGFjay5cbicKKyAgICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0ICcKKyAgICAgICAgICAgICAnY2xhdXNlXG4nCisgICAgICAgICAgICAgJ3JhaXNlcyBhbiBleGNlcHRpb24sIHRoZSBvcmlnaW5hbCBzZWFyY2ggZm9yIGEgaGFuZGxlciBpcyAnCisgICAgICAgICAgICAgJ2NhbmNlbGVkIGFuZFxuJworICAgICAgICAgICAgICdhIHNlYXJjaCBzdGFydHMgZm9yIHRoZSBuZXcgZXhjZXB0aW9uIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlICcKKyAgICAgICAgICAgICAnYW5kIG9uXG4nCisgICAgICAgICAgICAgJ3RoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICAncmFpc2VkXG4nCisgICAgICAgICAgICAgJ3RoZSBleGNlcHRpb24pLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnV2hlbiBhIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2UgaXMgZm91bmQsIHRoZSBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdhc3NpZ25lZCB0b1xuJworICAgICAgICAgICAgICd0aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0ICcKKyAgICAgICAgICAgICAnY2xhdXNlLCBpZlxuJworICAgICAgICAgICAgICJwcmVzZW50LCBhbmQgdGhlIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZC4gIEFsbCBleGNlcHRcbiIKKyAgICAgICAgICAgICAnY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzICcKKyAgICAgICAgICAgICAnYmxvY2sgaXNcbicKKyAgICAgICAgICAgICAncmVhY2hlZCwgZXhlY3V0aW9uIGNvbnRpbnVlcyBub3JtYWxseSBhZnRlciB0aGUgZW50aXJlIHRyeSAnCisgICAgICAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnKFRoaXMgbWVhbnMgdGhhdCBpZiB0d28gbmVzdGVkIGhhbmRsZXJzIGV4aXN0IGZvciB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbixcbicKKyAgICAgICAgICAgICAnYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdvdXRlciBoYW5kbGVyIHdpbGwgbm90IGhhbmRsZSB0aGUgZXhjZXB0aW9uLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIGhhcyBiZWVuIGFzc2lnbmVkIHVzaW5nICJhcyB0YXJnZXQiLCBpdCBpcyAnCisgICAgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAgICAnYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdCBFIGFzIE46XG4nCisgICAgICAgICAgICAgJyAgICAgICBmb29cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3dhcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBleGNlcHQgRSBhcyBOOlxuJworICAgICAgICAgICAgICcgICAgICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgICAgIGZvb1xuJworICAgICAgICAgICAgICcgICAgICAgZmluYWxseTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBkZWwgTlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyBtZWFucyB0aGUgZXhjZXB0aW9uIG11c3QgYmUgYXNzaWduZWQgdG8gYSBkaWZmZXJlbnQgbmFtZSB0byAnCisgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgJ2FibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSAnCisgICAgICAgICAgICAgJ2NsZWFyZWRcbicKKyAgICAgICAgICAgICAnYmVjYXVzZSB3aXRoIHRoZSB0cmFjZWJhY2sgYXR0YWNoZWQgdG8gdGhlbSwgdGhleSBmb3JtIGEgJworICAgICAgICAgICAgICdyZWZlcmVuY2VcbicKKyAgICAgICAgICAgICAnY3ljbGUgd2l0aCB0aGUgc3RhY2sgZnJhbWUsIGtlZXBpbmcgYWxsIGxvY2FscyBpbiB0aGF0IGZyYW1lICcKKyAgICAgICAgICAgICAnYWxpdmVcbicKKyAgICAgICAgICAgICAndW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkJlZm9yZSBhbiBleGNlcHQgY2xhdXNlJ3Mgc3VpdGUgaXMgZXhlY3V0ZWQsIGRldGFpbHMgYWJvdXQgdGhlXG4iCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCAnCisgICAgICAgICAgICAgJ3ZpYVxuJworICAgICAgICAgICAgICcic3lzLmV4Y19pbmZvKCkiLiAic3lzLmV4Y19pbmZvKCkiIHJldHVybnMgYSAzLXR1cGxlIGNvbnNpc3RpbmcgJworICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9uIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIGFuZCBhIHRyYWNlYmFjayBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAncHJvZ3JhbSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkLiAgInN5cy5leGNfaW5mbygpIiB2YWx1ZXMgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAncmVzdG9yZWQgdG8gdGhlaXIgcHJldmlvdXMgdmFsdWVzIChiZWZvcmUgdGhlIGNhbGwpIHdoZW4gJworICAgICAgICAgICAgICdyZXR1cm5pbmdcbicKKyAgICAgICAgICAgICAnZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3B0aW9uYWwgImVsc2UiIGNsYXVzZSBpcyBleGVjdXRlZCBpZiBhbmQgd2hlbiBjb250cm9sIGZsb3dzICcKKyAgICAgICAgICAgICAnb2ZmXG4nCisgICAgICAgICAgICAgJ3RoZSBlbmQgb2YgdGhlICJ0cnkiIGNsYXVzZS4gWzJdIEV4Y2VwdGlvbnMgaW4gdGhlICJlbHNlIiBjbGF1c2UgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgImZpbmFsbHkiIGlzIHByZXNlbnQsIGl0IHNwZWNpZmllcyBhIFwnY2xlYW51cFwnIGhhbmRsZXIuICAnCisgICAgICAgICAgICAgJ1RoZSAidHJ5IlxuJworICAgICAgICAgICAgICdjbGF1c2UgaXMgZXhlY3V0ZWQsIGluY2x1ZGluZyBhbnkgImV4Y2VwdCIgYW5kICJlbHNlIiBjbGF1c2VzLiAgJworICAgICAgICAgICAgICdJZiBhblxuJworICAgICAgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaXMgdGVtcG9yYXJpbHkgc2F2ZWQuIFRoZSAiZmluYWxseSIgY2xhdXNlIGlzICcKKyAgICAgICAgICAgICAnZXhlY3V0ZWQuICBJZlxuJworICAgICAgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlLiAgSWYgdGhlICJmaW5hbGx5IiBjbGF1c2UgcmFpc2VzIGFub3RoZXIgZXhjZXB0aW9uLCB0aGUgJworICAgICAgICAgICAgICdzYXZlZFxuJworICAgICAgICAgICAgICdleGNlcHRpb24gaXMgc2V0IGFzIHRoZSBjb250ZXh0IG9mIHRoZSBuZXcgZXhjZXB0aW9uLiBJZiB0aGUgJworICAgICAgICAgICAgICciZmluYWxseSJcbicKKyAgICAgICAgICAgICAnY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvblxuJworICAgICAgICAgICAgICdpcyBkaXNjYXJkZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICA+Pj4gZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHJldHVybiA0MlxuJworICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAnICAgPj4+IGYoKVxuJworICAgICAgICAgICAgICcgICA0MlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV4Y2VwdGlvbiBpbmZvcm1hdGlvbiBpcyBub3QgYXZhaWxhYmxlIHRvIHRoZSBwcm9ncmFtICcKKyAgICAgICAgICAgICAnZHVyaW5nXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gYSAicmV0dXJuIiwgImJyZWFrIiBvciAiY29udGludWUiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcidHJ5IiBzdWl0ZSBvZiBhICJ0cnkiLi4uImZpbmFsbHkiIHN0YXRlbWVudCwgdGhlICJmaW5hbGx5IiAnCisgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyAnCisgICAgICAgICAgICAgJ2lsbGVnYWwgaW5cbicKKyAgICAgICAgICAgICAndGhlICJmaW5hbGx5IiBjbGF1c2UuIChUaGUgcmVhc29uIGlzIGEgcHJvYmxlbSB3aXRoIHRoZSBjdXJyZW50XG4nCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlICcKKyAgICAgICAgICAgICAnZnV0dXJlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICcKKyAgICAgICAgICAgICAnInJldHVybiJcbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50IGV4ZWN1dGVkLiAgU2luY2UgdGhlICJmaW5hbGx5IiBjbGF1c2UgYWx3YXlzIGV4ZWN1dGVzLCAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnInJldHVybiIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSAiZmluYWxseSIgY2xhdXNlIHdpbGwgYWx3YXlzICcKKyAgICAgICAgICAgICAnYmUgdGhlXG4nCisgICAgICAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGRlZiBmb28oKTpcbicKKyAgICAgICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAndHJ5J1xuIgorICAgICAgICAgICAgICcgICAuLi4gICAgIGZpbmFsbHk6XG4nCisgICAgICAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgJyAgID4+PiBmb28oKVxuJworICAgICAgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gZXhjZXB0aW9ucyBjYW4gYmUgZm91bmQgaW4gc2VjdGlvblxuJworICAgICAgICAgICAgICdFeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvICcKKyAgICAgICAgICAgICAnZ2VuZXJhdGVcbicKKyAgICAgICAgICAgICAnZXhjZXB0aW9ucyBtYXkgYmUgZm91bmQgaW4gc2VjdGlvbiBUaGUgcmFpc2Ugc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudCBpcyB1c2VkIHRvIHdyYXAgdGhlIGV4ZWN1dGlvbiBvZiBhIGJsb2NrICcKKyAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICdtZXRob2RzIGRlZmluZWQgYnkgYSBjb250ZXh0IG1hbmFnZXIgKHNlZSBzZWN0aW9uIFdpdGggJworICAgICAgICAgICAgICdTdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnQ29udGV4dCBNYW5hZ2VycykuIFRoaXMgYWxsb3dzIGNvbW1vbiAnCisgICAgICAgICAgICAgJyJ0cnkiLi4uImV4Y2VwdCIuLi4iZmluYWxseSJcbicKKyAgICAgICAgICAgICAndXNhZ2UgcGF0dGVybnMgdG8gYmUgZW5jYXBzdWxhdGVkIGZvciBjb252ZW5pZW50IHJldXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgd2l0aF9zdG10IDo6PSAid2l0aCIgd2l0aF9pdGVtICgiLCIgd2l0aF9pdGVtKSogIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIHdpdGhfaXRlbSA6Oj0gZXhwcmVzc2lvbiBbImFzIiB0YXJnZXRdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgZXhlY3V0aW9uIG9mIHRoZSAid2l0aCIgc3RhdGVtZW50IHdpdGggb25lICJpdGVtIiBwcm9jZWVkcyAnCisgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgJ2ZvbGxvd3M6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcxLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgJworICAgICAgICAgICAgICcid2l0aF9pdGVtIilcbicKKyAgICAgICAgICAgICAnICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFRoZSBjb250ZXh0IG1hbmFnZXJcJ3MgIl9fZXhpdF9fKCkiIGlzIGxvYWRlZCBmb3IgbGF0ZXIgdXNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMy4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19lbnRlcl9fKCkiIG1ldGhvZCBpcyBpbnZva2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlIGZyb20gIl9fZW50ZXJfXygpIiBpcyBhc3NpZ25lZCB0byBpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgJworICAgICAgICAgICAgICciX19lbnRlcl9fKCkiXG4nCisgICAgICAgICAgICAgJyAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCAnCisgICAgICAgICAgICAgJ2Fsd2F5cyBiZVxuJworICAgICAgICAgICAgICcgICAgIGNhbGxlZC4gVGh1cywgaWYgYW4gZXJyb3Igb2NjdXJzIGR1cmluZyB0aGUgYXNzaWdubWVudCB0byAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICAgIHRhcmdldCBsaXN0LCBpdCB3aWxsIGJlIHRyZWF0ZWQgdGhlIHNhbWUgYXMgYW4gZXJyb3IgJworICAgICAgICAgICAgICdvY2N1cnJpbmdcbicKKyAgICAgICAgICAgICAnICAgICB3aXRoaW4gdGhlIHN1aXRlIHdvdWxkIGJlLiBTZWUgc3RlcCA2IGJlbG93LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNS4gVGhlIHN1aXRlIGlzIGV4ZWN1dGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsICcKKyAgICAgICAgICAgICAndGhyZWVcbicKKyAgICAgICAgICAgICAnICAgIk5vbmUiIGFyZ3VtZW50cyBhcmUgc3VwcGxpZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBJZiB0aGUgc3VpdGUgd2FzIGV4aXRlZCBkdWUgdG8gYW4gZXhjZXB0aW9uLCBhbmQgdGhlIHJldHVybiAnCisgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgJyAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgICAncmVyYWlzZWQuXG4nCisgICAgICAgICAgICAgJyAgIElmIHRoZSByZXR1cm4gdmFsdWUgd2FzIHRydWUsIHRoZSBleGNlcHRpb24gaXMgc3VwcHJlc3NlZCwgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0aW9uIGNvbnRpbnVlcyB3aXRoIHRoZSBzdGF0ZW1lbnQgZm9sbG93aW5nIHRoZSAid2l0aCJcbicKKyAgICAgICAgICAgICAnICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgdGhlIHN1aXRlIHdhcyBleGl0ZWQgZm9yIGFueSByZWFzb24gb3RoZXIgdGhhbiBhbiAnCisgICAgICAgICAgICAgJ2V4Y2VwdGlvbiwgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybiB2YWx1ZSBmcm9tICJfX2V4aXRfXygpIiBpcyBpZ25vcmVkLCBhbmQgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAncHJvY2VlZHNcbicKKyAgICAgICAgICAgICAnICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1dpdGggbW9yZSB0aGFuIG9uZSBpdGVtLCB0aGUgY29udGV4dCBtYW5hZ2VycyBhcmUgcHJvY2Vzc2VkIGFzICcKKyAgICAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAgICAnbXVsdGlwbGUgIndpdGgiIHN0YXRlbWVudHMgd2VyZSBuZXN0ZWQ6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhLCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgIHN1aXRlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhOlxuJworICAgICAgICAgICAgICcgICAgICAgd2l0aCBCKCkgYXMgYjpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBzdWl0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3IgbXVsdGlwbGUgY29udGV4dCAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgUHl0aG9uICcKKyAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNkZWYgICAgICAgICAgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvcnMgICAgICAgICAgICAgIDo6PSBkZWNvcmF0b3IrXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvciAgICAgICAgICAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiAnCisgICAgICAgICAgICAgJ1thcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbicKKyAgICAgICAgICAgICAnICAgZG90dGVkX25hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3QgICAgICAgICAgOjo9IGRlZnBhcmFtZXRlciAoIiwiIGRlZnBhcmFtZXRlcikqICcKKyAgICAgICAgICAgICAnWyIsIiBbcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NdXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc1xuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJncyA6Oj0gIioiIFtwYXJhbWV0ZXJdICgiLCIgJworICAgICAgICAgICAgICdkZWZwYXJhbWV0ZXIpKiBbIiwiIFsiKioiIHBhcmFtZXRlciBbIiwiXV1dXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgICAgICAgICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAnYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICdhcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgJworICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgJworICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICcgICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBub3QgdGVtcG9yYXJpbHkgYm91bmQgdG8gJworICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICciZnVuYyIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSAnCisgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAnaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2dyYW1tYXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXNcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnInByZS1cbicKKyAgICAgICAgICAgICAnY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSAnCisgICAgICAgICAgICAgJ2ltcG9ydGFudFxuJworICAgICAgICAgICAgICd0byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoICcKKyAgICAgICAgICAgICAnYXMgYVxuJworICAgICAgICAgICAgICdsaXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICdhcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgJworICAgICAgICAgICAgICdtb2RpZmllZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgJworICAgICAgICAgICAgICd0byB1c2VcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiwgZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBwZW5ndWluID0gW11cbicKKyAgICAgICAgICAgICAnICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbicKKyAgICAgICAgICAgICAnICAgICAgIHJldHVybiBwZW5ndWluXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICdDYWxscy5cbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ21lbnRpb25lZCBpblxuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSAnCisgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm0gIiIqaWRlbnRpZmllciIiICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55IGV4Y2VzcyAnCisgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuIElmIHRoZSBmb3JtXG4nCisgICAgICAgICAgICAgJyIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgb3JkZXJlZFxuJworICAgICAgICAgICAgICdtYXBwaW5nIHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgJworICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAnZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiIioiIiBvclxuJworICAgICAgICAgICAgICciIippZGVudGlmaWVyIiIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSAnCisgICAgICAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAgICAgICd1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiICcKKyAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuICcKKyAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgJworICAgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ2xpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zICcKKyAgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAgJ2JlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgJworICAgICAgICAgICAgICdjb2RlLlxuJworICAgICAgICAgICAgICdUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuJworICAgICAgICAgICAgICdmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG4nCisgICAgICAgICAgICAgImRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnMnIG5hbWVzIGluIHRoZSAiCisgICAgICAgICAgICAgJyJfX2Fubm90YXRpb25zX18iXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCAnCisgICAgICAgICAgICAgJ2JvdW5kXG4nCisgICAgICAgICAgICAgJ3RvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gTGFtYmRhcy4gIE5vdGUgdGhhdCB0aGUgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb247XG4nCisgICAgICAgICAgICAgJ2EgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlICcKKyAgICAgICAgICAgICAnaXRcbicKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIgorICAgICAgICAgICAgICciImRlZiIiXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuJworICAgICAgICAgICAgICdmdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgJworICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgJ2luIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGNsYXNzIGRlZmluaXRpb24gZGVmaW5lcyBhIGNsYXNzIG9iamVjdCAoc2VlIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAndHlwZSBoaWVyYXJjaHkpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgY2xhc3NkZWYgICAgOjo9IFtkZWNvcmF0b3JzXSAiY2xhc3MiIGNsYXNzbmFtZSBbaW5oZXJpdGFuY2VdICcKKyAgICAgICAgICAgICAnIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGluaGVyaXRhbmNlIDo6PSAiKCIgW2FyZ3VtZW50X2xpc3RdICIpIlxuJworICAgICAgICAgICAgICcgICBjbGFzc25hbWUgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQSBjbGFzcyBkZWZpbml0aW9uIGlzIGFuIGV4ZWN1dGFibGUgc3RhdGVtZW50LiAgVGhlIGluaGVyaXRhbmNlICcKKyAgICAgICAgICAgICAnbGlzdFxuJworICAgICAgICAgICAgICd1c3VhbGx5IGdpdmVzIGEgbGlzdCBvZiBiYXNlIGNsYXNzZXMgKHNlZSBNZXRhY2xhc3NlcyBmb3IgbW9yZVxuJworICAgICAgICAgICAgICdhZHZhbmNlZCB1c2VzKSwgc28gZWFjaCBpdGVtIGluIHRoZSBsaXN0IHNob3VsZCBldmFsdWF0ZSB0byBhICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnb2JqZWN0IHdoaWNoIGFsbG93cyBzdWJjbGFzc2luZy4gIENsYXNzZXMgd2l0aG91dCBhbiBpbmhlcml0YW5jZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAnaW5oZXJpdCwgYnkgZGVmYXVsdCwgZnJvbSB0aGUgYmFzZSBjbGFzcyAib2JqZWN0IjsgaGVuY2UsXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286XG4nCisgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpcyBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb28ob2JqZWN0KTpcbicKKyAgICAgICAgICAgICAnICAgICAgIHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIlRoZSBjbGFzcydzIHN1aXRlIGlzIHRoZW4gZXhlY3V0ZWQgaW4gYSBuZXcgZXhlY3V0aW9uIGZyYW1lICIKKyAgICAgICAgICAgICAnKHNlZVxuJworICAgICAgICAgICAgICdOYW1pbmcgYW5kIGJpbmRpbmcpLCB1c2luZyBhIG5ld2x5IGNyZWF0ZWQgbG9jYWwgbmFtZXNwYWNlIGFuZCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdvcmlnaW5hbCBnbG9iYWwgbmFtZXNwYWNlLiAoVXN1YWxseSwgdGhlIHN1aXRlIGNvbnRhaW5zIG1vc3RseVxuJworICAgICAgICAgICAgICJmdW5jdGlvbiBkZWZpbml0aW9ucy4pICBXaGVuIHRoZSBjbGFzcydzIHN1aXRlIGZpbmlzaGVzICIKKyAgICAgICAgICAgICAnZXhlY3V0aW9uLCBpdHNcbicKKyAgICAgICAgICAgICAnZXhlY3V0aW9uIGZyYW1lIGlzIGRpc2NhcmRlZCBidXQgaXRzIGxvY2FsIG5hbWVzcGFjZSBpcyBzYXZlZC4gJworICAgICAgICAgICAgICdbNF0gQVxuJworICAgICAgICAgICAgICdjbGFzcyBvYmplY3QgaXMgdGhlbiBjcmVhdGVkIHVzaW5nIHRoZSBpbmhlcml0YW5jZSBsaXN0IGZvciB0aGUgJworICAgICAgICAgICAgICdiYXNlXG4nCisgICAgICAgICAgICAgJ2NsYXNzZXMgYW5kIHRoZSBzYXZlZCBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICdkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICdUaGUgY2xhc3MgbmFtZSBpcyBib3VuZCB0byB0aGlzIGNsYXNzIG9iamVjdCBpbiB0aGUgb3JpZ2luYWwgJworICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICduYW1lc3BhY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgb3JkZXIgaW4gd2hpY2ggYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY2xhc3MgYm9keSBpc1xuJworICAgICAgICAgICAgICdwcmVzZXJ2ZWQgaW4gdGhlIG5ldyBjbGFzc1wncyAiX19kaWN0X18iLiAgTm90ZSB0aGF0IHRoaXMgaXMgJworICAgICAgICAgICAgICdyZWxpYWJsZVxuJworICAgICAgICAgICAgICdvbmx5IHJpZ2h0IGFmdGVyIHRoZSBjbGFzcyBpcyBjcmVhdGVkIGFuZCBvbmx5IGZvciBjbGFzc2VzIHRoYXQgJworICAgICAgICAgICAgICd3ZXJlXG4nCisgICAgICAgICAgICAgJ2RlZmluZWQgdXNpbmcgdGhlIGRlZmluaXRpb24gc3ludGF4LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ2xhc3MgY3JlYXRpb24gY2FuIGJlIGN1c3RvbWl6ZWQgaGVhdmlseSB1c2luZyBtZXRhY2xhc3Nlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NsYXNzZXMgY2FuIGFsc28gYmUgZGVjb3JhdGVkOiBqdXN0IGxpa2Ugd2hlbiBkZWNvcmF0aW5nICcKKyAgICAgICAgICAgICAnZnVuY3Rpb25zLFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGNsYXNzIEZvbzogcGFzc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjbGFzcyBGb286IHBhc3NcbicKKyAgICAgICAgICAgICAnICAgRm9vID0gZjEoYXJnKShmMihGb28pKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGV2YWx1YXRpb24gcnVsZXMgZm9yIHRoZSBkZWNvcmF0b3IgZXhwcmVzc2lvbnMgYXJlIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGRlY29yYXRvcnMuICBUaGUgcmVzdWx0IGlzIHRoZW4gYm91bmQgdG8gdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAnbmFtZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIioqUHJvZ3JhbW1lcidzIG5vdGU6KiogVmFyaWFibGVzIGRlZmluZWQgaW4gdGhlIGNsYXNzIGRlZmluaXRpb24gIgorICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnY2xhc3MgYXR0cmlidXRlczsgdGhleSBhcmUgc2hhcmVkIGJ5IGluc3RhbmNlcy4gIEluc3RhbmNlICcKKyAgICAgICAgICAgICAnYXR0cmlidXRlc1xuJworICAgICAgICAgICAgICdjYW4gYmUgc2V0IGluIGEgbWV0aG9kIHdpdGggInNlbGYubmFtZSA9IHZhbHVlIi4gIEJvdGggY2xhc3MgJworICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAnaW5zdGFuY2UgYXR0cmlidXRlcyBhcmUgYWNjZXNzaWJsZSB0aHJvdWdoIHRoZSBub3RhdGlvbiAnCisgICAgICAgICAgICAgJyIic2VsZi5uYW1lIiIsXG4nCisgICAgICAgICAgICAgJ2FuZCBhbiBpbnN0YW5jZSBhdHRyaWJ1dGUgaGlkZXMgYSBjbGFzcyBhdHRyaWJ1dGUgd2l0aCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgICAnd2hlbiBhY2Nlc3NlZCBpbiB0aGlzIHdheS4gIENsYXNzIGF0dHJpYnV0ZXMgY2FuIGJlIHVzZWQgYXMgJworICAgICAgICAgICAgICdkZWZhdWx0c1xuJworICAgICAgICAgICAgICdmb3IgaW5zdGFuY2UgYXR0cmlidXRlcywgYnV0IHVzaW5nIG11dGFibGUgdmFsdWVzIHRoZXJlIGNhbiBsZWFkICcKKyAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAndW5leHBlY3RlZCByZXN1bHRzLiAgRGVzY3JpcHRvcnMgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGluc3RhbmNlXG4nCisgICAgICAgICAgICAgJ3ZhcmlhYmxlcyB3aXRoIGRpZmZlcmVudCBpbXBsZW1lbnRhdGlvbiBkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzICoqUEVQIDMxMjkqKiAtXG4nCisgICAgICAgICAgICAgJyAgQ2xhc3MgRGVjb3JhdG9yc1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Nvcm91dGluZXNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Nvcm91dGluZSBmdW5jdGlvbiBkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBhc3luY19mdW5jZGVmIDo6PSBbZGVjb3JhdG9yc10gImFzeW5jIiAiZGVmIiBmdW5jbmFtZSAiKCIgJworICAgICAgICAgICAgICdbcGFyYW1ldGVyX2xpc3RdICIpIiBbIi0+IiBleHByZXNzaW9uXSAiOiIgc3VpdGVcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0V4ZWN1dGlvbiBvZiBQeXRob24gY29yb3V0aW5lcyBjYW4gYmUgc3VzcGVuZGVkIGFuZCByZXN1bWVkIGF0ICcKKyAgICAgICAgICAgICAnbWFueVxuJworICAgICAgICAgICAgICdwb2ludHMgKHNlZSAqY29yb3V0aW5lKikuICBJbiB0aGUgYm9keSBvZiBhIGNvcm91dGluZSwgYW55ICcKKyAgICAgICAgICAgICAnImF3YWl0IiBhbmRcbicKKyAgICAgICAgICAgICAnImFzeW5jIiBpZGVudGlmaWVycyBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHM7ICJhd2FpdCIgJworICAgICAgICAgICAgICdleHByZXNzaW9ucyxcbicKKyAgICAgICAgICAgICAnImFzeW5jIGZvciIgYW5kICJhc3luYyB3aXRoIiBjYW4gb25seSBiZSB1c2VkIGluIGNvcm91dGluZSAnCisgICAgICAgICAgICAgJ2JvZGllcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9ucyBkZWZpbmVkIHdpdGggImFzeW5jIGRlZiIgc3ludGF4IGFyZSBhbHdheXMgY29yb3V0aW5lXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9ucywgZXZlbiBpZiB0aGV5IGRvIG5vdCBjb250YWluICJhd2FpdCIgb3IgImFzeW5jIiAnCisgICAgICAgICAgICAgJ2tleXdvcmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYSAiU3ludGF4RXJyb3IiIHRvIHVzZSAieWllbGQiIGV4cHJlc3Npb25zIGluICJhc3luYyBkZWYiXG4nCisgICAgICAgICAgICAgJ2Nvcm91dGluZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBbiBleGFtcGxlIG9mIGEgY29yb3V0aW5lIGZ1bmN0aW9uOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgZGVmIGZ1bmMocGFyYW0xLCBwYXJhbTIpOlxuJworICAgICAgICAgICAgICcgICAgICAgZG9fc3R1ZmYoKVxuJworICAgICAgICAgICAgICcgICAgICAgYXdhaXQgc29tZV9jb3JvdXRpbmUoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfZm9yX3N0bXQgOjo9ICJhc3luYyIgZm9yX3N0bXRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0FuICphc3luY2hyb25vdXMgaXRlcmFibGUqIGlzIGFibGUgdG8gY2FsbCBhc3luY2hyb25vdXMgY29kZSBpbiAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICcqaXRlciogaW1wbGVtZW50YXRpb24sIGFuZCAqYXN5bmNocm9ub3VzIGl0ZXJhdG9yKiBjYW4gY2FsbFxuJworICAgICAgICAgICAgICdhc3luY2hyb25vdXMgY29kZSBpbiBpdHMgKm5leHQqIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSAiYXN5bmMgZm9yIiBzdGF0ZW1lbnQgYWxsb3dzIGNvbnZlbmllbnQgaXRlcmF0aW9uIG92ZXJcbicKKyAgICAgICAgICAgICAnYXN5bmNocm9ub3VzIGl0ZXJhdG9ycy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29kZTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGFzeW5jIGZvciBUQVJHRVQgaW4gSVRFUjpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJyAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICBCTE9DSzJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0lzIHNlbWFudGljYWxseSBlcXVpdmFsZW50IHRvOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaXRlciA9IChJVEVSKVxuJworICAgICAgICAgICAgICcgICBpdGVyID0gdHlwZShpdGVyKS5fX2FpdGVyX18oaXRlcilcbicKKyAgICAgICAgICAgICAnICAgcnVubmluZyA9IFRydWVcbicKKyAgICAgICAgICAgICAnICAgd2hpbGUgcnVubmluZzpcbicKKyAgICAgICAgICAgICAnICAgICAgIHRyeTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBUQVJHRVQgPSBhd2FpdCB0eXBlKGl0ZXIpLl9fYW5leHRfXyhpdGVyKVxuJworICAgICAgICAgICAgICcgICAgICAgZXhjZXB0IFN0b3BBc3luY0l0ZXJhdGlvbjpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBydW5uaW5nID0gRmFsc2VcbicKKyAgICAgICAgICAgICAnICAgICAgIGVsc2U6XG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZWxzZTpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLMlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc28gIl9fYWl0ZXJfXygpIiBhbmQgIl9fYW5leHRfXygpIiBmb3IgZGV0YWlscy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0l0IGlzIGEgIlN5bnRheEVycm9yIiB0byB1c2UgImFzeW5jIGZvciIgc3RhdGVtZW50IG91dHNpZGUgb2YgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICciYXN5bmMgZGVmIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgImFzeW5jIHdpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmNfd2l0aF9zdG10IDo6PSAiYXN5bmMiIHdpdGhfc3RtdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQW4gKmFzeW5jaHJvbm91cyBjb250ZXh0IG1hbmFnZXIqIGlzIGEgKmNvbnRleHQgbWFuYWdlciogdGhhdCBpcyAnCisgICAgICAgICAgICAgJ2FibGVcbicKKyAgICAgICAgICAgICAndG8gc3VzcGVuZCBleGVjdXRpb24gaW4gaXRzICplbnRlciogYW5kICpleGl0KiBtZXRob2RzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb2RlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgYXN5bmMgd2l0aCBFWFBSIGFzIFZBUjpcbicKKyAgICAgICAgICAgICAnICAgICAgIEJMT0NLXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0bzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIG1nciA9IChFWFBSKVxuJworICAgICAgICAgICAgICcgICBhZXhpdCA9IHR5cGUobWdyKS5fX2FleGl0X19cbicKKyAgICAgICAgICAgICAnICAgYWVudGVyID0gdHlwZShtZ3IpLl9fYWVudGVyX18obWdyKVxuJworICAgICAgICAgICAgICcgICBleGMgPSBUcnVlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBWQVIgPSBhd2FpdCBhZW50ZXJcbicKKyAgICAgICAgICAgICAnICAgdHJ5OlxuJworICAgICAgICAgICAgICcgICAgICAgQkxPQ0tcbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0OlxuJworICAgICAgICAgICAgICcgICAgICAgaWYgbm90IGF3YWl0IGFleGl0KG1nciwgKnN5cy5leGNfaW5mbygpKTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICByYWlzZVxuJworICAgICAgICAgICAgICcgICBlbHNlOlxuJworICAgICAgICAgICAgICcgICAgICAgYXdhaXQgYWV4aXQobWdyLCBOb25lLCBOb25lLCBOb25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc28gIl9fYWVudGVyX18oKSIgYW5kICJfX2FleGl0X18oKSIgZm9yIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJdCBpcyBhICJTeW50YXhFcnJvciIgdG8gdXNlICJhc3luYyB3aXRoIiBzdGF0ZW1lbnQgb3V0c2lkZSBvZiAnCisgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgJyJhc3luYyBkZWYiIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286ICoqUEVQIDQ5MioqIC0gQ29yb3V0aW5lcyB3aXRoIGFzeW5jIGFuZCBhd2FpdCBzeW50YXhcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzFdIFRoZSBleGNlcHRpb24gaXMgcHJvcGFnYXRlZCB0byB0aGUgaW52b2NhdGlvbiBzdGFjayB1bmxlc3NcbicKKyAgICAgICAgICAgICAnICAgIHRoZXJlIGlzIGEgImZpbmFsbHkiIGNsYXVzZSB3aGljaCBoYXBwZW5zIHRvIHJhaXNlIGFub3RoZXJcbicKKyAgICAgICAgICAgICAnICAgIGV4Y2VwdGlvbi4gVGhhdCBuZXcgZXhjZXB0aW9uIGNhdXNlcyB0aGUgb2xkIG9uZSB0byBiZSAnCisgICAgICAgICAgICAgJ2xvc3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMl0gQ3VycmVudGx5LCBjb250cm9sICJmbG93cyBvZmYgdGhlIGVuZCIgZXhjZXB0IGluIHRoZSBjYXNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgIGFuIGV4Y2VwdGlvbiBvciB0aGUgZXhlY3V0aW9uIG9mIGEgInJldHVybiIsICJjb250aW51ZSIsIG9yXG4nCisgICAgICAgICAgICAgJyAgICAiYnJlYWsiIHN0YXRlbWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1szXSBBIHN0cmluZyBsaXRlcmFsIGFwcGVhcmluZyBhcyB0aGUgZmlyc3Qgc3RhdGVtZW50IGluIHRoZVxuJworICAgICAgICAgICAgICcgICAgZnVuY3Rpb24gYm9keSBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSBmdW5jdGlvblwncyAiX19kb2NfXyJcbicKKyAgICAgICAgICAgICAiICAgIGF0dHJpYnV0ZSBhbmQgdGhlcmVmb3JlIHRoZSBmdW5jdGlvbidzICpkb2NzdHJpbmcqLlxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnWzRdIEEgc3RyaW5nIGxpdGVyYWwgYXBwZWFyaW5nIGFzIHRoZSBmaXJzdCBzdGF0ZW1lbnQgaW4gdGhlICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnICAgIGJvZHkgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgbmFtZXNwYWNlXCdzICJfX2RvY19fIiBpdGVtICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgIiAgICB0aGVyZWZvcmUgdGhlIGNsYXNzJ3MgKmRvY3N0cmluZyouXG4iLAorICdjb250ZXh0LW1hbmFnZXJzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0IHRvXG4nCisgICAgICAgICAgICAgICAgICAgICAnYmUgZXN0YWJsaXNoZWQgd2hlbiBleGVjdXRpbmcgYSAid2l0aCIgc3RhdGVtZW50LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgbWFuYWdlclxuJworICAgICAgICAgICAgICAgICAgICAgJ2hhbmRsZXMgdGhlIGVudHJ5IGludG8sIGFuZCB0aGUgZXhpdCBmcm9tLCB0aGUgZGVzaXJlZCAnCisgICAgICAgICAgICAgICAgICAgICAncnVudGltZSBjb250ZXh0XG4nCisgICAgICAgICAgICAgICAgICAgICAnZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgICAgICdtYW5hZ2VycyBhcmUgbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbnZva2VkIHVzaW5nIHRoZSAid2l0aCIgc3RhdGVtZW50IChkZXNjcmliZWQgaW4gc2VjdGlvbiAnCisgICAgICAgICAgICAgICAgICAgICAnVGhlIHdpdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICdzdGF0ZW1lbnQpLCBidXQgY2FuIGFsc28gYmUgdXNlZCBieSBkaXJlY3RseSBpbnZva2luZyAnCisgICAgICAgICAgICAgICAgICAgICAndGhlaXIgbWV0aG9kcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUeXBpY2FsIHVzZXMgb2YgY29udGV4dCBtYW5hZ2VycyBpbmNsdWRlIHNhdmluZyBhbmQgJworICAgICAgICAgICAgICAgICAgICAgJ3Jlc3RvcmluZyB2YXJpb3VzXG4nCisgICAgICAgICAgICAgICAgICAgICAna2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCAnCisgICAgICAgICAgICAgICAgICAgICAnY2xvc2luZyBvcGVuZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdmaWxlcywgZXRjLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ0ZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGNvbnRleHQgbWFuYWdlcnMsIHNlZSBDb250ZXh0ICcKKyAgICAgICAgICAgICAgICAgICAgICdNYW5hZ2VyIFR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VudGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAgICAgICAgICAgICAiICAgc3RhdGVtZW50IHdpbGwgYmluZCB0aGlzIG1ldGhvZCdzIHJldHVybiB2YWx1ZSB0byB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgJ3RhcmdldChzKVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNwZWNpZmllZCBpbiB0aGUgImFzIiBjbGF1c2Ugb2YgdGhlIHN0YXRlbWVudCwgaWYgJworICAgICAgICAgICAgICAgICAgICAgJ2FueS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19leGl0X18oc2VsZiwgZXhjX3R5cGUsIGV4Y192YWx1ZSwgdHJhY2ViYWNrKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBkZXNjcmliZSB0aGUgZXhjZXB0aW9uIHRoYXQgY2F1c2VkIHRoZSBjb250ZXh0IHRvIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICdleGl0ZWQuIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgd2FzIGV4aXRlZCB3aXRob3V0IGFuIGV4Y2VwdGlvbiwgYWxsIHRocmVlICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgd2lsbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGJlICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBJZiBhbiBleGNlcHRpb24gaXMgc3VwcGxpZWQsIGFuZCB0aGUgbWV0aG9kIHdpc2hlcyB0byAnCisgICAgICAgICAgICAgICAgICAgICAnc3VwcHJlc3MgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIChpLmUuLCBwcmV2ZW50IGl0IGZyb20gYmVpbmcgcHJvcGFnYXRlZCksICcKKyAgICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICAgICAncHJvY2Vzc2VkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgbm9ybWFsbHkgdXBvbiBleGl0IGZyb20gdGhpcyBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0ICJfX2V4aXRfXygpIiBtZXRob2RzIHNob3VsZCBub3QgcmVyYWlzZSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ3Bhc3NlZC1pblxuJworICAgICAgICAgICAgICAgICAgICAgIiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuXG4iCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAqKlBFUCAzNDMqKiAtIFRoZSAid2l0aCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiwgYmFja2dyb3VuZCwgYW5kIGV4YW1wbGVzIGZvciB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ1B5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgIHN0YXRlbWVudC5cbicsCisgJ2NvbnRpbnVlJzogJ1xuJworICAgICAgICAgICAgICdUaGUgImNvbnRpbnVlIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBjb250aW51ZV9zdG10IDo6PSAiY29udGludWUiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICciY29udGludWUiIG1heSBvbmx5IG9jY3VyIHN5bnRhY3RpY2FsbHkgbmVzdGVkIGluIGEgImZvciIgb3IgJworICAgICAgICAgICAgICcid2hpbGUiXG4nCisgICAgICAgICAgICAgJ2xvb3AsIGJ1dCBub3QgbmVzdGVkIGluIGEgZnVuY3Rpb24gb3IgY2xhc3MgZGVmaW5pdGlvbiBvciAnCisgICAgICAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAgICAgICdjbGF1c2Ugd2l0aGluIHRoYXQgbG9vcC4gIEl0IGNvbnRpbnVlcyB3aXRoIHRoZSBuZXh0IGN5Y2xlIG9mICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ25lYXJlc3QgZW5jbG9zaW5nIGxvb3AuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuICJjb250aW51ZSIgcGFzc2VzIGNvbnRyb2wgb3V0IG9mIGEgInRyeSIgc3RhdGVtZW50IHdpdGggYVxuJworICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlLCB0aGF0ICJmaW5hbGx5IiBjbGF1c2UgaXMgZXhlY3V0ZWQgYmVmb3JlICcKKyAgICAgICAgICAgICAncmVhbGx5XG4nCisgICAgICAgICAgICAgJ3N0YXJ0aW5nIHRoZSBuZXh0IGxvb3AgY3ljbGUuXG4nLAorICdjb252ZXJzaW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAnQXJpdGhtZXRpYyBjb252ZXJzaW9uc1xuJworICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdXaGVuIGEgZGVzY3JpcHRpb24gb2YgYW4gYXJpdGhtZXRpYyBvcGVyYXRvciBiZWxvdyB1c2VzIHRoZSAnCisgICAgICAgICAgICAgICAgJ3BocmFzZVxuJworICAgICAgICAgICAgICAgICcidGhlIG51bWVyaWMgYXJndW1lbnRzIGFyZSBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwiIHRoaXMgJworICAgICAgICAgICAgICAgICdtZWFuc1xuJworICAgICAgICAgICAgICAgICd0aGF0IHRoZSBvcGVyYXRvciBpbXBsZW1lbnRhdGlvbiBmb3IgYnVpbHQtaW4gdHlwZXMgd29ya3MgYXMgJworICAgICAgICAgICAgICAgICdmb2xsb3dzOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBJZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBjb21wbGV4IG51bWJlciwgdGhlIG90aGVyIGlzICcKKyAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgJyAgY29tcGxleDtcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogb3RoZXJ3aXNlLCBpZiBlaXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdGluZyBwb2ludCBudW1iZXIsICcKKyAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgJyAgb3RoZXIgaXMgY29udmVydGVkIHRvIGZsb2F0aW5nIHBvaW50O1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiBvdGhlcndpc2UsIGJvdGggbXVzdCBiZSBpbnRlZ2VycyBhbmQgbm8gY29udmVyc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgJ25lY2Vzc2FyeS5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1NvbWUgYWRkaXRpb25hbCBydWxlcyBhcHBseSBmb3IgY2VydGFpbiBvcGVyYXRvcnMgKGUuZy4sIGEgJworICAgICAgICAgICAgICAgICdzdHJpbmcgYXMgYVxuJworICAgICAgICAgICAgICAgICJsZWZ0IGFyZ3VtZW50IHRvIHRoZSAnJScgb3BlcmF0b3IpLiAgRXh0ZW5zaW9ucyBtdXN0IGRlZmluZSAiCisgICAgICAgICAgICAgICAgJ3RoZWlyIG93blxuJworICAgICAgICAgICAgICAgICdjb252ZXJzaW9uIGJlaGF2aW9yLlxuJywKKyAnY3VzdG9taXphdGlvbic6ICdcbicKKyAgICAgICAgICAgICAgICAgICdCYXNpYyBjdXN0b21pemF0aW9uXG4nCisgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25ld19fKGNsc1ssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiBjbGFzcyAqY2xzKi4gICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCAnCisgICAgICAgICAgICAgICAgICAnYXMgc3VjaClcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGF0IHRha2VzIHRoZSBjbGFzcyBvZiB3aGljaCBhbiBpbnN0YW5jZSB3YXMgcmVxdWVzdGVkICcKKyAgICAgICAgICAgICAgICAgICdhcyBpdHNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmaXJzdCBhcmd1bWVudC4gIFRoZSByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aG9zZSAnCisgICAgICAgICAgICAgICAgICAncGFzc2VkIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgJworICAgICAgICAgICAgICAgICAgJ1RoZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBvZiAiX19uZXdfXygpIiBzaG91bGQgYmUgdGhlIG5ldyBvYmplY3QgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJyh1c3VhbGx5IGFuXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2Ugb2YgKmNscyopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW52b2tpbmcgdGhlIHN1cGVyY2xhc3NcJ3MgIl9fbmV3X18oKSIgbWV0aG9kIHVzaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgICdhcHByb3ByaWF0ZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cyBhbmQgdGhlbiBtb2RpZnlpbmcgdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICAnICAgbmVjZXNzYXJ5IGJlZm9yZSByZXR1cm5pbmcgaXQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ25ld1xuJworICAgICAgICAgICAgICAgICAgJyAgIGluc3RhbmNlXCdzICJfX2luaXRfXygpIiBtZXRob2Qgd2lsbCBiZSBpbnZva2VkIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGFuZCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZW1haW5pbmcgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyB3ZXJlIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgZG9lcyBub3QgcmV0dXJuIGFuIGluc3RhbmNlIG9mICpjbHMqLCAnCisgICAgICAgICAgICAgICAgICAndGhlbiB0aGUgbmV3XG4nCisgICAgICAgICAgICAgICAgICAnICAgaW5zdGFuY2VcJ3MgIl9faW5pdF9fKCkiIG1ldGhvZCB3aWxsIG5vdCBiZSBpbnZva2VkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlcyAobGlrZSBpbnQsIHN0ciwgb3IgdHVwbGUpIHRvIGN1c3RvbWl6ZSBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICAnY3JlYXRpb24uICBJdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGlzIGFsc28gY29tbW9ubHkgb3ZlcnJpZGRlbiBpbiBjdXN0b20gbWV0YWNsYXNzZXMgaW4gJworICAgICAgICAgICAgICAgICAgJ29yZGVyIHRvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luaXRfXyhzZWxmWywgLi4uXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYWZ0ZXIgdGhlIGluc3RhbmNlIGhhcyBiZWVuIGNyZWF0ZWQgKGJ5ICcKKyAgICAgICAgICAgICAgICAgICciX19uZXdfXygpIiksIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAgJ3Rob3NlXG4nCisgICAgICAgICAgICAgICAgICAnICAgcGFzc2VkIHRvIHRoZSBjbGFzcyBjb25zdHJ1Y3RvciBleHByZXNzaW9uLiAgSWYgYSBiYXNlICcKKyAgICAgICAgICAgICAgICAgICdjbGFzcyBoYXMgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oKSIgbWV0aG9kLCB0aGUgZGVyaXZlZCBjbGFzc1wncyAiX19pbml0X18oKSIgJworICAgICAgICAgICAgICAgICAgJ21ldGhvZCwgaWZcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgJworICAgICAgICAgICAgICAgICAgJ2luaXRpYWxpemF0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGJhc2UgY2xhc3MgcGFydCBvZiB0aGUgaW5zdGFuY2U7IGZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgJyAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQmVjYXVzZSAiX19uZXdfXygpIiBhbmQgIl9faW5pdF9fKCkiIHdvcmsgdG9nZXRoZXIgaW4gJworICAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMgKCJfX25ld19fKCkiIHRvIGNyZWF0ZSBpdCwgYW5kICJfX2luaXRfXygpIiB0byAnCisgICAgICAgICAgICAgICAgICAnY3VzdG9taXplXG4nCisgICAgICAgICAgICAgICAgICAnICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAnCisgICAgICAgICAgICAgICAgICAnIl9faW5pdF9fKCkiOyBkb2luZyBzb1xuJworICAgICAgICAgICAgICAgICAgJyAgIHdpbGwgY2F1c2UgYSAiVHlwZUVycm9yIiB0byBiZSByYWlzZWQgYXQgcnVudGltZS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgICdpcyBhbHNvXG4nCisgICAgICAgICAgICAgICAgICAnICAgY2FsbGVkIGEgZGVzdHJ1Y3Rvci4gIElmIGEgYmFzZSBjbGFzcyBoYXMgYSAiX19kZWxfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzXCdzICJfX2RlbF9fKCkiIG1ldGhvZCwgaWYgYW55LCBtdXN0ICcKKyAgICAgICAgICAgICAgICAgICdleHBsaWNpdGx5IGNhbGwgaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgcG9zc2libGUgKHRob3VnaCBub3QgcmVjb21tZW5kZWQhKSBmb3IgJworICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZCB0byBwb3N0cG9uZSBkZXN0cnVjdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGJ5XG4nCisgICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkICcKKyAgICAgICAgICAgICAgICAgICdhdCBhIGxhdGVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdGltZSB3aGVuIHRoaXMgbmV3IHJlZmVyZW5jZSBpcyBkZWxldGVkLiAgSXQgaXMgbm90ICcKKyAgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBjYWxsZWQgZm9yIG9iamVjdHMgdGhhdCBzdGlsbCAnCisgICAgICAgICAgICAgICAgICAnZXhpc3Qgd2hlblxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZGVsIHgiIGRvZXNuXCd0IGRpcmVjdGx5IGNhbGwgInguX19kZWxfXygpIiAtLS0gJworICAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRlY3JlbWVudHMgdGhlIHJlZmVyZW5jZSBjb3VudCBmb3IgIngiIGJ5IG9uZSwgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbGF0dGVyIGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgJworICAgICAgICAgICAgICAgICAgJ1NvbWUgY29tbW9uXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb25zIHRoYXQgbWF5IHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudCBvZiBhbiAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IGZyb21cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGdvaW5nIHRvIHplcm8gaW5jbHVkZTogY2lyY3VsYXIgcmVmZXJlbmNlcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzIChlLmcuLFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggJworICAgICAgICAgICAgICAgICAgJ3BhcmVudCBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGNoaWxkIHBvaW50ZXJzKTsgYSByZWZlcmVuY2UgdG8gdGhlIG9iamVjdCBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3N0YWNrIGZyYW1lIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhIGZ1bmN0aW9uIHRoYXQgY2F1Z2h0IGFuIGV4Y2VwdGlvbiAodGhlIHRyYWNlYmFjayAnCisgICAgICAgICAgICAgICAgICAnc3RvcmVkIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgJworICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIG9iamVjdCBvbiB0aGUgc3RhY2sgZnJhbWUgdGhhdCByYWlzZWQgYW4gJworICAgICAgICAgICAgICAgICAgJ3VuaGFuZGxlZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZXhjZXB0aW9uIGluIGludGVyYWN0aXZlIG1vZGUgKHRoZSB0cmFjZWJhY2sgc3RvcmVkICcKKyAgICAgICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gICcKKyAgICAgICAgICAgICAgICAgICdUaGUgZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHNpdHVhdGlvbiBjYW4gb25seSBiZSByZW1lZGllZCBieSBleHBsaWNpdGx5IGJyZWFraW5nICcKKyAgICAgICAgICAgICAgICAgICd0aGUgY3ljbGVzO1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGhlIHNlY29uZCBjYW4gYmUgcmVzb2x2ZWQgYnkgZnJlZWluZyB0aGUgcmVmZXJlbmNlIHRvICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgICd0aGlyZCBjYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJlIHJlc29sdmVkIGJ5IHN0b3JpbmcgIk5vbmUiIGluICJzeXMubGFzdF90cmFjZWJhY2siLiAnCisgICAgICAgICAgICAgICAgICAnQ2lyY3VsYXJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHJlZmVyZW5jZXMgd2hpY2ggYXJlIGdhcmJhZ2UgYXJlIGRldGVjdGVkIGFuZCBjbGVhbmVkICcKKyAgICAgICAgICAgICAgICAgICd1cCB3aGVuIHRoZVxuJworICAgICAgICAgICAgICAgICAgIiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0J3Mgb24gYnkgIgorICAgICAgICAgICAgICAgICAgJ2RlZmF1bHQpLiBSZWZlclxuJworICAgICAgICAgICAgICAgICAgJyAgICAgdG8gdGhlIGRvY3VtZW50YXRpb24gZm9yIHRoZSAiZ2MiIG1vZHVsZSBmb3IgbW9yZSAnCisgICAgICAgICAgICAgICAgICAnaW5mb3JtYXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgdG9waWMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgJworICAgICAgICAgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiX19kZWxfXygpIiBtZXRob2RzIGFyZSBpbnZva2VkLCBleGNlcHRpb25zIHRoYXQgb2NjdXIgJworICAgICAgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgdGhlaXIgZXhlY3V0aW9uIGFyZSBpZ25vcmVkLCBhbmQgYSB3YXJuaW5nIGlzIHByaW50ZWQgJworICAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyAnCisgICAgICAgICAgICAgICAgICAnaW52b2tlZCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVzcG9uc2UgdG8gYSBtb2R1bGUgYmVpbmcgZGVsZXRlZCAoZS5nLiwgd2hlbiAnCisgICAgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcHJvZ3JhbSBpcyBkb25lKSwgb3RoZXIgZ2xvYmFscyByZWZlcmVuY2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICAnIl9fZGVsX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICAnb2YgYmVpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHRvcm4gZG93biAoZS5nLiB0aGUgaW1wb3J0IG1hY2hpbmVyeSBzaHV0dGluZyBkb3duKS4gICcKKyAgICAgICAgICAgICAgICAgICdGb3IgdGhpc1xuJworICAgICAgICAgICAgICAgICAgJyAgICAgcmVhc29uLCAiX19kZWxfXygpIiBtZXRob2RzIHNob3VsZCBkbyB0aGUgYWJzb2x1dGUgJworICAgICAgICAgICAgICAgICAgJ21pbmltdW0gbmVlZGVkXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCAnCisgICAgICAgICAgICAgICAgICAndmVyc2lvbiAxLjUsXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBQeXRob24gZ3VhcmFudGVlcyB0aGF0IGdsb2JhbHMgd2hvc2UgbmFtZSBiZWdpbnMgd2l0aCAnCisgICAgICAgICAgICAgICAgICAnYSBzaW5nbGVcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHVuZGVyc2NvcmUgYXJlIGRlbGV0ZWQgZnJvbSB0aGVpciBtb2R1bGUgYmVmb3JlIG90aGVyICcKKyAgICAgICAgICAgICAgICAgICdnbG9iYWxzIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsICcKKyAgICAgICAgICAgICAgICAgICd0aGlzIG1heVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgaGVscCBpbiBhc3N1cmluZyB0aGF0IGltcG9ydGVkIG1vZHVsZXMgYXJlIHN0aWxsICcKKyAgICAgICAgICAgICAgICAgICdhdmFpbGFibGUgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgICB0aW1lIHdoZW4gdGhlICJfX2RlbF9fKCkiIG1ldGhvZCBpcyBjYWxsZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IHRoZSAicmVwcigpIiBidWlsdC1pbiBmdW5jdGlvbiB0byBjb21wdXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICAnIm9mZmljaWFsIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBJZiBhdCBhbGwgcG9zc2libGUsICcKKyAgICAgICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ3VzZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgICcgICByZWNyZWF0ZSBhbiBvYmplY3Qgd2l0aCB0aGUgc2FtZSB2YWx1ZSAoZ2l2ZW4gYW4gJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZW52aXJvbm1lbnQpLiAgSWYgdGhpcyBpcyBub3QgcG9zc2libGUsIGEgc3RyaW5nIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnZm9ybVxuJworICAgICAgICAgICAgICAgICAgJyAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuICcKKyAgICAgICAgICAgICAgICAgICdUaGUgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAnICAgdmFsdWUgbXVzdCBiZSBhIHN0cmluZyBvYmplY3QuIElmIGEgY2xhc3MgZGVmaW5lcyAnCisgICAgICAgICAgICAgICAgICAnIl9fcmVwcl9fKCkiIGJ1dFxuJworICAgICAgICAgICAgICAgICAgJyAgIG5vdCAiX19zdHJfXygpIiwgdGhlbiAiX19yZXByX18oKSIgaXMgYWxzbyB1c2VkIHdoZW4gYW4gJworICAgICAgICAgICAgICAgICAgJyJpbmZvcm1hbCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlcHJlc2VudGF0aW9uIGlzIGluZm9ybWF0aW9uLXJpY2ggYW5kIHVuYW1iaWd1b3VzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N0cl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgJworICAgICAgICAgICAgICAgICAgJyJmb3JtYXQoKSIgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgInByaW50KCkiIHRvIGNvbXB1dGUgdGhlICJpbmZvcm1hbCIgb3IgbmljZWx5IHByaW50YWJsZSAnCisgICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAnICAgcmVwcmVzZW50YXRpb24gb2YgYW4gb2JqZWN0LiAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgJworICAgICAgICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBkaWZmZXJzIGZyb20gIm9iamVjdC5fX3JlcHJfXygpIiBpbiB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBub1xuJworICAgICAgICAgICAgICAgICAgJyAgIGV4cGVjdGF0aW9uIHRoYXQgIl9fc3RyX18oKSIgcmV0dXJuIGEgdmFsaWQgUHl0aG9uICcKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uOiBhXG4nCisgICAgICAgICAgICAgICAgICAnICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlIGRlZmF1bHQgaW1wbGVtZW50YXRpb24gZGVmaW5lZCBieSB0aGUgYnVpbHQtaW4gdHlwZSAnCisgICAgICAgICAgICAgICAgICAnIm9iamVjdCJcbicKKyAgICAgICAgICAgICAgICAgICcgICBjYWxscyAib2JqZWN0Ll9fcmVwcl9fKCkiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2J5dGVzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImJ5dGVzKCkiIHRvIGNvbXB1dGUgYSBieXRlLXN0cmluZyAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgc2hvdWxkIHJldHVybiBhICJieXRlcyIgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgImZvcm1hdCgpIiBidWlsdC1pbiBmdW5jdGlvbiwgYW5kIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdleHRlbnNpb24sXG4nCisgICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGlvbiBvZiBmb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJyJzdHIuZm9ybWF0KCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdvZiBhblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhlICJmb3JtYXRfc3BlYyIgYXJndW1lbnQgaXMgYSBzdHJpbmcgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnY29udGFpbnMgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaXB0aW9uIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgZGVzaXJlZC4gVGhlICcKKyAgICAgICAgICAgICAgICAgICdpbnRlcnByZXRhdGlvblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19mb3JtYXRfXygpIiwgaG93ZXZlciBtb3N0IGNsYXNzZXMgd2lsbCBlaXRoZXIgJworICAgICAgICAgICAgICAgICAgJ2RlbGVnYXRlXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0dGluZyB0byBvbmUgb2YgdGhlIGJ1aWx0LWluIHR5cGVzLCBvciB1c2UgYSAnCisgICAgICAgICAgICAgICAgICAnc2ltaWxhclxuJworICAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBTZWUgRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZSBmb3IgYSBkZXNjcmlwdGlvbiAnCisgICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgc3RhbmRhcmQgZm9ybWF0dGluZyBzeW50YXguXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy40OiBUaGUgX19mb3JtYXRfXyBtZXRob2Qgb2YgJworICAgICAgICAgICAgICAgICAgJyJvYmplY3QiIGl0c2VsZlxuJworICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlcyBhICJUeXBlRXJyb3IiIGlmIHBhc3NlZCBhbnkgbm9uLWVtcHR5IHN0cmluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZXFfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2d0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2VfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBhcmUgdGhlIHNvLWNhbGxlZCAicmljaCBjb21wYXJpc29uIiBtZXRob2RzLiBUaGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb3JyZXNwb25kZW5jZSBiZXR3ZWVuIG9wZXJhdG9yIHN5bWJvbHMgYW5kIG1ldGhvZCBuYW1lcyAnCisgICAgICAgICAgICAgICAgICAnaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBmb2xsb3dzOiAieDx5IiBjYWxscyAieC5fX2x0X18oeSkiLCAieDw9eSIgY2FsbHMgJworICAgICAgICAgICAgICAgICAgJyJ4Ll9fbGVfXyh5KSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAnCisgICAgICAgICAgICAgICAgICAnIng+eSIgY2FsbHNcbicKKyAgICAgICAgICAgICAgICAgICcgICAieC5fX2d0X18oeSkiLCBhbmQgIng+PXkiIGNhbGxzICJ4Ll9fZ2VfXyh5KSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQSByaWNoIGNvbXBhcmlzb24gbWV0aG9kIG1heSByZXR1cm4gdGhlIHNpbmdsZXRvbiAnCisgICAgICAgICAgICAgICAgICAnIk5vdEltcGxlbWVudGVkIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgJworICAgICAgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnRzLiBCeSBjb252ZW50aW9uLCAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZXR1cm5lZCBmb3IgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN1Y2Nlc3NmdWwgY29tcGFyaXNvbi4gSG93ZXZlciwgdGhlc2UgbWV0aG9kcyBjYW4gcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgICdhbnkgdmFsdWUsXG4nCisgICAgICAgICAgICAgICAgICAnICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAgJ2NvbnRleHQgKGUuZy4sXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNvbmRpdGlvbiBvZiBhbiAiaWYiIHN0YXRlbWVudCksIFB5dGhvbiB3aWxsIGNhbGwgJworICAgICAgICAgICAgICAgICAgJyJib29sKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgb24gdGhlIHZhbHVlIHRvIGRldGVybWluZSBpZiB0aGUgcmVzdWx0IGlzIHRydWUgb3IgJworICAgICAgICAgICAgICAgICAgJ2ZhbHNlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIEJ5IGRlZmF1bHQsICJfX25lX18oKSIgZGVsZWdhdGVzIHRvICJfX2VxX18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdpbnZlcnRzIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyAnCisgICAgICAgICAgICAgICAgICAnb3RoZXIgaW1wbGllZFxuJworICAgICAgICAgICAgICAgICAgJyAgIHJlbGF0aW9uc2hpcHMgYW1vbmcgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3JzLCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHRydXRoIG9mICIoeDx5IG9yIHg9PXkpIiBkb2VzIG5vdCBpbXBseSAieDw9eSIuIFRvICcKKyAgICAgICAgICAgICAgICAgICdhdXRvbWF0aWNhbGx5XG4nCisgICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3QgJworICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiwgc2VlXG4nCisgICAgICAgICAgICAgICAgICAnICAgImZ1bmN0b29scy50b3RhbF9vcmRlcmluZygpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBTZWUgdGhlIHBhcmFncmFwaCBvbiAiX19oYXNoX18oKSIgZm9yIHNvbWUgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgICdub3RlcyBvblxuJworICAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSAnCisgICAgICAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICAgICAgJyAgIG9wZXJhdGlvbnMgYW5kIGFyZSB1c2FibGUgYXMgZGljdGlvbmFyeSBrZXlzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXJlIGFyZSBubyBzd2FwcGVkLWFyZ3VtZW50IHZlcnNpb25zIG9mIHRoZXNlIG1ldGhvZHMgJworICAgICAgICAgICAgICAgICAgJyh0byBiZSB1c2VkXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAgJ2J1dCB0aGUgcmlnaHRcbicKKyAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkb2VzKTsgcmF0aGVyLCAiX19sdF9fKCkiIGFuZCAiX19ndF9fKCkiIGFyZSAnCisgICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICAnICAgcmVmbGVjdGlvbiwgIl9fbGVfXygpIiBhbmQgIl9fZ2VfXygpIiBhcmUgZWFjaCBvdGhlclwncyAnCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGlvbixcbicKKyAgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uICcKKyAgICAgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICBvcGVyYW5kcyBhcmUgb2YgZGlmZmVyZW50IHR5cGVzLCBhbmQgcmlnaHQgb3BlcmFuZCdzICIKKyAgICAgICAgICAgICAgICAgICd0eXBlIGlzIGFcbicKKyAgICAgICAgICAgICAgICAgICIgICBkaXJlY3Qgb3IgaW5kaXJlY3Qgc3ViY2xhc3Mgb2YgdGhlIGxlZnQgb3BlcmFuZCdzIHR5cGUsICIKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgJworICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICIgICBsZWZ0IG9wZXJhbmQncyBtZXRob2QgaGFzIHByaW9yaXR5LiAgVmlydHVhbCBzdWJjbGFzc2luZyAiCisgICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19oYXNoX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgYnVpbHQtaW4gZnVuY3Rpb24gImhhc2goKSIgYW5kIGZvciBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgICdvbiBtZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICAnICAgb2YgaGFzaGVkIGNvbGxlY3Rpb25zIGluY2x1ZGluZyAic2V0IiwgImZyb3plbnNldCIsIGFuZCAnCisgICAgICAgICAgICAgICAgICAnImRpY3QiLlxuJworICAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSAnCisgICAgICAgICAgICAgICAgICAncmVxdWlyZWQgcHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgICcgICBpcyB0aGF0IG9iamVjdHMgd2hpY2ggY29tcGFyZSBlcXVhbCBoYXZlIHRoZSBzYW1lIGhhc2ggJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlOyBpdCBpc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGFkdmlzZWQgdG8gc29tZWhvdyBtaXggdG9nZXRoZXIgKGUuZy4gdXNpbmcgZXhjbHVzaXZlICcKKyAgICAgICAgICAgICAgICAgICdvcikgdGhlIGhhc2hcbicKKyAgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSAnCisgICAgICAgICAgICAgICAgICAncGFydCBpblxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbXBhcmlzb24gb2Ygb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiaGFzaCgpIiB0cnVuY2F0ZXMgdGhlIHZhbHVlIHJldHVybmVkIGZyb20gYW4gJworICAgICAgICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAgICAgICAnICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgICciUHlfc3NpemVfdCIuICBUaGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBpcyB0eXBpY2FsbHkgOCBieXRlcyBvbiA2NC1iaXQgYnVpbGRzIGFuZCA0IGJ5dGVzIG9uICcKKyAgICAgICAgICAgICAgICAgICczMi1iaXRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGJ1aWxkcy4gSWYgYW4gb2JqZWN0XCdzICAgIl9faGFzaF9fKCkiIG11c3QgJworICAgICAgICAgICAgICAgICAgJ2ludGVyb3BlcmF0ZSBvbiBidWlsZHNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uICcKKyAgICAgICAgICAgICAgICAgICdhbGxcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIHN1cHBvcnRlZCBidWlsZHMuICBBbiBlYXN5IHdheSB0byBkbyB0aGlzIGlzIHdpdGggJworICAgICAgICAgICAgICAgICAgJyJweXRob24gLWNcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICJpbXBvcnQgc3lzOyBwcmludChzeXMuaGFzaF9pbmZvLndpZHRoKSIiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0ICcKKyAgICAgICAgICAgICAgICAgICdzaG91bGQgbm90XG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmaW5lIGEgIl9faGFzaF9fKCkiIG9wZXJhdGlvbiBlaXRoZXI7IGlmIGl0IGRlZmluZXMgJworICAgICAgICAgICAgICAgICAgJyJfX2VxX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICcgICBidXQgbm90ICJfX2hhc2hfXygpIiwgaXRzIGluc3RhbmNlcyB3aWxsIG5vdCBiZSB1c2FibGUgJworICAgICAgICAgICAgICAgICAgJ2FzIGl0ZW1zIGluXG4nCisgICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRzIGFuICJfX2VxX18oKSIgbWV0aG9kLCBpdCBzaG91bGQgbm90ICcKKyAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19oYXNoX18oKSIsIHNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBoYXNoYWJsZSAnCisgICAgICAgICAgICAgICAgICAnY29sbGVjdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICIgICByZXF1aXJlcyB0aGF0IGEga2V5J3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSAiCisgICAgICAgICAgICAgICAgICAib2JqZWN0J3MgaGFzaFxuIgorICAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIGNoYW5nZXMsIGl0IHdpbGwgYmUgaW4gdGhlIHdyb25nIGhhc2ggYnVja2V0KS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBVc2VyLWRlZmluZWQgY2xhc3NlcyBoYXZlICJfX2VxX18oKSIgYW5kICJfX2hhc2hfXygpIiAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kcyBieVxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgICcgICB0aGVtc2VsdmVzKSBhbmQgInguX19oYXNoX18oKSIgcmV0dXJucyBhbiBhcHByb3ByaWF0ZSAnCisgICAgICAgICAgICAgICAgICAndmFsdWUgc3VjaFxuJworICAgICAgICAgICAgICAgICAgJyAgIHRoYXQgInggPT0geSIgaW1wbGllcyBib3RoIHRoYXQgInggaXMgeSIgYW5kICJoYXNoKHgpID09ICcKKyAgICAgICAgICAgICAgICAgICdoYXNoKHkpIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBBIGNsYXNzIHRoYXQgb3ZlcnJpZGVzICJfX2VxX18oKSIgYW5kIGRvZXMgbm90IGRlZmluZSAnCisgICAgICAgICAgICAgICAgICAnIl9faGFzaF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgJworICAgICAgICAgICAgICAgICAgJ1doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgIl9faGFzaF9fKCkiIG1ldGhvZCBvZiBhIGNsYXNzIGlzICJOb25lIiwgaW5zdGFuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgICcgICB3aWxsIHJhaXNlIGFuIGFwcHJvcHJpYXRlICJUeXBlRXJyb3IiIHdoZW4gYSBwcm9ncmFtICcKKyAgICAgICAgICAgICAgICAgICdhdHRlbXB0cyB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICAnICAgdW5oYXNoYWJsZSB3aGVuIGNoZWNraW5nICJpc2luc3RhbmNlKG9iaiwgJworICAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgYSBjbGFzcyB0aGF0IG92ZXJyaWRlcyAiX19lcV9fKCkiIG5lZWRzIHRvIHJldGFpbiAnCisgICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gb2YgIl9faGFzaF9fKCkiIGZyb20gYSBwYXJlbnQgY2xhc3MsIHRoZSAnCisgICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAgICcgICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbicKKyAgICAgICAgICAgICAgICAgICcgICA8UGFyZW50Q2xhc3M+Ll9faGFzaF9fIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAgJ3N1cHByZXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgaGFzaCBzdXBwb3J0LCBpdCBzaG91bGQgaW5jbHVkZSAiX19oYXNoX18gPSBOb25lIiBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgZGVmaW5pdGlvbi4gQSBjbGFzcyB3aGljaCBkZWZpbmVzIGl0cyBvd24gIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICAnICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllZCBhc1xuJworICAgICAgICAgICAgICAgICAgJyAgIGhhc2hhYmxlIGJ5IGFuICJpc2luc3RhbmNlKG9iaiwgY29sbGVjdGlvbnMuSGFzaGFibGUpIiAnCisgICAgICAgICAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBOb3RlOiBCeSBkZWZhdWx0LCB0aGUgIl9faGFzaF9fKCkiIHZhbHVlcyBvZiBzdHIsIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRhdGV0aW1lIG9iamVjdHMgYXJlICJzYWx0ZWQiIHdpdGggYW4gdW5wcmVkaWN0YWJsZSAnCisgICAgICAgICAgICAgICAgICAncmFuZG9tIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAgJ1B5dGhvblxuJworICAgICAgICAgICAgICAgICAgJyAgICAgcHJvY2VzcywgdGhleSBhcmUgbm90IHByZWRpY3RhYmxlIGJldHdlZW4gcmVwZWF0ZWQgJworICAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb25zIG9mXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBQeXRob24uVGhpcyBpcyBpbnRlbmRlZCB0byBwcm92aWRlIHByb3RlY3Rpb24gYWdhaW5zdCAnCisgICAgICAgICAgICAgICAgICAnYSBkZW5pYWwtXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICdleHBsb2l0IHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgd29yc3QgY2FzZSBwZXJmb3JtYW5jZSBvZiBhIGRpY3QgaW5zZXJ0aW9uLCBPKG5eMikgJworICAgICAgICAgICAgICAgICAgJ2NvbXBsZXhpdHkuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBTZWUgJworICAgICAgICAgICAgICAgICAgJ2h0dHA6Ly93d3cub2NlcnQub3JnL2Fkdmlzb3JpZXMvb2NlcnQtMjAxMS0wMDMuaHRtbCBmb3JcbicKKyAgICAgICAgICAgICAgICAgICcgICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICdvcmRlciBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZGljdHMsIHNldHMgYW5kIG90aGVyIG1hcHBpbmdzLiAgUHl0aG9uIGhhcyBuZXZlciBtYWRlICcKKyAgICAgICAgICAgICAgICAgICdndWFyYW50ZWVzXG4nCisgICAgICAgICAgICAgICAgICAnICAgICBhYm91dCB0aGlzIG9yZGVyaW5nIChhbmQgaXQgdHlwaWNhbGx5IHZhcmllcyBiZXR3ZWVuICcKKyAgICAgICAgICAgICAgICAgICczMi1iaXQgYW5kXG4nCisgICAgICAgICAgICAgICAgICAnICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IEhhc2ggcmFuZG9taXphdGlvbiBpcyBlbmFibGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdkZWZhdWx0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Jvb2xfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdHJ1dGggdmFsdWUgdGVzdGluZyBhbmQgdGhlIGJ1aWx0LWluICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgICAgICAgICcgICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyAnCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgJyAgIGRlZmluZWQsICJfX2xlbl9fKCkiIGlzIGNhbGxlZCwgaWYgaXQgaXMgZGVmaW5lZCwgYW5kICcKKyAgICAgICAgICAgICAgICAgICd0aGUgb2JqZWN0IGlzXG4nCisgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlIGlmIGl0cyByZXN1bHQgaXMgbm9uemVyby4gIElmIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzICcKKyAgICAgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUuXG4nLAorICdkZWJ1Z2dlcic6ICdcbicKKyAgICAgICAgICAgICAnInBkYiIgLS0tIFRoZSBQeXRob24gRGVidWdnZXJcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyoqU291cmNlIGNvZGU6KiogTGliL3BkYi5weVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIG1vZHVsZSAicGRiIiBkZWZpbmVzIGFuIGludGVyYWN0aXZlIHNvdXJjZSBjb2RlIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgJ1B5dGhvbiBwcm9ncmFtcy4gIEl0IHN1cHBvcnRzIHNldHRpbmcgKGNvbmRpdGlvbmFsKSBicmVha3BvaW50cyAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICdzaW5nbGUgc3RlcHBpbmcgYXQgdGhlIHNvdXJjZSBsaW5lIGxldmVsLCBpbnNwZWN0aW9uIG9mIHN0YWNrICcKKyAgICAgICAgICAgICAnZnJhbWVzLFxuJworICAgICAgICAgICAgICdzb3VyY2UgY29kZSBsaXN0aW5nLCBhbmQgZXZhbHVhdGlvbiBvZiBhcmJpdHJhcnkgUHl0aG9uIGNvZGUgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnY29udGV4dCBvZiBhbnkgc3RhY2sgZnJhbWUuICBJdCBhbHNvIHN1cHBvcnRzIHBvc3QtbW9ydGVtICcKKyAgICAgICAgICAgICAnZGVidWdnaW5nXG4nCisgICAgICAgICAgICAgJ2FuZCBjYW4gYmUgY2FsbGVkIHVuZGVyIHByb2dyYW0gY29udHJvbC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlciBpcyBleHRlbnNpYmxlIC0tIGl0IGlzIGFjdHVhbGx5IGRlZmluZWQgYXMgdGhlICcKKyAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAnIlBkYiIuIFRoaXMgaXMgY3VycmVudGx5IHVuZG9jdW1lbnRlZCBidXQgZWFzaWx5IHVuZGVyc3Rvb2QgYnkgJworICAgICAgICAgICAgICdyZWFkaW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBzb3VyY2UuICBUaGUgZXh0ZW5zaW9uIGludGVyZmFjZSB1c2VzIHRoZSBtb2R1bGVzICJiZGIiIGFuZCAnCisgICAgICAgICAgICAgJyJjbWQiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGRlYnVnZ2VyXCdzIHByb21wdCBpcyAiKFBkYikiLiBUeXBpY2FsIHVzYWdlIHRvIHJ1biBhICcKKyAgICAgICAgICAgICAncHJvZ3JhbSB1bmRlclxuJworICAgICAgICAgICAgICdjb250cm9sIG9mIHRoZSBkZWJ1Z2dlciBpczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgcGRiXG4nCisgICAgICAgICAgICAgJyAgID4+PiBpbXBvcnQgbXltb2R1bGVcbicKKyAgICAgICAgICAgICAiICAgPj4+IHBkYi5ydW4oJ215bW9kdWxlLnRlc3QoKScpXG4iCisgICAgICAgICAgICAgJyAgID4gPHN0cmluZz4oMCk/KClcbicKKyAgICAgICAgICAgICAnICAgKFBkYikgY29udGludWVcbicKKyAgICAgICAgICAgICAnICAgPiA8c3RyaW5nPigxKT8oKVxuJworICAgICAgICAgICAgICcgICAoUGRiKSBjb250aW51ZVxuJworICAgICAgICAgICAgICIgICBOYW1lRXJyb3I6ICdzcGFtJ1xuIgorICAgICAgICAgICAgICcgICA+IDxzdHJpbmc+KDEpPygpXG4nCisgICAgICAgICAgICAgJyAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBUYWItY29tcGxldGlvbiB2aWEgdGhlICJyZWFkbGluZSIgbW9kdWxlICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnYXZhaWxhYmxlIGZvciBjb21tYW5kcyBhbmQgY29tbWFuZCBhcmd1bWVudHMsIGUuZy4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgICAnYW5kIGxvY2FsIG5hbWVzIGFyZSBvZmZlcmVkIGFzIGFyZ3VtZW50cyBvZiB0aGUgInAiIGNvbW1hbmQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcicGRiLnB5IiBjYW4gYWxzbyBiZSBpbnZva2VkIGFzIGEgc2NyaXB0IHRvIGRlYnVnIG90aGVyICcKKyAgICAgICAgICAgICAnc2NyaXB0cy4gIEZvclxuJworICAgICAgICAgICAgICdleGFtcGxlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgcHl0aG9uMyAtbSBwZGIgbXlzY3JpcHQucHlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1doZW4gaW52b2tlZCBhcyBhIHNjcmlwdCwgcGRiIHdpbGwgYXV0b21hdGljYWxseSBlbnRlciAnCisgICAgICAgICAgICAgJ3Bvc3QtbW9ydGVtXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2luZyBpZiB0aGUgcHJvZ3JhbSBiZWluZyBkZWJ1Z2dlZCBleGl0cyBhYm5vcm1hbGx5LiAgQWZ0ZXIgJworICAgICAgICAgICAgICdwb3N0LVxuJworICAgICAgICAgICAgICdtb3J0ZW0gZGVidWdnaW5nIChvciBhZnRlciBub3JtYWwgZXhpdCBvZiB0aGUgcHJvZ3JhbSksIHBkYiAnCisgICAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgICAicmVzdGFydCB0aGUgcHJvZ3JhbS4gIEF1dG9tYXRpYyByZXN0YXJ0aW5nIHByZXNlcnZlcyBwZGIncyBzdGF0ZSAiCisgICAgICAgICAgICAgJyhzdWNoXG4nCisgICAgICAgICAgICAgJ2FzIGJyZWFrcG9pbnRzKSBhbmQgaW4gbW9zdCBjYXNlcyBpcyBtb3JlIHVzZWZ1bCB0aGFuIHF1aXR0aW5nICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgImRlYnVnZ2VyIHVwb24gcHJvZ3JhbSdzIGV4aXQuXG4iCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjI6ICJwZGIucHkiIG5vdyBhY2NlcHRzIGEgIi1jIiBvcHRpb24gdGhhdCAnCisgICAgICAgICAgICAgJ2V4ZWN1dGVzXG4nCisgICAgICAgICAgICAgJ2NvbW1hbmRzIGFzIGlmIGdpdmVuIGluIGEgIi5wZGJyYyIgZmlsZSwgc2VlIERlYnVnZ2VyIENvbW1hbmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIHR5cGljYWwgdXNhZ2UgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIgZnJvbSBhIHJ1bm5pbmcgJworICAgICAgICAgICAgICdwcm9ncmFtIGlzXG4nCisgICAgICAgICAgICAgJ3RvIGluc2VydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgaW1wb3J0IHBkYjsgcGRiLnNldF90cmFjZSgpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdhdCB0aGUgbG9jYXRpb24geW91IHdhbnQgdG8gYnJlYWsgaW50byB0aGUgZGVidWdnZXIuICBZb3UgY2FuICcKKyAgICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAgICdzdGVwIHRocm91Z2ggdGhlIGNvZGUgZm9sbG93aW5nIHRoaXMgc3RhdGVtZW50LCBhbmQgY29udGludWUgJworICAgICAgICAgICAgICdydW5uaW5nXG4nCisgICAgICAgICAgICAgJ3dpdGhvdXQgdGhlIGRlYnVnZ2VyIHVzaW5nIHRoZSAiY29udGludWUiIGNvbW1hbmQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgdHlwaWNhbCB1c2FnZSB0byBpbnNwZWN0IGEgY3Jhc2hlZCBwcm9ncmFtIGlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBwZGJcbicKKyAgICAgICAgICAgICAnICAgPj4+IGltcG9ydCBteW1vZHVsZVxuJworICAgICAgICAgICAgICcgICA+Pj4gbXltb2R1bGUudGVzdCgpXG4nCisgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA/XG4nCisgICAgICAgICAgICAgJyAgICAgRmlsZSAiLi9teW1vZHVsZS5weSIsIGxpbmUgNCwgaW4gdGVzdFxuJworICAgICAgICAgICAgICcgICAgICAgdGVzdDIoKVxuJworICAgICAgICAgICAgICcgICAgIEZpbGUgIi4vbXltb2R1bGUucHkiLCBsaW5lIDMsIGluIHRlc3QyXG4nCisgICAgICAgICAgICAgJyAgICAgICBwcmludChzcGFtKVxuJworICAgICAgICAgICAgICcgICBOYW1lRXJyb3I6IHNwYW1cbicKKyAgICAgICAgICAgICAnICAgPj4+IHBkYi5wbSgpXG4nCisgICAgICAgICAgICAgJyAgID4gLi9teW1vZHVsZS5weSgzKXRlc3QyKClcbicKKyAgICAgICAgICAgICAnICAgLT4gcHJpbnQoc3BhbSlcbicKKyAgICAgICAgICAgICAnICAgKFBkYilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBtb2R1bGUgZGVmaW5lcyB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczsgZWFjaCBlbnRlcnMgdGhlICcKKyAgICAgICAgICAgICAnZGVidWdnZXJcbicKKyAgICAgICAgICAgICAnaW4gYSBzbGlnaHRseSBkaWZmZXJlbnQgd2F5OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSAqc3RhdGVtZW50KiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlIG9iamVjdCkgJworICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICcgICBkZWJ1Z2dlciBjb250cm9sLiAgVGhlIGRlYnVnZ2VyIHByb21wdCBhcHBlYXJzIGJlZm9yZSBhbnkgJworICAgICAgICAgICAgICdjb2RlIGlzXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGVkOyB5b3UgY2FuIHNldCBicmVha3BvaW50cyBhbmQgdHlwZSAiY29udGludWUiLCBvciB5b3UgJworICAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICAnICAgc3RlcCB0aHJvdWdoIHRoZSBzdGF0ZW1lbnQgdXNpbmcgInN0ZXAiIG9yICJuZXh0IiAoYWxsIHRoZXNlXG4nCisgICAgICAgICAgICAgJyAgIGNvbW1hbmRzIGFyZSBleHBsYWluZWQgYmVsb3cpLiAgVGhlIG9wdGlvbmFsICpnbG9iYWxzKiBhbmQgJworICAgICAgICAgICAgICcqbG9jYWxzKlxuJworICAgICAgICAgICAgICcgICBhcmd1bWVudHMgc3BlY2lmeSB0aGUgZW52aXJvbm1lbnQgaW4gd2hpY2ggdGhlIGNvZGUgaXMgJworICAgICAgICAgICAgICdleGVjdXRlZDsgYnlcbicKKyAgICAgICAgICAgICAnICAgZGVmYXVsdCB0aGUgZGljdGlvbmFyeSBvZiB0aGUgbW9kdWxlICJfX21haW5fXyIgaXMgdXNlZC4gICcKKyAgICAgICAgICAgICAnKFNlZSB0aGVcbicKKyAgICAgICAgICAgICAnICAgZXhwbGFuYXRpb24gb2YgdGhlIGJ1aWx0LWluICJleGVjKCkiIG9yICJldmFsKCkiIGZ1bmN0aW9ucy4pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuZXZhbChleHByZXNzaW9uLCBnbG9iYWxzPU5vbmUsIGxvY2Fscz1Ob25lKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiAoZ2l2ZW4gYXMgYSBzdHJpbmcgb3IgYSBjb2RlICcKKyAgICAgICAgICAgICAnb2JqZWN0KVxuJworICAgICAgICAgICAgICcgICB1bmRlciBkZWJ1Z2dlciBjb250cm9sLiAgV2hlbiAicnVuZXZhbCgpIiByZXR1cm5zLCBpdCByZXR1cm5zICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHZhbHVlIG9mIHRoZSBleHByZXNzaW9uLiAgT3RoZXJ3aXNlIHRoaXMgZnVuY3Rpb24gaXMgc2ltaWxhciAnCisgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgJyAgICJydW4oKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENhbGwgdGhlICpmdW5jdGlvbiogKGEgZnVuY3Rpb24gb3IgbWV0aG9kIG9iamVjdCwgbm90IGEgJworICAgICAgICAgICAgICdzdHJpbmcpXG4nCisgICAgICAgICAgICAgJyAgIHdpdGggdGhlIGdpdmVuIGFyZ3VtZW50cy4gIFdoZW4gInJ1bmNhbGwoKSIgcmV0dXJucywgaXQgJworICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgJyAgIHdoYXRldmVyIHRoZSBmdW5jdGlvbiBjYWxsIHJldHVybmVkLiAgVGhlIGRlYnVnZ2VyIHByb21wdCAnCisgICAgICAgICAgICAgJ2FwcGVhcnNcbicKKyAgICAgICAgICAgICAnICAgYXMgc29vbiBhcyB0aGUgZnVuY3Rpb24gaXMgZW50ZXJlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3BkYi5zZXRfdHJhY2UoKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRW50ZXIgdGhlIGRlYnVnZ2VyIGF0IHRoZSBjYWxsaW5nIHN0YWNrIGZyYW1lLiAgVGhpcyBpcyAnCisgICAgICAgICAgICAgJ3VzZWZ1bCB0b1xuJworICAgICAgICAgICAgICcgICBoYXJkLWNvZGUgYSBicmVha3BvaW50IGF0IGEgZ2l2ZW4gcG9pbnQgaW4gYSBwcm9ncmFtLCBldmVuIGlmICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvZGUgaXMgbm90IG90aGVyd2lzZSBiZWluZyBkZWJ1Z2dlZCAoZS5nLiB3aGVuIGFuIGFzc2VydGlvblxuJworICAgICAgICAgICAgICcgICBmYWlscykuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwZGIucG9zdF9tb3J0ZW0odHJhY2ViYWNrPU5vbmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFbnRlciBwb3N0LW1vcnRlbSBkZWJ1Z2dpbmcgb2YgdGhlIGdpdmVuICp0cmFjZWJhY2sqIG9iamVjdC4gICcKKyAgICAgICAgICAgICAnSWYgbm9cbicKKyAgICAgICAgICAgICAnICAgKnRyYWNlYmFjayogaXMgZ2l2ZW4sIGl0IHVzZXMgdGhlIG9uZSBvZiB0aGUgZXhjZXB0aW9uIHRoYXQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBjdXJyZW50bHkgYmVpbmcgaGFuZGxlZCAoYW4gZXhjZXB0aW9uIG11c3QgYmUgYmVpbmcgaGFuZGxlZCAnCisgICAgICAgICAgICAgJ2lmIHRoZVxuJworICAgICAgICAgICAgICcgICBkZWZhdWx0IGlzIHRvIGJlIHVzZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncGRiLnBtKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVudGVyIHBvc3QtbW9ydGVtIGRlYnVnZ2luZyBvZiB0aGUgdHJhY2ViYWNrIGZvdW5kIGluXG4nCisgICAgICAgICAgICAgJyAgICJzeXMubGFzdF90cmFjZWJhY2siLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJydW4qIiBmdW5jdGlvbnMgYW5kICJzZXRfdHJhY2UoKSIgYXJlIGFsaWFzZXMgZm9yICcKKyAgICAgICAgICAgICAnaW5zdGFudGlhdGluZ1xuJworICAgICAgICAgICAgICd0aGUgIlBkYiIgY2xhc3MgYW5kIGNhbGxpbmcgdGhlIG1ldGhvZCBvZiB0aGUgc2FtZSBuYW1lLiAgSWYgeW91ICcKKyAgICAgICAgICAgICAnd2FudFxuJworICAgICAgICAgICAgICd0byBhY2Nlc3MgZnVydGhlciBmZWF0dXJlcywgeW91IGhhdmUgdG8gZG8gdGhpcyB5b3Vyc2VsZjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgImNsYXNzIHBkYi5QZGIoY29tcGxldGVrZXk9J3RhYicsIHN0ZGluPU5vbmUsIHN0ZG91dD1Ob25lLCAiCisgICAgICAgICAgICAgJ3NraXA9Tm9uZSwgbm9zaWdpbnQ9RmFsc2UsIHJlYWRyYz1UcnVlKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgIlBkYiIgaXMgdGhlIGRlYnVnZ2VyIGNsYXNzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpjb21wbGV0ZWtleSosICpzdGRpbiogYW5kICpzdGRvdXQqIGFyZ3VtZW50cyBhcmUgcGFzc2VkICcKKyAgICAgICAgICAgICAndG8gdGhlXG4nCisgICAgICAgICAgICAgJyAgIHVuZGVybHlpbmcgImNtZC5DbWQiIGNsYXNzOyBzZWUgdGhlIGRlc2NyaXB0aW9uIHRoZXJlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlICpza2lwKiBhcmd1bWVudCwgaWYgZ2l2ZW4sIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgJworICAgICAgICAgICAgICdnbG9iLXN0eWxlXG4nCisgICAgICAgICAgICAgJyAgIG1vZHVsZSBuYW1lIHBhdHRlcm5zLiAgVGhlIGRlYnVnZ2VyIHdpbGwgbm90IHN0ZXAgaW50byBmcmFtZXMgJworICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgJyAgIG9yaWdpbmF0ZSBpbiBhIG1vZHVsZSB0aGF0IG1hdGNoZXMgb25lIG9mIHRoZXNlIHBhdHRlcm5zLiAnCisgICAgICAgICAgICAgJ1sxXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQnkgZGVmYXVsdCwgUGRiIHNldHMgYSBoYW5kbGVyIGZvciB0aGUgU0lHSU5UIHNpZ25hbCAod2hpY2ggJworICAgICAgICAgICAgICdpcyBzZW50XG4nCisgICAgICAgICAgICAgJyAgIHdoZW4gdGhlIHVzZXIgcHJlc3NlcyAiQ3RybC1DIiBvbiB0aGUgY29uc29sZSkgd2hlbiB5b3UgZ2l2ZSAnCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgImNvbnRpbnVlIiBjb21tYW5kLiBUaGlzIGFsbG93cyB5b3UgdG8gYnJlYWsgaW50byB0aGUgJworICAgICAgICAgICAgICdkZWJ1Z2dlclxuJworICAgICAgICAgICAgICcgICBhZ2FpbiBieSBwcmVzc2luZyAiQ3RybC1DIi4gIElmIHlvdSB3YW50IFBkYiBub3QgdG8gdG91Y2ggJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgU0lHSU5UIGhhbmRsZXIsIHNldCAqbm9zaWdpbnQqIHRvIHRydWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgKnJlYWRyYyogYXJndW1lbnQgZGVmYXVsdHMgdG8gdHJ1ZSBhbmQgY29udHJvbHMgd2hldGhlciAnCisgICAgICAgICAgICAgJ1BkYlxuJworICAgICAgICAgICAgICcgICB3aWxsIGxvYWQgLnBkYnJjIGZpbGVzIGZyb20gdGhlIGZpbGVzeXN0ZW0uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGFtcGxlIGNhbGwgdG8gZW5hYmxlIHRyYWNpbmcgd2l0aCAqc2tpcCo6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9WydkamFuZ28uKiddKS5zZXRfdHJhY2UoKVxuIgorICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4xOiBUaGUgKnNraXAqIGFyZ3VtZW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yOiBUaGUgKm5vc2lnaW50KiBhcmd1bWVudC4gIFByZXZpb3VzbHksIGEgJworICAgICAgICAgICAgICdTSUdJTlRcbicKKyAgICAgICAgICAgICAnICAgaGFuZGxlciB3YXMgbmV2ZXIgc2V0IGJ5IFBkYi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFRoZSAqcmVhZHJjKiBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHJ1bihzdGF0ZW1lbnQsIGdsb2JhbHM9Tm9uZSwgbG9jYWxzPU5vbmUpXG4nCisgICAgICAgICAgICAgJyAgIHJ1bmV2YWwoZXhwcmVzc2lvbiwgZ2xvYmFscz1Ob25lLCBsb2NhbHM9Tm9uZSlcbicKKyAgICAgICAgICAgICAnICAgcnVuY2FsbChmdW5jdGlvbiwgKmFyZ3MsICoqa3dkcylcbicKKyAgICAgICAgICAgICAnICAgc2V0X3RyYWNlKClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhlIGZ1bmN0aW9ucyBleHBsYWluZWQgYWJvdmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnRGVidWdnZXIgQ29tbWFuZHNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBjb21tYW5kcyByZWNvZ25pemVkIGJ5IHRoZSBkZWJ1Z2dlciBhcmUgbGlzdGVkIGJlbG93LiAgTW9zdFxuJworICAgICAgICAgICAgICdjb21tYW5kcyBjYW4gYmUgYWJicmV2aWF0ZWQgdG8gb25lIG9yIHR3byBsZXR0ZXJzIGFzIGluZGljYXRlZDsgJworICAgICAgICAgICAgICdlLmcuXG4nCisgICAgICAgICAgICAgJyJoKGVscCkiIG1lYW5zIHRoYXQgZWl0aGVyICJoIiBvciAiaGVscCIgY2FuIGJlIHVzZWQgdG8gZW50ZXIgJworICAgICAgICAgICAgICd0aGUgaGVscFxuJworICAgICAgICAgICAgICdjb21tYW5kIChidXQgbm90ICJoZSIgb3IgImhlbCIsIG5vciAiSCIgb3IgIkhlbHAiIG9yICJIRUxQIikuXG4nCisgICAgICAgICAgICAgJ0FyZ3VtZW50cyB0byBjb21tYW5kcyBtdXN0IGJlIHNlcGFyYXRlZCBieSB3aGl0ZXNwYWNlIChzcGFjZXMgJworICAgICAgICAgICAgICdvclxuJworICAgICAgICAgICAgICd0YWJzKS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBhcmUgZW5jbG9zZWQgaW4gc3F1YXJlIGJyYWNrZXRzICcKKyAgICAgICAgICAgICAnKCJbXSIpIGluXG4nCisgICAgICAgICAgICAgJ3RoZSBjb21tYW5kIHN5bnRheDsgdGhlIHNxdWFyZSBicmFja2V0cyBtdXN0IG5vdCBiZSB0eXBlZC5cbicKKyAgICAgICAgICAgICAnQWx0ZXJuYXRpdmVzIGluIHRoZSBjb21tYW5kIHN5bnRheCBhcmUgc2VwYXJhdGVkIGJ5IGEgdmVydGljYWwgJworICAgICAgICAgICAgICdiYXJcbicKKyAgICAgICAgICAgICAnKCJ8IikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdFbnRlcmluZyBhIGJsYW5rIGxpbmUgcmVwZWF0cyB0aGUgbGFzdCBjb21tYW5kIGVudGVyZWQuICAnCisgICAgICAgICAgICAgJ0V4Y2VwdGlvbjogaWZcbicKKyAgICAgICAgICAgICAndGhlIGxhc3QgY29tbWFuZCB3YXMgYSAibGlzdCIgY29tbWFuZCwgdGhlIG5leHQgMTEgbGluZXMgYXJlICcKKyAgICAgICAgICAgICAnbGlzdGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAiQ29tbWFuZHMgdGhhdCB0aGUgZGVidWdnZXIgZG9lc24ndCByZWNvZ25pemUgYXJlIGFzc3VtZWQgdG8gYmUgIgorICAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICAnc3RhdGVtZW50cyBhbmQgYXJlIGV4ZWN1dGVkIGluIHRoZSBjb250ZXh0IG9mIHRoZSBwcm9ncmFtIGJlaW5nXG4nCisgICAgICAgICAgICAgJ2RlYnVnZ2VkLiAgUHl0aG9uIHN0YXRlbWVudHMgY2FuIGFsc28gYmUgcHJlZml4ZWQgd2l0aCBhbiAnCisgICAgICAgICAgICAgJ2V4Y2xhbWF0aW9uXG4nCisgICAgICAgICAgICAgJ3BvaW50ICgiISIpLiAgVGhpcyBpcyBhIHBvd2VyZnVsIHdheSB0byBpbnNwZWN0IHRoZSBwcm9ncmFtICcKKyAgICAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAgICAnZGVidWdnZWQ7IGl0IGlzIGV2ZW4gcG9zc2libGUgdG8gY2hhbmdlIGEgdmFyaWFibGUgb3IgY2FsbCBhICcKKyAgICAgICAgICAgICAnZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1doZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiBzdWNoIGEgc3RhdGVtZW50LCB0aGUgZXhjZXB0aW9uIG5hbWUgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICJwcmludGVkIGJ1dCB0aGUgZGVidWdnZXIncyBzdGF0ZSBpcyBub3QgY2hhbmdlZC5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBkZWJ1Z2dlciBzdXBwb3J0cyBhbGlhc2VzLiAgQWxpYXNlcyBjYW4gaGF2ZSBwYXJhbWV0ZXJzICcKKyAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAnYWxsb3dzIG9uZSBhIGNlcnRhaW4gbGV2ZWwgb2YgYWRhcHRhYmlsaXR5IHRvIHRoZSBjb250ZXh0IHVuZGVyXG4nCisgICAgICAgICAgICAgJ2V4YW1pbmF0aW9uLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTXVsdGlwbGUgY29tbWFuZHMgbWF5IGJlIGVudGVyZWQgb24gYSBzaW5nbGUgbGluZSwgc2VwYXJhdGVkIGJ5ICcKKyAgICAgICAgICAgICAnIjs7Ii5cbicKKyAgICAgICAgICAgICAnKEEgc2luZ2xlICI7IiBpcyBub3QgdXNlZCBhcyBpdCBpcyB0aGUgc2VwYXJhdG9yIGZvciBtdWx0aXBsZSAnCisgICAgICAgICAgICAgJ2NvbW1hbmRzXG4nCisgICAgICAgICAgICAgJ2luIGEgbGluZSB0aGF0IGlzIHBhc3NlZCB0byB0aGUgUHl0aG9uIHBhcnNlci4pICBObyBpbnRlbGxpZ2VuY2UgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICdhcHBsaWVkIHRvIHNlcGFyYXRpbmcgdGhlIGNvbW1hbmRzOyB0aGUgaW5wdXQgaXMgc3BsaXQgYXQgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnIjs7IiBwYWlyLCBldmVuIGlmIGl0IGlzIGluIHRoZSBtaWRkbGUgb2YgYSBxdW90ZWQgc3RyaW5nLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSWYgYSBmaWxlICIucGRicmMiIGV4aXN0cyBpbiB0aGUgdXNlclwncyBob21lIGRpcmVjdG9yeSBvciBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjdXJyZW50IGRpcmVjdG9yeSwgaXQgaXMgcmVhZCBpbiBhbmQgZXhlY3V0ZWQgYXMgaWYgaXQgaGFkIGJlZW4gJworICAgICAgICAgICAgICd0eXBlZFxuJworICAgICAgICAgICAgICdhdCB0aGUgZGVidWdnZXIgcHJvbXB0LiAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGZvciAnCisgICAgICAgICAgICAgJ2FsaWFzZXMuICBJZlxuJworICAgICAgICAgICAgICdib3RoIGZpbGVzIGV4aXN0LCB0aGUgb25lIGluIHRoZSBob21lIGRpcmVjdG9yeSBpcyByZWFkIGZpcnN0ICcKKyAgICAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgICAgJ2FsaWFzZXMgZGVmaW5lZCB0aGVyZSBjYW4gYmUgb3ZlcnJpZGRlbiBieSB0aGUgbG9jYWwgZmlsZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjI6ICIucGRicmMiIGNhbiBub3cgY29udGFpbiBjb21tYW5kcyB0aGF0XG4nCisgICAgICAgICAgICAgJ2NvbnRpbnVlIGRlYnVnZ2luZywgc3VjaCBhcyAiY29udGludWUiIG9yICJuZXh0Ii4gIFByZXZpb3VzbHksICcKKyAgICAgICAgICAgICAndGhlc2VcbicKKyAgICAgICAgICAgICAnY29tbWFuZHMgaGFkIG5vIGVmZmVjdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2goZWxwKSBbY29tbWFuZF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIHByaW50IHRoZSBsaXN0IG9mIGF2YWlsYWJsZSBjb21tYW5kcy4gIFdpdGggJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgICpjb21tYW5kKiBhcyBhcmd1bWVudCwgcHJpbnQgaGVscCBhYm91dCB0aGF0IGNvbW1hbmQuICAiaGVscCAnCisgICAgICAgICAgICAgJ3BkYiJcbicKKyAgICAgICAgICAgICAnICAgZGlzcGxheXMgdGhlIGZ1bGwgZG9jdW1lbnRhdGlvbiAodGhlIGRvY3N0cmluZyBvZiB0aGUgInBkYiJcbicKKyAgICAgICAgICAgICAnICAgbW9kdWxlKS4gIFNpbmNlIHRoZSAqY29tbWFuZCogYXJndW1lbnQgbXVzdCBiZSBhbiBpZGVudGlmaWVyLCAnCisgICAgICAgICAgICAgJyJoZWxwXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWMiIG11c3QgYmUgZW50ZXJlZCB0byBnZXQgaGVscCBvbiB0aGUgIiEiIGNvbW1hbmQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd3KGhlcmUpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCBhIHN0YWNrIHRyYWNlLCB3aXRoIHRoZSBtb3N0IHJlY2VudCBmcmFtZSBhdCB0aGUgJworICAgICAgICAgICAgICdib3R0b20uICBBblxuJworICAgICAgICAgICAgICcgICBhcnJvdyBpbmRpY2F0ZXMgdGhlIGN1cnJlbnQgZnJhbWUsIHdoaWNoIGRldGVybWluZXMgdGhlICcKKyAgICAgICAgICAgICAnY29udGV4dCBvZlxuJworICAgICAgICAgICAgICcgICBtb3N0IGNvbW1hbmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZChvd24pIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE1vdmUgdGhlIGN1cnJlbnQgZnJhbWUgKmNvdW50KiAoZGVmYXVsdCBvbmUpIGxldmVscyBkb3duIGluICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJyAgIHN0YWNrIHRyYWNlICh0byBhIG5ld2VyIGZyYW1lKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3UocCkgW2NvdW50XVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTW92ZSB0aGUgY3VycmVudCBmcmFtZSAqY291bnQqIChkZWZhdWx0IG9uZSkgbGV2ZWxzIHVwIGluIHRoZSAnCisgICAgICAgICAgICAgJ3N0YWNrXG4nCisgICAgICAgICAgICAgJyAgIHRyYWNlICh0byBhbiBvbGRlciBmcmFtZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdiKHJlYWspIFsoW2ZpbGVuYW1lOl1saW5lbm8gfCBmdW5jdGlvbikgWywgY29uZGl0aW9uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGggYSAqbGluZW5vKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgdGhlcmUgaW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdmaWxlLlxuJworICAgICAgICAgICAgICcgICBXaXRoIGEgKmZ1bmN0aW9uKiBhcmd1bWVudCwgc2V0IGEgYnJlYWsgYXQgdGhlIGZpcnN0ICcKKyAgICAgICAgICAgICAnZXhlY3V0YWJsZVxuJworICAgICAgICAgICAgICcgICBzdGF0ZW1lbnQgd2l0aGluIHRoYXQgZnVuY3Rpb24uICBUaGUgbGluZSBudW1iZXIgbWF5IGJlICcKKyAgICAgICAgICAgICAncHJlZml4ZWRcbicKKyAgICAgICAgICAgICAnICAgd2l0aCBhIGZpbGVuYW1lIGFuZCBhIGNvbG9uLCB0byBzcGVjaWZ5IGEgYnJlYWtwb2ludCBpbiAnCisgICAgICAgICAgICAgJ2Fub3RoZXJcbicKKyAgICAgICAgICAgICAiICAgZmlsZSAocHJvYmFibHkgb25lIHRoYXQgaGFzbid0IGJlZW4gbG9hZGVkIHlldCkuICBUaGUgZmlsZSAiCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgIHNlYXJjaGVkIG9uICJzeXMucGF0aCIuICBOb3RlIHRoYXQgZWFjaCBicmVha3BvaW50IGlzICcKKyAgICAgICAgICAgICAnYXNzaWduZWQgYVxuJworICAgICAgICAgICAgICcgICBudW1iZXIgdG8gd2hpY2ggYWxsIHRoZSBvdGhlciBicmVha3BvaW50IGNvbW1hbmRzIHJlZmVyLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgSWYgYSBzZWNvbmQgYXJndW1lbnQgaXMgcHJlc2VudCwgaXQgaXMgYW4gZXhwcmVzc2lvbiB3aGljaCAnCisgICAgICAgICAgICAgJ211c3RcbicKKyAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdG8gdHJ1ZSBiZWZvcmUgdGhlIGJyZWFrcG9pbnQgaXMgaG9ub3JlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgYXJndW1lbnQsIGxpc3QgYWxsIGJyZWFrcywgaW5jbHVkaW5nIGZvciBlYWNoICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludCxcbicKKyAgICAgICAgICAgICAnICAgdGhlIG51bWJlciBvZiB0aW1lcyB0aGF0IGJyZWFrcG9pbnQgaGFzIGJlZW4gaGl0LCB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGlnbm9yZSBjb3VudCwgYW5kIHRoZSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBpZiBhbnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICd0YnJlYWsgWyhbZmlsZW5hbWU6XWxpbmVubyB8IGZ1bmN0aW9uKSBbLCBjb25kaXRpb25dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGVtcG9yYXJ5IGJyZWFrcG9pbnQsIHdoaWNoIGlzIHJlbW92ZWQgYXV0b21hdGljYWxseSB3aGVuIGl0ICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAnICAgZmlyc3QgaGl0LiBUaGUgYXJndW1lbnRzIGFyZSB0aGUgc2FtZSBhcyBmb3IgImJyZWFrIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsKGVhcikgW2ZpbGVuYW1lOmxpbmVubyB8IGJwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBhICpmaWxlbmFtZTpsaW5lbm8qIGFyZ3VtZW50LCBjbGVhciBhbGwgdGhlIGJyZWFrcG9pbnRzICcKKyAgICAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAgICAnICAgdGhpcyBsaW5lLiBXaXRoIGEgc3BhY2Ugc2VwYXJhdGVkIGxpc3Qgb2YgYnJlYWtwb2ludCBudW1iZXJzLCAnCisgICAgICAgICAgICAgJ2NsZWFyXG4nCisgICAgICAgICAgICAgJyAgIHRob3NlIGJyZWFrcG9pbnRzLiBXaXRob3V0IGFyZ3VtZW50LCBjbGVhciBhbGwgYnJlYWtzIChidXQgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICBhc2sgY29uZmlybWF0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Rpc2FibGUgW2JwbnVtYmVyIFticG51bWJlciAuLi5dXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRGlzYWJsZSB0aGUgYnJlYWtwb2ludHMgZ2l2ZW4gYXMgYSBzcGFjZSBzZXBhcmF0ZWQgbGlzdCBvZlxuJworICAgICAgICAgICAgICcgICBicmVha3BvaW50IG51bWJlcnMuICBEaXNhYmxpbmcgYSBicmVha3BvaW50IG1lYW5zIGl0IGNhbm5vdCAnCisgICAgICAgICAgICAgJ2NhdXNlXG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwcm9ncmFtIHRvIHN0b3AgZXhlY3V0aW9uLCBidXQgdW5saWtlIGNsZWFyaW5nIGEgJworICAgICAgICAgICAgICdicmVha3BvaW50LCBpdFxuJworICAgICAgICAgICAgICcgICByZW1haW5zIGluIHRoZSBsaXN0IG9mIGJyZWFrcG9pbnRzIGFuZCBjYW4gYmUgKHJlLSllbmFibGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnZW5hYmxlIFticG51bWJlciBbYnBudW1iZXIgLi4uXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEVuYWJsZSB0aGUgYnJlYWtwb2ludHMgc3BlY2lmaWVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnaWdub3JlIGJwbnVtYmVyIFtjb3VudF1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNldCB0aGUgaWdub3JlIGNvdW50IGZvciB0aGUgZ2l2ZW4gYnJlYWtwb2ludCBudW1iZXIuICBJZiAnCisgICAgICAgICAgICAgJ2NvdW50IGlzXG4nCisgICAgICAgICAgICAgJyAgIG9taXR0ZWQsIHRoZSBpZ25vcmUgY291bnQgaXMgc2V0IHRvIDAuICBBIGJyZWFrcG9pbnQgYmVjb21lcyAnCisgICAgICAgICAgICAgJ2FjdGl2ZVxuJworICAgICAgICAgICAgICcgICB3aGVuIHRoZSBpZ25vcmUgY291bnQgaXMgemVyby4gIFdoZW4gbm9uLXplcm8sIHRoZSBjb3VudCBpc1xuJworICAgICAgICAgICAgICcgICBkZWNyZW1lbnRlZCBlYWNoIHRpbWUgdGhlIGJyZWFrcG9pbnQgaXMgcmVhY2hlZCBhbmQgdGhlICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBpcyBub3QgZGlzYWJsZWQgYW5kIGFueSBhc3NvY2lhdGVkIGNvbmRpdGlvbiBldmFsdWF0ZXMgdG8gJworICAgICAgICAgICAgICd0cnVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnY29uZGl0aW9uIGJwbnVtYmVyIFtjb25kaXRpb25dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgYSBuZXcgKmNvbmRpdGlvbiogZm9yIHRoZSBicmVha3BvaW50LCBhbiBleHByZXNzaW9uIHdoaWNoICcKKyAgICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAgICcgICBldmFsdWF0ZSB0byB0cnVlIGJlZm9yZSB0aGUgYnJlYWtwb2ludCBpcyBob25vcmVkLiAgSWYgJworICAgICAgICAgICAgICcqY29uZGl0aW9uKlxuJworICAgICAgICAgICAgICcgICBpcyBhYnNlbnQsIGFueSBleGlzdGluZyBjb25kaXRpb24gaXMgcmVtb3ZlZDsgaS5lLiwgdGhlICcKKyAgICAgICAgICAgICAnYnJlYWtwb2ludFxuJworICAgICAgICAgICAgICcgICBpcyBtYWRlIHVuY29uZGl0aW9uYWwuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjb21tYW5kcyBbYnBudW1iZXJdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTcGVjaWZ5IGEgbGlzdCBvZiBjb21tYW5kcyBmb3IgYnJlYWtwb2ludCBudW1iZXIgKmJwbnVtYmVyKi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvbW1hbmRzIHRoZW1zZWx2ZXMgYXBwZWFyIG9uIHRoZSBmb2xsb3dpbmcgbGluZXMuICBUeXBlIGEgJworICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgJyAgIGNvbnRhaW5pbmcganVzdCAiZW5kIiB0byB0ZXJtaW5hdGUgdGhlIGNvbW1hbmRzLiBBbiBleGFtcGxlOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKFBkYikgY29tbWFuZHMgMVxuJworICAgICAgICAgICAgICcgICAgICAoY29tKSBwIHNvbWVfdmFyaWFibGVcbicKKyAgICAgICAgICAgICAnICAgICAgKGNvbSkgZW5kXG4nCisgICAgICAgICAgICAgJyAgICAgIChQZGIpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUbyByZW1vdmUgYWxsIGNvbW1hbmRzIGZyb20gYSBicmVha3BvaW50LCB0eXBlIGNvbW1hbmRzIGFuZCAnCisgICAgICAgICAgICAgJ2ZvbGxvd1xuJworICAgICAgICAgICAgICcgICBpdCBpbW1lZGlhdGVseSB3aXRoICJlbmQiOyB0aGF0IGlzLCBnaXZlIG5vIGNvbW1hbmRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aCBubyAqYnBudW1iZXIqIGFyZ3VtZW50LCBjb21tYW5kcyByZWZlcnMgdG8gdGhlIGxhc3QgJworICAgICAgICAgICAgICdicmVha3BvaW50XG4nCisgICAgICAgICAgICAgJyAgIHNldC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFlvdSBjYW4gdXNlIGJyZWFrcG9pbnQgY29tbWFuZHMgdG8gc3RhcnQgeW91ciBwcm9ncmFtIHVwICcKKyAgICAgICAgICAgICAnYWdhaW4uXG4nCisgICAgICAgICAgICAgJyAgIFNpbXBseSB1c2UgdGhlIGNvbnRpbnVlIGNvbW1hbmQsIG9yIHN0ZXAsIG9yIGFueSBvdGhlciAnCisgICAgICAgICAgICAgJ2NvbW1hbmQgdGhhdFxuJworICAgICAgICAgICAgICcgICByZXN1bWVzIGV4ZWN1dGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFNwZWNpZnlpbmcgYW55IGNvbW1hbmQgcmVzdW1pbmcgZXhlY3V0aW9uIChjdXJyZW50bHkgJworICAgICAgICAgICAgICdjb250aW51ZSxcbicKKyAgICAgICAgICAgICAnICAgc3RlcCwgbmV4dCwgcmV0dXJuLCBqdW1wLCBxdWl0IGFuZCB0aGVpciBhYmJyZXZpYXRpb25zKSAnCisgICAgICAgICAgICAgJ3Rlcm1pbmF0ZXNcbicKKyAgICAgICAgICAgICAnICAgdGhlIGNvbW1hbmQgbGlzdCAoYXMgaWYgdGhhdCBjb21tYW5kIHdhcyBpbW1lZGlhdGVseSBmb2xsb3dlZCAnCisgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgJyAgIGVuZCkuIFRoaXMgaXMgYmVjYXVzZSBhbnkgdGltZSB5b3UgcmVzdW1lIGV4ZWN1dGlvbiAoZXZlbiAnCisgICAgICAgICAgICAgJ3dpdGggYVxuJworICAgICAgICAgICAgICcgICBzaW1wbGUgbmV4dCBvciBzdGVwKSwgeW91IG1heSBlbmNvdW50ZXIgYW5vdGhlciAnCisgICAgICAgICAgICAgJ2JyZWFrcG9pbnQtLXdoaWNoXG4nCisgICAgICAgICAgICAgJyAgIGNvdWxkIGhhdmUgaXRzIG93biBjb21tYW5kIGxpc3QsIGxlYWRpbmcgdG8gYW1iaWd1aXRpZXMgYWJvdXQgJworICAgICAgICAgICAgICd3aGljaFxuJworICAgICAgICAgICAgICcgICBsaXN0IHRvIGV4ZWN1dGUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIgICBJZiB5b3UgdXNlIHRoZSAnc2lsZW50JyBjb21tYW5kIGluIHRoZSBjb21tYW5kIGxpc3QsIHRoZSAiCisgICAgICAgICAgICAgJ3VzdWFsXG4nCisgICAgICAgICAgICAgJyAgIG1lc3NhZ2UgYWJvdXQgc3RvcHBpbmcgYXQgYSBicmVha3BvaW50IGlzIG5vdCBwcmludGVkLiAgVGhpcyAnCisgICAgICAgICAgICAgJ21heSBiZVxuJworICAgICAgICAgICAgICcgICBkZXNpcmFibGUgZm9yIGJyZWFrcG9pbnRzIHRoYXQgYXJlIHRvIHByaW50IGEgc3BlY2lmaWMgJworICAgICAgICAgICAgICdtZXNzYWdlIGFuZFxuJworICAgICAgICAgICAgICcgICB0aGVuIGNvbnRpbnVlLiAgSWYgbm9uZSBvZiB0aGUgb3RoZXIgY29tbWFuZHMgcHJpbnQgYW55dGhpbmcsICcKKyAgICAgICAgICAgICAneW91XG4nCisgICAgICAgICAgICAgJyAgIHNlZSBubyBzaWduIHRoYXQgdGhlIGJyZWFrcG9pbnQgd2FzIHJlYWNoZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzKHRlcClcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEV4ZWN1dGUgdGhlIGN1cnJlbnQgbGluZSwgc3RvcCBhdCB0aGUgZmlyc3QgcG9zc2libGUgJworICAgICAgICAgICAgICdvY2Nhc2lvblxuJworICAgICAgICAgICAgICcgICAoZWl0aGVyIGluIGEgZnVuY3Rpb24gdGhhdCBpcyBjYWxsZWQgb3Igb24gdGhlIG5leHQgbGluZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBjdXJyZW50IGZ1bmN0aW9uKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ24oZXh0KVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICcgICByZWFjaGVkIG9yIGl0IHJldHVybnMuICAoVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiAibmV4dCIgYW5kICcKKyAgICAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgICAgJyAgIGlzIHRoYXQgInN0ZXAiIHN0b3BzIGluc2lkZSBhIGNhbGxlZCBmdW5jdGlvbiwgd2hpbGUgIm5leHQiXG4nCisgICAgICAgICAgICAgJyAgIGV4ZWN1dGVzIGNhbGxlZCBmdW5jdGlvbnMgYXQgKG5lYXJseSkgZnVsbCBzcGVlZCwgb25seSAnCisgICAgICAgICAgICAgJ3N0b3BwaW5nIGF0XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBuZXh0IGxpbmUgaW4gdGhlIGN1cnJlbnQgZnVuY3Rpb24uKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW50KGlsKSBbbGluZW5vXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBhcmd1bWVudCwgY29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBsaW5lIHdpdGggYSAnCisgICAgICAgICAgICAgJ251bWJlclxuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgb25lIGlzIHJlYWNoZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBXaXRoIGEgbGluZSBudW1iZXIsIGNvbnRpbnVlIGV4ZWN1dGlvbiB1bnRpbCBhIGxpbmUgd2l0aCBhICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJyAgIGdyZWF0ZXIgb3IgZXF1YWwgdG8gdGhhdCBpcyByZWFjaGVkLiAgSW4gYm90aCBjYXNlcywgYWxzbyAnCisgICAgICAgICAgICAgJ3N0b3Agd2hlblxuJworICAgICAgICAgICAgICcgICB0aGUgY3VycmVudCBmcmFtZSByZXR1cm5zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMjogQWxsb3cgZ2l2aW5nIGFuIGV4cGxpY2l0IGxpbmUgJworICAgICAgICAgICAgICdudW1iZXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdyKGV0dXJuKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQ29udGludWUgZXhlY3V0aW9uIHVudGlsIHRoZSBjdXJyZW50IGZ1bmN0aW9uIHJldHVybnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjKG9udChpbnVlKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENvbnRpbnVlIGV4ZWN1dGlvbiwgb25seSBzdG9wIHdoZW4gYSBicmVha3BvaW50IGlzICcKKyAgICAgICAgICAgICAnZW5jb3VudGVyZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdqKHVtcCkgbGluZW5vXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBTZXQgdGhlIG5leHQgbGluZSB0aGF0IHdpbGwgYmUgZXhlY3V0ZWQuICBPbmx5IGF2YWlsYWJsZSBpbiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBib3R0b20tbW9zdCBmcmFtZS4gIFRoaXMgbGV0cyB5b3UganVtcCBiYWNrIGFuZCBleGVjdXRlIGNvZGUgJworICAgICAgICAgICAgICdhZ2FpbixcbicKKyAgICAgICAgICAgICAiICAgb3IganVtcCBmb3J3YXJkIHRvIHNraXAgY29kZSB0aGF0IHlvdSBkb24ndCB3YW50IHRvIHJ1bi5cbiIKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IG5vdCBhbGwganVtcHMgYXJlIGFsbG93ZWQgLS0gZm9yICcKKyAgICAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAgICAnICAgaXQgaXMgbm90IHBvc3NpYmxlIHRvIGp1bXAgaW50byB0aGUgbWlkZGxlIG9mIGEgImZvciIgbG9vcCBvciAnCisgICAgICAgICAgICAgJ291dFxuJworICAgICAgICAgICAgICcgICBvZiBhICJmaW5hbGx5IiBjbGF1c2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdsKGlzdCkgW2ZpcnN0WywgbGFzdF1dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0IHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmaWxlLiAgV2l0aG91dCBhcmd1bWVudHMsICcKKyAgICAgICAgICAgICAnbGlzdCAxMVxuJworICAgICAgICAgICAgICcgICBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZSBvciBjb250aW51ZSB0aGUgcHJldmlvdXMgJworICAgICAgICAgICAgICdsaXN0aW5nLlxuJworICAgICAgICAgICAgICcgICBXaXRoICIuIiBhcyBhcmd1bWVudCwgbGlzdCAxMSBsaW5lcyBhcm91bmQgdGhlIGN1cnJlbnQgbGluZS4gICcKKyAgICAgICAgICAgICAnV2l0aFxuJworICAgICAgICAgICAgICcgICBvbmUgYXJndW1lbnQsIGxpc3QgMTEgbGluZXMgYXJvdW5kIGF0IHRoYXQgbGluZS4gIFdpdGggdHdvXG4nCisgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cywgbGlzdCB0aGUgZ2l2ZW4gcmFuZ2U7IGlmIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMgJworICAgICAgICAgICAgICdsZXNzXG4nCisgICAgICAgICAgICAgJyAgIHRoYW4gdGhlIGZpcnN0LCBpdCBpcyBpbnRlcnByZXRlZCBhcyBhIGNvdW50LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVGhlIGN1cnJlbnQgbGluZSBpbiB0aGUgY3VycmVudCBmcmFtZSBpcyBpbmRpY2F0ZWQgYnkgIi0+Ii4gICcKKyAgICAgICAgICAgICAnSWYgYW5cbicKKyAgICAgICAgICAgICAnICAgZXhjZXB0aW9uIGlzIGJlaW5nIGRlYnVnZ2VkLCB0aGUgbGluZSB3aGVyZSB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgICAgJyAgIG9yaWdpbmFsbHkgcmFpc2VkIG9yIHByb3BhZ2F0ZWQgaXMgaW5kaWNhdGVkIGJ5ICI+PiIsIGlmIGl0ICcKKyAgICAgICAgICAgICAnZGlmZmVyc1xuJworICAgICAgICAgICAgICcgICBmcm9tIHRoZSBjdXJyZW50IGxpbmUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjI6IFRoZSAiPj4iIG1hcmtlci5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2xsIHwgbG9uZ2xpc3RcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIExpc3QgYWxsIHNvdXJjZSBjb2RlIGZvciB0aGUgY3VycmVudCBmdW5jdGlvbiBvciBmcmFtZS5cbicKKyAgICAgICAgICAgICAnICAgSW50ZXJlc3RpbmcgbGluZXMgYXJlIG1hcmtlZCBhcyBmb3IgImxpc3QiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnYShyZ3MpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBQcmludCB0aGUgYXJndW1lbnQgbGlzdCBvZiB0aGUgY3VycmVudCBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ3AgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRXZhbHVhdGUgdGhlICpleHByZXNzaW9uKiBpbiB0aGUgY3VycmVudCBjb250ZXh0IGFuZCBwcmludCAnCisgICAgICAgICAgICAgJ2l0c1xuJworICAgICAgICAgICAgICcgICB2YWx1ZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5vdGU6ICJwcmludCgpIiBjYW4gYWxzbyBiZSB1c2VkLCBidXQgaXMgbm90IGEgZGVidWdnZXIgJworICAgICAgICAgICAgICdjb21tYW5kXG4nCisgICAgICAgICAgICAgJyAgICAgLS0tIHRoaXMgZXhlY3V0ZXMgdGhlIFB5dGhvbiAicHJpbnQoKSIgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdwcCBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaWtlIHRoZSAicCIgY29tbWFuZCwgZXhjZXB0IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpcyAnCisgICAgICAgICAgICAgJ3ByZXR0eS1cbicKKyAgICAgICAgICAgICAnICAgcHJpbnRlZCB1c2luZyB0aGUgInBwcmludCIgbW9kdWxlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnd2hhdGlzIGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFByaW50IHRoZSB0eXBlIG9mIHRoZSAqZXhwcmVzc2lvbiouXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdzb3VyY2UgZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgVHJ5IHRvIGdldCBzb3VyY2UgY29kZSBmb3IgdGhlIGdpdmVuIG9iamVjdCBhbmQgZGlzcGxheSBpdC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2Rpc3BsYXkgW2V4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEaXNwbGF5IHRoZSB2YWx1ZSBvZiB0aGUgZXhwcmVzc2lvbiBpZiBpdCBjaGFuZ2VkLCBlYWNoIHRpbWVcbicKKyAgICAgICAgICAgICAnICAgZXhlY3V0aW9uIHN0b3BzIGluIHRoZSBjdXJyZW50IGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgV2l0aG91dCBleHByZXNzaW9uLCBsaXN0IGFsbCBkaXNwbGF5IGV4cHJlc3Npb25zIGZvciB0aGUgJworICAgICAgICAgICAgICdjdXJyZW50XG4nCisgICAgICAgICAgICAgJyAgIGZyYW1lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW5kaXNwbGF5IFtleHByZXNzaW9uXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRG8gbm90IGRpc3BsYXkgdGhlIGV4cHJlc3Npb24gYW55IG1vcmUgaW4gdGhlIGN1cnJlbnQgZnJhbWUuXG4nCisgICAgICAgICAgICAgJyAgIFdpdGhvdXQgZXhwcmVzc2lvbiwgY2xlYXIgYWxsIGRpc3BsYXkgZXhwcmVzc2lvbnMgZm9yIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgZnJhbWUuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdpbnRlcmFjdFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgU3RhcnQgYW4gaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIgKHVzaW5nIHRoZSAiY29kZSIgbW9kdWxlKSAnCisgICAgICAgICAgICAgJ3dob3NlXG4nCisgICAgICAgICAgICAgJyAgIGdsb2JhbCBuYW1lc3BhY2UgY29udGFpbnMgYWxsIHRoZSAoZ2xvYmFsIGFuZCBsb2NhbCkgbmFtZXMgJworICAgICAgICAgICAgICdmb3VuZCBpblxuJworICAgICAgICAgICAgICcgICB0aGUgY3VycmVudCBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2FsaWFzIFtuYW1lIFtjb21tYW5kXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIENyZWF0ZSBhbiBhbGlhcyBjYWxsZWQgKm5hbWUqIHRoYXQgZXhlY3V0ZXMgKmNvbW1hbmQqLiAgVGhlICcKKyAgICAgICAgICAgICAnY29tbWFuZFxuJworICAgICAgICAgICAgICcgICBtdXN0ICpub3QqIGJlIGVuY2xvc2VkIGluIHF1b3Rlcy4gIFJlcGxhY2VhYmxlIHBhcmFtZXRlcnMgY2FuICcKKyAgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICAnICAgaW5kaWNhdGVkIGJ5ICIlMSIsICIlMiIsIGFuZCBzbyBvbiwgd2hpbGUgIiUqIiBpcyByZXBsYWNlZCBieSAnCisgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICcgICB0aGUgcGFyYW1ldGVycy4gSWYgbm8gY29tbWFuZCBpcyBnaXZlbiwgdGhlIGN1cnJlbnQgYWxpYXMgJworICAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICAnICAgKm5hbWUqIGlzIHNob3duLiBJZiBubyBhcmd1bWVudHMgYXJlIGdpdmVuLCBhbGwgYWxpYXNlcyBhcmUgJworICAgICAgICAgICAgICdsaXN0ZWQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBBbGlhc2VzIG1heSBiZSBuZXN0ZWQgYW5kIGNhbiBjb250YWluIGFueXRoaW5nIHRoYXQgY2FuIGJlICcKKyAgICAgICAgICAgICAnbGVnYWxseVxuJworICAgICAgICAgICAgICcgICB0eXBlZCBhdCB0aGUgcGRiIHByb21wdC4gIE5vdGUgdGhhdCBpbnRlcm5hbCBwZGIgY29tbWFuZHMgJworICAgICAgICAgICAgICcqY2FuKiBiZVxuJworICAgICAgICAgICAgICcgICBvdmVycmlkZGVuIGJ5IGFsaWFzZXMuICBTdWNoIGEgY29tbWFuZCBpcyB0aGVuIGhpZGRlbiB1bnRpbCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBhbGlhcyBpcyByZW1vdmVkLiAgQWxpYXNpbmcgaXMgcmVjdXJzaXZlbHkgYXBwbGllZCB0byB0aGUgJworICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICcgICB3b3JkIG9mIHRoZSBjb21tYW5kIGxpbmU7IGFsbCBvdGhlciB3b3JkcyBpbiB0aGUgbGluZSBhcmUgJworICAgICAgICAgICAgICdsZWZ0XG4nCisgICAgICAgICAgICAgJyAgIGFsb25lLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQXMgYW4gZXhhbXBsZSwgaGVyZSBhcmUgdHdvIHVzZWZ1bCBhbGlhc2VzIChlc3BlY2lhbGx5IHdoZW4gJworICAgICAgICAgICAgICdwbGFjZWRcbicKKyAgICAgICAgICAgICAnICAgaW4gdGhlICIucGRicmMiIGZpbGUpOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgIyBQcmludCBpbnN0YW5jZSB2YXJpYWJsZXMgKHVzYWdlICJwaSBjbGFzc0luc3QiKVxuJworICAgICAgICAgICAgICcgICAgICBhbGlhcyBwaSBmb3IgayBpbiAlMS5fX2RpY3RfXy5rZXlzKCk6ICcKKyAgICAgICAgICAgICAncHJpbnQoIiUxLiIsaywiPSIsJTEuX19kaWN0X19ba10pXG4nCisgICAgICAgICAgICAgJyAgICAgICMgUHJpbnQgaW5zdGFuY2UgdmFyaWFibGVzIGluIHNlbGZcbicKKyAgICAgICAgICAgICAnICAgICAgYWxpYXMgcHMgcGkgc2VsZlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAndW5hbGlhcyBuYW1lXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBEZWxldGUgdGhlIHNwZWNpZmllZCBhbGlhcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyEgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBFeGVjdXRlIHRoZSAob25lLWxpbmUpICpzdGF0ZW1lbnQqIGluIHRoZSBjb250ZXh0IG9mIHRoZSAnCisgICAgICAgICAgICAgJ2N1cnJlbnRcbicKKyAgICAgICAgICAgICAnICAgc3RhY2sgZnJhbWUuIFRoZSBleGNsYW1hdGlvbiBwb2ludCBjYW4gYmUgb21pdHRlZCB1bmxlc3MgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnICAgd29yZCBvZiB0aGUgc3RhdGVtZW50IHJlc2VtYmxlcyBhIGRlYnVnZ2VyIGNvbW1hbmQuICBUbyBzZXQgJworICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIGdsb2JhbCB2YXJpYWJsZSwgeW91IGNhbiBwcmVmaXggdGhlIGFzc2lnbm1lbnQgY29tbWFuZCB3aXRoICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICcgICAiZ2xvYmFsIiBzdGF0ZW1lbnQgb24gdGhlIHNhbWUgbGluZSwgZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIiAgICAgIChQZGIpIGdsb2JhbCBsaXN0X29wdGlvbnM7IGxpc3Rfb3B0aW9ucyA9IFsnLWwnXVxuIgorICAgICAgICAgICAgICcgICAgICAoUGRiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncnVuIFthcmdzIC4uLl1cbicKKyAgICAgICAgICAgICAncmVzdGFydCBbYXJncyAuLi5dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSZXN0YXJ0IHRoZSBkZWJ1Z2dlZCBQeXRob24gcHJvZ3JhbS4gIElmIGFuIGFyZ3VtZW50IGlzICcKKyAgICAgICAgICAgICAnc3VwcGxpZWQsXG4nCisgICAgICAgICAgICAgJyAgIGl0IGlzIHNwbGl0IHdpdGggInNobGV4IiBhbmQgdGhlIHJlc3VsdCBpcyB1c2VkIGFzIHRoZSBuZXdcbicKKyAgICAgICAgICAgICAnICAgInN5cy5hcmd2Ii4gSGlzdG9yeSwgYnJlYWtwb2ludHMsIGFjdGlvbnMgYW5kIGRlYnVnZ2VyICcKKyAgICAgICAgICAgICAnb3B0aW9ucyBhcmVcbicKKyAgICAgICAgICAgICAnICAgcHJlc2VydmVkLiAicmVzdGFydCIgaXMgYW4gYWxpYXMgZm9yICJydW4iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAncSh1aXQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBRdWl0IGZyb20gdGhlIGRlYnVnZ2VyLiAgVGhlIHByb2dyYW0gYmVpbmcgZXhlY3V0ZWQgaXMgJworICAgICAgICAgICAgICdhYm9ydGVkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdbMV0gV2hldGhlciBhIGZyYW1lIGlzIGNvbnNpZGVyZWQgdG8gb3JpZ2luYXRlIGluIGEgY2VydGFpbiAnCisgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICcgICAgaXMgZGV0ZXJtaW5lZCBieSB0aGUgIl9fbmFtZV9fIiBpbiB0aGUgZnJhbWUgZ2xvYmFscy5cbicsCisgJ2RlbCc6ICdcbicKKyAgICAgICAgJ1RoZSAiZGVsIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZGVsX3N0bXQgOjo9ICJkZWwiIHRhcmdldF9saXN0XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIGlzIHJlY3Vyc2l2ZWx5IGRlZmluZWQgdmVyeSBzaW1pbGFyIHRvIHRoZSB3YXkgYXNzaWdubWVudCAnCisgICAgICAgICdpc1xuJworICAgICAgICAnZGVmaW5lZC4gUmF0aGVyIHRoYW4gc3BlbGxpbmcgaXQgb3V0IGluIGZ1bGwgZGV0YWlscywgaGVyZSBhcmUgc29tZVxuJworICAgICAgICAnaGludHMuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGEgdGFyZ2V0IGxpc3QgcmVjdXJzaXZlbHkgZGVsZXRlcyBlYWNoIHRhcmdldCwgZnJvbSBsZWZ0XG4nCisgICAgICAgICd0byByaWdodC5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnRGVsZXRpb24gb2YgYSBuYW1lIHJlbW92ZXMgdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGZyb20gdGhlIGxvY2FsICcKKyAgICAgICAgJ29yXG4nCisgICAgICAgICdnbG9iYWwgbmFtZXNwYWNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGUgbmFtZSBvY2N1cnMgaW4gYSAiZ2xvYmFsIlxuJworICAgICAgICAnc3RhdGVtZW50IGluIHRoZSBzYW1lIGNvZGUgYmxvY2suICBJZiB0aGUgbmFtZSBpcyB1bmJvdW5kLCBhXG4nCisgICAgICAgICciTmFtZUVycm9yIiBleGNlcHRpb24gd2lsbCBiZSByYWlzZWQuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0RlbGV0aW9uIG9mIGF0dHJpYnV0ZSByZWZlcmVuY2VzLCBzdWJzY3JpcHRpb25zIGFuZCBzbGljaW5ncyBpcyAnCisgICAgICAgICdwYXNzZWRcbicKKyAgICAgICAgJ3RvIHRoZSBwcmltYXJ5IG9iamVjdCBpbnZvbHZlZDsgZGVsZXRpb24gb2YgYSBzbGljaW5nIGlzIGluIGdlbmVyYWxcbicKKyAgICAgICAgJ2VxdWl2YWxlbnQgdG8gYXNzaWdubWVudCBvZiBhbiBlbXB0eSBzbGljZSBvZiB0aGUgcmlnaHQgdHlwZSAoYnV0ICcKKyAgICAgICAgJ2V2ZW5cbicKKyAgICAgICAgJ3RoaXMgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc2xpY2VkIG9iamVjdCkuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IFByZXZpb3VzbHkgaXQgd2FzIGlsbGVnYWwgdG8gZGVsZXRlIGEgbmFtZVxuJworICAgICAgICAnZnJvbSB0aGUgbG9jYWwgbmFtZXNwYWNlIGlmIGl0IG9jY3VycyBhcyBhIGZyZWUgdmFyaWFibGUgaW4gYSBuZXN0ZWRcbicKKyAgICAgICAgJ2Jsb2NrLlxuJywKKyAnZGljdCc6ICdcbicKKyAgICAgICAgICdEaWN0aW9uYXJ5IGRpc3BsYXlzXG4nCisgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0EgZGljdGlvbmFyeSBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGtleS9kYXR1bSBwYWlyc1xuJworICAgICAgICAgJ2VuY2xvc2VkIGluIGN1cmx5IGJyYWNlczpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICBkaWN0X2Rpc3BsYXkgICAgICAgOjo9ICJ7IiBba2V5X2RhdHVtX2xpc3QgfCBkaWN0X2NvbXByZWhlbnNpb25dICcKKyAgICAgICAgICcifSJcbicKKyAgICAgICAgICcgICBrZXlfZGF0dW1fbGlzdCAgICAgOjo9IGtleV9kYXR1bSAoIiwiIGtleV9kYXR1bSkqIFsiLCJdXG4nCisgICAgICAgICAnICAga2V5X2RhdHVtICAgICAgICAgIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIHwgIioqIiBvcl9leHByXG4nCisgICAgICAgICAnICAgZGljdF9jb21wcmVoZW5zaW9uIDo6PSBleHByZXNzaW9uICI6IiBleHByZXNzaW9uIGNvbXBfZm9yXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0aW9uYXJ5IGRpc3BsYXkgeWllbGRzIGEgbmV3IGRpY3Rpb25hcnkgb2JqZWN0LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0lmIGEgY29tbWEtc2VwYXJhdGVkIHNlcXVlbmNlIG9mIGtleS9kYXR1bSBwYWlycyBpcyBnaXZlbiwgdGhleSBhcmVcbicKKyAgICAgICAgICdldmFsdWF0ZWQgZnJvbSBsZWZ0IHRvIHJpZ2h0IHRvIGRlZmluZSB0aGUgZW50cmllcyBvZiB0aGUgJworICAgICAgICAgJ2RpY3Rpb25hcnk6XG4nCisgICAgICAgICAnZWFjaCBrZXkgb2JqZWN0IGlzIHVzZWQgYXMgYSBrZXkgaW50byB0aGUgZGljdGlvbmFyeSB0byBzdG9yZSB0aGVcbicKKyAgICAgICAgICdjb3JyZXNwb25kaW5nIGRhdHVtLiAgVGhpcyBtZWFucyB0aGF0IHlvdSBjYW4gc3BlY2lmeSB0aGUgc2FtZSBrZXlcbicKKyAgICAgICAgICJtdWx0aXBsZSB0aW1lcyBpbiB0aGUga2V5L2RhdHVtIGxpc3QsIGFuZCB0aGUgZmluYWwgZGljdGlvbmFyeSdzICIKKyAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgJ2ZvciB0aGF0IGtleSB3aWxsIGJlIHRoZSBsYXN0IG9uZSBnaXZlbi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdBIGRvdWJsZSBhc3RlcmlzayAiKioiIGRlbm90ZXMgKmRpY3Rpb25hcnkgdW5wYWNraW5nKi4gSXRzIG9wZXJhbmRcbicKKyAgICAgICAgICdtdXN0IGJlIGEgKm1hcHBpbmcqLiAgRWFjaCBtYXBwaW5nIGl0ZW0gaXMgYWRkZWQgdG8gdGhlIG5ld1xuJworICAgICAgICAgJ2RpY3Rpb25hcnkuICBMYXRlciB2YWx1ZXMgcmVwbGFjZSB2YWx1ZXMgYWxyZWFkeSBzZXQgYnkgZWFybGllclxuJworICAgICAgICAgJ2tleS9kYXR1bSBwYWlycyBhbmQgZWFybGllciBkaWN0aW9uYXJ5IHVucGFja2luZ3MuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnTmV3IGluIHZlcnNpb24gMy41OiBVbnBhY2tpbmcgaW50byBkaWN0aW9uYXJ5IGRpc3BsYXlzLCBvcmlnaW5hbGx5XG4nCisgICAgICAgICAncHJvcG9zZWQgYnkgKipQRVAgNDQ4KiouXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnQSBkaWN0IGNvbXByZWhlbnNpb24sIGluIGNvbnRyYXN0IHRvIGxpc3QgYW5kIHNldCBjb21wcmVoZW5zaW9ucyxcbicKKyAgICAgICAgICduZWVkcyB0d28gZXhwcmVzc2lvbnMgc2VwYXJhdGVkIHdpdGggYSBjb2xvbiBmb2xsb3dlZCBieSB0aGUgdXN1YWxcbicKKyAgICAgICAgICciZm9yIiBhbmQgImlmIiBjbGF1c2VzLiBXaGVuIHRoZSBjb21wcmVoZW5zaW9uIGlzIHJ1biwgdGhlICcKKyAgICAgICAgICdyZXN1bHRpbmdcbicKKyAgICAgICAgICdrZXkgYW5kIHZhbHVlIGVsZW1lbnRzIGFyZSBpbnNlcnRlZCBpbiB0aGUgbmV3IGRpY3Rpb25hcnkgaW4gdGhlICcKKyAgICAgICAgICdvcmRlclxuJworICAgICAgICAgJ3RoZXkgYXJlIHByb2R1Y2VkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1Jlc3RyaWN0aW9ucyBvbiB0aGUgdHlwZXMgb2YgdGhlIGtleSB2YWx1ZXMgYXJlIGxpc3RlZCBlYXJsaWVyIGluXG4nCisgICAgICAgICAnc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkuICAoVG8gc3VtbWFyaXplLCB0aGUga2V5IHR5cGVcbicKKyAgICAgICAgICdzaG91bGQgYmUgKmhhc2hhYmxlKiwgd2hpY2ggZXhjbHVkZXMgYWxsIG11dGFibGUgb2JqZWN0cy4pICBDbGFzaGVzXG4nCisgICAgICAgICAnYmV0d2VlbiBkdXBsaWNhdGUga2V5cyBhcmUgbm90IGRldGVjdGVkOyB0aGUgbGFzdCBkYXR1bSAodGV4dHVhbGx5XG4nCisgICAgICAgICAncmlnaHRtb3N0IGluIHRoZSBkaXNwbGF5KSBzdG9yZWQgZm9yIGEgZ2l2ZW4ga2V5IHZhbHVlIHByZXZhaWxzLlxuJywKKyAnZHluYW1pYy1mZWF0dXJlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCAnCisgICAgICAgICAgICAgICAgICAgICAnYXQgY29tcGlsZVxuJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWUuIFRoaXMgbWVhbnMgdGhhdCB0aGUgZm9sbG93aW5nIGNvZGUgd2lsbCBwcmludCA0MjpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBkZWYgZigpOlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGYoKVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAnaWxsZWdhbCB3aGVuIHVzZWRcbicKKyAgICAgICAgICAgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgJworICAgICAgICAgICAgICAgICAgICAgJ3ZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyAnCisgICAgICAgICAgICAgICAgICAgICAnaWxsZWdhbCB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJ2RlbGV0ZSB0aGUgbmFtZS4gIEFuIGVycm9yIHdpbGwgYmUgcmVwb3J0ZWQgYXQgY29tcGlsZSAnCisgICAgICAgICAgICAgICAgICAgICAndGltZS5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgImV2YWwoKSIgYW5kICJleGVjKCkiIGZ1bmN0aW9ucyBkbyBub3QgaGF2ZSBhY2Nlc3MgJworICAgICAgICAgICAgICAgICAgICAgJ3RvIHRoZSBmdWxsXG4nCisgICAgICAgICAgICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gdGhlIGxvY2FsXG4nCisgICAgICAgICAgICAgICAgICAgICAnYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgJworICAgICAgICAgICAgICAgICAgICAgJ25vdCByZXNvbHZlZFxuJworICAgICAgICAgICAgICAgICAgICAgJ2luIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBuYW1lc3BhY2UsIGJ1dCBpbiB0aGUgZ2xvYmFsICcKKyAgICAgICAgICAgICAgICAgICAgICduYW1lc3BhY2UuICBbMV1cbicKKyAgICAgICAgICAgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgICAgICdhcmd1bWVudHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSAnCisgICAgICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlIGlzXG4nCisgICAgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLCBpdCBpcyB1c2VkIGZvciBib3RoLlxuJywKKyAnZWxzZSc6ICdcbicKKyAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGlmX3N0bXQgOjo9ICJpZiIgZXhwcmVzc2lvbiAiOiIgc3VpdGVcbicKKyAgICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICAgJyAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgICAnb25lXG4nCisgICAgICAgICAnYnkgb25lIHVudGlsIG9uZSBpcyBmb3VuZCB0byBiZSB0cnVlIChzZWUgc2VjdGlvbiBCb29sZWFuICcKKyAgICAgICAgICdvcGVyYXRpb25zXG4nCisgICAgICAgICAnZm9yIHRoZSBkZWZpbml0aW9uIG9mIHRydWUgYW5kIGZhbHNlKTsgdGhlbiB0aGF0IHN1aXRlIGlzIGV4ZWN1dGVkXG4nCisgICAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICAgJ0lmIGFsbCBleHByZXNzaW9ucyBhcmUgZmFsc2UsIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWZcbicKKyAgICAgICAgICdwcmVzZW50LCBpcyBleGVjdXRlZC5cbicsCisgJ2V4Y2VwdGlvbnMnOiAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9uc1xuJworICAgICAgICAgICAgICAgJyoqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdFeGNlcHRpb25zIGFyZSBhIG1lYW5zIG9mIGJyZWFraW5nIG91dCBvZiB0aGUgbm9ybWFsIGZsb3cgb2YgJworICAgICAgICAgICAgICAgJ2NvbnRyb2xcbicKKyAgICAgICAgICAgICAgICdvZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uYWxcbicKKyAgICAgICAgICAgICAgICdjb25kaXRpb25zLiAgQW4gZXhjZXB0aW9uIGlzICpyYWlzZWQqIGF0IHRoZSBwb2ludCB3aGVyZSB0aGUgJworICAgICAgICAgICAgICAgJ2Vycm9yIGlzXG4nCisgICAgICAgICAgICAgICAnZGV0ZWN0ZWQ7IGl0IG1heSBiZSAqaGFuZGxlZCogYnkgdGhlIHN1cnJvdW5kaW5nIGNvZGUgYmxvY2sgb3IgJworICAgICAgICAgICAgICAgJ2J5IGFueVxuJworICAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAgJ3doZXJlXG4nCisgICAgICAgICAgICAgICAndGhlIGVycm9yIG9jY3VycmVkLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1RoZSBQeXRob24gaW50ZXJwcmV0ZXIgcmFpc2VzIGFuIGV4Y2VwdGlvbiB3aGVuIGl0IGRldGVjdHMgYSAnCisgICAgICAgICAgICAgICAncnVuLXRpbWVcbicKKyAgICAgICAgICAgICAgICdlcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbicKKyAgICAgICAgICAgICAgICdleHBsaWNpdGx5IHJhaXNlIGFuIGV4Y2VwdGlvbiB3aXRoIHRoZSAicmFpc2UiIHN0YXRlbWVudC4gJworICAgICAgICAgICAgICAgJ0V4Y2VwdGlvblxuJworICAgICAgICAgICAgICAgJ2hhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gICcKKyAgICAgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgICAgICciZmluYWxseSIgY2xhdXNlIG9mIHN1Y2ggYSBzdGF0ZW1lbnQgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeSAnCisgICAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICAgJ2NvZGUgd2hpY2ggZG9lcyBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24sIGJ1dCBpcyBleGVjdXRlZCAnCisgICAgICAgICAgICAgICAnd2hldGhlciBhblxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1B5dGhvbiB1c2VzIHRoZSAidGVybWluYXRpb24iIG1vZGVsIG9mIGVycm9yIGhhbmRsaW5nOiBhbiAnCisgICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICAnaGFuZGxlciBjYW4gZmluZCBvdXQgd2hhdCBoYXBwZW5lZCBhbmQgY29udGludWUgZXhlY3V0aW9uIGF0ICcKKyAgICAgICAgICAgICAgICdhbiBvdXRlclxuJworICAgICAgICAgICAgICAgJ2xldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSAnCisgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAnZmFpbGluZyBvcGVyYXRpb24gKGV4Y2VwdCBieSByZS1lbnRlcmluZyB0aGUgb2ZmZW5kaW5nIHBpZWNlICcKKyAgICAgICAgICAgICAgICdvZiBjb2RlXG4nCisgICAgICAgICAgICAgICAnZnJvbSB0aGUgdG9wKS5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICAndGVybWluYXRlc1xuJworICAgICAgICAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgcHJvZ3JhbSwgb3IgcmV0dXJucyB0byBpdHMgaW50ZXJhY3RpdmUgbWFpbiAnCisgICAgICAgICAgICAgICAnbG9vcC4gIEluXG4nCisgICAgICAgICAgICAgICAnZWl0aGVyIGNhc2UsIGl0IHByaW50cyBhIHN0YWNrIGJhY2t0cmFjZSwgZXhjZXB0IHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICdleGNlcHRpb24gaXNcbicKKyAgICAgICAgICAgICAgICciU3lzdGVtRXhpdCIuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnRXhjZXB0aW9ucyBhcmUgaWRlbnRpZmllZCBieSBjbGFzcyBpbnN0YW5jZXMuICBUaGUgImV4Y2VwdCIgJworICAgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICAgJ3NlbGVjdGVkIGRlcGVuZGluZyBvbiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlOiBpdCBtdXN0ICcKKyAgICAgICAgICAgICAgICdyZWZlcmVuY2UgdGhlXG4nCisgICAgICAgICAgICAgICAnY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICdjYW4gYmVcbicKKyAgICAgICAgICAgICAgICdyZWNlaXZlZCBieSB0aGUgaGFuZGxlciBhbmQgY2FuIGNhcnJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gJworICAgICAgICAgICAgICAgJ2Fib3V0IHRoZVxuJworICAgICAgICAgICAgICAgJ2V4Y2VwdGlvbmFsIGNvbmRpdGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICdOb3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgJworICAgICAgICAgICAgICAgJ1RoZWlyXG4nCisgICAgICAgICAgICAgICAnICBjb250ZW50cyBtYXkgY2hhbmdlIGZyb20gb25lIHZlcnNpb24gb2YgUHl0aG9uIHRvIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAnICB3YXJuaW5nIGFuZCBzaG91bGQgbm90IGJlIHJlbGllZCBvbiBieSBjb2RlIHdoaWNoIHdpbGwgcnVuICcKKyAgICAgICAgICAgICAgICd1bmRlclxuJworICAgICAgICAgICAgICAgJyAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBkZXNjcmlwdGlvbiBvZiB0aGUgInRyeSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgICd0cnlcbicKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQgYW5kICJyYWlzZSIgc3RhdGVtZW50IGluIHNlY3Rpb24gVGhlIHJhaXNlICcKKyAgICAgICAgICAgICAgICdzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnLVsgRm9vdG5vdGVzIF0tXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICAgJyAgICB0aGVzZSBvcGVyYXRpb25zIGlzIG5vdCBhdmFpbGFibGUgYXQgdGhlIHRpbWUgdGhlIG1vZHVsZSAnCisgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICcgICAgY29tcGlsZWQuXG4nLAorICdleGVjbW9kZWwnOiAnXG4nCisgICAgICAgICAgICAgICdFeGVjdXRpb24gbW9kZWxcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1N0cnVjdHVyZSBvZiBhIHByb2dyYW1cbicKKyAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSBQeXRob24gcHJvZ3JhbSBpcyBjb25zdHJ1Y3RlZCBmcm9tIGNvZGUgYmxvY2tzLiBBICpibG9jayogaXMgJworICAgICAgICAgICAgICAnYSBwaWVjZVxuJworICAgICAgICAgICAgICAnb2YgUHl0aG9uIHByb2dyYW0gdGV4dCB0aGF0IGlzIGV4ZWN1dGVkIGFzIGEgdW5pdC4gVGhlICcKKyAgICAgICAgICAgICAgJ2ZvbGxvd2luZyBhcmVcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrczogYSBtb2R1bGUsIGEgZnVuY3Rpb24gYm9keSwgYW5kIGEgY2xhc3MgZGVmaW5pdGlvbi4gJworICAgICAgICAgICAgICAnRWFjaFxuJworICAgICAgICAgICAgICAnY29tbWFuZCB0eXBlZCBpbnRlcmFjdGl2ZWx5IGlzIGEgYmxvY2suICBBIHNjcmlwdCBmaWxlIChhIGZpbGUgJworICAgICAgICAgICAgICAnZ2l2ZW5cbicKKyAgICAgICAgICAgICAgJ2FzIHN0YW5kYXJkIGlucHV0IHRvIHRoZSBpbnRlcnByZXRlciBvciBzcGVjaWZpZWQgYXMgYSBjb21tYW5kICcKKyAgICAgICAgICAgICAgJ2xpbmVcbicKKyAgICAgICAgICAgICAgJ2FyZ3VtZW50IHRvIHRoZSBpbnRlcnByZXRlcikgaXMgYSBjb2RlIGJsb2NrLiAgQSBzY3JpcHQgY29tbWFuZCAnCisgICAgICAgICAgICAgICcoYVxuJworICAgICAgICAgICAgICAnY29tbWFuZCBzcGVjaWZpZWQgb24gdGhlIGludGVycHJldGVyIGNvbW1hbmQgbGluZSB3aXRoIHRoZSAnCisgICAgICAgICAgICAgICInKiotYyoqJ1xuIgorICAgICAgICAgICAgICAnb3B0aW9uKSBpcyBhIGNvZGUgYmxvY2suICBUaGUgc3RyaW5nIGFyZ3VtZW50IHBhc3NlZCB0byB0aGUgJworICAgICAgICAgICAgICAnYnVpbHQtaW5cbicKKyAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgaXMgYSBjb2RlIGJsb2NrLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdBIGNvZGUgYmxvY2sgaXMgZXhlY3V0ZWQgaW4gYW4gKmV4ZWN1dGlvbiBmcmFtZSouICBBIGZyYW1lICcKKyAgICAgICAgICAgICAgJ2NvbnRhaW5zXG4nCisgICAgICAgICAgICAgICdzb21lIGFkbWluaXN0cmF0aXZlIGluZm9ybWF0aW9uICh1c2VkIGZvciBkZWJ1Z2dpbmcpIGFuZCAnCisgICAgICAgICAgICAgICdkZXRlcm1pbmVzXG4nCisgICAgICAgICAgICAgICJ3aGVyZSBhbmQgaG93IGV4ZWN1dGlvbiBjb250aW51ZXMgYWZ0ZXIgdGhlIGNvZGUgYmxvY2sncyAiCisgICAgICAgICAgICAgICdleGVjdXRpb24gaGFzXG4nCisgICAgICAgICAgICAgICdjb21wbGV0ZWQuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnTmFtaW5nIGFuZCBiaW5kaW5nXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdCaW5kaW5nIG9mIG5hbWVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJypOYW1lcyogcmVmZXIgdG8gb2JqZWN0cy4gIE5hbWVzIGFyZSBpbnRyb2R1Y2VkIGJ5IG5hbWUgJworICAgICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBjb25zdHJ1Y3RzIGJpbmQgbmFtZXM6IGZvcm1hbCBwYXJhbWV0ZXJzIHRvICcKKyAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyxcbicKKyAgICAgICAgICAgICAgJyJpbXBvcnQiIHN0YXRlbWVudHMsIGNsYXNzIGFuZCBmdW5jdGlvbiBkZWZpbml0aW9ucyAodGhlc2UgYmluZCAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2NsYXNzIG9yIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGRlZmluaW5nIGJsb2NrKSwgYW5kIHRhcmdldHMgdGhhdCAnCisgICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGlmIG9jY3VycmluZyBpbiBhbiBhc3NpZ25tZW50LCAiZm9yIiBsb29wIGhlYWRlciwgJworICAgICAgICAgICAgICAnb3IgYWZ0ZXJcbicKKyAgICAgICAgICAgICAgJyJhcyIgaW4gYSAid2l0aCIgc3RhdGVtZW50IG9yICJleGNlcHQiIGNsYXVzZS4gVGhlICJpbXBvcnQiICcKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gImZyb20gLi4uIGltcG9ydCAqIiBiaW5kcyBhbGwgbmFtZXMgZGVmaW5lZCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgJ2ltcG9ydGVkIG1vZHVsZSwgZXhjZXB0IHRob3NlIGJlZ2lubmluZyB3aXRoIGFuIHVuZGVyc2NvcmUuICAnCisgICAgICAgICAgICAgICdUaGlzIGZvcm1cbicKKyAgICAgICAgICAgICAgJ21heSBvbmx5IGJlIHVzZWQgYXQgdGhlIG1vZHVsZSBsZXZlbC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQSB0YXJnZXQgb2NjdXJyaW5nIGluIGEgImRlbCIgc3RhdGVtZW50IGlzIGFsc28gY29uc2lkZXJlZCAnCisgICAgICAgICAgICAgICdib3VuZCBmb3JcbicKKyAgICAgICAgICAgICAgJ3RoaXMgcHVycG9zZSAodGhvdWdoIHRoZSBhY3R1YWwgc2VtYW50aWNzIGFyZSB0byB1bmJpbmQgdGhlICcKKyAgICAgICAgICAgICAgJ25hbWUpLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFYWNoIGFzc2lnbm1lbnQgb3IgaW1wb3J0IHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2sgJworICAgICAgICAgICAgICAnZGVmaW5lZCBieSBhXG4nCisgICAgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBkZWZpbml0aW9uIG9yIGF0IHRoZSBtb2R1bGUgbGV2ZWwgKHRoZSAnCisgICAgICAgICAgICAgICd0b3AtbGV2ZWxcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2spLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIG5hbWUgaXMgYm91bmQgaW4gYSBibG9jaywgaXQgaXMgYSBsb2NhbCB2YXJpYWJsZSBvZiB0aGF0ICcKKyAgICAgICAgICAgICAgJ2Jsb2NrLFxuJworICAgICAgICAgICAgICAndW5sZXNzIGRlY2xhcmVkIGFzICJub25sb2NhbCIgb3IgImdsb2JhbCIuICBJZiBhIG5hbWUgaXMgYm91bmQgJworICAgICAgICAgICAgICAnYXQgdGhlXG4nCisgICAgICAgICAgICAgICdtb2R1bGUgbGV2ZWwsIGl0IGlzIGEgZ2xvYmFsIHZhcmlhYmxlLiAgKFRoZSB2YXJpYWJsZXMgb2YgdGhlICcKKyAgICAgICAgICAgICAgJ21vZHVsZVxuJworICAgICAgICAgICAgICAnY29kZSBibG9jayBhcmUgbG9jYWwgYW5kIGdsb2JhbC4pICBJZiBhIHZhcmlhYmxlIGlzIHVzZWQgaW4gYSAnCisgICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgICdibG9jayBidXQgbm90IGRlZmluZWQgdGhlcmUsIGl0IGlzIGEgKmZyZWUgdmFyaWFibGUqLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFYWNoIG9jY3VycmVuY2Ugb2YgYSBuYW1lIGluIHRoZSBwcm9ncmFtIHRleHQgcmVmZXJzIHRvIHRoZSAnCisgICAgICAgICAgICAgICcqYmluZGluZypcbicKKyAgICAgICAgICAgICAgJ29mIHRoYXQgbmFtZSBlc3RhYmxpc2hlZCBieSB0aGUgZm9sbG93aW5nIG5hbWUgcmVzb2x1dGlvbiAnCisgICAgICAgICAgICAgICdydWxlcy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdSZXNvbHV0aW9uIG9mIG5hbWVzXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0EgKnNjb3BlKiBkZWZpbmVzIHRoZSB2aXNpYmlsaXR5IG9mIGEgbmFtZSB3aXRoaW4gYSBibG9jay4gIElmICcKKyAgICAgICAgICAgICAgJ2EgbG9jYWxcbicKKyAgICAgICAgICAgICAgJ3ZhcmlhYmxlIGlzIGRlZmluZWQgaW4gYSBibG9jaywgaXRzIHNjb3BlIGluY2x1ZGVzIHRoYXQgYmxvY2suICAnCisgICAgICAgICAgICAgICdJZiB0aGVcbicKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb24gb2NjdXJzIGluIGEgZnVuY3Rpb24gYmxvY2ssIHRoZSBzY29wZSBleHRlbmRzIHRvIGFueSAnCisgICAgICAgICAgICAgICdibG9ja3NcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5lZCB3aXRoaW4gdGhlIGRlZmluaW5nIG9uZSwgdW5sZXNzIGEgY29udGFpbmVkIGJsb2NrICcKKyAgICAgICAgICAgICAgJ2ludHJvZHVjZXNcbicKKyAgICAgICAgICAgICAgJ2EgZGlmZmVyZW50IGJpbmRpbmcgZm9yIHRoZSBuYW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGEgbmFtZSBpcyB1c2VkIGluIGEgY29kZSBibG9jaywgaXQgaXMgcmVzb2x2ZWQgdXNpbmcgdGhlICcKKyAgICAgICAgICAgICAgJ25lYXJlc3RcbicKKyAgICAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZS4gIFRoZSBzZXQgb2YgYWxsIHN1Y2ggc2NvcGVzIHZpc2libGUgdG8gYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICAgICJpcyBjYWxsZWQgdGhlIGJsb2NrJ3MgKmVudmlyb25tZW50Ki5cbiIKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgbm90IGZvdW5kIGF0IGFsbCwgYSAiTmFtZUVycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICAncmFpc2VkLiBJZlxuJworICAgICAgICAgICAgICAndGhlIGN1cnJlbnQgc2NvcGUgaXMgYSBmdW5jdGlvbiBzY29wZSwgYW5kIHRoZSBuYW1lIHJlZmVycyB0byBhICcKKyAgICAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICAgICd2YXJpYWJsZSB0aGF0IGhhcyBub3QgeWV0IGJlZW4gYm91bmQgdG8gYSB2YWx1ZSBhdCB0aGUgcG9pbnQgJworICAgICAgICAgICAgICAnd2hlcmUgdGhlXG4nCisgICAgICAgICAgICAgICduYW1lIGlzIHVzZWQsIGFuICJVbmJvdW5kTG9jYWxFcnJvciIgZXhjZXB0aW9uIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgJyJVbmJvdW5kTG9jYWxFcnJvciIgaXMgYSBzdWJjbGFzcyBvZiAiTmFtZUVycm9yIi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgYSBuYW1lIGJpbmRpbmcgb3BlcmF0aW9uIG9jY3VycyBhbnl3aGVyZSB3aXRoaW4gYSBjb2RlICcKKyAgICAgICAgICAgICAgJ2Jsb2NrLCBhbGxcbicKKyAgICAgICAgICAgICAgJ3VzZXMgb2YgdGhlIG5hbWUgd2l0aGluIHRoZSBibG9jayBhcmUgdHJlYXRlZCBhcyByZWZlcmVuY2VzIHRvICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnY3VycmVudCBibG9jay4gIFRoaXMgY2FuIGxlYWQgdG8gZXJyb3JzIHdoZW4gYSBuYW1lIGlzIHVzZWQgJworICAgICAgICAgICAgICAnd2l0aGluIGFcbicKKyAgICAgICAgICAgICAgJ2Jsb2NrIGJlZm9yZSBpdCBpcyBib3VuZC4gIFRoaXMgcnVsZSBpcyBzdWJ0bGUuICBQeXRob24gbGFja3NcbicKKyAgICAgICAgICAgICAgJ2RlY2xhcmF0aW9ucyBhbmQgYWxsb3dzIG5hbWUgYmluZGluZyBvcGVyYXRpb25zIHRvIG9jY3VyICcKKyAgICAgICAgICAgICAgJ2FueXdoZXJlXG4nCisgICAgICAgICAgICAgICd3aXRoaW4gYSBjb2RlIGJsb2NrLiAgVGhlIGxvY2FsIHZhcmlhYmxlcyBvZiBhIGNvZGUgYmxvY2sgY2FuICcKKyAgICAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5IHNjYW5uaW5nIHRoZSBlbnRpcmUgdGV4dCBvZiB0aGUgYmxvY2sgZm9yIG5hbWUgJworICAgICAgICAgICAgICAnYmluZGluZ1xuJworICAgICAgICAgICAgICAnb3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSWYgdGhlICJnbG9iYWwiIHN0YXRlbWVudCBvY2N1cnMgd2l0aGluIGEgYmxvY2ssIGFsbCB1c2VzIG9mICcKKyAgICAgICAgICAgICAgJ3RoZSBuYW1lXG4nCisgICAgICAgICAgICAgICdzcGVjaWZpZWQgaW4gdGhlIHN0YXRlbWVudCByZWZlciB0byB0aGUgYmluZGluZyBvZiB0aGF0IG5hbWUgaW4gJworICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICd0b3AtbGV2ZWwgbmFtZXNwYWNlLiAgTmFtZXMgYXJlIHJlc29sdmVkIGluIHRoZSB0b3AtbGV2ZWwgJworICAgICAgICAgICAgICAnbmFtZXNwYWNlIGJ5XG4nCisgICAgICAgICAgICAgICdzZWFyY2hpbmcgdGhlIGdsb2JhbCBuYW1lc3BhY2UsIGkuZS4gdGhlIG5hbWVzcGFjZSBvZiB0aGUgJworICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBjb2RlIGJsb2NrLCBhbmQgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSwgdGhlICcKKyAgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICAnb2YgdGhlIG1vZHVsZSAiYnVpbHRpbnMiLiAgVGhlIGdsb2JhbCBuYW1lc3BhY2UgaXMgc2VhcmNoZWQgJworICAgICAgICAgICAgICAnZmlyc3QuICBJZlxuJworICAgICAgICAgICAgICAndGhlIG5hbWUgaXMgbm90IGZvdW5kIHRoZXJlLCB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIGlzICcKKyAgICAgICAgICAgICAgJ3NlYXJjaGVkLiAgVGhlXG4nCisgICAgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBwcmVjZWRlIGFsbCB1c2VzIG9mIHRoZSBuYW1lLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGhhcyB0aGUgc2FtZSBzY29wZSBhcyBhIG5hbWUgYmluZGluZyAnCisgICAgICAgICAgICAgICdvcGVyYXRpb25cbicKKyAgICAgICAgICAgICAgJ2luIHRoZSBzYW1lIGJsb2NrLiAgSWYgdGhlIG5lYXJlc3QgZW5jbG9zaW5nIHNjb3BlIGZvciBhIGZyZWUgJworICAgICAgICAgICAgICAndmFyaWFibGVcbicKKyAgICAgICAgICAgICAgJ2NvbnRhaW5zIGEgZ2xvYmFsIHN0YXRlbWVudCwgdGhlIGZyZWUgdmFyaWFibGUgaXMgdHJlYXRlZCBhcyBhICcKKyAgICAgICAgICAgICAgJ2dsb2JhbC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50IGNhdXNlcyBjb3JyZXNwb25kaW5nIG5hbWVzIHRvIHJlZmVyICcKKyAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgZnVuY3Rpb24gJworICAgICAgICAgICAgICAnc2NvcGUuXG4nCisgICAgICAgICAgICAgICciU3ludGF4RXJyb3IiIGlzIHJhaXNlZCBhdCBjb21waWxlIHRpbWUgaWYgdGhlIGdpdmVuIG5hbWUgZG9lcyAnCisgICAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICAgJ2V4aXN0IGluIGFueSBlbmNsb3NpbmcgZnVuY3Rpb24gc2NvcGUuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1RoZSBuYW1lc3BhY2UgZm9yIGEgbW9kdWxlIGlzIGF1dG9tYXRpY2FsbHkgY3JlYXRlZCB0aGUgZmlyc3QgJworICAgICAgICAgICAgICAndGltZSBhXG4nCisgICAgICAgICAgICAgICdtb2R1bGUgaXMgaW1wb3J0ZWQuICBUaGUgbWFpbiBtb2R1bGUgZm9yIGEgc2NyaXB0IGlzIGFsd2F5cyAnCisgICAgICAgICAgICAgICdjYWxsZWRcbicKKyAgICAgICAgICAgICAgJyJfX21haW5fXyIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0NsYXNzIGRlZmluaXRpb24gYmxvY2tzIGFuZCBhcmd1bWVudHMgdG8gImV4ZWMoKSIgYW5kICJldmFsKCkiICcKKyAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAnc3BlY2lhbCBpbiB0aGUgY29udGV4dCBvZiBuYW1lIHJlc29sdXRpb24uIEEgY2xhc3MgZGVmaW5pdGlvbiAnCisgICAgICAgICAgICAgICdpcyBhblxuJworICAgICAgICAgICAgICAnZXhlY3V0YWJsZSBzdGF0ZW1lbnQgdGhhdCBtYXkgdXNlIGFuZCBkZWZpbmUgbmFtZXMuIFRoZXNlICcKKyAgICAgICAgICAgICAgJ3JlZmVyZW5jZXNcbicKKyAgICAgICAgICAgICAgJ2ZvbGxvdyB0aGUgbm9ybWFsIHJ1bGVzIGZvciBuYW1lIHJlc29sdXRpb24gd2l0aCBhbiBleGNlcHRpb24gJworICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAndW5ib3VuZCBsb2NhbCB2YXJpYWJsZXMgYXJlIGxvb2tlZCB1cCBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZS4gJworICAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgICduYW1lc3BhY2Ugb2YgdGhlIGNsYXNzIGRlZmluaXRpb24gYmVjb21lcyB0aGUgYXR0cmlidXRlICcKKyAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb2ZcbicKKyAgICAgICAgICAgICAgJ3RoZSBjbGFzcy4gVGhlIHNjb3BlIG9mIG5hbWVzIGRlZmluZWQgaW4gYSBjbGFzcyBibG9jayBpcyAnCisgICAgICAgICAgICAgICdsaW1pdGVkIHRvXG4nCisgICAgICAgICAgICAgICd0aGUgY2xhc3MgYmxvY2s7IGl0IGRvZXMgbm90IGV4dGVuZCB0byB0aGUgY29kZSBibG9ja3Mgb2YgJworICAgICAgICAgICAgICAnbWV0aG9kcyAtLVxuJworICAgICAgICAgICAgICAndGhpcyBpbmNsdWRlcyBjb21wcmVoZW5zaW9ucyBhbmQgZ2VuZXJhdG9yIGV4cHJlc3Npb25zIHNpbmNlICcKKyAgICAgICAgICAgICAgJ3RoZXkgYXJlXG4nCisgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCB1c2luZyBhIGZ1bmN0aW9uIHNjb3BlLiAgVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICdmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAgJ3dpbGwgZmFpbDpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgY2xhc3MgQTpcbicKKyAgICAgICAgICAgICAgJyAgICAgICBhID0gNDJcbicKKyAgICAgICAgICAgICAgJyAgICAgICBiID0gbGlzdChhICsgaSBmb3IgaSBpbiByYW5nZSgxMCkpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQnVpbHRpbnMgYW5kIHJlc3RyaWN0ZWQgZXhlY3V0aW9uXG4nCisgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBhc3NvY2lhdGVkIHdpdGggdGhlIGV4ZWN1dGlvbiBvZiBhIGNvZGUgJworICAgICAgICAgICAgICAnYmxvY2tcbicKKyAgICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGZvdW5kIGJ5IGxvb2tpbmcgdXAgdGhlIG5hbWUgIl9fYnVpbHRpbnNfXyIgaW4gaXRzICcKKyAgICAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAgICAnbmFtZXNwYWNlOyB0aGlzIHNob3VsZCBiZSBhIGRpY3Rpb25hcnkgb3IgYSBtb2R1bGUgKGluIHRoZSAnCisgICAgICAgICAgICAgICdsYXR0ZXIgY2FzZVxuJworICAgICAgICAgICAgICAidGhlIG1vZHVsZSdzIGRpY3Rpb25hcnkgaXMgdXNlZCkuICBCeSBkZWZhdWx0LCB3aGVuIGluIHRoZSAiCisgICAgICAgICAgICAgICciX19tYWluX18iXG4nCisgICAgICAgICAgICAgICdtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIHRoZSBidWlsdC1pbiBtb2R1bGUgImJ1aWx0aW5zIjsgd2hlbiAnCisgICAgICAgICAgICAgICdpbiBhbnlcbicKKyAgICAgICAgICAgICAgJ290aGVyIG1vZHVsZSwgIl9fYnVpbHRpbnNfXyIgaXMgYW4gYWxpYXMgZm9yIHRoZSBkaWN0aW9uYXJ5IG9mICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAnImJ1aWx0aW5zIiBtb2R1bGUgaXRzZWxmLiAgIl9fYnVpbHRpbnNfXyIgY2FuIGJlIHNldCB0byBhICcKKyAgICAgICAgICAgICAgJ3VzZXItY3JlYXRlZFxuJworICAgICAgICAgICAgICAnZGljdGlvbmFyeSB0byBjcmVhdGUgYSB3ZWFrIGZvcm0gb2YgcmVzdHJpY3RlZCBleGVjdXRpb24uXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVXNlcnMgc2hvdWxkIG5vdCB0b3VjaFxuJworICAgICAgICAgICAgICAnIl9fYnVpbHRpbnNfXyI7IGl0IGlzIHN0cmljdGx5IGFuIGltcGxlbWVudGF0aW9uIGRldGFpbC4gICcKKyAgICAgICAgICAgICAgJ1VzZXJzXG4nCisgICAgICAgICAgICAgICd3YW50aW5nIHRvIG92ZXJyaWRlIHZhbHVlcyBpbiB0aGUgYnVpbHRpbnMgbmFtZXNwYWNlIHNob3VsZCAnCisgICAgICAgICAgICAgICciaW1wb3J0IlxuJworICAgICAgICAgICAgICAndGhlICJidWlsdGlucyIgbW9kdWxlIGFuZCBtb2RpZnkgaXRzIGF0dHJpYnV0ZXMgYXBwcm9wcmlhdGVseS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJbnRlcmFjdGlvbiB3aXRoIGR5bmFtaWMgZmVhdHVyZXNcbicKKyAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOYW1lIHJlc29sdXRpb24gb2YgZnJlZSB2YXJpYWJsZXMgb2NjdXJzIGF0IHJ1bnRpbWUsIG5vdCBhdCAnCisgICAgICAgICAgICAgICdjb21waWxlXG4nCisgICAgICAgICAgICAgICd0aW1lLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgcHJpbnQgNDI6XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJyAgIGkgPSAxMFxuJworICAgICAgICAgICAgICAnICAgZGVmIGYoKTpcbicKKyAgICAgICAgICAgICAgJyAgICAgICBwcmludChpKVxuJworICAgICAgICAgICAgICAnICAgaSA9IDQyXG4nCisgICAgICAgICAgICAgICcgICBmKClcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlcmUgYXJlIHNldmVyYWwgY2FzZXMgd2hlcmUgUHl0aG9uIHN0YXRlbWVudHMgYXJlIGlsbGVnYWwgJworICAgICAgICAgICAgICAnd2hlbiB1c2VkXG4nCisgICAgICAgICAgICAgICdpbiBjb25qdW5jdGlvbiB3aXRoIG5lc3RlZCBzY29wZXMgdGhhdCBjb250YWluIGZyZWUgdmFyaWFibGVzLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdJZiBhIHZhcmlhYmxlIGlzIHJlZmVyZW5jZWQgaW4gYW4gZW5jbG9zaW5nIHNjb3BlLCBpdCBpcyAnCisgICAgICAgICAgICAgICdpbGxlZ2FsIHRvXG4nCisgICAgICAgICAgICAgICdkZWxldGUgdGhlIG5hbWUuICBBbiBlcnJvciB3aWxsIGJlIHJlcG9ydGVkIGF0IGNvbXBpbGUgdGltZS5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlICJldmFsKCkiIGFuZCAiZXhlYygpIiBmdW5jdGlvbnMgZG8gbm90IGhhdmUgYWNjZXNzIHRvIHRoZSAnCisgICAgICAgICAgICAgICdmdWxsXG4nCisgICAgICAgICAgICAgICdlbnZpcm9ubWVudCBmb3IgcmVzb2x2aW5nIG5hbWVzLiAgTmFtZXMgbWF5IGJlIHJlc29sdmVkIGluIHRoZSAnCisgICAgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAgICAnYW5kIGdsb2JhbCBuYW1lc3BhY2VzIG9mIHRoZSBjYWxsZXIuICBGcmVlIHZhcmlhYmxlcyBhcmUgbm90ICcKKyAgICAgICAgICAgICAgJ3Jlc29sdmVkXG4nCisgICAgICAgICAgICAgICdpbiB0aGUgbmVhcmVzdCBlbmNsb3NpbmcgbmFtZXNwYWNlLCBidXQgaW4gdGhlIGdsb2JhbCAnCisgICAgICAgICAgICAgICduYW1lc3BhY2UuICBbMV1cbicKKyAgICAgICAgICAgICAgJ1RoZSAiZXhlYygpIiBhbmQgImV2YWwoKSIgZnVuY3Rpb25zIGhhdmUgb3B0aW9uYWwgYXJndW1lbnRzIHRvXG4nCisgICAgICAgICAgICAgICdvdmVycmlkZSB0aGUgZ2xvYmFsIGFuZCBsb2NhbCBuYW1lc3BhY2UuICBJZiBvbmx5IG9uZSBuYW1lc3BhY2UgJworICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgJ3NwZWNpZmllZCwgaXQgaXMgdXNlZCBmb3IgYm90aC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHRpb25zXG4nCisgICAgICAgICAgICAgICc9PT09PT09PT09XG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGEgbWVhbnMgb2YgYnJlYWtpbmcgb3V0IG9mIHRoZSBub3JtYWwgZmxvdyBvZiAnCisgICAgICAgICAgICAgICdjb250cm9sXG4nCisgICAgICAgICAgICAgICdvZiBhIGNvZGUgYmxvY2sgaW4gb3JkZXIgdG8gaGFuZGxlIGVycm9ycyBvciBvdGhlciBleGNlcHRpb25hbFxuJworICAgICAgICAgICAgICAnY29uZGl0aW9ucy4gIEFuIGV4Y2VwdGlvbiBpcyAqcmFpc2VkKiBhdCB0aGUgcG9pbnQgd2hlcmUgdGhlICcKKyAgICAgICAgICAgICAgJ2Vycm9yIGlzXG4nCisgICAgICAgICAgICAgICdkZXRlY3RlZDsgaXQgbWF5IGJlICpoYW5kbGVkKiBieSB0aGUgc3Vycm91bmRpbmcgY29kZSBibG9jayBvciAnCisgICAgICAgICAgICAgICdieSBhbnlcbicKKyAgICAgICAgICAgICAgJ2NvZGUgYmxvY2sgdGhhdCBkaXJlY3RseSBvciBpbmRpcmVjdGx5IGludm9rZWQgdGhlIGNvZGUgYmxvY2sgJworICAgICAgICAgICAgICAnd2hlcmVcbicKKyAgICAgICAgICAgICAgJ3RoZSBlcnJvciBvY2N1cnJlZC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIFB5dGhvbiBpbnRlcnByZXRlciByYWlzZXMgYW4gZXhjZXB0aW9uIHdoZW4gaXQgZGV0ZWN0cyBhICcKKyAgICAgICAgICAgICAgJ3J1bi10aW1lXG4nCisgICAgICAgICAgICAgICdlcnJvciAoc3VjaCBhcyBkaXZpc2lvbiBieSB6ZXJvKS4gIEEgUHl0aG9uIHByb2dyYW0gY2FuIGFsc29cbicKKyAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgcmFpc2UgYW4gZXhjZXB0aW9uIHdpdGggdGhlICJyYWlzZSIgc3RhdGVtZW50LiAnCisgICAgICAgICAgICAgICdFeGNlcHRpb25cbicKKyAgICAgICAgICAgICAgJ2hhbmRsZXJzIGFyZSBzcGVjaWZpZWQgd2l0aCB0aGUgInRyeSIgLi4uICJleGNlcHQiIHN0YXRlbWVudC4gICcKKyAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAnImZpbmFsbHkiIGNsYXVzZSBvZiBzdWNoIGEgc3RhdGVtZW50IGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkgJworICAgICAgICAgICAgICAnY2xlYW51cFxuJworICAgICAgICAgICAgICAnY29kZSB3aGljaCBkb2VzIG5vdCBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgYnV0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgJ3doZXRoZXIgYW5cbicKKyAgICAgICAgICAgICAgJ2V4Y2VwdGlvbiBvY2N1cnJlZCBvciBub3QgaW4gdGhlIHByZWNlZGluZyBjb2RlLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdQeXRob24gdXNlcyB0aGUgInRlcm1pbmF0aW9uIiBtb2RlbCBvZiBlcnJvciBoYW5kbGluZzogYW4gJworICAgICAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgICAgICdoYW5kbGVyIGNhbiBmaW5kIG91dCB3aGF0IGhhcHBlbmVkIGFuZCBjb250aW51ZSBleGVjdXRpb24gYXQgYW4gJworICAgICAgICAgICAgICAnb3V0ZXJcbicKKyAgICAgICAgICAgICAgJ2xldmVsLCBidXQgaXQgY2Fubm90IHJlcGFpciB0aGUgY2F1c2Ugb2YgdGhlIGVycm9yIGFuZCByZXRyeSAnCisgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgJ2ZhaWxpbmcgb3BlcmF0aW9uIChleGNlcHQgYnkgcmUtZW50ZXJpbmcgdGhlIG9mZmVuZGluZyBwaWVjZSBvZiAnCisgICAgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICAgICdmcm9tIHRoZSB0b3ApLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCBhdCBhbGwsIHRoZSBpbnRlcnByZXRlciAnCisgICAgICAgICAgICAgICd0ZXJtaW5hdGVzXG4nCisgICAgICAgICAgICAgICdleGVjdXRpb24gb2YgdGhlIHByb2dyYW0sIG9yIHJldHVybnMgdG8gaXRzIGludGVyYWN0aXZlIG1haW4gJworICAgICAgICAgICAgICAnbG9vcC4gIEluXG4nCisgICAgICAgICAgICAgICdlaXRoZXIgY2FzZSwgaXQgcHJpbnRzIGEgc3RhY2sgYmFja3RyYWNlLCBleGNlcHQgd2hlbiB0aGUgJworICAgICAgICAgICAgICAnZXhjZXB0aW9uIGlzXG4nCisgICAgICAgICAgICAgICciU3lzdGVtRXhpdCIuXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0V4Y2VwdGlvbnMgYXJlIGlkZW50aWZpZWQgYnkgY2xhc3MgaW5zdGFuY2VzLiAgVGhlICJleGNlcHQiICcKKyAgICAgICAgICAgICAgJ2NsYXVzZSBpc1xuJworICAgICAgICAgICAgICAnc2VsZWN0ZWQgZGVwZW5kaW5nIG9uIHRoZSBjbGFzcyBvZiB0aGUgaW5zdGFuY2U6IGl0IG11c3QgJworICAgICAgICAgICAgICAncmVmZXJlbmNlIHRoZVxuJworICAgICAgICAgICAgICAnY2xhc3Mgb2YgdGhlIGluc3RhbmNlIG9yIGEgYmFzZSBjbGFzcyB0aGVyZW9mLiAgVGhlIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgJ2NhbiBiZVxuJworICAgICAgICAgICAgICAncmVjZWl2ZWQgYnkgdGhlIGhhbmRsZXIgYW5kIGNhbiBjYXJyeSBhZGRpdGlvbmFsIGluZm9ybWF0aW9uICcKKyAgICAgICAgICAgICAgJ2Fib3V0IHRoZVxuJworICAgICAgICAgICAgICAnZXhjZXB0aW9uYWwgY29uZGl0aW9uLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOb3RlOiBFeGNlcHRpb24gbWVzc2FnZXMgYXJlIG5vdCBwYXJ0IG9mIHRoZSBQeXRob24gQVBJLiAgJworICAgICAgICAgICAgICAnVGhlaXJcbicKKyAgICAgICAgICAgICAgJyAgY29udGVudHMgbWF5IGNoYW5nZSBmcm9tIG9uZSB2ZXJzaW9uIG9mIFB5dGhvbiB0byB0aGUgbmV4dCAnCisgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICcgIHdhcm5pbmcgYW5kIHNob3VsZCBub3QgYmUgcmVsaWVkIG9uIGJ5IGNvZGUgd2hpY2ggd2lsbCBydW4gJworICAgICAgICAgICAgICAndW5kZXJcbicKKyAgICAgICAgICAgICAgJyAgbXVsdGlwbGUgdmVyc2lvbnMgb2YgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdTZWUgYWxzbyB0aGUgZGVzY3JpcHRpb24gb2YgdGhlICJ0cnkiIHN0YXRlbWVudCBpbiBzZWN0aW9uIFRoZSAnCisgICAgICAgICAgICAgICd0cnlcbicKKyAgICAgICAgICAgICAgJ3N0YXRlbWVudCBhbmQgInJhaXNlIiBzdGF0ZW1lbnQgaW4gc2VjdGlvbiBUaGUgcmFpc2UgJworICAgICAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnWzFdIFRoaXMgbGltaXRhdGlvbiBvY2N1cnMgYmVjYXVzZSB0aGUgY29kZSB0aGF0IGlzIGV4ZWN1dGVkICcKKyAgICAgICAgICAgICAgJ2J5XG4nCisgICAgICAgICAgICAgICcgICAgdGhlc2Ugb3BlcmF0aW9ucyBpcyBub3QgYXZhaWxhYmxlIGF0IHRoZSB0aW1lIHRoZSBtb2R1bGUgJworICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgJyAgICBjb21waWxlZC5cbicsCisgJ2V4cHJsaXN0cyc6ICdcbicKKyAgICAgICAgICAgICAgJ0V4cHJlc3Npb24gbGlzdHNcbicKKyAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgZXhwcmVzc2lvbl9saXN0ICAgIDo6PSBleHByZXNzaW9uICggIiwiIGV4cHJlc3Npb24gKSogWyIsIl1cbicKKyAgICAgICAgICAgICAgJyAgIHN0YXJyZWRfbGlzdCAgICAgICA6Oj0gc3RhcnJlZF9pdGVtICggIiwiIHN0YXJyZWRfaXRlbSApKiAnCisgICAgICAgICAgICAgICdbIiwiXVxuJworICAgICAgICAgICAgICAnICAgc3RhcnJlZF9leHByZXNzaW9uIDo6PSBleHByZXNzaW9uIHwgKCBzdGFycmVkX2l0ZW0gIiwiICkqICcKKyAgICAgICAgICAgICAgJ1tzdGFycmVkX2l0ZW1dXG4nCisgICAgICAgICAgICAgICcgICBzdGFycmVkX2l0ZW0gICAgICAgOjo9IGV4cHJlc3Npb24gfCAiKiIgb3JfZXhwclxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdFeGNlcHQgd2hlbiBwYXJ0IG9mIGEgbGlzdCBvciBzZXQgZGlzcGxheSwgYW4gZXhwcmVzc2lvbiBsaXN0XG4nCisgICAgICAgICAgICAgICdjb250YWluaW5nIGF0IGxlYXN0IG9uZSBjb21tYSB5aWVsZHMgYSB0dXBsZS4gIFRoZSBsZW5ndGggb2YgJworICAgICAgICAgICAgICAndGhlIHR1cGxlXG4nCisgICAgICAgICAgICAgICdpcyB0aGUgbnVtYmVyIG9mIGV4cHJlc3Npb25zIGluIHRoZSBsaXN0LiAgVGhlIGV4cHJlc3Npb25zIGFyZVxuJworICAgICAgICAgICAgICAnZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodC5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnQW4gYXN0ZXJpc2sgIioiIGRlbm90ZXMgKml0ZXJhYmxlIHVucGFja2luZyouICBJdHMgb3BlcmFuZCBtdXN0ICcKKyAgICAgICAgICAgICAgJ2JlIGFuXG4nCisgICAgICAgICAgICAgICcqaXRlcmFibGUqLiAgVGhlIGl0ZXJhYmxlIGlzIGV4cGFuZGVkIGludG8gYSBzZXF1ZW5jZSBvZiBpdGVtcywgJworICAgICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgICAgJ2FyZSBpbmNsdWRlZCBpbiB0aGUgbmV3IHR1cGxlLCBsaXN0LCBvciBzZXQsIGF0IHRoZSBzaXRlIG9mICcKKyAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAndW5wYWNraW5nLlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjU6IEl0ZXJhYmxlIHVucGFja2luZyBpbiBleHByZXNzaW9uIGxpc3RzLCAnCisgICAgICAgICAgICAgICdvcmlnaW5hbGx5XG4nCisgICAgICAgICAgICAgICdwcm9wb3NlZCBieSAqKlBFUCA0NDgqKi5cbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnVGhlIHRyYWlsaW5nIGNvbW1hIGlzIHJlcXVpcmVkIG9ubHkgdG8gY3JlYXRlIGEgc2luZ2xlIHR1cGxlICcKKyAgICAgICAgICAgICAgJyhhLmsuYS4gYVxuJworICAgICAgICAgICAgICAnKnNpbmdsZXRvbiopOyBpdCBpcyBvcHRpb25hbCBpbiBhbGwgb3RoZXIgY2FzZXMuICBBIHNpbmdsZSAnCisgICAgICAgICAgICAgICdleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgICJ3aXRob3V0IGEgdHJhaWxpbmcgY29tbWEgZG9lc24ndCBjcmVhdGUgYSB0dXBsZSwgYnV0IHJhdGhlciAiCisgICAgICAgICAgICAgICd5aWVsZHMgdGhlXG4nCisgICAgICAgICAgICAgICd2YWx1ZSBvZiB0aGF0IGV4cHJlc3Npb24uIChUbyBjcmVhdGUgYW4gZW1wdHkgdHVwbGUsIHVzZSBhbiAnCisgICAgICAgICAgICAgICdlbXB0eSBwYWlyXG4nCisgICAgICAgICAgICAgICdvZiBwYXJlbnRoZXNlczogIigpIi4pXG4nLAorICdmbG9hdGluZyc6ICdcbicKKyAgICAgICAgICAgICAnRmxvYXRpbmcgcG9pbnQgbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Zsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsXG4nCisgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZmxvYXRudW1iZXIgICA6Oj0gcG9pbnRmbG9hdCB8IGV4cG9uZW50ZmxvYXRcbicKKyAgICAgICAgICAgICAnICAgcG9pbnRmbG9hdCAgICA6Oj0gW2RpZ2l0cGFydF0gZnJhY3Rpb24gfCBkaWdpdHBhcnQgIi4iXG4nCisgICAgICAgICAgICAgJyAgIGV4cG9uZW50ZmxvYXQgOjo9IChkaWdpdHBhcnQgfCBwb2ludGZsb2F0KSBleHBvbmVudFxuJworICAgICAgICAgICAgICcgICBkaWdpdHBhcnQgICAgIDo6PSBkaWdpdCAoWyJfIl0gZGlnaXQpKlxuJworICAgICAgICAgICAgICcgICBmcmFjdGlvbiAgICAgIDo6PSAiLiIgZGlnaXRwYXJ0XG4nCisgICAgICAgICAgICAgJyAgIGV4cG9uZW50ICAgICAgOjo9ICgiZSIgfCAiRSIpIFsiKyIgfCAiLSJdIGRpZ2l0cGFydFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZSB0aGF0IHRoZSBpbnRlZ2VyIGFuZCBleHBvbmVudCBwYXJ0cyBhcmUgYWx3YXlzIGludGVycHJldGVkICcKKyAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAncmFkaXggMTAuIEZvciBleGFtcGxlLCAiMDc3ZTAxMCIgaXMgbGVnYWwsIGFuZCBkZW5vdGVzIHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnbnVtYmVyXG4nCisgICAgICAgICAgICAgJ2FzICI3N2UxMCIuIFRoZSBhbGxvd2VkIHJhbmdlIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzIGlzXG4nCisgICAgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uLWRlcGVuZGVudC4gIEFzIGluIGludGVnZXIgbGl0ZXJhbHMsIHVuZGVyc2NvcmVzICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJ3N1cHBvcnRlZCBmb3IgZGlnaXQgZ3JvdXBpbmcuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTb21lIGV4YW1wbGVzIG9mIGZsb2F0aW5nIHBvaW50IGxpdGVyYWxzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgMy4xNCAgICAxMC4gICAgLjAwMSAgICAxZTEwMCAgICAzLjE0ZS0xMCAgICAwZTAgICAgJworICAgICAgICAgICAgICczLjE0XzE1XzkzXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgbnVtZXJpYyBsaXRlcmFscyBkbyBub3QgaW5jbHVkZSBhIHNpZ247IGEgcGhyYXNlIGxpa2UgJworICAgICAgICAgICAgICciLTEiXG4nCisgICAgICAgICAgICAgJ2lzIGFjdHVhbGx5IGFuIGV4cHJlc3Npb24gY29tcG9zZWQgb2YgdGhlIHVuYXJ5IG9wZXJhdG9yICItIiBhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbGl0ZXJhbCAiMSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy42OiBVbmRlcnNjb3JlcyBhcmUgbm93IGFsbG93ZWQgZm9yICcKKyAgICAgICAgICAgICAnZ3JvdXBpbmdcbicKKyAgICAgICAgICAgICAncHVycG9zZXMgaW4gbGl0ZXJhbHMuXG4nLAorICdmb3InOiAnXG4nCisgICAgICAgICdUaGUgImZvciIgc3RhdGVtZW50XG4nCisgICAgICAgICcqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSAiZm9yIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byBpdGVyYXRlIG92ZXIgdGhlIGVsZW1lbnRzIG9mIGEgJworICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgJyhzdWNoIGFzIGEgc3RyaW5nLCB0dXBsZSBvciBsaXN0KSBvciBvdGhlciBpdGVyYWJsZSBvYmplY3Q6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIGZvcl9zdG10IDo6PSAiZm9yIiB0YXJnZXRfbGlzdCAiaW4iIGV4cHJlc3Npb25fbGlzdCAiOiIgc3VpdGVcbicKKyAgICAgICAgJyAgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlIGV4cHJlc3Npb24gbGlzdCBpcyBldmFsdWF0ZWQgb25jZTsgaXQgc2hvdWxkIHlpZWxkIGFuIGl0ZXJhYmxlXG4nCisgICAgICAgICdvYmplY3QuICBBbiBpdGVyYXRvciBpcyBjcmVhdGVkIGZvciB0aGUgcmVzdWx0IG9mIHRoZVxuJworICAgICAgICAnImV4cHJlc3Npb25fbGlzdCIuICBUaGUgc3VpdGUgaXMgdGhlbiBleGVjdXRlZCBvbmNlIGZvciBlYWNoIGl0ZW1cbicKKyAgICAgICAgJ3Byb3ZpZGVkIGJ5IHRoZSBpdGVyYXRvciwgaW4gdGhlIG9yZGVyIHJldHVybmVkIGJ5IHRoZSBpdGVyYXRvci4gICcKKyAgICAgICAgJ0VhY2hcbicKKyAgICAgICAgJ2l0ZW0gaW4gdHVybiBpcyBhc3NpZ25lZCB0byB0aGUgdGFyZ2V0IGxpc3QgdXNpbmcgdGhlIHN0YW5kYXJkIHJ1bGVzXG4nCisgICAgICAgICdmb3IgYXNzaWdubWVudHMgKHNlZSBBc3NpZ25tZW50IHN0YXRlbWVudHMpLCBhbmQgdGhlbiB0aGUgc3VpdGUgaXNcbicKKyAgICAgICAgJ2V4ZWN1dGVkLiAgV2hlbiB0aGUgaXRlbXMgYXJlIGV4aGF1c3RlZCAod2hpY2ggaXMgaW1tZWRpYXRlbHkgd2hlbiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJ3NlcXVlbmNlIGlzIGVtcHR5IG9yIGFuIGl0ZXJhdG9yIHJhaXNlcyBhICJTdG9wSXRlcmF0aW9uIiAnCisgICAgICAgICdleGNlcHRpb24pLFxuJworICAgICAgICAndGhlIHN1aXRlIGluIHRoZSAiZWxzZSIgY2xhdXNlLCBpZiBwcmVzZW50LCBpcyBleGVjdXRlZCwgYW5kIHRoZSAnCisgICAgICAgICdsb29wXG4nCisgICAgICAgICd0ZXJtaW5hdGVzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdBICJicmVhayIgc3RhdGVtZW50IGV4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSB0ZXJtaW5hdGVzIHRoZSBsb29wXG4nCisgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgJ2V4ZWN1dGVkIGluIHRoZSBmaXJzdCBzdWl0ZSBza2lwcyB0aGUgcmVzdCBvZiB0aGUgc3VpdGUgYW5kICcKKyAgICAgICAgJ2NvbnRpbnVlc1xuJworICAgICAgICAnd2l0aCB0aGUgbmV4dCBpdGVtLCBvciB3aXRoIHRoZSAiZWxzZSIgY2xhdXNlIGlmIHRoZXJlIGlzIG5vIG5leHRcbicKKyAgICAgICAgJ2l0ZW0uXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBmb3ItbG9vcCBtYWtlcyBhc3NpZ25tZW50cyB0byB0aGUgdmFyaWFibGVzKHMpIGluIHRoZSB0YXJnZXQgJworICAgICAgICAnbGlzdC5cbicKKyAgICAgICAgJ1RoaXMgb3ZlcndyaXRlcyBhbGwgcHJldmlvdXMgYXNzaWdubWVudHMgdG8gdGhvc2UgdmFyaWFibGVzICcKKyAgICAgICAgJ2luY2x1ZGluZ1xuJworICAgICAgICAndGhvc2UgbWFkZSBpbiB0aGUgc3VpdGUgb2YgdGhlIGZvci1sb29wOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICBmb3IgaSBpbiByYW5nZSgxMCk6XG4nCisgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgJyAgICAgICBpID0gNSAgICAgICAgICAgICAjIHRoaXMgd2lsbCBub3QgYWZmZWN0IHRoZSBmb3ItbG9vcFxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgYmVjYXVzZSBpIHdpbGwgYmUgb3ZlcndyaXR0ZW4gd2l0aCB0aGUgJworICAgICAgICAnbmV4dFxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgICMgaW5kZXggaW4gdGhlIHJhbmdlXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ05hbWVzIGluIHRoZSB0YXJnZXQgbGlzdCBhcmUgbm90IGRlbGV0ZWQgd2hlbiB0aGUgbG9vcCBpcyBmaW5pc2hlZCxcbicKKyAgICAgICAgJ2J1dCBpZiB0aGUgc2VxdWVuY2UgaXMgZW1wdHksIHRoZXkgd2lsbCBub3QgaGF2ZSBiZWVuIGFzc2lnbmVkIHRvIGF0XG4nCisgICAgICAgICdhbGwgYnkgdGhlIGxvb3AuICBIaW50OiB0aGUgYnVpbHQtaW4gZnVuY3Rpb24gInJhbmdlKCkiIHJldHVybnMgYW5cbicKKyAgICAgICAgJ2l0ZXJhdG9yIG9mIGludGVnZXJzIHN1aXRhYmxlIHRvIGVtdWxhdGUgdGhlIGVmZmVjdCBvZiBQYXNjYWxcJ3MgImZvciAnCisgICAgICAgICdpXG4nCisgICAgICAgICc6PSBhIHRvIGIgZG8iOyBlLmcuLCAibGlzdChyYW5nZSgzKSkiIHJldHVybnMgdGhlIGxpc3QgIlswLCAxLCAyXSIuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ05vdGU6IFRoZXJlIGlzIGEgc3VidGxldHkgd2hlbiB0aGUgc2VxdWVuY2UgaXMgYmVpbmcgbW9kaWZpZWQgYnkgdGhlXG4nCisgICAgICAgICcgIGxvb3AgKHRoaXMgY2FuIG9ubHkgb2NjdXIgZm9yIG11dGFibGUgc2VxdWVuY2VzLCBpLmUuIGxpc3RzKS4gIEFuXG4nCisgICAgICAgICcgIGludGVybmFsIGNvdW50ZXIgaXMgdXNlZCB0byBrZWVwIHRyYWNrIG9mIHdoaWNoIGl0ZW0gaXMgdXNlZCBuZXh0LFxuJworICAgICAgICAnICBhbmQgdGhpcyBpcyBpbmNyZW1lbnRlZCBvbiBlYWNoIGl0ZXJhdGlvbi4gIFdoZW4gdGhpcyBjb3VudGVyIGhhc1xuJworICAgICAgICAnICByZWFjaGVkIHRoZSBsZW5ndGggb2YgdGhlIHNlcXVlbmNlIHRoZSBsb29wIHRlcm1pbmF0ZXMuICBUaGlzICcKKyAgICAgICAgJ21lYW5zXG4nCisgICAgICAgICcgIHRoYXQgaWYgdGhlIHN1aXRlIGRlbGV0ZXMgdGhlIGN1cnJlbnQgKG9yIGEgcHJldmlvdXMpIGl0ZW0gZnJvbSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJyAgc2VxdWVuY2UsIHRoZSBuZXh0IGl0ZW0gd2lsbCBiZSBza2lwcGVkIChzaW5jZSBpdCBnZXRzIHRoZSBpbmRleCAnCisgICAgICAgICdvZlxuJworICAgICAgICAnICB0aGUgY3VycmVudCBpdGVtIHdoaWNoIGhhcyBhbHJlYWR5IGJlZW4gdHJlYXRlZCkuICBMaWtld2lzZSwgaWYgJworICAgICAgICAndGhlXG4nCisgICAgICAgICcgIHN1aXRlIGluc2VydHMgYW4gaXRlbSBpbiB0aGUgc2VxdWVuY2UgYmVmb3JlIHRoZSBjdXJyZW50IGl0ZW0sIHRoZVxuJworICAgICAgICAnICBjdXJyZW50IGl0ZW0gd2lsbCBiZSB0cmVhdGVkIGFnYWluIHRoZSBuZXh0IHRpbWUgdGhyb3VnaCB0aGUgbG9vcC5cbicKKyAgICAgICAgJyAgVGhpcyBjYW4gbGVhZCB0byBuYXN0eSBidWdzIHRoYXQgY2FuIGJlIGF2b2lkZWQgYnkgbWFraW5nIGFcbicKKyAgICAgICAgJyAgdGVtcG9yYXJ5IGNvcHkgdXNpbmcgYSBzbGljZSBvZiB0aGUgd2hvbGUgc2VxdWVuY2UsIGUuZy4sXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgICAgZm9yIHggaW4gYVs6XTpcbicKKyAgICAgICAgJyAgICAgICAgIGlmIHggPCAwOiBhLnJlbW92ZSh4KVxuJywKKyAnZm9ybWF0c3RyaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3JtYXQgU3RyaW5nIFN5bnRheFxuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJzdHIuZm9ybWF0KCkiIG1ldGhvZCBhbmQgdGhlICJGb3JtYXR0ZXIiIGNsYXNzIHNoYXJlICcKKyAgICAgICAgICAgICAgICAgICd0aGUgc2FtZVxuJworICAgICAgICAgICAgICAgICAgJ3N5bnRheCBmb3IgZm9ybWF0IHN0cmluZ3MgKGFsdGhvdWdoIGluIHRoZSBjYXNlIG9mICcKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0dGVyIixcbicKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzIGNhbiBkZWZpbmUgdGhlaXIgb3duIGZvcm1hdCBzdHJpbmcgc3ludGF4KS4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAnc3ludGF4IGlzXG4nCisgICAgICAgICAgICAgICAgICAncmVsYXRlZCB0byB0aGF0IG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMsIGJ1dCB0aGVyZSAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnZGlmZmVyZW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IHN0cmluZ3MgY29udGFpbiAicmVwbGFjZW1lbnQgZmllbGRzIiBzdXJyb3VuZGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdjdXJseSBicmFjZXNcbicKKyAgICAgICAgICAgICAgICAgICcie30iLiBBbnl0aGluZyB0aGF0IGlzIG5vdCBjb250YWluZWQgaW4gYnJhY2VzIGlzICcKKyAgICAgICAgICAgICAgICAgICdjb25zaWRlcmVkIGxpdGVyYWxcbicKKyAgICAgICAgICAgICAgICAgICd0ZXh0LCB3aGljaCBpcyBjb3BpZWQgdW5jaGFuZ2VkIHRvIHRoZSBvdXRwdXQuICBJZiB5b3UgbmVlZCAnCisgICAgICAgICAgICAgICAgICAndG8gaW5jbHVkZVxuJworICAgICAgICAgICAgICAgICAgJ2EgYnJhY2UgY2hhcmFjdGVyIGluIHRoZSBsaXRlcmFsIHRleHQsIGl0IGNhbiBiZSBlc2NhcGVkIGJ5ICcKKyAgICAgICAgICAgICAgICAgICdkb3VibGluZzpcbicKKyAgICAgICAgICAgICAgICAgICcie3siIGFuZCAifX0iLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBncmFtbWFyIGZvciBhIHJlcGxhY2VtZW50IGZpZWxkIGlzIGFzIGZvbGxvd3M6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgcmVwbGFjZW1lbnRfZmllbGQgOjo9ICJ7IiBbZmllbGRfbmFtZV0gWyIhIiAnCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbl0gWyI6IiBmb3JtYXRfc3BlY10gIn0iXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZmllbGRfbmFtZSAgICAgICAgOjo9IGFyZ19uYW1lICgiLiIgYXR0cmlidXRlX25hbWUgfCAnCisgICAgICAgICAgICAgICAgICAnIlsiIGVsZW1lbnRfaW5kZXggIl0iKSpcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBhcmdfbmFtZSAgICAgICAgICA6Oj0gW2lkZW50aWZpZXIgfCBpbnRlZ2VyXVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZV9uYW1lICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgZWxlbWVudF9pbmRleCAgICAgOjo9IGludGVnZXIgfCBpbmRleF9zdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICBpbmRleF9zdHJpbmcgICAgICA6Oj0gPGFueSBzb3VyY2UgY2hhcmFjdGVyIGV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICAnIl0iPiArXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgY29udmVyc2lvbiAgICAgICAgOjo9ICJyIiB8ICJzIiB8ICJhIlxuJworICAgICAgICAgICAgICAgICAgJyAgICAgIGZvcm1hdF9zcGVjICAgICAgIDo6PSA8ZGVzY3JpYmVkIGluIHRoZSBuZXh0ICcKKyAgICAgICAgICAgICAgICAgICdzZWN0aW9uPlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0luIGxlc3MgZm9ybWFsIHRlcm1zLCB0aGUgcmVwbGFjZW1lbnQgZmllbGQgY2FuIHN0YXJ0IHdpdGggJworICAgICAgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAgICAgICcqZmllbGRfbmFtZSogdGhhdCBzcGVjaWZpZXMgdGhlIG9iamVjdCB3aG9zZSB2YWx1ZSBpcyB0byBiZSAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAgICAgICAnYW5kIGluc2VydGVkIGludG8gdGhlIG91dHB1dCBpbnN0ZWFkIG9mIHRoZSByZXBsYWNlbWVudCAnCisgICAgICAgICAgICAgICAgICAnZmllbGQuIFRoZVxuJworICAgICAgICAgICAgICAgICAgJypmaWVsZF9uYW1lKiBpcyBvcHRpb25hbGx5IGZvbGxvd2VkIGJ5IGEgICpjb252ZXJzaW9uKiAnCisgICAgICAgICAgICAgICAgICAnZmllbGQsIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAncHJlY2VkZWQgYnkgYW4gZXhjbGFtYXRpb24gcG9pbnQgIlwnIVwnIiwgYW5kIGEgJworICAgICAgICAgICAgICAgICAgJypmb3JtYXRfc3BlYyosIHdoaWNoIGlzXG4nCisgICAgICAgICAgICAgICAgICAncHJlY2VkZWQgYnkgYSBjb2xvbiAiXCc6XCciLiAgVGhlc2Ugc3BlY2lmeSBhIG5vbi1kZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgZm9yIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50IHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvIHRoZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiBNaW5pLUxhbmd1YWdlIHNlY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpmaWVsZF9uYW1lKiBpdHNlbGYgYmVnaW5zIHdpdGggYW4gKmFyZ19uYW1lKiB0aGF0IGlzICcKKyAgICAgICAgICAgICAgICAgICdlaXRoZXIgYVxuJworICAgICAgICAgICAgICAgICAgIm51bWJlciBvciBhIGtleXdvcmQuICBJZiBpdCdzIGEgbnVtYmVyLCBpdCByZWZlcnMgdG8gYSAiCisgICAgICAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICAgICAgImFyZ3VtZW50LCBhbmQgaWYgaXQncyBhIGtleXdvcmQsIGl0IHJlZmVycyB0byBhIG5hbWVkICIKKyAgICAgICAgICAgICAgICAgICdrZXl3b3JkXG4nCisgICAgICAgICAgICAgICAgICAnYXJndW1lbnQuICBJZiB0aGUgbnVtZXJpY2FsIGFyZ19uYW1lcyBpbiBhIGZvcm1hdCBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgJ2FyZSAwLCAxLCAyLFxuJworICAgICAgICAgICAgICAgICAgJy4uLiBpbiBzZXF1ZW5jZSwgdGhleSBjYW4gYWxsIGJlIG9taXR0ZWQgKG5vdCBqdXN0IHNvbWUpICcKKyAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVycyAwLCAxLCAyLCAuLi4gd2lsbCBiZSBhdXRvbWF0aWNhbGx5IGluc2VydGVkIGluIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ29yZGVyLlxuJworICAgICAgICAgICAgICAgICAgJ0JlY2F1c2UgKmFyZ19uYW1lKiBpcyBub3QgcXVvdGUtZGVsaW1pdGVkLCBpdCBpcyBub3QgJworICAgICAgICAgICAgICAgICAgJ3Bvc3NpYmxlIHRvXG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmeSBhcmJpdHJhcnkgZGljdGlvbmFyeSBrZXlzIChlLmcuLCB0aGUgc3RyaW5ncyAnCisgICAgICAgICAgICAgICAgICAnIlwnMTBcJyIgb3JcbicKKyAgICAgICAgICAgICAgICAgICciXCc6LV1cJyIpIHdpdGhpbiBhIGZvcm1hdCBzdHJpbmcuIFRoZSAqYXJnX25hbWUqIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICAnZm9sbG93ZWQgYnkgYW55XG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVyIG9mIGluZGV4IG9yIGF0dHJpYnV0ZSBleHByZXNzaW9ucy4gQW4gZXhwcmVzc2lvbiBvZiAnCisgICAgICAgICAgICAgICAgICAndGhlIGZvcm1cbicKKyAgICAgICAgICAgICAgICAgICciXCcubmFtZVwnIiBzZWxlY3RzIHRoZSBuYW1lZCBhdHRyaWJ1dGUgdXNpbmcgImdldGF0dHIoKSIsICcKKyAgICAgICAgICAgICAgICAgICd3aGlsZSBhblxuJworICAgICAgICAgICAgICAgICAgJ2V4cHJlc3Npb24gb2YgdGhlIGZvcm0gIlwnW2luZGV4XVwnIiBkb2VzIGFuIGluZGV4IGxvb2t1cCAnCisgICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogVGhlIHBvc2l0aW9uYWwgYXJndW1lbnQgc3BlY2lmaWVycyAnCisgICAgICAgICAgICAgICAgICAnY2FuIGJlXG4nCisgICAgICAgICAgICAgICAgICAnb21pdHRlZCwgc28gIlwne30ge31cJyIgaXMgZXF1aXZhbGVudCB0byAiXCd7MH0gezF9XCciLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NvbWUgc2ltcGxlIGZvcm1hdCBzdHJpbmcgZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIkZpcnN0LCB0aG91IHNoYWx0IGNvdW50IHRvIHswfSIgICMgUmVmZXJlbmNlcyBmaXJzdCAnCisgICAgICAgICAgICAgICAgICAncG9zaXRpb25hbCBhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAgJyAgICJCcmluZyBtZSBhIHt9IiAgICAgICAgICAgICAgICAgICAjIEltcGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAgJ3JlZmVyZW5jZXMgdGhlIGZpcnN0IHBvc2l0aW9uYWwgYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICcgICAiRnJvbSB7fSB0byB7fSIgICAgICAgICAgICAgICAgICAgIyBTYW1lIGFzICJGcm9tIHswfSB0byAnCisgICAgICAgICAgICAgICAgICAnezF9IlxuJworICAgICAgICAgICAgICAgICAgJyAgICJNeSBxdWVzdCBpcyB7bmFtZX0iICAgICAgICAgICAgICAjIFJlZmVyZW5jZXMga2V5d29yZCAnCisgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgJ25hbWUnXG4iCisgICAgICAgICAgICAgICAgICAnICAgIldlaWdodCBpbiB0b25zIHswLndlaWdodH0iICAgICAgICMgXCd3ZWlnaHRcJyBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAgJ29mIGZpcnN0IHBvc2l0aW9uYWwgYXJnXG4nCisgICAgICAgICAgICAgICAgICAnICAgIlVuaXRzIGRlc3Ryb3llZDoge3BsYXllcnNbMF19IiAgICMgRmlyc3QgZWxlbWVudCBvZiAnCisgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudCAncGxheWVycycuXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpjb252ZXJzaW9uKiBmaWVsZCBjYXVzZXMgYSB0eXBlIGNvZXJjaW9uIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdOb3JtYWxseSwgdGhlIGpvYiBvZiBmb3JtYXR0aW5nIGEgdmFsdWUgaXMgZG9uZSBieSB0aGUgJworICAgICAgICAgICAgICAgICAgJyJfX2Zvcm1hdF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICAnbWV0aG9kIG9mIHRoZSB2YWx1ZSBpdHNlbGYuICBIb3dldmVyLCBpbiBzb21lIGNhc2VzIGl0IGlzICcKKyAgICAgICAgICAgICAgICAgICdkZXNpcmFibGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdmb3JjZSBhIHR5cGUgdG8gYmUgZm9ybWF0dGVkIGFzIGEgc3RyaW5nLCBvdmVycmlkaW5nIGl0cyAnCisgICAgICAgICAgICAgICAgICAnb3duXG4nCisgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiBmb3JtYXR0aW5nLiAgQnkgY29udmVydGluZyB0aGUgdmFsdWUgdG8gYSAnCisgICAgICAgICAgICAgICAgICAnc3RyaW5nIGJlZm9yZVxuJworICAgICAgICAgICAgICAgICAgJ2NhbGxpbmcgIl9fZm9ybWF0X18oKSIsIHRoZSBub3JtYWwgZm9ybWF0dGluZyBsb2dpYyBpcyAnCisgICAgICAgICAgICAgICAgICAnYnlwYXNzZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhyZWUgY29udmVyc2lvbiBmbGFncyBhcmUgY3VycmVudGx5IHN1cHBvcnRlZDogIlwnIXNcJyIgJworICAgICAgICAgICAgICAgICAgJ3doaWNoIGNhbGxzXG4nCisgICAgICAgICAgICAgICAgICAnInN0cigpIiBvbiB0aGUgdmFsdWUsICJcJyFyXCciIHdoaWNoIGNhbGxzICJyZXByKCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIlwnIWFcJyIgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICdjYWxscyAiYXNjaWkoKSIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnU29tZSBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiSGFyb2xkXCdzIGEgY2xldmVyIHswIXN9IiAgICAgICAgIyBDYWxscyBzdHIoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnICAgIkJyaW5nIG91dCB0aGUgaG9seSB7bmFtZSFyfSIgICAgIyBDYWxscyByZXByKCkgb24gdGhlICcKKyAgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmaXJzdFxuJworICAgICAgICAgICAgICAgICAgJyAgICJNb3JlIHshYX0iICAgICAgICAgICAgICAgICAgICAgICMgQ2FsbHMgYXNjaWkoKSBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZpcnN0XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpmb3JtYXRfc3BlYyogZmllbGQgY29udGFpbnMgYSBzcGVjaWZpY2F0aW9uIG9mIGhvdyB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHByZXNlbnRlZCwgaW5jbHVkaW5nIHN1Y2ggZGV0YWlscyBhcyBmaWVsZCB3aWR0aCwgJworICAgICAgICAgICAgICAgICAgJ2FsaWdubWVudCxcbicKKyAgICAgICAgICAgICAgICAgICdwYWRkaW5nLCBkZWNpbWFsIHByZWNpc2lvbiBhbmQgc28gb24uICBFYWNoIHZhbHVlIHR5cGUgY2FuICcKKyAgICAgICAgICAgICAgICAgICdkZWZpbmUgaXRzXG4nCisgICAgICAgICAgICAgICAgICAnb3duICJmb3JtYXR0aW5nIG1pbmktbGFuZ3VhZ2UiIG9yIGludGVycHJldGF0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnKmZvcm1hdF9zcGVjKi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdNb3N0IGJ1aWx0LWluIHR5cGVzIHN1cHBvcnQgYSBjb21tb24gZm9ybWF0dGluZyAnCisgICAgICAgICAgICAgICAgICAnbWluaS1sYW5ndWFnZSwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICdpcyBkZXNjcmliZWQgaW4gdGhlIG5leHQgc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBICpmb3JtYXRfc3BlYyogZmllbGQgY2FuIGFsc28gaW5jbHVkZSBuZXN0ZWQgcmVwbGFjZW1lbnQgJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkc1xuJworICAgICAgICAgICAgICAgICAgJ3dpdGhpbiBpdC4gVGhlc2UgbmVzdGVkIHJlcGxhY2VtZW50IGZpZWxkcyBtYXkgY29udGFpbiBhICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCBuYW1lLFxuJworICAgICAgICAgICAgICAgICAgJ2NvbnZlcnNpb24gZmxhZyBhbmQgZm9ybWF0IHNwZWNpZmljYXRpb24sIGJ1dCBkZWVwZXIgJworICAgICAgICAgICAgICAgICAgJ25lc3RpbmcgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICAnYWxsb3dlZC4gIFRoZSByZXBsYWNlbWVudCBmaWVsZHMgd2l0aGluIHRoZSBmb3JtYXRfc3BlYyAnCisgICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICAnc3Vic3RpdHV0ZWQgYmVmb3JlIHRoZSAqZm9ybWF0X3NwZWMqIHN0cmluZyBpcyBpbnRlcnByZXRlZC4gJworICAgICAgICAgICAgICAgICAgJ1RoaXNcbicKKyAgICAgICAgICAgICAgICAgICdhbGxvd3MgdGhlIGZvcm1hdHRpbmcgb2YgYSB2YWx1ZSB0byBiZSBkeW5hbWljYWxseSAnCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1NlZSB0aGUgRm9ybWF0IGV4YW1wbGVzIHNlY3Rpb24gZm9yIHNvbWUgZXhhbXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnRm9ybWF0IFNwZWNpZmljYXRpb24gTWluaS1MYW5ndWFnZVxuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICciRm9ybWF0IHNwZWNpZmljYXRpb25zIiBhcmUgdXNlZCB3aXRoaW4gcmVwbGFjZW1lbnQgZmllbGRzICcKKyAgICAgICAgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gYSBmb3JtYXQgc3RyaW5nIHRvIGRlZmluZSBob3cgaW5kaXZpZHVhbCB2YWx1ZXMgYXJlICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50ZWRcbicKKyAgICAgICAgICAgICAgICAgICcoc2VlIEZvcm1hdCBTdHJpbmcgU3ludGF4IGFuZCBGb3JtYXR0ZWQgc3RyaW5nIGxpdGVyYWxzKS4gJworICAgICAgICAgICAgICAgICAgJ1RoZXkgY2FuXG4nCisgICAgICAgICAgICAgICAgICAnYWxzbyBiZSBwYXNzZWQgZGlyZWN0bHkgdG8gdGhlIGJ1aWx0LWluICJmb3JtYXQoKSIgJworICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uLiAgRWFjaFxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRhYmxlIHR5cGUgbWF5IGRlZmluZSBob3cgdGhlIGZvcm1hdCBzcGVjaWZpY2F0aW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICd0byBiZVxuJworICAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ01vc3QgYnVpbHQtaW4gdHlwZXMgaW1wbGVtZW50IHRoZSBmb2xsb3dpbmcgb3B0aW9ucyBmb3IgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdFxuJworICAgICAgICAgICAgICAgICAgJ3NwZWNpZmljYXRpb25zLCBhbHRob3VnaCBzb21lIG9mIHRoZSBmb3JtYXR0aW5nIG9wdGlvbnMgYXJlICcKKyAgICAgICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgICAgICAnc3VwcG9ydGVkIGJ5IHRoZSBudW1lcmljIHR5cGVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0EgZ2VuZXJhbCBjb252ZW50aW9uIGlzIHRoYXQgYW4gZW1wdHkgZm9ybWF0IHN0cmluZyAoIiIiIikgJworICAgICAgICAgICAgICAgICAgJ3Byb2R1Y2VzXG4nCisgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgcmVzdWx0IGFzIGlmIHlvdSBoYWQgY2FsbGVkICJzdHIoKSIgb24gdGhlIHZhbHVlLiAnCisgICAgICAgICAgICAgICAgICAnQSBub24tZW1wdHlcbicKKyAgICAgICAgICAgICAgICAgICdmb3JtYXQgc3RyaW5nIHR5cGljYWxseSBtb2RpZmllcyB0aGUgcmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBnZW5lcmFsIGZvcm0gb2YgYSAqc3RhbmRhcmQgZm9ybWF0IHNwZWNpZmllciogaXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgZm9ybWF0X3NwZWMgICAgIDo6PSAnCisgICAgICAgICAgICAgICAgICAnW1tmaWxsXWFsaWduXVtzaWduXVsjXVswXVt3aWR0aF1bZ3JvdXBpbmdfb3B0aW9uXVsucHJlY2lzaW9uXVt0eXBlXVxuJworICAgICAgICAgICAgICAgICAgJyAgIGZpbGwgICAgICAgICAgICA6Oj0gPGFueSBjaGFyYWN0ZXI+XG4nCisgICAgICAgICAgICAgICAgICAnICAgYWxpZ24gICAgICAgICAgIDo6PSAiPCIgfCAiPiIgfCAiPSIgfCAiXiJcbicKKyAgICAgICAgICAgICAgICAgICcgICBzaWduICAgICAgICAgICAgOjo9ICIrIiB8ICItIiB8ICIgIlxuJworICAgICAgICAgICAgICAgICAgJyAgIHdpZHRoICAgICAgICAgICA6Oj0gaW50ZWdlclxuJworICAgICAgICAgICAgICAgICAgJyAgIGdyb3VwaW5nX29wdGlvbiA6Oj0gIl8iIHwgIiwiXG4nCisgICAgICAgICAgICAgICAgICAnICAgcHJlY2lzaW9uICAgICAgIDo6PSBpbnRlZ2VyXG4nCisgICAgICAgICAgICAgICAgICAnICAgdHlwZSAgICAgICAgICAgIDo6PSAiYiIgfCAiYyIgfCAiZCIgfCAiZSIgfCAiRSIgfCAiZiIgfCAnCisgICAgICAgICAgICAgICAgICAnIkYiIHwgImciIHwgIkciIHwgIm4iIHwgIm8iIHwgInMiIHwgIngiIHwgIlgiIHwgIiUiXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgYSB2YWxpZCAqYWxpZ24qIHZhbHVlIGlzIHNwZWNpZmllZCwgaXQgY2FuIGJlIHByZWNlZGVkICcKKyAgICAgICAgICAgICAgICAgICdieSBhICpmaWxsKlxuJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciB0aGF0IGNhbiBiZSBhbnkgY2hhcmFjdGVyIGFuZCBkZWZhdWx0cyB0byBhIHNwYWNlICcKKyAgICAgICAgICAgICAgICAgICdpZlxuJworICAgICAgICAgICAgICAgICAgJ29taXR0ZWQuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byB1c2UgYSBsaXRlcmFsIGN1cmx5IGJyYWNlICcKKyAgICAgICAgICAgICAgICAgICcoIiJ7IiIgb3JcbicKKyAgICAgICAgICAgICAgICAgICciIn0iIikgYXMgdGhlICpmaWxsKiBjaGFyYWN0ZXIgaW4gYSBmb3JtYXR0ZWQgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICdsaXRlcmFsIG9yIHdoZW5cbicKKyAgICAgICAgICAgICAgICAgICd1c2luZyB0aGUgInN0ci5mb3JtYXQoKSIgbWV0aG9kLiAgSG93ZXZlciwgaXQgaXMgcG9zc2libGUgJworICAgICAgICAgICAgICAgICAgJ3RvIGluc2VydCBhXG4nCisgICAgICAgICAgICAgICAgICAnY3VybHkgYnJhY2Ugd2l0aCBhIG5lc3RlZCByZXBsYWNlbWVudCBmaWVsZC4gIFRoaXMgJworICAgICAgICAgICAgICAgICAgImxpbWl0YXRpb24gZG9lc24ndFxuIgorICAgICAgICAgICAgICAgICAgJ2FmZmVjdCB0aGUgImZvcm1hdCgpIiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgbWVhbmluZyBvZiB0aGUgdmFyaW91cyBhbGlnbm1lbnQgb3B0aW9ucyBpcyBhcyAnCisgICAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE9wdGlvbiAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCc8XCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgbGVmdC1hbGlnbmVkICcKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gdGhlIGF2YWlsYWJsZSAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNwYWNlICh0aGlzIGlzIHRoZSBkZWZhdWx0IGZvciBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICdvYmplY3RzKS4gICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJz5cJyIgICAgIHwgRm9yY2VzIHRoZSBmaWVsZCB0byBiZSByaWdodC1hbGlnbmVkICcKKyAgICAgICAgICAgICAgICAgICd3aXRoaW4gdGhlIGF2YWlsYWJsZSAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgc3BhY2UgKHRoaXMgaXMgdGhlIGRlZmF1bHQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzKS4gICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnPVwnIiAgICAgfCBGb3JjZXMgdGhlIHBhZGRpbmcgdG8gYmUgcGxhY2VkIGFmdGVyICcKKyAgICAgICAgICAgICAgICAgICd0aGUgc2lnbiAoaWYgYW55KSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBidXQgYmVmb3JlIHRoZSBkaWdpdHMuICBUaGlzIGlzIHVzZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICdwcmludGluZyBmaWVsZHMgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBpbiB0aGUgZm9ybSAnKzAwMDAwMDEyMCcuIFRoaXMgYWxpZ25tZW50ICIKKyAgICAgICAgICAgICAgICAgICdvcHRpb24gaXMgb25seSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB2YWxpZCBmb3IgbnVtZXJpYyB0eXBlcy4gIEl0IGJlY29tZXMgdGhlICcKKyAgICAgICAgICAgICAgICAgICJkZWZhdWx0IHdoZW4gJzAnICB8XG4iCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBpbW1lZGlhdGVseSBwcmVjZWRlcyB0aGUgZmllbGQgJworICAgICAgICAgICAgICAgICAgJ3dpZHRoLiAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdeXCciICAgICB8IEZvcmNlcyB0aGUgZmllbGQgdG8gYmUgY2VudGVyZWQgd2l0aGluICcKKyAgICAgICAgICAgICAgICAgICd0aGUgYXZhaWxhYmxlICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdzcGFjZS4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnTm90ZSB0aGF0IHVubGVzcyBhIG1pbmltdW0gZmllbGQgd2lkdGggaXMgZGVmaW5lZCwgdGhlICcKKyAgICAgICAgICAgICAgICAgICdmaWVsZCB3aWR0aFxuJworICAgICAgICAgICAgICAgICAgJ3dpbGwgYWx3YXlzIGJlIHRoZSBzYW1lIHNpemUgYXMgdGhlIGRhdGEgdG8gZmlsbCBpdCwgc28gJworICAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnYWxpZ25tZW50IG9wdGlvbiBoYXMgbm8gbWVhbmluZyBpbiB0aGlzIGNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICpzaWduKiBvcHRpb24gaXMgb25seSB2YWxpZCBmb3IgbnVtYmVyIHR5cGVzLCBhbmQgY2FuICcKKyAgICAgICAgICAgICAgICAgICdiZSBvbmUgb2ZcbicKKyAgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgT3B0aW9uICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJytcJyIgICAgIHwgaW5kaWNhdGVzIHRoYXQgYSBzaWduIHNob3VsZCBiZSB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICAnYm90aCBwb3NpdGl2ZSBhcyAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd2VsbCBhcyBuZWdhdGl2ZSAnCisgICAgICAgICAgICAgICAgICAnbnVtYmVycy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnLVwnIiAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIHNpZ24gc2hvdWxkIGJlIHVzZWQgJworICAgICAgICAgICAgICAgICAgJ29ubHkgZm9yIG5lZ2F0aXZlICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBudW1iZXJzICh0aGlzIGlzIHRoZSBkZWZhdWx0ICcKKyAgICAgICAgICAgICAgICAgICdiZWhhdmlvcikuICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBzcGFjZSAgICAgfCBpbmRpY2F0ZXMgdGhhdCBhIGxlYWRpbmcgc3BhY2Ugc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICd1c2VkIG9uIHBvc2l0aXZlICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBudW1iZXJzLCBhbmQgYSBtaW51cyBzaWduIG9uIG5lZ2F0aXZlICcKKyAgICAgICAgICAgICAgICAgICdudW1iZXJzLiAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlICJcJyNcJyIgb3B0aW9uIGNhdXNlcyB0aGUgImFsdGVybmF0ZSBmb3JtIiB0byBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgICdmb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbi4gIFRoZSBhbHRlcm5hdGUgZm9ybSBpcyBkZWZpbmVkIGRpZmZlcmVudGx5IGZvciAnCisgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50XG4nCisgICAgICAgICAgICAgICAgICAndHlwZXMuICBUaGlzIG9wdGlvbiBpcyBvbmx5IHZhbGlkIGZvciBpbnRlZ2VyLCBmbG9hdCwgJworICAgICAgICAgICAgICAgICAgJ2NvbXBsZXggYW5kXG4nCisgICAgICAgICAgICAgICAgICAnRGVjaW1hbCB0eXBlcy4gRm9yIGludGVnZXJzLCB3aGVuIGJpbmFyeSwgb2N0YWwsIG9yICcKKyAgICAgICAgICAgICAgICAgICdoZXhhZGVjaW1hbCBvdXRwdXRcbicKKyAgICAgICAgICAgICAgICAgICdpcyB1c2VkLCB0aGlzIG9wdGlvbiBhZGRzIHRoZSBwcmVmaXggcmVzcGVjdGl2ZSAiXCcwYlwnIiwgJworICAgICAgICAgICAgICAgICAgJyJcJzBvXCciLCBvclxuJworICAgICAgICAgICAgICAgICAgJyJcJzB4XCciIHRvIHRoZSBvdXRwdXQgdmFsdWUuIEZvciBmbG9hdHMsIGNvbXBsZXggYW5kICcKKyAgICAgICAgICAgICAgICAgICdEZWNpbWFsIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ2FsdGVybmF0ZSBmb3JtIGNhdXNlcyB0aGUgcmVzdWx0IG9mIHRoZSBjb252ZXJzaW9uIHRvICcKKyAgICAgICAgICAgICAgICAgICdhbHdheXMgY29udGFpbiBhXG4nCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIsIGV2ZW4gaWYgbm8gZGlnaXRzIGZvbGxvdyBpdC4gJworICAgICAgICAgICAgICAgICAgJ05vcm1hbGx5LCBhXG4nCisgICAgICAgICAgICAgICAgICAnZGVjaW1hbC1wb2ludCBjaGFyYWN0ZXIgYXBwZWFycyBpbiB0aGUgcmVzdWx0IG9mIHRoZXNlICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJzaW9uc1xuJworICAgICAgICAgICAgICAgICAgJ29ubHkgaWYgYSBkaWdpdCBmb2xsb3dzIGl0LiBJbiBhZGRpdGlvbiwgZm9yICJcJ2dcJyIgYW5kICcKKyAgICAgICAgICAgICAgICAgICciXCdHXCciXG4nCisgICAgICAgICAgICAgICAgICAnY29udmVyc2lvbnMsIHRyYWlsaW5nIHplcm9zIGFyZSBub3QgcmVtb3ZlZCBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICAncmVzdWx0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSAiXCcsXCciIG9wdGlvbiBzaWduYWxzIHRoZSB1c2Ugb2YgYSBjb21tYSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAndGhvdXNhbmRzIHNlcGFyYXRvci5cbicKKyAgICAgICAgICAgICAgICAgICdGb3IgYSBsb2NhbGUgYXdhcmUgc2VwYXJhdG9yLCB1c2UgdGhlICJcJ25cJyIgaW50ZWdlciAnCisgICAgICAgICAgICAgICAgICAncHJlc2VudGF0aW9uIHR5cGVcbicKKyAgICAgICAgICAgICAgICAgICdpbnN0ZWFkLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjE6IEFkZGVkIHRoZSAiXCcsXCciIG9wdGlvbiAoc2VlIGFsc28gJworICAgICAgICAgICAgICAgICAgJyoqUEVQIDM3OCoqKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgIlwnX1wnIiBvcHRpb24gc2lnbmFscyB0aGUgdXNlIG9mIGFuIHVuZGVyc2NvcmUgZm9yIGEgJworICAgICAgICAgICAgICAgICAgJ3Rob3VzYW5kc1xuJworICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvciBmb3IgZmxvYXRpbmcgcG9pbnQgcHJlc2VudGF0aW9uIHR5cGVzIGFuZCBmb3IgJworICAgICAgICAgICAgICAgICAgJ2ludGVnZXJcbicKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50YXRpb24gdHlwZSAiXCdkXCciLiAgRm9yIGludGVnZXIgcHJlc2VudGF0aW9uIHR5cGVzICcKKyAgICAgICAgICAgICAgICAgICciXCdiXCciLCAiXCdvXCciLFxuJworICAgICAgICAgICAgICAgICAgJyJcJ3hcJyIsIGFuZCAiXCdYXCciLCB1bmRlcnNjb3JlcyB3aWxsIGJlIGluc2VydGVkIGV2ZXJ5IDQgJworICAgICAgICAgICAgICAgICAgJ2RpZ2l0cy4gIEZvclxuJworICAgICAgICAgICAgICAgICAgJ290aGVyIHByZXNlbnRhdGlvbiB0eXBlcywgc3BlY2lmeWluZyB0aGlzIG9wdGlvbiBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAnZXJyb3IuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNjogQWRkZWQgdGhlICJcJ19cJyIgb3B0aW9uIChzZWUgYWxzbyAnCisgICAgICAgICAgICAgICAgICAnKipQRVAgNTE1KiopLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyp3aWR0aCogaXMgYSBkZWNpbWFsIGludGVnZXIgZGVmaW5pbmcgdGhlIG1pbmltdW0gZmllbGQgJworICAgICAgICAgICAgICAgICAgJ3dpZHRoLiAgSWYgbm90XG4nCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkLCB0aGVuIHRoZSBmaWVsZCB3aWR0aCB3aWxsIGJlIGRldGVybWluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgICdjb250ZW50LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1doZW4gbm8gZXhwbGljaXQgYWxpZ25tZW50IGlzIGdpdmVuLCBwcmVjZWRpbmcgdGhlICp3aWR0aCogJworICAgICAgICAgICAgICAgICAgJ2ZpZWxkIGJ5IGFcbicKKyAgICAgICAgICAgICAgICAgICd6ZXJvICgiXCcwXCciKSBjaGFyYWN0ZXIgZW5hYmxlcyBzaWduLWF3YXJlIHplcm8tcGFkZGluZyAnCisgICAgICAgICAgICAgICAgICAnZm9yIG51bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICd0eXBlcy4gIFRoaXMgaXMgZXF1aXZhbGVudCB0byBhICpmaWxsKiBjaGFyYWN0ZXIgb2YgIlwnMFwnIiAnCisgICAgICAgICAgICAgICAgICAnd2l0aCBhblxuJworICAgICAgICAgICAgICAgICAgJyphbGlnbm1lbnQqIHR5cGUgb2YgIlwnPVwnIi5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgKnByZWNpc2lvbiogaXMgYSBkZWNpbWFsIG51bWJlciBpbmRpY2F0aW5nIGhvdyBtYW55ICcKKyAgICAgICAgICAgICAgICAgICdkaWdpdHMgc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICAnYmUgZGlzcGxheWVkIGFmdGVyIHRoZSBkZWNpbWFsIHBvaW50IGZvciBhIGZsb2F0aW5nIHBvaW50ICcKKyAgICAgICAgICAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdHRlZCB3aXRoICJcJ2ZcJyIgYW5kICJcJ0ZcJyIsIG9yIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHBvaW50XG4nCisgICAgICAgICAgICAgICAgICAnZm9yIGEgZmxvYXRpbmcgcG9pbnQgdmFsdWUgZm9ybWF0dGVkIHdpdGggIlwnZ1wnIiBvciAnCisgICAgICAgICAgICAgICAgICAnIlwnR1wnIi4gIEZvciBub24tXG4nCisgICAgICAgICAgICAgICAgICAnbnVtYmVyIHR5cGVzIHRoZSBmaWVsZCBpbmRpY2F0ZXMgdGhlIG1heGltdW0gZmllbGQgc2l6ZSAtICcKKyAgICAgICAgICAgICAgICAgICdpbiBvdGhlclxuJworICAgICAgICAgICAgICAgICAgJ3dvcmRzLCBob3cgbWFueSBjaGFyYWN0ZXJzIHdpbGwgYmUgdXNlZCBmcm9tIHRoZSBmaWVsZCAnCisgICAgICAgICAgICAgICAgICAnY29udGVudC4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAnKnByZWNpc2lvbiogaXMgbm90IGFsbG93ZWQgZm9yIGludGVnZXIgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0ZpbmFsbHksIHRoZSAqdHlwZSogZGV0ZXJtaW5lcyBob3cgdGhlIGRhdGEgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAgICAgICdwcmVzZW50ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGF2YWlsYWJsZSBzdHJpbmcgcHJlc2VudGF0aW9uIHR5cGVzIGFyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdzXCciICAgICB8IFN0cmluZyBmb3JtYXQuIFRoaXMgaXMgdGhlIGRlZmF1bHQgdHlwZSAnCisgICAgICAgICAgICAgICAgICAnZm9yIHN0cmluZ3MgYW5kICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAnb21pdHRlZC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IE5vbmUgICAgICB8IFRoZSBzYW1lIGFzICcKKyAgICAgICAgICAgICAgICAgICciXCdzXCciLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBhdmFpbGFibGUgaW50ZWdlciBwcmVzZW50YXRpb24gdHlwZXMgYXJlOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgVHlwZSAgICAgIHwgJworICAgICAgICAgICAgICAgICAgJ01lYW5pbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ2JcJyIgICAgIHwgQmluYXJ5IGZvcm1hdC4gT3V0cHV0cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdiYXNlIDIuICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwnY1wnIiAgICAgfCBDaGFyYWN0ZXIuIENvbnZlcnRzIHRoZSBpbnRlZ2VyIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZGluZyAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB1bmljb2RlIGNoYXJhY3RlciBiZWZvcmUgJworICAgICAgICAgICAgICAgICAgJ3ByaW50aW5nLiAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdkXCciICAgICB8IERlY2ltYWwgSW50ZWdlci4gT3V0cHV0cyB0aGUgbnVtYmVyIGluICcKKyAgICAgICAgICAgICAgICAgICdiYXNlIDEwLiAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ29cJyIgICAgIHwgT2N0YWwgZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnOC4gICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgIlwneFwnIiAgICAgfCBIZXggZm9ybWF0LiBPdXRwdXRzIHRoZSBudW1iZXIgaW4gYmFzZSAnCisgICAgICAgICAgICAgICAgICAnMTYsIHVzaW5nIGxvd2VyLSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjYXNlIGxldHRlcnMgZm9yIHRoZSBkaWdpdHMgYWJvdmUgJworICAgICAgICAgICAgICAgICAgJzkuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdYXCciICAgICB8IEhleCBmb3JtYXQuIE91dHB1dHMgdGhlIG51bWJlciBpbiBiYXNlICcKKyAgICAgICAgICAgICAgICAgICcxNiwgdXNpbmcgdXBwZXItICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2UgbGV0dGVycyBmb3IgdGhlIGRpZ2l0cyBhYm92ZSAnCisgICAgICAgICAgICAgICAgICAnOS4gICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2RcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCBOb25lICAgICAgfCBUaGUgc2FtZSBhcyAnCisgICAgICAgICAgICAgICAgICAnIlwnZFwnIi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBhZGRpdGlvbiB0byB0aGUgYWJvdmUgcHJlc2VudGF0aW9uIHR5cGVzLCBpbnRlZ2VycyBjYW4gJworICAgICAgICAgICAgICAgICAgJ2JlIGZvcm1hdHRlZFxuJworICAgICAgICAgICAgICAgICAgJ3dpdGggdGhlIGZsb2F0aW5nIHBvaW50IHByZXNlbnRhdGlvbiB0eXBlcyBsaXN0ZWQgYmVsb3cgJworICAgICAgICAgICAgICAgICAgJyhleGNlcHQgIlwnblwnIlxuJworICAgICAgICAgICAgICAgICAgJ2FuZCBOb25lKS4gV2hlbiBkb2luZyBzbywgImZsb2F0KCkiIGlzIHVzZWQgdG8gY29udmVydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2ludGVnZXIgdG9cbicKKyAgICAgICAgICAgICAgICAgICdhIGZsb2F0aW5nIHBvaW50IG51bWJlciBiZWZvcmUgZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgYXZhaWxhYmxlIHByZXNlbnRhdGlvbiB0eXBlcyBmb3IgZmxvYXRpbmcgcG9pbnQgYW5kICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAgJ2FyZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8IFR5cGUgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICdNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJys9PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdlXCciICAgICB8IEV4cG9uZW50IG5vdGF0aW9uLiBQcmludHMgdGhlIG51bWJlciBpbiAnCisgICAgICAgICAgICAgICAgICAnc2NpZW50aWZpYyAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICIgICB8ICAgICAgICAgICB8IG5vdGF0aW9uIHVzaW5nIHRoZSBsZXR0ZXIgJ2UnIHRvIGluZGljYXRlICIKKyAgICAgICAgICAgICAgICAgICd0aGUgZXhwb25lbnQuICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0VcJyIgICAgIHwgRXhwb25lbnQgbm90YXRpb24uIFNhbWUgYXMgIlwnZVwnIiAnCisgICAgICAgICAgICAgICAgICAnZXhjZXB0IGl0IHVzZXMgYW4gdXBwZXIgICB8XG4nCisgICAgICAgICAgICAgICAgICAiICAgfCAgICAgICAgICAgfCBjYXNlICdFJyBhcyB0aGUgc2VwYXJhdG9yICIKKyAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIuICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdmXCciICAgICB8IEZpeGVkIHBvaW50LiBEaXNwbGF5cyB0aGUgbnVtYmVyIGFzIGEgJworICAgICAgICAgICAgICAgICAgJ2ZpeGVkLXBvaW50IG51bWJlci4gIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IFRoZSBkZWZhdWx0IHByZWNpc2lvbiBpcyAnCisgICAgICAgICAgICAgICAgICAnIjYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0ZcJyIgICAgIHwgRml4ZWQgcG9pbnQuIFNhbWUgYXMgIlwnZlwnIiwgYnV0ICcKKyAgICAgICAgICAgICAgICAgICdjb252ZXJ0cyAibmFuIiB0byAiTkFOIiAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBhbmQgImluZiIgdG8gJworICAgICAgICAgICAgICAgICAgJyJJTkYiLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCdnXCciICAgICB8IEdlbmVyYWwgZm9ybWF0LiAgRm9yIGEgZ2l2ZW4gcHJlY2lzaW9uICcKKyAgICAgICAgICAgICAgICAgICcicCA+PSAxIiwgdGhpcyAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJvdW5kcyB0aGUgbnVtYmVyIHRvICJwIiBzaWduaWZpY2FudCAnCisgICAgICAgICAgICAgICAgICAnZGlnaXRzIGFuZCB0aGVuICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHMgdGhlIHJlc3VsdCBpbiBlaXRoZXIgZml4ZWQtcG9pbnQgJworICAgICAgICAgICAgICAgICAgJ2Zvcm1hdCBvciBpbiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNjaWVudGlmaWMgbm90YXRpb24sIGRlcGVuZGluZyBvbiBpdHMgJworICAgICAgICAgICAgICAgICAgJ21hZ25pdHVkZS4gIFRoZSAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHByZWNpc2UgcnVsZXMgYXJlIGFzIGZvbGxvd3M6IHN1cHBvc2UgdGhhdCAnCisgICAgICAgICAgICAgICAgICAndGhlIHJlc3VsdCAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgJworICAgICAgICAgICAgICAgICAgJ2FuZCBwcmVjaXNpb24gInAtMSIgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgd291bGQgaGF2ZSBleHBvbmVudCAiZXhwIi4gIFRoZW4gaWYgIi00IDw9ICcKKyAgICAgICAgICAgICAgICAgICdleHAgPCBwIiwgdGhlICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgIHwgICAgICAgICAgIHwgbnVtYmVyIGlzIGZvcm1hdHRlZCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICcKKyAgICAgICAgICAgICAgICAgICciXCdmXCciIGFuZCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwcmVjaXNpb24gInAtMS1leHAiLiAgT3RoZXJ3aXNlLCB0aGUgJworICAgICAgICAgICAgICAgICAgJ251bWJlciBpcyBmb3JtYXR0ZWQgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB3aXRoIHByZXNlbnRhdGlvbiB0eXBlICJcJ2VcJyIgYW5kICcKKyAgICAgICAgICAgICAgICAgICdwcmVjaXNpb24gInAtMSIuIEluIGJvdGggIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGNhc2VzIGluc2lnbmlmaWNhbnQgdHJhaWxpbmcgemVyb3MgYXJlICcKKyAgICAgICAgICAgICAgICAgICdyZW1vdmVkIGZyb20gdGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHNpZ25pZmljYW5kLCBhbmQgdGhlIGRlY2ltYWwgcG9pbnQgaXMgYWxzbyAnCisgICAgICAgICAgICAgICAgICAncmVtb3ZlZCBpZiAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZXJlIGFyZSBubyByZW1haW5pbmcgZGlnaXRzIGZvbGxvd2luZyAnCisgICAgICAgICAgICAgICAgICAnaXQuICBQb3NpdGl2ZSBhbmQgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IG5lZ2F0aXZlIGluZmluaXR5LCBwb3NpdGl2ZSBhbmQgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ3plcm8sIGFuZCBuYW5zLCAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFyZSBmb3JtYXR0ZWQgYXMgImluZiIsICItaW5mIiwgIjAiLCAiLTAiICcKKyAgICAgICAgICAgICAgICAgICdhbmQgIm5hbiIgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHJlc3BlY3RpdmVseSwgcmVnYXJkbGVzcyBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ3ByZWNpc2lvbi4gIEEgcHJlY2lzaW9uIG9mIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8ICIwIiBpcyB0cmVhdGVkIGFzIGVxdWl2YWxlbnQgdG8gYSAnCisgICAgICAgICAgICAgICAgICAncHJlY2lzaW9uIG9mICIxIi4gVGhlICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGRlZmF1bHQgcHJlY2lzaW9uIGlzICcKKyAgICAgICAgICAgICAgICAgICciNiIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ0dcJyIgICAgIHwgR2VuZXJhbCBmb3JtYXQuIFNhbWUgYXMgIlwnZ1wnIiBleGNlcHQgJworICAgICAgICAgICAgICAgICAgJ3N3aXRjaGVzIHRvICJcJ0VcJyIgaWYgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IHRoZSBudW1iZXIgZ2V0cyB0b28gbGFyZ2UuIFRoZSAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb25zIG9mIGluZmluaXR5IHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGFuZCBOYU4gYXJlIHVwcGVyY2FzZWQsICcKKyAgICAgICAgICAgICAgICAgICd0b28uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICJcJ25cJyIgICAgIHwgTnVtYmVyLiBUaGlzIGlzIHRoZSBzYW1lIGFzICJcJ2dcJyIsICcKKyAgICAgICAgICAgICAgICAgICdleGNlcHQgdGhhdCBpdCB1c2VzIHRoZSB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBjdXJyZW50IGxvY2FsZSBzZXR0aW5nIHRvIGluc2VydCB0aGUgJworICAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlIG51bWJlciAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBzZXBhcmF0b3IgJworICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAiXCclXCciICAgICB8IFBlcmNlbnRhZ2UuIE11bHRpcGxpZXMgdGhlIG51bWJlciBieSAxMDAgJworICAgICAgICAgICAgICAgICAgJ2FuZCBkaXNwbGF5cyBpbiAgIHxcbicKKyAgICAgICAgICAgICAgICAgICcgICB8ICAgICAgICAgICB8IGZpeGVkICgiXCdmXCciKSBmb3JtYXQsIGZvbGxvd2VkIGJ5IGEgJworICAgICAgICAgICAgICAgICAgJ3BlcmNlbnQgc2lnbi4gICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJyAgIHwgTm9uZSAgICAgIHwgU2ltaWxhciB0byAiXCdnXCciLCBleGNlcHQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnZml4ZWQtcG9pbnQgbm90YXRpb24sIHdoZW4gICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCB1c2VkLCBoYXMgYXQgbGVhc3Qgb25lIGRpZ2l0IHBhc3QgdGhlICcKKyAgICAgICAgICAgICAgICAgICdkZWNpbWFsIHBvaW50LiBUaGUgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBkZWZhdWx0IHByZWNpc2lvbiBpcyBhcyBoaWdoIGFzIG5lZWRlZCB0byAnCisgICAgICAgICAgICAgICAgICAncmVwcmVzZW50IHRoZSAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBwYXJ0aWN1bGFyIHZhbHVlLiBUaGUgb3ZlcmFsbCBlZmZlY3QgaXMgdG8gJworICAgICAgICAgICAgICAgICAgJ21hdGNoIHRoZSAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCBvdXRwdXQgb2YgInN0cigpIiBhcyBhbHRlcmVkIGJ5IHRoZSBvdGhlciAnCisgICAgICAgICAgICAgICAgICAnZm9ybWF0ICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAnICAgfCAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAnbW9kaWZpZXJzLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0Zvcm1hdCBleGFtcGxlc1xuJworICAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoaXMgc2VjdGlvbiBjb250YWlucyBleGFtcGxlcyBvZiB0aGUgInN0ci5mb3JtYXQoKSIgc3ludGF4ICcKKyAgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgICdjb21wYXJpc29uIHdpdGggdGhlIG9sZCAiJSItZm9ybWF0dGluZy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJbiBtb3N0IG9mIHRoZSBjYXNlcyB0aGUgc3ludGF4IGlzIHNpbWlsYXIgdG8gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAnIiUiLWZvcm1hdHRpbmcsXG4nCisgICAgICAgICAgICAgICAgICAnd2l0aCB0aGUgYWRkaXRpb24gb2YgdGhlICJ7fSIgYW5kIHdpdGggIjoiIHVzZWQgaW5zdGVhZCBvZiAnCisgICAgICAgICAgICAgICAgICAnIiUiLiBGb3JcbicKKyAgICAgICAgICAgICAgICAgICdleGFtcGxlLCAiXCclMDMuMmZcJyIgY2FuIGJlIHRyYW5zbGF0ZWQgdG8gIlwnezowMy4yZn1cJyIuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIG5ldyBmb3JtYXQgc3ludGF4IGFsc28gc3VwcG9ydHMgbmV3IGFuZCBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgJ29wdGlvbnMsIHNob3duXG4nCisgICAgICAgICAgICAgICAgICAnaW4gdGhlIGZvbGxvdyBleGFtcGxlcy5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdBY2Nlc3NpbmcgYXJndW1lbnRzIGJ5IHBvc2l0aW9uOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezB9LCB7MX0sIHsyfScuZm9ybWF0KCdhJywgJ2InLCAnYycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7fSwge30sIHt9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJykgICMgMy4xKyBvbmx5XG4iCisgICAgICAgICAgICAgICAgICAiICAgJ2EsIGIsIGMnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Mn0sIHsxfSwgezB9Jy5mb3JtYXQoJ2EnLCAnYicsICdjJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnYywgYiwgYSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3syfSwgezF9LCB7MH0nLmZvcm1hdCgqJ2FiYycpICAgICAgIyB1bnBhY2tpbmcgIgorICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IHNlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2MsIGIsIGEnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7MH17MX17MH0nLmZvcm1hdCgnYWJyYScsICdjYWQnKSAgICMgYXJndW1lbnRzJyAiCisgICAgICAgICAgICAgICAgICAnaW5kaWNlcyBjYW4gYmUgcmVwZWF0ZWRcbicKKyAgICAgICAgICAgICAgICAgICIgICAnYWJyYWNhZGFicmEnXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQWNjZXNzaW5nIGFyZ3VtZW50cyBieSBuYW1lOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KGxhdGl0dWRlPSczNy4yNE4nLCAiCisgICAgICAgICAgICAgICAgICAibG9uZ2l0dWRlPSctMTE1LjgxVycpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiBjb29yZCA9IHsnbGF0aXR1ZGUnOiAnMzcuMjROJywgJ2xvbmdpdHVkZSc6ICIKKyAgICAgICAgICAgICAgICAgICInLTExNS44MVcnfVxuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29vcmRpbmF0ZXM6IHtsYXRpdHVkZX0sICIKKyAgICAgICAgICAgICAgICAgICJ7bG9uZ2l0dWRlfScuZm9ybWF0KCoqY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0Nvb3JkaW5hdGVzOiAzNy4yNE4sIC0xMTUuODFXJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGF0dHJpYnV0ZXM6XG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSAzLTVqXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICgnVGhlIGNvbXBsZXggbnVtYmVyIHswfSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCAiCisgICAgICAgICAgICAgICAgICAicGFydCB7MC5yZWFsfSAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgLi4uICAnYW5kIHRoZSBpbWFnaW5hcnkgcGFydCB7MC5pbWFnfS4nKS5mb3JtYXQoYylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnVGhlIGNvbXBsZXggbnVtYmVyICgzLTVqKSBpcyBmb3JtZWQgZnJvbSB0aGUgcmVhbCBwYXJ0ICIKKyAgICAgICAgICAgICAgICAgICIzLjAgYW5kIHRoZSBpbWFnaW5hcnkgcGFydCAtNS4wLidcbiIKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gY2xhc3MgUG9pbnQ6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19pbml0X18oc2VsZiwgeCwgeSk6XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgc2VsZi54LCBzZWxmLnkgPSB4LCB5XG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgX19zdHJfXyhzZWxmKTpcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ1BvaW50KHtzZWxmLnh9LCAiCisgICAgICAgICAgICAgICAgICAie3NlbGYueX0pJy5mb3JtYXQoc2VsZj1zZWxmKVxuIgorICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBzdHIoUG9pbnQoNCwgMikpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ1BvaW50KDQsIDIpJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkFjY2Vzc2luZyBhcmd1bWVudHMnIGl0ZW1zOlxuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiBjb29yZCA9ICgzLCA1KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnWDogezBbMF19OyAgWTogezBbMV19Jy5mb3JtYXQoY29vcmQpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ1g6IDM7ICBZOiA1J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJXMiIGFuZCAiJXIiOlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAicmVwcigpIHNob3dzIHF1b3RlczogeyFyfTsgc3RyKCkgZG9lc25cJ3Q6ICcKKyAgICAgICAgICAgICAgICAgICd7IXN9Ii5mb3JtYXQoXCd0ZXN0MVwnLCBcJ3Rlc3QyXCcpXG4nCisgICAgICAgICAgICAgICAgICAnICAgInJlcHIoKSBzaG93cyBxdW90ZXM6IFwndGVzdDFcJzsgc3RyKCkgZG9lc25cJ3Q6IHRlc3QyIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ0FsaWduaW5nIHRoZSB0ZXh0IGFuZCBzcGVjaWZ5aW5nIGEgd2lkdGg6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OjwzMH0nLmZvcm1hdCgnbGVmdCBhbGlnbmVkJylcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnbGVmdCBhbGlnbmVkICAgICAgICAgICAgICAgICAgJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezo+MzB9Jy5mb3JtYXQoJ3JpZ2h0IGFsaWduZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcgICAgICAgICAgICAgICAgIHJpZ2h0IGFsaWduZWQnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Ol4zMH0nLmZvcm1hdCgnY2VudGVyZWQnKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcgICAgICAgICAgIGNlbnRlcmVkICAgICAgICAgICAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OipeMzB9Jy5mb3JtYXQoJ2NlbnRlcmVkJykgICMgdXNlICcqJyBhcyBhIGZpbGwgIgorICAgICAgICAgICAgICAgICAgJ2NoYXJcbicKKyAgICAgICAgICAgICAgICAgICIgICAnKioqKioqKioqKipjZW50ZXJlZCoqKioqKioqKioqJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1JlcGxhY2luZyAiJStmIiwgIiUtZiIsIGFuZCAiJSBmIiBhbmQgc3BlY2lmeWluZyBhIHNpZ246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7OitmfTsgezorZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBpdCAiCisgICAgICAgICAgICAgICAgICAnYWx3YXlzXG4nCisgICAgICAgICAgICAgICAgICAiICAgJyszLjE0MDAwMDsgLTMuMTQwMDAwJ1xuIgorICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezogZn07IHs6IGZ9Jy5mb3JtYXQoMy4xNCwgLTMuMTQpICAjIHNob3cgYSBzcGFjZSAiCisgICAgICAgICAgICAgICAgICAnZm9yIHBvc2l0aXZlIG51bWJlcnNcbicKKyAgICAgICAgICAgICAgICAgICIgICAnIDMuMTQwMDAwOyAtMy4xNDAwMDAnXG4iCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oi1mfTsgezotZn0nLmZvcm1hdCgzLjE0LCAtMy4xNCkgICMgc2hvdyBvbmx5IHRoZSAiCisgICAgICAgICAgICAgICAgICAibWludXMgLS0gc2FtZSBhcyAnezpmfTsgezpmfSdcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMy4xNDAwMDA7IC0zLjE0MDAwMCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdSZXBsYWNpbmcgIiV4IiBhbmQgIiVvIiBhbmQgY29udmVydGluZyB0aGUgdmFsdWUgdG8gJworICAgICAgICAgICAgICAgICAgJ2RpZmZlcmVudCBiYXNlczpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBmb3JtYXQgYWxzbyBzdXBwb3J0cyBiaW5hcnkgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiAiaW50OiB7MDpkfTsgIGhleDogezA6eH07ICBvY3Q6IHswOm99OyAgYmluOiAnCisgICAgICAgICAgICAgICAgICAnezA6Yn0iLmZvcm1hdCg0MilcbicKKyAgICAgICAgICAgICAgICAgICIgICAnaW50OiA0MjsgIGhleDogMmE7ICBvY3Q6IDUyOyAgYmluOiAxMDEwMTAnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+ICMgd2l0aCAweCwgMG8sIG9yIDBiIGFzIHByZWZpeDpcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gImludDogezA6ZH07ICBoZXg6IHswOiN4fTsgIG9jdDogezA6I299OyAgYmluOiAnCisgICAgICAgICAgICAgICAgICAnezA6I2J9Ii5mb3JtYXQoNDIpXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2ludDogNDI7ICBoZXg6IDB4MmE7ICBvY3Q6IDBvNTI7ICBiaW46IDBiMTAxMDEwJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1VzaW5nIHRoZSBjb21tYSBhcyBhIHRob3VzYW5kcyBzZXBhcmF0b3I6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+ICd7Oix9Jy5mb3JtYXQoMTIzNDU2Nzg5MClcbiIKKyAgICAgICAgICAgICAgICAgICIgICAnMSwyMzQsNTY3LDg5MCdcbiIKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdFeHByZXNzaW5nIGEgcGVyY2VudGFnZTpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gcG9pbnRzID0gMTlcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gdG90YWwgPSAyMlxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnQ29ycmVjdCBhbnN3ZXJzOiB7Oi4yJX0nLmZvcm1hdChwb2ludHMvdG90YWwpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0NvcnJlY3QgYW5zd2VyczogODYuMzYlJ1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1VzaW5nIHR5cGUtc3BlY2lmaWMgZm9ybWF0dGluZzpcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gaW1wb3J0IGRhdGV0aW1lXG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IGQgPSBkYXRldGltZS5kYXRldGltZSgyMDEwLCA3LCA0LCAxMiwgMTUsIDU4KVxuJworICAgICAgICAgICAgICAgICAgIiAgID4+PiAnezolWS0lbS0lZCAlSDolTTolU30nLmZvcm1hdChkKVxuIgorICAgICAgICAgICAgICAgICAgIiAgICcyMDEwLTA3LTA0IDEyOjE1OjU4J1xuIgorICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ05lc3RpbmcgYXJndW1lbnRzIGFuZCBtb3JlIGNvbXBsZXggZXhhbXBsZXM6XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAiICAgPj4+IGZvciBhbGlnbiwgdGV4dCBpbiB6aXAoJzxePicsIFsnbGVmdCcsICdjZW50ZXInLCAiCisgICAgICAgICAgICAgICAgICAiJ3JpZ2h0J10pOlxuIgorICAgICAgICAgICAgICAgICAgIiAgIC4uLiAgICAgJ3swOntmaWxsfXthbGlnbn0xNn0nLmZvcm1hdCh0ZXh0LCBmaWxsPWFsaWduLCAiCisgICAgICAgICAgICAgICAgICAnYWxpZ249YWxpZ24pXG4nCisgICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICAiICAgJ2xlZnQ8PDw8PDw8PDw8PDwnXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ15eXl5eY2VudGVyXl5eXl4nXG4iCisgICAgICAgICAgICAgICAgICAiICAgJz4+Pj4+Pj4+Pj4+cmlnaHQnXG4iCisgICAgICAgICAgICAgICAgICAnICAgPj4+XG4nCisgICAgICAgICAgICAgICAgICAnICAgPj4+IG9jdGV0cyA9IFsxOTIsIDE2OCwgMCwgMV1cbicKKyAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3s6MDJYfXs6MDJYfXs6MDJYfXs6MDJYfScuZm9ybWF0KCpvY3RldHMpXG4iCisgICAgICAgICAgICAgICAgICAiICAgJ0MwQTgwMDAxJ1xuIgorICAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQoXywgMTYpXG4nCisgICAgICAgICAgICAgICAgICAnICAgMzIzMjIzNTUyMVxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PlxuJworICAgICAgICAgICAgICAgICAgJyAgID4+PiB3aWR0aCA9IDVcbicKKyAgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIG51bSBpbiByYW5nZSg1LDEyKTogI2RvY3Rlc3Q6ICcKKyAgICAgICAgICAgICAgICAgICcrTk9STUFMSVpFX1dISVRFU1BBQ0VcbicKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgIGZvciBiYXNlIGluICdkWG9iJzpcbiIKKyAgICAgICAgICAgICAgICAgICIgICAuLi4gICAgICAgICBwcmludCgnezA6e3dpZHRofXtiYXNlfX0nLmZvcm1hdChudW0sICIKKyAgICAgICAgICAgICAgICAgICJiYXNlPWJhc2UsIHdpZHRoPXdpZHRoKSwgZW5kPScgJylcbiIKKyAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHByaW50KClcbicKKyAgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgNSAgICAgNSAgICAgNSAgIDEwMVxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA2ICAgICA2ICAgICA2ICAgMTEwXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgIDcgICAgIDcgICAgIDcgICAxMTFcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAgOCAgICAgOCAgICAxMCAgMTAwMFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgICA5ICAgICA5ICAgIDExICAxMDAxXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAgMTAgICAgIEEgICAgMTIgIDEwMTBcbicKKyAgICAgICAgICAgICAgICAgICcgICAgICAxMSAgICAgQiAgICAxMyAgMTAxMVxuJywKKyAnZnVuY3Rpb24nOiAnXG4nCisgICAgICAgICAgICAgJ0Z1bmN0aW9uIGRlZmluaXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gZGVmaW5lcyBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbiBvYmplY3QgJworICAgICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNkZWYgICAgICAgICAgICAgICAgIDo6PSBbZGVjb3JhdG9yc10gImRlZiIgZnVuY25hbWUgIigiICcKKyAgICAgICAgICAgICAnW3BhcmFtZXRlcl9saXN0XSAiKSIgWyItPiIgZXhwcmVzc2lvbl0gIjoiIHN1aXRlXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvcnMgICAgICAgICAgICAgIDo6PSBkZWNvcmF0b3IrXG4nCisgICAgICAgICAgICAgJyAgIGRlY29yYXRvciAgICAgICAgICAgICAgIDo6PSAiQCIgZG90dGVkX25hbWUgWyIoIiAnCisgICAgICAgICAgICAgJ1thcmd1bWVudF9saXN0IFsiLCJdXSAiKSJdIE5FV0xJTkVcbicKKyAgICAgICAgICAgICAnICAgZG90dGVkX25hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXIgKCIuIiBpZGVudGlmaWVyKSpcbicKKyAgICAgICAgICAgICAnICAgcGFyYW1ldGVyX2xpc3QgICAgICAgICAgOjo9IGRlZnBhcmFtZXRlciAoIiwiIGRlZnBhcmFtZXRlcikqICcKKyAgICAgICAgICAgICAnWyIsIiBbcGFyYW1ldGVyX2xpc3Rfc3RhcmFyZ3NdXVxuJworICAgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgfCBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJnc1xuJworICAgICAgICAgICAgICcgICBwYXJhbWV0ZXJfbGlzdF9zdGFyYXJncyA6Oj0gIioiIFtwYXJhbWV0ZXJdICgiLCIgJworICAgICAgICAgICAgICdkZWZwYXJhbWV0ZXIpKiBbIiwiIFsiKioiIHBhcmFtZXRlciBbIiwiXV1dXG4nCisgICAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICIqKiIgcGFyYW1ldGVyIFsiLCJdXG4nCisgICAgICAgICAgICAgJyAgIHBhcmFtZXRlciAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyIFsiOiIgZXhwcmVzc2lvbl1cbicKKyAgICAgICAgICAgICAnICAgZGVmcGFyYW1ldGVyICAgICAgICAgICAgOjo9IHBhcmFtZXRlciBbIj0iIGV4cHJlc3Npb25dXG4nCisgICAgICAgICAgICAgJyAgIGZ1bmNuYW1lICAgICAgICAgICAgICAgIDo6PSBpZGVudGlmaWVyXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBIGZ1bmN0aW9uIGRlZmluaXRpb24gaXMgYW4gZXhlY3V0YWJsZSBzdGF0ZW1lbnQuICBJdHMgZXhlY3V0aW9uICcKKyAgICAgICAgICAgICAnYmluZHNcbicKKyAgICAgICAgICAgICAndGhlIGZ1bmN0aW9uIG5hbWUgaW4gdGhlIGN1cnJlbnQgbG9jYWwgbmFtZXNwYWNlIHRvIGEgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnKGEgd3JhcHBlciBhcm91bmQgdGhlIGV4ZWN1dGFibGUgY29kZSBmb3IgdGhlIGZ1bmN0aW9uKS4gIFRoaXNcbicKKyAgICAgICAgICAgICAnZnVuY3Rpb24gb2JqZWN0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBjdXJyZW50IGdsb2JhbCAnCisgICAgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICAgICdhcyB0aGUgZ2xvYmFsIG5hbWVzcGFjZSB0byBiZSB1c2VkIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBmdW5jdGlvbiBkZWZpbml0aW9uIGRvZXMgbm90IGV4ZWN1dGUgdGhlIGZ1bmN0aW9uIGJvZHk7IHRoaXMgJworICAgICAgICAgICAgICdnZXRzXG4nCisgICAgICAgICAgICAgJ2V4ZWN1dGVkIG9ubHkgd2hlbiB0aGUgZnVuY3Rpb24gaXMgY2FsbGVkLiBbM11cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgZnVuY3Rpb24gZGVmaW5pdGlvbiBtYXkgYmUgd3JhcHBlZCBieSBvbmUgb3IgbW9yZSAqZGVjb3JhdG9yKlxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucy4gRGVjb3JhdG9yIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgd2hlbiB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBpc1xuJworICAgICAgICAgICAgICdkZWZpbmVkLCBpbiB0aGUgc2NvcGUgdGhhdCBjb250YWlucyB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbi4gICcKKyAgICAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgICAgJ3Jlc3VsdCBtdXN0IGJlIGEgY2FsbGFibGUsIHdoaWNoIGlzIGludm9rZWQgd2l0aCB0aGUgZnVuY3Rpb24gJworICAgICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAgICAnYXMgdGhlIG9ubHkgYXJndW1lbnQuIFRoZSByZXR1cm5lZCB2YWx1ZSBpcyBib3VuZCB0byB0aGUgJworICAgICAgICAgICAgICdmdW5jdGlvbiBuYW1lXG4nCisgICAgICAgICAgICAgJ2luc3RlYWQgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIE11bHRpcGxlIGRlY29yYXRvcnMgYXJlIGFwcGxpZWQgJworICAgICAgICAgICAgICdpblxuJworICAgICAgICAgICAgICduZXN0ZWQgZmFzaGlvbi4gRm9yIGV4YW1wbGUsIHRoZSBmb2xsb3dpbmcgY29kZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgQGYxKGFyZylcbicKKyAgICAgICAgICAgICAnICAgQGYyXG4nCisgICAgICAgICAgICAgJyAgIGRlZiBmdW5jKCk6IHBhc3NcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2lzIHJvdWdobHkgZXF1aXZhbGVudCB0b1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgZGVmIGZ1bmMoKTogcGFzc1xuJworICAgICAgICAgICAgICcgICBmdW5jID0gZjEoYXJnKShmMihmdW5jKSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2V4Y2VwdCB0aGF0IHRoZSBvcmlnaW5hbCBmdW5jdGlvbiBpcyBub3QgdGVtcG9yYXJpbHkgYm91bmQgdG8gJworICAgICAgICAgICAgICd0aGUgbmFtZVxuJworICAgICAgICAgICAgICciZnVuYyIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdXaGVuIG9uZSBvciBtb3JlICpwYXJhbWV0ZXJzKiBoYXZlIHRoZSBmb3JtICpwYXJhbWV0ZXIqICI9IlxuJworICAgICAgICAgICAgICcqZXhwcmVzc2lvbiosIHRoZSBmdW5jdGlvbiBpcyBzYWlkIHRvIGhhdmUgImRlZmF1bHQgcGFyYW1ldGVyICcKKyAgICAgICAgICAgICAndmFsdWVzLiJcbicKKyAgICAgICAgICAgICAnRm9yIGEgcGFyYW1ldGVyIHdpdGggYSBkZWZhdWx0IHZhbHVlLCB0aGUgY29ycmVzcG9uZGluZyAnCisgICAgICAgICAgICAgJyphcmd1bWVudCogbWF5XG4nCisgICAgICAgICAgICAgImJlIG9taXR0ZWQgZnJvbSBhIGNhbGwsIGluIHdoaWNoIGNhc2UgdGhlIHBhcmFtZXRlcidzIGRlZmF1bHQgIgorICAgICAgICAgICAgICd2YWx1ZSBpc1xuJworICAgICAgICAgICAgICdzdWJzdGl0dXRlZC4gIElmIGEgcGFyYW1ldGVyIGhhcyBhIGRlZmF1bHQgdmFsdWUsIGFsbCBmb2xsb3dpbmdcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycyB1cCB1bnRpbCB0aGUgIiIqIiIgbXVzdCBhbHNvIGhhdmUgYSBkZWZhdWx0IHZhbHVlIC0tLSAnCisgICAgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAgICAnaXMgYSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gdGhhdCBpcyBub3QgZXhwcmVzc2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJ2dyYW1tYXIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcqKkRlZmF1bHQgcGFyYW1ldGVyIHZhbHVlcyBhcmUgZXZhbHVhdGVkIGZyb20gbGVmdCB0byByaWdodCB3aGVuICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2Z1bmN0aW9uIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQuKiogVGhpcyBtZWFucyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgJ2V4cHJlc3Npb24gaXNcbicKKyAgICAgICAgICAgICAnZXZhbHVhdGVkIG9uY2UsIHdoZW4gdGhlIGZ1bmN0aW9uIGlzIGRlZmluZWQsIGFuZCB0aGF0IHRoZSBzYW1lICcKKyAgICAgICAgICAgICAnInByZS1cbicKKyAgICAgICAgICAgICAnY29tcHV0ZWQiIHZhbHVlIGlzIHVzZWQgZm9yIGVhY2ggY2FsbC4gIFRoaXMgaXMgZXNwZWNpYWxseSAnCisgICAgICAgICAgICAgJ2ltcG9ydGFudFxuJworICAgICAgICAgICAgICd0byB1bmRlcnN0YW5kIHdoZW4gYSBkZWZhdWx0IHBhcmFtZXRlciBpcyBhIG11dGFibGUgb2JqZWN0LCBzdWNoICcKKyAgICAgICAgICAgICAnYXMgYVxuJworICAgICAgICAgICAgICdsaXN0IG9yIGEgZGljdGlvbmFyeTogaWYgdGhlIGZ1bmN0aW9uIG1vZGlmaWVzIHRoZSBvYmplY3QgKGUuZy4gJworICAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgICdhcHBlbmRpbmcgYW4gaXRlbSB0byBhIGxpc3QpLCB0aGUgZGVmYXVsdCB2YWx1ZSBpcyBpbiBlZmZlY3QgJworICAgICAgICAgICAgICdtb2RpZmllZC5cbicKKyAgICAgICAgICAgICAnVGhpcyBpcyBnZW5lcmFsbHkgbm90IHdoYXQgd2FzIGludGVuZGVkLiAgQSB3YXkgYXJvdW5kIHRoaXMgaXMgJworICAgICAgICAgICAgICd0byB1c2VcbicKKyAgICAgICAgICAgICAnIk5vbmUiIGFzIHRoZSBkZWZhdWx0LCBhbmQgZXhwbGljaXRseSB0ZXN0IGZvciBpdCBpbiB0aGUgYm9keSBvZiAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdmdW5jdGlvbiwgZS5nLjpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIGRlZiB3aGF0c19vbl90aGVfdGVsbHkocGVuZ3Vpbj1Ob25lKTpcbicKKyAgICAgICAgICAgICAnICAgICAgIGlmIHBlbmd1aW4gaXMgTm9uZTpcbicKKyAgICAgICAgICAgICAnICAgICAgICAgICBwZW5ndWluID0gW11cbicKKyAgICAgICAgICAgICAnICAgICAgIHBlbmd1aW4uYXBwZW5kKCJwcm9wZXJ0eSBvZiB0aGUgem9vIilcbicKKyAgICAgICAgICAgICAnICAgICAgIHJldHVybiBwZW5ndWluXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGdW5jdGlvbiBjYWxsIHNlbWFudGljcyBhcmUgZGVzY3JpYmVkIGluIG1vcmUgZGV0YWlsIGluIHNlY3Rpb24gJworICAgICAgICAgICAgICdDYWxscy5cbicKKyAgICAgICAgICAgICAnQSBmdW5jdGlvbiBjYWxsIGFsd2F5cyBhc3NpZ25zIHZhbHVlcyB0byBhbGwgcGFyYW1ldGVycyAnCisgICAgICAgICAgICAgJ21lbnRpb25lZCBpblxuJworICAgICAgICAgICAgICd0aGUgcGFyYW1ldGVyIGxpc3QsIGVpdGhlciBmcm9tIHBvc2l0aW9uIGFyZ3VtZW50cywgZnJvbSAnCisgICAgICAgICAgICAgJ2tleXdvcmRcbicKKyAgICAgICAgICAgICAnYXJndW1lbnRzLCBvciBmcm9tIGRlZmF1bHQgdmFsdWVzLiAgSWYgdGhlIGZvcm0gIiIqaWRlbnRpZmllciIiICcKKyAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAncHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSB0dXBsZSByZWNlaXZpbmcgYW55IGV4Y2VzcyAnCisgICAgICAgICAgICAgJ3Bvc2l0aW9uYWxcbicKKyAgICAgICAgICAgICAncGFyYW1ldGVycywgZGVmYXVsdGluZyB0byB0aGUgZW1wdHkgdHVwbGUuIElmIHRoZSBmb3JtXG4nCisgICAgICAgICAgICAgJyIiKippZGVudGlmaWVyIiIgaXMgcHJlc2VudCwgaXQgaXMgaW5pdGlhbGl6ZWQgdG8gYSBuZXcgb3JkZXJlZFxuJworICAgICAgICAgICAgICdtYXBwaW5nIHJlY2VpdmluZyBhbnkgZXhjZXNzIGtleXdvcmQgYXJndW1lbnRzLCBkZWZhdWx0aW5nIHRvIGEgJworICAgICAgICAgICAgICduZXdcbicKKyAgICAgICAgICAgICAnZW1wdHkgbWFwcGluZyBvZiB0aGUgc2FtZSB0eXBlLiAgUGFyYW1ldGVycyBhZnRlciAiIioiIiBvclxuJworICAgICAgICAgICAgICciIippZGVudGlmaWVyIiIgYXJlIGtleXdvcmQtb25seSBwYXJhbWV0ZXJzIGFuZCBtYXkgb25seSBiZSAnCisgICAgICAgICAgICAgJ3Bhc3NlZFxuJworICAgICAgICAgICAgICd1c2VkIGtleXdvcmQgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUGFyYW1ldGVycyBtYXkgaGF2ZSBhbm5vdGF0aW9ucyBvZiB0aGUgZm9ybSAiIjogZXhwcmVzc2lvbiIiICcKKyAgICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICAgJ3RoZSBwYXJhbWV0ZXIgbmFtZS4gIEFueSBwYXJhbWV0ZXIgbWF5IGhhdmUgYW4gYW5ub3RhdGlvbiBldmVuICcKKyAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAnb2YgdGhlIGZvcm0gIippZGVudGlmaWVyIiBvciAiKippZGVudGlmaWVyIi4gIEZ1bmN0aW9ucyBtYXkgJworICAgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICAgJyJyZXR1cm4iIGFubm90YXRpb24gb2YgdGhlIGZvcm0gIiItPiBleHByZXNzaW9uIiIgYWZ0ZXIgdGhlICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyXG4nCisgICAgICAgICAgICAgJ2xpc3QuICBUaGVzZSBhbm5vdGF0aW9ucyBjYW4gYmUgYW55IHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIGFuZCAnCisgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICdldmFsdWF0ZWQgd2hlbiB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBleGVjdXRlZC4gIEFubm90YXRpb25zICcKKyAgICAgICAgICAgICAnbWF5XG4nCisgICAgICAgICAgICAgJ2JlIGV2YWx1YXRlZCBpbiBhIGRpZmZlcmVudCBvcmRlciB0aGFuIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgJworICAgICAgICAgICAgICdjb2RlLlxuJworICAgICAgICAgICAgICdUaGUgcHJlc2VuY2Ugb2YgYW5ub3RhdGlvbnMgZG9lcyBub3QgY2hhbmdlIHRoZSBzZW1hbnRpY3Mgb2YgYVxuJworICAgICAgICAgICAgICdmdW5jdGlvbi4gIFRoZSBhbm5vdGF0aW9uIHZhbHVlcyBhcmUgYXZhaWxhYmxlIGFzIHZhbHVlcyBvZiBhXG4nCisgICAgICAgICAgICAgImRpY3Rpb25hcnkga2V5ZWQgYnkgdGhlIHBhcmFtZXRlcnMnIG5hbWVzIGluIHRoZSAiCisgICAgICAgICAgICAgJyJfX2Fubm90YXRpb25zX18iXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvZiB0aGUgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBjcmVhdGUgYW5vbnltb3VzIGZ1bmN0aW9ucyAoZnVuY3Rpb25zIG5vdCAnCisgICAgICAgICAgICAgJ2JvdW5kXG4nCisgICAgICAgICAgICAgJ3RvIGEgbmFtZSksIGZvciBpbW1lZGlhdGUgdXNlIGluIGV4cHJlc3Npb25zLiAgVGhpcyB1c2VzIGxhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9ucywgZGVzY3JpYmVkIGluIHNlY3Rpb24gTGFtYmRhcy4gIE5vdGUgdGhhdCB0aGUgJworICAgICAgICAgICAgICdsYW1iZGFcbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyBtZXJlbHkgYSBzaG9ydGhhbmQgZm9yIGEgc2ltcGxpZmllZCBmdW5jdGlvbiAnCisgICAgICAgICAgICAgJ2RlZmluaXRpb247XG4nCisgICAgICAgICAgICAgJ2EgZnVuY3Rpb24gZGVmaW5lZCBpbiBhICIiZGVmIiIgc3RhdGVtZW50IGNhbiBiZSBwYXNzZWQgYXJvdW5kICcKKyAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAnYXNzaWduZWQgdG8gYW5vdGhlciBuYW1lIGp1c3QgbGlrZSBhIGZ1bmN0aW9uIGRlZmluZWQgYnkgYSAnCisgICAgICAgICAgICAgJ2xhbWJkYVxuJworICAgICAgICAgICAgICdleHByZXNzaW9uLiAgVGhlICIiZGVmIiIgZm9ybSBpcyBhY3R1YWxseSBtb3JlIHBvd2VyZnVsIHNpbmNlICcKKyAgICAgICAgICAgICAnaXRcbicKKyAgICAgICAgICAgICAnYWxsb3dzIHRoZSBleGVjdXRpb24gb2YgbXVsdGlwbGUgc3RhdGVtZW50cyBhbmQgYW5ub3RhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICIqKlByb2dyYW1tZXIncyBub3RlOioqIEZ1bmN0aW9ucyBhcmUgZmlyc3QtY2xhc3Mgb2JqZWN0cy4gIEEgIgorICAgICAgICAgICAgICciImRlZiIiXG4nCisgICAgICAgICAgICAgJ3N0YXRlbWVudCBleGVjdXRlZCBpbnNpZGUgYSBmdW5jdGlvbiBkZWZpbml0aW9uIGRlZmluZXMgYSBsb2NhbFxuJworICAgICAgICAgICAgICdmdW5jdGlvbiB0aGF0IGNhbiBiZSByZXR1cm5lZCBvciBwYXNzZWQgYXJvdW5kLiAgRnJlZSB2YXJpYWJsZXMgJworICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgJ2luIHRoZSBuZXN0ZWQgZnVuY3Rpb24gY2FuIGFjY2VzcyB0aGUgbG9jYWwgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICAgJ2Z1bmN0aW9uXG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmcgdGhlIGRlZi4gIFNlZSBzZWN0aW9uIE5hbWluZyBhbmQgYmluZGluZyBmb3IgJworICAgICAgICAgICAgICdkZXRhaWxzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDMxMDcqKiAtIEZ1bmN0aW9uIEFubm90YXRpb25zXG4nCisgICAgICAgICAgICAgJyAgICAgVGhlIG9yaWdpbmFsIHNwZWNpZmljYXRpb24gZm9yIGZ1bmN0aW9uIGFubm90YXRpb25zLlxuJywKKyAnZ2xvYmFsJzogJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBnbG9iYWxfc3RtdCA6Oj0gImdsb2JhbCIgaWRlbnRpZmllciAoIiwiIGlkZW50aWZpZXIpKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgImdsb2JhbCIgc3RhdGVtZW50IGlzIGEgZGVjbGFyYXRpb24gd2hpY2ggaG9sZHMgZm9yIHRoZSAnCisgICAgICAgICAgICdlbnRpcmVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgY29kZSBibG9jay4gIEl0IG1lYW5zIHRoYXQgdGhlIGxpc3RlZCBpZGVudGlmaWVycyBhcmUgdG8gJworICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgJ2ludGVycHJldGVkIGFzIGdsb2JhbHMuICBJdCB3b3VsZCBiZSBpbXBvc3NpYmxlIHRvIGFzc2lnbiB0byBhICcKKyAgICAgICAgICAgJ2dsb2JhbFxuJworICAgICAgICAgICAndmFyaWFibGUgd2l0aG91dCAiZ2xvYmFsIiwgYWx0aG91Z2ggZnJlZSB2YXJpYWJsZXMgbWF5IHJlZmVyIHRvXG4nCisgICAgICAgICAgICdnbG9iYWxzIHdpdGhvdXQgYmVpbmcgZGVjbGFyZWQgZ2xvYmFsLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgdXNlZCBpbiB0aGUgc2FtZSAnCisgICAgICAgICAgICdjb2RlXG4nCisgICAgICAgICAgICdibG9jayB0ZXh0dWFsbHkgcHJlY2VkaW5nIHRoYXQgImdsb2JhbCIgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOYW1lcyBsaXN0ZWQgaW4gYSAiZ2xvYmFsIiBzdGF0ZW1lbnQgbXVzdCBub3QgYmUgZGVmaW5lZCBhcyAnCisgICAgICAgICAgICdmb3JtYWxcbicKKyAgICAgICAgICAgJ3BhcmFtZXRlcnMgb3IgaW4gYSAiZm9yIiBsb29wIGNvbnRyb2wgdGFyZ2V0LCAiY2xhc3MiIGRlZmluaXRpb24sXG4nCisgICAgICAgICAgICdmdW5jdGlvbiBkZWZpbml0aW9uLCAiaW1wb3J0IiBzdGF0ZW1lbnQsIG9yIHZhcmlhYmxlIGFubm90YXRpb24uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyAnCisgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgJ2VuZm9yY2Ugc29tZSBvZiB0aGVzZSByZXN0cmljdGlvbiwgYnV0IHByb2dyYW1zIHNob3VsZCBub3QgYWJ1c2UgJworICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAnZnJlZWRvbSwgYXMgZnV0dXJlIGltcGxlbWVudGF0aW9ucyBtYXkgZW5mb3JjZSB0aGVtIG9yIHNpbGVudGx5ICcKKyAgICAgICAgICAgJ2NoYW5nZVxuJworICAgICAgICAgICAndGhlIG1lYW5pbmcgb2YgdGhlIHByb2dyYW0uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyoqUHJvZ3JhbW1lclwncyBub3RlOioqIHRoZSAiZ2xvYmFsIiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgJworICAgICAgICAgICAncGFyc2VyLiAgSXRcbicKKyAgICAgICAgICAgJ2FwcGxpZXMgb25seSB0byBjb2RlIHBhcnNlZCBhdCB0aGUgc2FtZSB0aW1lIGFzIHRoZSAiZ2xvYmFsIlxuJworICAgICAgICAgICAnc3RhdGVtZW50LiBJbiBwYXJ0aWN1bGFyLCBhICJnbG9iYWwiIHN0YXRlbWVudCBjb250YWluZWQgaW4gYSAnCisgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgJ29yIGNvZGUgb2JqZWN0IHN1cHBsaWVkIHRvIHRoZSBidWlsdC1pbiAiZXhlYygpIiBmdW5jdGlvbiBkb2VzICcKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnYWZmZWN0IHRoZSBjb2RlIGJsb2NrICpjb250YWluaW5nKiB0aGUgZnVuY3Rpb24gY2FsbCwgYW5kIGNvZGVcbicKKyAgICAgICAgICAgJ2NvbnRhaW5lZCBpbiBzdWNoIGEgc3RyaW5nIGlzIHVuYWZmZWN0ZWQgYnkgImdsb2JhbCIgc3RhdGVtZW50cyBpbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2NvZGUgY29udGFpbmluZyB0aGUgZnVuY3Rpb24gY2FsbC4gIFRoZSBzYW1lIGFwcGxpZXMgdG8gdGhlICcKKyAgICAgICAgICAgJyJldmFsKCkiXG4nCisgICAgICAgICAgICdhbmQgImNvbXBpbGUoKSIgZnVuY3Rpb25zLlxuJywKKyAnaWQtY2xhc3Nlcyc6ICdcbicKKyAgICAgICAgICAgICAgICdSZXNlcnZlZCBjbGFzc2VzIG9mIGlkZW50aWZpZXJzXG4nCisgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJ0NlcnRhaW4gY2xhc3NlcyBvZiBpZGVudGlmaWVycyAoYmVzaWRlcyBrZXl3b3JkcykgaGF2ZSAnCisgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgJ2xlYWRpbmcgYW5kXG4nCisgICAgICAgICAgICAgICAndHJhaWxpbmcgdW5kZXJzY29yZSBjaGFyYWN0ZXJzOlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfKiJcbicKKyAgICAgICAgICAgICAgICcgICBOb3QgaW1wb3J0ZWQgYnkgImZyb20gbW9kdWxlIGltcG9ydCAqIi4gIFRoZSBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgJyAgIGlzIHVzZWQgaW4gdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIHRvIHN0b3JlIHRoZSByZXN1bHQgJworICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gICcKKyAgICAgICAgICAgICAgICdXaGVuIG5vdFxuJworICAgICAgICAgICAgICAgJyAgIGluIGludGVyYWN0aXZlIG1vZGUsICJfIiBoYXMgbm8gc3BlY2lhbCBtZWFuaW5nIGFuZCBpcyBub3QgJworICAgICAgICAgICAgICAgJ2RlZmluZWQuXG4nCisgICAgICAgICAgICAgICAnICAgU2VlIHNlY3Rpb24gVGhlIGltcG9ydCBzdGF0ZW1lbnQuXG4nCisgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgJyAgICAgaW50ZXJuYXRpb25hbGl6YXRpb247IHJlZmVyIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICcgICAgICJnZXR0ZXh0IiBtb2R1bGUgZm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyAnCisgICAgICAgICAgICAgICAnY29udmVudGlvbi5cbicKKyAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICciX18qX18iXG4nCisgICAgICAgICAgICAgICAnICAgU3lzdGVtLWRlZmluZWQgbmFtZXMuIFRoZXNlIG5hbWVzIGFyZSBkZWZpbmVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICcgICBhbmQgaXRzIGltcGxlbWVudGF0aW9uIChpbmNsdWRpbmcgdGhlIHN0YW5kYXJkIGxpYnJhcnkpLiAgJworICAgICAgICAgICAgICAgJ0N1cnJlbnRcbicKKyAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgJ3NlY3Rpb24gYW5kXG4nCisgICAgICAgICAgICAgICAnICAgZWxzZXdoZXJlLiAgTW9yZSB3aWxsIGxpa2VseSBiZSBkZWZpbmVkIGluIGZ1dHVyZSB2ZXJzaW9ucyAnCisgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICcgICBQeXRob24uICAqQW55KiB1c2Ugb2YgIl9fKl9fIiBuYW1lcywgaW4gYW55IGNvbnRleHQsIHRoYXQgJworICAgICAgICAgICAgICAgJ2RvZXMgbm90XG4nCisgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgJ3dpdGhvdXRcbicKKyAgICAgICAgICAgICAgICcgICB3YXJuaW5nLlxuJworICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgJyJfXyoiXG4nCisgICAgICAgICAgICAgICAnICAgQ2xhc3MtcHJpdmF0ZSBuYW1lcy4gIE5hbWVzIGluIHRoaXMgY2F0ZWdvcnksIHdoZW4gdXNlZCAnCisgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgJyAgIGNvbnRleHQgb2YgYSBjbGFzcyBkZWZpbml0aW9uLCBhcmUgcmUtd3JpdHRlbiB0byB1c2UgYSAnCisgICAgICAgICAgICAgICAnbWFuZ2xlZCBmb3JtXG4nCisgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAnYmFzZSBhbmRcbicKKyAgICAgICAgICAgICAgICcgICBkZXJpdmVkIGNsYXNzZXMuIFNlZSBzZWN0aW9uIElkZW50aWZpZXJzIChOYW1lcykuXG4nLAorICdpZGVudGlmaWVycyc6ICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYW5kIGtleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgKGFsc28gcmVmZXJyZWQgdG8gYXMgKm5hbWVzKikgYXJlIGRlc2NyaWJlZCBieSAnCisgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICdmb2xsb3dpbmcgbGV4aWNhbCBkZWZpbml0aW9ucy5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBzeW50YXggb2YgaWRlbnRpZmllcnMgaW4gUHl0aG9uIGlzIGJhc2VkIG9uIHRoZSBVbmljb2RlICcKKyAgICAgICAgICAgICAgICAnc3RhbmRhcmRcbicKKyAgICAgICAgICAgICAgICAnYW5uZXggVUFYLTMxLCB3aXRoIGVsYWJvcmF0aW9uIGFuZCBjaGFuZ2VzIGFzIGRlZmluZWQgYmVsb3c7ICcKKyAgICAgICAgICAgICAgICAnc2VlIGFsc29cbicKKyAgICAgICAgICAgICAgICAnKipQRVAgMzEzMSoqIGZvciBmdXJ0aGVyIGRldGFpbHMuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdXaXRoaW4gdGhlIEFTQ0lJIHJhbmdlIChVKzAwMDEuLlUrMDA3RiksIHRoZSB2YWxpZCBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgJ2lkZW50aWZpZXJzIGFyZSB0aGUgc2FtZSBhcyBpbiBQeXRob24gMi54OiB0aGUgdXBwZXJjYXNlIGFuZCAnCisgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZVxuJworICAgICAgICAgICAgICAgICdsZXR0ZXJzICJBIiB0aHJvdWdoICJaIiwgdGhlIHVuZGVyc2NvcmUgIl8iIGFuZCwgZXhjZXB0IGZvciAnCisgICAgICAgICAgICAgICAgJ3RoZSBmaXJzdFxuJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXIsIHRoZSBkaWdpdHMgIjAiIHRocm91Z2ggIjkiLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUHl0aG9uIDMuMCBpbnRyb2R1Y2VzIGFkZGl0aW9uYWwgY2hhcmFjdGVycyBmcm9tIG91dHNpZGUgdGhlICcKKyAgICAgICAgICAgICAgICAnQVNDSUlcbicKKyAgICAgICAgICAgICAgICAncmFuZ2UgKHNlZSAqKlBFUCAzMTMxKiopLiAgRm9yIHRoZXNlIGNoYXJhY3RlcnMsIHRoZSAnCisgICAgICAgICAgICAgICAgJ2NsYXNzaWZpY2F0aW9uXG4nCisgICAgICAgICAgICAgICAgJ3VzZXMgdGhlIHZlcnNpb24gb2YgdGhlIFVuaWNvZGUgQ2hhcmFjdGVyIERhdGFiYXNlIGFzICcKKyAgICAgICAgICAgICAgICAnaW5jbHVkZWQgaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgJyJ1bmljb2RlZGF0YSIgbW9kdWxlLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnSWRlbnRpZmllcnMgYXJlIHVubGltaXRlZCBpbiBsZW5ndGguICBDYXNlIGlzIHNpZ25pZmljYW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgaWRlbnRpZmllciAgIDo6PSB4aWRfc3RhcnQgeGlkX2NvbnRpbnVlKlxuJworICAgICAgICAgICAgICAgICcgICBpZF9zdGFydCAgICAgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBnZW5lcmFsIGNhdGVnb3JpZXMgTHUsICcKKyAgICAgICAgICAgICAgICAnTGwsIEx0LCBMbSwgTG8sIE5sLCB0aGUgdW5kZXJzY29yZSwgYW5kIGNoYXJhY3RlcnMgd2l0aCB0aGUgJworICAgICAgICAgICAgICAgICdPdGhlcl9JRF9TdGFydCBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgaWRfY29udGludWUgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQsIHBsdXMgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGluIHRoZSBjYXRlZ29yaWVzIE1uLCBNYywgTmQsIFBjIGFuZCBvdGhlcnMgd2l0aCAnCisgICAgICAgICAgICAgICAgJ3RoZSBPdGhlcl9JRF9Db250aW51ZSBwcm9wZXJ0eT5cbicKKyAgICAgICAgICAgICAgICAnICAgeGlkX3N0YXJ0ICAgIDo6PSA8YWxsIGNoYXJhY3RlcnMgaW4gaWRfc3RhcnQgd2hvc2UgTkZLQyAnCisgICAgICAgICAgICAgICAgJ25vcm1hbGl6YXRpb24gaXMgaW4gImlkX3N0YXJ0IHhpZF9jb250aW51ZSoiPlxuJworICAgICAgICAgICAgICAgICcgICB4aWRfY29udGludWUgOjo9IDxhbGwgY2hhcmFjdGVycyBpbiBpZF9jb250aW51ZSB3aG9zZSBORktDICcKKyAgICAgICAgICAgICAgICAnbm9ybWFsaXphdGlvbiBpcyBpbiAiaWRfY29udGludWUqIj5cbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ1RoZSBVbmljb2RlIGNhdGVnb3J5IGNvZGVzIG1lbnRpb25lZCBhYm92ZSBzdGFuZCBmb3I6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMdSogLSB1cHBlcmNhc2UgbGV0dGVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTGwqIC0gbG93ZXJjYXNlIGxldHRlcnNcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKkx0KiAtIHRpdGxlY2FzZSBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbSogLSBtb2RpZmllciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpMbyogLSBvdGhlciBsZXR0ZXJzXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICcqICpObCogLSBsZXR0ZXIgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTW4qIC0gbm9uc3BhY2luZyBtYXJrc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqTWMqIC0gc3BhY2luZyBjb21iaW5pbmcgbWFya3NcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJyogKk5kKiAtIGRlY2ltYWwgbnVtYmVyc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqUGMqIC0gY29ubmVjdG9yIHB1bmN0dWF0aW9uc1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfU3RhcnQqIC0gZXhwbGljaXQgbGlzdCBvZiBjaGFyYWN0ZXJzIGluICcKKyAgICAgICAgICAgICAgICAnUHJvcExpc3QudHh0IHRvXG4nCisgICAgICAgICAgICAgICAgJyAgc3VwcG9ydCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eVxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnKiAqT3RoZXJfSURfQ29udGludWUqIC0gbGlrZXdpc2VcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0FsbCBpZGVudGlmaWVycyBhcmUgY29udmVydGVkIGludG8gdGhlIG5vcm1hbCBmb3JtIE5GS0Mgd2hpbGUgJworICAgICAgICAgICAgICAgICdwYXJzaW5nO1xuJworICAgICAgICAgICAgICAgICdjb21wYXJpc29uIG9mIGlkZW50aWZpZXJzIGlzIGJhc2VkIG9uIE5GS0MuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdBIG5vbi1ub3JtYXRpdmUgSFRNTCBmaWxlIGxpc3RpbmcgYWxsIHZhbGlkIGlkZW50aWZpZXIgJworICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIGZvclxuJworICAgICAgICAgICAgICAgICdVbmljb2RlIDQuMSBjYW4gYmUgZm91bmQgYXQgaHR0cHM6Ly93d3cuZGNsLmhwaS51bmktXG4nCisgICAgICAgICAgICAgICAgJ3BvdHNkYW0uZGUvaG9tZS9sb2V3aXMvdGFibGUtMzEzMS5odG1sLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgJ0tleXdvcmRzXG4nCisgICAgICAgICAgICAgICAgJz09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIGlkZW50aWZpZXJzIGFyZSB1c2VkIGFzIHJlc2VydmVkIHdvcmRzLCBvciAnCisgICAgICAgICAgICAgICAgJyprZXl3b3Jkcyogb2ZcbicKKyAgICAgICAgICAgICAgICAndGhlIGxhbmd1YWdlLCBhbmQgY2Fubm90IGJlIHVzZWQgYXMgb3JkaW5hcnkgaWRlbnRpZmllcnMuICAnCisgICAgICAgICAgICAgICAgJ1RoZXkgbXVzdFxuJworICAgICAgICAgICAgICAgICdiZSBzcGVsbGVkIGV4YWN0bHkgYXMgd3JpdHRlbiBoZXJlOlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgRmFsc2UgICAgICBjbGFzcyAgICAgIGZpbmFsbHkgICAgaXMgICAgICAgICByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAnICAgTm9uZSAgICAgICBjb250aW51ZSAgIGZvciAgICAgICAgbGFtYmRhICAgICB0cnlcbicKKyAgICAgICAgICAgICAgICAnICAgVHJ1ZSAgICAgICBkZWYgICAgICAgIGZyb20gICAgICAgbm9ubG9jYWwgICB3aGlsZVxuJworICAgICAgICAgICAgICAgICcgICBhbmQgICAgICAgIGRlbCAgICAgICAgZ2xvYmFsICAgICBub3QgICAgICAgIHdpdGhcbicKKyAgICAgICAgICAgICAgICAnICAgYXMgICAgICAgICBlbGlmICAgICAgIGlmICAgICAgICAgb3IgICAgICAgICB5aWVsZFxuJworICAgICAgICAgICAgICAgICcgICBhc3NlcnQgICAgIGVsc2UgICAgICAgaW1wb3J0ICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgJyAgIGJyZWFrICAgICAgZXhjZXB0ICAgICBpbiAgICAgICAgIHJhaXNlXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnUmVzZXJ2ZWQgY2xhc3NlcyBvZiBpZGVudGlmaWVyc1xuJworICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICdDZXJ0YWluIGNsYXNzZXMgb2YgaWRlbnRpZmllcnMgKGJlc2lkZXMga2V5d29yZHMpIGhhdmUgJworICAgICAgICAgICAgICAgICdzcGVjaWFsXG4nCisgICAgICAgICAgICAgICAgJ21lYW5pbmdzLiAgVGhlc2UgY2xhc3NlcyBhcmUgaWRlbnRpZmllZCBieSB0aGUgcGF0dGVybnMgb2YgJworICAgICAgICAgICAgICAgICdsZWFkaW5nIGFuZFxuJworICAgICAgICAgICAgICAgICd0cmFpbGluZyB1bmRlcnNjb3JlIGNoYXJhY3RlcnM6XG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciXyoiXG4nCisgICAgICAgICAgICAgICAgJyAgIE5vdCBpbXBvcnRlZCBieSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiLiAgVGhlIHNwZWNpYWwgJworICAgICAgICAgICAgICAgICdpZGVudGlmaWVyICJfIlxuJworICAgICAgICAgICAgICAgICcgICBpcyB1c2VkIGluIHRoZSBpbnRlcmFjdGl2ZSBpbnRlcnByZXRlciB0byBzdG9yZSB0aGUgcmVzdWx0ICcKKyAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgJyAgIGxhc3QgZXZhbHVhdGlvbjsgaXQgaXMgc3RvcmVkIGluIHRoZSAiYnVpbHRpbnMiIG1vZHVsZS4gICcKKyAgICAgICAgICAgICAgICAnV2hlbiBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgaW4gaW50ZXJhY3RpdmUgbW9kZSwgIl8iIGhhcyBubyBzcGVjaWFsIG1lYW5pbmcgYW5kIGlzIG5vdCAnCisgICAgICAgICAgICAgICAgJ2RlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgJyAgIFNlZSBzZWN0aW9uIFRoZSBpbXBvcnQgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG5hbWUgIl8iIGlzIG9mdGVuIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aFxuJworICAgICAgICAgICAgICAgICcgICAgIGludGVybmF0aW9uYWxpemF0aW9uOyByZWZlciB0byB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgJworICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAnICAgICAiZ2V0dGV4dCIgbW9kdWxlIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoaXMgJworICAgICAgICAgICAgICAgICdjb252ZW50aW9uLlxuJworICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAnIl9fKl9fIlxuJworICAgICAgICAgICAgICAgICcgICBTeXN0ZW0tZGVmaW5lZCBuYW1lcy4gVGhlc2UgbmFtZXMgYXJlIGRlZmluZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXJcbicKKyAgICAgICAgICAgICAgICAnICAgYW5kIGl0cyBpbXBsZW1lbnRhdGlvbiAoaW5jbHVkaW5nIHRoZSBzdGFuZGFyZCBsaWJyYXJ5KS4gICcKKyAgICAgICAgICAgICAgICAnQ3VycmVudFxuJworICAgICAgICAgICAgICAgICcgICBzeXN0ZW0gbmFtZXMgYXJlIGRpc2N1c3NlZCBpbiB0aGUgU3BlY2lhbCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICdzZWN0aW9uIGFuZFxuJworICAgICAgICAgICAgICAgICcgICBlbHNld2hlcmUuICBNb3JlIHdpbGwgbGlrZWx5IGJlIGRlZmluZWQgaW4gZnV0dXJlIHZlcnNpb25zICcKKyAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAnICAgUHl0aG9uLiAgKkFueSogdXNlIG9mICJfXypfXyIgbmFtZXMsIGluIGFueSBjb250ZXh0LCB0aGF0ICcKKyAgICAgICAgICAgICAgICAnZG9lcyBub3RcbicKKyAgICAgICAgICAgICAgICAnICAgZm9sbG93IGV4cGxpY2l0bHkgZG9jdW1lbnRlZCB1c2UsIGlzIHN1YmplY3QgdG8gYnJlYWthZ2UgJworICAgICAgICAgICAgICAgICd3aXRob3V0XG4nCisgICAgICAgICAgICAgICAgJyAgIHdhcm5pbmcuXG4nCisgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICciX18qIlxuJworICAgICAgICAgICAgICAgICcgICBDbGFzcy1wcml2YXRlIG5hbWVzLiAgTmFtZXMgaW4gdGhpcyBjYXRlZ29yeSwgd2hlbiB1c2VkICcKKyAgICAgICAgICAgICAgICAnd2l0aGluIHRoZVxuJworICAgICAgICAgICAgICAgICcgICBjb250ZXh0IG9mIGEgY2xhc3MgZGVmaW5pdGlvbiwgYXJlIHJlLXdyaXR0ZW4gdG8gdXNlIGEgJworICAgICAgICAgICAgICAgICdtYW5nbGVkIGZvcm1cbicKKyAgICAgICAgICAgICAgICAnICAgdG8gaGVscCBhdm9pZCBuYW1lIGNsYXNoZXMgYmV0d2VlbiAicHJpdmF0ZSIgYXR0cmlidXRlcyBvZiAnCisgICAgICAgICAgICAgICAgJ2Jhc2UgYW5kXG4nCisgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3Nlcy4gU2VlIHNlY3Rpb24gSWRlbnRpZmllcnMgKE5hbWVzKS5cbicsCisgJ2lmJzogJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnRcbicKKyAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgJ1xuJworICAgICAgICdUaGUgImlmIiBzdGF0ZW1lbnQgaXMgdXNlZCBmb3IgY29uZGl0aW9uYWwgZXhlY3V0aW9uOlxuJworICAgICAgICdcbicKKyAgICAgICAnICAgaWZfc3RtdCA6Oj0gImlmIiBleHByZXNzaW9uICI6IiBzdWl0ZVxuJworICAgICAgICcgICAgICAgICAgICAgICAoICJlbGlmIiBleHByZXNzaW9uICI6IiBzdWl0ZSApKlxuJworICAgICAgICcgICAgICAgICAgICAgICBbImVsc2UiICI6IiBzdWl0ZV1cbicKKyAgICAgICAnXG4nCisgICAgICAgJ0l0IHNlbGVjdHMgZXhhY3RseSBvbmUgb2YgdGhlIHN1aXRlcyBieSBldmFsdWF0aW5nIHRoZSBleHByZXNzaW9ucyAnCisgICAgICAgJ29uZVxuJworICAgICAgICdieSBvbmUgdW50aWwgb25lIGlzIGZvdW5kIHRvIGJlIHRydWUgKHNlZSBzZWN0aW9uIEJvb2xlYW4gb3BlcmF0aW9uc1xuJworICAgICAgICdmb3IgdGhlIGRlZmluaXRpb24gb2YgdHJ1ZSBhbmQgZmFsc2UpOyB0aGVuIHRoYXQgc3VpdGUgaXMgZXhlY3V0ZWRcbicKKyAgICAgICAnKGFuZCBubyBvdGhlciBwYXJ0IG9mIHRoZSAiaWYiIHN0YXRlbWVudCBpcyBleGVjdXRlZCBvciBldmFsdWF0ZWQpLlxuJworICAgICAgICdJZiBhbGwgZXhwcmVzc2lvbnMgYXJlIGZhbHNlLCB0aGUgc3VpdGUgb2YgdGhlICJlbHNlIiBjbGF1c2UsIGlmXG4nCisgICAgICAgJ3ByZXNlbnQsIGlzIGV4ZWN1dGVkLlxuJywKKyAnaW1hZ2luYXJ5JzogJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzXG4nCisgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnSW1hZ2luYXJ5IGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICcgICBpbWFnbnVtYmVyIDo6PSAoZmxvYXRudW1iZXIgfCBkaWdpdHBhcnQpICgiaiIgfCAiSiIpXG4nCisgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgJ0FuIGltYWdpbmFyeSBsaXRlcmFsIHlpZWxkcyBhIGNvbXBsZXggbnVtYmVyIHdpdGggYSByZWFsIHBhcnQgJworICAgICAgICAgICAgICAnb2YgMC4wLlxuJworICAgICAgICAgICAgICAnQ29tcGxleCBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBhcyBhIHBhaXIgb2YgZmxvYXRpbmcgcG9pbnQgJworICAgICAgICAgICAgICAnbnVtYmVyc1xuJworICAgICAgICAgICAgICAnYW5kIGhhdmUgdGhlIHNhbWUgcmVzdHJpY3Rpb25zIG9uIHRoZWlyIHJhbmdlLiAgVG8gY3JlYXRlIGEgJworICAgICAgICAgICAgICAnY29tcGxleFxuJworICAgICAgICAgICAgICAnbnVtYmVyIHdpdGggYSBub256ZXJvIHJlYWwgcGFydCwgYWRkIGEgZmxvYXRpbmcgcG9pbnQgbnVtYmVyIHRvICcKKyAgICAgICAgICAgICAgJ2l0LFxuJworICAgICAgICAgICAgICAnZS5nLiwgIigzKzRqKSIuICBTb21lIGV4YW1wbGVzIG9mIGltYWdpbmFyeSBsaXRlcmFsczpcbicKKyAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAnICAgMy4xNGogICAxMC5qICAgIDEwaiAgICAgLjAwMWogICAxZTEwMGogICAzLjE0ZS0xMGogICAnCisgICAgICAgICAgICAgICczLjE0XzE1XzkzalxuJywKKyAnaW1wb3J0JzogJ1xuJworICAgICAgICAgICAnVGhlICJpbXBvcnQiIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpbXBvcnRfc3RtdCAgICAgOjo9ICJpbXBvcnQiIG1vZHVsZSBbImFzIiBuYW1lXSAoICIsIiBtb2R1bGUgJworICAgICAgICAgICAnWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgaWRlbnRpZmllciAnCisgICAgICAgICAgICdbImFzIiBuYW1lXVxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICggIiwiIGlkZW50aWZpZXIgWyJhcyIgbmFtZV0gKSpcbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICB8ICJmcm9tIiByZWxhdGl2ZV9tb2R1bGUgImltcG9ydCIgIigiICcKKyAgICAgICAgICAgJ2lkZW50aWZpZXIgWyJhcyIgbmFtZV1cbicKKyAgICAgICAgICAgJyAgICAgICAgICAgICAgICAgICAoICIsIiBpZGVudGlmaWVyIFsiYXMiIG5hbWVdICkqIFsiLCJdICIpIlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgIHwgImZyb20iIG1vZHVsZSAiaW1wb3J0IiAiKiJcbicKKyAgICAgICAgICAgJyAgIG1vZHVsZSAgICAgICAgICA6Oj0gKGlkZW50aWZpZXIgIi4iKSogaWRlbnRpZmllclxuJworICAgICAgICAgICAnICAgcmVsYXRpdmVfbW9kdWxlIDo6PSAiLiIqIG1vZHVsZSB8ICIuIitcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICA6Oj0gaWRlbnRpZmllclxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgYmFzaWMgaW1wb3J0IHN0YXRlbWVudCAobm8gImZyb20iIGNsYXVzZSkgaXMgZXhlY3V0ZWQgaW4gdHdvXG4nCisgICAgICAgICAgICdzdGVwczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCBhIG1vZHVsZSwgbG9hZGluZyBhbmQgaW5pdGlhbGl6aW5nIGl0IGlmIG5lY2Vzc2FyeVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcyLiBkZWZpbmUgYSBuYW1lIG9yIG5hbWVzIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgZm9yIHRoZSBzY29wZVxuJworICAgICAgICAgICAnICAgd2hlcmUgdGhlICJpbXBvcnQiIHN0YXRlbWVudCBvY2N1cnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gdGhlIHN0YXRlbWVudCBjb250YWlucyBtdWx0aXBsZSBjbGF1c2VzIChzZXBhcmF0ZWQgYnkgY29tbWFzKSAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ3R3byBzdGVwcyBhcmUgY2FycmllZCBvdXQgc2VwYXJhdGVseSBmb3IgZWFjaCBjbGF1c2UsIGp1c3QgYXMgJworICAgICAgICAgICAndGhvdWdoXG4nCisgICAgICAgICAgICd0aGUgY2xhdXNlcyBoYWQgYmVlbiBzZXBhcmF0ZWQgb3V0IGludG8gaW5kaXZpZHVhbCBpbXBvcnQgJworICAgICAgICAgICAnc3RhdGVtZW50cy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlIGRldGFpbHMgb2YgdGhlIGZpcnN0IHN0ZXAsIGZpbmRpbmcgYW5kIGxvYWRpbmcgbW9kdWxlcyBhcmVcbicKKyAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiBncmVhdGVyIGRldGFpbCBpbiB0aGUgc2VjdGlvbiBvbiB0aGUgaW1wb3J0IHN5c3RlbSwgJworICAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAgJ2Fsc28gZGVzY3JpYmVzIHRoZSB2YXJpb3VzIHR5cGVzIG9mIHBhY2thZ2VzIGFuZCBtb2R1bGVzIHRoYXQgY2FuICcKKyAgICAgICAgICAgJ2JlXG4nCisgICAgICAgICAgICdpbXBvcnRlZCwgYXMgd2VsbCBhcyBhbGwgdGhlIGhvb2tzIHRoYXQgY2FuIGJlIHVzZWQgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnaW1wb3J0IHN5c3RlbS4gTm90ZSB0aGF0IGZhaWx1cmVzIGluIHRoaXMgc3RlcCBtYXkgaW5kaWNhdGUgJworICAgICAgICAgICAnZWl0aGVyXG4nCisgICAgICAgICAgICd0aGF0IHRoZSBtb2R1bGUgY291bGQgbm90IGJlIGxvY2F0ZWQsICpvciogdGhhdCBhbiBlcnJvciBvY2N1cnJlZFxuJworICAgICAgICAgICAnd2hpbGUgaW5pdGlhbGl6aW5nIHRoZSBtb2R1bGUsIHdoaWNoIGluY2x1ZGVzIGV4ZWN1dGlvbiBvZiB0aGVcbicKKyAgICAgICAgICAgIm1vZHVsZSdzIGNvZGUuXG4iCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSByZXF1ZXN0ZWQgbW9kdWxlIGlzIHJldHJpZXZlZCBzdWNjZXNzZnVsbHksIGl0IHdpbGwgYmUgJworICAgICAgICAgICAnbWFkZVxuJworICAgICAgICAgICAnYXZhaWxhYmxlIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgaW4gb25lIG9mIHRocmVlIHdheXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogSWYgdGhlIG1vZHVsZSBuYW1lIGlzIGZvbGxvd2VkIGJ5ICJhcyIsIHRoZW4gdGhlIG5hbWUgZm9sbG93aW5nXG4nCisgICAgICAgICAgICcgICJhcyIgaXMgYm91bmQgZGlyZWN0bHkgdG8gdGhlIGltcG9ydGVkIG1vZHVsZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiBubyBvdGhlciBuYW1lIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBtb2R1bGUgYmVpbmcgaW1wb3J0ZWQgaXMgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAiICB0b3AgbGV2ZWwgbW9kdWxlLCB0aGUgbW9kdWxlJ3MgbmFtZSBpcyBib3VuZCBpbiB0aGUgbG9jYWwgIgorICAgICAgICAgICAnbmFtZXNwYWNlXG4nCisgICAgICAgICAgICcgIGFzIGEgcmVmZXJlbmNlIHRvIHRoZSBpbXBvcnRlZCBtb2R1bGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBJZiB0aGUgbW9kdWxlIGJlaW5nIGltcG9ydGVkIGlzICpub3QqIGEgdG9wIGxldmVsIG1vZHVsZSwgdGhlbiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJyAgbmFtZSBvZiB0aGUgdG9wIGxldmVsIHBhY2thZ2UgdGhhdCBjb250YWlucyB0aGUgbW9kdWxlIGlzIGJvdW5kICcKKyAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICcgIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgYSByZWZlcmVuY2UgdG8gdGhlIHRvcCBsZXZlbCBwYWNrYWdlLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJyAgaW1wb3J0ZWQgbW9kdWxlIG11c3QgYmUgYWNjZXNzZWQgdXNpbmcgaXRzIGZ1bGwgcXVhbGlmaWVkIG5hbWVcbicKKyAgICAgICAgICAgJyAgcmF0aGVyIHRoYW4gZGlyZWN0bHlcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJmcm9tIiBmb3JtIHVzZXMgYSBzbGlnaHRseSBtb3JlIGNvbXBsZXggcHJvY2VzczpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnMS4gZmluZCB0aGUgbW9kdWxlIHNwZWNpZmllZCBpbiB0aGUgImZyb20iIGNsYXVzZSwgbG9hZGluZyBhbmRcbicKKyAgICAgICAgICAgJyAgIGluaXRpYWxpemluZyBpdCBpZiBuZWNlc3Nhcnk7XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJzIuIGZvciBlYWNoIG9mIHRoZSBpZGVudGlmaWVycyBzcGVjaWZpZWQgaW4gdGhlICJpbXBvcnQiIGNsYXVzZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIDEuIGNoZWNrIGlmIHRoZSBpbXBvcnRlZCBtb2R1bGUgaGFzIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMi4gaWYgbm90LCBhdHRlbXB0IHRvIGltcG9ydCBhIHN1Ym1vZHVsZSB3aXRoIHRoYXQgbmFtZSBhbmQgJworICAgICAgICAgICAndGhlblxuJworICAgICAgICAgICAnICAgICAgY2hlY2sgdGhlIGltcG9ydGVkIG1vZHVsZSBhZ2FpbiBmb3IgdGhhdCBhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgMy4gaWYgdGhlIGF0dHJpYnV0ZSBpcyBub3QgZm91bmQsICJJbXBvcnRFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICA0LiBvdGhlcndpc2UsIGEgcmVmZXJlbmNlIHRvIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBsb2NhbFxuJworICAgICAgICAgICAnICAgICAgbmFtZXNwYWNlLCB1c2luZyB0aGUgbmFtZSBpbiB0aGUgImFzIiBjbGF1c2UgaWYgaXQgaXMgJworICAgICAgICAgICAncHJlc2VudCxcbicKKyAgICAgICAgICAgJyAgICAgIG90aGVyd2lzZSB1c2luZyB0aGUgYXR0cmlidXRlIG5hbWVcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRXhhbXBsZXM6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBmb28gICAgICAgICAgICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBib3VuZCBsb2NhbGx5XG4nCisgICAgICAgICAgICcgICBpbXBvcnQgZm9vLmJhci5iYXogICAgICAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkLCBmb28gYm91bmQgJworICAgICAgICAgICAnbG9jYWxseVxuJworICAgICAgICAgICAnICAgaW1wb3J0IGZvby5iYXIuYmF6IGFzIGZiYiAgIyBmb28uYmFyLmJheiBpbXBvcnRlZCBhbmQgYm91bmQgYXMgJworICAgICAgICAgICAnZmJiXG4nCisgICAgICAgICAgICcgICBmcm9tIGZvby5iYXIgaW1wb3J0IGJheiAgICAjIGZvby5iYXIuYmF6IGltcG9ydGVkIGFuZCBib3VuZCBhcyAnCisgICAgICAgICAgICdiYXpcbicKKyAgICAgICAgICAgJyAgIGZyb20gZm9vIGltcG9ydCBhdHRyICAgICAgICMgZm9vIGltcG9ydGVkIGFuZCBmb28uYXR0ciBib3VuZCBhcyAnCisgICAgICAgICAgICdhdHRyXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSBsaXN0IG9mIGlkZW50aWZpZXJzIGlzIHJlcGxhY2VkIGJ5IGEgc3RhciAoIlwnKlwnIiksIGFsbCAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgJ25hbWVzIGRlZmluZWQgaW4gdGhlIG1vZHVsZSBhcmUgYm91bmQgaW4gdGhlIGxvY2FsIG5hbWVzcGFjZSBmb3IgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdzY29wZSB3aGVyZSB0aGUgImltcG9ydCIgc3RhdGVtZW50IG9jY3Vycy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICpwdWJsaWMgbmFtZXMqIGRlZmluZWQgYnkgYSBtb2R1bGUgYXJlIGRldGVybWluZWQgYnkgY2hlY2tpbmcgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdtb2R1bGVcJ3MgbmFtZXNwYWNlIGZvciBhIHZhcmlhYmxlIG5hbWVkICJfX2FsbF9fIjsgaWYgZGVmaW5lZCwgaXQgJworICAgICAgICAgICAnbXVzdFxuJworICAgICAgICAgICAnYmUgYSBzZXF1ZW5jZSBvZiBzdHJpbmdzIHdoaWNoIGFyZSBuYW1lcyBkZWZpbmVkIG9yIGltcG9ydGVkIGJ5ICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ21vZHVsZS4gIFRoZSBuYW1lcyBnaXZlbiBpbiAiX19hbGxfXyIgYXJlIGFsbCBjb25zaWRlcmVkIHB1YmxpYyAnCisgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgJ2FyZSByZXF1aXJlZCB0byBleGlzdC4gIElmICJfX2FsbF9fIiBpcyBub3QgZGVmaW5lZCwgdGhlIHNldCBvZiAnCisgICAgICAgICAgICdwdWJsaWNcbicKKyAgICAgICAgICAgIm5hbWVzIGluY2x1ZGVzIGFsbCBuYW1lcyBmb3VuZCBpbiB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIHdoaWNoIGRvICIKKyAgICAgICAgICAgJ25vdFxuJworICAgICAgICAgICAnYmVnaW4gd2l0aCBhbiB1bmRlcnNjb3JlIGNoYXJhY3RlciAoIlwnX1wnIikuICAiX19hbGxfXyIgc2hvdWxkICcKKyAgICAgICAgICAgJ2NvbnRhaW5cbicKKyAgICAgICAgICAgJ3RoZSBlbnRpcmUgcHVibGljIEFQSS4gSXQgaXMgaW50ZW5kZWQgdG8gYXZvaWQgYWNjaWRlbnRhbGx5ICcKKyAgICAgICAgICAgJ2V4cG9ydGluZ1xuJworICAgICAgICAgICAnaXRlbXMgdGhhdCBhcmUgbm90IHBhcnQgb2YgdGhlIEFQSSAoc3VjaCBhcyBsaWJyYXJ5IG1vZHVsZXMgd2hpY2ggJworICAgICAgICAgICAnd2VyZVxuJworICAgICAgICAgICAnaW1wb3J0ZWQgYW5kIHVzZWQgd2l0aGluIHRoZSBtb2R1bGUpLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgd2lsZCBjYXJkIGZvcm0gb2YgaW1wb3J0IC0tLSAiZnJvbSBtb2R1bGUgaW1wb3J0ICoiIC0tLSBpcyAnCisgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICdhbGxvd2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuICBBdHRlbXB0aW5nIHRvIHVzZSBpdCBpbiBjbGFzcyBvclxuJworICAgICAgICAgICAnZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2lsbCByYWlzZSBhICJTeW50YXhFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gc3BlY2lmeWluZyB3aGF0IG1vZHVsZSB0byBpbXBvcnQgeW91IGRvIG5vdCBoYXZlIHRvIHNwZWNpZnkgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdhYnNvbHV0ZSBuYW1lIG9mIHRoZSBtb2R1bGUuIFdoZW4gYSBtb2R1bGUgb3IgcGFja2FnZSBpcyAnCisgICAgICAgICAgICdjb250YWluZWRcbicKKyAgICAgICAgICAgJ3dpdGhpbiBhbm90aGVyIHBhY2thZ2UgaXQgaXMgcG9zc2libGUgdG8gbWFrZSBhIHJlbGF0aXZlIGltcG9ydCAnCisgICAgICAgICAgICd3aXRoaW5cbicKKyAgICAgICAgICAgJ3RoZSBzYW1lIHRvcCBwYWNrYWdlIHdpdGhvdXQgaGF2aW5nIHRvIG1lbnRpb24gdGhlIHBhY2thZ2UgbmFtZS4gJworICAgICAgICAgICAnQnlcbicKKyAgICAgICAgICAgJ3VzaW5nIGxlYWRpbmcgZG90cyBpbiB0aGUgc3BlY2lmaWVkIG1vZHVsZSBvciBwYWNrYWdlIGFmdGVyICJmcm9tIiAnCisgICAgICAgICAgICd5b3VcbicKKyAgICAgICAgICAgJ2NhbiBzcGVjaWZ5IGhvdyBoaWdoIHRvIHRyYXZlcnNlIHVwIHRoZSBjdXJyZW50IHBhY2thZ2UgaGllcmFyY2h5XG4nCisgICAgICAgICAgICd3aXRob3V0IHNwZWNpZnlpbmcgZXhhY3QgbmFtZXMuIE9uZSBsZWFkaW5nIGRvdCBtZWFucyB0aGUgY3VycmVudFxuJworICAgICAgICAgICAncGFja2FnZSB3aGVyZSB0aGUgbW9kdWxlIG1ha2luZyB0aGUgaW1wb3J0IGV4aXN0cy4gVHdvIGRvdHMgbWVhbnMgJworICAgICAgICAgICAndXBcbicKKyAgICAgICAgICAgJ29uZSBwYWNrYWdlIGxldmVsLiBUaHJlZSBkb3RzIGlzIHVwIHR3byBsZXZlbHMsIGV0Yy4gU28gaWYgeW91ICcKKyAgICAgICAgICAgJ2V4ZWN1dGVcbicKKyAgICAgICAgICAgJyJmcm9tIC4gaW1wb3J0IG1vZCIgZnJvbSBhIG1vZHVsZSBpbiB0aGUgInBrZyIgcGFja2FnZSB0aGVuIHlvdSAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICdlbmQgdXAgaW1wb3J0aW5nICJwa2cubW9kIi4gSWYgeW91IGV4ZWN1dGUgImZyb20gLi5zdWJwa2cyIGltcG9ydCAnCisgICAgICAgICAgICdtb2QiXG4nCisgICAgICAgICAgICdmcm9tIHdpdGhpbiAicGtnLnN1YnBrZzEiIHlvdSB3aWxsIGltcG9ydCAicGtnLnN1YnBrZzIubW9kIi4gVGhlXG4nCisgICAgICAgICAgICdzcGVjaWZpY2F0aW9uIGZvciByZWxhdGl2ZSBpbXBvcnRzIGlzIGNvbnRhaW5lZCB3aXRoaW4gKipQRVAgJworICAgICAgICAgICAnMzI4KiouXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgpIiBpcyBwcm92aWRlZCB0byBzdXBwb3J0IGFwcGxpY2F0aW9ucyAnCisgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICdkZXRlcm1pbmUgZHluYW1pY2FsbHkgdGhlIG1vZHVsZXMgdG8gYmUgbG9hZGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0Z1dHVyZSBzdGF0ZW1lbnRzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpmdXR1cmUgc3RhdGVtZW50KiBpcyBhIGRpcmVjdGl2ZSB0byB0aGUgY29tcGlsZXIgdGhhdCBhICcKKyAgICAgICAgICAgJ3BhcnRpY3VsYXJcbicKKyAgICAgICAgICAgJ21vZHVsZSBzaG91bGQgYmUgY29tcGlsZWQgdXNpbmcgc3ludGF4IG9yIHNlbWFudGljcyB0aGF0IHdpbGwgYmVcbicKKyAgICAgICAgICAgJ2F2YWlsYWJsZSBpbiBhIHNwZWNpZmllZCBmdXR1cmUgcmVsZWFzZSBvZiBQeXRob24gd2hlcmUgdGhlICcKKyAgICAgICAgICAgJ2ZlYXR1cmVcbicKKyAgICAgICAgICAgJ2JlY29tZXMgc3RhbmRhcmQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmdXR1cmUgc3RhdGVtZW50IGlzIGludGVuZGVkIHRvIGVhc2UgbWlncmF0aW9uIHRvIGZ1dHVyZSAnCisgICAgICAgICAgICd2ZXJzaW9uc1xuJworICAgICAgICAgICAnb2YgUHl0aG9uIHRoYXQgaW50cm9kdWNlIGluY29tcGF0aWJsZSBjaGFuZ2VzIHRvIHRoZSBsYW5ndWFnZS4gICcKKyAgICAgICAgICAgJ0l0XG4nCisgICAgICAgICAgICdhbGxvd3MgdXNlIG9mIHRoZSBuZXcgZmVhdHVyZXMgb24gYSBwZXItbW9kdWxlIGJhc2lzIGJlZm9yZSB0aGVcbicKKyAgICAgICAgICAgJ3JlbGVhc2UgaW4gd2hpY2ggdGhlIGZlYXR1cmUgYmVjb21lcyBzdGFuZGFyZC5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgZnV0dXJlX3N0YXRlbWVudCA6Oj0gImZyb20iICJfX2Z1dHVyZV9fIiAiaW1wb3J0IiBmZWF0dXJlIFsiYXMiICcKKyAgICAgICAgICAgJ25hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKlxuJworICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICAgICAgfCAiZnJvbSIgIl9fZnV0dXJlX18iICJpbXBvcnQiICIoIiBmZWF0dXJlICcKKyAgICAgICAgICAgJ1siYXMiIG5hbWVdXG4nCisgICAgICAgICAgICcgICAgICAgICAgICAgICAgICAgICAgICAoIiwiIGZlYXR1cmUgWyJhcyIgbmFtZV0pKiBbIiwiXSAiKSJcbicKKyAgICAgICAgICAgJyAgIGZlYXR1cmUgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJyAgIG5hbWUgICAgICAgICAgICAgOjo9IGlkZW50aWZpZXJcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IG11c3QgYXBwZWFyIG5lYXIgdGhlIHRvcCBvZiB0aGUgbW9kdWxlLiAgVGhlICcKKyAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgJ2xpbmVzIHRoYXQgY2FuIGFwcGVhciBiZWZvcmUgYSBmdXR1cmUgc3RhdGVtZW50IGFyZTpcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiB0aGUgbW9kdWxlIGRvY3N0cmluZyAoaWYgYW55KSxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBjb21tZW50cyxcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnKiBibGFuayBsaW5lcywgYW5kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyogb3RoZXIgZnV0dXJlIHN0YXRlbWVudHMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmZWF0dXJlcyByZWNvZ25pemVkIGJ5IFB5dGhvbiAzLjAgYXJlICJhYnNvbHV0ZV9pbXBvcnQiLFxuJworICAgICAgICAgICAnImRpdmlzaW9uIiwgImdlbmVyYXRvcnMiLCAidW5pY29kZV9saXRlcmFscyIsICJwcmludF9mdW5jdGlvbiIsXG4nCisgICAgICAgICAgICcibmVzdGVkX3Njb3BlcyIgYW5kICJ3aXRoX3N0YXRlbWVudCIuICBUaGV5IGFyZSBhbGwgcmVkdW5kYW50ICcKKyAgICAgICAgICAgJ2JlY2F1c2VcbicKKyAgICAgICAgICAgJ3RoZXkgYXJlIGFsd2F5cyBlbmFibGVkLCBhbmQgb25seSBrZXB0IGZvciBiYWNrd2FyZHMgJworICAgICAgICAgICAnY29tcGF0aWJpbGl0eS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IGlzIHJlY29nbml6ZWQgYW5kIHRyZWF0ZWQgc3BlY2lhbGx5IGF0IGNvbXBpbGVcbicKKyAgICAgICAgICAgJ3RpbWU6IENoYW5nZXMgdG8gdGhlIHNlbWFudGljcyBvZiBjb3JlIGNvbnN0cnVjdHMgYXJlIG9mdGVuXG4nCisgICAgICAgICAgICdpbXBsZW1lbnRlZCBieSBnZW5lcmF0aW5nIGRpZmZlcmVudCBjb2RlLiAgSXQgbWF5IGV2ZW4gYmUgdGhlICcKKyAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgJ3RoYXQgYSBuZXcgZmVhdHVyZSBpbnRyb2R1Y2VzIG5ldyBpbmNvbXBhdGlibGUgc3ludGF4IChzdWNoIGFzIGEgJworICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICdyZXNlcnZlZCB3b3JkKSwgaW4gd2hpY2ggY2FzZSB0aGUgY29tcGlsZXIgbWF5IG5lZWQgdG8gcGFyc2UgdGhlXG4nCisgICAgICAgICAgICdtb2R1bGUgZGlmZmVyZW50bHkuICBTdWNoIGRlY2lzaW9ucyBjYW5ub3QgYmUgcHVzaGVkIG9mZiB1bnRpbFxuJworICAgICAgICAgICAncnVudGltZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRm9yIGFueSBnaXZlbiByZWxlYXNlLCB0aGUgY29tcGlsZXIga25vd3Mgd2hpY2ggZmVhdHVyZSBuYW1lcyAnCisgICAgICAgICAgICdoYXZlXG4nCisgICAgICAgICAgICdiZWVuIGRlZmluZWQsIGFuZCByYWlzZXMgYSBjb21waWxlLXRpbWUgZXJyb3IgaWYgYSBmdXR1cmUgJworICAgICAgICAgICAnc3RhdGVtZW50XG4nCisgICAgICAgICAgICdjb250YWlucyBhIGZlYXR1cmUgbm90IGtub3duIHRvIGl0LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgZGlyZWN0IHJ1bnRpbWUgc2VtYW50aWNzIGFyZSB0aGUgc2FtZSBhcyBmb3IgYW55IGltcG9ydCAnCisgICAgICAgICAgICdzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICd0aGVyZSBpcyBhIHN0YW5kYXJkIG1vZHVsZSAiX19mdXR1cmVfXyIsIGRlc2NyaWJlZCBsYXRlciwgYW5kIGl0ICcKKyAgICAgICAgICAgJ3dpbGxcbicKKyAgICAgICAgICAgJ2JlIGltcG9ydGVkIGluIHRoZSB1c3VhbCB3YXkgYXQgdGhlIHRpbWUgdGhlIGZ1dHVyZSBzdGF0ZW1lbnQgaXNcbicKKyAgICAgICAgICAgJ2V4ZWN1dGVkLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgaW50ZXJlc3RpbmcgcnVudGltZSBzZW1hbnRpY3MgZGVwZW5kIG9uIHRoZSBzcGVjaWZpYyBmZWF0dXJlXG4nCisgICAgICAgICAgICdlbmFibGVkIGJ5IHRoZSBmdXR1cmUgc3RhdGVtZW50LlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdOb3RlIHRoYXQgdGhlcmUgaXMgbm90aGluZyBzcGVjaWFsIGFib3V0IHRoZSBzdGF0ZW1lbnQ6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGltcG9ydCBfX2Z1dHVyZV9fIFthcyBuYW1lXVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICJUaGF0IGlzIG5vdCBhIGZ1dHVyZSBzdGF0ZW1lbnQ7IGl0J3MgYW4gb3JkaW5hcnkgaW1wb3J0IHN0YXRlbWVudCAiCisgICAgICAgICAgICd3aXRoXG4nCisgICAgICAgICAgICdubyBzcGVjaWFsIHNlbWFudGljcyBvciBzeW50YXggcmVzdHJpY3Rpb25zLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdDb2RlIGNvbXBpbGVkIGJ5IGNhbGxzIHRvIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImV4ZWMoKSIgYW5kXG4nCisgICAgICAgICAgICciY29tcGlsZSgpIiB0aGF0IG9jY3VyIGluIGEgbW9kdWxlICJNIiBjb250YWluaW5nIGEgZnV0dXJlICcKKyAgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICAnd2lsbCwgYnkgZGVmYXVsdCwgdXNlIHRoZSBuZXcgc3ludGF4IG9yIHNlbWFudGljcyBhc3NvY2lhdGVkIHdpdGggJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdmdXR1cmUgc3RhdGVtZW50LiAgVGhpcyBjYW4gYmUgY29udHJvbGxlZCBieSBvcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgJyJjb21waWxlKCkiIC0tLSBzZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhhdCBmdW5jdGlvbiBmb3IgJworICAgICAgICAgICAnZGV0YWlscy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQSBmdXR1cmUgc3RhdGVtZW50IHR5cGVkIGF0IGFuIGludGVyYWN0aXZlIGludGVycHJldGVyIHByb21wdCAnCisgICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgICd0YWtlIGVmZmVjdCBmb3IgdGhlIHJlc3Qgb2YgdGhlIGludGVycHJldGVyIHNlc3Npb24uICBJZiBhblxuJworICAgICAgICAgICAnaW50ZXJwcmV0ZXIgaXMgc3RhcnRlZCB3aXRoIHRoZSAiLWkiIG9wdGlvbiwgaXMgcGFzc2VkIGEgc2NyaXB0ICcKKyAgICAgICAgICAgJ25hbWVcbicKKyAgICAgICAgICAgJ3RvIGV4ZWN1dGUsIGFuZCB0aGUgc2NyaXB0IGluY2x1ZGVzIGEgZnV0dXJlIHN0YXRlbWVudCwgaXQgd2lsbCBiZSAnCisgICAgICAgICAgICdpblxuJworICAgICAgICAgICAnZWZmZWN0IGluIHRoZSBpbnRlcmFjdGl2ZSBzZXNzaW9uIHN0YXJ0ZWQgYWZ0ZXIgdGhlIHNjcmlwdCBpc1xuJworICAgICAgICAgICAnZXhlY3V0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICoqUEVQIDIzNioqIC0gQmFjayB0byB0aGUgX19mdXR1cmVfX1xuJworICAgICAgICAgICAnICAgICBUaGUgb3JpZ2luYWwgcHJvcG9zYWwgZm9yIHRoZSBfX2Z1dHVyZV9fIG1lY2hhbmlzbS5cbicsCisgJ2luJzogJ1xuJworICAgICAgICdNZW1iZXJzaGlwIHRlc3Qgb3BlcmF0aW9uc1xuJworICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9ycyAiaW4iIGFuZCAibm90IGluIiB0ZXN0IGZvciBtZW1iZXJzaGlwLiAgInggaW4gcyJcbicKKyAgICAgICAnZXZhbHVhdGVzIHRvIHRydWUgaWYgKngqIGlzIGEgbWVtYmVyIG9mICpzKiwgYW5kIGZhbHNlIG90aGVyd2lzZS4gICJ4XG4nCisgICAgICAgJ25vdCBpbiBzIiByZXR1cm5zIHRoZSBuZWdhdGlvbiBvZiAieCBpbiBzIi4gIEFsbCBidWlsdC1pbiBzZXF1ZW5jZXNcbicKKyAgICAgICAnYW5kIHNldCB0eXBlcyBzdXBwb3J0IHRoaXMgYXMgd2VsbCBhcyBkaWN0aW9uYXJ5LCBmb3Igd2hpY2ggImluIiAnCisgICAgICAgJ3Rlc3RzXG4nCisgICAgICAgJ3doZXRoZXIgdGhlIGRpY3Rpb25hcnkgaGFzIGEgZ2l2ZW4ga2V5LiBGb3IgY29udGFpbmVyIHR5cGVzIHN1Y2ggYXNcbicKKyAgICAgICAnbGlzdCwgdHVwbGUsIHNldCwgZnJvemVuc2V0LCBkaWN0LCBvciBjb2xsZWN0aW9ucy5kZXF1ZSwgdGhlXG4nCisgICAgICAgJ2V4cHJlc3Npb24gInggaW4geSIgaXMgZXF1aXZhbGVudCB0byAiYW55KHggaXMgZSBvciB4ID09IGUgZm9yIGUgaW5cbicKKyAgICAgICAneSkiLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHRoZSBzdHJpbmcgYW5kIGJ5dGVzIHR5cGVzLCAieCBpbiB5IiBpcyB0cnVlIGlmIGFuZCBvbmx5IGlmICp4KiAnCisgICAgICAgJ2lzXG4nCisgICAgICAgJ2Egc3Vic3RyaW5nIG9mICp5Ki4gIEFuIGVxdWl2YWxlbnQgdGVzdCBpcyAieS5maW5kKHgpICE9IC0xIi4gIEVtcHR5XG4nCisgICAgICAgJ3N0cmluZ3MgYXJlIGFsd2F5cyBjb25zaWRlcmVkIHRvIGJlIGEgc3Vic3RyaW5nIG9mIGFueSBvdGhlciBzdHJpbmcsXG4nCisgICAgICAgJ3NvICIiIiBpbiAiYWJjIiIgd2lsbCByZXR1cm4gIlRydWUiLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRlZmluZSB0aGUgIl9fY29udGFpbnNfXygpIiBtZXRob2QsICJ4XG4nCisgICAgICAgJ2luIHkiIGlzIHRydWUgaWYgYW5kIG9ubHkgaWYgInkuX19jb250YWluc19fKHgpIiBpcyB0cnVlLlxuJworICAgICAgICdcbicKKyAgICAgICAnRm9yIHVzZXItZGVmaW5lZCBjbGFzc2VzIHdoaWNoIGRvIG5vdCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiBidXQgZG9cbicKKyAgICAgICAnZGVmaW5lICJfX2l0ZXJfXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBzb21lIHZhbHVlICJ6IiB3aXRoICJ4ID09IHoiXG4nCisgICAgICAgJ2lzIHByb2R1Y2VkIHdoaWxlIGl0ZXJhdGluZyBvdmVyICJ5Ii4gIElmIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWRcbicKKyAgICAgICAnZHVyaW5nIHRoZSBpdGVyYXRpb24sIGl0IGlzIGFzIGlmICJpbiIgcmFpc2VkIHRoYXQgZXhjZXB0aW9uLlxuJworICAgICAgICdcbicKKyAgICAgICAnTGFzdGx5LCB0aGUgb2xkLXN0eWxlIGl0ZXJhdGlvbiBwcm90b2NvbCBpcyB0cmllZDogaWYgYSBjbGFzcyBkZWZpbmVzXG4nCisgICAgICAgJyJfX2dldGl0ZW1fXygpIiwgInggaW4geSIgaXMgdHJ1ZSBpZiBhbmQgb25seSBpZiB0aGVyZSBpcyBhIG5vbi1cbicKKyAgICAgICAnbmVnYXRpdmUgaW50ZWdlciBpbmRleCAqaSogc3VjaCB0aGF0ICJ4ID09IHlbaV0iLCBhbmQgYWxsIGxvd2VyXG4nCisgICAgICAgJ2ludGVnZXIgaW5kaWNlcyBkbyBub3QgcmFpc2UgIkluZGV4RXJyb3IiIGV4Y2VwdGlvbi4gIChJZiBhbnkgb3RoZXJcbicKKyAgICAgICAnZXhjZXB0aW9uIGlzIHJhaXNlZCwgaXQgaXMgYXMgaWYgImluIiByYWlzZWQgdGhhdCBleGNlcHRpb24pLlxuJworICAgICAgICdcbicKKyAgICAgICAnVGhlIG9wZXJhdG9yICJub3QgaW4iIGlzIGRlZmluZWQgdG8gaGF2ZSB0aGUgaW52ZXJzZSB0cnVlIHZhbHVlIG9mXG4nCisgICAgICAgJyJpbiIuXG4nLAorICdpbnRlZ2Vycyc6ICdcbicKKyAgICAgICAgICAgICAnSW50ZWdlciBsaXRlcmFsc1xuJworICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdJbnRlZ2VyIGxpdGVyYWxzIGFyZSBkZXNjcmliZWQgYnkgdGhlIGZvbGxvd2luZyBsZXhpY2FsICcKKyAgICAgICAgICAgICAnZGVmaW5pdGlvbnM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBpbnRlZ2VyICAgICAgOjo9IGRlY2ludGVnZXIgfCBiaW5pbnRlZ2VyIHwgb2N0aW50ZWdlciB8ICcKKyAgICAgICAgICAgICAnaGV4aW50ZWdlclxuJworICAgICAgICAgICAgICcgICBkZWNpbnRlZ2VyICAgOjo9IG5vbnplcm9kaWdpdCAoWyJfIl0gZGlnaXQpKiB8ICIwIisgKFsiXyJdICcKKyAgICAgICAgICAgICAnIjAiKSpcbicKKyAgICAgICAgICAgICAnICAgYmluaW50ZWdlciAgIDo6PSAiMCIgKCJiIiB8ICJCIikgKFsiXyJdIGJpbmRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgb2N0aW50ZWdlciAgIDo6PSAiMCIgKCJvIiB8ICJPIikgKFsiXyJdIG9jdGRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgaGV4aW50ZWdlciAgIDo6PSAiMCIgKCJ4IiB8ICJYIikgKFsiXyJdIGhleGRpZ2l0KStcbicKKyAgICAgICAgICAgICAnICAgbm9uemVyb2RpZ2l0IDo6PSAiMSIuLi4iOSJcbicKKyAgICAgICAgICAgICAnICAgZGlnaXQgICAgICAgIDo6PSAiMCIuLi4iOSJcbicKKyAgICAgICAgICAgICAnICAgYmluZGlnaXQgICAgIDo6PSAiMCIgfCAiMSJcbicKKyAgICAgICAgICAgICAnICAgb2N0ZGlnaXQgICAgIDo6PSAiMCIuLi4iNyJcbicKKyAgICAgICAgICAgICAnICAgaGV4ZGlnaXQgICAgIDo6PSBkaWdpdCB8ICJhIi4uLiJmIiB8ICJBIi4uLiJGIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlcmUgaXMgbm8gbGltaXQgZm9yIHRoZSBsZW5ndGggb2YgaW50ZWdlciBsaXRlcmFscyBhcGFydCBmcm9tICcKKyAgICAgICAgICAgICAnd2hhdFxuJworICAgICAgICAgICAgICdjYW4gYmUgc3RvcmVkIGluIGF2YWlsYWJsZSBtZW1vcnkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdVbmRlcnNjb3JlcyBhcmUgaWdub3JlZCBmb3IgZGV0ZXJtaW5pbmcgdGhlIG51bWVyaWMgdmFsdWUgb2YgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnbGl0ZXJhbC4gIFRoZXkgY2FuIGJlIHVzZWQgdG8gZ3JvdXAgZGlnaXRzIGZvciBlbmhhbmNlZCAnCisgICAgICAgICAgICAgJ3JlYWRhYmlsaXR5LlxuJworICAgICAgICAgICAgICdPbmUgdW5kZXJzY29yZSBjYW4gb2NjdXIgYmV0d2VlbiBkaWdpdHMsIGFuZCBhZnRlciBiYXNlICcKKyAgICAgICAgICAgICAnc3BlY2lmaWVyc1xuJworICAgICAgICAgICAgICdsaWtlICIweCIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdOb3RlIHRoYXQgbGVhZGluZyB6ZXJvcyBpbiBhIG5vbi16ZXJvIGRlY2ltYWwgbnVtYmVyIGFyZSBub3QgJworICAgICAgICAgICAgICdhbGxvd2VkLlxuJworICAgICAgICAgICAgICdUaGlzIGlzIGZvciBkaXNhbWJpZ3VhdGlvbiB3aXRoIEMtc3R5bGUgb2N0YWwgbGl0ZXJhbHMsIHdoaWNoICcKKyAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgJ3VzZWQgYmVmb3JlIHZlcnNpb24gMy4wLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU29tZSBleGFtcGxlcyBvZiBpbnRlZ2VyIGxpdGVyYWxzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgNyAgICAgMjE0NzQ4MzY0NyAgICAgICAgICAgICAgICAgICAgICAgIDBvMTc3ICAgIDBiMTAwMTEwMTExXG4nCisgICAgICAgICAgICAgJyAgIDMgICAgIDc5MjI4MTYyNTE0MjY0MzM3NTkzNTQzOTUwMzM2ICAgICAwbzM3NyAgICAweGRlYWRiZWVmXG4nCisgICAgICAgICAgICAgJyAgICAgICAgIDEwMF8wMDBfMDAwXzAwMCAgICAgICAgICAgICAgICAgICAwYl8xMTEwXzAxMDFcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVuZGVyc2NvcmVzIGFyZSBub3cgYWxsb3dlZCBmb3IgJworICAgICAgICAgICAgICdncm91cGluZ1xuJworICAgICAgICAgICAgICdwdXJwb3NlcyBpbiBsaXRlcmFscy5cbicsCisgJ2xhbWJkYSc6ICdcbicKKyAgICAgICAgICAgJ0xhbWJkYXNcbicKKyAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnICAgbGFtYmRhX2V4cHIgICAgICAgIDo6PSAibGFtYmRhIiBbcGFyYW1ldGVyX2xpc3RdOiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICcgICBsYW1iZGFfZXhwcl9ub2NvbmQgOjo9ICJsYW1iZGEiIFtwYXJhbWV0ZXJfbGlzdF06ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb25fbm9jb25kXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0xhbWJkYSBleHByZXNzaW9ucyAoc29tZXRpbWVzIGNhbGxlZCBsYW1iZGEgZm9ybXMpIGFyZSB1c2VkIHRvICcKKyAgICAgICAgICAgJ2NyZWF0ZVxuJworICAgICAgICAgICAnYW5vbnltb3VzIGZ1bmN0aW9ucy4gVGhlIGV4cHJlc3Npb24gImxhbWJkYSBhcmd1bWVudHM6ICcKKyAgICAgICAgICAgJ2V4cHJlc3Npb24iXG4nCisgICAgICAgICAgICd5aWVsZHMgYSBmdW5jdGlvbiBvYmplY3QuICBUaGUgdW5uYW1lZCBvYmplY3QgYmVoYXZlcyBsaWtlIGEgJworICAgICAgICAgICAnZnVuY3Rpb25cbicKKyAgICAgICAgICAgJ29iamVjdCBkZWZpbmVkIHdpdGg6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGRlZiA8bGFtYmRhPihhcmd1bWVudHMpOlxuJworICAgICAgICAgICAnICAgICAgIHJldHVybiBleHByZXNzaW9uXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1NlZSBzZWN0aW9uIEZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciB0aGUgc3ludGF4IG9mIHBhcmFtZXRlciAnCisgICAgICAgICAgICdsaXN0cy5cbicKKyAgICAgICAgICAgJ05vdGUgdGhhdCBmdW5jdGlvbnMgY3JlYXRlZCB3aXRoIGxhbWJkYSBleHByZXNzaW9ucyBjYW5ub3QgJworICAgICAgICAgICAnY29udGFpblxuJworICAgICAgICAgICAnc3RhdGVtZW50cyBvciBhbm5vdGF0aW9ucy5cbicsCisgJ2xpc3RzJzogJ1xuJworICAgICAgICAgICdMaXN0IGRpc3BsYXlzXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgbGlzdCBkaXNwbGF5IGlzIGEgcG9zc2libHkgZW1wdHkgc2VyaWVzIG9mIGV4cHJlc3Npb25zIGVuY2xvc2VkICcKKyAgICAgICAgICAnaW5cbicKKyAgICAgICAgICAnc3F1YXJlIGJyYWNrZXRzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgbGlzdF9kaXNwbGF5IDo6PSAiWyIgW3N0YXJyZWRfbGlzdCB8IGNvbXByZWhlbnNpb25dICJdIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSBsaXN0IGRpc3BsYXkgeWllbGRzIGEgbmV3IGxpc3Qgb2JqZWN0LCB0aGUgY29udGVudHMgYmVpbmcgJworICAgICAgICAgICdzcGVjaWZpZWRcbicKKyAgICAgICAgICAnYnkgZWl0aGVyIGEgbGlzdCBvZiBleHByZXNzaW9ucyBvciBhIGNvbXByZWhlbnNpb24uICBXaGVuIGEgY29tbWEtXG4nCisgICAgICAgICAgJ3NlcGFyYXRlZCBsaXN0IG9mIGV4cHJlc3Npb25zIGlzIHN1cHBsaWVkLCBpdHMgZWxlbWVudHMgYXJlICcKKyAgICAgICAgICAnZXZhbHVhdGVkXG4nCisgICAgICAgICAgJ2Zyb20gbGVmdCB0byByaWdodCBhbmQgcGxhY2VkIGludG8gdGhlIGxpc3Qgb2JqZWN0IGluIHRoYXQgb3JkZXIuXG4nCisgICAgICAgICAgJ1doZW4gYSBjb21wcmVoZW5zaW9uIGlzIHN1cHBsaWVkLCB0aGUgbGlzdCBpcyBjb25zdHJ1Y3RlZCBmcm9tIHRoZVxuJworICAgICAgICAgICdlbGVtZW50cyByZXN1bHRpbmcgZnJvbSB0aGUgY29tcHJlaGVuc2lvbi5cbicsCisgJ25hbWluZyc6ICdcbicKKyAgICAgICAgICAgJ05hbWluZyBhbmQgYmluZGluZ1xuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnQmluZGluZyBvZiBuYW1lc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqTmFtZXMqIHJlZmVyIHRvIG9iamVjdHMuICBOYW1lcyBhcmUgaW50cm9kdWNlZCBieSBuYW1lIGJpbmRpbmdcbicKKyAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgY29uc3RydWN0cyBiaW5kIG5hbWVzOiBmb3JtYWwgcGFyYW1ldGVycyB0byAnCisgICAgICAgICAgICdmdW5jdGlvbnMsXG4nCisgICAgICAgICAgICciaW1wb3J0IiBzdGF0ZW1lbnRzLCBjbGFzcyBhbmQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgKHRoZXNlIGJpbmQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdjbGFzcyBvciBmdW5jdGlvbiBuYW1lIGluIHRoZSBkZWZpbmluZyBibG9jayksIGFuZCB0YXJnZXRzIHRoYXQgJworICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICdpZGVudGlmaWVycyBpZiBvY2N1cnJpbmcgaW4gYW4gYXNzaWdubWVudCwgImZvciIgbG9vcCBoZWFkZXIsIG9yICcKKyAgICAgICAgICAgJ2FmdGVyXG4nCisgICAgICAgICAgICciYXMiIGluIGEgIndpdGgiIHN0YXRlbWVudCBvciAiZXhjZXB0IiBjbGF1c2UuIFRoZSAiaW1wb3J0IiAnCisgICAgICAgICAgICdzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgJ29mIHRoZSBmb3JtICJmcm9tIC4uLiBpbXBvcnQgKiIgYmluZHMgYWxsIG5hbWVzIGRlZmluZWQgaW4gdGhlXG4nCisgICAgICAgICAgICdpbXBvcnRlZCBtb2R1bGUsIGV4Y2VwdCB0aG9zZSBiZWdpbm5pbmcgd2l0aCBhbiB1bmRlcnNjb3JlLiAgVGhpcyAnCisgICAgICAgICAgICdmb3JtXG4nCisgICAgICAgICAgICdtYXkgb25seSBiZSB1c2VkIGF0IHRoZSBtb2R1bGUgbGV2ZWwuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0EgdGFyZ2V0IG9jY3VycmluZyBpbiBhICJkZWwiIHN0YXRlbWVudCBpcyBhbHNvIGNvbnNpZGVyZWQgYm91bmQgJworICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICd0aGlzIHB1cnBvc2UgKHRob3VnaCB0aGUgYWN0dWFsIHNlbWFudGljcyBhcmUgdG8gdW5iaW5kIHRoZSAnCisgICAgICAgICAgICduYW1lKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRWFjaCBhc3NpZ25tZW50IG9yIGltcG9ydCBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrIGRlZmluZWQgJworICAgICAgICAgICAnYnkgYVxuJworICAgICAgICAgICAnY2xhc3Mgb3IgZnVuY3Rpb24gZGVmaW5pdGlvbiBvciBhdCB0aGUgbW9kdWxlIGxldmVsICh0aGUgJworICAgICAgICAgICAndG9wLWxldmVsXG4nCisgICAgICAgICAgICdjb2RlIGJsb2NrKS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSBuYW1lIGlzIGJvdW5kIGluIGEgYmxvY2ssIGl0IGlzIGEgbG9jYWwgdmFyaWFibGUgb2YgdGhhdCAnCisgICAgICAgICAgICdibG9jayxcbicKKyAgICAgICAgICAgJ3VubGVzcyBkZWNsYXJlZCBhcyAibm9ubG9jYWwiIG9yICJnbG9iYWwiLiAgSWYgYSBuYW1lIGlzIGJvdW5kIGF0ICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbW9kdWxlIGxldmVsLCBpdCBpcyBhIGdsb2JhbCB2YXJpYWJsZS4gIChUaGUgdmFyaWFibGVzIG9mIHRoZSAnCisgICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAgJ2NvZGUgYmxvY2sgYXJlIGxvY2FsIGFuZCBnbG9iYWwuKSAgSWYgYSB2YXJpYWJsZSBpcyB1c2VkIGluIGEgJworICAgICAgICAgICAnY29kZVxuJworICAgICAgICAgICAnYmxvY2sgYnV0IG5vdCBkZWZpbmVkIHRoZXJlLCBpdCBpcyBhICpmcmVlIHZhcmlhYmxlKi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnRWFjaCBvY2N1cnJlbmNlIG9mIGEgbmFtZSBpbiB0aGUgcHJvZ3JhbSB0ZXh0IHJlZmVycyB0byB0aGUgJworICAgICAgICAgICAnKmJpbmRpbmcqXG4nCisgICAgICAgICAgICdvZiB0aGF0IG5hbWUgZXN0YWJsaXNoZWQgYnkgdGhlIGZvbGxvd2luZyBuYW1lIHJlc29sdXRpb24gcnVsZXMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnUmVzb2x1dGlvbiBvZiBuYW1lc1xuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdBICpzY29wZSogZGVmaW5lcyB0aGUgdmlzaWJpbGl0eSBvZiBhIG5hbWUgd2l0aGluIGEgYmxvY2suICBJZiBhICcKKyAgICAgICAgICAgJ2xvY2FsXG4nCisgICAgICAgICAgICd2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGEgYmxvY2ssIGl0cyBzY29wZSBpbmNsdWRlcyB0aGF0IGJsb2NrLiAgSWYgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdkZWZpbml0aW9uIG9jY3VycyBpbiBhIGZ1bmN0aW9uIGJsb2NrLCB0aGUgc2NvcGUgZXh0ZW5kcyB0byBhbnkgJworICAgICAgICAgICAnYmxvY2tzXG4nCisgICAgICAgICAgICdjb250YWluZWQgd2l0aGluIHRoZSBkZWZpbmluZyBvbmUsIHVubGVzcyBhIGNvbnRhaW5lZCBibG9jayAnCisgICAgICAgICAgICdpbnRyb2R1Y2VzXG4nCisgICAgICAgICAgICdhIGRpZmZlcmVudCBiaW5kaW5nIGZvciB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnV2hlbiBhIG5hbWUgaXMgdXNlZCBpbiBhIGNvZGUgYmxvY2ssIGl0IGlzIHJlc29sdmVkIHVzaW5nIHRoZSAnCisgICAgICAgICAgICduZWFyZXN0XG4nCisgICAgICAgICAgICdlbmNsb3Npbmcgc2NvcGUuICBUaGUgc2V0IG9mIGFsbCBzdWNoIHNjb3BlcyB2aXNpYmxlIHRvIGEgY29kZSAnCisgICAgICAgICAgICdibG9ja1xuJworICAgICAgICAgICAiaXMgY2FsbGVkIHRoZSBibG9jaydzICplbnZpcm9ubWVudCouXG4iCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1doZW4gYSBuYW1lIGlzIG5vdCBmb3VuZCBhdCBhbGwsIGEgIk5hbWVFcnJvciIgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICAgJ3JhaXNlZC4gSWZcbicKKyAgICAgICAgICAgJ3RoZSBjdXJyZW50IHNjb3BlIGlzIGEgZnVuY3Rpb24gc2NvcGUsIGFuZCB0aGUgbmFtZSByZWZlcnMgdG8gYSAnCisgICAgICAgICAgICdsb2NhbFxuJworICAgICAgICAgICAndmFyaWFibGUgdGhhdCBoYXMgbm90IHlldCBiZWVuIGJvdW5kIHRvIGEgdmFsdWUgYXQgdGhlIHBvaW50IHdoZXJlICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAnbmFtZSBpcyB1c2VkLCBhbiAiVW5ib3VuZExvY2FsRXJyb3IiIGV4Y2VwdGlvbiBpcyByYWlzZWQuXG4nCisgICAgICAgICAgICciVW5ib3VuZExvY2FsRXJyb3IiIGlzIGEgc3ViY2xhc3Mgb2YgIk5hbWVFcnJvciIuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIGEgbmFtZSBiaW5kaW5nIG9wZXJhdGlvbiBvY2N1cnMgYW55d2hlcmUgd2l0aGluIGEgY29kZSBibG9jaywgJworICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICd1c2VzIG9mIHRoZSBuYW1lIHdpdGhpbiB0aGUgYmxvY2sgYXJlIHRyZWF0ZWQgYXMgcmVmZXJlbmNlcyB0byAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJ2N1cnJlbnQgYmxvY2suICBUaGlzIGNhbiBsZWFkIHRvIGVycm9ycyB3aGVuIGEgbmFtZSBpcyB1c2VkIHdpdGhpbiAnCisgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICdibG9jayBiZWZvcmUgaXQgaXMgYm91bmQuICBUaGlzIHJ1bGUgaXMgc3VidGxlLiAgUHl0aG9uIGxhY2tzXG4nCisgICAgICAgICAgICdkZWNsYXJhdGlvbnMgYW5kIGFsbG93cyBuYW1lIGJpbmRpbmcgb3BlcmF0aW9ucyB0byBvY2N1ciBhbnl3aGVyZVxuJworICAgICAgICAgICAnd2l0aGluIGEgY29kZSBibG9jay4gIFRoZSBsb2NhbCB2YXJpYWJsZXMgb2YgYSBjb2RlIGJsb2NrIGNhbiBiZVxuJworICAgICAgICAgICAnZGV0ZXJtaW5lZCBieSBzY2FubmluZyB0aGUgZW50aXJlIHRleHQgb2YgdGhlIGJsb2NrIGZvciBuYW1lICcKKyAgICAgICAgICAgJ2JpbmRpbmdcbicKKyAgICAgICAgICAgJ29wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0lmIHRoZSAiZ2xvYmFsIiBzdGF0ZW1lbnQgb2NjdXJzIHdpdGhpbiBhIGJsb2NrLCBhbGwgdXNlcyBvZiB0aGUgJworICAgICAgICAgICAnbmFtZVxuJworICAgICAgICAgICAnc3BlY2lmaWVkIGluIHRoZSBzdGF0ZW1lbnQgcmVmZXIgdG8gdGhlIGJpbmRpbmcgb2YgdGhhdCBuYW1lIGluICcKKyAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAndG9wLWxldmVsIG5hbWVzcGFjZS4gIE5hbWVzIGFyZSByZXNvbHZlZCBpbiB0aGUgdG9wLWxldmVsICcKKyAgICAgICAgICAgJ25hbWVzcGFjZSBieVxuJworICAgICAgICAgICAnc2VhcmNoaW5nIHRoZSBnbG9iYWwgbmFtZXNwYWNlLCBpLmUuIHRoZSBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZVxuJworICAgICAgICAgICAnY29udGFpbmluZyB0aGUgY29kZSBibG9jaywgYW5kIHRoZSBidWlsdGlucyBuYW1lc3BhY2UsIHRoZSAnCisgICAgICAgICAgICduYW1lc3BhY2VcbicKKyAgICAgICAgICAgJ29mIHRoZSBtb2R1bGUgImJ1aWx0aW5zIi4gIFRoZSBnbG9iYWwgbmFtZXNwYWNlIGlzIHNlYXJjaGVkICcKKyAgICAgICAgICAgJ2ZpcnN0LiAgSWZcbicKKyAgICAgICAgICAgJ3RoZSBuYW1lIGlzIG5vdCBmb3VuZCB0aGVyZSwgdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBpcyBzZWFyY2hlZC4gICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnImdsb2JhbCIgc3RhdGVtZW50IG11c3QgcHJlY2VkZSBhbGwgdXNlcyBvZiB0aGUgbmFtZS5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnVGhlICJnbG9iYWwiIHN0YXRlbWVudCBoYXMgdGhlIHNhbWUgc2NvcGUgYXMgYSBuYW1lIGJpbmRpbmcgJworICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICdpbiB0aGUgc2FtZSBibG9jay4gIElmIHRoZSBuZWFyZXN0IGVuY2xvc2luZyBzY29wZSBmb3IgYSBmcmVlICcKKyAgICAgICAgICAgJ3ZhcmlhYmxlXG4nCisgICAgICAgICAgICdjb250YWlucyBhIGdsb2JhbCBzdGF0ZW1lbnQsIHRoZSBmcmVlIHZhcmlhYmxlIGlzIHRyZWF0ZWQgYXMgYSAnCisgICAgICAgICAgICdnbG9iYWwuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAibm9ubG9jYWwiIHN0YXRlbWVudCBjYXVzZXMgY29ycmVzcG9uZGluZyBuYW1lcyB0byByZWZlciB0b1xuJworICAgICAgICAgICAncHJldmlvdXNseSBib3VuZCB2YXJpYWJsZXMgaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIGZ1bmN0aW9uICcKKyAgICAgICAgICAgJ3Njb3BlLlxuJworICAgICAgICAgICAnIlN5bnRheEVycm9yIiBpcyByYWlzZWQgYXQgY29tcGlsZSB0aW1lIGlmIHRoZSBnaXZlbiBuYW1lIGRvZXMgJworICAgICAgICAgICAnbm90XG4nCisgICAgICAgICAgICdleGlzdCBpbiBhbnkgZW5jbG9zaW5nIGZ1bmN0aW9uIHNjb3BlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdUaGUgbmFtZXNwYWNlIGZvciBhIG1vZHVsZSBpcyBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgdGhlIGZpcnN0IHRpbWUgJworICAgICAgICAgICAnYVxuJworICAgICAgICAgICAnbW9kdWxlIGlzIGltcG9ydGVkLiAgVGhlIG1haW4gbW9kdWxlIGZvciBhIHNjcmlwdCBpcyBhbHdheXMgJworICAgICAgICAgICAnY2FsbGVkXG4nCisgICAgICAgICAgICciX19tYWluX18iLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdDbGFzcyBkZWZpbml0aW9uIGJsb2NrcyBhbmQgYXJndW1lbnRzIHRvICJleGVjKCkiIGFuZCAiZXZhbCgpIiAnCisgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgJ3NwZWNpYWwgaW4gdGhlIGNvbnRleHQgb2YgbmFtZSByZXNvbHV0aW9uLiBBIGNsYXNzIGRlZmluaXRpb24gaXMgJworICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgJ2V4ZWN1dGFibGUgc3RhdGVtZW50IHRoYXQgbWF5IHVzZSBhbmQgZGVmaW5lIG5hbWVzLiBUaGVzZSAnCisgICAgICAgICAgICdyZWZlcmVuY2VzXG4nCisgICAgICAgICAgICdmb2xsb3cgdGhlIG5vcm1hbCBydWxlcyBmb3IgbmFtZSByZXNvbHV0aW9uIHdpdGggYW4gZXhjZXB0aW9uICcKKyAgICAgICAgICAgJ3RoYXRcbicKKyAgICAgICAgICAgJ3VuYm91bmQgbG9jYWwgdmFyaWFibGVzIGFyZSBsb29rZWQgdXAgaW4gdGhlIGdsb2JhbCBuYW1lc3BhY2UuICcKKyAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAnbmFtZXNwYWNlIG9mIHRoZSBjbGFzcyBkZWZpbml0aW9uIGJlY29tZXMgdGhlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICd0aGUgY2xhc3MuIFRoZSBzY29wZSBvZiBuYW1lcyBkZWZpbmVkIGluIGEgY2xhc3MgYmxvY2sgaXMgbGltaXRlZCAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAndGhlIGNsYXNzIGJsb2NrOyBpdCBkb2VzIG5vdCBleHRlbmQgdG8gdGhlIGNvZGUgYmxvY2tzIG9mIG1ldGhvZHMgJworICAgICAgICAgICAnLS1cbicKKyAgICAgICAgICAgJ3RoaXMgaW5jbHVkZXMgY29tcHJlaGVuc2lvbnMgYW5kIGdlbmVyYXRvciBleHByZXNzaW9ucyBzaW5jZSB0aGV5ICcKKyAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAnaW1wbGVtZW50ZWQgdXNpbmcgYSBmdW5jdGlvbiBzY29wZS4gIFRoaXMgbWVhbnMgdGhhdCB0aGUgJworICAgICAgICAgICAnZm9sbG93aW5nXG4nCisgICAgICAgICAgICd3aWxsIGZhaWw6XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyAgIGNsYXNzIEE6XG4nCisgICAgICAgICAgICcgICAgICAgYSA9IDQyXG4nCisgICAgICAgICAgICcgICAgICAgYiA9IGxpc3QoYSArIGkgZm9yIGkgaW4gcmFuZ2UoMTApKVxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ0J1aWx0aW5zIGFuZCByZXN0cmljdGVkIGV4ZWN1dGlvblxuJworICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSBidWlsdGlucyBuYW1lc3BhY2UgYXNzb2NpYXRlZCB3aXRoIHRoZSBleGVjdXRpb24gb2YgYSBjb2RlICcKKyAgICAgICAgICAgJ2Jsb2NrXG4nCisgICAgICAgICAgICdpcyBhY3R1YWxseSBmb3VuZCBieSBsb29raW5nIHVwIHRoZSBuYW1lICJfX2J1aWx0aW5zX18iIGluIGl0cyAnCisgICAgICAgICAgICdnbG9iYWxcbicKKyAgICAgICAgICAgJ25hbWVzcGFjZTsgdGhpcyBzaG91bGQgYmUgYSBkaWN0aW9uYXJ5IG9yIGEgbW9kdWxlIChpbiB0aGUgbGF0dGVyICcKKyAgICAgICAgICAgJ2Nhc2VcbicKKyAgICAgICAgICAgInRoZSBtb2R1bGUncyBkaWN0aW9uYXJ5IGlzIHVzZWQpLiAgQnkgZGVmYXVsdCwgd2hlbiBpbiB0aGUgIgorICAgICAgICAgICAnIl9fbWFpbl9fIlxuJworICAgICAgICAgICAnbW9kdWxlLCAiX19idWlsdGluc19fIiBpcyB0aGUgYnVpbHQtaW4gbW9kdWxlICJidWlsdGlucyI7IHdoZW4gaW4gJworICAgICAgICAgICAnYW55XG4nCisgICAgICAgICAgICdvdGhlciBtb2R1bGUsICJfX2J1aWx0aW5zX18iIGlzIGFuIGFsaWFzIGZvciB0aGUgZGljdGlvbmFyeSBvZiAnCisgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgJyJidWlsdGlucyIgbW9kdWxlIGl0c2VsZi4gICJfX2J1aWx0aW5zX18iIGNhbiBiZSBzZXQgdG8gYSAnCisgICAgICAgICAgICd1c2VyLWNyZWF0ZWRcbicKKyAgICAgICAgICAgJ2RpY3Rpb25hcnkgdG8gY3JlYXRlIGEgd2VhayBmb3JtIG9mIHJlc3RyaWN0ZWQgZXhlY3V0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcqKkNQeXRob24gaW1wbGVtZW50YXRpb24gZGV0YWlsOioqIFVzZXJzIHNob3VsZCBub3QgdG91Y2hcbicKKyAgICAgICAgICAgJyJfX2J1aWx0aW5zX18iOyBpdCBpcyBzdHJpY3RseSBhbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWwuICBVc2Vyc1xuJworICAgICAgICAgICAnd2FudGluZyB0byBvdmVycmlkZSB2YWx1ZXMgaW4gdGhlIGJ1aWx0aW5zIG5hbWVzcGFjZSBzaG91bGQgJworICAgICAgICAgICAnImltcG9ydCJcbicKKyAgICAgICAgICAgJ3RoZSAiYnVpbHRpbnMiIG1vZHVsZSBhbmQgbW9kaWZ5IGl0cyBhdHRyaWJ1dGVzIGFwcHJvcHJpYXRlbHkuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW50ZXJhY3Rpb24gd2l0aCBkeW5hbWljIGZlYXR1cmVzXG4nCisgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnTmFtZSByZXNvbHV0aW9uIG9mIGZyZWUgdmFyaWFibGVzIG9jY3VycyBhdCBydW50aW1lLCBub3QgYXQgJworICAgICAgICAgICAnY29tcGlsZVxuJworICAgICAgICAgICAndGltZS4gVGhpcyBtZWFucyB0aGF0IHRoZSBmb2xsb3dpbmcgY29kZSB3aWxsIHByaW50IDQyOlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICBpID0gMTBcbicKKyAgICAgICAgICAgJyAgIGRlZiBmKCk6XG4nCisgICAgICAgICAgICcgICAgICAgcHJpbnQoaSlcbicKKyAgICAgICAgICAgJyAgIGkgPSA0MlxuJworICAgICAgICAgICAnICAgZigpXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZXJlIGFyZSBzZXZlcmFsIGNhc2VzIHdoZXJlIFB5dGhvbiBzdGF0ZW1lbnRzIGFyZSBpbGxlZ2FsIHdoZW4gJworICAgICAgICAgICAndXNlZFxuJworICAgICAgICAgICAnaW4gY29uanVuY3Rpb24gd2l0aCBuZXN0ZWQgc2NvcGVzIHRoYXQgY29udGFpbiBmcmVlIHZhcmlhYmxlcy5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSWYgYSB2YXJpYWJsZSBpcyByZWZlcmVuY2VkIGluIGFuIGVuY2xvc2luZyBzY29wZSwgaXQgaXMgaWxsZWdhbCAnCisgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAnZGVsZXRlIHRoZSBuYW1lLiAgQW4gZXJyb3Igd2lsbCBiZSByZXBvcnRlZCBhdCBjb21waWxlIHRpbWUuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJ1RoZSAiZXZhbCgpIiBhbmQgImV4ZWMoKSIgZnVuY3Rpb25zIGRvIG5vdCBoYXZlIGFjY2VzcyB0byB0aGUgJworICAgICAgICAgICAnZnVsbFxuJworICAgICAgICAgICAnZW52aXJvbm1lbnQgZm9yIHJlc29sdmluZyBuYW1lcy4gIE5hbWVzIG1heSBiZSByZXNvbHZlZCBpbiB0aGUgJworICAgICAgICAgICAnbG9jYWxcbicKKyAgICAgICAgICAgJ2FuZCBnbG9iYWwgbmFtZXNwYWNlcyBvZiB0aGUgY2FsbGVyLiAgRnJlZSB2YXJpYWJsZXMgYXJlIG5vdCAnCisgICAgICAgICAgICdyZXNvbHZlZFxuJworICAgICAgICAgICAnaW4gdGhlIG5lYXJlc3QgZW5jbG9zaW5nIG5hbWVzcGFjZSwgYnV0IGluIHRoZSBnbG9iYWwgbmFtZXNwYWNlLiAgJworICAgICAgICAgICAnWzFdXG4nCisgICAgICAgICAgICdUaGUgImV4ZWMoKSIgYW5kICJldmFsKCkiIGZ1bmN0aW9ucyBoYXZlIG9wdGlvbmFsIGFyZ3VtZW50cyB0b1xuJworICAgICAgICAgICAnb3ZlcnJpZGUgdGhlIGdsb2JhbCBhbmQgbG9jYWwgbmFtZXNwYWNlLiAgSWYgb25seSBvbmUgbmFtZXNwYWNlICcKKyAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICdzcGVjaWZpZWQsIGl0IGlzIHVzZWQgZm9yIGJvdGguXG4nLAorICdub25sb2NhbCc6ICdcbicKKyAgICAgICAgICAgICAnVGhlICJub25sb2NhbCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgbm9ubG9jYWxfc3RtdCA6Oj0gIm5vbmxvY2FsIiBpZGVudGlmaWVyICgiLCIgaWRlbnRpZmllcikqXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgIm5vbmxvY2FsIiBzdGF0ZW1lbnQgY2F1c2VzIHRoZSBsaXN0ZWQgaWRlbnRpZmllcnMgdG8gcmVmZXIgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICdwcmV2aW91c2x5IGJvdW5kIHZhcmlhYmxlcyBpbiB0aGUgbmVhcmVzdCBlbmNsb3Npbmcgc2NvcGUgJworICAgICAgICAgICAgICdleGNsdWRpbmdcbicKKyAgICAgICAgICAgICAnZ2xvYmFscy4gVGhpcyBpcyBpbXBvcnRhbnQgYmVjYXVzZSB0aGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgJworICAgICAgICAgICAgICdiaW5kaW5nIGlzXG4nCisgICAgICAgICAgICAgJ3RvIHNlYXJjaCB0aGUgbG9jYWwgbmFtZXNwYWNlIGZpcnN0LiAgVGhlIHN0YXRlbWVudCBhbGxvd3NcbicKKyAgICAgICAgICAgICAnZW5jYXBzdWxhdGVkIGNvZGUgdG8gcmViaW5kIHZhcmlhYmxlcyBvdXRzaWRlIG9mIHRoZSBsb2NhbCAnCisgICAgICAgICAgICAgJ3Njb3BlXG4nCisgICAgICAgICAgICAgJ2Jlc2lkZXMgdGhlIGdsb2JhbCAobW9kdWxlKSBzY29wZS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50LCB1bmxpa2UgdGhvc2UgbGlzdGVkIGluICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICciZ2xvYmFsIiBzdGF0ZW1lbnQsIG11c3QgcmVmZXIgdG8gcHJlLWV4aXN0aW5nIGJpbmRpbmdzIGluIGFuXG4nCisgICAgICAgICAgICAgJ2VuY2xvc2luZyBzY29wZSAodGhlIHNjb3BlIGluIHdoaWNoIGEgbmV3IGJpbmRpbmcgc2hvdWxkIGJlICcKKyAgICAgICAgICAgICAnY3JlYXRlZFxuJworICAgICAgICAgICAgICdjYW5ub3QgYmUgZGV0ZXJtaW5lZCB1bmFtYmlndW91c2x5KS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05hbWVzIGxpc3RlZCBpbiBhICJub25sb2NhbCIgc3RhdGVtZW50IG11c3Qgbm90IGNvbGxpZGUgd2l0aCAnCisgICAgICAgICAgICAgJ3ByZS1cbicKKyAgICAgICAgICAgICAnZXhpc3RpbmcgYmluZGluZ3MgaW4gdGhlIGxvY2FsIHNjb3BlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VlIGFsc286XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICoqUEVQIDMxMDQqKiAtIEFjY2VzcyB0byBOYW1lcyBpbiBPdXRlciBTY29wZXNcbicKKyAgICAgICAgICAgICAnICAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlICJub25sb2NhbCIgc3RhdGVtZW50LlxuJywKKyAnbnVtYmVycyc6ICdcbicKKyAgICAgICAgICAgICdOdW1lcmljIGxpdGVyYWxzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1RoZXJlIGFyZSB0aHJlZSB0eXBlcyBvZiBudW1lcmljIGxpdGVyYWxzOiBpbnRlZ2VycywgZmxvYXRpbmcgJworICAgICAgICAgICAgJ3BvaW50XG4nCisgICAgICAgICAgICAnbnVtYmVycywgYW5kIGltYWdpbmFyeSBudW1iZXJzLiAgVGhlcmUgYXJlIG5vIGNvbXBsZXggbGl0ZXJhbHNcbicKKyAgICAgICAgICAgICcoY29tcGxleCBudW1iZXJzIGNhbiBiZSBmb3JtZWQgYnkgYWRkaW5nIGEgcmVhbCBudW1iZXIgYW5kIGFuXG4nCisgICAgICAgICAgICAnaW1hZ2luYXJ5IG51bWJlcikuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnTm90ZSB0aGF0IG51bWVyaWMgbGl0ZXJhbHMgZG8gbm90IGluY2x1ZGUgYSBzaWduOyBhIHBocmFzZSBsaWtlICcKKyAgICAgICAgICAgICciLTEiXG4nCisgICAgICAgICAgICAnaXMgYWN0dWFsbHkgYW4gZXhwcmVzc2lvbiBjb21wb3NlZCBvZiB0aGUgdW5hcnkgb3BlcmF0b3IgXCciLSJcJyAnCisgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgJ2xpdGVyYWwgIjEiLlxuJywKKyAnbnVtZXJpYy10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICdFbXVsYXRpbmcgbnVtZXJpYyB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGVtdWxhdGUgbnVtZXJpYyAnCisgICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgICdNZXRob2RzIGNvcnJlc3BvbmRpbmcgdG8gb3BlcmF0aW9ucyB0aGF0IGFyZSBub3Qgc3VwcG9ydGVkICcKKyAgICAgICAgICAgICAgICAgICdieSB0aGVcbicKKyAgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYXRpb25zIGZvclxuJworICAgICAgICAgICAgICAgICAgJ25vbi1pbnRlZ3JhbCBudW1iZXJzKSBzaG91bGQgYmUgbGVmdCB1bmRlZmluZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWRkX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWF0bXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fdHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3hvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX29yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgVGhlc2UgbWV0aG9kcyBhcmUgY2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYmluYXJ5ICcKKyAgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAgJyJkaXZtb2QoKSIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8IikuICBGb3IgJworICAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGV2YWx1YXRlIHRoZSBleHByZXNzaW9uICJ4ICsgeSIsIHdoZXJlICp4KiBpcyBhbiAnCisgICAgICAgICAgICAgICAgICAnaW5zdGFuY2Ugb2YgYVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgJworICAgICAgICAgICAgICAgICAgJ2NhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGUgIl9fZGl2bW9kX18oKSIgbWV0aG9kIHNob3VsZCBiZSB0aGUgZXF1aXZhbGVudCB0byAnCisgICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgICcgICAiX19mbG9vcmRpdl9fKCkiIGFuZCAiX19tb2RfXygpIjsgaXQgc2hvdWxkIG5vdCBiZSAnCisgICAgICAgICAgICAgICAgICAncmVsYXRlZCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQgdG8gYWNjZXB0XG4nCisgICAgICAgICAgICAgICAgICAnICAgYW4gb3B0aW9uYWwgdGhpcmQgYXJndW1lbnQgaWYgdGhlIHRlcm5hcnkgdmVyc2lvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICAnICAgInBvdygpIiBmdW5jdGlvbiBpcyB0byBiZSBzdXBwb3J0ZWQuXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgICd3aXRoIHRoZVxuJworICAgICAgICAgICAgICAgICAgJyAgIHN1cHBsaWVkIGFyZ3VtZW50cywgaXQgc2hvdWxkIHJldHVybiAiTm90SW1wbGVtZW50ZWQiLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JhZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc3ViX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JtYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jtb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yZGl2bW9kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Jsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19ycnNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3J4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICcgICAicG93KCkiLCAiKioiLCAiPDwiLCAiPj4iLCAiJiIsICJeIiwgInwiKSB3aXRoIHJlZmxlY3RlZCAnCisgICAgICAgICAgICAgICAgICAnKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICAnICAgb3BlcmFuZHMuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG9ubHkgY2FsbGVkIGlmIHRoZSBsZWZ0ICcKKyAgICAgICAgICAgICAgICAgICdvcGVyYW5kIGRvZXNcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWzNdIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAgJ29wZXJhbmRzIGFyZSBvZlxuJworICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCB0eXBlcy4gWzRdIEZvciBpbnN0YW5jZSwgdG8gZXZhbHVhdGUgdGhlICcKKyAgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgICcgICB5Iiwgd2hlcmUgKnkqIGlzIGFuIGluc3RhbmNlIG9mIGEgY2xhc3MgdGhhdCBoYXMgYW4gJworICAgICAgICAgICAgICAgICAgJyJfX3JzdWJfXygpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICAncmV0dXJuc1xuJworICAgICAgICAgICAgICAgICAgJyAgICpOb3RJbXBsZW1lbnRlZCouXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IHRlcm5hcnkgInBvdygpIiB3aWxsIG5vdCB0cnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICAnIl9fcnBvd19fKCkiICh0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICIgICBOb3RlOiBJZiB0aGUgcmlnaHQgb3BlcmFuZCdzIHR5cGUgaXMgYSBzdWJjbGFzcyBvZiB0aGUgIgorICAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyB0eXBlIGFuZCB0aGF0IHN1YmNsYXNzIHByb3ZpZGVzIHRoZSAiCisgICAgICAgICAgICAgICAgICAncmVmbGVjdGVkIG1ldGhvZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICAndGhlIGxlZnRcbicKKyAgICAgICAgICAgICAgICAgICIgICAgIG9wZXJhbmQncyBub24tcmVmbGVjdGVkIG1ldGhvZC4gIFRoaXMgYmVoYXZpb3IgYWxsb3dzICIKKyAgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICAiICAgICB0byBvdmVycmlkZSB0aGVpciBhbmNlc3RvcnMnIG9wZXJhdGlvbnMuXG4iCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lzdWJfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0cnVlZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWZsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lwb3dfXyhzZWxmLCBvdGhlclssIG1vZHVsb10pXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pYW5kX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGF1Z21lbnRlZCAnCisgICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIGFzc2lnbm1lbnRzICgiKz0iLCAiLT0iLCAiKj0iLCAiQD0iLCAiLz0iLCAiLy89IiwgIiU9IiwgJworICAgICAgICAgICAgICAgICAgJyIqKj0iLFxuJworICAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAnYXR0ZW1wdCB0b1xuJworICAgICAgICAgICAgICAgICAgJyAgIGRvIHRoZSBvcGVyYXRpb24gaW4tcGxhY2UgKG1vZGlmeWluZyAqc2VsZiopIGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICcgICAod2hpY2ggY291bGQgYmUsIGJ1dCBkb2VzIG5vdCBoYXZlIHRvIGJlLCAqc2VsZiopLiAgSWYgYSAnCisgICAgICAgICAgICAgICAgICAnc3BlY2lmaWNcbicKKyAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICAnYmFjayB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICcgICBub3JtYWwgbWV0aG9kcy4gIEZvciBpbnN0YW5jZSwgaWYgKngqIGlzIGFuIGluc3RhbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgICdhIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICAnICAgd2l0aCBhbiAiX19pYWRkX18oKSIgbWV0aG9kLCAieCArPSB5IiBpcyBlcXVpdmFsZW50IHRvICcKKyAgICAgICAgICAgICAgICAgICcieCA9XG4nCisgICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnInkuX19yYWRkX18oeCkiIGFyZVxuJworICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpZGVyZWQsIGFzIHdpdGggdGhlIGV2YWx1YXRpb24gb2YgInggKyB5Ii4gSW4gJworICAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgICcgICBzaXR1YXRpb25zLCBhdWdtZW50ZWQgYXNzaWdubWVudCBjYW4gcmVzdWx0IGluICcKKyAgICAgICAgICAgICAgICAgICd1bmV4cGVjdGVkIGVycm9yc1xuJworICAgICAgICAgICAgICAgICAgIiAgIChzZWUgV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiBleGNlcHRpb24gIgorICAgICAgICAgICAgICAgICAgJ3doZW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAnICAgYWRkaXRpb24gd29ya3M/KSwgYnV0IHRoaXMgYmVoYXZpb3IgaXMgaW4gZmFjdCBwYXJ0IG9mICcKKyAgICAgICAgICAgICAgICAgICd0aGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAgJyAgIG1vZGVsLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lZ19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG9zX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19hYnNfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludmVydF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgdW5hcnkgYXJpdGhtZXRpYyBvcGVyYXRpb25zICcKKyAgICAgICAgICAgICAgICAgICcoIi0iLCAiKyIsXG4nCisgICAgICAgICAgICAgICAgICAnICAgImFicygpIiBhbmQgIn4iKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb21wbGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbnRfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb2F0X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgImNvbXBsZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgICciaW50KCkiLFxuJworICAgICAgICAgICAgICAgICAgJyAgICJmbG9hdCgpIiBhbmQgInJvdW5kKCkiLiAgU2hvdWxkIHJldHVybiBhIHZhbHVlIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVcbicKKyAgICAgICAgICAgICAgICAgICcgICB0eXBlLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2luZGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5pbmRleCgpIiwgYW5kIHdoZW5ldmVyICcKKyAgICAgICAgICAgICAgICAgICdQeXRob24gbmVlZHNcbicKKyAgICAgICAgICAgICAgICAgICcgICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgJworICAgICAgICAgICAgICAgICAgJ29iamVjdCAoc3VjaFxuJworICAgICAgICAgICAgICAgICAgJyAgIGFzIGluIHNsaWNpbmcsIG9yIGluIHRoZSBidWlsdC1pbiAiYmluKCkiLCAiaGV4KCkiIGFuZCAnCisgICAgICAgICAgICAgICAgICAnIm9jdCgpIlxuJworICAgICAgICAgICAgICAgICAgJyAgIGZ1bmN0aW9ucykuIFByZXNlbmNlIG9mIHRoaXMgbWV0aG9kIGluZGljYXRlcyB0aGF0IHRoZSAnCisgICAgICAgICAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IEluIG9yZGVyIHRvIGhhdmUgYSBjb2hlcmVudCBpbnRlZ2VyIHR5cGUgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgICAgICAgICAnICAgICAiX19pbmRleF9fKCkiIGlzIGRlZmluZWQgIl9faW50X18oKSIgc2hvdWxkIGFsc28gYmUgJworICAgICAgICAgICAgICAgICAgJ2RlZmluZWQsIGFuZFxuJworICAgICAgICAgICAgICAgICAgJyAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJywKKyAnb2JqZWN0cyc6ICdcbicKKyAgICAgICAgICAgICdPYmplY3RzLCB2YWx1ZXMgYW5kIHR5cGVzXG4nCisgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIipPYmplY3RzKiBhcmUgUHl0aG9uJ3MgYWJzdHJhY3Rpb24gZm9yIGRhdGEuICBBbGwgZGF0YSBpbiBhICIKKyAgICAgICAgICAgICdQeXRob25cbicKKyAgICAgICAgICAgICdwcm9ncmFtIGlzIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMgb3IgYnkgcmVsYXRpb25zIGJldHdlZW4gJworICAgICAgICAgICAgJ29iamVjdHMuIChJblxuJworICAgICAgICAgICAgJ2Egc2Vuc2UsIGFuZCBpbiBjb25mb3JtYW5jZSB0byBWb24gTmV1bWFublwncyBtb2RlbCBvZiBhICJzdG9yZWRcbicKKyAgICAgICAgICAgICdwcm9ncmFtIGNvbXB1dGVyLCIgY29kZSBpcyBhbHNvIHJlcHJlc2VudGVkIGJ5IG9iamVjdHMuKVxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgIkV2ZXJ5IG9iamVjdCBoYXMgYW4gaWRlbnRpdHksIGEgdHlwZSBhbmQgYSB2YWx1ZS4gIEFuIG9iamVjdCdzXG4iCisgICAgICAgICAgICAnKmlkZW50aXR5KiBuZXZlciBjaGFuZ2VzIG9uY2UgaXQgaGFzIGJlZW4gY3JlYXRlZDsgeW91IG1heSB0aGluayAnCisgICAgICAgICAgICAnb2YgaXRcbicKKyAgICAgICAgICAgICdhcyB0aGUgb2JqZWN0XCdzIGFkZHJlc3MgaW4gbWVtb3J5LiAgVGhlIFwnImlzIlwnIG9wZXJhdG9yICcKKyAgICAgICAgICAgICdjb21wYXJlcyB0aGVcbicKKyAgICAgICAgICAgICdpZGVudGl0eSBvZiB0d28gb2JqZWN0czsgdGhlICJpZCgpIiBmdW5jdGlvbiByZXR1cm5zIGFuIGludGVnZXJcbicKKyAgICAgICAgICAgICdyZXByZXNlbnRpbmcgaXRzIGlkZW50aXR5LlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyoqQ1B5dGhvbiBpbXBsZW1lbnRhdGlvbiBkZXRhaWw6KiogRm9yIENQeXRob24sICJpZCh4KSIgaXMgdGhlICcKKyAgICAgICAgICAgICdtZW1vcnlcbicKKyAgICAgICAgICAgICdhZGRyZXNzIHdoZXJlICJ4IiBpcyBzdG9yZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAiQW4gb2JqZWN0J3MgdHlwZSBkZXRlcm1pbmVzIHRoZSBvcGVyYXRpb25zIHRoYXQgdGhlIG9iamVjdCAiCisgICAgICAgICAgICAnc3VwcG9ydHNcbicKKyAgICAgICAgICAgICcoZS5nLiwgImRvZXMgaXQgaGF2ZSBhIGxlbmd0aD8iKSBhbmQgYWxzbyBkZWZpbmVzIHRoZSBwb3NzaWJsZSAnCisgICAgICAgICAgICAndmFsdWVzXG4nCisgICAgICAgICAgICAnZm9yIG9iamVjdHMgb2YgdGhhdCB0eXBlLiAgVGhlICJ0eXBlKCkiIGZ1bmN0aW9uIHJldHVybnMgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAndHlwZSAod2hpY2ggaXMgYW4gb2JqZWN0IGl0c2VsZikuICBMaWtlIGl0cyBpZGVudGl0eSwgYW4gJworICAgICAgICAgICAgIm9iamVjdCdzXG4iCisgICAgICAgICAgICAnKnR5cGUqIGlzIGFsc28gdW5jaGFuZ2VhYmxlLiBbMV1cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdUaGUgKnZhbHVlKiBvZiBzb21lIG9iamVjdHMgY2FuIGNoYW5nZS4gIE9iamVjdHMgd2hvc2UgdmFsdWUgY2FuXG4nCisgICAgICAgICAgICAnY2hhbmdlIGFyZSBzYWlkIHRvIGJlICptdXRhYmxlKjsgb2JqZWN0cyB3aG9zZSB2YWx1ZSBpcyAnCisgICAgICAgICAgICAndW5jaGFuZ2VhYmxlXG4nCisgICAgICAgICAgICAnb25jZSB0aGV5IGFyZSBjcmVhdGVkIGFyZSBjYWxsZWQgKmltbXV0YWJsZSouIChUaGUgdmFsdWUgb2YgYW5cbicKKyAgICAgICAgICAgICdpbW11dGFibGUgY29udGFpbmVyIG9iamVjdCB0aGF0IGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIGEgJworICAgICAgICAgICAgJ211dGFibGVcbicKKyAgICAgICAgICAgICJvYmplY3QgY2FuIGNoYW5nZSB3aGVuIHRoZSBsYXR0ZXIncyB2YWx1ZSBpcyBjaGFuZ2VkOyBob3dldmVyICIKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgaXMgc3RpbGwgY29uc2lkZXJlZCBpbW11dGFibGUsIGJlY2F1c2UgdGhlIGNvbGxlY3Rpb24gJworICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAnb2JqZWN0cyBpdCBjb250YWlucyBjYW5ub3QgYmUgY2hhbmdlZC4gIFNvLCBpbW11dGFiaWxpdHkgaXMgbm90XG4nCisgICAgICAgICAgICAnc3RyaWN0bHkgdGhlIHNhbWUgYXMgaGF2aW5nIGFuIHVuY2hhbmdlYWJsZSB2YWx1ZSwgaXQgaXMgbW9yZSAnCisgICAgICAgICAgICAnc3VidGxlLilcbicKKyAgICAgICAgICAgICJBbiBvYmplY3QncyBtdXRhYmlsaXR5IGlzIGRldGVybWluZWQgYnkgaXRzIHR5cGU7IGZvciBpbnN0YW5jZSxcbiIKKyAgICAgICAgICAgICdudW1iZXJzLCBzdHJpbmdzIGFuZCB0dXBsZXMgYXJlIGltbXV0YWJsZSwgd2hpbGUgZGljdGlvbmFyaWVzICcKKyAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICdsaXN0cyBhcmUgbXV0YWJsZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdPYmplY3RzIGFyZSBuZXZlciBleHBsaWNpdGx5IGRlc3Ryb3llZDsgaG93ZXZlciwgd2hlbiB0aGV5ICcKKyAgICAgICAgICAgICdiZWNvbWVcbicKKyAgICAgICAgICAgICd1bnJlYWNoYWJsZSB0aGV5IG1heSBiZSBnYXJiYWdlLWNvbGxlY3RlZC4gIEFuIGltcGxlbWVudGF0aW9uIGlzXG4nCisgICAgICAgICAgICAnYWxsb3dlZCB0byBwb3N0cG9uZSBnYXJiYWdlIGNvbGxlY3Rpb24gb3Igb21pdCBpdCBhbHRvZ2V0aGVyIC0tLSAnCisgICAgICAgICAgICAnaXQgaXNcbicKKyAgICAgICAgICAgICdhIG1hdHRlciBvZiBpbXBsZW1lbnRhdGlvbiBxdWFsaXR5IGhvdyBnYXJiYWdlIGNvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdpbXBsZW1lbnRlZCwgYXMgbG9uZyBhcyBubyBvYmplY3RzIGFyZSBjb2xsZWN0ZWQgdGhhdCBhcmUgc3RpbGxcbicKKyAgICAgICAgICAgICdyZWFjaGFibGUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBDUHl0aG9uIGN1cnJlbnRseSB1c2VzIGEgJworICAgICAgICAgICAgJ3JlZmVyZW5jZS1cbicKKyAgICAgICAgICAgICdjb3VudGluZyBzY2hlbWUgd2l0aCAob3B0aW9uYWwpIGRlbGF5ZWQgZGV0ZWN0aW9uIG9mIGN5Y2xpY2FsbHkgJworICAgICAgICAgICAgJ2xpbmtlZFxuJworICAgICAgICAgICAgJ2dhcmJhZ2UsIHdoaWNoIGNvbGxlY3RzIG1vc3Qgb2JqZWN0cyBhcyBzb29uIGFzIHRoZXkgYmVjb21lXG4nCisgICAgICAgICAgICAndW5yZWFjaGFibGUsIGJ1dCBpcyBub3QgZ3VhcmFudGVlZCB0byBjb2xsZWN0IGdhcmJhZ2UgY29udGFpbmluZ1xuJworICAgICAgICAgICAgJ2NpcmN1bGFyIHJlZmVyZW5jZXMuICBTZWUgdGhlIGRvY3VtZW50YXRpb24gb2YgdGhlICJnYyIgbW9kdWxlICcKKyAgICAgICAgICAgICdmb3JcbicKKyAgICAgICAgICAgICdpbmZvcm1hdGlvbiBvbiBjb250cm9sbGluZyB0aGUgY29sbGVjdGlvbiBvZiBjeWNsaWMgZ2FyYmFnZS4gJworICAgICAgICAgICAgJ090aGVyXG4nCisgICAgICAgICAgICAnaW1wbGVtZW50YXRpb25zIGFjdCBkaWZmZXJlbnRseSBhbmQgQ1B5dGhvbiBtYXkgY2hhbmdlLiBEbyBub3QgJworICAgICAgICAgICAgJ2RlcGVuZFxuJworICAgICAgICAgICAgJ29uIGltbWVkaWF0ZSBmaW5hbGl6YXRpb24gb2Ygb2JqZWN0cyB3aGVuIHRoZXkgYmVjb21lIHVucmVhY2hhYmxlICcKKyAgICAgICAgICAgICcoc29cbicKKyAgICAgICAgICAgICd5b3Ugc2hvdWxkIGFsd2F5cyBjbG9zZSBmaWxlcyBleHBsaWNpdGx5KS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICJOb3RlIHRoYXQgdGhlIHVzZSBvZiB0aGUgaW1wbGVtZW50YXRpb24ncyB0cmFjaW5nIG9yIGRlYnVnZ2luZ1xuIgorICAgICAgICAgICAgJ2ZhY2lsaXRpZXMgbWF5IGtlZXAgb2JqZWN0cyBhbGl2ZSB0aGF0IHdvdWxkIG5vcm1hbGx5IGJlICcKKyAgICAgICAgICAgICdjb2xsZWN0YWJsZS5cbicKKyAgICAgICAgICAgICdBbHNvIG5vdGUgdGhhdCBjYXRjaGluZyBhbiBleGNlcHRpb24gd2l0aCBhIFwnInRyeSIuLi4iZXhjZXB0IlwnXG4nCisgICAgICAgICAgICAnc3RhdGVtZW50IG1heSBrZWVwIG9iamVjdHMgYWxpdmUuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byAiZXh0ZXJuYWwiIHJlc291cmNlcyBzdWNoIGFzICcKKyAgICAgICAgICAgICdvcGVuXG4nCisgICAgICAgICAgICAnZmlsZXMgb3Igd2luZG93cy4gIEl0IGlzIHVuZGVyc3Rvb2QgdGhhdCB0aGVzZSByZXNvdXJjZXMgYXJlICcKKyAgICAgICAgICAgICdmcmVlZFxuJworICAgICAgICAgICAgJ3doZW4gdGhlIG9iamVjdCBpcyBnYXJiYWdlLWNvbGxlY3RlZCwgYnV0IHNpbmNlIGdhcmJhZ2UgJworICAgICAgICAgICAgJ2NvbGxlY3Rpb24gaXNcbicKKyAgICAgICAgICAgICdub3QgZ3VhcmFudGVlZCB0byBoYXBwZW4sIHN1Y2ggb2JqZWN0cyBhbHNvIHByb3ZpZGUgYW4gZXhwbGljaXQgJworICAgICAgICAgICAgJ3dheSB0b1xuJworICAgICAgICAgICAgJ3JlbGVhc2UgdGhlIGV4dGVybmFsIHJlc291cmNlLCB1c3VhbGx5IGEgImNsb3NlKCkiIG1ldGhvZC4gJworICAgICAgICAgICAgJ1Byb2dyYW1zXG4nCisgICAgICAgICAgICAnYXJlIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIGV4cGxpY2l0bHkgY2xvc2Ugc3VjaCBvYmplY3RzLiAgVGhlXG4nCisgICAgICAgICAgICAnXCcidHJ5Ii4uLiJmaW5hbGx5IlwnIHN0YXRlbWVudCBhbmQgdGhlIFwnIndpdGgiXCcgc3RhdGVtZW50ICcKKyAgICAgICAgICAgICdwcm92aWRlXG4nCisgICAgICAgICAgICAnY29udmVuaWVudCB3YXlzIHRvIGRvIHRoaXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnU29tZSBvYmplY3RzIGNvbnRhaW4gcmVmZXJlbmNlcyB0byBvdGhlciBvYmplY3RzOyB0aGVzZSBhcmUgJworICAgICAgICAgICAgJ2NhbGxlZFxuJworICAgICAgICAgICAgJypjb250YWluZXJzKi4gRXhhbXBsZXMgb2YgY29udGFpbmVycyBhcmUgdHVwbGVzLCBsaXN0cyBhbmRcbicKKyAgICAgICAgICAgICJkaWN0aW9uYXJpZXMuICBUaGUgcmVmZXJlbmNlcyBhcmUgcGFydCBvZiBhIGNvbnRhaW5lcidzIHZhbHVlLiAgIgorICAgICAgICAgICAgJ0luXG4nCisgICAgICAgICAgICAnbW9zdCBjYXNlcywgd2hlbiB3ZSB0YWxrIGFib3V0IHRoZSB2YWx1ZSBvZiBhIGNvbnRhaW5lciwgd2UgaW1wbHkgJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ3ZhbHVlcywgbm90IHRoZSBpZGVudGl0aWVzIG9mIHRoZSBjb250YWluZWQgb2JqZWN0czsgaG93ZXZlciwgJworICAgICAgICAgICAgJ3doZW4gd2VcbicKKyAgICAgICAgICAgICd0YWxrIGFib3V0IHRoZSBtdXRhYmlsaXR5IG9mIGEgY29udGFpbmVyLCBvbmx5IHRoZSBpZGVudGl0aWVzIG9mICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdpbW1lZGlhdGVseSBjb250YWluZWQgb2JqZWN0cyBhcmUgaW1wbGllZC4gIFNvLCBpZiBhbiBpbW11dGFibGVcbicKKyAgICAgICAgICAgICdjb250YWluZXIgKGxpa2UgYSB0dXBsZSkgY29udGFpbnMgYSByZWZlcmVuY2UgdG8gYSBtdXRhYmxlICcKKyAgICAgICAgICAgICdvYmplY3QsIGl0c1xuJworICAgICAgICAgICAgJ3ZhbHVlIGNoYW5nZXMgaWYgdGhhdCBtdXRhYmxlIG9iamVjdCBpcyBjaGFuZ2VkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ1R5cGVzIGFmZmVjdCBhbG1vc3QgYWxsIGFzcGVjdHMgb2Ygb2JqZWN0IGJlaGF2aW9yLiAgRXZlbiB0aGVcbicKKyAgICAgICAgICAgICdpbXBvcnRhbmNlIG9mIG9iamVjdCBpZGVudGl0eSBpcyBhZmZlY3RlZCBpbiBzb21lIHNlbnNlOiBmb3IgJworICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgJ3R5cGVzLCBvcGVyYXRpb25zIHRoYXQgY29tcHV0ZSBuZXcgdmFsdWVzIG1heSBhY3R1YWxseSByZXR1cm4gYVxuJworICAgICAgICAgICAgJ3JlZmVyZW5jZSB0byBhbnkgZXhpc3Rpbmcgb2JqZWN0IHdpdGggdGhlIHNhbWUgdHlwZSBhbmQgdmFsdWUsICcKKyAgICAgICAgICAgICd3aGlsZVxuJworICAgICAgICAgICAgJ2ZvciBtdXRhYmxlIG9iamVjdHMgdGhpcyBpcyBub3QgYWxsb3dlZC4gIEUuZy4sIGFmdGVyICJhID0gMTsgYiA9ICcKKyAgICAgICAgICAgICcxIixcbicKKyAgICAgICAgICAgICciYSIgYW5kICJiIiBtYXkgb3IgbWF5IG5vdCByZWZlciB0byB0aGUgc2FtZSBvYmplY3Qgd2l0aCB0aGUgJworICAgICAgICAgICAgJ3ZhbHVlXG4nCisgICAgICAgICAgICAnb25lLCBkZXBlbmRpbmcgb24gdGhlIGltcGxlbWVudGF0aW9uLCBidXQgYWZ0ZXIgImMgPSBbXTsgZCA9IFtdIiwgJworICAgICAgICAgICAgJyJjIlxuJworICAgICAgICAgICAgJ2FuZCAiZCIgYXJlIGd1YXJhbnRlZWQgdG8gcmVmZXIgdG8gdHdvIGRpZmZlcmVudCwgdW5pcXVlLCBuZXdseVxuJworICAgICAgICAgICAgJ2NyZWF0ZWQgZW1wdHkgbGlzdHMuIChOb3RlIHRoYXQgImMgPSBkID0gW10iIGFzc2lnbnMgdGhlIHNhbWUgJworICAgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICAgJ3RvIGJvdGggImMiIGFuZCAiZCIuKVxuJywKKyAnb3BlcmF0b3Itc3VtbWFyeSc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRvciBwcmVjZWRlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgdGFibGUgc3VtbWFyaXplcyB0aGUgb3BlcmF0b3IgcHJlY2VkZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnaW4gUHl0aG9uLCBmcm9tXG4nCisgICAgICAgICAgICAgICAgICAgICAnbG93ZXN0IHByZWNlZGVuY2UgKGxlYXN0IGJpbmRpbmcpIHRvIGhpZ2hlc3QgcHJlY2VkZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAnKG1vc3RcbicKKyAgICAgICAgICAgICAgICAgICAgICdiaW5kaW5nKS4gIE9wZXJhdG9ycyBpbiB0aGUgc2FtZSBib3ggaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZS4gIFVubGVzc1xuJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzeW50YXggaXMgZXhwbGljaXRseSBnaXZlbiwgb3BlcmF0b3JzIGFyZSBiaW5hcnkuICAnCisgICAgICAgICAgICAgICAgICAgICAnT3BlcmF0b3JzIGluXG4nCisgICAgICAgICAgICAgICAgICAgICAndGhlIHNhbWUgYm94IGdyb3VwIGxlZnQgdG8gcmlnaHQgKGV4Y2VwdCBmb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2V4cG9uZW50aWF0aW9uLCB3aGljaFxuJworICAgICAgICAgICAgICAgICAgICAgJ2dyb3VwcyBmcm9tIHJpZ2h0IHRvIGxlZnQpLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdCBjb21wYXJpc29ucywgbWVtYmVyc2hpcCB0ZXN0cywgYW5kIGlkZW50aXR5ICcKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0cywgYWxsIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2FtZSBwcmVjZWRlbmNlIGFuZCBoYXZlIGEgbGVmdC10by1yaWdodCBjaGFpbmluZyAnCisgICAgICAgICAgICAgICAgICAgICAnZmVhdHVyZSBhc1xuJworICAgICAgICAgICAgICAgICAgICAgJ2Rlc2NyaWJlZCBpbiB0aGUgQ29tcGFyaXNvbnMgc2VjdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCBPcGVyYXRvciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibGFtYmRhIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdMYW1iZGEgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaWYiIC0tICJlbHNlIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb25kaXRpb25hbCBleHByZXNzaW9uICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAib3IiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiYW5kIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIEFORCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAibm90IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCb29sZWFuIE5PVCAgICAgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiaW4iLCAibm90IGluIiwgImlzIiwgImlzIG5vdCIsICI8IiwgIjw9IiwgIj4iLCB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdDb21wYXJpc29ucywgaW5jbHVkaW5nIG1lbWJlcnNoaXAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI+PSIsICIhPSIsICI9PSIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ3Rlc3RzIGFuZCBpZGVudGl0eSB0ZXN0cyAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJ8IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgT1IgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJeIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgWE9SICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICImIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0JpdHdpc2UgQU5EICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICI8PCIsICI+PiIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ1NoaWZ0cyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIrIiwgIi0iICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ0FkZGl0aW9uIGFuZCBzdWJ0cmFjdGlvbiAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ011bHRpcGxpY2F0aW9uLCBtYXRyaXggbXVsdGlwbGljYXRpb24gfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGl2aXNpb24sIHJlbWFpbmRlciBbNV0gICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIit4IiwgIi14IiwgIn54IiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnUG9zaXRpdmUsIG5lZ2F0aXZlLCBiaXR3aXNlIE5PVCAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgIioqIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnRXhwb25lbnRpYXRpb24gWzZdICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgImF3YWl0IiAieCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnQXdhaXQgZXhwcmVzc2lvbiAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInhbaW5kZXhdIiwgInhbaW5kZXg6aW5kZXhdIiwgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnU3Vic2NyaXB0aW9uLCBzbGljaW5nLCBjYWxsLCAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAieChhcmd1bWVudHMuLi4pIiwgInguYXR0cmlidXRlIiAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgcmVmZXJlbmNlICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAiKGV4cHJlc3Npb25zLi4uKSIsICJbZXhwcmVzc2lvbnMuLi5dIiwgIntrZXk6ICB8ICcKKyAgICAgICAgICAgICAgICAgICAgICdCaW5kaW5nIG9yIHR1cGxlIGRpc3BsYXksIGxpc3QgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8IHZhbHVlLi4ufSIsICJ7ZXhwcmVzc2lvbnMuLi59IiAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICAgJ2Rpc3BsYXksIGRpY3Rpb25hcnkgZGlzcGxheSwgc2V0ICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnZGlzcGxheSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJy1bIEZvb3Rub3RlcyBdLVxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1sxXSBXaGlsZSAiYWJzKHgleSkgPCBhYnMoeSkiIGlzIHRydWUgbWF0aGVtYXRpY2FsbHksICcKKyAgICAgICAgICAgICAgICAgICAgICdmb3IgZmxvYXRzXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGl0IG1heSBub3QgYmUgdHJ1ZSBudW1lcmljYWxseSBkdWUgdG8gcm91bmRvZmYuICBGb3IgJworICAgICAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIGFuZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBhc3N1bWluZyBhIHBsYXRmb3JtIG9uIHdoaWNoIGEgUHl0aG9uIGZsb2F0IGlzIGFuICcKKyAgICAgICAgICAgICAgICAgICAgICdJRUVFIDc1NCBkb3VibGUtXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNpc2lvbiBudW1iZXIsIGluIG9yZGVyIHRoYXQgIi0xZS0xMDAgJSAxZTEwMCIgJworICAgICAgICAgICAgICAgICAgICAgJ2hhdmUgdGhlIHNhbWVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc2lnbiBhcyAiMWUxMDAiLCB0aGUgY29tcHV0ZWQgcmVzdWx0IGlzICItMWUtMTAwICsgJworICAgICAgICAgICAgICAgICAgICAgJzFlMTAwIiwgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgaXMgbnVtZXJpY2FsbHkgZXhhY3RseSBlcXVhbCB0byAiMWUxMDAiLiAgVGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICAibWF0aC5mbW9kKCkiIHJldHVybnMgYSByZXN1bHQgd2hvc2Ugc2lnbiBtYXRjaGVzICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2lnbiBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZmlyc3QgYXJndW1lbnQgaW5zdGVhZCwgYW5kIHNvIHJldHVybnMgIi0xZS0xMDAiIGluICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGlzIGNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFdoaWNoIGFwcHJvYWNoIGlzIG1vcmUgYXBwcm9wcmlhdGUgZGVwZW5kcyBvbiB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2FwcGxpY2F0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1syXSBJZiB4IGlzIHZlcnkgY2xvc2UgdG8gYW4gZXhhY3QgaW50ZWdlciBtdWx0aXBsZSBvZiAnCisgICAgICAgICAgICAgICAgICAgICAieSwgaXQnc1xuIgorICAgICAgICAgICAgICAgICAgICAgJyAgICBwb3NzaWJsZSBmb3IgIngvL3kiIHRvIGJlIG9uZSBsYXJnZXIgdGhhbiAnCisgICAgICAgICAgICAgICAgICAgICAnIih4LXgleSkvL3kiIGR1ZSB0b1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICByb3VuZGluZy4gIEluIHN1Y2ggY2FzZXMsIFB5dGhvbiByZXR1cm5zIHRoZSBsYXR0ZXIgJworICAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCwgaW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3JkZXIgdG8gcHJlc2VydmUgdGhhdCAiZGl2bW9kKHgseSlbMF0gKiB5ICsgeCAlIHkiICcKKyAgICAgICAgICAgICAgICAgICAgICdiZSB2ZXJ5IGNsb3NlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHRvICJ4Ii5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbM10gVGhlIFVuaWNvZGUgc3RhbmRhcmQgZGlzdGluZ3Vpc2hlcyBiZXR3ZWVuICpjb2RlICcKKyAgICAgICAgICAgICAgICAgICAgICdwb2ludHMqIChlLmcuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFUrMDA0MSkgYW5kICphYnN0cmFjdCBjaGFyYWN0ZXJzKiAoZS5nLiAiTEFUSU4gJworICAgICAgICAgICAgICAgICAgICAgJ0NBUElUQUwgTEVUVEVSIEEiKS5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgV2hpbGUgbW9zdCBhYnN0cmFjdCBjaGFyYWN0ZXJzIGluIFVuaWNvZGUgYXJlIG9ubHkgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcHJlc2VudGVkXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHVzaW5nIG9uZSBjb2RlIHBvaW50LCB0aGVyZSBpcyBhIG51bWJlciBvZiBhYnN0cmFjdCAnCisgICAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICB0aGF0IGNhbiBpbiBhZGRpdGlvbiBiZSByZXByZXNlbnRlZCB1c2luZyBhIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiBtb3JlIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb25lIGNvZGUgcG9pbnQuICBGb3IgZXhhbXBsZSwgdGhlIGFic3RyYWN0IGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgICAnIkxBVElOXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIENBUElUQUwgTEVUVEVSIEMgV0lUSCBDRURJTExBIiBjYW4gYmUgcmVwcmVzZW50ZWQgYXMgJworICAgICAgICAgICAgICAgICAgICAgJ2Egc2luZ2xlXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgICpwcmVjb21wb3NlZCBjaGFyYWN0ZXIqIGF0IGNvZGUgcG9zaXRpb24gVSswMEM3LCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnYXMgYSBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBvZiBhICpiYXNlIGNoYXJhY3RlciogYXQgY29kZSBwb3NpdGlvbiBVKzAwNDMgKExBVElOICcKKyAgICAgICAgICAgICAgICAgICAgICdDQVBJVEFMXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIExFVFRFUiBDKSwgZm9sbG93ZWQgYnkgYSAqY29tYmluaW5nIGNoYXJhY3RlciogYXQgJworICAgICAgICAgICAgICAgICAgICAgJ2NvZGUgcG9zaXRpb25cbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgVSswMzI3IChDT01CSU5JTkcgQ0VESUxMQSkuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIFRoZSBjb21wYXJpc29uIG9wZXJhdG9ycyBvbiBzdHJpbmdzIGNvbXBhcmUgYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdsZXZlbCBvZlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBVbmljb2RlIGNvZGUgcG9pbnRzLiBUaGlzIG1heSBiZSBjb3VudGVyLWludHVpdGl2ZSAnCisgICAgICAgICAgICAgICAgICAgICAndG8gaHVtYW5zLiAgRm9yXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIGV4YW1wbGUsICIiXFx1MDBDNyIgPT0gIlxcdTAwNDNcXHUwMzI3IiIgaXMgIkZhbHNlIiwgJworICAgICAgICAgICAgICAgICAgICAgJ2V2ZW4gdGhvdWdoIGJvdGhcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgc3RyaW5ncyByZXByZXNlbnQgdGhlIHNhbWUgYWJzdHJhY3QgY2hhcmFjdGVyICJMQVRJTiAnCisgICAgICAgICAgICAgICAgICAgICAnQ0FQSVRBTFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBMRVRURVIgQyBXSVRIIENFRElMTEEiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBUbyBjb21wYXJlIHN0cmluZ3MgYXQgdGhlIGxldmVsIG9mIGFic3RyYWN0ICcKKyAgICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzICh0aGF0IGlzLFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpbiBhIHdheSBpbnR1aXRpdmUgdG8gaHVtYW5zKSwgdXNlICcKKyAgICAgICAgICAgICAgICAgICAgICcidW5pY29kZWRhdGEubm9ybWFsaXplKCkiLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1s0XSBEdWUgdG8gYXV0b21hdGljIGdhcmJhZ2UtY29sbGVjdGlvbiwgZnJlZSBsaXN0cywgYW5kICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgZHluYW1pYyBuYXR1cmUgb2YgZGVzY3JpcHRvcnMsIHlvdSBtYXkgbm90aWNlICcKKyAgICAgICAgICAgICAgICAgICAgICdzZWVtaW5nbHkgdW51c3VhbFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBiZWhhdmlvdXIgaW4gY2VydGFpbiB1c2VzIG9mIHRoZSAiaXMiIG9wZXJhdG9yLCBsaWtlICcKKyAgICAgICAgICAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBpbnZvbHZpbmcgY29tcGFyaXNvbnMgYmV0d2VlbiBpbnN0YW5jZSBtZXRob2RzLCBvciAnCisgICAgICAgICAgICAgICAgICAgICAnY29uc3RhbnRzLlxuJworICAgICAgICAgICAgICAgICAgICAgJyAgICBDaGVjayB0aGVpciBkb2N1bWVudGF0aW9uIGZvciBtb3JlIGluZm8uXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnWzVdIFRoZSAiJSIgb3BlcmF0b3IgaXMgYWxzbyB1c2VkIGZvciBzdHJpbmcgZm9ybWF0dGluZzsgJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgIHByZWNlZGVuY2UgYXBwbGllcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdbNl0gVGhlIHBvd2VyIG9wZXJhdG9yICIqKiIgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gYW4gJworICAgICAgICAgICAgICAgICAgICAgJ2FyaXRobWV0aWNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICAgb3IgYml0d2lzZSB1bmFyeSBvcGVyYXRvciBvbiBpdHMgcmlnaHQsIHRoYXQgaXMsICcKKyAgICAgICAgICAgICAgICAgICAgICciMioqLTEiIGlzICIwLjUiLlxuJywKKyAncGFzcyc6ICdcbicKKyAgICAgICAgICdUaGUgInBhc3MiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgcGFzc19zdG10IDo6PSAicGFzcyJcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcicGFzcyIgaXMgYSBudWxsIG9wZXJhdGlvbiAtLS0gd2hlbiBpdCBpcyBleGVjdXRlZCwgbm90aGluZyAnCisgICAgICAgICAnaGFwcGVucy5cbicKKyAgICAgICAgICdJdCBpcyB1c2VmdWwgYXMgYSBwbGFjZWhvbGRlciB3aGVuIGEgc3RhdGVtZW50IGlzIHJlcXVpcmVkXG4nCisgICAgICAgICAnc3ludGFjdGljYWxseSwgYnV0IG5vIGNvZGUgbmVlZHMgdG8gYmUgZXhlY3V0ZWQsIGZvciBleGFtcGxlOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIGRlZiBmKGFyZyk6IHBhc3MgICAgIyBhIGZ1bmN0aW9uIHRoYXQgZG9lcyBub3RoaW5nICh5ZXQpXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnICAgY2xhc3MgQzogcGFzcyAgICAgICAjIGEgY2xhc3Mgd2l0aCBubyBtZXRob2RzICh5ZXQpXG4nLAorICdwb3dlcic6ICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHBvd2VyIG9wZXJhdG9yIGJpbmRzIG1vcmUgdGlnaHRseSB0aGFuIHVuYXJ5IG9wZXJhdG9ycyBvbiBpdHNcbicKKyAgICAgICAgICAnbGVmdDsgaXQgYmluZHMgbGVzcyB0aWdodGx5IHRoYW4gdW5hcnkgb3BlcmF0b3JzIG9uIGl0cyByaWdodC4gICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJ3N5bnRheCBpczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHBvd2VyIDo6PSAoIGF3YWl0X2V4cHIgfCBwcmltYXJ5ICkgWyIqKiIgdV9leHByXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGh1cywgaW4gYW4gdW5wYXJlbnRoZXNpemVkIHNlcXVlbmNlIG9mIHBvd2VyIGFuZCB1bmFyeSBvcGVyYXRvcnMsICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ29wZXJhdG9ycyBhcmUgZXZhbHVhdGVkIGZyb20gcmlnaHQgdG8gbGVmdCAodGhpcyBkb2VzIG5vdCAnCisgICAgICAgICAgJ2NvbnN0cmFpblxuJworICAgICAgICAgICd0aGUgZXZhbHVhdGlvbiBvcmRlciBmb3IgdGhlIG9wZXJhbmRzKTogIi0xKioyIiByZXN1bHRzIGluICItMSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgcG93ZXIgb3BlcmF0b3IgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aGUgYnVpbHQtaW4gInBvdygpIlxuJworICAgICAgICAgICdmdW5jdGlvbiwgd2hlbiBjYWxsZWQgd2l0aCB0d28gYXJndW1lbnRzOiBpdCB5aWVsZHMgaXRzIGxlZnQgJworICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICdyYWlzZWQgdG8gdGhlIHBvd2VyIG9mIGl0cyByaWdodCBhcmd1bWVudC4gIFRoZSBudW1lcmljIGFyZ3VtZW50cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICdmaXJzdCBjb252ZXJ0ZWQgdG8gYSBjb21tb24gdHlwZSwgYW5kIHRoZSByZXN1bHQgaXMgb2YgdGhhdCB0eXBlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9yIGludCBvcGVyYW5kcywgdGhlIHJlc3VsdCBoYXMgdGhlIHNhbWUgdHlwZSBhcyB0aGUgb3BlcmFuZHMgJworICAgICAgICAgICd1bmxlc3NcbicKKyAgICAgICAgICAndGhlIHNlY29uZCBhcmd1bWVudCBpcyBuZWdhdGl2ZTsgaW4gdGhhdCBjYXNlLCBhbGwgYXJndW1lbnRzIGFyZVxuJworICAgICAgICAgICdjb252ZXJ0ZWQgdG8gZmxvYXQgYW5kIGEgZmxvYXQgcmVzdWx0IGlzIGRlbGl2ZXJlZC4gRm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgJyIxMCoqMiIgcmV0dXJucyAiMTAwIiwgYnV0ICIxMCoqLTIiIHJldHVybnMgIjAuMDEiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnUmFpc2luZyAiMC4wIiB0byBhIG5lZ2F0aXZlIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJaZXJvRGl2aXNpb25FcnJvciIuXG4nCisgICAgICAgICAgJ1JhaXNpbmcgYSBuZWdhdGl2ZSBudW1iZXIgdG8gYSBmcmFjdGlvbmFsIHBvd2VyIHJlc3VsdHMgaW4gYSAnCisgICAgICAgICAgJyJjb21wbGV4IlxuJworICAgICAgICAgICdudW1iZXIuIChJbiBlYXJsaWVyIHZlcnNpb25zIGl0IHJhaXNlZCBhICJWYWx1ZUVycm9yIi4pXG4nLAorICdyYWlzZSc6ICdcbicKKyAgICAgICAgICAnVGhlICJyYWlzZSIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgcmFpc2Vfc3RtdCA6Oj0gInJhaXNlIiBbZXhwcmVzc2lvbiBbImZyb20iIGV4cHJlc3Npb25dXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSWYgbm8gZXhwcmVzc2lvbnMgYXJlIHByZXNlbnQsICJyYWlzZSIgcmUtcmFpc2VzIHRoZSBsYXN0ICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ3RoYXQgd2FzIGFjdGl2ZSBpbiB0aGUgY3VycmVudCBzY29wZS4gIElmIG5vIGV4Y2VwdGlvbiBpcyBhY3RpdmUgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICd0aGUgY3VycmVudCBzY29wZSwgYSAiUnVudGltZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkIGluZGljYXRpbmdcbicKKyAgICAgICAgICAndGhhdCB0aGlzIGlzIGFuIGVycm9yLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnT3RoZXJ3aXNlLCAicmFpc2UiIGV2YWx1YXRlcyB0aGUgZmlyc3QgZXhwcmVzc2lvbiBhcyB0aGUgZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ29iamVjdC4gIEl0IG11c3QgYmUgZWl0aGVyIGEgc3ViY2xhc3Mgb3IgYW4gaW5zdGFuY2Ugb2ZcbicKKyAgICAgICAgICAnIkJhc2VFeGNlcHRpb24iLiBJZiBpdCBpcyBhIGNsYXNzLCB0aGUgZXhjZXB0aW9uIGluc3RhbmNlIHdpbGwgYmVcbicKKyAgICAgICAgICAnb2J0YWluZWQgd2hlbiBuZWVkZWQgYnkgaW5zdGFudGlhdGluZyB0aGUgY2xhc3Mgd2l0aCBubyBhcmd1bWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICJUaGUgKnR5cGUqIG9mIHRoZSBleGNlcHRpb24gaXMgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSdzIGNsYXNzLCB0aGVcbiIKKyAgICAgICAgICAnKnZhbHVlKiBpcyB0aGUgaW5zdGFuY2UgaXRzZWxmLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSB0cmFjZWJhY2sgb2JqZWN0IGlzIG5vcm1hbGx5IGNyZWF0ZWQgYXV0b21hdGljYWxseSB3aGVuIGFuICcKKyAgICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICAgJ2lzIHJhaXNlZCBhbmQgYXR0YWNoZWQgdG8gaXQgYXMgdGhlICJfX3RyYWNlYmFja19fIiBhdHRyaWJ1dGUsICcKKyAgICAgICAgICAnd2hpY2hcbicKKyAgICAgICAgICAnaXMgd3JpdGFibGUuIFlvdSBjYW4gY3JlYXRlIGFuIGV4Y2VwdGlvbiBhbmQgc2V0IHlvdXIgb3duIHRyYWNlYmFjayAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJ29uZSBzdGVwIHVzaW5nIHRoZSAid2l0aF90cmFjZWJhY2soKSIgZXhjZXB0aW9uIG1ldGhvZCAod2hpY2ggJworICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgJ3RoZSBzYW1lIGV4Y2VwdGlvbiBpbnN0YW5jZSwgd2l0aCBpdHMgdHJhY2ViYWNrIHNldCB0byBpdHMgJworICAgICAgICAgICdhcmd1bWVudCksXG4nCisgICAgICAgICAgJ2xpa2Ugc286XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICByYWlzZSBFeGNlcHRpb24oImZvbyBvY2N1cnJlZCIpLndpdGhfdHJhY2ViYWNrKHRyYWNlYmFja29iailcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSAiZnJvbSIgY2xhdXNlIGlzIHVzZWQgZm9yIGV4Y2VwdGlvbiBjaGFpbmluZzogaWYgZ2l2ZW4sIHRoZSAnCisgICAgICAgICAgJ3NlY29uZFxuJworICAgICAgICAgICcqZXhwcmVzc2lvbiogbXVzdCBiZSBhbm90aGVyIGV4Y2VwdGlvbiBjbGFzcyBvciBpbnN0YW5jZSwgd2hpY2ggJworICAgICAgICAgICd3aWxsXG4nCisgICAgICAgICAgJ3RoZW4gYmUgYXR0YWNoZWQgdG8gdGhlIHJhaXNlZCBleGNlcHRpb24gYXMgdGhlICJfX2NhdXNlX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyh3aGljaCBpcyB3cml0YWJsZSkuICBJZiB0aGUgcmFpc2VkIGV4Y2VwdGlvbiBpcyBub3QgaGFuZGxlZCwgYm90aFxuJworICAgICAgICAgICdleGNlcHRpb25zIHdpbGwgYmUgcHJpbnRlZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgID4+PiB0cnk6XG4nCisgICAgICAgICAgJyAgIC4uLiAgICAgcHJpbnQoMSAvIDApXG4nCisgICAgICAgICAgJyAgIC4uLiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzpcbicKKyAgICAgICAgICAnICAgLi4uICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvbWV0aGluZyBiYWQgaGFwcGVuZWQiKSBmcm9tIGV4Y1xuJworICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAnICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICcgICAgIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDIsIGluIDxtb2R1bGU+XG4nCisgICAgICAgICAgJyAgIFplcm9EaXZpc2lvbkVycm9yOiBpbnQgZGl2aXNpb24gb3IgbW9kdWxvIGJ5IHplcm9cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZSBhYm92ZSBleGNlcHRpb24gd2FzIHRoZSBkaXJlY3QgY2F1c2Ugb2YgdGhlIGZvbGxvd2luZyAnCisgICAgICAgICAgJ2V4Y2VwdGlvbjpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAnICAgICBGaWxlICI8c3RkaW4+IiwgbGluZSA0LCBpbiA8bW9kdWxlPlxuJworICAgICAgICAgICcgICBSdW50aW1lRXJyb3I6IFNvbWV0aGluZyBiYWQgaGFwcGVuZWRcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0Egc2ltaWxhciBtZWNoYW5pc20gd29ya3MgaW1wbGljaXRseSBpZiBhbiBleGNlcHRpb24gaXMgcmFpc2VkICcKKyAgICAgICAgICAnaW5zaWRlXG4nCisgICAgICAgICAgJ2FuIGV4Y2VwdGlvbiBoYW5kbGVyIG9yIGEgImZpbmFsbHkiIGNsYXVzZTogdGhlIHByZXZpb3VzIGV4Y2VwdGlvbiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJ3RoZW4gYXR0YWNoZWQgYXMgdGhlIG5ldyBleGNlcHRpb25cJ3MgIl9fY29udGV4dF9fIiBhdHRyaWJ1dGU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICA+Pj4gdHJ5OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHByaW50KDEgLyAwKVxuJworICAgICAgICAgICcgICAuLi4gZXhjZXB0OlxuJworICAgICAgICAgICcgICAuLi4gICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29tZXRoaW5nIGJhZCBoYXBwZW5lZCIpXG4nCisgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMiwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgWmVyb0RpdmlzaW9uRXJyb3I6IGludCBkaXZpc2lvbiBvciBtb2R1bG8gYnkgemVyb1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgRHVyaW5nIGhhbmRsaW5nIG9mIHRoZSBhYm92ZSBleGNlcHRpb24sIGFub3RoZXIgZXhjZXB0aW9uICcKKyAgICAgICAgICAnb2NjdXJyZWQ6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgNCwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAnICAgUnVudGltZUVycm9yOiBTb21ldGhpbmcgYmFkIGhhcHBlbmVkXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdBZGRpdGlvbmFsIGluZm9ybWF0aW9uIG9uIGV4Y2VwdGlvbnMgY2FuIGJlIGZvdW5kIGluIHNlY3Rpb25cbicKKyAgICAgICAgICAnRXhjZXB0aW9ucywgYW5kIGluZm9ybWF0aW9uIGFib3V0IGhhbmRsaW5nIGV4Y2VwdGlvbnMgaXMgaW4gJworICAgICAgICAgICdzZWN0aW9uXG4nCisgICAgICAgICAgJ1RoZSB0cnkgc3RhdGVtZW50LlxuJywKKyAncmV0dXJuJzogJ1xuJworICAgICAgICAgICAnVGhlICJyZXR1cm4iIHN0YXRlbWVudFxuJworICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICcgICByZXR1cm5fc3RtdCA6Oj0gInJldHVybiIgW2V4cHJlc3Npb25fbGlzdF1cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnInJldHVybiIgbWF5IG9ubHkgb2NjdXIgc3ludGFjdGljYWxseSBuZXN0ZWQgaW4gYSBmdW5jdGlvbiAnCisgICAgICAgICAgICdkZWZpbml0aW9uLFxuJworICAgICAgICAgICAnbm90IHdpdGhpbiBhIG5lc3RlZCBjbGFzcyBkZWZpbml0aW9uLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdJZiBhbiBleHByZXNzaW9uIGxpc3QgaXMgcHJlc2VudCwgaXQgaXMgZXZhbHVhdGVkLCBlbHNlICJOb25lIiBpc1xuJworICAgICAgICAgICAnc3Vic3RpdHV0ZWQuXG4nCisgICAgICAgICAgICdcbicKKyAgICAgICAgICAgJyJyZXR1cm4iIGxlYXZlcyB0aGUgY3VycmVudCBmdW5jdGlvbiBjYWxsIHdpdGggdGhlIGV4cHJlc3Npb24gbGlzdCAnCisgICAgICAgICAgICcob3JcbicKKyAgICAgICAgICAgJyJOb25lIikgYXMgcmV0dXJuIHZhbHVlLlxuJworICAgICAgICAgICAnXG4nCisgICAgICAgICAgICdXaGVuICJyZXR1cm4iIHBhc3NlcyBjb250cm9sIG91dCBvZiBhICJ0cnkiIHN0YXRlbWVudCB3aXRoIGEgJworICAgICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICAgICdjbGF1c2UsIHRoYXQgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZCBiZWZvcmUgcmVhbGx5IGxlYXZpbmcgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdmdW5jdGlvbi5cbicKKyAgICAgICAgICAgJ1xuJworICAgICAgICAgICAnSW4gYSBnZW5lcmF0b3IgZnVuY3Rpb24sIHRoZSAicmV0dXJuIiBzdGF0ZW1lbnQgaW5kaWNhdGVzIHRoYXQgJworICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICdnZW5lcmF0b3IgaXMgZG9uZSBhbmQgd2lsbCBjYXVzZSAiU3RvcEl0ZXJhdGlvbiIgdG8gYmUgcmFpc2VkLiAnCisgICAgICAgICAgICdUaGVcbicKKyAgICAgICAgICAgJ3JldHVybmVkIHZhbHVlIChpZiBhbnkpIGlzIHVzZWQgYXMgYW4gYXJndW1lbnQgdG8gY29uc3RydWN0XG4nCisgICAgICAgICAgICciU3RvcEl0ZXJhdGlvbiIgYW5kIGJlY29tZXMgdGhlICJTdG9wSXRlcmF0aW9uLnZhbHVlIiBhdHRyaWJ1dGUuXG4nLAorICdzZXF1ZW5jZS10eXBlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50ICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbmVyIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ0NvbnRhaW5lcnMgdXN1YWxseSBhcmUgc2VxdWVuY2VzIChzdWNoIGFzIGxpc3RzIG9yIHR1cGxlcykgJworICAgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAgICcobGlrZSBkaWN0aW9uYXJpZXMpLCBidXQgY2FuIHJlcHJlc2VudCBvdGhlciBjb250YWluZXJzIGFzICcKKyAgICAgICAgICAgICAgICAgICAnd2VsbC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAgICdvciB0b1xuJworICAgICAgICAgICAgICAgICAgICdlbXVsYXRlIGEgbWFwcGluZzsgdGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBmb3IgYSBzZXF1ZW5jZSwgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnYWxsb3dhYmxlIGtleXMgc2hvdWxkIGJlIHRoZSBpbnRlZ2VycyAqayogZm9yIHdoaWNoICIwIDw9ICcKKyAgICAgICAgICAgICAgICAgICAnayA8IE4iIHdoZXJlXG4nCisgICAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggJworICAgICAgICAgICAgICAgICAgICdkZWZpbmUgYVxuJworICAgICAgICAgICAgICAgICAgICdyYW5nZSBvZiBpdGVtcy4gIEl0IGlzIGFsc28gcmVjb21tZW5kZWQgdGhhdCBtYXBwaW5ncyAnCisgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMgImtleXMoKSIsICJ2YWx1ZXMoKSIsICJpdGVtcygpIiwgImdldCgpIiwgJworICAgICAgICAgICAgICAgICAgICciY2xlYXIoKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJyJ1cGRhdGUoKSJcbicKKyAgICAgICAgICAgICAgICAgICAiYmVoYXZpbmcgc2ltaWxhciB0byB0aG9zZSBmb3IgUHl0aG9uJ3Mgc3RhbmRhcmQgZGljdGlvbmFyeSAiCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSAiY29sbGVjdGlvbnMiIG1vZHVsZSBwcm92aWRlcyBhICJNdXRhYmxlTWFwcGluZyIgJworICAgICAgICAgICAgICAgICAgICdhYnN0cmFjdCBiYXNlXG4nCisgICAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiLFxuJworICAgICAgICAgICAgICAgICAgICciX19zZXRpdGVtX18oKSIsICJfX2RlbGl0ZW1fXygpIiwgYW5kICJrZXlzKCkiLiBNdXRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICAgJ3Nob3VsZCBwcm92aWRlIG1ldGhvZHMgImFwcGVuZCgpIiwgImNvdW50KCkiLCAiaW5kZXgoKSIsICcKKyAgICAgICAgICAgICAgICAgICAnImV4dGVuZCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCAnCisgICAgICAgICAgICAgICAgICAgJ2xpa2UgUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0YW5kYXJkIGxpc3Qgb2JqZWN0cy4gIEZpbmFsbHksIHNlcXVlbmNlIHR5cGVzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICdhZGRpdGlvbiAobWVhbmluZyBjb25jYXRlbmF0aW9uKSBhbmQgbXVsdGlwbGljYXRpb24gJworICAgICAgICAgICAgICAgICAgICcobWVhbmluZ1xuJworICAgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAgICciX19yYWRkX18oKSIsXG4nCisgICAgICAgICAgICAgICAgICAgJyJfX2lhZGRfXygpIiwgIl9fbXVsX18oKSIsICJfX3JtdWxfXygpIiBhbmQgIl9faW11bF9fKCkiICcKKyAgICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICAgJ2JlbG93OyB0aGV5IHNob3VsZCBub3QgZGVmaW5lIG90aGVyIG51bWVyaWNhbCBvcGVyYXRvcnMuICAnCisgICAgICAgICAgICAgICAgICAgJ0l0IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICciX19jb250YWluc19fKCkiIG1ldGhvZCB0byBhbGxvdyBlZmZpY2llbnQgdXNlIG9mIHRoZSAiaW4iICcKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICAgJ2ZvciBtYXBwaW5ncywgImluIiBzaG91bGQgc2VhcmNoIHRoZSBtYXBwaW5nXCdzIGtleXM7IGZvciAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlcywgaXRcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyICcKKyAgICAgICAgICAgICAgICAgICAncmVjb21tZW5kZWQgdGhhdCBib3RoXG4nCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdzIGFuZCBzZXF1ZW5jZXMgaW1wbGVtZW50IHRoZSAiX19pdGVyX18oKSIgbWV0aG9kICcKKyAgICAgICAgICAgICAgICAgICAndG8gYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgICAnZWZmaWNpZW50IGl0ZXJhdGlvbiB0aHJvdWdoIHRoZSBjb250YWluZXI7IGZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICAgJ3Rocm91Z2ggdGhlIHZhbHVlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2xlbl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAgICdTaG91bGQgcmV0dXJuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBsZW5ndGggb2YgdGhlIG9iamVjdCwgYW4gaW50ZWdlciAiPj0iIDAuICBBbHNvLCBhbiAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRvZXNuXCd0IGRlZmluZSBhICJfX2Jvb2xfXygpIiBtZXRob2QgYW5kIHdob3NlICcKKyAgICAgICAgICAgICAgICAgICAnIl9fbGVuX18oKSIgbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRleHQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50ICJvcGVyYXRvci5sZW5ndGhfaGludCgpIi4gU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVzdGltYXRlZCBsZW5ndGggZm9yIHRoZSBvYmplY3QgKHdoaWNoIG1heSBiZSBncmVhdGVyICcKKyAgICAgICAgICAgICAgICAgICAnb3IgbGVzcyB0aGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAnCisgICAgICAgICAgICAgICAgICAgJzAuIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIGlzIHB1cmVseSBhbiBvcHRpbWl6YXRpb24gYW5kIGlzIG5ldmVyIHJlcXVpcmVkICcKKyAgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvcnJlY3RuZXNzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnTm90ZTogU2xpY2luZyBpcyBkb25lIGV4Y2x1c2l2ZWx5IHdpdGggdGhlIGZvbGxvd2luZyB0aHJlZSAnCisgICAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgQSBjYWxsIGxpa2VcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIGFbc2xpY2UoMSwgMiwgTm9uZSldID0gYlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluICcKKyAgICAgICAgICAgICAgICAgICAnd2l0aCAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBldmFsdWF0aW9uIG9mICJzZWxmW2tleV0iLiBGb3IgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIGFjY2VwdGVkIGtleXMgc2hvdWxkIGJlIGludGVnZXJzIGFuZCBzbGljZSAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuICBOb3RlIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgICAnY2xhc3Mgd2lzaGVzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIGVtdWxhdGUgYSBzZXF1ZW5jZSB0eXBlKSBpcyB1cCB0byB0aGUgJworICAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIgbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAgICcgICAqa2V5KiBpcyBvZiBhbiBpbmFwcHJvcHJpYXRlIHR5cGUsICJUeXBlRXJyb3IiIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICAgJ3JhaXNlZDsgaWYgb2ZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAnKGFmdGVyIGFueVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGVjaWFsIGludGVycHJldGF0aW9uIG9mIG5lZ2F0aXZlIHZhbHVlcyksICcKKyAgICAgICAgICAgICAgICAgICAnIkluZGV4RXJyb3IiIHNob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAgICcgICByYWlzZWQuIEZvciBtYXBwaW5nIHR5cGVzLCBpZiAqa2V5KiBpcyBtaXNzaW5nIChub3QgaW4gJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogImZvciIgbG9vcHMgZXhwZWN0IHRoYXQgYW4gIkluZGV4RXJyb3IiIHdpbGwgYmUgJworICAgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgaWxsZWdhbCBpbmRleGVzIHRvIGFsbG93IHByb3BlciBkZXRlY3Rpb24gb2YgdGhlIGVuZCAnCisgICAgICAgICAgICAgICAgICAgJ29mIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbWlzc2luZ19fKHNlbGYsIGtleSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSAiZGljdCIuIl9fZ2V0aXRlbV9fKCkiIHRvIGltcGxlbWVudCAnCisgICAgICAgICAgICAgICAgICAgJyJzZWxmW2tleV0iIGZvciBkaWN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0aXRlbV9fKHNlbGYsIGtleSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGFzc2lnbm1lbnQgdG8gInNlbGZba2V5XSIuICBTYW1lICcKKyAgICAgICAgICAgICAgICAgICAnbm90ZSBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAgICdtYXBwaW5ncyBpZlxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgb2JqZWN0cyBzdXBwb3J0IGNoYW5nZXMgdG8gdGhlIHZhbHVlcyBmb3Iga2V5cywgb3IgJworICAgICAgICAgICAgICAgICAgICdpZiBuZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgYWRkZWQsIG9yIGZvciBzZXF1ZW5jZXMgaWYgZWxlbWVudHMgY2FuIGJlICcKKyAgICAgICAgICAgICAgICAgICAncmVwbGFjZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIGFzIGZvclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGl0ZW1fXyhzZWxmLCBrZXkpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgICAnYXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJfX2dldGl0ZW1fXygpIi4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgZm9yICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlIG9iamVjdHMgc3VwcG9ydCByZW1vdmFsIG9mIGtleXMsIG9yIGZvciBzZXF1ZW5jZXMgJworICAgICAgICAgICAgICAgICAgICdpZiBlbGVtZW50c1xuJworICAgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgJworICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmFpc2VkIGZvciBpbXByb3BlciAqa2V5KiB2YWx1ZXMgYXMgZm9yIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdvYmplY3QuX19pdGVyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoaXMgbWV0aG9kIGlzIGNhbGxlZCB3aGVuIGFuIGl0ZXJhdG9yIGlzIHJlcXVpcmVkIGZvciAnCisgICAgICAgICAgICAgICAgICAgJ2EgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAnY2FuIGl0ZXJhdGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgb3ZlciBhbGwgdGhlIG9iamVjdHMgaW4gdGhlIGNvbnRhaW5lci4gIEZvciBtYXBwaW5ncywgJworICAgICAgICAgICAgICAgICAgICdpdCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRlcmF0ZSBvdmVyIHRoZSBrZXlzIG9mIHRoZSBjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7ICcKKyAgICAgICAgICAgICAgICAgICAndGhleSBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVxdWlyZWQgdG8gcmV0dXJuIHRoZW1zZWx2ZXMuICBGb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiAnCisgICAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9iamVjdHMsIHNlZSBJdGVyYXRvciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCAoaWYgcHJlc2VudCkgYnkgdGhlICJyZXZlcnNlZCgpIiBidWlsdC1pbiB0byAnCisgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXZlcnNlIGl0ZXJhdGlvbi4gIEl0IHNob3VsZCByZXR1cm4gYSBuZXcgaXRlcmF0b3IgJworICAgICAgICAgICAgICAgICAgICdvYmplY3QgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluICcKKyAgICAgICAgICAgICAgICAgICAncmV2ZXJzZSBvcmRlci5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJyJyZXZlcnNlZCgpIlxuJworICAgICAgICAgICAgICAgICAgICcgICBidWlsdC1pbiB3aWxsIGZhbGwgYmFjayB0byB1c2luZyB0aGUgc2VxdWVuY2UgcHJvdG9jb2wgJworICAgICAgICAgICAgICAgICAgICcoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICJfX2dldGl0ZW1fXygpIikuICBPYmplY3RzIHRoYXQgc3VwcG9ydCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSBwcm90b2NvbFxuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gJworICAgICAgICAgICAgICAgICAgICdwcm92aWRlIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGltcGxlbWVudGF0aW9uIHRoYXQgaXMgbW9yZSBlZmZpY2llbnQgdGhhbiB0aGUgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgInJldmVyc2VkKCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAgICdub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRlZCBhcyBhbiBpdGVyYXRpb24gdGhyb3VnaCBhIHNlcXVlbmNlLiAgSG93ZXZlciwgJworICAgICAgICAgICAgICAgICAgICdjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cyBjYW4gc3VwcGx5IHRoZSBmb2xsb3dpbmcgc3BlY2lhbCBtZXRob2Qgd2l0aCBhICcKKyAgICAgICAgICAgICAgICAgICAnbW9yZSBlZmZpY2llbnRcbicKKyAgICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlICcKKyAgICAgICAgICAgICAgICAgICAnYSBzZXF1ZW5jZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgbWVtYmVyc2hpcCB0ZXN0IG9wZXJhdG9ycy4gIFNob3VsZCAnCisgICAgICAgICAgICAgICAgICAgJ3JldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGlmICppdGVtKiBpcyBpbiAqc2VsZiosIGZhbHNlIG90aGVyd2lzZS4gIEZvciBtYXBwaW5nICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0cywgdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFsdWVzIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBrZXktaXRlbSBwYWlycy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBvYmplY3RzIHRoYXQgZG9uXCd0IGRlZmluZSAiX19jb250YWluc19fKCkiLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdtZW1iZXJzaGlwIHRlc3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGlvbiBwcm90b2NvbCB2aWEgIl9fZ2V0aXRlbV9fKCkiLCBzZWUgdGhpcyAnCisgICAgICAgICAgICAgICAgICAgJ3NlY3Rpb24gaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxhbmd1YWdlIHJlZmVyZW5jZS5cbicsCisgJ3NoaWZ0aW5nJzogJ1xuJworICAgICAgICAgICAgICdTaGlmdGluZyBvcGVyYXRpb25zXG4nCisgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBzaGlmdGluZyBvcGVyYXRpb25zIGhhdmUgbG93ZXIgcHJpb3JpdHkgdGhhbiB0aGUgYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2hpZnRfZXhwciA6Oj0gYV9leHByIHwgc2hpZnRfZXhwciAoICI8PCIgfCAiPj4iICkgYV9leHByXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGVzZSBvcGVyYXRvcnMgYWNjZXB0IGludGVnZXJzIGFzIGFyZ3VtZW50cy4gIFRoZXkgc2hpZnQgdGhlICcKKyAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGxlZnQgb3IgcmlnaHQgYnkgdGhlIG51bWJlciBvZiBiaXRzIGdpdmVuIGJ5ICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ3NlY29uZCBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0EgcmlnaHQgc2hpZnQgYnkgKm4qIGJpdHMgaXMgZGVmaW5lZCBhcyBmbG9vciBkaXZpc2lvbiBieSAnCisgICAgICAgICAgICAgJyJwb3coMixuKSIuXG4nCisgICAgICAgICAgICAgJ0EgbGVmdCBzaGlmdCBieSAqbiogYml0cyBpcyBkZWZpbmVkIGFzIG11bHRpcGxpY2F0aW9uIHdpdGggJworICAgICAgICAgICAgICcicG93KDIsbikiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTm90ZTogSW4gdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24sIHRoZSByaWdodC1oYW5kIG9wZXJhbmQgaXNcbicKKyAgICAgICAgICAgICAnICByZXF1aXJlZCB0byBiZSBhdCBtb3N0ICJzeXMubWF4c2l6ZSIuICBJZiB0aGUgcmlnaHQtaGFuZCAnCisgICAgICAgICAgICAgJ29wZXJhbmQgaXNcbicKKyAgICAgICAgICAgICAnICBsYXJnZXIgdGhhbiAic3lzLm1heHNpemUiIGFuICJPdmVyZmxvd0Vycm9yIiBleGNlcHRpb24gaXMgJworICAgICAgICAgICAgICdyYWlzZWQuXG4nLAorICdzbGljaW5ncyc6ICdcbicKKyAgICAgICAgICAgICAnU2xpY2luZ3NcbicKKyAgICAgICAgICAgICAnKioqKioqKipcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0Egc2xpY2luZyBzZWxlY3RzIGEgcmFuZ2Ugb2YgaXRlbXMgaW4gYSBzZXF1ZW5jZSBvYmplY3QgKGUuZy4sICcKKyAgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgICdzdHJpbmcsIHR1cGxlIG9yIGxpc3QpLiAgU2xpY2luZ3MgbWF5IGJlIHVzZWQgYXMgZXhwcmVzc2lvbnMgb3IgJworICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICd0YXJnZXRzIGluIGFzc2lnbm1lbnQgb3IgImRlbCIgc3RhdGVtZW50cy4gIFRoZSBzeW50YXggZm9yIGEgJworICAgICAgICAgICAgICdzbGljaW5nOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgc2xpY2luZyAgICAgIDo6PSBwcmltYXJ5ICJbIiBzbGljZV9saXN0ICJdIlxuJworICAgICAgICAgICAgICcgICBzbGljZV9saXN0ICAgOjo9IHNsaWNlX2l0ZW0gKCIsIiBzbGljZV9pdGVtKSogWyIsIl1cbicKKyAgICAgICAgICAgICAnICAgc2xpY2VfaXRlbSAgIDo6PSBleHByZXNzaW9uIHwgcHJvcGVyX3NsaWNlXG4nCisgICAgICAgICAgICAgJyAgIHByb3Blcl9zbGljZSA6Oj0gW2xvd2VyX2JvdW5kXSAiOiIgW3VwcGVyX2JvdW5kXSBbICI6IiAnCisgICAgICAgICAgICAgJ1tzdHJpZGVdIF1cbicKKyAgICAgICAgICAgICAnICAgbG93ZXJfYm91bmQgIDo6PSBleHByZXNzaW9uXG4nCisgICAgICAgICAgICAgJyAgIHVwcGVyX2JvdW5kICA6Oj0gZXhwcmVzc2lvblxuJworICAgICAgICAgICAgICcgICBzdHJpZGUgICAgICAgOjo9IGV4cHJlc3Npb25cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZXJlIGlzIGFtYmlndWl0eSBpbiB0aGUgZm9ybWFsIHN5bnRheCBoZXJlOiBhbnl0aGluZyB0aGF0ICcKKyAgICAgICAgICAgICAnbG9va3MgbGlrZVxuJworICAgICAgICAgICAgICdhbiBleHByZXNzaW9uIGxpc3QgYWxzbyBsb29rcyBsaWtlIGEgc2xpY2UgbGlzdCwgc28gYW55ICcKKyAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uXG4nCisgICAgICAgICAgICAgJ2NhbiBiZSBpbnRlcnByZXRlZCBhcyBhIHNsaWNpbmcuICBSYXRoZXIgdGhhbiBmdXJ0aGVyICcKKyAgICAgICAgICAgICAnY29tcGxpY2F0aW5nIHRoZVxuJworICAgICAgICAgICAgICdzeW50YXgsIHRoaXMgaXMgZGlzYW1iaWd1YXRlZCBieSBkZWZpbmluZyB0aGF0IGluIHRoaXMgY2FzZSB0aGVcbicKKyAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gYXMgYSBzdWJzY3JpcHRpb24gdGFrZXMgcHJpb3JpdHkgb3ZlciB0aGVcbicKKyAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb24gYXMgYSBzbGljaW5nICh0aGlzIGlzIHRoZSBjYXNlIGlmIHRoZSBzbGljZSBsaXN0XG4nCisgICAgICAgICAgICAgJ2NvbnRhaW5zIG5vIHByb3BlciBzbGljZSkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdUaGUgc2VtYW50aWNzIGZvciBhIHNsaWNpbmcgYXJlIGFzIGZvbGxvd3MuICBUaGUgcHJpbWFyeSBpcyAnCisgICAgICAgICAgICAgJ2luZGV4ZWRcbicKKyAgICAgICAgICAgICAnKHVzaW5nIHRoZSBzYW1lICJfX2dldGl0ZW1fXygpIiBtZXRob2QgYXMgbm9ybWFsIHN1YnNjcmlwdGlvbikgJworICAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICAna2V5IHRoYXQgaXMgY29uc3RydWN0ZWQgZnJvbSB0aGUgc2xpY2UgbGlzdCwgYXMgZm9sbG93cy4gIElmIHRoZSAnCisgICAgICAgICAgICAgJ3NsaWNlXG4nCisgICAgICAgICAgICAgJ2xpc3QgY29udGFpbnMgYXQgbGVhc3Qgb25lIGNvbW1hLCB0aGUga2V5IGlzIGEgdHVwbGUgY29udGFpbmluZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICdjb252ZXJzaW9uIG9mIHRoZSBzbGljZSBpdGVtczsgb3RoZXJ3aXNlLCB0aGUgY29udmVyc2lvbiBvZiB0aGUgJworICAgICAgICAgICAgICdsb25lXG4nCisgICAgICAgICAgICAgJ3NsaWNlIGl0ZW0gaXMgdGhlIGtleS4gIFRoZSBjb252ZXJzaW9uIG9mIGEgc2xpY2UgaXRlbSB0aGF0IGlzICcKKyAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAnZXhwcmVzc2lvbiBpcyB0aGF0IGV4cHJlc3Npb24uICBUaGUgY29udmVyc2lvbiBvZiBhIHByb3BlciBzbGljZSAnCisgICAgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAgICAnc2xpY2Ugb2JqZWN0IChzZWUgc2VjdGlvbiBUaGUgc3RhbmRhcmQgdHlwZSBoaWVyYXJjaHkpIHdob3NlICcKKyAgICAgICAgICAgICAnInN0YXJ0IixcbicKKyAgICAgICAgICAgICAnInN0b3AiIGFuZCAic3RlcCIgYXR0cmlidXRlcyBhcmUgdGhlIHZhbHVlcyBvZiB0aGUgZXhwcmVzc2lvbnMgJworICAgICAgICAgICAgICdnaXZlblxuJworICAgICAgICAgICAgICdhcyBsb3dlciBib3VuZCwgdXBwZXIgYm91bmQgYW5kIHN0cmlkZSwgcmVzcGVjdGl2ZWx5LCAnCisgICAgICAgICAgICAgJ3N1YnN0aXR1dGluZ1xuJworICAgICAgICAgICAgICciTm9uZSIgZm9yIG1pc3NpbmcgZXhwcmVzc2lvbnMuXG4nLAorICdzcGVjaWFsYXR0cnMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIEF0dHJpYnV0ZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgaW1wbGVtZW50YXRpb24gYWRkcyBhIGZldyBzcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzICcKKyAgICAgICAgICAgICAgICAgJ3RvIHNldmVyYWxcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0eXBlcywgd2hlcmUgdGhleSBhcmUgcmVsZXZhbnQuICBTb21lIG9mIHRoZXNlIGFyZSAnCisgICAgICAgICAgICAgICAgICdub3QgcmVwb3J0ZWRcbicKKyAgICAgICAgICAgICAgICAgJ2J5IHRoZSAiZGlyKCkiIGJ1aWx0LWluIGZ1bmN0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kaWN0X19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQSBkaWN0aW9uYXJ5IG9yIG90aGVyIG1hcHBpbmcgb2JqZWN0IHVzZWQgdG8gc3RvcmUgYW4gJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJyAgICh3cml0YWJsZSkgYXR0cmlidXRlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2UuX19jbGFzc19fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBjbGFzcyB0byB3aGljaCBhIGNsYXNzIGluc3RhbmNlIGJlbG9uZ3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fYmFzZXNfX1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgdHVwbGUgb2YgYmFzZSBjbGFzc2VzIG9mIGEgY2xhc3Mgb2JqZWN0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uLl9fbmFtZV9fXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBuYW1lIG9mIHRoZSBjbGFzcywgZnVuY3Rpb24sIG1ldGhvZCwgZGVzY3JpcHRvciwgb3IgJworICAgICAgICAgICAgICAgICAnZ2VuZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbi5fX3F1YWxuYW1lX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlICpxdWFsaWZpZWQgbmFtZSogb2YgdGhlIGNsYXNzLCBmdW5jdGlvbiwgbWV0aG9kLCAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLCBvclxuJworICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdG9yIGluc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOZXcgaW4gdmVyc2lvbiAzLjMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fbXJvX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBhdHRyaWJ1dGUgaXMgYSB0dXBsZSBvZiBjbGFzc2VzIHRoYXQgYXJlIGNvbnNpZGVyZWQgJworICAgICAgICAgICAgICAgICAnd2hlblxuJworICAgICAgICAgICAgICAgICAnICAgbG9va2luZyBmb3IgYmFzZSBjbGFzc2VzIGR1cmluZyBtZXRob2QgcmVzb2x1dGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MubXJvKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgY2FuIGJlIG92ZXJyaWRkZW4gYnkgYSBtZXRhY2xhc3MgdG8gY3VzdG9taXplICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJlc29sdXRpb24gb3JkZXIgZm9yIGl0cyBpbnN0YW5jZXMuICBJdCBpcyBjYWxsZWQgJworICAgICAgICAgICAgICAgICAnYXQgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RhbnRpYXRpb24sIGFuZCBpdHMgcmVzdWx0IGlzIHN0b3JlZCBpbiAiX19tcm9fXyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLl9fc3ViY2xhc3Nlc19fKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRWFjaCBjbGFzcyBrZWVwcyBhIGxpc3Qgb2Ygd2VhayByZWZlcmVuY2VzIHRvIGl0cyAnCisgICAgICAgICAgICAgICAgICdpbW1lZGlhdGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMuICBUaGlzIG1ldGhvZCByZXR1cm5zIGEgbGlzdCBvZiBhbGwgdGhvc2UgJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICAgICAnICAgc3RpbGwgYWxpdmUuIEV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBpbnQuX19zdWJjbGFzc2VzX18oKVxuJworICAgICAgICAgICAgICAgICAiICAgICAgWzxjbGFzcyAnYm9vbCc+XVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICctWyBGb290bm90ZXMgXS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnWzFdIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb24gdGhlc2Ugc3BlY2lhbCBtZXRob2RzIG1heSBiZSAnCisgICAgICAgICAgICAgICAgICdmb3VuZFxuJworICAgICAgICAgICAgICAgICAnICAgIGluIHRoZSBQeXRob24gUmVmZXJlbmNlIE1hbnVhbCAoQmFzaWMgY3VzdG9taXphdGlvbikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1syXSBBcyBhIGNvbnNlcXVlbmNlLCB0aGUgbGlzdCAiWzEsIDJdIiBpcyBjb25zaWRlcmVkIGVxdWFsICcKKyAgICAgICAgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgICAgICAgICcgICAgIlsxLjAsIDIuMF0iLCBhbmQgc2ltaWxhcmx5IGZvciB0dXBsZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIlszXSBUaGV5IG11c3QgaGF2ZSBzaW5jZSB0aGUgcGFyc2VyIGNhbid0IHRlbGwgdGhlIHR5cGUgb2YgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3BlcmFuZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1s0XSBDYXNlZCBjaGFyYWN0ZXJzIGFyZSB0aG9zZSB3aXRoIGdlbmVyYWwgY2F0ZWdvcnkgJworICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgJyAgICBiZWluZyBvbmUgb2YgIkx1IiAoTGV0dGVyLCB1cHBlcmNhc2UpLCAiTGwiIChMZXR0ZXIsICcKKyAgICAgICAgICAgICAgICAgJ2xvd2VyY2FzZSksXG4nCisgICAgICAgICAgICAgICAgICcgICAgb3IgIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdbNV0gVG8gZm9ybWF0IG9ubHkgYSB0dXBsZSB5b3Ugc2hvdWxkIHRoZXJlZm9yZSBwcm92aWRlIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgICBzaW5nbGV0b24gdHVwbGUgd2hvc2Ugb25seSBlbGVtZW50IGlzIHRoZSB0dXBsZSB0byBiZSAnCisgICAgICAgICAgICAgICAgICdmb3JtYXR0ZWQuXG4nLAorICdzcGVjaWFsbmFtZXMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdTcGVjaWFsIG1ldGhvZCBuYW1lc1xuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSBjbGFzcyBjYW4gaW1wbGVtZW50IGNlcnRhaW4gb3BlcmF0aW9ucyB0aGF0IGFyZSBpbnZva2VkIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWxcbicKKyAgICAgICAgICAgICAgICAgJ3N5bnRheCAoc3VjaCBhcyBhcml0aG1ldGljIG9wZXJhdGlvbnMgb3Igc3Vic2NyaXB0aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdzbGljaW5nKSBieVxuJworICAgICAgICAgICAgICAgICAiZGVmaW5pbmcgbWV0aG9kcyB3aXRoIHNwZWNpYWwgbmFtZXMuIFRoaXMgaXMgUHl0aG9uJ3MgIgorICAgICAgICAgICAgICAgICAnYXBwcm9hY2ggdG9cbicKKyAgICAgICAgICAgICAgICAgJypvcGVyYXRvciBvdmVybG9hZGluZyosIGFsbG93aW5nIGNsYXNzZXMgdG8gZGVmaW5lIHRoZWlyIG93biAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvclxuJworICAgICAgICAgICAgICAgICAnd2l0aCByZXNwZWN0IHRvIGxhbmd1YWdlIG9wZXJhdG9ycy4gIEZvciBpbnN0YW5jZSwgaWYgYSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICdhIG1ldGhvZCBuYW1lZCAiX19nZXRpdGVtX18oKSIsIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgJworICAgICAgICAgICAgICAgICAndGhpcyBjbGFzcyxcbicKKyAgICAgICAgICAgICAgICAgJ3RoZW4gInhbaV0iIGlzIHJvdWdobHkgZXF1aXZhbGVudCB0byAidHlwZSh4KS5fX2dldGl0ZW1fXyh4LCAnCisgICAgICAgICAgICAgICAgICdpKSIuXG4nCisgICAgICAgICAgICAgICAgICdFeGNlcHQgd2hlcmUgbWVudGlvbmVkLCBhdHRlbXB0cyB0byBleGVjdXRlIGFuIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdyYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnZXhjZXB0aW9uIHdoZW4gbm8gYXBwcm9wcmlhdGUgbWV0aG9kIGlzIGRlZmluZWQgKHR5cGljYWxseVxuJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIiBvciAiVHlwZUVycm9yIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NldHRpbmcgYSBzcGVjaWFsIG1ldGhvZCB0byAiTm9uZSIgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvcnJlc3BvbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiBpcyBub3QgYXZhaWxhYmxlLiAgRm9yIGV4YW1wbGUsIGlmIGEgY2xhc3Mgc2V0cyAnCisgICAgICAgICAgICAgICAgICciX19pdGVyX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJ3RvICJOb25lIiwgdGhlIGNsYXNzIGlzIG5vdCBpdGVyYWJsZSwgc28gY2FsbGluZyAiaXRlcigpIiBvbiAnCisgICAgICAgICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlcyB3aWxsIHJhaXNlIGEgIlR5cGVFcnJvciIgKHdpdGhvdXQgZmFsbGluZyBiYWNrIHRvXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSIpLiBbMl1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBpbXBsZW1lbnRpbmcgYSBjbGFzcyB0aGF0IGVtdWxhdGVzIGFueSBidWlsdC1pbiB0eXBlLCAnCisgICAgICAgICAgICAgICAgICdpdCBpc1xuJworICAgICAgICAgICAgICAgICAnaW1wb3J0YW50IHRoYXQgdGhlIGVtdWxhdGlvbiBvbmx5IGJlIGltcGxlbWVudGVkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdkZWdyZWUgdGhhdCBpdFxuJworICAgICAgICAgICAgICAgICAnbWFrZXMgc2Vuc2UgZm9yIHRoZSBvYmplY3QgYmVpbmcgbW9kZWxsZWQuICBGb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICAgICAnc29tZVxuJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzIG1heSB3b3JrIHdlbGwgd2l0aCByZXRyaWV2YWwgb2YgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdlbGVtZW50cywgYnV0XG4nCisgICAgICAgICAgICAgICAgICdleHRyYWN0aW5nIGEgc2xpY2UgbWF5IG5vdCBtYWtlIHNlbnNlLiAgKE9uZSBleGFtcGxlIG9mIHRoaXMgJworICAgICAgICAgICAgICAgICAnaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICciTm9kZUxpc3QiIGludGVyZmFjZSBpbiB0aGUgVzNDXCdzIERvY3VtZW50IE9iamVjdCBNb2RlbC4pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQmFzaWMgY3VzdG9taXphdGlvblxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZXdfXyhjbHNbLCAuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gY3JlYXRlIGEgbmV3IGluc3RhbmNlIG9mIGNsYXNzICpjbHMqLiAgJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIgaXMgYVxuJworICAgICAgICAgICAgICAgICAnICAgc3RhdGljIG1ldGhvZCAoc3BlY2lhbC1jYXNlZCBzbyB5b3UgbmVlZCBub3QgZGVjbGFyZSBpdCAnCisgICAgICAgICAgICAgICAgICdhcyBzdWNoKVxuJworICAgICAgICAgICAgICAgICAnICAgdGhhdCB0YWtlcyB0aGUgY2xhc3Mgb2Ygd2hpY2ggYW4gaW5zdGFuY2Ugd2FzIHJlcXVlc3RlZCAnCisgICAgICAgICAgICAgICAgICdhcyBpdHNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZpcnN0IGFyZ3VtZW50LiAgVGhlIHJlbWFpbmluZyBhcmd1bWVudHMgYXJlIHRob3NlIHBhc3NlZCAnCisgICAgICAgICAgICAgICAgICd0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBjb25zdHJ1Y3RvciBleHByZXNzaW9uICh0aGUgY2FsbCB0byB0aGUgY2xhc3MpLiAgJworICAgICAgICAgICAgICAgICAnVGhlIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUgb2YgIl9fbmV3X18oKSIgc2hvdWxkIGJlIHRoZSBuZXcgb2JqZWN0IGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJyh1c3VhbGx5IGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBvZiAqY2xzKikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFR5cGljYWwgaW1wbGVtZW50YXRpb25zIGNyZWF0ZSBhIG5ldyBpbnN0YW5jZSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3MgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGludm9raW5nIHRoZSBzdXBlcmNsYXNzXCdzICJfX25ld19fKCkiIG1ldGhvZCB1c2luZ1xuJworICAgICAgICAgICAgICAgICAnICAgInN1cGVyKGN1cnJlbnRjbGFzcywgY2xzKS5fX25ld19fKGNsc1ssIC4uLl0pIiB3aXRoICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudHMgYW5kIHRoZW4gbW9kaWZ5aW5nIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2FzXG4nCisgICAgICAgICAgICAgICAgICcgICBuZWNlc3NhcnkgYmVmb3JlIHJldHVybmluZyBpdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgIl9fbmV3X18oKSIgcmV0dXJucyBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnbmV3XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgYmUgaW52b2tlZCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICcgICAiX19pbml0X18oc2VsZlssIC4uLl0pIiwgd2hlcmUgKnNlbGYqIGlzIHRoZSBuZXcgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgcmVtYWluaW5nIGFyZ3VtZW50cyBhcmUgdGhlIHNhbWUgYXMgd2VyZSBwYXNzZWQgdG8gJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmICJfX25ld19fKCkiIGRvZXMgbm90IHJldHVybiBhbiBpbnN0YW5jZSBvZiAqY2xzKiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICd0aGUgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZVwncyAiX19pbml0X18oKSIgbWV0aG9kIHdpbGwgbm90IGJlIGludm9rZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX25ld19fKCkiIGlzIGludGVuZGVkIG1haW5seSB0byBhbGxvdyBzdWJjbGFzc2VzIG9mICcKKyAgICAgICAgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICAgICAgICAnICAgdHlwZXMgKGxpa2UgaW50LCBzdHIsIG9yIHR1cGxlKSB0byBjdXN0b21pemUgaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnY3JlYXRpb24uICBJdFxuJworICAgICAgICAgICAgICAgICAnICAgaXMgYWxzbyBjb21tb25seSBvdmVycmlkZGVuIGluIGN1c3RvbSBtZXRhY2xhc3NlcyBpbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciB0b1xuJworICAgICAgICAgICAgICAgICAnICAgY3VzdG9taXplIGNsYXNzIGNyZWF0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbml0X18oc2VsZlssIC4uLl0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBhZnRlciB0aGUgaW5zdGFuY2UgaGFzIGJlZW4gY3JlYXRlZCAoYnkgJworICAgICAgICAgICAgICAgICAnIl9fbmV3X18oKSIpLCBidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlZm9yZSBpdCBpcyByZXR1cm5lZCB0byB0aGUgY2FsbGVyLiAgVGhlIGFyZ3VtZW50cyBhcmUgJworICAgICAgICAgICAgICAgICAndGhvc2VcbicKKyAgICAgICAgICAgICAgICAgJyAgIHBhc3NlZCB0byB0aGUgY2xhc3MgY29uc3RydWN0b3IgZXhwcmVzc2lvbi4gIElmIGEgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBoYXMgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2luaXRfXygpIiBtZXRob2QsIHRoZSBkZXJpdmVkIGNsYXNzXCdzICJfX2luaXRfXygpIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QsIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICBhbnksIG11c3QgZXhwbGljaXRseSBjYWxsIGl0IHRvIGVuc3VyZSBwcm9wZXIgJworICAgICAgICAgICAgICAgICAnaW5pdGlhbGl6YXRpb24gb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlIGluc3RhbmNlOyBmb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICJCYXNlQ2xhc3MuX19pbml0X18oc2VsZiwgW2FyZ3MuLi5dKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEJlY2F1c2UgIl9fbmV3X18oKSIgYW5kICJfX2luaXRfXygpIiB3b3JrIHRvZ2V0aGVyIGluICcKKyAgICAgICAgICAgICAgICAgJ2NvbnN0cnVjdGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0cyAoIl9fbmV3X18oKSIgdG8gY3JlYXRlIGl0LCBhbmQgIl9faW5pdF9fKCkiIHRvICcKKyAgICAgICAgICAgICAgICAgJ2N1c3RvbWl6ZVxuJworICAgICAgICAgICAgICAgICAnICAgaXQpLCBubyBub24tIk5vbmUiIHZhbHVlIG1heSBiZSByZXR1cm5lZCBieSAiX19pbml0X18oKSI7ICcKKyAgICAgICAgICAgICAgICAgJ2RvaW5nIHNvXG4nCisgICAgICAgICAgICAgICAgICcgICB3aWxsIGNhdXNlIGEgIlR5cGVFcnJvciIgdG8gYmUgcmFpc2VkIGF0IHJ1bnRpbWUuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuIHRoZSBpbnN0YW5jZSBpcyBhYm91dCB0byBiZSBkZXN0cm95ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGFsc29cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxlZCBhIGRlc3RydWN0b3IuICBJZiBhIGJhc2UgY2xhc3MgaGFzIGEgIl9fZGVsX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlcml2ZWQgY2xhc3NcJ3MgIl9fZGVsX18oKSIgbWV0aG9kLCBpZiBhbnksIG11c3QgJworICAgICAgICAgICAgICAgICAnZXhwbGljaXRseSBjYWxsIGl0XG4nCisgICAgICAgICAgICAgICAgICcgICB0byBlbnN1cmUgcHJvcGVyIGRlbGV0aW9uIG9mIHRoZSBiYXNlIGNsYXNzIHBhcnQgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlLlxuJworICAgICAgICAgICAgICAgICAnICAgTm90ZSB0aGF0IGl0IGlzIHBvc3NpYmxlICh0aG91Z2ggbm90IHJlY29tbWVuZGVkISkgZm9yICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZGVsX18oKSIgbWV0aG9kIHRvIHBvc3Rwb25lIGRlc3RydWN0aW9uIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBieVxuJworICAgICAgICAgICAgICAgICAnICAgY3JlYXRpbmcgYSBuZXcgcmVmZXJlbmNlIHRvIGl0LiAgSXQgbWF5IHRoZW4gYmUgY2FsbGVkIGF0ICcKKyAgICAgICAgICAgICAgICAgJ2EgbGF0ZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRpbWUgd2hlbiB0aGlzIG5ldyByZWZlcmVuY2UgaXMgZGVsZXRlZC4gIEl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICdndWFyYW50ZWVkIHRoYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2RlbF9fKCkiIG1ldGhvZHMgYXJlIGNhbGxlZCBmb3Igb2JqZWN0cyB0aGF0IHN0aWxsICcKKyAgICAgICAgICAgICAgICAgJ2V4aXN0IHdoZW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBpbnRlcnByZXRlciBleGl0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogImRlbCB4IiBkb2VzblwndCBkaXJlY3RseSBjYWxsICJ4Ll9fZGVsX18oKSIgLS0tICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb3JtZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGVjcmVtZW50cyB0aGUgcmVmZXJlbmNlIGNvdW50IGZvciAieCIgYnkgb25lLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2xhdHRlciBpc1xuJworICAgICAgICAgICAgICAgICAnICAgICBvbmx5IGNhbGxlZCB3aGVuICJ4IlwncyByZWZlcmVuY2UgY291bnQgcmVhY2hlcyB6ZXJvLiAgJworICAgICAgICAgICAgICAgICAnU29tZSBjb21tb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc2l0dWF0aW9ucyB0aGF0IG1heSBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnQgb2YgYW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGZyb21cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZ29pbmcgdG8gemVybyBpbmNsdWRlOiBjaXJjdWxhciByZWZlcmVuY2VzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAnb2JqZWN0cyAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYSBkb3VibHktbGlua2VkIGxpc3Qgb3IgYSB0cmVlIGRhdGEgc3RydWN0dXJlIHdpdGggJworICAgICAgICAgICAgICAgICAncGFyZW50IGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICBjaGlsZCBwb2ludGVycyk7IGEgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrICcKKyAgICAgICAgICAgICAgICAgJ2ZyYW1lIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGEgZnVuY3Rpb24gdGhhdCBjYXVnaHQgYW4gZXhjZXB0aW9uICh0aGUgdHJhY2ViYWNrICcKKyAgICAgICAgICAgICAgICAgJ3N0b3JlZCBpblxuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLmV4Y19pbmZvKClbMl0iIGtlZXBzIHRoZSBzdGFjayBmcmFtZSBhbGl2ZSk7IG9yIGEgJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBvYmplY3Qgb24gdGhlIHN0YWNrIGZyYW1lIHRoYXQgcmFpc2VkIGFuICcKKyAgICAgICAgICAgICAgICAgJ3VuaGFuZGxlZFxuJworICAgICAgICAgICAgICAgICAnICAgICBleGNlcHRpb24gaW4gaW50ZXJhY3RpdmUgbW9kZSAodGhlIHRyYWNlYmFjayBzdG9yZWQgaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgInN5cy5sYXN0X3RyYWNlYmFjayIga2VlcHMgdGhlIHN0YWNrIGZyYW1lIGFsaXZlKS4gIFRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAnICAgICBzaXR1YXRpb24gY2FuIG9ubHkgYmUgcmVtZWRpZWQgYnkgZXhwbGljaXRseSBicmVha2luZyAnCisgICAgICAgICAgICAgICAgICd0aGUgY3ljbGVzO1xuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgc2Vjb25kIGNhbiBiZSByZXNvbHZlZCBieSBmcmVlaW5nIHRoZSByZWZlcmVuY2UgdG8gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRyYWNlYmFjayBvYmplY3Qgd2hlbiBpdCBpcyBubyBsb25nZXIgdXNlZnVsLCBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3RoaXJkIGNhblxuJworICAgICAgICAgICAgICAgICAnICAgICBiZSByZXNvbHZlZCBieSBzdG9yaW5nICJOb25lIiBpbiAic3lzLmxhc3RfdHJhY2ViYWNrIi4gJworICAgICAgICAgICAgICAgICAnQ2lyY3VsYXJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgcmVmZXJlbmNlcyB3aGljaCBhcmUgZ2FyYmFnZSBhcmUgZGV0ZWN0ZWQgYW5kIGNsZWFuZWQgJworICAgICAgICAgICAgICAgICAndXAgd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgY3ljbGljIGdhcmJhZ2UgY29sbGVjdG9yIGlzIGVuYWJsZWQgKGl0J3Mgb24gYnkgIgorICAgICAgICAgICAgICAgICAnZGVmYXVsdCkuIFJlZmVyXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRvIHRoZSBkb2N1bWVudGF0aW9uIGZvciB0aGUgImdjIiBtb2R1bGUgZm9yIG1vcmUgJworICAgICAgICAgICAgICAgICAnaW5mb3JtYXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYWJvdXQgdGhpcyB0b3BpYy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgV2FybmluZzogRHVlIHRvIHRoZSBwcmVjYXJpb3VzIGNpcmN1bXN0YW5jZXMgdW5kZXIgd2hpY2hcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9fZGVsX18oKSIgbWV0aG9kcyBhcmUgaW52b2tlZCwgZXhjZXB0aW9ucyB0aGF0IG9jY3VyICcKKyAgICAgICAgICAgICAgICAgJ2R1cmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgICB0aGVpciBleGVjdXRpb24gYXJlIGlnbm9yZWQsIGFuZCBhIHdhcm5pbmcgaXMgcHJpbnRlZCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgICAic3lzLnN0ZGVyciIgaW5zdGVhZC4gQWxzbywgd2hlbiAiX19kZWxfXygpIiBpcyBpbnZva2VkICcKKyAgICAgICAgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHJlc3BvbnNlIHRvIGEgbW9kdWxlIGJlaW5nIGRlbGV0ZWQgKGUuZy4sIHdoZW4gJworICAgICAgICAgICAgICAgICAnZXhlY3V0aW9uIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICBwcm9ncmFtIGlzIGRvbmUpLCBvdGhlciBnbG9iYWxzIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2RlbF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1ldGhvZCBtYXkgYWxyZWFkeSBoYXZlIGJlZW4gZGVsZXRlZCBvciBpbiB0aGUgcHJvY2VzcyAnCisgICAgICAgICAgICAgICAgICdvZiBiZWluZ1xuJworICAgICAgICAgICAgICAgICAnICAgICB0b3JuIGRvd24gKGUuZy4gdGhlIGltcG9ydCBtYWNoaW5lcnkgc2h1dHRpbmcgZG93bikuICAnCisgICAgICAgICAgICAgICAgICdGb3IgdGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgICByZWFzb24sICJfX2RlbF9fKCkiIG1ldGhvZHMgc2hvdWxkIGRvIHRoZSBhYnNvbHV0ZSAnCisgICAgICAgICAgICAgICAgICdtaW5pbXVtIG5lZWRlZFxuJworICAgICAgICAgICAgICAgICAnICAgICB0byBtYWludGFpbiBleHRlcm5hbCBpbnZhcmlhbnRzLiAgU3RhcnRpbmcgd2l0aCB2ZXJzaW9uICcKKyAgICAgICAgICAgICAgICAgJzEuNSxcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgUHl0aG9uIGd1YXJhbnRlZXMgdGhhdCBnbG9iYWxzIHdob3NlIG5hbWUgYmVnaW5zIHdpdGggYSAnCisgICAgICAgICAgICAgICAgICdzaW5nbGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgdW5kZXJzY29yZSBhcmUgZGVsZXRlZCBmcm9tIHRoZWlyIG1vZHVsZSBiZWZvcmUgb3RoZXIgJworICAgICAgICAgICAgICAgICAnZ2xvYmFscyBhcmVcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGVsZXRlZDsgaWYgbm8gb3RoZXIgcmVmZXJlbmNlcyB0byBzdWNoIGdsb2JhbHMgZXhpc3QsICcKKyAgICAgICAgICAgICAgICAgJ3RoaXMgbWF5XG4nCisgICAgICAgICAgICAgICAgICcgICAgIGhlbHAgaW4gYXNzdXJpbmcgdGhhdCBpbXBvcnRlZCBtb2R1bGVzIGFyZSBzdGlsbCAnCisgICAgICAgICAgICAgICAgICdhdmFpbGFibGUgYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRpbWUgd2hlbiB0aGUgIl9fZGVsX18oKSIgbWV0aG9kIGlzIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmVwcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCBieSB0aGUgInJlcHIoKSIgYnVpbHQtaW4gZnVuY3Rpb24gdG8gY29tcHV0ZSB0aGUgJworICAgICAgICAgICAgICAgICAnIm9mZmljaWFsIlxuJworICAgICAgICAgICAgICAgICAnICAgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGFuIG9iamVjdC4gIElmIGF0IGFsbCBwb3NzaWJsZSwgJworICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAnICAgc2hvdWxkIGxvb2sgbGlrZSBhIHZhbGlkIFB5dGhvbiBleHByZXNzaW9uIHRoYXQgY291bGQgYmUgJworICAgICAgICAgICAgICAgICAndXNlZCB0b1xuJworICAgICAgICAgICAgICAgICAnICAgcmVjcmVhdGUgYW4gb2JqZWN0IHdpdGggdGhlIHNhbWUgdmFsdWUgKGdpdmVuIGFuICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBlbnZpcm9ubWVudCkuICBJZiB0aGlzIGlzIG5vdCBwb3NzaWJsZSwgYSBzdHJpbmcgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Zvcm1cbicKKyAgICAgICAgICAgICAgICAgJyAgICI8Li4uc29tZSB1c2VmdWwgZGVzY3JpcHRpb24uLi4+IiBzaG91bGQgYmUgcmV0dXJuZWQuIFRoZSAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIG11c3QgYmUgYSBzdHJpbmcgb2JqZWN0LiBJZiBhIGNsYXNzIGRlZmluZXMgJworICAgICAgICAgICAgICAgICAnIl9fcmVwcl9fKCkiIGJ1dFxuJworICAgICAgICAgICAgICAgICAnICAgbm90ICJfX3N0cl9fKCkiLCB0aGVuICJfX3JlcHJfXygpIiBpcyBhbHNvIHVzZWQgd2hlbiBhbiAnCisgICAgICAgICAgICAgICAgICciaW5mb3JtYWwiXG4nCisgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgaW5zdGFuY2VzIG9mIHRoYXQgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAncmVxdWlyZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoaXMgaXMgdHlwaWNhbGx5IHVzZWQgZm9yIGRlYnVnZ2luZywgc28gaXQgaXMgaW1wb3J0YW50ICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBpcyBpbmZvcm1hdGlvbi1yaWNoIGFuZCB1bmFtYmlndW91cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc3RyX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJzdHIob2JqZWN0KSIgYW5kIHRoZSBidWlsdC1pbiBmdW5jdGlvbnMgJworICAgICAgICAgICAgICAgICAnImZvcm1hdCgpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwcmludCgpIiB0byBjb21wdXRlIHRoZSAiaW5mb3JtYWwiIG9yIG5pY2VseSBwcmludGFibGUgJworICAgICAgICAgICAgICAgICAnc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICByZXByZXNlbnRhdGlvbiBvZiBhbiBvYmplY3QuICBUaGUgcmV0dXJuIHZhbHVlIG11c3QgYmUgYSAnCisgICAgICAgICAgICAgICAgICdzdHJpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2QgZGlmZmVycyBmcm9tICJvYmplY3QuX19yZXByX18oKSIgaW4gdGhhdCAnCisgICAgICAgICAgICAgICAgICd0aGVyZSBpcyBub1xuJworICAgICAgICAgICAgICAgICAnICAgZXhwZWN0YXRpb24gdGhhdCAiX19zdHJfXygpIiByZXR1cm4gYSB2YWxpZCBQeXRob24gJworICAgICAgICAgICAgICAgICAnZXhwcmVzc2lvbjogYVxuJworICAgICAgICAgICAgICAgICAnICAgbW9yZSBjb252ZW5pZW50IG9yIGNvbmNpc2UgcmVwcmVzZW50YXRpb24gY2FuIGJlIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRlZmluZWQgYnkgdGhlIGJ1aWx0LWluIHR5cGUgJworICAgICAgICAgICAgICAgICAnIm9iamVjdCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxzICJvYmplY3QuX19yZXByX18oKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2J5dGVzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5ICJieXRlcygpIiB0byBjb21wdXRlIGEgYnl0ZS1zdHJpbmcgJworICAgICAgICAgICAgICAgICAncmVwcmVzZW50YXRpb24gb2YgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gVGhpcyBzaG91bGQgcmV0dXJuIGEgImJ5dGVzIiBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgdGhlICJmb3JtYXQoKSIgYnVpbHQtaW4gZnVuY3Rpb24sIGFuZCBieSAnCisgICAgICAgICAgICAgICAgICdleHRlbnNpb24sXG4nCisgICAgICAgICAgICAgICAgICcgICBldmFsdWF0aW9uIG9mIGZvcm1hdHRlZCBzdHJpbmcgbGl0ZXJhbHMgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCB0byBwcm9kdWNlIGEgImZvcm1hdHRlZCIgc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mICcKKyAgICAgICAgICAgICAgICAgJ2FuXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3QuIFRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHRoYXQgJworICAgICAgICAgICAgICAgICAnY29udGFpbnMgYVxuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRpb24gb2YgdGhlIGZvcm1hdHRpbmcgb3B0aW9ucyBkZXNpcmVkLiBUaGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0YXRpb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIG9mIHRoZSAiZm9ybWF0X3NwZWMiIGFyZ3VtZW50IGlzIHVwIHRvIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgIl9fZm9ybWF0X18oKSIsIGhvd2V2ZXIgbW9zdCBjbGFzc2VzIHdpbGwgZWl0aGVyICcKKyAgICAgICAgICAgICAgICAgJ2RlbGVnYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIHRvIG9uZSBvZiB0aGUgYnVpbHQtaW4gdHlwZXMsIG9yIHVzZSBhICcKKyAgICAgICAgICAgICAgICAgJ3NpbWlsYXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvcm1hdHRpbmcgb3B0aW9uIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgU2VlIEZvcm1hdCBTcGVjaWZpY2F0aW9uIE1pbmktTGFuZ3VhZ2UgZm9yIGEgZGVzY3JpcHRpb24gJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdGFuZGFyZCBmb3JtYXR0aW5nIHN5bnRheC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlIHJldHVybiB2YWx1ZSBtdXN0IGJlIGEgc3RyaW5nIG9iamVjdC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuNDogVGhlIF9fZm9ybWF0X18gbWV0aG9kIG9mICJvYmplY3QiICcKKyAgICAgICAgICAgICAgICAgJ2l0c2VsZlxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VzIGEgIlR5cGVFcnJvciIgaWYgcGFzc2VkIGFueSBub24tZW1wdHkgc3RyaW5nLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbGVfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2VxX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19uZV9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ3RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dlX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgc28tY2FsbGVkICJyaWNoIGNvbXBhcmlzb24iIG1ldGhvZHMuIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGVuY2UgYmV0d2VlbiBvcGVyYXRvciBzeW1ib2xzIGFuZCBtZXRob2QgbmFtZXMgJworICAgICAgICAgICAgICAgICAnaXMgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGZvbGxvd3M6ICJ4PHkiIGNhbGxzICJ4Ll9fbHRfXyh5KSIsICJ4PD15IiBjYWxscyAnCisgICAgICAgICAgICAgICAgICcieC5fX2xlX18oeSkiLFxuJworICAgICAgICAgICAgICAgICAnICAgIng9PXkiIGNhbGxzICJ4Ll9fZXFfXyh5KSIsICJ4IT15IiBjYWxscyAieC5fX25lX18oeSkiLCAnCisgICAgICAgICAgICAgICAgICcieD55IiBjYWxsc1xuJworICAgICAgICAgICAgICAgICAnICAgInguX19ndF9fKHkpIiwgYW5kICJ4Pj15IiBjYWxscyAieC5fX2dlX18oeSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBBIHJpY2ggY29tcGFyaXNvbiBtZXRob2QgbWF5IHJldHVybiB0aGUgc2luZ2xldG9uICcKKyAgICAgICAgICAgICAgICAgJyJOb3RJbXBsZW1lbnRlZCJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlmIGl0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uIGZvciBhIGdpdmVuIHBhaXIgJworICAgICAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFyZ3VtZW50cy4gQnkgY29udmVudGlvbiwgIkZhbHNlIiBhbmQgIlRydWUiIGFyZSByZXR1cm5lZCAnCisgICAgICAgICAgICAgICAgICdmb3IgYVxuJworICAgICAgICAgICAgICAgICAnICAgc3VjY2Vzc2Z1bCBjb21wYXJpc29uLiBIb3dldmVyLCB0aGVzZSBtZXRob2RzIGNhbiByZXR1cm4gJworICAgICAgICAgICAgICAgICAnYW55IHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAnICAgc28gaWYgdGhlIGNvbXBhcmlzb24gb3BlcmF0b3IgaXMgdXNlZCBpbiBhIEJvb2xlYW4gJworICAgICAgICAgICAgICAgICAnY29udGV4dCAoZS5nLixcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBjb25kaXRpb24gb2YgYW4gImlmIiBzdGF0ZW1lbnQpLCBQeXRob24gd2lsbCBjYWxsICcKKyAgICAgICAgICAgICAgICAgJyJib29sKCkiXG4nCisgICAgICAgICAgICAgICAgICcgICBvbiB0aGUgdmFsdWUgdG8gZGV0ZXJtaW5lIGlmIHRoZSByZXN1bHQgaXMgdHJ1ZSBvciAnCisgICAgICAgICAgICAgICAgICdmYWxzZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQnkgZGVmYXVsdCwgIl9fbmVfXygpIiBkZWxlZ2F0ZXMgdG8gIl9fZXFfXygpIiBhbmQgJworICAgICAgICAgICAgICAgICAnaW52ZXJ0cyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc3VsdCB1bmxlc3MgaXQgaXMgIk5vdEltcGxlbWVudGVkIi4gIFRoZXJlIGFyZSBubyBvdGhlciAnCisgICAgICAgICAgICAgICAgICdpbXBsaWVkXG4nCisgICAgICAgICAgICAgICAgICcgICByZWxhdGlvbnNoaXBzIGFtb25nIHRoZSBjb21wYXJpc29uIG9wZXJhdG9ycywgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGUsIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgdHJ1dGggb2YgIih4PHkgb3IgeD09eSkiIGRvZXMgbm90IGltcGx5ICJ4PD15Ii4gVG8gJworICAgICAgICAgICAgICAgICAnYXV0b21hdGljYWxseVxuJworICAgICAgICAgICAgICAgICAnICAgZ2VuZXJhdGUgb3JkZXJpbmcgb3BlcmF0aW9ucyBmcm9tIGEgc2luZ2xlIHJvb3QgJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uLCBzZWVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJmdW5jdG9vbHMudG90YWxfb3JkZXJpbmcoKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFNlZSB0aGUgcGFyYWdyYXBoIG9uICJfX2hhc2hfXygpIiBmb3Igc29tZSBpbXBvcnRhbnQgJworICAgICAgICAgICAgICAgICAnbm90ZXMgb25cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0aW5nICpoYXNoYWJsZSogb2JqZWN0cyB3aGljaCBzdXBwb3J0IGN1c3RvbSAnCisgICAgICAgICAgICAgICAgICdjb21wYXJpc29uXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIGFuZCBhcmUgdXNhYmxlIGFzIGRpY3Rpb25hcnkga2V5cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhlcmUgYXJlIG5vIHN3YXBwZWQtYXJndW1lbnQgdmVyc2lvbnMgb2YgdGhlc2UgbWV0aG9kcyAnCisgICAgICAgICAgICAgICAgICcodG8gYmUgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgd2hlbiB0aGUgbGVmdCBhcmd1bWVudCBkb2VzIG5vdCBzdXBwb3J0IHRoZSBvcGVyYXRpb24gYnV0ICcKKyAgICAgICAgICAgICAgICAgJ3RoZSByaWdodFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgZG9lcyk7IHJhdGhlciwgIl9fbHRfXygpIiBhbmQgIl9fZ3RfXygpIiBhcmUgJworICAgICAgICAgICAgICAgICAiZWFjaCBvdGhlcidzXG4iCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0aW9uLCAiX19sZV9fKCkiIGFuZCAiX19nZV9fKCkiIGFyZSBlYWNoIG90aGVyXCdzICcKKyAgICAgICAgICAgICAgICAgJ3JlZmxlY3Rpb24sXG4nCisgICAgICAgICAgICAgICAgICcgICBhbmQgIl9fZXFfXygpIiBhbmQgIl9fbmVfXygpIiBhcmUgdGhlaXIgb3duIHJlZmxlY3Rpb24uICcKKyAgICAgICAgICAgICAgICAgJ0lmIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgb3BlcmFuZHMgYXJlIG9mIGRpZmZlcmVudCB0eXBlcywgYW5kIHJpZ2h0IG9wZXJhbmQncyB0eXBlICIKKyAgICAgICAgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAgICAgICAgIiAgIGRpcmVjdCBvciBpbmRpcmVjdCBzdWJjbGFzcyBvZiB0aGUgbGVmdCBvcGVyYW5kJ3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICByZWZsZWN0ZWQgbWV0aG9kIG9mIHRoZSByaWdodCBvcGVyYW5kIGhhcyBwcmlvcml0eSwgJworICAgICAgICAgICAgICAgICAnb3RoZXJ3aXNlIHRoZVxuJworICAgICAgICAgICAgICAgICAiICAgbGVmdCBvcGVyYW5kJ3MgbWV0aG9kIGhhcyBwcmlvcml0eS4gIFZpcnR1YWwgc3ViY2xhc3NpbmcgIgorICAgICAgICAgICAgICAgICAnaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19oYXNoX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIGJ5IGJ1aWx0LWluIGZ1bmN0aW9uICJoYXNoKCkiIGFuZCBmb3Igb3BlcmF0aW9ucyAnCisgICAgICAgICAgICAgICAgICdvbiBtZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICcgICBvZiBoYXNoZWQgY29sbGVjdGlvbnMgaW5jbHVkaW5nICJzZXQiLCAiZnJvemVuc2V0IiwgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBzaG91bGQgcmV0dXJuIGFuIGludGVnZXIuICBUaGUgb25seSByZXF1aXJlZCAnCisgICAgICAgICAgICAgICAgICdwcm9wZXJ0eVxuJworICAgICAgICAgICAgICAgICAnICAgaXMgdGhhdCBvYmplY3RzIHdoaWNoIGNvbXBhcmUgZXF1YWwgaGF2ZSB0aGUgc2FtZSBoYXNoICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlOyBpdCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgYWR2aXNlZCB0byBzb21laG93IG1peCB0b2dldGhlciAoZS5nLiB1c2luZyBleGNsdXNpdmUgb3IpICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBoYXNoXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgZm9yIHRoZSBjb21wb25lbnRzIG9mIHRoZSBvYmplY3QgdGhhdCBhbHNvIHBsYXkgYSAnCisgICAgICAgICAgICAgICAgICdwYXJ0IGluXG4nCisgICAgICAgICAgICAgICAgICcgICBjb21wYXJpc29uIG9mIG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6ICJoYXNoKCkiIHRydW5jYXRlcyB0aGUgdmFsdWUgcmV0dXJuZWQgZnJvbSBhbiAnCisgICAgICAgICAgICAgICAgICJvYmplY3Qnc1xuIgorICAgICAgICAgICAgICAgICAnICAgICBjdXN0b20gIl9faGFzaF9fKCkiIG1ldGhvZCB0byB0aGUgc2l6ZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgJyJQeV9zc2l6ZV90Ii4gIFRoaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgaXMgdHlwaWNhbGx5IDggYnl0ZXMgb24gNjQtYml0IGJ1aWxkcyBhbmQgNCBieXRlcyBvbiAnCisgICAgICAgICAgICAgICAgICczMi1iaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYnVpbGRzLiBJZiBhbiBvYmplY3RcJ3MgICAiX19oYXNoX18oKSIgbXVzdCAnCisgICAgICAgICAgICAgICAgICdpbnRlcm9wZXJhdGUgb24gYnVpbGRzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9mIGRpZmZlcmVudCBiaXQgc2l6ZXMsIGJlIHN1cmUgdG8gY2hlY2sgdGhlIHdpZHRoIG9uICcKKyAgICAgICAgICAgICAgICAgJ2FsbFxuJworICAgICAgICAgICAgICAgICAnICAgICBzdXBwb3J0ZWQgYnVpbGRzLiAgQW4gZWFzeSB3YXkgdG8gZG8gdGhpcyBpcyB3aXRoICcKKyAgICAgICAgICAgICAgICAgJyJweXRob24gLWNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgImltcG9ydCBzeXM7IHByaW50KHN5cy5oYXNoX2luZm8ud2lkdGgpIiIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgZG9lcyBub3QgZGVmaW5lIGFuICJfX2VxX18oKSIgbWV0aG9kIGl0IHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmluZSBhICJfX2hhc2hfXygpIiBvcGVyYXRpb24gZWl0aGVyOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX2VxX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1dCBub3QgIl9faGFzaF9fKCkiLCBpdHMgaW5zdGFuY2VzIHdpbGwgbm90IGJlIHVzYWJsZSBhcyAnCisgICAgICAgICAgICAgICAgICdpdGVtcyBpblxuJworICAgICAgICAgICAgICAgICAnICAgaGFzaGFibGUgY29sbGVjdGlvbnMuICBJZiBhIGNsYXNzIGRlZmluZXMgbXV0YWJsZSBvYmplY3RzICcKKyAgICAgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50cyBhbiAiX19lcV9fKCkiIG1ldGhvZCwgaXQgc2hvdWxkIG5vdCBpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiwgc2luY2UgdGhlIGltcGxlbWVudGF0aW9uIG9mIGhhc2hhYmxlICcKKyAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICIgICByZXF1aXJlcyB0aGF0IGEga2V5J3MgaGFzaCB2YWx1ZSBpcyBpbW11dGFibGUgKGlmIHRoZSAiCisgICAgICAgICAgICAgICAgICJvYmplY3QncyBoYXNoXG4iCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZSBjaGFuZ2VzLCBpdCB3aWxsIGJlIGluIHRoZSB3cm9uZyBoYXNoIGJ1Y2tldCkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBjbGFzc2VzIGhhdmUgIl9fZXFfXygpIiBhbmQgIl9faGFzaF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlZmF1bHQ7IHdpdGggdGhlbSwgYWxsIG9iamVjdHMgY29tcGFyZSB1bmVxdWFsIChleGNlcHQgJworICAgICAgICAgICAgICAgICAnd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlbXNlbHZlcykgYW5kICJ4Ll9faGFzaF9fKCkiIHJldHVybnMgYW4gYXBwcm9wcmlhdGUgJworICAgICAgICAgICAgICAgICAndmFsdWUgc3VjaFxuJworICAgICAgICAgICAgICAgICAnICAgdGhhdCAieCA9PSB5IiBpbXBsaWVzIGJvdGggdGhhdCAieCBpcyB5IiBhbmQgImhhc2goeCkgPT0gJworICAgICAgICAgICAgICAgICAnaGFzaCh5KSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBhbmQgZG9lcyBub3QgZGVmaW5lICcKKyAgICAgICAgICAgICAgICAgJyJfX2hhc2hfXygpIlxuJworICAgICAgICAgICAgICAgICAnICAgd2lsbCBoYXZlIGl0cyAiX19oYXNoX18oKSIgaW1wbGljaXRseSBzZXQgdG8gIk5vbmUiLiAgJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2hhc2hfXygpIiBtZXRob2Qgb2YgYSBjbGFzcyBpcyAiTm9uZSIsIGluc3RhbmNlcyBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIHdpbGwgcmFpc2UgYW4gYXBwcm9wcmlhdGUgIlR5cGVFcnJvciIgd2hlbiBhIHByb2dyYW0gJworICAgICAgICAgICAgICAgICAnYXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHJpZXZlIHRoZWlyIGhhc2ggdmFsdWUsIGFuZCB3aWxsIGFsc28gYmUgY29ycmVjdGx5ICcKKyAgICAgICAgICAgICAgICAgJ2lkZW50aWZpZWQgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVuaGFzaGFibGUgd2hlbiBjaGVja2luZyAiaXNpbnN0YW5jZShvYmosICcKKyAgICAgICAgICAgICAgICAgJ2NvbGxlY3Rpb25zLkhhc2hhYmxlKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIGEgY2xhc3MgdGhhdCBvdmVycmlkZXMgIl9fZXFfXygpIiBuZWVkcyB0byByZXRhaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbXBsZW1lbnRhdGlvbiBvZiAiX19oYXNoX18oKSIgZnJvbSBhIHBhcmVudCBjbGFzcywgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2ludGVycHJldGVyXG4nCisgICAgICAgICAgICAgICAgICcgICBtdXN0IGJlIHRvbGQgdGhpcyBleHBsaWNpdGx5IGJ5IHNldHRpbmcgIl9faGFzaF9fID1cbicKKyAgICAgICAgICAgICAgICAgJyAgIDxQYXJlbnRDbGFzcz4uX19oYXNoX18iLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIGNsYXNzIHRoYXQgZG9lcyBub3Qgb3ZlcnJpZGUgIl9fZXFfXygpIiB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAnc3VwcHJlc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIGhhc2ggc3VwcG9ydCwgaXQgc2hvdWxkIGluY2x1ZGUgIl9faGFzaF9fID0gTm9uZSIgaW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbml0aW9uLiBBIGNsYXNzIHdoaWNoIGRlZmluZXMgaXRzIG93biAiX19oYXNoX18oKSIgJworICAgICAgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgZXhwbGljaXRseSByYWlzZXMgYSAiVHlwZUVycm9yIiB3b3VsZCBiZSBpbmNvcnJlY3RseSAnCisgICAgICAgICAgICAgICAgICdpZGVudGlmaWVkIGFzXG4nCisgICAgICAgICAgICAgICAgICcgICBoYXNoYWJsZSBieSBhbiAiaXNpbnN0YW5jZShvYmosIGNvbGxlY3Rpb25zLkhhc2hhYmxlKSIgJworICAgICAgICAgICAgICAgICAnY2FsbC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogQnkgZGVmYXVsdCwgdGhlICJfX2hhc2hfXygpIiB2YWx1ZXMgb2Ygc3RyLCBieXRlcyAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZGF0ZXRpbWUgb2JqZWN0cyBhcmUgInNhbHRlZCIgd2l0aCBhbiB1bnByZWRpY3RhYmxlICcKKyAgICAgICAgICAgICAgICAgJ3JhbmRvbSB2YWx1ZS5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgQWx0aG91Z2ggdGhleSByZW1haW4gY29uc3RhbnQgd2l0aGluIGFuIGluZGl2aWR1YWwgJworICAgICAgICAgICAgICAgICAnUHl0aG9uXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHByb2Nlc3MsIHRoZXkgYXJlIG5vdCBwcmVkaWN0YWJsZSBiZXR3ZWVuIHJlcGVhdGVkICcKKyAgICAgICAgICAgICAgICAgJ2ludm9jYXRpb25zIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFB5dGhvbi5UaGlzIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgcHJvdGVjdGlvbiBhZ2FpbnN0IGEgJworICAgICAgICAgICAgICAgICAnZGVuaWFsLVxuJworICAgICAgICAgICAgICAgICAnICAgICBvZi1zZXJ2aWNlIGNhdXNlZCBieSBjYXJlZnVsbHktY2hvc2VuIGlucHV0cyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2V4cGxvaXQgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHdvcnN0IGNhc2UgcGVyZm9ybWFuY2Ugb2YgYSBkaWN0IGluc2VydGlvbiwgTyhuXjIpICcKKyAgICAgICAgICAgICAgICAgJ2NvbXBsZXhpdHkuXG4nCisgICAgICAgICAgICAgICAgICcgICAgIFNlZSBodHRwOi8vd3d3Lm9jZXJ0Lm9yZy9hZHZpc29yaWVzL29jZXJ0LTIwMTEtMDAzLmh0bWwgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRldGFpbHMuQ2hhbmdpbmcgaGFzaCB2YWx1ZXMgYWZmZWN0cyB0aGUgaXRlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ29yZGVyIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGRpY3RzLCBzZXRzIGFuZCBvdGhlciBtYXBwaW5ncy4gIFB5dGhvbiBoYXMgbmV2ZXIgbWFkZSAnCisgICAgICAgICAgICAgICAgICdndWFyYW50ZWVzXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGFib3V0IHRoaXMgb3JkZXJpbmcgKGFuZCBpdCB0eXBpY2FsbHkgdmFyaWVzIGJldHdlZW4gJworICAgICAgICAgICAgICAgICAnMzItYml0IGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICA2NC1iaXQgYnVpbGRzKS5TZWUgYWxzbyAiUFlUSE9OSEFTSFNFRUQiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBIYXNoIHJhbmRvbWl6YXRpb24gaXMgZW5hYmxlZCBieSAnCisgICAgICAgICAgICAgICAgICdkZWZhdWx0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19ib29sX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0cnV0aCB2YWx1ZSB0ZXN0aW5nIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uXG4nCisgICAgICAgICAgICAgICAgICcgICAiYm9vbCgpIjsgc2hvdWxkIHJldHVybiAiRmFsc2UiIG9yICJUcnVlIi4gIFdoZW4gdGhpcyAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgbm90XG4nCisgICAgICAgICAgICAgICAgICcgICBkZWZpbmVkLCAiX19sZW5fXygpIiBpcyBjYWxsZWQsIGlmIGl0IGlzIGRlZmluZWQsIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkIHRydWUgaWYgaXRzIHJlc3VsdCBpcyBub256ZXJvLiAgSWYgYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVzXG4nCisgICAgICAgICAgICAgICAgICcgICBuZWl0aGVyICJfX2xlbl9fKCkiIG5vciAiX19ib29sX18oKSIsIGFsbCBpdHMgaW5zdGFuY2VzICcKKyAgICAgICAgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCB0cnVlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGF0dHJpYnV0ZSBhY2Nlc3NcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGZvbGxvd2luZyBtZXRob2RzIGNhbiBiZSBkZWZpbmVkIHRvIGN1c3RvbWl6ZSB0aGUgJworICAgICAgICAgICAgICAgICAnbWVhbmluZyBvZlxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlIGFjY2VzcyAodXNlIG9mLCBhc3NpZ25tZW50IHRvLCBvciBkZWxldGlvbiBvZiAnCisgICAgICAgICAgICAgICAgICcieC5uYW1lIikgZm9yXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcyBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2dldGF0dHJfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgbG9va3VwIGhhcyBub3QgZm91bmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVzdWFsIHBsYWNlcyAoaS5lLiBpdCBpcyBub3QgYW4gaW5zdGFuY2UgYXR0cmlidXRlIG5vciBpcyAnCisgICAgICAgICAgICAgICAgICdpdCBmb3VuZFxuJworICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIGNsYXNzIHRyZWUgZm9yICJzZWxmIikuICAibmFtZSIgaXMgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICduYW1lLiBUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2Qgc2hvdWxkIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgJworICAgICAgICAgICAgICAgICAncmFpc2UgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICJBdHRyaWJ1dGVFcnJvciIgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaWYgdGhlIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aHJvdWdoIHRoZSBub3JtYWwgJworICAgICAgICAgICAgICAgICAnbWVjaGFuaXNtLFxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cl9fKCkiIGlzIG5vdCBjYWxsZWQuICAoVGhpcyBpcyBhbiBpbnRlbnRpb25hbCAnCisgICAgICAgICAgICAgICAgICdhc3ltbWV0cnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJldHdlZW4gIl9fZ2V0YXR0cl9fKCkiIGFuZCAiX19zZXRhdHRyX18oKSIuKSBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgJ2RvbmUgYm90aCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGVmZmljaWVuY3kgcmVhc29ucyBhbmQgYmVjYXVzZSBvdGhlcndpc2UgIl9fZ2V0YXR0cl9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ3dvdWxkIGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vIHdheSB0byBhY2Nlc3Mgb3RoZXIgYXR0cmlidXRlcyBvZiB0aGUgaW5zdGFuY2UuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGxlYXN0IGZvciBpbnN0YW5jZSB2YXJpYWJsZXMsIHlvdSBjYW4gZmFrZSB0b3RhbCBjb250cm9sICcKKyAgICAgICAgICAgICAgICAgJ2J5IG5vdFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zZXJ0aW5nIGFueSB2YWx1ZXMgaW4gdGhlIGluc3RhbmNlIGF0dHJpYnV0ZSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgICAgJyhidXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluc3RlYWQgaW5zZXJ0aW5nIHRoZW0gaW4gYW5vdGhlciBvYmplY3QpLiAgU2VlIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0YXR0cmlidXRlX18oKSIgbWV0aG9kIGJlbG93IGZvciBhIHdheSB0byBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdnZXQgdG90YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvbnRyb2wgb3ZlciBhdHRyaWJ1dGUgYWNjZXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdW5jb25kaXRpb25hbGx5IHRvIGltcGxlbWVudCBhdHRyaWJ1dGUgYWNjZXNzZXMgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzLiBJZiB0aGUgY2xhc3MgYWxzbyBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGF0dHJfXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBsYXR0ZXIgd2lsbCBub3QgYmUgY2FsbGVkIHVubGVzcyAiX19nZXRhdHRyaWJ1dGVfXygpIiAnCisgICAgICAgICAgICAgICAgICdlaXRoZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGxzIGl0IGV4cGxpY2l0bHkgb3IgcmFpc2VzIGFuICJBdHRyaWJ1dGVFcnJvciIuIFRoaXMgJworICAgICAgICAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgcmV0dXJuIHRoZSAoY29tcHV0ZWQpIGF0dHJpYnV0ZSB2YWx1ZSBvciByYWlzZSBhblxuJworICAgICAgICAgICAgICAgICAnICAgIkF0dHJpYnV0ZUVycm9yIiBleGNlcHRpb24uIEluIG9yZGVyIHRvIGF2b2lkIGluZmluaXRlICcKKyAgICAgICAgICAgICAgICAgJ3JlY3Vyc2lvbiBpblxuJworICAgICAgICAgICAgICAgICAnICAgdGhpcyBtZXRob2QsIGl0cyBpbXBsZW1lbnRhdGlvbiBzaG91bGQgYWx3YXlzIGNhbGwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2UgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUgdG8gYWNjZXNzIGFueSBhdHRyaWJ1dGVzIGl0ICcKKyAgICAgICAgICAgICAgICAgJ25lZWRzLCBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGV4YW1wbGUsICJvYmplY3QuX19nZXRhdHRyaWJ1dGVfXyhzZWxmLCBuYW1lKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5vdGU6IFRoaXMgbWV0aG9kIG1heSBzdGlsbCBiZSBieXBhc3NlZCB3aGVuIGxvb2tpbmcgdXAgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnICAgICBtZXRob2RzIGFzIHRoZSByZXN1bHQgb2YgaW1wbGljaXQgaW52b2NhdGlvbiB2aWEgJworICAgICAgICAgICAgICAgICAnbGFuZ3VhZ2Ugc3ludGF4XG4nCisgICAgICAgICAgICAgICAgICcgICAgIG9yIGJ1aWx0LWluIGZ1bmN0aW9ucy4gU2VlIFNwZWNpYWwgbWV0aG9kIGxvb2t1cC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fc2V0YXR0cl9fKHNlbGYsIG5hbWUsIHZhbHVlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiBhbiBhdHRyaWJ1dGUgYXNzaWdubWVudCBpcyBhdHRlbXB0ZWQuICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ2lzIGNhbGxlZFxuJworICAgICAgICAgICAgICAgICAnICAgaW5zdGVhZCBvZiB0aGUgbm9ybWFsIG1lY2hhbmlzbSAoaS5lLiBzdG9yZSB0aGUgdmFsdWUgaW4gJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSBkaWN0aW9uYXJ5KS4gKm5hbWUqIGlzIHRoZSBhdHRyaWJ1dGUgbmFtZSwgJworICAgICAgICAgICAgICAgICAnKnZhbHVlKiBpcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlIHRvIGJlIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiX19zZXRhdHRyX18oKSIgd2FudHMgdG8gYXNzaWduIHRvIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSwgaXRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNob3VsZCBjYWxsIHRoZSBiYXNlIGNsYXNzIG1ldGhvZCB3aXRoIHRoZSBzYW1lIG5hbWUsIGZvciAnCisgICAgICAgICAgICAgICAgICdleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAnICAgIm9iamVjdC5fX3NldGF0dHJfXyhzZWxmLCBuYW1lLCB2YWx1ZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxhdHRyX18oc2VsZiwgbmFtZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTGlrZSAiX19zZXRhdHRyX18oKSIgYnV0IGZvciBhdHRyaWJ1dGUgZGVsZXRpb24gaW5zdGVhZCAnCisgICAgICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudC4gIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW1wbGVtZW50ZWQgaWYgImRlbCAnCisgICAgICAgICAgICAgICAgICdvYmoubmFtZSIgaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmdmdWwgZm9yIHRoZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpcl9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB3aGVuICJkaXIoKSIgaXMgY2FsbGVkIG9uIHRoZSBvYmplY3QuIEEgc2VxdWVuY2UgJworICAgICAgICAgICAgICAgICAnbXVzdCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmV0dXJuZWQuICJkaXIoKSIgY29udmVydHMgdGhlIHJldHVybmVkIHNlcXVlbmNlIHRvIGEgJworICAgICAgICAgICAgICAgICAnbGlzdCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNvcnRzIGl0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ltcGxlbWVudGluZyBEZXNjcmlwdG9yc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBvbmx5IGFwcGx5IHdoZW4gYW4gaW5zdGFuY2Ugb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdjb250YWluaW5nIHRoZSBtZXRob2QgKGEgc28tY2FsbGVkICpkZXNjcmlwdG9yKiBjbGFzcykgJworICAgICAgICAgICAgICAgICAnYXBwZWFycyBpbiBhblxuJworICAgICAgICAgICAgICAgICAiKm93bmVyKiBjbGFzcyAodGhlIGRlc2NyaXB0b3IgbXVzdCBiZSBpbiBlaXRoZXIgdGhlIG93bmVyJ3MgIgorICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgb3IgaW4gdGhlIGNsYXNzIGRpY3Rpb25hcnkgZm9yIG9uZSBvZiBpdHMgJworICAgICAgICAgICAgICAgICAncGFyZW50cykuICBJbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2V4YW1wbGVzIGJlbG93LCAidGhlIGF0dHJpYnV0ZSIgcmVmZXJzIHRvIHRoZSBhdHRyaWJ1dGUgJworICAgICAgICAgICAgICAgICAnd2hvc2UgbmFtZSBpc1xuJworICAgICAgICAgICAgICAgICAndGhlIGtleSBvZiB0aGUgcHJvcGVydHkgaW4gdGhlIG93bmVyIGNsYXNzXCcgIl9fZGljdF9fIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZ2V0X18oc2VsZiwgaW5zdGFuY2UsIG93bmVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZ2V0IHRoZSBhdHRyaWJ1dGUgb2YgdGhlIG93bmVyIGNsYXNzIChjbGFzcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFjY2Vzcykgb3Igb2YgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyAoaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBhY2Nlc3MpLiAqb3duZXIqIGlzIGFsd2F5cyB0aGUgb3duZXIgY2xhc3MsIHdoaWxlICcKKyAgICAgICAgICAgICAgICAgJyppbnN0YW5jZSogaXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZSB0aGF0IHRoZSBhdHRyaWJ1dGUgd2FzIGFjY2Vzc2VkIHRocm91Z2gsIG9yICcKKyAgICAgICAgICAgICAgICAgJyJOb25lIiB3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUgYXR0cmlidXRlIGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlICpvd25lciouICBUaGlzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCBzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybiB0aGUgKGNvbXB1dGVkKSBhdHRyaWJ1dGUgdmFsdWUgb3IgcmFpc2UgYW4gJworICAgICAgICAgICAgICAgICAnIkF0dHJpYnV0ZUVycm9yIlxuJworICAgICAgICAgICAgICAgICAnICAgZXhjZXB0aW9uLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfXyhzZWxmLCBpbnN0YW5jZSwgdmFsdWUpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBzZXQgdGhlIGF0dHJpYnV0ZSBvbiBhbiBpbnN0YW5jZSAqaW5zdGFuY2UqIG9mICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBvd25lclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3MgdG8gYSBuZXcgdmFsdWUsICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2RlbGV0ZV9fKHNlbGYsIGluc3RhbmNlKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gZGVsZXRlIHRoZSBhdHRyaWJ1dGUgb24gYW4gaW5zdGFuY2UgKmluc3RhbmNlKiAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIG93bmVyIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYXQgdGhlIHRpbWUgdGhlIG93bmluZyBjbGFzcyAqb3duZXIqIGlzIGNyZWF0ZWQuICcKKyAgICAgICAgICAgICAgICAgJ1RoZVxuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpcHRvciBoYXMgYmVlbiBhc3NpZ25lZCB0byAqbmFtZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIGF0dHJpYnV0ZSAiX19vYmpjbGFzc19fIiBpcyBpbnRlcnByZXRlZCBieSB0aGUgImluc3BlY3QiICcKKyAgICAgICAgICAgICAgICAgJ21vZHVsZSBhc1xuJworICAgICAgICAgICAgICAgICAnc3BlY2lmeWluZyB0aGUgY2xhc3Mgd2hlcmUgdGhpcyBvYmplY3Qgd2FzIGRlZmluZWQgKHNldHRpbmcgJworICAgICAgICAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICAgICAgICAnYXBwcm9wcmlhdGVseSBjYW4gYXNzaXN0IGluIHJ1bnRpbWUgaW50cm9zcGVjdGlvbiBvZiBkeW5hbWljICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzKS4gRm9yIGNhbGxhYmxlcywgaXQgbWF5IGluZGljYXRlIHRoYXQgYW4gaW5zdGFuY2UgJworICAgICAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICdnaXZlbiB0eXBlIChvciBhIHN1YmNsYXNzKSBpcyBleHBlY3RlZCBvciByZXF1aXJlZCBhcyB0aGUgJworICAgICAgICAgICAgICAgICAnZmlyc3RcbicKKyAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uYWwgYXJndW1lbnQgKGZvciBleGFtcGxlLCBDUHl0aG9uIHNldHMgdGhpcyAnCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGUgZm9yXG4nCisgICAgICAgICAgICAgICAgICd1bmJvdW5kIG1ldGhvZHMgdGhhdCBhcmUgaW1wbGVtZW50ZWQgaW4gQykuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSW52b2tpbmcgRGVzY3JpcHRvcnNcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGdlbmVyYWwsIGEgZGVzY3JpcHRvciBpcyBhbiBvYmplY3QgYXR0cmlidXRlIHdpdGggJworICAgICAgICAgICAgICAgICAnImJpbmRpbmdcbicKKyAgICAgICAgICAgICAgICAgJ2JlaGF2aW9yIiwgb25lIHdob3NlIGF0dHJpYnV0ZSBhY2Nlc3MgaGFzIGJlZW4gb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICdpbiB0aGUgZGVzY3JpcHRvciBwcm90b2NvbDogICJfX2dldF9fKCkiLCAiX19zZXRfXygpIiwgYW5kXG4nCisgICAgICAgICAgICAgICAgICciX19kZWxldGVfXygpIi4gSWYgYW55IG9mIHRob3NlIG1ldGhvZHMgYXJlIGRlZmluZWQgZm9yIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCwgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2lzIHNhaWQgdG8gYmUgYSBkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZGVmYXVsdCBiZWhhdmlvciBmb3IgYXR0cmlidXRlIGFjY2VzcyBpcyB0byBnZXQsIHNldCwgb3IgJworICAgICAgICAgICAgICAgICAnZGVsZXRlXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgYXR0cmlidXRlIGZyb20gYW4gb2JqZWN0J3MgZGljdGlvbmFyeS4gRm9yIGluc3RhbmNlLCAiCisgICAgICAgICAgICAgICAgICciYS54IiBoYXMgYVxuJworICAgICAgICAgICAgICAgICAnbG9va3VwIGNoYWluIHN0YXJ0aW5nIHdpdGggImEuX19kaWN0X19bXCd4XCddIiwgdGhlblxuJworICAgICAgICAgICAgICAgICAnInR5cGUoYSkuX19kaWN0X19bXCd4XCddIiwgYW5kIGNvbnRpbnVpbmcgdGhyb3VnaCB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIG9mXG4nCisgICAgICAgICAgICAgICAgICcidHlwZShhKSIgZXhjbHVkaW5nIG1ldGFjbGFzc2VzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdIb3dldmVyLCBpZiB0aGUgbG9va2VkLXVwIHZhbHVlIGlzIGFuIG9iamVjdCBkZWZpbmluZyBvbmUgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yIG1ldGhvZHMsIHRoZW4gUHl0aG9uIG1heSBvdmVycmlkZSB0aGUgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICdiZWhhdmlvciBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2ludm9rZSB0aGUgZGVzY3JpcHRvciBtZXRob2QgaW5zdGVhZC4gIFdoZXJlIHRoaXMgb2NjdXJzIGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAncHJlY2VkZW5jZSBjaGFpbiBkZXBlbmRzIG9uIHdoaWNoIGRlc2NyaXB0b3IgbWV0aG9kcyB3ZXJlICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluZWQgYW5kXG4nCisgICAgICAgICAgICAgICAgICdob3cgdGhleSB3ZXJlIGNhbGxlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIHN0YXJ0aW5nIHBvaW50IGZvciBkZXNjcmlwdG9yIGludm9jYXRpb24gaXMgYSBiaW5kaW5nLCAnCisgICAgICAgICAgICAgICAgICciYS54Ii4gSG93XG4nCisgICAgICAgICAgICAgICAgICd0aGUgYXJndW1lbnRzIGFyZSBhc3NlbWJsZWQgZGVwZW5kcyBvbiAiYSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpcmVjdCBDYWxsXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGUgc2ltcGxlc3QgYW5kIGxlYXN0IGNvbW1vbiBjYWxsIGlzIHdoZW4gdXNlciBjb2RlICcKKyAgICAgICAgICAgICAgICAgJ2RpcmVjdGx5XG4nCisgICAgICAgICAgICAgICAgICcgICBpbnZva2VzIGEgZGVzY3JpcHRvciBtZXRob2Q6ICAgICJ4Ll9fZ2V0X18oYSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbnN0YW5jZSBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBiaW5kaW5nIHRvIGFuIG9iamVjdCBpbnN0YW5jZSwgImEueCIgaXMgdHJhbnNmb3JtZWQgJworICAgICAgICAgICAgICAgICAnaW50byB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJ0eXBlKGEpLl9fZGljdF9fW1wneFwnXS5fX2dldF9fKGEsIHR5cGUoYSkpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ2xhc3MgQmluZGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYmluZGluZyB0byBhIGNsYXNzLCAiQS54IiBpcyB0cmFuc2Zvcm1lZCBpbnRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjYWxsOlxuJworICAgICAgICAgICAgICAgICAnICAgIkEuX19kaWN0X19bXCd4XCddLl9fZ2V0X18oTm9uZSwgQSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTdXBlciBCaW5kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiAiYSIgaXMgYW4gaW5zdGFuY2Ugb2YgInN1cGVyIiwgdGhlbiB0aGUgYmluZGluZyAnCisgICAgICAgICAgICAgICAgICcic3VwZXIoQixcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iaikubSgpIiBzZWFyY2hlcyAib2JqLl9fY2xhc3NfXy5fX21yb19fIiBmb3IgdGhlIGJhc2UgJworICAgICAgICAgICAgICAgICAnY2xhc3MgIkEiXG4nCisgICAgICAgICAgICAgICAgICcgICBpbW1lZGlhdGVseSBwcmVjZWRpbmcgIkIiIGFuZCB0aGVuIGludm9rZXMgdGhlIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNhbGw6ICJBLl9fZGljdF9fW1wnbVwnXS5fX2dldF9fKG9iaiwgb2JqLl9fY2xhc3NfXykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdGb3IgaW5zdGFuY2UgYmluZGluZ3MsIHRoZSBwcmVjZWRlbmNlIG9mIGRlc2NyaXB0b3IgJworICAgICAgICAgICAgICAgICAnaW52b2NhdGlvbiBkZXBlbmRzXG4nCisgICAgICAgICAgICAgICAgICdvbiB0aGUgd2hpY2ggZGVzY3JpcHRvciBtZXRob2RzIGFyZSBkZWZpbmVkLiAgQSBkZXNjcmlwdG9yICcKKyAgICAgICAgICAgICAgICAgJ2NhbiBkZWZpbmVcbicKKyAgICAgICAgICAgICAgICAgJ2FueSBjb21iaW5hdGlvbiBvZiAiX19nZXRfXygpIiwgIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2RlbGV0ZV9fKCkiLiAgSWYgaXRcbicKKyAgICAgICAgICAgICAgICAgJ2RvZXMgbm90IGRlZmluZSAiX19nZXRfXygpIiwgdGhlbiBhY2Nlc3NpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICd3aWxsIHJldHVyblxuJworICAgICAgICAgICAgICAgICAndGhlIGRlc2NyaXB0b3Igb2JqZWN0IGl0c2VsZiB1bmxlc3MgdGhlcmUgaXMgYSB2YWx1ZSBpbiB0aGUgJworICAgICAgICAgICAgICAgICAib2JqZWN0J3NcbiIKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlIGRpY3Rpb25hcnkuICBJZiB0aGUgZGVzY3JpcHRvciBkZWZpbmVzICJfX3NldF9fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZC9vclxuJworICAgICAgICAgICAgICAgICAnIl9fZGVsZXRlX18oKSIsIGl0IGlzIGEgZGF0YSBkZXNjcmlwdG9yOyBpZiBpdCBkZWZpbmVzICcKKyAgICAgICAgICAgICAgICAgJ25laXRoZXIsIGl0IGlzXG4nCisgICAgICAgICAgICAgICAgICdhIG5vbi1kYXRhIGRlc2NyaXB0b3IuICBOb3JtYWxseSwgZGF0YSBkZXNjcmlwdG9ycyBkZWZpbmUgJworICAgICAgICAgICAgICAgICAnYm90aFxuJworICAgICAgICAgICAgICAgICAnIl9fZ2V0X18oKSIgYW5kICJfX3NldF9fKCkiLCB3aGlsZSBub24tZGF0YSBkZXNjcmlwdG9ycyBoYXZlICcKKyAgICAgICAgICAgICAgICAgJ2p1c3QgdGhlXG4nCisgICAgICAgICAgICAgICAgICciX19nZXRfXygpIiBtZXRob2QuICBEYXRhIGRlc2NyaXB0b3JzIHdpdGggIl9fc2V0X18oKSIgYW5kICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldF9fKCkiXG4nCisgICAgICAgICAgICAgICAgICdkZWZpbmVkIGFsd2F5cyBvdmVycmlkZSBhIHJlZGVmaW5pdGlvbiBpbiBhbiBpbnN0YW5jZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5LiAgSW5cbicKKyAgICAgICAgICAgICAgICAgJ2NvbnRyYXN0LCBub24tZGF0YSBkZXNjcmlwdG9ycyBjYW4gYmUgb3ZlcnJpZGRlbiBieSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiBtZXRob2RzIChpbmNsdWRpbmcgInN0YXRpY21ldGhvZCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnImNsYXNzbWV0aG9kKCkiKSBhcmVcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIG5vbi1kYXRhIGRlc2NyaXB0b3JzLiAgQWNjb3JkaW5nbHksIGluc3RhbmNlcyAnCisgICAgICAgICAgICAgICAgICdjYW5cbicKKyAgICAgICAgICAgICAgICAgJ3JlZGVmaW5lIGFuZCBvdmVycmlkZSBtZXRob2RzLiAgVGhpcyBhbGxvd3MgaW5kaXZpZHVhbCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZXMgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2FjcXVpcmUgYmVoYXZpb3JzIHRoYXQgZGlmZmVyIGZyb20gb3RoZXIgaW5zdGFuY2VzIG9mIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lIGNsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgInByb3BlcnR5KCkiIGZ1bmN0aW9uIGlzIGltcGxlbWVudGVkIGFzIGEgZGF0YSAnCisgICAgICAgICAgICAgICAgICdkZXNjcmlwdG9yLlxuJworICAgICAgICAgICAgICAgICAnQWNjb3JkaW5nbHksIGluc3RhbmNlcyBjYW5ub3Qgb3ZlcnJpZGUgdGhlIGJlaGF2aW9yIG9mIGEgJworICAgICAgICAgICAgICAgICAncHJvcGVydHkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnX19zbG90c19fXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgaW5zdGFuY2VzIG9mIGNsYXNzZXMgaGF2ZSBhIGRpY3Rpb25hcnkgZm9yICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICAgICAgICAnc3RvcmFnZS4gIFRoaXMgd2FzdGVzIHNwYWNlIGZvciBvYmplY3RzIGhhdmluZyB2ZXJ5IGZldyAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAndmFyaWFibGVzLiAgVGhlIHNwYWNlIGNvbnN1bXB0aW9uIGNhbiBiZWNvbWUgYWN1dGUgd2hlbiAnCisgICAgICAgICAgICAgICAgICdjcmVhdGluZyBsYXJnZVxuJworICAgICAgICAgICAgICAgICAnbnVtYmVycyBvZiBpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBkZWZhdWx0IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGRlZmluaW5nICpfX3Nsb3RzX18qIGluIGEgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb24uIFRoZSAqX19zbG90c19fKiBkZWNsYXJhdGlvbiB0YWtlcyBhIHNlcXVlbmNlIG9mICcKKyAgICAgICAgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXMgYW5kIHJlc2VydmVzIGp1c3QgZW5vdWdoIHNwYWNlIGluIGVhY2ggaW5zdGFuY2UgdG8gJworICAgICAgICAgICAgICAgICAnaG9sZCBhXG4nCisgICAgICAgICAgICAgICAgICd2YWx1ZSBmb3IgZWFjaCB2YXJpYWJsZS4gIFNwYWNlIGlzIHNhdmVkIGJlY2F1c2UgKl9fZGljdF9fKiAnCisgICAgICAgICAgICAgICAgICdpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJ2NyZWF0ZWQgZm9yIGVhY2ggaW5zdGFuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3Nsb3RzX19cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgVGhpcyBjbGFzcyB2YXJpYWJsZSBjYW4gYmUgYXNzaWduZWQgYSBzdHJpbmcsIGl0ZXJhYmxlLCAnCisgICAgICAgICAgICAgICAgICdvciBzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgb2Ygc3RyaW5ncyB3aXRoIHZhcmlhYmxlIG5hbWVzIHVzZWQgYnkgaW5zdGFuY2VzLiAgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJlc2VydmVzIHNwYWNlIGZvciB0aGUgZGVjbGFyZWQgdmFyaWFibGVzIGFuZCBwcmV2ZW50cyAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGF1dG9tYXRpYyBjcmVhdGlvbiBvZiAqX19kaWN0X18qIGFuZCAqX193ZWFrcmVmX18qIGZvciAnCisgICAgICAgICAgICAgICAgICdlYWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBpbnN0YW5jZS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlcyBvbiB1c2luZyAqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnfn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaGVuIGluaGVyaXRpbmcgZnJvbSBhIGNsYXNzIHdpdGhvdXQgKl9fc2xvdHNfXyosIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIGF0dHJpYnV0ZSBvZiB0aGF0IGNsYXNzIHdpbGwgYWx3YXlzIGJlIGFjY2Vzc2libGUsIHNvIGEgJworICAgICAgICAgICAgICAgICAnKl9fc2xvdHNfXypcbicKKyAgICAgICAgICAgICAgICAgJyAgZGVmaW5pdGlvbiBpbiB0aGUgc3ViY2xhc3MgaXMgbWVhbmluZ2xlc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogV2l0aG91dCBhICpfX2RpY3RfXyogdmFyaWFibGUsIGluc3RhbmNlcyBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYXNzaWduZWQgbmV3XG4nCisgICAgICAgICAgICAgICAgICcgIHZhcmlhYmxlcyBub3QgbGlzdGVkIGluIHRoZSAqX19zbG90c19fKiBkZWZpbml0aW9uLiAgJworICAgICAgICAgICAgICAgICAnQXR0ZW1wdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgYXNzaWduIHRvIGFuIHVubGlzdGVkIHZhcmlhYmxlIG5hbWUgcmFpc2VzICcKKyAgICAgICAgICAgICAgICAgJyJBdHRyaWJ1dGVFcnJvciIuIElmXG4nCisgICAgICAgICAgICAgICAgICcgIGR5bmFtaWMgYXNzaWdubWVudCBvZiBuZXcgdmFyaWFibGVzIGlzIGRlc2lyZWQsIHRoZW4gYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fZGljdF9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBXaXRob3V0IGEgKl9fd2Vha3JlZl9fKiB2YXJpYWJsZSBmb3IgZWFjaCBpbnN0YW5jZSwgJworICAgICAgICAgICAgICAgICAnY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnICBkZWZpbmluZyAqX19zbG90c19fKiBkbyBub3Qgc3VwcG9ydCB3ZWFrIHJlZmVyZW5jZXMgdG8gJworICAgICAgICAgICAgICAgICAnaXRzXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlcy4gSWYgd2VhayByZWZlcmVuY2Ugc3VwcG9ydCBpcyBuZWVkZWQsIHRoZW4gYWRkXG4nCisgICAgICAgICAgICAgICAgICcgICJcJ19fd2Vha3JlZl9fXCciIHRvIHRoZSBzZXF1ZW5jZSBvZiBzdHJpbmdzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICcqX19zbG90c19fKlxuJworICAgICAgICAgICAgICAgICAnICBkZWNsYXJhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiAqX19zbG90c19fKiBhcmUgaW1wbGVtZW50ZWQgYXQgdGhlIGNsYXNzIGxldmVsIGJ5ICcKKyAgICAgICAgICAgICAgICAgJ2NyZWF0aW5nXG4nCisgICAgICAgICAgICAgICAgICcgIGRlc2NyaXB0b3JzIChJbXBsZW1lbnRpbmcgRGVzY3JpcHRvcnMpIGZvciBlYWNoIHZhcmlhYmxlICcKKyAgICAgICAgICAgICAgICAgJ25hbWUuICBBcyBhXG4nCisgICAgICAgICAgICAgICAgICcgIHJlc3VsdCwgY2xhc3MgYXR0cmlidXRlcyBjYW5ub3QgYmUgdXNlZCB0byBzZXQgZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgIGluc3RhbmNlIHZhcmlhYmxlcyBkZWZpbmVkIGJ5ICpfX3Nsb3RzX18qOyBvdGhlcndpc2UsIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnICBhdHRyaWJ1dGUgd291bGQgb3ZlcndyaXRlIHRoZSBkZXNjcmlwdG9yIGFzc2lnbm1lbnQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogVGhlIGFjdGlvbiBvZiBhICpfX3Nsb3RzX18qIGRlY2xhcmF0aW9uIGlzIGxpbWl0ZWQgdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgIHdoZXJlIGl0IGlzIGRlZmluZWQuICBBcyBhIHJlc3VsdCwgc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSAnCisgICAgICAgICAgICAgICAgICcqX19kaWN0X18qXG4nCisgICAgICAgICAgICAgICAgICcgIHVubGVzcyB0aGV5IGFsc28gZGVmaW5lICpfX3Nsb3RzX18qICh3aGljaCBtdXN0IG9ubHkgJworICAgICAgICAgICAgICAgICAnY29udGFpbiBuYW1lc1xuJworICAgICAgICAgICAgICAgICAnICBvZiBhbnkgKmFkZGl0aW9uYWwqIHNsb3RzKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBJZiBhIGNsYXNzIGRlZmluZXMgYSBzbG90IGFsc28gZGVmaW5lZCBpbiBhIGJhc2UgY2xhc3MsICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICBpbnN0YW5jZSB2YXJpYWJsZSBkZWZpbmVkIGJ5IHRoZSBiYXNlIGNsYXNzIHNsb3QgaXMgJworICAgICAgICAgICAgICAgICAnaW5hY2Nlc3NpYmxlXG4nCisgICAgICAgICAgICAgICAgICcgIChleGNlcHQgYnkgcmV0cmlldmluZyBpdHMgZGVzY3JpcHRvciBkaXJlY3RseSBmcm9tIHRoZSAnCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzKS5cbicKKyAgICAgICAgICAgICAgICAgJyAgVGhpcyByZW5kZXJzIHRoZSBtZWFuaW5nIG9mIHRoZSBwcm9ncmFtIHVuZGVmaW5lZC4gIEluIHRoZSAnCisgICAgICAgICAgICAgICAgICdmdXR1cmUsIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgY2hlY2sgbWF5IGJlIGFkZGVkIHRvIHByZXZlbnQgdGhpcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBOb25lbXB0eSAqX19zbG90c19fKiBkb2VzIG5vdCB3b3JrIGZvciBjbGFzc2VzIGRlcml2ZWQgJworICAgICAgICAgICAgICAgICAnZnJvbVxuJworICAgICAgICAgICAgICAgICAnICAidmFyaWFibGUtbGVuZ3RoIiBidWlsdC1pbiB0eXBlcyBzdWNoIGFzICJpbnQiLCAiYnl0ZXMiICcKKyAgICAgICAgICAgICAgICAgJ2FuZCAidHVwbGUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIEFueSBub24tc3RyaW5nIGl0ZXJhYmxlIG1heSBiZSBhc3NpZ25lZCB0byAqX19zbG90c19fKi4gJworICAgICAgICAgICAgICAgICAnTWFwcGluZ3NcbicKKyAgICAgICAgICAgICAgICAgJyAgbWF5IGFsc28gYmUgdXNlZDsgaG93ZXZlciwgaW4gdGhlIGZ1dHVyZSwgc3BlY2lhbCBtZWFuaW5nICcKKyAgICAgICAgICAgICAgICAgJ21heSBiZVxuJworICAgICAgICAgICAgICAgICAnICBhc3NpZ25lZCB0byB0aGUgdmFsdWVzIGNvcnJlc3BvbmRpbmcgdG8gZWFjaCBrZXkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogKl9fY2xhc3NfXyogYXNzaWdubWVudCB3b3JrcyBvbmx5IGlmIGJvdGggY2xhc3NlcyBoYXZlIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lXG4nCisgICAgICAgICAgICAgICAgICcgICpfX3Nsb3RzX18qLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0N1c3RvbWl6aW5nIGNsYXNzIGNyZWF0aW9uXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdXaGVuZXZlciBhIGNsYXNzIGluaGVyaXRzIGZyb20gYW5vdGhlciBjbGFzcywgJworICAgICAgICAgICAgICAgICAnKl9faW5pdF9zdWJjbGFzc19fKiBpc1xuJworICAgICAgICAgICAgICAgICAnY2FsbGVkIG9uIHRoYXQgY2xhc3MuIFRoaXMgd2F5LCBpdCBpcyBwb3NzaWJsZSB0byB3cml0ZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc2VzIHdoaWNoXG4nCisgICAgICAgICAgICAgICAgICdjaGFuZ2UgdGhlIGJlaGF2aW9yIG9mIHN1YmNsYXNzZXMuIFRoaXMgaXMgY2xvc2VseSByZWxhdGVkICcKKyAgICAgICAgICAgICAgICAgJ3RvIGNsYXNzXG4nCisgICAgICAgICAgICAgICAgICdkZWNvcmF0b3JzLCBidXQgd2hlcmUgY2xhc3MgZGVjb3JhdG9ycyBvbmx5IGFmZmVjdCB0aGUgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWMgY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ3RoZXlcJ3JlIGFwcGxpZWQgdG8sICJfX2luaXRfc3ViY2xhc3NfXyIgc29sZWx5IGFwcGxpZXMgdG8gJworICAgICAgICAgICAgICAgICAnZnV0dXJlXG4nCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzIG9mIHRoZSBjbGFzcyBkZWZpbmluZyB0aGUgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzc21ldGhvZCBvYmplY3QuX19pbml0X3N1YmNsYXNzX18oY2xzKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbmV2ZXIgdGhlIGNvbnRhaW5pbmcgY2xhc3MgaXMgJworICAgICAgICAgICAgICAgICAnc3ViY2xhc3NlZC5cbicKKyAgICAgICAgICAgICAgICAgJyAgICpjbHMqIGlzIHRoZW4gdGhlIG5ldyBzdWJjbGFzcy4gSWYgZGVmaW5lZCBhcyBhIG5vcm1hbCAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgbWV0aG9kLCB0aGlzIG1ldGhvZCBpcyBpbXBsaWNpdGx5IGNvbnZlcnRlZCB0byBhIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgS2V5d29yZCBhcmd1bWVudHMgd2hpY2ggYXJlIGdpdmVuIHRvIGEgbmV3IGNsYXNzIGFyZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBwYXJlbnRcJ3MgY2xhc3MgIl9faW5pdF9zdWJjbGFzc19fIi4gRm9yIGNvbXBhdGliaWxpdHkgJworICAgICAgICAgICAgICAgICAnd2l0aCBvdGhlclxuJworICAgICAgICAgICAgICAgICAnICAgY2xhc3NlcyB1c2luZyAiX19pbml0X3N1YmNsYXNzX18iLCBvbmUgc2hvdWxkIHRha2Ugb3V0ICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBuZWVkZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleXdvcmQgYXJndW1lbnRzIGFuZCBwYXNzIHRoZSBvdGhlcnMgb3ZlciB0byB0aGUgYmFzZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcywgYXNcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBjbGFzcyBQaGlsb3NvcGhlcjpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBkZWZhdWx0X25hbWUsICcKKyAgICAgICAgICAgICAgICAgJyoqa3dhcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgc3VwZXIoKS5fX2luaXRfc3ViY2xhc3NfXygqKmt3YXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICAgICAgY2xzLmRlZmF1bHRfbmFtZSA9IGRlZmF1bHRfbmFtZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBjbGFzcyBBdXN0cmFsaWFuUGhpbG9zb3BoZXIoUGhpbG9zb3BoZXIsICcKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHRfbmFtZT0iQnJ1Y2UiKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uICJvYmplY3QuX19pbml0X3N1YmNsYXNzX18iICcKKyAgICAgICAgICAgICAgICAgJ2RvZXMgbm90aGluZyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1dCByYWlzZXMgYW4gZXJyb3IgaWYgaXQgaXMgY2FsbGVkIHdpdGggYW55IGFyZ3VtZW50cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlIG1ldGFjbGFzcyBoaW50ICJtZXRhY2xhc3MiIGlzIGNvbnN1bWVkIGJ5IHRoZSAnCisgICAgICAgICAgICAgICAgICdyZXN0IG9mXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHRoZSB0eXBlIG1hY2hpbmVyeSwgYW5kIGlzIG5ldmVyIHBhc3NlZCB0byAnCisgICAgICAgICAgICAgICAgICciX19pbml0X3N1YmNsYXNzX18iXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGltcGxlbWVudGF0aW9ucy4gVGhlIGFjdHVhbCBtZXRhY2xhc3MgKHJhdGhlciB0aGFuIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHBsaWNpdFxuJworICAgICAgICAgICAgICAgICAnICAgICBoaW50KSBjYW4gYmUgYWNjZXNzZWQgYXMgInR5cGUoY2xzKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuNi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRhY2xhc3Nlc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQnkgZGVmYXVsdCwgY2xhc3NlcyBhcmUgY29uc3RydWN0ZWQgdXNpbmcgInR5cGUoKSIuIFRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzcyBib2R5IGlzXG4nCisgICAgICAgICAgICAgICAgICdleGVjdXRlZCBpbiBhIG5ldyBuYW1lc3BhY2UgYW5kIHRoZSBjbGFzcyBuYW1lIGlzIGJvdW5kICcKKyAgICAgICAgICAgICAgICAgJ2xvY2FsbHkgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdyZXN1bHQgb2YgInR5cGUobmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgY3JlYXRpb24gcHJvY2VzcyBjYW4gYmUgY3VzdG9taXplZCBieSBwYXNzaW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAnIm1ldGFjbGFzcyIga2V5d29yZCBhcmd1bWVudCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBsaW5lLCAnCisgICAgICAgICAgICAgICAgICdvciBieVxuJworICAgICAgICAgICAgICAgICAnaW5oZXJpdGluZyBmcm9tIGFuIGV4aXN0aW5nIGNsYXNzIHRoYXQgaW5jbHVkZWQgc3VjaCBhbiAnCisgICAgICAgICAgICAgICAgICdhcmd1bWVudC4gSW5cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBmb2xsb3dpbmcgZXhhbXBsZSwgYm90aCAiTXlDbGFzcyIgYW5kICJNeVN1YmNsYXNzIiBhcmUgJworICAgICAgICAgICAgICAgICAnaW5zdGFuY2VzXG4nCisgICAgICAgICAgICAgICAgICdvZiAiTWV0YSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NZXRhKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBwYXNzXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIE15U3ViY2xhc3MoTXlDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBbnkgb3RoZXIga2V5d29yZCBhcmd1bWVudHMgdGhhdCBhcmUgc3BlY2lmaWVkIGluIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdkZWZpbml0aW9uXG4nCisgICAgICAgICAgICAgICAgICdhcmUgcGFzc2VkIHRocm91Z2ggdG8gYWxsIG1ldGFjbGFzcyBvcGVyYXRpb25zIGRlc2NyaWJlZCAnCisgICAgICAgICAgICAgICAgICdiZWxvdy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiBhIGNsYXNzIGRlZmluaXRpb24gaXMgZXhlY3V0ZWQsIHRoZSBmb2xsb3dpbmcgc3RlcHMgJworICAgICAgICAgICAgICAgICAnb2NjdXI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzcyBpcyBkZXRlcm1pbmVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG5hbWVzcGFjZSBpcyBwcmVwYXJlZFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcqIHRoZSBjbGFzcyBib2R5IGlzIGV4ZWN1dGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogdGhlIGNsYXNzIG9iamVjdCBpcyBjcmVhdGVkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGV0ZXJtaW5pbmcgdGhlIGFwcHJvcHJpYXRlIG1ldGFjbGFzc1xuJworICAgICAgICAgICAgICAgICAnLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgYXBwcm9wcmlhdGUgbWV0YWNsYXNzIGZvciBhIGNsYXNzIGRlZmluaXRpb24gaXMgJworICAgICAgICAgICAgICAgICAnZGV0ZXJtaW5lZCBhc1xuJworICAgICAgICAgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBubyBiYXNlcyBhbmQgbm8gZXhwbGljaXQgbWV0YWNsYXNzIGFyZSBnaXZlbiwgdGhlbiAnCisgICAgICAgICAgICAgICAgICcidHlwZSgpIiBpc1xuJworICAgICAgICAgICAgICAgICAnICB1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyogaWYgYW4gZXhwbGljaXQgbWV0YWNsYXNzIGlzIGdpdmVuIGFuZCBpdCBpcyAqbm90KiBhbiAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZSBvZlxuJworICAgICAgICAgICAgICAgICAnICAidHlwZSgpIiwgdGhlbiBpdCBpcyB1c2VkIGRpcmVjdGx5IGFzIHRoZSBtZXRhY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnKiBpZiBhbiBpbnN0YW5jZSBvZiAidHlwZSgpIiBpcyBnaXZlbiBhcyB0aGUgZXhwbGljaXQgJworICAgICAgICAgICAgICAgICAnbWV0YWNsYXNzLCBvclxuJworICAgICAgICAgICAgICAgICAnICBiYXNlcyBhcmUgZGVmaW5lZCwgdGhlbiB0aGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyAnCisgICAgICAgICAgICAgICAgICd1c2VkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBtb3N0IGRlcml2ZWQgbWV0YWNsYXNzIGlzIHNlbGVjdGVkIGZyb20gdGhlIGV4cGxpY2l0bHkgJworICAgICAgICAgICAgICAgICAnc3BlY2lmaWVkXG4nCisgICAgICAgICAgICAgICAgICdtZXRhY2xhc3MgKGlmIGFueSkgYW5kIHRoZSBtZXRhY2xhc3NlcyAoaS5lLiAidHlwZShjbHMpIikgb2YgJworICAgICAgICAgICAgICAgICAnYWxsXG4nCisgICAgICAgICAgICAgICAgICdzcGVjaWZpZWQgYmFzZSBjbGFzc2VzLiBUaGUgbW9zdCBkZXJpdmVkIG1ldGFjbGFzcyBpcyBvbmUgJworICAgICAgICAgICAgICAgICAnd2hpY2ggaXMgYVxuJworICAgICAgICAgICAgICAgICAnc3VidHlwZSBvZiAqYWxsKiBvZiB0aGVzZSBjYW5kaWRhdGUgbWV0YWNsYXNzZXMuIElmIG5vbmUgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICdjYW5kaWRhdGUgbWV0YWNsYXNzZXMgbWVldHMgdGhhdCBjcml0ZXJpb24sIHRoZW4gdGhlIGNsYXNzICcKKyAgICAgICAgICAgICAgICAgJ2RlZmluaXRpb25cbicKKyAgICAgICAgICAgICAgICAgJ3dpbGwgZmFpbCB3aXRoICJUeXBlRXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1ByZXBhcmluZyB0aGUgY2xhc3MgbmFtZXNwYWNlXG4nCisgICAgICAgICAgICAgICAgICctLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdPbmNlIHRoZSBhcHByb3ByaWF0ZSBtZXRhY2xhc3MgaGFzIGJlZW4gaWRlbnRpZmllZCwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBwcmVwYXJlZC4gSWYgdGhlIG1ldGFjbGFzcyBoYXMgYSAiX19wcmVwYXJlX18iICcKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSxcbicKKyAgICAgICAgICAgICAgICAgJ2l0IGlzIGNhbGxlZCBhcyAibmFtZXNwYWNlID0gbWV0YWNsYXNzLl9fcHJlcGFyZV9fKG5hbWUsICcKKyAgICAgICAgICAgICAgICAgJ2Jhc2VzLFxuJworICAgICAgICAgICAgICAgICAnKiprd2RzKSIgKHdoZXJlIHRoZSBhZGRpdGlvbmFsIGtleXdvcmQgYXJndW1lbnRzLCBpZiBhbnksICcKKyAgICAgICAgICAgICAgICAgJ2NvbWUgZnJvbVxuJworICAgICAgICAgICAgICAgICAndGhlIGNsYXNzIGRlZmluaXRpb24pLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJZiB0aGUgbWV0YWNsYXNzIGhhcyBubyAiX19wcmVwYXJlX18iIGF0dHJpYnV0ZSwgdGhlbiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ25hbWVzcGFjZSBpcyBpbml0aWFsaXNlZCBhcyBhbiBlbXB0eSBvcmRlcmVkIG1hcHBpbmcuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMTUqKiAtIE1ldGFjbGFzc2VzIGluIFB5dGhvbiAzMDAwXG4nCisgICAgICAgICAgICAgICAgICcgICAgIEludHJvZHVjZWQgdGhlICJfX3ByZXBhcmVfXyIgbmFtZXNwYWNlIGhvb2tcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdFeGVjdXRpbmcgdGhlIGNsYXNzIGJvZHlcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgY2xhc3MgYm9keSBpcyBleGVjdXRlZCAoYXBwcm94aW1hdGVseSkgYXMgImV4ZWMoYm9keSwgJworICAgICAgICAgICAgICAgICAnZ2xvYmFscygpLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlKSIuIFRoZSBrZXkgZGlmZmVyZW5jZSBmcm9tIGEgbm9ybWFsIGNhbGwgdG8gJworICAgICAgICAgICAgICAgICAnImV4ZWMoKSIgaXMgdGhhdFxuJworICAgICAgICAgICAgICAgICAnbGV4aWNhbCBzY29waW5nIGFsbG93cyB0aGUgY2xhc3MgYm9keSAoaW5jbHVkaW5nIGFueSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzKSB0b1xuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIG5hbWVzIGZyb20gdGhlIGN1cnJlbnQgYW5kIG91dGVyIHNjb3BlcyB3aGVuIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIGEgZnVuY3Rpb24uXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0hvd2V2ZXIsIGV2ZW4gd2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBvY2N1cnMgaW5zaWRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdmdW5jdGlvbixcbicKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgZGVmaW5lZCBpbnNpZGUgdGhlIGNsYXNzIHN0aWxsIGNhbm5vdCBzZWUgbmFtZXMgJworICAgICAgICAgICAgICAgICAnZGVmaW5lZCBhdCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHNjb3BlLiBDbGFzcyB2YXJpYWJsZXMgbXVzdCBiZSBhY2Nlc3NlZCB0aHJvdWdoIHRoZSAnCisgICAgICAgICAgICAgICAgICdmaXJzdFxuJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyIG9mIGluc3RhbmNlIG9yIGNsYXNzIG1ldGhvZHMsIGFuZCBjYW5ub3QgYmUgJworICAgICAgICAgICAgICAgICAnYWNjZXNzZWQgYXQgYWxsXG4nCisgICAgICAgICAgICAgICAgICdmcm9tIHN0YXRpYyBtZXRob2RzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0NyZWF0aW5nIHRoZSBjbGFzcyBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnT25jZSB0aGUgY2xhc3MgbmFtZXNwYWNlIGhhcyBiZWVuIHBvcHVsYXRlZCBieSBleGVjdXRpbmcgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICdib2R5LCB0aGUgY2xhc3Mgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgY2FsbGluZyAnCisgICAgICAgICAgICAgICAgICcibWV0YWNsYXNzKG5hbWUsIGJhc2VzLFxuJworICAgICAgICAgICAgICAgICAnbmFtZXNwYWNlLCAqKmt3ZHMpIiAodGhlIGFkZGl0aW9uYWwga2V5d29yZHMgcGFzc2VkIGhlcmUgYXJlICcKKyAgICAgICAgICAgICAgICAgJ3RoZSBzYW1lXG4nCisgICAgICAgICAgICAgICAgICdhcyB0aG9zZSBwYXNzZWQgdG8gIl9fcHJlcGFyZV9fIikuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoaXMgY2xhc3Mgb2JqZWN0IGlzIHRoZSBvbmUgdGhhdCB3aWxsIGJlIHJlZmVyZW5jZWQgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3plcm8tXG4nCisgICAgICAgICAgICAgICAgICdhcmd1bWVudCBmb3JtIG9mICJzdXBlcigpIi4gIl9fY2xhc3NfXyIgaXMgYW4gaW1wbGljaXQgJworICAgICAgICAgICAgICAgICAnY2xvc3VyZVxuJworICAgICAgICAgICAgICAgICAncmVmZXJlbmNlIGNyZWF0ZWQgYnkgdGhlIGNvbXBpbGVyIGlmIGFueSBtZXRob2RzIGluIGEgY2xhc3MgJworICAgICAgICAgICAgICAgICAnYm9keSByZWZlclxuJworICAgICAgICAgICAgICAgICAndG8gZWl0aGVyICJfX2NsYXNzX18iIG9yICJzdXBlciIuIFRoaXMgYWxsb3dzIHRoZSB6ZXJvICcKKyAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGZvcm1cbicKKyAgICAgICAgICAgICAgICAgJ29mICJzdXBlcigpIiB0byBjb3JyZWN0bHkgaWRlbnRpZnkgdGhlIGNsYXNzIGJlaW5nIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnYmFzZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ2xleGljYWwgc2NvcGluZywgd2hpbGUgdGhlIGNsYXNzIG9yIGluc3RhbmNlIHRoYXQgd2FzIHVzZWQgJworICAgICAgICAgICAgICAgICAndG8gbWFrZSB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2N1cnJlbnQgY2FsbCBpcyBpZGVudGlmaWVkIGJhc2VkIG9uIHRoZSBmaXJzdCBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQgdG8gdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0FmdGVyIHRoZSBjbGFzcyBvYmplY3QgaXMgY3JlYXRlZCwgaXQgaXMgcGFzc2VkIHRvIHRoZSAnCisgICAgICAgICAgICAgICAgICdjbGFzc1xuJworICAgICAgICAgICAgICAgICAnZGVjb3JhdG9ycyBpbmNsdWRlZCBpbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiAoaWYgYW55KSBhbmQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ3Jlc3VsdGluZ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0IGlzIGJvdW5kIGluIHRoZSBsb2NhbCBuYW1lc3BhY2UgYXMgdGhlIGRlZmluZWQgJworICAgICAgICAgICAgICAgICAnY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1doZW4gYSBuZXcgY2xhc3MgaXMgY3JlYXRlZCBieSAidHlwZS5fX25ld19fIiwgdGhlIG9iamVjdCAnCisgICAgICAgICAgICAgICAgICdwcm92aWRlZCBhc1xuJworICAgICAgICAgICAgICAgICAndGhlIG5hbWVzcGFjZSBwYXJhbWV0ZXIgaXMgY29waWVkIHRvIGEgbmV3IG9yZGVyZWQgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICdvcmlnaW5hbCBvYmplY3QgaXMgZGlzY2FyZGVkLiBUaGUgbmV3IGNvcHkgaXMgd3JhcHBlZCBpbiBhICcKKyAgICAgICAgICAgICAgICAgJ3JlYWQtb25seVxuJworICAgICAgICAgICAgICAgICAncHJveHksIHdoaWNoIGJlY29tZXMgdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIG9mIHRoZSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICdvYmplY3QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDMxMzUqKiAtIE5ldyBzdXBlclxuJworICAgICAgICAgICAgICAgICAnICAgICBEZXNjcmliZXMgdGhlIGltcGxpY2l0ICJfX2NsYXNzX18iIGNsb3N1cmUgcmVmZXJlbmNlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnTWV0YWNsYXNzIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgJy0tLS0tLS0tLS0tLS0tLS0tXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBwb3RlbnRpYWwgdXNlcyBmb3IgbWV0YWNsYXNzZXMgYXJlIGJvdW5kbGVzcy4gU29tZSBpZGVhcyAnCisgICAgICAgICAgICAgICAgICd0aGF0IGhhdmVcbicKKyAgICAgICAgICAgICAgICAgJ2JlZW4gZXhwbG9yZWQgaW5jbHVkZSBsb2dnaW5nLCBpbnRlcmZhY2UgY2hlY2tpbmcsICcKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpY1xuJworICAgICAgICAgICAgICAgICAnZGVsZWdhdGlvbiwgYXV0b21hdGljIHByb3BlcnR5IGNyZWF0aW9uLCBwcm94aWVzLCAnCisgICAgICAgICAgICAgICAgICdmcmFtZXdvcmtzLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJ2F1dG9tYXRpYyByZXNvdXJjZSBsb2NraW5nL3N5bmNocm9uaXphdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnSGVyZSBpcyBhbiBleGFtcGxlIG9mIGEgbWV0YWNsYXNzIHRoYXQgdXNlcyBhblxuJworICAgICAgICAgICAgICAgICAnImNvbGxlY3Rpb25zLk9yZGVyZWREaWN0IiB0byByZW1lbWJlciB0aGUgb3JkZXIgdGhhdCBjbGFzcyAnCisgICAgICAgICAgICAgICAgICd2YXJpYWJsZXNcbicKKyAgICAgICAgICAgICAgICAgJ2FyZSBkZWZpbmVkOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzcyBPcmRlcmVkQ2xhc3ModHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBAY2xhc3NtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgX19wcmVwYXJlX18obWV0YWNscywgbmFtZSwgYmFzZXMsICoqa3dkcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJldHVybiBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsICoqa3dkcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdCA9IHR5cGUuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCAnCisgICAgICAgICAgICAgICAgICdkaWN0KG5hbWVzcGFjZSkpXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAgIHJlc3VsdC5tZW1iZXJzID0gdHVwbGUobmFtZXNwYWNlKVxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgICByZXR1cm4gcmVzdWx0XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIEEobWV0YWNsYXNzPU9yZGVyZWRDbGFzcyk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgZGVmIG9uZShzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgICAgIGRlZiB0d28oc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgdGhyZWUoc2VsZik6IHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICBkZWYgZm91cihzZWxmKTogcGFzc1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gQS5tZW1iZXJzXG4nCisgICAgICAgICAgICAgICAgICIgICAoJ19fbW9kdWxlX18nLCAnb25lJywgJ3R3bycsICd0aHJlZScsICdmb3VyJylcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnV2hlbiB0aGUgY2xhc3MgZGVmaW5pdGlvbiBmb3IgKkEqIGdldHMgZXhlY3V0ZWQsIHRoZSBwcm9jZXNzICcKKyAgICAgICAgICAgICAgICAgJ2JlZ2luc1xuJworICAgICAgICAgICAgICAgICAnd2l0aCBjYWxsaW5nIHRoZSBtZXRhY2xhc3NcJ3MgIl9fcHJlcGFyZV9fKCkiIG1ldGhvZCB3aGljaCAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zIGFuXG4nCisgICAgICAgICAgICAgICAgICdlbXB0eSAiY29sbGVjdGlvbnMuT3JkZXJlZERpY3QiLiAgVGhhdCBtYXBwaW5nIHJlY29yZHMgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgYW5kXG4nCisgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGVzIG9mICpBKiBhcyB0aGV5IGFyZSBkZWZpbmVkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgJworICAgICAgICAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudC4gT25jZSB0aG9zZSBkZWZpbml0aW9ucyBhcmUgZXhlY3V0ZWQsIHRoZSBvcmRlcmVkICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnlcbicKKyAgICAgICAgICAgICAgICAgJ2lzIGZ1bGx5IHBvcHVsYXRlZCBhbmQgdGhlIG1ldGFjbGFzc1wncyAiX19uZXdfXygpIiBtZXRob2QgJworICAgICAgICAgICAgICAgICAnZ2V0c1xuJworICAgICAgICAgICAgICAgICAnaW52b2tlZC4gIFRoYXQgbWV0aG9kIGJ1aWxkcyB0aGUgbmV3IHR5cGUgYW5kIGl0IHNhdmVzIHRoZSAnCisgICAgICAgICAgICAgICAgICdvcmRlcmVkXG4nCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5IGtleXMgaW4gYW4gYXR0cmlidXRlIGNhbGxlZCAibWVtYmVycyIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQ3VzdG9taXppbmcgaW5zdGFuY2UgYW5kIHN1YmNsYXNzIGNoZWNrc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgYXJlIHVzZWQgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAnYmVoYXZpb3Igb2YgdGhlXG4nCisgICAgICAgICAgICAgICAgICciaXNpbnN0YW5jZSgpIiBhbmQgImlzc3ViY2xhc3MoKSIgYnVpbHQtaW4gZnVuY3Rpb25zLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbiBwYXJ0aWN1bGFyLCB0aGUgbWV0YWNsYXNzICJhYmMuQUJDTWV0YSIgaW1wbGVtZW50cyB0aGVzZSAnCisgICAgICAgICAgICAgICAgICdtZXRob2RzIGluXG4nCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBhbGxvdyB0aGUgYWRkaXRpb24gb2YgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChBQkNzKSAnCisgICAgICAgICAgICAgICAgICdhc1xuJworICAgICAgICAgICAgICAgICAnInZpcnR1YWwgYmFzZSBjbGFzc2VzIiB0byBhbnkgY2xhc3Mgb3IgdHlwZSAoaW5jbHVkaW5nICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICd0eXBlcyksIGluY2x1ZGluZyBvdGhlciBBQkNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdjbGFzcy5fX2luc3RhbmNlY2hlY2tfXyhzZWxmLCBpbnN0YW5jZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgKmluc3RhbmNlKiBzaG91bGQgYmUgY29uc2lkZXJlZCBhIChkaXJlY3QgJworICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluZGlyZWN0KSBpbnN0YW5jZSBvZiAqY2xhc3MqLiBJZiBkZWZpbmVkLCBjYWxsZWQgdG8gJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50XG4nCisgICAgICAgICAgICAgICAgICcgICAiaXNpbnN0YW5jZShpbnN0YW5jZSwgY2xhc3MpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnY2xhc3MuX19zdWJjbGFzc2NoZWNrX18oc2VsZiwgc3ViY2xhc3MpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmICpzdWJjbGFzcyogc2hvdWxkIGJlIGNvbnNpZGVyZWQgYSAoZGlyZWN0ICcKKyAgICAgICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAgICAgICcgICBpbmRpcmVjdCkgc3ViY2xhc3Mgb2YgKmNsYXNzKi4gIElmIGRlZmluZWQsIGNhbGxlZCB0byAnCisgICAgICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICJpc3N1YmNsYXNzKHN1YmNsYXNzLCBjbGFzcykiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlIHRoYXQgdGhlc2UgbWV0aG9kcyBhcmUgbG9va2VkIHVwIG9uIHRoZSB0eXBlICcKKyAgICAgICAgICAgICAgICAgJyhtZXRhY2xhc3MpIG9mIGFcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLiAgVGhleSBjYW5ub3QgYmUgZGVmaW5lZCBhcyBjbGFzcyBtZXRob2RzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdhY3R1YWwgY2xhc3MuXG4nCisgICAgICAgICAgICAgICAgICdUaGlzIGlzIGNvbnNpc3RlbnQgd2l0aCB0aGUgbG9va3VwIG9mIHNwZWNpYWwgbWV0aG9kcyB0aGF0ICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBjYWxsZWRcbicKKyAgICAgICAgICAgICAgICAgJ29uIGluc3RhbmNlcywgb25seSBpbiB0aGlzIGNhc2UgdGhlIGluc3RhbmNlIGlzIGl0c2VsZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAqKlBFUCAzMTE5KiogLSBJbnRyb2R1Y2luZyBBYnN0cmFjdCBCYXNlIENsYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgSW5jbHVkZXMgdGhlIHNwZWNpZmljYXRpb24gZm9yIGN1c3RvbWl6aW5nICcKKyAgICAgICAgICAgICAgICAgJyJpc2luc3RhbmNlKCkiIGFuZFxuJworICAgICAgICAgICAgICAgICAnICAgICAiaXNzdWJjbGFzcygpIiBiZWhhdmlvciB0aHJvdWdoICJfX2luc3RhbmNlY2hlY2tfXygpIiAnCisgICAgICAgICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIl9fc3ViY2xhc3NjaGVja19fKCkiLCB3aXRoIG1vdGl2YXRpb24gZm9yIHRoaXMgJworICAgICAgICAgICAgICAgICAnZnVuY3Rpb25hbGl0eSBpblxuJworICAgICAgICAgICAgICAgICAnICAgICB0aGUgY29udGV4dCBvZiBhZGRpbmcgQWJzdHJhY3QgQmFzZSBDbGFzc2VzIChzZWUgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJhYmMiXG4nCisgICAgICAgICAgICAgICAgICcgICAgIG1vZHVsZSkgdG8gdGhlIGxhbmd1YWdlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0VtdWxhdGluZyBjYWxsYWJsZSBvYmplY3RzXG4nCisgICAgICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jYWxsX18oc2VsZlssIGFyZ3MuLi5dKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgd2hlbiB0aGUgaW5zdGFuY2UgaXMgImNhbGxlZCIgYXMgYSBmdW5jdGlvbjsgaWYgJworICAgICAgICAgICAgICAgICAndGhpcyBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIGlzIGRlZmluZWQsICJ4KGFyZzEsIGFyZzIsIC4uLikiIGlzIGEgc2hvcnRoYW5kIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgInguX19jYWxsX18oYXJnMSwgYXJnMiwgLi4uKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIGNvbnRhaW5lciB0eXBlc1xuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgZm9sbG93aW5nIG1ldGhvZHMgY2FuIGJlIGRlZmluZWQgdG8gaW1wbGVtZW50IGNvbnRhaW5lciAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnQ29udGFpbmVycyB1c3VhbGx5IGFyZSBzZXF1ZW5jZXMgKHN1Y2ggYXMgbGlzdHMgb3IgdHVwbGVzKSAnCisgICAgICAgICAgICAgICAgICdvciBtYXBwaW5nc1xuJworICAgICAgICAgICAgICAgICAnKGxpa2UgZGljdGlvbmFyaWVzKSwgYnV0IGNhbiByZXByZXNlbnQgb3RoZXIgY29udGFpbmVycyBhcyAnCisgICAgICAgICAgICAgICAgICd3ZWxsLiAgVGhlXG4nCisgICAgICAgICAgICAgICAgICdmaXJzdCBzZXQgb2YgbWV0aG9kcyBpcyB1c2VkIGVpdGhlciB0byBlbXVsYXRlIGEgc2VxdWVuY2Ugb3IgJworICAgICAgICAgICAgICAgICAndG9cbicKKyAgICAgICAgICAgICAgICAgJ2VtdWxhdGUgYSBtYXBwaW5nOyB0aGUgZGlmZmVyZW5jZSBpcyB0aGF0IGZvciBhIHNlcXVlbmNlLCAnCisgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgJ2FsbG93YWJsZSBrZXlzIHNob3VsZCBiZSB0aGUgaW50ZWdlcnMgKmsqIGZvciB3aGljaCAiMCA8PSBrICcKKyAgICAgICAgICAgICAgICAgJzwgTiIgd2hlcmVcbicKKyAgICAgICAgICAgICAgICAgJypOKiBpcyB0aGUgbGVuZ3RoIG9mIHRoZSBzZXF1ZW5jZSwgb3Igc2xpY2Ugb2JqZWN0cywgd2hpY2ggJworICAgICAgICAgICAgICAgICAnZGVmaW5lIGFcbicKKyAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIGl0ZW1zLiAgSXQgaXMgYWxzbyByZWNvbW1lbmRlZCB0aGF0IG1hcHBpbmdzICcKKyAgICAgICAgICAgICAgICAgJ3Byb3ZpZGUgdGhlXG4nCisgICAgICAgICAgICAgICAgICdtZXRob2RzICJrZXlzKCkiLCAidmFsdWVzKCkiLCAiaXRlbXMoKSIsICJnZXQoKSIsICcKKyAgICAgICAgICAgICAgICAgJyJjbGVhcigpIixcbicKKyAgICAgICAgICAgICAgICAgJyJzZXRkZWZhdWx0KCkiLCAicG9wKCkiLCAicG9waXRlbSgpIiwgImNvcHkoKSIsIGFuZCAnCisgICAgICAgICAgICAgICAgICcidXBkYXRlKCkiXG4nCisgICAgICAgICAgICAgICAgICJiZWhhdmluZyBzaW1pbGFyIHRvIHRob3NlIGZvciBQeXRob24ncyBzdGFuZGFyZCBkaWN0aW9uYXJ5ICIKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdUaGUgImNvbGxlY3Rpb25zIiBtb2R1bGUgcHJvdmlkZXMgYSAiTXV0YWJsZU1hcHBpbmciICcKKyAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0IGJhc2VcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHRvIGhlbHAgY3JlYXRlIHRob3NlIG1ldGhvZHMgZnJvbSBhIGJhc2Ugc2V0IG9mICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIixcbicKKyAgICAgICAgICAgICAgICAgJyJfX3NldGl0ZW1fXygpIiwgIl9fZGVsaXRlbV9fKCkiLCBhbmQgImtleXMoKSIuIE11dGFibGUgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgICAgICdzaG91bGQgcHJvdmlkZSBtZXRob2RzICJhcHBlbmQoKSIsICJjb3VudCgpIiwgImluZGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICciZXh0ZW5kKCkiLFxuJworICAgICAgICAgICAgICAgICAnImluc2VydCgpIiwgInBvcCgpIiwgInJlbW92ZSgpIiwgInJldmVyc2UoKSIgYW5kICJzb3J0KCkiLCAnCisgICAgICAgICAgICAgICAgICdsaWtlIFB5dGhvblxuJworICAgICAgICAgICAgICAgICAnc3RhbmRhcmQgbGlzdCBvYmplY3RzLiAgRmluYWxseSwgc2VxdWVuY2UgdHlwZXMgc2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnYWRkaXRpb24gKG1lYW5pbmcgY29uY2F0ZW5hdGlvbikgYW5kIG11bHRpcGxpY2F0aW9uICcKKyAgICAgICAgICAgICAgICAgJyhtZWFuaW5nXG4nCisgICAgICAgICAgICAgICAgICdyZXBldGl0aW9uKSBieSBkZWZpbmluZyB0aGUgbWV0aG9kcyAiX19hZGRfXygpIiwgJworICAgICAgICAgICAgICAgICAnIl9fcmFkZF9fKCkiLFxuJworICAgICAgICAgICAgICAgICAnIl9faWFkZF9fKCkiLCAiX19tdWxfXygpIiwgIl9fcm11bF9fKCkiIGFuZCAiX19pbXVsX18oKSIgJworICAgICAgICAgICAgICAgICAnZGVzY3JpYmVkXG4nCisgICAgICAgICAgICAgICAgICdiZWxvdzsgdGhleSBzaG91bGQgbm90IGRlZmluZSBvdGhlciBudW1lcmljYWwgb3BlcmF0b3JzLiAgSXQgJworICAgICAgICAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkIHRoYXQgYm90aCBtYXBwaW5ncyBhbmQgc2VxdWVuY2VzIGltcGxlbWVudCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyJfX2NvbnRhaW5zX18oKSIgbWV0aG9kIHRvIGFsbG93IGVmZmljaWVudCB1c2Ugb2YgdGhlICJpbiIgJworICAgICAgICAgICAgICAgICAnb3BlcmF0b3I7XG4nCisgICAgICAgICAgICAgICAgICdmb3IgbWFwcGluZ3MsICJpbiIgc2hvdWxkIHNlYXJjaCB0aGUgbWFwcGluZ1wncyBrZXlzOyBmb3IgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2VzLCBpdFxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIHNlYXJjaCB0aHJvdWdoIHRoZSB2YWx1ZXMuICBJdCBpcyBmdXJ0aGVyIHJlY29tbWVuZGVkICcKKyAgICAgICAgICAgICAgICAgJ3RoYXQgYm90aFxuJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgYW5kIHNlcXVlbmNlcyBpbXBsZW1lbnQgdGhlICJfX2l0ZXJfXygpIiBtZXRob2QgdG8gJworICAgICAgICAgICAgICAgICAnYWxsb3dcbicKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudCBpdGVyYXRpb24gdGhyb3VnaCB0aGUgY29udGFpbmVyOyBmb3IgbWFwcGluZ3MsICcKKyAgICAgICAgICAgICAgICAgJyJfX2l0ZXJfXygpIlxuJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHRoZSBzYW1lIGFzICJrZXlzKCkiOyBmb3Igc2VxdWVuY2VzLCBpdCBzaG91bGQgJworICAgICAgICAgICAgICAgICAnaXRlcmF0ZVxuJworICAgICAgICAgICAgICAgICAndGhyb3VnaCB0aGUgdmFsdWVzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5fXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBidWlsdC1pbiBmdW5jdGlvbiAibGVuKCkiLiAgJworICAgICAgICAgICAgICAgICAnU2hvdWxkIHJldHVyblxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGxlbmd0aCBvZiB0aGUgb2JqZWN0LCBhbiBpbnRlZ2VyICI+PSIgMC4gIEFsc28sIGFuICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBkb2VzblwndCBkZWZpbmUgYSAiX19ib29sX18oKSIgbWV0aG9kIGFuZCB3aG9zZSAnCisgICAgICAgICAgICAgICAgICciX19sZW5fXygpIiBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHJldHVybnMgemVybyBpcyBjb25zaWRlcmVkIHRvIGJlIGZhbHNlIGluIGEgQm9vbGVhbiAnCisgICAgICAgICAgICAgICAgICdjb250ZXh0LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19sZW5ndGhfaGludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmxlbmd0aF9oaW50KCkiLiBTaG91bGQgJworICAgICAgICAgICAgICAgICAncmV0dXJuIGFuXG4nCisgICAgICAgICAgICAgICAgICcgICBlc3RpbWF0ZWQgbGVuZ3RoIGZvciB0aGUgb2JqZWN0ICh3aGljaCBtYXkgYmUgZ3JlYXRlciBvciAnCisgICAgICAgICAgICAgICAgICdsZXNzIHRoYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY3R1YWwgbGVuZ3RoKS4gVGhlIGxlbmd0aCBtdXN0IGJlIGFuIGludGVnZXIgIj49IiAwLiAnCisgICAgICAgICAgICAgICAgICdUaGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgcHVyZWx5IGFuIG9wdGltaXphdGlvbiBhbmQgaXMgbmV2ZXIgcmVxdWlyZWQgJworICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3JyZWN0bmVzcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy40LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdOb3RlOiBTbGljaW5nIGlzIGRvbmUgZXhjbHVzaXZlbHkgd2l0aCB0aGUgZm9sbG93aW5nIHRocmVlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICcgIEEgY2FsbCBsaWtlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYVsxOjJdID0gYlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgIGlzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICBhW3NsaWNlKDEsIDIsIE5vbmUpXSA9IGJcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICBhbmQgc28gZm9ydGguICBNaXNzaW5nIHNsaWNlIGl0ZW1zIGFyZSBhbHdheXMgZmlsbGVkIGluICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19nZXRpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGV2YWx1YXRpb24gb2YgInNlbGZba2V5XSIuIEZvciAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZSB0eXBlcyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBhY2NlcHRlZCBrZXlzIHNob3VsZCBiZSBpbnRlZ2VycyBhbmQgc2xpY2Ugb2JqZWN0cy4gICcKKyAgICAgICAgICAgICAgICAgJ05vdGUgdGhhdFxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgaW5kZXhlcyAoaWYgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIHdpc2hlc1xuJworICAgICAgICAgICAgICAgICAnICAgdG8gZW11bGF0ZSBhIHNlcXVlbmNlIHR5cGUpIGlzIHVwIHRvIHRoZSAiX19nZXRpdGVtX18oKSIgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLiBJZlxuJworICAgICAgICAgICAgICAgICAnICAgKmtleSogaXMgb2YgYW4gaW5hcHByb3ByaWF0ZSB0eXBlLCAiVHlwZUVycm9yIiBtYXkgYmUgJworICAgICAgICAgICAgICAgICAncmFpc2VkOyBpZiBvZlxuJworICAgICAgICAgICAgICAgICAnICAgYSB2YWx1ZSBvdXRzaWRlIHRoZSBzZXQgb2YgaW5kZXhlcyBmb3IgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJyhhZnRlciBhbnlcbicKKyAgICAgICAgICAgICAgICAgJyAgIHNwZWNpYWwgaW50ZXJwcmV0YXRpb24gb2YgbmVnYXRpdmUgdmFsdWVzKSwgIkluZGV4RXJyb3IiICcKKyAgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZVxuJworICAgICAgICAgICAgICAgICAnICAgcmFpc2VkLiBGb3IgbWFwcGluZyB0eXBlcywgaWYgKmtleSogaXMgbWlzc2luZyAobm90IGluICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGFpbmVyKSwgIktleUVycm9yIiBzaG91bGQgYmUgcmFpc2VkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiAiZm9yIiBsb29wcyBleHBlY3QgdGhhdCBhbiAiSW5kZXhFcnJvciIgd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdyYWlzZWQgZm9yXG4nCisgICAgICAgICAgICAgICAgICcgICAgIGlsbGVnYWwgaW5kZXhlcyB0byBhbGxvdyBwcm9wZXIgZGV0ZWN0aW9uIG9mIHRoZSBlbmQgb2YgJworICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19taXNzaW5nX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgYnkgImRpY3QiLiJfX2dldGl0ZW1fXygpIiB0byBpbXBsZW1lbnQgInNlbGZba2V5XSIgJworICAgICAgICAgICAgICAgICAnZm9yIGRpY3RcbicKKyAgICAgICAgICAgICAgICAgJyAgIHN1YmNsYXNzZXMgd2hlbiBrZXkgaXMgbm90IGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19zZXRpdGVtX18oc2VsZiwga2V5LCB2YWx1ZSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBhc3NpZ25tZW50IHRvICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgY2hhbmdlcyB0byB0aGUgdmFsdWVzIGZvciBrZXlzLCBvciBpZiAnCisgICAgICAgICAgICAgICAgICduZXcga2V5c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIGFkZGVkLCBvciBmb3Igc2VxdWVuY2VzIGlmIGVsZW1lbnRzIGNhbiBiZSAnCisgICAgICAgICAgICAgICAgICdyZXBsYWNlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAnICAgc2FtZSBleGNlcHRpb25zIHNob3VsZCBiZSByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBhcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSAiX19nZXRpdGVtX18oKSIgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19kZWxpdGVtX18oc2VsZiwga2V5KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBDYWxsZWQgdG8gaW1wbGVtZW50IGRlbGV0aW9uIG9mICJzZWxmW2tleV0iLiAgU2FtZSBub3RlICcKKyAgICAgICAgICAgICAgICAgJ2FzIGZvclxuJworICAgICAgICAgICAgICAgICAnICAgIl9fZ2V0aXRlbV9fKCkiLiAgVGhpcyBzaG91bGQgb25seSBiZSBpbXBsZW1lbnRlZCBmb3IgJworICAgICAgICAgICAgICAgICAnbWFwcGluZ3MgaWZcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRoZSBvYmplY3RzIHN1cHBvcnQgcmVtb3ZhbCBvZiBrZXlzLCBvciBmb3Igc2VxdWVuY2VzIGlmICcKKyAgICAgICAgICAgICAgICAgJ2VsZW1lbnRzXG4nCisgICAgICAgICAgICAgICAgICcgICBjYW4gYmUgcmVtb3ZlZCBmcm9tIHRoZSBzZXF1ZW5jZS4gIFRoZSBzYW1lIGV4Y2VwdGlvbnMgJworICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlXG4nCisgICAgICAgICAgICAgICAgICcgICByYWlzZWQgZm9yIGltcHJvcGVyICprZXkqIHZhbHVlcyBhcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJfX2dldGl0ZW1fXygpIiBtZXRob2QuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l0ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBpcyBjYWxsZWQgd2hlbiBhbiBpdGVyYXRvciBpcyByZXF1aXJlZCBmb3IgYSAnCisgICAgICAgICAgICAgICAgICdjb250YWluZXIuXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGlzIG1ldGhvZCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yIG9iamVjdCB0aGF0IGNhbiAnCisgICAgICAgICAgICAgICAgICdpdGVyYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyLiAgRm9yIG1hcHBpbmdzLCBpdCAnCisgICAgICAgICAgICAgICAgICdzaG91bGRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZXJhdGUgb3ZlciB0aGUga2V5cyBvZiB0aGUgY29udGFpbmVyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJdGVyYXRvciBvYmplY3RzIGFsc28gbmVlZCB0byBpbXBsZW1lbnQgdGhpcyBtZXRob2Q7IHRoZXkgJworICAgICAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICByZXF1aXJlZCB0byByZXR1cm4gdGhlbXNlbHZlcy4gIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgICAgICcgICBvYmplY3RzLCBzZWUgSXRlcmF0b3IgVHlwZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JldmVyc2VkX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIChpZiBwcmVzZW50KSBieSB0aGUgInJldmVyc2VkKCkiIGJ1aWx0LWluIHRvICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudFxuJworICAgICAgICAgICAgICAgICAnICAgcmV2ZXJzZSBpdGVyYXRpb24uICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IGl0ZXJhdG9yICcKKyAgICAgICAgICAgICAgICAgJ29iamVjdCB0aGF0XG4nCisgICAgICAgICAgICAgICAgICcgICBpdGVyYXRlcyBvdmVyIGFsbCB0aGUgb2JqZWN0cyBpbiB0aGUgY29udGFpbmVyIGluIHJldmVyc2UgJworICAgICAgICAgICAgICAgICAnb3JkZXIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIElmIHRoZSAiX19yZXZlcnNlZF9fKCkiIG1ldGhvZCBpcyBub3QgcHJvdmlkZWQsIHRoZSAnCisgICAgICAgICAgICAgICAgICcicmV2ZXJzZWQoKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJ1aWx0LWluIHdpbGwgZmFsbCBiYWNrIHRvIHVzaW5nIHRoZSBzZXF1ZW5jZSBwcm90b2NvbCAnCisgICAgICAgICAgICAgICAgICcoIl9fbGVuX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuZCAiX19nZXRpdGVtX18oKSIpLiAgT2JqZWN0cyB0aGF0IHN1cHBvcnQgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgJ3Byb3RvY29sXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgb25seSBwcm92aWRlICJfX3JldmVyc2VkX18oKSIgaWYgdGhleSBjYW4gcHJvdmlkZSAnCisgICAgICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICAgICAnICAgaW1wbGVtZW50YXRpb24gdGhhdCBpcyBtb3JlIGVmZmljaWVudCB0aGFuIHRoZSBvbmUgJworICAgICAgICAgICAgICAgICAncHJvdmlkZWQgYnlcbicKKyAgICAgICAgICAgICAgICAgJyAgICJyZXZlcnNlZCgpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG1lbWJlcnNoaXAgdGVzdCBvcGVyYXRvcnMgKCJpbiIgYW5kICJub3QgaW4iKSBhcmUgJworICAgICAgICAgICAgICAgICAnbm9ybWFsbHlcbicKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGFzIGFuIGl0ZXJhdGlvbiB0aHJvdWdoIGEgc2VxdWVuY2UuICBIb3dldmVyLCAnCisgICAgICAgICAgICAgICAgICdjb250YWluZXJcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdHMgY2FuIHN1cHBseSB0aGUgZm9sbG93aW5nIHNwZWNpYWwgbWV0aG9kIHdpdGggYSBtb3JlICcKKyAgICAgICAgICAgICAgICAgJ2VmZmljaWVudFxuJworICAgICAgICAgICAgICAgICAnaW1wbGVtZW50YXRpb24sIHdoaWNoIGFsc28gZG9lcyBub3QgcmVxdWlyZSB0aGUgb2JqZWN0IGJlIGEgJworICAgICAgICAgICAgICAgICAnc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2NvbnRhaW5zX18oc2VsZiwgaXRlbSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCBtZW1iZXJzaGlwIHRlc3Qgb3BlcmF0b3JzLiAgU2hvdWxkICcKKyAgICAgICAgICAgICAgICAgJ3JldHVybiB0cnVlXG4nCisgICAgICAgICAgICAgICAgICcgICBpZiAqaXRlbSogaXMgaW4gKnNlbGYqLCBmYWxzZSBvdGhlcndpc2UuICBGb3IgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLCB0aGlzXG4nCisgICAgICAgICAgICAgICAgICcgICBzaG91bGQgY29uc2lkZXIgdGhlIGtleXMgb2YgdGhlIG1hcHBpbmcgcmF0aGVyIHRoYW4gdGhlICcKKyAgICAgICAgICAgICAgICAgJ3ZhbHVlcyBvclxuJworICAgICAgICAgICAgICAgICAnICAgdGhlIGtleS1pdGVtIHBhaXJzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBGb3Igb2JqZWN0cyB0aGF0IGRvblwndCBkZWZpbmUgIl9fY29udGFpbnNfXygpIiwgdGhlICcKKyAgICAgICAgICAgICAgICAgJ21lbWJlcnNoaXAgdGVzdFxuJworICAgICAgICAgICAgICAgICAnICAgZmlyc3QgdHJpZXMgaXRlcmF0aW9uIHZpYSAiX19pdGVyX18oKSIsIHRoZW4gdGhlIG9sZCAnCisgICAgICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgaXRlcmF0aW9uIHByb3RvY29sIHZpYSAiX19nZXRpdGVtX18oKSIsIHNlZSB0aGlzIHNlY3Rpb24gJworICAgICAgICAgICAgICAgICAnaW4gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBsYW5ndWFnZSByZWZlcmVuY2UuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRW11bGF0aW5nIG51bWVyaWMgdHlwZXNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBmb2xsb3dpbmcgbWV0aG9kcyBjYW4gYmUgZGVmaW5lZCB0byBlbXVsYXRlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAnb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgY29ycmVzcG9uZGluZyB0byBvcGVyYXRpb25zIHRoYXQgYXJlIG5vdCBzdXBwb3J0ZWQgJworICAgICAgICAgICAgICAgICAnYnkgdGhlXG4nCisgICAgICAgICAgICAgICAgICdwYXJ0aWN1bGFyIGtpbmQgb2YgbnVtYmVyIGltcGxlbWVudGVkIChlLmcuLCBiaXR3aXNlICcKKyAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbnMgZm9yXG4nCisgICAgICAgICAgICAgICAgICdub24taW50ZWdyYWwgbnVtYmVycykgc2hvdWxkIGJlIGxlZnQgdW5kZWZpbmVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19hZGRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3N1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbXVsX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tYXRtdWxfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3RydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Zsb29yZGl2X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19tb2RfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2Rpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcG93X18oc2VsZiwgb3RoZXJbLCBtb2R1bG9dKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fbHNoaWZ0X18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2FuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9feG9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19vcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBiaW5hcnkgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoIisiLCAiLSIsICIqIiwgIkAiLCAiLyIsICIvLyIsICIlIiwgJworICAgICAgICAgICAgICAgICAnImRpdm1vZCgpIixcbicKKyAgICAgICAgICAgICAgICAgJyAgICJwb3coKSIsICIqKiIsICI8PCIsICI+PiIsICImIiwgIl4iLCAifCIpLiAgRm9yIGluc3RhbmNlLCAnCisgICAgICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICAgICAnICAgZXZhbHVhdGUgdGhlIGV4cHJlc3Npb24gInggKyB5Iiwgd2hlcmUgKngqIGlzIGFuIGluc3RhbmNlICcKKyAgICAgICAgICAgICAgICAgJ29mIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsYXNzIHRoYXQgaGFzIGFuICJfX2FkZF9fKCkiIG1ldGhvZCwgInguX19hZGRfXyh5KSIgaXMgJworICAgICAgICAgICAgICAgICAnY2FsbGVkLlxuJworICAgICAgICAgICAgICAgICAnICAgVGhlICJfX2Rpdm1vZF9fKCkiIG1ldGhvZCBzaG91bGQgYmUgdGhlIGVxdWl2YWxlbnQgdG8gJworICAgICAgICAgICAgICAgICAndXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX2Zsb29yZGl2X18oKSIgYW5kICJfX21vZF9fKCkiOyBpdCBzaG91bGQgbm90IGJlICcKKyAgICAgICAgICAgICAgICAgJ3JlbGF0ZWQgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgICJfX3RydWVkaXZfXygpIi4gIE5vdGUgdGhhdCAiX19wb3dfXygpIiBzaG91bGQgYmUgZGVmaW5lZCAnCisgICAgICAgICAgICAgICAgICd0byBhY2NlcHRcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFuIG9wdGlvbmFsIHRoaXJkIGFyZ3VtZW50IGlmIHRoZSB0ZXJuYXJ5IHZlcnNpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgICAgICAgICcgICAicG93KCkiIGZ1bmN0aW9uIGlzIHRvIGJlIHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgb25lIG9mIHRob3NlIG1ldGhvZHMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAgICAgICAgJ3dpdGggdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBzdXBwbGllZCBhcmd1bWVudHMsIGl0IHNob3VsZCByZXR1cm4gIk5vdEltcGxlbWVudGVkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX3JmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmRpdm1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnBvd19fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmxzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnJzaGlmdF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcmFuZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcnhvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fcm9yX18oc2VsZiwgb3RoZXIpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIG1ldGhvZHMgYXJlIGNhbGxlZCB0byBpbXBsZW1lbnQgdGhlIGJpbmFyeSAnCisgICAgICAgICAgICAgICAgICdhcml0aG1ldGljXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zICgiKyIsICItIiwgIioiLCAiQCIsICIvIiwgIi8vIiwgIiUiLCAnCisgICAgICAgICAgICAgICAgICciZGl2bW9kKCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgInBvdygpIiwgIioqIiwgIjw8IiwgIj4+IiwgIiYiLCAiXiIsICJ8Iikgd2l0aCByZWZsZWN0ZWQgJworICAgICAgICAgICAgICAgICAnKHN3YXBwZWQpXG4nCisgICAgICAgICAgICAgICAgICcgICBvcGVyYW5kcy4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgb25seSBjYWxsZWQgaWYgdGhlIGxlZnQgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZCBkb2VzXG4nCisgICAgICAgICAgICAgICAgICcgICBub3Qgc3VwcG9ydCB0aGUgY29ycmVzcG9uZGluZyBvcGVyYXRpb24gWzNdIGFuZCB0aGUgJworICAgICAgICAgICAgICAgICAnb3BlcmFuZHMgYXJlIG9mXG4nCisgICAgICAgICAgICAgICAgICcgICBkaWZmZXJlbnQgdHlwZXMuIFs0XSBGb3IgaW5zdGFuY2UsIHRvIGV2YWx1YXRlIHRoZSAnCisgICAgICAgICAgICAgICAgICdleHByZXNzaW9uICJ4IC1cbicKKyAgICAgICAgICAgICAgICAgJyAgIHkiLCB3aGVyZSAqeSogaXMgYW4gaW5zdGFuY2Ugb2YgYSBjbGFzcyB0aGF0IGhhcyBhbiAnCisgICAgICAgICAgICAgICAgICciX19yc3ViX18oKSJcbicKKyAgICAgICAgICAgICAgICAgJyAgIG1ldGhvZCwgInkuX19yc3ViX18oeCkiIGlzIGNhbGxlZCBpZiAieC5fX3N1Yl9fKHkpIiAnCisgICAgICAgICAgICAgICAgICdyZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAqTm90SW1wbGVtZW50ZWQqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgdGVybmFyeSAicG93KCkiIHdpbGwgbm90IHRyeSBjYWxsaW5nICcKKyAgICAgICAgICAgICAgICAgJyJfX3Jwb3dfXygpIiAodGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb2VyY2lvbiBydWxlcyB3b3VsZCBiZWNvbWUgdG9vIGNvbXBsaWNhdGVkKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgTm90ZTogSWYgdGhlIHJpZ2h0IG9wZXJhbmQncyB0eXBlIGlzIGEgc3ViY2xhc3Mgb2YgdGhlICIKKyAgICAgICAgICAgICAgICAgJ2xlZnRcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgb3BlcmFuZCdzIHR5cGUgYW5kIHRoYXQgc3ViY2xhc3MgcHJvdmlkZXMgdGhlIHJlZmxlY3RlZCAiCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgZm9yIHRoZSBvcGVyYXRpb24sIHRoaXMgbWV0aG9kIHdpbGwgYmUgY2FsbGVkIGJlZm9yZSAnCisgICAgICAgICAgICAgICAgICd0aGUgbGVmdFxuJworICAgICAgICAgICAgICAgICAiICAgICBvcGVyYW5kJ3Mgbm9uLXJlZmxlY3RlZCBtZXRob2QuICBUaGlzIGJlaGF2aW9yIGFsbG93cyAiCisgICAgICAgICAgICAgICAgICdzdWJjbGFzc2VzXG4nCisgICAgICAgICAgICAgICAgICIgICAgIHRvIG92ZXJyaWRlIHRoZWlyIGFuY2VzdG9ycycgb3BlcmF0aW9ucy5cbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faWFkZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXN1Yl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1hdG11bF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXRydWVkaXZfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lmbG9vcmRpdl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faW1vZF9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9faXBvd19fKHNlbGYsIG90aGVyWywgbW9kdWxvXSlcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lsc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lyc2hpZnRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lhbmRfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2l4b3JfXyhzZWxmLCBvdGhlcilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2lvcl9fKHNlbGYsIG90aGVyKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBUaGVzZSBtZXRob2RzIGFyZSBjYWxsZWQgdG8gaW1wbGVtZW50IHRoZSBhdWdtZW50ZWQgJworICAgICAgICAgICAgICAgICAnYXJpdGhtZXRpY1xuJworICAgICAgICAgICAgICAgICAnICAgYXNzaWdubWVudHMgKCIrPSIsICItPSIsICIqPSIsICJAPSIsICIvPSIsICIvLz0iLCAiJT0iLCAnCisgICAgICAgICAgICAgICAgICciKio9IixcbicKKyAgICAgICAgICAgICAgICAgJyAgICI8PD0iLCAiPj49IiwgIiY9IiwgIl49IiwgInw9IikuICBUaGVzZSBtZXRob2RzIHNob3VsZCAnCisgICAgICAgICAgICAgICAgICdhdHRlbXB0IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICBkbyB0aGUgb3BlcmF0aW9uIGluLXBsYWNlIChtb2RpZnlpbmcgKnNlbGYqKSBhbmQgcmV0dXJuICcKKyAgICAgICAgICAgICAgICAgJ3RoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgJyAgICh3aGljaCBjb3VsZCBiZSwgYnV0IGRvZXMgbm90IGhhdmUgdG8gYmUsICpzZWxmKikuICBJZiBhICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpZmljXG4nCisgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgbm90IGRlZmluZWQsIHRoZSBhdWdtZW50ZWQgYXNzaWdubWVudCBmYWxscyAnCisgICAgICAgICAgICAgICAgICdiYWNrIHRvIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgbm9ybWFsIG1ldGhvZHMuICBGb3IgaW5zdGFuY2UsIGlmICp4KiBpcyBhbiBpbnN0YW5jZSBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzXG4nCisgICAgICAgICAgICAgICAgICcgICB3aXRoIGFuICJfX2lhZGRfXygpIiBtZXRob2QsICJ4ICs9IHkiIGlzIGVxdWl2YWxlbnQgdG8gInggJworICAgICAgICAgICAgICAgICAnPVxuJworICAgICAgICAgICAgICAgICAnICAgeC5fX2lhZGRfXyh5KSIgLiBPdGhlcndpc2UsICJ4Ll9fYWRkX18oeSkiIGFuZCAnCisgICAgICAgICAgICAgICAgICcieS5fX3JhZGRfXyh4KSIgYXJlXG4nCisgICAgICAgICAgICAgICAgICcgICBjb25zaWRlcmVkLCBhcyB3aXRoIHRoZSBldmFsdWF0aW9uIG9mICJ4ICsgeSIuIEluICcKKyAgICAgICAgICAgICAgICAgJ2NlcnRhaW5cbicKKyAgICAgICAgICAgICAgICAgJyAgIHNpdHVhdGlvbnMsIGF1Z21lbnRlZCBhc3NpZ25tZW50IGNhbiByZXN1bHQgaW4gdW5leHBlY3RlZCAnCisgICAgICAgICAgICAgICAgICdlcnJvcnNcbicKKyAgICAgICAgICAgICAgICAgIiAgIChzZWUgV2h5IGRvZXMgYV90dXBsZVtpXSArPSBbJ2l0ZW0nXSByYWlzZSBhbiBleGNlcHRpb24gIgorICAgICAgICAgICAgICAgICAnd2hlbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgJyAgIGFkZGl0aW9uIHdvcmtzPyksIGJ1dCB0aGlzIGJlaGF2aW9yIGlzIGluIGZhY3QgcGFydCBvZiAnCisgICAgICAgICAgICAgICAgICd0aGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAnICAgbW9kZWwuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX25lZ19fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19wb3NfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fYWJzX18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludmVydF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgdGhlIHVuYXJ5IGFyaXRobWV0aWMgb3BlcmF0aW9ucyAoIi0iLCAnCisgICAgICAgICAgICAgICAgICciKyIsXG4nCisgICAgICAgICAgICAgICAgICcgICAiYWJzKCkiIGFuZCAifiIpLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19jb21wbGV4X18oc2VsZilcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2ludF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19mbG9hdF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19yb3VuZF9fKHNlbGZbLCBuXSlcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgQ2FsbGVkIHRvIGltcGxlbWVudCB0aGUgYnVpbHQtaW4gZnVuY3Rpb25zICJjb21wbGV4KCkiLCAnCisgICAgICAgICAgICAgICAgICciaW50KCkiLFxuJworICAgICAgICAgICAgICAgICAnICAgImZsb2F0KCkiIGFuZCAicm91bmQoKSIuICBTaG91bGQgcmV0dXJuIGEgdmFsdWUgb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2FwcHJvcHJpYXRlXG4nCisgICAgICAgICAgICAgICAgICcgICB0eXBlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdvYmplY3QuX19pbmRleF9fKHNlbGYpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIENhbGxlZCB0byBpbXBsZW1lbnQgIm9wZXJhdG9yLmluZGV4KCkiLCBhbmQgd2hlbmV2ZXIgJworICAgICAgICAgICAgICAgICAnUHl0aG9uIG5lZWRzXG4nCisgICAgICAgICAgICAgICAgICcgICB0byBsb3NzbGVzc2x5IGNvbnZlcnQgdGhlIG51bWVyaWMgb2JqZWN0IHRvIGFuIGludGVnZXIgJworICAgICAgICAgICAgICAgICAnb2JqZWN0IChzdWNoXG4nCisgICAgICAgICAgICAgICAgICcgICBhcyBpbiBzbGljaW5nLCBvciBpbiB0aGUgYnVpbHQtaW4gImJpbigpIiwgImhleCgpIiBhbmQgJworICAgICAgICAgICAgICAgICAnIm9jdCgpIlxuJworICAgICAgICAgICAgICAgICAnICAgZnVuY3Rpb25zKS4gUHJlc2VuY2Ugb2YgdGhpcyBtZXRob2QgaW5kaWNhdGVzIHRoYXQgdGhlICcKKyAgICAgICAgICAgICAgICAgJ251bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdCBpcyBhbiBpbnRlZ2VyIHR5cGUuICBNdXN0IHJldHVybiBhbiBpbnRlZ2VyLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlOiBJbiBvcmRlciB0byBoYXZlIGEgY29oZXJlbnQgaW50ZWdlciB0eXBlIGNsYXNzLCAnCisgICAgICAgICAgICAgICAgICd3aGVuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICJfX2luZGV4X18oKSIgaXMgZGVmaW5lZCAiX19pbnRfXygpIiBzaG91bGQgYWxzbyBiZSAnCisgICAgICAgICAgICAgICAgICdkZWZpbmVkLCBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgYm90aCBzaG91bGQgcmV0dXJuIHRoZSBzYW1lIHZhbHVlLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1dpdGggU3RhdGVtZW50IENvbnRleHQgTWFuYWdlcnNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQSAqY29udGV4dCBtYW5hZ2VyKiBpcyBhbiBvYmplY3QgdGhhdCBkZWZpbmVzIHRoZSBydW50aW1lICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2JlIGVzdGFibGlzaGVkIHdoZW4gZXhlY3V0aW5nIGEgIndpdGgiIHN0YXRlbWVudC4gVGhlICcKKyAgICAgICAgICAgICAgICAgJ2NvbnRleHQgbWFuYWdlclxuJworICAgICAgICAgICAgICAgICAnaGFuZGxlcyB0aGUgZW50cnkgaW50bywgYW5kIHRoZSBleGl0IGZyb20sIHRoZSBkZXNpcmVkICcKKyAgICAgICAgICAgICAgICAgJ3J1bnRpbWUgY29udGV4dFxuJworICAgICAgICAgICAgICAgICAnZm9yIHRoZSBleGVjdXRpb24gb2YgdGhlIGJsb2NrIG9mIGNvZGUuICBDb250ZXh0IG1hbmFnZXJzICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBub3JtYWxseVxuJworICAgICAgICAgICAgICAgICAnaW52b2tlZCB1c2luZyB0aGUgIndpdGgiIHN0YXRlbWVudCAoZGVzY3JpYmVkIGluIHNlY3Rpb24gVGhlICcKKyAgICAgICAgICAgICAgICAgJ3dpdGhcbicKKyAgICAgICAgICAgICAgICAgJ3N0YXRlbWVudCksIGJ1dCBjYW4gYWxzbyBiZSB1c2VkIGJ5IGRpcmVjdGx5IGludm9raW5nIHRoZWlyICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1R5cGljYWwgdXNlcyBvZiBjb250ZXh0IG1hbmFnZXJzIGluY2x1ZGUgc2F2aW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICdyZXN0b3JpbmcgdmFyaW91c1xuJworICAgICAgICAgICAgICAgICAna2luZHMgb2YgZ2xvYmFsIHN0YXRlLCBsb2NraW5nIGFuZCB1bmxvY2tpbmcgcmVzb3VyY2VzLCAnCisgICAgICAgICAgICAgICAgICdjbG9zaW5nIG9wZW5lZFxuJworICAgICAgICAgICAgICAgICAnZmlsZXMsIGV0Yy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gY29udGV4dCBtYW5hZ2Vycywgc2VlIENvbnRleHQgJworICAgICAgICAgICAgICAgICAnTWFuYWdlciBUeXBlcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnb2JqZWN0Ll9fZW50ZXJfXyhzZWxmKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBFbnRlciB0aGUgcnVudGltZSBjb250ZXh0IHJlbGF0ZWQgdG8gdGhpcyBvYmplY3QuIFRoZSAnCisgICAgICAgICAgICAgICAgICcid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgIiAgIHN0YXRlbWVudCB3aWxsIGJpbmQgdGhpcyBtZXRob2QncyByZXR1cm4gdmFsdWUgdG8gdGhlICIKKyAgICAgICAgICAgICAgICAgJ3RhcmdldChzKVxuJworICAgICAgICAgICAgICAgICAnICAgc3BlY2lmaWVkIGluIHRoZSAiYXMiIGNsYXVzZSBvZiB0aGUgc3RhdGVtZW50LCBpZiBhbnkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ29iamVjdC5fX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIEV4aXQgdGhlIHJ1bnRpbWUgY29udGV4dCByZWxhdGVkIHRvIHRoaXMgb2JqZWN0LiBUaGUgJworICAgICAgICAgICAgICAgICAncGFyYW1ldGVyc1xuJworICAgICAgICAgICAgICAgICAnICAgZGVzY3JpYmUgdGhlIGV4Y2VwdGlvbiB0aGF0IGNhdXNlZCB0aGUgY29udGV4dCB0byBiZSAnCisgICAgICAgICAgICAgICAgICdleGl0ZWQuIElmIHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgY29udGV4dCB3YXMgZXhpdGVkIHdpdGhvdXQgYW4gZXhjZXB0aW9uLCBhbGwgdGhyZWUgJworICAgICAgICAgICAgICAgICAnYXJndW1lbnRzIHdpbGxcbicKKyAgICAgICAgICAgICAgICAgJyAgIGJlICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYgYW4gZXhjZXB0aW9uIGlzIHN1cHBsaWVkLCBhbmQgdGhlIG1ldGhvZCB3aXNoZXMgdG8gJworICAgICAgICAgICAgICAgICAnc3VwcHJlc3MgdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICBleGNlcHRpb24gKGkuZS4sIHByZXZlbnQgaXQgZnJvbSBiZWluZyBwcm9wYWdhdGVkKSwgaXQgJworICAgICAgICAgICAgICAgICAnc2hvdWxkXG4nCisgICAgICAgICAgICAgICAgICcgICByZXR1cm4gYSB0cnVlIHZhbHVlLiBPdGhlcndpc2UsIHRoZSBleGNlcHRpb24gd2lsbCBiZSAnCisgICAgICAgICAgICAgICAgICdwcm9jZXNzZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIG5vcm1hbGx5IHVwb24gZXhpdCBmcm9tIHRoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgIl9fZXhpdF9fKCkiIG1ldGhvZHMgc2hvdWxkIG5vdCByZXJhaXNlIHRoZSAnCisgICAgICAgICAgICAgICAgICdwYXNzZWQtaW5cbicKKyAgICAgICAgICAgICAgICAgIiAgIGV4Y2VwdGlvbjsgdGhpcyBpcyB0aGUgY2FsbGVyJ3MgcmVzcG9uc2liaWxpdHkuXG4iCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICoqUEVQIDM0MyoqIC0gVGhlICJ3aXRoIiBzdGF0ZW1lbnRcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ1B5dGhvbiAid2l0aCJcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgc3RhdGVtZW50LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NwZWNpYWwgbWV0aG9kIGxvb2t1cFxuJworICAgICAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0ZvciBjdXN0b20gY2xhc3NlcywgaW1wbGljaXQgaW52b2NhdGlvbnMgb2Ygc3BlY2lhbCBtZXRob2RzICcKKyAgICAgICAgICAgICAgICAgJ2FyZSBvbmx5XG4nCisgICAgICAgICAgICAgICAgICJndWFyYW50ZWVkIHRvIHdvcmsgY29ycmVjdGx5IGlmIGRlZmluZWQgb24gYW4gb2JqZWN0J3MgdHlwZSwgIgorICAgICAgICAgICAgICAgICAnbm90IGluXG4nCisgICAgICAgICAgICAgICAgICJ0aGUgb2JqZWN0J3MgaW5zdGFuY2UgZGljdGlvbmFyeS4gIFRoYXQgYmVoYXZpb3VyIGlzIHRoZSAiCisgICAgICAgICAgICAgICAgICdyZWFzb24gd2h5XG4nCisgICAgICAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIGNvZGUgcmFpc2VzIGFuIGV4Y2VwdGlvbjpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIHBhc3NcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGMgPSBDKClcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLl9fbGVuX18gPSBsYW1iZGE6IDVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsZW4oYylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogb2JqZWN0IG9mIHR5cGUgJ0MnIGhhcyBubyBsZW4oKVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdUaGUgcmF0aW9uYWxlIGJlaGluZCB0aGlzIGJlaGF2aW91ciBsaWVzIHdpdGggYSBudW1iZXIgb2YgJworICAgICAgICAgICAgICAgICAnc3BlY2lhbFxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBzdWNoIGFzICJfX2hhc2hfXygpIiBhbmQgIl9fcmVwcl9fKCkiIHRoYXQgYXJlICcKKyAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGVkIGJ5XG4nCisgICAgICAgICAgICAgICAgICdhbGwgb2JqZWN0cywgaW5jbHVkaW5nIHR5cGUgb2JqZWN0cy4gSWYgdGhlIGltcGxpY2l0IGxvb2t1cCAnCisgICAgICAgICAgICAgICAgICdvZiB0aGVzZVxuJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyB1c2VkIHRoZSBjb252ZW50aW9uYWwgbG9va3VwIHByb2Nlc3MsIHRoZXkgd291bGQgJworICAgICAgICAgICAgICAgICAnZmFpbCB3aGVuXG4nCisgICAgICAgICAgICAgICAgICdpbnZva2VkIG9uIHRoZSB0eXBlIG9iamVjdCBpdHNlbGY6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAxIC5fX2hhc2hfXygpID09IGhhc2goMSlcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRydWVcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBpbnQuX19oYXNoX18oKSA9PSBoYXNoKGludClcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIFR5cGVFcnJvcjogZGVzY3JpcHRvciAnX19oYXNoX18nIG9mICdpbnQnIG9iamVjdCBuZWVkcyBhbiAiCisgICAgICAgICAgICAgICAgICdhcmd1bWVudFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJbmNvcnJlY3RseSBhdHRlbXB0aW5nIHRvIGludm9rZSBhbiB1bmJvdW5kIG1ldGhvZCBvZiBhICcKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGluIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgIndheSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgJ21ldGFjbGFzcyBjb25mdXNpb24nLCBhbmQgIgorICAgICAgICAgICAgICAgICAnaXMgYXZvaWRlZFxuJworICAgICAgICAgICAgICAgICAnYnkgYnlwYXNzaW5nIHRoZSBpbnN0YW5jZSB3aGVuIGxvb2tpbmcgdXAgc3BlY2lhbCBtZXRob2RzOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZSgxKS5fX2hhc2hfXygxKSA9PSBoYXNoKDEpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShpbnQpLl9faGFzaF9fKGludCkgPT0gaGFzaChpbnQpXG4nCisgICAgICAgICAgICAgICAgICcgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0luIGFkZGl0aW9uIHRvIGJ5cGFzc2luZyBhbnkgaW5zdGFuY2UgYXR0cmlidXRlcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJlc3Qgb2ZcbicKKyAgICAgICAgICAgICAgICAgJ2NvcnJlY3RuZXNzLCBpbXBsaWNpdCBzcGVjaWFsIG1ldGhvZCBsb29rdXAgZ2VuZXJhbGx5IGFsc28gJworICAgICAgICAgICAgICAgICAnYnlwYXNzZXNcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSAiX19nZXRhdHRyaWJ1dGVfXygpIiBtZXRob2QgZXZlbiBvZiB0aGUgb2JqZWN0XCdzICcKKyAgICAgICAgICAgICAgICAgJ21ldGFjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIE1ldGEodHlwZSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWQiKVxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIHR5cGUuX19nZXRhdHRyaWJ1dGVfXygqYXJncylcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IGNsYXNzIEMob2JqZWN0LCBtZXRhY2xhc3M9TWV0YSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2xlbl9fKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX2dldGF0dHJpYnV0ZV9fKCphcmdzKTpcbicKKyAgICAgICAgICAgICAgICAgJyAgIC4uLiAgICAgICAgIHByaW50KCJDbGFzcyBnZXRhdHRyaWJ1dGUgaW52b2tlZCIpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4gb2JqZWN0Ll9fZ2V0YXR0cmlidXRlX18oKmFyZ3MpXG4nCisgICAgICAgICAgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjID0gQygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYy5fX2xlbl9fKCkgICAgICAgICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICdpbnN0YW5jZVxuJworICAgICAgICAgICAgICAgICAnICAgQ2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdHlwZShjKS5fX2xlbl9fKGMpICAgICAgICAgICMgRXhwbGljaXQgbG9va3VwIHZpYSAnCisgICAgICAgICAgICAgICAgICd0eXBlXG4nCisgICAgICAgICAgICAgICAgICcgICBNZXRhY2xhc3MgZ2V0YXR0cmlidXRlIGludm9rZWRcbicKKyAgICAgICAgICAgICAgICAgJyAgIDEwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gbGVuKGMpICAgICAgICAgICAgICAgICAgICAgICMgSW1wbGljaXQgbG9va3VwXG4nCisgICAgICAgICAgICAgICAgICcgICAxMFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdCeXBhc3NpbmcgdGhlICJfX2dldGF0dHJpYnV0ZV9fKCkiIG1hY2hpbmVyeSBpbiB0aGlzIGZhc2hpb24gJworICAgICAgICAgICAgICAgICAncHJvdmlkZXNcbicKKyAgICAgICAgICAgICAgICAgJ3NpZ25pZmljYW50IHNjb3BlIGZvciBzcGVlZCBvcHRpbWlzYXRpb25zIHdpdGhpbiB0aGUgJworICAgICAgICAgICAgICAgICAnaW50ZXJwcmV0ZXIsIGF0XG4nCisgICAgICAgICAgICAgICAgICd0aGUgY29zdCBvZiBzb21lIGZsZXhpYmlsaXR5IGluIHRoZSBoYW5kbGluZyBvZiBzcGVjaWFsICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZHMgKHRoZVxuJworICAgICAgICAgICAgICAgICAnc3BlY2lhbCBtZXRob2QgKm11c3QqIGJlIHNldCBvbiB0aGUgY2xhc3Mgb2JqZWN0IGl0c2VsZiBpbiAnCisgICAgICAgICAgICAgICAgICdvcmRlciB0byBiZVxuJworICAgICAgICAgICAgICAgICAnY29uc2lzdGVudGx5IGludm9rZWQgYnkgdGhlIGludGVycHJldGVyKS5cbicsCisgJ3N0cmluZy1tZXRob2RzJzogJ1xuJworICAgICAgICAgICAgICAgICAgICdTdHJpbmcgTWV0aG9kc1xuJworICAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gc2VxdWVuY2Ugb3BlcmF0aW9ucywgJworICAgICAgICAgICAgICAgICAgICdhbG9uZyB3aXRoXG4nCisgICAgICAgICAgICAgICAgICAgJ3RoZSBhZGRpdGlvbmFsIG1ldGhvZHMgZGVzY3JpYmVkIGJlbG93LlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnU3RyaW5ncyBhbHNvIHN1cHBvcnQgdHdvIHN0eWxlcyBvZiBzdHJpbmcgZm9ybWF0dGluZywgb25lICcKKyAgICAgICAgICAgICAgICAgICAncHJvdmlkaW5nIGFcbicKKyAgICAgICAgICAgICAgICAgICAnbGFyZ2UgZGVncmVlIG9mIGZsZXhpYmlsaXR5IGFuZCBjdXN0b21pemF0aW9uIChzZWUgJworICAgICAgICAgICAgICAgICAgICcic3RyLmZvcm1hdCgpIixcbicKKyAgICAgICAgICAgICAgICAgICAnRm9ybWF0IFN0cmluZyBTeW50YXggYW5kIEN1c3RvbSBTdHJpbmcgRm9ybWF0dGluZykgYW5kIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyIGJhc2VkXG4nCisgICAgICAgICAgICAgICAgICAgJ29uIEMgInByaW50ZiIgc3R5bGUgZm9ybWF0dGluZyB0aGF0IGhhbmRsZXMgYSBuYXJyb3dlciAnCisgICAgICAgICAgICAgICAgICAgJ3JhbmdlIG9mIHR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgJ2FuZCBpcyBzbGlnaHRseSBoYXJkZXIgdG8gdXNlIGNvcnJlY3RseSwgYnV0IGlzIG9mdGVuICcKKyAgICAgICAgICAgICAgICAgICAnZmFzdGVyIGZvciB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnY2FzZXMgaXQgY2FuIGhhbmRsZSAocHJpbnRmLXN0eWxlIFN0cmluZyBGb3JtYXR0aW5nKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1RoZSBUZXh0IFByb2Nlc3NpbmcgU2VydmljZXMgc2VjdGlvbiBvZiB0aGUgc3RhbmRhcmQgJworICAgICAgICAgICAgICAgICAgICdsaWJyYXJ5IGNvdmVycyBhXG4nCisgICAgICAgICAgICAgICAgICAgJ251bWJlciBvZiBvdGhlciBtb2R1bGVzIHRoYXQgcHJvdmlkZSB2YXJpb3VzIHRleHQgcmVsYXRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3V0aWxpdGllc1xuJworICAgICAgICAgICAgICAgICAgICcoaW5jbHVkaW5nIHJlZ3VsYXIgZXhwcmVzc2lvbiBzdXBwb3J0IGluIHRoZSAicmUiICcKKyAgICAgICAgICAgICAgICAgICAnbW9kdWxlKS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXBpdGFsaXplKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGl0cyBmaXJzdCBjaGFyYWN0ZXIgJworICAgICAgICAgICAgICAgICAgICdjYXBpdGFsaXplZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlIHJlc3QgbG93ZXJjYXNlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jYXNlZm9sZCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjYXNlZm9sZGVkIGNvcHkgb2YgdGhlIHN0cmluZy4gQ2FzZWZvbGRlZCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MgbWF5IGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzZWQgZm9yIGNhc2VsZXNzIG1hdGNoaW5nLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2FzZWZvbGRpbmcgaXMgc2ltaWxhciB0byBsb3dlcmNhc2luZyBidXQgbW9yZSAnCisgICAgICAgICAgICAgICAgICAgJ2FnZ3Jlc3NpdmUgYmVjYXVzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBpdCBpcyBpbnRlbmRlZCB0byByZW1vdmUgYWxsIGNhc2UgZGlzdGluY3Rpb25zIGluIGEgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmcuIEZvclxuJworICAgICAgICAgICAgICAgICAgICcgICBleGFtcGxlLCB0aGUgR2VybWFuIGxvd2VyY2FzZSBsZXR0ZXIgIlwnw59cJyIgaXMgJworICAgICAgICAgICAgICAgICAgICdlcXVpdmFsZW50IHRvICIic3MiIi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2luY2UgaXQgaXMgYWxyZWFkeSBsb3dlcmNhc2UsICJsb3dlcigpIiB3b3VsZCBkbyAnCisgICAgICAgICAgICAgICAgICAgJ25vdGhpbmcgdG8gIlwnw59cJyI7XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJjYXNlZm9sZCgpIiBjb252ZXJ0cyBpdCB0byAiInNzIiIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgY2FzZWZvbGRpbmcgYWxnb3JpdGhtIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uIDMuMTMgJworICAgICAgICAgICAgICAgICAgICdvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5ldyBpbiB2ZXJzaW9uIDMuMy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5jZW50ZXIod2lkdGhbLCBmaWxsY2hhcl0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gY2VudGVyZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICp3aWR0aCouIFBhZGRpbmcgJworICAgICAgICAgICAgICAgICAgICdpcyBkb25lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCBpcyBhbiBBU0NJSSAnCisgICAgICAgICAgICAgICAgICAgJ3NwYWNlKS4gVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzIGxlc3MgdGhhbiBvciAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWFsIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2YgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YipcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaW4gdGhlIHJhbmdlIFsqc3RhcnQqLCAqZW5kKl0uICBPcHRpb25hbCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICcqc3RhcnQqIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICAqZW5kKiBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZW5jb2RlKGVuY29kaW5nPSJ1dGYtOCIsIGVycm9ycz0ic3RyaWN0IilcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhbiBlbmNvZGVkIHZlcnNpb24gb2YgdGhlIHN0cmluZyBhcyBhIGJ5dGVzICcKKyAgICAgICAgICAgICAgICAgICAnb2JqZWN0LiBEZWZhdWx0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVuY29kaW5nIGlzICJcJ3V0Zi04XCciLiAqZXJyb3JzKiBtYXkgYmUgZ2l2ZW4gdG8gc2V0IGEgJworICAgICAgICAgICAgICAgICAgICdkaWZmZXJlbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZXJyb3IgaGFuZGxpbmcgc2NoZW1lLiBUaGUgZGVmYXVsdCBmb3IgKmVycm9ycyogaXMgJworICAgICAgICAgICAgICAgICAgICciXCdzdHJpY3RcJyIsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1lYW5pbmcgdGhhdCBlbmNvZGluZyBlcnJvcnMgcmFpc2UgYSAiVW5pY29kZUVycm9yIi4gJworICAgICAgICAgICAgICAgICAgICdPdGhlciBwb3NzaWJsZVxuJworICAgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYXJlICJcJ2lnbm9yZVwnIiwgIlwncmVwbGFjZVwnIiwgJworICAgICAgICAgICAgICAgICAgICciXCd4bWxjaGFycmVmcmVwbGFjZVwnIixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIlwnYmFja3NsYXNocmVwbGFjZVwnIiBhbmQgYW55IG90aGVyIG5hbWUgcmVnaXN0ZXJlZCAnCisgICAgICAgICAgICAgICAgICAgJ3ZpYVxuJworICAgICAgICAgICAgICAgICAgICcgICAiY29kZWNzLnJlZ2lzdGVyX2Vycm9yKCkiLCBzZWUgc2VjdGlvbiBFcnJvciBIYW5kbGVycy4gJworICAgICAgICAgICAgICAgICAgICdGb3IgYSBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9mIHBvc3NpYmxlIGVuY29kaW5ncywgc2VlIHNlY3Rpb24gU3RhbmRhcmQgRW5jb2RpbmdzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhbmdlZCBpbiB2ZXJzaW9uIDMuMTogU3VwcG9ydCBmb3Iga2V5d29yZCBhcmd1bWVudHMgJworICAgICAgICAgICAgICAgICAgICdhZGRlZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkICcKKyAgICAgICAgICAgICAgICAgICAnKnN1ZmZpeCosXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG90aGVyd2lzZSByZXR1cm4gIkZhbHNlIi4gICpzdWZmaXgqIGNhbiBhbHNvIGJlIGEgdHVwbGUgJworICAgICAgICAgICAgICAgICAgICdvZiBzdWZmaXhlc1xuJworICAgICAgICAgICAgICAgICAgICcgICB0byBsb29rIGZvci4gIFdpdGggb3B0aW9uYWwgKnN0YXJ0KiwgdGVzdCBiZWdpbm5pbmcgYXQgJworICAgICAgICAgICAgICAgICAgICd0aGF0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc2l0aW9uLiAgV2l0aCBvcHRpb25hbCAqZW5kKiwgc3RvcCBjb21wYXJpbmcgYXQgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmV4cGFuZHRhYnModGFic2l6ZT04KVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlIGFsbCB0YWIgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZXBsYWNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBieSBvbmUgb3IgbW9yZSBzcGFjZXMsIGRlcGVuZGluZyBvbiB0aGUgY3VycmVudCBjb2x1bW4gJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGdpdmVuIHRhYiBzaXplLiAgVGFiIHBvc2l0aW9ucyBvY2N1ciBldmVyeSAqdGFic2l6ZSogJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIChkZWZhdWx0IGlzIDgsIGdpdmluZyB0YWIgcG9zaXRpb25zIGF0IGNvbHVtbnMgMCwgOCwgMTYgJworICAgICAgICAgICAgICAgICAgICdhbmQgc28gb24pLlxuJworICAgICAgICAgICAgICAgICAgICcgICBUbyBleHBhbmQgdGhlIHN0cmluZywgdGhlIGN1cnJlbnQgY29sdW1uIGlzIHNldCB0byB6ZXJvICcKKyAgICAgICAgICAgICAgICAgICAnYW5kIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzdHJpbmcgaXMgZXhhbWluZWQgY2hhcmFjdGVyIGJ5IGNoYXJhY3Rlci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlciBpcyBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiAoIlxcdCIpLCBvbmUgb3IgbW9yZSBzcGFjZSBjaGFyYWN0ZXJzIGFyZSBpbnNlcnRlZCAnCisgICAgICAgICAgICAgICAgICAgJ2luIHRoZSByZXN1bHRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdW50aWwgdGhlIGN1cnJlbnQgY29sdW1uIGlzIGVxdWFsIHRvIHRoZSBuZXh0IHRhYiAnCisgICAgICAgICAgICAgICAgICAgJ3Bvc2l0aW9uLiAoVGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRhYiBjaGFyYWN0ZXIgaXRzZWxmIGlzIG5vdCBjb3BpZWQuKSAgSWYgdGhlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGEgbmV3bGluZVxuJworICAgICAgICAgICAgICAgICAgICcgICAoIlxcbiIpIG9yIHJldHVybiAoIlxcciIpLCBpdCBpcyBjb3BpZWQgYW5kIHRoZSBjdXJyZW50ICcKKyAgICAgICAgICAgICAgICAgICAnY29sdW1uIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlc2V0IHRvIHplcm8uICBBbnkgb3RoZXIgY2hhcmFjdGVyIGlzIGNvcGllZCB1bmNoYW5nZWQgJworICAgICAgICAgICAgICAgICAgICdhbmQgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGN1cnJlbnQgY29sdW1uIGlzIGluY3JlbWVudGVkIGJ5IG9uZSByZWdhcmRsZXNzIG9mIGhvdyAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgaXMgcmVwcmVzZW50ZWQgd2hlbiBwcmludGVkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicygpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICcwMSAgICAgIDAxMiAgICAgMDEyMyAgICAwMTIzNCdcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgPj4+ICcwMVxcdDAxMlxcdDAxMjNcXHQwMTIzNCcuZXhwYW5kdGFicyg0KVxuIgorICAgICAgICAgICAgICAgICAgICIgICAnMDEgIDAxMiAwMTIzICAgIDAxMjM0J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgbG93ZXN0IGluZGV4IGluIHRoZSBzdHJpbmcgd2hlcmUgc3Vic3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQgd2l0aGluIHRoZSBzbGljZSAic1tzdGFydDplbmRdIi4gIE9wdGlvbmFsICcKKyAgICAgICAgICAgICAgICAgICAnYXJndW1lbnRzICpzdGFydCpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kICplbmQqIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi4gIFJldHVybiAnCisgICAgICAgICAgICAgICAgICAgJyItMSIgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKnN1YiogaXMgbm90IGZvdW5kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTm90ZTogVGhlICJmaW5kKCkiIG1ldGhvZCBzaG91bGQgYmUgdXNlZCBvbmx5IGlmIHlvdSAnCisgICAgICAgICAgICAgICAgICAgJ25lZWQgdG8ga25vd1xuJworICAgICAgICAgICAgICAgICAgICcgICAgIHRoZSBwb3NpdGlvbiBvZiAqc3ViKi4gIFRvIGNoZWNrIGlmICpzdWIqIGlzIGEgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgb3Igbm90LFxuJworICAgICAgICAgICAgICAgICAgICcgICAgIHVzZSB0aGUgImluIiBvcGVyYXRvcjpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICAgPj4+ICdQeScgaW4gJ1B5dGhvbidcbiIKKyAgICAgICAgICAgICAgICAgICAnICAgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZm9ybWF0KCphcmdzLCAqKmt3YXJncylcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBlcmZvcm0gYSBzdHJpbmcgZm9ybWF0dGluZyBvcGVyYXRpb24uICBUaGUgc3RyaW5nIG9uICcKKyAgICAgICAgICAgICAgICAgICAnd2hpY2ggdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBtZXRob2QgaXMgY2FsbGVkIGNhbiBjb250YWluIGxpdGVyYWwgdGV4dCBvciAnCisgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2VtZW50IGZpZWxkc1xuJworICAgICAgICAgICAgICAgICAgICcgICBkZWxpbWl0ZWQgYnkgYnJhY2VzICJ7fSIuICBFYWNoIHJlcGxhY2VtZW50IGZpZWxkICcKKyAgICAgICAgICAgICAgICAgICAnY29udGFpbnMgZWl0aGVyXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRoZSBudW1lcmljIGluZGV4IG9mIGEgcG9zaXRpb25hbCBhcmd1bWVudCwgb3IgdGhlIG5hbWUgJworICAgICAgICAgICAgICAgICAgICdvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGtleXdvcmQgYXJndW1lbnQuICBSZXR1cm5zIGEgY29weSBvZiB0aGUgc3RyaW5nIHdoZXJlICcKKyAgICAgICAgICAgICAgICAgICAnZWFjaFxuJworICAgICAgICAgICAgICAgICAgICcgICByZXBsYWNlbWVudCBmaWVsZCBpcyByZXBsYWNlZCB3aXRoIHRoZSBzdHJpbmcgdmFsdWUgb2YgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29ycmVzcG9uZGluZyBhcmd1bWVudC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgID4+PiAiVGhlIHN1bSBvZiAxICsgMiBpcyB7MH0iLmZvcm1hdCgxKzIpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICdUaGUgc3VtIG9mIDEgKyAyIGlzIDMnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBTZWUgRm9ybWF0IFN0cmluZyBTeW50YXggZm9yIGEgZGVzY3JpcHRpb24gb2YgdGhlICcKKyAgICAgICAgICAgICAgICAgICAndmFyaW91c1xuJworICAgICAgICAgICAgICAgICAgICcgICBmb3JtYXR0aW5nIG9wdGlvbnMgdGhhdCBjYW4gYmUgc3BlY2lmaWVkIGluIGZvcm1hdCAnCisgICAgICAgICAgICAgICAgICAgJ3N0cmluZ3MuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuZm9ybWF0X21hcChtYXBwaW5nKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2ltaWxhciB0byAic3RyLmZvcm1hdCgqKm1hcHBpbmcpIiwgZXhjZXB0IHRoYXQgJworICAgICAgICAgICAgICAgICAgICcibWFwcGluZyIgaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBkaXJlY3RseSBhbmQgbm90IGNvcGllZCB0byBhICJkaWN0Ii4gIFRoaXMgaXMgdXNlZnVsIGlmICcKKyAgICAgICAgICAgICAgICAgICAnZm9yIGV4YW1wbGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgIm1hcHBpbmciIGlzIGEgZGljdCBzdWJjbGFzczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBEZWZhdWx0KGRpY3QpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIGRlZiBfX21pc3NpbmdfXyhzZWxmLCBrZXkpOlxuJworICAgICAgICAgICAgICAgICAgICcgICAuLi4gICAgICAgICByZXR1cm4ga2V5XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICIgICA+Pj4gJ3tuYW1lfSB3YXMgYm9ybiBpbiAiCisgICAgICAgICAgICAgICAgICAgIntjb3VudHJ5fScuZm9ybWF0X21hcChEZWZhdWx0KG5hbWU9J0d1aWRvJykpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICdHdWlkbyB3YXMgYm9ybiBpbiBjb3VudHJ5J1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4yLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBMaWtlICJmaW5kKCkiLCBidXQgcmFpc2UgIlZhbHVlRXJyb3IiIHdoZW4gdGhlICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nIGlzIG5vdFxuJworICAgICAgICAgICAgICAgICAgICcgICBmb3VuZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FsbnVtKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFudW1lcmljIGFuZFxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBBICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyICJjIlxuJworICAgICAgICAgICAgICAgICAgICcgICBpcyBhbHBoYW51bWVyaWMgaWYgb25lIG9mIHRoZSBmb2xsb3dpbmcgcmV0dXJucyAnCisgICAgICAgICAgICAgICAgICAgJyJUcnVlIjpcbicKKyAgICAgICAgICAgICAgICAgICAnICAgImMuaXNhbHBoYSgpIiwgImMuaXNkZWNpbWFsKCkiLCAiYy5pc2RpZ2l0KCkiLCBvciAnCisgICAgICAgICAgICAgICAgICAgJyJjLmlzbnVtZXJpYygpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2FscGhhKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlICcKKyAgICAgICAgICAgICAgICAgICAnYWxwaGFiZXRpYyBhbmRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAgJworICAgICAgICAgICAgICAgICAgICdBbHBoYWJldGljXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICBkYXRhYmFzZSBhcyAiTGV0dGVyIiwgaS5lLiwgdGhvc2Ugd2l0aCBnZW5lcmFsIGNhdGVnb3J5ICcKKyAgICAgICAgICAgICAgICAgICAncHJvcGVydHlcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYmVpbmcgb25lIG9mICJMbSIsICJMdCIsICJMdSIsICJMbCIsIG9yICJMbyIuICBOb3RlICcKKyAgICAgICAgICAgICAgICAgICAndGhhdCB0aGlzIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRpZmZlcmVudCBmcm9tIHRoZSAiQWxwaGFiZXRpYyIgcHJvcGVydHkgZGVmaW5lZCBpbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFN0YW5kYXJkLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzZGVjaW1hbCgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiBhbGwgY2hhcmFjdGVycyBpbiB0aGUgc3RyaW5nIGFyZSBkZWNpbWFsICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVyc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAnCisgICAgICAgICAgICAgICAgICAgJ0RlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhcmUgdGhvc2UgZnJvbSBnZW5lcmFsIGNhdGVnb3J5ICJOZCIuIFRoaXMgJworICAgICAgICAgICAgICAgICAgICdjYXRlZ29yeVxuJworICAgICAgICAgICAgICAgICAgICcgICBpbmNsdWRlcyBkaWdpdCBjaGFyYWN0ZXJzLCBhbmQgYWxsIGNoYXJhY3RlcnMgdGhhdCBjYW4gJworICAgICAgICAgICAgICAgICAgICdiZSB1c2VkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvcm0gZGVjaW1hbC1yYWRpeCBudW1iZXJzLCBlLmcuIFUrMDY2MCwgQVJBQklDLUlORElDICcKKyAgICAgICAgICAgICAgICAgICAnRElHSVQgWkVSTy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2RpZ2l0KClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIGRpZ2l0cyAnCisgICAgICAgICAgICAgICAgICAgJ2FuZCB0aGVyZSBpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICBEaWdpdHMgJworICAgICAgICAgICAgICAgICAgICdpbmNsdWRlIGRlY2ltYWxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBhbmQgZGlnaXRzIHRoYXQgbmVlZCBzcGVjaWFsIGhhbmRsaW5nLCBzdWNoICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbXBhdGliaWxpdHkgc3VwZXJzY3JpcHQgZGlnaXRzLiAgRm9ybWFsbHksIGEgZGlnaXQgaXMgJworICAgICAgICAgICAgICAgICAgICdhIGNoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGhhcyB0aGUgcHJvcGVydHkgdmFsdWUgTnVtZXJpY19UeXBlPURpZ2l0IG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE51bWVyaWNfVHlwZT1EZWNpbWFsLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmlzaWRlbnRpZmllcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdmFsaWQgaWRlbnRpZmllciAnCisgICAgICAgICAgICAgICAgICAgJ2FjY29yZGluZyB0byB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGFuZ3VhZ2UgZGVmaW5pdGlvbiwgc2VjdGlvbiBJZGVudGlmaWVycyBhbmQga2V5d29yZHMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVc2UgImtleXdvcmQuaXNrZXl3b3JkKCkiIHRvIHRlc3QgZm9yIHJlc2VydmVkICcKKyAgICAgICAgICAgICAgICAgICAnaWRlbnRpZmllcnMgc3VjaCBhc1xuJworICAgICAgICAgICAgICAgICAgICcgICAiZGVmIiBhbmQgImNsYXNzIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc2xvd2VyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIGxvd2VyY2FzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2UgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNudW1lcmljKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjaGFyYWN0ZXJzIGluIHRoZSBzdHJpbmcgYXJlIG51bWVyaWMgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNoYXJhY3RlciwgZmFsc2Ugb3RoZXJ3aXNlLiAnCisgICAgICAgICAgICAgICAgICAgJ051bWVyaWNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyBpbmNsdWRlIGRpZ2l0IGNoYXJhY3RlcnMsIGFuZCBhbGwgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3RoYXQgaGF2ZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgVW5pY29kZSBudW1lcmljIHZhbHVlIHByb3BlcnR5LCBlLmcuIFUrMjE1NSwgVlVMR0FSICcKKyAgICAgICAgICAgICAgICAgICAnRlJBQ1RJT05cbicKKyAgICAgICAgICAgICAgICAgICAnICAgT05FIEZJRlRILiAgRm9ybWFsbHksIG51bWVyaWMgY2hhcmFjdGVycyBhcmUgdGhvc2Ugd2l0aCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBwcm9wZXJ0eSB2YWx1ZSBOdW1lcmljX1R5cGU9RGlnaXQsIE51bWVyaWNfVHlwZT1EZWNpbWFsICcKKyAgICAgICAgICAgICAgICAgICAnb3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTnVtZXJpY19UeXBlPU51bWVyaWMuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNwcmludGFibGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRydWUgaWYgYWxsIGNoYXJhY3RlcnMgaW4gdGhlIHN0cmluZyBhcmUgJworICAgICAgICAgICAgICAgICAgICdwcmludGFibGUgb3IgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmluZyBpcyBlbXB0eSwgZmFsc2Ugb3RoZXJ3aXNlLiAgTm9ucHJpbnRhYmxlICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBhcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhvc2UgY2hhcmFjdGVycyBkZWZpbmVkIGluIHRoZSBVbmljb2RlIGNoYXJhY3RlciAnCisgICAgICAgICAgICAgICAgICAgJ2RhdGFiYXNlIGFzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJPdGhlciIgb3IgIlNlcGFyYXRvciIsIGV4Y2VwdGluZyB0aGUgQVNDSUkgc3BhY2UgJworICAgICAgICAgICAgICAgICAgICcoMHgyMCkgd2hpY2ggaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29uc2lkZXJlZCBwcmludGFibGUuICAoTm90ZSB0aGF0IHByaW50YWJsZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnaW4gdGhpc1xuJworICAgICAgICAgICAgICAgICAgICcgICBjb250ZXh0IGFyZSB0aG9zZSB3aGljaCBzaG91bGQgbm90IGJlIGVzY2FwZWQgd2hlbiAnCisgICAgICAgICAgICAgICAgICAgJyJyZXByKCkiIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGludm9rZWQgb24gYSBzdHJpbmcuICBJdCBoYXMgbm8gYmVhcmluZyBvbiB0aGUgaGFuZGxpbmcgJworICAgICAgICAgICAgICAgICAgICdvZiBzdHJpbmdzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdyaXR0ZW4gdG8gInN5cy5zdGRvdXQiIG9yICJzeXMuc3RkZXJyIi4pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXNzcGFjZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGVyZSBhcmUgb25seSB3aGl0ZXNwYWNlIGNoYXJhY3RlcnMgaW4gJworICAgICAgICAgICAgICAgICAgICd0aGUgc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFuZCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2hhcmFjdGVyLCBmYWxzZSBvdGhlcndpc2UuICAnCisgICAgICAgICAgICAgICAgICAgJ1doaXRlc3BhY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgY2hhcmFjdGVycyAgYXJlIHRob3NlIGNoYXJhY3RlcnMgZGVmaW5lZCBpbiB0aGUgVW5pY29kZSAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlclxuJworICAgICAgICAgICAgICAgICAgICcgICBkYXRhYmFzZSBhcyAiT3RoZXIiIG9yICJTZXBhcmF0b3IiIGFuZCB0aG9zZSB3aXRoICcKKyAgICAgICAgICAgICAgICAgICAnYmlkaXJlY3Rpb25hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBwcm9wZXJ0eSBiZWluZyBvbmUgb2YgIldTIiwgIkIiLCBvciAiUyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuaXN0aXRsZSgpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdHJ1ZSBpZiB0aGUgc3RyaW5nIGlzIGEgdGl0bGVjYXNlZCBzdHJpbmcgYW5kICcKKyAgICAgICAgICAgICAgICAgICAndGhlcmUgaXMgYXRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbGVhc3Qgb25lIGNoYXJhY3RlciwgZm9yIGV4YW1wbGUgdXBwZXJjYXNlIGNoYXJhY3RlcnMgJworICAgICAgICAgICAgICAgICAgICdtYXkgb25seVxuJworICAgICAgICAgICAgICAgICAgICcgICBmb2xsb3cgdW5jYXNlZCBjaGFyYWN0ZXJzIGFuZCBsb3dlcmNhc2UgY2hhcmFjdGVycyBvbmx5ICcKKyAgICAgICAgICAgICAgICAgICAnY2FzZWQgb25lcy5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGZhbHNlIG90aGVyd2lzZS5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5pc3VwcGVyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0cnVlIGlmIGFsbCBjYXNlZCBjaGFyYWN0ZXJzIFs0XSBpbiB0aGUgc3RyaW5nICcKKyAgICAgICAgICAgICAgICAgICAnYXJlIHVwcGVyY2FzZVxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgdGhlcmUgaXMgYXQgbGVhc3Qgb25lIGNhc2VkIGNoYXJhY3RlciwgZmFsc2UgJworICAgICAgICAgICAgICAgICAgICdvdGhlcndpc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuam9pbihpdGVyYWJsZSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIHN0cmluZyB3aGljaCBpcyB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzdHJpbmdzIGluIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAqaXRlcmFibGUqICppdGVyYWJsZSouICBBICJUeXBlRXJyb3IiIHdpbGwgYmUgcmFpc2VkIGlmICcKKyAgICAgICAgICAgICAgICAgICAndGhlcmUgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFueSBub24tc3RyaW5nIHZhbHVlcyBpbiAqaXRlcmFibGUqLCBpbmNsdWRpbmcgImJ5dGVzIiAnCisgICAgICAgICAgICAgICAgICAgJ29iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFRoZSBzZXBhcmF0b3IgYmV0d2VlbiBlbGVtZW50cyBpcyB0aGUgc3RyaW5nIHByb3ZpZGluZyAnCisgICAgICAgICAgICAgICAgICAgJ3RoaXMgbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBzdHJpbmcgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoICcKKyAgICAgICAgICAgICAgICAgICAnKndpZHRoKi5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgUGFkZGluZyBpcyBkb25lIHVzaW5nIHRoZSBzcGVjaWZpZWQgKmZpbGxjaGFyKiAoZGVmYXVsdCAnCisgICAgICAgICAgICAgICAgICAgJ2lzIGFuIEFTQ0lJXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHNwYWNlKS4gVGhlIG9yaWdpbmFsIHN0cmluZyBpcyByZXR1cm5lZCBpZiAqd2lkdGgqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnbGVzcyB0aGFuIG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVxdWFsIHRvICJsZW4ocykiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLmxvd2VyKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGFsbCB0aGUgY2FzZWQgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIFs0XVxuJworICAgICAgICAgICAgICAgICAgICcgICBjb252ZXJ0ZWQgdG8gbG93ZXJjYXNlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGxvd2VyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnMy4xMyBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5sc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIGxlYWRpbmcgY2hhcmFjdGVycyAnCisgICAgICAgICAgICAgICAgICAgJ3JlbW92ZWQuICBUaGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKmNoYXJzKiBhcmd1bWVudCBpcyBhIHN0cmluZyBzcGVjaWZ5aW5nIHRoZSBzZXQgb2YgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzIHRvIGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92ZWQuICBJZiBvbWl0dGVkIG9yICJOb25lIiwgdGhlICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICdkZWZhdWx0cyB0b1xuJworICAgICAgICAgICAgICAgICAgICcgICByZW1vdmluZyB3aGl0ZXNwYWNlLiAgVGhlICpjaGFycyogYXJndW1lbnQgaXMgbm90IGEgJworICAgICAgICAgICAgICAgICAgICdwcmVmaXg7IHJhdGhlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgdmFsdWVzIGFyZSBzdHJpcHBlZDpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnICAgc3BhY2lvdXMgICAnLmxzdHJpcCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdzcGFjaW91cyAgICdcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICd3d3cuZXhhbXBsZS5jb20nLmxzdHJpcCgnY21vd3ouJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ2V4YW1wbGUuY29tJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RhdGljIHN0ci5tYWtldHJhbnMoeFssIHlbLCB6XV0pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGlzIHN0YXRpYyBtZXRob2QgcmV0dXJucyBhIHRyYW5zbGF0aW9uIHRhYmxlIHVzYWJsZSAnCisgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICcgICAic3RyLnRyYW5zbGF0ZSgpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZXJlIGlzIG9ubHkgb25lIGFyZ3VtZW50LCBpdCBtdXN0IGJlIGEgZGljdGlvbmFyeSAnCisgICAgICAgICAgICAgICAgICAgJ21hcHBpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscyAoaW50ZWdlcnMpIG9yIGNoYXJhY3RlcnMgKHN0cmluZ3Mgb2YgJworICAgICAgICAgICAgICAgICAgICdsZW5ndGggMSkgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBvcmRpbmFscywgc3RyaW5ncyAob2YgYXJiaXRyYXJ5IGxlbmd0aHMpIG9yICcKKyAgICAgICAgICAgICAgICAgICAnTm9uZS5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgQ2hhcmFjdGVyIGtleXMgd2lsbCB0aGVuIGJlIGNvbnZlcnRlZCB0byBvcmRpbmFscy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIElmIHRoZXJlIGFyZSB0d28gYXJndW1lbnRzLCB0aGV5IG11c3QgYmUgc3RyaW5ncyBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2VxdWFsIGxlbmd0aCxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYW5kIGluIHRoZSByZXN1bHRpbmcgZGljdGlvbmFyeSwgZWFjaCBjaGFyYWN0ZXIgaW4geCAnCisgICAgICAgICAgICAgICAgICAgJ3dpbGwgYmUgbWFwcGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRvIHRoZSBjaGFyYWN0ZXIgYXQgdGhlIHNhbWUgcG9zaXRpb24gaW4geS4gIElmIHRoZXJlICcKKyAgICAgICAgICAgICAgICAgICAnaXMgYSB0aGlyZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCwgaXQgbXVzdCBiZSBhIHN0cmluZywgd2hvc2UgY2hhcmFjdGVycyB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAnbWFwcGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIE5vbmUgaW4gdGhlIHJlc3VsdC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5wYXJ0aXRpb24oc2VwKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU3BsaXQgdGhlIHN0cmluZyBhdCB0aGUgZmlyc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvciBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0aGUgc3RyaW5nIGl0c2VsZiwgJworICAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICB0d28gZW1wdHkgc3RyaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yZXBsYWNlKG9sZCwgbmV3WywgY291bnRdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIHdpdGggYWxsIG9jY3VycmVuY2VzIG9mICcKKyAgICAgICAgICAgICAgICAgICAnc3Vic3RyaW5nICpvbGQqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlcGxhY2VkIGJ5ICpuZXcqLiAgSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50ICpjb3VudCogaXMgJworICAgICAgICAgICAgICAgICAgICdnaXZlbiwgb25seVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgZmlyc3QgKmNvdW50KiBvY2N1cnJlbmNlcyBhcmUgcmVwbGFjZWQuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiB0aGUgc3RyaW5nIHdoZXJlIHN1YnN0cmluZyAnCisgICAgICAgICAgICAgICAgICAgJypzdWIqIGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGZvdW5kLCBzdWNoIHRoYXQgKnN1YiogaXMgY29udGFpbmVkIHdpdGhpbiAnCisgICAgICAgICAgICAgICAgICAgJyJzW3N0YXJ0OmVuZF0iLlxuJworICAgICAgICAgICAgICAgICAgICcgICBPcHRpb25hbCBhcmd1bWVudHMgKnN0YXJ0KiBhbmQgKmVuZCogYXJlIGludGVycHJldGVkIGFzICcKKyAgICAgICAgICAgICAgICAgICAnaW4gc2xpY2VcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90YXRpb24uICBSZXR1cm4gIi0xIiBvbiBmYWlsdXJlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgTGlrZSAicmZpbmQoKSIgYnV0IHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiB0aGUgJworICAgICAgICAgICAgICAgICAgICdzdWJzdHJpbmcgKnN1YiogaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm90IGZvdW5kLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnJqdXN0KHdpZHRoWywgZmlsbGNoYXJdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIHRoZSBzdHJpbmcgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCAnCisgICAgICAgICAgICAgICAgICAgJyp3aWR0aCouXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFBhZGRpbmcgaXMgZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkICpmaWxsY2hhciogKGRlZmF1bHQgJworICAgICAgICAgICAgICAgICAgICdpcyBhbiBBU0NJSVxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGFjZSkuIFRoZSBvcmlnaW5hbCBzdHJpbmcgaXMgcmV0dXJuZWQgaWYgKndpZHRoKiBpcyAnCisgICAgICAgICAgICAgICAgICAgJ2xlc3MgdGhhbiBvclxuJworICAgICAgICAgICAgICAgICAgICcgICBlcXVhbCB0byAibGVuKHMpIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5ycGFydGl0aW9uKHNlcClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFNwbGl0IHRoZSBzdHJpbmcgYXQgdGhlIGxhc3Qgb2NjdXJyZW5jZSBvZiAqc2VwKiwgYW5kICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuIGFcbicKKyAgICAgICAgICAgICAgICAgICAnICAgMy10dXBsZSBjb250YWluaW5nIHRoZSBwYXJ0IGJlZm9yZSB0aGUgc2VwYXJhdG9yLCB0aGUgJworICAgICAgICAgICAgICAgICAgICdzZXBhcmF0b3JcbicKKyAgICAgICAgICAgICAgICAgICAnICAgaXRzZWxmLCBhbmQgdGhlIHBhcnQgYWZ0ZXIgdGhlIHNlcGFyYXRvci4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3NlcGFyYXRvciBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZm91bmQsIHJldHVybiBhIDMtdHVwbGUgY29udGFpbmluZyB0d28gZW1wdHkgc3RyaW5ncywgJworICAgICAgICAgICAgICAgICAgICdmb2xsb3dlZCBieVxuJworICAgICAgICAgICAgICAgICAgICcgICB0aGUgc3RyaW5nIGl0c2VsZi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci5yc3BsaXQoc2VwPU5vbmUsIG1heHNwbGl0PS0xKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgd29yZHMgaW4gdGhlIHN0cmluZywgdXNpbmcgKnNlcCogJworICAgICAgICAgICAgICAgICAgICdhcyB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZGVsaW1pdGVyIHN0cmluZy4gSWYgKm1heHNwbGl0KiBpcyBnaXZlbiwgYXQgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgJyptYXhzcGxpdCogc3BsaXRzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGFyZSBkb25lLCB0aGUgKnJpZ2h0bW9zdCogb25lcy4gIElmICpzZXAqIGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ3NwZWNpZmllZCBvclxuJworICAgICAgICAgICAgICAgICAgICcgICAiTm9uZSIsIGFueSB3aGl0ZXNwYWNlIHN0cmluZyBpcyBhIHNlcGFyYXRvci4gIEV4Y2VwdCAnCisgICAgICAgICAgICAgICAgICAgJ2ZvciBzcGxpdHRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZnJvbSB0aGUgcmlnaHQsICJyc3BsaXQoKSIgYmVoYXZlcyBsaWtlICJzcGxpdCgpIiB3aGljaCAnCisgICAgICAgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlc2NyaWJlZCBpbiBkZXRhaWwgYmVsb3cuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIucnN0cmlwKFtjaGFyc10pXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCB0cmFpbGluZyBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAncmVtb3ZlZC4gIFRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICAqY2hhcnMqIGFyZ3VtZW50IGlzIGEgc3RyaW5nIHNwZWNpZnlpbmcgdGhlIHNldCBvZiAnCisgICAgICAgICAgICAgICAgICAgJ2NoYXJhY3RlcnMgdG8gYmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVtb3ZlZC4gIElmIG9taXR0ZWQgb3IgIk5vbmUiLCB0aGUgKmNoYXJzKiBhcmd1bWVudCAnCisgICAgICAgICAgICAgICAgICAgJ2RlZmF1bHRzIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJlbW92aW5nIHdoaXRlc3BhY2UuICBUaGUgKmNoYXJzKiBhcmd1bWVudCBpcyBub3QgYSAnCisgICAgICAgICAgICAgICAgICAgJ3N1ZmZpeDsgcmF0aGVyLFxuJworICAgICAgICAgICAgICAgICAgICcgICBhbGwgY29tYmluYXRpb25zIG9mIGl0cyB2YWx1ZXMgYXJlIHN0cmlwcGVkOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICBzcGFjaW91cyAgICcucnN0cmlwKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJyAgIHNwYWNpb3VzJ1xuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ21pc3Npc3NpcHBpJy5yc3RyaXAoJ2lweicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgICdtaXNzaXNzJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnNwbGl0KHNlcD1Ob25lLCBtYXhzcGxpdD0tMSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGxpc3Qgb2YgdGhlIHdvcmRzIGluIHRoZSBzdHJpbmcsIHVzaW5nICpzZXAqICcKKyAgICAgICAgICAgICAgICAgICAnYXMgdGhlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGRlbGltaXRlciBzdHJpbmcuICBJZiAqbWF4c3BsaXQqIGlzIGdpdmVuLCBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnKm1heHNwbGl0KlxuJworICAgICAgICAgICAgICAgICAgICcgICBzcGxpdHMgYXJlIGRvbmUgKHRodXMsIHRoZSBsaXN0IHdpbGwgaGF2ZSBhdCBtb3N0ICcKKyAgICAgICAgICAgICAgICAgICAnIm1heHNwbGl0KzEiXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGVsZW1lbnRzKS4gIElmICptYXhzcGxpdCogaXMgbm90IHNwZWNpZmllZCBvciAiLTEiLCAnCisgICAgICAgICAgICAgICAgICAgJ3RoZW4gdGhlcmUgaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbm8gbGltaXQgb24gdGhlIG51bWJlciBvZiBzcGxpdHMgKGFsbCBwb3NzaWJsZSBzcGxpdHMgJworICAgICAgICAgICAgICAgICAgICdhcmUgbWFkZSkuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiAqc2VwKiBpcyBnaXZlbiwgY29uc2VjdXRpdmUgZGVsaW1pdGVycyBhcmUgbm90ICcKKyAgICAgICAgICAgICAgICAgICAnZ3JvdXBlZCB0b2dldGhlclxuJworICAgICAgICAgICAgICAgICAgICcgICBhbmQgYXJlIGRlZW1lZCB0byBkZWxpbWl0IGVtcHR5IHN0cmluZ3MgKGZvciBleGFtcGxlLFxuJworICAgICAgICAgICAgICAgICAgICcgICAiXCcxLCwyXCcuc3BsaXQoXCcsXCcpIiByZXR1cm5zICJbXCcxXCcsIFwnXCcsICcKKyAgICAgICAgICAgICAgICAgICAnXCcyXCddIikuICBUaGUgKnNlcCogYXJndW1lbnRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWF5IGNvbnNpc3Qgb2YgbXVsdGlwbGUgY2hhcmFjdGVycyAoZm9yIGV4YW1wbGUsXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJcJzE8PjI8PjNcJy5zcGxpdChcJzw+XCcpIiByZXR1cm5zICJbXCcxXCcsIFwnMlwnLCAnCisgICAgICAgICAgICAgICAgICAgJ1wnM1wnXSIpLiBTcGxpdHRpbmcgYW5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgZW1wdHkgc3RyaW5nIHdpdGggYSBzcGVjaWZpZWQgc2VwYXJhdG9yIHJldHVybnMgJworICAgICAgICAgICAgICAgICAgICciW1wnXCddIi5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsMycuc3BsaXQoJywnKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMicsICczJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsMycuc3BsaXQoJywnLCBtYXhzcGxpdD0xKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMiwzJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcxLDIsLDMsJy5zcGxpdCgnLCcpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJycsICczJywgJyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBJZiAqc2VwKiBpcyBub3Qgc3BlY2lmaWVkIG9yIGlzICJOb25lIiwgYSBkaWZmZXJlbnQgJworICAgICAgICAgICAgICAgICAgICdzcGxpdHRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYWxnb3JpdGhtIGlzIGFwcGxpZWQ6IHJ1bnMgb2YgY29uc2VjdXRpdmUgd2hpdGVzcGFjZSAnCisgICAgICAgICAgICAgICAgICAgJ2FyZSByZWdhcmRlZFxuJworICAgICAgICAgICAgICAgICAgICcgICBhcyBhIHNpbmdsZSBzZXBhcmF0b3IsIGFuZCB0aGUgcmVzdWx0IHdpbGwgY29udGFpbiBubyAnCisgICAgICAgICAgICAgICAgICAgJ2VtcHR5IHN0cmluZ3NcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYXQgdGhlIHN0YXJ0IG9yIGVuZCBpZiB0aGUgc3RyaW5nIGhhcyBsZWFkaW5nIG9yICcKKyAgICAgICAgICAgICAgICAgICAndHJhaWxpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgd2hpdGVzcGFjZS4gIENvbnNlcXVlbnRseSwgc3BsaXR0aW5nIGFuIGVtcHR5IHN0cmluZyBvciAnCisgICAgICAgICAgICAgICAgICAgJ2Egc3RyaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNvbnNpc3Rpbmcgb2YganVzdCB3aGl0ZXNwYWNlIHdpdGggYSAiTm9uZSIgc2VwYXJhdG9yICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJucyAiW10iLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGU6XG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEgMiAzJy5zcGxpdCgpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnMScsICcyJywgJzMnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJzEgMiAzJy5zcGxpdChtYXhzcGxpdD0xKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICBbJzEnLCAnMiAzJ11cbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICAxICAgMiAgIDMgICAnLnNwbGl0KClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycxJywgJzInLCAnMyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3BsaXRsaW5lcyhba2VlcGVuZHNdKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgbGlzdCBvZiB0aGUgbGluZXMgaW4gdGhlIHN0cmluZywgYnJlYWtpbmcgYXQgJworICAgICAgICAgICAgICAgICAgICdsaW5lXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGJvdW5kYXJpZXMuICBMaW5lIGJyZWFrcyBhcmUgbm90IGluY2x1ZGVkIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdGluZyBsaXN0XG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVubGVzcyAqa2VlcGVuZHMqIGlzIGdpdmVuIGFuZCB0cnVlLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhpcyBtZXRob2Qgc3BsaXRzIG9uIHRoZSBmb2xsb3dpbmcgbGluZSBib3VuZGFyaWVzLiAgJworICAgICAgICAgICAgICAgICAgICdJblxuJworICAgICAgICAgICAgICAgICAgICcgICBwYXJ0aWN1bGFyLCB0aGUgYm91bmRhcmllcyBhcmUgYSBzdXBlcnNldCBvZiAqdW5pdmVyc2FsICcKKyAgICAgICAgICAgICAgICAgICAnbmV3bGluZXMqLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8IFJlcHJlc2VudGF0aW9uICAgICAgICAgIHwgJworICAgICAgICAgICAgICAgICAgICdEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFxuIiAgICAgICAgICAgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnRmVlZCAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHIiICAgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlICcKKyAgICAgICAgICAgICAgICAgICAnUmV0dXJuICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcclxcbiIgICAgICAgICAgICAgICAgICB8IENhcnJpYWdlIFJldHVybiArIExpbmUgJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcdiIgb3IgIlxceDBiIiAgICAgICAgICB8IExpbmUgJworICAgICAgICAgICAgICAgICAgICdUYWJ1bGF0aW9uICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxcZiIgb3IgIlxceDBjIiAgICAgICAgICB8IEZvcm0gJworICAgICAgICAgICAgICAgICAgICdGZWVkICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDFjIiAgICAgICAgICAgICAgICAgIHwgRmlsZSAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx4MWQiICAgICAgICAgICAgICAgICAgfCBHcm91cCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHgxZSIgICAgICAgICAgICAgICAgICB8IFJlY29yZCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHwgIlxceDg1IiAgICAgICAgICAgICAgICAgIHwgTmV4dCBMaW5lIChDMSBDb250cm9sICcKKyAgICAgICAgICAgICAgICAgICAnQ29kZSkgICB8XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICcKKyAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAnICAgfCAiXFx1MjAyOCIgICAgICAgICAgICAgICAgfCBMaW5lICcKKyAgICAgICAgICAgICAgICAgICAnU2VwYXJhdG9yICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgJworICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICcgICB8ICJcXHUyMDI5IiAgICAgICAgICAgICAgICB8IFBhcmFncmFwaCAnCisgICAgICAgICAgICAgICAgICAgJ1NlcGFyYXRvciAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICcgICAnCisgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBDaGFuZ2VkIGluIHZlcnNpb24gMy4yOiAiXFx2IiBhbmQgIlxcZiIgYWRkZWQgdG8gbGlzdCAnCisgICAgICAgICAgICAgICAgICAgJ29mIGxpbmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgYm91bmRhcmllcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICdhYiBjXFxuXFxuZGUgZmdcXHJrbFxcclxcbicuc3BsaXRsaW5lcygpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnYWIgYycsICcnLCAnZGUgZmcnLCAna2wnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ2FiIGNcXG5cXG5kZSAiCisgICAgICAgICAgICAgICAgICAgImZnXFxya2xcXHJcXG4nLnNwbGl0bGluZXMoa2VlcGVuZHM9VHJ1ZSlcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydhYiBjXFxuJywgJ1xcbicsICdkZSBmZ1xccicsICdrbFxcclxcbiddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBVbmxpa2UgInNwbGl0KCkiIHdoZW4gYSBkZWxpbWl0ZXIgc3RyaW5nICpzZXAqIGlzICcKKyAgICAgICAgICAgICAgICAgICAnZ2l2ZW4sIHRoaXNcbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWV0aG9kIHJldHVybnMgYW4gZW1wdHkgbGlzdCBmb3IgdGhlIGVtcHR5IHN0cmluZywgYW5kICcKKyAgICAgICAgICAgICAgICAgICAnYSB0ZXJtaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBsaW5lIGJyZWFrIGRvZXMgbm90IHJlc3VsdCBpbiBhbiBleHRyYSBsaW5lOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICIiLnNwbGl0bGluZXMoKVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICBbXVxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gIk9uZSBsaW5lXFxuIi5zcGxpdGxpbmVzKClcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWydPbmUgbGluZSddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgY29tcGFyaXNvbiwgInNwbGl0KFwnXFxuXCcpIiBnaXZlczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnJy5zcGxpdCgnXFxuJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgWycnXVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gJ1R3byBsaW5lc1xcbicuc3BsaXQoJ1xcbicpXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgIFsnVHdvIGxpbmVzJywgJyddXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3RhcnRzd2l0aChwcmVmaXhbLCBzdGFydFssIGVuZF1dKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuICJUcnVlIiBpZiBzdHJpbmcgc3RhcnRzIHdpdGggdGhlICpwcmVmaXgqLCAnCisgICAgICAgICAgICAgICAgICAgJ290aGVyd2lzZSByZXR1cm5cbicKKyAgICAgICAgICAgICAgICAgICAnICAgIkZhbHNlIi4gKnByZWZpeCogY2FuIGFsc28gYmUgYSB0dXBsZSBvZiBwcmVmaXhlcyB0byAnCisgICAgICAgICAgICAgICAgICAgJ2xvb2sgZm9yLlxuJworICAgICAgICAgICAgICAgICAgICcgICBXaXRoIG9wdGlvbmFsICpzdGFydCosIHRlc3Qgc3RyaW5nIGJlZ2lubmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFdpdGggb3B0aW9uYWwgKmVuZCosIHN0b3AgY29tcGFyaW5nIHN0cmluZyBhdCB0aGF0ICcKKyAgICAgICAgICAgICAgICAgICAncG9zaXRpb24uXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIuc3RyaXAoW2NoYXJzXSlcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHRoZSBsZWFkaW5nIGFuZCAnCisgICAgICAgICAgICAgICAgICAgJ3RyYWlsaW5nXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlcnMgcmVtb3ZlZC4gVGhlICpjaGFycyogYXJndW1lbnQgaXMgYSBzdHJpbmcgJworICAgICAgICAgICAgICAgICAgICdzcGVjaWZ5aW5nIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICBzZXQgb2YgY2hhcmFjdGVycyB0byBiZSByZW1vdmVkLiBJZiBvbWl0dGVkIG9yICJOb25lIiwgJworICAgICAgICAgICAgICAgICAgICd0aGUgKmNoYXJzKlxuJworICAgICAgICAgICAgICAgICAgICcgICBhcmd1bWVudCBkZWZhdWx0cyB0byByZW1vdmluZyB3aGl0ZXNwYWNlLiBUaGUgKmNoYXJzKiAnCisgICAgICAgICAgICAgICAgICAgJ2FyZ3VtZW50IGlzXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG5vdCBhIHByZWZpeCBvciBzdWZmaXg7IHJhdGhlciwgYWxsIGNvbWJpbmF0aW9ucyBvZiBpdHMgJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmlwcGVkOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+ICcgICBzcGFjaW91cyAgICcuc3RyaXAoKVxuIgorICAgICAgICAgICAgICAgICAgICIgICAgICAnc3BhY2lvdXMnXG4iCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnd3d3LmV4YW1wbGUuY29tJy5zdHJpcCgnY21vd3ouJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ2V4YW1wbGUnXG4iCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBUaGUgb3V0ZXJtb3N0IGxlYWRpbmcgYW5kIHRyYWlsaW5nICpjaGFycyogYXJndW1lbnQgJworICAgICAgICAgICAgICAgICAgICd2YWx1ZXMgYXJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHN0cmlwcGVkIGZyb20gdGhlIHN0cmluZy4gQ2hhcmFjdGVycyBhcmUgcmVtb3ZlZCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAndGhlIGxlYWRpbmdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgZW5kIHVudGlsIHJlYWNoaW5nIGEgc3RyaW5nIGNoYXJhY3RlciB0aGF0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ2NvbnRhaW5lZCBpbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgc2V0IG9mIGNoYXJhY3RlcnMgaW4gKmNoYXJzKi4gQSBzaW1pbGFyIGFjdGlvbiB0YWtlcyAnCisgICAgICAgICAgICAgICAgICAgJ3BsYWNlIG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0cmFpbGluZyBlbmQuIEZvciBleGFtcGxlOlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nID0gJyMuLi4uLi4uIFNlY3Rpb24gMy4yLjEgSXNzdWUgIgorICAgICAgICAgICAgICAgICAgICIjMzIgLi4uLi4uLidcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGNvbW1lbnRfc3RyaW5nLnN0cmlwKCcuIyEgJylcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ1NlY3Rpb24gMy4yLjEgSXNzdWUgIzMyJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnc3RyLnN3YXBjYXNlKClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyB3aXRoIHVwcGVyY2FzZSBjaGFyYWN0ZXJzICcKKyAgICAgICAgICAgICAgICAgICAnY29udmVydGVkIHRvXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGxvd2VyY2FzZSBhbmQgdmljZSB2ZXJzYS4gTm90ZSB0aGF0IGl0IGlzIG5vdCAnCisgICAgICAgICAgICAgICAgICAgJ25lY2Vzc2FyaWx5IHRydWUgdGhhdFxuJworICAgICAgICAgICAgICAgICAgICcgICAicy5zd2FwY2FzZSgpLnN3YXBjYXNlKCkgPT0gcyIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudGl0bGUoKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgdGl0bGVjYXNlZCB2ZXJzaW9uIG9mIHRoZSBzdHJpbmcgd2hlcmUgd29yZHMgJworICAgICAgICAgICAgICAgICAgICdzdGFydCB3aXRoIGFuXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHVwcGVyY2FzZSBjaGFyYWN0ZXIgYW5kIHRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgJworICAgICAgICAgICAgICAgICAgICdsb3dlcmNhc2UuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgID4+PiAnSGVsbG8gd29ybGQnLnRpdGxlKClcbiIKKyAgICAgICAgICAgICAgICAgICAiICAgICAgJ0hlbGxvIFdvcmxkJ1xuIgorICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIGFsZ29yaXRobSB1c2VzIGEgc2ltcGxlIGxhbmd1YWdlLWluZGVwZW5kZW50ICcKKyAgICAgICAgICAgICAgICAgICAnZGVmaW5pdGlvbiBvZiBhXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHdvcmQgYXMgZ3JvdXBzIG9mIGNvbnNlY3V0aXZlIGxldHRlcnMuICBUaGUgZGVmaW5pdGlvbiAnCisgICAgICAgICAgICAgICAgICAgJ3dvcmtzIGluXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG1hbnkgY29udGV4dHMgYnV0IGl0IG1lYW5zIHRoYXQgYXBvc3Ryb3BoZXMgaW4gJworICAgICAgICAgICAgICAgICAgICdjb250cmFjdGlvbnMgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHBvc3Nlc3NpdmVzIGZvcm0gd29yZCBib3VuZGFyaWVzLCB3aGljaCBtYXkgbm90IGJlIHRoZSAnCisgICAgICAgICAgICAgICAgICAgJ2Rlc2lyZWRcbicKKyAgICAgICAgICAgICAgICAgICAnICAgcmVzdWx0OlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMgZnJvbSB0aGUgVUsiLnRpdGxlKClcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ1JlIEJpbGxcJ1MgRnJpZW5kcyBGcm9tIFRoZSBVayJcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIEEgd29ya2Fyb3VuZCBmb3IgYXBvc3Ryb3BoZXMgY2FuIGJlIGNvbnN0cnVjdGVkIHVzaW5nICcKKyAgICAgICAgICAgICAgICAgICAncmVndWxhclxuJworICAgICAgICAgICAgICAgICAgICcgICBleHByZXNzaW9uczpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBpbXBvcnQgcmVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGRlZiB0aXRsZWNhc2Uocyk6XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLiAgICAgcmV0dXJuIHJlLnN1YihyIltBLVphLXpdKyhcJ1tBLVphLXpdKyk/IixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIGxhbWJkYSBtbzogJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVswXS51cHBlcigpICtcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICdtby5ncm91cCgwKVsxOl0ubG93ZXIoKSxcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgLi4uICAgICAgICAgICAgICAgICAgIHMpXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgIC4uLlxuJworICAgICAgICAgICAgICAgICAgICcgICAgICA+Pj4gdGl0bGVjYXNlKCJ0aGV5XCdyZSBiaWxsXCdzIGZyaWVuZHMuIilcbicKKyAgICAgICAgICAgICAgICAgICAnICAgICAgIlRoZXlcJ3JlIEJpbGxcJ3MgRnJpZW5kcy4iXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICdzdHIudHJhbnNsYXRlKHRhYmxlKVxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgUmV0dXJuIGEgY29weSBvZiB0aGUgc3RyaW5nIGluIHdoaWNoIGVhY2ggY2hhcmFjdGVyIGhhcyAnCisgICAgICAgICAgICAgICAgICAgJ2JlZW4gbWFwcGVkXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiAgVGhlIHRhYmxlIG11c3QgYmUgJworICAgICAgICAgICAgICAgICAgICdhbiBvYmplY3RcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdGhhdCBpbXBsZW1lbnRzIGluZGV4aW5nIHZpYSAiX19nZXRpdGVtX18oKSIsIHR5cGljYWxseSAnCisgICAgICAgICAgICAgICAgICAgJ2EgKm1hcHBpbmcqXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIG9yICpzZXF1ZW5jZSouICBXaGVuIGluZGV4ZWQgYnkgYSBVbmljb2RlIG9yZGluYWwgKGFuICcKKyAgICAgICAgICAgICAgICAgICAnaW50ZWdlciksIHRoZVxuJworICAgICAgICAgICAgICAgICAgICcgICB0YWJsZSBvYmplY3QgY2FuIGRvIGFueSBvZiB0aGUgZm9sbG93aW5nOiByZXR1cm4gYSAnCisgICAgICAgICAgICAgICAgICAgJ1VuaWNvZGUgb3JkaW5hbFxuJworICAgICAgICAgICAgICAgICAgICcgICBvciBhIHN0cmluZywgdG8gbWFwIHRoZSBjaGFyYWN0ZXIgdG8gb25lIG9yIG1vcmUgb3RoZXIgJworICAgICAgICAgICAgICAgICAgICdjaGFyYWN0ZXJzO1xuJworICAgICAgICAgICAgICAgICAgICcgICByZXR1cm4gIk5vbmUiLCB0byBkZWxldGUgdGhlIGNoYXJhY3RlciBmcm9tIHRoZSByZXR1cm4gJworICAgICAgICAgICAgICAgICAgICdzdHJpbmc7IG9yXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIHJhaXNlIGEgIkxvb2t1cEVycm9yIiBleGNlcHRpb24sIHRvIG1hcCB0aGUgY2hhcmFjdGVyICcKKyAgICAgICAgICAgICAgICAgICAndG8gaXRzZWxmLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgWW91IGNhbiB1c2UgInN0ci5tYWtldHJhbnMoKSIgdG8gY3JlYXRlIGEgdHJhbnNsYXRpb24gJworICAgICAgICAgICAgICAgICAgICdtYXAgZnJvbVxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXItdG8tY2hhcmFjdGVyIG1hcHBpbmdzIGluIGRpZmZlcmVudCBmb3JtYXRzLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgU2VlIGFsc28gdGhlICJjb2RlY3MiIG1vZHVsZSBmb3IgYSBtb3JlIGZsZXhpYmxlICcKKyAgICAgICAgICAgICAgICAgICAnYXBwcm9hY2ggdG8gY3VzdG9tXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNoYXJhY3RlciBtYXBwaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci51cHBlcigpXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYSBjb3B5IG9mIHRoZSBzdHJpbmcgd2l0aCBhbGwgdGhlIGNhc2VkICcKKyAgICAgICAgICAgICAgICAgICAnY2hhcmFjdGVycyBbNF1cbicKKyAgICAgICAgICAgICAgICAgICAnICAgY29udmVydGVkIHRvIHVwcGVyY2FzZS4gIE5vdGUgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgJyJzdHIudXBwZXIoKS5pc3VwcGVyKCkiIG1pZ2h0IGJlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICJGYWxzZSIgaWYgInMiIGNvbnRhaW5zIHVuY2FzZWQgY2hhcmFjdGVycyBvciBpZiB0aGUgJworICAgICAgICAgICAgICAgICAgICdVbmljb2RlXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIGNhdGVnb3J5IG9mIHRoZSByZXN1bHRpbmcgY2hhcmFjdGVyKHMpIGlzIG5vdCAiTHUiICcKKyAgICAgICAgICAgICAgICAgICAnKExldHRlcixcbicKKyAgICAgICAgICAgICAgICAgICAnICAgdXBwZXJjYXNlKSwgYnV0IGUuZy4gIkx0IiAoTGV0dGVyLCB0aXRsZWNhc2UpLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVGhlIHVwcGVyY2FzaW5nIGFsZ29yaXRobSB1c2VkIGlzIGRlc2NyaWJlZCBpbiBzZWN0aW9uICcKKyAgICAgICAgICAgICAgICAgICAnMy4xMyBvZiB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnICAgVW5pY29kZSBTdGFuZGFyZC5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ3N0ci56ZmlsbCh3aWR0aClcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIGNvcHkgb2YgdGhlIHN0cmluZyBsZWZ0IGZpbGxlZCB3aXRoIEFTQ0lJICcKKyAgICAgICAgICAgICAgICAgICAnIlwnMFwnIiBkaWdpdHMgdG9cbicKKyAgICAgICAgICAgICAgICAgICAnICAgbWFrZSBhIHN0cmluZyBvZiBsZW5ndGggKndpZHRoKi4gQSBsZWFkaW5nIHNpZ24gcHJlZml4XG4nCisgICAgICAgICAgICAgICAgICAgJyAgICgiXCcrXCciLyJcJy1cJyIpIGlzIGhhbmRsZWQgYnkgaW5zZXJ0aW5nIHRoZSBwYWRkaW5nICcKKyAgICAgICAgICAgICAgICAgICAnKmFmdGVyKiB0aGUgc2lnblxuJworICAgICAgICAgICAgICAgICAgICcgICBjaGFyYWN0ZXIgcmF0aGVyIHRoYW4gYmVmb3JlLiBUaGUgb3JpZ2luYWwgc3RyaW5nIGlzICcKKyAgICAgICAgICAgICAgICAgICAncmV0dXJuZWQgaWZcbicKKyAgICAgICAgICAgICAgICAgICAnICAgKndpZHRoKiBpcyBsZXNzIHRoYW4gb3IgZXF1YWwgdG8gImxlbihzKSIuXG4nCisgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICcgICBGb3IgZXhhbXBsZTpcbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJyAgICAgID4+PiAiNDIiLnpmaWxsKDUpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICcwMDA0MidcbiIKKyAgICAgICAgICAgICAgICAgICAnICAgICAgPj4+ICItNDIiLnpmaWxsKDUpXG4nCisgICAgICAgICAgICAgICAgICAgIiAgICAgICctMDA0MidcbiIsCisgJ3N0cmluZ3MnOiAnXG4nCisgICAgICAgICAgICAnU3RyaW5nIGFuZCBCeXRlcyBsaXRlcmFsc1xuJworICAgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdTdHJpbmcgbGl0ZXJhbHMgYXJlIGRlc2NyaWJlZCBieSB0aGUgZm9sbG93aW5nIGxleGljYWwgJworICAgICAgICAgICAgJ2RlZmluaXRpb25zOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIHN0cmluZ2xpdGVyYWwgICA6Oj0gW3N0cmluZ3ByZWZpeF0oc2hvcnRzdHJpbmcgfCBsb25nc3RyaW5nKVxuJworICAgICAgICAgICAgJyAgIHN0cmluZ3ByZWZpeCAgICA6Oj0gInIiIHwgInUiIHwgIlIiIHwgIlUiIHwgImYiIHwgIkYiXG4nCisgICAgICAgICAgICAnICAgICAgICAgICAgICAgICAgICB8ICJmciIgfCAiRnIiIHwgImZSIiB8ICJGUiIgfCAicmYiIHwgInJGIiB8ICcKKyAgICAgICAgICAgICciUmYiIHwgIlJGIlxuJworICAgICAgICAgICAgJyAgIHNob3J0c3RyaW5nICAgICA6Oj0gIlwnIiBzaG9ydHN0cmluZ2l0ZW0qICJcJyIgfCBcJyJcJyAnCisgICAgICAgICAgICAnc2hvcnRzdHJpbmdpdGVtKiBcJyJcJ1xuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmcgICAgICA6Oj0gIlwnXCdcJyIgbG9uZ3N0cmluZ2l0ZW0qICJcJ1wnXCciIHwgJworICAgICAgICAgICAgJ1wnIiIiXCcgbG9uZ3N0cmluZ2l0ZW0qIFwnIiIiXCdcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZ2l0ZW0gOjo9IHNob3J0c3RyaW5nY2hhciB8IHN0cmluZ2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIGxvbmdzdHJpbmdpdGVtICA6Oj0gbG9uZ3N0cmluZ2NoYXIgfCBzdHJpbmdlc2NhcGVzZXFcbicKKyAgICAgICAgICAgICcgICBzaG9ydHN0cmluZ2NoYXIgOjo9IDxhbnkgc291cmNlIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciAnCisgICAgICAgICAgICAnbmV3bGluZSBvciB0aGUgcXVvdGU+XG4nCisgICAgICAgICAgICAnICAgbG9uZ3N0cmluZ2NoYXIgIDo6PSA8YW55IHNvdXJjZSBjaGFyYWN0ZXIgZXhjZXB0ICJcXCI+XG4nCisgICAgICAgICAgICAnICAgc3RyaW5nZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgc291cmNlIGNoYXJhY3Rlcj5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICcgICBieXRlc2xpdGVyYWwgICA6Oj0gYnl0ZXNwcmVmaXgoc2hvcnRieXRlcyB8IGxvbmdieXRlcylcbicKKyAgICAgICAgICAgICcgICBieXRlc3ByZWZpeCAgICA6Oj0gImIiIHwgIkIiIHwgImJyIiB8ICJCciIgfCAiYlIiIHwgIkJSIiB8ICcKKyAgICAgICAgICAgICcicmIiIHwgInJCIiB8ICJSYiIgfCAiUkIiXG4nCisgICAgICAgICAgICAnICAgc2hvcnRieXRlcyAgICAgOjo9ICJcJyIgc2hvcnRieXRlc2l0ZW0qICJcJyIgfCBcJyJcJyAnCisgICAgICAgICAgICAnc2hvcnRieXRlc2l0ZW0qIFwnIlwnXG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzICAgICAgOjo9ICJcJ1wnXCciIGxvbmdieXRlc2l0ZW0qICJcJ1wnXCciIHwgXCciIiJcJyAnCisgICAgICAgICAgICAnbG9uZ2J5dGVzaXRlbSogXCciIiJcJ1xuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXNpdGVtIDo6PSBzaG9ydGJ5dGVzY2hhciB8IGJ5dGVzZXNjYXBlc2VxXG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzaXRlbSAgOjo9IGxvbmdieXRlc2NoYXIgfCBieXRlc2VzY2FwZXNlcVxuJworICAgICAgICAgICAgJyAgIHNob3J0Ynl0ZXNjaGFyIDo6PSA8YW55IEFTQ0lJIGNoYXJhY3RlciBleGNlcHQgIlxcIiBvciBuZXdsaW5lICcKKyAgICAgICAgICAgICdvciB0aGUgcXVvdGU+XG4nCisgICAgICAgICAgICAnICAgbG9uZ2J5dGVzY2hhciAgOjo9IDxhbnkgQVNDSUkgY2hhcmFjdGVyIGV4Y2VwdCAiXFwiPlxuJworICAgICAgICAgICAgJyAgIGJ5dGVzZXNjYXBlc2VxIDo6PSAiXFwiIDxhbnkgQVNDSUkgY2hhcmFjdGVyPlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ09uZSBzeW50YWN0aWMgcmVzdHJpY3Rpb24gbm90IGluZGljYXRlZCBieSB0aGVzZSBwcm9kdWN0aW9ucyBpcyAnCisgICAgICAgICAgICAndGhhdFxuJworICAgICAgICAgICAgJ3doaXRlc3BhY2UgaXMgbm90IGFsbG93ZWQgYmV0d2VlbiB0aGUgInN0cmluZ3ByZWZpeCIgb3IgJworICAgICAgICAgICAgJyJieXRlc3ByZWZpeCJcbicKKyAgICAgICAgICAgICdhbmQgdGhlIHJlc3Qgb2YgdGhlIGxpdGVyYWwuIFRoZSBzb3VyY2UgY2hhcmFjdGVyIHNldCBpcyBkZWZpbmVkICcKKyAgICAgICAgICAgICdieVxuJworICAgICAgICAgICAgJ3RoZSBlbmNvZGluZyBkZWNsYXJhdGlvbjsgaXQgaXMgVVRGLTggaWYgbm8gZW5jb2RpbmcgZGVjbGFyYXRpb24gJworICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAnZ2l2ZW4gaW4gdGhlIHNvdXJjZSBmaWxlOyBzZWUgc2VjdGlvbiBFbmNvZGluZyBkZWNsYXJhdGlvbnMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnSW4gcGxhaW4gRW5nbGlzaDogQm90aCB0eXBlcyBvZiBsaXRlcmFscyBjYW4gYmUgZW5jbG9zZWQgaW4gJworICAgICAgICAgICAgJ21hdGNoaW5nXG4nCisgICAgICAgICAgICAnc2luZ2xlIHF1b3RlcyAoIlwnIikgb3IgZG91YmxlIHF1b3RlcyAoIiIiKS4gIFRoZXkgY2FuIGFsc28gYmUgJworICAgICAgICAgICAgJ2VuY2xvc2VkXG4nCisgICAgICAgICAgICAnaW4gbWF0Y2hpbmcgZ3JvdXBzIG9mIHRocmVlIHNpbmdsZSBvciBkb3VibGUgcXVvdGVzICh0aGVzZSBhcmVcbicKKyAgICAgICAgICAgICdnZW5lcmFsbHkgcmVmZXJyZWQgdG8gYXMgKnRyaXBsZS1xdW90ZWQgc3RyaW5ncyopLiAgVGhlICcKKyAgICAgICAgICAgICdiYWNrc2xhc2hcbicKKyAgICAgICAgICAgICcoIlxcIikgY2hhcmFjdGVyIGlzIHVzZWQgdG8gZXNjYXBlIGNoYXJhY3RlcnMgdGhhdCBvdGhlcndpc2UgaGF2ZSAnCisgICAgICAgICAgICAnYVxuJworICAgICAgICAgICAgJ3NwZWNpYWwgbWVhbmluZywgc3VjaCBhcyBuZXdsaW5lLCBiYWNrc2xhc2ggaXRzZWxmLCBvciB0aGUgcXVvdGVcbicKKyAgICAgICAgICAgICdjaGFyYWN0ZXIuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQnl0ZXMgbGl0ZXJhbHMgYXJlIGFsd2F5cyBwcmVmaXhlZCB3aXRoICJcJ2JcJyIgb3IgIlwnQlwnIjsgdGhleSAnCisgICAgICAgICAgICAncHJvZHVjZVxuJworICAgICAgICAgICAgJ2FuIGluc3RhbmNlIG9mIHRoZSAiYnl0ZXMiIHR5cGUgaW5zdGVhZCBvZiB0aGUgInN0ciIgdHlwZS4gIFRoZXkgJworICAgICAgICAgICAgJ21heVxuJworICAgICAgICAgICAgJ29ubHkgY29udGFpbiBBU0NJSSBjaGFyYWN0ZXJzOyBieXRlcyB3aXRoIGEgbnVtZXJpYyB2YWx1ZSBvZiAxMjggJworICAgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgICAnZ3JlYXRlciBtdXN0IGJlIGV4cHJlc3NlZCB3aXRoIGVzY2FwZXMuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnQXMgb2YgUHl0aG9uIDMuMyBpdCBpcyBwb3NzaWJsZSBhZ2FpbiB0byBwcmVmaXggc3RyaW5nIGxpdGVyYWxzICcKKyAgICAgICAgICAgICd3aXRoIGFcbicKKyAgICAgICAgICAgICcidSIgcHJlZml4IHRvIHNpbXBsaWZ5IG1haW50ZW5hbmNlIG9mIGR1YWwgMi54IGFuZCAzLnggJworICAgICAgICAgICAgJ2NvZGViYXNlcy5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdCb3RoIHN0cmluZyBhbmQgYnl0ZXMgbGl0ZXJhbHMgbWF5IG9wdGlvbmFsbHkgYmUgcHJlZml4ZWQgd2l0aCBhXG4nCisgICAgICAgICAgICAnbGV0dGVyICJcJ3JcJyIgb3IgIlwnUlwnIjsgc3VjaCBzdHJpbmdzIGFyZSBjYWxsZWQgKnJhdyBzdHJpbmdzKiAnCisgICAgICAgICAgICAnYW5kIHRyZWF0XG4nCisgICAgICAgICAgICAnYmFja3NsYXNoZXMgYXMgbGl0ZXJhbCBjaGFyYWN0ZXJzLiAgQXMgYSByZXN1bHQsIGluIHN0cmluZyAnCisgICAgICAgICAgICAnbGl0ZXJhbHMsXG4nCisgICAgICAgICAgICAnIlwnXFxVXCciIGFuZCAiXCdcXHVcJyIgZXNjYXBlcyBpbiByYXcgc3RyaW5ncyBhcmUgbm90IHRyZWF0ZWQgJworICAgICAgICAgICAgJ3NwZWNpYWxseS5cbicKKyAgICAgICAgICAgICJHaXZlbiB0aGF0IFB5dGhvbiAyLngncyByYXcgdW5pY29kZSBsaXRlcmFscyBiZWhhdmUgZGlmZmVyZW50bHkgIgorICAgICAgICAgICAgJ3RoYW5cbicKKyAgICAgICAgICAgICdQeXRob24gMy54XCdzIHRoZSAiXCd1clwnIiBzeW50YXggaXMgbm90IHN1cHBvcnRlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFRoZSAiXCdyYlwnIiBwcmVmaXggb2YgcmF3IGJ5dGVzIGxpdGVyYWxzIGhhcyAnCisgICAgICAgICAgICAnYmVlblxuJworICAgICAgICAgICAgJ2FkZGVkIGFzIGEgc3lub255bSBvZiAiXCdiclwnIi5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdOZXcgaW4gdmVyc2lvbiAzLjM6IFN1cHBvcnQgZm9yIHRoZSB1bmljb2RlIGxlZ2FjeSBsaXRlcmFsXG4nCisgICAgICAgICAgICAnKCJ1XCd2YWx1ZVwnIikgd2FzIHJlaW50cm9kdWNlZCB0byBzaW1wbGlmeSB0aGUgbWFpbnRlbmFuY2Ugb2YgJworICAgICAgICAgICAgJ2R1YWxcbicKKyAgICAgICAgICAgICdQeXRob24gMi54IGFuZCAzLnggY29kZWJhc2VzLiBTZWUgKipQRVAgNDE0KiogZm9yIG1vcmUgJworICAgICAgICAgICAgJ2luZm9ybWF0aW9uLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0Egc3RyaW5nIGxpdGVyYWwgd2l0aCAiXCdmXCciIG9yICJcJ0ZcJyIgaW4gaXRzIHByZWZpeCBpcyBhICcKKyAgICAgICAgICAgICcqZm9ybWF0dGVkXG4nCisgICAgICAgICAgICAnc3RyaW5nIGxpdGVyYWwqOyBzZWUgRm9ybWF0dGVkIHN0cmluZyBsaXRlcmFscy4gIFRoZSAiXCdmXCciIG1heSAnCisgICAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAgICdjb21iaW5lZCB3aXRoICJcJ3JcJyIsIGJ1dCBub3Qgd2l0aCAiXCdiXCciIG9yICJcJ3VcJyIsIHRoZXJlZm9yZSAnCisgICAgICAgICAgICAncmF3XG4nCisgICAgICAgICAgICAnZm9ybWF0dGVkIHN0cmluZ3MgYXJlIHBvc3NpYmxlLCBidXQgZm9ybWF0dGVkIGJ5dGVzIGxpdGVyYWxzIGFyZSAnCisgICAgICAgICAgICAnbm90LlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0luIHRyaXBsZS1xdW90ZWQgbGl0ZXJhbHMsIHVuZXNjYXBlZCBuZXdsaW5lcyBhbmQgcXVvdGVzIGFyZSAnCisgICAgICAgICAgICAnYWxsb3dlZFxuJworICAgICAgICAgICAgJyhhbmQgYXJlIHJldGFpbmVkKSwgZXhjZXB0IHRoYXQgdGhyZWUgdW5lc2NhcGVkIHF1b3RlcyBpbiBhIHJvd1xuJworICAgICAgICAgICAgJ3Rlcm1pbmF0ZSB0aGUgbGl0ZXJhbC4gIChBICJxdW90ZSIgaXMgdGhlIGNoYXJhY3RlciB1c2VkIHRvIG9wZW4gJworICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgJ2xpdGVyYWwsIGkuZS4gZWl0aGVyICJcJyIgb3IgIiIiLilcbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdVbmxlc3MgYW4gIlwnclwnIiBvciAiXCdSXCciIHByZWZpeCBpcyBwcmVzZW50LCBlc2NhcGUgc2VxdWVuY2VzICcKKyAgICAgICAgICAgICdpbiBzdHJpbmdcbicKKyAgICAgICAgICAgICdhbmQgYnl0ZXMgbGl0ZXJhbHMgYXJlIGludGVycHJldGVkIGFjY29yZGluZyB0byBydWxlcyBzaW1pbGFyIHRvICcKKyAgICAgICAgICAgICd0aG9zZVxuJworICAgICAgICAgICAgJ3VzZWQgYnkgU3RhbmRhcmQgQy4gIFRoZSByZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZXMgYXJlOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8IEVzY2FwZSBTZXF1ZW5jZSAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAnCisgICAgICAgICAgICAnfFxuJworICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PStcbicKKyAgICAgICAgICAgICd8ICJcXG5ld2xpbmUiICAgICAgICB8IEJhY2tzbGFzaCBhbmQgbmV3bGluZSBpZ25vcmVkICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxcXCIgICAgICAgICAgICAgIHwgQmFja3NsYXNoICgiXFwiKSAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxcJyIgICAgICAgICAgICAgIHwgU2luZ2xlIHF1b3RlICgiXCciKSAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFwiIiAgICAgICAgICAgICAgfCBEb3VibGUgcXVvdGUgKCIiIikgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcYSIgICAgICAgICAgICAgIHwgQVNDSUkgQmVsbCAoQkVMKSAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXGIiICAgICAgICAgICAgICB8IEFTQ0lJIEJhY2tzcGFjZSAoQlMpICAgICAgICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFxmIiAgICAgICAgICAgICAgfCBBU0NJSSBGb3JtZmVlZCAoRkYpICAgICAgICAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcbiIgICAgICAgICAgICAgIHwgQVNDSUkgTGluZWZlZWQgKExGKSAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXHIiICAgICAgICAgICAgICB8IEFTQ0lJIENhcnJpYWdlIFJldHVybiAoQ1IpICAgICAgICAnCisgICAgICAgICAgICAnfCAgICAgICAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx0IiAgICAgICAgICAgICAgfCBBU0NJSSBIb3Jpem9udGFsIFRhYiAoVEFCKSAgICAgICAgJworICAgICAgICAgICAgJ3wgICAgICAgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdiIgICAgICAgICAgICAgIHwgQVNDSUkgVmVydGljYWwgVGFiIChWVCkgICAgICAgICAgICcKKyAgICAgICAgICAgICd8ICAgICAgICAgfFxuJworICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICd8ICJcXG9vbyIgICAgICAgICAgICB8IENoYXJhY3RlciB3aXRoIG9jdGFsIHZhbHVlICpvb28qICB8ICcKKyAgICAgICAgICAgICcoMSwzKSAgIHxcbicKKyAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAnfCAiXFx4aGgiICAgICAgICAgICAgfCBDaGFyYWN0ZXIgd2l0aCBoZXggdmFsdWUgKmhoKiAgICAgfCAnCisgICAgICAgICAgICAnKDIsMykgICB8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ0VzY2FwZSBzZXF1ZW5jZXMgb25seSByZWNvZ25pemVkIGluIHN0cmluZyBsaXRlcmFscyBhcmU6XG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgRXNjYXBlIFNlcXVlbmNlICAgfCBNZWFuaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09K1xuJworICAgICAgICAgICAgJ3wgIlxcTntuYW1lfSIgICAgICAgIHwgQ2hhcmFjdGVyIG5hbWVkICpuYW1lKiBpbiB0aGUgICAgIHwgJworICAgICAgICAgICAgJyg0KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCBVbmljb2RlIGRhdGFiYXNlICAgICAgICAgICAgICAgICAgfCAgICAgICAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcdXh4eHgiICAgICAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMTYtYml0IGhleCB2YWx1ZSAgIHwgJworICAgICAgICAgICAgJyg1KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCAqeHh4eCogICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ3wgIlxcVXh4eHh4eHh4IiAgICAgIHwgQ2hhcmFjdGVyIHdpdGggMzItYml0IGhleCB2YWx1ZSAgIHwgJworICAgICAgICAgICAgJyg2KSAgICAgfFxuJworICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgfCAqeHh4eHh4eHgqICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICcKKyAgICAgICAgICAgICd8XG4nCisgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzEuIEFzIGluIFN0YW5kYXJkIEMsIHVwIHRvIHRocmVlIG9jdGFsIGRpZ2l0cyBhcmUgYWNjZXB0ZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnMi4gVW5saWtlIGluIFN0YW5kYXJkIEMsIGV4YWN0bHkgdHdvIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzMuIEluIGEgYnl0ZXMgbGl0ZXJhbCwgaGV4YWRlY2ltYWwgYW5kIG9jdGFsIGVzY2FwZXMgZGVub3RlIHRoZVxuJworICAgICAgICAgICAgJyAgIGJ5dGUgd2l0aCB0aGUgZ2l2ZW4gdmFsdWUuIEluIGEgc3RyaW5nIGxpdGVyYWwsIHRoZXNlIGVzY2FwZXNcbicKKyAgICAgICAgICAgICcgICBkZW5vdGUgYSBVbmljb2RlIGNoYXJhY3RlciB3aXRoIHRoZSBnaXZlbiB2YWx1ZS5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICc0LiBDaGFuZ2VkIGluIHZlcnNpb24gMy4zOiBTdXBwb3J0IGZvciBuYW1lIGFsaWFzZXMgWzFdIGhhcyBiZWVuXG4nCisgICAgICAgICAgICAnICAgYWRkZWQuXG4nCisgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAnNS4gRXhhY3RseSBmb3VyIGhleCBkaWdpdHMgYXJlIHJlcXVpcmVkLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJzYuIEFueSBVbmljb2RlIGNoYXJhY3RlciBjYW4gYmUgZW5jb2RlZCB0aGlzIHdheS4gIEV4YWN0bHkgZWlnaHRcbicKKyAgICAgICAgICAgICcgICBoZXggZGlnaXRzIGFyZSByZXF1aXJlZC5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdVbmxpa2UgU3RhbmRhcmQgQywgYWxsIHVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIGFyZSBsZWZ0IGluICcKKyAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICdzdHJpbmcgdW5jaGFuZ2VkLCBpLmUuLCAqdGhlIGJhY2tzbGFzaCBpcyBsZWZ0IGluIHRoZSByZXN1bHQqLiAgJworICAgICAgICAgICAgJyhUaGlzXG4nCisgICAgICAgICAgICAnYmVoYXZpb3IgaXMgdXNlZnVsIHdoZW4gZGVidWdnaW5nOiBpZiBhbiBlc2NhcGUgc2VxdWVuY2UgaXMgJworICAgICAgICAgICAgJ21pc3R5cGVkLFxuJworICAgICAgICAgICAgJ3RoZSByZXN1bHRpbmcgb3V0cHV0IGlzIG1vcmUgZWFzaWx5IHJlY29nbml6ZWQgYXMgYnJva2VuLikgIEl0IGlzICcKKyAgICAgICAgICAgICdhbHNvXG4nCisgICAgICAgICAgICAnaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB0aGUgZXNjYXBlIHNlcXVlbmNlcyBvbmx5IHJlY29nbml6ZWQgaW4gJworICAgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICAgJ2xpdGVyYWxzIGZhbGwgaW50byB0aGUgY2F0ZWdvcnkgb2YgdW5yZWNvZ25pemVkIGVzY2FwZXMgZm9yICcKKyAgICAgICAgICAgICdieXRlc1xuJworICAgICAgICAgICAgJ2xpdGVyYWxzLlxuJworICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgJyAgIENoYW5nZWQgaW4gdmVyc2lvbiAzLjY6IFVucmVjb2duaXplZCBlc2NhcGUgc2VxdWVuY2VzIHByb2R1Y2UgJworICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICcgICBEZXByZWNhdGlvbldhcm5pbmcuICBJbiBzb21lIGZ1dHVyZSB2ZXJzaW9uIG9mIFB5dGhvbiB0aGV5ICcKKyAgICAgICAgICAgICd3aWxsIGJlXG4nCisgICAgICAgICAgICAnICAgYSBTeW50YXhFcnJvci5cbicKKyAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICdFdmVuIGluIGEgcmF3IGxpdGVyYWwsIHF1b3RlcyBjYW4gYmUgZXNjYXBlZCB3aXRoIGEgYmFja3NsYXNoLCAnCisgICAgICAgICAgICAnYnV0IHRoZVxuJworICAgICAgICAgICAgJ2JhY2tzbGFzaCByZW1haW5zIGluIHRoZSByZXN1bHQ7IGZvciBleGFtcGxlLCAiciJcXCIiIiBpcyBhICcKKyAgICAgICAgICAgICd2YWxpZFxuJworICAgICAgICAgICAgJ3N0cmluZyBsaXRlcmFsIGNvbnNpc3Rpbmcgb2YgdHdvIGNoYXJhY3RlcnM6IGEgYmFja3NsYXNoIGFuZCBhICcKKyAgICAgICAgICAgICdkb3VibGVcbicKKyAgICAgICAgICAgICdxdW90ZTsgInIiXFwiIiBpcyBub3QgYSB2YWxpZCBzdHJpbmcgbGl0ZXJhbCAoZXZlbiBhIHJhdyBzdHJpbmcgJworICAgICAgICAgICAgJ2Nhbm5vdFxuJworICAgICAgICAgICAgJ2VuZCBpbiBhbiBvZGQgbnVtYmVyIG9mIGJhY2tzbGFzaGVzKS4gIFNwZWNpZmljYWxseSwgKmEgcmF3ICcKKyAgICAgICAgICAgICdsaXRlcmFsXG4nCisgICAgICAgICAgICAnY2Fubm90IGVuZCBpbiBhIHNpbmdsZSBiYWNrc2xhc2gqIChzaW5jZSB0aGUgYmFja3NsYXNoIHdvdWxkICcKKyAgICAgICAgICAgICdlc2NhcGVcbicKKyAgICAgICAgICAgICd0aGUgZm9sbG93aW5nIHF1b3RlIGNoYXJhY3RlcikuICBOb3RlIGFsc28gdGhhdCBhIHNpbmdsZSAnCisgICAgICAgICAgICAnYmFja3NsYXNoXG4nCisgICAgICAgICAgICAnZm9sbG93ZWQgYnkgYSBuZXdsaW5lIGlzIGludGVycHJldGVkIGFzIHRob3NlIHR3byBjaGFyYWN0ZXJzIGFzICcKKyAgICAgICAgICAgICdwYXJ0XG4nCisgICAgICAgICAgICAnb2YgdGhlIGxpdGVyYWwsICpub3QqIGFzIGEgbGluZSBjb250aW51YXRpb24uXG4nLAorICdzdWJzY3JpcHRpb25zJzogJ1xuJworICAgICAgICAgICAgICAgICAgJ1N1YnNjcmlwdGlvbnNcbicKKyAgICAgICAgICAgICAgICAgICcqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnQSBzdWJzY3JpcHRpb24gc2VsZWN0cyBhbiBpdGVtIG9mIGEgc2VxdWVuY2UgKHN0cmluZywgdHVwbGUgJworICAgICAgICAgICAgICAgICAgJ29yIGxpc3QpXG4nCisgICAgICAgICAgICAgICAgICAnb3IgbWFwcGluZyAoZGljdGlvbmFyeSkgb2JqZWN0OlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJyAgIHN1YnNjcmlwdGlvbiA6Oj0gcHJpbWFyeSAiWyIgZXhwcmVzc2lvbl9saXN0ICJdIlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgJ1RoZSBwcmltYXJ5IG11c3QgZXZhbHVhdGUgdG8gYW4gb2JqZWN0IHRoYXQgc3VwcG9ydHMgJworICAgICAgICAgICAgICAgICAgJ3N1YnNjcmlwdGlvblxuJworICAgICAgICAgICAgICAgICAgJyhsaXN0cyBvciBkaWN0aW9uYXJpZXMgZm9yIGV4YW1wbGUpLiAgVXNlci1kZWZpbmVkIG9iamVjdHMgJworICAgICAgICAgICAgICAgICAgJ2NhbiBzdXBwb3J0XG4nCisgICAgICAgICAgICAgICAgICAnc3Vic2NyaXB0aW9uIGJ5IGRlZmluaW5nIGEgIl9fZ2V0aXRlbV9fKCkiIG1ldGhvZC5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdGb3IgYnVpbHQtaW4gb2JqZWN0cywgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBvYmplY3RzIHRoYXQgJworICAgICAgICAgICAgICAgICAgJ3N1cHBvcnRcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb246XG4nCisgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAnSWYgdGhlIHByaW1hcnkgaXMgYSBtYXBwaW5nLCB0aGUgZXhwcmVzc2lvbiBsaXN0IG11c3QgJworICAgICAgICAgICAgICAgICAgJ2V2YWx1YXRlIHRvIGFuXG4nCisgICAgICAgICAgICAgICAgICAnb2JqZWN0IHdob3NlIHZhbHVlIGlzIG9uZSBvZiB0aGUga2V5cyBvZiB0aGUgbWFwcGluZywgYW5kICcKKyAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICdzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgdmFsdWUgaW4gdGhlIG1hcHBpbmcgdGhhdCAnCisgICAgICAgICAgICAgICAgICAnY29ycmVzcG9uZHMgdG8gdGhhdFxuJworICAgICAgICAgICAgICAgICAgJ2tleS4gIChUaGUgZXhwcmVzc2lvbiBsaXN0IGlzIGEgdHVwbGUgZXhjZXB0IGlmIGl0IGhhcyAnCisgICAgICAgICAgICAgICAgICAnZXhhY3RseSBvbmVcbicKKyAgICAgICAgICAgICAgICAgICdpdGVtLilcbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdJZiB0aGUgcHJpbWFyeSBpcyBhIHNlcXVlbmNlLCB0aGUgZXhwcmVzc2lvbiAobGlzdCkgbXVzdCAnCisgICAgICAgICAgICAgICAgICAnZXZhbHVhdGUgdG9cbicKKyAgICAgICAgICAgICAgICAgICdhbiBpbnRlZ2VyIG9yIGEgc2xpY2UgKGFzIGRpc2N1c3NlZCBpbiB0aGUgZm9sbG93aW5nICcKKyAgICAgICAgICAgICAgICAgICdzZWN0aW9uKS5cbicKKyAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICdUaGUgZm9ybWFsIHN5bnRheCBtYWtlcyBubyBzcGVjaWFsIHByb3Zpc2lvbiBmb3IgbmVnYXRpdmUgJworICAgICAgICAgICAgICAgICAgJ2luZGljZXMgaW5cbicKKyAgICAgICAgICAgICAgICAgICdzZXF1ZW5jZXM7IGhvd2V2ZXIsIGJ1aWx0LWluIHNlcXVlbmNlcyBhbGwgcHJvdmlkZSBhICcKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2QgdGhhdCBpbnRlcnByZXRzIG5lZ2F0aXZlIGluZGljZXMgYnkgYWRkaW5nIHRoZSAnCisgICAgICAgICAgICAgICAgICAnbGVuZ3RoIG9mIHRoZVxuJworICAgICAgICAgICAgICAgICAgJ3NlcXVlbmNlIHRvIHRoZSBpbmRleCAoc28gdGhhdCAieFstMV0iIHNlbGVjdHMgdGhlIGxhc3QgJworICAgICAgICAgICAgICAgICAgJ2l0ZW0gb2YgIngiKS5cbicKKyAgICAgICAgICAgICAgICAgICdUaGUgcmVzdWx0aW5nIHZhbHVlIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIGxlc3MgdGhhbiAnCisgICAgICAgICAgICAgICAgICAndGhlIG51bWJlclxuJworICAgICAgICAgICAgICAgICAgJ29mIGl0ZW1zIGluIHRoZSBzZXF1ZW5jZSwgYW5kIHRoZSBzdWJzY3JpcHRpb24gc2VsZWN0cyB0aGUgJworICAgICAgICAgICAgICAgICAgJ2l0ZW0gd2hvc2VcbicKKyAgICAgICAgICAgICAgICAgICdpbmRleCBpcyB0aGF0IHZhbHVlIChjb3VudGluZyBmcm9tIHplcm8pLiBTaW5jZSB0aGUgc3VwcG9ydCAnCisgICAgICAgICAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgaW5kaWNlcyBhbmQgc2xpY2luZyBvY2N1cnMgaW4gdGhlIG9iamVjdCdzICIKKyAgICAgICAgICAgICAgICAgICciX19nZXRpdGVtX18oKSJcbicKKyAgICAgICAgICAgICAgICAgICdtZXRob2QsIHN1YmNsYXNzZXMgb3ZlcnJpZGluZyB0aGlzIG1ldGhvZCB3aWxsIG5lZWQgdG8gJworICAgICAgICAgICAgICAgICAgJ2V4cGxpY2l0bHkgYWRkXG4nCisgICAgICAgICAgICAgICAgICAndGhhdCBzdXBwb3J0LlxuJworICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgIkEgc3RyaW5nJ3MgaXRlbXMgYXJlIGNoYXJhY3RlcnMuICBBIGNoYXJhY3RlciBpcyBub3QgYSAiCisgICAgICAgICAgICAgICAgICAnc2VwYXJhdGUgZGF0YVxuJworICAgICAgICAgICAgICAgICAgJ3R5cGUgYnV0IGEgc3RyaW5nIG9mIGV4YWN0bHkgb25lIGNoYXJhY3Rlci5cbicsCisgJ3RydXRoJzogJ1xuJworICAgICAgICAgICdUcnV0aCBWYWx1ZSBUZXN0aW5nXG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FueSBvYmplY3QgY2FuIGJlIHRlc3RlZCBmb3IgdHJ1dGggdmFsdWUsIGZvciB1c2UgaW4gYW4gImlmIiBvclxuJworICAgICAgICAgICcid2hpbGUiIGNvbmRpdGlvbiBvciBhcyBvcGVyYW5kIG9mIHRoZSBCb29sZWFuIG9wZXJhdGlvbnMgYmVsb3cuICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJ2ZvbGxvd2luZyB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgZmFsc2U6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqICJOb25lIlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiAiRmFsc2UiXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIHplcm8gb2YgYW55IG51bWVyaWMgdHlwZSwgZm9yIGV4YW1wbGUsICIwIiwgIjAuMCIsICIwaiIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcqIGFueSBlbXB0eSBzZXF1ZW5jZSwgZm9yIGV4YW1wbGUsICJcJ1wnIiwgIigpIiwgIltdIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyogYW55IGVtcHR5IG1hcHBpbmcsIGZvciBleGFtcGxlLCAie30iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnKiBpbnN0YW5jZXMgb2YgdXNlci1kZWZpbmVkIGNsYXNzZXMsIGlmIHRoZSBjbGFzcyBkZWZpbmVzIGFcbicKKyAgICAgICAgICAnICAiX19ib29sX18oKSIgb3IgIl9fbGVuX18oKSIgbWV0aG9kLCB3aGVuIHRoYXQgbWV0aG9kIHJldHVybnMgdGhlXG4nCisgICAgICAgICAgJyAgaW50ZWdlciB6ZXJvIG9yICJib29sIiB2YWx1ZSAiRmFsc2UiLiBbMV1cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FsbCBvdGhlciB2YWx1ZXMgYXJlIGNvbnNpZGVyZWQgdHJ1ZSAtLS0gc28gb2JqZWN0cyBvZiBtYW55IHR5cGVzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJ2Fsd2F5cyB0cnVlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnT3BlcmF0aW9ucyBhbmQgYnVpbHQtaW4gZnVuY3Rpb25zIHRoYXQgaGF2ZSBhIEJvb2xlYW4gcmVzdWx0ICcKKyAgICAgICAgICAnYWx3YXlzXG4nCisgICAgICAgICAgJ3JldHVybiAiMCIgb3IgIkZhbHNlIiBmb3IgZmFsc2UgYW5kICIxIiBvciAiVHJ1ZSIgZm9yIHRydWUsIHVubGVzc1xuJworICAgICAgICAgICdvdGhlcndpc2Ugc3RhdGVkLiAoSW1wb3J0YW50IGV4Y2VwdGlvbjogdGhlIEJvb2xlYW4gb3BlcmF0aW9ucyAnCisgICAgICAgICAgJyJvciJcbicKKyAgICAgICAgICAnYW5kICJhbmQiIGFsd2F5cyByZXR1cm4gb25lIG9mIHRoZWlyIG9wZXJhbmRzLilcbicsCisgJ3RyeSc6ICdcbicKKyAgICAgICAgJ1RoZSAidHJ5IiBzdGF0ZW1lbnRcbicKKyAgICAgICAgJyoqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJ0cnkiIHN0YXRlbWVudCBzcGVjaWZpZXMgZXhjZXB0aW9uIGhhbmRsZXJzIGFuZC9vciBjbGVhbnVwIGNvZGVcbicKKyAgICAgICAgJ2ZvciBhIGdyb3VwIG9mIHN0YXRlbWVudHM6XG4nCisgICAgICAgICdcbicKKyAgICAgICAgJyAgIHRyeV9zdG10ICA6Oj0gdHJ5MV9zdG10IHwgdHJ5Ml9zdG10XG4nCisgICAgICAgICcgICB0cnkxX3N0bXQgOjo9ICJ0cnkiICI6IiBzdWl0ZVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICAoImV4Y2VwdCIgW2V4cHJlc3Npb24gWyJhcyIgaWRlbnRpZmllcl1dICI6IiAnCisgICAgICAgICdzdWl0ZSkrXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAnICAgICAgICAgICAgICAgICBbImZpbmFsbHkiICI6IiBzdWl0ZV1cbicKKyAgICAgICAgJyAgIHRyeTJfc3RtdCA6Oj0gInRyeSIgIjoiIHN1aXRlXG4nCisgICAgICAgICcgICAgICAgICAgICAgICAgICJmaW5hbGx5IiAiOiIgc3VpdGVcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnVGhlICJleGNlcHQiIGNsYXVzZShzKSBzcGVjaWZ5IG9uZSBvciBtb3JlIGV4Y2VwdGlvbiBoYW5kbGVycy4gV2hlbiAnCisgICAgICAgICdub1xuJworICAgICAgICAnZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgY2xhdXNlLCBubyBleGNlcHRpb24gaGFuZGxlciBpc1xuJworICAgICAgICAnZXhlY3V0ZWQuIFdoZW4gYW4gZXhjZXB0aW9uIG9jY3VycyBpbiB0aGUgInRyeSIgc3VpdGUsIGEgc2VhcmNoIGZvciAnCisgICAgICAgICdhblxuJworICAgICAgICAnZXhjZXB0aW9uIGhhbmRsZXIgaXMgc3RhcnRlZC4gIFRoaXMgc2VhcmNoIGluc3BlY3RzIHRoZSBleGNlcHQgJworICAgICAgICAnY2xhdXNlc1xuJworICAgICAgICAnaW4gdHVybiB1bnRpbCBvbmUgaXMgZm91bmQgdGhhdCBtYXRjaGVzIHRoZSBleGNlcHRpb24uICBBbiAnCisgICAgICAgICdleHByZXNzaW9uLVxuJworICAgICAgICAnbGVzcyBleGNlcHQgY2xhdXNlLCBpZiBwcmVzZW50LCBtdXN0IGJlIGxhc3Q7IGl0IG1hdGNoZXMgYW55XG4nCisgICAgICAgICdleGNlcHRpb24uICBGb3IgYW4gZXhjZXB0IGNsYXVzZSB3aXRoIGFuIGV4cHJlc3Npb24sIHRoYXQgZXhwcmVzc2lvblxuJworICAgICAgICAnaXMgZXZhbHVhdGVkLCBhbmQgdGhlIGNsYXVzZSBtYXRjaGVzIHRoZSBleGNlcHRpb24gaWYgdGhlIHJlc3VsdGluZ1xuJworICAgICAgICAnb2JqZWN0IGlzICJjb21wYXRpYmxlIiB3aXRoIHRoZSBleGNlcHRpb24uICBBbiBvYmplY3QgaXMgY29tcGF0aWJsZVxuJworICAgICAgICAnd2l0aCBhbiBleGNlcHRpb24gaWYgaXQgaXMgdGhlIGNsYXNzIG9yIGEgYmFzZSBjbGFzcyBvZiB0aGUgJworICAgICAgICAnZXhjZXB0aW9uXG4nCisgICAgICAgICdvYmplY3Qgb3IgYSB0dXBsZSBjb250YWluaW5nIGFuIGl0ZW0gY29tcGF0aWJsZSB3aXRoIHRoZSBleGNlcHRpb24uXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ0lmIG5vIGV4Y2VwdCBjbGF1c2UgbWF0Y2hlcyB0aGUgZXhjZXB0aW9uLCB0aGUgc2VhcmNoIGZvciBhbiAnCisgICAgICAgICdleGNlcHRpb25cbicKKyAgICAgICAgJ2hhbmRsZXIgY29udGludWVzIGluIHRoZSBzdXJyb3VuZGluZyBjb2RlIGFuZCBvbiB0aGUgaW52b2NhdGlvbiAnCisgICAgICAgICdzdGFjay5cbicKKyAgICAgICAgJ1sxXVxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiB0aGUgZXZhbHVhdGlvbiBvZiBhbiBleHByZXNzaW9uIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhjZXB0IGNsYXVzZVxuJworICAgICAgICAncmFpc2VzIGFuIGV4Y2VwdGlvbiwgdGhlIG9yaWdpbmFsIHNlYXJjaCBmb3IgYSBoYW5kbGVyIGlzIGNhbmNlbGVkICcKKyAgICAgICAgJ2FuZFxuJworICAgICAgICAnYSBzZWFyY2ggc3RhcnRzIGZvciB0aGUgbmV3IGV4Y2VwdGlvbiBpbiB0aGUgc3Vycm91bmRpbmcgY29kZSBhbmQgb25cbicKKyAgICAgICAgJ3RoZSBjYWxsIHN0YWNrIChpdCBpcyB0cmVhdGVkIGFzIGlmIHRoZSBlbnRpcmUgInRyeSIgc3RhdGVtZW50ICcKKyAgICAgICAgJ3JhaXNlZFxuJworICAgICAgICAndGhlIGV4Y2VwdGlvbikuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1doZW4gYSBtYXRjaGluZyBleGNlcHQgY2xhdXNlIGlzIGZvdW5kLCB0aGUgZXhjZXB0aW9uIGlzIGFzc2lnbmVkIHRvXG4nCisgICAgICAgICd0aGUgdGFyZ2V0IHNwZWNpZmllZCBhZnRlciB0aGUgImFzIiBrZXl3b3JkIGluIHRoYXQgZXhjZXB0IGNsYXVzZSwgJworICAgICAgICAnaWZcbicKKyAgICAgICAgInByZXNlbnQsIGFuZCB0aGUgZXhjZXB0IGNsYXVzZSdzIHN1aXRlIGlzIGV4ZWN1dGVkLiAgQWxsIGV4Y2VwdFxuIgorICAgICAgICAnY2xhdXNlcyBtdXN0IGhhdmUgYW4gZXhlY3V0YWJsZSBibG9jay4gIFdoZW4gdGhlIGVuZCBvZiB0aGlzIGJsb2NrICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdyZWFjaGVkLCBleGVjdXRpb24gY29udGludWVzIG5vcm1hbGx5IGFmdGVyIHRoZSBlbnRpcmUgdHJ5ICcKKyAgICAgICAgJ3N0YXRlbWVudC5cbicKKyAgICAgICAgJyhUaGlzIG1lYW5zIHRoYXQgaWYgdHdvIG5lc3RlZCBoYW5kbGVycyBleGlzdCBmb3IgdGhlIHNhbWUgJworICAgICAgICAnZXhjZXB0aW9uLFxuJworICAgICAgICAnYW5kIHRoZSBleGNlcHRpb24gb2NjdXJzIGluIHRoZSB0cnkgY2xhdXNlIG9mIHRoZSBpbm5lciBoYW5kbGVyLCB0aGVcbicKKyAgICAgICAgJ291dGVyIGhhbmRsZXIgd2lsbCBub3QgaGFuZGxlIHRoZSBleGNlcHRpb24uKVxuJworICAgICAgICAnXG4nCisgICAgICAgICdXaGVuIGFuIGV4Y2VwdGlvbiBoYXMgYmVlbiBhc3NpZ25lZCB1c2luZyAiYXMgdGFyZ2V0IiwgaXQgaXMgY2xlYXJlZFxuJworICAgICAgICAnYXQgdGhlIGVuZCBvZiB0aGUgZXhjZXB0IGNsYXVzZS4gIFRoaXMgaXMgYXMgaWZcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgJyAgICAgICBmb29cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnd2FzIHRyYW5zbGF0ZWQgdG9cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgZXhjZXB0IEUgYXMgTjpcbicKKyAgICAgICAgJyAgICAgICB0cnk6XG4nCisgICAgICAgICcgICAgICAgICAgIGZvb1xuJworICAgICAgICAnICAgICAgIGZpbmFsbHk6XG4nCisgICAgICAgICcgICAgICAgICAgIGRlbCBOXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoaXMgbWVhbnMgdGhlIGV4Y2VwdGlvbiBtdXN0IGJlIGFzc2lnbmVkIHRvIGEgZGlmZmVyZW50IG5hbWUgdG8gYmVcbicKKyAgICAgICAgJ2FibGUgdG8gcmVmZXIgdG8gaXQgYWZ0ZXIgdGhlIGV4Y2VwdCBjbGF1c2UuICBFeGNlcHRpb25zIGFyZSBjbGVhcmVkXG4nCisgICAgICAgICdiZWNhdXNlIHdpdGggdGhlIHRyYWNlYmFjayBhdHRhY2hlZCB0byB0aGVtLCB0aGV5IGZvcm0gYSByZWZlcmVuY2VcbicKKyAgICAgICAgJ2N5Y2xlIHdpdGggdGhlIHN0YWNrIGZyYW1lLCBrZWVwaW5nIGFsbCBsb2NhbHMgaW4gdGhhdCBmcmFtZSBhbGl2ZVxuJworICAgICAgICAndW50aWwgdGhlIG5leHQgZ2FyYmFnZSBjb2xsZWN0aW9uIG9jY3Vycy5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAiQmVmb3JlIGFuIGV4Y2VwdCBjbGF1c2UncyBzdWl0ZSBpcyBleGVjdXRlZCwgZGV0YWlscyBhYm91dCB0aGVcbiIKKyAgICAgICAgJ2V4Y2VwdGlvbiBhcmUgc3RvcmVkIGluIHRoZSAic3lzIiBtb2R1bGUgYW5kIGNhbiBiZSBhY2Nlc3NlZCB2aWFcbicKKyAgICAgICAgJyJzeXMuZXhjX2luZm8oKSIuICJzeXMuZXhjX2luZm8oKSIgcmV0dXJucyBhIDMtdHVwbGUgY29uc2lzdGluZyBvZiAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJ2V4Y2VwdGlvbiBjbGFzcywgdGhlIGV4Y2VwdGlvbiBpbnN0YW5jZSBhbmQgYSB0cmFjZWJhY2sgb2JqZWN0IChzZWVcbicKKyAgICAgICAgJ3NlY3Rpb24gVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5KSBpZGVudGlmeWluZyB0aGUgcG9pbnQgaW4gdGhlXG4nCisgICAgICAgICdwcm9ncmFtIHdoZXJlIHRoZSBleGNlcHRpb24gb2NjdXJyZWQuICAic3lzLmV4Y19pbmZvKCkiIHZhbHVlcyBhcmVcbicKKyAgICAgICAgJ3Jlc3RvcmVkIHRvIHRoZWlyIHByZXZpb3VzIHZhbHVlcyAoYmVmb3JlIHRoZSBjYWxsKSB3aGVuIHJldHVybmluZ1xuJworICAgICAgICAnZnJvbSBhIGZ1bmN0aW9uIHRoYXQgaGFuZGxlZCBhbiBleGNlcHRpb24uXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBvcHRpb25hbCAiZWxzZSIgY2xhdXNlIGlzIGV4ZWN1dGVkIGlmIGFuZCB3aGVuIGNvbnRyb2wgZmxvd3Mgb2ZmXG4nCisgICAgICAgICd0aGUgZW5kIG9mIHRoZSAidHJ5IiBjbGF1c2UuIFsyXSBFeGNlcHRpb25zIGluIHRoZSAiZWxzZSIgY2xhdXNlIGFyZVxuJworICAgICAgICAnbm90IGhhbmRsZWQgYnkgdGhlIHByZWNlZGluZyAiZXhjZXB0IiBjbGF1c2VzLlxuJworICAgICAgICAnXG4nCisgICAgICAgICdJZiAiZmluYWxseSIgaXMgcHJlc2VudCwgaXQgc3BlY2lmaWVzIGEgXCdjbGVhbnVwXCcgaGFuZGxlci4gIFRoZSAnCisgICAgICAgICcidHJ5IlxuJworICAgICAgICAnY2xhdXNlIGlzIGV4ZWN1dGVkLCBpbmNsdWRpbmcgYW55ICJleGNlcHQiIGFuZCAiZWxzZSIgY2xhdXNlcy4gIElmICcKKyAgICAgICAgJ2FuXG4nCisgICAgICAgICdleGNlcHRpb24gb2NjdXJzIGluIGFueSBvZiB0aGUgY2xhdXNlcyBhbmQgaXMgbm90IGhhbmRsZWQsIHRoZVxuJworICAgICAgICAnZXhjZXB0aW9uIGlzIHRlbXBvcmFyaWx5IHNhdmVkLiBUaGUgImZpbmFsbHkiIGNsYXVzZSBpcyBleGVjdXRlZC4gICcKKyAgICAgICAgJ0lmXG4nCisgICAgICAgICd0aGVyZSBpcyBhIHNhdmVkIGV4Y2VwdGlvbiBpdCBpcyByZS1yYWlzZWQgYXQgdGhlIGVuZCBvZiB0aGUgJworICAgICAgICAnImZpbmFsbHkiXG4nCisgICAgICAgICdjbGF1c2UuICBJZiB0aGUgImZpbmFsbHkiIGNsYXVzZSByYWlzZXMgYW5vdGhlciBleGNlcHRpb24sIHRoZSBzYXZlZFxuJworICAgICAgICAnZXhjZXB0aW9uIGlzIHNldCBhcyB0aGUgY29udGV4dCBvZiB0aGUgbmV3IGV4Y2VwdGlvbi4gSWYgdGhlICcKKyAgICAgICAgJyJmaW5hbGx5IlxuJworICAgICAgICAnY2xhdXNlIGV4ZWN1dGVzIGEgInJldHVybiIgb3IgImJyZWFrIiBzdGF0ZW1lbnQsIHRoZSBzYXZlZCBleGNlcHRpb25cbicKKyAgICAgICAgJ2lzIGRpc2NhcmRlZDpcbicKKyAgICAgICAgJ1xuJworICAgICAgICAnICAgPj4+IGRlZiBmKCk6XG4nCisgICAgICAgICcgICAuLi4gICAgIHRyeTpcbicKKyAgICAgICAgJyAgIC4uLiAgICAgICAgIDEvMFxuJworICAgICAgICAnICAgLi4uICAgICBmaW5hbGx5OlxuJworICAgICAgICAnICAgLi4uICAgICAgICAgcmV0dXJuIDQyXG4nCisgICAgICAgICcgICAuLi5cbicKKyAgICAgICAgJyAgID4+PiBmKClcbicKKyAgICAgICAgJyAgIDQyXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSBleGNlcHRpb24gaW5mb3JtYXRpb24gaXMgbm90IGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbSBkdXJpbmdcbicKKyAgICAgICAgJ2V4ZWN1dGlvbiBvZiB0aGUgImZpbmFsbHkiIGNsYXVzZS5cbicKKyAgICAgICAgJ1xuJworICAgICAgICAnV2hlbiBhICJyZXR1cm4iLCAiYnJlYWsiIG9yICJjb250aW51ZSIgc3RhdGVtZW50IGlzIGV4ZWN1dGVkIGluIHRoZVxuJworICAgICAgICAnInRyeSIgc3VpdGUgb2YgYSAidHJ5Ii4uLiJmaW5hbGx5IiBzdGF0ZW1lbnQsIHRoZSAiZmluYWxseSIgY2xhdXNlICcKKyAgICAgICAgJ2lzXG4nCisgICAgICAgICdhbHNvIGV4ZWN1dGVkIFwnb24gdGhlIHdheSBvdXQuXCcgQSAiY29udGludWUiIHN0YXRlbWVudCBpcyBpbGxlZ2FsICcKKyAgICAgICAgJ2luXG4nCisgICAgICAgICd0aGUgImZpbmFsbHkiIGNsYXVzZS4gKFRoZSByZWFzb24gaXMgYSBwcm9ibGVtIHdpdGggdGhlIGN1cnJlbnRcbicKKyAgICAgICAgJ2ltcGxlbWVudGF0aW9uIC0tLSB0aGlzIHJlc3RyaWN0aW9uIG1heSBiZSBsaWZ0ZWQgaW4gdGhlIGZ1dHVyZSkuXG4nCisgICAgICAgICdcbicKKyAgICAgICAgJ1RoZSByZXR1cm4gdmFsdWUgb2YgYSBmdW5jdGlvbiBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBsYXN0ICJyZXR1cm4iXG4nCisgICAgICAgICdzdGF0ZW1lbnQgZXhlY3V0ZWQuICBTaW5jZSB0aGUgImZpbmFsbHkiIGNsYXVzZSBhbHdheXMgZXhlY3V0ZXMsIGFcbicKKyAgICAgICAgJyJyZXR1cm4iIHN0YXRlbWVudCBleGVjdXRlZCBpbiB0aGUgImZpbmFsbHkiIGNsYXVzZSB3aWxsIGFsd2F5cyBiZSAnCisgICAgICAgICd0aGVcbicKKyAgICAgICAgJ2xhc3Qgb25lIGV4ZWN1dGVkOlxuJworICAgICAgICAnXG4nCisgICAgICAgICcgICA+Pj4gZGVmIGZvbygpOlxuJworICAgICAgICAnICAgLi4uICAgICB0cnk6XG4nCisgICAgICAgICIgICAuLi4gICAgICAgICByZXR1cm4gJ3RyeSdcbiIKKyAgICAgICAgJyAgIC4uLiAgICAgZmluYWxseTpcbicKKyAgICAgICAgIiAgIC4uLiAgICAgICAgIHJldHVybiAnZmluYWxseSdcbiIKKyAgICAgICAgJyAgIC4uLlxuJworICAgICAgICAnICAgPj4+IGZvbygpXG4nCisgICAgICAgICIgICAnZmluYWxseSdcbiIKKyAgICAgICAgJ1xuJworICAgICAgICAnQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBvbiBleGNlcHRpb25zIGNhbiBiZSBmb3VuZCBpbiBzZWN0aW9uXG4nCisgICAgICAgICdFeGNlcHRpb25zLCBhbmQgaW5mb3JtYXRpb24gb24gdXNpbmcgdGhlICJyYWlzZSIgc3RhdGVtZW50IHRvICcKKyAgICAgICAgJ2dlbmVyYXRlXG4nCisgICAgICAgICdleGNlcHRpb25zIG1heSBiZSBmb3VuZCBpbiBzZWN0aW9uIFRoZSByYWlzZSBzdGF0ZW1lbnQuXG4nLAorICd0eXBlcyc6ICdcbicKKyAgICAgICAgICAnVGhlIHN0YW5kYXJkIHR5cGUgaGllcmFyY2h5XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQmVsb3cgaXMgYSBsaXN0IG9mIHRoZSB0eXBlcyB0aGF0IGFyZSBidWlsdCBpbnRvIFB5dGhvbi4gICcKKyAgICAgICAgICAnRXh0ZW5zaW9uXG4nCisgICAgICAgICAgJ21vZHVsZXMgKHdyaXR0ZW4gaW4gQywgSmF2YSwgb3Igb3RoZXIgbGFuZ3VhZ2VzLCBkZXBlbmRpbmcgb24gdGhlXG4nCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uKSBjYW4gZGVmaW5lIGFkZGl0aW9uYWwgdHlwZXMuICBGdXR1cmUgdmVyc2lvbnMgb2ZcbicKKyAgICAgICAgICAnUHl0aG9uIG1heSBhZGQgdHlwZXMgdG8gdGhlIHR5cGUgaGllcmFyY2h5IChlLmcuLCByYXRpb25hbCAnCisgICAgICAgICAgJ251bWJlcnMsXG4nCisgICAgICAgICAgJ2VmZmljaWVudGx5IHN0b3JlZCBhcnJheXMgb2YgaW50ZWdlcnMsIGV0Yy4pLCBhbHRob3VnaCBzdWNoICcKKyAgICAgICAgICAnYWRkaXRpb25zXG4nCisgICAgICAgICAgJ3dpbGwgb2Z0ZW4gYmUgcHJvdmlkZWQgdmlhIHRoZSBzdGFuZGFyZCBsaWJyYXJ5IGluc3RlYWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTb21lIG9mIHRoZSB0eXBlIGRlc2NyaXB0aW9ucyBiZWxvdyBjb250YWluIGEgcGFyYWdyYXBoIGxpc3RpbmdcbicKKyAgICAgICAgICAiJ3NwZWNpYWwgYXR0cmlidXRlcy4nICBUaGVzZSBhcmUgYXR0cmlidXRlcyB0aGF0IHByb3ZpZGUgYWNjZXNzIHRvICIKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJ2ltcGxlbWVudGF0aW9uIGFuZCBhcmUgbm90IGludGVuZGVkIGZvciBnZW5lcmFsIHVzZS4gIFRoZWlyICcKKyAgICAgICAgICAnZGVmaW5pdGlvblxuJworICAgICAgICAgICdtYXkgY2hhbmdlIGluIHRoZSBmdXR1cmUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdOb25lXG4nCisgICAgICAgICAgJyAgIFRoaXMgdHlwZSBoYXMgYSBzaW5nbGUgdmFsdWUuICBUaGVyZSBpcyBhIHNpbmdsZSBvYmplY3Qgd2l0aCAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgdmFsdWUuIFRoaXMgb2JqZWN0IGlzIGFjY2Vzc2VkIHRocm91Z2ggdGhlIGJ1aWx0LWluIG5hbWUgIk5vbmUiLiAnCisgICAgICAgICAgJ0l0XG4nCisgICAgICAgICAgJyAgIGlzIHVzZWQgdG8gc2lnbmlmeSB0aGUgYWJzZW5jZSBvZiBhIHZhbHVlIGluIG1hbnkgc2l0dWF0aW9ucywgJworICAgICAgICAgICdlLmcuLFxuJworICAgICAgICAgICIgICBpdCBpcyByZXR1cm5lZCBmcm9tIGZ1bmN0aW9ucyB0aGF0IGRvbid0IGV4cGxpY2l0bHkgcmV0dXJuXG4iCisgICAgICAgICAgJyAgIGFueXRoaW5nLiBJdHMgdHJ1dGggdmFsdWUgaXMgZmFsc2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdOb3RJbXBsZW1lbnRlZFxuJworICAgICAgICAgICcgICBUaGlzIHR5cGUgaGFzIGEgc2luZ2xlIHZhbHVlLiAgVGhlcmUgaXMgYSBzaW5nbGUgb2JqZWN0IHdpdGggJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgIHZhbHVlLiBUaGlzIG9iamVjdCBpcyBhY2Nlc3NlZCB0aHJvdWdoIHRoZSBidWlsdC1pbiBuYW1lXG4nCisgICAgICAgICAgJyAgICJOb3RJbXBsZW1lbnRlZCIuIE51bWVyaWMgbWV0aG9kcyBhbmQgcmljaCBjb21wYXJpc29uIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgc2hvdWxkIHJldHVybiB0aGlzIHZhbHVlIGlmIHRoZXkgZG8gbm90IGltcGxlbWVudCB0aGUgb3BlcmF0aW9uICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIHRoZSBvcGVyYW5kcyBwcm92aWRlZC4gIChUaGUgaW50ZXJwcmV0ZXIgd2lsbCB0aGVuIHRyeSB0aGVcbicKKyAgICAgICAgICAnICAgcmVmbGVjdGVkIG9wZXJhdGlvbiwgb3Igc29tZSBvdGhlciBmYWxsYmFjaywgZGVwZW5kaW5nIG9uIHRoZVxuJworICAgICAgICAgICcgICBvcGVyYXRvci4pICBJdHMgdHJ1dGggdmFsdWUgaXMgdHJ1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlZSBJbXBsZW1lbnRpbmcgdGhlIGFyaXRobWV0aWMgb3BlcmF0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRWxsaXBzaXNcbicKKyAgICAgICAgICAnICAgVGhpcyB0eXBlIGhhcyBhIHNpbmdsZSB2YWx1ZS4gIFRoZXJlIGlzIGEgc2luZ2xlIG9iamVjdCB3aXRoICcKKyAgICAgICAgICAndGhpc1xuJworICAgICAgICAgICcgICB2YWx1ZS4gVGhpcyBvYmplY3QgaXMgYWNjZXNzZWQgdGhyb3VnaCB0aGUgbGl0ZXJhbCAiLi4uIiBvciB0aGVcbicKKyAgICAgICAgICAnICAgYnVpbHQtaW4gbmFtZSAiRWxsaXBzaXMiLiAgSXRzIHRydXRoIHZhbHVlIGlzIHRydWUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcibnVtYmVycy5OdW1iZXIiXG4nCisgICAgICAgICAgJyAgIFRoZXNlIGFyZSBjcmVhdGVkIGJ5IG51bWVyaWMgbGl0ZXJhbHMgYW5kIHJldHVybmVkIGFzIHJlc3VsdHMgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICBhcml0aG1ldGljIG9wZXJhdG9ycyBhbmQgYXJpdGhtZXRpYyBidWlsdC1pbiBmdW5jdGlvbnMuICAnCisgICAgICAgICAgJ051bWVyaWNcbicKKyAgICAgICAgICAnICAgb2JqZWN0cyBhcmUgaW1tdXRhYmxlOyBvbmNlIGNyZWF0ZWQgdGhlaXIgdmFsdWUgbmV2ZXIgY2hhbmdlcy5cbicKKyAgICAgICAgICAnICAgUHl0aG9uIG51bWJlcnMgYXJlIG9mIGNvdXJzZSBzdHJvbmdseSByZWxhdGVkIHRvIG1hdGhlbWF0aWNhbFxuJworICAgICAgICAgICcgICBudW1iZXJzLCBidXQgc3ViamVjdCB0byB0aGUgbGltaXRhdGlvbnMgb2YgbnVtZXJpY2FsICcKKyAgICAgICAgICAncmVwcmVzZW50YXRpb25cbicKKyAgICAgICAgICAnICAgaW4gY29tcHV0ZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgUHl0aG9uIGRpc3Rpbmd1aXNoZXMgYmV0d2VlbiBpbnRlZ2VycywgZmxvYXRpbmcgcG9pbnQgbnVtYmVycywgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgY29tcGxleCBudW1iZXJzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgIm51bWJlcnMuSW50ZWdyYWwiXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBlbGVtZW50cyBmcm9tIHRoZSBtYXRoZW1hdGljYWwgc2V0IG9mICcKKyAgICAgICAgICAnaW50ZWdlcnNcbicKKyAgICAgICAgICAnICAgICAgKHBvc2l0aXZlIGFuZCBuZWdhdGl2ZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGVyZSBhcmUgdHdvIHR5cGVzIG9mIGludGVnZXJzOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgSW50ZWdlcnMgKCJpbnQiKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhlc2UgcmVwcmVzZW50IG51bWJlcnMgaW4gYW4gdW5saW1pdGVkIHJhbmdlLCBzdWJqZWN0IHRvXG4nCisgICAgICAgICAgJyAgICAgICAgIGF2YWlsYWJsZSAodmlydHVhbCkgbWVtb3J5IG9ubHkuICBGb3IgdGhlIHB1cnBvc2Ugb2YgJworICAgICAgICAgICdzaGlmdFxuJworICAgICAgICAgICcgICAgICAgICBhbmQgbWFzayBvcGVyYXRpb25zLCBhIGJpbmFyeSByZXByZXNlbnRhdGlvbiBpcyBhc3N1bWVkLCAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICIgICAgICAgICBuZWdhdGl2ZSBudW1iZXJzIGFyZSByZXByZXNlbnRlZCBpbiBhIHZhcmlhbnQgb2YgMidzXG4iCisgICAgICAgICAgJyAgICAgICAgIGNvbXBsZW1lbnQgd2hpY2ggZ2l2ZXMgdGhlIGlsbHVzaW9uIG9mIGFuIGluZmluaXRlIHN0cmluZyAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgICAgIHNpZ24gYml0cyBleHRlbmRpbmcgdG8gdGhlIGxlZnQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCb29sZWFucyAoImJvb2wiKVxuJworICAgICAgICAgICcgICAgICAgICBUaGVzZSByZXByZXNlbnQgdGhlIHRydXRoIHZhbHVlcyBGYWxzZSBhbmQgVHJ1ZS4gIFRoZSB0d29cbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0cyByZXByZXNlbnRpbmcgdGhlIHZhbHVlcyAiRmFsc2UiIGFuZCAiVHJ1ZSIgYXJlICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgICAgIG9ubHkgQm9vbGVhbiBvYmplY3RzLiBUaGUgQm9vbGVhbiB0eXBlIGlzIGEgc3VidHlwZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIHR5cGUsIGFuZCBCb29sZWFuIHZhbHVlcyBiZWhhdmUgbGlrZSB0aGUgdmFsdWVzIDAgJworICAgICAgICAgICdhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgMSwgcmVzcGVjdGl2ZWx5LCBpbiBhbG1vc3QgYWxsIGNvbnRleHRzLCB0aGUgZXhjZXB0aW9uICcKKyAgICAgICAgICAnYmVpbmdcbicKKyAgICAgICAgICAnICAgICAgICAgdGhhdCB3aGVuIGNvbnZlcnRlZCB0byBhIHN0cmluZywgdGhlIHN0cmluZ3MgIiJGYWxzZSIiIG9yXG4nCisgICAgICAgICAgJyAgICAgICAgICIiVHJ1ZSIiIGFyZSByZXR1cm5lZCwgcmVzcGVjdGl2ZWx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIHJ1bGVzIGZvciBpbnRlZ2VyIHJlcHJlc2VudGF0aW9uIGFyZSBpbnRlbmRlZCB0byBnaXZlICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIG1vc3QgbWVhbmluZ2Z1bCBpbnRlcnByZXRhdGlvbiBvZiBzaGlmdCBhbmQgbWFzayBvcGVyYXRpb25zXG4nCisgICAgICAgICAgJyAgICAgIGludm9sdmluZyBuZWdhdGl2ZSBpbnRlZ2Vycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLlJlYWwiICgiZmxvYXQiKVxuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgbWFjaGluZS1sZXZlbCBkb3VibGUgcHJlY2lzaW9uIGZsb2F0aW5nICcKKyAgICAgICAgICAncG9pbnRcbicKKyAgICAgICAgICAnICAgICAgbnVtYmVycy4gWW91IGFyZSBhdCB0aGUgbWVyY3kgb2YgdGhlIHVuZGVybHlpbmcgbWFjaGluZVxuJworICAgICAgICAgICcgICAgICBhcmNoaXRlY3R1cmUgKGFuZCBDIG9yIEphdmEgaW1wbGVtZW50YXRpb24pIGZvciB0aGUgYWNjZXB0ZWRcbicKKyAgICAgICAgICAnICAgICAgcmFuZ2UgYW5kIGhhbmRsaW5nIG9mIG92ZXJmbG93LiBQeXRob24gZG9lcyBub3Qgc3VwcG9ydCAnCisgICAgICAgICAgJ3NpbmdsZS1cbicKKyAgICAgICAgICAnICAgICAgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcnM7IHRoZSBzYXZpbmdzIGluIHByb2Nlc3NvciAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBtZW1vcnkgdXNhZ2UgdGhhdCBhcmUgdXN1YWxseSB0aGUgcmVhc29uIGZvciB1c2luZyB0aGVzZSBhcmVcbicKKyAgICAgICAgICAnICAgICAgZHdhcmZlZCBieSB0aGUgb3ZlcmhlYWQgb2YgdXNpbmcgb2JqZWN0cyBpbiBQeXRob24sIHNvIHRoZXJlICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgbm8gcmVhc29uIHRvIGNvbXBsaWNhdGUgdGhlIGxhbmd1YWdlIHdpdGggdHdvIGtpbmRzIG9mICcKKyAgICAgICAgICAnZmxvYXRpbmdcbicKKyAgICAgICAgICAnICAgICAgcG9pbnQgbnVtYmVycy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICJudW1iZXJzLkNvbXBsZXgiICgiY29tcGxleCIpXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBjb21wbGV4IG51bWJlcnMgYXMgYSBwYWlyIG9mIG1hY2hpbmUtbGV2ZWxcbicKKyAgICAgICAgICAnICAgICAgZG91YmxlIHByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAgVGhlIHNhbWUgY2F2ZWF0cyAnCisgICAgICAgICAgJ2FwcGx5XG4nCisgICAgICAgICAgJyAgICAgIGFzIGZvciBmbG9hdGluZyBwb2ludCBudW1iZXJzLiBUaGUgcmVhbCBhbmQgaW1hZ2luYXJ5IHBhcnRzICcKKyAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICcgICAgICBjb21wbGV4IG51bWJlciAieiIgY2FuIGJlIHJldHJpZXZlZCB0aHJvdWdoIHRoZSByZWFkLW9ubHlcbicKKyAgICAgICAgICAnICAgICAgYXR0cmlidXRlcyAiei5yZWFsIiBhbmQgInouaW1hZyIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdTZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBvcmRlcmVkIHNldHMgaW5kZXhlZCBieSBub24tbmVnYXRpdmVcbicKKyAgICAgICAgICAnICAgbnVtYmVycy4gVGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSIgcmV0dXJucyB0aGUgbnVtYmVyIG9mICcKKyAgICAgICAgICAnaXRlbXNcbicKKyAgICAgICAgICAnICAgb2YgYSBzZXF1ZW5jZS4gV2hlbiB0aGUgbGVuZ3RoIG9mIGEgc2VxdWVuY2UgaXMgKm4qLCB0aGUgaW5kZXggJworICAgICAgICAgICdzZXRcbicKKyAgICAgICAgICAnICAgY29udGFpbnMgdGhlIG51bWJlcnMgMCwgMSwgLi4uLCAqbiotMS4gIEl0ZW0gKmkqIG9mIHNlcXVlbmNlICphKiAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgIHNlbGVjdGVkIGJ5ICJhW2ldIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNlcXVlbmNlcyBhbHNvIHN1cHBvcnQgc2xpY2luZzogImFbaTpqXSIgc2VsZWN0cyBhbGwgaXRlbXMgd2l0aFxuJworICAgICAgICAgICcgICBpbmRleCAqayogc3VjaCB0aGF0ICppKiAiPD0iICprKiAiPCIgKmoqLiAgV2hlbiB1c2VkIGFzIGFuXG4nCisgICAgICAgICAgJyAgIGV4cHJlc3Npb24sIGEgc2xpY2UgaXMgYSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlLiAgVGhpcyAnCisgICAgICAgICAgJ2ltcGxpZXNcbicKKyAgICAgICAgICAnICAgdGhhdCB0aGUgaW5kZXggc2V0IGlzIHJlbnVtYmVyZWQgc28gdGhhdCBpdCBzdGFydHMgYXQgMC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFNvbWUgc2VxdWVuY2VzIGFsc28gc3VwcG9ydCAiZXh0ZW5kZWQgc2xpY2luZyIgd2l0aCBhIHRoaXJkICcKKyAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgJyAgIHBhcmFtZXRlcjogImFbaTpqOmtdIiBzZWxlY3RzIGFsbCBpdGVtcyBvZiAqYSogd2l0aCBpbmRleCAqeCogJworICAgICAgICAgICd3aGVyZVxuJworICAgICAgICAgICcgICAieCA9IGkgKyBuKmsiLCAqbiogIj49IiAiMCIgYW5kICppKiAiPD0iICp4KiAiPCIgKmoqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2VxdWVuY2VzIGFyZSBkaXN0aW5ndWlzaGVkIGFjY29yZGluZyB0byB0aGVpciBtdXRhYmlsaXR5OlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgSW1tdXRhYmxlIHNlcXVlbmNlc1xuJworICAgICAgICAgICcgICAgICBBbiBvYmplY3Qgb2YgYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHR5cGUgY2Fubm90IGNoYW5nZSBvbmNlIGl0ICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgY3JlYXRlZC4gIChJZiB0aGUgb2JqZWN0IGNvbnRhaW5zIHJlZmVyZW5jZXMgdG8gb3RoZXIgJworICAgICAgICAgICdvYmplY3RzLFxuJworICAgICAgICAgICcgICAgICB0aGVzZSBvdGhlciBvYmplY3RzIG1heSBiZSBtdXRhYmxlIGFuZCBtYXkgYmUgY2hhbmdlZDsgJworICAgICAgICAgICdob3dldmVyLFxuJworICAgICAgICAgICcgICAgICB0aGUgY29sbGVjdGlvbiBvZiBvYmplY3RzIGRpcmVjdGx5IHJlZmVyZW5jZWQgYnkgYW4gJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGNhbm5vdCBjaGFuZ2UuKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGZvbGxvd2luZyB0eXBlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFN0cmluZ3NcbicKKyAgICAgICAgICAnICAgICAgICAgQSBzdHJpbmcgaXMgYSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhhdCByZXByZXNlbnQgVW5pY29kZSAnCisgICAgICAgICAgJ2NvZGVcbicKKyAgICAgICAgICAnICAgICAgICAgcG9pbnRzLiBBbGwgdGhlIGNvZGUgcG9pbnRzIGluIHRoZSByYW5nZSAiVSswMDAwIC0gJworICAgICAgICAgICdVKzEwRkZGRiJcbicKKyAgICAgICAgICAiICAgICAgICAgY2FuIGJlIHJlcHJlc2VudGVkIGluIGEgc3RyaW5nLiAgUHl0aG9uIGRvZXNuJ3QgaGF2ZSBhICIKKyAgICAgICAgICAnImNoYXIiXG4nCisgICAgICAgICAgJyAgICAgICAgIHR5cGU7IGluc3RlYWQsIGV2ZXJ5IGNvZGUgcG9pbnQgaW4gdGhlIHN0cmluZyBpcyAnCisgICAgICAgICAgJ3JlcHJlc2VudGVkXG4nCisgICAgICAgICAgJyAgICAgICAgIGFzIGEgc3RyaW5nIG9iamVjdCB3aXRoIGxlbmd0aCAiMSIuICBUaGUgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICcgICAgICAgICAib3JkKCkiIGNvbnZlcnRzIGEgY29kZSBwb2ludCBmcm9tIGl0cyBzdHJpbmcgZm9ybSB0byBhblxuJworICAgICAgICAgICcgICAgICAgICBpbnRlZ2VyIGluIHRoZSByYW5nZSAiMCAtIDEwRkZGRiI7ICJjaHIoKSIgY29udmVydHMgYW5cbicKKyAgICAgICAgICAnICAgICAgICAgaW50ZWdlciBpbiB0aGUgcmFuZ2UgIjAgLSAxMEZGRkYiIHRvIHRoZSBjb3JyZXNwb25kaW5nICcKKyAgICAgICAgICAnbGVuZ3RoXG4nCisgICAgICAgICAgJyAgICAgICAgICIxIiBzdHJpbmcgb2JqZWN0LiAic3RyLmVuY29kZSgpIiBjYW4gYmUgdXNlZCB0byBjb252ZXJ0ICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICcgICAgICAgICAic3RyIiB0byAiYnl0ZXMiIHVzaW5nIHRoZSBnaXZlbiB0ZXh0IGVuY29kaW5nLCBhbmRcbicKKyAgICAgICAgICAnICAgICAgICAgImJ5dGVzLmRlY29kZSgpIiBjYW4gYmUgdXNlZCB0byBhY2hpZXZlIHRoZSBvcHBvc2l0ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFR1cGxlc1xuJworICAgICAgICAgICcgICAgICAgICBUaGUgaXRlbXMgb2YgYSB0dXBsZSBhcmUgYXJiaXRyYXJ5IFB5dGhvbiBvYmplY3RzLiBUdXBsZXMgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICAgICB0d28gb3IgbW9yZSBpdGVtcyBhcmUgZm9ybWVkIGJ5IGNvbW1hLXNlcGFyYXRlZCBsaXN0cyBvZlxuJworICAgICAgICAgICIgICAgICAgICBleHByZXNzaW9ucy4gIEEgdHVwbGUgb2Ygb25lIGl0ZW0gKGEgJ3NpbmdsZXRvbicpIGNhbiBiZVxuIgorICAgICAgICAgICcgICAgICAgICBmb3JtZWQgYnkgYWZmaXhpbmcgYSBjb21tYSB0byBhbiBleHByZXNzaW9uIChhbiBleHByZXNzaW9uICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgaXRzZWxmIGRvZXMgbm90IGNyZWF0ZSBhIHR1cGxlLCBzaW5jZSBwYXJlbnRoZXNlcyBtdXN0IGJlXG4nCisgICAgICAgICAgJyAgICAgICAgIHVzYWJsZSBmb3IgZ3JvdXBpbmcgb2YgZXhwcmVzc2lvbnMpLiAgQW4gZW1wdHkgdHVwbGUgY2FuICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgICAgZm9ybWVkIGJ5IGFuIGVtcHR5IHBhaXIgb2YgcGFyZW50aGVzZXMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBCeXRlc1xuJworICAgICAgICAgICcgICAgICAgICBBIGJ5dGVzIG9iamVjdCBpcyBhbiBpbW11dGFibGUgYXJyYXkuICBUaGUgaXRlbXMgYXJlICcKKyAgICAgICAgICAnOC1iaXRcbicKKyAgICAgICAgICAnICAgICAgICAgYnl0ZXMsIHJlcHJlc2VudGVkIGJ5IGludGVnZXJzIGluIHRoZSByYW5nZSAwIDw9IHggPCAyNTYuXG4nCisgICAgICAgICAgJyAgICAgICAgIEJ5dGVzIGxpdGVyYWxzIChsaWtlICJiXCdhYmNcJyIpIGFuZCB0aGUgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICcgICAgICAgICAiYnl0ZXMoKSIgY2FuIGJlIHVzZWQgdG8gY29uc3RydWN0IGJ5dGVzIG9iamVjdHMuICBBbHNvLFxuJworICAgICAgICAgICcgICAgICAgICBieXRlcyBvYmplY3RzIGNhbiBiZSBkZWNvZGVkIHRvIHN0cmluZ3MgdmlhIHRoZSAnCisgICAgICAgICAgJyJkZWNvZGUoKSJcbicKKyAgICAgICAgICAnICAgICAgICAgbWV0aG9kLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgTXV0YWJsZSBzZXF1ZW5jZXNcbicKKyAgICAgICAgICAnICAgICAgTXV0YWJsZSBzZXF1ZW5jZXMgY2FuIGJlIGNoYW5nZWQgYWZ0ZXIgdGhleSBhcmUgY3JlYXRlZC4gICcKKyAgICAgICAgICAnVGhlXG4nCisgICAgICAgICAgJyAgICAgIHN1YnNjcmlwdGlvbiBhbmQgc2xpY2luZyBub3RhdGlvbnMgY2FuIGJlIHVzZWQgYXMgdGhlIHRhcmdldCAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGFzc2lnbm1lbnQgYW5kICJkZWwiIChkZWxldGUpIHN0YXRlbWVudHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGVyZSBhcmUgY3VycmVudGx5IHR3byBpbnRyaW5zaWMgbXV0YWJsZSBzZXF1ZW5jZSB0eXBlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIExpc3RzXG4nCisgICAgICAgICAgJyAgICAgICAgIFRoZSBpdGVtcyBvZiBhIGxpc3QgYXJlIGFyYml0cmFyeSBQeXRob24gb2JqZWN0cy4gIExpc3RzICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgICAgIGZvcm1lZCBieSBwbGFjaW5nIGEgY29tbWEtc2VwYXJhdGVkIGxpc3Qgb2YgZXhwcmVzc2lvbnMgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICAgICAgICBzcXVhcmUgYnJhY2tldHMuIChOb3RlIHRoYXQgdGhlcmUgYXJlIG5vIHNwZWNpYWwgY2FzZXMgJworICAgICAgICAgICduZWVkZWRcbicKKyAgICAgICAgICAnICAgICAgICAgdG8gZm9ybSBsaXN0cyBvZiBsZW5ndGggMCBvciAxLilcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEJ5dGUgQXJyYXlzXG4nCisgICAgICAgICAgJyAgICAgICAgIEEgYnl0ZWFycmF5IG9iamVjdCBpcyBhIG11dGFibGUgYXJyYXkuIFRoZXkgYXJlIGNyZWF0ZWQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICAgICAgICB0aGUgYnVpbHQtaW4gImJ5dGVhcnJheSgpIiBjb25zdHJ1Y3Rvci4gIEFzaWRlIGZyb20gYmVpbmdcbicKKyAgICAgICAgICAnICAgICAgICAgbXV0YWJsZSAoYW5kIGhlbmNlIHVuaGFzaGFibGUpLCBieXRlIGFycmF5cyBvdGhlcndpc2UgJworICAgICAgICAgICdwcm92aWRlXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSBzYW1lIGludGVyZmFjZSBhbmQgZnVuY3Rpb25hbGl0eSBhcyBpbW11dGFibGUgYnl0ZXNcbicKKyAgICAgICAgICAnICAgICAgICAgb2JqZWN0cy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFRoZSBleHRlbnNpb24gbW9kdWxlICJhcnJheSIgcHJvdmlkZXMgYW4gYWRkaXRpb25hbCBleGFtcGxlICcKKyAgICAgICAgICAnb2YgYVxuJworICAgICAgICAgICcgICAgICBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsIGFzIGRvZXMgdGhlICJjb2xsZWN0aW9ucyIgbW9kdWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnU2V0IHR5cGVzXG4nCisgICAgICAgICAgJyAgIFRoZXNlIHJlcHJlc2VudCB1bm9yZGVyZWQsIGZpbml0ZSBzZXRzIG9mIHVuaXF1ZSwgaW1tdXRhYmxlXG4nCisgICAgICAgICAgJyAgIG9iamVjdHMuIEFzIHN1Y2gsIHRoZXkgY2Fubm90IGJlIGluZGV4ZWQgYnkgYW55IHN1YnNjcmlwdC4gJworICAgICAgICAgICdIb3dldmVyLFxuJworICAgICAgICAgICcgICB0aGV5IGNhbiBiZSBpdGVyYXRlZCBvdmVyLCBhbmQgdGhlIGJ1aWx0LWluIGZ1bmN0aW9uICJsZW4oKSJcbicKKyAgICAgICAgICAnICAgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIGEgc2V0LiBDb21tb24gdXNlcyBmb3Igc2V0cyBhcmUgJworICAgICAgICAgICdmYXN0XG4nCisgICAgICAgICAgJyAgIG1lbWJlcnNoaXAgdGVzdGluZywgcmVtb3ZpbmcgZHVwbGljYXRlcyBmcm9tIGEgc2VxdWVuY2UsIGFuZFxuJworICAgICAgICAgICcgICBjb21wdXRpbmcgbWF0aGVtYXRpY2FsIG9wZXJhdGlvbnMgc3VjaCBhcyBpbnRlcnNlY3Rpb24sIHVuaW9uLFxuJworICAgICAgICAgICcgICBkaWZmZXJlbmNlLCBhbmQgc3ltbWV0cmljIGRpZmZlcmVuY2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGb3Igc2V0IGVsZW1lbnRzLCB0aGUgc2FtZSBpbW11dGFiaWxpdHkgcnVsZXMgYXBwbHkgYXMgZm9yXG4nCisgICAgICAgICAgJyAgIGRpY3Rpb25hcnkga2V5cy4gTm90ZSB0aGF0IG51bWVyaWMgdHlwZXMgb2JleSB0aGUgbm9ybWFsIHJ1bGVzICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgY29tcGFyZSBlcXVhbCAoZS5nLiwgIjEiIGFuZFxuJworICAgICAgICAgICcgICAiMS4wIiksIG9ubHkgb25lIG9mIHRoZW0gY2FuIGJlIGNvbnRhaW5lZCBpbiBhIHNldC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRoZXJlIGFyZSBjdXJyZW50bHkgdHdvIGludHJpbnNpYyBzZXQgdHlwZXM6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTZXRzXG4nCisgICAgICAgICAgJyAgICAgIFRoZXNlIHJlcHJlc2VudCBhIG11dGFibGUgc2V0LiBUaGV5IGFyZSBjcmVhdGVkIGJ5IHRoZSAnCisgICAgICAgICAgJ2J1aWx0LWluXG4nCisgICAgICAgICAgJyAgICAgICJzZXQoKSIgY29uc3RydWN0b3IgYW5kIGNhbiBiZSBtb2RpZmllZCBhZnRlcndhcmRzIGJ5ICcKKyAgICAgICAgICAnc2V2ZXJhbFxuJworICAgICAgICAgICcgICAgICBtZXRob2RzLCBzdWNoIGFzICJhZGQoKSIuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBGcm96ZW4gc2V0c1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgYW4gaW1tdXRhYmxlIHNldC4gIFRoZXkgYXJlIGNyZWF0ZWQgYnkgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGJ1aWx0LWluICJmcm96ZW5zZXQoKSIgY29uc3RydWN0b3IuICBBcyBhIGZyb3plbnNldCBpcyAnCisgICAgICAgICAgJ2ltbXV0YWJsZVxuJworICAgICAgICAgICcgICAgICBhbmQgKmhhc2hhYmxlKiwgaXQgY2FuIGJlIHVzZWQgYWdhaW4gYXMgYW4gZWxlbWVudCBvZiAnCisgICAgICAgICAgJ2Fub3RoZXJcbicKKyAgICAgICAgICAnICAgICAgc2V0LCBvciBhcyBhIGRpY3Rpb25hcnkga2V5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnTWFwcGluZ3NcbicKKyAgICAgICAgICAnICAgVGhlc2UgcmVwcmVzZW50IGZpbml0ZSBzZXRzIG9mIG9iamVjdHMgaW5kZXhlZCBieSBhcmJpdHJhcnkgJworICAgICAgICAgICdpbmRleFxuJworICAgICAgICAgICcgICBzZXRzLiBUaGUgc3Vic2NyaXB0IG5vdGF0aW9uICJhW2tdIiBzZWxlY3RzIHRoZSBpdGVtIGluZGV4ZWQgYnkgJworICAgICAgICAgICciayJcbicKKyAgICAgICAgICAnICAgZnJvbSB0aGUgbWFwcGluZyAiYSI7IHRoaXMgY2FuIGJlIHVzZWQgaW4gZXhwcmVzc2lvbnMgYW5kIGFzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIHRhcmdldCBvZiBhc3NpZ25tZW50cyBvciAiZGVsIiBzdGF0ZW1lbnRzLiBUaGUgYnVpbHQtaW4gJworICAgICAgICAgICdmdW5jdGlvblxuJworICAgICAgICAgICcgICAibGVuKCkiIHJldHVybnMgdGhlIG51bWJlciBvZiBpdGVtcyBpbiBhIG1hcHBpbmcuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGVyZSBpcyBjdXJyZW50bHkgYSBzaW5nbGUgaW50cmluc2ljIG1hcHBpbmcgdHlwZTpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIERpY3Rpb25hcmllc1xuJworICAgICAgICAgICcgICAgICBUaGVzZSByZXByZXNlbnQgZmluaXRlIHNldHMgb2Ygb2JqZWN0cyBpbmRleGVkIGJ5IG5lYXJseVxuJworICAgICAgICAgICcgICAgICBhcmJpdHJhcnkgdmFsdWVzLiAgVGhlIG9ubHkgdHlwZXMgb2YgdmFsdWVzIG5vdCBhY2NlcHRhYmxlICcKKyAgICAgICAgICAnYXNcbicKKyAgICAgICAgICAnICAgICAga2V5cyBhcmUgdmFsdWVzIGNvbnRhaW5pbmcgbGlzdHMgb3IgZGljdGlvbmFyaWVzIG9yIG90aGVyXG4nCisgICAgICAgICAgJyAgICAgIG11dGFibGUgdHlwZXMgdGhhdCBhcmUgY29tcGFyZWQgYnkgdmFsdWUgcmF0aGVyIHRoYW4gYnkgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaWRlbnRpdHksIHRoZSByZWFzb24gYmVpbmcgdGhhdCB0aGUgZWZmaWNpZW50IGltcGxlbWVudGF0aW9uICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAiICAgICAgZGljdGlvbmFyaWVzIHJlcXVpcmVzIGEga2V5J3MgaGFzaCB2YWx1ZSB0byByZW1haW4gY29uc3RhbnQuXG4iCisgICAgICAgICAgJyAgICAgIE51bWVyaWMgdHlwZXMgdXNlZCBmb3Iga2V5cyBvYmV5IHRoZSBub3JtYWwgcnVsZXMgZm9yICcKKyAgICAgICAgICAnbnVtZXJpY1xuJworICAgICAgICAgICcgICAgICBjb21wYXJpc29uOiBpZiB0d28gbnVtYmVycyBjb21wYXJlIGVxdWFsIChlLmcuLCAiMSIgYW5kICcKKyAgICAgICAgICAnIjEuMCIpXG4nCisgICAgICAgICAgJyAgICAgIHRoZW4gdGhleSBjYW4gYmUgdXNlZCBpbnRlcmNoYW5nZWFibHkgdG8gaW5kZXggdGhlIHNhbWVcbicKKyAgICAgICAgICAnICAgICAgZGljdGlvbmFyeSBlbnRyeS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIERpY3Rpb25hcmllcyBhcmUgbXV0YWJsZTsgdGhleSBjYW4gYmUgY3JlYXRlZCBieSB0aGUgInsuLi59IlxuJworICAgICAgICAgICcgICAgICBub3RhdGlvbiAoc2VlIHNlY3Rpb24gRGljdGlvbmFyeSBkaXNwbGF5cykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBUaGUgZXh0ZW5zaW9uIG1vZHVsZXMgImRibS5uZGJtIiBhbmQgImRibS5nbnUiIHByb3ZpZGVcbicKKyAgICAgICAgICAnICAgICAgYWRkaXRpb25hbCBleGFtcGxlcyBvZiBtYXBwaW5nIHR5cGVzLCBhcyBkb2VzIHRoZSAnCisgICAgICAgICAgJyJjb2xsZWN0aW9ucyJcbicKKyAgICAgICAgICAnICAgICAgbW9kdWxlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2FsbGFibGUgdHlwZXNcbicKKyAgICAgICAgICAnICAgVGhlc2UgYXJlIHRoZSB0eXBlcyB0byB3aGljaCB0aGUgZnVuY3Rpb24gY2FsbCBvcGVyYXRpb24gKHNlZVxuJworICAgICAgICAgICcgICBzZWN0aW9uIENhbGxzKSBjYW4gYmUgYXBwbGllZDpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFVzZXItZGVmaW5lZCBmdW5jdGlvbnNcbicKKyAgICAgICAgICAnICAgICAgQSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGlzIGNyZWF0ZWQgYnkgYSBmdW5jdGlvblxuJworICAgICAgICAgICcgICAgICBkZWZpbml0aW9uIChzZWUgc2VjdGlvbiBGdW5jdGlvbiBkZWZpbml0aW9ucykuICBJdCBzaG91bGQgYmVcbicKKyAgICAgICAgICAnICAgICAgY2FsbGVkIHdpdGggYW4gYXJndW1lbnQgbGlzdCBjb250YWluaW5nIHRoZSBzYW1lIG51bWJlciBvZiAnCisgICAgICAgICAgJ2l0ZW1zXG4nCisgICAgICAgICAgIiAgICAgIGFzIHRoZSBmdW5jdGlvbidzIGZvcm1hbCBwYXJhbWV0ZXIgbGlzdC5cbiIKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgYXR0cmlidXRlczpcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCBBdHRyaWJ1dGUgICAgICAgICAgICAgICAgIHwgTWVhbmluZyAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fZG9jX18iICAgICAgICAgICAgICAgICB8IFRoZSBmdW5jdGlvblwncyAnCisgICAgICAgICAgJ2RvY3VtZW50YXRpb24gICAgfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHN0cmluZywgb3IgIk5vbmUiIGlmICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgdW5hdmFpbGFibGU7IG5vdCBpbmhlcml0ZWQgYnkgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzdWJjbGFzc2VzICAgICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19uYW1lX18iICAgICAgICAgICAgICAgIHwgVGhlIGZ1bmN0aW9uXCdzICcKKyAgICAgICAgICAnbmFtZSAgICAgICAgICAgICB8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX3F1YWxuYW1lX18iICAgICAgICAgICAgfCBUaGUgZnVuY3Rpb25cJ3MgKnF1YWxpZmllZCAnCisgICAgICAgICAgJ25hbWUqIHwgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOZXcgaW4gdmVyc2lvbiAzLjMuICAgICAgICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19tb2R1bGVfXyIgICAgICAgICAgICAgIHwgVGhlIG5hbWUgb2YgdGhlIG1vZHVsZSB0aGUgICAgICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBmdW5jdGlvbiB3YXMgZGVmaW5lZCBpbiwgb3IgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJOb25lIiBpZiB1bmF2YWlsYWJsZS4gICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RlZmF1bHRzX18iICAgICAgICAgICAgfCBBIHR1cGxlIGNvbnRhaW5pbmcgZGVmYXVsdCAgICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyZ3VtZW50IHZhbHVlcyBmb3IgdGhvc2UgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXJndW1lbnRzIHRoYXQgaGF2ZSBkZWZhdWx0cywgICAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBvciAiTm9uZSIgaWYgbm8gYXJndW1lbnRzIGhhdmUgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGEgZGVmYXVsdCB2YWx1ZSAgICAgICAgICAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2NvZGVfXyIgICAgICAgICAgICAgICAgfCBUaGUgY29kZSBvYmplY3QgcmVwcmVzZW50aW5nICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoZSBjb21waWxlZCBmdW5jdGlvbiBib2R5LiAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2dsb2JhbHNfXyIgICAgICAgICAgICAgfCBBIHJlZmVyZW5jZSB0byB0aGUgZGljdGlvbmFyeSAgICcKKyAgICAgICAgICAnfCBSZWFkLW9ubHkgICB8XG4nCisgICAgICAgICAgIiAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHRoYXQgaG9sZHMgdGhlIGZ1bmN0aW9uJ3MgICAgICAgIgorICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZ2xvYmFsIHZhcmlhYmxlcyAtLS0gdGhlIGdsb2JhbCAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBuYW1lc3BhY2Ugb2YgdGhlIG1vZHVsZSBpbiAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHdoaWNoIHRoZSBmdW5jdGlvbiB3YXMgZGVmaW5lZC4gJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2RpY3RfXyIgICAgICAgICAgICAgICAgfCBUaGUgbmFtZXNwYWNlIHN1cHBvcnRpbmcgICAgICAgICcKKyAgICAgICAgICAnfCBXcml0YWJsZSAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFyYml0cmFyeSBmdW5jdGlvbiBhdHRyaWJ1dGVzLiAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAnICAgICAgJworICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICcgICAgICB8ICJfX2Nsb3N1cmVfXyIgICAgICAgICAgICAgfCAiTm9uZSIgb3IgYSB0dXBsZSBvZiBjZWxscyB0aGF0ICcKKyAgICAgICAgICAnfCBSZWFkLW9ubHkgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGNvbnRhaW4gYmluZGluZ3MgZm9yIHRoZSAgICAgICAgJworICAgICAgICAgICd8ICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAiICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZnVuY3Rpb24ncyBmcmVlIHZhcmlhYmxlcy4gICAgICAiCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICAnCisgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgJyAgICAgIHwgIl9fYW5ub3RhdGlvbnNfXyIgICAgICAgICB8IEEgZGljdCBjb250YWluaW5nIGFubm90YXRpb25zICAgJworICAgICAgICAgICd8IFdyaXRhYmxlICAgIHxcbicKKyAgICAgICAgICAnICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgb2YgcGFyYW1ldGVycy4gIFRoZSBrZXlzIG9mIHRoZSAnCisgICAgICAgICAgJ3wgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBkaWN0IGFyZSB0aGUgcGFyYW1ldGVyIG5hbWVzLCAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFuZCAiXCdyZXR1cm5cJyIgZm9yIHRoZSAnCisgICAgICAgICAgJ3JldHVybiAgIHwgICAgICAgICAgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbm5vdGF0aW9uLCBpZiBwcm92aWRlZC4gICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnICAgICAgfCAiX19rd2RlZmF1bHRzX18iICAgICAgICAgIHwgQSBkaWN0IGNvbnRhaW5pbmcgZGVmYXVsdHMgZm9yICAnCisgICAgICAgICAgJ3wgV3JpdGFibGUgICAgfFxuJworICAgICAgICAgICcgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBrZXl3b3JkLW9ubHkgcGFyYW1ldGVycy4gICAgICAgICcKKyAgICAgICAgICAnfCAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgJyAgICAgICcKKyAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIE1vc3Qgb2YgdGhlIGF0dHJpYnV0ZXMgbGFiZWxsZWQgIldyaXRhYmxlIiBjaGVjayB0aGUgdHlwZSBvZiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBhc3NpZ25lZCB2YWx1ZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEZ1bmN0aW9uIG9iamVjdHMgYWxzbyBzdXBwb3J0IGdldHRpbmcgYW5kIHNldHRpbmcgYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGF0dHJpYnV0ZXMsIHdoaWNoIGNhbiBiZSB1c2VkLCBmb3IgZXhhbXBsZSwgdG8gYXR0YWNoICcKKyAgICAgICAgICAnbWV0YWRhdGFcbicKKyAgICAgICAgICAnICAgICAgdG8gZnVuY3Rpb25zLiAgUmVndWxhciBhdHRyaWJ1dGUgZG90LW5vdGF0aW9uIGlzIHVzZWQgdG8gZ2V0ICcKKyAgICAgICAgICAnYW5kXG4nCisgICAgICAgICAgJyAgICAgIHNldCBzdWNoIGF0dHJpYnV0ZXMuICpOb3RlIHRoYXQgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gJworICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgJyAgICAgIHN1cHBvcnRzIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gJworICAgICAgICAgICdGdW5jdGlvblxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzIG9uIGJ1aWx0LWluIGZ1bmN0aW9ucyBtYXkgYmUgc3VwcG9ydGVkIGluIHRoZVxuJworICAgICAgICAgICcgICAgICBmdXR1cmUuKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgICAgQWRkaXRpb25hbCBpbmZvcm1hdGlvbiBhYm91dCBhIGZ1bmN0aW9uJ3MgZGVmaW5pdGlvbiBjYW4gYmVcbiIKKyAgICAgICAgICAnICAgICAgcmV0cmlldmVkIGZyb20gaXRzIGNvZGUgb2JqZWN0OyBzZWUgdGhlIGRlc2NyaXB0aW9uIG9mICcKKyAgICAgICAgICAnaW50ZXJuYWxcbicKKyAgICAgICAgICAnICAgICAgdHlwZXMgYmVsb3cuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBJbnN0YW5jZSBtZXRob2RzXG4nCisgICAgICAgICAgJyAgICAgIEFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgY29tYmluZXMgYSBjbGFzcywgYSBjbGFzcyBpbnN0YW5jZSAnCisgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICcgICAgICBhbnkgY2FsbGFibGUgb2JqZWN0IChub3JtYWxseSBhIHVzZXItZGVmaW5lZCBmdW5jdGlvbikuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiX19zZWxmX18iIGlzIHRoZSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgIl9fZnVuY19fIiBpcyB0aGUgZnVuY3Rpb24gb2JqZWN0OyAiX19kb2NfXyIgaXMgdGhlXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZFwncyBkb2N1bWVudGF0aW9uIChzYW1lIGFzICJfX2Z1bmNfXy5fX2RvY19fIik7ICcKKyAgICAgICAgICAnIl9fbmFtZV9fIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgbWV0aG9kIG5hbWUgKHNhbWUgYXMgIl9fZnVuY19fLl9fbmFtZV9fIik7ICcKKyAgICAgICAgICAnIl9fbW9kdWxlX18iXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBuYW1lIG9mIHRoZSBtb2R1bGUgdGhlIG1ldGhvZCB3YXMgZGVmaW5lZCBpbiwgb3IgJworICAgICAgICAgICciTm9uZSJcbicKKyAgICAgICAgICAnICAgICAgaWYgdW5hdmFpbGFibGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBNZXRob2RzIGFsc28gc3VwcG9ydCBhY2Nlc3NpbmcgKGJ1dCBub3Qgc2V0dGluZykgdGhlICcKKyAgICAgICAgICAnYXJiaXRyYXJ5XG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIGF0dHJpYnV0ZXMgb24gdGhlIHVuZGVybHlpbmcgZnVuY3Rpb24gb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVXNlci1kZWZpbmVkIG1ldGhvZCBvYmplY3RzIG1heSBiZSBjcmVhdGVkIHdoZW4gZ2V0dGluZyBhblxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgb2YgYSBjbGFzcyAocGVyaGFwcyB2aWEgYW4gaW5zdGFuY2Ugb2YgdGhhdCBjbGFzcyksICcKKyAgICAgICAgICAnaWZcbicKKyAgICAgICAgICAnICAgICAgdGhhdCBhdHRyaWJ1dGUgaXMgYSB1c2VyLWRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IG9yIGEgY2xhc3NcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYW4gaW5zdGFuY2UgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmcgYSAnCisgICAgICAgICAgJ3VzZXItXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluZWQgZnVuY3Rpb24gb2JqZWN0IGZyb20gYSBjbGFzcyB2aWEgb25lIG9mIGl0cyAnCisgICAgICAgICAgJ2luc3RhbmNlcyxcbicKKyAgICAgICAgICAnICAgICAgaXRzICJfX3NlbGZfXyIgYXR0cmlidXRlIGlzIHRoZSBpbnN0YW5jZSwgYW5kIHRoZSBtZXRob2QgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgaXMgc2FpZCB0byBiZSBib3VuZC4gIFRoZSBuZXcgbWV0aG9kXCdzICJfX2Z1bmNfXyIgYXR0cmlidXRlICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdGhlIG9yaWdpbmFsIGZ1bmN0aW9uIG9iamVjdC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFdoZW4gYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdCBpcyBjcmVhdGVkIGJ5IHJldHJpZXZpbmdcbicKKyAgICAgICAgICAnICAgICAgYW5vdGhlciBtZXRob2Qgb2JqZWN0IGZyb20gYSBjbGFzcyBvciBpbnN0YW5jZSwgdGhlIGJlaGF2aW91ciAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBzYW1lIGFzIGZvciBhIGZ1bmN0aW9uIG9iamVjdCwgZXhjZXB0IHRoYXQgdGhlICcKKyAgICAgICAgICAnIl9fZnVuY19fIlxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGUgb2YgdGhlIG5ldyBpbnN0YW5jZSBpcyBub3QgdGhlIG9yaWdpbmFsIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICBidXQgaXRzICJfX2Z1bmNfXyIgYXR0cmlidXRlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGNyZWF0ZWQgYnkgcmV0cmlldmluZyBhICcKKyAgICAgICAgICAnY2xhc3NcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBmcm9tIGEgY2xhc3Mgb3IgaW5zdGFuY2UsIGl0cyAiX19zZWxmX18iICcKKyAgICAgICAgICAnYXR0cmlidXRlXG4nCisgICAgICAgICAgJyAgICAgIGlzIHRoZSBjbGFzcyBpdHNlbGYsIGFuZCBpdHMgIl9fZnVuY19fIiBhdHRyaWJ1dGUgaXMgdGhlXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIG9iamVjdCB1bmRlcmx5aW5nIHRoZSBjbGFzcyBtZXRob2QuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBXaGVuIGFuIGluc3RhbmNlIG1ldGhvZCBvYmplY3QgaXMgY2FsbGVkLCB0aGUgdW5kZXJseWluZ1xuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiAoIl9fZnVuY19fIikgaXMgY2FsbGVkLCBpbnNlcnRpbmcgdGhlIGNsYXNzICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgKCJfX3NlbGZfXyIpIGluIGZyb250IG9mIHRoZSBhcmd1bWVudCBsaXN0LiAgRm9yIGluc3RhbmNlLCAnCisgICAgICAgICAgJ3doZW5cbicKKyAgICAgICAgICAnICAgICAgIkMiIGlzIGEgY2xhc3Mgd2hpY2ggY29udGFpbnMgYSBkZWZpbml0aW9uIGZvciBhIGZ1bmN0aW9uICcKKyAgICAgICAgICAnImYoKSIsXG4nCisgICAgICAgICAgJyAgICAgIGFuZCAieCIgaXMgYW4gaW5zdGFuY2Ugb2YgIkMiLCBjYWxsaW5nICJ4LmYoMSkiIGlzIGVxdWl2YWxlbnQgJworICAgICAgICAgICd0b1xuJworICAgICAgICAgICcgICAgICBjYWxsaW5nICJDLmYoeCwgMSkiLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgV2hlbiBhbiBpbnN0YW5jZSBtZXRob2Qgb2JqZWN0IGlzIGRlcml2ZWQgZnJvbSBhIGNsYXNzICcKKyAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdCwgdGhlICJjbGFzcyBpbnN0YW5jZSIgc3RvcmVkIGluICJfX3NlbGZfXyIgd2lsbCAnCisgICAgICAgICAgJ2FjdHVhbGx5XG4nCisgICAgICAgICAgJyAgICAgIGJlIHRoZSBjbGFzcyBpdHNlbGYsIHNvIHRoYXQgY2FsbGluZyBlaXRoZXIgInguZigxKSIgb3IgJworICAgICAgICAgICciQy5mKDEpIlxuJworICAgICAgICAgICcgICAgICBpcyBlcXVpdmFsZW50IHRvIGNhbGxpbmcgImYoQywxKSIgd2hlcmUgImYiIGlzIHRoZSAnCisgICAgICAgICAgJ3VuZGVybHlpbmdcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBOb3RlIHRoYXQgdGhlIHRyYW5zZm9ybWF0aW9uIGZyb20gZnVuY3Rpb24gb2JqZWN0IHRvICcKKyAgICAgICAgICAnaW5zdGFuY2VcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kIG9iamVjdCBoYXBwZW5zIGVhY2ggdGltZSB0aGUgYXR0cmlidXRlIGlzIHJldHJpZXZlZCAnCisgICAgICAgICAgJ2Zyb21cbicKKyAgICAgICAgICAnICAgICAgdGhlIGluc3RhbmNlLiAgSW4gc29tZSBjYXNlcywgYSBmcnVpdGZ1bCBvcHRpbWl6YXRpb24gaXMgdG9cbicKKyAgICAgICAgICAnICAgICAgYXNzaWduIHRoZSBhdHRyaWJ1dGUgdG8gYSBsb2NhbCB2YXJpYWJsZSBhbmQgY2FsbCB0aGF0IGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlLiBBbHNvIG5vdGljZSB0aGF0IHRoaXMgdHJhbnNmb3JtYXRpb24gb25seSBoYXBwZW5zICcKKyAgICAgICAgICAnZm9yXG4nCisgICAgICAgICAgJyAgICAgIHVzZXItZGVmaW5lZCBmdW5jdGlvbnM7IG90aGVyIGNhbGxhYmxlIG9iamVjdHMgKGFuZCBhbGwgbm9uLVxuJworICAgICAgICAgICcgICAgICBjYWxsYWJsZSBvYmplY3RzKSBhcmUgcmV0cmlldmVkIHdpdGhvdXQgdHJhbnNmb3JtYXRpb24uICBJdCAnCisgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgJyAgICAgIGFsc28gaW1wb3J0YW50IHRvIG5vdGUgdGhhdCB1c2VyLWRlZmluZWQgZnVuY3Rpb25zIHdoaWNoIGFyZVxuJworICAgICAgICAgICcgICAgICBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgaW5zdGFuY2UgYXJlIG5vdCBjb252ZXJ0ZWQgdG8gYm91bmRcbicKKyAgICAgICAgICAnICAgICAgbWV0aG9kczsgdGhpcyAqb25seSogaGFwcGVucyB3aGVuIHRoZSBmdW5jdGlvbiBpcyBhbiAnCisgICAgICAgICAgJ2F0dHJpYnV0ZVxuJworICAgICAgICAgICcgICAgICBvZiB0aGUgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBHZW5lcmF0b3IgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIHVzZXMgdGhlICJ5aWVsZCIgc3RhdGVtZW50IChzZWVcbicKKyAgICAgICAgICAnICAgICAgc2VjdGlvbiBUaGUgeWllbGQgc3RhdGVtZW50KSBpcyBjYWxsZWQgYSAqZ2VuZXJhdG9yICcKKyAgICAgICAgICAnZnVuY3Rpb24qLlxuJworICAgICAgICAgICcgICAgICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gY2FsbGVkLCBhbHdheXMgcmV0dXJucyBhbiBpdGVyYXRvciAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICB3aGljaCBjYW4gYmUgdXNlZCB0byBleGVjdXRlIHRoZSBib2R5IG9mIHRoZSBmdW5jdGlvbjogICcKKyAgICAgICAgICAnY2FsbGluZ1xuJworICAgICAgICAgICcgICAgICB0aGUgaXRlcmF0b3JcJ3MgIml0ZXJhdG9yLl9fbmV4dF9fKCkiIG1ldGhvZCB3aWxsIGNhdXNlIHRoZVxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbiB0byBleGVjdXRlIHVudGlsIGl0IHByb3ZpZGVzIGEgdmFsdWUgdXNpbmcgdGhlICcKKyAgICAgICAgICAnInlpZWxkIlxuJworICAgICAgICAgICcgICAgICBzdGF0ZW1lbnQuICBXaGVuIHRoZSBmdW5jdGlvbiBleGVjdXRlcyBhICJyZXR1cm4iIHN0YXRlbWVudCAnCisgICAgICAgICAgJ29yXG4nCisgICAgICAgICAgJyAgICAgIGZhbGxzIG9mZiB0aGUgZW5kLCBhICJTdG9wSXRlcmF0aW9uIiBleGNlcHRpb24gaXMgcmFpc2VkIGFuZCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBpdGVyYXRvciB3aWxsIGhhdmUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBzZXQgb2YgdmFsdWVzIHRvICcKKyAgICAgICAgICAnYmVcbicKKyAgICAgICAgICAnICAgICAgcmV0dXJuZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDb3JvdXRpbmUgZnVuY3Rpb25zXG4nCisgICAgICAgICAgJyAgICAgIEEgZnVuY3Rpb24gb3IgbWV0aG9kIHdoaWNoIGlzIGRlZmluZWQgdXNpbmcgImFzeW5jIGRlZiIgaXNcbicKKyAgICAgICAgICAnICAgICAgY2FsbGVkIGEgKmNvcm91dGluZSBmdW5jdGlvbiouICBTdWNoIGEgZnVuY3Rpb24sIHdoZW4gJworICAgICAgICAgICdjYWxsZWQsXG4nCisgICAgICAgICAgJyAgICAgIHJldHVybnMgYSAqY29yb3V0aW5lKiBvYmplY3QuICBJdCBtYXkgY29udGFpbiAiYXdhaXQiXG4nCisgICAgICAgICAgJyAgICAgIGV4cHJlc3Npb25zLCBhcyB3ZWxsIGFzICJhc3luYyB3aXRoIiBhbmQgImFzeW5jIGZvciIgJworICAgICAgICAgICdzdGF0ZW1lbnRzLlxuJworICAgICAgICAgICcgICAgICBTZWUgYWxzbyB0aGUgQ29yb3V0aW5lIE9iamVjdHMgc2VjdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEJ1aWx0LWluIGZ1bmN0aW9uc1xuJworICAgICAgICAgICcgICAgICBBIGJ1aWx0LWluIGZ1bmN0aW9uIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGEgQyBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnICAgICAgRXhhbXBsZXMgb2YgYnVpbHQtaW4gZnVuY3Rpb25zIGFyZSAibGVuKCkiIGFuZCAibWF0aC5zaW4oKSJcbicKKyAgICAgICAgICAnICAgICAgKCJtYXRoIiBpcyBhIHN0YW5kYXJkIGJ1aWx0LWluIG1vZHVsZSkuIFRoZSBudW1iZXIgYW5kIHR5cGUgJworICAgICAgICAgICdvZlxuJworICAgICAgICAgICcgICAgICB0aGUgYXJndW1lbnRzIGFyZSBkZXRlcm1pbmVkIGJ5IHRoZSBDIGZ1bmN0aW9uLiBTcGVjaWFsICcKKyAgICAgICAgICAncmVhZC1cbicKKyAgICAgICAgICAnICAgICAgb25seSBhdHRyaWJ1dGVzOiAiX19kb2NfXyIgaXMgdGhlIGZ1bmN0aW9uXCdzIGRvY3VtZW50YXRpb25cbicKKyAgICAgICAgICAnICAgICAgc3RyaW5nLCBvciAiTm9uZSIgaWYgdW5hdmFpbGFibGU7ICJfX25hbWVfXyIgaXMgdGhlICcKKyAgICAgICAgICAiZnVuY3Rpb24nc1xuIgorICAgICAgICAgICcgICAgICBuYW1lOyAiX19zZWxmX18iIGlzIHNldCB0byAiTm9uZSIgKGJ1dCBzZWUgdGhlIG5leHQgaXRlbSk7XG4nCisgICAgICAgICAgJyAgICAgICJfX21vZHVsZV9fIiBpcyB0aGUgbmFtZSBvZiB0aGUgbW9kdWxlIHRoZSBmdW5jdGlvbiB3YXMgJworICAgICAgICAgICdkZWZpbmVkXG4nCisgICAgICAgICAgJyAgICAgIGluIG9yICJOb25lIiBpZiB1bmF2YWlsYWJsZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEJ1aWx0LWluIG1ldGhvZHNcbicKKyAgICAgICAgICAnICAgICAgVGhpcyBpcyByZWFsbHkgYSBkaWZmZXJlbnQgZGlzZ3Vpc2Ugb2YgYSBidWlsdC1pbiBmdW5jdGlvbiwgJworICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgJyAgICAgIHRpbWUgY29udGFpbmluZyBhbiBvYmplY3QgcGFzc2VkIHRvIHRoZSBDIGZ1bmN0aW9uIGFzIGFuXG4nCisgICAgICAgICAgJyAgICAgIGltcGxpY2l0IGV4dHJhIGFyZ3VtZW50LiAgQW4gZXhhbXBsZSBvZiBhIGJ1aWx0LWluIG1ldGhvZCBpc1xuJworICAgICAgICAgICcgICAgICAiYWxpc3QuYXBwZW5kKCkiLCBhc3N1bWluZyAqYWxpc3QqIGlzIGEgbGlzdCBvYmplY3QuIEluIHRoaXNcbicKKyAgICAgICAgICAnICAgICAgY2FzZSwgdGhlIHNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZSAiX19zZWxmX18iIGlzIHNldCB0byAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBvYmplY3QgZGVub3RlZCBieSAqYWxpc3QqLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3Nlc1xuJworICAgICAgICAgICcgICAgICBDbGFzc2VzIGFyZSBjYWxsYWJsZS4gIFRoZXNlIG9iamVjdHMgbm9ybWFsbHkgYWN0IGFzICcKKyAgICAgICAgICAnZmFjdG9yaWVzXG4nCisgICAgICAgICAgJyAgICAgIGZvciBuZXcgaW5zdGFuY2VzIG9mIHRoZW1zZWx2ZXMsIGJ1dCB2YXJpYXRpb25zIGFyZSBwb3NzaWJsZSAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICAgICBjbGFzcyB0eXBlcyB0aGF0IG92ZXJyaWRlICJfX25ld19fKCkiLiAgVGhlIGFyZ3VtZW50cyBvZiB0aGVcbicKKyAgICAgICAgICAnICAgICAgY2FsbCBhcmUgcGFzc2VkIHRvICJfX25ld19fKCkiIGFuZCwgaW4gdGhlIHR5cGljYWwgY2FzZSwgdG9cbicKKyAgICAgICAgICAnICAgICAgIl9faW5pdF9fKCkiIHRvIGluaXRpYWxpemUgdGhlIG5ldyBpbnN0YW5jZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIEluc3RhbmNlc1xuJworICAgICAgICAgICcgICAgICBJbnN0YW5jZXMgb2YgYXJiaXRyYXJ5IGNsYXNzZXMgY2FuIGJlIG1hZGUgY2FsbGFibGUgYnkgJworICAgICAgICAgICdkZWZpbmluZ1xuJworICAgICAgICAgICcgICAgICBhICJfX2NhbGxfXygpIiBtZXRob2QgaW4gdGhlaXIgY2xhc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdNb2R1bGVzXG4nCisgICAgICAgICAgJyAgIE1vZHVsZXMgYXJlIGEgYmFzaWMgb3JnYW5pemF0aW9uYWwgdW5pdCBvZiBQeXRob24gY29kZSwgYW5kIGFyZVxuJworICAgICAgICAgICcgICBjcmVhdGVkIGJ5IHRoZSBpbXBvcnQgc3lzdGVtIGFzIGludm9rZWQgZWl0aGVyIGJ5IHRoZSAiaW1wb3J0IlxuJworICAgICAgICAgICcgICBzdGF0ZW1lbnQgKHNlZSAiaW1wb3J0IiksIG9yIGJ5IGNhbGxpbmcgZnVuY3Rpb25zIHN1Y2ggYXNcbicKKyAgICAgICAgICAnICAgImltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKCkiIGFuZCBidWlsdC1pbiAiX19pbXBvcnRfXygpIi4gIEEgJworICAgICAgICAgICdtb2R1bGVcbicKKyAgICAgICAgICAnICAgb2JqZWN0IGhhcyBhIG5hbWVzcGFjZSBpbXBsZW1lbnRlZCBieSBhIGRpY3Rpb25hcnkgb2JqZWN0ICh0aGlzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgdGhlIGRpY3Rpb25hcnkgcmVmZXJlbmNlZCBieSB0aGUgIl9fZ2xvYmFsc19fIiBhdHRyaWJ1dGUgb2ZcbicKKyAgICAgICAgICAnICAgZnVuY3Rpb25zIGRlZmluZWQgaW4gdGhlIG1vZHVsZSkuICBBdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmVcbicKKyAgICAgICAgICAnICAgdHJhbnNsYXRlZCB0byBsb29rdXBzIGluIHRoaXMgZGljdGlvbmFyeSwgZS5nLiwgIm0ueCIgaXMgJworICAgICAgICAgICdlcXVpdmFsZW50XG4nCisgICAgICAgICAgJyAgIHRvICJtLl9fZGljdF9fWyJ4Il0iLiBBIG1vZHVsZSBvYmplY3QgZG9lcyBub3QgY29udGFpbiB0aGUgY29kZVxuJworICAgICAgICAgICIgICBvYmplY3QgdXNlZCB0byBpbml0aWFsaXplIHRoZSBtb2R1bGUgKHNpbmNlIGl0IGlzbid0IG5lZWRlZCAiCisgICAgICAgICAgJ29uY2VcbicKKyAgICAgICAgICAnICAgdGhlIGluaXRpYWxpemF0aW9uIGlzIGRvbmUpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQXR0cmlidXRlIGFzc2lnbm1lbnQgdXBkYXRlcyB0aGUgbW9kdWxlJ3MgbmFtZXNwYWNlIGRpY3Rpb25hcnksXG4iCisgICAgICAgICAgJyAgIGUuZy4sICJtLnggPSAxIiBpcyBlcXVpdmFsZW50IHRvICJtLl9fZGljdF9fWyJ4Il0gPSAxIi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFByZWRlZmluZWQgKHdyaXRhYmxlKSBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBtb2R1bGVcJ3MgJworICAgICAgICAgICduYW1lO1xuJworICAgICAgICAgICcgICAiX19kb2NfXyIgaXMgdGhlIG1vZHVsZVwncyBkb2N1bWVudGF0aW9uIHN0cmluZywgb3IgIk5vbmUiIGlmXG4nCisgICAgICAgICAgJyAgIHVuYXZhaWxhYmxlOyAiX19hbm5vdGF0aW9uc19fIiAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeVxuJworICAgICAgICAgICcgICBjb250YWluaW5nICp2YXJpYWJsZSBhbm5vdGF0aW9ucyogY29sbGVjdGVkIGR1cmluZyBtb2R1bGUgYm9keVxuJworICAgICAgICAgICcgICBleGVjdXRpb247ICJfX2ZpbGVfXyIgaXMgdGhlIHBhdGhuYW1lIG9mIHRoZSBmaWxlIGZyb20gd2hpY2ggJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgbW9kdWxlIHdhcyBsb2FkZWQsIGlmIGl0IHdhcyBsb2FkZWQgZnJvbSBhIGZpbGUuIFRoZSAiX19maWxlX18iXG4nCisgICAgICAgICAgJyAgIGF0dHJpYnV0ZSBtYXkgYmUgbWlzc2luZyBmb3IgY2VydGFpbiB0eXBlcyBvZiBtb2R1bGVzLCBzdWNoIGFzICcKKyAgICAgICAgICAnQ1xuJworICAgICAgICAgICcgICBtb2R1bGVzIHRoYXQgYXJlIHN0YXRpY2FsbHkgbGlua2VkIGludG8gdGhlIGludGVycHJldGVyOyBmb3JcbicKKyAgICAgICAgICAnICAgZXh0ZW5zaW9uIG1vZHVsZXMgbG9hZGVkIGR5bmFtaWNhbGx5IGZyb20gYSBzaGFyZWQgbGlicmFyeSwgaXQgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICB0aGUgcGF0aG5hbWUgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGZpbGUuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGU6ICJfX2RpY3RfXyIgaXMgdGhlIG1vZHVsZVwncyAnCisgICAgICAgICAgJ25hbWVzcGFjZVxuJworICAgICAgICAgICcgICBhcyBhIGRpY3Rpb25hcnkgb2JqZWN0LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBCZWNhdXNlIG9mIHRoZSB3YXkgQ1B5dGhvblxuJworICAgICAgICAgICcgICBjbGVhcnMgbW9kdWxlIGRpY3Rpb25hcmllcywgdGhlIG1vZHVsZSBkaWN0aW9uYXJ5IHdpbGwgYmUgJworICAgICAgICAgICdjbGVhcmVkXG4nCisgICAgICAgICAgJyAgIHdoZW4gdGhlIG1vZHVsZSBmYWxscyBvdXQgb2Ygc2NvcGUgZXZlbiBpZiB0aGUgZGljdGlvbmFyeSBzdGlsbCAnCisgICAgICAgICAgJ2hhc1xuJworICAgICAgICAgICcgICBsaXZlIHJlZmVyZW5jZXMuICBUbyBhdm9pZCB0aGlzLCBjb3B5IHRoZSBkaWN0aW9uYXJ5IG9yIGtlZXAgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgbW9kdWxlIGFyb3VuZCB3aGlsZSB1c2luZyBpdHMgZGljdGlvbmFyeSBkaXJlY3RseS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0N1c3RvbSBjbGFzc2VzXG4nCisgICAgICAgICAgJyAgIEN1c3RvbSBjbGFzcyB0eXBlcyBhcmUgdHlwaWNhbGx5IGNyZWF0ZWQgYnkgY2xhc3MgZGVmaW5pdGlvbnMgJworICAgICAgICAgICcoc2VlXG4nCisgICAgICAgICAgJyAgIHNlY3Rpb24gQ2xhc3MgZGVmaW5pdGlvbnMpLiAgQSBjbGFzcyBoYXMgYSBuYW1lc3BhY2UgaW1wbGVtZW50ZWQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICBhIGRpY3Rpb25hcnkgb2JqZWN0LiBDbGFzcyBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgdHJhbnNsYXRlZCAnCisgICAgICAgICAgJ3RvXG4nCisgICAgICAgICAgJyAgIGxvb2t1cHMgaW4gdGhpcyBkaWN0aW9uYXJ5LCBlLmcuLCAiQy54IiBpcyB0cmFuc2xhdGVkIHRvXG4nCisgICAgICAgICAgJyAgICJDLl9fZGljdF9fWyJ4Il0iIChhbHRob3VnaCB0aGVyZSBhcmUgYSBudW1iZXIgb2YgaG9va3Mgd2hpY2ggJworICAgICAgICAgICdhbGxvd1xuJworICAgICAgICAgICcgICBmb3Igb3RoZXIgbWVhbnMgb2YgbG9jYXRpbmcgYXR0cmlidXRlcykuIFdoZW4gdGhlIGF0dHJpYnV0ZSBuYW1lICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgbm90IGZvdW5kIHRoZXJlLCB0aGUgYXR0cmlidXRlIHNlYXJjaCBjb250aW51ZXMgaW4gdGhlIGJhc2VcbicKKyAgICAgICAgICAnICAgY2xhc3Nlcy4gVGhpcyBzZWFyY2ggb2YgdGhlIGJhc2UgY2xhc3NlcyB1c2VzIHRoZSBDMyBtZXRob2RcbicKKyAgICAgICAgICAnICAgcmVzb2x1dGlvbiBvcmRlciB3aGljaCBiZWhhdmVzIGNvcnJlY3RseSBldmVuIGluIHRoZSBwcmVzZW5jZSAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgIiAgICdkaWFtb25kJyBpbmhlcml0YW5jZSBzdHJ1Y3R1cmVzIHdoZXJlIHRoZXJlIGFyZSBtdWx0aXBsZVxuIgorICAgICAgICAgICcgICBpbmhlcml0YW5jZSBwYXRocyBsZWFkaW5nIGJhY2sgdG8gYSBjb21tb24gYW5jZXN0b3IuIEFkZGl0aW9uYWxcbicKKyAgICAgICAgICAnICAgZGV0YWlscyBvbiB0aGUgQzMgTVJPIHVzZWQgYnkgUHl0aG9uIGNhbiBiZSBmb3VuZCBpbiB0aGVcbicKKyAgICAgICAgICAnICAgZG9jdW1lbnRhdGlvbiBhY2NvbXBhbnlpbmcgdGhlIDIuMyByZWxlYXNlIGF0XG4nCisgICAgICAgICAgJyAgIGh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvcmVsZWFzZXMvMi4zL21yby8uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBXaGVuIGEgY2xhc3MgYXR0cmlidXRlIHJlZmVyZW5jZSAoZm9yIGNsYXNzICJDIiwgc2F5KSB3b3VsZCAnCisgICAgICAgICAgJ3lpZWxkIGFcbicKKyAgICAgICAgICAnICAgY2xhc3MgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byBhbiBpbnN0YW5jZSBtZXRob2RcbicKKyAgICAgICAgICAnICAgb2JqZWN0IHdob3NlICJfX3NlbGZfXyIgYXR0cmlidXRlcyBpcyAiQyIuICBXaGVuIGl0IHdvdWxkIHlpZWxkICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICcgICBzdGF0aWMgbWV0aG9kIG9iamVjdCwgaXQgaXMgdHJhbnNmb3JtZWQgaW50byB0aGUgb2JqZWN0IHdyYXBwZWQgJworICAgICAgICAgICdieVxuJworICAgICAgICAgICcgICB0aGUgc3RhdGljIG1ldGhvZCBvYmplY3QuIFNlZSBzZWN0aW9uIEltcGxlbWVudGluZyBEZXNjcmlwdG9ycyAnCisgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICcgICBhbm90aGVyIHdheSBpbiB3aGljaCBhdHRyaWJ1dGVzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3MgbWF5ICcKKyAgICAgICAgICAnZGlmZmVyXG4nCisgICAgICAgICAgJyAgIGZyb20gdGhvc2UgYWN0dWFsbHkgY29udGFpbmVkIGluIGl0cyAiX19kaWN0X18iLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAiICAgQ2xhc3MgYXR0cmlidXRlIGFzc2lnbm1lbnRzIHVwZGF0ZSB0aGUgY2xhc3MncyBkaWN0aW9uYXJ5LCAiCisgICAgICAgICAgJ25ldmVyXG4nCisgICAgICAgICAgJyAgIHRoZSBkaWN0aW9uYXJ5IG9mIGEgYmFzZSBjbGFzcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEEgY2xhc3Mgb2JqZWN0IGNhbiBiZSBjYWxsZWQgKHNlZSBhYm92ZSkgdG8geWllbGQgYSBjbGFzcyAnCisgICAgICAgICAgJ2luc3RhbmNlXG4nCisgICAgICAgICAgJyAgIChzZWUgYmVsb3cpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19uYW1lX18iIGlzIHRoZSBjbGFzcyBuYW1lOyAiX19tb2R1bGVfXyIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICB0aGUgbW9kdWxlIG5hbWUgaW4gd2hpY2ggdGhlIGNsYXNzIHdhcyBkZWZpbmVkOyAiX19kaWN0X18iIGlzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIGRpY3Rpb25hcnkgY29udGFpbmluZyB0aGUgY2xhc3NcJ3MgbmFtZXNwYWNlOyAiX19iYXNlc19fIiBpcyBhICcKKyAgICAgICAgICAndHVwbGVcbicKKyAgICAgICAgICAnICAgKHBvc3NpYmx5IGVtcHR5IG9yIGEgc2luZ2xldG9uKSBjb250YWluaW5nIHRoZSBiYXNlIGNsYXNzZXMsIGluICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgIG9yZGVyIG9mIHRoZWlyIG9jY3VycmVuY2UgaW4gdGhlIGJhc2UgY2xhc3MgbGlzdDsgIl9fZG9jX18iIGlzICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgIiAgIGNsYXNzJ3MgZG9jdW1lbnRhdGlvbiBzdHJpbmcsIG9yIE5vbmUgaWYgdW5kZWZpbmVkO1xuIgorICAgICAgICAgICcgICAiX19hbm5vdGF0aW9uc19fIiAob3B0aW9uYWwpIGlzIGEgZGljdGlvbmFyeSBjb250YWluaW5nICcKKyAgICAgICAgICAnKnZhcmlhYmxlXG4nCisgICAgICAgICAgJyAgIGFubm90YXRpb25zKiBjb2xsZWN0ZWQgZHVyaW5nIGNsYXNzIGJvZHkgZXhlY3V0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQ2xhc3MgaW5zdGFuY2VzXG4nCisgICAgICAgICAgJyAgIEEgY2xhc3MgaW5zdGFuY2UgaXMgY3JlYXRlZCBieSBjYWxsaW5nIGEgY2xhc3Mgb2JqZWN0IChzZWUgJworICAgICAgICAgICdhYm92ZSkuXG4nCisgICAgICAgICAgJyAgIEEgY2xhc3MgaW5zdGFuY2UgaGFzIGEgbmFtZXNwYWNlIGltcGxlbWVudGVkIGFzIGEgZGljdGlvbmFyeSAnCisgICAgICAgICAgJ3doaWNoXG4nCisgICAgICAgICAgJyAgIGlzIHRoZSBmaXJzdCBwbGFjZSBpbiB3aGljaCBhdHRyaWJ1dGUgcmVmZXJlbmNlcyBhcmUgc2VhcmNoZWQuXG4nCisgICAgICAgICAgIiAgIFdoZW4gYW4gYXR0cmlidXRlIGlzIG5vdCBmb3VuZCB0aGVyZSwgYW5kIHRoZSBpbnN0YW5jZSdzIGNsYXNzICIKKyAgICAgICAgICAnaGFzXG4nCisgICAgICAgICAgJyAgIGFuIGF0dHJpYnV0ZSBieSB0aGF0IG5hbWUsIHRoZSBzZWFyY2ggY29udGludWVzIHdpdGggdGhlIGNsYXNzXG4nCisgICAgICAgICAgJyAgIGF0dHJpYnV0ZXMuICBJZiBhIGNsYXNzIGF0dHJpYnV0ZSBpcyBmb3VuZCB0aGF0IGlzIGEgJworICAgICAgICAgICd1c2VyLWRlZmluZWRcbicKKyAgICAgICAgICAnICAgZnVuY3Rpb24gb2JqZWN0LCBpdCBpcyB0cmFuc2Zvcm1lZCBpbnRvIGFuIGluc3RhbmNlIG1ldGhvZCAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICB3aG9zZSAiX19zZWxmX18iIGF0dHJpYnV0ZSBpcyB0aGUgaW5zdGFuY2UuICBTdGF0aWMgbWV0aG9kIGFuZFxuJworICAgICAgICAgICcgICBjbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgYWxzbyB0cmFuc2Zvcm1lZDsgc2VlIGFib3ZlIHVuZGVyXG4nCisgICAgICAgICAgJyAgICJDbGFzc2VzIi4gIFNlZSBzZWN0aW9uIEltcGxlbWVudGluZyBEZXNjcmlwdG9ycyBmb3IgYW5vdGhlciB3YXkgJworICAgICAgICAgICdpblxuJworICAgICAgICAgICcgICB3aGljaCBhdHRyaWJ1dGVzIG9mIGEgY2xhc3MgcmV0cmlldmVkIHZpYSBpdHMgaW5zdGFuY2VzIG1heSAnCisgICAgICAgICAgJ2RpZmZlclxuJworICAgICAgICAgICcgICBmcm9tIHRoZSBvYmplY3RzIGFjdHVhbGx5IHN0b3JlZCBpbiB0aGUgY2xhc3NcJ3MgIl9fZGljdF9fIi4gIElmICcKKyAgICAgICAgICAnbm9cbicKKyAgICAgICAgICAiICAgY2xhc3MgYXR0cmlidXRlIGlzIGZvdW5kLCBhbmQgdGhlIG9iamVjdCdzIGNsYXNzIGhhcyBhXG4iCisgICAgICAgICAgJyAgICJfX2dldGF0dHJfXygpIiBtZXRob2QsIHRoYXQgaXMgY2FsbGVkIHRvIHNhdGlzZnkgdGhlIGxvb2t1cC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgIiAgIEF0dHJpYnV0ZSBhc3NpZ25tZW50cyBhbmQgZGVsZXRpb25zIHVwZGF0ZSB0aGUgaW5zdGFuY2Unc1xuIgorICAgICAgICAgICIgICBkaWN0aW9uYXJ5LCBuZXZlciBhIGNsYXNzJ3MgZGljdGlvbmFyeS4gIElmIHRoZSBjbGFzcyBoYXMgYVxuIgorICAgICAgICAgICcgICAiX19zZXRhdHRyX18oKSIgb3IgIl9fZGVsYXR0cl9fKCkiIG1ldGhvZCwgdGhpcyBpcyBjYWxsZWQgJworICAgICAgICAgICdpbnN0ZWFkXG4nCisgICAgICAgICAgJyAgIG9mIHVwZGF0aW5nIHRoZSBpbnN0YW5jZSBkaWN0aW9uYXJ5IGRpcmVjdGx5LlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgQ2xhc3MgaW5zdGFuY2VzIGNhbiBwcmV0ZW5kIHRvIGJlIG51bWJlcnMsIHNlcXVlbmNlcywgb3IgJworICAgICAgICAgICdtYXBwaW5nc1xuJworICAgICAgICAgICcgICBpZiB0aGV5IGhhdmUgbWV0aG9kcyB3aXRoIGNlcnRhaW4gc3BlY2lhbCBuYW1lcy4gIFNlZSBzZWN0aW9uXG4nCisgICAgICAgICAgJyAgIFNwZWNpYWwgbWV0aG9kIG5hbWVzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3BlY2lhbCBhdHRyaWJ1dGVzOiAiX19kaWN0X18iIGlzIHRoZSBhdHRyaWJ1dGUgZGljdGlvbmFyeTtcbicKKyAgICAgICAgICAnICAgIl9fY2xhc3NfXyIgaXMgdGhlIGluc3RhbmNlXCdzIGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSS9PIG9iamVjdHMgKGFsc28ga25vd24gYXMgZmlsZSBvYmplY3RzKVxuJworICAgICAgICAgICcgICBBICpmaWxlIG9iamVjdCogcmVwcmVzZW50cyBhbiBvcGVuIGZpbGUuICBWYXJpb3VzIHNob3J0Y3V0cyBhcmVcbicKKyAgICAgICAgICAnICAgYXZhaWxhYmxlIHRvIGNyZWF0ZSBmaWxlIG9iamVjdHM6IHRoZSAib3BlbigpIiBidWlsdC1pbiAnCisgICAgICAgICAgJ2Z1bmN0aW9uLFxuJworICAgICAgICAgICcgICBhbmQgYWxzbyAib3MucG9wZW4oKSIsICJvcy5mZG9wZW4oKSIsIGFuZCB0aGUgIm1ha2VmaWxlKCkiICcKKyAgICAgICAgICAnbWV0aG9kXG4nCisgICAgICAgICAgJyAgIG9mIHNvY2tldCBvYmplY3RzIChhbmQgcGVyaGFwcyBieSBvdGhlciBmdW5jdGlvbnMgb3IgbWV0aG9kc1xuJworICAgICAgICAgICcgICBwcm92aWRlZCBieSBleHRlbnNpb24gbW9kdWxlcykuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBUaGUgb2JqZWN0cyAic3lzLnN0ZGluIiwgInN5cy5zdGRvdXQiIGFuZCAic3lzLnN0ZGVyciIgYXJlXG4nCisgICAgICAgICAgIiAgIGluaXRpYWxpemVkIHRvIGZpbGUgb2JqZWN0cyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpbnRlcnByZXRlcidzXG4iCisgICAgICAgICAgJyAgIHN0YW5kYXJkIGlucHV0LCBvdXRwdXQgYW5kIGVycm9yIHN0cmVhbXM7IHRoZXkgYXJlIGFsbCBvcGVuIGluICcKKyAgICAgICAgICAndGV4dFxuJworICAgICAgICAgICcgICBtb2RlIGFuZCB0aGVyZWZvcmUgZm9sbG93IHRoZSBpbnRlcmZhY2UgZGVmaW5lZCBieSB0aGVcbicKKyAgICAgICAgICAnICAgImlvLlRleHRJT0Jhc2UiIGFic3RyYWN0IGNsYXNzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSW50ZXJuYWwgdHlwZXNcbicKKyAgICAgICAgICAnICAgQSBmZXcgdHlwZXMgdXNlZCBpbnRlcm5hbGx5IGJ5IHRoZSBpbnRlcnByZXRlciBhcmUgZXhwb3NlZCB0byAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICB1c2VyLiBUaGVpciBkZWZpbml0aW9ucyBtYXkgY2hhbmdlIHdpdGggZnV0dXJlIHZlcnNpb25zIG9mIHRoZVxuJworICAgICAgICAgICcgICBpbnRlcnByZXRlciwgYnV0IHRoZXkgYXJlIG1lbnRpb25lZCBoZXJlIGZvciBjb21wbGV0ZW5lc3MuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICBDb2RlIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgQ29kZSBvYmplY3RzIHJlcHJlc2VudCAqYnl0ZS1jb21waWxlZCogZXhlY3V0YWJsZSBQeXRob24gJworICAgICAgICAgICdjb2RlLFxuJworICAgICAgICAgICcgICAgICBvciAqYnl0ZWNvZGUqLiBUaGUgZGlmZmVyZW5jZSBiZXR3ZWVuIGEgY29kZSBvYmplY3QgYW5kIGFcbicKKyAgICAgICAgICAnICAgICAgZnVuY3Rpb24gb2JqZWN0IGlzIHRoYXQgdGhlIGZ1bmN0aW9uIG9iamVjdCBjb250YWlucyBhbiAnCisgICAgICAgICAgJ2V4cGxpY2l0XG4nCisgICAgICAgICAgIiAgICAgIHJlZmVyZW5jZSB0byB0aGUgZnVuY3Rpb24ncyBnbG9iYWxzICh0aGUgbW9kdWxlIGluIHdoaWNoIGl0ICIKKyAgICAgICAgICAnd2FzXG4nCisgICAgICAgICAgJyAgICAgIGRlZmluZWQpLCB3aGlsZSBhIGNvZGUgb2JqZWN0IGNvbnRhaW5zIG5vIGNvbnRleHQ7IGFsc28gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGRlZmF1bHQgYXJndW1lbnQgdmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIGZ1bmN0aW9uIG9iamVjdCwgJworICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAnICAgICAgaW4gdGhlIGNvZGUgb2JqZWN0IChiZWNhdXNlIHRoZXkgcmVwcmVzZW50IHZhbHVlcyBjYWxjdWxhdGVkICcKKyAgICAgICAgICAnYXRcbicKKyAgICAgICAgICAnICAgICAgcnVuLXRpbWUpLiAgVW5saWtlIGZ1bmN0aW9uIG9iamVjdHMsIGNvZGUgb2JqZWN0cyBhcmUgJworICAgICAgICAgICdpbW11dGFibGVcbicKKyAgICAgICAgICAnICAgICAgYW5kIGNvbnRhaW4gbm8gcmVmZXJlbmNlcyAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgdG8gJworICAgICAgICAgICdtdXRhYmxlXG4nCisgICAgICAgICAgJyAgICAgIG9iamVjdHMuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBTcGVjaWFsIHJlYWQtb25seSBhdHRyaWJ1dGVzOiAiY29fbmFtZSIgZ2l2ZXMgdGhlIGZ1bmN0aW9uICcKKyAgICAgICAgICAnbmFtZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX2FyZ2NvdW50IiBpcyB0aGUgbnVtYmVyIG9mIHBvc2l0aW9uYWwgYXJndW1lbnRzICcKKyAgICAgICAgICAnKGluY2x1ZGluZ1xuJworICAgICAgICAgICcgICAgICBhcmd1bWVudHMgd2l0aCBkZWZhdWx0IHZhbHVlcyk7ICJjb19ubG9jYWxzIiBpcyB0aGUgbnVtYmVyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgbG9jYWwgdmFyaWFibGVzIHVzZWQgYnkgdGhlIGZ1bmN0aW9uIChpbmNsdWRpbmcgYXJndW1lbnRzKTtcbicKKyAgICAgICAgICAnICAgICAgImNvX3Zhcm5hbWVzIiBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIHRoZSBsb2NhbFxuJworICAgICAgICAgICcgICAgICB2YXJpYWJsZXMgKHN0YXJ0aW5nIHdpdGggdGhlIGFyZ3VtZW50IG5hbWVzKTsgImNvX2NlbGx2YXJzIiAnCisgICAgICAgICAgJ2lzIGFcbicKKyAgICAgICAgICAnICAgICAgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgb2YgbG9jYWwgdmFyaWFibGVzIHRoYXQgYXJlXG4nCisgICAgICAgICAgJyAgICAgIHJlZmVyZW5jZWQgYnkgbmVzdGVkIGZ1bmN0aW9uczsgImNvX2ZyZWV2YXJzIiBpcyBhIHR1cGxlXG4nCisgICAgICAgICAgJyAgICAgIGNvbnRhaW5pbmcgdGhlIG5hbWVzIG9mIGZyZWUgdmFyaWFibGVzOyAiY29fY29kZSIgaXMgYSAnCisgICAgICAgICAgJ3N0cmluZ1xuJworICAgICAgICAgICcgICAgICByZXByZXNlbnRpbmcgdGhlIHNlcXVlbmNlIG9mIGJ5dGVjb2RlIGluc3RydWN0aW9uczsgJworICAgICAgICAgICciY29fY29uc3RzIlxuJworICAgICAgICAgICcgICAgICBpcyBhIHR1cGxlIGNvbnRhaW5pbmcgdGhlIGxpdGVyYWxzIHVzZWQgYnkgdGhlIGJ5dGVjb2RlO1xuJworICAgICAgICAgICcgICAgICAiY29fbmFtZXMiIGlzIGEgdHVwbGUgY29udGFpbmluZyB0aGUgbmFtZXMgdXNlZCBieSB0aGUgJworICAgICAgICAgICdieXRlY29kZTtcbicKKyAgICAgICAgICAnICAgICAgImNvX2ZpbGVuYW1lIiBpcyB0aGUgZmlsZW5hbWUgZnJvbSB3aGljaCB0aGUgY29kZSB3YXMgJworICAgICAgICAgICdjb21waWxlZDtcbicKKyAgICAgICAgICAnICAgICAgImNvX2ZpcnN0bGluZW5vIiBpcyB0aGUgZmlyc3QgbGluZSBudW1iZXIgb2YgdGhlIGZ1bmN0aW9uO1xuJworICAgICAgICAgICcgICAgICAiY29fbG5vdGFiIiBpcyBhIHN0cmluZyBlbmNvZGluZyB0aGUgbWFwcGluZyBmcm9tIGJ5dGVjb2RlXG4nCisgICAgICAgICAgJyAgICAgIG9mZnNldHMgdG8gbGluZSBudW1iZXJzIChmb3IgZGV0YWlscyBzZWUgdGhlIHNvdXJjZSBjb2RlIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIGludGVycHJldGVyKTsgImNvX3N0YWNrc2l6ZSIgaXMgdGhlIHJlcXVpcmVkIHN0YWNrIHNpemVcbicKKyAgICAgICAgICAnICAgICAgKGluY2x1ZGluZyBsb2NhbCB2YXJpYWJsZXMpOyAiY29fZmxhZ3MiIGlzIGFuIGludGVnZXIgJworICAgICAgICAgICdlbmNvZGluZyBhXG4nCisgICAgICAgICAgJyAgICAgIG51bWJlciBvZiBmbGFncyBmb3IgdGhlIGludGVycHJldGVyLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgVGhlIGZvbGxvd2luZyBmbGFnIGJpdHMgYXJlIGRlZmluZWQgZm9yICJjb19mbGFncyI6IGJpdCAnCisgICAgICAgICAgJyIweDA0IlxuJworICAgICAgICAgICcgICAgICBpcyBzZXQgaWYgdGhlIGZ1bmN0aW9uIHVzZXMgdGhlICIqYXJndW1lbnRzIiBzeW50YXggdG8gYWNjZXB0ICcKKyAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAnICAgICAgYXJiaXRyYXJ5IG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50czsgYml0ICIweDA4IiBpcyBzZXQgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICB0aGUgZnVuY3Rpb24gdXNlcyB0aGUgIioqa2V5d29yZHMiIHN5bnRheCB0byBhY2NlcHQgJworICAgICAgICAgICdhcmJpdHJhcnlcbicKKyAgICAgICAgICAnICAgICAga2V5d29yZCBhcmd1bWVudHM7IGJpdCAiMHgyMCIgaXMgc2V0IGlmIHRoZSBmdW5jdGlvbiBpcyBhXG4nCisgICAgICAgICAgJyAgICAgIGdlbmVyYXRvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEZ1dHVyZSBmZWF0dXJlIGRlY2xhcmF0aW9ucyAoImZyb20gX19mdXR1cmVfXyBpbXBvcnQgJworICAgICAgICAgICdkaXZpc2lvbiIpXG4nCisgICAgICAgICAgJyAgICAgIGFsc28gdXNlIGJpdHMgaW4gImNvX2ZsYWdzIiB0byBpbmRpY2F0ZSB3aGV0aGVyIGEgY29kZSAnCisgICAgICAgICAgJ29iamVjdFxuJworICAgICAgICAgICcgICAgICB3YXMgY29tcGlsZWQgd2l0aCBhIHBhcnRpY3VsYXIgZmVhdHVyZSBlbmFibGVkOiBiaXQgIjB4MjAwMCIgJworICAgICAgICAgICdpc1xuJworICAgICAgICAgICcgICAgICBzZXQgaWYgdGhlIGZ1bmN0aW9uIHdhcyBjb21waWxlZCB3aXRoIGZ1dHVyZSBkaXZpc2lvbiAnCisgICAgICAgICAgJ2VuYWJsZWQ7XG4nCisgICAgICAgICAgJyAgICAgIGJpdHMgIjB4MTAiIGFuZCAiMHgxMDAwIiB3ZXJlIHVzZWQgaW4gZWFybGllciB2ZXJzaW9ucyBvZlxuJworICAgICAgICAgICcgICAgICBQeXRob24uXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBPdGhlciBiaXRzIGluICJjb19mbGFncyIgYXJlIHJlc2VydmVkIGZvciBpbnRlcm5hbCB1c2UuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICBJZiBhIGNvZGUgb2JqZWN0IHJlcHJlc2VudHMgYSBmdW5jdGlvbiwgdGhlIGZpcnN0IGl0ZW0gaW5cbicKKyAgICAgICAgICAnICAgICAgImNvX2NvbnN0cyIgaXMgdGhlIGRvY3VtZW50YXRpb24gc3RyaW5nIG9mIHRoZSBmdW5jdGlvbiwgb3JcbicKKyAgICAgICAgICAnICAgICAgIk5vbmUiIGlmIHVuZGVmaW5lZC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIEZyYW1lIG9iamVjdHNcbicKKyAgICAgICAgICAnICAgICAgRnJhbWUgb2JqZWN0cyByZXByZXNlbnQgZXhlY3V0aW9uIGZyYW1lcy4gIFRoZXkgbWF5IG9jY3VyIGluXG4nCisgICAgICAgICAgJyAgICAgIHRyYWNlYmFjayBvYmplY3RzIChzZWUgYmVsb3cpLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogImZfYmFjayIgaXMgdG8gdGhlIHByZXZpb3VzICcKKyAgICAgICAgICAnc3RhY2tcbicKKyAgICAgICAgICAnICAgICAgZnJhbWUgKHRvd2FyZHMgdGhlIGNhbGxlciksIG9yICJOb25lIiBpZiB0aGlzIGlzIHRoZSBib3R0b21cbicKKyAgICAgICAgICAnICAgICAgc3RhY2sgZnJhbWU7ICJmX2NvZGUiIGlzIHRoZSBjb2RlIG9iamVjdCBiZWluZyBleGVjdXRlZCBpbiAnCisgICAgICAgICAgJ3RoaXNcbicKKyAgICAgICAgICAnICAgICAgZnJhbWU7ICJmX2xvY2FscyIgaXMgdGhlIGRpY3Rpb25hcnkgdXNlZCB0byBsb29rIHVwIGxvY2FsXG4nCisgICAgICAgICAgJyAgICAgIHZhcmlhYmxlczsgImZfZ2xvYmFscyIgaXMgdXNlZCBmb3IgZ2xvYmFsIHZhcmlhYmxlcztcbicKKyAgICAgICAgICAnICAgICAgImZfYnVpbHRpbnMiIGlzIHVzZWQgZm9yIGJ1aWx0LWluIChpbnRyaW5zaWMpIG5hbWVzOyAnCisgICAgICAgICAgJyJmX2xhc3RpIlxuJworICAgICAgICAgICcgICAgICBnaXZlcyB0aGUgcHJlY2lzZSBpbnN0cnVjdGlvbiAodGhpcyBpcyBhbiBpbmRleCBpbnRvIHRoZVxuJworICAgICAgICAgICcgICAgICBieXRlY29kZSBzdHJpbmcgb2YgdGhlIGNvZGUgb2JqZWN0KS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgd3JpdGFibGUgYXR0cmlidXRlczogImZfdHJhY2UiLCBpZiBub3QgIk5vbmUiLCBpcyBhXG4nCisgICAgICAgICAgJyAgICAgIGZ1bmN0aW9uIGNhbGxlZCBhdCB0aGUgc3RhcnQgb2YgZWFjaCBzb3VyY2UgY29kZSBsaW5lICh0aGlzICcKKyAgICAgICAgICAnaXNcbicKKyAgICAgICAgICAnICAgICAgdXNlZCBieSB0aGUgZGVidWdnZXIpOyAiZl9saW5lbm8iIGlzIHRoZSBjdXJyZW50IGxpbmUgbnVtYmVyICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGZyYW1lIC0tLSB3cml0aW5nIHRvIHRoaXMgZnJvbSB3aXRoaW4gYSB0cmFjZSBmdW5jdGlvbiAnCisgICAgICAgICAgJ2p1bXBzXG4nCisgICAgICAgICAgJyAgICAgIHRvIHRoZSBnaXZlbiBsaW5lIChvbmx5IGZvciB0aGUgYm90dG9tLW1vc3QgZnJhbWUpLiAgQSAnCisgICAgICAgICAgJ2RlYnVnZ2VyXG4nCisgICAgICAgICAgJyAgICAgIGNhbiBpbXBsZW1lbnQgYSBKdW1wIGNvbW1hbmQgKGFrYSBTZXQgTmV4dCBTdGF0ZW1lbnQpIGJ5ICcKKyAgICAgICAgICAnd3JpdGluZ1xuJworICAgICAgICAgICcgICAgICB0byBmX2xpbmVuby5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIEZyYW1lIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgZnJhbWUuY2xlYXIoKVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgICAgVGhpcyBtZXRob2QgY2xlYXJzIGFsbCByZWZlcmVuY2VzIHRvIGxvY2FsIHZhcmlhYmxlcyBoZWxkICcKKyAgICAgICAgICAnYnlcbicKKyAgICAgICAgICAnICAgICAgICAgdGhlIGZyYW1lLiAgQWxzbywgaWYgdGhlIGZyYW1lIGJlbG9uZ2VkIHRvIGEgZ2VuZXJhdG9yLCAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICAgICBnZW5lcmF0b3IgaXMgZmluYWxpemVkLiAgVGhpcyBoZWxwcyBicmVhayByZWZlcmVuY2UgJworICAgICAgICAgICdjeWNsZXNcbicKKyAgICAgICAgICAnICAgICAgICAgaW52b2x2aW5nIGZyYW1lIG9iamVjdHMgKGZvciBleGFtcGxlIHdoZW4gY2F0Y2hpbmcgYW5cbicKKyAgICAgICAgICAnICAgICAgICAgZXhjZXB0aW9uIGFuZCBzdG9yaW5nIGl0cyB0cmFjZWJhY2sgZm9yIGxhdGVyIHVzZSkuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICAiUnVudGltZUVycm9yIiBpcyByYWlzZWQgaWYgdGhlIGZyYW1lIGlzIGN1cnJlbnRseSAnCisgICAgICAgICAgJ2V4ZWN1dGluZy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgICAgIE5ldyBpbiB2ZXJzaW9uIDMuNC5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIFRyYWNlYmFjayBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFRyYWNlYmFjayBvYmplY3RzIHJlcHJlc2VudCBhIHN0YWNrIHRyYWNlIG9mIGFuIGV4Y2VwdGlvbi4gICcKKyAgICAgICAgICAnQVxuJworICAgICAgICAgICcgICAgICB0cmFjZWJhY2sgb2JqZWN0IGlzIGNyZWF0ZWQgd2hlbiBhbiBleGNlcHRpb24gb2NjdXJzLiAgV2hlbiAnCisgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICcgICAgICBzZWFyY2ggZm9yIGFuIGV4Y2VwdGlvbiBoYW5kbGVyIHVud2luZHMgdGhlIGV4ZWN1dGlvbiBzdGFjaywgJworICAgICAgICAgICdhdFxuJworICAgICAgICAgICcgICAgICBlYWNoIHVud291bmQgbGV2ZWwgYSB0cmFjZWJhY2sgb2JqZWN0IGlzIGluc2VydGVkIGluIGZyb250ICcKKyAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAnICAgICAgdGhlIGN1cnJlbnQgdHJhY2ViYWNrLiAgV2hlbiBhbiBleGNlcHRpb24gaGFuZGxlciBpcyAnCisgICAgICAgICAgJ2VudGVyZWQsXG4nCisgICAgICAgICAgJyAgICAgIHRoZSBzdGFjayB0cmFjZSBpcyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgcHJvZ3JhbS4gKFNlZSAnCisgICAgICAgICAgJ3NlY3Rpb25cbicKKyAgICAgICAgICAnICAgICAgVGhlIHRyeSBzdGF0ZW1lbnQuKSBJdCBpcyBhY2Nlc3NpYmxlIGFzIHRoZSB0aGlyZCBpdGVtIG9mICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHR1cGxlIHJldHVybmVkIGJ5ICJzeXMuZXhjX2luZm8oKSIuIFdoZW4gdGhlIHByb2dyYW0gY29udGFpbnMgJworICAgICAgICAgICdub1xuJworICAgICAgICAgICcgICAgICBzdWl0YWJsZSBoYW5kbGVyLCB0aGUgc3RhY2sgdHJhY2UgaXMgd3JpdHRlbiAobmljZWx5ICcKKyAgICAgICAgICAnZm9ybWF0dGVkKVxuJworICAgICAgICAgICcgICAgICB0byB0aGUgc3RhbmRhcmQgZXJyb3Igc3RyZWFtOyBpZiB0aGUgaW50ZXJwcmV0ZXIgaXMgJworICAgICAgICAgICdpbnRlcmFjdGl2ZSxcbicKKyAgICAgICAgICAnICAgICAgaXQgaXMgYWxzbyBtYWRlIGF2YWlsYWJsZSB0byB0aGUgdXNlciBhcyAnCisgICAgICAgICAgJyJzeXMubGFzdF90cmFjZWJhY2siLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgU3BlY2lhbCByZWFkLW9ubHkgYXR0cmlidXRlczogInRiX25leHQiIGlzIHRoZSBuZXh0IGxldmVsIGluICcKKyAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgJyAgICAgIHN0YWNrIHRyYWNlICh0b3dhcmRzIHRoZSBmcmFtZSB3aGVyZSB0aGUgZXhjZXB0aW9uIG9jY3VycmVkKSwgJworICAgICAgICAgICdvclxuJworICAgICAgICAgICcgICAgICAiTm9uZSIgaWYgdGhlcmUgaXMgbm8gbmV4dCBsZXZlbDsgInRiX2ZyYW1lIiBwb2ludHMgdG8gdGhlXG4nCisgICAgICAgICAgJyAgICAgIGV4ZWN1dGlvbiBmcmFtZSBvZiB0aGUgY3VycmVudCBsZXZlbDsgInRiX2xpbmVubyIgZ2l2ZXMgdGhlICcKKyAgICAgICAgICAnbGluZVxuJworICAgICAgICAgICcgICAgICBudW1iZXIgd2hlcmUgdGhlIGV4Y2VwdGlvbiBvY2N1cnJlZDsgInRiX2xhc3RpIiBpbmRpY2F0ZXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgcHJlY2lzZSBpbnN0cnVjdGlvbi4gIFRoZSBsaW5lIG51bWJlciBhbmQgbGFzdCBpbnN0cnVjdGlvbiAnCisgICAgICAgICAgJ2luXG4nCisgICAgICAgICAgJyAgICAgIHRoZSB0cmFjZWJhY2sgbWF5IGRpZmZlciBmcm9tIHRoZSBsaW5lIG51bWJlciBvZiBpdHMgZnJhbWVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGlmIHRoZSBleGNlcHRpb24gb2NjdXJyZWQgaW4gYSAidHJ5IiBzdGF0ZW1lbnQgd2l0aCAnCisgICAgICAgICAgJ25vXG4nCisgICAgICAgICAgJyAgICAgIG1hdGNoaW5nIGV4Y2VwdCBjbGF1c2Ugb3Igd2l0aCBhIGZpbmFsbHkgY2xhdXNlLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU2xpY2Ugb2JqZWN0c1xuJworICAgICAgICAgICcgICAgICBTbGljZSBvYmplY3RzIGFyZSB1c2VkIHRvIHJlcHJlc2VudCBzbGljZXMgZm9yICcKKyAgICAgICAgICAnIl9fZ2V0aXRlbV9fKCkiXG4nCisgICAgICAgICAgJyAgICAgIG1ldGhvZHMuICBUaGV5IGFyZSBhbHNvIGNyZWF0ZWQgYnkgdGhlIGJ1aWx0LWluICJzbGljZSgpIlxuJworICAgICAgICAgICcgICAgICBmdW5jdGlvbi5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNwZWNpYWwgcmVhZC1vbmx5IGF0dHJpYnV0ZXM6ICJzdGFydCIgaXMgdGhlIGxvd2VyIGJvdW5kOyAnCisgICAgICAgICAgJyJzdG9wIlxuJworICAgICAgICAgICcgICAgICBpcyB0aGUgdXBwZXIgYm91bmQ7ICJzdGVwIiBpcyB0aGUgc3RlcCB2YWx1ZTsgZWFjaCBpcyAiTm9uZSIgJworICAgICAgICAgICdpZlxuJworICAgICAgICAgICcgICAgICBvbWl0dGVkLiAgVGhlc2UgYXR0cmlidXRlcyBjYW4gaGF2ZSBhbnkgdHlwZS5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgICAgIFNsaWNlIG9iamVjdHMgc3VwcG9ydCBvbmUgbWV0aG9kOlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgICAgc2xpY2UuaW5kaWNlcyhzZWxmLCBsZW5ndGgpXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICAgICAgICBUaGlzIG1ldGhvZCB0YWtlcyBhIHNpbmdsZSBpbnRlZ2VyIGFyZ3VtZW50ICpsZW5ndGgqIGFuZFxuJworICAgICAgICAgICcgICAgICAgICBjb21wdXRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc2xpY2UgdGhhdCB0aGUgc2xpY2UgJworICAgICAgICAgICdvYmplY3RcbicKKyAgICAgICAgICAnICAgICAgICAgd291bGQgZGVzY3JpYmUgaWYgYXBwbGllZCB0byBhIHNlcXVlbmNlIG9mICpsZW5ndGgqICcKKyAgICAgICAgICAnaXRlbXMuXG4nCisgICAgICAgICAgJyAgICAgICAgIEl0IHJldHVybnMgYSB0dXBsZSBvZiB0aHJlZSBpbnRlZ2VyczsgcmVzcGVjdGl2ZWx5IHRoZXNlICcKKyAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgJyAgICAgICAgIHRoZSAqc3RhcnQqIGFuZCAqc3RvcCogaW5kaWNlcyBhbmQgdGhlICpzdGVwKiBvciBzdHJpZGVcbicKKyAgICAgICAgICAnICAgICAgICAgbGVuZ3RoIG9mIHRoZSBzbGljZS4gTWlzc2luZyBvciBvdXQtb2YtYm91bmRzIGluZGljZXMgYXJlXG4nCisgICAgICAgICAgJyAgICAgICAgIGhhbmRsZWQgaW4gYSBtYW5uZXIgY29uc2lzdGVudCB3aXRoIHJlZ3VsYXIgc2xpY2VzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgU3RhdGljIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBwcm92aWRlIGEgd2F5IG9mIGRlZmVhdGluZyB0aGVcbicKKyAgICAgICAgICAnICAgICAgdHJhbnNmb3JtYXRpb24gb2YgZnVuY3Rpb24gb2JqZWN0cyB0byBtZXRob2Qgb2JqZWN0cyAnCisgICAgICAgICAgJ2Rlc2NyaWJlZFxuJworICAgICAgICAgICcgICAgICBhYm92ZS4gQSBzdGF0aWMgbWV0aG9kIG9iamVjdCBpcyBhIHdyYXBwZXIgYXJvdW5kIGFueSBvdGhlclxuJworICAgICAgICAgICcgICAgICBvYmplY3QsIHVzdWFsbHkgYSB1c2VyLWRlZmluZWQgbWV0aG9kIG9iamVjdC4gV2hlbiBhIHN0YXRpY1xuJworICAgICAgICAgICcgICAgICBtZXRob2Qgb2JqZWN0IGlzIHJldHJpZXZlZCBmcm9tIGEgY2xhc3Mgb3IgYSBjbGFzcyBpbnN0YW5jZSwgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnICAgICAgb2JqZWN0IGFjdHVhbGx5IHJldHVybmVkIGlzIHRoZSB3cmFwcGVkIG9iamVjdCwgd2hpY2ggaXMgbm90XG4nCisgICAgICAgICAgJyAgICAgIHN1YmplY3QgdG8gYW55IGZ1cnRoZXIgdHJhbnNmb3JtYXRpb24uIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyAnCisgICAgICAgICAgJ2FyZVxuJworICAgICAgICAgICcgICAgICBub3QgdGhlbXNlbHZlcyBjYWxsYWJsZSwgYWx0aG91Z2ggdGhlIG9iamVjdHMgdGhleSB3cmFwICcKKyAgICAgICAgICAndXN1YWxseVxuJworICAgICAgICAgICcgICAgICBhcmUuIFN0YXRpYyBtZXRob2Qgb2JqZWN0cyBhcmUgY3JlYXRlZCBieSB0aGUgYnVpbHQtaW5cbicKKyAgICAgICAgICAnICAgICAgInN0YXRpY21ldGhvZCgpIiBjb25zdHJ1Y3Rvci5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIENsYXNzIG1ldGhvZCBvYmplY3RzXG4nCisgICAgICAgICAgJyAgICAgIEEgY2xhc3MgbWV0aG9kIG9iamVjdCwgbGlrZSBhIHN0YXRpYyBtZXRob2Qgb2JqZWN0LCBpcyBhICcKKyAgICAgICAgICAnd3JhcHBlclxuJworICAgICAgICAgICcgICAgICBhcm91bmQgYW5vdGhlciBvYmplY3QgdGhhdCBhbHRlcnMgdGhlIHdheSBpbiB3aGljaCB0aGF0ICcKKyAgICAgICAgICAnb2JqZWN0XG4nCisgICAgICAgICAgJyAgICAgIGlzIHJldHJpZXZlZCBmcm9tIGNsYXNzZXMgYW5kIGNsYXNzIGluc3RhbmNlcy4gVGhlIGJlaGF2aW91ciAnCisgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgJyAgICAgIGNsYXNzIG1ldGhvZCBvYmplY3RzIHVwb24gc3VjaCByZXRyaWV2YWwgaXMgZGVzY3JpYmVkIGFib3ZlLFxuJworICAgICAgICAgICcgICAgICB1bmRlciAiVXNlci1kZWZpbmVkIG1ldGhvZHMiLiBDbGFzcyBtZXRob2Qgb2JqZWN0cyBhcmUgJworICAgICAgICAgICdjcmVhdGVkXG4nCisgICAgICAgICAgJyAgICAgIGJ5IHRoZSBidWlsdC1pbiAiY2xhc3NtZXRob2QoKSIgY29uc3RydWN0b3IuXG4nLAorICd0eXBlc2Z1bmN0aW9ucyc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb25zXG4nCisgICAgICAgICAgICAgICAgICAgJyoqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnRnVuY3Rpb24gb2JqZWN0cyBhcmUgY3JlYXRlZCBieSBmdW5jdGlvbiBkZWZpbml0aW9ucy4gIFRoZSAnCisgICAgICAgICAgICAgICAgICAgJ29ubHlcbicKKyAgICAgICAgICAgICAgICAgICAnb3BlcmF0aW9uIG9uIGEgZnVuY3Rpb24gb2JqZWN0IGlzIHRvIGNhbGwgaXQ6ICcKKyAgICAgICAgICAgICAgICAgICAnImZ1bmMoYXJndW1lbnQtbGlzdCkiLlxuJworICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAnVGhlcmUgYXJlIHJlYWxseSB0d28gZmxhdm9ycyBvZiBmdW5jdGlvbiBvYmplY3RzOiBidWlsdC1pbiAnCisgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9uc1xuJworICAgICAgICAgICAgICAgICAgICdhbmQgdXNlci1kZWZpbmVkIGZ1bmN0aW9ucy4gIEJvdGggc3VwcG9ydCB0aGUgc2FtZSAnCisgICAgICAgICAgICAgICAgICAgJ29wZXJhdGlvbiAodG8gY2FsbFxuJworICAgICAgICAgICAgICAgICAgICd0aGUgZnVuY3Rpb24pLCBidXQgdGhlIGltcGxlbWVudGF0aW9uIGlzIGRpZmZlcmVudCwgaGVuY2UgJworICAgICAgICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAgICAgICAnZGlmZmVyZW50IG9iamVjdCB0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgJ1NlZSBGdW5jdGlvbiBkZWZpbml0aW9ucyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCisgJ3R5cGVzbWFwcGluZyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01hcHBpbmcgVHlwZXMgLS0tICJkaWN0IlxuJworICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0EgKm1hcHBpbmcqIG9iamVjdCBtYXBzICpoYXNoYWJsZSogdmFsdWVzIHRvIGFyYml0cmFyeSAnCisgICAgICAgICAgICAgICAgICdvYmplY3RzLlxuJworICAgICAgICAgICAgICAgICAnTWFwcGluZ3MgYXJlIG11dGFibGUgb2JqZWN0cy4gIFRoZXJlIGlzIGN1cnJlbnRseSBvbmx5IG9uZSAnCisgICAgICAgICAgICAgICAgICdzdGFuZGFyZFxuJworICAgICAgICAgICAgICAgICAnbWFwcGluZyB0eXBlLCB0aGUgKmRpY3Rpb25hcnkqLiAgKEZvciBvdGhlciBjb250YWluZXJzIHNlZSAnCisgICAgICAgICAgICAgICAgICd0aGUgYnVpbHQtXG4nCisgICAgICAgICAgICAgICAgICdpbiAibGlzdCIsICJzZXQiLCBhbmQgInR1cGxlIiBjbGFzc2VzLCBhbmQgdGhlICJjb2xsZWN0aW9ucyIgJworICAgICAgICAgICAgICAgICAnbW9kdWxlLilcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiQSBkaWN0aW9uYXJ5J3Mga2V5cyBhcmUgKmFsbW9zdCogYXJiaXRyYXJ5IHZhbHVlcy4gIFZhbHVlcyAiCisgICAgICAgICAgICAgICAgICd0aGF0IGFyZVxuJworICAgICAgICAgICAgICAgICAnbm90ICpoYXNoYWJsZSosIHRoYXQgaXMsIHZhbHVlcyBjb250YWluaW5nIGxpc3RzLCAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJpZXMgb3JcbicKKyAgICAgICAgICAgICAgICAgJ290aGVyIG11dGFibGUgdHlwZXMgKHRoYXQgYXJlIGNvbXBhcmVkIGJ5IHZhbHVlIHJhdGhlciB0aGFuICcKKyAgICAgICAgICAgICAgICAgJ2J5IG9iamVjdFxuJworICAgICAgICAgICAgICAgICAnaWRlbnRpdHkpIG1heSBub3QgYmUgdXNlZCBhcyBrZXlzLiAgTnVtZXJpYyB0eXBlcyB1c2VkIGZvciAnCisgICAgICAgICAgICAgICAgICdrZXlzIG9iZXlcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSBub3JtYWwgcnVsZXMgZm9yIG51bWVyaWMgY29tcGFyaXNvbjogaWYgdHdvIG51bWJlcnMgJworICAgICAgICAgICAgICAgICAnY29tcGFyZSBlcXVhbFxuJworICAgICAgICAgICAgICAgICAnKHN1Y2ggYXMgIjEiIGFuZCAiMS4wIikgdGhlbiB0aGV5IGNhbiBiZSB1c2VkICcKKyAgICAgICAgICAgICAgICAgJ2ludGVyY2hhbmdlYWJseSB0byBpbmRleFxuJworICAgICAgICAgICAgICAgICAndGhlIHNhbWUgZGljdGlvbmFyeSBlbnRyeS4gIChOb3RlIGhvd2V2ZXIsIHRoYXQgc2luY2UgJworICAgICAgICAgICAgICAgICAnY29tcHV0ZXJzIHN0b3JlXG4nCisgICAgICAgICAgICAgICAgICdmbG9hdGluZy1wb2ludCBudW1iZXJzIGFzIGFwcHJveGltYXRpb25zIGl0IGlzIHVzdWFsbHkgJworICAgICAgICAgICAgICAgICAndW53aXNlIHRvIHVzZVxuJworICAgICAgICAgICAgICAgICAndGhlbSBhcyBkaWN0aW9uYXJ5IGtleXMuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdEaWN0aW9uYXJpZXMgY2FuIGJlIGNyZWF0ZWQgYnkgcGxhY2luZyBhIGNvbW1hLXNlcGFyYXRlZCAnCisgICAgICAgICAgICAgICAgICdsaXN0IG9mICJrZXk6XG4nCisgICAgICAgICAgICAgICAgICd2YWx1ZSIgcGFpcnMgd2l0aGluIGJyYWNlcywgZm9yIGV4YW1wbGU6ICJ7XCdqYWNrXCc6IDQwOTgsICcKKyAgICAgICAgICAgICAgICAgIidzam9lcmQnOlxuIgorICAgICAgICAgICAgICAgICAnNDEyN30iIG9yICJ7NDA5ODogXCdqYWNrXCcsIDQxMjc6IFwnc2pvZXJkXCd9Iiwgb3IgYnkgdGhlICcKKyAgICAgICAgICAgICAgICAgJyJkaWN0IlxuJworICAgICAgICAgICAgICAgICAnY29uc3RydWN0b3IuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGRpY3QoKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGRpY3QobWFwcGluZywgKiprd2FyZylcbicKKyAgICAgICAgICAgICAgICAgJ2NsYXNzIGRpY3QoaXRlcmFibGUsICoqa3dhcmcpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFJldHVybiBhIG5ldyBkaWN0aW9uYXJ5IGluaXRpYWxpemVkIGZyb20gYW4gb3B0aW9uYWwgJworICAgICAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQgYW5kIGEgcG9zc2libHkgZW1wdHkgc2V0IG9mIGtleXdvcmQgYXJndW1lbnRzLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBubyBwb3NpdGlvbmFsIGFyZ3VtZW50IGlzIGdpdmVuLCBhbiBlbXB0eSBkaWN0aW9uYXJ5ICcKKyAgICAgICAgICAgICAgICAgJ2lzIGNyZWF0ZWQuXG4nCisgICAgICAgICAgICAgICAgICcgICBJZiBhIHBvc2l0aW9uYWwgYXJndW1lbnQgaXMgZ2l2ZW4gYW5kIGl0IGlzIGEgbWFwcGluZyAnCisgICAgICAgICAgICAgICAgICdvYmplY3QsIGFcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCB3aXRoIHRoZSBzYW1lIGtleS12YWx1ZSBwYWlycyBhcyAnCisgICAgICAgICAgICAgICAgICd0aGUgbWFwcGluZ1xuJworICAgICAgICAgICAgICAgICAnICAgb2JqZWN0LiAgT3RoZXJ3aXNlLCB0aGUgcG9zaXRpb25hbCBhcmd1bWVudCBtdXN0IGJlIGFuICcKKyAgICAgICAgICAgICAgICAgJyppdGVyYWJsZSpcbicKKyAgICAgICAgICAgICAgICAgJyAgIG9iamVjdC4gIEVhY2ggaXRlbSBpbiB0aGUgaXRlcmFibGUgbXVzdCBpdHNlbGYgYmUgYW4gJworICAgICAgICAgICAgICAgICAnaXRlcmFibGUgd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgZXhhY3RseSB0d28gb2JqZWN0cy4gIFRoZSBmaXJzdCBvYmplY3Qgb2YgZWFjaCBpdGVtICcKKyAgICAgICAgICAgICAgICAgJ2JlY29tZXMgYSBrZXlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGluIHRoZSBuZXcgZGljdGlvbmFyeSwgYW5kIHRoZSBzZWNvbmQgb2JqZWN0IHRoZSAnCisgICAgICAgICAgICAgICAgICdjb3JyZXNwb25kaW5nXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZS4gIElmIGEga2V5IG9jY3VycyBtb3JlIHRoYW4gb25jZSwgdGhlIGxhc3QgdmFsdWUgJworICAgICAgICAgICAgICAgICAnZm9yIHRoYXQga2V5XG4nCisgICAgICAgICAgICAgICAgICcgICBiZWNvbWVzIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGluIHRoZSBuZXcgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSWYga2V5d29yZCBhcmd1bWVudHMgYXJlIGdpdmVuLCB0aGUga2V5d29yZCBhcmd1bWVudHMgYW5kICcKKyAgICAgICAgICAgICAgICAgJ3RoZWlyXG4nCisgICAgICAgICAgICAgICAgICcgICB2YWx1ZXMgYXJlIGFkZGVkIHRvIHRoZSBkaWN0aW9uYXJ5IGNyZWF0ZWQgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQuICBJZiBhIGtleSBiZWluZyBhZGRlZCBpcyBhbHJlYWR5IHByZXNlbnQsIHRoZSAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSBmcm9tXG4nCisgICAgICAgICAgICAgICAgICcgICB0aGUga2V5d29yZCBhcmd1bWVudCByZXBsYWNlcyB0aGUgdmFsdWUgZnJvbSB0aGUgJworICAgICAgICAgICAgICAgICAncG9zaXRpb25hbFxuJworICAgICAgICAgICAgICAgICAnICAgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRvIGlsbHVzdHJhdGUsIHRoZSBmb2xsb3dpbmcgZXhhbXBsZXMgYWxsIHJldHVybiBhICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkgZXF1YWxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHRvICJ7Im9uZSI6IDEsICJ0d28iOiAyLCAidGhyZWUiOiAzfSI6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgID4+PiBhID0gZGljdChvbmU9MSwgdHdvPTIsIHRocmVlPTMpXG4nCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gYiA9IHsnb25lJzogMSwgJ3R3byc6IDIsICd0aHJlZSc6IDN9XG4iCisgICAgICAgICAgICAgICAgICIgICAgICA+Pj4gYyA9IGRpY3QoemlwKFsnb25lJywgJ3R3bycsICd0aHJlZSddLCBbMSwgMiwgM10pKVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGQgPSBkaWN0KFsoJ3R3bycsIDIpLCAoJ29uZScsIDEpLCAoJ3RocmVlJywgMyldKVxuIgorICAgICAgICAgICAgICAgICAiICAgICAgPj4+IGUgPSBkaWN0KHsndGhyZWUnOiAzLCAnb25lJzogMSwgJ3R3byc6IDJ9KVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgPj4+IGEgPT0gYiA9PSBjID09IGQgPT0gZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgVHJ1ZVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBQcm92aWRpbmcga2V5d29yZCBhcmd1bWVudHMgYXMgaW4gdGhlIGZpcnN0IGV4YW1wbGUgb25seSAnCisgICAgICAgICAgICAgICAgICd3b3JrcyBmb3JcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleXMgdGhhdCBhcmUgdmFsaWQgUHl0aG9uIGlkZW50aWZpZXJzLiAgT3RoZXJ3aXNlLCBhbnkgJworICAgICAgICAgICAgICAgICAndmFsaWQga2V5c1xuJworICAgICAgICAgICAgICAgICAnICAgY2FuIGJlIHVzZWQuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRoZXNlIGFyZSB0aGUgb3BlcmF0aW9ucyB0aGF0IGRpY3Rpb25hcmllcyBzdXBwb3J0IChhbmQgJworICAgICAgICAgICAgICAgICAndGhlcmVmb3JlLFxuJworICAgICAgICAgICAgICAgICAnICAgY3VzdG9tIG1hcHBpbmcgdHlwZXMgc2hvdWxkIHN1cHBvcnQgdG9vKTpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgbGVuKGQpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgbnVtYmVyIG9mIGl0ZW1zIGluIHRoZSBkaWN0aW9uYXJ5ICpkKi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZFtrZXldXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiB0aGUgaXRlbSBvZiAqZCogd2l0aCBrZXkgKmtleSouICBSYWlzZXMgYSAnCisgICAgICAgICAgICAgICAgICciS2V5RXJyb3IiIGlmXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqa2V5KiBpcyBub3QgaW4gdGhlIG1hcC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgSWYgYSBzdWJjbGFzcyBvZiBkaWN0IGRlZmluZXMgYSBtZXRob2QgIl9fbWlzc2luZ19fKCkiICcKKyAgICAgICAgICAgICAgICAgJ2FuZCAqa2V5KlxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgbm90IHByZXNlbnQsIHRoZSAiZFtrZXldIiBvcGVyYXRpb24gY2FsbHMgdGhhdCAnCisgICAgICAgICAgICAgICAgICdtZXRob2Qgd2l0aFxuJworICAgICAgICAgICAgICAgICAnICAgICAgdGhlIGtleSAqa2V5KiBhcyBhcmd1bWVudC4gIFRoZSAiZFtrZXldIiBvcGVyYXRpb24gJworICAgICAgICAgICAgICAgICAndGhlbiByZXR1cm5zXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBvciByYWlzZXMgd2hhdGV2ZXIgaXMgcmV0dXJuZWQgb3IgcmFpc2VkIGJ5IHRoZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgIl9fbWlzc2luZ19fKGtleSkiIGNhbGwuIE5vIG90aGVyIG9wZXJhdGlvbnMgb3IgJworICAgICAgICAgICAgICAgICAnbWV0aG9kcyBpbnZva2VcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICJfX21pc3NpbmdfXygpIi4gSWYgIl9fbWlzc2luZ19fKCkiIGlzIG5vdCBkZWZpbmVkLCAnCisgICAgICAgICAgICAgICAgICciS2V5RXJyb3IiXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyByYWlzZWQuICJfX21pc3NpbmdfXygpIiBtdXN0IGJlIGEgbWV0aG9kOyBpdCBjYW5ub3QgJworICAgICAgICAgICAgICAgICAnYmUgYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGluc3RhbmNlIHZhcmlhYmxlOlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICA+Pj4gY2xhc3MgQ291bnRlcihkaWN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgICAgIC4uLiAgICAgZGVmIF9fbWlzc2luZ19fKHNlbGYsIGtleSk6XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAgICAuLi4gICAgICAgICByZXR1cm4gMFxuJworICAgICAgICAgICAgICAgICAnICAgICAgICAgPj4+IGMgPSBDb3VudGVyKClcbicKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgICAgMFxuJworICAgICAgICAgICAgICAgICAiICAgICAgICAgPj4+IGNbJ3JlZCddICs9IDFcbiIKKyAgICAgICAgICAgICAgICAgIiAgICAgICAgID4+PiBjWydyZWQnXVxuIgorICAgICAgICAgICAgICAgICAnICAgICAgICAgMVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBUaGUgZXhhbXBsZSBhYm92ZSBzaG93cyBwYXJ0IG9mIHRoZSBpbXBsZW1lbnRhdGlvbiBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgImNvbGxlY3Rpb25zLkNvdW50ZXIiLiAgQSBkaWZmZXJlbnQgIl9fbWlzc2luZ19fIiAnCisgICAgICAgICAgICAgICAgICdtZXRob2QgaXMgdXNlZFxuJworICAgICAgICAgICAgICAgICAnICAgICAgYnkgImNvbGxlY3Rpb25zLmRlZmF1bHRkaWN0Ii5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZFtrZXldID0gdmFsdWVcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgU2V0ICJkW2tleV0iIHRvICp2YWx1ZSouXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGRlbCBkW2tleV1cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlICJkW2tleV0iIGZyb20gKmQqLiAgUmFpc2VzIGEgIktleUVycm9yIiBpZiAnCisgICAgICAgICAgICAgICAgICcqa2V5KiBpcyBub3RcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGluIHRoZSBtYXAuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleSBpbiBkXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJldHVybiAiVHJ1ZSIgaWYgKmQqIGhhcyBhIGtleSAqa2V5KiwgZWxzZSAiRmFsc2UiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBrZXkgbm90IGluIGRcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgRXF1aXZhbGVudCB0byAibm90IGtleSBpbiBkIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgaXRlcihkKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cyBvZiB0aGUgZGljdGlvbmFyeS4gICcKKyAgICAgICAgICAgICAgICAgJ1RoaXMgaXMgYVxuJworICAgICAgICAgICAgICAgICAnICAgICAgc2hvcnRjdXQgZm9yICJpdGVyKGQua2V5cygpKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNsZWFyKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmVtb3ZlIGFsbCBpdGVtcyBmcm9tIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjb3B5KClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGEgc2hhbGxvdyBjb3B5IG9mIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBjbGFzc21ldGhvZCBmcm9ta2V5cyhzZXFbLCB2YWx1ZV0pXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIENyZWF0ZSBhIG5ldyBkaWN0aW9uYXJ5IHdpdGgga2V5cyBmcm9tICpzZXEqIGFuZCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZXMgc2V0IHRvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqdmFsdWUqLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAiZnJvbWtleXMoKSIgaXMgYSBjbGFzcyBtZXRob2QgdGhhdCByZXR1cm5zIGEgbmV3ICcKKyAgICAgICAgICAgICAgICAgJ2RpY3Rpb25hcnkuXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqdmFsdWUqIGRlZmF1bHRzIHRvICJOb25lIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgZ2V0KGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBSZXR1cm4gdGhlIHZhbHVlIGZvciAqa2V5KiBpZiAqa2V5KiBpcyBpbiB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeSwgZWxzZVxuJworICAgICAgICAgICAgICAgICAnICAgICAgKmRlZmF1bHQqLiBJZiAqZGVmYXVsdCogaXMgbm90IGdpdmVuLCBpdCBkZWZhdWx0cyB0byAnCisgICAgICAgICAgICAgICAgICciTm9uZSIsIHNvXG4nCisgICAgICAgICAgICAgICAgICcgICAgICB0aGF0IHRoaXMgbWV0aG9kIG5ldmVyIHJhaXNlcyBhICJLZXlFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGl0ZW1zKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnlcJ3MgaXRlbXMgKCIoa2V5LCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSkiXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBwYWlycykuIFNlZSB0aGUgZG9jdW1lbnRhdGlvbiBvZiB2aWV3IG9iamVjdHMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIGtleXMoKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICIgICAgICBSZXR1cm4gYSBuZXcgdmlldyBvZiB0aGUgZGljdGlvbmFyeSdzIGtleXMuICBTZWUgdGhlXG4iCisgICAgICAgICAgICAgICAgICcgICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgcG9wKGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmVtb3ZlIGl0IGFuZCByZXR1cm4gJworICAgICAgICAgICAgICAgICAnaXRzIHZhbHVlLFxuJworICAgICAgICAgICAgICAgICAnICAgICAgZWxzZSByZXR1cm4gKmRlZmF1bHQqLiAgSWYgKmRlZmF1bHQqIGlzIG5vdCBnaXZlbiBhbmQgJworICAgICAgICAgICAgICAgICAnKmtleSogaXNcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG5vdCBpbiB0aGUgZGljdGlvbmFyeSwgYSAiS2V5RXJyb3IiIGlzIHJhaXNlZC5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgcG9waXRlbSgpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIFJlbW92ZSBhbmQgcmV0dXJuIGFuIGFyYml0cmFyeSAiKGtleSwgdmFsdWUpIiBwYWlyICcKKyAgICAgICAgICAgICAgICAgJ2Zyb20gdGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAicG9waXRlbSgpIiBpcyB1c2VmdWwgdG8gZGVzdHJ1Y3RpdmVseSBpdGVyYXRlIG92ZXIgYVxuJworICAgICAgICAgICAgICAgICAnICAgICAgZGljdGlvbmFyeSwgYXMgb2Z0ZW4gdXNlZCBpbiBzZXQgYWxnb3JpdGhtcy4gIElmIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICAgICBpcyBlbXB0eSwgY2FsbGluZyAicG9waXRlbSgpIiByYWlzZXMgYSAiS2V5RXJyb3IiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBzZXRkZWZhdWx0KGtleVssIGRlZmF1bHRdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBJZiAqa2V5KiBpcyBpbiB0aGUgZGljdGlvbmFyeSwgcmV0dXJuIGl0cyB2YWx1ZS4gIElmICcKKyAgICAgICAgICAgICAgICAgJ25vdCwgaW5zZXJ0XG4nCisgICAgICAgICAgICAgICAgICcgICAgICAqa2V5KiB3aXRoIGEgdmFsdWUgb2YgKmRlZmF1bHQqIGFuZCByZXR1cm4gKmRlZmF1bHQqLiAgJworICAgICAgICAgICAgICAgICAnKmRlZmF1bHQqXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkZWZhdWx0cyB0byAiTm9uZSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgIHVwZGF0ZShbb3RoZXJdKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBVcGRhdGUgdGhlIGRpY3Rpb25hcnkgd2l0aCB0aGUga2V5L3ZhbHVlIHBhaXJzIGZyb20gJworICAgICAgICAgICAgICAgICAnKm90aGVyKixcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIG92ZXJ3cml0aW5nIGV4aXN0aW5nIGtleXMuICBSZXR1cm4gIk5vbmUiLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICAgICAidXBkYXRlKCkiIGFjY2VwdHMgZWl0aGVyIGFub3RoZXIgZGljdGlvbmFyeSBvYmplY3Qgb3IgJworICAgICAgICAgICAgICAgICAnYW5cbicKKyAgICAgICAgICAgICAgICAgJyAgICAgIGl0ZXJhYmxlIG9mIGtleS92YWx1ZSBwYWlycyAoYXMgdHVwbGVzIG9yIG90aGVyICcKKyAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlcyBvZlxuJworICAgICAgICAgICAgICAgICAnICAgICAgbGVuZ3RoIHR3bykuICBJZiBrZXl3b3JkIGFyZ3VtZW50cyBhcmUgc3BlY2lmaWVkLCB0aGUgJworICAgICAgICAgICAgICAgICAnZGljdGlvbmFyeVxuJworICAgICAgICAgICAgICAgICAnICAgICAgaXMgdGhlbiB1cGRhdGVkIHdpdGggdGhvc2Uga2V5L3ZhbHVlIHBhaXJzOiAnCisgICAgICAgICAgICAgICAgICciZC51cGRhdGUocmVkPTEsXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBibHVlPTIpIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWVzKClcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAiICAgICAgUmV0dXJuIGEgbmV3IHZpZXcgb2YgdGhlIGRpY3Rpb25hcnkncyB2YWx1ZXMuICBTZWUgIgorICAgICAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgICAgICcgICAgICBkb2N1bWVudGF0aW9uIG9mIHZpZXcgb2JqZWN0cy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgRGljdGlvbmFyaWVzIGNvbXBhcmUgZXF1YWwgaWYgYW5kIG9ubHkgaWYgdGhleSBoYXZlIHRoZSAnCisgICAgICAgICAgICAgICAgICdzYW1lICIoa2V5LFxuJworICAgICAgICAgICAgICAgICAnICAgdmFsdWUpIiBwYWlycy4gT3JkZXIgY29tcGFyaXNvbnMgKFwnPFwnLCBcJzw9XCcsIFwnPj1cJywgJworICAgICAgICAgICAgICAgICAiJz4nKSByYWlzZVxuIgorICAgICAgICAgICAgICAgICAnICAgIlR5cGVFcnJvciIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1NlZSBhbHNvOiAidHlwZXMuTWFwcGluZ1Byb3h5VHlwZSIgY2FuIGJlIHVzZWQgdG8gY3JlYXRlIGEgJworICAgICAgICAgICAgICAgICAncmVhZC1vbmx5XG4nCisgICAgICAgICAgICAgICAgICcgIHZpZXcgb2YgYSAiZGljdCIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnRGljdGlvbmFyeSB2aWV3IG9iamVjdHNcbicKKyAgICAgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT09XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ1RoZSBvYmplY3RzIHJldHVybmVkIGJ5ICJkaWN0LmtleXMoKSIsICJkaWN0LnZhbHVlcygpIiBhbmRcbicKKyAgICAgICAgICAgICAgICAgJyJkaWN0Lml0ZW1zKCkiIGFyZSAqdmlldyBvYmplY3RzKi4gIFRoZXkgcHJvdmlkZSBhIGR5bmFtaWMgJworICAgICAgICAgICAgICAgICAndmlldyBvbiB0aGVcbicKKyAgICAgICAgICAgICAgICAgImRpY3Rpb25hcnkncyBlbnRyaWVzLCB3aGljaCBtZWFucyB0aGF0IHdoZW4gdGhlIGRpY3Rpb25hcnkgIgorICAgICAgICAgICAgICAgICAnY2hhbmdlcyxcbicKKyAgICAgICAgICAgICAgICAgJ3RoZSB2aWV3IHJlZmxlY3RzIHRoZXNlIGNoYW5nZXMuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0RpY3Rpb25hcnkgdmlld3MgY2FuIGJlIGl0ZXJhdGVkIG92ZXIgdG8geWllbGQgdGhlaXIgJworICAgICAgICAgICAgICAgICAncmVzcGVjdGl2ZSBkYXRhLFxuJworICAgICAgICAgICAgICAgICAnYW5kIHN1cHBvcnQgbWVtYmVyc2hpcCB0ZXN0czpcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnbGVuKGRpY3R2aWV3KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gdGhlIG51bWJlciBvZiBlbnRyaWVzIGluIHRoZSBkaWN0aW9uYXJ5LlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdpdGVyKGRpY3R2aWV3KVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gYW4gaXRlcmF0b3Igb3ZlciB0aGUga2V5cywgdmFsdWVzIG9yIGl0ZW1zICcKKyAgICAgICAgICAgICAgICAgJyhyZXByZXNlbnRlZCBhc1xuJworICAgICAgICAgICAgICAgICAnICAgdHVwbGVzIG9mICIoa2V5LCB2YWx1ZSkiKSBpbiB0aGUgZGljdGlvbmFyeS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgS2V5cyBhbmQgdmFsdWVzIGFyZSBpdGVyYXRlZCBvdmVyIGluIGFuIGFyYml0cmFyeSBvcmRlciAnCisgICAgICAgICAgICAgICAgICd3aGljaCBpc1xuJworICAgICAgICAgICAgICAgICAnICAgbm9uLXJhbmRvbSwgdmFyaWVzIGFjcm9zcyBQeXRob24gaW1wbGVtZW50YXRpb25zLCBhbmQgJworICAgICAgICAgICAgICAgICAnZGVwZW5kcyBvblxuJworICAgICAgICAgICAgICAgICAiICAgdGhlIGRpY3Rpb25hcnkncyBoaXN0b3J5IG9mIGluc2VydGlvbnMgYW5kIGRlbGV0aW9ucy4gSWYgIgorICAgICAgICAgICAgICAgICAna2V5cyxcbicKKyAgICAgICAgICAgICAgICAgJyAgIHZhbHVlcyBhbmQgaXRlbXMgdmlld3MgYXJlIGl0ZXJhdGVkIG92ZXIgd2l0aCBubyAnCisgICAgICAgICAgICAgICAgICdpbnRlcnZlbmluZ1xuJworICAgICAgICAgICAgICAgICAnICAgbW9kaWZpY2F0aW9ucyB0byB0aGUgZGljdGlvbmFyeSwgdGhlIG9yZGVyIG9mIGl0ZW1zIHdpbGwgJworICAgICAgICAgICAgICAgICAnZGlyZWN0bHlcbicKKyAgICAgICAgICAgICAgICAgJyAgIGNvcnJlc3BvbmQuICBUaGlzIGFsbG93cyB0aGUgY3JlYXRpb24gb2YgIih2YWx1ZSwga2V5KSIgJworICAgICAgICAgICAgICAgICAncGFpcnMgdXNpbmdcbicKKyAgICAgICAgICAgICAgICAgJyAgICJ6aXAoKSI6ICJwYWlycyA9IHppcChkLnZhbHVlcygpLCBkLmtleXMoKSkiLiAgQW5vdGhlciAnCisgICAgICAgICAgICAgICAgICd3YXkgdG9cbicKKyAgICAgICAgICAgICAgICAgJyAgIGNyZWF0ZSB0aGUgc2FtZSBsaXN0IGlzICJwYWlycyA9IFsodiwgaykgZm9yIChrLCB2KSBpbiAnCisgICAgICAgICAgICAgICAgICdkLml0ZW1zKCldIi5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnICAgSXRlcmF0aW5nIHZpZXdzIHdoaWxlIGFkZGluZyBvciBkZWxldGluZyBlbnRyaWVzIGluIHRoZSAnCisgICAgICAgICAgICAgICAgICdkaWN0aW9uYXJ5XG4nCisgICAgICAgICAgICAgICAgICcgICBtYXkgcmFpc2UgYSAiUnVudGltZUVycm9yIiBvciBmYWlsIHRvIGl0ZXJhdGUgb3ZlciBhbGwgJworICAgICAgICAgICAgICAgICAnZW50cmllcy5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAneCBpbiBkaWN0dmlld1xuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICBSZXR1cm4gIlRydWUiIGlmICp4KiBpcyBpbiB0aGUgdW5kZXJseWluZyBkaWN0aW9uYXJ5XCdzICcKKyAgICAgICAgICAgICAgICAgJ2tleXMsIHZhbHVlc1xuJworICAgICAgICAgICAgICAgICAnICAgb3IgaXRlbXMgKGluIHRoZSBsYXR0ZXIgY2FzZSwgKngqIHNob3VsZCBiZSBhICIoa2V5LCAnCisgICAgICAgICAgICAgICAgICd2YWx1ZSkiXG4nCisgICAgICAgICAgICAgICAgICcgICB0dXBsZSkuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0tleXMgdmlld3MgYXJlIHNldC1saWtlIHNpbmNlIHRoZWlyIGVudHJpZXMgYXJlIHVuaXF1ZSBhbmQgJworICAgICAgICAgICAgICAgICAnaGFzaGFibGUuXG4nCisgICAgICAgICAgICAgICAgICdJZiBhbGwgdmFsdWVzIGFyZSBoYXNoYWJsZSwgc28gdGhhdCAiKGtleSwgdmFsdWUpIiBwYWlycyBhcmUgJworICAgICAgICAgICAgICAgICAndW5pcXVlXG4nCisgICAgICAgICAgICAgICAgICdhbmQgaGFzaGFibGUsIHRoZW4gdGhlIGl0ZW1zIHZpZXcgaXMgYWxzbyBzZXQtbGlrZS4gIChWYWx1ZXMgJworICAgICAgICAgICAgICAgICAndmlld3MgYXJlXG4nCisgICAgICAgICAgICAgICAgICdub3QgdHJlYXRlZCBhcyBzZXQtbGlrZSBzaW5jZSB0aGUgZW50cmllcyBhcmUgZ2VuZXJhbGx5IG5vdCAnCisgICAgICAgICAgICAgICAgICd1bmlxdWUuKVxuJworICAgICAgICAgICAgICAgICAnRm9yIHNldC1saWtlIHZpZXdzLCBhbGwgb2YgdGhlIG9wZXJhdGlvbnMgZGVmaW5lZCBmb3IgdGhlICcKKyAgICAgICAgICAgICAgICAgJ2Fic3RyYWN0XG4nCisgICAgICAgICAgICAgICAgICdiYXNlIGNsYXNzICJjb2xsZWN0aW9ucy5hYmMuU2V0IiBhcmUgYXZhaWxhYmxlIChmb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICAgICAnIj09IixcbicKKyAgICAgICAgICAgICAgICAgJyI8Iiwgb3IgIl4iKS5cbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnQW4gZXhhbXBsZSBvZiBkaWN0aW9uYXJ5IHZpZXcgdXNhZ2U6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkaXNoZXMgPSB7J2VnZ3MnOiAyLCAnc2F1c2FnZSc6IDEsICdiYWNvbic6IDEsICIKKyAgICAgICAgICAgICAgICAgIidzcGFtJzogNTAwfVxuIgorICAgICAgICAgICAgICAgICAnICAgPj4+IGtleXMgPSBkaXNoZXMua2V5cygpXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gdmFsdWVzID0gZGlzaGVzLnZhbHVlcygpXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIGl0ZXJhdGlvblxuJworICAgICAgICAgICAgICAgICAnICAgPj4+IG4gPSAwXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gZm9yIHZhbCBpbiB2YWx1ZXM6XG4nCisgICAgICAgICAgICAgICAgICcgICAuLi4gICAgIG4gKz0gdmFsXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gcHJpbnQobilcbicKKyAgICAgICAgICAgICAgICAgJyAgIDUwNFxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBrZXlzIGFuZCB2YWx1ZXMgYXJlIGl0ZXJhdGVkIG92ZXIgaW4gdGhlIHNhbWUgJworICAgICAgICAgICAgICAgICAnb3JkZXJcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ2VnZ3MnLCAnYmFjb24nLCAnc2F1c2FnZScsICdzcGFtJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KHZhbHVlcylcbicKKyAgICAgICAgICAgICAgICAgJyAgIFsyLCAxLCAxLCA1MDBdXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiAjIHZpZXcgb2JqZWN0cyBhcmUgZHluYW1pYyBhbmQgcmVmbGVjdCBkaWN0IGNoYW5nZXNcbicKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydlZ2dzJ11cbiIKKyAgICAgICAgICAgICAgICAgIiAgID4+PiBkZWwgZGlzaGVzWydzYXVzYWdlJ11cbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBsaXN0KGtleXMpXG4nCisgICAgICAgICAgICAgICAgICIgICBbJ3NwYW0nLCAnYmFjb24nXVxuIgorICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gIyBzZXQgb3BlcmF0aW9uc1xuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGtleXMgJiB7J2VnZ3MnLCAnYmFjb24nLCAnc2FsYWQnfVxuIgorICAgICAgICAgICAgICAgICAiICAgeydiYWNvbid9XG4iCisgICAgICAgICAgICAgICAgICIgICA+Pj4ga2V5cyBeIHsnc2F1c2FnZScsICdqdWljZSd9XG4iCisgICAgICAgICAgICAgICAgICIgICB7J2p1aWNlJywgJ3NhdXNhZ2UnLCAnYmFjb24nLCAnc3BhbSd9XG4iLAorICd0eXBlc21ldGhvZHMnOiAnXG4nCisgICAgICAgICAgICAgICAgICdNZXRob2RzXG4nCisgICAgICAgICAgICAgICAgICcqKioqKioqXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ01ldGhvZHMgYXJlIGZ1bmN0aW9ucyB0aGF0IGFyZSBjYWxsZWQgdXNpbmcgdGhlIGF0dHJpYnV0ZSAnCisgICAgICAgICAgICAgICAgICdub3RhdGlvbi5cbicKKyAgICAgICAgICAgICAgICAgJ1RoZXJlIGFyZSB0d28gZmxhdm9yczogYnVpbHQtaW4gbWV0aG9kcyAoc3VjaCBhcyAiYXBwZW5kKCkiICcKKyAgICAgICAgICAgICAgICAgJ29uIGxpc3RzKVxuJworICAgICAgICAgICAgICAgICAnYW5kIGNsYXNzIGluc3RhbmNlIG1ldGhvZHMuICBCdWlsdC1pbiBtZXRob2RzIGFyZSBkZXNjcmliZWQgJworICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgJ3R5cGVzIHRoYXQgc3VwcG9ydCB0aGVtLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdJZiB5b3UgYWNjZXNzIGEgbWV0aG9kIChhIGZ1bmN0aW9uIGRlZmluZWQgaW4gYSBjbGFzcyAnCisgICAgICAgICAgICAgICAgICduYW1lc3BhY2UpXG4nCisgICAgICAgICAgICAgICAgICd0aHJvdWdoIGFuIGluc3RhbmNlLCB5b3UgZ2V0IGEgc3BlY2lhbCBvYmplY3Q6IGEgKmJvdW5kICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZCogKGFsc29cbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxlZCAqaW5zdGFuY2UgbWV0aG9kKikgb2JqZWN0LiBXaGVuIGNhbGxlZCwgaXQgd2lsbCBhZGQgJworICAgICAgICAgICAgICAgICAndGhlICJzZWxmIlxuJworICAgICAgICAgICAgICAgICAnYXJndW1lbnQgdG8gdGhlIGFyZ3VtZW50IGxpc3QuICBCb3VuZCBtZXRob2RzIGhhdmUgdHdvICcKKyAgICAgICAgICAgICAgICAgJ3NwZWNpYWwgcmVhZC1cbicKKyAgICAgICAgICAgICAgICAgJ29ubHkgYXR0cmlidXRlczogIm0uX19zZWxmX18iIGlzIHRoZSBvYmplY3Qgb24gd2hpY2ggdGhlICcKKyAgICAgICAgICAgICAgICAgJ21ldGhvZFxuJworICAgICAgICAgICAgICAgICAnb3BlcmF0ZXMsIGFuZCAibS5fX2Z1bmNfXyIgaXMgdGhlIGZ1bmN0aW9uIGltcGxlbWVudGluZyB0aGUgJworICAgICAgICAgICAgICAgICAnbWV0aG9kLlxuJworICAgICAgICAgICAgICAgICAnQ2FsbGluZyAibShhcmctMSwgYXJnLTIsIC4uLiwgYXJnLW4pIiBpcyBjb21wbGV0ZWx5ICcKKyAgICAgICAgICAgICAgICAgJ2VxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICAgICAgICAgJ2NhbGxpbmcgIm0uX19mdW5jX18obS5fX3NlbGZfXywgYXJnLTEsIGFyZy0yLCAuLi4sIGFyZy1uKSIuXG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJ0xpa2UgZnVuY3Rpb24gb2JqZWN0cywgYm91bmQgbWV0aG9kIG9iamVjdHMgc3VwcG9ydCBnZXR0aW5nICcKKyAgICAgICAgICAgICAgICAgJ2FyYml0cmFyeVxuJworICAgICAgICAgICAgICAgICAnYXR0cmlidXRlcy4gIEhvd2V2ZXIsIHNpbmNlIG1ldGhvZCBhdHRyaWJ1dGVzIGFyZSBhY3R1YWxseSAnCisgICAgICAgICAgICAgICAgICdzdG9yZWQgb25cbicKKyAgICAgICAgICAgICAgICAgJ3RoZSB1bmRlcmx5aW5nIGZ1bmN0aW9uIG9iamVjdCAoIm1ldGguX19mdW5jX18iKSwgc2V0dGluZyAnCisgICAgICAgICAgICAgICAgICdtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMgb24gYm91bmQgbWV0aG9kcyBpcyBkaXNhbGxvd2VkLiAgQXR0ZW1wdGluZyB0byAnCisgICAgICAgICAgICAgICAgICdzZXQgYW5cbicKKyAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZSBvbiBhIG1ldGhvZCByZXN1bHRzIGluIGFuICJBdHRyaWJ1dGVFcnJvciIgYmVpbmcgJworICAgICAgICAgICAgICAgICAncmFpc2VkLiAgSW5cbicKKyAgICAgICAgICAgICAgICAgJ29yZGVyIHRvIHNldCBhIG1ldGhvZCBhdHRyaWJ1dGUsIHlvdSBuZWVkIHRvIGV4cGxpY2l0bHkgc2V0ICcKKyAgICAgICAgICAgICAgICAgJ2l0IG9uIHRoZVxuJworICAgICAgICAgICAgICAgICAndW5kZXJseWluZyBmdW5jdGlvbiBvYmplY3Q6XG4nCisgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjbGFzcyBDOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICBkZWYgbWV0aG9kKHNlbGYpOlxuJworICAgICAgICAgICAgICAgICAnICAgLi4uICAgICAgICAgcGFzc1xuJworICAgICAgICAgICAgICAgICAnICAgLi4uXG4nCisgICAgICAgICAgICAgICAgICcgICA+Pj4gYyA9IEMoKVxuJworICAgICAgICAgICAgICAgICAiICAgPj4+IGMubWV0aG9kLndob2FtaSA9ICdteSBuYW1lIGlzIG1ldGhvZCcgICMgY2FuJ3Qgc2V0IG9uICIKKyAgICAgICAgICAgICAgICAgJ3RoZSBtZXRob2RcbicKKyAgICAgICAgICAgICAgICAgJyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KTpcbicKKyAgICAgICAgICAgICAgICAgJyAgICAgRmlsZSAiPHN0ZGluPiIsIGxpbmUgMSwgaW4gPG1vZHVsZT5cbicKKyAgICAgICAgICAgICAgICAgIiAgIEF0dHJpYnV0ZUVycm9yOiAnbWV0aG9kJyBvYmplY3QgaGFzIG5vIGF0dHJpYnV0ZSAiCisgICAgICAgICAgICAgICAgICInd2hvYW1pJ1xuIgorICAgICAgICAgICAgICAgICAiICAgPj4+IGMubWV0aG9kLl9fZnVuY19fLndob2FtaSA9ICdteSBuYW1lIGlzIG1ldGhvZCdcbiIKKyAgICAgICAgICAgICAgICAgJyAgID4+PiBjLm1ldGhvZC53aG9hbWlcbicKKyAgICAgICAgICAgICAgICAgIiAgICdteSBuYW1lIGlzIG1ldGhvZCdcbiIKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnU2VlIFRoZSBzdGFuZGFyZCB0eXBlIGhpZXJhcmNoeSBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbicsCisgJ3R5cGVzbW9kdWxlcyc6ICdcbicKKyAgICAgICAgICAgICAgICAgJ01vZHVsZXNcbicKKyAgICAgICAgICAgICAgICAgJyoqKioqKipcbicKKyAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAnVGhlIG9ubHkgc3BlY2lhbCBvcGVyYXRpb24gb24gYSBtb2R1bGUgaXMgYXR0cmlidXRlIGFjY2VzczogJworICAgICAgICAgICAgICAgICAnIm0ubmFtZSIsXG4nCisgICAgICAgICAgICAgICAgICd3aGVyZSAqbSogaXMgYSBtb2R1bGUgYW5kICpuYW1lKiBhY2Nlc3NlcyBhIG5hbWUgZGVmaW5lZCBpbiAnCisgICAgICAgICAgICAgICAgICIqbSonc1xuIgorICAgICAgICAgICAgICAgICAnc3ltYm9sIHRhYmxlLiBNb2R1bGUgYXR0cmlidXRlcyBjYW4gYmUgYXNzaWduZWQgdG8uICAoTm90ZSAnCisgICAgICAgICAgICAgICAgICd0aGF0IHRoZVxuJworICAgICAgICAgICAgICAgICAnImltcG9ydCIgc3RhdGVtZW50IGlzIG5vdCwgc3RyaWN0bHkgc3BlYWtpbmcsIGFuIG9wZXJhdGlvbiAnCisgICAgICAgICAgICAgICAgICdvbiBhIG1vZHVsZVxuJworICAgICAgICAgICAgICAgICAnb2JqZWN0OyAiaW1wb3J0IGZvbyIgZG9lcyBub3QgcmVxdWlyZSBhIG1vZHVsZSBvYmplY3QgbmFtZWQgJworICAgICAgICAgICAgICAgICAnKmZvbyogdG9cbicKKyAgICAgICAgICAgICAgICAgJ2V4aXN0LCByYXRoZXIgaXQgcmVxdWlyZXMgYW4gKGV4dGVybmFsKSAqZGVmaW5pdGlvbiogZm9yIGEgJworICAgICAgICAgICAgICAgICAnbW9kdWxlXG4nCisgICAgICAgICAgICAgICAgICduYW1lZCAqZm9vKiBzb21ld2hlcmUuKVxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdBIHNwZWNpYWwgYXR0cmlidXRlIG9mIGV2ZXJ5IG1vZHVsZSBpcyAiX19kaWN0X18iLiBUaGlzIGlzICcKKyAgICAgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICAgICAiZGljdGlvbmFyeSBjb250YWluaW5nIHRoZSBtb2R1bGUncyBzeW1ib2wgdGFibGUuIE1vZGlmeWluZyAiCisgICAgICAgICAgICAgICAgICd0aGlzXG4nCisgICAgICAgICAgICAgICAgICJkaWN0aW9uYXJ5IHdpbGwgYWN0dWFsbHkgY2hhbmdlIHRoZSBtb2R1bGUncyBzeW1ib2wgdGFibGUsICIKKyAgICAgICAgICAgICAgICAgJ2J1dCBkaXJlY3RcbicKKyAgICAgICAgICAgICAgICAgJ2Fzc2lnbm1lbnQgdG8gdGhlICJfX2RpY3RfXyIgYXR0cmlidXRlIGlzIG5vdCBwb3NzaWJsZSAoeW91ICcKKyAgICAgICAgICAgICAgICAgJ2NhbiB3cml0ZVxuJworICAgICAgICAgICAgICAgICAnIm0uX19kaWN0X19bXCdhXCddID0gMSIsIHdoaWNoIGRlZmluZXMgIm0uYSIgdG8gYmUgIjEiLCBidXQgJworICAgICAgICAgICAgICAgICAieW91IGNhbid0XG4iCisgICAgICAgICAgICAgICAgICd3cml0ZSAibS5fX2RpY3RfXyA9IHt9IikuICBNb2RpZnlpbmcgIl9fZGljdF9fIiBkaXJlY3RseSBpcyAnCisgICAgICAgICAgICAgICAgICdub3RcbicKKyAgICAgICAgICAgICAgICAgJ3JlY29tbWVuZGVkLlxuJworICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICdNb2R1bGVzIGJ1aWx0IGludG8gdGhlIGludGVycHJldGVyIGFyZSB3cml0dGVuIGxpa2UgdGhpczogJworICAgICAgICAgICAgICAgICAnIjxtb2R1bGVcbicKKyAgICAgICAgICAgICAgICAgJ1wnc3lzXCcgKGJ1aWx0LWluKT4iLiAgSWYgbG9hZGVkIGZyb20gYSBmaWxlLCB0aGV5IGFyZSAnCisgICAgICAgICAgICAgICAgICd3cml0dGVuIGFzXG4nCisgICAgICAgICAgICAgICAgICciPG1vZHVsZSBcJ29zXCcgZnJvbSAnCisgICAgICAgICAgICAgICAgICdcJy91c3IvbG9jYWwvbGliL3B5dGhvblguWS9vcy5weWNcJz4iLlxuJywKKyAndHlwZXNzZXEnOiAnXG4nCisgICAgICAgICAgICAgJ1NlcXVlbmNlIFR5cGVzIC0tLSAibGlzdCIsICJ0dXBsZSIsICJyYW5nZSJcbicKKyAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlcmUgYXJlIHRocmVlIGJhc2ljIHNlcXVlbmNlIHR5cGVzOiBsaXN0cywgdHVwbGVzLCBhbmQgcmFuZ2VcbicKKyAgICAgICAgICAgICAnb2JqZWN0cy4gQWRkaXRpb25hbCBzZXF1ZW5jZSB0eXBlcyB0YWlsb3JlZCBmb3IgcHJvY2Vzc2luZyBvZiAnCisgICAgICAgICAgICAgJ2JpbmFyeVxuJworICAgICAgICAgICAgICdkYXRhIGFuZCB0ZXh0IHN0cmluZ3MgYXJlIGRlc2NyaWJlZCBpbiBkZWRpY2F0ZWQgc2VjdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnQ29tbW9uIFNlcXVlbmNlIE9wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnPT09PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIHN1cHBvcnRlZCBieSBtb3N0ICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAndHlwZXMsIGJvdGggbXV0YWJsZSBhbmQgaW1tdXRhYmxlLiBUaGUgJworICAgICAgICAgICAgICciY29sbGVjdGlvbnMuYWJjLlNlcXVlbmNlIiBBQkNcbicKKyAgICAgICAgICAgICAnaXMgcHJvdmlkZWQgdG8gbWFrZSBpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSAnCisgICAgICAgICAgICAgJ29wZXJhdGlvbnNcbicKKyAgICAgICAgICAgICAnb24gY3VzdG9tIHNlcXVlbmNlIHR5cGVzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyB0YWJsZSBsaXN0cyB0aGUgc2VxdWVuY2Ugb3BlcmF0aW9ucyBzb3J0ZWQgaW4gYXNjZW5kaW5nICcKKyAgICAgICAgICAgICAncHJpb3JpdHkuXG4nCisgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSwgKnMqIGFuZCAqdCogYXJlIHNlcXVlbmNlcyBvZiB0aGUgc2FtZSB0eXBlLCAqbiosICcKKyAgICAgICAgICAgICAnKmkqLFxuJworICAgICAgICAgICAgICcqaiogYW5kICprKiBhcmUgaW50ZWdlcnMgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgJworICAgICAgICAgICAgICdtZWV0cyBhbnlcbicKKyAgICAgICAgICAgICAndHlwZSBhbmQgdmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSBwcmlvcml0aWVzIGFzICcKKyAgICAgICAgICAgICAndGhlXG4nCisgICAgICAgICAgICAgJ2NvbXBhcmlzb24gb3BlcmF0aW9ucy4gVGhlICIrIiAoY29uY2F0ZW5hdGlvbikgYW5kICIqIiAnCisgICAgICAgICAgICAgJyhyZXBldGl0aW9uKVxuJworICAgICAgICAgICAgICdvcGVyYXRpb25zIGhhdmUgdGhlIHNhbWUgcHJpb3JpdHkgYXMgdGhlIGNvcnJlc3BvbmRpbmcgbnVtZXJpY1xuJworICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgT3BlcmF0aW9uICAgICAgICAgICAgICAgICAgfCBSZXN1bHQgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgTm90ZXMgICAgICB8XG4nCisgICAgICAgICAgICAgJys9PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09K1xuJworICAgICAgICAgICAgICd8ICJ4IGluIHMiICAgICAgICAgICAgICAgICAgIHwgIlRydWUiIGlmIGFuIGl0ZW0gb2YgKnMqIGlzICAgICAgJworICAgICAgICAgICAgICd8ICgxKSAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgZXF1YWwgdG8gKngqLCBlbHNlICJGYWxzZSIgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAieCBub3QgaW4gcyIgICAgICAgICAgICAgICB8ICJGYWxzZSIgaWYgYW4gaXRlbSBvZiAqcyogaXMgICAgICcKKyAgICAgICAgICAgICAnfCAoMSkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGVxdWFsIHRvICp4KiwgZWxzZSAiVHJ1ZSIgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKyB0IiAgICAgICAgICAgICAgICAgICAgfCB0aGUgY29uY2F0ZW5hdGlvbiBvZiAqcyogYW5kICp0KiAnCisgICAgICAgICAgICAgJ3wgKDYpKDcpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzICogbiIgb3IgIm4gKiBzIiAgICAgICAgIHwgZXF1aXZhbGVudCB0byBhZGRpbmcgKnMqIHRvICAgICAgJworICAgICAgICAgICAgICd8ICgyKSg3KSAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRzZWxmICpuKiB0aW1lcyAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAic1tpXSIgICAgICAgICAgICAgICAgICAgICB8ICppKnRoIGl0ZW0gb2YgKnMqLCBvcmlnaW4gMCAgICAgICcKKyAgICAgICAgICAgICAnfCAoMykgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqICAgICAnCisgICAgICAgICAgICAgJ3wgKDMpKDQpICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6ajprXSIgICAgICAgICAgICAgICAgIHwgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiAgICAgJworICAgICAgICAgICAgICd8ICgzKSg1KSAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2l0aCBzdGVwICprKiAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAibGVuKHMpIiAgICAgICAgICAgICAgICAgICB8IGxlbmd0aCBvZiAqcyogICAgICAgICAgICAgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgIm1pbihzKSIgICAgICAgICAgICAgICAgICAgfCBzbWFsbGVzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJtYXgocykiICAgICAgICAgICAgICAgICAgIHwgbGFyZ2VzdCBpdGVtIG9mICpzKiAgICAgICAgICAgICAgJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5pbmRleCh4WywgaVssIGpdXSkiICAgICB8IGluZGV4IG9mIHRoZSBmaXJzdCBvY2N1cnJlbmNlIG9mICcKKyAgICAgICAgICAgICAnfCAoOCkgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICp4KiBpbiAqcyogKGF0IG9yIGFmdGVyIGluZGV4ICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICppKiBhbmQgYmVmb3JlIGluZGV4ICpqKikgICAgICAgICcKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY291bnQoeCkiICAgICAgICAgICAgICAgfCB0b3RhbCBudW1iZXIgb2Ygb2NjdXJyZW5jZXMgb2YgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqeCogaW4gKnMqICAgICAgICAgICAgICAgICAgICAgICAnCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnU2VxdWVuY2VzIG9mIHRoZSBzYW1lIHR5cGUgYWxzbyBzdXBwb3J0IGNvbXBhcmlzb25zLiAgSW4gJworICAgICAgICAgICAgICdwYXJ0aWN1bGFyLFxuJworICAgICAgICAgICAgICd0dXBsZXMgYW5kIGxpc3RzIGFyZSBjb21wYXJlZCBsZXhpY29ncmFwaGljYWxseSBieSBjb21wYXJpbmdcbicKKyAgICAgICAgICAgICAnY29ycmVzcG9uZGluZyBlbGVtZW50cy4gVGhpcyBtZWFucyB0aGF0IHRvIGNvbXBhcmUgZXF1YWwsIGV2ZXJ5XG4nCisgICAgICAgICAgICAgJ2VsZW1lbnQgbXVzdCBjb21wYXJlIGVxdWFsIGFuZCB0aGUgdHdvIHNlcXVlbmNlcyBtdXN0IGJlIG9mIHRoZSAnCisgICAgICAgICAgICAgJ3NhbWVcbicKKyAgICAgICAgICAgICAndHlwZSBhbmQgaGF2ZSB0aGUgc2FtZSBsZW5ndGguICAoRm9yIGZ1bGwgZGV0YWlscyBzZWUgJworICAgICAgICAgICAgICdDb21wYXJpc29ucyBpblxuJworICAgICAgICAgICAgICd0aGUgbGFuZ3VhZ2UgcmVmZXJlbmNlLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gV2hpbGUgdGhlICJpbiIgYW5kICJub3QgaW4iIG9wZXJhdGlvbnMgYXJlIHVzZWQgb25seSBmb3IgJworICAgICAgICAgICAgICdzaW1wbGVcbicKKyAgICAgICAgICAgICAnICAgY29udGFpbm1lbnQgdGVzdGluZyBpbiB0aGUgZ2VuZXJhbCBjYXNlLCBzb21lIHNwZWNpYWxpc2VkICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VzXG4nCisgICAgICAgICAgICAgJyAgIChzdWNoIGFzICJzdHIiLCAiYnl0ZXMiIGFuZCAiYnl0ZWFycmF5IikgYWxzbyB1c2UgdGhlbSBmb3JcbicKKyAgICAgICAgICAgICAnICAgc3Vic2VxdWVuY2UgdGVzdGluZzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiAiZ2ciIGluICJlZ2dzIlxuJworICAgICAgICAgICAgICcgICAgICBUcnVlXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcyLiBWYWx1ZXMgb2YgKm4qIGxlc3MgdGhhbiAiMCIgYXJlIHRyZWF0ZWQgYXMgIjAiICh3aGljaCB5aWVsZHMgJworICAgICAgICAgICAgICdhblxuJworICAgICAgICAgICAgICcgICBlbXB0eSBzZXF1ZW5jZSBvZiB0aGUgc2FtZSB0eXBlIGFzICpzKikuICBOb3RlIHRoYXQgaXRlbXMgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UgKnMqIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSByZWZlcmVuY2VkIG11bHRpcGxlICcKKyAgICAgICAgICAgICAndGltZXMuXG4nCisgICAgICAgICAgICAgJyAgIFRoaXMgb2Z0ZW4gaGF1bnRzIG5ldyBQeXRob24gcHJvZ3JhbW1lcnM7IGNvbnNpZGVyOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzID0gW1tdXSAqIDNcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzXG4nCisgICAgICAgICAgICAgJyAgICAgIFtbXSwgW10sIFtdXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1xuJworICAgICAgICAgICAgICcgICAgICBbWzNdLCBbM10sIFszXV1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFdoYXQgaGFzIGhhcHBlbmVkIGlzIHRoYXQgIltbXV0iIGlzIGEgb25lLWVsZW1lbnQgbGlzdCAnCisgICAgICAgICAgICAgJ2NvbnRhaW5pbmdcbicKKyAgICAgICAgICAgICAnICAgYW4gZW1wdHkgbGlzdCwgc28gYWxsIHRocmVlIGVsZW1lbnRzIG9mICJbW11dICogMyIgYXJlICcKKyAgICAgICAgICAgICAncmVmZXJlbmNlc1xuJworICAgICAgICAgICAgICcgICB0byB0aGlzIHNpbmdsZSBlbXB0eSBsaXN0LiAgTW9kaWZ5aW5nIGFueSBvZiB0aGUgZWxlbWVudHMgb2ZcbicKKyAgICAgICAgICAgICAnICAgImxpc3RzIiBtb2RpZmllcyB0aGlzIHNpbmdsZSBsaXN0LiBZb3UgY2FuIGNyZWF0ZSBhIGxpc3Qgb2ZcbicKKyAgICAgICAgICAgICAnICAgZGlmZmVyZW50IGxpc3RzIHRoaXMgd2F5OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzID0gW1tdIGZvciBpIGluIHJhbmdlKDMpXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNbMF0uYXBwZW5kKDMpXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0c1sxXS5hcHBlbmQoNSlcbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3RzWzJdLmFwcGVuZCg3KVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdHNcbicKKyAgICAgICAgICAgICAnICAgICAgW1szXSwgWzVdLCBbN11dXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBGdXJ0aGVyIGV4cGxhbmF0aW9uIGlzIGF2YWlsYWJsZSBpbiB0aGUgRkFRIGVudHJ5IEhvdyBkbyBJICcKKyAgICAgICAgICAgICAnY3JlYXRlIGFcbicKKyAgICAgICAgICAgICAnICAgbXVsdGlkaW1lbnNpb25hbCBsaXN0Py5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuIElmICppKiBvciAqaiogaXMgbmVnYXRpdmUsIHRoZSBpbmRleCBpcyByZWxhdGl2ZSB0byB0aGUgZW5kICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgdGhlIHN0cmluZzogImxlbihzKSArIGkiIG9yICJsZW4ocykgKyBqIiBpcyBzdWJzdGl0dXRlZC4gIEJ1dCAnCisgICAgICAgICAgICAgJ25vdGVcbicKKyAgICAgICAgICAgICAnICAgdGhhdCAiLTAiIGlzIHN0aWxsICIwIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIFRoZSBzbGljZSBvZiAqcyogZnJvbSAqaSogdG8gKmoqIGlzIGRlZmluZWQgYXMgdGhlIHNlcXVlbmNlICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgaXRlbXMgd2l0aCBpbmRleCAqayogc3VjaCB0aGF0ICJpIDw9IGsgPCBqIi4gIElmICppKiBvciAqaiogJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gImxlbihzKSIsIHVzZSAibGVuKHMpIi4gIElmICppKiBpcyBvbWl0dGVkIG9yICcKKyAgICAgICAgICAgICAnIk5vbmUiLFxuJworICAgICAgICAgICAgICcgICB1c2UgIjAiLiAgSWYgKmoqIGlzIG9taXR0ZWQgb3IgIk5vbmUiLCB1c2UgImxlbihzKSIuICBJZiAqaSogJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gKmoqLCB0aGUgc2xpY2UgaXMgZW1wdHkuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc1LiBUaGUgc2xpY2Ugb2YgKnMqIGZyb20gKmkqIHRvICpqKiB3aXRoIHN0ZXAgKmsqIGlzIGRlZmluZWQgYXMgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2Ugb2YgaXRlbXMgd2l0aCBpbmRleCAgInggPSBpICsgbiprIiBzdWNoIHRoYXQgIjAgPD0gbiAnCisgICAgICAgICAgICAgJzxcbicKKyAgICAgICAgICAgICAnICAgKGotaSkvayIuICBJbiBvdGhlciB3b3JkcywgdGhlIGluZGljZXMgYXJlICJpIiwgImkrayIsICcKKyAgICAgICAgICAgICAnImkrMiprIixcbicKKyAgICAgICAgICAgICAnICAgImkrMyprIiBhbmQgc28gb24sIHN0b3BwaW5nIHdoZW4gKmoqIGlzIHJlYWNoZWQgKGJ1dCBuZXZlclxuJworICAgICAgICAgICAgICcgICBpbmNsdWRpbmcgKmoqKS4gIElmICppKiBvciAqaiogaXMgZ3JlYXRlciB0aGFuICJsZW4ocykiLCB1c2VcbicKKyAgICAgICAgICAgICAnICAgImxlbihzKSIuICBJZiAqaSogb3IgKmoqIGFyZSBvbWl0dGVkIG9yICJOb25lIiwgdGhleSBiZWNvbWUgJworICAgICAgICAgICAgICciZW5kIlxuJworICAgICAgICAgICAgICcgICB2YWx1ZXMgKHdoaWNoIGVuZCBkZXBlbmRzIG9uIHRoZSBzaWduIG9mICprKikuICBOb3RlLCAqayogJworICAgICAgICAgICAgICdjYW5ub3QgYmVcbicKKyAgICAgICAgICAgICAnICAgemVyby4gSWYgKmsqIGlzICJOb25lIiwgaXQgaXMgdHJlYXRlZCBsaWtlICIxIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzYuIENvbmNhdGVuYXRpbmcgaW1tdXRhYmxlIHNlcXVlbmNlcyBhbHdheXMgcmVzdWx0cyBpbiBhIG5ld1xuJworICAgICAgICAgICAgICcgICBvYmplY3QuIFRoaXMgbWVhbnMgdGhhdCBidWlsZGluZyB1cCBhIHNlcXVlbmNlIGJ5IHJlcGVhdGVkXG4nCisgICAgICAgICAgICAgJyAgIGNvbmNhdGVuYXRpb24gd2lsbCBoYXZlIGEgcXVhZHJhdGljIHJ1bnRpbWUgY29zdCBpbiB0aGUgJworICAgICAgICAgICAgICd0b3RhbFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBsZW5ndGguIFRvIGdldCBhIGxpbmVhciBydW50aW1lIGNvc3QsIHlvdSBtdXN0ICcKKyAgICAgICAgICAgICAnc3dpdGNoIHRvXG4nCisgICAgICAgICAgICAgJyAgIG9uZSBvZiB0aGUgYWx0ZXJuYXRpdmVzIGJlbG93OlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBpZiBjb25jYXRlbmF0aW5nICJzdHIiIG9iamVjdHMsIHlvdSBjYW4gYnVpbGQgYSBsaXN0IGFuZCAnCisgICAgICAgICAgICAgJ3VzZVxuJworICAgICAgICAgICAgICcgICAgICJzdHIuam9pbigpIiBhdCB0aGUgZW5kIG9yIGVsc2Ugd3JpdGUgdG8gYW4gImlvLlN0cmluZ0lPIlxuJworICAgICAgICAgICAgICcgICAgIGluc3RhbmNlIGFuZCByZXRyaWV2ZSBpdHMgdmFsdWUgd2hlbiBjb21wbGV0ZVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBpZiBjb25jYXRlbmF0aW5nICJieXRlcyIgb2JqZWN0cywgeW91IGNhbiBzaW1pbGFybHkgdXNlXG4nCisgICAgICAgICAgICAgJyAgICAgImJ5dGVzLmpvaW4oKSIgb3IgImlvLkJ5dGVzSU8iLCBvciB5b3UgY2FuIGRvIGluLXBsYWNlXG4nCisgICAgICAgICAgICAgJyAgICAgY29uY2F0ZW5hdGlvbiB3aXRoIGEgImJ5dGVhcnJheSIgb2JqZWN0LiAgImJ5dGVhcnJheSIgJworICAgICAgICAgICAgICdvYmplY3RzIGFyZVxuJworICAgICAgICAgICAgICcgICAgIG11dGFibGUgYW5kIGhhdmUgYW4gZWZmaWNpZW50IG92ZXJhbGxvY2F0aW9uIG1lY2hhbmlzbVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBpZiBjb25jYXRlbmF0aW5nICJ0dXBsZSIgb2JqZWN0cywgZXh0ZW5kIGEgImxpc3QiIGluc3RlYWRcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogZm9yIG90aGVyIHR5cGVzLCBpbnZlc3RpZ2F0ZSB0aGUgcmVsZXZhbnQgY2xhc3MgJworICAgICAgICAgICAgICdkb2N1bWVudGF0aW9uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc3LiBTb21lIHNlcXVlbmNlIHR5cGVzIChzdWNoIGFzICJyYW5nZSIpIG9ubHkgc3VwcG9ydCBpdGVtXG4nCisgICAgICAgICAgICAgIiAgIHNlcXVlbmNlcyB0aGF0IGZvbGxvdyBzcGVjaWZpYyBwYXR0ZXJucywgYW5kIGhlbmNlIGRvbid0ICIKKyAgICAgICAgICAgICAnc3VwcG9ydFxuJworICAgICAgICAgICAgICcgICBzZXF1ZW5jZSBjb25jYXRlbmF0aW9uIG9yIHJlcGV0aXRpb24uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc4LiAiaW5kZXgiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi4gJworICAgICAgICAgICAgICdXaGVuXG4nCisgICAgICAgICAgICAgJyAgIHN1cHBvcnRlZCwgdGhlIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvIHRoZSBpbmRleCBtZXRob2QgJworICAgICAgICAgICAgICdhbGxvd1xuJworICAgICAgICAgICAgICcgICBlZmZpY2llbnQgc2VhcmNoaW5nIG9mIHN1YnNlY3Rpb25zIG9mIHRoZSBzZXF1ZW5jZS4gUGFzc2luZyAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBleHRyYSBhcmd1bWVudHMgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHVzaW5nICcKKyAgICAgICAgICAgICAnInNbaTpqXS5pbmRleCh4KSIsXG4nCisgICAgICAgICAgICAgJyAgIG9ubHkgd2l0aG91dCBjb3B5aW5nIGFueSBkYXRhIGFuZCB3aXRoIHRoZSByZXR1cm5lZCBpbmRleCAnCisgICAgICAgICAgICAgJ2JlaW5nXG4nCisgICAgICAgICAgICAgJyAgIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgc2VxdWVuY2UgcmF0aGVyIHRoYW4gdGhlIHN0YXJ0ICcKKyAgICAgICAgICAgICAnb2YgdGhlXG4nCisgICAgICAgICAgICAgJyAgIHNsaWNlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0ltbXV0YWJsZSBTZXF1ZW5jZSBUeXBlc1xuJworICAgICAgICAgICAgICc9PT09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvbmx5IG9wZXJhdGlvbiB0aGF0IGltbXV0YWJsZSBzZXF1ZW5jZSB0eXBlcyBnZW5lcmFsbHkgJworICAgICAgICAgICAgICdpbXBsZW1lbnRcbicKKyAgICAgICAgICAgICAndGhhdCBpcyBub3QgYWxzbyBpbXBsZW1lbnRlZCBieSBtdXRhYmxlIHNlcXVlbmNlIHR5cGVzIGlzICcKKyAgICAgICAgICAgICAnc3VwcG9ydCBmb3JcbicKKyAgICAgICAgICAgICAndGhlICJoYXNoKCkiIGJ1aWx0LWluLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhpcyBzdXBwb3J0IGFsbG93cyBpbW11dGFibGUgc2VxdWVuY2VzLCBzdWNoIGFzICJ0dXBsZSIgJworICAgICAgICAgICAgICdpbnN0YW5jZXMsIHRvXG4nCisgICAgICAgICAgICAgJ2JlIHVzZWQgYXMgImRpY3QiIGtleXMgYW5kIHN0b3JlZCBpbiAic2V0IiBhbmQgImZyb3plbnNldCIgJworICAgICAgICAgICAgICdpbnN0YW5jZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdBdHRlbXB0aW5nIHRvIGhhc2ggYW4gaW1tdXRhYmxlIHNlcXVlbmNlIHRoYXQgY29udGFpbnMgJworICAgICAgICAgICAgICd1bmhhc2hhYmxlXG4nCisgICAgICAgICAgICAgJ3ZhbHVlcyB3aWxsIHJlc3VsdCBpbiAiVHlwZUVycm9yIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdNdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgJz09PT09PT09PT09PT09PT09PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gbXV0YWJsZSAnCisgICAgICAgICAgICAgJ3NlcXVlbmNlXG4nCisgICAgICAgICAgICAgJ3R5cGVzLiBUaGUgImNvbGxlY3Rpb25zLmFiYy5NdXRhYmxlU2VxdWVuY2UiIEFCQyBpcyBwcm92aWRlZCB0byAnCisgICAgICAgICAgICAgJ21ha2VcbicKKyAgICAgICAgICAgICAnaXQgZWFzaWVyIHRvIGNvcnJlY3RseSBpbXBsZW1lbnQgdGhlc2Ugb3BlcmF0aW9ucyBvbiBjdXN0b20gJworICAgICAgICAgICAgICdzZXF1ZW5jZVxuJworICAgICAgICAgICAgICd0eXBlcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0luIHRoZSB0YWJsZSAqcyogaXMgYW4gaW5zdGFuY2Ugb2YgYSBtdXRhYmxlIHNlcXVlbmNlIHR5cGUsICp0KiAnCisgICAgICAgICAgICAgJ2lzIGFueVxuJworICAgICAgICAgICAgICdpdGVyYWJsZSBvYmplY3QgYW5kICp4KiBpcyBhbiBhcmJpdHJhcnkgb2JqZWN0IHRoYXQgbWVldHMgYW55ICcKKyAgICAgICAgICAgICAndHlwZSBhbmRcbicKKyAgICAgICAgICAgICAndmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgImJ5dGVhcnJheSIgJworICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgJ2FjY2VwdHMgaW50ZWdlcnMgdGhhdCBtZWV0IHRoZSB2YWx1ZSByZXN0cmljdGlvbiAiMCA8PSB4IDw9ICcKKyAgICAgICAgICAgICAnMjU1IikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgJ1Jlc3VsdCAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgTm90ZXMgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Kz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaV0gPSB4IiAgICAgICAgICAgICAgICAgICAgIHwgaXRlbSAqaSogb2YgKnMqIGlzIHJlcGxhY2VkICcKKyAgICAgICAgICAgICAnYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgJworICAgICAgICAgICAgICcqeCogICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiB0byAqaiogJworICAgICAgICAgICAgICdpcyAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHJlcGxhY2VkIGJ5IHRoZSBjb250ZW50cyBvZiAnCisgICAgICAgICAgICAgJ3RoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGl0ZXJhYmxlICcKKyAgICAgICAgICAgICAnKnQqICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAiZGVsIHNbaTpqXSIgICAgICAgICAgICAgICAgICAgfCBzYW1lIGFzICJzW2k6al0gPSAnCisgICAgICAgICAgICAgJ1tdIiAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInNbaTpqOmtdID0gdCIgICAgICAgICAgICAgICAgIHwgdGhlIGVsZW1lbnRzIG9mICJzW2k6ajprXSIgJworICAgICAgICAgICAgICdhcmUgICB8ICgxKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgJworICAgICAgICAgICAgICcqdCogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAnb2YgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6ajprXSIgZnJvbSB0aGUgJworICAgICAgICAgICAgICdsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5hcHBlbmQoeCkiICAgICAgICAgICAgICAgICAgfCBhcHBlbmRzICp4KiB0byB0aGUgZW5kIG9mICcKKyAgICAgICAgICAgICAndGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzZXF1ZW5jZSAoc2FtZSAnCisgICAgICAgICAgICAgJ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9ICcKKyAgICAgICAgICAgICAnW3hdIikgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgZnJvbSAicyIgJworICAgICAgICAgICAgICcoc2FtZSB8ICg1KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgImRlbCAnCisgICAgICAgICAgICAgJ3NbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmNvcHkoKSIgICAgICAgICAgICAgICAgICAgICB8IGNyZWF0ZXMgYSBzaGFsbG93IGNvcHkgb2YgJworICAgICAgICAgICAgICcicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IChzYW1lIGFzICcKKyAgICAgICAgICAgICAnInNbOl0iKSAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5leHRlbmQodCkiIG9yICJzICs9IHQiICAgICAgfCBleHRlbmRzICpzKiB3aXRoIHRoZSBjb250ZW50cyAnCisgICAgICAgICAgICAgJ29mIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCBwYXJ0IHRoZSAnCisgICAgICAgICAgICAgJ3NhbWUgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhcyAic1tsZW4ocyk6bGVuKHMpXSA9ICcKKyAgICAgICAgICAgICAndCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMgKj0gbiIgICAgICAgICAgICAgICAgICAgICAgIHwgdXBkYXRlcyAqcyogd2l0aCBpdHMgJworICAgICAgICAgICAgICdjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwZWF0ZWQgKm4qICcKKyAgICAgICAgICAgICAndGltZXMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLmluc2VydChpLCB4KSIgICAgICAgICAgICAgICB8IGluc2VydHMgKngqIGludG8gKnMqIGF0ICcKKyAgICAgICAgICAgICAndGhlICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAoc2FtZSAnCisgICAgICAgICAgICAgJ2FzICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICJzW2k6aV0gPSAnCisgICAgICAgICAgICAgJ1t4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnfCAicy5wb3AoW2ldKSIgICAgICAgICAgICAgICAgICAgfCByZXRyaWV2ZXMgdGhlIGl0ZW0gYXQgKmkqICcKKyAgICAgICAgICAgICAnYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBhbHNvIHJlbW92ZXMgaXQgZnJvbSAnCisgICAgICAgICAgICAgJypzKiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgJ3wgInMucmVtb3ZlKHgpIiAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlIHRoZSBmaXJzdCBpdGVtIGZyb20gJworICAgICAgICAgICAgICcqcyogICB8ICgzKSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0gJworICAgICAgICAgICAgICd4IiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICd8ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAqcyogJworICAgICAgICAgICAgICdpbiAgICAgfCAoNCkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICcKKyAgICAgICAgICAgICAncGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05vdGVzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnMS4gKnQqIG11c3QgaGF2ZSB0aGUgc2FtZSBsZW5ndGggYXMgdGhlIHNsaWNlIGl0IGlzIHJlcGxhY2luZy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzIuIFRoZSBvcHRpb25hbCBhcmd1bWVudCAqaSogZGVmYXVsdHMgdG8gIi0xIiwgc28gdGhhdCBieSAnCisgICAgICAgICAgICAgJ2RlZmF1bHRcbicKKyAgICAgICAgICAgICAnICAgdGhlIGxhc3QgaXRlbSBpcyByZW1vdmVkIGFuZCByZXR1cm5lZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICpzKi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJzQuIFRoZSAicmV2ZXJzZSgpIiBtZXRob2QgbW9kaWZpZXMgdGhlIHNlcXVlbmNlIGluIHBsYWNlIGZvclxuJworICAgICAgICAgICAgICcgICBlY29ub215IG9mIHNwYWNlIHdoZW4gcmV2ZXJzaW5nIGEgbGFyZ2Ugc2VxdWVuY2UuICBUbyByZW1pbmQgJworICAgICAgICAgICAgICd1c2Vyc1xuJworICAgICAgICAgICAgICcgICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gdGhlICcKKyAgICAgICAgICAgICAncmV2ZXJzZWRcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc1LiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIGFyZSBpbmNsdWRlZCBmb3IgY29uc2lzdGVuY3kgd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAiICAgaW50ZXJmYWNlcyBvZiBtdXRhYmxlIGNvbnRhaW5lcnMgdGhhdCBkb24ndCBzdXBwb3J0IHNsaWNpbmdcbiIKKyAgICAgICAgICAgICAnICAgb3BlcmF0aW9ucyAoc3VjaCBhcyAiZGljdCIgYW5kICJzZXQiKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc2LiBUaGUgdmFsdWUgKm4qIGlzIGFuIGludGVnZXIsIG9yIGFuIG9iamVjdCBpbXBsZW1lbnRpbmdcbicKKyAgICAgICAgICAgICAnICAgIl9faW5kZXhfXygpIi4gIFplcm8gYW5kIG5lZ2F0aXZlIHZhbHVlcyBvZiAqbiogY2xlYXIgdGhlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgJyAgIEl0ZW1zIGluIHRoZSBzZXF1ZW5jZSBhcmUgbm90IGNvcGllZDsgdGhleSBhcmUgcmVmZXJlbmNlZCAnCisgICAgICAgICAgICAgJ211bHRpcGxlXG4nCisgICAgICAgICAgICAgJyAgIHRpbWVzLCBhcyBleHBsYWluZWQgZm9yICJzICogbiIgdW5kZXIgQ29tbW9uIFNlcXVlbmNlICcKKyAgICAgICAgICAgICAnT3BlcmF0aW9ucy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdMaXN0c1xuJworICAgICAgICAgICAgICc9PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnTGlzdHMgYXJlIG11dGFibGUgc2VxdWVuY2VzLCB0eXBpY2FsbHkgdXNlZCB0byBzdG9yZSBjb2xsZWN0aW9ucyAnCisgICAgICAgICAgICAgJ29mXG4nCisgICAgICAgICAgICAgJ2hvbW9nZW5lb3VzIGl0ZW1zICh3aGVyZSB0aGUgcHJlY2lzZSBkZWdyZWUgb2Ygc2ltaWxhcml0eSB3aWxsICcKKyAgICAgICAgICAgICAndmFyeSBieVxuJworICAgICAgICAgICAgICdhcHBsaWNhdGlvbikuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdjbGFzcyBsaXN0KFtpdGVyYWJsZV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0cyBtYXkgYmUgY29uc3RydWN0ZWQgaW4gc2V2ZXJhbCB3YXlzOlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIHBhaXIgb2Ygc3F1YXJlIGJyYWNrZXRzIHRvIGRlbm90ZSB0aGUgZW1wdHkgbGlzdDogJworICAgICAgICAgICAgICciW10iXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHNxdWFyZSBicmFja2V0cywgc2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogJworICAgICAgICAgICAgICciW2FdIixcbicKKyAgICAgICAgICAgICAnICAgICAiW2EsIGIsIGNdIlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgKiBVc2luZyBhIGxpc3QgY29tcHJlaGVuc2lvbjogIlt4IGZvciB4IGluIGl0ZXJhYmxlXSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgdGhlIHR5cGUgY29uc3RydWN0b3I6ICJsaXN0KCkiIG9yICJsaXN0KGl0ZXJhYmxlKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIFRoZSBjb25zdHJ1Y3RvciBidWlsZHMgYSBsaXN0IHdob3NlIGl0ZW1zIGFyZSB0aGUgc2FtZSBhbmQgaW4gJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAiICAgc2FtZSBvcmRlciBhcyAqaXRlcmFibGUqJ3MgaXRlbXMuICAqaXRlcmFibGUqIG1heSBiZSBlaXRoZXIgIgorICAgICAgICAgICAgICdhXG4nCisgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLCBhIGNvbnRhaW5lciB0aGF0IHN1cHBvcnRzIGl0ZXJhdGlvbiwgb3IgYW4gJworICAgICAgICAgICAgICdpdGVyYXRvclxuJworICAgICAgICAgICAgICcgICBvYmplY3QuICBJZiAqaXRlcmFibGUqIGlzIGFscmVhZHkgYSBsaXN0LCBhIGNvcHkgaXMgbWFkZSBhbmRcbicKKyAgICAgICAgICAgICAnICAgcmV0dXJuZWQsIHNpbWlsYXIgdG8gIml0ZXJhYmxlWzpdIi4gRm9yIGV4YW1wbGUsICcKKyAgICAgICAgICAgICAnImxpc3QoXCdhYmNcJykiXG4nCisgICAgICAgICAgICAgJyAgIHJldHVybnMgIltcJ2FcJywgXCdiXCcsIFwnY1wnXSIgYW5kICJsaXN0KCAoMSwgMiwgMykgKSIgJworICAgICAgICAgICAgICdyZXR1cm5zICJbMSwgMixcbicKKyAgICAgICAgICAgICAnICAgM10iLiBJZiBubyBhcmd1bWVudCBpcyBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgJworICAgICAgICAgICAgICdlbXB0eVxuJworICAgICAgICAgICAgICcgICBsaXN0LCAiW10iLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgTWFueSBvdGhlciBvcGVyYXRpb25zIGFsc28gcHJvZHVjZSBsaXN0cywgaW5jbHVkaW5nIHRoZSAnCisgICAgICAgICAgICAgJyJzb3J0ZWQoKSJcbicKKyAgICAgICAgICAgICAnICAgYnVpbHQtaW4uXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBMaXN0cyBpbXBsZW1lbnQgYWxsIG9mIHRoZSBjb21tb24gYW5kIG11dGFibGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdvcGVyYXRpb25zLlxuJworICAgICAgICAgICAgICcgICBMaXN0cyBhbHNvIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG1ldGhvZDpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHNvcnQoKiwga2V5PU5vbmUsIHJldmVyc2U9Tm9uZSlcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoaXMgbWV0aG9kIHNvcnRzIHRoZSBsaXN0IGluIHBsYWNlLCB1c2luZyBvbmx5ICI8IiAnCisgICAgICAgICAgICAgJ2NvbXBhcmlzb25zXG4nCisgICAgICAgICAgICAgJyAgICAgIGJldHdlZW4gaXRlbXMuIEV4Y2VwdGlvbnMgYXJlIG5vdCBzdXBwcmVzc2VkIC0gaWYgYW55ICcKKyAgICAgICAgICAgICAnY29tcGFyaXNvblxuJworICAgICAgICAgICAgICcgICAgICBvcGVyYXRpb25zIGZhaWwsIHRoZSBlbnRpcmUgc29ydCBvcGVyYXRpb24gd2lsbCBmYWlsIChhbmQgJworICAgICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAgICAnICAgICAgbGlzdCB3aWxsIGxpa2VseSBiZSBsZWZ0IGluIGEgcGFydGlhbGx5IG1vZGlmaWVkIHN0YXRlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICJzb3J0KCkiIGFjY2VwdHMgdHdvIGFyZ3VtZW50cyB0aGF0IGNhbiBvbmx5IGJlIHBhc3NlZCBieVxuJworICAgICAgICAgICAgICcgICAgICBrZXl3b3JkIChrZXl3b3JkLW9ubHkgYXJndW1lbnRzKTpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICprZXkqIHNwZWNpZmllcyBhIGZ1bmN0aW9uIG9mIG9uZSBhcmd1bWVudCB0aGF0IGlzIHVzZWQgJworICAgICAgICAgICAgICd0b1xuJworICAgICAgICAgICAgICcgICAgICBleHRyYWN0IGEgY29tcGFyaXNvbiBrZXkgZnJvbSBlYWNoIGxpc3QgZWxlbWVudCAoZm9yICcKKyAgICAgICAgICAgICAnZXhhbXBsZSxcbicKKyAgICAgICAgICAgICAnICAgICAgImtleT1zdHIubG93ZXIiKS4gVGhlIGtleSBjb3JyZXNwb25kaW5nIHRvIGVhY2ggaXRlbSBpbiAnCisgICAgICAgICAgICAgJ3RoZSBsaXN0XG4nCisgICAgICAgICAgICAgJyAgICAgIGlzIGNhbGN1bGF0ZWQgb25jZSBhbmQgdGhlbiB1c2VkIGZvciB0aGUgZW50aXJlIHNvcnRpbmcgJworICAgICAgICAgICAgICdwcm9jZXNzLlxuJworICAgICAgICAgICAgICcgICAgICBUaGUgZGVmYXVsdCB2YWx1ZSBvZiAiTm9uZSIgbWVhbnMgdGhhdCBsaXN0IGl0ZW1zIGFyZSAnCisgICAgICAgICAgICAgJ3NvcnRlZFxuJworICAgICAgICAgICAgICcgICAgICBkaXJlY3RseSB3aXRob3V0IGNhbGN1bGF0aW5nIGEgc2VwYXJhdGUga2V5IHZhbHVlLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlICJmdW5jdG9vbHMuY21wX3RvX2tleSgpIiB1dGlsaXR5IGlzIGF2YWlsYWJsZSB0byAnCisgICAgICAgICAgICAgJ2NvbnZlcnQgYVxuJworICAgICAgICAgICAgICcgICAgICAyLnggc3R5bGUgKmNtcCogZnVuY3Rpb24gdG8gYSAqa2V5KiBmdW5jdGlvbi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgICpyZXZlcnNlKiBpcyBhIGJvb2xlYW4gdmFsdWUuICBJZiBzZXQgdG8gIlRydWUiLCB0aGVuIHRoZSAnCisgICAgICAgICAgICAgJ2xpc3RcbicKKyAgICAgICAgICAgICAnICAgICAgZWxlbWVudHMgYXJlIHNvcnRlZCBhcyBpZiBlYWNoIGNvbXBhcmlzb24gd2VyZSByZXZlcnNlZC5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoaXMgbWV0aG9kIG1vZGlmaWVzIHRoZSBzZXF1ZW5jZSBpbiBwbGFjZSBmb3IgZWNvbm9teSBvZiAnCisgICAgICAgICAgICAgJ3NwYWNlXG4nCisgICAgICAgICAgICAgJyAgICAgIHdoZW4gc29ydGluZyBhIGxhcmdlIHNlcXVlbmNlLiAgVG8gcmVtaW5kIHVzZXJzIHRoYXQgaXQgJworICAgICAgICAgICAgICdvcGVyYXRlc1xuJworICAgICAgICAgICAgICcgICAgICBieSBzaWRlIGVmZmVjdCwgaXQgZG9lcyBub3QgcmV0dXJuIHRoZSBzb3J0ZWQgc2VxdWVuY2UgJworICAgICAgICAgICAgICcodXNlXG4nCisgICAgICAgICAgICAgJyAgICAgICJzb3J0ZWQoKSIgdG8gZXhwbGljaXRseSByZXF1ZXN0IGEgbmV3IHNvcnRlZCBsaXN0ICcKKyAgICAgICAgICAgICAnaW5zdGFuY2UpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgVGhlICJzb3J0KCkiIG1ldGhvZCBpcyBndWFyYW50ZWVkIHRvIGJlIHN0YWJsZS4gIEEgc29ydCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJyAgICAgIHN0YWJsZSBpZiBpdCBndWFyYW50ZWVzIG5vdCB0byBjaGFuZ2UgdGhlIHJlbGF0aXZlIG9yZGVyICcKKyAgICAgICAgICAgICAnb2ZcbicKKyAgICAgICAgICAgICAnICAgICAgZWxlbWVudHMgdGhhdCBjb21wYXJlIGVxdWFsIC0tLSB0aGlzIGlzIGhlbHBmdWwgZm9yICcKKyAgICAgICAgICAgICAnc29ydGluZyBpblxuJworICAgICAgICAgICAgICcgICAgICBtdWx0aXBsZSBwYXNzZXMgKGZvciBleGFtcGxlLCBzb3J0IGJ5IGRlcGFydG1lbnQsIHRoZW4gYnkgJworICAgICAgICAgICAgICdzYWxhcnlcbicKKyAgICAgICAgICAgICAnICAgICAgZ3JhZGUpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgICAgKipDUHl0aG9uIGltcGxlbWVudGF0aW9uIGRldGFpbDoqKiBXaGlsZSBhIGxpc3QgaXMgYmVpbmcgJworICAgICAgICAgICAgICdzb3J0ZWQsXG4nCisgICAgICAgICAgICAgJyAgICAgIHRoZSBlZmZlY3Qgb2YgYXR0ZW1wdGluZyB0byBtdXRhdGUsIG9yIGV2ZW4gaW5zcGVjdCwgdGhlICcKKyAgICAgICAgICAgICAnbGlzdCBpc1xuJworICAgICAgICAgICAgICcgICAgICB1bmRlZmluZWQuICBUaGUgQyBpbXBsZW1lbnRhdGlvbiBvZiBQeXRob24gbWFrZXMgdGhlIGxpc3QgJworICAgICAgICAgICAgICdhcHBlYXJcbicKKyAgICAgICAgICAgICAnICAgICAgZW1wdHkgZm9yIHRoZSBkdXJhdGlvbiwgYW5kIHJhaXNlcyAiVmFsdWVFcnJvciIgaWYgaXQgY2FuICcKKyAgICAgICAgICAgICAnZGV0ZWN0XG4nCisgICAgICAgICAgICAgJyAgICAgIHRoYXQgdGhlIGxpc3QgaGFzIGJlZW4gbXV0YXRlZCBkdXJpbmcgYSBzb3J0LlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1R1cGxlc1xuJworICAgICAgICAgICAgICc9PT09PT1cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ1R1cGxlcyBhcmUgaW1tdXRhYmxlIHNlcXVlbmNlcywgdHlwaWNhbGx5IHVzZWQgdG8gc3RvcmUgJworICAgICAgICAgICAgICdjb2xsZWN0aW9ucyBvZlxuJworICAgICAgICAgICAgICdoZXRlcm9nZW5lb3VzIGRhdGEgKHN1Y2ggYXMgdGhlIDItdHVwbGVzIHByb2R1Y2VkIGJ5IHRoZSAnCisgICAgICAgICAgICAgJyJlbnVtZXJhdGUoKSJcbicKKyAgICAgICAgICAgICAnYnVpbHQtaW4pLiBUdXBsZXMgYXJlIGFsc28gdXNlZCBmb3IgY2FzZXMgd2hlcmUgYW4gaW1tdXRhYmxlICcKKyAgICAgICAgICAgICAnc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAnb2YgaG9tb2dlbmVvdXMgZGF0YSBpcyBuZWVkZWQgKHN1Y2ggYXMgYWxsb3dpbmcgc3RvcmFnZSBpbiBhICcKKyAgICAgICAgICAgICAnInNldCIgb3JcbicKKyAgICAgICAgICAgICAnImRpY3QiIGluc3RhbmNlKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIHR1cGxlKFtpdGVyYWJsZV0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUdXBsZXMgbWF5IGJlIGNvbnN0cnVjdGVkIGluIGEgbnVtYmVyIG9mIHdheXM6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIGEgcGFpciBvZiBwYXJlbnRoZXNlcyB0byBkZW5vdGUgdGhlIGVtcHR5IHR1cGxlOiAnCisgICAgICAgICAgICAgJyIoKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogVXNpbmcgYSB0cmFpbGluZyBjb21tYSBmb3IgYSBzaW5nbGV0b24gdHVwbGU6ICJhLCIgb3IgJworICAgICAgICAgICAgICciKGEsKSJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICogU2VwYXJhdGluZyBpdGVtcyB3aXRoIGNvbW1hczogImEsIGIsIGMiIG9yICIoYSwgYiwgYykiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAqIFVzaW5nIHRoZSAidHVwbGUoKSIgYnVpbHQtaW46ICJ0dXBsZSgpIiBvciAnCisgICAgICAgICAgICAgJyJ0dXBsZShpdGVyYWJsZSkiXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgY29uc3RydWN0b3IgYnVpbGRzIGEgdHVwbGUgd2hvc2UgaXRlbXMgYXJlIHRoZSBzYW1lIGFuZCAnCisgICAgICAgICAgICAgJ2luIHRoZVxuJworICAgICAgICAgICAgICIgICBzYW1lIG9yZGVyIGFzICppdGVyYWJsZSoncyBpdGVtcy4gICppdGVyYWJsZSogbWF5IGJlIGVpdGhlciAiCisgICAgICAgICAgICAgJ2FcbicKKyAgICAgICAgICAgICAnICAgc2VxdWVuY2UsIGEgY29udGFpbmVyIHRoYXQgc3VwcG9ydHMgaXRlcmF0aW9uLCBvciBhbiAnCisgICAgICAgICAgICAgJ2l0ZXJhdG9yXG4nCisgICAgICAgICAgICAgJyAgIG9iamVjdC4gIElmICppdGVyYWJsZSogaXMgYWxyZWFkeSBhIHR1cGxlLCBpdCBpcyByZXR1cm5lZFxuJworICAgICAgICAgICAgICcgICB1bmNoYW5nZWQuIEZvciBleGFtcGxlLCAidHVwbGUoXCdhYmNcJykiIHJldHVybnMgIihcJ2FcJywgJworICAgICAgICAgICAgICdcJ2JcJywgXCdjXCcpIlxuJworICAgICAgICAgICAgICcgICBhbmQgInR1cGxlKCBbMSwgMiwgM10gKSIgcmV0dXJucyAiKDEsIDIsIDMpIi4gSWYgbm8gYXJndW1lbnQgJworICAgICAgICAgICAgICdpc1xuJworICAgICAgICAgICAgICcgICBnaXZlbiwgdGhlIGNvbnN0cnVjdG9yIGNyZWF0ZXMgYSBuZXcgZW1wdHkgdHVwbGUsICIoKSIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBOb3RlIHRoYXQgaXQgaXMgYWN0dWFsbHkgdGhlIGNvbW1hIHdoaWNoIG1ha2VzIGEgdHVwbGUsIG5vdCAnCisgICAgICAgICAgICAgJ3RoZVxuJworICAgICAgICAgICAgICcgICBwYXJlbnRoZXNlcy4gVGhlIHBhcmVudGhlc2VzIGFyZSBvcHRpb25hbCwgZXhjZXB0IGluIHRoZSAnCisgICAgICAgICAgICAgJ2VtcHR5XG4nCisgICAgICAgICAgICAgJyAgIHR1cGxlIGNhc2UsIG9yIHdoZW4gdGhleSBhcmUgbmVlZGVkIHRvIGF2b2lkIHN5bnRhY3RpYyAnCisgICAgICAgICAgICAgJ2FtYmlndWl0eS5cbicKKyAgICAgICAgICAgICAnICAgRm9yIGV4YW1wbGUsICJmKGEsIGIsIGMpIiBpcyBhIGZ1bmN0aW9uIGNhbGwgd2l0aCB0aHJlZSAnCisgICAgICAgICAgICAgJ2FyZ3VtZW50cyxcbicKKyAgICAgICAgICAgICAnICAgd2hpbGUgImYoKGEsIGIsIGMpKSIgaXMgYSBmdW5jdGlvbiBjYWxsIHdpdGggYSAzLXR1cGxlIGFzIHRoZSAnCisgICAgICAgICAgICAgJ3NvbGVcbicKKyAgICAgICAgICAgICAnICAgYXJndW1lbnQuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUdXBsZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdGb3IgaGV0ZXJvZ2VuZW91cyBjb2xsZWN0aW9ucyBvZiBkYXRhIHdoZXJlIGFjY2VzcyBieSBuYW1lIGlzICcKKyAgICAgICAgICAgICAnY2xlYXJlclxuJworICAgICAgICAgICAgICd0aGFuIGFjY2VzcyBieSBpbmRleCwgImNvbGxlY3Rpb25zLm5hbWVkdHVwbGUoKSIgbWF5IGJlIGEgbW9yZVxuJworICAgICAgICAgICAgICdhcHByb3ByaWF0ZSBjaG9pY2UgdGhhbiBhIHNpbXBsZSB0dXBsZSBvYmplY3QuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUmFuZ2VzXG4nCisgICAgICAgICAgICAgJz09PT09PVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlICJyYW5nZSIgdHlwZSByZXByZXNlbnRzIGFuIGltbXV0YWJsZSBzZXF1ZW5jZSBvZiBudW1iZXJzIGFuZCAnCisgICAgICAgICAgICAgJ2lzXG4nCisgICAgICAgICAgICAgJ2NvbW1vbmx5IHVzZWQgZm9yIGxvb3BpbmcgYSBzcGVjaWZpYyBudW1iZXIgb2YgdGltZXMgaW4gImZvciIgJworICAgICAgICAgICAgICdsb29wcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ2NsYXNzIHJhbmdlKHN0b3ApXG4nCisgICAgICAgICAgICAgJ2NsYXNzIHJhbmdlKHN0YXJ0LCBzdG9wWywgc3RlcF0pXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBUaGUgYXJndW1lbnRzIHRvIHRoZSByYW5nZSBjb25zdHJ1Y3RvciBtdXN0IGJlIGludGVnZXJzICcKKyAgICAgICAgICAgICAnKGVpdGhlclxuJworICAgICAgICAgICAgICcgICBidWlsdC1pbiAiaW50IiBvciBhbnkgb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgIl9faW5kZXhfXyJcbicKKyAgICAgICAgICAgICAnICAgc3BlY2lhbCBtZXRob2QpLiAgSWYgdGhlICpzdGVwKiBhcmd1bWVudCBpcyBvbWl0dGVkLCBpdCAnCisgICAgICAgICAgICAgJ2RlZmF1bHRzIHRvXG4nCisgICAgICAgICAgICAgJyAgICIxIi4gSWYgdGhlICpzdGFydCogYXJndW1lbnQgaXMgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gIjAiLiAnCisgICAgICAgICAgICAgJ0lmXG4nCisgICAgICAgICAgICAgJyAgICpzdGVwKiBpcyB6ZXJvLCAiVmFsdWVFcnJvciIgaXMgcmFpc2VkLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGEgcG9zaXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgYSByYW5nZSAiciIgYXJlICcKKyAgICAgICAgICAgICAnZGV0ZXJtaW5lZFxuJworICAgICAgICAgICAgICcgICBieSB0aGUgZm9ybXVsYSAicltpXSA9IHN0YXJ0ICsgc3RlcCppIiB3aGVyZSAiaSA+PSAwIiBhbmQgJworICAgICAgICAgICAgICcicltpXSA8XG4nCisgICAgICAgICAgICAgJyAgIHN0b3AiLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgRm9yIGEgbmVnYXRpdmUgKnN0ZXAqLCB0aGUgY29udGVudHMgb2YgdGhlIHJhbmdlIGFyZSBzdGlsbFxuJworICAgICAgICAgICAgICcgICBkZXRlcm1pbmVkIGJ5IHRoZSBmb3JtdWxhICJyW2ldID0gc3RhcnQgKyBzdGVwKmkiLCBidXQgdGhlXG4nCisgICAgICAgICAgICAgJyAgIGNvbnN0cmFpbnRzIGFyZSAiaSA+PSAwIiBhbmQgInJbaV0gPiBzdG9wIi5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIEEgcmFuZ2Ugb2JqZWN0IHdpbGwgYmUgZW1wdHkgaWYgInJbMF0iIGRvZXMgbm90IG1lZXQgdGhlICcKKyAgICAgICAgICAgICAndmFsdWVcbicKKyAgICAgICAgICAgICAnICAgY29uc3RyYWludC4gUmFuZ2VzIGRvIHN1cHBvcnQgbmVnYXRpdmUgaW5kaWNlcywgYnV0IHRoZXNlICcKKyAgICAgICAgICAgICAnYXJlXG4nCisgICAgICAgICAgICAgJyAgIGludGVycHJldGVkIGFzIGluZGV4aW5nIGZyb20gdGhlIGVuZCBvZiB0aGUgc2VxdWVuY2UgJworICAgICAgICAgICAgICdkZXRlcm1pbmVkIGJ5XG4nCisgICAgICAgICAgICAgJyAgIHRoZSBwb3NpdGl2ZSBpbmRpY2VzLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnICAgUmFuZ2VzIGNvbnRhaW5pbmcgYWJzb2x1dGUgdmFsdWVzIGxhcmdlciB0aGFuICJzeXMubWF4c2l6ZSIgJworICAgICAgICAgICAgICdhcmVcbicKKyAgICAgICAgICAgICAnICAgcGVybWl0dGVkIGJ1dCBzb21lIGZlYXR1cmVzIChzdWNoIGFzICJsZW4oKSIpIG1heSByYWlzZVxuJworICAgICAgICAgICAgICcgICAiT3ZlcmZsb3dFcnJvciIuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZSBleGFtcGxlczpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzAsIDEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDldXG4nCisgICAgICAgICAgICAgJyAgICAgID4+PiBsaXN0KHJhbmdlKDEsIDExKSlcbicKKyAgICAgICAgICAgICAnICAgICAgWzEsIDIsIDMsIDQsIDUsIDYsIDcsIDgsIDksIDEwXVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwLCAzMCwgNSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCA1LCAxMCwgMTUsIDIwLCAyNV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgMTAsIDMpKVxuJworICAgICAgICAgICAgICcgICAgICBbMCwgMywgNiwgOV1cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMCwgLTEwLCAtMSkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFswLCAtMSwgLTIsIC0zLCAtNCwgLTUsIC02LCAtNywgLTgsIC05XVxuJworICAgICAgICAgICAgICcgICAgICA+Pj4gbGlzdChyYW5nZSgwKSlcbicKKyAgICAgICAgICAgICAnICAgICAgW11cbicKKyAgICAgICAgICAgICAnICAgICAgPj4+IGxpc3QocmFuZ2UoMSwgMCkpXG4nCisgICAgICAgICAgICAgJyAgICAgIFtdXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBSYW5nZXMgaW1wbGVtZW50IGFsbCBvZiB0aGUgY29tbW9uIHNlcXVlbmNlIG9wZXJhdGlvbnMgJworICAgICAgICAgICAgICdleGNlcHRcbicKKyAgICAgICAgICAgICAnICAgY29uY2F0ZW5hdGlvbiBhbmQgcmVwZXRpdGlvbiAoZHVlIHRvIHRoZSBmYWN0IHRoYXQgcmFuZ2UgJworICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgJyAgIGNhbiBvbmx5IHJlcHJlc2VudCBzZXF1ZW5jZXMgdGhhdCBmb2xsb3cgYSBzdHJpY3QgcGF0dGVybiAnCisgICAgICAgICAgICAgJ2FuZFxuJworICAgICAgICAgICAgICcgICByZXBldGl0aW9uIGFuZCBjb25jYXRlbmF0aW9uIHdpbGwgdXN1YWxseSB2aW9sYXRlIHRoYXQgJworICAgICAgICAgICAgICdwYXR0ZXJuKS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHN0YXJ0XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdGFydCogcGFyYW1ldGVyIChvciAiMCIgaWYgdGhlICcKKyAgICAgICAgICAgICAncGFyYW1ldGVyIHdhc1xuJworICAgICAgICAgICAgICcgICAgICBub3Qgc3VwcGxpZWQpXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICBzdG9wXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICcgICAgICBUaGUgdmFsdWUgb2YgdGhlICpzdG9wKiBwYXJhbWV0ZXJcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgIHN0ZXBcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgICAgIFRoZSB2YWx1ZSBvZiB0aGUgKnN0ZXAqIHBhcmFtZXRlciAob3IgIjEiIGlmIHRoZSBwYXJhbWV0ZXIgJworICAgICAgICAgICAgICd3YXNcbicKKyAgICAgICAgICAgICAnICAgICAgbm90IHN1cHBsaWVkKVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGhlIGFkdmFudGFnZSBvZiB0aGUgInJhbmdlIiB0eXBlIG92ZXIgYSByZWd1bGFyICJsaXN0IiBvciAnCisgICAgICAgICAgICAgJyJ0dXBsZSIgaXNcbicKKyAgICAgICAgICAgICAndGhhdCBhICJyYW5nZSIgb2JqZWN0IHdpbGwgYWx3YXlzIHRha2UgdGhlIHNhbWUgKHNtYWxsKSBhbW91bnQgJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICdtZW1vcnksIG5vIG1hdHRlciB0aGUgc2l6ZSBvZiB0aGUgcmFuZ2UgaXQgcmVwcmVzZW50cyAoYXMgaXQgJworICAgICAgICAgICAgICdvbmx5XG4nCisgICAgICAgICAgICAgJ3N0b3JlcyB0aGUgInN0YXJ0IiwgInN0b3AiIGFuZCAic3RlcCIgdmFsdWVzLCBjYWxjdWxhdGluZyAnCisgICAgICAgICAgICAgJ2luZGl2aWR1YWxcbicKKyAgICAgICAgICAgICAnaXRlbXMgYW5kIHN1YnJhbmdlcyBhcyBuZWVkZWQpLlxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnUmFuZ2Ugb2JqZWN0cyBpbXBsZW1lbnQgdGhlICJjb2xsZWN0aW9ucy5hYmMuU2VxdWVuY2UiIEFCQywgYW5kXG4nCisgICAgICAgICAgICAgJ3Byb3ZpZGUgZmVhdHVyZXMgc3VjaCBhcyBjb250YWlubWVudCB0ZXN0cywgZWxlbWVudCBpbmRleCAnCisgICAgICAgICAgICAgJ2xvb2t1cCxcbicKKyAgICAgICAgICAgICAnc2xpY2luZyBhbmQgc3VwcG9ydCBmb3IgbmVnYXRpdmUgaW5kaWNlcyAoc2VlIFNlcXVlbmNlIFR5cGVzIC0tLSAnCisgICAgICAgICAgICAgJ2xpc3QsXG4nCisgICAgICAgICAgICAgJ3R1cGxlLCByYW5nZSk6XG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICc+Pj4gciA9IHJhbmdlKDAsIDIwLCAyKVxuJworICAgICAgICAgICAgICc+Pj4gclxuJworICAgICAgICAgICAgICdyYW5nZSgwLCAyMCwgMilcbicKKyAgICAgICAgICAgICAnPj4+IDExIGluIHJcbicKKyAgICAgICAgICAgICAnRmFsc2VcbicKKyAgICAgICAgICAgICAnPj4+IDEwIGluIHJcbicKKyAgICAgICAgICAgICAnVHJ1ZVxuJworICAgICAgICAgICAgICc+Pj4gci5pbmRleCgxMClcbicKKyAgICAgICAgICAgICAnNVxuJworICAgICAgICAgICAgICc+Pj4gcls1XVxuJworICAgICAgICAgICAgICcxMFxuJworICAgICAgICAgICAgICc+Pj4gcls6NV1cbicKKyAgICAgICAgICAgICAncmFuZ2UoMCwgMTAsIDIpXG4nCisgICAgICAgICAgICAgJz4+PiByWy0xXVxuJworICAgICAgICAgICAgICcxOFxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnVGVzdGluZyByYW5nZSBvYmplY3RzIGZvciBlcXVhbGl0eSB3aXRoICI9PSIgYW5kICIhPSIgY29tcGFyZXMgJworICAgICAgICAgICAgICd0aGVtIGFzXG4nCisgICAgICAgICAgICAgJ3NlcXVlbmNlcy4gIFRoYXQgaXMsIHR3byByYW5nZSBvYmplY3RzIGFyZSBjb25zaWRlcmVkIGVxdWFsIGlmICcKKyAgICAgICAgICAgICAndGhleVxuJworICAgICAgICAgICAgICdyZXByZXNlbnQgdGhlIHNhbWUgc2VxdWVuY2Ugb2YgdmFsdWVzLiAgKE5vdGUgdGhhdCB0d28gcmFuZ2UgJworICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgJ3RoYXQgY29tcGFyZSBlcXVhbCBtaWdodCBoYXZlIGRpZmZlcmVudCAic3RhcnQiLCAic3RvcCIgYW5kICcKKyAgICAgICAgICAgICAnInN0ZXAiXG4nCisgICAgICAgICAgICAgJ2F0dHJpYnV0ZXMsIGZvciBleGFtcGxlICJyYW5nZSgwKSA9PSByYW5nZSgyLCAxLCAzKSIgb3IgJworICAgICAgICAgICAgICcicmFuZ2UoMCwgMyxcbicKKyAgICAgICAgICAgICAnMikgPT0gcmFuZ2UoMCwgNCwgMikiLilcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ0NoYW5nZWQgaW4gdmVyc2lvbiAzLjI6IEltcGxlbWVudCB0aGUgU2VxdWVuY2UgQUJDLiBTdXBwb3J0ICcKKyAgICAgICAgICAgICAnc2xpY2luZ1xuJworICAgICAgICAgICAgICdhbmQgbmVnYXRpdmUgaW5kaWNlcy4gVGVzdCAiaW50IiBvYmplY3RzIGZvciBtZW1iZXJzaGlwIGluICcKKyAgICAgICAgICAgICAnY29uc3RhbnRcbicKKyAgICAgICAgICAgICAndGltZSBpbnN0ZWFkIG9mIGl0ZXJhdGluZyB0aHJvdWdoIGFsbCBpdGVtcy5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgIkNoYW5nZWQgaW4gdmVyc2lvbiAzLjM6IERlZmluZSAnPT0nIGFuZCAnIT0nIHRvIGNvbXBhcmUgcmFuZ2UgIgorICAgICAgICAgICAgICdvYmplY3RzXG4nCisgICAgICAgICAgICAgJ2Jhc2VkIG9uIHRoZSBzZXF1ZW5jZSBvZiB2YWx1ZXMgdGhleSBkZWZpbmUgKGluc3RlYWQgb2YgJworICAgICAgICAgICAgICdjb21wYXJpbmdcbicKKyAgICAgICAgICAgICAnYmFzZWQgb24gb2JqZWN0IGlkZW50aXR5KS5cbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJ05ldyBpbiB2ZXJzaW9uIDMuMzogVGhlICJzdGFydCIsICJzdG9wIiBhbmQgInN0ZXAiIGF0dHJpYnV0ZXMuXG4nCisgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICdTZWUgYWxzbzpcbicKKyAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgJyAgKiBUaGUgbGluc3BhY2UgcmVjaXBlIHNob3dzIGhvdyB0byBpbXBsZW1lbnQgYSBsYXp5IHZlcnNpb24gJworICAgICAgICAgICAgICdvZlxuJworICAgICAgICAgICAgICcgICAgcmFuZ2UgdGhhdCBzdWl0YWJsZSBmb3IgZmxvYXRpbmcgcG9pbnQgYXBwbGljYXRpb25zLlxuJywKKyAndHlwZXNzZXEtbXV0YWJsZSc6ICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdNdXRhYmxlIFNlcXVlbmNlIFR5cGVzXG4nCisgICAgICAgICAgICAgICAgICAgICAnKioqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJ1RoZSBvcGVyYXRpb25zIGluIHRoZSBmb2xsb3dpbmcgdGFibGUgYXJlIGRlZmluZWQgb24gJworICAgICAgICAgICAgICAgICAgICAgJ211dGFibGUgc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlcy4gVGhlICJjb2xsZWN0aW9ucy5hYmMuTXV0YWJsZVNlcXVlbmNlIiBBQkMgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3Byb3ZpZGVkIHRvIG1ha2VcbicKKyAgICAgICAgICAgICAgICAgICAgICdpdCBlYXNpZXIgdG8gY29ycmVjdGx5IGltcGxlbWVudCB0aGVzZSBvcGVyYXRpb25zIG9uICcKKyAgICAgICAgICAgICAgICAgICAgICdjdXN0b20gc2VxdWVuY2VcbicKKyAgICAgICAgICAgICAgICAgICAgICd0eXBlcy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdJbiB0aGUgdGFibGUgKnMqIGlzIGFuIGluc3RhbmNlIG9mIGEgbXV0YWJsZSBzZXF1ZW5jZSAnCisgICAgICAgICAgICAgICAgICAgICAndHlwZSwgKnQqIGlzIGFueVxuJworICAgICAgICAgICAgICAgICAgICAgJ2l0ZXJhYmxlIG9iamVjdCBhbmQgKngqIGlzIGFuIGFyYml0cmFyeSBvYmplY3QgdGhhdCAnCisgICAgICAgICAgICAgICAgICAgICAnbWVldHMgYW55IHR5cGUgYW5kXG4nCisgICAgICAgICAgICAgICAgICAgICAndmFsdWUgcmVzdHJpY3Rpb25zIGltcG9zZWQgYnkgKnMqIChmb3IgZXhhbXBsZSwgJworICAgICAgICAgICAgICAgICAgICAgJyJieXRlYXJyYXkiIG9ubHlcbicKKyAgICAgICAgICAgICAgICAgICAgICdhY2NlcHRzIGludGVnZXJzIHRoYXQgbWVldCB0aGUgdmFsdWUgcmVzdHJpY3Rpb24gIjAgPD0geCAnCisgICAgICAgICAgICAgICAgICAgICAnPD0gMjU1IikuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCBPcGVyYXRpb24gICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnUmVzdWx0ICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBOb3RlcyAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICAgICcrPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0rPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSs9PT09PT09PT09PT09PT09PT09PT09PStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2ldID0geCIgICAgICAgICAgICAgICAgICAgICB8IGl0ZW0gKmkqIG9mICpzKiBpcyAnCisgICAgICAgICAgICAgICAgICAgICAncmVwbGFjZWQgYnkgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAnKngqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzW2k6al0gPSB0IiAgICAgICAgICAgICAgICAgICB8IHNsaWNlIG9mICpzKiBmcm9tICppKiAnCisgICAgICAgICAgICAgICAgICAgICAndG8gKmoqIGlzICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBsYWNlZCBieSB0aGUgJworICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnRzIG9mIHRoZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgaXRlcmFibGUgJworICAgICAgICAgICAgICAgICAgICAgJyp0KiAgICAgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJkZWwgc1tpOmpdIiAgICAgICAgICAgICAgICAgICB8IHNhbWUgYXMgInNbaTpqXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbXSIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAic1tpOmo6a10gPSB0IiAgICAgICAgICAgICAgICAgfCB0aGUgZWxlbWVudHMgb2YgJworICAgICAgICAgICAgICAgICAgICAgJyJzW2k6ajprXSIgYXJlICAgfCAoMSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgcmVwbGFjZWQgYnkgdGhvc2Ugb2YgJworICAgICAgICAgICAgICAgICAgICAgJyp0KiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJkZWwgc1tpOmo6a10iICAgICAgICAgICAgICAgICB8IHJlbW92ZXMgdGhlIGVsZW1lbnRzICcKKyAgICAgICAgICAgICAgICAgICAgICdvZiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmo6a10iIGZyb20gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdsaXN0ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuYXBwZW5kKHgpIiAgICAgICAgICAgICAgICAgIHwgYXBwZW5kcyAqeCogdG8gdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdlbmQgb2YgdGhlICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlcXVlbmNlIChzYW1lICcKKyAgICAgICAgICAgICAgICAgICAgICdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tsZW4ocyk6bGVuKHMpXSA9ICcKKyAgICAgICAgICAgICAgICAgICAgICdbeF0iKSAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuY2xlYXIoKSIgICAgICAgICAgICAgICAgICAgIHwgcmVtb3ZlcyBhbGwgaXRlbXMgJworICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gInMiIChzYW1lIHwgKDUpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFzICJkZWwgJworICAgICAgICAgICAgICAgICAgICAgJ3NbOl0iKSAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5jb3B5KCkiICAgICAgICAgICAgICAgICAgICAgfCBjcmVhdGVzIGEgc2hhbGxvdyAnCisgICAgICAgICAgICAgICAgICAgICAnY29weSBvZiAicyIgICAgfCAoNSkgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgKHNhbWUgYXMgJworICAgICAgICAgICAgICAgICAgICAgJyJzWzpdIikgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLmV4dGVuZCh0KSIgb3IgInMgKz0gdCIgICAgICB8IGV4dGVuZHMgKnMqIHdpdGggdGhlICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyBvZiB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAqdCogKGZvciB0aGUgbW9zdCAnCisgICAgICAgICAgICAgICAgICAgICAncGFydCB0aGUgc2FtZSAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgYXMgInNbbGVuKHMpOmxlbihzKV0gJworICAgICAgICAgICAgICAgICAgICAgJz0gdCIpICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzICo9IG4iICAgICAgICAgICAgICAgICAgICAgICB8IHVwZGF0ZXMgKnMqIHdpdGggaXRzICcKKyAgICAgICAgICAgICAgICAgICAgICdjb250ZW50cyAgICB8ICg2KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCByZXBlYXRlZCAqbiogJworICAgICAgICAgICAgICAgICAgICAgJ3RpbWVzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMuaW5zZXJ0KGksIHgpIiAgICAgICAgICAgICAgIHwgaW5zZXJ0cyAqeCogaW50byAqcyogJworICAgICAgICAgICAgICAgICAgICAgJ2F0IHRoZSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGluZGV4IGdpdmVuIGJ5ICppKiAnCisgICAgICAgICAgICAgICAgICAgICAnKHNhbWUgYXMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAic1tpOmldID0gJworICAgICAgICAgICAgICAgICAgICAgJ1t4XSIpICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tK1xuJworICAgICAgICAgICAgICAgICAgICAgJ3wgInMucG9wKFtpXSkiICAgICAgICAgICAgICAgICAgIHwgcmV0cmlldmVzIHRoZSBpdGVtIGF0ICcKKyAgICAgICAgICAgICAgICAgICAgICcqaSogYW5kICAgIHwgKDIpICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IGFsc28gcmVtb3ZlcyBpdCBmcm9tICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyogICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rXG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAicy5yZW1vdmUoeCkiICAgICAgICAgICAgICAgICAgfCByZW1vdmUgdGhlIGZpcnN0IGl0ZW0gJworICAgICAgICAgICAgICAgICAgICAgJ2Zyb20gKnMqICAgfCAoMykgICAgICAgICAgICAgICAgICAgfFxuJworICAgICAgICAgICAgICAgICAgICAgJ3wgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgd2hlcmUgInNbaV0gPT0gJworICAgICAgICAgICAgICAgICAgICAgJ3giICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgIHxcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICd8ICJzLnJldmVyc2UoKSIgICAgICAgICAgICAgICAgICB8IHJldmVyc2VzIHRoZSBpdGVtcyBvZiAnCisgICAgICAgICAgICAgICAgICAgICAnKnMqIGluICAgICB8ICg0KSAgICAgICAgICAgICAgICAgICB8XG4nCisgICAgICAgICAgICAgICAgICAgICAnfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAnCisgICAgICAgICAgICAgICAgICAgICAncGxhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgJworICAgICAgICAgICAgICAgICAgICAgJ3xcbicKKyAgICAgICAgICAgICAgICAgICAgICcrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLStcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICdOb3RlczpcbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcxLiAqdCogbXVzdCBoYXZlIHRoZSBzYW1lIGxlbmd0aCBhcyB0aGUgc2xpY2UgaXQgaXMgJworICAgICAgICAgICAgICAgICAgICAgJ3JlcGxhY2luZy5cbicKKyAgICAgICAgICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAgICAgICAgICcyLiBUaGUgb3B0aW9uYWwgYXJndW1lbnQgKmkqIGRlZmF1bHRzIHRvICItMSIsIHNvIHRoYXQgJworICAgICAgICAgICAgICAgICAgICAgJ2J5IGRlZmF1bHRcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGUgbGFzdCBpdGVtIGlzIHJlbW92ZWQgYW5kIHJldHVybmVkLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzMuICJyZW1vdmUiIHJhaXNlcyAiVmFsdWVFcnJvciIgd2hlbiAqeCogaXMgbm90IGZvdW5kIGluICcKKyAgICAgICAgICAgICAgICAgICAgICcqcyouXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNC4gVGhlICJyZXZlcnNlKCkiIG1ldGhvZCBtb2RpZmllcyB0aGUgc2VxdWVuY2UgaW4gcGxhY2UgJworICAgICAgICAgICAgICAgICAgICAgJ2ZvclxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIGVjb25vbXkgb2Ygc3BhY2Ugd2hlbiByZXZlcnNpbmcgYSBsYXJnZSBzZXF1ZW5jZS4gIFRvICcKKyAgICAgICAgICAgICAgICAgICAgICdyZW1pbmQgdXNlcnNcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICB0aGF0IGl0IG9wZXJhdGVzIGJ5IHNpZGUgZWZmZWN0LCBpdCBkb2VzIG5vdCByZXR1cm4gJworICAgICAgICAgICAgICAgICAgICAgJ3RoZSByZXZlcnNlZFxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHNlcXVlbmNlLlxuJworICAgICAgICAgICAgICAgICAgICAgJ1xuJworICAgICAgICAgICAgICAgICAgICAgJzUuICJjbGVhcigpIiBhbmQgImNvcHkoKSIgYXJlIGluY2x1ZGVkIGZvciBjb25zaXN0ZW5jeSAnCisgICAgICAgICAgICAgICAgICAgICAnd2l0aCB0aGVcbicKKyAgICAgICAgICAgICAgICAgICAgICIgICBpbnRlcmZhY2VzIG9mIG11dGFibGUgY29udGFpbmVycyB0aGF0IGRvbid0IHN1cHBvcnQgIgorICAgICAgICAgICAgICAgICAgICAgJ3NsaWNpbmdcbicKKyAgICAgICAgICAgICAgICAgICAgICcgICBvcGVyYXRpb25zIChzdWNoIGFzICJkaWN0IiBhbmQgInNldCIpXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgTmV3IGluIHZlcnNpb24gMy4zOiAiY2xlYXIoKSIgYW5kICJjb3B5KCkiIG1ldGhvZHMuXG4nCisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgICAgICAnNi4gVGhlIHZhbHVlICpuKiBpcyBhbiBpbnRlZ2VyLCBvciBhbiBvYmplY3QgJworICAgICAgICAgICAgICAgICAgICAgJ2ltcGxlbWVudGluZ1xuJworICAgICAgICAgICAgICAgICAgICAgJyAgICJfX2luZGV4X18oKSIuICBaZXJvIGFuZCBuZWdhdGl2ZSB2YWx1ZXMgb2YgKm4qIGNsZWFyICcKKyAgICAgICAgICAgICAgICAgICAgICd0aGUgc2VxdWVuY2UuXG4nCisgICAgICAgICAgICAgICAgICAgICAnICAgSXRlbXMgaW4gdGhlIHNlcXVlbmNlIGFyZSBub3QgY29waWVkOyB0aGV5IGFyZSAnCisgICAgICAgICAgICAgICAgICAgICAncmVmZXJlbmNlZCBtdWx0aXBsZVxuJworICAgICAgICAgICAgICAgICAgICAgJyAgIHRpbWVzLCBhcyBleHBsYWluZWQgZm9yICJzICogbiIgdW5kZXIgQ29tbW9uIFNlcXVlbmNlICcKKyAgICAgICAgICAgICAgICAgICAgICdPcGVyYXRpb25zLlxuJywKKyAndW5hcnknOiAnXG4nCisgICAgICAgICAgJ1VuYXJ5IGFyaXRobWV0aWMgYW5kIGJpdHdpc2Ugb3BlcmF0aW9uc1xuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0FsbCB1bmFyeSBhcml0aG1ldGljIGFuZCBiaXR3aXNlIG9wZXJhdGlvbnMgaGF2ZSB0aGUgc2FtZSAnCisgICAgICAgICAgJ3ByaW9yaXR5OlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgdV9leHByIDo6PSBwb3dlciB8ICItIiB1X2V4cHIgfCAiKyIgdV9leHByIHwgIn4iIHVfZXhwclxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhlIHVuYXJ5ICItIiAobWludXMpIG9wZXJhdG9yIHlpZWxkcyB0aGUgbmVnYXRpb24gb2YgaXRzIG51bWVyaWNcbicKKyAgICAgICAgICAnYXJndW1lbnQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIisiIChwbHVzKSBvcGVyYXRvciB5aWVsZHMgaXRzIG51bWVyaWMgYXJndW1lbnQgJworICAgICAgICAgICd1bmNoYW5nZWQuXG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICdUaGUgdW5hcnkgIn4iIChpbnZlcnQpIG9wZXJhdG9yIHlpZWxkcyB0aGUgYml0d2lzZSBpbnZlcnNpb24gb2YgJworICAgICAgICAgICdpdHNcbicKKyAgICAgICAgICAnaW50ZWdlciBhcmd1bWVudC4gIFRoZSBiaXR3aXNlIGludmVyc2lvbiBvZiAieCIgaXMgZGVmaW5lZCBhc1xuJworICAgICAgICAgICciLSh4KzEpIi4gIEl0IG9ubHkgYXBwbGllcyB0byBpbnRlZ3JhbCBudW1iZXJzLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnSW4gYWxsIHRocmVlIGNhc2VzLCBpZiB0aGUgYXJndW1lbnQgZG9lcyBub3QgaGF2ZSB0aGUgcHJvcGVyIHR5cGUsICcKKyAgICAgICAgICAnYVxuJworICAgICAgICAgICciVHlwZUVycm9yIiBleGNlcHRpb24gaXMgcmFpc2VkLlxuJywKKyAnd2hpbGUnOiAnXG4nCisgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudFxuJworICAgICAgICAgICcqKioqKioqKioqKioqKioqKioqKipcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ1RoZSAid2hpbGUiIHN0YXRlbWVudCBpcyB1c2VkIGZvciByZXBlYXRlZCBleGVjdXRpb24gYXMgbG9uZyBhcyBhblxuJworICAgICAgICAgICdleHByZXNzaW9uIGlzIHRydWU6XG4nCisgICAgICAgICAgJ1xuJworICAgICAgICAgICcgICB3aGlsZV9zdG10IDo6PSAid2hpbGUiIGV4cHJlc3Npb24gIjoiIHN1aXRlXG4nCisgICAgICAgICAgJyAgICAgICAgICAgICAgICAgIFsiZWxzZSIgIjoiIHN1aXRlXVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnVGhpcyByZXBlYXRlZGx5IHRlc3RzIHRoZSBleHByZXNzaW9uIGFuZCwgaWYgaXQgaXMgdHJ1ZSwgZXhlY3V0ZXMgJworICAgICAgICAgICd0aGVcbicKKyAgICAgICAgICAnZmlyc3Qgc3VpdGU7IGlmIHRoZSBleHByZXNzaW9uIGlzIGZhbHNlICh3aGljaCBtYXkgYmUgdGhlIGZpcnN0ICcKKyAgICAgICAgICAndGltZVxuJworICAgICAgICAgICdpdCBpcyB0ZXN0ZWQpIHRoZSBzdWl0ZSBvZiB0aGUgImVsc2UiIGNsYXVzZSwgaWYgcHJlc2VudCwgaXMgJworICAgICAgICAgICdleGVjdXRlZFxuJworICAgICAgICAgICdhbmQgdGhlIGxvb3AgdGVybWluYXRlcy5cbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJ0EgImJyZWFrIiBzdGF0ZW1lbnQgZXhlY3V0ZWQgaW4gdGhlIGZpcnN0IHN1aXRlIHRlcm1pbmF0ZXMgdGhlICcKKyAgICAgICAgICAnbG9vcFxuJworICAgICAgICAgICd3aXRob3V0IGV4ZWN1dGluZyB0aGUgImVsc2UiIGNsYXVzZVwncyBzdWl0ZS4gIEEgImNvbnRpbnVlIiAnCisgICAgICAgICAgJ3N0YXRlbWVudFxuJworICAgICAgICAgICdleGVjdXRlZCBpbiB0aGUgZmlyc3Qgc3VpdGUgc2tpcHMgdGhlIHJlc3Qgb2YgdGhlIHN1aXRlIGFuZCBnb2VzICcKKyAgICAgICAgICAnYmFja1xuJworICAgICAgICAgICd0byB0ZXN0aW5nIHRoZSBleHByZXNzaW9uLlxuJywKKyAnd2l0aCc6ICdcbicKKyAgICAgICAgICdUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnVGhlICJ3aXRoIiBzdGF0ZW1lbnQgaXMgdXNlZCB0byB3cmFwIHRoZSBleGVjdXRpb24gb2YgYSBibG9jayB3aXRoXG4nCisgICAgICAgICAnbWV0aG9kcyBkZWZpbmVkIGJ5IGEgY29udGV4dCBtYW5hZ2VyIChzZWUgc2VjdGlvbiBXaXRoIFN0YXRlbWVudFxuJworICAgICAgICAgJ0NvbnRleHQgTWFuYWdlcnMpLiBUaGlzIGFsbG93cyBjb21tb24gInRyeSIuLi4iZXhjZXB0Ii4uLiJmaW5hbGx5IlxuJworICAgICAgICAgJ3VzYWdlIHBhdHRlcm5zIHRvIGJlIGVuY2Fwc3VsYXRlZCBmb3IgY29udmVuaWVudCByZXVzZS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoX3N0bXQgOjo9ICJ3aXRoIiB3aXRoX2l0ZW0gKCIsIiB3aXRoX2l0ZW0pKiAiOiIgc3VpdGVcbicKKyAgICAgICAgICcgICB3aXRoX2l0ZW0gOjo9IGV4cHJlc3Npb24gWyJhcyIgdGFyZ2V0XVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1RoZSBleGVjdXRpb24gb2YgdGhlICJ3aXRoIiBzdGF0ZW1lbnQgd2l0aCBvbmUgIml0ZW0iIHByb2NlZWRzIGFzXG4nCisgICAgICAgICAnZm9sbG93czpcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcxLiBUaGUgY29udGV4dCBleHByZXNzaW9uICh0aGUgZXhwcmVzc2lvbiBnaXZlbiBpbiB0aGUgIndpdGhfaXRlbSIpXG4nCisgICAgICAgICAnICAgaXMgZXZhbHVhdGVkIHRvIG9idGFpbiBhIGNvbnRleHQgbWFuYWdlci5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcyLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2V4aXRfXygpIiBpcyBsb2FkZWQgZm9yIGxhdGVyIHVzZS5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICczLiBUaGUgY29udGV4dCBtYW5hZ2VyXCdzICJfX2VudGVyX18oKSIgbWV0aG9kIGlzIGludm9rZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNC4gSWYgYSB0YXJnZXQgd2FzIGluY2x1ZGVkIGluIHRoZSAid2l0aCIgc3RhdGVtZW50LCB0aGUgcmV0dXJuXG4nCisgICAgICAgICAnICAgdmFsdWUgZnJvbSAiX19lbnRlcl9fKCkiIGlzIGFzc2lnbmVkIHRvIGl0LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIE5vdGU6IFRoZSAid2l0aCIgc3RhdGVtZW50IGd1YXJhbnRlZXMgdGhhdCBpZiB0aGUgIl9fZW50ZXJfXygpIlxuJworICAgICAgICAgJyAgICAgbWV0aG9kIHJldHVybnMgd2l0aG91dCBhbiBlcnJvciwgdGhlbiAiX19leGl0X18oKSIgd2lsbCBhbHdheXMgJworICAgICAgICAgJ2JlXG4nCisgICAgICAgICAnICAgICBjYWxsZWQuIFRodXMsIGlmIGFuIGVycm9yIG9jY3VycyBkdXJpbmcgdGhlIGFzc2lnbm1lbnQgdG8gdGhlXG4nCisgICAgICAgICAnICAgICB0YXJnZXQgbGlzdCwgaXQgd2lsbCBiZSB0cmVhdGVkIHRoZSBzYW1lIGFzIGFuIGVycm9yIG9jY3VycmluZ1xuJworICAgICAgICAgJyAgICAgd2l0aGluIHRoZSBzdWl0ZSB3b3VsZCBiZS4gU2VlIHN0ZXAgNiBiZWxvdy5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICc1LiBUaGUgc3VpdGUgaXMgZXhlY3V0ZWQuXG4nCisgICAgICAgICAnXG4nCisgICAgICAgICAnNi4gVGhlIGNvbnRleHQgbWFuYWdlclwncyAiX19leGl0X18oKSIgbWV0aG9kIGlzIGludm9rZWQuICBJZiBhblxuJworICAgICAgICAgJyAgIGV4Y2VwdGlvbiBjYXVzZWQgdGhlIHN1aXRlIHRvIGJlIGV4aXRlZCwgaXRzIHR5cGUsIHZhbHVlLCBhbmRcbicKKyAgICAgICAgICcgICB0cmFjZWJhY2sgYXJlIHBhc3NlZCBhcyBhcmd1bWVudHMgdG8gIl9fZXhpdF9fKCkiLiBPdGhlcndpc2UsICcKKyAgICAgICAgICd0aHJlZVxuJworICAgICAgICAgJyAgICJOb25lIiBhcmd1bWVudHMgYXJlIHN1cHBsaWVkLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGR1ZSB0byBhbiBleGNlcHRpb24sIGFuZCB0aGUgcmV0dXJuICcKKyAgICAgICAgICd2YWx1ZVxuJworICAgICAgICAgJyAgIGZyb20gdGhlICJfX2V4aXRfXygpIiBtZXRob2Qgd2FzIGZhbHNlLCB0aGUgZXhjZXB0aW9uIGlzICcKKyAgICAgICAgICdyZXJhaXNlZC5cbicKKyAgICAgICAgICcgICBJZiB0aGUgcmV0dXJuIHZhbHVlIHdhcyB0cnVlLCB0aGUgZXhjZXB0aW9uIGlzIHN1cHByZXNzZWQsIGFuZFxuJworICAgICAgICAgJyAgIGV4ZWN1dGlvbiBjb250aW51ZXMgd2l0aCB0aGUgc3RhdGVtZW50IGZvbGxvd2luZyB0aGUgIndpdGgiXG4nCisgICAgICAgICAnICAgc3RhdGVtZW50LlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIElmIHRoZSBzdWl0ZSB3YXMgZXhpdGVkIGZvciBhbnkgcmVhc29uIG90aGVyIHRoYW4gYW4gZXhjZXB0aW9uLCAnCisgICAgICAgICAndGhlXG4nCisgICAgICAgICAnICAgcmV0dXJuIHZhbHVlIGZyb20gIl9fZXhpdF9fKCkiIGlzIGlnbm9yZWQsIGFuZCBleGVjdXRpb24gJworICAgICAgICAgJ3Byb2NlZWRzXG4nCisgICAgICAgICAnICAgYXQgdGhlIG5vcm1hbCBsb2NhdGlvbiBmb3IgdGhlIGtpbmQgb2YgZXhpdCB0aGF0IHdhcyB0YWtlbi5cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdXaXRoIG1vcmUgdGhhbiBvbmUgaXRlbSwgdGhlIGNvbnRleHQgbWFuYWdlcnMgYXJlIHByb2Nlc3NlZCBhcyBpZlxuJworICAgICAgICAgJ211bHRpcGxlICJ3aXRoIiBzdGF0ZW1lbnRzIHdlcmUgbmVzdGVkOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgIHdpdGggQSgpIGFzIGEsIEIoKSBhcyBiOlxuJworICAgICAgICAgJyAgICAgICBzdWl0ZVxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ2lzIGVxdWl2YWxlbnQgdG9cbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICcgICB3aXRoIEEoKSBhcyBhOlxuJworICAgICAgICAgJyAgICAgICB3aXRoIEIoKSBhcyBiOlxuJworICAgICAgICAgJyAgICAgICAgICAgc3VpdGVcbicKKyAgICAgICAgICdcbicKKyAgICAgICAgICdDaGFuZ2VkIGluIHZlcnNpb24gMy4xOiBTdXBwb3J0IGZvciBtdWx0aXBsZSBjb250ZXh0IGV4cHJlc3Npb25zLlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJ1NlZSBhbHNvOlxuJworICAgICAgICAgJ1xuJworICAgICAgICAgJyAgKipQRVAgMzQzKiogLSBUaGUgIndpdGgiIHN0YXRlbWVudFxuJworICAgICAgICAgJyAgICAgVGhlIHNwZWNpZmljYXRpb24sIGJhY2tncm91bmQsIGFuZCBleGFtcGxlcyBmb3IgdGhlIFB5dGhvbiAnCisgICAgICAgICAnIndpdGgiXG4nCisgICAgICAgICAnICAgICBzdGF0ZW1lbnQuXG4nLAorICd5aWVsZCc6ICdcbicKKyAgICAgICAgICAnVGhlICJ5aWVsZCIgc3RhdGVtZW50XG4nCisgICAgICAgICAgJyoqKioqKioqKioqKioqKioqKioqKlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgeWllbGRfc3RtdCA6Oj0geWllbGRfZXhwcmVzc2lvblxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnQSAieWllbGQiIHN0YXRlbWVudCBpcyBzZW1hbnRpY2FsbHkgZXF1aXZhbGVudCB0byBhIHlpZWxkICcKKyAgICAgICAgICAnZXhwcmVzc2lvbi5cbicKKyAgICAgICAgICAnVGhlIHlpZWxkIHN0YXRlbWVudCBjYW4gYmUgdXNlZCB0byBvbWl0IHRoZSBwYXJlbnRoZXNlcyB0aGF0IHdvdWxkXG4nCisgICAgICAgICAgJ290aGVyd2lzZSBiZSByZXF1aXJlZCBpbiB0aGUgZXF1aXZhbGVudCB5aWVsZCBleHByZXNzaW9uICcKKyAgICAgICAgICAnc3RhdGVtZW50LlxuJworICAgICAgICAgICdGb3IgZXhhbXBsZSwgdGhlIHlpZWxkIHN0YXRlbWVudHNcbicKKyAgICAgICAgICAnXG4nCisgICAgICAgICAgJyAgIHlpZWxkIDxleHByPlxuJworICAgICAgICAgICcgICB5aWVsZCBmcm9tIDxleHByPlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnYXJlIGVxdWl2YWxlbnQgdG8gdGhlIHlpZWxkIGV4cHJlc3Npb24gc3RhdGVtZW50c1xuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnICAgKHlpZWxkIDxleHByPilcbicKKyAgICAgICAgICAnICAgKHlpZWxkIGZyb20gPGV4cHI+KVxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnWWllbGQgZXhwcmVzc2lvbnMgYW5kIHN0YXRlbWVudHMgYXJlIG9ubHkgdXNlZCB3aGVuIGRlZmluaW5nIGFcbicKKyAgICAgICAgICAnKmdlbmVyYXRvciogZnVuY3Rpb24sIGFuZCBhcmUgb25seSB1c2VkIGluIHRoZSBib2R5IG9mIHRoZSAnCisgICAgICAgICAgJ2dlbmVyYXRvclxuJworICAgICAgICAgICdmdW5jdGlvbi4gIFVzaW5nIHlpZWxkIGluIGEgZnVuY3Rpb24gZGVmaW5pdGlvbiBpcyBzdWZmaWNpZW50IHRvICcKKyAgICAgICAgICAnY2F1c2VcbicKKyAgICAgICAgICAndGhhdCBkZWZpbml0aW9uIHRvIGNyZWF0ZSBhIGdlbmVyYXRvciBmdW5jdGlvbiBpbnN0ZWFkIG9mIGEgbm9ybWFsXG4nCisgICAgICAgICAgJ2Z1bmN0aW9uLlxuJworICAgICAgICAgICdcbicKKyAgICAgICAgICAnRm9yIGZ1bGwgZGV0YWlscyBvZiAieWllbGQiIHNlbWFudGljcywgcmVmZXIgdG8gdGhlIFlpZWxkICcKKyAgICAgICAgICAnZXhwcmVzc2lvbnNcbicKKyAgICAgICAgICAnc2VjdGlvbi5cbid9CmRpZmYgLS1naXQgYS9MaWIvcmFuZG9tLnB5IGIvTGliL3JhbmRvbS5weQppbmRleCA0ZWZiYjBhLi5lZjhjYjA1IDEwMDY0NAotLS0gYS9MaWIvcmFuZG9tLnB5CisrKyBiL0xpYi9yYW5kb20ucHkKQEAgLTgsNiArOCw3IEBACiAgICAgLS0tLS0tLS0tCiAgICAgICAgICAgIHBpY2sgcmFuZG9tIGVsZW1lbnQKICAgICAgICAgICAgcGljayByYW5kb20gc2FtcGxlCisgICAgICAgICAgIHBpY2sgd2VpZ2h0ZWQgcmFuZG9tIHNhbXBsZQogICAgICAgICAgICBnZW5lcmF0ZSByYW5kb20gcGVybXV0YXRpb24KIAogICAgIGRpc3RyaWJ1dGlvbnMgb24gdGhlIHJlYWwgbGluZToKQEAgLTQzLDEyICs0NCwxNCBAQAogZnJvbSBvcyBpbXBvcnQgdXJhbmRvbSBhcyBfdXJhbmRvbQogZnJvbSBfY29sbGVjdGlvbnNfYWJjIGltcG9ydCBTZXQgYXMgX1NldCwgU2VxdWVuY2UgYXMgX1NlcXVlbmNlCiBmcm9tIGhhc2hsaWIgaW1wb3J0IHNoYTUxMiBhcyBfc2hhNTEyCitpbXBvcnQgaXRlcnRvb2xzIGFzIF9pdGVydG9vbHMKK2ltcG9ydCBiaXNlY3QgYXMgX2Jpc2VjdAogCiBfX2FsbF9fID0gWyJSYW5kb20iLCJzZWVkIiwicmFuZG9tIiwidW5pZm9ybSIsInJhbmRpbnQiLCJjaG9pY2UiLCJzYW1wbGUiLAogICAgICAgICAgICAicmFuZHJhbmdlIiwic2h1ZmZsZSIsIm5vcm1hbHZhcmlhdGUiLCJsb2dub3JtdmFyaWF0ZSIsCiAgICAgICAgICAgICJleHBvdmFyaWF0ZSIsInZvbm1pc2VzdmFyaWF0ZSIsImdhbW1hdmFyaWF0ZSIsInRyaWFuZ3VsYXIiLAogICAgICAgICAgICAiZ2F1c3MiLCJiZXRhdmFyaWF0ZSIsInBhcmV0b3ZhcmlhdGUiLCJ3ZWlidWxsdmFyaWF0ZSIsCi0gICAgICAgICAgICJnZXRzdGF0ZSIsInNldHN0YXRlIiwgImdldHJhbmRiaXRzIiwKKyAgICAgICAgICAgImdldHN0YXRlIiwic2V0c3RhdGUiLCAiZ2V0cmFuZGJpdHMiLCAiY2hvaWNlcyIsCiAgICAgICAgICAgICJTeXN0ZW1SYW5kb20iXQogCiBOVl9NQUdJQ0NPTlNUID0gNCAqIF9leHAoLTAuNSkvX3NxcnQoMi4wKQpAQCAtMTA1LDE1ICsxMDgsNiBAQAogCiAgICAgICAgICIiIgogCi0gICAgICAgIGlmIGEgaXMgTm9uZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAjIFNlZWQgd2l0aCBlbm91Z2ggYnl0ZXMgdG8gc3BhbiB0aGUgMTk5MzcgYml0Ci0gICAgICAgICAgICAgICAgIyBzdGF0ZSBzcGFjZSBmb3IgdGhlIE1lcnNlbm5lIFR3aXN0ZXIKLSAgICAgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoX3VyYW5kb20oMjUwMCksICdiaWcnKQotICAgICAgICAgICAgZXhjZXB0IE5vdEltcGxlbWVudGVkRXJyb3I6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IHRpbWUKLSAgICAgICAgICAgICAgICBhID0gaW50KHRpbWUudGltZSgpICogMjU2KSAjIHVzZSBmcmFjdGlvbmFsIHNlY29uZHMKLQogICAgICAgICBpZiB2ZXJzaW9uID09IDEgYW5kIGlzaW5zdGFuY2UoYSwgKHN0ciwgYnl0ZXMpKToKICAgICAgICAgICAgIHggPSBvcmQoYVswXSkgPDwgNyBpZiBhIGVsc2UgMAogICAgICAgICAgICAgZm9yIGMgaW4gYToKQEAgLTEyMSwxMiArMTE1LDExIEBACiAgICAgICAgICAgICB4IF49IGxlbihhKQogICAgICAgICAgICAgYSA9IC0yIGlmIHggPT0gLTEgZWxzZSB4CiAKLSAgICAgICAgaWYgdmVyc2lvbiA9PSAyOgotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCAoc3RyLCBieXRlcywgYnl0ZWFycmF5KSk6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShhLCBzdHIpOgotICAgICAgICAgICAgICAgICAgICBhID0gYS5lbmNvZGUoKQotICAgICAgICAgICAgICAgIGEgKz0gX3NoYTUxMihhKS5kaWdlc3QoKQotICAgICAgICAgICAgICAgIGEgPSBpbnQuZnJvbV9ieXRlcyhhLCAnYmlnJykKKyAgICAgICAgaWYgdmVyc2lvbiA9PSAyIGFuZCBpc2luc3RhbmNlKGEsIChzdHIsIGJ5dGVzLCBieXRlYXJyYXkpKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYSwgc3RyKToKKyAgICAgICAgICAgICAgICBhID0gYS5lbmNvZGUoKQorICAgICAgICAgICAgYSArPSBfc2hhNTEyKGEpLmRpZ2VzdCgpCisgICAgICAgICAgICBhID0gaW50LmZyb21fYnl0ZXMoYSwgJ2JpZycpCiAKICAgICAgICAgc3VwZXIoKS5zZWVkKGEpCiAgICAgICAgIHNlbGYuZ2F1c3NfbmV4dCA9IE5vbmUKQEAgLTM0NCw2ICszMzcsMjggQEAKICAgICAgICAgICAgICAgICByZXN1bHRbaV0gPSBwb3B1bGF0aW9uW2pdCiAgICAgICAgIHJldHVybiByZXN1bHQKIAorICAgIGRlZiBjaG9pY2VzKHNlbGYsIHBvcHVsYXRpb24sIHdlaWdodHM9Tm9uZSwgKiwgY3VtX3dlaWdodHM9Tm9uZSwgaz0xKToKKyAgICAgICAgIiIiUmV0dXJuIGEgayBzaXplZCBsaXN0IG9mIHBvcHVsYXRpb24gZWxlbWVudHMgY2hvc2VuIHdpdGggcmVwbGFjZW1lbnQuCisKKyAgICAgICAgSWYgdGhlIHJlbGF0aXZlIHdlaWdodHMgb3IgY3VtdWxhdGl2ZSB3ZWlnaHRzIGFyZSBub3Qgc3BlY2lmaWVkLAorICAgICAgICB0aGUgc2VsZWN0aW9ucyBhcmUgbWFkZSB3aXRoIGVxdWFsIHByb2JhYmlsaXR5LgorCisgICAgICAgICIiIgorICAgICAgICBpZiBjdW1fd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgaWYgd2VpZ2h0cyBpcyBOb25lOgorICAgICAgICAgICAgICAgIGNob2ljZSA9IHNlbGYuY2hvaWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIFtjaG9pY2UocG9wdWxhdGlvbikgZm9yIGkgaW4gcmFuZ2UoayldCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGN1bV93ZWlnaHRzID0gbGlzdChfaXRlcnRvb2xzLmFjY3VtdWxhdGUod2VpZ2h0cykpCisgICAgICAgIGVsaWYgd2VpZ2h0cyBpcyBub3QgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcignQ2Fubm90IHNwZWNpZnkgYm90aCB3ZWlnaHRzIGFuZCBjdW11bGF0aXZlX3dlaWdodHMnKQorICAgICAgICBpZiBsZW4oY3VtX3dlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKToKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ1RoZSBudW1iZXIgb2Ygd2VpZ2h0cyBkb2VzIG5vdCBtYXRjaCB0aGUgcG9wdWxhdGlvbicpCisgICAgICAgIGJpc2VjdCA9IF9iaXNlY3QuYmlzZWN0CisgICAgICAgIHJhbmRvbSA9IHNlbGYucmFuZG9tCisgICAgICAgIHRvdGFsID0gY3VtX3dlaWdodHNbLTFdCisgICAgICAgIHJldHVybiBbcG9wdWxhdGlvbltiaXNlY3QoY3VtX3dlaWdodHMsIHJhbmRvbSgpICogdG90YWwpXSBmb3IgaSBpbiByYW5nZShrKV0KKwogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gcmVhbC12YWx1ZWQgZGlzdHJpYnV0aW9ucyAgLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSB1bmlmb3JtIGRpc3RyaWJ1dGlvbiAtLS0tLS0tLS0tLS0tLS0tLS0tCkBAIC02MTUsMTEgKzYzMCwxMSBAQAogCiAgICAgICAgICMgVGhpcyB2ZXJzaW9uIGR1ZSB0byBKYW5uZSBTaW5ra29uZW4sIGFuZCBtYXRjaGVzIGFsbCB0aGUgc3RkCiAgICAgICAgICMgdGV4dHMgKGUuZy4sIEtudXRoIFZvbCAyIEVkIDMgcGcgMTM0ICJ0aGUgYmV0YSBkaXN0cmlidXRpb24iKS4KLSAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLikKKyAgICAgICAgeSA9IHNlbGYuZ2FtbWF2YXJpYXRlKGFscGhhLCAxLjApCiAgICAgICAgIGlmIHkgPT0gMDoKICAgICAgICAgICAgIHJldHVybiAwLjAKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiB5IC8gKHkgKyBzZWxmLmdhbW1hdmFyaWF0ZShiZXRhLCAxLikpCisgICAgICAgICAgICByZXR1cm4geSAvICh5ICsgc2VsZi5nYW1tYXZhcmlhdGUoYmV0YSwgMS4wKSkKIAogIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gUGFyZXRvIC0tLS0tLS0tLS0tLS0tLS0tLS0tCiAKQEAgLTczNCw2ICs3NDksNyBAQAogcmFuZHJhbmdlID0gX2luc3QucmFuZHJhbmdlCiBzYW1wbGUgPSBfaW5zdC5zYW1wbGUKIHNodWZmbGUgPSBfaW5zdC5zaHVmZmxlCitjaG9pY2VzID0gX2luc3QuY2hvaWNlcwogbm9ybWFsdmFyaWF0ZSA9IF9pbnN0Lm5vcm1hbHZhcmlhdGUKIGxvZ25vcm12YXJpYXRlID0gX2luc3QubG9nbm9ybXZhcmlhdGUKIGV4cG92YXJpYXRlID0gX2luc3QuZXhwb3ZhcmlhdGUKZGlmZiAtLWdpdCBhL0xpYi9yZS5weSBiL0xpYi9yZS5weQppbmRleCBkZGU4OTAxLi5kMzIxY2ZmIDEwMDY0NAotLS0gYS9MaWIvcmUucHkKKysrIGIvTGliL3JlLnB5CkBAIC0xMTksOSArMTE5LDEwIEBACiAKICIiIgogCi1pbXBvcnQgc3lzCitpbXBvcnQgZW51bQogaW1wb3J0IHNyZV9jb21waWxlCiBpbXBvcnQgc3JlX3BhcnNlCitpbXBvcnQgZnVuY3Rvb2xzCiB0cnk6CiAgICAgaW1wb3J0IF9sb2NhbGUKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTEzOCwxOCArMTM5LDI2IEBACiAKIF9fdmVyc2lvbl9fID0gIjIuMi4xIgogCi0jIGZsYWdzCi1BID0gQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgotSSA9IElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKLUwgPSBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKLVUgPSBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCi1NID0gTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKLVMgPSBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCi1YID0gVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKLQotIyBzcmUgZXh0ZW5zaW9ucyAoZXhwZXJpbWVudGFsLCBkb24ndCByZWx5IG9uIHRoZXNlKQotVCA9IFRFTVBMQVRFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVEVNUExBVEUgIyBkaXNhYmxlIGJhY2t0cmFja2luZwotREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorY2xhc3MgUmVnZXhGbGFnKGVudW0uSW50RmxhZyk6CisgICAgQVNDSUkgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19BU0NJSSAjIGFzc3VtZSBhc2NpaSAibG9jYWxlIgorICAgIElHTk9SRUNBU0UgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19JR05PUkVDQVNFICMgaWdub3JlIGNhc2UKKyAgICBMT0NBTEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19MT0NBTEUgIyBhc3N1bWUgY3VycmVudCA4LWJpdCBsb2NhbGUKKyAgICBVTklDT0RFID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfVU5JQ09ERSAjIGFzc3VtZSB1bmljb2RlICJsb2NhbGUiCisgICAgTVVMVElMSU5FID0gc3JlX2NvbXBpbGUuU1JFX0ZMQUdfTVVMVElMSU5FICMgbWFrZSBhbmNob3JzIGxvb2sgZm9yIG5ld2xpbmUKKyAgICBET1RBTEwgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ET1RBTEwgIyBtYWtlIGRvdCBtYXRjaCBuZXdsaW5lCisgICAgVkVSQk9TRSA9IHNyZV9jb21waWxlLlNSRV9GTEFHX1ZFUkJPU0UgIyBpZ25vcmUgd2hpdGVzcGFjZSBhbmQgY29tbWVudHMKKyAgICBBID0gQVNDSUkKKyAgICBJID0gSUdOT1JFQ0FTRQorICAgIEwgPSBMT0NBTEUKKyAgICBVID0gVU5JQ09ERQorICAgIE0gPSBNVUxUSUxJTkUKKyAgICBTID0gRE9UQUxMCisgICAgWCA9IFZFUkJPU0UKKyAgICAjIHNyZSBleHRlbnNpb25zIChleHBlcmltZW50YWwsIGRvbid0IHJlbHkgb24gdGhlc2UpCisgICAgVEVNUExBVEUgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19URU1QTEFURSAjIGRpc2FibGUgYmFja3RyYWNraW5nCisgICAgVCA9IFRFTVBMQVRFCisgICAgREVCVUcgPSBzcmVfY29tcGlsZS5TUkVfRkxBR19ERUJVRyAjIGR1bXAgcGF0dGVybiBhZnRlciBjb21waWxhdGlvbgorZ2xvYmFscygpLnVwZGF0ZShSZWdleEZsYWcuX19tZW1iZXJzX18pCiAKICMgc3JlIGV4Y2VwdGlvbgogZXJyb3IgPSBzcmVfY29tcGlsZS5lcnJvcgpAQCAtMjI2LDcgKzIzNSw3IEBACiBkZWYgcHVyZ2UoKToKICAgICAiQ2xlYXIgdGhlIHJlZ3VsYXIgZXhwcmVzc2lvbiBjYWNoZXMiCiAgICAgX2NhY2hlLmNsZWFyKCkKLSAgICBfY2FjaGVfcmVwbC5jbGVhcigpCisgICAgX2NvbXBpbGVfcmVwbC5jYWNoZV9jbGVhcigpCiAKIGRlZiB0ZW1wbGF0ZShwYXR0ZXJuLCBmbGFncz0wKToKICAgICAiQ29tcGlsZSBhIHRlbXBsYXRlIHBhdHRlcm4sIHJldHVybmluZyBhIHBhdHRlcm4gb2JqZWN0IgpAQCAtMjcwLDcgKzI3OSw2IEBACiAjIGludGVybmFscwogCiBfY2FjaGUgPSB7fQotX2NhY2hlX3JlcGwgPSB7fQogCiBfcGF0dGVybl90eXBlID0gdHlwZShzcmVfY29tcGlsZS5jb21waWxlKCIiLCAwKSkKIApAQCAtMzAzLDE3ICszMTEsMTAgQEAKICAgICAgICAgX2NhY2hlW3R5cGUocGF0dGVybiksIHBhdHRlcm4sIGZsYWdzXSA9IHAsIGxvYwogICAgIHJldHVybiBwCiAKK0BmdW5jdG9vbHMubHJ1X2NhY2hlKF9NQVhDQUNIRSkKIGRlZiBfY29tcGlsZV9yZXBsKHJlcGwsIHBhdHRlcm4pOgogICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgcmVwbGFjZW1lbnQgcGF0dGVybgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9jYWNoZV9yZXBsW3JlcGwsIHBhdHRlcm5dCi0gICAgZXhjZXB0IEtleUVycm9yOgotICAgICAgICBwYXNzCi0gICAgcCA9IHNyZV9wYXJzZS5wYXJzZV90ZW1wbGF0ZShyZXBsLCBwYXR0ZXJuKQotICAgIGlmIGxlbihfY2FjaGVfcmVwbCkgPj0gX01BWENBQ0hFOgotICAgICAgICBfY2FjaGVfcmVwbC5jbGVhcigpCi0gICAgX2NhY2hlX3JlcGxbcmVwbCwgcGF0dGVybl0gPSBwCi0gICAgcmV0dXJuIHAKKyAgICByZXR1cm4gc3JlX3BhcnNlLnBhcnNlX3RlbXBsYXRlKHJlcGwsIHBhdHRlcm4pCiAKIGRlZiBfZXhwYW5kKHBhdHRlcm4sIG1hdGNoLCB0ZW1wbGF0ZSk6CiAgICAgIyBpbnRlcm5hbDogbWF0Y2guZXhwYW5kIGltcGxlbWVudGF0aW9uIGhvb2sKQEAgLTM1Myw3ICszNTQsNyBAQAogICAgICAgICBmb3IgcGhyYXNlLCBhY3Rpb24gaW4gbGV4aWNvbjoKICAgICAgICAgICAgIGdpZCA9IHMub3Blbmdyb3VwKCkKICAgICAgICAgICAgIHAuYXBwZW5kKHNyZV9wYXJzZS5TdWJQYXR0ZXJuKHMsIFsKLSAgICAgICAgICAgICAgICAoU1VCUEFUVEVSTiwgKGdpZCwgc3JlX3BhcnNlLnBhcnNlKHBocmFzZSwgZmxhZ3MpKSksCisgICAgICAgICAgICAgICAgKFNVQlBBVFRFUk4sIChnaWQsIDAsIDAsIHNyZV9wYXJzZS5wYXJzZShwaHJhc2UsIGZsYWdzKSkpLAogICAgICAgICAgICAgICAgIF0pKQogICAgICAgICAgICAgcy5jbG9zZWdyb3VwKGdpZCwgcFstMV0pCiAgICAgICAgIHAgPSBzcmVfcGFyc2UuU3ViUGF0dGVybihzLCBbKEJSQU5DSCwgKE5vbmUsIHApKV0pCmRpZmYgLS1naXQgYS9MaWIvcmxjb21wbGV0ZXIucHkgYi9MaWIvcmxjb21wbGV0ZXIucHkKaW5kZXggNDAxYTYyNi4uYmNhNGE3YiAxMDA2NDQKLS0tIGEvTGliL3JsY29tcGxldGVyLnB5CisrKyBiL0xpYi9ybGNvbXBsZXRlci5weQpAQCAtMTEzLDYgKzExMywxMiBAQAogICAgICAgICBmb3Igd29yZCBpbiBrZXl3b3JkLmt3bGlzdDoKICAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IHRleHQ6CiAgICAgICAgICAgICAgICAgc2Vlbi5hZGQod29yZCkKKyAgICAgICAgICAgICAgICBpZiB3b3JkIGluIHsnZmluYWxseScsICd0cnknfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnOicKKyAgICAgICAgICAgICAgICBlbGlmIHdvcmQgbm90IGluIHsnRmFsc2UnLCAnTm9uZScsICdUcnVlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYnJlYWsnLCAnY29udGludWUnLCAncGFzcycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2Vsc2UnfToKKyAgICAgICAgICAgICAgICAgICAgd29yZCA9IHdvcmQgKyAnICcKICAgICAgICAgICAgICAgICBtYXRjaGVzLmFwcGVuZCh3b3JkKQogICAgICAgICBmb3IgbnNwYWNlIGluIFtzZWxmLm5hbWVzcGFjZSwgYnVpbHRpbnMuX19kaWN0X19dOgogICAgICAgICAgICAgZm9yIHdvcmQsIHZhbCBpbiBuc3BhY2UuaXRlbXMoKToKQEAgLTE1MiwxNCArMTU4LDMwIEBACiAgICAgICAgICAgICB3b3Jkcy51cGRhdGUoZ2V0X2NsYXNzX21lbWJlcnModGhpc29iamVjdC5fX2NsYXNzX18pKQogICAgICAgICBtYXRjaGVzID0gW10KICAgICAgICAgbiA9IGxlbihhdHRyKQotICAgICAgICBmb3Igd29yZCBpbiB3b3JkczoKLSAgICAgICAgICAgIGlmIHdvcmRbOm5dID09IGF0dHI6Ci0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICB2YWwgPSBnZXRhdHRyKHRoaXNvYmplY3QsIHdvcmQpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUgICMgRXhjbHVkZSBwcm9wZXJ0aWVzIHRoYXQgYXJlIG5vdCBzZXQKLSAgICAgICAgICAgICAgICB3b3JkID0gc2VsZi5fY2FsbGFibGVfcG9zdGZpeCh2YWwsICIlcy4lcyIgJSAoZXhwciwgd29yZCkpCi0gICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQod29yZCkKKyAgICAgICAgaWYgYXR0ciA9PSAnJzoKKyAgICAgICAgICAgIG5vcHJlZml4ID0gJ18nCisgICAgICAgIGVsaWYgYXR0ciA9PSAnXyc6CisgICAgICAgICAgICBub3ByZWZpeCA9ICdfXycKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG5vcHJlZml4ID0gTm9uZQorICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgZm9yIHdvcmQgaW4gd29yZHM6CisgICAgICAgICAgICAgICAgaWYgKHdvcmRbOm5dID09IGF0dHIgYW5kCisgICAgICAgICAgICAgICAgICAgIG5vdCAobm9wcmVmaXggYW5kIHdvcmRbOm4rMV0gPT0gbm9wcmVmaXgpKToKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2ggPSAiJXMuJXMiICUgKGV4cHIsIHdvcmQpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHZhbCA9IGdldGF0dHIodGhpc29iamVjdCwgd29yZCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MgICMgSW5jbHVkZSBldmVuIGlmIGF0dHJpYnV0ZSBub3Qgc2V0CisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IHNlbGYuX2NhbGxhYmxlX3Bvc3RmaXgodmFsLCBtYXRjaCkKKyAgICAgICAgICAgICAgICAgICAgbWF0Y2hlcy5hcHBlbmQobWF0Y2gpCisgICAgICAgICAgICBpZiBtYXRjaGVzIG9yIG5vdCBub3ByZWZpeDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgbm9wcmVmaXggPT0gJ18nOgorICAgICAgICAgICAgICAgIG5vcHJlZml4ID0gJ19fJworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBub3ByZWZpeCA9IE5vbmUKICAgICAgICAgbWF0Y2hlcy5zb3J0KCkKICAgICAgICAgcmV0dXJuIG1hdGNoZXMKIApkaWZmIC0tZ2l0IGEvTGliL3NjaGVkLnB5IGIvTGliL3NjaGVkLnB5CmluZGV4IGI0NzY0OGQuLmJkN2MwZjEgMTAwNjQ0Ci0tLSBhL0xpYi9zY2hlZC5weQorKysgYi9MaWIvc2NoZWQucHkKQEAgLTQ2LDYgKzQ2LDE3IEBACiAgICAgZGVmIF9fZ3RfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID4gIChvLnRpbWUsIG8ucHJpb3JpdHkpCiAgICAgZGVmIF9fZ2VfXyhzLCBvKTogcmV0dXJuIChzLnRpbWUsIHMucHJpb3JpdHkpID49IChvLnRpbWUsIG8ucHJpb3JpdHkpCiAKK0V2ZW50LnRpbWUuX19kb2NfXyA9ICgnJydOdW1lcmljIHR5cGUgY29tcGF0aWJsZSB3aXRoIHRoZSByZXR1cm4gdmFsdWUgb2YgdGhlCit0aW1lZnVuYyBmdW5jdGlvbiBwYXNzZWQgdG8gdGhlIGNvbnN0cnVjdG9yLicnJykKK0V2ZW50LnByaW9yaXR5Ll9fZG9jX18gPSAoJycnRXZlbnRzIHNjaGVkdWxlZCBmb3IgdGhlIHNhbWUgdGltZSB3aWxsIGJlIGV4ZWN1dGVkCitpbiB0aGUgb3JkZXIgb2YgdGhlaXIgcHJpb3JpdHkuJycnKQorRXZlbnQuYWN0aW9uLl9fZG9jX18gPSAoJycnRXhlY3V0aW5nIHRoZSBldmVudCBtZWFucyBleGVjdXRpbmcKK2FjdGlvbigqYXJndW1lbnQsICoqa3dhcmdzKScnJykKK0V2ZW50LmFyZ3VtZW50Ll9fZG9jX18gPSAoJycnYXJndW1lbnQgaXMgYSBzZXF1ZW5jZSBob2xkaW5nIHRoZSBwb3NpdGlvbmFsCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorRXZlbnQua3dhcmdzLl9fZG9jX18gPSAoJycna3dhcmdzIGlzIGEgZGljdGlvbmFyeSBob2xkaW5nIHRoZSBrZXl3b3JkCithcmd1bWVudHMgZm9yIHRoZSBhY3Rpb24uJycnKQorCiBfc2VudGluZWwgPSBvYmplY3QoKQogCiBjbGFzcyBzY2hlZHVsZXI6CmRpZmYgLS1naXQgYS9MaWIvc2VjcmV0cy5weSBiL0xpYi9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3ZmE0NTAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2VjcmV0cy5weQpAQCAtMCwwICsxLDcxIEBACisiIiJHZW5lcmF0ZSBjcnlwdG9ncmFwaGljYWxseSBzdHJvbmcgcHNldWRvLXJhbmRvbSBudW1iZXJzIHN1aXRhYmxlIGZvcgorbWFuYWdpbmcgc2VjcmV0cyBzdWNoIGFzIGFjY291bnQgYXV0aGVudGljYXRpb24sIHRva2VucywgYW5kIHNpbWlsYXIuCisKK1NlZSBQRVAgNTA2IGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDUwNi8KKworIiIiCisKK19fYWxsX18gPSBbJ2Nob2ljZScsICdyYW5kYmVsb3cnLCAncmFuZGJpdHMnLCAnU3lzdGVtUmFuZG9tJywKKyAgICAgICAgICAgJ3Rva2VuX2J5dGVzJywgJ3Rva2VuX2hleCcsICd0b2tlbl91cmxzYWZlJywKKyAgICAgICAgICAgJ2NvbXBhcmVfZGlnZXN0JywKKyAgICAgICAgICAgXQorCisKK2ltcG9ydCBiYXNlNjQKK2ltcG9ydCBiaW5hc2NpaQoraW1wb3J0IG9zCisKK2Zyb20gaG1hYyBpbXBvcnQgY29tcGFyZV9kaWdlc3QKK2Zyb20gcmFuZG9tIGltcG9ydCBTeXN0ZW1SYW5kb20KKworX3N5c3JhbmQgPSBTeXN0ZW1SYW5kb20oKQorCityYW5kYml0cyA9IF9zeXNyYW5kLmdldHJhbmRiaXRzCitjaG9pY2UgPSBfc3lzcmFuZC5jaG9pY2UKKworZGVmIHJhbmRiZWxvdyhleGNsdXNpdmVfdXBwZXJfYm91bmQpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBpbnQgaW4gdGhlIHJhbmdlIFswLCBuKS4iIiIKKyAgICByZXR1cm4gX3N5c3JhbmQuX3JhbmRiZWxvdyhleGNsdXNpdmVfdXBwZXJfYm91bmQpCisKK0RFRkFVTFRfRU5UUk9QWSA9IDMyICAjIG51bWJlciBvZiBieXRlcyB0byByZXR1cm4gYnkgZGVmYXVsdAorCitkZWYgdG9rZW5fYnl0ZXMobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSBieXRlIHN0cmluZyBjb250YWluaW5nICpuYnl0ZXMqIGJ5dGVzLgorCisgICAgSWYgKm5ieXRlcyogaXMgYGBOb25lYGAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUKKyAgICBkZWZhdWx0IGlzIHVzZWQuCisKKyAgICA+Pj4gdG9rZW5fYnl0ZXMoMTYpICAjZG9jdGVzdDorU0tJUAorICAgIGInXFx4ZWJyXFx4MTdEKnRcXHhhZVxceGQ0XFx4ZTNTXFx4YjZcXHhlMlxceGViUDFcXHg4YicKKworICAgICIiIgorICAgIGlmIG5ieXRlcyBpcyBOb25lOgorICAgICAgICBuYnl0ZXMgPSBERUZBVUxUX0VOVFJPUFkKKyAgICByZXR1cm4gb3MudXJhbmRvbShuYnl0ZXMpCisKK2RlZiB0b2tlbl9oZXgobmJ5dGVzPU5vbmUpOgorICAgICIiIlJldHVybiBhIHJhbmRvbSB0ZXh0IHN0cmluZywgaW4gaGV4YWRlY2ltYWwuCisKKyAgICBUaGUgc3RyaW5nIGhhcyAqbmJ5dGVzKiByYW5kb20gYnl0ZXMsIGVhY2ggYnl0ZSBjb252ZXJ0ZWQgdG8gdHdvCisgICAgaGV4IGRpZ2l0cy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgIG9yIG5vdCBzdXBwbGllZCwgYSByZWFzb25hYmxlCisgICAgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX2hleCgxNikgICNkb2N0ZXN0OitTS0lQCisgICAgJ2Y5YmY3OGI5YTE4Y2U2ZDQ2YTBjZDJiMGI4NmRmOWRhJworCisgICAgIiIiCisgICAgcmV0dXJuIGJpbmFzY2lpLmhleGxpZnkodG9rZW5fYnl0ZXMobmJ5dGVzKSkuZGVjb2RlKCdhc2NpaScpCisKK2RlZiB0b2tlbl91cmxzYWZlKG5ieXRlcz1Ob25lKToKKyAgICAiIiJSZXR1cm4gYSByYW5kb20gVVJMLXNhZmUgdGV4dCBzdHJpbmcsIGluIEJhc2U2NCBlbmNvZGluZy4KKworICAgIFRoZSBzdHJpbmcgaGFzICpuYnl0ZXMqIHJhbmRvbSBieXRlcy4gIElmICpuYnl0ZXMqIGlzIGBgTm9uZWBgCisgICAgb3Igbm90IHN1cHBsaWVkLCBhIHJlYXNvbmFibGUgZGVmYXVsdCBpcyB1c2VkLgorCisgICAgPj4+IHRva2VuX3VybHNhZmUoMTYpICAjZG9jdGVzdDorU0tJUAorICAgICdEcm1oemU2RVBjdjBmTl84MUJqLW5BJworCisgICAgIiIiCisgICAgdG9rID0gdG9rZW5fYnl0ZXMobmJ5dGVzKQorICAgIHJldHVybiBiYXNlNjQudXJsc2FmZV9iNjRlbmNvZGUodG9rKS5yc3RyaXAoYic9JykuZGVjb2RlKCdhc2NpaScpCmRpZmYgLS1naXQgYS9MaWIvc2hsZXgucHkgYi9MaWIvc2hsZXgucHkKaW5kZXggZWNkMmVmZC4uZTg3MjY2ZiAxMDA2NDQKLS0tIGEvTGliL3NobGV4LnB5CisrKyBiL0xpYi9zaGxleC5weQpAQCAtNSw2ICs1LDcgQEAKICMgcHVzaF9zb3VyY2UoKSBhbmQgcG9wX3NvdXJjZSgpIG1hZGUgZXhwbGljaXQgYnkgRVNSLCBKYW51YXJ5IDIwMDEuCiAjIFBvc2l4IGNvbXBsaWFuY2UsIHNwbGl0KCksIHN0cmluZyBhcmd1bWVudHMsIGFuZAogIyBpdGVyYXRvciBpbnRlcmZhY2UgYnkgR3VzdGF2byBOaWVtZXllciwgQXByaWwgMjAwMy4KKyMgY2hhbmdlcyB0byB0b2tlbml6ZSBtb3JlIGxpa2UgUG9zaXggc2hlbGxzIGJ5IFZpbmF5IFNhamlwLCBKdWx5IDIwMTYuCiAKIGltcG9ydCBvcwogaW1wb3J0IHJlCkBAIC0xNyw3ICsxOCw4IEBACiAKIGNsYXNzIHNobGV4OgogICAgICJBIGxleGljYWwgYW5hbHl6ZXIgY2xhc3MgZm9yIHNpbXBsZSBzaGVsbC1saWtlIHN5bnRheGVzLiIKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgaW5zdHJlYW09Tm9uZSwgaW5maWxlPU5vbmUsIHBvc2l4PUZhbHNlLAorICAgICAgICAgICAgICAgICBwdW5jdHVhdGlvbl9jaGFycz1GYWxzZSk6CiAgICAgICAgIGlmIGlzaW5zdGFuY2UoaW5zdHJlYW0sIHN0cik6CiAgICAgICAgICAgICBpbnN0cmVhbSA9IFN0cmluZ0lPKGluc3RyZWFtKQogICAgICAgICBpZiBpbnN0cmVhbSBpcyBub3QgTm9uZToKQEAgLTQ5LDYgKzUxLDE5IEBACiAgICAgICAgIHNlbGYudG9rZW4gPSAnJwogICAgICAgICBzZWxmLmZpbGVzdGFjayA9IGRlcXVlKCkKICAgICAgICAgc2VsZi5zb3VyY2UgPSBOb25lCisgICAgICAgIGlmIG5vdCBwdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgIHB1bmN0dWF0aW9uX2NoYXJzID0gJycKKyAgICAgICAgZWxpZiBwdW5jdHVhdGlvbl9jaGFycyBpcyBUcnVlOgorICAgICAgICAgICAgcHVuY3R1YXRpb25fY2hhcnMgPSAnKCk7PD58JicKKyAgICAgICAgc2VsZi5wdW5jdHVhdGlvbl9jaGFycyA9IHB1bmN0dWF0aW9uX2NoYXJzCisgICAgICAgIGlmIHB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgIyBfcHVzaGJhY2tfY2hhcnMgaXMgYSBwdXNoIGJhY2sgcXVldWUgdXNlZCBieSBsb29rYWhlYWQgbG9naWMKKyAgICAgICAgICAgIHNlbGYuX3B1c2hiYWNrX2NoYXJzID0gZGVxdWUoKQorICAgICAgICAgICAgIyB0aGVzZSBjaGFycyBhZGRlZCBiZWNhdXNlIGFsbG93ZWQgaW4gZmlsZSBuYW1lcywgYXJncywgd2lsZGNhcmRzCisgICAgICAgICAgICBzZWxmLndvcmRjaGFycyArPSAnfi0uLyo/PScKKyAgICAgICAgICAgICNyZW1vdmUgYW55IHB1bmN0dWF0aW9uIGNoYXJzIGZyb20gd29yZGNoYXJzCisgICAgICAgICAgICB0ID0gc2VsZi53b3JkY2hhcnMubWFrZXRyYW5zKGRpY3QuZnJvbWtleXMocHVuY3R1YXRpb25fY2hhcnMpKQorICAgICAgICAgICAgc2VsZi53b3JkY2hhcnMgPSBzZWxmLndvcmRjaGFycy50cmFuc2xhdGUodCkKIAogICAgIGRlZiBwdXNoX3Rva2VuKHNlbGYsIHRvayk6CiAgICAgICAgICJQdXNoIGEgdG9rZW4gb250byB0aGUgc3RhY2sgcG9wcGVkIGJ5IHRoZSBnZXRfdG9rZW4gbWV0aG9kIgpAQCAtMTE1LDEyICsxMzAsMTUgQEAKICAgICAgICAgcXVvdGVkID0gRmFsc2UKICAgICAgICAgZXNjYXBlZHN0YXRlID0gJyAnCiAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuaW5zdHJlYW0ucmVhZCgxKQorICAgICAgICAgICAgaWYgc2VsZi5wdW5jdHVhdGlvbl9jaGFycyBhbmQgc2VsZi5fcHVzaGJhY2tfY2hhcnM6CisgICAgICAgICAgICAgICAgbmV4dGNoYXIgPSBzZWxmLl9wdXNoYmFja19jaGFycy5wb3AoKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBuZXh0Y2hhciA9IHNlbGYuaW5zdHJlYW0ucmVhZCgxKQogICAgICAgICAgICAgaWYgbmV4dGNoYXIgPT0gJ1xuJzoKLSAgICAgICAgICAgICAgICBzZWxmLmxpbmVubyA9IHNlbGYubGluZW5vICsgMQorICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMzoKLSAgICAgICAgICAgICAgICBwcmludCgic2hsZXg6IGluIHN0YXRlIiwgcmVwcihzZWxmLnN0YXRlKSwgXAotICAgICAgICAgICAgICAgICAgICAgICJJIHNlZSBjaGFyYWN0ZXI6IiwgcmVwcihuZXh0Y2hhcikpCisgICAgICAgICAgICAgICAgcHJpbnQoInNobGV4OiBpbiBzdGF0ZSAlciBJIHNlZSBjaGFyYWN0ZXI6ICVyIiAlIChzZWxmLnN0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGNoYXIpKQogICAgICAgICAgICAgaWYgc2VsZi5zdGF0ZSBpcyBOb25lOgogICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSAnJyAgICAgICAgIyBwYXN0IGVuZCBvZiBmaWxlCiAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTEzNywxMyArMTU1LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5jb21tZW50ZXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmluc3RyZWFtLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gPSBzZWxmLmxpbmVubyArIDEKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5saW5lbm8gKz0gMQogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICdhJwogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICdhJworICAgICAgICAgICAgICAgIGVsaWYgbmV4dGNoYXIgaW4gc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IG5leHRjaGFyCisgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYycKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYucXVvdGVzOgogICAgICAgICAgICAgICAgICAgICBpZiBub3Qgc2VsZi5wb3NpeDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gPSBuZXh0Y2hhcgpAQCAtMTY2LDE3ICsxODcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gY2xvc2luZyBxdW90YXRpb24iKQogICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyID09IHNlbGYuc3RhdGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBvc2l4OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiArPSBuZXh0Y2hhcgogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJwogICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnYScKLSAgICAgICAgICAgICAgICBlbGlmIHNlbGYucG9zaXggYW5kIG5leHRjaGFyIGluIHNlbGYuZXNjYXBlIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlIGluIHNlbGYuZXNjYXBlZHF1b3RlczoKKyAgICAgICAgICAgICAgICBlbGlmIChzZWxmLnBvc2l4IGFuZCBuZXh0Y2hhciBpbiBzZWxmLmVzY2FwZSBhbmQgc2VsZi5zdGF0ZQorICAgICAgICAgICAgICAgICAgICAgIGluIHNlbGYuZXNjYXBlZHF1b3Rlcyk6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9IHNlbGYuc3RhdGUKICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9IG5leHRjaGFyCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi50b2tlbiA9IHNlbGYudG9rZW4gKyBuZXh0Y2hhcgorICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuICs9IG5leHRjaGFyCiAgICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgaWYgbm90IG5leHRjaGFyOiAgICAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5kZWJ1ZyA+PSAyOgpAQCAtMTg1LDEyICsyMDYsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiTm8gZXNjYXBlZCBjaGFyYWN0ZXIiKQogICAgICAgICAgICAgICAgICMgSW4gcG9zaXggc2hlbGxzLCBvbmx5IHRoZSBxdW90ZSBpdHNlbGYgb3IgdGhlIGVzY2FwZQogICAgICAgICAgICAgICAgICMgY2hhcmFjdGVyIG1heSBiZSBlc2NhcGVkIHdpdGhpbiBxdW90ZXMuCi0gICAgICAgICAgICAgICAgaWYgZXNjYXBlZHN0YXRlIGluIHNlbGYucXVvdGVzIGFuZCBcCi0gICAgICAgICAgICAgICAgICAgbmV4dGNoYXIgIT0gc2VsZi5zdGF0ZSBhbmQgbmV4dGNoYXIgIT0gZXNjYXBlZHN0YXRlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIHNlbGYuc3RhdGUKLSAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgaWYgKGVzY2FwZWRzdGF0ZSBpbiBzZWxmLnF1b3RlcyBhbmQKKyAgICAgICAgICAgICAgICAgICAgICAgIG5leHRjaGFyICE9IHNlbGYuc3RhdGUgYW5kIG5leHRjaGFyICE9IGVzY2FwZWRzdGF0ZSk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gc2VsZi5zdGF0ZQorICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gZXNjYXBlZHN0YXRlCi0gICAgICAgICAgICBlbGlmIHNlbGYuc3RhdGUgPT0gJ2EnOgorICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlIGluICgnYScsICdjJyk6CiAgICAgICAgICAgICAgICAgaWYgbm90IG5leHRjaGFyOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gTm9uZSAgICMgZW5kIG9mIGZpbGUKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKQEAgLTIwNCw3ICsyMjUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYuY29tbWVudGVyczoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5pbnN0cmVhbS5yZWFkbGluZSgpCi0gICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vID0gc2VsZi5saW5lbm8gKyAxCisgICAgICAgICAgICAgICAgICAgIHNlbGYubGluZW5vICs9IDEKICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5wb3NpeDoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYudG9rZW4gb3IgKHNlbGYucG9zaXggYW5kIHF1b3RlZCk6CkBAIC0yMTYsMTEgKzIzNywyMiBAQAogICAgICAgICAgICAgICAgIGVsaWYgc2VsZi5wb3NpeCBhbmQgbmV4dGNoYXIgaW4gc2VsZi5lc2NhcGU6CiAgICAgICAgICAgICAgICAgICAgIGVzY2FwZWRzdGF0ZSA9ICdhJwogICAgICAgICAgICAgICAgICAgICBzZWxmLnN0YXRlID0gbmV4dGNoYXIKLSAgICAgICAgICAgICAgICBlbGlmIG5leHRjaGFyIGluIHNlbGYud29yZGNoYXJzIG9yIG5leHRjaGFyIGluIHNlbGYucXVvdGVzIFwKLSAgICAgICAgICAgICAgICAgICAgb3Igc2VsZi53aGl0ZXNwYWNlX3NwbGl0OgotICAgICAgICAgICAgICAgICAgICBzZWxmLnRva2VuID0gc2VsZi50b2tlbiArIG5leHRjaGFyCisgICAgICAgICAgICAgICAgZWxpZiBzZWxmLnN0YXRlID09ICdjJzoKKyAgICAgICAgICAgICAgICAgICAgaWYgbmV4dGNoYXIgaW4gc2VsZi5wdW5jdHVhdGlvbl9jaGFyczoKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5leHRjaGFyIG5vdCBpbiBzZWxmLndoaXRlc3BhY2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fcHVzaGJhY2tfY2hhcnMuYXBwZW5kKG5leHRjaGFyKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGF0ZSA9ICcgJworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBlbGlmIChuZXh0Y2hhciBpbiBzZWxmLndvcmRjaGFycyBvciBuZXh0Y2hhciBpbiBzZWxmLnF1b3RlcworICAgICAgICAgICAgICAgICAgICAgIG9yIHNlbGYud2hpdGVzcGFjZV9zcGxpdCk6CisgICAgICAgICAgICAgICAgICAgIHNlbGYudG9rZW4gKz0gbmV4dGNoYXIKICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2hiYWNrLmFwcGVuZGxlZnQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYucHVuY3R1YXRpb25fY2hhcnM6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9wdXNoYmFja19jaGFycy5hcHBlbmQobmV4dGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnB1c2hiYWNrLmFwcGVuZGxlZnQobmV4dGNoYXIpCiAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuZGVidWcgPj0gMjoKICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCJzaGxleDogSSBzZWUgcHVuY3R1YXRpb24gaW4gd29yZCBzdGF0ZSIpCiAgICAgICAgICAgICAgICAgICAgIHNlbGYuc3RhdGUgPSAnICcKZGlmZiAtLWdpdCBhL0xpYi9zaHV0aWwucHkgYi9MaWIvc2h1dGlsLnB5CmluZGV4IGRjOWYyZWIuLjlkMTkzYjUgMTAwNjQ0Ci0tLSBhL0xpYi9zaHV0aWwucHkKKysrIGIvTGliL3NodXRpbC5weQpAQCAtOTc0LDYgKzk3NCw5IEBACiAKICAgICBfX2FsbF9fLmFwcGVuZCgnZGlza191c2FnZScpCiAgICAgX250dXBsZV9kaXNrdXNhZ2UgPSBjb2xsZWN0aW9ucy5uYW1lZHR1cGxlKCd1c2FnZScsICd0b3RhbCB1c2VkIGZyZWUnKQorICAgIF9udHVwbGVfZGlza3VzYWdlLnRvdGFsLl9fZG9jX18gPSAnVG90YWwgc3BhY2UgaW4gYnl0ZXMnCisgICAgX250dXBsZV9kaXNrdXNhZ2UudXNlZC5fX2RvY19fID0gJ1VzZWQgc3BhY2UgaW4gYnl0ZXMnCisgICAgX250dXBsZV9kaXNrdXNhZ2UuZnJlZS5fX2RvY19fID0gJ0ZyZWUgc3BhY2UgaW4gYnl0ZXMnCiAKICAgICBkZWYgZGlza191c2FnZShwYXRoKToKICAgICAgICAgIiIiUmV0dXJuIGRpc2sgdXNhZ2Ugc3RhdGlzdGljcyBhYm91dCB0aGUgZ2l2ZW4gcGF0aC4KZGlmZiAtLWdpdCBhL0xpYi9zaXRlLXBhY2thZ2VzL1JFQURNRS50eHQgYi9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3M2Y2MjUKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvc2l0ZS1wYWNrYWdlcy9SRUFETUUudHh0CkBAIC0wLDAgKzEsMiBAQAorVGhpcyBkaXJlY3RvcnkgZXhpc3RzIHNvIHRoYXQgM3JkIHBhcnR5IHBhY2thZ2VzIGNhbiBiZSBpbnN0YWxsZWQKK2hlcmUuICBSZWFkIHRoZSBzb3VyY2UgZm9yIHNpdGUucHkgZm9yIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKaW5kZXggM2Y3OGVmNS4uMDg1OWYyOCAxMDA2NDQKLS0tIGEvTGliL3NpdGUucHkKKysrIGIvTGliL3NpdGUucHkKQEAgLTYwLDcgKzYwLDggQEAKIAogVGhlIHJlYWRsaW5lIG1vZHVsZSBpcyBhbHNvIGF1dG9tYXRpY2FsbHkgY29uZmlndXJlZCB0byBlbmFibGUKIGNvbXBsZXRpb24gZm9yIHN5c3RlbXMgdGhhdCBzdXBwb3J0IGl0LiAgVGhpcyBjYW4gYmUgb3ZlcnJpZGRlbiBpbgotc2l0ZWN1c3RvbWl6ZSwgdXNlcmN1c3RvbWl6ZSBvciBQWVRIT05TVEFSVFVQLgorc2l0ZWN1c3RvbWl6ZSwgdXNlcmN1c3RvbWl6ZSBvciBQWVRIT05TVEFSVFVQLiAgU3RhcnRpbmcgUHl0aG9uIGluCitpc29sYXRlZCBtb2RlICgtSSkgZGlzYWJsZXMgYXV0b21hdGljIHJlYWRsaW5lIGNvbmZpZ3VyYXRpb24uCiAKIEFmdGVyIHRoZXNlIG9wZXJhdGlvbnMsIGFuIGF0dGVtcHQgaXMgbWFkZSB0byBpbXBvcnQgYSBtb2R1bGUKIG5hbWVkIHNpdGVjdXN0b21pemUsIHdoaWNoIGNhbiBwZXJmb3JtIGFyYml0cmFyeSBhZGRpdGlvbmFsCkBAIC0xMzEsMTMgKzEzMiwxMyBAQAogCiAKIGRlZiBfaW5pdF9wYXRoaW5mbygpOgotICAgICIiIlJldHVybiBhIHNldCBjb250YWluaW5nIGFsbCBleGlzdGluZyBkaXJlY3RvcnkgZW50cmllcyBmcm9tIHN5cy5wYXRoIiIiCisgICAgIiIiUmV0dXJuIGEgc2V0IGNvbnRhaW5pbmcgYWxsIGV4aXN0aW5nIGZpbGUgc3lzdGVtIGl0ZW1zIGZyb20gc3lzLnBhdGguIiIiCiAgICAgZCA9IHNldCgpCi0gICAgZm9yIGRpciBpbiBzeXMucGF0aDoKKyAgICBmb3IgaXRlbSBpbiBzeXMucGF0aDoKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihkaXIpOgotICAgICAgICAgICAgICAgIGRpciwgZGlyY2FzZSA9IG1ha2VwYXRoKGRpcikKLSAgICAgICAgICAgICAgICBkLmFkZChkaXJjYXNlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoaXRlbSk6CisgICAgICAgICAgICAgICAgXywgaXRlbWNhc2UgPSBtYWtlcGF0aChpdGVtKQorICAgICAgICAgICAgICAgIGQuYWRkKGl0ZW1jYXNlKQogICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgY29udGludWUKICAgICByZXR1cm4gZApAQCAtMTUwLDkgKzE1MSw5IEBACiAgICAgIiIiCiAgICAgaWYga25vd25fcGF0aHMgaXMgTm9uZToKICAgICAgICAga25vd25fcGF0aHMgPSBfaW5pdF9wYXRoaW5mbygpCi0gICAgICAgIHJlc2V0ID0gMQorICAgICAgICByZXNldCA9IFRydWUKICAgICBlbHNlOgotICAgICAgICByZXNldCA9IDAKKyAgICAgICAgcmVzZXQgPSBGYWxzZQogICAgIGZ1bGxuYW1lID0gb3MucGF0aC5qb2luKHNpdGVkaXIsIG5hbWUpCiAgICAgdHJ5OgogICAgICAgICBmID0gb3BlbihmdWxsbmFtZSwgInIiKQpAQCAtMTkwLDkgKzE5MSw5IEBACiAgICAgJ3NpdGVkaXInIiIiCiAgICAgaWYga25vd25fcGF0aHMgaXMgTm9uZToKICAgICAgICAga25vd25fcGF0aHMgPSBfaW5pdF9wYXRoaW5mbygpCi0gICAgICAgIHJlc2V0ID0gMQorICAgICAgICByZXNldCA9IFRydWUKICAgICBlbHNlOgotICAgICAgICByZXNldCA9IDAKKyAgICAgICAgcmVzZXQgPSBGYWxzZQogICAgIHNpdGVkaXIsIHNpdGVkaXJjYXNlID0gbWFrZXBhdGgoc2l0ZWRpcikKICAgICBpZiBub3Qgc2l0ZWRpcmNhc2UgaW4ga25vd25fcGF0aHM6CiAgICAgICAgIHN5cy5wYXRoLmFwcGVuZChzaXRlZGlyKSAgICAgICAgIyBBZGQgcGF0aCBjb21wb25lbnQKQEAgLTMwNCw3ICszMDUsNyBAQAogCiAgICAgICAgIGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsICJsaWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24lZC4lZCIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChwcmVmaXgpCkBAIC0zMTcsNyArMzE4LDcgQEAKICAgICAgICAgICAgIGlmIGZyYW1ld29yazoKICAgICAgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKAogICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKCIvTGlicmFyeSIsIGZyYW1ld29yaywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sICJzaXRlLXBhY2thZ2VzIikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLCAic2l0ZS1wYWNrYWdlcyIpKQogICAgIHJldHVybiBzaXRlcGFja2FnZXMKIAogZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocywgcHJlZml4ZXM9Tm9uZSk6CkBAIC0zMzUsOSArMzM2LDcgQEAKICAgICBUaGUgcmVwciBvZiBlYWNoIG9iamVjdCBjb250YWlucyBhIGhpbnQgYXQgaG93IGl0IHdvcmtzLgogCiAgICAgIiIiCi0gICAgaWYgb3Muc2VwID09ICc6JzoKLSAgICAgICAgZW9mID0gJ0NtZC1RJwotICAgIGVsaWYgb3Muc2VwID09ICdcXCc6CisgICAgaWYgb3Muc2VwID09ICdcXCc6CiAgICAgICAgIGVvZiA9ICdDdHJsLVogcGx1cyBSZXR1cm4nCiAgICAgZWxzZToKICAgICAgICAgZW9mID0gJ0N0cmwtRCAoaS5lLiBFT0YpJwpAQCAtNDIzLDIxICs0MjIsNiBAQAogCiAgICAgc3lzLl9faW50ZXJhY3RpdmVob29rX18gPSByZWdpc3Rlcl9yZWFkbGluZQogCi1kZWYgYWxpYXNtYmNzKCk6Ci0gICAgIiIiT24gV2luZG93cywgc29tZSBkZWZhdWx0IGVuY29kaW5ncyBhcmUgbm90IHByb3ZpZGVkIGJ5IFB5dGhvbiwKLSAgICB3aGlsZSB0aGV5IGFyZSBhbHdheXMgYXZhaWxhYmxlIGFzICJtYmNzIiBpbiBlYWNoIGxvY2FsZS4gTWFrZQotICAgIHRoZW0gdXNhYmxlIGJ5IGFsaWFzaW5nIHRvICJtYmNzIiBpbiBzdWNoIGEgY2FzZS4iIiIKLSAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlLCBjb2RlY3MKLSAgICAgICAgZW5jID0gX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcoRmFsc2UpCi0gICAgICAgIGlmIGVuYy5zdGFydHN3aXRoKCdjcCcpOiAgICAgICAgICAgICMgImNwKioqIiA/Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgY29kZWNzLmxvb2t1cChlbmMpCi0gICAgICAgICAgICBleGNlcHQgTG9va3VwRXJyb3I6Ci0gICAgICAgICAgICAgICAgaW1wb3J0IGVuY29kaW5ncwotICAgICAgICAgICAgICAgIGVuY29kaW5ncy5fY2FjaGVbZW5jXSA9IGVuY29kaW5ncy5fdW5rbm93bgotICAgICAgICAgICAgICAgIGVuY29kaW5ncy5hbGlhc2VzLmFsaWFzZXNbZW5jXSA9ICdtYmNzJwotCiBDT05GSUdfTElORSA9IHInXig/UDxrZXk+KFx3fFstX10pKylccyo9XHMqKD9QPHZhbHVlPi4qKVxzKiQnCiAKIGRlZiB2ZW52KGtub3duX3BhdGhzKToKQEAgLTQ3OCwxMiArNDYyLDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbV9zaXRlID0gdmFsdWUubG93ZXIoKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnaG9tZSc6CiAgICAgICAgICAgICAgICAgICAgICAgICBzeXMuX2hvbWUgPSB2YWx1ZQotICAgICAgICAgICAgICAgICAgICBlbGlmIGtleSA9PSAnYXBwbG9jYWwnIGFuZCB2YWx1ZS5sb3dlcigpID09ICd0cnVlJzoKLSAgICAgICAgICAgICAgICAgICAgICAgICMgQXBwLWxvY2FsIGluc3RhbGxzIHVzZSB0aGUgZXhlX2RpciBhcyBwcmVmaXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAjIG5vdCBvbmUgbGV2ZWwgaGlnaGVyLCBhbmQgZG8gbm90IHVzZSBzeXN0ZW0KLSAgICAgICAgICAgICAgICAgICAgICAgICMgc2l0ZSBwYWNrYWdlcy4KLSAgICAgICAgICAgICAgICAgICAgICAgIHNpdGVfcHJlZml4ID0gZXhlX2RpcgotICAgICAgICAgICAgICAgICAgICAgICAgc3lzdGVtX3NpdGUgPSAnZmFsc2UnCiAKICAgICAgICAgc3lzLnByZWZpeCA9IHN5cy5leGVjX3ByZWZpeCA9IHNpdGVfcHJlZml4CiAKQEAgLTUwNCwxMSArNDgyLDE1IEBACiBkZWYgZXhlY3NpdGVjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHNpdGUgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHNpdGVjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICdzaXRlY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTUyMCwxMSArNTAyLDE1IEBACiBkZWYgZXhlY3VzZXJjdXN0b21pemUoKToKICAgICAiIiJSdW4gY3VzdG9tIHVzZXIgc3BlY2lmaWMgY29kZSwgaWYgYXZhaWxhYmxlLiIiIgogICAgIHRyeToKLSAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKLSAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW1wb3J0IHVzZXJjdXN0b21pemUKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgIGlmIGV4Yy5uYW1lID09ICd1c2VyY3VzdG9taXplJzoKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJhaXNlCiAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlcnI6Ci0gICAgICAgIGlmIG9zLmVudmlyb24uZ2V0KCJQWVRIT05WRVJCT1NFIik6CisgICAgICAgIGlmIHN5cy5mbGFncy52ZXJib3NlOgogICAgICAgICAgICAgc3lzLmV4Y2VwdGhvb2soKnN5cy5leGNfaW5mbygpKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgKQEAgLTU1MSwxMyArNTM3LDEzIEBACiAgICAgc2V0cXVpdCgpCiAgICAgc2V0Y29weXJpZ2h0KCkKICAgICBzZXRoZWxwZXIoKQotICAgIGVuYWJsZXJsY29tcGxldGVyKCkKLSAgICBhbGlhc21iY3MoKQorICAgIGlmIG5vdCBzeXMuZmxhZ3MuaXNvbGF0ZWQ6CisgICAgICAgIGVuYWJsZXJsY29tcGxldGVyKCkKICAgICBleGVjc2l0ZWN1c3RvbWl6ZSgpCiAgICAgaWYgRU5BQkxFX1VTRVJfU0lURToKICAgICAgICAgZXhlY3VzZXJjdXN0b21pemUoKQogCi0jIFByZXZlbnQgZWRpdGlvbiBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAorIyBQcmV2ZW50IGV4dGVuZGluZyBvZiBzeXMucGF0aCB3aGVuIHB5dGhvbiB3YXMgc3RhcnRlZCB3aXRoIC1TIGFuZAogIyBzaXRlIGlzIGltcG9ydGVkIGxhdGVyLgogaWYgbm90IHN5cy5mbGFncy5ub19zaXRlOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3NtdHBkLnB5IGIvTGliL3NtdHBkLnB5CmluZGV4IDczMjA2NmUuLjgxMDNjYTkgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwZC5weQorKysgYi9MaWIvc210cGQucHkKQEAgLTg5LDcgKzg5LDEwIEBACiBmcm9tIHdhcm5pbmdzIGltcG9ydCB3YXJuCiBmcm9tIGVtYWlsLl9oZWFkZXJfdmFsdWVfcGFyc2VyIGltcG9ydCBnZXRfYWRkcl9zcGVjLCBnZXRfYW5nbGVfYWRkcgogCi1fX2FsbF9fID0gWyJTTVRQU2VydmVyIiwiRGVidWdnaW5nU2VydmVyIiwiUHVyZVByb3h5IiwiTWFpbG1hblByb3h5Il0KK19fYWxsX18gPSBbCisgICAgIlNNVFBDaGFubmVsIiwgIlNNVFBTZXJ2ZXIiLCAiRGVidWdnaW5nU2VydmVyIiwgIlB1cmVQcm94eSIsCisgICAgIk1haWxtYW5Qcm94eSIsCitdCiAKIHByb2dyYW0gPSBzeXMuYXJndlswXQogX192ZXJzaW9uX18gPSAnUHl0aG9uIFNNVFAgcHJveHkgdmVyc2lvbiAwLjMnCkBAIC0xMjgsMjQgKzEzMSwxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNlbGYuY29tbWFuZF9zaXplX2xpbWl0CiAKICAgICBkZWYgX19pbml0X18oc2VsZiwgc2VydmVyLCBjb25uLCBhZGRyLCBkYXRhX3NpemVfbGltaXQ9REFUQV9TSVpFX0RFRkFVTFQsCi0gICAgICAgICAgICAgICAgIG1hcD1Ob25lLCBlbmFibGVfU01UUFVURjg9RmFsc2UsIGRlY29kZV9kYXRhPU5vbmUpOgorICAgICAgICAgICAgICAgICBtYXA9Tm9uZSwgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIGFzeW5jaGF0LmFzeW5jX2NoYXQuX19pbml0X18oc2VsZiwgY29ubiwgbWFwPW1hcCkKICAgICAgICAgc2VsZi5zbXRwX3NlcnZlciA9IHNlcnZlcgogICAgICAgICBzZWxmLmNvbm4gPSBjb25uCiAgICAgICAgIHNlbGYuYWRkciA9IGFkZHIKICAgICAgICAgc2VsZi5kYXRhX3NpemVfbGltaXQgPSBkYXRhX3NpemVfbGltaXQKICAgICAgICAgc2VsZi5lbmFibGVfU01UUFVURjggPSBlbmFibGVfU01UUFVURjgKLSAgICAgICAgaWYgZW5hYmxlX1NNVFBVVEY4OgotICAgICAgICAgICAgaWYgZGVjb2RlX2RhdGE6Ci0gICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiIGJlIHNldCB0byBUcnVlIGF0IHRoZSBzYW1lIHRpbWUiKQotICAgICAgICAgICAgZGVjb2RlX2RhdGEgPSBGYWxzZQotICAgICAgICBpZiBkZWNvZGVfZGF0YSBpcyBOb25lOgotICAgICAgICAgICAgd2FybigiVGhlIGRlY29kZV9kYXRhIGRlZmF1bHQgb2YgVHJ1ZSB3aWxsIGNoYW5nZSB0byBGYWxzZSBpbiAzLjY7IgotICAgICAgICAgICAgICAgICAiIHNwZWNpZnkgYW4gZXhwbGljaXQgdmFsdWUgZm9yIHRoaXMga2V5d29yZCIsCi0gICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgMikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gVHJ1ZQogICAgICAgICBzZWxmLl9kZWNvZGVfZGF0YSA9IGRlY29kZV9kYXRhCisgICAgICAgIGlmIGVuYWJsZV9TTVRQVVRGOCBhbmQgZGVjb2RlX2RhdGE6CisgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJkZWNvZGVfZGF0YSBhbmQgZW5hYmxlX1NNVFBVVEY4IGNhbm5vdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBiZSBzZXQgdG8gVHJ1ZSBhdCB0aGUgc2FtZSB0aW1lIikKICAgICAgICAgaWYgZGVjb2RlX2RhdGE6CiAgICAgICAgICAgICBzZWxmLl9lbXB0eXN0cmluZyA9ICcnCiAgICAgICAgICAgICBzZWxmLl9saW5lc2VwID0gJ1xyXG4nCkBAIC02MzUsMjMgKzYzMSwxNSBAQAogCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGxvY2FsYWRkciwgcmVtb3RlYWRkciwKICAgICAgICAgICAgICAgICAgZGF0YV9zaXplX2xpbWl0PURBVEFfU0laRV9ERUZBVUxULCBtYXA9Tm9uZSwKLSAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1Ob25lKToKKyAgICAgICAgICAgICAgICAgZW5hYmxlX1NNVFBVVEY4PUZhbHNlLCBkZWNvZGVfZGF0YT1GYWxzZSk6CiAgICAgICAgIHNlbGYuX2xvY2FsYWRkciA9IGxvY2FsYWRkcgogICAgICAgICBzZWxmLl9yZW1vdGVhZGRyID0gcmVtb3RlYWRkcgogICAgICAgICBzZWxmLmRhdGFfc2l6ZV9saW1pdCA9IGRhdGFfc2l6ZV9saW1pdAogICAgICAgICBzZWxmLmVuYWJsZV9TTVRQVVRGOCA9IGVuYWJsZV9TTVRQVVRGOAotICAgICAgICBpZiBlbmFibGVfU01UUFVURjg6Ci0gICAgICAgICAgICBpZiBkZWNvZGVfZGF0YToKLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJUaGUgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgcGFyYW1ldGVycyBjYW5ub3QgYmUgc2V0IHRvIFRydWUgYXQgdGhlIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzYW1lIHRpbWUuIikKLSAgICAgICAgICAgIGRlY29kZV9kYXRhID0gRmFsc2UKLSAgICAgICAgaWYgZGVjb2RlX2RhdGEgaXMgTm9uZToKLSAgICAgICAgICAgIHdhcm4oIlRoZSBkZWNvZGVfZGF0YSBkZWZhdWx0IG9mIFRydWUgd2lsbCBjaGFuZ2UgdG8gRmFsc2UgaW4gMy42OyIKLSAgICAgICAgICAgICAgICAgIiBzcGVjaWZ5IGFuIGV4cGxpY2l0IHZhbHVlIGZvciB0aGlzIGtleXdvcmQiLAotICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDIpCi0gICAgICAgICAgICBkZWNvZGVfZGF0YSA9IFRydWUKICAgICAgICAgc2VsZi5fZGVjb2RlX2RhdGEgPSBkZWNvZGVfZGF0YQorICAgICAgICBpZiBlbmFibGVfU01UUFVURjggYW5kIGRlY29kZV9kYXRhOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBjYW5ub3QiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgYmUgc2V0IHRvIFRydWUgYXQgdGhlIHNhbWUgdGltZSIpCiAgICAgICAgIGFzeW5jb3JlLmRpc3BhdGNoZXIuX19pbml0X18oc2VsZiwgbWFwPW1hcCkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZ2FpX3Jlc3VsdHMgPSBzb2NrZXQuZ2V0YWRkcmluZm8oKmxvY2FsYWRkciwKQEAgLTY5OCw5ICs2ODYsOSBAQAogICAgICAgICBjb250YWluaW5nIGEgYC4nIGZvbGxvd2VkIGJ5IG90aGVyIHRleHQgaGFzIGhhZCB0aGUgbGVhZGluZyBkb3QKICAgICAgICAgcmVtb3ZlZC4KIAotICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gSXQgaXMgZW1wdHkKLSAgICAgICAgdW5sZXNzIGRlY29kZV9kYXRhPUZhbHNlIG9yIGVuYWJsZV9TTVRQVVRGOD1UcnVlIHdhcyBnaXZlbiBhcyBpbml0Ci0gICAgICAgIHBhcmFtZXRlciwgaW4gd2hpY2ggY2FzZSB1dCB3aWxsIGNvbnRhaW4gdGhlIGZvbGxvd2luZyBrZXlzOgorICAgICAgICBrd2FyZ3MgaXMgYSBkaWN0aW9uYXJ5IGNvbnRhaW5pbmcgYWRkaXRpb25hbCBpbmZvcm1hdGlvbi4gIEl0IGlzCisgICAgICAgIGVtcHR5IGlmIGRlY29kZV9kYXRhPVRydWUgd2FzIGdpdmVuIGFzIGluaXQgcGFyYW1ldGVyLCBvdGhlcndpc2UKKyAgICAgICAgaXQgd2lsbCBjb250YWluIHRoZSBmb2xsb3dpbmcga2V5czoKICAgICAgICAgICAgICdtYWlsX29wdGlvbnMnOiBsaXN0IG9mIHBhcmFtZXRlcnMgdG8gdGhlIG1haWwgY29tbWFuZC4gIEFsbAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW1lbnRzIGFyZSB1cHBlcmNhc2Ugc3RyaW5ncy4gIEV4YW1wbGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydCT0RZPThCSVRNSU1FJywgJ1NNVFBVVEY4J10uCmRpZmYgLS1naXQgYS9MaWIvc210cGxpYi5weSBiL0xpYi9zbXRwbGliLnB5CmluZGV4IDViOWU2NjUuLmY3YzJjNzcgMTAwNzU1Ci0tLSBhL0xpYi9zbXRwbGliLnB5CisrKyBiL0xpYi9zbXRwbGliLnB5CkBAIC03NTksNiArNzU5LDEwIEBACiAgICAgICAgICAgICBpZiBjb250ZXh0IGlzIG5vdCBOb25lIGFuZCBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJjb250ZXh0IGFuZCBjZXJ0ZmlsZSBhcmd1bWVudHMgYXJlIG11dHVhbGx5ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleGNsdXNpdmUiKQorICAgICAgICAgICAgaWYga2V5ZmlsZSBpcyBub3QgTm9uZSBvciBjZXJ0ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKCJrZXlmaWxlIGFuZCBjZXJ0ZmlsZSBhcmUgZGVwcmVjYXRlZCwgdXNlIGEiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY3VzdG9tIGNvbnRleHQgaW5zdGVhZCIsIERlcHJlY2F0aW9uV2FybmluZywgMikKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBjb250ZXh0ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGtleWZpbGU9a2V5ZmlsZSkKQEAgLTEwMTEsNiArMTAxNSwxMCBAQAogICAgICAgICAgICAgaWYgY29udGV4dCBpcyBub3QgTm9uZSBhbmQgY2VydGZpbGUgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY29udGV4dCBhbmQgY2VydGZpbGUgYXJndW1lbnRzIGFyZSBtdXR1YWxseSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhjbHVzaXZlIikKKyAgICAgICAgICAgIGlmIGtleWZpbGUgaXMgbm90IE5vbmUgb3IgY2VydGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgd2FybmluZ3Mud2Fybigia2V5ZmlsZSBhbmQgY2VydGZpbGUgYXJlIGRlcHJlY2F0ZWQsIHVzZSBhIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImN1c3RvbSBjb250ZXh0IGluc3RlYWQiLCBEZXByZWNhdGlvbldhcm5pbmcsIDIpCiAgICAgICAgICAgICBzZWxmLmtleWZpbGUgPSBrZXlmaWxlCiAgICAgICAgICAgICBzZWxmLmNlcnRmaWxlID0gY2VydGZpbGUKICAgICAgICAgICAgIGlmIGNvbnRleHQgaXMgTm9uZToKZGlmZiAtLWdpdCBhL0xpYi9zbmRoZHIucHkgYi9MaWIvc25kaGRyLnB5CmluZGV4IGU1OTAxZWMuLjdlY2FmYjQgMTAwNjQ0Ci0tLSBhL0xpYi9zbmRoZHIucHkKKysrIGIvTGliL3NuZGhkci5weQpAQCAtMzcsNiArMzcsMTggQEAKIFNuZEhlYWRlcnMgPSBuYW1lZHR1cGxlKCdTbmRIZWFkZXJzJywKICAgICAgICAgICAgICAgICAgICAgICAgICdmaWxldHlwZSBmcmFtZXJhdGUgbmNoYW5uZWxzIG5mcmFtZXMgc2FtcHdpZHRoJykKIAorU25kSGVhZGVycy5maWxldHlwZS5fX2RvY19fID0gKCIiIlRoZSB2YWx1ZSBmb3IgdHlwZSBpbmRpY2F0ZXMgdGhlIGRhdGEgdHlwZQorYW5kIHdpbGwgYmUgb25lIG9mIHRoZSBzdHJpbmdzICdhaWZjJywgJ2FpZmYnLCAnYXUnLCdoY29tJywKKydzbmRyJywgJ3NuZHQnLCAndm9jJywgJ3dhdicsICc4c3Z4JywgJ3NiJywgJ3ViJywgb3IgJ3VsJy4iIiIpCitTbmRIZWFkZXJzLmZyYW1lcmF0ZS5fX2RvY19fID0gKCIiIlRoZSBzYW1wbGluZ19yYXRlIHdpbGwgYmUgZWl0aGVyIHRoZSBhY3R1YWwKK3ZhbHVlIG9yIDAgaWYgdW5rbm93biBvciBkaWZmaWN1bHQgdG8gZGVjb2RlLiIiIikKK1NuZEhlYWRlcnMubmNoYW5uZWxzLl9fZG9jX18gPSAoIiIiVGhlIG51bWJlciBvZiBjaGFubmVscyBvciAwIGlmIGl0IGNhbm5vdCBiZQorZGV0ZXJtaW5lZCBvciBpZiB0aGUgdmFsdWUgaXMgZGlmZmljdWx0IHRvIGRlY29kZS4iIiIpCitTbmRIZWFkZXJzLm5mcmFtZXMuX19kb2NfXyA9ICgiIiJUaGUgdmFsdWUgZm9yIGZyYW1lcyB3aWxsIGJlIGVpdGhlciB0aGUgbnVtYmVyCitvZiBmcmFtZXMgb3IgLTEuIiIiKQorU25kSGVhZGVycy5zYW1wd2lkdGguX19kb2NfXyA9ICgiIiJFaXRoZXIgdGhlIHNhbXBsZSBzaXplIGluIGJpdHMgb3IKKydBJyBmb3IgQS1MQVcgb3IgJ1UnIGZvciB1LUxBVy4iIiIpCisKIGRlZiB3aGF0KGZpbGVuYW1lKToKICAgICAiIiJHdWVzcyB0aGUgdHlwZSBvZiBhIHNvdW5kIGZpbGUuIiIiCiAgICAgcmVzID0gd2hhdGhkcihmaWxlbmFtZSkKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXQucHkgYi9MaWIvc29ja2V0LnB5CmluZGV4IGE5Y2FiMzIuLjc0MGU3MTcgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXQucHkKKysrIGIvTGliL3NvY2tldC5weQpAQCAtNTAsNyArNTAsNyBAQAogZnJvbSBfc29ja2V0IGltcG9ydCAqCiAKIGltcG9ydCBvcywgc3lzLCBpbywgc2VsZWN0b3JzCi1mcm9tIGVudW0gaW1wb3J0IEludEVudW0KK2Zyb20gZW51bSBpbXBvcnQgSW50RW51bSwgSW50RmxhZwogCiB0cnk6CiAgICAgaW1wb3J0IGVycm5vCkBAIC04MCw2ICs4MCwxNiBAQAogICAgICAgICBfX25hbWVfXywKICAgICAgICAgbGFtYmRhIEM6IEMuaXN1cHBlcigpIGFuZCBDLnN0YXJ0c3dpdGgoJ1NPQ0tfJykpCiAKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdNc2dGbGFnJywKKyAgICAgICAgX19uYW1lX18sCisgICAgICAgIGxhbWJkYSBDOiBDLmlzdXBwZXIoKSBhbmQgQy5zdGFydHN3aXRoKCdNU0dfJykpCisKK0ludEZsYWcuX2NvbnZlcnQoCisgICAgICAgICdBZGRyZXNzSW5mbycsCisgICAgICAgIF9fbmFtZV9fLAorICAgICAgICBsYW1iZGEgQzogQy5pc3VwcGVyKCkgYW5kIEMuc3RhcnRzd2l0aCgnQUlfJykpCisKIF9MT0NBTEhPU1QgICAgPSAnMTI3LjAuMC4xJwogX0xPQ0FMSE9TVF9WNiA9ICc6OjEnCiAKZGlmZiAtLWdpdCBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvc29ja2V0c2VydmVyLnB5CmluZGV4IDg4MDg4MTMuLjQxYTM3NjYgMTAwNjQ0Ci0tLSBhL0xpYi9zb2NrZXRzZXJ2ZXIucHkKKysrIGIvTGliL3NvY2tldHNlcnZlci5weQpAQCAtMTI3LDE2ICsxMjcsMjAgQEAKIGltcG9ydCBzZWxlY3RvcnMKIGltcG9ydCBvcwogaW1wb3J0IGVycm5vCitpbXBvcnQgc3lzCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIGltcG9ydCBkdW1teV90aHJlYWRpbmcgYXMgdGhyZWFkaW5nCitmcm9tIGlvIGltcG9ydCBCdWZmZXJlZElPQmFzZQogZnJvbSB0aW1lIGltcG9ydCBtb25vdG9uaWMgYXMgdGltZQogCi1fX2FsbF9fID0gWyJCYXNlU2VydmVyIiwgIlRDUFNlcnZlciIsICJVRFBTZXJ2ZXIiLCAiRm9ya2luZ1VEUFNlcnZlciIsCi0gICAgICAgICAgICJGb3JraW5nVENQU2VydmVyIiwgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAorX19hbGxfXyA9IFsiQmFzZVNlcnZlciIsICJUQ1BTZXJ2ZXIiLCAiVURQU2VydmVyIiwKKyAgICAgICAgICAgIlRocmVhZGluZ1VEUFNlcnZlciIsICJUaHJlYWRpbmdUQ1BTZXJ2ZXIiLAogICAgICAgICAgICAiQmFzZVJlcXVlc3RIYW5kbGVyIiwgIlN0cmVhbVJlcXVlc3RIYW5kbGVyIiwKLSAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iLCAiRm9ya2luZ01peEluIl0KKyAgICAgICAgICAgIkRhdGFncmFtUmVxdWVzdEhhbmRsZXIiLCAiVGhyZWFkaW5nTWl4SW4iXQoraWYgaGFzYXR0cihvcywgImZvcmsiKToKKyAgICBfX2FsbF9fLmV4dGVuZChbIkZvcmtpbmdVRFBTZXJ2ZXIiLCJGb3JraW5nVENQU2VydmVyIiwgIkZvcmtpbmdNaXhJbiJdKQogaWYgaGFzYXR0cihzb2NrZXQsICJBRl9VTklYIik6CiAgICAgX19hbGxfXy5leHRlbmQoWyJVbml4U3RyZWFtU2VydmVyIiwiVW5peERhdGFncmFtU2VydmVyIiwKICAgICAgICAgICAgICAgICAgICAgIlRocmVhZGluZ1VuaXhTdHJlYW1TZXJ2ZXIiLApAQCAtMzExLDkgKzMxNSwxMiBAQAogICAgICAgICBpZiBzZWxmLnZlcmlmeV9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzZWxmLnByb2Nlc3NfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgc2VsZi5oYW5kbGVfZXJyb3IocmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpCiAgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgc2VsZi5zaHV0ZG93bl9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmFpc2UKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCkBAIC0zNjcsMTIgKzM3NCwxOCBAQAogICAgICAgICBUaGUgZGVmYXVsdCBpcyB0byBwcmludCBhIHRyYWNlYmFjayBhbmQgY29udGludWUuCiAKICAgICAgICAgIiIiCi0gICAgICAgIHByaW50KCctJyo0MCkKLSAgICAgICAgcHJpbnQoJ0V4Y2VwdGlvbiBoYXBwZW5lZCBkdXJpbmcgcHJvY2Vzc2luZyBvZiByZXF1ZXN0IGZyb20nLCBlbmQ9JyAnKQotICAgICAgICBwcmludChjbGllbnRfYWRkcmVzcykKKyAgICAgICAgcHJpbnQoJy0nKjQwLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgIHByaW50KCdFeGNlcHRpb24gaGFwcGVuZWQgZHVyaW5nIHByb2Nlc3Npbmcgb2YgcmVxdWVzdCBmcm9tJywKKyAgICAgICAgICAgIGNsaWVudF9hZGRyZXNzLCBmaWxlPXN5cy5zdGRlcnIpCiAgICAgICAgIGltcG9ydCB0cmFjZWJhY2sKLSAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpICMgWFhYIEJ1dCB0aGlzIGdvZXMgdG8gc3RkZXJyIQotICAgICAgICBwcmludCgnLScqNDApCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgICAgICBwcmludCgnLScqNDAsIGZpbGU9c3lzLnN0ZGVycikKKworICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgIHJldHVybiBzZWxmCisKKyAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAKIAogY2xhc3MgVENQU2VydmVyKEJhc2VTZXJ2ZXIpOgpAQCAtNTI3LDg1ICs1NDAsODYgQEAKICAgICAgICAgIyBObyBuZWVkIHRvIGNsb3NlIGFueXRoaW5nLgogICAgICAgICBwYXNzCiAKLWNsYXNzIEZvcmtpbmdNaXhJbjoKK2lmIGhhc2F0dHIob3MsICJmb3JrIik6CisgICAgY2xhc3MgRm9ya2luZ01peEluOgorICAgICAgICAiIiJNaXgtaW4gY2xhc3MgdG8gaGFuZGxlIGVhY2ggcmVxdWVzdCBpbiBhIG5ldyBwcm9jZXNzLiIiIgogCi0gICAgIiIiTWl4LWluIGNsYXNzIHRvIGhhbmRsZSBlYWNoIHJlcXVlc3QgaW4gYSBuZXcgcHJvY2Vzcy4iIiIKKyAgICAgICAgdGltZW91dCA9IDMwMAorICAgICAgICBhY3RpdmVfY2hpbGRyZW4gPSBOb25lCisgICAgICAgIG1heF9jaGlsZHJlbiA9IDQwCiAKLSAgICB0aW1lb3V0ID0gMzAwCi0gICAgYWN0aXZlX2NoaWxkcmVuID0gTm9uZQotICAgIG1heF9jaGlsZHJlbiA9IDQwCi0KLSAgICBkZWYgY29sbGVjdF9jaGlsZHJlbihzZWxmKToKLSAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgotICAgICAgICBpZiBzZWxmLmFjdGl2ZV9jaGlsZHJlbiBpcyBOb25lOgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgIyBJZiB3ZSdyZSBhYm92ZSB0aGUgbWF4IG51bWJlciBvZiBjaGlsZHJlbiwgd2FpdCBhbmQgcmVhcCB0aGVtIHVudGlsCi0gICAgICAgICMgd2UgZ28gYmFjayBiZWxvdyB0aHJlc2hvbGQuIE5vdGUgdGhhdCB3ZSB1c2Ugd2FpdHBpZCgtMSkgYmVsb3cgdG8gYmUKLSAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKLSAgICAgICAgIyBvZiBzaXplKDxjaGlsZHJlbj4pOiB0aGUgZG93bnNpZGUgaXMgdGhhdCB0aGlzIG1pZ2h0IHJlYXAgY2hpbGRyZW4KLSAgICAgICAgIyB3aGljaCB3ZSBkaWRuJ3Qgc3Bhd24sIHdoaWNoIGlzIHdoeSB3ZSBvbmx5IHJlc29ydCB0byB0aGlzIHdoZW4gd2UncmUKLSAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCi0gICAgICAgIHdoaWxlIGxlbihzZWxmLmFjdGl2ZV9jaGlsZHJlbikgPj0gc2VsZi5tYXhfY2hpbGRyZW46Ci0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5kaXNjYXJkKHBpZCkKLSAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKLSAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCi0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uY2xlYXIoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLQotICAgICAgICAjIE5vdyByZWFwIGFsbCBkZWZ1bmN0IGNoaWxkcmVuLgotICAgICAgICBmb3IgcGlkIGluIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNvcHkoKToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBwaWQsIF8gPSBvcy53YWl0cGlkKHBpZCwgb3MuV05PSEFORykKLSAgICAgICAgICAgICAgICAjIGlmIHRoZSBjaGlsZCBoYXNuJ3QgZXhpdGVkIHlldCwgcGlkIHdpbGwgYmUgMCBhbmQgaWdub3JlZCBieQotICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgQ2hpbGRQcm9jZXNzRXJyb3I6Ci0gICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0Ci0gICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKLSAgICAgICAgICAgICAgICBwYXNzCi0KLSAgICBkZWYgaGFuZGxlX3RpbWVvdXQoc2VsZik6Ci0gICAgICAgICIiIldhaXQgZm9yIHpvbWJpZXMgYWZ0ZXIgc2VsZi50aW1lb3V0IHNlY29uZHMgb2YgaW5hY3Rpdml0eS4KLQotICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgotICAgICAgICAiIiJDb2xsZWN0IHRoZSB6b21iaWUgY2hpbGQgcHJvY2Vzc2VzIHJlZ3VsYXJseSBpbiB0aGUgRm9ya2luZ01peEluLgotCi0gICAgICAgIHNlcnZpY2VfYWN0aW9ucyBpcyBjYWxsZWQgaW4gdGhlIEJhc2VTZXJ2ZXIncyBzZXJ2ZV9mb3J2ZXIgbG9vcC4KLSAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuY29sbGVjdF9jaGlsZHJlbigpCi0KLSAgICBkZWYgcHJvY2Vzc19yZXF1ZXN0KHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKLSAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCi0gICAgICAgIHBpZCA9IG9zLmZvcmsoKQotICAgICAgICBpZiBwaWQ6Ci0gICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgIGRlZiBjb2xsZWN0X2NoaWxkcmVuKHNlbGYpOgorICAgICAgICAgICAgIiIiSW50ZXJuYWwgcm91dGluZSB0byB3YWl0IGZvciBjaGlsZHJlbiB0aGF0IGhhdmUgZXhpdGVkLiIiIgogICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKLSAgICAgICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbiA9IHNldCgpCi0gICAgICAgICAgICBzZWxmLmFjdGl2ZV9jaGlsZHJlbi5hZGQocGlkKQotICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCi0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KLSAgICAgICAgICAgICMgVGhpcyBtdXN0IG5ldmVyIHJldHVybiwgaGVuY2Ugb3MuX2V4aXQoKSEKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmZpbmlzaF9yZXF1ZXN0KHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICAgICAgICAgIG9zLl9leGl0KDApCi0gICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgICAgICMgSWYgd2UncmUgYWJvdmUgdGhlIG1heCBudW1iZXIgb2YgY2hpbGRyZW4sIHdhaXQgYW5kIHJlYXAgdGhlbSB1bnRpbAorICAgICAgICAgICAgIyB3ZSBnbyBiYWNrIGJlbG93IHRocmVzaG9sZC4gTm90ZSB0aGF0IHdlIHVzZSB3YWl0cGlkKC0xKSBiZWxvdyB0byBiZQorICAgICAgICAgICAgIyBhYmxlIHRvIGNvbGxlY3QgY2hpbGRyZW4gaW4gc2l6ZSg8ZGVmdW5jdCBjaGlsZHJlbj4pIHN5c2NhbGxzIGluc3RlYWQKKyAgICAgICAgICAgICMgb2Ygc2l6ZSg8Y2hpbGRyZW4+KTogdGhlIGRvd25zaWRlIGlzIHRoYXQgdGhpcyBtaWdodCByZWFwIGNoaWxkcmVuCisgICAgICAgICAgICAjIHdoaWNoIHdlIGRpZG4ndCBzcGF3biwgd2hpY2ggaXMgd2h5IHdlIG9ubHkgcmVzb3J0IHRvIHRoaXMgd2hlbiB3ZSdyZQorICAgICAgICAgICAgIyBhYm92ZSBtYXhfY2hpbGRyZW4uCisgICAgICAgICAgICB3aGlsZSBsZW4oc2VsZi5hY3RpdmVfY2hpbGRyZW4pID49IHNlbGYubWF4X2NoaWxkcmVuOgogICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZCgtMSwgMCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4uZGlzY2FyZChwaWQpCisgICAgICAgICAgICAgICAgZXhjZXB0IENoaWxkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgICAgICAgICAjIHdlIGRvbid0IGhhdmUgYW55IGNoaWxkcmVuLCB3ZSdyZSBkb25lCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgIyBOb3cgcmVhcCBhbGwgZGVmdW5jdCBjaGlsZHJlbi4KKyAgICAgICAgICAgIGZvciBwaWQgaW4gc2VsZi5hY3RpdmVfY2hpbGRyZW4uY29weSgpOgorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgcGlkLCBfID0gb3Mud2FpdHBpZChwaWQsIG9zLldOT0hBTkcpCisgICAgICAgICAgICAgICAgICAgICMgaWYgdGhlIGNoaWxkIGhhc24ndCBleGl0ZWQgeWV0LCBwaWQgd2lsbCBiZSAwIGFuZCBpZ25vcmVkIGJ5CisgICAgICAgICAgICAgICAgICAgICMgZGlzY2FyZCgpIGJlbG93CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGlsZFByb2Nlc3NFcnJvcjoKKyAgICAgICAgICAgICAgICAgICAgIyBzb21lb25lIGVsc2UgcmVhcGVkIGl0CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmRpc2NhcmQocGlkKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZGVmIGhhbmRsZV90aW1lb3V0KHNlbGYpOgorICAgICAgICAgICAgIiIiV2FpdCBmb3Igem9tYmllcyBhZnRlciBzZWxmLnRpbWVvdXQgc2Vjb25kcyBvZiBpbmFjdGl2aXR5LgorCisgICAgICAgICAgICBNYXkgYmUgZXh0ZW5kZWQsIGRvIG5vdCBvdmVycmlkZS4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgc2VsZi5jb2xsZWN0X2NoaWxkcmVuKCkKKworICAgICAgICBkZWYgc2VydmljZV9hY3Rpb25zKHNlbGYpOgorICAgICAgICAgICAgIiIiQ29sbGVjdCB0aGUgem9tYmllIGNoaWxkIHByb2Nlc3NlcyByZWd1bGFybHkgaW4gdGhlIEZvcmtpbmdNaXhJbi4KKworICAgICAgICAgICAgc2VydmljZV9hY3Rpb25zIGlzIGNhbGxlZCBpbiB0aGUgQmFzZVNlcnZlcidzIHNlcnZlX2ZvcnZlciBsb29wLgorICAgICAgICAgICAgIiIiCisgICAgICAgICAgICBzZWxmLmNvbGxlY3RfY2hpbGRyZW4oKQorCisgICAgICAgIGRlZiBwcm9jZXNzX3JlcXVlc3Qoc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICAgICAgIiIiRm9yayBhIG5ldyBzdWJwcm9jZXNzIHRvIHByb2Nlc3MgdGhlIHJlcXVlc3QuIiIiCisgICAgICAgICAgICBwaWQgPSBvcy5mb3JrKCkKKyAgICAgICAgICAgIGlmIHBpZDoKKyAgICAgICAgICAgICAgICAjIFBhcmVudCBwcm9jZXNzCisgICAgICAgICAgICAgICAgaWYgc2VsZi5hY3RpdmVfY2hpbGRyZW4gaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hY3RpdmVfY2hpbGRyZW4gPSBzZXQoKQorICAgICAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmFkZChwaWQpCisgICAgICAgICAgICAgICAgc2VsZi5jbG9zZV9yZXF1ZXN0KHJlcXVlc3QpCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgQ2hpbGQgcHJvY2Vzcy4KKyAgICAgICAgICAgICAgICAjIFRoaXMgbXVzdCBuZXZlciByZXR1cm4sIGhlbmNlIG9zLl9leGl0KCkhCisgICAgICAgICAgICAgICAgc3RhdHVzID0gMQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgICAgICAgICAgICAgc3RhdHVzID0gMAorICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuaGFuZGxlX2Vycm9yKHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKQotICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKICAgICAgICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgICAgICBvcy5fZXhpdCgxKQorICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNodXRkb3duX3JlcXVlc3QocmVxdWVzdCkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9zLl9leGl0KHN0YXR1cykKIAogCiBjbGFzcyBUaHJlYWRpbmdNaXhJbjoKQEAgLTYyMyw5ICs2MzcsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5maW5pc2hfcmVxdWVzdChyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKLSAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQotICAgICAgICBleGNlcHQ6CisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb246CiAgICAgICAgICAgICBzZWxmLmhhbmRsZV9lcnJvcihyZXF1ZXN0LCBjbGllbnRfYWRkcmVzcykKKyAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIHNlbGYuc2h1dGRvd25fcmVxdWVzdChyZXF1ZXN0KQogCiAgICAgZGVmIHByb2Nlc3NfcmVxdWVzdChzZWxmLCByZXF1ZXN0LCBjbGllbnRfYWRkcmVzcyk6CkBAIC02MzYsOCArNjUwLDkgQEAKICAgICAgICAgdC5zdGFydCgpCiAKIAotY2xhc3MgRm9ya2luZ1VEUFNlcnZlcihGb3JraW5nTWl4SW4sIFVEUFNlcnZlcik6IHBhc3MKLWNsYXNzIEZvcmtpbmdUQ1BTZXJ2ZXIoRm9ya2luZ01peEluLCBUQ1BTZXJ2ZXIpOiBwYXNzCitpZiBoYXNhdHRyKG9zLCAiZm9yayIpOgorICAgIGNsYXNzIEZvcmtpbmdVRFBTZXJ2ZXIoRm9ya2luZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCisgICAgY2xhc3MgRm9ya2luZ1RDUFNlcnZlcihGb3JraW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKIAogY2xhc3MgVGhyZWFkaW5nVURQU2VydmVyKFRocmVhZGluZ01peEluLCBVRFBTZXJ2ZXIpOiBwYXNzCiBjbGFzcyBUaHJlYWRpbmdUQ1BTZXJ2ZXIoVGhyZWFkaW5nTWl4SW4sIFRDUFNlcnZlcik6IHBhc3MKQEAgLTcyOSw3ICs3NDQsMTAgQEAKICAgICAgICAgICAgIHNlbGYuY29ubmVjdGlvbi5zZXRzb2Nrb3B0KHNvY2tldC5JUFBST1RPX1RDUCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5UQ1BfTk9ERUxBWSwgVHJ1ZSkKICAgICAgICAgc2VsZi5yZmlsZSA9IHNlbGYuY29ubmVjdGlvbi5tYWtlZmlsZSgncmInLCBzZWxmLnJidWZzaXplKQotICAgICAgICBzZWxmLndmaWxlID0gc2VsZi5jb25uZWN0aW9uLm1ha2VmaWxlKCd3YicsIHNlbGYud2J1ZnNpemUpCisgICAgICAgIGlmIHNlbGYud2J1ZnNpemUgPT0gMDoKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBfU29ja2V0V3JpdGVyKHNlbGYuY29ubmVjdGlvbikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud2ZpbGUgPSBzZWxmLmNvbm5lY3Rpb24ubWFrZWZpbGUoJ3diJywgc2VsZi53YnVmc2l6ZSkKIAogICAgIGRlZiBmaW5pc2goc2VsZik6CiAgICAgICAgIGlmIG5vdCBzZWxmLndmaWxlLmNsb3NlZDoKQEAgLTc0Miw2ICs3NjAsMjQgQEAKICAgICAgICAgc2VsZi53ZmlsZS5jbG9zZSgpCiAgICAgICAgIHNlbGYucmZpbGUuY2xvc2UoKQogCitjbGFzcyBfU29ja2V0V3JpdGVyKEJ1ZmZlcmVkSU9CYXNlKToKKyAgICAiIiJTaW1wbGUgd3JpdGFibGUgQnVmZmVyZWRJT0Jhc2UgaW1wbGVtZW50YXRpb24gZm9yIGEgc29ja2V0CisKKyAgICBEb2VzIG5vdCBob2xkIGRhdGEgaW4gYSBidWZmZXIsIGF2b2lkaW5nIGFueSBuZWVkIHRvIGNhbGwgZmx1c2goKS4iIiIKKworICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzb2NrKToKKyAgICAgICAgc2VsZi5fc29jayA9IHNvY2sKKworICAgIGRlZiB3cml0YWJsZShzZWxmKToKKyAgICAgICAgcmV0dXJuIFRydWUKKworICAgIGRlZiB3cml0ZShzZWxmLCBiKToKKyAgICAgICAgc2VsZi5fc29jay5zZW5kYWxsKGIpCisgICAgICAgIHdpdGggbWVtb3J5dmlldyhiKSBhcyB2aWV3OgorICAgICAgICAgICAgcmV0dXJuIHZpZXcubmJ5dGVzCisKKyAgICBkZWYgZmlsZW5vKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5fc29jay5maWxlbm8oKQogCiBjbGFzcyBEYXRhZ3JhbVJlcXVlc3RIYW5kbGVyKEJhc2VSZXF1ZXN0SGFuZGxlcik6CiAKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkgYi9MaWIvc3FsaXRlMy90ZXN0L2RiYXBpLnB5CmluZGV4IDdmYjhkN2UuLmNiODU4MTQgMTAwNjQ0Ci0tLSBhL0xpYi9zcWxpdGUzL3Rlc3QvZGJhcGkucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC9kYmFwaS5weQpAQCAtMTg4LDcgKzE4OCwxMCBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5jeCA9IHNxbGl0ZS5jb25uZWN0KCI6bWVtb3J5OiIpCiAgICAgICAgIHNlbGYuY3UgPSBzZWxmLmN4LmN1cnNvcigpCi0gICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaWQgaW50ZWdlciBwcmltYXJ5IGtleSwgbmFtZSB0ZXh0LCBpbmNvbWUgbnVtYmVyKSIpCisgICAgICAgIHNlbGYuY3UuZXhlY3V0ZSgKKyAgICAgICAgICAgICJjcmVhdGUgdGFibGUgdGVzdChpZCBpbnRlZ2VyIHByaW1hcnkga2V5LCBuYW1lIHRleHQsICIKKyAgICAgICAgICAgICJpbmNvbWUgbnVtYmVyLCB1bmlxdWVfdGVzdCB0ZXh0IHVuaXF1ZSkiCisgICAgICAgICkKICAgICAgICAgc2VsZi5jdS5leGVjdXRlKCJpbnNlcnQgaW50byB0ZXN0KG5hbWUpIHZhbHVlcyAoPykiLCAoImZvbyIsKSkKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTQ2Miw2ICs0NjUsNDQgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgogICAgICAgICAgICAgY3VyID0gc3FsaXRlLkN1cnNvcihmb28pCiAKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPblJlcGxhY2Uoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBJTlNFUlQgT1IgUkVQTEFDRSBhbmQgUkVQTEFDRSBJTlRPIHNob3VsZCBwcm9kdWNlIHRoZSBzYW1lIGJlaGF2aW9yLgorICAgICAgICAiIiIKKyAgICAgICAgc3FsID0gJ3t9IElOVE8gdGVzdChpZCwgdW5pcXVlX3Rlc3QpIFZBTFVFUyAoPywgPyknCisgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gKCdJTlNFUlQgT1IgUkVQTEFDRScsICdSRVBMQUNFJyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChzdGF0ZW1lbnQ9c3RhdGVtZW50KToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoMSwgJ2ZvbycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jdS5sYXN0cm93aWQsIDEpCisKKyAgICBkZWYgQ2hlY2tMYXN0Um93SURPbklnbm9yZShzZWxmKToKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKyAgICAgICAgc2VsZi5jdS5leGVjdXRlKAorICAgICAgICAgICAgImluc2VydCBvciBpZ25vcmUgaW50byB0ZXN0KHVuaXF1ZV90ZXN0KSB2YWx1ZXMgKD8pIiwKKyAgICAgICAgICAgICgndGVzdCcsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmN1Lmxhc3Ryb3dpZCwgMikKKworICAgIGRlZiBDaGVja0xhc3RSb3dJREluc2VydE9SKHNlbGYpOgorICAgICAgICByZXN1bHRzID0gW10KKyAgICAgICAgZm9yIHN0YXRlbWVudCBpbiAoJ0ZBSUwnLCAnQUJPUlQnLCAnUk9MTEJBQ0snKToKKyAgICAgICAgICAgIHNxbCA9ICdJTlNFUlQgT1Ige30gSU5UTyB0ZXN0KHVuaXF1ZV90ZXN0KSBWQUxVRVMgKD8pJworICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc3RhdGVtZW50PSdJTlNFUlQgT1Ige30nLmZvcm1hdChzdGF0ZW1lbnQpKToKKyAgICAgICAgICAgICAgICBzZWxmLmN1LmV4ZWN1dGUoc3FsLmZvcm1hdChzdGF0ZW1lbnQpLCAoc3RhdGVtZW50LCkpCisgICAgICAgICAgICAgICAgcmVzdWx0cy5hcHBlbmQoKHN0YXRlbWVudCwgc2VsZi5jdS5sYXN0cm93aWQpKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3FsaXRlLkludGVncml0eUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5jdS5leGVjdXRlKHNxbC5mb3JtYXQoc3RhdGVtZW50KSwgKHN0YXRlbWVudCwpKQorICAgICAgICAgICAgICAgIHJlc3VsdHMuYXBwZW5kKChzdGF0ZW1lbnQsIHNlbGYuY3UubGFzdHJvd2lkKSkKKyAgICAgICAgZXhwZWN0ZWQgPSBbCisgICAgICAgICAgICAoJ0ZBSUwnLCAyKSwgKCdGQUlMJywgMiksCisgICAgICAgICAgICAoJ0FCT1JUJywgMyksICgnQUJPUlQnLCAzKSwKKyAgICAgICAgICAgICgnUk9MTEJBQ0snLCA0KSwgKCdST0xMQkFDSycsIDQpLAorICAgICAgICBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0cywgZXhwZWN0ZWQpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhpcyB0ZXN0IHJlcXVpcmVzIHRocmVhZGluZy4nKQogY2xhc3MgVGhyZWFkVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi9zcWxpdGUzL3Rlc3QvdHJhbnNhY3Rpb25zLnB5IGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKaW5kZXggYTI1MzYwYS4uNDVmMWIwNCAxMDA2NDQKLS0tIGEvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKKysrIGIvTGliL3NxbGl0ZTMvdGVzdC90cmFuc2FjdGlvbnMucHkKQEAgLTUyLDEzICs1MiwxMyBAQAogICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgIHBhc3MKIAotICAgIGRlZiBDaGVja0RNTGRvZXNBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgorICAgIGRlZiBDaGVja0RNTERvZXNOb3RBdXRvQ29tbWl0QmVmb3JlKHNlbGYpOgogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQogICAgICAgICBzZWxmLmN1cjEuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKICAgICAgICAgc2VsZi5jdXIxLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0MihqKSIpCiAgICAgICAgIHNlbGYuY3VyMi5leGVjdXRlKCJzZWxlY3QgaSBmcm9tIHRlc3QiKQogICAgICAgICByZXMgPSBzZWxmLmN1cjIuZmV0Y2hhbGwoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZXMpLCAwKQogCiAgICAgZGVmIENoZWNrSW5zZXJ0U3RhcnRzVHJhbnNhY3Rpb24oc2VsZik6CiAgICAgICAgIHNlbGYuY3VyMS5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCkBAIC0xNTMsMTEgKzE1Myw2IEBACiAgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKICAgICAgICAgc2VsZi5jdXIgPSBzZWxmLmNvbi5jdXJzb3IoKQogCi0gICAgZGVmIENoZWNrVmFjdXVtKHNlbGYpOgotICAgICAgICBzZWxmLmN1ci5leGVjdXRlKCJjcmVhdGUgdGFibGUgdGVzdChpKSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImluc2VydCBpbnRvIHRlc3QoaSkgdmFsdWVzICg1KSIpCi0gICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoInZhY3V1bSIpCi0KICAgICBkZWYgQ2hlY2tEcm9wVGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuY3VyLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKICAgICAgICAgc2VsZi5jdXIuZXhlY3V0ZSgiaW5zZXJ0IGludG8gdGVzdChpKSB2YWx1ZXMgKDUpIikKQEAgLTE3MiwxMCArMTY3LDM1IEBACiAgICAgICAgIHNlbGYuY3VyLmNsb3NlKCkKICAgICAgICAgc2VsZi5jb24uY2xvc2UoKQogCitjbGFzcyBUcmFuc2FjdGlvbmFsRERMKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuY29uID0gc3FsaXRlLmNvbm5lY3QoIjptZW1vcnk6IikKKworICAgIGRlZiBDaGVja0RkbERvZXNOb3RBdXRvc3RhcnRUcmFuc2FjdGlvbihzZWxmKToKKyAgICAgICAgIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgcmVhc29ucywgRERMIHN0YXRlbWVudHMgc2hvdWxkIG5vdAorICAgICAgICAjIGltcGxpY2l0bHkgc3RhcnQgYSB0cmFuc2FjdGlvbi4KKyAgICAgICAgc2VsZi5jb24uZXhlY3V0ZSgiY3JlYXRlIHRhYmxlIHRlc3QoaSkiKQorICAgICAgICBzZWxmLmNvbi5yb2xsYmFjaygpCisgICAgICAgIHJlc3VsdCA9IHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpLmZldGNoYWxsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIFtdKQorCisgICAgZGVmIENoZWNrVHJhbnNhY3Rpb25hbERETChzZWxmKToKKyAgICAgICAgIyBZb3UgY2FuIGFjaGlldmUgdHJhbnNhY3Rpb25hbCBEREwgYnkgaXNzdWluZyBhIEJFR0lOCisgICAgICAgICMgc3RhdGVtZW50IG1hbnVhbGx5LgorICAgICAgICBzZWxmLmNvbi5leGVjdXRlKCJiZWdpbiIpCisgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoImNyZWF0ZSB0YWJsZSB0ZXN0KGkpIikKKyAgICAgICAgc2VsZi5jb24ucm9sbGJhY2soKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNxbGl0ZS5PcGVyYXRpb25hbEVycm9yKToKKyAgICAgICAgICAgIHNlbGYuY29uLmV4ZWN1dGUoInNlbGVjdCAqIGZyb20gdGVzdCIpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYuY29uLmNsb3NlKCkKKwogZGVmIHN1aXRlKCk6CiAgICAgZGVmYXVsdF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShUcmFuc2FjdGlvblRlc3RzLCAiQ2hlY2siKQogICAgIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSA9IHVuaXR0ZXN0Lm1ha2VTdWl0ZShTcGVjaWFsQ29tbWFuZFRlc3RzLCAiQ2hlY2siKQotICAgIHJldHVybiB1bml0dGVzdC5UZXN0U3VpdGUoKGRlZmF1bHRfc3VpdGUsIHNwZWNpYWxfY29tbWFuZF9zdWl0ZSkpCisgICAgZGRsX3N1aXRlID0gdW5pdHRlc3QubWFrZVN1aXRlKFRyYW5zYWN0aW9uYWxEREwsICJDaGVjayIpCisgICAgcmV0dXJuIHVuaXR0ZXN0LlRlc3RTdWl0ZSgoZGVmYXVsdF9zdWl0ZSwgc3BlY2lhbF9jb21tYW5kX3N1aXRlLCBkZGxfc3VpdGUpKQogCiBkZWYgdGVzdCgpOgogICAgIHJ1bm5lciA9IHVuaXR0ZXN0LlRleHRUZXN0UnVubmVyKCkKZGlmZiAtLWdpdCBhL0xpYi9zcmVfY29tcGlsZS5weSBiL0xpYi9zcmVfY29tcGlsZS5weQppbmRleCA1MDJiMDYxLi40MjBkODNkIDEwMDY0NAotLS0gYS9MaWIvc3JlX2NvbXBpbGUucHkKKysrIGIvTGliL3NyZV9jb21waWxlLnB5CkBAIC03MSw3ICs3MSw4IEBACiAgICAgQVNTRVJUX0NPREVTID0gX0FTU0VSVF9DT0RFUwogICAgIGlmIChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UgYW5kCiAgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFKSBhbmQKLSAgICAgICAgICAgIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSk6CisgICAgICAgICAgICBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUgYW5kCisgICAgICAgICAgICBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpKToKICAgICAgICAgZml4ZXMgPSBfaWdub3JlY2FzZV9maXhlcwogICAgIGVsc2U6CiAgICAgICAgIGZpeGVzID0gTm9uZQpAQCAtMTM3LDE0ICsxMzgsMTUgQEAKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBlbWl0KE1JTl9VTlRJTCkKICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOOgotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIpCi0gICAgICAgICAgICAjIF9jb21waWxlX2luZm8oY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgX2NvbXBpbGUoY29kZSwgYXZbMV0sIGZsYWdzKQotICAgICAgICAgICAgaWYgYXZbMF06CisgICAgICAgICAgICAgICAgZW1pdCgoZ3JvdXAtMSkqMikKKyAgICAgICAgICAgICMgX2NvbXBpbGVfaW5mbyhjb2RlLCBwLCAoZmxhZ3MgfCBhZGRfZmxhZ3MpICYgfmRlbF9mbGFncykKKyAgICAgICAgICAgIF9jb21waWxlKGNvZGUsIHAsIChmbGFncyB8IGFkZF9mbGFncykgJiB+ZGVsX2ZsYWdzKQorICAgICAgICAgICAgaWYgZ3JvdXA6CiAgICAgICAgICAgICAgICAgZW1pdChNQVJLKQotICAgICAgICAgICAgICAgIGVtaXQoKGF2WzBdLTEpKjIrMSkKKyAgICAgICAgICAgICAgICBlbWl0KChncm91cC0xKSoyKzEpCiAgICAgICAgIGVsaWYgb3AgaW4gU1VDQ0VTU19DT0RFUzoKICAgICAgICAgICAgIGVtaXQob3ApCiAgICAgICAgIGVsaWYgb3AgaW4gQVNTRVJUX0NPREVTOgpAQCAtMTcyLDcgKzE3NCw3IEBACiAgICAgICAgICAgICAgICAgYXYgPSBBVF9NVUxUSUxJTkUuZ2V0KGF2LCBhdikKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQVRfTE9DQUxFLmdldChhdiwgYXYpCi0gICAgICAgICAgICBlbGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKKyAgICAgICAgICAgIGVsaWYgKGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERSkgYW5kIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19BU0NJSSk6CiAgICAgICAgICAgICAgICAgYXYgPSBBVF9VTklDT0RFLmdldChhdiwgYXYpCiAgICAgICAgICAgICBlbWl0KGF2KQogICAgICAgICBlbGlmIG9wIGlzIEJSQU5DSDoKQEAgLTE5Myw3ICsxOTUsNyBAQAogICAgICAgICAgICAgZW1pdChvcCkKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfTE9DQUxFW2F2XQotICAgICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CisgICAgICAgICAgICBlbGlmIChmbGFncyAmIFNSRV9GTEFHX1VOSUNPREUpIGFuZCBub3QgKGZsYWdzICYgU1JFX0ZMQUdfQVNDSUkpOgogICAgICAgICAgICAgICAgIGF2ID0gQ0hfVU5JQ09ERVthdl0KICAgICAgICAgICAgIGVtaXQoYXYpCiAgICAgICAgIGVsaWYgb3AgaXMgR1JPVVBSRUY6CkBAIC0yMzcsNyArMjM5LDcgQEAKICAgICAgICAgZWxpZiBvcCBpcyBDQVRFR09SWToKICAgICAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfTE9DQUxFOgogICAgICAgICAgICAgICAgIGVtaXQoQ0hfTE9DQUxFW2F2XSkKLSAgICAgICAgICAgIGVsaWYgZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFOgorICAgICAgICAgICAgZWxpZiAoZmxhZ3MgJiBTUkVfRkxBR19VTklDT0RFKSBhbmQgbm90IChmbGFncyAmIFNSRV9GTEFHX0FTQ0lJKToKICAgICAgICAgICAgICAgICBlbWl0KENIX1VOSUNPREVbYXZdKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbWl0KGF2KQpAQCAtNDA5LDQyICs0MTEsNDIgQEAKICAgICAgICAgICAgIHRhYmxlW2ldID0gaWR4ICsgMQogICAgIHJldHVybiB0YWJsZQogCi1kZWYgX2NvbXBpbGVfaW5mbyhjb2RlLCBwYXR0ZXJuLCBmbGFncyk6Ci0gICAgIyBpbnRlcm5hbDogY29tcGlsZSBhbiBpbmZvIGJsb2NrLiAgaW4gdGhlIGN1cnJlbnQgdmVyc2lvbiwKLSAgICAjIHRoaXMgY29udGFpbnMgbWluL21heCBwYXR0ZXJuIHdpZHRoLCBhbmQgYW4gb3B0aW9uYWwgbGl0ZXJhbAotICAgICMgcHJlZml4IG9yIGEgY2hhcmFjdGVyIG1hcAotICAgIGxvLCBoaSA9IHBhdHRlcm4uZ2V0d2lkdGgoKQotICAgIGlmIGhpID4gTUFYQ09ERToKLSAgICAgICAgaGkgPSBNQVhDT0RFCi0gICAgaWYgbG8gPT0gMDoKLSAgICAgICAgY29kZS5leHRlbmQoW0lORk8sIDQsIDAsIGxvLCBoaV0pCi0gICAgICAgIHJldHVybgotICAgICMgbG9vayBmb3IgYSBsaXRlcmFsIHByZWZpeAorZGVmIF9nZXRfbGl0ZXJhbF9wcmVmaXgocGF0dGVybik6CisgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAogICAgIHByZWZpeCA9IFtdCiAgICAgcHJlZml4YXBwZW5kID0gcHJlZml4LmFwcGVuZAotICAgIHByZWZpeF9za2lwID0gMAorICAgIHByZWZpeF9za2lwID0gTm9uZQorICAgIGZvciBvcCwgYXYgaW4gcGF0dGVybi5kYXRhOgorICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQorICAgICAgICBlbGlmIG9wIGlzIFNVQlBBVFRFUk46CisgICAgICAgICAgICBncm91cCwgYWRkX2ZsYWdzLCBkZWxfZmxhZ3MsIHAgPSBhdgorICAgICAgICAgICAgaWYgYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRToKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgcHJlZml4MSwgcHJlZml4X3NraXAxLCBnb3RfYWxsID0gX2dldF9saXRlcmFsX3ByZWZpeChwKQorICAgICAgICAgICAgaWYgcHJlZml4X3NraXAgaXMgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgcHJlZml4X3NraXAgPSBsZW4ocHJlZml4KQorICAgICAgICAgICAgICAgIGVsaWYgcHJlZml4X3NraXAxIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICBwcmVmaXhfc2tpcCA9IGxlbihwcmVmaXgpICsgcHJlZml4X3NraXAxCisgICAgICAgICAgICBwcmVmaXguZXh0ZW5kKHByZWZpeDEpCisgICAgICAgICAgICBpZiBub3QgZ290X2FsbDoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBlbHNlOgorICAgICAgICAgICAgYnJlYWsKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gcHJlZml4LCBwcmVmaXhfc2tpcCwgVHJ1ZQorICAgIHJldHVybiBwcmVmaXgsIHByZWZpeF9za2lwLCBGYWxzZQorCitkZWYgX2dldF9jaGFyc2V0X3ByZWZpeChwYXR0ZXJuKToKICAgICBjaGFyc2V0ID0gW10gIyBub3QgdXNlZAogICAgIGNoYXJzZXRhcHBlbmQgPSBjaGFyc2V0LmFwcGVuZAotICAgIGlmIG5vdCAoZmxhZ3MgJiBTUkVfRkxBR19JR05PUkVDQVNFKToKLSAgICAgICAgIyBsb29rIGZvciBsaXRlcmFsIHByZWZpeAotICAgICAgICBmb3Igb3AsIGF2IGluIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6Ci0gICAgICAgICAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXA6Ci0gICAgICAgICAgICAgICAgICAgIHByZWZpeF9za2lwID0gcHJlZml4X3NraXAgKyAxCi0gICAgICAgICAgICAgICAgcHJlZml4YXBwZW5kKGF2KQotICAgICAgICAgICAgZWxpZiBvcCBpcyBTVUJQQVRURVJOIGFuZCBsZW4oYXZbMV0pID09IDE6Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KLSAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICBwcmVmaXhhcHBlbmQoYXYpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgIyBpZiBubyBwcmVmaXgsIGxvb2sgZm9yIGNoYXJzZXQgcHJlZml4Ci0gICAgICAgIGlmIG5vdCBwcmVmaXggYW5kIHBhdHRlcm4uZGF0YToKLSAgICAgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQotICAgICAgICAgICAgaWYgb3AgaXMgU1VCUEFUVEVSTiBhbmQgYXZbMV06Ci0gICAgICAgICAgICAgICAgb3AsIGF2ID0gYXZbMV1bMF0KKyAgICBpZiBwYXR0ZXJuLmRhdGE6CisgICAgICAgIG9wLCBhdiA9IHBhdHRlcm4uZGF0YVswXQorICAgICAgICBpZiBvcCBpcyBTVUJQQVRURVJOOgorICAgICAgICAgICAgZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwID0gYXYKKyAgICAgICAgICAgIGlmIHAgYW5kIG5vdCAoYWRkX2ZsYWdzICYgU1JFX0ZMQUdfSUdOT1JFQ0FTRSk6CisgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQogICAgICAgICAgICAgICAgIGlmIG9wIGlzIExJVEVSQUw6CiAgICAgICAgICAgICAgICAgICAgIGNoYXJzZXRhcHBlbmQoKG9wLCBhdikpCiAgICAgICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6CkBAIC00NjAsMjEgKzQ2Miw0MyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYwotICAgICAgICAgICAgZWxpZiBvcCBpcyBCUkFOQ0g6Ci0gICAgICAgICAgICAgICAgYyA9IFtdCi0gICAgICAgICAgICAgICAgY2FwcGVuZCA9IGMuYXBwZW5kCi0gICAgICAgICAgICAgICAgZm9yIHAgaW4gYXZbMV06Ci0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBwOgotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgb3AsIGF2ID0gcFswXQotICAgICAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FwcGVuZCgob3AsIGF2KSkKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsaWYgb3AgaXMgQlJBTkNIOgorICAgICAgICAgICAgYyA9IFtdCisgICAgICAgICAgICBjYXBwZW5kID0gYy5hcHBlbmQKKyAgICAgICAgICAgIGZvciBwIGluIGF2WzFdOgorICAgICAgICAgICAgICAgIGlmIG5vdCBwOgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIG9wLCBhdiA9IHBbMF0KKyAgICAgICAgICAgICAgICBpZiBvcCBpcyBMSVRFUkFMOgorICAgICAgICAgICAgICAgICAgICBjYXBwZW5kKChvcCwgYXYpKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBjCi0gICAgICAgICAgICBlbGlmIG9wIGlzIElOOgotICAgICAgICAgICAgICAgIGNoYXJzZXQgPSBhdgorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGFyc2V0ID0gYworICAgICAgICBlbGlmIG9wIGlzIElOOgorICAgICAgICAgICAgY2hhcnNldCA9IGF2CisgICAgcmV0dXJuIGNoYXJzZXQKKworZGVmIF9jb21waWxlX2luZm8oY29kZSwgcGF0dGVybiwgZmxhZ3MpOgorICAgICMgaW50ZXJuYWw6IGNvbXBpbGUgYW4gaW5mbyBibG9jay4gIGluIHRoZSBjdXJyZW50IHZlcnNpb24sCisgICAgIyB0aGlzIGNvbnRhaW5zIG1pbi9tYXggcGF0dGVybiB3aWR0aCwgYW5kIGFuIG9wdGlvbmFsIGxpdGVyYWwKKyAgICAjIHByZWZpeCBvciBhIGNoYXJhY3RlciBtYXAKKyAgICBsbywgaGkgPSBwYXR0ZXJuLmdldHdpZHRoKCkKKyAgICBpZiBoaSA+IE1BWENPREU6CisgICAgICAgIGhpID0gTUFYQ09ERQorICAgIGlmIGxvID09IDA6CisgICAgICAgIGNvZGUuZXh0ZW5kKFtJTkZPLCA0LCAwLCBsbywgaGldKQorICAgICAgICByZXR1cm4KKyAgICAjIGxvb2sgZm9yIGEgbGl0ZXJhbCBwcmVmaXgKKyAgICBwcmVmaXggPSBbXQorICAgIHByZWZpeF9za2lwID0gMAorICAgIGNoYXJzZXQgPSBbXSAjIG5vdCB1c2VkCisgICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX0lHTk9SRUNBU0UpOgorICAgICAgICAjIGxvb2sgZm9yIGxpdGVyYWwgcHJlZml4CisgICAgICAgIHByZWZpeCwgcHJlZml4X3NraXAsIGdvdF9hbGwgPSBfZ2V0X2xpdGVyYWxfcHJlZml4KHBhdHRlcm4pCisgICAgICAgICMgaWYgbm8gcHJlZml4LCBsb29rIGZvciBjaGFyc2V0IHByZWZpeAorICAgICAgICBpZiBub3QgcHJlZml4OgorICAgICAgICAgICAgY2hhcnNldCA9IF9nZXRfY2hhcnNldF9wcmVmaXgocGF0dGVybikKICMjICAgICBpZiBwcmVmaXg6CiAjIyAgICAgICAgIHByaW50KCIqKiogUFJFRklYIiwgcHJlZml4LCBwcmVmaXhfc2tpcCkKICMjICAgICBpZiBjaGFyc2V0OgpAQCAtNDg3LDcgKzUxMSw3IEBACiAgICAgbWFzayA9IDAKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIG1hc2sgPSBTUkVfSU5GT19QUkVGSVgKLSAgICAgICAgaWYgbGVuKHByZWZpeCkgPT0gcHJlZml4X3NraXAgPT0gbGVuKHBhdHRlcm4uZGF0YSk6CisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmUgYW5kIGdvdF9hbGw6CiAgICAgICAgICAgICBtYXNrID0gbWFzayB8IFNSRV9JTkZPX0xJVEVSQUwKICAgICBlbGlmIGNoYXJzZXQ6CiAgICAgICAgIG1hc2sgPSBtYXNrIHwgU1JFX0lORk9fQ0hBUlNFVApAQCAtNTAyLDYgKzUyNiw4IEBACiAgICAgIyBhZGQgbGl0ZXJhbCBwcmVmaXgKICAgICBpZiBwcmVmaXg6CiAgICAgICAgIGVtaXQobGVuKHByZWZpeCkpICMgbGVuZ3RoCisgICAgICAgIGlmIHByZWZpeF9za2lwIGlzIE5vbmU6CisgICAgICAgICAgICBwcmVmaXhfc2tpcCA9ICBsZW4ocHJlZml4KQogICAgICAgICBlbWl0KHByZWZpeF9za2lwKSAjIHNraXAKICAgICAgICAgY29kZS5leHRlbmQocHJlZml4KQogICAgICAgICAjIGdlbmVyYXRlIG92ZXJsYXAgdGFibGUKZGlmZiAtLWdpdCBhL0xpYi9zcmVfcGFyc2UucHkgYi9MaWIvc3JlX3BhcnNlLnB5CmluZGV4IDRmZjUwZDEuLjNkMzg2NzMgMTAwNjQ0Ci0tLSBhL0xpYi9zcmVfcGFyc2UucHkKKysrIGIvTGliL3NyZV9wYXJzZS5weQpAQCAtNjUsNiArNjUsMTIgQEAKICAgICAidSI6IFNSRV9GTEFHX1VOSUNPREUsCiB9CiAKK0dMT0JBTF9GTEFHUyA9IChTUkVfRkxBR19BU0NJSSB8IFNSRV9GTEFHX0xPQ0FMRSB8IFNSRV9GTEFHX1VOSUNPREUgfAorICAgICAgICAgICAgICAgIFNSRV9GTEFHX0RFQlVHIHwgU1JFX0ZMQUdfVEVNUExBVEUpCisKK2NsYXNzIFZlcmJvc2UoRXhjZXB0aW9uKToKKyAgICBwYXNzCisKIGNsYXNzIFBhdHRlcm46CiAgICAgIyBtYXN0ZXIgcGF0dGVybiBvYmplY3QuICBrZWVwcyB0cmFjayBvZiBnbG9iYWwgYXR0cmlidXRlcwogICAgIGRlZiBfX2luaXRfXyhzZWxmKToKQEAgLTE4NCw3ICsxOTAsNyBAQAogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaXMgU1VCUEFUVEVSTjoKLSAgICAgICAgICAgICAgICBpLCBqID0gYXZbMV0uZ2V0d2lkdGgoKQorICAgICAgICAgICAgICAgIGksIGogPSBhdlstMV0uZ2V0d2lkdGgoKQogICAgICAgICAgICAgICAgIGxvID0gbG8gKyBpCiAgICAgICAgICAgICAgICAgaGkgPSBoaSArIGoKICAgICAgICAgICAgIGVsaWYgb3AgaW4gX1JFUEVBVENPREVTOgpAQCAtMjczLDYgKzI3OSw5IEBACiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHJlc3VsdCArPSBjCiAgICAgICAgIHJldHVybiByZXN1bHQKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgcG9zKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5pbmRleCAtIGxlbihzZWxmLm5leHQgb3IgJycpCiAgICAgZGVmIHRlbGwoc2VsZik6CiAgICAgICAgIHJldHVybiBzZWxmLmluZGV4IC0gbGVuKHNlbGYubmV4dCBvciAnJykKICAgICBkZWYgc2VlayhzZWxmLCBpbmRleCk6CkBAIC0yODIsMzMgKzI5MSw2IEBACiAgICAgZGVmIGVycm9yKHNlbGYsIG1zZywgb2Zmc2V0PTApOgogICAgICAgICByZXR1cm4gZXJyb3IobXNnLCBzZWxmLnN0cmluZywgc2VsZi50ZWxsKCkgLSBvZmZzZXQpCiAKLSMgVGhlIGZvbGxvd2luZyB0aHJlZSBmdW5jdGlvbnMgYXJlIG5vdCB1c2VkIGluIHRoaXMgbW9kdWxlIGFueW1vcmUsIGJ1dCB3ZSBrZWVwCi0jIHRoZW0gaGVyZSAod2l0aCBEZXByZWNhdGlvbldhcm5pbmdzKSBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkuCi0KLWRlZiBpc2lkZW50KGNoYXIpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc2lkZW50KCkgd2lsbCBiZSByZW1vdmVkIGluIDMuNScsCi0gICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9MikKLSAgICByZXR1cm4gImEiIDw9IGNoYXIgPD0gInoiIG9yICJBIiA8PSBjaGFyIDw9ICJaIiBvciBjaGFyID09ICJfIgotCi1kZWYgaXNkaWdpdChjaGFyKToKLSAgICBpbXBvcnQgd2FybmluZ3MKLSAgICB3YXJuaW5ncy53YXJuKCdzcmVfcGFyc2UuaXNkaWdpdCgpIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjUnLAotICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCi0gICAgcmV0dXJuICIwIiA8PSBjaGFyIDw9ICI5IgotCi1kZWYgaXNuYW1lKG5hbWUpOgotICAgIGltcG9ydCB3YXJuaW5ncwotICAgIHdhcm5pbmdzLndhcm4oJ3NyZV9wYXJzZS5pc25hbWUoKSB3aWxsIGJlIHJlbW92ZWQgaW4gMy41JywKLSAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQotICAgICMgY2hlY2sgdGhhdCBncm91cCBuYW1lIGlzIGEgdmFsaWQgc3RyaW5nCi0gICAgaWYgbm90IGlzaWRlbnQobmFtZVswXSk6Ci0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGZvciBjaGFyIGluIG5hbWVbMTpdOgotICAgICAgICBpZiBub3QgaXNpZGVudChjaGFyKSBhbmQgbm90IGlzZGlnaXQoY2hhcik6Ci0gICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAgICByZXR1cm4gVHJ1ZQotCiBkZWYgX2NsYXNzX2VzY2FwZShzb3VyY2UsIGVzY2FwZSk6CiAgICAgIyBoYW5kbGUgZXNjYXBlIGNvZGUgaW5zaWRlIGNoYXJhY3RlciBjbGFzcwogICAgIGNvZGUgPSBFU0NBUEVTLmdldChlc2NhcGUpCkBAIC0zNTEsOSArMzMzLDcgQEAKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCdiYWQgZXNjYXBlICVzJyAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwpAQCAtNDE4LDE1ICszOTgsMTMgQEAKICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLCBsZW4oZXNjYXBlKSkKICAgICAgICAgaWYgbGVuKGVzY2FwZSkgPT0gMjoKICAgICAgICAgICAgIGlmIGMgaW4gQVNDSUlMRVRURVJTOgotICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oJ2JhZCBlc2NhcGUgJXMnICUgZXNjYXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTgpCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgZXNjYXBlICVzIiAlIGVzY2FwZSwgbGVuKGVzY2FwZSkpCiAgICAgICAgICAgICByZXR1cm4gTElURVJBTCwgb3JkKGVzY2FwZVsxXSkKICAgICBleGNlcHQgVmFsdWVFcnJvcjoKICAgICAgICAgcGFzcwogICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiYmFkIGVzY2FwZSAlcyIgJSBlc2NhcGUsIGxlbihlc2NhcGUpKQogCi1kZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBuZXN0ZWQ9VHJ1ZSk6CitkZWYgX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCB2ZXJib3NlLCBuZXN0ZWQ9VHJ1ZSk6CiAgICAgIyBwYXJzZSBhbiBhbHRlcm5hdGlvbjogYXxifGMKIAogICAgIGl0ZW1zID0gW10KQEAgLTQzNCw3ICs0MTIsNyBAQAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICAgc3RhcnQgPSBzb3VyY2UudGVsbCgpCiAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgaXRlbXNhcHBlbmQoX3BhcnNlKHNvdXJjZSwgc3RhdGUpKQorICAgICAgICBpdGVtc2FwcGVuZChfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkpCiAgICAgICAgIGlmIG5vdCBzb3VyY2VtYXRjaCgifCIpOgogICAgICAgICAgICAgYnJlYWsKIApAQCAtNDc2LDEwICs0NTQsMTAgQEAKICAgICBzdWJwYXR0ZXJuLmFwcGVuZCgoQlJBTkNILCAoTm9uZSwgaXRlbXMpKSkKICAgICByZXR1cm4gc3VicGF0dGVybgogCi1kZWYgX3BhcnNlX3N1Yl9jb25kKHNvdXJjZSwgc3RhdGUsIGNvbmRncm91cCk6Ci0gICAgaXRlbV95ZXMgPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSkKK2RlZiBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCB2ZXJib3NlKToKKyAgICBpdGVtX3llcyA9IF9wYXJzZShzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgIGlmIHNvdXJjZS5tYXRjaCgifCIpOgotICAgICAgICBpdGVtX25vID0gX3BhcnNlKHNvdXJjZSwgc3RhdGUpCisgICAgICAgIGl0ZW1fbm8gPSBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSkKICAgICAgICAgaWYgc291cmNlLm5leHQgPT0gInwiOgogICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJjb25kaXRpb25hbCBiYWNrcmVmIHdpdGggbW9yZSB0aGFuIHR3byBicmFuY2hlcyIpCiAgICAgZWxzZToKQEAgLTQ4OCw3ICs0NjYsNyBAQAogICAgIHN1YnBhdHRlcm4uYXBwZW5kKChHUk9VUFJFRl9FWElTVFMsIChjb25kZ3JvdXAsIGl0ZW1feWVzLCBpdGVtX25vKSkpCiAgICAgcmV0dXJuIHN1YnBhdHRlcm4KIAotZGVmIF9wYXJzZShzb3VyY2UsIHN0YXRlKToKK2RlZiBfcGFyc2Uoc291cmNlLCBzdGF0ZSwgdmVyYm9zZSk6CiAgICAgIyBwYXJzZSBhIHNpbXBsZSBwYXR0ZXJuCiAgICAgc3VicGF0dGVybiA9IFN1YlBhdHRlcm4oc3RhdGUpCiAKQEAgLTQ5OCw3ICs0NzYsNiBAQAogICAgIHNvdXJjZW1hdGNoID0gc291cmNlLm1hdGNoCiAgICAgX2xlbiA9IGxlbgogICAgIF9vcmQgPSBvcmQKLSAgICB2ZXJib3NlID0gc3RhdGUuZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFCiAKICAgICB3aGlsZSBUcnVlOgogCkBAIC02NTIsNiArNjI5LDggQEAKICAgICAgICAgICAgIGdyb3VwID0gVHJ1ZQogICAgICAgICAgICAgbmFtZSA9IE5vbmUKICAgICAgICAgICAgIGNvbmRncm91cCA9IE5vbmUKKyAgICAgICAgICAgIGFkZF9mbGFncyA9IDAKKyAgICAgICAgICAgIGRlbF9mbGFncyA9IDAKICAgICAgICAgICAgIGlmIHNvdXJjZW1hdGNoKCI/Iik6CiAgICAgICAgICAgICAgICAgIyBvcHRpb25zCiAgICAgICAgICAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCkBAIC03MTMsNyArNjkyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvb2tiZWhpbmRncm91cHMgPSBzdGF0ZS5sb29rYmVoaW5kZ3JvdXBzCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBsb29rYmVoaW5kZ3JvdXBzIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUubG9va2JlaGluZGdyb3VwcyA9IHN0YXRlLmdyb3VwcwotICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCB2ZXJib3NlKQogICAgICAgICAgICAgICAgICAgICBpZiBkaXIgPCAwOgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgbG9va2JlaGluZGdyb3VwcyBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRlLmxvb2tiZWhpbmRncm91cHMgPSBOb25lCkBAIC03NDksMTkgKzcyOCwyMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigiaW52YWxpZCBncm91cCByZWZlcmVuY2UiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZW4oY29uZG5hbWUpICsgMSkKICAgICAgICAgICAgICAgICAgICAgc3RhdGUuY2hlY2tsb29rYmVoaW5kZ3JvdXAoY29uZGdyb3VwLCBzb3VyY2UpCi0gICAgICAgICAgICAgICAgZWxpZiBjaGFyIGluIEZMQUdTOgorICAgICAgICAgICAgICAgIGVsaWYgY2hhciBpbiBGTEFHUyBvciBjaGFyID09ICItIjoKICAgICAgICAgICAgICAgICAgICAgIyBmbGFncwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgc3RhdGUuZmxhZ3MgfD0gRkxBR1NbY2hhcl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyApIikKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGNoYXIgPT0gIikiOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVua25vd24gZmxhZyIsIGxlbihjaGFyKSkKLSAgICAgICAgICAgICAgICAgICAgdmVyYm9zZSA9IHN0YXRlLmZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBwb3MgPSBzb3VyY2UucG9zCisgICAgICAgICAgICAgICAgICAgIGZsYWdzID0gX3BhcnNlX2ZsYWdzKHNvdXJjZSwgc3RhdGUsIGNoYXIpCisgICAgICAgICAgICAgICAgICAgIGlmIGZsYWdzIGlzIE5vbmU6ICAjIGdsb2JhbCBmbGFncworICAgICAgICAgICAgICAgICAgICAgICAgaWYgcG9zICE9IDM6ICAjICIoP3giCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMlcycgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2Uuc3RyaW5nWzoyMF0sICAjIHRydW5jYXRlIGxvbmcgcmVnZXhlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyAodHJ1bmNhdGVkKScgaWYgbGVuKHNvdXJjZS5zdHJpbmcpID4gMjAgZWxzZSAnJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBhZGRfZmxhZ3MsIGRlbF9mbGFncyA9IGZsYWdzCisgICAgICAgICAgICAgICAgICAgIGdyb3VwID0gTm9uZQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigidW5rbm93biBleHRlbnNpb24gPyIgKyBjaGFyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGVuKGNoYXIpICsgMSkKQEAgLTc3MywxNSArNzU2LDE3IEBACiAgICAgICAgICAgICAgICAgZXhjZXB0IGVycm9yIGFzIGVycjoKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKGVyci5tc2csIGxlbihuYW1lKSArIDEpIGZyb20gTm9uZQogICAgICAgICAgICAgaWYgY29uZGdyb3VwOgotICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwKQorICAgICAgICAgICAgICAgIHAgPSBfcGFyc2Vfc3ViX2NvbmQoc291cmNlLCBzdGF0ZSwgY29uZGdyb3VwLCB2ZXJib3NlKQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlKQorICAgICAgICAgICAgICAgIHN1Yl92ZXJib3NlID0gKCh2ZXJib3NlIG9yIChhZGRfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm90IChkZWxfZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFKSkKKyAgICAgICAgICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHN0YXRlLCBzdWJfdmVyYm9zZSkKICAgICAgICAgICAgIGlmIG5vdCBzb3VyY2UubWF0Y2goIikiKToKICAgICAgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoIm1pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UudGVsbCgpIC0gc3RhcnQpCiAgICAgICAgICAgICBpZiBncm91cCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBzdGF0ZS5jbG9zZWdyb3VwKGdyb3VwLCBwKQotICAgICAgICAgICAgc3VicGF0dGVybmFwcGVuZCgoU1VCUEFUVEVSTiwgKGdyb3VwLCBwKSkpCisgICAgICAgICAgICBzdWJwYXR0ZXJuYXBwZW5kKChTVUJQQVRURVJOLCAoZ3JvdXAsIGFkZF9mbGFncywgZGVsX2ZsYWdzLCBwKSkpCiAKICAgICAgICAgZWxpZiB0aGlzID09ICJeIjoKICAgICAgICAgICAgIHN1YnBhdHRlcm5hcHBlbmQoKEFULCBBVF9CRUdJTk5JTkcpKQpAQCAtNzk0LDE0ICs3NzksNTggQEAKIAogICAgIHJldHVybiBzdWJwYXR0ZXJuCiAKK2RlZiBfcGFyc2VfZmxhZ3Moc291cmNlLCBzdGF0ZSwgY2hhcik6CisgICAgc291cmNlZ2V0ID0gc291cmNlLmdldAorICAgIGFkZF9mbGFncyA9IDAKKyAgICBkZWxfZmxhZ3MgPSAwCisgICAgaWYgY2hhciAhPSAiLSI6CisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBhZGRfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyAtLCA6IG9yICkiKQorICAgICAgICAgICAgaWYgY2hhciBpbiAiKS06IjoKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICAgICAgbXNnID0gInVua25vd24gZmxhZyIgaWYgY2hhci5pc2FscGhhKCkgZWxzZSAibWlzc2luZyAtLCA6IG9yICkiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGlmIGNoYXIgPT0gIikiOgorICAgICAgICBpZiAoKGFkZF9mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZAorICAgICAgICAgICAgbm90IChzdGF0ZS5mbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpKToKKyAgICAgICAgICAgIHJhaXNlIFZlcmJvc2UKKyAgICAgICAgc3RhdGUuZmxhZ3MgfD0gYWRkX2ZsYWdzCisgICAgICAgIHJldHVybiBOb25lCisgICAgaWYgYWRkX2ZsYWdzICYgR0xPQkFMX0ZMQUdTOgorICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoImJhZCBpbmxpbmUgZmxhZ3M6IGNhbm5vdCB0dXJuIG9uIGdsb2JhbCBmbGFnIiwgMSkKKyAgICBpZiBjaGFyID09ICItIjoKKyAgICAgICAgY2hhciA9IHNvdXJjZWdldCgpCisgICAgICAgIGlmIGNoYXIgaXMgTm9uZToKKyAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyBmbGFnIikKKyAgICAgICAgaWYgY2hhciBub3QgaW4gRkxBR1M6CisgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIGZsYWciCisgICAgICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IobXNnLCBsZW4oY2hhcikpCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICBkZWxfZmxhZ3MgfD0gRkxBR1NbY2hhcl0KKyAgICAgICAgICAgIGNoYXIgPSBzb3VyY2VnZXQoKQorICAgICAgICAgICAgaWYgY2hhciBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIHNvdXJjZS5lcnJvcigibWlzc2luZyA6IikKKyAgICAgICAgICAgIGlmIGNoYXIgPT0gIjoiOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBjaGFyIG5vdCBpbiBGTEFHUzoKKyAgICAgICAgICAgICAgICBtc2cgPSAidW5rbm93biBmbGFnIiBpZiBjaGFyLmlzYWxwaGEoKSBlbHNlICJtaXNzaW5nIDoiCisgICAgICAgICAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKG1zZywgbGVuKGNoYXIpKQorICAgIGFzc2VydCBjaGFyID09ICI6IgorICAgIGlmIGRlbF9mbGFncyAmIEdMT0JBTF9GTEFHUzoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWciLCAxKQorICAgIGlmIGFkZF9mbGFncyAmIGRlbF9mbGFnczoKKyAgICAgICAgcmFpc2Ugc291cmNlLmVycm9yKCJiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmIiwgMSkKKyAgICByZXR1cm4gYWRkX2ZsYWdzLCBkZWxfZmxhZ3MKKwogZGVmIGZpeF9mbGFncyhzcmMsIGZsYWdzKToKICAgICAjIENoZWNrIGFuZCBmaXggZmxhZ3MgYWNjb3JkaW5nIHRvIHRoZSB0eXBlIG9mIHBhdHRlcm4gKHN0ciBvciBieXRlcykKICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKToKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEU6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkxPQ0FMRSBmbGFnIHdpdGggYSBzdHIgcGF0dGVybiBpcyBkZXByZWNhdGVkLiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICJXaWxsIGJlIGFuIGVycm9yIGluIDMuNiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD02KQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiY2Fubm90IHVzZSBMT0NBTEUgZmxhZyB3aXRoIGEgc3RyIHBhdHRlcm4iKQogICAgICAgICBpZiBub3QgZmxhZ3MgJiBTUkVfRkxBR19BU0NJSToKICAgICAgICAgICAgIGZsYWdzIHw9IFNSRV9GTEFHX1VOSUNPREUKICAgICAgICAgZWxpZiBmbGFncyAmIFNSRV9GTEFHX1VOSUNPREU6CkBAIC04MTAsMTAgKzgzOSw3IEBACiAgICAgICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfVU5JQ09ERToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNhbm5vdCB1c2UgVU5JQ09ERSBmbGFnIHdpdGggYSBieXRlcyBwYXR0ZXJuIikKICAgICAgICAgaWYgZmxhZ3MgJiBTUkVfRkxBR19MT0NBTEUgYW5kIGZsYWdzICYgU1JFX0ZMQUdfQVNDSUk6Ci0gICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKLSAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZS4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAiV2lsbCBiZSBhbiBlcnJvciBpbiAzLjYiLAotICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NikKKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFTQ0lJIGFuZCBMT0NBTEUgZmxhZ3MgYXJlIGluY29tcGF0aWJsZSIpCiAgICAgcmV0dXJuIGZsYWdzCiAKIGRlZiBwYXJzZShzdHIsIGZsYWdzPTAsIHBhdHRlcm49Tm9uZSk6CkBAIC04MjYsMTggKzg1MiwyMyBAQAogICAgIHBhdHRlcm4uZmxhZ3MgPSBmbGFncwogICAgIHBhdHRlcm4uc3RyID0gc3RyCiAKLSAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIDApCisgICAgdHJ5OgorICAgICAgICBwID0gX3BhcnNlX3N1Yihzb3VyY2UsIHBhdHRlcm4sIGZsYWdzICYgU1JFX0ZMQUdfVkVSQk9TRSwgRmFsc2UpCisgICAgZXhjZXB0IFZlcmJvc2U6CisgICAgICAgICMgdGhlIFZFUkJPU0UgZmxhZyB3YXMgc3dpdGNoZWQgb24gaW5zaWRlIHRoZSBwYXR0ZXJuLiAgdG8gYmUKKyAgICAgICAgIyBvbiB0aGUgc2FmZSBzaWRlLCB3ZSdsbCBwYXJzZSB0aGUgd2hvbGUgdGhpbmcgYWdhaW4uLi4KKyAgICAgICAgcGF0dGVybiA9IFBhdHRlcm4oKQorICAgICAgICBwYXR0ZXJuLmZsYWdzID0gZmxhZ3MgfCBTUkVfRkxBR19WRVJCT1NFCisgICAgICAgIHBhdHRlcm4uc3RyID0gc3RyCisgICAgICAgIHNvdXJjZS5zZWVrKDApCisgICAgICAgIHAgPSBfcGFyc2Vfc3ViKHNvdXJjZSwgcGF0dGVybiwgVHJ1ZSwgRmFsc2UpCisKICAgICBwLnBhdHRlcm4uZmxhZ3MgPSBmaXhfZmxhZ3Moc3RyLCBwLnBhdHRlcm4uZmxhZ3MpCiAKICAgICBpZiBzb3VyY2UubmV4dCBpcyBub3QgTm9uZToKICAgICAgICAgYXNzZXJ0IHNvdXJjZS5uZXh0ID09ICIpIgogICAgICAgICByYWlzZSBzb3VyY2UuZXJyb3IoInVuYmFsYW5jZWQgcGFyZW50aGVzaXMiKQogCi0gICAgaWYgbm90IChmbGFncyAmIFNSRV9GTEFHX1ZFUkJPU0UpIGFuZCBwLnBhdHRlcm4uZmxhZ3MgJiBTUkVfRkxBR19WRVJCT1NFOgotICAgICAgICAjIHRoZSBWRVJCT1NFIGZsYWcgd2FzIHN3aXRjaGVkIG9uIGluc2lkZSB0aGUgcGF0dGVybi4gIHRvIGJlCi0gICAgICAgICMgb24gdGhlIHNhZmUgc2lkZSwgd2UnbGwgcGFyc2UgdGhlIHdob2xlIHRoaW5nIGFnYWluLi4uCi0gICAgICAgIHJldHVybiBwYXJzZShzdHIsIHAucGF0dGVybi5mbGFncykKLQogICAgIGlmIGZsYWdzICYgU1JFX0ZMQUdfREVCVUc6CiAgICAgICAgIHAuZHVtcCgpCiAKQEAgLTkxNCw5ICs5NDUsNyBAQAogICAgICAgICAgICAgICAgICAgICB0aGlzID0gY2hyKEVTQ0FQRVNbdGhpc11bMV0pCiAgICAgICAgICAgICAgICAgZXhjZXB0IEtleUVycm9yOgogICAgICAgICAgICAgICAgICAgICBpZiBjIGluIEFTQ0lJTEVUVEVSUzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncwotICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybignYmFkIGVzY2FwZSAlcycgJSB0aGlzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIHN0YWNrbGV2ZWw9NCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIHMuZXJyb3IoJ2JhZCBlc2NhcGUgJXMnICUgdGhpcywgbGVuKHRoaXMpKQogICAgICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGxhcHBlbmQodGhpcykKZGlmZiAtLWdpdCBhL0xpYi9zc2wucHkgYi9MaWIvc3NsLnB5CmluZGV4IGUxOTEzOTAuLjhhZDRhMzMgMTAwNjQ0Ci0tLSBhL0xpYi9zc2wucHkKKysrIGIvTGliL3NzbC5weQpAQCAtNTIsNiArNTIsOCBAQAogUFJPVE9DT0xfU1NMdjMKIFBST1RPQ09MX1NTTHYyMwogUFJPVE9DT0xfVExTCitQUk9UT0NPTF9UTFNfQ0xJRU5UCitQUk9UT0NPTF9UTFNfU0VSVkVSCiBQUk9UT0NPTF9UTFN2MQogUFJPVE9DT0xfVExTdjFfMQogUFJPVE9DT0xfVExTdjFfMgpAQCAtOTQsMTcgKzk2LDE2IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKLWZyb20gZW51bSBpbXBvcnQgRW51bSBhcyBfRW51bSwgSW50RW51bSBhcyBfSW50RW51bQorZnJvbSBlbnVtIGltcG9ydCBFbnVtIGFzIF9FbnVtLCBJbnRFbnVtIGFzIF9JbnRFbnVtLCBJbnRGbGFnIGFzIF9JbnRGbGFnCiAKIGltcG9ydCBfc3NsICAgICAgICAgICAgICMgaWYgd2UgY2FuJ3QgaW1wb3J0IGl0LCBsZXQgdGhlIGVycm9yIHByb3BhZ2F0ZQogCiBmcm9tIF9zc2wgaW1wb3J0IE9QRU5TU0xfVkVSU0lPTl9OVU1CRVIsIE9QRU5TU0xfVkVSU0lPTl9JTkZPLCBPUEVOU1NMX1ZFUlNJT04KLWZyb20gX3NzbCBpbXBvcnQgX1NTTENvbnRleHQsIE1lbW9yeUJJTworZnJvbSBfc3NsIGltcG9ydCBfU1NMQ29udGV4dCwgTWVtb3J5QklPLCBTU0xTZXNzaW9uCiBmcm9tIF9zc2wgaW1wb3J0ICgKICAgICBTU0xFcnJvciwgU1NMWmVyb1JldHVybkVycm9yLCBTU0xXYW50UmVhZEVycm9yLCBTU0xXYW50V3JpdGVFcnJvciwKICAgICBTU0xTeXNjYWxsRXJyb3IsIFNTTEVPRkVycm9yLAogICAgICkKLWZyb20gX3NzbCBpbXBvcnQgQ0VSVF9OT05FLCBDRVJUX09QVElPTkFMLCBDRVJUX1JFUVVJUkVECiBmcm9tIF9zc2wgaW1wb3J0IHR4dDJvYmogYXMgX3R4dDJvYmosIG5pZDJvYmogYXMgX25pZDJvYmoKIGZyb20gX3NzbCBpbXBvcnQgUkFORF9zdGF0dXMsIFJBTkRfYWRkLCBSQU5EX2J5dGVzLCBSQU5EX3BzZXVkb19ieXRlcwogdHJ5OgpAQCAtMTEzLDMyICsxMTQsNDcgQEAKICAgICAjIExpYnJlU1NMIGRvZXMgbm90IHByb3ZpZGUgUkFORF9lZ2QKICAgICBwYXNzCiAKLWRlZiBfaW1wb3J0X3N5bWJvbHMocHJlZml4KToKLSAgICBmb3IgbiBpbiBkaXIoX3NzbCk6Ci0gICAgICAgIGlmIG4uc3RhcnRzd2l0aChwcmVmaXgpOgotICAgICAgICAgICAgZ2xvYmFscygpW25dID0gZ2V0YXR0cihfc3NsLCBuKQotCi1faW1wb3J0X3N5bWJvbHMoJ09QXycpCi1faW1wb3J0X3N5bWJvbHMoJ0FMRVJUX0RFU0NSSVBUSU9OXycpCi1faW1wb3J0X3N5bWJvbHMoJ1NTTF9FUlJPUl8nKQotX2ltcG9ydF9zeW1ib2xzKCdWRVJJRllfJykKIAogZnJvbSBfc3NsIGltcG9ydCBIQVNfU05JLCBIQVNfRUNESCwgSEFTX05QTiwgSEFTX0FMUE4KLQogZnJvbSBfc3NsIGltcG9ydCBfT1BFTlNTTF9BUElfVkVSU0lPTgogCisKIF9JbnRFbnVtLl9jb252ZXJ0KAotICAgICAgICAnX1NTTE1ldGhvZCcsIF9fbmFtZV9fLAotICAgICAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKLSAgICAgICAgc291cmNlPV9zc2wpCisgICAgJ19TU0xNZXRob2QnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdQUk9UT0NPTF8nKSBhbmQgbmFtZSAhPSAnUFJPVE9DT0xfU1NMdjIzJywKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEZsYWcuX2NvbnZlcnQoCisgICAgJ09wdGlvbnMnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdPUF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ0FsZXJ0RGVzY3JpcHRpb24nLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdBTEVSVF9ERVNDUklQVElPTl8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKworX0ludEVudW0uX2NvbnZlcnQoCisgICAgJ1NTTEVycm9yTnVtYmVyJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnU1NMX0VSUk9SXycpLAorICAgIHNvdXJjZT1fc3NsKQorCitfSW50RmxhZy5fY29udmVydCgKKyAgICAnVmVyaWZ5RmxhZ3MnLCBfX25hbWVfXywKKyAgICBsYW1iZGEgbmFtZTogbmFtZS5zdGFydHN3aXRoKCdWRVJJRllfJyksCisgICAgc291cmNlPV9zc2wpCisKK19JbnRFbnVtLl9jb252ZXJ0KAorICAgICdWZXJpZnlNb2RlJywgX19uYW1lX18sCisgICAgbGFtYmRhIG5hbWU6IG5hbWUuc3RhcnRzd2l0aCgnQ0VSVF8nKSwKKyAgICBzb3VyY2U9X3NzbCkKKwogCiBQUk9UT0NPTF9TU0x2MjMgPSBfU1NMTWV0aG9kLlBST1RPQ09MX1NTTHYyMyA9IF9TU0xNZXRob2QuUFJPVE9DT0xfVExTCiBfUFJPVE9DT0xfTkFNRVMgPSB7dmFsdWU6IG5hbWUgZm9yIG5hbWUsIHZhbHVlIGluIF9TU0xNZXRob2QuX19tZW1iZXJzX18uaXRlbXMoKX0KIAotdHJ5OgotICAgIF9TU0x2Ml9JRl9FWElTVFMgPSBQUk9UT0NPTF9TU0x2MgotZXhjZXB0IE5hbWVFcnJvcjoKLSAgICBfU1NMdjJfSUZfRVhJU1RTID0gTm9uZQorX1NTTHYyX0lGX0VYSVNUUyA9IGdldGF0dHIoX1NTTE1ldGhvZCwgJ1BST1RPQ09MX1NTTHYyJywgTm9uZSkKKwogCiBpZiBzeXMucGxhdGZvcm0gPT0gIndpbjMyIjoKICAgICBmcm9tIF9zc2wgaW1wb3J0IGVudW1fY2VydGlmaWNhdGVzLCBlbnVtX2NybHMKQEAgLTM3NywxOCArMzkzLDE4IEBACiAgICAgZGVmIHdyYXBfc29ja2V0KHNlbGYsIHNvY2ssIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1UcnVlLAogICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1UcnVlLAotICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSk6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLCBzZXNzaW9uPU5vbmUpOgogICAgICAgICByZXR1cm4gU1NMU29ja2V0KHNvY2s9c29jaywgc2VydmVyX3NpZGU9c2VydmVyX3NpZGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9ZG9faGFuZHNoYWtlX29uX2Nvbm5lY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9c3VwcHJlc3NfcmFnZ2VkX2VvZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBfY29udGV4dD1zZWxmKQorICAgICAgICAgICAgICAgICAgICAgICAgIF9jb250ZXh0PXNlbGYsIF9zZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgd3JhcF9iaW8oc2VsZiwgaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1GYWxzZSwKLSAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9Tm9uZSwgc2Vzc2lvbj1Ob25lKToKICAgICAgICAgc3Nsb2JqID0gc2VsZi5fd3JhcF9iaW8oaW5jb21pbmcsIG91dGdvaW5nLCBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgcmV0dXJuIFNTTE9iamVjdChzc2xvYmopCisgICAgICAgIHJldHVybiBTU0xPYmplY3Qoc3Nsb2JqLCBzZXNzaW9uPXNlc3Npb24pCiAKICAgICBkZWYgc2V0X25wbl9wcm90b2NvbHMoc2VsZiwgbnBuX3Byb3RvY29scyk6CiAgICAgICAgIHByb3RvcyA9IGJ5dGVhcnJheSgpCkBAIC00MzQsNiArNDUwLDM0IEBACiAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzKHN0b3JlbmFtZSwgcHVycG9zZSkKICAgICAgICAgc2VsZi5zZXRfZGVmYXVsdF92ZXJpZnlfcGF0aHMoKQogCisgICAgQHByb3BlcnR5CisgICAgZGVmIG9wdGlvbnMoc2VsZik6CisgICAgICAgIHJldHVybiBPcHRpb25zKHN1cGVyKCkub3B0aW9ucykKKworICAgIEBvcHRpb25zLnNldHRlcgorICAgIGRlZiBvcHRpb25zKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkub3B0aW9ucy5fX3NldF9fKHNlbGYsIHZhbHVlKQorCisgICAgQHByb3BlcnR5CisgICAgZGVmIHZlcmlmeV9mbGFncyhzZWxmKToKKyAgICAgICAgcmV0dXJuIFZlcmlmeUZsYWdzKHN1cGVyKCkudmVyaWZ5X2ZsYWdzKQorCisgICAgQHZlcmlmeV9mbGFncy5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X2ZsYWdzKHNlbGYsIHZhbHVlKToKKyAgICAgICAgc3VwZXIoU1NMQ29udGV4dCwgU1NMQ29udGV4dCkudmVyaWZ5X2ZsYWdzLl9fc2V0X18oc2VsZiwgdmFsdWUpCisKKyAgICBAcHJvcGVydHkKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZik6CisgICAgICAgIHZhbHVlID0gc3VwZXIoKS52ZXJpZnlfbW9kZQorICAgICAgICB0cnk6CisgICAgICAgICAgICByZXR1cm4gVmVyaWZ5TW9kZSh2YWx1ZSkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4gdmFsdWUKKworICAgIEB2ZXJpZnlfbW9kZS5zZXR0ZXIKKyAgICBkZWYgdmVyaWZ5X21vZGUoc2VsZiwgdmFsdWUpOgorICAgICAgICBzdXBlcihTU0xDb250ZXh0LCBTU0xDb250ZXh0KS52ZXJpZnlfbW9kZS5fX3NldF9fKHNlbGYsIHZhbHVlKQorCiAKIGRlZiBjcmVhdGVfZGVmYXVsdF9jb250ZXh0KHB1cnBvc2U9UHVycG9zZS5TRVJWRVJfQVVUSCwgKiwgY2FmaWxlPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYXBhdGg9Tm9uZSwgY2FkYXRhPU5vbmUpOgpAQCAtNDQ2LDMyICs0OTAsMTYgQEAKICAgICBpZiBub3QgaXNpbnN0YW5jZShwdXJwb3NlLCBfQVNOMU9iamVjdCk6CiAgICAgICAgIHJhaXNlIFR5cGVFcnJvcihwdXJwb3NlKQogCisgICAgIyBTU0xDb250ZXh0IHNldHMgT1BfTk9fU1NMdjIsIE9QX05PX1NTTHYzLCBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAjIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwgT1BfU0lOR0xFX0RIX1VTRSBhbmQgT1BfU0lOR0xFX0VDREhfVVNFCisgICAgIyBieSBkZWZhdWx0LgogICAgIGNvbnRleHQgPSBTU0xDb250ZXh0KFBST1RPQ09MX1RMUykKIAotICAgICMgU1NMdjIgY29uc2lkZXJlZCBoYXJtZnVsLgotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MgotCi0gICAgIyBTU0x2MyBoYXMgcHJvYmxlbWF0aWMgc2VjdXJpdHkgYW5kIGlzIG9ubHkgcmVxdWlyZWQgZm9yIHJlYWxseSBvbGQKLSAgICAjIGNsaWVudHMgc3VjaCBhcyBJRTYgb24gV2luZG93cyBYUAotICAgIGNvbnRleHQub3B0aW9ucyB8PSBPUF9OT19TU0x2MwotCi0gICAgIyBkaXNhYmxlIGNvbXByZXNzaW9uIHRvIHByZXZlbnQgQ1JJTUUgYXR0YWNrcyAoT3BlblNTTCAxLjArKQotICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCi0KICAgICBpZiBwdXJwb3NlID09IFB1cnBvc2UuU0VSVkVSX0FVVEg6CiAgICAgICAgICMgdmVyaWZ5IGNlcnRzIGFuZCBob3N0IG5hbWUgaW4gY2xpZW50IG1vZGUKICAgICAgICAgY29udGV4dC52ZXJpZnlfbW9kZSA9IENFUlRfUkVRVUlSRUQKICAgICAgICAgY29udGV4dC5jaGVja19ob3N0bmFtZSA9IFRydWUKICAgICBlbGlmIHB1cnBvc2UgPT0gUHVycG9zZS5DTElFTlRfQVVUSDoKLSAgICAgICAgIyBQcmVmZXIgdGhlIHNlcnZlcidzIGNpcGhlcnMgYnkgZGVmYXVsdCBzbyB0aGF0IHdlIGdldCBzdHJvbmdlcgotICAgICAgICAjIGVuY3J5cHRpb24KLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSIsIDApCi0KLSAgICAgICAgIyBVc2Ugc2luZ2xlIHVzZSBrZXlzIGluIG9yZGVyIHRvIGltcHJvdmUgZm9yd2FyZCBzZWNyZWN5Ci0gICAgICAgIGNvbnRleHQub3B0aW9ucyB8PSBnZXRhdHRyKF9zc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKLSAgICAgICAgY29udGV4dC5vcHRpb25zIHw9IGdldGF0dHIoX3NzbCwgIk9QX1NJTkdMRV9FQ0RIX1VTRSIsIDApCi0KLSAgICAgICAgIyBkaXNhbGxvdyBjaXBoZXJzIHdpdGgga25vd24gdnVsbmVyYWJpbGl0aWVzCiAgICAgICAgIGNvbnRleHQuc2V0X2NpcGhlcnMoX1JFU1RSSUNURURfU0VSVkVSX0NJUEhFUlMpCiAKICAgICBpZiBjYWZpbGUgb3IgY2FwYXRoIG9yIGNhZGF0YToKQEAgLTQ5NywxMiArNTI1LDEwIEBACiAgICAgaWYgbm90IGlzaW5zdGFuY2UocHVycG9zZSwgX0FTTjFPYmplY3QpOgogICAgICAgICByYWlzZSBUeXBlRXJyb3IocHVycG9zZSkKIAorICAgICMgU1NMQ29udGV4dCBzZXRzIE9QX05PX1NTTHYyLCBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sCisgICAgIyBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UsIE9QX1NJTkdMRV9ESF9VU0UgYW5kIE9QX1NJTkdMRV9FQ0RIX1VTRQorICAgICMgYnkgZGVmYXVsdC4KICAgICBjb250ZXh0ID0gU1NMQ29udGV4dChwcm90b2NvbCkKLSAgICAjIFNTTHYyIGNvbnNpZGVyZWQgaGFybWZ1bC4KLSAgICBjb250ZXh0Lm9wdGlvbnMgfD0gT1BfTk9fU1NMdjIKLSAgICAjIFNTTHYzIGhhcyBwcm9ibGVtYXRpYyBzZWN1cml0eSBhbmQgaXMgb25seSByZXF1aXJlZCBmb3IgcmVhbGx5IG9sZAotICAgICMgY2xpZW50cyBzdWNoIGFzIElFNiBvbiBXaW5kb3dzIFhQCi0gICAgY29udGV4dC5vcHRpb25zIHw9IE9QX05PX1NTTHYzCiAKICAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CiAgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKQEAgLTU0OCwxMCArNTc0LDEyIEBACiAgICAgICogVGhlIGBgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3RgYCBhbmQgYGBzdXBwcmVzc19yYWdnZWRfZW9mc2BgIG1hY2hpbmVyeS4KICAgICAiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBzc2xvYmosIG93bmVyPU5vbmUsIHNlc3Npb249Tm9uZSk6CiAgICAgICAgIHNlbGYuX3NzbG9iaiA9IHNzbG9iagogICAgICAgICAjIE5vdGU6IF9zc2xvYmogdGFrZXMgYSB3ZWFrIHJlZmVyZW5jZSB0byBvd25lcgogICAgICAgICBzZWxmLl9zc2xvYmoub3duZXIgPSBvd25lciBvciBzZWxmCisgICAgICAgIGlmIHNlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KIAogICAgIEBwcm9wZXJ0eQogICAgIGRlZiBjb250ZXh0KHNlbGYpOgpAQCAtNTYzLDYgKzU5MSwyMCBAQAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCiAgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKKyAgICBAcHJvcGVydHkKICAgICBkZWYgc2VydmVyX3NpZGUoc2VsZik6CiAgICAgICAgICIiIldoZXRoZXIgdGhpcyBpcyBhIHNlcnZlci1zaWRlIHNvY2tldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYuX3NzbG9iai5zZXJ2ZXJfc2lkZQpAQCAtNjc5LDcgKzcyMSw3IEBACiAgICAgICAgICAgICAgICAgIGZhbWlseT1BRl9JTkVULCB0eXBlPVNPQ0tfU1RSRUFNLCBwcm90bz0wLCBmaWxlbm89Tm9uZSwKICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwgbnBuX3Byb3RvY29scz1Ob25lLCBjaXBoZXJzPU5vbmUsCiAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1Ob25lLAotICAgICAgICAgICAgICAgICBfY29udGV4dD1Ob25lKToKKyAgICAgICAgICAgICAgICAgX2NvbnRleHQ9Tm9uZSwgX3Nlc3Npb249Tm9uZSk6CiAKICAgICAgICAgaWYgX2NvbnRleHQ6CiAgICAgICAgICAgICBzZWxmLl9jb250ZXh0ID0gX2NvbnRleHQKQEAgLTcxMSwxMSArNzUzLDE2IEBACiAgICAgICAgICMgbWl4ZWQgaW4uCiAgICAgICAgIGlmIHNvY2suZ2V0c29ja29wdChTT0xfU09DS0VULCBTT19UWVBFKSAhPSBTT0NLX1NUUkVBTToKICAgICAgICAgICAgIHJhaXNlIE5vdEltcGxlbWVudGVkRXJyb3IoIm9ubHkgc3RyZWFtIHNvY2tldHMgYXJlIHN1cHBvcnRlZCIpCi0gICAgICAgIGlmIHNlcnZlcl9zaWRlIGFuZCBzZXJ2ZXJfaG9zdG5hbWU6Ci0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJzZXJ2ZXJfaG9zdG5hbWUgY2FuIG9ubHkgYmUgc3BlY2lmaWVkICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluIGNsaWVudCBtb2RlIikKKyAgICAgICAgaWYgc2VydmVyX3NpZGU6CisgICAgICAgICAgICBpZiBzZXJ2ZXJfaG9zdG5hbWU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2VydmVyX2hvc3RuYW1lIGNhbiBvbmx5IGJlIHNwZWNpZmllZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW4gY2xpZW50IG1vZGUiKQorICAgICAgICAgICAgaWYgX3Nlc3Npb24gaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigic2Vzc2lvbiBjYW4gb25seSBiZSBzcGVjaWZpZWQgaW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNsaWVudCBtb2RlIikKICAgICAgICAgaWYgc2VsZi5fY29udGV4dC5jaGVja19ob3N0bmFtZSBhbmQgbm90IHNlcnZlcl9ob3N0bmFtZToKICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoImNoZWNrX2hvc3RuYW1lIHJlcXVpcmVzIHNlcnZlcl9ob3N0bmFtZSIpCisgICAgICAgIHNlbGYuX3Nlc3Npb24gPSBfc2Vzc2lvbgogICAgICAgICBzZWxmLnNlcnZlcl9zaWRlID0gc2VydmVyX3NpZGUKICAgICAgICAgc2VsZi5zZXJ2ZXJfaG9zdG5hbWUgPSBzZXJ2ZXJfaG9zdG5hbWUKICAgICAgICAgc2VsZi5kb19oYW5kc2hha2Vfb25fY29ubmVjdCA9IGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0CkBAIC03NTEsNyArNzk4LDggQEAKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBzc2xvYmogPSBzZWxmLl9jb250ZXh0Ll93cmFwX3NvY2tldChzZWxmLCBzZXJ2ZXJfc2lkZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWUpCi0gICAgICAgICAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgICAgICAgICBzZWxmLl9zc2xvYmogPSBTU0xPYmplY3Qoc3Nsb2JqLCBvd25lcj1zZWxmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPXNlbGYuX3Nlc3Npb24pCiAgICAgICAgICAgICAgICAgaWYgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q6CiAgICAgICAgICAgICAgICAgICAgIHRpbWVvdXQgPSBzZWxmLmdldHRpbWVvdXQoKQogICAgICAgICAgICAgICAgICAgICBpZiB0aW1lb3V0ID09IDAuMDoKQEAgLTc3Miw2ICs4MjAsMjQgQEAKICAgICAgICAgc2VsZi5fY29udGV4dCA9IGN0eAogICAgICAgICBzZWxmLl9zc2xvYmouY29udGV4dCA9IGN0eAogCisgICAgQHByb3BlcnR5CisgICAgZGVmIHNlc3Npb24oc2VsZik6CisgICAgICAgICIiIlRoZSBTU0xTZXNzaW9uIGZvciBjbGllbnQgc29ja2V0LiIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb24KKworICAgIEBzZXNzaW9uLnNldHRlcgorICAgIGRlZiBzZXNzaW9uKHNlbGYsIHNlc3Npb24pOgorICAgICAgICBzZWxmLl9zZXNzaW9uID0gc2Vzc2lvbgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICBzZWxmLl9zc2xvYmouc2Vzc2lvbiA9IHNlc3Npb24KKworICAgIEBwcm9wZXJ0eQorICAgIGRlZiBzZXNzaW9uX3JldXNlZChzZWxmKToKKyAgICAgICAgIiIiV2FzIHRoZSBjbGllbnQgc2Vzc2lvbiByZXVzZWQgZHVyaW5nIGhhbmRzaGFrZSIiIgorICAgICAgICBpZiBzZWxmLl9zc2xvYmogaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5fc3Nsb2JqLnNlc3Npb25fcmV1c2VkCisKICAgICBkZWYgZHVwKHNlbGYpOgogICAgICAgICByYWlzZSBOb3RJbXBsZW1lbnRlZCgiQ2FuJ3QgZHVwKCkgJXMgaW5zdGFuY2VzIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fKQpAQCAtODk4LDcgKzk2NCw2IEBACiAgICAgICAgICAgICB3aGlsZSAoY291bnQgPCBhbW91bnQpOgogICAgICAgICAgICAgICAgIHYgPSBzZWxmLnNlbmQoZGF0YVtjb3VudDpdKQogICAgICAgICAgICAgICAgIGNvdW50ICs9IHYKLSAgICAgICAgICAgIHJldHVybiBhbW91bnQKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBzb2NrZXQuc2VuZGFsbChzZWxmLCBkYXRhLCBmbGFncykKIApAQCAtMTAwNSw3ICsxMDcwLDggQEAKICAgICAgICAgaWYgc2VsZi5fY29ubmVjdGVkOgogICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiYXR0ZW1wdCB0byBjb25uZWN0IGFscmVhZHktY29ubmVjdGVkIFNTTFNvY2tldCEiKQogICAgICAgICBzc2xvYmogPSBzZWxmLmNvbnRleHQuX3dyYXBfc29ja2V0KHNlbGYsIEZhbHNlLCBzZWxmLnNlcnZlcl9ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZikKKyAgICAgICAgc2VsZi5fc3Nsb2JqID0gU1NMT2JqZWN0KHNzbG9iaiwgb3duZXI9c2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlc3Npb249c2VsZi5fc2Vzc2lvbikKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgaWYgY29ubmVjdF9leDoKICAgICAgICAgICAgICAgICByYyA9IHNvY2tldC5jb25uZWN0X2V4KHNlbGYsIGFkZHIpCkBAIC0xMDY4LDcgKzExMzQsNiBAQAogICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PVRydWUsCiAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9VHJ1ZSwKICAgICAgICAgICAgICAgICBjaXBoZXJzPU5vbmUpOgotCiAgICAgcmV0dXJuIFNTTFNvY2tldChzb2NrPXNvY2ssIGtleWZpbGU9a2V5ZmlsZSwgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1zZXJ2ZXJfc2lkZSwgY2VydF9yZXFzPWNlcnRfcmVxcywKICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbF92ZXJzaW9uLCBjYV9jZXJ0cz1jYV9jZXJ0cywKZGlmZiAtLWdpdCBhL0xpYi9zdGF0aXN0aWNzLnB5IGIvTGliL3N0YXRpc3RpY3MucHkKaW5kZXggNGY1YzFjMS4uMzBmZTU1YyAxMDA2NDQKLS0tIGEvTGliL3N0YXRpc3RpY3MucHkKKysrIGIvTGliL3N0YXRpc3RpY3MucHkKQEAgLTEsMjAgKzEsMyBAQAotIyMgIE1vZHVsZSBzdGF0aXN0aWNzLnB5Ci0jIwotIyMgIENvcHlyaWdodCAoYykgMjAxMyBTdGV2ZW4gRCdBcHJhbm8gPHN0ZXZlK3B5dGhvbkBwZWFyd29vZC5pbmZvPi4KLSMjCi0jIyAgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7Ci0jIyAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgotIyMgIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAotIyMKLSMjICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKLSMjCi0jIyAgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQotIyMgIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCi0jIyAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCi0jIyAgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAotIyMgIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgotCi0KICIiIgogQmFzaWMgc3RhdGlzdGljcyBtb2R1bGUuCiAKQEAgLTI4LDYgKzExLDcgQEAKIEZ1bmN0aW9uICAgICAgICAgICAgRGVzY3JpcHRpb24KID09PT09PT09PT09PT09PT09PSAgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiBtZWFuICAgICAgICAgICAgICAgIEFyaXRobWV0aWMgbWVhbiAoYXZlcmFnZSkgb2YgZGF0YS4KK2hhcm1vbmljX21lYW4gICAgICAgSGFybW9uaWMgbWVhbiBvZiBkYXRhLgogbWVkaWFuICAgICAgICAgICAgICBNZWRpYW4gKG1pZGRsZSB2YWx1ZSkgb2YgZGF0YS4KIG1lZGlhbl9sb3cgICAgICAgICAgTG93IG1lZGlhbiBvZiBkYXRhLgogbWVkaWFuX2hpZ2ggICAgICAgICBIaWdoIG1lZGlhbiBvZiBkYXRhLgpAQCAtOTUsMTYgKzc5LDE4IEBACiBfX2FsbF9fID0gWyAnU3RhdGlzdGljc0Vycm9yJywKICAgICAgICAgICAgICdwc3RkZXYnLCAncHZhcmlhbmNlJywgJ3N0ZGV2JywgJ3ZhcmlhbmNlJywKICAgICAgICAgICAgICdtZWRpYW4nLCAgJ21lZGlhbl9sb3cnLCAnbWVkaWFuX2hpZ2gnLCAnbWVkaWFuX2dyb3VwZWQnLAotICAgICAgICAgICAgJ21lYW4nLCAnbW9kZScsCisgICAgICAgICAgICAnbWVhbicsICdtb2RlJywgJ2hhcm1vbmljX21lYW4nLAogICAgICAgICAgIF0KIAotCiBpbXBvcnQgY29sbGVjdGlvbnMKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgbWF0aAoraW1wb3J0IG51bWJlcnMKIAogZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKLWZyb20gaXRlcnRvb2xzIGltcG9ydCBncm91cGJ5Citmcm9tIGl0ZXJ0b29scyBpbXBvcnQgZ3JvdXBieSwgY2hhaW4KK2Zyb20gYmlzZWN0IGltcG9ydCBiaXNlY3RfbGVmdCwgYmlzZWN0X3JpZ2h0CiAKIAogCkBAIC0xMzQsNyArMTIwLDggQEAKIAogICAgIFNvbWUgc291cmNlcyBvZiByb3VuZC1vZmYgZXJyb3Igd2lsbCBiZSBhdm9pZGVkOgogCi0gICAgPj4+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+JywgJ2V4ZWMnKQorICAgICAgICBjb25zdHMgPSBbXQorICAgICAgICBmb3IgaW5zdHIgaW4gZGlzLmdldF9pbnN0cnVjdGlvbnMoY28pOgorICAgICAgICAgICAgaWYgaW5zdHIub3BuYW1lID09ICdMT0FEX0NPTlNUJzoKKyAgICAgICAgICAgICAgICBjb25zdHMuYXBwZW5kKGluc3RyLmFyZ3ZhbCkKKyAgICAgICAgcmV0dXJuIGNvbnN0cworCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3RfbG9hZF9jb25zdChzZWxmKToKKyAgICAgICAgY29uc3RzID0gW05vbmUsCisgICAgICAgICAgICAgICAgICBUcnVlLCBGYWxzZSwKKyAgICAgICAgICAgICAgICAgIDEyNCwKKyAgICAgICAgICAgICAgICAgIDIuMCwKKyAgICAgICAgICAgICAgICAgIDNqLAorICAgICAgICAgICAgICAgICAgInVuaWNvZGUiLAorICAgICAgICAgICAgICAgICAgYidieXRlcycsCisgICAgICAgICAgICAgICAgICAoMSwgMiwgMyldCisKKyAgICAgICAgY29kZSA9ICdcbicuam9pbihbJ3g9eyFyfScuZm9ybWF0KGNvbnN0KSBmb3IgY29uc3QgaW4gY29uc3RzXSkKKyAgICAgICAgY29kZSArPSAnXG54ID0gLi4uJworICAgICAgICBjb25zdHMuZXh0ZW5kKChFbGxpcHNpcywgTm9uZSkpCisKKyAgICAgICAgdHJlZSA9IGFzdC5wYXJzZShjb2RlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X2xvYWRfY29uc3QodHJlZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzKQorCisgICAgICAgICMgUmVwbGFjZSBleHByZXNzaW9uIG5vZGVzIHdpdGggY29uc3RhbnRzCisgICAgICAgIGZvciBhc3NpZ24sIGNvbnN0IGluIHppcCh0cmVlLmJvZHksIGNvbnN0cyk6CisgICAgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShhc3NpZ24sIGFzdC5Bc3NpZ24pLCBhc3QuZHVtcChhc3NpZ24pCisgICAgICAgICAgICBuZXdfbm9kZSA9IGFzdC5Db25zdGFudCh2YWx1ZT1jb25zdCkKKyAgICAgICAgICAgIGFzdC5jb3B5X2xvY2F0aW9uKG5ld19ub2RlLCBhc3NpZ24udmFsdWUpCisgICAgICAgICAgICBhc3NpZ24udmFsdWUgPSBuZXdfbm9kZQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfbG9hZF9jb25zdCh0cmVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMpCisKKyAgICBkZWYgdGVzdF9saXRlcmFsX2V2YWwoc2VsZik6CisgICAgICAgIHRyZWUgPSBhc3QucGFyc2UoIjEgKyAyIikKKyAgICAgICAgYmlub3AgPSB0cmVlLmJvZHlbMF0udmFsdWUKKworICAgICAgICBuZXdfbGVmdCA9IGFzdC5Db25zdGFudCh2YWx1ZT0xMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X2xlZnQsIGJpbm9wLmxlZnQpCisgICAgICAgIGJpbm9wLmxlZnQgPSBuZXdfbGVmdAorCisgICAgICAgIG5ld19yaWdodCA9IGFzdC5Db25zdGFudCh2YWx1ZT0yMCkKKyAgICAgICAgYXN0LmNvcHlfbG9jYXRpb24obmV3X3JpZ2h0LCBiaW5vcC5yaWdodCkKKyAgICAgICAgYmlub3AucmlnaHQgPSBuZXdfcmlnaHQKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoYmlub3ApLCAzMCkKKworCiBkZWYgbWFpbigpOgogICAgIGlmIF9fbmFtZV9fICE9ICdfX21haW5fXyc6CiAgICAgICAgIHJldHVybgpAQCAtOTQwLDggKzEwNzMsOSBAQAogICAgICAgICBmb3Igc3RhdGVtZW50cywga2luZCBpbiAoKGV4ZWNfdGVzdHMsICJleGVjIiksIChzaW5nbGVfdGVzdHMsICJzaW5nbGUiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChldmFsX3Rlc3RzLCAiZXZhbCIpKToKICAgICAgICAgICAgIHByaW50KGtpbmQrIl9yZXN1bHRzID0gWyIpCi0gICAgICAgICAgICBmb3IgcyBpbiBzdGF0ZW1lbnRzOgotICAgICAgICAgICAgICAgIHByaW50KHJlcHIodG9fdHVwbGUoY29tcGlsZShzLCAiPyIsIGtpbmQsIDB4NDAwKSkpKyIsIikKKyAgICAgICAgICAgIGZvciBzdGF0ZW1lbnQgaW4gc3RhdGVtZW50czoKKyAgICAgICAgICAgICAgICB0cmVlID0gYXN0LnBhcnNlKHN0YXRlbWVudCwgIj8iLCBraW5kKQorICAgICAgICAgICAgICAgIHByaW50KCIlciwiICUgKHRvX3R1cGxlKHRyZWUpLCkpCiAgICAgICAgICAgICBwcmludCgiXSIpCiAgICAgICAgIHByaW50KCJtYWluKCkiKQogICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CkBAIC05NzksMTkgKzExMTMsMjAgQEAKICgnTW9kdWxlJywgWygnRm9yJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgNCksICd2JywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA5KSwgJ3YnLCAoJ0xvYWQnLCkpLCBbKCdCcmVhaycsICgxLCAxMSkpXSwgW10pXSksCiAoJ01vZHVsZScsIFsoJ0ZvcicsICgxLCAwKSwgKCdOYW1lJywgKDEsIDQpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICd2JywgKCdMb2FkJywpKSwgWygnQ29udGludWUnLCAoMSwgMTEpKV0sIFtdKV0pLAogKCdNb2R1bGUnLCBbKCdGb3InLCAoMSwgMCksICgnVHVwbGUnLCAoMSwgNCksIFsoJ05hbWUnLCAoMSwgNCksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCA2KSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTEpLCAnYycsICgnTG9hZCcsKSksIFsoJ1Bhc3MnLCAoMSwgMTQpKV0sIFtdKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0xpc3RDb21wJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDExKSwgWygnTmFtZScsICgxLCAxMSksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMyksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE4KSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMiksIFsoJ05hbWUnLCAoMSwgMTIpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTQpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyMCksICdjJywgKCdMb2FkJywpKSwgW10pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDIsIDQpLCAoJ1R1cGxlJywgKDMsIDQpLCBbKCdOYW1lJywgKDMsIDQpLCAnQWEnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoNSwgNyksICdCYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICg4LCA0KSwgWygnTmFtZScsICg4LCA0KSwgJ0FhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgNCksICdCYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxMCwgMTApLCAnQ2MnLCAoJ0xvYWQnLCkpLCBbXSldKSldKSwKLSgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDExKSwgJ3cnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE2KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSksICgnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCAyMiksICdtJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAyNyksICdwJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAzMiksICdnJywgKCdMb2FkJywpKV0pXSkpXSksCi0oJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnRGljdENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNSksICdiJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ3YnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ3cnLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAneCcsICgnTG9hZCcsKSksIFtdKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAneCcsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZycsICgnTG9hZCcsKSldKV0pKV0pLAotKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ1NldENvbXAnLCAoMSwgMCksICgnTmFtZScsICgxLCAxKSwgJ3InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCA3KSwgWygnTmFtZScsICgxLCA3KSwgJ2wnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDkpLCAnbScsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICd4JywgKCdMb2FkJywpKSwgW10pXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnTGlzdENvbXAnLCAoMSwgMSksICgnVHVwbGUnLCAoMSwgMiksIFsoJ05hbWUnLCAoMSwgMiksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDQpLCAnYicsICgnTG9hZCcsKSldLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAnYScsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAnYicsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICdjJywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ1R1cGxlJywgKDEsIDIpLCBbKCdOYW1lJywgKDEsIDIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA0KSwgJ2InLCAoJ0xvYWQnLCkpXSwgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnVHVwbGUnLCAoMSwgMTEpLCBbKCdOYW1lJywgKDEsIDExKSwgJ2EnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEzKSwgJ2InLCAoJ1N0b3JlJywpKV0sICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTgpLCAnYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0dlbmVyYXRvckV4cCcsICgxLCAxKSwgKCdUdXBsZScsICgxLCAyKSwgWygnTmFtZScsICgxLCAyKSwgJ2EnLCAoJ0xvYWQnLCkpLCAoJ05hbWUnLCAoMSwgNCksICdiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDEyKSwgWygnTmFtZScsICgxLCAxMiksICdhJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxNCksICdiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDIwKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdHZW5lcmF0b3JFeHAnLCAoMiwgNCksICgnVHVwbGUnLCAoMywgNCksIFsoJ05hbWUnLCAoMywgNCksICdBYScsICgnTG9hZCcsKSksICgnTmFtZScsICg1LCA3KSwgJ0JiJywgKCdMb2FkJywpKV0sICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDgsIDQpLCBbKCdOYW1lJywgKDgsIDQpLCAnQWEnLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCA0KSwgJ0JiJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEwLCAxMCksICdDYycsICgnTG9hZCcsKSksIFtdLCAwKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0RpY3RDb21wJywgKDEsIDApLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgKCdOYW1lJywgKDEsIDUpLCAnYicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgMTEpLCAndycsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTYpLCAneCcsICgnTG9hZCcsKSksIFtdLCAwKSwgKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDIyKSwgJ20nLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDI3KSwgJ3AnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDMyKSwgJ2cnLCAoJ0xvYWQnLCkpXSwgMCldKSldKSwKKygnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgxLCA1KSwgJ2InLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdUdXBsZScsICgxLCAxMSksIFsoJ05hbWUnLCAoMSwgMTEpLCAndicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTMpLCAndycsICgnU3RvcmUnLCkpXSwgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxOCksICd4JywgKCdMb2FkJywpKSwgW10sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdsJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICd4JywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdnJywgKCdMb2FkJywpKV0sIDApXSkpXSksCisoJ01vZHVsZScsIFsoJ0V4cHInLCAoMSwgMCksICgnU2V0Q29tcCcsICgxLCAwKSwgKCdOYW1lJywgKDEsIDEpLCAncicsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ1R1cGxlJywgKDEsIDcpLCBbKCdOYW1lJywgKDEsIDcpLCAnbCcsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgOSksICdtJywgKCdTdG9yZScsKSldLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDE0KSwgJ3gnLCAoJ0xvYWQnLCkpLCBbXSwgMCldKSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnRXhwcicsICgyLCAxKSwgKCdBd2FpdCcsICgyLCAxKSwgKCdDYWxsJywgKDIsIDcpLCAoJ05hbWUnLCAoMiwgNyksICdzb21ldGhpbmcnLCAoJ0xvYWQnLCkpLCBbXSwgW10pKSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnQXN5bmNGdW5jdGlvbkRlZicsICgxLCA2KSwgJ2YnLCAoJ2FyZ3VtZW50cycsIFtdLCBOb25lLCBbXSwgW10sIE5vbmUsIFtdKSwgWygnQXN5bmNGb3InLCAoMiwgNyksICgnTmFtZScsICgyLCAxMSksICdlJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxNiksICdpJywgKCdMb2FkJywpKSwgWygnRXhwcicsICgyLCAxOSksICgnTnVtJywgKDIsIDE5KSwgMSkpXSwgWygnRXhwcicsICgzLCA3KSwgKCdOdW0nLCAoMywgNyksIDIpKV0pXSwgW10sIE5vbmUpXSksCiAoJ01vZHVsZScsIFsoJ0FzeW5jRnVuY3Rpb25EZWYnLCAoMSwgNiksICdmJywgKCdhcmd1bWVudHMnLCBbXSwgTm9uZSwgW10sIFtdLCBOb25lLCBbXSksIFsoJ0FzeW5jV2l0aCcsICgyLCA3KSwgWygnd2l0aGl0ZW0nLCAoJ05hbWUnLCAoMiwgMTIpLCAnYScsICgnTG9hZCcsKSksICgnTmFtZScsICgyLCAxNyksICdiJywgKCdTdG9yZScsKSkpXSwgWygnRXhwcicsICgyLCAyMCksICgnTnVtJywgKDIsIDIwKSwgMSkpXSldLCBbXSwgTm9uZSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdEaWN0JywgKDEsIDApLCBbTm9uZSwgKCdOdW0nLCAoMSwgMTApLCAyKV0sIFsoJ0RpY3QnLCAoMSwgMyksIFsoJ051bScsICgxLCA0KSwgMSldLCBbKCdOdW0nLCAoMSwgNiksIDIpXSksICgnTnVtJywgKDEsIDEyKSwgMyldKSldKSwKICgnTW9kdWxlJywgWygnRXhwcicsICgxLCAwKSwgKCdTZXQnLCAoMSwgMCksIFsoJ1N0YXJyZWQnLCAoMSwgMSksICgnU2V0JywgKDEsIDIpLCBbKCdOdW0nLCAoMSwgMyksIDEpLCAoJ051bScsICgxLCA2KSwgMildKSwgKCdMb2FkJywpKSwgKCdOdW0nLCAoMSwgMTApLCAzKV0pKV0pLAorKCdNb2R1bGUnLCBbKCdBc3luY0Z1bmN0aW9uRGVmJywgKDEsIDYpLCAnZicsICgnYXJndW1lbnRzJywgW10sIE5vbmUsIFtdLCBbXSwgTm9uZSwgW10pLCBbKCdFeHByJywgKDIsIDEpLCAoJ0xpc3RDb21wJywgKDIsIDIpLCAoJ05hbWUnLCAoMiwgMiksICdpJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgyLCAxNCksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgyLCAxOSksICdjJywgKCdMb2FkJywpKSwgW10sIDEpXSkpXSwgW10sIE5vbmUpXSksCiBdCiBzaW5nbGVfcmVzdWx0cyA9IFsKICgnSW50ZXJhY3RpdmUnLCBbKCdFeHByJywgKDEsIDApLCAoJ0Jpbk9wJywgKDEsIDApLCAoJ051bScsICgxLCAwKSwgMSksICgnQWRkJywpLCAoJ051bScsICgxLCAyKSwgMikpKV0pLApAQCAtMTAwNiw4ICsxMTQxLDggQEAKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgW10sIFtdKSksCiAoJ0V4cHJlc3Npb24nLCAoJ1NldCcsICgxLCAwKSwgWygnTmFtZUNvbnN0YW50JywgKDEsIDEpLCBOb25lKV0pKSwKICgnRXhwcmVzc2lvbicsICgnRGljdCcsICgxLCAwKSwgWygnTnVtJywgKDIsIDYpLCAxKV0sIFsoJ051bScsICg0LCAxMCksIDIpXSkpLAotKCdFeHByZXNzaW9uJywgKCdMaXN0Q29tcCcsICgxLCAxKSwgKCdOYW1lJywgKDEsIDEpLCAnYScsICgnTG9hZCcsKSksIFsoJ2NvbXByZWhlbnNpb24nLCAoJ05hbWUnLCAoMSwgNyksICdiJywgKCdTdG9yZScsKSksICgnTmFtZScsICgxLCAxMiksICdjJywgKCdMb2FkJywpKSwgWygnTmFtZScsICgxLCAxNyksICdkJywgKCdMb2FkJywpKV0pXSkpLAotKCdFeHByZXNzaW9uJywgKCdHZW5lcmF0b3JFeHAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldKV0pKSwKKygnRXhwcmVzc2lvbicsICgnTGlzdENvbXAnLCAoMSwgMSksICgnTmFtZScsICgxLCAxKSwgJ2EnLCAoJ0xvYWQnLCkpLCBbKCdjb21wcmVoZW5zaW9uJywgKCdOYW1lJywgKDEsIDcpLCAnYicsICgnU3RvcmUnLCkpLCAoJ05hbWUnLCAoMSwgMTIpLCAnYycsICgnTG9hZCcsKSksIFsoJ05hbWUnLCAoMSwgMTcpLCAnZCcsICgnTG9hZCcsKSldLCAwKV0pKSwKKygnRXhwcmVzc2lvbicsICgnR2VuZXJhdG9yRXhwJywgKDEsIDEpLCAoJ05hbWUnLCAoMSwgMSksICdhJywgKCdMb2FkJywpKSwgWygnY29tcHJlaGVuc2lvbicsICgnTmFtZScsICgxLCA3KSwgJ2InLCAoJ1N0b3JlJywpKSwgKCdOYW1lJywgKDEsIDEyKSwgJ2MnLCAoJ0xvYWQnLCkpLCBbKCdOYW1lJywgKDEsIDE3KSwgJ2QnLCAoJ0xvYWQnLCkpXSwgMCldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NvbXBhcmUnLCAoMSwgMCksICgnTnVtJywgKDEsIDApLCAxKSwgWygnTHQnLCksICgnTHQnLCldLCBbKCdOdW0nLCAoMSwgNCksIDIpLCAoJ051bScsICgxLCA4KSwgMyldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ0NhbGwnLCAoMSwgMCksICgnTmFtZScsICgxLCAwKSwgJ2YnLCAoJ0xvYWQnLCkpLCBbKCdOdW0nLCAoMSwgMiksIDEpLCAoJ051bScsICgxLCA0KSwgMiksICgnU3RhcnJlZCcsICgxLCAxMCksICgnTmFtZScsICgxLCAxMSksICdkJywgKCdMb2FkJywpKSwgKCdMb2FkJywpKV0sIFsoJ2tleXdvcmQnLCAnYycsICgnTnVtJywgKDEsIDgpLCAzKSksICgna2V5d29yZCcsIE5vbmUsICgnTmFtZScsICgxLCAxNSksICdlJywgKCdMb2FkJywpKSldKSksCiAoJ0V4cHJlc3Npb24nLCAoJ051bScsICgxLCAwKSwgMTApKSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNnZW4ucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxYjFiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X2FzeW5jZ2VuLnB5CkBAIC0wLDAgKzEsODIzIEBACitpbXBvcnQgYXN5bmNpbworaW1wb3J0IGluc3BlY3QKK2ltcG9ydCBzeXMKK2ltcG9ydCB0eXBlcworaW1wb3J0IHVuaXR0ZXN0CisKK2Zyb20gdW5pdHRlc3QgaW1wb3J0IG1vY2sKKworCitjbGFzcyBBd2FpdEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKworCitAdHlwZXMuY29yb3V0aW5lCitkZWYgYXdhaXRhYmxlKCosIHRocm93PUZhbHNlKToKKyAgICBpZiB0aHJvdzoKKyAgICAgICAgeWllbGQgKCd0aHJvdycsKQorICAgIGVsc2U6CisgICAgICAgIHlpZWxkICgncmVzdWx0JywpCisKKworZGVmIHJ1bl91bnRpbF9jb21wbGV0ZShjb3JvKToKKyAgICBleGMgPSBGYWxzZQorICAgIHdoaWxlIFRydWU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGlmIGV4YzoKKyAgICAgICAgICAgICAgICBleGMgPSBGYWxzZQorICAgICAgICAgICAgICAgIGZ1dCA9IGNvcm8udGhyb3coQXdhaXRFeGNlcHRpb24pCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGZ1dCA9IGNvcm8uc2VuZChOb25lKQorICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgIHJldHVybiBleC5hcmdzWzBdCisKKyAgICAgICAgaWYgZnV0ID09ICgndGhyb3cnLCk6CisgICAgICAgICAgICBleGMgPSBUcnVlCisKKworZGVmIHRvX2xpc3QoZ2VuKToKKyAgICBhc3luYyBkZWYgaXRlcmF0ZSgpOgorICAgICAgICByZXMgPSBbXQorICAgICAgICBhc3luYyBmb3IgaSBpbiBnZW46CisgICAgICAgICAgICByZXMuYXBwZW5kKGkpCisgICAgICAgIHJldHVybiByZXMKKworICAgIHJldHVybiBydW5fdW50aWxfY29tcGxldGUoaXRlcmF0ZSgpKQorCisKK2NsYXNzIEFzeW5jR2VuU3ludGF4VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAxKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYWJjCisgICAgICAgICAgICB5aWVsZCBmcm9tIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICd5aWVsZCBmcm9tLippbnNpZGUgYXN5bmMnKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wMihzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkIGZyb20gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3lpZWxkIGZyb20uKmluc2lkZSBhc3luYycpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzAzKHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgYXdhaXQgYWJjCisgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIDEyMworICAgICAgICAnJycKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdyZXR1cm4uKnZhbHVlLiphc3luYyBnZW4nKToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwge30sIHt9KQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX3N5bnRheF8wNChzZWxmKToKKyAgICAgICAgY29kZSA9ICcnJ2FzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIHlpZWxkCisgICAgICAgICAgICByZXR1cm4gMTIzCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fc3ludGF4XzA1KHNlbGYpOgorICAgICAgICBjb2RlID0gJycnYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgaWYgMDoKKyAgICAgICAgICAgICAgICB5aWVsZAorICAgICAgICAgICAgcmV0dXJuIDEyCisgICAgICAgICcnJworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ3JldHVybi4qdmFsdWUuKmFzeW5jIGdlbicpOgorICAgICAgICAgICAgZXhlYyhjb2RlLCB7fSwge30pCisKKworY2xhc3MgQXN5bmNHZW5UZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiBjb21wYXJlX2dlbmVyYXRvcnMoc2VsZiwgc3luY19nZW4sIGFzeW5jX2dlbik6CisgICAgICAgIGRlZiBzeW5jX2l0ZXJhdGUoZyk6CisgICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoZy5fX25leHRfXygpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uOgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKCdTVE9QJykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICByZXMuYXBwZW5kKHN0cih0eXBlKGV4KSkpCisgICAgICAgICAgICByZXR1cm4gcmVzCisKKyAgICAgICAgZGVmIGFzeW5jX2l0ZXJhdGUoZyk6CisgICAgICAgICAgICByZXMgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGcuX19hbmV4dF9fKCkuX19uZXh0X18oKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoJ1NUT1AnKQorICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgICAgICBpZiBleC5hcmdzOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZChleC5hcmdzWzBdKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzLmFwcGVuZCgnRU1QVFkgU3RvcEl0ZXJhdGlvbicpCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgICAgIHJlcy5hcHBlbmQoc3RyKHR5cGUoZXgpKSkKKyAgICAgICAgICAgIHJldHVybiByZXMKKworICAgICAgICBzeW5jX2dlbl9yZXN1bHQgPSBzeW5jX2l0ZXJhdGUoc3luY19nZW4pCisgICAgICAgIGFzeW5jX2dlbl9yZXN1bHQgPSBhc3luY19pdGVyYXRlKGFzeW5jX2dlbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeW5jX2dlbl9yZXN1bHQsIGFzeW5jX2dlbl9yZXN1bHQpCisgICAgICAgIHJldHVybiBhc3luY19nZW5fcmVzdWx0CisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5faXRlcmF0aW9uXzAxKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgYSA9IHlpZWxkIDEyMworICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhhLCBOb25lKQorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDQ1NgorICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIHlpZWxkIDc4OQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodG9fbGlzdChnZW4oKSksIFsxMjMsIDQ1NiwgNzg5XSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9pdGVyYXRpb25fMDIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIGFpID0gZy5fX2FpdGVyX18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhaS5fX2FuZXh0X18oKS5fX25leHRfXygpLCAoJ3Jlc3VsdCcsKSkKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisgICAgICAgIGV4Y2VwdCBTdG9wQXN5bmNJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGV4LmFyZ3MpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BBc3luY0l0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzAzKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUodGhyb3c9VHJ1ZSkKKyAgICAgICAgICAgIHlpZWxkIDQ1NgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXdhaXRFeGNlcHRpb24pOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDQoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIGF3YWl0IGF3YWl0YWJsZSgpCisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgZyA9IGdlbigpCisgICAgICAgIGFpID0gZy5fX2FpdGVyX18oKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCksICgncmVzdWx0JywpKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGFpLl9fYW5leHRfXygpLl9fbmV4dF9fKCkKKyAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4LmFyZ3NbMF0sIDEyMykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBhaS5fX2FuZXh0X18oKS5fX25leHRfXygpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA1KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIHJhaXNlIFN0b3BBc3luY0l0ZXJhdGlvbgorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChSdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYXN5bmMgZ2VuZXJhdG9yLipTdG9wQXN5bmNJdGVyYXRpb24nKToKKyAgICAgICAgICAgIHRvX2xpc3QoZ2VuKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fZXhjZXB0aW9uXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZ2VuKCk6CisgICAgICAgICAgICB5aWVsZCAxMjMKKyAgICAgICAgICAgIHJhaXNlIFN0b3BJdGVyYXRpb24KKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2FzeW5jIGdlbmVyYXRvci4qU3RvcEl0ZXJhdGlvbicpOgorICAgICAgICAgICAgdG9fbGlzdChnZW4oKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9leGNlcHRpb25fMDcoc2VsZik6CisgICAgICAgIGRlZiBzeW5jX2dlbigpOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgICAgICB5aWVsZCAxMDAKKworICAgICAgICBhc3luYyBkZWYgYXN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wOChzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8wOShzZWxmKToKKyAgICAgICAgZGVmIHN5bmNfZ2VuKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIGFzeW5jIGRlZiBhc3luY19nZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhd2FpdGFibGUoKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXdhaXRhYmxlKCkKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgICAgIHlpZWxkIDEwMAorCisgICAgICAgIHNlbGYuY29tcGFyZV9nZW5lcmF0b3JzKHN5bmNfZ2VuKCksIGFzeW5jX2dlbigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2V4Y2VwdGlvbl8xMChzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgeWllbGQgMTIzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLU5vbmUgdmFsdWUgLiogYXN5bmMgZ2VuZXJhdG9yIik6CisgICAgICAgICAgICBnZW4oKS5fX2FuZXh0X18oKS5zZW5kKDEwMCkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hcGlfMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEyMworCisgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5fX25hbWVfXywgJ2dlbicpCisgICAgICAgIGcuX19uYW1lX18gPSAnMTIzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19uYW1lX18sICcxMjMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJy5nZW4nLCBnLl9fcXVhbG5hbWVfXykKKyAgICAgICAgZy5fX3F1YWxuYW1lX18gPSAnMTIzJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGcuX19xdWFsbmFtZV9fLCAnMTIzJykKKworICAgICAgICBzZWxmLmFzc2VydElzTm9uZShnLmFnX2F3YWl0KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZy5hZ19mcmFtZSwgdHlwZXMuRnJhbWVUeXBlKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGcuYWdfcnVubmluZykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGcuYWdfY29kZSwgdHlwZXMuQ29kZVR5cGUpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGluc3BlY3QuaXNhd2FpdGFibGUoZy5hY2xvc2UoKSkpCisKKworY2xhc3MgQXN5bmNHZW5Bc3luY2lvVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYubG9vcCA9IGFzeW5jaW8ubmV3X2V2ZW50X2xvb3AoKQorICAgICAgICBhc3luY2lvLnNldF9ldmVudF9sb29wKE5vbmUpCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHNlbGYubG9vcC5jbG9zZSgpCisgICAgICAgIHNlbGYubG9vcCA9IE5vbmUKKworICAgIGFzeW5jIGRlZiB0b19saXN0KHNlbGYsIGdlbik6CisgICAgICAgIHJlcyA9IFtdCisgICAgICAgIGFzeW5jIGZvciBpIGluIGdlbjoKKyAgICAgICAgICAgIHJlcy5hcHBlbmQoaSkKKyAgICAgICAgcmV0dXJuIHJlcworCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICB5aWVsZCAzCisKKyAgICAgICAgcmVzID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoZ2VuKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcywgWzEsIDJdKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDIoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICAxIC8gMAorICAgICAgICAgICAgeWllbGQgMworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShzZWxmLnRvX2xpc3QoZ2VuKCkpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fMDMoc2VsZik6CisgICAgICAgIGxvb3AgPSBzZWxmLmxvb3AKKworICAgICAgICBjbGFzcyBHZW46CisgICAgICAgICAgICBhc3luYyBkZWYgX19haXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9bG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCAyCisKKyAgICAgICAgcmVzID0gbG9vcC5ydW5fdW50aWxfY29tcGxldGUoc2VsZi50b19saXN0KEdlbigpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXMsIFsxLCAyXSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX2FuZXh0XzA0KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgICAgICAgICB5aWVsZCAzCisgICAgICAgICAgICBleGNlcHQgWmVyb0RpdmlzaW9uRXJyb3I6CisgICAgICAgICAgICAgICAgeWllbGQgMTAwMAorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHlpZWxkIDQKKworICAgICAgICBhc3luYyBkZWYgcnVuMSgpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCA0KQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBhc3luYyBkZWYgcnVuMigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGF3YWl0IGl0Ll9fYW5leHRfXygpLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCBpdC5fX2FuZXh0X18oKSwgMikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS50aHJvdyhaZXJvRGl2aXNpb25FcnJvcikKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTAwMCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdTdG9wSXRlcmF0aW9uIHdhcyBub3QgcmFpc2VkJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDQpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bjEoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4yKCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hbmV4dF8wNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgIHYgPSB5aWVsZCB2CisgICAgICAgICAgICB5aWVsZCB2ICogMTAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgaXQgPSBmb28oKS5fX2FpdGVyX18oKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkuc2VuZChOb25lKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgaXQuX19hbmV4dF9fKCkuc2VuZCgxMCkKKyAgICAgICAgICAgIGV4Y2VwdCBTdG9wSXRlcmF0aW9uIGFzIGV4OgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXguYXJnc1swXSwgMTApCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnU3RvcEl0ZXJhdGlvbiB3YXMgbm90IHJhaXNlZCcpCisKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBpdC5fX2FuZXh0X18oKS5zZW5kKDEyKQorICAgICAgICAgICAgZXhjZXB0IFN0b3BJdGVyYXRpb24gYXMgZXg6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleC5hcmdzWzBdLCAxMjAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmZhaWwoJ1N0b3BJdGVyYXRpb24gd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BBc3luY0l0ZXJhdGlvbik6CisgICAgICAgICAgICAgICAgYXdhaXQgaXQuX19hbmV4dF9fKCkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA2KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgeWllbGQgMQorICAgICAgICAgICAgICAgIDEgLyAwCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgMTIKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIGF3YWl0IGl0Ll9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnZW4uYWNsb3NlKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCisgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJhc3luYyBnZW5lcmF0b3IgaWdub3JlZCBHZW5lcmF0b3JFeGl0Iik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA3KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgMSAvIDAKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgKz0gMQorICAgICAgICAgICAgRE9ORSArPSAxMDAwCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZ2VuID0gZm9vKCkKKyAgICAgICAgICAgIGl0ID0gZ2VuLl9fYWl0ZXJfXygpCisgICAgICAgICAgICBhd2FpdCBpdC5fX2FuZXh0X18oKQorICAgICAgICAgICAgYXdhaXQgZ2VuLmFjbG9zZSgpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYWNsb3NlXzA4KHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGZ1dCA9IGFzeW5jaW8uRnV0dXJlKGxvb3A9c2VsZi5sb29wKQorCisgICAgICAgIGFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgZnV0CisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgMgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSArPSAxCisgICAgICAgICAgICBET05FICs9IDEwMDAKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnZW4gPSBmb28oKQorICAgICAgICAgICAgaXQgPSBnZW4uX19haXRlcl9fKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXdhaXQgaXQuX19hbmV4dF9fKCksIDEpCisgICAgICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKGl0Ll9fYW5leHRfXygpKQorICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIGF3YWl0IGdlbi5hY2xvc2UoKQorICAgICAgICAgICAgcmV0dXJuIHQKKworICAgICAgICB0ID0gc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgICAgICMgU2lsZW5jZSBSZXNvdXJjZVdhcm5pbmdzCisgICAgICAgIGZ1dC5jYW5jZWwoKQorICAgICAgICB0LmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19nY19hY2xvc2VfMDkoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBhd2FpdCBnLl9fYW5leHRfXygpCisgICAgICAgICAgICBkZWwgZworCisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6CisgICAgICAgIGRlZiBzZ2VuKCk6CisgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgc2cgPSBzZ2VuKCkKKyAgICAgICAgdiA9IHNnLnNlbmQoTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorICAgICAgICB2ID0gc2cuc2VuZCgxMDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMjAwKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHYgPSB5aWVsZCAxCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZCgxMDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMCkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTdG9wQXN5bmNJdGVyYXRpb24pOgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoTm9uZSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hc2VuZF8wMihzZWxmKToKKyAgICAgICAgRE9ORSA9IDAKKworICAgICAgICBhc3luYyBkZWYgc2xlZXBfbl9jcmFzaChkZWxheSk6CisgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKGRlbGF5LCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIDEgLyAwCisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXNlbmRfMDMoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBhd2FpdCBzbGVlcF9uX2NyYXNoKDAuMDEpCisgICAgICAgICAgICAgICAgRE9ORSArPSAxMDAwCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIERPTkUgPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bigpOgorICAgICAgICAgICAgZyA9IGdlbigpCisKKyAgICAgICAgICAgIHYgPSBhd2FpdCBnLmFzZW5kKE5vbmUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisKKyAgICAgICAgICAgIGF3YWl0IGcuYXNlbmQoMTAwKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19hdGhyb3dfMDEoc2VsZik6CisgICAgICAgIERPTkUgPSAwCisKKyAgICAgICAgY2xhc3MgRm9vRXIoRXhjZXB0aW9uKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICAjIFNhbml0eSBjaGVjazoKKyAgICAgICAgZGVmIHNnZW4oKToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgZXhjZXB0IEZvb0VyOgorICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICB5aWVsZCB2ICogMgorICAgICAgICBzZyA9IHNnZW4oKQorICAgICAgICB2ID0gc2cuc2VuZChOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDEpCisgICAgICAgIHYgPSBzZy50aHJvdyhGb29FcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAyMDAwKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24pOgorICAgICAgICAgICAgc2cuc2VuZChOb25lKQorCisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIG5vbmxvY2FsIERPTkUKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgdiA9IHlpZWxkIDEKKyAgICAgICAgICAgICAgICBleGNlcHQgRm9vRXI6CisgICAgICAgICAgICAgICAgICAgIHYgPSAxMDAwCisgICAgICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgeWllbGQgdiAqIDIKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgICMgcmV0dXJuCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBET05FID0gMQorCisgICAgICAgIGFzeW5jIGRlZiBydW4oKToKKyAgICAgICAgICAgIGcgPSBnZW4oKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hc2VuZChOb25lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2LCAxKQorCisgICAgICAgICAgICB2ID0gYXdhaXQgZy5hdGhyb3coRm9vRXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYsIDIwMDApCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEFzeW5jSXRlcmF0aW9uKToKKyAgICAgICAgICAgICAgICBhd2FpdCBnLmFzZW5kKE5vbmUpCisKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShydW4oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorCisgICAgZGVmIHRlc3RfYXN5bmNfZ2VuX2FzeW5jaW9fYXRocm93XzAyKHNlbGYpOgorICAgICAgICBET05FID0gMAorCisgICAgICAgIGNsYXNzIEZvb0VyKEV4Y2VwdGlvbik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgYXN5bmMgZGVmIHNsZWVwX25fY3Jhc2goZGVsYXkpOgorICAgICAgICAgICAgZnV0ID0gYXN5bmNpby5lbnN1cmVfZnV0dXJlKGFzeW5jaW8uc2xlZXAoZGVsYXksIGxvb3A9c2VsZi5sb29wKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgIHNlbGYubG9vcC5jYWxsX2xhdGVyKGRlbGF5IC8gMiwgbGFtYmRhOiBmdXQuY2FuY2VsKCkpCisgICAgICAgICAgICByZXR1cm4gYXdhaXQgZnV0CisKKyAgICAgICAgYXN5bmMgZGVmIGdlbigpOgorICAgICAgICAgICAgbm9ubG9jYWwgRE9ORQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICB2ID0geWllbGQgMQorICAgICAgICAgICAgICAgIGV4Y2VwdCBGb29FcjoKKyAgICAgICAgICAgICAgICAgICAgYXdhaXQgc2xlZXBfbl9jcmFzaCgwLjAxKQorICAgICAgICAgICAgICAgIHlpZWxkIHYgKiAyCisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLjAxLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICAjIHJldHVybgorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKDAuMDEsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIGF3YWl0IGFzeW5jaW8uc2xlZXAoMC4wMSwgbG9vcD1zZWxmLmxvb3ApCisgICAgICAgICAgICAgICAgRE9ORSA9IDEKKworICAgICAgICBhc3luYyBkZWYgcnVuKCk6CisgICAgICAgICAgICBnID0gZ2VuKCkKKworICAgICAgICAgICAgdiA9IGF3YWl0IGcuYXNlbmQoTm9uZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodiwgMSkKKworICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGF3YWl0IGcuYXRocm93KEZvb0VyKQorICAgICAgICAgICAgZXhjZXB0IGFzeW5jaW8uQ2FuY2VsbGVkRXJyb3I6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChET05FLCAxKQorICAgICAgICAgICAgICAgIHJhaXNlCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnQ2FuY2VsbGVkRXJyb3Igd2FzIG5vdCByYWlzZWQnKQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYXN5bmNpby5DYW5jZWxsZWRFcnJvcik6CisgICAgICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHJ1bigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKERPTkUsIDEpCisKKyAgICBkZWYgdGVzdF9hc3luY19nZW5fYXN5bmNpb19zaHV0ZG93bl8wMShzZWxmKToKKyAgICAgICAgZmluYWxpemVkID0gMAorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0ZXIodGltZW91dCk6CisgICAgICAgICAgICBub25sb2NhbCBmaW5hbGl6ZWQKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKHRpbWVvdXQsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgYXdhaXQgYXN5bmNpby5zbGVlcCgwLCBsb29wPXNlbGYubG9vcCkKKyAgICAgICAgICAgICAgICBmaW5hbGl6ZWQgKz0gMQorCisgICAgICAgIGFzeW5jIGRlZiB3YWl0KCk6CisgICAgICAgICAgICBhc3luYyBmb3IgXyBpbiB3YWl0ZXIoMSk6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgICAgIHQxID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHdhaXQoKSkKKyAgICAgICAgdDIgPSBzZWxmLmxvb3AuY3JlYXRlX3Rhc2sod2FpdCgpKQorCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubG9vcC5zaHV0ZG93bl9hc3luY2dlbnMoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaW5hbGl6ZWQsIDIpCisKKyAgICAgICAgIyBTaWxlbmNlIHdhcm5pbmdzCisgICAgICAgIHQxLmNhbmNlbCgpCisgICAgICAgIHQyLmNhbmNlbCgpCisgICAgICAgIHNlbGYubG9vcC5ydW5fdW50aWxfY29tcGxldGUoYXN5bmNpby5zbGVlcCgwLjEsIGxvb3A9c2VsZi5sb29wKSkKKworICAgIGRlZiB0ZXN0X2FzeW5jX2dlbl9hc3luY2lvX3NodXRkb3duXzAyKHNlbGYpOgorICAgICAgICBsb2dnZWQgPSAwCisKKyAgICAgICAgZGVmIGxvZ2dlcihsb29wLCBjb250ZXh0KToKKyAgICAgICAgICAgIG5vbmxvY2FsIGxvZ2dlZAorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignYXN5bmNnZW4nLCBjb250ZXh0KQorICAgICAgICAgICAgZXhwZWN0ZWQgPSAnYW4gZXJyb3Igb2NjdXJyZWQgZHVyaW5nIGNsb3Npbmcgb2YgYXN5bmNocm9ub3VzJworICAgICAgICAgICAgaWYgZXhwZWN0ZWQgaW4gY29udGV4dFsnbWVzc2FnZSddOgorICAgICAgICAgICAgICAgIGxvZ2dlZCArPSAxCisKKyAgICAgICAgYXN5bmMgZGVmIHdhaXRlcih0aW1lb3V0KToKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBhd2FpdCBhc3luY2lvLnNsZWVwKHRpbWVvdXQsIGxvb3A9c2VsZi5sb29wKQorICAgICAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICAgICAgMSAvIDAKKworICAgICAgICBhc3luYyBkZWYgd2FpdCgpOgorICAgICAgICAgICAgYXN5bmMgZm9yIF8gaW4gd2FpdGVyKDEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB0ID0gc2VsZi5sb29wLmNyZWF0ZV90YXNrKHdhaXQoKSkKKyAgICAgICAgc2VsZi5sb29wLnJ1bl91bnRpbF9jb21wbGV0ZShhc3luY2lvLnNsZWVwKDAuMSwgbG9vcD1zZWxmLmxvb3ApKQorCisgICAgICAgIHNlbGYubG9vcC5zZXRfZXhjZXB0aW9uX2hhbmRsZXIobG9nZ2VyKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKHNlbGYubG9vcC5zaHV0ZG93bl9hc3luY2dlbnMoKSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZ2dlZCwgMSkKKworICAgICAgICAjIFNpbGVuY2Ugd2FybmluZ3MKKyAgICAgICAgdC5jYW5jZWwoKQorICAgICAgICBzZWxmLmxvb3AucnVuX3VudGlsX2NvbXBsZXRlKGFzeW5jaW8uc2xlZXAoMC4xLCBsb29wPXNlbGYubG9vcCkpCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5IGIvTGliL3Rlc3QvdGVzdF9hc3luY2hhdC5weQppbmRleCAzYTMzZmM4Li4wZWJhNzZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2FzeW5jaGF0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYXN5bmNoYXQucHkKQEAgLTEyLDcgKzEyLDYgQEAKIGltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IHVuaXR0ZXN0Lm1vY2sKIHRyeToKICAgICBpbXBvcnQgdGhyZWFkaW5nCkBAIC0yOTcsMzcgKzI5Niw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYXN5bmNoYXQuZmluZF9wcmVmaXhfYXRfZW5kKCJxd2VydHlka2pmIiwgIlxyXG4iKSwgMCkKIAogCi1jbGFzcyBUZXN0Rmlmbyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIGNtOgotICAgICAgICAgICAgZiA9IGFzeW5jaGF0LmZpZm8oKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCi0gICAgICAgIGYucHVzaCg3KQotICAgICAgICBmLnB1c2goYidhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maXJzdCgpLCA3KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCA3KSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZiksIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5maXJzdCgpLCBiJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuaXNfZW1wdHkoKSwgRmFsc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDEsIGInYScpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihmKSwgMCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmlzX2VtcHR5KCksIFRydWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5wb3AoKSwgKDAsIE5vbmUpKQotCi0gICAgZGVmIHRlc3RfZ2l2ZW5fbGlzdChzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgY206Ci0gICAgICAgICAgICBmID0gYXN5bmNoYXQuZmlmbyhbYid4JywgMTcsIDNdKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS53YXJuaW5nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZmlmbyBjbGFzcyB3aWxsIGJlIHJlbW92ZWQgaW4gUHl0aG9uIDMuNiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGYpLCAzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCBiJ3gnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMSwgMTcpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucG9wKCksICgxLCAzKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnBvcCgpLCAoMCwgTm9uZSkpCi0KLQogY2xhc3MgVGVzdE5vdENvbm5lY3RlZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGlzYWxsb3dfbmVnYXRpdmVfdGVybWluYXRvcihzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMTEyNTkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkgYi9MaWIvdGVzdC90ZXN0X2FzeW5jb3JlLnB5CmluZGV4IDM4NTc5MTYuLmRiZWU1OTMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYXN5bmNvcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9hc3luY29yZS5weQpAQCAtMTEsNiArMTEsOSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9hdWdhc3NpZ24ucHkgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQppbmRleCA1MDkzZTlkLi41OTMwZDllIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2F1Z2Fzc2lnbi5weQpAQCAtODMsNiArODMsMTAgQEAKICAgICAgICAgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCB2YWwpOgogICAgICAgICAgICAgICAgIHJldHVybiBhdWdfdGVzdDMoc2VsZi52YWwgKyB2YWwpCiAKKyAgICAgICAgY2xhc3MgYXVnX3Rlc3Q0KGF1Z190ZXN0Myk6CisgICAgICAgICAgICAiIiJCbG9ja3MgaW5oZXJpdGFuY2UsIGFuZCBmYWxsYmFjayB0byBfX2FkZF9fIiIiCisgICAgICAgICAgICBfX2lhZGRfXyA9IE5vbmUKKwogICAgICAgICB4ID0gYXVnX3Rlc3QoMSkKICAgICAgICAgeSA9IHgKICAgICAgICAgeCArPSAxMApAQCAtMTA2LDYgKzExMCwxMCBAQAogICAgICAgICBzZWxmLmFzc2VydFRydWUoeSBpcyBub3QgeCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnZhbCwgMTMpCiAKKyAgICAgICAgeCA9IGF1Z190ZXN0NCg0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB4ICs9IDEwCisKIAogICAgIGRlZiB0ZXN0Q3VzdG9tTWV0aG9kczIodGVzdF9zZWxmKToKICAgICAgICAgb3V0cHV0ID0gW10KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5IGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CnNpbWlsYXJpdHkgaW5kZXggOTklCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMzUyLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2Jhc2VleGNlcHRpb24ucHkKaW5kZXggN2M5OGM0Ni4uMjdkNTE0ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzNTIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iYXNlZXhjZXB0aW9uLnB5CkBAIC0xLDYgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCB3YXJuaW5ncwogaW1wb3J0IG9zCiBmcm9tIHBsYXRmb3JtIGltcG9ydCBzeXN0ZW0gYXMgcGxhdGZvcm1fc3lzdGVtCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYmlnbWVtLnB5IGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKaW5kZXggNDBhYzliZi4uNjEzM2JiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9iaWdtZW0ucHkKQEAgLTE0LDcgKzE0LDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3lzCi1pbXBvcnQgZnVuY3Rvb2xzCiAKICMgVGhlc2UgdGVzdHMgYWxsIHVzZSBvbmUgb2YgdGhlIGJpZ21lbXRlc3QgZGVjb3JhdG9ycyB0byBpbmRpY2F0ZSBob3cgbXVjaAogIyBtZW1vcnkgdGhleSB1c2UgYW5kIGhvdyBtdWNoIG1lbW9yeSB0aGV5IG5lZWQgdG8gYmUgZXZlbiBtZWFuaW5nZnVsLiAgVGhlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5IGIvTGliL3Rlc3QvdGVzdF9iaW5hc2NpaS5weQppbmRleCAwMzQyNDVkLi42YjNlNDM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmFzY2lpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYmluYXNjaWkucHkKQEAgLTE1OSwxMSArMTU5LDI1IEBACiAgICAgICAgICMgVGhlbiBjYWxjdWxhdGUgdGhlIGhleGJpbjQgYmluYXJ5LXRvLUFTQ0lJIHRyYW5zbGF0aW9uCiAgICAgICAgIHJsZSA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KHNlbGYuZGF0YSkKICAgICAgICAgYSA9IGJpbmFzY2lpLmIyYV9ocXgoc2VsZi50eXBlMnRlc3QocmxlKSkKKwogICAgICAgICBiLCBfID0gYmluYXNjaWkuYTJiX2hxeChzZWxmLnR5cGUydGVzdChhKSkKICAgICAgICAgcmVzID0gYmluYXNjaWkucmxlZGVjb2RlX2hxeChiKQotCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzLCBzZWxmLnJhd2RhdGEpCiAKKyAgICBkZWYgdGVzdF9ybGUoc2VsZik6CisgICAgICAgICMgdGVzdCByZXBldGl0aW9uIHdpdGggYSByZXBldGl0aW9uIGxvbmdlciB0aGFuIHRoZSBsaW1pdCBvZiAyNTUKKyAgICAgICAgZGF0YSA9IChiJ2EnICogMTAwICsgYidiJyArIGInYycgKiAzMDApCisKKyAgICAgICAgZW5jb2RlZCA9IGJpbmFzY2lpLnJsZWNvZGVfaHF4KGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZW5jb2RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYidhXHg5MGQnICAgICAgIyAnYScgKiAxMDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidiJyAgICAgICAgICAgIyAnYicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MFx4ZmYnICAgIyAnYycgKiAyNTUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYidjXHg5MC0nKSkgICAgIyAnYycgKiA0NQorCisgICAgICAgIGRlY29kZWQgPSBiaW5hc2NpaS5ybGVkZWNvZGVfaHF4KGVuY29kZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgZGF0YSkKKwogICAgIGRlZiB0ZXN0X2hleChzZWxmKToKICAgICAgICAgIyB0ZXN0IGhleGxpZmljYXRpb24KICAgICAgICAgcyA9IGIne3NcMDA1XDAwMFwwMDBcMDAwd29ybGRpXDAwMlwwMDBcMDAwXDAwMHNcMDA1XDAwMFwwMDBcMDAwaGVsbG9pXDAwMVwwMDBcMDAwXDAwMDAnCkBAIC0zMzEsNiArMzQ1LDE2IEBACiAgICAgICAgICAgICAjIG5vbi1BU0NJSSBzdHJpbmcKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGEyYiwgIlx4ODAiKQogCisgICAgZGVmIHRlc3RfYjJhX2Jhc2U2NF9uZXdsaW5lKHNlbGYpOgorICAgICAgICAjIElzc3VlICMyNTM1NzogdGVzdCBuZXdsaW5lIHBhcmFtZXRlcgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYmluYXNjaWkuYjJhX2Jhc2U2NChiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1UcnVlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2FHVnNiRzg9XG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpbmFzY2lpLmIyYV9iYXNlNjQoYiwgbmV3bGluZT1GYWxzZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhR1ZzYkc4PScpCisKIAogY2xhc3MgQXJyYXlCaW5BU0NJSVRlc3QoQmluQVNDSUlUZXN0KToKICAgICBkZWYgdHlwZTJ0ZXN0KHNlbGYsIHMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5oZXgucHkgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQppbmRleCA5ZDRjODVhLi4yMWY0NDYzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2JpbmhleC5weQpAQCAtNCw3ICs0LDYgQEAKICAgIEJhc2VkIG9uIGFuIG9yaWdpbmFsIHRlc3QgYnkgUm9nZXIgRS4gTWFzc2UuCiAiIiIKIGltcG9ydCBiaW5oZXgKLWltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weSBiL0xpYi90ZXN0L3Rlc3RfYmlub3AucHkKaW5kZXggZTlkYmRkYy4uM2VkMDE4ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9iaW5vcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Jpbm9wLnB5CkBAIC0yLDcgKzIsNyBAQAogCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIG5lLCBsdCwgZ3QsIGxlLCBnZQorZnJvbSBvcGVyYXRvciBpbXBvcnQgZXEsIGxlLCBuZQogZnJvbSBhYmMgaW1wb3J0IEFCQ01ldGEKIAogZGVmIGdjZChhLCBiKToKQEAgLTM4OCw2ICszODgsNTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShlcSwgQiwgViksIFsnQi5fX2VxX18nLCAnVi5fX2VxX18nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcF9zZXF1ZW5jZShsZSwgQiwgViksIFsnQi5fX2xlX18nLCAnVi5fX2dlX18nXSkKIAorY2xhc3MgU3VwRXEob2JqZWN0KToKKyAgICAiIiJDbGFzcyB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5IiIiCisgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgIHJldHVybiBUcnVlCisKK2NsYXNzIFMoU3VwRXEpOgorICAgICIiIlN1YmNsYXNzIG9mIFN1cEVxIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIEYob2JqZWN0KToKKyAgICAiIiJJbmRlcGVuZGVudCBjbGFzcyB0aGF0IHNob3VsZCBmYWxsIGJhY2siIiIKKworY2xhc3MgWChvYmplY3QpOgorICAgICIiIkluZGVwZW5kZW50IGNsYXNzIHRoYXQgc2hvdWxkIGZhaWwiIiIKKyAgICBfX2VxX18gPSBOb25lCisKK2NsYXNzIFNOKFN1cEVxKToKKyAgICAiIiJTdWJjbGFzcyBvZiBTdXBFcSB0aGF0IGNhbiB0ZXN0IGVxdWFsaXR5LCBidXQgbm90IG5vbi1lcXVhbGl0eSIiIgorICAgIF9fbmVfXyA9IE5vbmUKKworY2xhc3MgWE46CisgICAgIiIiSW5kZXBlbmRlbnQgY2xhc3MgdGhhdCBjYW4gdGVzdCBlcXVhbGl0eSwgYnV0IG5vdCBub24tZXF1YWxpdHkiIiIKKyAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgcmV0dXJuIFRydWUKKyAgICBfX25lX18gPSBOb25lCisKK2NsYXNzIEZhbGxiYWNrQmxvY2tpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVW5pdCB0ZXN0cyBmb3IgTm9uZSBtZXRob2QgYmxvY2tpbmciIiIKKworICAgIGRlZiB0ZXN0X2ZhbGxiYWNrX3JtZXRob2RfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIGYsIHMsIHggPSBTdXBFcSgpLCBGKCksIFMoKSwgWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCBmKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGUpCisgICAgICAgICMgbGVmdCBvcGVyYW5kIGlzIGNoZWNrZWQgZmlyc3QKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB4KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCB4LCBlKQorICAgICAgICAjIFMgaXMgYSBzdWJjbGFzcywgc28gaXQncyBhbHdheXMgY2hlY2tlZCBmaXJzdAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBlLCBzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGVxLCBzLCBlKQorCisgICAgZGVmIHRlc3RfZmFsbGJhY2tfbmVfYmxvY2tpbmcoc2VsZik6CisgICAgICAgIGUsIHNuLCB4biA9IFN1cEVxKCksIFNOKCksIFhOKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmUsIGUsIHNuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCBzbiwgZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShlICE9IHhuKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG5lLCB4biwgZSkKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYm9vbC5weSBiL0xpYi90ZXN0L3Rlc3RfYm9vbC5weQppbmRleCBkMzBhM2I5Li45ZjhmMGUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Jvb2wucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ib29sLnB5CkBAIC05Niw2ICs5NiwxMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlLzEsIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UvMSwgRmFsc2UpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUxLCBGYWxzZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlJTIsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoVHJ1ZSUyLCBUcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEZhbHNlJTEsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3QoRmFsc2UlMSwgRmFsc2UpCisKICAgICAgICAgZm9yIGIgaW4gRmFsc2UsIFRydWU6CiAgICAgICAgICAgICBmb3IgaSBpbiAwLCAxLCAyOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYioqaSwgaW50KGIpKippKQpAQCAtMzMzLDYgKzM0MCwxNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCAoRXhjZXB0aW9uKSBhcyBlX2xlbjoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZV9ib29sKSwgc3RyKGVfbGVuKSkKIAorICAgIGRlZiB0ZXN0X2Jsb2NrZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBfX2Jvb2xfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBib29sLCBBKCkpCisKKyAgICAgICAgY2xhc3MgQjoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAxMAorICAgICAgICAgICAgX19ib29sX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYm9vbCwgQigpKQorCiAgICAgZGVmIHRlc3RfcmVhbF9hbmRfaW1hZyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLnJlYWwsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoVHJ1ZS5pbWFnLCAwKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9idWZmZXIucHkgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQppbmRleCAyZWVmOWZjLi5iODNmMmYxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J1ZmZlci5weQpAQCAtMTYsNyArMTYsNiBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGl0ZXJ0b29scyBpbXBvcnQgcGVybXV0YXRpb25zLCBwcm9kdWN0CiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzYW1wbGUsIGNob2ljZQotZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9jb25maWdfdmFyCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzeXMsIGFycmF5LCBpbwogZnJvbSBkZWNpbWFsIGltcG9ydCBEZWNpbWFsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5IGIvTGliL3Rlc3QvdGVzdF9idWZpby5weQppbmRleCA5OTMxYzg0Li5mZWE2ZGE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J1ZmlvLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVmaW8ucHkKQEAgLTU5LDcgKzU5LDcgQEAKICAgICAgICAgc2VsZi5kcml2ZV9vbmUoYiIxMjM0NTY3ODkwXDAwXDAxXDAyXDAzXDA0XDA1XDA2IikKIAogICAgIGRlZiB0ZXN0X251bGxwYXQoc2VsZik6Ci0gICAgICAgIHNlbGYuZHJpdmVfb25lKGJ5dGVzKDEwMDApKQorICAgICAgICBzZWxmLmRyaXZlX29uZShiJ1wwJyAqIDEwMDApCiAKIAogY2xhc3MgQ0J1ZmZlclNpemVUZXN0KEJ1ZmZlclNpemVUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkgYi9MaWIvdGVzdC90ZXN0X2J1aWx0aW4ucHkKaW5kZXggMzljODBiMC4uZTBjZmZlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9idWlsdGluLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfYnVpbHRpbi5weQpAQCAtODEsNyArODEsNyBAQAogICAgICAgICAoJycsIFZhbHVlRXJyb3IpLAogICAgICAgICAoJyAnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgIFx0XHQgICcsIFZhbHVlRXJyb3IpLAotICAgICAgICAoc3RyKGInXHUwNjYzXHUwNjYxXHUwNjY0ICcsJ3Jhdy11bmljb2RlLWVzY2FwZScpLCAzMTQpLAorICAgICAgICAoc3RyKGJyJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKICAgICAgICAgKGNocigweDIwMCksIFZhbHVlRXJyb3IpLAogXQogCkBAIC0xMDMsNyArMTAzLDcgQEAKICAgICAgICAgKCcnLCBWYWx1ZUVycm9yKSwKICAgICAgICAgKCcgJywgVmFsdWVFcnJvciksCiAgICAgICAgICgnICBcdFx0ICAnLCBWYWx1ZUVycm9yKSwKLSAgICAgICAgKHN0cihiJ1x1MDY2M1x1MDY2MVx1MDY2NCAnLCdyYXctdW5pY29kZS1lc2NhcGUnKSwgMzE0KSwKKyAgICAgICAgKHN0cihicidcdTA2NjNcdTA2NjFcdTA2NjQgJywncmF3LXVuaWNvZGUtZXNjYXBlJyksIDMxNCksCiAgICAgICAgIChjaHIoMHgyMDApLCBWYWx1ZUVycm9yKSwKIF0KIApAQCAtMTcxMCwyMSArMTcxMCwxMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHguc3BhbSgpLCAnc3BhbTQyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4LnRvX2J5dGVzKDIsICdsaXR0bGUnKSwgYidceDJhXHgwMCcpCiAKLSAgICBkZWYgdGVzdF90eXBlX25ld19rZXl3b3JkcyhzZWxmKToKLSAgICAgICAgY2xhc3MgQjoKLSAgICAgICAgICAgIGRlZiBoYW0oc2VsZik6Ci0gICAgICAgICAgICAgICAgcmV0dXJuICdoYW0lZCcgJSBzZWxmCi0gICAgICAgIEMgPSB0eXBlLl9fbmV3X18odHlwZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lPSdDJywKLSAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlcz0oQiwgaW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PXsnc3BhbSc6IGxhbWJkYSBzZWxmOiAnc3BhbSVzJyAlIHNlbGZ9KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19uYW1lX18sICdDJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDLl9fcXVhbG5hbWVfXywgJ0MnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEMuX19tb2R1bGVfXywgX19uYW1lX18pCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Jhc2VzX18sIChCLCBpbnQpKQotICAgICAgICBzZWxmLmFzc2VydElzKEMuX19iYXNlX18sIGludCkKLSAgICAgICAgc2VsZi5hc3NlcnRJbignc3BhbScsIEMuX19kaWN0X18pCi0gICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2hhbScsIEMuX19kaWN0X18pCisgICAgZGVmIHRlc3RfdHlwZV9ub2t3YXJncyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZSgnYScsICgpLCB7fSwgeD01KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKCdhJywgKCksIGRpY3Q9e30pCiAKICAgICBkZWYgdGVzdF90eXBlX25hbWUoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluICdBJywgJ1x4YzQnLCAnXFUwMDAxZjQwZCcsICdCLkEnLCAnNDInLCAnJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkgYi9MaWIvdGVzdC90ZXN0X2J5dGVzLnB5CmluZGV4IGNjMzEyYjEuLjIyMjQ0MjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfYnl0ZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ieXRlcy5weQpAQCAtMjE2LDcgKzIxNiw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi50eXBlMnRlc3Qoc2FtcGxlWzotM10sICJ1dGYtOCIpKQogCiAgICAgZGVmIHRlc3RfZGVjb2RlKHNlbGYpOgotICAgICAgICBzYW1wbGUgPSAiSGVsbG8gd29ybGRcblx1MTIzNFx1NTY3OFx1OWFiY1xkZWYwXGRlZjAiCisgICAgICAgIHNhbXBsZSA9ICJIZWxsbyB3b3JsZFxuXHUxMjM0XHU1Njc4XHU5YWJjIgogICAgICAgICBmb3IgZW5jIGluICgidXRmLTgiLCAidXRmLTE2Iik6CiAgICAgICAgICAgICBiID0gc2VsZi50eXBlMnRlc3Qoc2FtcGxlLCBlbmMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZGVjb2RlKGVuYyksIHNhbXBsZSkKQEAgLTI2OSw2ICsyNjksNyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEluKDIwMCwgYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAzMDAgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiAtMSBpbiBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHN5cy5tYXhzaXplKzEgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IE5vbmUgaW4gYikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsYW1iZGE6IGZsb2F0KG9yZCgnYScpKSBpbiBiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGxhbWJkYTogImEiIGluIGIpCkBAIC0zMDAsNiArMzAxLDIwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgsICdceDAwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi50eXBlMnRlc3QuZnJvbWhleCwgJzEyICAgXHgwMCAgIDM0JykKIAorICAgICAgICBmb3IgZGF0YSwgcG9zIGluICgKKyAgICAgICAgICAgICMgaW52YWxpZCBmaXJzdCBoZXhhZGVjaW1hbCBjaGFyYWN0ZXIKKyAgICAgICAgICAgICgnMTIgeDQgNTYnLCAzKSwKKyAgICAgICAgICAgICMgaW52YWxpZCBzZWNvbmQgaGV4YWRlY2ltYWwgY2hhcmFjdGVyCisgICAgICAgICAgICAoJzEyIDN4IDU2JywgNCksCisgICAgICAgICAgICAjIHR3byBpbnZhbGlkIGhleGFkZWNpbWFsIGNoYXJhY3RlcnMKKyAgICAgICAgICAgICgnMTIgeHkgNTYnLCAzKSwKKyAgICAgICAgICAgICMgdGVzdCBub24tQVNDSUkgc3RyaW5nCisgICAgICAgICAgICAoJzEyIDNceGZmIDU2JywgNCksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudHlwZTJ0ZXN0LmZyb21oZXgoZGF0YSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2F0IHBvc2l0aW9uICVzJyAlIHBvcywgc3RyKGNtLmV4Y2VwdGlvbikpCisKICAgICBkZWYgdGVzdF9oZXgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi50eXBlMnRlc3QuaGV4KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYudHlwZTJ0ZXN0LmhleCwgMSkKQEAgLTY3NCw2ICs2ODksMzcgQEAKICAgICAgICAgdGVzdC5zdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIGl0ZXIsIHNlbGYudHlwZTJ0ZXN0KQogICAgICAgICB0ZXN0LnN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgcmV2ZXJzZWQsIHNlbGYudHlwZTJ0ZXN0KQogCisgICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QoYidoZWxsbycpCisgICAgICAgIHJvc2V0dGEgPSBieXRlYXJyYXkocmFuZ2UoMjU2KSkKKyAgICAgICAgcm9zZXR0YVtvcmQoJ28nKV0gPSBvcmQoJ2UnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYi50cmFuc2xhdGUsIE5vbmUsIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGIudHJhbnNsYXRlLCBieXRlcyhyYW5nZSgyNTUpKSkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidoZWxsbycpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShjLCBzZWxmLnR5cGUydGVzdCkKKworICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSkKKyAgICAgICAgZCA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVsbGUnKQorCisgICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGInZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYywgYidobGxvJykKKworICAgICAgICAjIHRlc3QgZGVsZXRlIGFzIGEga2V5d29yZCBhcmd1bWVudAorICAgICAgICBjID0gYi50cmFuc2xhdGUocm9zZXR0YSwgZGVsZXRlPWInJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlbGxlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKHJvc2V0dGEsIGRlbGV0ZT1iJ2wnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKKyAgICAgICAgYyA9IGIudHJhbnNsYXRlKE5vbmUsIGRlbGV0ZT1iJ2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCisKIAogY2xhc3MgQnl0ZXNUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlcwpAQCAtNzIyLDMxICs3NjgsMTQyIEBACiAKICAgICAjIFRlc3QgUHlCeXRlc19Gcm9tRm9ybWF0KCkKICAgICBkZWYgdGVzdF9mcm9tX2Zvcm1hdChzZWxmKToKLSAgICAgICAgdGVzdC5zdXBwb3J0LmltcG9ydF9tb2R1bGUoJ2N0eXBlcycpCi0gICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCBweXRob25hcGksIHB5X29iamVjdCwgY19pbnQsIGNfY2hhcl9wCisgICAgICAgIGN0eXBlcyA9IHRlc3Quc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCdjdHlwZXMnKQorICAgICAgICBfdGVzdGNhcGkgPSB0ZXN0LnN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKKyAgICAgICAgZnJvbSBjdHlwZXMgaW1wb3J0IHB5dGhvbmFwaSwgcHlfb2JqZWN0CisgICAgICAgIGZyb20gY3R5cGVzIGltcG9ydCAoCisgICAgICAgICAgICBjX2ludCwgY191aW50LAorICAgICAgICAgICAgY19sb25nLCBjX3Vsb25nLAorICAgICAgICAgICAgY19zaXplX3QsIGNfc3NpemVfdCwKKyAgICAgICAgICAgIGNfY2hhcl9wKQorCiAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCA9IHB5dGhvbmFwaS5QeUJ5dGVzX0Zyb21Gb3JtYXQKICAgICAgICAgUHlCeXRlc19Gcm9tRm9ybWF0LnJlc3R5cGUgPSBweV9vYmplY3QKIAorICAgICAgICAjIGJhc2ljIHRlc3RzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInZm9ybWF0JyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYidmb3JtYXQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ0hlbGxvICVzICEnLCBiJ3dvcmxkJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidIZWxsbyB3b3JsZCAhJykKIAorICAgICAgICAjIHRlc3QgZm9ybWF0dGVycworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M9JWMnLCBjX2ludCgwKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidjPVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidjPSVjJywgY19pbnQob3JkKCdAJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M9QCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInYz0lYycsIGNfaW50KDI1NSkpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYz1ceGZmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgxKSwgY19sb25nKDIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPTEgbGQ9MiB6ZD0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidkPSVkIGxkPSVsZCB6ZD0lemQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX2ludCgtMSksIGNfbG9uZygtMiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfc2l6ZV90KC0zKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidkPS0xIGxkPS0yIHpkPS0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid1PSV1IGx1PSVsdSB6dT0lenUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3VpbnQoMTIzKSwgY191bG9uZyg0NTYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX3NpemVfdCg3ODkpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3U9MTIzIGx1PTQ1NiB6dT03ODknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2k9JWknLCBjX2ludCgxMjMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ2k9MTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYidpPSVpJywgY19pbnQoLTEyMykpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInaT0tMTIzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSV4JywgY19pbnQoMHhhYmMpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3g9YWJjJykKKworICAgICAgICBzaXplb2ZfcHRyID0gY3R5cGVzLnNpemVvZihjX2NoYXJfcCkKKworICAgICAgICBpZiBvcy5uYW1lID09ICdudCc6CisgICAgICAgICAgICAjIFdpbmRvd3MgKE1TQ1JUKQorICAgICAgICAgICAgcHRyX2Zvcm1hdCA9ICcweCUwe31YJy5mb3JtYXQoMiAqIHNpemVvZl9wdHIpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAocHRyX2Zvcm1hdCAlIHB0cikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgVU5JWCAoZ2xpYmMpCisgICAgICAgICAgICBkZWYgcHRyX2Zvcm1hdHRlcihwdHIpOgorICAgICAgICAgICAgICAgIHJldHVybiAnJSN4JyAlIHB0cgorCisgICAgICAgIHB0ciA9IDB4YWJjZGVmCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGIncHRyPSVwJywgY19jaGFyX3AocHRyKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgKCdwdHI9JyArIHB0cl9mb3JtYXR0ZXIocHRyKSkuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ3M9JXMnLCBjX2NoYXJfcChiJ2NzdHInKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidzPWNzdHInKQorCisgICAgICAgICMgdGVzdCBtaW5pbXVtIGFuZCBtYXhpbXVtIGludGVnZXIgdmFsdWVzCisgICAgICAgIHNpemVfbWF4ID0gY19zaXplX3QoLTEpLnZhbHVlCisgICAgICAgIGZvciBmb3JtYXRzdHIsIGN0eXBlc190eXBlLCB2YWx1ZSwgcHlfZm9ybWF0dGVyIGluICgKKyAgICAgICAgICAgIChiJyVkJywgY19pbnQsIF90ZXN0Y2FwaS5JTlRfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJWQnLCBjX2ludCwgX3Rlc3RjYXBpLklOVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclbGQnLCBjX2xvbmcsIF90ZXN0Y2FwaS5MT05HX01JTiwgc3RyKSwKKyAgICAgICAgICAgIChiJyVsZCcsIGNfbG9uZywgX3Rlc3RjYXBpLkxPTkdfTUFYLCBzdHIpLAorICAgICAgICAgICAgKGInJWx1JywgY191bG9uZywgX3Rlc3RjYXBpLlVMT05HX01BWCwgc3RyKSwKKyAgICAgICAgICAgIChiJyV6ZCcsIGNfc3NpemVfdCwgX3Rlc3RjYXBpLlBZX1NTSVpFX1RfTUlOLCBzdHIpLAorICAgICAgICAgICAgKGInJXpkJywgY19zc2l6ZV90LCBfdGVzdGNhcGkuUFlfU1NJWkVfVF9NQVgsIHN0ciksCisgICAgICAgICAgICAoYiclenUnLCBjX3NpemVfdCwgc2l6ZV9tYXgsIHN0ciksCisgICAgICAgICAgICAoYiclcCcsIGNfY2hhcl9wLCBzaXplX21heCwgcHRyX2Zvcm1hdHRlciksCisgICAgICAgICk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChmb3JtYXRzdHIsIGN0eXBlc190eXBlKHZhbHVlKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB5X2Zvcm1hdHRlcih2YWx1ZSkuZW5jb2RlKCdhc2NpaScpKSwKKworICAgICAgICAjIHdpZHRoIGFuZCBwcmVjaXNpb24gKHdpZHRoIGlzIGN1cnJlbnRseSBpZ25vcmVkKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyU1cycsIGInYScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJS4zcycsIGInYWJjZGVmJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgYidhYmMnKQorCisgICAgICAgICMgJyUlJyBmb3JtYXR0ZXIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInJScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInWyUlXScpLAorICAgICAgICAgICAgICAgICAgICAgICAgIGInWyVdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJSVjJywgY19pbnQob3JkKCdfJykpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYiclJXMnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJyVzJykKKworICAgICAgICAjIEludmFsaWQgZm9ybWF0cyBhbmQgcGFydGlhbCBmb3JtYXR0aW5nCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJScpLCBiJyUnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJyksIGInJScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInJSVzJyksIGInJXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ1slJV0nKSwgYidbJV0nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJyUlJWMnLCBjX2ludChvcmQoJ18nKSkpLCBiJyVfJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeUJ5dGVzX0Zyb21Gb3JtYXQoYid4PSVpIHk9JScsIGNfaW50KDIpLCBjX2ludCgzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgYid4PTIgeT0lJykKIAotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5Qnl0ZXNfRnJvbUZvcm1hdChiJ2M6JWMnLCBjX2ludCgyNTUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ2M6XHhmZicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlCeXRlc19Gcm9tRm9ybWF0KGInczolcycsIGNfY2hhcl9wKGInY3N0cicpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiJ3M6Y3N0cicpCi0KLSAgICAgICAgIyBJc3N1ZSAjMTk5NjkKKyAgICAgICAgIyBJc3N1ZSAjMTk5Njk6ICVjIG11c3QgcmFpc2UgT3ZlcmZsb3dFcnJvciBmb3IgdmFsdWVzCisgICAgICAgICMgbm90IGluIHRoZSByYW5nZSBbMDsgMjU1XQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21Gb3JtYXQsIGInJWMnLCBjX2ludCgtMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfRnJvbUZvcm1hdCwgYiclYycsIGNfaW50KDI1NikpCiAKKyAgICBkZWYgdGVzdF9ieXRlc19ibG9ja2luZyhzZWxmKToKKyAgICAgICAgY2xhc3MgSXRlcmF0aW9uQmxvY2tlZChsaXN0KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgaSA9IFswLCAxLCAyLCAzXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGkpLCBiJ1x4MDBceDAxXHgwMlx4MDMnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBJdGVyYXRpb25CbG9ja2VkKGkpKQorCisgICAgICAgICMgQXQgbGVhc3QgaW4gQ1B5dGhvbiwgYmVjYXVzZSBieXRlcy5fX25ld19fIGFuZCB0aGUgQyBBUEkKKyAgICAgICAgIyBQeUJ5dGVzX0Zyb21PYmplY3QgaGF2ZSBkaWZmZXJlbnQgZmFsbGJhY2sgcnVsZXMsIGludGVnZXIKKyAgICAgICAgIyBmYWxsYmFjayBpcyBoYW5kbGVkIHNwZWNpYWxseSwgc28gdGVzdCBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBJbnRCbG9ja2VkKGludCk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMyksIGInXDBcMFwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgSW50QmxvY2tlZCgzKSkKKworICAgICAgICAjIFdoaWxlIHRoZXJlIGlzIG5vIHNlcGFyYXRlbHktZGVmaW5lZCBydWxlIGZvciBoYW5kbGluZyBieXRlcworICAgICAgICAjIHN1YmNsYXNzZXMgZGlmZmVyZW50bHkgZnJvbSBvdGhlciBidWZmZXItaW50ZXJmYWNlIGNsYXNzZXMsCisgICAgICAgICMgYW4gaW1wbGVtZW50YXRpb24gbWF5IHdlbGwgc3BlY2lhbC1jYXNlIHRoZW0gKGFzIENQeXRob24gMi54CisgICAgICAgICMgc3RyIGRpZCksIHNvIHRlc3QgdGhlbSBzZXBhcmF0ZWx5LgorICAgICAgICBjbGFzcyBCeXRlc1N1YmNsYXNzQmxvY2tlZChieXRlcyk6CisgICAgICAgICAgICBfX2J5dGVzX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYidhYicpLCBiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBieXRlcywgQnl0ZXNTdWJjbGFzc0Jsb2NrZWQoYidhYicpKQorCisgICAgICAgIGNsYXNzIEJ1ZmZlckJsb2NrZWQoYnl0ZWFycmF5KToKKyAgICAgICAgICAgIF9fYnl0ZXNfXyA9IE5vbmUKKyAgICAgICAgYmEsIGJiID0gYnl0ZWFycmF5KGInYWInKSwgQnVmZmVyQmxvY2tlZChiJ2FiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcyhiYSksIGInYWInKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJ5dGVzLCBiYikKKwogCiBjbGFzcyBCeXRlQXJyYXlUZXN0KEJhc2VCeXRlc1Rlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICB0eXBlMnRlc3QgPSBieXRlYXJyYXkKQEAgLTEzMjMsMjQgKzE0ODAsNiBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYiIlcyInICUgY2hyKGMpKQogCi0gICAgZGVmIHRlc3RfdHJhbnNsYXRlKHNlbGYpOgotICAgICAgICBiID0gYidoZWxsbycKLSAgICAgICAgYmEgPSBieXRlYXJyYXkoYikKLSAgICAgICAgcm9zZXR0YSA9IGJ5dGVhcnJheShyYW5nZSgwLCAyNTYpKQotICAgICAgICByb3NldHRhW29yZCgnbycpXSA9IG9yZCgnZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIsIGInaGVsbG8nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGVlJykKLSAgICAgICAgYyA9IGJhLnRyYW5zbGF0ZShyb3NldHRhLCBiJ2wnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhLCBiJ2hlbGxvJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hlZScpCi0gICAgICAgIGMgPSBiLnRyYW5zbGF0ZShOb25lLCBiJ2UnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGMsIGInaGxsbycpCi0gICAgICAgIGMgPSBiYS50cmFuc2xhdGUoTm9uZSwgYidlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjLCBiJ2hsbG8nKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGIudHJhbnNsYXRlLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGJhLnRyYW5zbGF0ZSwgTm9uZSwgTm9uZSkKLQogICAgIGRlZiB0ZXN0X3NwbGl0X2J5dGVhcnJheShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJ2EgYicuc3BsaXQobWVtb3J5dmlldyhiJyAnKSksIFtiJ2EnLCBiJ2InXSkKIApAQCAtMTUwNCw3ICsxNjQzLDMyIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYSksIHR5cGUoYikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoYS55KSwgdHlwZShiLnkpKQogCi0gICAgdGVzdF9mcm9taGV4ID0gQmFzZUJ5dGVzVGVzdC50ZXN0X2Zyb21oZXgKKyAgICBkZWYgdGVzdF9mcm9taGV4KHNlbGYpOgorICAgICAgICBiID0gc2VsZi50eXBlMnRlc3QuZnJvbWhleCgnMWEyQjMwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiLCBiJ1x4MWFceDJiXHgzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShiKSwgc2VsZi50eXBlMnRlc3QpCisKKyAgICAgICAgY2xhc3MgQjEoc2VsZi5iYXNldHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBtZSA9IHNlbGYuYmFzZXR5cGUuX19uZXdfXyhjbHMsIHZhbHVlKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisgICAgICAgICAgICAgICAgcmV0dXJuIG1lCisKKyAgICAgICAgYiA9IEIxLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKKworICAgICAgICBjbGFzcyBCMihzZWxmLmJhc2V0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmJhc2V0eXBlIGlzIG5vdCBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5iYXNldHlwZS5fX2luaXRfXyhtZSwgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgIG1lLmZvbyA9ICdiYXInCisKKyAgICAgICAgYiA9IEIyLmZyb21oZXgoJzFhMkIzMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgYidceDFhXHgyYlx4MzAnKQorICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoYiksIEIyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIuZm9vLCAnYmFyJykKIAogCiBjbGFzcyBCeXRlQXJyYXlTdWJjbGFzcyhieXRlYXJyYXkpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9iejIucHkgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQppbmRleCA0Nzg5MjFhLi40ODIyNDJjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2J6Mi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2J6Mi5weQpAQCAtNiw2ICs2LDcgQEAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGdsb2IKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwpAQCAtNTYwLDEzICs1NjEsMjAgQEAKICAgICAgICAgd2l0aCBCWjJGaWxlKHN0cl9maWxlbmFtZSwgInJiIikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5yZWFkKCksIHNlbGYuREFUQSkKIAorICAgIGRlZiB0ZXN0T3BlblBhdGhMaWtlRmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggQloyRmlsZShmaWxlbmFtZSwgIndiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoc2VsZi5EQVRBKQorICAgICAgICB3aXRoIEJaMkZpbGUoZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBzZWxmLkRBVEEpCisKICAgICBkZWYgdGVzdERlY29tcHJlc3NMaW1pdGVkKHNlbGYpOgogICAgICAgICAiIiJEZWNvbXByZXNzZWQgZGF0YSBidWZmZXJpbmcgc2hvdWxkIGJlIGxpbWl0ZWQiIiIKLSAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhieXRlcyhpbnQoMmU2KSksIGNvbXByZXNzbGV2ZWw9OSkKKyAgICAgICAgYm9tYiA9IGJ6Mi5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBjb21wcmVzc2xldmVsPTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIF9jb21wcmVzc2lvbi5CVUZGRVJfU0laRSkKIAogICAgICAgICBkZWNvbXAgPSBCWjJGaWxlKEJ5dGVzSU8oYm9tYikpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weSBiL0xpYi90ZXN0L3Rlc3RfY2FsZW5kYXIucHkKaW5kZXggNWRlM2NlOC4uNmM3Y2RkMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYWxlbmRhci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NhbGVuZGFyLnB5CkBAIC03MjMsMTkgKzcyMywxOSBAQAogCiAgICAgZGVmIGFzc2VydEZhaWx1cmUoc2VsZiwgKmFyZ3MpOgogICAgICAgICByYywgc3Rkb3V0LCBzdGRlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1tJywgJ2NhbGVuZGFyJywgKmFyZ3MpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oYidVc2FnZTonLCBzdGRlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oYid1c2FnZTonLCBzdGRlcnIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmMsIDIpCiAKICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgogICAgICAgICBzdGRvdXQgPSBzZWxmLnJ1bl9vaygnLWgnKQotICAgICAgICBzZWxmLmFzc2VydEluKGInVXNhZ2U6Jywgc3Rkb3V0KQorICAgICAgICBzZWxmLmFzc2VydEluKGIndXNhZ2U6Jywgc3Rkb3V0KQogICAgICAgICBzZWxmLmFzc2VydEluKGInY2FsZW5kYXIucHknLCBzdGRvdXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYictLWhlbHAnLCBzdGRvdXQpCiAKICAgICBkZWYgdGVzdF9pbGxlZ2FsX2FyZ3VtZW50cyhzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRGYWlsdXJlKCcteicpCi0gICAgICAgICNzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQotICAgICAgICAjc2VsZi5hc3NlcnRGYWlsdXJlKCcyMDA0JywgJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJ3NwYW0nKQorICAgICAgICBzZWxmLmFzc2VydEZhaWx1cmUoJzIwMDQnLCAnc3BhbScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFpbHVyZSgnLXQnLCAnaHRtbCcsICcyMDA0JywgJzEnKQogCiAgICAgZGVmIHRlc3Rfb3V0cHV0X2N1cnJlbnRfeWVhcihzZWxmKToKQEAgLTgzNiw1ICs4MzYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICBiJ2hyZWY9ImN1c3RvbS5jc3MiIC8+Jywgc3Rkb3V0KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J21kYXlzJywgJ0phbnVhcnknLCAnRmVicnVhcnknLCAnRVBPQ0gnLAorICAgICAgICAgICAgICAgICAgICAgJ01PTkRBWScsICdUVUVTREFZJywgJ1dFRE5FU0RBWScsICdUSFVSU0RBWScsICdGUklEQVknLAorICAgICAgICAgICAgICAgICAgICAgJ1NBVFVSREFZJywgJ1NVTkRBWScsICdkaWZmZXJlbnRfbG9jYWxlJywgJ2MnLAorICAgICAgICAgICAgICAgICAgICAgJ3Byd2VlaycsICd3ZWVrJywgJ2Zvcm1hdCcsICdmb3JtYXRzdHJpbmcnLCAnbWFpbid9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNhbGVuZGFyLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NhcGkucHkgYi9MaWIvdGVzdC90ZXN0X2NhcGkucHkKaW5kZXggMWVhZGQyMi4uNTUyMWU3NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jYXBpLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY2FwaS5weQpAQCAtNCw4ICs0LDEwIEBACiBpbXBvcnQgb3MKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KK2ltcG9ydCByZQogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdApAQCAtNDQyLDYgKzQ0NCw3IEBACiAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXQuc3RyaXAoKSwgZXhwZWN0ZWRfb3V0cHV0KQogCisKIGNsYXNzIFNraXBpdGVtVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9za2lwaXRlbShzZWxmKToKQEAgLTQ5MSwxMCArNDk0LDEwIEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3Jkcyh0dXBsZV8xLCBkaWN0X2IsCiAgICAgICAgICAgICAgICAgICAgIGZvcm1hdC5lbmNvZGUoImFzY2lpIiksIGtleXdvcmRzKQogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFR5cGVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJhcmd1bWVudCAxIChpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj4pIgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSAoc3RyKGUpID09IHMpCi0gICAgICAgICAgICBleGNlcHQgUnVudGltZUVycm9yIGFzIGU6CisgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgogICAgICAgICAgICAgICAgIHdoZW5fbm90X3NraXBwZWQgPSBGYWxzZQogCiAgICAgICAgICAgICAjIHRlc3QgdGhlIGZvcm1hdCB1bml0IHdoZW4gc2tpcHBlZApAQCAtNTAzLDcgKzUwNiw3IEBACiAgICAgICAgICAgICAgICAgX3Rlc3RjYXBpLnBhcnNlX3R1cGxlX2FuZF9rZXl3b3JkcyhlbXB0eV90dXBsZSwgZGljdF9iLAogICAgICAgICAgICAgICAgICAgICBvcHRpb25hbF9mb3JtYXQuZW5jb2RlKCJhc2NpaSIpLCBrZXl3b3JkcykKICAgICAgICAgICAgICAgICB3aGVuX3NraXBwZWQgPSBGYWxzZQotICAgICAgICAgICAgZXhjZXB0IFJ1bnRpbWVFcnJvciBhcyBlOgorICAgICAgICAgICAgZXhjZXB0IFN5c3RlbUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgcyA9ICJpbXBvc3NpYmxlPGJhZCBmb3JtYXQgY2hhcj46ICd7fSciLmZvcm1hdChmb3JtYXQpCiAgICAgICAgICAgICAgICAgd2hlbl9za2lwcGVkID0gKHN0cihlKSA9PSBzKQogCkBAIC01MjQsNiArNTI3LDMyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICgpLCB7fSwgYicnLCBbNDJdKQogCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9vbmx5KHNlbGYpOgorICAgICAgICBwYXJzZSA9IF90ZXN0Y2FwaS5wYXJzZV90dXBsZV9hbmRfa2V5d29yZHMKKworICAgICAgICBwYXJzZSgoMSwgMiwgMyksIHt9LCBiJ09PTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHBhcnNlKCgxLCAyKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDEgZ2l2ZW5cKScpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwgeydhJzogM30sIGInT09PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJycsICdhJ10pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCisgICAgICAgICAgICAgICByJ0Z1bmN0aW9uIHRha2VzIGF0IGxlYXN0IDEgcG9zaXRpb25hbCBhcmd1bWVudHMgXCgwIGdpdmVuXCknKToKKyAgICAgICAgICAgIHBhcnNlKCgpLCB7fSwgYidPfE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsIDIpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICAgIHInRnVuY3Rpb24gdGFrZXMgZXhhY3RseSAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMSBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoMSwpLCB7J2EnOiAzfSwgYidPTyRPJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgICAgcidGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpJyk6CisgICAgICAgICAgICBwYXJzZSgoKSwge30sIGInT3xPJE8nLCBbJycsICcnLCAnYSddKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3lzdGVtRXJyb3IsIHInRW1wdHkgcGFyYW1ldGVyIG5hbWUgYWZ0ZXIgXCQnKToKKyAgICAgICAgICAgIHBhcnNlKCgxLCksIHt9LCBiJ098JE9PJywgWycnLCAnJywgJ2EnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5c3RlbUVycm9yLCAnRW1wdHkga2V5d29yZCcpOgorICAgICAgICAgICAgcGFyc2UoKDEsKSwge30sIGInT3xPTycsIFsnJywgJ2EnLCAnJ10pCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKIGNsYXNzIFRlc3RUaHJlYWRTdGF0ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTU0OCw2ICs1NzcsNyBAQAogICAgICAgICB0LnN0YXJ0KCkKICAgICAgICAgdC5qb2luKCkKIAorCiBjbGFzcyBUZXN0X3Rlc3RjYXBpKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9fdGVzdGNhcGkoc2VsZik6CiAgICAgICAgIGZvciBuYW1lIGluIGRpcihfdGVzdGNhcGkpOgpAQCAtNTU2LDUgKzU4Niw4NCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXN0ID0gZ2V0YXR0cihfdGVzdGNhcGksIG5hbWUpCiAgICAgICAgICAgICAgICAgICAgIHRlc3QoKQogCisKK2NsYXNzIFB5TWVtRGVidWdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgUFlUSE9OTUFMTE9DID0gJ2RlYnVnJworICAgICMgJzB4MDRjMDZlMCcgb3IgJzA0QzA2RTAnCisgICAgUFRSX1JFR0VYID0gcicoPzoweCk/WzAtOWEtZkEtRl0rJworCisgICAgZGVmIGNoZWNrKHNlbGYsIGNvZGUpOgorICAgICAgICB3aXRoIHN1cHBvcnQuU3VwcHJlc3NDcmFzaFJlcG9ydCgpOgorICAgICAgICAgICAgb3V0ID0gYXNzZXJ0X3B5dGhvbl9mYWlsdXJlKCctYycsIGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUFlUSE9OTUFMTE9DPXNlbGYuUFlUSE9OTUFMTE9DKQorICAgICAgICBzdGRlcnIgPSBvdXQuZXJyCisgICAgICAgIHJldHVybiBzdGRlcnIuZGVjb2RlKCdhc2NpaScsICdyZXBsYWNlJykKKworICAgIGRlZiB0ZXN0X2J1ZmZlcl9vdmVyZmxvdyhzZWxmKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjaygnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5bWVtX2J1ZmZlcl9vdmVyZmxvdygpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgbm90IGFsbCBGT1JCSURERU5CWVRFIFwoMHhbMC05YS1mXXt7Mn19XCk6XG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCswOiAweDc4IFwqXCpcKiBPVUNIXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsxOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICBhdCB0YWlsXCsyOiAweGZiXG4iCisgICAgICAgICAgICAgICAgIHIiICAgICAgICAuKlxuIgorICAgICAgICAgICAgICAgICByIiAgICBUaGUgYmxvY2sgd2FzIG1hZGUgYnkgY2FsbCAjWzAtOV0rIHRvIGRlYnVnIG1hbGxvYy9yZWFsbG9jLlxuIgorICAgICAgICAgICAgICAgICByIiAgICBEYXRhIGF0IHA6IGNiIGNiIGNiIC4qXG4iCisgICAgICAgICAgICAgICAgIHIiXG4iCisgICAgICAgICAgICAgICAgIHIiRmF0YWwgUHl0aG9uIGVycm9yOiBiYWQgdHJhaWxpbmcgcGFkIGJ5dGUiKQorICAgICAgICByZWdleCA9IHJlZ2V4LmZvcm1hdChwdHI9c2VsZi5QVFJfUkVHRVgpCisgICAgICAgIHJlZ2V4ID0gcmUuY29tcGlsZShyZWdleCwgZmxhZ3M9cmUuRE9UQUxMKQorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9hcGlfbWlzdXNlKHNlbGYpOgorICAgICAgICBvdXQgPSBzZWxmLmNoZWNrKCdpbXBvcnQgX3Rlc3RjYXBpOyBfdGVzdGNhcGkucHltZW1fYXBpX21pc3VzZSgpJykKKyAgICAgICAgcmVnZXggPSAociJEZWJ1ZyBtZW1vcnkgYmxvY2sgYXQgYWRkcmVzcyBwPXtwdHJ9OiBBUEkgJ20nXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIDE2IGJ5dGVzIG9yaWdpbmFsbHkgcmVxdWVzdGVkXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgcC1bMC05XSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBbMC05XSBwYWQgYnl0ZXMgYXQgdGFpbD17cHRyfSBhcmUgRk9SQklEREVOQllURSwgYXMgZXhwZWN0ZWQuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIFRoZSBibG9jayB3YXMgbWFkZSBieSBjYWxsICNbMC05XSsgdG8gZGVidWcgbWFsbG9jL3JlYWxsb2MuXG4iCisgICAgICAgICAgICAgICAgIHIiICAgIERhdGEgYXQgcDogY2IgY2IgY2IgLipcbiIKKyAgICAgICAgICAgICAgICAgciJcbiIKKyAgICAgICAgICAgICAgICAgciJGYXRhbCBQeXRob24gZXJyb3I6IGJhZCBJRDogQWxsb2NhdGVkIHVzaW5nIEFQSSAnbScsIHZlcmlmaWVkIHVzaW5nIEFQSSAncidcbiIpCisgICAgICAgIHJlZ2V4ID0gcmVnZXguZm9ybWF0KHB0cj1zZWxmLlBUUl9SRUdFWCkKKyAgICAgICAgc2VsZi5hc3NlcnRSZWdleChvdXQsIHJlZ2V4KQorCisgICAgZGVmIGNoZWNrX21hbGxvY193aXRob3V0X2dpbChzZWxmLCBjb2RlKToKKyAgICAgICAgb3V0ID0gc2VsZi5jaGVjayhjb2RlKQorICAgICAgICBleHBlY3RlZCA9ICgnRmF0YWwgUHl0aG9uIGVycm9yOiBQeXRob24gbWVtb3J5IGFsbG9jYXRvciBjYWxsZWQgJworICAgICAgICAgICAgICAgICAgICAnd2l0aG91dCBob2xkaW5nIHRoZSBHSUwnKQorICAgICAgICBzZWxmLmFzc2VydEluKGV4cGVjdGVkLCBvdXQpCisKKyAgICBkZWYgdGVzdF9weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoc2VsZik6CisgICAgICAgICMgRGVidWcgaG9va3MgbXVzdCByYWlzZSBhbiBlcnJvciBpZiBQeU1lbV9NYWxsb2MoKSBpcyBjYWxsZWQKKyAgICAgICAgIyB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTAorICAgICAgICBjb2RlID0gJ2ltcG9ydCBfdGVzdGNhcGk7IF90ZXN0Y2FwaS5weW1lbV9tYWxsb2Nfd2l0aG91dF9naWwoKScKKyAgICAgICAgc2VsZi5jaGVja19tYWxsb2Nfd2l0aG91dF9naWwoY29kZSkKKworICAgIGRlZiB0ZXN0X3B5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbChzZWxmKToKKyAgICAgICAgIyBEZWJ1ZyBob29rcyBtdXN0IHJhaXNlIGFuIGVycm9yIGlmIFB5T2JqZWN0X01hbGxvYygpIGlzIGNhbGxlZAorICAgICAgICAjIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgIGNvZGUgPSAnaW1wb3J0IF90ZXN0Y2FwaTsgX3Rlc3RjYXBpLnB5b2JqZWN0X21hbGxvY193aXRob3V0X2dpbCgpJworICAgICAgICBzZWxmLmNoZWNrX21hbGxvY193aXRob3V0X2dpbChjb2RlKQorCisKK2NsYXNzIFB5TWVtTWFsbG9jRGVidWdUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgIFBZVEhPTk1BTExPQyA9ICdtYWxsb2NfZGVidWcnCisKKworQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1BZTUFMTE9DJykgPT0gMSwKKyAgICAgICAgICAgICAgICAgICAgICduZWVkIHB5bWFsbG9jJykKK2NsYXNzIFB5TWVtUHltYWxsb2NEZWJ1Z1Rlc3RzKFB5TWVtRGVidWdUZXN0cyk6CisgICAgUFlUSE9OTUFMTE9DID0gJ3B5bWFsbG9jX2RlYnVnJworCisKK0B1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBQeV9ERUJVRycpCitjbGFzcyBQeU1lbURlZmF1bHRUZXN0cyhQeU1lbURlYnVnVGVzdHMpOgorICAgICMgdGVzdCBkZWZhdWx0IGFsbG9jYXRvciBvZiBQeXRob24gY29tcGlsZWQgaW4gZGVidWcgbW9kZQorICAgIFBZVEhPTk1BTExPQyA9ICcnCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2dpLnB5IGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKaW5kZXggYWI5ZjZhYi4uNjM3MzIyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jZ2kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jZ2kucHkKQEAgLTcsNiArNyw3IEBACiBpbXBvcnQgd2FybmluZ3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IG5hbWVkdHVwbGUKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPLCBCeXRlc0lPCitmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogY2xhc3MgSGFja2VkU3lzTW9kdWxlOgogICAgICMgVGhlIHJlZ3Jlc3Npb24gdGVzdCB3aWxsIGhhdmUgcmVhbCB2YWx1ZXMgaW4gc3lzLmFyZ3YsIHdoaWNoCkBAIC0xNDcsNyArMTQ4LDcgQEAKICAgICBkZWYgdGVzdF9lc2NhcGUoc2VsZik6CiAgICAgICAgICMgY2dpLmVzY2FwZSgpIGlzIGRlcHJlY2F0ZWQuCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLmZpbHRlcndhcm5pbmdzKCdpZ25vcmUnLCAnY2dpXC5lc2NhcGUnLAorICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoJ2lnbm9yZScsIHInY2dpXC5lc2NhcGUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRlc3QgJmFtcDsgc3RyaW5nIiwgY2dpLmVzY2FwZSgidGVzdCAmIHN0cmluZyIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiJmx0O3Rlc3Qgc3RyaW5nJmd0OyIsIGNnaS5lc2NhcGUoIjx0ZXN0IHN0cmluZz4iKSkKQEAgLTQ3Myw2ICs0NzQsMTEgQEAKICAgICAgICAgICAgIGNnaS5wYXJzZV9oZWFkZXIoJ2Zvcm0tZGF0YTsgbmFtZT0iZmlsZXMiOyBmaWxlbmFtZT0iZm9cXCJvO2JhciInKSwKICAgICAgICAgICAgICgiZm9ybS1kYXRhIiwgeyJuYW1lIjogImZpbGVzIiwgImZpbGVuYW1lIjogJ2ZvIm87YmFyJ30pKQogCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxvZ2ZpbGUiLCAibG9nZnAiLCAiaW5pdGxvZyIsICJkb2xvZyIsICJub2xvZyIsCisgICAgICAgICAgICAgICAgICAgICAiY2xvc2Vsb2ciLCAibG9nIiwgIm1heGxlbiIsICJ2YWxpZF9ib3VuZGFyeSJ9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNnaSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogCiBCT1VOREFSWSA9ICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS03MjE4MzczNzMzNTA3MDU1MjY2ODgxNjQ2ODQiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY2hhcm1hcGNvZGVjLnB5IGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKaW5kZXggNDA2NGFlZi4uMGQ0NTk0ZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jaGFybWFwY29kZWMucHkKQEAgLTksNyArOSw3IEBACiAKICIiIiMiCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogaW1wb3J0IGNvZGVjcwogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9jbWF0aC5weQppbmRleCAxZjg4NGU1Li4wNDUxZmIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NtYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY21hdGgucHkKQEAgLTQsNiArNCw4IEBACiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjbWF0aCwgbWF0aAogZnJvbSBjbWF0aCBpbXBvcnQgcGhhc2UsIHBvbGFyLCByZWN0LCBwaQoraW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIElORiA9IGZsb2F0KCdpbmYnKQpAQCAtMTU0LDYgKzE1NiwyMyBAQAogICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGNtYXRoLmUsIGVfZXhwZWN0ZWQsIHBsYWNlcz05LAogICAgICAgICAgICAgbXNnPSJjbWF0aC5lIGlzIHt9OyBzaG91bGQgYmUge30iLmZvcm1hdChjbWF0aC5lLCBlX2V4cGVjdGVkKSkKIAorICAgIGRlZiB0ZXN0X2luZmluaXR5X2FuZF9uYW5fY29uc3RhbnRzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZi5yZWFsLCBtYXRoLmluZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjbWF0aC5pbmYuaW1hZywgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmoucmVhbCwgMC4wKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLmluZmouaW1hZywgbWF0aC5pbmYpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oY21hdGgubmFuLnJlYWwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtYXRoLm5hbi5pbWFnLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY21hdGgubmFuai5yZWFsLCAwLjApCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGNtYXRoLm5hbmouaW1hZykpCisKKyAgICAgICAgIyBDaGVjayBjb25zaXN0ZW5jeSB3aXRoIHJlcHJzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGguaW5mKSwgImluZiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5pbmZqKSwgImluZmoiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoY21hdGgubmFuKSwgIm5hbiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihjbWF0aC5uYW5qKSwgIm5hbmoiKQorCiAgICAgZGVmIHRlc3RfdXNlcl9vYmplY3Qoc2VsZik6CiAgICAgICAgICMgVGVzdCBhdXRvbWF0aWMgY2FsbGluZyBvZiBfX2NvbXBsZXhfXyBhbmQgX19mbG9hdF9fIGJ5IGNtYXRoCiAgICAgICAgICMgZnVuY3Rpb25zCkBAIC0zMTUsNiArMzM0LDE4IEBACiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9zcGVjaWZpY192YWx1ZXMoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKICAgICAgICAgZGVmIHJlY3RfY29tcGxleCh6KToKICAgICAgICAgICAgICIiIldyYXBwZWQgdmVyc2lvbiBvZiByZWN0IHRoYXQgYWNjZXB0cyBhIGNvbXBsZXggbnVtYmVyIGluc3RlYWQgb2YKICAgICAgICAgICAgIHR3byBmbG9hdCBhcmd1bWVudHMuIiIiCkBAIC0zMjgsNiArMzU5LDEyIEBACiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgogICAgICAgICAgICAgYXJnID0gY29tcGxleChhciwgYWkpCiAgICAgICAgICAgICBleHBlY3RlZCA9IGNvbXBsZXgoZXIsIGVpKQorCisgICAgICAgICAgICAjIFNraXAgY2VydGFpbiB0ZXN0cyBvbiBPUyBYIDEwLjQuCisgICAgICAgICAgICBpZiBvc3hfdmVyc2lvbiBpcyBub3QgTm9uZSBhbmQgb3N4X3ZlcnNpb24gPCAoMTAsIDUpOgorICAgICAgICAgICAgICAgIGlmIGlkIGluIFNLSVBfT05fVElHRVI6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKICAgICAgICAgICAgIGlmIGZuID09ICdyZWN0JzoKICAgICAgICAgICAgICAgICBmdW5jdGlvbiA9IHJlY3RfY29tcGxleAogICAgICAgICAgICAgZWxpZiBmbiA9PSAncG9sYXInOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmUucHkKaW5kZXggM2QyZjc2OS4uODc1NzFkMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NtZF9saW5lLnB5CkBAIC0zNDgsOCArMzQ4LDkgQEAKICAgICAgICAgICAgIHRlc3Quc3VwcG9ydC5TdXBwcmVzc0NyYXNoUmVwb3J0KCkuX19lbnRlcl9fKCkKICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoJ3gnKQogICAgICAgICAgICAgb3MuY2xvc2Uoc3lzLnN0ZG91dC5maWxlbm8oKSkiIiIKLSAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygnLWMnLCBjb2RlKQorICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX2ZhaWx1cmUoJy1jJywgY29kZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiJycsIG91dCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMjAsIHJjKQogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGVyci5kZWNvZGUoJ2FzY2lpJywgJ2lnbm9yZScpLAogICAgICAgICAgICAgICAgICAgICAgICAgICdFeGNlcHRpb24gaWdub3JlZCBpbi4qXG5PU0Vycm9yOiAuKicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY21kX2xpbmVfc2NyaXB0LnB5IGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKaW5kZXggYmVmZTBlNC4uMzhjYjJlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jbWRfbGluZV9zY3JpcHQucHkKQEAgLTEzOCw5ICsxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkX2FyZ3YwLCBleHBlY3RlZF9wYXRoMCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlLCBleHBlY3RlZF9sb2FkZXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmNtZF9saW5lX3N3aXRjaGVzKToKLSAgICAgICAgaWYgbm90IF9fZGVidWdfXzoKLSAgICAgICAgICAgIGNtZF9saW5lX3N3aXRjaGVzICs9ICgnLScgKyAnTycgKiBzeXMuZmxhZ3Mub3B0aW1pemUsKQotICAgICAgICBydW5fYXJncyA9IGNtZF9saW5lX3N3aXRjaGVzICsgKHNjcmlwdF9uYW1lLCkgKyB0dXBsZShleGFtcGxlX2FyZ3MpCisgICAgICAgIHJ1bl9hcmdzID0gWypzdXBwb3J0Lm9wdGltX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpLAorICAgICAgICAgICAgICAgICAgICAqY21kX2xpbmVfc3dpdGNoZXMsIHNjcmlwdF9uYW1lLCAqZXhhbXBsZV9hcmdzXQogICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCpydW5fYXJncywgX19pc29sYXRlZD1GYWxzZSkKICAgICAgICAgc2VsZi5fY2hlY2tfb3V0cHV0KHNjcmlwdF9uYW1lLCByYywgb3V0ICsgZXJyLCBleHBlY3RlZF9maWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWRfYXJndjAsIGV4cGVjdGVkX3BhdGgwLApAQCAtNDI5LDcgKzQyOCw3IEBACiAgICAgICAgICAgICAoJ2J1aWx0aW5zLngnLCBicidFcnJvciB3aGlsZSBmaW5kaW5nIG1vZHVsZSBzcGVjaWZpY2F0aW9uLionCiAgICAgICAgICAgICAgICAgYnInQXR0cmlidXRlRXJyb3InKSwKICAgICAgICAgICAgICgnYnVpbHRpbnMueC55JywgYnInRXJyb3Igd2hpbGUgZmluZGluZyBtb2R1bGUgc3BlY2lmaWNhdGlvbi4qJwotICAgICAgICAgICAgICAgIGJyJ0ltcG9ydEVycm9yLipObyBtb2R1bGUgbmFtZWQuKm5vdCBhIHBhY2thZ2UnKSwKKyAgICAgICAgICAgICAgICBicidNb2R1bGVOb3RGb3VuZEVycm9yLipObyBtb2R1bGUgbmFtZWQuKm5vdCBhIHBhY2thZ2UnKSwKICAgICAgICAgICAgICgnb3MucGF0aCcsIGJyJ2xvYWRlci4qY2Fubm90IGhhbmRsZScpLAogICAgICAgICAgICAgKCdpbXBvcnRsaWInLCBicidObyBtb2R1bGUgbmFtZWQuKicKICAgICAgICAgICAgICAgICBicidpcyBhIHBhY2thZ2UgYW5kIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCcpLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZV9tb2R1bGUucHkKaW5kZXggMzM5NGIzOS4uMWE4ZjY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlX21vZHVsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVfbW9kdWxlLnB5CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAgICMgd2l0aCBiYW5uZXIKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQogICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPSdGb28nKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAzKQogICAgICAgICBiYW5uZXJfY2FsbCA9IHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxsc1swXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJhbm5lcl9jYWxsLCBbJ3dyaXRlJywgKCdGb29cbicsKSwge31dKQogCkBAIC03Nyw4ICs3NywzNiBAQAogICAgICAgICBzZWxmLnN0ZGVyci5yZXNldF9tb2NrKCkKICAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQogICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorCisgICAgZGVmIHRlc3RfZXhpdF9tc2coc2VsZik6CisgICAgICAgICMgZGVmYXVsdCBleGl0IG1lc3NhZ2UKKyAgICAgICAgc2VsZi5pbmZ1bmMuc2lkZV9lZmZlY3QgPSBFT0ZFcnJvcignRmluaXNoZWQnKQorICAgICAgICBzZWxmLmNvbnNvbGUuaW50ZXJhY3QoYmFubmVyPScnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBlcnJfbXNnID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzFdCisgICAgICAgIGV4cGVjdGVkID0gJ25vdyBleGl0aW5nIEludGVyYWN0aXZlQ29uc29sZS4uLlxuJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycl9tc2csIFsnd3JpdGUnLCAoZXhwZWN0ZWQsKSwge31dKQorCisgICAgICAgICMgbm8gZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQorICAgICAgICBzZWxmLmluZnVuYy5zaWRlX2VmZmVjdCA9IEVPRkVycm9yKCdGaW5pc2hlZCcpCisgICAgICAgIHNlbGYuY29uc29sZS5pbnRlcmFjdChiYW5uZXI9JycsIGV4aXRtc2c9JycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlbGYuc3RkZXJyLm1ldGhvZF9jYWxscyksIDEpCiAKKyAgICAgICAgIyBjdXN0b20gZXhpdCBtZXNzYWdlCisgICAgICAgIHNlbGYuc3RkZXJyLnJlc2V0X21vY2soKQorICAgICAgICBtZXNzYWdlID0gKAorICAgICAgICAgICAgJ2J5ZSEgXE57R1JFRUsgU01BTEwgTEVUVEVSIFpFVEF9XE57Q1lSSUxMSUMgU01BTEwgTEVUVEVSIFpIRX0nCisgICAgICAgICAgICApCisgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gRU9GRXJyb3IoJ0ZpbmlzaGVkJykKKyAgICAgICAgc2VsZi5jb25zb2xlLmludGVyYWN0KGJhbm5lcj0nJywgZXhpdG1zZz1tZXNzYWdlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWxmLnN0ZGVyci5tZXRob2RfY2FsbHMpLCAyKQorICAgICAgICBlcnJfbXNnID0gc2VsZi5zdGRlcnIubWV0aG9kX2NhbGxzWzFdCisgICAgICAgIGV4cGVjdGVkID0gbWVzc2FnZSArICdcbicKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlcnJfbXNnLCBbJ3dyaXRlJywgKGV4cGVjdGVkLCksIHt9XSkKKworCiAgICAgZGVmIHRlc3RfY2F1c2VfdGIoc2VsZik6CiAgICAgICAgIHNlbGYuaW5mdW5jLnNpZGVfZWZmZWN0ID0gWyJyYWlzZSBWYWx1ZUVycm9yKCcnKSBmcm9tIEF0dHJpYnV0ZUVycm9yIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVPRkVycm9yKCdGaW5pc2hlZCcpXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNjYWxsYmFja3MucHkKaW5kZXggZWUxZTI4YS4uNmEzZTk5MyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2NhbGxiYWNrcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjY2FsbGJhY2tzLnB5CkBAIC00LDcgKzQsNiBAQAogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaWNvZGVkYXRhCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB3YXJuaW5ncwogCiBjbGFzcyBQb3NSZXR1cm46CiAgICAgIyB0aGlzIGNhbiBiZSB1c2VkIGZvciBjb25maWd1cmFibGUgY2FsbGJhY2tzCkBAIC0yODEsMTIgKzI4MCwxMiBAQAogICAgICAgICApCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGIiXFx1MzA0Mlx1M3h4eCIuZGVjb2RlKCJ1bmljb2RlLWVzY2FwZSIsICJ0ZXN0LmhhbmRsZXIxIiksCisgICAgICAgICAgICBiIlxcdTMwNDJcXHUzeHh4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKICAgICAgICAgICAgICJcdTMwNDJbPDkyPjwxMTc+PDUxPl14eHgiCiAgICAgICAgICkKIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgYiJcXHUzMDQyXHUzeHgiLmRlY29kZSgidW5pY29kZS1lc2NhcGUiLCAidGVzdC5oYW5kbGVyMSIpLAorICAgICAgICAgICAgYiJcXHUzMDQyXFx1M3h4Ii5kZWNvZGUoInVuaWNvZGUtZXNjYXBlIiwgInRlc3QuaGFuZGxlcjEiKSwKICAgICAgICAgICAgICJcdTMwNDJbPDkyPjwxMTc+PDUxPl14eCIKICAgICAgICAgKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19jbi5weQppbmRleCBkMGUzYTE1Li4zYmRmN2QwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2NuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfY24ucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgZW5jb2RpbmcgdGVzdHMgZm9yIFBSQyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaGsucHkKaW5kZXggYmI5YmUxMS4uYzVlMmY5OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19oay5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2hrLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBIb25nS29uZyBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19pc28yMDIyLnB5CmluZGV4IDhhM2NhNzAuLjAwZWExYzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfaXNvMjAyMi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2lzbzIwMjIucHkKQEAgLTEsNiArMSw1IEBACiAjIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBJU08gMjAyMiBlbmNvZGluZ3MuCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfanAucHkKaW5kZXggNDRiNjNhMC4uOTQzNzhkMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19qcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2pwLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBKYXBhbmVzZSBlbmNvZGluZ3MuCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3Nfa3IucHkKaW5kZXggYjZhNzRmYi4uODYzZDE2YiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX2tyLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIGVuY29kaW5nIHRlc3RzIGZvciBST0sgZW5jb2RpbmdzLgogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjZW5jb2RpbmdzX3R3LnB5CmluZGV4IDkxNzQyOTYuLmJiMWQxMzMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNlbmNvZGluZ3NfdHcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY2VuY29kaW5nc190dy5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBlbmNvZGluZyB0ZXN0cyBmb3IgUk9DIGVuY29kaW5ncy4KICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19jbi5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CmluZGV4IGYxYmQzODQuLjg5ZTUxYzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2NuLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIFBSQyBlbmNvZGluZ3MKICMKIAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3QgaW1wb3J0IG11bHRpYnl0ZWNvZGVjX3N1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19oay5weSBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CmluZGV4IDRjMGM0MTUuLjdhNDhkMjQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2hrLnB5CkBAIC0zLDcgKzMsNiBAQAogIyAgIENvZGVjIG1hcHBpbmcgdGVzdHMgZm9yIEhvbmdLb25nIGVuY29kaW5ncwogIwogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdCBpbXBvcnQgbXVsdGlieXRlY29kZWNfc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29kZWNtYXBzX2pwLnB5IGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKaW5kZXggNTc3MzgyMy4uZmRmZWM4MCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfanAucHkKQEAgLTMsNyArMyw2IEBACiAjICAgQ29kZWMgbWFwcGluZyB0ZXN0cyBmb3IgSmFwYW5lc2UgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfa3IucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQppbmRleCA2Y2I0MWM4Li40NzFjZDc0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc19rci5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBST0sgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY21hcHNfdHcucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQppbmRleCAyZWE0NGI1Li4xNDVhOTdkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjbWFwc190dy5weQpAQCAtMyw3ICszLDYgQEAKICMgICBDb2RlYyBtYXBwaW5nIHRlc3RzIGZvciBST0MgZW5jb2RpbmdzCiAjCiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0IGltcG9ydCBtdWx0aWJ5dGVjb2RlY19zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2RlY3MucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQppbmRleCAwMTNlYzY0Li4xZTYzZWQ4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVjcy5weQpAQCAtNCwxNiArNCwxMCBAQAogaW1wb3J0IGxvY2FsZQogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBlbmNvZGluZ3MKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgotICAgIFZJU1RBX09SX0xBVEVSID0gKHN5cy5nZXR3aW5kb3dzdmVyc2lvbigpLm1ham9yID49IDYpCi1lbHNlOgotICAgIFZJU1RBX09SX0xBVEVSID0gRmFsc2UKLQogdHJ5OgogICAgIGltcG9ydCBjdHlwZXMKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTI3LDYgKzIxLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlcihpbnB1dCksIChleHBlY3QsIGxlbihpbnB1dCkpKQogICAgIHJldHVybiBjaGVjawogCisKIGNsYXNzIFF1ZXVlKG9iamVjdCk6CiAgICAgIiIiCiAgICAgcXVldWU6IHdyaXRlIGJ5dGVzIGF0IG9uZSBlbmQsIHJlYWQgYnl0ZXMgZnJvbSB0aGUgb3RoZXIgZW5kCkBAIC00Nyw2ICs0Miw3IEBACiAgICAgICAgICAgICBzZWxmLl9idWZmZXIgPSBzZWxmLl9idWZmZXJbc2l6ZTpdCiAgICAgICAgICAgICByZXR1cm4gcwogCisKIGNsYXNzIE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nOgogICAgIGRlZiBjaGVja19zdGF0ZV9oYW5kbGluZ19kZWNvZGUoc2VsZiwgZW5jb2RpbmcsIHUsIHMpOgogICAgICAgICBmb3IgaSBpbiByYW5nZShsZW4ocykrMSk6CkBAIC04MCw2ICs3Niw3IEBACiAgICAgICAgICAgICBwYXJ0MiA9IGQuZW5jb2RlKHVbaTpdLCBUcnVlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBwYXJ0MStwYXJ0MikKIAorCiBjbGFzcyBSZWFkVGVzdChNaXhJbkNoZWNrU3RhdGVIYW5kbGluZyk6CiAgICAgZGVmIGNoZWNrX3BhcnRpYWwoc2VsZiwgaW5wdXQsIHBhcnRpYWxyZXN1bHRzKToKICAgICAgICAgIyBnZXQgYSBTdHJlYW1SZWFkZXIgZm9yIHRoZSBlbmNvZGluZyBhbmQgZmVlZCB0aGUgYnl0ZXN0cmluZyB2ZXJzaW9uCkBAIC0zNTgsNiArMzU1LDEyIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiWz9dIi5lbmNvZGUoc2VsZi5lbmNvZGluZykpCiAKKyAgICAgICAgIyBzZXF1ZW50aWFsIHN1cnJvZ2F0ZSBjaGFyYWN0ZXJzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgImlnbm9yZSIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICJbXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEODAwXHVEQzgwXSIuZW5jb2RlKHNlbGYuZW5jb2RpbmcsICJyZXBsYWNlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgIls/P10iLmVuY29kZShzZWxmLmVuY29kaW5nKSkKKwogICAgICAgICBib20gPSAiIi5lbmNvZGUoc2VsZi5lbmNvZGluZykKICAgICAgICAgZm9yIGJlZm9yZSwgYWZ0ZXIgaW4gWygiXFUwMDAxMGZmZiIsICJBIiksICgiWyIsICJdIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoIkEiLCAiXFUwMDAxMGZmZiIpXToKQEAgLTM4Myw2ICszODYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3NlcXVlbmNlLmRlY29kZShzZWxmLmVuY29kaW5nLCAiYmFja3NsYXNocmVwbGFjZSIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiZWZvcmUgKyBiYWNrc2xhc2hyZXBsYWNlICsgYWZ0ZXIpCiAKKwogY2xhc3MgVVRGMzJUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyIgogICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CkBAIC00NzgsNiArNDgyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfZGVjb2RlKGVuY29kZWRfYmUpWzBdKQogCisKIGNsYXNzIFVURjMyTEVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWxlIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4ODBceGRjXHgwMFx4MDAiCkBAIC01MjMsNiArNTI4LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnXFUwMDAxMDAwMCcgKiAxMDI0LAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcy51dGZfMzJfbGVfZGVjb2RlKGVuY29kZWQpWzBdKQogCisKIGNsYXNzIFVURjMyQkVUZXN0KFJlYWRUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZW5jb2RpbmcgPSAidXRmLTMyLWJlIgogICAgIGlsbF9mb3JtZWRfc2VxdWVuY2UgPSBiIlx4MDBceDAwXHhkY1x4ODAiCkBAIC03NDcsNiArNzUzLDcgQEAKICAgICBlbmNvZGluZyA9ICJ1dGYtOCIKICAgICBpbGxfZm9ybWVkX3NlcXVlbmNlID0gYiJceGVkXHhiMlx4ODAiCiAgICAgaWxsX2Zvcm1lZF9zZXF1ZW5jZV9yZXBsYWNlID0gIlx1ZmZmZCIgKiAzCisgICAgQk9NID0gYicnCiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3BhcnRpYWwoCkBAIC03NzUsMjcgKzc4Miw0OSBAQAogICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShzZWxmLmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1LCB1LmVuY29kZShzZWxmLmVuY29kaW5nKSkKIAorICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZF0nKSwKKyAgICAgICAgICAgIChiJ1tceDgwXHhmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgJ1tcdWRjODBcdWRjZmZdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLCAnW1xceDgwXFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZGVjb2RlKHNlbGYuZW5jb2RpbmcsIGVycm9yX2hhbmRsZXIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQpCisKICAgICBkZWYgdGVzdF9sb25lX3N1cnJvZ2F0ZXMoc2VsZik6CiAgICAgICAgIHN1cGVyKCkudGVzdF9sb25lX3N1cnJvZ2F0ZXMoKQogICAgICAgICAjIG5vdCBzdXJlIGlmIHRoaXMgaXMgbWFraW5nIHNlbnNlIGZvcgogICAgICAgICAjIFVURi0xNiBhbmQgVVRGLTMyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdURDODBdIi5lbmNvZGUoJ3V0Zi04JywgInN1cnJvZ2F0ZWVzY2FwZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGInW1x4ODBdJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiW1x1REM4MF0iLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlZXNjYXBlIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5CT00gKyBiJ1tceDgwXScpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgIltcdURDODBcdUQ4MDBcdURGRkZdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZWVzY2FwZSIpCisgICAgICAgIGV4YyA9IGNtLmV4Y2VwdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4Yy5vYmplY3RbZXhjLnN0YXJ0OmV4Yy5lbmRdLCAnXHVEODAwXHVERkZGJykKIAogICAgIGRlZiB0ZXN0X3N1cnJvZ2F0ZXBhc3NfaGFuZGxlcihzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiYWJjXHVkODAwZGVmIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiImFiY1x4ZWRceGEwXHg4MGRlZiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZSgidXRmLTgiLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuQk9NICsgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIltcdUQ4MDBcdURDODBdIi5lbmNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLkJPTSArIGInW1x4ZWRceGEwXHg4MFx4ZWRceGIyXHg4MF0nKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJhYmNceGVkXHhhMFx4ODBkZWYiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJhYmNcdWQ4MDBkZWYiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJcVTAwMDEwZmZmXHVEODAwIi5lbmNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBiIlx4ZjBceDkwXHhiZlx4YmZceGVkXHhhMFx4ODAiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGIiXHhmMFx4OTBceGJmXHhiZlx4ZWRceGEwXHg4MCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIiksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJceGYwXHg5MFx4YmZceGJmXHhlZFx4YTBceDgwIi5kZWNvZGUoc2VsZi5lbmNvZGluZywgInN1cnJvZ2F0ZXBhc3MiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAiXFUwMDAxMGZmZlx1RDgwMCIpCisKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvZGVjcy5sb29rdXBfZXJyb3IoInN1cnJvZ2F0ZXBhc3MiKSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgotICAgICAgICAgICAgYiJhYmNceGVkXHhhMCIuZGVjb2RlKCJ1dGYtOCIsICJzdXJyb2dhdGVwYXNzIikKKyAgICAgICAgICAgIGIiYWJjXHhlZFx4YTAiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZURlY29kZUVycm9yKToKLSAgICAgICAgICAgIGIiYWJjXHhlZFx4YTB6Ii5kZWNvZGUoInV0Zi04IiwgInN1cnJvZ2F0ZXBhc3MiKQorICAgICAgICAgICAgYiJhYmNceGVkXHhhMHoiLmRlY29kZShzZWxmLmVuY29kaW5nLCAic3Vycm9nYXRlcGFzcyIpCisKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICd3aW4zMicsCiAgICAgICAgICAgICAgICAgICAgICAnY3A2NTAwMSBpcyBhIFdpbmRvd3Mtb25seSBjb2RlYycpCkBAIC04MDcsMTggKzgzNiwxMyBAQAogICAgICAgICAgICAgKCdhYmMnLCAnc3RyaWN0JywgYidhYmMnKSwKICAgICAgICAgICAgICgnXHhlOVx1MjBhYycsICdzdHJpY3QnLCAgYidceGMzXHhhOVx4ZTJceDgyXHhhYycpLAogICAgICAgICAgICAgKCdcVTAwMTBmZmZmJywgJ3N0cmljdCcsIGInXHhmNFx4OGZceGJmXHhiZicpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnc3RyaWN0JywgTm9uZSksCisgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAncmVwbGFjZScsIGInPycpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnYmFja3NsYXNocmVwbGFjZScsIGInXFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKKyAgICAgICAgICAgICgnXHVkYzgwJywgJ3N1cnJvZ2F0ZXBhc3MnLCBiJ1x4ZWRceGIyXHg4MCcpLAogICAgICAgICBdCi0gICAgICAgIGlmIFZJU1RBX09SX0xBVEVSOgotICAgICAgICAgICAgdGVzdHMuZXh0ZW5kKCgKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdHJpY3QnLCBOb25lKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdpZ25vcmUnLCBiJycpLAotICAgICAgICAgICAgICAgICgnXHVkYzgwJywgJ3JlcGxhY2UnLCBiJz8nKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdiYWNrc2xhc2hyZXBsYWNlJywgYidcXHVkYzgwJyksCi0gICAgICAgICAgICAgICAgKCdcdWRjODAnLCAnbmFtZXJlcGxhY2UnLCBiJ1xcdWRjODAnKSwKLSAgICAgICAgICAgICAgICAoJ1x1ZGM4MCcsICdzdXJyb2dhdGVwYXNzJywgYidceGVkXHhiMlx4ODAnKSwKLSAgICAgICAgICAgICkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0cy5hcHBlbmQoKCdcdWRjODAnLCAnc3RyaWN0JywgYidceGVkXHhiMlx4ODAnKSkKICAgICAgICAgZm9yIHRleHQsIGVycm9ycywgZXhwZWN0ZWQgaW4gdGVzdHM6CiAgICAgICAgICAgICBpZiBleHBlY3RlZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NDUsMTcgKzg2OSwxMCBAQAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ2lnbm9yZScsICdbXScpLAogICAgICAgICAgICAgKGInW1x4ZmZdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZF0nKSwKICAgICAgICAgICAgIChiJ1tceGZmXScsICdzdXJyb2dhdGVlc2NhcGUnLCAnW1x1ZGNmZl0nKSwKKyAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAorICAgICAgICAgICAgKGInW1x4ZWRceGIyXHg4MF0nLCAnaWdub3JlJywgJ1tdJyksCisgICAgICAgICAgICAoYidbXHhlZFx4YjJceDgwXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRcdWZmZmRdJyksCiAgICAgICAgIF0KLSAgICAgICAgaWYgVklTVEFfT1JfTEFURVI6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsIE5vbmUpLAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ2lnbm9yZScsICdbXScpLAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3JlcGxhY2UnLCAnW1x1ZmZmZFx1ZmZmZFx1ZmZmZF0nKSwKLSAgICAgICAgICAgICkpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB0ZXN0cy5leHRlbmQoKAotICAgICAgICAgICAgICAgIChiJ1tceGVkXHhiMlx4ODBdJywgJ3N0cmljdCcsICdbXHVkYzgwXScpLAotICAgICAgICAgICAgKSkKICAgICAgICAgZm9yIHJhdywgZXJyb3JzLCBleHBlY3RlZCBpbiB0ZXN0czoKICAgICAgICAgICAgIGlmIGV4cGVjdGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTg3MCw3ICs4ODcsNiBAQAogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFVuaWNvZGVEZWNvZGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgcmF3LmRlY29kZSwgJ2NwNjUwMDEnLCBlcnJvcnMpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCiAgICAgZGVmIHRlc3RfbG9uZV9zdXJyb2dhdGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IsICJcdWQ4MDAiLmVuY29kZSwgImNwNjUwMDEiKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIGIiXHhlZFx4YTBceDgwIi5kZWNvZGUsICJjcDY1MDAxIikKQEAgLTg4Nyw3ICs5MDMsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJbXHVEQzgwXSIuZW5jb2RlKCJjcDY1MDAxIiwgInJlcGxhY2UiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBiJ1s/XScpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhWSVNUQV9PUl9MQVRFUiwgJ3JlcXVpcmUgV2luZG93cyBWaXN0YSBvciBsYXRlcicpCiAgICAgZGVmIHRlc3Rfc3Vycm9nYXRlcGFzc19oYW5kbGVyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJhYmNcdWQ4MDBkZWYiLmVuY29kZSgiY3A2NTAwMSIsICJzdXJyb2dhdGVwYXNzIiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgYiJhYmNceGVkXHhhMFx4ODBkZWYiKQpAQCAtMTA1OSw2ICsxMDc0LDcgQEAKIAogY2xhc3MgVVRGOFNpZ1Rlc3QoVVRGOFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBlbmNvZGluZyA9ICJ1dGYtOC1zaWciCisgICAgQk9NID0gY29kZWNzLkJPTV9VVEY4CiAKICAgICBkZWYgdGVzdF9wYXJ0aWFsKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3BhcnRpYWwoCkBAIC0xMTU5LDcgKzExNzUsNyBAQAogICAgICAgICBjaGVjayhiIltcXFxuXSIsIGIiW10iKQogICAgICAgICBjaGVjayhicidbXCJdJywgYidbIl0nKQogICAgICAgICBjaGVjayhiciJbXCddIiwgYiJbJ10iKQotICAgICAgICBjaGVjayhiciJbXFxdIiwgYnIiW1xdIikKKyAgICAgICAgY2hlY2soYnIiW1xcXSIsIGIiW1xcXSIpCiAgICAgICAgIGNoZWNrKGJyIltcYV0iLCBiIltceDA3XSIpCiAgICAgICAgIGNoZWNrKGJyIltcYl0iLCBiIltceDA4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcdF0iLCBiIltceDA5XSIpCkBAIC0xMTY4LDcgKzExODQsNiBAQAogICAgICAgICBjaGVjayhiciJbXGZdIiwgYiJbXHgwY10iKQogICAgICAgICBjaGVjayhiciJbXHJdIiwgYiJbXHgwZF0iKQogICAgICAgICBjaGVjayhiciJbXDddIiwgYiJbXHgwN10iKQotICAgICAgICBjaGVjayhiciJbXDhdIiwgYnIiW1w4XSIpCiAgICAgICAgIGNoZWNrKGJyIltcNzhdIiwgYiJbXHgwNzhdIikKICAgICAgICAgY2hlY2soYnIiW1w0MV0iLCBiIlshXSIpCiAgICAgICAgIGNoZWNrKGJyIltcNDE4XSIsIGIiWyE4XSIpCkBAIC0xMTc2LDEyICsxMTkxLDE4IEBACiAgICAgICAgIGNoZWNrKGJyIltcMTAxMF0iLCBiIltBMF0iKQogICAgICAgICBjaGVjayhiciJbXDUwMV0iLCBiIltBXSIpCiAgICAgICAgIGNoZWNrKGJyIltceDQxXSIsIGIiW0FdIikKLSAgICAgICAgY2hlY2soYnIiW1xYNDFdIiwgYnIiW1xYNDFdIikKICAgICAgICAgY2hlY2soYnIiW1x4NDEwXSIsIGIiW0EwXSIpCi0gICAgICAgIGZvciBiIGluIHJhbmdlKDI1Nik6Ci0gICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ1xuIlwnXFxhYnRudmZyMDEyMzQ1Njd4JzoKLSAgICAgICAgICAgICAgICBiID0gYnl0ZXMoW2JdKQotICAgICAgICAgICAgICAgIGNoZWNrKGInXFwnICsgYiwgYidcXCcgKyBiKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg5NywgMTIzKToKKyAgICAgICAgICAgIGIgPSBieXRlcyhbaV0pCisgICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ2FiZm5ydHZ4JzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2soYiJcXCIgKyBiLCBiIlxcIiArIGIpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjaGVjayhiIlxcIiArIGIudXBwZXIoKSwgYiJcXCIgKyBiLnVwcGVyKCkpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDgiLCBiIlxcOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDkiLCBiIlxcOSIpCiAKICAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy5lc2NhcGVfZGVjb2RlCkBAIC0xMTk0LDYgKzEyMTUsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29kZShiciJbXHgwXVx4MCIsICJpZ25vcmUiKSwgKGIiW10iLCA4KSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGUoYnIiW1x4MF1ceDAiLCAicmVwbGFjZSIpLCAoYiJbP10/IiwgOCkpCiAKKwogY2xhc3MgUmVjb2RpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9yZWNvZGluZyhzZWxmKToKICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQpAQCAtMTMxMyw2ICsxMzM1LDcgQEAKICAgICBpZiBsZW4oaSkhPTI6CiAgICAgICAgIHByaW50KHJlcHIoaSkpCiAKKwogY2xhc3MgUHVueWNvZGVUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9lbmNvZGUoc2VsZik6CiAgICAgICAgIGZvciB1bmksIHB1bnkgaW4gcHVueWNvZGVfdGVzdGNhc2VzOgpAQCAtMTMzMiw2ICsxMzU1LDcgQEAKICAgICAgICAgICAgIHB1bnkgPSBwdW55LmRlY29kZSgiYXNjaWkiKS5lbmNvZGUoImFzY2lpIikKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodW5pLCBwdW55LmRlY29kZSgicHVueWNvZGUiKSkKIAorCiBjbGFzcyBVbmljb2RlSW50ZXJuYWxUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhTSVpFT0ZfV0NIQVJfVCA9PSA0LCAnc3BlY2lmaWMgdG8gMzItYml0IHdjaGFyX3QnKQogICAgIGRlZiB0ZXN0X2J1ZzEyNTEzMDAoc2VsZik6CkBAIC0xNTg2LDYgKzE2MTAsNyBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3VwcG9ydC5UZXN0RmFpbGVkKCJUZXN0IDMuJWQ6ICVzIiAlIChwb3MrMSwgc3RyKGUpKSkKIAorCiBjbGFzcyBJRE5BQ29kZWNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9idWlsdGluX2RlY29kZShzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoYiJweXRob24ub3JnIiwgImlkbmEiKSwgInB5dGhvbi5vcmciKQpAQCAtMTY3Miw2ICsxNjk3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEV4Y2VwdGlvbiwKICAgICAgICAgICAgICAgICBiInB5dGhvbi5vcmciLmRlY29kZSwgImlkbmEiLCBlcnJvcnMpCiAKKwogY2xhc3MgQ29kZWNzTW9kdWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CkBAIC0xNzgwLDYgKzE4MDYsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVW5pY29kZUVycm9yLAogICAgICAgICAgICAgICAgIGNvZGVjcy5kZWNvZGUsIGInYWJjJywgJ3VuZGVmaW5lZCcsIGVycm9ycykKIAorCiBjbGFzcyBTdHJlYW1SZWFkZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiBzZXRVcChzZWxmKToKQEAgLTE3OTAsNiArMTgxNyw3IEBACiAgICAgICAgIGYgPSBzZWxmLnJlYWRlcihzZWxmLnN0cmVhbSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWRsaW5lcygpLCBbJ1x1ZDU1Y1xuJywgJ1x1YWUwMCddKQogCisKIGNsYXNzIEVuY29kZWRGaWxlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKQEAgLTE5MDksNiArMTkzNyw4IEBACiAKIGlmIGhhc2F0dHIoY29kZWNzLCAibWJjc19lbmNvZGUiKToKICAgICBhbGxfdW5pY29kZV9lbmNvZGluZ3MuYXBwZW5kKCJtYmNzIikKK2lmIGhhc2F0dHIoY29kZWNzLCAib2VtX2VuY29kZSIpOgorICAgIGFsbF91bmljb2RlX2VuY29kaW5ncy5hcHBlbmQoIm9lbSIpCiAKICMgVGhlIGZvbGxvd2luZyBlbmNvZGluZyBpcyBub3QgdGVzdGVkLCBiZWNhdXNlIGl0J3Mgbm90IHN1cHBvc2VkCiAjIHRvIHdvcms6CkBAIC0xOTIwLDYgKzE5NTAsNyBAQAogICAgICJ1bmljb2RlX2ludGVybmFsIgogXQogCisKIGNsYXNzIEJhc2ljVW5pY29kZVRlc3QodW5pdHRlc3QuVGVzdENhc2UsIE1peEluQ2hlY2tTdGF0ZUhhbmRsaW5nKToKICAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CiAgICAgICAgIHMgPSAiYWJjMTIzIiAgIyBhbGwgY29kZWNzIHNob3VsZCBiZSBhYmxlIHRvIGVuY29kZSB0aGVzZQpAQCAtMjA4Miw2ICsyMTEzLDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3N0YXRlX2hhbmRsaW5nX2RlY29kZShlbmNvZGluZywgdSwgdS5lbmNvZGUoZW5jb2RpbmcpKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfc3RhdGVfaGFuZGxpbmdfZW5jb2RlKGVuY29kaW5nLCB1LCB1LmVuY29kZShlbmNvZGluZykpCiAKKwogY2xhc3MgQ2hhcm1hcFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RlY29kZV93aXRoX3N0cmluZ19tYXAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCkBAIC0yMzMyLDYgKzIzNjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mby5zdHJlYW13cml0ZXIsICdzdHJpY3QnKSBhcyBzcnc6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNydy5yZWFkKCksICJceGZjIikKIAorCiBjbGFzcyBUeXBlc1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2RlY29kZV91bmljb2RlKHNlbGYpOgogICAgICAgICAjIE1vc3QgZGVjb2RlcnMgZG9uJ3QgYWNjZXB0IHVuaWNvZGUgaW5wdXQKQEAgLTI0MjAsNyArMjQ1Myw2IEBACiAgICAgICAgIGNoZWNrKGJyIltcZl0iLCAiW1x4MGNdIikKICAgICAgICAgY2hlY2soYnIiW1xyXSIsICJbXHgwZF0iKQogICAgICAgICBjaGVjayhiciJbXDddIiwgIltceDA3XSIpCi0gICAgICAgIGNoZWNrKGJyIltcOF0iLCByIltcOF0iKQogICAgICAgICBjaGVjayhiciJbXDc4XSIsICJbXHgwNzhdIikKICAgICAgICAgY2hlY2soYnIiW1w0MV0iLCAiWyFdIikKICAgICAgICAgY2hlY2soYnIiW1w0MThdIiwgIlshOF0iKQpAQCAtMjQzMCw5ICsyNDYyLDE4IEBACiAgICAgICAgIGNoZWNrKGJyIltceDQxMF0iLCAiW0EwXSIpCiAgICAgICAgIGNoZWNrKGJyIlx1MjBhYyIsICJcdTIwYWMiKQogICAgICAgICBjaGVjayhiciJcVTAwMDFkMTIwIiwgIlxVMDAwMWQxMjAiKQotICAgICAgICBmb3IgYiBpbiByYW5nZSgyNTYpOgotICAgICAgICAgICAgaWYgYiBub3QgaW4gYidcbiJcJ1xcYWJ0bnZmcjAxMjM0NTY3eHVVTic6Ci0gICAgICAgICAgICAgICAgY2hlY2soYidcXCcgKyBieXRlcyhbYl0pLCAnXFwnICsgY2hyKGIpKQorICAgICAgICBmb3IgaSBpbiByYW5nZSg5NywgMTIzKToKKyAgICAgICAgICAgIGIgPSBieXRlcyhbaV0pCisgICAgICAgICAgICBpZiBiIG5vdCBpbiBiJ2FiZm5ydHV2eCc6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYiwgIlxcIiArIGNocihpKSkKKyAgICAgICAgICAgIGlmIGIudXBwZXIoKSBub3QgaW4gYidVTic6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgICAgIGNoZWNrKGIiXFwiICsgYi51cHBlcigpLCAiXFwiICsgY2hyKGktMzIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIGNoZWNrKGJyIlw4IiwgIlxcOCIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgY2hlY2soYnIiXDkiLCAiXFw5IikKIAogICAgIGRlZiB0ZXN0X2RlY29kZV9lcnJvcnMoc2VsZik6CiAgICAgICAgIGRlY29kZSA9IGNvZGVjcy51bmljb2RlX2VzY2FwZV9kZWNvZGUKQEAgLTI2NDIsNiArMjY4Myw3IEBACiAgICAgYnl0ZXNfdHJhbnNmb3JtX2VuY29kaW5ncy5hcHBlbmQoImJ6Ml9jb2RlYyIpCiAgICAgdHJhbnNmb3JtX2FsaWFzZXNbImJ6Ml9jb2RlYyJdID0gWyJiejIiXQogCisKIGNsYXNzIFRyYW5zZm9ybUNvZGVjVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CkBAIC0yNjk0LDggKzI3MzYsOCBAQAogICAgICAgICBiYWRfaW5wdXQgPSAiYmFkIGlucHV0IHR5cGUiCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBieXRlc190cmFuc2Zvcm1fZW5jb2RpbmdzOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZW5jb2Rpbmc9ZW5jb2RpbmcpOgotICAgICAgICAgICAgICAgIGZtdCA9ICggInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgZm10ID0gKHIieyFyfSBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5lbmNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KGVuY29kaW5nKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKSBhcyBmYWlsdXJlOgogICAgICAgICAgICAgICAgICAgICBiYWRfaW5wdXQuZW5jb2RlKGVuY29kaW5nKQpAQCAtMjcwNCw3ICsyNzQ2LDcgQEAKICAgICBkZWYgdGVzdF90ZXh0X3RvX2JpbmFyeV9ibGFja2xpc3RzX3RleHRfdHJhbnNmb3JtcyhzZWxmKToKICAgICAgICAgIyBDaGVjayBzdHIuZW5jb2RlIGdpdmVzIGEgZ29vZCBlcnJvciBtZXNzYWdlIGZvciBzdHIgLT4gc3RyIGNvZGVjcwogICAgICAgICBtc2cgPSAociJeJ3JvdF8xMycgaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQorICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmVuY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoTG9va3VwRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICAianVzdCBhbiBleGFtcGxlIG1lc3NhZ2UiLmVuY29kZSgicm90XzEzIikKIApAQCAtMjcxNiw3ICsyNzU4LDcgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGVuY29kaW5nPWVuY29kaW5nKToKICAgICAgICAgICAgICAgICBlbmNvZGVkX2RhdGEgPSBjb2RlY3MuZW5jb2RlKGRhdGEsIGVuY29kaW5nKQogICAgICAgICAgICAgICAgIGZtdCA9IChyInshcn0gaXMgbm90IGEgdGV4dCBlbmNvZGluZzsgIgotICAgICAgICAgICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZGVjb2RlXChcKSB0byBoYW5kbGUgYXJiaXRyYXJ5IGNvZGVjcyIpCisgICAgICAgICAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKICAgICAgICAgICAgICAgICBtc2cgPSBmbXQuZm9ybWF0KGVuY29kaW5nKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKToKICAgICAgICAgICAgICAgICAgICAgZW5jb2RlZF9kYXRhLmRlY29kZShlbmNvZGluZykKQEAgLTI3MjgsNyArMjc3MCw3IEBACiAgICAgICAgIGZvciBiYWRfaW5wdXQgaW4gKGIiaW1tdXRhYmxlIiwgYnl0ZWFycmF5KGIibXV0YWJsZSIpKToKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGJhZF9pbnB1dD1iYWRfaW5wdXQpOgogICAgICAgICAgICAgICAgIG1zZyA9IChyIl4ncm90XzEzJyBpcyBub3QgYSB0ZXh0IGVuY29kaW5nOyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGhhbmRsZSBhcmJpdHJhcnkgY29kZWNzIikKKyAgICAgICAgICAgICAgICAgICAgICAgciJ1c2UgY29kZWNzLmRlY29kZVwoXCkgdG8gaGFuZGxlIGFyYml0cmFyeSBjb2RlY3MiKQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChMb29rdXBFcnJvciwgbXNnKSBhcyBmYWlsdXJlOgogICAgICAgICAgICAgICAgICAgICBiYWRfaW5wdXQuZGVjb2RlKCJyb3RfMTMiKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGZhaWx1cmUuZXhjZXB0aW9uLl9fY2F1c2VfXykKQEAgLTI5NDcsMTIgKzI5ODksMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkZWNvZGVkLCBiIm5vdCBzdHIhIikKICAgICAgICAgIyBUZXh0IG1vZGVsIG1ldGhvZHMgc2hvdWxkIGNvbXBsYWluCiAgICAgICAgIGZtdCA9IChyIl57IXJ9IGVuY29kZXIgcmV0dXJuZWQgJ3N0cicgaW5zdGVhZCBvZiAnYnl0ZXMnOyAiCi0gICAgICAgICAgICAgICAgInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBlbmNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCisgICAgICAgICAgICAgICByInVzZSBjb2RlY3MuZW5jb2RlXChcKSB0byBlbmNvZGUgdG8gYXJiaXRyYXJ5IHR5cGVzJCIpCiAgICAgICAgIG1zZyA9IGZtdC5mb3JtYXQoc2VsZi5jb2RlY19uYW1lKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgInN0cl9pbnB1dCIuZW5jb2RlKHNlbGYuY29kZWNfbmFtZSkKICAgICAgICAgZm10ID0gKHIiXnshcn0gZGVjb2RlciByZXR1cm5lZCAnYnl0ZXMnIGluc3RlYWQgb2YgJ3N0cic7ICIKLSAgICAgICAgICAgICAgICAidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGRlY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKKyAgICAgICAgICAgICAgIHIidXNlIGNvZGVjcy5kZWNvZGVcKFwpIHRvIGRlY29kZSB0byBhcmJpdHJhcnkgdHlwZXMkIikKICAgICAgICAgbXNnID0gZm10LmZvcm1hdChzZWxmLmNvZGVjX25hbWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBiImJ5dGVzIGlucHV0Ii5kZWNvZGUoc2VsZi5jb2RlY19uYW1lKQpAQCAtMzA5MywxMSArMzEzNSwxMCBAQAogICAgICAgICAgICAgKGInXHhmZlx4ZjRceDhmXHhiZlx4YmYnLCAnaWdub3JlJywgJ1xVMDAxMGZmZmYnKSwKICAgICAgICAgICAgIChiJ1x4ZmZceGY0XHg4Zlx4YmZceGJmJywgJ3JlcGxhY2UnLCAnXHVmZmZkXFUwMDEwZmZmZicpLAogICAgICAgICApKQotICAgICAgICBpZiBWSVNUQV9PUl9MQVRFUjoKLSAgICAgICAgICAgIHNlbGYuY2hlY2tfZW5jb2RlKHNlbGYuQ1BfVVRGOCwgKAotICAgICAgICAgICAgICAgICgnW1xVMDAxMGZmZmZcdURDODBdJywgJ2lnbm9yZScsIGInW1x4ZjRceDhmXHhiZlx4YmZdJyksCi0gICAgICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAotICAgICAgICAgICAgKSkKKyAgICAgICAgc2VsZi5jaGVja19lbmNvZGUoc2VsZi5DUF9VVEY4LCAoCisgICAgICAgICAgICAoJ1tcVTAwMTBmZmZmXHVEQzgwXScsICdpZ25vcmUnLCBiJ1tceGY0XHg4Zlx4YmZceGJmXScpLAorICAgICAgICAgICAgKCdbXFUwMDEwZmZmZlx1REM4MF0nLCAncmVwbGFjZScsIGInW1x4ZjRceDhmXHhiZlx4YmY/XScpLAorICAgICAgICApKQogCiAgICAgZGVmIHRlc3RfaW5jcmVtZW50YWwoc2VsZik6CiAgICAgICAgIGRlY29kZWQgPSBjb2RlY3MuY29kZV9wYWdlX2RlY29kZSg5MzIsIGInXHg4MicsICdzdHJpY3QnLCBGYWxzZSkKQEAgLTMxMTgsNiArMzE1OSw5NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb2RlZCwgKCdhYmMnLCAzKSkKIAorICAgIGRlZiB0ZXN0X21iY3NfYWxpYXMoc2VsZik6CisgICAgICAgICMgQ2hlY2sgdGhhdCBsb29raW5nIHVwIG91ciAnZGVmYXVsdCcgY29kZXBhZ2Ugd2lsbCByZXR1cm4KKyAgICAgICAgIyBtYmNzIHdoZW4gd2UgZG9uJ3QgaGF2ZSBhIG1vcmUgc3BlY2lmaWMgb25lIGF2YWlsYWJsZQorICAgICAgICBpbXBvcnQgX2Jvb3Rsb2NhbGUKKyAgICAgICAgZGVmIF9nZXRfZmFrZV9jb2RlcGFnZSgqYSk6CisgICAgICAgICAgICByZXR1cm4gJ2NwMTIzJworICAgICAgICBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9nZXRfZmFrZV9jb2RlcGFnZQorICAgICAgICB0cnk6CisgICAgICAgICAgICBjb2RlYyA9IGNvZGVjcy5sb29rdXAoJ2NwMTIzJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZWMubmFtZSwgJ21iY3MnKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgX2Jvb3Rsb2NhbGUuZ2V0cHJlZmVycmVkZW5jb2RpbmcgPSBvbGRfZ2V0cHJlZmVycmVkZW5jb2RpbmcKKworCitjbGFzcyBBU0NJSVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjMTIzJy5lbmNvZGUoJ2FzY2lpJyksIGInYWJjMTIzJykKKworICAgIGRlZiB0ZXN0X2VuY29kZV9lcnJvcihzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGVycm9yX2hhbmRsZXIsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICdpZ25vcmUnLCBiJ1tdJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY10nLCAncmVwbGFjZScsIGInWz8/P10nKSwKKyAgICAgICAgICAgICgnW1x4ODBceGZmXHUyMGFjXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjMTI4OyYjMjU1OyYjODM2NDtdJyksCisgICAgICAgICAgICAoJ1tceDgwXHhmZlx1MjBhY1xVMDAwYWJjZGVdJywgJ2JhY2tzbGFzaHJlcGxhY2UnLAorICAgICAgICAgICAgIGInW1xceDgwXFx4ZmZcXHUyMGFjXFxVMDAwYWJjZGVdJyksCisgICAgICAgICAgICAoJ1tcdWRjODBcdWRjZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsIGInW1x4ODBceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmVuY29kZSgnYXNjaWknLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX3N1cnJvZ2F0ZWVzY2FwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpOgorICAgICAgICAgICAgIyB0aGUgZmlyc3QgY2hhcmFjdGVyIGNhbiBiZSBkZWNvZGVkLCBidXQgbm90IHRoZSBzZWNvbmQKKyAgICAgICAgICAgICdcdWRjODBceGZmJy5lbmNvZGUoJ2FzY2lpJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidhYmMnLmRlY29kZSgnYXNjaWknKSwgJ2FiYycpCisKKyAgICBkZWYgdGVzdF9kZWNvZGVfZXJyb3Ioc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ2lnbm9yZScsICdbXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdyZXBsYWNlJywgJ1tcdWZmZmRcdWZmZmRdJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ3N1cnJvZ2F0ZWVzY2FwZScsICdbXHVkYzgwXHVkY2ZmXScpLAorICAgICAgICAgICAgKGInW1x4ODBceGZmXScsICdiYWNrc2xhc2hyZXBsYWNlJywgJ1tcXHg4MFxceGZmXScpLAorICAgICAgICApOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoZGF0YT1kYXRhLCBlcnJvcl9oYW5kbGVyPWVycm9yX2hhbmRsZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZD1leHBlY3RlZCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLmRlY29kZSgnYXNjaWknLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisKK2NsYXNzIExhdGluMVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2VuY29kZShzZWxmKToKKyAgICAgICAgZm9yIGRhdGEsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICgnYWJjJywgYidhYmMnKSwKKyAgICAgICAgICAgICgnXHg4MFx4ZTlceGZmJywgYidceDgwXHhlOVx4ZmYnKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5lbmNvZGUoJ2xhdGluMScpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2VuY29kZV9lcnJvcnMoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBlcnJvcl9oYW5kbGVyLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoJ1tcdTIwYWNcdWRjODBdJywgJ2lnbm9yZScsIGInW10nKSwKKyAgICAgICAgICAgICgnW1x1MjBhY1x1ZGM4MF0nLCAncmVwbGFjZScsIGInWz8/XScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXFUwMDBhYmNkZV0nLCAnYmFja3NsYXNocmVwbGFjZScsCisgICAgICAgICAgICAgYidbXFx1MjBhY1xcVTAwMGFiY2RlXScpLAorICAgICAgICAgICAgKCdbXHUyMGFjXHVkYzgwXScsICd4bWxjaGFycmVmcmVwbGFjZScsIGInWyYjODM2NDsmIzU2NDQ4O10nKSwKKyAgICAgICAgICAgICgnW1x1ZGM4MFx1ZGNmZl0nLCAnc3Vycm9nYXRlZXNjYXBlJywgYidbXHg4MFx4ZmZdJyksCisgICAgICAgICk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChkYXRhPWRhdGEsIGVycm9yX2hhbmRsZXI9ZXJyb3JfaGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkPWV4cGVjdGVkKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEuZW5jb2RlKCdsYXRpbjEnLCBlcnJvcl9oYW5kbGVyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cGVjdGVkKQorCisgICAgZGVmIHRlc3RfZW5jb2RlX3N1cnJvZ2F0ZWVzY2FwZV9lcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRW5jb2RlRXJyb3IpOgorICAgICAgICAgICAgIyB0aGUgZmlyc3QgY2hhcmFjdGVyIGNhbiBiZSBkZWNvZGVkLCBidXQgbm90IHRoZSBzZWNvbmQKKyAgICAgICAgICAgICdcdWRjODBcdTIwYWMnLmVuY29kZSgnbGF0aW4xJywgJ3N1cnJvZ2F0ZWVzY2FwZScpCisKKyAgICBkZWYgdGVzdF9kZWNvZGUoc2VsZik6CisgICAgICAgIGZvciBkYXRhLCBleHBlY3RlZCBpbiAoCisgICAgICAgICAgICAoYidhYmMnLCAnYWJjJyksCisgICAgICAgICAgICAoYidbXHg4MFx4ZmZdJywgJ1tceDgwXHhmZl0nKSwKKyAgICAgICAgKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGRhdGE9ZGF0YSwgZXhwZWN0ZWQ9ZXhwZWN0ZWQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YS5kZWNvZGUoJ2xhdGluMScpLCBleHBlY3RlZCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb2Rlb3AucHkgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQppbmRleCA1MDliZjVkLi45OGRhMjZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvZGVvcC5weQpAQCAtMjgyLDcgKzI4Miw2IEBACiAgICAgICAgIGFpKCJpZiAoYSA9PSAxIGFuZCBiID0gMik6IHBhc3MiKQogCiAgICAgICAgIGFpKCJkZWwgMSIpCi0gICAgICAgIGFpKCJkZWwgKCkiKQogICAgICAgICBhaSgiZGVsICgxLCkiKQogICAgICAgICBhaSgiZGVsIFsxXSIpCiAgICAgICAgIGFpKCJkZWwgJzEnIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbGxlY3Rpb25zLnB5CmluZGV4IDUyMzgzODIuLjUyZmYyNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29sbGVjdGlvbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb2xsZWN0aW9ucy5weQpAQCAtMjAsMTAgKzIwLDEwIEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBDaGFpbk1hcAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVxdWUKIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBBd2FpdGFibGUsIENvcm91dGluZSwgQXN5bmNJdGVyYXRvciwgQXN5bmNJdGVyYWJsZQotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIEdlbmVyYXRvcgotZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgR2VuZXJhdG9yLCBSZXZlcnNpYmxlCitmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGUsIENvbGxlY3Rpb24KIGZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBTZXQsIE11dGFibGVTZXQKLWZyb20gY29sbGVjdGlvbnMuYWJjIGltcG9ydCBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgS2V5c1ZpZXcsIEl0ZW1zVmlldworZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBLZXlzVmlldywgSXRlbXNWaWV3LCBWYWx1ZXNWaWV3CiBmcm9tIGNvbGxlY3Rpb25zLmFiYyBpbXBvcnQgU2VxdWVuY2UsIE11dGFibGVTZXF1ZW5jZQogZnJvbSBjb2xsZWN0aW9ucy5hYmMgaW1wb3J0IEJ5dGVTdHJpbmcKIApAQCAtMjQyLDYgKzI0MiwxMCBAQAogICAgICAgICBdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuYW1lZHR1cGxlKCdOVCcsIHNwZWMsIHJlbmFtZT1UcnVlKS5fZmllbGRzLCByZW5hbWVkKQogCisgICAgZGVmIHRlc3RfbW9kdWxlX3BhcmFtZXRlcihzZWxmKToKKyAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIG1vZHVsZT1jb2xsZWN0aW9ucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOVC5fX21vZHVsZV9fLCBjb2xsZWN0aW9ucykKKwogICAgIGRlZiB0ZXN0X2luc3RhbmNlKHNlbGYpOgogICAgICAgICBQb2ludCA9IG5hbWVkdHVwbGUoJ1BvaW50JywgJ3ggeScpCiAgICAgICAgIHAgPSBQb2ludCgxMSwgMjIpCkBAIC00MTIsNiArNDE2LDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTlRDb2xvci5fZmllbGRzLCAoJ3JlZCcsICdncmVlbicsICdibHVlJykpCiAgICAgICAgIGdsb2JhbHMoKS5wb3AoJ05UQ29sb3InLCBOb25lKSAgICAgICAgICAjIGNsZWFuLXVwIGFmdGVyIHRoaXMgdGVzdAogCisgICAgZGVmIHRlc3Rfa2V5d29yZF9vbmx5X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjU2MjgKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHRlbXBsYXRlOgorICAgICAgICAgICAgTlQgPSBuYW1lZHR1cGxlKCdOVCcsIFsneCcsICd5J10sIHZlcmJvc2U9VHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignY2xhc3MgTlQnLCBOVC5fc291cmNlKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWyd4JywgJ3knXSwgVHJ1ZSkKKworICAgICAgICBOVCA9IG5hbWVkdHVwbGUoJ05UJywgWydhYmMnLCAnZGVmJ10sIHJlbmFtZT1UcnVlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5ULl9maWVsZHMsICgnYWJjJywgJ18xJykpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE5UID0gbmFtZWR0dXBsZSgnTlQnLCBbJ2FiYycsICdkZWYnXSwgRmFsc2UsIFRydWUpCiAKICAgICBkZWYgdGVzdF9uYW1lZHR1cGxlX3N1YmNsYXNzX2lzc3VlXzI0OTMxKHNlbGYpOgogICAgICAgICBjbGFzcyBQb2ludChuYW1lZHR1cGxlKCdfUG9pbnQnLCBbJ3gnLCAneSddKSk6CkBAIC00ODcsNiArNTAzLDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvdGhlci5yaWdodF9zaWRlLCdSaWdodCBzaWRlIG5vdCBjYWxsZWQgZm9yICVzLiVzJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHR5cGUoaW5zdGFuY2UpLCBuYW1lKSkKIAorZGVmIF90ZXN0X2dlbigpOgorICAgIHlpZWxkCisKIGNsYXNzIFRlc3RPbmVUcmlja1BvbnlBQkNzKEFCQ1Rlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X0F3YWl0YWJsZShzZWxmKToKQEAgLTY3NCw3ICs2OTMsNyBAQAogICAgICAgICBzYW1wbGVzID0gW2J5dGVzKCksIHN0cigpLAogICAgICAgICAgICAgICAgICAgIHR1cGxlKCksIGxpc3QoKSwgc2V0KCksIGZyb3plbnNldCgpLCBkaWN0KCksCiAgICAgICAgICAgICAgICAgICAgZGljdCgpLmtleXMoKSwgZGljdCgpLml0ZW1zKCksIGRpY3QoKS52YWx1ZXMoKSwKLSAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CkBAIC02ODgsNiArNzA3LDE2MSBAQAogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3Moc3RyLCBJKSkKICAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKEl0ZXJhYmxlLCAnX19pdGVyX18nKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2lzaW5zdGFuY2UoSXRlcmFibGUsICdfX2l0ZXJfXycpCisgICAgICAgICMgQ2hlY2sgTm9uZSBibG9ja2luZworICAgICAgICBjbGFzcyBJdDoKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIGNsYXNzIEl0QmxvY2tlZChJdCk6CisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoSXQsIEl0ZXJhYmxlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoSXQoKSwgSXRlcmFibGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoSXRCbG9ja2VkLCBJdGVyYWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShJdEJsb2NrZWQoKSwgSXRlcmFibGUpKQorCisgICAgZGVmIHRlc3RfUmV2ZXJzaWJsZShzZWxmKToKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1yZXZlcnNpYmxlcworICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGRpY3QoKSwgc2V0KCksIGZyb3plbnNldCgpXQorICAgICAgICBmb3IgeCBpbiBub25fc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgbm9uLXJldmVyc2libGUgaXRlcmFibGVzCisgICAgICAgIG5vbl9yZXZlcnNpYmxlcyA9IFtkaWN0KCkua2V5cygpLCBkaWN0KCkuaXRlbXMoKSwgZGljdCgpLnZhbHVlcygpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQ291bnRlcigpLCBDb3VudGVyKCkua2V5cygpLCBDb3VudGVyKCkuaXRlbXMoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIENvdW50ZXIoKS52YWx1ZXMoKSwgX3Rlc3RfZ2VuKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksIGl0ZXIoW10pLCByZXZlcnNlZChbXSldCisgICAgICAgIGZvciB4IGluIG5vbl9yZXZlcnNpYmxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHR5cGUoeCksIFJldmVyc2libGUpLCByZXByKHR5cGUoeCkpKQorICAgICAgICAjIENoZWNrIHNvbWUgcmV2ZXJzaWJsZSBpdGVyYWJsZXMKKyAgICAgICAgc2FtcGxlcyA9IFtieXRlcygpLCBzdHIoKSwgdHVwbGUoKSwgbGlzdCgpLCBPcmRlcmVkRGljdCgpLAorICAgICAgICAgICAgICAgICAgIE9yZGVyZWREaWN0KCkua2V5cygpLCBPcmRlcmVkRGljdCgpLml0ZW1zKCksCisgICAgICAgICAgICAgICAgICAgT3JkZXJlZERpY3QoKS52YWx1ZXMoKV0KKyAgICAgICAgZm9yIHggaW4gc2FtcGxlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZSh4LCBSZXZlcnNpYmxlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3ModHlwZSh4KSwgUmV2ZXJzaWJsZSksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgYWxzbyBNYXBwaW5nLCBNdXRhYmxlTWFwcGluZywgYW5kIFNlcXVlbmNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBSZXZlcnNpYmxlKSwgcmVwcihTZXF1ZW5jZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhNYXBwaW5nLCBSZXZlcnNpYmxlKSwgcmVwcihNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE11dGFibGVNYXBwaW5nLCBSZXZlcnNpYmxlKSwgcmVwcihNdXRhYmxlTWFwcGluZykpCisgICAgICAgICMgQ2hlY2sgZGlyZWN0IHN1YmNsYXNzaW5nCisgICAgICAgIGNsYXNzIFIoUmV2ZXJzaWJsZSk6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fcmV2ZXJzZWRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gaXRlcihsaXN0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChyZXZlcnNlZChSKCkpKSwgW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgUikpCisgICAgICAgIHNlbGYudmFsaWRhdGVfYWJzdHJhY3RfbWV0aG9kcyhSZXZlcnNpYmxlLCAnX19yZXZlcnNlZF9fJywgJ19faXRlcl9fJykKKyAgICAgICAgIyBDaGVjayByZXZlcnNpYmxlIG5vbi1pdGVyYWJsZSAod2hpY2ggaXMgbm90IFJldmVyc2libGUpCisgICAgICAgIGNsYXNzIFJldk5vSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6IHJldHVybiByZXZlcnNlZChbXSkKKyAgICAgICAgY2xhc3MgUmV2UGx1c0l0ZXIoUmV2Tm9JdGVyKToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZOb0l0ZXIsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2Tm9JdGVyKCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhSZXZQbHVzSXRlciwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFJldlBsdXNJdGVyKCksIFJldmVyc2libGUpKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgUmV2OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX3JldmVyc2VkX18oc2VsZik6IHJldHVybiByZXZlcnNlZChbXSkKKyAgICAgICAgY2xhc3MgUmV2SXRCbG9ja2VkKFJldik6CisgICAgICAgICAgICBfX2l0ZXJfXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgUmV2UmV2QmxvY2tlZChSZXYpOgorICAgICAgICAgICAgX19yZXZlcnNlZF9fID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhSZXYsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShSZXYoKSwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhSZXZJdEJsb2NrZWQsIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoUmV2SXRCbG9ja2VkKCksIFJldmVyc2libGUpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoUmV2UmV2QmxvY2tlZCwgUmV2ZXJzaWJsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShSZXZSZXZCbG9ja2VkKCksIFJldmVyc2libGUpKQorCisgICAgZGVmIHRlc3RfQ29sbGVjdGlvbihzZWxmKToKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1jb2xsZWN0aW9ucworICAgICAgICBub25fY29sbGVjdGlvbnMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLCBsYW1iZGEgeDogMip4XQorICAgICAgICBmb3IgeCBpbiBub25fY29sbGVjdGlvbnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdElzSW5zdGFuY2UoeCwgQ29sbGVjdGlvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBzb21lIG5vbi1jb2xsZWN0aW9uIGl0ZXJhYmxlcworICAgICAgICBub25fY29sX2l0ZXJhYmxlcyA9IFtfdGVzdF9nZW4oKSwgaXRlcihiJycpLCBpdGVyKGJ5dGVhcnJheSgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLCBkaWN0KCkudmFsdWVzKCldCisgICAgICAgIGZvciB4IGluIG5vbl9jb2xfaXRlcmFibGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3ModHlwZSh4KSwgQ29sbGVjdGlvbiksIHJlcHIodHlwZSh4KSkpCisgICAgICAgICMgQ2hlY2sgc29tZSBjb2xsZWN0aW9ucworICAgICAgICBzYW1wbGVzID0gW3NldCgpLCBmcm96ZW5zZXQoKSwgZGljdCgpLCBieXRlcygpLCBzdHIoKSwgdHVwbGUoKSwKKyAgICAgICAgICAgICAgICAgICBsaXN0KCksIGRpY3QoKS5rZXlzKCksIGRpY3QoKS5pdGVtcygpXQorICAgICAgICBmb3IgeCBpbiBzYW1wbGVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHgsIENvbGxlY3Rpb24pCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh0eXBlKHgpLCBDb2xsZWN0aW9uKSwgcmVwcih0eXBlKHgpKSkKKyAgICAgICAgIyBDaGVjayBhbHNvIE1hcHBpbmcsIE11dGFibGVNYXBwaW5nLCBldGMuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKFNlcXVlbmNlLCBDb2xsZWN0aW9uKSwgcmVwcihTZXF1ZW5jZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKE1hcHBpbmcsIENvbGxlY3Rpb24pLCByZXByKE1hcHBpbmcpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNdXRhYmxlTWFwcGluZywgQ29sbGVjdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXByKE11dGFibGVNYXBwaW5nKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2V0LCBDb2xsZWN0aW9uKSwgcmVwcihTZXQpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhNdXRhYmxlU2V0LCBDb2xsZWN0aW9uKSwgcmVwcihNdXRhYmxlU2V0KSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoU2VxdWVuY2UsIENvbGxlY3Rpb24pLCByZXByKE11dGFibGVTZXQpKQorICAgICAgICAjIENoZWNrIGRpcmVjdCBzdWJjbGFzc2luZworICAgICAgICBjbGFzcyBDb2woQ29sbGVjdGlvbik6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIERlckNvbChDb2wpOiBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChpdGVyKENvbCgpKSksIFtdKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MobGlzdCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKHNldCwgQ29sKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGZsb2F0LCBDb2wpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoaXRlcihEZXJDb2woKSkpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGxpc3QsIERlckNvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhzZXQsIERlckNvbCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhmbG9hdCwgRGVyQ29sKSkKKyAgICAgICAgc2VsZi52YWxpZGF0ZV9hYnN0cmFjdF9tZXRob2RzKENvbGxlY3Rpb24sICdfX2xlbl9fJywgJ19faXRlcl9fJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX2NvbnRhaW5zX18nKQorICAgICAgICAjIENoZWNrIHNpemVkIGNvbnRhaW5lciBub24taXRlcmFibGUgKHdoaWNoIGlzIG5vdCBDb2xsZWN0aW9uKSBldGMuCisgICAgICAgIGNsYXNzIENvbE5vSXRlcjoKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICAgICAgZGVmIF9fY29udGFpbnNfXyhzZWxmLCBpdGVtKTogcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIENvbE5vU2l6ZToKKyAgICAgICAgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKTogcmV0dXJuIGl0ZXIoW10pCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIGl0ZW0pOiByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ29sTm9Db250OgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29sTm9JdGVyLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKENvbE5vSXRlcigpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbE5vU2l6ZSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShDb2xOb1NpemUoKSwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhDb2xOb0NvbnQsIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoQ29sTm9Db250KCksIENvbGxlY3Rpb24pKQorICAgICAgICAjIENoZWNrIE5vbmUgYmxvY2tpbmcKKyAgICAgICAgY2xhc3MgU2l6ZUJsb2NrOgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOiByZXR1cm4gaXRlcihbXSkKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZik6IHJldHVybiBGYWxzZQorICAgICAgICAgICAgX19sZW5fXyA9IE5vbmUKKyAgICAgICAgY2xhc3MgSXRlckJsb2NrOgorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6IHJldHVybiAwCisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYpOiByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgX19pdGVyX18gPSBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNzdWJjbGFzcyhTaXplQmxvY2ssIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzaW5zdGFuY2UoU2l6ZUJsb2NrKCksIENvbGxlY3Rpb24pKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoSXRlckJsb2NrLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc2luc3RhbmNlKEl0ZXJCbG9jaygpLCBDb2xsZWN0aW9uKSkKKyAgICAgICAgIyBDaGVjayBOb25lIGJsb2NraW5nIGluIHN1YmNsYXNzCisgICAgICAgIGNsYXNzIENvbEltcGw6CisgICAgICAgICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIGl0ZXIobGlzdCgpKQorICAgICAgICAgICAgZGVmIF9fbGVuX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGNsYXNzIE5vbkNvbChDb2xJbXBsKToKKyAgICAgICAgICAgIF9fY29udGFpbnNfXyA9IE5vbmUKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKE5vbkNvbCwgQ29sbGVjdGlvbikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaXNpbnN0YW5jZShOb25Db2woKSwgQ29sbGVjdGlvbikpCisKIAogICAgIGRlZiB0ZXN0X0l0ZXJhdG9yKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosIGIiIiwgIiIsICgpLCBbXSwge30sIHNldCgpXQpAQCAtNjk5LDcgKzg3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgaXRlcihzZXQoKSksIGl0ZXIoZnJvemVuc2V0KCkpLAogICAgICAgICAgICAgICAgICAgIGl0ZXIoZGljdCgpLmtleXMoKSksIGl0ZXIoZGljdCgpLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgIGl0ZXIoZGljdCgpLnZhbHVlcygpKSwKLSAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICh4IGZvciB4IGluIFtdKSwKICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIHNhbXBsZXM6CkBAIC03ODcsNyArOTYxLDcgQEAKIAogICAgIGRlZiB0ZXN0X1NpemVkKHNlbGYpOgogICAgICAgICBub25fc2FtcGxlcyA9IFtOb25lLCA0MiwgMy4xNCwgMWosCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04MDUsNyArOTc5LDcgQEAKIAogICAgIGRlZiB0ZXN0X0NvbnRhaW5lcihzZWxmKToKICAgICAgICAgbm9uX3NhbXBsZXMgPSBbTm9uZSwgNDIsIDMuMTQsIDFqLAotICAgICAgICAgICAgICAgICAgICAgICAobGFtYmRhOiAoeWllbGQpKSgpLAorICAgICAgICAgICAgICAgICAgICAgICBfdGVzdF9nZW4oKSwKICAgICAgICAgICAgICAgICAgICAgICAgKHggZm9yIHggaW4gW10pLAogICAgICAgICAgICAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vbl9zYW1wbGVzOgpAQCAtODI0LDcgKzk5OCw3IEBACiAgICAgZGVmIHRlc3RfQ2FsbGFibGUoc2VsZik6CiAgICAgICAgIG5vbl9zYW1wbGVzID0gW05vbmUsIDQyLCAzLjE0LCAxaiwKICAgICAgICAgICAgICAgICAgICAgICAgIiIsIGIiIiwgKCksIFtdLCB7fSwgc2V0KCksCi0gICAgICAgICAgICAgICAgICAgICAgIChsYW1iZGE6ICh5aWVsZCkpKCksCisgICAgICAgICAgICAgICAgICAgICAgIF90ZXN0X2dlbigpLAogICAgICAgICAgICAgICAgICAgICAgICAoeCBmb3IgeCBpbiBbXSksCiAgICAgICAgICAgICAgICAgICAgICAgIF0KICAgICAgICAgZm9yIHggaW4gbm9uX3NhbXBsZXM6CkBAIC04NDIsMTQgKzEwMTYsMTQgQEAKICAgICAgICAgc2VsZi52YWxpZGF0ZV9pc2luc3RhbmNlKENhbGxhYmxlLCAnX19jYWxsX18nKQogCiAgICAgZGVmIHRlc3RfZGlyZWN0X3N1YmNsYXNzaW5nKHNlbGYpOgotICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKKyAgICAgICAgZm9yIEIgaW4gSGFzaGFibGUsIEl0ZXJhYmxlLCBJdGVyYXRvciwgUmV2ZXJzaWJsZSwgU2l6ZWQsIENvbnRhaW5lciwgQ2FsbGFibGU6CiAgICAgICAgICAgICBjbGFzcyBDKEIpOgogICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKEMsIEIpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKGludCwgQykpCiAKICAgICBkZWYgdGVzdF9yZWdpc3RyYXRpb24oc2VsZik6Ci0gICAgICAgIGZvciBCIGluIEhhc2hhYmxlLCBJdGVyYWJsZSwgSXRlcmF0b3IsIFNpemVkLCBDb250YWluZXIsIENhbGxhYmxlOgorICAgICAgICBmb3IgQiBpbiBIYXNoYWJsZSwgSXRlcmFibGUsIEl0ZXJhdG9yLCBSZXZlcnNpYmxlLCBTaXplZCwgQ29udGFpbmVyLCBDYWxsYWJsZToKICAgICAgICAgICAgIGNsYXNzIEM6CiAgICAgICAgICAgICAgICAgX19oYXNoX18gPSBOb25lICAjIE1ha2Ugc3VyZSBpdCBpc24ndCBoYXNoYWJsZSBieSBkZWZhdWx0CiAgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQywgQiksIEIuX19uYW1lX18pCkBAIC0xMDQ5LDYgKzEyMjMsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShuY3MgPiBjcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5jcyA+PSBjcykKIAorICAgIGRlZiB0ZXN0X2lzc3VlMjY5MTUoc2VsZik6CisgICAgICAgICMgQ29udGFpbmVyIG1lbWJlcnNoaXAgdGVzdCBzaG91bGQgY2hlY2sgaWRlbnRpdHkgZmlyc3QKKyAgICAgICAgY2xhc3MgQ3VzdG9tRXF1YWxPYmplY3Q6CisgICAgICAgICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICAgICAgY2xhc3MgQ3VzdG9tU2VxdWVuY2UobGlzdCk6CisgICAgICAgICAgICBkZWYgX19jb250YWluc19fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICByZXR1cm4gU2VxdWVuY2UuX19jb250YWluc19fKHNlbGYsIHZhbHVlKQorCisgICAgICAgIG5hbiA9IGZsb2F0KCduYW4nKQorICAgICAgICBvYmogPSBDdXN0b21FcXVhbE9iamVjdCgpCisgICAgICAgIGNvbnRhaW5lcnMgPSBbCisgICAgICAgICAgICBDdXN0b21TZXF1ZW5jZShbbmFuLCBvYmpdKSwKKyAgICAgICAgICAgIEl0ZW1zVmlldyh7MTogbmFuLCAyOiBvYmp9KSwKKyAgICAgICAgICAgIFZhbHVlc1ZpZXcoezE6IG5hbiwgMjogb2JqfSkKKyAgICAgICAgXQorICAgICAgICBmb3IgY29udGFpbmVyIGluIGNvbnRhaW5lcnM6CisgICAgICAgICAgICBmb3IgZWxlbSBpbiBjb250YWluZXI6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlbGVtLCBjb250YWluZXIpCisKICAgICBkZWYgYXNzZXJ0U2FtZVNldChzZWxmLCBzMSwgczIpOgogICAgICAgICAjIGNvZXJjZSBib3RoIHRvIGEgcmVhbCBzZXQgdGhlbiBjaGVjayBlcXVhbGl0eQogICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKHNldChzMSksIHNldChzMikpCkBAIC0xMjE5LDYgKzE0MTMsNyBAQAogICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgogICAgICAgICAgICAgICAgIHJldHVybiBpdGVyKCgpKQogICAgICAgICBzZWxmLnZhbGlkYXRlX2NvbXBhcmlzb24oTXlNYXBwaW5nKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIE15TWFwcGluZygpKQogCiAgICAgZGVmIHRlc3RfTXV0YWJsZU1hcHBpbmcoc2VsZik6CiAgICAgICAgIGZvciBzYW1wbGUgaW4gW2RpY3RdOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlLnB5CmluZGV4IDgyNGU4NDMuLjQwOWVjODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGUucHkKQEAgLTQ3MywxMCArNDczLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZCwgezE6IDIsIDM6IDR9KQogCiAgICAgZGVmIHRlc3RfY29tcGlsZV9maWxlbmFtZShzZWxmKToKLSAgICAgICAgZm9yIGZpbGVuYW1lIGluICgnZmlsZS5weScsIGInZmlsZS5weScsCi0gICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpKToKKyAgICAgICAgZm9yIGZpbGVuYW1lIGluICdmaWxlLnB5JywgYidmaWxlLnB5JzoKICAgICAgICAgICAgIGNvZGUgPSBjb21waWxlKCdwYXNzJywgZmlsZW5hbWUsICdleGVjJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoJ3Bhc3MnLCBmaWxlbmFtZSwgJ2V4ZWMnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29tcGlsZSwgJ3Bhc3MnLCBsaXN0KGInZmlsZS5weScpLCAnZXhlYycpCiAKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKQEAgLTY2MSw2ICs2NjQsMTYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYxKDApKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoZjIoMC4wKSkKIAorICAgIGRlZiB0ZXN0X3BhdGhfbGlrZV9vYmplY3RzKHNlbGYpOgorICAgICAgICAjIEFuIGltcGxpY2l0IHRlc3QgZm9yIFB5VW5pY29kZV9GU0RlY29kZXIoKS4KKyAgICAgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5fcGF0aCA9IHBhdGgKKyAgICAgICAgICAgIGRlZiBfX2ZzcGF0aF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLl9wYXRoCisKKyAgICAgICAgY29tcGlsZSgiNDIiLCBQYXRoTGlrZSgidGVzdF9jb21waWxlX3BhdGhsaWtlIiksICJzaW5nbGUiKQorCiAKIGNsYXNzIFRlc3RTdGFja1NpemUodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICMgVGhlc2UgdGVzdHMgY2hlY2sgdGhhdCB0aGUgY29tcHV0ZWQgc3RhY2sgc2l6ZSBmb3IgYSBjb2RlIG9iamVjdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5IGIvTGliL3Rlc3QvdGVzdF9jb21waWxlYWxsLnB5CmluZGV4IDJjZThhNjEuLjIzNTZlZmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGlsZWFsbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBpbGVhbGwucHkKQEAgLTEsNiArMSw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgY29tcGlsZWFsbAogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBwYXRobGliCiBpbXBvcnQgcHlfY29tcGlsZQpAQCAtNDAsNiArNDEsMTEgQEAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5kaXJlY3RvcnkpCiAKKyAgICBkZWYgYWRkX2JhZF9zb3VyY2VfZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5iYWRfc291cmNlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5kaXJlY3RvcnksICdfdGVzdF9iYWQucHknKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5iYWRfc291cmNlX3BhdGgsICd3JykgYXMgZmlsZToKKyAgICAgICAgICAgIGZpbGUud3JpdGUoJ3ggKFxuJykKKwogICAgIGRlZiBkYXRhKHNlbGYpOgogICAgICAgICB3aXRoIG9wZW4oc2VsZi5iY19wYXRoLCAncmInKSBhcyBmaWxlOgogICAgICAgICAgICAgZGF0YSA9IGZpbGUucmVhZCg4KQpAQCAtNzgsMTUgKzg0LDQ3IEBACiAgICAgICAgICAgICAgICAgb3MudW5saW5rKGZuKQogICAgICAgICAgICAgZXhjZXB0OgogICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2ZpbGUoc2VsZi5zb3VyY2VfcGF0aCwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLnNvdXJjZV9wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgyKSkKICAgICAgICAgb3MudW5saW5rKHNlbGYuYmNfcGF0aCkKLSAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgZm9yY2U9RmFsc2UsIHF1aWV0PVRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZGlyKHNlbGYuZGlyZWN0b3J5LCBmb3JjZT1GYWxzZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcXVpZXQ9VHJ1ZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoMikpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgpCiAgICAgICAgIG9zLnVubGluayhzZWxmLmJjX3BhdGgyKQorICAgICAgICAjIFRlc3QgYWdhaW5zdCBiYWQgZmlsZXMKKyAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShzZWxmLmJhZF9zb3VyY2VfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3JjZT1GYWxzZSwgcXVpZXQ9MikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPUZhbHNlLCBxdWlldD0yKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICAjIHdlIHNob3VsZCBhbHNvIHRlc3QgdGhlIG91dHB1dAorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9maWxlKHBhdGhsaWIuUGF0aChzZWxmLnNvdXJjZV9wYXRoKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoc3Rkb3V0LmdldHZhbHVlKCksIHInQ29tcGlsaW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKworICAgIGRlZiB0ZXN0X2NvbXBpbGVfZmlsZV9wYXRobGlrZV9kZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb21waWxlYWxsLmNvbXBpbGVfZmlsZShwYXRobGliLlBhdGgoc2VsZi5zb3VyY2VfcGF0aCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZGlyPXBhdGhsaWIuUGF0aCgnZGRpcl9wYXRoJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBxdWlldD0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKHNlbGYuYmNfcGF0aCkpCisKKyAgICBkZWYgdGVzdF9jb21waWxlX3BhdGgoc2VsZik6CisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbXBpbGVhbGwuY29tcGlsZV9wYXRoKHF1aWV0PTIpKQorCisgICAgICAgIHdpdGggdGVzdC50ZXN0X2ltcG9ydGxpYi51dGlsLmltcG9ydF9zdGF0ZShwYXRoPVtzZWxmLmRpcmVjdG9yeV0pOgorICAgICAgICAgICAgc2VsZi5hZGRfYmFkX3NvdXJjZV9maWxlKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY29tcGlsZWFsbC5jb21waWxlX3BhdGgoc2tpcF9jdXJkaXI9RmFsc2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcmNlPVRydWUsIHF1aWV0PTIpKQogCiAgICAgZGVmIHRlc3Rfbm9fcHljYWNoZV9pbl9ub25fcGFja2FnZShzZWxmKToKICAgICAgICAgIyBCdWcgODU2MyByZXBvcnRlZCB0aGF0IF9fcHljYWNoZV9fIGRpcmVjdG9yaWVzIGdvdCBjcmVhdGVkIGJ5CkBAIC0xMTUsNiArMTUzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpbWl6YXRpb249b3B0KQogICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoY2FjaGVkMykpCiAKKyAgICBkZWYgdGVzdF9jb21waWxlX2Rpcl9wYXRobGlrZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmlzZmlsZShzZWxmLmJjX3BhdGgpKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2FwdHVyZWRfc3Rkb3V0KCkgYXMgc3Rkb3V0OgorICAgICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihwYXRobGliLlBhdGgoc2VsZi5kaXJlY3RvcnkpKQorICAgICAgICBsaW5lID0gc3Rkb3V0LmdldHZhbHVlKCkuc3BsaXRsaW5lcygpWzBdCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgobGluZSwgcidMaXN0aW5nIChbXldpbmRvd3NQYXRofFBvc2l4UGF0aF0uKiknKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUoc2VsZi5iY19wYXRoKSkKKwogICAgIEBtb2NrLnBhdGNoKCdjb21waWxlYWxsLlByb2Nlc3NQb29sRXhlY3V0b3InKQogICAgIGRlZiB0ZXN0X2NvbXBpbGVfcG9vbF9jYWxsZWQoc2VsZiwgcG9vbF9tb2NrKToKICAgICAgICAgY29tcGlsZWFsbC5jb21waWxlX2RpcihzZWxmLmRpcmVjdG9yeSwgcXVpZXQ9VHJ1ZSwgd29ya2Vycz01KQpAQCAtMTk3LDEwICsyNDMsOSBAQAogICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ25vdCBhbGwgZW50cmllcyBvbiBzeXMucGF0aCBhcmUgd3JpdGFibGUnKQogCiAgICAgZGVmIF9nZXRfcnVuX2FyZ3Moc2VsZiwgYXJncyk6Ci0gICAgICAgIGludGVycF9hcmdzID0gWyctUyddCi0gICAgICAgIGlmIHN5cy5mbGFncy5vcHRpbWl6ZToKLSAgICAgICAgICAgIGludGVycF9hcmdzLmFwcGVuZCh7MSA6ICctTycsIDIgOiAnLU9PJ31bc3lzLmZsYWdzLm9wdGltaXplXSkKLSAgICAgICAgcmV0dXJuIGludGVycF9hcmdzICsgWyctbScsICdjb21waWxlYWxsJ10gKyBsaXN0KGFyZ3MpCisgICAgICAgIHJldHVybiBbKnN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCksCisgICAgICAgICAgICAgICAgJy1TJywgJy1tJywgJ2NvbXBpbGVhbGwnLAorICAgICAgICAgICAgICAgICphcmdzXQogCiAgICAgZGVmIGFzc2VydFJ1bk9LKHNlbGYsICphcmdzLCAqKmVudl92YXJzKToKICAgICAgICAgcmMsIG91dCwgZXJyID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5IGIvTGliL3Rlc3QvdGVzdF9jb21wbGV4LnB5CmluZGV4IDQwM2VlM2IuLmMyNDljYTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29tcGxleC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbXBsZXgucHkKQEAgLTEsNSArMSw3IEBACiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogCiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZG9tCiBmcm9tIG1hdGggaW1wb3J0IGF0YW4yLCBpc25hbiwgY29weXNpZ24KQEAgLTM4NSw2ICszODcsMTggQEAKICAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChjb21wbGV4KGNvbXBsZXgxKDFqKSksIDJqKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNvbXBsZXgsIGNvbXBsZXgyKDFqKSkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHVuZGVyc2NvcmVzCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmIG5vdCBhbnkoY2ggaW4gbGl0IGZvciBjaCBpbiAneFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV4KGxpdCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXgobGl0KSwgY29tcGxleChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ3hYb09iQicpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbXBsZXgsIGxpdCkKKwogICAgIGRlZiB0ZXN0X2hhc2goc2VsZik6CiAgICAgICAgIGZvciB4IGluIHJhbmdlKC0zMCwgMzApOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoYXNoKHgpLCBoYXNoKGNvbXBsZXgoeCwgMCkpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb25jdXJyZW50X2Z1dHVyZXMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQppbmRleCA3NTEzODE1Li4yM2U5NWIyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbmN1cnJlbnRfZnV0dXJlcy5weQpAQCAtMTU0LDYgKzE1NCwzMCBAQAogICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgogICAgICAgICAgICAgdC5qb2luKCkKIAorICAgIGRlZiB0ZXN0X3RocmVhZF9uYW1lc19hc3NpZ25lZChzZWxmKToKKyAgICAgICAgZXhlY3V0b3IgPSBmdXR1cmVzLlRocmVhZFBvb2xFeGVjdXRvcigKKyAgICAgICAgICAgIG1heF93b3JrZXJzPTUsIHRocmVhZF9uYW1lX3ByZWZpeD0nU3BlY2lhbFBvb2wnKQorICAgICAgICBleGVjdXRvci5tYXAoYWJzLCByYW5nZSgtNSwgNSkpCisgICAgICAgIHRocmVhZHMgPSBleGVjdXRvci5fdGhyZWFkcworICAgICAgICBkZWwgZXhlY3V0b3IKKworICAgICAgICBmb3IgdCBpbiB0aHJlYWRzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSZWdleCh0Lm5hbWUsIHInXlNwZWNpYWxQb29sX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCisgICAgZGVmIHRlc3RfdGhyZWFkX25hbWVzX2RlZmF1bHQoc2VsZik6CisgICAgICAgIGV4ZWN1dG9yID0gZnV0dXJlcy5UaHJlYWRQb29sRXhlY3V0b3IobWF4X3dvcmtlcnM9NSkKKyAgICAgICAgZXhlY3V0b3IubWFwKGFicywgcmFuZ2UoLTUsIDUpKQorICAgICAgICB0aHJlYWRzID0gZXhlY3V0b3IuX3RocmVhZHMKKyAgICAgICAgZGVsIGV4ZWN1dG9yCisKKyAgICAgICAgZm9yIHQgaW4gdGhyZWFkczoKKyAgICAgICAgICAgICMgV2UgZG9uJ3QgcGFydGljdWxhcmx5IGNhcmUgd2hhdCB0aGUgZGVmYXVsdCBuYW1lIGlzLCBqdXN0IHRoYXQKKyAgICAgICAgICAgICMgaXQgaGFzIGEgZGVmYXVsdCBuYW1lIGltcGx5aW5nIHRoYXQgaXQgaXMgYSBUaHJlYWRQb29sRXhlY3V0b3IKKyAgICAgICAgICAgICMgZm9sbG93ZWQgYnkgd2hhdCBsb29rcyBsaWtlIGEgdGhyZWFkIG51bWJlci4KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgodC5uYW1lLCByJ14uKlRocmVhZFBvb2xFeGVjdXRvci4qX1swLTRdJCcpCisgICAgICAgICAgICB0LmpvaW4oKQorCiAKIGNsYXNzIFByb2Nlc3NQb29sU2h1dGRvd25UZXN0KFByb2Nlc3NQb29sTWl4aW4sIEV4ZWN1dG9yU2h1dGRvd25UZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIF9wcmltZV9leGVjdXRvcihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29uZmlncGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKaW5kZXggNzFhOGYzZi4uMmIwODE5OCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb25maWdwYXJzZXIucHkKQEAgLTIwNTIsNSArMjA1MiwxMSBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjZmdbJ3R3byddLmdldGxlbignb25lJyksIDUpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiRXJyb3IifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBjb25maWdwYXJzZXIsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkgYi9MaWIvdGVzdC90ZXN0X2NvbnRhaW5zLnB5CmluZGV4IDNjNmJkZWYuLjAzNmExZDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGFpbnMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb250YWlucy5weQpAQCAtODQsNiArODQsMzEgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29uc3RydWN0b3IodmFsdWVzKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjb250YWluZXIgPT0gY29udGFpbmVyKQogCisgICAgZGVmIHRlc3RfYmxvY2tfZmFsbGJhY2soc2VsZik6CisgICAgICAgICMgYmxvY2tpbmcgZmFsbGJhY2sgd2l0aCBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGNsYXNzIEJ5Q29udGFpbnMob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2NvbnRhaW5zX18oc2VsZiwgb3RoZXIpOgorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBjID0gQnlDb250YWlucygpCisgICAgICAgIGNsYXNzIEJsb2NrQ29udGFpbnMoQnlDb250YWlucyk6CisgICAgICAgICAgICAiIiJJcyBub3QgYSBjb250YWluZXIKKworICAgICAgICAgICAgVGhpcyBjbGFzcyBpcyBhIHBlcmZlY3RseSBnb29kIGl0ZXJhYmxlIChhcyB0ZXN0ZWQgYnkKKyAgICAgICAgICAgIGxpc3QoYmMpKSwgYXMgd2VsbCBhcyBpbmhlcml0aW5nIGZyb20gYSBwZXJmZWN0bHkgZ29vZAorICAgICAgICAgICAgY29udGFpbmVyLCBidXQgX19jb250YWluc19fID0gTm9uZSBwcmV2ZW50cyB0aGUgdXN1YWwKKyAgICAgICAgICAgIGZhbGxiYWNrIHRvIGl0ZXJhdGlvbiBpbiB0aGUgY29udGFpbmVyIHByb3RvY29sLiBUaGF0CisgICAgICAgICAgICBpcywgbm9ybWFsbHksIDAgaW4gYmMgd291bGQgZmFsbCBiYWNrIHRvIHRoZSBlcXVpdmFsZW50CisgICAgICAgICAgICBvZiBhbnkoeD09MCBmb3IgeCBpbiBiYyksIGJ1dCBoZXJlIGl0J3MgYmxvY2tlZCBmcm9tCisgICAgICAgICAgICBkb2luZyBzby4KKyAgICAgICAgICAgICIiIgorICAgICAgICAgICAgZGVmIF9faXRlcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHdoaWxlIEZhbHNlOgorICAgICAgICAgICAgICAgICAgICB5aWVsZCBOb25lCisgICAgICAgICAgICBfX2NvbnRhaW5zX18gPSBOb25lCisgICAgICAgIGJjID0gQmxvY2tDb250YWlucygpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoMCBpbiBjKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKDAgaW4gbGlzdChiYykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbGFtYmRhOiAwIGluIGJjKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9jb250ZXh0bGliLnB5CmluZGV4IDUxNjQwM2UuLmMwNGM4MDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfY29udGV4dGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2NvbnRleHRsaWIucHkKQEAgLTEyLDYgKzEyLDM5IEBACiAgICAgdGhyZWFkaW5nID0gTm9uZQogCiAKK2NsYXNzIFRlc3RBYnN0cmFjdENvbnRleHRNYW5hZ2VyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X2VudGVyKHNlbGYpOgorICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgbWFuYWdlciA9IERlZmF1bHRFbnRlcigpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMobWFuYWdlci5fX2VudGVyX18oKSwgbWFuYWdlcikKKworICAgIGRlZiB0ZXN0X2V4aXRfaXNfYWJzdHJhY3Qoc2VsZik6CisgICAgICAgIGNsYXNzIE1pc3NpbmdFeGl0KEFic3RyYWN0Q29udGV4dE1hbmFnZXIpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIE1pc3NpbmdFeGl0KCkKKworICAgIGRlZiB0ZXN0X3N0cnVjdHVyYWxfc3ViY2xhc3Npbmcoc2VsZik6CisgICAgICAgIGNsYXNzIE1hbmFnZXJGcm9tU2NyYXRjaDoKKyAgICAgICAgICAgIGRlZiBfX2VudGVyX18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKyAgICAgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgorICAgICAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoTWFuYWdlckZyb21TY3JhdGNoLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworICAgICAgICBjbGFzcyBEZWZhdWx0RW50ZXIoQWJzdHJhY3RDb250ZXh0TWFuYWdlcik6CisgICAgICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgKmFyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19leGl0X18oKmFyZ3MpCisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoRGVmYXVsdEVudGVyLCBBYnN0cmFjdENvbnRleHRNYW5hZ2VyKSkKKworCiBjbGFzcyBDb250ZXh0TWFuYWdlclRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnRleHRtYW5hZ2VyX3BsYWluKHNlbGYpOgpAQCAtODksNyArMTIyLDcgQEAKICAgICAgICAgZGVmIHdvb2hvbygpOgogICAgICAgICAgICAgeWllbGQKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJTdG9wSXRlcmF0aW9uIik6CiAgICAgICAgICAgICAgICAgd2l0aCB3b29ob28oKToKICAgICAgICAgICAgICAgICAgICAgcmFpc2Ugc3RvcF9leGMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY29weS5weSBiL0xpYi90ZXN0L3Rlc3RfY29weS5weQppbmRleCAwZTFmNjcwLi40NWE2OTIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2NvcHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jb3B5LnB5CkBAIC05OCw3ICs5OCw3IEBACiAgICAgICAgIHRlc3RzID0gW05vbmUsIC4uLiwgTm90SW1wbGVtZW50ZWQsCiAgICAgICAgICAgICAgICAgIDQyLCAyKioxMDAsIDMuMTQsIFRydWUsIEZhbHNlLCAxaiwKICAgICAgICAgICAgICAgICAgImhlbGxvIiwgImhlbGxvXHUxMjM0IiwgZi5fX2NvZGVfXywKLSAgICAgICAgICAgICAgICAgYiJ3b3JsZCIsIGJ5dGVzKHJhbmdlKDI1NikpLCByYW5nZSgxMCksCisgICAgICAgICAgICAgICAgIGIid29ybGQiLCBieXRlcyhyYW5nZSgyNTYpKSwgcmFuZ2UoMTApLCBzbGljZSgxLCAxMCwgMiksCiAgICAgICAgICAgICAgICAgIE5ld1N0eWxlLCBDbGFzc2ljLCBtYXgsIFdpdGhNZXRhY2xhc3NdCiAgICAgICAgIGZvciB4IGluIHRlc3RzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhjb3B5LmNvcHkoeCksIHgpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkgYi9MaWIvdGVzdC90ZXN0X2Nvcm91dGluZXMucHkKaW5kZXggZTUyNjU0Yy4uZjI4MzlhNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jb3JvdXRpbmVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY29yb3V0aW5lcy5weQpAQCAtNjksNTUgKzY5LDEzMCBAQAogY2xhc3MgQXN5bmNCYWRTeW50YXhUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8xKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzEKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8yKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICInYXdhaXQnIG91dHNpZGUiKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzIKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF8zKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoU3ludGF4RXJyb3IsICdpbnZhbGlkIHN5bnRheCcpOgotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jMwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4XzQoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM0Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfNShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnKToKLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzUKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF82KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCcgaW5zaWRlIGFzeW5jIGZ1bmN0aW9uIik6Ci0KLSAgICAgICAgICAgIGltcG9ydCB0ZXN0LmJhZHN5bnRheF9hc3luYzYKLQotICAgIGRlZiB0ZXN0X2JhZHN5bnRheF83KHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBTeW50YXhFcnJvciwgIid5aWVsZCBmcm9tJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKToKLQotICAgICAgICAgICAgaW1wb3J0IHRlc3QuYmFkc3ludGF4X2FzeW5jNwotCi0gICAgZGVmIHRlc3RfYmFkc3ludGF4Xzgoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4Jyk6Ci0gICAgICAgICAgICBpbXBvcnQgdGVzdC5iYWRzeW50YXhfYXN5bmM4Ci0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfOShzZWxmKToKLSAgICAgICAgbnMgPSB7fQotICAgICAgICBmb3IgY29tcCBpbiB7Jyhhd2FpdCBhIGZvciBhIGluIGIpJywKLSAgICAgICAgICAgICAgICAgICAgICdbYXdhaXQgYSBmb3IgYSBpbiBiXScsCi0gICAgICAgICAgICAgICAgICAgICAne2F3YWl0IGEgZm9yIGEgaW4gYn0nLAotICAgICAgICAgICAgICAgICAgICAgJ3thd2FpdCBhOiBjIGZvciBhIGluIGJ9J306Ci0KLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChTeW50YXhFcnJvciwgJ2F3YWl0LippbiBjb21wcmVoZW4nKToKLSAgICAgICAgICAgICAgICBleGVjKCdhc3luYyBkZWYgZigpOlxuXHR7fScuZm9ybWF0KGNvbXApLCBucywgbnMpCi0KLSAgICBkZWYgdGVzdF9iYWRzeW50YXhfMTAoc2VsZik6Ci0gICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5Ci0KICAgICAgICAgc2FtcGxlcyA9IFsKKyAgICAgICAgICAgICIiImRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBhd2FpdCBzb21ldGhpbmcoKQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhd2FpdCBzb21ldGhpbmcoKSIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gW10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGF3YWl0IGF3YWl0IGZ1dAorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKGE9YXdhaXQgc29tZXRoaW5nKCkpOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbyhhOmF3YWl0IHNvbWV0aGluZygpKToKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGFzeW5jIGZvciBpIGluIGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYgorICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImFzeW5jIGRlZiBmb28oKToKKyAgICAgICAgICAgICAgICBkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGF3YWl0IGVsc10KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBiIGluIGVscworICAgICAgICAgICAgICAgICAgICAgICAgaWYgYXdhaXQgYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgorICAgICAgICAgICAgICAgIGRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMgaWYgYXdhaXQgaV0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBhc3luYyBmb3IgaSBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2F3YWl0IGkgZm9yIGkgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHNdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gZWxzCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIGIKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGIgaW4gZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBhc3luYyBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGMgaW4gYl0KKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGJhcigpOgorICAgICAgICAgICAgICAgICBbaSBmb3IgaSBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgZm9yIGIgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscworICAgICAgICAgICAgICAgICAgICBmb3IgYiBpbiBlbHMKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGF3YWl0IGJdCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImRlZiBiYXIoKToKKyAgICAgICAgICAgICAgICAgW2kgZm9yIGkgaW4gYXdhaXQgZWxzXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJkZWYgYmFyKCk6CisgICAgICAgICAgICAgICAgIFtpIGZvciBpIGluIGVscyBpZiBhd2FpdCBpXQorICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQKKyAgICAgICAgICAgICIiIiwKKwogICAgICAgICAgICAgIiIiYXN5bmMgZGVmIGZvbygpOgogICAgICAgICAgICAgICAgICAgIGRlZiBiYXIoKTogcGFzcwogICAgICAgICAgICAgICAgICAgIGF3YWl0ID0gMQpAQCAtMjgzLDU3ICszNTgsMTEwIEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CiAgICAgICAgICAgICAgICAgY29tcGlsZShjb2RlLCAiPHRlc3Q+IiwgImV4ZWMiKQogCisgICAgZGVmIHRlc3RfYmFkc3ludGF4XzIoc2VsZik6CisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAiIiJkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgYXdhaXQgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIEJhcjoKKyAgICAgICAgICAgICAgICBkZWYgYXN5bmMoKTogcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJjbGFzcyBCYXI6CisgICAgICAgICAgICAgICAgYXN5bmMgPSAxCisgICAgICAgICAgICAiIiIsCisKKyAgICAgICAgICAgICIiImNsYXNzIGFzeW5jOgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICIiIiwKKworICAgICAgICAgICAgIiIiY2xhc3MgYXdhaXQ6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgIiIiLAorCisgICAgICAgICAgICAiIiJpbXBvcnQgbWF0aCBhcyBhd2FpdCIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGFzeW5jKCk6CisgICAgICAgICAgICAgICAgcGFzcyIiIiwKKworICAgICAgICAgICAgIiIiZGVmIGZvbygqLCBhd2FpdD0xKToKKyAgICAgICAgICAgICAgICBwYXNzIiIiCisKKyAgICAgICAgICAgICIiImFzeW5jID0gMSIiIiwKKworICAgICAgICAgICAgIiIicHJpbnQoYXdhaXQ9MSkiIiIKKyAgICAgICAgXQorCisgICAgICAgIGZvciBjb2RlIGluIHNhbXBsZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjb2RlPWNvZGUpLCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoCisgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgIidhd2FpdCcgd2lsbCBiZWNvbWUgcmVzZXJ2ZWQga2V5d29yZHMiKToKKyAgICAgICAgICAgICAgICBjb21waWxlKGNvZGUsICI8dGVzdD4iLCAiZXhlYyIpCisKKyAgICBkZWYgdGVzdF9iYWRzeW50YXhfMyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiKQorICAgICAgICAgICAgICAgIGNvbXBpbGUoImFzeW5jID0gMSIsICI8dGVzdD4iLCAiZXhlYyIpCisKICAgICBkZWYgdGVzdF9nb29kc3ludGF4XzEoc2VsZik6CiAgICAgICAgICMgVGVzdHMgZm9yIGlzc3VlIDI0NjE5CiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKToKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDEwKSwgMTEpCisgICAgICAgIHNhbXBsZXMgPSBbCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6CisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAxCisgICAgICAgICAgICAnJycsCiAKLSAgICAgICAgZGVmIGZvbyhhd2FpdCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CiAKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcwogCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKKyAgICAgICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKIAotICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbygyMCksIDIyKQorICAgICAgICAgICAgICAgIHJldHVybiBhd2FpdCArIDEKKyAgICAgICAgICAgICcnJywKIAotICAgICAgICBkZWYgZm9vKGF3YWl0KToKLSAgICAgICAgICAgICIiInNwYW0iIiIKLSAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogXAotICAgICAgICAgICAgICAgIHBhc3MKLSAgICAgICAgICAgICMgMTIzCi0gICAgICAgICAgICBhc3luYyBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgICMgNDU2Ci0gICAgICAgICAgICByZXR1cm4gYXdhaXQgKyAyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vKDIwKSwgMjIpCisgICAgICAgICAgICAnJydkZWYgZm9vKGF3YWl0KToKKyAgICAgICAgICAgICAgICAiIiJzcGFtIiIiCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGZvbygpOiBcCisgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAjIDEyMworICAgICAgICAgICAgICAgIGFzeW5jIGRlZiBmb28oKTogcGFzcworICAgICAgICAgICAgICAgICMgNDU2CisgICAgICAgICAgICAgICAgcmV0dXJuIGF3YWl0ICsgMQorICAgICAgICAgICAgJycnLAogCi0gICAgICAgIGRlZiBmb28oYXdhaXQpOgotICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCi0gICAgICAgICAgICBkZWYgZm9vKCk6IHBhc3MKLSAgICAgICAgICAgIGFzeW5jIGRlZiBiYXIoKTogcmV0dXJuIGF3YWl0XwotICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBiYXIoKS5zZW5kKE5vbmUpCi0gICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKLSAgICAgICAgICAgICAgICByZXR1cm4gZXguYXJnc1swXQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvbyg0MiksIDQyKQorICAgICAgICAgICAgJycnZGVmIGZvbyhhd2FpdCk6CisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgZGVmIGZvbygpOiBwYXNzCisgICAgICAgICAgICAgICAgYXN5bmMgZGVmIGJhcigpOiByZXR1cm4gYXdhaXRfCisgICAgICAgICAgICAgICAgYXdhaXRfID0gYXdhaXQKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGJhcigpLnNlbmQoTm9uZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbiBhcyBleDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGV4LmFyZ3NbMF0gKyAxCisgICAgICAgICAgICAnJycKKyAgICAgICAgXQogCi0gICAgICAgIGFzeW5jIGRlZiBmKCk6Ci0gICAgICAgICAgICBhc3luYyBkZWYgZygpOiBwYXNzCi0gICAgICAgICAgICBhd2FpdCB6Ci0gICAgICAgIGF3YWl0ID0gMQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uKGYpKQorICAgICAgICBmb3IgY29kZSBpbiBzYW1wbGVzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY29kZT1jb2RlKToKKyAgICAgICAgICAgICAgICBsb2MgPSB7fQorCisgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICAgICAgICAgIGV4ZWMoY29kZSwgbG9jLCBsb2MpCisKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvY1snZm9vJ10oMTApLCAxMSkKIAogCiBjbGFzcyBUb2tlbml6ZXJSZWdyVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CkBAIC04OTEsNyArMTAxOSw3IEBACiAgICAgICAgICAgICByZXR1cm4gYXdhaXQgQXdhaXRhYmxlKCkKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCi0gICAgICAgICAgICBUeXBlRXJyb3IsICJfX2F3YWl0X19cKFwpIHJldHVybmVkIGEgY29yb3V0aW5lIik6CisgICAgICAgICAgICBUeXBlRXJyb3IsIHIiX19hd2FpdF9fXChcKSByZXR1cm5lZCBhIGNvcm91dGluZSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTEzMzMsNyArMTQ2MSw3IEBACiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAogICAgICAgICAgICAgICAgIFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgorICAgICAgICAgICAgICAgIHIiYXN5bmMgZm9yJyByZWNlaXZlZCBhbiBpbnZhbGlkIG9iamVjdC4qX19haXRlci4qXDogSSIpOgogCiAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKQEAgLTE1MzcsNiArMTY2NSwxODUgQEAKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImVycm9yIikKICAgICAgICAgICAgICAgICBydW5fYXN5bmMoZm9vKCkpCiAKKyAgICBkZWYgdGVzdF9jb21wXzEoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKGkpOgorICAgICAgICAgICAgcmV0dXJuIGkKKworICAgICAgICBhc3luYyBkZWYgcnVuX2xpc3QoKToKKyAgICAgICAgICAgIHJldHVybiBbYXdhaXQgYyBmb3IgYyBpbiBbZigxKSwgZig0MSldXQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fc2V0KCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGMgZm9yIGMgaW4gW2YoMSksIGYoNDEpXX0KKworICAgICAgICBhc3luYyBkZWYgcnVuX2RpY3QxKCk6CisgICAgICAgICAgICByZXR1cm4ge2F3YWl0IGM6ICdhJyBmb3IgYyBpbiBbZigxKSwgZig0MSldfQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdDIoKToKKyAgICAgICAgICAgIHJldHVybiB7aTogYXdhaXQgYyBmb3IgaSwgYyBpbiBlbnVtZXJhdGUoW2YoMSksIGYoNDEpXSl9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChydW5fYXN5bmMocnVuX2xpc3QoKSksIChbXSwgWzEsIDQxXSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9zZXQoKSksIChbXSwgezEsIDQxfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MSgpKSwgKFtdLCB7MTogJ2EnLCA0MTogJ2EnfSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocnVuX2FzeW5jKHJ1bl9kaWN0MigpKSwgKFtdLCB7MDogMSwgMTogNDF9KSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMihzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaSk6CisgICAgICAgICAgICByZXR1cm4gaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtzIGZvciBjIGluIFtmKCcnKSwgZignYWJjJyksIGYoJycpLCBmKFsnZGUnLCAnZmcnXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGNdCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWydhJywgJ2InLCAnYycsICdkZScsICdmZyddKSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHtkCisgICAgICAgICAgICAgICAgICAgIGZvciBjIGluIFtmKFtmKFsxMCwgMzBdKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYoWzIwXSldKV0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHMgaW4gYXdhaXQgYworICAgICAgICAgICAgICAgICAgICBmb3IgZCBpbiBhd2FpdCBzfQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMCwgMzB9KSkKKworICAgICAgICBhc3luYyBkZWYgcnVuX3NldDIoKToKKyAgICAgICAgICAgIHJldHVybiB7YXdhaXQgcworICAgICAgICAgICAgICAgICAgICBmb3IgYyBpbiBbZihbZigxMCksIGYoMjApXSldCisgICAgICAgICAgICAgICAgICAgIGZvciBzIGluIGF3YWl0IGN9CisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fc2V0MigpKSwKKyAgICAgICAgICAgIChbXSwgezEwLCAyMH0pKQorCisgICAgZGVmIHRlc3RfY29tcF8zKHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9saXN0KCkpLAorICAgICAgICAgICAgKFtdLCBbMTEsIDIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX3NldCgpKSwKKyAgICAgICAgICAgIChbXSwgezExLCAyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSl9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2RpY3QoKSksCisgICAgICAgICAgICAoW10sIHsxMTogMTIsIDIxOiAyMn0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZ2VuKCk6CisgICAgICAgICAgICBnZW4gPSAoaSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkpCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMTEsIDEyMV0pKQorCisgICAgZGVmIHRlc3RfY29tcF80KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBpIGluIGYoWzEwLCAyMF0pIGlmIGkgPiAxMF0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKSwKKyAgICAgICAgICAgIChbXSwgWzIxXSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9zZXQoKToKKyAgICAgICAgICAgIHJldHVybiB7aSArIDEgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9zZXQoKSksCisgICAgICAgICAgICAoW10sIHsyMX0pKQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fZGljdCgpOgorICAgICAgICAgICAgcmV0dXJuIHtpICsgMTogaSArIDIgYXN5bmMgZm9yIGkgaW4gZihbMTAsIDIwXSkgaWYgaSA+IDEwfQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9kaWN0KCkpLAorICAgICAgICAgICAgKFtdLCB7MjE6IDIyfSkpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9nZW4oKToKKyAgICAgICAgICAgIGdlbiA9IChpICsgMSBhc3luYyBmb3IgaSBpbiBmKFsxMCwgMjBdKSBpZiBpID4gMTApCisgICAgICAgICAgICByZXR1cm4gW2cgKyAxMDAgYXN5bmMgZm9yIGcgaW4gZ2VuXQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKHJ1bl9nZW4oKSksCisgICAgICAgICAgICAoW10sIFsxMjFdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfNShzZWxmKToKKyAgICAgICAgYXN5bmMgZGVmIGYoaXQpOgorICAgICAgICAgICAgZm9yIGkgaW4gaXQ6CisgICAgICAgICAgICAgICAgeWllbGQgaQorCisgICAgICAgIGFzeW5jIGRlZiBydW5fbGlzdCgpOgorICAgICAgICAgICAgcmV0dXJuIFtpICsgMSBmb3IgcGFpciBpbiAoWzEwLCAyMF0sIFszMCwgNDBdKSBpZiBwYWlyWzBdID4gMTAKKyAgICAgICAgICAgICAgICAgICAgYXN5bmMgZm9yIGkgaW4gZihwYWlyKSBpZiBpID4gMzBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFs0MV0pKQorCisgICAgZGVmIHRlc3RfY29tcF82KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZihpdCk6CisgICAgICAgICAgICBmb3IgaSBpbiBpdDoKKyAgICAgICAgICAgICAgICB5aWVsZCBpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgKyAxIGFzeW5jIGZvciBzZXEgaW4gZihbKDEwLCAyMCksICgzMCwpXSkKKyAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gc2VxXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMocnVuX2xpc3QoKSksCisgICAgICAgICAgICAoW10sIFsxMSwgMjEsIDMxXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzcoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB5aWVsZCAxCisgICAgICAgICAgICB5aWVsZCAyCisgICAgICAgICAgICByYWlzZSBFeGNlcHRpb24oJ2FhYScpCisKKyAgICAgICAgYXN5bmMgZGVmIHJ1bl9saXN0KCk6CisgICAgICAgICAgICByZXR1cm4gW2kgYXN5bmMgZm9yIGkgaW4gZigpXQorCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICdhYWEnKToKKyAgICAgICAgICAgIHJ1bl9hc3luYyhydW5fbGlzdCgpKQorCisgICAgZGVmIHRlc3RfY29tcF84KHNlbGYpOgorICAgICAgICBhc3luYyBkZWYgZigpOgorICAgICAgICAgICAgcmV0dXJuIFtpIGZvciBpIGluIFsxLCAyLCAzXV0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIFsxLCAyLCAzXSkpCisKKyAgICBkZWYgdGVzdF9jb21wXzkoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBnZW4oKToKKyAgICAgICAgICAgIHlpZWxkIDEKKyAgICAgICAgICAgIHlpZWxkIDIKKyAgICAgICAgYXN5bmMgZGVmIGYoKToKKyAgICAgICAgICAgIGwgPSBbaSBhc3luYyBmb3IgaSBpbiBnZW4oKV0KKyAgICAgICAgICAgIHJldHVybiBbaSBmb3IgaSBpbiBsXQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBydW5fYXN5bmMoZigpKSwKKyAgICAgICAgICAgIChbXSwgWzEsIDJdKSkKKworICAgIGRlZiB0ZXN0X2NvbXBfMTAoc2VsZik6CisgICAgICAgIGFzeW5jIGRlZiBmKCk6CisgICAgICAgICAgICB4eCA9IHtpIGZvciBpIGluIFsxLCAyLCAzXX0KKyAgICAgICAgICAgIHJldHVybiB7eDogeCBmb3IgeCBpbiB4eH0KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgcnVuX2FzeW5jKGYoKSksCisgICAgICAgICAgICAoW10sIHsxOiAxLCAyOiAyLCAzOiAzfSkpCisKICAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgogICAgICAgICBhc3luYyBkZWYgZnVuYygpOiBwYXNzCiAgICAgICAgIGNvcm8gPSBmdW5jKCkKQEAgLTE2NjcsOCArMTk3NCw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHdpdGggc2lsZW5jZV9jb3JvX2djKCksIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoCiAgICAgICAgICAgICAgICAgUnVudGltZUVycm9yLAotICAgICAgICAgICAgICAgICJjb3JvdXRpbmUgd3JhcHBlci4qXC53cmFwcGVyIGF0IDB4LiphdHRlbXB0ZWQgdG8gIgotICAgICAgICAgICAgICAgICJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKKyAgICAgICAgICAgICAgICByImNvcm91dGluZSB3cmFwcGVyLipcLndyYXBwZXIgYXQgMHguKmF0dGVtcHRlZCB0byAiCisgICAgICAgICAgICAgICAgciJyZWN1cnNpdmVseSB3cmFwIC4qIHdyYXAgLioiKToKIAogICAgICAgICAgICAgICAgIGZvbygpCiAgICAgICAgIGZpbmFsbHk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5IGIvTGliL3Rlc3QvdGVzdF9jcHJvZmlsZS5weQppbmRleCBmMTg5ODNmLi41M2Y4OTE3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Nwcm9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfY3Byb2ZpbGUucHkKQEAgLTYsNyArNiw3IEBACiAjIHJpcCBvZmYgYWxsIGludGVyZXN0aW5nIHN0dWZmIGZyb20gdGVzdF9wcm9maWxlCiBpbXBvcnQgY1Byb2ZpbGUKIGZyb20gdGVzdC50ZXN0X3Byb2ZpbGUgaW1wb3J0IFByb2ZpbGVUZXN0LCByZWdlbmVyYXRlX2V4cGVjdGVkX291dHB1dAotZnJvbSB0ZXN0LnByb2ZpbGVlIGltcG9ydCB0ZXN0ZnVuYworCiAKIGNsYXNzIENQcm9maWxlVGVzdChQcm9maWxlVGVzdCk6CiAgICAgcHJvZmlsZXJjbGFzcyA9IGNQcm9maWxlLlByb2ZpbGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfY3N2LnB5IGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKaW5kZXggNzdjMzE1ZS4uN2RjZWE5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9jc3YucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9jc3YucHkKQEAgLTIsOSArMiw3IEBACiAjIGNzdiBwYWNrYWdlIHVuaXQgdGVzdHMKIAogaW1wb3J0IGNvcHkKLWltcG9ydCBpbwogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCiBmcm9tIHRlbXBmaWxlIGltcG9ydCBUZW1wb3JhcnlGaWxlCkBAIC0xMiw2ICsxMCw5IEBACiBpbXBvcnQgZ2MKIGltcG9ydCBwaWNrbGUKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorZnJvbSBpdGVydG9vbHMgaW1wb3J0IHBlcm11dGF0aW9ucworZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50Citmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogCiBjbGFzcyBUZXN0X0Nzdih1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIiIiCkBAIC00MjYsMTcgKzQyNywxNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGNzdi5yZWFkZXIsIFtdLCBxdW90aW5nID0gLTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY3N2LnJlYWRlciwgW10sIHF1b3RpbmcgPSAxMDApCiAKLSAgICAjIFNlZSBpc3N1ZSAjMjI5OTUKLSAgICAjIyBkZWYgdGVzdF9jb3B5KHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb3B5LmNvcHksIGRpYWxlY3QpCisgICAgZGVmIHRlc3RfY29weShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgY29weS5jb3B5LCBkaWFsZWN0KQogCi0gICAgIyMgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICMjICAgICBmb3IgbmFtZSBpbiBjc3YubGlzdF9kaWFsZWN0cygpOgotICAgICMjICAgICAgICAgZGlhbGVjdCA9IGNzdi5nZXRfZGlhbGVjdChuYW1lKQotICAgICMjICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgIyMgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBwaWNrbGUuZHVtcHMsIGRpYWxlY3QsIHByb3RvKQorICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKKyAgICAgICAgZm9yIG5hbWUgaW4gY3N2Lmxpc3RfZGlhbGVjdHMoKToKKyAgICAgICAgICAgIGRpYWxlY3QgPSBjc3YuZ2V0X2RpYWxlY3QobmFtZSkKKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcGlja2xlLmR1bXBzLCBkaWFsZWN0LCBwcm90bykKIAogY2xhc3MgVGVzdENzdkJhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiByZWFkZXJBc3NlcnRFcXVhbChzZWxmLCBpbnB1dCwgZXhwZWN0ZWRfcmVzdWx0KToKQEAgLTEwODAsNyArMTA4MCw2IEBACiAgICAgICAgICAgICAgIkZyYW7Dp29pcyBQaW5hcmQiXQogCiAgICAgZGVmIHRlc3RfdW5pY29kZV9yZWFkKHNlbGYpOgotICAgICAgICBpbXBvcnQgaW8KICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICBmaWxlb2JqLndyaXRlKCIsIi5qb2luKHNlbGYubmFtZXMpICsgIlxyXG4iKQogICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCkBAIC0xMDg5LDcgKzEwODgsNiBAQAogCiAKICAgICBkZWYgdGVzdF91bmljb2RlX3dyaXRlKHNlbGYpOgotICAgICAgICBpbXBvcnQgaW8KICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCJ3KyIsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmo6CiAgICAgICAgICAgICB3cml0ZXIgPSBjc3Yud3JpdGVyKGZpbGVvYmopCiAgICAgICAgICAgICB3cml0ZXIud3JpdGVyb3coc2VsZi5uYW1lcykKQEAgLTEwOTcsNiArMTA5NSw2MyBAQAogICAgICAgICAgICAgZmlsZW9iai5zZWVrKDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZpbGVvYmoucmVhZCgpLCBleHBlY3RlZCkKIAorY2xhc3MgS2V5T3JkZXJpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKworICAgIGRlZiB0ZXN0X29yZGVyaW5nX2Zvcl90aGVfZGljdF9yZWFkZXJfYW5kX3dyaXRlcihzZWxmKToKKyAgICAgICAgcmVzdWx0c2V0ID0gc2V0KCkKKyAgICAgICAgZm9yIGtleXMgaW4gcGVybXV0YXRpb25zKCJhYmNkZSIpOgorICAgICAgICAgICAgd2l0aCBUZW1wb3JhcnlGaWxlKCd3KycsIG5ld2xpbmU9JycsIGVuY29kaW5nPSJ1dGYtOCIpIGFzIGZpbGVvYmplY3Q6CisgICAgICAgICAgICAgICAgZHcgPSBjc3YuRGljdFdyaXRlcihmaWxlb2JqZWN0LCBrZXlzKQorICAgICAgICAgICAgICAgIGR3LndyaXRlaGVhZGVyKCkKKyAgICAgICAgICAgICAgICBmaWxlb2JqZWN0LnNlZWsoMCkKKyAgICAgICAgICAgICAgICBkciA9IGNzdi5EaWN0UmVhZGVyKGZpbGVvYmplY3QpCisgICAgICAgICAgICAgICAga3QgPSB0dXBsZShkci5maWVsZG5hbWVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoa2V5cywga3QpCisgICAgICAgICAgICAgICAgcmVzdWx0c2V0LmFkZChrdCkKKyAgICAgICAgIyBGaW5hbCBzYW5pdHkgY2hlY2s6IHdlcmUgYWxsIHBlcm11dGF0aW9ucyB1bmlxdWU/CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlc3VsdHNldCksIDEyMCwgIktleSBvcmRlcmluZzogc29tZSBrZXkgcGVybXV0YXRpb25zIG5vdCBjb2xsZWN0ZWQgKGV4cGVjdGVkIDEyMCkiKQorCisgICAgZGVmIHRlc3Rfb3JkZXJlZF9kaWN0X3JlYWRlcihzZWxmKToKKyAgICAgICAgZGF0YSA9IGRlZGVudCgnJydcCisgICAgICAgICAgICBGaXJzdE5hbWUsTGFzdE5hbWUKKyAgICAgICAgICAgIEVyaWMsSWRsZQorICAgICAgICAgICAgR3JhaGFtLENoYXBtYW4sT3ZlcjEsT3ZlcjIKKworICAgICAgICAgICAgVW5kZXIxCisgICAgICAgICAgICBKb2huLENsZWVzZQorICAgICAgICAnJycpLnNwbGl0bGluZXMoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChjc3YuRGljdFJlYWRlcihkYXRhKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0VyaWMnKSwgKCdMYXN0TmFtZScsICdJZGxlJyldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnR3JhaGFtJyksICgnTGFzdE5hbWUnLCAnQ2hhcG1hbicpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgWydPdmVyMScsICdPdmVyMiddKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdVbmRlcjEnKSwgKCdMYXN0TmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0pvaG4nKSwgKCdMYXN0TmFtZScsICdDbGVlc2UnKV0pLAorICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY3N2LkRpY3RSZWFkZXIoZGF0YSwgcmVzdGtleT0nT3RoZXJJbmZvJykpLAorICAgICAgICAgICAgW09yZGVyZWREaWN0KFsoJ0ZpcnN0TmFtZScsICdFcmljJyksICgnTGFzdE5hbWUnLCAnSWRsZScpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ0dyYWhhbScpLCAoJ0xhc3ROYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKCdPdGhlckluZm8nLCBbJ092ZXIxJywgJ092ZXIyJ10pXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnRmlyc3ROYW1lJywgJ1VuZGVyMScpLCAoJ0xhc3ROYW1lJywgTm9uZSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdGaXJzdE5hbWUnLCAnSm9obicpLCAoJ0xhc3ROYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisgICAgICAgIGRlbCBkYXRhWzBdICAgICAgICAgICAgIyBSZW1vdmUgdGhlIGhlYWRlciByb3cKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNzdi5EaWN0UmVhZGVyKGRhdGEsIGZpZWxkbmFtZXM9WydmbmFtZScsICdsbmFtZSddKSksCisgICAgICAgICAgICBbT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnRXJpYycpLCAoJ2xuYW1lJywgJ0lkbGUnKV0pLAorICAgICAgICAgICAgIE9yZGVyZWREaWN0KFsoJ2ZuYW1lJywgJ0dyYWhhbScpLCAoJ2xuYW1lJywgJ0NoYXBtYW4nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsIFsnT3ZlcjEnLCAnT3ZlcjInXSldKSwKKyAgICAgICAgICAgICBPcmRlcmVkRGljdChbKCdmbmFtZScsICdVbmRlcjEnKSwgKCdsbmFtZScsIE5vbmUpXSksCisgICAgICAgICAgICAgT3JkZXJlZERpY3QoWygnZm5hbWUnLCAnSm9obicpLCAoJ2xuYW1lJywgJ0NsZWVzZScpXSksCisgICAgICAgICAgICBdKQorCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBleHRyYSA9IHsnX19kb2NfXycsICdfX3ZlcnNpb25fXyd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGNzdiwgKCdjc3YnLCAnX2NzdicpLCBleHRyYT1leHRyYSkKKwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfZGF0ZXRpbWUucHkKaW5kZXggMmQ0ZWI1Mi4uMjQyZTFiYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kYXRldGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RhdGV0aW1lLnB5CkBAIC0yMyw5ICsyMywxNiBAQAogdGVzdF9jbGFzc2VzID0gW10KIAogZm9yIG1vZHVsZSwgc3VmZml4IGluIHppcCh0ZXN0X21vZHVsZXMsIHRlc3Rfc3VmZml4ZXMpOgorICAgIHRlc3RfY2xhc3NlcyA9IFtdCiAgICAgZm9yIG5hbWUsIGNscyBpbiBtb2R1bGUuX19kaWN0X18uaXRlbXMoKToKLSAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKGNscywgdHlwZSkgYW5kIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0Q2FzZSkpOgorICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShjbHMsIHR5cGUpOgogICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgaWYgaXNzdWJjbGFzcyhjbHMsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgIHRlc3RfY2xhc3Nlcy5hcHBlbmQoY2xzKQorICAgICAgICBlbGlmIGlzc3ViY2xhc3MoY2xzLCB1bml0dGVzdC5UZXN0U3VpdGUpOgorICAgICAgICAgICAgc3VpdCA9IGNscygpCisgICAgICAgICAgICB0ZXN0X2NsYXNzZXMuZXh0ZW5kKHR5cGUodGVzdCkgZm9yIHRlc3QgaW4gc3VpdCkKKyAgICBmb3IgY2xzIGluIHRlc3RfY2xhc3NlczoKICAgICAgICAgY2xzLl9fbmFtZV9fID0gbmFtZSArIHN1ZmZpeAogICAgICAgICBAY2xhc3NtZXRob2QKICAgICAgICAgZGVmIHNldFVwQ2xhc3MoY2xzXywgbW9kdWxlPW1vZHVsZSk6CkBAIC0zOSw3ICs0Niw2IEBACiAgICAgICAgICAgICBzeXMubW9kdWxlcy51cGRhdGUoY2xzXy5fc2F2ZV9zeXNfbW9kdWxlcykKICAgICAgICAgY2xzLnNldFVwQ2xhc3MgPSBzZXRVcENsYXNzCiAgICAgICAgIGNscy50ZWFyRG93bkNsYXNzID0gdGVhckRvd25DbGFzcwotICAgICAgICB0ZXN0X2NsYXNzZXMuYXBwZW5kKGNscykKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdCgqdGVzdF9jbGFzc2VzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibS5weQppbmRleCA2MjNkOTkyLi5mMGE0MjhkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibS5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlRlc3Qgc2NyaXB0IGZvciB0aGUgZGJtLm9wZW4gZnVuY3Rpb24gYmFzZWQgb24gdGVzdGR1bWJkYm0ucHkiIiIKIAotaW1wb3J0IG9zCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGVzdC5zdXBwb3J0CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZHVtYi5weQppbmRleCBmZjYzYzg4Li4yZDc3ZjA3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RibV9kdW1iLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGJtX2R1bWIucHkKQEAgLTYsNiArNiw3IEBACiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBkYm0uZHVtYiBhcyBkdW1iZGJtCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gZnVuY3Rvb2xzIGltcG9ydCBwYXJ0aWFsCkBAIC03OCw2ICs3OSwxMiBAQAogICAgICAgICBzZWxmLmluaXRfZGIoKQogICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ3InKQogICAgICAgICBzZWxmLnJlYWRfaGVscGVyKGYpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZSBkYXRhYmFzZSBpcyBvcGVuZWQgZm9yIHJlYWRpbmcgb25seScpOgorICAgICAgICAgICAgZltiJ2cnXSA9IGIneCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGhlIGRhdGFiYXNlIGlzIG9wZW5lZCBmb3IgcmVhZGluZyBvbmx5Jyk6CisgICAgICAgICAgICBkZWwgZltiJ2EnXQogICAgICAgICBmLmNsb3NlKCkKIAogICAgIGRlZiB0ZXN0X2R1bWJkYm1fa2V5cyhzZWxmKToKQEAgLTE0OCw3ICsxNTUsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9kaWN0W2tleV0sIGZba2V5XSkKIAogICAgIGRlZiBpbml0X2RiKHNlbGYpOgotICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ3cnKQorICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgJ24nKQogICAgICAgICBmb3IgayBpbiBzZWxmLl9kaWN0OgogICAgICAgICAgICAgZltrXSA9IHNlbGYuX2RpY3Rba10KICAgICAgICAgZi5jbG9zZSgpCkBAIC0yMzQsNiArMjQxLDI0IEBACiAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3Rkb3V0LmdldHZhbHVlKCksICcnKQogCisgICAgZGVmIHRlc3Rfd2Fybl9vbl9pZ25vcmVkX2ZsYWdzKHNlbGYpOgorICAgICAgICBmb3IgdmFsdWUgaW4gKCdyJywgJ3cnKToKKyAgICAgICAgICAgIF9kZWxldGVfZmlsZXMoKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBkYXRhYmFzZSBmaWxlIGlzIG1pc3NpbmcsIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VtYW50aWNzIG9mIHRoZSAnYycgZmxhZyB3aWxsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZSB1c2VkLiIpOgorICAgICAgICAgICAgICAgIGYgPSBkdW1iZGJtLm9wZW4oX2ZuYW1lLCB2YWx1ZSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgZGVmIHRlc3RfaW52YWxpZF9mbGFnKHNlbGYpOgorICAgICAgICBmb3IgZmxhZyBpbiAoJ3gnLCAncmYnLCBOb25lKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGbGFnIG11c3QgYmUgb25lIG9mICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIncicsICd3JywgJ2MnLCBvciAnbiciKToKKyAgICAgICAgICAgICAgICBmID0gZHVtYmRibS5vcGVuKF9mbmFtZSwgZmxhZykKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBfZGVsZXRlX2ZpbGVzKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5IGIvTGliL3Rlc3QvdGVzdF9kYm1fZ251LnB5CmluZGV4IGE3ODA4ZjUuLjMwNGIzMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX2dudS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RibV9nbnUucHkKQEAgLTIsNyArMiw3IEBACiBnZGJtID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJkYm0uZ251IikgI3NraXAgaWYgbm90IHN1cHBvcnRlZAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgb3MKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB2ZXJib3NlLCBURVNURk4sIHVubGluaworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgdW5saW5rCiAKIAogZmlsZW5hbWUgPSBURVNURk4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkgYi9MaWIvdGVzdC90ZXN0X2RibV9uZGJtLnB5CmluZGV4IDIyOTE1NjEuLjQ5ZjQ0MjYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGJtX25kYm0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kYm1fbmRibS5weQpAQCAtMSw4ICsxLDYgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJkYm0ubmRibSIpICNza2lwIGlmIG5vdCBzdXBwb3J0ZWQKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IG9zCi1pbXBvcnQgcmFuZG9tCiBpbXBvcnQgZGJtLm5kYm0KIGZyb20gZGJtLm5kYm0gaW1wb3J0IGVycm9yCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weSBiL0xpYi90ZXN0L3Rlc3RfZGVjaW1hbC5weQppbmRleCAxYWEwYmY4Li42MTdhMzdlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RlY2ltYWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZWNpbWFsLnB5CkBAIC01NTQsNiArNTU0LDEwIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJyAgLTcuODknKSksICctNy44OScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoIiAgMy40NTY3OSAgIikpLCAnMy40NTY3OScpCiAKKyAgICAgICAgIyB1bmRlcnNjb3JlcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihEZWNpbWFsKCcxXzMuM2U0XzAnKSksICcxLjMzRSs0MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKERlY2ltYWwoJzFfMF8wXzAnKSksICcxMDAwJykKKwogICAgICAgICAjIHVuaWNvZGUgd2hpdGVzcGFjZQogICAgICAgICBmb3IgbGVhZCBpbiBbIiIsICcgJywgJ1x1MDBhMCcsICdcdTIwNWYnXToKICAgICAgICAgICAgIGZvciB0cmFpbCBpbiBbIiIsICcgJywgJ1x1MDBhMCcsICdcdTIwNWYnXToKQEAgLTU3OCw2ICs1ODIsOSBAQAogICAgICAgICAgICAgIyBlbWJlZGRlZCBOVUwKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcGVyYXRpb24sIERlY2ltYWwsICIxMlx1MDAwMDMiKQogCisgICAgICAgICAgICAjIHVuZGVyc2NvcmVzIGRvbid0IHByZXZlbnQgZXJyb3JzCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBEZWNpbWFsLCAiMV8yX1x1MDAwMDMiKQorCiAgICAgQGNweXRob25fb25seQogICAgIGRlZiB0ZXN0X2Zyb21fbGVnYWN5X3N0cmluZ3Moc2VsZik6CiAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKQEAgLTc3Miw2ICs3NzksOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgInh5eiIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG5jLmNyZWF0ZV9kZWNpbWFsLCAoMSwgInh5eiIsIC0yNSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbmMuY3JlYXRlX2RlY2ltYWwsICIxMjM0IiwgIjU2NzgiKQorICAgICAgICAjIG5vIHdoaXRlc3BhY2UgYW5kIHVuZGVyc2NvcmUgc3RyaXBwaW5nIGlzIGRvbmUgd2l0aCB0aGlzIG1ldGhvZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3BlcmF0aW9uLCBuYy5jcmVhdGVfZGVjaW1hbCwgIiAxMjM0IikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wZXJhdGlvbiwgbmMuY3JlYXRlX2RlY2ltYWwsICIxMl8zNCIpCiAKICAgICAgICAgIyB0b28gbWFueSBOYU4gcGF5bG9hZCBkaWdpdHMKICAgICAgICAgbmMucHJlYyA9IDMKQEAgLTIwNDcsNiArMjA1NywzOSBAQAogICAgICAgICBkID0gRGVjaW1hbCggKDEsICgwLCAyLCA3LCAxKSwgJ0YnKSApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZC5hc190dXBsZSgpLCAoMSwgKDAsKSwgJ0YnKSkKIAorICAgIGRlZiB0ZXN0X2FzX2ludGVnZXJfcmF0aW8oc2VsZik6CisgICAgICAgIERlY2ltYWwgPSBzZWxmLmRlY2ltYWwuRGVjaW1hbAorCisgICAgICAgICMgZXhjZXB0aW9uYWwgY2FzZXMKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCdpbmYnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvLCBEZWNpbWFsKCctaW5mJykpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbywgRGVjaW1hbCgnLW5hbicpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICBEZWNpbWFsLmFzX2ludGVnZXJfcmF0aW8sIERlY2ltYWwoJ3NuYW4xMjMnKSkKKworICAgICAgICBmb3IgZXhwIGluIHJhbmdlKC00LCAyKToKKyAgICAgICAgICAgIGZvciBjb2VmZiBpbiByYW5nZSgxMDAwKToKKyAgICAgICAgICAgICAgICBmb3Igc2lnbiBpbiAnKycsICctJzoKKyAgICAgICAgICAgICAgICAgICAgZCA9IERlY2ltYWwoJyVzJWRFJWQnICUgKHNpZ24sIGNvZWZmLCBleHApKQorICAgICAgICAgICAgICAgICAgICBwcSA9IGQuYXNfaW50ZWdlcl9yYXRpbygpCisgICAgICAgICAgICAgICAgICAgIHAsIHEgPSBwcQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgcmV0dXJuIHR5cGUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHBxLCB0dXBsZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHAsIGludCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHEsIGludCkKKworICAgICAgICAgICAgICAgICAgICAjIGNoZWNrIG5vcm1hbGl6YXRpb246ICBxIHNob3VsZCBiZSBwb3NpdGl2ZTsKKyAgICAgICAgICAgICAgICAgICAgIyBwIHNob3VsZCBiZSByZWxhdGl2ZWx5IHByaW1lIHRvIHEuCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihxLCAwKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGguZ2NkKHAsIHEpLCAxKQorCisgICAgICAgICAgICAgICAgICAgICMgY2hlY2sgdGhhdCBwL3EgYWN0dWFsbHkgZ2l2ZXMgdGhlIGNvcnJlY3QgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChEZWNpbWFsKHApIC8gRGVjaW1hbChxKSwgZCkKKwogICAgIGRlZiB0ZXN0X3N1YmNsYXNzaW5nKHNlbGYpOgogICAgICAgICAjIERpZmZlcmVudCBiZWhhdmlvdXJzIHdoZW4gc3ViY2xhc3NpbmcgRGVjaW1hbAogICAgICAgICBEZWNpbWFsID0gc2VsZi5kZWNpbWFsLkRlY2ltYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkgYi9MaWIvdGVzdC90ZXN0X2RlcXVlLnB5CmluZGV4IDE4ZTFkZjAuLmNlNTE3YjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVxdWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXF1ZS5weQpAQCAtMjg5LDcgKzI4OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQuaW5kZXgoZWxlbWVudCwgc3RhcnQsIHN0b3ApLCB0YXJnZXQpCiAKLSAgICBkZWYgdGVzdF9pbnNlcnRfYnVnXzI0OTEzKHNlbGYpOgorICAgIGRlZiB0ZXN0X2luZGV4X2J1Z18yNDkxMyhzZWxmKToKICAgICAgICAgZCA9IGRlcXVlKCdBJyAqIDMpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICBpID0gZC5pbmRleCgiSGVsbG8gd29ybGQiLCAwLCA0KQpAQCAtNjIyLDIwICs2MjIsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGQpLCBsaXN0KGUpKQogCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBkID0gZGVxdWUocmFuZ2UoMjAwKSkKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSAgICAgICAgICAgIHMgPSBwaWNrbGUuZHVtcHMoZCwgaSkKLSAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGQpLCBsaXN0KGUpKQorICAgICAgICBmb3IgZCBpbiBkZXF1ZShyYW5nZSgyMDApKSwgZGVxdWUocmFuZ2UoMjAwKSwgMTAwKToKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgcyA9IHBpY2tsZS5kdW1wcyhkLCBpKQorICAgICAgICAgICAgICAgIGUgPSBwaWNrbGUubG9hZHMocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZSksIGxpc3QoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCiAKLSMjICAgIGRlZiB0ZXN0X3BpY2tsZV9yZWN1cnNpdmUoc2VsZik6Ci0jIyAgICAgICAgZCA9IGRlcXVlKCdhYmMnKQotIyMgICAgICAgIGQuYXBwZW5kKGQpCi0jIyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKLSMjICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgaSkpCi0jIyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoaWQoZCksIGlkKGUpKQotIyMgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUpLCBpZChlWy0xXSkpCisgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKKyAgICAgICAgZm9yIGQgaW4gZGVxdWUoJ2FiYycpLCBkZXF1ZSgnYWJjJywgMyk6CisgICAgICAgICAgICBkLmFwcGVuZChkKQorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBpKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGUpLCBpZChkKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGVbLTFdKSwgaWQoZSkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm1heGxlbiwgZC5tYXhsZW4pCiAKICAgICBkZWYgdGVzdF9pdGVyYXRvcl9waWNrbGUoc2VsZik6CiAgICAgICAgIG9yaWcgPSBkZXF1ZShyYW5nZSgyMDApKQpAQCAtNjk2LDYgKzY5OCwxNSBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGlkKGQpLCBpZChlKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGQpLCBsaXN0KGUpKQogCisgICAgICAgIGZvciBpIGluIHJhbmdlKDUpOgorICAgICAgICAgICAgZm9yIG1heGxlbiBpbiByYW5nZSgtMSwgNik6CisgICAgICAgICAgICAgICAgcyA9IFtyYW5kb20ucmFuZG9tKCkgZm9yIGogaW4gcmFuZ2UoaSldCisgICAgICAgICAgICAgICAgZCA9IGRlcXVlKHMpIGlmIG1heGxlbiA9PSAtMSBlbHNlIGRlcXVlKHMsIG1heGxlbikKKyAgICAgICAgICAgICAgICBlID0gZC5jb3B5KCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLm1heGxlbiwgZS5tYXhsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGFsbCh4IGlzIHkgZm9yIHgsIHkgaW4gemlwKGQsIGUpKSkKKwogICAgIGRlZiB0ZXN0X2NvcHlfbWV0aG9kKHNlbGYpOgogICAgICAgICBtdXQgPSBbMTBdCiAgICAgICAgIGQgPSBkZXF1ZShbbXV0XSkKQEAgLTg0NSwyNCArODU2LDI2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZCksIHR5cGUoZSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoZCksIGxpc3QoZSkpCiAKLSMjICAgIGRlZiB0ZXN0X3BpY2tsZShzZWxmKToKLSMjICAgICAgICBkID0gRGVxdWUoJ2FiYycpCi0jIyAgICAgICAgZC5hcHBlbmQoZCkKLSMjCi0jIyAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChkKSwgaWQoZSkpCi0jIyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGQpLCB0eXBlKGUpKQotIyMgICAgICAgIGRkID0gZC5wb3AoKQotIyMgICAgICAgIGVlID0gZS5wb3AoKQotIyMgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZSksIGlkKGVlKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQsIGUpCi0jIwotIyMgICAgICAgIGQueCA9IGQKLSMjICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkKSkKLSMjICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGlkKGUpLCBpZChlLngpKQotIyMKLSMjICAgICAgICBkID0gRGVxdWVXaXRoQmFkSXRlcignYWJjJykKLSMjICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZCkKKyAgICBkZWYgdGVzdF9waWNrbGVfcmVjdXJzaXZlKHNlbGYpOgorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgIGZvciBkIGluIERlcXVlKCdhYmMnKSwgRGVxdWUoJ2FiYycsIDMpOgorICAgICAgICAgICAgICAgIGQuYXBwZW5kKGQpCisKKyAgICAgICAgICAgICAgICBlID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhkLCBwcm90bykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChpZChlKSwgaWQoZCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUpLCB0eXBlKGQpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5tYXhsZW4sIGQubWF4bGVuKQorICAgICAgICAgICAgICAgIGRkID0gZC5wb3AoKQorICAgICAgICAgICAgICAgIGVlID0gZS5wb3AoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZWUpLCBpZChlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIGQpCisKKyAgICAgICAgICAgICAgICBkLnggPSBkCisgICAgICAgICAgICAgICAgZSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZCwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaWQoZS54KSwgaWQoZSkpCisKKyAgICAgICAgICAgIGZvciBkIGluIERlcXVlV2l0aEJhZEl0ZXIoJ2FiYycpLCBEZXF1ZVdpdGhCYWRJdGVyKCdhYmMnLCAyKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBpY2tsZS5kdW1wcywgZCwgcHJvdG8pCiAKICAgICBkZWYgdGVzdF93ZWFrcmVmKHNlbGYpOgogICAgICAgICBkID0gZGVxdWUoJ2dhbGxhaGFkJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkgYi9MaWIvdGVzdC90ZXN0X2Rlc2NyLnB5CmluZGV4IDQxOGY4ZDIuLjFlMDhlZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVzY3IucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXNjci5weQpAQCAtNDczOCwxMSArNDczOCw4IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIChhcmdzLCBrd2FyZ3MpCiAgICAgICAgIG9iaiA9IEMzKCkKICAgICAgICAgZm9yIHByb3RvIGluIHByb3RvY29sczoKLSAgICAgICAgICAgIGlmIHByb3RvID49IDQ6CisgICAgICAgICAgICBpZiBwcm90byA+PSAyOgogICAgICAgICAgICAgICAgIHNlbGYuX2NoZWNrX3JlZHVjZShwcm90bywgb2JqLCBhcmdzLCBrd2FyZ3MpCi0gICAgICAgICAgICBlbGlmIHByb3RvID49IDI6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgICAgICAgICAgb2JqLl9fcmVkdWNlX2V4X18ocHJvdG8pCiAKICAgICAgICAgY2xhc3MgQzQ6CiAgICAgICAgICAgICBkZWYgX19nZXRuZXdhcmdzX2V4X18oc2VsZik6CkBAIC01MDYxLDEwICs1MDU4LDYgQEAKICAgICAgICAgICAgICAgICBrd2FyZ3MgPSBnZXRhdHRyKGNscywgJ0tXQVJHUycsIHt9KQogICAgICAgICAgICAgICAgIG9iaiA9IGNscygqY2xzLkFSR1MsICoqa3dhcmdzKQogICAgICAgICAgICAgICAgIHByb3RvID0gcGlja2xlX2NvcGllci5wcm90bwotICAgICAgICAgICAgICAgIGlmIDIgPD0gcHJvdG8gPCA0IGFuZCBoYXNhdHRyKGNscywgJ19fZ2V0bmV3YXJnc19leF9fJyk6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwaWNrbGVfY29waWVyLmR1bXBzKG9iaiwgcHJvdG8pCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgb2JqY29weSA9IHBpY2tsZV9jb3BpZXIuY29weShvYmopCiAgICAgICAgICAgICAgICAgc2VsZi5fYXNzZXJ0X2lzX2NvcHkob2JqLCBvYmpjb3B5KQogICAgICAgICAgICAgICAgICMgRm9yIHRlc3QgY2xhc3NlcyB0aGF0IHN1cHBvcnRzIHRoaXMsIG1ha2Ugc3VyZSB3ZSBkaWRuJ3QgZ28KQEAgLTUxMjMsMTIgKzUxMTYsMTQgQEAKICAgICAgICAgYSwgYiA9IEEoKSwgQigpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih2YXJzKGIpKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2Yoe30pKQotICAgICAgICBhLngsIGEueSwgYS56LCBhLncgPSByYW5nZSg0KQorICAgICAgICAjIEluaXRpYWwgaGFzaCB0YWJsZSBjYW4gY29udGFpbiBhdCBtb3N0IDUgZWxlbWVudHMuCisgICAgICAgICMgU2V0IDYgYXR0cmlidXRlcyB0byBjYXVzZSBpbnRlcm5hbCByZXNpemluZy4KKyAgICAgICAgYS54LCBhLnksIGEueiwgYS53LCBhLnYsIGEudSA9IHJhbmdlKDYpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc3lzLmdldHNpemVvZih2YXJzKGEpKSwgc3lzLmdldHNpemVvZih2YXJzKGIpKSkKICAgICAgICAgYTIgPSBBKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzeXMuZ2V0c2l6ZW9mKHZhcnMoYSkpLCBzeXMuZ2V0c2l6ZW9mKHZhcnMoYTIpKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN5cy5nZXRzaXplb2YodmFycyhhKSksIHN5cy5nZXRzaXplb2Yoe30pKQotICAgICAgICBiLnUsIGIudiwgYi53LCBiLnQgPSByYW5nZSg0KQorICAgICAgICBiLnUsIGIudiwgYi53LCBiLnQsIGIucywgYi5yID0gcmFuZ2UoNikKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKHN5cy5nZXRzaXplb2YodmFycyhiKSksIHN5cy5nZXRzaXplb2Yoe30pKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkgYi9MaWIvdGVzdC90ZXN0X2Rlc2NydHV0LnB5CmluZGV4IDUwNmQxYWIuLmI4NGQ2NDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGVzY3J0dXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kZXNjcnR1dC5weQpAQCAtMTgyLDYgKzE4Miw3IEBACiAgICAgICdfX2lhZGRfXycsCiAgICAgICdfX2ltdWxfXycsCiAgICAgICdfX2luaXRfXycsCisgICAgICdfX2luaXRfc3ViY2xhc3NfXycsCiAgICAgICdfX2l0ZXJfXycsCiAgICAgICdfX2xlX18nLAogICAgICAnX19sZW5fXycsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2RldnBvbGwucHkKaW5kZXggOTU1NjE4YS4uYzEzM2M4MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kZXZwb2xsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGV2cG9sbC5weQpAQCAtNSw5ICs1LDggQEAKIGltcG9ydCBvcwogaW1wb3J0IHJhbmRvbQogaW1wb3J0IHNlbGVjdAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOLCBydW5fdW5pdHRlc3QsIGNweXRob25fb25seQorZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHJ1bl91bml0dGVzdCwgY3B5dGhvbl9vbmx5CiAKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgJ2RldnBvbGwnKSA6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoJ3Rlc3Qgd29ya3Mgb25seSBvbiBTb2xhcmlzIE9TIGZhbWlseScpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3QucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3QucHkKaW5kZXggNmQ2OGU3Ni4uZWQ2NmRkYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdC5weQpAQCAtMSwxMCArMSwxMyBAQAotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLQotaW1wb3J0IGNvbGxlY3Rpb25zLCByYW5kb20sIHN0cmluZworaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZ2MsIHdlYWtyZWYKK2ltcG9ydCBnYwogaW1wb3J0IHBpY2tsZQoraW1wb3J0IHJhbmRvbQoraW1wb3J0IHN0cmluZworaW1wb3J0IHN5cworaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2Vha3JlZgorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgRGljdFRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtODM2LDYgKzgzOSw4MyBAQAogICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLl90cmFja2VkKE15RGljdCgpKQogCisgICAgZGVmIG1ha2Vfc2hhcmVkX2tleV9kaWN0KHNlbGYsIG4pOgorICAgICAgICBjbGFzcyBDOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIGRpY3RzID0gW10KKyAgICAgICAgZm9yIGkgaW4gcmFuZ2Uobik6CisgICAgICAgICAgICBhID0gQygpCisgICAgICAgICAgICBhLngsIGEueSwgYS56ID0gMSwgMiwgMworICAgICAgICAgICAgZGljdHMuYXBwZW5kKGEuX19kaWN0X18pCisKKyAgICAgICAgcmV0dXJuIGRpY3RzCisKKyAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zcGxpdHRhYmxlX2RlbChzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGRlbCBkW2tdIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGRlbCBhWyd5J10gICMgc3BsaXQgdGFibGUgaXMgY29tYmluZWQKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICBkZWwgYVsneSddCisKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHN5cy5nZXRzaXplb2YoYSksIG9yaWdfc2l6ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneiddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgICAgICAjIFR3byBkaWN0cyBoYXZlIGRpZmZlcmVudCBpbnNlcnRpb24gb3JkZXIuCisgICAgICAgIGFbJ3knXSA9IDQyCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChhKSwgWyd4JywgJ3onLCAneSddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYiksIFsneCcsICd5JywgJ3onXSkKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9wKHNlbGYpOgorICAgICAgICAiIiJzcGxpdCB0YWJsZSBtdXN0IGJlIGNvbWJpbmVkIHdoZW4gZC5wb3AoaykiIiIKKyAgICAgICAgYSwgYiA9IHNlbGYubWFrZV9zaGFyZWRfa2V5X2RpY3QoMikKKworICAgICAgICBvcmlnX3NpemUgPSBzeXMuZ2V0c2l6ZW9mKGEpCisKKyAgICAgICAgYS5wb3AoJ3knKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGEucG9wKCd5JykKKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd6J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgICAgICMgVHdvIGRpY3RzIGhhdmUgZGlmZmVyZW50IGluc2VydGlvbiBvcmRlci4KKyAgICAgICAgYVsneSddID0gNDIKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGEpLCBbJ3gnLCAneicsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCisgICAgQHN1cHBvcnQuY3B5dGhvbl9vbmx5CisgICAgZGVmIHRlc3Rfc3BsaXR0YWJsZV9wb3BfcGVuZGluZyhzZWxmKToKKyAgICAgICAgIiIicG9wIGEgcGVuZGluZyBrZXkgaW4gYSBzcGxpdHRlZCB0YWJsZSBzaG91bGQgbm90IGNyYXNoIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgYVsnYSddID0gNAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGIucG9wKCdhJykKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NwbGl0dGFibGVfcG9waXRlbShzZWxmKToKKyAgICAgICAgIiIic3BsaXQgdGFibGUgbXVzdCBiZSBjb21iaW5lZCB3aGVuIGQucG9waXRlbSgpIiIiCisgICAgICAgIGEsIGIgPSBzZWxmLm1ha2Vfc2hhcmVkX2tleV9kaWN0KDIpCisKKyAgICAgICAgb3JpZ19zaXplID0gc3lzLmdldHNpemVvZihhKQorCisgICAgICAgIGl0ZW0gPSBhLnBvcGl0ZW0oKSAgIyBzcGxpdCB0YWJsZSBpcyBjb21iaW5lZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGl0ZW0sICgneicsIDMpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKKyAgICAgICAgICAgIGRlbCBhWyd6J10KKworICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihhKSwgb3JpZ19zaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoYSksIFsneCcsICd5J10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChiKSwgWyd4JywgJ3knLCAneiddKQorCiAgICAgZGVmIHRlc3RfaXRlcmF0b3JfcGlja2xpbmcoc2VsZik6CiAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgogICAgICAgICAgICAgZGF0YSA9IHsxOiJhIiwgMjoiYiIsIDM6ImMifQpAQCAtOTY5LDUgKzEwNDksNiBAQAogY2xhc3MgU3ViY2xhc3NNYXBwaW5nVGVzdHMobWFwcGluZ190ZXN0cy5CYXNpY1Rlc3RNYXBwaW5nUHJvdG9jb2wpOgogICAgIHR5cGUydGVzdCA9IERpY3QKIAorCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kaWN0X3ZlcnNpb24ucHkgYi9MaWIvdGVzdC90ZXN0X2RpY3RfdmVyc2lvbi5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NjcxZjlmCi0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0X3ZlcnNpb24ucHkKQEAgLTAsMCArMSwxODYgQEAKKyIiIgorVGVzdCBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUEVQIDUwOTogZGljdGlvbmFyeSB2ZXJzaW9ubmluZy4KKyIiIgoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKKworIyBQRVAgNTA5IGlzIGltcGxlbWVudGVkIGluIENQeXRob24gYnV0IG90aGVyIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMKKyMgZG9uJ3QgcmVxdWlyZSB0byBpbXBsZW1lbnQgaXQKK190ZXN0Y2FwaSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnX3Rlc3RjYXBpJykKKworCitjbGFzcyBEaWN0VmVyc2lvblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICB0eXBlMnRlc3QgPSBkaWN0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYuc2Vlbl92ZXJzaW9ucyA9IHNldCgpCisgICAgICAgIHNlbGYuZGljdCA9IE5vbmUKKworICAgIGRlZiBjaGVja192ZXJzaW9uX3VuaXF1ZShzZWxmLCBteWRpY3QpOgorICAgICAgICB2ZXJzaW9uID0gX3Rlc3RjYXBpLmRpY3RfZ2V0X3ZlcnNpb24obXlkaWN0KQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKHZlcnNpb24sIHNlbGYuc2Vlbl92ZXJzaW9ucykKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zLmFkZCh2ZXJzaW9uKQorCisgICAgZGVmIGNoZWNrX3ZlcnNpb25fY2hhbmdlZChzZWxmLCBteWRpY3QsIG1ldGhvZCwgKmFyZ3MsICoqa3cpOgorICAgICAgICByZXN1bHQgPSBtZXRob2QoKmFyZ3MsICoqa3cpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl91bmlxdWUobXlkaWN0KQorICAgICAgICByZXR1cm4gcmVzdWx0CisKKyAgICBkZWYgY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShzZWxmLCBteWRpY3QsIG1ldGhvZCwgKmFyZ3MsICoqa3cpOgorICAgICAgICB2ZXJzaW9uMSA9IF90ZXN0Y2FwaS5kaWN0X2dldF92ZXJzaW9uKG15ZGljdCkKKyAgICAgICAgc2VsZi5zZWVuX3ZlcnNpb25zLmFkZCh2ZXJzaW9uMSkKKworICAgICAgICByZXN1bHQgPSBtZXRob2QoKmFyZ3MsICoqa3cpCisKKyAgICAgICAgdmVyc2lvbjIgPSBfdGVzdGNhcGkuZGljdF9nZXRfdmVyc2lvbihteWRpY3QpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmVyc2lvbjIsIHZlcnNpb24xLCAidmVyc2lvbiBjaGFuZ2VkIikKKworICAgICAgICByZXR1cm4gIHJlc3VsdAorCisgICAgZGVmIG5ld19kaWN0KHNlbGYsICphcmdzLCAqKmt3KToKKyAgICAgICAgZCA9IHNlbGYudHlwZTJ0ZXN0KCphcmdzLCAqKmt3KQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fdW5pcXVlKGQpCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgdGVzdF9jb25zdHJ1Y3RvcihzZWxmKToKKyAgICAgICAgIyBuZXcgZW1wdHkgZGljdGlvbmFyaWVzIG11c3QgYWxsIGhhdmUgYW4gdW5pcXVlIHZlcnNpb24KKyAgICAgICAgZW1wdHkxID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIGVtcHR5MiA9IHNlbGYubmV3X2RpY3QoKQorICAgICAgICBlbXB0eTMgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIG5vbi1lbXB0eSBkaWN0aW9uYXJpZXMgbXVzdCBhbHNvIGhhdmUgYW4gdW5pcXVlIHZlcnNpb24KKyAgICAgICAgbm9uZW1wdHkxID0gc2VsZi5uZXdfZGljdCh4PSd4JykKKyAgICAgICAgbm9uZW1wdHkyID0gc2VsZi5uZXdfZGljdCh4PSd4JywgeT0neScpCisKKyAgICBkZWYgdGVzdF9jb3B5KHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChhPTEsIGI9MikKKworICAgICAgICBkMiA9IHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBkLmNvcHkpCisKKyAgICAgICAgIyBkaWN0LmNvcHkoKSBtdXN0IGNyZWF0ZSBhIGRpY3Rpb25hcnkgd2l0aCBhIG5ldyB1bmlxdWUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fdW5pcXVlKGQyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbShzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3QoKQorCisgICAgICAgICMgY3JlYXRpbmcgbmV3IGtleXMgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3gnLCAneCcpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd5JywgJ3knKQorCisgICAgICAgICMgY2hhbmdpbmcgdmFsdWVzIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICd4JywgMSkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ3knLCAyKQorCisgICAgZGVmIHRlc3Rfc2V0aXRlbV9zYW1lX3ZhbHVlKHNlbGYpOgorICAgICAgICB2YWx1ZSA9IG9iamVjdCgpCisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KCkKKworICAgICAgICAjIHNldHRpbmcgYSBrZXkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5fX3NldGl0ZW1fXywgJ2tleScsIHZhbHVlKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byB0aGUgc2FtZSB2YWx1ZSB3aXRoIGRpY3QuX19zZXRpdGVtX18KKyAgICAgICAgIyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIHRoZSBzYW1lIHZhbHVlIHdpdGggZGljdC51cGRhdGUKKyAgICAgICAgIyBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwga2V5PXZhbHVlKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9dmFsdWUpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBkMikKKworICAgIGRlZiB0ZXN0X3NldGl0ZW1fZXF1YWwoc2VsZik6CisgICAgICAgIGNsYXNzIEFsd2F5c0VxdWFsOgorICAgICAgICAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKKworICAgICAgICB2YWx1ZTEgPSBBbHdheXNFcXVhbCgpCisgICAgICAgIHZhbHVlMiA9IEFsd2F5c0VxdWFsKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZhbHVlMSA9PSB2YWx1ZTIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UodmFsdWUxICE9IHZhbHVlMikKKworICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19zZXRpdGVtX18sICdrZXknLCB2YWx1ZTEpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHRvIGEgdmFsdWUgZXF1YWwgdG8gdGhlIGN1cnJlbnQgdmFsdWUKKyAgICAgICAgIyB3aXRoIGRpY3QuX19zZXRpdGVtX18oKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLl9fc2V0aXRlbV9fLCAna2V5JywgdmFsdWUyKQorCisgICAgICAgICMgc2V0dGluZyBhIGtleSB0byBhIHZhbHVlIGVxdWFsIHRvIHRoZSBjdXJyZW50IHZhbHVlCisgICAgICAgICMgd2l0aCBkaWN0LnVwZGF0ZSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQudXBkYXRlLCBrZXk9dmFsdWUxKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9dmFsdWUyKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwgZDIpCisKKyAgICBkZWYgdGVzdF9zZXRkZWZhdWx0KHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdCgpCisKKyAgICAgICAgIyBzZXR0aW5nIGEga2V5IHdpdGggZGljdC5zZXRkZWZhdWx0KCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24KKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5zZXRkZWZhdWx0LCAna2V5JywgJ3ZhbHVlMScpCisKKyAgICAgICAgIyBkb24ndCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBhbHJlYWR5IGV4aXN0cworICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC5zZXRkZWZhdWx0LCAna2V5JywgJ3ZhbHVlMicpCisKKyAgICBkZWYgdGVzdF9kZWxpdGVtKHNlbGYpOgorICAgICAgICBkID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlJykKKworICAgICAgICAjIGRlbGV0aW5nIGEga2V5IHdpdGggZGljdC5fX2RlbGl0ZW1fXygpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uCisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9jaGFuZ2VkKGQsIGQuX19kZWxpdGVtX18sICdrZXknKQorCisgICAgICAgICMgZG9uJ3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdAorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgc2VsZi5hc3NlcnRSYWlzZXMsIEtleUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5fX2RlbGl0ZW1fXywgJ2tleScpCisKKyAgICBkZWYgdGVzdF9wb3Aoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgcG9wKCkgbXVzdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGtleSBleGlzdHMKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2NoYW5nZWQoZCwgZC5wb3AsICdrZXknKQorCisgICAgICAgICMgcG9wKCkgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBrZXkgZG9lcyBub3QgZXhpc3QKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIHNlbGYuYXNzZXJ0UmFpc2VzLCBLZXlFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGQucG9wLCAna2V5JykKKworICAgIGRlZiB0ZXN0X3BvcGl0ZW0oc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgcG9waXRlbSgpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIG5vdCBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnBvcGl0ZW0pCisKKyAgICAgICAgIyBwb3BpdGVtKCkgbXVzdCBub3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIGVtcHR5CisgICAgICAgIHNlbGYuY2hlY2tfdmVyc2lvbl9kb250X2NoYW5nZShkLCBzZWxmLmFzc2VydFJhaXNlcywgS2V5RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLnBvcGl0ZW0pCisKKyAgICBkZWYgdGVzdF91cGRhdGUoc2VsZik6CisgICAgICAgIGQgPSBzZWxmLm5ld19kaWN0KGtleT0ndmFsdWUnKQorCisgICAgICAgICMgdXBkYXRlKCkgY2FsbGluZyB3aXRoIG5vIGFyZ3VtZW50IG11c3Qgbm90IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fZG9udF9jaGFuZ2UoZCwgZC51cGRhdGUpCisKKyAgICAgICAgIyB1cGRhdGUoKSBtdXN0IGNoYW5nZSB0aGUgdmVyc2lvbgorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwga2V5PSduZXcgdmFsdWUnKQorCisgICAgICAgIGQyID0gc2VsZi5uZXdfZGljdChrZXk9J3ZhbHVlIDMnKQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLnVwZGF0ZSwgZDIpCisKKyAgICBkZWYgdGVzdF9jbGVhcihzZWxmKToKKyAgICAgICAgZCA9IHNlbGYubmV3X2RpY3Qoa2V5PSd2YWx1ZScpCisKKyAgICAgICAgIyBjbGVhcigpIG11c3QgY2hhbmdlIHRoZSB2ZXJzaW9uIGlmIHRoZSBkaWN0IGlzIG5vdCBlbXB0eQorICAgICAgICBzZWxmLmNoZWNrX3ZlcnNpb25fY2hhbmdlZChkLCBkLmNsZWFyKQorCisgICAgICAgICMgY2xlYXIoKSBtdXN0IG5vdCBjaGFuZ2UgdGhlIHZlcnNpb24gaWYgdGhlIGRpY3QgaXMgZW1wdHkKKyAgICAgICAgc2VsZi5jaGVja192ZXJzaW9uX2RvbnRfY2hhbmdlKGQsIGQuY2xlYXIpCisKKworY2xhc3MgRGljdChkaWN0KToKKyAgICBwYXNzCisKKworY2xhc3MgRGljdFN1YnR5cGVWZXJzaW9uVGVzdHMoRGljdFZlcnNpb25UZXN0cyk6CisgICAgdHlwZTJ0ZXN0ID0gRGljdAorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2RpY3Rjb21wcy5weSBiL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CmluZGV4IDNjOGI5NWMuLjA4NzMwNzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGljdGNvbXBzLnB5CkBAIC0xLDcgKzEsNSBAQAogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAotCiAjIEZvciBzY29wZSB0ZXN0aW5nLgogZyA9ICJHbG9iYWwgdmFyaWFibGUiCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGljdHZpZXdzLnB5IGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKaW5kZXggMGM5OTY1Mi4uNDlhOWU5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWN0dmlld3MucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgY29sbGVjdGlvbnMKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgdW5pdHRlc3QKQEAgLTI0NSw2ICsyNDYsMjcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChUeXBlRXJyb3IsIHBpY2tsZS5QaWNrbGluZ0Vycm9yKSwKICAgICAgICAgICAgICAgICBwaWNrbGUuZHVtcHMsIGQuaXRlbXMoKSwgcHJvdG8pCiAKKyAgICBkZWYgdGVzdF9hYmNfcmVnaXN0cnkoc2VsZik6CisgICAgICAgIGQgPSBkaWN0KGE9MSkKKworICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLktleXNWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLk1hcHBpbmdWaWV3KQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5rZXlzKCksIGNvbGxlY3Rpb25zLlNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5TaXplZCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5JdGVyYWJsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQua2V5cygpLCBjb2xsZWN0aW9ucy5Db250YWluZXIpCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLlZhbHVlc1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLnZhbHVlcygpLCBjb2xsZWN0aW9ucy5NYXBwaW5nVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQudmFsdWVzKCksIGNvbGxlY3Rpb25zLlNpemVkKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkl0ZW1zVmlldykKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuTWFwcGluZ1ZpZXcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLlNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGQuaXRlbXMoKSwgY29sbGVjdGlvbnMuU2l6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkLml0ZW1zKCksIGNvbGxlY3Rpb25zLkl0ZXJhYmxlKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZC5pdGVtcygpLCBjb2xsZWN0aW9ucy5Db250YWluZXIpCisKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYi5weQppbmRleCBhYjlkZWJmLi4xNTZiNTIzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliLnB5CkBAIC0xMjIsMTcgKzEyMiwxNyBAQAogIiIiCiAKIHBhdGNoOTE0NTc1X2Zyb20yID0gIiIiCi1cdFx0TGluZSAxOiBwcmVjZWVkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQotICBcdFx0TGluZSAyOiBwcmVjZWVkZWQgYnkgZnJvbTpbc3N0dF0gdG86W3Nzc3N0XQotICBcdCBcdExpbmUgMzogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQorXHRcdExpbmUgMTogcHJlY2VkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQorICBcdFx0TGluZSAyOiBwcmVjZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCisgIFx0IFx0TGluZSAzOiBwcmVjZWRlZCBieSBmcm9tOltzc3RzdF0gdG86W3Nzc3Nzc10KIExpbmUgNDogIFx0aGFzIGZyb206W3NzdF0gdG86W3Nzc10gYWZ0ZXIgOgogTGluZSA1OiBoYXMgZnJvbTpbdF0gdG86W3NzXSBhdCBlbmRcdAogIiIiCiAKIHBhdGNoOTE0NTc1X3RvMiA9ICIiIgotICAgIExpbmUgMTogcHJlY2VlZGVkIGJ5IGZyb206W3R0XSB0bzpbc3Nzc10KLSAgICBcdExpbmUgMjogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHRdIHRvOltzc3NzdF0KLSAgICAgIExpbmUgMzogcHJlY2VlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQorICAgIExpbmUgMTogcHJlY2VkZWQgYnkgZnJvbTpbdHRdIHRvOltzc3NzXQorICAgIFx0TGluZSAyOiBwcmVjZWRlZCBieSBmcm9tOltzc3R0XSB0bzpbc3Nzc3RdCisgICAgICBMaW5lIDM6IHByZWNlZGVkIGJ5IGZyb206W3NzdHN0XSB0bzpbc3Nzc3NzXQogTGluZSA0OiAgIGhhcyBmcm9tOltzc3RdIHRvOltzc3NdIGFmdGVyIDoKIExpbmUgNTogaGFzIGZyb206W3RdIHRvOltzc10gYXQgZW5kCiAiIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbCBiL0xpYi90ZXN0L3Rlc3RfZGlmZmxpYl9leHBlY3QuaHRtbAppbmRleCBlYTdhMjRlLi4zZTZhN2I3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2RpZmZsaWJfZXhwZWN0Lmh0bWwKKysrIGIvTGliL3Rlc3QvdGVzdF9kaWZmbGliX2V4cGVjdC5odG1sCkBAIC0zODcsOSArMzg3LDkgQEAKICAgICAgICAgCiAgICAgICAgIDx0Ym9keT4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCIgaWQ9ImRpZmZsaWJfY2hnX3RvOV9fMCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV8xIj4xPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfXzAiPmY8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzlfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PC90cj4KLSAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMyI+MzwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOzwvc3Bhbj4mbmJzcDsmbmJzcDtMaW5lJm5ic3A7MjombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzlfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgorICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG85X190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfMiI+MjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MTombmJzcDtwcmVjZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvOV9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb205XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG85XzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48L3RyPgogICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tOV81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTlfNiI+NjwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj5MaW5lJm5ic3A7NTombmJzcDtoYXMmbmJzcDtmcm9tOlt0XSZuYnNwO3RvOltzc10mbmJzcDthdCZuYnNwO2VuZDxzcGFuIGNsYXNzPSJkaWZmX3N1YiI+Jm5ic3A7PC9zcGFuPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9InRvOV82Ij42PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs1OiZuYnNwO2hhcyZuYnNwO2Zyb206W3RdJm5ic3A7dG86W3NzXSZuYnNwO2F0Jm5ic3A7ZW5kPC90ZD48L3RyPgogICAgICAgICA8L3Rib2R5PgpAQCAtNDAzLDkgKzQwMyw5IEBACiAgICAgICAgIAogICAgICAgICA8dGJvZHk+CiAgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiIGlkPSJkaWZmbGliX2NoZ190bzEwX18wIj48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfMSI+MTwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fMCI+ZjwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzEiPjE8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48YSBocmVmPSIjZGlmZmxpYl9jaGdfdG8xMF9fdG9wIj50PC9hPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbdHRdJm5ic3A7dG86W3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PGEgaHJlZj0iI2RpZmZsaWJfY2hnX3RvMTBfX3RvcCI+dDwvYT48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+Ci0gICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0dF0mbmJzcDt0bzpbc3Nzc3RdPC90ZD48L3RyPgotICAgICAgICAgICAgPHRyPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJmcm9tMTBfNCI+NDwvdGQ+PHRkIG5vd3JhcD0ibm93cmFwIj4mbmJzcDsmbmJzcDs8c3BhbiBjbGFzcz0iZGlmZl9jaGciPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj5MaW5lJm5ic3A7MzombmJzcDtwcmVjZWVkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZWRlZCZuYnNwO2J5Jm5ic3A7ZnJvbTpbc3N0c3RdJm5ic3A7dG86W3Nzc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzIiPjI8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzE6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3R0XSZuYnNwO3RvOltzc3NzXTwvdGQ+PHRkIGNsYXNzPSJkaWZmX25leHQiPjxhIGhyZWY9IiNkaWZmbGliX2NoZ190bzEwX190b3AiPnQ8L2E+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF8yIj4yPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPjxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDsxOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOlt0dF0mbmJzcDt0bzpbc3Nzc108L3RkPjwvdHI+CisgICAgICAgICAgICA8dHI+PHRkIGNsYXNzPSJkaWZmX25leHQiPjwvdGQ+PHRkIGNsYXNzPSJkaWZmX2hlYWRlciIgaWQ9ImZyb20xMF8zIj4zPC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwO0xpbmUmbmJzcDsyOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3R0XSZuYnNwO3RvOltzc3NzdF08L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzMiPjM8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDs8L3NwYW4+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7TGluZSZuYnNwOzI6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHRdJm5ic3A7dG86W3Nzc3N0XTwvdGQ+PC90cj4KKyAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzQiPjQ8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+TGluZSZuYnNwOzM6Jm5ic3A7cHJlY2VkZWQmbmJzcDtieSZuYnNwO2Zyb206W3NzdHN0XSZuYnNwO3RvOltzc3Nzc3NdPC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF80Ij40PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7PC9zcGFuPkxpbmUmbmJzcDszOiZuYnNwO3ByZWNlZGVkJm5ic3A7YnkmbmJzcDtmcm9tOltzc3RzdF0mbmJzcDt0bzpbc3Nzc3NzXTwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzUiPjU8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzQ6Jm5ic3A7Jm5ic3A7PHNwYW4gY2xhc3M9ImRpZmZfY2hnIj4mbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDs8L3NwYW4+aGFzJm5ic3A7ZnJvbTpbc3N0XSZuYnNwO3RvOltzc3NdJm5ic3A7YWZ0ZXImbmJzcDs6PC90ZD48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0idG8xMF81Ij41PC90ZD48dGQgbm93cmFwPSJub3dyYXAiPkxpbmUmbmJzcDs0OiZuYnNwOyZuYnNwOzxzcGFuIGNsYXNzPSJkaWZmX2NoZyI+Jm5ic3A7PC9zcGFuPmhhcyZuYnNwO2Zyb206W3NzdF0mbmJzcDt0bzpbc3NzXSZuYnNwO2FmdGVyJm5ic3A7OjwvdGQ+PC90cj4KICAgICAgICAgICAgIDx0cj48dGQgY2xhc3M9ImRpZmZfbmV4dCI+PC90ZD48dGQgY2xhc3M9ImRpZmZfaGVhZGVyIiBpZD0iZnJvbTEwXzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8c3BhbiBjbGFzcz0iZGlmZl9zdWIiPiZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOzwvc3Bhbj48L3RkPjx0ZCBjbGFzcz0iZGlmZl9uZXh0Ij48L3RkPjx0ZCBjbGFzcz0iZGlmZl9oZWFkZXIiIGlkPSJ0bzEwXzYiPjY8L3RkPjx0ZCBub3dyYXA9Im5vd3JhcCI+TGluZSZuYnNwOzU6Jm5ic3A7aGFzJm5ic3A7ZnJvbTpbdF0mbmJzcDt0bzpbc3NdJm5ic3A7YXQmbmJzcDtlbmQ8L3RkPjwvdHI+CiAgICAgICAgIDwvdGJvZHk+CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Rpcy5weSBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CmluZGV4IDBmZDEzNDguLmI5YjVhYzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZGlzLnB5CkBAIC00MCw0MSArNDAsNDEgQEAKIAogZGlzX2NfaW5zdGFuY2VfbWV0aG9kID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfRkFTVCAgICAgICAgICAgICAgICAxICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQotICAgICAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICAgICAgOSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoc2VsZikKLSAgICAgICAgICAgICAxMiBTVE9SRV9BVFRSICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAxOCBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyAgICAgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgICAgIDYgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKHNlbGYpCisgICAgICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTIgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0MuX19pbml0X18uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLCkKIAogZGlzX2NfaW5zdGFuY2VfbWV0aG9kX2J5dGVzID0gIiIiXAogICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICA2IENPTVBBUkVfT1AgICAgICAgICAgICAgICAyICg9PSkKLSAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQotICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAxNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgIDE4IFJFVFVSTl9WQUxVRQorICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgNCBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCisgICAgICAgICAgNiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKKyAgICAgICAgICA4IFNUT1JFX0FUVFIgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCisgICAgICAgICAxMiBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfY19jbGFzc19tZXRob2QgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHgpCi0gICAgICAgICAgICAgIDMgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgIDYgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQotICAgICAgICAgICAgICA5IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChjbHMpCi0gICAgICAgICAgICAgMTIgU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMTggUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChjbHMpCisgICAgICAgICAgICAgIDggU1RPUkVfQVRUUiAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMTIgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX0MuY20uX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAyLCkKIAogZGlzX2Nfc3RhdGljX21ldGhvZCA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBDT01QQVJFX09QICAgICAgICAgICAgICAgMiAoPT0pCi0gICAgICAgICAgICAgIDkgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMTUgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgIDQgQ09NUEFSRV9PUCAgICAgICAgICAgICAgIDIgKD09KQorICAgICAgICAgICAgICA2IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQogIiIiICUgKF9DLnNtLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMiwpCiAKICMgQ2xhc3MgZGlzYXNzZW1ibGluZyBpbmZvIGhhcyBhbiBleHRyYSBuZXdsaW5lIGF0IGVuZC4KQEAgLTk1LDIzICs5NSwyMyBAQAogCiBkaXNfZiA9ICIiIlwKICUzZCAgICAgICAgICAgMCBMT0FEX0dMT0JBTCAgICAgICAgICAgICAgMCAocHJpbnQpCi0gICAgICAgICAgICAgIDMgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCi0gICAgICAgICAgICAgIDYgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgIDkgUE9QX1RPUAorICAgICAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChhKQorICAgICAgICAgICAgICA0IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgIDYgUE9QX1RPUAogCi0lM2QgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCislM2QgICAgICAgICAgIDggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCisgICAgICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIgJSAoX2YuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIF9mLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMikKIAogCiBkaXNfZl9jb19jb2RlID0gIiIiXAogICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAgMyBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoMCkKLSAgICAgICAgICA2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgIDkgUE9QX1RPUAotICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAxMyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAyIExPQURfRkFTVCAgICAgICAgICAgICAgICAwICgwKQorICAgICAgICAgIDQgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICA2IFBPUF9UT1AKKyAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgMTAgUkVUVVJOX1ZBTFVFCiAiIiIKIAogCkBAIC0xMjEsMjAgKzEyMSwyMCBAQAogICAgICAgICBwYXNzCiAKIGRpc19idWc3MDg5MDEgPSAiIiJcCi0lM2QgICAgICAgICAgIDAgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMjMgKHRvIDI2KQotICAgICAgICAgICAgICAzIExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChyYW5nZSkKLSAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKKyUzZCAgICAgICAgICAgMCBTRVRVUF9MT09QICAgICAgICAgICAgICAxOCAodG8gMjApCisgICAgICAgICAgICAgIDIgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHJhbmdlKQorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQogCi0lM2QgICAgICAgICAgIDkgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQotICAgICAgICAgICAgIDEyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAyICgyIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQotICAgICAgICAgICAgIDE1IEdFVF9JVEVSCi0gICAgICAgID4+ICAgMTYgRk9SX0lURVIgICAgICAgICAgICAgICAgIDYgKHRvIDI1KQotICAgICAgICAgICAgIDE5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChyZXMpCislM2QgICAgICAgICAgIDYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKDEwKQorICAgICAgICAgICAgICA4IENBTExfRlVOQ1RJT04gICAgICAgICAgICAyCisgICAgICAgICAgICAgMTAgR0VUX0lURVIKKyAgICAgICAgPj4gICAxMiBGT1JfSVRFUiAgICAgICAgICAgICAgICAgNCAodG8gMTgpCisgICAgICAgICAgICAgMTQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKHJlcykKIAotJTNkICAgICAgICAgIDIyIEpVTVBfQUJTT0xVVEUgICAgICAgICAgIDE2Ci0gICAgICAgID4+ICAgMjUgUE9QX0JMT0NLCi0gICAgICAgID4+ICAgMjYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMjkgUkVUVVJOX1ZBTFVFCislM2QgICAgICAgICAgMTYgSlVNUF9BQlNPTFVURSAgICAgICAgICAgMTIKKyAgICAgICAgPj4gICAxOCBQT1BfQkxPQ0sKKyAgICAgICAgPj4gICAyMCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKKyAgICAgICAgICAgICAyMiBSRVRVUk5fVkFMVUUKICIiIiAlIChidWc3MDg5MDEuX19jb2RlX18uY29fZmlyc3RsaW5lbm8gKyAxLAogICAgICAgIGJ1ZzcwODkwMS5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDIsCiAgICAgICAgYnVnNzA4OTAxLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMykKQEAgLTE0NywyMiArMTQ3LDIyIEBACiAKIGRpc19idWcxMzMzOTgyID0gIiIiXAogJTNkICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgwKQotICAgICAgICAgICAgICAzIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDM1Ci0gICAgICAgICAgICAgIDYgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEFzc2VydGlvbkVycm9yKQotICAgICAgICAgICAgICA5IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICg8Y29kZSBvYmplY3QgPGxpc3Rjb21wPiBhdCAweC4uLiwgZmlsZSAiJXMiLCBsaW5lICVkPikKLSAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMyAoJ2J1ZzEzMzM5ODIuPGxvY2Fscz4uPGxpc3Rjb21wPicpCi0gICAgICAgICAgICAgMTUgTUFLRV9GVU5DVElPTiAgICAgICAgICAgIDAKLSAgICAgICAgICAgICAxOCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAyMSBHRVRfSVRFUgotICAgICAgICAgICAgIDIyIENBTExfRlVOQ1RJT04gICAgICAgICAgICAxICgxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyKQorICAgICAgICAgICAgICAyIFBPUF9KVU1QX0lGX1RSVUUgICAgICAgIDI2CisgICAgICAgICAgICAgIDQgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKEFzc2VydGlvbkVycm9yKQorICAgICAgICAgICAgICA2IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICg8Y29kZSBvYmplY3QgPGxpc3Rjb21wPiBhdCAweC4uLiwgZmlsZSAiJXMiLCBsaW5lICVkPikKKyAgICAgICAgICAgICAgOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMyAoJ2J1ZzEzMzM5ODIuPGxvY2Fscz4uPGxpc3Rjb21wPicpCisgICAgICAgICAgICAgMTAgTUFLRV9GVU5DVElPTiAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAxMiBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAxNCBHRVRfSVRFUgorICAgICAgICAgICAgIDE2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCiAKLSUzZCAgICAgICAgICAyNSBMT0FEX0NPTlNUICAgICAgICAgICAgICAgNCAoMSkKLSAgICAgICAgICAgICAyOCBCSU5BUllfQURECi0gICAgICAgICAgICAgMjkgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEgKDEgcG9zaXRpb25hbCwgMCBrZXl3b3JkIHBhaXIpCi0gICAgICAgICAgICAgMzIgUkFJU0VfVkFSQVJHUyAgICAgICAgICAgIDEKKyUzZCAgICAgICAgICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgNCAoMSkKKyAgICAgICAgICAgICAyMCBCSU5BUllfQURECisgICAgICAgICAgICAgMjIgQ0FMTF9GVU5DVElPTiAgICAgICAgICAgIDEKKyAgICAgICAgICAgICAyNCBSQUlTRV9WQVJBUkdTICAgICAgICAgICAgMQogCi0lM2QgICAgID4+ICAgMzUgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgMzggUkVUVVJOX1ZBTFVFCislM2QgICAgID4+ICAgMjYgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCisgICAgICAgICAgICAgMjggUkVUVVJOX1ZBTFVFCiAiIiIgJSAoYnVnMTMzMzk4Mi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCiAgICAgICAgX19maWxlX18sCiAgICAgICAgYnVnMTMzMzk4Mi5fX2NvZGVfXy5jb19maXJzdGxpbmVubyArIDEsCkBAIC0xNzEsMTkgKzE3MSwxOSBAQAogCiBfQklHX0xJTkVOT19GT1JNQVQgPSAiIiJcCiAlM2QgICAgICAgICAgIDAgTE9BRF9HTE9CQUwgICAgICAgICAgICAgIDAgKHNwYW0pCi0gICAgICAgICAgICAgIDMgUE9QX1RPUAorICAgICAgICAgICAgICAyIFBPUF9UT1AKICAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoTm9uZSkKLSAgICAgICAgICAgICAgNyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgNiBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfbW9kdWxlX2V4cGVjdGVkX3Jlc3VsdHMgPSAiIiJcCiBEaXNhc3NlbWJseSBvZiBmOgogICA0ICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICAzIFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIFJFVFVSTl9WQUxVRQogCiBEaXNhc3NlbWJseSBvZiBnOgogICA1ICAgICAgICAgICAwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQotICAgICAgICAgICAgICAzIFJFVFVSTl9WQUxVRQorICAgICAgICAgICAgICAyIFJFVFVSTl9WQUxVRQogCiAiIiIKIApAQCAtMTkxLDIwICsxOTEsNTIgQEAKIAogZGlzX2V4cHJfc3RyID0gIiIiXAogICAxICAgICAgICAgICAwIExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQotICAgICAgICAgICAgICAzIExPQURfQ09OU1QgICAgICAgICAgICAgICAwICgxKQotICAgICAgICAgICAgICA2IEJJTkFSWV9BREQKLSAgICAgICAgICAgICAgNyBSRVRVUk5fVkFMVUUKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBCSU5BUllfQURECisgICAgICAgICAgICAgIDYgUkVUVVJOX1ZBTFVFCiAiIiIKIAogc2ltcGxlX3N0bXRfc3RyID0gInggPSB4ICsgMSIKIAogZGlzX3NpbXBsZV9zdG10X3N0ciA9ICIiIlwKICAgMSAgICAgICAgICAgMCBMT0FEX05BTUUgICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKLSAgICAgICAgICAgICAgNiBCSU5BUllfQURECi0gICAgICAgICAgICAgIDcgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKE5vbmUpCi0gICAgICAgICAgICAgMTMgUkVUVVJOX1ZBTFVFCisgICAgICAgICAgICAgIDIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgIDQgQklOQVJZX0FERAorICAgICAgICAgICAgICA2IFNUT1JFX05BTUUgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxIChOb25lKQorICAgICAgICAgICAgIDEwIFJFVFVSTl9WQUxVRQorIiIiCisKK2Fubm90X3N0bXRfc3RyID0gIiIiXAorCit4OiBpbnQgPSAxCit5OiBmdW4oMSkKK2xzdFtmdW4oMCldOiBpbnQgPSAxCisiIiIKKyMgbGVhZGluZyBuZXdsaW5lIGlzIGZvciBhIHJlYXNvbiAodGVzdHMgbGluZW5vKQorCitkaXNfYW5ub3Rfc3RtdF9zdHIgPSAiIiJcCisgIDIgICAgICAgICAgIDAgU0VUVVBfQU5OT1RBVElPTlMKKyAgICAgICAgICAgICAgMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAgNCBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKKyAgICAgICAgICAgICAgNiBMT0FEX05BTUUgICAgICAgICAgICAgICAgMSAoaW50KQorICAgICAgICAgICAgICA4IFNUT1JFX0FOTk9UQVRJT04gICAgICAgICAwICh4KQorCisgIDMgICAgICAgICAgMTAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDIgKGZ1bikKKyAgICAgICAgICAgICAxMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMCAoMSkKKyAgICAgICAgICAgICAxNCBDQUxMX0ZVTkNUSU9OICAgICAgICAgICAgMQorICAgICAgICAgICAgIDE2IFNUT1JFX0FOTk9UQVRJT04gICAgICAgICAzICh5KQorCisgIDQgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDEpCisgICAgICAgICAgICAgMjAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDQgKGxzdCkKKyAgICAgICAgICAgICAyMiBMT0FEX05BTUUgICAgICAgICAgICAgICAgMiAoZnVuKQorICAgICAgICAgICAgIDI0IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgwKQorICAgICAgICAgICAgIDI2IENBTExfRlVOQ1RJT04gICAgICAgICAgICAxCisgICAgICAgICAgICAgMjggU1RPUkVfU1VCU0NSCisgICAgICAgICAgICAgMzAgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDEgKGludCkKKyAgICAgICAgICAgICAzMiBQT1BfVE9QCisgICAgICAgICAgICAgMzQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDIgKE5vbmUpCisgICAgICAgICAgICAgMzYgUkVUVVJOX1ZBTFVFCiAiIiIKIAogY29tcG91bmRfc3RtdF9zdHIgPSAiIiJcCkBAIC0yMTUsNjAgKzI0Nyw4MSBAQAogCiBkaXNfY29tcG91bmRfc3RtdF9zdHIgPSAiIiJcCiAgIDEgICAgICAgICAgIDAgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKDApCi0gICAgICAgICAgICAgIDMgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgIDIgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCiAKLSAgMiAgICAgICAgICAgNiBTRVRVUF9MT09QICAgICAgICAgICAgICAxNCAodG8gMjMpCisgIDIgICAgICAgICAgIDQgU0VUVVBfTE9PUCAgICAgICAgICAgICAgMTIgKHRvIDE4KQogCi0gIDMgICAgID4+ICAgIDkgTE9BRF9OQU1FICAgICAgICAgICAgICAgIDAgKHgpCi0gICAgICAgICAgICAgMTIgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKDEpCi0gICAgICAgICAgICAgMTUgSU5QTEFDRV9BREQKLSAgICAgICAgICAgICAxNiBTVE9SRV9OQU1FICAgICAgICAgICAgICAgMCAoeCkKLSAgICAgICAgICAgICAxOSBKVU1QX0FCU09MVVRFICAgICAgICAgICAgOQotICAgICAgICAgICAgIDIyIFBPUF9CTE9DSwotICAgICAgICA+PiAgIDIzIExPQURfQ09OU1QgICAgICAgICAgICAgICAyIChOb25lKQotICAgICAgICAgICAgIDI2IFJFVFVSTl9WQUxVRQorICAzICAgICA+PiAgICA2IExPQURfTkFNRSAgICAgICAgICAgICAgICAwICh4KQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgIDEwIElOUExBQ0VfQURECisgICAgICAgICAgICAgMTIgU1RPUkVfTkFNRSAgICAgICAgICAgICAgIDAgKHgpCisgICAgICAgICAgICAgMTQgSlVNUF9BQlNPTFVURSAgICAgICAgICAgIDYKKyAgICAgICAgICAgICAxNiBQT1BfQkxPQ0sKKyAgICAgICAgPj4gICAxOCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoTm9uZSkKKyAgICAgICAgICAgICAyMCBSRVRVUk5fVkFMVUUKICIiIgogCiBkaXNfdHJhY2ViYWNrID0gIiIiXAotJTNkICAgICAgICAgICAwIFNFVFVQX0VYQ0VQVCAgICAgICAgICAgIDEyICh0byAxNSkKKyUzZCAgICAgICAgICAgMCBTRVRVUF9FWENFUFQgICAgICAgICAgICAxMiAodG8gMTQpCiAKLSUzZCAgICAgICAgICAgMyBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoMSkKLSAgICAgICAgICAgICAgNiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoMCkKLSAgICAtLT4gICAgICAgOSBCSU5BUllfVFJVRV9ESVZJREUKLSAgICAgICAgICAgICAxMCBQT1BfVE9QCi0gICAgICAgICAgICAgMTEgUE9QX0JMT0NLCi0gICAgICAgICAgICAgMTIgSlVNUF9GT1JXQVJEICAgICAgICAgICAgNDYgKHRvIDYxKQorJTNkICAgICAgICAgICAyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgxKQorICAgICAgICAgICAgICA0IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgwKQorICAgIC0tPiAgICAgICA2IEJJTkFSWV9UUlVFX0RJVklERQorICAgICAgICAgICAgICA4IFBPUF9UT1AKKyAgICAgICAgICAgICAxMCBQT1BfQkxPQ0sKKyAgICAgICAgICAgICAxMiBKVU1QX0ZPUldBUkQgICAgICAgICAgICA0MCAodG8gNTQpCiAKLSUzZCAgICAgPj4gICAxNSBEVVBfVE9QCislM2QgICAgID4+ICAgMTQgRFVQX1RPUAogICAgICAgICAgICAgIDE2IExPQURfR0xPQkFMICAgICAgICAgICAgICAwIChFeGNlcHRpb24pCi0gICAgICAgICAgICAgMTkgQ09NUEFSRV9PUCAgICAgICAgICAgICAgMTAgKGV4Y2VwdGlvbiBtYXRjaCkKLSAgICAgICAgICAgICAyMiBQT1BfSlVNUF9JRl9GQUxTRSAgICAgICA2MAotICAgICAgICAgICAgIDI1IFBPUF9UT1AKLSAgICAgICAgICAgICAyNiBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMCAoZSkKLSAgICAgICAgICAgICAyOSBQT1BfVE9QCi0gICAgICAgICAgICAgMzAgU0VUVVBfRklOQUxMWSAgICAgICAgICAgMTQgKHRvIDQ3KQorICAgICAgICAgICAgIDE4IENPTVBBUkVfT1AgICAgICAgICAgICAgIDEwIChleGNlcHRpb24gbWF0Y2gpCisgICAgICAgICAgICAgMjAgUE9QX0pVTVBfSUZfRkFMU0UgICAgICAgNTIKKyAgICAgICAgICAgICAyMiBQT1BfVE9QCisgICAgICAgICAgICAgMjQgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCisgICAgICAgICAgICAgMjYgUE9QX1RPUAorICAgICAgICAgICAgIDI4IFNFVFVQX0ZJTkFMTFkgICAgICAgICAgIDEyICh0byA0MikKIAotJTNkICAgICAgICAgIDMzIExPQURfRkFTVCAgICAgICAgICAgICAgICAwIChlKQotICAgICAgICAgICAgIDM2IExPQURfQVRUUiAgICAgICAgICAgICAgICAxIChfX3RyYWNlYmFja19fKQotICAgICAgICAgICAgIDM5IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAxICh0YikKLSAgICAgICAgICAgICA0MiBQT1BfQkxPQ0sKLSAgICAgICAgICAgICA0MyBQT1BfRVhDRVBUCi0gICAgICAgICAgICAgNDQgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgID4+ICAgNDcgTE9BRF9DT05TVCAgICAgICAgICAgICAgIDAgKE5vbmUpCi0gICAgICAgICAgICAgNTAgU1RPUkVfRkFTVCAgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgNTMgREVMRVRFX0ZBU1QgICAgICAgICAgICAgIDAgKGUpCi0gICAgICAgICAgICAgNTYgRU5EX0ZJTkFMTFkKLSAgICAgICAgICAgICA1NyBKVU1QX0ZPUldBUkQgICAgICAgICAgICAgMSAodG8gNjEpCi0gICAgICAgID4+ICAgNjAgRU5EX0ZJTkFMTFkKKyUzZCAgICAgICAgICAzMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMCAoZSkKKyAgICAgICAgICAgICAzMiBMT0FEX0FUVFIgICAgICAgICAgICAgICAgMSAoX190cmFjZWJhY2tfXykKKyAgICAgICAgICAgICAzNCBTVE9SRV9GQVNUICAgICAgICAgICAgICAgMSAodGIpCisgICAgICAgICAgICAgMzYgUE9QX0JMT0NLCisgICAgICAgICAgICAgMzggUE9QX0VYQ0VQVAorICAgICAgICAgICAgIDQwIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICA+PiAgIDQyIExPQURfQ09OU1QgICAgICAgICAgICAgICAwIChOb25lKQorICAgICAgICAgICAgIDQ0IFNUT1JFX0ZBU1QgICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDQ2IERFTEVURV9GQVNUICAgICAgICAgICAgICAwIChlKQorICAgICAgICAgICAgIDQ4IEVORF9GSU5BTExZCisgICAgICAgICAgICAgNTAgSlVNUF9GT1JXQVJEICAgICAgICAgICAgIDIgKHRvIDU0KQorICAgICAgICA+PiAgIDUyIEVORF9GSU5BTExZCiAKLSUzZCAgICAgPj4gICA2MSBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMSAodGIpCi0gICAgICAgICAgICAgNjQgUkVUVVJOX1ZBTFVFCislM2QgICAgID4+ICAgNTQgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDEgKHRiKQorICAgICAgICAgICAgIDU2IFJFVFVSTl9WQUxVRQogIiIiICUgKFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgMSwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDIsCiAgICAgICAgVFJBQ0VCQUNLX0NPREUuY29fZmlyc3RsaW5lbm8gKyAzLAogICAgICAgIFRSQUNFQkFDS19DT0RFLmNvX2ZpcnN0bGluZW5vICsgNCwKICAgICAgICBUUkFDRUJBQ0tfQ09ERS5jb19maXJzdGxpbmVubyArIDUpCiAKK2RlZiBfZnN0cmluZyhhLCBiLCBjLCBkKToKKyAgICByZXR1cm4gZid7YX0ge2I6NH0ge2Mhcn0ge2Qhcjo0fScKKworZGlzX2ZzdHJpbmcgPSAiIiJcCislM2QgICAgICAgICAgIDAgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDAgKGEpCisgICAgICAgICAgICAgIDIgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDAKKyAgICAgICAgICAgICAgNCBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMSAoJyAnKQorICAgICAgICAgICAgICA2IExPQURfRkFTVCAgICAgICAgICAgICAgICAxIChiKQorICAgICAgICAgICAgICA4IExPQURfQ09OU1QgICAgICAgICAgICAgICAyICgnNCcpCisgICAgICAgICAgICAgMTAgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDQgKHdpdGggZm9ybWF0KQorICAgICAgICAgICAgIDEyIExPQURfQ09OU1QgICAgICAgICAgICAgICAxICgnICcpCisgICAgICAgICAgICAgMTQgTE9BRF9GQVNUICAgICAgICAgICAgICAgIDIgKGMpCisgICAgICAgICAgICAgMTYgRk9STUFUX1ZBTFVFICAgICAgICAgICAgIDIgKHJlcHIpCisgICAgICAgICAgICAgMTggTE9BRF9DT05TVCAgICAgICAgICAgICAgIDEgKCcgJykKKyAgICAgICAgICAgICAyMCBMT0FEX0ZBU1QgICAgICAgICAgICAgICAgMyAoZCkKKyAgICAgICAgICAgICAyMiBMT0FEX0NPTlNUICAgICAgICAgICAgICAgMiAoJzQnKQorICAgICAgICAgICAgIDI0IEZPUk1BVF9WQUxVRSAgICAgICAgICAgICA2IChyZXByLCB3aXRoIGZvcm1hdCkKKyAgICAgICAgICAgICAyNiBCVUlMRF9TVFJJTkcgICAgICAgICAgICAgNworICAgICAgICAgICAgIDI4IFJFVFVSTl9WQUxVRQorIiIiICUgKF9mc3RyaW5nLl9fY29kZV9fLmNvX2ZpcnN0bGluZW5vICsgMSwpCisKIGRlZiBfZyh4KToKICAgICB5aWVsZCB4CiAKQEAgLTM0NSw2ICszOTgsNyBAQAogICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX3N0cihzZWxmKToKICAgICAgICAgc2VsZi5kb19kaXNhc3NlbWJseV90ZXN0KGV4cHJfc3RyLCBkaXNfZXhwcl9zdHIpCiAgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChzaW1wbGVfc3RtdF9zdHIsIGRpc19zaW1wbGVfc3RtdF9zdHIpCisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChhbm5vdF9zdG10X3N0ciwgZGlzX2Fubm90X3N0bXRfc3RyKQogICAgICAgICBzZWxmLmRvX2Rpc2Fzc2VtYmx5X3Rlc3QoY29tcG91bmRfc3RtdF9zdHIsIGRpc19jb21wb3VuZF9zdG10X3N0cikKIAogICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2J5dGVzKHNlbGYpOgpAQCAtMzcxLDYgKzQyNSw5IEBACiAgICAgICAgIGdlbl9kaXNhcyA9IHNlbGYuZ2V0X2Rpc2Fzc2VtYmx5KF9nKDEpKSAgIyBEaXNhc3NlbWJsZSBnZW5lcmF0b3IgaXRzZWxmCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2VuX2Rpc2FzLCBnZW5fZnVuY19kaXNhcykKIAorICAgIGRlZiB0ZXN0X2Rpc2Fzc2VtYmxlX2ZzdHJpbmcoc2VsZik6CisgICAgICAgIHNlbGYuZG9fZGlzYXNzZW1ibHlfdGVzdChfZnN0cmluZywgZGlzX2ZzdHJpbmcpCisKICAgICBkZWYgdGVzdF9kaXNfbm9uZShzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZGVsIHN5cy5sYXN0X3RyYWNlYmFjawpAQCAtNTQxLDcgKzU5OCw3IEBACiBLdy1vbmx5IGFyZ3VtZW50czogMAogTnVtYmVyIG9mIGxvY2FsczogIDIKIFN0YWNrIHNpemU6ICAgICAgICAxNwotRmxhZ3M6ICAgICAgICAgICAgIE9QVElNSVpFRCwgTkVXTE9DQUxTLCBHRU5FUkFUT1IsIE5PRlJFRSwgQ09ST1VUSU5FCitGbGFnczogICAgICAgICAgICAgT1BUSU1JWkVELCBORVdMT0NBTFMsIE5PRlJFRSwgQ09ST1VUSU5FCiBDb25zdGFudHM6CiAgICAwOiBOb25lCiAgICAxOiAxIiIiCkBAIC02NDksMTcxICs3MDYsMTY5IEBACiAKIEluc3RydWN0aW9uID0gZGlzLkluc3RydWN0aW9uCiBleHBlY3RlZF9vcGluZm9fb3V0ZXIgPSBbCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0xLCBhcmd2YWw9MywgYXJncmVwcj0nMycsIG9mZnNldD0wLCBzdGFydHNfbGluZT0yLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9Y29kZV9vYmplY3RfZiwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2YpLCBvZmZzZXQ9MTUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mJyIsIG9mZnNldD0xOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfQ0xPU1VSRScsIG9wY29kZT0xMzQsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0yLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTI3LCBzdGFydHNfbGluZT03LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTMzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9JycsIGFyZ3JlcHI9IicnIiwgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz02LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0zOSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX0xJU1QnLCBvcGNvZGU9MTAzLCBhcmc9MCwgYXJndmFsPTAsIGFyZ3JlcHI9JycsIG9mZnNldD00Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX01BUCcsIG9wY29kZT0xMDUsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9J0hlbGxvIHdvcmxkIScsIGFyZ3JlcHI9IidIZWxsbyB3b3JsZCEnIiwgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz03LCBhcmd2YWw9NywgYXJncmVwcj0nNyBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD01MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdmJywgYXJncmVwcj0nZicsIG9mZnNldD01NSwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0oMywgNCksIGFyZ3JlcHI9JygzLCA0KScsIG9mZnNldD0wLCBzdGFydHNfbGluZT0yLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCVUlMRF9UVVBMRScsIG9wY29kZT0xMDIsIGFyZz0yLCBhcmd2YWw9MiwgYXJncmVwcj0nJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9mLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfZiksIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYnLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZiciLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMiwgYXJnPTksIGFyZ3ZhbD05LCBhcmdyZXByPScnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTYsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTAsIGFyZ3ZhbD0nYScsIGFyZ3JlcHI9J2EnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9MjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTUsIGFyZ3ZhbD0nJywgYXJncmVwcj0iJyciLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0xLCBhcmdyZXByPScxJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTElTVCcsIG9wY29kZT0xMDMsIGFyZz0wLCBhcmd2YWw9MCwgYXJncmVwcj0nJywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfTUFQJywgb3Bjb2RlPTEwNSwgYXJnPTAsIGFyZ3ZhbD0wLCBhcmdyZXByPScnLCBvZmZzZXQ9MjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTcsIGFyZ3ZhbD0nSGVsbG8gd29ybGQhJywgYXJncmVwcj0iJ0hlbGxvIHdvcmxkISciLCBvZmZzZXQ9MzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTcsIGFyZ3ZhbD03LCBhcmdyZXByPScnLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTIsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPTgsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19mID0gWwotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTUsIGFyZ3JlcHI9JzUnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9MywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MiwgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MywgYXJndmFsPSdiJywgYXJncmVwcj0nYicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTAsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0xNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JVSUxEX1RVUExFJywgb3Bjb2RlPTEwMiwgYXJnPTQsIGFyZ3ZhbD00LCBhcmdyZXByPScnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD1jb2RlX29iamVjdF9pbm5lciwgYXJncmVwcj1yZXByKGNvZGVfb2JqZWN0X2lubmVyKSwgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz00LCBhcmd2YWw9J291dGVyLjxsb2NhbHM+LmYuPGxvY2Fscz4uaW5uZXInLCBhcmdyZXByPSInb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lciciLCBvZmZzZXQ9MjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdNQUtFX0NMT1NVUkUnLCBvcGNvZGU9MTM0LCBhcmc9MiwgYXJndmFsPTIsIGFyZ3JlcHI9JycsIG9mZnNldD0yNywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTMzLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTM5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTQ1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nNCBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD00OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NTEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTUyLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPSg1LCA2KSwgYXJncmVwcj0nKDUsIDYpJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MiwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0yLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DTE9TVVJFJywgb3Bjb2RlPTEzNSwgYXJnPTMsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ0xPU1VSRScsIG9wY29kZT0xMzUsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NMT1NVUkUnLCBvcGNvZGU9MTM1LCBhcmc9MSwgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD04LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQlVJTERfVFVQTEUnLCBvcGNvZGU9MTAyLCBhcmc9NCwgYXJndmFsPTQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPWNvZGVfb2JqZWN0X2lubmVyLCBhcmdyZXByPXJlcHIoY29kZV9vYmplY3RfaW5uZXIpLCBvZmZzZXQ9MTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTQsIGFyZ3ZhbD0nb3V0ZXIuPGxvY2Fscz4uZi48bG9jYWxzPi5pbm5lcicsIGFyZ3JlcHI9IidvdXRlci48bG9jYWxzPi5mLjxsb2NhbHM+LmlubmVyJyIsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J01BS0VfRlVOQ1RJT04nLCBvcGNvZGU9MTMyLCBhcmc9OSwgYXJndmFsPTksIGFyZ3JlcHI9JycsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MiwgYXJndmFsPSdpbm5lcicsIGFyZ3JlcHI9J2lubmVyJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MCwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0yLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTI0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2MnLCBhcmdyZXByPSdjJywgb2Zmc2V0PTI2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz00LCBhcmd2YWw9NCwgYXJncmVwcj0nJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0yLCBhcmd2YWw9J2lubmVyJywgYXJncmVwcj0naW5uZXInLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPTYsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTM2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19pbm5lciA9IFsKICAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MCwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MCwgYXJndmFsPSdhJywgYXJncmVwcj0nYScsIG9mZnNldD0zLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0xLCBhcmd2YWw9J2InLCBhcmdyZXByPSdiJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTIsIGFyZ3ZhbD0nYycsIGFyZ3JlcHI9J2MnLCBvZmZzZXQ9OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MywgYXJndmFsPSdkJywgYXJncmVwcj0nZCcsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2UnLCBhcmdyZXByPSdlJywgb2Zmc2V0PTE1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTEsIGFyZ3ZhbD0nZicsIGFyZ3JlcHI9J2YnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTYsIGFyZ3ZhbD02LCBhcmdyZXByPSc2IHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTI4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0wLCBhcmd2YWw9J2EnLCBhcmdyZXByPSdhJywgb2Zmc2V0PTIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0RFUkVGJywgb3Bjb2RlPTEzNiwgYXJnPTEsIGFyZ3ZhbD0nYicsIGFyZ3JlcHI9J2InLCBvZmZzZXQ9NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfREVSRUYnLCBvcGNvZGU9MTM2LCBhcmc9MiwgYXJndmFsPSdjJywgYXJncmVwcj0nYycsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9ERVJFRicsIG9wY29kZT0xMzYsIGFyZz0zLCBhcmd2YWw9J2QnLCBhcmdyZXByPSdkJywgb2Zmc2V0PTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdlJywgYXJncmVwcj0nZScsIG9mZnNldD0xMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0xLCBhcmd2YWw9J2YnLCBhcmdyZXByPSdmJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz02LCBhcmd2YWw9NiwgYXJncmVwcj0nJywgb2Zmc2V0PTE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCiBdCiAKIGV4cGVjdGVkX29waW5mb19qdW1weSA9IFsKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9NzEsIGFyZ3JlcHI9J3RvIDcxJywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3JhbmdlJywgYXJncmVwcj0ncmFuZ2UnLCBvZmZzZXQ9Mywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTEwLCBhcmdyZXByPScxMCcsIG9mZnNldD02LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD05LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nR0VUX0lURVInLCBvcGNvZGU9NjgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRk9SX0lURVInLCBvcGNvZGU9OTMsIGFyZz00NCwgYXJndmFsPTYwLCBhcmdyZXByPSd0byA2MCcsIG9mZnNldD0xMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE5LCBzdGFydHNfbGluZT00LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTI1LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTI5LCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0zMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0zNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTQ0LCBhcmd2YWw9NDQsIGFyZ3JlcHI9JycsIG9mZnNldD0zOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTQxLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NDQsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9NDcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9NTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMywgYXJndmFsPTEzLCBhcmdyZXByPScnLCBvZmZzZXQ9NTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Niwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTMsIGFyZ3ZhbD0xMywgYXJncmVwcj0nJywgb2Zmc2V0PTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD02MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTYxLCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD02Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9NzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTY4LCBhcmd2YWw9MTQyLCBhcmdyZXByPSd0byAxNDInLCBvZmZzZXQ9NzEsIHN0YXJ0c19saW5lPTExLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0ZBU1QnLCBvcGNvZGU9MTI0LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD03NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTMxLCBhcmd2YWw9MTMxLCBhcmdyZXByPScnLCBvZmZzZXQ9NzcsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9ODAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9ODMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD04OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTkwLCBzdGFydHNfbGluZT0xMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9OTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdJTlBMQUNFX1NVQlRSQUNUJywgb3Bjb2RlPTU2LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD05Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTQsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTMsIGFyZ3ZhbD02LCBhcmdyZXByPSc2Jywgb2Zmc2V0PTEwMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMTUsIGFyZ3ZhbD0xMTUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDksIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTE1LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTE1LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0xMTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTAsIGFyZ3ZhbD0nPCcsIGFyZ3JlcHI9JzwnLCBvZmZzZXQ9MTIxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9NzQsIGFyZ3ZhbD03NCwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNywgc3RhcnRzX2xpbmU9MTcsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0FCU09MVVRFJywgb3Bjb2RlPTExMywgYXJnPTc0LCBhcmd2YWw9NzQsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfQkxPQ0snLCBvcGNvZGU9ODcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMzUsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTEzOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTQxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRklOQUxMWScsIG9wY29kZT0xMjIsIGFyZz03MywgYXJndmFsPTIxOCwgYXJncmVwcj0ndG8gMjE4Jywgb2Zmc2V0PTE0Miwgc3RhcnRzX2xpbmU9MjAsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0VYQ0VQVCcsIG9wY29kZT0xMjEsIGFyZz0xMiwgYXJndmFsPTE2MCwgYXJncmVwcj0ndG8gMTYwJywgb2Zmc2V0PTE0NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NSwgYXJndmFsPTEsIGFyZ3JlcHI9JzEnLCBvZmZzZXQ9MTQ4LCBzdGFydHNfbGluZT0yMSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NywgYXJndmFsPTAsIGFyZ3JlcHI9JzAnLCBvZmZzZXQ9MTUxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQklOQVJZX1RSVUVfRElWSURFJywgb3Bjb2RlPTI3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE1NSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI4LCBhcmd2YWw9MTg4LCBhcmdyZXByPSd0byAxODgnLCBvZmZzZXQ9MTU3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRFVQX1RPUCcsIG9wY29kZT00LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjAsIHN0YXJ0c19saW5lPTIyLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0yLCBhcmd2YWw9J1plcm9EaXZpc2lvbkVycm9yJywgYXJncmVwcj0nWmVyb0RpdmlzaW9uRXJyb3InLCBvZmZzZXQ9MTYxLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ09NUEFSRV9PUCcsIG9wY29kZT0xMDcsIGFyZz0xMCwgYXJndmFsPSdleGNlcHRpb24gbWF0Y2gnLCBhcmdyZXByPSdleGNlcHRpb24gbWF0Y2gnLCBvZmZzZXQ9MTY0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0pVTVBfSUZfRkFMU0UnLCBvcGNvZGU9MTE0LCBhcmc9MTg3LCBhcmd2YWw9MTg3LCBhcmdyZXByPScnLCBvZmZzZXQ9MTY3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTE3Mywgc3RhcnRzX2xpbmU9MjMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTgsIGFyZ3ZhbD0nSGVyZSB3ZSBnbywgaGVyZSB3ZSBnbywgaGVyZSB3ZSBnby4uLicsIGFyZ3JlcHI9IidIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJyIsIG9mZnNldD0xNzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTE3OSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0VYQ0VQVCcsIG9wY29kZT04OSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTgzLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nSlVNUF9GT1JXQVJEJywgb3Bjb2RlPTExMCwgYXJnPTI3LCBhcmd2YWw9MjE0LCBhcmdyZXByPSd0byAyMTQnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4Nywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT0yNSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfV0lUSCcsIG9wY29kZT0xNDMsIGFyZz0xNywgYXJndmFsPTIxMSwgYXJncmVwcj0ndG8gMjExJywgb2Zmc2V0PTE5MSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MSwgYXJndmFsPSdkb2RneScsIGFyZ3JlcHI9J2RvZGd5Jywgb2Zmc2V0PTE5NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xOTcsIHN0YXJ0c19saW5lPTI2LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz05LCBhcmd2YWw9J05ldmVyIHJlYWNoIHRoaXMnLCBhcmdyZXByPSInTmV2ZXIgcmVhY2ggdGhpcyciLCBvZmZzZXQ9MjAwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nMSBwb3NpdGlvbmFsLCAwIGtleXdvcmQgcGFpcicsIG9mZnNldD0yMDMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIwNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjA3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0yMDgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjEyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIxMywgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjE0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTIxNSwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0yMTgsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0yMjEsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScxIHBvc2l0aW9uYWwsIDAga2V5d29yZCBwYWlyJywgb2Zmc2V0PTIyNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MjI3LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTIyOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAotICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MCwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9J05vbmUnLCBvZmZzZXQ9MjI5LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCi0gIEluc3RydWN0aW9uKG9wbmFtZT0nUkVUVVJOX1ZBTFVFJywgb3Bjb2RlPTgzLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMzIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9MT09QJywgb3Bjb2RlPTEyMCwgYXJnPTUyLCBhcmd2YWw9NTQsIGFyZ3JlcHI9J3RvIDU0Jywgb2Zmc2V0PTAsIHN0YXJ0c19saW5lPTMsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0wLCBhcmd2YWw9J3JhbmdlJywgYXJncmVwcj0ncmFuZ2UnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MSwgYXJndmFsPTEwLCBhcmdyZXByPScxMCcsIG9mZnNldD00LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdHRVRfSVRFUicsIG9wY29kZT02OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0ZPUl9JVEVSJywgb3Bjb2RlPTkzLCBhcmc9MzIsIGFyZ3ZhbD00NCwgYXJncmVwcj0ndG8gNDQnLCBvZmZzZXQ9MTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NUT1JFX0ZBU1QnLCBvcGNvZGU9MTI1LCBhcmc9MCwgYXJndmFsPSdpJywgYXJncmVwcj0naScsIG9mZnNldD0xMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xNCwgc3RhcnRzX2xpbmU9NCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0yMCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTIyLCBzdGFydHNfbGluZT01LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD0yNCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD0yNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTMyLCBhcmd2YWw9MzIsIGFyZ3JlcHI9JycsIG9mZnNldD0yOCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTMwLCBzdGFydHNfbGluZT02LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9MzIsIHN0YXJ0c19saW5lPTcsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9MywgYXJndmFsPTYsIGFyZ3JlcHI9JzYnLCBvZmZzZXQ9MzQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTQsIGFyZ3ZhbD0nPicsIGFyZ3JlcHI9Jz4nLCBvZmZzZXQ9MzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xMCwgYXJndmFsPTEwLCBhcmdyZXByPScnLCBvZmZzZXQ9MzgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCUkVBS19MT09QJywgb3Bjb2RlPTgwLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD00MCwgc3RhcnRzX2xpbmU9OCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9MTAsIGFyZ3ZhbD0xMCwgYXJncmVwcj0nJywgb2Zmc2V0PTQyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD00NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTQ2LCBzdGFydHNfbGluZT0xMCwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9NCwgYXJndmFsPSdJIGNhbiBoYXogZWxzZSBjbGF1c2U/JywgYXJncmVwcj0iJ0kgY2FuIGhheiBlbHNlIGNsYXVzZT8nIiwgb2Zmc2V0PTQ4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nQ0FMTF9GVU5DVElPTicsIG9wY29kZT0xMzEsIGFyZz0xLCBhcmd2YWw9MSwgYXJncmVwcj0nJywgb2Zmc2V0PTUwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD01Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX0xPT1AnLCBvcGNvZGU9MTIwLCBhcmc9NTIsIGFyZ3ZhbD0xMDgsIGFyZ3JlcHI9J3RvIDEwOCcsIG9mZnNldD01NCwgc3RhcnRzX2xpbmU9MTEsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTU2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz05OCwgYXJndmFsPTk4LCBhcmdyZXByPScnLCBvZmZzZXQ9NTgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9NjAsIHN0YXJ0c19saW5lPTEyLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9NjQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NjgsIHN0YXJ0c19saW5lPTEzLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD03MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0lOUExBQ0VfU1VCVFJBQ1QnLCBvcGNvZGU9NTYsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU1RPUkVfRkFTVCcsIG9wY29kZT0xMjUsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTc0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9GQVNUJywgb3Bjb2RlPTEyNCwgYXJnPTAsIGFyZ3ZhbD0naScsIGFyZ3JlcHI9J2knLCBvZmZzZXQ9NzYsIHN0YXJ0c19saW5lPTE0LCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0zLCBhcmd2YWw9NiwgYXJncmVwcj0nNicsIG9mZnNldD03OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9NCwgYXJndmFsPSc+JywgYXJncmVwcj0nPicsIG9mZnNldD04MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTg2LCBhcmd2YWw9ODYsIGFyZ3JlcHI9JycsIG9mZnNldD04Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTg0LCBzdGFydHNfbGluZT0xNSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTg2LCBzdGFydHNfbGluZT0xNiwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0yLCBhcmd2YWw9NCwgYXJncmVwcj0nNCcsIG9mZnNldD04OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NPTVBBUkVfT1AnLCBvcGNvZGU9MTA3LCBhcmc9MCwgYXJndmFsPSc8JywgYXJncmVwcj0nPCcsIG9mZnNldD05MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9KVU1QX0lGX0ZBTFNFJywgb3Bjb2RlPTExNCwgYXJnPTU2LCBhcmd2YWw9NTYsIGFyZ3JlcHI9JycsIG9mZnNldD05Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0JSRUFLX0xPT1AnLCBvcGNvZGU9ODAsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTk0LCBzdGFydHNfbGluZT0xNywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfQUJTT0xVVEUnLCBvcGNvZGU9MTEzLCBhcmc9NTYsIGFyZ3ZhbD01NiwgYXJncmVwcj0nJywgb2Zmc2V0PTk2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD05OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9HTE9CQUwnLCBvcGNvZGU9MTE2LCBhcmc9MSwgYXJndmFsPSdwcmludCcsIGFyZ3JlcHI9J3ByaW50Jywgb2Zmc2V0PTEwMCwgc3RhcnRzX2xpbmU9MTksIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTYsIGFyZ3ZhbD0nV2hvIGxldCBsb2xjYXR6IGludG8gdGhpcyB0ZXN0IHN1aXRlPycsIGFyZ3JlcHI9IidXaG8gbGV0IGxvbGNhdHogaW50byB0aGlzIHRlc3Qgc3VpdGU/JyIsIG9mZnNldD0xMDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTA0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMDYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTRVRVUF9GSU5BTExZJywgb3Bjb2RlPTEyMiwgYXJnPTcwLCBhcmd2YWw9MTgwLCBhcmdyZXByPSd0byAxODAnLCBvZmZzZXQ9MTA4LCBzdGFydHNfbGluZT0yMCwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nU0VUVVBfRVhDRVBUJywgb3Bjb2RlPTEyMSwgYXJnPTEyLCBhcmd2YWw9MTI0LCBhcmdyZXByPSd0byAxMjQnLCBvZmZzZXQ9MTEwLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz01LCBhcmd2YWw9MSwgYXJncmVwcj0nMScsIG9mZnNldD0xMTIsIHN0YXJ0c19saW5lPTIxLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz03LCBhcmd2YWw9MCwgYXJncmVwcj0nMCcsIG9mZnNldD0xMTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdCSU5BUllfVFJVRV9ESVZJREUnLCBvcGNvZGU9MjcsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTExNiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTE4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX0JMT0NLJywgb3Bjb2RlPTg3LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMjAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdKVU1QX0ZPUldBUkQnLCBvcGNvZGU9MTEwLCBhcmc9MjgsIGFyZ3ZhbD0xNTIsIGFyZ3JlcHI9J3RvIDE1MicsIG9mZnNldD0xMjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdEVVBfVE9QJywgb3Bjb2RlPTQsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEyNCwgc3RhcnRzX2xpbmU9MjIsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTIsIGFyZ3ZhbD0nWmVyb0RpdmlzaW9uRXJyb3InLCBhcmdyZXByPSdaZXJvRGl2aXNpb25FcnJvcicsIG9mZnNldD0xMjYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDT01QQVJFX09QJywgb3Bjb2RlPTEwNywgYXJnPTEwLCBhcmd2YWw9J2V4Y2VwdGlvbiBtYXRjaCcsIGFyZ3JlcHI9J2V4Y2VwdGlvbiBtYXRjaCcsIG9mZnNldD0xMjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfSlVNUF9JRl9GQUxTRScsIG9wY29kZT0xMTQsIGFyZz0xNTAsIGFyZ3ZhbD0xNTAsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTEzMiwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9UT1AnLCBvcGNvZGU9MSwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTM0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xMzYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTM4LCBzdGFydHNfbGluZT0yMywgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OCwgYXJndmFsPSdIZXJlIHdlIGdvLCBoZXJlIHdlIGdvLCBoZXJlIHdlIGdvLi4uJywgYXJncmVwcj0iJ0hlcmUgd2UgZ28sIGhlcmUgd2UgZ28sIGhlcmUgd2UgZ28uLi4nIiwgb2Zmc2V0PTE0MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xNDIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9FWENFUFQnLCBvcGNvZGU9ODksIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE0Niwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0pVTVBfRk9SV0FSRCcsIG9wY29kZT0xMTAsIGFyZz0yNiwgYXJndmFsPTE3NiwgYXJncmVwcj0ndG8gMTc2Jywgb2Zmc2V0PTE0OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0VORF9GSU5BTExZJywgb3Bjb2RlPTg4LCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xNTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfRkFTVCcsIG9wY29kZT0xMjQsIGFyZz0wLCBhcmd2YWw9J2knLCBhcmdyZXByPSdpJywgb2Zmc2V0PTE1Miwgc3RhcnRzX2xpbmU9MjUsIGlzX2p1bXBfdGFyZ2V0PVRydWUpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1NFVFVQX1dJVEgnLCBvcGNvZGU9MTQzLCBhcmc9MTQsIGFyZ3ZhbD0xNzAsIGFyZ3JlcHI9J3RvIDE3MCcsIG9mZnNldD0xNTQsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdTVE9SRV9GQVNUJywgb3Bjb2RlPTEyNSwgYXJnPTEsIGFyZ3ZhbD0nZG9kZ3knLCBhcmdyZXByPSdkb2RneScsIG9mZnNldD0xNTYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0dMT0JBTCcsIG9wY29kZT0xMTYsIGFyZz0xLCBhcmd2YWw9J3ByaW50JywgYXJncmVwcj0ncHJpbnQnLCBvZmZzZXQ9MTU4LCBzdGFydHNfbGluZT0yNiwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfQ09OU1QnLCBvcGNvZGU9MTAwLCBhcmc9OSwgYXJndmFsPSdOZXZlciByZWFjaCB0aGlzJywgYXJncmVwcj0iJ05ldmVyIHJlYWNoIHRoaXMnIiwgb2Zmc2V0PTE2MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0NBTExfRlVOQ1RJT04nLCBvcGNvZGU9MTMxLCBhcmc9MSwgYXJndmFsPTEsIGFyZ3JlcHI9JycsIG9mZnNldD0xNjIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdQT1BfVE9QJywgb3Bjb2RlPTEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE2NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTY2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xNjgsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdXSVRIX0NMRUFOVVBfU1RBUlQnLCBvcGNvZGU9ODEsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3MCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9VHJ1ZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nV0lUSF9DTEVBTlVQX0ZJTklTSCcsIG9wY29kZT04MiwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTcyLCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nRU5EX0ZJTkFMTFknLCBvcGNvZGU9ODgsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE3NCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J1BPUF9CTE9DSycsIG9wY29kZT04NywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTc2LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTAsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPSdOb25lJywgb2Zmc2V0PTE3OCwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAorICBJbnN0cnVjdGlvbihvcG5hbWU9J0xPQURfR0xPQkFMJywgb3Bjb2RlPTExNiwgYXJnPTEsIGFyZ3ZhbD0ncHJpbnQnLCBhcmdyZXByPSdwcmludCcsIG9mZnNldD0xODAsIHN0YXJ0c19saW5lPTI4LCBpc19qdW1wX3RhcmdldD1UcnVlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdMT0FEX0NPTlNUJywgb3Bjb2RlPTEwMCwgYXJnPTEwLCBhcmd2YWw9Ik9LLCBub3cgd2UncmUgZG9uZSIsIGFyZ3JlcHI9JyJPSywgbm93IHdlXCdyZSBkb25lIicsIG9mZnNldD0xODIsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdDQUxMX0ZVTkNUSU9OJywgb3Bjb2RlPTEzMSwgYXJnPTEsIGFyZ3ZhbD0xLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg0LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nUE9QX1RPUCcsIG9wY29kZT0xLCBhcmc9Tm9uZSwgYXJndmFsPU5vbmUsIGFyZ3JlcHI9JycsIG9mZnNldD0xODYsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdFTkRfRklOQUxMWScsIG9wY29kZT04OCwgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9MTg4LCBzdGFydHNfbGluZT1Ob25lLCBpc19qdW1wX3RhcmdldD1GYWxzZSksCisgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0xOTAsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKKyAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTE5Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpLAogXQogCiAjIE9uZSBsYXN0IHBpZWNlIG9mIGluc3BlY3QgZm9kZGVyIHRvIGNoZWNrIHRoZSBkZWZhdWx0IGxpbmUgbnVtYmVyIGhhbmRsaW5nCiBkZWYgc2ltcGxlKCk6IHBhc3MKIGV4cGVjdGVkX29waW5mb19zaW1wbGUgPSBbCiAgIEluc3RydWN0aW9uKG9wbmFtZT0nTE9BRF9DT05TVCcsIG9wY29kZT0xMDAsIGFyZz0wLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nTm9uZScsIG9mZnNldD0wLCBzdGFydHNfbGluZT1zaW1wbGUuX19jb2RlX18uY29fZmlyc3RsaW5lbm8sIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKSwKLSAgSW5zdHJ1Y3Rpb24ob3BuYW1lPSdSRVRVUk5fVkFMVUUnLCBvcGNvZGU9ODMsIGFyZz1Ob25lLCBhcmd2YWw9Tm9uZSwgYXJncmVwcj0nJywgb2Zmc2V0PTMsIHN0YXJ0c19saW5lPU5vbmUsIGlzX2p1bXBfdGFyZ2V0PUZhbHNlKQorICBJbnN0cnVjdGlvbihvcG5hbWU9J1JFVFVSTl9WQUxVRScsIG9wY29kZT04MywgYXJnPU5vbmUsIGFyZ3ZhbD1Ob25lLCBhcmdyZXByPScnLCBvZmZzZXQ9Miwgc3RhcnRzX2xpbmU9Tm9uZSwgaXNfanVtcF90YXJnZXQ9RmFsc2UpCiBdCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9kb2N0ZXN0LnB5CmluZGV4IDMzMTYzYjkuLjIyNThjNmIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZG9jdGVzdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2RvY3Rlc3QucHkKQEAgLTI5MSw3ICsyOTEsNyBAQAogICAgIC4uLgogICAgIC4uLiBOb24tZXhhbXBsZSB0ZXh0LgogICAgIC4uLgotICAgIC4uLiAgICAgPj4+IHByaW50KCdhbm90aGVyXGV4YW1wbGUnKQorICAgIC4uLiAgICAgPj4+IHByaW50KCdhbm90aGVyXFxleGFtcGxlJykKICAgICAuLi4gICAgIGFub3RoZXIKICAgICAuLi4gICAgIGV4YW1wbGUKICAgICAuLi4gJycnCkBAIC0xODc2LDcgKzE4NzYsNiBAQAogICAgICAgICBUbyBkZW1vbnN0cmF0ZSB0aGlzLCB3ZSdsbCBjcmVhdGUgYSBmYWtlIHN0YW5kYXJkIGlucHV0IHRoYXQKICAgICAgICAgY2FwdHVyZXMgb3VyIGRlYnVnZ2VyIGlucHV0OgogCi0gICAgICAgICAgPj4+IGltcG9ydCB0ZW1wZmlsZQogICAgICAgICAgID4+PiByZWFsX3N0ZGluID0gc3lzLnN0ZGluCiAgICAgICAgICAgPj4+IHN5cy5zdGRpbiA9IF9GYWtlSW5wdXQoWwogICAgICAgICAgIC4uLiAgICAncHJpbnQoeCknLCAgIyBwcmludCBkYXRhIGRlZmluZWQgYnkgdGhlIGV4YW1wbGUKQEAgLTE5MTcsNyArMTkxNiw3IEBACiAgICAgICAgICAgLi4uIGZpbmFsbHk6CiAgICAgICAgICAgLi4uICAgICBzeXMuc3RkaW4gPSByZWFsX3N0ZGluCiAgICAgICAgICAgLS1SZXR1cm4tLQotICAgICAgICAgID4gPGRvY3Rlc3QgdGVzdC50ZXN0X2RvY3Rlc3QudGVzdF9wZGJfc2V0X3RyYWNlWzhdPigzKWNhbGxzX3NldF90cmFjZSgpLT5Ob25lCisgICAgICAgICAgPiA8ZG9jdGVzdCB0ZXN0LnRlc3RfZG9jdGVzdC50ZXN0X3BkYl9zZXRfdHJhY2VbN10+KDMpY2FsbHNfc2V0X3RyYWNlKCktPk5vbmUKICAgICAgICAgICAtPiBpbXBvcnQgcGRiOyBwZGIuc2V0X3RyYWNlKCkKICAgICAgICAgICAoUGRiKSBwcmludCh5KQogICAgICAgICAgIDIKQEAgLTI3OTgsNyArMjc5Nyw2IEBACiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIiAgICAgICAnYWJjIGRlZidcbiIpCiAgICAgLi4uICAgICAgICAgXyA9IGYud3JpdGUoIlxuIikKICAgICAuLi4gICAgICAgICBfID0gZi53cml0ZSgnICAgXCJcIlwiXG4nKQotICAgIC4uLiAgICAgaW1wb3J0IHNodXRpbAogICAgIC4uLiAgICAgcmMxLCBvdXQxLCBlcnIxID0gc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX2ZhaWx1cmUoCiAgICAgLi4uICAgICAgICAgICAgICctbScsICdkb2N0ZXN0JywgZm4sIGZuMikKICAgICAuLi4gICAgIHJjMiwgb3V0MiwgZXJyMiA9IHNjcmlwdF9oZWxwZXIuYXNzZXJ0X3B5dGhvbl9vaygKQEAgLTI5NDIsMTIgKzI5NDAsMTEgQEAKIGRlZiB0ZXN0X21haW4oKToKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGluIGRvY3Rlc3QgaXRzZWxmOgogICAgIHJldCA9IHN1cHBvcnQucnVuX2RvY3Rlc3QoZG9jdGVzdCwgdmVyYm9zaXR5PVRydWUpCisKICAgICAjIENoZWNrIHRoZSBkb2N0ZXN0IGNhc2VzIGRlZmluZWQgaGVyZToKICAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZG9jdGVzdAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF9kb2N0ZXN0LCB2ZXJib3NpdHk9VHJ1ZSkKIAotaW1wb3J0IHN5cywgcmUsIGlvCi0KIGRlZiB0ZXN0X2NvdmVyYWdlKGNvdmVyZGlyKToKICAgICB0cmFjZSA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgndHJhY2UnKQogICAgIHRyYWNlciA9IHRyYWNlLlRyYWNlKGlnbm9yZWRpcnM9W3N5cy5iYXNlX3ByZWZpeCwgc3lzLmJhc2VfZXhlY19wcmVmaXgsXSwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5IGIvTGliL3Rlc3QvdGVzdF9kdHJhY2UucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2EyMzliMwotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZHRyYWNlLnB5CkBAIC0wLDAgKzEsMTc4IEBACitpbXBvcnQgZGlzCitpbXBvcnQgb3MucGF0aAoraW1wb3J0IHJlCitpbXBvcnQgc3VicHJvY2VzcworaW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBydW5fdW5pdHRlc3QKKworCitkZWYgYWJzcGF0aChmaWxlbmFtZSk6CisgICAgcmV0dXJuIG9zLnBhdGguYWJzcGF0aChmaW5kZmlsZShmaWxlbmFtZSwgc3ViZGlyPSJkdHJhY2VkYXRhIikpCisKKworZGVmIG5vcm1hbGl6ZV90cmFjZV9vdXRwdXQob3V0cHV0KToKKyAgICAiIiJOb3JtYWxpemUgRFRyYWNlIG91dHB1dCBmb3IgY29tcGFyaXNvbi4KKworICAgIERUcmFjZSBrZWVwcyBhIHBlci1DUFUgYnVmZmVyLCBhbmQgd2hlbiBzaG93aW5nIHRoZSBmaXJlZCBwcm9iZXMsIGJ1ZmZlcnMKKyAgICBhcmUgY29uY2F0ZW5hdGVkLiBTbyBpZiB0aGUgb3BlcmF0aW5nIHN5c3RlbSBtb3ZlcyBvdXIgdGhyZWFkIGFyb3VuZCwgdGhlCisgICAgc3RyYWlnaHQgcmVzdWx0IGNhbiBiZSAibm9uLWNhdXNhbCIuIFNvIHdlIGFkZCB0aW1lc3RhbXBzIHRvIHRoZSBwcm9iZQorICAgIGZpcmluZywgc29ydCBieSB0aGF0IGZpZWxkLCB0aGVuIHN0cmlwIGl0IGZyb20gdGhlIG91dHB1dCIiIgorCisgICAgIyBXaGVuIGNvbXBpbGluZyB3aXRoICctLXdpdGgtcHlkZWJ1ZycsIHN0cmlwICdbIyByZWZzXScgZGVidWcgb3V0cHV0LgorICAgIG91dHB1dCA9IHJlLnN1YihyIlxbWzAtOV0rIHJlZnNcXSIsICIiLCBvdXRwdXQpCisgICAgdHJ5OgorICAgICAgICByZXN1bHQgPSBbCisgICAgICAgICAgICByb3cuc3BsaXQoIlx0IikKKyAgICAgICAgICAgIGZvciByb3cgaW4gb3V0cHV0LnNwbGl0bGluZXMoKQorICAgICAgICAgICAgaWYgcm93IGFuZCBub3Qgcm93LnN0YXJ0c3dpdGgoJyMnKQorICAgICAgICBdCisgICAgICAgIHJlc3VsdC5zb3J0KGtleT1sYW1iZGEgcm93OiBpbnQocm93WzBdKSkKKyAgICAgICAgcmVzdWx0ID0gW3Jvd1sxXSBmb3Igcm93IGluIHJlc3VsdF0KKyAgICAgICAgcmV0dXJuICJcbiIuam9pbihyZXN1bHQpCisgICAgZXhjZXB0IChJbmRleEVycm9yLCBWYWx1ZUVycm9yKToKKyAgICAgICAgcmFpc2UgQXNzZXJ0aW9uRXJyb3IoCisgICAgICAgICAgICAidHJhY2VyIHByb2R1Y2VkIHVucGFyc2VhYmxlIG91dHB1dDpcbnt9Ii5mb3JtYXQob3V0cHV0KQorICAgICAgICApCisKKworY2xhc3MgVHJhY2VCYWNrZW5kOgorICAgIEVYVEVOU0lPTiA9IE5vbmUKKyAgICBDT01NQU5EID0gTm9uZQorICAgIENPTU1BTkRfQVJHUyA9IFtdCisKKyAgICBkZWYgcnVuX2Nhc2Uoc2VsZiwgbmFtZSwgb3B0aW1pemVfcHl0aG9uPU5vbmUpOgorICAgICAgICBhY3R1YWxfb3V0cHV0ID0gbm9ybWFsaXplX3RyYWNlX291dHB1dChzZWxmLnRyYWNlX3B5dGhvbigKKyAgICAgICAgICAgIHNjcmlwdF9maWxlPWFic3BhdGgobmFtZSArIHNlbGYuRVhURU5TSU9OKSwKKyAgICAgICAgICAgIHB5dGhvbl9maWxlPWFic3BhdGgobmFtZSArICIucHkiKSwKKyAgICAgICAgICAgIG9wdGltaXplX3B5dGhvbj1vcHRpbWl6ZV9weXRob24pKQorCisgICAgICAgIHdpdGggb3BlbihhYnNwYXRoKG5hbWUgKyBzZWxmLkVYVEVOU0lPTiArICIuZXhwZWN0ZWQiKSkgYXMgZjoKKyAgICAgICAgICAgIGV4cGVjdGVkX291dHB1dCA9IGYucmVhZCgpLnJzdHJpcCgpCisKKyAgICAgICAgcmV0dXJuIChleHBlY3RlZF9vdXRwdXQsIGFjdHVhbF9vdXRwdXQpCisKKyAgICBkZWYgZ2VuZXJhdGVfdHJhY2VfY29tbWFuZChzZWxmLCBzY3JpcHRfZmlsZSwgc3ViY29tbWFuZD1Ob25lKToKKyAgICAgICAgY29tbWFuZCA9IHNlbGYuQ09NTUFORCArIFtzY3JpcHRfZmlsZV0KKyAgICAgICAgaWYgc3ViY29tbWFuZDoKKyAgICAgICAgICAgIGNvbW1hbmQgKz0gWyItYyIsIHN1YmNvbW1hbmRdCisgICAgICAgIHJldHVybiBjb21tYW5kCisKKyAgICBkZWYgdHJhY2Uoc2VsZiwgc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQ9Tm9uZSk6CisgICAgICAgIGNvbW1hbmQgPSBzZWxmLmdlbmVyYXRlX3RyYWNlX2NvbW1hbmQoc2NyaXB0X2ZpbGUsIHN1YmNvbW1hbmQpCisgICAgICAgIHN0ZG91dCwgXyA9IHN1YnByb2Nlc3MuUG9wZW4oY29tbWFuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkuY29tbXVuaWNhdGUoKQorICAgICAgICByZXR1cm4gc3Rkb3V0CisKKyAgICBkZWYgdHJhY2VfcHl0aG9uKHNlbGYsIHNjcmlwdF9maWxlLCBweXRob25fZmlsZSwgb3B0aW1pemVfcHl0aG9uPU5vbmUpOgorICAgICAgICBweXRob25fZmxhZ3MgPSBbXQorICAgICAgICBpZiBvcHRpbWl6ZV9weXRob246CisgICAgICAgICAgICBweXRob25fZmxhZ3MuZXh0ZW5kKFsiLU8iXSAqIG9wdGltaXplX3B5dGhvbikKKyAgICAgICAgc3ViY29tbWFuZCA9ICIgIi5qb2luKFtzeXMuZXhlY3V0YWJsZV0gKyBweXRob25fZmxhZ3MgKyBbcHl0aG9uX2ZpbGVdKQorICAgICAgICByZXR1cm4gc2VsZi50cmFjZShzY3JpcHRfZmlsZSwgc3ViY29tbWFuZCkKKworICAgIGRlZiBhc3NlcnRfdXNhYmxlKHNlbGYpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvdXRwdXQgPSBzZWxmLnRyYWNlKGFic3BhdGgoImFzc2VydF91c2FibGUiICsgc2VsZi5FWFRFTlNJT04pKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnN0cmlwKCkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGZuZmU6CisgICAgICAgICAgICBvdXRwdXQgPSBzdHIoZm5mZSkKKyAgICAgICAgaWYgb3V0cHV0ICE9ICJwcm9iZTogc3VjY2VzcyI6CisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgKKyAgICAgICAgICAgICAgICAie30oMSkgZmFpbGVkOiB7fSIuZm9ybWF0KHNlbGYuQ09NTUFORFswXSwgb3V0cHV0KQorICAgICAgICAgICAgKQorCisKK2NsYXNzIERUcmFjZUJhY2tlbmQoVHJhY2VCYWNrZW5kKToKKyAgICBFWFRFTlNJT04gPSAiLmQiCisgICAgQ09NTUFORCA9IFsiZHRyYWNlIiwgIi1xIiwgIi1zIl0KKworCitjbGFzcyBTeXN0ZW1UYXBCYWNrZW5kKFRyYWNlQmFja2VuZCk6CisgICAgRVhURU5TSU9OID0gIi5zdHAiCisgICAgQ09NTUFORCA9IFsic3RhcCIsICItZyJdCisKKworY2xhc3MgVHJhY2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB1bml0dGVzdC5UZXN0Q2FzZSBvcHRpb25zCisgICAgbWF4RGlmZiA9IE5vbmUKKworICAgICMgVHJhY2VUZXN0cyBvcHRpb25zCisgICAgYmFja2VuZCA9IE5vbmUKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhzZWxmKToKKyAgICAgICAgc2VsZi5iYWNrZW5kLmFzc2VydF91c2FibGUoKQorCisgICAgZGVmIHJ1bl9jYXNlKHNlbGYsIG5hbWUpOgorICAgICAgICBhY3R1YWxfb3V0cHV0LCBleHBlY3RlZF9vdXRwdXQgPSBzZWxmLmJhY2tlbmQucnVuX2Nhc2UoCisgICAgICAgICAgICBuYW1lLCBvcHRpbWl6ZV9weXRob249c2VsZi5vcHRpbWl6ZV9weXRob24pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsX291dHB1dCwgZXhwZWN0ZWRfb3V0cHV0KQorCisgICAgZGVmIHRlc3RfZnVuY3Rpb25fZW50cnlfcmV0dXJuKHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jYXNlKCJjYWxsX3N0YWNrIikKKworICAgIGRlZiB0ZXN0X3ZlcmlmeV9jYWxsX29wY29kZXMoc2VsZik6CisgICAgICAgICIiIkVuc3VyZSBvdXIgY2FsbCBzdGFjayB0ZXN0IGhpdHMgYWxsIGZ1bmN0aW9uIGNhbGwgb3Bjb2RlcyIiIgorCisgICAgICAgIG9wY29kZXMgPSBzZXQoWyJDQUxMX0ZVTkNUSU9OIiwgIkNBTExfRlVOQ1RJT05fRVgiLCAiQ0FMTF9GVU5DVElPTl9LVyJdKQorCisgICAgICAgIHdpdGggb3BlbihhYnNwYXRoKCJjYWxsX3N0YWNrLnB5IikpIGFzIGY6CisgICAgICAgICAgICBjb2RlX3N0cmluZyA9IGYucmVhZCgpCisKKyAgICAgICAgZGVmIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoZnVuY25hbWUpOgorICAgICAgICAgICAgIyBSZWNvbXBpbGUgd2l0aCBhcHByb3ByaWF0ZSBvcHRpbWl6YXRpb24gc2V0dGluZworICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUoc291cmNlPWNvZGVfc3RyaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWU9IjxzdHJpbmc+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIG1vZGU9ImV4ZWMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW1pemU9c2VsZi5vcHRpbWl6ZV9weXRob24pCisKKyAgICAgICAgICAgIGZvciBjIGluIGNvZGUuY29fY29uc3RzOgorICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoYywgdHlwZXMuQ29kZVR5cGUpIGFuZCBjLmNvX25hbWUgPT0gZnVuY25hbWU6CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBkaXMuZ2V0X2luc3RydWN0aW9ucyhjKQorICAgICAgICAgICAgcmV0dXJuIFtdCisKKyAgICAgICAgZm9yIGluc3RydWN0aW9uIGluIGdldF9mdW5jdGlvbl9pbnN0cnVjdGlvbnMoJ3N0YXJ0Jyk6CisgICAgICAgICAgICBvcGNvZGVzLmRpc2NhcmQoaW5zdHJ1Y3Rpb24ub3BuYW1lKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG9wY29kZXMpCisKKyAgICBkZWYgdGVzdF9nYyhzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgiZ2MiKQorCisgICAgZGVmIHRlc3RfbGluZShzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2FzZSgibGluZSIpCisKKworY2xhc3MgRFRyYWNlTm9ybWFsVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IERUcmFjZUJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDAKKworCitjbGFzcyBEVHJhY2VPcHRpbWl6ZWRUZXN0cyhUcmFjZVRlc3RzKToKKyAgICBiYWNrZW5kID0gRFRyYWNlQmFja2VuZCgpCisgICAgb3B0aW1pemVfcHl0aG9uID0gMgorCisKK2NsYXNzIFN5c3RlbVRhcE5vcm1hbFRlc3RzKFRyYWNlVGVzdHMpOgorICAgIGJhY2tlbmQgPSBTeXN0ZW1UYXBCYWNrZW5kKCkKKyAgICBvcHRpbWl6ZV9weXRob24gPSAwCisKKworY2xhc3MgU3lzdGVtVGFwT3B0aW1pemVkVGVzdHMoVHJhY2VUZXN0cyk6CisgICAgYmFja2VuZCA9IFN5c3RlbVRhcEJhY2tlbmQoKQorICAgIG9wdGltaXplX3B5dGhvbiA9IDIKKworCitkZWYgdGVzdF9tYWluKCk6CisgICAgcnVuX3VuaXR0ZXN0KERUcmFjZU5vcm1hbFRlc3RzLCBEVHJhY2VPcHRpbWl6ZWRUZXN0cywgU3lzdGVtVGFwTm9ybWFsVGVzdHMsCisgICAgICAgICAgICAgICAgIFN5c3RlbVRhcE9wdGltaXplZFRlc3RzKQorCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdGVzdF9tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weSBiL0xpYi90ZXN0L3Rlc3RfZHluYW1pYy5weQppbmRleCA1MDgwZWM5Li4zYWUwOTBmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2R5bmFtaWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9keW5hbWljLnB5CkBAIC0xLDcgKzEsNiBAQAogIyBUZXN0IHRoZSBtb3N0IGR5bmFtaWMgY29ybmVyIGNhc2VzIG9mIFB5dGhvbidzIHJ1bnRpbWUgc2VtYW50aWNzLgogCiBpbXBvcnQgYnVpbHRpbnMKLWltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHN3YXBfaXRlbSwgc3dhcF9hdHRyCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5IGIvTGliL3Rlc3QvdGVzdF9laW50ci5weQppbmRleCBhYWJhZDgzLi4yNWY4NmQzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VpbnRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZWludHIucHkKQEAgLTEsNyArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzaWduYWwKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC0xNiwxNCArMTQsOCBAQAogICAgICAgICAjIFJ1biB0aGUgdGVzdGVyIGluIGEgc3ViLXByb2Nlc3MsIHRvIG1ha2Ugc3VyZSB0aGVyZSBpcyBvbmx5IG9uZQogICAgICAgICAjIHRocmVhZCAoZm9yIHJlbGlhYmxlIHNpZ25hbCBkZWxpdmVyeSkuCiAgICAgICAgIHRlc3RlciA9IHN1cHBvcnQuZmluZGZpbGUoImVpbnRyX3Rlc3Rlci5weSIsIHN1YmRpcj0iZWludHJkYXRhIikKLQotICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCB0ZXN0ZXJdCi0gICAgICAgICAgICB3aXRoIHN1YnByb2Nlc3MuUG9wZW4oYXJncykgYXMgcHJvYzoKLSAgICAgICAgICAgICAgICBleGl0Y29kZSA9IHByb2Mud2FpdCgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCAwKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKHRlc3RlcikKKyAgICAgICAgIyB1c2UgLXUgdG8gdHJ5IHRvIGdldCB0aGUgZnVsbCBvdXRwdXQgaWYgdGhlIHRlc3QgaGFuZ3Mgb3IgY3Jhc2gKKyAgICAgICAgc2NyaXB0X2hlbHBlci5hc3NlcnRfcHl0aG9uX29rKCItdSIsIHRlc3RlcikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvX19pbml0X18ucHkKaW5kZXggZDRhMDNlZS4uODg4NzUxZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL19faW5pdF9fLnB5CkBAIC0xLDUgKzEsNCBAQAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGVtYWlsCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfX2hlYWRlcl92YWx1ZV9wYXJzZXIucHkKaW5kZXggZjdhYzBlMy4uMjZlY2U2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X19oZWFkZXJfdmFsdWVfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9faGVhZGVyX3ZhbHVlX3BhcnNlci5weQpAQCAtNTgxLDcgKzU4MSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xdW90ZWRfcGFyZW5zKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X2dldF94KHBhcnNlci5nZXRfY29tbWVudCwKLSAgICAgICAgICAgICcoZm9vXCkgXChcKWJhciknLCAnKGZvb1wpIFwoXCliYXIpJywgJyAnLCBbXSwgJycsIFsnZm9vKSAoKWJhciddKQorICAgICAgICAgICAgcicoZm9vXCkgXChcKWJhciknLCByJyhmb29cKSBcKFwpYmFyKScsICcgJywgW10sICcnLCBbJ2ZvbykgKCliYXInXSkKIAogICAgIGRlZiB0ZXN0X2dldF9jb21tZW50X25vbl9wcmludGFibGUoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LApAQCAtNjI1LDcgKzYyNSw3IEBACiAKICAgICBkZWYgdGVzdF9nZXRfY29tbWVudF9xc19pbl9uZXN0ZWRfY29tbWVudChzZWxmKToKICAgICAgICAgY29tbWVudCA9IHNlbGYuX3Rlc3RfZ2V0X3gocGFyc2VyLmdldF9jb21tZW50LAotICAgICAgICAgICAgJyhmb28gKGJcKSkpJywgJyhmb28gKGJcKSkpJywgJyAnLCBbXSwgJycsIFsnZm9vIChiXCkpJ10pCisgICAgICAgICAgICByJyhmb28gKGJcKSkpJywgcicoZm9vIChiXCkpKScsICcgJywgW10sICcnLCBbcidmb28gKGJcKSknXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21tZW50WzJdLmNvbnRlbnQsICdiKScpCiAKICAgICAjIGdldF9jZndzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2FzaWFuX2NvZGVjcy5weQppbmRleCBmOWNkN2Q5Li4xZTBjYWVlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfYXNpYW5fY29kZWNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9hc2lhbl9jb2RlY3MucHkKQEAgLTMsNyArMyw2IEBACiAjIGVtYWlsIHBhY2thZ2UgdW5pdCB0ZXN0cyBmb3IgKG9wdGlvbmFsKSBBc2lhbiBjb2RlY3MKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgcnVuX3VuaXR0ZXN0CiAKIGZyb20gdGVzdC50ZXN0X2VtYWlsIGltcG9ydCBUZXN0RW1haWxCYXNlCiBmcm9tIGVtYWlsLmNoYXJzZXQgaW1wb3J0IENoYXJzZXQKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9lbWFpbC5weQppbmRleCBhNTNjYzliLi5kYWExMjg1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZW1haWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2VtYWlsLnB5CkBAIC0zMSw2ICszMSw3IEBACiBmcm9tIGVtYWlsLm1pbWUuYmFzZSBpbXBvcnQgTUlNRUJhc2UKIGZyb20gZW1haWwubWltZS5tZXNzYWdlIGltcG9ydCBNSU1FTWVzc2FnZQogZnJvbSBlbWFpbC5taW1lLm11bHRpcGFydCBpbXBvcnQgTUlNRU11bHRpcGFydAorZnJvbSBlbWFpbC5taW1lLm5vbm11bHRpcGFydCBpbXBvcnQgTUlNRU5vbk11bHRpcGFydAogZnJvbSBlbWFpbCBpbXBvcnQgdXRpbHMKIGZyb20gZW1haWwgaW1wb3J0IGVycm9ycwogZnJvbSBlbWFpbCBpbXBvcnQgZW5jb2RlcnMKQEAgLTIwNzcsNyArMjA3OCwxMyBAQAogLS09PT09PT09PT09PT09PT0wMDEyMzk0MTY0PT0tLSIiIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdldF9wYXlsb2FkKDApLmdldF9wYXlsb2FkKCksICdZWE5rWmc9PScpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9kZWZhdWx0X3BvbGljeShzZWxmKToKKyAgICAgICAgbSA9IE1JTUVCYXNlKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKQorICAgICAgICBzZWxmLmFzc2VydElzKG0ucG9saWN5LCBlbWFpbC5wb2xpY3kuY29tcGF0MzIpCiAKKyAgICBkZWYgdGVzdF9taW1lYmFzZV9jdXN0b21fcG9saWN5KHNlbGYpOgorICAgICAgICBtID0gTUlNRUJhc2UoJ211bHRpcGFydCcsICdtaXhlZCcsIHBvbGljeT1lbWFpbC5wb2xpY3kuZGVmYXVsdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCiAKICMgVGVzdCBzb21lIGJhZGx5IGZvcm1hdHRlZCBtZXNzYWdlcwogY2xhc3MgVGVzdE5vbkNvbmZvcm1hbnQoVGVzdEVtYWlsQmFzZSk6CkBAIC0yNjc5LDYgKzI2ODYsMTkgQEAKICAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtc2cuaXNfbXVsdGlwYXJ0KCkpCiAKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfZGVmYXVsdF9wb2xpY3koc2VsZik6CisgICAgICAgIG1zZyA9IE1JTUVNdWx0aXBhcnQoKQorICAgICAgICBtc2dbJ1RvJ10gPSAnYUBiLmNvbScKKyAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9hbGwoJ3RvJyksIFsnYUBiLmNvbScsICdjQGQuY29tJ10pCisKKyAgICBkZWYgdGVzdF9tdWx0aXBhcnRfY3VzdG9tX3BvbGljeShzZWxmKToKKyAgICAgICAgbXNnID0gTUlNRU11bHRpcGFydChwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgIG1zZ1snVG8nXSA9ICdhQGIuY29tJworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgbXNnWydUbyddID0gJ2NAZC5jb20nCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ1RoZXJlIG1heSBiZSBhdCBtb3N0IDEgVG8gaGVhZGVycyBpbiBhIG1lc3NhZ2UnKQogCiAjIEEgZ2VuZXJhbCB0ZXN0IG9mIHBhcnNlci0+bW9kZWwtPmdlbmVyYXRvciBpZGVtcG90ZW5jeS4gIElPVywgcmVhZCBhIG1lc3NhZ2UKICMgaW4sIHBhcnNlIGl0IGludG8gYSBtZXNzYWdlIG9iamVjdCB0cmVlLCB0aGVuIHdpdGhvdXQgdG91Y2hpbmcgdGhlIHRyZWUsCkBAIC0zMDMyLDcgKzMwNTIsNyBAQAogCiAgICAgZGVmIHRlc3RfZXNjYXBlX2JhY2tzbGFzaGVzKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgdXRpbHMuZm9ybWF0YWRkcigoJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCisgICAgICAgICAgICB1dGlscy5mb3JtYXRhZGRyKChyJ0FydGh1ciBcQmFja3NsYXNoXCBGb29iYXInLCAncGVyc29uQGRvbS5haW4nKSksCiAgICAgICAgICAgICByJyJBcnRodXIgXFxCYWNrc2xhc2hcXCBGb29iYXIiIDxwZXJzb25AZG9tLmFpbj4nKQogICAgICAgICBhID0gcidBcnRodXIgXEJhY2tzbGFzaFwgRm9vYmFyJwogICAgICAgICBiID0gJ3BlcnNvbkBkb20uYWluJwpAQCAtMzMyOCw2ICszMzQ4LDI3IEBACiAgICAgICAgIGcuZmxhdHRlbihtc2csIGxpbmVzZXA9J1xyXG4nKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgbXNndHh0KQogCisgICAgZGVmIHRlc3RfbWltZV9jbGFzc2VzX3BvbGljeV9hcmd1bWVudChzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnYXVkaW90ZXN0LmF1JywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBhdWRpb2RhdGEgPSBmcC5yZWFkKCkKKyAgICAgICAgd2l0aCBvcGVuZmlsZSgnUHlCYW5uZXIwNDguZ2lmJywgJ3JiJykgYXMgZnA6CisgICAgICAgICAgICBiaW5kYXRhID0gZnAucmVhZCgpCisgICAgICAgIGNsYXNzZXMgPSBbCisgICAgICAgICAgICAoTUlNRUFwcGxpY2F0aW9uLCAoJycsKSksCisgICAgICAgICAgICAoTUlNRUF1ZGlvLCAoYXVkaW9kYXRhLCkpLAorICAgICAgICAgICAgKE1JTUVJbWFnZSwgKGJpbmRhdGEsKSksCisgICAgICAgICAgICAoTUlNRU1lc3NhZ2UsIChNZXNzYWdlKCksKSksCisgICAgICAgICAgICAoTUlNRU5vbk11bHRpcGFydCwgKCdtdWx0aXBhcnQnLCAnbWl4ZWQnKSksCisgICAgICAgICAgICAoTUlNRVRleHQsICgnJywpKSwKKyAgICAgICAgXQorICAgICAgICBmb3IgY2xzLCBjb25zdHJ1Y3RvciBpbiBjbGFzc2VzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoY2xzPWNscy5fX25hbWVfXywgcG9saWN5PSdjb21wYXQzMicpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobS5wb2xpY3ksIGVtYWlsLnBvbGljeS5jb21wYXQzMikKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNscz1jbHMuX19uYW1lX18sIHBvbGljeT0nZGVmYXVsdCcpOgorICAgICAgICAgICAgICAgIG0gPSBjbHMoKmNvbnN0cnVjdG9yLCBwb2xpY3k9ZW1haWwucG9saWN5LmRlZmF1bHQpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhtLnBvbGljeSwgZW1haWwucG9saWN5LmRlZmF1bHQpCisKIAogIyBUZXN0IHRoZSBpdGVyYXRvci9nZW5lcmF0b3JzCiBjbGFzcyBUZXN0SXRlcmF0b3JzKFRlc3RFbWFpbEJhc2UpOgpAQCAtMzQzNiw3ICszNDc3LDYgQEAKIGNsYXNzIFRlc3RGZWVkUGFyc2VycyhUZXN0RW1haWxCYXNlKToKIAogICAgIGRlZiBwYXJzZShzZWxmLCBjaHVua3MpOgotICAgICAgICBmcm9tIGVtYWlsLmZlZWRwYXJzZXIgaW1wb3J0IEZlZWRQYXJzZXIKICAgICAgICAgZmVlZHBhcnNlciA9IEZlZWRQYXJzZXIoKQogICAgICAgICBmb3IgY2h1bmsgaW4gY2h1bmtzOgogICAgICAgICAgICAgZmVlZHBhcnNlci5mZWVkKGNodW5rKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9nZW5lcmF0b3IucHkKaW5kZXggYjFjYmNlMi4uN2M4ODc3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2dlbmVyYXRvci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfZ2VuZXJhdG9yLnB5CkBAIC0xNDMsNyArMTQzLDcgQEAKICAgICBkZWYgdGVzdF9zZXRfbWFuZ2xlX2Zyb21fdmlhX3BvbGljeShzZWxmKToKICAgICAgICAgc291cmNlID0gdGV4dHdyYXAuZGVkZW50KCIiIlwKICAgICAgICAgICAgIFN1YmplY3Q6IHRlc3QgdGhhdAotICAgICAgICAgICAgIGZyb20gaXMgbWFuZ2VsZCBpbiB0aGUgYm9keSEKKyAgICAgICAgICAgICBmcm9tIGlzIG1hbmdsZWQgaW4gdGhlIGJvZHkhCiAKICAgICAgICAgICAgIEZyb20gdGltZSB0byB0aW1lIEkgd3JpdGUgYSByaHltZS4KICAgICAgICAgICAgICIiIikKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9oZWFkZXJyZWdpc3RyeS5weQppbmRleCA1NWVjZGVhLi5hZjgzNmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfaGVhZGVycmVnaXN0cnkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X2hlYWRlcnJlZ2lzdHJ5LnB5CkBAIC0xLDcgKzEsNiBAQAogaW1wb3J0IGRhdGV0aW1lCiBpbXBvcnQgdGV4dHdyYXAKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHR5cGVzCiBmcm9tIGVtYWlsIGltcG9ydCBlcnJvcnMKIGZyb20gZW1haWwgaW1wb3J0IHBvbGljeQogZnJvbSBlbWFpbC5tZXNzYWdlIGltcG9ydCBNZXNzYWdlCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfbWVzc2FnZS5weSBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CmluZGV4IDQzNDUxNjIuLmYzYTU3ZGYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9tZXNzYWdlLnB5CkBAIC03NjQsNiArNzY0LDI2IEBACiAgICAgICAgIG0uc2V0X2NvbnRlbnQoY29udGVudF9tYW5hZ2VyPWNtKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ01JTUUtVmVyc2lvbiddLCAnMS4wJykKIAorICAgIGRlZiB0ZXN0X2FzX3N0cmluZ191c2VzX21heF9oZWFkZXJfbGVuZ3RoX2J5X2RlZmF1bHQoc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKCkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3RfYXNfc3RyaW5nX2FsbG93c19tYXhoZWFkZXJsZW4oc2VsZik6CisgICAgICAgIG0gPSBzZWxmLl9zdHJfbXNnKCdTdWJqZWN0OiBsb25nIGxpbmUnICsgJyBhYicqNTAgKyAnXG5cbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uYXNfc3RyaW5nKG1heGhlYWRlcmxlbj0wKS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5hc19zdHJpbmcobWF4aGVhZGVybGVuPTM0KS5zdHJpcCgpLnNwbGl0bGluZXMoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgNikKKworICAgIGRlZiB0ZXN0X3N0cl9kZWZhdWx0c190b19wb2xpY3lfbWF4X2xpbmVfbGVuZ3RoKHNlbGYpOgorICAgICAgICBtID0gc2VsZi5fc3RyX21zZygnU3ViamVjdDogbG9uZyBsaW5lJyArICcgYWInKjUwICsgJ1xuXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzdHIobSkuc3RyaXAoKS5zcGxpdGxpbmVzKCkpLCAzKQorCisgICAgZGVmIHRlc3Rfc3RyX2RlZmF1bHRzX3RvX3V0Zjgoc2VsZik6CisgICAgICAgIG0gPSBFbWFpbE1lc3NhZ2UoKQorICAgICAgICBtWydTdWJqZWN0J10gPSAndW5pY8O2ZGUnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKG0pLCAnU3ViamVjdDogdW5pY8O2ZGVcblxuJykKKwogCiBjbGFzcyBUZXN0TUlNRVBhcnQoVGVzdEVtYWlsTWVzc2FnZUJhc2UsIFRlc3RFbWFpbEJhc2UpOgogICAgICMgRG9pbmcgdGhlIGZ1bGwgdGVzdCBydW4gaGVyZSBtYXkgc2VlbSBhIGJpdCByZWR1bmRhbnQsIHNpbmNlIHRoZSB0d28KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CmluZGV4IDhkZGMxNzYzLi4wNmM4NjQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wYXJzZXIucHkKQEAgLTEsNyArMSw3IEBACiBpbXBvcnQgaW8KIGltcG9ydCBlbWFpbAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGVtYWlsLm1lc3NhZ2UgaW1wb3J0IE1lc3NhZ2UKK2Zyb20gZW1haWwubWVzc2FnZSBpbXBvcnQgTWVzc2FnZSwgRW1haWxNZXNzYWdlCiBmcm9tIGVtYWlsLnBvbGljeSBpbXBvcnQgZGVmYXVsdAogZnJvbSB0ZXN0LnRlc3RfZW1haWwgaW1wb3J0IFRlc3RFbWFpbEJhc2UKIApAQCAtMzksMzggKzM5LDcxIEBACiAgICAgICAgICMgVGhlIHVuaWNvZGUgbGluZSBzcGxpdHRlciBzcGxpdHMgb24gdW5pY29kZSBsaW5lYnJlYWtzLCB3aGljaCBhcmUKICAgICAgICAgIyBtb3JlIG51bWVyb3VzIHRoYW4gYWxsb3dlZCBieSB0aGUgZW1haWwgUkZDczsgbWFrZSBzdXJlIHdlIGFyZSBvbmx5CiAgICAgICAgICMgc3BsaXR0aW5nIG9uIHRob3NlIHR3by4KLSAgICAgICAgbXNnID0gc2VsZi5wYXJzZXIoCi0gICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJOdWxsOiBub3RceDAwYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJWZXJ0aWNhbC1UYWI6IG5vdFx2YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJGaWxlLVNlcGFyYXRvcjogbm90XHgxQ2Jyb2tlblxyXG4iCi0gICAgICAgICAgICAiR3JvdXAtU2VwYXJhdG9yOiBub3RceDFEYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKLSAgICAgICAgICAgICJMaW5lLVNlcGFyYXRvcjogbm90XHUyMDI4YnJva2VuXHJcbiIKLSAgICAgICAgICAgICJQYXJhZ3JhcGgtU2VwYXJhdG9yOiBub3RcdTIwMjlicm9rZW5cclxuIgotICAgICAgICAgICAgIlxyXG4iLAotICAgICAgICAgICAgcG9saWN5PWRlZmF1bHQsCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWwotICAgICAgICAgICAgKCJOZXh0LUxpbmUiLCAibm90XHg4NWJyb2tlbiIpLAotICAgICAgICAgICAgKCJOdWxsIiwgIm5vdFx4MDBicm9rZW4iKSwKLSAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCi0gICAgICAgICAgICAoIkZvcm0tRmVlZCIsICJub3RcZmJyb2tlbiIpLAotICAgICAgICAgICAgKCJGaWxlLVNlcGFyYXRvciIsICJub3RceDFDYnJva2VuIiksCi0gICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCi0gICAgICAgICAgICAoIlJlY29yZC1TZXBhcmF0b3IiLCAibm90XHgxRWJyb2tlbiIpLAotICAgICAgICAgICAgKCJMaW5lLVNlcGFyYXRvciIsICJub3RcdTIwMjhicm9rZW4iKSwKLSAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKLSAgICAgICAgXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0X3BheWxvYWQoKSwgIiIpCisgICAgICAgIGZvciBwYXJzZXIgaW4gc2VsZi5wYXJzZXJzOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocGFyc2VyPXBhcnNlci5fX25hbWVfXyk6CisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKAorICAgICAgICAgICAgICAgICAgICAiTmV4dC1MaW5lOiBub3RceDg1YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIk51bGw6IG5vdFx4MDBicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiVmVydGljYWwtVGFiOiBub3RcdmJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJGb3JtLUZlZWQ6IG5vdFxmYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkZpbGUtU2VwYXJhdG9yOiBub3RceDFDYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkdyb3VwLVNlcGFyYXRvcjogbm90XHgxRGJyb2tlblxyXG4iCisgICAgICAgICAgICAgICAgICAgICJSZWNvcmQtU2VwYXJhdG9yOiBub3RceDFFYnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIkxpbmUtU2VwYXJhdG9yOiBub3RcdTIwMjhicm9rZW5cclxuIgorICAgICAgICAgICAgICAgICAgICAiUGFyYWdyYXBoLVNlcGFyYXRvcjogbm90XHUyMDI5YnJva2VuXHJcbiIKKyAgICAgICAgICAgICAgICAgICAgIlxyXG4iLAorICAgICAgICAgICAgICAgICAgICBwb2xpY3k9ZGVmYXVsdCwKKyAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuaXRlbXMoKSwgWworICAgICAgICAgICAgICAgICAgICAoIk5leHQtTGluZSIsICJub3RceDg1YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTnVsbCIsICJub3RceDAwYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiVmVydGljYWwtVGFiIiwgIm5vdFx2YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRm9ybS1GZWVkIiwgIm5vdFxmYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiRmlsZS1TZXBhcmF0b3IiLCAibm90XHgxQ2Jyb2tlbiIpLAorICAgICAgICAgICAgICAgICAgICAoIkdyb3VwLVNlcGFyYXRvciIsICJub3RceDFEYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUmVjb3JkLVNlcGFyYXRvciIsICJub3RceDFFYnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiTGluZS1TZXBhcmF0b3IiLCAibm90XHUyMDI4YnJva2VuIiksCisgICAgICAgICAgICAgICAgICAgICgiUGFyYWdyYXBoLVNlcGFyYXRvciIsICJub3RcdTIwMjlicm9rZW4iKSwKKyAgICAgICAgICAgICAgICBdKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXNnLmdldF9wYXlsb2FkKCksICIiKQorCisgICAgY2xhc3MgTXlNZXNzYWdlKEVtYWlsTWVzc2FnZSk6CisgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2N1c3RvbV9tZXNzYWdlX2ZhY3Rvcnlfb25fcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisKKyAgICBkZWYgdGVzdF9mYWN0b3J5X2FyZ19vdmVycmlkZXNfcG9saWN5KHNlbGYpOgorICAgICAgICBmb3IgcGFyc2VyIGluIHNlbGYucGFyc2VyczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhcnNlcj1wYXJzZXIuX19uYW1lX18pOgorICAgICAgICAgICAgICAgIE15UG9saWN5ID0gZGVmYXVsdC5jbG9uZShtZXNzYWdlX2ZhY3Rvcnk9c2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgbXNnID0gcGFyc2VyKCJUbzogZm9vXG5cbnRlc3QiLCBNZXNzYWdlLCBwb2xpY3k9TXlQb2xpY3kpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJc0luc3RhbmNlKG1zZywgc2VsZi5NeU1lc3NhZ2UpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1zZywgTWVzc2FnZSkKKworIyBQbGF5IHNvbWUgZ2FtZXMgdG8gZ2V0IG5pY2Ugb3V0cHV0IGluIHN1YlRlc3QuICBUaGlzIGNvZGUgY291bGQgYmUgY2xlYXJlcgorIyBpZiBzdGF0aWNtZXRob2Qgc3VwcG9ydGVkIF9fbmFtZV9fLgorCitkZWYgbWVzc2FnZV9mcm9tX2ZpbGUocywgKmFyZ3MsICoqa3cpOgorICAgIGYgPSBpby5TdHJpbmdJTyhzKQorICAgIHJldHVybiBlbWFpbC5tZXNzYWdlX2Zyb21fZmlsZShmLCAqYXJncywgKiprdykKIAogY2xhc3MgVGVzdFBhcnNlcihUZXN0UGFyc2VyQmFzZSwgVGVzdEVtYWlsQmFzZSk6Ci0gICAgcGFyc2VyID0gc3RhdGljbWV0aG9kKGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcpCisgICAgcGFyc2VycyA9IChlbWFpbC5tZXNzYWdlX2Zyb21fc3RyaW5nLCBtZXNzYWdlX2Zyb21fZmlsZSkKKworZGVmIG1lc3NhZ2VfZnJvbV9ieXRlcyhzLCAqYXJncywgKiprdyk6CisgICAgcmV0dXJuIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhzLmVuY29kZSgpLCAqYXJncywgKiprdykKKworZGVmIG1lc3NhZ2VfZnJvbV9iaW5hcnlfZmlsZShzLCAqYXJncywgKiprdyk6CisgICAgZiA9IGlvLkJ5dGVzSU8ocy5lbmNvZGUoKSkKKyAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2JpbmFyeV9maWxlKGYsICphcmdzLCAqKmt3KQogCiBjbGFzcyBUZXN0Qnl0ZXNQYXJzZXIoVGVzdFBhcnNlckJhc2UsIFRlc3RFbWFpbEJhc2UpOgotICAgIGRlZiBwYXJzZXIoc2VsZiwgcywgKmFyZ3MsICoqa3cpOgotICAgICAgICByZXR1cm4gZW1haWwubWVzc2FnZV9mcm9tX2J5dGVzKHMuZW5jb2RlKCksICphcmdzLCAqKmt3KQorICAgIHBhcnNlcnMgPSAobWVzc2FnZV9mcm9tX2J5dGVzLCBtZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkgYi9MaWIvdGVzdC90ZXN0X2VtYWlsL3Rlc3RfcG9saWN5LnB5CmluZGV4IDcwYWM0ZGIuLjhmZWNiOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW1haWwvdGVzdF9wb2xpY3kucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbWFpbC90ZXN0X3BvbGljeS5weQpAQCAtNSw2ICs1LDcgQEAKIGltcG9ydCBlbWFpbC5wb2xpY3kKIGltcG9ydCBlbWFpbC5wYXJzZXIKIGltcG9ydCBlbWFpbC5nZW5lcmF0b3IKK2ltcG9ydCBlbWFpbC5tZXNzYWdlCiBmcm9tIGVtYWlsIGltcG9ydCBoZWFkZXJyZWdpc3RyeQogCiBkZWYgbWFrZV9kZWZhdWx0cyhiYXNlX2RlZmF1bHRzLCBkaWZmZXJlbmNlcyk6CkBAIC0yMyw2ICsyNCw3IEBACiAgICAgICAgICdjdGVfdHlwZSc6ICAgICAgICAgICAgICAgICAnOGJpdCcsCiAgICAgICAgICdyYWlzZV9vbl9kZWZlY3QnOiAgICAgICAgICBGYWxzZSwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIFRydWUsCisgICAgICAgICdtZXNzYWdlX2ZhY3RvcnknOiAgICAgICAgICBOb25lLAogICAgICAgICB9CiAgICAgIyBUaGVzZSBkZWZhdWx0IHZhbHVlcyBhcmUgdGhlIG9uZXMgc2V0IG9uIGVtYWlsLnBvbGljeS5kZWZhdWx0LgogICAgICMgSWYgYW55IG9mIHRoZXNlIGRlZmF1bHRzIGNoYW5nZSwgdGhlIGRvY3MgbXVzdCBiZSB1cGRhdGVkLgpAQCAtMzQsNiArMzYsNyBAQAogICAgICAgICAncmVmb2xkX3NvdXJjZSc6ICAgICAgICAgICAgJ2xvbmcnLAogICAgICAgICAnY29udGVudF9tYW5hZ2VyJzogICAgICAgICAgZW1haWwucG9saWN5LkVtYWlsUG9saWN5LmNvbnRlbnRfbWFuYWdlciwKICAgICAgICAgJ21hbmdsZV9mcm9tXyc6ICAgICAgICAgICAgIEZhbHNlLAorICAgICAgICAnbWVzc2FnZV9mYWN0b3J5JzogICAgICAgICAgZW1haWwubWVzc2FnZS5FbWFpbE1lc3NhZ2UsCiAgICAgICAgIH0pCiAKICAgICAjIEZvciBlYWNoIHBvbGljeSB1bmRlciB0ZXN0LCB3ZSBnaXZlIGhlcmUgd2hhdCB3ZSBleHBlY3QgdGhlIGRlZmF1bHRzIHRvCkBAIC02MiwyMCArNjUsMjIgQEAKICAgICBkZWYgdGVzdF9kZWZhdWx0cyhzZWxmKToKICAgICAgICAgZm9yIHBvbGljeSwgZXhwZWN0ZWQgaW4gc2VsZi5wb2xpY2llcy5pdGVtcygpOgogICAgICAgICAgICAgZm9yIGF0dHIsIHZhbHVlIGluIGV4cGVjdGVkLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoImNoYW5nZSB7fSBkb2NzL2RvY3N0cmluZ3MgaWYgZGVmYXVsdHMgaGF2ZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFuZ2VkIikuZm9ybWF0KHBvbGljeSkpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHBvbGljeSwgYXR0ciksIHZhbHVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJjaGFuZ2Uge30gZG9jcy9kb2NzdHJpbmdzIGlmIGRlZmF1bHRzIGhhdmUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImNoYW5nZWQiKS5mb3JtYXQocG9saWN5KSkKIAogICAgIGRlZiB0ZXN0X2FsbF9hdHRyaWJ1dGVzX2NvdmVyZWQoc2VsZik6CiAgICAgICAgIGZvciBwb2xpY3ksIGV4cGVjdGVkIGluIHNlbGYucG9saWNpZXMuaXRlbXMoKToKICAgICAgICAgICAgIGZvciBhdHRyIGluIGRpcihwb2xpY3kpOgotICAgICAgICAgICAgICAgIGlmIChhdHRyLnN0YXJ0c3dpdGgoJ18nKSBvcgotICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0eXBlcy5GdW5jdGlvblR5cGUpKToKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGF0dHIsIGV4cGVjdGVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ7fSBpcyBub3QgZnVsbHkgdGVzdGVkIi5mb3JtYXQoYXR0cikpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocG9saWN5PXBvbGljeSwgYXR0cj1hdHRyKToKKyAgICAgICAgICAgICAgICAgICAgaWYgKGF0dHIuc3RhcnRzd2l0aCgnXycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNpbnN0YW5jZShnZXRhdHRyKGVtYWlsLnBvbGljeS5FbWFpbFBvbGljeSwgYXR0ciksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHlwZXMuRnVuY3Rpb25UeXBlKSk6CisgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInt9IGlzIG5vdCBmdWxseSB0ZXN0ZWQiLmZvcm1hdChhdHRyKSkKIAogICAgIGRlZiB0ZXN0X2FiYyhzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgpAQCAtMjM3LDYgKzI0Miw5IEBACiAgICAgIyB3aW5zKSwgYnV0IHRoYXQgdGhlIG9yZGVyIHN0aWxsIHdvcmtzIChyaWdodCBvdmVycmlkZXMgbGVmdCkuCiAKIAorY2xhc3MgVGVzdEV4Y2VwdGlvbihFeGNlcHRpb24pOgorICAgIHBhc3MKKwogY2xhc3MgVGVzdFBvbGljeVByb3BhZ2F0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgVGhlIGFic3RyYWN0IG1ldGhvZHMgYXJlIHVzZWQgYnkgdGhlIHBhcnNlciBidXQgbm90IGJ5IHRoZSB3cmFwcGVyCkBAIC0yNDQsNDAgKzI1Miw0MCBAQAogICAgICMgcG9saWN5IHdhcyBhY3R1YWxseSBwcm9wYWdhdGVkIGFsbCB0aGUgd2F5IHRvIGZlZWRwYXJzZXIuCiAgICAgY2xhc3MgTXlQb2xpY3koZW1haWwucG9saWN5LlBvbGljeSk6CiAgICAgICAgIGRlZiBiYWRtZXRob2Qoc2VsZiwgKmFyZ3MsICoqa3cpOgotICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJ0ZXN0IikKKyAgICAgICAgICAgIHJhaXNlIFRlc3RFeGNlcHRpb24oInRlc3QiKQogICAgICAgICBmb2xkID0gZm9sZF9iaW5hcnkgPSBoZWFkZXJfZmV0Y2hfcGFyc2VyID0gYmFkbWV0aG9kCiAgICAgICAgIGhlYWRlcl9zb3VyY2VfcGFyc2UgPSBoZWFkZXJfc3RvcmVfcGFyc2UgPSBiYWRtZXRob2QKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9zdHJpbmcoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9zdHJpbmcoIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYnl0ZXMoc2VsZik6Ci0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIGVtYWlsLm1lc3NhZ2VfZnJvbV9ieXRlcyhiIlN1YmplY3Q6IHRlc3RcblxuIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3k9c2VsZi5NeVBvbGljeSkKIAogICAgIGRlZiB0ZXN0X21lc3NhZ2VfZnJvbV9maWxlKHNlbGYpOgogICAgICAgICBmID0gaW8uU3RyaW5nSU8oJ1N1YmplY3Q6IHRlc3RcblxuJykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVGVzdEV4Y2VwdGlvbiwgIl50ZXN0JCIpOgogICAgICAgICAgICAgZW1haWwubWVzc2FnZV9mcm9tX2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICBkZWYgdGVzdF9tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoc2VsZik6CiAgICAgICAgIGYgPSBpby5CeXRlc0lPKGInU3ViamVjdDogdGVzdFxuXG4nKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBlbWFpbC5tZXNzYWdlX2Zyb21fYmluYXJ5X2ZpbGUoZiwgcG9saWN5PXNlbGYuTXlQb2xpY3kpCiAKICAgICAjIFRoZXNlIGFyZSByZWR1bmRhbnQsIGJ1dCB3ZSBuZWVkIHRoZW0gZm9yIGJsYWNrLWJveCBjb21wbGV0ZW5lc3MuCiAKICAgICBkZWYgdGVzdF9wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuUGFyc2VyKHBvbGljeT1zZWxmLk15UG9saWN5KQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRXhjZXB0aW9uLCAiXnRlc3QkIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUZXN0RXhjZXB0aW9uLCAiXnRlc3QkIik6CiAgICAgICAgICAgICBwLnBhcnNlc3RyKCdTdWJqZWN0OiB0ZXN0XG5cbicpCiAKICAgICBkZWYgdGVzdF9ieXRlc19wYXJzZXIoc2VsZik6CiAgICAgICAgIHAgPSBlbWFpbC5wYXJzZXIuQnl0ZXNQYXJzZXIocG9saWN5PXNlbGYuTXlQb2xpY3kpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChFeGNlcHRpb24sICJedGVzdCQiKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFRlc3RFeGNlcHRpb24sICJedGVzdCQiKToKICAgICAgICAgICAgIHAucGFyc2VieXRlcyhiJ1N1YmplY3Q6IHRlc3RcblxuJykKIAogICAgICMgTm93IHRoYXQgd2UndmUgZXN0YWJsaXNoZWQgdGhhdCBhbGwgdGhlIHBhcnNlIG1ldGhvZHMgZ2V0IHRoZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9lbnVtLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtLnB5CmluZGV4IDYzMGIxNTUuLjJiM2JmZWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZW51bS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2VudW0ucHkKQEAgLTMsOSArMywxMCBAQAogaW1wb3J0IHB5ZG9jCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci1mcm9tIGVudW0gaW1wb3J0IEVudW0sIEludEVudW0sIEVudW1NZXRhLCB1bmlxdWUKK2Zyb20gZW51bSBpbXBvcnQgRW51bSwgSW50RW51bSwgRW51bU1ldGEsIEZsYWcsIEludEZsYWcsIHVuaXF1ZSwgYXV0bwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KIGZyb20gcGlja2xlIGltcG9ydCBkdW1wcywgbG9hZHMsIFBpY2tsaW5nRXJyb3IsIEhJR0hFU1RfUFJPVE9DT0wKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiAjIGZvciBwaWNrbGUgdGVzdHMKIHRyeToKQEAgLTMyLDYgKzMzLDE0IEBACiBleGNlcHQgRXhjZXB0aW9uIGFzIGV4YzoKICAgICBGbG9hdFN0b29nZXMgPSBleGMKIAordHJ5OgorICAgIGNsYXNzIEZsYWdTdG9vZ2VzKEZsYWcpOgorICAgICAgICBMQVJSWSA9IDEKKyAgICAgICAgQ1VSTFkgPSAyCisgICAgICAgIE1PRSA9IDMKK2V4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgorICAgIEZsYWdTdG9vZ2VzID0gZXhjCisKICMgZm9yIHBpY2tsZSB0ZXN0IGFuZCBzdWJjbGFzcyB0ZXN0cwogdHJ5OgogICAgIGNsYXNzIFN0ckVudW0oc3RyLCBFbnVtKToKQEAgLTEwNCw2ICsxMTMsNyBAQAogICAgICAgICAgICAgICAgICdfXycsICdfX18nLCAnX19fXycsICdfX19fXycsKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZW51bS5faXNfZHVuZGVyKHMpKQogCisjIHRlc3RzCiAKIGNsYXNzIFRlc3RFbnVtKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMjgzLDYgKzI5MywyOCBAQAogICAgICAgICAgICAgY2xhc3MgV3JvbmcoRW51bSk6CiAgICAgICAgICAgICAgICAgX2FueV9uYW1lXyA9IDkKIAorICAgIGRlZiB0ZXN0X2Jvb2woc2VsZik6CisgICAgICAgICMgcGxhaW4gRW51bSBtZW1iZXJzIGFyZSBhbHdheXMgVHJ1ZQorICAgICAgICBjbGFzcyBMb2dpYyhFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSBUcnVlCisgICAgICAgICAgICBmYWxzZSA9IEZhbHNlCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShMb2dpYy50cnVlKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoTG9naWMuZmFsc2UpCisgICAgICAgICMgdW5sZXNzIG92ZXJyaWRkZW4KKyAgICAgICAgY2xhc3MgUmVhbExvZ2ljKEVudW0pOgorICAgICAgICAgICAgdHJ1ZSA9IFRydWUKKyAgICAgICAgICAgIGZhbHNlID0gRmFsc2UKKyAgICAgICAgICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gYm9vbChzZWxmLl92YWx1ZV8pCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSZWFsTG9naWMudHJ1ZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSZWFsTG9naWMuZmFsc2UpCisgICAgICAgICMgbWl4ZWQgRW51bXMgZGVwZW5kIG9uIG1peGVkLWluIHR5cGUKKyAgICAgICAgY2xhc3MgSW50TG9naWMoaW50LCBFbnVtKToKKyAgICAgICAgICAgIHRydWUgPSAxCisgICAgICAgICAgICBmYWxzZSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEludExvZ2ljLnRydWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoSW50TG9naWMuZmFsc2UpCisKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKICAgICAgICAgU2Vhc29uID0gc2VsZi5TZWFzb24KICAgICAgICAgc2VsZi5hc3NlcnRJbihTZWFzb24uQVVUVU1OLCBTZWFzb24pCkBAIC0xNTQ3LDYgKzE1NzksNzAxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkLCAxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExhYmVsbGVkTGlzdCgxKSwgTGFiZWxsZWRMaXN0LnVucHJvY2Vzc2VkKQogCisgICAgZGVmIHRlc3RfYXV0b19udW1iZXIoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gYXV0bygpCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ncmVlbi52YWx1ZSwgMykKKworICAgIGRlZiB0ZXN0X2F1dG9fbmFtZShzZWxmKToKKyAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICBkZWYgX2dlbmVyYXRlX25leHRfdmFsdWVfKG5hbWUsIHN0YXJ0LCBjb3VudCwgbGFzdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWUKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAncmVkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5ibHVlLnZhbHVlLCAnYmx1ZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsICdncmVlbicpCisKKyAgICBkZWYgdGVzdF9hdXRvX25hbWVfaW5oZXJpdChzZWxmKToKKyAgICAgICAgY2xhc3MgQXV0b05hbWVFbnVtKEVudW0pOgorICAgICAgICAgICAgZGVmIF9nZW5lcmF0ZV9uZXh0X3ZhbHVlXyhuYW1lLCBzdGFydCwgY291bnQsIGxhc3QpOgorICAgICAgICAgICAgICAgIHJldHVybiBuYW1lCisgICAgICAgIGNsYXNzIENvbG9yKEF1dG9OYW1lRW51bSk6CisgICAgICAgICAgICByZWQgPSBhdXRvKCkKKyAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKyAgICAgICAgICAgIGdyZWVuID0gYXV0bygpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KENvbG9yKSwgW0NvbG9yLnJlZCwgQ29sb3IuYmx1ZSwgQ29sb3IuZ3JlZW5dKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLnJlZC52YWx1ZSwgJ3JlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgJ2JsdWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmdyZWVuLnZhbHVlLCAnZ3JlZW4nKQorCisgICAgZGVmIHRlc3RfYXV0b19nYXJiYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIHJlZCA9ICdyZWQnCisgICAgICAgICAgICBibHVlID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuYmx1ZS52YWx1ZSwgMSkKKworICAgIGRlZiB0ZXN0X2F1dG9fZ2FyYmFnZV9jb3JyZWN0ZWQoc2VsZik6CisgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgcmVkID0gJ3JlZCcKKyAgICAgICAgICAgIGJsdWUgPSAyCisgICAgICAgICAgICBncmVlbiA9IGF1dG8oKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChDb2xvciksIFtDb2xvci5yZWQsIENvbG9yLmJsdWUsIENvbG9yLmdyZWVuXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDb2xvci5yZWQudmFsdWUsICdyZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDMpCisKKyAgICBkZWYgdGVzdF9kdXBsaWNhdGVfYXV0byhzZWxmKToKKyAgICAgICAgY2xhc3MgRHVwZXMoRW51bSk6CisgICAgICAgICAgICBmaXJzdCA9IHByaW1lcm8gPSBhdXRvKCkKKyAgICAgICAgICAgIHNlY29uZCA9IGF1dG8oKQorICAgICAgICAgICAgdGhpcmQgPSBhdXRvKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbRHVwZXMuZmlyc3QsIER1cGVzLnNlY29uZCwgRHVwZXMudGhpcmRdLCBsaXN0KER1cGVzKSkKKworCitjbGFzcyBUZXN0T3JkZXIodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3Rfc2FtZV9tZW1iZXJzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUnCisgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgIGJsdWUgPSAzCisgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKyAgICBkZWYgdGVzdF9zYW1lX21lbWJlcnNfd3Jvbmdfb3JkZXIoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKworICAgIGRlZiB0ZXN0X29yZGVyX2hhc19leHRyYV9tZW1iZXJzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworCisgICAgZGVmIHRlc3Rfb3JkZXJfaGFzX2V4dHJhX21lbWJlcnNfd2l0aF9hbGlhc2VzKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbWVtYmVyIG9yZGVyIGRvZXMgbm90IG1hdGNoIF9vcmRlcl8nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEVudW0pOgorICAgICAgICAgICAgICAgIF9vcmRlcl8gPSAncmVkIGdyZWVuIGJsdWUgcHVycGxlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHZlcmRlID0gZ3JlZW4KKworICAgIGRlZiB0ZXN0X2VudW1faGFzX2V4dHJhX21lbWJlcnMoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdtZW1iZXIgb3JkZXIgZG9lcyBub3QgbWF0Y2ggX29yZGVyXycpOgorICAgICAgICAgICAgY2xhc3MgQ29sb3IoRW51bSk6CisgICAgICAgICAgICAgICAgX29yZGVyXyA9ICdyZWQgZ3JlZW4gYmx1ZScKKyAgICAgICAgICAgICAgICByZWQgPSAxCisgICAgICAgICAgICAgICAgZ3JlZW4gPSAyCisgICAgICAgICAgICAgICAgYmx1ZSA9IDMKKyAgICAgICAgICAgICAgICBwdXJwbGUgPSA0CisKKyAgICBkZWYgdGVzdF9lbnVtX2hhc19leHRyYV9tZW1iZXJzX3dpdGhfYWxpYXNlcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ21lbWJlciBvcmRlciBkb2VzIG5vdCBtYXRjaCBfb3JkZXJfJyk6CisgICAgICAgICAgICBjbGFzcyBDb2xvcihFbnVtKToKKyAgICAgICAgICAgICAgICBfb3JkZXJfID0gJ3JlZCBncmVlbiBibHVlJworICAgICAgICAgICAgICAgIHJlZCA9IDEKKyAgICAgICAgICAgICAgICBncmVlbiA9IDIKKyAgICAgICAgICAgICAgICBibHVlID0gMworICAgICAgICAgICAgICAgIHB1cnBsZSA9IDQKKyAgICAgICAgICAgICAgICB2ZXJkZSA9IGdyZWVuCisKKworY2xhc3MgVGVzdEZsYWcodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3RzIG9mIHRoZSBGbGFncy4iIiIKKworICAgIGNsYXNzIFBlcm0oRmxhZyk6CisgICAgICAgIFIsIFcsIFggPSA0LCAyLCAxCisKKyAgICBjbGFzcyBPcGVuKEZsYWcpOgorICAgICAgICBSTyA9IDAKKyAgICAgICAgV08gPSAxCisgICAgICAgIFJXID0gMgorICAgICAgICBBQyA9IDMKKyAgICAgICAgQ0UgPSAxPDwxOQorCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSgwKSksICdQZXJtLjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjApKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5STyksICdPcGVuLkNFfEFDfFJXfFdPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uV08pLCAnT3Blbi5DRXxSVycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLkFDKSwgJ09wZW4uQ0UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uUk8gfCBPcGVuLkNFKSksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihPcGVuLldPIHwgT3Blbi5DRSkpLCAnT3Blbi5SVycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0oMCkpLCAnPFBlcm0uMDogMD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uUiksICc8UGVybS5XfFg6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlcpLCAnPFBlcm0uUnxYOiA1PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogNj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcpKSwgJzxQZXJtLlg6IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XIHwgUGVybS5YKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH4wKSksICc8UGVybS5SfFd8WDogNz4nKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8pLCAnPE9wZW4uUk86IDA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08pLCAnPE9wZW4uV086IDE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uQUMpLCAnPE9wZW4uQUM6IDM+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uUk8gfCBPcGVuLkNFKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKE9wZW4uV08gfCBPcGVuLkNFKSwgJzxPcGVuLkNFfFdPOiA1MjQyODk+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiA1MjQyOTE+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLldPKSwgJzxPcGVuLkNFfFJXOiA1MjQyOTA+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLkFDKSwgJzxPcGVuLkNFOiA1MjQyODg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogMj4nKQorCisgICAgZGVmIHRlc3Rfb3Ioc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIGZvciBqIGluIFBlcm06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSB8IGopLCBQZXJtKGkudmFsdWUgfCBqLnZhbHVlKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpICYgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIFJXWCwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoUldYICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSBeIFBlcm0oMCksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKFBlcm0oMCkgXiBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyBeIE9wZW4uQ0UsIE9wZW4uQ0UpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5DRSBeIE9wZW4uQ0UsIE9wZW4uUk8pCisKKyAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUofmkpLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+fmksIGkpCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKH5+aSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uV08gJiB+T3Blbi5XTywgT3Blbi5STykKKyAgICAgICAgc2VsZi5hc3NlcnRJcygoT3Blbi5XT3xPcGVuLkNFKSAmIH5PcGVuLldPLCBPcGVuLkNFKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gRmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoRmxhZ1N0b29nZXMsIEV4Y2VwdGlvbik6CisgICAgICAgICAgICByYWlzZSBGbGFnU3Rvb2dlcworICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMuQ1VSTFl8RmxhZ1N0b29nZXMuTU9FKQorICAgICAgICB0ZXN0X3BpY2tsZV9kdW1wX2xvYWQoc2VsZi5hc3NlcnRJcywgRmxhZ1N0b29nZXMpCisKKyAgICBkZWYgdGVzdF9jb250YWlubWVudChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBSLCBXLCBYID0gUGVybQorICAgICAgICBSVyA9IFIgfCBXCisgICAgICAgIFJYID0gUiB8IFgKKyAgICAgICAgV1ggPSBXIHwgWAorICAgICAgICBSV1ggPSBSIHwgVyB8IFgKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFJXKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShSIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFcgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoWCBpbiBSVykKKworICAgIGRlZiB0ZXN0X2F1dG9fbnVtYmVyKHNlbGYpOgorICAgICAgICBjbGFzcyBDb2xvcihGbGFnKToKKyAgICAgICAgICAgIHJlZCA9IGF1dG8oKQorICAgICAgICAgICAgYmx1ZSA9IGF1dG8oKQorICAgICAgICAgICAgZ3JlZW4gPSBhdXRvKCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoQ29sb3IpLCBbQ29sb3IucmVkLCBDb2xvci5ibHVlLCBDb2xvci5ncmVlbl0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IucmVkLnZhbHVlLCAxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKENvbG9yLmJsdWUudmFsdWUsIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQ29sb3IuZ3JlZW4udmFsdWUsIDQpCisKKyAgICBkZWYgdGVzdF9hdXRvX251bWJlcl9nYXJiYWdlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnSW52YWxpZCBGbGFnIHZhbHVlOiAubm90IGFuIGludC4nKToKKyAgICAgICAgICAgIGNsYXNzIENvbG9yKEZsYWcpOgorICAgICAgICAgICAgICAgIHJlZCA9ICdub3QgYW4gaW50JworICAgICAgICAgICAgICAgIGJsdWUgPSBhdXRvKCkKKworICAgIGRlZiB0ZXN0X2Nhc2NhZGluZ19mYWlsdXJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYyA9IDMKKyAgICAgICAgICAgIGQgPSA0CisgICAgICAgICAgICBmID0gNgorICAgICAgICAjIEJpemFycmUuYyB8IEJpemFycmUuZAorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICI1IGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCA1KQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIyIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAyKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICIxIGlzIG5vdCBhIHZhbGlkIEJpemFycmUiLCBCaXphcnJlLCAxKQorCisgICAgZGVmIHRlc3RfZHVwbGljYXRlX2F1dG8oc2VsZik6CisgICAgICAgIGNsYXNzIER1cGVzKEVudW0pOgorICAgICAgICAgICAgZmlyc3QgPSBwcmltZXJvID0gYXV0bygpCisgICAgICAgICAgICBzZWNvbmQgPSBhdXRvKCkKKyAgICAgICAgICAgIHRoaXJkID0gYXV0bygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoW0R1cGVzLmZpcnN0LCBEdXBlcy5zZWNvbmQsIER1cGVzLnRoaXJkXSwgbGlzdChEdXBlcykpCisKKyAgICBkZWYgdGVzdF9iaXphcnJlKHNlbGYpOgorICAgICAgICBjbGFzcyBCaXphcnJlKEZsYWcpOgorICAgICAgICAgICAgYiA9IDMKKyAgICAgICAgICAgIGMgPSA0CisgICAgICAgICAgICBkID0gNgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoQml6YXJyZSg3KSksICc8Qml6YXJyZS5kfGN8YjogNz4nKQorCisKK2NsYXNzIFRlc3RJbnRGbGFnKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0cyBvZiB0aGUgSW50RmxhZ3MuIiIiCisKKyAgICBjbGFzcyBQZXJtKEludEZsYWcpOgorICAgICAgICBYID0gMSA8PCAwCisgICAgICAgIFcgPSAxIDw8IDEKKyAgICAgICAgUiA9IDEgPDwgMgorCisgICAgY2xhc3MgT3BlbihJbnRGbGFnKToKKyAgICAgICAgUk8gPSAwCisgICAgICAgIFdPID0gMQorICAgICAgICBSVyA9IDIKKyAgICAgICAgQUMgPSAzCisgICAgICAgIENFID0gMTw8MTkKKworICAgIGRlZiB0ZXN0X3R5cGUoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgUGVybSkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKFBlcm0uVyB8IFBlcm0uWCwgUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUGVybS5XIHwgUGVybS5YLCAzKQorICAgICAgICBmb3IgZiBpbiBPcGVuOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzaW5zdGFuY2UoZiwgT3BlbikpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIGYudmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc2luc3RhbmNlKE9wZW4uV08gfCBPcGVuLlJXLCBPcGVuKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPcGVuLldPIHwgT3Blbi5SVywgMykKKworCisgICAgZGVmIHRlc3Rfc3RyKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiksICdQZXJtLlInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihQZXJtLlcpLCAnUGVybS5XJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5YKSwgJ1Blcm0uWCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyksICdQZXJtLlJ8VycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWCksICdQZXJtLlJ8V3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybS5SIHwgOCksICdQZXJtLjh8UicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0oMCkpLCAnUGVybS4wJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSg4KSksICdQZXJtLjgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+UGVybS5SKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoflBlcm0uVyksICdQZXJtLlJ8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5QZXJtLlgpLCAnUGVybS5SfFcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IFBlcm0uVykpLCAnUGVybS5YJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJ1Blcm0uLTgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KFBlcm0uUiB8IDgpKSwgJ1Blcm0uV3xYJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoUGVybSh+MCkpLCAnUGVybS5SfFd8WCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKFBlcm0ofjgpKSwgJ1Blcm0uUnxXfFgnKQorCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyksICdPcGVuLlJPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5XTyksICdPcGVuLldPJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5BQyksICdPcGVuLkFDJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbi5STyB8IE9wZW4uQ0UpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKE9wZW4uV08gfCBPcGVuLkNFKSwgJ09wZW4uQ0V8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihPcGVuKDQpKSwgJ09wZW4uNCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH5PcGVuLlJPKSwgJ09wZW4uQ0V8QUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+T3Blbi5XTyksICdPcGVuLkNFfFJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIofk9wZW4uQUMpLCAnT3Blbi5DRScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJ09wZW4uQUN8Uld8V08nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cih+KE9wZW4uV08gfCBPcGVuLkNFKSksICdPcGVuLlJXJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoT3Blbih+NCkpLCAnT3Blbi5DRXxBQ3xSV3xXTycpCisKKyAgICBkZWYgdGVzdF9yZXByKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIpLCAnPFBlcm0uUjogND4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybS5XKSwgJzxQZXJtLlc6IDI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uWCksICc8UGVybS5YOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcpLCAnPFBlcm0uUnxXOiA2PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpLCAnPFBlcm0uUnxXfFg6IDc+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKFBlcm0uUiB8IDgpLCAnPFBlcm0uOHxSOiAxMj4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSgwKSksICc8UGVybS4wOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKDgpKSwgJzxQZXJtLjg6IDg+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5QZXJtLlIpLCAnPFBlcm0uV3xYOiAtNT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoflBlcm0uVyksICc8UGVybS5SfFg6IC0zPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+UGVybS5YKSwgJzxQZXJtLlJ8VzogLTI+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oUGVybS5SIHwgUGVybS5XKSksICc8UGVybS5YOiAtNz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCBQZXJtLlcgfCBQZXJtLlgpKSwgJzxQZXJtLi04OiAtOD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofihQZXJtLlIgfCA4KSksICc8UGVybS5XfFg6IC0xMz4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoUGVybSh+MCkpLCAnPFBlcm0uUnxXfFg6IC0xPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihQZXJtKH44KSksICc8UGVybS5SfFd8WDogLTk+JykKKworICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPKSwgJzxPcGVuLlJPOiAwPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPKSwgJzxPcGVuLldPOiAxPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLkFDKSwgJzxPcGVuLkFDOiAzPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLlJPIHwgT3Blbi5DRSksICc8T3Blbi5DRTogNTI0Mjg4PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuLldPIHwgT3Blbi5DRSksICc8T3Blbi5DRXxXTzogNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihPcGVuKDQpKSwgJzxPcGVuLjQ6IDQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH5PcGVuLlJPKSwgJzxPcGVuLkNFfEFDfFJXfFdPOiAtMT4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIofk9wZW4uV08pLCAnPE9wZW4uQ0V8Ulc6IC0yPicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+T3Blbi5BQyksICc8T3Blbi5DRTogLTQ+JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKH4oT3Blbi5STyB8IE9wZW4uQ0UpKSwgJzxPcGVuLkFDfFJXfFdPOiAtNTI0Mjg5PicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcih+KE9wZW4uV08gfCBPcGVuLkNFKSksICc8T3Blbi5SVzogLTUyNDI5MD4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoT3Blbih+NCkpLCAnPE9wZW4uQ0V8QUN8Uld8V086IC01PicpCisKKyAgICBkZWYgdGVzdF9vcihzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgZm9yIGogaW4gUGVybToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgai52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICBmb3IgaiBpbiByYW5nZSg4KToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkgfCBqLCBpLnZhbHVlIHwgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpIHwgaikudmFsdWUsIGkudmFsdWUgfCBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShpIHwgaiksIFBlcm0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChqIHwgaSwgaiB8IGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaiB8IGkpLnZhbHVlLCBqIHwgaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaiB8IGkpLCBQZXJtKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpIHwgaSwgaSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSB8IDAsIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKDAgfCBpLCBpKQorICAgICAgICBPcGVuID0gc2VsZi5PcGVuCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoT3Blbi5STyB8IE9wZW4uQ0UsIE9wZW4uQ0UpCisKKyAgICBkZWYgdGVzdF9hbmQoc2VsZik6CisgICAgICAgIFBlcm0gPSBzZWxmLlBlcm0KKyAgICAgICAgUlcgPSBQZXJtLlIgfCBQZXJtLlcKKyAgICAgICAgUlggPSBQZXJtLlIgfCBQZXJtLlgKKyAgICAgICAgV1ggPSBQZXJtLlcgfCBQZXJtLlgKKyAgICAgICAgUldYID0gUGVybS5SIHwgUGVybS5XIHwgUGVybS5YCisgICAgICAgIHZhbHVlcyA9IGxpc3QoUGVybSkgKyBbUlcsIFJYLCBXWCwgUldYLCBQZXJtKDApXQorICAgICAgICBmb3IgaSBpbiB2YWx1ZXM6CisgICAgICAgICAgICBmb3IgaiBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGoudmFsdWUsICdpIGlzICVyLCBqIGlzICVyJyAlIChpLCBqKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChpICYgaikudmFsdWUsIGkudmFsdWUgJiBqLnZhbHVlLCAnaSBpcyAlciwgaiBpcyAlcicgJSAoaSwgaikpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgJiBqKSwgUGVybSwgJ2kgaXMgJXIsIGogaXMgJXInICUgKGksIGopKQorICAgICAgICAgICAgZm9yIGogaW4gcmFuZ2UoOCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpICYgaiwgaS52YWx1ZSAmIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgoaSAmIGopLnZhbHVlLCBpLnZhbHVlICYgaikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoaSAmIGopLCBQZXJtKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaiAmIGksIGogJiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGogJiBpKS52YWx1ZSwgaiAmIGkudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGogJiBpKSwgUGVybSkKKyAgICAgICAgZm9yIGkgaW4gUGVybToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoaSAmIGksIGkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgJiA3LCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyg3ICYgaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gJiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfeG9yKHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBmb3IgaiBpbiBQZXJtOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGoudmFsdWUpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgIGZvciBqIGluIHJhbmdlKDgpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaSBeIGosIGkudmFsdWUgXiBqKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoKGkgXiBqKS52YWx1ZSwgaS52YWx1ZSBeIGopCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGkgXiBqKSwgUGVybSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGogXiBpLCBqIF4gaS52YWx1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKChqIF4gaSkudmFsdWUsIGogXiBpLnZhbHVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShqIF4gaSksIFBlcm0pCisgICAgICAgIGZvciBpIGluIFBlcm06CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKGkgXiAwLCBpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcygwIF4gaSwgaSkKKyAgICAgICAgT3BlbiA9IHNlbGYuT3BlbgorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uUk8gXiBPcGVuLkNFLCBPcGVuLkNFKQorICAgICAgICBzZWxmLmFzc2VydElzKE9wZW4uQ0UgXiBPcGVuLkNFLCBPcGVuLlJPKQorCisgICAgZGVmIHRlc3RfaW52ZXJ0KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFJXID0gUGVybS5SIHwgUGVybS5XCisgICAgICAgIFJYID0gUGVybS5SIHwgUGVybS5YCisgICAgICAgIFdYID0gUGVybS5XIHwgUGVybS5YCisgICAgICAgIFJXWCA9IFBlcm0uUiB8IFBlcm0uVyB8IFBlcm0uWAorICAgICAgICB2YWx1ZXMgPSBsaXN0KFBlcm0pICsgW1JXLCBSWCwgV1gsIFJXWCwgUGVybSgwKV0KKyAgICAgICAgZm9yIGkgaW4gdmFsdWVzOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh+aSwgfmkudmFsdWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh+aSkudmFsdWUsIH5pLnZhbHVlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKH5pKSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwofn5pLCBpKQorICAgICAgICBmb3IgaSBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh+fmksIGkpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgc2VsZi5hc3NlcnRJcyhPcGVuLldPICYgfk9wZW4uV08sIE9wZW4uUk8pCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoKE9wZW4uV098T3Blbi5DRSkgJiB+T3Blbi5XTywgT3Blbi5DRSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZyhzZWxmKToKKyAgICAgICAgUGVybSA9IEludEZsYWcoJ1Blcm0nLCAnUiBXIFgnKQorICAgICAgICBsc3QgPSBsaXN0KFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGxzdCksIGxlbihQZXJtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oUGVybSksIDMsIFBlcm0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobHN0LCBbUGVybS5SLCBQZXJtLlcsIFBlcm0uWF0pCisgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZSgnUiBXIFgnLnNwbGl0KCkpOgorICAgICAgICAgICAgdiA9IDE8PGkKKyAgICAgICAgICAgIGUgPSBQZXJtKHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUudmFsdWUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoZS52YWx1ZSksIGludCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5uYW1lLCBuKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihlLCBQZXJtKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKGUpLCBQZXJtKQorCisgICAgZGVmIHRlc3RfcHJvZ3JhbWF0aWNfZnVuY3Rpb25fc3RyaW5nX3dpdGhfc3RhcnQoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgJ1IgVyBYJywgc3RhcnQ9OCkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSA4PDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX3N0cmluZ19saXN0KHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsIFsnUicsICdXJywgJ1gnXSkKKyAgICAgICAgbHN0ID0gbGlzdChQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihsc3QpLCBsZW4oUGVybSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKFBlcm0pLCAzLCBQZXJtKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxzdCwgW1Blcm0uUiwgUGVybS5XLCBQZXJtLlhdKQorICAgICAgICBmb3IgaSwgbiBpbiBlbnVtZXJhdGUoJ1IgVyBYJy5zcGxpdCgpKToKKyAgICAgICAgICAgIHYgPSAxPDxpCisgICAgICAgICAgICBlID0gUGVybSh2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLnZhbHVlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKGUudmFsdWUpLCBpbnQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUsIHYpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUubmFtZSwgbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZSwgUGVybSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgUGVybSkKKworICAgIGRlZiB0ZXN0X3Byb2dyYW1hdGljX2Z1bmN0aW9uX2l0ZXJhYmxlKHNlbGYpOgorICAgICAgICBQZXJtID0gSW50RmxhZygnUGVybScsICgoJ1InLCAyKSwgKCdXJywgOCksICgnWCcsIDMyKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKyAgICBkZWYgdGVzdF9wcm9ncmFtYXRpY19mdW5jdGlvbl9mcm9tX2RpY3Qoc2VsZik6CisgICAgICAgIFBlcm0gPSBJbnRGbGFnKCdQZXJtJywgT3JkZXJlZERpY3QoKCgnUicsIDIpLCAoJ1cnLCA4KSwgKCdYJywgMzIpKSkpCisgICAgICAgIGxzdCA9IGxpc3QoUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obHN0KSwgbGVuKFBlcm0pKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihQZXJtKSwgMywgUGVybSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsc3QsIFtQZXJtLlIsIFBlcm0uVywgUGVybS5YXSkKKyAgICAgICAgZm9yIGksIG4gaW4gZW51bWVyYXRlKCdSIFcgWCcuc3BsaXQoKSk6CisgICAgICAgICAgICB2ID0gMTw8KDIqaSsxKQorICAgICAgICAgICAgZSA9IFBlcm0odikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS52YWx1ZSwgdikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwZShlLnZhbHVlKSwgaW50KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLCB2KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLm5hbWUsIG4pCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGUsIFBlcm0pCisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZSksIFBlcm0pCisKKworICAgIGRlZiB0ZXN0X2NvbnRhaW5tZW50KHNlbGYpOgorICAgICAgICBQZXJtID0gc2VsZi5QZXJtCisgICAgICAgIFIsIFcsIFggPSBQZXJtCisgICAgICAgIFJXID0gUiB8IFcKKyAgICAgICAgUlggPSBSIHwgWAorICAgICAgICBXWCA9IFcgfCBYCisgICAgICAgIFJXWCA9IFIgfCBXIHwgWAorICAgICAgICBzZWxmLmFzc2VydFRydWUoUiBpbiBSVykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFIgaW4gUlgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShSIGluIFJXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFcgaW4gUlcpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShXIGluIFdYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoVyBpbiBSV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShYIGluIFJYKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoWCBpbiBXWCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKFggaW4gUldYKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKFIgaW4gV1gpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoVyBpbiBSWCkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShYIGluIFJXKQorCisgICAgZGVmIHRlc3RfYm9vbChzZWxmKToKKyAgICAgICAgUGVybSA9IHNlbGYuUGVybQorICAgICAgICBmb3IgZiBpbiBQZXJtOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYpCisgICAgICAgIE9wZW4gPSBzZWxmLk9wZW4KKyAgICAgICAgZm9yIGYgaW4gT3BlbjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9vbChmLnZhbHVlKSwgYm9vbChmKSkKIAogY2xhc3MgVGVzdFVuaXF1ZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTE3MzksNSArMjQ2Niw0NyBAQAogICAgICAgICBpZiBmYWlsZWQ6CiAgICAgICAgICAgICBzZWxmLmZhaWwoInJlc3VsdCBkb2VzIG5vdCBlcXVhbCBleHBlY3RlZCwgc2VlIHByaW50IGFib3ZlIikKIAorCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZW51bSkKKworCisjIFRoZXNlIGFyZSB1bm9yZGVyZWQgaGVyZSBvbiBwdXJwb3NlIHRvIGVuc3VyZSB0aGF0IGRlY2xhcmF0aW9uIG9yZGVyCisjIG1ha2VzIG5vIGRpZmZlcmVuY2UuCitDT05WRVJUX1RFU1RfTkFNRV9EID0gNQorQ09OVkVSVF9URVNUX05BTUVfQyA9IDUKK0NPTlZFUlRfVEVTVF9OQU1FX0IgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9BID0gNSAgIyBUaGlzIG9uZSBzaG91bGQgc29ydCBmaXJzdC4KK0NPTlZFUlRfVEVTVF9OQU1FX0UgPSA1CitDT05WRVJUX1RFU1RfTkFNRV9GID0gNQorCitjbGFzcyBUZXN0SW50RW51bUNvbnZlcnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2NvbnZlcnRfdmFsdWVfbG9va3VwX3ByaW9yaXR5KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBXZSBkb24ndCB3YW50IHRoZSByZXZlcnNlIGxvb2t1cCB2YWx1ZSB0byB2YXJ5IHdoZW4gdGhlcmUgYXJlCisgICAgICAgICMgbXVsdGlwbGUgcG9zc2libGUgbmFtZXMgZm9yIGEgZ2l2ZW4gdmFsdWUuICBJdCBzaG91bGQgYWx3YXlzCisgICAgICAgICMgcmVwb3J0IHRoZSBmaXJzdCBsZXhpZ3JhcGhpY2FsIG5hbWUgaW4gdGhhdCBjYXNlLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZSg1KS5uYW1lLCAnQ09OVkVSVF9URVNUX05BTUVfQScpCisKKyAgICBkZWYgdGVzdF9jb252ZXJ0KHNlbGYpOgorICAgICAgICB0ZXN0X3R5cGUgPSBlbnVtLkludEVudW0uX2NvbnZlcnQoCisgICAgICAgICAgICAgICAgJ1VuaXR0ZXN0Q29udmVydCcsICd0ZXN0LnRlc3RfZW51bScsCisgICAgICAgICAgICAgICAgZmlsdGVyPWxhbWJkYSB4OiB4LnN0YXJ0c3dpdGgoJ0NPTlZFUlRfVEVTVF8nKSkKKyAgICAgICAgIyBFbnN1cmUgdGhhdCB0ZXN0X3R5cGUgaGFzIGFsbCBvZiB0aGUgZGVzaXJlZCBuYW1lcyBhbmQgdmFsdWVzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9GLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9BKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9CLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9DLCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9ELCA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlc3RfdHlwZS5DT05WRVJUX1RFU1RfTkFNRV9FLCA1KQorICAgICAgICAjIEVuc3VyZSB0aGF0IHRlc3RfdHlwZSBvbmx5IHBpY2tlZCB1cCBuYW1lcyBtYXRjaGluZyB0aGUgZmlsdGVyLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFtuYW1lIGZvciBuYW1lIGluIGRpcih0ZXN0X3R5cGUpCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5hbWVbMDoyXSBub3QgaW4gKCdDTycsICdfXycpXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbXSwgbXNnPSdOYW1lcyBvdGhlciB0aGFuIENPTlZFUlRfVEVTVF8qIGZvdW5kLicpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZW51bWVyYXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKaW5kZXggMjYzMGNmMi4uZTQ1NWFkZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lbnVtZXJhdGUucHkKQEAgLTIyMyw3ICsyMjMsNyBAQAogICAgIGRlZiB0ZXN0X29iam1ldGhvZHMoc2VsZik6CiAgICAgICAgICMgT2JqZWN0cyBtdXN0IGhhdmUgX19sZW5fXygpIGFuZCBfX2dldGl0ZW1fXygpIGltcGxlbWVudGVkLgogICAgICAgICBjbGFzcyBOb0xlbihvYmplY3QpOgotICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYpOiByZXR1cm4gMQorICAgICAgICAgICAgZGVmIF9fZ2V0aXRlbV9fKHNlbGYsIGkpOiByZXR1cm4gMQogICAgICAgICBubCA9IE5vTGVuKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmwpCiAKQEAgLTIzMiw2ICsyMzIsMTMgQEAKICAgICAgICAgbmdpID0gTm9HZXRJdGVtKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByZXZlcnNlZCwgbmdpKQogCisgICAgICAgIGNsYXNzIEJsb2NrZWQob2JqZWN0KToKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKTogcmV0dXJuIDEKKyAgICAgICAgICAgIGRlZiBfX2xlbl9fKHNlbGYpOiByZXR1cm4gMgorICAgICAgICAgICAgX19yZXZlcnNlZF9fID0gTm9uZQorICAgICAgICBiID0gQmxvY2tlZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmV2ZXJzZWQsIGIpCisKICAgICBkZWYgdGVzdF9waWNrbGUoc2VsZik6CiAgICAgICAgIGZvciBkYXRhIGluICdhYmMnLCByYW5nZSg1KSwgdHVwbGUoZW51bWVyYXRlKCdhYmMnKSksIHJhbmdlKDEsMTcsNSk6CiAgICAgICAgICAgICBzZWxmLmNoZWNrX3BpY2tsZShyZXZlcnNlZChkYXRhKSwgbGlzdChkYXRhKVs6Oi0xXSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkgYi9MaWIvdGVzdC90ZXN0X2Vwb2xsLnB5CmluZGV4IGE3MzU5ZTkuLmE3YWZmOGEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXBvbGwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9lcG9sbC5weQpAQCAtMjgsNyArMjgsNiBAQAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAogCi1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGlmIG5vdCBoYXNhdHRyKHNlbGVjdCwgImVwb2xsIik6CiAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3Qgd29ya3Mgb25seSBvbiBMaW51eCAyLjYiKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlcDMxNTEucHkgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKc2ltaWxhcml0eSBpbmRleCA5OSUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbl9oaWVyYXJjaHkucHkKaW5kZXggN2IwZDQ2NS4uODY0OTU5NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAzMTUxLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9uX2hpZXJhcmNoeS5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgZXJybm8KIGZyb20gZXJybm8gaW1wb3J0IEVFWElTVApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5IGIvTGliL3Rlc3QvdGVzdF9leGNlcHRpb25zLnB5CmluZGV4IDk2YzNhNDguLjQ4Mzc5MjIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZXhjZXB0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2V4Y2VwdGlvbnMucHkKQEAgLTExMDksNyArMTEwOSw2IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6CiAgICAgICAgICAgICBJbXBvcnRFcnJvcihpbnZhbGlkPSdrZXl3b3JkJykKIAotICAgICAgICBtc2cgPSAiJ2ludmFsaWR8YW5vdGhlcicgaXMgYW4gaW52YWxpZCBrZXl3b3JkIGFyZ3VtZW50IGZvciB0aGlzIGZ1bmN0aW9uIgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBtc2cpOgogICAgICAgICAgICAgSW1wb3J0RXJyb3IoJ3Rlc3QnLCBpbnZhbGlkPSdrZXl3b3JkJywgYW5vdGhlcj1UcnVlKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkgYi9MaWIvdGVzdC90ZXN0X2V4dGNhbGwucHkKaW5kZXggOWNiMGQzOC4uMDQzZGYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9leHRjYWxsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZXh0Y2FsbC5weQpAQCAtMjM4LDYgKzIzOCwxMSBAQAogICAgICAgLi4uCiAgICAgVHlwZUVycm9yOiBoKCkgYXJndW1lbnQgYWZ0ZXIgKiBtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgZnVuY3Rpb24KIAorICAgID4+PiBoKCpbMV0sICpoKQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFR5cGVFcnJvcjogaCgpIGFyZ3VtZW50IGFmdGVyICogbXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90IGZ1bmN0aW9uCisKICAgICA+Pj4gZGlyKCpoKQogICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKICAgICAgIC4uLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mYXVsdGhhbmRsZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQppbmRleCAxNTYyZWVjLi4yMmNjYmM5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZhdWx0aGFuZGxlci5weQpAQCAtMjMsNiArMjMsNyBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogVElNRU9VVCA9IDAuNQorTVNfV0lORE9XUyA9IChvcy5uYW1lID09ICdudCcpCiAKIGRlZiBleHBlY3RlZF90cmFjZWJhY2sobGluZW5vMSwgbGluZW5vMiwgaGVhZGVyLCBtaW5fY291bnQ9MSk6CiAgICAgcmVnZXggPSBoZWFkZXIKQEAgLTU4LDggKzU5LDkgQEAKICAgICAgICAgICAgIHBhc3NfZmRzLmFwcGVuZChmZCkKICAgICAgICAgd2l0aCBzdXBwb3J0LlN1cHByZXNzQ3Jhc2hSZXBvcnQoKToKICAgICAgICAgICAgIHByb2Nlc3MgPSBzY3JpcHRfaGVscGVyLnNwYXduX3B5dGhvbignLWMnLCBjb2RlLCBwYXNzX2Zkcz1wYXNzX2ZkcykKLSAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKLSAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQorICAgICAgICAgICAgd2l0aCBwcm9jZXNzOgorICAgICAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcHJvY2Vzcy5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICAgICAgZXhpdGNvZGUgPSBwcm9jZXNzLndhaXQoKQogICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LnN0cmlwX3B5dGhvbl9zdGRlcnIoc3Rkb3V0KQogICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKICAgICAgICAgaWYgZmlsZW5hbWU6CkBAIC03MywxNCArNzUsMTEgQEAKICAgICAgICAgICAgIHdpdGggb3BlbihmZCwgInJiIiwgY2xvc2VmZD1GYWxzZSkgYXMgZnA6CiAgICAgICAgICAgICAgICAgb3V0cHV0ID0gZnAucmVhZCgpCiAgICAgICAgICAgICBvdXRwdXQgPSBvdXRwdXQuZGVjb2RlKCdhc2NpaScsICdiYWNrc2xhc2hyZXBsYWNlJykKLSAgICAgICAgb3V0cHV0ID0gcmUuc3ViKCdDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKycsCi0gICAgICAgICAgICAgICAgICAgICAgICAnQ3VycmVudCB0aHJlYWQgWFhYJywKLSAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCkKICAgICAgICAgcmV0dXJuIG91dHB1dC5zcGxpdGxpbmVzKCksIGV4aXRjb2RlCiAKLSAgICBkZWYgY2hlY2tfZmF0YWxfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZkPU5vbmUpOgorICAgIGRlZiBjaGVja19lcnJvcihzZWxmLCBjb2RlLCBsaW5lX251bWJlciwgZmF0YWxfZXJyb3IsICosCisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lPU5vbmUsIGFsbF90aHJlYWRzPVRydWUsIG90aGVyX3JlZ2V4PU5vbmUsCisgICAgICAgICAgICAgICAgICAgIGZkPU5vbmUsIGtub3dfY3VycmVudF90aHJlYWQ9VHJ1ZSk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayB0aGF0IHRoZSBmYXVsdCBoYW5kbGVyIGZvciBmYXRhbCBlcnJvcnMgaXMgZW5hYmxlZCBhbmQgY2hlY2sgdGhlCiAgICAgICAgIHRyYWNlYmFjayBmcm9tIHRoZSBjaGlsZCBwcm9jZXNzIG91dHB1dC4KQEAgLTg4LDE5ICs4NywyMiBAQAogICAgICAgICBSYWlzZSBhbiBlcnJvciBpZiB0aGUgb3V0cHV0IGRvZXNuJ3QgbWF0Y2ggdGhlIGV4cGVjdGVkIGZvcm1hdC4KICAgICAgICAgIiIiCiAgICAgICAgIGlmIGFsbF90aHJlYWRzOgotICAgICAgICAgICAgaGVhZGVyID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCknCisgICAgICAgICAgICBpZiBrbm93X2N1cnJlbnRfdGhyZWFkOgorICAgICAgICAgICAgICAgIGhlYWRlciA9ICdDdXJyZW50IHRocmVhZCAweFswLTlhLWZdKycKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgaGVhZGVyID0gJ1RocmVhZCAweFswLTlhLWZdKycKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGhlYWRlciA9ICdTdGFjayAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCknCi0gICAgICAgIHJlZ2V4ID0gIiIiCi0gICAgICAgICAgICBeRmF0YWwgUHl0aG9uIGVycm9yOiB7bmFtZX0KKyAgICAgICAgICAgIGhlYWRlciA9ICdTdGFjaycKKyAgICAgICAgcmVnZXggPSByIiIiCisgICAgICAgICAgICBee2ZhdGFsX2Vycm9yfQogCi0gICAgICAgICAgICB7aGVhZGVyfToKKyAgICAgICAgICAgIHtoZWFkZXJ9IFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgICBGaWxlICI8c3RyaW5nPiIsIGxpbmUge2xpbmVub30gaW4gPG1vZHVsZT4KICAgICAgICAgICAgICIiIgogICAgICAgICByZWdleCA9IGRlZGVudChyZWdleC5mb3JtYXQoCiAgICAgICAgICAgICBsaW5lbm89bGluZV9udW1iZXIsCi0gICAgICAgICAgICBuYW1lPW5hbWVfcmVnZXgsCi0gICAgICAgICAgICBoZWFkZXI9cmUuZXNjYXBlKGhlYWRlcikpKS5zdHJpcCgpCisgICAgICAgICAgICBmYXRhbF9lcnJvcj1mYXRhbF9lcnJvciwKKyAgICAgICAgICAgIGhlYWRlcj1oZWFkZXIpKS5zdHJpcCgpCiAgICAgICAgIGlmIG90aGVyX3JlZ2V4OgogICAgICAgICAgICAgcmVnZXggKz0gJ3wnICsgb3RoZXJfcmVnZXgKICAgICAgICAgb3V0cHV0LCBleGl0Y29kZSA9IHNlbGYuZ2V0X291dHB1dChjb2RlLCBmaWxlbmFtZT1maWxlbmFtZSwgZmQ9ZmQpCkBAIC0xMDgsMTcgKzExMCwzNiBAQAogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KG91dHB1dCwgcmVnZXgpCiAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoZXhpdGNvZGUsIDApCiAKKyAgICBkZWYgY2hlY2tfZmF0YWxfZXJyb3Ioc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsICoqa3cpOgorICAgICAgICBmYXRhbF9lcnJvciA9ICdGYXRhbCBQeXRob24gZXJyb3I6ICVzJyAlIG5hbWVfcmVnZXgKKyAgICAgICAgc2VsZi5jaGVja19lcnJvcihjb2RlLCBsaW5lX251bWJlciwgZmF0YWxfZXJyb3IsICoqa3cpCisKKyAgICBkZWYgY2hlY2tfd2luZG93c19leGNlcHRpb24oc2VsZiwgY29kZSwgbGluZV9udW1iZXIsIG5hbWVfcmVnZXgsICoqa3cpOgorICAgICAgICBmYXRhbF9lcnJvciA9ICdXaW5kb3dzIGZhdGFsIGV4Y2VwdGlvbjogJXMnICUgbmFtZV9yZWdleAorICAgICAgICBzZWxmLmNoZWNrX2Vycm9yKGNvZGUsIGxpbmVfbnVtYmVyLCBmYXRhbF9lcnJvciwgKiprdykKKwogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtLnN0YXJ0c3dpdGgoJ2FpeCcpLAogICAgICAgICAgICAgICAgICAgICAgInRoZSBmaXJzdCBwYWdlIG9mIG1lbW9yeSBpcyBhIG1hcHBlZCByZWFkLW9ubHkgb24gQUlYIikKICAgICBkZWYgdGVzdF9yZWFkX251bGwoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCi0gICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCi0gICAgICAgICAgICBmYXVsdGhhbmRsZXIuZW5hYmxlKCkKLSAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKLSAgICAgICAgICAgICIiIiwKLSAgICAgICAgICAgIDMsCi0gICAgICAgICAgICAjIElzc3VlICMxMjcwMDogUmVhZCBOVUxMIHJhaXNlcyBTSUdJTEwgb24gTWFjIE9TIFggTGlvbgotICAgICAgICAgICAgJyg/OlNlZ21lbnRhdGlvbiBmYXVsdHxCdXMgZXJyb3J8SWxsZWdhbCBpbnN0cnVjdGlvbiknKQorICAgICAgICBpZiBub3QgTVNfV0lORE9XUzoKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgMywKKyAgICAgICAgICAgICAgICAjIElzc3VlICMxMjcwMDogUmVhZCBOVUxMIHJhaXNlcyBTSUdJTEwgb24gTWFjIE9TIFggTGlvbgorICAgICAgICAgICAgICAgICcoPzpTZWdtZW50YXRpb24gZmF1bHQnCisgICAgICAgICAgICAgICAgICAgICd8QnVzIGVycm9yJworICAgICAgICAgICAgICAgICAgICAnfElsbGVnYWwgaW5zdHJ1Y3Rpb24pJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuY2hlY2tfd2luZG93c19leGNlcHRpb24oIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmVhZF9udWxsKCkKKyAgICAgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAgICAgMywKKyAgICAgICAgICAgICAgICAnYWNjZXNzIHZpb2xhdGlvbicpCiAKICAgICBkZWYgdGVzdF9zaWdzZWd2KHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX2ZhdGFsX2Vycm9yKCIiIgpAQCAtMTI5LDYgKzE1MCwxNyBAQAogICAgICAgICAgICAgMywKICAgICAgICAgICAgICdTZWdtZW50YXRpb24gZmF1bHQnKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3QgSEFWRV9USFJFQURTLCAnbmVlZCB0aHJlYWRzJykKKyAgICBkZWYgdGVzdF9mYXRhbF9lcnJvcl9jX3RocmVhZChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19mYXRhbF9lcnJvcigiIiIKKyAgICAgICAgICAgIGltcG9ydCBmYXVsdGhhbmRsZXIKKyAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgZmF1bHRoYW5kbGVyLl9mYXRhbF9lcnJvcl9jX3RocmVhZCgpCisgICAgICAgICAgICAiIiIsCisgICAgICAgICAgICAzLAorICAgICAgICAgICAgJ2luIG5ldyB0aHJlYWQnLAorICAgICAgICAgICAga25vd19jdXJyZW50X3RocmVhZD1GYWxzZSkKKwogICAgIGRlZiB0ZXN0X3NpZ2FicnQoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2tfZmF0YWxfZXJyb3IoIiIiCiAgICAgICAgICAgICBpbXBvcnQgZmF1bHRoYW5kbGVyCkBAIC00NTgsMTQgKzQ5MCwxNCBAQAogICAgICAgICAgICAgbGluZW5vID0gOAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbGluZW5vID0gMTAKLSAgICAgICAgcmVnZXggPSAiIiIKKyAgICAgICAgcmVnZXggPSByIiIiCiAgICAgICAgICAgICBeVGhyZWFkIDB4WzAtOWEtZl0rIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgogICAgICAgICAgICAgKD86ICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIFtfYS16XSsKICAgICAgICAgICAgICl7ezEsM319ICBGaWxlICI8c3RyaW5nPiIsIGxpbmUgMjMgaW4gcnVuCiAgICAgICAgICAgICAgIEZpbGUgIi4qdGhyZWFkaW5nLnB5IiwgbGluZSBbMC05XSsgaW4gX2Jvb3RzdHJhcF9pbm5lcgogICAgICAgICAgICAgICBGaWxlICIuKnRocmVhZGluZy5weSIsIGxpbmUgWzAtOV0rIGluIF9ib290c3RyYXAKIAotICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgWFhYIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOgorICAgICAgICAgICAgQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6CiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSB7bGluZW5vfSBpbiBkdW1wCiAgICAgICAgICAgICAgIEZpbGUgIjxzdHJpbmc+IiwgbGluZSAyOCBpbiA8bW9kdWxlPiQKICAgICAgICAgICAgICIiIgpAQCAtNjM3LDkgKzY2OSw5IEBACiAgICAgICAgIHRyYWNlID0gJ1xuJy5qb2luKHRyYWNlKQogICAgICAgICBpZiBub3QgdW5yZWdpc3RlcjoKICAgICAgICAgICAgIGlmIGFsbF90aHJlYWRzOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0N1cnJlbnQgdGhyZWFkIFhYWCBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKKyAgICAgICAgICAgICAgICByZWdleCA9IHInQ3VycmVudCB0aHJlYWQgMHhbMC05YS1mXSsgXChtb3N0IHJlY2VudCBjYWxsIGZpcnN0XCk6XG4nCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ1N0YWNrIFwobW9zdCByZWNlbnQgY2FsbCBmaXJzdFwpOlxuJworICAgICAgICAgICAgICAgIHJlZ2V4ID0gcidTdGFjayBcKG1vc3QgcmVjZW50IGNhbGwgZmlyc3RcKTpcbicKICAgICAgICAgICAgIHJlZ2V4ID0gZXhwZWN0ZWRfdHJhY2ViYWNrKDE0LCAzMiwgcmVnZXgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KHRyYWNlLCByZWdleCkKICAgICAgICAgZWxzZToKQEAgLTY5Niw2ICs3MjgsMjIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5jaGVja19zdGRlcnJfbm9uZSgpOgogICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5yZWdpc3RlcihzaWduYWwuU0lHVVNSMSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKE1TX1dJTkRPV1MsICdzcGVjaWZpYyB0byBXaW5kb3dzJykKKyAgICBkZWYgdGVzdF9yYWlzZV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIGZvciBleGMsIG5hbWUgaW4gKAorICAgICAgICAgICAgKCdFWENFUFRJT05fQUNDRVNTX1ZJT0xBVElPTicsICdhY2Nlc3MgdmlvbGF0aW9uJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9JTlRfRElWSURFX0JZX1pFUk8nLCAnaW50IGRpdmlkZSBieSB6ZXJvJyksCisgICAgICAgICAgICAoJ0VYQ0VQVElPTl9TVEFDS19PVkVSRkxPVycsICdzdGFjayBvdmVyZmxvdycpLAorICAgICAgICApOgorICAgICAgICAgICAgc2VsZi5jaGVja193aW5kb3dzX2V4Y2VwdGlvbihmIiIiCisgICAgICAgICAgICAgICAgaW1wb3J0IGZhdWx0aGFuZGxlcgorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5lbmFibGUoKQorICAgICAgICAgICAgICAgIGZhdWx0aGFuZGxlci5fcmFpc2VfZXhjZXB0aW9uKGZhdWx0aGFuZGxlci5fe2V4Y30pCisgICAgICAgICAgICAgICAgIiIiLAorICAgICAgICAgICAgICAgIDMsCisgICAgICAgICAgICAgICAgbmFtZSkKKworCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X2ZpbGUucHkKaW5kZXggNGUzOTJiNy4uNjViZTMwZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZmlsZS5weQpAQCAtNyw3ICs3LDcgQEAKIGltcG9ydCBpbwogaW1wb3J0IF9weWlvIGFzIHB5aW8KIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTiwgcnVuX3VuaXR0ZXN0Citmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBVc2VyTGlzdAogCiBjbGFzcyBBdXRvRmlsZVRlc3RzOgpAQCAtMTM5LDcgKzEzOSw3IEBACiAKICAgICBkZWYgdGVzdE1vZGVTdHJpbmdzKHNlbGYpOgogICAgICAgICAjIGNoZWNrIGludmFsaWQgbW9kZSBzdHJpbmdzCi0gICAgICAgIGZvciBtb2RlIGluICgiIiwgImFVIiwgIndVKyIpOgorICAgICAgICBmb3IgbW9kZSBpbiAoIiIsICJhVSIsICJ3VSsiLCAiVSsiLCAiK1UiLCAiclUrIik6CiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgZiA9IHNlbGYub3BlbihURVNURk4sIG1vZGUpCiAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmlsZWlucHV0LnB5IGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKaW5kZXggNzg0YmM5Mi4uNTY1NjMzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9maWxlaW5wdXQucHkKQEAgLTIyLDggKzIyLDkgQEAKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8sIFN0cmluZ0lPCiBmcm9tIGZpbGVpbnB1dCBpbXBvcnQgRmlsZUlucHV0LCBob29rX2VuY29kZWQKIAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgcnVuX3VuaXR0ZXN0LCBjaGVja193YXJuaW5ncworZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IHZlcmJvc2UsIFRFU1RGTiwgY2hlY2tfd2FybmluZ3MKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCB1bmxpbmsgYXMgc2FmZV91bmxpbmsKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB1bml0dGVzdCBpbXBvcnQgbW9jawogCiAKQEAgLTkyLDcgKzkzLDExIEBACiAgICAgICAgICAgICAgICAgdDIgPSB3cml0ZVRtcCgyLCBbIkxpbmUgJXMgb2YgZmlsZSAyXG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMTApXSkKICAgICAgICAgICAgICAgICB0MyA9IHdyaXRlVG1wKDMsIFsiTGluZSAlcyBvZiBmaWxlIDNcbiIgJSAoaSsxKSBmb3IgaSBpbiByYW5nZSg1KV0pCiAgICAgICAgICAgICAgICAgdDQgPSB3cml0ZVRtcCg0LCBbIkxpbmUgJXMgb2YgZmlsZSA0XG4iICUgKGkrMSkgZm9yIGkgaW4gcmFuZ2UoMSldKQotICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGlmIGJzOgorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYnVmZmVyX3NpemVfdGVzdCh0MSwgdDIsIHQzLCB0NCwgYnMsIHJvdW5kKQogICAgICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgICAgICByZW1vdmVfdGVtcGZpbGVzKHQxLCB0MiwgdDMsIHQ0KQogCkBAIC05NDAsNyArOTQ1LDggQEAKIAogICAgIGRlZiB0ZXN0KHNlbGYpOgogICAgICAgICBlbmNvZGluZyA9IG9iamVjdCgpCi0gICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcpCisgICAgICAgIGVycm9ycyA9IG9iamVjdCgpCisgICAgICAgIHJlc3VsdCA9IGZpbGVpbnB1dC5ob29rX2VuY29kZWQoZW5jb2RpbmcsIGVycm9ycz1lcnJvcnMpCiAKICAgICAgICAgZmFrZV9vcGVuID0gSW52b2NhdGlvblJlY29yZGVyKCkKICAgICAgICAgb3JpZ2luYWxfb3BlbiA9IGJ1aWx0aW5zLm9wZW4KQEAgLTk1OCw4ICs5NjQsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzBdLCBmaWxlbmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRJcyhhcmdzWzFdLCBtb2RlKQogICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2VuY29kaW5nJyksIGVuY29kaW5nKQorICAgICAgICBzZWxmLmFzc2VydElzKGt3YXJncy5wb3AoJ2Vycm9ycycpLCBlcnJvcnMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoa3dhcmdzKQogCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAnd2InKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShiJ1x4ODBhYmMnKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2FmZV91bmxpbmssIFRFU1RGTikKKworICAgICAgICBkZWYgY2hlY2soZXJyb3JzLCBleHBlY3RlZF9saW5lcyk6CisgICAgICAgICAgICB3aXRoIEZpbGVJbnB1dChmaWxlcz1URVNURk4sIG1vZGU9J3InLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Blbmhvb2s9aG9va19lbmNvZGVkKCd1dGYtOCcsIGVycm9ycz1lcnJvcnMpKSBhcyBmaToKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGxpc3QoZmkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBleHBlY3RlZF9saW5lcykKKworICAgICAgICBjaGVjaygnaWdub3JlJywgWydhYmMnXSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IpOgorICAgICAgICAgICAgY2hlY2soJ3N0cmljdCcsIFsnYWJjJ10pCisgICAgICAgIGNoZWNrKCdyZXBsYWNlJywgWydcdWZmZmRhYmMnXSkKKyAgICAgICAgY2hlY2soJ2JhY2tzbGFzaHJlcGxhY2UnLCBbJ1xceDgwYWJjJ10pCisKICAgICBkZWYgdGVzdF9tb2RlcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3diJykgYXMgZjoKICAgICAgICAgICAgICMgVVRGLTcgaXMgYSBjb252ZW5pZW50LCBzZWxkb20gdXNlZCBlbmNvZGluZwpAQCAtOTgxLDUgKzEwMDUsMTEgQEAKICAgICAgICAgICAgIGNoZWNrKCdyYicsIFsnQVxuJywgJ0JcclxuJywgJ0NccicsICdEXHUyMGFjJ10pCiAKIAorY2xhc3MgTWlzY1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIHRlc3RfYWxsKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBmaWxlaW5wdXQpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zsb2F0LnB5CmluZGV4IGNiMWY2ZGIuLmFjODQ3M2QgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZmxvYXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbG9hdC5weQpAQCAtMSw2ICsxLDQgQEAKLQogaW1wb3J0IGZyYWN0aW9ucwotaW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IG9zCiBpbXBvcnQgcmFuZG9tCkBAIC0xMCw2ICs4LDggQEAKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2Zyb20gdGVzdC50ZXN0X2dyYW1tYXIgaW1wb3J0IChWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIElOVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUykKIGZyb20gbWF0aCBpbXBvcnQgaXNpbmYsIGlzbmFuLCBjb3B5c2lnbiwgbGRleHAKIAogSU5GID0gZmxvYXQoImluZiIpCkBAIC02MSw2ICs2MSwyNyBAQAogICAgICAgICBmbG9hdChiJy4nICsgYicxJyoxMDAwKQogICAgICAgICBmbG9hdCgnLicgKyAnMScqMTAwMCkKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBldmFsKGxpdCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbG9hdChsaXQpLCBmbG9hdChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgbGl0IGluICgnMF83JywgJzA5Xzk5Jyk6ICAjIG9jdGFscyBhcmUgbm90IHJlY29nbml6ZWQgaGVyZQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBub3QgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJ2pKeFhvT2JCJyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsIGxpdCkKKyAgICAgICAgIyBBZGRpdGlvbmFsIHRlc3QgY2FzZXM7IG5hbiBhbmQgaW5mIGFyZSBuZXZlciB2YWxpZCBhcyBsaXRlcmFscywKKyAgICAgICAgIyBvbmx5IGluIHRoZSBmbG9hdCgpIGNvbnN0cnVjdG9yLCBidXQgd2UgZG9uJ3QgYWxsb3cgdW5kZXJzY29yZXMKKyAgICAgICAgIyBpbiBvciBhcm91bmQgdGhlbS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdfTmFOJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdOYV9OJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICdJTl9GJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICctX0lORicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnLUlORl8nKQorICAgICAgICAjIENoZWNrIHRoYXQgd2UgaGFuZGxlIGJ5dGVzIHZhbHVlcyBjb3JyZWN0bHkuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCBiJzBfLlx4ZmY5JykKKwogICAgIGRlZiB0ZXN0X25vbl9udW1lcmljX2lucHV0X3R5cGVzKHNlbGYpOgogICAgICAgICAjIFRlc3QgcG9zc2libGUgbm9uLW51bWVyaWMgdHlwZXMgZm9yIHRoZSBhcmd1bWVudCB4LCBpbmNsdWRpbmcKICAgICAgICAgIyBzdWJjbGFzc2VzIG9mIHRoZSBleHBsaWNpdGx5IGRvY3VtZW50ZWQgYWNjZXB0ZWQgdHlwZXMuCkBAIC0xNjIsMTEgKzE4MywxMiBAQAogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gZmxvYXQoc3RyKHNlbGYpKSArIDEKIAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKGZsb2F0KEZvbzEoKSksIDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb28yKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0QWxtb3N0RXF1YWwoZmxvYXQoRm9vMygyMSkpLCA0Mi4pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxvYXQoRm9vMSgpKSwgNDIuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzIoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvbzMoMjEpKSwgNDIuKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGZsb2F0LCBGb280KDQyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGb29TdHIoJzgnKSksIDkuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEZvb1N0cignOCcpKSwgOS4pCiAKICAgICAgICAgY2xhc3MgRm9vNToKICAgICAgICAgICAgIGRlZiBfX2Zsb2F0X18oc2VsZik6CkBAIC0xNzcsMTAgKzE5OSwxNCBAQAogICAgICAgICBjbGFzcyBGOgogICAgICAgICAgICAgZGVmIF9fZmxvYXRfXyhzZWxmKToKICAgICAgICAgICAgICAgICByZXR1cm4gT3RoZXJGbG9hdFN1YmNsYXNzKDQyLikKLSAgICAgICAgc2VsZi5hc3NlcnRBbG1vc3RFcXVhbChmbG9hdChGKCkpLCA0Mi4pCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShmbG9hdChGKCkpKSwgT3RoZXJGbG9hdFN1YmNsYXNzKQotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKEZsb2F0U3ViY2xhc3MoRigpKSwgNDIuKQotICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoRmxvYXRTdWJjbGFzcyhGKCkpKSwgRmxvYXRTdWJjbGFzcykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZsb2F0KEYoKSksIDQyLikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUoZmxvYXQoRigpKSksIGZsb2F0KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoRmxvYXRTdWJjbGFzcyhGKCkpLCA0Mi4pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKEZsb2F0U3ViY2xhc3MoRigpKSksIEZsb2F0U3ViY2xhc3MpCiAKICAgICBkZWYgdGVzdF9pc19pbnRlZ2VyKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKCgxLjEpLmlzX2ludGVnZXIoKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weSBiL0xpYi90ZXN0L3Rlc3RfZm5tYXRjaC5weQppbmRleCBmYTM3ZjkwLi5mYjc0MjQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZubWF0Y2gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mbm1hdGNoLnB5CkBAIC02MiwxNCArNjIsMTQgQEAKIGNsYXNzIFRyYW5zbGF0ZVRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X3RyYW5zbGF0ZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJyonKSwgJy4qXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksICcuXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdhP2IqJyksICdhLmIuKlxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW2FiY10nKSwgJ1thYmNdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgJ1tdXVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnWyF4XScpLCAnW154XVxaKD9tcyknKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnW154XScpLCAnW1xcXnhdXFooP21zKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbeCcpLCAnXFxbeFxaKD9tcyknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnKicpLCByJyg/czouKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCc/JyksIHInKD9zOi4pXFonKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYW5zbGF0ZSgnYT9iKicpLCByJyg/czphLmIuKilcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbYWJjXScpLCByJyg/czpbYWJjXSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXV0nKSwgcicoP3M6W11dKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1sheF0nKSwgcicoP3M6W154XSlcWicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhbnNsYXRlKCdbXnhdJyksIHInKD9zOltcXnhdKVxaJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFuc2xhdGUoJ1t4JyksIHInKD9zOlxbeClcWicpCiAKIAogY2xhc3MgRmlsdGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mb3JtYXQucHkgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQppbmRleCA5YjEzNjMyLi44YWZkNWI4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Zvcm1hdC5weQpAQCAtMjc0LDcgKzI3NCw3IEBACiAgICAgICAgIHRlc3RfZXhjKCclZCcsICcxJywgVHlwZUVycm9yLCAiJWQgZm9ybWF0OiBhIG51bWJlciBpcyByZXF1aXJlZCwgbm90IHN0ciIpCiAgICAgICAgIHRlc3RfZXhjKCcleCcsICcxJywgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3Qgc3RyIikKICAgICAgICAgdGVzdF9leGMoJyV4JywgMy4xNCwgVHlwZUVycm9yLCAiJXggZm9ybWF0OiBhbiBpbnRlZ2VyIGlzIHJlcXVpcmVkLCBub3QgZmxvYXQiKQotICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKQorICAgICAgICB0ZXN0X2V4YygnJWcnLCAnMScsIFR5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCBzdHIiKQogICAgICAgICB0ZXN0X2V4Yygnbm8gZm9ybWF0JywgJzEnLCBUeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICJub3QgYWxsIGFyZ3VtZW50cyBjb252ZXJ0ZWQgZHVyaW5nIHN0cmluZyBmb3JtYXR0aW5nIikKICAgICAgICAgdGVzdF9leGMoJyVjJywgLTEsIE92ZXJmbG93RXJyb3IsICIlYyBhcmcgbm90IGluIHJhbmdlKDB4MTEwMDAwKSIpCkBAIC0zMDAsNiArMzAwLDggQEAKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgNywgYiJceDA3IikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYiJaIiwgYiJaIikKICAgICAgICAgdGVzdGNvbW1vbihiIiVjIiwgYnl0ZWFycmF5KGIiWiIpLCBiIloiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJTVjIiwgNjUsIGIiICAgIEEiKQorICAgICAgICB0ZXN0Y29tbW9uKGIiJS01YyIsIDY1LCBiIkEgICAgIikKICAgICAgICAgIyAlYiB3aWxsIGluc2VydCBhIHNlcmllcyBvZiBieXRlcywgZWl0aGVyIGZyb20gYSB0eXBlIHRoYXQgc3VwcG9ydHMKICAgICAgICAgIyB0aGUgUHlfYnVmZmVyIHByb3RvY29sLCBvciBzb21ldGhpbmcgdGhhdCBoYXMgYSBfX2J5dGVzX18gbWV0aG9kCiAgICAgICAgIGNsYXNzIEZha2VCeXRlcyhvYmplY3QpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mcmFjdGlvbnMucHkgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQppbmRleCA5ZGY0YTU0Li43OTA1YzM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ZyYWN0aW9ucy5weQpAQCAtMTUwLDYgKzE1MCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgIjMvMiIsIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMGopCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMywgMWopCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgRiwgMSwgMiwgMykKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0SW5pdEZyb21GbG9hdChzZWxmKToKQEAgLTI2MywxMyArMjY0LDEzIEBACiAgICAgICAgIG5hbiA9IGluZiAtIGluZgogICAgICAgICAjIGJ1ZyAxNjQ2OTogZXJyb3IgdHlwZXMgc2hvdWxkIGJlIGNvbnNpc3RlbnQgd2l0aCBmbG9hdCAtPiBpbnQKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNNZXNzYWdlKAotICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgIkNhbm5vdCBjb252ZXJ0IGluZiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2Zsb2F0LCBpbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCAtaW5mIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIC1pbmYpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIFZhbHVlRXJyb3IsICJDYW5ub3QgY29udmVydCBuYW4gdG8gRnJhY3Rpb24uIiwKKyAgICAgICAgICAgIFZhbHVlRXJyb3IsICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZmxvYXQsIG5hbikKIAogICAgIGRlZiB0ZXN0RnJvbURlY2ltYWwoc2VsZik6CkBAIC0yODQsMTYgKzI4NSwxNiBAQAogCiAgICAgICAgICMgYnVnIDE2NDY5OiBlcnJvciB0eXBlcyBzaG91bGQgYmUgY29uc2lzdGVudCB3aXRoIGRlY2ltYWwgLT4gaW50CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzTWVzc2FnZSgKLSAgICAgICAgICAgIE92ZXJmbG93RXJyb3IsICJDYW5ub3QgY29udmVydCBJbmZpbml0eSB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgT3ZlcmZsb3dFcnJvciwgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoImluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiQ2Fubm90IGNvbnZlcnQgLUluZmluaXR5IHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBPdmVyZmxvd0Vycm9yLCAiY2Fubm90IGNvbnZlcnQgSW5maW5pdHkgdG8gaW50ZWdlciByYXRpbyIsCiAgICAgICAgICAgICBGLmZyb21fZGVjaW1hbCwgRGVjaW1hbCgiLWluZiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgTmFOIHRvIEZyYWN0aW9uLiIsCisgICAgICAgICAgICBWYWx1ZUVycm9yLCAiY2Fubm90IGNvbnZlcnQgTmFOIHRvIGludGVnZXIgcmF0aW8iLAogICAgICAgICAgICAgRi5mcm9tX2RlY2ltYWwsIERlY2ltYWwoIm5hbiIpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc01lc3NhZ2UoCi0gICAgICAgICAgICBWYWx1ZUVycm9yLCAiQ2Fubm90IGNvbnZlcnQgc05hTiB0byBGcmFjdGlvbi4iLAorICAgICAgICAgICAgVmFsdWVFcnJvciwgImNhbm5vdCBjb252ZXJ0IE5hTiB0byBpbnRlZ2VyIHJhdGlvIiwKICAgICAgICAgICAgIEYuZnJvbV9kZWNpbWFsLCBEZWNpbWFsKCJzbmFuIikpCiAKICAgICBkZWYgdGVzdExpbWl0RGVub21pbmF0b3Ioc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2ZzdHJpbmcucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTI5OTVmZAotLS0gL2Rldi9udWxsCisrKyBiL0xpYi90ZXN0L3Rlc3RfZnN0cmluZy5weQpAQCAtMCwwICsxLDc0OCBAQAoraW1wb3J0IGFzdAoraW1wb3J0IHR5cGVzCitpbXBvcnQgZGVjaW1hbAoraW1wb3J0IHVuaXR0ZXN0CisKK2FfZ2xvYmFsID0gJ2dsb2JhbCB2YXJpYWJsZScKKworIyBZb3UgY291bGQgYXJndWUgdGhhdCBJJ20gdG9vIHN0cmljdCBpbiBsb29raW5nIGZvciBzcGVjaWZpYyBlcnJvcgorIyAgdmFsdWVzIHdpdGggYXNzZXJ0UmFpc2VzUmVnZXgsIGJ1dCB3aXRob3V0IGl0IGl0J3Mgd2F5IHRvbyBlYXN5IHRvCisjICBtYWtlIGEgc3ludGF4IGVycm9yIGluIHRoZSB0ZXN0IHN0cmluZ3MuIEVzcGVjaWFsbHkgd2l0aCBhbGwgb2YgdGhlCisjICB0cmlwbGUgcXVvdGVzLCByYXcgc3RyaW5ncywgYmFja3NsYXNoZXMsIGV0Yy4gSSB0aGluayBpdCdzIGEKKyMgIHdvcnRod2hpbGUgdHJhZGVvZmYuIFdoZW4gSSBzd2l0Y2hlZCB0byB0aGlzIG1ldGhvZCwgSSBmb3VuZCBtYW55CisjICBleGFtcGxlcyB3aGVyZSBJIHdhc24ndCB0ZXN0aW5nIHdoYXQgSSB0aG91Z2h0IEkgd2FzLgorCitjbGFzcyBUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGFzc2VydEFsbFJhaXNlKHNlbGYsIGV4Y2VwdGlvbl90eXBlLCByZWdleCwgZXJyb3Jfc3RyaW5ncyk6CisgICAgICAgIGZvciBzdHIgaW4gZXJyb3Jfc3RyaW5nczoKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHN0cj1zdHIpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChleGNlcHRpb25fdHlwZSwgcmVnZXgpOgorICAgICAgICAgICAgICAgICAgICBldmFsKHN0cikKKworICAgIGRlZiB0ZXN0X19mb3JtYXRfX2xvb2t1cChzZWxmKToKKyAgICAgICAgIyBNYWtlIHN1cmUgX19mb3JtYXRfXyBpcyBsb29rZWQgdXAgb24gdGhlIHR5cGUsIG5vdCB0aGUgaW5zdGFuY2UuCisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICByZXR1cm4gJ2NsYXNzJworCisgICAgICAgIHggPSBYKCkKKworICAgICAgICAjIEFkZCBhIGJvdW5kIF9fZm9ybWF0X18gbWV0aG9kIHRvIHRoZSAneScgaW5zdGFuY2UsIGJ1dCBub3QKKyAgICAgICAgIyAgdGhlICd4JyBpbnN0YW5jZS4KKyAgICAgICAgeSA9IFgoKQorICAgICAgICB5Ll9fZm9ybWF0X18gPSB0eXBlcy5NZXRob2RUeXBlKGxhbWJkYSBzZWxmLCBzcGVjOiAnaW5zdGFuY2UnLCB5KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCBmb3JtYXQoeSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eX0nLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCh4KSwgZm9ybWF0KHkpKQorCisgICAgICAgICMgX19mb3JtYXRfXyBpcyBub3QgY2FsbGVkIHRoaXMgd2F5LCBidXQgc3RpbGwgbWFrZSBzdXJlIGl0CisgICAgICAgICMgIHJldHVybnMgd2hhdCB3ZSBleHBlY3QgKHNvIHdlIGNhbiBtYWtlIHN1cmUgd2UncmUgYnlwYXNzaW5nCisgICAgICAgICMgIGl0KS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh4Ll9fZm9ybWF0X18oJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHkuX19mb3JtYXRfXygnJyksICdpbnN0YW5jZScpCisKKyAgICAgICAgIyBUaGlzIGlzIGhvdyBfX2Zvcm1hdF9fIGlzIGFjdHVhbGx5IGNhbGxlZC4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHgpLl9fZm9ybWF0X18oeCwgJycpLCAnY2xhc3MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHR5cGUoeSkuX19mb3JtYXRfXyh5LCAnJyksICdjbGFzcycpCisKKyAgICBkZWYgdGVzdF9hc3Qoc2VsZik6CisgICAgICAgICMgSW5zcGlyZWQgYnkgaHR0cDovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI0OTc1CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5jYWxsZWQgPSBGYWxzZQorICAgICAgICAgICAgZGVmIF9fY2FsbF9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuY2FsbGVkID0gVHJ1ZQorICAgICAgICAgICAgICAgIHJldHVybiA0CisgICAgICAgIHggPSBYKCkKKyAgICAgICAgZXhwciA9ICIiIgorYSA9IDEwCitmJ3thICogeCgpfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorCisgICAgICAgICMgTWFrZSBzdXJlIHggd2FzIG5vdCBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoeC5jYWxsZWQpCisKKyAgICAgICAgIyBBY3R1YWxseSBydW4gdGhlIGNvZGUuCisgICAgICAgIGV4ZWMoYykKKworICAgICAgICAjIE1ha2Ugc3VyZSB4IHdhcyBjYWxsZWQuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LmNhbGxlZCkKKworICAgIGRlZiB0ZXN0X2xpdGVyYWxfZXZhbChzZWxmKToKKyAgICAgICAgIyBXaXRoIG5vIGV4cHJlc3Npb25zLCBhbiBmLXN0cmluZyBpcyBva2F5LgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoImYneCciKSwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFzdC5saXRlcmFsX2V2YWwoImYneCcgJ3knIiksICd4eScpCisKKyAgICAgICAgIyBCdXQgdGhpcyBzaG91bGQgcmFpc2UgYW4gZXJyb3IuCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nJyk6CisgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKCJmJ3h7M30nIikKKworICAgICAgICAjIEFzIHNob3VsZCB0aGlzLCB3aGljaCB1c2VzIGEgZGlmZmVyZW50IGFzdCBub2RlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnbWFsZm9ybWVkIG5vZGUgb3Igc3RyaW5nJyk6CisgICAgICAgICAgICBhc3QubGl0ZXJhbF9ldmFsKCJmJ3szfSciKQorCisgICAgZGVmIHRlc3RfYXN0X2NvbXBpbGVfdGltZV9jb25jYXQoc2VsZik6CisgICAgICAgIHggPSBbJyddCisKKyAgICAgICAgZXhwciA9ICIiInhbMF0gPSAnZm9vJyBmJ3szfSciIiIKKyAgICAgICAgdCA9IGFzdC5wYXJzZShleHByKQorICAgICAgICBjID0gY29tcGlsZSh0LCAnJywgJ2V4ZWMnKQorICAgICAgICBleGVjKGMpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeFswXSwgJ2ZvbzMnKQorCisgICAgZGVmIHRlc3RfbGl0ZXJhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYScsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJyAnLCAnICcpCisKKyAgICBkZWYgdGVzdF91bnRlcm1pbmF0ZWRfc3RyaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IHVudGVybWluYXRlZCBzdHJpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyIiIiZid7IngnIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIiIiZid7Inh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiImYneygieCciIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiIiJmJ3soInh9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X21pc21hdGNoZWRfcGFyZW5zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IG1pc21hdGNoZWQnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7KCh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9kb3VibGVfYnJhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3snLCAneycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhe3snLCAnYXsnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3tiJywgJ3tiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2InLCAnYXtiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319JywgJ30nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnYX19JywgJ2F9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319YicsICd9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidhfX1iJywgJ2F9YicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e319JywgJ3t9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319JywgJ2F7fScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e2J9fScsICd7Yn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3t9fWMnLCAne31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fScsICdhe2J9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e319YycsICdhe31jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t7Yn19YycsICd7Yn1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2F7e2J9fWMnLCAnYXtifWMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7e3sxMH0nLCAnezEwJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ319ezEwfScsICd9MTAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnfX17e3sxMH0nLCAnfXsxMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid9fWF7e3sxMH0nLCAnfWF7MTAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9e3snLCAnMTB7JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMH19fScsICcxMH0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezEwfX19e3snLCAnMTB9eycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTB9fX1he3snICd9JywgJzEwfWF7fScpCisKKyAgICAgICAgIyBJbnNpZGUgb2Ygc3RyaW5ncywgZG9uJ3QgaW50ZXJwcmV0IGRvdWJsZWQgYnJhY2tldHMuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Int7fX0ifScsICd7e319JykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFR5cGVFcnJvciwgJ3VuaGFzaGFibGUgdHlwZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3sge3t9fSB9JyIsICMgZGljdCBpbiBhIHNldAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tcGlsZV90aW1lX2NvbmNhdChzZWxmKToKKyAgICAgICAgeCA9ICdkZWYnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2FiYycgZicjIyB7eH1naGknLCAnYWJjIyMgZGVmZ2hpJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnYWJjJyBmJ3t4fScgJ2doaScsICdhYmNkZWZnaGknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnIGYne3h9JyAnZ2gnIGYnaXt4OjR9JywgJ2FiY2RlZmdoaWRlZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7eH0nIGYne3h9JywgJ3t4fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4JyBmJ3t4fScsICd7eGRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3t4fScgZid7eH0nLCAne3h9ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4fX0nIGYne3h9JywgJ3t7eH19ZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgne3t4JyBmJ3t4fScsICd7e3hkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd4fX0nIGYne3h9JywgJ3h9fWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nICd4fX0nLCAnZGVmeH19JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJycsICdkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYne3h9JyAnJywgJ2RlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZid7eH0nLCAnZGVmJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3t4fScgJzInLCAnZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JyAnMicsICcxZGVmMicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJzEnIGYne3h9JywgJzFkZWYnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3h9JyBmJy17eH0nLCAnZGVmLWRlZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJyBmJycgJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcnIGYnJyAnJyBmJycsICcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnJywgJycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnICcnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnLCAnJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJycgJycgZicnICcnLCAnJykKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7MycgZid9JyIsICAjIGNhbid0IGNvbmNhdCB0byBnZXQgYSB2YWxpZCBmLXN0cmluZworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfY29tbWVudHMoc2VsZik6CisgICAgICAgICMgVGhlc2UgYXJlbid0IGNvbW1lbnRzLCBzaW5jZSB0aGV5J3JlIGluIHN0cmluZ3MuCisgICAgICAgIGQgPSB7JyMnOiAnaGFzaCd9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiMifScsICcjJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyIjIl19JywgJ2hhc2gnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZyBleHByZXNzaW9uIHBhcnQgY2Fubm90IGluY2x1ZGUgJyMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezEjfSciLCAgICMgZXJyb3IgYmVjYXVzZSB0aGUgZXhwcmVzc2lvbiBiZWNvbWVzICIoMSMpIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MygjKX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3spI30nIiwgICAjIFdoZW4gd3JhcHBlZCBpbiBwYXJlbnMsIHRoaXMgYmVjb21lcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgJygpIyknLiAgTWFrZSBzdXJlIHRoYXQgZG9lc24ndCBjb21waWxlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfbWFueV9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgIyBDcmVhdGUgYSBzdHJpbmcgd2l0aCBtYW55IGV4cHJlc3Npb25zIGluIGl0LiBOb3RlIHRoYXQKKyAgICAgICAgIyAgYmVjYXVzZSB3ZSBoYXZlIGEgc3BhY2UgaW4gaGVyZSBhcyBhIGxpdGVyYWwsIHdlJ3JlIGFjdHVhbGx5CisgICAgICAgICMgIGdvaW5nIHRvIHVzZSB0d2ljZSBhcyBtYW55IGFzdCBub2Rlczogb25lIGZvciBlYWNoIGxpdGVyYWwKKyAgICAgICAgIyAgcGx1cyBvbmUgZm9yIGVhY2ggZXhwcmVzc2lvbi4KKyAgICAgICAgZGVmIGJ1aWxkX2ZzdHIobiwgZXh0cmE9JycpOgorICAgICAgICAgICAgcmV0dXJuICJmJyIgKyAoJ3t4fSAnICogbikgKyBleHRyYSArICInIgorCisgICAgICAgIHggPSAnWCcKKyAgICAgICAgd2lkdGggPSAxCisKKyAgICAgICAgIyBUZXN0IGFyb3VuZCAyNTYuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDI1MCwgMjYwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKGkpKSwgKHgrJyAnKSppKQorCisgICAgICAgICMgVGVzdCBjb25jYXRlbmF0aW5nIDIgbGFyZ3MgZnN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChidWlsZF9mc3RyKDI1NSkqMjU2KSwgKHgrJyAnKSooMjU1KjI1NikpCisKKyAgICAgICAgcyA9IGJ1aWxkX2ZzdHIoMjUzLCAne3g6e3dpZHRofX0gJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHMpLCAoeCsnICcpKjI1NCkKKworICAgICAgICAjIFRlc3QgbG90cyBvZiBleHByZXNzaW9ucyBhbmQgY29uc3RhbnRzLCBjb25jYXRlbmF0ZWQuCisgICAgICAgIHMgPSAiZid7MX0nICd4JyAneSciICogMTAyNAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwocyksICcxeHknICogMTAyNCkKKworICAgIGRlZiB0ZXN0X2Zvcm1hdF9zcGVjaWZpZXJfZXhwcmVzc2lvbnMoc2VsZik6CisgICAgICAgIHdpZHRoID0gMTAKKyAgICAgICAgcHJlY2lzaW9uID0gNAorICAgICAgICB2YWx1ZSA9IGRlY2ltYWwuRGVjaW1hbCgnMTIuMzQ1NjcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6e3dpZHRofS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aCFyfS57cHJlY2lzaW9ufX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnt3aWR0aDowfS57cHJlY2lzaW9uOjF9fScsICdyZXN1bHQ6ICAgICAgMTIuMzUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYncmVzdWx0OiB7dmFsdWU6ezF9ezA6MH0ue3ByZWNpc2lvbjoxfX0nLCAncmVzdWx0OiAgICAgIDEyLjM1JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Jlc3VsdDoge3ZhbHVlOnsgMX17IDA6MH0ueyBwcmVjaXNpb246MX19JywgJ3Jlc3VsdDogICAgICAxMi4zNScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7MTA6I3sxfTB4fScsICcgICAgICAgMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDp7IiMifTF7MH17IngifX0nLCAnICAgICAgIDB4YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7LTEwOi17IiMifTF7MH14fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3stMTA6eyItIn0jezF9MHsieCJ9fScsICcgICAgICAtMHhhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sxMDojezMgIT0gezQ6NX0gYW5kIHdpZHRofXh9JywgJyAgICAgICAweGEnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyIiImYneyJzIiFyeyI6MTAifX0nIiIiLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVGhpcyBsb29rcyBsaWtlIGEgbmVzdGVkIGZvcm1hdCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJpbnZhbGlkIHN5bnRheCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgSW52YWxpZCBzeW50YXggaW5zaWRlIGEgbmVzdGVkIHNwZWMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s0OnsvNX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBleHByZXNzaW9ucyBuZXN0ZWQgdG9vIGRlZXBseSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyMgQ2FuJ3QgbmVzdCBmb3JtYXQgc3BlY2lmaWVycy4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYncmVzdWx0OiB7dmFsdWU6e3dpZHRoOnswfX0ue3ByZWNpc2lvbjoxfX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsjIE5vIGV4cGFuc2lvbiBpbnNpZGUgY29udmVyc2lvbiBvciBmb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyAgdGhlIDogb3IgISBpdHNlbGYuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIiImYneyJzIiF7InIifX0nIiIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfc2lkZV9lZmZlY3Rfb3JkZXIoc2VsZik6CisgICAgICAgIGNsYXNzIFg6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5pID0gMAorICAgICAgICAgICAgZGVmIF9fZm9ybWF0X18oc2VsZiwgc3BlYyk6CisgICAgICAgICAgICAgICAgc2VsZi5pICs9IDEKKyAgICAgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuaSkKKworICAgICAgICB4ID0gWCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0ge3h9JywgJzEgMicpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX2V4cHJlc3Npb24oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICdmLXN0cmluZzogZW1wdHkgZXhwcmVzc2lvbiBub3QgYWxsb3dlZCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3t9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgfSciCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJyB7fSAnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICFyfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MTA6eyB9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZicgeyB9ICciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQ2F0Y2ggdGhlIGVtcHR5IGV4cHJlc3Npb24gYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICBpbnZhbGlkIGNvbnZlcnNpb24uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyAheHJ9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sheDphfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7ICF4cjp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3sgIXhyOmF9JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyF9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3s6fSciLAorCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgV2UgZmluZCB0aGUgZW1wdHkgZXhwcmVzc2lvbiBiZWZvcmUgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgIG1pc3NpbmcgY2xvc2luZyBicmFjZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyEnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyFzOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7OngnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X3BhcmVuc19pbl9leHByZXNzaW9ucyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLH0nLCAnKDMsKScpCisKKyAgICAgICAgIyBBZGQgdGhlc2UgYmVjYXVzZSB3aGVuIGFuIGV4cHJlc3Npb24gaXMgZXZhbHVhdGVkLCBwYXJlbnMKKyAgICAgICAgIyAgYXJlIGFkZGVkIGFyb3VuZCBpdC4gQnV0IHdlIHNob3VsZG4ndCBnbyBmcm9tIGFuIGludmFsaWQKKyAgICAgICAgIyAgZXhwcmVzc2lvbiB0byBhIHZhbGlkIG9uZS4gVGhlIGFkZGVkIHBhcmVucyBhcmUganVzdAorICAgICAgICAjICBzdXBwb3NlZCB0byBhbGxvdyB3aGl0ZXNwYWNlIChpbmNsdWRpbmcgbmV3bGluZXMpLgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7LH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyx9JyIsICAjIHRoaXMgaXMgKCwpLCB3aGljaCBpcyBhbiBlcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyJmJ3szKSsoNH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnRU9MIHdoaWxlIHNjYW5uaW5nIHN0cmluZyBsaXRlcmFsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne1xufSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYmFja3NsYXNoZXNfaW5fc3RyaW5nX3BhcnQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdCcsICdcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcdCcsICdcXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJ1x0JywgJ1xcdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdCcsICcyXHQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XHR7M30nLCAnMlx0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdHszfScsICdcdDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAzOTQnLCAnXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyJ1x1MDM5NCcsICdcXHUwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcdTAzOTQnLCAnXFx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cdTAzOTR7M30nLCAnMlx1MDM5NDMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnXHUwMzk0ezN9JywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcVTAwMDAwMzk0JywgJ1x1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZidcVTAwMDAwMzk0JywgJ1xcVTAwMDAwMzk0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVxVMDAwMDAzOTQnLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1cVTAwMDAwMzk0ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xVMDAwMDAzOTR7M30nLCAnXHUwMzk0MycpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfScsICdcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9JywgJzJcdTAzOTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezJ9XE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9ezN9JywgJzJcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBfXszfScsICdcdTAzOTQzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJzJcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0nLCAnMlx1MDM5NCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXE57R1JFRUsgQ0FQSVRBTCBMRVRURVIgREVMVEF9MycsICcyXHUwMzk0MycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQX0zJywgJ1x1MDM5NDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDIwJywgJyAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHInXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmYnXHgyMCcsICdcXHgyMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Mn1ceDIwJywgJzIgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syfVx4MjB7M30nLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjB7M30nLCAnIDMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMCcsICcyICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicyXHgyMDMnLCAnMiAzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1x4MjAzJywgJyAzJykKKworICAgIGRlZiB0ZXN0X21pc2Zvcm1lZF91bmljb2RlX2NoYXJhY3Rlcl9uYW1lKHNlbGYpOgorICAgICAgICAjIFRoZXNlIHRlc3QgYXJlIG5lZWRlZCBiZWNhdXNlIHVuaWNvZGUgbmFtZXMgYXJlIHBhcnNlZAorICAgICAgICAjIGRpZmZlcmVudGx5IGluc2lkZSBmLXN0cmluZ3MuCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsIHIiXCh1bmljb2RlIGVycm9yXCkgJ3VuaWNvZGVlc2NhcGUnIGNvZGVjIGNhbid0IGRlY29kZSBieXRlcyBpbiBwb3NpdGlvbiAuKjogbWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZidcTnsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ1xOe0dSRUVLIENBUElUQUwgTEVUVEVSIERFTFRBJyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBIZXJlIGFyZSB0aGUgbm9uLWYtc3RyaW5nIHZlcnNpb25zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICB3aGljaCBzaG91bGQgZ2l2ZSB0aGUgc2FtZSBlcnJvcnMuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiJ1xOeyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICByIidcTntHUkVFSyBDQVBJVEFMIExFVFRFUiBERUxUQSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3Rfbm9fYmFja3NsYXNoZXNfaW5fZXhwcmVzc2lvbl9wYXJ0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlIGEgYmFja3NsYXNoJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbciJmJ3tcJ2FcJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3tcdDN9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XCdhXCd9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIicmYne1x0M30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJyZid7XH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciIiInJmJ3siXE57TEVGVCBDVVJMWSBCUkFDS0VUfSJ9JyIiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X25vX2VzY2FwZXNfZm9yX2JyYWNlcyhzZWxmKToKKyAgICAgICAgIyBceDdiIGlzICd7Jy4gIE1ha2Ugc3VyZSBpdCBkb2Vzbid0IHN0YXJ0IGFuIGV4cHJlc3Npb24uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDdiMn19JywgJ3syfScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidceDdiMicsICd7MicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidcdTAwN2IyJywgJ3syJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1xOe0xFRlQgQ1VSTFkgQlJBQ0tFVH0yXE57UklHSFQgQ1VSTFkgQlJBQ0tFVH0nLCAnezJ9JykKKworICAgIGRlZiB0ZXN0X25ld2xpbmVzX2luX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezB9JywgJzAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJmJycnezMrCis0fScnJywgJzcnKQorCisgICAgZGVmIHRlc3RfbGFtYmRhKHNlbGYpOgorICAgICAgICB4ID0gNQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyhsYW1iZGEgeTp4KnkpKCI4Iikhcn0nLCAiJzg4ODg4JyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7KGxhbWJkYSB5OngqeSkoIjgiKSFyOjEwfScsICInODg4ODgnICAgIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sobGFtYmRhIHk6eCp5KSgiOCIpOjEwfScsICI4ODg4OCAgICAgIikKKworICAgICAgICAjIGxhbWJkYSBkb2Vzbid0IHdvcmsgd2l0aG91dCBwYXJlbnMsIGJlY2F1c2UgdGhlIGNvbG9uCisgICAgICAgICMgIG1ha2VzIHRoZSBwYXJzZXIgdGhpbmsgaXQncyBhIGZvcm1hdF9zcGVjCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoU3ludGF4RXJyb3IsICd1bmV4cGVjdGVkIEVPRiB3aGlsZSBwYXJzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne2xhbWJkYSB4Onh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF95aWVsZChzZWxmKToKKyAgICAgICAgIyBOb3QgdGVycmlibHkgdXNlZnVsLCBidXQgbWFrZSBzdXJlIHRoZSB5aWVsZCB0dXJucworICAgICAgICAjICBhIGZ1bmN0aW9uIGludG8gYSBnZW5lcmF0b3IKKyAgICAgICAgZGVmIGZuKHkpOgorICAgICAgICAgICAgZid5Ont5aWVsZCB5KjJ9JworCisgICAgICAgIGcgPSBmbig0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoZyksIDgpCisKKyAgICBkZWYgdGVzdF95aWVsZF9zZW5kKHNlbGYpOgorICAgICAgICBkZWYgZm4oeCk6CisgICAgICAgICAgICB5aWVsZCBmJ3g6e3lpZWxkIChsYW1iZGEgaTogeCAqIGkpfScKKworICAgICAgICBnID0gZm4oMTApCisgICAgICAgIHRoZV9sYW1iZGEgPSBuZXh0KGcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGhlX2xhbWJkYSg0KSwgNDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZy5zZW5kKCdzdHJpbmcnKSwgJ3g6c3RyaW5nJykKKworICAgIGRlZiB0ZXN0X2V4cHJlc3Npb25zX3dpdGhfdHJpcGxlX3F1b3RlZF9zdHJpbmdzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYieycnJ3gnJyd9IiwgJ3gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYieycnJ2VyaWMncycnJ30iLCAiZXJpYydzIikKKworICAgICAgICAjIFRlc3QgY29uY2F0ZW5hdGlvbiB3aXRoaW4gYW4gZXhwcmVzc2lvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ4IiAiIiJlcmljInMiIiIgInkifScsICd4ZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IngiICIiImVyaWMicyIiIn0nLCAneGVyaWMicycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiIiZXJpYyJzIiIiICJ5In0nLCAnZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiIieCIiIiAiIiJlcmljInMiIiIgInkifScsICd4ZXJpYyJzeScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7IiIieCIiIiAiIiJlcmljInMiIiIgIiIieSIiIn0nLCAneGVyaWMic3knKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3IiIiJ4IiIiICIiImVyaWMicyIiIiAiIiJ5IiIifScsICd4ZXJpYyJzeScpCisKKyAgICBkZWYgdGVzdF9tdWx0aXBsZV92YXJzKHNlbGYpOgorICAgICAgICB4ID0gOTgKKyAgICAgICAgeSA9ICdhYmMnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH17eX0nLCAnOThhYmMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidYe3h9e3l9JywgJ1g5OGFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH1Ye3l9JywgJzk4WGFiYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH17eX1YJywgJzk4YWJjWCcpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ1h7eH1Ze3l9JywgJ1g5OFlhYmMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fXt5fVknLCAnWDk4YWJjWScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH1Ye3l9WScsICc5OFhhYmNZJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnWHt4fVl7eX1aJywgJ1g5OFlhYmNaJykKKworICAgIGRlZiB0ZXN0X2Nsb3N1cmUoc2VsZik6CisgICAgICAgIGRlZiBvdXRlcih4KToKKyAgICAgICAgICAgIGRlZiBpbm5lcigpOgorICAgICAgICAgICAgICAgIHJldHVybiBmJ3g6e3h9JworICAgICAgICAgICAgcmV0dXJuIGlubmVyCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRlcignOTg3JykoKSwgJ3g6OTg3JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvdXRlcig3KSgpLCAneDo3JykKKworICAgIGRlZiB0ZXN0X2FyZ3VtZW50cyhzZWxmKToKKyAgICAgICAgeSA9IDIKKyAgICAgICAgZGVmIGYoeCwgd2lkdGgpOgorICAgICAgICAgICAgcmV0dXJuIGYneD17eCp5Ont3aWR0aH19JworCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZignZm9vJywgMTApLCAneD1mb29mb28gICAgJykKKyAgICAgICAgeCA9ICdiYXInCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZigxMCwgMTApLCAneD0gICAgICAgIDIwJykKKworICAgIGRlZiB0ZXN0X2xvY2FscyhzZWxmKToKKyAgICAgICAgdmFsdWUgPSAxMjMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3Y6e3ZhbHVlfScsICd2OjEyMycpCisKKyAgICBkZWYgdGVzdF9taXNzaW5nX3ZhcmlhYmxlKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBmJ3Y6e3ZhbHVlfScKKworICAgIGRlZiB0ZXN0X21pc3NpbmdfZm9ybWF0X3NwZWMoc2VsZik6CisgICAgICAgIGNsYXNzIE86CisgICAgICAgICAgICBkZWYgX19mb3JtYXRfXyhzZWxmLCBzcGVjKToKKyAgICAgICAgICAgICAgICBpZiBub3Qgc3BlYzoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuICcqJworICAgICAgICAgICAgICAgIHJldHVybiBzcGVjCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tPKCk6eH0nLCAneCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7TygpfScsICcqJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tPKCk6fScsICcqJykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezM6fScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIXM6fScsICczJykKKworICAgIGRlZiB0ZXN0X2dsb2JhbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfScsICdnOmdsb2JhbCB2YXJpYWJsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsICJnOidnbG9iYWwgdmFyaWFibGUnIikKKworICAgICAgICBhX2xvY2FsID0gJ2xvY2FsIHZhcmlhYmxlJworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWx9JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZzpnbG9iYWwgdmFyaWFibGUgbDpsb2NhbCB2YXJpYWJsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6J2dsb2JhbCB2YXJpYWJsZSciKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZzp7YV9nbG9iYWx9IGw6e2FfbG9jYWwhcn0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnOmdsb2JhbCB2YXJpYWJsZSBsOidsb2NhbCB2YXJpYWJsZSciKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oIm1vZHVsZSAndW5pdHRlc3QnIGZyb20iLCBmJ3t1bml0dGVzdH0nKQorCisgICAgZGVmIHRlc3Rfc2hhZG93ZWRfZ2xvYmFsKHNlbGYpOgorICAgICAgICBhX2dsb2JhbCA9ICdyZWFsbHkgYSBsb2NhbCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfScsICdnOnJlYWxseSBhIGxvY2FsJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsIXJ9JywgImc6J3JlYWxseSBhIGxvY2FsJyIpCisKKyAgICAgICAgYV9sb2NhbCA9ICdsb2NhbCB2YXJpYWJsZScKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2c6e2FfZ2xvYmFsfSBsOnthX2xvY2FsfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgJ2c6cmVhbGx5IGEgbG9jYWwgbDpsb2NhbCB2YXJpYWJsZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6J3JlYWxseSBhIGxvY2FsJyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidnOnthX2dsb2JhbH0gbDp7YV9sb2NhbCFyfScsCisgICAgICAgICAgICAgICAgICAgICAgICAgImc6cmVhbGx5IGEgbG9jYWwgbDonbG9jYWwgdmFyaWFibGUnIikKKworICAgIGRlZiB0ZXN0X2NhbGwoc2VsZik6CisgICAgICAgIGRlZiBmb28oeCk6CisgICAgICAgICAgICByZXR1cm4gJ3g9JyArIHN0cih4KQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7Zm9vKDEwKX0nLCAneD0xMCcpCisKKyAgICBkZWYgdGVzdF9uZXN0ZWRfZnN0cmluZ3Moc2VsZik6CisgICAgICAgIHkgPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZiJ7MH0iKjN9JywgJzAwMCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZiJ7eX0iKjN9JywgJzU1NScpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3N0cmluZ19wcmVmaXhlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ3VuZXhwZWN0ZWQgRU9GIHdoaWxlIHBhcnNpbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZnUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1ZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZlUnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJVZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVGJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidWZyJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidXJmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnVyJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmZ1JyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicnVmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRlVSJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRnVyJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZmInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmQicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZiJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRkInJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiZicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJGJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQmYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJCRicnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2xlYWRpbmdfdHJhaWxpbmdfc3BhY2VzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyAzfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3sgIDN9JywgJzMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMgfScsICczJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szICB9JywgJzMnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZidleHByPXsge3g6IHkgZm9yIHgsIHkgaW4gWygxLCAyKSwgXX19JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAnZXhwcj17MTogMn0nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnZXhwcj17IHt4OiB5IGZvciB4LCB5IGluIFsoMSwgMiksIF19IH0nLAorICAgICAgICAgICAgICAgICAgICAgICAgICdleHByPXsxOiAyfScpCisKKyAgICBkZWYgdGVzdF9ub3RfZXF1YWwoc2VsZik6CisgICAgICAgICMgVGhlcmUncyBhIHNwZWNpYWwgdGVzdCBmb3IgdGhpcyBiZWNhdXNlIHRoZXJlJ3MgYSBzcGVjaWFsCisgICAgICAgICMgIGNhc2UgaW4gdGhlIGYtc3RyaW5nIHBhcnNlciB0byBsb29rIGZvciAhPSBhcyBub3QgZW5kaW5nIGFuCisgICAgICAgICMgIGV4cHJlc3Npb24uIE5vcm1hbGx5IGl0IHdvdWxkLCB3aGlsZSBsb29raW5nIGZvciAhcyBvciAhci4KKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTR9JywgJ1RydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTQ6fScsICdUcnVlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szIT00IXN9JywgJ1RydWUnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMhPTQhczouM30nLCAnVHJ1JykKKworICAgIGRlZiB0ZXN0X2NvbnZlcnNpb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQ6MTAuMTB9JywgJyAgICAgIDMuMTQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQhczoxMC4xMH0nLCAnMy4xNCAgICAgICcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7My4xNCFyOjEwLjEwfScsICczLjE0ICAgICAgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szLjE0IWE6MTAuMTB9JywgJzMuMTQgICAgICAnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEifScsICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSIhcn0nLCAiJ2EnIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3siYSIhYX0nLCAiJ2EnIikKKworICAgICAgICAjIE5vdCBhIGNvbnZlcnNpb24uCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ImEhciJ9JywgImEhciIpCisKKyAgICAgICAgIyBOb3QgYSBjb252ZXJzaW9uLCBidXQgc2hvdyB0aGF0ICEgaXMgYWxsb3dlZCBpbiBhIGZvcm1hdCBzcGVjLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYnezMuMTQ6ITwxMC4xMH0nLCAnMy4xNCEhISEhIScpCisKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2Ytc3RyaW5nOiBpbnZhbGlkIGNvbnZlcnNpb24gY2hhcmFjdGVyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnezMhZ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhQX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhM30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhR30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhIX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhOn0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhIHN9JyIsICAjIG5vIHNwYWNlIGJlZm9yZSBjb252ZXJzaW9uIGNoYXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7eCFze3l9fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzc30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhc3M6fSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzczpzfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfYXNzaWdubWVudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYnJyA9IDMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MH0nID0geCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t4fScgPSB4IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2RlbChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgJ2ludmFsaWQgc3ludGF4JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImRlbCBmJyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGVsICcnIGYnJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisKKyAgICBkZWYgdGVzdF9taXNtYXRjaGVkX2JyYWNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRBbGxSYWlzZShTeW50YXhFcnJvciwgImYtc3RyaW5nOiBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBbImYne3t9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3t7fX19JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ30nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneH14JyIsCisKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDYW4ndCBoYXZlIHsgb3IgfSBpbiBhIGZvcm1hdCBzcGVjLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7Mzp9PjEwfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7Mzp9fT4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsiZid7Mzp7ez4xMH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezMhJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szOiciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7MyFzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXM6JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJmJ3szIXM6MyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4eyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid4e3gnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3gnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYnezM6cyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZid7e3snIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYne3t9fXsnIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImYneyciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgICAgICMgQnV0IHRoZXNlIGFyZSBqdXN0IG5vcm1hbCBzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYneyJ7In0nLCAneycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7In0ifScsICd9JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3szOnsifSJ9PjEwfScsICd9fX19fX19fX0zJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3syOnsieyJ9PjEwfScsICd7e3t7e3t7e3syJykKKworICAgIGRlZiB0ZXN0X2lmX2NvbmRpdGlvbmFsKHNlbGYpOgorICAgICAgICAjIFRoZXJlJ3Mgc3BlY2lhbCBsb2dpYyBpbiBjb21waWxlLmMgdG8gdGVzdCBpZiB0aGUKKyAgICAgICAgIyAgY29uZGl0aW9uYWwgZm9yIGFuIGlmIChhbmQgd2hpbGUpIGFyZSBjb25zdGFudHMuIEV4ZXJjaXNlCisgICAgICAgICMgIHRoYXQgY29kZS4KKworICAgICAgICBkZWYgdGVzdF9mc3RyaW5nKHgsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIGZsYWcgPSAwCisgICAgICAgICAgICBpZiBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgZGVmIHRlc3RfY29uY2F0X2VtcHR5KHgsIGV4cGVjdGVkKToKKyAgICAgICAgICAgIGZsYWcgPSAwCisgICAgICAgICAgICBpZiAnJyBmJ3t4fSc6CisgICAgICAgICAgICAgICAgZmxhZyA9IDEKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgZmxhZyA9IDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmxhZywgZXhwZWN0ZWQpCisKKyAgICAgICAgZGVmIHRlc3RfY29uY2F0X25vbl9lbXB0eSh4LCBleHBlY3RlZCk6CisgICAgICAgICAgICBmbGFnID0gMAorICAgICAgICAgICAgaWYgJyAnIGYne3h9JzoKKyAgICAgICAgICAgICAgICBmbGFnID0gMQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmbGFnID0gMgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmbGFnLCBleHBlY3RlZCkKKworICAgICAgICB0ZXN0X2ZzdHJpbmcoJycsIDIpCisgICAgICAgIHRlc3RfZnN0cmluZygnICcsIDEpCisKKyAgICAgICAgdGVzdF9jb25jYXRfZW1wdHkoJycsIDIpCisgICAgICAgIHRlc3RfY29uY2F0X2VtcHR5KCcgJywgMSkKKworICAgICAgICB0ZXN0X2NvbmNhdF9ub25fZW1wdHkoJycsIDEpCisgICAgICAgIHRlc3RfY29uY2F0X25vbl9lbXB0eSgnICcsIDEpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9mb3JtYXRfc3BlY2lmaWVyKHNlbGYpOgorICAgICAgICB4ID0gJ3Rlc3QnCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eH0nLCAndGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7eDp9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3ghczp9JywgJ3Rlc3QnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYne3ghcjp9JywgIid0ZXN0JyIpCisKKyAgICBkZWYgdGVzdF9zdHJfZm9ybWF0X2RpZmZlcmVuY2VzKHNlbGYpOgorICAgICAgICBkID0geydhJzogJ3N0cmluZycsCisgICAgICAgICAgICAgMDogJ2ludGVnZXInLAorICAgICAgICAgICAgIH0KKyAgICAgICAgYSA9IDAKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWzBdfScsICdpbnRlZ2VyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ3tkWyJhIl19JywgJ3N0cmluZycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFthXX0nLCAnaW50ZWdlcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ3tkW2FdfScuZm9ybWF0KGQ9ZCksICdzdHJpbmcnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7ZFswXX0nLmZvcm1hdChkPWQpLCAnaW50ZWdlcicpCisKKyAgICBkZWYgdGVzdF9pbnZhbGlkX2V4cHJlc3Npb25zKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFN5bnRheEVycm9yLCAnaW52YWxpZCBzeW50YXgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYne2FbNCl9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHIiZid7YSg0XX0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICAjIHNlZSBpc3N1ZSAyNjI4NworICAgICAgICBzZWxmLmFzc2VydEFsbFJhaXNlKFR5cGVFcnJvciwgJ25vbi1lbXB0eScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3IiZid7KGxhbWJkYTogMCk6eH0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3soMCwpOnh9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0pCisgICAgICAgIHNlbGYuYXNzZXJ0QWxsUmFpc2UoVmFsdWVFcnJvciwgJ1Vua25vd24gZm9ybWF0IGNvZGUnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtyImYnezEwMDA6an0nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgciJmJ3sxMDAwOmp9JyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgXSkKKworICAgIGRlZiB0ZXN0X2xvb3Aoc2VsZik6CisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwMDApOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmJ2k6e2l9JywgJ2k6JyArIHN0cihpKSkKKworICAgIGRlZiB0ZXN0X2RpY3Qoc2VsZik6CisgICAgICAgIGQgPSB7JyInOiAnZHF1b3RlJywKKyAgICAgICAgICAgICAiJyI6ICdzcXVvdGUnLAorICAgICAgICAgICAgICdmb28nOiAnYmFyJywKKyAgICAgICAgICAgICB9CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZicnJ3tkWyInIl19JycnLCAnc3F1b3RlJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmIiIie2RbJyInXX0iIiIsICdkcXVvdGUnKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7ZFsiZm9vIl19JywgJ2JhcicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZiJ7ZFsnZm9vJ119IiwgJ2JhcicpCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2Z0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CmluZGV4IGFlZjY2ZGEuLjEyZmFiYzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZnRwbGliLnB5CkBAIC0zMTEsMTAgKzMxMSwxMiBAQAogICAgICAgICBfc3NsX2Nsb3NpbmcgPSBGYWxzZQogCiAgICAgICAgIGRlZiBzZWN1cmVfY29ubmVjdGlvbihzZWxmKToKLSAgICAgICAgICAgIHNvY2tldCA9IHNzbC53cmFwX3NvY2tldChzZWxmLnNvY2tldCwgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIHNvY2tldCA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cHByZXNzX3JhZ2dlZF9lb2ZzPUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuZGVsX2NoYW5uZWwoKQogICAgICAgICAgICAgc2VsZi5zZXRfc29ja2V0KHNvY2tldCkKICAgICAgICAgICAgIHNlbGYuX3NzbF9hY2NlcHRpbmcgPSBUcnVlCkBAIC0xMDQ5LDEwICsxMDUxLDE5IEBACiAgICAgICAgIGZ0cC5jbG9zZSgpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsnTVNHX09PQicsICdGVFBfUE9SVCcsICdNQVhMSU5FJywgJ0NSTEYnLCAnQl9DUkxGJywKKyAgICAgICAgICAgICAgICAgICAgICdFcnJvcicsICdwYXJzZTE1MCcsICdwYXJzZTIyNycsICdwYXJzZTIyOScsICdwYXJzZTI1NycsCisgICAgICAgICAgICAgICAgICAgICAncHJpbnRfbGluZScsICdmdHBjcCcsICd0ZXN0J30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgZnRwbGliLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtUZXN0RlRQQ2xhc3MsIFRlc3RUaW1lb3V0cywKICAgICAgICAgICAgICBUZXN0SVB2NkVudmlyb25tZW50LAotICAgICAgICAgICAgIFRlc3RUTFNfRlRQQ2xhc3NNaXhpbiwgVGVzdFRMU19GVFBDbGFzc10KKyAgICAgICAgICAgICBUZXN0VExTX0ZUUENsYXNzTWl4aW4sIFRlc3RUTFNfRlRQQ2xhc3MsCisgICAgICAgICAgICAgTWlzY1Rlc3RDYXNlXQogCiAgICAgdGhyZWFkX2luZm8gPSBzdXBwb3J0LnRocmVhZGluZ19zZXR1cCgpCiAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9mdW5jdG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQppbmRleCA1MDc2NjQ0Li45ZWE2NzQ3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2Z1bmN0b29scy5weQpAQCAtOCw2ICs4LDcgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5CitpbXBvcnQgY29udGV4dGxpYgogdHJ5OgogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKQEAgLTIwLDYgKzIxLDE0IEBACiAKIGRlY2ltYWwgPSBzdXBwb3J0LmltcG9ydF9mcmVzaF9tb2R1bGUoJ2RlY2ltYWwnLCBmcmVzaD1bJ19kZWNpbWFsJ10pCiAKK0Bjb250ZXh0bGliLmNvbnRleHRtYW5hZ2VyCitkZWYgcmVwbGFjZWRfbW9kdWxlKG5hbWUsIHJlcGxhY2VtZW50KToKKyAgICBvcmlnaW5hbF9tb2R1bGUgPSBzeXMubW9kdWxlc1tuYW1lXQorICAgIHN5cy5tb2R1bGVzW25hbWVdID0gcmVwbGFjZW1lbnQKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgc3lzLm1vZHVsZXNbbmFtZV0gPSBvcmlnaW5hbF9tb2R1bGUKIAogZGVmIGNhcHR1cmUoKmFyZ3MsICoqa3cpOgogICAgICIiImNhcHR1cmUgYWxsIHBvc2l0aW9uYWwgYW5kIGtleXdvcmQgYXJndW1lbnRzIiIiCkBAIC0xNjcsNTggKzE3NiwzNSBAQAogICAgICAgICBwMi5uZXdfYXR0ciA9ICdzcGFtJwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAyLm5ld19hdHRyLCAnc3BhbScpCiAKLQotQHVuaXR0ZXN0LnNraXBVbmxlc3MoY19mdW5jdG9vbHMsICdyZXF1aXJlcyB0aGUgQyBfZnVuY3Rvb2xzIG1vZHVsZScpCi1jbGFzcyBUZXN0UGFydGlhbEMoVGVzdFBhcnRpYWwsIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IGNfZnVuY3Rvb2xzLnBhcnRpYWwKLQotICAgIGRlZiB0ZXN0X2F0dHJpYnV0ZXNfdW53cml0YWJsZShzZWxmKToKLSAgICAgICAgIyBhdHRyaWJ1dGVzIHNob3VsZCBub3QgYmUgd3JpdGFibGUKLSAgICAgICAgcCA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAxLCAyLCBhPTEwLCBiPTIwKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2Z1bmMnLCBtYXApCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAnYXJncycsICgxLCAyKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdrZXl3b3JkcycsIGRpY3QoYT0xLCBiPTIpKQotCi0gICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoaGV4KQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkZWwgcC5fX2RpY3RfXwotICAgICAgICBleGNlcHQgVHlwZUVycm9yOgotICAgICAgICAgICAgcGFzcwotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5mYWlsKCdwYXJ0aWFsIG9iamVjdCBhbGxvd2VkIF9fZGljdF9fIHRvIGJlIGRlbGV0ZWQnKQotCiAgICAgZGVmIHRlc3RfcmVwcihzZWxmKToKICAgICAgICAgYXJncyA9IChvYmplY3QoKSwgb2JqZWN0KCkpCiAgICAgICAgIGFyZ3NfcmVwciA9ICcsICcuam9pbihyZXByKGEpIGZvciBhIGluIGFyZ3MpCiAgICAgICAgIGt3YXJncyA9IHsnYSc6IG9iamVjdCgpLCAnYic6IG9iamVjdCgpfQogICAgICAgICBrd2FyZ3NfcmVwcnMgPSBbJ2E9e2Ehcn0sIGI9e2Ihcn0nLmZvcm1hdF9tYXAoa3dhcmdzKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdiPXtiIXJ9LCBhPXthIXJ9Jy5mb3JtYXRfbWFwKGt3YXJncyldCi0gICAgICAgIGlmIHNlbGYucGFydGlhbCBpcyBjX2Z1bmN0b29scy5wYXJ0aWFsOgorICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaW4gKGNfZnVuY3Rvb2xzLnBhcnRpYWwsIHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKICAgICAgICAgICAgIG5hbWUgPSAnZnVuY3Rvb2xzLnBhcnRpYWwnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBuYW1lID0gc2VsZi5wYXJ0aWFsLl9fbmFtZV9fCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9KScuZm9ybWF0KG5hbWUsIGNhcHR1cmUpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0pJywgcmVwcihmKSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUsICphcmdzKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCd7fSh7IXJ9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlcHIoZikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZid7bmFtZX0oe2NhcHR1cmUhcn0sIHthcmdzX3JlcHJ9KScsIHJlcHIoZikpCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqKmt3YXJncykKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXByKGYpLAotICAgICAgICAgICAgICAgICAgICAgIFsne30oeyFyfSwge30pJy5mb3JtYXQobmFtZSwgY2FwdHVyZSwga3dhcmdzX3JlcHIpCisgICAgICAgICAgICAgICAgICAgICAgW2Yne25hbWV9KHtjYXB0dXJlIXJ9LCB7a3dhcmdzX3JlcHJ9KScKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGt3YXJnc19yZXByIGluIGt3YXJnc19yZXByc10pCiAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmVwcihmKSwKLSAgICAgICAgICAgICAgICAgICAgICBbJ3t9KHshcn0sIHt9LCB7fSknLmZvcm1hdChuYW1lLCBjYXB0dXJlLCBhcmdzX3JlcHIsIGt3YXJnc19yZXByKQorICAgICAgICAgICAgICAgICAgICAgIFtmJ3tuYW1lfSh7Y2FwdHVyZSFyfSwge2FyZ3NfcmVwcn0sIHtrd2FyZ3NfcmVwcn0pJwogICAgICAgICAgICAgICAgICAgICAgICBmb3Iga3dhcmdzX3JlcHIgaW4ga3dhcmdzX3JlcHJzXSkKIAogICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV9yZXByKHNlbGYpOgotICAgICAgICBpZiBzZWxmLnBhcnRpYWwgaXMgY19mdW5jdG9vbHMucGFydGlhbDoKKyAgICAgICAgaWYgc2VsZi5wYXJ0aWFsIGluIChjX2Z1bmN0b29scy5wYXJ0aWFsLCBweV9mdW5jdG9vbHMucGFydGlhbCk6CiAgICAgICAgICAgICBuYW1lID0gJ2Z1bmN0b29scy5wYXJ0aWFsJwogICAgICAgICBlbHNlOgogICAgICAgICAgICAgbmFtZSA9IHNlbGYucGFydGlhbC5fX25hbWVfXwpAQCAtMjI2LDMwICsyMTIsMzEgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKCVzKC4uLikpJyAlIChuYW1lLCBuYW1lKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmKSwgJyVzKC4uLiknICUgKG5hbWUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoZiwpLCB7fSwge30pKQogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZiksICclcyglciwgJXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIC4uLiknICUgKG5hbWUsIGNhcHR1cmUsKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCiAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwgeydhJzogZn0sIHt9KSkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9JXMoLi4uKSknICUgKG5hbWUsIGNhcHR1cmUsIG5hbWUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnJXMoJXIsIGE9Li4uKScgJSAobmFtZSwgY2FwdHVyZSwpKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQogCiAgICAgZGVmIHRlc3RfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKHNpZ25hdHVyZSwgWydhc2RmJ10sIGJhcj1bVHJ1ZV0pCi0gICAgICAgIGYuYXR0ciA9IFtdCi0gICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ25hdHVyZShmX2NvcHkpLCBzaWduYXR1cmUoZikpCisgICAgICAgIHdpdGggc2VsZi5BbGxvd1BpY2tsZSgpOgorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChzaWduYXR1cmUsIFsnYXNkZiddLCBiYXI9W1RydWVdKQorICAgICAgICAgICAgZi5hdHRyID0gW10KKyAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGZfY29weSksIHNpZ25hdHVyZShmKSkKIAogICAgIGRlZiB0ZXN0X2NvcHkoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlLCBbJ2FzZGYnXSwgYmFyPVtUcnVlXSkKQEAgLTI3NCwxMSArMjYxLDEzIEBACiAgICAgZGVmIHRlc3Rfc2V0c3RhdGUoc2VsZik6CiAgICAgICAgIGYgPSBzZWxmLnBhcnRpYWwoc2lnbmF0dXJlKQogICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwgZGljdChhdHRyPVtdKSkpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYXR1cmUoZiksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIGRpY3QoYXR0cj1bXSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgxLCksIGRpY3QoYT0xMCksIE5vbmUpKQorCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2lnbmF0dXJlKGYpLCAoY2FwdHVyZSwgKDEsKSwgZGljdChhPTEwKSwge30pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYoMiwgYj0yMCksICgoMSwgMiksIHsnYSc6IDEwLCAnYic6IDIwfSkpCiAKQEAgLTMyNSwzOCArMzE0LDM5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyWzBdKSwgdHVwbGUpCiAKICAgICBkZWYgdGVzdF9yZWN1cnNpdmVfcGlja2xlKHNlbGYpOgotICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCi0gICAgICAgIGYuX19zZXRzdGF0ZV9fKChmLCAoKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSZWN1cnNpb25FcnJvcik6Ci0gICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wcyhmLCBwcm90bykKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKKyAgICAgICAgd2l0aCBzZWxmLkFsbG93UGlja2xlKCk6CisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoZiwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoUmVjdXJzaW9uRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXBzKGYsIHByb3RvKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6Ci0gICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGZfY29weS5hcmdzWzBdLCBmX2NvcHkpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmID0gc2VsZi5wYXJ0aWFsKGNhcHR1cmUpCisgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKGYsKSwge30sIHt9KSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICAgICAgICAgZl9jb3B5ID0gcGlja2xlLmxvYWRzKHBpY2tsZS5kdW1wcyhmLCBwcm90bykpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZl9jb3B5LmFyZ3NbMF0sIGZfY29weSkKKyAgICAgICAgICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCiAKLSAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQotICAgICAgICBmLl9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHsnYSc6IGZ9LCB7fSkpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgotICAgICAgICAgICAgICAgIGZfY29weSA9IHBpY2tsZS5sb2FkcyhwaWNrbGUuZHVtcHMoZiwgcHJvdG8pKQotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQotICAgICAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgICAgIGZfY29weS5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7fSwge30pKQorICAgICAgICAgICAgZiA9IHNlbGYucGFydGlhbChjYXB0dXJlKQorICAgICAgICAgICAgZi5fX3NldHN0YXRlX18oKGNhcHR1cmUsICgpLCB7J2EnOiBmfSwge30pKQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGZvciBwcm90byBpbiByYW5nZShwaWNrbGUuSElHSEVTVF9QUk9UT0NPTCArIDEpOgorICAgICAgICAgICAgICAgICAgICBmX2NvcHkgPSBwaWNrbGUubG9hZHMocGlja2xlLmR1bXBzKGYsIHByb3RvKSkKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhmX2NvcHkua2V5d29yZHNbJ2EnXSwgZl9jb3B5KQorICAgICAgICAgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgICAgICAgICAgZl9jb3B5Ll9fc2V0c3RhdGVfXygoY2FwdHVyZSwgKCksIHt9LCB7fSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIGYuX19zZXRzdGF0ZV9fKChjYXB0dXJlLCAoKSwge30sIHt9KSkKIAogICAgICMgSXNzdWUgNjA4MzogUmVmZXJlbmNlIGNvdW50aW5nIGJ1ZwogICAgIGRlZiB0ZXN0X3NldHN0YXRlX3JlZmNvdW50KHNlbGYpOgpAQCAtMzc1LDI0ICszNjUsNjAgQEAKICAgICAgICAgZiA9IHNlbGYucGFydGlhbChvYmplY3QpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZi5fX3NldHN0YXRlX18sIEJhZFNlcXVlbmNlKCkpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQorY2xhc3MgVGVzdFBhcnRpYWxDKFRlc3RQYXJ0aWFsLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIHBhcnRpYWwgPSBjX2Z1bmN0b29scy5wYXJ0aWFsCisKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmCisgICAgICAgIGRlZiBfX2V4aXRfXyhzZWxmLCB0eXBlLCB2YWx1ZSwgdGIpOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3Vud3JpdGFibGUoc2VsZik6CisgICAgICAgICMgYXR0cmlidXRlcyBzaG91bGQgbm90IGJlIHdyaXRhYmxlCisgICAgICAgIHAgPSBzZWxmLnBhcnRpYWwoY2FwdHVyZSwgMSwgMiwgYT0xMCwgYj0yMCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXR0cmlidXRlRXJyb3IsIHNldGF0dHIsIHAsICdmdW5jJywgbWFwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvciwgc2V0YXR0ciwgcCwgJ2FyZ3MnLCAoMSwgMikpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEF0dHJpYnV0ZUVycm9yLCBzZXRhdHRyLCBwLCAna2V5d29yZHMnLCBkaWN0KGE9MSwgYj0yKSkKKworICAgICAgICBwID0gc2VsZi5wYXJ0aWFsKGhleCkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZGVsIHAuX19kaWN0X18KKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgncGFydGlhbCBvYmplY3QgYWxsb3dlZCBfX2RpY3RfXyB0byBiZSBkZWxldGVkJykKIAogY2xhc3MgVGVzdFBhcnRpYWxQeShUZXN0UGFydGlhbCwgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIHBhcnRpYWwgPSBzdGF0aWNtZXRob2QocHlfZnVuY3Rvb2xzLnBhcnRpYWwpCisgICAgcGFydGlhbCA9IHB5X2Z1bmN0b29scy5wYXJ0aWFsCiAKKyAgICBjbGFzcyBBbGxvd1BpY2tsZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICAgICAgc2VsZi5fY20gPSByZXBsYWNlZF9tb2R1bGUoImZ1bmN0b29scyIsIHB5X2Z1bmN0b29scykKKyAgICAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2VudGVyX18oKQorICAgICAgICBkZWYgX19leGl0X18oc2VsZiwgdHlwZSwgdmFsdWUsIHRiKToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLl9jbS5fX2V4aXRfXyh0eXBlLCB2YWx1ZSwgdGIpCiAKIGlmIGNfZnVuY3Rvb2xzOgotICAgIGNsYXNzIFBhcnRpYWxTdWJjbGFzcyhjX2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBjbGFzcyBDUGFydGlhbFN1YmNsYXNzKGNfZnVuY3Rvb2xzLnBhcnRpYWwpOgogICAgICAgICBwYXNzCiAKK2NsYXNzIFB5UGFydGlhbFN1YmNsYXNzKHB5X2Z1bmN0b29scy5wYXJ0aWFsKToKKyAgICBwYXNzCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfZnVuY3Rvb2xzLCAncmVxdWlyZXMgdGhlIEMgX2Z1bmN0b29scyBtb2R1bGUnKQogY2xhc3MgVGVzdFBhcnRpYWxDU3ViY2xhc3MoVGVzdFBhcnRpYWxDKToKICAgICBpZiBjX2Z1bmN0b29sczoKLSAgICAgICAgcGFydGlhbCA9IFBhcnRpYWxTdWJjbGFzcworICAgICAgICBwYXJ0aWFsID0gQ1BhcnRpYWxTdWJjbGFzcwogCiAgICAgIyBwYXJ0aWFsIHN1YmNsYXNzZXMgYXJlIG5vdCBvcHRpbWl6ZWQgZm9yIG5lc3RlZCBjYWxscwogICAgIHRlc3RfbmVzdGVkX29wdGltaXphdGlvbiA9IE5vbmUKIAorY2xhc3MgVGVzdFBhcnRpYWxQeVN1YmNsYXNzKFRlc3RQYXJ0aWFsUHkpOgorICAgIHBhcnRpYWwgPSBQeVBhcnRpYWxTdWJjbGFzcwogCiBjbGFzcyBUZXN0UGFydGlhbE1ldGhvZCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTY4Myw5ICs3MDksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3cmFwcGVyLmF0dHIsICdUaGlzIGlzIGEgZGlmZmVyZW50IHRlc3QnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyYXBwZXIuZGljdF9hdHRyLCBmLmRpY3RfYXR0cikKIAotCitAdW5pdHRlc3Quc2tpcFVubGVzcyhjX2Z1bmN0b29scywgJ3JlcXVpcmVzIHRoZSBDIF9mdW5jdG9vbHMgbW9kdWxlJykKIGNsYXNzIFRlc3RSZWR1Y2UodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGZ1bmMgPSBmdW5jdG9vbHMucmVkdWNlCisgICAgaWYgY19mdW5jdG9vbHM6CisgICAgICAgIGZ1bmMgPSBjX2Z1bmN0b29scy5yZWR1Y2UKIAogICAgIGRlZiB0ZXN0X3JlZHVjZShzZWxmKToKICAgICAgICAgY2xhc3MgU3F1YXJlczoKQEAgLTE1NDgsMTMgKzE1NzUsMTUgQEAKICAgICAgICAgYmFzZXMgPSBbYy5TZXF1ZW5jZSwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNldF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGRpY3QsIGhheXN0YWNrKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLCBjLlNpemVkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtkaWN0LCBjLk11dGFibGVNYXBwaW5nLCBjLk1hcHBpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKICAgICAgICAgYmFzZXMgPSBbYy5Db250YWluZXIsIGMuTWFwcGluZywgYy5NdXRhYmxlTWFwcGluZywgYy5PcmRlcmVkRGljdF0KICAgICAgICAgZm9yIGhheXN0YWNrIGluIHBlcm11dGF0aW9ucyhiYXNlcyk6CiAgICAgICAgICAgICBtID0gbXJvKGMuQ2hhaW5NYXAsIGhheXN0YWNrKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLCBbYy5DaGFpbk1hcCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsIG9iamVjdF0pCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbGxlY3Rpb24sIGMuU2l6ZWQsIGMuSXRlcmFibGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLkNvbnRhaW5lciwgb2JqZWN0XSkKIAogICAgICAgICAjIElmIHRoZXJlJ3MgYSBnZW5lcmljIGZ1bmN0aW9uIHdpdGggaW1wbGVtZW50YXRpb25zIHJlZ2lzdGVyZWQgZm9yCiAgICAgICAgICMgYm90aCBTaXplZCBhbmQgQ29udGFpbmVyLCBwYXNzaW5nIGEgZGVmYXVsdGRpY3QgdG8gaXQgcmVzdWx0cyBpbiBhbgpAQCAtMTU3NSw5ICsxNjA0LDkgQEAKICAgICAgICAgYmFzZXMgPSBbYy5NdXRhYmxlU2VxdWVuY2UsIGMuTXV0YWJsZU1hcHBpbmddCiAgICAgICAgIGZvciBoYXlzdGFjayBpbiBwZXJtdXRhdGlvbnMoYmFzZXMpOgogICAgICAgICAgICAgbSA9IG1ybyhELCBiYXNlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobSwgW0QsIGMuTXV0YWJsZVNlcXVlbmNlLCBjLlNlcXVlbmNlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuTWFwcGluZywgYy5TaXplZCwgYy5JdGVyYWJsZSwgYy5Db250YWluZXIsCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtELCBjLk11dGFibGVTZXF1ZW5jZSwgYy5TZXF1ZW5jZSwgYy5SZXZlcnNpYmxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5kZWZhdWx0ZGljdCwgZGljdCwgYy5NdXRhYmxlTWFwcGluZywgYy5NYXBwaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYy5Db2xsZWN0aW9uLCBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9iamVjdF0pCiAKICAgICAgICAgIyBDb250YWluZXIgYW5kIENhbGxhYmxlIGFyZSByZWdpc3RlcmVkIG9uIGRpZmZlcmVudCBiYXNlIGNsYXNzZXMgYW5kCkBAIC0xNTkwLDcgKzE2MTksOCBAQAogICAgICAgICBmb3IgaGF5c3RhY2sgaW4gcGVybXV0YXRpb25zKGJhc2VzKToKICAgICAgICAgICAgIG0gPSBtcm8oQywgaGF5c3RhY2spCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0sIFtDLCBjLkNhbGxhYmxlLCBjLmRlZmF1bHRkaWN0LCBkaWN0LCBjLk1hcHBpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLlNpemVkLCBjLkl0ZXJhYmxlLCBjLkNvbnRhaW5lciwgb2JqZWN0XSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29sbGVjdGlvbiwgYy5TaXplZCwgYy5JdGVyYWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMuQ29udGFpbmVyLCBvYmplY3RdKQogCiAgICAgZGVmIHRlc3RfcmVnaXN0ZXJfYWJjKHNlbGYpOgogICAgICAgICBjID0gY29sbGVjdGlvbnMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZnV0dXJlLnB5IGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKaW5kZXggYmVhYzk5My4uMjEzYjJiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9mdXR1cmUucHkKQEAgLTQsNyArNCw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCByZQogCi1yeCA9IHJlLmNvbXBpbGUoJ1woKFxTKykucHksIGxpbmUgKFxkKyknKQorcnggPSByZS5jb21waWxlKHInXCgoXFMrKS5weSwgbGluZSAoXGQrKScpCiAKIGRlZiBnZXRfZXJyb3JfbG9jYXRpb24obXNnKToKICAgICBtbyA9IHJ4LnNlYXJjaChzdHIobXNnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkgYi9MaWIvdGVzdC90ZXN0X2djLnB5CmluZGV4IGE0ZDY4NGIuLmU3Mjc0OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9nYy5weQpAQCAtNjg0LDcgKzY4NCw2IEBACiAgICAgICAgICMgQ3JlYXRlIGEgcmVmZXJlbmNlIGN5Y2xlIHRocm91Z2ggdGhlIF9fbWFpbl9fIG1vZHVsZSBhbmQgY2hlY2sKICAgICAgICAgIyBpdCBnZXRzIGNvbGxlY3RlZCBhdCBpbnRlcnByZXRlciBzaHV0ZG93bi4KICAgICAgICAgY29kZSA9ICIiImlmIDE6Ci0gICAgICAgICAgICBpbXBvcnQgd2Vha3JlZgogICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICBkZWYgX19kZWxfXyhzZWxmKToKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ19fZGVsX18gY2FsbGVkJykKQEAgLTY5OSw3ICs2OTgsNiBAQAogICAgICAgICAjIFNhbWUgYXMgYWJvdmUsIGJ1dCB3aXRoIGEgbm9uLV9fbWFpbl9fIG1vZHVsZS4KICAgICAgICAgd2l0aCB0ZW1wX2RpcigpIGFzIHNjcmlwdF9kaXI6CiAgICAgICAgICAgICBtb2R1bGUgPSAiIiJpZiAxOgotICAgICAgICAgICAgICAgIGltcG9ydCB3ZWFrcmVmCiAgICAgICAgICAgICAgICAgY2xhc3MgQzoKICAgICAgICAgICAgICAgICAgICAgZGVmIF9fZGVsX18oc2VsZik6CiAgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgnX19kZWxfXyBjYWxsZWQnKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZGIucHkgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQppbmRleCAzZGIxMGI2Li41ZmJmMTU0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dkYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dkYi5weQpAQCAtNSwxMyArNSwxNSBAQAogCiBpbXBvcnQgb3MKIGltcG9ydCByZQotaW1wb3J0IHBwcmludAogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IGxvY2FsZQogCisjIEZJWE1FOiBpc3N1ZSAjMjgwMjMKK3JhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJGSVhNRTogaXNzdWUgIzI4MDIzLCBjb21wYWN0IGRpY3QgKGlzc3VlICMyNzM1MCkgYnJva2UgcHl0aG9uLWdkYi5weSIpCisKICMgSXMgdGhpcyBQeXRob24gY29uZmlndXJlZCB0byBzdXBwb3J0IHRocmVhZHM/CiB0cnk6CiAgICAgaW1wb3J0IF90aHJlYWQKQEAgLTExMSw2ICsxMTMsNyBAQAogCiBCUkVBS1BPSU5UX0ZOPSdidWlsdGluX2lkJwogCitAdW5pdHRlc3Quc2tpcElmKHN1cHBvcnQuUEdPLCAibm90IHVzZWZ1bCBmb3IgUEdPIikKIGNsYXNzIERlYnVnZ2VyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIiIiVGVzdCB0aGF0IHRoZSBkZWJ1Z2dlciBjYW4gZGVidWcgUHl0aG9uLiIiIgpAQCAtMTc3LDYgKzE4MCw3IEBACiAgICAgICAgIGFyZ3MgPSBbJy0tZXZhbC1jb21tYW5kPSVzJyAlIGNtZCBmb3IgY21kIGluIGNvbW1hbmRzXQogICAgICAgICBhcmdzICs9IFsiLS1hcmdzIiwKICAgICAgICAgICAgICAgICAgc3lzLmV4ZWN1dGFibGVdCisgICAgICAgIGFyZ3MuZXh0ZW5kKHN1YnByb2Nlc3MuX2FyZ3NfZnJvbV9pbnRlcnByZXRlcl9mbGFncygpKQogCiAgICAgICAgIGlmIG5vdCBpbXBvcnRfc2l0ZToKICAgICAgICAgICAgICMgLVMgc3VwcHJlc3NlcyB0aGUgZGVmYXVsdCAnaW1wb3J0IHNpdGUnCkBAIC0yNDAsNyArMjQ0LDcgQEAKICAgICAgICAgIyBnZGIgY2FuIGluc2VydCBhZGRpdGlvbmFsICdcbicgYW5kIHNwYWNlIGNoYXJhY3RlcnMgaW4gdmFyaW91cyBwbGFjZXMKICAgICAgICAgIyBpbiBpdHMgb3V0cHV0LCBkZXBlbmRpbmcgb24gdGhlIHdpZHRoIG9mIHRoZSB0ZXJtaW5hbCBpdCdzIGNvbm5lY3RlZAogICAgICAgICAjIHRvICh1c2luZyBpdHMgIndyYXBfaGVyZSIgZnVuY3Rpb24pCi0gICAgICAgIG0gPSByZS5tYXRjaCgnLiojMFxzK2J1aWx0aW5faWRccytcKHNlbGZcPS4qLFxzK3Y9XHMqKC4qPylcKVxzK2F0XHMrXFMqUHl0aG9uL2JsdGlubW9kdWxlLmMuKicsCisgICAgICAgIG0gPSByZS5tYXRjaChyJy4qIzBccytidWlsdGluX2lkXHMrXChzZWxmXD0uKixccyt2PVxzKiguKj8pXClccythdFxzK1xTKlB5dGhvbi9ibHRpbm1vZHVsZS5jLionLAogICAgICAgICAgICAgICAgICAgICAgZ2RiX291dHB1dCwgcmUuRE9UQUxMKQogICAgICAgICBpZiBub3QgbToKICAgICAgICAgICAgIHNlbGYuZmFpbCgnVW5leHBlY3RlZCBnZGIgb3V0cHV0OiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpAQCAtMjkyLDcgKzI5Niw5IEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBkaWN0aW9uYXJpZXMnCiAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcih7fSkKICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHsnZm9vJzogJ2Jhcid9LCAieydmb28nOiAnYmFyJ30iKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2RvdWdsYXMnOiA0MiwgJ2Zvbyc6ICdiYXInfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoeydmb28nOiAnYmFyJywgJ2RvdWdsYXMnOiA0Mn0sICJ7J2RvdWdsYXMnOiA0MiwgJ2Zvbyc6ICdiYXInfSIpCiAKICAgICBkZWYgdGVzdF9saXN0cyhzZWxmKToKICAgICAgICAgJ1ZlcmlmeSB0aGUgcHJldHR5LXByaW50aW5nIG9mIGxpc3RzJwpAQCAtMzU1LDkgKzM2MSwxMiBAQAogICAgICAgICAnVmVyaWZ5IHRoZSBwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cycKICAgICAgICAgaWYgKGdkYl9tYWpvcl92ZXJzaW9uLCBnZGJfbWlub3JfdmVyc2lvbikgPCAoNywgMyk6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJwcmV0dHktcHJpbnRpbmcgb2Ygc2V0cyBuZWVkcyBnZGIgNy4zIG9yIGxhdGVyIikKLSAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldCgpLCAnc2V0KCknKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoc2V0KFsnYScsICdiJ10pLCAieydhJywgJ2InfSIpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoWzQsIDUsIDZdKSwgIns0LCA1LCA2fSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihzZXQoKSwgInNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnXSksICJ7J2EnfSIpCisgICAgICAgICMgUFlUSE9OSEFTSFNFRUQgaXMgbmVlZCB0byBnZXQgdGhlIGV4YWN0IGZyb3plbnNldCBpdGVtIG9yZGVyCisgICAgICAgIGlmIG5vdCBzeXMuZmxhZ3MuaWdub3JlX2Vudmlyb25tZW50OgorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbJ2EnLCAnYiddKSwgInsnYScsICdiJ30iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKHNldChbNCwgNSwgNl0pLCAiezQsIDUsIDZ9IikKIAogICAgICAgICAjIEVuc3VyZSB0aGF0IHdlIGhhbmRsZSBzZXRzIGNvbnRhaW5pbmcgdGhlICJkdW1teSIga2V5IHZhbHVlLAogICAgICAgICAjIHdoaWNoIGhhcHBlbnMgb24gZGVsZXRpb246CkBAIC0zNzAsOSArMzc5LDEyIEBACiAgICAgICAgICdWZXJpZnkgdGhlIHByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzJwogICAgICAgICBpZiAoZ2RiX21ham9yX3ZlcnNpb24sIGdkYl9taW5vcl92ZXJzaW9uKSA8ICg3LCAzKToKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoInByZXR0eS1wcmludGluZyBvZiBmcm96ZW5zZXRzIG5lZWRzIGdkYiA3LjMgb3IgbGF0ZXIiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KCksICdmcm96ZW5zZXQoKScpCi0gICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWydhJywgJ2InXSksICJmcm96ZW5zZXQoeydhJywgJ2InfSkiKQotICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFs0LCA1LCA2XSksICJmcm96ZW5zZXQoezQsIDUsIDZ9KSIpCisgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoKSwgImZyb3plbnNldCgpIikKKyAgICAgICAgc2VsZi5hc3NlcnRHZGJSZXByKGZyb3plbnNldChbJ2EnXSksICJmcm96ZW5zZXQoeydhJ30pIikKKyAgICAgICAgIyBQWVRIT05IQVNIU0VFRCBpcyBuZWVkIHRvIGdldCB0aGUgZXhhY3QgZnJvemVuc2V0IGl0ZW0gb3JkZXIKKyAgICAgICAgaWYgbm90IHN5cy5mbGFncy5pZ25vcmVfZW52aXJvbm1lbnQ6CisgICAgICAgICAgICBzZWxmLmFzc2VydEdkYlJlcHIoZnJvemVuc2V0KFsnYScsICdiJ10pLCAiZnJvemVuc2V0KHsnYScsICdiJ30pIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R2RiUmVwcihmcm96ZW5zZXQoWzQsIDUsIDZdKSwgImZyb3plbnNldCh7NCwgNSwgNn0pIikKIAogICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbnMoc2VsZik6CiAgICAgICAgICMgVGVzdCBhIFJ1bnRpbWVFcnJvcgpAQCAtNTAxLDYgKzUxMywxMCBAQAogCiAgICAgZGVmIHRlc3RfYnVpbHRpbnNfaGVscChzZWxmKToKICAgICAgICAgJ0Vuc3VyZSB0aGF0IHRoZSBuZXctc3R5bGUgY2xhc3MgX0hlbHBlciBpbiBzaXRlLnB5IGNhbiBiZSBoYW5kbGVkJworCisgICAgICAgIGlmIHN5cy5mbGFncy5ub19zaXRlOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgibmVlZCBzaXRlIG1vZHVsZSwgYnV0IC1TIG9wdGlvbiB3YXMgdXNlZCIpCisKICAgICAgICAgIyAodGhpcyB3YXMgdGhlIGlzc3VlIGNhdXNpbmcgdHJhY2ViYWNrcyBpbgogICAgICAgICAjICBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlODAzMiNtc2cxMDA1MzcgKQogICAgICAgICBnZGJfcmVwciwgZ2RiX291dHB1dCA9IHNlbGYuZ2V0X2dkYl9yZXByKCdpZChfX2J1aWx0aW5zX18uaGVscCknLCBpbXBvcnRfc2l0ZT1UcnVlKQpAQCAtNTM2LDcgKzU1Miw3IEBACiBmb28gPSBGb28oKQogZm9vLmFuX2F0dHIgPSBmb28KIGlkKGZvbyknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJzxGb29cKGFuX2F0dHI9PFwuXC5cLj5cKSBhdCByZW1vdGUgMHgtP1swLTlhLWZdKz4nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RiX3JlcHIpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIChnZGJfcmVwciwgZ2RiX291dHB1dCkpCkBAIC01NDksNyArNTY1LDcgQEAKIGZvbyA9IEZvbygpCiBmb28uYW5fYXR0ciA9IGZvbwogaWQoZm9vKScnJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08XC5cLlwuPlwpIGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTU2Myw3ICs1NzksNyBAQAogYS5hbl9hdHRyID0gYgogYi5hbl9hdHRyID0gYQogaWQoYSknJycpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgnPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPEZvb1woYW5fYXR0cj08Rm9vXChhbl9hdHRyPTxcLlwuXC4+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+XCkgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9yZXByKSwKICAgICAgICAgICAgICAgICAgICAgICAgICdVbmV4cGVjdGVkIGdkYiByZXByZXNlbnRhdGlvbjogJXJcbiVzJyAlIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2RiX3JlcHIsIGdkYl9vdXRwdXQpKQpAQCAtNTk4LDcgKzYxNCw3IEBACiAKICAgICBkZWYgdGVzdF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgZ2RiX3JlcHIsIGdkYl9vdXRwdXQgPSBzZWxmLmdldF9nZGJfcmVwcignaW1wb3J0IHN5czsgaWQoc3lzLnN0ZG91dC5yZWFkbGluZXMpJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCc8YnVpbHQtaW4gbWV0aG9kIHJlYWRsaW5lcyBvZiBfaW8uVGV4dElPV3JhcHBlciBvYmplY3QgYXQgcmVtb3RlIDB4LT9bMC05YS1mXSs+JywKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInPGJ1aWx0LWluIG1ldGhvZCByZWFkbGluZXMgb2YgX2lvLlRleHRJT1dyYXBwZXIgb2JqZWN0IGF0IHJlbW90ZSAweC0/WzAtOWEtZl0rPicsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGJfcmVwciksCiAgICAgICAgICAgICAgICAgICAgICAgICAnVW5leHBlY3RlZCBnZGIgcmVwcmVzZW50YXRpb246ICVyXG4lcycgJSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdkYl9yZXByLCBnZGJfb3V0cHV0KSkKQEAgLTYxMyw3ICs2MjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWtwb2ludD0nYnVpbHRpbl9pZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbWRzX2FmdGVyX2JyZWFrcG9pbnQ9WydwcmludCAoUHlGcmFtZU9iamVjdCopKCgoUHlDb2RlT2JqZWN0Kil2KS0+Y29fem9tYmllZnJhbWUpJ10KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcuKlxzK1wkMSA9XHMrRnJhbWUgMHgtP1swLTlhLWZdKywgZm9yIGZpbGUgPHN0cmluZz4sIGxpbmUgMywgaW4gZm9vIFwoXClccysuKicsCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJy4qXHMrXCQxID1ccytGcmFtZSAweC0/WzAtOWEtZl0rLCBmb3IgZmlsZSA8c3RyaW5nPiwgbGluZSAzLCBpbiBmb28gXChcKVxzKy4qJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkYl9vdXRwdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZS5ET1RBTEwpLAogICAgICAgICAgICAgICAgICAgICAgICAgJ1VuZXhwZWN0ZWQgZ2RiIHJlcHJlc2VudGF0aW9uOiAlclxuJXMnICUgKGdkYl9vdXRwdXQsIGdkYl9vdXRwdXQpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXA0NzkucHkgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcl9zdG9wLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDQ3OS5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3Jfc3RvcC5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmF0b3JzLnB5CmluZGV4IDNmODI0NjIuLmY0YjMzYWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2VuZXJhdG9ycy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dlbmVyYXRvcnMucHkKQEAgLTI0NSwxMSArMjQ1LDExIEBACiAgICAgICAgICAgICB5aWVsZAogCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiksIFwKLSAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogCiAgICAgICAgICAgICBuZXh0KGdlbigpKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImdlbmVyYXRvciAuKiByYWlzZWQgU3RvcEl0ZXJhdGlvbiIpLCBcCiAgICAgICAgICAgICAgd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKIApAQCAtMjY4LDcgKzI2OCw3IEBACiAgICAgICAgIGcgPSBmKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXh0KGcpLCAxKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbik6CiAgICAgICAgICAgICAgICAgbmV4dChnKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9nZW5lcmljcGF0aC5weQppbmRleCBiNzdkMWQ3Li5hZTVkZDZhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dlbmVyaWNwYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2VuZXJpY3BhdGgucHkKQEAgLTEwLDExICsxMCw5IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCi1kZWYgc2FmZV9ybWRpcihkaXJuYW1lKToKLSAgICB0cnk6Ci0gICAgICAgIG9zLnJtZGlyKGRpcm5hbWUpCi0gICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgIHBhc3MKK2RlZiBjcmVhdGVfZmlsZShmaWxlbmFtZSwgZGF0YT1iJ2ZvbycpOgorICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3hiJywgMCkgYXMgZnA6CisgICAgICAgIGZwLndyaXRlKGRhdGEpCiAKIAogY2xhc3MgR2VuZXJpY1Rlc3Q6CkBAIC05Nyw1MiArOTUsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChzMVtuOm4rMV0sIHMyW246bisxXSkKIAogICAgIGRlZiB0ZXN0X2dldHNpemUoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGhtb2R1bGUuZ2V0c2l6ZShzdXBwb3J0LlRFU1RGTiksIDMpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZWQ6Ci0gICAgICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQogCi0gICAgZGVmIHRlc3RfdGltZShzZWxmKToKLSAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGYud3JpdGUoYiJmb28iKQotICAgICAgICAgICAgZi5jbG9zZSgpCi0gICAgICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgImFiIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInSGVsbG8nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYucGF0aG1vZHVsZS5nZXRzaXplKGZpbGVuYW1lKSwgNSkKKyAgICAgICAgb3MucmVtb3ZlKGZpbGVuYW1lKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ0hlbGxvIFdvcmxkIScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRobW9kdWxlLmdldHNpemUoZmlsZW5hbWUpLCAxMikKKworICAgIGRlZiB0ZXN0X2ZpbGV0aW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUsIGInZm9vJykKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJhYiIsIDApIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIiYmFyIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgZiA9IG9wZW4oc3VwcG9ydC5URVNURk4sICJyYiIpCi0gICAgICAgICAgICBkID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBiImZvb2JhciIpCiAKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKAotICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRjdGltZShzdXBwb3J0LlRFU1RGTiksCi0gICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmdldG10aW1lKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2VkOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZjoKKyAgICAgICAgICAgIGRhdGEgPSBmLnJlYWQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIiZm9vYmFyIikKKworICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCgKKyAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5nZXRjdGltZShmaWxlbmFtZSksCisgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuZ2V0bXRpbWUoZmlsZW5hbWUpCisgICAgICAgICkKIAogICAgIGRlZiB0ZXN0X2V4aXN0cyhzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKQotICAgICAgICB0cnk6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKworICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5leGlzdHMoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ4YiIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKGIiZm9vIikKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuZXhpc3RzKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLnBhdGhtb2R1bGUgPT0gZ2VuZXJpY3BhdGg6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUubGV4aXN0cyhzdXBwb3J0LlRFU1RGTiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUcnVlKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhmaWxlbmFtZSksIFRydWUpCisKKyAgICAgICAgaWYgbm90IHNlbGYucGF0aG1vZHVsZSA9PSBnZW5lcmljcGF0aDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmxleGlzdHMoZmlsZW5hbWUpLCBUcnVlKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgInBpcGUiKSwgInJlcXVpcmVzIG9zLnBpcGUoKSIpCiAgICAgZGVmIHRlc3RfZXhpc3RzX2ZkKHNlbGYpOgpAQCAtMTU0LDUzICsxNDcsNjYgQEAKICAgICAgICAgICAgIG9zLmNsb3NlKHcpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXRobW9kdWxlLmV4aXN0cyhyKSkKIAotICAgIGRlZiB0ZXN0X2lzZGlyKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydElzKHNlbGYucGF0aG1vZHVsZS5pc2RpcihzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgRmFsc2UpCi0gICAgICAgICAgICBvcy5yZW1vdmUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKHN1cHBvcnQuVEVTVEZOKSwgVHJ1ZSkKLSAgICAgICAgICAgIG9zLnJtZGlyKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgaWYgbm90IGYuY2xvc2UoKToKLSAgICAgICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICAgICAgc2FmZV9ybWRpcihzdXBwb3J0LlRFU1RGTikKKyAgICBkZWYgdGVzdF9pc2Rpcl9maWxlKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZGlyKGZpbGVuYW1lKSwgRmFsc2UpCiAKLSAgICBkZWYgdGVzdF9pc2ZpbGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICBmID0gb3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIikKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZi53cml0ZShiImZvbyIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIFRydWUpCi0gICAgICAgICAgICBvcy5yZW1vdmUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBvcy5ta2RpcihzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShzdXBwb3J0LlRFU1RGTiksIEZhbHNlKQotICAgICAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBpZiBub3QgZi5jbG9zZSgpOgotICAgICAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgc3VwcG9ydC51bmxpbmsoc3VwcG9ydC5URVNURk4pCi0gICAgICAgICAgICBzYWZlX3JtZGlyKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKIAotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgX2NyZWF0ZV9maWxlKGZpbGVuYW1lKToKLSAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAnd2InKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShiJ2ZvbycpCisgICAgZGVmIHRlc3RfaXNkaXJfZGlyKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBGYWxzZSkKKworICAgICAgICBvcy5ta2RpcihmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNkaXIoZmlsZW5hbWUpLCBUcnVlKQorCisgICAgZGVmIHRlc3RfaXNmaWxlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIFRydWUpCisKKyAgICBkZWYgdGVzdF9pc2ZpbGVfZGlyKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtZGlyLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzZWxmLnBhdGhtb2R1bGUuaXNmaWxlKGZpbGVuYW1lKSwgRmFsc2UpCisKKyAgICAgICAgb3MubWtkaXIoZmlsZW5hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2VsZi5wYXRobW9kdWxlLmlzZmlsZShmaWxlbmFtZSksIEZhbHNlKQogCiAgICAgZGVmIHRlc3Rfc2FtZWZpbGUoc2VsZik6Ci0gICAgICAgIHRyeToKLSAgICAgICAgICAgIHRlc3RfZm4gPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbiwgdGVzdF9mbikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuKQorICAgICAgICBmaWxlMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIGZpbGUyID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlMikKKworICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZShmaWxlMSwgZmlsZTEpKQorCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUyKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZShmaWxlMSwgZmlsZTIpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKQorCisgICAgZGVmIF90ZXN0X3NhbWVmaWxlX29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKKyAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjEpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgdGVzdF9mbjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjEpCisKKyAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKKyAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4yKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGF0aG1vZHVsZS5zYW1lZmlsZSh0ZXN0X2ZuMSwgdGVzdF9mbjIpKQogCiAgICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawogICAgIGRlZiB0ZXN0X3NhbWVmaWxlX29uX3N5bWxpbmsoc2VsZik6CkBAIC0yMDksMzEgKzIxNSwzNyBAQAogICAgIGRlZiB0ZXN0X3NhbWVmaWxlX29uX2xpbmsoc2VsZik6CiAgICAgICAgIHNlbGYuX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKG9zLmxpbmspCiAKLSAgICBkZWYgX3Rlc3Rfc2FtZWZpbGVfb25fbGlua19mdW5jKHNlbGYsIGZ1bmMpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOICsgIjEiCi0gICAgICAgICAgICB0ZXN0X2ZuMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKLQotICAgICAgICAgICAgZnVuYyh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVmaWxlKHRlc3RfZm4xLCB0ZXN0X2ZuMikpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4yKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZWZpbGUodGVzdF9mbjEsIHRlc3RfZm4yKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMSkKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKLQogICAgIGRlZiB0ZXN0X3NhbWVzdGF0KHNlbGYpOgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICB0ZXN0X2ZuID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgICAgIHNlbGYuX2NyZWF0ZV9maWxlKHRlc3RfZm4pCi0gICAgICAgICAgICB0ZXN0X2ZucyA9IFt0ZXN0X2ZuXSoyCi0gICAgICAgICAgICBzdGF0cyA9IG1hcChvcy5zdGF0LCB0ZXN0X2ZucykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuKQorICAgICAgICB0ZXN0X2ZuMSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHRlc3RfZm4yID0gc3VwcG9ydC5URVNURk4gKyAiMiIKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCB0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMSkKKyAgICAgICAgc3RhdDEgPSBvcy5zdGF0KHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVzdGF0KHN0YXQxLCBvcy5zdGF0KHRlc3RfZm4xKSkpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUodGVzdF9mbjIpCisgICAgICAgIHN0YXQyID0gb3Muc3RhdCh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoc3RhdDEsIHN0YXQyKSkKKworICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCkKKworICAgIGRlZiBfdGVzdF9zYW1lc3RhdF9vbl9saW5rX2Z1bmMoc2VsZiwgZnVuYyk6CisgICAgICAgIHRlc3RfZm4xID0gc3VwcG9ydC5URVNURk4gKyAiMSIKKyAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4xKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHRlc3RfZm4yKQorCisgICAgICAgIGNyZWF0ZV9maWxlKHRlc3RfZm4xKQorICAgICAgICBmdW5jKHRlc3RfZm4xLCB0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdChvcy5zdGF0KHRlc3RfZm4xKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KHRlc3RfZm4yKSkpCisgICAgICAgIG9zLnJlbW92ZSh0ZXN0X2ZuMikKKworICAgICAgICBjcmVhdGVfZmlsZSh0ZXN0X2ZuMikKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQob3Muc3RhdCh0ZXN0X2ZuMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQodGVzdF9mbjIpKSkKIAogICAgIEBzdXBwb3J0LnNraXBfdW5sZXNzX3N5bWxpbmsKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9zeW1saW5rKHNlbGYpOgpAQCAtMjQyLDMxICsyNTQsMTcgQEAKICAgICBkZWYgdGVzdF9zYW1lc3RhdF9vbl9saW5rKHNlbGYpOgogICAgICAgICBzZWxmLl90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhvcy5saW5rKQogCi0gICAgZGVmIF90ZXN0X3NhbWVzdGF0X29uX2xpbmtfZnVuYyhzZWxmLCBmdW5jKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgdGVzdF9mbjEgPSBzdXBwb3J0LlRFU1RGTiArICIxIgotICAgICAgICAgICAgdGVzdF9mbjIgPSBzdXBwb3J0LlRFU1RGTiArICIyIgotICAgICAgICAgICAgc2VsZi5fY3JlYXRlX2ZpbGUodGVzdF9mbjEpCi0gICAgICAgICAgICB0ZXN0X2ZucyA9ICh0ZXN0X2ZuMSwgdGVzdF9mbjIpCi0gICAgICAgICAgICBmdW5jKCp0ZXN0X2ZucykKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lc3RhdCgqc3RhdHMpKQotICAgICAgICAgICAgb3MucmVtb3ZlKHRlc3RfZm4yKQotCi0gICAgICAgICAgICBzZWxmLl9jcmVhdGVfZmlsZSh0ZXN0X2ZuMikKLSAgICAgICAgICAgIHN0YXRzID0gbWFwKG9zLnN0YXQsIHRlc3RfZm5zKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQoKnN0YXRzKSkKLQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnBhdGhtb2R1bGUuc2FtZXN0YXQpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjEpCi0gICAgICAgICAgICBvcy5yZW1vdmUodGVzdF9mbjIpCi0KICAgICBkZWYgdGVzdF9zYW1lb3BlbmZpbGUoc2VsZik6Ci0gICAgICAgIGZuYW1lID0gc3VwcG9ydC5URVNURk4gKyAiMSIKLSAgICAgICAgd2l0aCBvcGVuKGZuYW1lLCAid2IiKSBhcyBhLCBvcGVuKGZuYW1lLCAid2IiKSBhcyBiOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGF0aG1vZHVsZS5zYW1lb3BlbmZpbGUoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGEuZmlsZW5vKCksIGIuZmlsZW5vKCkpKQorICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIiwgMCkgYXMgZnAxOgorICAgICAgICAgICAgZmQxID0gZnAxLmZpbGVubygpCisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJyYiIsIDApIGFzIGZwMjoKKyAgICAgICAgICAgICAgICBmZDIgPSBmcDIuZmlsZW5vKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXRobW9kdWxlLnNhbWVvcGVuZmlsZShmZDEsIGZkMikpCisKIAogY2xhc3MgVGVzdEdlbmVyaWNUZXN0KEdlbmVyaWNUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgIyBJc3N1ZSAxNjg1MjogR2VuZXJpY1Rlc3QgY2FuJ3QgaW5oZXJpdCBmcm9tIHVuaXR0ZXN0LlRlc3RDYXNlCkBAIC0zOTAsMTAgKzM4OCwxMyBAQAogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIiZm9vIiwgc2VsZi5wYXRobW9kdWxlLmFic3BhdGgoYiJmb28iKSkKIAorICAgICAgICAjIGF2b2lkIFVuaWNvZGVEZWNvZGVFcnJvciBvbiBXaW5kb3dzCisgICAgICAgIHVuZGVjb2RhYmxlX3BhdGggPSBiJycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSBiJ2ZceGYyXHhmMicKKwogICAgICAgICAjIEFic3BhdGggcmV0dXJucyBieXRlcyB3aGVuIHRoZSBhcmcgaXMgYnl0ZXMKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIGInZlx4ZjJceGYyJywgYicvZm9vJywgYidDOlxcJyk6CisgICAgICAgICAgICBmb3IgcGF0aCBpbiAoYicnLCBiJ2ZvbycsIHVuZGVjb2RhYmxlX3BhdGgsIGInL2ZvbycsIGInQzpcXCcpOgogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZWxmLnBhdGhtb2R1bGUuYWJzcGF0aChwYXRoKSwgYnl0ZXMpCiAKICAgICBkZWYgdGVzdF9yZWFscGF0aChzZWxmKToKQEAgLTQ1MiwxNiArNDUzLDE1IEBACiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKCdzdHInLCBiJ2J5dGVzJykKICAgICAgICAgICAgICMgcmVncmVzc2lvbiwgc2VlICMxNTM3NwotICAgICAgICAgICAgZXJybXNnID0gcidqb2luXChcKSBhcmd1bWVudCBtdXN0IGJlIHN0ciBvciBieXRlcywgbm90ICVyJwotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5qb2luKDQyLCAnc3RyJykKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdpbnQnKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdpbnQnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbignc3RyJywgNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLmpvaW4oNDIpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnbGlzdCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2xpc3QnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihbXSkKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUuam9pbihieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKICAgICBkZWYgdGVzdF9yZWxwYXRoX2Vycm9ycyhzZWxmKToKQEAgLTQ3MywxNCArNDczLDU5IEBACiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoYidieXRlcycsICdzdHInKQogICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aCgnc3RyJywgYidieXRlcycpCi0gICAgICAgICAgICBlcnJtc2cgPSByJ3JlbHBhdGhcKFwpIGFyZ3VtZW50IG11c3QgYmUgc3RyIG9yIGJ5dGVzLCBub3QgJXInCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCBlcnJtc2cgJSAnaW50Jyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnaW50Jyk6CiAgICAgICAgICAgICAgICAgc2VsZi5wYXRobW9kdWxlLnJlbHBhdGgoNDIsICdzdHInKQotICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgZXJybXNnICUgJ2ludCcpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ2ludCcpOgogICAgICAgICAgICAgICAgIHNlbGYucGF0aG1vZHVsZS5yZWxwYXRoKCdzdHInLCA0MikKLSAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIGVycm1zZyAlICdieXRlYXJyYXknKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdieXRlYXJyYXknKToKICAgICAgICAgICAgICAgICBzZWxmLnBhdGhtb2R1bGUucmVscGF0aChieXRlYXJyYXkoYidmb28nKSwgYnl0ZWFycmF5KGInYmFyJykpCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBjcmVhdGVfZmlsZShzZWxmLmZpbGVfbmFtZSwgYiJ0ZXN0X2dlbmVyaWNwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4aXN0cyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5leGlzdHMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZmlsZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5pc2ZpbGUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzZGlyKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmlzZGlyKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wcmVmaXgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MucGF0aC5jb21tb25wcmVmaXgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pLAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9uYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRzaXplKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldHNpemUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2dldG10aW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChvcy5wYXRoLmdldGF0aW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9nZXRjdGltZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwob3MucGF0aC5nZXRjdGltZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc2FtZWZpbGUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLnNhbWVmaWxlKHNlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZSkpCisKKwogaWYgX19uYW1lX189PSJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5IGIvTGliL3Rlc3QvdGVzdF9nZXRhcmdzMi5weQppbmRleCA5ODRhYWM3Li44YTE5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dldGFyZ3MyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ2V0YXJnczIucHkKQEAgLTUsMTAgKzUsNiBAQAogIyBTa2lwIHRoaXMgdGVzdCBpZiB0aGUgX3Rlc3RjYXBpIG1vZHVsZSBpc24ndCBhdmFpbGFibGUuCiBzdXBwb3J0LmltcG9ydF9tb2R1bGUoJ190ZXN0Y2FwaScpCiBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19rZXl3b3JkcywgZ2V0YXJnc19rZXl3b3JkX29ubHkKLXRyeToKLSAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgZ2V0YXJnc19MLCBnZXRhcmdzX0sKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBnZXRhcmdzX0wgPSBOb25lICMgUFlfTE9OR19MT05HIG5vdCBhdmFpbGFibGUKIAogIyA+IEhvdyBhYm91dCB0aGUgZm9sbG93aW5nIGNvdW50ZXJwcm9wb3NhbC4gVGhpcyBhbHNvIGNoYW5nZXMgc29tZSBvZgogIyA+IHRoZSBvdGhlciBmb3JtYXQgY29kZXMgdG8gYmUgYSBsaXR0bGUgbW9yZSByZWd1bGFyLgpAQCAtMzA5LDcgKzMwNSw2IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGdldGFyZ3NfbiwgVkVSWV9MQVJHRSkKIAogCi1AdW5pdHRlc3Quc2tpcElmKGdldGFyZ3NfTCBpcyBOb25lLCAnUFlfTE9OR19MT05HIGlzIG5vdCBhdmFpbGFibGUnKQogY2xhc3MgTG9uZ0xvbmdfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X0woc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX0wKQEAgLTM2NSw3ICszNjAsOCBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihGbG9hdFN1YmNsYXNzKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19mKEZsb2F0U3ViY2xhc3MyKDcuNSkpLCA3LjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19mLCBCYWRGbG9hdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDIoKSksIDQuMjUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2YoQmFkRmxvYXQyKCkpLCA0LjI1KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZihCYWRGbG9hdDMoNy41KSksIDcuNSkKIAogICAgICAgICBmb3IgeCBpbiAoRkxUX01JTiwgLUZMVF9NSU4sIEZMVF9NQVgsIC1GTFRfTUFYLCBJTkYsIC1JTkYpOgpAQCAtMzkwLDcgKzM4Niw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEZsb2F0U3ViY2xhc3MoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2QoRmxvYXRTdWJjbGFzczIoNy41KSksIDcuNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBnZXRhcmdzX2QsIEJhZEZsb2F0KCkpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0MigpKSwgNC4yNSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3NfZChCYWRGbG9hdDIoKSksIDQuMjUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0YXJnc19kKEJhZEZsb2F0Myg3LjUpKSwgNy41KQogCiAgICAgICAgIGZvciB4IGluIChEQkxfTUlOLCAtREJMX01JTiwgREJMX01BWCwgLURCTF9NQVgsIElORiwgLUlORik6CkBAIC00NzQsNyArNDcxLDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfYXJncygqVHVwbGVTdWJjbGFzcyhbMSwgMl0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgKDEsIDIpKQotICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocmV0LCB0dXBsZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIHR1cGxlKQogCiAgICAgICAgIHJldCA9IGdldF9hcmdzKCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihyZXQsICgoKSwgTm9uZSkpCkBAIC01MTIsNyArNTA5LDcgQEAKIAogICAgICAgICByZXQgPSBnZXRfa3dhcmdzKCoqRGljdFN1YmNsYXNzKHsnYSc6IDEsICdiJzogMn0pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgeydhJzogMSwgJ2InOiAyfSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHJldCwgZGljdCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKHJldCksIGRpY3QpCiAKICAgICAgICAgcmV0ID0gZ2V0X2t3YXJncygpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4ocmV0LCAoe30sIE5vbmUpKQpAQCAtNjI4LDIwICs2MjUsMjAgQEAKICAgICAgICAgICAgICkKICAgICAgICAgIyByZXF1aXJlZCBhcmcgbWlzc2luZwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgIlJlcXVpcmVkIGFyZ3VtZW50ICdyZXF1aXJlZCcgXChwb3MgMVwpIG5vdCBmb3VuZCIpOgorICAgICAgICAgICAgciJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKICAgICAgICAgICAgIGdldGFyZ3Nfa2V5d29yZF9vbmx5KG9wdGlvbmFsPTIpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICJSZXF1aXJlZCBhcmd1bWVudCAncmVxdWlyZWQnIFwocG9zIDFcKSBub3QgZm91bmQiKToKKyAgICAgICAgICAgIHIiUmVxdWlyZWQgYXJndW1lbnQgJ3JlcXVpcmVkJyBcKHBvcyAxXCkgbm90IGZvdW5kIik6CiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seShrZXl3b3JkX29ubHk9MykKIAogICAgIGRlZiB0ZXN0X3Rvb19tYW55X2FyZ3Moc2VsZik6CiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAiRnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAyIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMyBnaXZlblwpIik6CisgICAgICAgICAgICByIkZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDMgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgImZ1bmN0aW9uIHRha2VzIGF0IG1vc3QgMyBhcmd1bWVudHMgXCg0IGdpdmVuXCkiKToKKyAgICAgICAgICAgIHIiZnVuY3Rpb24gdGFrZXMgYXQgbW9zdCAzIGFyZ3VtZW50cyBcKDQgZ2l2ZW5cKSIpOgogICAgICAgICAgICAgZ2V0YXJnc19rZXl3b3JkX29ubHkoMSwgMiwgMywga2V5d29yZF9vbmx5PTUpCiAKICAgICBkZWYgdGVzdF9pbnZhbGlkX2tleXdvcmQoc2VsZik6CkBAIC02NTYsNiArNjUzLDM5IEBACiAgICAgICAgICAgICBnZXRhcmdzX2tleXdvcmRfb25seSgxLCAyLCAqKnsnXHVEQzgwJzogMTB9KQogCiAKK2NsYXNzIFBvc2l0aW9uYWxPbmx5QW5kS2V5d29yZHNfVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBnZXRhcmdzX3Bvc2l0aW9uYWxfb25seV9hbmRfa2V5d29yZHMgYXMgZ2V0YXJncworCisgICAgZGVmIHRlc3RfcG9zaXRpb25hbF9hcmdzKHNlbGYpOgorICAgICAgICAjIHVzaW5nIGFsbCBwb3NzaWJsZSBwb3NpdGlvbmFsIGFyZ3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSwgMiwgMyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X21peGVkX2FyZ3Moc2VsZik6CisgICAgICAgICMgcG9zaXRpb25hbCBhbmQga2V5d29yZCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIsIGtleXdvcmQ9MyksICgxLCAyLCAzKSkKKworICAgIGRlZiB0ZXN0X29wdGlvbmFsX2FyZ3Moc2VsZik6CisgICAgICAgICMgbWlzc2luZyBvcHRpb25hbCBhcmdzCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRhcmdzKDEsIDIpLCAoMSwgMiwgLTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0YXJncygxLCBrZXl3b3JkPTMpLCAoMSwgLTEsIDMpKQorCisgICAgZGVmIHRlc3RfcmVxdWlyZWRfYXJncyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmdldGFyZ3MoMSksICgxLCAtMSwgLTEpKQorICAgICAgICAjIHJlcXVpcmVkIHBvc2l0aW9uYWwgYXJnIG1pc3NpbmcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgIHIiRnVuY3Rpb24gdGFrZXMgYXQgbGVhc3QgMSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBcKDAgZ2l2ZW5cKSIpOgorICAgICAgICAgICAgc2VsZi5nZXRhcmdzKCkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAorICAgICAgICAgICAgciJGdW5jdGlvbiB0YWtlcyBhdCBsZWFzdCAxIHBvc2l0aW9uYWwgYXJndW1lbnRzIFwoMCBnaXZlblwpIik6CisgICAgICAgICAgICBzZWxmLmdldGFyZ3Moa2V5d29yZD0zKQorCisgICAgZGVmIHRlc3RfZW1wdHlfa2V5d29yZChzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKKyAgICAgICAgICAgICInJyBpcyBhbiBpbnZhbGlkIGtleXdvcmQgYXJndW1lbnQgZm9yIHRoaXMgZnVuY3Rpb24iKToKKyAgICAgICAgICAgIHNlbGYuZ2V0YXJncygxLCAyLCAqKnsnJzogNjY2fSkKKworCiBjbGFzcyBCeXRlc19UZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfYyhzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfYwpAQCAtODIyLDEwICs4NTIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2VzX2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19lc19oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXNfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfZXRfaGFzaChzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfZXRfaGFzaApAQCAtODQ4LDEwICs4NzgsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhcmdzX2V0X2hhc2goJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKSwgYidhYmNceGU5JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChidWYsIGJ5dGVhcnJheShiJ2FiY1x4ZTlceDAwJykpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheShiJ3gnKjQpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ1ZiwgYnl0ZWFycmF5KGIneCcqNCkpCiAgICAgICAgIGJ1ZiA9IGJ5dGVhcnJheSgpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgZ2V0YXJnc19ldF9oYXNoLCAnYWJjXHhlOScsICdsYXRpbjEnLCBidWYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGdldGFyZ3NfZXRfaGFzaCwgJ2FiY1x4ZTknLCAnbGF0aW4xJywgYnVmKQogCiAgICAgZGVmIHRlc3RfdShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IGdldGFyZ3NfdQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5IGIvTGliL3Rlc3QvdGVzdF9nZXR0ZXh0LnB5CmluZGV4IGRlNjEwYzcuLmQzNDViYWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ2V0dGV4dC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dldHRleHQucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgb3MKIGltcG9ydCBiYXNlNjQKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBnZXR0ZXh0CiBpbXBvcnQgdW5pdHRlc3QKIApAQCAtNDQwLDYgKzQzOSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHQuX19jbGFzc19fLCBEdW1teUdOVVRyYW5zbGF0aW9ucykKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjMnB5JywgJ0VOT0VOVCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIGdldHRleHQsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogZGVmIHRlc3RfbWFpbigpOgogICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KF9fbmFtZV9fKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkgYi9MaWIvdGVzdC90ZXN0X2dyYW1tYXIucHkKaW5kZXggMTU0ZTNiNi4uMDNmMmM4NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ncmFtbWFyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfZ3JhbW1hci5weQpAQCAtOCw2ICs4LDk1IEBACiAjIHRlc3RpbmcgaW1wb3J0ICoKIGZyb20gc3lzIGltcG9ydCAqCiAKKyMgZGlmZmVyZW50IGltcG9ydCBwYXR0ZXJucyB0byBjaGVjayB0aGF0IF9fYW5ub3RhdGlvbnNfXyBkb2VzIG5vdCBpbnRlcmZlcmUKKyMgd2l0aCBpbXBvcnQgbWFjaGluZXJ5CitpbXBvcnQgdGVzdC5hbm5fbW9kdWxlIGFzIGFubl9tb2R1bGUKK2ltcG9ydCB0eXBpbmcKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IENoYWluTWFwCitmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUyCitpbXBvcnQgdGVzdAorCisjIFRoZXNlIGFyZSBzaGFyZWQgd2l0aCB0ZXN0X3Rva2VuaXplIGFuZCBvdGhlciB0ZXN0IG1vZHVsZXMuCisjCisjIE5vdGU6IHNpbmNlIHNldmVyYWwgdGVzdCBjYXNlcyBmaWx0ZXIgb3V0IGZsb2F0cyBieSBsb29raW5nIGZvciAiZSIgYW5kICIuIiwKKyMgZG9uJ3QgYWRkIGhleGFkZWNpbWFsIGxpdGVyYWxzIHRoYXQgY29udGFpbiAiZSIgb3IgIkUiLgorVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUyA9IFsKKyAgICAnMF8wXzAnLAorICAgICc0XzInLAorICAgICcxXzAwMDBfMDAwMCcsCisgICAgJzBiMTAwMV8wMTAwJywKKyAgICAnMHhmZmZmX2ZmZmYnLAorICAgICcwbzVfN183JywKKyAgICAnMV8wMF8wMC41JywKKyAgICAnMV8wMF8wMC41ZTUnLAorICAgICcxXzAwXzAwZTVfMScsCisgICAgJzFlMV8wJywKKyAgICAnLjFfNCcsCisgICAgJy4xXzRlMScsCisgICAgJzBiXzAnLAorICAgICcweF9mJywKKyAgICAnMG9fNScsCisgICAgJzFfMDBfMDBqJywKKyAgICAnMV8wMF8wMC41aicsCisgICAgJzFfMDBfMDBlNV8xaicsCisgICAgJy4xXzRqJywKKyAgICAnKDFfMi41KzNfM2opJywKKyAgICAnKC41XzZqKScsCitdCitJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMgPSBbCisgICAgIyBUcmFpbGluZyB1bmRlcnNjb3JlczoKKyAgICAnMF8nLAorICAgICc0Ml8nLAorICAgICcxLjRqXycsCisgICAgJzB4XycsCisgICAgJzBiMV8nLAorICAgICcweGZfJywKKyAgICAnMG81XycsCisgICAgJzAgaWYgMV9FbHNlIDEnLAorICAgICMgVW5kZXJzY29yZXMgaW4gdGhlIGJhc2Ugc2VsZWN0b3I6CisgICAgJzBfYjAnLAorICAgICcwX3hmJywKKyAgICAnMF9vNScsCisgICAgIyBPbGQtc3R5bGUgb2N0YWwsIHN0aWxsIGRpc2FsbG93ZWQ6CisgICAgJzBfNycsCisgICAgJzA5Xzk5JywKKyAgICAjIE11bHRpcGxlIGNvbnNlY3V0aXZlIHVuZGVyc2NvcmVzOgorICAgICc0X19fX19fXzInLAorICAgICcwLjFfXzQnLAorICAgICcwLjFfXzRqJywKKyAgICAnMGIxMDAxX18wMTAwJywKKyAgICAnMHhmZmZmX19mZmZmJywKKyAgICAnMHhfX18nLAorICAgICcwbzVfXzc3JywKKyAgICAnMWUxX18wJywKKyAgICAnMWUxX18waicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBhIGRvdDoKKyAgICAnMV8uNCcsCisgICAgJzFfLjRqJywKKyAgICAjIFVuZGVyc2NvcmUgcmlnaHQgYWZ0ZXIgYSBkb3Q6CisgICAgJzEuXzQnLAorICAgICcxLl80aicsCisgICAgJy5fNScsCisgICAgJy5fNWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBhIHNpZ246CisgICAgJzEuMGUrXzEnLAorICAgICcxLjBlK18xaicsCisgICAgIyBVbmRlcnNjb3JlIHJpZ2h0IGJlZm9yZSBqOgorICAgICcxLjRfaicsCisgICAgJzEuNGU1X2onLAorICAgICMgVW5kZXJzY29yZSByaWdodCBiZWZvcmUgZToKKyAgICAnMV9lMScsCisgICAgJzEuNF9lMScsCisgICAgJzEuNF9lMWonLAorICAgICMgVW5kZXJzY29yZSByaWdodCBhZnRlciBlOgorICAgICcxZV8xJywKKyAgICAnMS40ZV8xJywKKyAgICAnMS40ZV8xaicsCisgICAgIyBDb21wbGV4IGNhc2VzIHdpdGggcGFyZW5zOgorICAgICcoMSsxLjVfal8pJywKKyAgICAnKDErMS41X2opJywKK10KKwogCiBjbGFzcyBUb2tlblRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArMTc2LDE0IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSBpZiAwZWxzZSAwLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgIjAgaWYgMUVsc2UgMCIpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlX2xpdGVyYWxzKHNlbGYpOgorICAgICAgICBmb3IgbGl0IGluIFZBTElEX1VOREVSU0NPUkVfTElURVJBTFM6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwobGl0KSwgZXZhbChsaXQucmVwbGFjZSgnXycsICcnKSkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsIGxpdCkKKyAgICAgICAgIyBTYW5pdHkgY2hlY2s6IG5vIGxpdGVyYWwgYmVnaW5zIHdpdGggYW4gdW5kZXJzY29yZQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IsIGV2YWwsICJfMCIpCisKICAgICBkZWYgdGVzdF9zdHJpbmdfbGl0ZXJhbHMoc2VsZik6CiAgICAgICAgIHggPSAnJzsgeSA9ICIiOyBzZWxmLmFzc2VydFRydWUobGVuKHgpID09IDAgYW5kIHggPT0geSkKICAgICAgICAgeCA9ICdcJyc7IHkgPSAiJyI7IHNlbGYuYXNzZXJ0VHJ1ZShsZW4oeCkgPT0gMSBhbmQgeCA9PSB5IGFuZCBvcmQoeCkgPT0gMzkpCkBAIC0xMzksNiArMjM2LDE5IEBACiAgICAgICAgICAgICAgICAgY29tcGlsZShzLCAiPHRlc3Q+IiwgImV4ZWMiKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigidW5leHBlY3RlZCBFT0YiLCBzdHIoY20uZXhjZXB0aW9uKSkKIAordmFyX2Fubm90X2dsb2JhbDogaW50ICMgYSBnbG9iYWwgYW5ub3RhdGVkIGlzIG5lY2Vzc2FyeSBmb3IgdGVzdF92YXJfYW5ub3QKKworIyBjdXN0b20gbmFtZXNwYWNlIGZvciB0ZXN0aW5nIF9fYW5ub3RhdGlvbnNfXworCitjbGFzcyBDTlM6CisgICAgZGVmIF9faW5pdF9fKHNlbGYpOgorICAgICAgICBzZWxmLl9kY3QgPSB7fQorICAgIGRlZiBfX3NldGl0ZW1fXyhzZWxmLCBpdGVtLCB2YWx1ZSk6CisgICAgICAgIHNlbGYuX2RjdFtpdGVtLmxvd2VyKCldID0gdmFsdWUKKyAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgIHJldHVybiBzZWxmLl9kY3RbaXRlbV0KKworCiBjbGFzcyBHcmFtbWFyVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgIyBzaW5nbGVfaW5wdXQ6IE5FV0xJTkUgfCBzaW1wbGVfc3RtdCB8IGNvbXBvdW5kX3N0bXQgTkVXTElORQpAQCAtMTU0LDYgKzI2NCwxNjMgQEAKICAgICAgICAgIyB0ZXN0bGlzdCBFTkRNQVJLRVIKICAgICAgICAgeCA9IGV2YWwoJzEsIDAgb3IgMScpCiAKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfYmFzaWNzKHNlbGYpOgorICAgICAgICAjIGFsbCB0aGVzZSBzaG91bGQgYmUgYWxsb3dlZAorICAgICAgICB2YXIxOiBpbnQgPSA1CisgICAgICAgIHZhcjI6IFtpbnQsIHN0cl0KKyAgICAgICAgbXlfbHN0ID0gWzQyXQorICAgICAgICBkZWYgb25lKCk6CisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBpbnQubmV3X2F0dHI6IGludAorICAgICAgICBbbGlzdF1bMF06IHR5cGUKKyAgICAgICAgbXlfbHN0W29uZSgpLTFdOiBpbnQgPSA1CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobXlfbHN0LCBbNV0pCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Rfc3ludGF4X2Vycm9ycyhzZWxmKToKKyAgICAgICAgIyBwYXJzZXIgcGFzcworICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgIng6IGludDogc3RyIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICBub25sb2NhbCB4OiBpbnRcbiIpCisgICAgICAgICMgQVNUIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJbeCwgMF06IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJmKCk6IGludFxuIikKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICIoeCwpOiBpbnQiKQorICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBmKCk6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiICAgICh4LCB5KTogaW50ID0gKDEsIDIpXG4iKQorICAgICAgICAjIHN5bXRhYmxlIHBhc3MKKyAgICAgICAgY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJkZWYgZigpOlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICB4OiBpbnRcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIpCisgICAgICAgIGNoZWNrX3N5bnRheF9lcnJvcihzZWxmLCAiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgZ2xvYmFsIHhcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeDogaW50XG4iKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2Jhc2ljX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgIyBleGVjdXRpb24gb3JkZXIKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogbm9fbmFtZV9hZ2FpbiA9IDEvMAorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBub19uYW1lW2RvZXNfbm90X2V4aXN0XTogMS8wID0gMAorICAgICAgICBnbG9iYWwgdmFyX2Fubm90X2dsb2JhbAorCisgICAgICAgICMgZnVuY3Rpb24gc2VtYW50aWNzCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICBzdDogc3RyID0gIkhlbGxvIgorICAgICAgICAgICAgYS5iOiBpbnQgPSAoMSwgMikKKyAgICAgICAgICAgIHJldHVybiBzdAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYuX19hbm5vdGF0aW9uc19fLCB7fSkKKyAgICAgICAgZGVmIGZfT0soKToKKyAgICAgICAgICAgIHg6IDEvMAorICAgICAgICBmX09LKCkKKyAgICAgICAgZGVmIGZiYWQoKToKKyAgICAgICAgICAgIHg6IGludAorICAgICAgICAgICAgcHJpbnQoeCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhVbmJvdW5kTG9jYWxFcnJvcik6CisgICAgICAgICAgICBmYmFkKCkKKyAgICAgICAgZGVmIGYyYmFkKCk6CisgICAgICAgICAgICAobm9fc3VjaF9nbG9iYWwpOiBpbnQKKyAgICAgICAgICAgIHByaW50KG5vX3N1Y2hfZ2xvYmFsKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBmMmJhZCgpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShlKSwgTmFtZUVycm9yKQorCisgICAgICAgICMgY2xhc3Mgc2VtYW50aWNzCisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBfX2ZvbzogaW50CisgICAgICAgICAgICBzOiBzdHIgPSAiYXR0ciIKKyAgICAgICAgICAgIHogPSAyCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54OiBpbnQgPSB4CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQy5fX2Fubm90YXRpb25zX18sIHsnX0NfX2Zvbyc6IGludCwgJ3MnOiBzdHJ9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBDQmFkOgorICAgICAgICAgICAgICAgIG5vX3N1Y2hfbmFtZV9kZWZpbmVkLmF0dHI6IGludCA9IDAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQ2JhZDIoQyk6CisgICAgICAgICAgICAgICAgeDogaW50CisgICAgICAgICAgICAgICAgeC55OiBsaXN0ID0gW10KKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9tZXRhY2xhc3Nfc2VtYW50aWNzKHNlbGYpOgorICAgICAgICBjbGFzcyBDTWV0YSh0eXBlKToKKyAgICAgICAgICAgIEBjbGFzc21ldGhvZAorICAgICAgICAgICAgZGVmIF9fcHJlcGFyZV9fKG1ldGFjbHMsIG5hbWUsIGJhc2VzLCAqKmt3ZHMpOgorICAgICAgICAgICAgICAgIHJldHVybiB7J19fYW5ub3RhdGlvbnNfXyc6IENOUygpfQorICAgICAgICBjbGFzcyBDQyhtZXRhY2xhc3M9Q01ldGEpOgorICAgICAgICAgICAgWFg6ICdBTk5PVCcKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChDQy5fX2Fubm90YXRpb25zX19bJ3h4J10sICdBTk5PVCcpCisKKyAgICBkZWYgdGVzdF92YXJfYW5ub3RfbW9kdWxlX3NlbWFudGljcyhzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBwcmludCh0ZXN0Ll9fYW5ub3RhdGlvbnNfXykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbm5fbW9kdWxlLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgIHsxOiAyLCAneCc6IGludCwgJ3knOiBzdHIsICdmJzogdHlwaW5nLlR1cGxlW2ludCwgaW50XX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYW5uX21vZHVsZS5NLl9fYW5ub3RhdGlvbnNfXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHsnMTIzJzogMTIzLCAnbyc6IHR5cGV9KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFubl9tb2R1bGUyLl9fYW5ub3RhdGlvbnNfXywge30pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHlwaW5nLmdldF90eXBlX2hpbnRzKGFubl9tb2R1bGUyLkNWLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbm5fbW9kdWxlMi5fX2RpY3RfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhaW5NYXAoeyd2YXInOiB0eXBpbmcuQ2xhc3NWYXJbYW5uX21vZHVsZTIuQ1ZdfSwge30pKQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2luX21vZHVsZShzZWxmKToKKyAgICAgICAgIyBjaGVjayB0aGF0IGZ1bmN0aW9ucyBmYWlsIHRoZSBzYW1lIHdheSB3aGVuIGV4ZWN1dGVkCisgICAgICAgICMgb3V0c2lkZSBvZiBtb2R1bGUgd2hlcmUgdGhleSB3ZXJlIGRlZmluZWQKKyAgICAgICAgZnJvbSB0ZXN0LmFubl9tb2R1bGUzIGltcG9ydCBmX2JhZF9hbm4sIGdfYmFkX2FubiwgRF9iYWRfYW5uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGZfYmFkX2FubigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIGdfYmFkX2FubigpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIERfYmFkX2Fubig1KQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X3NpbXBsZV9leGVjKHNlbGYpOgorICAgICAgICBnbnMgPSB7fTsgbG5zPSB7fQorICAgICAgICBleGVjKCInZG9jc3RyaW5nJ1xuIgorICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX19bMV0gPSAyXG4iCisgICAgICAgICAgICAgIng6IGludCA9IDVcbiIsIGducywgbG5zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxuc1siX19hbm5vdGF0aW9uc19fIl0sIHsxOiAyLCAneCc6IGludH0pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgZ25zWydfX2Fubm90YXRpb25zX18nXQorCisgICAgZGVmIHRlc3RfdmFyX2Fubm90X2N1c3RvbV9tYXBzKHNlbGYpOgorICAgICAgICAjIHRlc3RzIHdpdGggY3VzdG9tIGxvY2FscygpIGFuZCBfX2Fubm90YXRpb25zX18KKyAgICAgICAgbnMgPSB7J19fYW5ub3RhdGlvbnNfXyc6IENOUygpfQorICAgICAgICBleGVjKCdYOiBpbnQ7IFo6IHN0ciA9ICJaIjsgKHcpOiBjb21wbGV4ID0gMWonLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ11bJ3gnXSwgaW50KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zWydfX2Fubm90YXRpb25zX18nXVsneiddLCBzdHIpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpOgorICAgICAgICAgICAgbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd3J10KKyAgICAgICAgbm9ubG9jX25zID0ge30KKyAgICAgICAgY2xhc3MgQ05TMjoKKyAgICAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3QgPSB7fQorICAgICAgICAgICAgZGVmIF9fc2V0aXRlbV9fKHNlbGYsIGl0ZW0sIHZhbHVlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCBub25sb2NfbnMKKyAgICAgICAgICAgICAgICBzZWxmLl9kY3RbaXRlbV0gPSB2YWx1ZQorICAgICAgICAgICAgICAgIG5vbmxvY19uc1tpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwgaXRlbSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYuX2RjdFtpdGVtXQorICAgICAgICBleGVjKCd4OiBpbnQgPSAxJywge30sIENOUzIoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChub25sb2NfbnNbJ19fYW5ub3RhdGlvbnNfXyddWyd4J10sIGludCkKKworICAgIGRlZiB0ZXN0X3Zhcl9hbm5vdF9yZWZsZWFrKHNlbGYpOgorICAgICAgICAjIGNvbXBsZXggY2FzZTogY3VzdG9tIGxvY2FscyBwbHVzIGN1c3RvbSBfX2Fubm90YXRpb25zX18KKyAgICAgICAgIyB0aGlzIHdhcyBjYXVzaW5nIHJlZmxlYWsKKyAgICAgICAgY25zID0gQ05TKCkKKyAgICAgICAgbm9ubG9jX25zID0geydfX2Fubm90YXRpb25zX18nOiBjbnN9CisgICAgICAgIGNsYXNzIENOUzI6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5fZGN0ID0geydfX2Fubm90YXRpb25zX18nOiBjbnN9CisgICAgICAgICAgICBkZWYgX19zZXRpdGVtX18oc2VsZiwgaXRlbSwgdmFsdWUpOgorICAgICAgICAgICAgICAgIG5vbmxvY2FsIG5vbmxvY19ucworICAgICAgICAgICAgICAgIHNlbGYuX2RjdFtpdGVtXSA9IHZhbHVlCisgICAgICAgICAgICAgICAgbm9ubG9jX25zW2l0ZW1dID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpdGVtKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fZGN0W2l0ZW1dCisgICAgICAgIGV4ZWMoJ1g6IHN0cicsIHt9LCBDTlMyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobm9ubG9jX25zWydfX2Fubm90YXRpb25zX18nXVsneCddLCBzdHIpCisKICAgICBkZWYgdGVzdF9mdW5jZGVmKHNlbGYpOgogICAgICAgICAjIyMgW2RlY29yYXRvcnNdICdkZWYnIE5BTUUgcGFyYW1ldGVycyBbJy0+JyB0ZXN0XSAnOicgc3VpdGUKICAgICAgICAgIyMjIGRlY29yYXRvcjogJ0AnIGRvdHRlZF9uYW1lIFsgJygnIFthcmdsaXN0XSAnKScgXSBORVdMSU5FCkBAIC0yOTUsNiArNTYyLDEwIEBACiAgICAgICAgIHBvczJrZXkyZGljdCgxLDIsazI9MTAwLHRva3dhcmcxPTEwMCx0b2t3YXJnMj0yMDApCiAgICAgICAgIHBvczJrZXkyZGljdCgxLDIsdG9rd2FyZzE9MTAwLHRva3dhcmcyPTIwMCwgazI9MTAwKQogCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKik6IHBhc3MiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvciwgZXZhbCwgImRlZiBmKCosKTogcGFzcyIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yLCBldmFsLCAiZGVmIGYoKiwgKiprd2RzKTogcGFzcyIpCisKICAgICAgICAgIyBrZXl3b3JkIGFyZ3VtZW50cyBhZnRlciAqYXJnbGlzdAogICAgICAgICBkZWYgZigqYXJncywgKiprd2FyZ3MpOgogICAgICAgICAgICAgcmV0dXJuIGFyZ3MsIGt3YXJncwpAQCAtMzQxLDcgKzYxMiw3IEBACiAgICAgICAgIGRlZiBmKHgpIC0+IGxpc3Q6IHBhc3MKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLl9fYW5ub3RhdGlvbnNfXywgeydyZXR1cm4nOiBsaXN0fSkKIAotICAgICAgICAjIHRlc3QgTUFLRV9DTE9TVVJFIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJnJ3MKKyAgICAgICAgIyB0ZXN0IGNsb3N1cmVzIHdpdGggYSB2YXJpZXR5IG9mIG9wYXJncwogICAgICAgICBjbG9zdXJlID0gMQogICAgICAgICBkZWYgZigpOiByZXR1cm4gY2xvc3VyZQogICAgICAgICBkZWYgZih4PTEpOiByZXR1cm4gY2xvc3VyZQpAQCAtMzUyLDYgKzYyMywyMyBAQAogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKmcoMT0yKSkiKQogICAgICAgICBjaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImYoKipnKDE9MikpIikKIAorICAgICAgICAjIENoZWNrIHRyYWlsaW5nIGNvbW1hcyBhcmUgcGVybWl0dGVkIGluIGZ1bmNkZWYgYXJndW1lbnQgbGlzdAorICAgICAgICBkZWYgZihhLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsKTogcGFzcworICAgICAgICBkZWYgZigqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqYXJncywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCBiLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKiwgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKCphcmdzLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqYXJncywgYiwpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICosIGIsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqYXJncywgKiprd2RzLCk6IHBhc3MKKyAgICAgICAgZGVmIGYoKmFyZ3MsIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKCosIGIsICoqa3dkcywpOiBwYXNzCisgICAgICAgIGRlZiBmKGEsICphcmdzLCBiLCAqKmt3ZHMsKTogcGFzcworICAgICAgICBkZWYgZihhLCAqLCBiLCAqKmt3ZHMsKTogcGFzcworCiAgICAgZGVmIHRlc3RfbGFtYmRlZihzZWxmKToKICAgICAgICAgIyMjIGxhbWJkZWY6ICdsYW1iZGEnIFt2YXJhcmdzbGlzdF0gJzonIHRlc3QKICAgICAgICAgbDEgPSBsYW1iZGEgOiAwCkBAIC0zNzAsNiArNjU4LDIzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobDYoMSwyKSwgMSsyKzIwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGw2KDEsMixrPTEwKSwgMSsyKzEwKQogCisgICAgICAgICMgY2hlY2sgdGhhdCB0cmFpbGluZyBjb21tYXMgYXJlIHBlcm1pdHRlZAorICAgICAgICBsMTAgPSBsYW1iZGEgYSw6IDAKKyAgICAgICAgbDExID0gbGFtYmRhICphcmdzLDogMAorICAgICAgICBsMTIgPSBsYW1iZGEgKiprd2RzLDogMAorICAgICAgICBsMTMgPSBsYW1iZGEgYSwgKmFyZ3MsOiAwCisgICAgICAgIGwxNCA9IGxhbWJkYSBhLCAqKmt3ZHMsOiAwCisgICAgICAgIGwxNSA9IGxhbWJkYSAqYXJncywgYiw6IDAKKyAgICAgICAgbDE2ID0gbGFtYmRhICosIGIsOiAwCisgICAgICAgIGwxNyA9IGxhbWJkYSAqYXJncywgKiprd2RzLDogMAorICAgICAgICBsMTggPSBsYW1iZGEgYSwgKmFyZ3MsIGIsOiAwCisgICAgICAgIGwxOSA9IGxhbWJkYSBhLCAqLCBiLDogMAorICAgICAgICBsMjAgPSBsYW1iZGEgYSwgKmFyZ3MsICoqa3dkcyw6IDAKKyAgICAgICAgbDIxID0gbGFtYmRhICphcmdzLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyMiA9IGxhbWJkYSAqLCBiLCAqKmt3ZHMsOiAwCisgICAgICAgIGwyMyA9IGxhbWJkYSBhLCAqYXJncywgYiwgKiprd2RzLDogMAorICAgICAgICBsMjQgPSBsYW1iZGEgYSwgKiwgYiwgKiprd2RzLDogMAorCiAKICAgICAjIyMgc3RtdDogc2ltcGxlX3N0bXQgfCBjb21wb3VuZF9zdG10CiAgICAgIyBUZXN0ZWQgYmVsb3cKQEAgLTEwNDAsMTggKzEzNDUsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0ub3RoZXIsIDQyKQogCiAgICAgZGVmIHRlc3RfYXN5bmNfYXdhaXQoc2VsZik6Ci0gICAgICAgIGFzeW5jID0gMQotICAgICAgICBhd2FpdCA9IDIKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhc3luYywgMSkKLQotICAgICAgICBkZWYgYXN5bmMoKToKLSAgICAgICAgICAgIG5vbmxvY2FsIGF3YWl0Ci0gICAgICAgICAgICBhd2FpdCA9IDEwCi0gICAgICAgIGFzeW5jKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhd2FpdCwgMTApCi0KLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShib29sKGFzeW5jLl9fY29kZV9fLmNvX2ZsYWdzICYgaW5zcGVjdC5DT19DT1JPVVRJTkUpKQotCiAgICAgICAgIGFzeW5jIGRlZiB0ZXN0KCk6CiAgICAgICAgICAgICBkZWYgc3VtKCk6CiAgICAgICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ncnAucHkgYi9MaWIvdGVzdC90ZXN0X2dycC5weQppbmRleCAyNzJiMDg2Li42OTA5NWEzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2dycC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2dycC5weQpAQCAtOTIsNSArOTIsMTUgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvciwgZ3JwLmdldGdyZ2lkLCBmYWtlZ2lkKQogCisgICAgZGVmIHRlc3Rfbm9uaW50ZWdlcl9naWQoc2VsZik6CisgICAgICAgIGVudHJpZXMgPSBncnAuZ2V0Z3JhbGwoKQorICAgICAgICBpZiBub3QgZW50cmllczoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ25vIGdyb3VwcycpCisgICAgICAgICMgQ2hvb3NlIGFuIGV4aXN0ZW50IGdpZC4KKyAgICAgICAgZ2lkID0gZW50cmllc1swXVsyXQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgZ3JwLmdldGdyZ2lkLCBmbG9hdChnaWQpKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgZ3JwLmdldGdyZ2lkLCBzdHIoZ2lkKSkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9nemlwLnB5IGIvTGliL3Rlc3QvdGVzdF9nemlwLnB5CmluZGV4IDNjNTE2NzMuLmI0NTdiZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfZ3ppcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2d6aXAucHkKQEAgLTUsNiArNSw3IEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBiaWdtZW10ZXN0LCBfNEcKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBpbwogaW1wb3J0IHN0cnVjdAogaW1wb3J0IGFycmF5CkBAIC02Nyw2ICs2OCwxOCBAQAogICAgICAgICAjIFRlc3QgbXVsdGlwbGUgY2xvc2UoKSBjYWxscy4KICAgICAgICAgZi5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9yZWFkX3dpdGhfcGF0aGxpa2VfZmlsZShzZWxmKToKKyAgICAgICAgZmlsZW5hbWUgPSBwYXRobGliLlBhdGgoc2VsZi5maWxlbmFtZSkKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVuYW1lLCAndycpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExICogNTApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmLm5hbWUsIHN0cikKKyAgICAgICAgd2l0aCBnemlwLkd6aXBGaWxlKGZpbGVuYW1lLCAnYScpIGFzIGY6CisgICAgICAgICAgICBmLndyaXRlKGRhdGExKQorICAgICAgICB3aXRoIGd6aXAuR3ppcEZpbGUoZmlsZW5hbWUpIGFzIGY6CisgICAgICAgICAgICBkID0gZi5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkLCBkYXRhMSAqIDUxKQorICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZi5uYW1lLCBzdHIpCisKICAgICAjIFRoZSBmb2xsb3dpbmcgdGVzdF93cml0ZV94eSBtZXRob2RzIHRlc3QgdGhhdCB3cml0ZSBhY2NlcHRzCiAgICAgIyB0aGUgY29ycmVzcG9uZGluZyBieXRlcy1saWtlIG9iamVjdCB0eXBlIGFzIGlucHV0CiAgICAgIyBhbmQgdGhhdCB0aGUgZGF0YSB3cml0dGVuIGVxdWFscyBieXRlcyh4eSkgaW4gYWxsIGNhc2VzLgpAQCAtNDM0LDEyICs0NDcsMTIgQEAKIAogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBnemlwLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgY29tcHJlc3NsZXZlbD05KQorICAgICAgICBib21iID0gZ3ppcC5jb21wcmVzcyhiJ1wwJyAqIGludCgyZTYpLCBjb21wcmVzc2xldmVsPTkpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhsZW4oYm9tYiksIGlvLkRFRkFVTFRfQlVGRkVSX1NJWkUpCiAKICAgICAgICAgYm9tYiA9IGlvLkJ5dGVzSU8oYm9tYikKICAgICAgICAgZGVjb21wID0gZ3ppcC5HemlwRmlsZShmaWxlb2JqPWJvbWIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoMSksIGRlY29tcC5yZWFkKDEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlY29tcC5yZWFkKDEpLCBiJ1wwJykKICAgICAgICAgbWF4X2RlY29tcCA9IDEgKyBpby5ERUZBVUxUX0JVRkZFUl9TSVpFCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKGRlY29tcC5fYnVmZmVyLnJhdy50ZWxsKCksIG1heF9kZWNvbXAsCiAgICAgICAgICAgICAiRXhjZXNzaXZlIGFtb3VudCBvZiBkYXRhIHdhcyBkZWNvbXByZXNzZWQiKQpAQCAtNTIxLDYgKzUzNCwxNSBAQAogICAgICAgICAgICAgZmlsZV9kYXRhID0gZ3ppcC5kZWNvbXByZXNzKGYucmVhZCgpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIHVuY29tcHJlc3NlZCkKIAorICAgIGRlZiB0ZXN0X3BhdGhsaWtlX2ZpbGUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gcGF0aGxpYi5QYXRoKHNlbGYuZmlsZW5hbWUpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lLCAid2IiKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShkYXRhMSAqIDUwKQorICAgICAgICB3aXRoIGd6aXAub3BlbihmaWxlbmFtZSwgImFiIikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoZGF0YTEpCisgICAgICAgIHdpdGggZ3ppcC5vcGVuKGZpbGVuYW1lKSBhcyBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgZGF0YTEgKiA1MSkKKwogICAgIGRlZiB0ZXN0X2ltcGxpY2l0X2JpbmFyeV9tb2RlcyhzZWxmKToKICAgICAgICAgIyBUZXN0IGltcGxpY2l0IGJpbmFyeSBtb2RlcyAobm8gImIiIG9yICJ0IiBpbiBtb2RlIHN0cmluZykuCiAgICAgICAgIHVuY29tcHJlc3NlZCA9IGRhdGExICogNTAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaGFzaGxpYi5weQppbmRleCBjOWIxMTNlLi5mNzQ4YjQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2hhc2hsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oYXNobGliLnB5CkBAIC03LDYgKzcsNyBAQAogIwogCiBpbXBvcnQgYXJyYXkKK2Zyb20gYmluYXNjaWkgaW1wb3J0IHVuaGV4bGlmeQogaW1wb3J0IGhhc2hsaWIKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcwpAQCAtMTksNiArMjAsNyBAQAogaW1wb3J0IHdhcm5pbmdzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBfNEcsIGJpZ21lbXRlc3QsIGltcG9ydF9mcmVzaF9tb2R1bGUKK2Zyb20gaHR0cC5jbGllbnQgaW1wb3J0IEhUVFBFeGNlcHRpb24KIAogIyBXZXJlIHdlIGNvbXBpbGVkIC0td2l0aC1weWRlYnVnIG9yIHdpdGggI2RlZmluZSBQeV9ERUJVRz8KIENPTVBJTEVEX1dJVEhfUFlERUJVRyA9IGhhc2F0dHIoc3lzLCAnZ2V0dG90YWxyZWZjb3VudCcpCkBAIC0yNiw2ICsyOCwyMSBAQAogY19oYXNobGliID0gaW1wb3J0X2ZyZXNoX21vZHVsZSgnaGFzaGxpYicsIGZyZXNoPVsnX2hhc2hsaWInXSkKIHB5X2hhc2hsaWIgPSBpbXBvcnRfZnJlc2hfbW9kdWxlKCdoYXNobGliJywgYmxvY2tlZD1bJ19oYXNobGliJ10pCiAKK3RyeToKKyAgICBpbXBvcnQgX2JsYWtlMgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9ibGFrZTIgPSBOb25lCisKK3JlcXVpcmVzX2JsYWtlMiA9IHVuaXR0ZXN0LnNraXBVbmxlc3MoX2JsYWtlMiwgJ3JlcXVpcmVzIF9ibGFrZTInKQorCit0cnk6CisgICAgaW1wb3J0IF9zaGEzCitleGNlcHQgSW1wb3J0RXJyb3I6CisgICAgX3NoYTMgPSBOb25lCisKK3JlcXVpcmVzX3NoYTMgPSB1bml0dGVzdC5za2lwVW5sZXNzKF9zaGEzLCAncmVxdWlyZXMgX3NoYTMnKQorCisKIGRlZiBoZXhzdHIocyk6CiAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocywgYnl0ZXMpLCByZXByKHMpCiAgICAgaCA9ICIwMTIzNDU2Nzg5YWJjZGVmIgpAQCAtMzUsMTAgKzUyLDMzIEBACiAgICAgcmV0dXJuIHIKIAogCitVUkwgPSAiaHR0cDovL3d3dy5weXRob250ZXN0Lm5ldC9oYXNobGliL3t9LnR4dCIKKworZGVmIHJlYWRfdmVjdG9ycyhoYXNoX25hbWUpOgorICAgIHVybCA9IFVSTC5mb3JtYXQoaGFzaF9uYW1lKQorICAgIHRyeToKKyAgICAgICAgdGVzdGRhdGEgPSBzdXBwb3J0Lm9wZW5fdXJscmVzb3VyY2UodXJsKQorICAgIGV4Y2VwdCAoT1NFcnJvciwgSFRUUEV4Y2VwdGlvbik6CisgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJDb3VsZCBub3QgcmV0cmlldmUge30iLmZvcm1hdCh1cmwpKQorICAgIHdpdGggdGVzdGRhdGE6CisgICAgICAgIGZvciBsaW5lIGluIHRlc3RkYXRhOgorICAgICAgICAgICAgbGluZSA9IGxpbmUuc3RyaXAoKQorICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCcjJykgb3Igbm90IGxpbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHBhcnRzID0gbGluZS5zcGxpdCgnLCcpCisgICAgICAgICAgICBwYXJ0c1swXSA9IGJ5dGVzLmZyb21oZXgocGFydHNbMF0pCisgICAgICAgICAgICB5aWVsZCBwYXJ0cworCisKIGNsYXNzIEhhc2hMaWJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgc3VwcG9ydGVkX2hhc2hfbmFtZXMgPSAoICdtZDUnLCAnTUQ1JywgJ3NoYTEnLCAnU0hBMScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyMjQnLCAnU0hBMjI0JywgJ3NoYTI1NicsICdTSEEyNTYnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhMzg0JywgJ1NIQTM4NCcsICdzaGE1MTInLCAnU0hBNTEyJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NoYTM4NCcsICdTSEEzODQnLCAnc2hhNTEyJywgJ1NIQTUxMicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdibGFrZTJiJywgJ2JsYWtlMnMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hhM18yMjQnLCAnc2hhM18yNTYnLCAnc2hhM18zODQnLCAnc2hhM181MTInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2hha2VfMTI4JywgJ3NoYWtlXzI1NicpCisKKyAgICBzaGFrZXMgPSB7J3NoYWtlXzEyOCcsICdzaGFrZV8yNTYnfQogCiAgICAgIyBJc3N1ZSAjMTQ2OTM6IGZhbGxiYWNrIG1vZHVsZXMgYXJlIGFsd2F5cyBjb21waWxlZCB1bmRlciBQT1NJWAogICAgIF93YXJuX29uX2V4dGVuc2lvbl9pbXBvcnQgPSBvcy5uYW1lID09ICdwb3NpeCcgb3IgQ09NUElMRURfV0lUSF9QWURFQlVHCkBAIC01Niw2ICs5NiwxMSBAQAogICAgICAgICBhbGdvcml0aG1zID0gc2V0KCkKICAgICAgICAgZm9yIGFsZ29yaXRobSBpbiBzZWxmLnN1cHBvcnRlZF9oYXNoX25hbWVzOgogICAgICAgICAgICAgYWxnb3JpdGhtcy5hZGQoYWxnb3JpdGhtLmxvd2VyKCkpCisKKyAgICAgICAgX2JsYWtlMiA9IHNlbGYuX2NvbmRpdGlvbmFsX2ltcG9ydF9tb2R1bGUoJ19ibGFrZTInKQorICAgICAgICBpZiBfYmxha2UyOgorICAgICAgICAgICAgYWxnb3JpdGhtcy51cGRhdGUoeydibGFrZTJiJywgJ2JsYWtlMnMnfSkKKwogICAgICAgICBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0ID0ge30KICAgICAgICAgZm9yIGFsZ29yaXRobSBpbiBhbGdvcml0aG1zOgogICAgICAgICAgICAgc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFthbGdvcml0aG1dID0gc2V0KCkKQEAgLTY0LDEwICsxMDksMTAgQEAKICAgICAgICAgIyBvZiBoYXNobGliLm5ldyBnaXZlbiB0aGUgYWxnb3JpdGhtIG5hbWUuCiAgICAgICAgIGZvciBhbGdvcml0aG0sIGNvbnN0cnVjdG9ycyBpbiBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0Lml0ZW1zKCk6CiAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMuYWRkKGdldGF0dHIoaGFzaGxpYiwgYWxnb3JpdGhtKSkKLSAgICAgICAgICAgIGRlZiBfdGVzdF9hbGdvcml0aG1fdmlhX2hhc2hsaWJfbmV3KGRhdGE9Tm9uZSwgX2FsZz1hbGdvcml0aG0pOgorICAgICAgICAgICAgZGVmIF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcoZGF0YT1Ob25lLCBfYWxnPWFsZ29yaXRobSwgKiprd2FyZ3MpOgogICAgICAgICAgICAgICAgIGlmIGRhdGEgaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIGhhc2hsaWIubmV3KF9hbGcsIGRhdGEpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBoYXNobGliLm5ldyhfYWxnLCAqKmt3YXJncykKKyAgICAgICAgICAgICAgICByZXR1cm4gaGFzaGxpYi5uZXcoX2FsZywgZGF0YSwgKiprd2FyZ3MpCiAgICAgICAgICAgICBjb25zdHJ1Y3RvcnMuYWRkKF90ZXN0X2FsZ29yaXRobV92aWFfaGFzaGxpYl9uZXcpCiAKICAgICAgICAgX2hhc2hsaWIgPSBzZWxmLl9jb25kaXRpb25hbF9pbXBvcnRfbW9kdWxlKCdfaGFzaGxpYicpCkBAIC05OSw2ICsxNDQsMTggQEAKICAgICAgICAgaWYgX3NoYTUxMjoKICAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzODQnKQogICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTUxMicpCisgICAgICAgIGlmIF9ibGFrZTI6CisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3RvcignYmxha2UycycpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3RvcignYmxha2UyYicpCisKKyAgICAgICAgX3NoYTMgPSBzZWxmLl9jb25kaXRpb25hbF9pbXBvcnRfbW9kdWxlKCdfc2hhMycpCisgICAgICAgIGlmIF9zaGEzOgorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfMjI0JykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGEzXzI1NicpCisgICAgICAgICAgICBhZGRfYnVpbHRpbl9jb25zdHJ1Y3Rvcignc2hhM18zODQnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYTNfNTEyJykKKyAgICAgICAgICAgIGFkZF9idWlsdGluX2NvbnN0cnVjdG9yKCdzaGFrZV8xMjgnKQorICAgICAgICAgICAgYWRkX2J1aWx0aW5fY29uc3RydWN0b3IoJ3NoYWtlXzI1NicpCiAKICAgICAgICAgc3VwZXIoSGFzaExpYlRlc3RDYXNlLCBzZWxmKS5fX2luaXRfXygqYXJncywgKiprd2FyZ3MpCiAKQEAgLTExMSw3ICsxNjgsMTAgQEAKICAgICAgICAgYSA9IGFycmF5LmFycmF5KCJiIiwgcmFuZ2UoMTApKQogICAgICAgICBmb3IgY29ucyBpbiBzZWxmLmhhc2hfY29uc3RydWN0b3JzOgogICAgICAgICAgICAgYyA9IGNvbnMoYSkKLSAgICAgICAgICAgIGMuaGV4ZGlnZXN0KCkKKyAgICAgICAgICAgIGlmIGMubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBjLmhleGRpZ2VzdCgxNikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYy5oZXhkaWdlc3QoKQogCiAgICAgZGVmIHRlc3RfYWxnb3JpdGhtc19ndWFyYW50ZWVkKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhc2hsaWIuYWxnb3JpdGhtc19ndWFyYW50ZWVkLApAQCAtMTU1LDE0ICsyMTUsMjEgQEAKICAgICBkZWYgdGVzdF9oZXhkaWdlc3Qoc2VsZik6CiAgICAgICAgIGZvciBjb25zIGluIHNlbGYuaGFzaF9jb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBoID0gY29ucygpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kaWdlc3QoKSwgYnl0ZXMpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhleHN0cihoLmRpZ2VzdCgpKSwgaC5oZXhkaWdlc3QoKSkKKyAgICAgICAgICAgIGlmIGgubmFtZSBpbiBzZWxmLnNoYWtlczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaC5kaWdlc3QoMTYpLCBieXRlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhleHN0cihoLmRpZ2VzdCgxNikpLCBoLmhleGRpZ2VzdCgxNikpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShoLmRpZ2VzdCgpLCBieXRlcykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhleHN0cihoLmRpZ2VzdCgpKSwgaC5oZXhkaWdlc3QoKSkKIAogICAgIGRlZiB0ZXN0X25hbWVfYXR0cmlidXRlKHNlbGYpOgogICAgICAgICBmb3IgY29ucyBpbiBzZWxmLmhhc2hfY29uc3RydWN0b3JzOgogICAgICAgICAgICAgaCA9IGNvbnMoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGgubmFtZSwgc3RyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihoLm5hbWUsIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXMpCisgICAgICAgICAgICBpZiBoLm5hbWUgaW4gc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lczoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGgubmFtZSwgc2VsZi5zdXBwb3J0ZWRfaGFzaF9uYW1lcykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihoLm5hbWUsIHNlbGYuc3VwcG9ydGVkX2hhc2hfbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGgubmFtZSwgaGFzaGxpYi5uZXcoaC5uYW1lKS5uYW1lKQogCiAgICAgZGVmIHRlc3RfbGFyZ2VfdXBkYXRlKHNlbGYpOgpAQCAtMTc3LDQwICsyNDQsNDYgQEAKICAgICAgICAgICAgIG0xLnVwZGF0ZShiZWVzKQogICAgICAgICAgICAgbTEudXBkYXRlKGNlZXMpCiAgICAgICAgICAgICBtMS51cGRhdGUoZGVlcykKKyAgICAgICAgICAgIGlmIG0xLm5hbWUgaW4gc2VsZi5zaGFrZXM6CisgICAgICAgICAgICAgICAgYXJncyA9ICgxNiwpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGFyZ3MgPSAoKQogCiAgICAgICAgICAgICBtMiA9IGNvbnMoKQogICAgICAgICAgICAgbTIudXBkYXRlKGFhcyArIGJlZXMgKyBjZWVzICsgZGVlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCksIG0yLmRpZ2VzdCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKmFyZ3MpLCBtMi5kaWdlc3QoKmFyZ3MpKQogCiAgICAgICAgICAgICBtMyA9IGNvbnMoYWFzICsgYmVlcyArIGNlZXMgKyBkZWVzKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtMS5kaWdlc3QoKSwgbTMuZGlnZXN0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG0zLmRpZ2VzdCgqYXJncykpCiAKICAgICAgICAgICAgICMgdmVyaWZ5IGNvcHkoKSBkb2Vzbid0IHRvdWNoIG9yaWdpbmFsCiAgICAgICAgICAgICBtNCA9IGNvbnMoYWFzICsgYmVlcyArIGNlZXMpCi0gICAgICAgICAgICBtNF9kaWdlc3QgPSBtNC5kaWdlc3QoKQorICAgICAgICAgICAgbTRfZGlnZXN0ID0gbTQuZGlnZXN0KCphcmdzKQogICAgICAgICAgICAgbTRfY29weSA9IG00LmNvcHkoKQogICAgICAgICAgICAgbTRfY29weS51cGRhdGUoZGVlcykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTEuZGlnZXN0KCksIG00X2NvcHkuZGlnZXN0KCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG00LmRpZ2VzdCgpLCBtNF9kaWdlc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0xLmRpZ2VzdCgqYXJncyksIG00X2NvcHkuZGlnZXN0KCphcmdzKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobTQuZGlnZXN0KCphcmdzKSwgbTRfZGlnZXN0KQogCi0gICAgZGVmIGNoZWNrKHNlbGYsIG5hbWUsIGRhdGEsIGhleGRpZ2VzdCk6CisgICAgZGVmIGNoZWNrKHNlbGYsIG5hbWUsIGRhdGEsIGhleGRpZ2VzdCwgc2hha2U9RmFsc2UsICoqa3dhcmdzKToKKyAgICAgICAgbGVuZ3RoID0gbGVuKGhleGRpZ2VzdCkvLzIKICAgICAgICAgaGV4ZGlnZXN0ID0gaGV4ZGlnZXN0Lmxvd2VyKCkKICAgICAgICAgY29uc3RydWN0b3JzID0gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFtuYW1lXQogICAgICAgICAjIDIgaXMgZm9yIGhhc2hsaWIubmFtZSguLi4pIGFuZCBoYXNobGliLm5ldyhuYW1lLCAuLi4pCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKGxlbihjb25zdHJ1Y3RvcnMpLCAyKQogICAgICAgICBmb3IgaGFzaF9vYmplY3RfY29uc3RydWN0b3IgaW4gY29uc3RydWN0b3JzOgotICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKGRhdGEpCi0gICAgICAgICAgICBjb21wdXRlZCA9IG0uaGV4ZGlnZXN0KCkKKyAgICAgICAgICAgIG0gPSBoYXNoX29iamVjdF9jb25zdHJ1Y3RvcihkYXRhLCAqKmt3YXJncykKKyAgICAgICAgICAgIGNvbXB1dGVkID0gbS5oZXhkaWdlc3QoKSBpZiBub3Qgc2hha2UgZWxzZSBtLmhleGRpZ2VzdChsZW5ndGgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgICAgICBjb21wdXRlZCwgaGV4ZGlnZXN0LAogICAgICAgICAgICAgICAgICAgICAiSGFzaCBhbGdvcml0aG0gJXMgY29uc3RydWN0ZWQgdXNpbmcgJXMgcmV0dXJuZWQgaGV4ZGlnZXN0IgogICAgICAgICAgICAgICAgICAgICAiICVyIGZvciAlZCBieXRlIGlucHV0IGRhdGEgdGhhdCBzaG91bGQgaGF2ZSBoYXNoZWQgdG8gJXIuIgogICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciwKICAgICAgICAgICAgICAgICAgICAgICAgY29tcHV0ZWQsIGxlbihkYXRhKSwgaGV4ZGlnZXN0KSkKLSAgICAgICAgICAgIGNvbXB1dGVkID0gbS5kaWdlc3QoKQorICAgICAgICAgICAgY29tcHV0ZWQgPSBtLmRpZ2VzdCgpIGlmIG5vdCBzaGFrZSBlbHNlIG0uZGlnZXN0KGxlbmd0aCkKICAgICAgICAgICAgIGRpZ2VzdCA9IGJ5dGVzLmZyb21oZXgoaGV4ZGlnZXN0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wdXRlZCwgZGlnZXN0KQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlnZXN0KSwgbS5kaWdlc3Rfc2l6ZSkKKyAgICAgICAgICAgIGlmIG5vdCBzaGFrZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWdlc3QpLCBtLmRpZ2VzdF9zaXplKQogCiAgICAgZGVmIGNoZWNrX25vX3VuaWNvZGUoc2VsZiwgYWxnb3JpdGhtX25hbWUpOgogICAgICAgICAjIFVuaWNvZGUgb2JqZWN0cyBhcmUgbm90IGFsbG93ZWQgYXMgaW5wdXQuCkBAIC0yMjYsMTMgKzI5OSwzNSBAQAogICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTM4NCcpCiAgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhNTEyJykKIAotICAgIGRlZiBjaGVja19ibG9ja3NpemVfbmFtZShzZWxmLCBuYW1lLCBibG9ja19zaXplPTAsIGRpZ2VzdF9zaXplPTApOgorICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ub191bmljb2RlX2JsYWtlMihzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdibGFrZTJiJykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdibGFrZTJzJykKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3Rfbm9fdW5pY29kZV9zaGEzKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfMjI0JykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGEzXzI1NicpCisgICAgICAgIHNlbGYuY2hlY2tfbm9fdW5pY29kZSgnc2hhM18zODQnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYTNfNTEyJykKKyAgICAgICAgc2VsZi5jaGVja19ub191bmljb2RlKCdzaGFrZV8xMjgnKQorICAgICAgICBzZWxmLmNoZWNrX25vX3VuaWNvZGUoJ3NoYWtlXzI1NicpCisKKyAgICBkZWYgY2hlY2tfYmxvY2tzaXplX25hbWUoc2VsZiwgbmFtZSwgYmxvY2tfc2l6ZT0wLCBkaWdlc3Rfc2l6ZT0wLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RfbGVuZ3RoPU5vbmUpOgogICAgICAgICBjb25zdHJ1Y3RvcnMgPSBzZWxmLmNvbnN0cnVjdG9yc190b190ZXN0W25hbWVdCiAgICAgICAgIGZvciBoYXNoX29iamVjdF9jb25zdHJ1Y3RvciBpbiBjb25zdHJ1Y3RvcnM6CiAgICAgICAgICAgICBtID0gaGFzaF9vYmplY3RfY29uc3RydWN0b3IoKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmJsb2NrX3NpemUsIGJsb2NrX3NpemUpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZGlnZXN0X3NpemUsIGRpZ2VzdF9zaXplKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5kaWdlc3QoKSksIGRpZ2VzdF9zaXplKQorICAgICAgICAgICAgaWYgZGlnZXN0X2xlbmd0aDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihtLmRpZ2VzdChkaWdlc3RfbGVuZ3RoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWdlc3RfbGVuZ3RoKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uaGV4ZGlnZXN0KGRpZ2VzdF9sZW5ndGgpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIqZGlnZXN0X2xlbmd0aCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obS5kaWdlc3QoKSksIGRpZ2VzdF9zaXplKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKG0uaGV4ZGlnZXN0KCkpLCAyKmRpZ2VzdF9zaXplKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLm5hbWUsIG5hbWUpCiAgICAgICAgICAgICAjIHNwbGl0IGZvciBzaGEzXzUxMiAvIF9zaGEzLnNoYTMgb2JqZWN0CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUuc3BsaXQoIl8iKVswXSwgcmVwcihtKSkKQEAgLTI0NSw2ICszNDAsMzggQEAKICAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhMzg0JywgMTI4LCA0OCkKICAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhNTEyJywgMTI4LCA2NCkKIAorICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfYmxvY2tzaXplX25hbWVfc2hhMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM18yMjQnLCAxNDQsIDI4KQorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdzaGEzXzI1NicsIDEzNiwgMzIpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYTNfMzg0JywgMTA0LCA0OCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnc2hhM181MTInLCA3MiwgNjQpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYWtlXzEyOCcsIDE2OCwgMCwgMzIpCisgICAgICAgIHNlbGYuY2hlY2tfYmxvY2tzaXplX25hbWUoJ3NoYWtlXzI1NicsIDEzNiwgMCwgNjQpCisKKyAgICBkZWYgY2hlY2tfc2hhMyhzZWxmLCBuYW1lLCBjYXBhY2l0eSwgcmF0ZSwgc3VmZml4KToKKyAgICAgICAgY29uc3RydWN0b3JzID0gc2VsZi5jb25zdHJ1Y3RvcnNfdG9fdGVzdFtuYW1lXQorICAgICAgICBmb3IgaGFzaF9vYmplY3RfY29uc3RydWN0b3IgaW4gY29uc3RydWN0b3JzOgorICAgICAgICAgICAgbSA9IGhhc2hfb2JqZWN0X2NvbnN0cnVjdG9yKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2FwYWNpdHkgKyByYXRlLCAxNjAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9jYXBhY2l0eV9iaXRzLCBjYXBhY2l0eSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5fcmF0ZV9iaXRzLCByYXRlKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLl9zdWZmaXgsIHN1ZmZpeCkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfZXh0cmFfc2hhMyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGEzXzIyNCcsIDQ0OCwgMTE1MiwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGEzXzI1NicsIDUxMiwgMTA4OCwgYidceDA2JykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGEzXzM4NCcsIDc2OCwgODMyLCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYTNfNTEyJywgMTAyNCwgNTc2LCBiJ1x4MDYnKQorICAgICAgICBzZWxmLmNoZWNrX3NoYTMoJ3NoYWtlXzEyOCcsIDI1NiwgMTM0NCwgYidceDFmJykKKyAgICAgICAgc2VsZi5jaGVja19zaGEzKCdzaGFrZV8yNTYnLCA1MTIsIDEwODgsIGInXHgxZicpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfYmxvY2tzaXplX25hbWVfYmxha2UyKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrX2Jsb2Nrc2l6ZV9uYW1lKCdibGFrZTJiJywgMTI4LCA2NCkKKyAgICAgICAgc2VsZi5jaGVja19ibG9ja3NpemVfbmFtZSgnYmxha2UycycsIDY0LCAzMikKKwogICAgIGRlZiB0ZXN0X2Nhc2VfbWQ1XzAoc2VsZik6CiAgICAgICAgIHNlbGYuY2hlY2soJ21kNScsIGInJywgJ2Q0MWQ4Y2Q5OGYwMGIyMDRlOTgwMDk5OGVjZjg0MjdlJykKIApAQCAtMzczLDYgKzUwMCwyMjEgQEAKICAgICAgICAgICAiZTcxODQ4M2QwY2U3Njk2NDRlMmU0MmM3YmMxNWI0NjM4ZTFmOThiMTNiMjA0NDI4NTYzMmE4MDNhZmE5NzNlYiIrCiAgICAgICAgICAgImRlMGZmMjQ0ODc3ZWE2MGE0Y2IwNDMyY2U1NzdjMzFiZWIwMDljNWMyYzQ5YWEyZTRlYWRiMjE3YWQ4Y2MwOWIiKQogCisgICAgZGVmIGNoZWNrX2JsYWtlMihzZWxmLCBjb25zdHJ1Y3Rvciwgc2FsdF9zaXplLCBwZXJzb25fc2l6ZSwga2V5X3NpemUsCisgICAgICAgICAgICAgICAgICAgICBkaWdlc3Rfc2l6ZSwgbWF4X29mZnNldCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IuU0FMVF9TSVpFLCBzYWx0X3NpemUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKHNhbHRfc2l6ZSArIDEpOgorICAgICAgICAgICAgY29uc3RydWN0b3Ioc2FsdD1iJ2EnICogaSkKKyAgICAgICAgc2FsdCA9IGInYScgKiAoc2FsdF9zaXplICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIHNhbHQ9c2FsdCkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yLlBFUlNPTl9TSVpFLCBwZXJzb25fc2l6ZSkKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UocGVyc29uX3NpemUrMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihwZXJzb249YidhJyAqIGkpCisgICAgICAgIHBlcnNvbiA9IGInYScgKiAocGVyc29uX3NpemUgKyAxKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgcGVyc29uPXBlcnNvbikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yLk1BWF9ESUdFU1RfU0laRSwgZGlnZXN0X3NpemUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIGRpZ2VzdF9zaXplICsgMSk6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihkaWdlc3Rfc2l6ZT1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGlnZXN0X3NpemU9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkaWdlc3Rfc2l6ZT0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGlnZXN0X3NpemU9ZGlnZXN0X3NpemUrMSkKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnN0cnVjdG9yLk1BWF9LRVlfU0laRSwga2V5X3NpemUpCisgICAgICAgIGZvciBpIGluIHJhbmdlKGtleV9zaXplKzEpOgorICAgICAgICAgICAgY29uc3RydWN0b3Ioa2V5PWInYScgKiBpKQorICAgICAgICBrZXkgPSBiJ2EnICogKGtleV9zaXplICsgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGtleT1rZXkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uc3RydWN0b3IoKS5oZXhkaWdlc3QoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHJ1Y3RvcihrZXk9YicnKS5oZXhkaWdlc3QoKSkKKworICAgICAgICBmb3IgaSBpbiByYW5nZSgwLCAyNTYpOgorICAgICAgICAgICAgY29uc3RydWN0b3IoZmFub3V0PWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBmYW5vdXQ9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBmYW5vdXQ9MjU2KQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3RvcihkZXB0aD1pKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGVwdGg9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBkZXB0aD0wKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3RvciwgZGVwdGg9MjU2KQorCisgICAgICAgIGZvciBpIGluIHJhbmdlKDAsIDI1Nik6CisgICAgICAgICAgICBjb25zdHJ1Y3Rvcihub2RlX2RlcHRoPWkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBub2RlX2RlcHRoPS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9kZXB0aD0yNTYpCisKKyAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMCwgZGlnZXN0X3NpemUgKyAxKToKKyAgICAgICAgICAgIGNvbnN0cnVjdG9yKGlubmVyX3NpemU9aSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgY29uc3RydWN0b3IsIGlubmVyX3NpemU9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGNvbnN0cnVjdG9yLCBpbm5lcl9zaXplPWRpZ2VzdF9zaXplKzEpCisKKyAgICAgICAgY29uc3RydWN0b3IobGVhZl9zaXplPTApCisgICAgICAgIGNvbnN0cnVjdG9yKGxlYWZfc2l6ZT0oMTw8MzIpLTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBsZWFmX3NpemU9LTEpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIGNvbnN0cnVjdG9yLCBsZWFmX3NpemU9MTw8MzIpCisKKyAgICAgICAgY29uc3RydWN0b3Iobm9kZV9vZmZzZXQ9MCkKKyAgICAgICAgY29uc3RydWN0b3Iobm9kZV9vZmZzZXQ9bWF4X29mZnNldCkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgY29uc3RydWN0b3IsIG5vZGVfb2Zmc2V0PS0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBjb25zdHJ1Y3Rvciwgbm9kZV9vZmZzZXQ9bWF4X29mZnNldCsxKQorCisgICAgICAgIGNvbnN0cnVjdG9yKAorICAgICAgICAgICAgc3RyaW5nPWInJywKKyAgICAgICAgICAgIGtleT1iJycsCisgICAgICAgICAgICBzYWx0PWInJywKKyAgICAgICAgICAgIHBlcnNvbj1iJycsCisgICAgICAgICAgICBkaWdlc3Rfc2l6ZT0xNywKKyAgICAgICAgICAgIGZhbm91dD0xLAorICAgICAgICAgICAgZGVwdGg9MSwKKyAgICAgICAgICAgIGxlYWZfc2l6ZT0yNTYsCisgICAgICAgICAgICBub2RlX29mZnNldD01MTIsCisgICAgICAgICAgICBub2RlX2RlcHRoPTEsCisgICAgICAgICAgICBpbm5lcl9zaXplPTcsCisgICAgICAgICAgICBsYXN0X25vZGU9VHJ1ZQorICAgICAgICApCisKKyAgICBkZWYgYmxha2UyX3JmYzc2OTMoc2VsZiwgY29uc3RydWN0b3IsIG1kX2xlbiwgaW5fbGVuKToKKyAgICAgICAgZGVmIHNlbGZ0ZXN0X3NlcShsZW5ndGgsIHNlZWQpOgorICAgICAgICAgICAgbWFzayA9ICgxPDwzMiktMQorICAgICAgICAgICAgYSA9ICgweERFQUQ0QkFEICogc2VlZCkgJiBtYXNrCisgICAgICAgICAgICBiID0gMQorICAgICAgICAgICAgb3V0ID0gYnl0ZWFycmF5KGxlbmd0aCkKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbmd0aCk6CisgICAgICAgICAgICAgICAgdCA9IChhICsgYikgJiBtYXNrCisgICAgICAgICAgICAgICAgYSwgYiA9IGIsIHQKKyAgICAgICAgICAgICAgICBvdXRbaV0gPSAodCA+PiAyNCkgJiAweEZGCisgICAgICAgICAgICByZXR1cm4gb3V0CisgICAgICAgIG91dGVyID0gY29uc3RydWN0b3IoZGlnZXN0X3NpemU9MzIpCisgICAgICAgIGZvciBvdXRsZW4gaW4gbWRfbGVuOgorICAgICAgICAgICAgZm9yIGlubGVuIGluIGluX2xlbjoKKyAgICAgICAgICAgICAgICBpbmRhdGEgPSBzZWxmdGVzdF9zZXEoaW5sZW4sIGlubGVuKQorICAgICAgICAgICAgICAgIGtleSA9IHNlbGZ0ZXN0X3NlcShvdXRsZW4sIG91dGxlbikKKyAgICAgICAgICAgICAgICB1bmtleWVkID0gY29uc3RydWN0b3IoaW5kYXRhLCBkaWdlc3Rfc2l6ZT1vdXRsZW4pCisgICAgICAgICAgICAgICAgb3V0ZXIudXBkYXRlKHVua2V5ZWQuZGlnZXN0KCkpCisgICAgICAgICAgICAgICAga2V5ZWQgPSBjb25zdHJ1Y3RvcihpbmRhdGEsIGtleT1rZXksIGRpZ2VzdF9zaXplPW91dGxlbikKKyAgICAgICAgICAgICAgICBvdXRlci51cGRhdGUoa2V5ZWQuZGlnZXN0KCkpCisgICAgICAgIHJldHVybiBvdXRlci5oZXhkaWdlc3QoKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMmIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxha2UyKGhhc2hsaWIuYmxha2UyYiwgMTYsIDE2LCA2NCwgNjQsICgxPDw2NCktMSkKKyAgICAgICAgYjJiX21kX2xlbiA9IFsyMCwgMzIsIDQ4LCA2NF0KKyAgICAgICAgYjJiX2luX2xlbiA9IFswLCAzLCAxMjgsIDEyOSwgMjU1LCAxMDI0XQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc2VsZi5ibGFrZTJfcmZjNzY5MyhoYXNobGliLmJsYWtlMmIsIGIyYl9tZF9sZW4sIGIyYl9pbl9sZW4pLAorICAgICAgICAgICAgImMyM2E3ODAwZDk4MTIzYmQxMGY1MDZjNjFlMjlkYTU2MDNkNzYzYjhiYmFkMmU3MzdmNWU3NjVhN2JjY2Q0NzUiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2UyYl8wKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJiJywgYiIiLAorICAgICAgICAgICI3ODZhMDJmNzQyMDE1OTAzYzZjNmZkODUyNTUyZDI3MjkxMmY0NzQwZTE1ODQ3NjE4YTg2ZTIxN2Y3MWY1NDE5IisKKyAgICAgICAgICAiZDI1ZTEwMzFhZmVlNTg1MzEzODk2NDQ0OTM0ZWIwNGI5MDNhNjg1YjE0NDhiNzU1ZDU2ZjcwMWFmZTliZTJjZSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJiXzEoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBiImFiYyIsCisgICAgICAgICAgImJhODBhNTNmOTgxYzRkMGQ2YTI3OTdiNjlmMTJmNmU5NGMyMTJmMTQ2ODVhYzRiNzRiMTJiYjZmZGJmZmEyZDEiKworICAgICAgICAgICI3ZDg3YzUzOTJhYWI3OTJkYzI1MmQ1ZGU0NTMzY2M5NTE4ZDM4YWE4ZGJmMTkyNWFiOTIzODZlZGQ0MDA5OTIzIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJiX3ZlY3RvcnMoc2VsZik6CisgICAgICAgIGZvciBtc2csIGtleSwgbWQgaW4gcmVhZF92ZWN0b3JzKCdibGFrZTJiJyk6CisgICAgICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KGtleSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMmInLCBtc2csIG1kLCBrZXk9a2V5KQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2JsYWtlMnMoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfYmxha2UyKGhhc2hsaWIuYmxha2UycywgOCwgOCwgMzIsIDMyLCAoMTw8NDgpLTEpCisgICAgICAgIGIyc19tZF9sZW4gPSBbMTYsIDIwLCAyOCwgMzJdCisgICAgICAgIGIyc19pbl9sZW4gPSBbMCwgMywgNjQsIDY1LCAyNTUsIDEwMjRdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzZWxmLmJsYWtlMl9yZmM3NjkzKGhhc2hsaWIuYmxha2UycywgYjJzX21kX2xlbiwgYjJzX2luX2xlbiksCisgICAgICAgICAgICAiNmE0MTFmMDhjZTI1YWRjZGZiMDJhYmE2NDE0NTFjZWM1M2M1OThiMjRmNGZjNzg3ZmJkYzg4Nzk3ZjRjMWRmZSIpCisKKyAgICBAcmVxdWlyZXNfYmxha2UyCisgICAgZGVmIHRlc3RfY2FzZV9ibGFrZTJzXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBiIiIsCisgICAgICAgICAgIjY5MjE3YTMwNzk5MDgwOTRlMTExMjFkMDQyMzU0YTdjMWY1NWI2NDgyY2ExYTUxZTFiMjUwZGZkMWVkMGVlZjkiKQorCisgICAgQHJlcXVpcmVzX2JsYWtlMgorICAgIGRlZiB0ZXN0X2Nhc2VfYmxha2Uyc18xKHNlbGYpOgorICAgICAgICBzZWxmLmNoZWNrKCdibGFrZTJzJywgYiJhYmMiLAorICAgICAgICAgICI1MDhjNWU4YzMyN2MxNGUyZTFhNzJiYTM0ZWViNDUyZjM3NDU4YjIwOWVkNjNhMjk0ZDk5OWI0Yzg2Njc1OTgyIikKKworICAgIEByZXF1aXJlc19ibGFrZTIKKyAgICBkZWYgdGVzdF9ibGFrZTJzX3ZlY3RvcnMoc2VsZik6CisgICAgICAgIGZvciBtc2csIGtleSwgbWQgaW4gcmVhZF92ZWN0b3JzKCdibGFrZTJzJyk6CisgICAgICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KGtleSkKKyAgICAgICAgICAgIHNlbGYuY2hlY2soJ2JsYWtlMnMnLCBtc2csIG1kLCBrZXk9a2V5KQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjI0XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMjI0JywgYiIiLAorICAgICAgICAgICI2YjRlMDM0MjM2NjdkYmI3M2I2ZTE1NDU0ZjBlYjFhYmQ0NTk3ZjlhMWIwNzhlM2Y1YjVhNmJjNyIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yMjRfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfMjI0Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzIyNCcsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM18yNTZfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yNTYnLCBiIiIsCisgICAgICAgICAgImE3ZmZjNmY4YmYxZWQ3NjY1MWMxNDc1NmEwNjFkNjYyZjU4MGZmNGRlNDNiNDlmYTgyZDgwYTRiODBmODQzNGEiKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMjU2X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzI1NicpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM18yNTYnLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMzg0XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfMzg0JywgYiIiLAorICAgICAgICAgICIwYzYzYTc1Yjg0NWU0ZjdkMDExMDdkODUyZTRjMjQ4NWM1MWE1MGFhYWE5NGZjNjE5OTVlNzFiYmVlOTgzYTJhIisKKyAgICAgICAgICAiYzM3MTM4MzEyNjRhZGI0N2ZiNmJkMWUwNThkNWYwMDQiKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfMzg0X3ZlY3RvcihzZWxmKToKKyAgICAgICAgZm9yIG1zZywgbWQgaW4gcmVhZF92ZWN0b3JzKCdzaGEzXzM4NCcpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hhM18zODQnLCBtc2csIG1kKQorCisgICAgQHJlcXVpcmVzX3NoYTMKKyAgICBkZWYgdGVzdF9jYXNlX3NoYTNfNTEyXzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYTNfNTEyJywgYiIiLAorICAgICAgICAgICJhNjlmNzNjY2EyM2E5YWM1YzhiNTY3ZGMxODVhNzU2ZTk3Yzk4MjE2NGZlMjU4NTllMGQxZGNjMTQ3NWM4MGE2IisKKyAgICAgICAgICAiMTViMjEyM2FmMWY1Zjk0YzExZTNlOTQwMmMzYWM1NThmNTAwMTk5ZDk1YjZkM2UzMDE3NTg1ODYyODFkY2QyNiIpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hhM181MTJfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYTNfNTEyJyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGEzXzUxMicsIG1zZywgbWQpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2VfMTI4XzAoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2soJ3NoYWtlXzEyOCcsIGIiIiwKKyAgICAgICAgICAiN2Y5YzJiYTRlODhmODI3ZDYxNjA0NTUwNzYwNTg1M2VkNzNiODA5M2Y2ZWZiYzg4ZWIxYTZlYWNmYTY2ZWYyNiIsCisgICAgICAgICAgVHJ1ZSkKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgYiIiLCAiN2Y5YyIsIFRydWUpCisKKyAgICBAcmVxdWlyZXNfc2hhMworICAgIGRlZiB0ZXN0X2Nhc2Vfc2hha2UxMjhfdmVjdG9yKHNlbGYpOgorICAgICAgICBmb3IgbXNnLCBtZCBpbiByZWFkX3ZlY3RvcnMoJ3NoYWtlXzEyOCcpOgorICAgICAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMTI4JywgbXNnLCBtZCwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZV8yNTZfMChzZWxmKToKKyAgICAgICAgc2VsZi5jaGVjaygnc2hha2VfMjU2JywgYiIiLAorICAgICAgICAgICI0NmI5ZGQyYjBiYTg4ZDEzMjMzYjNmZWI3NDNlZWIyNDNmY2Q1MmVhNjJiODFiODJiNTBjMjc2NDZlZDU3NjJmIiwKKyAgICAgICAgICBUcnVlKQorICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBiIiIsICI0NmI5IiwgVHJ1ZSkKKworICAgIEByZXF1aXJlc19zaGEzCisgICAgZGVmIHRlc3RfY2FzZV9zaGFrZTI1Nl92ZWN0b3Ioc2VsZik6CisgICAgICAgIGZvciBtc2csIG1kIGluIHJlYWRfdmVjdG9ycygnc2hha2VfMjU2Jyk6CisgICAgICAgICAgICBzZWxmLmNoZWNrKCdzaGFrZV8yNTYnLCBtc2csIG1kLCBUcnVlKQorCiAgICAgZGVmIHRlc3RfZ2lsKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoaW5ncyB3b3JrIGZpbmUgd2l0aCBhbiBpbnB1dCBsYXJnZXIgdGhhbiB0aGUgc2l6ZSByZXF1aXJlZAogICAgICAgICAjIGZvciBtdWx0aXRocmVhZGVkIG9wZXJhdGlvbiAod2hpY2ggaXMgaGFyZHdpcmVkIHRvIDIwNDgpLgpAQCAtNDQ3LDYgKzc4OSwxMiBAQAogICAgICAgICAoYidwYXNzXDB3b3JkJywgYidzYVwwbHQnLCA0MDk2LCAxNiksCiAgICAgXQogCisgICAgc2NyeXB0X3Rlc3RfdmVjdG9ycyA9IFsKKyAgICAgICAgKGInJywgYicnLCAxNiwgMSwgMSwgdW5oZXhsaWZ5KCc3N2Q2NTc2MjM4NjU3YjIwM2IxOWNhNDJjMThhMDQ5N2YxNmI0ODQ0ZTMwNzRhZThkZmRmZmEzZmVkZTIxNDQyZmNkMDA2OWRlZDA5NDhmODMyNmE3NTNhMGZjODFmMTdlOGQzZTBmYjJlMGQzNjI4Y2YzNWUyMGMzOGQxODkwNicpKSwKKyAgICAgICAgKGIncGFzc3dvcmQnLCBiJ05hQ2wnLCAxMDI0LCA4LCAxNiwgdW5oZXhsaWZ5KCdmZGJhYmUxYzlkMzQ3MjAwNzg1NmU3MTkwZDAxZTlmZTdjNmFkN2NiYzgyMzc4MzBlNzczNzY2MzRiMzczMTYyMmVhZjMwZDkyZTIyYTM4ODZmZjEwOTI3OWQ5ODMwZGFjNzI3YWZiOTRhODNlZTZkODM2MGNiZGZhMmNjMDY0MCcpKSwKKyAgICAgICAgKGIncGxlYXNlbGV0bWVpbicsIGInU29kaXVtQ2hsb3JpZGUnLCAxNjM4NCwgOCwgMSwgdW5oZXhsaWZ5KCc3MDIzYmRjYjNhZmQ3MzQ4NDYxYzA2Y2Q4MWZkMzhlYmZkYThmYmJhOTA0ZjhlM2VhOWI1NDNmNjU0NWRhMWYyZDU0MzI5NTU2MTNmMGZjZjYyZDQ5NzA1MjQyYTlhZjllNjFlODVkYzBkNjUxZTQwZGZjZjAxN2I0NTU3NTg4NycpKSwKKyAgIF0KKwogICAgIHBia2RmMl9yZXN1bHRzID0gewogICAgICAgICAic2hhMSI6IFsKICAgICAgICAgICAgICMgb2ZmaWNpYWwgdGVzdCB2ZWN0b3JzIGZyb20gUkZDIDYwNzAKQEAgLTUyNiw1ICs4NzQsNDUgQEAKICAgICAgICAgc2VsZi5fdGVzdF9wYmtkZjJfaG1hYyhjX2hhc2hsaWIucGJrZGYyX2htYWMpCiAKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoY19oYXNobGliLCAnc2NyeXB0JyksCisgICAgICAgICAgICAgICAgICAgICAnICAgdGVzdCByZXF1aXJlcyBPcGVuU1NMID4gMS4xJykKKyAgICBkZWYgdGVzdF9zY3J5cHQoc2VsZik6CisgICAgICAgIGZvciBwYXNzd29yZCwgc2FsdCwgbiwgciwgcCwgZXhwZWN0ZWQgaW4gc2VsZi5zY3J5cHRfdGVzdF92ZWN0b3JzOgorICAgICAgICAgICAgcmVzdWx0ID0gaGFzaGxpYi5zY3J5cHQocGFzc3dvcmQsIHNhbHQ9c2FsdCwgbj1uLCByPXIsIHA9cCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0LCBleHBlY3RlZCkKKworICAgICAgICAjIHRoaXMgdmFsdWVzIHNob3VsZCB3b3JrCisgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEpCisgICAgICAgICMgcGFzc3dvcmQgYW5kIHNhbHQgbXVzdCBiZSBieXRlcy1saWtlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KCdwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9J3NhbHQnLCBuPTIsIHI9OCwgcD0xKQorICAgICAgICAjIHJlcXVpcmUga2V5d29yZCBhcmdzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgYidzYWx0JykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIDIsIDgsIDEsIHNhbHQ9YidzYWx0JykKKyAgICAgICAgZm9yIG4gaW4gWy0xLCAwLCAxLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49biwgcj04LCBwPTEpCisgICAgICAgIGZvciByIGluIFstMSwgMCwgTm9uZV06CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKChWYWx1ZUVycm9yLCBPdmVyZmxvd0Vycm9yLCBUeXBlRXJyb3IpKToKKyAgICAgICAgICAgICAgICBoYXNobGliLnNjcnlwdChiJ3Bhc3N3b3JkJywgc2FsdD1iJ3NhbHQnLCBuPTIsIHI9ciwgcD0xKQorICAgICAgICBmb3IgcCBpbiBbLTEsIDAsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9cCkKKyAgICAgICAgZm9yIG1heG1lbSBpbiBbLTEsIE5vbmVdOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcygoVmFsdWVFcnJvciwgT3ZlcmZsb3dFcnJvciwgVHlwZUVycm9yKSk6CisgICAgICAgICAgICAgICAgaGFzaGxpYi5zY3J5cHQoYidwYXNzd29yZCcsIHNhbHQ9YidzYWx0Jywgbj0yLCByPTgsIHA9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhtZW09bWF4bWVtKQorICAgICAgICBmb3IgZGtsZW4gaW4gWy0xLCBOb25lXToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoKFZhbHVlRXJyb3IsIE92ZXJmbG93RXJyb3IsIFR5cGVFcnJvcikpOgorICAgICAgICAgICAgICAgIGhhc2hsaWIuc2NyeXB0KGIncGFzc3dvcmQnLCBzYWx0PWInc2FsdCcsIG49Miwgcj04LCBwPTEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGtsZW49ZGtsZW4pCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkgYi9MaWIvdGVzdC90ZXN0X2hlYXBxLnB5CmluZGV4IGI3ZTgyNTkuLjJmOGM2NDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaGVhcHEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9oZWFwcS5weQpAQCAtMSw2ICsxLDUgQEAKICIiIlVuaXR0ZXN0cyBmb3IgaGVhcHEuIiIiCiAKLWltcG9ydCBzeXMKIGltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2htYWMucHkgYi9MaWIvdGVzdC90ZXN0X2htYWMucHkKaW5kZXggOTg4MjZiNS4uMDY3ZTEzZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9obWFjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaG1hYy5weQpAQCAtMyw3ICszLDYgQEAKIGltcG9ydCBoYXNobGliCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogZGVmIGlnbm9yZV93YXJuaW5nKGZ1bmMpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9odG1scGFyc2VyLnB5CmluZGV4IDExNDIwYjIuLjMyNmUzNDIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaHRtbHBhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0bWxwYXJzZXIucHkKQEAgLTMsNyArMyw2IEBACiBpbXBvcnQgaHRtbC5wYXJzZXIKIGltcG9ydCBwcHJpbnQKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogY2xhc3MgRXZlbnRDb2xsZWN0b3IoaHRtbC5wYXJzZXIuSFRNTFBhcnNlcik6CkBAIC03MDIsNyArNzAxLDcgQEAKIAogICAgIGRlZiB0ZXN0X2F0dHJfZnVua3lfbmFtZXMyKHNlbGYpOgogICAgICAgICBzZWxmLl9ydW5fY2hlY2soCi0gICAgICAgICAgICAiPGEgJD48YiAkPSU+PGMgXD0vPiIsCisgICAgICAgICAgICByIjxhICQ+PGIgJD0lPjxjIFw9Lz4iLAogICAgICAgICAgICAgWygic3RhcnR0YWciLCAiYSIsIFsoIiQiLCBOb25lKV0pLAogICAgICAgICAgICAgICgic3RhcnR0YWciLCAiYiIsIFsoIiQiLCAiJSIpXSksCiAgICAgICAgICAgICAgKCJzdGFydHRhZyIsICJjIiwgWygiXFwiLCAiLyIpXSldKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cF9jb29raWVqYXIucHkKaW5kZXggNDljMDFhZS4uNmZlZTRkZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9odHRwX2Nvb2tpZWphci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2h0dHBfY29va2llamFyLnB5CkBAIC0xMDUxLDcgKzEwNTEsNyBAQAogICAgICAgICB1cmwgPSAiaHR0cDovL2Zvby5iYXIuY29tLyIKICAgICAgICAgaW50ZXJhY3RfMjk2NShjLCB1cmwsICJzcGFtPWVnZ3M7IFZlcnNpb249MTsgUG9ydCIpCiAgICAgICAgIGggPSBpbnRlcmFjdF8yOTY1KGMsIHVybCkKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleChoLCAiXCRQb3J0KFtePV18JCkiLAorICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGgsIHIiXCRQb3J0KFtePV18JCkiLAogICAgICAgICAgICAgICAgICAgICAgICAgICJwb3J0IHdpdGggbm8gdmFsdWUgbm90IHJldHVybmVkIHdpdGggbm8gdmFsdWUiKQogCiAgICAgICAgIGMgPSBDb29raWVKYXIocG9sKQpAQCAtMTM5Niw5ICsxMzk2LDkgQEAKIAogICAgICAgICBzZWxmLmFzc2VydFJlZ2V4KGNvb2tpZSwgcideXCRWZXJzaW9uPSI/MSI/OycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ1BhcnRfTnVtYmVyPSI/Um9ja2V0X0xhdW5jaGVyXzAwMDEiPzsnCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1xzKlwkUGF0aD0iXC9hY21lIicpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByJ1xzKlwkUGF0aD0iXC9hY21lIicpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoY29va2llLCByJ0N1c3RvbWVyPSI/V0lMRV9FX0NPWU9URSI/OycKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnXHMqXCRQYXRoPSJcL2FjbWUiJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInXHMqXCRQYXRoPSJcL2FjbWUiJykKIAogICAgICAgICAjCiAgICAgICAgICMgICA3LiAgVXNlciBBZ2VudCAtPiBTZXJ2ZXIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfaHR0cGxpYi5weQppbmRleCA2MWVkNmJiLi42OGY2OTQ2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9odHRwbGliLnB5CkBAIC0zNDQsNiArMzQ0LDEzNCBAQAogICAgICAgICAgICAgICAgICAgICBjb25uLnB1dGhlYWRlcihuYW1lLCB2YWx1ZSkKIAogCitjbGFzcyBUcmFuc2ZlckVuY29kaW5nVGVzdChUZXN0Q2FzZSk6CisgICAgZXhwZWN0ZWRfYm9keSA9IGIiSXQncyBqdXN0IGEgZmxlc2ggd291bmQiCisKKyAgICBkZWYgdGVzdF9lbmRoZWFkZXJzX2NodW5rZWQoc2VsZik6CisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucHV0cmVxdWVzdCgnUE9TVCcsICcvJykKKyAgICAgICAgY29ubi5lbmRoZWFkZXJzKHNlbGYuX21ha2VfYm9keSgpLCBlbmNvZGVfY2h1bmtlZD1UcnVlKQorCisgICAgICAgIF8sIF8sIGJvZHkgPSBzZWxmLl9wYXJzZV9yZXF1ZXN0KGNvbm4uc29jay5kYXRhKQorICAgICAgICBib2R5ID0gc2VsZi5fcGFyc2VfY2h1bmtlZChib2R5KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgIGRlZiB0ZXN0X2V4cGxpY2l0X2hlYWRlcnMoc2VsZik6CisgICAgICAgICMgZXhwbGljaXQgY2h1bmtlZAorICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgIGNvbm4uc29jayA9IEZha2VTb2NrZXQoYicnKQorICAgICAgICAjIHRoaXMgc2hvdWxkbid0IGFjdHVhbGx5IGJlIGF1dG9tYXRpY2FsbHkgY2h1bmstZW5jb2RlZCBiZWNhdXNlIHRoZQorICAgICAgICAjIGNhbGxpbmcgY29kZSBoYXMgZXhwbGljaXRseSBzdGF0ZWQgdGhhdCBpdCdzIHRha2luZyBjYXJlIG9mIGl0CisgICAgICAgIGNvbm4ucmVxdWVzdCgKKyAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLl9tYWtlX2JvZHkoKSwgeydUcmFuc2Zlci1FbmNvZGluZyc6ICdjaHVua2VkJ30pCisKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzLmtleXMoKV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJvZHksIHNlbGYuZXhwZWN0ZWRfYm9keSkKKworICAgICAgICAjIGV4cGxpY2l0IGNodW5rZWQsIHN0cmluZyBib2R5CisgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgY29ubi5zb2NrID0gRmFrZVNvY2tldChiJycpCisgICAgICAgIGNvbm4ucmVxdWVzdCgKKyAgICAgICAgICAgICdQT1NUJywgJy8nLCBzZWxmLmV4cGVjdGVkX2JvZHkuZGVjb2RlKCdsYXRpbi0xJyksCisgICAgICAgICAgICB7J1RyYW5zZmVyLUVuY29kaW5nJzogJ2NodW5rZWQnfSkKKworICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnMua2V5cygpXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWFkZXJzWydUcmFuc2Zlci1FbmNvZGluZyddLCAnY2h1bmtlZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgc2VsZi5leHBlY3RlZF9ib2R5KQorCisgICAgICAgICMgVXNlci1zcGVjaWZpZWQgVEUsIGJ1dCByZXF1ZXN0KCkgZG9lcyB0aGUgY2h1bmsgZW5jb2RpbmcKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy8nLAorICAgICAgICAgICAgaGVhZGVycz17J1RyYW5zZmVyLUVuY29kaW5nJzogJ2d6aXAsIGNodW5rZWQnfSwKKyAgICAgICAgICAgIGVuY29kZV9jaHVua2VkPVRydWUsCisgICAgICAgICAgICBib2R5PXNlbGYuX21ha2VfYm9keSgpKQorICAgICAgICBfLCBoZWFkZXJzLCBib2R5ID0gc2VsZi5fcGFyc2VfcmVxdWVzdChjb25uLnNvY2suZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignY29udGVudC1sZW5ndGgnLCBbay5sb3dlcigpIGZvciBrIGluIGhlYWRlcnNdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdnemlwLCBjaHVua2VkJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9wYXJzZV9jaHVua2VkKGJvZHkpLCBzZWxmLmV4cGVjdGVkX2JvZHkpCisKKyAgICBkZWYgdGVzdF9yZXF1ZXN0KHNlbGYpOgorICAgICAgICBmb3IgZW1wdHlfbGluZXMgaW4gKEZhbHNlLCBUcnVlLCk6CisgICAgICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCisgICAgICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgICAgIGNvbm4ucmVxdWVzdCgKKyAgICAgICAgICAgICAgICAnUE9TVCcsICcvJywgc2VsZi5fbWFrZV9ib2R5KGVtcHR5X2xpbmVzPWVtcHR5X2xpbmVzKSkKKworICAgICAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgICAgICBib2R5ID0gc2VsZi5fcGFyc2VfY2h1bmtlZChib2R5KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChib2R5LCBzZWxmLmV4cGVjdGVkX2JvZHkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlYWRlcnNbJ1RyYW5zZmVyLUVuY29kaW5nJ10sICdjaHVua2VkJykKKworICAgICAgICAgICAgIyBDb250ZW50LUxlbmd0aCBhbmQgVHJhbnNmZXItRW5jb2RpbmcgU0hPVUxEIG5vdCBiZSBzZW50IGluIHRoZQorICAgICAgICAgICAgIyBzYW1lIHJlcXVlc3QKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ2NvbnRlbnQtbGVuZ3RoJywgW2subG93ZXIoKSBmb3IgayBpbiBoZWFkZXJzXSkKKworICAgIGRlZiB0ZXN0X2VtcHR5X2JvZHkoc2VsZik6CisgICAgICAgICMgWmVyby1sZW5ndGggaXRlcmFibGUgc2hvdWxkIGJlIHRyZWF0ZWQgbGlrZSBhbnkgb3RoZXIgaXRlcmFibGUKKyAgICAgICAgY29ubiA9IGNsaWVudC5IVFRQQ29ubmVjdGlvbignZXhhbXBsZS5jb20nKQorICAgICAgICBjb25uLnNvY2sgPSBGYWtlU29ja2V0KGInJykKKyAgICAgICAgY29ubi5yZXF1ZXN0KCdQT1NUJywgJy8nLCAoKSkKKyAgICAgICAgXywgaGVhZGVycywgYm9keSA9IHNlbGYuX3BhcnNlX3JlcXVlc3QoY29ubi5zb2NrLmRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGVhZGVyc1snVHJhbnNmZXItRW5jb2RpbmcnXSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdjb250ZW50LWxlbmd0aCcsIFtrLmxvd2VyKCkgZm9yIGsgaW4gaGVhZGVyc10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYm9keSwgYiIwXHJcblxyXG4iKQorCisgICAgZGVmIF9tYWtlX2JvZHkoc2VsZiwgZW1wdHlfbGluZXM9RmFsc2UpOgorICAgICAgICBsaW5lcyA9IHNlbGYuZXhwZWN0ZWRfYm9keS5zcGxpdChiJyAnKQorICAgICAgICBmb3IgaWR4LCBsaW5lIGluIGVudW1lcmF0ZShsaW5lcyk6CisgICAgICAgICAgICAjIGZvciB0ZXN0aW5nIGhhbmRsaW5nIGVtcHR5IGxpbmVzCisgICAgICAgICAgICBpZiBlbXB0eV9saW5lcyBhbmQgaWR4ICUgMjoKKyAgICAgICAgICAgICAgICB5aWVsZCBiJycKKyAgICAgICAgICAgIGlmIGlkeCA8IGxlbihsaW5lcykgLSAxOgorICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUgKyBiJyAnCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHlpZWxkIGxpbmUKKworICAgIGRlZiBfcGFyc2VfcmVxdWVzdChzZWxmLCBkYXRhKToKKyAgICAgICAgbGluZXMgPSBkYXRhLnNwbGl0KGInXHJcbicpCisgICAgICAgIHJlcXVlc3QgPSBsaW5lc1swXQorICAgICAgICBoZWFkZXJzID0ge30KKyAgICAgICAgbiA9IDEKKyAgICAgICAgd2hpbGUgbiA8IGxlbihsaW5lcykgYW5kIGxlbihsaW5lc1tuXSkgPiAwOgorICAgICAgICAgICAga2V5LCB2YWwgPSBsaW5lc1tuXS5zcGxpdChiJzonKQorICAgICAgICAgICAga2V5ID0ga2V5LmRlY29kZSgnbGF0aW4tMScpLnN0cmlwKCkKKyAgICAgICAgICAgIGhlYWRlcnNba2V5XSA9IHZhbC5kZWNvZGUoJ2xhdGluLTEnKS5zdHJpcCgpCisgICAgICAgICAgICBuICs9IDEKKworICAgICAgICByZXR1cm4gcmVxdWVzdCwgaGVhZGVycywgYidcclxuJy5qb2luKGxpbmVzW24gKyAxOl0pCisKKyAgICBkZWYgX3BhcnNlX2NodW5rZWQoc2VsZiwgZGF0YSk6CisgICAgICAgIGJvZHkgPSBbXQorICAgICAgICB0cmFpbGVycyA9IHt9CisgICAgICAgIG4gPSAwCisgICAgICAgIGxpbmVzID0gZGF0YS5zcGxpdChiJ1xyXG4nKQorICAgICAgICAjIHBhcnNlIGJvZHkKKyAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgIHNpemUsIGNodW5rID0gbGluZXNbbjpuKzJdCisgICAgICAgICAgICBzaXplID0gaW50KHNpemUsIDE2KQorCisgICAgICAgICAgICBpZiBzaXplID09IDA6CisgICAgICAgICAgICAgICAgbiArPSAxCisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBsZW4oY2h1bmspKQorICAgICAgICAgICAgYm9keS5hcHBlbmQoY2h1bmspCisKKyAgICAgICAgICAgIG4gKz0gMgorICAgICAgICAgICAgIyB3ZSAvc2hvdWxkLyBoaXQgdGhlIGVuZCBjaHVuaywgYnV0IGNoZWNrIGFnYWluc3QgdGhlIHNpemUgb2YKKyAgICAgICAgICAgICMgbGluZXMgc28gd2UncmUgbm90IHN0dWNrIGluIGFuIGluZmluaXRlIGxvb3Agc2hvdWxkIHdlIGdldAorICAgICAgICAgICAgIyBtYWxmb3JtZWQgZGF0YQorICAgICAgICAgICAgaWYgbiA+IGxlbihsaW5lcyk6CisgICAgICAgICAgICAgICAgYnJlYWsKKworICAgICAgICByZXR1cm4gYicnLmpvaW4oYm9keSkKKworCiBjbGFzcyBCYXNpY1Rlc3QoVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X3N0YXR1c19saW5lcyhzZWxmKToKICAgICAgICAgIyBUZXN0IEhUVFAgc3RhdHVzIGxpbmVzCkBAIC01NjQsNyArNjkyLDkgQEAKIAogICAgIGRlZiB0ZXN0X3NlbmRfZmlsZShzZWxmKToKICAgICAgICAgZXhwZWN0ZWQgPSAoYidHRVQgL2ZvbyBIVFRQLzEuMVxyXG5Ib3N0OiBleGFtcGxlLmNvbVxyXG4nCi0gICAgICAgICAgICAgICAgICAgIGInQWNjZXB0LUVuY29kaW5nOiBpZGVudGl0eVxyXG5Db250ZW50LUxlbmd0aDonKQorICAgICAgICAgICAgICAgICAgICBiJ0FjY2VwdC1FbmNvZGluZzogaWRlbnRpdHlcclxuJworICAgICAgICAgICAgICAgICAgICBiJ1RyYW5zZmVyLUVuY29kaW5nOiBjaHVua2VkXHJcbicKKyAgICAgICAgICAgICAgICAgICAgYidcclxuJykKIAogICAgICAgICB3aXRoIG9wZW4oX19maWxlX18sICdyYicpIGFzIGJvZHk6CiAgICAgICAgICAgICBjb25uID0gY2xpZW50LkhUVFBDb25uZWN0aW9uKCdleGFtcGxlLmNvbScpCkBAIC01OTQsMTEgKzcyNCwxMSBAQAogICAgICAgICAgICAgeWllbGQgTm9uZQogICAgICAgICAgICAgeWllbGQgJ2RhdGFfdHdvJwogCi0gICAgICAgIGNsYXNzIFVwZGF0aW5nRmlsZSgpOgorICAgICAgICBjbGFzcyBVcGRhdGluZ0ZpbGUoaW8uVGV4dElPQmFzZSk6CiAgICAgICAgICAgICBtb2RlID0gJ3InCiAgICAgICAgICAgICBkID0gZGF0YSgpCiAgICAgICAgICAgICBkZWYgcmVhZChzZWxmLCBibG9ja3NpemU9LTEpOgotICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmQuX19uZXh0X18oKQorICAgICAgICAgICAgICAgIHJldHVybiBuZXh0KHNlbGYuZCkKIAogICAgICAgICBleHBlY3RlZCA9IGInZGF0YScKIApAQCAtOTcwLDYgKzExMDAsNyBAQAogCiAgICAgICAgIHRocmVhZCA9IHRocmVhZGluZy5UaHJlYWQodGFyZ2V0PXJ1bl9zZXJ2ZXIpCiAgICAgICAgIHRocmVhZC5zdGFydCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh0aHJlYWQuam9pbiwgZmxvYXQoMSkpCiAgICAgICAgIGNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oKnNlcnYuZ2V0c29ja25hbWUoKSkKICAgICAgICAgY29ubi5yZXF1ZXN0KCJDT05ORUNUIiwgImR1bW15OjEyMzQiKQogICAgICAgICByZXNwb25zZSA9IGNvbm4uZ2V0cmVzcG9uc2UoKQpAQCAtOTgzLDcgKzExMTQsNyBAQAogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgcmVzcG9uc2UuY2xvc2UoKQogICAgICAgICAgICAgY29ubi5jbG9zZSgpCi0gICAgICAgICAgICB0aHJlYWQuam9pbigpCisgICAgICAgIHRocmVhZC5qb2luKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsIGIicHJveGllZCBkYXRhXG4iKQogCiBjbGFzcyBFeHRlbmRlZFJlYWRUZXN0KFRlc3RDYXNlKToKQEAgLTE1MTEsMTQgKzE2NDIsMTYgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuQ2VydGlmaWNhdGVFcnJvcik6CiAgICAgICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvJykKICAgICAgICAgIyBTYW1lIHdpdGggZXhwbGljaXQgY2hlY2tfaG9zdG5hbWU9VHJ1ZQotICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsIGNvbnRleHQ9Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIGNoZWNrX2hvc3RuYW1lPVRydWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpOgogICAgICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgICMgV2l0aCBjaGVja19ob3N0bmFtZT1GYWxzZSwgdGhlIG1pc21hdGNoaW5nIGlzIGlnbm9yZWQKICAgICAgICAgY29udGV4dC5jaGVja19ob3N0bmFtZSA9IEZhbHNlCi0gICAgICAgIGggPSBjbGllbnQuSFRUUFNDb25uZWN0aW9uKCdsb2NhbGhvc3QnLCBzZXJ2ZXIucG9ydCwgY29udGV4dD1jb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGVja19ob3N0bmFtZT1GYWxzZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIGNoZWNrX2hvc3RuYW1lPUZhbHNlKQogICAgICAgICBoLnJlcXVlc3QoJ0dFVCcsICcvbm9uZXhpc3RlbnQnKQogICAgICAgICByZXNwID0gaC5nZXRyZXNwb25zZSgpCiAgICAgICAgIHJlc3AuY2xvc2UoKQpAQCAtMTUzNSw4ICsxNjY4LDkgQEAKICAgICAgICAgaC5jbG9zZSgpCiAgICAgICAgICMgUGFzc2luZyBjaGVja19ob3N0bmFtZSB0byBIVFRQU0Nvbm5lY3Rpb24gc2hvdWxkIG92ZXJyaWRlIHRoZQogICAgICAgICAjIGNvbnRleHQncyBzZXR0aW5nLgotICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsIGNvbnRleHQ9Y29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hlY2tfaG9zdG5hbWU9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICBoID0gY2xpZW50LkhUVFBTQ29ubmVjdGlvbignbG9jYWxob3N0Jywgc2VydmVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0PWNvbnRleHQsIGNoZWNrX2hvc3RuYW1lPVRydWUpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpOgogICAgICAgICAgICAgaC5yZXF1ZXN0KCdHRVQnLCAnLycpCiAKQEAgLTE1NzUsNiArMTcwOSwyNiBAQAogICAgICAgICBtZXNzYWdlID0gY2xpZW50LnBhcnNlX2hlYWRlcnMoZikKICAgICAgICAgcmV0dXJuIG1lc3NhZ2UsIGYKIAorICAgIGRlZiB0ZXN0X2xpc3RfYm9keShzZWxmKToKKyAgICAgICAgIyBOb3RlIHRoYXQgbm8gY29udGVudC1sZW5ndGggaXMgYXV0b21hdGljYWxseSBjYWxjdWxhdGVkIGZvcgorICAgICAgICAjIGFuIGl0ZXJhYmxlLiAgVGhlIHJlcXVlc3Qgd2lsbCBmYWxsIGJhY2sgdG8gc2VuZCBjaHVua2VkCisgICAgICAgICMgdHJhbnNmZXIgZW5jb2RpbmcuCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgKFtiJ2ZvbycsIGInYmFyJ10sIGInM1xyXG5mb29cclxuM1xyXG5iYXJcclxuMFxyXG5cclxuJyksCisgICAgICAgICAgICAoKGInZm9vJywgYidiYXInKSwgYiczXHJcbmZvb1xyXG4zXHJcbmJhclxyXG4wXHJcblxyXG4nKSwKKyAgICAgICAgKQorICAgICAgICBmb3IgYm9keSwgZXhwZWN0ZWQgaW4gY2FzZXM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChib2R5KToKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4gPSBjbGllbnQuSFRUUENvbm5lY3Rpb24oJ2V4YW1wbGUuY29tJykKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4uc29jayA9IHNlbGYuc29jayA9IEZha2VTb2NrZXQoJycpCisKKyAgICAgICAgICAgICAgICBzZWxmLmNvbm4ucmVxdWVzdCgnUFVUJywgJy91cmwnLCBib2R5KQorICAgICAgICAgICAgICAgIG1zZywgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdDb250ZW50LVR5cGUnLCBtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbignQ29udGVudC1MZW5ndGgnLCBtc2cpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtc2cuZ2V0KCdUcmFuc2Zlci1FbmNvZGluZycpLCAnY2h1bmtlZCcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZCwgZi5yZWFkKCkpCisKICAgICBkZWYgdGVzdF9tYW51YWxfY29udGVudF9sZW5ndGgoc2VsZik6CiAgICAgICAgICMgU2V0IGFuIGluY29ycmVjdCBjb250ZW50LWxlbmd0aCBzbyB0aGF0IHdlIGNhbiB2ZXJpZnkgdGhhdAogICAgICAgICAjIGl0IHdpbGwgbm90IGJlIG92ZXItcmlkZGVuIGJ5IHRoZSBsaWJyYXJ5LgpAQCAtMTYwOCw3ICsxNzYyLDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgiNSIsIG1lc3NhZ2UuZ2V0KCJjb250ZW50LWxlbmd0aCIpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYm9keVx4YzEnLCBmLnJlYWQoKSkKIAotICAgIGRlZiB0ZXN0X2ZpbGVfYm9keShzZWxmKToKKyAgICBkZWYgdGVzdF90ZXh0X2ZpbGVfYm9keShzZWxmKToKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKICAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCJib2R5IikKQEAgLTE2MTcsOCArMTc3MSwxMSBAQAogICAgICAgICAgICAgbWVzc2FnZSwgZiA9IHNlbGYuZ2V0X2hlYWRlcnNfYW5kX2ZwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInRleHQvcGxhaW4iLCBtZXNzYWdlLmdldF9jb250ZW50X3R5cGUoKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG1lc3NhZ2UuZ2V0X2NoYXJzZXQoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjQiLCBtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYidib2R5JywgZi5yZWFkKCkpCisgICAgICAgICAgICAjIE5vIGNvbnRlbnQtbGVuZ3RoIHdpbGwgYmUgZGV0ZXJtaW5lZCBmb3IgZmlsZXM7IHRoZSBib2R5CisgICAgICAgICAgICAjIHdpbGwgYmUgc2VudCB1c2luZyBjaHVua2VkIHRyYW5zZmVyIGVuY29kaW5nIGluc3RlYWQuCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZXNzYWdlLmdldCgiY29udGVudC1sZW5ndGgiKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImNodW5rZWQiLCBtZXNzYWdlLmdldCgidHJhbnNmZXItZW5jb2RpbmciKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYic0XHJcbmJvZHlcclxuMFxyXG5cclxuJywgZi5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF9iaW5hcnlfZmlsZV9ib2R5KHNlbGYpOgogICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQpAQCAtMTYyOSw4ICsxNzg2LDkgQEAKICAgICAgICAgICAgIG1lc3NhZ2UsIGYgPSBzZWxmLmdldF9oZWFkZXJzX2FuZF9mcCgpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCJ0ZXh0L3BsYWluIiwgbWVzc2FnZS5nZXRfY29udGVudF90eXBlKCkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtZXNzYWdlLmdldF9jaGFyc2V0KCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCI1IiwgbWVzc2FnZS5nZXQoImNvbnRlbnQtbGVuZ3RoIikpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInYm9keVx4YzEnLCBmLnJlYWQoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoImNodW5rZWQiLCBtZXNzYWdlLmdldCgiVHJhbnNmZXItRW5jb2RpbmciKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oIkNvbnRlbnQtTGVuZ3RoIiwgbWVzc2FnZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYic1XHJcbmJvZHlceGMxXHJcbjBcclxuXHJcbicsIGYucmVhZCgpKQogCiAKIGNsYXNzIEhUVFBSZXNwb25zZVRlc3QoVGVzdENhc2UpOgpAQCAtMTc0MSwxMyArMTg5OSw1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2hlYWRlcjoge30nLmZvcm1hdChleHBlY3RlZF9oZWFkZXIpLCBsaW5lcykKIAogCi1Ac3VwcG9ydC5yZWFwX3RocmVhZHMKLWRlZiB0ZXN0X21haW4odmVyYm9zZT1Ob25lKToKLSAgICBzdXBwb3J0LnJ1bl91bml0dGVzdChIZWFkZXJUZXN0cywgT2ZmbGluZVRlc3QsIEJhc2ljVGVzdCwgVGltZW91dFRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUGVyc2lzdGVuY2VUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEhUVFBTVGVzdCwgUmVxdWVzdEJvZHlUZXN0LCBTb3VyY2VBZGRyZXNzVGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBIVFRQUmVzcG9uc2VUZXN0LCBFeHRlbmRlZFJlYWRUZXN0LAotICAgICAgICAgICAgICAgICAgICAgICAgIEV4dGVuZGVkUmVhZFRlc3RDaHVua2VkLCBUdW5uZWxUZXN0cykKLQogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICB0ZXN0X21haW4oKQorICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5IGIvTGliL3Rlc3QvdGVzdF9odHRwc2VydmVycy5weQppbmRleCA3MmU2ZTA4Li40ZTkzMTQ0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2h0dHBzZXJ2ZXJzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaHR0cHNlcnZlcnMucHkKQEAgLTE4LDYgKzE4LDcgQEAKIGltcG9ydCBodG1sCiBpbXBvcnQgaHR0cC5jbGllbnQKIGltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRpbWUKIGZyb20gaW8gaW1wb3J0IEJ5dGVzSU8KIAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xODksNyArMTkwLDcgQEAKICAgICAgICAgcmVzID0gc2VsZi5jb24uZ2V0cmVzcG9uc2UoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcy5zdGF0dXMsIEhUVFBTdGF0dXMuTk9UX0lNUExFTUVOVEVEKQogCi0gICAgZGVmIHRlc3RfaGVhZF9rZWVwX2FsaXZlKHNlbGYpOgorICAgIGRlZiB0ZXN0X2hlYWRlcl9rZWVwX2FsaXZlKHNlbGYpOgogICAgICAgICBzZWxmLmNvbi5faHR0cF92c25fc3RyID0gJ0hUVFAvMS4xJwogICAgICAgICBzZWxmLmNvbi5wdXRyZXF1ZXN0KCdHRVQnLCAnLycpCiAgICAgICAgIHNlbGYuY29uLnB1dGhlYWRlcignQ29ubmVjdGlvbicsICdrZWVwLWFsaXZlJykKQEAgLTM2OSw2ICszNzAsOCBAQAogICAgICAgICByZXR1cm4gYm9keQogCiAgICAgQHN1cHBvcnQucmVxdWlyZXNfbWFjX3ZlcigxMCwgNSkKKyAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLAorICAgICAgICAgICAgICAgICAgICAgJ3VuZGVjb2RhYmxlIG5hbWUgY2Fubm90IGJlIGRlY29kZWQgb24gd2luMzInKQogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnQuVEVTVEZOX1VOREVDT0RBQkxFLAogICAgICAgICAgICAgICAgICAgICAgICAgICduZWVkIHN1cHBvcnQuVEVTVEZOX1VOREVDT0RBQkxFJykKICAgICBkZWYgdGVzdF91bmRlY29kYWJsZV9maWxlbmFtZShzZWxmKToKQEAgLTM4OCw3ICszOTEsNyBAQAogICAgICAgICBxdW90ZWRuYW1lID0gdXJsbGliLnBhcnNlLnF1b3RlKGZpbGVuYW1lLCBlcnJvcnM9J3N1cnJvZ2F0ZXBhc3MnKQogICAgICAgICBzZWxmLmFzc2VydEluKCgnaHJlZj0iJXMiJyAlIHF1b3RlZG5hbWUpCiAgICAgICAgICAgICAgICAgICAgICAgLmVuY29kZShlbmMsICdzdXJyb2dhdGVlc2NhcGUnKSwgYm9keSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbigoJz4lczwnICUgaHRtbC5lc2NhcGUoZmlsZW5hbWUpKQorICAgICAgICBzZWxmLmFzc2VydEluKCgnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSwgcXVvdGU9RmFsc2UpKQogICAgICAgICAgICAgICAgICAgICAgIC5lbmNvZGUoZW5jLCAnc3Vycm9nYXRlZXNjYXBlJyksIGJvZHkpCiAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYuYmFzZV91cmwgKyAnLycgKyBxdW90ZWRuYW1lKQogICAgICAgICBzZWxmLmNoZWNrX3N0YXR1c19hbmRfcmVhc29uKHJlc3BvbnNlLCBIVFRQU3RhdHVzLk9LLApAQCAtNDY2LDYgKzQ2OSwyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3BvbnNlLmdldGhlYWRlcigiTG9jYXRpb24iKSwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnRlbXBkaXJfbmFtZSArICIvP2hpPTEiKQogCisgICAgZGVmIHRlc3RfaHRtbF9lc2NhcGVfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZpbGVuYW1lID0gJzx0ZXN0Jj4udHh0JworICAgICAgICBmdWxscGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsIGZpbGVuYW1lKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9wZW4oZnVsbHBhdGgsICd3JykuY2xvc2UoKQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdDYW4gbm90IGNyZWF0ZSBmaWxlICVzIG9uIGN1cnJlbnQgZmlsZSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzdGVtJyAlIGZpbGVuYW1lKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gc2VsZi5yZXF1ZXN0KHNlbGYuYmFzZV91cmwgKyAnLycpCisgICAgICAgICAgICBib2R5ID0gc2VsZi5jaGVja19zdGF0dXNfYW5kX3JlYXNvbihyZXNwb25zZSwgSFRUUFN0YXR1cy5PSykKKyAgICAgICAgICAgIGVuYyA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0X2NvbnRlbnRfY2hhcnNldCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy51bmxpbmsoZnVsbHBhdGgpICAjIGF2b2lkIGFmZmVjdGluZyB0ZXN0X3VuZGVjb2RhYmxlX2ZpbGVuYW1lCisKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZW5jKQorICAgICAgICBodG1sX3RleHQgPSAnPiVzPCcgJSBodG1sLmVzY2FwZShmaWxlbmFtZSwgcXVvdGU9RmFsc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oaHRtbF90ZXh0LmVuY29kZShlbmMpLCBib2R5KQorCiAKIGNnaV9maWxlMSA9ICIiIlwKICMhJXMKQEAgLTkxNiw3ICs5NDAsNyBAQAogICAgICAgICAjIElzc3VlICM2NzkxOiBzYW1lIGZvciBoZWFkZXJzCiAgICAgICAgIHJlc3VsdCA9IHNlbGYuc2VuZF90eXBpY2FsX3JlcXVlc3QoCiAgICAgICAgICAgICBiJ0dFVCAvIEhUVFAvMS4xXHJcblgtRm9vOiBiYXInICsgYidyJyAqIDY1NTM3ICsgYidcclxuXHJcbicpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBiJ0hUVFAvMS4xIDQwMCBMaW5lIHRvbyBsb25nXHJcbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBiJ0hUVFAvMS4xIDQzMSBMaW5lIHRvbyBsb25nXHJcbicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5oYW5kbGVyLmdldF9jYWxsZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oYW5kbGVyLnJlcXVlc3RsaW5lLCAnR0VUIC8gSFRUUC8xLjEnKQogCkBAIC05MjcsNiArOTUxLDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5oYW5kbGVyLmdldF9jYWxsZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5oYW5kbGVyLnJlcXVlc3RsaW5lLCAnR0VUIC8gSFRUUC8xLjEnKQogCisgICAgZGVmIHRlc3RfaHRtbF9lc2NhcGVfb25fZXJyb3Ioc2VsZik6CisgICAgICAgIHJlc3VsdCA9IHNlbGYuc2VuZF90eXBpY2FsX3JlcXVlc3QoCisgICAgICAgICAgICBiJzxzY3JpcHQ+YWxlcnQoImhlbGxvIik8L3NjcmlwdD4gLyBIVFRQLzEuMScpCisgICAgICAgIHJlc3VsdCA9IGInJy5qb2luKHJlc3VsdCkKKyAgICAgICAgdGV4dCA9ICc8c2NyaXB0PmFsZXJ0KCJoZWxsbyIpPC9zY3JpcHQ+JworICAgICAgICBzZWxmLmFzc2VydEluKGh0bWwuZXNjYXBlKHRleHQsIHF1b3RlPUZhbHNlKS5lbmNvZGUoJ2FzY2lpJyksIHJlc3VsdCkKKwogICAgIGRlZiB0ZXN0X2Nsb3NlX2Nvbm5lY3Rpb24oc2VsZik6CiAgICAgICAgICMgaGFuZGxlX29uZV9yZXF1ZXN0KCkgc2hvdWxkIGJlIHJlcGVhdGVkbHkgY2FsbGVkIHVudGlsCiAgICAgICAgICMgaXQgc2V0cyBjbG9zZV9jb25uZWN0aW9uCkBAIC05NDIsNiArOTczLDE5IEBACiAgICAgICAgIHNlbGYuaGFuZGxlci5oYW5kbGUoKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBjbG9zZV92YWx1ZXMpCiAKKyAgICBkZWYgdGVzdF9kYXRlX3RpbWVfc3RyaW5nKHNlbGYpOgorICAgICAgICBub3cgPSB0aW1lLnRpbWUoKQorICAgICAgICAjIHRoaXMgaXMgdGhlIG9sZCBjb2RlIHRoYXQgZm9ybWF0cyB0aGUgdGltZXN0YW1wCisgICAgICAgIHllYXIsIG1vbnRoLCBkYXksIGhoLCBtbSwgc3MsIHdkLCB5LCB6ID0gdGltZS5nbXRpbWUobm93KQorICAgICAgICBleHBlY3RlZCA9ICIlcywgJTAyZCAlM3MgJTRkICUwMmQ6JTAyZDolMDJkIEdNVCIgJSAoCisgICAgICAgICAgICBzZWxmLmhhbmRsZXIud2Vla2RheW5hbWVbd2RdLAorICAgICAgICAgICAgZGF5LAorICAgICAgICAgICAgc2VsZi5oYW5kbGVyLm1vbnRobmFtZVttb250aF0sCisgICAgICAgICAgICB5ZWFyLCBoaCwgbW0sIHNzCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmhhbmRsZXIuZGF0ZV90aW1lX3N0cmluZyh0aW1lc3RhbXA9bm93KSwgZXhwZWN0ZWQpCisKKwogY2xhc3MgU2ltcGxlSFRUUFJlcXVlc3RIYW5kbGVyVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIiBUZXN0IHVybCBwYXJzaW5nICIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaWRsZS5weSBiL0xpYi90ZXN0L3Rlc3RfaWRsZS5weQppbmRleCAxNDFlODllLi5kYTA1ZGE1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lkbGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pZGxlLnB5CkBAIC0xLDE2ICsxLDIzIEBACiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIAotIyBTa2lwIHRlc3QgaWYgX3RocmVhZCBvciBfdGtpbnRlciB3YXNuJ3QgYnVpbHQgb3IgaWRsZWxpYiB3YXMgZGVsZXRlZC4KKyMgU2tpcCB0ZXN0IGlmIF90aHJlYWQgb3IgX3RraW50ZXIgd2Fzbid0IGJ1aWx0LCBpZiBpZGxlbGliIGlzIG1pc3NpbmcsCisjIG9yIGlmIHRjbC90ayBpcyBub3QgdGhlIDguNSsgbmVlZGVkIGZvciB0dGsgd2lkZ2V0cy4KIGltcG9ydF9tb2R1bGUoJ3RocmVhZGluZycpICAjIGltcG9ydGVkIGJ5IFB5U2hlbGwsIGltcG9ydHMgX3RocmVhZAogdGsgPSBpbXBvcnRfbW9kdWxlKCd0a2ludGVyJykgICMgaW1wb3J0cyBfdGtpbnRlcgotaWRsZXRlc3QgPSBpbXBvcnRfbW9kdWxlKCdpZGxlbGliLmlkbGVfdGVzdCcpCitpZiB0ay5Ua1ZlcnNpb24gPCA4LjU6CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoIklETEUgcmVxdWlyZXMgdGsgOC41IG9yIGxhdGVyLiIpCitpZGxlbGliID0gaW1wb3J0X21vZHVsZSgnaWRsZWxpYicpCiAKLSMgV2l0aG91dCB0ZXN0X21haW4gcHJlc2VudCwgcmVncnRlc3QucnVudGVzdF9pbm5lciAobGluZTEyMTkpIGNhbGxzCi0jIHVuaXR0ZXN0LlRlc3RMb2FkZXIoKS5sb2FkVGVzdHNGcm9tTW9kdWxlKHRoaXNfbW9kdWxlKSB3aGljaCBjYWxscwotIyBsb2FkX3Rlc3RzKCkgaWYgaXQgZmluZHMgaXQuIChVbml0dGVzdC5tYWluIGRvZXMgdGhlIHNhbWUuKQotbG9hZF90ZXN0cyA9IGlkbGV0ZXN0LmxvYWRfdGVzdHMKKyMgQmVmb3JlIHRlc3QgaW1wb3J0cywgdGVsbCBJRExFIHRvIGF2b2lkIGNoYW5naW5nIHRoZSBlbnZpcm9ubWVudC4KK2lkbGVsaWIudGVzdGluZyA9IFRydWUKKworIyB1bml0dGVzdC5tYWluIGFuZCB0ZXN0LmxpYnJlZ3J0ZXN0LnJ1bnRlc3QucnVudGVzdF9pbm5lcgorIyBjYWxsIGxvYWRfdGVzdHMsIHdoZW4gcHJlc2VudCwgdG8gZGlzY292ZXIgdGVzdHMgdG8gcnVuLgorZnJvbSBpZGxlbGliLmlkbGVfdGVzdCBpbXBvcnQgbG9hZF90ZXN0cwogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgotICAgIHVuaXR0ZXN0Lm1haW4odmVyYm9zaXR5PTIsIGV4aXQ9RmFsc2UpCisgICAgdGsuTm9EZWZhdWx0Um9vdCgpCisgICAgdW5pdHRlc3QubWFpbihleGl0PUZhbHNlKQorICAgIHRrLl9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKKyAgICB0ay5fZGVmYXVsdF9yb290ID0gTm9uZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5IGIvTGliL3Rlc3QvdGVzdF9pbWFwbGliLnB5CmluZGV4IDA3MTU3ZjUuLjYzYWM4MTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1hcGxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltYXBsaWIucHkKQEAgLTc3LDkgKzc3LDkgQEAKIAogICAgICAgICBkZWYgZ2V0X3JlcXVlc3Qoc2VsZik6CiAgICAgICAgICAgICBuZXdzb2NrZXQsIGZyb21hZGRyID0gc2VsZi5zb2NrZXQuYWNjZXB0KCkKLSAgICAgICAgICAgIGNvbm5zdHJlYW0gPSBzc2wud3JhcF9zb2NrZXQobmV3c29ja2V0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfc2lkZT1UcnVlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgIGNvbm5zdHJlYW0gPSBjb250ZXh0LndyYXBfc29ja2V0KG5ld3NvY2tldCwgc2VydmVyX3NpZGU9VHJ1ZSkKICAgICAgICAgICAgIHJldHVybiBjb25uc3RyZWFtLCBmcm9tYWRkcgogCiAgICAgSU1BUDRfU1NMID0gaW1hcGxpYi5JTUFQNF9TU0wKQEAgLTI0Myw2ICsyNDMsNTUgQEAKICAgICAgICAgICAgIGNsaWVudC5zaHV0ZG93bigpCiAKICAgICBAcmVhcF90aHJlYWRzCisgICAgZGVmIHRlc3RfYnJhY2tldF9mbGFncyhzZWxmKToKKworICAgICAgICAjIFRoaXMgdmlvbGF0ZXMgUkZDIDM1MDEsIHdoaWNoIGRpc2FsbG93cyAnXScgY2hhcmFjdGVycyBpbiB0YWcgbmFtZXMsCisgICAgICAgICMgYnV0IGltYXBsaWIgaGFzIGFsbG93ZWQgcHJvZHVjaW5nIHN1Y2ggdGFncyBmb3JldmVyLCBvdGhlciBwcm9ncmFtcworICAgICAgICAjIGFsc28gcHJvZHVjZSB0aGVtIChlZzogT3RoZXJJbmJveCdzIE9yZ2FuaXplciBhcHAgYXMgb2YgMjAxNDA3MTYpLAorICAgICAgICAjIGFuZCBHbWFpbCwgZm9yIGV4YW1wbGUsIGFjY2VwdHMgdGhlbSBhbmQgcHJvZHVjZXMgdGhlbS4gIFNvIHdlCisgICAgICAgICMgc3VwcG9ydCB0aGVtLiAgU2VlIGlzc3VlICMyMTgxNS4KKworICAgICAgICBjbGFzcyBCcmFja2V0RmxhZ0hhbmRsZXIoU2ltcGxlSU1BUEhhbmRsZXIpOgorCisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuZmxhZ3MgPSBbJ0Fuc3dlcmVkJywgJ0ZsYWdnZWQnLCAnRGVsZXRlZCcsICdTZWVuJywgJ0RyYWZ0J10KKyAgICAgICAgICAgICAgICBzdXBlcigpLmhhbmRsZSgpCisKKyAgICAgICAgICAgIGRlZiBjbWRfQVVUSEVOVElDQVRFKHNlbGYsIHRhZywgYXJncyk6CisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90ZXh0bGluZSgnKycpCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIucmVzcG9uc2UgPSB5aWVsZAorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfdGFnZ2VkKHRhZywgJ09LJywgJ0ZBS0VBVVRIIHN1Y2Nlc3NmdWwnKQorCisgICAgICAgICAgICBkZWYgY21kX1NFTEVDVChzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgICAgIGZsYWdfbXNnID0gJyBcXCcuam9pbihzZWxmLmZsYWdzKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZSgoJyogRkxBR1MgKCVzKScgJSBmbGFnX21zZykuZW5jb2RlKCdhc2NpaScpKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShiJyogMiBFWElTVFMnKQorICAgICAgICAgICAgICAgIHNlbGYuX3NlbmRfbGluZShiJyogMCBSRUNFTlQnKQorICAgICAgICAgICAgICAgIG1zZyA9ICgnKiBPSyBbUEVSTUFORU5URkxBR1MgJXMgXFwqKV0gRmxhZ3MgcGVybWl0dGVkLicKKyAgICAgICAgICAgICAgICAgICAgICAgICUgZmxhZ19tc2cpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF9saW5lKG1zZy5lbmNvZGUoJ2FzY2lpJykpCisgICAgICAgICAgICAgICAgc2VsZi5fc2VuZF90YWdnZWQodGFnLCAnT0snLCAnW1JFQUQtV1JJVEVdIFNFTEVDVCBjb21wbGV0ZWQuJykKKworICAgICAgICAgICAgZGVmIGNtZF9TVE9SRShzZWxmLCB0YWcsIGFyZ3MpOgorICAgICAgICAgICAgICAgIG5ld19mbGFncyA9IGFyZ3NbMl0uc3RyaXAoJygnKS5zdHJpcCgnKScpLnNwbGl0KCkKKyAgICAgICAgICAgICAgICBzZWxmLmZsYWdzLmV4dGVuZChuZXdfZmxhZ3MpCisgICAgICAgICAgICAgICAgZmxhZ3NfbXNnID0gJyhGTEFHUyAoJXMpKScgJSAnIFxcJy5qb2luKHNlbGYuZmxhZ3MpCisgICAgICAgICAgICAgICAgbXNnID0gJyogJXMgRkVUQ0ggJXMnICUgKGFyZ3NbMF0sIGZsYWdzX21zZykKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX2xpbmUobXNnLmVuY29kZSgnYXNjaWknKSkKKyAgICAgICAgICAgICAgICBzZWxmLl9zZW5kX3RhZ2dlZCh0YWcsICdPSycsICdTVE9SRSBjb21wbGV0ZWQuJykKKworICAgICAgICB3aXRoIHNlbGYucmVhcGVkX3BhaXIoQnJhY2tldEZsYWdIYW5kbGVyKSBhcyAoc2VydmVyLCBjbGllbnQpOgorICAgICAgICAgICAgY29kZSwgZGF0YSA9IGNsaWVudC5hdXRoZW50aWNhdGUoJ01ZQVVUSCcsIGxhbWJkYSB4OiBiJ2Zha2UnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLCAnT0snKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVzcG9uc2UsIGInWm1GclpRPT1cclxuJykKKyAgICAgICAgICAgIGNsaWVudC5zZWxlY3QoJ3Rlc3QnKQorICAgICAgICAgICAgdHlwLCBbZGF0YV0gPSBjbGllbnQuc3RvcmUoYicxJywgIitGTEFHUyIsICJbdGVzdF0iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ1t0ZXN0XScsIGRhdGEpCisgICAgICAgICAgICBjbGllbnQuc2VsZWN0KCd0ZXN0JykKKyAgICAgICAgICAgIHR5cCwgW2RhdGFdID0gY2xpZW50LnJlc3BvbnNlKCdQRVJNQU5FTlRGTEFHUycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGInW3Rlc3RdJywgZGF0YSkKKworICAgIEByZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdF9pc3N1ZTU5NDkoc2VsZik6CiAKICAgICAgICAgY2xhc3MgRU9GSGFuZGxlcihzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpOgpAQCAtNTg5LDggKzYzOCwxMCBAQAogCiAgICAgZGVmIHRlc3RfbG9naW5jYXBhX3dpdGhfY2xpZW50X2NlcnRmaWxlKHNlbGYpOgogICAgICAgICB3aXRoIHRyYW5zaWVudF9pbnRlcm5ldChzZWxmLmhvc3QpOgotICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwgY2VydGZpbGU9Q0VSVEZJTEUpCi0gICAgICAgICAgICBzZWxmLmNoZWNrX2xvZ2luY2FwYShfc2VydmVyKQorICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICAgICAgX3NlcnZlciA9IHNlbGYuaW1hcF9jbGFzcyhzZWxmLmhvc3QsIHNlbGYucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPUNFUlRGSUxFKQorICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tfbG9naW5jYXBhKF9zZXJ2ZXIpCiAKICAgICBkZWYgdGVzdF9sb2dpbmNhcGFfd2l0aF9jbGllbnRfc3NsX2NvbnRleHQoc2VsZik6CiAgICAgICAgIHdpdGggdHJhbnNpZW50X2ludGVybmV0KHNlbGYuaG9zdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltZ2hkci5weSBiL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CmluZGV4IGI1NGRhZjguLjQ3NmJhOTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1naGRyLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IGltZ2hkcgogaW1wb3J0IGlvCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3YXJuaW5ncwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGZpbmRmaWxlLCBURVNURk4sIHVubGluawpAQCAtNDksNiArNTAsMTIgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW1naGRyLndoYXQoTm9uZSwgZGF0YSksIGV4cGVjdGVkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbWdoZHIud2hhdChOb25lLCBieXRlYXJyYXkoZGF0YSkpLCBleHBlY3RlZCkKIAorICAgIGRlZiB0ZXN0X3BhdGhsaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmb3IgZmlsZW5hbWUsIGV4cGVjdGVkIGluIFRFU1RfRklMRVM6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmaWxlbmFtZT1maWxlbmFtZSk6CisgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSBmaW5kZmlsZShmaWxlbmFtZSwgc3ViZGlyPSdpbWdoZHJkYXRhJykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGltZ2hkci53aGF0KHBhdGhsaWIuUGF0aChmaWxlbmFtZSkpLCBleHBlY3RlZCkKKwogICAgIGRlZiB0ZXN0X3JlZ2lzdGVyX3Rlc3Qoc2VsZik6CiAgICAgICAgIGRlZiB0ZXN0X2p1bWJvKGgsIGZpbGUpOgogICAgICAgICAgICAgaWYgaC5zdGFydHN3aXRoKGInZWdncycpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXAucHkgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQppbmRleCBlZTllZTFhLi40ZWNlMzY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcC5weQpAQCAtNiwxMyArNiwxMiBAQAogaW1wb3J0IGltcG9ydGxpYi51dGlsCiBpbXBvcnQgb3MKIGltcG9ydCBvcy5wYXRoCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nKQorICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQogICAgIGltcG9ydCBpbXAKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydC9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5CmluZGV4IDFlMzMyNzQuLjc2MDkwOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0L19faW5pdF9fLnB5CkBAIC02OSw2ICs2OSwxOCBAQAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5sb2FkKFRFU1RGTikKIAorICAgIGRlZiB0ZXN0X2ltcG9ydF9yYWlzZXNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgIGltcG9ydCBzb21ldGhpbmdfdGhhdF9zaG91bGRfbm90X2V4aXN0X2FueXdoZXJlCisKKyAgICBkZWYgdGVzdF9mcm9tX2ltcG9ydF9taXNzaW5nX21vZHVsZV9yYWlzZXNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgIGZyb20gc29tZXRoaW5nX3RoYXRfc2hvdWxkX25vdF9leGlzdF9hbnl3aGVyZSBpbXBvcnQgYmxhaAorCisgICAgZGVmIHRlc3RfZnJvbV9pbXBvcnRfbWlzc2luZ19hdHRyX3JhaXNlc19JbXBvcnRFcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBmcm9tIGltcG9ydGxpYiBpbXBvcnQgc29tZXRoaW5nX3RoYXRfc2hvdWxkX25vdF9leGlzdF9hbnl3aGVyZQorCiAgICAgZGVmIHRlc3RfY2FzZV9zZW5zaXRpdml0eShzZWxmKToKICAgICAgICAgIyBCcmllZiBkaWdyZXNzaW9uIHRvIHRlc3QgdGhhdCBpbXBvcnQgaXMgY2FzZS1zZW5zaXRpdmU6ICBpZiB3ZSBnb3QKICAgICAgICAgIyB0aGlzIGZhciwgd2Uga25vdyBmb3Igc3VyZSB0aGF0ICJyYW5kb20iIGV4aXN0cy4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CmluZGV4IGMxMTJjYTcuLjBkZDljODYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQpAQCAtMSw1ICsxLDQgQEAKIGZyb20gaW1wb3J0bGliIGltcG9ydCBfYm9vdHN0cmFwX2V4dGVybmFsCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGltcG9ydCB1bml0dGVzdAogCkBAIC05LDggKzgsNiBAQAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogCi0jIFhYWCBmaW5kX3NwZWMgdGVzdHMKLQogQHVuaXR0ZXN0LnNraXBJZih1dGlsLkVYVEVOU0lPTlMuZmlsZW5hbWUgaXMgTm9uZSwgJ190ZXN0Y2FwaSBub3QgYXZhaWxhYmxlJykKIEB1dGlsLmNhc2VfaW5zZW5zaXRpdmVfdGVzdHMKIGNsYXNzIEV4dGVuc2lvbk1vZHVsZUNhc2VTZW5zaXRpdml0eVRlc3QodXRpbC5DQVNFT0tUZXN0QmFzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9maW5kZXIucHkKaW5kZXggNzFiZjY3Zi4uYzliNGEzNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfZmluZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X2ZpbmRlci5weQpAQCAtNiw3ICs2LDYgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHdhcm5pbmdzCiAKLSMgWFhYIGZpbmRfc3BlYyB0ZXN0cwogCiBjbGFzcyBGaW5kZXJUZXN0cyhhYmMuRmluZGVyVGVzdHMpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9leHRlbnNpb24vdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggOGY0YjhiYi4uYTRiNWE2NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZXh0ZW5zaW9uL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2V4dGVuc2lvbi90ZXN0X3BhdGhfaG9vay5weQpAQCAtMiw4ICsyLDYgQEAKIAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAotaW1wb3J0IGNvbGxlY3Rpb25zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9mcm96ZW4vdGVzdF9sb2FkZXIucHkKaW5kZXggNjAzYzdkNy4uMjllY2ZmMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvZnJvemVuL3Rlc3RfbG9hZGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2Zyb3plbi90ZXN0X2xvYWRlci5weQpAQCAtMyw4ICszLDYgQEAKIAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAotCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgY2FwdHVyZWRfc3Rkb3V0CiBpbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X19fcGFja2FnZV9fLnB5CmluZGV4IGM3ZDNhMmEuLjdmNjQ1NDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9fX3BhY2thZ2VfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfX19wYWNrYWdlX18ucHkKQEAgLTUsNiArNSw3IEBACiAKICIiIgogaW1wb3J0IHVuaXR0ZXN0CitpbXBvcnQgd2FybmluZ3MKIGZyb20gLi4gaW1wb3J0IHV0aWwKIAogCkBAIC0zMywzMSArMzQsNTAgQEAKIAogICAgICIiIgogCi0gICAgZGVmIHRlc3RfdXNpbmdfX19wYWNrYWdlX18oc2VsZik6Ci0gICAgICAgICMgW19fcGFja2FnZV9fXQorICAgIGRlZiBpbXBvcnRfbW9kdWxlKHNlbGYsIGdsb2JhbHNfKToKICAgICAgICAgd2l0aCBzZWxmLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5mYWtlJykgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKICAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZy5mYWtlJykKICAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9faW1wb3J0X18oJycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsb2JhbHM9eydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZSd9LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdD1bJ2F0dHInXSwgbGV2ZWw9MikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xvYmFscz1nbG9iYWxzXywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3Q9WydhdHRyJ10sIGxldmVsPTIpCisgICAgICAgIHJldHVybiBtb2R1bGUKKworICAgIGRlZiB0ZXN0X3VzaW5nX19fcGFja2FnZV9fKHNlbGYpOgorICAgICAgICAjIFtfX3BhY2thZ2VfX10KKyAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19wYWNrYWdlX18nOiAncGtnLmZha2UnfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sICdwa2cnKQogCi0gICAgZGVmIHRlc3RfdXNpbmdfX19uYW1lX18oc2VsZiwgcGFja2FnZV9hc19Ob25lPUZhbHNlKToKKyAgICBkZWYgdGVzdF91c2luZ19fX25hbWVfXyhzZWxmKToKICAgICAgICAgIyBbX19uYW1lX19dCi0gICAgICAgIGdsb2JhbHNfID0geydfX25hbWVfXyc6ICdwa2cuZmFrZScsICdfX3BhdGhfXyc6IFtdfQotICAgICAgICBpZiBwYWNrYWdlX2FzX05vbmU6Ci0gICAgICAgICAgICBnbG9iYWxzX1snX19wYWNrYWdlX18nXSA9IE5vbmUKLSAgICAgICAgd2l0aCBzZWxmLm1vY2tfbW9kdWxlcygncGtnLl9faW5pdF9fJywgJ3BrZy5mYWtlJykgYXMgaW1wb3J0ZXI6Ci0gICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3BrZy5mYWtlJykKLSAgICAgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLl9faW1wb3J0X18oJycsIGdsb2JhbHM9IGdsb2JhbHNfLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbWxpc3Q9WydhdHRyJ10sIGxldmVsPTIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKKyAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYuaW1wb3J0X21vZHVsZSh7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ19fcGF0aF9fJzogW119KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZS5fX25hbWVfXywgJ3BrZycpCisKKyAgICBkZWYgdGVzdF93YXJuX3doZW5fdXNpbmdfX19uYW1lX18oc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhJbXBvcnRXYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGYuaW1wb3J0X21vZHVsZSh7J19fbmFtZV9fJzogJ3BrZy5mYWtlJywgJ19fcGF0aF9fJzogW119KQogCiAgICAgZGVmIHRlc3RfTm9uZV9hc19fX3BhY2thZ2VfXyhzZWxmKToKICAgICAgICAgIyBbTm9uZV0KLSAgICAgICAgc2VsZi50ZXN0X3VzaW5nX19fbmFtZV9fKHBhY2thZ2VfYXNfTm9uZT1UcnVlKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIpCisgICAgICAgICAgICBtb2R1bGUgPSBzZWxmLmltcG9ydF9tb2R1bGUoeworICAgICAgICAgICAgICAgICdfX25hbWVfXyc6ICdwa2cuZmFrZScsICdfX3BhdGhfXyc6IFtdLCAnX19wYWNrYWdlX18nOiBOb25lIH0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3NwZWNfZmFsbGJhY2soc2VsZik6CisgICAgICAgICMgSWYgX19wYWNrYWdlX18gaXNuJ3QgZGVmaW5lZCwgZmFsbCBiYWNrIG9uIF9fc3BlY19fLnBhcmVudC4KKyAgICAgICAgbW9kdWxlID0gc2VsZi5pbXBvcnRfbW9kdWxlKHsnX19zcGVjX18nOiBGYWtlU3BlYygncGtnLmZha2UnKX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kdWxlLl9fbmFtZV9fLCAncGtnJykKKworICAgIGRlZiB0ZXN0X3dhcm5fd2hlbl9wYWNrYWdlX2FuZF9zcGVjX2Rpc2FncmVlKHNlbGYpOgorICAgICAgICAjIFJhaXNlIGFuIEltcG9ydFdhcm5pbmcgaWYgX19wYWNrYWdlX18gIT0gX19zcGVjX18ucGFyZW50LgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoSW1wb3J0V2FybmluZyk6CisgICAgICAgICAgICBzZWxmLmltcG9ydF9tb2R1bGUoeydfX3BhY2thZ2VfXyc6ICdwa2cuZmFrZScsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfX3NwZWNfXyc6IEZha2VTcGVjKCdwa2cuZmFrZWZha2UnKX0pCiAKICAgICBkZWYgdGVzdF9iYWRfX3BhY2thZ2VfXyhzZWxmKToKICAgICAgICAgZ2xvYmFscyA9IHsnX19wYWNrYWdlX18nOiAnPG5vdCByZWFsPid9CkBAIC03MCw2ICs5MCwxMSBAQAogICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCcnLCBnbG9iYWxzLCB7fSwgWydyZWxpbXBvcnQnXSwgMSkKIAogCitjbGFzcyBGYWtlU3BlYzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGFyZW50KToKKyAgICAgICAgc2VsZi5wYXJlbnQgPSBwYXJlbnQKKworCiBjbGFzcyBVc2luZ19fcGFja2FnZV9fUEVQMzAyKFVzaW5nX19wYWNrYWdlX18pOgogICAgIG1vY2tfbW9kdWxlcyA9IHV0aWwubW9ja19tb2R1bGVzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfYXBpLnB5CmluZGV4IDcwNjlkOWUuLmE3YmYyNzQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9hcGkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2FwaS5weQpAQCAtNDMsNiArNDMsMTAgQEAKICAgICAiIiJUZXN0IEFQSS1zcGVjaWZpYyBkZXRhaWxzIGZvciBfX2ltcG9ydF9fIChlLmcuIHJhaXNpbmcgdGhlIHJpZ2h0CiAgICAgZXhjZXB0aW9uIHdoZW4gcGFzc2luZyBpbiBhbiBpbnQgZm9yIHRoZSBtb2R1bGUgbmFtZSkuIiIiCiAKKyAgICBkZWYgdGVzdF9yYWlzZXNfTW9kdWxlTm90Rm91bmRFcnJvcihzZWxmKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhNb2R1bGVOb3RGb3VuZEVycm9yKToKKyAgICAgICAgICAgIHV0aWwuaW1wb3J0X2ltcG9ydGxpYignc29tZSBtb2R1bGUgdGhhdCBkb2VzIG5vdCBleGlzdCcpCisKICAgICBkZWYgdGVzdF9uYW1lX3JlcXVpcmVzX3JwYXJpdGlvbihzZWxmKToKICAgICAgICAgIyBSYWlzZSBUeXBlRXJyb3IgaWYgYSBub24tc3RyaW5nIGlzIHBhc3NlZCBpbiBmb3IgdGhlIG1vZHVsZSBuYW1lLgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfZnJvbWxpc3QucHkKaW5kZXggODA0NTQ2NS4uMTQ2NDAwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X2Zyb21saXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9mcm9tbGlzdC5weQpAQCAtNzMsMTYgKzczLDE2IEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnbW9kdWxlJykpCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUubW9kdWxlLl9fbmFtZV9fLCAncGtnLm1vZHVsZScpCiAKLSAgICBkZWYgdGVzdF9tb2R1bGVfZnJvbV9wYWNrYWdlX3RyaWdnZXJzX0ltcG9ydEVycm9yKHNlbGYpOgotICAgICAgICAjIElmIGEgc3VibW9kdWxlIGNhdXNlcyBhbiBJbXBvcnRFcnJvciBiZWNhdXNlIGl0IHRyaWVzIHRvIGltcG9ydAotICAgICAgICAjIGEgbW9kdWxlIHdoaWNoIGRvZXNuJ3QgZXhpc3QsIHRoYXQgc2hvdWxkIGxldCB0aGUgSW1wb3J0RXJyb3IKLSAgICAgICAgIyBwcm9wYWdhdGUuCisgICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fcGFja2FnZV90cmlnZ2Vyc19Nb2R1bGVOb3RGb3VuZEVycm9yKHNlbGYpOgorICAgICAgICAjIElmIGEgc3VibW9kdWxlIGNhdXNlcyBhbiBNb2R1bGVOb3RGb3VuZEVycm9yIGJlY2F1c2UgaXQgdHJpZXMKKyAgICAgICAgIyB0byBpbXBvcnQgYSBtb2R1bGUgd2hpY2ggZG9lc24ndCBleGlzdCwgdGhhdCBzaG91bGQgbGV0IHRoZQorICAgICAgICAjIE1vZHVsZU5vdEZvdW5kRXJyb3IgcHJvcGFnYXRlLgogICAgICAgICBkZWYgbW9kdWxlX2NvZGUoKToKICAgICAgICAgICAgIGltcG9ydCBpX2RvX25vdF9leGlzdAogICAgICAgICB3aXRoIHV0aWwubW9ja19tb2R1bGVzKCdwa2cuX19pbml0X18nLCAncGtnLm1vZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlX2NvZGU9eydwa2cubW9kJzogbW9kdWxlX2NvZGV9KSBhcyBpbXBvcnRlcjoKICAgICAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUobWV0YV9wYXRoPVtpbXBvcnRlcl0pOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpIGFzIGV4YzoKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE1vZHVsZU5vdEZvdW5kRXJyb3IpIGFzIGV4YzoKICAgICAgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdwa2cnLCBmcm9tbGlzdD1bJ21vZCddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2lfZG9fbm90X2V4aXN0JywgZXhjLmV4Y2VwdGlvbi5uYW1lKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGFja2FnZXMucHkKaW5kZXggMzc1NWI4NC4uMjQzOTYwNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhY2thZ2VzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL2ltcG9ydF8vdGVzdF9wYWNrYWdlcy5weQpAQCAtMSw3ICsxLDYgQEAKIGZyb20gLi4gaW1wb3J0IHV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IGltcG9ydGxpYgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3BhdGgucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQppbmRleCBiMzJhODc2Li43YWEyNmIwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcGF0aC5weQpAQCAtMTYsMTEgKzE2LDE0IEBACiAKICAgICAiIiJUZXN0cyBmb3IgUGF0aEZpbmRlci4iIiIKIAorICAgIGZpbmQgPSBOb25lCisgICAgY2hlY2tfZm91bmQgPSBOb25lCisKICAgICBkZWYgdGVzdF9mYWlsdXJlKHNlbGYpOgogICAgICAgICAjIFRlc3QgTm9uZSByZXR1cm5lZCB1cG9uIG5vdCBmaW5kaW5nIGEgc3VpdGFibGUgbG9hZGVyLgogICAgICAgICBtb2R1bGUgPSAnPHRlc3QgbW9kdWxlPicKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZSgpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKG1vZHVsZSkpCiAKICAgICBkZWYgdGVzdF9zeXNfcGF0aChzZWxmKToKICAgICAgICAgIyBUZXN0IHRoYXQgc3lzLnBhdGggaXMgdXNlZCB3aGVuICdwYXRoJyBpcyBOb25lLgpAQCAtMzAsOCArMzMsOCBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzKGxvYWRlciwgaW1wb3J0ZXIpCisgICAgICAgICAgICBmb3VuZCA9IHNlbGYuZmluZChtb2R1bGUpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2ZvdW5kKGZvdW5kLCBpbXBvcnRlcikKIAogICAgIGRlZiB0ZXN0X3BhdGgoc2VsZik6CiAgICAgICAgICMgVGVzdCB0aGF0ICdwYXRoJyBpcyB1c2VkIHdoZW4gc2V0LgpAQCAtNDAsOCArNDMsOCBAQAogICAgICAgICBwYXRoID0gJzx0ZXN0IHBhdGg+JwogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSwgW3BhdGhdKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9saXN0KHNlbGYpOgogICAgICAgICAjIEFuIGVtcHR5IGxpc3Qgc2hvdWxkIG5vdCBjb3VudCBhcyBhc2tpbmcgZm9yIHN5cy5wYXRoLgpAQCAtNTAsNyArNTMsNyBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgd2l0aCB1dGlsLmltcG9ydF9zdGF0ZShwYXRoX2ltcG9ydGVyX2NhY2hlPXtwYXRoOiBpbXBvcnRlcn0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aD1bcGF0aF0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnbW9kdWxlJywgW10pKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5maW5kKCdtb2R1bGUnLCBbXSkpCiAKICAgICBkZWYgdGVzdF9wYXRoX2hvb2tzKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBzeXMucGF0aF9ob29rcyBpcyB1c2VkLgpAQCAtNjAsOCArNjMsOCBAQAogICAgICAgICBpbXBvcnRlciA9IHV0aWwubW9ja19zcGVjKG1vZHVsZSkKICAgICAgICAgaG9vayA9IHV0aWwubW9ja19wYXRoX2hvb2socGF0aCwgaW1wb3J0ZXI9aW1wb3J0ZXIpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aF9ob29rcz1baG9va10pOgotICAgICAgICAgICAgbG9hZGVyID0gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZShtb2R1bGUsIFtwYXRoXSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMobG9hZGVyLCBpbXBvcnRlcikKKyAgICAgICAgICAgIGZvdW5kID0gc2VsZi5maW5kKG1vZHVsZSwgW3BhdGhdKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKHBhdGgsIHN5cy5wYXRoX2ltcG9ydGVyX2NhY2hlKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoXSwgaW1wb3J0ZXIpCiAKQEAgLTczLDcgKzc2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoPVtwYXRoX2VudHJ5XSk6CiAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKHJlY29yZD1UcnVlKSBhcyB3OgogICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignYWx3YXlzJykKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLm1hY2hpbmVyeS5QYXRoRmluZGVyLmZpbmRfbW9kdWxlKCdvcycpKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZmluZCgnb3MnKSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzeXMucGF0aF9pbXBvcnRlcl9jYWNoZVtwYXRoX2VudHJ5XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbih3KSwgMSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyh3Wy0xXS5jYXRlZ29yeSwgSW1wb3J0V2FybmluZykpCkBAIC04NSw4ICs4OCw4IEBACiAgICAgICAgIGltcG9ydGVyID0gdXRpbC5tb2NrX3NwZWMobW9kdWxlKQogICAgICAgICBob29rID0gdXRpbC5tb2NrX3BhdGhfaG9vayhvcy5nZXRjd2QoKSwgaW1wb3J0ZXI9aW1wb3J0ZXIpCiAgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bcGF0aF0sIHBhdGhfaG9va3M9W2hvb2tdKToKLSAgICAgICAgICAgIGxvYWRlciA9IHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9tb2R1bGUobW9kdWxlKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhsb2FkZXIsIGltcG9ydGVyKQorICAgICAgICAgICAgZm91bmQgPSBzZWxmLmZpbmQobW9kdWxlKQorICAgICAgICAgICAgc2VsZi5jaGVja19mb3VuZChmb3VuZCwgaW1wb3J0ZXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG9zLmdldGN3ZCgpLCBzeXMucGF0aF9pbXBvcnRlcl9jYWNoZSkKIAogICAgIGRlZiB0ZXN0X05vbmVfb25fc3lzX3BhdGgoc2VsZik6CkBAIC0xODIsMTUgKzE4NSw1MCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ3doYXRldmVyJykpCiAKIAorY2xhc3MgRmluZE1vZHVsZVRlc3RzKEZpbmRlclRlc3RzKToKKyAgICBkZWYgZmluZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgqYXJncywgKiprd2FyZ3MpCisgICAgZGVmIGNoZWNrX2ZvdW5kKHNlbGYsIGZvdW5kLCBpbXBvcnRlcik6CisgICAgICAgIHNlbGYuYXNzZXJ0SXMoZm91bmQsIGltcG9ydGVyKQogCiAKLShGcm96ZW5fRmluZGVyVGVzdHMsCi0gU291cmNlX0ZpbmRlclRlc3RzCi0gKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRlclRlc3RzLCBpbXBvcnRsaWI9aW1wb3J0bGliLCBtYWNoaW5lcnk9bWFjaGluZXJ5KQorKEZyb3plbl9GaW5kTW9kdWxlVGVzdHMsCisgU291cmNlX0ZpbmRNb2R1bGVUZXN0cworKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRNb2R1bGVUZXN0cywgaW1wb3J0bGliPWltcG9ydGxpYiwgbWFjaGluZXJ5PW1hY2hpbmVyeSkKKworCitjbGFzcyBGaW5kU3BlY1Rlc3RzKEZpbmRlclRlc3RzKToKKyAgICBkZWYgZmluZChzZWxmLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoKmFyZ3MsICoqa3dhcmdzKQorICAgIGRlZiBjaGVja19mb3VuZChzZWxmLCBmb3VuZCwgaW1wb3J0ZXIpOgorICAgICAgICBzZWxmLmFzc2VydElzKGZvdW5kLmxvYWRlciwgaW1wb3J0ZXIpCisKKworKEZyb3plbl9GaW5kU3BlY1Rlc3RzLAorIFNvdXJjZV9GaW5kU3BlY1Rlc3RzCisgKSA9IHV0aWwudGVzdF9ib3RoKEZpbmRTcGVjVGVzdHMsIGltcG9ydGxpYj1pbXBvcnRsaWIsIG1hY2hpbmVyeT1tYWNoaW5lcnkpCiAKIAogY2xhc3MgUGF0aEVudHJ5RmluZGVyVGVzdHM6CiAKKyAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9mYWlsaW5nX2ZpbmRfc3BlYyhzZWxmKToKKyAgICAgICAgIyBQYXRoRW50cnlGaW5kZXIgd2l0aCBmaW5kX21vZHVsZSgpIGRlZmluZWQgc2hvdWxkIHdvcmsuCisgICAgICAgICMgSXNzdWUgIzIwNzYzLgorICAgICAgICBjbGFzcyBGaW5kZXI6CisgICAgICAgICAgICBwYXRoX2xvY2F0aW9uID0gJ3Rlc3RfZmluZGVyX3dpdGhfZmluZF9tb2R1bGUnCisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgaWYgcGF0aCAhPSBzZWxmLnBhdGhfbG9jYXRpb246CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEltcG9ydEVycm9yCisKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmaW5kX21vZHVsZShmdWxsbmFtZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworCisgICAgICAgIHdpdGggdXRpbC5pbXBvcnRfc3RhdGUocGF0aD1bRmluZGVyLnBhdGhfbG9jYXRpb25dK3N5cy5wYXRoWzpdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhfaG9va3M9W0ZpbmRlcl0pOgorICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX3NwZWMoJ2ltcG9ydGxpYicpCisKICAgICBkZWYgdGVzdF9maW5kZXJfd2l0aF9mYWlsaW5nX2ZpbmRfbW9kdWxlKHNlbGYpOgogICAgICAgICAjIFBhdGhFbnRyeUZpbmRlciB3aXRoIGZpbmRfbW9kdWxlKCkgZGVmaW5lZCBzaG91bGQgd29yay4KICAgICAgICAgIyBJc3N1ZSAjMjA3NjMuCkBAIC0yMDcsNyArMjQ1LDcgQEAKIAogICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKHBhdGg9W0ZpbmRlci5wYXRoX2xvY2F0aW9uXStzeXMucGF0aFs6XSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoX2hvb2tzPVtGaW5kZXJdKToKLSAgICAgICAgICAgIHNlbGYubWFjaGluZXJ5LlBhdGhGaW5kZXIuZmluZF9zcGVjKCdpbXBvcnRsaWInKQorICAgICAgICAgICAgc2VsZi5tYWNoaW5lcnkuUGF0aEZpbmRlci5maW5kX21vZHVsZSgnaW1wb3J0bGliJykKIAogCiAoRnJvemVuX1BFRlRlc3RzLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvaW1wb3J0Xy90ZXN0X3JlbGF0aXZlX2ltcG9ydHMucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQppbmRleCAzYmI4MTlmLi44YTk1YTMyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9pbXBvcnRfL3Rlc3RfcmVsYXRpdmVfaW1wb3J0cy5weQpAQCAtMSw3ICsxLDggQEAKICIiIlRlc3QgcmVsYXRpdmUgaW1wb3J0cyAoUEVQIDMyOCkuIiIiCiBmcm9tIC4uIGltcG9ydCB1dGlsCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCB3YXJuaW5ncworCiAKIGNsYXNzIFJlbGF0aXZlSW1wb3J0czoKIApAQCAtNjUsOSArNjYsMTEgQEAKICAgICAgICAgICAgICAgICB1bmNhY2hlX25hbWVzLmFwcGVuZChuYW1lWzotbGVuKCcuX19pbml0X18nKV0pCiAgICAgICAgIHdpdGggdXRpbC5tb2NrX3NwZWMoKmNyZWF0ZSkgYXMgaW1wb3J0ZXI6CiAgICAgICAgICAgICB3aXRoIHV0aWwuaW1wb3J0X3N0YXRlKG1ldGFfcGF0aD1baW1wb3J0ZXJdKToKLSAgICAgICAgICAgICAgICBmb3IgZ2xvYmFsXyBpbiBnbG9iYWxzXzoKLSAgICAgICAgICAgICAgICAgICAgd2l0aCB1dGlsLnVuY2FjaGUoKnVuY2FjaGVfbmFtZXMpOgotICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZ2xvYmFsXykKKyAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKKyAgICAgICAgICAgICAgICAgICAgZm9yIGdsb2JhbF8gaW4gZ2xvYmFsc186CisgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIHV0aWwudW5jYWNoZSgqdW5jYWNoZV9uYW1lcyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGJhY2soZ2xvYmFsXykKIAogCiAgICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fbW9kdWxlKHNlbGYpOgpAQCAtMjA0LDExICsyMDcsMTggQEAKIAogICAgIGRlZiB0ZXN0X3JlbGF0aXZlX2ltcG9ydF9ub19nbG9iYWxzKHNlbGYpOgogICAgICAgICAjIE5vIGdsb2JhbHMgZm9yIGEgcmVsYXRpdmUgaW1wb3J0IGlzIGFuIGVycm9yLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEtleUVycm9yKToKLSAgICAgICAgICAgIHNlbGYuX19pbXBvcnRfXygnc3lzJywgbGV2ZWw9MSkKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiKQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhLZXlFcnJvcik6CisgICAgICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdzeXMnLCBsZXZlbD0xKQorCisgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX3BhY2thZ2Uoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgc2VsZi5fX2ltcG9ydF9fKCdhJywgeydfX3BhY2thZ2VfXyc6ICcnLCAnX19zcGVjX18nOiBOb25lfSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD0xKQogCiAgICAgZGVmIHRlc3RfcmVsYXRpdmVfaW1wb3J0X25vX3BhY2thZ2VfZXhpc3RzX2Fic29sdXRlKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUVycm9yKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBzZWxmLl9faW1wb3J0X18oJ3N5cycsIHsnX19wYWNrYWdlX18nOiAnJywgJ19fc3BlY19fJzogTm9uZX0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWw9MSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvcmVncnRlc3QucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTViZTExZi4uMDAwMDAwMAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9yZWdydGVzdC5weQorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLSIiIlJ1biBQeXRob24ncyBzdGFuZGFyZCB0ZXN0IHN1aXRlIHVzaW5nIGltcG9ydGxpYi5fX2ltcG9ydF9fLgotCi1UZXN0cyBrbm93biB0byBmYWlsIGJlY2F1c2Ugb2YgYXNzdW1wdGlvbnMgdGhhdCBpbXBvcnRsaWIgKHByb3Blcmx5KQotaW52YWxpZGF0ZXMgYXJlIGF1dG9tYXRpY2FsbHkgc2tpcHBlZCBpZiB0aGUgZW50aXJlIHRlc3Qgc3VpdGUgaXMgcnVuLgotT3RoZXJ3aXNlIGFsbCBjb21tYW5kLWxpbmUgb3B0aW9ucyB2YWxpZCBmb3IgdGVzdC5yZWdydGVzdCBhcmUgYWxzbyB2YWxpZCBmb3IKLXRoaXMgc2NyaXB0LgotCi0iIiIKLWltcG9ydCBpbXBvcnRsaWIKLWltcG9ydCBzeXMKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QKLQotaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKLSAgICBfX2J1aWx0aW5zX18uX19pbXBvcnRfXyA9IGltcG9ydGxpYi5fX2ltcG9ydF9fCi0gICAgc3lzLnBhdGhfaW1wb3J0ZXJfY2FjaGUuY2xlYXIoKQotCi0gICAgcmVncnRlc3QubWFpbihxdWlldD1UcnVlLCB2ZXJib3NlMj1UcnVlKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X2Nhc2Vfc2Vuc2l0aXZpdHkucHkKaW5kZXggMzRiODZjZC4uMTJjZTBjYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfY2FzZV9zZW5zaXRpdml0eS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9jYXNlX3NlbnNpdGl2aXR5LnB5CkBAIC01LDcgKzUsNiBAQAogbWFjaGluZXJ5ID0gdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIubWFjaGluZXJ5JykKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQgYXMgdGVzdF9zdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfZmlsZV9sb2FkZXIucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQppbmRleCA3M2Y0YzYyLi5hMTUxMTQ5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9maWxlX2xvYWRlci5weQpAQCAtMjE3LDcgKzIxNyw3IEBACiAgICAgICAgICAgICAjIFBFUCAzMDIKICAgICAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2lnbm9yZScsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgICAgICBtb2QgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykgIyBYWFgKKyAgICAgICAgICAgICAgICBtb2QgPSBsb2FkZXIubG9hZF9tb2R1bGUoJ190ZW1wJykKICAgICAgICAgICAgICMgU2FuaXR5IGNoZWNrcy4KICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW9kLl9fY2FjaGVkX18sIGNvbXBpbGVkKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2QueCwgNSkKQEAgLTI0NSwxMiArMjQ1LDcgQEAKIGNsYXNzIEJhZEJ5dGVjb2RlVGVzdDoKIAogICAgIGRlZiBpbXBvcnRfKHNlbGYsIGZpbGUsIG1vZHVsZV9uYW1lKToKLSAgICAgICAgbG9hZGVyID0gc2VsZi5sb2FkZXIobW9kdWxlX25hbWUsIGZpbGUpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgIyBYWFggQ2hhbmdlIHRvIHVzZSBleGVjX21vZHVsZSgpLgotICAgICAgICAgICAgbW9kdWxlID0gbG9hZGVyLmxvYWRfbW9kdWxlKG1vZHVsZV9uYW1lKQotICAgICAgICBzZWxmLmFzc2VydEluKG1vZHVsZV9uYW1lLCBzeXMubW9kdWxlcykKKyAgICAgICAgcmFpc2UgTm90SW1wbGVtZW50ZWRFcnJvcgogCiAgICAgZGVmIG1hbmlwdWxhdGVfYnl0ZWNvZGUoc2VsZiwgbmFtZSwgbWFwcGluZywgbWFuaXB1bGF0b3IsICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsX3NvdXJjZT1GYWxzZSk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9wYXRoX2hvb2sucHkKaW5kZXggZTZhMjQxNS4uNzk1ZDQzNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3RfcGF0aF9ob29rLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3BhdGhfaG9vay5weQpAQCAtMTYsMTAgKzE2LDE5IEBACiAgICAgZGVmIHRlc3Rfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKG1hcHBpbmdbJy5yb290J10pLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZmluZF9zcGVjJykpCisKKyAgICBkZWYgdGVzdF9zdWNjZXNzX2xlZ2FjeShzZWxmKToKKyAgICAgICAgd2l0aCB1dGlsLmNyZWF0ZV9tb2R1bGVzKCdkdW1teScpIGFzIG1hcHBpbmc6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKG1hcHBpbmdbJy5yb290J10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZpbmRfbW9kdWxlJykpCiAKICAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgVGhlIGVtcHR5IHN0cmluZyByZXByZXNlbnRzIHRoZSBjd2QuCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKHNlbGYucGF0aF9ob29rKCkoJycpLCAnZmluZF9zcGVjJykpCisKKyAgICBkZWYgdGVzdF9lbXB0eV9zdHJpbmdfbGVnYWN5KHNlbGYpOgorICAgICAgICAjIFRoZSBlbXB0eSBzdHJpbmcgcmVwcmVzZW50cyB0aGUgY3dkLgogICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihzZWxmLnBhdGhfaG9vaygpKCcnKSwgJ2ZpbmRfbW9kdWxlJykpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvc291cmNlL3Rlc3Rfc291cmNlX2VuY29kaW5nLnB5CmluZGV4IDFlMDc3MWIuLjk4MDg1NWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3NvdXJjZS90ZXN0X3NvdXJjZV9lbmNvZGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi9zb3VyY2UvdGVzdF9zb3VyY2VfZW5jb2RpbmcucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCByZQotaW1wb3J0IHN5cwogaW1wb3J0IHR5cGVzCiAjIEJlY2F1c2Ugc3lzLnBhdGggZ2V0cyBlc3NlbnRpYWxseSBibGFua2VkLCBuZWVkIHRvIGhhdmUgdW5pY29kZWRhdGEgYWxyZWFkeQogIyBpbXBvcnRlZCBmb3IgdGhlIHBhcnNlciB0byB1c2UuCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FiYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CmluZGV4IGQ0YmY5MTUuLmM4NjI0ODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfYWJjLnB5CkBAIC0yMDcsNiArMjA3LDEwIEBACiAKICAgICBTUExJVCA9IG1ha2VfYWJjX3N1YmNsYXNzZXMoTG9hZGVyKQogCisgICAgZGVmIHRlc3RfY3JlYXRlX21vZHVsZShzZWxmKToKKyAgICAgICAgc3BlYyA9ICdhIHNwZWMnCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuaW5zLmNyZWF0ZV9tb2R1bGUoc3BlYykpCisKICAgICBkZWYgdGVzdF9sb2FkX21vZHVsZShzZWxmKToKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CiAgICAgICAgICAgICBzZWxmLmlucy5sb2FkX21vZHVsZSgnc29tZXRoaW5nJykKQEAgLTUxOSw2ICs1MjMsMTIgQEAKICAgICAgICAgc3VwcG9ydC51bmxvYWQoc2VsZi5tb2R1bGVfbmFtZSkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5sb2FkLCBzZWxmLm1vZHVsZV9uYW1lKQogCisgICAgZGVmIGxvYWQoc2VsZiwgbG9hZGVyKToKKyAgICAgICAgc3BlYyA9IHNlbGYudXRpbC5zcGVjX2Zyb21fbG9hZGVyKHNlbGYubW9kdWxlX25hbWUsIGxvYWRlcikKKyAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgorICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCdpZ25vcmUnLCBEZXByZWNhdGlvbldhcm5pbmcpCisgICAgICAgICAgICByZXR1cm4gc2VsZi5pbml0Ll9ib290c3RyYXAuX2xvYWRfdW5sb2NrZWQoc3BlYykKKwogICAgIGRlZiBtb2NrX2dldF9jb2RlKHNlbGYpOgogICAgICAgICByZXR1cm4gbW9jay5wYXRjaC5vYmplY3Qoc2VsZi5JbnNwZWN0TG9hZGVyU3ViY2xhc3MsICdnZXRfY29kZScpCiAKQEAgLTUyOCw5ICs1MzgsNyBAQAogICAgICAgICAgICAgbW9ja2VkX2dldF9jb2RlLnNpZGVfZWZmZWN0ID0gSW1wb3J0RXJyb3IKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgICAgIGxvYWRlciA9IHNlbGYuSW5zcGVjdExvYWRlclN1YmNsYXNzKCkKLSAgICAgICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcignaWdub3JlJywgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgICAgICAgICBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvYWQobG9hZGVyKQogCiAgICAgZGVmIHRlc3RfZ2V0X2NvZGVfTm9uZShzZWxmKToKICAgICAgICAgIyBJZiBnZXRfY29kZSgpIHJldHVybnMgTm9uZSwgcmFpc2UgSW1wb3J0RXJyb3IuCkBAIC01MzgsNyArNTQ2LDcgQEAKICAgICAgICAgICAgIG1vY2tlZF9nZXRfY29kZS5yZXR1cm5fdmFsdWUgPSBOb25lCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEltcG9ydEVycm9yKToKICAgICAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcygpCi0gICAgICAgICAgICAgICAgbG9hZGVyLmxvYWRfbW9kdWxlKHNlbGYubW9kdWxlX25hbWUpCisgICAgICAgICAgICAgICAgc2VsZi5sb2FkKGxvYWRlcikKIAogICAgIGRlZiB0ZXN0X21vZHVsZV9yZXR1cm5lZChzZWxmKToKICAgICAgICAgIyBUaGUgbG9hZGVkIG1vZHVsZSBzaG91bGQgYmUgcmV0dXJuZWQuCkBAIC01NDYsMTQgKzU1NCwxNiBAQAogICAgICAgICB3aXRoIHNlbGYubW9ja19nZXRfY29kZSgpIGFzIG1vY2tlZF9nZXRfY29kZToKICAgICAgICAgICAgIG1vY2tlZF9nZXRfY29kZS5yZXR1cm5fdmFsdWUgPSBjb2RlCiAgICAgICAgICAgICBsb2FkZXIgPSBzZWxmLkluc3BlY3RMb2FkZXJTdWJjbGFzcygpCi0gICAgICAgICAgICBtb2R1bGUgPSBsb2FkZXIubG9hZF9tb2R1bGUoc2VsZi5tb2R1bGVfbmFtZSkKKyAgICAgICAgICAgIG1vZHVsZSA9IHNlbGYubG9hZChsb2FkZXIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1vZHVsZSwgc3lzLm1vZHVsZXNbc2VsZi5tb2R1bGVfbmFtZV0pCiAKIAogKEZyb3plbl9JTExvYWRNb2R1bGVUZXN0cywKICBTb3VyY2VfSUxMb2FkTW9kdWxlVGVzdHMKICApID0gdGVzdF91dGlsLnRlc3RfYm90aChJbnNwZWN0TG9hZGVyTG9hZE1vZHVsZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgIEluc3BlY3RMb2FkZXJTdWJjbGFzcz1TUExJVF9JTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBJbnNwZWN0TG9hZGVyU3ViY2xhc3M9U1BMSVRfSUwsCisgICAgICAgICAgICAgICAgICAgICAgICAgaW5pdD1pbml0LAorICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWw9dXRpbCkKIAogCiAjIyMjIyBFeGVjdXRpb25Mb2FkZXIgY29uY3JldGUgbWV0aG9kcyAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9hcGkucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQppbmRleCA2YmMzYzU2Li5iMGE5NGFhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2FwaS5weQpAQCAtOTksOSArOTksNyBAQAogCiBjbGFzcyBGaW5kTG9hZGVyVGVzdHM6CiAKLSAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKLSAgICAgICAgQHN0YXRpY21ldGhvZAotICAgICAgICBkZWYgZmluZF9tb2R1bGUobmFtZSwgcGF0aD1Ob25lKTogcmV0dXJuIG5hbWUsIHBhdGgKKyAgICBGYWtlTWV0YUZpbmRlciA9IE5vbmUKIAogICAgIGRlZiB0ZXN0X3N5c19tb2R1bGVzKHNlbGYpOgogICAgICAgICAjIElmIGEgbW9kdWxlIHdpdGggX19sb2FkZXJfXyBpcyBpbiBzeXMubW9kdWxlcywgdGhlbiByZXR1cm4gaXQuCkBAIC0xNzEsOSArMTY5LDMwIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzZWxmLmluaXQuZmluZF9sb2FkZXIoJ25ldmVyZ29pbmd0b2ZpbmR0aGlzbW9kdWxlJykpCiAKIAotKEZyb3plbl9GaW5kTG9hZGVyVGVzdHMsCi0gU291cmNlX0ZpbmRMb2FkZXJUZXN0cwotICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJUZXN0cywgaW5pdD1pbml0KQorY2xhc3MgRmluZExvYWRlclBFUDQ1MVRlc3RzKEZpbmRMb2FkZXJUZXN0cyk6CisKKyAgICBjbGFzcyBGYWtlTWV0YUZpbmRlcjoKKyAgICAgICAgQHN0YXRpY21ldGhvZAorICAgICAgICBkZWYgZmluZF9zcGVjKG5hbWUsIHBhdGg9Tm9uZSwgdGFyZ2V0PU5vbmUpOgorICAgICAgICAgICAgcmV0dXJuIG1hY2hpbmVyeVsnU291cmNlJ10uTW9kdWxlU3BlYyhuYW1lLCAobmFtZSwgcGF0aCkpCisKKworKEZyb3plbl9GaW5kTG9hZGVyUEVQNDUxVGVzdHMsCisgU291cmNlX0ZpbmRMb2FkZXJQRVA0NTFUZXN0cworICkgPSB0ZXN0X3V0aWwudGVzdF9ib3RoKEZpbmRMb2FkZXJQRVA0NTFUZXN0cywgaW5pdD1pbml0KQorCisKK2NsYXNzIEZpbmRMb2FkZXJQRVAzMDJUZXN0cyhGaW5kTG9hZGVyVGVzdHMpOgorCisgICAgY2xhc3MgRmFrZU1ldGFGaW5kZXI6CisgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgZGVmIGZpbmRfbW9kdWxlKG5hbWUsIHBhdGg9Tm9uZSk6CisgICAgICAgICAgICByZXR1cm4gbmFtZSwgcGF0aAorCisKKyhGcm96ZW5fRmluZExvYWRlclBFUDMwMlRlc3RzLAorIFNvdXJjZV9GaW5kTG9hZGVyUEVQMzAyVGVzdHMKKyApID0gdGVzdF91dGlsLnRlc3RfYm90aChGaW5kTG9hZGVyUEVQMzAyVGVzdHMsIGluaXQ9aW5pdCkKIAogCiBjbGFzcyBSZWxvYWRUZXN0czoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbGF6eS5weQppbmRleCBjYzM4M2MyLi5mZmQ4ZGM2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xhenkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sYXp5LnB5CkBAIC02Niw2ICs2Niw4IEBACiAgICAgICAgIHNwZWMgPSB1dGlsLnNwZWNfZnJvbV9sb2FkZXIoVGVzdGluZ0ltcG9ydGVyLm1vZHVsZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHV0aWwuTGF6eUxvYWRlcihsb2FkZXIpKQogICAgICAgICBtb2R1bGUgPSBzcGVjLmxvYWRlci5jcmVhdGVfbW9kdWxlKHNwZWMpCisgICAgICAgIGlmIG1vZHVsZSBpcyBOb25lOgorICAgICAgICAgICAgbW9kdWxlID0gdHlwZXMuTW9kdWxlVHlwZShUZXN0aW5nSW1wb3J0ZXIubW9kdWxlX25hbWUpCiAgICAgICAgIG1vZHVsZS5fX3NwZWNfXyA9IHNwZWMKICAgICAgICAgbW9kdWxlLl9fbG9hZGVyX18gPSBzcGVjLmxvYWRlcgogICAgICAgICBzcGVjLmxvYWRlci5leGVjX21vZHVsZShtb2R1bGUpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9sb2Nrcy5weQppbmRleCBkZjBhZjEyLi5iMmFhZGZmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X2xvY2tzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbG9ja3MucHkKQEAgLTMsNyArMyw2IEBACiBpbml0ID0gdGVzdF91dGlsLmltcG9ydF9pbXBvcnRsaWIoJ2ltcG9ydGxpYicpCiAKIGltcG9ydCBzeXMKLWltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB3ZWFrcmVmCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X25hbWVzcGFjZV9wa2dzLnB5CmluZGV4IDY2Mzk2MTIuLmUzN2Q4YTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfbmFtZXNwYWNlX3BrZ3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9uYW1lc3BhY2VfcGtncy5weQpAQCAtMSwxMyArMSwxMCBAQAogaW1wb3J0IGNvbnRleHRsaWIKLWltcG9ydCBpbXBvcnRsaWIuYWJjCi1pbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgdHlwZXMKIGltcG9ydCB1bml0dGVzdAogCiBmcm9tIHRlc3QudGVzdF9pbXBvcnRsaWIgaW1wb3J0IHV0aWwKLWZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBydW5fdW5pdHRlc3QKIAogIyBuZWVkZWQgdGVzdHM6CiAjCkBAIC03MSw2ICs2OCw3IEBACiAgICAgICAgICMgVE9ETzogd2lsbCB3ZSBldmVyIHdhbnQgdG8gcGFzcyBleGNfaW5mbyB0byBfX2V4aXRfXz8KICAgICAgICAgc2VsZi5jdHguX19leGl0X18oTm9uZSwgTm9uZSwgTm9uZSkKIAorCiBjbGFzcyBTaW5nbGVOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKICAgICBwYXRocyA9IFsncG9ydGlvbjEnXQogCkBAIC04Nyw3ICs4NSw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVwcihmb28pLCAiPG1vZHVsZSAnZm9vJyAobmFtZXNwYWNlKT4iKQogCiAKLWNsYXNzIER5bmFtaWNQYXRoZU5hbWVzcGFjZVBhY2thZ2UoTmFtZXNwYWNlUGFja2FnZVRlc3QpOgorY2xhc3MgRHluYW1pY1BhdGhOYW1lc3BhY2VQYWNrYWdlKE5hbWVzcGFjZVBhY2thZ2VUZXN0KToKICAgICBwYXRocyA9IFsncG9ydGlvbjEnXQogCiAgICAgZGVmIHRlc3RfZHluYW1pY19wYXRoKHNlbGYpOgpAQCAtMjg5LDUgKzI4NywzNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFfdGVzdC5hdHRyLCAnaW4gbW9kdWxlJykKIAogCitjbGFzcyBSZWxvYWRUZXN0cyhOYW1lc3BhY2VQYWNrYWdlVGVzdCk6CisgICAgcGF0aHMgPSBbJ3BvcnRpb24xJ10KKworICAgIGRlZiB0ZXN0X3NpbXBsZV9wYWNrYWdlKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vLm9uZQorICAgICAgICBmb28gPSBpbXBvcnRsaWIucmVsb2FkKGZvbykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb28ub25lLmF0dHIsICdwb3J0aW9uMSBmb28gb25lJykKKworICAgIGRlZiB0ZXN0X2NhbnRfaW1wb3J0X290aGVyKHNlbGYpOgorICAgICAgICBpbXBvcnQgZm9vCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKyAgICAgICAgZm9vID0gaW1wb3J0bGliLnJlbG9hZChmb28pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgorICAgICAgICAgICAgaW1wb3J0IGZvby50d28KKworICAgIGRlZiB0ZXN0X2R5bmFtaWNfcGF0aChzZWxmKToKKyAgICAgICAgaW1wb3J0IGZvby5vbmUKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbXBvcnRFcnJvcik6CisgICAgICAgICAgICBpbXBvcnQgZm9vLnR3bworCisgICAgICAgICMgTm93IG1vZGlmeSBzeXMucGF0aCBhbmQgcmVsb2FkLgorICAgICAgICBzeXMucGF0aC5hcHBlbmQob3MucGF0aC5qb2luKHNlbGYucm9vdCwgJ3BvcnRpb24yJykpCisgICAgICAgIGZvbyA9IGltcG9ydGxpYi5yZWxvYWQoZm9vKQorCisgICAgICAgICMgQW5kIG1ha2Ugc3VyZSBmb28udHdvIGlzIG5vdyBpbXBvcnRhYmxlCisgICAgICAgIGltcG9ydCBmb28udHdvCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9vLnR3by5hdHRyLCAncG9ydGlvbjIgZm9vIHR3bycpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfc3BlYy5weQppbmRleCA4YjMzM2U4Li41YTE2YTAzIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3NwZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF9zcGVjLnB5CkBAIC01LDYgKzUsNyBAQAogdXRpbCA9IHRlc3RfdXRpbC5pbXBvcnRfaW1wb3J0bGliKCdpbXBvcnRsaWIudXRpbCcpCiAKIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgcGF0aGxpYgogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IENsZWFuSW1wb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKQEAgLTY1OSw2ICs2NjAsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLmNhY2hlZCwgc2VsZi5jYWNoZWQpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzcGVjLmhhc19sb2NhdGlvbikKIAorICAgIGRlZiB0ZXN0X3NwZWNfZnJvbV9maWxlX2xvY2F0aW9uX3BhdGhfbGlrZV9hcmcoc2VsZik6CisgICAgICAgIHNwZWMgPSBzZWxmLnV0aWwuc3BlY19mcm9tX2ZpbGVfbG9jYXRpb24oc2VsZi5uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGhsaWIuUHVyZVBhdGgoc2VsZi5wYXRoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzcGVjLm9yaWdpbiwgc2VsZi5wYXRoKQorCiAgICAgZGVmIHRlc3Rfc3BlY19mcm9tX2ZpbGVfbG9jYXRpb25fZGVmYXVsdF93aXRob3V0X2xvY2F0aW9uKHNlbGYpOgogICAgICAgICBzcGVjID0gc2VsZi51dGlsLnNwZWNfZnJvbV9maWxlX2xvY2F0aW9uKHNlbGYubmFtZSkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF91dGlsLnB5CmluZGV4IDQxY2EzMzMuLmQ2MTUzNzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3RfdXRpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3V0aWwucHkKQEAgLTUsNiArNSw3IEBACiBpbXBvcnRsaWJfdXRpbCA9IHV0aWwuaW1wb3J0X2ltcG9ydGxpYignaW1wb3J0bGliLnV0aWwnKQogCiBpbXBvcnQgb3MKK2ltcG9ydCBwYXRobGliCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTQ2LDE0ICs0Nyw4IEBACiAgICAgICAgICAgICBkZWYgZXhlY19tb2R1bGUoc2VsZiwgbW9kdWxlKToKICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIHNwZWMgPSBzZWxmLm1hY2hpbmVyeS5Nb2R1bGVTcGVjKCd0ZXN0JywgTG9hZGVyKCkpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MocmVjb3JkPVRydWUpIGFzIHc6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoJ2Fsd2F5cycpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW1wb3J0RXJyb3IpOgogICAgICAgICAgICAgbW9kdWxlID0gc2VsZi51dGlsLm1vZHVsZV9mcm9tX3NwZWMoc3BlYykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxLCBsZW4odykpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKHdbMF0uY2F0ZWdvcnksIERlcHJlY2F0aW9uV2FybmluZykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NyZWF0ZV9tb2R1bGUnLCBzdHIod1swXS5tZXNzYWdlKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZSwgdHlwZXMuTW9kdWxlVHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtb2R1bGUuX19uYW1lX18sIHNwZWMubmFtZSkKIAogICAgIGRlZiB0ZXN0X2NyZWF0ZV9tb2R1bGVfcmV0dXJuc19Ob25lKHNlbGYpOgogICAgICAgICBjbGFzcyBMb2FkZXIoc2VsZi5hYmMuTG9hZGVyKToKQEAgLTY3Nyw2ICs2NzIsMTUgQEAKICAgICAgICAgICAgICdcXGZvb1xcYmFyXFxiYXpcXF9fcHljYWNoZV9fXFxxdXgue30ucHljJy5mb3JtYXQoc2VsZi50YWcpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBub3QgYmUgTm9uZScpCisgICAgZGVmIHRlc3Rfc291cmNlX2Zyb21fY2FjaGVfcGF0aF9saWtlX2FyZyhzZWxmKToKKyAgICAgICAgcGF0aCA9IHBhdGhsaWIuUHVyZVBhdGgoJ2ZvbycsICdiYXInLCAnYmF6JywgJ3F1eC5weScpCisgICAgICAgIGV4cGVjdCA9IG9zLnBhdGguam9pbignZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3F1eC57fS5weWMnLmZvcm1hdChzZWxmLnRhZykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi51dGlsLmNhY2hlX2Zyb21fc291cmNlKHBhdGgsIG9wdGltaXphdGlvbj0nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0KQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJwogICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKICAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZShzZWxmKToKQEAgLTczOCw2ICs3NDIsMTUgQEAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKICAgICAgICAgICAgIHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKQogCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyBpcyBub3QgTm9uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgc3lzLmltcGxlbWVudGF0aW9uLmNhY2hlX3RhZyB0byBub3QgYmUgJworICAgICAgICAgICAgICAgICAgICAgICAgICdOb25lJykKKyAgICBkZWYgdGVzdF9zb3VyY2VfZnJvbV9jYWNoZV9wYXRoX2xpa2VfYXJnKHNlbGYpOgorICAgICAgICBwYXRoID0gcGF0aGxpYi5QdXJlUGF0aCgnZm9vJywgJ2JhcicsICdiYXonLCAnX19weWNhY2hlX18nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAncXV4Lnt9LnB5YycuZm9ybWF0KHNlbGYudGFnKSkKKyAgICAgICAgZXhwZWN0ID0gb3MucGF0aC5qb2luKCdmb28nLCAnYmFyJywgJ2JheicsICdxdXgucHknKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudXRpbC5zb3VyY2VfZnJvbV9jYWNoZShwYXRoKSwgZXhwZWN0KQorCiAKIChGcm96ZW5fUEVQMzE0N1Rlc3RzLAogIFNvdXJjZV9QRVAzMTQ3VGVzdHMKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weSBiL0xpYi90ZXN0L3Rlc3RfaW1wb3J0bGliL3Rlc3Rfd2luZG93cy5weQppbmRleCBjODkzYmNmLi4wMDViNjg1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2ltcG9ydGxpYi90ZXN0X3dpbmRvd3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbXBvcnRsaWIvdGVzdF93aW5kb3dzLnB5CkBAIC00MCw3ICs0MCw3IEBACiAgICAgZWxzZToKICAgICAgICAgcm9vdCA9IG1hY2hpbmVyeS5XaW5kb3dzUmVnaXN0cnlGaW5kZXIuUkVHSVNUUllfS0VZCiAgICAga2V5ID0gcm9vdC5mb3JtYXQoZnVsbG5hbWU9bmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICBzeXNfdmVyc2lvbj1zeXMudmVyc2lvbls6M10pCisgICAgICAgICAgICAgICAgICAgICAgc3lzX3ZlcnNpb249JyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdKQogICAgIHRyeToKICAgICAgICAgd2l0aCB0ZW1wX21vZHVsZShuYW1lLCAiYSA9IDEiKSBhcyBsb2NhdGlvbjoKICAgICAgICAgICAgIHN1YmtleSA9IENyZWF0ZUtleShIS0VZX0NVUlJFTlRfVVNFUiwga2V5KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnNwZWN0LnB5CmluZGV4IDY3MWUwNWEuLjk3NjM0ZTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfaW5zcGVjdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2luc3BlY3QucHkKQEAgLTMwLDYgKzMwLDcgQEAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogZnJvbSB0ZXN0IGltcG9ydCBpbnNwZWN0X2ZvZGRlciBhcyBtb2QKIGZyb20gdGVzdCBpbXBvcnQgaW5zcGVjdF9mb2RkZXIyIGFzIG1vZDIKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogCiBmcm9tIHRlc3QudGVzdF9pbXBvcnQgaW1wb3J0IF9yZWFkeV90b19pbXBvcnQKIApAQCAtMzgsNyArMzksNyBAQAogIyBpc21vZHVsZSwgaXNjbGFzcywgaXNtZXRob2QsIGlzZnVuY3Rpb24sIGlzdHJhY2ViYWNrLCBpc2ZyYW1lLCBpc2NvZGUsCiAjIGlzYnVpbHRpbiwgaXNyb3V0aW5lLCBpc2dlbmVyYXRvciwgaXNnZW5lcmF0b3JmdW5jdGlvbiwgZ2V0bWVtYmVycywKICMgZ2V0ZG9jLCBnZXRmaWxlLCBnZXRtb2R1bGUsIGdldHNvdXJjZWZpbGUsIGdldGNvbW1lbnRzLCBnZXRzb3VyY2UsCi0jIGdldGNsYXNzdHJlZSwgZ2V0YXJnc3BlYywgZ2V0YXJndmFsdWVzLCBmb3JtYXRhcmdzcGVjLCBmb3JtYXRhcmd2YWx1ZXMsCisjIGdldGNsYXNzdHJlZSwgZ2V0YXJndmFsdWVzLCBmb3JtYXRhcmdzcGVjLCBmb3JtYXRhcmd2YWx1ZXMsCiAjIGN1cnJlbnRmcmFtZSwgc3RhY2ssIHRyYWNlLCBpc2RhdGFkZXNjcmlwdG9yCiAKICMgTk9URTogVGhlcmUgYXJlIHNvbWUgYWRkaXRpb25hbCB0ZXN0cyByZWxhdGluZyB0byBpbnRlcmFjdGlvbiB3aXRoCkBAIC02NCw3ICs2NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2ZyYW1lLCBpbnNwZWN0LmlzZnVuY3Rpb24sIGluc3BlY3QuaXNtZXRob2QsCiAgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc21vZHVsZSwgaW5zcGVjdC5pc3RyYWNlYmFjaywKICAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzZ2VuZXJhdG9yLCBpbnNwZWN0LmlzZ2VuZXJhdG9yZnVuY3Rpb24sCi0gICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2Nvcm91dGluZSwgaW5zcGVjdC5pc2Nvcm91dGluZWZ1bmN0aW9uXSkKKyAgICAgICAgICAgICAgICAgICAgICBpbnNwZWN0LmlzY29yb3V0aW5lLCBpbnNwZWN0LmlzY29yb3V0aW5lZnVuY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgaW5zcGVjdC5pc2FzeW5jZ2VuLCBpbnNwZWN0LmlzYXN5bmNnZW5mdW5jdGlvbl0pCiAKICAgICBkZWYgaXN0ZXN0KHNlbGYsIHByZWRpY2F0ZSwgZXhwKToKICAgICAgICAgb2JqID0gZXZhbChleHApCkBAIC03Miw2ICs3NCw3IEBACiAKICAgICAgICAgZm9yIG90aGVyIGluIHNlbGYucHJlZGljYXRlcyAtIHNldChbcHJlZGljYXRlXSk6CiAgICAgICAgICAgICBpZiAocHJlZGljYXRlID09IGluc3BlY3QuaXNnZW5lcmF0b3JmdW5jdGlvbiBvciBcCisgICAgICAgICAgICAgICBwcmVkaWNhdGUgPT0gaW5zcGVjdC5pc2FzeW5jZ2VuZnVuY3Rpb24gb3IgXAogICAgICAgICAgICAgICAgcHJlZGljYXRlID09IGluc3BlY3QuaXNjb3JvdXRpbmVmdW5jdGlvbikgYW5kIFwKICAgICAgICAgICAgICAgIG90aGVyID09IGluc3BlY3QuaXNmdW5jdGlvbjoKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtODEsNiArODQsMTAgQEAKICAgICBmb3IgaSBpbiByYW5nZSgyKToKICAgICAgICAgeWllbGQgaQogCithc3luYyBkZWYgYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUoc2VsZik6CisgICAgYXN5bmMgZm9yIGkgaW4gcmFuZ2UoMik6CisgICAgICAgIHlpZWxkIGkKKwogYXN5bmMgZGVmIGNvcm91dGluZV9mdW5jdGlvbl9leGFtcGxlKHNlbGYpOgogICAgIHJldHVybiAnc3BhbScKIApAQCAtMTIxLDYgKzEyOCwxMCBAQAogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZGF0YWRlc2NyaXB0b3IsICdjb2xsZWN0aW9ucy5kZWZhdWx0ZGljdC5kZWZhdWx0X2ZhY3RvcnknKQogICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzZ2VuZXJhdG9yLCAnKHggZm9yIHggaW4gcmFuZ2UoMikpJykKICAgICAgICAgc2VsZi5pc3Rlc3QoaW5zcGVjdC5pc2dlbmVyYXRvcmZ1bmN0aW9uLCAnZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUnKQorICAgICAgICBzZWxmLmlzdGVzdChpbnNwZWN0LmlzYXN5bmNnZW4sCisgICAgICAgICAgICAgICAgICAgICdhc3luY19nZW5lcmF0b3JfZnVuY3Rpb25fZXhhbXBsZSgxKScpCisgICAgICAgIHNlbGYuaXN0ZXN0KGluc3BlY3QuaXNhc3luY2dlbmZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAnYXN5bmNfZ2VuZXJhdG9yX2Z1bmN0aW9uX2V4YW1wbGUnKQogCiAgICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKICAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIikKQEAgLTQwMCw3ICs0MTEsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShtb2Quc3BhbSkpLCBtb2RmaWxlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5vcm1jYXNlKGluc3BlY3QuZ2V0c291cmNlZmlsZShnaXQuYWJ1c2UpKSwgbW9kZmlsZSkKICAgICAgICAgZm4gPSAiX25vbl9leGlzdGluZ19maWxlbmFtZV91c2VkX2Zvcl9zb3VyY2VmaWxlX3Rlc3QucHkiCi0gICAgICAgIGNvID0gY29tcGlsZSgiTm9uZSIsIGZuLCAiZXhlYyIpCisgICAgICAgIGNvID0gY29tcGlsZSgieD0xIiwgZm4sICJleGVjIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnNwZWN0LmdldHNvdXJjZWZpbGUoY28pLCBOb25lKQogICAgICAgICBsaW5lY2FjaGUuY2FjaGVbY28uY29fZmlsZW5hbWVdID0gKDEsIE5vbmUsICJOb25lIiwgY28uY29fZmlsZW5hbWUpCiAgICAgICAgIHRyeToKQEAgLTI5MDIsNiArMjkxMywxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lzIG5vdCBhIHZhbGlkIHBhcmFtZXRlciBuYW1lJyk6CiAgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcignJCcsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCiAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaXMgbm90IGEgdmFsaWQgcGFyYW1ldGVyIG5hbWUnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCcuYScsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuVkFSX0tFWVdPUkQpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdjYW5ub3QgaGF2ZSBkZWZhdWx0IHZhbHVlcycpOgogICAgICAgICAgICAgaW5zcGVjdC5QYXJhbWV0ZXIoJ2EnLCBkZWZhdWx0PTQyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZD1pbnNwZWN0LlBhcmFtZXRlci5WQVJfS0VZV09SRCkKQEAgLTI5ODUsNiArMzAwMCwxNyBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnbmFtZSBtdXN0IGJlIGEgc3RyJyk6CiAgICAgICAgICAgICBpbnNwZWN0LlBhcmFtZXRlcihOb25lLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSkKIAorICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2ltcGxpY2l0KHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbXBsaWNpdCBhcmd1bWVudHMgbXVzdCBiZSBwYXNzZWQgaW4gYXMnKToKKyAgICAgICAgICAgIGluc3BlY3QuUGFyYW1ldGVyKCcuMCcsIGtpbmQ9aW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZKQorCisgICAgICAgIHBhcmFtID0gaW5zcGVjdC5QYXJhbWV0ZXIoCisgICAgICAgICAgICAnLjAnLCBraW5kPWluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXJhbS5raW5kLCBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyYW0ubmFtZSwgJ2ltcGxpY2l0MCcpCisKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfcGFyYW1ldGVyX2ltbXV0YWJpbGl0eShzZWxmKToKICAgICAgICAgcCA9IGluc3BlY3QuUGFyYW1ldGVyKCdzcGFtJywga2luZD1pbnNwZWN0LlBhcmFtZXRlci5LRVlXT1JEX09OTFkpCiAKQEAgLTMyMzMsNiArMzI1OSwxNyBAQAogICAgICAgICBiYSA9IHNpZy5iaW5kKGFyZ3M9MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiYS5hcmd1bWVudHMsIHsna3dhcmdzJzogeydhcmdzJzogMX19KQogCisgICAgQGNweXRob25fb25seQorICAgIGRlZiB0ZXN0X3NpZ25hdHVyZV9iaW5kX2ltcGxpY2l0X2FyZyhzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTk2MTE6IGdldGNhbGxhcmdzIHNob3VsZCB3b3JrIHdpdGggc2V0IGNvbXByZWhlbnNpb25zCisgICAgICAgIGRlZiBtYWtlX3NldCgpOgorICAgICAgICAgICAgcmV0dXJuIHt6ICogeiBmb3IgeiBpbiByYW5nZSg1KX0KKyAgICAgICAgc2V0Y29tcF9jb2RlID0gbWFrZV9zZXQuX19jb2RlX18uY29fY29uc3RzWzFdCisgICAgICAgIHNldGNvbXBfZnVuYyA9IHR5cGVzLkZ1bmN0aW9uVHlwZShzZXRjb21wX2NvZGUsIHt9KQorCisgICAgICAgIGl0ZXJhdG9yID0gaXRlcihyYW5nZSg1KSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNhbGwoc2V0Y29tcF9mdW5jLCBpdGVyYXRvciksIHswLCAxLCA0LCA5LCAxNn0pCisKIAogY2xhc3MgVGVzdEJvdW5kQXJndW1lbnRzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9zaWduYXR1cmVfYm91bmRfYXJndW1lbnRzX3VuaGFzaGFibGUoc2VsZik6CkBAIC0zNTQzLDE0ICszNTgwLDE0IEBACiAKICAgICBkZWYgdGVzdF9kZXRhaWxzKHNlbGYpOgogICAgICAgICBtb2R1bGUgPSBpbXBvcnRsaWIuaW1wb3J0X21vZHVsZSgndW5pdHRlc3QnKQotICAgICAgICByYywgb3V0LCBlcnIgPSBhc3NlcnRfcHl0aG9uX29rKCctbScsICdpbnNwZWN0JywKKyAgICAgICAgYXJncyA9IHN1cHBvcnQub3B0aW1fYXJnc19mcm9tX2ludGVycHJldGVyX2ZsYWdzKCkKKyAgICAgICAgcmMsIG91dCwgZXJyID0gYXNzZXJ0X3B5dGhvbl9vaygqYXJncywgJy1tJywgJ2luc3BlY3QnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bml0dGVzdCcsICctLWRldGFpbHMnKQogICAgICAgICBvdXRwdXQgPSBvdXQuZGVjb2RlKCkKICAgICAgICAgIyBKdXN0IGEgcXVpY2sgc2FuaXR5IGNoZWNrIG9uIHRoZSBvdXRwdXQKICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19uYW1lX18sIG91dHB1dCkKICAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19maWxlX18sIG91dHB1dCkKLSAgICAgICAgaWYgbm90IHN5cy5mbGFncy5vcHRpbWl6ZToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obW9kdWxlLl9fY2FjaGVkX18sIG91dHB1dCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihtb2R1bGUuX19jYWNoZWRfXywgb3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVyciwgYicnKQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaW50LnB5IGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKaW5kZXggYjY2YzVkNi4uMTRiYmQ2MSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pbnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pbnQucHkKQEAgLTIsNiArMiw4IEBACiAKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIHRlc3QudGVzdF9ncmFtbWFyIGltcG9ydCAoVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBJTlZBTElEX1VOREVSU0NPUkVfTElURVJBTFMpCiAKIEwgPSBbCiAgICAgICAgICgnMCcsIDApLApAQCAtMjEyLDYgKzIxNCwyNSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCgnMmJyNDVxYycsIDM1KSwgNDI5NDk2NzI5NykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoJzF6MTQxejUnLCAzNiksIDQyOTQ5NjcyOTcpCiAKKyAgICBkZWYgdGVzdF91bmRlcnNjb3JlcyhzZWxmKToKKyAgICAgICAgZm9yIGxpdCBpbiBWQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJy5lRWpKJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGxpdCwgMCksIGV2YWwobGl0KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KGxpdCwgMCksIGludChsaXQucmVwbGFjZSgnXycsICcnKSwgMCkpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgaWYgYW55KGNoIGluIGxpdCBmb3IgY2ggaW4gJy5lRWpKJyk6CisgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgbGl0LCAwKQorICAgICAgICAjIEFkZGl0aW9uYWwgdGVzdCBjYXNlcyB3aXRoIGJhc2VzICE9IDAsIG9ubHkgZm9yIHRoZSBjb25zdHJ1Y3RvcjoKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoIjFfMDAiLCAzKSwgOSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoIjBfMTAwIiksIDEwMCkgICMgbm90IHZhbGlkIGFzIGEgbGl0ZXJhbCEKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQoYiIxXzAwIiksIDEwMCkgICMgYnl0ZSB1bmRlcnNjb3JlCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIl8xMDAiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBpbnQsICIrXzEwMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgIjFfXzAwIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaW50LCAiMTAwXyIpCisKICAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKICAgICBkZWYgdGVzdF9zbWFsbF9pbnRzKHNlbGYpOgogICAgICAgICAjIEJ1ZyAjMzIzNjogUmV0dXJuIHNtYWxsIGxvbmdzIGZyb20gUHlMb25nX0Zyb21TdHJpbmcKQEAgLTQzMCwyMSArNDUxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGJhZF9pbnQgPSBCYWRJbnQyKCkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CiAgICAgICAgICAgICBuID0gaW50KGJhZF9pbnQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobiwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAKICAgICAgICAgYmFkX2ludCA9IFRydW5jUmV0dXJuc0JhZEludCgpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgogICAgICAgICAgICAgbiA9IGludChiYWRfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgaW50KQogCiAgICAgICAgIGdvb2RfaW50ID0gVHJ1bmNSZXR1cm5zSW50U3ViY2xhc3MoKQogICAgICAgICBuID0gaW50KGdvb2RfaW50KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG4sIDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyh0eXBlKG4pLCBpbnQpCiAgICAgICAgIG4gPSBJbnRTdWJjbGFzcyhnb29kX2ludCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuLCAxKQogICAgICAgICBzZWxmLmFzc2VydElzKHR5cGUobiksIEludFN1YmNsYXNzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pby5weSBiL0xpYi90ZXN0L3Rlc3RfaW8ucHkKaW5kZXggNTExMTg4Mi4uOGEyMTExYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9pby5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lvLnB5CkBAIC00OTYsNyArNDk2LDExIEBACiAgICAgZGVmIHRlc3Rfb3Blbl9oYW5kbGVzX05VTF9jaGFycyhzZWxmKToKICAgICAgICAgZm5fd2l0aF9OVUwgPSAnZm9vXDBiYXInCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgZm5fd2l0aF9OVUwsICd3JykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgc2VsZi5vcGVuLCBieXRlcyhmbl93aXRoX05VTCwgJ2FzY2lpJyksICd3JykKKworICAgICAgICBieXRlc19mbiA9IGJ5dGVzKGZuX3dpdGhfTlVMLCAnYXNjaWknKQorICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CisgICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHNlbGYub3BlbiwgYnl0ZXNfZm4sICd3JykKIAogICAgIGRlZiB0ZXN0X3Jhd19maWxlX2lvKHNlbGYpOgogICAgICAgICB3aXRoIHNlbGYub3BlbihzdXBwb3J0LlRFU1RGTiwgIndiIiwgYnVmZmVyaW5nPTApIGFzIGY6CkBAIC04NTYsNiArODYwLDMyIEBACiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRhdHRyKHN0cmVhbSwgbWV0aG9kKShidWZmZXIpLCA1KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnl0ZXMoYnVmZmVyKSwgYiIxMjM0NSIpCiAKKyAgICBkZWYgdGVzdF9mc3BhdGhfc3VwcG9ydChzZWxmKToKKyAgICAgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgcGF0aCk6CisgICAgICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorCisgICAgICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKyAgICAgICAgZGVmIGNoZWNrX3BhdGhfc3VjY2VlZHMocGF0aCk6CisgICAgICAgICAgICB3aXRoIHNlbGYub3BlbihwYXRoLCAidyIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiZWdnXG4iKQorCisgICAgICAgICAgICB3aXRoIHNlbGYub3BlbihwYXRoLCAiciIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgImVnZ1xuIikKKworICAgICAgICBjaGVja19wYXRoX3N1Y2NlZWRzKFBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKSkKKyAgICAgICAgY2hlY2tfcGF0aF9zdWNjZWVkcyhQYXRoTGlrZShzdXBwb3J0LlRFU1RGTi5lbmNvZGUoJ3V0Zi04JykpKQorCisgICAgICAgIGJhZF9wYXRoID0gUGF0aExpa2UoVHlwZUVycm9yKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBzZWxmLm9wZW4oYmFkX3BhdGgsICd3JykKKworICAgICAgICAjIGVuc3VyZSB0aGF0IHJlZmNvdW50aW5nIGlzIGNvcnJlY3Qgd2l0aCBzb21lIGVycm9yIGNvbmRpdGlvbnMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICdyZWFkL3dyaXRlL2FwcGVuZCBtb2RlJyk6CisgICAgICAgICAgICBzZWxmLm9wZW4oUGF0aExpa2Uoc3VwcG9ydC5URVNURk4pLCAncnd4YScpCisKIAogY2xhc3MgQ0lPVGVzdChJT1Rlc3QpOgogCkBAIC0xNzgyLDcgKzE4MTIsNyBAQAogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobWV0aG9kKToKICAgICAgICAgICAgICAgICBwYWlyID0gc2VsZi50cChzZWxmLkJ5dGVzSU8oYiJhYmNkZWYiKSwgc2VsZi5Nb2NrUmF3SU8oKSkKIAotICAgICAgICAgICAgICAgIGRhdGEgPSBieXRlc2xpa2UoNSkKKyAgICAgICAgICAgICAgICBkYXRhID0gYnl0ZXNsaWtlKGInXDAnICogNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGF0dHIocGFpciwgbWV0aG9kKShkYXRhKSwgNSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJ5dGVzKGRhdGEpLCBiImFiY2RlIikKIApAQCAtMzI0Niw4ICszMjc2LDcgQEAKIAogY2xhc3MgUHlUZXh0SU9XcmFwcGVyVGVzdChUZXh0SU9XcmFwcGVyVGVzdCk6CiAgICAgaW8gPSBweWlvCi0gICAgI3NodXRkb3duX2Vycm9yID0gIkxvb2t1cEVycm9yOiB1bmtub3duIGVuY29kaW5nOiBhc2NpaSIKLSAgICBzaHV0ZG93bl9lcnJvciA9ICJUeXBlRXJyb3I6ICdOb25lVHlwZScgb2JqZWN0IGlzIG5vdCBpdGVyYWJsZSIKKyAgICBzaHV0ZG93bl9lcnJvciA9ICJMb29rdXBFcnJvcjogdW5rbm93biBlbmNvZGluZzogYXNjaWkiCiAKIAogY2xhc3MgSW5jcmVtZW50YWxOZXdsaW5lRGVjb2RlclRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pcGFkZHJlc3MucHkgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQppbmRleCA5MWFlOGQ4Li4wZTM5NTE2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2lwYWRkcmVzcy5weQpAQCAtMTE5LDcgKzExOSw3IEBACiAKICAgICBkZWYgdGVzdF9iYWRfcGFja2VkX2xlbmd0aChzZWxmKToKICAgICAgICAgZGVmIGFzc2VydEJhZExlbmd0aChsZW5ndGgpOgotICAgICAgICAgICAgYWRkciA9IGJ5dGVzKGxlbmd0aCkKKyAgICAgICAgICAgIGFkZHIgPSBiJ1wwJyAqIGxlbmd0aAogICAgICAgICAgICAgbXNnID0gIiVyIChsZW4gJWQgIT0gNCkgaXMgbm90IHBlcm1pdHRlZCBhcyBhbiBJUHY0IGFkZHJlc3MiCiAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0QWRkcmVzc0Vycm9yKHJlLmVzY2FwZShtc2cgJSAoYWRkciwgbGVuZ3RoKSkpOgogICAgICAgICAgICAgICAgIHNlbGYuZmFjdG9yeShhZGRyKQpAQCAtMTM5LDExICsxMzksMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbCgzMjMyMjM1NTIxLCAiOjpjMGE4OjEiKQogCiAgICAgZGVmIHRlc3RfcGFja2VkKHNlbGYpOgotICAgICAgICBhZGRyID0gYnl0ZXMoMTIpICsgYnl0ZXMuZnJvbWhleCgiMDAwMDAwMDAiKQorICAgICAgICBhZGRyID0gYidcMCcqMTIgKyBieXRlcy5mcm9taGV4KCIwMDAwMDAwMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5zdGFuY2VzRXF1YWwoYWRkciwgIjo6IikKLSAgICAgICAgYWRkciA9IGJ5dGVzKDEyKSArIGJ5dGVzLmZyb21oZXgoImMwYTgwMDAxIikKKyAgICAgICAgYWRkciA9IGInXDAnKjEyICsgYnl0ZXMuZnJvbWhleCgiYzBhODAwMDEiKQogICAgICAgICBzZWxmLmFzc2VydEluc3RhbmNlc0VxdWFsKGFkZHIsICI6OmMwYTg6MSIpCi0gICAgICAgIGFkZHIgPSBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpICsgYnl0ZXMoMTIpCisgICAgICAgIGFkZHIgPSBieXRlcy5mcm9taGV4KCJjMGE4MDAwMSIpICsgYidcMCcqMTIKICAgICAgICAgc2VsZi5hc3NlcnRJbnN0YW5jZXNFcXVhbChhZGRyLCAiYzBhODoxOjoiKQogCiAgICAgZGVmIHRlc3RfbmVnYXRpdmVfaW50c19yZWplY3RlZChzZWxmKToKQEAgLTE1OCw3ICsxNTgsNyBAQAogCiAgICAgZGVmIHRlc3RfYmFkX3BhY2tlZF9sZW5ndGgoc2VsZik6CiAgICAgICAgIGRlZiBhc3NlcnRCYWRMZW5ndGgobGVuZ3RoKToKLSAgICAgICAgICAgIGFkZHIgPSBieXRlcyhsZW5ndGgpCisgICAgICAgICAgICBhZGRyID0gYidcMCcgKiBsZW5ndGgKICAgICAgICAgICAgIG1zZyA9ICIlciAobGVuICVkICE9IDE2KSBpcyBub3QgcGVybWl0dGVkIGFzIGFuIElQdjYgYWRkcmVzcyIKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRBZGRyZXNzRXJyb3IocmUuZXNjYXBlKG1zZyAlIChhZGRyLCBsZW5ndGgpKSk6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWN0b3J5KGFkZHIpCkBAIC0xMTc2LDYgKzExNzYsNyBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKHNlbGYuaXB2Nl9uZXR3b3JrWzVdKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAnMjAwMTo2NTg6MjJhOmNhZmU6OjUnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBzZWxmLmlwdjZfbmV0d29yay5fX2dldGl0ZW1fXywgMSA8PCA2NCkKIAogICAgIGRlZiB0ZXN0R2V0aXRlbShzZWxmKToKICAgICAgICAgIyBodHRwOi8vY29kZS5nb29nbGUuY29tL3AvaXBhZGRyLXB5L2lzc3Vlcy9kZXRhaWw/aWQ9MTUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlci5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlci5weQppbmRleCBhOTE2NzBiLi41NDJiMjg0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVyLnB5CkBAIC01NCw2ICs1NCwxNCBAQAogICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKICAgICAgICAgcmV0dXJuIGkKIAorY2xhc3MgRGVmYXVsdEl0ZXJDbGFzczoKKyAgICBwYXNzCisKK2NsYXNzIE5vSXRlckNsYXNzOgorICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBpKToKKyAgICAgICAgcmV0dXJuIGkKKyAgICBfX2l0ZXJfXyA9IE5vbmUKKwogIyBNYWluIHRlc3Qgc3VpdGUKIAogY2xhc3MgVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtOTk1LDYgKzEwMDMsMTAgQEAKICAgICBkZWYgdGVzdF9mcmVlX2FmdGVyX2l0ZXJhdGluZyhzZWxmKToKICAgICAgICAgY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgU2VxdWVuY2VDbGFzcywgKDAsKSkKIAorICAgIGRlZiB0ZXN0X2Vycm9yX2l0ZXIoc2VsZik6CisgICAgICAgIGZvciB0eXAgaW4gKERlZmF1bHRJdGVyQ2xhc3MsIE5vSXRlckNsYXNzKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgaXRlciwgdHlwKCkpCisKIAogZGVmIHRlc3RfbWFpbigpOgogICAgIHJ1bl91bml0dGVzdChUZXN0Q2FzZSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weSBiL0xpYi90ZXN0L3Rlc3RfaXRlcmxlbi5weQppbmRleCAxNTJmNWZjLi40MWM5NzUyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXJsZW4ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9pdGVybGVuLnB5CkBAIC00Miw3ICs0Miw2IEBACiAiIiIKIAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gaXRlcnRvb2xzIGltcG9ydCByZXBlYXQKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCiBmcm9tIG9wZXJhdG9yIGltcG9ydCBsZW5ndGhfaGludApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9pdGVydG9vbHMucHkgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQppbmRleCBlMDU0MzAzLi5lYTFmNTdjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X2l0ZXJ0b29scy5weQpAQCAtNCw3ICs0LDYgQEAKIGltcG9ydCB3ZWFrcmVmCiBmcm9tIGRlY2ltYWwgaW1wb3J0IERlY2ltYWwKIGZyb20gZnJhY3Rpb25zIGltcG9ydCBGcmFjdGlvbgotaW1wb3J0IHN5cwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgcmFuZG9tCiBpbXBvcnQgY29weQpAQCAtNjQ0LDI0ICs2NDMsNTggQEAKICAgICAgICAgZm9yIHByb3RvIGluIHJhbmdlKHBpY2tsZS5ISUdIRVNUX1BST1RPQ09MICsgMSk6CiAgICAgICAgICAgICBzZWxmLnBpY2tsZXRlc3QocHJvdG8sIGN5Y2xlKCdhYmMnKSkKIAorICAgICAgICBmb3IgcHJvdG8gaW4gcmFuZ2UocGlja2xlLkhJR0hFU1RfUFJPVE9DT0wgKyAxKToKKyAgICAgICAgICAgICMgdGVzdCB3aXRoIHBhcnRpYWwgY29uc3VtZWQgaW5wdXQgaXRlcmFibGUKKyAgICAgICAgICAgIGl0ID0gaXRlcignYWJjZGUnKQorICAgICAgICAgICAgYyA9IGN5Y2xlKGl0KQorICAgICAgICAgICAgXyA9IFtuZXh0KGMpIGZvciBpIGluIHJhbmdlKDIpXSAgICAgICMgY29uc3VtZSAyIG9mIDUgaW5wdXRzCisgICAgICAgICAgICBwID0gcGlja2xlLmR1bXBzKGMsIHByb3RvKQorICAgICAgICAgICAgZCA9IHBpY2tsZS5sb2FkcyhwKSAgICAgICAgICAgICAgICAgICMgcmVidWlsZCB0aGUgY3ljbGUgb2JqZWN0CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGQpLCBsaXN0KCdjZGVhYmNkZWFiY2RlYWJjZGVhYicpKQorCisgICAgICAgICAgICAjIHRlc3Qgd2l0aCBjb21wbGV0ZWx5IGNvbnN1bWVkIGlucHV0IGl0ZXJhYmxlCisgICAgICAgICAgICBpdCA9IGl0ZXIoJ2FiY2RlJykKKyAgICAgICAgICAgIGMgPSBjeWNsZShpdCkKKyAgICAgICAgICAgIF8gPSBbbmV4dChjKSBmb3IgaSBpbiByYW5nZSg3KV0gICAgICAjIGNvbnN1bWUgNyBvZiA1IGlucHV0cworICAgICAgICAgICAgcCA9IHBpY2tsZS5kdW1wcyhjLCBwcm90bykKKyAgICAgICAgICAgIGQgPSBwaWNrbGUubG9hZHMocCkgICAgICAgICAgICAgICAgICAjIHJlYnVpbGQgdGhlIGN5Y2xlIG9iamVjdAorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0YWtlKDIwLCBkKSwgbGlzdCgnY2RlYWJjZGVhYmNkZWFiY2RlYWInKSkKKwogICAgIGRlZiB0ZXN0X2N5Y2xlX3NldHN0YXRlKHNlbGYpOgorICAgICAgICAjIFZlcmlmeSBib3RoIG1vZGVzIGZvciByZXN0b3Jpbmcgc3RhdGUKKworICAgICAgICAjIE1vZGUgMCBpcyBlZmZpY2llbnQuICBJdCB1c2VzIGFuIGluY29tcGxldGVseSBjb25zdW1lZCBpbnB1dAorICAgICAgICAjIGl0ZXJhdG9yIHRvIGJ1aWxkIGEgY3ljbGUgb2JqZWN0IGFuZCB0aGVuIHBhc3NlcyBpbiBzdGF0ZSB3aXRoCisgICAgICAgICMgYSBsaXN0IG9mIHByZXZpb3VzbHkgY29uc3VtZWQgdmFsdWVzLiAgVGhlcmUgaXMgbm8gZGF0YQorICAgICAgICAjIG92ZXJsYXAgYmV0d2VlbiB0aGUgdHdvLgorICAgICAgICBjID0gY3ljbGUoJ2RlZmcnKQorICAgICAgICBjLl9fc2V0c3RhdGVfXygobGlzdCgnYWJjJyksIDApKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRha2UoMjAsIGMpLCBsaXN0KCdkZWZnYWJjZGVmZ2FiY2RlZmdhYicpKQorCisgICAgICAgICMgTW9kZSAxIGlzIGluZWZmaWNpZW50LiAgSXQgc3RhcnRzIHdpdGggYSBjeWNsZSBvYmplY3QgYnVpbHQKKyAgICAgICAgIyBmcm9tIGFuIGl0ZXJhdG9yIG92ZXIgdGhlIHJlbWFpbmluZyBlbGVtZW50cyBpbiBhIHBhcnRpYWwKKyAgICAgICAgIyBjeWNsZSBhbmQgdGhlbiBwYXNzZXMgaW4gc3RhdGUgd2l0aCBhbGwgb2YgdGhlIHByZXZpb3VzbHkKKyAgICAgICAgIyBzZWVuIHZhbHVlcyAodGhpcyBvdmVybGFwcyB2YWx1ZXMgaW5jbHVkZWQgaW4gdGhlIGl0ZXJhdG9yKS4KKyAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgYy5fX3NldHN0YXRlX18oKGxpc3QoJ2FiY2RlZmcnKSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodGFrZSgyMCwgYyksIGxpc3QoJ2RlZmdhYmNkZWZnYWJjZGVmZ2FiJykpCisKKyAgICAgICAgIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gc2V0c3RhdGUgbmVlZHMgdG8gYmUgYSB0dXBsZQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjeWNsZSgnZGVmZycpLl9fc2V0c3RhdGVfXyhbbGlzdCgnYWJjZGVmZycpLCAwXSkKKworICAgICAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpbiB0aGUgc2V0c3RhdGUgdHVwbGUgbXVzdCBiZSBhIGxpc3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgYyA9IGN5Y2xlKCdkZWZnJykKKyAgICAgICAgICAgIGMuX19zZXRzdGF0ZV9fKCh0dXBsZSgnZGVmZycpLCAwKSkKKyAgICAgICAgdGFrZSgyMCwgYykKKworICAgICAgICAjIFRoZSBzZWNvbmQgYXJndW1lbnQgaW4gdGhlIHNldHN0YXRlIHR1cGxlIG11c3QgYmUgYW4gaW50CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGN5Y2xlKCdkZWZnJykuX19zZXRzdGF0ZV9fKChsaXN0KCdhYmNkZWZnJyksICd4JykpCisKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAoKSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCBbXSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjeWNsZSgnJykuX19zZXRzdGF0ZV9fLCAwKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sIChbXSwpKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIGN5Y2xlKCcnKS5fX3NldHN0YXRlX18sICgoKSwgMCkpCi0gICAgICAgIGl0ID0gY3ljbGUoJ2FiYycpCi0gICAgICAgIGl0Ll9fc2V0c3RhdGVfXygoWydkZScsICdmZyddLCAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShpdCwgMTUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJ10pCi0gICAgICAgIGl0ID0gY3ljbGUoJ2FiYycpCi0gICAgICAgIGl0Ll9fc2V0c3RhdGVfXygoWydkZScsICdmZyddLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGlzbGljZShpdCwgMTUpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBbJ2EnLCAnYicsICdjJywgJ2RlJywgJ2ZnJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2RlJywgJ2ZnJywgJ2RlJywgJ2ZnJywgJ2RlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ZnJywgJ2RlJywgJ2ZnJywgJ2RlJywgJ2ZnJ10pCiAKICAgICBkZWYgdGVzdF9ncm91cGJ5KHNlbGYpOgogICAgICAgICAjIENoZWNrIHdoZXRoZXIgaXQgYWNjZXB0cyBhcmd1bWVudHMgY29ycmVjdGx5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkgYi9MaWIvdGVzdC90ZXN0X2pzb24vX19pbml0X18ucHkKaW5kZXggMDgwN2U2Zi4uYmFjMzcwZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi9fX2luaXRfXy5weQpAQCAtMSw1ICsxLDQgQEAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGpzb24KIGltcG9ydCBkb2N0ZXN0CiBpbXBvcnQgdW5pdHRlc3QKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2RlY29kZS5weQppbmRleCBmZGFmZWI2Li43ZTU2OGJlIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9kZWNvZGUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZGVjb2RlLnB5CkBAIC03MiwxMCArNzIsOCBAQAogCiAgICAgZGVmIHRlc3RfaW52YWxpZF9pbnB1dF90eXBlKHNlbGYpOgogICAgICAgICBtc2cgPSAndGhlIEpTT04gb2JqZWN0IG11c3QgYmUgc3RyJwotICAgICAgICBmb3IgdmFsdWUgaW4gWzEsIDMuMTQsIGInYnl0ZXMnLCBiJ1x4ZmZceDAwJywgW10sIHt9LCBOb25lXToKKyAgICAgICAgZm9yIHZhbHVlIGluIFsxLCAzLjE0LCBbXSwge30sIE5vbmVdOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZywgc2VsZi5sb2FkcywgdmFsdWUpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIG1zZyk6Ci0gICAgICAgICAgICBzZWxmLmpzb24ubG9hZChCeXRlc0lPKGInWzEsMiwzXScpKQogCiAgICAgZGVmIHRlc3Rfc3RyaW5nX3dpdGhfdXRmOF9ib20oc2VsZik6CiAgICAgICAgICMgc2VlICMxODk1OApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weSBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X2ZhaWwucHkKaW5kZXggOTVmZjViOC4uNzkxMDUyMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfZmFpbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF9mYWlsLnB5CkBAIC0xLDUgKzEsNCBAQAogZnJvbSB0ZXN0LnRlc3RfanNvbiBpbXBvcnQgUHlUZXN0LCBDVGVzdAotaW1wb3J0IHJlCiAKICMgMjAwNy0xMC0wNQogSlNPTkRPQ1MgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF9qc29uL3Rlc3RfdW5pY29kZS5weQppbmRleCBjN2NjOGE3Li5lZGExNzdhIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2pzb24vdGVzdF91bmljb2RlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfanNvbi90ZXN0X3VuaWNvZGUucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgY29kZWNzCiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAogZnJvbSB0ZXN0LnRlc3RfanNvbiBpbXBvcnQgUHlUZXN0LCBDVGVzdAogCkBAIC01Miw5ICs1MywxOCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZHVtcHMsIFtiImhpIl0pCiAKICAgICBkZWYgdGVzdF9ieXRlc19kZWNvZGUoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5sb2FkcywgYiciaGkiJykKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmxvYWRzLCBiJ1siaGkiXScpCi0KKyAgICAgICAgZm9yIGVuY29kaW5nLCBib20gaW4gWworICAgICAgICAgICAgICAgICgndXRmLTgnLCBjb2RlY3MuQk9NX1VURjgpLAorICAgICAgICAgICAgICAgICgndXRmLTE2YmUnLCBjb2RlY3MuQk9NX1VURjE2X0JFKSwKKyAgICAgICAgICAgICAgICAoJ3V0Zi0xNmxlJywgY29kZWNzLkJPTV9VVEYxNl9MRSksCisgICAgICAgICAgICAgICAgKCd1dGYtMzJiZScsIGNvZGVjcy5CT01fVVRGMzJfQkUpLAorICAgICAgICAgICAgICAgICgndXRmLTMybGUnLCBjb2RlY3MuQk9NX1VURjMyX0xFKSwKKyAgICAgICAgICAgIF06CisgICAgICAgICAgICBkYXRhID0gWyJhXHhiNVx1MjBhY1xVMDAwMWQxMjAiXQorICAgICAgICAgICAgZW5jb2RlZCA9IHNlbGYuZHVtcHMoZGF0YSkuZW5jb2RlKGVuY29kaW5nKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGJvbSArIGVuY29kZWQpLCBkYXRhKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmxvYWRzKGVuY29kZWQpLCBkYXRhKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhVbmljb2RlRGVjb2RlRXJyb3IsIHNlbGYubG9hZHMsIGInWyJceDgwIl0nKQogCiAgICAgZGVmIHRlc3Rfb2JqZWN0X3BhaXJzX2hvb2tfd2l0aF91bmljb2RlKHNlbGYpOgogICAgICAgICBzID0gJ3sieGtkIjoxLCAia2N3IjoyLCAiYXJ0IjozLCAiaHhtIjo0LCAicXJ0Ijo1LCAicGFkIjo2LCAiaG95Ijo3fScKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfa3F1ZXVlLnB5IGIvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKaW5kZXggZjgyMjAyNC4uOWY0OTg4NiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9rcXVldWUucHkKQEAgLTUsNyArNSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB0aW1lCiBpbXBvcnQgdW5pdHRlc3QKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9saW5lY2FjaGUucHkgYi9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQppbmRleCA0N2UyZWRkLi4zNzVkOWM0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X2xpbmVjYWNoZS5weQpAQCAtMyw2ICszLDggQEAKIGltcG9ydCBsaW5lY2FjaGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IG9zLnBhdGgKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRva2VuaXplCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogCkBAIC0xMCw4ICsxMiw2IEBACiBOT05FWElTVEVOVF9GSUxFTkFNRSA9IEZJTEVOQU1FICsgJy5taXNzaW5nJwogSU5WQUxJRF9OQU1FID0gJyFAJCkoIUAjXzEnCiBFTVBUWSA9ICcnCi1URVNUUyA9ICdpbnNwZWN0X2ZvZGRlciBpbnNwZWN0X2ZvZGRlcjIgbWFwcGluZ190ZXN0cycKLVRFU1RTID0gVEVTVFMuc3BsaXQoKQogVEVTVF9QQVRIID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQogTU9EVUxFUyA9ICJsaW5lY2FjaGUgYWJjIi5zcGxpdCgpCiBNT0RVTEVfUEFUSCA9IG9zLnBhdGguZGlybmFtZShGSUxFTkFNRSkKQEAgLTM3LDYgKzM3LDY1IEBACiAgICAgcmV0dXJuIDMnJycgIyBObyBlbmRpbmcgbmV3bGluZQogCiAKK2NsYXNzIFRlbXBGaWxlOgorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzdXBlcigpLnNldFVwKCkKKyAgICAgICAgd2l0aCB0ZW1wZmlsZS5OYW1lZFRlbXBvcmFyeUZpbGUoZGVsZXRlPUZhbHNlKSBhcyBmcDoKKyAgICAgICAgICAgIHNlbGYuZmlsZV9uYW1lID0gZnAubmFtZQorICAgICAgICAgICAgZnAud3JpdGUoc2VsZi5maWxlX2J5dGVfc3RyaW5nKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorCisKK2NsYXNzIEdldExpbmVUZXN0c0dvb2REYXRhKFRlbXBGaWxlKToKKyAgICAjIGZpbGVfbGlzdCAgID0gWydsaXN0XG4nLCAnb2ZcbicsICdnb29kXG4nLCAnc3RyaW5nc1xuJ10KKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX2J5dGVfc3RyaW5nID0gJycuam9pbihzZWxmLmZpbGVfbGlzdCkuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKKyAgICAgICAgd2l0aCB0b2tlbml6ZS5vcGVuKHNlbGYuZmlsZV9uYW1lKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBpbmRleCwgbGluZSBpbiBlbnVtZXJhdGUoZnApOgorICAgICAgICAgICAgICAgIGlmIG5vdCBsaW5lLmVuZHN3aXRoKCdcbicpOgorICAgICAgICAgICAgICAgICAgICBsaW5lICs9ICdcbicKKworICAgICAgICAgICAgICAgIGNhY2hlZF9saW5lID0gbGluZWNhY2hlLmdldGxpbmUoc2VsZi5maWxlX25hbWUsIGluZGV4ICsgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmUsIGNhY2hlZF9saW5lKQorCisgICAgZGVmIHRlc3RfZ2V0bGluZXMoc2VsZik6CisgICAgICAgIGxpbmVzID0gbGluZWNhY2hlLmdldGxpbmVzKHNlbGYuZmlsZV9uYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzLCBzZWxmLmZpbGVfbGlzdCkKKworCitjbGFzcyBHZXRMaW5lVGVzdHNCYWREYXRhKFRlbXBGaWxlKToKKyAgICAjIGZpbGVfYnl0ZV9zdHJpbmcgPSBiJ0JhZCBkYXRhIGdvZXMgaGVyZScKKworICAgIGRlZiB0ZXN0X2dldGxpbmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChTeW50YXhFcnJvciwgVW5pY29kZURlY29kZUVycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUsIHNlbGYuZmlsZV9uYW1lLCAxKQorCisgICAgZGVmIHRlc3RfZ2V0bGluZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKChTeW50YXhFcnJvciwgVW5pY29kZURlY29kZUVycm9yKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmVzLCBzZWxmLmZpbGVfbmFtZSkKKworCitjbGFzcyBFbXB0eUZpbGUoR2V0TGluZVRlc3RzR29vZERhdGEsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBmaWxlX2xpc3QgPSBbXQorCisKK2NsYXNzIFNpbmdsZUVtcHR5TGluZShHZXRMaW5lVGVzdHNHb29kRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfbGlzdCA9IFsnXG4nXQorCisKK2NsYXNzIEdvb2RVbmljb2RlKEdldExpbmVUZXN0c0dvb2REYXRhLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZmlsZV9saXN0ID0gWyfDoVxuJywgJ2JcbicsICdhYmNkZWZcbicsICfDocOhw6HDocOhXG4nXQorCisKK2NsYXNzIEJhZFVuaWNvZGUoR2V0TGluZVRlc3RzQmFkRGF0YSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGZpbGVfYnl0ZV9zdHJpbmcgPSBiJ1x4ODBhYmMnCisKKwogY2xhc3MgTGluZUNhY2hlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHRlc3RfZ2V0bGluZShzZWxmKToKQEAgLTUzLDEzICsxMTIsNiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGxpbmUoRU1QVFksIDEpLCBFTVBUWSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXRsaW5lKElOVkFMSURfTkFNRSwgMSksIEVNUFRZKQogCi0gICAgICAgICMgQ2hlY2sgd2hldGhlciBsaW5lcyBjb3JyZXNwb25kIHRvIHRob3NlIGZyb20gZmlsZSBpdGVyYXRpb24KLSAgICAgICAgZm9yIGVudHJ5IGluIFRFU1RTOgotICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oVEVTVF9QQVRILCBlbnRyeSkgKyAnLnB5JwotICAgICAgICAgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBmaWxlOgotICAgICAgICAgICAgICAgIGZvciBpbmRleCwgbGluZSBpbiBlbnVtZXJhdGUoZmlsZSk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZSwgZ2V0bGluZShmaWxlbmFtZSwgaW5kZXggKyAxKSkKLQogICAgICAgICAjIENoZWNrIG1vZHVsZSBsb2FkaW5nCiAgICAgICAgIGZvciBlbnRyeSBpbiBNT0RVTEVTOgogICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oTU9EVUxFX1BBVEgsIGVudHJ5KSArICcucHknCkBAIC04MCwxMiArMTMyLDEzIEBACiAKICAgICBkZWYgdGVzdF9jbGVhcmNhY2hlKHNlbGYpOgogICAgICAgICBjYWNoZWQgPSBbXQotICAgICAgICBmb3IgZW50cnkgaW4gVEVTVFM6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9IG9zLnBhdGguam9pbihURVNUX1BBVEgsIGVudHJ5KSArICcucHknCisgICAgICAgIGZvciBlbnRyeSBpbiBNT0RVTEVTOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oTU9EVUxFX1BBVEgsIGVudHJ5KSArICcucHknCiAgICAgICAgICAgICBjYWNoZWQuYXBwZW5kKGZpbGVuYW1lKQogICAgICAgICAgICAgbGluZWNhY2hlLmdldGxpbmUoZmlsZW5hbWUsIDEpCiAKICAgICAgICAgIyBBcmUgYWxsIGZpbGVzIGNhY2hlZD8KKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChjYWNoZWQsIFtdKQogICAgICAgICBjYWNoZWRfZW1wdHkgPSBbZm4gZm9yIGZuIGluIGNhY2hlZCBpZiBmbiBub3QgaW4gbGluZWNhY2hlLmNhY2hlXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNhY2hlZF9lbXB0eSwgW10pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbGlzdC5weSBiL0xpYi90ZXN0L3Rlc3RfbGlzdC5weQppbmRleCA4ZjgyYWI1Li5hZWU2MmRjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xpc3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9saXN0LnB5CkBAIC0xLDUgKzEsNSBAQAogaW1wb3J0IHN5cwotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBsaXN0X3Rlc3RzCitmcm9tIHRlc3QgaW1wb3J0IGxpc3RfdGVzdHMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCB1bml0dGVzdAogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkgYi9MaWIvdGVzdC90ZXN0X2xvZ2dpbmcucHkKaW5kZXggODUzNDRkZS4uZTQ1YTk4MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9sb2dnaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbG9nZ2luZy5weQpAQCAtMjYsNiArMjYsNyBAQAogaW1wb3J0IGNvZGVjcwogaW1wb3J0IGNvbmZpZ3BhcnNlcgogaW1wb3J0IGRhdGV0aW1lCitpbXBvcnQgcGF0aGxpYgogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGlvCiBpbXBvcnQgZ2MKQEAgLTMwOCw2ICszMDksMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsb2dnaW5nLmdldExldmVsTmFtZSgnSU5GTycpLCBsb2dnaW5nLklORk8pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobG9nZ2luZy5nZXRMZXZlbE5hbWUobG9nZ2luZy5JTkZPKSwgJ0lORk8nKQogCisgICAgZGVmIHRlc3RfaXNzdWUyNzkzNShzZWxmKToKKyAgICAgICAgZmF0YWwgPSBsb2dnaW5nLmdldExldmVsTmFtZSgnRkFUQUwnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZhdGFsLCBsb2dnaW5nLkZBVEFMKQorCiBjbGFzcyBCYXNpY0ZpbHRlclRlc3QoQmFzZVRlc3QpOgogCiAgICAgIiIiVGVzdCB0aGUgYnVuZGxlZCBGaWx0ZXIgY2xhc3MuIiIiCkBAIC01NzUsNiArNTgwLDI5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoaC5zaG91bGRGbHVzaChyKSkKICAgICAgICAgaC5jbG9zZSgpCiAKKyAgICBkZWYgdGVzdF9wYXRoX29iamVjdHMoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgUGF0aCBvYmplY3RzIGFyZSBhY2NlcHRlZCBhcyBmaWxlbmFtZSBhcmd1bWVudHMgdG8gaGFuZGxlcnMuCisKKyAgICAgICAgU2VlIElzc3VlICMyNzQ5My4KKyAgICAgICAgIiIiCisgICAgICAgIGZkLCBmbiA9IHRlbXBmaWxlLm1rc3RlbXAoKQorICAgICAgICBvcy5jbG9zZShmZCkKKyAgICAgICAgb3MudW5saW5rKGZuKQorICAgICAgICBwZm4gPSBwYXRobGliLlBhdGgoZm4pCisgICAgICAgIGNhc2VzID0gKAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5GaWxlSGFuZGxlciwgKHBmbiwgJ3cnKSksCisgICAgICAgICAgICAgICAgICAgIChsb2dnaW5nLmhhbmRsZXJzLlJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdhJykpLAorICAgICAgICAgICAgICAgICAgICAobG9nZ2luZy5oYW5kbGVycy5UaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXIsIChwZm4sICdoJykpLAorICAgICAgICAgICAgICAgICkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnbGludXgnLCAnZGFyd2luJyk6CisgICAgICAgICAgICBjYXNlcyArPSAoKGxvZ2dpbmcuaGFuZGxlcnMuV2F0Y2hlZEZpbGVIYW5kbGVyLCAocGZuLCAndycpKSwpCisgICAgICAgIGZvciBjbHMsIGFyZ3MgaW4gY2FzZXM6CisgICAgICAgICAgICBoID0gY2xzKCphcmdzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSkKKyAgICAgICAgICAgIGguY2xvc2UoKQorICAgICAgICAgICAgb3MudW5saW5rKGZuKQorCiAgICAgQHVuaXR0ZXN0LnNraXBJZihvcy5uYW1lID09ICdudCcsICdXYXRjaGVkRmlsZUhhbmRsZXIgbm90IGFwcHJvcHJpYXRlIGZvciBXaW5kb3dzLicpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKICAgICBkZWYgdGVzdF9yYWNlKHNlbGYpOgpAQCAtOTU4LDcgKzk4Niw3IEBACiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBCYXNlVGVzdC5zZXRVcChzZWxmKQogICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucm9vdF9oZGxyKQogICAgICAgICBzZWxmLm1lbV9sb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignbWVtJykKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnByb3BhZ2F0ZSA9IDAKICAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLmFkZEhhbmRsZXIoc2VsZi5tZW1faGRscikKQEAgLTk5NSw2ICsxMDIzLDM2IEBACiAgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQogICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpCiAKKyAgICBkZWYgdGVzdF9mbHVzaF9vbl9jbG9zZShzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgZmx1c2gtb24tY2xvc2UgY29uZmlndXJhdGlvbiB3b3JrcyBhcyBleHBlY3RlZC4KKyAgICAgICAgIiIiCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMoW10pCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5pbmZvKHNlbGYubmV4dF9tZXNzYWdlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhbXSkKKyAgICAgICAgc2VsZi5tZW1fbG9nZ2VyLnJlbW92ZUhhbmRsZXIoc2VsZi5tZW1faGRscikKKyAgICAgICAgIyBEZWZhdWx0IGJlaGF2aW91ciBpcyB0byBmbHVzaCBvbiBjbG9zZS4gQ2hlY2sgdGhhdCBpdCBoYXBwZW5zLgorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgbGluZXMgPSBbCisgICAgICAgICAgICAoJ0RFQlVHJywgJzEnKSwKKyAgICAgICAgICAgICgnSU5GTycsICcyJyksCisgICAgICAgIF0KKyAgICAgICAgc2VsZi5hc3NlcnRfbG9nX2xpbmVzKGxpbmVzKQorICAgICAgICAjIE5vdyBjb25maWd1cmUgZm9yIGZsdXNoaW5nIG5vdCB0byBiZSBkb25lIG9uIGNsb3NlLgorICAgICAgICBzZWxmLm1lbV9oZGxyID0gbG9nZ2luZy5oYW5kbGVycy5NZW1vcnlIYW5kbGVyKDEwLCBsb2dnaW5nLldBUk5JTkcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yb290X2hkbHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRmFsc2UpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5hZGRIYW5kbGVyKHNlbGYubWVtX2hkbHIpCisgICAgICAgIHNlbGYubWVtX2xvZ2dlci5kZWJ1ZyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIuaW5mbyhzZWxmLm5leHRfbWVzc2FnZSgpKQorICAgICAgICBzZWxmLmFzc2VydF9sb2dfbGluZXMobGluZXMpICAjIG5vIGNoYW5nZQorICAgICAgICBzZWxmLm1lbV9sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLm1lbV9oZGxyKQorICAgICAgICBzZWxmLm1lbV9oZGxyLmNsb3NlKCkKKyAgICAgICAgIyBhc3NlcnQgdGhhdCBubyBuZXcgbGluZXMgaGF2ZSBiZWVuIGFkZGVkCisgICAgICAgIHNlbGYuYXNzZXJ0X2xvZ19saW5lcyhsaW5lcykgICMgbm8gY2hhbmdlCisKIAogY2xhc3MgRXhjZXB0aW9uRm9ybWF0dGVyKGxvZ2dpbmcuRm9ybWF0dGVyKToKICAgICAiIiJBIHNwZWNpYWwgZXhjZXB0aW9uIGZvcm1hdHRlci4iIiIKQEAgLTQyMzksNiArNDI5NywxNyBAQAogICAgICAgICBtc2cgPSAnUmVjb3JkIG5vdCBmb3VuZCBpbiBldmVudCBsb2csIHdlbnQgYmFjayAlZCByZWNvcmRzJyAlIEdPX0JBQ0sKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCBtc2c9bXNnKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J2xvZ1RocmVhZHMnLCAnbG9nTXVsdGlwcm9jZXNzaW5nJywKKyAgICAgICAgICAgICAgICAgICAgICdsb2dQcm9jZXNzZXMnLCAnY3VycmVudGZyYW1lJywKKyAgICAgICAgICAgICAgICAgICAgICdQZXJjZW50U3R5bGUnLCAnU3RyRm9ybWF0U3R5bGUnLCAnU3RyaW5nVGVtcGxhdGVTdHlsZScsCisgICAgICAgICAgICAgICAgICAgICAnRmlsdGVyZXInLCAnUGxhY2VIb2xkZXInLCAnTWFuYWdlcicsICdSb290TG9nZ2VyJywKKyAgICAgICAgICAgICAgICAgICAgICdyb290J30KKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgbG9nZ2luZywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiAjIFNldCB0aGUgbG9jYWxlIHRvIHRoZSBwbGF0Zm9ybS1kZXBlbmRlbnQgZGVmYXVsdC4gIEkgaGF2ZSBubyBpZGVhCiAjIHdoeSB0aGUgdGVzdCBkb2VzIHRoaXMsIGJ1dCBpbiBhbnkgY2FzZSB3ZSBzYXZlIHRoZSBjdXJyZW50IGxvY2FsZQogIyBmaXJzdCBhbmQgcmVzdG9yZSBpdCBhdCB0aGUgZW5kLgpAQCAtNDI1Niw2ICs0MzI1LDcgQEAKICAgICAgICAgRXhjZXB0aW9uVGVzdCwgU3lzTG9nSGFuZGxlclRlc3QsIEhUVFBIYW5kbGVyVGVzdCwKICAgICAgICAgTlRFdmVudExvZ0hhbmRsZXJUZXN0LCBUaW1lZFJvdGF0aW5nRmlsZUhhbmRsZXJUZXN0LAogICAgICAgICBVbml4U29ja2V0SGFuZGxlclRlc3QsIFVuaXhEYXRhZ3JhbUhhbmRsZXJUZXN0LCBVbml4U3lzTG9nSGFuZGxlclRlc3QsCisgICAgICAgIE1pc2NUZXN0Q2FzZQogICAgIF0KICAgICBpZiBoYXNhdHRyKGxvZ2dpbmcuaGFuZGxlcnMsICdRdWV1ZUxpc3RlbmVyJyk6CiAgICAgICAgIHRlc3RzLmFwcGVuZChRdWV1ZUxpc3RlbmVyVGVzdCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbG9uZy5weSBiL0xpYi90ZXN0L3Rlc3RfbG9uZy5weQppbmRleCA0YjJkODFjLi5mZDE1ZjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2xvbmcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sb25nLnB5CkBAIC02MjEsNiArNjIxLDggQEAKICAgICBkZWYgdGVzdF9fZm9ybWF0X18oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJ2QnKSwgJzEyMzQ1Njc4OScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQ1Njc4OSwgJywnKSwgJzEyMyw0NTYsNzg5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5LCAnXycpLCAnMTIzXzQ1Nl83ODknKQogCiAgICAgICAgICMgc2lnbiBhbmQgYWxpZ25pbmcgYXJlIGludGVyZGVwZW5kZW50CiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEsICItIiksICcxJykKQEAgLTY0OSw4ICs2NTEsMjUgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoaW50KCdiZScsIDE2KSwgIlgiKSwgIkJFIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoLWludCgnYmUnLCAxNiksICJ4IiksICItYmUiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtaW50KCdiZScsIDE2KSwgIlgiKSwgIi1CRSIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyx4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ194JyksICc0OTk2XzAyZDInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0NTY3ODkwLCAnX1gnKSwgJzQ5OTZfMDJEMicpCiAKICAgICAgICAgIyBvY3RhbAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAibyIpLCAiMyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0zLCAibyIpLCAiLTMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAibyIpLCAiMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAibyIpLCAiLTIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiLW8iKSwgIjIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIi1vIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIgbyIpLCAiIDIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICIrbyIpLCAiKzIzMjIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIitvIiksICItMjMyMiIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxvJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDU2Nzg5MCwgJ19vJyksICcxMTFfNDU0MF8xMzIyJykKKworICAgICAgICAjIGJpbmFyeQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgzLCAiYiIpLCAiMTEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMywgImIiKSwgIi0xMSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KDEyMzQsICJiIiksICIxMDAxMTAxMDAxMCIpCkBAIC02NjEsMTIgKzY4MCwyMSBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgtMTIzNCwgIiBiIiksICItMTAwMTEwMTAwMTAiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvcm1hdCgxMjM0LCAiK2IiKSwgIisxMDAxMTAxMDAxMCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm9ybWF0KC0xMjM0LCAiK2IiKSwgIi0xMDAxMTAxMDAxMCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZvcm1hdCwgMTIzNDU2Nzg5MCwgJyxiJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmb3JtYXQoMTIzNDUsICdfYicpLCAnMTFfMDAwMF8wMDExXzEwMDEnKQogCiAgICAgICAgICMgbWFrZSBzdXJlIHRoZXNlIGFyZSBlcnJvcnMKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiMS4zIikgICMgcHJlY2lzaW9uIGRpc2FsbG93ZWQKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiX2MiKSAgICMgdW5kZXJzY29yZSwKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZm9ybWF0LCAzLCAiLGMiKSAgICMgY29tbWEsIGFuZAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmb3JtYXQsIDMsICIrYyIpICAgIyBzaWduIG5vdCBhbGxvd2VkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHdpdGggJ2MnCiAKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJyxfJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAnQ2Fubm90IHNwZWNpZnkgYm90aCcsIGZvcm1hdCwgMywgJ18sZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwgJ0Nhbm5vdCBzcGVjaWZ5IGJvdGgnLCBmb3JtYXQsIDMsICcsX2QnKQorCiAgICAgICAgICMgZW5zdXJlIHRoYXQgb25seSBpbnQgYW5kIGZsb2F0IHR5cGUgc3BlY2lmaWVycyB3b3JrCiAgICAgICAgIGZvciBmb3JtYXRfc3BlYyBpbiAoW2Nocih4KSBmb3IgeCBpbiByYW5nZShvcmQoJ2EnKSwgb3JkKCd6JykrMSldICsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbY2hyKHgpIGZvciB4IGluIHJhbmdlKG9yZCgnQScpLCBvcmQoJ1onKSsxKV0pOgpAQCAtNjg5LDYgKzcxNywyMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBpbnQsIGZsb2F0KCctaW5mJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGludCwgZmxvYXQoJ25hbicpKQogCisgICAgZGVmIHRlc3RfbW9kX2RpdmlzaW9uKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFplcm9EaXZpc2lvbkVycm9yKToKKyAgICAgICAgICAgIF8gPSAxICUgMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTMgJSAxMCwgMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTMgJSAxMCwgNykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMyAlIC0xMCwgLTcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEzICUgLTEwLCAtMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgNCwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgJSA0LCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyICUgLTQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTEyICUgLTQsIDApCisKICAgICBkZWYgdGVzdF90cnVlX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICBodWdlID0gMSA8PCA0MDAwMAogICAgICAgICBtaHVnZSA9IC1odWdlCkBAIC03MjMsNiArNzY1LDI1IEBACiAgICAgICAgIGZvciB6ZXJvIGluIFsiaHVnZSAvIDAiLCAibWh1Z2UgLyAwIl06CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvciwgZXZhbCwgemVybywgbmFtZXNwYWNlKQogCisgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IpOgorICAgICAgICAgICAgXyA9IDEgLy8gMAorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMiAvLyAzLCAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDIgLy8gLTMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIDMsIC0xKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0yIC8vIC0zLCAwKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoLTExIC8vIC0zLCAzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMSAvLyAzLCAtNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgxMSAvLyAtMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTEgLy8gMywgMykKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKC0xMiAvLyAtMywgNCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMTIgLy8gMywgLTQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMTIgLy8gLTMsIC00KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDEyIC8vIDMsIDQpCisKICAgICBkZWYgY2hlY2tfdHJ1ZWRpdihzZWxmLCBhLCBiLCBza2lwX3NtYWxsPVRydWUpOgogICAgICAgICAiIiJWZXJpZnkgdGhhdCB0aGUgcmVzdWx0IG9mIGEvYiBpcyBjb3JyZWN0bHkgcm91bmRlZCwgYnkKICAgICAgICAgY29tcGFyaW5nIGl0IHdpdGggYSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBjb3JyZWN0bHkKQEAgLTg0NSw2ICs5MDYsMjEgQEAKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgeSkKICAgICAgICAgICAgIHNlbGYuY2hlY2tfdHJ1ZWRpdigteCwgLXkpCiAKKyAgICBkZWYgdGVzdF9sc2hpZnRfb2ZfemVybyhzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwIDw8IDAsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCAxMCwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIDAgPDwgLTEKKworICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2h1Z2VfbHNoaWZ0X29mX3plcm8oc2VsZik6CisgICAgICAgICMgU2hvdWxkbid0IHRyeSB0byBhbGxvY2F0ZSBtZW1vcnkgZm9yIGEgaHVnZSBzaGlmdC4gU2VlIGlzc3VlICMyNzg3MC4KKyAgICAgICAgIyBPdGhlciBpbXBsZW1lbnRhdGlvbnMgbWF5IGhhdmUgYSBkaWZmZXJlbnQgYm91bmRhcnkgZm9yIG92ZXJmbG93LAorICAgICAgICAjIG9yIG5vdCByYWlzZSBhdCBhbGwuCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMCA8PCBzeXMubWF4c2l6ZSwgMCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yKToKKyAgICAgICAgICAgIDAgPDwgKHN5cy5tYXhzaXplICsgMSkKKwogICAgIGRlZiB0ZXN0X3NtYWxsX2ludHMoc2VsZik6CiAgICAgICAgIGZvciBpIGluIHJhbmdlKC01LCAyNTcpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhpLCBpICsgMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbHptYS5weSBiL0xpYi90ZXN0L3Rlc3RfbHptYS5weQppbmRleCAxNmU4OWQ1Li5mZGM4ZTExIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X2x6bWEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9sem1hLnB5CkBAIC0xLDYgKzEsNyBAQAogaW1wb3J0IF9jb21wcmVzc2lvbgogZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTywgVW5zdXBwb3J0ZWRPcGVyYXRpb24sIERFRkFVTFRfQlVGRkVSX1NJWkUKIGltcG9ydCBvcworaW1wb3J0IHBhdGhsaWIKIGltcG9ydCBwaWNrbGUKIGltcG9ydCByYW5kb20KIGltcG9ydCB1bml0dGVzdApAQCAtNDg4LDYgKzQ4OSwxNiBAQAogICAgICAgICB3aXRoIExaTUFGaWxlKEJ5dGVzSU8oKSwgImEiKSBhcyBmOgogICAgICAgICAgICAgcGFzcwogCisgICAgZGVmIHRlc3RfaW5pdF93aXRoX1BhdGhMaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUsIENPTVBSRVNTRURfWFopOgorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCkKKyAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoZmlsZW5hbWUsICJhIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmLndyaXRlKElOUFVUKQorICAgICAgICAgICAgd2l0aCBMWk1BRmlsZShmaWxlbmFtZSkgYXMgZjoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCisKICAgICBkZWYgdGVzdF9pbml0X3dpdGhfZmlsZW5hbWUoc2VsZik6CiAgICAgICAgIHdpdGggVGVtcEZpbGUoVEVTVEZOLCBDT01QUkVTU0VEX1haKToKICAgICAgICAgICAgIHdpdGggTFpNQUZpbGUoVEVTVEZOKSBhcyBmOgpAQCAtOTM1LDExICs5NDYsMTEgQEAKIAogICAgIGRlZiB0ZXN0X2RlY29tcHJlc3NfbGltaXRlZChzZWxmKToKICAgICAgICAgIiIiRGVjb21wcmVzc2VkIGRhdGEgYnVmZmVyaW5nIHNob3VsZCBiZSBsaW1pdGVkIiIiCi0gICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGJ5dGVzKGludCgyZTYpKSwgcHJlc2V0PTYpCisgICAgICAgIGJvbWIgPSBsem1hLmNvbXByZXNzKGInXDAnICogaW50KDJlNiksIHByZXNldD02KQogICAgICAgICBzZWxmLmFzc2VydExlc3MobGVuKGJvbWIpLCBfY29tcHJlc3Npb24uQlVGRkVSX1NJWkUpCiAKICAgICAgICAgZGVjb21wID0gTFpNQUZpbGUoQnl0ZXNJTyhib21iKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChieXRlcygxKSwgZGVjb21wLnJlYWQoMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjb21wLnJlYWQoMSksIGInXDAnKQogICAgICAgICBtYXhfZGVjb21wID0gMSArIERFRkFVTFRfQlVGRkVSX1NJWkUKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoZGVjb21wLl9idWZmZXIucmF3LnRlbGwoKSwgbWF4X2RlY29tcCwKICAgICAgICAgICAgICJFeGNlc3NpdmUgYW1vdW50IG9mIGRhdGEgd2FzIGRlY29tcHJlc3NlZCIpCkBAIC0xMTgwLDYgKzExOTEsMTcgQEAKICAgICAgICAgICAgIHdpdGggbHptYS5vcGVuKFRFU1RGTiwgInJiIikgYXMgZjoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBJTlBVVCAqIDIpCiAKKyAgICBkZWYgdGVzdF93aXRoX3BhdGhsaWtlX2ZpbGVuYW1lKHNlbGYpOgorICAgICAgICBmaWxlbmFtZSA9IHBhdGhsaWIuUGF0aChURVNURk4pCisgICAgICAgIHdpdGggVGVtcEZpbGUoZmlsZW5hbWUpOgorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZShJTlBVVCkKKyAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgICAgICAgICBmaWxlX2RhdGEgPSBsem1hLmRlY29tcHJlc3MoZi5yZWFkKCkpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmaWxlX2RhdGEsIElOUFVUKQorICAgICAgICAgICAgd2l0aCBsem1hLm9wZW4oZmlsZW5hbWUsICJyYiIpIGFzIGY6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgSU5QVVQpCisKICAgICBkZWYgdGVzdF9iYWRfcGFyYW1zKHNlbGYpOgogICAgICAgICAjIFRlc3QgaW52YWxpZCBwYXJhbWV0ZXIgY29tYmluYXRpb25zLgogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWNwYXRoLnB5CmluZGV4IDgwYmVjN2EuLjA2OThmZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFjcGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hY3BhdGgucHkKQEAgLTEsNSArMSw1IEBACiBpbXBvcnQgbWFjcGF0aAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCB0ZXN0X2dlbmVyaWNwYXRoCitmcm9tIHRlc3QgaW1wb3J0IHRlc3RfZ2VuZXJpY3BhdGgKIGltcG9ydCB1bml0dGVzdAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weSBiL0xpYi90ZXN0L3Rlc3RfbWFpbGJveC5weQppbmRleCAwOTkxZjc0Li5hZWFiZGJiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21haWxib3gucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tYWlsYm94LnB5CkBAIC03LDE3ICs3LDEyIEBACiBpbXBvcnQgZW1haWwubWVzc2FnZQogaW1wb3J0IHJlCiBpbXBvcnQgaW8KLWltcG9ydCBzaHV0aWwKIGltcG9ydCB0ZW1wZmlsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IG1haWxib3gKIGltcG9ydCBnbG9iCi10cnk6Ci0gICAgaW1wb3J0IGZjbnRsCi1leGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgcGFzcwogCiAKIGNsYXNzIFRlc3RCYXNlOgpAQCAtMjI3MywxMiArMjI2OCwxOCBAQAogIiIiKQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7ImxpbmVzZXAiLCAiZmNudGwifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtYWlsYm94LCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IChUZXN0TWFpbGJveFN1cGVyY2xhc3MsIFRlc3RNYWlsZGlyLCBUZXN0TWJveCwgVGVzdE1NREYsIFRlc3RNSCwKICAgICAgICAgICAgICBUZXN0QmFieWwsIFRlc3RNZXNzYWdlLCBUZXN0TWFpbGRpck1lc3NhZ2UsIFRlc3RNYm94TWVzc2FnZSwKICAgICAgICAgICAgICBUZXN0TUhNZXNzYWdlLCBUZXN0QmFieWxNZXNzYWdlLCBUZXN0TU1ERk1lc3NhZ2UsCiAgICAgICAgICAgICAgVGVzdE1lc3NhZ2VDb252ZXJzaW9uLCBUZXN0UHJveHlGaWxlLCBUZXN0UGFydGlhbEZpbGUsCi0gICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gpCisgICAgICAgICAgICAgTWFpbGRpclRlc3RDYXNlLCBUZXN0RmFrZU1haWxCb3gsIE1pc2NUZXN0Q2FzZSkKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgqdGVzdHMpCiAgICAgc3VwcG9ydC5yZWFwX2NoaWxkcmVuKCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5IGIvTGliL3Rlc3QvdGVzdF9tYWlsY2FwLnB5CmluZGV4IGE4NWM2OTEuLmMwODQyM2MgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFpbGNhcC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21haWxjYXAucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgbWFpbGNhcAogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgY29weQogaW1wb3J0IHRlc3Quc3VwcG9ydAogaW1wb3J0IHVuaXR0ZXN0CkBAIC0xMjMsNyArMTIyLDcgQEAKICAgICAgICAgICAgIChbImVjaG8gZm9vIiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXMiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGZvby50eHQiKSwKICAgICAgICAgICAgIChbImVjaG8gJXQiLCAiYXVkaW8vKiIsICJmb28udHh0Il0sICJlY2hvIGF1ZGlvLyoiKSwKLSAgICAgICAgICAgIChbImVjaG8gXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAorICAgICAgICAgICAgKFsiZWNobyBcXCV0IiwgImF1ZGlvLyoiLCAiZm9vLnR4dCJdLCAiZWNobyAldCIpLAogICAgICAgICAgICAgKFsiZWNobyBmb28iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyBmb28iKSwKICAgICAgICAgICAgIChbImVjaG8gJXt0b3RhbH0iLCAiYXVkaW8vKiIsICJmb28udHh0IiwgcGxpc3RdLCAiZWNobyAzIikKICAgICAgICAgXQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5IGIvTGliL3Rlc3QvdGVzdF9tYXJzaGFsLnB5CmluZGV4IGM3ZGVmOWEuLmIzNzhmZmUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWFyc2hhbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X21hcnNoYWwucHkKQEAgLTEzNSw2ICsxMzUsMTMgQEAKICAgICAgICAgZm9yIGNvbnN0cnVjdG9yIGluIChzZXQsIGZyb3plbnNldCk6CiAgICAgICAgICAgICBzZWxmLmhlbHBlcihjb25zdHJ1Y3RvcihzZWxmLmQua2V5cygpKSkKIAorICAgIEBzdXBwb3J0LmNweXRob25fb25seQorICAgIGRlZiB0ZXN0X2VtcHR5X2Zyb3plbnNldF9zaW5nbGV0b24oc2VsZik6CisgICAgICAgICMgbWFyc2hhbC5sb2FkcygpIG11c3QgcmV1c2UgdGhlIGVtcHR5IGZyb3plbnNldCBzaW5nbGV0b24KKyAgICAgICAgb2JqID0gZnJvemVuc2V0KCkKKyAgICAgICAgb2JqMiA9IG1hcnNoYWwubG9hZHMobWFyc2hhbC5kdW1wcyhvYmopKQorICAgICAgICBzZWxmLmFzc2VydElzKG9iajIsIG9iaikKKwogCiBjbGFzcyBCdWZmZXJUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSwgSGVscGVyTWl4aW4pOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21hdGgucHkgYi9MaWIvdGVzdC90ZXN0X21hdGgucHkKaW5kZXggYTM3OWE2YS4uZWFhNDFiYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tYXRoLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWF0aC5weQpAQCAtNywxNCArNywxNSBAQAogaW1wb3J0IG1hdGgKIGltcG9ydCBvcwogaW1wb3J0IHBsYXRmb3JtCi1pbXBvcnQgc3lzCiBpbXBvcnQgc3RydWN0CitpbXBvcnQgc3lzCiBpbXBvcnQgc3lzY29uZmlnCiAKIGVwcyA9IDFFLTA1CiBOQU4gPSBmbG9hdCgnbmFuJykKIElORiA9IGZsb2F0KCdpbmYnKQogTklORiA9IGZsb2F0KCctaW5mJykKK0ZMT0FUX01BWCA9IHN5cy5mbG9hdF9pbmZvLm1heAogCiAjIGRldGVjdCBldmlkZW5jZSBvZiBkb3VibGUtcm91bmRpbmc6IGZzdW0gaXMgbm90IGFsd2F5cyBjb3JyZWN0bHkKICMgcm91bmRlZCBvbiBtYWNoaW5lcyB0aGF0IHN1ZmZlciBmcm9tIGRvdWJsZSByb3VuZGluZy4KQEAgLTMwLDYgKzMxLDcgQEAKIG1hdGhfdGVzdGNhc2VzID0gb3MucGF0aC5qb2luKHRlc3RfZGlyLCAnbWF0aF90ZXN0Y2FzZXMudHh0JykKIHRlc3RfZmlsZSA9IG9zLnBhdGguam9pbih0ZXN0X2RpciwgJ2NtYXRoX3Rlc3RjYXNlcy50eHQnKQogCisKIGRlZiB0b191bHBzKHgpOgogICAgICIiIkNvbnZlcnQgYSBub24tTmFOIGZsb2F0IHggdG8gYW4gaW50ZWdlciwgaW4gc3VjaCBhIHdheSB0aGF0CiAgICAgYWRqYWNlbnQgZmxvYXRzIGFyZSBjb252ZXJ0ZWQgdG8gYWRqYWNlbnQgaW50ZWdlcnMuICBUaGVuCkBAIC0zNywyNSArMzksMzkgQEAKICAgICBmbG9hdHMuCiAKICAgICBUaGUgcmVzdWx0cyBmcm9tIHRoaXMgZnVuY3Rpb24gd2lsbCBvbmx5IG1ha2Ugc2Vuc2Ugb24gcGxhdGZvcm1zCi0gICAgd2hlcmUgQyBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgd2hlcmUgbmF0aXZlIGRvdWJsZXMgYXJlIHJlcHJlc2VudGVkIGluIElFRUUgNzU0IGJpbmFyeTY0IGZvcm1hdC4KIAorICAgIE5vdGU6IDAuMCBhbmQgLTAuMCBhcmUgY29udmVydGVkIHRvIDAgYW5kIC0xLCByZXNwZWN0aXZlbHkuCiAgICAgIiIiCiAgICAgbiA9IHN0cnVjdC51bnBhY2soJzxxJywgc3RydWN0LnBhY2soJzxkJywgeCkpWzBdCiAgICAgaWYgbiA8IDA6CiAgICAgICAgIG4gPSB+KG4rMioqNjMpCiAgICAgcmV0dXJuIG4KIAotZGVmIHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgdWxwcz0yMCk6Ci0gICAgIiIiR2l2ZW4gbm9uLU5hTiBmbG9hdHMgYGV4cGVjdGVkYCBhbmQgYGdvdGAsCi0gICAgY2hlY2sgdGhhdCB0aGV5J3JlIGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMuCiAKLSAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLiIiIgorZGVmIHVscCh4KToKKyAgICAiIiJSZXR1cm4gdGhlIHZhbHVlIG9mIHRoZSBsZWFzdCBzaWduaWZpY2FudCBiaXQgb2YgYQorICAgIGZsb2F0IHgsIHN1Y2ggdGhhdCB0aGUgZmlyc3QgZmxvYXQgYmlnZ2VyIHRoYW4geCBpcyB4K3VscCh4KS4KKyAgICBUaGVuLCBnaXZlbiBhbiBleHBlY3RlZCByZXN1bHQgeCBhbmQgYSB0b2xlcmFuY2Ugb2YgbiB1bHBzLAorICAgIHRoZSByZXN1bHQgeSBzaG91bGQgYmUgc3VjaCB0aGF0IGFicyh5LXgpIDw9IG4gKiB1bHAoeCkuCisgICAgVGhlIHJlc3VsdHMgZnJvbSB0aGlzIGZ1bmN0aW9uIHdpbGwgb25seSBtYWtlIHNlbnNlIG9uIHBsYXRmb3JtcworICAgIHdoZXJlIG5hdGl2ZSBkb3VibGVzIGFyZSByZXByZXNlbnRlZCBpbiBJRUVFIDc1NCBiaW5hcnk2NCBmb3JtYXQuCisgICAgIiIiCisgICAgeCA9IGFicyhmbG9hdCh4KSkKKyAgICBpZiBtYXRoLmlzbmFuKHgpIG9yIG1hdGguaXNpbmYoeCk6CisgICAgICAgIHJldHVybiB4CiAKLSAgICB1bHBzX2Vycm9yID0gdG9fdWxwcyhnb3QpIC0gdG9fdWxwcyhleHBlY3RlZCkKLSAgICBpZiBhYnModWxwc19lcnJvcikgPD0gdWxwczoKLSAgICAgICAgcmV0dXJuIE5vbmUKLSAgICByZXR1cm4gImVycm9yID0ge30gdWxwczsgcGVybWl0dGVkIGVycm9yID0ge30gdWxwcyIuZm9ybWF0KHVscHNfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bHBzKQorICAgICMgRmluZCBuZXh0IGZsb2F0IHVwIGZyb20geC4KKyAgICBuID0gc3RydWN0LnVucGFjaygnPHEnLCBzdHJ1Y3QucGFjaygnPGQnLCB4KSlbMF0KKyAgICB4X25leHQgPSBzdHJ1Y3QudW5wYWNrKCc8ZCcsIHN0cnVjdC5wYWNrKCc8cScsIG4gKyAxKSlbMF0KKyAgICBpZiBtYXRoLmlzaW5mKHhfbmV4dCk6CisgICAgICAgICMgQ29ybmVyIGNhc2U6IHggd2FzIHRoZSBsYXJnZXN0IGZpbml0ZSBmbG9hdC4gVGhlbiBpdCdzCisgICAgICAgICMgbm90IGFuIGV4YWN0IHBvd2VyIG9mIHR3bywgc28gd2UgY2FuIHRha2UgdGhlIGRpZmZlcmVuY2UKKyAgICAgICAgIyBiZXR3ZWVuIHggYW5kIHRoZSBwcmV2aW91cyBmbG9hdC4KKyAgICAgICAgeF9wcmV2ID0gc3RydWN0LnVucGFjaygnPGQnLCBzdHJ1Y3QucGFjaygnPHEnLCBuIC0gMSkpWzBdCisgICAgICAgIHJldHVybiB4IC0geF9wcmV2CisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIHhfbmV4dCAtIHgKIAogIyBIZXJlJ3MgYSBwdXJlIFB5dGhvbiB2ZXJzaW9uIG9mIHRoZSBtYXRoLmZhY3RvcmlhbCBhbGdvcml0aG0sIGZvcgogIyBkb2N1bWVudGF0aW9uIGFuZCBjb21wYXJpc29uIHB1cnBvc2VzLgpAQCAtMTA3LDI0ICsxMjMsMjMgQEAKICAgICAgICAgb3V0ZXIgKj0gaW5uZXIKICAgICByZXR1cm4gb3V0ZXIgPDwgKG4gLSBjb3VudF9zZXRfYml0cyhuKSkKIAotZGVmIGFjY19jaGVjayhleHBlY3RlZCwgZ290LCByZWxfZXJyPTJlLTE1LCBhYnNfZXJyID0gNWUtMzIzKToKLSAgICAiIiJEZXRlcm1pbmUgd2hldGhlciBub24tTmFOIGZsb2F0cyBhIGFuZCBiIGFyZSBlcXVhbCB0byB3aXRoaW4gYQotICAgIChzbWFsbCkgcm91bmRpbmcgZXJyb3IuICBUaGUgZGVmYXVsdCB2YWx1ZXMgZm9yIHJlbF9lcnIgYW5kCi0gICAgYWJzX2VyciBhcmUgY2hvc2VuIHRvIGJlIHN1aXRhYmxlIGZvciBwbGF0Zm9ybXMgd2hlcmUgYSBmbG9hdCBpcwotICAgIHJlcHJlc2VudGVkIGJ5IGFuIElFRUUgNzU0IGRvdWJsZS4gIFRoZXkgYWxsb3cgYW4gZXJyb3Igb2YgYmV0d2VlbgotICAgIDkgYW5kIDE5IHVscHMuIiIiCitkZWYgdWxwX2Fic19jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKToKKyAgICAiIiJHaXZlbiBmaW5pdGUgZmxvYXRzIGBleHBlY3RlZGAgYW5kIGBnb3RgLCBjaGVjayB0aGF0IHRoZXkncmUKKyAgICBhcHByb3hpbWF0ZWx5IGVxdWFsIHRvIHdpdGhpbiB0aGUgZ2l2ZW4gbnVtYmVyIG9mIHVscHMgb3IgdGhlCisgICAgZ2l2ZW4gYWJzb2x1dGUgdG9sZXJhbmNlLCB3aGljaGV2ZXIgaXMgYmlnZ2VyLgogCi0gICAgIyBuZWVkIHRvIHNwZWNpYWwgY2FzZSBpbmZpbml0aWVzLCBzaW5jZSBpbmYgLSBpbmYgZ2l2ZXMgbmFuCi0gICAgaWYgbWF0aC5pc2luZihleHBlY3RlZCkgYW5kIGdvdCA9PSBleHBlY3RlZDoKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorICAgIHVscF9lcnJvciA9IGFicyh0b191bHBzKGV4cGVjdGVkKSAtIHRvX3VscHMoZ290KSkKKyAgICBhYnNfZXJyb3IgPSBhYnMoZXhwZWN0ZWQgLSBnb3QpCisKKyAgICAjIFN1Y2NlZWQgaWYgZWl0aGVyIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sLgorICAgIGlmIGFic19lcnJvciA8PSBhYnNfdG9sIG9yIHVscF9lcnJvciA8PSB1bHBfdG9sOgogICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgZXJyb3IgPSBnb3QgLSBleHBlY3RlZAotCi0gICAgcGVybWl0dGVkX2Vycm9yID0gbWF4KGFic19lcnIsIHJlbF9lcnIgKiBhYnMoZXhwZWN0ZWQpKQotICAgIGlmIGFicyhlcnJvcikgPCBwZXJtaXR0ZWRfZXJyb3I6Ci0gICAgICAgIHJldHVybiBOb25lCi0gICAgcmV0dXJuICJlcnJvciA9IHt9OyBwZXJtaXR0ZWQgZXJyb3IgPSB7fSIuZm9ybWF0KGVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXR0ZWRfZXJyb3IpCisgICAgZWxzZToKKyAgICAgICAgZm10ID0gKCJlcnJvciA9IHs6LjNnfSAoezpkfSB1bHBzKTsgIgorICAgICAgICAgICAgICAgInBlcm1pdHRlZCBlcnJvciA9IHs6LjNnfSBvciB7OmR9IHVscHMiKQorICAgICAgICByZXR1cm4gZm10LmZvcm1hdChhYnNfZXJyb3IsIHVscF9lcnJvciwgYWJzX3RvbCwgdWxwX3RvbCkKIAogZGVmIHBhcnNlX210ZXN0ZmlsZShmbmFtZSk6CiAgICAgIiIiUGFyc2UgYSBmaWxlIHdpdGggdGVzdCB2YWx1ZXMKQEAgLTE1MSw2ICsxNjYsNyBAQAogCiAgICAgICAgICAgICB5aWVsZCAoaWQsIGZuLCBmbG9hdChhcmcpLCBmbG9hdChleHApLCBmbGFncykKIAorCiBkZWYgcGFyc2VfdGVzdGZpbGUoZm5hbWUpOgogICAgICIiIlBhcnNlIGEgZmlsZSB3aXRoIHRlc3QgdmFsdWVzCiAKQEAgLTE3Miw4ICsxODgsNTMgQEAKICAgICAgICAgICAgIHlpZWxkIChpZCwgZm4sCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoYXJnX3JlYWwpLCBmbG9hdChhcmdfaW1hZyksCiAgICAgICAgICAgICAgICAgICAgZmxvYXQoZXhwX3JlYWwpLCBmbG9hdChleHBfaW1hZyksCi0gICAgICAgICAgICAgICAgICAgZmxhZ3MKLSAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICAgICBmbGFncykKKworCitkZWYgcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICMgQ29tbW9uIGxvZ2ljIG9mIE1hdGhUZXN0cy4oZnRlc3QsIHRlc3RfdGVzdGNhc2VzLCB0ZXN0X210ZXN0Y2FzZXMpCisgICAgIiIiQ29tcGFyZSBhcmd1bWVudHMgZXhwZWN0ZWQgYW5kIGdvdCwgYXMgZmxvYXRzLCBpZiBlaXRoZXIKKyAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgdWxwKGV4cGVjdGVkKSBvciBhYnNvbHV0ZWx5IChpZiBnaXZlbiBhbmQgZ3JlYXRlcikuCisKKyAgICBBcyBhIGNvbnZlbmllbmNlLCB3aGVuIG5laXRoZXIgYXJndW1lbnQgaXMgYSBmbG9hdCwgYW5kIGZvcgorICAgIG5vbi1maW5pdGUgZmxvYXRzLCBleGFjdCBlcXVhbGl0eSBpcyBkZW1hbmRlZC4gQWxzbywgbmFuPT1uYW4KKyAgICBhcyBmYXIgYXMgdGhpcyBmdW5jdGlvbiBpcyBjb25jZXJuZWQuCisKKyAgICBSZXR1cm5zIE5vbmUgb24gc3VjY2VzcyBhbmQgYW4gZXJyb3IgbWVzc2FnZSBvbiBmYWlsdXJlLgorICAgICIiIgorCisgICAgIyBDaGVjayBleGFjdGx5IGVxdWFsIChhcHBsaWVzIGFsc28gdG8gc3RyaW5ncyByZXByZXNlbnRpbmcgZXhjZXB0aW9ucykKKyAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6CisgICAgICAgIHJldHVybiBOb25lCisKKyAgICBmYWlsdXJlID0gIm5vdCBlcXVhbCIKKworICAgICMgVHVybiBtaXhlZCBmbG9hdCBhbmQgaW50IGNvbXBhcmlzb24gKGUuZy4gZmxvb3IoKSkgdG8gYWxsLWZsb2F0CisgICAgaWYgaXNpbnN0YW5jZShleHBlY3RlZCwgZmxvYXQpIGFuZCBpc2luc3RhbmNlKGdvdCwgaW50KToKKyAgICAgICAgZ290ID0gZmxvYXQoZ290KQorICAgIGVsaWYgaXNpbnN0YW5jZShnb3QsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgaW50KToKKyAgICAgICAgZXhwZWN0ZWQgPSBmbG9hdChleHBlY3RlZCkKKworICAgIGlmIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KSBhbmQgaXNpbnN0YW5jZShnb3QsIGZsb2F0KToKKyAgICAgICAgaWYgbWF0aC5pc25hbihleHBlY3RlZCkgYW5kIG1hdGguaXNuYW4oZ290KToKKyAgICAgICAgICAgICMgUGFzcywgc2luY2UgYm90aCBuYW4KKyAgICAgICAgICAgIGZhaWx1cmUgPSBOb25lCisgICAgICAgIGVsaWYgbWF0aC5pc2luZihleHBlY3RlZCkgb3IgbWF0aC5pc2luZihnb3QpOgorICAgICAgICAgICAgIyBXZSBhbHJlYWR5IGtub3cgdGhleSdyZSBub3QgZXF1YWwsIGRyb3AgdGhyb3VnaCB0byBmYWlsdXJlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICAjIEJvdGggYXJlIGZpbml0ZSBmbG9hdHMgKG5vdykuIEFyZSB0aGV5IGNsb3NlIGVub3VnaD8KKyAgICAgICAgICAgIGZhaWx1cmUgPSB1bHBfYWJzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisKKyAgICAjIGFyZ3VtZW50cyBhcmUgbm90IGVxdWFsLCBhbmQgaWYgbnVtZXJpYywgYXJlIHRvbyBmYXIgYXBhcnQKKyAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICBmYWlsX2ZtdCA9ICJleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9tc2cgPSBmYWlsX2ZtdC5mb3JtYXQoZXhwZWN0ZWQsIGdvdCkKKyAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoZmFpbHVyZSkKKyAgICAgICAgcmV0dXJuIGZhaWxfbXNnCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIE5vbmUKIAogIyBDbGFzcyBwcm92aWRpbmcgYW4gX19pbmRleF9fIG1ldGhvZC4KIGNsYXNzIE15SW5kZXhhYmxlKG9iamVjdCk6CkBAIC0xODUsMTggKzI0NiwyNCBAQAogCiBjbGFzcyBNYXRoVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIHZhbHVlLCBleHBlY3RlZCk6Ci0gICAgICAgIGlmIGFicyh2YWx1ZS1leHBlY3RlZCkgPiBlcHM6Ci0gICAgICAgICAgICAjIFVzZSAlciBpbnN0ZWFkIG9mICVmIHNvIHRoZSBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICAjIGRpc3BsYXlzIGZ1bGwgcHJlY2lzaW9uLiBPdGhlcndpc2UgZGlzY3JlcGFuY2llcwotICAgICAgICAgICAgIyBpbiB0aGUgbGFzdCBmZXcgYml0cyB3aWxsIGxlYWQgdG8gdmVyeSBjb25mdXNpbmcKLSAgICAgICAgICAgICMgZXJyb3IgbWVzc2FnZXMKLSAgICAgICAgICAgIHNlbGYuZmFpbCgnJXMgcmV0dXJuZWQgJXIsIGV4cGVjdGVkICVyJyAlCi0gICAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHZhbHVlLCBleHBlY3RlZCkpCisgICAgZGVmIGZ0ZXN0KHNlbGYsIG5hbWUsIGdvdCwgZXhwZWN0ZWQsIHVscF90b2w9NSwgYWJzX3RvbD0wLjApOgorICAgICAgICAiIiJDb21wYXJlIGFyZ3VtZW50cyBleHBlY3RlZCBhbmQgZ290LCBhcyBmbG9hdHMsIGlmIGVpdGhlcgorICAgICAgICBpcyBhIGZsb2F0LCB1c2luZyBhIHRvbGVyYW5jZSBleHByZXNzZWQgaW4gbXVsdGlwbGVzIG9mCisgICAgICAgIHVscChleHBlY3RlZCkgb3IgYWJzb2x1dGVseSwgd2hpY2hldmVyIGlzIGdyZWF0ZXIuCisKKyAgICAgICAgQXMgYSBjb252ZW5pZW5jZSwgd2hlbiBuZWl0aGVyIGFyZ3VtZW50IGlzIGEgZmxvYXQsIGFuZCBmb3IKKyAgICAgICAgbm9uLWZpbml0ZSBmbG9hdHMsIGV4YWN0IGVxdWFsaXR5IGlzIGRlbWFuZGVkLiBBbHNvLCBuYW49PW5hbgorICAgICAgICBpbiB0aGlzIGZ1bmN0aW9uLgorICAgICAgICAiIiIKKyAgICAgICAgZmFpbHVyZSA9IHJlc3VsdF9jaGVjayhleHBlY3RlZCwgZ290LCB1bHBfdG9sLCBhYnNfdG9sKQorICAgICAgICBpZiBmYWlsdXJlIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJ7fToge30iLmZvcm1hdChuYW1lLCBmYWlsdXJlKSkKIAogICAgIGRlZiB0ZXN0Q29uc3RhbnRzKHNlbGYpOgotICAgICAgICBzZWxmLmZ0ZXN0KCdwaScsIG1hdGgucGksIDMuMTQxNTkyNikKLSAgICAgICAgc2VsZi5mdGVzdCgnZScsIG1hdGguZSwgMi43MTgyODE4KQorICAgICAgICAjIFJlZjogQWJyYW1vd2l0eiAmIFN0ZWd1biAoRG92ZXIsIDE5NjUpCisgICAgICAgIHNlbGYuZnRlc3QoJ3BpJywgbWF0aC5waSwgMy4xNDE1OTI2NTM1ODk3OTMyMzg0NjI2NDMpCisgICAgICAgIHNlbGYuZnRlc3QoJ2UnLCBtYXRoLmUsIDIuNzE4MjgxODI4NDU5MDQ1MjM1MzYwMjg3KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1hdGgudGF1LCAyKm1hdGgucGkpCiAKICAgICBkZWYgdGVzdEFjb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5hY29zKQpAQCAtMjA1LDYgKzI3Miw4IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ2Fjb3MoMSknLCBtYXRoLmFjb3MoMSksIDApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFjb3MsIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYWNvcywgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hY29zLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hY29zKE5BTikpKQogCiAgICAgZGVmIHRlc3RBY29zaChzZWxmKToKQEAgLTIyNCw2ICsyOTMsOCBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdhc2luKDEpJywgbWF0aC5hc2luKDEpLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgSU5GKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmFzaW4sIE5JTkYpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG1hdGguYXNpbiwgMSArIGVwcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5hc2luLCAtMSAtIGVwcykKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5hc2luKE5BTikpKQogCiAgICAgZGVmIHRlc3RBc2luaChzZWxmKToKQEAgLTM3OCw5ICs0NDksOSBAQAogCiAgICAgZGVmIHRlc3RDb3Moc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5jb3MpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcygtcGkvMiknLCBtYXRoLmNvcygtbWF0aC5waS8yKSwgMCkKKyAgICAgICAgc2VsZi5mdGVzdCgnY29zKC1waS8yKScsIG1hdGguY29zKC1tYXRoLnBpLzIpLCAwLCBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgnY29zKDApJywgbWF0aC5jb3MoMCksIDEpCi0gICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ2NvcyhwaS8yKScsIG1hdGguY29zKG1hdGgucGkvMiksIDAsIGFic190b2w9dWxwKDEpKQogICAgICAgICBzZWxmLmZ0ZXN0KCdjb3MocGkpJywgbWF0aC5jb3MobWF0aC5waSksIC0xKQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmNvcyhJTkYpKSkKQEAgLTQwMyw2ICs0NzQsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKHBpKScsIG1hdGguZGVncmVlcyhtYXRoLnBpKSwgMTgwLjApCiAgICAgICAgIHNlbGYuZnRlc3QoJ2RlZ3JlZXMocGkvMiknLCBtYXRoLmRlZ3JlZXMobWF0aC5waS8yKSwgOTAuMCkKICAgICAgICAgc2VsZi5mdGVzdCgnZGVncmVlcygtcGkvNCknLCBtYXRoLmRlZ3JlZXMoLW1hdGgucGkvNCksIC00NS4wKQorICAgICAgICBzZWxmLmZ0ZXN0KCdkZWdyZWVzKDApJywgbWF0aC5kZWdyZWVzKDApLCAwKQogCiAgICAgZGVmIHRlc3RFeHAoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5leHApCkBAIC00MTIsNiArNDg0LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmV4cChJTkYpLCBJTkYpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5leHAoTklORiksIDAuKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLmV4cChOQU4pKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5leHAsIDEwMDAwMDApCiAKICAgICBkZWYgdGVzdEZhYnMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5mYWJzKQpAQCAtNjU0LDYgKzcyNyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5oeXBvdChJTkYsIE5BTiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5BTiwgTklORiksIElORikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmh5cG90KE5JTkYsIE5BTiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwgbWF0aC5oeXBvdCwgRkxPQVRfTUFYLCBGTE9BVF9NQVgpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKG1hdGguaHlwb3QoMS4wLCBOQU4pKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4obWF0aC5oeXBvdChOQU4sIC0yLjApKSkKIApAQCAtNzA3LDggKzc4MSwxMCBAQAogCiAgICAgZGVmIHRlc3RMb2cxcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBtYXRoLmxvZzFwKQotICAgICAgICBuPSAyKio5MAotICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBmb3IgbiBpbiBbMiwgMioqOTAsIDIqKjMwMF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEFsbW9zdEVxdWFsKG1hdGgubG9nMXAobiksIG1hdGgubG9nMXAoZmxvYXQobikpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBtYXRoLmxvZzFwLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtYXRoLmxvZzFwKElORiksIElORikKIAogICAgIEByZXF1aXJlc19JRUVFXzc1NAogICAgIGRlZiB0ZXN0TG9nMihzZWxmKToKQEAgLTkyMiw2ICs5OTgsNyBAQAogICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDE4MCknLCBtYXRoLnJhZGlhbnMoMTgwKSwgbWF0aC5waSkKICAgICAgICAgc2VsZi5mdGVzdCgncmFkaWFucyg5MCknLCBtYXRoLnJhZGlhbnMoOTApLCBtYXRoLnBpLzIpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3JhZGlhbnMoLTQ1KScsIG1hdGgucmFkaWFucygtNDUpLCAtbWF0aC5waS80KQorICAgICAgICBzZWxmLmZ0ZXN0KCdyYWRpYW5zKDApJywgbWF0aC5yYWRpYW5zKDApLCAwKQogCiAgICAgZGVmIHRlc3RTaW4oc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC5zaW4pCkBAIC05NTEsNiArMTAyOCw3IEBACiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoMSknLCBtYXRoLnNxcnQoMSksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3NxcnQoNCknLCBtYXRoLnNxcnQoNCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWF0aC5zcXJ0KElORiksIElORikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCAtMSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbWF0aC5zcXJ0LCBOSU5GKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnNxcnQoTkFOKSkpCiAKQEAgLTk3MCw3ICsxMDQ4LDggQEAKICAgICBkZWYgdGVzdFRhbmgoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgbWF0aC50YW5oKQogICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDApJywgbWF0aC50YW5oKDApLCAwKQotICAgICAgICBzZWxmLmZ0ZXN0KCd0YW5oKDEpK3RhbmgoLTEpJywgbWF0aC50YW5oKDEpK21hdGgudGFuaCgtMSksIDApCisgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoMSkrdGFuaCgtMSknLCBtYXRoLnRhbmgoMSkrbWF0aC50YW5oKC0xKSwgMCwKKyAgICAgICAgICAgICAgICAgICBhYnNfdG9sPXVscCgxKSkKICAgICAgICAgc2VsZi5mdGVzdCgndGFuaChpbmYpJywgbWF0aC50YW5oKElORiksIDEpCiAgICAgICAgIHNlbGYuZnRlc3QoJ3RhbmgoLWluZiknLCBtYXRoLnRhbmgoTklORiksIC0xKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihtYXRoLnRhbmgoTkFOKSkpCkBAIC0xMDIwLDcgKzEwOTksOCBAQAogCiAgICAgZGVmIHRlc3RJc25hbihzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoIm5hbiIpKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oZmxvYXQoImluZiIpKiAwLikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKGZsb2F0KCItbmFuIikpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihmbG9hdCgiaW5mIikgKiAwLikpCiAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobWF0aC5pc25hbihmbG9hdCgiaW5mIikpKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMC4pKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1hdGguaXNuYW4oMS4pKQpAQCAtMTA4NCwzMCArMTE2NCw2NCBAQAogCiAgICAgQHJlcXVpcmVzX0lFRUVfNzU0CiAgICAgZGVmIHRlc3RfdGVzdGZpbGUoc2VsZik6CisgICAgICAgICMgU29tZSB0ZXN0cyBuZWVkIHRvIGJlIHNraXBwZWQgb24gYW5jaWVudCBPUyBYIHZlcnNpb25zLgorICAgICAgICAjIFNlZSBpc3N1ZSAjMjc5NTMuCisgICAgICAgIFNLSVBfT05fVElHRVIgPSB7J3RhbjAwNjQnfQorCisgICAgICAgIG9zeF92ZXJzaW9uID0gTm9uZQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CisgICAgICAgICAgICB2ZXJzaW9uX3R4dCA9IHBsYXRmb3JtLm1hY192ZXIoKVswXQorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIG9zeF92ZXJzaW9uID0gdHVwbGUobWFwKGludCwgdmVyc2lvbl90eHQuc3BsaXQoJy4nKSkpCisgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKKworICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyLCBhaSwgZXIsIGVpLCBmbGFncyBpbiBwYXJzZV90ZXN0ZmlsZSh0ZXN0X2ZpbGUpOgotICAgICAgICAgICAgIyBTa2lwIGlmIGVpdGhlciB0aGUgaW5wdXQgb3IgcmVzdWx0IGlzIGNvbXBsZXgsIG9yIGlmCi0gICAgICAgICAgICAjIGZsYWdzIGlzIG5vbmVtcHR5Ci0gICAgICAgICAgICBpZiBhaSAhPSAwLiBvciBlaSAhPSAwLiBvciBmbGFnczoKKyAgICAgICAgICAgICMgU2tpcCBpZiBlaXRoZXIgdGhlIGlucHV0IG9yIHJlc3VsdCBpcyBjb21wbGV4CisgICAgICAgICAgICBpZiBhaSAhPSAwLjAgb3IgZWkgIT0gMC4wOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBmbiBpbiBbJ3JlY3QnLCAncG9sYXInXToKICAgICAgICAgICAgICAgICAjIG5vIHJlYWwgdmVyc2lvbnMgb2YgcmVjdCwgcG9sYXIKICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBTa2lwIGNlcnRhaW4gdGVzdHMgb24gT1MgWCAxMC40LgorICAgICAgICAgICAgaWYgb3N4X3ZlcnNpb24gaXMgbm90IE5vbmUgYW5kIG9zeF92ZXJzaW9uIDwgKDEwLCA1KToKKyAgICAgICAgICAgICAgICBpZiBpZCBpbiBTS0lQX09OX1RJR0VSOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICBmdW5jID0gZ2V0YXR0cihtYXRoLCBmbikKKworICAgICAgICAgICAgaWYgJ2ludmFsaWQnIGluIGZsYWdzIG9yICdkaXZpZGUtYnktemVybycgaW4gZmxhZ3M6CisgICAgICAgICAgICAgICAgZXIgPSAnVmFsdWVFcnJvcicKKyAgICAgICAgICAgIGVsaWYgJ292ZXJmbG93JyBpbiBmbGFnczoKKyAgICAgICAgICAgICAgICBlciA9ICdPdmVyZmxvd0Vycm9yJworCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZnVuYyhhcikKLSAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCgiVW5leHBlY3RlZCBWYWx1ZUVycm9yOiAlc1xuICAgICAgICAiICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbiB0ZXN0ICVzOiVzKCVyKVxuIikgJSAoZXhjLmFyZ3NbMF0sIGlkLCBmbiwgYXIpKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbChtZXNzYWdlKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gJ1ZhbHVlRXJyb3InCiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKLSAgICAgICAgICAgICAgICBtZXNzYWdlID0gKCJVbmV4cGVjdGVkIE92ZXJmbG93RXJyb3IgaW4gIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAidGVzdCAlczolcyglcilcbiIgJSAoaWQsIGZuLCBhcikpCi0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKG1lc3NhZ2UpCi0gICAgICAgICAgICBzZWxmLmZ0ZXN0KCIlczolcyglcikiICUgKGlkLCBmbiwgYXIpLCByZXN1bHQsIGVyKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9ICdPdmVyZmxvd0Vycm9yJworCisgICAgICAgICAgICAjIERlZmF1bHQgdG9sZXJhbmNlcworICAgICAgICAgICAgdWxwX3RvbCwgYWJzX3RvbCA9IDUsIDAuMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGVyLCByZXN1bHQsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXIsIGZhaWx1cmUpCisgICAgICAgICAgICBmYWlsdXJlcy5hcHBlbmQobXNnKQorCisgICAgICAgIGlmIGZhaWx1cmVzOgorICAgICAgICAgICAgc2VsZi5mYWlsKCdGYWlsdXJlcyBpbiB0ZXN0X3Rlc3RmaWxlOlxuICAnICsKKyAgICAgICAgICAgICAgICAgICAgICAnXG4gICcuam9pbihmYWlsdXJlcykpCiAKICAgICBAcmVxdWlyZXNfSUVFRV83NTQKICAgICBkZWYgdGVzdF9tdGVzdGZpbGUoc2VsZik6Ci0gICAgICAgIGZhaWxfZm10ID0gInt9Ont9KHshcn0pOiBleHBlY3RlZCB7IXJ9LCBnb3QgeyFyfSIKKyAgICAgICAgZmFpbF9mbXQgPSAie306IHt9KHshcn0pOiB7fSIKIAogICAgICAgICBmYWlsdXJlcyA9IFtdCiAgICAgICAgIGZvciBpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGZsYWdzIGluIHBhcnNlX210ZXN0ZmlsZShtYXRoX3Rlc3RjYXNlcyk6CkBAIC0xMTI1LDQxICsxMjM5LDQ4IEBACiAgICAgICAgICAgICBleGNlcHQgT3ZlcmZsb3dFcnJvcjoKICAgICAgICAgICAgICAgICBnb3QgPSAnT3ZlcmZsb3dFcnJvcicKIAotICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IE5vbmUKLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZ290LCBmbG9hdCkgYW5kIGlzaW5zdGFuY2UoZXhwZWN0ZWQsIGZsb2F0KToKLSAgICAgICAgICAgICAgICBpZiBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbWF0aC5pc25hbihnb3QpOgotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBtYXRoLmlzbmFuKGV4cGVjdGVkKSBhbmQgbm90IG1hdGguaXNuYW4oZ290KToKLSAgICAgICAgICAgICAgICAgICAgaWYgZm4gPT0gJ2xnYW1tYSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIHdlIHVzZSBhIHdlYWtlciBhY2N1cmFjeSB0ZXN0IGZvciBsZ2FtbWE7Ci0gICAgICAgICAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGEgZmV3IG11bHRpcGxlcyBvZiB0aGUgbWFjaGluZSBhY2N1cmFjeSwgaW4KLSAgICAgICAgICAgICAgICAgICAgICAgICMgZ2VuZXJhbC4KLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSBhY2NfY2hlY2soZXhwZWN0ZWQsIGdvdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsX2VyciA9IDVlLTE1LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhYnNfZXJyID0gNWUtMTUpCi0gICAgICAgICAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBlcmZjIGhhcyBsZXNzLXRoYW4taWRlYWwgYWNjdXJhY3kgZm9yIGxhcmdlCi0gICAgICAgICAgICAgICAgICAgICAgICAjIGFyZ3VtZW50cyAoeCB+IDI1IG9yIHNvKSwgbWFpbmx5IGR1ZSB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KLSAgICAgICAgICAgICAgICAgICAgICAgICMKLSAgICAgICAgICAgICAgICAgICAgICAgICMgWFhYIFdvdWxkIGJlIGJldHRlciB0byB3ZWFrZW4gdGhpcyB0ZXN0IG9ubHkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgZm9yIGxhcmdlIHgsIGluc3RlYWQgb2YgZm9yIGFsbCB4LgotICAgICAgICAgICAgICAgICAgICAgICAgYWNjdXJhY3lfZmFpbHVyZSA9IHVscHNfY2hlY2soZXhwZWN0ZWQsIGdvdCwgMjAwMCkKKyAgICAgICAgICAgICMgRGVmYXVsdCB0b2xlcmFuY2VzCisgICAgICAgICAgICB1bHBfdG9sLCBhYnNfdG9sID0gNSwgMC4wCiAKLSAgICAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGFjY3VyYWN5X2ZhaWx1cmUgPSB1bHBzX2NoZWNrKGV4cGVjdGVkLCBnb3QsIDIwKQotICAgICAgICAgICAgICAgICAgICBpZiBhY2N1cmFjeV9mYWlsdXJlIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgIyBFeGNlcHRpb25zIHRvIHRoZSBkZWZhdWx0cworICAgICAgICAgICAgaWYgZm4gPT0gJ2dhbW1hJzoKKyAgICAgICAgICAgICAgICAjIEV4cGVyaW1lbnRhbCByZXN1bHRzIG9uIG9uZSBwbGF0Zm9ybSBnYXZlCisgICAgICAgICAgICAgICAgIyBhbiBhY2N1cmFjeSBvZiA8PSAxMCB1bHBzIGFjcm9zcyB0aGUgZW50aXJlIGZsb2F0CisgICAgICAgICAgICAgICAgIyBkb21haW4uIFdlIHdlYWtlbiB0aGF0IHRvIHJlcXVpcmUgMjAgdWxwIGFjY3VyYWN5LgorICAgICAgICAgICAgICAgIHVscF90b2wgPSAyMAogCi0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGdvdCwgc3RyKSBhbmQgaXNpbnN0YW5jZShleHBlY3RlZCwgc3RyKToKLSAgICAgICAgICAgICAgICBpZiBnb3QgPT0gZXhwZWN0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBlbGlmIGZuID09ICdsZ2FtbWEnOgorICAgICAgICAgICAgICAgICMgd2UgdXNlIGEgd2Vha2VyIGFjY3VyYWN5IHRlc3QgZm9yIGxnYW1tYTsKKyAgICAgICAgICAgICAgICAjIGxnYW1tYSBvbmx5IGFjaGlldmVzIGFuIGFic29sdXRlIGVycm9yIG9mCisgICAgICAgICAgICAgICAgIyBhIGZldyBtdWx0aXBsZXMgb2YgdGhlIG1hY2hpbmUgYWNjdXJhY3ksIGluCisgICAgICAgICAgICAgICAgIyBnZW5lcmFsLgorICAgICAgICAgICAgICAgIGFic190b2wgPSAxZS0xNQogCi0gICAgICAgICAgICBmYWlsX21zZyA9IGZhaWxfZm10LmZvcm1hdChpZCwgZm4sIGFyZywgZXhwZWN0ZWQsIGdvdCkKLSAgICAgICAgICAgIGlmIGFjY3VyYWN5X2ZhaWx1cmUgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgICAgZmFpbF9tc2cgKz0gJyAoe30pJy5mb3JtYXQoYWNjdXJhY3lfZmFpbHVyZSkKLSAgICAgICAgICAgIGZhaWx1cmVzLmFwcGVuZChmYWlsX21zZykKKyAgICAgICAgICAgIGVsaWYgZm4gPT0gJ2VyZmMnIGFuZCBhcmcgPj0gMC4wOgorICAgICAgICAgICAgICAgICMgZXJmYyBoYXMgbGVzcy10aGFuLWlkZWFsIGFjY3VyYWN5IGZvciBsYXJnZQorICAgICAgICAgICAgICAgICMgYXJndW1lbnRzICh4IH4gMjUgb3Igc28pLCBtYWlubHkgZHVlIHRvIHRoZQorICAgICAgICAgICAgICAgICMgZXJyb3IgaW52b2x2ZWQgaW4gY29tcHV0aW5nIGV4cCgteCp4KS4KKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgIyBPYnNlcnZlZCBiZXR3ZWVuIENQeXRob24gYW5kIG1wbWF0aCBhdCAyNSBkcDoKKyAgICAgICAgICAgICAgICAjICAgICAgIHggPCAgMCA6IGVyciA8PSAyIHVscAorICAgICAgICAgICAgICAgICMgIDAgPD0geCA8ICAxIDogZXJyIDw9IDEwIHVscAorICAgICAgICAgICAgICAgICMgIDEgPD0geCA8IDEwIDogZXJyIDw9IDEwMCB1bHAKKyAgICAgICAgICAgICAgICAjIDEwIDw9IHggPCAyMCA6IGVyciA8PSAzMDAgdWxwCisgICAgICAgICAgICAgICAgIyAyMCA8PSB4ICAgICAgOiA8IDYwMCB1bHAKKyAgICAgICAgICAgICAgICAjCisgICAgICAgICAgICAgICAgaWYgYXJnIDwgMS4wOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAKKyAgICAgICAgICAgICAgICBlbGlmIGFyZyA8IDEwLjA6CisgICAgICAgICAgICAgICAgICAgIHVscF90b2wgPSAxMDAKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICB1bHBfdG9sID0gMTAwMAorCisgICAgICAgICAgICBmYWlsdXJlID0gcmVzdWx0X2NoZWNrKGV4cGVjdGVkLCBnb3QsIHVscF90b2wsIGFic190b2wpCisgICAgICAgICAgICBpZiBmYWlsdXJlIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgY29udGludWUKKworICAgICAgICAgICAgbXNnID0gZmFpbF9mbXQuZm9ybWF0KGlkLCBmbiwgYXJnLCBmYWlsdXJlKQorICAgICAgICAgICAgZmFpbHVyZXMuYXBwZW5kKG1zZykKIAogICAgICAgICBpZiBmYWlsdXJlczoKICAgICAgICAgICAgIHNlbGYuZmFpbCgnRmFpbHVyZXMgaW4gdGVzdF9tdGVzdGZpbGU6XG4gICcgKwpAQCAtMTI3Miw3ICsxMzkzLDggQEAKIAogICAgICAgICBkZWNpbWFsX2V4YW1wbGVzID0gWyhEZWNpbWFsKCcxLjAwMDAwMDAxJyksIERlY2ltYWwoJzEuMCcpKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMjAnKSwgRGVjaW1hbCgnMS4wZS0yMCcpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoRGVjaW1hbCgnMS4wMDAwMDAwMWUtMTAwJyksIERlY2ltYWwoJzEuMGUtMTAwJykpXQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIChEZWNpbWFsKCcxLjAwMDAwMDAxZS0xMDAnKSwgRGVjaW1hbCgnMS4wZS0xMDAnKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKERlY2ltYWwoJzEuMDAwMDAwMDFlMjAnKSwgRGVjaW1hbCgnMS4wZTIwJykpXQogICAgICAgICBzZWxmLmFzc2VydEFsbENsb3NlKGRlY2ltYWxfZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShkZWNpbWFsX2V4YW1wbGVzLCByZWxfdG9sPTFlLTkpCiAKQEAgLTEyODAsOCArMTQwMiwxMCBAQAogICAgICAgICAjIHRlc3Qgd2l0aCBGcmFjdGlvbiB2YWx1ZXMKICAgICAgICAgZnJvbSBmcmFjdGlvbnMgaW1wb3J0IEZyYWN0aW9uCiAKLSAgICAgICAgIyBjb3VsZCB1c2Ugc29tZSBtb3JlIGV4YW1wbGVzIGhlcmUhCi0gICAgICAgIGZyYWN0aW9uX2V4YW1wbGVzID0gWyhGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpXQorICAgICAgICBmcmFjdGlvbl9leGFtcGxlcyA9IFsKKyAgICAgICAgICAgIChGcmFjdGlvbigxLCAxMDAwMDAwMDApICsgMSwgRnJhY3Rpb24oMSkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwMDAwMDAwMSksIEZyYWN0aW9uKDEwMDAwMDAwMCkpLAorICAgICAgICAgICAgKEZyYWN0aW9uKDEwKio4ICsgMSwgMTAqKjI4KSwgRnJhY3Rpb24oMSwgMTAqKjIwKSldCiAgICAgICAgIHNlbGYuYXNzZXJ0QWxsQ2xvc2UoZnJhY3Rpb25fZXhhbXBsZXMsIHJlbF90b2w9MWUtOCkKICAgICAgICAgc2VsZi5hc3NlcnRBbGxOb3RDbG9zZShmcmFjdGlvbl9leGFtcGxlcywgcmVsX3RvbD0xZS05KQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X21pbWV0eXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CmluZGV4IDY4NTY1OTMuLjRlMmM5MDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbWltZXR5cGVzLnB5CkBAIC0xMDEsNSArMTAxLDExIEBACiAgICAgICAgIGVxKHNlbGYuZGIuZ3Vlc3NfdHlwZSgiaW1hZ2UuanBnIiksICgiaW1hZ2UvanBlZyIsIE5vbmUpKQogICAgICAgICBlcShzZWxmLmRiLmd1ZXNzX3R5cGUoImltYWdlLnBuZyIpLCAoImltYWdlL3BuZyIsIE5vbmUpKQogCisKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBtaW1ldHlwZXMpCisKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbW1hcC5weSBiL0xpYi90ZXN0L3Rlc3RfbW1hcC5weQppbmRleCBmM2Y3MGNjLi41NmQ4NWU3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21tYXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tbWFwLnB5CkBAIC03MTMsNiArNzEzLDEzIEBACiAgICAgICAgIGdjX2NvbGxlY3QoKQogICAgICAgICBzZWxmLmFzc2VydElzKHdyKCksIE5vbmUpCiAKKyAgICBkZWYgdGVzdF93cml0ZV9yZXR1cm5pbmdfdGhlX251bWJlcl9vZl9ieXRlc193cml0dGVuKHNlbGYpOgorICAgICAgICBtbSA9IG1tYXAubW1hcCgtMSwgMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiIiKSwgMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiIngiKSwgMSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtbS53cml0ZShiInl6IiksIDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobW0ud3JpdGUoYiJweXRob24iKSwgNikKKwogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAnbnQnLCAnY2Fubm90IHJlc2l6ZSBhbm9ueW1vdXMgbW1hcHMgb24gV2luZG93cycpCiAgICAgZGVmIHRlc3RfcmVzaXplX3Bhc3RfcG9zKHNlbGYpOgogICAgICAgICBtID0gbW1hcC5tbWFwKC0xLCA4MTkyKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tc2lsaWIucHkgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQppbmRleCA4ZWYzMzRmLi5mNjU2ZjcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQorKysgYi9MaWIvdGVzdC90ZXN0X21zaWxpYi5weQpAQCAtMSw2ICsxLDUgQEAKICIiIiBUZXN0IHN1aXRlIGZvciB0aGUgY29kZSBpbiBtc2lsaWIgIiIiCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcwogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9tb2R1bGUKIG1zaWxpYiA9IGltcG9ydF9tb2R1bGUoJ21zaWxpYicpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkgYi9MaWIvdGVzdC90ZXN0X211bHRpYnl0ZWNvZGVjLnB5CmluZGV4IDhkN2EyMTMuLjAxYTFjZDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlieXRlY29kZWMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9tdWx0aWJ5dGVjb2RlYy5weQpAQCAtNSw3ICs1LDcgQEAKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCi1pbXBvcnQgdW5pdHRlc3QsIGlvLCBjb2RlY3MsIHN5cywgb3MKK2ltcG9ydCB1bml0dGVzdCwgaW8sIGNvZGVjcywgc3lzCiBpbXBvcnQgX211bHRpYnl0ZWNvZGVjCiAKIEFMTF9DSktFTkNPRElOR1MgPSBbCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9yay5weQppbmRleCAyYmY0ZTc1Li45ZjIyNTAwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmsucHkKQEAgLTEsNiArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCisKIHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nLmluc3RhbGxfdGVzdHNfaW5fbW9kdWxlX2RpY3QoZ2xvYmFscygpLCAnZm9yaycpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5IGIvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfZm9ya3NlcnZlci5weQppbmRleCAxOTNhMDRhLi40MDdiYjNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19mb3Jrc2VydmVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIucHkKQEAgLTEsNiArMSwxMSBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcKIAorZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CisKK2lmIHN1cHBvcnQuUEdPOgorICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ0ZXN0IGlzIG5vdCBoZWxwZnVsIGZvciBQR08iKQorCiB0ZXN0Ll90ZXN0X211bHRpcHJvY2Vzc2luZy5pbnN0YWxsX3Rlc3RzX2luX21vZHVsZV9kaWN0KGdsb2JhbHMoKSwgJ2ZvcmtzZXJ2ZXInKQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX21haW5faGFuZGxpbmcucHkKaW5kZXggNTIyNzNlYS4uMzI1OTNkYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZy5weQorKysgYi9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19tYWluX2hhbmRsaW5nLnB5CkBAIC02LDcgKzYsNiBAQAogCiBpbXBvcnQgaW1wb3J0bGliCiBpbXBvcnQgaW1wb3J0bGliLm1hY2hpbmVyeQotaW1wb3J0IHppcGltcG9ydAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3lzCiBpbXBvcnQgb3MKQEAgLTE1LDcgKzE0LDEwIEBACiAKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0ICgKICAgICBtYWtlX3BrZywgbWFrZV9zY3JpcHQsIG1ha2VfemlwX3BrZywgbWFrZV96aXBfc2NyaXB0LAotICAgIGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZSwgc3Bhd25fcHl0aG9uLCBraWxsX3B5dGhvbikKKyAgICBhc3NlcnRfcHl0aG9uX29rKQorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKIAogIyBMb29rIHVwIHdoaWNoIHN0YXJ0IG1ldGhvZHMgYXJlIGF2YWlsYWJsZSB0byB0ZXN0CiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3bi5weSBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CmluZGV4IDMzNGFlOWUuLjY1NTg5NTIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbXVsdGlwcm9jZXNzaW5nX3NwYXduLnB5CkBAIC0xLDYgKzEsMTEgQEAKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHRlc3QuX3Rlc3RfbXVsdGlwcm9jZXNzaW5nCiAKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCitpZiBzdXBwb3J0LlBHTzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBpcyBub3QgaGVscGZ1bCBmb3IgUEdPIikKKwogdGVzdC5fdGVzdF9tdWx0aXByb2Nlc3NpbmcuaW5zdGFsbF90ZXN0c19pbl9tb2R1bGVfZGljdChnbG9iYWxzKCksICdzcGF3bicpCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25pcy5weSBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CmluZGV4IDM4N2E0ZTcuLjIxMDc0YzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfbmlzLnB5CkBAIC0xLDYgKzEsNSBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBzeXMKIAogIyBTa2lwIHRlc3QgaWYgbmlzIG1vZHVsZSBkb2VzIG5vdCBleGlzdC4KIG5pcyA9IHN1cHBvcnQuaW1wb3J0X21vZHVsZSgnbmlzJykKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weSBiL0xpYi90ZXN0L3Rlc3Rfbm50cGxpYi5weQppbmRleCAyZWY2ZDAyLi5mZWFiYTNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X25udHBsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ubnRwbGliLnB5CkBAIC0xNTQyLDggKzE1NDIsMTAgQEAKICAgICAgICAgICAgICAgICBlbGlmIGNtZCA9PSBiJ1NUQVJUVExTXHJcbic6CiAgICAgICAgICAgICAgICAgICAgIHJlYWRlci5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgIGNsaWVudC5zZW5kYWxsKGInMzgyIEJlZ2luIFRMUyBuZWdvdGlhdGlvbiBub3dcclxuJykKLSAgICAgICAgICAgICAgICAgICAgY2xpZW50ID0gc3NsLndyYXBfc29ja2V0KAotICAgICAgICAgICAgICAgICAgICAgICAgY2xpZW50LCBzZXJ2ZXJfc2lkZT1UcnVlLCBjZXJ0ZmlsZT1jZXJ0ZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUpCisgICAgICAgICAgICAgICAgICAgIGNsaWVudCA9IGNvbnRleHQud3JhcF9zb2NrZXQoCisgICAgICAgICAgICAgICAgICAgICAgICBjbGllbnQsIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgICAgICAgICAgICAgIGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQpCiAgICAgICAgICAgICAgICAgICAgIHJlYWRlciA9IGNsZWFudXAuZW50ZXJfY29udGV4dChjbGllbnQubWFrZWZpbGUoJ3JiJykpCiAgICAgICAgICAgICAgICAgZWxpZiBjbWQgPT0gYidRVUlUXHJcbic6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkgYi9MaWIvdGVzdC90ZXN0X25vcm1hbGl6YXRpb24ucHkKaW5kZXggMzBmYTYxMi4uNWI1OTBlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ub3JtYWxpemF0aW9uLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfbm9ybWFsaXphdGlvbi5weQpAQCAtMyw3ICszLDYgQEAKIAogZnJvbSBodHRwLmNsaWVudCBpbXBvcnQgSFRUUEV4Y2VwdGlvbgogaW1wb3J0IHN5cwotaW1wb3J0IG9zCiBmcm9tIHVuaWNvZGVkYXRhIGltcG9ydCBub3JtYWxpemUsIHVuaWRhdGFfdmVyc2lvbgogCiBURVNUREFUQUZJTEUgPSAiTm9ybWFsaXphdGlvblRlc3QudHh0IgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9udHBhdGgucHkgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQppbmRleCA1ODBmMjAzLi45MGVkYjZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X250cGF0aC5weQorKysgYi9MaWIvdGVzdC90ZXN0X250cGF0aC5weQpAQCAtNDUyLDUgKzQ1Miw4OCBAQAogICAgIGF0dHJpYnV0ZXMgPSBbJ3JlbHBhdGgnLCAnc3BsaXR1bmMnXQogCiAKK2NsYXNzIFBhdGhMaWtlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgcGF0aCA9IG50cGF0aAorCisgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBwYXRoPScnKToKKyAgICAgICAgICAgIHNlbGYucGF0aCA9IHBhdGgKKyAgICAgICAgZGVmIF9fZnNwYXRoX18oc2VsZik6CisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHNlbGYucGF0aCwgQmFzZUV4Y2VwdGlvbik6CisgICAgICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnBhdGgKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VsZi5maWxlX25hbWUgPSBzdXBwb3J0LlRFU1RGTi5sb3dlcigpCisgICAgICAgIHNlbGYuZmlsZV9wYXRoID0gc2VsZi5QYXRoTGlrZShzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzZWxmLmZpbGVfbmFtZSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYuZmlsZV9uYW1lLCAneGInLCAwKSBhcyBmaWxlOgorICAgICAgICAgICAgZmlsZS53cml0ZShiInRlc3RfbnRwYXRoLlBhdGhMaWtlVGVzdHMiKQorCisgICAgZGVmIGFzc2VydFBhdGhFcXVhbChzZWxmLCBmdW5jKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmdW5jKHNlbGYuZmlsZV9wYXRoKSwgZnVuYyhzZWxmLmZpbGVfbmFtZSkpCisKKyAgICBkZWYgdGVzdF9wYXRoX25vcm1jYXNlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubm9ybWNhc2UpCisKKyAgICBkZWYgdGVzdF9wYXRoX2lzYWJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNhYnMpCisKKyAgICBkZWYgdGVzdF9wYXRoX2pvaW4oc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wYXRoLmpvaW4oJ2EnLCBzZWxmLlBhdGhMaWtlKCdiJyksICdjJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXRoLmpvaW4oJ2EnLCAnYicsICdjJykpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZXh0KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguc3BsaXRleHQpCisKKyAgICBkZWYgdGVzdF9wYXRoX3NwbGl0ZHJpdmUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGRyaXZlKQorCisgICAgZGVmIHRlc3RfcGF0aF9iYXNlbmFtZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmJhc2VuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9kaXJuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZGlybmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNsaW5rKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNsaW5rKQorCisgICAgZGVmIHRlc3RfcGF0aF9sZXhpc3RzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgubGV4aXN0cykKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNtb3VudChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmlzbW91bnQpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHVzZXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR1c2VyKQorCisgICAgZGVmIHRlc3RfcGF0aF9leHBhbmR2YXJzKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguZXhwYW5kdmFycykKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybXBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfYWJzcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmFic3BhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlYWxwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGgucmVhbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX3JlbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWxwYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9jb21tb25wYXRoKHNlbGYpOgorICAgICAgICBjb21tb25fcGF0aCA9IHNlbGYucGF0aC5jb21tb25wYXRoKFtzZWxmLmZpbGVfcGF0aCwgc2VsZi5maWxlX25hbWVdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbW1vbl9wYXRoLCBzZWxmLmZpbGVfbmFtZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNkaXIoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2RpcikKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGNvZGVzLnB5CmluZGV4IDZlZjkzZDkuLjY4MDZjNjEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3Bjb2Rlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X29wY29kZXMucHkKQEAgLTEsNiArMSw3IEBACiAjIFB5dGhvbiB0ZXN0IHNldCAtLSBwYXJ0IDIsIG9wY29kZXMKIAogaW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IGFubl9tb2R1bGUKIAogY2xhc3MgT3Bjb2RlVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTIwLDYgKzIxLDMyIEBACiAgICAgICAgIGlmIG4gIT0gOTA6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ3RyeSBpbnNpZGUgZm9yJykKIAorICAgIGRlZiB0ZXN0X3NldHVwX2Fubm90YXRpb25zX2xpbmUoc2VsZik6CisgICAgICAgICMgY2hlY2sgdGhhdCBTRVRVUF9BTk5PVEFUSU9OUyBkb2VzIG5vdCBjcmVhdGUgc3B1cmlvdXMgbGluZSBudW1iZXJzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbihhbm5fbW9kdWxlLl9fZmlsZV9fKSBhcyBmOgorICAgICAgICAgICAgICAgIHR4dCA9IGYucmVhZCgpCisgICAgICAgICAgICBjbyA9IGNvbXBpbGUodHh0LCBhbm5fbW9kdWxlLl9fZmlsZV9fLCAnZXhlYycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvLmNvX2ZpcnN0bGluZW5vLCA2KQorICAgICAgICBleGNlcHQgT1NFcnJvcjoKKyAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X25vX2Fubm90YXRpb25zX2lmX25vdF9uZWVkZWQoc2VsZik6CisgICAgICAgIGNsYXNzIEM6IHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBdHRyaWJ1dGVFcnJvcik6CisgICAgICAgICAgICBDLl9fYW5ub3RhdGlvbnNfXworCisgICAgZGVmIHRlc3RfdXNlX2V4aXN0aW5nX2Fubm90YXRpb25zKHNlbGYpOgorICAgICAgICBucyA9IHsnX19hbm5vdGF0aW9uc19fJzogezE6IDJ9fQorICAgICAgICBleGVjKCd4OiBpbnQnLCBucykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuc1snX19hbm5vdGF0aW9uc19fJ10sIHsneCc6IGludCwgMTogMn0pCisKKyAgICBkZWYgdGVzdF9kb19ub3RfcmVjcmVhdGVfYW5ub3RhdGlvbnMoc2VsZik6CisgICAgICAgIGNsYXNzIEM6CisgICAgICAgICAgICBkZWwgX19hbm5vdGF0aW9uc19fCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5hbWVFcnJvcik6CisgICAgICAgICAgICAgICAgeDogaW50CisKICAgICBkZWYgdGVzdF9yYWlzZV9jbGFzc19leGNlcHRpb25zKHNlbGYpOgogCiAgICAgICAgIGNsYXNzIEFDbGFzcyhFeGNlcHRpb24pOiBwYXNzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5IGIvTGliL3Rlc3QvdGVzdF9vcGVyYXRvci5weQppbmRleCBiNWJhOTc2Li42MjU0MDkxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X29wZXJhdG9yLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfb3BlcmF0b3IucHkKQEAgLTEyMCw2MyArMTIwLDYzIEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hZGQpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuYWRkLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuYWRkKDMsIDQpID09IDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYWRkKDMsIDQpLCA3KQogCiAgICAgZGVmIHRlc3RfYml0d2lzZV9hbmQoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5hbmRfKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmFuZF8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5hbmRfKDB4ZiwgMHhhKSA9PSAweGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuYW5kXygweGYsIDB4YSksIDB4YSkKIAogICAgIGRlZiB0ZXN0X2NvbmNhdChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmNvbmNhdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb25jYXQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSA9PSAncHl0aG9uJykKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmNvbmNhdChbMSwgMl0sIFszLCA0XSkgPT0gWzEsIDIsIDMsIDRdKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY29uY2F0KFNlcTEoWzUsIDZdKSwgU2VxMShbN10pKSA9PSBbNSwgNiwgN10pCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpID09IFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoJ3B5JywgJ3Rob24nKSwgJ3B5dGhvbicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY29uY2F0KFsxLCAyXSwgWzMsIDRdKSwgWzEsIDIsIDMsIDRdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmNvbmNhdChTZXExKFs1LCA2XSksIFNlcTEoWzddKSksIFs1LCA2LCA3XSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb25jYXQoU2VxMihbNSwgNl0pLCBTZXEyKFs3XSkpLCBbNSwgNiwgN10pCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY29uY2F0LCAxMywgMjkpCiAKICAgICBkZWYgdGVzdF9jb3VudE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuY291bnRPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5jb3VudE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDMpID09IDEpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgNSkgPT0gMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5jb3VudE9mKFsxLCAyLCAxLCAzLCAxLCA0XSwgMyksIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuY291bnRPZihbMSwgMiwgMSwgMywgMSwgNF0sIDUpLCAwKQogCiAgICAgZGVmIHRlc3RfZGVsaXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gWzQsIDMsIDIsIDFdCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZGVsaXRlbSwgYSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5kZWxpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZGVsaXRlbShhLCAxKSBpcyBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoYSA9PSBbNCwgMiwgMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9wZXJhdG9yLmRlbGl0ZW0oYSwgMSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgWzQsIDIsIDFdKQogCiAgICAgZGVmIHRlc3RfZmxvb3JkaXYoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5mbG9vcmRpdiwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLmZsb29yZGl2KDUsIDIpID09IDIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuZmxvb3JkaXYoNSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF90cnVlZGl2KHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IudHJ1ZWRpdiwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci50cnVlZGl2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSA9PSAyLjUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IudHJ1ZWRpdig1LCAyKSwgMi41KQogCiAgICAgZGVmIHRlc3RfZ2V0aXRlbShzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBhID0gcmFuZ2UoMTApCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuZ2V0aXRlbSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5nZXRpdGVtLCBhLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuZ2V0aXRlbShhLCAyKSA9PSAyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmdldGl0ZW0oYSwgMiksIDIpCiAKICAgICBkZWYgdGVzdF9pbmRleE9mKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IuaW5kZXhPZikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IuaW5kZXhPZihbNCwgMywgMiwgMV0sIDMpLCAxKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBvcGVyYXRvci5pbmRleE9mLCBbNCwgMywgMiwgMV0sIDApCiAKICAgICBkZWYgdGVzdF9pbnZlcnQoc2VsZik6CkBAIC0xODksMjEgKzE4OSwyMSBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubHNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLmxzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMSkgPT0gMTApCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5sc2hpZnQoNSwgMCkgPT0gNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5sc2hpZnQoNSwgMSksIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLmxzaGlmdCg1LCAwKSwgNSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgb3BlcmF0b3IubHNoaWZ0LCAyLCAtMSkKIAogICAgIGRlZiB0ZXN0X21vZChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm1vZCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5tb2QsIE5vbmUsIDQyKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IubW9kKDUsIDIpID09IDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IubW9kKDUsIDIpLCAxKQogCiAgICAgZGVmIHRlc3RfbXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IubXVsKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm11bCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLm11bCg1LCAyKSA9PSAxMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5tdWwoNSwgMiksIDEwKQogCiAgICAgZGVmIHRlc3RfbWF0bXVsKHNlbGYpOgogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCkBAIC0yMjcsNyArMjI3LDcgQEAKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLm9yXykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5vcl8sIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5vcl8oMHhhLCAweDUpID09IDB4ZikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5vcl8oMHhhLCAweDUpLCAweGYpCiAKICAgICBkZWYgdGVzdF9wb3Moc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKQEAgLTI1MCw4ICsyNTAsOCBAQAogICAgICAgICBvcGVyYXRvciA9IHNlbGYubW9kdWxlCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IucnNoaWZ0KQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgTm9uZSwgNDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5yc2hpZnQoNSwgMSkgPT0gMikKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnJzaGlmdCg1LCAwKSA9PSA1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wZXJhdG9yLnJzaGlmdCg1LCAxKSwgMikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5yc2hpZnQoNSwgMCksIDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIG9wZXJhdG9yLnJzaGlmdCwgMiwgLTEpCiAKICAgICBkZWYgdGVzdF9jb250YWlucyhzZWxmKToKQEAgLTI2NiwxNSArMjY2LDE1IEBACiAgICAgICAgIGEgPSBsaXN0KHJhbmdlKDMpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnNldGl0ZW0sIGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wZXJhdG9yLnNldGl0ZW0oYSwgMCwgMikgaXMgTm9uZSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGEgPT0gWzIsIDEsIDJdKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShvcGVyYXRvci5zZXRpdGVtKGEsIDAsIDIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGEsIFsyLCAxLCAyXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgb3BlcmF0b3Iuc2V0aXRlbSwgYSwgNCwgMikKIAogICAgIGRlZiB0ZXN0X3N1YihzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIG9wZXJhdG9yLnN1YikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci5zdWIsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcGVyYXRvci5zdWIoNSwgMikgPT0gMykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcGVyYXRvci5zdWIoNSwgMiksIDMpCiAKICAgICBkZWYgdGVzdF90cnV0aChzZWxmKToKICAgICAgICAgb3BlcmF0b3IgPSBzZWxmLm1vZHVsZQpAQCAtMjkyLDcgKzI5Miw3IEBACiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcGVyYXRvci54b3IpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgb3BlcmF0b3IueG9yLCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmFzc2VydFRydWUob3BlcmF0b3IueG9yKDB4YiwgMHhjKSA9PSAweDcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3BlcmF0b3IueG9yKDB4YiwgMHhjKSwgMHg3KQogCiAgICAgZGVmIHRlc3RfaXMoc2VsZik6CiAgICAgICAgIG9wZXJhdG9yID0gc2VsZi5tb2R1bGUKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkgYi9MaWIvdGVzdC90ZXN0X29wdHBhcnNlLnB5CmluZGV4IDc2MjFjMjQuLjkxYTAzMTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3B0cGFyc2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcHRwYXJzZS5weQpAQCAtMTYsNiArMTYsNyBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAoraW1wb3J0IG9wdHBhcnNlCiBmcm9tIG9wdHBhcnNlIGltcG9ydCBtYWtlX29wdGlvbiwgT3B0aW9uLCBcCiAgICAgIFRpdGxlZEhlbHBGb3JtYXR0ZXIsIE9wdGlvblBhcnNlciwgT3B0aW9uR3JvdXAsIFwKICAgICAgU1VQUFJFU1NfVVNBR0UsIE9wdGlvbkVycm9yLCBPcHRpb25Db25mbGljdEVycm9yLCBcCkBAIC0xNjUwLDYgKzE2NTEsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm9wdGlvbiAtbDogaW52YWxpZCBpbnRlZ2VyIHZhbHVlOiAnMHgxMngnIikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydjaGVja19idWlsdGluJywgJ0FtYmlndW91c09wdGlvbkVycm9yJywgJ05PX0RFRkFVTFQnfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBvcHRwYXJzZSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoX19uYW1lX18pCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3JkZXJlZF9kaWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKaW5kZXggOTAxZDRiMi4uYTM1ZWQxMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcmRlcmVkX2RpY3QucHkKQEAgLTEsMyArMSw0IEBACitpbXBvcnQgYnVpbHRpbnMKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgY29weQogaW1wb3J0IGdjCkBAIC05Nyw2ICs5OCwxOSBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIE9yZGVyZWREaWN0KCkudXBkYXRlLCAoKSwgKCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgT3JkZXJlZERpY3QudXBkYXRlKQogCisgICAgZGVmIHRlc3RfaW5pdF9jYWxscyhzZWxmKToKKyAgICAgICAgY2FsbHMgPSBbXQorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgZGVmIGtleXMoc2VsZik6CisgICAgICAgICAgICAgICAgY2FsbHMuYXBwZW5kKCdrZXlzJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKyAgICAgICAgICAgIGRlZiBpdGVtcyhzZWxmKToKKyAgICAgICAgICAgICAgICBjYWxscy5hcHBlbmQoJ2l0ZW1zJykKKyAgICAgICAgICAgICAgICByZXR1cm4gKCkKKworICAgICAgICBzZWxmLk9yZGVyZWREaWN0KFNwYW0oKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjYWxscywgWydrZXlzJ10pCisKICAgICBkZWYgdGVzdF9mcm9ta2V5cyhzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QuZnJvbWtleXMoJ2FiYycpCkBAIC0yOTgsOSArMzEyLDExIEBACiAgICAgICAgICMgZG8gbm90IHNhdmUgaW5zdGFuY2UgZGljdGlvbmFyeSBpZiBub3QgbmVlZGVkCiAgICAgICAgIHBhaXJzID0gWygnYycsIDEpLCAoJ2InLCAyKSwgKCdhJywgMyksICgnZCcsIDQpLCAoJ2UnLCA1KSwgKCdmJywgNildCiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QocGFpcnMpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShvZC5fX2RpY3RfXywgZGljdCkKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUob2QuX19yZWR1Y2VfXygpWzJdKQogICAgICAgICBvZC54ID0gMTAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUob2QuX19yZWR1Y2VfXygpWzJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fZGljdF9fWyd4J10sIDEwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLl9fcmVkdWNlX18oKVsyXSwgeyd4JzogMTB9KQogCiAgICAgZGVmIHRlc3RfcGlja2xlX3JlY3Vyc2l2ZShzZWxmKToKICAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CkBAIC00MDMsNiArNDE5LDE0IEBACiAgICAgICAgIG9kID0gT3JkZXJlZERpY3QoKipkKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc3lzLmdldHNpemVvZihvZCksIHN5cy5nZXRzaXplb2YoZCkpCiAKKyAgICBkZWYgdGVzdF92aWV3cyhzZWxmKToKKyAgICAgICAgT3JkZXJlZERpY3QgPSBzZWxmLk9yZGVyZWREaWN0CisgICAgICAgICMgU2VlIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNDI4NgorICAgICAgICBzID0gJ3RoZSBxdWljayBicm93biBmb3gganVtcGVkIG92ZXIgYSBsYXp5IGRvZyB5ZXN0ZXJkYXkgYmVmb3JlIGRhd24nLnNwbGl0KCkKKyAgICAgICAgb2QgPSBPcmRlcmVkRGljdC5mcm9ta2V5cyhzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLmtleXMoKSwgZGljdChvZCkua2V5cygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9kLml0ZW1zKCksIGRpY3Qob2QpLml0ZW1zKCkpCisKICAgICBkZWYgdGVzdF9vdmVycmlkZV91cGRhdGUoc2VsZik6CiAgICAgICAgIE9yZGVyZWREaWN0ID0gc2VsZi5PcmRlcmVkRGljdAogICAgICAgICAjIFZlcmlmeSB0aGF0IHN1YmNsYXNzZXMgY2FuIG92ZXJyaWRlIHVwZGF0ZSgpIHdpdGhvdXQgYnJlYWtpbmcgX19pbml0X18oKQpAQCAtNjExLDYgKzYzNSwyNSBAQAogICAgIE9yZGVyZWREaWN0ID0gcHlfY29sbC5PcmRlcmVkRGljdAogCiAKK2NsYXNzIENQeXRob25CdWlsdGluRGljdFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJCdWlsdGluIGRpY3QgcHJlc2VydmVzIGluc2VydGlvbiBvcmRlci4KKworICAgIFJldXNlIHNvbWUgb2YgdGVzdHMgaW4gT3JkZXJlZERpY3Qgc2VsZWN0aXZlbHkuCisgICAgIiIiCisKKyAgICBtb2R1bGUgPSBidWlsdGlucworICAgIE9yZGVyZWREaWN0ID0gZGljdAorCitmb3IgbWV0aG9kIGluICgKKyAgICAidGVzdF9pbml0IHRlc3RfdXBkYXRlIHRlc3RfYWJjIHRlc3RfY2xlYXIgdGVzdF9kZWxpdGVtICIgKworICAgICJ0ZXN0X3NldGl0ZW0gdGVzdF9kZXRlY3RfZGVsZXRpb25fZHVyaW5nX2l0ZXJhdGlvbiAiICsKKyAgICAidGVzdF9wb3BpdGVtIHRlc3RfcmVpbnNlcnQgdGVzdF9vdmVycmlkZV91cGRhdGUgIiArCisgICAgInRlc3RfaGlnaGx5X25lc3RlZCB0ZXN0X2hpZ2hseV9uZXN0ZWRfc3ViY2xhc3MgIiArCisgICAgInRlc3RfZGVsaXRlbV9oYXNoX2NvbGxpc2lvbiAiKS5zcGxpdCgpOgorICAgIHNldGF0dHIoQ1B5dGhvbkJ1aWx0aW5EaWN0VGVzdHMsIG1ldGhvZCwgZ2V0YXR0cihPcmRlcmVkRGljdFRlc3RzLCBtZXRob2QpKQorZGVsIG1ldGhvZAorCisKIEB1bml0dGVzdC5za2lwVW5sZXNzKGNfY29sbCwgJ3JlcXVpcmVzIHRoZSBDIHZlcnNpb24gb2YgdGhlIGNvbGxlY3Rpb25zIG1vZHVsZScpCiBjbGFzcyBDUHl0aG9uT3JkZXJlZERpY3RUZXN0cyhPcmRlcmVkRGljdFRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTYyNSwxOCArNjY4LDIwIEBACiAgICAgICAgIHNpemUgPSBzdXBwb3J0LmNhbGNvYmpzaXplCiAgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19zaXplb2YKIAotICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduMlAnICsgJzNQblBuMlAnKSArIGNhbGNzaXplKCcyblBuJykKLSAgICAgICAgZW50cnlzaXplID0gY2FsY3NpemUoJ24yUCcpICsgY2FsY3NpemUoJ1AnKQorICAgICAgICBiYXNpY3NpemUgPSBzaXplKCduUTJQJyArICczUG5QbjJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKQorCisgICAgICAgIGVudHJ5c2l6ZSA9IGNhbGNzaXplKCduMlAnKQorICAgICAgICBwID0gY2FsY3NpemUoJ1AnKQogICAgICAgICBub2Rlc2l6ZSA9IGNhbGNzaXplKCdQbjJQJykKIAogICAgICAgICBvZCA9IE9yZGVyZWREaWN0KCkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqZW50cnlzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplKSAgIyA4Ynl0ZSBpbmRpY2llcyArIDgqMi8vMyAqIGVudHJ5IHRhYmxlCiAgICAgICAgIG9kLnggPSAxCi0gICAgICAgIGNoZWNrKG9kLCBiYXNpY3NpemUgKyA4KmVudHJ5c2l6ZSkKKyAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDgqcCArIDggKyA1KmVudHJ5c2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMyldKQotICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCplbnRyeXNpemUgKyAzKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgOCpwICsgOCArIDUqZW50cnlzaXplICsgMypub2Rlc2l6ZSkKICAgICAgICAgb2QudXBkYXRlKFsoaSwgaSkgZm9yIGkgaW4gcmFuZ2UoMywgMTApXSkKLSAgICAgICAgY2hlY2sob2QsIGJhc2ljc2l6ZSArIDE2KmVudHJ5c2l6ZSArIDEwKm5vZGVzaXplKQorICAgICAgICBjaGVjayhvZCwgYmFzaWNzaXplICsgMTYqcCArIDE2ICsgMTAqZW50cnlzaXplICsgMTAqbm9kZXNpemUpCiAKICAgICAgICAgY2hlY2sob2Qua2V5cygpLCBzaXplKCdQJykpCiAgICAgICAgIGNoZWNrKG9kLml0ZW1zKCksIHNpemUoJ1AnKSkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkgYi9MaWIvdGVzdC90ZXN0X29zLnB5CmluZGV4IDk3MjAyMTAuLjE3NDZjYTQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfb3MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9vcy5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IG1tYXAKIGltcG9ydCBvcwogaW1wb3J0IHBpY2tsZQotaW1wb3J0IHBsYXRmb3JtCiBpbXBvcnQgcmUKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBzaWduYWwKQEAgLTY1LDYgKzY0LDggQEAKICAgICBJTlRfTUFYID0gUFlfU1NJWkVfVF9NQVggPSBzeXMubWF4c2l6ZQogCiBmcm9tIHRlc3Quc3VwcG9ydC5zY3JpcHRfaGVscGVyIGltcG9ydCBhc3NlcnRfcHl0aG9uX29rCitmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgdW5peF9zaGVsbAorCiAKIHJvb3RfaW5fcG9zaXggPSBGYWxzZQogaWYgaGFzYXR0cihvcywgJ2dldGV1aWQnKToKQEAgLTgyLDYgKzgzLDMyIEBACiAjIElzc3VlICMxNDExMDogU29tZSB0ZXN0cyBmYWlsIG9uIEZyZWVCU0QgaWYgdGhlIHVzZXIgaXMgaW4gdGhlIHdoZWVsIGdyb3VwLgogSEFWRV9XSEVFTF9HUk9VUCA9IHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCdmcmVlYnNkJykgYW5kIG9zLmdldGdpZCgpID09IDAKIAorCitAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgorZGVmIGlnbm9yZV9kZXByZWNhdGlvbl93YXJuaW5ncyhtc2dfcmVnZXgsIHF1aWV0PUZhbHNlKToKKyAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKG1zZ19yZWdleCwgRGVwcmVjYXRpb25XYXJuaW5nKSwgcXVpZXQ9cXVpZXQpOgorICAgICAgICB5aWVsZAorCisKK2RlZiByZXF1aXJlc19vc19mdW5jKG5hbWUpOgorICAgIHJldHVybiB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIob3MsIG5hbWUpLCAncmVxdWlyZXMgb3MuJXMnICUgbmFtZSkKKworCitjbGFzcyBfUGF0aExpa2Uob3MuUGF0aExpa2UpOgorCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9IiIpOgorICAgICAgICBzZWxmLnBhdGggPSBwYXRoCisKKyAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuIHN0cihzZWxmLnBhdGgpCisKKyAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgaWYgaXNpbnN0YW5jZShzZWxmLnBhdGgsIEJhc2VFeGNlcHRpb24pOgorICAgICAgICAgICAgcmFpc2Ugc2VsZi5wYXRoCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gc2VsZi5wYXRoCisKKwogZGVmIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBjb250ZW50PWInY29udGVudCcpOgogICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInhiIiwgMCkgYXMgZnA6CiAgICAgICAgIGZwLndyaXRlKGNvbnRlbnQpCkBAIC0xNDUsOSArMTcyLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAibmVlZHMgSU5UX01BWCA8IFBZX1NTSVpFX1RfTUFYIikKICAgICBAc3VwcG9ydC5iaWdtZW10ZXN0KHNpemU9SU5UX01BWCArIDEwLCBtZW11c2U9MSwgZHJ5X3J1bj1GYWxzZSkKICAgICBkZWYgdGVzdF9sYXJnZV9yZWFkKHNlbGYsIHNpemUpOgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ3YiIpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYid0ZXN0JykKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIndGVzdCcpCiAKICAgICAgICAgIyBJc3N1ZSAjMjE5MzI6IE1ha2Ugc3VyZSB0aGF0IG9zLnJlYWQoKSBkb2VzIG5vdCByYWlzZSBhbgogICAgICAgICAjIE92ZXJmbG93RXJyb3IgZm9yIHNpemUgbGFyZ2VyIHRoYW4gSU5UX01BWApAQCAtMjA0LDExICsyMzAsMTIgQEAKIAogICAgIGRlZiB0ZXN0X3JlcGxhY2Uoc2VsZik6CiAgICAgICAgIFRFU1RGTjIgPSBzdXBwb3J0LlRFU1RGTiArICIuMiIKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAndycpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKCIxIikKLSAgICAgICAgd2l0aCBvcGVuKFRFU1RGTjIsICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoIjIiKQotICAgICAgICBzZWxmLmFkZENsZWFudXAob3MudW5saW5rLCBURVNURk4yKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIFRFU1RGTjIpCisKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGIiMSIpCisgICAgICAgIGNyZWF0ZV9maWxlKFRFU1RGTjIsIGIiMiIpCisKICAgICAgICAgb3MucmVwbGFjZShzdXBwb3J0LlRFU1RGTiwgVEVTVEZOMikKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoRmlsZU5vdEZvdW5kRXJyb3IsIG9zLnN0YXQsIHN1cHBvcnQuVEVTVEZOKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3InKSBhcyBmOgpAQCAtMzA5LDkgKzMzNiw3IEBACiAgICAgICAgICAgICBmbmFtZSA9IHNlbGYuZm5hbWUuZW5jb2RlKHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSkKICAgICAgICAgZXhjZXB0IFVuaWNvZGVFbmNvZGVFcnJvcjoKICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoImNhbm5vdCBlbmNvZGUgJWEgZm9yIHRoZSBmaWxlc3lzdGVtIiAlIHNlbGYuZm5hbWUpCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiaWdub3JlIiwgRGVwcmVjYXRpb25XYXJuaW5nKQotICAgICAgICAgICAgc2VsZi5jaGVja19zdGF0X2F0dHJpYnV0ZXMoZm5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfc3RhdF9hdHRyaWJ1dGVzKGZuYW1lKQogCiAgICAgZGVmIHRlc3Rfc3RhdF9yZXN1bHRfcGlja2xlKHNlbGYpOgogICAgICAgICByZXN1bHQgPSBvcy5zdGF0KHNlbGYuZm5hbWUpCkBAIC00NjIsMTkgKzQ4NywxNCBAQAogCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5kaXJuYW1lKQogICAgICAgICBvcy5ta2RpcihzZWxmLmRpcm5hbWUpCi0gICAgICAgIHdpdGggb3BlbihzZWxmLmZuYW1lLCAnd2InKSBhcyBmcDoKLSAgICAgICAgICAgIGZwLndyaXRlKGIiQUJDIikKKyAgICAgICAgY3JlYXRlX2ZpbGUoc2VsZi5mbmFtZSkKIAogICAgICAgICBkZWYgcmVzdG9yZV9mbG9hdF90aW1lcyhzdGF0ZSk6Ci0gICAgICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgICAgIHdpdGggaWdub3JlX2RlcHJlY2F0aW9uX3dhcm5pbmdzKCdzdGF0X2Zsb2F0X3RpbWVzJyk6CiAgICAgICAgICAgICAgICAgb3Muc3RhdF9mbG9hdF90aW1lcyhzdGF0ZSkKIAogICAgICAgICAjIGVuc3VyZSB0aGF0IHN0X2F0aW1lIGFuZCBzdF9tdGltZSBhcmUgZmxvYXQKLSAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0KKyAgICAgICAgd2l0aCBpZ25vcmVfZGVwcmVjYXRpb25fd2FybmluZ3MoJ3N0YXRfZmxvYXRfdGltZXMnKToKICAgICAgICAgICAgIG9sZF9mbG9hdF90aW1lcyA9IG9zLnN0YXRfZmxvYXRfdGltZXMoLTEpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocmVzdG9yZV9mbG9hdF90aW1lcywgb2xkX2Zsb2F0X3RpbWVzKQogCkBAIC01NjYsNyArNTg2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAiZmQgc3VwcG9ydCBmb3IgdXRpbWUgcmVxdWlyZWQgZm9yIHRoaXMgdGVzdC4iKQogICAgIGRlZiB0ZXN0X3V0aW1lX2ZkKHNlbGYpOgogICAgICAgICBkZWYgc2V0X3RpbWUoZmlsZW5hbWUsIG5zKToKLSAgICAgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3diJykgYXMgZnA6CisgICAgICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICd3YicsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgICMgdXNlIGEgZmlsZSBkZXNjcmlwdG9yIHRvIHRlc3QgZnV0aW1lbnModGltZXNwZWMpCiAgICAgICAgICAgICAgICAgIyBvciBmdXRpbWVzKHRpbWV2YWwpCiAgICAgICAgICAgICAgICAgb3MudXRpbWUoZnAuZmlsZW5vKCksIG5zPW5zKQpAQCAtNjc4LDE4ICs2OTgsMjAgQEAKICAgICAgICAgcmV0dXJuIG9zLmVudmlyb24KIAogICAgICMgQnVnIDExMTA0NzgKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X3VwZGF0ZTIoc2VsZik6CiAgICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQogICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShIRUxMTz0iV29ybGQiKQotICAgICAgICB3aXRoIG9zLnBvcGVuKCIvYmluL3NoIC1jICdlY2hvICRIRUxMTyciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gJEhFTExPJyIgJSB1bml4X3NoZWxsKSBhcyBwb3BlbjoKICAgICAgICAgICAgIHZhbHVlID0gcG9wZW4ucmVhZCgpLnN0cmlwKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsICJXb3JsZCIpCiAKLSAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhvcy5wYXRoLmV4aXN0cygnL2Jpbi9zaCcpLCAncmVxdWlyZXMgL2Jpbi9zaCcpCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModW5peF9zaGVsbCBhbmQgb3MucGF0aC5leGlzdHModW5peF9zaGVsbCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlcXVpcmVzIGEgc2hlbGwnKQogICAgIGRlZiB0ZXN0X29zX3BvcGVuX2l0ZXIoc2VsZik6Ci0gICAgICAgIHdpdGggb3MucG9wZW4oCi0gICAgICAgICAgICAiL2Jpbi9zaCAtYyAnZWNobyBcImxpbmUxXG5saW5lMlxubGluZTNcIiciKSBhcyBwb3BlbjoKKyAgICAgICAgd2l0aCBvcy5wb3BlbigiJXMgLWMgJ2VjaG8gXCJsaW5lMVxubGluZTJcbmxpbmUzXCInIgorICAgICAgICAgICAgICAgICAgICAgICUgdW5peF9zaGVsbCkgYXMgcG9wZW46CiAgICAgICAgICAgICBpdCA9IGl0ZXIocG9wZW4pCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTFcbiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5leHQoaXQpLCAibGluZTJcbiIpCkBAIC04MjAsNiArODQyLDcgQEAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgam9pbiA9IG9zLnBhdGguam9pbgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC5ybXRyZWUsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgICAgICMgQnVpbGQ6CiAgICAgICAgICMgICAgIFRFU1RGTi8KQEAgLTg1Miw5ICs4NzUsOCBAQAogICAgICAgICBvcy5tYWtlZGlycyh0Ml9wYXRoKQogCiAgICAgICAgIGZvciBwYXRoIGluIHRtcDFfcGF0aCwgdG1wMl9wYXRoLCB0bXAzX3BhdGgsIHRtcDRfcGF0aDoKLSAgICAgICAgICAgIGYgPSBvcGVuKHBhdGgsICJ3IikKLSAgICAgICAgICAgIGYud3JpdGUoIkknbSAiICsgcGF0aCArICIgYW5kIHByb3VkIG9mIGl0LiAgQmxhbWUgdGVzdF9vcy5cbiIpCi0gICAgICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAieCIpIGFzIGY6CisgICAgICAgICAgICAgICAgZi53cml0ZSgiSSdtICIgKyBwYXRoICsgIiBhbmQgcHJvdWQgb2YgaXQuICBCbGFtZSB0ZXN0X29zLlxuIikKIAogICAgICAgICBpZiBzdXBwb3J0LmNhbl9zeW1saW5rKCk6CiAgICAgICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYWJzcGF0aCh0Ml9wYXRoKSwgc2VsZi5saW5rX3BhdGgpCkBAIC04NzksMTAgKzkwMSwxMiBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFsbFsyICsgZmxpcHBlZF0sIChzZWxmLnN1YjExX3BhdGgsIFtdLCBbXSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzMgLSAyICogZmxpcHBlZF0sIHNlbGYuc3ViMl90cmVlKQogCi0gICAgZGVmIHRlc3Rfd2Fsa19wcnVuZShzZWxmKToKKyAgICBkZWYgdGVzdF93YWxrX3BydW5lKHNlbGYsIHdhbGtfcGF0aD1Ob25lKToKKyAgICAgICAgaWYgd2Fsa19wYXRoIGlzIE5vbmU6CisgICAgICAgICAgICB3YWxrX3BhdGggPSBzZWxmLndhbGtfcGF0aAogICAgICAgICAjIFBydW5lIHRoZSBzZWFyY2guCiAgICAgICAgIGFsbCA9IFtdCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgpOgorICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gc2VsZi53YWxrKHdhbGtfcGF0aCk6CiAgICAgICAgICAgICBhbGwuYXBwZW5kKChyb290LCBkaXJzLCBmaWxlcykpCiAgICAgICAgICAgICAjIERvbid0IGRlc2NlbmQgaW50byBTVUIxLgogICAgICAgICAgICAgaWYgJ1NVQjEnIGluIGRpcnM6CkBAIC04OTEsMTYgKzkxNSwxOSBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWxsWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLndhbGtfcGF0aCwgWyJTVUIyIl0sIFsidG1wMSJdKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAoc3RyKHdhbGtfcGF0aCksIFsiU1VCMiJdLCBbInRtcDEiXSkpCiAKICAgICAgICAgYWxsWzFdWy0xXS5zb3J0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhbGxbMV0sIHNlbGYuc3ViMl90cmVlKQogCisgICAgZGVmIHRlc3RfZmlsZV9saWtlX3BhdGgoc2VsZik6CisgICAgICAgIHNlbGYudGVzdF93YWxrX3BydW5lKF9QYXRoTGlrZShzZWxmLndhbGtfcGF0aCkpCisKICAgICBkZWYgdGVzdF93YWxrX2JvdHRvbV91cChzZWxmKToKICAgICAgICAgIyBXYWxrIGJvdHRvbS11cC4KICAgICAgICAgYWxsID0gbGlzdChzZWxmLndhbGsoc2VsZi53YWxrX3BhdGgsIHRvcGRvd249RmFsc2UpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGFsbCksIDQsIGFsbCkKICAgICAgICAgIyBXZSBjYW4ndCBrbm93IHdoaWNoIG9yZGVyIFNVQjEgYW5kIFNVQjIgd2lsbCBhcHBlYXIgaW4uCiAgICAgICAgICMgTm90IGZsaXBwZWQ6ICBTVUIxMSwgU1VCMSwgU1VCMiwgVEVTVEZOCiAgICAgICAgICMgICAgIGZsaXBwZWQ6ICBTVUIyLCBTVUIxMSwgU1VCMSwgVEVTVEZOCkBAIC05MzAsMjIgKzk1Nyw2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIkRpZG4ndCBmb2xsb3cgc3ltbGluayB3aXRoIGZvbGxvd2xpbmtzPVRydWUiKQogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICAjIFRlYXIgZXZlcnl0aGluZyBkb3duLiAgVGhpcyBpcyBhIGRlY2VudCB1c2UgZm9yIGJvdHRvbS11cCBvbgotICAgICAgICAjIFdpbmRvd3MsIHdoaWNoIGRvZXNuJ3QgaGF2ZSBhIHJlY3Vyc2l2ZSBkZWxldGUgY29tbWFuZC4gIFRoZQotICAgICAgICAjIChub3Qgc28pIHN1YnRsZXR5IGlzIHRoYXQgcm1kaXIgd2lsbCBmYWlsIHVubGVzcyB0aGUgZGlyJ3MKLSAgICAgICAgIyBraWRzIGFyZSByZW1vdmVkIGZpcnN0LCBzbyBib3R0b20gdXAgaXMgZXNzZW50aWFsLgotICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzdXBwb3J0LlRFU1RGTiwgdG9wZG93bj1GYWxzZSk6Ci0gICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUob3MucGF0aC5qb2luKHJvb3QsIG5hbWUpKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5qb2luKHJvb3QsIG5hbWUpCi0gICAgICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguaXNsaW5rKGRpcm5hbWUpOgotICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXJuYW1lKQotICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIG9zLnJlbW92ZShkaXJuYW1lKQotICAgICAgICBvcy5ybWRpcihzdXBwb3J0LlRFU1RGTikKLQogICAgIGRlZiB0ZXN0X3dhbGtfYmFkX2RpcihzZWxmKToKICAgICAgICAgIyBXYWxrIHRvcC1kb3duLgogICAgICAgICBlcnJvcnMgPSBbXQpAQCAtMTAyOCwyNyArMTAzOSwxMSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAob3MuY2xvc2UsIG5ld2ZkKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2ZkLCBtaW5mZCkKIAotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgIyBjbGVhbnVwCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcywgcm9vdGZkIGluIG9zLmZ3YWxrKHN1cHBvcnQuVEVTVEZOLCB0b3Bkb3duPUZhbHNlKToKLSAgICAgICAgICAgIGZvciBuYW1lIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIG9zLnVubGluayhuYW1lLCBkaXJfZmQ9cm9vdGZkKQotICAgICAgICAgICAgZm9yIG5hbWUgaW4gZGlyczoKLSAgICAgICAgICAgICAgICBzdCA9IG9zLnN0YXQobmFtZSwgZGlyX2ZkPXJvb3RmZCwgZm9sbG93X3N5bWxpbmtzPUZhbHNlKQotICAgICAgICAgICAgICAgIGlmIHN0YXQuU19JU0RJUihzdC5zdF9tb2RlKToKLSAgICAgICAgICAgICAgICAgICAgb3Mucm1kaXIobmFtZSwgZGlyX2ZkPXJvb3RmZCkKLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBvcy51bmxpbmsobmFtZSwgZGlyX2ZkPXJvb3RmZCkKLSAgICAgICAgb3Mucm1kaXIoc3VwcG9ydC5URVNURk4pCi0KIGNsYXNzIEJ5dGVzV2Fsa1Rlc3RzKFdhbGtUZXN0cyk6CiAgICAgIiIiVGVzdHMgZm9yIG9zLndhbGsoKSB3aXRoIGJ5dGVzLiIiIgogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc3VwZXIoKS5zZXRVcCgpCiAgICAgICAgIHNlbGYuc3RhY2sgPSBjb250ZXh0bGliLkV4aXRTdGFjaygpCi0gICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICAgICAgICAgIHNlbGYuc3RhY2suZW50ZXJfY29udGV4dCh3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpKQotICAgICAgICAgICAgd2FybmluZ3Muc2ltcGxlZmlsdGVyKCJpZ25vcmUiLCBEZXByZWNhdGlvbldhcm5pbmcpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHNlbGYuc3RhY2suY2xvc2UoKQpAQCAtMTIyNSw4ICsxMjIwLDcgQEAKICAgICAgICAgb3MubWtkaXIoZGlyYSkKICAgICAgICAgZGlyYiA9IG9zLnBhdGguam9pbihkaXJhLCAnZGlyYicpCiAgICAgICAgIG9zLm1rZGlyKGRpcmIpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGlyYSwgJ2ZpbGUudHh0JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ3RleHQnKQorICAgICAgICBjcmVhdGVfZmlsZShvcy5wYXRoLmpvaW4oZGlyYSwgJ2ZpbGUudHh0JykpCiAgICAgICAgIG9zLnJlbW92ZWRpcnMoZGlyYikKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhkaXJiKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGRpcmEpKQpAQCAtMTIzNyw4ICsxMjMxLDcgQEAKICAgICAgICAgb3MubWtkaXIoZGlyYSkKICAgICAgICAgZGlyYiA9IG9zLnBhdGguam9pbihkaXJhLCAnZGlyYicpCiAgICAgICAgIG9zLm1rZGlyKGRpcmIpCi0gICAgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oZGlyYiwgJ2ZpbGUudHh0JyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoJ3RleHQnKQorICAgICAgICBjcmVhdGVfZmlsZShvcy5wYXRoLmpvaW4oZGlyYiwgJ2ZpbGUudHh0JykpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcik6CiAgICAgICAgICAgICBvcy5yZW1vdmVkaXJzKGRpcmIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkaXJiKSkKQEAgLTEyNDgsNyArMTI0MSw3IEBACiAKIGNsYXNzIERldk51bGxUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgZGVmIHRlc3RfZGV2bnVsbChzZWxmKToKLSAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICd3YicpIGFzIGY6CisgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsLCAnd2InLCAwKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZShiJ2hlbGxvJykKICAgICAgICAgICAgIGYuY2xvc2UoKQogICAgICAgICB3aXRoIG9wZW4ob3MuZGV2bnVsbCwgJ3JiJykgYXMgZjoKQEAgLTEyNjUsNiArMTI1OCw3IEBACiAKICAgICBkZWYgdGVzdF91cmFuZG9tX3ZhbHVlKHNlbGYpOgogICAgICAgICBkYXRhMSA9IG9zLnVyYW5kb20oMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkYXRhMSwgYnl0ZXMpCiAgICAgICAgIGRhdGEyID0gb3MudXJhbmRvbSgxNikKICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYXRhMSwgZGF0YTIpCiAKQEAgLTEyODUsNiArMTI3OSw0OSBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKGRhdGExLCBkYXRhMikKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0cmFuZG9tJyksICduZWVkIG9zLmdldHJhbmRvbSgpJykKK2NsYXNzIEdldFJhbmRvbVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBvcy5nZXRyYW5kb20oMSkKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgZXhjLmVycm5vID09IGVycm5vLkVOT1NZUzoKKyAgICAgICAgICAgICAgICAjIFB5dGhvbiBjb21waWxlZCBvbiBhIG1vcmUgcmVjZW50IExpbnV4IHZlcnNpb24KKyAgICAgICAgICAgICAgICAjIHRoYW4gdGhlIGN1cnJlbnQgTGludXgga2VybmVsCisgICAgICAgICAgICAgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoImdldHJhbmRvbSgpIHN5c2NhbGwgZmFpbHMgd2l0aCBFTk9TWVMiKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX3R5cGUoc2VsZik6CisgICAgICAgIGRhdGEgPSBvcy5nZXRyYW5kb20oMTYpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShkYXRhLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGF0YSksIDE2KQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tMChzZWxmKToKKyAgICAgICAgZW1wdHkgPSBvcy5nZXRyYW5kb20oMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbXB0eSwgYicnKQorCisgICAgZGVmIHRlc3RfZ2V0cmFuZG9tX3JhbmRvbShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIob3MsICdHUk5EX1JBTkRPTScpKQorCisgICAgICAgICMgRG9uJ3QgdGVzdCBvcy5nZXRyYW5kb20oMSwgb3MuR1JORF9SQU5ET00pIHRvIG5vdCBjb25zdW1lIHRoZSByYXJlCisgICAgICAgICMgcmVzb3VyY2UgL2Rldi9yYW5kb20KKworICAgIGRlZiB0ZXN0X2dldHJhbmRvbV9ub25ibG9jayhzZWxmKToKKyAgICAgICAgIyBUaGUgY2FsbCBtdXN0IG5vdCBmYWlsLiBDaGVjayBhbHNvIHRoYXQgdGhlIGZsYWcgZXhpc3RzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmdldHJhbmRvbSgxLCBvcy5HUk5EX05PTkJMT0NLKQorICAgICAgICBleGNlcHQgQmxvY2tpbmdJT0Vycm9yOgorICAgICAgICAgICAgIyBTeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0CisgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9nZXRyYW5kb21fdmFsdWUoc2VsZik6CisgICAgICAgIGRhdGExID0gb3MuZ2V0cmFuZG9tKDE2KQorICAgICAgICBkYXRhMiA9IG9zLmdldHJhbmRvbSgxNikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChkYXRhMSwgZGF0YTIpCisKKwogIyBvcy51cmFuZG9tKCkgZG9lc24ndCB1c2UgYSBmaWxlIGRlc2NyaXB0b3Igd2hlbiBpdCBpcyBpbXBsZW1lbnRlZCB3aXRoIHRoZQogIyBnZXRlbnRyb3B5KCkgZnVuY3Rpb24sIHRoZSBnZXRyYW5kb20oKSBmdW5jdGlvbiBvciB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbAogT1NfVVJBTkRPTV9ET05UX1VTRV9GRCA9ICgKQEAgLTEzMzUsOSArMTM3Miw5IEBACiAgICAgZGVmIHRlc3RfdXJhbmRvbV9mZF9yZW9wZW5lZChzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjMjEyMDc6IHVyYW5kb20oKSBzaG91bGQgZGV0ZWN0IGl0cyBmZCB0byAvZGV2L3VyYW5kb20KICAgICAgICAgIyBjaGFuZ2VkIHRvIHNvbWV0aGluZyBlbHNlLCBhbmQgcmVvcGVuIGl0LgotICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICd3YicpIGFzIGY6Ci0gICAgICAgICAgICBmLndyaXRlKGIieCIgKiAyNTYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBjcmVhdGVfZmlsZShzdXBwb3J0LlRFU1RGTiwgYiJ4IiAqIDI1NikKKwogICAgICAgICBjb2RlID0gIiIiaWYgMToKICAgICAgICAgICAgIGltcG9ydCBvcwogICAgICAgICAgICAgaW1wb3J0IHN5cwpAQCAtMTM5OSw2ICsxNDM2LDcgQEAKICAgICAgICAgb3MuZXhlY3ZlID0gb3JpZ19leGVjdmUKICAgICAgICAgb3MuZGVmcGF0aCA9IG9yaWdfZGVmcGF0aAogCisKIGNsYXNzIEV4ZWNUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgQHVuaXR0ZXN0LnNraXBJZihVU0lOR19MSU5VWFRIUkVBRFMsCiAgICAgICAgICAgICAgICAgICAgICAiYXZvaWQgdHJpZ2dlcmluZyBhIGxpbnV4dGhyZWFkcyBidWc6IHNlZSBpc3N1ZSAjNDk3MCIpCkBAIC0xNDY2LDYgKzE1MDQsMTggQEAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCiBjbGFzcyBXaW4zMkVycm9yVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgb3Muc3RhdChzdXBwb3J0LlRFU1RGTikKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgZXhpc3RzID0gRmFsc2UKKyAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgZXhpc3RzID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5mYWlsKCJmaWxlICVzIG11c3Qgbm90IGV4aXN0OyBvcy5zdGF0IGZhaWxlZCB3aXRoICVzIgorICAgICAgICAgICAgICAgICAgICAgICUgKHN1cHBvcnQuVEVTVEZOLCBleGMpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5mYWlsKCJmaWxlICVzIG11c3Qgbm90IGV4aXN0IiAlIHN1cHBvcnQuVEVTVEZOKQorCiAgICAgZGVmIHRlc3RfcmVuYW1lKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBvcy5yZW5hbWUsIHN1cHBvcnQuVEVTVEZOLCBzdXBwb3J0LlRFU1RGTisiLmJhayIpCiAKQEAgLTE0NzYsMTIgKzE1MjYsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgb3MuY2hkaXIsIHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfbWtkaXIoc2VsZik6Ci0gICAgICAgIGYgPSBvcGVuKHN1cHBvcnQuVEVTVEZOLCAidyIpCi0gICAgICAgIHRyeToKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBzdXBwb3J0LlRFU1RGTikKKworICAgICAgICB3aXRoIG9wZW4oc3VwcG9ydC5URVNURk4sICJ4IikgYXMgZjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLm1rZGlyLCBzdXBwb3J0LlRFU1RGTikKLSAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgb3MudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3RfdXRpbWUoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLnV0aW1lLCBzdXBwb3J0LlRFU1RGTiwgTm9uZSkKQEAgLTE0ODksNiArMTUzNyw3IEBACiAgICAgZGVmIHRlc3RfY2htb2Qoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IsIG9zLmNobW9kLCBzdXBwb3J0LlRFU1RGTiwgMCkKIAorCiBjbGFzcyBUZXN0SW52YWxpZEZEKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBzaW5nbGVzID0gWyJmY2hkaXIiLCAiZHVwIiwgImZkb3BlbiIsICJmZGF0YXN5bmMiLCAiZnN0YXQiLAogICAgICAgICAgICAgICAgImZzdGF0dmZzIiwgImZzeW5jIiwgInRjZ2V0cGdycCIsICJ0dHluYW1lIl0KQEAgLTE2MDAsMTIgKzE2NDksOSBAQAogICAgICAgICAgICAgICAgIG9zLnVubGluayhmaWxlKQogCiAgICAgZGVmIF90ZXN0X2xpbmsoc2VsZiwgZmlsZTEsIGZpbGUyKToKLSAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAidyIpIGFzIGYxOgotICAgICAgICAgICAgZjEud3JpdGUoInRlc3QiKQorICAgICAgICBjcmVhdGVfZmlsZShmaWxlMSkKIAotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIG9zLmxpbmsoZmlsZTEsIGZpbGUyKQorICAgICAgICBvcy5saW5rKGZpbGUxLCBmaWxlMikKICAgICAgICAgd2l0aCBvcGVuKGZpbGUxLCAiciIpIGFzIGYxLCBvcGVuKGZpbGUyLCAiciIpIGFzIGYyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguc2FtZW9wZW5maWxlKGYxLmZpbGVubygpLCBmMi5maWxlbm8oKSkpCiAKQEAgLTE4OTYsNiArMTk0Miw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCiAgICAgICAgICAgICAgICAgc29ydGVkKG9zLmxpc3RkaXIoc3VwcG9ydC5URVNURk4pKSwKICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZWRfcGF0aHMpCisKICAgICAgICAgIyBieXRlcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHNvcnRlZChvcy5saXN0ZGlyKG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpLApAQCAtMTkwOSw2ICsxOTU2LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKICAgICAgICAgICAgICAgICBzb3J0ZWQob3MubGlzdGRpcihwYXRoKSksCiAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVkX3BhdGhzKQorCiAgICAgICAgICMgYnl0ZXMKICAgICAgICAgcGF0aCA9IGInXFxcXD9cXCcgKyBvcy5mc2VuY29kZShvcy5wYXRoLmFic3BhdGgoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKApAQCAtMTk4OCw1MSArMjAzNiw0MyBAQAogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKG9zLmxzdGF0KGxpbmspLCBvcy5zdGF0KGxpbmspKQogCiAgICAgICAgIGJ5dGVzX2xpbmsgPSBvcy5mc2VuY29kZShsaW5rKQotICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6Ci0gICAgICAgICAgICB3YXJuaW5ncy5zaW1wbGVmaWx0ZXIoImlnbm9yZSIsIERlcHJlY2F0aW9uV2FybmluZykKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChieXRlc19saW5rKSwgb3Muc3RhdCh0YXJnZXQpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChvcy5sc3RhdChieXRlc19saW5rKSwgb3Muc3RhdChieXRlc19saW5rKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGJ5dGVzX2xpbmspLCBvcy5zdGF0KHRhcmdldCkpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwob3MubHN0YXQoYnl0ZXNfbGluayksIG9zLnN0YXQoYnl0ZXNfbGluaykpCiAKICAgICBkZWYgdGVzdF8xMjA4NChzZWxmKToKICAgICAgICAgbGV2ZWwxID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBsZXZlbDIgPSBvcy5wYXRoLmpvaW4obGV2ZWwxLCAibGV2ZWwyIikKICAgICAgICAgbGV2ZWwzID0gb3MucGF0aC5qb2luKGxldmVsMiwgImxldmVsMyIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgbGV2ZWwxKQorCisgICAgICAgIG9zLm1rZGlyKGxldmVsMSkKKyAgICAgICAgb3MubWtkaXIobGV2ZWwyKQorICAgICAgICBvcy5ta2RpcihsZXZlbDMpCisKKyAgICAgICAgZmlsZTEgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5qb2luKGxldmVsMSwgImZpbGUxIikpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGUxKQorCisgICAgICAgIG9yaWdfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwxKQotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwyKQotICAgICAgICAgICAgb3MubWtkaXIobGV2ZWwzKQorICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwyKQorICAgICAgICAgICAgbGluayA9IG9zLnBhdGguam9pbihsZXZlbDIsICJsaW5rIikKKyAgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5yZWxwYXRoKGZpbGUxKSwgImxpbmsiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibGluayIsIG9zLmxpc3RkaXIob3MuZ2V0Y3dkKCkpKQogCi0gICAgICAgICAgICBmaWxlMSA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4obGV2ZWwxLCAiZmlsZTEiKSkKKyAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIHRoZSBzYW1lIGRpciBhcyB0aGUgbGluaworICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwgb3Muc3RhdCgibGluayIpKQogCi0gICAgICAgICAgICB3aXRoIG9wZW4oZmlsZTEsICJ3IikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKCJmaWxlMSIpCisgICAgICAgICAgICAjIENoZWNrIG9zLnN0YXQgY2FsbHMgZnJvbSBhIGRpciBiZWxvdyB0aGUgbGluaworICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3Muc3RhdChvcy5wYXRoLnJlbHBhdGgobGluaykpKQogCi0gICAgICAgICAgICBvcmlnX2RpciA9IG9zLmdldGN3ZCgpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwyKQotICAgICAgICAgICAgICAgIGxpbmsgPSBvcy5wYXRoLmpvaW4obGV2ZWwyLCAibGluayIpCi0gICAgICAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLnJlbHBhdGgoZmlsZTEpLCAibGluayIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigibGluayIsIG9zLmxpc3RkaXIob3MuZ2V0Y3dkKCkpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gdGhlIHNhbWUgZGlyIGFzIHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwgb3Muc3RhdCgibGluayIpKQotCi0gICAgICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYmVsb3cgdGhlIGxpbmsKLSAgICAgICAgICAgICAgICBvcy5jaGRpcihsZXZlbDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5zdGF0KGZpbGUxKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKLQotICAgICAgICAgICAgICAgICMgQ2hlY2sgb3Muc3RhdCBjYWxscyBmcm9tIGEgZGlyIGFib3ZlIHRoZSBsaW5rCi0gICAgICAgICAgICAgICAgb3MuY2hkaXIobGV2ZWwzKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zdGF0KG9zLnBhdGgucmVscGF0aChsaW5rKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIG9zLmNoZGlyKG9yaWdfZGlyKQotICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICBzZWxmLmZhaWwoZXJyKQorICAgICAgICAgICAgIyBDaGVjayBvcy5zdGF0IGNhbGxzIGZyb20gYSBkaXIgYWJvdmUgdGhlIGxpbmsKKyAgICAgICAgICAgIG9zLmNoZGlyKGxldmVsMykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3Muc3RhdChmaWxlMSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnN0YXQob3MucGF0aC5yZWxwYXRoKGxpbmspKSkKICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgIG9zLnJlbW92ZShmaWxlMSkKLSAgICAgICAgICAgIHNodXRpbC5ybXRyZWUobGV2ZWwxKQorICAgICAgICAgICAgb3MuY2hkaXIob3JpZ19kaXIpCiAKIAogQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCkBAIC0yMDcwLDcgKzIxMTAsNyBAQAogY2xhc3MgTm9uTG9jYWxTeW1saW5rVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCiAgICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICAiIiIKKyAgICAgICAgciIiIgogICAgICAgICBDcmVhdGUgdGhpcyBzdHJ1Y3R1cmU6CiAKICAgICAgICAgYmFzZQpAQCAtMjE0MSwxMSArMjE4MSwxMTAgQEAKIAogICAgIGRlZiB0ZXN0X3dhaXRwaWQoc2VsZik6CiAgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsICctYycsICdwYXNzJ10KLSAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICAjIEFkZCBhbiBpbXBsaWNpdCB0ZXN0IGZvciBQeVVuaWNvZGVfRlNDb252ZXJ0ZXIoKS4KKyAgICAgICAgcGlkID0gb3Muc3Bhd252KG9zLlBfTk9XQUlULCBfUGF0aExpa2UoYXJnc1swXSksIGFyZ3MpCiAgICAgICAgIHN0YXR1cyA9IG9zLndhaXRwaWQocGlkLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgKHBpZCwgMCkpCiAKIAorY2xhc3MgU3Bhd25UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIGNyZWF0ZV9hcmdzKHNlbGYsICosIHdpdGhfZW52PUZhbHNlLCB1c2VfYnl0ZXM9RmFsc2UpOgorICAgICAgICBzZWxmLmV4aXRjb2RlID0gMTcKKworICAgICAgICBmaWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZmlsZW5hbWUpCisKKyAgICAgICAgaWYgbm90IHdpdGhfZW52OgorICAgICAgICAgICAgY29kZSA9ICdpbXBvcnQgc3lzOyBzeXMuZXhpdCglcyknICUgc2VsZi5leGl0Y29kZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5lbnYgPSBkaWN0KG9zLmVudmlyb24pCisgICAgICAgICAgICAjIGNyZWF0ZSBhbiB1bmlxdWUga2V5CisgICAgICAgICAgICBzZWxmLmtleSA9IHN0cih1dWlkLnV1aWQ0KCkpCisgICAgICAgICAgICBzZWxmLmVudltzZWxmLmtleV0gPSBzZWxmLmtleQorICAgICAgICAgICAgIyByZWFkIHRoZSB2YXJpYWJsZSBmcm9tIG9zLmVudmlyb24gdG8gY2hlY2sgdGhhdCBpdCBleGlzdHMKKyAgICAgICAgICAgIGNvZGUgPSAoJ2ltcG9ydCBzeXMsIG9zOyBtYWdpYyA9IG9zLmVudmlyb25bJXJdOyBzeXMuZXhpdCglcyknCisgICAgICAgICAgICAgICAgICAgICUgKHNlbGYua2V5LCBzZWxmLmV4aXRjb2RlKSkKKworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmcC53cml0ZShjb2RlKQorCisgICAgICAgIGFyZ3MgPSBbc3lzLmV4ZWN1dGFibGUsIGZpbGVuYW1lXQorICAgICAgICBpZiB1c2VfYnl0ZXM6CisgICAgICAgICAgICBhcmdzID0gW29zLmZzZW5jb2RlKGEpIGZvciBhIGluIGFyZ3NdCisgICAgICAgICAgICBzZWxmLmVudiA9IHtvcy5mc2VuY29kZShrKTogb3MuZnNlbmNvZGUodikKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIHNlbGYuZW52Lml0ZW1zKCl9CisKKyAgICAgICAgcmV0dXJuIGFyZ3MKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmwnKQorICAgIGRlZiB0ZXN0X3NwYXdubChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdubChvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubGUnKQorICAgIGRlZiB0ZXN0X3NwYXdubGUoc2VsZik6CisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25sZShvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bmxwJykKKyAgICBkZWYgdGVzdF9zcGF3bmxwKHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIGV4aXRjb2RlID0gb3Muc3Bhd25scChvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdubHBlJykKKyAgICBkZWYgdGVzdF9zcGF3bmxwZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bmxwZShvcy5QX1dBSVQsIGFyZ3NbMF0sICphcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworICAgIEByZXF1aXJlc19vc19mdW5jKCdzcGF3bnYnKQorICAgIGRlZiB0ZXN0X3NwYXdudihzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudihvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252ZScpCisgICAgZGVmIHRlc3Rfc3Bhd252ZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZlKG9zLlBfV0FJVCwgYXJnc1swXSwgYXJncywgc2VsZi5lbnYpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhpdGNvZGUsIHNlbGYuZXhpdGNvZGUpCisKKyAgICBAcmVxdWlyZXNfb3NfZnVuYygnc3Bhd252cCcpCisgICAgZGVmIHRlc3Rfc3Bhd252cChzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3MoKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudnAob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudnBlJykKKyAgICBkZWYgdGVzdF9zcGF3bnZwZShzZWxmKToKKyAgICAgICAgYXJncyA9IHNlbGYuY3JlYXRlX2FyZ3Mod2l0aF9lbnY9VHJ1ZSkKKyAgICAgICAgZXhpdGNvZGUgPSBvcy5zcGF3bnZwZShvcy5QX1dBSVQsIGFyZ3NbMF0sIGFyZ3MsIHNlbGYuZW52KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4aXRjb2RlLCBzZWxmLmV4aXRjb2RlKQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudicpCisgICAgZGVmIHRlc3Rfbm93YWl0KHNlbGYpOgorICAgICAgICBhcmdzID0gc2VsZi5jcmVhdGVfYXJncygpCisgICAgICAgIHBpZCA9IG9zLnNwYXdudihvcy5QX05PV0FJVCwgYXJnc1swXSwgYXJncykKKyAgICAgICAgcmVzdWx0ID0gb3Mud2FpdHBpZChwaWQsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzdWx0WzBdLCBwaWQpCisgICAgICAgIHN0YXR1cyA9IHJlc3VsdFsxXQorICAgICAgICBpZiBoYXNhdHRyKG9zLCAnV0lGRVhJVEVEJyk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MuV0lGRVhJVEVEKHN0YXR1cykpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9zLldFWElUU1RBVFVTKHN0YXR1cyksIHNlbGYuZXhpdGNvZGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgc2VsZi5leGl0Y29kZSA8PCA4KQorCisgICAgQHJlcXVpcmVzX29zX2Z1bmMoJ3NwYXdudmUnKQorICAgIGRlZiB0ZXN0X3NwYXdudmVfYnl0ZXMoc2VsZik6CisgICAgICAgICMgVGVzdCBieXRlcyBoYW5kbGluZyBpbiBwYXJzZV9hcmdsaXN0IGFuZCBwYXJzZV9lbnZsaXN0ICgjMjgxMTQpCisgICAgICAgIGFyZ3MgPSBzZWxmLmNyZWF0ZV9hcmdzKHdpdGhfZW52PVRydWUsIHVzZV9ieXRlcz1UcnVlKQorICAgICAgICBleGl0Y29kZSA9IG9zLnNwYXdudmUob3MuUF9XQUlULCBhcmdzWzBdLCBhcmdzLCBzZWxmLmVudikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleGl0Y29kZSwgc2VsZi5leGl0Y29kZSkKKworCiAjIFRoZSBpbnRyb2R1Y3Rpb24gb2YgdGhpcyBUZXN0Q2FzZSBjYXVzZWQgYXQgbGVhc3QgdHdvIGRpZmZlcmVudCBlcnJvcnMgb24KICMgKm5peCBidWlsZGJvdHMuIFRlbXBvcmFyaWx5IHNraXAgdGhpcyB0byBsZXQgdGhlIGJ1aWxkYm90cyBtb3ZlIGFsb25nLgogQHVuaXR0ZXN0LnNraXAoIlNraXAgZHVlIHRvIHBsYXRmb3JtL2Vudmlyb25tZW50IGRpZmZlcmVuY2VzIG9uICpOSVggYnVpbGRib3RzIikKQEAgLTIxNjgsOCArMjMwNyw4IEBACiAgICAgICAgIHRyeToKICAgICAgICAgICAgIG5ld19wcmlvID0gb3MuZ2V0cHJpb3JpdHkob3MuUFJJT19QUk9DRVNTLCBvcy5nZXRwaWQoKSkKICAgICAgICAgICAgIGlmIGJhc2UgPj0gMTkgYW5kIG5ld19wcmlvIDw9IDE5OgotICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KAotICAgICAgInVuYWJsZSB0byByZWxpYWJseSB0ZXN0IHNldHByaW9yaXR5IGF0IGN1cnJlbnQgbmljZSBsZXZlbCBvZiAlcyIgJSBiYXNlKQorICAgICAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCJ1bmFibGUgdG8gcmVsaWFibHkgdGVzdCBzZXRwcmlvcml0eSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImF0IGN1cnJlbnQgbmljZSBsZXZlbCBvZiAlcyIgJSBiYXNlKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld19wcmlvLCBiYXNlICsgMSkKICAgICAgICAgZmluYWxseToKQEAgLTIyNzksOCArMjQxOCw3IEBACiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgY2xzLmtleSA9IHN1cHBvcnQudGhyZWFkaW5nX3NldHVwKCkKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmOgotICAgICAgICAgICAgZi53cml0ZShjbHMuREFUQSkKKyAgICAgICAgY3JlYXRlX2ZpbGUoc3VwcG9ydC5URVNURk4sIGNscy5EQVRBKQogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHRlYXJEb3duQ2xhc3MoY2xzKToKQEAgLTI0MzAsMTAgKzI1NjgsMTEgQEAKICAgICBkZWYgdGVzdF90cmFpbGVycyhzZWxmKToKICAgICAgICAgVEVTVEZOMiA9IHN1cHBvcnQuVEVTVEZOICsgIjIiCiAgICAgICAgIGZpbGVfZGF0YSA9IGIiYWJjZGVmIgotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3diJykgYXMgZjoKLSAgICAgICAgICAgIGYud3JpdGUoZmlsZV9kYXRhKQotICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3JiJylhcyBmOgotICAgICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKG9zLnJlbW92ZSwgVEVTVEZOMikKKworICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIFRFU1RGTjIpCisgICAgICAgIGNyZWF0ZV9maWxlKFRFU1RGTjIsIGZpbGVfZGF0YSkKKworICAgICAgICB3aXRoIG9wZW4oVEVTVEZOMiwgJ3JiJykgYXMgZjoKICAgICAgICAgICAgIG9zLnNlbmRmaWxlKHNlbGYuc29ja25vLCBmLmZpbGVubygpLCAwLCBsZW4oZmlsZV9kYXRhKSwKICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWlsZXJzPVtiIjEyMzQiXSkKICAgICAgICAgICAgIHNlbGYuY2xpZW50LmNsb3NlKCkKQEAgLTI0NTYsMzUgKzI1OTUsMzcgQEAKIGRlZiBzdXBwb3J0c19leHRlbmRlZF9hdHRyaWJ1dGVzKCk6CiAgICAgaWYgbm90IGhhc2F0dHIob3MsICJzZXR4YXR0ciIpOgogICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgIHRyeToKLSAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAid2IiKSBhcyBmcDoKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuVEVTVEZOLCAieGIiLCAwKSBhcyBmcDoKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICBvcy5zZXR4YXR0cihmcC5maWxlbm8oKSwgYiJ1c2VyLnRlc3QiLCBiIiIpCiAgICAgICAgICAgICBleGNlcHQgT1NFcnJvcjoKICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICBmaW5hbGx5OgogICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLSAgICAjIEtlcm5lbHMgPCAyLjYuMzkgZG9uJ3QgcmVzcGVjdCBzZXR4YXR0ciBmbGFncy4KLSAgICBrZXJuZWxfdmVyc2lvbiA9IHBsYXRmb3JtLnJlbGVhc2UoKQotICAgIG0gPSByZS5tYXRjaCgiMi42LihcZHsxLDJ9KSIsIGtlcm5lbF92ZXJzaW9uKQotICAgIHJldHVybiBtIGlzIE5vbmUgb3IgaW50KG0uZ3JvdXAoMSkpID49IDM5CisKKyAgICByZXR1cm4gVHJ1ZQogCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN1cHBvcnRzX2V4dGVuZGVkX2F0dHJpYnV0ZXMoKSwKICAgICAgICAgICAgICAgICAgICAgICJubyBub24tYnJva2VuIGV4dGVuZGVkIGF0dHJpYnV0ZSBzdXBwb3J0IikKKyMgS2VybmVscyA8IDIuNi4zOSBkb24ndCByZXNwZWN0IHNldHhhdHRyIGZsYWdzLgorQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbigyLCA2LCAzOSkKIGNsYXNzIEV4dGVuZGVkQXR0cmlidXRlVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzdXBwb3J0LnVubGluayhzdXBwb3J0LlRFU1RGTikKLQogICAgIGRlZiBfY2hlY2tfeGF0dHJzX3N0cihzZWxmLCBzLCBnZXR4YXR0ciwgc2V0eGF0dHIsIHJlbW92ZXhhdHRyLCBsaXN0eGF0dHIsICoqa3dhcmdzKToKICAgICAgICAgZm4gPSBzdXBwb3J0LlRFU1RGTgotICAgICAgICBvcGVuKGZuLCAid2IiKS5jbG9zZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgZm4pCisgICAgICAgIGNyZWF0ZV9maWxlKGZuKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICBpbml0X3hhdHRyID0gbGlzdHhhdHRyKGZuKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5pdF94YXR0ciwgbGlzdCkKKwogICAgICAgICBzZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksIGIiIiwgKiprd2FyZ3MpCiAgICAgICAgIHhhdHRyID0gc2V0KGluaXRfeGF0dHIpCiAgICAgICAgIHhhdHRyLmFkZCgidXNlci50ZXN0IikKQEAgLTI0OTIsMTkgKzI2MzMsMjQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgYiJ1c2VyLnRlc3QiLCAqKmt3YXJncyksIGIiIikKICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImhlbGxvIiwgb3MuWEFUVFJfUkVQTEFDRSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZ2V0eGF0dHIoZm4sIGIidXNlci50ZXN0IiwgKiprd2FyZ3MpLCBiImhlbGxvIikKKwogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgc2V0eGF0dHIoZm4sIHMoInVzZXIudGVzdCIpLCBiImJ5ZSIsIG9zLlhBVFRSX0NSRUFURSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FRVhJU1QpCisKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBjbToKICAgICAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksIGIiYnllIiwgb3MuWEFUVFJfUkVQTEFDRSwgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY20uZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FTk9EQVRBKQorCiAgICAgICAgIHNldHhhdHRyKGZuLCBzKCJ1c2VyLnRlc3QyIiksIGIiZm9vIiwgb3MuWEFUVFJfQ1JFQVRFLCAqKmt3YXJncykKICAgICAgICAgeGF0dHIuYWRkKCJ1c2VyLnRlc3QyIikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHhhdHRyKQogICAgICAgICByZW1vdmV4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQorCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvcikgYXMgY206CiAgICAgICAgICAgICBnZXR4YXR0cihmbiwgcygidXNlci50ZXN0IiksICoqa3dhcmdzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNtLmV4Y2VwdGlvbi5lcnJubywgZXJybm8uRU5PREFUQSkKKwogICAgICAgICB4YXR0ci5yZW1vdmUoInVzZXIudGVzdCIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KGxpc3R4YXR0cihmbikpLCB4YXR0cikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChnZXR4YXR0cihmbiwgcygidXNlci50ZXN0MiIpLCAqKmt3YXJncyksIGIiZm9vIikKQEAgLTI1MTcsMTEgKzI2NjMsMTEgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQobGlzdHhhdHRyKGZuKSksIHNldChpbml0X3hhdHRyKSB8IHNldChtYW55KSkKIAogICAgIGRlZiBfY2hlY2tfeGF0dHJzKHNlbGYsICphcmdzLCAqKmt3YXJncyk6Ci0gICAgICAgIGRlZiBtYWtlX2J5dGVzKHMpOgotICAgICAgICAgICAgcmV0dXJuIGJ5dGVzKHMsICJhc2NpaSIpCiAgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRyc19zdHIoc3RyLCAqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQotICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKG1ha2VfYnl0ZXMsICphcmdzLCAqKmt3YXJncykKKworICAgICAgICBzZWxmLl9jaGVja194YXR0cnNfc3RyKG9zLmZzZW5jb2RlLCAqYXJncywgKiprd2FyZ3MpCisgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCiAgICAgZGVmIHRlc3Rfc2ltcGxlKHNlbGYpOgogICAgICAgICBzZWxmLl9jaGVja194YXR0cnMob3MuZ2V0eGF0dHIsIG9zLnNldHhhdHRyLCBvcy5yZW1vdmV4YXR0ciwKQEAgLTI1MzYsMTAgKzI2ODIsMTAgQEAKICAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAicmIiKSBhcyBmcDoKICAgICAgICAgICAgICAgICByZXR1cm4gb3MuZ2V0eGF0dHIoZnAuZmlsZW5vKCksICphcmdzKQogICAgICAgICBkZWYgc2V0eGF0dHIocGF0aCwgKmFyZ3MpOgotICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIpIGFzIGZwOgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJ3YiIsIDApIGFzIGZwOgogICAgICAgICAgICAgICAgIG9zLnNldHhhdHRyKGZwLmZpbGVubygpLCAqYXJncykKICAgICAgICAgZGVmIHJlbW92ZXhhdHRyKHBhdGgsICphcmdzKToKLSAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiKSBhcyBmcDoKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAid2IiLCAwKSBhcyBmcDoKICAgICAgICAgICAgICAgICBvcy5yZW1vdmV4YXR0cihmcC5maWxlbm8oKSwgKmFyZ3MpCiAgICAgICAgIGRlZiBsaXN0eGF0dHIocGF0aCwgKmFyZ3MpOgogICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICJyYiIpIGFzIGZwOgpAQCAtMjU0Nyw0MyArMjY5Myw2IEBACiAgICAgICAgIHNlbGYuX2NoZWNrX3hhdHRycyhnZXR4YXR0ciwgc2V0eGF0dHIsIHJlbW92ZXhhdHRyLCBsaXN0eGF0dHIpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJXaW4zMiBzcGVjaWZpYyB0ZXN0cyIpCi1jbGFzcyBXaW4zMkRlcHJlY2F0ZWRCeXRlc0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZChzZWxmKToKLSAgICAgICAgaW1wb3J0IG50Ci0gICAgICAgIGZpbGVuYW1lID0gb3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBmb3IgZnVuYywgKmFyZ3MgaW4gKAotICAgICAgICAgICAgICAgIChudC5fZ2V0ZnVsbHBhdGhuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG50Ll9pc2RpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5hY2Nlc3MsIGZpbGVuYW1lLCBvcy5SX09LKSwKLSAgICAgICAgICAgICAgICAob3MuY2hkaXIsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MuY2htb2QsIGZpbGVuYW1lLCAwbzc3NyksCi0gICAgICAgICAgICAgICAgKG9zLmdldGN3ZGIsKSwKLSAgICAgICAgICAgICAgICAob3MubGluaywgZmlsZW5hbWUsIGZpbGVuYW1lKSwKLSAgICAgICAgICAgICAgICAob3MubGlzdGRpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5sc3RhdCwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5ta2RpciwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5vcGVuLCBmaWxlbmFtZSwgb3MuT19SRE9OTFkpLAotICAgICAgICAgICAgICAgIChvcy5yZW5hbWUsIGZpbGVuYW1lLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnJtZGlyLCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnN0YXJ0ZmlsZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy5zdGF0LCBmaWxlbmFtZSksCi0gICAgICAgICAgICAgICAgKG9zLnVubGluaywgZmlsZW5hbWUpLAotICAgICAgICAgICAgICAgIChvcy51dGltZSwgZmlsZW5hbWUpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcsIGZ1bmMsICphcmdzKQotCi0gICAgQHN1cHBvcnQuc2tpcF91bmxlc3Nfc3ltbGluawotICAgIGRlZiB0ZXN0X3N5bWxpbmsoc2VsZik6Ci0gICAgICAgIGZpbGVuYW1lID0gb3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pCi0gICAgICAgIHdpdGggd2FybmluZ3MuY2F0Y2hfd2FybmluZ3MoKToKLSAgICAgICAgICAgIHdhcm5pbmdzLnNpbXBsZWZpbHRlcigiZXJyb3IiLCBEZXByZWNhdGlvbldhcm5pbmcpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhEZXByZWNhdGlvbldhcm5pbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5zeW1saW5rLCBmaWxlbmFtZSwgZmlsZW5hbWUpCi0KLQogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF90ZXJtaW5hbF9zaXplJyksICJyZXF1aXJlcyBvcy5nZXRfdGVybWluYWxfc2l6ZSIpCiBjbGFzcyBUZXJtc2l6ZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF9kb2VzX25vdF9jcmFzaChzZWxmKToKQEAgLTI2NDYsNiArMjc1NSw3IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBlbmNvZGVkID0gb3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pCiAgICAgICAgIHNlbGYuYnl0ZXNfZmlsZW5hbWVzLmFwcGVuZChlbmNvZGVkKQorICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQoYnl0ZWFycmF5KGVuY29kZWQpKQogICAgICAgICBzZWxmLmJ5dGVzX2ZpbGVuYW1lcy5hcHBlbmQobWVtb3J5dmlldyhlbmNvZGVkKSkKIAogICAgICAgICBzZWxmLmZpbGVuYW1lcyA9IHNlbGYuYnl0ZXNfZmlsZW5hbWVzICsgc2VsZi51bmljb2RlX2ZpbGVuYW1lcwpAQCAtMjY2NiwxNiArMjc3Niw3IEBACiAgICAgICAgICAgICAgICAgKHNlbGYuYnl0ZXNfZmlsZW5hbWVzLCBvcy5yZXBsYWNlLCBiImRzdCIpLAogICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5yZW5hbWUsICJkc3QiKSwKICAgICAgICAgICAgICAgICAoc2VsZi51bmljb2RlX2ZpbGVuYW1lcywgb3MucmVwbGFjZSwgImRzdCIpLAotICAgICAgICAgICAgICAgICMgSXNzdWUgIzE2NDE0OiBEb24ndCB0ZXN0IHVuZGVjb2RhYmxlIG5hbWVzIHdpdGggbGlzdGRpcigpCi0gICAgICAgICAgICAgICAgIyBiZWNhdXNlIG9mIGEgV2luZG93cyBidWcuCi0gICAgICAgICAgICAgICAgIwotICAgICAgICAgICAgICAgICMgV2l0aCB0aGUgQU5TSSBjb2RlIHBhZ2UgOTMyLCBvcy5saXN0ZGlyKGInXHhlNycpIHJldHVybiBhbgotICAgICAgICAgICAgICAgICMgZW1wdHkgbGlzdCAoaW5zdGVhZCBvZiBmYWlsaW5nKSwgd2hlcmVhcyBvcy5saXN0ZGlyKGInXHhmZicpCi0gICAgICAgICAgICAgICAgIyByYWlzZXMgYSBGaWxlTm90Rm91bmRFcnJvci4gSXQgbG9va3MgbGlrZSBhIFdpbmRvd3MgYnVnOgotICAgICAgICAgICAgICAgICMgYidceGU3JyBkaXJlY3RvcnkgZG9lcyBub3QgZXhpc3QsIEZpbmRGaXJzdEZpbGVBKGInXHhlNycpCi0gICAgICAgICAgICAgICAgIyBmYWlscyB3aXRoIEVSUk9SX0ZJTEVfTk9UX0ZPVU5EICgyKSwgaW5zdGVhZCBvZgotICAgICAgICAgICAgICAgICMgRVJST1JfUEFUSF9OT1RfRk9VTkQgKDMpLgotICAgICAgICAgICAgICAgIChzZWxmLnVuaWNvZGVfZmlsZW5hbWVzLCBvcy5saXN0ZGlyLCksCisgICAgICAgICAgICAgICAgKHNlbGYudW5pY29kZV9maWxlbmFtZXMsIG9zLmxpc3RkaXIsICksCiAgICAgICAgICAgICApKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZnVuY3MuZXh0ZW5kKCgKQEAgLTI3MTYsMTIgKzI4MTcsMjQgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZnVuY3MuYXBwZW5kKChzZWxmLmZpbGVuYW1lcywgb3MucmVhZGxpbmssKSkKIAorCiAgICAgICAgIGZvciBmaWxlbmFtZXMsIGZ1bmMsICpmdW5jX2FyZ3MgaW4gZnVuY3M6CiAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlbmFtZXM6CiAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBmdW5jKG5hbWUsICpmdW5jX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UobmFtZSwgKHN0ciwgYnl0ZXMpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgJ3Nob3VsZCBiZScpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMobmFtZSwgKmZ1bmNfYXJncykKICAgICAgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoZXJyLmZpbGVuYW1lLCBuYW1lKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGVyci5maWxlbmFtZSwgbmFtZSwgc3RyKGZ1bmMpKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBSdW50aW1lRXJyb3IgYXMgZXJyOgorICAgICAgICAgICAgICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCisKKyAgICAgICAgICAgICAgICAgICAgIyBpc3N1ZTI3NzgxOiB1bmRlY29kYWJsZSBieXRlcyBjdXJyZW50bHkgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgICAgICAgICAgICAgICMgYnkgMy42LjBiNCB0aGlzIHdpbGwgYmVjb21lIFVuaWNvZGVEZWNvZGVFcnJvciBvciBub3RoaW5nCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShlcnIuX19jb250ZXh0X18sIFVuaWNvZGVEZWNvZGVFcnJvcikKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIGV4Y2VwdGlvbiB0aHJvd24gYnkge30iLmZvcm1hdChmdW5jKSkKIApAQCAtMjgxOSw2ICsyOTMyLDYzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3MuZ2V0X2luaGVyaXRhYmxlKHNsYXZlX2ZkKSwgRmFsc2UpCiAKIAorY2xhc3MgUGF0aFRDb252ZXJ0ZXJUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0dXBsZXMgb2YgKGZ1bmN0aW9uIG5hbWUsIGFsbG93cyBmZCBhcmd1bWVudHMsIGFkZGl0aW9uYWwgYXJndW1lbnRzIHRvCisgICAgIyBmdW5jdGlvbiwgY2xlYW51cCBmdW5jdGlvbikKKyAgICBmdW5jdGlvbnMgPSBbCisgICAgICAgICgnc3RhdCcsIFRydWUsICgpLCBOb25lKSwKKyAgICAgICAgKCdsc3RhdCcsIEZhbHNlLCAoKSwgTm9uZSksCisgICAgICAgICgnYWNjZXNzJywgRmFsc2UsIChvcy5GX09LLCksIE5vbmUpLAorICAgICAgICAoJ2NoZmxhZ3MnLCBGYWxzZSwgKDAsKSwgTm9uZSksCisgICAgICAgICgnbGNoZmxhZ3MnLCBGYWxzZSwgKDAsKSwgTm9uZSksCisgICAgICAgICgnb3BlbicsIEZhbHNlLCAoMCwpLCBnZXRhdHRyKG9zLCAnY2xvc2UnLCBOb25lKSksCisgICAgXQorCisgICAgZGVmIHRlc3RfcGF0aF90X2NvbnZlcnRlcihzZWxmKToKKyAgICAgICAgc3RyX2ZpbGVuYW1lID0gc3VwcG9ydC5URVNURk4KKyAgICAgICAgaWYgb3MubmFtZSA9PSAnbnQnOgorICAgICAgICAgICAgYnl0ZXNfZnNwYXRoID0gYnl0ZXNfZmlsZW5hbWUgPSBOb25lCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBieXRlc19maWxlbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmVuY29kZSgnYXNjaWknKQorICAgICAgICAgICAgYnl0ZXNfZnNwYXRoID0gX1BhdGhMaWtlKGJ5dGVzX2ZpbGVuYW1lKQorICAgICAgICBmZCA9IG9zLm9wZW4oX1BhdGhMaWtlKHN0cl9maWxlbmFtZSksIG9zLk9fV1JPTkxZfG9zLk9fQ1JFQVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgc3VwcG9ydC5URVNURk4pCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy5jbG9zZSwgZmQpCisKKyAgICAgICAgaW50X2ZzcGF0aCA9IF9QYXRoTGlrZShmZCkKKyAgICAgICAgc3RyX2ZzcGF0aCA9IF9QYXRoTGlrZShzdHJfZmlsZW5hbWUpCisKKyAgICAgICAgZm9yIG5hbWUsIGFsbG93X2ZkLCBleHRyYV9hcmdzLCBjbGVhbnVwX2ZuIGluIHNlbGYuZnVuY3Rpb25zOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFtZT1uYW1lKToKKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIGZuID0gZ2V0YXR0cihvcywgbmFtZSkKKyAgICAgICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICBmb3IgcGF0aCBpbiAoc3RyX2ZpbGVuYW1lLCBieXRlc19maWxlbmFtZSwgc3RyX2ZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZXNfZnNwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBpcyBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFtZT1uYW1lLCBwYXRoPXBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZm4ocGF0aCwgKmV4dHJhX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBjbGVhbnVwX2ZuIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXBfZm4ocmVzdWx0KQorCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KAorICAgICAgICAgICAgICAgICAgICAgICAgVHlwZUVycm9yLCAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMnKToKKyAgICAgICAgICAgICAgICAgICAgZm4oaW50X2ZzcGF0aCwgKmV4dHJhX2FyZ3MpCisKKyAgICAgICAgICAgICAgICBpZiBhbGxvd19mZDoKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gZm4oZmQsICpleHRyYV9hcmdzKSAgIyBzaG91bGQgbm90IGZhaWwKKyAgICAgICAgICAgICAgICAgICAgaWYgY2xlYW51cF9mbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNsZWFudXBfZm4ocmVzdWx0KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29zLlBhdGhMaWtlJyk6CisgICAgICAgICAgICAgICAgICAgICAgICBmbihmZCwgKmV4dHJhX2FyZ3MpCisKKwogQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihvcywgJ2dldF9ibG9ja2luZycpLAogICAgICAgICAgICAgICAgICAgICAgJ25lZWRzIG9zLmdldF9ibG9ja2luZygpIGFuZCBvcy5zZXRfYmxvY2tpbmcoKScpCiBjbGFzcyBCbG9ja2luZ1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTI4NDIsMTUgKzMwMTIsMTggQEAKIAogCiBjbGFzcyBUZXN0U2NhbmRpcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZyA9IHN1cHBvcnQuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZworCiAgICAgZGVmIHNldFVwKHNlbGYpOgogICAgICAgICBzZWxmLnBhdGggPSBvcy5wYXRoLnJlYWxwYXRoKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmJ5dGVzX3BhdGggPSBvcy5mc2VuY29kZShzZWxmLnBhdGgpCiAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgc2VsZi5wYXRoKQogICAgICAgICBvcy5ta2RpcihzZWxmLnBhdGgpCiAKICAgICBkZWYgY3JlYXRlX2ZpbGUoc2VsZiwgbmFtZT0iZmlsZS50eHQiKToKLSAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCBuYW1lKQotICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3YiIpIGFzIGZwOgotICAgICAgICAgICAgZnAud3JpdGUoYidweXRob24nKQorICAgICAgICBwYXRoID0gc2VsZi5ieXRlc19wYXRoIGlmIGlzaW5zdGFuY2UobmFtZSwgYnl0ZXMpIGVsc2Ugc2VsZi5wYXRoCisgICAgICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKHBhdGgsIG5hbWUpCisgICAgICAgIGNyZWF0ZV9maWxlKGZpbGVuYW1lLCBiJ3B5dGhvbicpCiAgICAgICAgIHJldHVybiBmaWxlbmFtZQogCiAgICAgZGVmIGdldF9lbnRyaWVzKHNlbGYsIG5hbWVzKToKQEAgLTI4NzMsNiArMzA0Niw3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXQxLCBzdGF0MikKIAogICAgIGRlZiBjaGVja19lbnRyeShzZWxmLCBlbnRyeSwgbmFtZSwgaXNfZGlyLCBpc19maWxlLCBpc19zeW1saW5rKToKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGVudHJ5LCBvcy5EaXJFbnRyeSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlbnRyeS5uYW1lLCBuYW1lKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5LnBhdGgsIG9zLnBhdGguam9pbihzZWxmLnBhdGgsIG5hbWUpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lmlub2RlKCksCkBAIC0yOTM4LDE1ICszMTEyLDE2IEBACiAgICAgICAgICAgICBzZWxmLmNoZWNrX2VudHJ5KGVudHJ5LCAnc3ltbGlua19maWxlLnR4dCcsIEZhbHNlLCBUcnVlLCBUcnVlKQogCiAgICAgZGVmIGdldF9lbnRyeShzZWxmLCBuYW1lKToKLSAgICAgICAgZW50cmllcyA9IGxpc3Qob3Muc2NhbmRpcihzZWxmLnBhdGgpKQorICAgICAgICBwYXRoID0gc2VsZi5ieXRlc19wYXRoIGlmIGlzaW5zdGFuY2UobmFtZSwgYnl0ZXMpIGVsc2Ugc2VsZi5wYXRoCisgICAgICAgIGVudHJpZXMgPSBsaXN0KG9zLnNjYW5kaXIocGF0aCkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVudHJpZXMpLCAxKQogCiAgICAgICAgIGVudHJ5ID0gZW50cmllc1swXQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVudHJ5Lm5hbWUsIG5hbWUpCiAgICAgICAgIHJldHVybiBlbnRyeQogCi0gICAgZGVmIGNyZWF0ZV9maWxlX2VudHJ5KHNlbGYpOgotICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUoKQorICAgIGRlZiBjcmVhdGVfZmlsZV9lbnRyeShzZWxmLCBuYW1lPSdmaWxlLnR4dCcpOgorICAgICAgICBmaWxlbmFtZSA9IHNlbGYuY3JlYXRlX2ZpbGUobmFtZT1uYW1lKQogICAgICAgICByZXR1cm4gc2VsZi5nZXRfZW50cnkob3MucGF0aC5iYXNlbmFtZShmaWxlbmFtZSkpCiAKICAgICBkZWYgdGVzdF9jdXJyZW50X2RpcmVjdG9yeShzZWxmKToKQEAgLTI5NjcsNiArMzE0MiwxOCBAQAogICAgICAgICBlbnRyeSA9IHNlbGYuY3JlYXRlX2ZpbGVfZW50cnkoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIoZW50cnkpLCAiPERpckVudHJ5ICdmaWxlLnR4dCc+IikKIAorICAgIGRlZiB0ZXN0X2ZzcGF0aF9wcm90b2NvbChzZWxmKToKKyAgICAgICAgZW50cnkgPSBzZWxmLmNyZWF0ZV9maWxlX2VudHJ5KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcy5mc3BhdGgoZW50cnkpLCBvcy5wYXRoLmpvaW4oc2VsZi5wYXRoLCAnZmlsZS50eHQnKSkKKworICAgIGRlZiB0ZXN0X2ZzcGF0aF9wcm90b2NvbF9ieXRlcyhzZWxmKToKKyAgICAgICAgYnl0ZXNfZmlsZW5hbWUgPSBvcy5mc2VuY29kZSgnYnl0ZXNmaWxlLnR4dCcpCisgICAgICAgIGJ5dGVzX2VudHJ5ID0gc2VsZi5jcmVhdGVfZmlsZV9lbnRyeShuYW1lPWJ5dGVzX2ZpbGVuYW1lKQorICAgICAgICBmc3BhdGggPSBvcy5mc3BhdGgoYnl0ZXNfZW50cnkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmc3BhdGgsIGJ5dGVzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZzcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4ob3MuZnNlbmNvZGUoc2VsZi5wYXRoKSxieXRlc19maWxlbmFtZSkpCisKICAgICBkZWYgdGVzdF9yZW1vdmVkX2RpcihzZWxmKToKICAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnBhdGgsICdkaXInKQogCkBAIC0zMDMwLDExICszMjE3LDYgQEAKICAgICAgICAgZW50cnkuc3RhdChmb2xsb3dfc3ltbGlua3M9RmFsc2UpCiAKICAgICBkZWYgdGVzdF9ieXRlcyhzZWxmKToKLSAgICAgICAgaWYgb3MubmFtZSA9PSAibnQiOgotICAgICAgICAgICAgIyBPbiBXaW5kb3dzLCBvcy5zY2FuZGlyKGJ5dGVzKSBtdXN0IHJhaXNlIGFuIGV4Y2VwdGlvbgotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zY2FuZGlyLCBiJy4nKQotICAgICAgICAgICAgcmV0dXJuCi0KICAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQogCiAgICAgICAgIHBhdGhfYnl0ZXMgPSBvcy5mc2VuY29kZShzZWxmLnBhdGgpCkBAIC0zMDY0LDYgKzMyNDYsMTEyIEBACiAgICAgICAgIGZvciBvYmogaW4gWzEyMzQsIDEuMjM0LCB7fSwgW11dOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBvcy5zY2FuZGlyLCBvYmopCiAKKyAgICBkZWYgdGVzdF9jbG9zZShzZWxmKToKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZS50eHQiKQorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlMi50eHQiKQorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICBpdGVyYXRvci5jbG9zZSgpCisgICAgICAgICMgbXVsdGlwbGUgY2xvc2VzCisgICAgICAgIGl0ZXJhdG9yLmNsb3NlKCkKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggb3Muc2NhbmRpcihzZWxmLnBhdGgpIGFzIGl0ZXJhdG9yOgorICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgd2l0aCBzZWxmLmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKToKKyAgICAgICAgICAgIGRlbCBpdGVyYXRvcgorCisgICAgZGVmIHRlc3RfY29udGV4dF9tYW5hZ2VyX2Nsb3NlKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIHdpdGggb3Muc2NhbmRpcihzZWxmLnBhdGgpIGFzIGl0ZXJhdG9yOgorICAgICAgICAgICAgbmV4dChpdGVyYXRvcikKKyAgICAgICAgICAgIGl0ZXJhdG9yLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X2NvbnRleHRfbWFuYWdlcl9leGNlcHRpb24oc2VsZik6CisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUudHh0IikKKyAgICAgICAgc2VsZi5jcmVhdGVfZmlsZSgiZmlsZTIudHh0IikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhaZXJvRGl2aXNpb25FcnJvcik6CisgICAgICAgICAgICB3aXRoIG9zLnNjYW5kaXIoc2VsZi5wYXRoKSBhcyBpdGVyYXRvcjoKKyAgICAgICAgICAgICAgICBuZXh0KGl0ZXJhdG9yKQorICAgICAgICAgICAgICAgIDEvMAorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKyAgICBkZWYgdGVzdF9yZXNvdXJjZV93YXJuaW5nKHNlbGYpOgorICAgICAgICBzZWxmLmNyZWF0ZV9maWxlKCJmaWxlLnR4dCIpCisgICAgICAgIHNlbGYuY3JlYXRlX2ZpbGUoImZpbGUyLnR4dCIpCisgICAgICAgIGl0ZXJhdG9yID0gb3Muc2NhbmRpcihzZWxmLnBhdGgpCisgICAgICAgIG5leHQoaXRlcmF0b3IpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisgICAgICAgICAgICBzdXBwb3J0LmdjX2NvbGxlY3QoKQorICAgICAgICAjIGV4aGF1c3RlZCBpdGVyYXRvcgorICAgICAgICBpdGVyYXRvciA9IG9zLnNjYW5kaXIoc2VsZi5wYXRoKQorICAgICAgICBsaXN0KGl0ZXJhdG9yKQorICAgICAgICB3aXRoIHNlbGYuY2hlY2tfbm9fcmVzb3VyY2Vfd2FybmluZygpOgorICAgICAgICAgICAgZGVsIGl0ZXJhdG9yCisKKworY2xhc3MgVGVzdFBFUDUxOSh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAjIEFic3RyYWN0ZWQgc28gaXQgY2FuIGJlIG92ZXJyaWRkZW4gdG8gdGVzdCBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbgorICAgICMgaWYgYSBDIHZlcnNpb24gaXMgcHJvdmlkZWQuCisgICAgZnNwYXRoID0gc3RhdGljbWV0aG9kKG9zLmZzcGF0aCkKKworICAgIGRlZiB0ZXN0X3JldHVybl9ieXRlcyhzZWxmKToKKyAgICAgICAgZm9yIGIgaW4gYidoZWxsbycsIGInZ29vZGJ5ZScsIGInc29tZS9wYXRoL2FuZC9maWxlJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiwgc2VsZi5mc3BhdGgoYikpCisKKyAgICBkZWYgdGVzdF9yZXR1cm5fc3RyaW5nKHNlbGYpOgorICAgICAgICBmb3IgcyBpbiAnaGVsbG8nLCAnZ29vZGJ5ZScsICdzb21lL3BhdGgvYW5kL2ZpbGUnOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLCBzZWxmLmZzcGF0aChzKSkKKworICAgIGRlZiB0ZXN0X2ZzZW5jb2RlX2ZzZGVjb2RlKHNlbGYpOgorICAgICAgICBmb3IgcCBpbiAicGF0aC9saWtlL29iamVjdCIsIGIicGF0aC9saWtlL29iamVjdCI6CisgICAgICAgICAgICBwYXRobGlrZSA9IF9QYXRoTGlrZShwKQorCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAsIHNlbGYuZnNwYXRoKHBhdGhsaWtlKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYiJwYXRoL2xpa2Uvb2JqZWN0Iiwgb3MuZnNlbmNvZGUocGF0aGxpa2UpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgicGF0aC9saWtlL29iamVjdCIsIG9zLmZzZGVjb2RlKHBhdGhsaWtlKSkKKworICAgIGRlZiB0ZXN0X3BhdGhsaWtlKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCcjZmVlbHRoZWdpbCcsIHNlbGYuZnNwYXRoKF9QYXRoTGlrZSgnI2ZlZWx0aGVnaWwnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKF9QYXRoTGlrZSwgb3MuUGF0aExpa2UpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShfUGF0aExpa2UoKSwgb3MuUGF0aExpa2UpKQorCisgICAgZGVmIHRlc3RfZ2FyYmFnZV9pbl9leGNlcHRpb25fb3V0KHNlbGYpOgorICAgICAgICB2YXBvciA9IHR5cGUoJ2JsYWgnLCAoKSwge30pCisgICAgICAgIGZvciBvIGluIGludCwgdHlwZSwgb3MsIHZhcG9yKCk6CisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlbGYuZnNwYXRoLCBvKQorCisgICAgZGVmIHRlc3RfYXJndW1lbnRfcmVxdWlyZWQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgpCisKKyAgICBkZWYgdGVzdF9iYWRfcGF0aGxpa2Uoc2VsZik6CisgICAgICAgICMgX19mc3BhdGhfXyByZXR1cm5zIGEgdmFsdWUgb3RoZXIgdGhhbiBzdHIgb3IgYnl0ZXMuCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mc3BhdGgsIF9QYXRoTGlrZSg0MikpCisgICAgICAgICMgX19mc3BhdGhfXyBhdHRyaWJ1dGUgdGhhdCBpcyBub3QgY2FsbGFibGUuCisgICAgICAgIGMgPSB0eXBlKCdmb28nLCAoKSwge30pCisgICAgICAgIGMuX19mc3BhdGhfXyA9IDEKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZzcGF0aCwgYygpKQorICAgICAgICAjIF9fZnNwYXRoX18gcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoWmVyb0RpdmlzaW9uRXJyb3IsIHNlbGYuZnNwYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICBfUGF0aExpa2UoWmVyb0RpdmlzaW9uRXJyb3IoKSkpCisKKyMgT25seSB0ZXN0IGlmIHRoZSBDIHZlcnNpb24gaXMgcHJvdmlkZWQsIG90aGVyd2lzZSBUZXN0UEVQNTE5IGFscmVhZHkgdGVzdGVkCisjIHRoZSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbi4KK2lmIGhhc2F0dHIob3MsICJfZnNwYXRoIik6CisgICAgY2xhc3MgVGVzdFBFUDUxOVB1cmVQeXRob24oVGVzdFBFUDUxOSk6CisKKyAgICAgICAgIiIiRXhwbGljaXRseSB0ZXN0IHRoZSBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBvcy5mc3BhdGgoKS4iIiIKKworICAgICAgICBmc3BhdGggPSBzdGF0aWNtZXRob2Qob3MuX2ZzcGF0aCkKKwogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wYXJzZXIucHkgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQppbmRleCBhYjY1NzdmLi5kNmU2ZjcxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BhcnNlci5weQpAQCAtMSw2ICsxLDUgQEAKIGltcG9ydCBwYXJzZXIKIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IG9wZXJhdG9yCiBpbXBvcnQgc3RydWN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKQEAgLTEzOSw2ICsxMzgsNDUgQEAKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSA9IGIiKQogICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJhID0gYiA9IGMgPSBkID0gZSIpCiAKKyAgICBkZWYgdGVzdF92YXJfYW5ub3Qoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfc3VpdGUoIng6IGludCA9IDUiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ5OiBMaXN0W1RdID0gW107IHo6IFtsaXN0XSA9IGZ1bigpIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieDogdHVwbGUgPSAoMSwgMikiKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJkW2YoKV06IGludCA9IDQyIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZihkW3hdKTogc3RyID0gJ2FiYyciKQorICAgICAgICBzZWxmLmNoZWNrX3N1aXRlKCJ4Lnkuei53OiBjb21wbGV4ID0gNDJqIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgieDogaW50IikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiZGVmIGYoKTpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IHN0clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeTogaW50ID0gNVxuIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiY2xhc3MgQzpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIHg6IHN0clxuIgorICAgICAgICAgICAgICAgICAgICAgICAgICIgICAgeTogaW50ID0gNVxuIikKKyAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiY2xhc3MgQzpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAiICAgIGRlZiBfX2luaXRfXyhzZWxmLCB4OiBpbnQpIC0+IE5vbmU6XG4iCisgICAgICAgICAgICAgICAgICAgICAgICAgIiAgICAgICAgc2VsZi54OiBpbnQgPSB4XG4iKQorICAgICAgICAjIGRvdWJsZSBjaGVjayBmb3Igbm9uc2Vuc2UKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCIyKzI6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJbXTogaW50ID0gNSIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ4LCAqeSwgejogaW50ID0gcmFuZ2UoNSkiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygidDogdHVwbGUgPSAxLCAyIiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoInUgPSB2OiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygiRmFsc2U6IGludCIsIHt9LCB7fSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeW50YXhFcnJvcik6CisgICAgICAgICAgICBleGVjKCJ4LkZhbHNlOiBpbnQiLCB7fSwge30pCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IpOgorICAgICAgICAgICAgZXhlYygieC55LDogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoIlswXTogaW50Iiwge30sIHt9KQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5bnRheEVycm9yKToKKyAgICAgICAgICAgIGV4ZWMoImYoKTogaW50Iiwge30sIHt9KQorCiAgICAgZGVmIHRlc3Rfc2ltcGxlX2F1Z21lbnRlZF9hc3NpZ25tZW50cyhzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSArPSBiIikKICAgICAgICAgc2VsZi5jaGVja19zdWl0ZSgiYSAtPSBiIikKQEAgLTYzMywxMiArNjcxLDE4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJzxzeW50YXgtdHJlZT4nKQogICAgICAgICBjb2RlID0gc3QuY29tcGlsZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJzxzeW50YXgtdHJlZT4nKQotICAgICAgICBmb3IgZmlsZW5hbWUgaW4gKCdmaWxlLnB5JywgYidmaWxlLnB5JywKLSAgICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidmaWxlLnB5JyksIG1lbW9yeXZpZXcoYidmaWxlLnB5JykpOgorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gJ2ZpbGUucHknLCBiJ2ZpbGUucHknOgogICAgICAgICAgICAgY29kZSA9IHBhcnNlci5jb21waWxlc3Qoc3QsIGZpbGVuYW1lKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCiAgICAgICAgICAgICBjb2RlID0gc3QuY29tcGlsZShmaWxlbmFtZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQorICAgICAgICBmb3IgZmlsZW5hbWUgaW4gYnl0ZWFycmF5KGInZmlsZS5weScpLCBtZW1vcnl2aWV3KGInZmlsZS5weScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgY29kZSA9IHBhcnNlci5jb21waWxlc3Qoc3QsIGZpbGVuYW1lKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb2RlLmNvX2ZpbGVuYW1lLCAnZmlsZS5weScpCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICBjb2RlID0gc3QuY29tcGlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29kZS5jb19maWxlbmFtZSwgJ2ZpbGUucHknKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHBhcnNlci5jb21waWxlc3QsIHN0LCBsaXN0KGInZmlsZS5weScpKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHN0LmNvbXBpbGUsIGxpc3QoYidmaWxlLnB5JykpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGF0aGxpYi5weQppbmRleCBmYTk2ZDlmLi4yZjJiYTNjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BhdGhsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wYXRobGliLnB5CkBAIC0xOTAsMTMgKzE5MCwxOCBAQAogICAgICAgICBQID0gc2VsZi5jbHMKICAgICAgICAgcCA9IFAoJ2EnKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UocCwgUCkKKyAgICAgICAgY2xhc3MgUGF0aExpa2U6CisgICAgICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgICAgICByZXR1cm4gImEvYi9jIgogICAgICAgICBQKCdhJywgJ2InLCAnYycpCiAgICAgICAgIFAoJy9hJywgJ2InLCAnYycpCiAgICAgICAgIFAoJ2EvYi9jJykKICAgICAgICAgUCgnL2EvYi9jJykKKyAgICAgICAgUChQYXRoTGlrZSgpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpKSwgUCgnYScpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFAoUCgnYScpLCAnYicpLCBQKCdhL2InKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQKFAoJ2EnKSwgUCgnYicpKSwgUCgnYS9iJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUChQKCdhJyksIFAoJ2InKSwgUCgnYycpKSwgUChQYXRoTGlrZSgpKSkKIAogICAgIGRlZiBfY2hlY2tfc3RyX3N1YmNsYXNzKHNlbGYsICphcmdzKToKICAgICAgICAgIyBJc3N1ZSAjMjExMjc6IGl0IHNob3VsZCBiZSBwb3NzaWJsZSB0byBjb25zdHJ1Y3QgYSBQdXJlUGF0aCBvYmplY3QKQEAgLTM4NCw2ICszODksMTIgQEAKICAgICAgICAgcGFydHMgPSBwLnBhcnRzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFydHMsIChzZXAsICdhJywgJ2InKSkKIAorICAgIGRlZiB0ZXN0X2ZzcGF0aF9jb21tb24oc2VsZik6CisgICAgICAgIFAgPSBzZWxmLmNscworICAgICAgICBwID0gUCgnYS9iJykKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyKHAuX19mc3BhdGhfXygpLCAoJ2EvYicsKSkKKyAgICAgICAgc2VsZi5fY2hlY2tfc3RyKG9zLmZzcGF0aChwKSwgKCdhL2InLCkpCisKICAgICBkZWYgdGVzdF9lcXVpdmFsZW5jZXMoc2VsZik6CiAgICAgICAgIGZvciBrLCB0dXBsZXMgaW4gc2VsZi5lcXVpdmFsZW5jZXMuaXRlbXMoKToKICAgICAgICAgICAgIGNhbm9uID0gay5yZXBsYWNlKCcvJywgc2VsZi5zZXApCkBAIC0xNDc0LDEzICsxNDg1LDEzIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KHAuZ2xvYigiZGlyQS8uLi9maWxlKiIpKSwgeyBQKEJBU0UsICJkaXJBLy4uL2ZpbGVBIikgfSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQocC5nbG9iKCIuLi94eXp6eSIpKSwgc2V0KCkpCiAKLSAgICBkZWYgX2NoZWNrX3Jlc29sdmVfcmVsYXRpdmUoc2VsZiwgcCwgZXhwZWN0ZWQpOgorCisgICAgZGVmIF9jaGVja19yZXNvbHZlKHNlbGYsIHAsIGV4cGVjdGVkKToKICAgICAgICAgcSA9IHAucmVzb2x2ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocSwgZXhwZWN0ZWQpCiAKLSAgICBkZWYgX2NoZWNrX3Jlc29sdmVfYWJzb2x1dGUoc2VsZiwgcCwgZXhwZWN0ZWQpOgotICAgICAgICBxID0gcC5yZXNvbHZlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChxLCBleHBlY3RlZCkKKyAgICAjIHRoaXMgY2FuIGJlIHVzZWQgdG8gY2hlY2sgYm90aCByZWxhdGl2ZSBhbmQgYWJzb2x1dGUgcmVzb2x1dGlvbnMKKyAgICBfY2hlY2tfcmVzb2x2ZV9yZWxhdGl2ZSA9IF9jaGVja19yZXNvbHZlX2Fic29sdXRlID0gX2NoZWNrX3Jlc29sdmUKIAogICAgIEB3aXRoX3N5bWxpbmtzCiAgICAgZGVmIHRlc3RfcmVzb2x2ZV9jb21tb24oc2VsZik6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BkYi5weSBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CmluZGV4IDY2YTdiNTUuLjBlYTJhZjUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGRiLnB5CkBAIC0xLDYgKzEsNyBAQAogIyBBIHRlc3Qgc3VpdGUgZm9yIHBkYjsgbm90IHZlcnkgY29tcHJlaGVuc2l2ZSBhdCB0aGUgbW9tZW50LgogCiBpbXBvcnQgZG9jdGVzdAoraW1wb3J0IG9zCiBpbXBvcnQgcGRiCiBpbXBvcnQgc3lzCiBpbXBvcnQgdHlwZXMKQEAgLTM0LDcgKzM1LDcgQEAKICAgICAiIiJUaGlzIHRlc3RzIHRoZSBjdXN0b20gZGlzcGxheWhvb2sgZm9yIHBkYi4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbihmb28sIGJhcik6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHBhc3MKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC03NCw3ICs3NSw3IEBACiAgICAgLi4uICAgICByZXR1cm4gZm9vLnVwcGVyKCkKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgLi4uICAgICBwcmludChyZXQpCiAKQEAgLTE3Myw3ICsxNzQsNyBAQAogICAgICIiIlRlc3QgYmFzaWMgY29tbWFuZHMgcmVsYXRlZCB0byBicmVha3BvaW50cy4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBwcmludCgxKQogICAgIC4uLiAgICAgcHJpbnQoMikKICAgICAuLi4gICAgIHByaW50KDMpCkBAIC0zMDUsNyArMzA2LDcgQEAKICAgICAuLi4gICAgIHJldHVybiBmb28KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAKICAgICA+Pj4gd2l0aCBQZGJUZXN0SW5wdXQoWyAgIyBkb2N0ZXN0OiArRUxMSVBTSVMsICtOT1JNQUxJWkVfV0hJVEVTUEFDRQpAQCAtMzI4LDcgKzMyOSw3IEBACiAgICAgLT4gcmV0ID0gdGVzdF9mdW5jdGlvbl8yKCdiYXonKQogICAgIChQZGIpIGxpc3QKICAgICAgIDEgICAgICAgICBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgICAyICAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgICAgMyAgLT4gICAgICAgICByZXQgPSB0ZXN0X2Z1bmN0aW9uXzIoJ2JheicpCiAgICAgW0VPRl0KICAgICAoUGRiKSBzdGVwCkBAIC0zOTEsNyArMzkyLDcgQEAKICAgICAuLi4gICAgICAgICBwcmludCgnRXhjZXB0aW9uIScpCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAuLi4gICAgIHByaW50KCdOb3QgcmVhY2hlZC4nKQogCkBAIC00MjQsNyArNDI1LDcgQEAKICAgICAtPiAxLzAKICAgICAoUGRiKSBsaXN0CiAgICAgICAxICAgICAgICAgZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAgIDIgICAgICAgICAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgICAgMiAgICAgICAgICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgIDMgIC0+ICAgICAgICAgdGVzdF9mdW5jdGlvbl8yKCkKICAgICAgIDQgICAgICAgICAgICAgcHJpbnQoJ05vdCByZWFjaGVkLicpCiAgICAgW0VPRl0KQEAgLTQ0OCw3ICs0NDksNyBAQAogCiAgICAgPj4+IGRlZiBza2lwX21vZHVsZSgpOgogICAgIC4uLiAgICAgaW1wb3J0IHN0cmluZwotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnc3RyaSonXSwgbm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIoc2tpcD1bJ3N0cmkqJ10sIG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHN0cmluZy5jYXB3b3JkcygnRk9PJykKIAogICAgID4+PiB3aXRoIFBkYlRlc3RJbnB1dChbCkBAIC00NzcsNyArNDc4LDcgQEAKICAgICA+Pj4gZGVmIHNraXBfbW9kdWxlKCk6CiAgICAgLi4uICAgICBkZWYgY2FsbGJhY2soKToKICAgICAuLi4gICAgICAgICByZXR1cm4gTm9uZQotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihza2lwPVsnbW9kdWxlX3RvX3NraXAqJ10sIG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKHNraXA9Wydtb2R1bGVfdG9fc2tpcConXSwgbm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgbW9kLmZvb19wb255KGNhbGxiYWNrKQogCiAgICAgPj4+IHdpdGggUGRiVGVzdElucHV0KFsKQEAgLTUxOCw3ICs1MTksNyBAQAogICAgICIiIlRlc3QgdGhhdCAiY29udGludWUiIGFuZCAibmV4dCIgd29yayBwcm9wZXJseSBpbiBib3R0b20gZnJhbWUgKGlzc3VlICM1Mjk0KS4KIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYiwgc3lzOyBpbnN0ID0gcGRiLlBkYihub3NpZ2ludD1UcnVlKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYiwgc3lzOyBpbnN0ID0gcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpCiAgICAgLi4uICAgICBpbnN0LnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpbnN0LmJvdGZyYW1lID0gc3lzLl9nZXRmcmFtZSgpICAjIGhhY2tlcnkgdG8gZ2V0IHRoZSByaWdodCBib3RmcmFtZQogICAgIC4uLiAgICAgcHJpbnQoMSkKQEAgLTU1OCw4ICs1NTksNyBAQAogCiBkZWYgcGRiX2ludm9rZShtZXRob2QsIGFyZyk6CiAgICAgIiIiUnVuIHBkYi5tZXRob2QoYXJnKS4iIiIKLSAgICBpbXBvcnQgcGRiCi0gICAgZ2V0YXR0cihwZGIuUGRiKG5vc2lnaW50PVRydWUpLCBtZXRob2QpKGFyZykKKyAgICBnZXRhdHRyKHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKSwgbWV0aG9kKShhcmcpCiAKIAogZGVmIHRlc3RfcGRiX3J1bl93aXRoX2luY29ycmVjdF9hcmd1bWVudCgpOgpAQCAtNjA4LDcgKzYwOCw3IEBACiAgICAgLi4uICAgICB4ID0gMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIHRlc3RfZnVuY3Rpb25fMigpCiAgICAgLi4uICAgICB0ZXN0X2Z1bmN0aW9uXzIoKQogICAgIC4uLiAgICAgdGVzdF9mdW5jdGlvbl8yKCkKQEAgLTY3NCw3ICs2NzQsNyBAQAogICAgIC4uLiAgICAgeWllbGQgMgogCiAgICAgPj4+IGRlZiB0ZXN0X2Z1bmN0aW9uKCk6Ci0gICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUpLnNldF90cmFjZSgpCisgICAgLi4uICAgICBpbXBvcnQgcGRiOyBwZGIuUGRiKG5vc2lnaW50PVRydWUsIHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAuLi4gICAgIGl0ID0gdGVzdF9nZW4oKQogICAgIC4uLiAgICAgdHJ5OgogICAgIC4uLiAgICAgICAgIGlmIG5leHQoaXQpICE9IDA6CkBAIC03MzQsNyArNzM0LDcgQEAKICAgICAuLi4gICAgIHlpZWxkIDIKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBpdCA9IHRlc3RfZ2VuKCkKICAgICAuLi4gICAgIHRyeToKICAgICAuLi4gICAgICAgICBpZiBuZXh0KGl0KSAhPSAwOgpAQCAtNzg5LDcgKzc4OSw3IEBACiAgICAgLi4uICAgICB5aWVsZCAyCiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludChpKQogICAgIC4uLiAgICAgcHJpbnQoImZpbmlzaGVkIikKQEAgLTgzMSw3ICs4MzEsNyBAQAogICAgIC4uLiAgICAgcmV0dXJuIDEKIAogICAgID4+PiBkZWYgdGVzdF9mdW5jdGlvbigpOgotICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlKS5zZXRfdHJhY2UoKQorICAgIC4uLiAgICAgaW1wb3J0IHBkYjsgcGRiLlBkYihub3NpZ2ludD1UcnVlLCByZWFkcmM9RmFsc2UpLnNldF90cmFjZSgpCiAgICAgLi4uICAgICBmb3IgaSBpbiB0ZXN0X2dlbigpOgogICAgIC4uLiAgICAgICAgIHByaW50KCd2YWx1ZScsIGkpCiAgICAgLi4uICAgICB4ID0gMTIzCkBAIC04NzYsNyArODc2LDcgQEAKICAgICAuLi4gICAgIHJldHVybiB4CiAKICAgICA+Pj4gZGVmIHRlc3RfZnVuY3Rpb24oKToKLSAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSkuc2V0X3RyYWNlKCkKKyAgICAuLi4gICAgIGltcG9ydCBwZGI7IHBkYi5QZGIobm9zaWdpbnQ9VHJ1ZSwgcmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQogICAgIC4uLiAgICAgZm9yIGkgaW4gdGVzdF9nZW4oKToKICAgICAuLi4gICAgICAgICBwcmludCgndmFsdWUnLCBpKQogICAgIC4uLiAgICAgeCA9IDEyMwpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKICAgICAgICAgICAgICAgICBpbXBvcnQgcGRiCiAKICAgICAgICAgICAgICAgICBkZWYgc3RhcnRfcGRiKCk6Ci0gICAgICAgICAgICAgICAgICAgIHBkYi5QZGIoKS5zZXRfdHJhY2UoKQorICAgICAgICAgICAgICAgICAgICBwZGIuUGRiKHJlYWRyYz1GYWxzZSkuc2V0X3RyYWNlKCkKICAgICAgICAgICAgICAgICAgICAgeCA9IDEKICAgICAgICAgICAgICAgICAgICAgeSA9IDEKIApAQCAtMTA3OCw2ICsxMDc4LDM4IEBACiAgICAgICAgICAgICAuZm9ybWF0KGV4cGVjdGVkLCBzdGRvdXQpKQogCiAKKyAgICBkZWYgdGVzdF9yZWFkcmNfa3dhcmcoc2VsZik6CisgICAgICAgIHNjcmlwdCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCBwZGI7IHBkYi5QZGIocmVhZHJjPUZhbHNlKS5zZXRfdHJhY2UoKQorCisgICAgICAgICAgICBwcmludCgnaGVsbG8nKQorICAgICAgICAiIiIpCisKKyAgICAgICAgc2F2ZV9ob21lID0gb3MuZW52aXJvbi5wb3AoJ0hPTUUnLCBOb25lKQorICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHN1cHBvcnQudGVtcF9jd2QoKToKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4oJy5wZGJyYycsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSgiaW52YWxpZFxuIikKKworICAgICAgICAgICAgICAgIHdpdGggb3BlbignbWFpbi5weScsICd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZShzY3JpcHQpCisKKyAgICAgICAgICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICdtYWluLnB5J10KKyAgICAgICAgICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbigKKyAgICAgICAgICAgICAgICAgICAgY21kLAorICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHdpdGggcHJvYzoKKyAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jLmNvbW11bmljYXRlKGIncVxuJykKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbigiTmFtZUVycm9yOiBuYW1lICdpbnZhbGlkJyBpcyBub3QgZGVmaW5lZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0LmRlY29kZSgpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBpZiBzYXZlX2hvbWUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgb3MuZW52aXJvblsnSE9NRSddID0gc2F2ZV9ob21lCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKHN1cHBvcnQuVEVTVEZOKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BlZXBob2xlci5weSBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CmluZGV4IDQxZTUwOTEuLmIwMzM2NDAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGVlcGhvbGVyLnB5CkBAIC0xLDkgKzEsOCBAQAogaW1wb3J0IGRpcwogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCi1mcm9tIGlvIGltcG9ydCBTdHJpbmdJTworaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gbWF0aCBpbXBvcnQgY29weXNpZ24KIAogZnJvbSB0ZXN0LmJ5dGVjb2RlX2hlbHBlciBpbXBvcnQgQnl0ZWNvZGVUZXN0Q2FzZQogCkBAIC0zMCwyMiArMjksMjUgQEAKIAogICAgIGRlZiB0ZXN0X2dsb2JhbF9hc19jb25zdGFudChzZWxmKToKICAgICAgICAgIyBMT0FEX0dMT0JBTCBOb25lL1RydWUvRmFsc2UgIC0tPiAgTE9BRF9DT05TVCBOb25lL1RydWUvRmFsc2UKLSAgICAgICAgZGVmIGYoeCk6Ci0gICAgICAgICAgICBOb25lCi0gICAgICAgICAgICBOb25lCisgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICB4ID0gTm9uZQorICAgICAgICAgICAgeCA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBnKHgpOgotICAgICAgICAgICAgVHJ1ZQorICAgICAgICBkZWYgZygpOgorICAgICAgICAgICAgeCA9IFRydWUKICAgICAgICAgICAgIHJldHVybiB4Ci0gICAgICAgIGRlZiBoKHgpOgotICAgICAgICAgICAgRmFsc2UKKyAgICAgICAgZGVmIGgoKToKKyAgICAgICAgICAgIHggPSBGYWxzZQogICAgICAgICAgICAgcmV0dXJuIHgKKwogICAgICAgICBmb3IgZnVuYywgZWxlbSBpbiAoKGYsIE5vbmUpLCAoZywgVHJ1ZSksIChoLCBGYWxzZSkpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGZ1bmMsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluQnl0ZWNvZGUoZnVuYywgJ0xPQURfQ09OU1QnLCBlbGVtKQorCiAgICAgICAgIGRlZiBmKCk6CiAgICAgICAgICAgICAnQWRkaW5nIGEgZG9jc3RyaW5nIG1hZGUgdGhpcyB0ZXN0IGZhaWwgaW4gUHkyLjUuMCcKICAgICAgICAgICAgIHJldHVybiBOb25lCisKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbkJ5dGVjb2RlKGYsICdMT0FEX0dMT0JBTCcpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW5CeXRlY29kZShmLCAnTE9BRF9DT05TVCcsIE5vbmUpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMjQ3LnB5IGIvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxN2NlZWQuLjAwMDAwMDAKLS0tIGEvTGliL3Rlc3QvdGVzdF9wZXAyNDcucHkKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi0iIiIKLVRlc3Qgc3VpdGUgdG8gY2hlY2sgY29tcGxpYW5jZSB3aXRoIFBFUCAyNDcsIHRoZSBzdGFuZGFyZCBBUEkKLWZvciBoYXNoaW5nIGFsZ29yaXRobXMKLSIiIgotCi1pbXBvcnQgaG1hYwotaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIGhhc2hsaWIgaW1wb3J0IG1kNSwgc2hhMSwgc2hhMjI0LCBzaGEyNTYsIHNoYTM4NCwgc2hhNTEyCi0KLWNsYXNzIFBlcDI0N1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotCi0gICAgZGVmIGNoZWNrX21vZHVsZShzZWxmLCBtb2R1bGUsIGtleT1Ob25lKToKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGhhc2F0dHIobW9kdWxlLCAnZGlnZXN0X3NpemUnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1vZHVsZS5kaWdlc3Rfc2l6ZSBpcyBOb25lIG9yIG1vZHVsZS5kaWdlc3Rfc2l6ZSA+IDApCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KG1vZHVsZS5uZXcsIG1vZHVsZS5kaWdlc3Rfc2l6ZSwga2V5KQotCi0gICAgZGVmIGNoZWNrX29iamVjdChzZWxmLCBjbHMsIGRpZ2VzdF9zaXplLCBrZXksIGRpZ2VzdG1vZD1Ob25lKToKLSAgICAgICAgaWYga2V5IGlzIG5vdCBOb25lOgotICAgICAgICAgICAgaWYgZGlnZXN0bW9kIGlzIE5vbmU6Ci0gICAgICAgICAgICAgICAgZGlnZXN0bW9kID0gbWQ1Ci0gICAgICAgICAgICBvYmoxID0gY2xzKGtleSwgZGlnZXN0bW9kPWRpZ2VzdG1vZCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoa2V5LCBiJ3N0cmluZycsIGRpZ2VzdG1vZD1kaWdlc3Rtb2QpCi0gICAgICAgICAgICBoMSA9IGNscyhrZXksIGInc3RyaW5nJywgZGlnZXN0bW9kPWRpZ2VzdG1vZCkuZGlnZXN0KCkKLSAgICAgICAgICAgIG9iajMgPSBjbHMoa2V5LCBkaWdlc3Rtb2Q9ZGlnZXN0bW9kKQotICAgICAgICAgICAgb2JqMy51cGRhdGUoYidzdHJpbmcnKQotICAgICAgICAgICAgaDIgPSBvYmozLmRpZ2VzdCgpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBvYmoxID0gY2xzKCkKLSAgICAgICAgICAgIG9iajIgPSBjbHMoYidzdHJpbmcnKQotICAgICAgICAgICAgaDEgPSBjbHMoYidzdHJpbmcnKS5kaWdlc3QoKQotICAgICAgICAgICAgb2JqMyA9IGNscygpCi0gICAgICAgICAgICBvYmozLnVwZGF0ZShiJ3N0cmluZycpCi0gICAgICAgICAgICBoMiA9IG9iajMuZGlnZXN0KCkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoMSwgaDIpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKG9iajEsICdkaWdlc3Rfc2l6ZScpKQotCi0gICAgICAgIGlmIGRpZ2VzdF9zaXplIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvYmoxLmRpZ2VzdF9zaXplLCBkaWdlc3Rfc2l6ZSkKLQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0X3NpemUsIGxlbihoMSkpCi0gICAgICAgIG9iajEudXBkYXRlKGInc3RyaW5nJykKLSAgICAgICAgb2JqX2NvcHkgPSBvYmoxLmNvcHkoKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuZGlnZXN0KCksIG9ial9jb3B5LmRpZ2VzdCgpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9iajEuaGV4ZGlnZXN0KCksIG9ial9jb3B5LmhleGRpZ2VzdCgpKQotCi0gICAgICAgIGRpZ2VzdCwgaGV4ZGlnZXN0ID0gb2JqMS5kaWdlc3QoKSwgb2JqMS5oZXhkaWdlc3QoKQotICAgICAgICBoZDIgPSAiIgotICAgICAgICBmb3IgYnl0ZSBpbiBkaWdlc3Q6Ci0gICAgICAgICAgICBoZDIgKz0gJyUwMngnICUgYnl0ZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhkMiwgaGV4ZGlnZXN0KQotCi0gICAgZGVmIHRlc3RfbWQ1KHNlbGYpOgotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChtZDUsIE5vbmUsIE5vbmUpCi0KLSAgICBkZWYgdGVzdF9zaGEoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTEsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTIyNCwgTm9uZSwgTm9uZSkKLSAgICAgICAgc2VsZi5jaGVja19vYmplY3Qoc2hhMjU2LCBOb25lLCBOb25lKQotICAgICAgICBzZWxmLmNoZWNrX29iamVjdChzaGEzODQsIE5vbmUsIE5vbmUpCi0gICAgICAgIHNlbGYuY2hlY2tfb2JqZWN0KHNoYTUxMiwgTm9uZSwgTm9uZSkKLQotICAgIGRlZiB0ZXN0X2htYWMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tfbW9kdWxlKGhtYWMsIGtleT1iJ2FiYycpCi0KLWlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6Ci0gICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BpY2tsZS5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CmluZGV4IGQ0NjdkNTIuLmU2YzVkMDggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGlja2xlLnB5CkBAIC0zNCw4ICszNCw2IEBACiAKICAgICB1bnBpY2tsZXIgPSBwaWNrbGUuX1VucGlja2xlcgogICAgIGJhZF9zdGFja19lcnJvcnMgPSAoSW5kZXhFcnJvciwpCi0gICAgYmFkX21hcmtfZXJyb3JzID0gKEluZGV4RXJyb3IsIHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgIFR5cGVFcnJvciwgQXR0cmlidXRlRXJyb3IsIEVPRkVycm9yKQogICAgIHRydW5jYXRlZF9lcnJvcnMgPSAocGlja2xlLlVucGlja2xpbmdFcnJvciwgRU9GRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBBdHRyaWJ1dGVFcnJvciwgVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5lcnJvciwgSW5kZXhFcnJvciwgSW1wb3J0RXJyb3IpCkBAIC03MCw4ICs2OCw2IEBACiAgICAgcGlja2xlciA9IHBpY2tsZS5fUGlja2xlcgogICAgIHVucGlja2xlciA9IHBpY2tsZS5fVW5waWNrbGVyCiAgICAgYmFkX3N0YWNrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yKQotICAgIGJhZF9tYXJrX2Vycm9ycyA9IChwaWNrbGUuVW5waWNrbGluZ0Vycm9yLCBJbmRleEVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICBUeXBlRXJyb3IsIEF0dHJpYnV0ZUVycm9yLCBFT0ZFcnJvcikKICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgQXR0cmlidXRlRXJyb3IsIFZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QuZXJyb3IsIEluZGV4RXJyb3IsIEltcG9ydEVycm9yKQpAQCAtMTQzLDkgKzEzOSw3IEBACiAgICAgY2xhc3MgQ1VucGlja2xlclRlc3RzKFB5VW5waWNrbGVyVGVzdHMpOgogICAgICAgICB1bnBpY2tsZXIgPSBfcGlja2xlLlVucGlja2xlcgogICAgICAgICBiYWRfc3RhY2tfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQotICAgICAgICBiYWRfbWFya19lcnJvcnMgPSAoRU9GRXJyb3IsKQotICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsIEVPRkVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEF0dHJpYnV0ZUVycm9yLCBWYWx1ZUVycm9yKQorICAgICAgICB0cnVuY2F0ZWRfZXJyb3JzID0gKHBpY2tsZS5VbnBpY2tsaW5nRXJyb3IsKQogCiAgICAgY2xhc3MgQ1BpY2tsZXJUZXN0cyhQeVBpY2tsZXJUZXN0cyk6CiAgICAgICAgIHBpY2tsZXIgPSBfcGlja2xlLlBpY2tsZXIKQEAgLTM0MSw2ICszMzUsOSBAQAogICAgICAgICAgICAgICAgIGlmIChtb2R1bGUyLCBuYW1lMikgPT0gKCdleGNlcHRpb25zJywgJ09TRXJyb3InKToKICAgICAgICAgICAgICAgICAgICAgYXR0ciA9IGdldGF0dHJpYnV0ZShtb2R1bGUzLCBuYW1lMykKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlzc3ViY2xhc3MoYXR0ciwgT1NFcnJvcikpCisgICAgICAgICAgICAgICAgZWxpZiAobW9kdWxlMiwgbmFtZTIpID09ICgnZXhjZXB0aW9ucycsICdJbXBvcnRFcnJvcicpOgorICAgICAgICAgICAgICAgICAgICBhdHRyID0gZ2V0YXR0cmlidXRlKG1vZHVsZTMsIG5hbWUzKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNzdWJjbGFzcyhhdHRyLCBJbXBvcnRFcnJvcikpCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCBuYW1lID0gbWFwcGluZyhtb2R1bGUyLCBuYW1lMikKICAgICAgICAgICAgICAgICAgICAgaWYgbW9kdWxlM1s6MV0gIT0gJ18nOgpAQCAtNDA3LDYgKzQwNCwxMSBAQAogICAgICAgICAgICAgICAgIGlmIGV4YyBpcyBub3QgT1NFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIE9TRXJyb3IpOgogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldmVyc2VfbWFwcGluZygnYnVpbHRpbnMnLCBuYW1lKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2V4Y2VwdGlvbnMnLCAnT1NFcnJvcicpKQorICAgICAgICAgICAgICAgIGVsaWYgZXhjIGlzIG5vdCBJbXBvcnRFcnJvciBhbmQgaXNzdWJjbGFzcyhleGMsIEltcG9ydEVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXZlcnNlX21hcHBpbmcoJ2J1aWx0aW5zJywgbmFtZSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdleGNlcHRpb25zJywgJ0ltcG9ydEVycm9yJykpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobWFwcGluZygnZXhjZXB0aW9ucycsIG5hbWUpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmV2ZXJzZV9tYXBwaW5nKCdidWlsdGlucycsIG5hbWUpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgnZXhjZXB0aW9ucycsIG5hbWUpKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlja2xldG9vbHMucHkKaW5kZXggYmJlNjg3NS4uODZiZWJmYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waWNrbGV0b29scy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpY2tsZXRvb2xzLnB5CkBAIC0xLDkgKzEsOSBAQAotaW1wb3J0IHN0cnVjdAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHBpY2tsZXRvb2xzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlVGVzdHMKIGZyb20gdGVzdC5waWNrbGV0ZXN0ZXIgaW1wb3J0IEFic3RyYWN0UGlja2xlTW9kdWxlVGVzdHMKK2ltcG9ydCB1bml0dGVzdAogCiBjbGFzcyBPcHRpbWl6ZWRQaWNrbGVUZXN0cyhBYnN0cmFjdFBpY2tsZVRlc3RzLCBBYnN0cmFjdFBpY2tsZU1vZHVsZVRlc3RzKToKIApAQCAtNTksOCArNTksNDAgQEAKICAgICAgICAgc2VsZi5hc3NlcnROb3RJbihwaWNrbGUuQklOUFVULCBwaWNrbGVkMikKIAogCitjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKKyAgICAgICAgYmxhY2tsaXN0ID0geydieXRlc190eXBlcycsCisgICAgICAgICAgICAgICAgICAgICAnVVBfVE9fTkVXTElORScsICdUQUtFTl9GUk9NX0FSR1VNRU5UMScsCisgICAgICAgICAgICAgICAgICAgICAnVEFLRU5fRlJPTV9BUkdVTUVOVDQnLCAnVEFLRU5fRlJPTV9BUkdVTUVOVDRVJywKKyAgICAgICAgICAgICAgICAgICAgICdUQUtFTl9GUk9NX0FSR1VNRU5UOFUnLCAnQXJndW1lbnREZXNjcmlwdG9yJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VpbnQxJywgJ3JlYWRfdWludDInLCAncmVhZF9pbnQ0JywgJ3JlYWRfdWludDQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdWludDgnLCAncmVhZF9zdHJpbmdubCcsICdyZWFkX3N0cmluZ25sX25vZXNjYXBlJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAncmVhZF9zdHJpbmcxJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3N0cmluZzQnLCAncmVhZF9ieXRlczEnLCAncmVhZF9ieXRlczQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfYnl0ZXM4JywgJ3JlYWRfdW5pY29kZXN0cmluZ25sJywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX3VuaWNvZGVzdHJpbmcxJywgJ3JlYWRfdW5pY29kZXN0cmluZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfdW5pY29kZXN0cmluZzgnLCAncmVhZF9kZWNpbWFsbmxfc2hvcnQnLAorICAgICAgICAgICAgICAgICAgICAgJ3JlYWRfZGVjaW1hbG5sX2xvbmcnLCAncmVhZF9mbG9hdG5sJywgJ3JlYWRfZmxvYXQ4JywKKyAgICAgICAgICAgICAgICAgICAgICdyZWFkX2xvbmcxJywgJ3JlYWRfbG9uZzQnLAorICAgICAgICAgICAgICAgICAgICAgJ3VpbnQxJywgJ3VpbnQyJywgJ2ludDQnLCAndWludDQnLCAndWludDgnLCAnc3RyaW5nbmwnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0cmluZ25sX25vZXNjYXBlJywgJ3N0cmluZ25sX25vZXNjYXBlX3BhaXInLCAnc3RyaW5nMScsCisgICAgICAgICAgICAgICAgICAgICAnc3RyaW5nNCcsICdieXRlczEnLCAnYnl0ZXM0JywgJ2J5dGVzOCcsCisgICAgICAgICAgICAgICAgICAgICAndW5pY29kZXN0cmluZ25sJywgJ3VuaWNvZGVzdHJpbmcxJywgJ3VuaWNvZGVzdHJpbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICd1bmljb2Rlc3RyaW5nOCcsICdkZWNpbWFsbmxfc2hvcnQnLCAnZGVjaW1hbG5sX2xvbmcnLAorICAgICAgICAgICAgICAgICAgICAgJ2Zsb2F0bmwnLCAnZmxvYXQ4JywgJ2xvbmcxJywgJ2xvbmc0JywKKyAgICAgICAgICAgICAgICAgICAgICdTdGFja09iamVjdCcsCisgICAgICAgICAgICAgICAgICAgICAncHlpbnQnLCAncHlsb25nJywgJ3B5aW50ZWdlcl9vcl9ib29sJywgJ3B5Ym9vbCcsICdweWZsb2F0JywKKyAgICAgICAgICAgICAgICAgICAgICdweWJ5dGVzX29yX3N0cicsICdweXN0cmluZycsICdweWJ5dGVzJywgJ3B5dW5pY29kZScsCisgICAgICAgICAgICAgICAgICAgICAncHlub25lJywgJ3B5dHVwbGUnLCAncHlsaXN0JywgJ3B5ZGljdCcsICdweXNldCcsCisgICAgICAgICAgICAgICAgICAgICAncHlmcm96ZW5zZXQnLCAnYW55b2JqZWN0JywgJ21hcmtvYmplY3QnLCAnc3RhY2tzbGljZScsCisgICAgICAgICAgICAgICAgICAgICAnT3Bjb2RlSW5mbycsICdvcGNvZGVzJywgJ2NvZGUyb3AnLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwaWNrbGV0b29scywgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6CiAgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoT3B0aW1pemVkUGlja2xlVGVzdHMpCisgICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoTWlzY1Rlc3RDYXNlKQogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QocGlja2xldG9vbHMpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weSBiL0xpYi90ZXN0L3Rlc3RfcGlwZXMucHkKaW5kZXggNmE3YjQ1Zi4uYWQwMWQwOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9waXBlcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3BpcGVzLnB5CkBAIC0yLDYgKzIsNyBAQAogaW1wb3J0IG9zCiBpbXBvcnQgc3RyaW5nCiBpbXBvcnQgdW5pdHRlc3QKK2ltcG9ydCBzaHV0aWwKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJ1bl91bml0dGVzdCwgdW5saW5rLCByZWFwX2NoaWxkcmVuCiAKIGlmIG9zLm5hbWUgIT0gJ3Bvc2l4JzoKQEAgLTE4LDYgKzE5LDggQEAKICAgICAgICAgICAgIHVubGluayhmKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMShzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKICAgICAgICAgdC5hcHBlbmQoc19jb21tYW5kLCBwaXBlcy5TVERJTl9TVERPVVQpCiAgICAgICAgIGYgPSB0Lm9wZW4oVEVTVEZOLCAndycpCkBAIC0yNyw2ICszMCw4IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCAnSEVMTE8gV09STEQgIzEnKQogCiAgICAgZGVmIHRlc3RTaW1wbGVQaXBlMihzZWxmKToKKyAgICAgICAgaWYgc2h1dGlsLndoaWNoKCd0cicpIGlzIE5vbmU6CisgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd0ciBpcyBub3QgYXZhaWxhYmxlJykKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmOgogICAgICAgICAgICAgZi53cml0ZSgnaGVsbG8gd29ybGQgIzInKQogICAgICAgICB0ID0gcGlwZXMuVGVtcGxhdGUoKQpAQCAtMzYsNiArNDEsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLnJlYWQoKSwgJ0hFTExPIFdPUkxEICMyJykKIAogICAgIGRlZiB0ZXN0U2ltcGxlUGlwZTMoc2VsZik6CisgICAgICAgIGlmIHNodXRpbC53aGljaCgndHInKSBpcyBOb25lOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndHIgaXMgbm90IGF2YWlsYWJsZScpCiAgICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZjoKICAgICAgICAgICAgIGYud3JpdGUoJ2hlbGxvIHdvcmxkICMyJykKICAgICAgICAgdCA9IHBpcGVzLlRlbXBsYXRlKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weSBiL0xpYi90ZXN0L3Rlc3RfcGtndXRpbC5weQppbmRleCBhODIwNTg3Li5mYzA0ZGNmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BrZ3V0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wa2d1dGlsLnB5CkBAIC04MSw4ICs4MSw5IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVzMiwgUkVTT1VSQ0VfREFUQSkKIAogICAgICAgICBuYW1lcyA9IFtdCi0gICAgICAgIGZvciBsb2FkZXIsIG5hbWUsIGlzcGtnIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgotICAgICAgICAgICAgbmFtZXMuYXBwZW5kKG5hbWUpCisgICAgICAgIGZvciBtb2R1bGVpbmZvIGluIHBrZ3V0aWwuaXRlcl9tb2R1bGVzKFt6aXBfZmlsZV0pOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8sIHBrZ3V0aWwuTW9kdWxlSW5mbykKKyAgICAgICAgICAgIG5hbWVzLmFwcGVuZChtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmFtZXMsIFsndGVzdF9nZXRkYXRhX3ppcGZpbGUnXSkKIAogICAgICAgICBkZWwgc3lzLnBhdGhbMF0KQEAgLTQxMyw2ICs0MTQsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocGtndXRpbC5nZXRfbG9hZGVyKCJ0ZXN0LnN1cHBvcnQiKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHcud2FybmluZ3MpLCAwKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihfX25hbWVfXyA9PSAnX19tYWluX18nLCAnbm90IGNvbXBhdGlibGUgd2l0aCBfX21haW5fXycpCiAgICAgZGVmIHRlc3RfZ2V0X2xvYWRlcl9oYW5kbGVzX21pc3NpbmdfbG9hZGVyX2F0dHJpYnV0ZShzZWxmKToKICAgICAgICAgZ2xvYmFsIF9fbG9hZGVyX18KICAgICAgICAgdGhpc19sb2FkZXIgPSBfX2xvYWRlcl9fCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGF0Zm9ybS5weQppbmRleCAxOGRlMTEwLi41Zjg3NWVmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsYXRmb3JtLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxhdGZvcm0ucHkKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAnaW1wb3J0IHBsYXRmb3JtOyBwcmludChwbGF0Zm9ybS5hcmNoaXRlY3R1cmUoKSknXQogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oY21kLCBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFKQogICAgICAgICAgICAgcmV0dXJuIHAuY29tbXVuaWNhdGUoKQorCiAgICAgICAgIHJlYWwgPSBvcy5wYXRoLnJlYWxwYXRoKHN5cy5leGVjdXRhYmxlKQogICAgICAgICBsaW5rID0gb3MucGF0aC5hYnNwYXRoKHN1cHBvcnQuVEVTVEZOKQogICAgICAgICBvcy5zeW1saW5rKHJlYWwsIGxpbmspCkBAIC0yNjIsNyArMjYzLDcgQEAKICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgd2FybmluZ3MuZmlsdGVyd2FybmluZ3MoCiAgICAgICAgICAgICAgICAgJ2lnbm9yZScsCi0gICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICByJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKICAgICAgICAgICAgICAgICAnZnVuY3Rpb25zIGFyZSBkZXByZWNhdGVkIC4qJywKICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgKQpAQCAtMzM4LDcgKzMzOSw3IEBACiAgICAgICAgICAgICAgICAgd2l0aCB3YXJuaW5ncy5jYXRjaF93YXJuaW5ncygpOgogICAgICAgICAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAgICAgICAgICdpZ25vcmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2Rpc3RcKFwpIGFuZCBsaW51eF9kaXN0cmlidXRpb25cKFwpICcKKyAgICAgICAgICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICAgICAgICAgJ2Z1bmN0aW9ucyBhcmUgZGVwcmVjYXRlZCAuKicsCiAgICAgICAgICAgICAgICAgICAgICAgICBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nLAogICAgICAgICAgICAgICAgICAgICApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF9wbGlzdGxpYi5weQppbmRleCA2OTJjYWM0Li5jNzdhNmJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3BsaXN0bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcGxpc3RsaWIucHkKQEAgLTcsNyArNyw2IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgYmluYXNjaWkKIGltcG9ydCBjb2xsZWN0aW9ucwotaW1wb3J0IHN0cnVjdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiAKQEAgLTUzNCw4ICs1MzMsMTQgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdXIsIGluX2RhdGEpCiAKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsiUGxpc3RGb3JtYXQiLCAiUExJU1RIRUFERVIifQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBwbGlzdGxpYiwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBkZWYgdGVzdF9tYWluKCk6Ci0gICAgc3VwcG9ydC5ydW5fdW5pdHRlc3QoVGVzdFBsaXN0bGliLCBUZXN0UGxpc3RsaWJEZXByZWNhdGVkKQorICAgIHN1cHBvcnQucnVuX3VuaXR0ZXN0KFRlc3RQbGlzdGxpYiwgVGVzdFBsaXN0bGliRGVwcmVjYXRlZCwgTWlzY1Rlc3RDYXNlKQogCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3BvcGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CmluZGV4IGJjZWViOTMuLmU1YjE2ZGMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcG9wbGliLnB5CkBAIC04LDcgKzgsNiBAQAogaW1wb3J0IGFzeW5jaGF0CiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgb3MKLWltcG9ydCB0aW1lCiBpbXBvcnQgZXJybm8KIAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UsIHNraXBVbmxlc3MKQEAgLTE1MywxMCArMTUyLDEyIEBACiAgICAgICAgIGRlZiBjbWRfc3RscyhzZWxmLCBhcmcpOgogICAgICAgICAgICAgaWYgc2VsZi50bHNfYWN0aXZlIGlzIEZhbHNlOgogICAgICAgICAgICAgICAgIHNlbGYucHVzaCgnK09LIEJlZ2luIFRMUyBuZWdvdGlhdGlvbicpCi0gICAgICAgICAgICAgICAgdGxzX3NvY2sgPSBzc2wud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsIGNlcnRmaWxlPUNFUlRGSUxFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KCkKKyAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKyAgICAgICAgICAgICAgICB0bHNfc29jayA9IGNvbnRleHQud3JhcF9zb2NrZXQoc2VsZi5zb2NrZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgICAgICBzZWxmLmRlbF9jaGFubmVsKCkKICAgICAgICAgICAgICAgICBzZWxmLnNldF9zb2NrZXQodGxzX3NvY2spCiAgICAgICAgICAgICAgICAgc2VsZi50bHNfYWN0aXZlID0gVHJ1ZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weSBiL0xpYi90ZXN0L3Rlc3RfcG9zaXgucHkKaW5kZXggMmE1OWMzOC4uZDJmNThiYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvc2l4LnB5CkBAIC0xMSw3ICsxMSw2IEBACiBpbXBvcnQgb3MKIGltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IHB3ZAotaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC0zOTgsNyArMzk3LDcgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwb3NpeC5zdGF0KGZwLmZpbGVubygpKSkKIAogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICdzaG91bGQgYmUgc3RyaW5nLCBieXRlcyBvciBpbnRlZ2VyLCBub3QnLAorICAgICAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGZsb2F0KGZwLmZpbGVubygpKSkKICAgICAgICAgZmluYWxseToKICAgICAgICAgICAgIGZwLmNsb3NlKCkKQEAgLTQwOCwxNiArNDA3LDE4IEBACiAgICAgZGVmIHRlc3Rfc3RhdChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBvc2l4LnN0YXQoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocG9zaXguc3RhdChieXRlYXJyYXkob3MuZnNlbmNvZGUoc3VwcG9ydC5URVNURk4pKSkpCiAKKyAgICAgICAgc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgYnl0ZWFycmF5KG9zLmZzZW5jb2RlKHN1cHBvcnQuVEVTVEZOKSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICdjYW5cJ3Qgc3BlY2lmeSBOb25lIGZvciBwYXRoIGFyZ3VtZW50JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgTm9uZSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzIG9yIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICAgICAgJ3Nob3VsZCBiZSBzdHJpbmcsIGJ5dGVzLCBvcy5QYXRoTGlrZSBvciBpbnRlZ2VyLCBub3QnLAogICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIGxpc3Qoc3VwcG9ydC5URVNURk4pKQogICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMgb3IgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgICAgICAnc2hvdWxkIGJlIHN0cmluZywgYnl0ZXMsIG9zLlBhdGhMaWtlIG9yIGludGVnZXIsIG5vdCcsCiAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgbGlzdChvcy5mc2VuY29kZShzdXBwb3J0LlRFU1RGTikpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihwb3NpeCwgJ21rZmlmbycpLCAiZG9uJ3QgaGF2ZSBta2ZpZm8oKSIpCkBAIC04NjMsOSArODY0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQogICAgICAgICAgICAgczIgPSBwb3NpeC5zdGF0KHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9Tm9uZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoczEsIHMyKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdzaG91bGQgYmUgaW50ZWdlciwgbm90JywKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIgb3IgTm9uZSwgbm90JywKICAgICAgICAgICAgICAgICAgICAgcG9zaXguc3RhdCwgc3VwcG9ydC5URVNURk4sIGRpcl9mZD1wb3NpeC5nZXRjd2QoKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVHlwZUVycm9yLCAnc2hvdWxkIGJlIGludGVnZXIsIG5vdCcsCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFR5cGVFcnJvciwgJ3Nob3VsZCBiZSBpbnRlZ2VyIG9yIE5vbmUsIG5vdCcsCiAgICAgICAgICAgICAgICAgICAgIHBvc2l4LnN0YXQsIHN1cHBvcnQuVEVTVEZOLCBkaXJfZmQ9ZmxvYXQoZikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAogICAgICAgICAgICAgICAgICAgICBwb3NpeC5zdGF0LCBzdXBwb3J0LlRFU1RGTiwgZGlyX2ZkPTEwKioyMCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcG9zaXhwYXRoLnB5IGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKaW5kZXggMDc4M2MzNi4uOGExZTMzYiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wb3NpeHBhdGgucHkKQEAgLTU5Niw1ICs1OTYsODUgQEAKICAgICBhdHRyaWJ1dGVzID0gWydyZWxwYXRoJywgJ3NhbWVmaWxlJywgJ3NhbWVvcGVuZmlsZScsICdzYW1lc3RhdCddCiAKIAorY2xhc3MgUGF0aExpa2VUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBwYXRoID0gcG9zaXhwYXRoCisKKyAgICBjbGFzcyBQYXRoTGlrZToKKyAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHBhdGg9JycpOgorICAgICAgICAgICAgc2VsZi5wYXRoID0gcGF0aAorICAgICAgICBkZWYgX19mc3BhdGhfXyhzZWxmKToKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5wYXRoLCBCYXNlRXhjZXB0aW9uKToKKyAgICAgICAgICAgICAgICByYWlzZSBzZWxmLnBhdGgKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYucGF0aAorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZpbGVfbmFtZSA9IHN1cHBvcnQuVEVTVEZOLmxvd2VyKCkKKyAgICAgICAgc2VsZi5maWxlX3BhdGggPSBzZWxmLlBhdGhMaWtlKHN1cHBvcnQuVEVTVEZOKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHNlbGYuZmlsZV9uYW1lKQorICAgICAgICB3aXRoIG9wZW4oc2VsZi5maWxlX25hbWUsICd4YicsIDApIGFzIGZpbGU6CisgICAgICAgICAgICBmaWxlLndyaXRlKGIidGVzdF9wb3NpeHBhdGguUGF0aExpa2VUZXN0cyIpCisKKyAgICBkZWYgYXNzZXJ0UGF0aEVxdWFsKHNlbGYsIGZ1bmMpOgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZ1bmMoc2VsZi5maWxlX3BhdGgpLCBmdW5jKHNlbGYuZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfbm9ybWNhc2Uoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5ub3JtY2FzZSkKKworICAgIGRlZiB0ZXN0X3BhdGhfaXNhYnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2FicykKKworICAgIGRlZiB0ZXN0X3BhdGhfam9pbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnBhdGguam9pbignYScsIHNlbGYuUGF0aExpa2UoJ2InKSwgJ2MnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhdGguam9pbignYScsICdiJywgJ2MnKSkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRleHQoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5zcGxpdGV4dCkKKworICAgIGRlZiB0ZXN0X3BhdGhfc3BsaXRkcml2ZShzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnNwbGl0ZHJpdmUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Jhc2VuYW1lKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYmFzZW5hbWUpCisKKyAgICBkZWYgdGVzdF9wYXRoX2Rpcm5hbWUoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5kaXJuYW1lKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc2xpbmsoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5pc2xpbmspCisKKyAgICBkZWYgdGVzdF9wYXRoX2xleGlzdHMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5sZXhpc3RzKQorCisgICAgZGVmIHRlc3RfcGF0aF9pc21vdW50KHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguaXNtb3VudCkKKworICAgIGRlZiB0ZXN0X3BhdGhfZXhwYW5kdXNlcihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLmV4cGFuZHVzZXIpCisKKyAgICBkZWYgdGVzdF9wYXRoX2V4cGFuZHZhcnMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5leHBhbmR2YXJzKQorCisgICAgZGVmIHRlc3RfcGF0aF9ub3JtcGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLm5vcm1wYXRoKQorCisgICAgZGVmIHRlc3RfcGF0aF9hYnNwYXRoKHNlbGYpOgorICAgICAgICBzZWxmLmFzc2VydFBhdGhFcXVhbChzZWxmLnBhdGguYWJzcGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVhbHBhdGgoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0UGF0aEVxdWFsKHNlbGYucGF0aC5yZWFscGF0aCkKKworICAgIGRlZiB0ZXN0X3BhdGhfcmVscGF0aChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRQYXRoRXF1YWwoc2VsZi5wYXRoLnJlbHBhdGgpCisKKyAgICBkZWYgdGVzdF9wYXRoX2NvbW1vbnBhdGgoc2VsZik6CisgICAgICAgIGNvbW1vbl9wYXRoID0gc2VsZi5wYXRoLmNvbW1vbnBhdGgoW3NlbGYuZmlsZV9wYXRoLCBzZWxmLmZpbGVfbmFtZV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tbW9uX3BhdGgsIHNlbGYuZmlsZV9uYW1lKQorCisKIGlmIF9fbmFtZV9fPT0iX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wb3cucHkgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQppbmRleCA2ZmVhYzQwLi5jZTk5ZmU2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3Bvdy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Bvdy5weQpAQCAtMSw0ICsxLDQgQEAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgUG93VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHR5LnB5IGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKaW5kZXggZWY1ZTk5ZS4uMTVmODhlNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9wdHkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9wdHkucHkKQEAgLTI3Nyw3ICsyNzcsNiBAQAogICAgICAgICBzb2NrZXRwYWlyID0gc2VsZi5fc29ja2V0cGFpcigpCiAgICAgICAgIG1hc3RlcnMgPSBbcy5maWxlbm8oKSBmb3IgcyBpbiBzb2NrZXRwYWlyXQogCi0gICAgICAgIG9zLmNsb3NlKG1hc3RlcnNbMV0pCiAgICAgICAgIHNvY2tldHBhaXJbMV0uY2xvc2UoKQogICAgICAgICBvcy5jbG9zZSh3cml0ZV90b19zdGRpbl9mZCkKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9wdWxsZG9tLnB5CmluZGV4IDE5MzJjNmIuLjNkODllM2EgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHVsbGRvbS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3B1bGxkb20ucHkKQEAgLTEsNiArMSw1IEBACiBpbXBvcnQgaW8KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHN5cwogaW1wb3J0IHhtbC5zYXgKIAogZnJvbSB4bWwuc2F4LnhtbHJlYWRlciBpbXBvcnQgQXR0cmlidXRlc0ltcGwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHljbGJyLnB5IGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKaW5kZXggNmZmYmJiZC4uMmNmZjFjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWNsYnIucHkKQEAgLTE1Niw5ICsxNTYsOSBAQAogICAgICAgICAjIFRoZXNlIHdlcmUgb25jZSBhYm91dCB0aGUgMTAgbG9uZ2VzdCBtb2R1bGVzCiAgICAgICAgIGNtKCdyYW5kb20nLCBpZ25vcmU9KCdSYW5kb20nLCkpICAjIGZyb20gX3JhbmRvbSBpbXBvcnQgUmFuZG9tIGFzIENvcmVHZW5lcmF0b3IKICAgICAgICAgY20oJ2NnaScsIGlnbm9yZT0oJ2xvZycsKSkgICAgICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdwaWNrbGUnKQorICAgICAgICBjbSgncGlja2xlJywgaWdub3JlPSgncGFydGlhbCcsKSkKICAgICAgICAgY20oJ2FpZmMnLCBpZ25vcmU9KCdvcGVuZnAnLCAnX2FpZmNfcGFyYW1zJykpICAjIHNldCB3aXRoID0gaW4gbW9kdWxlCi0gICAgICAgIGNtKCdzcmVfcGFyc2UnLCBpZ25vcmU9KCdkdW1wJywgJ2dyb3VwcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKKyAgICAgICAgY20oJ3NyZV9wYXJzZScsIGlnbm9yZT0oJ2R1bXAnLCAnZ3JvdXBzJywgJ3BvcycpKSAjIGZyb20gc3JlX2NvbnN0YW50cyBpbXBvcnQgKjsgcHJvcGVydHkKICAgICAgICAgY20oJ3BkYicpCiAgICAgICAgIGNtKCdweWRvYycpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkgYi9MaWIvdGVzdC90ZXN0X3B5ZG9jLnB5CmluZGV4IGFlZTk3OWIuLjUxNzRkNTYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcHlkb2MucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9weWRvYy5weQpAQCAtODMsNiArODMsOCBAQAogICAgICB8ICBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZToKICAgICAgfFx4MjBceDIwCiAgICAgIHwgIE5PX01FQU5JTkcgPSAnZWdncycKKyAgICAgfFx4MjBceDIwCisgICAgIHwgIF9fYW5ub3RhdGlvbnNfXyA9IHsnTk9fTUVBTklORyc6IDxjbGFzcyAnc3RyJz59CiBceDIwXHgyMFx4MjBceDIwCiAgICAgY2xhc3MgQyhidWlsdGlucy5vYmplY3QpCiAgICAgIHwgIE1ldGhvZHMgZGVmaW5lZCBoZXJlOgpAQCAtMTk1LDYgKzE5Nyw4IEBACiBEYXRhIGFuZCBvdGhlciBhdHRyaWJ1dGVzIGRlZmluZWQgaGVyZTo8YnI+CiA8ZGw+PGR0PjxzdHJvbmc+Tk9fTUVBTklORzwvc3Ryb25nPiA9ICdlZ2dzJzwvZGw+CiAKKzxkbD48ZHQ+PHN0cm9uZz5fX2Fubm90YXRpb25zX188L3N0cm9uZz4gPSB7J05PX01FQU5JTkcnOiAmbHQ7Y2xhc3MgJ3N0cicmZ3Q7fTwvZGw+CisKIDwvdGQ+PC90cj48L3RhYmxlPiA8cD4KIDx0YWJsZSB3aWR0aD0iMTAwJSUiIGNlbGxzcGFjaW5nPTAgY2VsbHBhZGRpbmc9MiBib3JkZXI9MCBzdW1tYXJ5PSJzZWN0aW9uIj4KIDx0ciBiZ2NvbG9yPSIjZmZjOGQ4Ij4KQEAgLTI2Myw3ICsyNjcsNyBAQAogVXNlIGhlbHAoc3RyKSBmb3IgaGVscCBvbiB0aGUgc3RyIGNsYXNzLicnJy5yZXBsYWNlKCdcbicsIG9zLmxpbmVzZXApCiAKICMgb3V0cHV0IHBhdHRlcm4gZm9yIG1vZHVsZSB3aXRoIGJhZCBpbXBvcnRzCi1iYWRpbXBvcnRfcGF0dGVybiA9ICJwcm9ibGVtIGluICVzIC0gSW1wb3J0RXJyb3I6IE5vIG1vZHVsZSBuYW1lZCAlciIKK2JhZGltcG9ydF9wYXR0ZXJuID0gInByb2JsZW0gaW4gJXMgLSBNb2R1bGVOb3RGb3VuZEVycm9yOiBObyBtb2R1bGUgbmFtZWQgJXIiCiAKIGV4cGVjdGVkX2R5bmFtaWNhdHRyaWJ1dGVfcGF0dGVybiA9ICIiIgogSGVscCBvbiBjbGFzcyBEQSBpbiBtb2R1bGUgJXM6CkBAIC02MzgsOCArNjQyLDkgQEAKICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2RvY19fJ10KICAgICAgICAgZGVsIGV4cGVjdGVkWydfX2NsYXNzX18nXQogICAgICAgICAjIGluc3BlY3QgcmVzb2x2ZXMgZGVzY3JpcHRvcnMgb24gdHlwZSBpbnRvIG1ldGhvZHMsIGJ1dCB2YXJzIGRvZXNuJ3QsCi0gICAgICAgICMgc28gd2UgbmVlZCB0byB1cGRhdGUgX19zdWJjbGFzc2hvb2tfXy4KKyAgICAgICAgIyBzbyB3ZSBuZWVkIHRvIHVwZGF0ZSBfX3N1YmNsYXNzaG9va19fIGFuZCBfX2luaXRfc3ViY2xhc3NfXy4KICAgICAgICAgZXhwZWN0ZWRbJ19fc3ViY2xhc3Nob29rX18nXSA9IFRlc3RDbGFzcy5fX3N1YmNsYXNzaG9va19fCisgICAgICAgIGV4cGVjdGVkWydfX2luaXRfc3ViY2xhc3NfXyddID0gVGVzdENsYXNzLl9faW5pdF9zdWJjbGFzc19fCiAKICAgICAgICAgbWV0aG9kcyA9IHB5ZG9jLmFsbG1ldGhvZHMoVGVzdENsYXNzKQogICAgICAgICBzZWxmLmFzc2VydERpY3RFcXVhbChtZXRob2RzLCBleHBlY3RlZCkKQEAgLTg1NSw2ICs4NjAsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLl9nZXRfc3VtbWFyeV9saW5lKHQud3JhcCksCiAgICAgICAgICAgICAid3JhcCh0ZXh0KSBtZXRob2Qgb2YgdGV4dHdyYXAuVGV4dFdyYXBwZXIgaW5zdGFuY2UiKQogCisgICAgZGVmIHRlc3RfZmllbGRfb3JkZXJfZm9yX25hbWVkX3R1cGxlcyhzZWxmKToKKyAgICAgICAgUGVyc29uID0gbmFtZWR0dXBsZSgnUGVyc29uJywgWyduaWNrbmFtZScsICdmaXJzdG5hbWUnLCAnYWdlZ3JvdXAnXSkKKyAgICAgICAgcyA9IHB5ZG9jLnJlbmRlcl9kb2MoUGVyc29uKQorICAgICAgICBzZWxmLmFzc2VydExlc3Mocy5pbmRleCgnbmlja25hbWUnKSwgcy5pbmRleCgnZmlyc3RuYW1lJykpCisgICAgICAgIHNlbGYuYXNzZXJ0TGVzcyhzLmluZGV4KCdmaXJzdG5hbWUnKSwgcy5pbmRleCgnYWdlZ3JvdXAnKSkKKworICAgICAgICBjbGFzcyBOb25JdGVyYWJsZUZpZWxkczoKKyAgICAgICAgICAgIF9maWVsZHMgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTm9uSGFzaGFibGVGaWVsZHM6CisgICAgICAgICAgICBfZmllbGRzID0gW1tdXQorCisgICAgICAgICMgTWFrZSBzdXJlIHRoZXNlIGRvZXNuJ3QgZmFpbAorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkl0ZXJhYmxlRmllbGRzKQorICAgICAgICBweWRvYy5yZW5kZXJfZG9jKE5vbkhhc2hhYmxlRmllbGRzKQorCiAgICAgQHJlcXVpcmVzX2RvY3N0cmluZ3MKICAgICBkZWYgdGVzdF9ib3VuZF9idWlsdGluX21ldGhvZChzZWxmKToKICAgICAgICAgcyA9IFN0cmluZ0lPKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcXVvcHJpLnB5IGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKaW5kZXggN2NhYzAxMy4uNzE1NTQ0YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9xdW9wcmkucHkKQEAgLTEsNiArMSw2IEBACiBpbXBvcnQgdW5pdHRlc3QKIAotaW1wb3J0IHN5cywgb3MsIGlvLCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzLCBpbywgc3VicHJvY2VzcwogaW1wb3J0IHF1b3ByaQogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmFuZG9tLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKaW5kZXggZTgwZWQxNy4uNGQ1YTg3NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yYW5kb20ucHkKQEAgLTcsNiArNyw3IEBACiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogZnJvbSBtYXRoIGltcG9ydCBsb2csIGV4cCwgcGksIGZzdW0sIHNpbgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0Citmcm9tIGZyYWN0aW9ucyBpbXBvcnQgRnJhY3Rpb24KIAogY2xhc3MgVGVzdEJhc2ljT3BzOgogICAgICMgU3VwZXJjbGFzcyB3aXRoIHRlc3RzIGNvbW1vbiB0byBhbGwgZ2VuZXJhdG9ycy4KQEAgLTE0MSw2ICsxNDIsODMgQEAKICAgICBkZWYgdGVzdF9zYW1wbGVfb25fZGljdHMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5nZW4uc2FtcGxlLCBkaWN0LmZyb21rZXlzKCdhYmNkZWYnKSwgMikKIAorICAgIGRlZiB0ZXN0X2Nob2ljZXMoc2VsZik6CisgICAgICAgIGNob2ljZXMgPSBzZWxmLmdlbi5jaG9pY2VzCisgICAgICAgIGRhdGEgPSBbJ3JlZCcsICdncmVlbicsICdibHVlJywgJ3llbGxvdyddCisgICAgICAgIHN0cl9kYXRhID0gJ2FiY2QnCisgICAgICAgIHJhbmdlX2RhdGEgPSByYW5nZSg0KQorICAgICAgICBzZXRfZGF0YSA9IHNldChyYW5nZSg0KSkKKworICAgICAgICAjIGJhc2ljIGZ1bmN0aW9uYWxpdHkKKyAgICAgICAgZm9yIHNhbXBsZSBpbiBbCisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGs9NSksCisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIHJhbmdlKDQpLCBrPTUpLAorICAgICAgICAgICAgY2hvaWNlcyhrPTUsIHBvcHVsYXRpb249ZGF0YSwgd2VpZ2h0cz1yYW5nZSg0KSksCisgICAgICAgICAgICBjaG9pY2VzKGs9NSwgcG9wdWxhdGlvbj1kYXRhLCBjdW1fd2VpZ2h0cz1yYW5nZSg0KSksCisgICAgICAgIF06CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzYW1wbGUpLCA1KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0eXBlKHNhbXBsZSksIGxpc3QpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KHNhbXBsZSkgPD0gc2V0KGRhdGEpKQorCisgICAgICAgICMgdGVzdCBhcmd1bWVudCBoYW5kbGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbWlzc2luZyBhcmd1bWVudHMKKyAgICAgICAgICAgIGNob2ljZXMoMikKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoZGF0YSwgaz0wKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgICMgayA9PSAwCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcyhkYXRhLCBrPS0xKSwgW10pICAgICAgICAgICAgICAgICAgICAgICAgIyBuZWdhdGl2ZSBrIGJlaGF2ZXMgbGlrZSBgYFswXSAqIC0xYGAKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBrPTIuNSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgayBpcyBhIGZsb2F0CisKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKHN0cl9kYXRhLCBrPTUpKSA8PSBzZXQoc3RyX2RhdGEpKSAgICAjIHBvcHVsYXRpb24gaXMgYSBzdHJpbmcgc2VxdWVuY2UKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKHJhbmdlX2RhdGEsIGs9NSkpIDw9IHNldChyYW5nZV9kYXRhKSkgICMgcG9wdWxhdGlvbiBpcyBhIHJhbmdlCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoc2V0X2RhdGEsIGs9MikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIHBvcHVsYXRpb24gaXMgbm90IGEgc2VxdWVuY2UKKworICAgICAgICBzZWxmLmFzc2VydFRydWUoc2V0KGNob2ljZXMoZGF0YSwgTm9uZSwgaz01KSkgPD0gc2V0KGRhdGEpKSAgICAgICMgd2VpZ2h0cyBpcyBOb25lCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZXQoY2hvaWNlcyhkYXRhLCB3ZWlnaHRzPU5vbmUsIGs9NSkpIDw9IHNldChkYXRhKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoZGF0YSwgWzEsMl0sIGs9NSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGxlbih3ZWlnaHRzKSAhPSBsZW4ocG9wdWxhdGlvbikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCAxMCwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLWl0ZXJhYmxlIHdlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBbTm9uZV0qNCwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgbm9uLW51bWVyaWMgd2VpZ2h0cworICAgICAgICBmb3Igd2VpZ2h0cyBpbiBbCisgICAgICAgICAgICAgICAgWzE1LCAxMCwgMjUsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlZ2VyIHdlaWdodHMKKyAgICAgICAgICAgICAgICBbMTUuMSwgMTAuMiwgMjUuMiwgMzAuM10sICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGZsb2F0IHdlaWdodHMKKyAgICAgICAgICAgICAgICBbRnJhY3Rpb24oMSwgMyksIEZyYWN0aW9uKDIsIDYpLCBGcmFjdGlvbigzLCA2KSwgRnJhY3Rpb24oNCwgNildLCAjIGZyYWN0aW9uYWwgd2VpZ2h0cworICAgICAgICAgICAgICAgIFtUcnVlLCBGYWxzZSwgVHJ1ZSwgRmFsc2VdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgYm9vbGVhbnMgKGluY2x1ZGUgLyBleGNsdWRlKQorICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIHdlaWdodHMsIGs9NSkpIDw9IHNldChkYXRhKSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz1bMSwyXSwgaz01KSAgICAgICAgICAgICAgICAgICAgICAgICMgbGVuKHdlaWdodHMpICE9IGxlbihwb3B1bGF0aW9uKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPTEwLCBrPTUpICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBub24taXRlcmFibGUgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCBjdW1fd2VpZ2h0cz1bTm9uZV0qNCwgaz01KSAgICAgICAgICAgICAgICAgICAgICMgbm9uLW51bWVyaWMgY3VtX3dlaWdodHMKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2hvaWNlcyhkYXRhLCByYW5nZSg0KSwgY3VtX3dlaWdodHM9cmFuZ2UoNCksIGs9NSkgICAgICAgICAgICMgYm90aCB3ZWlnaHRzIGFuZCBjdW1fd2VpZ2h0cworICAgICAgICBmb3Igd2VpZ2h0cyBpbiBbCisgICAgICAgICAgICAgICAgWzE1LCAxMCwgMjUsIDMwXSwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBpbnRlZ2VyIGN1bV93ZWlnaHRzCisgICAgICAgICAgICAgICAgWzE1LjEsIDEwLjIsIDI1LjIsIDMwLjNdLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBmbG9hdCBjdW1fd2VpZ2h0cworICAgICAgICAgICAgICAgIFtGcmFjdGlvbigxLCAzKSwgRnJhY3Rpb24oMiwgNiksIEZyYWN0aW9uKDMsIDYpLCBGcmFjdGlvbig0LCA2KV0sICMgZnJhY3Rpb25hbCBjdW1fd2VpZ2h0cworICAgICAgICBdOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNldChjaG9pY2VzKGRhdGEsIGN1bV93ZWlnaHRzPXdlaWdodHMsIGs9NSkpIDw9IHNldChkYXRhKSkKKworICAgICAgICAjIFRlc3Qgd2VpZ2h0IGZvY3VzZWQgb24gYSBzaW5nbGUgZWxlbWVudCBvZiB0aGUgcG9wdWxhdGlvbgorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMSwgMCwgMCwgMF0pLCBbJ2EnXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaG9pY2VzKCdhYmNkJywgWzAsIDEsIDAsIDBdKSwgWydiJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hvaWNlcygnYWJjZCcsIFswLCAwLCAxLCAwXSksIFsnYyddKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNob2ljZXMoJ2FiY2QnLCBbMCwgMCwgMCwgMV0pLCBbJ2QnXSkKKworICAgICAgICAjIFRlc3QgY29uc2lzdGVuY3kgd2l0aCByYW5kb20uY2hvaWNlKCkgZm9yIGVtcHR5IHBvcHVsYXRpb24KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIGs9MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIHdlaWdodHM9W10sIGs9MSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yKToKKyAgICAgICAgICAgIGNob2ljZXMoW10sIGN1bV93ZWlnaHRzPVtdLCBrPTUpCisKICAgICBkZWYgdGVzdF9nYXVzcyhzZWxmKToKICAgICAgICAgIyBFbnN1cmUgdGhhdCB0aGUgc2VlZCgpIG1ldGhvZCBpbml0aWFsaXplcyBhbGwgdGhlIGhpZGRlbiBzdGF0ZS4gIEluCiAgICAgICAgICMgcGFydGljdWxhciwgdGhyb3VnaCAyLjIuMSBpdCBmYWlsZWQgdG8gcmVzZXQgYSBwaWVjZSBvZiBzdGF0ZSB1c2VkCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5IGIvTGliL3Rlc3QvdGVzdF9yYW5nZS5weQppbmRleCBjMDIyZjA3Li45ZTExZTUxIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JhbmdlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmFuZ2UucHkKQEAgLTEsOSArMSwxMCBAQAogIyBQeXRob24gdGVzdCBzZXQgLS0gYnVpbHQtaW4gZnVuY3Rpb25zCiAKLWltcG9ydCB0ZXN0LnN1cHBvcnQsIHVuaXR0ZXN0CitpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCBwaWNrbGUKIGltcG9ydCBpdGVydG9vbHMKK2ltcG9ydCB0ZXN0LnN1cHBvcnQKIAogIyBwdXJlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbnMgKDMgYXJncyBvbmx5KSwgZm9yIGNvbXBhcmlzb24KIGRlZiBweXJhbmdlKHN0YXJ0LCBzdG9wLCBzdGVwKToKQEAgLTQ5OCwyOSArNDk5LDMyIEBACiAgICAgICAgIGltcG9ydCBfdGVzdGNhcGkKICAgICAgICAgcmFuZ2VpdGVyX3R5cGUgPSB0eXBlKGl0ZXIocmFuZ2UoMCkpKQogCi0gICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgotICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUoYT0xKQorICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmFuZ2VpdGVyX3R5cGUsIDEsIDMsIDEpCiAKLSAgICAgICAgIyByYW5nZWl0ZXJfbmV3IHRha2VzIGV4YWN0bHkgMyBhcmd1bWVudHMKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKKyAgICAgICAgd2l0aCB0ZXN0LnN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgcmFuZ2VpdGVyX25ldyBkb2Vzbid0IHRha2Uga2V5d29yZCBhcmd1bWVudHMKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShhPTEpCiAKLSAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKLSAgICAgICAgZm9yIGdvb2RfdmFsIGluIFtfdGVzdGNhcGkuTE9OR19NQVgsIF90ZXN0Y2FwaS5MT05HX01JTl06Ci0gICAgICAgICAgICByYW5nZWl0ZXJfdHlwZShnb29kX3ZhbCwgZ29vZF92YWwsIGdvb2RfdmFsKQotICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIGJhZF92YWwsIDEsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIGJhZF92YWwsIDEpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisgICAgICAgICAgICAjIHJhbmdlaXRlcl9uZXcgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cworICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgcmFuZ2VpdGVyX3R5cGUsIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCByYW5nZWl0ZXJfdHlwZSwgMSwgMSwgMSwgMSkKIAotICAgICAgICAjIHN0ZXAgbXVzdG4ndCBiZSB6ZXJvCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQorICAgICAgICAgICAgIyBzdGFydCwgc3RvcCBhbmQgc3RvcCBtdXN0IGZpdCBpbiBDIGxvbmcKKyAgICAgICAgICAgIGZvciBnb29kX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYLCBfdGVzdGNhcGkuTE9OR19NSU5dOgorICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlKGdvb2RfdmFsLCBnb29kX3ZhbCwgZ29vZF92YWwpCisgICAgICAgICAgICBmb3IgYmFkX3ZhbCBpbiBbX3Rlc3RjYXBpLkxPTkdfTUFYICsgMSwgX3Rlc3RjYXBpLkxPTkdfTUlOIC0gMV06CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYW5nZWl0ZXJfdHlwZSwgYmFkX3ZhbCwgMSwgMSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlaXRlcl90eXBlLCAxLCBiYWRfdmFsLCAxKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2VpdGVyX3R5cGUsIDEsIDEsIGJhZF92YWwpCisKKyAgICAgICAgICAgICMgc3RlcCBtdXN0bid0IGJlIHplcm8KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJhbmdlaXRlcl90eXBlLCAxLCAxLCAwKQogCiAgICAgZGVmIHRlc3Rfc2xpY2Uoc2VsZik6CiAgICAgICAgIGRlZiBjaGVjayhzdGFydCwgc3RvcCwgc3RlcD1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmUucHkgYi9MaWIvdGVzdC90ZXN0X3JlLnB5CmluZGV4IDA4MzRmZTAuLjRjZGM1OTEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfcmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yZS5weQpAQCAtMTE1LDEwICsxMTUsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIHJlLmVzY2FwZShzKSwgJ3gnKSwgcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyguKScsIGxhbWJkYSBtOiBzLCAneCcpLCBzKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8YT54KScsICdcZzxhPlxnPGE+JywgJ3h4JyksICd4eHh4JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJyg/UDxhPngpJywgJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsICdcZzx1bms+XGc8dW5rPicsICd4eCcpLCAneHh4eCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8dW5rPngpJywgJ1xnPDE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8YT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCknLCByJ1xnPGE+XGc8MT4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8dW5rPlxnPHVuaz4nLCAneHgnKSwgJ3h4eHgnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPHVuaz54KScsIHInXGc8MT5cZzwxPicsICd4eCcpLCAneHh4eCcpCiAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCByJ1x0XG5cdlxyXGZcYVxiJywgJ2EnKSwgJ1x0XG5cdlxyXGZcYVxiJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXHRcblx2XHJcZlxhXGInLCAnYScpLCAnXHRcblx2XHJcZlxhXGInKQpAQCAtMTI2LDE0ICsxMjYsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hyKDkpK2NocigxMCkrY2hyKDExKStjaHIoMTMpK2NocigxMikrY2hyKDcpK2Nocig4KSkpCiAgICAgICAgIGZvciBjIGluICdjZGVoaWprbG1vcHFzdXd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yKToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ2EnLCAnXFwnICsgYywgJ2EnKSwgJ1xcJyArIGMpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ15ccyonLCAnWCcsICd0ZXN0JyksICdYdGVzdCcpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKHInXlxzKicsICdYJywgJ3Rlc3QnKSwgJ1h0ZXN0JykKIAogICAgIGRlZiB0ZXN0X2J1Z180NDk5NjQoc2VsZik6CiAgICAgICAgICMgZmFpbHMgZm9yIGdyb3VwIGZvbGxvd2VkIGJ5IG90aGVyIGVzY2FwZQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCAnXGc8MT5cZzwxPlxcYicsICd4eCcpLAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YihyJyg/UDx1bms+eCknLCByJ1xnPDE+XGc8MT5cYicsICd4eCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgICd4eFxieHhcYicpCiAKICAgICBkZWYgdGVzdF9idWdfNDQ5MDAwKHNlbGYpOgpAQCAtMjIxLDI2ICsyMjEsMjYgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIoJ3grJywgJy0nLCAnYWJ4ZCcpLCAnYWItZCcpCiAKICAgICBkZWYgdGVzdF9zeW1ib2xpY19ncm91cHMoc2VsZik6Ci0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KSg/UD1hMSkoPyhhMSl5KScpCi0gICAgICAgIHJlLmNvbXBpbGUoJyg/UDxhMT54KVwxKD8oMSl5KScpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDxhPikoP1A8YT4pJywKKyAgICAgICAgcmUuY29tcGlsZShyJyg/UDxhPngpKD9QPWEpKD8oYSl5KScpCisgICAgICAgIHJlLmNvbXBpbGUocicoP1A8YTE+eCkoP1A9YTEpKD8oYTEpeSknKQorICAgICAgICByZS5jb21waWxlKHInKD9QPGExPngpXDEoPygxKXkpJykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A8YT4pJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicmVkZWZpbml0aW9uIG9mIGdyb3VwIG5hbWUgJ2EnIGFzIGdyb3VwIDI7ICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAid2FzIGdyb3VwIDEiKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8YT4oP1A9YSkpJywKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPig/UD1hKSknLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgcmVmZXIgdG8gYW4gb3BlbiBncm91cCIsIDEwKQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGE+KSg/UD1hJywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIG5hbWUnLCAxMSkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A9MSknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2EnIikKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UD1hLiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhLiciLCA0KQotICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKCcoP1A8KScsICdtaXNzaW5nID4sIHVudGVybWluYXRlZCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IoJyg/UDwnLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKLSAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcignKD9QPD4pJywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1B4eSknLCAndW5rbm93biBleHRlbnNpb24gP1B4JykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDxhPikoP1A9YScsICdtaXNzaW5nICksIHVudGVybWluYXRlZCBuYW1lJywgMTEpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9KScsICdtaXNzaW5nIGdyb3VwIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPTEpJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnMSciLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWEpJywgInVua25vd24gZ3JvdXAgbmFtZSAnYSciKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPWExKScsICJ1bmtub3duIGdyb3VwIG5hbWUgJ2ExJyIpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A9YS4pJywgImJhZCBjaGFyYWN0ZXIgaW4gZ3JvdXAgbmFtZSAnYS4nIiwgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwpJywgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9QPGEnLCAnbWlzc2luZyA+LCB1bnRlcm1pbmF0ZWQgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8JywgJ21pc3NpbmcgZ3JvdXAgbmFtZScsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8PiknLCAnbWlzc2luZyBncm91cCBuYW1lJywgNCkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/UDwxPiknLCAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YS4+KScsICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ2EuJyIsIDQpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPygnLCAnbWlzc2luZyBncm91cCBuYW1lJywgMykKQEAgLTI1OSwzNSArMjU5LDM1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocGF0LCAneGM4eXonKS5zcGFuKCksICgwLCA1KSkKIAogICAgIGRlZiB0ZXN0X3N5bWJvbGljX3JlZnMoc2VsZik6Ci0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhJywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzxhJywgJ3h4JywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pc3NpbmcgPiwgdW50ZXJtaW5hdGVkIG5hbWUnLCAzKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwnLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnJywgJ3h4JywgJ21pc3NpbmcgPCcsIDIpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzxhIGE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZycsICd4eCcsICdtaXNzaW5nIDwnLCAyKQorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPGEgYT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICdhIGEnIiwgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPD4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPD4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnbWlzc2luZyBncm91cCBuYW1lJywgMykKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgJ1xnPDFhMT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPDFhMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICcxYTEnIiwgMykKICAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwyPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScpCiAgICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsIHInXDInLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgInVua25vd24gZ3JvdXAgbmFtZSAnYWInIik6Ci0gICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgJ1xnPGFiPicsICd4eCcpCisgICAgICAgICAgICByZS5zdWIoJyg/UDxhPngpJywgcidcZzxhYj4nLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1xnPGI+JywgJ3h4JyksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPGE+eCl8KD9QPGI+eSknLCByJ1wyJywgJ3h4JyksICcnKQotICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCAnXGc8LTE+JywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJyg/UDxhPngpJywgcidcZzwtMT4nLCAneHgnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYmFkIGNoYXJhY3RlciBpbiBncm91cCBuYW1lICctMSciLCAzKQogICAgICAgICAjIE5ldyB2YWxpZC9pbnZhbGlkIGlkZW50aWZpZXJzIGluIFB5dGhvbiAzCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc3ViKCcoP1A8wrU+eCknLCByJ1xnPMK1PicsICd4eCcpLCAneHgnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1YignKD9QPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+eCknLCByJ1xnPPCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKI+JywgJ3h4JyksICd4eCcpCi0gICAgICAgIHNlbGYuY2hlY2tUZW1wbGF0ZUVycm9yKCcoP1A8YT54KScsICdcZzzCqT4nLCAneHgnLAorICAgICAgICBzZWxmLmNoZWNrVGVtcGxhdGVFcnJvcignKD9QPGE+eCknLCByJ1xnPMKpPicsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJiYWQgY2hhcmFjdGVyIGluIGdyb3VwIG5hbWUgJ8KpJyIsIDMpCiAgICAgICAgICMgU3VwcG9ydCA+IDEwMCBncm91cHMuCiAgICAgICAgIHBhdCA9ICd8Jy5qb2luKCd4KD9QPGElZD4leCl5JyAlIChpLCBpKSBmb3IgaSBpbiByYW5nZSgxLCAyMDAgKyAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCAnXGc8MjAwPicsICd4Yzh5enhjOHknKSwgJ2M4emM4JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zdWIocGF0LCByJ1xnPDIwMD4nLCAneGM4eXp4Yzh5JyksICdjOHpjOCcpCiAKICAgICBkZWYgdGVzdF9yZV9zdWJuKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnN1Ym4oIig/aSliKyIsICJ4IiwgImJiYmIgQkJCQiIpLCAoJ3ggeCcsIDIpKQpAQCAtNDE5LDE5ICs0MTksNzcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCksICgnYicsIE5vbmUsICdiJywgJ2MnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2JjJykuZ3JvdXBzKCIiKSwgKCdiJywgIiIsICdiJywgJ2MnKSkKIAotICAgICAgICAjIEEgc2luZ2xlIGdyb3VwCi0gICAgICAgIG0gPSByZS5tYXRjaCgnKGEpJywgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtLmdyb3VwKDApLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMSwgMSksICgnYScsICdhJykpCi0KICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQubWF0Y2goJ2EnKS5ncm91cCgxLCAyLCAzKSwgKCdhJywgTm9uZSwgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdiJykuZ3JvdXAoJ2ExJywgJ2IyJywgJ2MzJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKE5vbmUsICdiJywgTm9uZSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0Lm1hdGNoKCdhYycpLmdyb3VwKDEsICdiMicsIDMpLCAoJ2EnLCBOb25lLCAnYycpKQogCisgICAgZGVmIHRlc3RfZ3JvdXAoc2VsZik6CisgICAgICAgIGNsYXNzIEluZGV4OgorICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIHZhbHVlKToKKyAgICAgICAgICAgICAgICBzZWxmLnZhbHVlID0gdmFsdWUKKyAgICAgICAgICAgIGRlZiBfX2luZGV4X18oc2VsZik6CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUKKyAgICAgICAgIyBBIHNpbmdsZSBncm91cAorICAgICAgICBtID0gcmUubWF0Y2goJyhhKShiKScsICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgpLCAnYWInKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMCksICdhYicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cCgxKSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoSW5kZXgoMSkpLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEluZGV4RXJyb3IsIG0uZ3JvdXAsIC0xKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAzKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCAxPDwxMDAwKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhJbmRleEVycm9yLCBtLmdyb3VwLCBJbmRleCgxPDwxMDAwKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoSW5kZXhFcnJvciwgbS5ncm91cCwgJ3gnKQorICAgICAgICAjIE11bHRpcGxlIGdyb3VwcworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG0uZ3JvdXAoMiwgMSksICgnYicsICdhJykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobS5ncm91cChJbmRleCgyKSwgSW5kZXgoMSkpLCAoJ2InLCAnYScpKQorCisgICAgZGVmIHRlc3RfbWF0Y2hfZ2V0aXRlbShzZWxmKToKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD86KD9QPGExPmEpfCg/UDxiMj5iKSkoP1A8YzM+Yyk/JykKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydhMSddLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYjInXSwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWydjMyddLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1Ob25lJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsxXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMl0sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVszXSwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWydYJ10KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWy0xXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bNF0KKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KEluZGV4RXJyb3IsICdubyBzdWNoIGdyb3VwJyk6CisgICAgICAgICAgICBtWzAsIDFdCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbmRleEVycm9yLCAnbm8gc3VjaCBncm91cCcpOgorICAgICAgICAgICAgbVsoMCwpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW5kZXhFcnJvciwgJ25vIHN1Y2ggZ3JvdXAnKToKKyAgICAgICAgICAgIG1bKDAsIDEpXQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoS2V5RXJyb3IsICdhMicpOgorICAgICAgICAgICAgJ2ExPXthMn0nLmZvcm1hdF9tYXAobSkKKworICAgICAgICBtID0gcGF0Lm1hdGNoKCdhYycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYTEnXSwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bJ2IyJ10sIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobVsnYzMnXSwgJ2MnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhMT17YTF9IGIyPXtiMn0gYzM9e2MzfScuZm9ybWF0X21hcChtKSwgJ2ExPWEgYjI9Tm9uZSBjMz1jJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzBdLCAnYWMnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bMV0sICdhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChtWzJdLCBOb25lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG1bM10sICdjJykKKworICAgICAgICAjIENhbm5vdCBhc3NpZ24uCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIG1bMF0gPSAxCisKKyAgICAgICAgIyBObyBsZW4oKS4KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBsZW4sIG0pCisKICAgICBkZWYgdGVzdF9yZV9mdWxsbWF0Y2goc2VsZik6CiAgICAgICAgICMgSXNzdWUgMTYyMDM6IFByb3Bvc2FsOiBhZGQgcmUuZnVsbG1hdGNoKCkgbWV0aG9kLgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLmZ1bGxtYXRjaChyImEiLCAiYSIpLnNwYW4oKSwgKDAsIDEpKQpAQCAtNDYzLDE5ICs1MjEsMTkgQEAKICAgICAgICAgICAgIHJlLmNvbXBpbGUociIuKj8iKS5mdWxsbWF0Y2goImFiY2QiLCBwb3M9MSwgZW5kcG9zPTMpLnNwYW4oKSwgKDEsIDMpKQogCiAgICAgZGVmIHRlc3RfcmVfZ3JvdXByZWZfZXhpc3RzKHNlbGYpOgotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYSknKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJyhhKScpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnKCcsICdhJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2EnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeKFwoKT8oW14oKV0rKSg/KDEpXCkpJCcsICcoYScpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ14oXCgpPyhbXigpXSspKD8oMSlcKSkkJywgJ2EpJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInXihcKCk/KFteKCldKykoPygxKVwpKSQnLCAnKGEnKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKWJ8ZCkpJCcsICdhYicpLmdyb3VwcygpLAogICAgICAgICAgICAgICAgICAgICAgICAgICgnYScsICdiJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSlifGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2NkJykuZ3JvdXBzKCksCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gocideKD86KGEpfGMpKCg/KDEpfGQpKSQnLCAnY2QnKS5ncm91cHMoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoTm9uZSwgJ2QnKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXig/OihhKXxjKSgoPygxKXxkKSkkJywgJ2EnKS5ncm91cHMoKSwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ14oPzooYSl8YykoKD8oMSl8ZCkpJCcsICdhJykuZ3JvdXBzKCksCiAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhJywgJycpKQogCiAgICAgICAgICMgVGVzdHMgZm9yIGJ1ZyAjMTE3NzgzMTogZXhlcmNpc2UgZ3JvdXBzIG90aGVyIHRoYW4gdGhlIGZpcnN0IGdyb3VwCkBAIC01MDAsNyArNTU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndHdvIGJyYW5jaGVzJywgMTApCiAKICAgICBkZWYgdGVzdF9yZV9ncm91cHJlZl9vdmVyZmxvdyhzZWxmKToKLSAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgJ1xnPCVzPicgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywgJ3h4JywKKyAgICAgICAgc2VsZi5jaGVja1RlbXBsYXRlRXJyb3IoJygpJywgcidcZzwlcz4nICUgc3JlX2NvbnN0YW50cy5NQVhHUk9VUFMsICd4eCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbnZhbGlkIGdyb3VwIHJlZmVyZW5jZScsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1A8YT4pKD8oJWQpKScgJSBzcmVfY29uc3RhbnRzLk1BWEdST1VQUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBncm91cCByZWZlcmVuY2UnLCAxMCkKQEAgLTUzNSwzNyArNTkzLDM3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIiAiKQogCiAgICAgZGVmIHRlc3RfcmVwZWF0X21pbm1heChzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezF9PyQiLCAiYWJjIikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl4oXHcpezEsMn0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxfSQiLCAiYWJjIikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXihcdyl7MX0/JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9JCIsICJhYmMiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeKFx3KXsxLDJ9PyQiLCAiYWJjIikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7M30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsNH0kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezMsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIl4oXHcpezEsM30/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKCJeKFx3KXsxLDR9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfSQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsM30kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDR9JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXszfT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociJeKFx3KXsxLDN9PyQiLCAiYWJjIikuZ3JvdXAoMSksICJjIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIl4oXHcpezEsNH0/JCIsICJhYmMiKS5ncm91cCgxKSwgImMiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiXihcdyl7Myw0fT8kIiwgImFiYyIpLmdyb3VwKDEpLCAiYyIpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezF9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHsxLDJ9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goIl54ezEsMn0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHIiXnh7MX0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHsxLDJ9PyQiLCAieHh4IikpCiAKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MywzfSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSw0fSQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7Myw0fT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezN9PyQiLCAieHh4IikpCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgiXnh7MSwzfT8kIiwgInh4eCIpKQotICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goIl54ezEsNH0/JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHszLDR9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezN9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7MSwzfSQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezMsM30kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDR9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHszfT8kIiwgInh4eCIpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gociJeeHsxLDN9PyQiLCAieHh4IikpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyIl54ezEsNH0/JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7Myw0fT8kIiwgInh4eCIpKQogCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCJeeHt9JCIsICJ4eHgiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCJeeHt9JCIsICJ4e30iKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gociJeeHt9JCIsICJ4eHgiKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHIiXnh7fSQiLCAieHt9IikpCiAKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJ3h7MiwxfScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ21pbiByZXBlYXQgZ3JlYXRlciB0aGFuIG1heCByZXBlYXQnLCAyKQpAQCAtNjM4LDE0ICs2OTYsMTAgQEAKICAgICAgICAgcmUucHVyZ2UoKSAgIyBmb3Igd2FybmluZ3MKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6Q0VGR0hJSktMTU5PUFFSVFZYWSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1xcJWMnICUgYywgYykuZ3JvdXAoKSwgYykKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2goJ1xcJWMnICUgYywgJ2EnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgJ1xcJWMnICUgYykKICAgICAgICAgZm9yIGMgaW4gJ2NlZ2hpamtsbW9wcXl6QUJDRUZHSElKS0xNTk9QUVJUVlhZWic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5mdWxsbWF0Y2goJ1tcXCVjXScgJSBjLCBjKS5ncm91cCgpLCBjKQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaCgnW1xcJWNdJyAlIGMsICdhJykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsICdbXFwlY10nICUgYykKIAogICAgIGRlZiB0ZXN0X3N0cmluZ19ib3VuZGFyaWVzKHNlbGYpOgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTA3MTMKQEAgLTY5MiwxMCArNzQ2LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgImFcblxuYiIpCiAKICAgICBkZWYgdGVzdF9sb29rYWhlYWQoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIihhKD89XHNbXmFdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgiKGEoPz1cc1thYmNdKikpIiwgImEgYmMiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0pKSIsICJhIGIiKS5ncm91cCgxKSwgImEiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEoPz1cc1teYV0qKSkiLCAiYSBiIikuZ3JvdXAoMSksICJhIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyIihhKD89XHNbYWJjXSkpIiwgImEgYiIpLmdyb3VwKDEpLCAiYSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSg/PVxzW2FiY10qKSkiLCAiYSBiYyIpLmdyb3VwKDEpLCAiYSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoYSkoPz1cc1wxKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHNcMSopIiwgImEgYWEiKS5ncm91cCgxKSwgImEiKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKGEpKD89XHMoYWJjfGEpKSIsICJhIGEiKS5ncm91cCgxKSwgImEiKQpAQCAtODQzLDEyICs4OTcsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChiImFiYyIsIGIiQUJDIiwgcmUuSXxyZS5MKS5ncm91cCgwKSwgYiJBQkMiKQogCiAgICAgZGVmIHRlc3Rfbm90X2xpdGVyYWwoc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKSIsICIgYiIpLmdyb3VwKDEpLCAiYiIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKCJccyhbXmFdKikiLCAiIGJiIikuZ3JvdXAoMSksICJiYiIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuc2VhcmNoKHIiXHMoW15hXSkiLCAiIGIiKS5ncm91cCgxKSwgImIiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKFteYV0qKSIsICIgYmIiKS5ncm91cCgxKSwgImJiIikKIAogICAgIGRlZiB0ZXN0X3NlYXJjaF9jb3ZlcmFnZShzZWxmKToKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2goImFccyIsICJhICIpLmdyb3VwKDApLCAiYSAiKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLnNlYXJjaChyIlxzKGIpIiwgIiBiIikuZ3JvdXAoMSksICJiIikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5zZWFyY2gociJhXHMiLCAiYSAiKS5ncm91cCgwKSwgImEgIikKIAogICAgIGRlZiBhc3NlcnRNYXRjaChzZWxmLCBwYXR0ZXJuLCB0ZXh0LCBtYXRjaD1Ob25lLCBzcGFuPU5vbmUsCiAgICAgICAgICAgICAgICAgICAgIG1hdGNoZXI9cmUubWF0Y2gpOgpAQCAtOTk4LDEwICsxMDUyLDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJceCUwMngiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIlx4JTAyeDAiICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkrYiIwIikpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goKHIiXHglMDJ4eiIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKStiInoiKSkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goYnIiXHUxMjM0IiwgYid1MTIzNCcpKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcVTAwMDEyMzQ1IiwgYidVMDAwMTIzNDUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMocmUuZXJyb3IsIHJlLmNvbXBpbGUsIGJyIlx1MTIzNCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHJlLmVycm9yLCByZS5jb21waWxlLCBiciJcVTAwMDEyMzQ1IikKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIlwwIiwgYiJcMDAwIikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDgiLCBiIlwwMDA4IikpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChiciJcMDEiLCBiIlwwMDEiKSkKQEAgLTEwMjMsMTAgKzEwNzUsOCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnhdIiAlIGkpLmVuY29kZSgpLCBieXRlcyhbaV0pKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaCgociJbXHglMDJ4MF0iICUgaSkuZW5jb2RlKCksIGJ5dGVzKFtpXSkpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKChyIltceCUwMnh6XSIgJSBpKS5lbmNvZGUoKSwgYnl0ZXMoW2ldKSkpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcdTEyMzRdIiwgYid1JykpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKGJyIltcVTAwMDEyMzQ1XSIsIGInVScpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1x1MTIzNF0iKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhyZS5lcnJvciwgcmUuY29tcGlsZSwgYnIiW1xVMDAwMTIzNDVdIikKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihiciJbXDU2N10iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHInb2N0YWwgZXNjYXBlIHZhbHVlIFw1Njcgb3V0c2lkZSBvZiAnCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcidyYW5nZSAwLTBvMzc3JywgMSkKQEAgLTEwNTQsOCArMTEwNCw4IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKGEpP2EnLCdhJykubGFzdGluZGV4KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHInKGEpKGIpP2InLCdhYicpLmxhc3RpbmRleCwgMSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJyg/UDxhPmEpKD9QPGI+Yik/YicsJ2FiJykubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIig/UDxhPmEoYikpIiwgImFiIikubGFzdGdyb3VwLCAnYScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2goIigoYSkpIiwgImEiKS5sYXN0aW5kZXgsIDEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUubWF0Y2gociIoP1A8YT5hKGIpKSIsICJhYiIpLmxhc3Rncm91cCwgJ2EnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlLm1hdGNoKHIiKChhKSkiLCAiYSIpLmxhc3RpbmRleCwgMSkKIAogICAgIGRlZiB0ZXN0X2J1Z180MTg2MjYoc2VsZik6CiAgICAgICAgICMgYnVncyA0MTg2MjYgYXQgYWwuIC0tIFRlc3RpbmcgR3JlZyBDaGFwbWFuJ3MgYWRkaXRpb24gb2Ygb3AgY29kZQpAQCAtMTIyNyw3ICsxMjc3LDcgQEAKICAgICAgICAgICAgICdcdWZmMTAnLCAjICdcTntGVUxMV0lEVEggRElHSVQgWkVST30nLCBjYXRlZ29yeSAnTmQnCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIGRlY2ltYWxfZGlnaXRzOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaCgnXlxkJCcsIHgpLmdyb3VwKDApLCB4KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZS5tYXRjaChyJ15cZCQnLCB4KS5ncm91cCgwKSwgeCkKIAogICAgICAgICBub3RfZGVjaW1hbF9kaWdpdHMgPSBbCiAgICAgICAgICAgICAnXHUyMTY1JywgIyAnXE57Uk9NQU4gTlVNRVJBTCBTSVh9JywgY2F0ZWdvcnkgJ05sJwpAQCAtMTIzNiw3ICsxMjg2LDcgQEAKICAgICAgICAgICAgICdcdTMyYjQnLCAjICdcTntDSVJDTEVEIE5VTUJFUiBUSElSVFkgTklORX0nLCBjYXRlZ29yeSAnTm8nCiAgICAgICAgICAgICBdCiAgICAgICAgIGZvciB4IGluIG5vdF9kZWNpbWFsX2RpZ2l0czoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKCdeXGQkJywgeCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShyZS5tYXRjaChyJ15cZCQnLCB4KSkKIAogICAgIGRlZiB0ZXN0X2VtcHR5X2FycmF5KHNlbGYpOgogICAgICAgICAjIFNGIGJ1ZiAxNjQ3NTQxCkBAIC0xMjc4LDYgKzEzMjgsMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKCcoP2l4dSkgJyArIHVwcGVyX2NoYXIsIGxvd2VyX2NoYXIpKQogICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2goJyg/aXh1KSAnICsgbG93ZXJfY2hhciwgdXBwZXJfY2hhcikpCiAKKyAgICAgICAgcCA9IHVwcGVyX2NoYXIgKyAnKD9pKScKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgYXMgd2FybnM6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocCwgbG93ZXJfY2hhcikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICBzdHIod2FybnMud2FybmluZ3NbMF0ubWVzc2FnZSksCisgICAgICAgICAgICAnRmxhZ3Mgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgZXhwcmVzc2lvbiAlcycgJSBwCisgICAgICAgICkKKworICAgICAgICBwID0gdXBwZXJfY2hhciArICcoP2kpJXMnICUgKCcuPycgKiAxMDApCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpIGFzIHdhcm5zOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHAsIGxvd2VyX2NoYXIpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgc3RyKHdhcm5zLndhcm5pbmdzWzBdLm1lc3NhZ2UpLAorICAgICAgICAgICAgJ0ZsYWdzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGV4cHJlc3Npb24gJXMgKHRydW5jYXRlZCknICUgcFs6MjBdCisgICAgICAgICkKKwogICAgIGRlZiB0ZXN0X2RvbGxhcl9tYXRjaGVzX3R3aWNlKHNlbGYpOgogICAgICAgICAiJCBtYXRjaGVzIHRoZSBlbmQgb2Ygc3RyaW5nLCBhbmQganVzdCBiZWZvcmUgdGhlIHRlcm1pbmF0aW5nIFxuIgogICAgICAgICBwYXR0ZXJuID0gcmUuY29tcGlsZSgnJCcpCkBAIC0xMzA4LDI5ICsxMzc0LDI5IEBACiAgICAgICAgIGZvciBmbGFncyBpbiAoMCwgcmUuVU5JQ09ERSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgZmxhZ3MgfCByZS5JR05PUkVDQVNFKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCBmbGFncykKKyAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUocidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaCgnXHhlMCcpKQogICAgICAgICBwYXQgPSByZS5jb21waWxlKCdceGMwJywgcmUuQVNDSUkgfCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnKD9hKVx4YzAnLCByZS5JR05PUkVDQVNFKQogICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXQubWF0Y2goJ1x4ZTAnKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnXHcnLCByZS5BU0NJSSkKKyAgICAgICAgcGF0ID0gcmUuY29tcGlsZShyJ1x3JywgcmUuQVNDSUkpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaCgnXHhlMCcpKQotICAgICAgICBwYXQgPSByZS5jb21waWxlKCcoP2EpXHcnKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInKD9hKVx3JykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKCdceGUwJykpCiAgICAgICAgICMgQnl0ZXMgcGF0dGVybnMKICAgICAgICAgZm9yIGZsYWdzIGluICgwLCByZS5BU0NJSSk6CiAgICAgICAgICAgICBwYXQgPSByZS5jb21waWxlKGInXHhjMCcsIGZsYWdzIHwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChiJ1x4ZTAnKSkKLSAgICAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycsIGZsYWdzKQorICAgICAgICAgICAgcGF0ID0gcmUuY29tcGlsZShicidcdycsIGZsYWdzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGInXHhlMCcpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInXHcnLCByZS5VTklDT0RFKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBiJyg/dSlcdycpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICdcdycsIHJlLlVOSUNPREUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/dSlcdycsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCAnKD9hKVx3JywgcmUuVU5JQ09ERSkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgJyg/YXUpXHcnKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCByZS5jb21waWxlLCBicidcdycsIHJlLlVOSUNPREUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGJyJyg/dSlcdycpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInXHcnLCByZS5VTklDT0RFIHwgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD91KVx3JywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIHInKD9hKVx3JywgcmUuVU5JQ09ERSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgcicoP2F1KVx3JykKIAogICAgIGRlZiB0ZXN0X2xvY2FsZV9mbGFnKHNlbGYpOgogICAgICAgICBpbXBvcnQgbG9jYWxlCkBAIC0xMzYxLDI3ICsxNDI3LDU5IEBACiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnBhdCwgcmUuSUdOT1JFQ0FTRSkKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJ1x3JywgcmUuTE9DQUxFKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ1x3JywgcmUuTE9DQUxFKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHBhdC5tYXRjaChibGV0dGVyKSkKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZShiJyg/TClcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInKD9MKVx3JykKICAgICAgICAgaWYgYmxldHRlcjoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXQubWF0Y2goYmxldHRlcikpCi0gICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidcdycpCisgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYnInXHcnKQogICAgICAgICBpZiBibGV0dGVyOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocGF0Lm1hdGNoKGJsZXR0ZXIpKQogICAgICAgICAjIEluY29tcGF0aWJpbGl0aWVzCi0gICAgICAgIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nLCByZS5jb21waWxlLCAnJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgJyg/TCknKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKLSAgICAgICAgc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcsIHJlLmNvbXBpbGUsIGInKD9MKScsIHJlLkFTQ0lJKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2EpJywgcmUuTE9DQUxFKQotICAgICAgICBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZywgcmUuY29tcGlsZSwgYicoP2FMKScpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcnLCByZS5MT0NBTEUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsICcoP0wpJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicnLCByZS5MT0NBTEUgfCByZS5BU0NJSSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP0wpJywgcmUuQVNDSUkpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHJlLmNvbXBpbGUsIGInKD9hKScsIHJlLkxPQ0FMRSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcmUuY29tcGlsZSwgYicoP2FMKScpCisKKyAgICBkZWYgdGVzdF9zY29wZWRfZmxhZ3Moc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTphKWInLCAnQWInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6YSliJywgJ2FCJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD8taTphKWInLCAnQWInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8taTphKWInLCAnYUInLCByZS5JR05PUkVDQVNFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoP2k6KD8taTphKWIpJywgJ0FiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyZS5tYXRjaChyJyg/aTooPy1pOmEpYiknLCAnYUInKSkKKworICAgICAgICBzZWxmLmFzc2VydFRydWUocmUubWF0Y2gocicoP3g6IGEpIGInLCAnYSBiJykpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHJlLm1hdGNoKHInKD94OiBhKSBiJywgJyBhIGInKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHJlLm1hdGNoKHInKD8teDogYSkgYicsICcgYWInLCByZS5WRVJCT1NFKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUocmUubWF0Y2gocicoPy14OiBhKSBiJywgJ2FiJywgcmUuVkVSQk9TRSkpCisKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/YTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvbiBnbG9iYWwgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2EpKD8tYTpcdyknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBjYW5ub3QgdHVybiBvZmYgZ2xvYmFsIGZsYWcnLCA4KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pLWk6YSknLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdiYWQgaW5saW5lIGZsYWdzOiBmbGFnIHR1cm5lZCBvbiBhbmQgb2ZmJywgNSkKKworICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8tJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy0rJywgJ21pc3NpbmcgZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy16JywgJ3Vua25vd24gZmxhZycsIDMpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pJywgJ21pc3NpbmcgOicsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPy1pKScsICdtaXNzaW5nIDonLCA0KQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD8taSsnLCAnbWlzc2luZyA6JywgNCkKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/LWl6JywgJ3Vua25vd24gZmxhZycsIDQpCisgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2k6JywgJ21pc3NpbmcgKSwgdW50ZXJtaW5hdGVkIHN1YnBhdHRlcm4nLCAwKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9pJywgJ21pc3NpbmcgLSwgOiBvciApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aSsnLCAnbWlzc2luZyAtLCA6IG9yICknLCAzKQorICAgICAgICBzZWxmLmNoZWNrUGF0dGVybkVycm9yKHInKD9peicsICd1bmtub3duIGZsYWcnLCAzKQogCiAgICAgZGVmIHRlc3RfYnVnXzY1MDkoc2VsZik6CiAgICAgICAgICMgUmVwbGFjZW1lbnQgc3RyaW5ncyBvZiBib3RoIHR5cGVzIG11c3QgcGFyc2UgcHJvcGVybHkuCiAgICAgICAgICMgYWxsIHN0cmluZ3MKLSAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKHInYShcdyknKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhdC5zdWIoJ2JcXDEnLCAnYWMnKSwgJ2JjJykKICAgICAgICAgcGF0ID0gcmUuY29tcGlsZSgnYSguKScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YignYlxcMScsICdhXHUxMjM0JyksICdiXHUxMjM0JykKQEAgLTEzODksNyArMTQ4Nyw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGF0LnN1YihsYW1iZGEgbTogJ3N0cicsICdhNScpLCAnc3RyJykKIAogICAgICAgICAjIGFsbCBieXRlcwotICAgICAgICBwYXQgPSByZS5jb21waWxlKGInYShcdyknKQorICAgICAgICBwYXQgPSByZS5jb21waWxlKGJyJ2EoXHcpJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYWMnKSwgYidiYycpCiAgICAgICAgIHBhdCA9IHJlLmNvbXBpbGUoYidhKC4pJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYXQuc3ViKGInYlxcMScsIGInYVx4Q0QnKSwgYidiXHhDRCcpCkBAIC0xNDI3LDEzICsxNTI1LDYgQEAKICAgICAgICAgIyBUZXN0IGJlaGF2aW91ciB3aGVuIG5vdCBnaXZlbiBhIHN0cmluZyBvciBwYXR0ZXJuIGFzIHBhcmFtZXRlcgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHJlLmNvbXBpbGUsIDApCiAKLSAgICBkZWYgdGVzdF9idWdfMTM4OTkoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzEzODk5OiByZSBwYXR0ZXJuIHIiW1xBXSIgc2hvdWxkIHdvcmsgbGlrZSAiQSIgYnV0IG1hdGNoZXMKLSAgICAgICAgIyBub3RoaW5nLiBEaXR0byBCIGFuZCBaLgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmUuZmluZGFsbChyJ1tcQVxCXGJcQ1xaXScsICdBQlxiQ1onKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydBJywgJ0InLCAnXGInLCAnQycsICdaJ10pCi0KICAgICBAYmlnbWVtdGVzdChzaXplPV8yRywgbWVtdXNlPTEpCiAgICAgZGVmIHRlc3RfbGFyZ2Vfc2VhcmNoKHNlbGYsIHNpemUpOgogICAgICAgICAjIElzc3VlICMxMDE4MjogaW5kaWNlcyB3ZXJlIDMyLWJpdC10cnVuY2F0ZWQuCkBAIC0xNTE4LDcgKzE2MDksNyBAQAogICAgICAgICBmb3Igc3RyaW5nIGluIChiJ1thYnJhY2FkYWJyYV0nLCBCKGInW2FicmFjYWRhYnJhXScpLAogICAgICAgICAgICAgICAgICAgICAgICBieXRlYXJyYXkoYidbYWJyYWNhZGFicmFdJyksCiAgICAgICAgICAgICAgICAgICAgICAgIG1lbW9yeXZpZXcoYidbYWJyYWNhZGFicmFdJykpOgotICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyYicoLispKC4qPylcMScsIHN0cmluZykKKyAgICAgICAgICAgIG0gPSByZS5zZWFyY2goYnInKC4rKSguKj8pXDEnLCBzdHJpbmcpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcHIobSksICI8JXMuJXMgb2JqZWN0OyAiCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFuPSgxLCAxMiksIG1hdGNoPWInYWJyYWNhZGFicmEnPiIgJQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodHlwZShtKS5fX21vZHVsZV9fLCB0eXBlKG0pLl9fcXVhbG5hbWVfXykpCkBAIC0xNTQ3LDkgKzE2MzgsOSBAQAogICAgICAgICB3aXRoIGNhcHR1cmVkX3N0ZG91dCgpIGFzIG91dDoKICAgICAgICAgICAgIHJlLmNvbXBpbGUocGF0LCByZS5ERUJVRykKICAgICAgICAgZHVtcCA9ICcnJ1wKLVNVQlBBVFRFUk4gMQorU1VCUEFUVEVSTiAxIDAgMAogICBMSVRFUkFMIDQ2Ci1TVUJQQVRURVJOIE5vbmUKK1NVQlBBVFRFUk4gTm9uZSAwIDAKICAgQlJBTkNICiAgICAgSU4KICAgICAgIExJVEVSQUwgOTkKQEAgLTE1NTcsNyArMTY0OCw3IEBACiAgIE9SCiAgICAgTElURVJBTCAxMTIKICAgICBMSVRFUkFMIDEyMQotU1VCUEFUVEVSTiBOb25lCitTVUJQQVRURVJOIE5vbmUgMCAwCiAgIEdST1VQUkVGX0VYSVNUUyAxCiAgICAgQVQgQVRfRU5ECiAgIEVMU0UKQEAgLTE2NzMsNyArMTc2NCw3IEBACiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP1AnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP3opJywgJ3Vua25vd24gZXh0ZW5zaW9uID96JywgMSkKICAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aXopJywgJ3Vua25vd24gZmxhZycsIDMpCi0gICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoP2knLCAnbWlzc2luZyApJywgMykKKyAgICAgICAgc2VsZi5jaGVja1BhdHRlcm5FcnJvcihyJyg/aScsICdtaXNzaW5nIC0sIDogb3IgKScsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPyNhYmMnLCAnbWlzc2luZyApLCB1bnRlcm1pbmF0ZWQgY29tbWVudCcsIDApCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzwnLCAndW5leHBlY3RlZCBlbmQgb2YgcGF0dGVybicsIDMpCiAgICAgICAgIHNlbGYuY2hlY2tQYXR0ZXJuRXJyb3IocicoPzw+KScsICd1bmtub3duIGV4dGVuc2lvbiA/PD4nLCAxKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weSBiL0xpYi90ZXN0L3Rlc3RfcmVhZGxpbmUucHkKaW5kZXggMmM3M2RmMi4uMDZhOTE0OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9yZWFkbGluZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3JlYWRsaW5lLnB5CkBAIC0xMjEsNiArMTIxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEVSTT0neHRlcm0tMjU2Y29sb3InKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgYicnKQogCisgICAgYXV0b19oaXN0b3J5X3NjcmlwdCA9ICIiIlwKK2ltcG9ydCByZWFkbGluZQorcmVhZGxpbmUuc2V0X2F1dG9faGlzdG9yeSh7fSkKK2lucHV0KCkKK3ByaW50KCJIaXN0b3J5IGxlbmd0aDoiLCByZWFkbGluZS5nZXRfY3VycmVudF9oaXN0b3J5X2xlbmd0aCgpKQorIiIiCisKKyAgICBkZWYgdGVzdF9hdXRvX2hpc3RvcnlfZW5hYmxlZChzZWxmKToKKyAgICAgICAgb3V0cHV0ID0gcnVuX3B0eShzZWxmLmF1dG9faGlzdG9yeV9zY3JpcHQuZm9ybWF0KFRydWUpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDFcclxuIiwgb3V0cHV0KQorCisgICAgZGVmIHRlc3RfYXV0b19oaXN0b3J5X2Rpc2FibGVkKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBydW5fcHR5KHNlbGYuYXV0b19oaXN0b3J5X3NjcmlwdC5mb3JtYXQoRmFsc2UpKQorICAgICAgICBzZWxmLmFzc2VydEluKGIiSGlzdG9yeSBsZW5ndGg6IDBcclxuIiwgb3V0cHV0KQorCiAgICAgZGVmIHRlc3Rfbm9uYXNjaWkoc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHJlYWRsaW5lLmFkZF9oaXN0b3J5KCJceEVCXHhFRiIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5IGIvTGliL3Rlc3QvdGVzdF9yZWdydGVzdC5weQppbmRleCBhZTE4MzI3Li5kNDMxNjA0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JlZ3J0ZXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfcmVncnRlc3QucHkKQEAgLTEsMjEgKzEsNDggQEAKICIiIgogVGVzdHMgb2YgcmVncnRlc3QucHkuCisKK05vdGU6IHRlc3RfcmVncnRlc3QgY2Fubm90IGJlIHJ1biB0d2ljZSBpbiBwYXJhbGxlbC4KICIiIgogCi1pbXBvcnQgYXJncGFyc2UKK2ltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgZmF1bHRoYW5kbGVyCi1pbXBvcnQgZ2V0b3B0CitpbXBvcnQgaW8KIGltcG9ydCBvcy5wYXRoCitpbXBvcnQgcGxhdGZvcm0KK2ltcG9ydCByZQoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKK2ltcG9ydCBzeXNjb25maWcKK2ltcG9ydCB0ZW1wZmlsZQoraW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKLWZyb20gdGVzdCBpbXBvcnQgcmVncnRlc3QsIHN1cHBvcnQKK2Zyb20gdGVzdCBpbXBvcnQgbGlicmVncnRlc3QKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAorCisKK1B5X0RFQlVHID0gaGFzYXR0cihzeXMsICdnZXRvYmplY3RzJykKK1JPT1RfRElSID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksICcuLicsICcuLicpCitST09UX0RJUiA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLm5vcm1wYXRoKFJPT1RfRElSKSkKKworVEVTVF9JTlRFUlJVUFRFRCA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICBmcm9tIHNpZ25hbCBpbXBvcnQgU0lHSU5UCisgICAgdHJ5OgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcmFpc2Vfc2lnbmFsCisgICAgICAgIHJhaXNlX3NpZ25hbChTSUdJTlQpCisgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgU0lHSU5UKQorICAgICIiIikKKwogCiBjbGFzcyBQYXJzZUFyZ3NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0KLSAgICAiIiJUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZy4iIiIKKyAgICAiIiIKKyAgICBUZXN0IHJlZ3J0ZXN0J3MgYXJndW1lbnQgcGFyc2luZywgZnVuY3Rpb24gX3BhcnNlX2FyZ3MoKS4KKyAgICAiIiIKIAogICAgIGRlZiBjaGVja0Vycm9yKHNlbGYsIGFyZ3MsIG1zZyk6CiAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRlcnIoKSBhcyBlcnIsIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgcmVncnRlc3QuX3BhcnNlX2FyZ3MoYXJncykKKyAgICAgICAgICAgIGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKGFyZ3MpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4obXNnLCBlcnIuZ2V0dmFsdWUoKSkKIAogICAgIGRlZiB0ZXN0X2hlbHAoc2VsZik6CkBAIC0yMyw4MiArNTAsODIgQEAKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgogICAgICAgICAgICAgICAgIHdpdGggc3VwcG9ydC5jYXB0dXJlZF9zdGRvdXQoKSBhcyBvdXQsIFwKICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgotICAgICAgICAgICAgICAgICAgICByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICAgICAgbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignUnVuIFB5dGhvbiByZWdyZXNzaW9uIHRlc3RzLicsIG91dC5nZXR2YWx1ZSgpKQogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3MoaGFzYXR0cihmYXVsdGhhbmRsZXIsICdkdW1wX3RyYWNlYmFja19sYXRlcicpLAogICAgICAgICAgICAgICAgICAgICAgICAgICJmYXVsdGhhbmRsZXIuZHVtcF90cmFjZWJhY2tfbGF0ZXIoKSByZXF1aXJlZCIpCiAgICAgZGVmIHRlc3RfdGltZW91dChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdGltZW91dCcsICc0LjInXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy50aW1lb3V0LCA0LjIpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tdGltZW91dCddLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10aW1lb3V0JywgJ2ZvbyddLCAnaW52YWxpZCBmbG9hdCB2YWx1ZScpCiAKICAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS13YWl0J10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXdhaXQnXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLndhaXQpCiAKICAgICBkZWYgdGVzdF9zbGF2ZWFyZ3Moc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXNsYXZlYXJncycsICdbW10sIHt9XSddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1zbGF2ZWFyZ3MnLCAnW1tdLCB7fV0nXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zbGF2ZWFyZ3MsICdbW10sIHt9XScpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tc2xhdmVhcmdzJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3Rfc3RhcnQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1TJywgJy0tc3RhcnQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZm9vJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5zdGFydCwgJ2ZvbycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2Uoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctdiddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXYnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAxKQotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLXZ2diddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDMpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tdmVyYm9zZSddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCi0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXZlcmJvc2UnXSAqIDMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMykKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogCiAgICAgZGVmIHRlc3RfdmVyYm9zZTIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy13JywgJy0tdmVyYm9zZTInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy52ZXJib3NlMikKIAogICAgIGRlZiB0ZXN0X3ZlcmJvc2UzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVycsICctLXZlcmJvc2UzJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudmVyYm9zZTMpCiAKICAgICBkZWYgdGVzdF9xdWlldChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXEnLCAnLS1xdWlldCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnF1aWV0KQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3Nsb3coc2VsZik6Ci0gICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvdyc6CisgICAgICAgIGZvciBvcHQgaW4gJy1vJywgJy0tc2xvd2VzdCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLnByaW50X3Nsb3cpCiAKICAgICBkZWYgdGVzdF9oZWFkZXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLWhlYWRlciddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1oZWFkZXInXSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmhlYWRlcikKIAogICAgIGRlZiB0ZXN0X3JhbmRvbWl6ZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXInLCAnLS1yYW5kb21pemUnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAKICAgICBkZWYgdGVzdF9yYW5kc2VlZChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcmFuZHNlZWQnLCAnMTIzNDUnXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy5yYW5kb21fc2VlZCwgMTIzNDUpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5yYW5kb21pemUpCiAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbJy0tcmFuZHNlZWQnXSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCkBAIC0xMDcsNyArMTM0LDcgQEAKICAgICBkZWYgdGVzdF9mcm9tZmlsZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLWYnLCAnLS1mcm9tZmlsZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmZyb21maWxlLCAnZm9vJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJywgJy1zJ10sICJkb24ndCBnbyB0b2dldGhlciIpCkBAIC0xMTUsNDIgKzE0Miw0MiBAQAogICAgIGRlZiB0ZXN0X2V4Y2x1ZGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy14JywgJy0tZXhjbHVkZSc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmV4Y2x1ZGUpCiAKICAgICBkZWYgdGVzdF9zaW5nbGUoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1zJywgJy0tc2luZ2xlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuc2luZ2xlKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnLWYnLCAnZm9vJ10sICJkb24ndCBnbyB0b2dldGhlciIpCiAKICAgICBkZWYgdGVzdF9tYXRjaChzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLW0nLCAnLS1tYXRjaCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdwYXR0ZXJuJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAncGF0dGVybiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWF0Y2hfdGVzdHMsICdwYXR0ZXJuJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfZmFpbGZhc3Qoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1HJywgJy0tZmFpbGZhc3QnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnLXYnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctdiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5mYWlsZmFzdCkKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICctVyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJy1XJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZhaWxmYXN0KQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJy1HLy0tZmFpbGZhc3QgbmVlZHMgZWl0aGVyIC12IG9yIC1XJykKIAogICAgIGRlZiB0ZXN0X3VzZShzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLXUnLCAnLS11c2UnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnZ3VpLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbmV0d29yayddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX3Jlc291cmNlcywgWydndWknLCAnbmV0d29yayddKQotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2d1aSxub25lLG5ldHdvcmsnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdndWksbm9uZSxuZXR3b3JrJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBbJ25ldHdvcmsnXSkKLSAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGxpc3QocmVncnRlc3QuUkVTT1VSQ0VfTkFNRVMpCisgICAgICAgICAgICAgICAgZXhwZWN0ZWQgPSBsaXN0KGxpYnJlZ3J0ZXN0LlJFU09VUkNFX05BTUVTKQogICAgICAgICAgICAgICAgIGV4cGVjdGVkLnJlbW92ZSgnZ3VpJykKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdhbGwsLWd1aSddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJ2FsbCwtZ3VpJ10pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy51c2VfcmVzb3VyY2VzLCBleHBlY3RlZCkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0LCAnZm9vJ10sICdpbnZhbGlkIHJlc291cmNlJykKQEAgLTE1OCwzMSArMTg1LDMxIEBACiAgICAgZGVmIHRlc3RfbWVtbGltaXQoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1NJywgJy0tbWVtbGltaXQnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNEcnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc0RyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMubWVtbGltaXQsICc0RycpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKIAogICAgIGRlZiB0ZXN0X3Rlc3RkaXIoc2VsZik6Ci0gICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXRlc3RkaXInLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGVzdGRpciwgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS10ZXN0ZGlyJ10sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQogCiAgICAgZGVmIHRlc3RfcnVubGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1MJywgJy0tcnVubGVha3MnOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ydW5sZWFrcykKIAogICAgIGRlZiB0ZXN0X2h1bnRybGVha3Moc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1SJywgJy0taHVudHJsZWFrcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6J10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjonXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc2OiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDYsIDQsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnOjMnXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICc6MyddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuaHVudHJsZWFrcywgKDUsIDMsICdyZWZsb2cudHh0JykpCi0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnNjozOmxlYWtzLmxvZyddKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdCwgJzY6MzpsZWFrcy5sb2cnXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmh1bnRybGVha3MsICg2LCAzLCAnbGVha3MubG9nJykpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHRdLCAnZXhwZWN0ZWQgb25lIGFyZ3VtZW50JykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzYnXSwKQEAgLTE5MywyNCArMjIwLDIzIEBACiAgICAgZGVmIHRlc3RfbXVsdGlwcm9jZXNzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctaicsICctLW11bHRpcHJvY2Vzcyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcyJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMiddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudXNlX21wLCAyKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLVQnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLWwnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKLSAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdCwgJzInLCAnLU0nLCAnNEcnXSwgImRvbid0IGdvIHRvZ2V0aGVyIikKIAogICAgIGRlZiB0ZXN0X2NvdmVyYWdlKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctVCcsICctLWNvdmVyYWdlJzoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9wdD1vcHQpOgotICAgICAgICAgICAgICAgIG5zID0gcmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobnMudHJhY2UpCiAKICAgICBkZWYgdGVzdF9jb3ZlcmRpcihzZWxmKToKICAgICAgICAgZm9yIG9wdCBpbiAnLUQnLCAnLS1jb3ZlcmRpcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICdmb28nXSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmNvdmVyZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN1cHBvcnQuU0FWRURDV0QsICdmb28nKSkKICAgICAgICAgICAgICAgICBzZWxmLmNoZWNrRXJyb3IoW29wdF0sICdleHBlY3RlZCBvbmUgYXJndW1lbnQnKQpAQCAtMjE4LDEzICsyNDQsMTMgQEAKICAgICBkZWYgdGVzdF9ub2NvdmVyZGlyKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctTicsICctLW5vY292ZXJkaXInOgogICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qob3B0PW9wdCk6Ci0gICAgICAgICAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0XSkKKyAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG5zLmNvdmVyZGlyKQogCiAgICAgZGVmIHRlc3RfdGhyZXNob2xkKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctdCcsICctLXRocmVzaG9sZCc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHQsICcxMDAwJ10pCisgICAgICAgICAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbb3B0LCAnMTAwMCddKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudGhyZXNob2xkLCAxMDAwKQogICAgICAgICAgICAgICAgIHNlbGYuY2hlY2tFcnJvcihbb3B0XSwgJ2V4cGVjdGVkIG9uZSBhcmd1bWVudCcpCiAgICAgICAgICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFtvcHQsICdmb28nXSwgJ2ludmFsaWQgaW50IHZhbHVlJykKQEAgLTIzMiwxMyArMjU4LDE2IEBACiAgICAgZGVmIHRlc3Rfbm93aW5kb3dzKHNlbGYpOgogICAgICAgICBmb3Igb3B0IGluICctbicsICctLW5vd2luZG93cyc6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIHdpdGggY29udGV4dGxpYi5yZWRpcmVjdF9zdGRlcnIoaW8uU3RyaW5nSU8oKSkgYXMgc3RkZXJyOgorICAgICAgICAgICAgICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5ub3dpbmRvd3MpCisgICAgICAgICAgICAgICAgZXJyID0gc3RkZXJyLmdldHZhbHVlKCkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCd0aGUgLS1ub3dpbmRvd3MgKC1uKSBvcHRpb24gaXMgZGVwcmVjYXRlZCcsIGVycikKIAogICAgIGRlZiB0ZXN0X2ZvcmV2ZXIoc2VsZik6CiAgICAgICAgIGZvciBvcHQgaW4gJy1GJywgJy0tZm9yZXZlcic6CiAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvcHQ9b3B0KToKLSAgICAgICAgICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFtvcHRdKQorICAgICAgICAgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoW29wdF0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG5zLmZvcmV2ZXIpCiAKIApAQCAtMjQ2LDMyICsyNzUsMzIgQEAKICAgICAgICAgc2VsZi5jaGVja0Vycm9yKFsnLS14eHgnXSwgJ3VzYWdlOicpCiAKICAgICBkZWYgdGVzdF9sb25nX29wdGlvbl9fcGFydGlhbChzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXF1aSddKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMucXVpZXQpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMudmVyYm9zZSwgMCkKIAogICAgIGRlZiB0ZXN0X3R3b19vcHRpb25zKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICctLWV4Y2x1ZGUnXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnLS1leGNsdWRlJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydFRydWUobnMuZXhjbHVkZSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl93aXRoX2VtcHR5X3N0cmluZ192YWx1ZShzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tc3RhcnQnLCAnJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyctLXN0YXJ0JywgJyddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnN0YXJ0LCAnJykKIAogICAgIGRlZiB0ZXN0X2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJ2ZvbyddKQorICAgICAgICBucyA9IGxpYnJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWydmb28nXSkKIAogICAgIGRlZiB0ZXN0X29wdGlvbl9hbmRfYXJnKHNlbGYpOgotICAgICAgICBucyA9IHJlZ3J0ZXN0Ll9wYXJzZV9hcmdzKFsnLS1xdWlldCcsICdmb28nXSkKKyAgICAgICAgbnMgPSBsaWJyZWdydGVzdC5fcGFyc2VfYXJncyhbJy0tcXVpZXQnLCAnZm9vJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShucy5xdWlldCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChucy52ZXJib3NlLCAwKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLmFyZ3MsIFsnZm9vJ10pCiAKICAgICBkZWYgdGVzdF9hcmdfb3B0aW9uX2FyZyhzZWxmKToKLSAgICAgICAgbnMgPSByZWdydGVzdC5fcGFyc2VfYXJncyhbJ3Rlc3RfdW5hcnlvcCcsICctdicsICd0ZXN0X2Jpbm9wJ10pCisgICAgICAgIG5zID0gbGlicmVncnRlc3QuX3BhcnNlX2FyZ3MoWyd0ZXN0X3VuYXJ5b3AnLCAnLXYnLCAndGVzdF9iaW5vcCddKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5zLnZlcmJvc2UsIDEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnMuYXJncywgWyd0ZXN0X3VuYXJ5b3AnLCAndGVzdF9iaW5vcCddKQogCkBAIC0yODAsNiArMzA5LDQ5MSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC0tdW5rbm93bi1vcHRpb24nKQogCiAKK2NsYXNzIEJhc2VUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgVEVTVF9VTklRVUVfSUQgPSAxCisgICAgVEVTVE5BTUVfUFJFRklYID0gJ3Rlc3RfcmVncnRlc3RfJworICAgIFRFU1ROQU1FX1JFR0VYID0gcid0ZXN0X1thLXpBLVowLTlfXSsnCisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHNlbGYudGVzdGRpciA9IG9zLnBhdGgucmVhbHBhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKworICAgICAgICBzZWxmLnRtcHRlc3RkaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQucm10cmVlLCBzZWxmLnRtcHRlc3RkaXIpCisKKyAgICBkZWYgY3JlYXRlX3Rlc3Qoc2VsZiwgbmFtZT1Ob25lLCBjb2RlPScnKToKKyAgICAgICAgaWYgbm90IG5hbWU6CisgICAgICAgICAgICBuYW1lID0gJ25vb3AlcycgJSBCYXNlVGVzdENhc2UuVEVTVF9VTklRVUVfSUQKKyAgICAgICAgICAgIEJhc2VUZXN0Q2FzZS5URVNUX1VOSVFVRV9JRCArPSAxCisKKyAgICAgICAgIyB0ZXN0X3JlZ3J0ZXN0IGNhbm5vdCBiZSBydW4gdHdpY2UgaW4gcGFyYWxsZWwgYmVjYXVzZQorICAgICAgICAjIG9mIHNldFVwKCkgYW5kIGNyZWF0ZV90ZXN0KCkKKyAgICAgICAgbmFtZSA9IHNlbGYuVEVTVE5BTUVfUFJFRklYICsgbmFtZQorICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKHNlbGYudG1wdGVzdGRpciwgbmFtZSArICcucHknKQorCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnVubGluaywgcGF0aCkKKyAgICAgICAgIyBVc2UgJ3gnIG1vZGUgdG8gZW5zdXJlIHRoYXQgd2UgZG8gbm90IG92ZXJyaWRlIGV4aXN0aW5nIHRlc3RzCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3BlbihwYXRoLCAneCcsIGVuY29kaW5nPSd1dGYtOCcpIGFzIGZwOgorICAgICAgICAgICAgICAgIGZwLndyaXRlKGNvZGUpCisgICAgICAgIGV4Y2VwdCBQZXJtaXNzaW9uRXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgaWYgbm90IHN5c2NvbmZpZy5pc19weXRob25fYnVpbGQoKToKKyAgICAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCJjYW5ub3Qgd3JpdGUgJXM6ICVzIiAlIChwYXRoLCBleGMpKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgcmV0dXJuIG5hbWUKKworICAgIGRlZiByZWdleF9zZWFyY2goc2VsZiwgcmVnZXgsIG91dHB1dCk6CisgICAgICAgIG1hdGNoID0gcmUuc2VhcmNoKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgaWYgbm90IG1hdGNoOgorICAgICAgICAgICAgc2VsZi5mYWlsKCIlciBub3QgZm91bmQgaW4gJXIiICUgKHJlZ2V4LCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gbWF0Y2gKKworICAgIGRlZiBjaGVja19saW5lKHNlbGYsIG91dHB1dCwgcmVnZXgpOgorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideJyArIHJlZ2V4LCByZS5NVUxUSUxJTkUpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgob3V0cHV0LCByZWdleCkKKworICAgIGRlZiBwYXJzZV9leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQpOgorICAgICAgICByZWdleCA9IChyJ15bMC05XSs6WzAtOV0rOlswLTldKyBcWyAqWzAtOV0rKD86LyAqWzAtOV0rKT9cXSAoJXMpJworICAgICAgICAgICAgICAgICAlIHNlbGYuVEVTVE5BTUVfUkVHRVgpCisgICAgICAgIHBhcnNlciA9IHJlLmZpbmRpdGVyKHJlZ2V4LCBvdXRwdXQsIHJlLk1VTFRJTElORSkKKyAgICAgICAgcmV0dXJuIGxpc3QobWF0Y2guZ3JvdXAoMSkgZm9yIG1hdGNoIGluIHBhcnNlcikKKworICAgIGRlZiBjaGVja19leGVjdXRlZF90ZXN0cyhzZWxmLCBvdXRwdXQsIHRlc3RzLCBza2lwcGVkPSgpLCBmYWlsZWQ9KCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9KCksIHJhbmRvbWl6ZT1GYWxzZSwgaW50ZXJydXB0ZWQ9RmFsc2UpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHRlc3RzLCBzdHIpOgorICAgICAgICAgICAgdGVzdHMgPSBbdGVzdHNdCisgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2tpcHBlZCwgc3RyKToKKyAgICAgICAgICAgIHNraXBwZWQgPSBbc2tpcHBlZF0KKyAgICAgICAgaWYgaXNpbnN0YW5jZShmYWlsZWQsIHN0cik6CisgICAgICAgICAgICBmYWlsZWQgPSBbZmFpbGVkXQorICAgICAgICBpZiBpc2luc3RhbmNlKG9taXR0ZWQsIHN0cik6CisgICAgICAgICAgICBvbWl0dGVkID0gW29taXR0ZWRdCisgICAgICAgIG50ZXN0ID0gbGVuKHRlc3RzKQorICAgICAgICBuc2tpcHBlZCA9IGxlbihza2lwcGVkKQorICAgICAgICBuZmFpbGVkID0gbGVuKGZhaWxlZCkKKyAgICAgICAgbm9taXR0ZWQgPSBsZW4ob21pdHRlZCkKKworICAgICAgICBleGVjdXRlZCA9IHNlbGYucGFyc2VfZXhlY3V0ZWRfdGVzdHMob3V0cHV0KQorICAgICAgICBpZiByYW5kb21pemU6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNldChleGVjdXRlZCksIHNldCh0ZXN0cyksIG91dHB1dCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhlY3V0ZWQsIHRlc3RzLCBvdXRwdXQpCisKKyAgICAgICAgZGVmIHBsdXJhbChjb3VudCk6CisgICAgICAgICAgICByZXR1cm4gJ3MnIGlmIGNvdW50ICE9IDEgZWxzZSAnJworCisgICAgICAgIGRlZiBsaXN0X3JlZ2V4KGxpbmVfZm9ybWF0LCB0ZXN0cyk6CisgICAgICAgICAgICBjb3VudCA9IGxlbih0ZXN0cykKKyAgICAgICAgICAgIG5hbWVzID0gJyAnLmpvaW4oc29ydGVkKHRlc3RzKSkKKyAgICAgICAgICAgIHJlZ2V4ID0gbGluZV9mb3JtYXQgJSAoY291bnQsIHBsdXJhbChjb3VudCkpCisgICAgICAgICAgICByZWdleCA9IHInJXM6XG4gICAgJXMkJyAlIChyZWdleCwgbmFtZXMpCisgICAgICAgICAgICByZXR1cm4gcmVnZXgKKworICAgICAgICBpZiBza2lwcGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgc2tpcHBlZCcsIHNraXBwZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBmYWlsZWQ6CisgICAgICAgICAgICByZWdleCA9IGxpc3RfcmVnZXgoJyVzIHRlc3QlcyBmYWlsZWQnLCBmYWlsZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBpZiBvbWl0dGVkOgorICAgICAgICAgICAgcmVnZXggPSBsaXN0X3JlZ2V4KCclcyB0ZXN0JXMgb21pdHRlZCcsIG9taXR0ZWQpCisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZWdleCkKKworICAgICAgICBnb29kID0gbnRlc3QgLSBuc2tpcHBlZCAtIG5mYWlsZWQgLSBub21pdHRlZAorICAgICAgICBpZiBnb29kOgorICAgICAgICAgICAgcmVnZXggPSByJyVzIHRlc3QlcyBPS1wuJCcgJSAoZ29vZCwgcGx1cmFsKGdvb2QpKQorICAgICAgICAgICAgaWYgbm90IHNraXBwZWQgYW5kIG5vdCBmYWlsZWQgYW5kIGdvb2QgPiAxOgorICAgICAgICAgICAgICAgIHJlZ2V4ID0gJ0FsbCAlcycgJSByZWdleAorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICAgICAgaWYgaW50ZXJydXB0ZWQ6CisgICAgICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnVGVzdCBzdWl0ZSBpbnRlcnJ1cHRlZCBieSBzaWduYWwgU0lHSU5ULicpCisKKyAgICAgICAgaWYgbmZhaWxlZDoKKyAgICAgICAgICAgIHJlc3VsdCA9ICdGQUlMVVJFJworICAgICAgICBlbGlmIGludGVycnVwdGVkOgorICAgICAgICAgICAgcmVzdWx0ID0gJ0lOVEVSUlVQVEVEJworICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmVzdWx0ID0gJ1NVQ0NFU1MnCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsICdUZXN0cyByZXN1bHQ6ICVzJyAlIHJlc3VsdCkKKworICAgIGRlZiBwYXJzZV9yYW5kb21fc2VlZChzZWxmLCBvdXRwdXQpOgorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVXNpbmcgcmFuZG9tIHNlZWQgKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHJhbmRzZWVkID0gaW50KG1hdGNoLmdyb3VwKDEpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoMCA8PSByYW5kc2VlZCA8PSAxMDAwMDAwMCwgcmFuZHNlZWQpCisgICAgICAgIHJldHVybiByYW5kc2VlZAorCisgICAgZGVmIHJ1bl9jb21tYW5kKHNlbGYsIGFyZ3MsIGlucHV0PU5vbmUsIGV4aXRjb2RlPTAsICoqa3cpOgorICAgICAgICBpZiBub3QgaW5wdXQ6CisgICAgICAgICAgICBpbnB1dCA9ICcnCisgICAgICAgIGlmICdzdGRlcnInIG5vdCBpbiBrdzoKKyAgICAgICAgICAgIGt3WydzdGRlcnInXSA9IHN1YnByb2Nlc3MuUElQRQorICAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5ydW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQ9aW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiprdykKKyAgICAgICAgaWYgcHJvYy5yZXR1cm5jb2RlICE9IGV4aXRjb2RlOgorICAgICAgICAgICAgbXNnID0gKCJDb21tYW5kICVzIGZhaWxlZCB3aXRoIGV4aXQgY29kZSAlc1xuIgorICAgICAgICAgICAgICAgICAgICJcbiIKKyAgICAgICAgICAgICAgICAgICAic3Rkb3V0OlxuIgorICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAiJXNcbiIKKyAgICAgICAgICAgICAgICAgICAiLS0tXG4iCisgICAgICAgICAgICAgICAgICAgJSAoc3RyKGFyZ3MpLCBwcm9jLnJldHVybmNvZGUsIHByb2Muc3Rkb3V0KSkKKyAgICAgICAgICAgIGlmIHByb2Muc3RkZXJyOgorICAgICAgICAgICAgICAgIG1zZyArPSAoIlxuIgorICAgICAgICAgICAgICAgICAgICAgICAgInN0ZGVycjpcbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICIlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICItLS1cbiIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgcHJvYy5zdGRlcnIpCisgICAgICAgICAgICBzZWxmLmZhaWwobXNnKQorICAgICAgICByZXR1cm4gcHJvYworCisKKyAgICBkZWYgcnVuX3B5dGhvbihzZWxmLCBhcmdzLCAqKmt3KToKKyAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1YJywgJ2ZhdWx0aGFuZGxlcicsICctSScsICphcmdzXQorICAgICAgICBwcm9jID0gc2VsZi5ydW5fY29tbWFuZChhcmdzLCAqKmt3KQorICAgICAgICByZXR1cm4gcHJvYy5zdGRvdXQKKworCitjbGFzcyBQcm9ncmFtc1Rlc3RDYXNlKEJhc2VUZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB2YXJpb3VzIHdheXMgdG8gcnVuIHRoZSBQeXRob24gdGVzdCBzdWl0ZS4gVXNlIG9wdGlvbnMgY2xvc2UKKyAgICB0byBvcHRpb25zIHVzZWQgb24gdGhlIGJ1aWxkYm90LgorICAgICIiIgorCisgICAgTlRFU1QgPSA0CisKKyAgICBkZWYgc2V0VXAoc2VsZik6CisgICAgICAgIHN1cGVyKCkuc2V0VXAoKQorCisgICAgICAgICMgQ3JlYXRlIE5URVNUIHRlc3RzIGRvaW5nIG5vdGhpbmcKKyAgICAgICAgc2VsZi50ZXN0cyA9IFtzZWxmLmNyZWF0ZV90ZXN0KCkgZm9yIGluZGV4IGluIHJhbmdlKHNlbGYuTlRFU1QpXQorCisgICAgICAgIHNlbGYucHl0aG9uX2FyZ3MgPSBbJy1XZCcsICctRScsICctYmInXQorICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MgPSBbJy11YWxsJywgJy1yd1cnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdGRpcj0lcycgJSBzZWxmLnRtcHRlc3RkaXJdCisgICAgICAgIGlmIGhhc2F0dHIoZmF1bHRoYW5kbGVyLCAnZHVtcF90cmFjZWJhY2tfbGF0ZXInKToKKyAgICAgICAgICAgIHNlbGYucmVncnRlc3RfYXJncy5leHRlbmQoKCctLXRpbWVvdXQnLCAnMzYwMCcsICctajQnKSkKKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6CisgICAgICAgICAgICBzZWxmLnJlZ3J0ZXN0X2FyZ3MuYXBwZW5kKCctbicpCisKKyAgICBkZWYgY2hlY2tfb3V0cHV0KHNlbGYsIG91dHB1dCk6CisgICAgICAgIHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgc2VsZi50ZXN0cywgcmFuZG9taXplPVRydWUpCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsIGFyZ3MpOgorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl9weXRob24oYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQob3V0cHV0KQorCisgICAgZGVmIHRlc3Rfc2NyaXB0X3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIExpYi90ZXN0L3JlZ3J0ZXN0LnB5CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdyZWdydGVzdC5weScpCisKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgc2NyaXB0LCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X21vZHVsZV90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX3JlZ3J0ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QucmVncnRlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QucmVncnRlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2F1dG90ZXN0KHNlbGYpOgorICAgICAgICAjIC1tIHRlc3QuYXV0b3Rlc3QKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1tJywgJ3Rlc3QuYXV0b3Rlc3QnLAorICAgICAgICAgICAgICAgICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgZGVmIHRlc3RfbW9kdWxlX2Zyb21fdGVzdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBmcm9tIHRlc3QgaW1wb3J0IGF1dG90ZXN0CisgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBhdXRvdGVzdCcKKyAgICAgICAgYXJncyA9IFsqc2VsZi5weXRob25fYXJncywgJy1jJywgY29kZSwKKyAgICAgICAgICAgICAgICAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0c10KKyAgICAgICAgc2VsZi5ydW5fdGVzdHMoYXJncykKKworICAgIGRlZiB0ZXN0X3NjcmlwdF9hdXRvdGVzdChzZWxmKToKKyAgICAgICAgIyBMaWIvdGVzdC9hdXRvdGVzdC5weQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAnYXV0b3Rlc3QucHknKQorICAgICAgICBhcmdzID0gWypzZWxmLnB5dGhvbl9hcmdzLCBzY3JpcHQsICpzZWxmLnJlZ3J0ZXN0X2FyZ3MsICpzZWxmLnRlc3RzXQorICAgICAgICBzZWxmLnJ1bl90ZXN0cyhhcmdzKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3lzY29uZmlnLmlzX3B5dGhvbl9idWlsZCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdydW5fdGVzdHMucHkgc2NyaXB0IGlzIG5vdCBpbnN0YWxsZWQnKQorICAgIGRlZiB0ZXN0X3Rvb2xzX3NjcmlwdF9ydW5fdGVzdHMoc2VsZik6CisgICAgICAgICMgVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKKyAgICAgICAgc2NyaXB0ID0gb3MucGF0aC5qb2luKFJPT1RfRElSLCAnVG9vbHMnLCAnc2NyaXB0cycsICdydW5fdGVzdHMucHknKQorICAgICAgICBhcmdzID0gW3NjcmlwdCwgKnNlbGYucmVncnRlc3RfYXJncywgKnNlbGYudGVzdHNdCisgICAgICAgIHNlbGYucnVuX3Rlc3RzKGFyZ3MpCisKKyAgICBkZWYgcnVuX2JhdGNoKHNlbGYsICphcmdzKToKKyAgICAgICAgcHJvYyA9IHNlbGYucnVuX2NvbW1hbmQoYXJncykKKyAgICAgICAgc2VsZi5jaGVja19vdXRwdXQocHJvYy5zdGRvdXQpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXNjb25maWcuaXNfcHl0aG9uX2J1aWxkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlc3QuYmF0IHNjcmlwdCBpcyBub3QgaW5zdGFsbGVkJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJywgJ1dpbmRvd3Mgb25seScpCisgICAgZGVmIHRlc3RfdG9vbHNfYnVpbGRib3RfdGVzdChzZWxmKToKKyAgICAgICAgIyBUb29sc1xidWlsZGJvdFx0ZXN0LmJhdAorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oUk9PVF9ESVIsICdUb29scycsICdidWlsZGJvdCcsICd0ZXN0LmJhdCcpCisgICAgICAgIHRlc3RfYXJncyA9IFsnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpcl0KKyAgICAgICAgaWYgcGxhdGZvcm0uYXJjaGl0ZWN0dXJlKClbMF0gPT0gJzY0Yml0JzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJy14NjQnKSAgICMgNjQtYml0IGJ1aWxkCisgICAgICAgIGlmIG5vdCBQeV9ERUJVRzoKKyAgICAgICAgICAgIHRlc3RfYXJncy5hcHBlbmQoJytkJykgICAgICMgUmVsZWFzZSBidWlsZCwgdXNlIHB5dGhvbi5leGUKKyAgICAgICAgc2VsZi5ydW5fYmF0Y2goc2NyaXB0LCAqdGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInLCAnV2luZG93cyBvbmx5JykKKyAgICBkZWYgdGVzdF9wY2J1aWxkX3J0KHNlbGYpOgorICAgICAgICAjIFBDYnVpbGRccnQuYmF0CisgICAgICAgIHNjcmlwdCA9IG9zLnBhdGguam9pbihST09UX0RJUiwgcidQQ2J1aWxkXHJ0LmJhdCcpCisgICAgICAgIHJ0X2FyZ3MgPSBbIi1xIl0gICAgICAgICAgICAgIyBRdWljaywgZG9uJ3QgcnVuIHRlc3RzIHR3aWNlCisgICAgICAgIGlmIHBsYXRmb3JtLmFyY2hpdGVjdHVyZSgpWzBdID09ICc2NGJpdCc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLXg2NCcpICAgIyA2NC1iaXQgYnVpbGQKKyAgICAgICAgaWYgUHlfREVCVUc6CisgICAgICAgICAgICBydF9hcmdzLmFwcGVuZCgnLWQnKSAgICAgIyBEZWJ1ZyBidWlsZCwgdXNlIHB5dGhvbl9kLmV4ZQorICAgICAgICBzZWxmLnJ1bl9iYXRjaChzY3JpcHQsICpydF9hcmdzLCAqc2VsZi5yZWdydGVzdF9hcmdzLCAqc2VsZi50ZXN0cykKKworCitjbGFzcyBBcmdzVGVzdENhc2UoQmFzZVRlc3RDYXNlKToKKyAgICAiIiIKKyAgICBUZXN0IGFyZ3VtZW50cyBvZiB0aGUgUHl0aG9uIHRlc3Qgc3VpdGUuCisgICAgIiIiCisKKyAgICBkZWYgcnVuX3Rlc3RzKHNlbGYsICp0ZXN0YXJncywgKiprdyk6CisgICAgICAgIGNtZGFyZ3MgPSBbJy1tJywgJ3Rlc3QnLCAnLS10ZXN0ZGlyPSVzJyAlIHNlbGYudG1wdGVzdGRpciwgKnRlc3RhcmdzXQorICAgICAgICByZXR1cm4gc2VsZi5ydW5fcHl0aG9uKGNtZGFyZ3MsICoqa3cpCisKKyAgICBkZWYgdGVzdF9mYWlsaW5nX3Rlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCBhIGZhaWxpbmcgdGVzdAorICAgICAgICBjb2RlID0gdGV4dHdyYXAuZGVkZW50KCIiIgorICAgICAgICAgICAgaW1wb3J0IHVuaXR0ZXN0CisKKyAgICAgICAgICAgIGNsYXNzIEZhaWxpbmdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9mYWlsaW5nKHNlbGYpOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoImJ1ZyIpCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdF9vayA9IHNlbGYuY3JlYXRlX3Rlc3QoJ29rJykKKyAgICAgICAgdGVzdF9mYWlsaW5nID0gc2VsZi5jcmVhdGVfdGVzdCgnZmFpbGluZycsIGNvZGU9Y29kZSkKKyAgICAgICAgdGVzdHMgPSBbdGVzdF9vaywgdGVzdF9mYWlsaW5nXQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCp0ZXN0cywgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzLCBmYWlsZWQ9dGVzdF9mYWlsaW5nKQorCisgICAgZGVmIHRlc3RfcmVzb3VyY2VzKHNlbGYpOgorICAgICAgICAjIHRlc3QgLXUgY29tbWFuZCBsaW5lIG9wdGlvbgorICAgICAgICB0ZXN0cyA9IHt9CisgICAgICAgIGZvciByZXNvdXJjZSBpbiAoJ2F1ZGlvJywgJ25ldHdvcmsnKToKKyAgICAgICAgICAgIGNvZGUgPSAnZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0XG5zdXBwb3J0LnJlcXVpcmVzKCVyKScgJSByZXNvdXJjZQorICAgICAgICAgICAgdGVzdHNbcmVzb3VyY2VdID0gc2VsZi5jcmVhdGVfdGVzdChyZXNvdXJjZSwgY29kZSkKKyAgICAgICAgdGVzdF9uYW1lcyA9IHNvcnRlZCh0ZXN0cy52YWx1ZXMoKSkKKworICAgICAgICAjIC11IGFsbDogMiByZXNvdXJjZXMgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXUnLCAnYWxsJywgKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzKQorCisgICAgICAgICMgLXUgYXVkaW86IDEgcmVzb3VyY2UgZW5hYmxlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXVhdWRpbycsICp0ZXN0X25hbWVzKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdF9uYW1lcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkPXRlc3RzWyduZXR3b3JrJ10pCisKKyAgICAgICAgIyBubyBvcHRpb246IDAgcmVzb3VyY2VzIGVuYWJsZWQKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoKnRlc3RfbmFtZXMpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0X25hbWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNraXBwZWQ9dGVzdF9uYW1lcykKKworICAgIGRlZiB0ZXN0X3JhbmRvbShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC1yIGFuZCAtLXJhbmRzZWVkIGNvbW1hbmQgbGluZSBvcHRpb24KKyAgICAgICAgY29kZSA9IHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgIGltcG9ydCByYW5kb20KKyAgICAgICAgICAgIHByaW50KCJURVNUUkFORE9NOiAlcyIgJSByYW5kb20ucmFuZGludCgxLCAxMDAwKSkKKyAgICAgICAgIiIiKQorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgncmFuZG9tJywgY29kZSkKKworICAgICAgICAjIGZpcnN0IHJ1biB0byBnZXQgdGhlIG91dHB1dCB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCB0ZXN0KQorICAgICAgICByYW5kc2VlZCA9IHNlbGYucGFyc2VfcmFuZG9tX3NlZWQob3V0cHV0KQorICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tID0gaW50KG1hdGNoLmdyb3VwKDEpKQorCisgICAgICAgICMgdHJ5IHRvIHJlcHJvZHVjZSB3aXRoIHRoZSByYW5kb20gc2VlZAorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLXInLCAnLS1yYW5kc2VlZD0lcycgJSByYW5kc2VlZCwgdGVzdCkKKyAgICAgICAgcmFuZHNlZWQyID0gc2VsZi5wYXJzZV9yYW5kb21fc2VlZChvdXRwdXQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmFuZHNlZWQyLCByYW5kc2VlZCkKKworICAgICAgICBtYXRjaCA9IHNlbGYucmVnZXhfc2VhcmNoKHInVEVTVFJBTkRPTTogKFswLTldKyknLCBvdXRwdXQpCisgICAgICAgIHRlc3RfcmFuZG9tMiA9IGludChtYXRjaC5ncm91cCgxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0ZXN0X3JhbmRvbTIsIHRlc3RfcmFuZG9tKQorCisgICAgZGVmIHRlc3RfZnJvbWZpbGUoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWZyb21maWxlCisgICAgICAgIHRlc3RzID0gW3NlbGYuY3JlYXRlX3Rlc3QoKSBmb3IgaW5kZXggaW4gcmFuZ2UoNSldCisKKyAgICAgICAgIyBXcml0ZSB0aGUgbGlzdCBvZiBmaWxlcyB1c2luZyBhIGZvcm1hdCBzaW1pbGFyIHRvIHJlZ3J0ZXN0IG91dHB1dDoKKyAgICAgICAgIyBbMS8yXSB0ZXN0XzEKKyAgICAgICAgIyBbMi8yXSB0ZXN0XzIKKyAgICAgICAgZmlsZW5hbWUgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIGZpbGVuYW1lKQorCisgICAgICAgICMgdGVzdCBmb3JtYXQgJzA6MDA6MDAgWzIvN10gdGVzdF9vcGNvZGVzIC0tIHRlc3RfZ3JhbW1hciB0b29rIDAgc2VjJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBwcmV2aW91cyA9IE5vbmUKKyAgICAgICAgICAgIGZvciBpbmRleCwgbmFtZSBpbiBlbnVtZXJhdGUodGVzdHMsIDEpOgorICAgICAgICAgICAgICAgIGxpbmUgPSAoIjAwOjAwOiUwMmkgWyVzLyVzXSAlcyIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGluZGV4LCBpbmRleCwgbGVuKHRlc3RzKSwgbmFtZSkpCisgICAgICAgICAgICAgICAgaWYgcHJldmlvdXM6CisgICAgICAgICAgICAgICAgICAgIGxpbmUgKz0gIiAtLSAlcyB0b29rIDAgc2VjIiAlIHByZXZpb3VzCisgICAgICAgICAgICAgICAgcHJpbnQobGluZSwgZmlsZT1mcCkKKyAgICAgICAgICAgICAgICBwcmV2aW91cyA9IG5hbWUKKworICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mcm9tZmlsZScsIGZpbGVuYW1lKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgdGVzdHMpCisKKyAgICAgICAgIyB0ZXN0IGZvcm1hdCAnWzIvN10gdGVzdF9vcGNvZGVzJworICAgICAgICB3aXRoIG9wZW4oZmlsZW5hbWUsICJ3IikgYXMgZnA6CisgICAgICAgICAgICBmb3IgaW5kZXgsIG5hbWUgaW4gZW51bWVyYXRlKHRlc3RzLCAxKToKKyAgICAgICAgICAgICAgICBwcmludCgiWyVzLyVzXSAlcyIgJSAoaW5kZXgsIGxlbih0ZXN0cyksIG5hbWUpLCBmaWxlPWZwKQorCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCctLWZyb21maWxlJywgZmlsZW5hbWUpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0cykKKworICAgICAgICAjIHRlc3QgZm9ybWF0ICd0ZXN0X29wY29kZXMnCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInciKSBhcyBmcDoKKyAgICAgICAgICAgIGZvciBuYW1lIGluIHRlc3RzOgorICAgICAgICAgICAgICAgIHByaW50KG5hbWUsIGZpbGU9ZnApCisKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0tZnJvbWZpbGUnLCBmaWxlbmFtZSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorCisgICAgZGVmIHRlc3RfaW50ZXJydXB0ZWQoc2VsZik6CisgICAgICAgIGNvZGUgPSBURVNUX0lOVEVSUlVQVEVECisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdzaWdpbnQnLCBjb2RlPWNvZGUpCisgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKHRlc3QsIGV4aXRjb2RlPTEpCisgICAgICAgIHNlbGYuY2hlY2tfZXhlY3V0ZWRfdGVzdHMob3V0cHV0LCB0ZXN0LCBvbWl0dGVkPXRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgIGRlZiB0ZXN0X3Nsb3dlc3Qoc2VsZik6CisgICAgICAgICMgdGVzdCAtLXNsb3dlc3QKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpbmRleCBpbiByYW5nZSgzKV0KKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tc2xvd2VzdCIsICp0ZXN0cykKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3RzKQorICAgICAgICByZWdleCA9ICgnMTAgc2xvd2VzdCB0ZXN0czpcbicKKyAgICAgICAgICAgICAgICAgJyg/Oi0gJXM6IC4qXG4peyVzfScKKyAgICAgICAgICAgICAgICAgJSAoc2VsZi5URVNUTkFNRV9SRUdFWCwgbGVuKHRlc3RzKSkpCisgICAgICAgIHNlbGYuY2hlY2tfbGluZShvdXRwdXQsIHJlZ2V4KQorCisgICAgZGVmIHRlc3Rfc2xvd19pbnRlcnJ1cHRlZChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMjUzNzM6IHRlc3QgLS1zbG93ZXN0IHdpdGggYW4gaW50ZXJydXB0ZWQgdGVzdAorICAgICAgICBjb2RlID0gVEVTVF9JTlRFUlJVUFRFRAorICAgICAgICB0ZXN0ID0gc2VsZi5jcmVhdGVfdGVzdCgic2lnaW50IiwgY29kZT1jb2RlKQorCisgICAgICAgIGZvciBtdWx0aXByb2Nlc3NpbmcgaW4gKEZhbHNlLCBUcnVlKToKKyAgICAgICAgICAgIGlmIG11bHRpcHJvY2Vzc2luZzoKKyAgICAgICAgICAgICAgICBhcmdzID0gKCItLXNsb3dlc3QiLCAiLWoyIiwgdGVzdCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXJncyA9ICgiLS1zbG93ZXN0IiwgdGVzdCkKKyAgICAgICAgICAgIG91dHB1dCA9IHNlbGYucnVuX3Rlc3RzKCphcmdzLCBleGl0Y29kZT0xKQorICAgICAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9taXR0ZWQ9dGVzdCwgaW50ZXJydXB0ZWQ9VHJ1ZSkKKworICAgICAgICAgICAgcmVnZXggPSAoJzEwIHNsb3dlc3QgdGVzdHM6XG4nKQorICAgICAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF9jb3ZlcmFnZShzZWxmKToKKyAgICAgICAgIyB0ZXN0IC0tY292ZXJhZ2UKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2NvdmVyYWdlJykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0tY292ZXJhZ2UiLCB0ZXN0KQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdKQorICAgICAgICByZWdleCA9IChyJ2xpbmVzICtjb3YlICttb2R1bGUgK1wocGF0aFwpXG4nCisgICAgICAgICAgICAgICAgIHInKD86ICpbMC05XSsgKlswLTldezEsMn0lICpbXiBdKyArXChbXildK1wpKykrJykKKyAgICAgICAgc2VsZi5jaGVja19saW5lKG91dHB1dCwgcmVnZXgpCisKKyAgICBkZWYgdGVzdF93YWl0KHNlbGYpOgorICAgICAgICAjIHRlc3QgLS13YWl0CisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCd3YWl0JykKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoIi0td2FpdCIsIHRlc3QsIGlucHV0PSdrZXknKQorICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCAnUHJlc3MgYW55IGtleSB0byBjb250aW51ZScpCisKKyAgICBkZWYgdGVzdF9mb3JldmVyKHNlbGYpOgorICAgICAgICAjIHRlc3QgLS1mb3JldmVyCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICBjbGFzcyBGb3JldmVyVGVzdGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICBkZWYgdGVzdF9ydW4oc2VsZik6CisgICAgICAgICAgICAgICAgICAgICMgU3RvcmUgdGhlIHN0YXRlIGluIHRoZSBidWlsdGlucyBtb2R1bGUsIGJlY2F1c2UgdGhlIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgIyBtb2R1bGUgaXMgcmVsb2FkIGF0IGVhY2ggcnVuCisgICAgICAgICAgICAgICAgICAgIGlmICdSVU4nIGluIGJ1aWx0aW5zLl9fZGljdF9fOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddICs9IDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGJ1aWx0aW5zLl9fZGljdF9fWydSVU4nXSA+PSAzOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiZmFpbCBhdCB0aGUgM3JkIHJ1bnMiKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgYnVpbHRpbnMuX19kaWN0X19bJ1JVTiddID0gMQorICAgICAgICAiIiIpCisgICAgICAgIHRlc3QgPSBzZWxmLmNyZWF0ZV90ZXN0KCdmb3JldmVyJywgY29kZT1jb2RlKQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1mb3JldmVyJywgdGVzdCwgZXhpdGNvZGU9MSkKKyAgICAgICAgc2VsZi5jaGVja19leGVjdXRlZF90ZXN0cyhvdXRwdXQsIFt0ZXN0XSozLCBmYWlsZWQ9dGVzdCkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKFB5X0RFQlVHLCAnbmVlZCBhIGRlYnVnIGJ1aWxkJykKKyAgICBkZWYgdGVzdF9odW50cmxlYWtzX2ZkX2xlYWsoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWh1bnRybGVha3MgZm9yIGZpbGUgZGVzY3JpcHRvciBsZWFrCisgICAgICAgIGNvZGUgPSB0ZXh0d3JhcC5kZWRlbnQoIiIiCisgICAgICAgICAgICBpbXBvcnQgb3MKKyAgICAgICAgICAgIGltcG9ydCB1bml0dGVzdAorCisgICAgICAgICAgICAjIElzc3VlICMyNTMwNjogRGlzYWJsZSBwb3B1cHMgYW5kIGxvZ3MgdG8gc3RkZXJyIG9uIGFzc2VydGlvbgorICAgICAgICAgICAgIyBmYWlsdXJlcyBpbiBNU0NSVAorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGltcG9ydCBtc3ZjcnQKKyAgICAgICAgICAgICAgICBtc3ZjcnQuQ3J0U2V0UmVwb3J0TW9kZQorICAgICAgICAgICAgZXhjZXB0IChJbXBvcnRFcnJvciwgQXR0cmlidXRlRXJyb3IpOgorICAgICAgICAgICAgICAgICMgbm8gV2luZG93cywgbyByZWxlYXNlIGJ1aWxkCisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgbSBpbiBbbXN2Y3J0LkNSVF9XQVJOLCBtc3ZjcnQuQ1JUX0VSUk9SLCBtc3ZjcnQuQ1JUX0FTU0VSVF06CisgICAgICAgICAgICAgICAgICAgIG1zdmNydC5DcnRTZXRSZXBvcnRNb2RlKG0sIDApCisKKyAgICAgICAgICAgIGNsYXNzIEZETGVha1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgIGRlZiB0ZXN0X2xlYWsoc2VsZik6CisgICAgICAgICAgICAgICAgICAgIGZkID0gb3Mub3BlbihfX2ZpbGVfXywgb3MuT19SRE9OTFkpCisgICAgICAgICAgICAgICAgICAgICMgYnVnOiBuZXZlciBjbG9lcyB0aGUgZmlsZSBkZXNjcmlwdG9yCisgICAgICAgICIiIikKKyAgICAgICAgdGVzdCA9IHNlbGYuY3JlYXRlX3Rlc3QoJ2h1bnRybGVha3MnLCBjb2RlPWNvZGUpCisKKyAgICAgICAgZmlsZW5hbWUgPSAncmVmbG9nLnR4dCcKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHN1cHBvcnQudW5saW5rLCBmaWxlbmFtZSkKKyAgICAgICAgb3V0cHV0ID0gc2VsZi5ydW5fdGVzdHMoJy0taHVudHJsZWFrcycsICczOjM6JywgdGVzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdGNvZGU9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQorICAgICAgICBzZWxmLmNoZWNrX2V4ZWN1dGVkX3Rlc3RzKG91dHB1dCwgW3Rlc3RdLCBmYWlsZWQ9dGVzdCkKKworICAgICAgICBsaW5lID0gJ2JlZ2lubmluZyA2IHJlcGV0aXRpb25zXG4xMjM0NTZcbi4uLi4uLlxuJworICAgICAgICBzZWxmLmNoZWNrX2xpbmUob3V0cHV0LCByZS5lc2NhcGUobGluZSkpCisKKyAgICAgICAgbGluZTIgPSAnJXMgbGVha2VkIFsxLCAxLCAxXSBmaWxlIGRlc2NyaXB0b3JzLCBzdW09M1xuJyAlIHRlc3QKKyAgICAgICAgc2VsZi5hc3NlcnRJbihsaW5lMiwgb3V0cHV0KQorCisgICAgICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgZnA6CisgICAgICAgICAgICByZWZsb2cgPSBmcC5yZWFkKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obGluZTIsIHJlZmxvZykKKworICAgIGRlZiB0ZXN0X2xpc3RfdGVzdHMoc2VsZik6CisgICAgICAgICMgdGVzdCAtLWxpc3QtdGVzdHMKKyAgICAgICAgdGVzdHMgPSBbc2VsZi5jcmVhdGVfdGVzdCgpIGZvciBpIGluIHJhbmdlKDUpXQorICAgICAgICBvdXRwdXQgPSBzZWxmLnJ1bl90ZXN0cygnLS1saXN0LXRlc3RzJywgKnRlc3RzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG91dHB1dC5yc3RyaXAoKS5zcGxpdGxpbmVzKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdHMpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weSBiL0xpYi90ZXN0L3Rlc3RfcmljaGNtcC5weQppbmRleCAxNTgyY2FhLi41ODcyOWE5IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JpY2hjbXAucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9yaWNoY21wLnB5CkBAIC0yNTMsNiArMjUzLDMxIEBACiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhICE9IGIpCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShhIDwgYikKIAorICAgIGRlZiB0ZXN0X2V4Y2VwdGlvbl9tZXNzYWdlKHNlbGYpOgorICAgICAgICBjbGFzcyBTcGFtOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHRlc3RzID0gWworICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBOb25lLCByIic8JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogTm9uZSA8IDQyLCByIic8JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPiBOb25lLCByIic+JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPCBOb25lLCByIic8JyAuKiBvZiAnc3RyJyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogImZvbyIgPj0gNjY2LCByIic+PScgLiogb2YgJ3N0cicgYW5kICdpbnQnIiksCisgICAgICAgICAgICAobGFtYmRhOiA0MiA8PSBOb25lLCByIic8PScgLiogb2YgJ2ludCcgYW5kICdOb25lVHlwZSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IDQyID49IE5vbmUsIHIiJz49JyAuKiBvZiAnaW50JyBhbmQgJ05vbmVUeXBlJyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBbXSwgciInPCcgLiogb2YgJ2ludCcgYW5kICdsaXN0JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogKCkgPiBbXSwgciInPicgLiogb2YgJ3R1cGxlJyBhbmQgJ2xpc3QnIiksCisgICAgICAgICAgICAobGFtYmRhOiBOb25lID49IE5vbmUsIHIiJz49JyAuKiBvZiAnTm9uZVR5cGUnIGFuZCAnTm9uZVR5cGUnIiksCisgICAgICAgICAgICAobGFtYmRhOiBTcGFtKCkgPCA0MiwgciInPCcgLiogb2YgJ1NwYW0nIGFuZCAnaW50JyIpLAorICAgICAgICAgICAgKGxhbWJkYTogNDIgPCBTcGFtKCksIHIiJzwnIC4qIG9mICdpbnQnIGFuZCAnU3BhbSciKSwKKyAgICAgICAgICAgIChsYW1iZGE6IFNwYW0oKSA8PSBTcGFtKCksIHIiJzw9JyAuKiBvZiAnU3BhbScgYW5kICdTcGFtJyIpLAorICAgICAgICBdCisgICAgICAgIGZvciBpLCB0ZXN0IGluIGVudW1lcmF0ZSh0ZXN0cyk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh0ZXN0PWkpOgorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsIHRlc3RbMV0pOgorICAgICAgICAgICAgICAgICAgICB0ZXN0WzBdKCkKKworCiBjbGFzcyBEaWN0VGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9kaWN0cyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3JsY29tcGxldGVyLnB5CmluZGV4IDg1M2U3NzMuLjBkYzEwODAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfcmxjb21wbGV0ZXIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9ybGNvbXBsZXRlci5weQpAQCAtMSwxMSArMSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdW5pdHRlc3QubW9jaworZnJvbSB1bml0dGVzdC5tb2NrIGltcG9ydCBwYXRjaAogaW1wb3J0IGJ1aWx0aW5zCiBpbXBvcnQgcmxjb21wbGV0ZXIKIAogY2xhc3MgQ29tcGxldGVNZToKICAgICAiIiIgVHJpdmlhbCBjbGFzcyB1c2VkIGluIHRlc3Rpbmcgcmxjb21wbGV0ZXIuQ29tcGxldGVyLiAiIiIKICAgICBzcGFtID0gMQorICAgIF9oYW0gPSAyCiAKIAogY2xhc3MgVGVzdFJsY29tcGxldGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKQEAgLTUyLDE4ICs1MywzMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnc3RyLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHguc3RhcnRzd2l0aCgncycpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ3R1cGxlLmZvb3NwYW1lZ2cnKSwgW10pCisgICAgICAgIGV4cGVjdGVkID0gc29ydGVkKHsnTm9uZS4lcyVzJyAlICh4LCAnKCcgaWYgeCAhPSAnX19kb2NfXycgZWxzZSAnJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluIGRpcihOb25lKX0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5zdGRjb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdOb25lLicpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuXycpLCBleHBlY3RlZCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnN0ZGNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ05vbmUuX18nKSwgZXhwZWN0ZWQpCiAKICAgICAgICAgIyB0ZXN0IHdpdGggYSBjdXN0b21pemVkIG5hbWVzcGFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5zcCcpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsnQ29tcGxldGVNZS5zcGFtJ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZW1lLmVnZycpLCBbXSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ0NvbXBsZXRlTWUuJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1ybygnLCAnQ29tcGxldGVNZS5zcGFtJ10pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl8nKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUuX2hhbSddKQorICAgICAgICBtYXRjaGVzID0gc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLl9fJykKKyAgICAgICAgZm9yIHggaW4gbWF0Y2hlczoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh4LnN0YXJ0c3dpdGgoJ0NvbXBsZXRlTWUuX18nKSwgeCkKKyAgICAgICAgc2VsZi5hc3NlcnRJbignQ29tcGxldGVNZS5fX25hbWVfXycsIG1hdGNoZXMpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NvbXBsZXRlTWUuX19uZXdfXygnLCBtYXRjaGVzKQogCi0gICAgICAgIENvbXBsZXRlTWUubWUgPSBDb21wbGV0ZU1lCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5jb21wbGV0ZXIuYXR0cl9tYXRjaGVzKCdDb21wbGV0ZU1lLm1lLm1lLnNwJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydDb21wbGV0ZU1lLm1lLm1lLnNwYW0nXSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgWydlZ2cue30oJy5mb3JtYXQoeCkgZm9yIHggaW4gZGlyKHN0cikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgeC5zdGFydHN3aXRoKCdzJyldKQorICAgICAgICB3aXRoIHBhdGNoLm9iamVjdChDb21wbGV0ZU1lLCAibWUiLCBDb21wbGV0ZU1lLCBjcmVhdGU9VHJ1ZSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY29tcGxldGVyLmF0dHJfbWF0Y2hlcygnQ29tcGxldGVNZS5tZS5tZS5zcCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ0NvbXBsZXRlTWUubWUubWUuc3BhbSddKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmNvbXBsZXRlci5hdHRyX21hdGNoZXMoJ2VnZy5zJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnZWdnLnt9KCcuZm9ybWF0KHgpIGZvciB4IGluIGRpcihzdHIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB4LnN0YXJ0c3dpdGgoJ3MnKV0pCiAKICAgICBkZWYgdGVzdF9leGNlc3NpdmVfZ2V0YXR0cihzZWxmKToKICAgICAgICAgIyBFbnN1cmUgZ2V0YXR0cigpIGlzIGludm9rZWQgbm8gbW9yZSB0aGFuIG9uY2UgcGVyIGF0dHJpYnV0ZQpAQCAtNzgsMTQgKzkzLDI3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdmLmInLCAwKSwgJ2YuYmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLmNhbGxzLCAxKQogCisgICAgZGVmIHRlc3RfdW5jcmVhdGVkX2F0dHIoc2VsZik6CisgICAgICAgICMgQXR0cmlidXRlcyBsaWtlIHByb3BlcnRpZXMgYW5kIHNsb3RzIHNob3VsZCBiZSBjb21wbGV0ZWQgZXZlbiB3aGVuCisgICAgICAgICMgdGhleSBoYXZlbid0IGJlZW4gY3JlYXRlZCBvbiBhbiBpbnN0YW5jZQorICAgICAgICBjbGFzcyBGb286CisgICAgICAgICAgICBfX3Nsb3RzX18gPSAoImJhciIsKQorICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoZGljdChmPUZvbygpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2YuJywgMCksICdmLmJhcicpCisKICAgICBAdW5pdHRlc3QubW9jay5wYXRjaCgncmxjb21wbGV0ZXIuX3JlYWRsaW5lX2F2YWlsYWJsZScsIEZhbHNlKQogICAgIGRlZiB0ZXN0X2NvbXBsZXRlKHNlbGYpOgogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnJywgMCksICdcdCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhJywgMCksICdhbmQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXMnLCAyKSwgJ2Fzc2VydCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhbicsIDApLCAnYW5kJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2EnLCAwKSwgJ2FuZCAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYScsIDEpLCAnYXMgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FzJywgMiksICdhc3NlcnQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ2FuJywgMCksICdhbmQgJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3BhJywgMCksICdwYXNzJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ0ZhJywgMCksICdGYWxzZScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdlbCcsIDApLCAnZWxpZiAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnZWwnLCAxKSwgJ2Vsc2UnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgndHInLCAwKSwgJ3RyeTonKQogCiAgICAgZGVmIHRlc3RfZHVwbGljYXRlX2dsb2JhbHMoc2VsZik6CiAgICAgICAgIG5hbWVzcGFjZSA9IHsKQEAgLTk4LDkgKzEyNiwxMCBAQAogICAgICAgICBjb21wbGV0ZXIgPSBybGNvbXBsZXRlci5Db21wbGV0ZXIobmFtZXNwYWNlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnRmFsc2UnLCAwKSwgJ0ZhbHNlJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdGYWxzZScsIDEpKSAgIyBObyBkdXBsaWNhdGVzCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAwKSwgJ2Fzc2VydCcpCisgICAgICAgICMgU3BhY2Ugb3IgY29sb24gYWRkZWQgZHVlIHRvIGJlaW5nIGEgcmVzZXJ2ZWQga2V5d29yZAorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnYXNzZXJ0JywgMCksICdhc3NlcnQgJykKICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoY29tcGxldGVyLmNvbXBsZXRlKCdhc3NlcnQnLCAxKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21wbGV0ZXIuY29tcGxldGUoJ3RyeScsIDApLCAndHJ5OicpCiAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKGNvbXBsZXRlci5jb21wbGV0ZSgndHJ5JywgMSkpCiAgICAgICAgICMgTm8gb3BlbmluZyBicmFja2V0ICIoIiBiZWNhdXNlIHdlIG92ZXJyb2RlIHRoZSBidWlsdC1pbiBjbGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBsZXRlci5jb21wbGV0ZSgnbWVtb3J5dmlldycsIDApLCAnbWVtb3J5dmlldycpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5IGIvTGliL3Rlc3QvdGVzdF9yb2JvdHBhcnNlci5weQppbmRleCBkMDEyNjZmLi4wZjY0YmE4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3JvYm90cGFyc2VyLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfcm9ib3RwYXJzZXIucHkKQEAgLTEsOCArMSw4IEBACiBpbXBvcnQgaW8KK2ltcG9ydCBvcwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgdXJsbGliLnJvYm90cGFyc2VyCi1mcm9tIHVybGxpYi5lcnJvciBpbXBvcnQgVVJMRXJyb3IsIEhUVFBFcnJvcgotZnJvbSB1cmxsaWIucmVxdWVzdCBpbXBvcnQgdXJsb3BlbgorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBmcm9tIGh0dHAuc2VydmVyIGltcG9ydCBCYXNlSFRUUFJlcXVlc3RIYW5kbGVyLCBIVFRQU2VydmVyCiB0cnk6CkBAIC0xMSwyNDYgKzExLDIzOSBAQAogICAgIHRocmVhZGluZyA9IE5vbmUKIAogCi1jbGFzcyBSb2JvdFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaW5kZXg9Tm9uZSwgcGFyc2VyPU5vbmUsIHVybD1Ob25lLCBnb29kPU5vbmUsIGFnZW50PU5vbmUpOgotICAgICAgICAjIHdvcmthcm91bmQgdG8gbWFrZSB1bml0dGVzdCBkaXNjb3Zlcnkgd29yayAoc2VlICMxNzA2NikKLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoaW5kZXgsIGludCk6Ci0gICAgICAgICAgICByZXR1cm4KLSAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UuX19pbml0X18oc2VsZikKLSAgICAgICAgaWYgZ29vZDoKLSAgICAgICAgICAgIHNlbGYuc3RyID0gIlJvYm90VGVzdCglZCwgZ29vZCwgJXMpIiAlIChpbmRleCwgdXJsKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5zdHIgPSAiUm9ib3RUZXN0KCVkLCBiYWQsICVzKSIgJSAoaW5kZXgsIHVybCkKLSAgICAgICAgc2VsZi5wYXJzZXIgPSBwYXJzZXIKLSAgICAgICAgc2VsZi51cmwgPSB1cmwKLSAgICAgICAgc2VsZi5nb29kID0gZ29vZAotICAgICAgICBzZWxmLmFnZW50ID0gYWdlbnQKK2NsYXNzIEJhc2VSb2JvdFRlc3Q6CisgICAgcm9ib3RzX3R4dCA9ICcnCisgICAgYWdlbnQgPSAndGVzdF9yb2JvdHBhcnNlcicKKyAgICBnb29kID0gW10KKyAgICBiYWQgPSBbXQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi51cmwsIHR1cGxlKToKLSAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLnVybAotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdXJsID0gc2VsZi51cmwKLSAgICAgICAgICAgIGFnZW50ID0gc2VsZi5hZ2VudAotICAgICAgICBpZiBzZWxmLmdvb2Q6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKGFnZW50LCB1cmwpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHNlbGYucm9ib3RzX3R4dCkucmVhZGxpbmVzKCkKKyAgICAgICAgc2VsZi5wYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKCkKKyAgICAgICAgc2VsZi5wYXJzZXIucGFyc2UobGluZXMpCiAKLSAgICBkZWYgX19zdHJfXyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYuc3RyCisgICAgZGVmIGdldF9hZ2VudF9hbmRfdXJsKHNlbGYsIHVybCk6CisgICAgICAgIGlmIGlzaW5zdGFuY2UodXJsLCB0dXBsZSk6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gdXJsCisgICAgICAgICAgICByZXR1cm4gYWdlbnQsIHVybAorICAgICAgICByZXR1cm4gc2VsZi5hZ2VudCwgdXJsCiAKLXRlc3RzID0gdW5pdHRlc3QuVGVzdFN1aXRlKCkKKyAgICBkZWYgdGVzdF9nb29kX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5nb29kOgorICAgICAgICAgICAgYWdlbnQsIHVybCA9IHNlbGYuZ2V0X2FnZW50X2FuZF91cmwodXJsKQorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodXJsPXVybCwgYWdlbnQ9YWdlbnQpOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLWRlZiBSb2JvdFRlc3QoaW5kZXgsIHJvYm90c190eHQsIGdvb2RfdXJscywgYmFkX3VybHMsCi0gICAgICAgICAgICAgIGFnZW50PSJ0ZXN0X3JvYm90cGFyc2VyIik6CisgICAgZGVmIHRlc3RfYmFkX3VybHMoc2VsZik6CisgICAgICAgIGZvciB1cmwgaW4gc2VsZi5iYWQ6CisgICAgICAgICAgICBhZ2VudCwgdXJsID0gc2VsZi5nZXRfYWdlbnRfYW5kX3VybCh1cmwpCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh1cmw9dXJsLCBhZ2VudD1hZ2VudCk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goYWdlbnQsIHVybCkpCiAKLSAgICBsaW5lcyA9IGlvLlN0cmluZ0lPKHJvYm90c190eHQpLnJlYWRsaW5lcygpCi0gICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigpCi0gICAgcGFyc2VyLnBhcnNlKGxpbmVzKQotICAgIGZvciB1cmwgaW4gZ29vZF91cmxzOgotICAgICAgICB0ZXN0cy5hZGRUZXN0KFJvYm90VGVzdENhc2UoaW5kZXgsIHBhcnNlciwgdXJsLCAxLCBhZ2VudCkpCi0gICAgZm9yIHVybCBpbiBiYWRfdXJsczoKLSAgICAgICAgdGVzdHMuYWRkVGVzdChSb2JvdFRlc3RDYXNlKGluZGV4LCBwYXJzZXIsIHVybCwgMCwgYWdlbnQpKQogCi0jIEV4YW1wbGVzIGZyb20gaHR0cDovL3d3dy5yb2JvdHN0eHQub3JnL3djL25vcm9ib3RzLmh0bWwgKGZldGNoZWQgMjAwMikKLQotIyAxLgotZG9jID0gIiIiCitjbGFzcyBVc2VyQWdlbnRXaWxkY2FyZFRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2N5YmVyd29ybGQvbWFwLyAjIFRoaXMgaXMgYW4gaW5maW5pdGUgdmlydHVhbCBVUkwgc3BhY2UKIERpc2FsbG93OiAvdG1wLyAjIHRoZXNlIHdpbGwgc29vbiBkaXNhcHBlYXIKIERpc2FsbG93OiAvZm9vLmh0bWwKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy8nLCAnL3Rlc3QuaHRtbCddCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvdG1wL3h4eCcsICcvZm9vLmh0bWwnXQogCi1nb29kID0gWycvJywnL3Rlc3QuaHRtbCddCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnL3RtcC94eHgnLCcvZm9vLmh0bWwnXQogCi1Sb2JvdFRlc3QoMSwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMi4KLWRvYyA9ICIiIgorY2xhc3MgQ3Jhd2xEZWxheUFuZEN1c3RvbUFnZW50VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgcm9ib3RzX3R4dCA9ICIiIlwKICMgcm9ib3RzLnR4dCBmb3IgaHR0cDovL3d3dy5leGFtcGxlLmNvbS8KIAogVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQogRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8gIyBUaGlzIGlzIGFuIGluZmluaXRlIHZpcnR1YWwgVVJMIHNwYWNlCiAKICMgQ3liZXJtYXBwZXIga25vd3Mgd2hlcmUgdG8gZ28uCiBVc2VyLWFnZW50OiBjeWJlcm1hcHBlcgogRGlzYWxsb3c6CisgICAgIiIiCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJywgKCdjeWJlcm1hcHBlcicsICcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQorICAgIGJhZCA9IFsnL2N5YmVyd29ybGQvbWFwL2luZGV4Lmh0bWwnXQogCi0iIiIKIAotZ29vZCA9IFsnLycsJy90ZXN0Lmh0bWwnLCgnY3liZXJtYXBwZXInLCcvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcpXQotYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCddCi0KLVJvYm90VGVzdCgyLCBkb2MsIGdvb2QsIGJhZCkKLQotIyAzLgotZG9jID0gIiIiCitjbGFzcyBSZWplY3RBbGxSb2JvdHNUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogIyBnbyBhd2F5CiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogLwotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFtdCisgICAgYmFkID0gWycvY3liZXJ3b3JsZC9tYXAvaW5kZXguaHRtbCcsICcvJywgJy90bXAvJ10KIAotZ29vZCA9IFtdCi1iYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJywnLycsJy90bXAvJ10KIAotUm9ib3RUZXN0KDMsIGRvYywgZ29vZCwgYmFkKQorY2xhc3MgQmFzZVJlcXVlc3RSYXRlVGVzdChCYXNlUm9ib3RUZXN0KToKIAotIyBFeGFtcGxlcyBmcm9tIGh0dHA6Ly93d3cucm9ib3RzdHh0Lm9yZy93Yy9ub3JvYm90cy1yZmMuaHRtbCAoZmV0Y2hlZCAyMDAyKQorICAgIGRlZiB0ZXN0X3JlcXVlc3RfcmF0ZShzZWxmKToKKyAgICAgICAgZm9yIHVybCBpbiBzZWxmLmdvb2QgKyBzZWxmLmJhZDoKKyAgICAgICAgICAgIGFnZW50LCB1cmwgPSBzZWxmLmdldF9hZ2VudF9hbmRfdXJsKHVybCkKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHVybD11cmwsIGFnZW50PWFnZW50KToKKyAgICAgICAgICAgICAgICBpZiBzZWxmLmNyYXdsX2RlbGF5OgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoYWdlbnQpLCBzZWxmLmNyYXdsX2RlbGF5CisgICAgICAgICAgICAgICAgICAgICkKKyAgICAgICAgICAgICAgICBpZiBzZWxmLnJlcXVlc3RfcmF0ZToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlcXVlc3RfcmF0ZShhZ2VudCkucmVxdWVzdHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5yZXF1ZXN0cworICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoYWdlbnQpLnNlY29uZHMsCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJlcXVlc3RfcmF0ZS5zZWNvbmRzCisgICAgICAgICAgICAgICAgICAgICkKIAotIyA0LgotZG9jID0gIiIiCisKK2NsYXNzIENyYXdsRGVsYXlBbmRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJlcXVlc3RSYXRlVGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBmaWd0cmVlCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5LzMwCiBEaXNhbGxvdzogL3RtcAogRGlzYWxsb3c6IC9hJTNjZC5odG1sCiBEaXNhbGxvdzogL2ElMmZiLmh0bWwKIERpc2FsbG93OiAvJTdlam9lL2luZGV4Lmh0bWwKLSIiIgorICAgICIiIgorICAgIGFnZW50ID0gJ2ZpZ3RyZWUnCisgICAgcmVxdWVzdF9yYXRlID0gbmFtZWR0dXBsZSgncmVxX3JhdGUnLCAncmVxdWVzdHMgc2Vjb25kcycpKDksIDMwKQorICAgIGNyYXdsX2RlbGF5ID0gMworICAgIGdvb2QgPSBbKCdmaWd0cmVlJywgJy9mb28uaHRtbCcpXQorICAgIGJhZCA9IFsnL3RtcCcsICcvdG1wLmh0bWwnLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLAorICAgICAgICAgICAnL2ElMmZiLmh0bWwnLCAnL35qb2UvaW5kZXguaHRtbCddCiAKLWdvb2QgPSBbXSAjIFhGQUlMICcvYS9iLmh0bWwnCi1iYWQgPSBbJy90bXAnLCcvdG1wLmh0bWwnLCcvdG1wL2EuaHRtbCcsCi0gICAgICAgJy9hJTNjZC5odG1sJywnL2ElM0NkLmh0bWwnLCcvYSUyZmIuaHRtbCcsCi0gICAgICAgJy9+am9lL2luZGV4Lmh0bWwnCi0gICAgICAgXQogCi1Sb2JvdFRlc3QoNCwgZG9jLCBnb29kLCBiYWQsICdmaWd0cmVlJykKLVJvYm90VGVzdCg1LCBkb2MsIGdvb2QsIGJhZCwgJ0ZpZ1RyZWUgUm9ib3QgbGlid3d3LXBlcmwvNS4wNCcpCitjbGFzcyBEaWZmZXJlbnRBZ2VudFRlc3QoQ3Jhd2xEZWxheUFuZFJlcXVlc3RSYXRlVGVzdCk6CisgICAgYWdlbnQgPSAnRmlnVHJlZSBSb2JvdCBsaWJ3d3ctcGVybC81LjA0JworICAgICMgdGhlc2UgYXJlIG5vdCBhY3R1YWxseSB0ZXN0ZWQsIGJ1dCB3ZSBzdGlsbCBuZWVkIHRvIHBhcnNlIGl0CisgICAgIyBpbiBvcmRlciB0byBhY2NvbW1vZGF0ZSB0aGUgaW5wdXQgcGFyYW1ldGVycworICAgIHJlcXVlc3RfcmF0ZSA9IE5vbmUKKyAgICBjcmF3bF9kZWxheSA9IE5vbmUKIAotIyA2LgotZG9jID0gIiIiCisKK2NsYXNzIEludmFsaWRSZXF1ZXN0UmF0ZVRlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3RtcC8KIERpc2FsbG93OiAvYSUzQ2QuaHRtbAogRGlzYWxsb3c6IC9hL2IuaHRtbAogRGlzYWxsb3c6IC8lN2Vqb2UvaW5kZXguaHRtbAotIiIiCitDcmF3bC1kZWxheTogMworUmVxdWVzdC1yYXRlOiA5L2JhbmFuYQorICAgICIiIgorICAgIGdvb2QgPSBbJy90bXAnXQorICAgIGJhZCA9IFsnL3RtcC8nLCAnL3RtcC9hLmh0bWwnLCAnL2ElM2NkLmh0bWwnLCAnL2ElM0NkLmh0bWwnLCAnL2EvYi5odG1sJywKKyAgICAgICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCisgICAgY3Jhd2xfZGVsYXkgPSAzCiAKLWdvb2QgPSBbJy90bXAnLF0gIyBYRkFJTDogJy9hJTJmYi5odG1sJwotYmFkID0gWycvdG1wLycsJy90bXAvYS5odG1sJywKLSAgICAgICAnL2ElM2NkLmh0bWwnLCcvYSUzQ2QuaHRtbCcsIi9hL2IuaHRtbCIsCi0gICAgICAgJy8lN0Vqb2UvaW5kZXguaHRtbCddCiAKLVJvYm90VGVzdCg2LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQotCi0jIDcuCi1kb2MgPSAiIiIKK2NsYXNzIEludmFsaWRDcmF3bERlbGF5VGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBGcm9tIGJ1ZyByZXBvcnQgIzUyMzA0MQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLUFnZW50OiAqCiBEaXNhbGxvdzogLy4KLSIiIgorQ3Jhd2wtZGVsYXk6IHBlYXJzCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Zvby5odG1sJ10KKyAgICAjIGJ1ZyByZXBvcnQgc2F5cyAiLyIgc2hvdWxkIGJlIGRlbmllZCwgYnV0IHRoYXQgaXMgbm90IGluIHRoZSBSRkMKKyAgICBiYWQgPSBbXQogCi1nb29kID0gWycvZm9vLmh0bWwnXQotYmFkID0gW10gIyBCdWcgcmVwb3J0IHNheXMgIi8iIHNob3VsZCBiZSBkZW5pZWQsIGJ1dCB0aGF0IGlzIG5vdCBpbiB0aGUgUkZDCiAKLVJvYm90VGVzdCg3LCBkb2MsIGdvb2QsIGJhZCkKLQotIyBGcm9tIEdvb2dsZTogaHR0cDovL3d3dy5nb29nbGUuY29tL3N1cHBvcnQvd2VibWFzdGVycy9iaW4vYW5zd2VyLnB5P2hsPWVuJmFuc3dlcj00MDM2NAotCi0jIDguCi1kb2MgPSAiIiIKK2NsYXNzIEFub3RoZXJJbnZhbGlkUmVxdWVzdFJhdGVUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIGFsc28gdGVzdCB0aGF0IEFsbG93IGFuZCBEaWFzYWxsb3cgd29ya3Mgd2VsbCB3aXRoIGVhY2ggb3RoZXIKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgorUmVxdWVzdC1yYXRlOiB3aGFsZS9iYW5hbmEKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLWdvb2QgPSBbJy9mb2xkZXIxL215ZmlsZS5odG1sJ10KLWJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKLVJvYm90VGVzdCg4LCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLSMgOS4gIFRoaXMgZmlsZSBpcyBpbmNvcnJlY3QgYmVjYXVzZSAiR29vZ2xlYm90IiBpcyBhIHN1YnN0cmluZyBvZgotIyAgICAgIkdvb2dsZWJvdC1Nb2JpbGUiLCBzbyB0ZXN0IDEwIHdvcmtzIGp1c3QgbGlrZSB0ZXN0IDkuCi1kb2MgPSAiIiIKK2NsYXNzIFVzZXJBZ2VudE9yZGVyaW5nVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyB0aGUgb3JkZXIgb2YgVXNlci1hZ2VudCBzaG91bGQgYmUgY29ycmVjdC4gbm90ZQorICAgICMgdGhhdCB0aGlzIGZpbGUgaXMgaW5jb3JyZWN0IGJlY2F1c2UgIkdvb2dsZWJvdCIgaXMgYQorICAgICMgc3Vic3RyaW5nIG9mICJHb29nbGVib3QtTW9iaWxlIgorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiBHb29nbGVib3QKIERpc2FsbG93OiAvCiAKIFVzZXItYWdlbnQ6IEdvb2dsZWJvdC1Nb2JpbGUKIEFsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDksIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iR29vZ2xlYm90IikKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDEwLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdC1Nb2JpbGUiKQotCi0jIDExLiAgR2V0IHRoZSBvcmRlciBjb3JyZWN0LgotZG9jID0gIiIiCi1Vc2VyLWFnZW50OiBHb29nbGVib3QtTW9iaWxlCi1BbGxvdzogLwotCi1Vc2VyLWFnZW50OiBHb29nbGVib3QKLURpc2FsbG93OiAvCi0iIiIKLQotZ29vZCA9IFtdCi1iYWQgPSBbJy9zb21ldGhpbmcuanBnJ10KLQotUm9ib3RUZXN0KDExLCBkb2MsIGdvb2QsIGJhZCwgYWdlbnQ9Ikdvb2dsZWJvdCIpCi0KLWdvb2QgPSBbJy9zb21ldGhpbmcuanBnJ10KLWJhZCA9IFtdCi0KLVJvYm90VGVzdCgxMiwgZG9jLCBnb29kLCBiYWQsIGFnZW50PSJHb29nbGVib3QtTW9iaWxlIikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdHb29nbGVib3QnCisgICAgYmFkID0gWycvc29tZXRoaW5nLmpwZyddCiAKIAotIyAxMy4gIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcgaW4gIzguICBZb3UgbmVlZCB0byBzcGVjaWZ5IHRoZQotIyAgICAgIFVSTHMgZnJvbSBtb3JlIHNwZWNpZmljIHRvIG1vcmUgZ2VuZXJhbC4KLWRvYyA9ICIiIgorY2xhc3MgVXNlckFnZW50R29vZ2xlTW9iaWxlVGVzdChVc2VyQWdlbnRPcmRlcmluZ1Rlc3QpOgorICAgIGFnZW50ID0gJ0dvb2dsZWJvdC1Nb2JpbGUnCisKKworY2xhc3MgR29vZ2xlVVJMT3JkZXJpbmdUZXN0KEJhc2VSb2JvdFRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIEdvb2dsZSBhbHNvIGdvdCB0aGUgb3JkZXIgd3JvbmcuIFlvdSBuZWVkCisgICAgIyB0byBzcGVjaWZ5IHRoZSBVUkxzIGZyb20gbW9yZSBzcGVjaWZpYyB0byBtb3JlIGdlbmVyYWwKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogR29vZ2xlYm90CiBBbGxvdzogL2ZvbGRlcjEvbXlmaWxlLmh0bWwKIERpc2FsbG93OiAvZm9sZGVyMS8KLSIiIgotCi1nb29kID0gWycvZm9sZGVyMS9teWZpbGUuaHRtbCddCi1iYWQgPSBbJy9mb2xkZXIxL2Fub3RoZXJmaWxlLmh0bWwnXQotCi1Sb2JvdFRlc3QoMTMsIGRvYywgZ29vZCwgYmFkLCBhZ2VudD0iZ29vZ2xlYm90IikKKyAgICAiIiIKKyAgICBhZ2VudCA9ICdnb29nbGVib3QnCisgICAgZ29vZCA9IFsnL2ZvbGRlcjEvbXlmaWxlLmh0bWwnXQorICAgIGJhZCA9IFsnL2ZvbGRlcjEvYW5vdGhlcmZpbGUuaHRtbCddCiAKIAotIyAxNC4gRm9yIGlzc3VlICM2MzI1IChxdWVyeSBzdHJpbmcgc3VwcG9ydCkKLWRvYyA9ICIiIgorY2xhc3MgRGlzYWxsb3dRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgc2VlIGlzc3VlICM2MzI1IGZvciBkZXRhaWxzCisgICAgcm9ib3RzX3R4dCA9ICIiIlwKIFVzZXItYWdlbnQ6ICoKIERpc2FsbG93OiAvc29tZS9wYXRoP25hbWU9dmFsdWUKLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGgnXQorICAgIGJhZCA9IFsnL3NvbWUvcGF0aD9uYW1lPXZhbHVlJ10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGg/bmFtZT12YWx1ZSddCiAKLVJvYm90VGVzdCgxNCwgZG9jLCBnb29kLCBiYWQpCi0KLSMgMTUuIEZvciBpc3N1ZSAjNDEwOCAob2JleSBmaXJzdCAqIGVudHJ5KQotZG9jID0gIiIiCitjbGFzcyBVc2VGaXJzdFVzZXJBZ2VudFdpbGRjYXJkVGVzdChCYXNlUm9ib3RUZXN0LCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIyBvYmV5IGZpcnN0ICogZW50cnkgKCM0MTA4KQorICAgIHJvYm90c190eHQgPSAiIiJcCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL3NvbWUvcGF0aAogCiBVc2VyLWFnZW50OiAqCiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aAotIiIiCisgICAgIiIiCisgICAgZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCisgICAgYmFkID0gWycvc29tZS9wYXRoJ10KIAotZ29vZCA9IFsnL2Fub3RoZXIvcGF0aCddCi1iYWQgPSBbJy9zb21lL3BhdGgnXQogCi1Sb2JvdFRlc3QoMTUsIGRvYywgZ29vZCwgYmFkKQotCi0jIDE2LiBFbXB0eSBxdWVyeSAoaXNzdWUgIzE3NDAzKS4gTm9ybWFsaXppbmcgdGhlIHVybCBmaXJzdC4KLWRvYyA9ICIiIgorY2xhc3MgRW1wdHlRdWVyeVN0cmluZ1Rlc3QoQmFzZVJvYm90VGVzdCwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICMgbm9ybWFsaXplIHRoZSBVUkwgZmlyc3QgKCMxNzQwMykKKyAgICByb2JvdHNfdHh0ID0gIiIiXAogVXNlci1hZ2VudDogKgogQWxsb3c6IC9zb21lL3BhdGg/CiBEaXNhbGxvdzogL2Fub3RoZXIvcGF0aD8KLSIiIgorICAgICIiIgorICAgIGdvb2QgPSBbJy9zb21lL3BhdGg/J10KKyAgICBiYWQgPSBbJy9hbm90aGVyL3BhdGg/J10KIAotZ29vZCA9IFsnL3NvbWUvcGF0aD8nXQotYmFkID0gWycvYW5vdGhlci9wYXRoPyddCiAKLVJvYm90VGVzdCgxNiwgZG9jLCBnb29kLCBiYWQpCitjbGFzcyBEZWZhdWx0RW50cnlUZXN0KEJhc2VSZXF1ZXN0UmF0ZVRlc3QsIHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICByb2JvdHNfdHh0ID0gIiIiXAorVXNlci1hZ2VudDogKgorQ3Jhd2wtZGVsYXk6IDEKK1JlcXVlc3QtcmF0ZTogMy8xNQorRGlzYWxsb3c6IC9jeWJlcndvcmxkL21hcC8KKyAgICAiIiIKKyAgICByZXF1ZXN0X3JhdGUgPSBuYW1lZHR1cGxlKCdyZXFfcmF0ZScsICdyZXF1ZXN0cyBzZWNvbmRzJykoMywgMTUpCisgICAgY3Jhd2xfZGVsYXkgPSAxCisgICAgZ29vZCA9IFsnLycsICcvdGVzdC5odG1sJ10KKyAgICBiYWQgPSBbJy9jeWJlcndvcmxkL21hcC9pbmRleC5odG1sJ10KIAogCiBjbGFzcyBSb2JvdEhhbmRsZXIoQmFzZUhUVFBSZXF1ZXN0SGFuZGxlcik6CkBAIC0yODMsOSArMjc2LDcgQEAKICAgICAgICAgc2VsZi50LmpvaW4oKQogICAgICAgICBzZWxmLnNlcnZlci5zZXJ2ZXJfY2xvc2UoKQogCi0gICAgZGVmIHJ1blRlc3Qoc2VsZik6Ci0gICAgICAgIHNlbGYudGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZSgpCi0KKyAgICBAc3VwcG9ydC5yZWFwX3RocmVhZHMKICAgICBkZWYgdGVzdFBhc3N3b3JkUHJvdGVjdGVkU2l0ZShzZWxmKToKICAgICAgICAgYWRkciA9IHNlbGYuc2VydmVyLnNlcnZlcl9hZGRyZXNzCiAgICAgICAgIHVybCA9ICdodHRwOi8vJyArIHN1cHBvcnQuSE9TVCArICc6JyArIHN0cihhZGRyWzFdKQpAQCAtMjk1LDI2ICsyODYsNDcgQEAKICAgICAgICAgcGFyc2VyLnJlYWQoKQogICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5jYW5fZmV0Y2goIioiLCByb2JvdHNfdXJsKSkKIAotICAgIGRlZiBfX3N0cl9fKHNlbGYpOgotICAgICAgICByZXR1cm4gJyVzJyAlIHNlbGYuX19jbGFzc19fLl9fbmFtZV9fCiAKIGNsYXNzIE5ldHdvcmtUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLSAgICBAdW5pdHRlc3Quc2tpcCgnZG9lcyBub3QgaGFuZGxlIHRoZSBnemlwIGVuY29kaW5nIGRlbGl2ZXJlZCBieSBweWRvdG9yZycpCi0gICAgZGVmIHRlc3RQeXRob25Pcmcoc2VsZik6Ci0gICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCd3d3cucHl0aG9uLm9yZycpOgotICAgICAgICAgICAgcGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcigKLSAgICAgICAgICAgICAgICAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKQotICAgICAgICAgICAgcGFyc2VyLnJlYWQoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKAotICAgICAgICAgICAgICAgIHBhcnNlci5jYW5fZmV0Y2goIioiLCAiaHR0cDovL3d3dy5weXRob24ub3JnL3JvYm90cy50eHQiKSkKKyAgICBiYXNlX3VybCA9ICdodHRwOi8vd3d3LnB5dGhvbnRlc3QubmV0LycKKyAgICByb2JvdHNfdHh0ID0gJ3t9ZWxzZXdoZXJlL3JvYm90cy50eHQnLmZvcm1hdChiYXNlX3VybCkKIAotZGVmIGxvYWRfdGVzdHMobG9hZGVyLCBzdWl0ZSwgcGF0dGVybik6Ci0gICAgc3VpdGUgPSB1bml0dGVzdC5tYWtlU3VpdGUoTmV0d29ya1Rlc3RDYXNlKQotICAgIHN1aXRlLmFkZFRlc3QodGVzdHMpCi0gICAgc3VpdGUuYWRkVGVzdChQYXNzd29yZFByb3RlY3RlZFNpdGVUZXN0Q2FzZSgpKQotICAgIHJldHVybiBzdWl0ZQorICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CisgICAgICAgIHN1cHBvcnQucmVxdWlyZXMoJ25ldHdvcmsnKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KGNscy5iYXNlX3VybCk6CisgICAgICAgICAgICBjbHMucGFyc2VyID0gdXJsbGliLnJvYm90cGFyc2VyLlJvYm90RmlsZVBhcnNlcihjbHMucm9ib3RzX3R4dCkKKyAgICAgICAgICAgIGNscy5wYXJzZXIucmVhZCgpCisKKyAgICBkZWYgdXJsKHNlbGYsIHBhdGgpOgorICAgICAgICByZXR1cm4gJ3t9e317fScuZm9ybWF0KAorICAgICAgICAgICAgc2VsZi5iYXNlX3VybCwgcGF0aCwgJy8nIGlmIG5vdCBvcy5wYXRoLnNwbGl0ZXh0KHBhdGgpWzFdIGVsc2UgJycKKyAgICAgICAgKQorCisgICAgZGVmIHRlc3RfYmFzaWMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuZGlzYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmFsbG93X2FsbCkKKyAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKHNlbGYucGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY3Jhd2xfZGVsYXkoJyonKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5yZXF1ZXN0X3JhdGUoJyonKSkKKworICAgIGRlZiB0ZXN0X2Nhbl9mZXRjaChzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnKicsIHNlbGYudXJsKCdlbHNld2hlcmUnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYuYmFzZV91cmwpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYucGFyc2VyLmNhbl9mZXRjaCgnTnV0Y2gnLCBzZWxmLnVybCgnYnJpYW4nKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VsZi5wYXJzZXIuY2FuX2ZldGNoKCdOdXRjaCcsIHNlbGYudXJsKCd3ZWJzdGF0cycpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLnVybCgnd2Vic3RhdHMnKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnBhcnNlci5jYW5fZmV0Y2goJyonLCBzZWxmLmJhc2VfdXJsKSkKKworICAgIGRlZiB0ZXN0X3JlYWRfNDA0KHNlbGYpOgorICAgICAgICBwYXJzZXIgPSB1cmxsaWIucm9ib3RwYXJzZXIuUm9ib3RGaWxlUGFyc2VyKHNlbGYudXJsKCdpLXJvYm90LnR4dCcpKQorICAgICAgICBwYXJzZXIucmVhZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShwYXJzZXIuYWxsb3dfYWxsKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHBhcnNlci5kaXNhbGxvd19hbGwpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocGFyc2VyLm10aW1lKCksIDApCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHBhcnNlci5jcmF3bF9kZWxheSgnKicpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShwYXJzZXIucmVxdWVzdF9yYXRlKCcqJykpCiAKIGlmIF9fbmFtZV9fPT0nX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weSBiL0xpYi90ZXN0L3Rlc3RfcnVucHkucHkKaW5kZXggZGI1NWRiNy4uMDJiNGQ2MiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9ydW5weS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3J1bnB5LnB5CkBAIC01NzcsMTMgKzU3NywxNCBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5fZGVsX3BrZywgcGtnX2RpcikKICAgICAgICAgZm9yIGRlcHRoIGluIHJhbmdlKDIsIG1heF9kZXB0aCsxKToKICAgICAgICAgICAgIHNlbGYuX2FkZF9yZWxhdGl2ZV9tb2R1bGVzKHBrZ19kaXIsICIiLCBkZXB0aCkKLSAgICAgICAgZm9yIGZpbmRlciwgbW9kX25hbWUsIGlzcGtnIGluIHBrZ3V0aWwud2Fsa19wYWNrYWdlcyhbcGtnX2Rpcl0pOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGZpbmRlciwKKyAgICAgICAgZm9yIG1vZHVsZWluZm8gaW4gcGtndXRpbC53YWxrX3BhY2thZ2VzKFtwa2dfZGlyXSk6CisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UobW9kdWxlaW5mbywgcGtndXRpbC5Nb2R1bGVJbmZvKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKG1vZHVsZWluZm8ubW9kdWxlX2ZpbmRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBvcnRsaWIubWFjaGluZXJ5LkZpbGVGaW5kZXIpCi0gICAgICAgICAgICBpZiBpc3BrZzoKLSAgICAgICAgICAgICAgICBleHBlY3RlZF9wYWNrYWdlcy5yZW1vdmUobW9kX25hbWUpCisgICAgICAgICAgICBpZiBtb2R1bGVpbmZvLmlzcGtnOgorICAgICAgICAgICAgICAgIGV4cGVjdGVkX3BhY2thZ2VzLnJlbW92ZShtb2R1bGVpbmZvLm5hbWUpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZF9uYW1lKQorICAgICAgICAgICAgICAgIGV4cGVjdGVkX21vZHVsZXMucmVtb3ZlKG1vZHVsZWluZm8ubmFtZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfcGFja2FnZXMpLCAwLCBleHBlY3RlZF9wYWNrYWdlcykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZXhwZWN0ZWRfbW9kdWxlcyksIDAsIGV4cGVjdGVkX21vZHVsZXMpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkgYi9MaWIvdGVzdC90ZXN0X3NjaGVkLnB5CmluZGV4IGZlOGU3ODUuLmY4NmY1OTkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2NoZWQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zY2hlZC5weQpAQCAtMiw3ICsyLDYgQEAKIGltcG9ydCBzY2hlZAogaW1wb3J0IHRpbWUKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiB0cnk6CiAgICAgaW1wb3J0IHRocmVhZGluZwogZXhjZXB0IEltcG9ydEVycm9yOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5IGIvTGliL3Rlc3QvdGVzdF9zZWNyZXRzLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjNjVjZjAKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3NlY3JldHMucHkKQEAgLTAsMCArMSwxMjMgQEAKKyIiIlRlc3QgdGhlIHNlY3JldHMgbW9kdWxlLgorCitBcyBtb3N0IG9mIHRoZSBmdW5jdGlvbnMgaW4gc2VjcmV0cyBhcmUgdGhpbiB3cmFwcGVycyBhcm91bmQgZnVuY3Rpb25zCitkZWZpbmVkIGVsc2V3aGVyZSwgd2UgZG9uJ3QgbmVlZCB0byB0ZXN0IHRoZW0gZXhoYXVzdGl2ZWx5LgorIiIiCisKKworaW1wb3J0IHNlY3JldHMKK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN0cmluZworCisKKyMgPT09IFVuaXQgdGVzdHMgPT09CisKK2NsYXNzIENvbXBhcmVfRGlnZXN0X1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHNlY3JldHMuY29tcGFyZV9kaWdlc3QgZnVuY3Rpb24uIiIiCisKKyAgICBkZWYgdGVzdF9lcXVhbChzZWxmKToKKyAgICAgICAgIyBUZXN0IGNvbXBhcmVfZGlnZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aCBlcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBmb3IgcyBpbiAoImEiLCAiYmNkIiwgInh5ejEyMyIpOgorICAgICAgICAgICAgYSA9IHMqMTAwCisgICAgICAgICAgICBiID0gcyoxMDAKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoYS5lbmNvZGUoJ3V0Zi04JyksIGIuZW5jb2RlKCd1dGYtOCcpKSkKKworICAgIGRlZiB0ZXN0X3VuZXF1YWwoc2VsZik6CisgICAgICAgICMgVGVzdCBjb21wYXJlX2RpZ2VzdCBmdW5jdGlvbmFsaXR5IHdpdGggdW5lcXVhbCAoYnl0ZS90ZXh0KSBzdHJpbmdzLgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmNkIikpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc2VjcmV0cy5jb21wYXJlX2RpZ2VzdChiImFiYyIsIGIiYWJjZCIpKQorICAgICAgICBmb3IgcyBpbiAoIngiLCAibW4iLCAiYTFiMmMzIik6CisgICAgICAgICAgICBhID0gcyoxMDAgKyAicSIKKyAgICAgICAgICAgIGIgPSBzKjEwMCArICJrIgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEsIGIpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWNyZXRzLmNvbXBhcmVfZGlnZXN0KGEuZW5jb2RlKCd1dGYtOCcpLCBiLmVuY29kZSgndXRmLTgnKSkpCisKKyAgICBkZWYgdGVzdF9iYWRfdHlwZXMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGNvbXBhcmVfZGlnZXN0IHJhaXNlcyB3aXRoIG1peGVkIHR5cGVzLgorICAgICAgICBhID0gJ2FiY2RlJworICAgICAgICBiID0gYS5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoYSwgc3RyKQorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShiLCBieXRlcykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWNyZXRzLmNvbXBhcmVfZGlnZXN0LCBhLCBiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsIHNlY3JldHMuY29tcGFyZV9kaWdlc3QsIGIsIGEpCisKKyAgICBkZWYgdGVzdF9ib29sKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBjb21wYXJlX2RpZ2VzdCByZXR1cm5zIGEgYm9vbC4KKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJhYmMiKSwgYm9vbCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMuY29tcGFyZV9kaWdlc3QoImFiYyIsICJ4eXoiKSwgYm9vbCkKKworCitjbGFzcyBSYW5kb21fVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIlRlc3Qgd3JhcHBlcnMgYXJvdW5kIFN5c3RlbVJhbmRvbSBtZXRob2RzLiIiIgorCisgICAgZGVmIHRlc3RfcmFuZGJpdHMoc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYml0cy4KKyAgICAgICAgZXJybXNnID0gInJhbmRiaXRzKCVkKSByZXR1cm5lZCAlZCIKKyAgICAgICAgZm9yIG51bWJpdHMgaW4gKDMsIDEyLCAzMCk6CisgICAgICAgICAgICBmb3IgaSBpbiByYW5nZSg2KToKKyAgICAgICAgICAgICAgICBuID0gc2VjcmV0cy5yYW5kYml0cyhudW1iaXRzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgwIDw9IG4gPCAyKipudW1iaXRzLCBlcnJtc2cgJSAobnVtYml0cywgbikpCisKKyAgICBkZWYgdGVzdF9jaG9pY2Uoc2VsZik6CisgICAgICAgICMgVGVzdCBjaG9pY2UuCisgICAgICAgIGl0ZW1zID0gWzEsIDIsIDQsIDgsIDE2LCAzMiwgNjRdCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWNyZXRzLmNob2ljZShpdGVtcykgaW4gaXRlbXMpCisKKyAgICBkZWYgdGVzdF9yYW5kYmVsb3coc2VsZik6CisgICAgICAgICMgVGVzdCByYW5kYmVsb3cuCisgICAgICAgIGZvciBpIGluIHJhbmdlKDIsIDEwKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oc2VjcmV0cy5yYW5kYmVsb3coaSksIHJhbmdlKGkpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzZWNyZXRzLnJhbmRiZWxvdywgMCkKKworCitjbGFzcyBUb2tlbl9UZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiVGVzdCB0b2tlbiBmdW5jdGlvbnMuIiIiCisKKyAgICBkZWYgdGVzdF90b2tlbl9kZWZhdWx0cyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgdG9rZW5fKiBmdW5jdGlvbnMgaGFuZGxlIGRlZmF1bHQgc2l6ZSBjb3JyZWN0bHkuCisgICAgICAgIGZvciBmdW5jIGluIChzZWNyZXRzLnRva2VuX2J5dGVzLCBzZWNyZXRzLnRva2VuX2hleCwKKyAgICAgICAgICAgICAgICAgICAgIHNlY3JldHMudG9rZW5fdXJsc2FmZSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChmdW5jPWZ1bmMpOgorICAgICAgICAgICAgICAgIG5hbWUgPSBmdW5jLl9fbmFtZV9fCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBmdW5jKCkKKyAgICAgICAgICAgICAgICBleGNlcHQgVHlwZUVycm9yOgorICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIiVzIGNhbm5vdCBiZSBjYWxsZWQgd2l0aCBubyBhcmd1bWVudCIgJSBuYW1lKQorICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgZnVuYyhOb25lKQorICAgICAgICAgICAgICAgIGV4Y2VwdCBUeXBlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiJXMgY2Fubm90IGJlIGNhbGxlZCB3aXRoIE5vbmUiICUgbmFtZSkKKyAgICAgICAgc2l6ZSA9IHNlY3JldHMuREVGQVVMVF9FTlRST1BZCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5fYnl0ZXMoTm9uZSkpLCBzaXplKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihzZWNyZXRzLnRva2VuX2hleChOb25lKSksIDIqc2l6ZSkKKworICAgIGRlZiB0ZXN0X3Rva2VuX2J5dGVzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdG9rZW5fYnl0ZXMuCisgICAgICAgIGZvciBuIGluICgxLCA4LCAxNywgMTAwKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG49bik6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHNlY3JldHMudG9rZW5fYnl0ZXMobiksIGJ5dGVzKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHNlY3JldHMudG9rZW5fYnl0ZXMobikpLCBuKQorCisgICAgZGVmIHRlc3RfdG9rZW5faGV4KHNlbGYpOgorICAgICAgICAjIFRlc3QgdG9rZW5faGV4LgorICAgICAgICBmb3IgbiBpbiAoMSwgMTIsIDI1LCA5MCk6CisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuPW4pOgorICAgICAgICAgICAgICAgIHMgPSBzZWNyZXRzLnRva2VuX2hleChuKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzLCBzdHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4ocyksIDIqbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKGMgaW4gc3RyaW5nLmhleGRpZ2l0cyBmb3IgYyBpbiBzKSkKKworICAgIGRlZiB0ZXN0X3Rva2VuX3VybHNhZmUoc2VsZik6CisgICAgICAgICMgVGVzdCB0b2tlbl91cmxzYWZlLgorICAgICAgICBsZWdhbCA9IHN0cmluZy5hc2NpaV9sZXR0ZXJzICsgc3RyaW5nLmRpZ2l0cyArICctXycKKyAgICAgICAgZm9yIG4gaW4gKDEsIDExLCAyOCwgNzYpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qobj1uKToKKyAgICAgICAgICAgICAgICBzID0gc2VjcmV0cy50b2tlbl91cmxzYWZlKG4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHMsIHN0cikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoYWxsKGMgaW4gbGVnYWwgZm9yIGMgaW4gcykpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKaW5kZXggNzU5NDMwMy4uYWZhNmU3ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zZXQucHkKQEAgLTYsMTAgKzYsMTEgQEAKIGltcG9ydCBjb3B5CiBpbXBvcnQgcGlja2xlCiBmcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzaHVmZmxlCi1pbXBvcnQgc3lzCiBpbXBvcnQgd2FybmluZ3MKIGltcG9ydCBjb2xsZWN0aW9ucwogaW1wb3J0IGNvbGxlY3Rpb25zLmFiYworaW1wb3J0IGl0ZXJ0b29scworaW1wb3J0IHN0cmluZwogCiBjbGFzcyBQYXNzVGhydShFeGNlcHRpb24pOgogICAgIHBhc3MKQEAgLTcyOSw2ICs3MzAsMjggQEAKICAgICAgICAgICAgIGFkZGhhc2h2YWx1ZShoYXNoKGZyb3plbnNldChbZSBmb3IgZSwgbSBpbiBlbGVtbWFza3MgaWYgbSZpXSkpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoYXNodmFsdWVzKSwgMioqbikKIAorICAgICAgICBkZWYgbGV0dGVyX3JhbmdlKG4pOgorICAgICAgICAgICAgcmV0dXJuIHN0cmluZy5hc2NpaV9sZXR0ZXJzWzpuXQorCisgICAgICAgIGRlZiB6Zl9yYW5nZShuKToKKyAgICAgICAgICAgICMgaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvU2V0LXRoZW9yZXRpY19kZWZpbml0aW9uX29mX25hdHVyYWxfbnVtYmVycworICAgICAgICAgICAgbnVtcyA9IFtmcm96ZW5zZXQoKV0KKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKG4tMSk6CisgICAgICAgICAgICAgICAgbnVtID0gZnJvemVuc2V0KG51bXMpCisgICAgICAgICAgICAgICAgbnVtcy5hcHBlbmQobnVtKQorICAgICAgICAgICAgcmV0dXJuIG51bXNbOm5dCisKKyAgICAgICAgZGVmIHBvd2Vyc2V0KHMpOgorICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHMpKzEpOgorICAgICAgICAgICAgICAgIHlpZWxkIGZyb20gbWFwKGZyb3plbnNldCwgaXRlcnRvb2xzLmNvbWJpbmF0aW9ucyhzLCBpKSkKKworICAgICAgICBmb3IgbiBpbiByYW5nZSgxOCk6CisgICAgICAgICAgICB0ID0gMiAqKiBuCisgICAgICAgICAgICBtYXNrID0gdCAtIDEKKyAgICAgICAgICAgIGZvciBudW1zIGluIChyYW5nZSwgbGV0dGVyX3JhbmdlLCB6Zl9yYW5nZSk6CisgICAgICAgICAgICAgICAgdSA9IGxlbih7aCAmIG1hc2sgZm9yIGggaW4gbWFwKGhhc2gsIHBvd2Vyc2V0KG51bXMobikpKX0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKDQqdSwgdCkKKwogY2xhc3MgRnJvemVuU2V0U3ViY2xhc3MoZnJvemVuc2V0KToKICAgICBwYXNzCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkgYi9MaWIvdGVzdC90ZXN0X3NobGV4LnB5CmluZGV4IDU1YjUzM2QuLjM5MzZjOTcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2hsZXgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaGxleC5weQpAQCAtMTczLDE2ICsxNzMsMTE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczogJXMgIT0gJXMiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYuZGF0YVtpXVswXSwgbCwgc2VsZi5kYXRhW2ldWzE6XSkpCiAKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0QW1wZXJzYW5kQW5kUGlwZShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIG9mICYsIHwiIiIKKyAgICAgICAgIyBDb3VsZCB0YWtlIHRoZXNlIGZvcm1zOiAmJiwgJiwgfCYsIDsmLCA7OyYKKyAgICAgICAgIyBvZiBjb3Vyc2UsIHRoZSBzYW1lIGFwcGxpZXMgdG8gfCBhbmQgfHwKKyAgICAgICAgIyB0aGVzZSBzaG91bGQgYWxsIHBhcnNlIHRvIHRoZSBzYW1lIG91dHB1dAorICAgICAgICBmb3IgZGVsaW1pdGVyIGluICgnJiYnLCAnJicsICd8JicsICc7JicsICc7OyYnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnfHwnLCAnfCcsICcmfCcsICc7fCcsICc7O3wnKToKKyAgICAgICAgICAgIHNyYyA9IFsnZWNobyBoaSAlcyBlY2hvIGJ5ZScgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklc2VjaG8gYnllJyAlIGRlbGltaXRlcl0KKyAgICAgICAgICAgIHJlZiA9IFsnZWNobycsICdoaScsIGRlbGltaXRlciwgJ2VjaG8nLCAnYnllJ10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0U2VtaWNvbG9uKHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgOyIiIgorICAgICAgICAjIENvdWxkIHRha2UgdGhlc2UgZm9ybXM6IDssIDs7LCA7JiwgOzsmCisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJzsnLCAnOzsnLCAnOyYnLCAnOzsmJyk6CisgICAgICAgICAgICBzcmMgPSBbJ2VjaG8gaGkgJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXMgZWNobyBieWUnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNlY2hvIGJ5ZScgJSBkZWxpbWl0ZXJdCisgICAgICAgICAgICByZWYgPSBbJ2VjaG8nLCAnaGknLCBkZWxpbWl0ZXIsICdlY2hvJywgJ2J5ZSddCisgICAgICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgICAgIHMgPSBzaGxleC5zaGxleChzcywgcHVuY3R1YXRpb25fY2hhcnM9VHJ1ZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBsaXN0KHMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdFJlZGlyZWN0KHNlbGYpOgorICAgICAgICAiIiJUZXN0IGhhbmRsaW5nIG9mIHN5bnRheCBzcGxpdHRpbmcgb2YgPiIiIgorICAgICAgICAjIG9mIGNvdXJzZSwgdGhlIHNhbWUgYXBwbGllcyB0byA8LCB8CisgICAgICAgICMgdGhlc2Ugc2hvdWxkIGFsbCBwYXJzZSB0byB0aGUgc2FtZSBvdXRwdXQKKyAgICAgICAgZm9yIGRlbGltaXRlciBpbiAoJzwnLCAnfCcpOgorICAgICAgICAgICAgc3JjID0gWydlY2hvIGhpICVzIG91dCcgJSBkZWxpbWl0ZXIsCisgICAgICAgICAgICAgICAgICAgJ2VjaG8gaGklcyBvdXQnICUgZGVsaW1pdGVyLAorICAgICAgICAgICAgICAgICAgICdlY2hvIGhpJXNvdXQnICUgZGVsaW1pdGVyXQorICAgICAgICAgICAgcmVmID0gWydlY2hvJywgJ2hpJywgZGVsaW1pdGVyLCAnb3V0J10KKyAgICAgICAgICAgIGZvciBzcyBpbiBzcmM6CisgICAgICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IGxpc3QocykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFN5bnRheFNwbGl0UGFyZW4oc2VsZik6CisgICAgICAgICIiIlRlc3QgaGFuZGxpbmcgb2Ygc3ludGF4IHNwbGl0dGluZyBvZiAoKSIiIgorICAgICAgICAjIHRoZXNlIHNob3VsZCBhbGwgcGFyc2UgdG8gdGhlIHNhbWUgb3V0cHV0CisgICAgICAgIHNyYyA9IFsnKCBlY2hvIGhpICknLAorICAgICAgICAgICAgICAgJyhlY2hvIGhpKSddCisgICAgICAgIHJlZiA9IFsnKCcsICdlY2hvJywgJ2hpJywgJyknXQorICAgICAgICBmb3Igc3MgaW4gc3JjOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KHNzLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZWYsIHJlc3VsdCwgIldoaWxlIHNwbGl0dGluZyAnJXMnIiAlIHNzKQorCisgICAgZGVmIHRlc3RTeW50YXhTcGxpdEN1c3RvbShzZWxmKToKKyAgICAgICAgIiIiVGVzdCBoYW5kbGluZyBvZiBzeW50YXggc3BsaXR0aW5nIHdpdGggY3VzdG9tIGNoYXJzIiIiCisgICAgICAgIHJlZiA9IFsnfi9hJywgJyYnLCAnJicsICdiLWMnLCAnLS1jb2xvcj1hdXRvJywgJ3x8JywgJ2QnLCAnKi5weT8nXQorICAgICAgICBzcyA9ICJ+L2EgJiYgYi1jIC0tY29sb3I9YXV0byB8fCBkICoucHk/IgorICAgICAgICBzID0gc2hsZXguc2hsZXgoc3MsIHB1bmN0dWF0aW9uX2NoYXJzPSJ8IikKKyAgICAgICAgcmVzdWx0ID0gbGlzdChzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlZiwgcmVzdWx0LCAiV2hpbGUgc3BsaXR0aW5nICclcyciICUgc3MpCisKKyAgICBkZWYgdGVzdFRva2VuVHlwZXMoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB0b2tlbnMgYXJlIHNwbGl0IHdpdGggdHlwZXMgYXMgZXhwZWN0ZWQuIiIiCisgICAgICAgIGZvciBzb3VyY2UsIGV4cGVjdGVkIGluICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdhICYmIGIgfHwgYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywgJ2EnKSwgKCcmJicsICdjJyksICgnYicsICdhJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCd8fCcsICdjJyksICgnYycsICdhJyldKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICk6CisgICAgICAgICAgICBzID0gc2hsZXguc2hsZXgoc291cmNlLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQorICAgICAgICAgICAgb2JzZXJ2ZWQgPSBbXQorICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICB0ID0gcy5nZXRfdG9rZW4oKQorICAgICAgICAgICAgICAgIGlmIHQgPT0gcy5lb2Y6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgaWYgdFswXSBpbiBzLnB1bmN0dWF0aW9uX2NoYXJzOgorICAgICAgICAgICAgICAgICAgICB0dCA9ICdjJworICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHR0ID0gJ2EnCisgICAgICAgICAgICAgICAgb2JzZXJ2ZWQuYXBwZW5kKCh0LCB0dCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9ic2VydmVkLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0UHVuY3R1YXRpb25JbldvcmRDaGFycyhzZWxmKToKKyAgICAgICAgIiIiVGVzdCB0aGF0IGFueSBwdW5jdHVhdGlvbiBjaGFycyBhcmUgcmVtb3ZlZCBmcm9tIHdvcmRjaGFycyIiIgorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2FfYl9fYycsIHB1bmN0dWF0aW9uX2NoYXJzPSdfJykKKyAgICAgICAgc2VsZi5hc3NlcnROb3RJbignXycsIHMud29yZGNoYXJzKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIFsnYScsICdfJywgJ2InLCAnX18nLCAnYyddKQorCisgICAgZGVmIHRlc3RQdW5jdHVhdGlvbldpdGhXaGl0ZXNwYWNlU3BsaXQoc2VsZik6CisgICAgICAgICIiIlRlc3QgdGhhdCB3aXRoIHdoaXRlc3BhY2Vfc3BsaXQsIGJlaGF2aW91ciBpcyBhcyBleHBlY3RlZCIiIgorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2EgICYmIGIgIHx8ICBjJywgcHVuY3R1YXRpb25fY2hhcnM9JyYnKQorICAgICAgICAjIHdoaXRlc3BhY2Vfc3BsaXQgaXMgRmFsc2UsIHNvIHNwbGl0dGluZyB3aWxsIGJlIGJhc2VkIG9uCisgICAgICAgICMgcHVuY3R1YXRpb25fY2hhcnMKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHMpLCBbJ2EnLCAnJiYnLCAnYicsICd8JywgJ3wnLCAnYyddKQorICAgICAgICBzID0gc2hsZXguc2hsZXgoJ2EgICYmIGIgIHx8ICBjJywgcHVuY3R1YXRpb25fY2hhcnM9JyYnKQorICAgICAgICBzLndoaXRlc3BhY2Vfc3BsaXQgPSBUcnVlCisgICAgICAgICMgd2hpdGVzcGFjZV9zcGxpdCBpcyBUcnVlLCBzbyBzcGxpdHRpbmcgd2lsbCBiZSBiYXNlZCBvbgorICAgICAgICAjIHdoaXRlIHNwYWNlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGlzdChzKSwgWydhJywgJyYmJywgJ2InLCAnfHwnLCAnYyddKQorCiAgICAgZGVmIHRlc3RFbXB0eVN0cmluZ0hhbmRsaW5nKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHRoYXQgcGFyc2luZyBvZiBlbXB0eSBzdHJpbmdzIGlzIGNvcnJlY3RseSBoYW5kbGVkLiIiIgogICAgICAgICAjIHNlZSBJc3N1ZSAjMjE5OTkKICAgICAgICAgZXhwZWN0ZWQgPSBbJycsICcpJywgJ2FiYyddCi0KLSAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwb3NpeD1UcnVlKQotICAgICAgICBzbGlzdCA9IGxpc3QocykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbGlzdCwgZXhwZWN0ZWQpCisgICAgICAgIGZvciBwdW5jdCBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwb3NpeD1UcnVlLCBwdW5jdHVhdGlvbl9jaGFycz1wdW5jdCkKKyAgICAgICAgICAgIHNsaXN0ID0gbGlzdChzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbGlzdCwgZXhwZWN0ZWQpCiAgICAgICAgIGV4cGVjdGVkID0gWyInJyIsICcpJywgJ2FiYyddCi0gICAgICAgIHMgPSBzaGxleC5zaGxleCgiJycpYWJjIikKKyAgICAgICAgcyA9IHNobGV4LnNobGV4KCInJylhYmMiLCBwdW5jdHVhdGlvbl9jaGFycz1UcnVlKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QocyksIGV4cGVjdGVkKQogCiAgICAgZGVmIHRlc3RRdW90ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc2h1dGlsLnB5IGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKaW5kZXggMWQ1ZTAxYS4uOTkwZmFlNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zaHV0aWwucHkKQEAgLTEzMiw5ICsxMzIsNyBAQAogICAgICAgICB3cml0ZV9maWxlKG9zLnBhdGguam9pbih2aWN0aW0sICdzb21lZmlsZScpLCAnZm9vJykKICAgICAgICAgdmljdGltID0gb3MuZnNlbmNvZGUodmljdGltKQogICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UodmljdGltLCBieXRlcykKLSAgICAgICAgd2luID0gKG9zLm5hbWUgPT0gJ250JykKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZykgaWYgd2luIGVsc2UgRXhpdFN0YWNrKCk6Ci0gICAgICAgICAgICBzaHV0aWwucm10cmVlKHZpY3RpbSkKKyAgICAgICAgc2h1dGlsLnJtdHJlZSh2aWN0aW0pCiAKICAgICBAc3VwcG9ydC5za2lwX3VubGVzc19zeW1saW5rCiAgICAgZGVmIHRlc3Rfcm10cmVlX2ZhaWxzX29uX3N5bWxpbmsoc2VsZik6CkBAIC0xMzA2LDEwICsxMzA0LDEwIEBACiAgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUpCiAKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhMb29rdXBFcnJvcik6Ci0gICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIHVzZXI9J25vbi1leGlzaW5nIHVzZXJuYW1lJykKKyAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgdXNlcj0nbm9uLWV4aXN0aW5nIHVzZXJuYW1lJykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKExvb2t1cEVycm9yKToKLSAgICAgICAgICAgIHNodXRpbC5jaG93bihmaWxlbmFtZSwgZ3JvdXA9J25vbi1leGlzaW5nIGdyb3VwbmFtZScpCisgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGdyb3VwPSdub24tZXhpc3RpbmcgZ3JvdXBuYW1lJykKIAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzaHV0aWwuY2hvd24oZmlsZW5hbWUsIGInc3BhbScpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NpZ25hbC5weSBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CmluZGV4IDFiODBmZjAuLmFiNDJlZDcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc2lnbmFsLnB5CkBAIC0yMiwyOSArMjIsNiBAQAogICAgIF90ZXN0Y2FwaSA9IE5vbmUKIAogCi1jbGFzcyBIYW5kbGVyQkNhbGxlZChFeGNlcHRpb24pOgotICAgIHBhc3MKLQotCi1kZWYgZXhpdF9zdWJwcm9jZXNzKCk6Ci0gICAgIiIiVXNlIG9zLl9leGl0KDApIHRvIGV4aXQgdGhlIGN1cnJlbnQgc3VicHJvY2Vzcy4KLQotICAgIE90aGVyd2lzZSwgdGhlIHRlc3QgY2F0Y2hlcyB0aGUgU3lzdGVtRXhpdCBhbmQgY29udGludWVzIGV4ZWN1dGluZwotICAgIGluIHBhcmFsbGVsIHdpdGggdGhlIG9yaWdpbmFsIHRlc3QsIHNvIHlvdSB3aW5kIHVwIHdpdGggYW4KLSAgICBleHBvbmVudGlhbCBudW1iZXIgb2YgdGVzdHMgcnVubmluZyBjb25jdXJyZW50bHkuCi0gICAgIiIiCi0gICAgb3MuX2V4aXQoMCkKLQotCi1kZWYgaWdub3JpbmdfZWludHIoX19mdW5jLCAqYXJncywgKiprd2FyZ3MpOgotICAgIHRyeToKLSAgICAgICAgcmV0dXJuIF9fZnVuYygqYXJncywgKiprd2FyZ3MpCi0gICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgIHJhaXNlCi0gICAgICAgIHJldHVybiBOb25lCi0KLQogY2xhc3MgR2VuZXJpY1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIEB1bml0dGVzdC5za2lwSWYodGhyZWFkaW5nIGlzIE5vbmUsICJ0ZXN0IG5lZWRzIHRocmVhZGluZyBtb2R1bGUiKQpAQCAtNjMsMTQ1ICs0MCw2IEBACiAKIAogQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm0gPT0gIndpbjMyIiwgIk5vdCB2YWxpZCBvbiBXaW5kb3dzIikKLWNsYXNzIEludGVyUHJvY2Vzc1NpZ25hbFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBNQVhfRFVSQVRJT04gPSAyMCAgICMgRW50aXJlIHRlc3Qgc2hvdWxkIGxhc3QgYXQgbW9zdCAyMCBzZWMuCi0KLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYudXNpbmdfZ2MgPSBnYy5pc2VuYWJsZWQoKQotICAgICAgICBnYy5kaXNhYmxlKCkKLQotICAgIGRlZiB0ZWFyRG93bihzZWxmKToKLSAgICAgICAgaWYgc2VsZi51c2luZ19nYzoKLSAgICAgICAgICAgIGdjLmVuYWJsZSgpCi0KLSAgICBkZWYgZm9ybWF0X2ZyYW1lKHNlbGYsIGZyYW1lLCBsaW1pdD1Ob25lKToKLSAgICAgICAgcmV0dXJuICcnLmpvaW4odHJhY2ViYWNrLmZvcm1hdF9zdGFjayhmcmFtZSwgbGltaXQ9bGltaXQpKQotCi0gICAgZGVmIGhhbmRsZXJBKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmFfY2FsbGVkID0gVHJ1ZQotCi0gICAgZGVmIGhhbmRsZXJCKHNlbGYsIHNpZ251bSwgZnJhbWUpOgotICAgICAgICBzZWxmLmJfY2FsbGVkID0gVHJ1ZQotICAgICAgICByYWlzZSBIYW5kbGVyQkNhbGxlZChzaWdudW0sIHNlbGYuZm9ybWF0X2ZyYW1lKGZyYW1lKSkKLQotICAgIGRlZiB3YWl0KHNlbGYsIGNoaWxkKToKLSAgICAgICAgIiIiV2FpdCBmb3IgY2hpbGQgdG8gZmluaXNoLCBpZ25vcmluZyBFSU5UUi4iIiIKLSAgICAgICAgd2hpbGUgVHJ1ZToKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjaGlsZC53YWl0KCkKLSAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yIGFzIGU6Ci0gICAgICAgICAgICAgICAgaWYgZS5lcnJubyAhPSBlcnJuby5FSU5UUjoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLQotICAgIGRlZiBydW5fdGVzdChzZWxmKToKLSAgICAgICAgIyBJbnN0YWxsIGhhbmRsZXJzLiBUaGlzIGZ1bmN0aW9uIHJ1bnMgaW4gYSBzdWItcHJvY2Vzcywgc28gd2UKLSAgICAgICAgIyBkb24ndCB3b3JyeSBhYm91dCByZS1zZXR0aW5nIHRoZSBkZWZhdWx0IGhhbmRsZXJzLgotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIHNlbGYuaGFuZGxlckEpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNlbGYuaGFuZGxlckIpCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjIsIHNpZ25hbC5TSUdfSUdOKQotICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdBTFJNLCBzaWduYWwuZGVmYXVsdF9pbnRfaGFuZGxlcikKLQotICAgICAgICAjIFZhcmlhYmxlcyB0aGUgc2lnbmFscyB3aWxsIG1vZGlmeToKLSAgICAgICAgc2VsZi5hX2NhbGxlZCA9IEZhbHNlCi0gICAgICAgIHNlbGYuYl9jYWxsZWQgPSBGYWxzZQotCi0gICAgICAgICMgTGV0IHRoZSBzdWItcHJvY2Vzc2VzIGtub3cgd2hvIHRvIHNlbmQgc2lnbmFscyB0by4KLSAgICAgICAgcGlkID0gb3MuZ2V0cGlkKCkKLQotICAgICAgICBjaGlsZCA9IGlnbm9yaW5nX2VpbnRyKHN1YnByb2Nlc3MuUG9wZW4sIFsna2lsbCcsICctSFVQJywgc3RyKHBpZCldKQotICAgICAgICBpZiBjaGlsZDoKLSAgICAgICAgICAgIHNlbGYud2FpdChjaGlsZCkKLSAgICAgICAgICAgIGlmIG5vdCBzZWxmLmFfY2FsbGVkOgotICAgICAgICAgICAgICAgIHRpbWUuc2xlZXAoMSkgICMgR2l2ZSB0aGUgc2lnbmFsIHRpbWUgdG8gYmUgZGVsaXZlcmVkLgotICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VsZi5hX2NhbGxlZCkKLSAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmJfY2FsbGVkKQotICAgICAgICBzZWxmLmFfY2FsbGVkID0gRmFsc2UKLQotICAgICAgICAjIE1ha2Ugc3VyZSB0aGUgc2lnbmFsIGlzbid0IGRlbGl2ZXJlZCB3aGlsZSB0aGUgcHJldmlvdXMKLSAgICAgICAgIyBQb3BlbiBvYmplY3QgaXMgYmVpbmcgZGVzdHJveWVkLCBiZWNhdXNlIF9fZGVsX18gc3dhbGxvd3MKLSAgICAgICAgIyBleGNlcHRpb25zLgotICAgICAgICBkZWwgY2hpbGQKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgY2hpbGQgPSBzdWJwcm9jZXNzLlBvcGVuKFsna2lsbCcsICctVVNSMScsIHN0cihwaWQpXSkKLSAgICAgICAgICAgICMgVGhpcyB3YWl0IHNob3VsZCBiZSBpbnRlcnJ1cHRlZCBieSB0aGUgc2lnbmFsJ3MgZXhjZXB0aW9uLgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKQotICAgICAgICAgICAgdGltZS5zbGVlcCgxKSAgIyBHaXZlIHRoZSBzaWduYWwgdGltZSB0byBiZSBkZWxpdmVyZWQuCi0gICAgICAgICAgICBzZWxmLmZhaWwoJ0hhbmRsZXJCQ2FsbGVkIGV4Y2VwdGlvbiBub3QgcmFpc2VkJykKLSAgICAgICAgZXhjZXB0IEhhbmRsZXJCQ2FsbGVkOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuYl9jYWxsZWQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHNlbGYuYV9jYWxsZWQpCi0KLSAgICAgICAgY2hpbGQgPSBpZ25vcmluZ19laW50cihzdWJwcm9jZXNzLlBvcGVuLCBbJ2tpbGwnLCAnLVVTUjInLCBzdHIocGlkKV0pCi0gICAgICAgIGlmIGNoaWxkOgotICAgICAgICAgICAgc2VsZi53YWl0KGNoaWxkKSAgIyBOb3RoaW5nIHNob3VsZCBoYXBwZW4uCi0KLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgc2lnbmFsLmFsYXJtKDEpCi0gICAgICAgICAgICAjIFRoZSByYWNlIGNvbmRpdGlvbiBpbiBwYXVzZSBkb2Vzbid0IG1hdHRlciBpbiB0aGlzIGNhc2UsCi0gICAgICAgICAgICAjIHNpbmNlIGFsYXJtIGlzIGdvaW5nIHRvIHJhaXNlIGEgS2V5Ym9hcmRFeGNlcHRpb24sIHdoaWNoCi0gICAgICAgICAgICAjIHdpbGwgc2tpcCB0aGUgY2FsbC4KLSAgICAgICAgICAgIHNpZ25hbC5wYXVzZSgpCi0gICAgICAgICAgICAjIEJ1dCBpZiBhbm90aGVyIHNpZ25hbCBhcnJpdmVzIGJlZm9yZSB0aGUgYWxhcm0sIHBhdXNlCi0gICAgICAgICAgICAjIG1heSByZXR1cm4gZWFybHkuCi0gICAgICAgICAgICB0aW1lLnNsZWVwKDEpCi0gICAgICAgIGV4Y2VwdCBLZXlib2FyZEludGVycnVwdDoKLSAgICAgICAgICAgIHBhc3MKLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgc2VsZi5mYWlsKCJTb21lIG90aGVyIGV4Y2VwdGlvbiB3b2tlIHVzIGZyb20gcGF1c2U6ICVzIiAlCi0gICAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLmZvcm1hdF9leGMoKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHNlbGYuZmFpbCgicGF1c2UgcmV0dXJuZWQgb2YgaXRzIG93biBhY2NvcmQsIGFuZCB0aGUgc2lnbmFsIgotICAgICAgICAgICAgICAgICAgICAgICIgZGlkbid0IGFycml2ZSBhZnRlciBhbm90aGVyIHNlY29uZC4iKQotCi0gICAgIyBJc3N1ZSAzODY0LCB1bmtub3duIGlmIHRoaXMgYWZmZWN0cyBlYXJsaWVyIHZlcnNpb25zIG9mIGZyZWVic2QgYWxzbwotICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtPT0nZnJlZWJzZDYnLAotICAgICAgICAnaW50ZXIgcHJvY2VzcyBzaWduYWxzIG5vdCByZWxpYWJsZSAoZG8gbm90IG1peCB3ZWxsIHdpdGggdGhyZWFkaW5nKSAnCi0gICAgICAgICdvbiBmcmVlYnNkNicpCi0gICAgZGVmIHRlc3RfbWFpbihzZWxmKToKLSAgICAgICAgIyBUaGlzIGZ1bmN0aW9uIHNwYXducyBhIGNoaWxkIHByb2Nlc3MgdG8gaW5zdWxhdGUgdGhlIG1haW4KLSAgICAgICAgIyB0ZXN0LXJ1bm5pbmcgcHJvY2VzcyBmcm9tIGFsbCB0aGUgc2lnbmFscy4gSXQgdGhlbgotICAgICAgICAjIGNvbW11bmljYXRlcyB3aXRoIHRoYXQgY2hpbGQgcHJvY2VzcyBvdmVyIGEgcGlwZSBhbmQKLSAgICAgICAgIyByZS1yYWlzZXMgaW5mb3JtYXRpb24gYWJvdXQgYW55IGV4Y2VwdGlvbnMgdGhlIGNoaWxkCi0gICAgICAgICMgcmFpc2VzLiBUaGUgcmVhbCB3b3JrIGhhcHBlbnMgaW4gc2VsZi5ydW5fdGVzdCgpLgotICAgICAgICBvc19kb25lX3IsIG9zX2RvbmVfdyA9IG9zLnBpcGUoKQotICAgICAgICB3aXRoIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfciwgJ3JiJykpIGFzIGRvbmVfciwgXAotICAgICAgICAgICAgIGNsb3Npbmcob3MuZmRvcGVuKG9zX2RvbmVfdywgJ3diJykpIGFzIGRvbmVfdzoKLSAgICAgICAgICAgIGNoaWxkID0gb3MuZm9yaygpCi0gICAgICAgICAgICBpZiBjaGlsZCA9PSAwOgotICAgICAgICAgICAgICAgICMgSW4gdGhlIGNoaWxkIHByb2Nlc3M7IHJ1biB0aGUgdGVzdCBhbmQgcmVwb3J0IHJlc3VsdHMKLSAgICAgICAgICAgICAgICAjIHRocm91Z2ggdGhlIHBpcGUuCi0gICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICBkb25lX3IuY2xvc2UoKQotICAgICAgICAgICAgICAgICAgICAjIEhhdmUgdG8gY2xvc2UgZG9uZV93IGFnYWluIGhlcmUgYmVjYXVzZQotICAgICAgICAgICAgICAgICAgICAjIGV4aXRfc3VicHJvY2VzcygpIHdpbGwgc2tpcCB0aGUgZW5jbG9zaW5nIHdpdGggYmxvY2suCi0gICAgICAgICAgICAgICAgICAgIHdpdGggY2xvc2luZyhkb25lX3cpOgotICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnVuX3Rlc3QoKQotICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBpY2tsZS5kdW1wKHRyYWNlYmFjay5mb3JtYXRfZXhjKCksIGRvbmVfdykKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlja2xlLmR1bXAoTm9uZSwgZG9uZV93KQotICAgICAgICAgICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ1VoIG9oLCByYWlzZWQgZnJvbSBwaWNrbGUuJykKLSAgICAgICAgICAgICAgICAgICAgdHJhY2ViYWNrLnByaW50X2V4YygpCi0gICAgICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICAgICAgZXhpdF9zdWJwcm9jZXNzKCkKLQotICAgICAgICAgICAgZG9uZV93LmNsb3NlKCkKLSAgICAgICAgICAgICMgQmxvY2sgZm9yIHVwIHRvIE1BWF9EVVJBVElPTiBzZWNvbmRzIGZvciB0aGUgdGVzdCB0byBmaW5pc2guCi0gICAgICAgICAgICByLCB3LCB4ID0gc2VsZWN0LnNlbGVjdChbZG9uZV9yXSwgW10sIFtdLCBzZWxmLk1BWF9EVVJBVElPTikKLSAgICAgICAgICAgIGlmIGRvbmVfciBpbiByOgotICAgICAgICAgICAgICAgIHRiID0gcGlja2xlLmxvYWQoZG9uZV9yKQotICAgICAgICAgICAgICAgIGlmIHRiOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwodGIpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG9zLmtpbGwoY2hpbGQsIHNpZ25hbC5TSUdLSUxMKQotICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgnVGVzdCBkZWFkbG9ja2VkIGFmdGVyICVkIHNlY29uZHMuJyAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuTUFYX0RVUkFUSU9OKQotCi0KLUB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJ3aW4zMiIsICJOb3QgdmFsaWQgb24gV2luZG93cyIpCiBjbGFzcyBQb3NpeFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdHJpdmlhbF9zaWduYWxfaGFuZGxlcihzZWxmLCAqYXJncyk6CiAgICAgICAgIHBhc3MKQEAgLTIyNCw2ICs2MiwxNSBAQAogICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdIVVAsIGh1cCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdIVVApLCBodXApCiAKKyAgICAjIElzc3VlIDM4NjQsIHVua25vd24gaWYgdGhpcyBhZmZlY3RzIGVhcmxpZXIgdmVyc2lvbnMgb2YgZnJlZWJzZCBhbHNvCisgICAgQHVuaXR0ZXN0LnNraXBJZihzeXMucGxhdGZvcm09PSdmcmVlYnNkNicsCisgICAgICAgICdpbnRlciBwcm9jZXNzIHNpZ25hbHMgbm90IHJlbGlhYmxlIChkbyBub3QgbWl4IHdlbGwgd2l0aCB0aHJlYWRpbmcpICcKKyAgICAgICAgJ29uIGZyZWVic2Q2JykKKyAgICBkZWYgdGVzdF9pbnRlcnByb2Nlc3Nfc2lnbmFsKHNlbGYpOgorICAgICAgICBkaXJuYW1lID0gb3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKQorICAgICAgICBzY3JpcHQgPSBvcy5wYXRoLmpvaW4oZGlybmFtZSwgJ3NpZ25hbGludGVycHJvY3Rlc3Rlci5weScpCisgICAgICAgIGFzc2VydF9weXRob25fb2soc2NyaXB0KQorCiAKIEB1bml0dGVzdC5za2lwVW5sZXNzKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBzcGVjaWZpYyIpCiBjbGFzcyBXaW5kb3dzU2lnbmFsVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zaXRlLnB5IGIvTGliL3Rlc3QvdGVzdF9zaXRlLnB5CmluZGV4IGRhMjBhM2QuLmQyZmJiN2IgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc2l0ZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NpdGUucHkKQEAgLTc1LDcgKzc1LDcgQEAKICAgICBkZWYgdGVzdF9pbml0X3BhdGhpbmZvKHNlbGYpOgogICAgICAgICBkaXJfc2V0ID0gc2l0ZS5faW5pdF9wYXRoaW5mbygpCiAgICAgICAgIGZvciBlbnRyeSBpbiBbc2l0ZS5tYWtlcGF0aChwYXRoKVsxXSBmb3IgcGF0aCBpbiBzeXMucGF0aAotICAgICAgICAgICAgICAgICAgICAgICAgaWYgcGF0aCBhbmQgb3MucGF0aC5pc2RpcihwYXRoKV06CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIGFuZCBvcy5wYXRoLmV4aXN0cyhwYXRoKV06CiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKGVudHJ5LCBkaXJfc2V0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZnJvbSBzeXMucGF0aCBub3QgZm91bmQgaW4gc2V0IHJldHVybmVkICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5IF9pbml0X3BhdGhpbmZvKCk6ICVzIiAlIChlbnRyeSwgZGlyX3NldCkpCkBAIC0xMzgsMTAgKzEzOCw4IEBACiAgICAgICAgICAgICByZS5lc2NhcGUob3MucGF0aC5qb2luKHB0aF9kaXIsIHB0aF9mbikpKQogICAgICAgICAjIFhYWDogZGl0dG8gcHJldmlvdXMgWFhYIGNvbW1lbnQuCiAgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnVHJhY2ViYWNrJykKLSAgICAgICAgc2VsZi5hc3NlcnRSZWdleChlcnJfb3V0LmdldHZhbHVlKCksICdJbXBvcnRFcnJvcicpCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoZXJyX291dC5nZXR2YWx1ZSgpLCAnTW9kdWxlTm90Rm91bmRFcnJvcicpCiAKLSAgICBAdW5pdHRlc3Quc2tpcElmKHN5cy5wbGF0Zm9ybSA9PSAid2luMzIiLCAiV2luZG93cyBkb2VzIG5vdCByYWlzZSBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgImVycm9yIGZvciBmaWxlIHBhdGhzIGNvbnRhaW5pbmcgbnVsbCBjaGFyYWN0ZXJzIikKICAgICBkZWYgdGVzdF9hZGRwYWNrYWdlX2ltcG9ydF9iYWRfcHRoX2ZpbGUoc2VsZik6CiAgICAgICAgICMgSXNzdWUgNTI1OAogICAgICAgICBwdGhfZGlyLCBwdGhfZm4gPSBzZWxmLm1ha2VfcHRoKCJhYmNceDAwZGVmXG4iKQpAQCAtMjQzLDEzICsyNDEsMTQgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpcnMpLCAyKQogICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCcvTGlicmFyeScsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJQWVRIT05GUkFNRVdPUksiKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyVkLiVkJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdzaXRlLXBhY2thZ2VzJykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQogICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6CiAgICAgICAgICAgICAjIE9TIFggbm9uLWZyYW13ZXdvcmsgYnVpbGRzLCBMaW51eCwgRnJlZUJTRCwgZXRjCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMSkKLSAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKKyAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRpcnNbMF0sIHdhbnRlZCkKICAgICAgICAgZWxzZToKQEAgLTQ0NiwxMCArNDQ1LDkgQEAKICAgICAgICAgcG9wZW4gPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgJy1JJywgJy12JywgJy1jJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW1wb3J0IHN5czsgcHJpbnQoc2V0KHN5cy5tb2R1bGVzKSknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRlcnI9c3VicHJvY2Vzcy5QSVBFKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nPSd1dGYtOCcpCiAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoKQotICAgICAgICBzdGRvdXQgPSBzdGRvdXQuZGVjb2RlKCd1dGYtOCcpCi0gICAgICAgIHN0ZGVyciA9IHN0ZGVyci5kZWNvZGUoJ3V0Zi04JykKICAgICAgICAgbW9kdWxlcyA9IGV2YWwoc3Rkb3V0KQogCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3NpdGUnLCBtb2R1bGVzKQpAQCAtNDY5LDcgKzQ2NywyNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2hlYXBxJywgJ2l0ZXJ0b29scycsICdrZXl3b3JkJywgJ29wZXJhdG9yJywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICdyZXBybGliJywgJ3R5cGVzJywgJ3dlYWtyZWYnCiAgICAgICAgICAgICAgICAgICAgICAgICAgIH0uZGlmZmVyZW5jZShzeXMuYnVpbHRpbl9tb2R1bGVfbmFtZXMpCi0gICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobW9kdWxlcy5pbnRlcnNlY3Rpb24oY29sbGVjdGlvbl9tb2RzKSwgc3RkZXJyKQorICAgICAgICAjIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyODA5NQorICAgICAgICBpZiBzeXMucGxhdGZvcm0gIT0gJ2Rhcndpbic6CisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG1vZHVsZXMuaW50ZXJzZWN0aW9uKGNvbGxlY3Rpb25fbW9kcyksIHN0ZGVycikKKworICAgIGRlZiB0ZXN0X3N0YXJ0dXBfaW50ZXJhY3RpdmVob29rKHNlbGYpOgorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUociwgIidfX2ludGVyYWN0aXZlaG9va19fJyBub3QgYWRkZWQgYnkgc2l0ZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGlzIG5vdCBhdXRvbWF0aWNhbGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHN5czsgc3lzLmV4aXQoaGFzYXR0cihzeXMsICJfX2ludGVyYWN0aXZlaG9va19fIikpJ10pLndhaXQoKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHIsICInX19pbnRlcmFjdGl2ZWhvb2tfXycgYWRkZWQgaW4gaXNvbGF0ZWQgbW9kZSIpCisKKyAgICBkZWYgdGVzdF9zdGFydHVwX2ludGVyYWN0aXZlaG9va19pc29sYXRlZF9leHBsaWNpdChzZWxmKToKKyAgICAgICAgIyBpc3N1ZTI4MTkyIHJlYWRsaW5lIGNhbiBiZSBleHBsaWNpdGx5IGVuYWJsZWQgaW4gaXNvbGF0ZWQgbW9kZQorICAgICAgICByID0gc3VicHJvY2Vzcy5Qb3Blbihbc3lzLmV4ZWN1dGFibGUsICctSScsICctYycsCisgICAgICAgICAgICAnaW1wb3J0IHNpdGUsIHN5czsgc2l0ZS5lbmFibGVybGNvbXBsZXRlcigpOyBzeXMuZXhpdChoYXNhdHRyKHN5cywgIl9faW50ZXJhY3RpdmVob29rX18iKSknXSkud2FpdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShyLCAiJ19faW50ZXJhY3RpdmVob29rX18nIG5vdCBhZGRlZCBieSBlbmFibGVybGNvbXBsZXRlcigpIikKIAogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weSBiL0xpYi90ZXN0L3Rlc3Rfc210cGQucHkKaW5kZXggODhkYmZkZi4uM2VlYmU5NCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zbXRwZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NtdHBkLnB5CkBAIC01MywxMCArNTMsNiBAQAogICAgICAgICB3cml0ZV9saW5lKGInREFUQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IsIHdyaXRlX2xpbmUsIGInc3BhbVxyXG4uXHJcbicpCiAKLSAgICBkZWYgdGVzdF9kZWNvZGVfZGF0YV9kZWZhdWx0X3dhcm5zKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNtdHBkLlNNVFBTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQotCiAgICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfYW5kX2VuYWJsZV9TTVRQVVRGOF9yYWlzZXMoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKAogICAgICAgICAgICAgVmFsdWVFcnJvciwKQEAgLTEwOCwxMCArMTA0LDkgQEAKICAgICAgICAgICAgICAiIiIpKQogCiAgICAgZGVmIHRlc3RfcHJvY2Vzc19tZXNzYWdlX3dpdGhfZGVjb2RlX2RhdGFfZmFsc2Uoc2VsZik6Ci0gICAgICAgIHNlcnZlciA9IHNtdHBkLkRlYnVnZ2luZ1NlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gc210cGQuRGVidWdnaW5nU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKICAgICAgICAgY29ubiwgYWRkciA9IHNlcnZlci5hY2NlcHQoKQotICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlcnZlciwgY29ubiwgYWRkcikKICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIGFzIHM6CiAgICAgICAgICAgICBzZWxmLnNlbmRfZGF0YShjaGFubmVsLCBiJ0Zyb206IHRlc3RcblxuaFx4YzNceGE5bGxvXHhmZlxuJykKICAgICAgICAgc3Rkb3V0ID0gcy5nZXR2YWx1ZSgpCkBAIC0xNzUsMTMgKzE3MCwxMSBAQAogCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3Moc3VwcG9ydC5JUFY2X0VOQUJMRUQsICJJUHY2IG5vdCBlbmFibGVkIikKICAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY2KHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksIChzdXBwb3J0LkhPU1QsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1R2NiwgMCksIChzdXBwb3J0LkhPU1QsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVDYpCiAKICAgICBkZWYgdGVzdF9zb2NrZXRfdXNlc19JUHY0KHNlbGYpOgotICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoc3VwcG9ydC5IT1NUdjYsIDApLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBzZXJ2ZXIgPSBzbXRwZC5TTVRQU2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoc3VwcG9ydC5IT1NUdjYsIDApKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zb2NrZXQuZmFtaWx5LCBzb2NrZXQuQUZfSU5FVCkKIAogCkBAIC0yMDQsMTggKzE5NywxOCBAQAogICAgICAgICBjaGFubmVsLmhhbmRsZV9yZWFkKCkKIAogICAgIGRlZiB0ZXN0X3BhcmFtc19yZWplY3RlZChzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPiBmb289YmFyJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBzZWxmLmVycm9yX3Jlc3BvbnNlKQogCiAgICAgZGVmIHRlc3Rfbm90aGluZ19hY2NlcHRlZChzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidNQUlMIGZyb206IDxmb29AZXhhbXBsZS5jb20+IHNpemU9MjAnKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidSQ1BUIHRvOiA8Zm9vQGV4YW1wbGUuY29tPicpCkBAIC0yNTcsOSArMjUwLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGFubmVsLnNvY2tldC5sYXN0LCBiJzI1MCBPS1xyXG4nKQogCiAgICAgZGVmIHRlc3Rfd2l0aF9kZWNvZGVfZGF0YV9mYWxzZShzZWxmKToKLSAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApLCBkZWNvZGVfZGF0YT1GYWxzZSkKKyAgICAgICAgc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIGNoYW5uZWwgPSBzbXRwZC5TTVRQQ2hhbm5lbChzZXJ2ZXIsIGNvbm4sIGFkZHIsIGRlY29kZV9kYXRhPUZhbHNlKQorICAgICAgICBjaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQogICAgICAgICBzZWxmLndyaXRlX2xpbmUoY2hhbm5lbCwgYidFSExPIGV4YW1wbGUnKQogICAgICAgICBmb3IgbGluZSBpbiBbCiAgICAgICAgICAgICBiJ01BSUwgZnJvbTogPGZvb0BleGFtcGxlLmNvbT4gc2l6ZT0yMCBTTVRQVVRGOCcsCkBAIC03NjUsMTMgKzc1OCw2IEBACiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgogICAgICAgICAgICAgc2VsZi5jaGFubmVsLl9TTVRQQ2hhbm5lbF9fYWRkciA9ICdzcGFtJwogCi0gICAgZGVmIHRlc3RfZGVjb2RlX2RhdGFfZGVmYXVsdF93YXJuaW5nKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlcnZlciA9IER1bW15U2VydmVyKChzdXBwb3J0LkhPU1QsIDApLCAoJ2InLCAwKSkKLSAgICAgICAgY29ubiwgYWRkciA9IHNlbGYuc2VydmVyLmFjY2VwdCgpCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgc210cGQuU01UUENoYW5uZWwoc2VydmVyLCBjb25uLCBhZGRyKQotCiBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgIklQdjYgbm90IGVuYWJsZWQiKQogY2xhc3MgU01UUERDaGFubmVsSVB2NlRlc3QoU01UUERDaGFubmVsVGVzdCk6CiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtODQ1LDEyICs4MzEsOSBAQAogICAgICAgICBzbXRwZC5zb2NrZXQgPSBhc3luY29yZS5zb2NrZXQgPSBtb2NrX3NvY2tldAogICAgICAgICBzZWxmLm9sZF9kZWJ1Z3N0cmVhbSA9IHNtdHBkLkRFQlVHU1RSRUFNCiAgICAgICAgIHNlbGYuZGVidWcgPSBzbXRwZC5ERUJVR1NUUkVBTSA9IGlvLlN0cmluZ0lPKCkKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBEdW1teVNlcnZlcigoc3VwcG9ydC5IT1NULCAwKSwgKCdiJywgMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuc2VydmVyID0gRHVtbXlTZXJ2ZXIoKHN1cHBvcnQuSE9TVCwgMCksICgnYicsIDApKQogICAgICAgICBjb25uLCBhZGRyID0gc2VsZi5zZXJ2ZXIuYWNjZXB0KCkKLSAgICAgICAgIyBTZXQgZGVjb2RlX2RhdGEgdG8gRmFsc2UKLSAgICAgICAgc2VsZi5jaGFubmVsID0gc210cGQuU01UUENoYW5uZWwoc2VsZi5zZXJ2ZXIsIGNvbm4sIGFkZHIsCi0gICAgICAgICAgICAgICAgZGVjb2RlX2RhdGE9RmFsc2UpCisgICAgICAgIHNlbGYuY2hhbm5lbCA9IHNtdHBkLlNNVFBDaGFubmVsKHNlbGYuc2VydmVyLCBjb25uLCBhZGRyKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgogICAgICAgICBhc3luY29yZS5jbG9zZV9hbGwoKQpAQCAtMTAxNSw1ICs5OTgsMTYgQEAKICAgICAgICAgICAgIHNlbGYud3JpdGVfbGluZShiJ3Rlc3RcclxuLicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuY2hhbm5lbC5zb2NrZXQubGFzdFswOjNdLCBiJzI1MCcpCiAKKworY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGJsYWNrbGlzdCA9IHsKKyAgICAgICAgICAgICJwcm9ncmFtIiwgIkRldm51bGwiLCAiREVCVUdTVFJFQU0iLCAiTkVXTElORSIsICJDT01NQVNQQUNFIiwKKyAgICAgICAgICAgICJEQVRBX1NJWkVfREVGQVVMVCIsICJ1c2FnZSIsICJPcHRpb25zIiwgInBhcnNlYXJncyIsCisKKyAgICAgICAgfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCBzbXRwZCwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXQucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQppbmRleCBjY2U3ZDUyLi5jOWFkZDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldC5weQpAQCAtMTMsNyArMTMsNiBAQAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCiBpbXBvcnQgYXJyYXkKLWltcG9ydCBwbGF0Zm9ybQogaW1wb3J0IGNvbnRleHRsaWIKIGZyb20gd2Vha3JlZiBpbXBvcnQgcHJveHkKIGltcG9ydCBzaWduYWwKQEAgLTY2LDEwICs2NSwyMiBAQAogICAgICAgICBzLmNsb3NlKCkKICAgICByZXR1cm4gVHJ1ZQogCitkZWYgX2hhdmVfc29ja2V0X2FsZygpOgorICAgICIiIkNoZWNrIHdoZXRoZXIgQUZfQUxHIHNvY2tldHMgYXJlIHN1cHBvcnRlZCBvbiB0aGlzIGhvc3QuIiIiCisgICAgdHJ5OgorICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgZXhjZXB0IChBdHRyaWJ1dGVFcnJvciwgT1NFcnJvcik6CisgICAgICAgIHJldHVybiBGYWxzZQorICAgIGVsc2U6CisgICAgICAgIHMuY2xvc2UoKQorICAgIHJldHVybiBUcnVlCisKIEhBVkVfU09DS0VUX0NBTiA9IF9oYXZlX3NvY2tldF9jYW4oKQogCiBIQVZFX1NPQ0tFVF9SRFMgPSBfaGF2ZV9zb2NrZXRfcmRzKCkKIAorSEFWRV9TT0NLRVRfQUxHID0gX2hhdmVfc29ja2V0X2FsZygpCisKICMgU2l6ZSBpbiBieXRlcyBvZiB0aGUgaW50IHR5cGUKIFNJWkVPRl9JTlQgPSBhcnJheS5hcnJheSgiaSIpLml0ZW1zaXplCiAKQEAgLTExNjEsNiArMTE3MiwxNyBAQAogICAgICAgICBzb2NrLmNsb3NlKCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc29jay5zZW5kLCBiInNwYW0iKQogCisgICAgZGVmIHRlc3RDbG9zZUV4Y2VwdGlvbihzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoKQorICAgICAgICBzb2NrZXQuc29ja2V0KGZpbGVubz1zb2NrLmZpbGVubygpKS5jbG9zZSgpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suY2xvc2UoKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnI6CisgICAgICAgICAgICAjIFdpbnNvY2sgYXBwYXJlbnRseSByYWlzZXMgRU5PVFNPQ0sKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZXJyLmVycm5vLCAoZXJybm8uRUJBREYsIGVycm5vLkVOT1RTT0NLKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmFpbCgiY2xvc2UoKSBzaG91bGQgcmFpc2UgRUJBREYvRU5PVFNPQ0siKQorCiAgICAgZGVmIHRlc3ROZXdBdHRyaWJ1dGVzKHNlbGYpOgogICAgICAgICAjIHRlc3RpbmcgLmZhbWlseSwgLnR5cGUgYW5kIC5wcm90b2NvbAogCkBAIC0xMjA3LDYgKzEyMjksMjIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgcy5pb2N0bCwgLTEsIE5vbmUpCiAgICAgICAgIHMuaW9jdGwoc29ja2V0LlNJT19LRUVQQUxJVkVfVkFMUywgKDEsIDEwMCwgMTAwKSkKIAorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKG9zLm5hbWUgPT0gIm50IiwgIldpbmRvd3Mgc3BlY2lmaWMiKQorICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKGhhc2F0dHIoc29ja2V0LCAnU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICdMb29wYmFjayBmYXN0IHBhdGggc3VwcG9ydCByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0JykKKyAgICBkZWYgdGVzdF9zaW9fbG9vcGJhY2tfZmFzdF9wYXRoKHNlbGYpOgorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBzLmlvY3RsKHNvY2tldC5TSU9fTE9PUEJBQ0tfRkFTVF9QQVRILCBUcnVlKQorICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICAgICBXU0FFT1BOT1RTVVBQID0gMTAwNDUKKyAgICAgICAgICAgIGlmIGV4Yy53aW5lcnJvciA9PSBXU0FFT1BOT1RTVVBQOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNJT19MT09QQkFDS19GQVNUX1BBVEggaXMgZGVmaW5lZCBidXQgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImRvZXNuJ3QgaW1wbGVtZW50ZWQgaW4gdGhpcyBXaW5kb3dzIHZlcnNpb24iKQorICAgICAgICAgICAgcmFpc2UKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzLmlvY3RsLCBzb2NrZXQuU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCwgTm9uZSkKKwogICAgIGRlZiB0ZXN0R2V0YWRkcmluZm8oc2VsZik6CiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNvY2tldC5nZXRhZGRyaW5mbygnbG9jYWxob3N0JywgODApCkBAIC0yODQyLDYgKzI4ODAsNyBAQAogICAgICAgICAgICAgbmJ5dGVzID0gc2VsZi5zZW5kbXNnVG9TZXJ2ZXIoW21zZ10pCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmJ5dGVzLCBsZW4obXNnKSkKIAorICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLnBsYXRmb3JtID09ICJkYXJ3aW4iLCAic2VlIGlzc3VlICMyNDcyNSIpCiAgICAgZGVmIHRlc3RGRFBhc3NFbXB0eShzZWxmKToKICAgICAgICAgIyBUcnkgdG8gcGFzcyBhbiBlbXB0eSBGRCBhcnJheS4gIENhbiByZWNlaXZlIGVpdGhlciBubyBhcnJheQogICAgICAgICAjIG9yIGFuIGVtcHR5IGFycmF5LgpAQCAtNTMyMCw2ICs1MzU5LDE4MyBAQAogICAgICAgICByZXR1cm4gZ2V0YXR0cihzb2NrLCAiX3NlbmRmaWxlX3VzZV9zZW5kZmlsZSIpCiAKIAorQHVuaXR0ZXN0LnNraXBVbmxlc3MoSEFWRV9TT0NLRVRfQUxHLCAnQUZfQUxHIHJlcXVpcmVkJykKK2NsYXNzIExpbnV4S2VybmVsQ3J5cHRvQVBJKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAjIHRlc3RzIGZvciBBRl9BTEcKKyAgICBkZWYgY3JlYXRlX2FsZyhzZWxmLCB0eXAsIG5hbWUpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfQUxHLCBzb2NrZXQuU09DS19TRVFQQUNLRVQsIDApCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHNvY2suYmluZCgodHlwLCBuYW1lKSkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yIGFzIGU6CisgICAgICAgICAgICAjIHR5cGUgLyBhbGdvcml0aG0gaXMgbm90IGF2YWlsYWJsZQorICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgICAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdChzdHIoZSksIHR5cCwgbmFtZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBzb2NrCisKKyAgICBkZWYgdGVzdF9zaGEyNTYoc2VsZik6CisgICAgICAgIGV4cGVjdGVkID0gYnl0ZXMuZnJvbWhleCgiYmE3ODE2YmY4ZjAxY2ZlYTQxNDE0MGRlNWRhZTIyMjNiMDAzNjFhMzk2IgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjE3N2E5Y2I0MTBmZjYxZjIwMDE1YWQiKQorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygnaGFzaCcsICdzaGEyNTYnKSBhcyBhbGdvOgorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYiJhYmMiKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidhJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidiJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYidjJywgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmQoYicnKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3AucmVjdig1MTIpLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X2htYWNfc2hhMShzZWxmKToKKyAgICAgICAgZXhwZWN0ZWQgPSBieXRlcy5mcm9taGV4KCJlZmZjZGY2YWU1ZWIyZmEyZDI3NDE2ZDVmMTg0ZGY5YzI1OWE3Yzc5IikKKyAgICAgICAgd2l0aCBzZWxmLmNyZWF0ZV9hbGcoJ2hhc2gnLCAnaG1hYyhzaGExKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwgYiJKZWZlIikKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGIid2hhdCBkbyB5YSB3YW50IGZvciBub3RoaW5nPyIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcC5yZWN2KDUxMiksIGV4cGVjdGVkKQorCisgICAgIyBBbHRob3VnaCBpdCBzaG91bGQgd29yayB3aXRoIDMuMTkgYW5kIG5ld2VyIHRoZSB0ZXN0IGJsb2NrcyBvbgorICAgICMgVWJ1bnR1IDE1LjEwIHdpdGggS2VybmVsIDQuMi4wLTE5LgorICAgIEBzdXBwb3J0LnJlcXVpcmVzX2xpbnV4X3ZlcnNpb24oNCwgMykKKyAgICBkZWYgdGVzdF9hZXNfY2JjKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCcwNmE5MjE0MDM2YjhhMTViNTEyZTAzZDUzNDEyMDAwNicpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnM2RhZmJhNDI5ZDllYjQzMGI0MjJkYTgwMmM5ZmFjNDEnKQorICAgICAgICBtc2cgPSBiIlNpbmdsZSBibG9jayBtc2ciCisgICAgICAgIGNpcGhlcnRleHQgPSBieXRlcy5mcm9taGV4KCdlMzUzNzc5YzEwNzlhZWI4MjcwODk0MmRiZTc3MTgxYScpCisgICAgICAgIG1zZ2xlbiA9IGxlbihtc2cpCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdza2NpcGhlcicsICdjYmMoYWVzKScpIGFzIGFsZ286CisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0tFWSwga2V5KQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcob3A9c29ja2V0LkFMR19PUF9FTkNSWVBULCBpdj1pdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKG1zZykKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgY2lwaGVydGV4dCkKKworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG9wLnNlbmRtc2dfYWZhbGcoW2NpcGhlcnRleHRdLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3A9c29ja2V0LkFMR19PUF9ERUNSWVBULCBpdj1pdikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wLnJlY3YobXNnbGVuKSwgbXNnKQorCisgICAgICAgICAgICAjIGxvbmcgbWVzc2FnZQorICAgICAgICAgICAgbXVsdGlwbGllciA9IDEwMjQKKyAgICAgICAgICAgIGxvbmdtc2cgPSBbbXNnXSAqIG11bHRpcGxpZXIKKyAgICAgICAgICAgIG9wLCBfID0gYWxnby5hY2NlcHQoKQorICAgICAgICAgICAgd2l0aCBvcDoKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKGxvbmdtc2csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2KQorICAgICAgICAgICAgICAgIGVuYyA9IG9wLnJlY3YobXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGVuYyksIG1zZ2xlbiAqIG11bHRpcGxpZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZW5jWzptc2dsZW5dLCBjaXBoZXJ0ZXh0KQorCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhbZW5jXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wPXNvY2tldC5BTEdfT1BfREVDUllQVCwgaXY9aXYpCisgICAgICAgICAgICAgICAgZGVjID0gb3AucmVjdihtc2dsZW4gKiBtdWx0aXBsaWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGVjKSwgbXNnbGVuICogbXVsdGlwbGllcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVjLCBtc2cgKiBtdWx0aXBsaWVyKQorCisgICAgQHN1cHBvcnQucmVxdWlyZXNfbGludXhfdmVyc2lvbig0LCAzKSAgIyBzZWUgdGVzdF9hZXNfY2JjCisgICAgZGVmIHRlc3RfYWVhZF9hZXNfZ2NtKHNlbGYpOgorICAgICAgICBrZXkgPSBieXRlcy5mcm9taGV4KCdjOTM5Y2MxMzM5N2MxZDM3ZGU2YWUwZTFjYjdjNDIzYycpCisgICAgICAgIGl2ID0gYnl0ZXMuZnJvbWhleCgnYjNkOGNjMDE3Y2JiODliMzllMGY2N2UyJykKKyAgICAgICAgcGxhaW4gPSBieXRlcy5mcm9taGV4KCdjM2IzYzQxZjExM2EzMWI3M2Q5YTVjZDQzMjEwMzA2OScpCisgICAgICAgIGFzc29jID0gYnl0ZXMuZnJvbWhleCgnMjQ4MjU2MDJiZDEyYTk4NGUwMDkyZDNlNDQ4ZWRhNWYnKQorICAgICAgICBleHBlY3RlZF9jdCA9IGJ5dGVzLmZyb21oZXgoJzkzZmU3ZDllOWJmZDEwMzQ4YTU2MDZlNWNhZmE3MzU0JykKKyAgICAgICAgZXhwZWN0ZWRfdGFnID0gYnl0ZXMuZnJvbWhleCgnMDAzMmExZGM4NWYxYzk3ODY5MjVhMmU3MWQ4MjcyZGQnKQorCisgICAgICAgIHRhZ2xlbiA9IGxlbihleHBlY3RlZF90YWcpCisgICAgICAgIGFzc29jbGVuID0gbGVuKGFzc29jKQorCisgICAgICAgIHdpdGggc2VsZi5jcmVhdGVfYWxnKCdhZWFkJywgJ2djbShhZXMpJykgYXMgYWxnbzoKKyAgICAgICAgICAgIGFsZ28uc2V0c29ja29wdChzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfS0VZLCBrZXkpCisgICAgICAgICAgICBhbGdvLnNldHNvY2tvcHQoc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX0FFQURfQVVUSFNJWkUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgdGFnbGVuKQorCisgICAgICAgICAgICAjIHNlbmQgYXNzb2MsIHBsYWluIGFuZCB0YWcgYnVmZmVyIGluIHNlcGFyYXRlIHN0ZXBzCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4sIGZsYWdzPXNvY2tldC5NU0dfTU9SRSkKKyAgICAgICAgICAgICAgICBvcC5zZW5kYWxsKGFzc29jLCBzb2NrZXQuTVNHX01PUkUpCisgICAgICAgICAgICAgICAgb3Auc2VuZGFsbChwbGFpbiwgc29ja2V0Lk1TR19NT1JFKQorICAgICAgICAgICAgICAgIG9wLnNlbmRhbGwoYidceDAwJyAqIHRhZ2xlbikKKyAgICAgICAgICAgICAgICByZXMgPSBvcC5yZWN2KGFzc29jbGVuICsgbGVuKHBsYWluKSArIHRhZ2xlbikKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkX2N0LCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF90YWcsIHJlc1stdGFnbGVuOl0pCisKKyAgICAgICAgICAgICMgbm93IHdpdGggbXNnCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgbXNnID0gYXNzb2MgKyBwbGFpbiArIGInXHgwMCcgKiB0YWdsZW4KKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihhc3NvY2xlbiArIGxlbihwbGFpbikgKyB0YWdsZW4pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGNyZWF0ZSBhbmMgZGF0YSBtYW51YWxseQorICAgICAgICAgICAgcGFja191aW50MzIgPSBzdHJ1Y3QuU3RydWN0KCdJJykucGFjaworICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgcGxhaW4gKyBiJ1x4MDAnICogdGFnbGVuCisgICAgICAgICAgICAgICAgb3Auc2VuZG1zZygKKyAgICAgICAgICAgICAgICAgICAgW21zZ10sCisgICAgICAgICAgICAgICAgICAgIChbc29ja2V0LlNPTF9BTEcsIHNvY2tldC5BTEdfU0VUX09QLCBwYWNrX3VpbnQzMihzb2NrZXQuQUxHX09QX0VOQ1JZUFQpXSwKKyAgICAgICAgICAgICAgICAgICAgIFtzb2NrZXQuU09MX0FMRywgc29ja2V0LkFMR19TRVRfSVYsIHBhY2tfdWludDMyKGxlbihpdikpICsgaXZdLAorICAgICAgICAgICAgICAgICAgICAgW3NvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9BRUFEX0FTU09DTEVOLCBwYWNrX3VpbnQzMihhc3NvY2xlbildLAorICAgICAgICAgICAgICAgICAgICApCisgICAgICAgICAgICAgICAgKQorICAgICAgICAgICAgICAgIHJlcyA9IG9wLnJlY3YobGVuKG1zZykpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3RlZF9jdCwgcmVzW2Fzc29jbGVuOi10YWdsZW5dKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXhwZWN0ZWRfdGFnLCByZXNbLXRhZ2xlbjpdKQorCisgICAgICAgICAgICAjIGRlY3J5cHQgYW5kIHZlcmlmeQorICAgICAgICAgICAgb3AsIF8gPSBhbGdvLmFjY2VwdCgpCisgICAgICAgICAgICB3aXRoIG9wOgorICAgICAgICAgICAgICAgIG1zZyA9IGFzc29jICsgZXhwZWN0ZWRfY3QgKyBleHBlY3RlZF90YWcKKyAgICAgICAgICAgICAgICBvcC5zZW5kbXNnX2FmYWxnKFttc2ddLCBvcD1zb2NrZXQuQUxHX09QX0RFQ1JZUFQsIGl2PWl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzb2NsZW49YXNzb2NsZW4pCisgICAgICAgICAgICAgICAgcmVzID0gb3AucmVjdihsZW4obXNnKSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBsYWluLCByZXNbYXNzb2NsZW46LXRhZ2xlbl0pCisKKyAgICBAc3VwcG9ydC5yZXF1aXJlc19saW51eF92ZXJzaW9uKDQsIDMpICAjIHNlZSB0ZXN0X2Flc19jYmMKKyAgICBkZWYgdGVzdF9kcmJnX3ByX3NoYTI1NihzZWxmKToKKyAgICAgICAgIyBkZXRlcm1pbmlzdGljIHJhbmRvbSBiaXQgZ2VuZXJhdG9yLCBwcmVkaWN0aW9uIHJlc2lzdGFuY2UsIHNoYTI1NgorICAgICAgICB3aXRoIHNlbGYuY3JlYXRlX2FsZygncm5nJywgJ2RyYmdfcHJfc2hhMjU2JykgYXMgYWxnbzoKKyAgICAgICAgICAgIGV4dHJhX3NlZWQgPSBvcy51cmFuZG9tKDMyKQorICAgICAgICAgICAgYWxnby5zZXRzb2Nrb3B0KHNvY2tldC5TT0xfQUxHLCBzb2NrZXQuQUxHX1NFVF9LRVksIGV4dHJhX3NlZWQpCisgICAgICAgICAgICBvcCwgXyA9IGFsZ28uYWNjZXB0KCkKKyAgICAgICAgICAgIHdpdGggb3A6CisgICAgICAgICAgICAgICAgcm4gPSBvcC5yZWN2KDMyKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJuKSwgMzIpCisKKyAgICBkZWYgdGVzdF9zZW5kbXNnX2FmYWxnX2FyZ3Moc2VsZik6CisgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9BTEcsIHNvY2tldC5TT0NLX1NFUVBBQ0tFVCwgMCkKKyAgICAgICAgd2l0aCBzb2NrOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgICAgICBzb2NrLnNlbmRtc2dfYWZhbGcob3A9Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZygxKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICAgICAgc29jay5zZW5kbXNnX2FmYWxnKG9wPXNvY2tldC5BTEdfT1BfRU5DUllQVCwgYXNzb2NsZW49Tm9uZSkKKworICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgICAgIHNvY2suc2VuZG1zZ19hZmFsZyhvcD1zb2NrZXQuQUxHX09QX0VOQ1JZUFQsIGFzc29jbGVuPS0xKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0cyA9IFtHZW5lcmFsTW9kdWxlVGVzdHMsIEJhc2ljVENQVGVzdCwgVENQQ2xvc2VyVGVzdCwgVENQVGltZW91dFRlc3QsCiAgICAgICAgICAgICAgVGVzdEV4Y2VwdGlvbnMsIEJ1ZmZlcklPVGVzdCwgQmFzaWNUQ1BUZXN0MiwgQmFzaWNVRFBUZXN0LCBVRFBUaW1lb3V0VGVzdCBdCkBAIC01MzQ2LDYgKzU1NjIsNyBAQAogICAgIHRlc3RzLmV4dGVuZChbVElQQ1Rlc3QsIFRJUENUaHJlYWRhYmxlVGVzdF0pCiAgICAgdGVzdHMuZXh0ZW5kKFtCYXNpY0NBTlRlc3QsIENBTlRlc3RdKQogICAgIHRlc3RzLmV4dGVuZChbQmFzaWNSRFNUZXN0LCBSRFNUZXN0XSkKKyAgICB0ZXN0cy5hcHBlbmQoTGludXhLZXJuZWxDcnlwdG9BUEkpCiAgICAgdGVzdHMuZXh0ZW5kKFsKICAgICAgICAgQ21zZ01hY3JvVGVzdHMsCiAgICAgICAgIFNlbmRtc2dVRFBUZXN0LApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zb2NrZXRzZXJ2ZXIucHkgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQppbmRleCAwZDBmODZmLi4xNDBhNmFiIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NvY2tldHNlcnZlci5weQpAQCAtMywxMiArMywxMSBAQAogIiIiCiAKIGltcG9ydCBjb250ZXh0bGliCitpbXBvcnQgaW8KIGltcG9ydCBvcwogaW1wb3J0IHNlbGVjdAogaW1wb3J0IHNpZ25hbAogaW1wb3J0IHNvY2tldAotaW1wb3J0IHNlbGVjdAotaW1wb3J0IGVycm5vCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHNvY2tldHNlcnZlcgpAQCAtNDYsNyArNDUsNyBAQAogICAgIGVsc2U6CiAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigidGltZWQgb3V0IG9uICVyIiAlIChzb2NrLCkpCiAKLWlmIEhBVkVfVU5JWF9TT0NLRVRTOgoraWYgSEFWRV9VTklYX1NPQ0tFVFMgYW5kIEhBVkVfRk9SS0lORzoKICAgICBjbGFzcyBGb3JraW5nVW5peFN0cmVhbVNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvY2tldHNlcnZlci5Vbml4U3RyZWFtU2VydmVyKToKICAgICAgICAgcGFzcwpAQCAtNTgsNiArNTcsNyBAQAogCiBAY29udGV4dGxpYi5jb250ZXh0bWFuYWdlcgogZGVmIHNpbXBsZV9zdWJwcm9jZXNzKHRlc3RjYXNlKToKKyAgICAiIiJUZXN0cyB0aGF0IGEgY3VzdG9tIGNoaWxkIHByb2Nlc3MgaXMgbm90IHdhaXRlZCBvbiAoSXNzdWUgMTU0MDM4NikiIiIKICAgICBwaWQgPSBvcy5mb3JrKCkKICAgICBpZiBwaWQgPT0gMDoKICAgICAgICAgIyBEb24ndCByYWlzZSBhbiBleGNlcHRpb247IGl0IHdvdWxkIGJlIGNhdWdodCBieSB0aGUgdGVzdCBoYXJuZXNzLgpAQCAtMTAzLDcgKzEwMyw2IEBACiAgICAgICAgIGNsYXNzIE15U2VydmVyKHN2cmNscyk6CiAgICAgICAgICAgICBkZWYgaGFuZGxlX2Vycm9yKHNlbGYsIHJlcXVlc3QsIGNsaWVudF9hZGRyZXNzKToKICAgICAgICAgICAgICAgICBzZWxmLmNsb3NlX3JlcXVlc3QocmVxdWVzdCkKLSAgICAgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBjbGFzcyBNeUhhbmRsZXIoaGRscmJhc2UpOgpAQCAtMjc5LDYgKzI3OCwxODIgQEAKICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuVENQU2VydmVyKChIT1NULCAtMSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X21hbmFnZXIoc2VsZik6CisgICAgICAgIHdpdGggc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb2NrZXRzZXJ2ZXIuU3RyZWFtUmVxdWVzdEhhbmRsZXIpIGFzIHNlcnZlcjoKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtMSwgc2VydmVyLnNvY2tldC5maWxlbm8oKSkKKworCitjbGFzcyBFcnJvckhhbmRsZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIHNlcnZlcnMgcGFzcyBub3JtYWwgZXhjZXB0aW9ucyBmcm9tIHRoZSBoYW5kbGVyIHRvCisgICAgaGFuZGxlX2Vycm9yKCksIGFuZCB0aGF0IGV4aXRpbmcgZXhjZXB0aW9ucyBsaWtlIFN5c3RlbUV4aXQgYW5kCisgICAgS2V5Ym9hcmRJbnRlcnJ1cHQgYXJlIG5vdCBwYXNzZWQuIiIiCisKKyAgICBkZWYgdGVhckRvd24oc2VsZik6CisgICAgICAgIHRlc3Quc3VwcG9ydC51bmxpbmsodGVzdC5zdXBwb3J0LlRFU1RGTikKKworICAgIGRlZiB0ZXN0X3N5bmNfaGFuZGxlZChzZWxmKToKKyAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihWYWx1ZUVycm9yKQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPVRydWUpCisKKyAgICBkZWYgdGVzdF9zeW5jX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFN5c3RlbUV4aXQpOgorICAgICAgICAgICAgQmFzZUVycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnVGhyZWFkaW5nIHJlcXVpcmVkIGZvciB0aGlzIHRlc3QuJykKKyAgICBkZWYgdGVzdF90aHJlYWRpbmdfaGFuZGxlZChzZWxmKToKKyAgICAgICAgVGhyZWFkaW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3RfdGhyZWFkaW5nX25vdF9oYW5kbGVkKHNlbGYpOgorICAgICAgICBUaHJlYWRpbmdFcnJvclRlc3RTZXJ2ZXIoU3lzdGVtRXhpdCkKKyAgICAgICAgc2VsZi5jaGVja19yZXN1bHQoaGFuZGxlZD1GYWxzZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19oYW5kbGVkKHNlbGYpOgorICAgICAgICBGb3JraW5nRXJyb3JUZXN0U2VydmVyKFZhbHVlRXJyb3IpCisgICAgICAgIHNlbGYuY2hlY2tfcmVzdWx0KGhhbmRsZWQ9VHJ1ZSkKKworICAgIEByZXF1aXJlc19mb3JraW5nCisgICAgZGVmIHRlc3RfZm9ya2luZ19ub3RfaGFuZGxlZChzZWxmKToKKyAgICAgICAgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihTeXN0ZW1FeGl0KQorICAgICAgICBzZWxmLmNoZWNrX3Jlc3VsdChoYW5kbGVkPUZhbHNlKQorCisgICAgZGVmIGNoZWNrX3Jlc3VsdChzZWxmLCBoYW5kbGVkKToKKyAgICAgICAgd2l0aCBvcGVuKHRlc3Quc3VwcG9ydC5URVNURk4pIGFzIGxvZzoKKyAgICAgICAgICAgIGV4cGVjdGVkID0gJ0hhbmRsZXIgY2FsbGVkXG4nICsgJ0Vycm9yIGhhbmRsZWRcbicgKiBoYW5kbGVkCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxvZy5yZWFkKCksIGV4cGVjdGVkKQorCisKK2NsYXNzIEJhc2VFcnJvclRlc3RTZXJ2ZXIoc29ja2V0c2VydmVyLlRDUFNlcnZlcik6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGV4Y2VwdGlvbik6CisgICAgICAgIHNlbGYuZXhjZXB0aW9uID0gZXhjZXB0aW9uCisgICAgICAgIHN1cGVyKCkuX19pbml0X18oKEhPU1QsIDApLCBCYWRIYW5kbGVyKQorICAgICAgICB3aXRoIHNvY2tldC5jcmVhdGVfY29ubmVjdGlvbihzZWxmLnNlcnZlcl9hZGRyZXNzKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc2VsZi5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBzZWxmLnNlcnZlcl9jbG9zZSgpCisgICAgICAgIHNlbGYud2FpdF9kb25lKCkKKworICAgIGRlZiBoYW5kbGVfZXJyb3Ioc2VsZiwgcmVxdWVzdCwgY2xpZW50X2FkZHJlc3MpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0Vycm9yIGhhbmRsZWRcbicpCisKKyAgICBkZWYgd2FpdF9kb25lKHNlbGYpOgorICAgICAgICBwYXNzCisKKworY2xhc3MgQmFkSGFuZGxlcihzb2NrZXRzZXJ2ZXIuQmFzZVJlcXVlc3RIYW5kbGVyKToKKyAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICB3aXRoIG9wZW4odGVzdC5zdXBwb3J0LlRFU1RGTiwgJ2EnKSBhcyBsb2c6CisgICAgICAgICAgICBsb2cud3JpdGUoJ0hhbmRsZXIgY2FsbGVkXG4nKQorICAgICAgICByYWlzZSBzZWxmLnNlcnZlci5leGNlcHRpb24oJ1Rlc3QgZXJyb3InKQorCisKK2NsYXNzIFRocmVhZGluZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuVGhyZWFkaW5nTWl4SW4sCisgICAgICAgIEJhc2VFcnJvclRlc3RTZXJ2ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCAqcG9zLCAqKmt3KToKKyAgICAgICAgc2VsZi5kb25lID0gdGhyZWFkaW5nLkV2ZW50KCkKKyAgICAgICAgc3VwZXIoKS5fX2luaXRfXygqcG9zLCAqKmt3KQorCisgICAgZGVmIHNodXRkb3duX3JlcXVlc3Qoc2VsZiwgKnBvcywgKiprdyk6CisgICAgICAgIHN1cGVyKCkuc2h1dGRvd25fcmVxdWVzdCgqcG9zLCAqKmt3KQorICAgICAgICBzZWxmLmRvbmUuc2V0KCkKKworICAgIGRlZiB3YWl0X2RvbmUoc2VsZik6CisgICAgICAgIHNlbGYuZG9uZS53YWl0KCkKKworCitpZiBIQVZFX0ZPUktJTkc6CisgICAgY2xhc3MgRm9ya2luZ0Vycm9yVGVzdFNlcnZlcihzb2NrZXRzZXJ2ZXIuRm9ya2luZ01peEluLCBCYXNlRXJyb3JUZXN0U2VydmVyKToKKyAgICAgICAgZGVmIHdhaXRfZG9uZShzZWxmKToKKyAgICAgICAgICAgIFtjaGlsZF0gPSBzZWxmLmFjdGl2ZV9jaGlsZHJlbgorICAgICAgICAgICAgb3Mud2FpdHBpZChjaGlsZCwgMCkKKyAgICAgICAgICAgIHNlbGYuYWN0aXZlX2NoaWxkcmVuLmNsZWFyKCkKKworCitjbGFzcyBTb2NrZXRXcml0ZXJUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9iYXNpY3Moc2VsZik6CisgICAgICAgIGNsYXNzIEhhbmRsZXIoc29ja2V0c2VydmVyLlN0cmVhbVJlcXVlc3RIYW5kbGVyKToKKyAgICAgICAgICAgIGRlZiBoYW5kbGUoc2VsZik6CisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGUgPSBzZWxmLndmaWxlCisgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXIud2ZpbGVfZmlsZW5vID0gc2VsZi53ZmlsZS5maWxlbm8oKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlcXVlc3RfZmlsZW5vID0gc2VsZi5yZXF1ZXN0LmZpbGVubygpCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBzID0gc29ja2V0LnNvY2tldCgKKyAgICAgICAgICAgIHNlcnZlci5hZGRyZXNzX2ZhbWlseSwgc29ja2V0LlNPQ0tfU1RSRUFNLCBzb2NrZXQuSVBQUk9UT19UQ1ApCisgICAgICAgIHdpdGggczoKKyAgICAgICAgICAgIHMuY29ubmVjdChzZXJ2ZXIuc2VydmVyX2FkZHJlc3MpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShzZXJ2ZXIud2ZpbGUsIGlvLkJ1ZmZlcmVkSU9CYXNlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci53ZmlsZV9maWxlbm8sIHNlcnZlci5yZXF1ZXN0X2ZpbGVubykKKworICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRocmVhZGluZywgJ1RocmVhZGluZyByZXF1aXJlZCBmb3IgdGhpcyB0ZXN0LicpCisgICAgZGVmIHRlc3Rfd3JpdGUoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IHdmaWxlLndyaXRlKCkgc2VuZHMgZGF0YSBpbW1lZGlhdGVseSwgYW5kIHRoYXQgaXQgZG9lcworICAgICAgICAjIG5vdCB0cnVuY2F0ZSBzZW5kcyB3aGVuIGludGVycnVwdGVkIGJ5IGEgVW5peCBzaWduYWwKKyAgICAgICAgcHRocmVhZF9raWxsID0gdGVzdC5zdXBwb3J0LmdldF9hdHRyaWJ1dGUoc2lnbmFsLCAncHRocmVhZF9raWxsJykKKworICAgICAgICBjbGFzcyBIYW5kbGVyKHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlcik6CisgICAgICAgICAgICBkZWYgaGFuZGxlKHNlbGYpOgorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQxID0gc2VsZi53ZmlsZS53cml0ZShiJ3dyaXRlIGRhdGFcbicpCisgICAgICAgICAgICAgICAgIyBTaG91bGQgYmUgc2VudCBpbW1lZGlhdGVseSwgd2l0aG91dCByZXF1aXJpbmcgZmx1c2goKQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnJlY2VpdmVkID0gc2VsZi5yZmlsZS5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgYmlnX2NodW5rID0gYidcMCcgKiB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRQorICAgICAgICAgICAgICAgIHNlbGYuc2VydmVyLnNlbnQyID0gc2VsZi53ZmlsZS53cml0ZShiaWdfY2h1bmspCisKKyAgICAgICAgc2VydmVyID0gc29ja2V0c2VydmVyLlRDUFNlcnZlcigoSE9TVCwgMCksIEhhbmRsZXIpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuc2VydmVyX2Nsb3NlKQorICAgICAgICBpbnRlcnJ1cHRlZCA9IHRocmVhZGluZy5FdmVudCgpCisKKyAgICAgICAgZGVmIHNpZ25hbF9oYW5kbGVyKHNpZ251bSwgZnJhbWUpOgorICAgICAgICAgICAgaW50ZXJydXB0ZWQuc2V0KCkKKworICAgICAgICBvcmlnaW5hbCA9IHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1VTUjEsIHNpZ25hbF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2lnbmFsLnNpZ25hbCwgc2lnbmFsLlNJR1VTUjEsIG9yaWdpbmFsKQorICAgICAgICByZXNwb25zZTEgPSBOb25lCisgICAgICAgIHJlY2VpdmVkMiA9IE5vbmUKKyAgICAgICAgbWFpbl90aHJlYWQgPSB0aHJlYWRpbmcuZ2V0X2lkZW50KCkKKworICAgICAgICBkZWYgcnVuX2NsaWVudCgpOgorICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc2VydmVyLmFkZHJlc3NfZmFtaWx5LCBzb2NrZXQuU09DS19TVFJFQU0sCisgICAgICAgICAgICAgICAgc29ja2V0LklQUFJPVE9fVENQKQorICAgICAgICAgICAgd2l0aCBzLCBzLm1ha2VmaWxlKCdyYicpIGFzIHJlYWRlcjoKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3Qoc2VydmVyLnNlcnZlcl9hZGRyZXNzKQorICAgICAgICAgICAgICAgIG5vbmxvY2FsIHJlc3BvbnNlMQorICAgICAgICAgICAgICAgIHJlc3BvbnNlMSA9IHJlYWRlci5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgcy5zZW5kYWxsKGInY2xpZW50IHJlc3BvbnNlXG4nKQorCisgICAgICAgICAgICAgICAgcmVhZGVyLnJlYWQoMTAwKQorICAgICAgICAgICAgICAgICMgVGhlIG1haW4gdGhyZWFkIHNob3VsZCBub3cgYmUgYmxvY2tpbmcgaW4gYSBzZW5kKCkgc3lzY2FsbC4KKyAgICAgICAgICAgICAgICAjIEJ1dCBpbiB0aGVvcnksIGl0IGNvdWxkIGdldCBpbnRlcnJ1cHRlZCBieSBvdGhlciBzaWduYWxzLAorICAgICAgICAgICAgICAgICMgYW5kIHRoZW4gcmV0cmllZC4gU28ga2VlcCBzZW5kaW5nIHRoZSBzaWduYWwgaW4gYSBsb29wLCBpbgorICAgICAgICAgICAgICAgICMgY2FzZSBhbiBlYXJsaWVyIHNpZ25hbCBoYXBwZW5zIHRvIGJlIGRlbGl2ZXJlZCBhdCBhbgorICAgICAgICAgICAgICAgICMgaW5jb252ZW5pZW50IG1vbWVudC4KKyAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgorICAgICAgICAgICAgICAgICAgICBwdGhyZWFkX2tpbGwobWFpbl90aHJlYWQsIHNpZ25hbC5TSUdVU1IxKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnJ1cHRlZC53YWl0KHRpbWVvdXQ9ZmxvYXQoMSkpOgorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgICAgICAgICBub25sb2NhbCByZWNlaXZlZDIKKyAgICAgICAgICAgICAgICByZWNlaXZlZDIgPSBsZW4ocmVhZGVyLnJlYWQoKSkKKworICAgICAgICBiYWNrZ3JvdW5kID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9cnVuX2NsaWVudCkKKyAgICAgICAgYmFja2dyb3VuZC5zdGFydCgpCisgICAgICAgIHNlcnZlci5oYW5kbGVfcmVxdWVzdCgpCisgICAgICAgIGJhY2tncm91bmQuam9pbigpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VydmVyLnNlbnQxLCBsZW4ocmVzcG9uc2UxKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXNwb25zZTEsIGInd3JpdGUgZGF0YVxuJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2ZXIucmVjZWl2ZWQsIGInY2xpZW50IHJlc3BvbnNlXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnZlci5zZW50MiwgdGVzdC5zdXBwb3J0LlNPQ0tfTUFYX1NJWkUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocmVjZWl2ZWQyLCB0ZXN0LnN1cHBvcnQuU09DS19NQVhfU0laRSAtIDEwMCkKKwogCiBjbGFzcyBNaXNjVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3NvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3NvcnQucHkKaW5kZXggYTVkMGViZi4uOThjY2FiNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc29ydC5weQpAQCAtMSw2ICsxLDUgQEAKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogaW1wb3J0IHJhbmRvbQotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgY21wX3RvX2tleQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Nwd2QucHkgYi9MaWIvdGVzdC90ZXN0X3Nwd2QucHkKaW5kZXggYmVhN2FiMS4uZTg5M2YzYSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zcHdkLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3B3ZC5weQpAQCAtNTYsNSArNTYsMjAgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc3B3ZC5nZXRzcG5hbSwgYnl0ZXNfbmFtZSkKIAogCitAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKG9zLCAnZ2V0ZXVpZCcpIGFuZCBvcy5nZXRldWlkKCkgIT0gMCwKKyAgICAgICAgICAgICAgICAgICAgICdub24tcm9vdCB1c2VyIHJlcXVpcmVkJykKK2NsYXNzIFRlc3RTcHdkTm9uUm9vdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICBkZWYgdGVzdF9nZXRzcG5hbV9leGNlcHRpb24oc2VsZik6CisgICAgICAgIG5hbWUgPSAnYmluJworICAgICAgICB0cnk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFBlcm1pc3Npb25FcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc3B3ZC5nZXRzcG5hbShuYW1lKQorICAgICAgICBleGNlcHQgS2V5RXJyb3IgYXMgZXhjOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgic3B3ZCBlbnRyeSAlciBkb2Vzbid0IGV4aXN0OiAlcyIgJSAobmFtZSwgZXhjKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGNtLmV4Y2VwdGlvbiksICdbRXJybm8gMTNdIFBlcm1pc3Npb24gZGVuaWVkJykKKworCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zc2wucHkgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQppbmRleCA1NTE1NTgzLi5kMjAzY2RkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3NzbC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3NzbC5weQpAQCAtMjEsNiArMjEsMTMgQEAKIAogc3NsID0gc3VwcG9ydC5pbXBvcnRfbW9kdWxlKCJzc2wiKQogCit0cnk6CisgICAgaW1wb3J0IHRocmVhZGluZworZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF9oYXZlX3RocmVhZHMgPSBGYWxzZQorZWxzZToKKyAgICBfaGF2ZV90aHJlYWRzID0gVHJ1ZQorCiBQUk9UT0NPTFMgPSBzb3J0ZWQoc3NsLl9QUk9UT0NPTF9OQU1FUykKIEhPU1QgPSBzdXBwb3J0LkhPU1QKIElTX0xJQlJFU1NMID0gc3NsLk9QRU5TU0xfVkVSU0lPTi5zdGFydHN3aXRoKCdMaWJyZVNTTCcpCkBAIC01NiwxMiArNjMsMTIgQEAKICMgVHdvIGtleXMgYW5kIGNlcnRzIHNpZ25lZCBieSB0aGUgc2FtZSBDQSAoZm9yIFNOSSB0ZXN0cykKIFNJR05FRF9DRVJURklMRSA9IGRhdGFfZmlsZSgia2V5Y2VydDMucGVtIikKIFNJR05FRF9DRVJURklMRTIgPSBkYXRhX2ZpbGUoImtleWNlcnQ0LnBlbSIpCi1TSUdOSU5HX0NBID0gZGF0YV9maWxlKCJweWNhY2VydC5wZW0iKQorIyBTYW1lIGNlcnRpZmljYXRlIGFzIHB5Y2FjZXJ0LnBlbSwgYnV0IHdpdGhvdXQgZXh0cmEgdGV4dCBpbiBmaWxlCitTSUdOSU5HX0NBID0gZGF0YV9maWxlKCJjYXBhdGgiLCAiY2VmZjE3MTAuMCIpCiAjIGNlcnQgd2l0aCBhbGwga2luZHMgb2Ygc3ViamVjdCBhbHQgbmFtZXMKIEFMTFNBTkZJTEUgPSBkYXRhX2ZpbGUoImFsbHNhbnMucGVtIikKIAogUkVNT1RFX0hPU1QgPSAic2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQiCi1SRU1PVEVfUk9PVF9DRVJUID0gZGF0YV9maWxlKCJzZWxmc2lnbmVkX3B5dGhvbnRlc3Rkb3RuZXQucGVtIikKIAogRU1QVFlDRVJUID0gZGF0YV9maWxlKCJudWxsY2VydC5wZW0iKQogQkFEQ0VSVCA9IGRhdGFfZmlsZSgiYmFkY2VydC5wZW0iKQpAQCAtNzMsNiArODAsMTIgQEAKIERIRklMRSA9IGRhdGFfZmlsZSgiZGgxMDI0LnBlbSIpCiBCWVRFU19ESEZJTEUgPSBvcy5mc2VuY29kZShESEZJTEUpCiAKKyMgTm90IGRlZmluZWQgaW4gYWxsIHZlcnNpb25zIG9mIE9wZW5TU0wKK09QX05PX0NPTVBSRVNTSU9OID0gZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApCitPUF9TSU5HTEVfREhfVVNFID0gZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCkKK09QX1NJTkdMRV9FQ0RIX1VTRSA9IGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCkKK09QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSA9IGdldGF0dHIoc3NsLCAiT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFIiwgMCkKKwogCiBkZWYgaGFuZGxlX2Vycm9yKHByZWZpeCk6CiAgICAgZXhjX2Zvcm1hdCA9ICcgJy5qb2luKHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uKCpzeXMuZXhjX2luZm8oKSkpCkBAIC0xMzAsNiArMTQzLDIxIEBACiBuZWVkc19zbmkgPSB1bml0dGVzdC5za2lwVW5sZXNzKHNzbC5IQVNfU05JLCAiU05JIHN1cHBvcnQgbmVlZGVkIGZvciB0aGlzIHRlc3QiKQogCiAKK2RlZiB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFMsICosCisgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2FfY2VydHM9Tm9uZSwKKyAgICAgICAgICAgICAgICAgICAgIGNpcGhlcnM9Tm9uZSwgY2VydGZpbGU9Tm9uZSwga2V5ZmlsZT1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgorICAgIGNvbnRleHQgPSBzc2wuU1NMQ29udGV4dChzc2xfdmVyc2lvbikKKyAgICBpZiBjZXJ0X3JlcXMgaXMgbm90IE5vbmU6CisgICAgICAgIGNvbnRleHQudmVyaWZ5X21vZGUgPSBjZXJ0X3JlcXMKKyAgICBpZiBjYV9jZXJ0cyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FfY2VydHMpCisgICAgaWYgY2VydGZpbGUgaXMgbm90IE5vbmUgb3Iga2V5ZmlsZSBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oY2VydGZpbGUsIGtleWZpbGUpCisgICAgaWYgY2lwaGVycyBpcyBub3QgTm9uZToKKyAgICAgICAgY29udGV4dC5zZXRfY2lwaGVycyhjaXBoZXJzKQorICAgIHJldHVybiBjb250ZXh0LndyYXBfc29ja2V0KHNvY2ssICoqa3dhcmdzKQorCiBjbGFzcyBCYXNpY1NvY2tldFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZXN0X2NvbnN0YW50cyhzZWxmKToKQEAgLTM1MCwxNyArMzc4LDE3IEBACiAgICAgICAgICMgSXNzdWUgIzc5NDM6IGFuIFNTTCBvYmplY3QgZG9lc24ndCBjcmVhdGUgcmVmZXJlbmNlIGN5Y2xlcyB3aXRoCiAgICAgICAgICMgaXRzZWxmLgogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQocykKKyAgICAgICAgc3MgPSB0ZXN0X3dyYXBfc29ja2V0KHMpCiAgICAgICAgIHdyID0gd2Vha3JlZi5yZWYoc3MpCiAgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoIiIsIFJlc291cmNlV2FybmluZykpOgogICAgICAgICAgICAgZGVsIHNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHdyKCksIE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwod3IoKSwgTm9uZSkKIAogICAgIGRlZiB0ZXN0X3dyYXBwZWRfdW5jb25uZWN0ZWQoc2VsZik6CiAgICAgICAgICMgTWV0aG9kcyBvbiBhbiB1bmNvbm5lY3RlZCBTU0xTb2NrZXQgcHJvcGFnYXRlIHRoZSBvcmlnaW5hbAogICAgICAgICAjIE9TRXJyb3IgcmFpc2UgYnkgdGhlIHVuZGVybHlpbmcgc29ja2V0IG9iamVjdC4KICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMpIGFzIHNzOgorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2LCAxKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoT1NFcnJvciwgc3MucmVjdl9pbnRvLCBieXRlYXJyYXkoYid4JykpCiAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yLCBzcy5yZWN2ZnJvbSwgMSkKQEAgLTM3NCwxMCArNDAyLDEwIEBACiAgICAgICAgIGZvciB0aW1lb3V0IGluIChOb25lLCAwLjAsIDUuMCk6CiAgICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKICAgICAgICAgICAgIHMuc2V0dGltZW91dCh0aW1lb3V0KQotICAgICAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQocykgYXMgc3M6CiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lb3V0LCBzcy5nZXR0aW1lb3V0KCkpCiAKLSAgICBkZWYgdGVzdF9lcnJvcnMoc2VsZik6CisgICAgZGVmIHRlc3RfZXJyb3JzX3NzbHdyYXAoc2VsZik6CiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgImNlcnRmaWxlIG11c3QgYmUgc3BlY2lmaWVkIiwKQEAgLTM4NywxMCArNDE1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJjZXJ0ZmlsZSBtdXN0IGJlIHNwZWNpZmllZCBmb3Igc2VydmVyLXNpZGUgb3BlcmF0aW9ucyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPSIiKQorICAgICAgICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldCwgc29jaywgc2VydmVyX3NpZGU9VHJ1ZSwgY2VydGZpbGU9IiIpCiAgICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHNvY2ssIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChWYWx1ZUVycm9yLCAiY2FuJ3QgY29ubmVjdCBpbiBzZXJ2ZXItc2lkZSBtb2RlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgKEhPU1QsIDgwODApKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGNtOgogICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KCkgYXMgc29jazoKICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQoc29jaywgY2VydGZpbGU9Tk9ORVhJU1RJTkdDRVJUKQpAQCAtNDEzLDcgKzQ0MSw3IEBACiAgICAgICAgIHNvY2sgPSBzb2NrZXQuc29ja2V0KCkKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLlNTTEVycm9yKToKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldChzb2NrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRmaWxlPWNlcnRmaWxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNzbF92ZXJzaW9uPXNzbC5QUk9UT0NPTF9UTFN2MSkKIApAQCAtNjAwLDcgKzYyOCw3IEBACiAgICAgICAgIHMubGlzdGVuKCkKICAgICAgICAgYyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCiAgICAgICAgIGMuY29ubmVjdChzLmdldHNvY2tuYW1lKCkpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KGMsIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKSBhcyBzczoKICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CiAgICAgICAgICAgICAgICAgc3MuZ2V0X2NoYW5uZWxfYmluZGluZygidW5rbm93bi10eXBlIikKICAgICAgICAgcy5jbG9zZSgpCkBAIC02MTAsMTUgKzYzOCwxNSBAQAogICAgIGRlZiB0ZXN0X3Rsc191bmlxdWVfY2hhbm5lbF9iaW5kaW5nKHNlbGYpOgogICAgICAgICAjIHVuY29ubmVjdGVkIHNob3VsZCByZXR1cm4gTm9uZSBmb3Iga25vd24gdHlwZQogICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgd2l0aCBzc2wud3JhcF9zb2NrZXQocykgYXMgc3M6CisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKICAgICAgICAgIyB0aGUgc2FtZSBmb3Igc2VydmVyLXNpZGUKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgIHdpdGggc3NsLndyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHMsIHNlcnZlcl9zaWRlPVRydWUsIGNlcnRmaWxlPUNFUlRGSUxFKSBhcyBzczoKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNzLmdldF9jaGFubmVsX2JpbmRpbmcoInRscy11bmlxdWUiKSkKIAogICAgIGRlZiB0ZXN0X2RlYWxsb2Nfd2FybihzZWxmKToKLSAgICAgICAgc3MgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKICAgICAgICAgciA9IHJlcHIoc3MpCiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhSZXNvdXJjZVdhcm5pbmcpIGFzIGNtOgogICAgICAgICAgICAgc3MgPSBOb25lCkBAIC03MzcsNyArNzY1LDcgQEAKICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX0RHUkFNKQogICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOb3RJbXBsZW1lbnRlZEVycm9yKSBhcyBjeDoKLSAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzLCBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSkKKyAgICAgICAgICAgIHRlc3Rfd3JhcF9zb2NrZXQocywgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGN4LmV4Y2VwdGlvbiksICJvbmx5IHN0cmVhbSBzb2NrZXRzIGFyZSBzdXBwb3J0ZWQiKQogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE5vdEltcGxlbWVudGVkRXJyb3IpIGFzIGN4OgpAQCAtODA5LDYgKzgzNywyMiBAQAogICAgICAgICBzZWxmLmNlcnRfdGltZV9vaygiRmViICA5IDAwOjAwOjAwIDIwMDcgR01UIiwgMTE3MDk3OTIwMC4wKQogICAgICAgICBzZWxmLmNlcnRfdGltZV9mYWlsKGxvY2FsX2ZlYnJ1YXJ5X25hbWUoKSArICIgIDkgMDA6MDA6MDAgMjAwNyBHTVQiKQogCisgICAgZGVmIHRlc3RfY29ubmVjdF9leF9lcnJvcihzZWxmKToKKyAgICAgICAgc2VydmVyID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlcnZlci5jbG9zZSkKKyAgICAgICAgcG9ydCA9IHN1cHBvcnQuYmluZF9wb3J0KHNlcnZlcikgICMgUmVzZXJ2ZSBwb3J0IGJ1dCBkb24ndCBsaXN0ZW4KKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVEKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKEhPU1QsIHBvcnQpKQorICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKKyAgICAgICAgIyBtYWNoaW5lcyBzb21ldGltZXMgcmV0dXJuIEVXT1VMREJMT0NLLgorICAgICAgICBlcnJvcnMgPSAoCisgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAorICAgICAgICAgICAgZXJybm8uRVdPVUxEQkxPQ0ssCisgICAgICAgICkKKyAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQorCiAKIGNsYXNzIENvbnRleHRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTgzNCwxMyArODc4LDIyIEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzc2wuU1NMRXJyb3IsICJObyBjaXBoZXIgY2FuIGJlIHNlbGVjdGVkIik6CiAgICAgICAgICAgICBjdHguc2V0X2NpcGhlcnMoIl4kOiw7PyonZG9yb3RoeXgiKQogCisgICAgQHVuaXR0ZXN0LnNraXBJZihzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMSwgMCwgMiwgMCwgMCksICdPcGVuU1NMIHRvbyBvbGQnKQorICAgIGRlZiB0ZXN0X2dldF9jaXBoZXJzKHNlbGYpOgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgIGN0eC5zZXRfY2lwaGVycygnQUVTR0NNJykKKyAgICAgICAgbmFtZXMgPSBzZXQoZFsnbmFtZSddIGZvciBkIGluIGN0eC5nZXRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMyNTYtR0NNLVNIQTM4NCcsIG5hbWVzKQorICAgICAgICBzZWxmLmFzc2VydEluKCdBRVMxMjgtR0NNLVNIQTI1NicsIG5hbWVzKQorCiAgICAgQHNraXBfaWZfYnJva2VuX3VidW50dV9zc2wKICAgICBkZWYgdGVzdF9vcHRpb25zKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICMgT1BfQUxMIHwgT1BfTk9fU1NMdjIgfCBPUF9OT19TU0x2MyBpcyB0aGUgZGVmYXVsdCB2YWx1ZQogICAgICAgICBkZWZhdWx0ID0gKHNzbC5PUF9BTEwgfCBzc2wuT1BfTk9fU1NMdjIgfCBzc2wuT1BfTk9fU1NMdjMpCi0gICAgICAgIGlmIG5vdCBJU19MSUJSRVNTTCBhbmQgc3NsLk9QRU5TU0xfVkVSU0lPTl9JTkZPID49ICgxLCAxLCAwKToKLSAgICAgICAgICAgIGRlZmF1bHQgfD0gc3NsLk9QX05PX0NPTVBSRVNTSU9OCisgICAgICAgICMgU1NMQ29udGV4dCBhbHNvIGVuYWJsZXMgdGhlc2UgYnkgZGVmYXVsdAorICAgICAgICBkZWZhdWx0IHw9IChPUF9OT19DT01QUkVTU0lPTiB8IE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSB8CisgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9ESF9VU0UgfCBPUF9TSU5HTEVfRUNESF9VU0UpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGVmYXVsdCwgY3R4Lm9wdGlvbnMpCiAgICAgICAgIGN0eC5vcHRpb25zIHw9IHNzbC5PUF9OT19UTFN2MQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRlZmF1bHQgfCBzc2wuT1BfTk9fVExTdjEsIGN0eC5vcHRpb25zKQpAQCAtMTIwNSwxNiArMTI1OCwyOSBAQAogICAgICAgICAgICAgc3RhdHNbIng1MDkiXSArPSAxCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5jZXJ0X3N0b3JlX3N0YXRzKCksIHN0YXRzKQogCisgICAgZGVmIF9hc3NlcnRfY29udGV4dF9vcHRpb25zKHNlbGYsIGN0eCk6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgaWYgT1BfTk9fQ09NUFJFU1NJT04gIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9OT19DT01QUkVTU0lPTiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgT1BfTk9fQ09NUFJFU1NJT04pCisgICAgICAgIGlmIE9QX1NJTkdMRV9ESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfREhfVVNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9TSU5HTEVfREhfVVNFKQorICAgICAgICBpZiBPUF9TSU5HTEVfRUNESF9VU0UgIT0gMDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBPUF9TSU5HTEVfRUNESF9VU0UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE9QX1NJTkdMRV9FQ0RIX1VTRSkKKyAgICAgICAgaWYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFICE9IDA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgT1BfQ0lQSEVSX1NFUlZFUl9QUkVGRVJFTkNFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBPUF9DSVBIRVJfU0VSVkVSX1BSRUZFUkVOQ0UpCisKICAgICBkZWYgdGVzdF9jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuY3JlYXRlX2RlZmF1bHRfY29udGV4dCgpCisKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9TU0x2MjMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnZlcmlmeV9tb2RlLCBzc2wuQ0VSVF9SRVFVSVJFRCkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgY3R4Lm9wdGlvbnMgJiBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICAgICBnZXRhdHRyKHNzbCwgIk9QX05PX0NPTVBSRVNTSU9OIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCisKIAogICAgICAgICB3aXRoIG9wZW4oU0lHTklOR19DQSkgYXMgZjoKICAgICAgICAgICAgIGNhZGF0YSA9IGYucmVhZCgpCkBAIC0xMjIyLDQwICsxMjg4LDI0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZGF0YT1jYWRhdGEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KHNzbC5QdXJwb3NlLkNMSUVOVF9BVVRIKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1NTTHYyMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX05PTkUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9OT19DT01QUkVTU0lPTiIsIDApLAotICAgICAgICApCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCi0gICAgICAgICAgICBjdHgub3B0aW9ucyAmIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0RIX1VTRSIsIDApLAotICAgICAgICAgICAgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfREhfVVNFIiwgMCksCi0gICAgICAgICkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICAgIGN0eC5vcHRpb25zICYgZ2V0YXR0cihzc2wsICJPUF9TSU5HTEVfRUNESF9VU0UiLCAwKSwKLSAgICAgICAgICAgIGdldGF0dHIoc3NsLCAiT1BfU0lOR0xFX0VDREhfVVNFIiwgMCksCi0gICAgICAgICkKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICBkZWYgdGVzdF9fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4Lm9wdGlvbnMgJiBzc2wuT1BfTk9fU1NMdjIsIHNzbC5PUF9OT19TU0x2MikKKyAgICAgICAgc2VsZi5fYXNzZXJ0X2NvbnRleHRfb3B0aW9ucyhjdHgpCiAKICAgICAgICAgY3R4ID0gc3NsLl9jcmVhdGVfc3RkbGliX2NvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5wcm90b2NvbCwgc3NsLlBST1RPQ09MX1RMU3YxKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgICAgICBjdHggPSBzc2wuX2NyZWF0ZV9zdGRsaWJfY29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKQEAgLTEyNjMsMTIgKzEzMTMsMTIgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgucHJvdG9jb2wsIHNzbC5QUk9UT0NPTF9UTFN2MSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQogICAgICAgICBzZWxmLmFzc2VydFRydWUoY3R4LmNoZWNrX2hvc3RuYW1lKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC5vcHRpb25zICYgc3NsLk9QX05PX1NTTHYyLCBzc2wuT1BfTk9fU1NMdjIpCisgICAgICAgIHNlbGYuX2Fzc2VydF9jb250ZXh0X29wdGlvbnMoY3R4KQogCiAgICAgICAgIGN0eCA9IHNzbC5fY3JlYXRlX3N0ZGxpYl9jb250ZXh0KHB1cnBvc2U9c3NsLlB1cnBvc2UuQ0xJRU5UX0FVVEgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LnByb3RvY29sLCBzc2wuUFJPVE9DT0xfU1NMdjIzKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgub3B0aW9ucyAmIHNzbC5PUF9OT19TU0x2Miwgc3NsLk9QX05PX1NTTHYyKQorICAgICAgICBzZWxmLl9hc3NlcnRfY29udGV4dF9vcHRpb25zKGN0eCkKIAogICAgIGRlZiB0ZXN0X2NoZWNrX2hvc3RuYW1lKHNlbGYpOgogICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTdjEpCkBAIC0xMjkyLDYgKzEzNDIsMTcgQEAKICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShjdHguY2hlY2tfaG9zdG5hbWUpCiAKKyAgICBkZWYgdGVzdF9jb250ZXh0X2NsaWVudF9zZXJ2ZXIoc2VsZik6CisgICAgICAgICMgUFJPVE9DT0xfVExTX0NMSUVOVCBoYXMgc2FuZSBkZWZhdWx0cworICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGN0eC5jaGVja19ob3N0bmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjdHgudmVyaWZ5X21vZGUsIHNzbC5DRVJUX1JFUVVJUkVEKQorCisgICAgICAgICMgUFJPVE9DT0xfVExTX1NFUlZFUiBoYXMgZGlmZmVyZW50IGJ1dCBhbHNvIHNhbmUgZGVmYXVsdHMKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU19TRVJWRVIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoY3R4LmNoZWNrX2hvc3RuYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGN0eC52ZXJpZnlfbW9kZSwgc3NsLkNFUlRfTk9ORSkKKwogCiBjbGFzcyBTU0xFcnJvclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtMTM5NywxNDAgKzE0NTgsMTA1IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgYmlvLndyaXRlLCAxKQogCiAKLWNsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwVW5sZXNzKF9oYXZlX3RocmVhZHMsICJOZWVkcyB0aHJlYWRpbmcgbW9kdWxlIikKK2NsYXNzIFNpbXBsZUJhY2tncm91bmRUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6CisKKyAgICAiIiJUZXN0cyB0aGF0IGNvbm5lY3QgdG8gYSBzaW1wbGUgc2VydmVyIHJ1bm5pbmcgaW4gdGhlIGJhY2tncm91bmQiIiIKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgc2VsZi5zZXJ2ZXJfYWRkciA9IChIT1NULCBzZXJ2ZXIucG9ydCkKKyAgICAgICAgc2VydmVyLl9fZW50ZXJfXygpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUsIE5vbmUpCiAKICAgICBkZWYgdGVzdF9jb25uZWN0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgcy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHMuc2VydmVyX3NpZGUpCiAKLSAgICAgICAgICAgICMgdGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKKyAgICAgICAgd2l0aCB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1TSUdOSU5HX0NBKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzLnNlcnZlcl9zaWRlKQogCi0gICAgICAgICAgICAjIHRoaXMgc2hvdWxkIHN1Y2NlZWQgYmVjYXVzZSB3ZSBzcGVjaWZ5IHRoZSByb290IGNlcnQKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9UkVNT1RFX1JPT1RfQ0VSVCkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZmFpbChzZWxmKToKKyAgICAgICAgIyBUaGlzIHNob3VsZCBmYWlsIGJlY2F1c2Ugd2UgaGF2ZSBubyB2ZXJpZmljYXRpb24gY2VydHMuIENvbm5lY3Rpb24KKyAgICAgICAgIyBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbiBpbmRlcGVuZGVudAorICAgICAgICAjIHRlc3QgbWV0aG9kLgorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNzbC5TU0xFcnJvciwgImNlcnRpZmljYXRlIHZlcmlmeSBmYWlsZWQiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXgoc2VsZik6CiAgICAgICAgICMgSXNzdWUgIzExMzI2OiBjaGVjayBjb25uZWN0X2V4KCkgaW1wbGVtZW50YXRpb24KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgwLCBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUocy5nZXRwZWVyY2VydCgpKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19jb25uZWN0X2V4KHNlbGYpOgogICAgICAgICAjIElzc3VlICMxMTMyNjogbm9uLWJsb2NraW5nIGNvbm5lY3RfZXgoKSBzaG91bGQgYWxsb3cgaGFuZHNoYWtlCiAgICAgICAgICMgdG8gcHJvY2VlZCBhZnRlciB0aGUgc29ja2V0IGdldHMgcmVhZHkuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJULAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb19oYW5kc2hha2Vfb25fY29ubmVjdD1GYWxzZSkKKyAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVNJR05JTkdfQ0EsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICByYyA9IHMuY29ubmVjdF9leChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICAjIEVXT1VMREJMT0NLIHVuZGVyIFdpbmRvd3MsIEVJTlBST0dSRVNTIGVsc2V3aGVyZQorICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoMCwgZXJybm8uRUlOUFJPR1JFU1MsIGVycm5vLkVXT1VMREJMT0NLKSkKKyAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICBzZWxlY3Quc2VsZWN0KFtdLCBbc10sIFtdLCA1LjApCisgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQorICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0YmxvY2tpbmcoRmFsc2UpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgICMgRVdPVUxEQkxPQ0sgdW5kZXIgV2luZG93cywgRUlOUFJPR1JFU1MgZWxzZXdoZXJlCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKDAsIGVycm5vLkVJTlBST0dSRVNTLCBlcnJuby5FV09VTERCTE9DSykpCi0gICAgICAgICAgICAgICAgIyBXYWl0IGZvciBjb25uZWN0IHRvIGZpbmlzaAorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKKyAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6CiAgICAgICAgICAgICAgICAgc2VsZWN0LnNlbGVjdChbXSwgW3NdLCBbXSwgNS4wKQotICAgICAgICAgICAgICAgICMgTm9uLWJsb2NraW5nIGhhbmRzaGFrZQotICAgICAgICAgICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFJlYWRFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50V3JpdGVFcnJvcjoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10sIDUuMCkKLSAgICAgICAgICAgICAgICAjIFNTTCBlc3RhYmxpc2hlZAotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdGltZW91dF9jb25uZWN0X2V4KHNlbGYpOgotICAgICAgICAjIElzc3VlICMxMjA2NTogb24gYSB0aW1lb3V0LCBjb25uZWN0X2V4KCkgc2hvdWxkIHJldHVybiB0aGUgb3JpZ2luYWwKLSAgICAgICAgIyBlcnJubyAobWltaWNraW5nIHRoZSBiZWhhdmlvdXIgb2Ygbm9uLVNTTCBzb2NrZXRzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzID0gc3NsLndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfUkVRVUlSRUQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPVJFTU9URV9ST09UX0NFUlQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCi0gICAgICAgICAgICAgICAgcmMgPSBzLmNvbm5lY3RfZXgoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgICAgIGlmIHJjID09IDA6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgKGVycm5vLkVBR0FJTiwgZXJybm8uRVdPVUxEQkxPQ0spKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKLQotICAgIGRlZiB0ZXN0X2Nvbm5lY3RfZXhfZXJyb3Ioc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX1JFUVVJUkVELAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1SRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJjID0gcy5jb25uZWN0X2V4KChSRU1PVEVfSE9TVCwgNDQ0KSkKLSAgICAgICAgICAgICAgICAjIElzc3VlICMxOTkxOTogV2luZG93cyBtYWNoaW5lcyBvciBWTXMgaG9zdGVkIG9uIFdpbmRvd3MKLSAgICAgICAgICAgICAgICAjIG1hY2hpbmVzIHNvbWV0aW1lcyByZXR1cm4gRVdPVUxEQkxPQ0suCi0gICAgICAgICAgICAgICAgZXJyb3JzID0gKAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FQ09OTlJFRlVTRUQsIGVycm5vLkVIT1NUVU5SRUFDSCwgZXJybm8uRVRJTUVET1VULAotICAgICAgICAgICAgICAgICAgICBlcnJuby5FV09VTERCTE9DSywKLSAgICAgICAgICAgICAgICApCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihyYywgZXJyb3JzKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBzLmNsb3NlKCkKKyAgICAgICAgIyBTU0wgZXN0YWJsaXNoZWQKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHMuZ2V0cGVlcmNlcnQoKSkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0KHNlbGYpOgotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgICMgU2FtZSBhcyB0ZXN0X2Nvbm5lY3QsIGJ1dCB3aXRoIGEgc2VwYXJhdGVseSBjcmVhdGVkIGNvbnRleHQKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBzZXJ2ZXIgaG9zdG5hbWUKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1SRU1PVEVfSE9TVCkKLSAgICAgICAgICAgIHMuY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QsIChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGlzIHNob3VsZCBzdWNjZWVkIGJlY2F1c2Ugd2Ugc3BlY2lmeSB0aGUgcm9vdCBjZXJ0Ci0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFJFTU9URV9ST09UX0NFUlQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICAjIFNhbWUgYXMgdGVzdF9jb25uZWN0LCBidXQgd2l0aCBhIHNlcGFyYXRlbHkgY3JlYXRlZCBjb250ZXh0CisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHt9LCBzLmdldHBlZXJjZXJ0KCkpCisgICAgICAgICMgU2FtZSB3aXRoIGEgc2VydmVyIGhvc3RuYW1lCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT0iZHVtbXkiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgICMgVGhpcyBzaG91bGQgc3VjY2VlZCBiZWNhdXNlIHdlIHNwZWNpZnkgdGhlIHJvb3QgY2VydAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKworICAgIGRlZiB0ZXN0X2Nvbm5lY3Rfd2l0aF9jb250ZXh0X2ZhaWwoc2VsZik6CisgICAgICAgICMgVGhpcyBzaG91bGQgZmFpbCBiZWNhdXNlIHdlIGhhdmUgbm8gdmVyaWZpY2F0aW9uIGNlcnRzLiBDb25uZWN0aW9uCisgICAgICAgICMgZmFpbHVyZSBjcmFzaGVzIFRocmVhZGVkRWNob1NlcnZlciwgc28gcnVuIHRoaXMgaW4gYW4gaW5kZXBlbmRlbnQKKyAgICAgICAgIyB0ZXN0IG1ldGhvZC4KKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgcyA9IGN0eC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHMuY2xvc2UpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiY2VydGlmaWNhdGUgdmVyaWZ5IGZhaWxlZCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMuY29ubmVjdCwgc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIFZlcmlmeSBzZXJ2ZXIgY2VydGlmaWNhdGVzIHVzaW5nIHRoZSBgY2FwYXRoYCBhcmd1bWVudApAQCAtMTUzOCwxOTggKzE1NjQsMTMwIEBACiAgICAgICAgICMgT3BlblNTTCAwLjkuOG4gYW5kIDEuMC4wLCBhcyBhIHJlc3VsdCB0aGUgY2FwYXRoIGRpcmVjdG9yeSBtdXN0CiAgICAgICAgICMgY29udGFpbiBib3RoIHZlcnNpb25zIG9mIGVhY2ggY2VydGlmaWNhdGUgKHNhbWUgY29udGVudCwgZGlmZmVyZW50CiAgICAgICAgICMgZmlsZW5hbWUpIGZvciB0aGlzIHRlc3QgdG8gYmUgcG9ydGFibGUgYWNyb3NzIE9wZW5TU0wgcmVsZWFzZXMuCi0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQotICAgICAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKLSAgICAgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECi0gICAgICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKQotICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKKyAgICAgICAgIyBTYW1lIHdpdGggYSBieXRlcyBgY2FwYXRoYCBhcmd1bWVudAorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1CWVRFU19DQVBBVEgpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIGRlZiB0ZXN0X2Nvbm5lY3RfY2FkYXRhKHNlbGYpOgotICAgICAgICB3aXRoIG9wZW4oUkVNT1RFX1JPT1RfQ0VSVCkgYXMgZjoKKyAgICAgICAgd2l0aCBvcGVuKFNJR05JTkdfQ0EpIGFzIGY6CiAgICAgICAgICAgICBwZW0gPSBmLnJlYWQoKQogICAgICAgICBkZXIgPSBzc2wuUEVNX2NlcnRfdG9fREVSX2NlcnQocGVtKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KFJFTU9URV9IT1NUKToKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9cGVtKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgIGN0eC52ZXJpZnlfbW9kZSA9IHNzbC5DRVJUX1JFUVVJUkVECisgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FkYXRhPXBlbSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQogCi0gICAgICAgICAgICAjIHNhbWUgd2l0aCBERVIKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhjYWRhdGE9ZGVyKQotICAgICAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6Ci0gICAgICAgICAgICAgICAgcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNlcnQpCisgICAgICAgICMgc2FtZSB3aXRoIERFUgorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhZGF0YT1kZXIpCisgICAgICAgIHdpdGggY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICAgICBjZXJ0ID0gcy5nZXRwZWVyY2VydCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKIAogICAgIEB1bml0dGVzdC5za2lwSWYob3MubmFtZSA9PSAibnQiLCAiQ2FuJ3QgdXNlIGEgc29ja2V0IGFzIGEgZmlsZSB1bmRlciBXaW5kb3dzIikKICAgICBkZWYgdGVzdF9tYWtlZmlsZV9jbG9zZShzZWxmKToKICAgICAgICAgIyBJc3N1ZSAjNTIzODogY3JlYXRpbmcgYSBmaWxlLWxpa2Ugb2JqZWN0IHdpdGggbWFrZWZpbGUoKSBzaG91bGRuJ3QKICAgICAgICAgIyBkZWxheSBjbG9zaW5nIHRoZSB1bmRlcmx5aW5nICJyZWFsIHNvY2tldCIgKGhlcmUgdGVzdGVkIHdpdGggaXRzCiAgICAgICAgICMgZmlsZSBkZXNjcmlwdG9yLCBoZW5jZSBza2lwcGluZyB0aGUgdGVzdCB1bmRlciBXaW5kb3dzKS4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSkKLSAgICAgICAgICAgIHNzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgZmQgPSBzcy5maWxlbm8oKQotICAgICAgICAgICAgZiA9IHNzLm1ha2VmaWxlKCkKLSAgICAgICAgICAgIGYuY2xvc2UoKQotICAgICAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBzcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCisgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgZmQgPSBzcy5maWxlbm8oKQorICAgICAgICBmID0gc3MubWFrZWZpbGUoKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgIyBUaGUgZmQgaXMgc3RpbGwgb3BlbgorICAgICAgICBvcy5yZWFkKGZkLCAwKQorICAgICAgICAjIENsb3NpbmcgdGhlIFNTTCBzb2NrZXQgc2hvdWxkIGNsb3NlIHRoZSBmZCB0b28KKyAgICAgICAgc3MuY2xvc2UoKQorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPU0Vycm9yKSBhcyBlOgogICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgICMgQ2xvc2luZyB0aGUgU1NMIHNvY2tldCBzaG91bGQgY2xvc2UgdGhlIGZkIHRvbwotICAgICAgICAgICAgc3MuY2xvc2UoKQotICAgICAgICAgICAgZ2MuY29sbGVjdCgpCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE9TRXJyb3IpIGFzIGU6Ci0gICAgICAgICAgICAgICAgb3MucmVhZChmZCwgMCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24uZXJybm8sIGVycm5vLkVCQURGKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLmVycm5vLCBlcnJuby5FQkFERikKIAogICAgIGRlZiB0ZXN0X25vbl9ibG9ja2luZ19oYW5kc2hha2Uoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgcy5zZXRibG9ja2luZyhGYWxzZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQotICAgICAgICAgICAgY291bnQgPSAwCi0gICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgY291bnQgKz0gMQotICAgICAgICAgICAgICAgICAgICBzLmRvX2hhbmRzaGFrZSgpCi0gICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgotICAgICAgICAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0KFtzXSwgW10sIFtdKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMV2FudFdyaXRlRXJyb3I6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCi0gICAgICAgICAgICBzLmNsb3NlKCkKLSAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbk5lZWRlZCAlZCBjYWxscyB0byBkb19oYW5kc2hha2UoKSB0byBlc3RhYmxpc2ggc2Vzc2lvbi5cbiIgJSBjb3VudCkKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHMuY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBzLnNldGJsb2NraW5nKEZhbHNlKQorICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQorICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgY291bnQgPSAwCisgICAgICAgIHdoaWxlIFRydWU6CisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgY291bnQgKz0gMQorICAgICAgICAgICAgICAgIHMuZG9faGFuZHNoYWtlKCkKKyAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgZXhjZXB0IHNzbC5TU0xXYW50UmVhZEVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW3NdLCBbXSwgW10pCisgICAgICAgICAgICBleGNlcHQgc3NsLlNTTFdhbnRXcml0ZUVycm9yOgorICAgICAgICAgICAgICAgIHNlbGVjdC5zZWxlY3QoW10sIFtzXSwgW10pCisgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuTmVlZGVkICVkIGNhbGxzIHRvIGRvX2hhbmRzaGFrZSgpIHRvIGVzdGFibGlzaCBzZXNzaW9uLlxuIiAlIGNvdW50KQogCiAgICAgZGVmIHRlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShzZWxmKToKLSAgICAgICAgZGVmIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoaG9zdCwgcG9ydCwgY2VydD1Ob25lKToKLSAgICAgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoaG9zdCk6Ci0gICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIG5vdCBwZW06Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoc2VsZiwgKnNlbGYuc2VydmVyX2FkZHIsIGNlcnQ9U0lHTklOR19DQSkKIAotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSkKLSAgICAgICAgICAgICAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6Ci0gICAgICAgICAgICAgICAgICAgICNzaG91bGQgZmFpbAotICAgICAgICAgICAgICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCi0KLSAgICAgICAgICAgICAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FfY2VydHM9Y2VydCkKLSAgICAgICAgICAgICAgICBpZiBub3QgcGVtOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIk5vIHNlcnZlciBjZXJ0aWZpY2F0ZSBvbiAlczolcyEiICUgKGhvc3QsIHBvcnQpKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5WZXJpZmllZCBjZXJ0aWZpY2F0ZSBmb3IgJXM6JXMgaXNcbiVzXG4iICUgKGhvc3QsIHBvcnQgLHBlbSkpCi0KLSAgICAgICAgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZShSRU1PVEVfSE9TVCwgNDQzLCBSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICBpZiBzdXBwb3J0LklQVjZfRU5BQkxFRDoKLSAgICAgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGUoJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKyAgICBkZWYgdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZik6CisgICAgICAgICMgQ29ubmVjdGlvbiBmYWlsdXJlIGNyYXNoZXMgVGhyZWFkZWRFY2hvU2VydmVyLCBzbyBydW4gdGhpcyBpbiBhbgorICAgICAgICAjIGluZGVwZW5kZW50IHRlc3QgbWV0aG9kCisgICAgICAgIF90ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfZmFpbChzZWxmLCAqc2VsZi5zZXJ2ZXJfYWRkcikKIAogICAgIGRlZiB0ZXN0X2NpcGhlcnMoc2VsZik6Ci0gICAgICAgIHJlbW90ZSA9IChSRU1PVEVfSE9TVCwgNDQzKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KHJlbW90ZVswXSk6Ci0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgotICAgICAgICAgICAgICAgIHMuY29ubmVjdChyZW1vdGUpCi0gICAgICAgICAgICB3aXRoIHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJERUZBVUxUIikgYXMgczoKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgIyBFcnJvciBjaGVja2luZyBjYW4gaGFwcGVuIGF0IGluc3RhbnRpYXRpb24gb3Igd2hlbiBjb25uZWN0aW5nCi0gICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgotICAgICAgICAgICAgICAgIHdpdGggc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkgYXMgc29jazoKLSAgICAgICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJeJDosOz8qJ2Rvcm90aHl4IikKLSAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KHJlbW90ZSkKLQotICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6Ci0gICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQotICAgICAgICAjIGNlcnRpZmljYXRlLgotICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAotICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgotICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKLSAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCi0gICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKLSAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCi0gICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKLSAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKLSAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQotICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgotICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCi0gICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQotICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKLSAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCi0gICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCi0gICAgICAgICAgICBmaW5hbGx5OgotICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorICAgICAgICB3aXRoIHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9OT05FLCBjaXBoZXJzPSJBTEwiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgIHdpdGggdGVzdF93cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydF9yZXFzPXNzbC5DRVJUX05PTkUsIGNpcGhlcnM9IkRFRkFVTFQiKSBhcyBzOgorICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCisgICAgICAgICMgRXJyb3IgY2hlY2tpbmcgY2FuIGhhcHBlbiBhdCBpbnN0YW50aWF0aW9uIG9yIHdoZW4gY29ubmVjdGluZworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoc3NsLlNTTEVycm9yLCAiTm8gY2lwaGVyIGNhbiBiZSBzZWxlY3RlZCIpOgorICAgICAgICAgICAgd2l0aCBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKSBhcyBzb2NrOgorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0X3JlcXM9c3NsLkNFUlRfTk9ORSwgY2lwaGVycz0iXiQ6LDs/Kidkb3JvdGh5eCIpCisgICAgICAgICAgICAgICAgcy5jb25uZWN0KHNlbGYuc2VydmVyX2FkZHIpCiAKICAgICBkZWYgdGVzdF9nZXRfY2FfY2VydHNfY2FwYXRoKHNlbGYpOgogICAgICAgICAjIGNhcGF0aCBjZXJ0cyBhcmUgbG9hZGVkIG9uIHJlcXVlc3QKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKLSAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoY2FwYXRoPUNBUEFUSCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKLSAgICAgICAgICAgIHMgPSBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpCi0gICAgICAgICAgICBzLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoY2VydCkKLSAgICAgICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICAgICAgcy5jbG9zZSgpCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICBjdHgubG9hZF92ZXJpZnlfbG9jYXRpb25zKGNhcGF0aD1DQVBBVEgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY3R4LmdldF9jYV9jZXJ0cygpLCBbXSkKKyAgICAgICAgd2l0aCBjdHgud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkpIGFzIHM6CisgICAgICAgICAgICBzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIGNlcnQgPSBzLmdldHBlZXJjZXJ0KCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShjZXJ0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihjdHguZ2V0X2NhX2NlcnRzKCkpLCAxKQogCiAgICAgQG5lZWRzX3NuaQogICAgIGRlZiB0ZXN0X2NvbnRleHRfc2V0Z2V0KHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgdGhlIGNvbnRleHQgb2YgYSBjb25uZWN0ZWQgc29ja2V0IGNhbiBiZSByZXBsYWNlZC4KLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQotICAgICAgICAgICAgY3R4MiA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBzID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKLSAgICAgICAgICAgICAgICBzcy5jb25uZWN0KChSRU1PVEVfSE9TVCwgNDQzKSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDEpCi0gICAgICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzKHNzLmNvbnRleHQsIGN0eDIpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzcy5fc3Nsb2JqLmNvbnRleHQsIGN0eDIpCi0KLQotY2xhc3MgTmV0d29ya2VkQklPVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICBjdHgxID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICBjdHgyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgcyA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHdpdGggY3R4MS53cmFwX3NvY2tldChzKSBhcyBzczoKKyAgICAgICAgICAgIHNzLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgxKQorICAgICAgICAgICAgc3MuY29udGV4dCA9IGN0eDIKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuY29udGV4dCwgY3R4MikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc3MuX3NzbG9iai5jb250ZXh0LCBjdHgyKQogCiAgICAgZGVmIHNzbF9pb19sb29wKHNlbGYsIHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgZnVuYywgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAgIyBBIHNpbXBsZSBJTyBsb29wLiBDYWxsIGZ1bmMoKmFyZ3MpIGRlcGVuZGluZyBvbiB0aGUgZXJyb3Igd2UgZ2V0CkBAIC0xNzY1LDY0ICsxNzIzLDEyOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb3VudCwgZnVuYy5fX25hbWVfXykpCiAgICAgICAgIHJldHVybiByZXQKIAotICAgIGRlZiB0ZXN0X2hhbmRzaGFrZShzZWxmKToKLSAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldChSRU1PVEVfSE9TVCk6Ci0gICAgICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKLSAgICAgICAgICAgIHNvY2suY29ubmVjdCgoUkVNT1RFX0hPU1QsIDQ0MykpCi0gICAgICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQotICAgICAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIGN0eCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCi0gICAgICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAotICAgICAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhSRU1PVEVfUk9PVF9DRVJUKQotICAgICAgICAgICAgY3R4LmNoZWNrX2hvc3RuYW1lID0gVHJ1ZQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UsIFJFTU9URV9IT1NUKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouZ2V0X2NoYW5uZWxfYmluZGluZygndGxzLXVuaXF1ZScpKQotICAgICAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmNpcGhlcigpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoc3Nsb2JqLnNoYXJlZF9jaXBoZXJzKCkpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCi0gICAgICAgICAgICBpZiAndGxzLXVuaXF1ZScgaW4gc3NsLkNIQU5ORUxfQklORElOR19UWVBFUzoKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnVud3JhcCkKLSAgICAgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgotICAgICAgICAgICAgICAgICMgc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQgcHJvYmFibHkgc2h1dHMgZG93biB0aGUgVENQCi0gICAgICAgICAgICAgICAgIyBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCBhbmQKLSAgICAgICAgICAgICAgICAjIHRoaXMgaXMgcmVwb3J0ZWQgYXMgU1NMX0VSUk9SX1NZU0NBTEwKLSAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IsIHNzbG9iai53cml0ZSwgYidmb28nKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCi0KLSAgICBkZWYgdGVzdF9yZWFkX3dyaXRlX2RhdGEoc2VsZik6Ci0gICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgotICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCi0gICAgICAgICAgICBzb2NrLmNvbm5lY3QoKFJFTU9URV9IT1NULCA0NDMpKQotICAgICAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKLSAgICAgICAgICAgIG91dGdvaW5nID0gc3NsLk1lbW9yeUJJTygpCi0gICAgICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQotICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfTk9ORQotICAgICAgICAgICAgc3Nsb2JqID0gY3R4LndyYXBfYmlvKGluY29taW5nLCBvdXRnb2luZywgRmFsc2UpCi0gICAgICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKLSAgICAgICAgICAgIHJlcSA9IGInR0VUIC8gSFRUUC8xLjBcclxuXHJcbicKLSAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoud3JpdGUsIHJlcSkKLSAgICAgICAgICAgIGJ1ZiA9IHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoucmVhZCwgMTAyNCkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmWzo1XSwgYidIVFRQLycpCisgICAgZGVmIHRlc3RfYmlvX2hhbmRzaGFrZShzZWxmKToKKyAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzb2NrLmNsb3NlKQorICAgICAgICBzb2NrLmNvbm5lY3Qoc2VsZi5zZXJ2ZXJfYWRkcikKKyAgICAgICAgaW5jb21pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgb3V0Z29pbmcgPSBzc2wuTWVtb3J5QklPKCkKKyAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgY3R4LmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhTSUdOSU5HX0NBKQorICAgICAgICBjdHguY2hlY2tfaG9zdG5hbWUgPSBUcnVlCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlLCAnbG9jYWxob3N0JykKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhzc2xvYmouX3NzbG9iai5vd25lciwgc3Nsb2JqKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBzc2xvYmouZ2V0cGVlcmNlcnQpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc3Nsb2JqLmdldF9jaGFubmVsX2JpbmRpbmcoJ3Rscy11bmlxdWUnKSkKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai5kb19oYW5kc2hha2UpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzc2xvYmouY2lwaGVyKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNzbG9iai5zaGFyZWRfY2lwaGVycygpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Nsb2JqLmdldHBlZXJjZXJ0KCkpCisgICAgICAgIGlmICd0bHMtdW5pcXVlJyBpbiBzc2wuQ0hBTk5FTF9CSU5ESU5HX1RZUEVTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNzbG9iai5nZXRfY2hhbm5lbF9iaW5kaW5nKCd0bHMtdW5pcXVlJykpCisgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc3NsX2lvX2xvb3Aoc29jaywgaW5jb21pbmcsIG91dGdvaW5nLCBzc2xvYmoudW53cmFwKQotICAgICAgICAgICAgc29jay5jbG9zZSgpCisgICAgICAgIGV4Y2VwdCBzc2wuU1NMU3lzY2FsbEVycm9yOgorICAgICAgICAgICAgIyBJZiB0aGUgc2VydmVyIHNodXRzIGRvd24gdGhlIFRDUCBjb25uZWN0aW9uIHdpdGhvdXQgc2VuZGluZyBhCisgICAgICAgICAgICAjIHNlY3VyZSBzaHV0ZG93biBtZXNzYWdlLCB0aGlzIGlzIHJlcG9ydGVkIGFzIFNTTF9FUlJPUl9TWVNDQUxMCisgICAgICAgICAgICBwYXNzCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvciwgc3Nsb2JqLndyaXRlLCBiJ2ZvbycpCisKKyAgICBkZWYgdGVzdF9iaW9fcmVhZF93cml0ZV9kYXRhKHNlbGYpOgorICAgICAgICBzb2NrID0gc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCkKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNvY2suY2xvc2UpCisgICAgICAgIHNvY2suY29ubmVjdChzZWxmLnNlcnZlcl9hZGRyKQorICAgICAgICBpbmNvbWluZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBvdXRnb2luZyA9IHNzbC5NZW1vcnlCSU8oKQorICAgICAgICBjdHggPSBzc2wuU1NMQ29udGV4dChzc2wuUFJPVE9DT0xfU1NMdjIzKQorICAgICAgICBjdHgudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9OT05FCisgICAgICAgIHNzbG9iaiA9IGN0eC53cmFwX2JpbyhpbmNvbWluZywgb3V0Z29pbmcsIEZhbHNlKQorICAgICAgICBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLmRvX2hhbmRzaGFrZSkKKyAgICAgICAgcmVxID0gYidGT09cbicKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai53cml0ZSwgcmVxKQorICAgICAgICBidWYgPSBzZWxmLnNzbF9pb19sb29wKHNvY2ssIGluY29taW5nLCBvdXRnb2luZywgc3Nsb2JqLnJlYWQsIDEwMjQpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYnVmLCBiJ2Zvb1xuJykKKyAgICAgICAgc2VsZi5zc2xfaW9fbG9vcChzb2NrLCBpbmNvbWluZywgb3V0Z29pbmcsIHNzbG9iai51bndyYXApCiAKIAotdHJ5OgotICAgIGltcG9ydCB0aHJlYWRpbmcKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBfaGF2ZV90aHJlYWRzID0gRmFsc2UKLWVsc2U6Ci0gICAgX2hhdmVfdGhyZWFkcyA9IFRydWUKK2NsYXNzIE5ldHdvcmtlZFRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIAorICAgIGRlZiB0ZXN0X3RpbWVvdXRfY29ubmVjdF9leChzZWxmKToKKyAgICAgICAgIyBJc3N1ZSAjMTIwNjU6IG9uIGEgdGltZW91dCwgY29ubmVjdF9leCgpIHNob3VsZCByZXR1cm4gdGhlIG9yaWdpbmFsCisgICAgICAgICMgZXJybm8gKG1pbWlja2luZyB0aGUgYmVoYXZpb3VyIG9mIG5vbi1TU0wgc29ja2V0cykuCisgICAgICAgIHdpdGggc3VwcG9ydC50cmFuc2llbnRfaW50ZXJuZXQoUkVNT1RFX0hPU1QpOgorICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldChzb2NrZXQuQUZfSU5FVCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNlcnRfcmVxcz1zc2wuQ0VSVF9SRVFVSVJFRCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9faGFuZHNoYWtlX29uX2Nvbm5lY3Q9RmFsc2UpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKKyAgICAgICAgICAgIHMuc2V0dGltZW91dCgwLjAwMDAwMDEpCisgICAgICAgICAgICByYyA9IHMuY29ubmVjdF9leCgoUkVNT1RFX0hPU1QsIDQ0MykpCisgICAgICAgICAgICBpZiByYyA9PSAwOgorICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlJFTU9URV9IT1NUIHJlc3BvbmRlZCB0b28gcXVpY2tseSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKHJjLCAoZXJybm8uRUFHQUlOLCBlcnJuby5FV09VTERCTE9DSykpCisKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzdXBwb3J0LklQVjZfRU5BQkxFRCwgJ05lZWRzIElQdjYnKQorICAgIGRlZiB0ZXN0X2dldF9zZXJ2ZXJfY2VydGlmaWNhdGVfaXB2NihzZWxmKToKKyAgICAgICAgd2l0aCBzdXBwb3J0LnRyYW5zaWVudF9pbnRlcm5ldCgnaXB2Ni5nb29nbGUuY29tJyk6CisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHNlbGYsICdpcHY2Lmdvb2dsZS5jb20nLCA0NDMpCisgICAgICAgICAgICBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlX2ZhaWwoc2VsZiwgJ2lwdjYuZ29vZ2xlLmNvbScsIDQ0MykKKworICAgIGRlZiB0ZXN0X2FsZ29yaXRobXMoc2VsZik6CisgICAgICAgICMgSXNzdWUgIzg0ODQ6IGFsbCBhbGdvcml0aG1zIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbiB2ZXJpZnlpbmcgYQorICAgICAgICAjIGNlcnRpZmljYXRlLgorICAgICAgICAjIFNIQTI1NiB3YXMgYWRkZWQgaW4gT3BlblNTTCAwLjkuOAorICAgICAgICBpZiBzc2wuT1BFTlNTTF9WRVJTSU9OX0lORk8gPCAoMCwgOSwgOCwgMCwgMTUpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiU0hBMjU2IG5vdCBhdmFpbGFibGUgb24gJXIiICUgc3NsLk9QRU5TU0xfVkVSU0lPTikKKyAgICAgICAgIyBzaGEyNTYudGJzLWludGVybmV0LmNvbSBuZWVkcyBTTkkgdG8gdXNlIHRoZSBjb3JyZWN0IGNlcnRpZmljYXRlCisgICAgICAgIGlmIG5vdCBzc2wuSEFTX1NOSToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoIlNOSSBuZWVkZWQgZm9yIHRoaXMgdGVzdCIpCisgICAgICAgICMgaHR0cHM6Ly9zaGEyLmhib2Vjay5kZS8gd2FzIHVzZWQgdW50aWwgMjAxMS0wMS0wOCAobm8gcm91dGUgdG8gaG9zdCkKKyAgICAgICAgcmVtb3RlID0gKCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIsIDQ0MykKKyAgICAgICAgc2hhMjU2X2NlcnQgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgInNoYTI1Ni5wZW0iKQorICAgICAgICB3aXRoIHN1cHBvcnQudHJhbnNpZW50X2ludGVybmV0KCJzaGEyNTYudGJzLWludGVybmV0LmNvbSIpOgorICAgICAgICAgICAgY3R4ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY3R4LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGN0eC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoc2hhMjU2X2NlcnQpCisgICAgICAgICAgICBzID0gY3R4LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfaG9zdG5hbWU9InNoYTI1Ni50YnMtaW50ZXJuZXQuY29tIikKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzLmNvbm5lY3QocmVtb3RlKQorICAgICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgc3lzLnN0ZG91dC53cml0ZSgiXG5DaXBoZXIgd2l0aCAlciBpcyAlclxuIiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHJlbW90ZSwgcy5jaXBoZXIoKSkpCisgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIkNlcnRpZmljYXRlIGlzOlxuJXNcbiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBwcmludC5wZm9ybWF0KHMuZ2V0cGVlcmNlcnQoKSkpCisgICAgICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgICAgIHMuY2xvc2UoKQorCisKK2RlZiBfdGVzdF9nZXRfc2VydmVyX2NlcnRpZmljYXRlKHRlc3QsIGhvc3QsIHBvcnQsIGNlcnQ9Tm9uZSk6CisgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpKQorICAgIGlmIG5vdCBwZW06CisgICAgICAgIHRlc3QuZmFpbCgiTm8gc2VydmVyIGNlcnRpZmljYXRlIG9uICVzOiVzISIgJSAoaG9zdCwgcG9ydCkpCisKKyAgICBwZW0gPSBzc2wuZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZSgoaG9zdCwgcG9ydCksIGNhX2NlcnRzPWNlcnQpCisgICAgaWYgbm90IHBlbToKKyAgICAgICAgdGVzdC5mYWlsKCJObyBzZXJ2ZXIgY2VydGlmaWNhdGUgb24gJXM6JXMhIiAlIChob3N0LCBwb3J0KSkKKyAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuVmVyaWZpZWQgY2VydGlmaWNhdGUgZm9yICVzOiVzIGlzXG4lc1xuIiAlIChob3N0LCBwb3J0ICxwZW0pKQorCitkZWYgX3Rlc3RfZ2V0X3NlcnZlcl9jZXJ0aWZpY2F0ZV9mYWlsKHRlc3QsIGhvc3QsIHBvcnQpOgorICAgIHRyeToKKyAgICAgICAgcGVtID0gc3NsLmdldF9zZXJ2ZXJfY2VydGlmaWNhdGUoKGhvc3QsIHBvcnQpLCBjYV9jZXJ0cz1DRVJURklMRSkKKyAgICBleGNlcHQgc3NsLlNTTEVycm9yIGFzIHg6CisgICAgICAgICNzaG91bGQgZmFpbAorICAgICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CisgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCIlc1xuIiAlIHgpCisgICAgZWxzZToKKyAgICAgICAgdGVzdC5mYWlsKCJHb3Qgc2VydmVyIGNlcnRpZmljYXRlICVzIGZvciAlczolcyEiICUgKHBlbSwgaG9zdCwgcG9ydCkpCisKKworaWYgX2hhdmVfdGhyZWFkczoKICAgICBmcm9tIHRlc3Quc3NsX3NlcnZlcnMgaW1wb3J0IG1ha2VfaHR0cHNfc2VydmVyCiAKICAgICBjbGFzcyBUaHJlYWRlZEVjaG9TZXJ2ZXIodGhyZWFkaW5nLlRocmVhZCk6CkBAIC0xOTEwLDYgKzE5MzIsMTUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzdHJpcHBlZDoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGVvZiwgc28gcXVpdCB0aGlzIGhhbmRsZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmcgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zb2NrID0gc2VsZi5zc2xjb25uLnVud3JhcCgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTWFueSB0ZXN0cyBzaHV0IHRoZSBUQ1AgY29ubmVjdGlvbiBkb3duCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgd2l0aG91dCBhbiBTU0wgc2h1dGRvd24uIFRoaXMgY2F1c2VzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgdW53cmFwKCkgdG8gcmFpc2UgT1NFcnJvciB3aXRoIGVycm5vPTAhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnNzbGNvbm4gPSBOb25lCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jbG9zZSgpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHN0cmlwcGVkID09IGInb3Zlcic6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlIGFuZCBzZWxmLnNlcnZlci5jb25uZWN0aW9uY2hhdHR5OgpAQCAtMjAzNyw3ICsyMDY4LDcgQEAKICAgICAgICAgICAgIGNsYXNzIENvbm5lY3Rpb25IYW5kbGVyIChhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZCk6CiAKICAgICAgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgY29ubiwgY2VydGZpbGUpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHNzbC53cmFwX3NvY2tldChjb25uLCBzZXJ2ZXJfc2lkZT1UcnVlLAorICAgICAgICAgICAgICAgICAgICBzZWxmLnNvY2tldCA9IHRlc3Rfd3JhcF9zb2NrZXQoY29ubiwgc2VydmVyX3NpZGU9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvX2hhbmRzaGFrZV9vbl9jb25uZWN0PUZhbHNlKQogICAgICAgICAgICAgICAgICAgICBhc3luY29yZS5kaXNwYXRjaGVyX3dpdGhfc2VuZC5fX2luaXRfXyhzZWxmLCBzZWxmLnNvY2tldCkKQEAgLTIxNDUsNyArMjE3Niw4IEBACiAgICAgICAgICAgICBzZWxmLnNlcnZlci5jbG9zZSgpCiAKICAgICBkZWYgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgaW5kYXRhPWIiRk9PXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UsIHNuaV9uYW1lPU5vbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXNzaW9uPU5vbmUpOgogICAgICAgICAiIiIKICAgICAgICAgTGF1bmNoIGEgc2VydmVyLCBjb25uZWN0IGEgY2xpZW50IHRvIGl0IGFuZCB0cnkgdmFyaW91cyByZWFkcwogICAgICAgICBhbmQgd3JpdGVzLgpAQCAtMjE1Niw3ICsyMTg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbm5lY3Rpb25jaGF0dHk9RmFsc2UpCiAgICAgICAgIHdpdGggc2VydmVyOgogICAgICAgICAgICAgd2l0aCBjbGllbnRfY29udGV4dC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCi0gICAgICAgICAgICAgICAgICAgIHNlcnZlcl9ob3N0bmFtZT1zbmlfbmFtZSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX2hvc3RuYW1lPXNuaV9uYW1lLCBzZXNzaW9uPXNlc3Npb24pIGFzIHM6CiAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBbaW5kYXRhLCBieXRlYXJyYXkoaW5kYXRhKSwgbWVtb3J5dmlldyhpbmRhdGEpXToKICAgICAgICAgICAgICAgICAgICAgaWYgY29ubmVjdGlvbmNoYXR0eToKQEAgLTIxODQsNiArMjIxNiw4IEBACiAgICAgICAgICAgICAgICAgICAgICdjbGllbnRfYWxwbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbCgpLAogICAgICAgICAgICAgICAgICAgICAnY2xpZW50X25wbl9wcm90b2NvbCc6IHMuc2VsZWN0ZWRfbnBuX3Byb3RvY29sKCksCiAgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogcy52ZXJzaW9uKCksCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uX3JldXNlZCc6IHMuc2Vzc2lvbl9yZXVzZWQsCisgICAgICAgICAgICAgICAgICAgICdzZXNzaW9uJzogcy5zZXNzaW9uLAogICAgICAgICAgICAgICAgIH0pCiAgICAgICAgICAgICAgICAgcy5jbG9zZSgpCiAgICAgICAgICAgICBzdGF0c1snc2VydmVyX2FscG5fcHJvdG9jb2xzJ10gPSBzZXJ2ZXIuc2VsZWN0ZWRfYWxwbl9wcm90b2NvbHMKQEAgLTIyNTksMTIgKzIyOTMsNTMgQEAKICAgICAgICAgICAgIGlmIHN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKCJcbiIpCiAgICAgICAgICAgICBmb3IgcHJvdG9jb2wgaW4gUFJPVE9DT0xTOgorICAgICAgICAgICAgICAgIGlmIHByb3RvY29sIGluIHtzc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc3NsLlBST1RPQ09MX1RMU19TRVJWRVJ9OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHByb3RvY29sPXNzbC5fUFJPVE9DT0xfTkFNRVNbcHJvdG9jb2xdKToKICAgICAgICAgICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHByb3RvY29sKQogICAgICAgICAgICAgICAgICAgICBjb250ZXh0LmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNvbnRleHQsIGNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQogCisgICAgICAgICAgICBjbGllbnRfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9UTFNfU0VSVkVSKQorICAgICAgICAgICAgIyBzZXJ2ZXJfY29udGV4dC5sb2FkX3ZlcmlmeV9sb2NhdGlvbnMoU0lHTklOR19DQSkKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0LmxvYWRfY2VydF9jaGFpbihTSUdORURfQ0VSVEZJTEUyKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19DTElFTlQsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PWNsaWVudF9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXJfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0LmNoZWNrX2hvc3RuYW1lID0gRmFsc2UKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUiwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc25pX25hbWU9J2Zha2Vob3N0bmFtZScpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignY2FsbGVkIGEgZnVuY3Rpb24geW91IHNob3VsZCBub3QgY2FsbCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHIoZS5leGNlcHRpb24pKQorCisgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChjbGllbnQ9c3NsLlBST1RPQ09MX1RMU19TRVJWRVIsIHNlcnZlcj1zc2wuUFJPVE9DT0xfVExTX1NFUlZFUik6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhzc2wuU1NMRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9wYXJhbXNfdGVzdChjbGllbnRfY29udGV4dD1zZXJ2ZXJfY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsIGNvbm5lY3Rpb25jaGF0dHk9VHJ1ZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdjYWxsZWQgYSBmdW5jdGlvbiB5b3Ugc2hvdWxkIG5vdCBjYWxsJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihlLmV4Y2VwdGlvbikpCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGNsaWVudD1zc2wuUFJPVE9DT0xfVExTX0NMSUVOVCwgc2VydmVyPXNzbC5QUk9UT0NPTF9UTFNfQ0xJRU5UKToKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5TU0xFcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgICAgc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0PXNlcnZlcl9jb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX2NvbnRleHQ9Y2xpZW50X2NvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwgY29ubmVjdGlvbmNoYXR0eT1UcnVlKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2NhbGxlZCBhIGZ1bmN0aW9uIHlvdSBzaG91bGQgbm90IGNhbGwnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyKGUuZXhjZXB0aW9uKSkKKworCiAgICAgICAgIGRlZiB0ZXN0X2dldHBlZXJjZXJ0KHNlbGYpOgogICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoIlxuIikKQEAgLTIzOTgsNyArMjQ3Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyLCBcCiAgICAgICAgICAgICAgICAgICAgIHNvY2tldC5zb2NrZXQoKSBhcyBzb2NrLCBcCi0gICAgICAgICAgICAgICAgICAgIHNzbC53cmFwX3NvY2tldChzb2NrLAorICAgICAgICAgICAgICAgICAgICB0ZXN0X3dyYXBfc29ja2V0KHNvY2ssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Y2VydGZpbGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3NsX3ZlcnNpb249c3NsLlBST1RPQ09MX1RMU3YxKSBhcyBzOgogICAgICAgICAgICAgICAgIHRyeToKQEAgLTI0NDUsNyArMjUyMCw3IEBACiAgICAgICAgICAgICAgICAgICAgIGMuY29ubmVjdCgoSE9TVCwgcG9ydCkpCiAgICAgICAgICAgICAgICAgICAgIGxpc3RlbmVyX2dvbmUud2FpdCgpCiAgICAgICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgICAgIHNzbF9zb2NrID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgICAgICBzc2xfc29jayA9IHRlc3Rfd3JhcF9zb2NrZXQoYykKICAgICAgICAgICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3I6CiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CkBAIC0yNjM1LDcgKzI3MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5zdGRvdXQud3JpdGUoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIgY2xpZW50OiAgcmVhZCAlciBmcm9tIHNlcnZlciwgc3RhcnRpbmcgVExTLi4uXG4iCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbXNnKQotICAgICAgICAgICAgICAgICAgICAgICAgY29ubiA9IHNzbC53cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCisgICAgICAgICAgICAgICAgICAgICAgICBjb25uID0gdGVzdF93cmFwX3NvY2tldChzLCBzc2xfdmVyc2lvbj1zc2wuUFJPVE9DT0xfVExTdjEpCiAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkID0gVHJ1ZQogICAgICAgICAgICAgICAgICAgICBlbGlmIGluZGF0YSA9PSBiIkVORFRMUyIgYW5kIG1zZy5zdGFydHN3aXRoKGIib2siKToKICAgICAgICAgICAgICAgICAgICAgICAgICMgRU5EVExTIG9rLCBzd2l0Y2ggYmFjayB0byBjbGVhciB0ZXh0CkBAIC0yNjk0LDcgKzI3NjksNyBAQAogICAgICAgICAgICAgaW5kYXRhID0gYiJGT09cbiIKICAgICAgICAgICAgIHNlcnZlciA9IEFzeW5jb3JlRWNob1NlcnZlcihDRVJURklMRSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpKQorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkKICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKCcxMjcuMC4wLjEnLCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICAgICAgaWYgc3VwcG9ydC52ZXJib3NlOgogICAgICAgICAgICAgICAgICAgICBzeXMuc3Rkb3V0LndyaXRlKApAQCAtMjcyNyw3ICsyODAyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMjc0NSwxMiArMjgyMCwxMyBAQAogICAgICAgICAgICAgICAgICAgICBjb3VudCwgYWRkciA9IHMucmVjdmZyb21faW50byhiKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gYls6Y291bnRdCiAKLSAgICAgICAgICAgICAgICAjIChuYW1lLCBtZXRob2QsIHdoZXRoZXIgdG8gZXhwZWN0IHN1Y2Nlc3MsICphcmdzKQorICAgICAgICAgICAgICAgICMgKG5hbWUsIG1ldGhvZCwgZXhwZWN0IHN1Y2Nlc3M/LCAqYXJncywgcmV0dXJuIHZhbHVlIGZ1bmMpCiAgICAgICAgICAgICAgICAgc2VuZF9tZXRob2RzID0gWwotICAgICAgICAgICAgICAgICAgICAoJ3NlbmQnLCBzLnNlbmQsIFRydWUsIFtdKSwKLSAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLAotICAgICAgICAgICAgICAgICAgICAoJ3NlbmRhbGwnLCBzLnNlbmRhbGwsIFRydWUsIFtdKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kJywgcy5zZW5kLCBUcnVlLCBbXSwgbGVuKSwKKyAgICAgICAgICAgICAgICAgICAgKCdzZW5kdG8nLCBzLnNlbmR0bywgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0sIGxlbiksCisgICAgICAgICAgICAgICAgICAgICgnc2VuZGFsbCcsIHMuc2VuZGFsbCwgVHJ1ZSwgW10sIGxhbWJkYSB4OiBOb25lKSwKICAgICAgICAgICAgICAgICBdCisgICAgICAgICAgICAgICAgIyAobmFtZSwgbWV0aG9kLCB3aGV0aGVyIHRvIGV4cGVjdCBzdWNjZXNzLCAqYXJncykKICAgICAgICAgICAgICAgICByZWN2X21ldGhvZHMgPSBbCiAgICAgICAgICAgICAgICAgICAgICgncmVjdicsIHMucmVjdiwgVHJ1ZSwgW10pLAogICAgICAgICAgICAgICAgICAgICAoJ3JlY3Zmcm9tJywgcy5yZWN2ZnJvbSwgRmFsc2UsIFsic29tZS5hZGRyZXNzIl0pLApAQCAtMjc1OSwxMCArMjgzNSwxMyBAQAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgICAgICBkYXRhX3ByZWZpeCA9ICJQUkVGSVhfIgogCi0gICAgICAgICAgICAgICAgZm9yIG1ldGhfbmFtZSwgc2VuZF9tZXRoLCBleHBlY3Rfc3VjY2VzcywgYXJncyBpbiBzZW5kX21ldGhvZHM6CisgICAgICAgICAgICAgICAgZm9yIChtZXRoX25hbWUsIHNlbmRfbWV0aCwgZXhwZWN0X3N1Y2Nlc3MsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICByZXRfdmFsX21ldGgpIGluIHNlbmRfbWV0aG9kczoKICAgICAgICAgICAgICAgICAgICAgaW5kYXRhID0gKGRhdGFfcHJlZml4ICsgbWV0aF9uYW1lKS5lbmNvZGUoJ2FzY2lpJykKICAgICAgICAgICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgICAgICAgICAgc2VuZF9tZXRoKGluZGF0YSwgKmFyZ3MpCisgICAgICAgICAgICAgICAgICAgICAgICByZXQgPSBzZW5kX21ldGgoaW5kYXRhLCAqYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICJzZW5kaW5nIHdpdGgge30iLmZvcm1hdChtZXRoX25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJldCwgcmV0X3ZhbF9tZXRoKGluZGF0YSksIG1zZz1tc2cpCiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRkYXRhID0gcy5yZWFkKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG91dGRhdGEgIT0gaW5kYXRhLmxvd2VyKCk6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKApAQCAtMjg0Nyw3ICsyOTI2LDcgQEAKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzZXJ2ZXIuX19leGl0X18sIE5vbmUsIE5vbmUpCiAgICAgICAgICAgICBzID0gc29ja2V0LmNyZWF0ZV9jb25uZWN0aW9uKChIT1NULCBzZXJ2ZXIucG9ydCkpCiAgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocy5jbG9zZSkKLSAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQocywgc3VwcHJlc3NfcmFnZ2VkX2VvZnM9RmFsc2UpCisgICAgICAgICAgICBzID0gdGVzdF93cmFwX3NvY2tldChzLCBzdXBwcmVzc19yYWdnZWRfZW9mcz1GYWxzZSkKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzLmNsb3NlKQogCiAgICAgICAgICAgICAjIHJlY3YvcmVhZCgwKSBzaG91bGQgcmV0dXJuIG5vIGRhdGEKQEAgLTI4NjksNyArMjk0OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhdHR5PVRydWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ubmVjdGlvbmNoYXR0eT1GYWxzZSkKICAgICAgICAgICAgIHdpdGggc2VydmVyOgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTI5MjMsMTIgKzMwMDIsMTIgQEAKICAgICAgICAgICAgICAgICAgICAgYy5jb25uZWN0KChob3N0LCBwb3J0KSkKICAgICAgICAgICAgICAgICAgICAgIyBXaWxsIGF0dGVtcHQgaGFuZHNoYWtlIGFuZCB0aW1lIG91dAogICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KHNvY2tldC50aW1lb3V0LCAidGltZWQgb3V0IiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzc2wud3JhcF9zb2NrZXQsIGMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGVzdF93cmFwX3NvY2tldCwgYykKICAgICAgICAgICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgICAgICAgICBjLmNsb3NlKCkKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSBzb2NrZXQuc29ja2V0KHNvY2tldC5BRl9JTkVUKQotICAgICAgICAgICAgICAgICAgICBjID0gc3NsLndyYXBfc29ja2V0KGMpCisgICAgICAgICAgICAgICAgICAgIGMgPSB0ZXN0X3dyYXBfc29ja2V0KGMpCiAgICAgICAgICAgICAgICAgICAgIGMuc2V0dGltZW91dCgwLjIpCiAgICAgICAgICAgICAgICAgICAgICMgV2lsbCBhdHRlbXB0IGhhbmRzaGFrZSBhbmQgdGltZSBvdXQKICAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXNSZWdleChzb2NrZXQudGltZW91dCwgInRpbWVkIG91dCIsCkBAIC0yOTUxLDYgKzMwMzAsNyBAQAogICAgICAgICAgICAgaG9zdCA9ICIxMjcuMC4wLjEiCiAgICAgICAgICAgICBwb3J0ID0gc3VwcG9ydC5iaW5kX3BvcnQoc2VydmVyKQogICAgICAgICAgICAgc2VydmVyID0gY29udGV4dC53cmFwX3NvY2tldChzZXJ2ZXIsIHNlcnZlcl9zaWRlPVRydWUpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2VydmVyLnNlcnZlcl9zaWRlKQogCiAgICAgICAgICAgICBldnQgPSB0aHJlYWRpbmcuRXZlbnQoKQogICAgICAgICAgICAgcmVtb3RlID0gTm9uZQpAQCAtMzA1Myw3ICszMTMzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGF0dHk9VHJ1ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25uZWN0aW9uY2hhdHR5PUZhbHNlKQogICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6Ci0gICAgICAgICAgICAgICAgcyA9IHNzbC53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCksCisgICAgICAgICAgICAgICAgcyA9IHRlc3Rfd3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VydmVyX3NpZGU9RmFsc2UsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjZXJ0ZmlsZT1DRVJURklMRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhX2NlcnRzPUNFUlRGSUxFLApAQCAtMzA3OCw3ICszMTU4LDcgQEAKICAgICAgICAgICAgICAgICBzLmNsb3NlKCkKIAogICAgICAgICAgICAgICAgICMgbm93LCBhZ2FpbgotICAgICAgICAgICAgICAgIHMgPSBzc2wud3JhcF9zb2NrZXQoc29ja2V0LnNvY2tldCgpLAorICAgICAgICAgICAgICAgIHMgPSB0ZXN0X3dyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcnZlcl9zaWRlPUZhbHNlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2VydGZpbGU9Q0VSVEZJTEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYV9jZXJ0cz1DRVJURklMRSwKQEAgLTMzODgsNiArMzQ2OCwxMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHMuc2VuZGZpbGUoZmlsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5yZWN2KDEwMjQpLCBURVNUX0RBVEEpCiAKKyAgICAgICAgZGVmIHRlc3Rfc2Vzc2lvbihzZWxmKToKKyAgICAgICAgICAgIHNlcnZlcl9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgc2VydmVyX2NvbnRleHQubG9hZF9jZXJ0X2NoYWluKFNJR05FRF9DRVJURklMRSkKKyAgICAgICAgICAgIGNsaWVudF9jb250ZXh0ID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1RMU3YxKQorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQudmVyaWZ5X21vZGUgPSBzc2wuQ0VSVF9SRVFVSVJFRAorICAgICAgICAgICAgY2xpZW50X2NvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKFNJR05JTkdfQ0EpCisKKyAgICAgICAgICAgICMgZmlyc3QgY29ubmVjdGlvbiB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlc3Npb24gPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbi5pZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcihzZXNzaW9uLnRpbWUsIDApCisgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aW1lb3V0LCAwKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlc3Npb24uaGFzX3RpY2tldCkKKyAgICAgICAgICAgIGlmIHNzbC5PUEVOU1NMX1ZFUlNJT05fSU5GTyA+ICgxLCAwLCAxKToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoc2Vzc2lvbi50aWNrZXRfbGlmZXRpbWVfaGludCwgMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDApCisKKyAgICAgICAgICAgICMgcmV1c2Ugc2Vzc2lvbgorICAgICAgICAgICAgc3RhdHMgPSBzZXJ2ZXJfcGFyYW1zX3Rlc3QoY2xpZW50X2NvbnRleHQsIHNlcnZlcl9jb250ZXh0LCBzZXNzaW9uPXNlc3Npb24pCisgICAgICAgICAgICBzZXNzX3N0YXQgPSBzZXJ2ZXJfY29udGV4dC5zZXNzaW9uX3N0YXRzKCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydhY2NlcHQnXSwgMikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc19zdGF0WydoaXRzJ10sIDEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMiA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vzc2lvbjIuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb24yLCBzZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJc05vdChzZXNzaW9uMiwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb24yLnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKworICAgICAgICAgICAgIyBhbm90aGVyIG9uZSB3aXRob3V0IHNlc3Npb24KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3RhdHNbJ3Nlc3Npb25fcmV1c2VkJ10pCisgICAgICAgICAgICBzZXNzaW9uMyA9IHN0YXRzWydzZXNzaW9uJ10KKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoc2Vzc2lvbjMuaWQsIHNlc3Npb24uaWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHNlc3Npb24zLCBzZXNzaW9uKQorICAgICAgICAgICAgc2Vzc19zdGF0ID0gc2VydmVyX2NvbnRleHQuc2Vzc2lvbl9zdGF0cygpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnYWNjZXB0J10sIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Nfc3RhdFsnaGl0cyddLCAxKQorCisgICAgICAgICAgICAjIHJldXNlIHNlc3Npb24gYWdhaW4KKyAgICAgICAgICAgIHN0YXRzID0gc2VydmVyX3BhcmFtc190ZXN0KGNsaWVudF9jb250ZXh0LCBzZXJ2ZXJfY29udGV4dCwgc2Vzc2lvbj1zZXNzaW9uKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0YXRzWydzZXNzaW9uX3JldXNlZCddKQorICAgICAgICAgICAgc2Vzc2lvbjQgPSBzdGF0c1snc2Vzc2lvbiddCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlc3Npb240LmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzaW9uNCwgc2Vzc2lvbikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWUsIHNlc3Npb24udGltZSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHNlc3Npb240LnRpbWVvdXQsIHNlc3Npb24udGltZW91dCkKKyAgICAgICAgICAgIHNlc3Nfc3RhdCA9IHNlcnZlcl9jb250ZXh0LnNlc3Npb25fc3RhdHMoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2FjY2VwdCddLCA0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXNzX3N0YXRbJ2hpdHMnXSwgMikKKworICAgICAgICBkZWYgdGVzdF9zZXNzaW9uX2hhbmRsaW5nKHNlbGYpOgorICAgICAgICAgICAgY29udGV4dCA9IHNzbC5TU0xDb250ZXh0KHNzbC5QUk9UT0NPTF9TU0x2MjMpCisgICAgICAgICAgICBjb250ZXh0LnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQubG9hZF92ZXJpZnlfbG9jYXRpb25zKENFUlRGSUxFKQorICAgICAgICAgICAgY29udGV4dC5sb2FkX2NlcnRfY2hhaW4oQ0VSVEZJTEUpCisKKyAgICAgICAgICAgIGNvbnRleHQyID0gc3NsLlNTTENvbnRleHQoc3NsLlBST1RPQ09MX1NTTHYyMykKKyAgICAgICAgICAgIGNvbnRleHQyLnZlcmlmeV9tb2RlID0gc3NsLkNFUlRfUkVRVUlSRUQKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfdmVyaWZ5X2xvY2F0aW9ucyhDRVJURklMRSkKKyAgICAgICAgICAgIGNvbnRleHQyLmxvYWRfY2VydF9jaGFpbihDRVJURklMRSkKKworICAgICAgICAgICAgc2VydmVyID0gVGhyZWFkZWRFY2hvU2VydmVyKGNvbnRleHQ9Y29udGV4dCwgY2hhdHR5PUZhbHNlKQorICAgICAgICAgICAgd2l0aCBzZXJ2ZXI6CisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBzZXNzaW9uIGlzIE5vbmUgYmVmb3JlIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgTm9uZSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBOb25lKQorICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2Vzc2lvbiA9IHMuc2Vzc2lvbgorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBvYmplY3QKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLCAnVmFsdWUgaXMgbm90IGEgU1NMU2Vzc2lvbi4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZQorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RyKGUuZXhjZXB0aW9uKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHNldCBzZXNzaW9uIGFmdGVyIGhhbmRzaGFrZS4nKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0LndyYXBfc29ja2V0KHNvY2tldC5zb2NrZXQoKSkgYXMgczoKKyAgICAgICAgICAgICAgICAgICAgIyBjYW4gc2V0IHNlc3Npb24gYmVmb3JlIGhhbmRzaGFrZSBhbmQgYmVmb3JlIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGNvbm5lY3Rpb24gd2FzIGVzdGFibGlzaGVkCisgICAgICAgICAgICAgICAgICAgIHMuc2Vzc2lvbiA9IHNlc3Npb24KKyAgICAgICAgICAgICAgICAgICAgcy5jb25uZWN0KChIT1NULCBzZXJ2ZXIucG9ydCkpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocy5zZXNzaW9uLmlkLCBzZXNzaW9uLmlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuc2Vzc2lvbiwgc2Vzc2lvbikKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzLnNlc3Npb25fcmV1c2VkLCBUcnVlKQorCisgICAgICAgICAgICAgICAgd2l0aCBjb250ZXh0Mi53cmFwX3NvY2tldChzb2NrZXQuc29ja2V0KCkpIGFzIHM6CisgICAgICAgICAgICAgICAgICAgICMgY2Fubm90IHJlLXVzZSBzZXNzaW9uIHdpdGggYSBkaWZmZXJlbnQgU1NMQ29udGV4dAorICAgICAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgICAgICAgICBzLnNlc3Npb24gPSBzZXNzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICBzLmNvbm5lY3QoKEhPU1QsIHNlcnZlci5wb3J0KSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoZS5leGNlcHRpb24pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdTZXNzaW9uIHJlZmVycyB0byBhIGRpZmZlcmVudCBTU0xDb250ZXh0LicpCisKIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKICAgICBpZiBzdXBwb3J0LnZlcmJvc2U6CkBAIC0zNDAwLDcgKzM1ODUsNyBAQAogICAgICAgICB3aXRoIHdhcm5pbmdzLmNhdGNoX3dhcm5pbmdzKCk6CiAgICAgICAgICAgICB3YXJuaW5ncy5maWx0ZXJ3YXJuaW5ncygKICAgICAgICAgICAgICAgICAnaWdub3JlJywKLSAgICAgICAgICAgICAgICAnZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJworICAgICAgICAgICAgICAgIHInZGlzdFwoXCkgYW5kIGxpbnV4X2Rpc3RyaWJ1dGlvblwoXCkgJwogICAgICAgICAgICAgICAgICdmdW5jdGlvbnMgYXJlIGRlcHJlY2F0ZWQgLionLAogICAgICAgICAgICAgICAgIFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsCiAgICAgICAgICAgICApCkBAIC0zNDIyLDE4ICszNjA3LDIwIEBACiAgICAgICAgICAgICBwYXNzCiAKICAgICBmb3IgZmlsZW5hbWUgaW4gWwotICAgICAgICBDRVJURklMRSwgUkVNT1RFX1JPT1RfQ0VSVCwgQllURVNfQ0VSVEZJTEUsCisgICAgICAgIENFUlRGSUxFLCBCWVRFU19DRVJURklMRSwKICAgICAgICAgT05MWUNFUlQsIE9OTFlLRVksIEJZVEVTX09OTFlDRVJULCBCWVRFU19PTkxZS0VZLAogICAgICAgICBTSUdORURfQ0VSVEZJTEUsIFNJR05FRF9DRVJURklMRTIsIFNJR05JTkdfQ0EsCiAgICAgICAgIEJBRENFUlQsIEJBREtFWSwgRU1QVFlDRVJUXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGVuYW1lKToKICAgICAgICAgICAgIHJhaXNlIHN1cHBvcnQuVGVzdEZhaWxlZCgiQ2FuJ3QgcmVhZCBjZXJ0aWZpY2F0ZSBmaWxlICVyIiAlIGZpbGVuYW1lKQogCi0gICAgdGVzdHMgPSBbQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0c10KKyAgICB0ZXN0cyA9IFsKKyAgICAgICAgQ29udGV4dFRlc3RzLCBCYXNpY1NvY2tldFRlc3RzLCBTU0xFcnJvclRlc3RzLCBNZW1vcnlCSU9UZXN0cywKKyAgICAgICAgU2ltcGxlQmFja2dyb3VuZFRlc3RzLAorICAgIF0KIAogICAgIGlmIHN1cHBvcnQuaXNfcmVzb3VyY2VfZW5hYmxlZCgnbmV0d29yaycpOgogICAgICAgICB0ZXN0cy5hcHBlbmQoTmV0d29ya2VkVGVzdHMpCi0gICAgICAgIHRlc3RzLmFwcGVuZChOZXR3b3JrZWRCSU9UZXN0cykKIAogICAgIGlmIF9oYXZlX3RocmVhZHM6CiAgICAgICAgIHRocmVhZF9pbmZvID0gc3VwcG9ydC50aHJlYWRpbmdfc2V0dXAoKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5IGIvTGliL3Rlc3QvdGVzdF9zdGF0aXN0aWNzLnB5CmluZGV4IDAwODlhZTguLjRiM2ZkMzYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RhdGlzdGljcy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0YXRpc3RpY3MucHkKQEAgLTIxLDYgKzIxLDEwIEBACiAKICMgPT09IEhlbHBlciBmdW5jdGlvbnMgYW5kIGNsYXNzID09PQogCitkZWYgc2lnbih4KToKKyAgICAiIiJSZXR1cm4gLTEuMCBmb3IgbmVnYXRpdmVzLCBpbmNsdWRpbmcgLTAuMCwgb3RoZXJ3aXNlICsxLjAuIiIiCisgICAgcmV0dXJuIG1hdGguY29weXNpZ24oMSwgeCkKKwogZGVmIF9uYW5fZXF1YWwoYSwgYik6CiAgICAgIiIiUmV0dXJuIFRydWUgaWYgYSBhbmQgYiBhcmUgYm90aCB0aGUgc2FtZSBraW5kIG9mIE5BTi4KIApAQCAtMjY0LDYgKzI2OCwxMyBAQAogIyA9PT0gVGVzdCB0aGUgaGVscGVycyA9PT0KICMgPT09PT09PT09PT09PT09PT09PT09PT09CiAKK2NsYXNzIFRlc3RTaWduKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IHRoYXQgdGhlIGhlbHBlciBmdW5jdGlvbiBzaWduKCkgd29ya3MgY29ycmVjdGx5LiIiIgorICAgIGRlZiB0ZXN0WmVyb2VzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBzaWduZWQgemVyb2VzIHJlcG9ydCB0aGVpciBzaWduIGNvcnJlY3RseS4KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaWduKDAuMCksICsxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpZ24oLTAuMCksIC0xKQorCiAKICMgLS0tIFRlc3RzIGZvciBhcHByb3hfZXF1YWwgLS0tCiAKQEAgLTY1OSw3ICs2NzAsNyBAQAogICAgIEB1bml0dGVzdC5za2lwSWYoc3lzLmZsYWdzLm9wdGltaXplID49IDIsCiAgICAgICAgICAgICAgICAgICAgICAiRG9jc3RyaW5ncyBhcmUgb21pdHRlZCB3aXRoIC1PTyBhbmQgYWJvdmUiKQogICAgIGRlZiB0ZXN0X2RvY190ZXN0cyhzZWxmKToKLSAgICAgICAgZmFpbGVkLCB0cmllZCA9IGRvY3Rlc3QudGVzdG1vZChzdGF0aXN0aWNzKQorICAgICAgICBmYWlsZWQsIHRyaWVkID0gZG9jdGVzdC50ZXN0bW9kKHN0YXRpc3RpY3MsIG9wdGlvbmZsYWdzPWRvY3Rlc3QuRUxMSVBTSVMpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlcih0cmllZCwgMCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmYWlsZWQsIDApCiAKQEAgLTcwMiw5ICs3MTMsOSBAQAogICAgIGRlZiB0ZXN0X2RlY2ltYWwoc2VsZik6CiAgICAgICAgIEQgPSBEZWNpbWFsCiAgICAgICAgIF9leGFjdF9yYXRpbyA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMTI1LCAxMDAwKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChfZXhhY3RfcmF0aW8oRCgiMTIuMzQ1IikpLCAoMTIzNDUsIDEwMDApKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKF9leGFjdF9yYXRpbyhEKCItMS45OCIpKSwgKC0xOTgsIDEwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjAuMTI1IikpLCAoMSwgOCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIjEyLjM0NSIpKSwgKDI0NjksIDIwMCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX2V4YWN0X3JhdGlvKEQoIi0xLjk4IikpLCAoLTk5LCA1MCkpCiAKICAgICBkZWYgdGVzdF9pbmYoc2VsZik6CiAgICAgICAgIElORiA9IGZsb2F0KCJJTkYiKQpAQCAtNzQzLDE4ICs3NTQsMTggQEAKIAogCiBjbGFzcyBEZWNpbWFsVG9SYXRpb1Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVGVzdCBfZGVjaW1hbF90b19yYXRpbyBwcml2YXRlIGZ1bmN0aW9uLgorICAgICMgVGVzdCBfZXhhY3RfcmF0aW8gcHJpdmF0ZSBmdW5jdGlvbi4KIAogICAgIGRlZiB0ZXN0X2luZmluaXR5KHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBJTkZzIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgaW5mID0gRGVjaW1hbCgnSU5GJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGluZiksIChpbmYsIE5vbmUpKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWluZiksICgtaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhpbmYpLCAoaW5mLCBOb25lKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0aXN0aWNzLl9leGFjdF9yYXRpbygtaW5mKSwgKC1pbmYsIE5vbmUpKQogCiAgICAgZGVmIHRlc3RfbmFuKHNlbGYpOgogICAgICAgICAjIFRlc3QgdGhhdCBOQU5zIGFyZSBoYW5kbGVkIGNvcnJlY3RseS4KICAgICAgICAgZm9yIG5hbiBpbiAoRGVjaW1hbCgnTkFOJyksIERlY2ltYWwoJ3NOQU4nKSk6Ci0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8obmFuKQorICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhuYW4pCiAgICAgICAgICAgICAjIEJlY2F1c2UgTkFOcyBhbHdheXMgY29tcGFyZSBub24tZXF1YWwsIHdlIGNhbm5vdCB1c2UgYXNzZXJ0RXF1YWwuCiAgICAgICAgICAgICAjIE5vciBjYW4gd2UgdXNlIGFuIGlkZW50aXR5IHRlc3QsIGFzIHdlIGRvbid0IGd1YXJhbnRlZSBhbnl0aGluZwogICAgICAgICAgICAgIyBhYm91dCB0aGUgb2JqZWN0IGlkZW50aXR5LgpAQCAtNzY3LDMwICs3NzgsMzAgQEAKICAgICAgICAgZm9yIGQgaW4gbnVtYmVyczoKICAgICAgICAgICAgICMgRmlyc3QgdGVzdCBwb3NpdGl2ZSBkZWNpbWFscy4KICAgICAgICAgICAgIGFzc2VydCBkID4gMAotICAgICAgICAgICAgbnVtLCBkZW4gPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKGQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKGQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChudW0sIDApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXIoZGVuLCAwKQogICAgICAgICAgICAgIyBUaGVuIHRlc3QgbmVnYXRpdmUgZGVjaW1hbHMuCi0gICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oLWQpCisgICAgICAgICAgICBudW0sIGRlbiA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKC1kKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwobnVtLCAwKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRHcmVhdGVyKGRlbiwgMCkKIAogICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2V4cG9uZW50KHNlbGYpOgogICAgICAgICAjIFRlc3QgcmVzdWx0IHdoZW4gdGhlIGV4cG9uZW50IGlzIG5lZ2F0aXZlLgotICAgICAgICB0ID0gc3RhdGlzdGljcy5fZGVjaW1hbF90b19yYXRpbyhEZWNpbWFsKCIwLjEyMzQiKSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNCwgMTAwMDApKQorICAgICAgICB0ID0gc3RhdGlzdGljcy5fZXhhY3RfcmF0aW8oRGVjaW1hbCgiMC4xMjM0IikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodCwgKDYxNywgNTAwMCkpCiAKICAgICBkZWYgdGVzdF9wb3NpdGl2ZV9leHBvbmVudChzZWxmKToKICAgICAgICAgIyBUZXN0IHJlc3VsdHMgd2hlbiB0aGUgZXhwb25lbnQgaXMgcG9zaXRpdmUuCi0gICAgICAgIHQgPSBzdGF0aXN0aWNzLl9kZWNpbWFsX3RvX3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKKyAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2V4YWN0X3JhdGlvKERlY2ltYWwoIjEuMjM0ZTciKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTIzNDAwMDAsIDEpKQogCiAgICAgZGVmIHRlc3RfcmVncmVzc2lvbl8yMDUzNihzZWxmKToKICAgICAgICAgIyBSZWdyZXNzaW9uIHRlc3QgZm9yIGlzc3VlIDIwNTM2LgogICAgICAgICAjIFNlZSBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1MzYKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMWUyIikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxZTIiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTAwLCAxKSkKLSAgICAgICAgdCA9IHN0YXRpc3RpY3MuX2RlY2ltYWxfdG9fcmF0aW8oRGVjaW1hbCgiMS40N2U1IikpCisgICAgICAgIHQgPSBzdGF0aXN0aWNzLl9leGFjdF9yYXRpbyhEZWNpbWFsKCIxLjQ3ZTUiKSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0LCAoMTQ3MDAwLCAxKSkKIAogCkBAIC05NzEsNiArOTgyLDM0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoX25hbl9lcXVhbCh4LCBuYW4pKQogCiAKK2NsYXNzIEZhaWxOZWdUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAiIiJUZXN0IF9mYWlsX25lZyBwcml2YXRlIGZ1bmN0aW9uLiIiIgorCisgICAgZGVmIHRlc3RfcGFzc190aHJvdWdoKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCB2YWx1ZXMgYXJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZC4KKyAgICAgICAgdmFsdWVzID0gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldCisgICAgICAgIG5ldyA9IGxpc3Qoc3RhdGlzdGljcy5fZmFpbF9uZWcodmFsdWVzKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZXMsIG5ldykKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlc19yYWlzZShzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgbmVnYXRpdmVzIHJhaXNlIGFuIGV4Y2VwdGlvbi4KKyAgICAgICAgZm9yIHggaW4gWzEsIDIuMCwgRnJhY3Rpb24oMyksIERlY2ltYWwoNCldOgorICAgICAgICAgICAgc2VxID0gWy14XQorICAgICAgICAgICAgaXQgPSBzdGF0aXN0aWNzLl9mYWlsX25lZyhzZXEpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciwgbmV4dCwgaXQpCisKKyAgICBkZWYgdGVzdF9lcnJvcl9tc2coc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGEgZ2l2ZW4gZXJyb3IgbWVzc2FnZSBpcyB1c2VkLgorICAgICAgICBtc2cgPSAiYmFkbmVzcyAjJWQiICUgcmFuZG9tLnJhbmRpbnQoMTAwMDAsIDk5OTk5KQorICAgICAgICB0cnk6CisgICAgICAgICAgICBuZXh0KHN0YXRpc3RpY3MuX2ZhaWxfbmVnKFstMV0sIG1zZykpCisgICAgICAgIGV4Y2VwdCBzdGF0aXN0aWNzLlN0YXRpc3RpY3NFcnJvciBhcyBlOgorICAgICAgICAgICAgZXJybXNnID0gZS5hcmdzWzBdCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmZhaWwoImV4cGVjdGVkIGV4Y2VwdGlvbiwgYnV0IGl0IGRpZG4ndCBoYXBwZW4iKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGVycm1zZywgbXNnKQorCisKICMgPT09IFRlc3RzIGZvciBwdWJsaWMgZnVuY3Rpb25zID09PQogCiBjbGFzcyBVbml2YXJpYXRlQ29tbW9uTWl4aW46CkBAIC0xMDgyLDEzICsxMTIxLDEzIEBACiAgICAgTm90IGFsbCB0ZXN0cyB0byBkbyB3aXRoIHR5cGVzIG5lZWQgZ28gaW4gdGhpcyBjbGFzcy4gT25seSB0aG9zZSB0aGF0CiAgICAgcmVseSBvbiB0aGUgZnVuY3Rpb24gcmV0dXJuaW5nIHRoZSBzYW1lIHR5cGUgYXMgaXRzIGlucHV0IGRhdGEuCiAgICAgIiIiCi0gICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgotICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KLSAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCi0gICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgorICAgIGRlZiBwcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdChzZWxmKToKKyAgICAgICAgIiIiUmV0dXJuIHRoZSB0eXBlcyB3aGljaCBhcmUgZXhwZWN0ZWQgdG8gYmUgY29uc2VydmVkLiIiIgogICAgICAgICBjbGFzcyBNeUZsb2F0KGZsb2F0KToKICAgICAgICAgICAgIGRlZiBfX3RydWVkaXZfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3RydWVkaXZfXyhvdGhlcikpCisgICAgICAgICAgICBkZWYgX19ydHJ1ZWRpdl9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fcnRydWVkaXZfXyhvdGhlcikpCiAgICAgICAgICAgICBkZWYgX19zdWJfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHR5cGUoc2VsZikoc3VwZXIoKS5fX3N1Yl9fKG90aGVyKSkKICAgICAgICAgICAgIGRlZiBfX3JzdWJfXyhzZWxmLCBvdGhlcik6CkBAIC0xMDk4LDkgKzExMzcsMTQgQEAKICAgICAgICAgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKICAgICAgICAgICAgICAgICByZXR1cm4gdHlwZShzZWxmKShzdXBlcigpLl9fYWRkX18ob3RoZXIpKQogICAgICAgICAgICAgX19yYWRkX18gPSBfX2FkZF9fCisgICAgICAgIHJldHVybiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KQogCisgICAgZGVmIHRlc3RfdHlwZXNfY29uc2VydmVkKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBmdW5jdGlvbnMga2VlcHMgdGhlIHNhbWUgdHlwZSBhcyB0aGVpciBkYXRhIHBvaW50cy4KKyAgICAgICAgIyAoRXhjbHVkZXMgbWl4ZWQgZGF0YSB0eXBlcy4pIFRoaXMgb25seSB0ZXN0cyB0aGUgdHlwZSBvZiB0aGUgcmV0dXJuCisgICAgICAgICMgcmVzdWx0LCBub3QgdGhlIHZhbHVlLgogICAgICAgICBkYXRhID0gc2VsZi5wcmVwYXJlX2RhdGEoKQotICAgICAgICBmb3Iga2luZCBpbiAoZmxvYXQsIERlY2ltYWwsIEZyYWN0aW9uLCBNeUZsb2F0KToKKyAgICAgICAgZm9yIGtpbmQgaW4gc2VsZi5wcmVwYXJlX3R5cGVzX2Zvcl9jb25zZXJ2YXRpb25fdGVzdCgpOgogICAgICAgICAgICAgZCA9IFtraW5kKHgpIGZvciB4IGluIGRhdGFdCiAgICAgICAgICAgICByZXN1bHQgPSBzZWxmLmZ1bmMoZCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShyZXN1bHQpLCBraW5kKQpAQCAtMTI3NSwxMiArMTMxOSwxNiBAQAogICAgICAgICBmb3IgeCBpbiAoMjMsIDQyLjUsIDEuM2UxNSwgRnJhY3Rpb24oMTUsIDE5KSwgRGVjaW1hbCgnMC4yOCcpKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKFt4XSksIHgpCiAKKyAgICBkZWYgcHJlcGFyZV92YWx1ZXNfZm9yX3JlcGVhdGVkX3NpbmdsZV90ZXN0KHNlbGYpOgorICAgICAgICByZXR1cm4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpCisKICAgICBkZWYgdGVzdF9yZXBlYXRlZF9zaW5nbGVfdmFsdWUoc2VsZik6CiAgICAgICAgICMgVGhlIGF2ZXJhZ2Ugb2YgYSBzaW5nbGUgcmVwZWF0ZWQgdmFsdWUgaXMgdGhlIHZhbHVlIGl0c2VsZi4KLSAgICAgICAgZm9yIHggaW4gKDMuNSwgMTcsIDIuNWUxNSwgRnJhY3Rpb24oNjEsIDY3KSwgRGVjaW1hbCgnNC45NzEyJykpOgorICAgICAgICBmb3IgeCBpbiBzZWxmLnByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdCgpOgogICAgICAgICAgICAgZm9yIGNvdW50IGluICgyLCA1LCAxMCwgMjApOgotICAgICAgICAgICAgICAgIGRhdGEgPSBbeF0qY291bnQKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh4PXgsIGNvdW50PWNvdW50KToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IFt4XSpjb3VudAorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgeCkKIAogCiBjbGFzcyBUZXN0TWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CkBAIC0xMzA0LDcgKzEzNTIsNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMjIuMDE1NjI1KQogCiAgICAgZGVmIHRlc3RfZGVjaW1hbHMoc2VsZik6Ci0gICAgICAgICMgVGVzdCBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgIyBUZXN0IG1lYW4gd2l0aCBEZWNpbWFscy4KICAgICAgICAgRCA9IERlY2ltYWwKICAgICAgICAgZGF0YSA9IFtEKCIxLjYzNCIpLCBEKCIyLjUxNyIpLCBEKCIzLjkxMiIpLCBEKCI0LjA3MiIpLCBEKCI1LjgxMyIpXQogICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQpAQCAtMTM3OSw2ICsxNDI3LDk0IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXRpc3RpY3MubWVhbihbdGlueV0qbiksIHRpbnkpCiAKIAorY2xhc3MgVGVzdEhhcm1vbmljTWVhbihOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmZ1bmMgPSBzdGF0aXN0aWNzLmhhcm1vbmljX21lYW4KKworICAgIGRlZiBwcmVwYXJlX2RhdGEoc2VsZik6CisgICAgICAgICMgT3ZlcnJpZGUgbWl4aW4gbWV0aG9kLgorICAgICAgICB2YWx1ZXMgPSBzdXBlcigpLnByZXBhcmVfZGF0YSgpCisgICAgICAgIHZhbHVlcy5yZW1vdmUoMCkKKyAgICAgICAgcmV0dXJuIHZhbHVlcworCisgICAgZGVmIHByZXBhcmVfdmFsdWVzX2Zvcl9yZXBlYXRlZF9zaW5nbGVfdGVzdChzZWxmKToKKyAgICAgICAgIyBPdmVycmlkZSBtaXhpbiBtZXRob2QuCisgICAgICAgIHJldHVybiAoMy41LCAxNywgMi41ZTE1LCBGcmFjdGlvbig2MSwgNjcpLCBEZWNpbWFsKCc0LjEyNScpKQorCisgICAgZGVmIHRlc3RfemVybyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgaGFybW9uaWMgbWVhbiByZXR1cm5zIHplcm8gd2hlbiBnaXZlbiB6ZXJvLgorICAgICAgICB2YWx1ZXMgPSBbMSwgMCwgMl0KKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmModmFsdWVzKSwgMCkKKworICAgIGRlZiB0ZXN0X25lZ2F0aXZlX2Vycm9yKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCBoYXJtb25pYyBtZWFuIHJhaXNlcyB3aGVuIGdpdmVuIGEgbmVnYXRpdmUgdmFsdWUuCisgICAgICAgIGV4YyA9IHN0YXRpc3RpY3MuU3RhdGlzdGljc0Vycm9yCisgICAgICAgIGZvciB2YWx1ZXMgaW4gKFstMV0sIFsxLCAtMiwgM10pOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QodmFsdWVzPXZhbHVlcyk6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoZXhjLCBzZWxmLmZ1bmMsIHZhbHVlcykKKworICAgIGRlZiB0ZXN0X2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBoYXJtb25pYyBtZWFuIHdpdGggaW50cy4KKyAgICAgICAgZGF0YSA9IFsyLCA0LCA0LCA4LCAxNiwgMTZdCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCA2KjQvNSkKKworICAgIGRlZiB0ZXN0X2Zsb2F0c19leGFjdChzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBzb21lIGNhcmVmdWxseSBjaG9zZW4gZmxvYXRzLgorICAgICAgICBkYXRhID0gWzEvOCwgMS80LCAxLzQsIDEvMiwgMS8yXQorICAgICAgICByYW5kb20uc2h1ZmZsZShkYXRhKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhkYXRhKSwgMS80KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZnVuYyhbMC4yNSwgMC41LCAxLjAsIDEuMF0pLCAwLjUpCisKKyAgICBkZWYgdGVzdF9zaW5nbGV0b25fbGlzdHMoc2VsZik6CisgICAgICAgICMgVGVzdCB0aGF0IGhhcm1vbmljIG1lYW4oW3hdKSByZXR1cm5zIChhcHByb3hpbWF0ZWx5KSB4LgorICAgICAgICBmb3IgeCBpbiByYW5nZSgxLCAxMDEpOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW3hdKSwgeCkKKworICAgIGRlZiB0ZXN0X2RlY2ltYWxzX2V4YWN0KHNlbGYpOgorICAgICAgICAjIFRlc3QgaGFybW9uaWMgbWVhbiB3aXRoIHNvbWUgY2FyZWZ1bGx5IGNob3NlbiBEZWNpbWFscy4KKyAgICAgICAgRCA9IERlY2ltYWwKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoW0QoMTUpLCBEKDMwKSwgRCg2MCksIEQoNjApXSksIEQoMzApKQorICAgICAgICBkYXRhID0gW0QoIjAuMDUiKSwgRCgiMC4xMCIpLCBEKCIwLjIwIiksIEQoIjAuMjAiKV0KKyAgICAgICAgcmFuZG9tLnNodWZmbGUoZGF0YSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSksIEQoIjAuMTAiKSkKKyAgICAgICAgZGF0YSA9IFtEKCIxLjY4IiksIEQoIjAuMzIiKSwgRCgiNS45NCIpLCBEKCIyLjc1IildCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBEKDY2NTI4KS83MDcyMykKKworICAgIGRlZiB0ZXN0X2ZyYWN0aW9ucyhzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBGcmFjdGlvbnMuCisgICAgICAgIEYgPSBGcmFjdGlvbgorICAgICAgICBkYXRhID0gW0YoMSwgMiksIEYoMiwgMyksIEYoMywgNCksIEYoNCwgNSksIEYoNSwgNiksIEYoNiwgNyksIEYoNywgOCldCisgICAgICAgIHJhbmRvbS5zaHVmZmxlKGRhdGEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKGRhdGEpLCBGKDcqNDIwLCA0MDI5KSkKKworICAgIGRlZiB0ZXN0X2luZihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBpbmZpbml0eS4KKyAgICAgICAgdmFsdWVzID0gWzIuMCwgZmxvYXQoJ2luZicpLCAxLjBdCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5mdW5jKHZhbHVlcyksIDIuMCkKKworICAgIGRlZiB0ZXN0X25hbihzZWxmKToKKyAgICAgICAgIyBUZXN0IGhhcm1vbmljIG1lYW4gd2l0aCBOQU5zLgorICAgICAgICB2YWx1ZXMgPSBbMi4wLCBmbG9hdCgnbmFuJyksIDEuMF0KKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG1hdGguaXNuYW4oc2VsZi5mdW5jKHZhbHVlcykpKQorCisgICAgZGVmIHRlc3RfbXVsdGlwbHlfZGF0YV9wb2ludHMoc2VsZik6CisgICAgICAgICMgVGVzdCBtdWx0aXBseWluZyBldmVyeSBkYXRhIHBvaW50IGJ5IGEgY29uc3RhbnQuCisgICAgICAgIGMgPSAxMTEKKyAgICAgICAgZGF0YSA9IFszLjQsIDQuNSwgNC45LCA2LjcsIDYuOCwgNy4yLCA4LjAsIDguMSwgOS40XQorICAgICAgICBleHBlY3RlZCA9IHNlbGYuZnVuYyhkYXRhKSpjCisgICAgICAgIHJlc3VsdCA9IHNlbGYuZnVuYyhbeCpjIGZvciB4IGluIGRhdGFdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdCwgZXhwZWN0ZWQpCisKKyAgICBkZWYgdGVzdF9kb3VibGVkX2RhdGEoc2VsZik6CisgICAgICAgICMgSGFybW9uaWMgbWVhbiBvZiBbYSxiLi4uel0gc2hvdWxkIGJlIHNhbWUgYXMgZm9yIFthLGEsYixiLi4ueix6XS4KKyAgICAgICAgZGF0YSA9IFtyYW5kb20udW5pZm9ybSgxLCA1KSBmb3IgXyBpbiByYW5nZSgxMDAwKV0KKyAgICAgICAgZXhwZWN0ZWQgPSBzZWxmLmZ1bmMoZGF0YSkKKyAgICAgICAgYWN0dWFsID0gc2VsZi5mdW5jKGRhdGEqMikKKyAgICAgICAgc2VsZi5hc3NlcnRBcHByb3hFcXVhbChhY3R1YWwsIGV4cGVjdGVkKQorCisKIGNsYXNzIFRlc3RNZWRpYW4oTnVtZXJpY1Rlc3RDYXNlLCBBdmVyYWdlTWl4aW4pOgogICAgICMgQ29tbW9uIHRlc3RzIGZvciBtZWRpYW4gYW5kIGFsbCBtZWRpYW4uKiBmdW5jdGlvbnMuCiAgICAgZGVmIHNldFVwKHNlbGYpOgpAQCAtMTYwMCw2ICsxNzM2LDIyIEBACiAgICAgICAgIGRhdGEgPSBbMjIwLCAyMjAsIDI0MCwgMjYwLCAyNjAsIDI2MCwgMjYwLCAyODAsIDI4MCwgMzAwLCAzMjAsIDM0MF0KICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmZ1bmMoZGF0YSwgMjApLCAyNjUuMCkKIAorICAgIGRlZiB0ZXN0X2RhdGFfdHlwZV9lcnJvcihzZWxmKToKKyAgICAgICAgIyBUZXN0IG1lZGlhbl9ncm91cGVkIHdpdGggc3RyLCBieXRlcyBkYXRhIHR5cGVzIGZvciBkYXRhIGFuZCBpbnRlcnZhbAorICAgICAgICBkYXRhID0gWyIiLCAiIiwgIiJdCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhKQorICAgICAgICAjLS0tCisgICAgICAgIGRhdGEgPSBbYiIiLCBiIiIsIGIiIl0KKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLmZ1bmMsIGRhdGEpCisgICAgICAgICMtLS0KKyAgICAgICAgZGF0YSA9IFsxLCAyLCAzXQorICAgICAgICBpbnRlcnZhbCA9ICIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKyAgICAgICAgIy0tLQorICAgICAgICBkYXRhID0gWzEsIDIsIDNdCisgICAgICAgIGludGVydmFsID0gYiIiCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgc2VsZi5mdW5jLCBkYXRhLCBpbnRlcnZhbCkKKwogCiBjbGFzcyBUZXN0TW9kZShOdW1lcmljVGVzdENhc2UsIEF2ZXJhZ2VNaXhpbiwgVW5pdmFyaWF0ZVR5cGVNaXhpbik6CiAgICAgIyBUZXN0IGNhc2VzIGZvciB0aGUgZGlzY3JldGUgdmVyc2lvbiBvZiBtb2RlLgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3RyZnRpbWUucHkKaW5kZXggNzcyY2QwNi4uNzJiMTkxMCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJmdGltZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N0cmZ0aW1lLnB5CkBAIC0yMyw5ICsyMyw5IEBACiAgICAgIiIiCiAgICAgbmV3X3RleHQgPSByZS5lc2NhcGUodGV4dCkKICAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UocmUuZXNjYXBlKGFtcG0pLCBhbXBtKQotICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZSgnXCUnLCAnJScpCi0gICAgbmV3X3RleHQgPSBuZXdfdGV4dC5yZXBsYWNlKCdcOicsICc6JykKLSAgICBuZXdfdGV4dCA9IG5ld190ZXh0LnJlcGxhY2UoJ1w/JywgJz8nKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1wlJywgJyUnKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w6JywgJzonKQorICAgIG5ld190ZXh0ID0gbmV3X3RleHQucmVwbGFjZShyJ1w/JywgJz8nKQogICAgIHJldHVybiBuZXdfdGV4dAogCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJpbmdfbGl0ZXJhbHMucHkKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9zdHJsaXQucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CmluZGV4IDg3Y2ZmZTguLjM3YWNlMjMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RybGl0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3RyaW5nX2xpdGVyYWxzLnB5CkBAIC0xMjEsOSArMTIxLDkgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKCIiIiBiJ1x4MDEnICIiIiksIGJ5dGUoMSkpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGInXHg4MScgIiIiKSwgYnl0ZSgweDgxKSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x4ODEnICIiIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChldmFsKHIiIiIgYidcdTE4ODEnICIiIiksIGInXFwnICsgYid1MTg4MScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZXZhbChyIiIiIGJyJ1x1MTg4MScgIiIiKSwgYidcXCcgKyBiJ3UxODgxJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1x1MTg4MScgIiIiKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBiJ1xVMDAwMWQxMjAnICIiIiksIGInXFwnICsgYidVMDAwMWQxMjAnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV2YWwociIiIiBicidcVTAwMDFkMTIwJyAiIiIpLCBiJ1xcJyArIGInVTAwMDFkMTIwJykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3ludGF4RXJyb3IsIGV2YWwsICIiIiBiJ1xVMDAwMWQxMjAnICIiIikKIAogICAgIGRlZiB0ZXN0X2V2YWxfYnl0ZXNfaW5jb21wbGV0ZShzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkgYi9MaWIvdGVzdC90ZXN0X3N0cnB0aW1lLnB5CmluZGV4IDg1MTI2ZTYuLjIyZWFjMzIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3RycHRpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJwdGltZS5weQpAQCAtNSw3ICs1LDYgQEAKIGltcG9ydCBsb2NhbGUKIGltcG9ydCByZQogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gZGF0ZXRpbWUgaW1wb3J0IGRhdGUgYXMgZGF0ZXRpbWVfZGF0ZQogCkBAIC0xMzAsNyArMTI5LDcgQEAKICAgICBkZWYgdGVzdF9wYXR0ZXJuX2VzY2FwaW5nKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBhbnkgY2hhcmFjdGVycyBpbiB0aGUgZm9ybWF0IHN0cmluZyB0aGF0IG1pZ2h0IGJlIHRha2VuIGFzCiAgICAgICAgICMgcmVnZXggc3ludGF4IGlzIGVzY2FwZWQuCi0gICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4oIlxkKyIpCisgICAgICAgIHBhdHRlcm5fc3RyaW5nID0gc2VsZi50aW1lX3JlLnBhdHRlcm4ociJcZCsiKQogICAgICAgICBzZWxmLmFzc2VydEluKHIiXFxkXCsiLCBwYXR0ZXJuX3N0cmluZywKICAgICAgICAgICAgICAgICAgICAgICAiJXMgZG9lcyBub3QgaGF2ZSByZSBjaGFyYWN0ZXJzIGVzY2FwZWQgcHJvcGVybHkiICUKICAgICAgICAgICAgICAgICAgICAgICBwYXR0ZXJuX3N0cmluZykKQEAgLTE1Myw4ICsxNTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICInJXMnIHVzaW5nICclcyc7IGdyb3VwICdhJyA9ICclcycsIGdyb3VwICdiJyA9ICVzJyIgJQogICAgICAgICAgICAgICAgICAgICAgICAgIChmb3VuZC5zdHJpbmcsIGZvdW5kLnJlLnBhdHRlcm4sIGZvdW5kLmdyb3VwKCdhJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kLmdyb3VwKCdiJykpKQotICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnYScsJ0EnLCdiJywnQicsJ2MnLCdkJywnSCcsJ0knLCdqJywnbScsJ00nLCdwJywnUycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdVJywndycsJ1cnLCd4JywnWCcsJ3knLCdZJywnWicsJyUnKToKKyAgICAgICAgZm9yIGRpcmVjdGl2ZSBpbiAoJ2EnLCdBJywnYicsJ0InLCdjJywnZCcsJ0cnLCdIJywnSScsJ2onLCdtJywnTScsJ3AnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAnUycsJ3UnLCdVJywnVicsJ3cnLCdXJywneCcsJ1gnLCd5JywnWScsJ1onLCclJyk6CiAgICAgICAgICAgICBjb21waWxlZCA9IHNlbGYudGltZV9yZS5jb21waWxlKCIlIiArIGRpcmVjdGl2ZSkKICAgICAgICAgICAgIGZvdW5kID0gY29tcGlsZWQubWF0Y2godGltZS5zdHJmdGltZSgiJSIgKyBkaXJlY3RpdmUpKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAiTWF0Y2hpbmcgZmFpbGVkIG9uICclcycgdXNpbmcgJyVzJyByZWdleCIgJQpAQCAtMTcxLDkgKzE3MCw5IEBACiAKICAgICBkZWYgdGVzdF9tYXRjaGluZ193aXRoX2VzY2FwZXMoc2VsZik6CiAgICAgICAgICMgTWFrZSBzdXJlIGEgZm9ybWF0IHRoYXQgcmVxdWlyZXMgZXNjYXBpbmcgb2YgY2hhcmFjdGVycyB3b3JrcwotICAgICAgICBjb21waWxlZF9yZSA9IHNlbGYudGltZV9yZS5jb21waWxlKCJcdysgJW0iKQotICAgICAgICBmb3VuZCA9IGNvbXBpbGVkX3JlLm1hdGNoKCJcdysgMTAiKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsICJFc2NhcGluZyBmYWlsZWQgb2YgZm9ybWF0ICdcdysgMTAnIikKKyAgICAgICAgY29tcGlsZWRfcmUgPSBzZWxmLnRpbWVfcmUuY29tcGlsZShyIlx3KyAlbSIpCisgICAgICAgIGZvdW5kID0gY29tcGlsZWRfcmUubWF0Y2gociJcdysgMTAiKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZm91bmQsIHIiRXNjYXBpbmcgZmFpbGVkIG9mIGZvcm1hdCAnXHcrIDEwJyIpCiAKICAgICBkZWYgdGVzdF9sb2NhbGVfZGF0YV93X3JlZ2V4X21ldGFjaGFyYWN0ZXJzKHNlbGYpOgogICAgICAgICAjIENoZWNrIHRoYXQgaWYgbG9jYWxlIGRhdGEgY29udGFpbnMgcmVnZXggbWV0YWNoYXJhY3RlcnMgdGhleSBhcmUKQEAgLTIxOSw2ICsyMTgsMjYgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCInJXMnIGRpZCBub3QgcmFpc2UgVmFsdWVFcnJvciIgJSBiYWRfZm9ybWF0KQogCisgICAgICAgICMgQW1iaWd1b3VzIG9yIGluY29tcGxldGUgY2FzZXMgdXNpbmcgSVNPIHllYXIvd2Vlay93ZWVrZGF5IGRpcmVjdGl2ZXMKKyAgICAgICAgIyAxLiBJU08gd2VlayAoJVYpIGlzIHNwZWNpZmllZCwgYnV0IHRoZSB5ZWFyIGlzIHNwZWNpZmllZCB3aXRoICVZCisgICAgICAgICMgaW5zdGVhZCBvZiAlRworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgX3N0cnB0aW1lLl9zdHJwdGltZSgiMTk5OSA1MCIsICIlWSAlViIpCisgICAgICAgICMgMi4gSVNPIHllYXIgKCVHKSBhbmQgSVNPIHdlZWsgKCVWKSBhcmUgc3BlY2lmaWVkLCBidXQgd2Vla2RheSBpcyBub3QKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjE5OTkgNTEiLCAiJUcgJVYiKQorICAgICAgICAjIDMuIElTTyB5ZWFyICglRykgYW5kIHdlZWtkYXkgYXJlIHNwZWNpZmllZCwgYnV0IElTTyB3ZWVrICglVikgaXMgbm90CisgICAgICAgIGZvciB3IGluICgnQScsICdhJywgJ3cnLCAndScpOgorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDUxIiwiJUcgJXt9Ii5mb3JtYXQodykpCisgICAgICAgICMgNC4gSVNPIHllYXIgaXMgc3BlY2lmaWVkIGFsb25lIChlLmcuIHRpbWUuc3RycHRpbWUoJzIwMTUnLCAnJUcnKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgIF9zdHJwdGltZS5fc3RycHRpbWUoIjIwMTUiLCAiJUciKQorICAgICAgICAjIDUuIEp1bGlhbi9vcmRpbmFsIGRheSAoJWopIGlzIHNwZWNpZmllZCB3aXRoICVHLCBidXQgbm90ICVZCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICBfc3RycHRpbWUuX3N0cnB0aW1lKCIxOTk5IDI1NiIsICIlRyAlaiIpCisKKwogICAgIGRlZiB0ZXN0X3N0cnB0aW1lX2V4Y2VwdGlvbl9jb250ZXh0KHNlbGYpOgogICAgICAgICAjIGNoZWNrIHRoYXQgdGhpcyBkb2Vzbid0IGNoYWluIGV4Y2VwdGlvbnMgbmVlZGxlc3NseSAoc2VlICMxNzU3MikKICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgpAQCAtMjkwLDcgKzMwOSw3IEBACiAKICAgICBkZWYgdGVzdF93ZWVrZGF5KHNlbGYpOgogICAgICAgICAjIFRlc3Qgd2Vla2RheSBkaXJlY3RpdmVzCi0gICAgICAgIGZvciBkaXJlY3RpdmUgaW4gKCdBJywgJ2EnLCAndycpOgorICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnQScsICdhJywgJ3cnLCAndScpOgogICAgICAgICAgICAgc2VsZi5oZWxwZXIoZGlyZWN0aXZlLDYpCiAKICAgICBkZWYgdGVzdF9qdWxpYW4oc2VsZik6CkBAIC0zODQsNyArNDAzLDcgQEAKICAgICAgICAgIyB1bmJhbGFuY2VkIHBhcmVudGhlc2VzIHdoZW4gdGhlIHJlZ2V4IGlzIGNvbXBpbGVkIGlmIHRoZXkgYXJlIG5vdAogICAgICAgICAjIGVzY2FwZWQuCiAgICAgICAgICMgVGVzdCBpbnN0aWdhdGVkIGJ5IGJ1ZyAjNzk2MTQ5IC4KLSAgICAgICAgbmVlZF9lc2NhcGluZyA9ICIuXiQqKz97fVxbXXwpKCIKKyAgICAgICAgbmVlZF9lc2NhcGluZyA9IHIiLl4kKis/e31cW118KSgiCiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShfc3RycHRpbWUuX3N0cnB0aW1lX3RpbWUobmVlZF9lc2NhcGluZywgbmVlZF9lc2NhcGluZykpCiAKICAgICBkZWYgdGVzdF9mZWIyOV9vbl9sZWFwX3llYXJfd2l0aG91dF95ZWFyKHNlbGYpOgpAQCAtNDU3LDE2ICs0NzYsMjAgQEAKICAgICAgICAgIyBTaG91bGQgYmUgYWJsZSB0byBpbmZlciBkYXRlIGlmIGdpdmVuIHllYXIsIHdlZWsgb2YgeWVhciAoJVUgb3IgJVcpCiAgICAgICAgICMgYW5kIGRheSBvZiB0aGUgd2VlawogICAgICAgICBkZWYgdGVzdF9oZWxwZXIoeW1kX3R1cGxlLCB0ZXN0X3JlYXNvbik6Ci0gICAgICAgICAgICBmb3IgZGlyZWN0aXZlIGluICgnVycsICdVJyk6Ci0gICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZyA9ICIlJVkgJSUlcyAlJXciICUgZGlyZWN0aXZlCi0gICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKLSAgICAgICAgICAgICAgICBzdHJwX2lucHV0ID0gZHRfZGF0ZS5zdHJmdGltZShmb3JtYXRfc3RyaW5nKQotICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0ID0gX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHN0cnBfaW5wdXQsIGZvcm1hdF9zdHJpbmcpCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHN0cnBfb3V0cHV0WzozXSA9PSB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAiJXMoJXMpIHRlc3QgZmFpbGVkIHcvICclcyc6ICVzICE9ICVzICglcyAhPSAlcykiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodGVzdF9yZWFzb24sIGRpcmVjdGl2ZSwgc3RycF9pbnB1dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RycF9vdXRwdXRbOjNdLCB5bWRfdHVwbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfb3V0cHV0WzddLCBkdF9kYXRlLnRpbWV0dXBsZSgpWzddKSkKKyAgICAgICAgICAgIGZvciB5ZWFyX3dlZWtfZm9ybWF0IGluICgnJVkgJVcnLCAnJVkgJVUnLCAnJUcgJVYnKToKKyAgICAgICAgICAgICAgICBmb3Igd2Vla2RheV9mb3JtYXQgaW4gKCcldycsICcldScsICclYScsICclQScpOgorICAgICAgICAgICAgICAgICAgICBmb3JtYXRfc3RyaW5nID0geWVhcl93ZWVrX2Zvcm1hdCArICcgJyArIHdlZWtkYXlfZm9ybWF0CisgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHRlc3RfcmVhc29uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlPXltZF90dXBsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0PWZvcm1hdF9zdHJpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgZHRfZGF0ZSA9IGRhdGV0aW1lX2RhdGUoKnltZF90dXBsZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0cnBfaW5wdXQgPSBkdF9kYXRlLnN0cmZ0aW1lKGZvcm1hdF9zdHJpbmcpCisgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dCA9IF9zdHJwdGltZS5fc3RycHRpbWVfdGltZShzdHJwX2lucHV0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X3N0cmluZykKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZyA9ICIlcjogJXMgIT0gJXMiICUgKHN0cnBfaW5wdXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJwX291dHB1dFs3XSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR0X2RhdGUudGltZXR1cGxlKClbN10pCisgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cnBfb3V0cHV0WzozXSwgeW1kX3R1cGxlLCBtc2cpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCAzKSwgIndlZWsgMCIpCiAgICAgICAgIHRlc3RfaGVscGVyKCgxOTAxLCAxLCA4KSwgImNvbW1vbiBjYXNlIikKICAgICAgICAgdGVzdF9oZWxwZXIoKDE5MDEsIDEsIDEzKSwgImRheSBvbiBTdW5kYXkiKQpAQCAtNDk4LDMzICs1MjEsNDggQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoX3N0cnB0aW1lLl9zdHJwdGltZV90aW1lKHZhbHVlLCBmb3JtYXQpWzotMV0sIGV4cGVjdGVkKQogICAgICAgICBjaGVjaygnMjAxNSAwIDAnLCAnJVkgJVUgJXcnLCAyMDE0LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MikKICAgICAgICAgY2hlY2soJzIwMTUgMCAwJywgJyVZICVXICV3JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAxJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjMpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMScsICclWSAlVSAldycsIDIwMTQsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzYzKQogICAgICAgICBjaGVjaygnMjAxNSAwIDEnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2MykKKyAgICAgICAgY2hlY2soJzIwMTUgMSAyJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMicsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY0KQogICAgICAgICBjaGVjaygnMjAxNSAwIDInLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMTUgMSAzJywgJyVHICVWICV1JywgMjAxNCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDE1IDAgMycsICclWSAlVSAldycsIDIwMTQsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY1KQogICAgICAgICBjaGVjaygnMjAxNSAwIDMnLCAnJVkgJVcgJXcnLCAyMDE0LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA0JywgJyVHICVWICV1JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVVICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMTUgMCA0JywgJyVZICVXICV3JywgMjAxNSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMTUgMSA1JywgJyVHICVWICV1JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVVICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMTUgMCA1JywgJyVZICVXICV3JywgMjAxNSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMTUgMSA2JywgJyVHICVWICV1JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVVICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMTUgMCA2JywgJyVZICVXICV3JywgMjAxNSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMTUgMSA3JywgJyVHICVWICV1JywgMjAxNSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKIAogICAgICAgICBjaGVjaygnMjAwOSAwIDAnLCAnJVkgJVUgJXcnLCAyMDA4LCAxMiwgMjgsIDAsIDAsIDAsIDYsIDM2MykKICAgICAgICAgY2hlY2soJzIwMDkgMCAwJywgJyVZICVXICV3JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAxJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDI5LCAwLCAwLCAwLCAwLCAzNjQpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMScsICclWSAlVSAldycsIDIwMDgsIDEyLCAyOSwgMCwgMCwgMCwgMCwgMzY0KQogICAgICAgICBjaGVjaygnMjAwOSAwIDEnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMjksIDAsIDAsIDAsIDAsIDM2NCkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAyJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMwLCAwLCAwLCAwLCAxLCAzNjUpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMicsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMCwgMCwgMCwgMCwgMSwgMzY1KQogICAgICAgICBjaGVjaygnMjAwOSAwIDInLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzAsIDAsIDAsIDAsIDEsIDM2NSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSAzJywgJyVHICVWICV1JywgMjAwOCwgMTIsIDMxLCAwLCAwLCAwLCAyLCAzNjYpCiAgICAgICAgIGNoZWNrKCcyMDA5IDAgMycsICclWSAlVSAldycsIDIwMDgsIDEyLCAzMSwgMCwgMCwgMCwgMiwgMzY2KQogICAgICAgICBjaGVjaygnMjAwOSAwIDMnLCAnJVkgJVcgJXcnLCAyMDA4LCAxMiwgMzEsIDAsIDAsIDAsIDIsIDM2NikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA0JywgJyVHICVWICV1JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVVICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKICAgICAgICAgY2hlY2soJzIwMDkgMCA0JywgJyVZICVXICV3JywgMjAwOSwgMSwgMSwgMCwgMCwgMCwgMywgMSkKKyAgICAgICAgY2hlY2soJzIwMDkgMSA1JywgJyVHICVWICV1JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVVICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKICAgICAgICAgY2hlY2soJzIwMDkgMCA1JywgJyVZICVXICV3JywgMjAwOSwgMSwgMiwgMCwgMCwgMCwgNCwgMikKKyAgICAgICAgY2hlY2soJzIwMDkgMSA2JywgJyVHICVWICV1JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVVICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKICAgICAgICAgY2hlY2soJzIwMDkgMCA2JywgJyVZICVXICV3JywgMjAwOSwgMSwgMywgMCwgMCwgMCwgNSwgMykKKyAgICAgICAgY2hlY2soJzIwMDkgMSA3JywgJyVHICVWICV1JywgMjAwOSwgMSwgNCwgMCwgMCwgMCwgNiwgNCkKKwogCiBjbGFzcyBDYWNoZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiJUZXN0IHRoYXQgY2FjaGluZyB3b3JrcyBwcm9wZXJseS4iIiIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3RydWN0LnB5IGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKaW5kZXggZWZiZGJmYy4uNGQ5ZDYwMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdHJ1Y3QucHkKQEAgLTEsNSArMSw2IEBACiBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBhYmMKIGltcG9ydCBhcnJheQoraW1wb3J0IG1hdGgKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgc3RydWN0CkBAIC0xNSwyMiArMTYsMTAgQEAKIGRlZiBpdGVyX2ludGVnZXJfZm9ybWF0cyhieXRlb3JkZXJzPWJ5dGVvcmRlcnMpOgogICAgIGZvciBjb2RlIGluIGludGVnZXJfY29kZXM6CiAgICAgICAgIGZvciBieXRlb3JkZXIgaW4gYnl0ZW9yZGVyczoKLSAgICAgICAgICAgIGlmIChieXRlb3JkZXIgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgncScsICdRJykgYW5kCi0gICAgICAgICAgICAgICAgbm90IEhBVkVfTE9OR19MT05HKToKLSAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgaWYgKGJ5dGVvcmRlciBub3QgaW4gKCcnLCAnQCcpIGFuZCBjb2RlIGluICgnbicsICdOJykpOgogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICB5aWVsZCBjb2RlLCBieXRlb3JkZXIKIAotIyBOYXRpdmUgJ3EnIHBhY2tpbmcgaXNuJ3QgYXZhaWxhYmxlIG9uIHN5c3RlbXMgdGhhdCBkb24ndCBoYXZlIHRoZSBDCi0jIGxvbmcgbG9uZyB0eXBlLgotdHJ5OgotICAgIHN0cnVjdC5wYWNrKCdxJywgNSkKLWV4Y2VwdCBzdHJ1Y3QuZXJyb3I6Ci0gICAgSEFWRV9MT05HX0xPTkcgPSBGYWxzZQotZWxzZToKLSAgICBIQVZFX0xPTkdfTE9ORyA9IFRydWUKLQogZGVmIHN0cmluZ19yZXZlcnNlKHMpOgogICAgIHJldHVybiBzWzo6LTFdCiAKQEAgLTE1OCw5ICsxNDcsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzaXplLCBleHBlY3RlZF9zaXplW2NvZGVdKQogCiAgICAgICAgICMgbmF0aXZlIGludGVnZXIgc2l6ZXMKLSAgICAgICAgbmF0aXZlX3BhaXJzID0gJ2JCJywgJ2hIJywgJ2lJJywgJ2xMJywgJ25OJwotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIG5hdGl2ZV9wYWlycyArPSAncVEnLAorICAgICAgICBuYXRpdmVfcGFpcnMgPSAnYkInLCAnaEgnLCAnaUknLCAnbEwnLCAnbk4nLCAncVEnCiAgICAgICAgIGZvciBmb3JtYXRfcGFpciBpbiBuYXRpdmVfcGFpcnM6CiAgICAgICAgICAgICBmb3IgYnl0ZW9yZGVyIGluICcnLCAnQCc6CiAgICAgICAgICAgICAgICAgc2lnbmVkX3NpemUgPSBzdHJ1Y3QuY2FsY3NpemUoYnl0ZW9yZGVyICsgZm9ybWF0X3BhaXJbMF0pCkBAIC0xNzMsOSArMTYwLDggQEAKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoNCwgc3RydWN0LmNhbGNzaXplKCdsJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnaCcpLCBzdHJ1Y3QuY2FsY3NpemUoJ2knKSkKICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdpJyksIHN0cnVjdC5jYWxjc2l6ZSgnbCcpKQotICAgICAgICBpZiBIQVZFX0xPTkdfTE9ORzoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0TGVzc0VxdWFsKDgsIHN0cnVjdC5jYWxjc2l6ZSgncScpKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQorICAgICAgICBzZWxmLmFzc2VydExlc3NFcXVhbCg4LCBzdHJ1Y3QuY2FsY3NpemUoJ3EnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRMZXNzRXF1YWwoc3RydWN0LmNhbGNzaXplKCdsJyksIHN0cnVjdC5jYWxjc2l6ZSgncScpKQogICAgICAgICBzZWxmLmFzc2VydEdyZWF0ZXJFcXVhbChzdHJ1Y3QuY2FsY3NpemUoJ24nKSwgc3RydWN0LmNhbGNzaXplKCdpJykpCiAgICAgICAgIHNlbGYuYXNzZXJ0R3JlYXRlckVxdWFsKHN0cnVjdC5jYWxjc2l6ZSgnbicpLCBzdHJ1Y3QuY2FsY3NpemUoJ1AnKSkKIApAQCAtMzY2LDggKzM1Miw2IEBACiAgICAgICAgICMgU0YgYnVnIDcwNTgzNi4gICI8ZiIgYW5kICI+ZiIgaGFkIGEgc2V2ZXJlIHJvdW5kaW5nIGJ1Zywgd2hlcmUgYSBjYXJyeQogICAgICAgICAjIGZyb20gdGhlIGxvdy1vcmRlciBkaXNjYXJkZWQgYml0cyBjb3VsZCBwcm9wYWdhdGUgaW50byB0aGUgZXhwb25lbnQKICAgICAgICAgIyBmaWVsZCwgY2F1c2luZyB0aGUgcmVzdWx0IHRvIGJlIHdyb25nIGJ5IGEgZmFjdG9yIG9mIDIuCi0gICAgICAgIGltcG9ydCBtYXRoCi0KICAgICAgICAgZm9yIGJhc2UgaW4gcmFuZ2UoMSwgMzMpOgogICAgICAgICAgICAgIyBzbWFsbGVyIDwtIGxhcmdlc3QgcmVwcmVzZW50YWJsZSBmbG9hdCBsZXNzIHRoYW4gYmFzZS4KICAgICAgICAgICAgIGRlbHRhID0gMC41CkBAIC02NTksNiArNjQzLDExMCBAQAogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhTdG9wSXRlcmF0aW9uLCBuZXh0LCBpdCkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgbmV4dCwgaXQpCiAKKyAgICBkZWYgdGVzdF9oYWxmX2Zsb2F0KHNlbGYpOgorICAgICAgICAjIExpdHRsZS1lbmRpYW4gZXhhbXBsZXMgZnJvbToKKyAgICAgICAgIyBodHRwOi8vZW4ud2lraXBlZGlhLm9yZy93aWtpL0hhbGZfcHJlY2lzaW9uX2Zsb2F0aW5nLXBvaW50X2Zvcm1hdAorICAgICAgICBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdCA9IFsKKyAgICAgICAgICAgIChiJ1x4MDBceDNjJywgMS4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceGMwJywgLTIuMCksCisgICAgICAgICAgICAoYidceGZmXHg3YicsIDY1NTA0LjApLCAjICAobWF4IGhhbGYgcHJlY2lzaW9uKQorICAgICAgICAgICAgKGInXHgwMFx4MDQnLCAyKiotMTQpLCAjIH49IDYuMTAzNTIgKiAxMCoqLTUgKG1pbiBwb3Mgbm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMVx4MDAnLCAyKiotMjQpLCAjIH49IDUuOTYwNDYgKiAxMCoqLTggKG1pbiBwb3Mgc3Vibm9ybWFsKQorICAgICAgICAgICAgKGInXHgwMFx4MDAnLCAwLjApLAorICAgICAgICAgICAgKGInXHgwMFx4ODAnLCAtMC4wKSwKKyAgICAgICAgICAgIChiJ1x4MDBceDdjJywgZmxvYXQoJytpbmYnKSksCisgICAgICAgICAgICAoYidceDAwXHhmYycsIGZsb2F0KCctaW5mJykpLAorICAgICAgICAgICAgKGInXHg1NVx4MzUnLCAwLjMzMzI1MTk1MzEyNSksICMgfj0gMS8zCisgICAgICAgIF0KKworICAgICAgICBmb3IgbGVfYml0cywgZiBpbiBmb3JtYXRfYml0c19mbG9hdF9fY2xlYW5Sb3VuZHRyaXBfbGlzdDoKKyAgICAgICAgICAgIGJlX2JpdHMgPSBsZV9iaXRzWzo6LTFdCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJzxlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlX2JpdHMsIHN0cnVjdC5wYWNrKCc8ZScsIGYpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCc+ZScsIGJlX2JpdHMpWzBdKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChiZV9iaXRzLCBzdHJ1Y3QucGFjaygnPmUnLCBmKSkKKyAgICAgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgPT0gJ2xpdHRsZSc6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChmLCBzdHJ1Y3QudW5wYWNrKCdlJywgbGVfYml0cylbMF0pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZV9iaXRzLCBzdHJ1Y3QucGFjaygnZScsIGYpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYsIHN0cnVjdC51bnBhY2soJ2UnLCBiZV9iaXRzKVswXSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJlX2JpdHMsIHN0cnVjdC5wYWNrKCdlJywgZikpCisKKyAgICAgICAgIyBDaGVjayBmb3IgTmFOIGhhbmRsaW5nOgorICAgICAgICBmb3JtYXRfYml0c19fbmFuX2xpc3QgPSBbCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHhmYycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4ZmUnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceGZmJyksCisgICAgICAgICAgICAoJzxlJywgYidceDAxXHg3YycpLAorICAgICAgICAgICAgKCc8ZScsIGInXHgwMFx4N2UnKSwKKyAgICAgICAgICAgICgnPGUnLCBiJ1x4ZmZceDdmJyksCisgICAgICAgIF0KKworICAgICAgICBmb3IgZm9ybWF0Y29kZSwgYml0cyBpbiBmb3JtYXRfYml0c19fbmFuX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUobWF0aC5pc25hbihzdHJ1Y3QudW5wYWNrKCc8ZScsIGJpdHMpWzBdKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShtYXRoLmlzbmFuKHN0cnVjdC51bnBhY2soJz5lJywgYml0c1s6Oi0xXSlbMF0pKQorCisgICAgICAgICMgQ2hlY2sgdGhhdCBwYWNraW5nIHByb2R1Y2VzIGEgYml0IHBhdHRlcm4gcmVwcmVzZW50aW5nIGEgcXVpZXQgTmFOOgorICAgICAgICAjIGFsbCBleHBvbmVudCBiaXRzIGFuZCB0aGUgbXNiIG9mIHRoZSBmcmFjdGlvbiBzaG91bGQgYWxsIGJlIDEuCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIG1hdGgubmFuKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBhY2tlZFsxXSAmIDB4N2UsIDB4N2UpCisgICAgICAgIHBhY2tlZCA9IHN0cnVjdC5wYWNrKCc8ZScsIC1tYXRoLm5hbikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwYWNrZWRbMV0gJiAweDdlLCAweDdlKQorCisgICAgICAgICMgQ2hlY2tzIGZvciByb3VuZC10by1ldmVuIGJlaGF2aW9yCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19yb3VuZGluZ19saXN0ID0gWworICAgICAgICAgICAgKCc+ZScsIGInXHgwMFx4MDEnLCAyLjAqKi0yNSArIDIuMCoqLTM1KSwgIyBSb3VuZHMgdG8gbWluaW11bSBzdWJub3JtYWwKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDBceDAwJywgMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDAwXHgwMCcsIDIuMCoqLTI2KSwgIyBVbmRlcmZsb3dzIHRvIHplcm8KKyAgICAgICAgICAgICgnPmUnLCBiJ1x4MDNceGZmJywgMi4wKiotMTQgLSAyLjAqKi0yNCksICMgTGFyZ2VzdCBzdWJub3JtYWwuCisgICAgICAgICAgICAoJz5lJywgYidceDAzXHhmZicsIDIuMCoqLTE0IC0gMi4wKiotMjUgLSAyLjAqKi02NSksCisgICAgICAgICAgICAoJz5lJywgYidceDA0XHgwMCcsIDIuMCoqLTE0IC0gMi4wKiotMjUpLAorICAgICAgICAgICAgKCc+ZScsIGInXHgwNFx4MDAnLCAyLjAqKi0xNCksICMgU21hbGxlc3Qgbm9ybWFsLgorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDEnLCAxLjArMi4wKiotMTEgKyAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTEpLCAjIHJvdW5kcyB0byAxLjAgKG5lYXJlc3QgZXZlbiBtb2RlKQorICAgICAgICAgICAgKCc+ZScsIGInXHgzY1x4MDAnLCAxLjArMi4wKiotMTIpLCAjIHJvdW5kcyB0byAxLjAKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4N2JceGZmJywgNjU1MDQpLCAjIGxhcmdlc3Qgbm9ybWFsCisgICAgICAgICAgICAoJz5lJywgYidceDdiXHhmZicsIDY1NTE5KSwgIyByb3VuZHMgdG8gNjU1MDQKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4ODBceDAxJywgLTIuMCoqLTI1IC0gMi4wKiotMzUpLCAjIFJvdW5kcyB0byBtaW5pbXVtIHN1Ym5vcm1hbAorICAgICAgICAgICAgKCc+ZScsIGInXHg4MFx4MDAnLCAtMi4wKiotMjUpLCAjIFVuZGVyZmxvd3MgdG8gemVybyAobmVhcmVzdCBldmVuIG1vZGUpCisgICAgICAgICAgICAoJz5lJywgYidceDgwXHgwMCcsIC0yLjAqKi0yNiksICMgVW5kZXJmbG93cyB0byB6ZXJvCisgICAgICAgICAgICAoJz5lJywgYidceGJjXHgwMScsIC0xLjAtMi4wKiotMTEgLSAyLjAqKi0xNiksICMgcm91bmRzIHRvIDEuMCsyKiooLTEwKQorICAgICAgICAgICAgKCc+ZScsIGInXHhiY1x4MDAnLCAtMS4wLTIuMCoqLTExKSwgIyByb3VuZHMgdG8gMS4wIChuZWFyZXN0IGV2ZW4gbW9kZSkKKyAgICAgICAgICAgICgnPmUnLCBiJ1x4YmNceDAwJywgLTEuMC0yLjAqKi0xMiksICMgcm91bmRzIHRvIDEuMAorICAgICAgICAgICAgKCc+ZScsIGInXHhmYlx4ZmYnLCAtNjU1MTkpLCAjIHJvdW5kcyB0byA2NTUwNAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGJpdHMsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCisgICAgICAgICMgVGhpcyBvdmVyZmxvd3MsIGFuZCBzbyByYWlzZXMgYW4gZXJyb3IKKyAgICAgICAgZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdCA9IFsKKyAgICAgICAgICAgICMgVmFsdWVzIHRoYXQgcm91bmQgdG8gaW5maW5pdHkuCisgICAgICAgICAgICAoJz5lJywgNjU1MjAuMCksCisgICAgICAgICAgICAoJz5lJywgNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgMWUzMDApLAorICAgICAgICAgICAgKCc+ZScsIC02NTUyMC4wKSwKKyAgICAgICAgICAgICgnPmUnLCAtNjU1MzYuMCksCisgICAgICAgICAgICAoJz5lJywgLTFlMzAwKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUyMC4wKSwKKyAgICAgICAgICAgICgnPGUnLCA2NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAxZTMwMCksCisgICAgICAgICAgICAoJzxlJywgLTY1NTIwLjApLAorICAgICAgICAgICAgKCc8ZScsIC02NTUzNi4wKSwKKyAgICAgICAgICAgICgnPGUnLCAtMWUzMDApLAorICAgICAgICBdCisKKyAgICAgICAgZm9yIGZvcm1hdGNvZGUsIGYgaW4gZm9ybWF0X2JpdHNfZmxvYXRfX3JvdW5kaW5nRXJyb3JfbGlzdDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsIHN0cnVjdC5wYWNrLCBmb3JtYXRjb2RlLCBmKQorCisgICAgICAgICMgRG91YmxlIHJvdW5kaW5nCisgICAgICAgIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3QgPSBbCisgICAgICAgICAgICAoJz5lJywgYidceDY3XHhmZicsIDB4MWZmZGZmZmZmZiAqIDIqKi0yNiksICMgc2hvdWxkIGJlIDIwNDcsIGlmIGRvdWJsZS1yb3VuZGVkIDY0PjMyPjE2LCBiZWNvbWVzIDIwNDgKKyAgICAgICAgXQorCisgICAgICAgIGZvciBmb3JtYXRjb2RlLCBiaXRzLCBmIGluIGZvcm1hdF9iaXRzX2Zsb2F0X19kb3VibGVSb3VuZGluZ0Vycm9yX2xpc3Q6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGJpdHMsIHN0cnVjdC5wYWNrKGZvcm1hdGNvZGUsIGYpKQorCiAKIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3ViY2xhc3Npbml0LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyNjdlNDEKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3N1YmNsYXNzaW5pdC5weQpAQCAtMCwwICsxLDI1NiBAQAoraW1wb3J0IHN5cworaW1wb3J0IHR5cGVzCitpbXBvcnQgdW5pdHRlc3QKKworCitjbGFzcyBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19kaWN0KHNlbGYpOgorICAgICAgICBjbGFzcyBBKGRpY3QpOgorICAgICAgICAgICAgaW5pdGlhbGl6ZWQgPSBGYWxzZQorCisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCkKKyAgICAgICAgICAgICAgICBjbHMuaW5pdGlhbGl6ZWQgPSBUcnVlCisKKyAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEZhbHNlKEEuaW5pdGlhbGl6ZWQpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShCLmluaXRpYWxpemVkKQorCisgICAgZGVmIHRlc3RfaW5pdF9zdWJjbGFzc19rd2FyZ3Moc2VsZik6CisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCAqKmt3YXJncyk6CisgICAgICAgICAgICAgICAgY2xzLmt3YXJncyA9IGt3YXJncworCisgICAgICAgIGNsYXNzIEIoQSwgeD0zKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIua3dhcmdzLCBkaWN0KHg9MykpCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX2Vycm9yKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQihBKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICBkZWYgdGVzdF9pbml0X3N1YmNsYXNzX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgd2hhdGV2ZXIpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBCKEEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3Nfc2tpcHBlZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhJbml0OgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmluaXRpYWxpemVkID0gY2xzCisKKyAgICAgICAgY2xhc3MgQmFzZVdpdGhvdXRJbml0KEJhc2VXaXRoSW5pdCk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgY2xhc3MgQShCYXNlV2l0aG91dEluaXQpOgorICAgICAgICAgICAgcGFzcworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQS5pbml0aWFsaXplZCwgQSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCYXNlV2l0aG91dEluaXQuaW5pdGlhbGl6ZWQsIEJhc2VXaXRob3V0SW5pdCkKKworICAgIGRlZiB0ZXN0X2luaXRfc3ViY2xhc3NfZGlhbW9uZChzZWxmKToKKyAgICAgICAgY2xhc3MgQmFzZToKKyAgICAgICAgICAgIGRlZiBfX2luaXRfc3ViY2xhc3NfXyhjbHMsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyA9IFtdCisKKyAgICAgICAgY2xhc3MgTGVmdChCYXNlKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNaWRkbGU6CisgICAgICAgICAgICBkZWYgX19pbml0X3N1YmNsYXNzX18oY2xzLCBtaWRkbGUsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9zdWJjbGFzc19fKCoqa3dhcmdzKQorICAgICAgICAgICAgICAgIGNscy5jYWxscyArPSBbbWlkZGxlXQorCisgICAgICAgIGNsYXNzIFJpZ2h0KEJhc2UpOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscywgcmlnaHQ9InJpZ2h0IiwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X3N1YmNsYXNzX18oKiprd2FyZ3MpCisgICAgICAgICAgICAgICAgY2xzLmNhbGxzICs9IFtyaWdodF0KKworICAgICAgICBjbGFzcyBBKExlZnQsIE1pZGRsZSwgUmlnaHQsIG1pZGRsZT0ibWlkZGxlIik6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmNhbGxzLCBbInJpZ2h0IiwgIm1pZGRsZSJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKExlZnQuY2FsbHMsIFtdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFJpZ2h0LmNhbGxzLCBbXSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmLCBvd25lciwgbmFtZSk6CisgICAgICAgICAgICAgICAgc2VsZi5vd25lciA9IG93bmVyCisgICAgICAgICAgICAgICAgc2VsZi5uYW1lID0gbmFtZQorCisgICAgICAgIGNsYXNzIEE6CisgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLmQubmFtZSwgImQiKQorICAgICAgICBzZWxmLmFzc2VydElzKEEuZC5vd25lciwgQSkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX21ldGFjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5zKToKKyAgICAgICAgICAgICAgICByZXQgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXQuZC5uYW1lLCAiZCIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJcyhyZXQuZC5vd25lciwgcmV0KQorICAgICAgICAgICAgICAgIHJldHVybiAwCisKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLCAwKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfZXJyb3Ioc2VsZik6CisgICAgICAgIGNsYXNzIERlc2NyaXB0b3I6CisgICAgICAgICAgICBkZWYgX19zZXRfbmFtZV9fKHNlbGYsIG93bmVyLCBuYW1lKToKKyAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgIGRlZiB0ZXN0X3NldF9uYW1lX3dyb25nKHNlbGYpOgorICAgICAgICBjbGFzcyBEZXNjcmlwdG9yOgorICAgICAgICAgICAgZGVmIF9fc2V0X25hbWVfXyhzZWxmKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgQToKKyAgICAgICAgICAgICAgICBkID0gRGVzY3JpcHRvcigpCisKKyAgICBkZWYgdGVzdF9zZXRfbmFtZV9sb29rdXAoc2VsZik6CisgICAgICAgIHJlc29sdmVkID0gW10KKyAgICAgICAgY2xhc3MgTm9uRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgICAgICAgICByZXNvbHZlZC5hcHBlbmQobmFtZSkKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZCA9IE5vbkRlc2NyaXB0b3IoKQorCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ19fc2V0X25hbWVfXycsIHJlc29sdmVkLAorICAgICAgICAgICAgICAgICAgICAgICAgICdfX3NldF9uYW1lX18gaXMgbG9va2VkIHVwIGluIGluc3RhbmNlIGRpY3QnKQorCisgICAgZGVmIHRlc3Rfc2V0X25hbWVfaW5pdF9zdWJjbGFzcyhzZWxmKToKKyAgICAgICAgY2xhc3MgRGVzY3JpcHRvcjoKKyAgICAgICAgICAgIGRlZiBfX3NldF9uYW1lX18oc2VsZiwgb3duZXIsIG5hbWUpOgorICAgICAgICAgICAgICAgIHNlbGYub3duZXIgPSBvd25lcgorICAgICAgICAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpOgorICAgICAgICAgICAgICAgIHNlbGYgPSBzdXBlcigpLl9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbnMpCisgICAgICAgICAgICAgICAgc2VsZi5tZXRhX293bmVyID0gc2VsZi5vd25lcgorICAgICAgICAgICAgICAgIHNlbGYubWV0YV9uYW1lID0gc2VsZi5uYW1lCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBOgorICAgICAgICAgICAgZGVmIF9faW5pdF9zdWJjbGFzc19fKGNscyk6CisgICAgICAgICAgICAgICAgY2xzLm93bmVyID0gY2xzLmQub3duZXIKKyAgICAgICAgICAgICAgICBjbHMubmFtZSA9IGNscy5kLm5hbWUKKworICAgICAgICBjbGFzcyBCKEEsIG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIGQgPSBEZXNjcmlwdG9yKCkKKworICAgICAgICBzZWxmLmFzc2VydElzKEIub3duZXIsIEIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoQi5uYW1lLCAnZCcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQi5tZXRhX293bmVyLCBCKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEIubmFtZSwgJ2QnKQorCisgICAgZGVmIHRlc3RfZXJyb3JzKHNlbGYpOgorICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgdHlwZXMubmV3X2NsYXNzKCJNeUNsYXNzIiwgKG9iamVjdCwpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpY3QobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSkpCisgICAgICAgIHR5cGVzLnByZXBhcmVfY2xhc3MoIk15Q2xhc3MiLCAob2JqZWN0LCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGljdChtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKSkKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSwgb3RoZXJhcmcpOgorICAgICAgICAgICAgICAgIHN1cGVyKCkuX19pbml0X18obmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEsIG90aGVyYXJnPTEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzdXBlcigpLl9faW5pdF9fKG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgc2VsZi5vdGhlcmFyZyA9IG90aGVyYXJnCisKKyAgICAgICAgY2xhc3MgTXlDbGFzcyhtZXRhY2xhc3M9TXlNZXRhLCBvdGhlcmFyZz0xKToKKyAgICAgICAgICAgIHBhc3MKKworICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE15Q2xhc3Mub3RoZXJhcmcsIDEpCisKKyAgICBkZWYgdGVzdF9lcnJvcnNfY2hhbmdlZF9wZXA0ODcoc2VsZik6CisgICAgICAgICMgVGhlc2UgdGVzdHMgZmFpbGVkIGJlZm9yZSBQeXRob24gMy42LCBQRVAgNDg3CisgICAgICAgIGNsYXNzIE15TWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWU9bmFtZSwgYmFzZXM9YmFzZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaWN0PW5hbWVzcGFjZSkKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICBjbGFzcyBNeUNsYXNzKG1ldGFjbGFzcz1NeU1ldGEpOgorICAgICAgICAgICAgICAgIHBhc3MKKworICAgICAgICBjbGFzcyBNeU1ldGEodHlwZSk6CisgICAgICAgICAgICBkZWYgX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UsIG90aGVyYXJnKToKKyAgICAgICAgICAgICAgICBzZWxmID0gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKyAgICAgICAgICAgICAgICBzZWxmLm90aGVyYXJnID0gb3RoZXJhcmcKKyAgICAgICAgICAgICAgICByZXR1cm4gc2VsZgorCisgICAgICAgIGNsYXNzIE15Q2xhc3MobWV0YWNsYXNzPU15TWV0YSwgb3RoZXJhcmc9MSk6CisgICAgICAgICAgICBwYXNzCisKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChNeUNsYXNzLm90aGVyYXJnLCAxKQorCisgICAgZGVmIHRlc3RfdHlwZShzZWxmKToKKyAgICAgICAgdCA9IHR5cGUoJ05ld0NsYXNzJywgKG9iamVjdCwpLCB7fSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHQsIHR5cGUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodC5fX25hbWVfXywgJ05ld0NsYXNzJykKKworICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB0eXBlKG5hbWU9J05ld0NsYXNzJywgYmFzZXM9KG9iamVjdCwpLCBkaWN0PXt9KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkgYi9MaWIvdGVzdC90ZXN0X3N1YnByb2Nlc3MucHkKaW5kZXggNzU4ZTA5NC4uMmQ5MjM5YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdWJwcm9jZXNzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VicHJvY2Vzcy5weQpAQCAtMSwyMCArMSwxNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgc2NyaXB0X2hlbHBlcgogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiBpbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IHN5cwogaW1wb3J0IHNpZ25hbAogaW1wb3J0IGlvCi1pbXBvcnQgbG9jYWxlCiBpbXBvcnQgb3MKIGltcG9ydCBlcnJubwogaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgdGltZQotaW1wb3J0IHJlCiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgc3lzY29uZmlnCi1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBzZWxlY3QKIGltcG9ydCBzaHV0aWwKIGltcG9ydCBnYwpAQCAtMjUsNiArMjEsOSBAQAogZXhjZXB0IEltcG9ydEVycm9yOgogICAgIHRocmVhZGluZyA9IE5vbmUKIAoraWYgc3VwcG9ydC5QR086CisgICAgcmFpc2UgdW5pdHRlc3QuU2tpcFRlc3QoInRlc3QgaXMgbm90IGhlbHBmdWwgZm9yIFBHTyIpCisKIG1zd2luZG93cyA9IChzeXMucGxhdGZvcm0gPT0gIndpbjMyIikKIAogIwpAQCAtNDQ4LDggKzQ0Nyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRvdXQud3JpdGUoIm9yYW5nZSIpJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKSwgYiJvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3Rkb3V0IGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNDc5LDggKzQ3OCw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwgIi1jIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2ltcG9ydCBzeXM7IHN5cy5zdGRlcnIud3JpdGUoInN0cmF3YmVycnkiKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZGVyci5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZGVyci5yZWFkKCksIGIic3RyYXdiZXJyeSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRlcnIucmVhZCgpLCBiInN0cmF3YmVycnkiKQogCiAgICAgZGVmIHRlc3Rfc3RkZXJyX2ZpbGVkZXMoc2VsZik6CiAgICAgICAgICMgc3RkZXJyIGlzIHNldCB0byBvcGVuIGZpbGUgZGVzY3JpcHRvcgpAQCAtNTM1LDggKzUzNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc3lzLnN0ZGVyci53cml0ZSgib3JhbmdlIiknXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0U3RkZXJyRXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlb3JhbmdlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGVvcmFuZ2UiKQogCiAgICAgZGVmIHRlc3Rfc3Rkb3V0X3N0ZGVycl9maWxlKHNlbGYpOgogICAgICAgICAjIGNhcHR1cmUgc3Rkb3V0IGFuZCBzdGRlcnIgdG8gdGhlIHNhbWUgb3BlbiBmaWxlCkBAIC03OTQsMTggKzc5MywxOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXZlcnNhbF9uZXdsaW5lcz0xKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lMVxuIikKLSAgICAgICAgcC5zdGRpbi5mbHVzaCgpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZGxpbmUoKSwgImxpbmUxXG4iKQotICAgICAgICBwLnN0ZGluLndyaXRlKCJsaW5lM1xuIikKLSAgICAgICAgcC5zdGRpbi5jbG9zZSgpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkbGluZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKDYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lM1xuIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgImxpbmU0XG5saW5lNVxubGluZTZcbmxpbmU3XG5saW5lOCIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUxXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5mbHVzaCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksICJsaW5lMVxuIikKKyAgICAgICAgICAgIHAuc3RkaW4ud3JpdGUoImxpbmUzXG4iKQorICAgICAgICAgICAgcC5zdGRpbi5jbG9zZSgpCisgICAgICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWRsaW5lKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lMlxuIikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCg2KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpbmUzXG4iKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaW5lNFxubGluZTVcbmxpbmU2XG5saW5lN1xubGluZTgiKQogCiAgICAgZGVmIHRlc3RfdW5pdmVyc2FsX25ld2xpbmVzX2NvbW11bmljYXRlKHNlbGYpOgogICAgICAgICAjIHVuaXZlcnNhbCBuZXdsaW5lcyB0aHJvdWdoIGNvbW11bmljYXRlKCkKQEAgLTg5NCwzMSArODk0LDQyIEBACiAgICAgICAgICMKICAgICAgICAgIyBVVEYtMTYgYW5kIFVURi0zMi1CRSBhcmUgc3VmZmljaWVudCB0byBjaGVjayBib3RoIHdpdGggQk9NIGFuZAogICAgICAgICAjIHdpdGhvdXQsIGFuZCBVVEYtMTYgYW5kIFVURi0zMi4KLSAgICAgICAgaW1wb3J0IF9ib290bG9jYWxlCiAgICAgICAgIGZvciBlbmNvZGluZyBpbiBbJ3V0Zi0xNicsICd1dGYtMzItYmUnXToKLSAgICAgICAgICAgIG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZyA9IF9ib290bG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAjIEluZGlyZWN0bHkgdmlhIGlvLlRleHRJT1dyYXBwZXIsIFBvcGVuKCkgZGVmYXVsdHMgdG8KLSAgICAgICAgICAgICMgbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSBhbmQgZWFybGllciBpbiBQeXRob24gMy4yIHRvCi0gICAgICAgICAgICAjIGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZygpLgotICAgICAgICAgICAgZGVmIGdldHByZWZlcnJlZGVuY29kaW5nKGRvX3NldGxvY2FsZT1UcnVlKToKLSAgICAgICAgICAgICAgICByZXR1cm4gZW5jb2RpbmcKICAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKICAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZSgnMVxyXG4yXHIzXG40Jy5lbmNvZGUoJyVzJykpIiAlCiAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nKQogICAgICAgICAgICAgYXJncyA9IFtzeXMuZXhlY3V0YWJsZSwgJy1jJywgY29kZV0KLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nCi0gICAgICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAotICAgICAgICAgICAgICAgICMgYSBkaWZmZXJlbnQgY29kZSBwYXRoIGlzIHVzZWQgd2hlbiB0aGUgbnVtYmVyIG9mIHBpcGVzIGlzCi0gICAgICAgICAgICAgICAgIyB6ZXJvIG9yIG9uZS4KLSAgICAgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPXN1YnByb2Nlc3MuUElQRSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQotICAgICAgICAgICAgZmluYWxseToKLSAgICAgICAgICAgICAgICBfYm9vdGxvY2FsZS5nZXRwcmVmZXJyZWRlbmNvZGluZyA9IG9sZF9nZXRwcmVmZXJyZWRlbmNvZGluZworICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz1lbmNvZGluZykKKyAgICAgICAgICAgIHN0ZG91dCwgc3RkZXJyID0gcG9wZW4uY29tbXVuaWNhdGUoaW5wdXQ9JycpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0ZG91dCwgJzFcbjJcbjNcbjQnKQogCisgICAgZGVmIHRlc3RfY29tbXVuaWNhdGVfZXJyb3JzKHNlbGYpOgorICAgICAgICBmb3IgZXJyb3JzLCBleHBlY3RlZCBpbiBbCisgICAgICAgICAgICAoJ2lnbm9yZScsICcnKSwKKyAgICAgICAgICAgICgncmVwbGFjZScsICdcdWZmZmRcdWZmZmQnKSwKKyAgICAgICAgICAgICgnc3Vycm9nYXRlZXNjYXBlJywgJ1x1ZGM4MFx1ZGM4MCcpLAorICAgICAgICAgICAgKCdiYWNrc2xhc2hyZXBsYWNlJywgJ1xceDgwXFx4ODAnKSwKKyAgICAgICAgXToKKyAgICAgICAgICAgIGNvZGUgPSAoImltcG9ydCBzeXM7ICIKKyAgICAgICAgICAgICAgICAgICAgciJzeXMuc3Rkb3V0LmJ1ZmZlci53cml0ZShiJ1tceDgwXHg4MF0nKSIpCisgICAgICAgICAgICBhcmdzID0gW3N5cy5leGVjdXRhYmxlLCAnLWMnLCBjb2RlXQorICAgICAgICAgICAgIyBXZSBzZXQgc3RkaW4gdG8gYmUgbm9uLU5vbmUgYmVjYXVzZSwgYXMgb2YgdGhpcyB3cml0aW5nLAorICAgICAgICAgICAgIyBhIGRpZmZlcmVudCBjb2RlIHBhdGggaXMgdXNlZCB3aGVuIHRoZSBudW1iZXIgb2YgcGlwZXMgaXMKKyAgICAgICAgICAgICMgemVybyBvciBvbmUuCisgICAgICAgICAgICBwb3BlbiA9IHN1YnByb2Nlc3MuUG9wZW4oYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZz0ndXRmLTgnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9ycz1lcnJvcnMpCisgICAgICAgICAgICBzdGRvdXQsIHN0ZGVyciA9IHBvcGVuLmNvbW11bmljYXRlKGlucHV0PScnKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGRvdXQsICdbe31dJy5mb3JtYXQoZXhwZWN0ZWQpKQorCiAgICAgZGVmIHRlc3Rfbm9fbGVha2luZyhzZWxmKToKICAgICAgICAgIyBNYWtlIHN1cmUgd2UgbGVhayBubyByZXNvdXJjZXMKICAgICAgICAgaWYgbm90IG1zd2luZG93czoKQEAgLTE0MzEsNiArMTQ0MiwyNyBAQAogICAgICAgICAgICAgcC53YWl0KCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgtcC5yZXR1cm5jb2RlLCBzaWduYWwuU0lHQUJSVCkKIAorICAgIGRlZiB0ZXN0X0NhbGxlZFByb2Nlc3NFcnJvcl9zdHJfc2lnbmFsKHNlbGYpOgorICAgICAgICBlcnIgPSBzdWJwcm9jZXNzLkNhbGxlZFByb2Nlc3NFcnJvcigtaW50KHNpZ25hbC5TSUdBQlJUKSwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgIyBXZSdyZSByZWx5aW5nIG9uIHRoZSByZXByKCkgb2YgdGhlIHNpZ25hbC5TaWduYWxzIGludGVudW0gdG8gcHJvdmlkZQorICAgICAgICAjIHRoZSB3b3JkIHNpZ25hbCwgdGhlIHNpZ25hbCBuYW1lIGFuZCB0aGUgbnVtZXJpYyB2YWx1ZS4KKyAgICAgICAgc2VsZi5hc3NlcnRJbigic2lnbmFsIiwgZXJyb3Jfc3RyaW5nLmxvd2VyKCkpCisgICAgICAgICMgV2UncmUgbm90IGJlaW5nIHNwZWNpZmljIGFib3V0IHRoZSBzaWduYWwgbmFtZSBhcyBzb21lIHNpZ25hbHMgaGF2ZQorICAgICAgICAjIG11bHRpcGxlIG5hbWVzIGFuZCB3aGljaCBuYW1lIGlzIHJldmVhbGVkIGNhbiB2YXJ5LgorICAgICAgICBzZWxmLmFzc2VydEluKCJTSUciLCBlcnJvcl9zdHJpbmcpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oc3RyKHNpZ25hbC5TSUdBQlJUKSwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl91bmtub3duX3NpZ25hbChzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoLTk4NzY1NDMsICJmYWtlIGNtZCIpCisgICAgICAgIGVycm9yX3N0cmluZyA9IHN0cihlcnIpCisgICAgICAgIHNlbGYuYXNzZXJ0SW4oInVua25vd24gc2lnbmFsIDk4NzY1NDMuIiwgZXJyb3Jfc3RyaW5nKQorCisgICAgZGVmIHRlc3RfQ2FsbGVkUHJvY2Vzc0Vycm9yX3N0cl9ub25femVybyhzZWxmKToKKyAgICAgICAgZXJyID0gc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IoMiwgImZha2UgY21kIikKKyAgICAgICAgZXJyb3Jfc3RyaW5nID0gc3RyKGVycikKKyAgICAgICAgc2VsZi5hc3NlcnRJbigibm9uLXplcm8gZXhpdCBzdGF0dXMgMi4iLCBlcnJvcl9zdHJpbmcpCisKICAgICBkZWYgdGVzdF9wcmVleGVjKHNlbGYpOgogICAgICAgICAjIERJU0NMQUlNRVI6IFNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlzICpub3QqIGEgZ29vZCB1c2UKICAgICAgICAgIyBvZiBhIHByZWV4ZWNfZm4uICBUaGlzIGlzIG1lcmVseSBhIHRlc3QuCkBAIC0xNDM5LDggKzE0NzEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3N5cy5zdGRvdXQud3JpdGUob3MuZ2V0ZW52KCJGUlVJVCIpKSddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVleGVjX2ZuPWxhbWJkYTogb3MucHV0ZW52KCJGUlVJVCIsICJhcHBsZSIpKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRvdXQuY2xvc2UpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLCBiImFwcGxlIikKKyAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfcHJlZXhlY19leGNlcHRpb24oc2VsZik6CiAgICAgICAgIGRlZiByYWlzZV9pdCgpOgpAQCAtMTU2MSw3ICsxNTkzLDcgQEAKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNTg4LDggKzE2MjAsOCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihbImVjaG8gJEZSVUlUIl0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFJ1biBjb21tYW5kIHRocm91Z2ggdGhlIHNoZWxsIChzdHJpbmcpCkBAIC0xNTk4LDE1ICsxNjMwLDE1IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKCJlY2hvICRGUlVJVCIsIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnN0ZG91dC5yZWFkKCkuc3RyaXAoYiIgXHRcclxuXGYiKSwgYiJhcHBsZSIpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKGIiIFx0XHJcblxmIiksIGIiYXBwbGUiKQogCiAgICAgZGVmIHRlc3RfY2FsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgY2FsbCgpIGZ1bmN0aW9uIHdpdGggc3RyaW5nIGFyZ3VtZW50IG9uIFVOSVgKICAgICAgICAgZmQsIGZuYW1lID0gdGVtcGZpbGUubWtzdGVtcCgpCiAgICAgICAgICMgcmVvcGVuIGluIHRleHQgbW9kZQogICAgICAgICB3aXRoIG9wZW4oZmQsICJ3IiwgZXJyb3JzPSJzdXJyb2dhdGVlc2NhcGUiKSBhcyBmb2JqOgotICAgICAgICAgICAgZm9iai53cml0ZSgiIyEvYmluL3NoXG4iKQorICAgICAgICAgICAgZm9iai53cml0ZSgiIyElc1xuIiAlIHN1cHBvcnQudW5peF9zaGVsbCkKICAgICAgICAgICAgIGZvYmoud3JpdGUoImV4ZWMgJyVzJyAtYyAnaW1wb3J0IHN5czsgc3lzLmV4aXQoNDcpJ1xuIiAlCiAgICAgICAgICAgICAgICAgICAgICAgIHN5cy5leGVjdXRhYmxlKQogICAgICAgICBvcy5jaG1vZChmbmFtZSwgMG83MDApCkBAIC0xNjMxLDggKzE2NjMsOCBAQAogICAgICAgICBmb3Igc2ggaW4gc2hlbGxzOgogICAgICAgICAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oImVjaG8gJDAiLCBleGVjdXRhYmxlPXNoLCBzaGVsbD1UcnVlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKLSAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGRvdXQucmVhZCgpLnN0cmlwKCksIGJ5dGVzKHNoLCAnYXNjaWknKSkKKyAgICAgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3Rkb3V0LnJlYWQoKS5zdHJpcCgpLCBieXRlcyhzaCwgJ2FzY2lpJykpCiAKICAgICBkZWYgX2tpbGxfcHJvY2VzcyhzZWxmLCBtZXRob2QsICphcmdzKToKICAgICAgICAgIyBEbyBub3QgaW5oZXJpdCBmaWxlIGhhbmRsZXMgZnJvbSB0aGUgcGFyZW50LgpAQCAtMjI5MCw3ICsyMzIyLDkgQEAKICAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQogICAgICAgICBpZGVudCA9IGlkKHApCiAgICAgICAgIHBpZCA9IHAucGlkCi0gICAgICAgIGRlbCBwCisgICAgICAgIHdpdGggc3VwcG9ydC5jaGVja193YXJuaW5ncygoJycsIFJlc291cmNlV2FybmluZykpOgorICAgICAgICAgICAgcCA9IE5vbmUKKwogICAgICAgICAjIGNoZWNrIHRoYXQgcCBpcyBpbiB0aGUgYWN0aXZlIHByb2Nlc3NlcyBsaXN0CiAgICAgICAgIHNlbGYuYXNzZXJ0SW4oaWRlbnQsIFtpZChvKSBmb3IgbyBpbiBzdWJwcm9jZXNzLl9hY3RpdmVdKQogCkBAIC0yMzA5LDcgKzIzNDMsOSBAQAogICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRlcnIuY2xvc2UpCiAgICAgICAgIGlkZW50ID0gaWQocCkKICAgICAgICAgcGlkID0gcC5waWQKLSAgICAgICAgZGVsIHAKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgUmVzb3VyY2VXYXJuaW5nKSk6CisgICAgICAgICAgICBwID0gTm9uZQorCiAgICAgICAgIG9zLmtpbGwocGlkLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgIyBjaGVjayB0aGF0IHAgaXMgaW4gdGhlIGFjdGl2ZSBwcm9jZXNzZXMgbGlzdAogICAgICAgICBzZWxmLmFzc2VydEluKGlkZW50LCBbaWQobykgZm9yIG8gaW4gc3VicHJvY2Vzcy5fYWN0aXZlXSkKQEAgLTI1MDEsOCArMjUzNyw4IEBACiAgICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKFsic2V0Il0sIHNoZWxsPTEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudj1uZXdlbnYpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRJbihiInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpKQorICAgICAgICB3aXRoIHA6CisgICAgICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCiAKICAgICBkZWYgdGVzdF9zaGVsbF9zdHJpbmcoc2VsZik6CiAgICAgICAgICMgUnVuIGNvbW1hbmQgdGhyb3VnaCB0aGUgc2hlbGwgKHN0cmluZykKQEAgLTI1MTEsOCArMjU0NywyMCBAQAogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PW5ld2VudikKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3Rkb3V0LmNsb3NlKQotICAgICAgICBzZWxmLmFzc2VydEluKGIicGh5c2FsaXMiLCBwLnN0ZG91dC5yZWFkKCkpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oYiJwaHlzYWxpcyIsIHAuc3Rkb3V0LnJlYWQoKSkKKworICAgIGRlZiB0ZXN0X3NoZWxsX2VuY29kaW5ncyhzZWxmKToKKyAgICAgICAgIyBSdW4gY29tbWFuZCB0aHJvdWdoIHRoZSBzaGVsbCAoc3RyaW5nKQorICAgICAgICBmb3IgZW5jIGluIFsnYW5zaScsICdvZW0nXToKKyAgICAgICAgICAgIG5ld2VudiA9IG9zLmVudmlyb24uY29weSgpCisgICAgICAgICAgICBuZXdlbnZbIkZSVUlUIl0gPSAicGh5c2FsaXMiCisgICAgICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3Blbigic2V0Iiwgc2hlbGw9MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnY9bmV3ZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2Rpbmc9ZW5jKQorICAgICAgICAgICAgd2l0aCBwOgorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInBoeXNhbGlzIiwgcC5zdGRvdXQucmVhZCgpLCBlbmMpCiAKICAgICBkZWYgdGVzdF9jYWxsX3N0cmluZyhzZWxmKToKICAgICAgICAgIyBjYWxsKCkgZnVuY3Rpb24gd2l0aCBzdHJpbmcgYXJndW1lbnQgb24gV2luZG93cwpAQCAtMjUzMSwxNiArMjU3OSwxNCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQotICAgICAgICBfLCBzdGRlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKLSAgICAgICAgcmV0dXJuY29kZSA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgIGdldGF0dHIocCwgbWV0aG9kKSgqYXJncykKKyAgICAgICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTdGRlcnJFcXVhbChzdGRlcnIsIGInJykKKyAgICAgICAgICAgIHJldHVybmNvZGUgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKHJldHVybmNvZGUsIDApCiAKICAgICBkZWYgX2tpbGxfZGVhZF9wcm9jZXNzKHNlbGYsIG1ldGhvZCwgKmFyZ3MpOgpAQCAtMjU1MywxOSArMjU5OSwxNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRpbj1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHAuc3RkZXJyLmNsb3NlKQotICAgICAgICBzZWxmLmFkZENsZWFudXAocC5zdGRpbi5jbG9zZSkKLSAgICAgICAgIyBXYWl0IGZvciB0aGUgaW50ZXJwcmV0ZXIgdG8gYmUgY29tcGxldGVseSBpbml0aWFsaXplZCBiZWZvcmUKLSAgICAgICAgIyBzZW5kaW5nIGFueSBzaWduYWwuCi0gICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKLSAgICAgICAgIyBUaGUgcHJvY2VzcyBzaG91bGQgZW5kIGFmdGVyIHRoaXMKLSAgICAgICAgdGltZS5zbGVlcCgxKQotICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAotICAgICAgICBnZXRhdHRyKHAsIG1ldGhvZCkoKmFyZ3MpCi0gICAgICAgIF8sIHN0ZGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQotICAgICAgICByYyA9IHAud2FpdCgpCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgICMgV2FpdCBmb3IgdGhlIGludGVycHJldGVyIHRvIGJlIGNvbXBsZXRlbHkgaW5pdGlhbGl6ZWQgYmVmb3JlCisgICAgICAgICAgICAjIHNlbmRpbmcgYW55IHNpZ25hbC4KKyAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQoMSkKKyAgICAgICAgICAgICMgVGhlIHByb2Nlc3Mgc2hvdWxkIGVuZCBhZnRlciB0aGlzCisgICAgICAgICAgICB0aW1lLnNsZWVwKDEpCisgICAgICAgICAgICAjIFRoaXMgc2hvdWxkbid0IHJhaXNlIGV2ZW4gdGhvdWdoIHRoZSBjaGlsZCBpcyBub3cgZGVhZAorICAgICAgICAgICAgZ2V0YXR0cihwLCBtZXRob2QpKCphcmdzKQorICAgICAgICAgICAgXywgc3RkZXJyID0gcC5jb21tdW5pY2F0ZSgpCisgICAgICAgICAgICBzZWxmLmFzc2VydFN0ZGVyckVxdWFsKHN0ZGVyciwgYicnKQorICAgICAgICAgICAgcmMgPSBwLndhaXQoKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJjLCA0MikKIAogICAgIGRlZiB0ZXN0X3NlbmRfc2lnbmFsKHNlbGYpOgpAQCAtMjYwOCw4ICsyNjUyLDcgQEAKIAogICAgIGRlZiB0ZXN0X19hbGxfXyhzZWxmKToKICAgICAgICAgIiIiRW5zdXJlIHRoYXQgX19hbGxfXyBpcyBwb3B1bGF0ZWQgcHJvcGVybHkuIiIiCi0gICAgICAgICMgU1RBUlRVUElORk8gYWRkZWQgdG8gX19hbGxfXyBpbiAzLjYKLSAgICAgICAgaW50ZW50aW9uYWxseV9leGNsdWRlZCA9IHsibGlzdDJjbWRsaW5lIiwgIlNUQVJUVVBJTkZPIiwgIkhhbmRsZSJ9CisgICAgICAgIGludGVudGlvbmFsbHlfZXhjbHVkZWQgPSB7Imxpc3QyY21kbGluZSIsICJIYW5kbGUifQogICAgICAgICBleHBvcnRlZCA9IHNldChzdWJwcm9jZXNzLl9fYWxsX18pCiAgICAgICAgIHBvc3NpYmxlX2V4cG9ydHMgPSBzZXQoKQogICAgICAgICBpbXBvcnQgdHlwZXMKQEAgLTI2NTQsMTEgKzI2OTcsMTEgQEAKICAgICBkZWYgd2l0aF9zcGFjZXMoc2VsZiwgKmFyZ3MsICoqa3dhcmdzKToKICAgICAgICAga3dhcmdzWydzdGRvdXQnXSA9IHN1YnByb2Nlc3MuUElQRQogICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbigqYXJncywgKiprd2FyZ3MpCi0gICAgICAgIHNlbGYuYWRkQ2xlYW51cChwLnN0ZG91dC5jbG9zZSkKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKLSAgICAgICAgICBwLnN0ZG91dC5yZWFkICgpLmRlY29kZSgibWJjcyIpLAotICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQotICAgICAgICApCisgICAgICAgIHdpdGggcDoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgIHAuc3Rkb3V0LnJlYWQgKCkuZGVjb2RlKCJtYmNzIiksCisgICAgICAgICAgICAgICIyIFslciwgJ2FiIGNkJ10iICUgc2VsZi5mbmFtZQorICAgICAgICAgICAgKQogCiAgICAgZGVmIHRlc3Rfc2hlbGxfc3RyaW5nX3dpdGhfc3BhY2VzKHNlbGYpOgogICAgICAgICAjIGNhbGwoKSBmdW5jdGlvbiB3aXRoIHN0cmluZyBhcmd1bWVudCB3aXRoIHNwYWNlcyBvbiBXaW5kb3dzCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5IGIvTGliL3Rlc3QvdGVzdF9zdW5hdS5weQppbmRleCAwZjQxMzRlLi5iYzFmNDZjIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1bmF1LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3VuYXUucHkKQEAgLTEsNCArMSwzIEBACi1mcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgVEVTVEZOCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdCBpbXBvcnQgYXVkaW90ZXN0cwogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwZXIucHkKaW5kZXggYjg0ODYzZi4uYTdjZWRlZCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zdXBlci5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N1cGVyLnB5CkBAIC0xNDMsNiArMTQzLDg3IEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXwogICAgICAgICBzZWxmLmFzc2VydElzKFguZigpLCBYKQogCisgICAgZGVmIHRlc3RfX19jbGFzc19fX25ldyhzZWxmKToKKyAgICAgICAgdGVzdF9jbGFzcyA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgc2VsZiA9IHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IHNlbGYuZigpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19kZWxheWVkKHNlbGYpOgorICAgICAgICB0ZXN0X25hbWVzcGFjZSA9IE5vbmUKKworICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X25hbWVzcGFjZQorICAgICAgICAgICAgICAgIHRlc3RfbmFtZXNwYWNlID0gbmFtZXNwYWNlCisgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgcmV0dXJuIF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoQSwgTm9uZSkKKworICAgICAgICBCID0gdHlwZSgiQiIsICgpLCB0ZXN0X25hbWVzcGFjZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhCLmYoKSwgQikKKworICAgIGRlZiB0ZXN0X19fY2xhc3NfX19tcm8oc2VsZik6CisgICAgICAgIHRlc3RfY2xhc3MgPSBOb25lCisKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBtcm8oc2VsZik6CisgICAgICAgICAgICAgICAgIyBzZWxmLmYoKSBkb2Vzbid0IHdvcmsgeWV0Li4uCisgICAgICAgICAgICAgICAgc2VsZi5fX2RpY3RfX1siZiJdKCkKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5tcm8oKQorCisgICAgICAgIGNsYXNzIEEobWV0YWNsYXNzPU1ldGEpOgorICAgICAgICAgICAgZGVmIGYoKToKKyAgICAgICAgICAgICAgICBub25sb2NhbCB0ZXN0X2NsYXNzCisgICAgICAgICAgICAgICAgdGVzdF9jbGFzcyA9IF9fY2xhc3NfXworCisgICAgICAgIHNlbGYuYXNzZXJ0SXModGVzdF9jbGFzcywgQSkKKworICAgIGRlZiB0ZXN0X19fY2xhc3NjZWxsX19fZGVsZXRlZChzZWxmKToKKyAgICAgICAgY2xhc3MgTWV0YSh0eXBlKToKKyAgICAgICAgICAgIGRlZiBfX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSk6CisgICAgICAgICAgICAgICAgZGVsIG5hbWVzcGFjZVsnX19jbGFzc2NlbGxfXyddCisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuX19uZXdfXyhjbHMsIG5hbWUsIGJhc2VzLCBuYW1lc3BhY2UpCisKKyAgICAgICAgY2xhc3MgQShtZXRhY2xhc3M9TWV0YSk6CisgICAgICAgICAgICBAc3RhdGljbWV0aG9kCisgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgIF9fY2xhc3NfXworCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKToKKyAgICAgICAgICAgIEEuZigpCisKKyAgICBkZWYgdGVzdF9fX2NsYXNzY2VsbF9fX3Jlc2V0KHNlbGYpOgorICAgICAgICBjbGFzcyBNZXRhKHR5cGUpOgorICAgICAgICAgICAgZGVmIF9fbmV3X18oY2xzLCBuYW1lLCBiYXNlcywgbmFtZXNwYWNlKToKKyAgICAgICAgICAgICAgICBuYW1lc3BhY2VbJ19fY2xhc3NjZWxsX18nXSA9IDAKKyAgICAgICAgICAgICAgICByZXR1cm4gc3VwZXIoKS5fX25ld19fKGNscywgbmFtZSwgYmFzZXMsIG5hbWVzcGFjZSkKKworICAgICAgICBjbGFzcyBBKG1ldGFjbGFzcz1NZXRhKToKKyAgICAgICAgICAgIEBzdGF0aWNtZXRob2QKKyAgICAgICAgICAgIGRlZiBmKCk6CisgICAgICAgICAgICAgICAgX19jbGFzc19fCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhOYW1lRXJyb3IpOgorICAgICAgICAgICAgQS5mKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChBLl9fY2xhc3NjZWxsX18sIDApCisKICAgICBkZWYgdGVzdF9vYnNjdXJlX3N1cGVyX2Vycm9ycyhzZWxmKToKICAgICAgICAgZGVmIGYoKToKICAgICAgICAgICAgIHN1cGVyKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3Rfc3VwcG9ydC5weQppbmRleCAyYzAwNDE3Li4yNjlkOWJmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zdXBwb3J0LnB5CkBAIC05LDEzICs5LDExIEBACiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogVEVTVEZOID0gc3VwcG9ydC5URVNURk4KLVRFU1RESVJOID0gb3MucGF0aC5iYXNlbmFtZSh0ZW1wZmlsZS5ta2R0ZW1wKGRpcj0nLicpKQogCiAKIGNsYXNzIFRlc3RTdXBwb3J0KHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKLSAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCiAgICAgdGVhckRvd24gPSBzZXRVcAogCiAgICAgZGVmIHRlc3RfaW1wb3J0X21vZHVsZShzZWxmKToKQEAgLTQ4LDYgKzQ2LDEwIEBACiAgICAgICAgIHN1cHBvcnQudW5saW5rKFRFU1RGTikKIAogICAgIGRlZiB0ZXN0X3JtdHJlZShzZWxmKToKKyAgICAgICAgVEVTVERJUk4gPSBvcy5wYXRoLmJhc2VuYW1lKHRlbXBmaWxlLm1rZHRlbXAoZGlyPScuJykpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChzdXBwb3J0LnJtdHJlZSwgVEVTVERJUk4pCisgICAgICAgIHN1cHBvcnQucm10cmVlKFRFU1RESVJOKQorCiAgICAgICAgIG9zLm1rZGlyKFRFU1RESVJOKQogICAgICAgICBvcy5ta2Rpcihvcy5wYXRoLmpvaW4oVEVTVERJUk4sIFRFU1RESVJOKSkKICAgICAgICAgc3VwcG9ydC5ybXRyZWUoVEVTVERJUk4pCkBAIC0yMjgsNyArMjMwLDggQEAKIAogICAgIGRlZiB0ZXN0X2NoZWNrX3N5bnRheF9lcnJvcihzZWxmKToKICAgICAgICAgc3VwcG9ydC5jaGVja19zeW50YXhfZXJyb3Ioc2VsZiwgImRlZiBjbGFzcyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yLCBzdXBwb3J0LmNoZWNrX3N5bnRheF9lcnJvciwgc2VsZiwgIjEiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEFzc2VydGlvbkVycm9yKToKKyAgICAgICAgICAgIHN1cHBvcnQuY2hlY2tfc3ludGF4X2Vycm9yKHNlbGYsICJ4PTEiKQogCiAgICAgZGVmIHRlc3RfQ2xlYW5JbXBvcnQoc2VsZik6CiAgICAgICAgIGltcG9ydCBpbXBvcnRsaWIKQEAgLTMxMiw2ICszMTUsMjggQEAKICAgICAgICAgICAgICAgICBzZWxmLk90aGVyQ2xhc3MsIHNlbGYuUmVmQ2xhc3MsIGlnbm9yZT1pZ25vcmUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2V0KCksIG1pc3NpbmdfaXRlbXMpCiAKKyAgICBkZWYgdGVzdF9jaGVja19fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyd0ZW1wZGlyJ30KKyAgICAgICAgYmxhY2tsaXN0ID0geyd0ZW1wbGF0ZSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKworICAgICAgICBleHRyYSA9IHsnVGV4dFRlc3RSZXN1bHQnLCAnaW5zdGFsbEhhbmRsZXInfQorICAgICAgICBibGFja2xpc3QgPSB7J2xvYWRfdGVzdHMnLCAiVGVzdFByb2dyYW0iLCAiQmFzZVRlc3RTdWl0ZSJ9CisKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidW5pdHRlc3QucmVzdWx0IiwgInVuaXR0ZXN0LmNhc2UiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnN1aXRlIiwgInVuaXR0ZXN0LmxvYWRlciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5pdHRlc3QubWFpbiIsICJ1bml0dGVzdC5ydW5uZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuaXR0ZXN0LnNpZ25hbHMiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmE9ZXh0cmEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IsIHN1cHBvcnQuY2hlY2tfX2FsbF9fLCBzZWxmLCB1bml0dGVzdCkKKwogICAgICMgWFhYIC1mb2xsb3dzIGEgbGlzdCBvZiB1bnRlc3RlZCBBUEkKICAgICAjIG1ha2VfbGVnYWN5X3B5YwogICAgICMgaXNfcmVzb3VyY2VfZW5hYmxlZApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkgYi9MaWIvdGVzdC90ZXN0X3N5bWJvbC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMwNmY1Ci0tLSAvZGV2L251bGwKKysrIGIvTGliL3Rlc3QvdGVzdF9zeW1ib2wucHkKQEAgLTAsMCArMSw1NCBAQAoraW1wb3J0IHVuaXR0ZXN0Citmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKK2ltcG9ydCBvcworaW1wb3J0IHN5cworaW1wb3J0IHN1YnByb2Nlc3MKKworCitTWU1CT0xfRklMRSAgICAgICAgICAgICAgPSBzdXBwb3J0LmZpbmRmaWxlKCdzeW1ib2wucHknKQorR1JBTU1BUl9GSUxFICAgICAgICAgICAgID0gb3MucGF0aC5qb2luKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy4uJywgJy4uJywgJ0luY2x1ZGUnLCAnZ3JhbWluaXQuaCcpCitURVNUX1BZX0ZJTEUgICAgICAgICAgICAgPSAnc3ltYm9sX3Rlc3QucHknCisKKworY2xhc3MgVGVzdFN5bWJvbEdlbmVyYXRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorCisgICAgZGVmIF9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhzZWxmLCBzb3VyY2VfZmlsZSwgZGVzdF9maWxlKToKKyAgICAgICAgd2l0aCBvcGVuKHNvdXJjZV9maWxlKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzID0gZnAucmVhZGxpbmVzKCkKKyAgICAgICAgd2l0aCBvcGVuKGRlc3RfZmlsZSwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbOmxpbmVzLmluZGV4KCIjLS1zdGFydCBjb25zdGFudHMtLVxuIikgKyAxXSkKKyAgICAgICAgICAgIGZwLndyaXRlbGluZXMobGluZXNbbGluZXMuaW5kZXgoIiMtLWVuZCBjb25zdGFudHMtLVxuIik6XSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc3ltYm9scyhzZWxmLCBncmFtbWFyX2ZpbGUsIHRhcmdldF9zeW1ib2xfcHlfZmlsZSk6CisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNZTUJPTF9GSUxFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JhbW1hcl9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0X3N5bWJvbF9weV9maWxlXSwgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgc3RkZXJyID0gcHJvYy5jb21tdW5pY2F0ZSgpWzFdCisgICAgICAgIHJldHVybiBwcm9jLnJldHVybmNvZGUsIHN0ZGVycgorCisgICAgZGVmIGNvbXBhcmVfZmlsZXMoc2VsZiwgZmlsZTEsIGZpbGUyKToKKyAgICAgICAgd2l0aCBvcGVuKGZpbGUxKSBhcyBmcDoKKyAgICAgICAgICAgIGxpbmVzMSA9IGZwLnJlYWRsaW5lcygpCisgICAgICAgIHdpdGggb3BlbihmaWxlMikgYXMgZnA6CisgICAgICAgICAgICBsaW5lczIgPSBmcC5yZWFkbGluZXMoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpbmVzMSwgbGluZXMyKQorCisgICAgQHVuaXR0ZXN0LnNraXBJZihub3Qgb3MucGF0aC5leGlzdHMoR1JBTU1BUl9GSUxFKSwKKyAgICAgICAgICAgICAgICAgICAgICd0ZXN0IG9ubHkgd29ya3MgZnJvbSBzb3VyY2UgYnVpbGQgZGlyZWN0b3J5JykKKyAgICBkZWYgdGVzdF9yZWFsX2dyYW1tYXJfYW5kX3N5bWJvbF9maWxlKHNlbGYpOgorICAgICAgICBvdXRwdXQgPSBzdXBwb3J0LlRFU1RGTgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIG91dHB1dCkKKworICAgICAgICBzZWxmLl9jb3B5X2ZpbGVfd2l0aG91dF9nZW5lcmF0ZWRfc3ltYm9scyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisgICAgICAgIGV4aXRjb2RlLCBzdGRlcnIgPSBzZWxmLl9nZW5lcmF0ZV9zeW1ib2xzKEdSQU1NQVJfRklMRSwgb3V0cHV0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGInJywgc3RkZXJyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGV4aXRjb2RlKQorCisgICAgICAgIHNlbGYuY29tcGFyZV9maWxlcyhTWU1CT0xfRklMRSwgb3V0cHV0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5IGIvTGliL3Rlc3QvdGVzdF9zeW10YWJsZS5weQppbmRleCBjNWQ3ZmFjLi4zMDQ3MTY1IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bXRhYmxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3ltdGFibGUucHkKQEAgLTEzMyw2ICsxMzMsMTcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHNlbGYuTWluZS5sb29rdXAoImFfbWV0aG9kIikuaXNfYXNzaWduZWQoKSkKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShzZWxmLmludGVybmFsLmxvb2t1cCgieCIpLmlzX2Fzc2lnbmVkKCkpCiAKKyAgICBkZWYgdGVzdF9hbm5vdGF0ZWQoc2VsZik6CisgICAgICAgIHN0MSA9IHN5bXRhYmxlLnN5bXRhYmxlKCdkZWYgZigpOlxuICAgIHg6IGludFxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0MiA9IHN0MS5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3QyLmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdDIubG9va3VwKCd4JykuaXNfYW5ub3RhdGVkKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3QyLmxvb2t1cCgneCcpLmlzX2dsb2JhbCgpKQorICAgICAgICBzdDMgPSBzeW10YWJsZS5zeW10YWJsZSgnZGVmIGYoKTpcbiAgICB4ID0gMVxuJywgJ3Rlc3QnLCAnZXhlYycpCisgICAgICAgIHN0NCA9IHN0My5nZXRfY2hpbGRyZW4oKVswXQorICAgICAgICBzZWxmLmFzc2VydFRydWUoc3Q0Lmxvb2t1cCgneCcpLmlzX2xvY2FsKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uoc3Q0Lmxvb2t1cCgneCcpLmlzX2Fubm90YXRlZCgpKQorCiAgICAgZGVmIHRlc3RfaW1wb3J0ZWQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzZWxmLnRvcC5sb29rdXAoInN5cyIpLmlzX2ltcG9ydGVkKCkpCiAKQEAgLTE1OCw5ICsxNjksMTEgQEAKICAgICAgICAgY2hlY2tmaWxlbmFtZSgiZGVmIGYoeCk6IGZvbykoIikgICMgcGFyc2UtdGltZQogICAgICAgICBjaGVja2ZpbGVuYW1lKCJkZWYgZih4KTogZ2xvYmFsIHgiKSAgIyBzeW10YWJsZS1idWlsZC10aW1lCiAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYiJzcGFtIiwgImV4ZWMiKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpLCBcCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgYnl0ZWFycmF5KGIic3BhbSIpLCAiZXhlYyIpCi0gICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHN5bXRhYmxlLnN5bXRhYmxlKCJwYXNzIiwgbWVtb3J5dmlldyhiInNwYW0iKSwgImV4ZWMiKQogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CiAgICAgICAgICAgICBzeW10YWJsZS5zeW10YWJsZSgicGFzcyIsIGxpc3QoYiJzcGFtIiksICJleGVjIikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9zeW50YXgucHkgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQppbmRleCA4M2Y0OWY2Li44MGUzNmZkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3N5bnRheC5weQpAQCAtMzUsMTQgKzM1LDYgQEAKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8ga2V5d29yZAogCi1JdCdzIGEgc3ludGF4IGVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgdHVwbGUuICBXaHkgaXNuJ3QgaXQgYW4KLWVycm9yIHRvIGFzc2lnbiB0byB0aGUgZW1wdHkgbGlzdD8gIEl0IHdpbGwgYWx3YXlzIHJhaXNlIHNvbWUgZXJyb3IgYXQKLXJ1bnRpbWUuCi0KLT4+PiAoKSA9IDEKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gKCkKLQogPj4+IGYoKSA9IDEKIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKIFN5bnRheEVycm9yOiBjYW4ndCBhc3NpZ24gdG8gZnVuY3Rpb24gY2FsbApAQCAtMzc0LDcgKzM2NiwyMyBAQAogICAgICAuLi4KICAgIFN5bnRheEVycm9yOiB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MKIAotTWlzdXNlIG9mIHRoZSBub25sb2NhbCBzdGF0ZW1lbnQgY2FuIGxlYWQgdG8gYSBmZXcgdW5pcXVlIHN5bnRheCBlcnJvcnMuCitNaXN1c2Ugb2YgdGhlIG5vbmxvY2FsIGFuZCBnbG9iYWwgc3RhdGVtZW50IGNhbiBsZWFkIHRvIGEgZmV3IHVuaXF1ZSBzeW50YXggZXJyb3JzLgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZ2xvYmFsIHgKKyAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgLi4uCisgICBTeW50YXhFcnJvcjogbmFtZSAneCcgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbgorCisgICA+Pj4gZGVmIGYoKToKKyAgIC4uLiAgICAgeCA9IDEKKyAgIC4uLiAgICAgZGVmIGcoKToKKyAgIC4uLiAgICAgICAgIHByaW50KHgpCisgICAuLi4gICAgICAgICBub25sb2NhbCB4CisgICBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CisgICAgIC4uLgorICAgU3ludGF4RXJyb3I6IG5hbWUgJ3gnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24KIAogICAgPj4+IGRlZiBmKHgpOgogICAgLi4uICAgICBub25sb2NhbCB4CkBAIC00OTMsMTAgKzUwMSw2IEBACiAgICAuLi4KIFN5bnRheEVycm9yOiBrZXl3b3JkIGFyZ3VtZW50IHJlcGVhdGVkCiAKLT4+PiBkZWwgKCkKLVRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKLVN5bnRheEVycm9yOiBjYW4ndCBkZWxldGUgKCkKLQogPj4+IHsxLCAyLCAzfSA9IDQyCiBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6CiBTeW50YXhFcnJvcjogY2FuJ3QgYXNzaWduIHRvIGxpdGVyYWwKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKaW5kZXggNDQzNWQ2OS4uZGY5ZWJkNCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF9zeXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF9zeXMucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBnYwogaW1wb3J0IHN5c2NvbmZpZwogaW1wb3J0IHBsYXRmb3JtCitpbXBvcnQgbG9jYWxlCiAKICMgY291bnQgdGhlIG51bWJlciBvZiB0ZXN0IHJ1bnMsIHVzZWQgdG8gY3JlYXRlIHVuaXF1ZQogIyBzdHJpbmdzIHRvIGludGVybiBpbiB0ZXN0X2ludGVybigpCkBAIC02MjcsNiArNjI4LDggQEAKIAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHRlc3Quc3VwcG9ydC5GU19OT05BU0NJSSwKICAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgT1Mgc3VwcG9ydCBvZiBub24tQVNDSUkgZW5jb2RpbmdzJykKKyAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhzeXMuZ2V0ZmlsZXN5c3RlbWVuY29kaW5nKCkgPT0gbG9jYWxlLmdldHByZWZlcnJlZGVuY29kaW5nKEZhbHNlKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAncmVxdWlyZXMgRlMgZW5jb2RpbmcgdG8gbWF0Y2ggbG9jYWxlJykKICAgICBkZWYgdGVzdF9pb2VuY29kaW5nX25vbmFzY2lpKHNlbGYpOgogICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCiAKQEAgLTY2OSw4ICs2NzIsNiBAQAogICAgICAgICBmc19lbmNvZGluZyA9IHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKQogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2Rhcndpbic6CiAgICAgICAgICAgICBleHBlY3RlZCA9ICd1dGYtOCcKLSAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ3dpbjMyJzoKLSAgICAgICAgICAgIGV4cGVjdGVkID0gJ21iY3MnCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBleHBlY3RlZCA9IE5vbmUKICAgICAgICAgc2VsZi5jaGVja19mc2VuY29kaW5nKGZzX2VuY29kaW5nLCBleHBlY3RlZCkKQEAgLTkxMiwxMyArOTEzLDEzIEBACiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKICAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2Nsb3N1cmVfX1swXSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGNvZGUKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwoKS5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQotICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNWk5UGkzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbCgpLl9fY29kZV9fLCBzaXplKCc2aTEzUCcpKQorICAgICAgICBjaGVjayhnZXRfY2VsbC5fX2NvZGVfXywgc2l6ZSgnNmkxM1AnKSkKICAgICAgICAgZGVmIGdldF9jZWxsMih4KToKICAgICAgICAgICAgIGRlZiBpbm5lcigpOgogICAgICAgICAgICAgICAgIHJldHVybiB4CiAgICAgICAgICAgICByZXR1cm4gaW5uZXIKLSAgICAgICAgY2hlY2soZ2V0X2NlbGwyLl9fY29kZV9fLCBzaXplKCc1aTlQaTNQJykgKyAxKQorICAgICAgICBjaGVjayhnZXRfY2VsbDIuX19jb2RlX18sIHNpemUoJzZpMTNQJykgKyAxKQogICAgICAgICAjIGNvbXBsZXgKICAgICAgICAgY2hlY2soY29tcGxleCgwLDEpLCBzaXplKCcyZCcpKQogICAgICAgICAjIG1ldGhvZF9kZXNjcmlwdG9yIChkZXNjcmlwdG9yIG9iamVjdCkKQEAgLTkzNiw5ICs5MzcsOSBAQAogICAgICAgICAjIG1ldGhvZC13cmFwcGVyIChkZXNjcmlwdG9yIG9iamVjdCkKICAgICAgICAgY2hlY2soe30uX19pdGVyX18sIHNpemUoJzJQJykpCiAgICAgICAgICMgZGljdAotICAgICAgICBjaGVjayh7fSwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgOCpjYWxjc2l6ZSgnbjJQJykpCisgICAgICAgIGNoZWNrKHt9LCBzaXplKCduUTJQJykgKyBjYWxjc2l6ZSgnMm5QMm4nKSArIDggKyAoOCoyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgIGxvbmdkaWN0ID0gezE6MSwgMjoyLCAzOjMsIDQ6NCwgNTo1LCA2OjYsIDc6NywgODo4fQotICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnbjJQJykgKyBjYWxjc2l6ZSgnMm5QbicpICsgMTYqY2FsY3NpemUoJ24yUCcpKQorICAgICAgICBjaGVjayhsb25nZGljdCwgc2l6ZSgnblEyUCcpICsgY2FsY3NpemUoJzJuUDJuJykgKyAxNiArICgxNioyLy8zKSpjYWxjc2l6ZSgnbjJQJykpCiAgICAgICAgICMgZGljdGlvbmFyeS1rZXl2aWV3CiAgICAgICAgIGNoZWNrKHt9LmtleXMoKSwgc2l6ZSgnUCcpKQogICAgICAgICAjIGRpY3Rpb25hcnktdmFsdWV2aWV3CkBAIC0xMDk2LDEzICsxMDk3LDEzIEBACiAgICAgICAgICAgICAgICAgICAnMTBQJyAgICAgICAgICAgICAgICAgIyBQeVNlcXVlbmNlTWV0aG9kcwogICAgICAgICAgICAgICAgICAgJzJQJyAgICAgICAgICAgICAgICAgICMgUHlCdWZmZXJQcm9jcwogICAgICAgICAgICAgICAgICAgJzRQJykKLSAgICAgICAgIyBTZXBhcmF0ZSBibG9jayBmb3IgUHlEaWN0S2V5c09iamVjdCB3aXRoIDQgZW50cmllcwotICAgICAgICBzICs9IGNhbGNzaXplKCIyblBuIikgKyA0KmNhbGNzaXplKCJuMlAiKQorICAgICAgICAjIFNlcGFyYXRlIGJsb2NrIGZvciBQeURpY3RLZXlzT2JqZWN0IHdpdGggOCBrZXlzIGFuZCA1IGVudHJpZXMKKyAgICAgICAgcyArPSBjYWxjc2l6ZSgiMm5QMm4iKSArIDggKyA1KmNhbGNzaXplKCJuMlAiKQogICAgICAgICAjIGNsYXNzCiAgICAgICAgIGNsYXNzIG5ld3N0eWxlY2xhc3Mob2JqZWN0KTogcGFzcwogICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzLCBzKQogICAgICAgICAjIGRpY3Qgd2l0aCBzaGFyZWQga2V5cwotICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ24yUCcgKyAnMm5QbicpKQorICAgICAgICBjaGVjayhuZXdzdHlsZWNsYXNzKCkuX19kaWN0X18sIHNpemUoJ25RMlAnICsgJzJuUDJuJykpCiAgICAgICAgICMgdW5pY29kZQogICAgICAgICAjIGVhY2ggdHVwbGUgY29udGFpbnMgYSBzdHJpbmcgYW5kIGl0cyBleHBlY3RlZCBjaGFyYWN0ZXIgc2l6ZQogICAgICAgICAjIGRvbid0IHB1dCBhbnkgc3RhdGljIHN0cmluZ3MgaGVyZSwgYXMgdGhleSBtYXkgY29udGFpbgpAQCAtMTE5MSw2ICsxMTkyLDMyIEBACiAgICAgICAgICMgc3lzLmZsYWdzCiAgICAgICAgIGNoZWNrKHN5cy5mbGFncywgdnNpemUoJycpICsgc2VsZi5QICogbGVuKHN5cy5mbGFncykpCiAKKyAgICBkZWYgdGVzdF9hc3luY2dlbl9ob29rcyhzZWxmKToKKyAgICAgICAgb2xkID0gc3lzLmdldF9hc3luY2dlbl9ob29rcygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKG9sZC5maW5hbGl6ZXIpCisKKyAgICAgICAgZmlyc3RpdGVyID0gbGFtYmRhICphOiBOb25lCisgICAgICAgIHN5cy5zZXRfYXN5bmNnZW5faG9va3MoZmlyc3RpdGVyPWZpcnN0aXRlcikKKyAgICAgICAgaG9va3MgPSBzeXMuZ2V0X2FzeW5jZ2VuX2hvb2tzKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rcy5maXJzdGl0ZXIsIGZpcnN0aXRlcikKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1swXSwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpbmFsaXplciwgTm9uZSkKKyAgICAgICAgc2VsZi5hc3NlcnRJcyhob29rc1sxXSwgTm9uZSkKKworICAgICAgICBmaW5hbGl6ZXIgPSBsYW1iZGEgKmE6IE5vbmUKKyAgICAgICAgc3lzLnNldF9hc3luY2dlbl9ob29rcyhmaW5hbGl6ZXI9ZmluYWxpemVyKQorICAgICAgICBob29rcyA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzLmZpcnN0aXRlciwgZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzKGhvb2tzWzBdLCBmaXJzdGl0ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3MuZmluYWxpemVyLCBmaW5hbGl6ZXIpCisgICAgICAgIHNlbGYuYXNzZXJ0SXMoaG9va3NbMV0sIGZpbmFsaXplcikKKworICAgICAgICBzeXMuc2V0X2FzeW5jZ2VuX2hvb2tzKCpvbGQpCisgICAgICAgIGN1ciA9IHN5cy5nZXRfYXN5bmNnZW5faG9va3MoKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmlyc3RpdGVyKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShjdXIuZmluYWxpemVyKQorCiAKIGRlZiB0ZXN0X21haW4oKToKICAgICB0ZXN0LnN1cHBvcnQucnVuX3VuaXR0ZXN0KFN5c01vZHVsZVRlc3QsIFNpemVvZlRlc3QpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3N5c19zZXR0cmFjZS5weSBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CmluZGV4IDUwOWJjM2UuLjI1YzU4MzUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzX3NldHRyYWNlLnB5CkBAIC0zMzgsOCArMzM4LDggQEAKIAogICAgIGRlZiB0ZXN0XzE0X29ubGluZXJfaWYoc2VsZik6CiAgICAgICAgIGRlZiBvbmxpbmVycygpOgotICAgICAgICAgICAgaWYgVHJ1ZTogRmFsc2UKLSAgICAgICAgICAgIGVsc2U6IFRydWUKKyAgICAgICAgICAgIGlmIFRydWU6IHg9RmFsc2UKKyAgICAgICAgICAgIGVsc2U6IHg9VHJ1ZQogICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgc2VsZi5ydW5fYW5kX2NvbXBhcmUoCiAgICAgICAgICAgICBvbmxpbmVycywKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5IGIvTGliL3Rlc3QvdGVzdF9zeXNjb25maWcucHkKaW5kZXggYTIzYmYwNmEuLjA5MWU5MDUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfc3lzY29uZmlnLnB5CkBAIC0zOTQsOCArMzk0LDkgQEAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnbGludXgnIGluIHN1ZmZpeCwgc3VmZml4KQogICAgICAgICBpZiByZS5tYXRjaCgnKGlbMy02XTg2fHg4Nl82NCkkJywgbWFjaGluZSk6CiAgICAgICAgICAgICBpZiBjdHlwZXMuc2l6ZW9mKGN0eXBlcy5jX2NoYXJfcCgpKSA9PSA0OgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ2kzODYtbGludXgtZ251LnNvJykgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvciBzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnV4MzIuc28nKSwKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoc3VmZml4LmVuZHN3aXRoKCdpMzg2LWxpbnV4LWdudS5zbycpIG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeC5lbmRzd2l0aCgnaTY4Ni1saW51eC1hbmRyb2lkLnNvJykgb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3VmZml4LmVuZHN3aXRoKCd4ODZfNjQtbGludXgtZ251eDMyLnNvJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1ZmZpeCkKICAgICAgICAgICAgIGVsc2U6ICMgOCBieXRlIHBvaW50ZXIgc2l6ZQogICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzdWZmaXguZW5kc3dpdGgoJ3g4Nl82NC1saW51eC1nbnUuc28nKSwgc3VmZml4KQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5IGIvTGliL3Rlc3QvdGVzdF90YXJmaWxlLnB5CmluZGV4IGFiZmIzNGQuLmQ3Nzg1Y2UgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGFyZmlsZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RhcmZpbGUucHkKQEAgLTIwNzQsNiArMjA3NCwyNCBAQAogICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgogICAgICAgICAgICAgdGFyZmlsZS5pdG4oMHgxMDAwMDAwMDAwMCwgNiwgdGFyZmlsZS5HTlVfRk9STUFUKQogCisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J3ZlcnNpb24nLCAnZ3JwJywgJ3B3ZCcsICdzeW1saW5rX2V4Y2VwdGlvbicsCisgICAgICAgICAgICAgICAgICAgICAnTlVMJywgJ0JMT0NLU0laRScsICdSRUNPUkRTSVpFJywgJ0dOVV9NQUdJQycsCisgICAgICAgICAgICAgICAgICAgICAnUE9TSVhfTUFHSUMnLCAnTEVOR1RIX05BTUUnLCAnTEVOR1RIX0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0xFTkdUSF9QUkVGSVgnLCAnUkVHVFlQRScsICdBUkVHVFlQRScsICdMTktUWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdTWU1UWVBFJywgJ0NIUlRZUEUnLCAnQkxLVFlQRScsICdESVJUWVBFJywgJ0ZJRk9UWVBFJywKKyAgICAgICAgICAgICAgICAgICAgICdDT05UVFlQRScsICdHTlVUWVBFX0xPTkdOQU1FJywgJ0dOVVRZUEVfTE9OR0xJTksnLAorICAgICAgICAgICAgICAgICAgICAgJ0dOVVRZUEVfU1BBUlNFJywgJ1hIRFRZUEUnLCAnWEdMVFlQRScsICdTT0xBUklTX1hIRFRZUEUnLAorICAgICAgICAgICAgICAgICAgICAgJ1NVUFBPUlRFRF9UWVBFUycsICdSRUdVTEFSX1RZUEVTJywgJ0dOVV9UWVBFUycsCisgICAgICAgICAgICAgICAgICAgICAnUEFYX0ZJRUxEUycsICdQQVhfTkFNRV9GSUVMRFMnLCAnUEFYX05VTUJFUl9GSUVMRFMnLAorICAgICAgICAgICAgICAgICAgICAgJ3N0bicsICdudHMnLCAnbnRpJywgJ2l0bicsICdjYWxjX2Noa3N1bXMnLCAnY29weWZpbGVvYmonLAorICAgICAgICAgICAgICAgICAgICAgJ2ZpbGVtb2RlJywKKyAgICAgICAgICAgICAgICAgICAgICdFbXB0eUhlYWRlckVycm9yJywgJ1RydW5jYXRlZEhlYWRlckVycm9yJywKKyAgICAgICAgICAgICAgICAgICAgICdFT0ZIZWFkZXJFcnJvcicsICdJbnZhbGlkSGVhZGVyRXJyb3InLAorICAgICAgICAgICAgICAgICAgICAgJ1N1YnNlcXVlbnRIZWFkZXJFcnJvcicsICdFeEZpbGVPYmplY3QnLAorICAgICAgICAgICAgICAgICAgICAgJ21haW4nfQorICAgICAgICBzdXBwb3J0LmNoZWNrX19hbGxfXyhzZWxmLCB0YXJmaWxlLCBibGFja2xpc3Q9YmxhY2tsaXN0KQorCiAKIGNsYXNzIENvbW1hbmRMaW5lVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGVsbmV0bGliLnB5IGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKaW5kZXggOGUyMTlmNC4uNTFkODJlMSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90ZWxuZXRsaWIucHkKQEAgLTEsNyArMSw2IEBACiBpbXBvcnQgc29ja2V0CiBpbXBvcnQgc2VsZWN0b3JzCiBpbXBvcnQgdGVsbmV0bGliCi1pbXBvcnQgdGltZQogaW1wb3J0IGNvbnRleHRsaWIKIAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CkBAIC00Miw2ICs0MSwxMSBAQAogICAgICAgICB0ZWxuZXQgPSB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkKICAgICAgICAgdGVsbmV0LnNvY2suY2xvc2UoKQogCisgICAgZGVmIHRlc3RDb250ZXh0TWFuYWdlcihzZWxmKToKKyAgICAgICAgd2l0aCB0ZWxuZXRsaWIuVGVsbmV0KEhPU1QsIHNlbGYucG9ydCkgYXMgdG46CisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZSh0bi5nZXRfc29ja2V0KCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHRuLmdldF9zb2NrZXQoKSkKKwogICAgIGRlZiB0ZXN0VGltZW91dERlZmF1bHQoc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShzb2NrZXQuZ2V0ZGVmYXVsdHRpbWVvdXQoKSBpcyBOb25lKQogICAgICAgICBzb2NrZXQuc2V0ZGVmYXVsdHRpbWVvdXQoMzApCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3RocmVhZGluZy5weSBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CmluZGV4IGI2MzA1MDkuLjg0NWU3ZDQgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdGhyZWFkaW5nLnB5CkBAIC04LDcgKzgsNiBAQAogZnJvbSB0ZXN0LnN1cHBvcnQuc2NyaXB0X2hlbHBlciBpbXBvcnQgYXNzZXJ0X3B5dGhvbl9vaywgYXNzZXJ0X3B5dGhvbl9mYWlsdXJlCiAKIGltcG9ydCByYW5kb20KLWltcG9ydCByZQogaW1wb3J0IHN5cwogX3RocmVhZCA9IGltcG9ydF9tb2R1bGUoJ190aHJlYWQnKQogdGhyZWFkaW5nID0gaW1wb3J0X21vZHVsZSgndGhyZWFkaW5nJykKQEAgLTE5LDYgKzE4LDcgQEAKIGltcG9ydCBzdWJwcm9jZXNzCiAKIGZyb20gdGVzdCBpbXBvcnQgbG9ja190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKIAogIyBCZXR3ZWVuIGZvcmsoKSBhbmQgZXhlYygpLCBvbmx5IGFzeW5jLXNhZmUgZnVuY3Rpb25zIGFyZSBhbGxvd2VkIChpc3N1ZXMKQEAgLTExMTcsNSArMTExNywxMiBAQAogY2xhc3MgQmFycmllclRlc3RzKGxvY2tfdGVzdHMuQmFycmllclRlc3RzKToKICAgICBiYXJyaWVydHlwZSA9IHN0YXRpY21ldGhvZCh0aHJlYWRpbmcuQmFycmllcikKIAorY2xhc3MgTWlzY1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9fYWxsX18oc2VsZik6CisgICAgICAgIGV4dHJhID0geyJUaHJlYWRFcnJvciJ9CisgICAgICAgIGJsYWNrbGlzdCA9IHsnY3VycmVudFRocmVhZCcsICdhY3RpdmVDb3VudCd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHRocmVhZGluZywgKCd0aHJlYWRpbmcnLCAnX3RocmVhZCcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYT1leHRyYSwgYmxhY2tsaXN0PWJsYWNrbGlzdCkKKwogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZS5weSBiL0xpYi90ZXN0L3Rlc3RfdGltZS5weQppbmRleCA3NmI4OTRlLi5mMjI0MjEyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RpbWUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1lLnB5CkBAIC0xLDYgKzEsOCBAQAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CitpbXBvcnQgZGVjaW1hbAogaW1wb3J0IGVudW0KIGltcG9ydCBsb2NhbGUKK2ltcG9ydCBtYXRoCiBpbXBvcnQgcGxhdGZvcm0KIGltcG9ydCBzeXMKIGltcG9ydCBzeXNjb25maWcKQEAgLTIxLDE3ICsyMywyNyBAQAogVElNRV9NQVhZRUFSID0gKDEgPDwgOCAqIFNJWkVPRl9JTlQgLSAxKSAtIDEKIFRJTUVfTUlOWUVBUiA9IC1USU1FX01BWFlFQVIgLSAxCiAKK1NFQ19UT19VUyA9IDEwICoqIDYKIFVTX1RPX05TID0gMTAgKiogMwogTVNfVE9fTlMgPSAxMCAqKiA2CiBTRUNfVE9fTlMgPSAxMCAqKiA5CitOU19UT19TRUMgPSAxMCAqKiA5CiAKIGNsYXNzIF9QeVRpbWUoZW51bS5JbnRFbnVtKToKICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCiAgICAgUk9VTkRfRkxPT1IgPSAwCiAgICAgIyBSb3VuZCB0b3dhcmRzIGluZmluaXR5ICgraW5mKQogICAgIFJPVU5EX0NFSUxJTkcgPSAxCisgICAgIyBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgIFJPVU5EX0hBTEZfRVZFTiA9IDIKIAotQUxMX1JPVU5ESU5HX01FVEhPRFMgPSAoX1B5VGltZS5ST1VORF9GTE9PUiwgX1B5VGltZS5ST1VORF9DRUlMSU5HKQorIyBSb3VuZGluZyBtb2RlcyBzdXBwb3J0ZWQgYnkgUHlUaW1lCitST1VORElOR19NT0RFUyA9ICgKKyAgICAjIChQeVRpbWUgcm91bmRpbmcgbWV0aG9kLCBkZWNpbWFsIHJvdW5kaW5nIG1ldGhvZCkKKyAgICAoX1B5VGltZS5ST1VORF9GTE9PUiwgZGVjaW1hbC5ST1VORF9GTE9PUiksCisgICAgKF9QeVRpbWUuUk9VTkRfQ0VJTElORywgZGVjaW1hbC5ST1VORF9DRUlMSU5HKSwKKyAgICAoX1B5VGltZS5ST1VORF9IQUxGX0VWRU4sIGRlY2ltYWwuUk9VTkRfSEFMRl9FVkVOKSwKKykKIAogCiBjbGFzcyBUaW1lVGVzdENhc2UodW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtNjA3LDc5ICs2MTksNiBAQAogCiAKIGNsYXNzIFRlc3RQeXRpbWUodW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5pbnZhbGlkX3ZhbHVlcyA9ICgKLSAgICAgICAgICAgIC0oMiAqKiAxMDApLCAyICoqIDEwMCwKLSAgICAgICAgICAgIC0oMi4wICoqIDEwMC4wKSwgMi4wICoqIDEwMC4wLAotICAgICAgICApCi0KLSAgICBAc3VwcG9ydC5jcHl0aG9uX29ubHkKLSAgICBkZWYgdGVzdF90aW1lX3Qoc2VsZik6Ci0gICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBweXRpbWVfb2JqZWN0X3RvX3RpbWVfdAotICAgICAgICBmb3Igb2JqLCB0aW1lX3QsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIFJvdW5kIHRvd2FyZHMgbWludXMgaW5maW5pdHkgKC1pbmYpCi0gICAgICAgICAgICAoMCwgMCwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEsIC0xLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuOSwgLTIsIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMCwgMSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoMS45LCAxLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAwLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS4wLCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMS45LCAtMSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjAsIDEsIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMS45LCAyLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChweXRpbWVfb2JqZWN0X3RvX3RpbWVfdChvYmosIHJuZCksIHRpbWVfdCkKLQotICAgICAgICBybmQgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIGZvciBpbnZhbGlkIGluIHNlbGYuaW52YWxpZF92YWx1ZXM6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aW1lX29iamVjdF90b190aW1lX3QsIGludmFsaWQsIHJuZCkKLQotICAgIEBzdXBwb3J0LmNweXRob25fb25seQotICAgIGRlZiB0ZXN0X3RpbWVzcGVjKHNlbGYpOgotICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYwotICAgICAgICBmb3Igb2JqLCB0aW1lc3BlYywgcm5kIGluICgKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBtaW51cyBpbmZpbml0eSAoLWluZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4wLCAoLTEsIDApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDFlLTEwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS05LCAoLTEsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICgtMS4yLCAoLTIsIDgwMDAwMDAwMCksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDAuOTk5OTk5OTk5OSwgKDAsIDk5OTk5OTk5OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5MCwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc4OSksIF9QeVRpbWUuUk9VTkRfRkxPT1IpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTAsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9GTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MSwgKC0yLCA4NzY1NDMyMTApLCBfUHlUaW1lLlJPVU5EX0ZMT09SKSwKLSAgICAgICAgICAgICMgUm91bmQgdG93YXJkcyBpbmZpbml0eSAoK2luZikKLSAgICAgICAgICAgICgwLCAoMCwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsICgtMSwgMCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMCwgKC0xLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxZS05LCAoMCwgMSksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoMWUtMTAsICgwLCAxKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgtMWUtOSwgKC0xLCA5OTk5OTk5OTkpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xZS0xMCwgKDAsIDApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjIsICgtMiwgODAwMDAwMDAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgwLjk5OTk5OTk5OTksICgxLCAwKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgICAgICgxLjEyMzQ1Njc4OTAsICgxLCAxMjM0NTY3OTApLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKDEuMTIzNDU2Nzg5OSwgKDEsIDEyMzQ1Njc5MCksIF9QeVRpbWUuUk9VTkRfQ0VJTElORyksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5MCwgKC0yLCA4NzY1NDMyMTEpLCBfUHlUaW1lLlJPVU5EX0NFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTEsICgtMiwgODc2NTQzMjExKSwgX1B5VGltZS5ST1VORF9DRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXNwZWM9dGltZXNwZWMpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHl0aW1lX29iamVjdF90b190aW1lc3BlYyhvYmosIHJuZCksIHRpbWVzcGVjKQotCi0gICAgICAgIHJuZCA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgZm9yIGludmFsaWQgaW4gc2VsZi5pbnZhbGlkX3ZhbHVlczoKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLCBpbnZhbGlkLCBybmQpCi0KICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyh0aW1lLl9TVFJVQ1RfVE1fSVRFTVMgPT0gMTEsICJuZWVkcyB0bV96b25lIHN1cHBvcnQiKQogICAgIGRlZiB0ZXN0X2xvY2FsdGltZV90aW1lem9uZShzZWxmKToKIApAQCAtNzM0LDI2NiArNjczLDI5MSBAQAogICAgICAgICBzZWxmLmFzc2VydElzKGx0LnRtX3pvbmUsIE5vbmUpCiAKIAotQHVuaXR0ZXN0LnNraXBVbmxlc3MoX3Rlc3RjYXBpIGlzIG5vdCBOb25lLAotICAgICAgICAgICAgICAgICAgICAgJ25lZWQgdGhlIF90ZXN0Y2FwaSBtb2R1bGUnKQotY2xhc3MgVGVzdFB5VGltZV90KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIHRoZSBfdGVzdGNhcGkgbW9kdWxlJykKK2NsYXNzIENQeVRpbWVUZXN0Q2FzZToKKyAgICAiIiIKKyAgICBCYXNlIGNsYXNzIHRvIHRlc3QgdGhlIEMgX1B5VGltZV90IEFQSS4KKyAgICAiIiIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gTm9uZQorCisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgU0laRU9GX1RJTUVfVAorICAgICAgICBiaXRzID0gU0laRU9GX1RJTUVfVCAqIDggLSAxCisgICAgICAgIHNlbGYudGltZV90X21pbiA9IC0yICoqIGJpdHMKKyAgICAgICAgc2VsZi50aW1lX3RfbWF4ID0gMiAqKiBiaXRzIC0gMQorCisgICAgZGVmIHRpbWVfdF9maWx0ZXIoc2VsZiwgc2Vjb25kcyk6CisgICAgICAgIHJldHVybiAoc2VsZi50aW1lX3RfbWluIDw9IHNlY29uZHMgPD0gc2VsZi50aW1lX3RfbWF4KQorCisgICAgZGVmIF9yb3VuZGluZ192YWx1ZXMoc2VsZiwgdXNlX2Zsb2F0KToKKyAgICAgICAgIkJ1aWxkIHRpbWVzdGFtcHMgdXNlZCB0byB0ZXN0IHJvdW5kaW5nLiIKKworICAgICAgICB1bml0cyA9IFsxLCBVU19UT19OUywgTVNfVE9fTlMsIFNFQ19UT19OU10KKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBwaWNvc2Vjb25kcyBhcmUgb25seSB0ZXN0ZWQgdG8gcHl0aW1lX2NvbnZlcnRlciBhY2NlcHRpbmcgZmxvYXRzCisgICAgICAgICAgICB1bml0cy5hcHBlbmQoMWUtMykKKworICAgICAgICB2YWx1ZXMgPSAoCisgICAgICAgICAgICAjIHNtYWxsIHZhbHVlcworICAgICAgICAgICAgMSwgMiwgNSwgNywgMTIzLCA0NTYsIDEyMzQsCisgICAgICAgICAgICAjIDEwXmsgLSAxCisgICAgICAgICAgICA5LAorICAgICAgICAgICAgOTksCisgICAgICAgICAgICA5OTksCisgICAgICAgICAgICA5OTk5LAorICAgICAgICAgICAgOTk5OTksCisgICAgICAgICAgICA5OTk5OTksCisgICAgICAgICAgICAjIHRlc3QgaGFsZiBldmVuIHJvdW5kaW5nIG5lYXIgMC41LCAxLjUsIDIuNSwgMy41LCA0LjUKKyAgICAgICAgICAgIDQ5OSwgNTAwLCA1MDEsCisgICAgICAgICAgICAxNDk5LCAxNTAwLCAxNTAxLAorICAgICAgICAgICAgMjUwMCwKKyAgICAgICAgICAgIDM1MDAsCisgICAgICAgICAgICA0NTAwLAorICAgICAgICApCisKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IFswXQorICAgICAgICBmb3IgdW5pdCBpbiB1bml0czoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiB2YWx1ZXM6CisgICAgICAgICAgICAgICAgbnMgPSB2YWx1ZSAqIHVuaXQKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisgICAgICAgIGZvciBwb3cyIGluICgwLCA1LCAxMCwgMTUsIDIyLCAyMywgMjQsIDMwLCAzMyk6CisgICAgICAgICAgICBucyA9ICgyICoqIHBvdzIpICogU0VDX1RPX05TCisgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoCisgICAgICAgICAgICAgICAgLW5zLTEsIC1ucywgLW5zKzEsCisgICAgICAgICAgICAgICAgbnMtMSwgbnMsIG5zKzEKKyAgICAgICAgICAgICkpCisgICAgICAgIGZvciBzZWNvbmRzIGluIChfdGVzdGNhcGkuSU5UX01JTiwgX3Rlc3RjYXBpLklOVF9NQVgpOgorICAgICAgICAgICAgbnNfdGltZXN0YW1wcy5hcHBlbmQoc2Vjb25kcyAqIFNFQ19UT19OUykKKyAgICAgICAgaWYgdXNlX2Zsb2F0OgorICAgICAgICAgICAgIyBudW1iZXJzIHdpdGggYW4gZXhhY3QgcmVwcmVzZW50YXRpb24gaW4gSUVFRSA3NTQgKGJhc2UgMikKKyAgICAgICAgICAgIGZvciBwb3cyIGluICgzLCA3LCAxMCwgMTUpOgorICAgICAgICAgICAgICAgIG5zID0gMi4wICoqICgtcG93MikKKyAgICAgICAgICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgIyBzZWNvbmRzIGNsb3NlIHRvIF9QeVRpbWVfdCB0eXBlIGxpbWl0CisgICAgICAgIG5zID0gKDIgKiogNjMgLy8gU0VDX1RPX05TKSAqIFNFQ19UT19OUworICAgICAgICBuc190aW1lc3RhbXBzLmV4dGVuZCgoLW5zLCBucykpCisKKyAgICAgICAgcmV0dXJuIG5zX3RpbWVzdGFtcHMKKworICAgIGRlZiBfY2hlY2tfcm91bmRpbmcoc2VsZiwgcHl0aW1lX2NvbnZlcnRlciwgZXhwZWN0ZWRfZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9mbG9hdCwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcj1Ob25lKToKKworICAgICAgICBkZWYgY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcyk6CisgICAgICAgICAgICBpZiB1c2VfZmxvYXQ6CisgICAgICAgICAgICAgICAgdW5pdF90b19ucyA9IFNFQ19UT19OUyAvIGZsb2F0KHVuaXRfdG9fc2VjKQorICAgICAgICAgICAgICAgIHZhbHVlcyA9IFtucyAvIHVuaXRfdG9fbnMgZm9yIG5zIGluIG5zX3RpbWVzdGFtcHNdCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHVuaXRfdG9fbnMgPSBTRUNfVE9fTlMgLy8gdW5pdF90b19zZWMKKyAgICAgICAgICAgICAgICB2YWx1ZXMgPSBbbnMgLy8gdW5pdF90b19ucyBmb3IgbnMgaW4gbnNfdGltZXN0YW1wc10KKworICAgICAgICAgICAgaWYgdmFsdWVfZmlsdGVyOgorICAgICAgICAgICAgICAgIHZhbHVlcyA9IGZpbHRlcih2YWx1ZV9maWx0ZXIsIHZhbHVlcykKKworICAgICAgICAgICAgIyByZW1vdmUgZHVwbGljYXRlcyBhbmQgc29ydAorICAgICAgICAgICAgcmV0dXJuIHNvcnRlZChzZXQodmFsdWVzKSkKKworICAgICAgICAjIHRlc3Qgcm91bmRpbmcKKyAgICAgICAgbnNfdGltZXN0YW1wcyA9IHNlbGYuX3JvdW5kaW5nX3ZhbHVlcyh1c2VfZmxvYXQpCisgICAgICAgIHZhbGlkX3ZhbHVlcyA9IGNvbnZlcnRfdmFsdWVzKG5zX3RpbWVzdGFtcHMpCisgICAgICAgIGZvciB0aW1lX3JuZCwgZGVjaW1hbF9ybmQgaW4gUk9VTkRJTkdfTU9ERVMgOgorICAgICAgICAgICAgY29udGV4dCA9IGRlY2ltYWwuZ2V0Y29udGV4dCgpCisgICAgICAgICAgICBjb250ZXh0LnJvdW5kaW5nID0gZGVjaW1hbF9ybmQKKworICAgICAgICAgICAgZm9yIHZhbHVlIGluIHZhbGlkX3ZhbHVlczoKKyAgICAgICAgICAgICAgICBkZWJ1Z19pbmZvID0geyd2YWx1ZSc6IHZhbHVlLCAncm91bmRpbmcnOiBkZWNpbWFsX3JuZH0KKyAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCA9IGV4cGVjdGVkX2Z1bmModmFsdWUpCisgICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleGM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuZmFpbCgiRXJyb3Igb24gdGltZXN0YW1wIGNvbnZlcnNpb246ICVzIiAlIGRlYnVnX2luZm8pCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHBlY3RlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlYnVnX2luZm8pCisKKyAgICAgICAgIyB0ZXN0IG92ZXJmbG93CisgICAgICAgIG5zID0gc2VsZi5PVkVSRkxPV19TRUNPTkRTICogU0VDX1RPX05TCisgICAgICAgIG5zX3RpbWVzdGFtcHMgPSAoLW5zLCBucykKKyAgICAgICAgb3ZlcmZsb3dfdmFsdWVzID0gY29udmVydF92YWx1ZXMobnNfdGltZXN0YW1wcykKKyAgICAgICAgZm9yIHRpbWVfcm5kLCBfIGluIFJPVU5ESU5HX01PREVTIDoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBvdmVyZmxvd192YWx1ZXM6CisgICAgICAgICAgICAgICAgZGVidWdfaW5mbyA9IHsndmFsdWUnOiB2YWx1ZSwgJ3JvdW5kaW5nJzogdGltZV9ybmR9CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhPdmVyZmxvd0Vycm9yLCBtc2c9ZGVidWdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgIHB5dGltZV9jb252ZXJ0ZXIodmFsdWUsIHRpbWVfcm5kKQorCisgICAgZGVmIGNoZWNrX2ludF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdF90b19zZWM9MSwgdmFsdWVfZmlsdGVyPU5vbmUpOgorICAgICAgICBzZWxmLl9jaGVja19yb3VuZGluZyhweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGYWxzZSwgdW5pdF90b19zZWMsIHZhbHVlX2ZpbHRlcikKKworICAgIGRlZiBjaGVja19mbG9hdF9yb3VuZGluZyhzZWxmLCBweXRpbWVfY29udmVydGVyLCBleHBlY3RlZF9mdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0X3RvX3NlYz0xLCB2YWx1ZV9maWx0ZXI9Tm9uZSk6CisgICAgICAgIHNlbGYuX2NoZWNrX3JvdW5kaW5nKHB5dGltZV9jb252ZXJ0ZXIsIGV4cGVjdGVkX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRydWUsIHVuaXRfdG9fc2VjLCB2YWx1ZV9maWx0ZXIpCisKKyAgICBkZWYgZGVjaW1hbF9yb3VuZChzZWxmLCB4KToKKyAgICAgICAgZCA9IGRlY2ltYWwuRGVjaW1hbCh4KQorICAgICAgICBkID0gZC5xdWFudGl6ZSgxKQorICAgICAgICByZXR1cm4gaW50KGQpCisKKworY2xhc3MgVGVzdENQeVRpbWUoQ1B5VGltZVRlc3RDYXNlLCB1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIiIiCisgICAgVGVzdCB0aGUgQyBfUHlUaW1lX3QgQVBJLgorICAgICIiIgorICAgICMgX1B5VGltZV90IGlzIGEgNjQtYml0IHNpZ25lZCBpbnRlZ2VyCisgICAgT1ZFUkZMT1dfU0VDT05EUyA9IG1hdGguY2VpbCgoMioqNjMgKyAxKSAvIFNFQ19UT19OUykKKwogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzCi0gICAgICAgIGZvciBzZWNvbmRzIGluICgwLCAzLCAtNDU2LCBfdGVzdGNhcGkuSU5UX01BWCwgX3Rlc3RjYXBpLklOVF9NSU4pOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qoc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Gcm9tU2Vjb25kcyhzZWNvbmRzKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY29uZHMgKiBTRUNfVE9fTlMpCisKKyAgICAgICAgIyBQeVRpbWVfRnJvbVNlY29uZHMoKSBleHBlY3RzIGEgQyBpbnQsIHJlamVjdCB2YWx1ZXMgb3V0IG9mIHJhbmdlCisgICAgICAgIGRlZiBjX2ludF9maWx0ZXIoc2Vjcyk6CisgICAgICAgICAgICByZXR1cm4gKF90ZXN0Y2FwaS5JTlRfTUlOIDw9IHNlY3MgPD0gX3Rlc3RjYXBpLklOVF9NQVgpCisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIHNlY3MsIHJuZDogUHlUaW1lX0Zyb21TZWNvbmRzKHNlY3MpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPWNfaW50X2ZpbHRlcikKIAogICAgIGRlZiB0ZXN0X0Zyb21TZWNvbmRzT2JqZWN0KHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0Zyb21TZWNvbmRzT2JqZWN0CiAKLSAgICAgICAgIyBDb252ZXJzaW9uIGdpdmluZyB0aGUgc2FtZSByZXN1bHQgZm9yIGFsbCByb3VuZGluZyBtZXRob2RzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3Igb2JqLCB0cyBpbiAoCi0gICAgICAgICAgICAgICAgIyBpbnRlZ2VycwotICAgICAgICAgICAgICAgICgwLCAwKSwKLSAgICAgICAgICAgICAgICAoMSwgU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoLTMsIC0zICogU0VDX1RPX05TKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoCisgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QsCisgICAgICAgICAgICBsYW1iZGEgc2Vjczogc2VjcyAqIFNFQ19UT19OUykKIAotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHN1YnNlY29uZHMKLSAgICAgICAgICAgICAgICAoMC4wLCAwKSwKLSAgICAgICAgICAgICAgICAoMWUtOSwgMSksCi0gICAgICAgICAgICAgICAgKDFlLTYsIDEwICoqIDMpLAotICAgICAgICAgICAgICAgICgxZS0zLCAxMCAqKiA2KSwKLQotICAgICAgICAgICAgICAgICMgZmxvYXQ6IHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMi4wLCAyICogU0VDX1RPX05TKSwKLSAgICAgICAgICAgICAgICAoMTIzLjAsIDEyMyAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICAgICAgKC03LjAsIC03ICogU0VDX1RPX05TKSwKLQotICAgICAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDIqKjIyIC0gMWUtOSwgIDQxOTQzMDM5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMiwgICAgICAgICA0MTk0MzA0MDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjIgKyAxZS05LCAgNDE5NDMwNDAwMDAwMDAwMSksCi0gICAgICAgICAgICAgICAgKDIqKjIzIC0gMWUtOSwgIDgzODg2MDc5OTk5OTk5OTkpLAotICAgICAgICAgICAgICAgICgyKioyMywgICAgICAgICA4Mzg4NjA4MDAwMDAwMDAwKSwKLQotICAgICAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMioqMjMgKyAxZS05LCAgODM4ODYwODAwMDAwMDAwMiksCi0KLSAgICAgICAgICAgICAgICAjIG5hbm9zZWNvbmRzIGFyZSBsb3N0IGZvciB2YWx1ZSA+IDJeMjMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyKioyNCAtIDFlLTksIDE2Nzc3MjE1OTk5OTk5OTk4KSwKLSAgICAgICAgICAgICAgICAoMioqMjQsICAgICAgICAxNjc3NzIxNjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI0ICsgMWUtOSwgMTY3NzcyMTYwMDAwMDAwMDApLAotICAgICAgICAgICAgICAgICgyKioyNSAtIDFlLTksIDMzNTU0NDMyMDAwMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoMioqMjUgICAgICAgLCAzMzU1NDQzMjAwMDAwMDAwMCksCi0gICAgICAgICAgICAgICAgKDIqKjI1ICsgMWUtOSwgMzM1NTQ0MzIwMDAwMDAwMDApLAotCi0gICAgICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAgICAgKDkyMjMzNzIwMzYsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICg5MjIzMzcyMDM2LjAsIDkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNiwgLTkyMjMzNzIwMzYgKiBTRUNfVE9fTlMpLAotICAgICAgICAgICAgICAgICgtOTIyMzM3MjAzNi4wLCAtOTIyMzM3MjAzNiAqIFNFQ19UT19OUyksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG9iaj1vYmosIHJvdW5kPXJuZCwgdGltZXN0YW1wPXRzKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKLQotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3Qocm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKE92ZXJmbG93RXJyb3IpOgotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoOTIyMzM3MjAzNy4wLCBybmQpCi0gICAgICAgICAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCgtOTIyMzM3MjAzNywgcm5kKQotICAgICAgICAgICAgICAgICAgICBQeVRpbWVfRnJvbVNlY29uZHNPYmplY3QoLTkyMjMzNzIwMzcuMCwgcm5kKQotCi0gICAgICAgICMgQ29udmVyc2lvbiBnaXZpbmcgZGlmZmVyZW50IHJlc3VsdHMgZGVwZW5kaW5nIG9uIHRoZSByb3VuZGluZyBtZXRob2QKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG9iaiwgdHMsIHJuZCBpbiAoCi0gICAgICAgICAgICAjIGNsb3NlIHRvIHplcm8KLSAgICAgICAgICAgICggMWUtMTAsICAwLCBGTE9PUiksCi0gICAgICAgICAgICAoIDFlLTEwLCAgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTFlLTEwLCAtMSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xZS0xMCwgIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHRlc3Qgcm91bmRpbmcgb2YgdGhlIGxhc3QgbmFub3NlY29uZAotICAgICAgICAgICAgKCAxLjEyMzQ1Njc4OTksICAxMTIzNDU2Nzg5LCBGTE9PUiksCi0gICAgICAgICAgICAoIDEuMTIzNDU2Nzg5OSwgIDExMjM0NTY3OTAsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLjEyMzQ1Njc4OTksIC0xMTIzNDU2NzkwLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEuMTIzNDU2Nzg5OSwgLTExMjM0NTY3ODksIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIGNsb3NlIHRvIDEgc2Vjb25kCi0gICAgICAgICAgICAoIDAuOTk5OTk5OTk5OSwgICA5OTk5OTk5OTksIEZMT09SKSwKLSAgICAgICAgICAgICggMC45OTk5OTk5OTk5LCAgMTAwMDAwMDAwMCwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTAuOTk5OTk5OTk5OSwgLTEwMDAwMDAwMDAsIEZMT09SKSwKLSAgICAgICAgICAgICgtMC45OTk5OTk5OTk5LCAgLTk5OTk5OTk5OSwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChvYmo9b2JqLCByb3VuZD1ybmQsIHRpbWVzdGFtcD10cyk6Ci0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfRnJvbVNlY29uZHNPYmplY3Qob2JqLCBybmQpLCB0cykKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZygKKyAgICAgICAgICAgIFB5VGltZV9Gcm9tU2Vjb25kc09iamVjdCwKKyAgICAgICAgICAgIGxhbWJkYSBuczogc2VsZi5kZWNpbWFsX3JvdW5kKG5zICogU0VDX1RPX05TKSkKIAogICAgIGRlZiB0ZXN0X0FzU2Vjb25kc0RvdWJsZShzZWxmKToKICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IFB5VGltZV9Bc1NlY29uZHNEb3VibGUKIAotICAgICAgICBmb3IgbmFub3NlY29uZHMsIHNlY29uZHMgaW4gKAotICAgICAgICAgICAgIyBuZWFyIDEgbmFub3NlY29uZAotICAgICAgICAgICAgKCAwLCAgMC4wKSwKLSAgICAgICAgICAgICggMSwgIDFlLTkpLAotICAgICAgICAgICAgKC0xLCAtMWUtOSksCisgICAgICAgIGRlZiBmbG9hdF9jb252ZXJ0ZXIobnMpOgorICAgICAgICAgICAgaWYgYWJzKG5zKSAlIFNFQ19UT19OUyA9PSAwOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucyAvLyBTRUNfVE9fTlMpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiBmbG9hdChucykgLyBTRUNfVE9fTlMKIAotICAgICAgICAgICAgIyBuZWFyIDEgc2Vjb25kCi0gICAgICAgICAgICAoU0VDX1RPX05TICsgMSwgMS4wICsgMWUtOSksCi0gICAgICAgICAgICAoU0VDX1RPX05TLCAgICAgMS4wKSwKLSAgICAgICAgICAgIChTRUNfVE9fTlMgLSAxLCAxLjAgLSAxZS05KSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcobGFtYmRhIG5zLCBybmQ6IFB5VGltZV9Bc1NlY29uZHNEb3VibGUobnMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbG9hdF9jb252ZXJ0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgIyBhIGZldyBzZWNvbmRzCi0gICAgICAgICAgICAoMTIzICogU0VDX1RPX05TLCAxMjMuMCksCi0gICAgICAgICAgICAoLTU2NyAqIFNFQ19UT19OUywgLTU2Ny4wKSwKKyAgICBkZWYgY3JlYXRlX2RlY2ltYWxfY29udmVydGVyKHNlbGYsIGRlbm9taW5hdG9yKToKKyAgICAgICAgZGVub20gPSBkZWNpbWFsLkRlY2ltYWwoZGVub21pbmF0b3IpCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZCBhcmUga2VwdCBmb3IgdmFsdWUgPD0gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoNDE5NDMwMzk5OTk5OTk5OSwgMioqMjIgLSAxZS05KSwKLSAgICAgICAgICAgICg0MTk0MzA0MDAwMDAwMDAwLCAyKioyMiksCi0gICAgICAgICAgICAoNDE5NDMwNDAwMDAwMDAwMSwgMioqMjIgKyAxZS05KSwKKyAgICAgICAgZGVmIGNvbnZlcnRlcih2YWx1ZSk6CisgICAgICAgICAgICBkID0gZGVjaW1hbC5EZWNpbWFsKHZhbHVlKSAvIGRlbm9tCisgICAgICAgICAgICByZXR1cm4gc2VsZi5kZWNpbWFsX3JvdW5kKGQpCiAKLSAgICAgICAgICAgICMgc3RhcnQgbG9zaW5nIHByZWNpc2lvbiBmb3IgdmFsdWUgPiAyXjIzIHNlY29uZHMKLSAgICAgICAgICAgICg4Mzg4NjA4MDAwMDAwMDAyLCAyKioyMyArIDFlLTkpLAorICAgICAgICByZXR1cm4gY29udmVydGVyCiAKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMgYXJlIGxvc3QgZm9yIHZhbHVlID4gMl4yMyBzZWNvbmRzCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTgsIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTU5OTk5OTk5OTksIDIqKjI0IC0gMWUtOSksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDAsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDEsIDIqKjI0ICAgICAgICksCi0gICAgICAgICAgICAoMTY3NzcyMTYwMDAwMDAwMDIsIDIqKjI0ICsgMmUtOSksCi0KLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMCwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwMiwgMioqMjUgICAgICAgKSwKLSAgICAgICAgICAgICgzMzU1NDQzMjAwMDAwMDAwNCwgMioqMjUgKyA0ZS05KSwKLQotICAgICAgICAgICAgIyBjbG9zZSB0byAyXjYzIG5hbm9zZWNvbmRzIChfUHlUaW1lX3QgbGltaXQpCi0gICAgICAgICAgICAoOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgOTIyMzM3MjAzNi4wKSwKLSAgICAgICAgICAgICgtOTIyMzM3MjAzNiAqIFNFQ19UT19OUywgLTkyMjMzNzIwMzYuMCksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1uYW5vc2Vjb25kcywgc2Vjb25kcz1zZWNvbmRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1NlY29uZHNEb3VibGUobmFub3NlY29uZHMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2Vjb25kcykKLQotICAgIGRlZiB0ZXN0X3RpbWV2YWwoc2VsZik6CisgICAgZGVmIHRlc3RfQXNUaW1ldmFsKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXZhbAotICAgICAgICBmb3Igcm5kIGluIEFMTF9ST1VORElOR19NRVRIT0RTOgotICAgICAgICAgICAgZm9yIG5zLCB0diBpbiAoCi0gICAgICAgICAgICAgICAgIyBtaWNyb3NlY29uZHMKLSAgICAgICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICAgICAoMTAwMCwgKDAsIDEpKSwKLSAgICAgICAgICAgICAgICAoLTEwMDAsICgtMSwgOTk5OTk5KSksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgKDIsIDApKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsICgtMywgMCkpLAotICAgICAgICAgICAgKToKLSAgICAgICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgdGltZXZhbD10diwgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQeVRpbWVfQXNUaW1ldmFsKG5zLCBybmQpLCB0dikKKyAgICAgICAgdXNfY29udmVydGVyID0gc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoVVNfVE9fTlMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCB0diwgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAoMCwgMCksIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OSksIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgKDAsIDApLCBDRUlMSU5HKSwKKyAgICAgICAgZGVmIHRpbWV2YWxfY29udmVydGVyKG5zKToKKyAgICAgICAgICAgIHVzID0gdXNfY29udmVydGVyKG5zKQorICAgICAgICAgICAgcmV0dXJuIGRpdm1vZCh1cywgU0VDX1RPX1VTKQogCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQ1NjcwMDEsICgxLCAyMzQ1NjcpLCBGTE9PUiksCi0gICAgICAgICAgICAoMTIzNDU2NzAwMSwgKDEsIDIzNDU2OCksIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0NTY3MDAxLCAoLTIsIDc2NTQzMiksIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNDU2NzAwMSwgKC0yLCA3NjU0MzMpLCBDRUlMSU5HKSwKLSAgICAgICAgKToKLSAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzVGltZXZhbChucywgcm5kKSwgdHYpCisgICAgICAgIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IExPTkdfTUlOLCBMT05HX01BWAorCisgICAgICAgICAgICAjIE9uIFdpbmRvd3MsIHRpbWV2YWwudHZfc2VjIHR5cGUgaXMgYSBDIGxvbmcKKyAgICAgICAgICAgIGRlZiBzZWNvbmRzX2ZpbHRlcihzZWNzKToKKyAgICAgICAgICAgICAgICByZXR1cm4gTE9OR19NSU4gPD0gc2VjcyA8PSBMT05HX01BWAorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2Vjb25kc19maWx0ZXIgPSBzZWxmLnRpbWVfdF9maWx0ZXIKKworICAgICAgICBzZWxmLmNoZWNrX2ludF9yb3VuZGluZyhQeVRpbWVfQXNUaW1ldmFsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1ldmFsX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2Vjb25kc19maWx0ZXIpCiAKICAgICBAdW5pdHRlc3Quc2tpcFVubGVzcyhoYXNhdHRyKF90ZXN0Y2FwaSwgJ1B5VGltZV9Bc1RpbWVzcGVjJyksCiAgICAgICAgICAgICAgICAgICAgICAgICAgJ25lZWQgX3Rlc3RjYXBpLlB5VGltZV9Bc1RpbWVzcGVjJykKLSAgICBkZWYgdGVzdF90aW1lc3BlYyhzZWxmKToKKyAgICBkZWYgdGVzdF9Bc1RpbWVzcGVjKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzVGltZXNwZWMKLSAgICAgICAgZm9yIG5zLCB0cyBpbiAoCi0gICAgICAgICAgICAjIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMCwgKDAsIDApKSwKLSAgICAgICAgICAgICgxLCAoMCwgMSkpLAotICAgICAgICAgICAgKC0xLCAoLTEsIDk5OTk5OTk5OSkpLAogCi0gICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAoMiwgMCkpLAotICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAoLTMsIDApKSwKKyAgICAgICAgZGVmIHRpbWVzcGVjX2NvbnZlcnRlcihucyk6CisgICAgICAgICAgICByZXR1cm4gZGl2bW9kKG5zLCBTRUNfVE9fTlMpCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNDU2Nzg5MCwgKDEsIDIzNDU2Nzg5MCkpLAotICAgICAgICAgICAgKC0xMjM0NTY3ODkwLCAoLTIsIDc2NTQzMjExMCkpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWVzcGVjPXRzKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc1RpbWVzcGVjKG5zKSwgdHMpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKGxhbWJkYSBucywgcm5kOiBQeVRpbWVfQXNUaW1lc3BlYyhucyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzcGVjX2NvbnZlcnRlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlNfVE9fU0VDLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQogCi0gICAgZGVmIHRlc3RfbWlsbGlzZWNvbmRzKHNlbGYpOgorICAgIGRlZiB0ZXN0X0FzTWlsbGlzZWNvbmRzKHNlbGYpOgogICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgUHlUaW1lX0FzTWlsbGlzZWNvbmRzCi0gICAgICAgIGZvciBybmQgaW4gQUxMX1JPVU5ESU5HX01FVEhPRFM6Ci0gICAgICAgICAgICBmb3IgbnMsIHR2IGluICgKLSAgICAgICAgICAgICAgICAjIG1pbGxpc2Vjb25kcwotICAgICAgICAgICAgICAgICgxICogTVNfVE9fTlMsIDEpLAotICAgICAgICAgICAgICAgICgtMiAqIE1TX1RPX05TLCAtMiksCiAKLSAgICAgICAgICAgICAgICAjIHNlY29uZHMKLSAgICAgICAgICAgICAgICAoMiAqIFNFQ19UT19OUywgMjAwMCksCi0gICAgICAgICAgICAgICAgKC0zICogU0VDX1RPX05TLCAtMzAwMCksCi0gICAgICAgICAgICApOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KG5hbm9zZWNvbmRzPW5zLCB0aW1ldmFsPXR2LCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgdHYpCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKFB5VGltZV9Bc01pbGxpc2Vjb25kcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jcmVhdGVfZGVjaW1hbF9jb252ZXJ0ZXIoTVNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOU19UT19TRUMpCiAKLSAgICAgICAgRkxPT1IgPSBfUHlUaW1lLlJPVU5EX0ZMT09SCi0gICAgICAgIENFSUxJTkcgPSBfUHlUaW1lLlJPVU5EX0NFSUxJTkcKLSAgICAgICAgZm9yIG5zLCBtcywgcm5kIGluICgKLSAgICAgICAgICAgICMgbmFub3NlY29uZHMKLSAgICAgICAgICAgICgxLCAwLCBGTE9PUiksCi0gICAgICAgICAgICAoMSwgMSwgQ0VJTElORyksCi0gICAgICAgICAgICAoLTEsIC0xLCBGTE9PUiksCi0gICAgICAgICAgICAoLTEsIDAsIENFSUxJTkcpLAotCi0gICAgICAgICAgICAjIHNlY29uZHMgKyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEyMzQgKiBNU19UT19OUyArIDEsIDEyMzQsIEZMT09SKSwKLSAgICAgICAgICAgICgxMjM0ICogTVNfVE9fTlMgKyAxLCAxMjM1LCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzUsIEZMT09SKSwKLSAgICAgICAgICAgICgtMTIzNCAqIE1TX1RPX05TIC0gMSwgLTEyMzQsIENFSUxJTkcpLAotICAgICAgICApOgotICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIG1pbGxpc2Vjb25kcz1tcywgcm91bmQ9cm5kKToKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFB5VGltZV9Bc01pbGxpc2Vjb25kcyhucywgcm5kKSwgbXMpCi0KLSAgICBkZWYgdGVzdF9taWNyb3NlY29uZHMoc2VsZik6CisgICAgZGVmIHRlc3RfQXNNaWNyb3NlY29uZHMoc2VsZik6CiAgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBQeVRpbWVfQXNNaWNyb3NlY29uZHMKLSAgICAgICAgZm9yIHJuZCBpbiBBTExfUk9VTkRJTkdfTUVUSE9EUzoKLSAgICAgICAgICAgIGZvciBucywgdHYgaW4gKAotICAgICAgICAgICAgICAgICMgbWljcm9zZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBVU19UT19OUywgMSksCi0gICAgICAgICAgICAgICAgKC0yICogVVNfVE9fTlMsIC0yKSwKIAotICAgICAgICAgICAgICAgICMgbWlsbGlzZWNvbmRzCi0gICAgICAgICAgICAgICAgKDEgKiBNU19UT19OUywgMTAwMCksCi0gICAgICAgICAgICAgICAgKC0yICogTVNfVE9fTlMsIC0yMDAwKSwKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcoUHlUaW1lX0FzTWljcm9zZWNvbmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9kZWNpbWFsX2NvbnZlcnRlcihVU19UT19OUyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5TX1RPX1NFQykKIAotICAgICAgICAgICAgICAgICMgc2Vjb25kcwotICAgICAgICAgICAgICAgICgyICogU0VDX1RPX05TLCAyMDAwMDAwKSwKLSAgICAgICAgICAgICAgICAoLTMgKiBTRUNfVE9fTlMsIC0zMDAwMDAwKSwKLSAgICAgICAgICAgICk6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QobmFub3NlY29uZHM9bnMsIHRpbWV2YWw9dHYsIHJvdW5kPXJuZCk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCB0dikKIAotICAgICAgICBGTE9PUiA9IF9QeVRpbWUuUk9VTkRfRkxPT1IKLSAgICAgICAgQ0VJTElORyA9IF9QeVRpbWUuUk9VTkRfQ0VJTElORwotICAgICAgICBmb3IgbnMsIG1zLCBybmQgaW4gKAotICAgICAgICAgICAgIyBuYW5vc2Vjb25kcwotICAgICAgICAgICAgKDEsIDAsIEZMT09SKSwKLSAgICAgICAgICAgICgxLCAxLCBDRUlMSU5HKSwKLSAgICAgICAgICAgICgtMSwgLTEsIEZMT09SKSwKLSAgICAgICAgICAgICgtMSwgMCwgQ0VJTElORyksCitjbGFzcyBUZXN0T2xkUHlUaW1lKENQeVRpbWVUZXN0Q2FzZSwgdW5pdHRlc3QuVGVzdENhc2UpOgorICAgICIiIgorICAgIFRlc3QgdGhlIG9sZCBDIF9QeVRpbWVfdCBBUEk6IF9QeVRpbWVfT2JqZWN0VG9YWFgoKSBmdW5jdGlvbnMuCisgICAgIiIiCiAKLSAgICAgICAgICAgICMgc2Vjb25kcyArIG5hbm9zZWNvbmRzCi0gICAgICAgICAgICAoMTIzNCAqIFVTX1RPX05TICsgMSwgMTIzNCwgRkxPT1IpLAotICAgICAgICAgICAgKDEyMzQgKiBVU19UT19OUyArIDEsIDEyMzUsIENFSUxJTkcpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNSwgRkxPT1IpLAotICAgICAgICAgICAgKC0xMjM0ICogVVNfVE9fTlMgLSAxLCAtMTIzNCwgQ0VJTElORyksCi0gICAgICAgICk6Ci0gICAgICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdChuYW5vc2Vjb25kcz1ucywgbWlsbGlzZWNvbmRzPW1zLCByb3VuZD1ybmQpOgotICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUHlUaW1lX0FzTWljcm9zZWNvbmRzKG5zLCBybmQpLCBtcykKKyAgICAjIHRpbWVfdCBpcyBhIDMyLWJpdCBvciA2NC1iaXQgc2lnbmVkIGludGVnZXIKKyAgICBPVkVSRkxPV19TRUNPTkRTID0gMiAqKiA2NAorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVfdChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZV90CisKKyAgICAgICAgc2VsZi5jaGVja19pbnRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiBzZWNzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgICAgIHNlbGYuY2hlY2tfZmxvYXRfcm91bmRpbmcocHl0aW1lX29iamVjdF90b190aW1lX3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWNpbWFsX3JvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICBkZWYgY3JlYXRlX2NvbnZlcnRlcihzZWxmLCBzZWNfdG9fdW5pdCk6CisgICAgICAgIGRlZiBjb252ZXJ0ZXIoc2Vjcyk6CisgICAgICAgICAgICBmbG9hdHBhcnQsIGludHBhcnQgPSBtYXRoLm1vZGYoc2VjcykKKyAgICAgICAgICAgIGludHBhcnQgPSBpbnQoaW50cGFydCkKKyAgICAgICAgICAgIGZsb2F0cGFydCAqPSBzZWNfdG9fdW5pdAorICAgICAgICAgICAgZmxvYXRwYXJ0ID0gc2VsZi5kZWNpbWFsX3JvdW5kKGZsb2F0cGFydCkKKyAgICAgICAgICAgIGlmIGZsb2F0cGFydCA8IDA6CisgICAgICAgICAgICAgICAgZmxvYXRwYXJ0ICs9IHNlY190b191bml0CisgICAgICAgICAgICAgICAgaW50cGFydCAtPSAxCisgICAgICAgICAgICBlbGlmIGZsb2F0cGFydCA+PSBzZWNfdG9fdW5pdDoKKyAgICAgICAgICAgICAgICBmbG9hdHBhcnQgLT0gc2VjX3RvX3VuaXQKKyAgICAgICAgICAgICAgICBpbnRwYXJ0ICs9IDEKKyAgICAgICAgICAgIHJldHVybiAoaW50cGFydCwgZmxvYXRwYXJ0KQorICAgICAgICByZXR1cm4gY29udmVydGVyCisKKyAgICBkZWYgdGVzdF9vYmplY3RfdG9fdGltZXZhbChzZWxmKToKKyAgICAgICAgZnJvbSBfdGVzdGNhcGkgaW1wb3J0IHB5dGltZV9vYmplY3RfdG9fdGltZXZhbAorCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFtYmRhIHNlY3M6IChzZWNzLCAwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWVfZmlsdGVyPXNlbGYudGltZV90X2ZpbHRlcikKKworICAgICAgICBzZWxmLmNoZWNrX2Zsb2F0X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXZhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNyZWF0ZV9jb252ZXJ0ZXIoU0VDX1RPX1VTKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YWx1ZV9maWx0ZXI9c2VsZi50aW1lX3RfZmlsdGVyKQorCisgICAgZGVmIHRlc3Rfb2JqZWN0X3RvX3RpbWVzcGVjKHNlbGYpOgorICAgICAgICBmcm9tIF90ZXN0Y2FwaSBpbXBvcnQgcHl0aW1lX29iamVjdF90b190aW1lc3BlYworCisgICAgICAgIHNlbGYuY2hlY2tfaW50X3JvdW5kaW5nKHB5dGltZV9vYmplY3RfdG9fdGltZXNwZWMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxhbWJkYSBzZWNzOiAoc2VjcywgMCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCisKKyAgICAgICAgc2VsZi5jaGVja19mbG9hdF9yb3VuZGluZyhweXRpbWVfb2JqZWN0X3RvX3RpbWVzcGVjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuY3JlYXRlX2NvbnZlcnRlcihTRUNfVE9fTlMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhbHVlX2ZpbHRlcj1zZWxmLnRpbWVfdF9maWx0ZXIpCiAKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdGltZWl0LnB5IGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKaW5kZXggMmRiM2MxYi4uMWE5NWUyOSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90aW1laXQucHkKQEAgLTM1NCw2ICszNTQsMjggQEAKICAgICAgICAgICAgIHMgPSBzZWxmLnJ1bl9tYWluKHN3aXRjaGVzPVsnLW4xJywgJzEvMCddKQogICAgICAgICBzZWxmLmFzc2VydF9leGNfc3RyaW5nKGVycm9yX3N0cmluZ2lvLmdldHZhbHVlKCksICdaZXJvRGl2aXNpb25FcnJvcicpCiAKKyAgICBkZWYgYXV0b3JhbmdlKHNlbGYsIGNhbGxiYWNrPU5vbmUpOgorICAgICAgICB0aW1lciA9IEZha2VUaW1lcihzZWNvbmRzX3Blcl9pbmNyZW1lbnQ9MC4wMDEpCisgICAgICAgIHQgPSB0aW1laXQuVGltZXIoc3RtdD1zZWxmLmZha2Vfc3RtdCwgc2V0dXA9c2VsZi5mYWtlX3NldHVwLCB0aW1lcj10aW1lcikKKyAgICAgICAgcmV0dXJuIHQuYXV0b3JhbmdlKGNhbGxiYWNrKQorCisgICAgZGVmIHRlc3RfYXV0b3JhbmdlKHNlbGYpOgorICAgICAgICBudW1fbG9vcHMsIHRpbWVfdGFrZW4gPSBzZWxmLmF1dG9yYW5nZSgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobnVtX2xvb3BzLCAxMDAwKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRpbWVfdGFrZW4sIDEuMCkKKworICAgIGRlZiB0ZXN0X2F1dG9yYW5nZV93aXRoX2NhbGxiYWNrKHNlbGYpOgorICAgICAgICBkZWYgY2FsbGJhY2soYSwgYik6CisgICAgICAgICAgICBwcmludCgie30gezouM2Z9Ii5mb3JtYXQoYSwgYikpCisgICAgICAgIHdpdGggY2FwdHVyZWRfc3Rkb3V0KCkgYXMgczoKKyAgICAgICAgICAgIG51bV9sb29wcywgdGltZV90YWtlbiA9IHNlbGYuYXV0b3JhbmdlKGNhbGxiYWNrKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bV9sb29wcywgMTAwMCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0aW1lX3Rha2VuLCAxLjApCisgICAgICAgIGV4cGVjdGVkID0gKCcxMCAwLjAxMFxuJworICAgICAgICAgICAgICAgICAgICAnMTAwIDAuMTAwXG4nCisgICAgICAgICAgICAgICAgICAgICcxMDAwIDEuMDAwXG4nKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHMuZ2V0dmFsdWUoKSwgZXhwZWN0ZWQpCisKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkgYi9MaWIvdGVzdC90ZXN0X3Rva2VuaXplLnB5CmluZGV4IDNiMTdjYTYuLjVhODFhNWYgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9rZW5pemUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b2tlbml6ZS5weQpAQCAtNCw2ICs0LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG9wZW4gYXMgdG9rZW5pemVfb3BlbiwgVW50b2tlbml6ZXIpCiBmcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBUZXN0Q2FzZSwgbW9jaworZnJvbSB0ZXN0LnRlc3RfZ3JhbW1hciBpbXBvcnQgKFZBTElEX1VOREVSU0NPUkVfTElURVJBTFMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTKQogaW1wb3J0IG9zCiBpbXBvcnQgdG9rZW4KIApAQCAtMjQsOCArMjYsNyBAQAogICAgICAgICAgICAgaWYgdHlwZSA9PSBFTkRNQVJLRVI6CiAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgIHR5cGUgPSB0b2tfbmFtZVt0eXBlXQotICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgiICAgICUodHlwZSktMTAuMTBzICUodG9rZW4pLTEzLjEzciAlKHN0YXJ0KXMgJShlbmQpcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHMoKSkKKyAgICAgICAgICAgIHJlc3VsdC5hcHBlbmQoZiIgICAge3R5cGU6MTB9IHt0b2tlbiFyOjEzfSB7c3RhcnR9IHtlbmR9IikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgWyIgICAgRU5DT0RJTkcgICAndXRmLTgnICAgICAgICgwLCAwKSAoMCwgMCkiXSArCiAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwZWN0ZWQucnN0cmlwKCkuc3BsaXRsaW5lcygpKQpAQCAtMTMyLDE4ICsxMzMsMTggQEAKICAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgieCA9IDB4ZmZmZmZmZmZmZmYiLCAiIiJcCiAgICAgTkFNRSAgICAgICAneCcgICAgICAgICAgICgxLCAwKSAoMSwgMSkKICAgICBPUCAgICAgICAgICc9JyAgICAgICAgICAgKDEsIDIpICgxLCAzKQotICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZiAoMSwgNCkgKDEsIDE3KQorICAgIE5VTUJFUiAgICAgJzB4ZmZmZmZmZmZmZmYnICgxLCA0KSAoMSwgMTcpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gMTIzMTQxMjQyMTUxMjUxNjE2MTEwIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKLSAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEgKDEsIDQpICgxLCAyNSkKKyAgICBOVU1CRVIgICAgICcxMjMxNDEyNDIxNTEyNTE2MTYxMTAnICgxLCA0KSAoMSwgMjUpCiAgICAgIiIiKQogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gLTE1OTIxNTkwMjE1MDEyNTkxIiwgIiIiXAogICAgIE5BTUUgICAgICAgJ3gnICAgICAgICAgICAoMSwgMCkgKDEsIDEpCiAgICAgT1AgICAgICAgICAnPScgICAgICAgICAgICgxLCAyKSAoMSwgMykKICAgICBPUCAgICAgICAgICctJyAgICAgICAgICAgKDEsIDQpICgxLCA1KQotICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MCAoMSwgNSkgKDEsIDIyKQorICAgIE5VTUJFUiAgICAgJzE1OTIxNTkwMjE1MDEyNTkxJyAoMSwgNSkgKDEsIDIyKQogICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Zsb2F0KHNlbGYpOgpAQCAtMTg2LDYgKzE4NywyMSBAQAogICAgIE5VTUJFUiAgICAgJzMuMTRlMTU5JyAgICAoMSwgNCkgKDEsIDEyKQogICAgICIiIikKIAorICAgIGRlZiB0ZXN0X3VuZGVyc2NvcmVfbGl0ZXJhbHMoc2VsZik6CisgICAgICAgIGRlZiBudW1iZXJfdG9rZW4ocyk6CisgICAgICAgICAgICBmID0gQnl0ZXNJTyhzLmVuY29kZSgndXRmLTgnKSkKKyAgICAgICAgICAgIGZvciB0b2t0eXBlLCB0b2tlbiwgc3RhcnQsIGVuZCwgbGluZSBpbiB0b2tlbml6ZShmLnJlYWRsaW5lKToKKyAgICAgICAgICAgICAgICBpZiB0b2t0eXBlID09IE5VTUJFUjoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRva2VuCisgICAgICAgICAgICByZXR1cm4gJ2ludmFsaWQgdG9rZW4nCisgICAgICAgIGZvciBsaXQgaW4gVkFMSURfVU5ERVJTQ09SRV9MSVRFUkFMUzoKKyAgICAgICAgICAgIGlmICcoJyBpbiBsaXQ6CisgICAgICAgICAgICAgICAgIyB0aGlzIHdvbid0IHdvcmsgd2l0aCBjb21wb3VuZCBjb21wbGV4IGlucHV0cworICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG51bWJlcl90b2tlbihsaXQpLCBsaXQpCisgICAgICAgIGZvciBsaXQgaW4gSU5WQUxJRF9VTkRFUlNDT1JFX0xJVEVSQUxTOgorICAgICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChudW1iZXJfdG9rZW4obGl0KSwgbGl0KQorCiAgICAgZGVmIHRlc3Rfc3RyaW5nKHNlbGYpOgogICAgICAgICAjIFN0cmluZyBsaXRlcmFscwogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJ4ID0gJyc7IHkgPSBcIlwiIiwgIiIiXApAQCAtMzA3LDYgKzMyMyw1MCBAQAogICAgIE9QICAgICAgICAgJysnICAgICAgICAgICAoMSwgMjgpICgxLCAyOSkKICAgICBTVFJJTkcgICAgICdSQiJhYmMiJyAgICAgKDEsIDMwKSAoMSwgMzcpCiAgICAgIiIiKQorICAgICAgICAjIENoZWNrIDAsIDEsIGFuZCAyIGNoYXJhY3RlciBzdHJpbmcgcHJlZml4ZXMuCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUociciYVwKK2RlXAorZmciJywgIiIiXAorICAgIFNUUklORyAgICAgJyJhXFxcXFxcbmRlXFxcXFxcbmZnIlwnICgxLCAwKSAoMywgMykKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1ImFcCitkZSInLCAiIiJcCisgICAgU1RSSU5HICAgICAndSJhXFxcXFxcbmRlIlwnICAoMSwgMCkgKDIsIDMpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHIncmIiYVwKK2QiJywgIiIiXAorICAgIFNUUklORyAgICAgJ3JiImFcXFxcXFxuZCJcJyAgKDEsIDApICgyLCAyKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJyIiImFcCitiIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ1wiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocid1IiIiYVwKK2IiIiInLCAiIiJcCisgICAgU1RSSU5HICAgICAndVwiXCIiYVxcXFxcXG5iXCJcIiInICgxLCAwKSAoMiwgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUocidyYiIiImFcCitiXAorYyIiIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdyYiJcIiJhXFxcXFxcbmJcXFxcXFxuYyJcIiInICgxLCAwKSAoMywgNCkKKyAgICAiIiIpCisgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoJ2YiYWJjIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiYyInICAgICAgKDEsIDApICgxLCA2KQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZSgnZlIiYXtifWMiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZSImF7Yn1jIicgICAoMSwgMCkgKDEsIDkpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCdmIiIiYWJjIiIiJywgIiIiXAorICAgIFNUUklORyAgICAgJ2ZcIlwiXCJhYmNcIlwiXCInICAoMSwgMCkgKDEsIDEwKQorICAgICIiIikKKyAgICAgICAgc2VsZi5jaGVja190b2tlbml6ZShyJ2YiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdmImFiY1xcXFxcXG5kZWYiJyAoMSwgMCkgKDIsIDQpCisgICAgIiIiKQorICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKHInUmYiYWJjXAorZGVmIicsICIiIlwKKyAgICBTVFJJTkcgICAgICdSZiJhYmNcXFxcXFxuZGVmIicgKDEsIDApICgyLCA0KQorICAgICIiIikKIAogICAgIGRlZiB0ZXN0X2Z1bmN0aW9uKHNlbGYpOgogICAgICAgICBzZWxmLmNoZWNrX3Rva2VuaXplKCJkZWYgZDIyKGEsIGIsIGM9MiwgZD0yLCAqayk6IHBhc3MiLCAiIiJcCkBAIC01MDUsNyArNTY1LDcgQEAKICAgICAgICAgIyBNZXRob2RzCiAgICAgICAgIHNlbGYuY2hlY2tfdG9rZW5pemUoIkBzdGF0aWNtZXRob2RcbmRlZiBmb28oeCx5KTogcGFzcyIsICIiIlwKICAgICBPUCAgICAgICAgICdAJyAgICAgICAgICAgKDEsIDApICgxLCAxKQotICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCAoMSwgMSkgKDEsIDEzKQorICAgIE5BTUUgICAgICAgJ3N0YXRpY21ldGhvZCcgKDEsIDEpICgxLCAxMykKICAgICBORVdMSU5FICAgICdcXG4nICAgICAgICAgICgxLCAxMykgKDEsIDE0KQogICAgIE5BTUUgICAgICAgJ2RlZicgICAgICAgICAoMiwgMCkgKDIsIDMpCiAgICAgTkFNRSAgICAgICAnZm9vJyAgICAgICAgICgyLCA0KSAoMiwgNykKQEAgLTE0ODgsMTAgKzE1NDgsMTAgQEAKIAogICAgICAgICAjIFRva2VuaXplIGlzIGJyb2tlbiBvbiB0ZXN0X3BlcDMxMzEucHkgYmVjYXVzZSByZWd1bGFyIGV4cHJlc3Npb25zIGFyZQogICAgICAgICAjIGJyb2tlbiBvbiB0aGUgb2JzY3VyZSB1bmljb2RlIGlkZW50aWZpZXJzIGluIGl0LiAqc2lnaCoKLSAgICAgICAgIyBXaXRoIHJvdW5kdHJpcCBleHRlbmRlZCB0byB0ZXN0IHRoZSA1LXR1cGxlIG1vZGUgb2YgIHVudG9rZW5pemUsCisgICAgICAgICMgV2l0aCByb3VuZHRyaXAgZXh0ZW5kZWQgdG8gdGVzdCB0aGUgNS10dXBsZSBtb2RlIG9mIHVudG9rZW5pemUsCiAgICAgICAgICMgNyBtb3JlIHRlc3RmaWxlcyBmYWlsLiAgUmVtb3ZlIHRoZW0gYWxzbyB1bnRpbCB0aGUgZmFpbHVyZSBpcyBkaWFnbm9zZWQuCiAKLSAgICAgICAgdGVzdGZpbGVzLnJlbW92ZShvcy5wYXRoLmpvaW4odGVtcGRpciwgInRlc3RfcGVwMzEzMS5weSIpKQorICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF91bmljb2RlX2lkZW50aWZpZXJzLnB5IikpCiAgICAgICAgIGZvciBmIGluICgnYnVmZmVyJywgJ2J1aWx0aW4nLCAnZmlsZWlvJywgJ2luc3BlY3QnLCAnb3MnLCAncGxhdGZvcm0nLCAnc3lzJyk6CiAgICAgICAgICAgICB0ZXN0ZmlsZXMucmVtb3ZlKG9zLnBhdGguam9pbih0ZW1wZGlyLCAidGVzdF8lcy5weSIpICUgZikKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvX19pbml0X18ucHkKaW5kZXggMDRjODcyNi4uNGQwZmNhMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy9fX2luaXRfXy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL19faW5pdF9fLnB5CkBAIC0zLDcgKzMsNiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaW1wb3J0bGliCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKLWZyb20gZm5tYXRjaCBpbXBvcnQgZm5tYXRjaAogCiBiYXNlcGF0aCA9IG9zLnBhdGguZGlybmFtZSggICAgICAgICAgICAgICAgICMgPHNyYy9pbnN0YWxsIGRpcj4KICAgICAgICAgICAgICAgICBvcy5wYXRoLmRpcm5hbWUoICAgICAgICAgICAgICAgICMgTGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfZ3Byb2YyaHRtbC5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CmluZGV4IDBjMjk0ZWMuLjk0ODllZDkgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9ncHJvZjJodG1sLnB5CkBAIC0yLDEyICsyLDExIEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHVuaXR0ZXN0IGltcG9ydCBtb2NrCiBpbXBvcnQgdGVtcGZpbGUKIAotZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZywgaW1wb3J0X3Rvb2wKK2Zyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCiAKIHNraXBfaWZfbWlzc2luZygpCiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfbWQ1c3VtLnB5CmluZGV4IDEzMDUyOTUuLmZiNTY1YjcgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9tZDVzdW0ucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X21kNXN1bS5weQpAQCAtMSwxMiArMSwxMSBAQAogIiIiVGVzdHMgZm9yIHRoZSBtZDVzdW0gc2NyaXB0IGluIHRoZSBUb29scyBkaXJlY3RvcnkuIiIiCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogCi1mcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2NyaXB0c2RpciwgaW1wb3J0X3Rvb2wsIHNraXBfaWZfbWlzc2luZworZnJvbSB0ZXN0LnRlc3RfdG9vbHMgaW1wb3J0IHNjcmlwdHNkaXIsIHNraXBfaWZfbWlzc2luZwogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkgYi9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfcGRlcHMucHkKaW5kZXggMDkxZmE2YS4uMjdjYmZlMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90b29scy90ZXN0X3BkZXBzLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF9wZGVwcy5weQpAQCAtMSwxMiArMSwxMCBAQAogIiIiVGVzdHMgZm9yIHRoZSBwZGVwcyBzY3JpcHQgaW4gdGhlIFRvb2xzIGRpcmVjdG9yeS4iIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB0ZW1wZmlsZQotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKLWZyb20gdGVzdC50ZXN0X3Rvb2xzIGltcG9ydCBzY3JpcHRzZGlyLCBza2lwX2lmX21pc3NpbmcsIGltcG9ydF90b29sCitmcm9tIHRlc3QudGVzdF90b29scyBpbXBvcnQgc2tpcF9pZl9taXNzaW5nLCBpbXBvcnRfdG9vbAogCiBza2lwX2lmX21pc3NpbmcoKQogCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3Rvb2xzL3Rlc3RfdW5wYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CmluZGV4IDczNGJiYzIuLjY1ZGVlMWIgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdG9vbHMvdGVzdF91bnBhcnNlLnB5CkBAIC0xMzQsNiArMTM0LDExIEBACiBjbGFzcyBVbnBhcnNlVGVzdENhc2UoQVNUVGVzdENhc2UpOgogICAgICMgVGVzdHMgZm9yIHNwZWNpZmljIGJ1Z3MgZm91bmQgaW4gZWFybGllciB2ZXJzaW9ucyBvZiB1bnBhcnNlCiAKKyAgICBkZWYgdGVzdF9mc3RyaW5ncyhzZWxmKToKKyAgICAgICAgIyBTZWUgaXNzdWUgMjUxODAKKyAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAociIiImYne2YiezB9IiozfSciIiIpCisgICAgICAgIHNlbGYuY2hlY2tfcm91bmR0cmlwKHIiIiJmJ3tmInt5fSIqM30nIiIiKQorCiAgICAgZGVmIHRlc3RfZGVsX3N0YXRlbWVudChzZWxmKToKICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoImRlbCB4LCB5LCB6IikKIApAQCAtMjc5LDggKzI4NCwxOCBAQAogICAgICAgICBmb3IgZmlsZW5hbWUgaW4gbmFtZXM6CiAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKICAgICAgICAgICAgICAgICBwcmludCgnVGVzdGluZyAlcycgJSBmaWxlbmFtZSkKLSAgICAgICAgICAgIHNvdXJjZSA9IHJlYWRfcHlmaWxlKGZpbGVuYW1lKQotICAgICAgICAgICAgc2VsZi5jaGVja19yb3VuZHRyaXAoc291cmNlKQorCisgICAgICAgICAgICAjIFNvbWUgZi1zdHJpbmdzIGFyZSBub3QgY29ycmVjdGx5IHJvdW5kLXRyaXBwZWQgYnkKKyAgICAgICAgICAgICMgIFRvb2xzL3BhcnNlci91bnBhcnNlLnB5LiAgU2VlIGlzc3VlIDI4MDAyIGZvciBkZXRhaWxzLgorICAgICAgICAgICAgIyAgV2UgbmVlZCB0byBza2lwIGZpbGVzIHRoYXQgY29udGFpbiBzdWNoIGYtc3RyaW5ncy4KKyAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoZmlsZW5hbWUpIGluICgndGVzdF9mc3RyaW5nLnB5JywgKToKKyAgICAgICAgICAgICAgICBpZiB0ZXN0LnN1cHBvcnQudmVyYm9zZToKKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoZidTa2lwcGluZyB7ZmlsZW5hbWV9OiBzZWUgaXNzdWUgMjgwMDInKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KGZpbGVuYW1lPWZpbGVuYW1lKToKKyAgICAgICAgICAgICAgICBzb3VyY2UgPSByZWFkX3B5ZmlsZShmaWxlbmFtZSkKKyAgICAgICAgICAgICAgICBzZWxmLmNoZWNrX3JvdW5kdHJpcChzb3VyY2UpCiAKIAogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlLnB5CmluZGV4IDAzZGZmODQuLjFkODk0YWEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHJhY2UucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90cmFjZS5weQpAQCAtMSwxMSArMSwxMSBAQAogaW1wb3J0IG9zCi1pbXBvcnQgaW8KIGltcG9ydCBzeXMKIGZyb20gdGVzdC5zdXBwb3J0IGltcG9ydCBURVNURk4sIHJtdHJlZSwgdW5saW5rLCBjYXB0dXJlZF9zdGRvdXQKK2Zyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQogaW1wb3J0IHVuaXR0ZXN0CiAKIGltcG9ydCB0cmFjZQotZnJvbSB0cmFjZSBpbXBvcnQgQ292ZXJhZ2VSZXN1bHRzLCBUcmFjZQorZnJvbSB0cmFjZSBpbXBvcnQgVHJhY2UKIAogZnJvbSB0ZXN0LnRyYWNlZG1vZHVsZXMgaW1wb3J0IHRlc3Rtb2QKIApAQCAtMzY1LDUxICszNjUsMjcgQEAKICAgICAgICAgIyBNYXRjaGVkIGJlZm9yZS4KICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGlnbm9yZS5uYW1lcyhqbignYmFyJywgJ2Jhei5weScpLCAnYmF6JykpCiAKK2NsYXNzIFRlc3RDb21tYW5kTGluZSh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKLWNsYXNzIFRlc3REZXByZWNhdGVkTWV0aG9kcyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfZmFpbHVyZXMoc2VsZik6CisgICAgICAgIF9lcnJvcnMgPSAoCisgICAgICAgICAgICAoYidmaWxlbmFtZSBpcyBtaXNzaW5nOiByZXF1aXJlZCB3aXRoIHRoZSBtYWluIG9wdGlvbnMnLCAnLWwnLCAnLVQnKSwKKyAgICAgICAgICAgIChiJ2Nhbm5vdCBzcGVjaWZ5IGJvdGggLS1saXN0ZnVuY3MgYW5kICgtLXRyYWNlIG9yIC0tY291bnQpJywgJy1sYycpLAorICAgICAgICAgICAgKGInYXJndW1lbnQgLVIvLS1uby1yZXBvcnQ6IG5vdCBhbGxvd2VkIHdpdGggYXJndW1lbnQgLXIvLS1yZXBvcnQnLCAnLXJSJyksCisgICAgICAgICAgICAoYidtdXN0IHNwZWNpZnkgb25lIG9mIC0tdHJhY2UsIC0tY291bnQsIC0tcmVwb3J0LCAtLWxpc3RmdW5jcywgb3IgLS10cmFja2NhbGxzJywgJy1nJyksCisgICAgICAgICAgICAoYictci8tLXJlcG9ydCByZXF1aXJlcyAtZi8tLWZpbGUnLCAnLXInKSwKKyAgICAgICAgICAgIChiJy0tc3VtbWFyeSBjYW4gb25seSBiZSB1c2VkIHdpdGggLS1jb3VudCBvciAtLXJlcG9ydCcsICctc1QnKSwKKyAgICAgICAgICAgIChiJ3VucmVjb2duaXplZCBhcmd1bWVudHM6IC15JywgJy15JykpCisgICAgICAgIGZvciBtZXNzYWdlLCAqYXJncyBpbiBfZXJyb3JzOgorICAgICAgICAgICAgKl8sIHN0ZGVyciA9IGFzc2VydF9weXRob25fZmFpbHVyZSgnLW0nLCAndHJhY2UnLCAqYXJncykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4obWVzc2FnZSwgc3RkZXJyKQogCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF91c2FnZShzZWxmKToKLSAgICAgICAgc2lvID0gaW8uU3RyaW5nSU8oKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHRyYWNlLnVzYWdlKHNpbykKLSAgICAgICAgc2VsZi5hc3NlcnRJbignVXNhZ2U6Jywgc2lvLmdldHZhbHVlKCkpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX0lnbm9yZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5JZ25vcmUoKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9tb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5tb2RuYW1lKCJzcGFtIikpCi0KLSAgICBkZWYgdGVzdF9kZXByZWNhdGVkX2Z1bGxtb2RuYW1lKHNlbGYpOgotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInNwYW0iLCB0cmFjZS5mdWxsbW9kbmFtZSgic3BhbSIpKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX2xpbmVzX2Zyb21fY29kZShzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lc19mcm9tX2NvZGUoZm9vLl9fY29kZV9fLCBbImVnZ3MiXSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9saW5lcyhzZWxmKToKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICBkZWYgZm9vKCk6Ci0gICAgICAgICAgICAgICAgcGFzcwotICAgICAgICAgICAgdHJhY2UuZmluZF9saW5lcyhmb28uX19jb2RlX18sIFsiZWdncyJdKQotCi0gICAgZGVmIHRlc3RfZGVwcmVjYXRlZF9maW5kX3N0cmluZ3Moc2VsZik6CisgICAgZGVmIHRlc3RfbGlzdGZ1bmNzX2ZsYWdfc3VjY2VzcyhzZWxmKToKICAgICAgICAgd2l0aCBvcGVuKFRFU1RGTiwgJ3cnKSBhcyBmZDoKICAgICAgICAgICAgIHNlbGYuYWRkQ2xlYW51cCh1bmxpbmssIFRFU1RGTikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6Ci0gICAgICAgICAgICB0cmFjZS5maW5kX3N0cmluZ3MoZmQubmFtZSkKLQotICAgIGRlZiB0ZXN0X2RlcHJlY2F0ZWRfZmluZF9leGVjdXRhYmxlX2xpbmVub3Moc2VsZik6Ci0gICAgICAgIHdpdGggb3BlbihURVNURk4sICd3JykgYXMgZmQ6Ci0gICAgICAgICAgICBzZWxmLmFkZENsZWFudXAodW5saW5rLCBURVNURk4pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgdHJhY2UuZmluZF9leGVjdXRhYmxlX2xpbmVub3MoZmQubmFtZSkKLQorICAgICAgICAgICAgZmQud3JpdGUoImEgPSAxXG4iKQorICAgICAgICAgICAgc3RhdHVzLCBzdGRvdXQsIHN0ZGVyciA9IGFzc2VydF9weXRob25fb2soJy1tJywgJ3RyYWNlJywgJy1sJywgVEVTVEZOKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihiJ2Z1bmN0aW9ucyBjYWxsZWQ6Jywgc3Rkb3V0KQogCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIHVuaXR0ZXN0Lm1haW4oKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZWJhY2sucHkgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQppbmRleCA0OWNlZGRhLi43Mjc2YmM3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlYmFjay5weQpAQCAtMTI1LDEyICsxMjUsMTIgQEAKICAgICAgICAgZGVmIGRvX3Rlc3QoZmlyc3RsaW5lcywgbWVzc2FnZSwgY2hhcnNldCwgbGluZW5vKToKICAgICAgICAgICAgICMgUmFpc2UgdGhlIG1lc3NhZ2UgaW4gYSBzdWJwcm9jZXNzLCBhbmQgY2F0Y2ggdGhlIG91dHB1dAogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIG91dHB1dCA9IG9wZW4oVEVTVEZOLCAidyIsIGVuY29kaW5nPWNoYXJzZXQpCi0gICAgICAgICAgICAgICAgb3V0cHV0LndyaXRlKCIiInswfWlmIDE6Ci0gICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7Ci0gICAgICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcignezF9JykKLSAgICAgICAgICAgICAgICAgICAgIiIiLmZvcm1hdChmaXJzdGxpbmVzLCBtZXNzYWdlKSkKLSAgICAgICAgICAgICAgICBvdXRwdXQuY2xvc2UoKQorICAgICAgICAgICAgICAgIHdpdGggb3BlbihURVNURk4sICJ3IiwgZW5jb2Rpbmc9Y2hhcnNldCkgYXMgb3V0cHV0OgorICAgICAgICAgICAgICAgICAgICBvdXRwdXQud3JpdGUoIiIiezB9aWYgMToKKyAgICAgICAgICAgICAgICAgICAgICAgIGltcG9ydCB0cmFjZWJhY2s7CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoJ3sxfScpCisgICAgICAgICAgICAgICAgICAgICAgICAiIiIuZm9ybWF0KGZpcnN0bGluZXMsIG1lc3NhZ2UpKQorCiAgICAgICAgICAgICAgICAgcHJvY2VzcyA9IHN1YnByb2Nlc3MuUG9wZW4oW3N5cy5leGVjdXRhYmxlLCBURVNURk5dLAogICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9c3VicHJvY2Vzcy5QSVBFLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpCiAgICAgICAgICAgICAgICAgc3Rkb3V0LCBzdGRlcnIgPSBwcm9jZXNzLmNvbW11bmljYXRlKCkKQEAgLTE3MSw4ICsxNzEsOCBAQAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQogICAgICAgICAgICAgZG9fdGVzdCgiIFx0XGZcbiMgY29kaW5nOiB7MH1cbiIuZm9ybWF0KGNoYXJzZXQpLAogICAgICAgICAgICAgICAgICAgICB0ZXh0LCBjaGFyc2V0LCA1KQotICAgICAgICAjIElzc3VlICMxODk2MDogY29kaW5nIHNwZWMgc2hvdWxkIGhhcyBubyBlZmZlY3QKLSAgICAgICAgZG9fdGVzdCgiMFxuIyBjb2Rpbmc6IEdCS1xuIiwgImhceGU5IGhvIiwgJ3V0Zi04JywgNSkKKyAgICAgICAgIyBJc3N1ZSAjMTg5NjA6IGNvZGluZyBzcGVjIHNob3VsZCBoYXZlIG5vIGVmZmVjdAorICAgICAgICBkb190ZXN0KCJ4PTBcbiMgY29kaW5nOiBHQktcbiIsICJoXHhlOSBobyIsICd1dGYtOCcsIDUpCiAKICAgICBAc3VwcG9ydC5yZXF1aXJlc190eXBlX2NvbGxlY3RpbmcKICAgICBkZWYgdGVzdF9wcmludF90cmFjZWJhY2tfYXRfZXhpdChzZWxmKToKQEAgLTI5OSw2ICsyOTksMTM3IEBACiAgICAgICAgICAgICAnICAgIHRyYWNlYmFjay5wcmludF9zdGFjaygpJywKICAgICAgICAgXSkKIAorICAgICMgaXNzdWUgMjY4MjMgLSBTaHJpbmsgcmVjdXJzaXZlIHRyYWNlYmFja3MKKyAgICBkZWYgX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheShzZWxmLCByZW5kZXJfZXhjKToKKyAgICAgICAgIyBBbHdheXMgc2hvdyBmdWxsIGRpZmZzIHdoZW4gdGhpcyB0ZXN0IGZhaWxzCisgICAgICAgICMgTm90ZSB0aGF0IHJlYXJyYW5naW5nIHRoaW5ncyBtYXkgcmVxdWlyZSBhZGp1c3RpbmcKKyAgICAgICAgIyB0aGUgcmVsYXRpdmUgbGluZSBudW1iZXJzIGluIHRoZSBleHBlY3RlZCB0cmFjZWJhY2tzCisgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKworICAgICAgICAjIENoZWNrIGhpdHRpbmcgdGhlIHJlY3Vyc2lvbiBsaW1pdAorICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgZigpCisKKyAgICAgICAgd2l0aCBjYXB0dXJlZF9vdXRwdXQoInN0ZGVyciIpIGFzIHN0ZGVycl9mOgorICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgIGYoKQorICAgICAgICAgICAgZXhjZXB0IFJlY3Vyc2lvbkVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyByZWN1cnNpb24gb2NjdXJyZWQiKQorCisgICAgICAgIGxpbmVub19mID0gZi5fX2NvZGVfXy5jb19maXJzdGxpbmVubworICAgICAgICByZXN1bHRfZiA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzV9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9fZisxfSwgaW4gZlxuJworICAgICAgICAgICAgJyAgICBmKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2YrMX0sIGluIGZcbicKKyAgICAgICAgICAgICcgICAgZigpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19mKzF9LCBpbiBmXG4nCisgICAgICAgICAgICAnICAgIGYoKVxuJworICAgICAgICAgICAgIyBYWFg6IFRoZSBmb2xsb3dpbmcgbGluZSBjaGFuZ2VzIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoZSB0ZXN0cworICAgICAgICAgICAgIyBhcmUgcnVuIHRocm91Z2ggdGhlIGludGVyYWN0aXZlIGludGVycHJldGVyIG9yIHdpdGggLW0KKyAgICAgICAgICAgICMgSXQgYWxzbyB2YXJpZXMgZGVwZW5kaW5nIG9uIHRoZSBwbGF0Zm9ybSAoc3RhY2sgc2l6ZSkKKyAgICAgICAgICAgICMgRm9ydHVuYXRlbHksIHdlIGRvbid0IGNhcmUgYWJvdXQgZXhhY3RuZXNzIGhlcmUsIHNvIHdlIHVzZSByZWdleAorICAgICAgICAgICAgcicgIFxbUHJldmlvdXMgbGluZSByZXBlYXRlZCAoXGQrKSBtb3JlIHRpbWVzXF0nICdcbicKKyAgICAgICAgICAgICdSZWN1cnNpb25FcnJvcjogbWF4aW11bSByZWN1cnNpb24gZGVwdGggZXhjZWVkZWRcbicKKyAgICAgICAgKQorCisgICAgICAgIGV4cGVjdGVkID0gcmVzdWx0X2Yuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9mLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisKKyAgICAgICAgIyBDaGVjayB0aGUgb3V0cHV0IHRleHQgbWF0Y2hlcyBleHBlY3RhdGlvbnMKKyAgICAgICAgIyAybmQgbGFzdCBsaW5lIGNvbnRhaW5zIHRoZSByZXBldGl0aW9uIGNvdW50CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsWzotMl0sIGV4cGVjdGVkWzotMl0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmVnZXgoYWN0dWFsWy0yXSwgZXhwZWN0ZWRbLTJdKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGFjdHVhbFstMV0sIGV4cGVjdGVkWy0xXSkKKworICAgICAgICAjIENoZWNrIHRoZSByZWN1cnNpb24gY291bnQgaXMgcm91Z2hseSBhcyBleHBlY3RlZAorICAgICAgICByZWNfbGltaXQgPSBzeXMuZ2V0cmVjdXJzaW9ubGltaXQoKQorICAgICAgICBzZWxmLmFzc2VydEluKGludChyZS5zZWFyY2gociJcZCsiLCBhY3R1YWxbLTJdKS5ncm91cCgpKSwgcmFuZ2UocmVjX2xpbWl0LTYwLCByZWNfbGltaXQpKQorCisgICAgICAgICMgQ2hlY2sgYSBrbm93biAobGltaXRlZCkgbnVtYmVyIG9mIHJlY3Vyc2l2ZSBpbnZvY2F0aW9ucworICAgICAgICBkZWYgZyhjb3VudD0xMCk6CisgICAgICAgICAgICBpZiBjb3VudDoKKyAgICAgICAgICAgICAgICByZXR1cm4gZyhjb3VudC0xKQorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfZzoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBnKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9fZyA9IGcuX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2cgPSAoCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzJ9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJldHVybiBnKGNvdW50LTEpXG4nCisgICAgICAgICAgICAnICBbUHJldmlvdXMgbGluZSByZXBlYXRlZCA2IG1vcmUgdGltZXNdXG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzN9LCBpbiBnXG4nCisgICAgICAgICAgICAnICAgIHJhaXNlIFZhbHVlRXJyb3JcbicKKyAgICAgICAgICAgICdWYWx1ZUVycm9yXG4nCisgICAgICAgICkKKyAgICAgICAgdGJfbGluZSA9ICgKKyAgICAgICAgICAgICdUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4nCisgICAgICAgICAgICBmJyAgRmlsZSAie19fZmlsZV9ffSIsIGxpbmUge2xpbmVub19nKzd9LCBpbiBfY2hlY2tfcmVjdXJzaXZlX3RyYWNlYmFja19kaXNwbGF5XG4nCisgICAgICAgICAgICAnICAgIGcoKVxuJworICAgICAgICApCisgICAgICAgIGV4cGVjdGVkID0gKHRiX2xpbmUgKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9nLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgICAgICAjIENoZWNrIDIgZGlmZmVyZW50IHJlcGV0aXRpdmUgc2VjdGlvbnMKKyAgICAgICAgZGVmIGgoY291bnQ9MTApOgorICAgICAgICAgICAgaWYgY291bnQ6CisgICAgICAgICAgICAgICAgcmV0dXJuIGgoY291bnQtMSkKKyAgICAgICAgICAgIGcoKQorCisgICAgICAgIHdpdGggY2FwdHVyZWRfb3V0cHV0KCJzdGRlcnIiKSBhcyBzdGRlcnJfaDoKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBoKCkKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yIGFzIGV4YzoKKyAgICAgICAgICAgICAgICByZW5kZXJfZXhjKCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCJubyB2YWx1ZSBlcnJvciB3YXMgcmFpc2VkIikKKworICAgICAgICBsaW5lbm9faCA9IGguX19jb2RlX18uY29fZmlyc3RsaW5lbm8KKyAgICAgICAgcmVzdWx0X2ggPSAoCisgICAgICAgICAgICAnVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOlxuJworICAgICAgICAgICAgZicgIEZpbGUgIntfX2ZpbGVfX30iLCBsaW5lIHtsaW5lbm9faCs3fSwgaW4gX2NoZWNrX3JlY3Vyc2l2ZV90cmFjZWJhY2tfZGlzcGxheVxuJworICAgICAgICAgICAgJyAgICBoKClcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grMn0sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgcmV0dXJuIGgoY291bnQtMSlcbicKKyAgICAgICAgICAgICcgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkIDYgbW9yZSB0aW1lc11cbicKKyAgICAgICAgICAgIGYnICBGaWxlICJ7X19maWxlX199IiwgbGluZSB7bGluZW5vX2grM30sIGluIGhcbicKKyAgICAgICAgICAgICcgICAgZygpXG4nCisgICAgICAgICkKKyAgICAgICAgZXhwZWN0ZWQgPSAocmVzdWx0X2ggKyByZXN1bHRfZykuc3BsaXRsaW5lcygpCisgICAgICAgIGFjdHVhbCA9IHN0ZGVycl9oLmdldHZhbHVlKCkuc3BsaXRsaW5lcygpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCBleHBlY3RlZCkKKworICAgIGRlZiB0ZXN0X3JlY3Vyc2l2ZV90cmFjZWJhY2tfcHl0aG9uKHNlbGYpOgorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkodHJhY2ViYWNrLnByaW50X2V4YykKKworICAgIEBjcHl0aG9uX29ubHkKKyAgICBkZWYgdGVzdF9yZWN1cnNpdmVfdHJhY2ViYWNrX2NweXRob25faW50ZXJuYWwoc2VsZik6CisgICAgICAgIGZyb20gX3Rlc3RjYXBpIGltcG9ydCBleGNlcHRpb25fcHJpbnQKKyAgICAgICAgZGVmIHJlbmRlcl9leGMoKToKKyAgICAgICAgICAgIGV4Y190eXBlLCBleGNfdmFsdWUsIGV4Y190YiA9IHN5cy5leGNfaW5mbygpCisgICAgICAgICAgICBleGNlcHRpb25fcHJpbnQoZXhjX3ZhbHVlKQorICAgICAgICBzZWxmLl9jaGVja19yZWN1cnNpdmVfdHJhY2ViYWNrX2Rpc3BsYXkocmVuZGVyX2V4YykKKwogICAgIGRlZiB0ZXN0X2Zvcm1hdF9zdGFjayhzZWxmKToKICAgICAgICAgZGVmIGZtdCgpOgogICAgICAgICAgICAgcmV0dXJuIHRyYWNlYmFjay5mb3JtYXRfc3RhY2soKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weSBiL0xpYi90ZXN0L3Rlc3RfdHJhY2VtYWxsb2MucHkKaW5kZXggZGE4OWE5YS4uNzkwYWI3ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF90cmFjZW1hbGxvYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3RyYWNlbWFsbG9jLnB5CkBAIC0xMSw5ICsxMSwxNSBAQAogICAgIGltcG9ydCB0aHJlYWRpbmcKIGV4Y2VwdCBJbXBvcnRFcnJvcjoKICAgICB0aHJlYWRpbmcgPSBOb25lCit0cnk6CisgICAgaW1wb3J0IF90ZXN0Y2FwaQorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIF90ZXN0Y2FwaSA9IE5vbmUKKwogCiBFTVBUWV9TVFJJTkdfU0laRSA9IHN5cy5nZXRzaXplb2YoYicnKQogCisKIGRlZiBnZXRfZnJhbWVzKG5mcmFtZSwgbGluZW5vX2RlbHRhKToKICAgICBmcmFtZXMgPSBbXQogICAgIGZyYW1lID0gc3lzLl9nZXRmcmFtZSgxKQpAQCAtMzcsMjggKzQzLDMxIEBACiBkZWYgY3JlYXRlX3NuYXBzaG90cygpOgogICAgIHRyYWNlYmFja19saW1pdCA9IDIKIAorICAgICMgX3RyYWNlbWFsbG9jLl9nZXRfdHJhY2VzKCkgcmV0dXJucyBhIGxpc3Qgb2YgKGRvbWFpbiwgc2l6ZSwKKyAgICAjIHRyYWNlYmFja19mcmFtZXMpIHR1cGxlcy4gdHJhY2ViYWNrX2ZyYW1lcyBpcyBhIHR1cGxlIG9mIChmaWxlbmFtZSwKKyAgICAjIGxpbmVfbnVtYmVyKSB0dXBsZXMuCiAgICAgcmF3X3RyYWNlcyA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAoMiwgNjYsICgoJ2IucHknLCAxKSwpKSwKIAotICAgICAgICAoNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKICAgICBdCiAgICAgc25hcHNob3QgPSB0cmFjZW1hbGxvYy5TbmFwc2hvdChyYXdfdHJhY2VzLCB0cmFjZWJhY2tfbGltaXQpCiAKICAgICByYXdfdHJhY2VzMiA9IFsKLSAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKIAotICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAoNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAoMiwgNTAwMCwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAogCi0gICAgICAgICg0MDAsICgoJ2MucHknLCA1NzgpLCkpLAorICAgICAgICAoNCwgNDAwLCAoKCdjLnB5JywgNTc4KSwpKSwKICAgICBdCiAgICAgc25hcHNob3QyID0gdHJhY2VtYWxsb2MuU25hcHNob3QocmF3X3RyYWNlczIsIHRyYWNlYmFja19saW1pdCkKIApAQCAtMTI2LDcgKzEzNSw3IEBACiAKICAgICBkZWYgZmluZF90cmFjZShzZWxmLCB0cmFjZXMsIHRyYWNlYmFjayk6CiAgICAgICAgIGZvciB0cmFjZSBpbiB0cmFjZXM6Ci0gICAgICAgICAgICBpZiB0cmFjZVsxXSA9PSB0cmFjZWJhY2suX2ZyYW1lczoKKyAgICAgICAgICAgIGlmIHRyYWNlWzJdID09IHRyYWNlYmFjay5fZnJhbWVzOgogICAgICAgICAgICAgICAgIHJldHVybiB0cmFjZQogCiAgICAgICAgIHNlbGYuZmFpbCgidHJhY2Ugbm90IGZvdW5kIikKQEAgLTE0MCw3ICsxNDksNyBAQAogICAgICAgICB0cmFjZSA9IHNlbGYuZmluZF90cmFjZSh0cmFjZXMsIG9ial90cmFjZWJhY2spCiAKICAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKHRyYWNlLCB0dXBsZSkKLSAgICAgICAgc2l6ZSwgdHJhY2ViYWNrID0gdHJhY2UKKyAgICAgICAgZG9tYWluLCBzaXplLCB0cmFjZWJhY2sgPSB0cmFjZQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNpemUsIG9ial9zaXplKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlYmFjaywgb2JqX3RyYWNlYmFjay5fZnJhbWVzKQogCkBAIC0xNjcsOSArMTc2LDggQEAKIAogICAgICAgICB0cmFjZTEgPSBzZWxmLmZpbmRfdHJhY2UodHJhY2VzLCBvYmoxX3RyYWNlYmFjaykKICAgICAgICAgdHJhY2UyID0gc2VsZi5maW5kX3RyYWNlKHRyYWNlcywgb2JqMl90cmFjZWJhY2spCi0gICAgICAgIHNpemUxLCB0cmFjZWJhY2sxID0gdHJhY2UxCi0gICAgICAgIHNpemUyLCB0cmFjZWJhY2syID0gdHJhY2UyCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2ViYWNrMiwgdHJhY2ViYWNrMSkKKyAgICAgICAgZG9tYWluMSwgc2l6ZTEsIHRyYWNlYmFjazEgPSB0cmFjZTEKKyAgICAgICAgZG9tYWluMiwgc2l6ZTIsIHRyYWNlYmFjazIgPSB0cmFjZTIKICAgICAgICAgc2VsZi5hc3NlcnRJcyh0cmFjZWJhY2syLCB0cmFjZWJhY2sxKQogCiAgICAgZGVmIHRlc3RfZ2V0X3RyYWNlZF9tZW1vcnkoc2VsZik6CkBAIC0yOTIsNyArMzAwLDcgQEAKICAgICBtYXhEaWZmID0gNDAwMAogCiAgICAgZGVmIHRlc3RfY3JlYXRlX3NuYXBzaG90KHNlbGYpOgotICAgICAgICByYXdfdHJhY2VzID0gWyg1LCAoKCdhLnB5JywgMiksKSldCisgICAgICAgIHJhd190cmFjZXMgPSBbKDAsIDUsICgoJ2EucHknLCAyKSwpKV0KIAogICAgICAgICB3aXRoIGNvbnRleHRsaWIuRXhpdFN0YWNrKCkgYXMgc3RhY2s6CiAgICAgICAgICAgICBzdGFjay5lbnRlcl9jb250ZXh0KHBhdGNoLm9iamVjdCh0cmFjZW1hbGxvYywgJ2lzX3RyYWNpbmcnLApAQCAtMzIyLDExICszMzAsMTEgQEAKICAgICAgICAgIyBleGNsdWRlIGIucHkKICAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWwotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICg3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgxLCAyLCAoKCdhLnB5JywgNSksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCiAgICAgICAgIF0pCiAKICAgICAgICAgIyBmaWx0ZXJfdHJhY2VzKCkgbXVzdCBub3QgdG91Y2ggdGhlIG9yaWdpbmFsIHNuYXBzaG90CkBAIC0zMzUsMTAgKzM0MywxMCBAQAogICAgICAgICAjIG9ubHkgaW5jbHVkZSB0d28gbGluZXMgb2YgYS5weQogICAgICAgICBzbmFwc2hvdDQgPSBzbmFwc2hvdDMuZmlsdGVyX3RyYWNlcygoZmlsdGVyMiwgZmlsdGVyMykpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3Q0LnRyYWNlcy5fdHJhY2VzLCBbCi0gICAgICAgICAgICAoMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKLSAgICAgICAgICAgICgxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAotICAgICAgICAgICAgKDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCi0gICAgICAgICAgICAoMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDEsIDIsICgoJ2EucHknLCA1KSwgKCdiLnB5JywgNCkpKSwKICAgICAgICAgXSkKIAogICAgICAgICAjIE5vIGZpbHRlcjoganVzdCBkdXBsaWNhdGUgdGhlIHNuYXBzaG90CkBAIC0zNDksNiArMzU3LDU0IEBACiAKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzLCBmaWx0ZXIxKQogCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW4oc2VsZik6CisgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKKyAgICAgICAgZmlsdGVyMSA9IHRyYWNlbWFsbG9jLkZpbHRlcihGYWxzZSwgImEucHkiLCBkb21haW49MSkKKyAgICAgICAgZmlsdGVyMiA9IHRyYWNlbWFsbG9jLkZpbHRlcihUcnVlLCAiYS5weSIsIGRvbWFpbj0xKQorCisgICAgICAgIG9yaWdpbmFsX3RyYWNlcyA9IGxpc3Qoc25hcHNob3QudHJhY2VzLl90cmFjZXMpCisKKyAgICAgICAgIyBleGNsdWRlIGEucHkgb2YgZG9tYWluIDEKKyAgICAgICAgc25hcHNob3QzID0gc25hcHNob3QuZmlsdGVyX3RyYWNlcygoZmlsdGVyMSwpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNuYXBzaG90My50cmFjZXMuX3RyYWNlcywgWworICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgICAgICAoMywgNywgKCgnPHVua25vd24+JywgMCksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAxCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjEsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgyLCA2NiwgKCgnYi5weScsIDEpLCkpLAorICAgICAgICAgICAgKDMsIDcsICgoJzx1bmtub3duPicsIDApLCkpLAorICAgICAgICBdKQorCisgICAgZGVmIHRlc3RfZmlsdGVyX3RyYWNlc19kb21haW5fZmlsdGVyKHNlbGYpOgorICAgICAgICBzbmFwc2hvdCwgc25hcHNob3QyID0gY3JlYXRlX3NuYXBzaG90cygpCisgICAgICAgIGZpbHRlcjEgPSB0cmFjZW1hbGxvYy5Eb21haW5GaWx0ZXIoRmFsc2UsIGRvbWFpbj0zKQorICAgICAgICBmaWx0ZXIyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIGRvbWFpbj0zKQorCisgICAgICAgICMgZXhjbHVkZSBkb21haW4gMgorICAgICAgICBzbmFwc2hvdDMgPSBzbmFwc2hvdC5maWx0ZXJfdHJhY2VzKChmaWx0ZXIxLCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc25hcHNob3QzLnRyYWNlcy5fdHJhY2VzLCBbCisgICAgICAgICAgICAoMCwgMTAsICgoJ2EucHknLCAyKSwgKCdiLnB5JywgNCkpKSwKKyAgICAgICAgICAgICgwLCAxMCwgKCgnYS5weScsIDIpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDAsIDEwLCAoKCdhLnB5JywgMiksICgnYi5weScsIDQpKSksCisgICAgICAgICAgICAoMSwgMiwgKCgnYS5weScsIDUpLCAoJ2IucHknLCA0KSkpLAorICAgICAgICAgICAgKDIsIDY2LCAoKCdiLnB5JywgMSksKSksCisgICAgICAgIF0pCisKKyAgICAgICAgIyBpbmNsdWRlIGRvbWFpbiAyCisgICAgICAgIHNuYXBzaG90MyA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoKGZpbHRlcjIsKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzbmFwc2hvdDMudHJhY2VzLl90cmFjZXMsIFsKKyAgICAgICAgICAgICgzLCA3LCAoKCc8dW5rbm93bj4nLCAwKSwpKSwKKyAgICAgICAgXSkKKwogICAgIGRlZiB0ZXN0X3NuYXBzaG90X2dyb3VwX2J5X2xpbmUoc2VsZik6CiAgICAgICAgIHNuYXBzaG90LCBzbmFwc2hvdDIgPSBjcmVhdGVfc25hcHNob3RzKCkKICAgICAgICAgdGJfMCA9IHRyYWNlYmFja19saW5lbm8oJzx1bmtub3duPicsIDApCkBAIC04MTYsMTIgKzg3MiwxMjEgQEAKICAgICAgICAgYXNzZXJ0X3B5dGhvbl9vaygnLVgnLCAndHJhY2VtYWxsb2MnLCAnLWMnLCBjb2RlKQogCiAKK0B1bml0dGVzdC5za2lwSWYoX3Rlc3RjYXBpIGlzIE5vbmUsICduZWVkIF90ZXN0Y2FwaScpCitjbGFzcyBUZXN0Q0FQSSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgbWF4RGlmZiA9IDgwICogMjAKKworICAgIGRlZiBzZXRVcChzZWxmKToKKyAgICAgICAgaWYgdHJhY2VtYWxsb2MuaXNfdHJhY2luZygpOgorICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgidHJhY2VtYWxsb2MgbXVzdCBiZSBzdG9wcGVkIGJlZm9yZSB0aGUgdGVzdCIpCisKKyAgICAgICAgc2VsZi5kb21haW4gPSA1CisgICAgICAgIHNlbGYuc2l6ZSA9IDEyMworICAgICAgICBzZWxmLm9iaiA9IGFsbG9jYXRlX2J5dGVzKHNlbGYuc2l6ZSlbMF0KKworICAgICAgICAjIGZvciB0aGUgdHlwZSAib2JqZWN0IiwgaWQob2JqKSBpcyB0aGUgYWRkcmVzcyBvZiBpdHMgbWVtb3J5IGJsb2NrLgorICAgICAgICAjIFRoaXMgdHlwZSBpcyBub3QgdHJhY2tlZCBieSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IKKyAgICAgICAgc2VsZi5wdHIgPSBpZChzZWxmLm9iaikKKworICAgIGRlZiB0ZWFyRG93bihzZWxmKToKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICBkZWYgZ2V0X3RyYWNlYmFjayhzZWxmKToKKyAgICAgICAgZnJhbWVzID0gX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX2dldF90cmFjZWJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorICAgICAgICBpZiBmcmFtZXMgaXMgbm90IE5vbmU6CisgICAgICAgICAgICByZXR1cm4gdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHJldHVybiBOb25lCisKKyAgICBkZWYgdHJhY2soc2VsZiwgcmVsZWFzZV9naWw9RmFsc2UsIG5mcmFtZT0xKToKKyAgICAgICAgZnJhbWVzID0gZ2V0X2ZyYW1lcyhuZnJhbWUsIDIpCisgICAgICAgIF90ZXN0Y2FwaS50cmFjZW1hbGxvY190cmFjayhzZWxmLmRvbWFpbiwgc2VsZi5wdHIsIHNlbGYuc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VfZ2lsKQorICAgICAgICByZXR1cm4gZnJhbWVzCisKKyAgICBkZWYgdW50cmFjayhzZWxmKToKKyAgICAgICAgX3Rlc3RjYXBpLnRyYWNlbWFsbG9jX3VudHJhY2soc2VsZi5kb21haW4sIHNlbGYucHRyKQorCisgICAgZGVmIGdldF90cmFjZWRfbWVtb3J5KHNlbGYpOgorICAgICAgICAjIEdldCB0aGUgdHJhY2VkIHNpemUgaW4gdGhlIGRvbWFpbgorICAgICAgICBzbmFwc2hvdCA9IHRyYWNlbWFsbG9jLnRha2Vfc25hcHNob3QoKQorICAgICAgICBkb21haW5fZmlsdGVyID0gdHJhY2VtYWxsb2MuRG9tYWluRmlsdGVyKFRydWUsIHNlbGYuZG9tYWluKQorICAgICAgICBzbmFwc2hvdCA9IHNuYXBzaG90LmZpbHRlcl90cmFjZXMoW2RvbWFpbl9maWx0ZXJdKQorICAgICAgICByZXR1cm4gc3VtKHRyYWNlLnNpemUgZm9yIHRyYWNlIGluIHNuYXBzaG90LnRyYWNlcykKKworICAgIGRlZiBjaGVja190cmFjayhzZWxmLCByZWxlYXNlX2dpbCk6CisgICAgICAgIG5mcmFtZSA9IDUKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RhcnQobmZyYW1lKQorCisgICAgICAgIHNpemUgPSB0cmFjZW1hbGxvYy5nZXRfdHJhY2VkX21lbW9yeSgpWzBdCisKKyAgICAgICAgZnJhbWVzID0gc2VsZi50cmFjayhyZWxlYXNlX2dpbCwgbmZyYW1lKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlYmFjaygpLAorICAgICAgICAgICAgICAgICAgICAgICAgIHRyYWNlbWFsbG9jLlRyYWNlYmFjayhmcmFtZXMpKQorCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCBzZWxmLnNpemUpCisKKyAgICBkZWYgdGVzdF90cmFjayhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja190cmFjayhGYWxzZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX3dpdGhvdXRfZ2lsKHNlbGYpOgorICAgICAgICAjIGNoZWNrIHRoYXQgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19UcmFjaygpIHdpdGhvdXQgaG9sZGluZyB0aGUgR0lMCisgICAgICAgICMgd29ya3MgdG9vCisgICAgICAgIHNlbGYuY2hlY2tfdHJhY2soVHJ1ZSkKKworICAgIGRlZiB0ZXN0X3RyYWNrX2FscmVhZHlfdHJhY2tlZChzZWxmKToKKyAgICAgICAgbmZyYW1lID0gNQorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydChuZnJhbWUpCisKKyAgICAgICAgIyB0cmFjayBhIGZpcnN0IHRpbWUKKyAgICAgICAgc2VsZi50cmFjaygpCisKKyAgICAgICAgIyBjYWxsaW5nIF9QeVRyYWNlTWFsbG9jX1RyYWNrKCkgbXVzdCByZW1vdmUgdGhlIG9sZCB0cmFjZSBhbmQgYWRkCisgICAgICAgICMgYSBuZXcgdHJhY2Ugd2l0aCB0aGUgbmV3IHRyYWNlYmFjaworICAgICAgICBmcmFtZXMgPSBzZWxmLnRyYWNrKG5mcmFtZT1uZnJhbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2ViYWNrKCksCisgICAgICAgICAgICAgICAgICAgICAgICAgdHJhY2VtYWxsb2MuVHJhY2ViYWNrKGZyYW1lcykpCisKKyAgICBkZWYgdGVzdF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisKKyAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuZ2V0X3RyYWNlZF9tZW1vcnkoKSwgc2VsZi5zaXplKQorCisgICAgICAgICMgdW50cmFjayBtdXN0IHJlbW92ZSB0aGUgdHJhY2UKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vbmUoc2VsZi5nZXRfdHJhY2ViYWNrKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5nZXRfdHJhY2VkX21lbW9yeSgpLCAwKQorCisgICAgICAgICMgY2FsbGluZyBfUHlUcmFjZU1hbGxvY19VbnRyYWNrKCkgbXVsdGlwbGUgdGltZXMgbXVzdCBub3QgY3Jhc2gKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKyAgICAgICAgc2VsZi51bnRyYWNrKCkKKworICAgIGRlZiB0ZXN0X3N0b3BfdHJhY2soc2VsZik6CisgICAgICAgIHRyYWNlbWFsbG9jLnN0YXJ0KCkKKyAgICAgICAgdHJhY2VtYWxsb2Muc3RvcCgpCisKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IpOgorICAgICAgICAgICAgc2VsZi50cmFjaygpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHNlbGYuZ2V0X3RyYWNlYmFjaygpKQorCisgICAgZGVmIHRlc3Rfc3RvcF91bnRyYWNrKHNlbGYpOgorICAgICAgICB0cmFjZW1hbGxvYy5zdGFydCgpCisgICAgICAgIHNlbGYudHJhY2soKQorCisgICAgICAgIHRyYWNlbWFsbG9jLnN0b3AoKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvcik6CisgICAgICAgICAgICBzZWxmLnVudHJhY2soKQorCisKIGRlZiB0ZXN0X21haW4oKToKICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKICAgICAgICAgVGVzdFRyYWNlbWFsbG9jRW5hYmxlZCwKICAgICAgICAgVGVzdFNuYXBzaG90LAogICAgICAgICBUZXN0RmlsdGVycywKICAgICAgICAgVGVzdENvbW1hbmRMaW5lLAorICAgICAgICBUZXN0Q0FQSSwKICAgICApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfZ3Vpb25seS5weQppbmRleCA0OTBlNzIzLi40NjI2NjVkIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3R0a19ndWlvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX2d1aW9ubHkucHkKQEAgLTEsNCArMSwzIEBACi1pbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5IGIvTGliL3Rlc3QvdGVzdF90dGtfdGV4dG9ubHkucHkKaW5kZXggNTY2ZmM5ZC4uNzU0MGE0MzEgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdHRrX3RleHRvbmx5LnB5CkBAIC0xLDQgKzEsMyBAQAotaW1wb3J0IG9zCiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIAogIyBTa2lwIHRoaXMgdGVzdCBpZiBfdGtpbnRlciBkb2VzIG5vdCBleGlzdC4KZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkgYi9MaWIvdGVzdC90ZXN0X3R5cGVzLnB5CmluZGV4IDVlNzQxMTUuLjM4MmNhMDMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdHlwZXMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF90eXBlcy5weQpAQCAtNDgsNiArNDgsNyBAQAogICAgIGRlZiB0ZXN0X2Zsb2F0X2NvbnN0cnVjdG9yKHNlbGYpOgogICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBmbG9hdCwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIGZsb2F0LCAnNVwwJykKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgZmxvYXQsICc1XzVcMCcpCiAKICAgICBkZWYgdGVzdF96ZXJvX2RpdmlzaW9uKHNlbGYpOgogICAgICAgICB0cnk6IDUuMCAvIDAuMApAQCAtMTAwMCw2ICsxMDAxLDI0IEBACiAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKICAgICAgICAgICAgIFggPSB0eXBlcy5uZXdfY2xhc3MoIlgiLCAoaW50KCksIEMpKQogCisgICAgZGVmIHRlc3Rfb25lX2FyZ3VtZW50X3R5cGUoc2VsZik6CisgICAgICAgIGV4cGVjdGVkX21lc3NhZ2UgPSAndHlwZS5fX25ld19fKCkgdGFrZXMgZXhhY3RseSAzIGFyZ3VtZW50cyAoMSBnaXZlbiknCisKKyAgICAgICAgIyBPbmx5IHR5cGUgaXRzZWxmIGNhbiB1c2UgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZSg1KSwgaW50KQorCisgICAgICAgIGNsYXNzIE0odHlwZSk6CisgICAgICAgICAgICBwYXNzCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBjbToKKyAgICAgICAgICAgIE0oNSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdHIoY20uZXhjZXB0aW9uKSwgZXhwZWN0ZWRfbWVzc2FnZSkKKworICAgICAgICBjbGFzcyBOKHR5cGUsIG1ldGFjbGFzcz1NKToKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgTig1KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0cihjbS5leGNlcHRpb24pLCBleHBlY3RlZF9tZXNzYWdlKQorCiAKIGNsYXNzIFNpbXBsZU5hbWVzcGFjZVRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5IGIvTGliL3Rlc3QvdGVzdF91bmljb2RlLnB5CmluZGV4IDgxZTQ5ZDYuLmZlNmNkMjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGUucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCBpdGVydG9vbHMKIGltcG9ydCBvcGVyYXRvcgogaW1wb3J0IHN0cnVjdAoraW1wb3J0IHN0cmluZwogaW1wb3J0IHN5cwogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgd2FybmluZ3MKQEAgLTk4Niw2ICs5ODcsMTkgQEAKICAgICAgICAgICAgIGRlZiBfX2Zvcm1hdF9fKHNlbGYsIGZvcm1hdF9zcGVjKToKICAgICAgICAgICAgICAgICByZXR1cm4gaW50Ll9fZm9ybWF0X18oc2VsZiAqIDIsIGZvcm1hdF9zcGVjKQogCisgICAgICAgIGNsYXNzIE06CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTSgnICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX3N0cl9fID0gTm9uZQorCisgICAgICAgIGNsYXNzIE46CisgICAgICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgeCk6CisgICAgICAgICAgICAgICAgc2VsZi54ID0geAorICAgICAgICAgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICAgICAgICAgIHJldHVybiAnTignICsgc2VsZi54ICsgJyknCisgICAgICAgICAgICBfX2Zvcm1hdF9fID0gTm9uZQogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycuZm9ybWF0KCksICcnKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdhYmMnLmZvcm1hdCgpLCAnYWJjJykKQEAgLTEyMDAsNiArMTIxNCwxNiBAQAogCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoIjB4ezowezpkfVh9Ii5mb3JtYXQoMHgwLDE2KSwgIjB4MDAwMDAwMDAwMDAwMDAwMCIpCiAKKyAgICAgICAgIyBCbG9ja2luZyBmYWxsYmFjaworICAgICAgICBtID0gTSgnZGF0YScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshcn0iLmZvcm1hdChtKSwgJ00oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7IXN9Ii5mb3JtYXQsIG0pCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgInt9Ii5mb3JtYXQsIG0pCisgICAgICAgIG4gPSBOKCdkYXRhJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgieyFyfSIuZm9ybWF0KG4pLCAnTihkYXRhKScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoInshc30iLmZvcm1hdChuKSwgJ04oZGF0YSknKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IsICJ7fSIuZm9ybWF0LCBuKQorCiAgICAgZGVmIHRlc3RfZm9ybWF0X21hcChzZWxmKToKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJy5mb3JtYXRfbWFwKHt9KSwgJycpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2EnLmZvcm1hdF9tYXAoe30pLCAnYScpCkBAIC0xNTQxLDcgKzE1NjUsNyBAQAogICAgICAgICAgICAgKCcrJywgYicrLScpLAogICAgICAgICAgICAgKCcrLScsIGInKy0tJyksCiAgICAgICAgICAgICAoJys/JywgYicrLT8nKSwKLSAgICAgICAgICAgICgnXD8nLCBiJytBRnc/JyksCisgICAgICAgICAgICAocidcPycsIGInK0FGdz8nKSwKICAgICAgICAgICAgICgnKz8nLCBiJystPycpLAogICAgICAgICAgICAgKHInXFw/JywgYicrQUZ3QVhBPycpLAogICAgICAgICAgICAgKHInXFxcPycsIGInK0FGd0FYQUJjPycpLApAQCAtMjM4OSw2ICsyNDEzLDEzIEBACiAgICAgICAgIHN1cHBvcnQuY2hlY2tfZnJlZV9hZnRlcl9pdGVyYXRpbmcoc2VsZiwgaXRlciwgc3RyKQogICAgICAgICBzdXBwb3J0LmNoZWNrX2ZyZWVfYWZ0ZXJfaXRlcmF0aW5nKHNlbGYsIHJldmVyc2VkLCBzdHIpCiAKKyAgICBkZWYgdGVzdF9pbnZhbGlkX3NlcXVlbmNlcyhzZWxmKToKKyAgICAgICAgZm9yIGxldHRlciBpbiBzdHJpbmcuYXNjaWlfbGV0dGVycyArICI4OSI6ICMgMC03IGFyZSBvY3RhbCBlc2NhcGVzCisgICAgICAgICAgICBpZiBsZXR0ZXIgaW4gImFiZm5ydHV2eE5VIjoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICAgICAgZXZhbChyIidcJXMnIiAlIGxldHRlcikKKwogCiBjbGFzcyBDQVBJVGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CiAKQEAgLTI0MjAsNyArMjQ1MSw3IEBACiAgICAgICAgICMgbm9uLWFzY2lpIGZvcm1hdCwgYXNjaWkgYXJndW1lbnQ6IGVuc3VyZSB0aGF0IFB5VW5pY29kZV9Gcm9tRm9ybWF0VigpCiAgICAgICAgICMgcmFpc2VzIGFuIGVycm9yCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoVmFsdWVFcnJvciwKLSAgICAgICAgICAgICdeUHlVbmljb2RlX0Zyb21Gb3JtYXRWXChcKSBleHBlY3RzIGFuIEFTQ0lJLWVuY29kZWQgZm9ybWF0ICcKKyAgICAgICAgICAgIHInXlB5VW5pY29kZV9Gcm9tRm9ybWF0VlwoXCkgZXhwZWN0cyBhbiBBU0NJSS1lbmNvZGVkIGZvcm1hdCAnCiAgICAgICAgICAgICAnc3RyaW5nLCBnb3QgYSBub24tQVNDSUkgYnl0ZTogMHhlOSQnLAogICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21Gb3JtYXQsIGIndW5pY29kZVx4ZTk9JXMnLCAnYXNjaWknKQogCkBAIC0yNzkyLDcgKzI4MjMsNiBAQAogICAgICAgICAgICAgICAgICMgQ2hlY2sgdGhhdCB0aGUgc2Vjb25kIGNhbGwgcmV0dXJucyB0aGUgc2FtZSByZXN1bHQKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGdldGFyZ3Nfc19oYXNoKHMpLCBjaHIoaykuZW5jb2RlKCkgKiAoaSArIDEpKQogCi0KIGNsYXNzIFN0cmluZ01vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgIGRlZiB0ZXN0X2Zvcm1hdHRlcl9wYXJzZXIoc2VsZik6CiAgICAgICAgIGRlZiBwYXJzZShmb3JtYXQpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAyNzcucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZV9mdW5jdGlvbnMucHkKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIExpYi90ZXN0L3Rlc3RfcGVwMjc3LnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3VuaWNvZGVfZmlsZV9mdW5jdGlvbnMucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzEzMS5weSBiL0xpYi90ZXN0L3Rlc3RfdW5pY29kZV9pZGVudGlmaWVycy5weQpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gTGliL3Rlc3QvdGVzdF9wZXAzMTMxLnB5CnJlbmFtZSB0byBMaWIvdGVzdC90ZXN0X3VuaWNvZGVfaWRlbnRpZmllcnMucHkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkgYi9MaWIvdGVzdC90ZXN0X3VuaWNvZGVkYXRhLnB5CmluZGV4IDZlY2M5MTMuLjRmYzExZWMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5pY29kZWRhdGEucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bmljb2RlZGF0YS5weQpAQCAtMjAsNyArMjAsNyBAQAogY2xhc3MgVW5pY29kZU1ldGhvZHNUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgICMgdXBkYXRlIHRoaXMsIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzCi0gICAgZXhwZWN0ZWRjaGVja3N1bSA9ICc1OTcxNzYwODcyYjJmOThiYjljNzAxZTZjMGRiMzI3M2Q3NTZiM2VjJworICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnYzFmYTk4Njc0YTY4M2FhOGE4ZDhkZWUwYzg0NDk0ZjhkMzYzNDZlNicKIAogICAgIGRlZiB0ZXN0X21ldGhvZF9jaGVja3N1bShzZWxmKToKICAgICAgICAgaCA9IGhhc2hsaWIuc2hhMSgpCkBAIC04MCw3ICs4MCw3IEBACiAKICAgICAjIFVwZGF0ZSB0aGlzIGlmIHRoZSBkYXRhYmFzZSBjaGFuZ2VzLiBNYWtlIHN1cmUgdG8gZG8gYSBmdWxsIHJlYnVpbGQKICAgICAjIChlLmcuICdtYWtlIGRpc3RjbGVhbiAmJiBtYWtlJykgdG8gZ2V0IHRoZSBjb3JyZWN0IGNoZWNrc3VtLgotICAgIGV4cGVjdGVkY2hlY2tzdW0gPSAnNWU3NDgyN2NkMDdmOWU1NDZhMzBmMzRiN2JjZjZjYzJlYWMzOGM4YycKKyAgICBleHBlY3RlZGNoZWNrc3VtID0gJ2Y4OTFiMWU2NDMwYzcxMjUzMWI5YmM5MzVhMzhlMjJkNzhiYTFiZjMnCiAgICAgZGVmIHRlc3RfZnVuY3Rpb25fY2hlY2tzdW0oc2VsZik6CiAgICAgICAgIGRhdGEgPSBbXQogICAgICAgICBoID0gaGFzaGxpYi5zaGExKCkKQEAgLTIyMiw2ICsyMjIsMTAgQEAKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlYXcoJ1x1MjAxMCcpLCAnQScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZWF3KCdcVTAwMDIwMDAwJyksICdXJykKIAorICAgIGRlZiB0ZXN0X2Vhc3RfYXNpYW5fd2lkdGhfOV8wX2NoYW5nZXMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5kYi51Y2RfM18yXzAuZWFzdF9hc2lhbl93aWR0aCgnXHUyMzFhJyksICdOJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLmRiLmVhc3RfYXNpYW5fd2lkdGgoJ1x1MjMxYScpLCAnVycpCisKIGNsYXNzIFVuaWNvZGVNaXNjVGVzdChVbmljb2RlRGF0YWJhc2VUZXN0KToKIAogICAgIGRlZiB0ZXN0X2ZhaWxlZF9pbXBvcnRfZHVyaW5nX2NvbXBpbGluZyhzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrLnB5IGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKaW5kZXggZDFjY2IzOC4uM2ZjYjE4ZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91bnBhY2sucHkKQEAgLTExNyw2ICsxMTcsMjcgQEAKICAgICAgIC4uLgogICAgIHRlc3QudGVzdF91bnBhY2suQm96b0Vycm9yCiAKK0FsbG93IHVucGFja2luZyBlbXB0eSBpdGVyYWJsZXMKKworICAgID4+PiAoKSA9IFtdCisgICAgPj4+IFtdID0gKCkKKyAgICA+Pj4gW10gPSBbXQorICAgID4+PiAoKSA9ICgpCisKK1VucGFja2luZyBub24taXRlcmFibGVzIHNob3VsZCByYWlzZSBUeXBlRXJyb3IKKworICAgID4+PiAoKSA9IDQyCisgICAgVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICAgICAgLi4uCisgICAgVHlwZUVycm9yOiAnaW50JyBvYmplY3QgaXMgbm90IGl0ZXJhYmxlCisKK1VucGFja2luZyB0byBhbiBlbXB0eSBpdGVyYWJsZSBzaG91bGQgcmFpc2UgVmFsdWVFcnJvcgorCisgICAgPj4+ICgpID0gWzQyXQorICAgIFRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgICAgIC4uLgorICAgIFZhbHVlRXJyb3I6IHRvbyBtYW55IHZhbHVlcyB0byB1bnBhY2sgKGV4cGVjdGVkIDApCisKICIiIgogCiBfX3Rlc3RfXyA9IHsnZG9jdGVzdHMnIDogZG9jdGVzdHN9CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VucGFja19leC5weSBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CmluZGV4IDc0MzQ2YjQuLjZiZThmNTUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdW5wYWNrX2V4LnB5CkBAIC0zNTcsNyArMzU3LDYgQEAKIF9fdGVzdF9fID0geydkb2N0ZXN0cycgOiBkb2N0ZXN0c30KIAogZGVmIHRlc3RfbWFpbih2ZXJib3NlPUZhbHNlKToKLSAgICBpbXBvcnQgc3lzCiAgICAgZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAgICAgZnJvbSB0ZXN0IGltcG9ydCB0ZXN0X3VucGFja19leAogICAgIHN1cHBvcnQucnVuX2RvY3Rlc3QodGVzdF91bnBhY2tfZXgsIHZlcmJvc2UpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CmluZGV4IDI0NzU5OGEuLjQzZWE2YjggMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliLnB5CkBAIC00NjksMTAgKzQ2OSwxMSBAQAogICAgIEB1bml0dGVzdC5za2lwVW5sZXNzKHNzbCwgInNzbCBtb2R1bGUgcmVxdWlyZWQiKQogICAgIGRlZiB0ZXN0X2NhZmlsZV9hbmRfY29udGV4dChzZWxmKToKICAgICAgICAgY29udGV4dCA9IHNzbC5jcmVhdGVfZGVmYXVsdF9jb250ZXh0KCkKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKLSAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oCi0gICAgICAgICAgICAgICAgImh0dHBzOi8vbG9jYWxob3N0IiwgY2FmaWxlPSIvbm9uZXhpc3RlbnQvcGF0aCIsIGNvbnRleHQ9Y29udGV4dAotICAgICAgICAgICAgKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbigKKyAgICAgICAgICAgICAgICAgICAgImh0dHBzOi8vbG9jYWxob3N0IiwgY2FmaWxlPSIvbm9uZXhpc3RlbnQvcGF0aCIsIGNvbnRleHQ9Y29udGV4dAorICAgICAgICAgICAgICAgICkKIAogY2xhc3MgdXJsb3Blbl9EYXRhVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIlRlc3QgdXJsb3BlbigpIG9wZW5pbmcgYSBkYXRhIFVSTC4iIiIKQEAgLTcyOSw3ICs3MzAsNyBAQAogCiAKIGNsYXNzIFF1b3RpbmdUZXN0cyh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgIiIiVGVzdHMgZm9yIHVybGxpYi5xdW90ZSgpIGFuZCB1cmxsaWIucXVvdGVfcGx1cygpCisgICAgciIiIlRlc3RzIGZvciB1cmxsaWIucXVvdGUoKSBhbmQgdXJsbGliLnF1b3RlX3BsdXMoKQogCiAgICAgQWNjb3JkaW5nIHRvIFJGQyAyMzk2IChVbmlmb3JtIFJlc291cmNlIElkZW50aWZpZXJzKSwgdG8gZXNjYXBlIGEKICAgICBjaGFyYWN0ZXIgeW91IHdyaXRlIGl0IGFzICclJyArIDwyIGNoYXJhY3RlciBVUy1BU0NJSSBoZXggdmFsdWU+LgpAQCAtODA0LDcgKzgwNSw3IEBACiAgICAgICAgICMgTWFrZSBzdXJlIGFsbCBjaGFyYWN0ZXJzIHRoYXQgc2hvdWxkIGJlIHF1b3RlZCBhcmUgYnkgZGVmYXVsdCBzYW5zCiAgICAgICAgICMgc3BhY2UgKHNlcGFyYXRlIHRlc3QgZm9yIHRoYXQpLgogICAgICAgICBzaG91bGRfcXVvdGUgPSBbY2hyKG51bSkgZm9yIG51bSBpbiByYW5nZSgzMildICMgRm9yIDB4MDAgLSAweDFGCi0gICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQoJzw+IyUie318XF5bXWAnKQorICAgICAgICBzaG91bGRfcXVvdGUuYXBwZW5kKHInPD4jJSJ7fXxcXltdYCcpCiAgICAgICAgIHNob3VsZF9xdW90ZS5hcHBlbmQoY2hyKDEyNykpICMgRm9yIDB4N0YKICAgICAgICAgc2hvdWxkX3F1b3RlID0gJycuam9pbihzaG91bGRfcXVvdGUpCiAgICAgICAgIGZvciBjaGFyIGluIHNob3VsZF9xdW90ZToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weSBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQppbmRleCBlZGE3Y2NjLi4zNDMyOWY4IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWIyLnB5CkBAIC03LDYgKzcsOCBAQAogaW1wb3J0IHNvY2tldAogaW1wb3J0IGFycmF5CiBpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBzdWJwcm9jZXNzCiAKIGltcG9ydCB1cmxsaWIucmVxdWVzdAogIyBUaGUgcHJveHkgYnlwYXNzIG1ldGhvZCBpbXBvcnRlZCBiZWxvdyBoYXMgbG9naWMgc3BlY2lmaWMgdG8gdGhlIE9TWApAQCAtMzM1LDcgKzMzNyw4IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl90dW5uZWxfaGVhZGVycy5jbGVhcigpCiAKLSAgICBkZWYgcmVxdWVzdChzZWxmLCBtZXRob2QsIHVybCwgYm9keT1Ob25lLCBoZWFkZXJzPU5vbmUpOgorICAgIGRlZiByZXF1ZXN0KHNlbGYsIG1ldGhvZCwgdXJsLCBib2R5PU5vbmUsIGhlYWRlcnM9Tm9uZSwgKiwKKyAgICAgICAgICAgICAgICBlbmNvZGVfY2h1bmtlZD1GYWxzZSk6CiAgICAgICAgIHNlbGYubWV0aG9kID0gbWV0aG9kCiAgICAgICAgIHNlbGYuc2VsZWN0b3IgPSB1cmwKICAgICAgICAgaWYgaGVhZGVycyBpcyBub3QgTm9uZToKQEAgLTM0Myw2ICszNDYsNyBAQAogICAgICAgICBzZWxmLnJlcV9oZWFkZXJzLnNvcnQoKQogICAgICAgICBpZiBib2R5OgogICAgICAgICAgICAgc2VsZi5kYXRhID0gYm9keQorICAgICAgICBzZWxmLmVuY29kZV9jaHVua2VkID0gZW5jb2RlX2NodW5rZWQKICAgICAgICAgaWYgc2VsZi5yYWlzZV9vbl9lbmRoZWFkZXJzOgogICAgICAgICAgICAgcmFpc2UgT1NFcnJvcigpCiAKQEAgLTkwOCw0MSArOTEyLDExMCBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXEudW5yZWRpcmVjdGVkX2hkcnNbIkhvc3QiXSwgImJheiIpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS51bnJlZGlyZWN0ZWRfaGRyc1siU3BhbSJdLCAiZm9vIikKIAotICAgICAgICAjIENoZWNrIGl0ZXJhYmxlIGJvZHkgc3VwcG9ydAotICAgICAgICBkZWYgaXRlcmFibGVfYm9keSgpOgotICAgICAgICAgICAgeWllbGQgYiJvbmUiCi0gICAgICAgICAgICB5aWVsZCBiInR3byIKLSAgICAgICAgICAgIHlpZWxkIGIidGhyZWUiCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2ZpbGUoc2VsZik6CisgICAgICAgICMgQSByZWd1bGFyIGZpbGUgLSBjaHVua2VkIGVuY29kaW5nIGlzIHVzZWQgdW5sZXNzIENvbnRlbnQgTGVuZ3RoIGlzCisgICAgICAgICMgYWxyZWFkeSBzZXQuCiAKLSAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxMX06Ci0gICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgaXRlcmFibGVfYm9keSgpLCBoZWFkZXJzKQotICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6Ci0gICAgICAgICAgICAgICAgIyBIYXZpbmcgYW4gaXRlcmFibGUgYm9keSB3aXRob3V0IGEgQ29udGVudC1MZW5ndGggc2hvdWxkCi0gICAgICAgICAgICAgICAgIyByYWlzZSBhbiBleGNlcHRpb24KLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBoLmRvX3JlcXVlc3RfLCByZXEpCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICBoID0gdXJsbGliLnJlcXVlc3QuQWJzdHJhY3RIVFRQSGFuZGxlcigpCisgICAgICAgIG8gPSBoLnBhcmVudCA9IE1vY2tPcGVuZXIoKQogCi0gICAgICAgICMgQSBmaWxlIG9iamVjdC4KLSAgICAgICAgIyBUZXN0IG9ubHkgQ29udGVudC1MZW5ndGggYXR0cmlidXRlIG9mIHJlcXVlc3QuCisgICAgICAgIGZpbGVfb2JqID0gdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9J3crYicsIGRlbGV0ZT1GYWxzZSkKKyAgICAgICAgZmlsZV9wYXRoID0gZmlsZV9vYmoubmFtZQorICAgICAgICBmaWxlX29iai5jbG9zZSgpCisgICAgICAgIHNlbGYuYWRkQ2xlYW51cChvcy51bmxpbmssIGZpbGVfcGF0aCkKIAorICAgICAgICB3aXRoIG9wZW4oZmlsZV9wYXRoLCAicmIiKSBhcyBmOgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGYsIHt9KQorICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICB0ZSA9IG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRlLCAiY2h1bmtlZCIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKQorCisgICAgICAgIHdpdGggb3BlbihmaWxlX3BhdGgsICJyYiIpIGFzIGY6CisgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZiwgeyJDb250ZW50LUxlbmd0aCI6IDMwfSkKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbnQobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJykpLCAzMCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIikpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfZmlsZW9iaihzZWxmKToKKyAgICAgICAgIyBBIGZpbGUgb2JqZWN0IC0gY2h1bmtlZCBlbmNvZGluZyBpcyB1c2VkCisgICAgICAgICMgdW5sZXNzIENvbnRlbnQgTGVuZ3RoIGlzIGFscmVhZHkgc2V0LgorICAgICAgICAjIChOb3RlIHRoYXQgdGhlcmUgYXJlIHNvbWUgc3VidGxlIGRpZmZlcmVuY2VzIHRvIGEgcmVndWxhcgorICAgICAgICAjIGZpbGUsIHRoYXQgaXMgd2h5IHdlIGFyZSB0ZXN0aW5nIGJvdGggY2FzZXMuKQorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCiAgICAgICAgIGZpbGVfb2JqID0gaW8uQnl0ZXNJTygpCi0gICAgICAgIGZpbGVfb2JqLndyaXRlKGIiU29tZXRoaW5nXG5Tb21ldGhpbmdcblNvbWV0aGluZ1xuIikKIAotICAgICAgICBmb3IgaGVhZGVycyBpbiB7fSwgeyJDb250ZW50LUxlbmd0aCI6IDMwfToKLSAgICAgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwgaGVhZGVycykKLSAgICAgICAgICAgIGlmIG5vdCBoZWFkZXJzOgotICAgICAgICAgICAgICAgICMgSGF2aW5nIGFuIGl0ZXJhYmxlIGJvZHkgd2l0aG91dCBhIENvbnRlbnQtTGVuZ3RoIHNob3VsZAotICAgICAgICAgICAgICAgICMgcmFpc2UgYW4gZXhjZXB0aW9uCi0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgaC5kb19yZXF1ZXN0XywgcmVxKQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDMwKQorICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgZmlsZV9vYmosIHt9KQorICAgICAgICBuZXdyZXEgPSBoLmRvX3JlcXVlc3RfKHJlcSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignVHJhbnNmZXItZW5jb2RpbmcnKSwgJ2NodW5rZWQnKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG5ld3JlcS5oYXNfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKQorCisgICAgICAgIGhlYWRlcnMgPSB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9CisgICAgICAgIHJlcSA9IFJlcXVlc3QoImh0dHA6Ly9leGFtcGxlLmNvbS8iLCBmaWxlX29iaiwgaGVhZGVycykKKyAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwgMzApCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmV3cmVxLmhhc19oZWFkZXIoIlRyYW5zZmVyLWVuY29kaW5nIikpCiAKICAgICAgICAgZmlsZV9vYmouY2xvc2UoKQogCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X3BpcGUoc2VsZik6CisgICAgICAgICMgQSBmaWxlIHJlYWRpbmcgZnJvbSBhIHBpcGUuCisgICAgICAgICMgQSBwaXBlIGNhbm5vdCBiZSBzZWVrJ2VkLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUKKyAgICAgICAgIyBjb250ZW50IGxlbmd0aCB1cCBmcm9udC4gIFRodXMsIGRvX3JlcXVlc3RfKCkgc2hvdWxkIGZhbGwKKyAgICAgICAgIyBiYWNrIHRvIFRyYW5zZmVyLWVuY29kaW5nIGNodW5rZWQuCisKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKworICAgICAgICBjbWQgPSBbc3lzLmV4ZWN1dGFibGUsICItYyIsIHIicGFzcyJdCisgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMzB9OgorICAgICAgICAgICAgd2l0aCBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkgYXMgcHJvYzoKKyAgICAgICAgICAgICAgICByZXEgPSBSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgcHJvYy5zdGRvdXQsIGhlYWRlcnMpCisgICAgICAgICAgICAgICAgbmV3cmVxID0gaC5kb19yZXF1ZXN0XyhyZXEpCisgICAgICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ0NvbnRlbnQtbGVuZ3RoJyksIE5vbmUpCisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3cmVxLmdldF9oZWFkZXIoJ1RyYW5zZmVyLWVuY29kaW5nJyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NodW5rZWQnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW50KG5ld3JlcS5nZXRfaGVhZGVyKCdDb250ZW50LWxlbmd0aCcpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMCkKKworICAgIGRlZiB0ZXN0X2h0dHBfYm9keV9pdGVyYWJsZShzZWxmKToKKyAgICAgICAgIyBHZW5lcmljIGl0ZXJhYmxlLiAgVGhlcmUgaXMgbm8gd2F5IHRvIGRldGVybWluZSB0aGUgY29udGVudAorICAgICAgICAjIGxlbmd0aCB1cCBmcm9udC4gIEZhbGwgYmFjayB0byBUcmFuc2Zlci1lbmNvZGluZyBjaHVua2VkLgorCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgbyA9IGgucGFyZW50ID0gTW9ja09wZW5lcigpCisKKyAgICAgICAgZGVmIGl0ZXJhYmxlX2JvZHkoKToKKyAgICAgICAgICAgIHlpZWxkIGIib25lIgorCisgICAgICAgIGZvciBoZWFkZXJzIGluIHt9LCB7IkNvbnRlbnQtTGVuZ3RoIjogMTF9OgorICAgICAgICAgICAgcmVxID0gUmVxdWVzdCgiaHR0cDovL2V4YW1wbGUuY29tLyIsIGl0ZXJhYmxlX2JvZHkoKSwgaGVhZGVycykKKyAgICAgICAgICAgIG5ld3JlcSA9IGguZG9fcmVxdWVzdF8ocmVxKQorICAgICAgICAgICAgaWYgbm90IGhlYWRlcnM6CisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSwgTm9uZSkKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld3JlcS5nZXRfaGVhZGVyKCdUcmFuc2Zlci1lbmNvZGluZycpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NodW5rZWQnKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludChuZXdyZXEuZ2V0X2hlYWRlcignQ29udGVudC1sZW5ndGgnKSksIDExKQorCisgICAgZGVmIHRlc3RfaHR0cF9ib2R5X2VtcHR5X3NlcShzZWxmKToKKyAgICAgICAgIyBaZXJvLWxlbmd0aCBpdGVyYWJsZSBib2R5IHNob3VsZCBiZSB0cmVhdGVkIGxpa2UgYW55IG90aGVyIGl0ZXJhYmxlCisgICAgICAgIGggPSB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyKCkKKyAgICAgICAgaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKyAgICAgICAgcmVxID0gaC5kb19yZXF1ZXN0XyhSZXF1ZXN0KCJodHRwOi8vZXhhbXBsZS5jb20vIiwgKCkpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlcS5nZXRfaGVhZGVyKCJUcmFuc2Zlci1lbmNvZGluZyIpLCAiY2h1bmtlZCIpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UocmVxLmhhc19oZWFkZXIoIkNvbnRlbnQtbGVuZ3RoIikpCisKKyAgICBkZWYgdGVzdF9odHRwX2JvZHlfYXJyYXkoc2VsZik6CiAgICAgICAgICMgYXJyYXkuYXJyYXkgSXRlcmFibGUgLSBDb250ZW50IExlbmd0aCBpcyBjYWxjdWxhdGVkCiAKKyAgICAgICAgaCA9IHVybGxpYi5yZXF1ZXN0LkFic3RyYWN0SFRUUEhhbmRsZXIoKQorICAgICAgICBvID0gaC5wYXJlbnQgPSBNb2NrT3BlbmVyKCkKKwogICAgICAgICBpdGVyYWJsZV9hcnJheSA9IGFycmF5LmFycmF5KCJJIixbMSwyLDMsNF0pCiAKICAgICAgICAgZm9yIGhlYWRlcnMgaW4ge30sIHsiQ29udGVudC1MZW5ndGgiOiAxNn06CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjJfbG9jYWxuZXQucHkKaW5kZXggYzhiMzdlZS4uZTZhNTIyYyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWIyX2xvY2FsbmV0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMl9sb2NhbG5ldC5weQpAQCAtMjg5LDEyICsyODksMTIgQEAKICAgICAgICAgZGVmIGh0dHBfc2VydmVyX3dpdGhfYmFzaWNfYXV0aF9oYW5kbGVyKCphcmdzLCAqKmt3YXJncyk6CiAgICAgICAgICAgICByZXR1cm4gQmFzaWNBdXRoSGFuZGxlcigqYXJncywgKiprd2FyZ3MpCiAgICAgICAgIHNlbGYuc2VydmVyID0gTG9vcGJhY2tIdHRwU2VydmVyVGhyZWFkKGh0dHBfc2VydmVyX3dpdGhfYmFzaWNfYXV0aF9oYW5kbGVyKQorICAgICAgICBzZWxmLmFkZENsZWFudXAoc2VsZi5zZXJ2ZXIuc3RvcCkKICAgICAgICAgc2VsZi5zZXJ2ZXJfdXJsID0gJ2h0dHA6Ly8xMjcuMC4wLjE6JXMnICUgc2VsZi5zZXJ2ZXIucG9ydAogICAgICAgICBzZWxmLnNlcnZlci5zdGFydCgpCiAgICAgICAgIHNlbGYuc2VydmVyLnJlYWR5LndhaXQoKQogCiAgICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKICAgICAgICAgc3VwZXIoQmFzaWNBdXRoVGVzdHMsIHNlbGYpLnRlYXJEb3duKCkKIAogICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGhfc3VjY2VzcyhzZWxmKToKQEAgLTQzOCwxNyArNDM4LDEzIEBACiAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKFRlc3RVcmxvcGVuLCBzZWxmKS5zZXRVcCgpCi0gICAgICAgICMgSWdub3JlIHByb3hpZXMgZm9yIGxvY2FsaG9zdCB0ZXN0cy4KLSAgICAgICAgc2VsZi5vbGRfZW52aXJvbiA9IG9zLmVudmlyb24uY29weSgpCi0gICAgICAgIG9zLmVudmlyb25bJ05PX1BST1hZJ10gPSAnKicKLSAgICAgICAgc2VsZi5zZXJ2ZXIgPSBOb25lCiAKLSAgICBkZWYgdGVhckRvd24oc2VsZik6Ci0gICAgICAgIGlmIHNlbGYuc2VydmVyIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc3RvcCgpCi0gICAgICAgIG9zLmVudmlyb24uY2xlYXIoKQotICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShzZWxmLm9sZF9lbnZpcm9uKQotICAgICAgICBzdXBlcihUZXN0VXJsb3Blbiwgc2VsZikudGVhckRvd24oKQorICAgICAgICAjIElnbm9yZSBwcm94aWVzIGZvciBsb2NhbGhvc3QgdGVzdHMuCisgICAgICAgIGRlZiByZXN0b3JlX2Vudmlyb24ob2xkX2Vudmlyb24pOgorICAgICAgICAgICAgb3MuZW52aXJvbi5jbGVhcigpCisgICAgICAgICAgICBvcy5lbnZpcm9uLnVwZGF0ZShvbGRfZW52aXJvbikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHJlc3RvcmVfZW52aXJvbiwgb3MuZW52aXJvbi5jb3B5KCkpCisgICAgICAgIG9zLmVudmlyb25bJ05PX1BST1hZJ10gPSAnKicKIAogICAgIGRlZiB1cmxvcGVuKHNlbGYsIHVybCwgZGF0YT1Ob25lLCAqKmt3YXJncyk6CiAgICAgICAgIGwgPSBbXQpAQCAtNDY5LDYgKzQ2NSw3IEBACiAgICAgICAgIGhhbmRsZXIgPSBHZXRSZXF1ZXN0SGFuZGxlcihyZXNwb25zZXMpCiAKICAgICAgICAgc2VsZi5zZXJ2ZXIgPSBMb29wYmFja0h0dHBTZXJ2ZXJUaHJlYWQoaGFuZGxlcikKKyAgICAgICAgc2VsZi5hZGRDbGVhbnVwKHNlbGYuc2VydmVyLnN0b3ApCiAgICAgICAgIHNlbGYuc2VydmVyLnN0YXJ0KCkKICAgICAgICAgc2VsZi5zZXJ2ZXIucmVhZHkud2FpdCgpCiAgICAgICAgIHBvcnQgPSBzZWxmLnNlcnZlci5wb3J0CkBAIC01NTEsMjYgKzU0OCwyOCBAQAogCiAgICAgZGVmIHRlc3RfaHR0cHNfd2l0aF9jYWZpbGUoc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2xvY2FsaG9zdCkKLSAgICAgICAgIyBHb29kIGNlcnQKLSAgICAgICAgZGF0YSA9IHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGRhdGEsIGIid2UgY2FyZSBhIGJpdCIpCi0gICAgICAgICMgQmFkIGNlcnQKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWZpbGU9Q0VSVF9mYWtlaG9zdG5hbWUpCi0gICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKLSAgICAgICAgaGFuZGxlciA9IHNlbGYuc3RhcnRfaHR0cHNfc2VydmVyKGNlcnRmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQotICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHNzbC5DZXJ0aWZpY2F0ZUVycm9yKSBhcyBjbToKLSAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfZmFrZWhvc3RuYW1lKQorICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCcnLCBEZXByZWNhdGlvbldhcm5pbmcpKToKKyAgICAgICAgICAgICMgR29vZCBjZXJ0CisgICAgICAgICAgICBkYXRhID0gc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FmaWxlPUNFUlRfbG9jYWxob3N0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBiIndlIGNhcmUgYSBiaXQiKQorICAgICAgICAgICAgIyBCYWQgY2VydAorICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgICMgR29vZCBjZXJ0LCBidXQgbWlzbWF0Y2hpbmcgaG9zdG5hbWUKKyAgICAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X2h0dHBzX3NlcnZlcihjZXJ0ZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoc3NsLkNlcnRpZmljYXRlRXJyb3IpIGFzIGNtOgorICAgICAgICAgICAgICAgIHNlbGYudXJsb3BlbigiaHR0cHM6Ly9sb2NhbGhvc3Q6JXMvYml6YXJyZSIgJSBoYW5kbGVyLnBvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNhZmlsZT1DRVJUX2Zha2Vob3N0bmFtZSkKIAogICAgIGRlZiB0ZXN0X2h0dHBzX3dpdGhfY2FkZWZhdWx0KHNlbGYpOgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9odHRwc19zZXJ2ZXIoY2VydGZpbGU9Q0VSVF9sb2NhbGhvc3QpCiAgICAgICAgICMgU2VsZi1zaWduZWQgY2VydCBzaG91bGQgZmFpbCB2ZXJpZmljYXRpb24gd2l0aCBzeXN0ZW0gY2VydGlmaWNhdGUgc3RvcmUKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyh1cmxsaWIuZXJyb3IuVVJMRXJyb3IpIGFzIGNtOgotICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjYWRlZmF1bHQ9VHJ1ZSkKKyAgICAgICAgd2l0aCBzdXBwb3J0LmNoZWNrX3dhcm5pbmdzKCgnJywgRGVwcmVjYXRpb25XYXJuaW5nKSk6CisgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKHVybGxpYi5lcnJvci5VUkxFcnJvcikgYXMgY206CisgICAgICAgICAgICAgICAgc2VsZi51cmxvcGVuKCJodHRwczovL2xvY2FsaG9zdDolcy9iaXphcnJlIiAlIGhhbmRsZXIucG9ydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FkZWZhdWx0PVRydWUpCiAKICAgICBkZWYgdGVzdF9odHRwc19zbmkoc2VsZik6CiAgICAgICAgIGlmIHNzbCBpcyBOb25lOgpAQCAtNTkyLDcgKzU5MSw4IEBACiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCiAgICAgICAgIHJlcSA9IHVybGxpYi5yZXF1ZXN0LlJlcXVlc3QoImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIGhhbmRsZXIucG9ydCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWFkZXJzPXsiUmFuZ2UiOiAiYnl0ZXM9MjAtMzkifSkKLSAgICAgICAgdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpCisgICAgICAgIHdpdGggdXJsbGliLnJlcXVlc3QudXJsb3BlbihyZXEpOgorICAgICAgICAgICAgcGFzcwogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhhbmRsZXIuaGVhZGVyc19yZWNlaXZlZFsiUmFuZ2UiXSwgImJ5dGVzPTIwLTM5IikKIAogICAgIGRlZiB0ZXN0X2Jhc2ljKHNlbGYpOgpAQCAtNjA4LDIyICs2MDgsMjEgQEAKIAogICAgIGRlZiB0ZXN0X2luZm8oc2VsZik6CiAgICAgICAgIGhhbmRsZXIgPSBzZWxmLnN0YXJ0X3NlcnZlcigpCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIG9wZW5fdXJsID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigKLSAgICAgICAgICAgICAgICAiaHR0cDovL2xvY2FsaG9zdDolcyIgJSBoYW5kbGVyLnBvcnQpCisgICAgICAgIG9wZW5fdXJsID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbigKKyAgICAgICAgICAgICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKKyAgICAgICAgd2l0aCBvcGVuX3VybDoKICAgICAgICAgICAgIGluZm9fb2JqID0gb3Blbl91cmwuaW5mbygpCi0gICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoaW5mb19vYmosIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnN0YW5jZSBvZiBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UiKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvX29iai5nZXRfY29udGVudF9zdWJ0eXBlKCksICJwbGFpbiIpCi0gICAgICAgIGZpbmFsbHk6Ci0gICAgICAgICAgICBzZWxmLnNlcnZlci5zdG9wKCkKKyAgICAgICAgc2VsZi5hc3NlcnRJc0luc3RhbmNlKGluZm9fb2JqLCBlbWFpbC5tZXNzYWdlLk1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0IHJldHVybmVkIGJ5ICdpbmZvJyBpcyBub3QgYW4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImluc3RhbmNlIG9mIGVtYWlsLm1lc3NhZ2UuTWVzc2FnZSIpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mb19vYmouZ2V0X2NvbnRlbnRfc3VidHlwZSgpLCAicGxhaW4iKQogCiAgICAgZGVmIHRlc3RfZ2V0dXJsKHNlbGYpOgogICAgICAgICAjIE1ha2Ugc3VyZSBzYW1lIFVSTCBhcyBvcGVuZWQgaXMgcmV0dXJuZWQgYnkgZ2V0dXJsLgogICAgICAgICBoYW5kbGVyID0gc2VsZi5zdGFydF9zZXJ2ZXIoKQogICAgICAgICBvcGVuX3VybCA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4oImh0dHA6Ly9sb2NhbGhvc3Q6JXMiICUgaGFuZGxlci5wb3J0KQotICAgICAgICB1cmwgPSBvcGVuX3VybC5nZXR1cmwoKQorICAgICAgICB3aXRoIG9wZW5fdXJsOgorICAgICAgICAgICAgdXJsID0gb3Blbl91cmwuZ2V0dXJsKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh1cmwsICJodHRwOi8vbG9jYWxob3N0OiVzIiAlIGhhbmRsZXIucG9ydCkKIAogICAgIGRlZiB0ZXN0X2l0ZXJhdGlvbihzZWxmKToKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfdXJsbGlibmV0LnB5IGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKaW5kZXggYjgxMTkzMC4uOTQ5NzE2YyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF91cmxsaWJuZXQucHkKQEAgLTQsNyArNCw2IEBACiBpbXBvcnQgY29udGV4dGxpYgogaW1wb3J0IHNvY2tldAogaW1wb3J0IHVybGxpYi5yZXF1ZXN0Ci1pbXBvcnQgc3lzCiBpbXBvcnQgb3MKIGltcG9ydCBlbWFpbC5tZXNzYWdlCiBpbXBvcnQgdGltZQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weSBiL0xpYi90ZXN0L3Rlc3RfdXJscGFyc2UucHkKaW5kZXggNzFhYmMxNC4uOTljNWMwMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91cmxwYXJzZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VybHBhcnNlLnB5CkBAIC02MDcsMjkgKzYwNywyNyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9ydCwgODApCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5nZXR1cmwoKSwgdXJsKQogCi0gICAgICAgICMgVmVyaWZ5IGFuIGlsbGVnYWwgcG9ydCBpcyByZXR1cm5lZCBhcyBOb25lCisgICAgICAgICMgVmVyaWZ5IGFuIGlsbGVnYWwgcG9ydCByYWlzZXMgVmFsdWVFcnJvcgogICAgICAgICB1cmwgPSBiIkhUVFA6Ly9XV1cuUFlUSE9OLk9SRzo2NTUzNi9kb2MvI2ZyYWciCiAgICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQodXJsKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAucG9ydCwgTm9uZSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4KFZhbHVlRXJyb3IsICJvdXQgb2YgcmFuZ2UiKToKKyAgICAgICAgICAgIHAucG9ydAogCiAgICAgZGVmIHRlc3RfYXR0cmlidXRlc19iYWRfcG9ydChzZWxmKToKLSAgICAgICAgIiIiQ2hlY2sgaGFuZGxpbmcgb2Ygbm9uLWludGVnZXIgcG9ydHMuIiIiCi0gICAgICAgIHAgPSB1cmxsaWIucGFyc2UudXJsc3BsaXQoImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgInd3dy5leGFtcGxlLm5ldDpmb28iKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCBsYW1iZGE6IHAucG9ydCkKLQotICAgICAgICBwID0gdXJsbGliLnBhcnNlLnVybHBhcnNlKCJodHRwOi8vd3d3LmV4YW1wbGUubmV0OmZvbyIpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsICJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgIyBPbmNlIGFnYWluLCByZXBlYXQgb3Vyc2VsdmVzIHRvIHRlc3QgYnl0ZXMKLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxzcGxpdChiImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgYiJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCi0KLSAgICAgICAgcCA9IHVybGxpYi5wYXJzZS51cmxwYXJzZShiImh0dHA6Ly93d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLm5ldGxvYywgYiJ3d3cuZXhhbXBsZS5uZXQ6Zm9vIikKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgbGFtYmRhOiBwLnBvcnQpCisgICAgICAgICIiIkNoZWNrIGhhbmRsaW5nIG9mIGludmFsaWQgcG9ydHMuIiIiCisgICAgICAgIGZvciBieXRlcyBpbiAoRmFsc2UsIFRydWUpOgorICAgICAgICAgICAgZm9yIHBhcnNlIGluICh1cmxsaWIucGFyc2UudXJsc3BsaXQsIHVybGxpYi5wYXJzZS51cmxwYXJzZSk6CisgICAgICAgICAgICAgICAgZm9yIHBvcnQgaW4gKCJmb28iLCAiMS41IiwgIi0xIiwgIjB4MTAiKToKKyAgICAgICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoYnl0ZXM9Ynl0ZXMsIHBhcnNlPXBhcnNlLCBwb3J0PXBvcnQpOgorICAgICAgICAgICAgICAgICAgICAgICAgbmV0bG9jID0gInd3dy5leGFtcGxlLm5ldDoiICsgcG9ydAorICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly8iICsgbmV0bG9jCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBieXRlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXRsb2MgPSBuZXRsb2MuZW5jb2RlKCJhc2NpaSIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gdXJsLmVuY29kZSgiYXNjaWkiKQorICAgICAgICAgICAgICAgICAgICAgICAgcCA9IHBhcnNlKHVybCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5uZXRsb2MsIG5ldGxvYykKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcC5wb3J0CiAKICAgICBkZWYgdGVzdF9hdHRyaWJ1dGVzX3dpdGhvdXRfbmV0bG9jKHNlbGYpOgogICAgICAgICAjIFRoaXMgZXhhbXBsZSBpcyBzdHJhaWdodCBmcm9tIFJGQyAzMjYxLiAgSXQgbG9va3MgbGlrZSBpdApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weSBiL0xpYi90ZXN0L3Rlc3RfdXNlcmRpY3QucHkKaW5kZXggODM1N2Y4Yi4uNjYyYzdmNiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2VyZGljdC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3VzZXJkaWN0LnB5CkBAIC0xLDYgKzEsNiBAQAogIyBDaGVjayBldmVyeSBwYXRoIHRocm91Z2ggZXZlcnkgbWV0aG9kIG9mIFVzZXJEaWN0CiAKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbWFwcGluZ190ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBtYXBwaW5nX3Rlc3RzCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBjb2xsZWN0aW9ucwogCkBAIC0zMCw3ICszMCw3IEBACiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3Qob25lPTEsIHR3bz0yKSwgZDIpCiAgICAgICAgICMgaXRlbSBzZXF1ZW5jZSBjb25zdHJ1Y3RvcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KFsoJ29uZScsMSksICgndHdvJywyKV0pLCBkMikKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIidkaWN0JyIpOgorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnNSZWdleChEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29sbGVjdGlvbnMuVXNlckRpY3QoZGljdD1bKCdvbmUnLDEpLCAoJ3R3bycsMildKSwgZDIpCiAgICAgICAgICMgYm90aCB0b2dldGhlcgogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbGxlY3Rpb25zLlVzZXJEaWN0KFsoJ29uZScsMSksICgndHdvJywyKV0sIHR3bz0zLCB0aHJlZT01KSwgZDMpCkBAIC0xNDksNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdkaWN0JywgNDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGNvbGxlY3Rpb25zLlVzZXJEaWN0KHt9LCBkaWN0PU5vbmUpLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgIFsoJ2RpY3QnLCBOb25lKV0pCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICInZGljdCciKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiJ2RpY3QnIik6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxpc3QoY29sbGVjdGlvbnMuVXNlckRpY3QoZGljdD17J2EnOiA0Mn0pLml0ZW1zKCkpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbKCdhJywgNDIpXSkKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBjb2xsZWN0aW9ucy5Vc2VyRGljdCwgNDIpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5IGIvTGliL3Rlc3QvdGVzdF91c2VybGlzdC5weQppbmRleCBmOTJlNGQzLi44ZGU2YzE0IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3VzZXJsaXN0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcmxpc3QucHkKQEAgLTEsNyArMSw3IEBACiAjIENoZWNrIGV2ZXJ5IHBhdGggdGhyb3VnaCBldmVyeSBtZXRob2Qgb2YgVXNlckxpc3QKIAogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlckxpc3QKLWZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydCwgbGlzdF90ZXN0cworZnJvbSB0ZXN0IGltcG9ydCBsaXN0X3Rlc3RzCiBpbXBvcnQgdW5pdHRlc3QKIAogY2xhc3MgVXNlckxpc3RUZXN0KGxpc3RfdGVzdHMuQ29tbW9uVGVzdCk6CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkgYi9MaWIvdGVzdC90ZXN0X3VzZXJzdHJpbmcucHkKaW5kZXggOWJjOGVkZC4uNzE1MjgyMiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91c2Vyc3RyaW5nLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdXNlcnN0cmluZy5weQpAQCAtMSw5ICsxLDggQEAKICMgVXNlclN0cmluZyBpcyBhIHdyYXBwZXIgYXJvdW5kIHRoZSBuYXRpdmUgYnVpbHRpbiBzdHJpbmcgdHlwZS4KICMgVXNlclN0cmluZyBpbnN0YW5jZXMgc2hvdWxkIGJlaGF2ZSBzaW1pbGFyIHRvIGJ1aWx0aW4gc3RyaW5nIG9iamVjdHMuCiAKLWltcG9ydCBzdHJpbmcKIGltcG9ydCB1bml0dGVzdAotZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0LCBzdHJpbmdfdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3RyaW5nX3Rlc3RzCiAKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IFVzZXJTdHJpbmcKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF9wZXAzMTIwLnB5IGIvTGliL3Rlc3QvdGVzdF91dGY4c291cmNlLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDMxMjAucHkKcmVuYW1lIHRvIExpYi90ZXN0L3Rlc3RfdXRmOHNvdXJjZS5weQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF91dS5weSBiL0xpYi90ZXN0L3Rlc3RfdXUucHkKaW5kZXggMjVmZmZiZi4uYWQyZjJjNSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF91dS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3V1LnB5CkBAIC04LDcgKzgsNiBAQAogCiBpbXBvcnQgc3lzLCBvcwogaW1wb3J0IHV1Ci1mcm9tIGlvIGltcG9ydCBCeXRlc0lPCiBpbXBvcnQgaW8KIAogcGxhaW50ZXh0ID0gYiJUaGUgc21vb3RoLXNjYWxlZCBweXRob24gY3JlcHQgb3ZlciB0aGUgc2xlZXBpbmcgZG9nXG4iCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ZlbnYucHkgYi9MaWIvdGVzdC90ZXN0X3ZlbnYucHkKaW5kZXggMzk5OWQxZi4uZjRhZDdjNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF92ZW52LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfdmVudi5weQpAQCAtMTUsNyArMTUsNiBAQAogaW1wb3J0IHRlbXBmaWxlCiBmcm9tIHRlc3Quc3VwcG9ydCBpbXBvcnQgKGNhcHR1cmVkX3N0ZG91dCwgY2FwdHVyZWRfc3RkZXJyLAogICAgICAgICAgICAgICAgICAgICAgICAgICBjYW5fc3ltbGluaywgRW52aXJvbm1lbnRWYXJHdWFyZCwgcm10cmVlKQotaW1wb3J0IHRleHR3cmFwCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCB2ZW52CiAKQEAgLTM5LDE1ICszOCw5IEBACiBza2lwSW5WZW52ID0gdW5pdHRlc3Quc2tpcElmKHN5cy5wcmVmaXggIT0gc3lzLmJhc2VfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnVGVzdCBub3QgYXBwcm9wcmlhdGUgaW4gYSB2ZW52JykKIAotIyBvcy5wYXRoLmV4aXN0cygnbnVsJykgaXMgRmFsc2U6IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyMDU0MQotaWYgb3MuZGV2bnVsbC5sb3dlcigpID09ICdudWwnOgotICAgIGZhaWxzT25XaW5kb3dzID0gdW5pdHRlc3QuZXhwZWN0ZWRGYWlsdXJlCi1lbHNlOgotICAgIGRlZiBmYWlsc09uV2luZG93cyhmKToKLSAgICAgICAgcmV0dXJuIGYKLQogY2xhc3MgQmFzZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgogICAgICIiIkJhc2UgY2xhc3MgZm9yIHZlbnYgdGVzdHMuIiIiCisgICAgbWF4RGlmZiA9IDgwICogNTAKIAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgc2VsZi5lbnZfZGlyID0gb3MucGF0aC5yZWFscGF0aCh0ZW1wZmlsZS5ta2R0ZW1wKCkpCkBAIC01Nyw3ICs1MCw3IEBACiAgICAgICAgICAgICBzZWxmLmluY2x1ZGUgPSAnSW5jbHVkZScKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYuYmluZGlyID0gJ2JpbicKLSAgICAgICAgICAgIHNlbGYubGliID0gKCdsaWInLCAncHl0aG9uJXMnICUgc3lzLnZlcnNpb25bOjNdKQorICAgICAgICAgICAgc2VsZi5saWIgPSAoJ2xpYicsICdweXRob24lZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSkKICAgICAgICAgICAgIHNlbGYuaW5jbHVkZSA9ICdpbmNsdWRlJwogICAgICAgICBpZiBzeXMucGxhdGZvcm0gPT0gJ2RhcndpbicgYW5kICdfX1BZVkVOVl9MQVVOQ0hFUl9fJyBpbiBvcy5lbnZpcm9uOgogICAgICAgICAgICAgZXhlY3V0YWJsZSA9IG9zLmVudmlyb25bJ19fUFlWRU5WX0xBVU5DSEVSX18nXQpAQCAtMTIxLDYgKzExNCwxNyBAQAogICAgICAgICAgICAgcHJpbnQoJyAgICAlcicgJSBvcy5saXN0ZGlyKGJkKSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGZuKSwgJ0ZpbGUgJXIgc2hvdWxkIGV4aXN0LicgJSBmbikKIAorICAgIGRlZiB0ZXN0X3Byb21wdChzZWxmKToKKyAgICAgICAgZW52X25hbWUgPSBvcy5wYXRoLnNwbGl0KHNlbGYuZW52X2RpcilbMV0KKworICAgICAgICBidWlsZGVyID0gdmVudi5FbnZCdWlsZGVyKCkKKyAgICAgICAgY29udGV4dCA9IGJ1aWxkZXIuZW5zdXJlX2RpcmVjdG9yaWVzKHNlbGYuZW52X2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb250ZXh0LnByb21wdCwgJyglcykgJyAlIGVudl9uYW1lKQorCisgICAgICAgIGJ1aWxkZXIgPSB2ZW52LkVudkJ1aWxkZXIocHJvbXB0PSdNeSBwcm9tcHQnKQorICAgICAgICBjb250ZXh0ID0gYnVpbGRlci5lbnN1cmVfZGlyZWN0b3JpZXMoc2VsZi5lbnZfZGlyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbnRleHQucHJvbXB0LCAnKE15IHByb21wdCkgJykKKwogICAgIEBza2lwSW5WZW52CiAgICAgZGVmIHRlc3RfcHJlZml4ZXMoc2VsZik6CiAgICAgICAgICIiIgpAQCAtMzE4LDE2ICszMjIsMjEgQEAKICAgICAgICAgc2VsZi5ydW5fd2l0aF9jYXB0dXJlKHZlbnYuY3JlYXRlLCBzZWxmLmVudl9kaXIsIHdpdGhfcGlwPUZhbHNlKQogICAgICAgICBzZWxmLmFzc2VydF9waXBfbm90X2luc3RhbGxlZCgpCiAKLSAgICBAZmFpbHNPbldpbmRvd3MKLSAgICBkZWYgdGVzdF9kZXZudWxsX2V4aXN0c19hbmRfaXNfZW1wdHkoc2VsZik6CisgICAgZGVmIHRlc3RfZGV2bnVsbChzZWxmKToKICAgICAgICAgIyBGaXggZm9yIGlzc3VlICMyMDA1MyB1c2VzIG9zLmRldm51bGwgdG8gZm9yY2UgYSBjb25maWcgZmlsZSB0bwogICAgICAgICAjIGFwcGVhciBlbXB0eS4gSG93ZXZlciBodHRwOi8vYnVncy5weXRob24ub3JnL2lzc3VlMjA1NDEgbWVhbnMKICAgICAgICAgIyB0aGF0IGRvZXNuJ3QgY3VycmVudGx5IHdvcmsgcHJvcGVybHkgb24gV2luZG93cy4gT25jZSB0aGF0IGlzCiAgICAgICAgICMgZml4ZWQsIHRoZSAid2luX2xvY2F0aW9uIiBwYXJ0IG9mIHRlc3Rfd2l0aF9waXAgc2hvdWxkIGJlIHJlc3RvcmVkCi0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5kZXZudWxsKSkKICAgICAgICAgd2l0aCBvcGVuKG9zLmRldm51bGwsICJyYiIpIGFzIGY6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGYucmVhZCgpLCBiIiIpCiAKKyAgICAgICAgIyBJc3N1ZSAjMjA1NDE6IG9zLnBhdGguZXhpc3RzKCdudWwnKSBpcyBGYWxzZSBvbiBXaW5kb3dzCisgICAgICAgIGlmIG9zLmRldm51bGwubG93ZXIoKSA9PSAnbnVsJzoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3MucGF0aC5leGlzdHMob3MuZGV2bnVsbCkpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MuZGV2bnVsbCkpCisKKwogICAgICMgUmVxdWVzdGluZyBwaXAgZmFpbHMgd2l0aG91dCBTU0wgKGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUxOTc0NCkKICAgICBAdW5pdHRlc3Quc2tpcElmKHNzbCBpcyBOb25lLCBlbnN1cmVwaXAuX01JU1NJTkdfU1NMX01FU1NBR0UpCiAgICAgQHVuaXR0ZXN0LnNraXBVbmxlc3ModGhyZWFkaW5nLCAnc29tZSBkZXBlbmRlbmNpZXMgb2YgcGlwIGltcG9ydCB0aHJlYWRpbmcnCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5IGIvTGliL3Rlc3QvdGVzdF93YXJuaW5ncy9fX2luaXRfXy5weQppbmRleCA4NGE2ZmI1Li5jMTFlZTQwIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhcm5pbmdzL19faW5pdF9fLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3Rfd2FybmluZ3MvX19pbml0X18ucHkKQEAgLTIsNyArMiw5IEBACiBpbXBvcnQgbGluZWNhY2hlCiBpbXBvcnQgb3MKIGZyb20gaW8gaW1wb3J0IFN0cmluZ0lPCitpbXBvcnQgcmUKIGltcG9ydCBzeXMKK2ltcG9ydCB0ZXh0d3JhcAogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IHN1cHBvcnQKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IGFzc2VydF9weXRob25fb2ssIGFzc2VydF9weXRob25fZmFpbHVyZQpAQCAtNzIwLDYgKzcyMiwxNyBAQAogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN0cmVhbS5nZXR2YWx1ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0SW4odGV4dCwgcmVzdWx0KQogCisgICAgZGVmIHRlc3Rfc2hvd3dhcm5tc2dfbWlzc2luZyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgX3Nob3d3YXJubXNnKCkgbWlzc2luZyBpcyBva2F5LgorICAgICAgICB0ZXh0ID0gJ2RlbCBfc2hvd3dhcm5tc2cgdGVzdCcKKyAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgorICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQorICAgICAgICAgICAgZGVsIHNlbGYubW9kdWxlLl9zaG93d2Fybm1zZworICAgICAgICAgICAgd2l0aCBzdXBwb3J0LmNhcHR1cmVkX291dHB1dCgnc3RkZXJyJykgYXMgc3RyZWFtOgorICAgICAgICAgICAgICAgIHNlbGYubW9kdWxlLndhcm4odGV4dCkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSBzdHJlYW0uZ2V0dmFsdWUoKQorICAgICAgICBzZWxmLmFzc2VydEluKHRleHQsIHJlc3VsdCkKKwogICAgIGRlZiB0ZXN0X3Nob3d3YXJuaW5nX25vdF9jYWxsYWJsZShzZWxmKToKICAgICAgICAgd2l0aCBvcmlnaW5hbF93YXJuaW5ncy5jYXRjaF93YXJuaW5ncyhtb2R1bGU9c2VsZi5tb2R1bGUpOgogICAgICAgICAgICAgc2VsZi5tb2R1bGUuZmlsdGVyd2FybmluZ3MoImFsd2F5cyIsIGNhdGVnb3J5PVVzZXJXYXJuaW5nKQpAQCAtODIxLDEyICs4MzQsNDQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZV9vYmplY3QsIGV4cGVjdGVkX2ZpbGVfbGluZSkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChleHBlY3QsIGZpbGVfb2JqZWN0LmdldHZhbHVlKCkpCiAKKwogY2xhc3MgQ1dhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gY193YXJuaW5ncwogCiBjbGFzcyBQeVdhcm5pbmdzRGlzcGxheVRlc3RzKFdhcm5pbmdzRGlzcGxheVRlc3RzLCB1bml0dGVzdC5UZXN0Q2FzZSk6CiAgICAgbW9kdWxlID0gcHlfd2FybmluZ3MKIAorICAgIGRlZiB0ZXN0X3RyYWNlbWFsbG9jKHNlbGYpOgorICAgICAgICBzZWxmLmFkZENsZWFudXAoc3VwcG9ydC51bmxpbmssIHN1cHBvcnQuVEVTVEZOKQorCisgICAgICAgIHdpdGggb3BlbihzdXBwb3J0LlRFU1RGTiwgJ3cnKSBhcyBmcDoKKyAgICAgICAgICAgIGZwLndyaXRlKHRleHR3cmFwLmRlZGVudCgiIiIKKyAgICAgICAgICAgICAgICBkZWYgZnVuYygpOgorICAgICAgICAgICAgICAgICAgICBmID0gb3BlbihfX2ZpbGVfXykKKyAgICAgICAgICAgICAgICAgICAgIyBFbWl0IFJlc291cmNlV2FybmluZworICAgICAgICAgICAgICAgICAgICBmID0gTm9uZQorCisgICAgICAgICAgICAgICAgZnVuYygpCisgICAgICAgICAgICAiIiIpKQorCisgICAgICAgIHJlcyA9IGFzc2VydF9weXRob25fb2soJy1XZCcsICctWCcsICd0cmFjZW1hbGxvYz0yJywgc3VwcG9ydC5URVNURk4pCisKKyAgICAgICAgc3RkZXJyID0gcmVzLmVyci5kZWNvZGUoJ2FzY2lpJywgJ3JlcGxhY2UnKQorICAgICAgICAjIG5vcm1hbGl6ZSBuZXdsaW5lcworICAgICAgICBzdGRlcnIgPSAnXG4nLmpvaW4oc3RkZXJyLnNwbGl0bGluZXMoKSkKKyAgICAgICAgc3RkZXJyID0gcmUuc3ViKCc8Lio+JywgJzwuLi4+Jywgc3RkZXJyKQorICAgICAgICBleHBlY3RlZCA9IHRleHR3cmFwLmRlZGVudCgnJycKKyAgICAgICAgICAgIHtmbmFtZX06NTogUmVzb3VyY2VXYXJuaW5nOiB1bmNsb3NlZCBmaWxlIDwuLi4+CisgICAgICAgICAgICAgIGYgPSBOb25lCisgICAgICAgICAgICBPYmplY3QgYWxsb2NhdGVkIGF0IChtb3N0IHJlY2VudCBjYWxsIGZpcnN0KToKKyAgICAgICAgICAgICAgRmlsZSAie2ZuYW1lfSIsIGxpbmVubyAzCisgICAgICAgICAgICAgICAgZiA9IG9wZW4oX19maWxlX18pCisgICAgICAgICAgICAgIEZpbGUgIntmbmFtZX0iLCBsaW5lbm8gNworICAgICAgICAgICAgICAgIGZ1bmMoKQorICAgICAgICAnJycpCisgICAgICAgIGV4cGVjdGVkID0gZXhwZWN0ZWQuZm9ybWF0KGZuYW1lPXN1cHBvcnQuVEVTVEZOKS5zdHJpcCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RkZXJyLCBleHBlY3RlZCkKKwogCiBjbGFzcyBDYXRjaFdhcm5pbmdUZXN0cyhCYXNlVGVzdCk6CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weSBiL0xpYi90ZXN0L3Rlc3Rfd2F2ZS5weQppbmRleCAzZWZmNzczLi44NjY2ZjcyIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dhdmUucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93YXZlLnB5CkBAIC0xLDYgKzEsNiBAQAotZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IFRFU1RGTgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIHRlc3QgaW1wb3J0IGF1ZGlvdGVzdHMKK2Zyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSBhdWRpb29wIGltcG9ydCBieXRlc3dhcAogaW1wb3J0IHN5cwogaW1wb3J0IHdhdmUKQEAgLTEwMyw1ICsxMDMsMTEgQEAKICAgICAgICAgZnJhbWVzID0gYnl0ZXN3YXAoZnJhbWVzLCA0KQogCiAKK2NsYXNzIE1pc2NUZXN0Q2FzZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHRlc3RfX2FsbF9fKHNlbGYpOgorICAgICAgICBibGFja2xpc3QgPSB7J1dBVkVfRk9STUFUX1BDTSd9CisgICAgICAgIHN1cHBvcnQuY2hlY2tfX2FsbF9fKHNlbGYsIHdhdmUsIGJsYWNrbGlzdD1ibGFja2xpc3QpCisKKwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weSBiL0xpYi90ZXN0L3Rlc3Rfd2Vha3JlZi5weQppbmRleCA0Y2ZhYTU0Li5hNDc0YTA3IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dlYWtyZWYucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93ZWFrcmVmLnB5CkBAIC05MTksNyArOTE5LDcgQEAKICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShoYXNhdHRyKHIsICJfX2RpY3RfXyIpKQogCiAgICAgZGVmIHRlc3Rfc3ViY2xhc3NfcmVmc193aXRoX2N5Y2xlKHNlbGYpOgotICAgICAgICAjIEJ1ZyAjMzExMAorICAgICAgICAiIiJDb25maXJtIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzEwMCBpcyBmaXhlZC4iIiIKICAgICAgICAgIyBBbiBpbnN0YW5jZSBvZiBhIHdlYWtyZWYgc3ViY2xhc3MgY2FuIGhhdmUgYXR0cmlidXRlcy4KICAgICAgICAgIyBJZiBzdWNoIGEgd2Vha3JlZiBob2xkcyB0aGUgb25seSBzdHJvbmcgcmVmZXJlbmNlIHRvIHRoZSBvYmplY3QsCiAgICAgICAgICMgZGVsZXRpbmcgdGhlIHdlYWtyZWYgd2lsbCBkZWxldGUgdGhlIG9iamVjdC4gSW4gdGhpcyBjYXNlLApAQCAtMTMzMywxMyArMTMzMywxNiBAQAogICAgICAgICBvID0gT2JqZWN0KDEyMzQ1NikKICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgbiA9IGxlbihkaWN0KQotICAgICAgICAgICAgZGljdC5wb3BpdGVtKCkKKyAgICAgICAgICAgICMgU2luY2UgdW5kZXJsYXlpbmcgZGljdCBpcyBvcmRlcmVkLCBmaXJzdCBpdGVtIGlzIHBvcHBlZAorICAgICAgICAgICAgZGljdC5wb3AobmV4dChkaWN0LmtleXMoKSkpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDEpCiAgICAgICAgICAgICBkaWN0W29dID0gbwogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4pCisgICAgICAgICMgbGFzdCBpdGVtIGluIG9iamVjdHMgaXMgcmVtb3ZlZCBmcm9tIGRpY3QgaW4gY29udGV4dCBzaHV0ZG93bgogICAgICAgICB3aXRoIHRlc3Rjb250ZXh0KCk6CiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaWN0KSwgbiAtIDEpCi0gICAgICAgICAgICBkaWN0LnBvcChuZXh0KGRpY3Qua2V5cygpKSkKKyAgICAgICAgICAgICMgVGhlbiwgKG8sIG8pIGlzIHBvcHBlZAorICAgICAgICAgICAgZGljdC5wb3BpdGVtKCkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGRpY3QpLCBuIC0gMikKICAgICAgICAgd2l0aCB0ZXN0Y29udGV4dCgpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGljdCksIG4gLSAzKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5IGIvTGliL3Rlc3QvdGVzdF93ZWFrc2V0LnB5CmluZGV4IDljZTY3MmIuLjY5MWI5NWUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd2Vha3NldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dlYWtzZXQucHkKQEAgLTEsMTMgKzEsNiBAQAogaW1wb3J0IHVuaXR0ZXN0Ci1mcm9tIHdlYWtyZWYgaW1wb3J0IHByb3h5LCByZWYsIFdlYWtTZXQKLWltcG9ydCBvcGVyYXRvcgotaW1wb3J0IGNvcHkKK2Zyb20gd2Vha3JlZiBpbXBvcnQgV2Vha1NldAogaW1wb3J0IHN0cmluZwotaW1wb3J0IG9zCi1mcm9tIHJhbmRvbSBpbXBvcnQgcmFuZHJhbmdlLCBzaHVmZmxlCi1pbXBvcnQgc3lzCi1pbXBvcnQgd2FybmluZ3MKLWltcG9ydCBjb2xsZWN0aW9ucwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgVXNlclN0cmluZyBhcyB1c3RyCiBpbXBvcnQgZ2MKIGltcG9ydCBjb250ZXh0bGliCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luY29uc29sZWlvLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxYTJmN2EKLS0tIC9kZXYvbnVsbAorKysgYi9MaWIvdGVzdC90ZXN0X3dpbmNvbnNvbGVpby5weQpAQCAtMCwwICsxLDE0NyBAQAorJycnVGVzdHMgZm9yIFdpbmRvd3NDb25zb2xlSU8KKycnJworCitpbXBvcnQgaW8KK2ltcG9ydCB1bml0dGVzdAoraW1wb3J0IHN5cworCitpZiBzeXMucGxhdGZvcm0gIT0gJ3dpbjMyJzoKKyAgICByYWlzZSB1bml0dGVzdC5Ta2lwVGVzdCgidGVzdCBvbmx5IHJlbGV2YW50IG9uIHdpbjMyIikKKworZnJvbSBfdGVzdGNvbnNvbGUgaW1wb3J0IHdyaXRlX2lucHV0CisKK0NvbklPID0gaW8uX1dpbmRvd3NDb25zb2xlSU8KKworY2xhc3MgV2luZG93c0NvbnNvbGVJT1Rlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9hYmMoc2VsZik6CisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShpc3N1YmNsYXNzKENvbklPLCBpby5SYXdJT0Jhc2UpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGlzc3ViY2xhc3MoQ29uSU8sIGlvLkJ1ZmZlcmVkSU9CYXNlKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShpc3N1YmNsYXNzKENvbklPLCBpby5UZXh0SU9CYXNlKSkKKworICAgIGRlZiB0ZXN0X29wZW5fZmQoc2VsZik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygwKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgICMgY2Fubm90IG9wZW4gY29uc29sZSBiZWNhdXNlIGl0J3Mgbm90IGEgcmVhbCBjb25zb2xlCisgICAgICAgICAgICBwYXNzCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDAsIGYuZmlsZW5vKCkpCisgICAgICAgICAgICBmLmNsb3NlKCkgICAjIG11bHRpcGxlIGNsb3NlIHNob3VsZCBub3QgY3Jhc2gKKyAgICAgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGYgPSBDb25JTygxLCAndycpCisgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgIyBjYW5ub3Qgb3BlbiBjb25zb2xlIGJlY2F1c2UgaXQncyBub3QgYSByZWFsIGNvbnNvbGUKKyAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYud3JpdGFibGUoKSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoMSwgZi5maWxlbm8oKSkKKyAgICAgICAgICAgIGYuY2xvc2UoKQorICAgICAgICAgICAgZi5jbG9zZSgpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZiA9IENvbklPKDIsICd3JykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIGNhbm5vdCBvcGVuIGNvbnNvbGUgYmVjYXVzZSBpdCdzIG5vdCBhIHJlYWwgY29uc29sZQorICAgICAgICAgICAgcGFzcworICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLnJlYWRhYmxlKCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgyLCBmLmZpbGVubygpKQorICAgICAgICAgICAgZi5jbG9zZSgpCisgICAgICAgICAgICBmLmNsb3NlKCkKKworICAgIGRlZiB0ZXN0X29wZW5fbmFtZShzZWxmKToKKyAgICAgICAgZiA9IENvbklPKCJDT04iKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKGYud3JpdGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUoZi5maWxlbm8oKSkKKyAgICAgICAgZi5jbG9zZSgpICAgIyBtdWx0aXBsZSBjbG9zZSBzaG91bGQgbm90IGNyYXNoCisgICAgICAgIGYuY2xvc2UoKQorCisgICAgICAgIGYgPSBDb25JTygnQ09OSU4kJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGYucmVhZGFibGUoKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmLndyaXRhYmxlKCkpCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKGYuZmlsZW5vKCkpCisgICAgICAgIGYuY2xvc2UoKQorICAgICAgICBmLmNsb3NlKCkKKworICAgICAgICBmID0gQ29uSU8oJ0NPTk9VVCQnLCAndycpCisgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UoZi5yZWFkYWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUoZi53cml0YWJsZSgpKQorICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmLmZpbGVubygpKQorICAgICAgICBmLmNsb3NlKCkKKyAgICAgICAgZi5jbG9zZSgpCisKKyAgICBkZWYgYXNzZXJ0U3RkaW5Sb3VuZFRyaXAoc2VsZiwgdGV4dCk6CisgICAgICAgIHN0ZGluID0gb3BlbignQ09OSU4kJywgJ3InKQorICAgICAgICBvbGRfc3RkaW4gPSBzeXMuc3RkaW4KKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3lzLnN0ZGluID0gc3RkaW4KKyAgICAgICAgICAgIHdyaXRlX2lucHV0KAorICAgICAgICAgICAgICAgIHN0ZGluLmJ1ZmZlci5yYXcsCisgICAgICAgICAgICAgICAgKHRleHQgKyAnXHJcbicpLmVuY29kZSgndXRmLTE2LWxlJywgJ3N1cnJvZ2F0ZXBhc3MnKQorICAgICAgICAgICAgKQorICAgICAgICAgICAgYWN0dWFsID0gaW5wdXQoKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc3lzLnN0ZGluID0gb2xkX3N0ZGluCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYWN0dWFsLCB0ZXh0KQorCisgICAgZGVmIHRlc3RfaW5wdXQoc2VsZik6CisgICAgICAgICMgQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnYWJjMTIzJykKKyAgICAgICAgIyBOb24tQVNDSUkKKyAgICAgICAgc2VsZi5hc3NlcnRTdGRpblJvdW5kVHJpcCgnz7zRntCizrvQpNCZJykKKyAgICAgICAgIyBDb21iaW5pbmcgY2hhcmFjdGVycworICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdBzY9CIO+slsyzQUHMnScpCisgICAgICAgICMgTm9uLUJNUAorICAgICAgICBzZWxmLmFzc2VydFN0ZGluUm91bmRUcmlwKCdcVTAwMTAwMDAwXFUwMDEwZmZmZlxVMDAxMGZmZmQnKQorCisgICAgZGVmIHRlc3RfcGFydGlhbF9yZWFkcyhzZWxmKToKKyAgICAgICAgIyBUZXN0IHRoYXQgcmVhZGluZyBsZXNzIHRoYW4gMSBmdWxsIGNoYXJhY3RlciB3b3JrcyB3aGVuIHN0ZGluCisgICAgICAgICMgY29udGFpbnMgbXVsdGlieXRlIFVURi04IHNlcXVlbmNlcworICAgICAgICBzb3VyY2UgPSAnz7zRntCizrvQpNCZXHJcbicuZW5jb2RlKCd1dGYtMTYtbGUnKQorICAgICAgICBleHBlY3RlZCA9ICfPvNGe0KLOu9Ck0JlcclxuJy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZm9yIHJlYWRfY291bnQgaW4gcmFuZ2UoMSwgMTYpOgorICAgICAgICAgICAgd2l0aCBvcGVuKCdDT05JTiQnLCAncmInLCBidWZmZXJpbmc9MCkgYXMgc3RkaW46CisgICAgICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKworICAgICAgICAgICAgICAgIGFjdHVhbCA9IGInJworICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBhY3R1YWwuZW5kc3dpdGgoYidcbicpOgorICAgICAgICAgICAgICAgICAgICBiID0gc3RkaW4ucmVhZChyZWFkX2NvdW50KQorICAgICAgICAgICAgICAgICAgICBhY3R1YWwgKz0gYgorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCAnc3RkaW4ucmVhZCh7fSknLmZvcm1hdChyZWFkX2NvdW50KSkKKworICAgIGRlZiB0ZXN0X3BhcnRpYWxfc3Vycm9nYXRlX3JlYWRzKHNlbGYpOgorICAgICAgICAjIFRlc3QgdGhhdCByZWFkaW5nIGxlc3MgdGhhbiAxIGZ1bGwgY2hhcmFjdGVyIHdvcmtzIHdoZW4gc3RkaW4KKyAgICAgICAgIyBjb250YWlucyBzdXJyb2dhdGUgcGFpcnMgdGhhdCBjYW5ub3QgYmUgZGVjb2RlZCB0byBVVEYtOCB3aXRob3V0CisgICAgICAgICMgcmVhZGluZyBhbiBleHRyYSBjaGFyYWN0ZXIuCisgICAgICAgIHNvdXJjZSA9ICdcVTAwMTAxRkZGXFUwMDEwMTAwMVxyXG4nLmVuY29kZSgndXRmLTE2LWxlJykKKyAgICAgICAgZXhwZWN0ZWQgPSAnXFUwMDEwMUZGRlxVMDAxMDEwMDFcclxuJy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgZm9yIHJlYWRfY291bnQgaW4gcmFuZ2UoMSwgMTYpOgorICAgICAgICAgICAgd2l0aCBvcGVuKCdDT05JTiQnLCAncmInLCBidWZmZXJpbmc9MCkgYXMgc3RkaW46CisgICAgICAgICAgICAgICAgd3JpdGVfaW5wdXQoc3RkaW4sIHNvdXJjZSkKKworICAgICAgICAgICAgICAgIGFjdHVhbCA9IGInJworICAgICAgICAgICAgICAgIHdoaWxlIG5vdCBhY3R1YWwuZW5kc3dpdGgoYidcbicpOgorICAgICAgICAgICAgICAgICAgICBiID0gc3RkaW4ucmVhZChyZWFkX2NvdW50KQorICAgICAgICAgICAgICAgICAgICBhY3R1YWwgKz0gYgorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhY3R1YWwsIGV4cGVjdGVkLCAnc3RkaW4ucmVhZCh7fSknLmZvcm1hdChyZWFkX2NvdW50KSkKKworICAgIGRlZiB0ZXN0X2N0cmxfeihzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKCdDT05JTiQnLCAncmInLCBidWZmZXJpbmc9MCkgYXMgc3RkaW46CisgICAgICAgICAgICBzb3VyY2UgPSAnXHhDNFx4MUFcclxuJy5lbmNvZGUoJ3V0Zi0xNi1sZScpCisgICAgICAgICAgICBleHBlY3RlZCA9ICdceEM0Jy5lbmNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgIHdyaXRlX2lucHV0KHN0ZGluLCBzb3VyY2UpCisgICAgICAgICAgICBhLCBiID0gc3RkaW4ucmVhZCgxKSwgc3RkaW4ucmVhZGFsbCgpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkWzA6MV0sIGEpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGV4cGVjdGVkWzE6XSwgYikKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICB1bml0dGVzdC5tYWluKCkKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2lucmVnLnB5IGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKaW5kZXggNjAyMDdmYi4uZDY0MmIxMyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aW5yZWcucHkKQEAgLTM3LDYgKzM3LDcgQEAKIAogdGVzdF9kYXRhID0gWwogICAgICgiSW50IFZhbHVlIiwgICAgIDQ1LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUkVHX0RXT1JEKSwKKyAgICAoIlF3b3JkIFZhbHVlIiwgICAweDExMjIzMzQ0NTU2Njc3ODgsICAgICAgICAgICAgICAgICAgICAgIFJFR19RV09SRCksCiAgICAgKCJTdHJpbmcgVmFsIiwgICAgIkEgc3RyaW5nIHZhbHVlIiwgICAgICAgICAgICAgICAgICAgICAgICBSRUdfU1opLAogICAgICgiU3RyaW5nRXhwYW5kIiwgICJUaGUgcGF0aCBpcyAlcGF0aCUiLCAgICAgICAgICAgICAgICAgICAgUkVHX0VYUEFORF9TWiksCiAgICAgKCJNdWx0aS1zdHJpbmciLCAgWyJMb3RzIiwgIm9mIiwgInN0cmluZyIsICJ2YWx1ZXMiXSwgICAgICBSRUdfTVVMVElfU1opLApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2luc291bmQucHkKaW5kZXggNGE4YWI3ZC4uMTc5ZTA2OSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF93aW5zb3VuZC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dpbnNvdW5kLnB5CkBAIC01MSw2ICs1MSwxMCBAQAogICAgICAgICBmb3IgaSBpbiByYW5nZSgxMDAsIDIwMDAsIDEwMCk6CiAgICAgICAgICAgICBzYWZlX0JlZXAoaSwgNzUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfQmVlcChkdXJhdGlvbj03NSwgZnJlcXVlbmN5PTIwMDApCisKKwogY2xhc3MgTWVzc2FnZUJlZXBUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIAogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKQEAgLTc2LDYgKzgwLDkgQEAKICAgICBkZWYgdGVzdF9xdWVzdGlvbihzZWxmKToKICAgICAgICAgc2FmZV9NZXNzYWdlQmVlcCh3aW5zb3VuZC5NQl9JQ09OUVVFU1RJT04pCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfTWVzc2FnZUJlZXAodHlwZT13aW5zb3VuZC5NQl9PSykKKwogCiBjbGFzcyBQbGF5U291bmRUZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKIApAQCAtODcsNiArOTQsMjUgQEAKICAgICAgICAgICAgIHdpbnNvdW5kLlBsYXlTb3VuZCwKICAgICAgICAgICAgICJub25lIiwgd2luc291bmQuU05EX0FTWU5DIHwgd2luc291bmQuU05EX01FTU9SWQogICAgICAgICApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCBiImJhZCIsIDApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvciwgd2luc291bmQuUGxheVNvdW5kLCAiYmFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2luc291bmQuU05EX01FTU9SWSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCB3aW5zb3VuZC5QbGF5U291bmQsIDEsIDApCisKKyAgICBkZWYgdGVzdF9rZXl3b3JkX2FyZ3Moc2VsZik6CisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZsYWdzPXdpbnNvdW5kLlNORF9BTElBUywgc291bmQ9IlN5c3RlbUV4aXQiKQorCisgICAgZGVmIHRlc3Rfc25kX21lbW9yeShzZWxmKToKKyAgICAgICAgd2l0aCBvcGVuKHN1cHBvcnQuZmluZGZpbGUoJ3BsdWNrLXBjbTgud2F2JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyPSdhdWRpb2RhdGEnKSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgIGF1ZGlvX2RhdGEgPSBmLnJlYWQoKQorICAgICAgICBzYWZlX1BsYXlTb3VuZChhdWRpb19kYXRhLCB3aW5zb3VuZC5TTkRfTUVNT1JZKQorICAgICAgICBhdWRpb19kYXRhID0gYnl0ZWFycmF5KGF1ZGlvX2RhdGEpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGF1ZGlvX2RhdGEsIHdpbnNvdW5kLlNORF9NRU1PUlkpCisKKyAgICBkZWYgdGVzdF9zbmRfZmlsZW5hbWUoc2VsZik6CisgICAgICAgIGZuID0gc3VwcG9ydC5maW5kZmlsZSgncGx1Y2stcGNtOC53YXYnLCBzdWJkaXI9J2F1ZGlvZGF0YScpCisgICAgICAgIHNhZmVfUGxheVNvdW5kKGZuLCB3aW5zb3VuZC5TTkRfRklMRU5BTUUgfCB3aW5zb3VuZC5TTkRfTk9ERUZBVUxUKQogCiAgICAgZGVmIHRlc3RfYWxpYXNlcyhzZWxmKToKICAgICAgICAgYWxpYXNlcyA9IFsKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weSBiL0xpYi90ZXN0L3Rlc3Rfd2l0aC5weQppbmRleCBlOGQ3ODliLi5lMjQ3ZmY2IDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3dpdGgucHkKKysrIGIvTGliL3Rlc3QvdGVzdF93aXRoLnB5CkBAIC0xNDAsMTEgKzE0MCw2IEBACiAgICAgICAgICAgICAnd2l0aCBtb2NrIGFzIChOb25lKTpcbicKICAgICAgICAgICAgICcgIHBhc3MnKQogCi0gICAgZGVmIHRlc3RBc3NpZ25tZW50VG9FbXB0eVR1cGxlRXJyb3Ioc2VsZik6Ci0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCi0gICAgICAgICAgICAnd2l0aCBtb2NrIGFzICgpOlxuJwotICAgICAgICAgICAgJyAgcGFzcycpCi0KICAgICBkZWYgdGVzdEFzc2lnbm1lbnRUb1R1cGxlT25seUNvbnRhaW5pbmdOb25lRXJyb3Ioc2VsZik6CiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoJ3dpdGggbW9jayBhcyBOb25lLDpcbiAgcGFzcycpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzU3ludGF4RXJyb3IoCkBAIC00NTQsNyArNDQ5LDcgQEAKICAgICAgICAgICAgIHdpdGggY20oKToKICAgICAgICAgICAgICAgICByYWlzZSBTdG9wSXRlcmF0aW9uKCJmcm9tIHdpdGgiKQogCi0gICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KFBlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsICJTdG9wSXRlcmF0aW9uIik6CisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJuc1JlZ2V4KERlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFN0b3BJdGVyYXRpb24sIHNob3VsZFRocm93KQogCiAgICAgZGVmIHRlc3RSYWlzZWRTdG9wSXRlcmF0aW9uMihzZWxmKToKQEAgLTQ4Miw3ICs0NzcsNyBAQAogICAgICAgICAgICAgd2l0aCBjbSgpOgogICAgICAgICAgICAgICAgIHJhaXNlIG5leHQoaXRlcihbXSkpCiAKLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZywgIlN0b3BJdGVyYXRpb24iKToKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zUmVnZXgoRGVwcmVjYXRpb25XYXJuaW5nLCAiU3RvcEl0ZXJhdGlvbiIpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoU3RvcEl0ZXJhdGlvbiwgc2hvdWxkVGhyb3cpCiAKICAgICBkZWYgdGVzdFJhaXNlZEdlbmVyYXRvckV4aXQxKHNlbGYpOgpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5IGIvTGliL3Rlc3QvdGVzdF93c2dpcmVmLnB5CmluZGV4IDYxYTc1MGMuLjc3MDhlMjAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3Rfd3NnaXJlZi5weQorKysgYi9MaWIvdGVzdC90ZXN0X3dzZ2lyZWYucHkKQEAgLTI1OCw3ICsyNTgsNyBAQAogCiAgICAgICAgIGRlZiBhcHAoZW52aXJvbiwgc3RhcnRfcmVzcG9uc2UpOgogICAgICAgICAgICAgc3RhcnRfcmVzcG9uc2UoIjIwMCBPSyIsIFtdKQotICAgICAgICAgICAgcmV0dXJuIFtieXRlcyhzdXBwb3J0LlNPQ0tfTUFYX1NJWkUpXQorICAgICAgICAgICAgcmV0dXJuIFtiJ1wwJyAqIHN1cHBvcnQuU09DS19NQVhfU0laRV0KIAogICAgICAgICBjbGFzcyBXc2dpSGFuZGxlcihOb0xvZ1JlcXVlc3RIYW5kbGVyLCBXU0dJUmVxdWVzdEhhbmRsZXIpOgogICAgICAgICAgICAgcGFzcwpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWUucHkgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQppbmRleCBmYmZjMGIwLi4wNTRlYzhmIDEwMDY0NAotLS0gYS9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZS5weQpAQCAtOTEsOCArOTEsNiBAQAogCiAKIGNsYXNzIE1vZHVsZVRlc3QodW5pdHRlc3QuVGVzdENhc2UpOgotICAgICMgVE9ETzogdGhpcyBzaG91bGQgYmUgcmVtb3ZlZCBvbmNlIHdlIGdldCByaWQgb2YgdGhlIGdsb2JhbCBtb2R1bGUgdmFycwotCiAgICAgZGVmIHRlc3Rfc2FuaXR5KHNlbGYpOgogICAgICAgICAjIEltcG9ydCBzYW5pdHkuCiAKQEAgLTEwMCw2ICs5OCwxMCBAQAogICAgICAgICBmcm9tIHhtbC5ldHJlZSBpbXBvcnQgRWxlbWVudEluY2x1ZGUKICAgICAgICAgZnJvbSB4bWwuZXRyZWUgaW1wb3J0IEVsZW1lbnRQYXRoCiAKKyAgICBkZWYgdGVzdF9hbGwoc2VsZik6CisgICAgICAgIG5hbWVzID0gKCJ4bWwuZXRyZWUuRWxlbWVudFRyZWUiLCAiX2VsZW1lbnR0cmVlIikKKyAgICAgICAgc3VwcG9ydC5jaGVja19fYWxsX18oc2VsZiwgRVQsIG5hbWVzLCBibGFja2xpc3Q9KCJIVE1MX0VNUFRZIiwpKQorCiAKIGRlZiBzZXJpYWxpemUoZWxlbSwgdG9fc3RyaW5nPVRydWUsIGVuY29kaW5nPSd1bmljb2RlJywgKipvcHRpb25zKToKICAgICBpZiBlbmNvZGluZyAhPSAndW5pY29kZSc6CkBAIC0xODIsMTAgKzE4NCwxMiBAQAogCiAgICAgICAgIGRlZiBjaGVja19lbGVtZW50KGVsZW1lbnQpOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKEVULmlzZWxlbWVudChlbGVtZW50KSwgbXNnPSJub3QgYW4gZWxlbWVudCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGFnIiksIG1zZz0ibm8gdGFnIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAiYXR0cmliIiksIG1zZz0ibm8gYXR0cmliIG1lbWJlciIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCAidGV4dCIpLCBtc2c9Im5vIHRleHQgbWVtYmVyIikKLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShoYXNhdHRyKGVsZW1lbnQsICJ0YWlsIiksIG1zZz0ibm8gdGFpbCBtZW1iZXIiKQorICAgICAgICAgICAgZGlyZWxlbSA9IGRpcihlbGVtZW50KQorICAgICAgICAgICAgZm9yIGF0dHIgaW4gJ3RhZycsICdhdHRyaWInLCAndGV4dCcsICd0YWlsJzoKKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUoaGFzYXR0cihlbGVtZW50LCBhdHRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG1zZz0nbm8gJXMgbWVtYmVyJyAlIGF0dHIpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihhdHRyLCBkaXJlbGVtLAorICAgICAgICAgICAgICAgICAgICAgICAgbXNnPSdubyAlcyB2aXNpYmxlIGJ5IGRpcicgJSBhdHRyKQogCiAgICAgICAgICAgICBjaGVja19zdHJpbmcoZWxlbWVudC50YWcpCiAgICAgICAgICAgICBjaGVja19tYXBwaW5nKGVsZW1lbnQuYXR0cmliKQpkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weSBiL0xpYi90ZXN0L3Rlc3RfeG1sX2V0cmVlX2MucHkKaW5kZXggOTZiNDQ2ZS4uODdmM2YyNyAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxfZXRyZWVfYy5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbF9ldHJlZV9jLnB5CkBAIC0xLDUgKzEsNSBAQAogIyB4bWwuZXRyZWUgdGVzdCBmb3IgY0VsZW1lbnRUcmVlCi1pbXBvcnQgc3lzLCBzdHJ1Y3QKK2ltcG9ydCBzdHJ1Y3QKIGZyb20gdGVzdCBpbXBvcnQgc3VwcG9ydAogZnJvbSB0ZXN0LnN1cHBvcnQgaW1wb3J0IGltcG9ydF9mcmVzaF9tb2R1bGUKIGltcG9ydCB0eXBlcwpAQCAtMTA4LDcgKzEwOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdC5jYWxjc2l6ZSgnOFAnKSkKIAogZGVmIHRlc3RfbWFpbigpOgotICAgIGZyb20gdGVzdCBpbXBvcnQgdGVzdF94bWxfZXRyZWUsIHRlc3RfeG1sX2V0cmVlX2MKKyAgICBmcm9tIHRlc3QgaW1wb3J0IHRlc3RfeG1sX2V0cmVlCiAKICAgICAjIFJ1biB0aGUgdGVzdHMgc3BlY2lmaWMgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24KICAgICBzdXBwb3J0LnJ1bl91bml0dGVzdCgKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjLnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKaW5kZXggMDJkOWY1Yy4uZGY5Yzc5ZSAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKKysrIGIvTGliL3Rlc3QvdGVzdF94bWxycGMucHkKQEAgLTEsNSArMSw2IEBACiBpbXBvcnQgYmFzZTY0CiBpbXBvcnQgZGF0ZXRpbWUKK2ltcG9ydCBkZWNpbWFsCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CkBAIC05LDcgKzEwLDYgQEAKIGltcG9ydCBodHRwLmNsaWVudAogaW1wb3J0IGh0dHAsIGh0dHAuc2VydmVyCiBpbXBvcnQgc29ja2V0Ci1pbXBvcnQgb3MKIGltcG9ydCByZQogaW1wb3J0IGlvCiBpbXBvcnQgY29udGV4dGxpYgpAQCAtMjM4LDYgKzIzOCw1NCBAQAogICAgICAgICAgICAgICAgICc8L3N0cnVjdD48L3ZhbHVlPjwvcGFyYW0+PC9wYXJhbXM+JykKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUmVzcG9uc2VFcnJvciwgeG1scnBjbGliLmxvYWRzLCBkYXRhKQogCisgICAgZGVmIGNoZWNrX2xvYWRzKHNlbGYsIHMsIHZhbHVlLCAqKmt3YXJncyk6CisgICAgICAgIGR1bXAgPSAnPHBhcmFtcz48cGFyYW0+PHZhbHVlPiVzPC92YWx1ZT48L3BhcmFtPjwvcGFyYW1zPicgJSBzCisgICAgICAgIHJlc3VsdCwgbSA9IHhtbHJwY2xpYi5sb2FkcyhkdW1wLCAqKmt3YXJncykKKyAgICAgICAgKG5ld3ZhbHVlLCkgPSByZXN1bHQKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChuZXd2YWx1ZSwgdmFsdWUpCisgICAgICAgIHNlbGYuYXNzZXJ0SXModHlwZShuZXd2YWx1ZSksIHR5cGUodmFsdWUpKQorICAgICAgICBzZWxmLmFzc2VydElzTm9uZShtKQorCisgICAgZGVmIHRlc3RfbG9hZF9zdGFuZGFyZF90eXBlcyhzZWxmKToKKyAgICAgICAgY2hlY2sgPSBzZWxmLmNoZWNrX2xvYWRzCisgICAgICAgIGNoZWNrKCdzdHJpbmcnLCAnc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxzdHJpbmc+c3RyaW5nPC9zdHJpbmc+JywgJ3N0cmluZycpCisgICAgICAgIGNoZWNrKCc8c3RyaW5nPvCdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nPC9zdHJpbmc+JywgJ/CdlJjwnZSr8J2UpvCdlKDwnZSs8J2UofCdlKIgc3RyaW5nJykKKyAgICAgICAgY2hlY2soJzxpbnQ+MjA1NjE4Mzk0NzwvaW50PicsIDIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aW50Pi0yMDU2MTgzOTQ3PC9pbnQ+JywgLTIwNTYxODM5NDcpCisgICAgICAgIGNoZWNrKCc8aTQ+MjA1NjE4Mzk0NzwvaTQ+JywgMjA1NjE4Mzk0NykKKyAgICAgICAgY2hlY2soJzxkb3VibGU+NDYwOTMuNzgxMjU8L2RvdWJsZT4nLCA0NjA5My43ODEyNSkKKyAgICAgICAgY2hlY2soJzxib29sZWFuPjA8L2Jvb2xlYW4+JywgRmFsc2UpCisgICAgICAgIGNoZWNrKCc8YmFzZTY0PkFHSjVkR1VnYzNSeWFXNW4vdz09PC9iYXNlNjQ+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkJpbmFyeShiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnKSkKKyAgICAgICAgY2hlY2soJzxiYXNlNjQ+QUdKNWRHVWdjM1J5YVc1bi93PT08L2Jhc2U2ND4nLAorICAgICAgICAgICAgICBiJ1x4MDBieXRlIHN0cmluZ1x4ZmYnLCB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgeG1scnBjbGliLkRhdGVUaW1lKCcyMDA1MDIxMFQxMTo0MToyMycpKQorICAgICAgICBjaGVjaygnPGRhdGVUaW1lLmlzbzg2MDE+MjAwNTAyMTBUMTE6NDE6MjM8L2RhdGVUaW1lLmlzbzg2MDE+JywKKyAgICAgICAgICAgICAgZGF0ZXRpbWUuZGF0ZXRpbWUoMjAwNSwgMiwgMTAsIDExLCA0MSwgMjMpLAorICAgICAgICAgICAgICB1c2VfYnVpbHRpbl90eXBlcz1UcnVlKQorICAgICAgICBjaGVjaygnPGFycmF5PjxkYXRhPicKKyAgICAgICAgICAgICAgJzx2YWx1ZT48aW50PjE8L2ludD48L3ZhbHVlPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPicKKyAgICAgICAgICAgICAgJzwvZGF0YT48L2FycmF5PicsIFsxLCAyXSkKKyAgICAgICAgY2hlY2soJzxzdHJ1Y3Q+JworICAgICAgICAgICAgICAnPG1lbWJlcj48bmFtZT5iPC9uYW1lPjx2YWx1ZT48aW50PjI8L2ludD48L3ZhbHVlPjwvbWVtYmVyPicKKyAgICAgICAgICAgICAgJzxtZW1iZXI+PG5hbWU+YTwvbmFtZT48dmFsdWU+PGludD4xPC9pbnQ+PC92YWx1ZT48L21lbWJlcj4nCisgICAgICAgICAgICAgICc8L3N0cnVjdD4nLCB7J2EnOiAxLCAnYic6IDJ9KQorCisgICAgZGVmIHRlc3RfbG9hZF9leHRlbnNpb25fdHlwZXMoc2VsZik6CisgICAgICAgIGNoZWNrID0gc2VsZi5jaGVja19sb2FkcworICAgICAgICBjaGVjaygnPG5pbC8+JywgTm9uZSkKKyAgICAgICAgY2hlY2soJzxleDpuaWwvPicsIE5vbmUpCisgICAgICAgIGNoZWNrKCc8aTE+MjA1PC9pMT4nLCAyMDUpCisgICAgICAgIGNoZWNrKCc8aTI+MjA1NjE8L2kyPicsIDIwNTYxKQorICAgICAgICBjaGVjaygnPGk4Pjk4NzY1NDMyMTA8L2k4PicsIDk4NzY1NDMyMTApCisgICAgICAgIGNoZWNrKCc8YmlnaW50ZWdlcj45ODc2NTQzMjEwMDEyMzQ1Njc4OTwvYmlnaW50ZWdlcj4nLAorICAgICAgICAgICAgICA5ODc2NTQzMjEwMDEyMzQ1Njc4OSkKKyAgICAgICAgY2hlY2soJzxmbG9hdD45My43ODEyNTwvZmxvYXQ+JywgOTMuNzgxMjUpCisgICAgICAgIGNoZWNrKCc8YmlnZGVjaW1hbD45ODc2NTQzMjEwLjAxMjM0NTY3ODk8L2JpZ2RlY2ltYWw+JywKKyAgICAgICAgICAgICAgZGVjaW1hbC5EZWNpbWFsKCc5ODc2NTQzMjEwLjAxMjM0NTY3ODknKSkKKwogICAgIGRlZiB0ZXN0X2dldF9ob3N0X2luZm8oc2VsZik6CiAgICAgICAgICMgc2VlIGJ1ZyAjMzYxMywgdGhpcyByYWlzZWQgYSBUeXBlRXJyb3IKICAgICAgICAgdHJhbnNwID0geG1scnBjLmNsaWVudC5UcmFuc3BvcnQoKQpAQCAtMTE0Nyw3ICsxMTk1LDYgQEAKICAgICAiIiJBIHZhcmlhdGlvbiBvbiBzdXBwb3J0LmNhcHR1cmVkX3N0ZG91dCgpIHdoaWNoIGdpdmVzIGEgdGV4dCBzdHJlYW0KICAgICBoYXZpbmcgYSBgYnVmZmVyYCBhdHRyaWJ1dGUuCiAgICAgIiIiCi0gICAgaW1wb3J0IGlvCiAgICAgb3JpZ19zdGRvdXQgPSBzeXMuc3Rkb3V0CiAgICAgc3lzLnN0ZG91dCA9IGlvLlRleHRJT1dyYXBwZXIoaW8uQnl0ZXNJTygpLCBlbmNvZGluZz1lbmNvZGluZykKICAgICB0cnk6CkBAIC0xMjIwLDcgKzEyNjcsNyBAQAogICAgICAgICBjb250ZW50ID0gaGFuZGxlW2hhbmRsZS5maW5kKCI8P3htbCIpOl0KIAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAotICAgICAgICAgICAgaW50KHJlLnNlYXJjaCgnQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCisgICAgICAgICAgICBpbnQocmUuc2VhcmNoKHInQ29udGVudC1MZW5ndGg6IChcZCspJywgaGFuZGxlKS5ncm91cCgxKSksCiAgICAgICAgICAgICBsZW4oY29udGVudCkpCiAKIApkaWZmIC0tZ2l0IGEvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5IGIvTGliL3Rlc3QvdGVzdF94bWxycGNfbmV0LnB5CmluZGV4IGI2MGI4MmYuLmFlMGEyOGUgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfeG1scnBjX25ldC5weQorKysgYi9MaWIvdGVzdC90ZXN0X3htbHJwY19uZXQucHkKQEAgLTEsNyArMSw0IEBACiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCi1pbXBvcnQgZXJybm8KLWltcG9ydCBzb2NrZXQKLWltcG9ydCBzeXMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB0ZXN0IGltcG9ydCBzdXBwb3J0CiAKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfcGVwMzgwLnB5IGIvTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBMaWIvdGVzdC90ZXN0X3BlcDM4MC5weQpyZW5hbWUgdG8gTGliL3Rlc3QvdGVzdF95aWVsZF9mcm9tLnB5CmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGZpbGUucHkKaW5kZXggZDE4YTc3MC4uNWQ3YjkxZiAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96aXBmaWxlLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwZmlsZS5weQpAQCAtMSw4ICsxLDggQEAKIGltcG9ydCBjb250ZXh0bGliCiBpbXBvcnQgaW8KIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IGltcG9ydGxpYi51dGlsCitpbXBvcnQgcG9zaXhwYXRoCiBpbXBvcnQgdGltZQogaW1wb3J0IHN0cnVjdAogaW1wb3J0IHppcGZpbGUKQEAgLTM4LDEwICszOCw2IEBACiAgICAgICAgIHlpZWxkIGYKICAgICAgICAgdGVzdC5hc3NlcnRGYWxzZShmLmNsb3NlZCkKIAotZGVmIG9wZW5VKHppcGZwLCBmbik6Ci0gICAgd2l0aCBjaGVja193YXJuaW5ncygoJycsIERlcHJlY2F0aW9uV2FybmluZykpOgotICAgICAgICByZXR1cm4gemlwZnAub3BlbihmbiwgJ3JVJykKLQogY2xhc3MgQWJzdHJhY3RUZXN0c1dpdGhTb3VyY2VGaWxlOgogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiBzZXRVcENsYXNzKGNscyk6CkBAIC02MSw2ICs1Nyw5IEBACiAgICAgICAgICAgICB6aXBmcC53cml0ZShURVNURk4sICJhbm90aGVyLm5hbWUiKQogICAgICAgICAgICAgemlwZnAud3JpdGUoVEVTVEZOLCBURVNURk4pCiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic3RyZmlsZSIsIHNlbGYuZGF0YSkKKyAgICAgICAgICAgIHdpdGggemlwZnAub3Blbignd3JpdHRlbi1vcGVuLXcnLCBtb2RlPSd3JykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKGxpbmUpCiAKICAgICBkZWYgemlwX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgogICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQpAQCAtNzYsNyArNzUsNyBAQAogICAgICAgICAgICAgemlwZnAucHJpbnRkaXIoZmlsZT1mcCkKICAgICAgICAgICAgIGRpcmVjdG9yeSA9IGZwLmdldHZhbHVlKCkKICAgICAgICAgICAgIGxpbmVzID0gZGlyZWN0b3J5LnNwbGl0bGluZXMoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA0KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obGluZXMpLCA1KSAjIE51bWJlciBvZiBmaWxlcyArIGhlYWRlcgogCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdGaWxlIE5hbWUnLCBsaW5lc1swXSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ01vZGlmaWVkJywgbGluZXNbMF0pCkBAIC05MCwyMyArODksMjUgQEAKIAogICAgICAgICAgICAgIyBDaGVjayB0aGUgbmFtZWxpc3QKICAgICAgICAgICAgIG5hbWVzID0gemlwZnAubmFtZWxpc3QoKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCAzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4obmFtZXMpLCA0KQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihURVNURk4sIG5hbWVzKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigiYW5vdGhlci5uYW1lIiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJzdHJmaWxlIiwgbmFtZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJ3cml0dGVuLW9wZW4tdyIsIG5hbWVzKQogCiAgICAgICAgICAgICAjIENoZWNrIGluZm9saXN0CiAgICAgICAgICAgICBpbmZvcyA9IHppcGZwLmluZm9saXN0KCkKICAgICAgICAgICAgIG5hbWVzID0gW2kuZmlsZW5hbWUgZm9yIGkgaW4gaW5mb3NdCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihuYW1lcyksIDQpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKFRFU1RGTiwgbmFtZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEluKCJhbm90aGVyLm5hbWUiLCBuYW1lcykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oInN0cmZpbGUiLCBuYW1lcykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oIndyaXR0ZW4tb3Blbi13IiwgbmFtZXMpCiAgICAgICAgICAgICBmb3IgaSBpbiBpbmZvczoKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGkuZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKIAogICAgICAgICAgICAgIyBjaGVjayBnZXRpbmZvCi0gICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIik6CisgICAgICAgICAgICBmb3Igbm0gaW4gKFRFU1RGTiwgImFub3RoZXIubmFtZSIsICJzdHJmaWxlIiwgIndyaXR0ZW4tb3Blbi13Iik6CiAgICAgICAgICAgICAgICAgaW5mbyA9IHppcGZwLmdldGluZm8obm0pCiAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChpbmZvLmZpbGVuYW1lLCBubSkKICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGluZm8uZmlsZV9zaXplLCBsZW4oc2VsZi5kYXRhKSkKQEAgLTM3MiwxNCArMzczLDE4IEBACiAgICAgdGVzdF9sb3dfY29tcHJlc3Npb24gPSBOb25lCiAKICAgICBkZWYgemlwX3Rlc3Rfd3JpdGVzdHJfcGVybWlzc2lvbnMoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHdyaXRlc3RyIGNyZWF0ZXMgZmlsZXMgd2l0aCBtb2RlIDA2MDAsCi0gICAgICAgICMgd2hlbiBpdCBpcyBwYXNzZWQgYSBuYW1lIHJhdGhlciB0aGFuIGEgWmlwSW5mbyBpbnN0YW5jZS4KKyAgICAgICAgIyBNYWtlIHN1cmUgdGhhdCB3cml0ZXN0ciBhbmQgb3BlbiguLi4gbW9kZT0ndycpIGNyZWF0ZSBmaWxlcyB3aXRoCisgICAgICAgICMgbW9kZSAwNjAwLCB3aGVuIHRoZXkgYXJlIHBhc3NlZCBhIG5hbWUgcmF0aGVyIHRoYW4gYSBaaXBJbmZvCisgICAgICAgICMgaW5zdGFuY2UuCiAKICAgICAgICAgc2VsZi5tYWtlX3Rlc3RfYXJjaGl2ZShmLCBjb21wcmVzc2lvbikKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKICAgICAgICAgICAgIHppbmZvID0gemlwZnAuZ2V0aW5mbygnc3RyZmlsZScpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvLmV4dGVybmFsX2F0dHIsIDBvNjAwIDw8IDE2KQogCisgICAgICAgICAgICB6aW5mbzIgPSB6aXBmcC5nZXRpbmZvKCd3cml0dGVuLW9wZW4tdycpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppbmZvMi5leHRlcm5hbF9hdHRyLCAwbzYwMCA8PCAxNikKKwogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKHNlbGYpOgogICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6CiAgICAgICAgICAgICBzZWxmLnppcF90ZXN0X3dyaXRlc3RyX3Blcm1pc3Npb25zKGYsIHppcGZpbGUuWklQX1NUT1JFRCkKQEAgLTQ4NywxMiArNDkyLDE2IEBACiAKICAgICBkZWYgdGVzdF93cml0ZV90b19yZWFkb25seShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCB0cnlpbmcgdG8gY2FsbCB3cml0ZSgpIG9uIGEgcmVhZG9ubHkgWmlwRmlsZSBvYmplY3QKLSAgICAgICAgcmFpc2VzIGEgUnVudGltZUVycm9yLiIiIgorICAgICAgICByYWlzZXMgYSBWYWx1ZUVycm9yLiIiIgogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJ3IikgYXMgemlwZnA6CiAgICAgICAgICAgICB6aXBmcC53cml0ZXN0cigic29tZWZpbGUudHh0IiwgImJvZ3VzIikKIAogICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCBtb2RlPSJyIikgYXMgemlwZnA6Ci0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGZwLndyaXRlLCBURVNURk4pCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmcC53cml0ZSwgVEVTVEZOKQorCisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsIG1vZGU9InIiKSBhcyB6aXBmcDoKKyAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgemlwZnAub3BlbihURVNURk4sIG1vZGU9J3cnKQogCiAgICAgZGVmIHRlc3RfYWRkX2ZpbGVfYmVmb3JlXzE5ODAoc2VsZik6CiAgICAgICAgICMgU2V0IGF0aW1lIGFuZCBtdGltZSB0byAxOTcwLTAxLTAxCkBAIC0xMDY1LDMyICsxMDc0LDYgQEAKICAgICAgICAgICAgICAgICBkYXRhICs9IHppcGZwLnJlYWQoaW5mbykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oZGF0YSwge2IiZm9vYmFyIiwgYiJiYXJmb28ifSkKIAotICAgIGRlZiB0ZXN0X3VuaXZlcnNhbF9kZXByZWNhdGlvbihzZWxmKToKLSAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoJ3NwYW0udHh0JywgYidhYmFiYWdhbGFtYWdhJykKLQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIG1vZGUgaW4gJ1UnLCAnclUnOgotICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgotICAgICAgICAgICAgICAgICAgICB6aXBvcGVuID0gemlwZnAub3Blbignc3BhbS50eHQnLCBtb2RlKQotICAgICAgICAgICAgICAgIHppcG9wZW4uY2xvc2UoKQotCi0gICAgZGVmIHRlc3RfdW5pdmVyc2FsX3JlYWRhaGVhZHMoc2VsZik6Ci0gICAgICAgIGYgPSBpby5CeXRlc0lPKCkKLQotICAgICAgICBkYXRhID0gYidhXHJcbicgKiAxNiAqIDEwMjQKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGZwOgotICAgICAgICAgICAgemlwZnAud3JpdGVzdHIoVEVTVEZOLCBkYXRhKQotCi0gICAgICAgIGRhdGEyID0gYicnCi0gICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKGYsICdyJykgYXMgemlwZnAsIFwKLSAgICAgICAgICAgICBvcGVuVSh6aXBmcCwgVEVTVEZOKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgZm9yIGxpbmUgaW4gemlwb3BlbjoKLSAgICAgICAgICAgICAgICBkYXRhMiArPSBsaW5lCi0KLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhLCBkYXRhMi5yZXBsYWNlKGInXG4nLCBiJ1xyXG4nKSkKLQogICAgIGRlZiB0ZXN0X3dyaXRlc3RyX2V4dGVuZGVkX2xvY2FsX2hlYWRlcl9pc3N1ZTEyMDIoc2VsZik6CiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JykgYXMgb3JpZ196aXA6CiAgICAgICAgICAgICBmb3IgZGF0YSBpbiAnYWJjZGVmZ2hpamtsbW5vcCc6CkBAIC0xMjcwLDI3ICsxMjUzLDI3IEBACiAgICAgICAgICAgICBmcC53cml0ZSgic2hvcnQgZmlsZSIpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHppcGZpbGUuQmFkWmlwRmlsZSwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4pCiAKLSAgICBkZWYgdGVzdF9jbG9zZWRfemlwX3JhaXNlc19SdW50aW1lRXJyb3Ioc2VsZik6CisgICAgZGVmIHRlc3RfY2xvc2VkX3ppcF9yYWlzZXNfVmFsdWVFcnJvcihzZWxmKToKICAgICAgICAgIiIiVmVyaWZ5IHRoYXQgdGVzdHppcCgpIGRvZXNuJ3Qgc3dhbGxvdyBpbmFwcHJvcHJpYXRlIGV4Y2VwdGlvbnMuIiIiCiAgICAgICAgIGRhdGEgPSBpby5CeXRlc0lPKCkKICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZGF0YSwgbW9kZT0idyIpIGFzIHppcGY6CiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgICMgVGhpcyBpcyBjb3JyZWN0OyBjYWxsaW5nIC5yZWFkIG9uIGEgY2xvc2VkIFppcEZpbGUgc2hvdWxkIHJhaXNlCi0gICAgICAgICMgYSBSdW50aW1lRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKKyAgICAgICAgIyBhIFZhbHVlRXJyb3IsIGFuZCBzbyBzaG91bGQgY2FsbGluZyAudGVzdHppcC4gIEFuIGVhcmxpZXIKICAgICAgICAgIyB2ZXJzaW9uIG9mIC50ZXN0emlwIHdvdWxkIHN3YWxsb3cgdGhpcyBleGNlcHRpb24gKGFuZCBhbnkgb3RoZXIpCiAgICAgICAgICMgYW5kIHJlcG9ydCB0aGF0IHRoZSBmaXJzdCBmaWxlIGluIHRoZSBhcmNoaXZlIHdhcyBjb3JydXB0LgotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYucmVhZCwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQotICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYudGVzdHppcCkKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmLndyaXRlc3RyLCAiYm9ndXMudHh0IiwgImJvZ3VzIikKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5yZWFkLCAiZm9vLnR4dCIpCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLnRlc3R6aXApCisgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IsIHppcGYud3JpdGVzdHIsICJib2d1cy50eHQiLCAiYm9ndXMiKQogICAgICAgICB3aXRoIG9wZW4oVEVTVEZOLCAndycpIGFzIGY6CiAgICAgICAgICAgICBmLndyaXRlKCd6aXBmaWxlIHRlc3QgZGF0YScpCi0gICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKFJ1bnRpbWVFcnJvciwgemlwZi53cml0ZSwgVEVTVEZOKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLndyaXRlLCBURVNURk4pCiAKICAgICBkZWYgdGVzdF9iYWRfY29uc3RydWN0b3JfbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUgY29uc3RydWN0b3IgYXJlIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQorICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInEiKQogCiAgICAgZGVmIHRlc3RfYmFkX29wZW5fbW9kZShzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBiYWQgbW9kZXMgcGFzc2VkIHRvIFppcEZpbGUub3BlbiBhcmUgY2F1Z2h0LiIiIgpAQCAtMTI5OCw5ICsxMjgxLDEyIEBACiAgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCJmb28udHh0IiwgIk8sIGZvciBhIE11c2Ugb2YgRmlyZSEiKQogCiAgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTiwgbW9kZT0iciIpIGFzIHppcGY6Ci0gICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKKyAgICAgICAgICAgICMgcmVhZCB0aGUgZGF0YSB0byBtYWtlIHN1cmUgdGhlIGZpbGUgaXMgdGhlcmUKICAgICAgICAgICAgIHppcGYucmVhZCgiZm9vLnR4dCIpCi0gICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhSdW50aW1lRXJyb3IsIHppcGYub3BlbiwgImZvby50eHQiLCAicSIpCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgInEiKQorICAgICAgICAgICAgIyB1bml2ZXJzYWwgbmV3bGluZXMgc3VwcG9ydCBpcyByZW1vdmVkCisgICAgICAgICAgICBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yLCB6aXBmLm9wZW4sICJmb28udHh0IiwgIlUiKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvciwgemlwZi5vcGVuLCAiZm9vLnR4dCIsICJyVSIpCiAKICAgICBkZWYgdGVzdF9yZWFkMChzZWxmKToKICAgICAgICAgIiIiQ2hlY2sgdGhhdCBjYWxsaW5nIHJlYWQoMCkgb24gYSBaaXBFeHRGaWxlIG9iamVjdCByZXR1cm5zIGFuIGVtcHR5CkBAIC0xMzIzLDcgKzEzMDksNyBAQAogICAgIGRlZiB0ZXN0X2JhZF9jb21wcmVzc2lvbl9tb2RlKHNlbGYpOgogICAgICAgICAiIiJDaGVjayB0aGF0IGJhZCBjb21wcmVzc2lvbiBtZXRob2RzIHBhc3NlZCB0byBaaXBGaWxlLm9wZW4gYXJlCiAgICAgICAgIGNhdWdodC4iIiIKLSAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoUnVudGltZUVycm9yLCB6aXBmaWxlLlppcEZpbGUsIFRFU1RGTiwgInciLCAtMSkKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoTm90SW1wbGVtZW50ZWRFcnJvciwgemlwZmlsZS5aaXBGaWxlLCBURVNURk4sICJ3IiwgLTEpCiAKICAgICBkZWYgdGVzdF91bnN1cHBvcnRlZF9jb21wcmVzc2lvbihzZWxmKToKICAgICAgICAgIyBkYXRhIGlzIGRlY2xhcmVkIGFzIHNocnVuaywgYnV0IGFjdHVhbGx5IGRlZmxhdGVkCkBAIC0xNDcxLDYgKzE0NTcsMzUgQEAKICAgICAgICAgICAgICMgdGVzdHppcCByZXR1cm5zIHRoZSBuYW1lIG9mIHRoZSBmaXJzdCBjb3JydXB0IGZpbGUsIG9yIE5vbmUKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNOb25lKHppcGYudGVzdHppcCgpKQogCisgICAgZGVmIHRlc3Rfb3Blbl9jb25mbGljdGluZ19oYW5kbGVzKHNlbGYpOgorICAgICAgICAjIEl0J3Mgb25seSBwb3NzaWJsZSB0byBvcGVuIG9uZSB3cml0YWJsZSBmaWxlIGhhbmRsZSBhdCBhIHRpbWUKKyAgICAgICAgbXNnMSA9IGIiSXQncyBmdW4gdG8gY2hhcnRlciBhbiBhY2NvdW50YW50ISIKKyAgICAgICAgbXNnMiA9IGIiQW5kIHNhaWwgdGhlIHdpZGUgYWNjb3VudGFudCBzZWEiCisgICAgICAgIG1zZzMgPSBiIlRvIGZpbmQsIGV4cGxvcmUgdGhlIGZ1bmRzIG9mZnNob3JlIgorICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShURVNURk4yLCAndycsIHppcGZpbGUuWklQX1NUT1JFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdmb28nLCBtb2RlPSd3JykgYXMgdzI6CisgICAgICAgICAgICAgICAgdzIud3JpdGUobXNnMSkKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdiYXInLCBtb2RlPSd3JykgYXMgdzE6CisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi5vcGVuKCdoYW5kbGUnLCBtb2RlPSd3JykKKyAgICAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgICAgICAgICB6aXBmLm9wZW4oJ2ZvbycsIG1vZGU9J3InKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYud3JpdGVzdHIoJ3N0cicsICdhYmNkZScpCisgICAgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKToKKyAgICAgICAgICAgICAgICAgICAgemlwZi53cml0ZShfX2ZpbGVfXywgJ2ZpbGUnKQorICAgICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVmFsdWVFcnJvcik6CisgICAgICAgICAgICAgICAgICAgIHppcGYuY2xvc2UoKQorICAgICAgICAgICAgICAgIHcxLndyaXRlKG1zZzIpCisgICAgICAgICAgICB3aXRoIHppcGYub3BlbignYmF6JywgbW9kZT0ndycpIGFzIHcyOgorICAgICAgICAgICAgICAgIHcyLndyaXRlKG1zZzMpCisKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ3InKSBhcyB6aXBmOgorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2ZvbycpLCBtc2cxKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JhcicpLCBtc2cyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ2JheicpLCBtc2czKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLm5hbWVsaXN0KCksIFsnZm9vJywgJ2JhcicsICdiYXonXSkKKwogICAgIGRlZiB0ZWFyRG93bihzZWxmKToKICAgICAgICAgdW5saW5rKFRFU1RGTikKICAgICAgICAgdW5saW5rKFRFU1RGTjIpCkBAIC0xODA0LDYgKzE4MTksMjIgQEAKICAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnKSBhcyB6b3BlbjoKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoem9wZW4ucmVhZCgpLCBiJzIyMicpCiAKKyAgICBkZWYgdGVzdF9vcGVuX3dyaXRlKHNlbGYpOgorICAgICAgICBmb3Igd3JhcHBlciBpbiAobGFtYmRhIGY6IGYpLCBUZWxsYWJsZSwgVW5zZWVrYWJsZToKKyAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHdyYXBwZXI9d3JhcHBlcik6CisgICAgICAgICAgICAgICAgZiA9IGlvLkJ5dGVzSU8oKQorICAgICAgICAgICAgICAgIGYud3JpdGUoYidhYmMnKQorICAgICAgICAgICAgICAgIGJmID0gaW8uQnVmZmVyZWRXcml0ZXIoZikKKyAgICAgICAgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZSh3cmFwcGVyKGJmKSwgJ3cnLCB6aXBmaWxlLlpJUF9TVE9SRUQpIGFzIHppcGY6CisgICAgICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3cnKSBhcyB6b3BlbjoKKyAgICAgICAgICAgICAgICAgICAgICAgIHpvcGVuLndyaXRlKGInMTExJykKKyAgICAgICAgICAgICAgICAgICAgd2l0aCB6aXBmLm9wZW4oJ3R3b3MnLCAndycpIGFzIHpvcGVuOgorICAgICAgICAgICAgICAgICAgICAgICAgem9wZW4ud3JpdGUoYicyMjInKQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5nZXR2YWx1ZSgpWzo1XSwgYidhYmNQSycpCisgICAgICAgICAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZikgYXMgemlwZjoKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aXBmLnJlYWQoJ29uZXMnKSwgYicxMTEnKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGYucmVhZCgndHdvcycpLCBiJzIyMicpCisKIAogQHJlcXVpcmVzX3psaWIKIGNsYXNzIFRlc3RzV2l0aE11bHRpcGxlT3BlbnModW5pdHRlc3QuVGVzdENhc2UpOgpAQCAtMTkxNCw2ICsxOTQ1LDE5IEBACiAgICAgICAgIHdpdGggb3Blbihvcy5kZXZudWxsKSBhcyBmOgogICAgICAgICAgICAgc2VsZi5hc3NlcnRMZXNzKGYuZmlsZW5vKCksIDEwMCkKIAorICAgIGRlZiB0ZXN0X3dyaXRlX3doaWxlX3JlYWRpbmcoc2VsZik6CisgICAgICAgIHdpdGggemlwZmlsZS5aaXBGaWxlKFRFU1RGTjIsICd3JywgemlwZmlsZS5aSVBfREVGTEFURUQpIGFzIHppcGY6CisgICAgICAgICAgICB6aXBmLndyaXRlc3RyKCdvbmVzJywgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMiwgJ2EnLCB6aXBmaWxlLlpJUF9ERUZMQVRFRCkgYXMgemlwZjoKKyAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCdvbmVzJywgJ3InKSBhcyByMToKKyAgICAgICAgICAgICAgICBkYXRhMSA9IHIxLnJlYWQoNTAwKQorICAgICAgICAgICAgICAgIHdpdGggemlwZi5vcGVuKCd0d29zJywgJ3cnKSBhcyB3MToKKyAgICAgICAgICAgICAgICAgICAgdzEud3JpdGUoc2VsZi5kYXRhMikKKyAgICAgICAgICAgICAgICBkYXRhMSArPSByMS5yZWFkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkYXRhMSwgc2VsZi5kYXRhMSkKKyAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoVEVTVEZOMikgYXMgemlwZjoKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwZi5yZWFkKCd0d29zJyksIHNlbGYuZGF0YTIpCisKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIHVubGluayhURVNURk4yKQogCkBAIC0xOTgzLDEzNyArMjAyNywxOSBAQAogICAgICAgICAgICAgdW5saW5rKFRFU1RGTikKIAogCi1jbGFzcyBBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0czoKLSAgICBAY2xhc3NtZXRob2QKLSAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgotICAgICAgICBjbHMubGluZV9nZW4gPSBbYnl0ZXMoIlRlc3Qgb2YgemlwZmlsZSBsaW5lICVkLiIgJSBpLCAiYXNjaWkiKQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoRklYRURURVNUX1NJWkUpXQotICAgICAgICBjbHMuc2VwcyA9IChiJ1xyJywgYidcclxuJywgYidcbicpCi0gICAgICAgIGNscy5hcmNkYXRhID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKGNscy5zZXBzKToKLSAgICAgICAgICAgIGNscy5hcmNkYXRhW3NdID0gcy5qb2luKGNscy5saW5lX2dlbikgKyBzCitjbGFzcyBaaXBJbmZvVGVzdHModW5pdHRlc3QuVGVzdENhc2UpOgorICAgIGRlZiB0ZXN0X2Zyb21fZmlsZShzZWxmKToKKyAgICAgICAgemkgPSB6aXBmaWxlLlppcEluZm8uZnJvbV9maWxlKF9fZmlsZV9fKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHBvc2l4cGF0aC5iYXNlbmFtZSh6aS5maWxlbmFtZSksICd0ZXN0X3ppcGZpbGUucHknKQorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppLmlzX2RpcigpKQogCi0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmFyY2ZpbGVzID0ge30KLSAgICAgICAgZm9yIG4sIHMgaW4gZW51bWVyYXRlKHNlbGYuc2Vwcyk6Ci0gICAgICAgICAgICBzZWxmLmFyY2ZpbGVzW3NdID0gJyVzLSVkJyAlIChURVNURk4sIG4pCi0gICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5hcmNmaWxlc1tzXSwgIndiIikgYXMgZjoKLSAgICAgICAgICAgICAgICBmLndyaXRlKHNlbGYuYXJjZGF0YVtzXSkKLQotICAgIGRlZiBtYWtlX3Rlc3RfYXJjaGl2ZShzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgICMgQ3JlYXRlIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAidyIsIGNvbXByZXNzaW9uKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBmbiBpbiBzZWxmLmFyY2ZpbGVzLnZhbHVlcygpOgotICAgICAgICAgICAgICAgIHppcGZwLndyaXRlKGZuLCBmbikKLQotICAgIGRlZiByZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIHppcGRhdGEgPSBmcC5yZWFkKCkKLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYuYXJjZGF0YVtzZXBdLCB6aXBkYXRhKQotCi0gICAgZGVmIHRlc3RfcmVhZChzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5yZWFkX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZV9yZWFkX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgemlwb3BlbjoKLSAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGInJwotICAgICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgotICAgICAgICAgICAgICAgICAgICAgICAgcmVhZCA9IHppcG9wZW4ucmVhZGxpbmUoKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IHJlYWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgKz0gcmVhZAotCi0gICAgICAgICAgICAgICAgICAgICAgICByZWFkID0gemlwb3Blbi5yZWFkKDUpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVhZDoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSByZWFkCi0KLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGF0YSwgc2VsZi5hcmNkYXRhW2InXG4nXSkKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lX3JlYWQoc2VsZik6Ci0gICAgICAgIGZvciBmIGluIGdldF9maWxlcyhzZWxmKToKLSAgICAgICAgICAgIHNlbGYucmVhZGxpbmVfcmVhZF90ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgcmVhZGxpbmVfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyB6aXBvcGVuOgotICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBzZWxmLmxpbmVfZ2VuOgotICAgICAgICAgICAgICAgICAgICAgICAgbGluZWRhdGEgPSB6aXBvcGVuLnJlYWRsaW5lKCkKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGluZWRhdGEsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X3JlYWRsaW5lKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lX3Rlc3QoZiwgc2VsZi5jb21wcmVzc2lvbikKLQotICAgIGRlZiByZWFkbGluZXNfdGVzdChzZWxmLCBmLCBjb21wcmVzc2lvbik6Ci0gICAgICAgIHNlbGYubWFrZV90ZXN0X2FyY2hpdmUoZiwgY29tcHJlc3Npb24pCi0KLSAgICAgICAgIyBSZWFkIHRoZSBaSVAgYXJjaGl2ZQotICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShmLCAiciIpIGFzIHppcGZwOgotICAgICAgICAgICAgZm9yIHNlcCwgZm4gaW4gc2VsZi5hcmNmaWxlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgIHdpdGggb3BlblUoemlwZnAsIGZuKSBhcyBmcDoKLSAgICAgICAgICAgICAgICAgICAgemlwbGluZXMgPSBmcC5yZWFkbGluZXMoKQotICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCB6aXBsaW5lcyk6Ci0gICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemlwbGluZSwgbGluZSArIGInXG4nKQotCi0gICAgZGVmIHRlc3RfcmVhZGxpbmVzKHNlbGYpOgotICAgICAgICBmb3IgZiBpbiBnZXRfZmlsZXMoc2VsZik6Ci0gICAgICAgICAgICBzZWxmLnJlYWRsaW5lc190ZXN0KGYsIHNlbGYuY29tcHJlc3Npb24pCi0KLSAgICBkZWYgaXRlcmxpbmVzX3Rlc3Qoc2VsZiwgZiwgY29tcHJlc3Npb24pOgotICAgICAgICBzZWxmLm1ha2VfdGVzdF9hcmNoaXZlKGYsIGNvbXByZXNzaW9uKQotCi0gICAgICAgICMgUmVhZCB0aGUgWklQIGFyY2hpdmUKLSAgICAgICAgd2l0aCB6aXBmaWxlLlppcEZpbGUoZiwgInIiKSBhcyB6aXBmcDoKLSAgICAgICAgICAgIGZvciBzZXAsIGZuIGluIHNlbGYuYXJjZmlsZXMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICB3aXRoIG9wZW5VKHppcGZwLCBmbikgYXMgZnA6Ci0gICAgICAgICAgICAgICAgICAgIGZvciBsaW5lLCB6aXBsaW5lIGluIHppcChzZWxmLmxpbmVfZ2VuLCBmcCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppcGxpbmUsIGxpbmUgKyBiJ1xuJykKLQotICAgIGRlZiB0ZXN0X2l0ZXJsaW5lcyhzZWxmKToKLSAgICAgICAgZm9yIGYgaW4gZ2V0X2ZpbGVzKHNlbGYpOgotICAgICAgICAgICAgc2VsZi5pdGVybGluZXNfdGVzdChmLCBzZWxmLmNvbXByZXNzaW9uKQotCi0gICAgZGVmIHRlYXJEb3duKHNlbGYpOgotICAgICAgICBmb3Igc2VwLCBmbiBpbiBzZWxmLmFyY2ZpbGVzLml0ZW1zKCk6Ci0gICAgICAgICAgICB1bmxpbmsoZm4pCi0gICAgICAgIHVubGluayhURVNURk4pCi0gICAgICAgIHVubGluayhURVNURk4yKQotCi0KLWNsYXNzIFN0b3JlZFVuaXZlcnNhbE5ld2xpbmVUZXN0cyhBYnN0cmFjdFVuaXZlcnNhbE5ld2xpbmVUZXN0cywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgY29tcHJlc3Npb24gPSB6aXBmaWxlLlpJUF9TVE9SRUQKLQotQHJlcXVpcmVzX3psaWIKLWNsYXNzIERlZmxhdGVVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0RFRkxBVEVECi0KLUByZXF1aXJlc19iejIKLWNsYXNzIEJ6aXAyVW5pdmVyc2FsTmV3bGluZVRlc3RzKEFic3RyYWN0VW5pdmVyc2FsTmV3bGluZVRlc3RzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pdHRlc3QuVGVzdENhc2UpOgotICAgIGNvbXByZXNzaW9uID0gemlwZmlsZS5aSVBfQlpJUDIKLQotQHJlcXVpcmVzX2x6bWEKLWNsYXNzIEx6bWFVbml2ZXJzYWxOZXdsaW5lVGVzdHMoQWJzdHJhY3RVbml2ZXJzYWxOZXdsaW5lVGVzdHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuaXR0ZXN0LlRlc3RDYXNlKToKLSAgICBjb21wcmVzc2lvbiA9IHppcGZpbGUuWklQX0xaTUEKKyAgICBkZWYgdGVzdF9mcm9tX2RpcihzZWxmKToKKyAgICAgICAgZGlycGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKQorICAgICAgICB6aSA9IHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoZGlycGF0aCwgJ3N0ZGxpYl90ZXN0cycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZmlsZW5hbWUsICdzdGRsaWJfdGVzdHMvJykKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHppLmlzX2RpcigpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmNvbXByZXNzX3R5cGUsIHppcGZpbGUuWklQX1NUT1JFRCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5maWxlX3NpemUsIDApCiAKIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CiAgICAgdW5pdHRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydC5weSBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CmluZGV4IGQ1YjNiMjIuLjdkZGJjNTAgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0LnB5CkBAIC0zOTgsNyArMzk4LDggQEAKICAgICAgICAgcGFja2RpcjIgPSBwYWNrZGlyICsgVEVTVFBBQ0syICsgb3Muc2VwCiAgICAgICAgIGZpbGVzID0ge3BhY2tkaXIgKyAiX19pbml0X18iICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAogICAgICAgICAgICAgICAgICBwYWNrZGlyMiArICJfX2luaXRfXyIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5YyksCi0gICAgICAgICAgICAgICAgIHBhY2tkaXIyICsgVEVTVE1PRCArIHB5Y19leHQ6IChOT1csIHRlc3RfcHljKX0KKyAgICAgICAgICAgICAgICAgcGFja2RpcjIgKyBURVNUTU9EICsgcHljX2V4dDogKE5PVywgdGVzdF9weWMpLAorICAgICAgICAgICAgICAgICAic3BhbSIgKyBweWNfZXh0OiAoTk9XLCB0ZXN0X3B5Yyl9CiAKICAgICAgICAgeiA9IFppcEZpbGUoVEVNUF9aSVAsICJ3IikKICAgICAgICAgdHJ5OgpAQCAtNDEyLDYgKzQxMywxNCBAQAogICAgICAgICAgICAgemkgPSB6aXBpbXBvcnQuemlwaW1wb3J0ZXIoVEVNUF9aSVApCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHppLmFyY2hpdmUsIFRFTVBfWklQKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh6aS5pc19wYWNrYWdlKFRFU1RQQUNLKSwgVHJ1ZSkKKworICAgICAgICAgICAgZmluZF9tb2QgPSB6aS5maW5kX21vZHVsZSgnc3BhbScpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0SXNJbnN0YW5jZShmaW5kX21vZCwgemlwaW1wb3J0LnppcGltcG9ydGVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShmaW5kX21vZC5pc19wYWNrYWdlKCdzcGFtJykpCisgICAgICAgICAgICBsb2FkX21vZCA9IGZpbmRfbW9kLmxvYWRfbW9kdWxlKCdzcGFtJykKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZmluZF9tb2QuZ2V0X2ZpbGVuYW1lKCdzcGFtJyksIGxvYWRfbW9kLl9fZmlsZV9fKQorCiAgICAgICAgICAgICBtb2QgPSB6aS5sb2FkX21vZHVsZShURVNUUEFDSykKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemkuZ2V0X2ZpbGVuYW1lKFRFU1RQQUNLKSwgbW9kLl9fZmlsZV9fKQogCkBAIC00NzEsNiArNDgwLDE2IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAogICAgICAgICAgICAgICAgIHppLmlzX3BhY2thZ2UoVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRCksIEZhbHNlKQogCisgICAgICAgICAgICBwa2dfcGF0aCA9IFRFTVBfWklQICsgb3Muc2VwICsgcGFja2RpciArIFRFU1RQQUNLMgorICAgICAgICAgICAgemkyID0gemlwaW1wb3J0LnppcGltcG9ydGVyKHBrZ19wYXRoKQorICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkID0gemkyLmZpbmRfbW9kdWxlKFRFU1RNT0QpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShmaW5kX21vZF9kb3R0ZWQpCisgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZmluZF9tb2RfZG90dGVkLCB6aXBpbXBvcnQuemlwaW1wb3J0ZXIpCisgICAgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKHppMi5pc19wYWNrYWdlKFRFU1RNT0QpKQorICAgICAgICAgICAgbG9hZF9tb2QgPSBmaW5kX21vZF9kb3R0ZWQubG9hZF9tb2R1bGUoVEVTVE1PRCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgZmluZF9tb2RfZG90dGVkLmdldF9maWxlbmFtZShURVNUTU9EKSwgbG9hZF9tb2QuX19maWxlX18pCisKICAgICAgICAgICAgIG1vZF9wYXRoID0gVEVTVFBBQ0syICsgb3Muc2VwICsgVEVTVE1PRAogICAgICAgICAgICAgbW9kX25hbWUgPSBtb2R1bGVfcGF0aF90b19kb3R0ZWRfbmFtZShtb2RfcGF0aCkKICAgICAgICAgICAgIG1vZCA9IGltcG9ydGxpYi5pbXBvcnRfbW9kdWxlKG1vZF9uYW1lKQpAQCAtNjIzLDggKzY0MiwxMCBAQAogCiAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihmaWxlbmFtZSkKICAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKG9zLmZzZW5jb2RlKGZpbGVuYW1lKSkKLSAgICAgICAgemlwaW1wb3J0LnppcGltcG9ydGVyKGJ5dGVhcnJheShvcy5mc2VuY29kZShmaWxlbmFtZSkpKQotICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHppcGltcG9ydC56aXBpbXBvcnRlcihieXRlYXJyYXkob3MuZnNlbmNvZGUoZmlsZW5hbWUpKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICB6aXBpbXBvcnQuemlwaW1wb3J0ZXIobWVtb3J5dmlldyhvcy5mc2VuY29kZShmaWxlbmFtZSkpKQogCiAKIEBzdXBwb3J0LnJlcXVpcmVzX3psaWIKZGlmZiAtLWdpdCBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkgYi9MaWIvdGVzdC90ZXN0X3ppcGltcG9ydF9zdXBwb3J0LnB5CmluZGV4IDU5MTM2MjIuLjg0ZDUyNmMgMTAwNjQ0Ci0tLSBhL0xpYi90ZXN0L3Rlc3RfemlwaW1wb3J0X3N1cHBvcnQucHkKKysrIGIvTGliL3Rlc3QvdGVzdF96aXBpbXBvcnRfc3VwcG9ydC5weQpAQCAtMTIsNyArMTIsNiBAQAogaW1wb3J0IGRvY3Rlc3QKIGltcG9ydCBpbnNwZWN0CiBpbXBvcnQgbGluZWNhY2hlCi1pbXBvcnQgcGRiCiBpbXBvcnQgdW5pdHRlc3QKIGZyb20gdGVzdC5zdXBwb3J0LnNjcmlwdF9oZWxwZXIgaW1wb3J0IChzcGF3bl9weXRob24sIGtpbGxfcHl0aG9uLCBhc3NlcnRfcHl0aG9uX29rLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1ha2Vfc2NyaXB0LCBtYWtlX3ppcF9zY3JpcHQpCmRpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3psaWIucHkgYi9MaWIvdGVzdC90ZXN0X3psaWIucHkKaW5kZXggNmZlYTg5My4uMjAxNzRkOCAxMDA2NDQKLS0tIGEvTGliL3Rlc3QvdGVzdF96bGliLnB5CisrKyBiL0xpYi90ZXN0L3Rlc3RfemxpYi5weQpAQCAtMTY0LDYgKzE2NCwxNiBAQAogICAgICAgICB4ID0gemxpYi5jb21wcmVzcyhIQU1MRVRfU0NFTkUpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoemxpYi5kZWNvbXByZXNzKHgpLCBIQU1MRVRfU0NFTkUpCiAKKyAgICBkZWYgdGVzdF9rZXl3b3JkcyhzZWxmKToKKyAgICAgICAgeCA9IHpsaWIuY29tcHJlc3MoSEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4KSwgSEFNTEVUX1NDRU5FKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcik6CisgICAgICAgICAgICB6bGliLmNvbXByZXNzKGRhdGE9SEFNTEVUX1NDRU5FLCBsZXZlbD0zKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHpsaWIuZGVjb21wcmVzcyh4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3Yml0cz16bGliLk1BWF9XQklUUywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmc2l6ZT16bGliLkRFRl9CVUZfU0laRSksCisgICAgICAgICAgICAgICAgICAgICAgICAgSEFNTEVUX1NDRU5FKQorCiAgICAgZGVmIHRlc3Rfc3BlZWNoMTI4KHNlbGYpOgogICAgICAgICAjIGNvbXByZXNzIG1vcmUgZGF0YQogICAgICAgICBkYXRhID0gSEFNTEVUX1NDRU5FICogMTI4CkBAIC0yMzQsNiArMjQ0LDI3IEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVuY29uc3VtZWRfdGFpbCwgYnl0ZXMpCiAgICAgICAgICAgICBzZWxmLmFzc2VydElzSW5zdGFuY2UoZGNvLnVudXNlZF9kYXRhLCBieXRlcykKIAorICAgIGRlZiB0ZXN0X2tleXdvcmRzKHNlbGYpOgorICAgICAgICBsZXZlbCA9IDIKKyAgICAgICAgbWV0aG9kID0gemxpYi5ERUZMQVRFRAorICAgICAgICB3Yml0cyA9IC0xMgorICAgICAgICBtZW1MZXZlbCA9IDkKKyAgICAgICAgc3RyYXRlZ3kgPSB6bGliLlpfRklMVEVSRUQKKyAgICAgICAgY28gPSB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWV0aG9kPW1ldGhvZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdiaXRzPXdiaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWVtTGV2ZWw9bWVtTGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJhdGVneT1zdHJhdGVneSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHpkaWN0PWIiIikKKyAgICAgICAgZG8gPSB6bGliLmRlY29tcHJlc3NvYmood2JpdHM9d2JpdHMsIHpkaWN0PWIiIikKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpOgorICAgICAgICAgICAgY28uY29tcHJlc3MoZGF0YT1IQU1MRVRfU0NFTkUpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKToKKyAgICAgICAgICAgIGRvLmRlY29tcHJlc3MoZGF0YT16bGliLmNvbXByZXNzKEhBTUxFVF9TQ0VORSkpCisgICAgICAgIHggPSBjby5jb21wcmVzcyhIQU1MRVRfU0NFTkUpICsgY28uZmx1c2goKQorICAgICAgICB5ID0gZG8uZGVjb21wcmVzcyh4LCBtYXhfbGVuZ3RoPWxlbihIQU1MRVRfU0NFTkUpKSArIGRvLmZsdXNoKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChIQU1MRVRfU0NFTkUsIHkpCisKICAgICBkZWYgdGVzdF9jb21wcmVzc29wdGlvbnMoc2VsZik6CiAgICAgICAgICMgc3BlY2lmeSBsb3RzIG9mIG9wdGlvbnMgdG8gY29tcHJlc3NvYmooKQogICAgICAgICBsZXZlbCA9IDIKQEAgLTI0OSwxMCArMjgwLDYgQEAKICAgICAgICAgeTIgPSBkY28uZmx1c2goKQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKEhBTUxFVF9TQ0VORSwgeTEgKyB5MikKIAotICAgICAgICAjIGtleXdvcmQgYXJndW1lbnRzIHNob3VsZCBhbHNvIGJlIHN1cHBvcnRlZAotICAgICAgICB6bGliLmNvbXByZXNzb2JqKGxldmVsPWxldmVsLCBtZXRob2Q9bWV0aG9kLCB3Yml0cz13Yml0cywKLSAgICAgICAgICAgIG1lbUxldmVsPW1lbUxldmVsLCBzdHJhdGVneT1zdHJhdGVneSwgemRpY3Q9YiIiKQotCiAgICAgZGVmIHRlc3RfY29tcHJlc3NpbmNyZW1lbnRhbChzZWxmKToKICAgICAgICAgIyBjb21wcmVzcyBvYmplY3QgaW4gc3RlcHMsIGRlY29tcHJlc3Mgb2JqZWN0IGFzIG9uZS1zaG90CiAgICAgICAgIGRhdGEgPSBIQU1MRVRfU0NFTkUgKiAxMjgKZGlmZiAtLWdpdCBhL0xpYi90aHJlYWRpbmcucHkgYi9MaWIvdGhyZWFkaW5nLnB5CmluZGV4IDA2YjdiOWIuLjQ4MjlmZjQgMTAwNjQ0Ci0tLSBhL0xpYi90aHJlYWRpbmcucHkKKysrIGIvTGliL3RocmVhZGluZy5weQpAQCAtMjIsOSArMjIsMTEgQEAKICMgd2l0aCB0aGUgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSwgd2hpY2ggZG9lc24ndCBwcm92aWRlIHRoZSBvbGQKICMgSmF2YSBpbnNwaXJlZCBuYW1lcy4KIAotX19hbGxfXyA9IFsnYWN0aXZlX2NvdW50JywgJ0NvbmRpdGlvbicsICdjdXJyZW50X3RocmVhZCcsICdlbnVtZXJhdGUnLCAnRXZlbnQnLAotICAgICAgICAgICAnTG9jaycsICdSTG9jaycsICdTZW1hcGhvcmUnLCAnQm91bmRlZFNlbWFwaG9yZScsICdUaHJlYWQnLCAnQmFycmllcicsCi0gICAgICAgICAgICdUaW1lcicsICdUaHJlYWRFcnJvcicsICdzZXRwcm9maWxlJywgJ3NldHRyYWNlJywgJ2xvY2FsJywgJ3N0YWNrX3NpemUnXQorX19hbGxfXyA9IFsnZ2V0X2lkZW50JywgJ2FjdGl2ZV9jb3VudCcsICdDb25kaXRpb24nLCAnY3VycmVudF90aHJlYWQnLAorICAgICAgICAgICAnZW51bWVyYXRlJywgJ21haW5fdGhyZWFkJywgJ1RJTUVPVVRfTUFYJywKKyAgICAgICAgICAgJ0V2ZW50JywgJ0xvY2snLCAnUkxvY2snLCAnU2VtYXBob3JlJywgJ0JvdW5kZWRTZW1hcGhvcmUnLCAnVGhyZWFkJywKKyAgICAgICAgICAgJ0JhcnJpZXInLCAnQnJva2VuQmFycmllckVycm9yJywgJ1RpbWVyJywgJ1RocmVhZEVycm9yJywKKyAgICAgICAgICAgJ3NldHByb2ZpbGUnLCAnc2V0dHJhY2UnLCAnbG9jYWwnLCAnc3RhY2tfc2l6ZSddCiAKICMgUmVuYW1lIHNvbWUgc3R1ZmYgc28gImZyb20gdGhyZWFkaW5nIGltcG9ydCAqIiBpcyBzYWZlCiBfc3RhcnRfbmV3X3RocmVhZCA9IF90aHJlYWQuc3RhcnRfbmV3X3RocmVhZApkaWZmIC0tZ2l0IGEvTGliL3RpbWVpdC5weSBiL0xpYi90aW1laXQucHkKb2xkIG1vZGUgMTAwNzU1Cm5ldyBtb2RlIDEwMDY0NAppbmRleCAyZGU4OGY3Li4yNzcwZWZhCi0tLSBhL0xpYi90aW1laXQucHkKKysrIGIvTGliL3RpbWVpdC5weQpAQCAtMjA3LDYgKzIwNywyNiBAQAogICAgICAgICAgICAgci5hcHBlbmQodCkKICAgICAgICAgcmV0dXJuIHIKIAorICAgIGRlZiBhdXRvcmFuZ2Uoc2VsZiwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnVtYmVyIG9mIGxvb3BzIHNvIHRoYXQgdG90YWwgdGltZSA+PSAwLjIuCisKKyAgICAgICAgQ2FsbHMgdGhlIHRpbWVpdCBtZXRob2Qgd2l0aCAqbnVtYmVyKiBzZXQgdG8gc3VjY2Vzc2l2ZSBwb3dlcnMgb2YKKyAgICAgICAgdGVuICgxMCwgMTAwLCAxMDAwLCAuLi4pIHVwIHRvIGEgbWF4aW11bSBvZiBvbmUgYmlsbGlvbiwgdW50aWwKKyAgICAgICAgdGhlIHRpbWUgdGFrZW4gaXMgYXQgbGVhc3QgMC4yIHNlY29uZCwgb3IgdGhlIG1heGltdW0gaXMgcmVhY2hlZC4KKyAgICAgICAgUmV0dXJucyBgYChudW1iZXIsIHRpbWVfdGFrZW4pYGAuCisKKyAgICAgICAgSWYgKmNhbGxiYWNrKiBpcyBnaXZlbiBhbmQgaXMgbm90IE5vbmUsIGl0IHdpbGwgYmUgY2FsbGVkIGFmdGVyCisgICAgICAgIGVhY2ggdHJpYWwgd2l0aCB0d28gYXJndW1lbnRzOiBgYGNhbGxiYWNrKG51bWJlciwgdGltZV90YWtlbilgYC4KKyAgICAgICAgIiIiCisgICAgICAgIGZvciBpIGluIHJhbmdlKDEsIDEwKToKKyAgICAgICAgICAgIG51bWJlciA9IDEwKippCisgICAgICAgICAgICB0aW1lX3Rha2VuID0gc2VsZi50aW1laXQobnVtYmVyKQorICAgICAgICAgICAgaWYgY2FsbGJhY2s6CisgICAgICAgICAgICAgICAgY2FsbGJhY2sobnVtYmVyLCB0aW1lX3Rha2VuKQorICAgICAgICAgICAgaWYgdGltZV90YWtlbiA+PSAwLjI6CisgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgcmV0dXJuIChudW1iZXIsIHRpbWVfdGFrZW4pCisKIGRlZiB0aW1laXQoc3RtdD0icGFzcyIsIHNldHVwPSJwYXNzIiwgdGltZXI9ZGVmYXVsdF90aW1lciwKICAgICAgICAgICAgbnVtYmVyPWRlZmF1bHRfbnVtYmVyLCBnbG9iYWxzPU5vbmUpOgogICAgICIiIkNvbnZlbmllbmNlIGZ1bmN0aW9uIHRvIGNyZWF0ZSBUaW1lciBvYmplY3QgYW5kIGNhbGwgdGltZWl0IG1ldGhvZC4iIiIKQEAgLTI5NSwxNyArMzE1LDE2IEBACiAgICAgdCA9IFRpbWVyKHN0bXQsIHNldHVwLCB0aW1lcikKICAgICBpZiBudW1iZXIgPT0gMDoKICAgICAgICAgIyBkZXRlcm1pbmUgbnVtYmVyIHNvIHRoYXQgMC4yIDw9IHRvdGFsIHRpbWUgPCAyLjAKLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UoMSwgMTApOgotICAgICAgICAgICAgbnVtYmVyID0gMTAqKmkKLSAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICB4ID0gdC50aW1laXQobnVtYmVyKQotICAgICAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgICAgIHQucHJpbnRfZXhjKCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICAgICAgaWYgdmVyYm9zZToKLSAgICAgICAgICAgICAgICBwcmludCgiJWQgbG9vcHMgLT4gJS4qZyBzZWNzIiAlIChudW1iZXIsIHByZWNpc2lvbiwgeCkpCi0gICAgICAgICAgICBpZiB4ID49IDAuMjoKLSAgICAgICAgICAgICAgICBicmVhaworICAgICAgICBjYWxsYmFjayA9IE5vbmUKKyAgICAgICAgaWYgdmVyYm9zZToKKyAgICAgICAgICAgIGRlZiBjYWxsYmFjayhudW1iZXIsIHRpbWVfdGFrZW4pOgorICAgICAgICAgICAgICAgIG1zZyA9ICJ7bnVtfSBsb29wcyAtPiB7c2Vjczoue3ByZWN9Z30gc2VjcyIKKyAgICAgICAgICAgICAgICBwcmludChtc2cuZm9ybWF0KG51bT1udW1iZXIsIHNlY3M9dGltZV90YWtlbiwgcHJlYz1wcmVjaXNpb24pKQorICAgICAgICB0cnk6CisgICAgICAgICAgICBudW1iZXIsIF8gPSB0LmF1dG9yYW5nZShjYWxsYmFjaykKKyAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgdC5wcmludF9leGMoKQorICAgICAgICAgICAgcmV0dXJuIDEKICAgICB0cnk6CiAgICAgICAgIHIgPSB0LnJlcGVhdChyZXBlYXQsIG51bWJlcikKICAgICBleGNlcHQ6CkBAIC0zMTcsMjAgKzMzNiwyNiBAQAogICAgIHByaW50KCIlZCBsb29wcywiICUgbnVtYmVyLCBlbmQ9JyAnKQogICAgIHVzZWMgPSBiZXN0ICogMWU2IC8gbnVtYmVyCiAgICAgaWYgdGltZV91bml0IGlzIG5vdCBOb25lOgotICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyAlcyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VjL3VuaXRzW3RpbWVfdW5pdF0sIHRpbWVfdW5pdCkpCisgICAgICAgIHNjYWxlID0gdW5pdHNbdGltZV91bml0XQogICAgIGVsc2U6Ci0gICAgICAgIGlmIHVzZWMgPCAxMDAwOgotICAgICAgICAgICAgcHJpbnQoImJlc3Qgb2YgJWQ6ICUuKmcgdXNlYyBwZXIgbG9vcCIgJSAocmVwZWF0LCBwcmVjaXNpb24sIHVzZWMpKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbXNlYyA9IHVzZWMgLyAxMDAwCi0gICAgICAgICAgICBpZiBtc2VjIDwgMTAwMDoKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBtc2VjIHBlciBsb29wIiAlIChyZXBlYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlY2lzaW9uLCBtc2VjKSkKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc2VjID0gbXNlYyAvIDEwMDAKLSAgICAgICAgICAgICAgICBwcmludCgiYmVzdCBvZiAlZDogJS4qZyBzZWMgcGVyIGxvb3AiICUgKHJlcGVhdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiwgc2VjKSkKKyAgICAgICAgc2NhbGVzID0gWyhzY2FsZSwgdW5pdCkgZm9yIHVuaXQsIHNjYWxlIGluIHVuaXRzLml0ZW1zKCldCisgICAgICAgIHNjYWxlcy5zb3J0KHJldmVyc2U9VHJ1ZSkKKyAgICAgICAgZm9yIHNjYWxlLCB0aW1lX3VuaXQgaW4gc2NhbGVzOgorICAgICAgICAgICAgaWYgdXNlYyA+PSBzY2FsZToKKyAgICAgICAgICAgICAgICBicmVhaworICAgIHByaW50KCJiZXN0IG9mICVkOiAlLipnICVzIHBlciBsb29wIiAlIChyZXBlYXQsIHByZWNpc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNlYy9zY2FsZSwgdGltZV91bml0KSkKKyAgICBiZXN0ID0gbWluKHIpCisgICAgdXNlYyA9IGJlc3QgKiAxZTYgLyBudW1iZXIKKyAgICB3b3JzdCA9IG1heChyKQorICAgIGlmIHdvcnN0ID49IGJlc3QgKiA0OgorICAgICAgICB1c2VjID0gd29yc3QgKiAxZTYgLyBudW1iZXIKKyAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgIHdhcm5pbmdzLndhcm5fZXhwbGljaXQoCisgICAgICAgICAgICAiVGhlIHRlc3QgcmVzdWx0cyBhcmUgbGlrZWx5IHVucmVsaWFibGUuIFRoZSB3b3JzdFxuIgorICAgICAgICAgICAgInRpbWUgKCUuKmcgJXMpIHdhcyBtb3JlIHRoYW4gZm91ciB0aW1lcyBzbG93ZXIgdGhhbiB0aGUgYmVzdCB0aW1lLiIgJQorICAgICAgICAgICAgKHByZWNpc2lvbiwgdXNlYy9zY2FsZSwgdGltZV91bml0KSwKKyAgICAgICAgICAgICBVc2VyV2FybmluZywgJycsIDApCiAgICAgcmV0dXJuIE5vbmUKIAogaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL19faW5pdF9fLnB5IGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKaW5kZXggNTViZmI3Zi4uOTlhZDJhNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvX19pbml0X18ucHkKKysrIGIvTGliL3RraW50ZXIvX19pbml0X18ucHkKQEAgLTMwLDYgKzMwLDcgQEAKIHRrLm1haW5sb29wKCkKICIiIgogCitpbXBvcnQgZW51bQogaW1wb3J0IHN5cwogCiBpbXBvcnQgX3RraW50ZXIgIyBJZiB0aGlzIGZhaWxzIHlvdXIgUHl0aG9uIG1heSBub3QgYmUgY29uZmlndXJlZCBmb3IgVGsKQEAgLTEzMiw2ICsxMzMsNTAgQEAKICAgICAgICAgZGljdFtrZXldID0gdmFsdWUKICAgICByZXR1cm4gZGljdAogCisKK2NsYXNzIEV2ZW50VHlwZShzdHIsIGVudW0uRW51bSk6CisgICAgS2V5UHJlc3MgPSAnMicKKyAgICBLZXkgPSBLZXlQcmVzcywKKyAgICBLZXlSZWxlYXNlID0gJzMnCisgICAgQnV0dG9uUHJlc3MgPSAnNCcKKyAgICBCdXR0b24gPSBCdXR0b25QcmVzcywKKyAgICBCdXR0b25SZWxlYXNlID0gJzUnCisgICAgTW90aW9uID0gJzYnCisgICAgRW50ZXIgPSAnNycKKyAgICBMZWF2ZSA9ICc4JworICAgIEZvY3VzSW4gPSAnOScKKyAgICBGb2N1c091dCA9ICcxMCcKKyAgICBLZXltYXAgPSAnMTEnICAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIEV4cG9zZSA9ICcxMicKKyAgICBHcmFwaGljc0V4cG9zZSA9ICcxMycgICAjIHVuZG9jdW1lbnRlZAorICAgIE5vRXhwb3NlID0gJzE0JyAgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgVmlzaWJpbGl0eSA9ICcxNScKKyAgICBDcmVhdGUgPSAnMTYnCisgICAgRGVzdHJveSA9ICcxNycKKyAgICBVbm1hcCA9ICcxOCcKKyAgICBNYXAgPSAnMTknCisgICAgTWFwUmVxdWVzdCA9ICcyMCcKKyAgICBSZXBhcmVudCA9ICcyMScKKyAgICBDb25maWd1cmUgPSAnMjInCisgICAgQ29uZmlndXJlUmVxdWVzdCA9ICcyMycKKyAgICBHcmF2aXR5ID0gJzI0JworICAgIFJlc2l6ZVJlcXVlc3QgPSAnMjUnCisgICAgQ2lyY3VsYXRlID0gJzI2JworICAgIENpcmN1bGF0ZVJlcXVlc3QgPSAnMjcnCisgICAgUHJvcGVydHkgPSAnMjgnCisgICAgU2VsZWN0aW9uQ2xlYXIgPSAnMjknICAgIyB1bmRvY3VtZW50ZWQKKyAgICBTZWxlY3Rpb25SZXF1ZXN0ID0gJzMwJyAjIHVuZG9jdW1lbnRlZAorICAgIFNlbGVjdGlvbiA9ICczMScgICAgICAgICMgdW5kb2N1bWVudGVkCisgICAgQ29sb3JtYXAgPSAnMzInCisgICAgQ2xpZW50TWVzc2FnZSA9ICczMycgICAgIyB1bmRvY3VtZW50ZWQKKyAgICBNYXBwaW5nID0gJzM0JyAgICAgICAgICAjIHVuZG9jdW1lbnRlZAorICAgIFZpcnR1YWxFdmVudCA9ICczNScsICAgICMgdW5kb2N1bWVudGVkCisgICAgQWN0aXZhdGUgPSAnMzYnLAorICAgIERlYWN0aXZhdGUgPSAnMzcnLAorICAgIE1vdXNlV2hlZWwgPSAnMzgnLAorICAgIGRlZiBfX3N0cl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gc2VsZi5uYW1lCisKIGNsYXNzIEV2ZW50OgogICAgICIiIkNvbnRhaW5lciBmb3IgdGhlIHByb3BlcnRpZXMgb2YgYW4gZXZlbnQuCiAKQEAgLTE3NCw3ICsyMTksNDMgQEAKICAgICB3aWRnZXQgLSB3aWRnZXQgaW4gd2hpY2ggdGhlIGV2ZW50IG9jY3VycmVkCiAgICAgZGVsdGEgLSBkZWx0YSBvZiB3aGVlbCBtb3ZlbWVudCAoTW91c2VXaGVlbCkKICAgICAiIiIKLSAgICBwYXNzCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICBhdHRycyA9IHtrOiB2IGZvciBrLCB2IGluIHNlbGYuX19kaWN0X18uaXRlbXMoKSBpZiB2ICE9ICc/Pyd9CisgICAgICAgIGlmIG5vdCBzZWxmLmNoYXI6CisgICAgICAgICAgICBkZWwgYXR0cnNbJ2NoYXInXQorICAgICAgICBlbGlmIHNlbGYuY2hhciAhPSAnPz8nOgorICAgICAgICAgICAgYXR0cnNbJ2NoYXInXSA9IHJlcHIoc2VsZi5jaGFyKQorICAgICAgICBpZiBub3QgZ2V0YXR0cihzZWxmLCAnc2VuZF9ldmVudCcsIFRydWUpOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzZW5kX2V2ZW50J10KKyAgICAgICAgaWYgc2VsZi5zdGF0ZSA9PSAwOgorICAgICAgICAgICAgZGVsIGF0dHJzWydzdGF0ZSddCisgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzZWxmLnN0YXRlLCBpbnQpOgorICAgICAgICAgICAgc3RhdGUgPSBzZWxmLnN0YXRlCisgICAgICAgICAgICBtb2RzID0gKCdTaGlmdCcsICdMb2NrJywgJ0NvbnRyb2wnLAorICAgICAgICAgICAgICAgICAgICAnTW9kMScsICdNb2QyJywgJ01vZDMnLCAnTW9kNCcsICdNb2Q1JywKKyAgICAgICAgICAgICAgICAgICAgJ0J1dHRvbjEnLCAnQnV0dG9uMicsICdCdXR0b24zJywgJ0J1dHRvbjQnLCAnQnV0dG9uNScpCisgICAgICAgICAgICBzID0gW10KKyAgICAgICAgICAgIGZvciBpLCBuIGluIGVudW1lcmF0ZShtb2RzKToKKyAgICAgICAgICAgICAgICBpZiBzdGF0ZSAmICgxIDw8IGkpOgorICAgICAgICAgICAgICAgICAgICBzLmFwcGVuZChuKQorICAgICAgICAgICAgc3RhdGUgPSBzdGF0ZSAmIH4oKDE8PCBsZW4obW9kcykpIC0gMSkKKyAgICAgICAgICAgIGlmIHN0YXRlIG9yIG5vdCBzOgorICAgICAgICAgICAgICAgIHMuYXBwZW5kKGhleChzdGF0ZSkpCisgICAgICAgICAgICBhdHRyc1snc3RhdGUnXSA9ICd8Jy5qb2luKHMpCisgICAgICAgIGlmIHNlbGYuZGVsdGEgPT0gMDoKKyAgICAgICAgICAgIGRlbCBhdHRyc1snZGVsdGEnXQorICAgICAgICAjIHdpZGdldCB1c3VhbGx5IGlzIGtub3duCisgICAgICAgICMgc2VyaWFsIGFuZCB0aW1lIGFyZSBub3QgdmVyeSBpbnRlcmVzdGluZworICAgICAgICAjIGtleXN5bV9udW0gZHVwbGljYXRlcyBrZXlzeW0KKyAgICAgICAgIyB4X3Jvb3QgYW5kIHlfcm9vdCBtb3N0bHkgZHVwbGljYXRlIHggYW5kIHkKKyAgICAgICAga2V5cyA9ICgnc2VuZF9ldmVudCcsCisgICAgICAgICAgICAgICAgJ3N0YXRlJywgJ2tleXN5bScsICdrZXljb2RlJywgJ2NoYXInLAorICAgICAgICAgICAgICAgICdudW0nLCAnZGVsdGEnLCAnZm9jdXMnLAorICAgICAgICAgICAgICAgICd4JywgJ3knLCAnd2lkdGgnLCAnaGVpZ2h0JykKKyAgICAgICAgcmV0dXJuICc8JXMgZXZlbnQlcz4nICUgKAorICAgICAgICAgICAgc2VsZi50eXBlLAorICAgICAgICAgICAgJycuam9pbignICVzPSVzJyAlIChrLCBhdHRyc1trXSkgZm9yIGsgaW4ga2V5cyBpZiBrIGluIGF0dHJzKQorICAgICAgICApCiAKIF9zdXBwb3J0X2RlZmF1bHRfcm9vdCA9IDEKIF9kZWZhdWx0X3Jvb3QgPSBOb25lCkBAIC0yNjIsMTUgKzM0Myw4IEBACiAgICAgZGVmIGdldChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIHZhbHVlIG9mIHZhcmlhYmxlLiIiIgogICAgICAgICByZXR1cm4gc2VsZi5fdGsuZ2xvYmFsZ2V0dmFyKHNlbGYuX25hbWUpCi0gICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKLSAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgotICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCi0KLSAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KLSAgICAgICAgIiIiCisgICAgZGVmIF9yZWdpc3RlcihzZWxmLCBjYWxsYmFjayk6CiAgICAgICAgIGYgPSBDYWxsV3JhcHBlcihjYWxsYmFjaywgTm9uZSwgc2VsZi5fcm9vdCkuX19jYWxsX18KICAgICAgICAgY2JuYW1lID0gcmVwcihpZChmKSkKICAgICAgICAgdHJ5OgpAQCAtMjg1LDE4ICszNTksMzMgQEAKICAgICAgICAgaWYgc2VsZi5fdGNsQ29tbWFuZHMgaXMgTm9uZToKICAgICAgICAgICAgIHNlbGYuX3RjbENvbW1hbmRzID0gW10KICAgICAgICAgc2VsZi5fdGNsQ29tbWFuZHMuYXBwZW5kKGNibmFtZSkKLSAgICAgICAgc2VsZi5fdGsuY2FsbCgidHJhY2UiLCAidmFyaWFibGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCiAgICAgICAgIHJldHVybiBjYm5hbWUKLSAgICB0cmFjZSA9IHRyYWNlX3ZhcmlhYmxlCi0gICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKworICAgIGRlZiB0cmFjZV9hZGQoc2VsZiwgbW9kZSwgY2FsbGJhY2spOgorICAgICAgICAiIiJEZWZpbmUgYSB0cmFjZSBjYWxsYmFjayBmb3IgdGhlIHZhcmlhYmxlLgorCisgICAgICAgIE1vZGUgaXMgb25lIG9mICJyZWFkIiwgIndyaXRlIiwgInVuc2V0Iiwgb3IgYSBsaXN0IG9yIHR1cGxlIG9mCisgICAgICAgIHN1Y2ggc3RyaW5ncy4KKyAgICAgICAgQ2FsbGJhY2sgbXVzdCBiZSBhIGZ1bmN0aW9uIHdoaWNoIGlzIGNhbGxlZCB3aGVuIHRoZSB2YXJpYWJsZSBpcworICAgICAgICByZWFkLCB3cml0dGVuIG9yIHVuc2V0LgorCisgICAgICAgIFJldHVybiB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2suCisgICAgICAgICIiIgorICAgICAgICBjYm5hbWUgPSBzZWxmLl9yZWdpc3RlcihjYWxsYmFjaykKKyAgICAgICAgc2VsZi5fdGsuY2FsbCgndHJhY2UnLCAnYWRkJywgJ3ZhcmlhYmxlJywKKyAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9uYW1lLCBtb2RlLCAoY2JuYW1lLCkpCisgICAgICAgIHJldHVybiBjYm5hbWUKKworICAgIGRlZiB0cmFjZV9yZW1vdmUoc2VsZiwgbW9kZSwgY2JuYW1lKToKICAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KIAotICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCi0gICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKyAgICAgICAgTW9kZSBpcyBvbmUgb2YgInJlYWQiLCAid3JpdGUiLCAidW5zZXQiIG9yIGEgbGlzdCBvciB0dXBsZSBvZgorICAgICAgICBzdWNoIHN0cmluZ3MuICBNdXN0IGJlIHNhbWUgYXMgd2VyZSBzcGVjaWZpZWQgaW4gdHJhY2VfYWRkKCkuCisgICAgICAgIGNibmFtZSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV9hZGQoKS4KICAgICAgICAgIiIiCi0gICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCi0gICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCi0gICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX3ZpbmZvKCk6CisgICAgICAgIHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ3JlbW92ZScsICd2YXJpYWJsZScsCisgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fbmFtZSwgbW9kZSwgY2JuYW1lKQorICAgICAgICBmb3IgbSwgY2EgaW4gc2VsZi50cmFjZV9pbmZvKCk6CiAgICAgICAgICAgICBpZiBzZWxmLl90ay5zcGxpdGxpc3QoY2EpWzBdID09IGNibmFtZToKICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICBlbHNlOgpAQCAtMzA1LDEwICszOTQsNjQgQEAKICAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQogICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CiAgICAgICAgICAgICAgICAgcGFzcwotICAgIGRlZiB0cmFjZV92aW5mbyhzZWxmKToKKworICAgIGRlZiB0cmFjZV9pbmZvKHNlbGYpOgogICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLiIiIgorICAgICAgICBzcGxpdGxpc3QgPSBzZWxmLl90ay5zcGxpdGxpc3QKKyAgICAgICAgcmV0dXJuIFsoc3BsaXRsaXN0KGspLCB2KSBmb3IgaywgdiBpbiBtYXAoc3BsaXRsaXN0LAorICAgICAgICAgICAgc3BsaXRsaXN0KHNlbGYuX3RrLmNhbGwoJ3RyYWNlJywgJ2luZm8nLCAndmFyaWFibGUnLCBzZWxmLl9uYW1lKSkpXQorCisgICAgZGVmIHRyYWNlX3ZhcmlhYmxlKHNlbGYsIG1vZGUsIGNhbGxiYWNrKToKKyAgICAgICAgIiIiRGVmaW5lIGEgdHJhY2UgY2FsbGJhY2sgZm9yIHRoZSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENBTExCQUNLIG11c3QgYmUgYSBmdW5jdGlvbiB3aGljaCBpcyBjYWxsZWQgd2hlbgorICAgICAgICB0aGUgdmFyaWFibGUgaXMgcmVhZCwgd3JpdHRlbiBvciB1bmRlZmluZWQuCisKKyAgICAgICAgUmV0dXJuIHRoZSBuYW1lIG9mIHRoZSBjYWxsYmFjay4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX2FkZCgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3JlZ2lzdGVyKGNhbGxiYWNrKQorICAgICAgICBzZWxmLl90ay5jYWxsKCJ0cmFjZSIsICJ2YXJpYWJsZSIsIHNlbGYuX25hbWUsIG1vZGUsIGNibmFtZSkKKyAgICAgICAgcmV0dXJuIGNibmFtZQorCisgICAgdHJhY2UgPSB0cmFjZV92YXJpYWJsZQorCisgICAgZGVmIHRyYWNlX3ZkZWxldGUoc2VsZiwgbW9kZSwgY2JuYW1lKToKKyAgICAgICAgIiIiRGVsZXRlIHRoZSB0cmFjZSBjYWxsYmFjayBmb3IgYSB2YXJpYWJsZS4KKworICAgICAgICBNT0RFIGlzIG9uZSBvZiAiciIsICJ3IiwgInUiIGZvciByZWFkLCB3cml0ZSwgdW5kZWZpbmUuCisgICAgICAgIENCTkFNRSBpcyB0aGUgbmFtZSBvZiB0aGUgY2FsbGJhY2sgcmV0dXJuZWQgZnJvbSB0cmFjZV92YXJpYWJsZSBvciB0cmFjZS4KKworICAgICAgICBUaGlzIGRlcHJlY2F0ZWQgbWV0aG9kIHdyYXBzIGEgZGVwcmVjYXRlZCBUY2wgbWV0aG9kIHRoYXQgd2lsbAorICAgICAgICBsaWtlbHkgYmUgcmVtb3ZlZCBpbiB0aGUgZnV0dXJlLiAgVXNlIHRyYWNlX3JlbW92ZSgpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCisgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZkZWxldGUiLCBzZWxmLl9uYW1lLCBtb2RlLCBjYm5hbWUpCisgICAgICAgIGNibmFtZSA9IHNlbGYuX3RrLnNwbGl0bGlzdChjYm5hbWUpWzBdCisgICAgICAgIGZvciBtLCBjYSBpbiBzZWxmLnRyYWNlX2luZm8oKToKKyAgICAgICAgICAgIGlmIHNlbGYuX3RrLnNwbGl0bGlzdChjYSlbMF0gPT0gY2JuYW1lOgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLl90ay5kZWxldGVjb21tYW5kKGNibmFtZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBzZWxmLl90Y2xDb21tYW5kcy5yZW1vdmUoY2JuYW1lKQorICAgICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAgICAgcGFzcworCisgICAgZGVmIHRyYWNlX3ZpbmZvKHNlbGYpOgorICAgICAgICAiIiJSZXR1cm4gYWxsIHRyYWNlIGNhbGxiYWNrIGluZm9ybWF0aW9uLgorCisgICAgICAgIFRoaXMgZGVwcmVjYXRlZCBtZXRob2Qgd3JhcHMgYSBkZXByZWNhdGVkIFRjbCBtZXRob2QgdGhhdCB3aWxsCisgICAgICAgIGxpa2VseSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuICBVc2UgdHJhY2VfaW5mbygpIGluc3RlYWQuCisgICAgICAgICIiIgorICAgICAgICAjIFRPRE86IEFkZCBkZXByZWNhdGlvbiB3YXJuaW5nCiAgICAgICAgIHJldHVybiBbc2VsZi5fdGsuc3BsaXRsaXN0KHgpIGZvciB4IGluIHNlbGYuX3RrLnNwbGl0bGlzdCgKICAgICAgICAgICAgIHNlbGYuX3RrLmNhbGwoInRyYWNlIiwgInZpbmZvIiwgc2VsZi5fbmFtZSkpXQorCiAgICAgZGVmIF9fZXFfXyhzZWxmLCBvdGhlcik6CiAgICAgICAgICIiIkNvbXBhcmlzb24gZm9yIGVxdWFsaXR5ICg9PSkuCiAKQEAgLTQyNiw2ICs1NjksOSBAQAogCiAgICAgQmFzZSBjbGFzcyB3aGljaCBkZWZpbmVzIG1ldGhvZHMgY29tbW9uIGZvciBpbnRlcmlvciB3aWRnZXRzLiIiIgogCisgICAgIyB1c2VkIGZvciBnZW5lcmF0aW5nIGNoaWxkIHdpZGdldCBuYW1lcworICAgIF9sYXN0X2NoaWxkX2lkcyA9IE5vbmUKKwogICAgICMgWFhYIGZvbnQgY29tbWFuZD8KICAgICBfdGNsQ29tbWFuZHMgPSBOb25lCiAgICAgZGVmIGRlc3Ryb3koc2VsZik6CkBAIC00NzMsMTIgKzYxOSw2IEBACiAgICAgICAgIGRpc2FibGVkRm9yZWdyb3VuZCwgaW5zZXJ0QmFja2dyb3VuZCwgdHJvdWdoQ29sb3IuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgoJ3RrX3NldFBhbGV0dGUnLCkKICAgICAgICAgICAgICAgKyBfZmxhdHRlbihhcmdzKSArIF9mbGF0dGVuKGxpc3Qoa3cuaXRlbXMoKSkpKQotICAgIGRlZiB0a19tZW51QmFyKHNlbGYsICphcmdzKToKLSAgICAgICAgIiIiRG8gbm90IHVzZS4gTmVlZGVkIGluIFRrIDMuNiBhbmQgZWFybGllci4iIiIKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX21lbnVCYXIoKSBkb2VzIG5vdGhpbmcgYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiAzLjYnLAotICAgICAgICAgICAgICAgICAgICAgIERlcHJlY2F0aW9uV2FybmluZywgc3RhY2tsZXZlbD0yKQogICAgIGRlZiB3YWl0X3ZhcmlhYmxlKHNlbGYsIG5hbWU9J1BZX1ZBUicpOgogICAgICAgICAiIiJXYWl0IHVudGlsIHRoZSB2YXJpYWJsZSBpcyBtb2RpZmllZC4KIApAQCAtODUwLDggKzk5MCw3IEBACiAgICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2hlaWdodCcsIHNlbGYuX3cpKQogICAgIGRlZiB3aW5mb19pZChzZWxmKToKICAgICAgICAgIiIiUmV0dXJuIGlkZW50aWZpZXIgSUQgZm9yIHRoaXMgd2lkZ2V0LiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5nZXRpbnQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ2lkJywgc2VsZi5fdykpCisgICAgICAgIHJldHVybiBpbnQoc2VsZi50ay5jYWxsKCd3aW5mbycsICdpZCcsIHNlbGYuX3cpLCAwKQogICAgIGRlZiB3aW5mb19pbnRlcnBzKHNlbGYsIGRpc3BsYXlvZj0wKToKICAgICAgICAgIiIiUmV0dXJuIHRoZSBuYW1lIG9mIGFsbCBUY2wgaW50ZXJwcmV0ZXJzIGZvciB0aGlzIGRpc3BsYXkuIiIiCiAgICAgICAgIGFyZ3MgPSAoJ3dpbmZvJywgJ2ludGVycHMnKSArIHNlbGYuX2Rpc3BsYXlvZihkaXNwbGF5b2YpCkBAIC05NzEsMTggKzExMTAsMTYgQEAKICAgICBkZWYgd2luZm9fdmlzdWFsaWQoc2VsZik6CiAgICAgICAgICIiIlJldHVybiB0aGUgWCBpZGVudGlmaWVyIGZvciB0aGUgdmlzdWFsIGZvciB0aGlzIHdpZGdldC4iIiIKICAgICAgICAgcmV0dXJuIHNlbGYudGsuY2FsbCgnd2luZm8nLCAndmlzdWFsaWQnLCBzZWxmLl93KQotICAgIGRlZiB3aW5mb192aXN1YWxzYXZhaWxhYmxlKHNlbGYsIGluY2x1ZGVpZHM9MCk6CisgICAgZGVmIHdpbmZvX3Zpc3VhbHNhdmFpbGFibGUoc2VsZiwgaW5jbHVkZWlkcz1GYWxzZSk6CiAgICAgICAgICIiIlJldHVybiBhIGxpc3Qgb2YgYWxsIHZpc3VhbHMgYXZhaWxhYmxlIGZvciB0aGUgc2NyZWVuCiAgICAgICAgIG9mIHRoaXMgd2lkZ2V0LgogCiAgICAgICAgIEVhY2ggaXRlbSBpbiB0aGUgbGlzdCBjb25zaXN0cyBvZiBhIHZpc3VhbCBuYW1lIChzZWUgd2luZm9fdmlzdWFsKSwgYQotICAgICAgICBkZXB0aCBhbmQgaWYgSU5DTFVERUlEUz0xIGlzIGdpdmVuIGFsc28gdGhlIFggaWRlbnRpZmllci4iIiIKLSAgICAgICAgZGF0YSA9IHNlbGYudGsuc3BsaXQoCi0gICAgICAgICAgICBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAotICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZWlkcyBhbmQgJ2luY2x1ZGVpZHMnIG9yIE5vbmUpKQotICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIHN0cik6Ci0gICAgICAgICAgICBkYXRhID0gW3NlbGYudGsuc3BsaXQoZGF0YSldCi0gICAgICAgIHJldHVybiBbc2VsZi5fX3dpbmZvX3BhcnNlaXRlbSh4KSBmb3IgeCBpbiAgZGF0YV0KKyAgICAgICAgZGVwdGggYW5kIGlmIGluY2x1ZGVpZHMgaXMgdHJ1ZSBpcyBnaXZlbiBhbHNvIHRoZSBYIGlkZW50aWZpZXIuIiIiCisgICAgICAgIGRhdGEgPSBzZWxmLnRrLmNhbGwoJ3dpbmZvJywgJ3Zpc3VhbHNhdmFpbGFibGUnLCBzZWxmLl93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlaWRzJyBpZiBpbmNsdWRlaWRzIGVsc2UgTm9uZSkKKyAgICAgICAgZGF0YSA9IFtzZWxmLnRrLnNwbGl0bGlzdCh4KSBmb3IgeCBpbiBzZWxmLnRrLnNwbGl0bGlzdChkYXRhKV0KKyAgICAgICAgcmV0dXJuIFtzZWxmLl9fd2luZm9fcGFyc2VpdGVtKHgpIGZvciB4IGluIGRhdGFdCiAgICAgZGVmIF9fd2luZm9fcGFyc2VpdGVtKHNlbGYsIHQpOgogICAgICAgICAiIiJJbnRlcm5hbCBmdW5jdGlvbi4iIiIKICAgICAgICAgcmV0dXJuIHRbOjFdICsgdHVwbGUobWFwKHNlbGYuX193aW5mb19nZXRpbnQsIHRbMTpdKSkKQEAgLTEyODMsNyArMTQyMCwxMCBAQAogICAgICAgICBleGNlcHQgVGNsRXJyb3I6IHBhc3MKICAgICAgICAgZS5rZXlzeW0gPSBLCiAgICAgICAgIGUua2V5c3ltX251bSA9IGdldGludF9ldmVudChOKQotICAgICAgICBlLnR5cGUgPSBUCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGUudHlwZSA9IEV2ZW50VHlwZShUKQorICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKyAgICAgICAgICAgIGUudHlwZSA9IFQKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZS53aWRnZXQgPSBzZWxmLl9uYW1ldG93aWRnZXQoVykKICAgICAgICAgZXhjZXB0IEtleUVycm9yOgpAQCAtMTg5Myw5ICsyMDMzLDYgQEAKICAgICAgICAgaWYgdGNsX3ZlcnNpb24gIT0gX3RraW50ZXIuVENMX1ZFUlNJT046CiAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoInRjbC5oIHZlcnNpb24gKCVzKSBkb2Vzbid0IG1hdGNoIGxpYnRjbC5hIHZlcnNpb24gKCVzKSIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKF90a2ludGVyLlRDTF9WRVJTSU9OLCB0Y2xfdmVyc2lvbikpCi0gICAgICAgIGlmIFRrVmVyc2lvbiA8IDQuMDoKLSAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVGsgNC4wIG9yIGhpZ2hlciBpcyByZXF1aXJlZDsgZm91bmQgVGsgJXMiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBzdHIoVGtWZXJzaW9uKSkKICAgICAgICAgIyBDcmVhdGUgYW5kIHJlZ2lzdGVyIHRoZSB0a2Vycm9yIGFuZCBleGl0IGNvbW1hbmRzCiAgICAgICAgICMgV2UgbmVlZCB0byBpbmxpbmUgcGFydHMgb2YgX3JlZ2lzdGVyIGhlcmUsIF8gcmVnaXN0ZXIKICAgICAgICAgIyB3b3VsZCByZWdpc3RlciBkaWZmZXJlbnRseS1uYW1lZCBjb21tYW5kcy4KQEAgLTIxMTgsNyArMjI1NSwxNSBAQAogICAgICAgICAgICAgbmFtZSA9IGNuZlsnbmFtZSddCiAgICAgICAgICAgICBkZWwgY25mWyduYW1lJ10KICAgICAgICAgaWYgbm90IG5hbWU6Ci0gICAgICAgICAgICBuYW1lID0gcmVwcihpZChzZWxmKSkKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9fY2xhc3NfXy5fX25hbWVfXy5sb3dlcigpCisgICAgICAgICAgICBpZiBtYXN0ZXIuX2xhc3RfY2hpbGRfaWRzIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkcyA9IHt9CisgICAgICAgICAgICBjb3VudCA9IG1hc3Rlci5fbGFzdF9jaGlsZF9pZHMuZ2V0KG5hbWUsIDApICsgMQorICAgICAgICAgICAgbWFzdGVyLl9sYXN0X2NoaWxkX2lkc1tuYW1lXSA9IGNvdW50CisgICAgICAgICAgICBpZiBjb3VudCA9PSAxOgorICAgICAgICAgICAgICAgIG5hbWUgPSAnYCVzJyAlIChuYW1lLCkKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbmFtZSA9ICdgJXMlZCcgJSAobmFtZSwgY291bnQpCiAgICAgICAgIHNlbGYuX25hbWUgPSBuYW1lCiAgICAgICAgIGlmIG1hc3Rlci5fdz09Jy4nOgogICAgICAgICAgICAgc2VsZi5fdyA9ICcuJyArIG5hbWUKQEAgLTI3MTQsMTIgKzI4NTksNiBAQAogICAgIGRlZiB0a19wb3B1cChzZWxmLCB4LCB5LCBlbnRyeT0iIik6CiAgICAgICAgICIiIlBvc3QgdGhlIG1lbnUgYXQgcG9zaXRpb24gWCxZIHdpdGggZW50cnkgRU5UUlkuIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbCgndGtfcG9wdXAnLCBzZWxmLl93LCB4LCB5LCBlbnRyeSkKLSAgICBkZWYgdGtfYmluZEZvclRyYXZlcnNhbChzZWxmKToKLSAgICAgICAgIyBvYnNvbGV0ZSBzaW5jZSBUayA0LjAKLSAgICAgICAgaW1wb3J0IHdhcm5pbmdzCi0gICAgICAgIHdhcm5pbmdzLndhcm4oJ3RrX2JpbmRGb3JUcmF2ZXJzYWwoKSBkb2VzIG5vdGhpbmcgYW5kICcKLSAgICAgICAgICAgICAgICAgICAgICAnd2lsbCBiZSByZW1vdmVkIGluIDMuNicsCi0gICAgICAgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCBzdGFja2xldmVsPTIpCiAgICAgZGVmIGFjdGl2YXRlKHNlbGYsIGluZGV4KToKICAgICAgICAgIiIiQWN0aXZhdGUgZW50cnkgYXQgSU5ERVguIiIiCiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAnYWN0aXZhdGUnLCBpbmRleCkKQEAgLTMzNDIsOSArMzQ4MSw2IEBACiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgSW1hZ2UuX2xhc3RfaWQgKz0gMQogICAgICAgICAgICAgbmFtZSA9ICJweWltYWdlJXIiICUgKEltYWdlLl9sYXN0X2lkLCkgIyB0ayBpdHNlbGYgd291bGQgdXNlIGltYWdlPHg+Ci0gICAgICAgICAgICAjIFRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHdoZXJlIGlkKHgpCi0gICAgICAgICAgICAjIGNhbiByZXR1cm4gYSBuZWdhdGl2ZSBudW1iZXIsIHN1Y2ggYXMgTGludXgvbTY4azoKLSAgICAgICAgICAgIGlmIG5hbWVbMF0gPT0gJy0nOiBuYW1lID0gJ18nICsgbmFtZVsxOl0KICAgICAgICAgaWYga3cgYW5kIGNuZjogY25mID0gX2NuZm1lcmdlKChjbmYsIGt3KSkKICAgICAgICAgZWxpZiBrdzogY25mID0ga3cKICAgICAgICAgb3B0aW9ucyA9ICgpCmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9jb21tb25kaWFsb2cucHkKaW5kZXggZDI2ODhkYi4uMWU3NWNhZSAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvY29tbW9uZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2NvbW1vbmRpYWxvZy5weQpAQCAtMTUsMTEgKzE1LDYgQEAKICAgICBjb21tYW5kICA9IE5vbmUKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYXN0ZXI9Tm9uZSwgKipvcHRpb25zKToKLQotICAgICAgICAjIEZJWE1FOiBzaG91bGQgdGhpcyBiZSBwbGFjZWQgb24gdGhlIG1vZHVsZSBsZXZlbCBpbnN0ZWFkPwotICAgICAgICBpZiBUa1ZlcnNpb24gPCA0LjI6Ci0gICAgICAgICAgICByYWlzZSBUY2xFcnJvcigidGhpcyBtb2R1bGUgcmVxdWlyZXMgVGsgNC4yIG9yIG5ld2VyIikKLQogICAgICAgICBzZWxmLm1hc3RlciAgPSBtYXN0ZXIKICAgICAgICAgc2VsZi5vcHRpb25zID0gb3B0aW9ucwogICAgICAgICBpZiBub3QgbWFzdGVyIGFuZCBvcHRpb25zLmdldCgncGFyZW50Jyk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci9kaWFsb2cucHkgYi9MaWIvdGtpbnRlci9kaWFsb2cucHkKaW5kZXggYmUwODVhYi4uZjYxYzVmNyAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvZGlhbG9nLnB5CisrKyBiL0xpYi90a2ludGVyL2RpYWxvZy5weQpAQCAtMywxMCArMyw3IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLWlmIFRrVmVyc2lvbiA8PSAzLjY6Ci0gICAgRElBTE9HX0lDT04gPSAnd2FybmluZycKLWVsc2U6Ci0gICAgRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJworRElBTE9HX0lDT04gPSAncXVlc3RoZWFkJwogCiAKIGNsYXNzIERpYWxvZyhXaWRnZXQpOgpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5IGIvTGliL3RraW50ZXIvdGVzdC9ydW50a3Rlc3RzLnB5CmluZGV4IGRiZTVlODguLjMzZGM1NGEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvcnVudGt0ZXN0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3J1bnRrdGVzdHMucHkKQEAgLTcsOCArNyw2IEBACiAiIiIKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBpbXBvcnRsaWIKIGltcG9ydCB0ZXN0LnN1cHBvcnQKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF9taXNjLnB5CmluZGV4IDg1ZWUyYzcuLjlkYzFlMzcgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3RfbWlzYy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X21pc2MucHkKQEAgLTEyLDYgKzEyLDE0IEBACiAgICAgICAgIGYgPSB0a2ludGVyLkZyYW1lKHQsIG5hbWU9J2NoaWxkJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXByKGYpLCAnPHRraW50ZXIuRnJhbWUgb2JqZWN0IC50b3AuY2hpbGQ+JykKIAorICAgIGRlZiB0ZXN0X2dlbmVyYXRlZF9uYW1lcyhzZWxmKToKKyAgICAgICAgdCA9IHRraW50ZXIuVG9wbGV2ZWwoc2VsZi5yb290KQorICAgICAgICBmID0gdGtpbnRlci5GcmFtZSh0KQorICAgICAgICBmMiA9IHRraW50ZXIuRnJhbWUodCkKKyAgICAgICAgYiA9IHRraW50ZXIuQnV0dG9uKGYyKQorICAgICAgICBmb3IgbmFtZSBpbiBzdHIoYikuc3BsaXQoJy4nKToKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2UobmFtZS5pc2lkZW50aWZpZXIoKSwgbXNnPXJlcHIobmFtZSkpCisKICAgICBkZWYgdGVzdF90a19zZXRQYWxldHRlKHNlbGYpOgogICAgICAgICByb290ID0gc2VsZi5yb290CiAgICAgICAgIHJvb3QudGtfc2V0UGFsZXR0ZSgnYmxhY2snKQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF92YXJpYWJsZXMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQppbmRleCAxZjc0NDUzLi40NDg1ODE3IDEwMDY0NAotLS0gYS9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3ZhcmlhYmxlcy5weQpAQCAtODcsNyArODcsOCBAQAogICAgICAgICB2LnNldCgidmFsdWUiKQogICAgICAgICBzZWxmLmFzc2VydFRydWUodi5zaWRlX2VmZmVjdCkKIAotICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgIGRlZiB0ZXN0X3RyYWNlX29sZChzZWxmKToKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCiAgICAgICAgIHYgPSBWYXJpYWJsZShzZWxmLnJvb3QpCiAgICAgICAgIHZuYW1lID0gc3RyKHYpCiAgICAgICAgIHRyYWNlID0gW10KQEAgLTEzNiw2ICsxMzcsNTUgQEAKICAgICAgICAgZ2MuY29sbGVjdCgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAndScpXSkKIAorICAgIGRlZiB0ZXN0X3RyYWNlKHNlbGYpOgorICAgICAgICB2ID0gVmFyaWFibGUoc2VsZi5yb290KQorICAgICAgICB2bmFtZSA9IHN0cih2KQorICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIGRlZiByZWFkX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCdyZWFkJywpICsgYXJncykKKyAgICAgICAgZGVmIHdyaXRlX3RyYWNlcigqYXJncyk6CisgICAgICAgICAgICB0cmFjZS5hcHBlbmQoKCd3cml0ZScsKSArIGFyZ3MpCisgICAgICAgIHRyMSA9IHYudHJhY2VfYWRkKCdyZWFkJywgcmVhZF90cmFjZXIpCisgICAgICAgIHRyMiA9IHYudHJhY2VfYWRkKFsnd3JpdGUnLCAndW5zZXQnXSwgd3JpdGVfdHJhY2VyKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNvcnRlZCh2LnRyYWNlX2luZm8oKSksIFsKKyAgICAgICAgICAgICAgICAgICAgICAgICAoKCdyZWFkJywpLCB0cjEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICgoJ3dyaXRlJywgJ3Vuc2V0JyksIHRyMildKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbXSkKKworICAgICAgICB2LnNldCgnc3BhbScpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICB2LmdldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3JlYWQnLCB2bmFtZSwgJycsICdyZWFkJyldKQorCisgICAgICAgIHRyYWNlID0gW10KKyAgICAgICAgaW5mbyA9IHNvcnRlZCh2LnRyYWNlX2luZm8oKSkKKyAgICAgICAgdi50cmFjZV9yZW1vdmUoJ3dyaXRlJywgdHIxKSAgIyBXcm9uZyBtb2RlCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUY2xFcnJvcik6CisgICAgICAgICAgICB2LnRyYWNlX3JlbW92ZSgncmVhZCcsICdzcGFtJykgICMgV3JvbmcgY29tbWFuZCBuYW1lCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc29ydGVkKHYudHJhY2VfaW5mbygpKSwgaW5mbykKKyAgICAgICAgdi5nZXQoKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHRyYWNlLCBbKCdyZWFkJywgdm5hbWUsICcnLCAncmVhZCcpXSkKKworICAgICAgICB0cmFjZSA9IFtdCisgICAgICAgIHYudHJhY2VfcmVtb3ZlKCdyZWFkJywgdHIxKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHYudHJhY2VfaW5mbygpLCBbKCgnd3JpdGUnLCAndW5zZXQnKSwgdHIyKV0pCisgICAgICAgIHYuZ2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgW10pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgd3JpdGVfdHJhY2VyCisgICAgICAgIGdjLmNvbGxlY3QoKQorICAgICAgICB2LnNldCgnZWdncycpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodHJhY2UsIFsoJ3dyaXRlJywgdm5hbWUsICcnLCAnd3JpdGUnKV0pCisKKyAgICAgICAgdHJhY2UgPSBbXQorICAgICAgICBkZWwgdgorICAgICAgICBnYy5jb2xsZWN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh0cmFjZSwgWygnd3JpdGUnLCB2bmFtZSwgJycsICd1bnNldCcpXSkKKwogCiBjbGFzcyBUZXN0U3RyaW5nVmFyKFRlc3RCYXNlKToKIApkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3RraW50ZXIvdGVzdF93aWRnZXRzLnB5CmluZGV4IGM5MjRkNTUuLjgxYjUyZWEgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90a2ludGVyL3Rlc3Rfd2lkZ2V0cy5weQorKysgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlci90ZXN0X3dpZGdldHMucHkKQEAgLTkxLDkgKzkxLDEwIEBACiAgICAgICAgIHdpZGdldCA9IHNlbGYuY3JlYXRlKCkKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXRbJ3VzZSddLCAnJykKICAgICAgICAgcGFyZW50ID0gc2VsZi5jcmVhdGUoY29udGFpbmVyPVRydWUpCi0gICAgICAgIHdpZCA9IHBhcmVudC53aW5mb19pZCgpCi0gICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGludCh3aWRnZXQyWyd1c2UnXSksIHdpZCkKKyAgICAgICAgd2lkID0gaGV4KHBhcmVudC53aW5mb19pZCgpKQorICAgICAgICB3aXRoIHNlbGYuc3ViVGVzdCh3aWQ9d2lkKToKKyAgICAgICAgICAgIHdpZGdldDIgPSBzZWxmLmNyZWF0ZSh1c2U9d2lkKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh3aWRnZXQyWyd1c2UnXSwgd2lkKQogCiAKIEBhZGRfc3RhbmRhcmRfb3B0aW9ucyhTdGFuZGFyZE9wdGlvbnNUZXN0cykKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkgYi9MaWIvdGtpbnRlci90ZXN0L3Rlc3RfdHRrL3Rlc3RfZnVuY3Rpb25zLnB5CmluZGV4IGM2OGE2NTAuLmExYjdjZGYgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF9mdW5jdGlvbnMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X2Z1bmN0aW9ucy5weQpAQCAtMSw2ICsxLDUgQEAKICMgLSotIGVuY29kaW5nOiB1dGYtOCAtKi0KIGltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgdHRrCiAKIGNsYXNzIE1vY2tUa0FwcDoKZGlmZiAtLWdpdCBhL0xpYi90a2ludGVyL3Rlc3QvdGVzdF90dGsvdGVzdF93aWRnZXRzLnB5IGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKaW5kZXggOGJkMjJkMC4uMjY3NjZhOCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKKysrIGIvTGliL3RraW50ZXIvdGVzdC90ZXN0X3R0ay90ZXN0X3dpZGdldHMucHkKQEAgLTE0ODcsNiArMTQ4Nyw3IEBACiAKIAogICAgIGRlZiB0ZXN0X3NlbGVjdGlvbihzZWxmKToKKyAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yLCBzZWxmLnR2LnNlbGVjdGlvbiwgJ3NwYW0nKQogICAgICAgICAjIGl0ZW0gJ25vbmUnIGRvZXNuJ3QgZXhpc3QKICAgICAgICAgc2VsZi5hc3NlcnRSYWlzZXModGtpbnRlci5UY2xFcnJvciwgc2VsZi50di5zZWxlY3Rpb25fc2V0LCAnbm9uZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0UmFpc2VzKHRraW50ZXIuVGNsRXJyb3IsIHNlbGYudHYuc2VsZWN0aW9uX2FkZCwgJ25vbmUnKQpAQCAtMTUwMCwyNSArMTUwMSwzMSBAQAogICAgICAgICBjMyA9IHNlbGYudHYuaW5zZXJ0KGl0ZW0xLCAnZW5kJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9zZXQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzIsKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX2FkZChjMSwgaXRlbTIpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBjMiwgaXRlbTIpKQogICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl9hZGQoaXRlbTEpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGl0ZW0xLCBjMSwgYzIsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoaXRlbTEsIGMxLCBjMiwgaXRlbTIpKQogCi0gICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZSgoaXRlbTEsIGMzKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKGl0ZW0xLCBjMykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGMyLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3JlbW92ZShjMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKIAotICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShjMSwgYzMpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3RvZ2dsZShpdGVtMikKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fdG9nZ2xlKCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzMsKSkKIAogICAgICAgICBzZWxmLnR2Lmluc2VydCgnJywgJ2VuZCcsIGlkPSd3aXRoIHNwYWNlcycpCiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgnd2l0aCBzcGFjZXMnKQpAQCAtMTUzNiw2ICsxNTQzLDQwIEBACiAgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldChiJ2J5dGVzXHhlMlx4ODJceGFjJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoJ2J5dGVzXHhlMlx4ODJceGFjJywpKQogCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKCkpCisKKyAgICAgICAgIyBPbGQgaW50ZXJmYWNlCisgICAgICAgIHNlbGYudHYuc2VsZWN0aW9uX3NldCgoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fYWRkKChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fcmVtb3ZlKChpdGVtMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMSwgaXRlbTIpKQorICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbl90b2dnbGUoKGMxLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMzLCBpdGVtMikpCisKKyAgICAgICAgaWYgc3lzLnZlcnNpb25faW5mbyA+PSAoMywgNyk6CisgICAgICAgICAgICBpbXBvcnQgd2FybmluZ3MKKyAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oCisgICAgICAgICAgICAgICAgJ0RlcHJlY2F0ZWQgQVBJIG9mIFRyZWV2aWV3LnNlbGVjdGlvbigpIHNob3VsZCBiZSByZW1vdmVkJykKKyAgICAgICAgc2VsZi50di5zZWxlY3Rpb25fc2V0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZWxmLnR2LnNlbGVjdGlvbigpLCAoKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbignc2V0JywgKGMxLCBpdGVtMikpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ2FkZCcsIChjMSwgaXRlbTEpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChpdGVtMSwgYzEsIGl0ZW0yKSkKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKERlcHJlY2F0aW9uV2FybmluZyk6CisgICAgICAgICAgICBzZWxmLnR2LnNlbGVjdGlvbigncmVtb3ZlJywgKGl0ZW0xLCBjMykpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi50di5zZWxlY3Rpb24oKSwgKGMxLCBpdGVtMikpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRXYXJucyhEZXByZWNhdGlvbldhcm5pbmcpOgorICAgICAgICAgICAgc2VsZi50di5zZWxlY3Rpb24oJ3RvZ2dsZScsIChjMSwgYzMpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlbGYudHYuc2VsZWN0aW9uKCksIChjMywgaXRlbTIpKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0V2FybnMoRGVwcmVjYXRpb25XYXJuaW5nKToKKyAgICAgICAgICAgIHNlbGVjdGlvbiA9IHNlbGYudHYuc2VsZWN0aW9uKE5vbmUpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZWN0aW9uLCAoYzMsIGl0ZW0yKSkKIAogICAgIGRlZiB0ZXN0X3NldChzZWxmKToKICAgICAgICAgc2VsZi50dlsnY29sdW1ucyddID0gWydBJywgJ0InXQpkaWZmIC0tZ2l0IGEvTGliL3RraW50ZXIvdGl4LnB5IGIvTGliL3RraW50ZXIvdGl4LnB5CmluZGV4IDdmYjRiYzUuLmYzZWI5MmUgMTAwNjQ0Ci0tLSBhL0xpYi90a2ludGVyL3RpeC5weQorKysgYi9MaWIvdGtpbnRlci90aXgucHkKQEAgLTMxLDEwICszMSw2IEBACiBmcm9tIHRraW50ZXIgaW1wb3J0ICoKIGZyb20gdGtpbnRlciBpbXBvcnQgX2NuZm1lcmdlCiAKLSMgV0FSTklORyAtIFRrVmVyc2lvbiBpcyBhIGxpbWl0ZWQgcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IG51bWJlcgotaWYgVGtWZXJzaW9uIDwgMy45OTk6Ci0gICAgcmFpc2UgSW1wb3J0RXJyb3IoIlRoaXMgdmVyc2lvbiBvZiBUaXgucHkgcmVxdWlyZXMgVGsgNC4wIG9yIGhpZ2hlciIpCi0KIGltcG9ydCBfdGtpbnRlciAjIElmIHRoaXMgZmFpbHMgeW91ciBQeXRob24gbWF5IG5vdCBiZSBjb25maWd1cmVkIGZvciBUawogCiAjIFNvbWUgbW9yZSBjb25zdGFudHMgKGZvciBjb25zaXN0ZW5jeSB3aXRoIFRraW50ZXIpCkBAIC00NzYsMTYgKzQ3MiwxNyBAQAogICAgICIiIkRpc3BsYXlTdHlsZSAtIGhhbmRsZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgc2hhcmVkIGJ5CiAgICAgKG11bHRpcGxlKSBEaXNwbGF5IEl0ZW1zIiIiCiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgaXRlbXR5cGUsIGNuZj17fSwgKiprdyk6Ci0gICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgotICAgICAgICAgICAgbWFzdGVyID0ga3dbJ3JlZndpbmRvdyddCi0gICAgICAgIGVsaWYgJ3JlZndpbmRvdycgaW4gY25mOgotICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbWFzdGVyID0gdGtpbnRlci5fZGVmYXVsdF9yb290Ci0gICAgICAgICAgICBpZiBub3QgbWFzdGVyOgotICAgICAgICAgICAgICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiVG9vIGVhcmx5IHRvIGNyZWF0ZSBkaXNwbGF5IHN0eWxlOiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyByb290IHdpbmRvdyIpCisgICAgZGVmIF9faW5pdF9fKHNlbGYsIGl0ZW10eXBlLCBjbmY9e30sICosIG1hc3Rlcj1Ob25lLCAqKmt3KToKKyAgICAgICAgaWYgbm90IG1hc3RlcjoKKyAgICAgICAgICAgIGlmICdyZWZ3aW5kb3cnIGluIGt3OgorICAgICAgICAgICAgICAgIG1hc3RlciA9IGt3WydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxpZiAncmVmd2luZG93JyBpbiBjbmY6CisgICAgICAgICAgICAgICAgbWFzdGVyID0gY25mWydyZWZ3aW5kb3cnXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtYXN0ZXIgPSB0a2ludGVyLl9kZWZhdWx0X3Jvb3QKKyAgICAgICAgICAgICAgICBpZiBub3QgbWFzdGVyOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBSdW50aW1lRXJyb3IoIlRvbyBlYXJseSB0byBjcmVhdGUgZGlzcGxheSBzdHlsZTogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vIHJvb3Qgd2luZG93IikKICAgICAgICAgc2VsZi50ayA9IG1hc3Rlci50awogICAgICAgICBzZWxmLnN0eWxlbmFtZSA9IHNlbGYudGsuY2FsbCgndGl4RGlzcGxheVN0eWxlJywgaXRlbXR5cGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKnNlbGYuX29wdGlvbnMoY25mLGt3KSApCkBAIC0xMTE2LDcgKzExMTMsNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xMTYyLDcgKzExNTksNyBAQAogCiAgICAgZGVmIHBhZ2VzKHNlbGYpOgogICAgICAgICAjIENhbid0IGNhbGwgc3Vid2lkZ2V0c19hbGwgZGlyZWN0bHkgYmVjYXVzZSB3ZSBkb24ndCB3YW50IC5uYmZyYW1lCi0gICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3BhZ2VzJykpCisgICAgICAgIG5hbWVzID0gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICdwYWdlcycpKQogICAgICAgICByZXQgPSBbXQogICAgICAgICBmb3IgeCBpbiBuYW1lczoKICAgICAgICAgICAgIHJldC5hcHBlbmQoc2VsZi5zdWJ3aWRnZXQoeCkpCkBAIC0xNTg1LDggKzE1ODIsNyBAQAogICAgICAgICAnJydSZXR1cm5zIGEgbGlzdCBvZiBpdGVtcyB3aG9zZSBzdGF0dXMgbWF0Y2hlcyBzdGF0dXMuIElmIHN0YXR1cyBpcwogICAgICBub3Qgc3BlY2lmaWVkLCB0aGUgbGlzdCBvZiBpdGVtcyBpbiB0aGUgIm9uIiBzdGF0dXMgd2lsbCBiZSByZXR1cm5lZC4KICAgICAgTW9kZSBjYW4gYmUgb24sIG9mZiwgZGVmYXVsdCcnJwotICAgICAgICBjID0gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ2dldHNlbGVjdGlvbicsIG1vZGUpKQotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3QoYykKKyAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl93LCAnZ2V0c2VsZWN0aW9uJywgbW9kZSkpCiAKICAgICBkZWYgZ2V0c3RhdHVzKHNlbGYsIGVudHJ5cGF0aCk6CiAgICAgICAgICcnJ1JldHVybnMgdGhlIGN1cnJlbnQgc3RhdHVzIG9mIGVudHJ5UGF0aC4nJycKQEAgLTE5MDcsNyArMTkwMyw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgd2lkdGggb2YgdGhlIGNvbHVtbiB0byB0aGUKICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIG51bWJlciBvZiBjaGFyYWN0ZXJzLiIiIgotICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCisgICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fdywgJ3NpemUnLCAnY29sdW1uJywgaW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzZWxmLl9vcHRpb25zKHt9LCBrdykpKQogCiAgICAgZGVmIHNpemVfcm93KHNlbGYsIGluZGV4LCAqKmt3KToKQEAgLTE5MzIsNyArMTkyOCw3IEBACiAgICAgICAgICAgICAgICAgICAgICBvciBhIHJlYWwgbnVtYmVyIGZvbGxvd2luZyBieSB0aGUgd29yZCBjaGFycwogICAgICAgICAgICAgICAgICAgICAgKGUuZy4gMy40Y2hhcnMpIHRoYXQgc2V0cyB0aGUgaGVpZ2h0IG9mIHRoZSByb3cgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgICBnaXZlbiBudW1iZXIgb2YgY2hhcmFjdGVycy4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXQoc2VsZi50ay5jYWxsKAorICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKAogICAgICAgICAgICAgICAgICAgICBzZWxmLCAnc2l6ZScsICdyb3cnLCBpbmRleCwgKnNlbGYuX29wdGlvbnMoe30sIGt3KSkpCiAKICAgICBkZWYgdW5zZXQoc2VsZiwgeCwgeSk6CmRpZmYgLS1naXQgYS9MaWIvdGtpbnRlci90dGsucHkgYi9MaWIvdGtpbnRlci90dGsucHkKaW5kZXggZjRhNmQ4Yy4uYzQ3NGU2MCAxMDA2NDQKLS0tIGEvTGliL3RraW50ZXIvdHRrLnB5CisrKyBiL0xpYi90a2ludGVyL3R0ay5weQpAQCAtMjgsNiArMjgsOCBAQAogaW1wb3J0IHRraW50ZXIKIGZyb20gdGtpbnRlciBpbXBvcnQgX2ZsYXR0ZW4sIF9qb2luLCBfc3RyaW5naWZ5LCBfc3BsaXRkaWN0CiAKK19zZW50aW5lbCA9IG9iamVjdCgpCisKICMgVmVyaWZ5IGlmIFRrIGlzIG5ldyBlbm91Z2ggdG8gbm90IG5lZWQgdGhlIFRpbGUgcGFja2FnZQogX1JFUVVJUkVfVElMRSA9IFRydWUgaWYgdGtpbnRlci5Ua1ZlcnNpb24gPCA4LjUgZWxzZSBGYWxzZQogCkBAIC0zODEsNyArMzgzLDkgQEAKICAgICAgICAgYSBzZXF1ZW5jZSBpZGVudGlmeWluZyB0aGUgdmFsdWUgZm9yIHRoYXQgb3B0aW9uLiIiIgogICAgICAgICBpZiBxdWVyeV9vcHQgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBrd1txdWVyeV9vcHRdID0gTm9uZQotICAgICAgICByZXR1cm4gX3ZhbF9vcl9kaWN0KHNlbGYudGssIGt3LCBzZWxmLl9uYW1lLCAiY29uZmlndXJlIiwgc3R5bGUpCisgICAgICAgIHJlc3VsdCA9IF92YWxfb3JfZGljdChzZWxmLnRrLCBrdywgc2VsZi5fbmFtZSwgImNvbmZpZ3VyZSIsIHN0eWxlKQorICAgICAgICBpZiByZXN1bHQgb3IgcXVlcnlfb3B0OgorICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCiAKICAgICBkZWYgbWFwKHNlbGYsIHN0eWxlLCBxdWVyeV9vcHQ9Tm9uZSwgKiprdyk6CkBAIC00NjYsMTIgKzQ3MCwxNCBAQAogCiAgICAgZGVmIGVsZW1lbnRfbmFtZXMoc2VsZik6CiAgICAgICAgICIiIlJldHVybnMgdGhlIGxpc3Qgb2YgZWxlbWVudHMgZGVmaW5lZCBpbiB0aGUgY3VycmVudCB0aGVtZS4iIiIKLSAgICAgICAgcmV0dXJuIHNlbGYudGsuc3BsaXRsaXN0KHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKQorICAgICAgICByZXR1cm4gdHVwbGUobi5sc3RyaXAoJy0nKSBmb3IgbiBpbiBzZWxmLnRrLnNwbGl0bGlzdCgKKyAgICAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl9uYW1lLCAiZWxlbWVudCIsICJuYW1lcyIpKSkKIAogCiAgICAgZGVmIGVsZW1lbnRfb3B0aW9ucyhzZWxmLCBlbGVtZW50bmFtZSk6CiAgICAgICAgICIiIlJldHVybiB0aGUgbGlzdCBvZiBlbGVtZW50bmFtZSdzIG9wdGlvbnMuIiIiCi0gICAgICAgIHJldHVybiBzZWxmLnRrLnNwbGl0bGlzdChzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkKKyAgICAgICAgcmV0dXJuIHR1cGxlKG8ubHN0cmlwKCctJykgZm9yIG8gaW4gc2VsZi50ay5zcGxpdGxpc3QoCisgICAgICAgICAgICBzZWxmLnRrLmNhbGwoc2VsZi5fbmFtZSwgImVsZW1lbnQiLCAib3B0aW9ucyIsIGVsZW1lbnRuYW1lKSkpCiAKIAogICAgIGRlZiB0aGVtZV9jcmVhdGUoc2VsZiwgdGhlbWVuYW1lLCBwYXJlbnQ9Tm9uZSwgc2V0dGluZ3M9Tm9uZSk6CkBAIC0xMzkwLDMxICsxMzk2LDUzIEBACiAgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VlIiwgaXRlbSkKIAogCi0gICAgZGVmIHNlbGVjdGlvbihzZWxmLCBzZWxvcD1Ob25lLCBpdGVtcz1Ob25lKToKLSAgICAgICAgIiIiSWYgc2Vsb3AgaXMgbm90IHNwZWNpZmllZCwgcmV0dXJucyBzZWxlY3RlZCBpdGVtcy4iIiIKLSAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVtcywgKHN0ciwgYnl0ZXMpKToKLSAgICAgICAgICAgIGl0ZW1zID0gKGl0ZW1zLCkKKyAgICBkZWYgc2VsZWN0aW9uKHNlbGYsIHNlbG9wPV9zZW50aW5lbCwgaXRlbXM9Tm9uZSk6CisgICAgICAgICIiIlJldHVybnMgdGhlIHR1cGxlIG9mIHNlbGVjdGVkIGl0ZW1zLiIiIgorICAgICAgICBpZiBzZWxvcCBpcyBfc2VudGluZWw6CisgICAgICAgICAgICBzZWxvcCA9IE5vbmUKKyAgICAgICAgZWxpZiBzZWxvcCBpcyBOb25lOgorICAgICAgICAgICAgaW1wb3J0IHdhcm5pbmdzCisgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAorICAgICAgICAgICAgICAgICJUaGUgc2Vsb3A9Tm9uZSBhcmd1bWVudCBvZiBzZWxlY3Rpb24oKSBpcyBkZXByZWNhdGVkICIKKyAgICAgICAgICAgICAgICAiYW5kIHdpbGwgYmUgcmVtb3ZlZCBpbiBQeXRob24gMy43IiwKKyAgICAgICAgICAgICAgICBEZXByZWNhdGlvbldhcm5pbmcsIDMpCisgICAgICAgIGVsaWYgc2Vsb3AgaW4gKCdzZXQnLCAnYWRkJywgJ3JlbW92ZScsICd0b2dnbGUnKToKKyAgICAgICAgICAgIGltcG9ydCB3YXJuaW5ncworICAgICAgICAgICAgd2FybmluZ3Mud2FybigKKyAgICAgICAgICAgICAgICAiVGhlIHNlbG9wIGFyZ3VtZW50IG9mIHNlbGVjdGlvbigpIGlzIGRlcHJlY2F0ZWQgIgorICAgICAgICAgICAgICAgICJhbmQgd2lsbCBiZSByZW1vdmVkIGluIFB5dGhvbiAzLjcsICIKKyAgICAgICAgICAgICAgICAidXNlIHNlbGVjdGlvbl8lcygpIGluc3RlYWQiICUgKHNlbG9wLCksCisgICAgICAgICAgICAgICAgRGVwcmVjYXRpb25XYXJuaW5nLCAzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdVbnN1cHBvcnRlZCBvcGVyYXRpb24nKQogICAgICAgICByZXR1cm4gc2VsZi50ay5zcGxpdGxpc3Qoc2VsZi50ay5jYWxsKHNlbGYuX3csICJzZWxlY3Rpb24iLCBzZWxvcCwgaXRlbXMpKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3NldChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIml0ZW1zIGJlY29tZXMgdGhlIG5ldyBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJzZXQiLCBpdGVtcykKKyAgICBkZWYgX3NlbGVjdGlvbihzZWxmLCBzZWxvcCwgaXRlbXMpOgorICAgICAgICBpZiBsZW4oaXRlbXMpID09IDEgYW5kIGlzaW5zdGFuY2UoaXRlbXNbMF0sICh0dXBsZSwgbGlzdCkpOgorICAgICAgICAgICAgaXRlbXMgPSBpdGVtc1swXQorCisgICAgICAgIHNlbGYudGsuY2FsbChzZWxmLl93LCAic2VsZWN0aW9uIiwgc2Vsb3AsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIkFkZCBpdGVtcyB0byB0aGUgc2VsZWN0aW9uLiIiIgotICAgICAgICBzZWxmLnNlbGVjdGlvbigiYWRkIiwgaXRlbXMpCisgICAgZGVmIHNlbGVjdGlvbl9zZXQoc2VsZiwgKml0ZW1zKToKKyAgICAgICAgIiIiVGhlIHNwZWNpZmllZCBpdGVtcyBiZWNvbWVzIHRoZSBuZXcgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInNldCIsIGl0ZW1zKQogCiAKLSAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCBpdGVtcyk6Ci0gICAgICAgICIiIlJlbW92ZSBpdGVtcyBmcm9tIHRoZSBzZWxlY3Rpb24uIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJyZW1vdmUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX2FkZChzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJBZGQgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgdG8gdGhlIHNlbGVjdGlvbi4iIiIKKyAgICAgICAgc2VsZi5fc2VsZWN0aW9uKCJhZGQiLCBpdGVtcykKIAogCi0gICAgZGVmIHNlbGVjdGlvbl90b2dnbGUoc2VsZiwgaXRlbXMpOgotICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIGl0ZW0gaW4gaXRlbXMuIiIiCi0gICAgICAgIHNlbGYuc2VsZWN0aW9uKCJ0b2dnbGUiLCBpdGVtcykKKyAgICBkZWYgc2VsZWN0aW9uX3JlbW92ZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJSZW1vdmUgYWxsIG9mIHRoZSBzcGVjaWZpZWQgaXRlbXMgZnJvbSB0aGUgc2VsZWN0aW9uLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInJlbW92ZSIsIGl0ZW1zKQorCisKKyAgICBkZWYgc2VsZWN0aW9uX3RvZ2dsZShzZWxmLCAqaXRlbXMpOgorICAgICAgICAiIiJUb2dnbGUgdGhlIHNlbGVjdGlvbiBzdGF0ZSBvZiBlYWNoIHNwZWNpZmllZCBpdGVtLiIiIgorICAgICAgICBzZWxmLl9zZWxlY3Rpb24oInRvZ2dsZSIsIGl0ZW1zKQogCiAKICAgICBkZWYgc2V0KHNlbGYsIGl0ZW0sIGNvbHVtbj1Ob25lLCB2YWx1ZT1Ob25lKToKZGlmZiAtLWdpdCBhL0xpYi90b2tlbml6ZS5weSBiL0xpYi90b2tlbml6ZS5weQppbmRleCBiMWQwYzgzLi44MjVhYTkwIDEwMDY0NAotLS0gYS9MaWIvdG9rZW5pemUucHkKKysrIGIvTGliL3Rva2VuaXplLnB5CkBAIC0yOSw2ICsyOSw3IEBACiBpbXBvcnQgY29sbGVjdGlvbnMKIGZyb20gaW8gaW1wb3J0IFRleHRJT1dyYXBwZXIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgoraW1wb3J0IGl0ZXJ0b29scyBhcyBfaXRlcnRvb2xzCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKIGZyb20gdG9rZW4gaW1wb3J0ICoKQEAgLTExOSwxOSArMTIwLDQxIEBACiBJZ25vcmUgPSBXaGl0ZXNwYWNlICsgYW55KHInXFxccj9cbicgKyBXaGl0ZXNwYWNlKSArIG1heWJlKENvbW1lbnQpCiBOYW1lID0gcidcdysnCiAKLUhleG51bWJlciA9IHInMFt4WF1bMC05YS1mQS1GXSsnCi1CaW5udW1iZXIgPSByJzBbYkJdWzAxXSsnCi1PY3RudW1iZXIgPSByJzBbb09dWzAtN10rJwotRGVjbnVtYmVyID0gcicoPzowK3xbMS05XVswLTldKiknCitIZXhudW1iZXIgPSByJzBbeFhdKD86Xz9bMC05YS1mQS1GXSkrJworQmlubnVtYmVyID0gcicwW2JCXSg/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+PSAoMywgNik6CisgICAgICAgICAgICBjb25maWdfc3VmZml4ID0gY29uZmlnX3N1ZmZpeCArICctZGFyd2luJwogICAgIGVsc2U6CiAgICAgICAgIGNvbmZpZ19zdWZmaXggPSAnJyAgICAgICMgUHl0aG9uIDIueAogCkBAIC0xMjc0LDcgKzEyNTIsNyBAQAogICAgIGZwLndyaXRlKGRhdGEpCiAgICAgZnAuY2xvc2UoKQogCi0gICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEgaWYgaXQgZXhpc3RzCisgICAgIyBmaXggX3N5c2NvbmZpZ2RhdGEKICAgICAjCiAgICAgIyBUT0RPOiBtYWtlIHRoaXMgbW9yZSByb2J1c3QhICB0ZXN0X3N5c2NvbmZpZ19tb2R1bGUgb2YKICAgICAjIGRpc3R1dGlscy50ZXN0cy50ZXN0X3N5c2NvbmZpZy5TeXNjb25maWdUZXN0Q2FzZSB0ZXN0cyB0aGF0CkBAIC0xMjg4LDI4ICsxMjY2LDMxIEBACiAgICAgIyBfc3lzY29uZmlnZGF0YS5weSkuCiAKICAgICBpbXBvcnQgcHByaW50Ci0gICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKLSAgICBpZiBvcy5wYXRoLmV4aXN0cyhwYXRoKToKLSAgICAgICAgZnAgPSBvcGVuKHBhdGgsICdyJykKLSAgICAgICAgZGF0YSA9IGZwLnJlYWQoKQotICAgICAgICBmcC5jbG9zZSgpCi0gICAgICAgICMgY3JlYXRlIGJ1aWxkX3RpbWVfdmFycyBkaWN0Ci0gICAgICAgIGV4ZWMoZGF0YSkKLSAgICAgICAgdmFycyA9IHt9Ci0gICAgICAgIGZvciBrLCB2IGluIGJ1aWxkX3RpbWVfdmFycy5pdGVtcygpOgotICAgICAgICAgICAgaWYgdHlwZSh2KSA9PSB0eXBlKCcnKToKLSAgICAgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UoJyAnICsgcCwgJycpCi0gICAgICAgICAgICAgICAgICAgIHYgPSB2LnJlcGxhY2UocCArICcgJywgJycpCi0gICAgICAgICAgICB2YXJzW2tdID0gdgorICAgIGlmIGdldFZlcnNpb25NYWpvck1pbm9yKCkgPj0gKDMsIDYpOgorICAgICAgICAjIFhYWCB0aGlzIGlzIGV4dHJhLWZyYWdpbGUKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhX21fZGFyd2luX2Rhcndpbi5weScpCisgICAgZWxzZToKKyAgICAgICAgcGF0aCA9IG9zLnBhdGguam9pbihwYXRoX3RvX2xpYiwgJ19zeXNjb25maWdkYXRhLnB5JykKKyAgICBmcCA9IG9wZW4ocGF0aCwgJ3InKQorICAgIGRhdGEgPSBmcC5yZWFkKCkKKyAgICBmcC5jbG9zZSgpCisgICAgIyBjcmVhdGUgYnVpbGRfdGltZV92YXJzIGRpY3QKKyAgICBleGVjKGRhdGEpCisgICAgdmFycyA9IHt9CisgICAgZm9yIGssIHYgaW4gYnVpbGRfdGltZV92YXJzLml0ZW1zKCk6CisgICAgICAgIGlmIHR5cGUodikgPT0gdHlwZSgnJyk6CisgICAgICAgICAgICBmb3IgcCBpbiAoaW5jbHVkZV9wYXRoLCBsaWJfcGF0aCk6CisgICAgICAgICAgICAgICAgdiA9IHYucmVwbGFjZSgnICcgKyBwLCAnJykKKyAgICAgICAgICAgICAgICB2ID0gdi5yZXBsYWNlKHAgKyAnICcsICcnKQorICAgICAgICB2YXJzW2tdID0gdgogCi0gICAgICAgIGZwID0gb3BlbihwYXRoLCAndycpCi0gICAgICAgICMgZHVwbGljYXRlZCBmcm9tIHN5c2NvbmZpZy5fZ2VuZXJhdGVfcG9zaXhfdmFycygpCi0gICAgICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKLSAgICAgICAgICAgICAgICAgICAgJyB0aGUgc3lzY29uZmlnIG1vZHVsZVxuJykKLSAgICAgICAgZnAud3JpdGUoJ2J1aWxkX3RpbWVfdmFycyA9ICcpCi0gICAgICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQotICAgICAgICBmcC5jbG9zZSgpCisgICAgZnAgPSBvcGVuKHBhdGgsICd3JykKKyAgICAjIGR1cGxpY2F0ZWQgZnJvbSBzeXNjb25maWcuX2dlbmVyYXRlX3Bvc2l4X3ZhcnMoKQorICAgIGZwLndyaXRlKCcjIHN5c3RlbSBjb25maWd1cmF0aW9uIGdlbmVyYXRlZCBhbmQgdXNlZCBieScKKyAgICAgICAgICAgICAgICAnIHRoZSBzeXNjb25maWcgbW9kdWxlXG4nKQorICAgIGZwLndyaXRlKCdidWlsZF90aW1lX3ZhcnMgPSAnKQorICAgIHBwcmludC5wcHJpbnQodmFycywgc3RyZWFtPWZwKQorICAgIGZwLmNsb3NlKCkKIAogICAgICMgQWRkIHN5bWxpbmtzIGluIC91c3IvbG9jYWwvYmluLCB1c2luZyByZWxhdGl2ZSBsaW5rcwogICAgIHVzcl9sb2NhbF9iaW4gPSBvcy5wYXRoLmpvaW4ocm9vdERpciwgJ3VzcicsICdsb2NhbCcsICdiaW4nKQpAQCAtMTYzNiw2ICsxNjE3LDggQEAKICAgICBwYXRjaEZpbGUoInJlc291cmNlcy9SZWFkTWUucnRmIiwgIGZuKQogICAgIGZuID0gb3MucGF0aC5qb2luKGZvbGRlciwgIlVwZGF0ZSBTaGVsbCBQcm9maWxlLmNvbW1hbmQiKQogICAgIHBhdGNoU2NyaXB0KCJzY3JpcHRzL3Bvc3RmbGlnaHQucGF0Y2gtcHJvZmlsZSIsICBmbikKKyAgICBmbiA9IG9zLnBhdGguam9pbihmb2xkZXIsICJJbnN0YWxsIENlcnRpZmljYXRlcy5jb21tYW5kIikKKyAgICBwYXRjaFNjcmlwdCgicmVzb3VyY2VzL2luc3RhbGxfY2VydGlmaWNhdGVzLmNvbW1hbmQiLCAgZm4pCiAgICAgb3MuY2htb2QoZm9sZGVyLCBTVEFUXzBvNzU1KQogICAgIHNldEljb24oZm9sZGVyLCAiLi4vSWNvbnMvUHl0aG9uIEZvbGRlci5pY25zIikKIApkaWZmIC0tZ2l0IGEvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9SZWFkTWUucnRmCmluZGV4IDY1ZTNmMTQuLjUyM2ZhYmIgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvUmVhZE1lLnJ0ZgorKysgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1JlYWRNZS5ydGYKQEAgLTEsMTA2ICsxLDc2IEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEzNDhcY29jb2FzdWJydGYxNzAKK3tccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTUwNFxjb2NvYXN1YnJ0ZjM5MAoge1xmb250dGJsXGYwXGZzd2lzc1xmY2hhcnNldDAgSGVsdmV0aWNhO1xmMVxmbW9kZXJuXGZjaGFyc2V0MCBDb3VyaWVyTmV3UFNNVDt9CiB7XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9Cit7XCpcZXhwYW5kZWRjb2xvcnRibDtcY3NncmF5XGMxMDAwMDA7fQogXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3cxMzM4MFx2aWV3aDE0NjAwXHZpZXdraW5kMAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIFB5dGhvbiAkRlVMTF9WRVJTSU9OIGZvciBNYWMgT1MgWCAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUIGZvciB0aGUgZm9sbG93aW5nIGFyY2hpdGVjdHVyZShzKTogJEFSQ0hJVEVDVFVSRVMuXAogXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWxccGFydGlnaHRlbmZhY3RvcjAKIAogXGIgXGNmMCBcdWwgXHVsYzAgV2hpY2ggaW5zdGFsbGVyIHZhcmlhbnQgc2hvdWxkIEkgdXNlPwogXGIwIFx1bG5vbmUgXAogXAotUHl0aG9uLm9yZyBwcm92aWRlcyB0d28gaW5zdGFsbGVyIHZhcmlhbnRzIGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgRm9yIFB5dGhvbiAzLjYsIHRoZSBweXRob24ub3JnIHdlYnNpdGUgbm93IHByb3ZpZGVzIG9ubHkgb25lIGluc3RhbGxlciB2YXJpYW50IGZvciBkb3dubG9hZDogb25lIHRoYXQgaW5zdGFsbHMgYSAKIFxpIDY0LWJpdC8zMi1iaXQgSW50ZWwKIFxpMCAgUHl0aG9uIGNhcGFibGUgb2YgcnVubmluZyBvbiAKIFxpIE1hYyBPUyBYIDEwLjYgKFNub3cgTGVvcGFyZCkKLVxpMCAgb3IgbGF0ZXI7IGFuZCBvbmUgdGhhdCBpbnN0YWxscyBhIAotXGkgMzItYml0LW9ubHkgKEludGVsIGFuZCBQUEMpCi1caTAgIFB5dGhvbiBjYXBhYmxlIG9mIHJ1bm5pbmcgb24gCi1caSBNYWMgT1MgWCAxMC41IChMZW9wYXJkKQogXGkwICBvciBsYXRlci4gIFRoaXMgUmVhZE1lIHdhcyBpbnN0YWxsZWQgd2l0aCB0aGUgCiBcaSAkTUFDT1NYX0RFUExPWU1FTlRfVEFSR0VUCi1caTAgIHZhcmlhbnQuICBVbmxlc3MgeW91IGFyZSBpbnN0YWxsaW5nIHRvIGFuIDEwLjUgc3lzdGVtIG9yIHlvdSBuZWVkIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB0aGF0IGNhbiBydW4gb24gMTAuNSBzeXN0ZW1zLCB1c2UgdGhlIDEwLjYgdmFyaWFudCBpZiBwb3NzaWJsZS4gIFRoZXJlIGFyZSBzb21lIGFkZGl0aW9uYWwgb3BlcmF0aW5nIHN5c3RlbSBmdW5jdGlvbnMgdGhhdCBhcmUgc3VwcG9ydGVkIHN0YXJ0aW5nIHdpdGggMTAuNiBhbmQgeW91IG1heSBzZWUgYmV0dGVyIHBlcmZvcm1hbmNlIHVzaW5nIDY0LWJpdCBtb2RlLiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBBbHNvIHNlZSAKLVxpIENlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTAotXGkwICBiZWxvdy4gIFRoZSBQeXRob25zIGluc3RhbGxlZCBieSB0aGVzZSBpbnN0YWxsZXJzIGFyZSBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgdmFyaWVzIGJ5IGluc3RhbGxlciB2YXJpYW50IGFuZCBpcyBpbmNsdWRlZCBhdCB0aGUgZW5kIG9mIHRoZSBMaWNlbnNlLnJ0ZiBmaWxlLgorXGkwICB2YXJpYW50LiAgQnkgZGVmYXVsdCwgUHl0aG9uIHdpbGwgYXV0b21hdGljYWxseSBydW4gaW4gNjQtYml0IG1vZGUgaWYgeW91ciBzeXN0ZW0gc3VwcG9ydHMgaXQuICBUaGUgUHl0aG9uIGluc3RhbGxlZCBieSB0aGlzIGluc3RhbGxlciBpcyBidWlsdCB3aXRoIHByaXZhdGUgY29waWVzIG9mIHNvbWUgdGhpcmQtcGFydHkgbGlicmFyaWVzIG5vdCBpbmNsdWRlZCB3aXRoIG9yIG5ld2VyIHRoYW4gdGhvc2UgaW4gT1MgWCBpdHNlbGYuICBUaGUgbGlzdCBvZiB0aGVzZSBsaWJyYXJpZXMgaXMgaW5jbHVkZWQgYXQgdGhlIGVuZCBvZiB0aGUgTGljZW5zZS5ydGYgZmlsZS4KIFxiIFx1bCBcCiBcCi1VcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKK0NlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiBhbmQgT3BlblNTTFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYjAgXGNmMCBcdWxub25lIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwICoqTkVXKioKK1xiMCAgVGhpcyB2YXJpYW50IG9mIFB5dGhvbiAzLjYgbm93IGluY2x1ZGVzIGl0cyBvd24gcHJpdmF0ZSBjb3B5IG9mIE9wZW5TU0wgMS4wLjIuICBVbmxpa2UgcHJldmlvdXMgcmVsZWFzZXMsIHRoZSBkZXByZWNhdGVkIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIGFyZSBubyBsb25nZXIgdXNlZC4gIFRoaXMgYWxzbyBtZWFucyB0aGF0IHRoZSB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKK1xpIEtleWNoYWluIEFjY2VzcyAKK1xpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAorXGkgc2VjdXJpdHkKK1xpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkgYXJlIG5vIGxvbmdlciB1c2VkIGFzIGRlZmF1bHRzIGJ5IHRoZSBQeXRob24gCitcZjEgc3NsCitcZjAgIG1vZHVsZS4gIEZvciAzLjYuMGIxLCBhIHNhbXBsZSBjb21tYW5kIHNjcmlwdCBpcyBpbmNsdWRlZCBpbiAKK1xmMSAvQXBwbGljYXRpb25zL1B5dGhvbiAzLjYKK1xmMCAgdG8gaW5zdGFsbCBhIGN1cmF0ZWQgYnVuZGxlIG9mIGRlZmF1bHQgcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgCitcZjEgY2VydGlmaQorXGYwICBwYWNrYWdlICh7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2NlcnRpZmkifX17XGZsZHJzbHQgaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9jZXJ0aWZpfX0pLiAgSWYgeW91IGNob29zZSB0byB1c2UgCitcZjEgY2VydGlmaQorXGYwICwgeW91IHNob3VsZCBjb25zaWRlciBzdWJzY3JpYmluZyB0byB0aGV7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL2NlcnRpZmkuaW8vZW4vbGF0ZXN0LyJ9fXtcZmxkcnNsdCAgcHJvamVjdCdzIGVtYWlsIHVwZGF0ZSBzZXJ2aWNlfX0gdG8gYmUgbm90aWZpZWQgd2hlbiB0aGUgY2VydGlmaWNhdGUgYnVuZGxlIGlzIHVwZGF0ZWQuICBNb3JlIG9wdGlvbnMgd2lsbCBiZSBwcm92aWRlZCBwcmlvciB0byB0aGUgZmluYWwgcmVsZWFzZSBvZiAzLjYuMC5cCitcCitUaGUgYnVuZGxlZCAKK1xmMSBwaXAKK1xmMCAgaW5jbHVkZWQgd2l0aCB0aGUgUHl0aG9uIDMuNiBpbnN0YWxsZXIgaGFzIGl0cyBvd24gZGVmYXVsdCBjZXJ0aWZpY2F0ZSBzdG9yZSBmb3IgdmVyaWZ5aW5nIGRvd25sb2FkIGNvbm5lY3Rpb25zLlwKK1wKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFyZGlybmF0dXJhbFxwYXJ0aWdodGVuZmFjdG9yMAorCitcYiBcY2YwIFx1bCBVcGRhdGUgeW91ciB2ZXJzaW9uIG9mIFRjbC9UayB0byB1c2UgSURMRSBvciBvdGhlciBUayBhcHBsaWNhdGlvbnMKIFxiMCBcdWxub25lIFwKIFwKIFRvIHVzZSBJRExFIG9yIG90aGVyIHByb2dyYW1zIHRoYXQgdXNlIHRoZSBUa2ludGVyIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZSB0b29sa2l0LCB5b3UgbmVlZCB0byBpbnN0YWxsIGEgbmV3ZXIgdGhpcmQtcGFydHkgdmVyc2lvbiBvZiB0aGUgCiBcaSBUY2wvVGsKIFxpMCAgZnJhbWV3b3Jrcy4gIFZpc2l0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWQvbWFjL3RjbHRrLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2FkL21hYy90Y2x0ay99fSBmb3IgY3VycmVudCBpbmZvcm1hdGlvbiBhYm91dCBzdXBwb3J0ZWQgYW5kIHJlY29tbWVuZGVkIHZlcnNpb25zIG9mIAogXGkgVGNsL1RrCi1caTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC5cCitcaTAgIGZvciB0aGlzIHZlcnNpb24gb2YgUHl0aG9uIGFuZCBvZiBNYWMgT1MgWC4gIEZvciB0aGUgaW5pdGlhbCBwcmV2aWV3IHJlbGVhc2VzIG9mIFB5dGhvbiAzLjYsIHRoZSBpbnN0YWxsZXIgaXMgc3RpbGwgbGlua2VkIHdpdGggVGNsL1RrIDguNTsgdGhpcyB3aWxsIGxpa2VseSBjaGFuZ2UgcHJpb3IgdG8gdGhlIGZpbmFsIHJlbGVhc2Ugb2YgMy42LjAuXAogCiBcYiBcdWwgXAotQ2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uIGFuZCBPcGVuU1NMXAorT3RoZXIgY2hhbmdlc1wKIAogXGIwIFx1bG5vbmUgXAotUHl0aG9uIDMuNSBpbmNsdWRlcyBhIG51bWJlciBvZiBuZXR3b3JrIHNlY3VyaXR5IGVuaGFuY2VtZW50cyB0aGF0IHdlcmUgcmVsZWFzZWQgaW4gUHl0aG9uIDMuNC4zIGFuZCBQeXRob24gMi43LjEwLiAge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy9wZXAtMDQ3Ni8ifX17XGZsZHJzbHQgUEVQIDQ3Nn19IGNoYW5nZXMgc2V2ZXJhbCBzdGFuZGFyZCBsaWJyYXJ5IG1vZHVsZXMsIGxpa2UgCi1caSBodHRwbGliCi1caTAgLCAKLVxpIHVybGxpYgotXGkwICwgYW5kIAotXGkgeG1scnBjbGliCi1caTAgLCB0byBieSBkZWZhdWx0IHZlcmlmeSBjZXJ0aWZpY2F0ZXMgcHJlc2VudGVkIGJ5IHNlcnZlcnMgb3ZlciBzZWN1cmUgKFRMUykgY29ubmVjdGlvbnMuICBUaGUgdmVyaWZpY2F0aW9uIGlzIHBlcmZvcm1lZCBieSB0aGUgT3BlblNTTCBsaWJyYXJpZXMgdGhhdCBQeXRob24gaXMgbGlua2VkIHRvLiAgUHJpb3IgdG8gMy40LjMsIGJvdGggcHl0aG9uLm9yZyBpbnN0YWxsZXJzIGR5bmFtaWNhbGx5IGxpbmtlZCB3aXRoIEFwcGxlLXN1cHBsaWVkIE9wZW5TU0wgbGlicmFyaWVzIHNoaXBwZWQgd2l0aCBPUyBYLiAgT1MgWCBwcm92aWRlcyBhIG11bHRpcGxlIGxldmVsIHNlY3VyaXR5IGZyYW1ld29yayB0aGF0IHN0b3JlcyB0cnVzdCBjZXJ0aWZpY2F0ZXMgaW4gc3lzdGVtIGFuZCB1c2VyIGtleWNoYWlucyBtYW5hZ2VkIGJ5IHRoZSAKLVxpIEtleWNoYWluIEFjY2VzcyAKLVxpMCBhcHBsaWNhdGlvbiBhbmQgdGhlIAotXGkgc2VjdXJpdHkKLVxpMCAgY29tbWFuZCBsaW5lIHV0aWxpdHkuXAotXAotRm9yIE9TIFggMTAuNSwgQXBwbGUgcHJvdmlkZXMgCi1caSBPcGVuU1NMIDAuOS43Ci1caTAgIGxpYnJhcmllcy4gIFRoaXMgdmVyc2lvbiBvZiBBcHBsZSdzIE9wZW5TU0wgCi1cYiBkb2VzIG5vdAotXGIwICB1c2UgdGhlIGNlcnRpZmljYXRlcyBmcm9tIHRoZSBzeXN0ZW0gc2VjdXJpdHkgZnJhbWV3b3JrLCBldmVuIHdoZW4gdXNlZCBvbiBuZXdlciB2ZXJzaW9ucyBvZiBPUyBYLiAgSW5zdGVhZCBpdCBjb25zdWx0cyBhIHRyYWRpdGlvbmFsIE9wZW5TU0wgY29uY2F0ZW5hdGVkIGNlcnRpZmljYXRlIGZpbGUgKAotXGkgY2FmaWxlCi1caTAgKSBvciBjZXJ0aWZpY2F0ZSBkaXJlY3RvcnkgKAotXGkgY2FwYXRoCi1caTAgKSwgbG9jYXRlZCBpbiAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gIFRoZXNlIGRpcmVjdG9yaWVzIGFyZSB0eXBpY2FsbHkgZW1wdHkgYW5kIG5vdCBtYW5hZ2VkIGJ5IE9TIFg7IHlvdSBtdXN0IG1hbmFnZSB0aGVtIHlvdXJzZWxmIG9yIHN1cHBseSB5b3VyIG93biBTU0wgY29udGV4dHMuICBPcGVuU1NMIDAuOS43IGlzIG9ic29sZXRlIGJ5IGN1cnJlbnQgc2VjdXJpdHkgc3RhbmRhcmRzLCBsYWNraW5nIGEgbnVtYmVyIG9mIGltcG9ydGFudCBmZWF0dXJlcyBmb3VuZCBpbiBsYXRlciB2ZXJzaW9ucy4gIEFtb25nIHRoZSBwcm9ibGVtcyB0aGlzIGNhdXNlcyBpcyB0aGUgaW5hYmlsaXR5IHRvIHZlcmlmeSBoaWdoZXItc2VjdXJpdHkgY2VydGlmaWNhdGVzIG5vdyB1c2VkIGJ5IHB5dGhvbi5vcmcgc2VydmljZXMsIGluY2x1ZGluZyAKLVxpIHR7XGZpZWxke1wqXGZsZGluc3R7SFlQRVJMSU5LICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpIn19e1xmbGRyc2x0IGhlIFB5dGhvbiBQYWNrYWdlIEluZGV4LCBQeVBJfX0KLVxpMCAuICBUbyBzb2x2ZSB0aGlzIHByb2JsZW0sIHRoZSAKLVxpIDEwLjUrIDMyLWJpdC1vbmx5IHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBpcyBsaW5rZWQgd2l0aCBhIHByaXZhdGUgY29weSBvZiAKLVxpIE9wZW5TU0wgMS4wLjIKLVxpMCA7IGl0IGNvbnN1bHRzIHRoZSBzYW1lIGRlZmF1bHQgY2VydGlmaWNhdGUgZGlyZWN0b3J5LCAKLVxmMSAvU3lzdGVtL0xpYnJhcnkvT3BlblNTTAotXGYwIC4gICBBcyBiZWZvcmUsIGl0IGlzIHN0aWxsIG5lY2Vzc2FyeSB0byBtYW5hZ2UgY2VydGlmaWNhdGVzIHlvdXJzZWxmIHdoZW4geW91IHVzZSB0aGlzIFB5dGhvbiB2YXJpYW50IGFuZCwgd2l0aCBjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gbm93IGVuYWJsZWQgYnkgZGVmYXVsdCwgeW91IG1heSBub3cgbmVlZCB0byB0YWtlIGFkZGl0aW9uYWwgc3RlcHMgdG8gZW5zdXJlIHlvdXIgUHl0aG9uIHByb2dyYW1zIGhhdmUgYWNjZXNzIHRvIENBIGNlcnRpZmljYXRlcyB5b3UgdHJ1c3QuICBJZiB5b3UgdXNlIHRoaXMgUHl0aG9uIHZhcmlhbnQgdG8gYnVpbGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgd2l0aCB0aGlyZC1wYXJ0eSB0b29scyBsaWtlIHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHkyYXBwLyJ9fXtcZmxkcnNsdCAKLVxmMSBweTJhcHB9fSwgeW91IG1heSBub3cgbmVlZCB0byBidW5kbGUgQ0EgY2VydGlmaWNhdGVzIGluIHRoZW0gb3Igb3RoZXJ3aXNlIHN1cHBseSBub24tZGVmYXVsdCBTU0wgY29udGV4dHMuXAotXAotRm9yIE9TIFggMTAuNissIEFwcGxlIGFsc28gcHJvdmlkZXMgCi1caSBPcGVuU1NMCi1caTAgIAotXGkgMC45LjggbGlicmFyaWVzCi1caTAgLiAgQXBwbGUncyAwLjkuOCB2ZXJzaW9uIGluY2x1ZGVzIGFuIGltcG9ydGFudCBhZGRpdGlvbmFsIGZlYXR1cmU6IGlmIGEgY2VydGlmaWNhdGUgY2Fubm90IGJlIHZlcmlmaWVkIHVzaW5nIHRoZSBtYW51YWxseSBhZG1pbmlzdGVyZWQgY2VydGlmaWNhdGVzIGluIAotXGYxIC9TeXN0ZW0vTGlicmFyeS9PcGVuU1NMCi1cZjAgLCB0aGUgY2VydGlmaWNhdGVzIG1hbmFnZWQgYnkgdGhlIHN5c3RlbSBzZWN1cml0eSBmcmFtZXdvcmsgSW4gdGhlIHVzZXIgYW5kIHN5c3RlbSBrZXljaGFpbnMgYXJlIGFsc28gY29uc3VsdGVkICh1c2luZyBBcHBsZSBwcml2YXRlIEFQSXMpLiAgRm9yIHRoaXMgcmVhc29uLCB0aGUgCi1caSA2NC1iaXQvMzItYml0IDEwLjYrIHB5dGhvbi5vcmcgdmFyaWFudAotXGkwICBjb250aW51ZXMgdG8gYmUgZHluYW1pY2FsbHkgbGlua2VkIHdpdGggQXBwbGUncyBPcGVuU1NMIDAuOS44IHNpbmNlIGl0IHdhcyBmZWx0IHRoYXQgdGhlIGxvc3Mgb2YgdGhlIHN5c3RlbS1wcm92aWRlZCBjZXJ0aWZpY2F0ZXMgYW5kIG1hbmFnZW1lbnQgdG9vbHMgb3V0d2VpZ2hzIHRoZSBhZGRpdGlvbmFsIHNlY3VyaXR5IGZlYXR1cmVzIHByb3ZpZGVkIGJ5IG5ld2VyIHZlcnNpb25zIG9mIE9wZW5TU0wuICBUaGlzIHdpbGwgbGlrZWx5IGNoYW5nZSBpbiBmdXR1cmUgcmVsZWFzZXMgb2YgdGhlIHB5dGhvbi5vcmcgaW5zdGFsbGVycyBhcyBBcHBsZSBoYXMgZGVwcmVjYXRlZCB1c2Ugb2YgdGhlIHN5c3RlbS1zdXBwbGllZCBPcGVuU1NMIGxpYnJhcmllcy4gIElmIHlvdSBkbyBuZWVkIGZlYXR1cmVzIGZyb20gbmV3ZXIgdmVyc2lvbnMgb2YgT3BlblNTTCwgdGhlcmUgYXJlIHRoaXJkLXBhcnR5IE9wZW5TU0wgd3JhcHBlciBwYWNrYWdlcyBhdmFpbGFibGUgdGhyb3VnaCAKLVxpIFB5UEkKLVxpMCAuXAotXAotVGhlIGJ1bmRsZWQgCi1cZjEgcGlwCi1cZjAgIGluY2x1ZGVkIHdpdGggdGhlIFB5dGhvbiAzLjUgaW5zdGFsbGVycyBoYXMgaXRzIG93biBkZWZhdWx0IGNlcnRpZmljYXRlIHN0b3JlIGZvciB2ZXJpZnlpbmcgZG93bmxvYWQgY29ubmVjdGlvbnMuXAotXAotCi1cYiBcdWwgT3RoZXIgY2hhbmdlc1wKLQotXGIwIFx1bG5vbmUgXAotXHBhcmRcdHg3MjBcdHgxNDQwXHR4MjE2MFx0eDI4ODBcdHgzNjAwXHR4NDMyMFx0eDUwNDBcdHg1NzYwXHR4NjQ4MFx0eDcyMDBcdHg3OTIwXHR4ODY0MFxwYXJkaXJuYXR1cmFsCi1cY2YwIEZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKK0ZvciBvdGhlciBjaGFuZ2VzIGluIHRoaXMgcmVsZWFzZSwgc2VlIHRoZSAKIFxpIFdoYXQncyBuZXcKIFxpMCAgc2VjdGlvbiBpbiB0aGUge1xmaWVsZHtcKlxmbGRpbnN0e0hZUEVSTElOSyAiaHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kb2MvIn19e1xmbGRyc2x0IERvY3VtZW50YXRpb24gU2V0fX0gZm9yIHRoaXMgcmVsZWFzZSBhbmQgaXRzIAogXGkgUmVsZWFzZSBOb3RlcwogXGkwICBsaW5rIGF0IHtcZmllbGR7XCpcZmxkaW5zdHtIWVBFUkxJTksgImh0dHBzOi8vd3d3LnB5dGhvbi5vcmcvZG93bmxvYWRzLyJ9fXtcZmxkcnNsdCBodHRwczovL3d3dy5weXRob24ub3JnL2Rvd25sb2Fkcy99fS5cCi1ccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcmRpcm5hdHVyYWwKIAotXGIgXGNmMCBcdWwgXAorXGIgXHVsIFwKIFB5dGhvbiAzIGFuZCBQeXRob24gMiBDby1leGlzdGVuY2VcCiAKIFxiMCBcdWxub25lIFwKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYgYi9NYWMvQnVpbGRTY3JpcHQvcmVzb3VyY2VzL1dlbGNvbWUucnRmCmluZGV4IGRmYjc1ZDguLjNhOWFiMDQgMTAwNjQ0Ci0tLSBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvV2VsY29tZS5ydGYKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9XZWxjb21lLnJ0ZgpAQCAtMSw4ICsxLDkgQEAKLXtccnRmMVxhbnNpXGFuc2ljcGcxMjUyXGNvY29hcnRmMTM0M1xjb2NvYXN1YnJ0ZjE2MAore1xydGYxXGFuc2lcYW5zaWNwZzEyNTJcY29jb2FydGYxNTA0CiBcY29jb2FzY3JlZW5mb250czF7XGZvbnR0YmxcZjBcZnN3aXNzXGZjaGFyc2V0MCBIZWx2ZXRpY2E7fQoge1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQore1wqXGV4cGFuZGVkY29sb3J0Ymw7XGNzZ3JheVxjMTAwMDAwO30KIFxwYXBlcncxMTkwNVxwYXBlcmgxNjgzN1xtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3MTIyMDBcdmlld2gxMDg4MFx2aWV3a2luZDAKLVxwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDAKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAogXGYwXGZzMjQgXGNmMCBUaGlzIHBhY2thZ2Ugd2lsbCBpbnN0YWxsIAogXGIgUHl0aG9uICRGVUxMX1ZFUlNJT04KQEAgLTE2LDggKzE3LDE0IEBACiBcYiBJRExFCiBcYjAgLlwKIFwKK1xwYXJkXHR4NzIwXHR4MTQ0MFx0eDIxNjBcdHgyODgwXHR4MzYwMFx0eDQzMjBcdHg1MDQwXHR4NTc2MFx0eDY0ODBcdHg3MjAwXHR4NzkyMFx0eDg2NDBccGFydGlnaHRlbmZhY3RvcjAKIAotXGIgSU1QT1JUQU5UOgorXGIgXGNmMCBORVc6CitcYjAgICBUaGVyZSBhcmUgaW1wb3J0YW50IGNoYW5nZXMgaW4gdGhpcyByZWxlYXNlIHJlZ2FyZGluZyBuZXR3b3JrIHNlY3VyaXR5IGFuZCB0cnVzdCBjZXJ0aWZpY2F0ZXMuICBQbGVhc2Ugc2VlIHRoZSBSZWFkTWUgZm9yIG1vcmUgZGV0YWlscy5cCitcCitccGFyZFx0eDcyMFx0eDE0NDBcdHgyMTYwXHR4Mjg4MFx0eDM2MDBcdHg0MzIwXHR4NTA0MFx0eDU3NjBcdHg2NDgwXHR4NzIwMFx0eDc5MjBcdHg4NjQwXHBhcnRpZ2h0ZW5mYWN0b3IwCisKK1xiIFxjZjAgSU1QT1JUQU5UOgogXGIwICAKIFxiIElETEUKIFxiMCAgYW5kIG90aGVyIHByb2dyYW1zIHVzaW5nIHRoZSAKZGlmZiAtLWdpdCBhL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZCBiL01hYy9CdWlsZFNjcmlwdC9yZXNvdXJjZXMvaW5zdGFsbF9jZXJ0aWZpY2F0ZXMuY29tbWFuZApuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4xZDJlMmQ4Ci0tLSAvZGV2L251bGwKKysrIGIvTWFjL0J1aWxkU2NyaXB0L3Jlc291cmNlcy9pbnN0YWxsX2NlcnRpZmljYXRlcy5jb21tYW5kCkBAIC0wLDAgKzEsNDggQEAKKyMhL2Jpbi9zaAorCisvTGlicmFyeS9GcmFtZXdvcmtzL1B5dGhvbi5mcmFtZXdvcmsvVmVyc2lvbnMvQFBZVkVSQC9iaW4vcHl0aG9uQFBZVkVSQCA8PCAiRU9GIgorCisjIGluc3RhbGxfY2VydGlmaS5weQorIworIyBzYW1wbGUgc2NyaXB0IHRvIGluc3RhbGwgb3IgdXBkYXRlIGEgc2V0IG9mIGRlZmF1bHQgUm9vdCBDZXJ0aWZpY2F0ZXMKKyMgZm9yIHRoZSBzc2wgbW9kdWxlLiAgVXNlcyB0aGUgY2VydGlmaWNhdGVzIHByb3ZpZGVkIGJ5IHRoZSBjZXJ0aWZpIHBhY2thZ2U6CisjICAgICAgIGh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvY2VydGlmaQorCitpbXBvcnQgb3MKK2ltcG9ydCBvcy5wYXRoCitpbXBvcnQgc3NsCitpbXBvcnQgc3RhdAoraW1wb3J0IHN1YnByb2Nlc3MKK2ltcG9ydCBzeXMKKworU1RBVF8wbzc3NSA9ICggc3RhdC5TX0lSVVNSIHwgc3RhdC5TX0lXVVNSIHwgc3RhdC5TX0lYVVNSCisgICAgICAgICAgICAgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVdHUlAgfCBzdGF0LlNfSVhHUlAKKyAgICAgICAgICAgICB8IHN0YXQuU19JUk9USCB8ICAgICAgICAgICAgICAgIHN0YXQuU19JWE9USCApCisKK2RlZiBtYWluKCk6CisgICAgb3BlbnNzbF9kaXIsIG9wZW5zc2xfY2FmaWxlID0gb3MucGF0aC5zcGxpdCgKKyAgICAgICAgc3NsLmdldF9kZWZhdWx0X3ZlcmlmeV9wYXRocygpLm9wZW5zc2xfY2FmaWxlKQorCisgICAgcHJpbnQoIiAtLSBwaXAgaW5zdGFsbCAtLXVwZ3JhZGUgY2VydGlmaSIpCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtzeXMuZXhlY3V0YWJsZSwKKyAgICAgICAgIi1FIiwgIi1zIiwgIi1tIiwgInBpcCIsICJpbnN0YWxsIiwgIi0tdXBncmFkZSIsICJjZXJ0aWZpIl0pCisKKyAgICBpbXBvcnQgY2VydGlmaQorCisgICAgIyBjaGFuZ2Ugd29ya2luZyBkaXJlY3RvcnkgdG8gdGhlIGRlZmF1bHQgU1NMIGRpcmVjdG9yeQorICAgIG9zLmNoZGlyKG9wZW5zc2xfZGlyKQorICAgIHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUgPSBvcy5wYXRoLnJlbHBhdGgoY2VydGlmaS53aGVyZSgpKQorICAgIHByaW50KCIgLS0gcmVtb3ZpbmcgYW55IGV4aXN0aW5nIGZpbGUgb3IgbGluayIpCisgICAgdHJ5OgorICAgICAgICBvcy5yZW1vdmUob3BlbnNzbF9jYWZpbGUpCisgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICBwYXNzCisgICAgcHJpbnQoIiAtLSBjcmVhdGluZyBzeW1saW5rIHRvIGNlcnRpZmkgY2VydGlmaWNhdGUgYnVuZGxlIikKKyAgICBvcy5zeW1saW5rKHJlbHBhdGhfdG9fY2VydGlmaV9jYWZpbGUsIG9wZW5zc2xfY2FmaWxlKQorICAgIHByaW50KCIgLS0gc2V0dGluZyBwZXJtaXNzaW9ucyIpCisgICAgb3MuY2htb2Qob3BlbnNzbF9jYWZpbGUsIFNUQVRfMG83NzUpCisgICAgcHJpbnQoIiAtLSB1cGRhdGUgY29tcGxldGUiKQorCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQorRU9GCmRpZmYgLS1naXQgYS9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkgYi9NYWMvSURMRS9JRExFLmFwcC9Db250ZW50cy9SZXNvdXJjZXMvaWRsZW1haW4ucHkKaW5kZXggOTg2NzYwZC4uNTk5NGMxOCAxMDA2NDQKLS0tIGEvTWFjL0lETEUvSURMRS5hcHAvQ29udGVudHMvUmVzb3VyY2VzL2lkbGVtYWluLnB5CisrKyBiL01hYy9JRExFL0lETEUuYXBwL0NvbnRlbnRzL1Jlc291cmNlcy9pZGxlbWFpbi5weQpAQCAtNjgsNiArNjgsNiBAQAogICAgICAgICBicmVhawogCiAjIE5vdyBpdCBpcyBzYWZlIHRvIGltcG9ydCBpZGxlbGliLgotZnJvbSBpZGxlbGliLlB5U2hlbGwgaW1wb3J0IG1haW4KK2Zyb20gaWRsZWxpYi5weXNoZWxsIGltcG9ydCBtYWluCiBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgogICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCmluZGV4IGIzNzljZTkuLjQwNzY1OGUgMTAwNjQ0Ci0tLSBhL01ha2VmaWxlLnByZS5pbgorKysgYi9NYWtlZmlsZS5wcmUuaW4KQEAgLTQ4LDYgKzQ4LDEwIEBACiBMTFZNX1BST0ZfTUVSR0VSPUBMTFZNX1BST0ZfTUVSR0VSQAogTExWTV9QUk9GX0ZJTEU9QExMVk1fUFJPRl9GSUxFQAogTExWTV9QUk9GX0VSUj1ATExWTV9QUk9GX0VSUkAKK0RUUkFDRT0gICAgICAgICBARFRSQUNFQAorREZMQUdTPSAgICAgICAgIEBERkxBR1NACitEVFJBQ0VfSEVBREVSUz0gQERUUkFDRV9IRUFERVJTQAorRFRSQUNFX09CSlM9ICAgIEBEVFJBQ0VfT0JKU0AKIAogR05VTEQ9CQlAR05VTERACiAKQEAgLTEwOSw2ICsxMTMsNyBAQAogCiAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKK01VTFRJQVJDSF9DUFBGTEFHUyA9IEBNVUxUSUFSQ0hfQ1BQRkxBR1NACiAKICMgSW5zdGFsbCBwcmVmaXggZm9yIGFyY2hpdGVjdHVyZS1pbmRlcGVuZGVudCBmaWxlcwogcHJlZml4PQkJQHByZWZpeEAKQEAgLTIzNCw3ICsyMzksNyBAQAogIyBUaGUgdGFzayB0byBydW4gd2hpbGUgaW5zdHJ1bWVudGVkIHdoZW4gYnVpbGRpbmcgdGhlIHByb2ZpbGUtb3B0IHRhcmdldC4KICMgV2UgZXhjbHVkZSB1bml0dGVzdHMgd2l0aCAteCB0aGF0IHRha2UgYSByZWRpY3VsaW91cyBhbW91bnQgb2YgdGltZSB0bwogIyBydW4gaW4gdGhlIGluc3RydW1lbnRlZCB0cmFpbmluZyBidWlsZCBvciBkbyBub3QgcHJvdmlkZSBtdWNoIHZhbHVlLgotUFJPRklMRV9UQVNLPS1tIHRlc3QucmVncnRlc3QgLS1wZ28gLXggdGVzdF9hc3luY29yZSB0ZXN0X2dkYiB0ZXN0X211bHRpcHJvY2Vzc2luZ19mb3JrIHRlc3RfbXVsdGlwcm9jZXNzaW5nX2ZvcmtzZXJ2ZXIgdGVzdF9tdWx0aXByb2Nlc3NpbmdfbWFpbl9oYW5kbGluZyB0ZXN0X211bHRpcHJvY2Vzc2luZ19zcGF3biB0ZXN0X3N1YnByb2Nlc3MKK1BST0ZJTEVfVEFTSz0tbSB0ZXN0LnJlZ3J0ZXN0IC0tcGdvCiAKICMgcmVwb3J0IGZpbGVzIGZvciBnY292IC8gbGNvdiBjb3ZlcmFnZSByZXBvcnQKIENPVkVSQUdFX0lORk89CSQoYWJzX2J1aWxkZGlyKS9jb3ZlcmFnZS5pbmZvCkBAIC0yNTMsOSArMjU4LDYgQEAKIAkJTW9kdWxlcy9tYWluLm8gXAogCQlNb2R1bGVzL2djbW9kdWxlLm8KIAotIyBVc2VkIG9mIHNpZ25hbG1vZHVsZS5vIGlzIG5vdCBhdmFpbGFibGUKLVNJR05BTF9PQkpTPQlAU0lHTkFMX09CSlNACi0KIElPX0g9CQlNb2R1bGVzL19pby9faW9tb2R1bGUuaAogCiBJT19PQkpTPQlcCkBAIC0yODAsMTggKzI4Miw2IEBACiAjIFBhcnNlcgogUEdFTj0JCVBhcnNlci9wZ2VuJChFWEUpCiAKLVBTUkNTPQkJXAotCQlQYXJzZXIvYWNjZWxlci5jIFwKLQkJUGFyc2VyL2dyYW1tYXIxLmMgXAotCQlQYXJzZXIvbGlzdG5vZGUuYyBcCi0JCVBhcnNlci9ub2RlLmMgXAotCQlQYXJzZXIvcGFyc2VyLmMgXAotCQlQYXJzZXIvYml0c2V0LmMgXAotCQlQYXJzZXIvbWV0YWdyYW1tYXIuYyBcCi0JCVBhcnNlci9maXJzdHNldHMuYyBcCi0JCVBhcnNlci9ncmFtbWFyLmMgXAotCQlQYXJzZXIvcGdlbi5jCi0KIFBPQkpTPQkJXAogCQlQYXJzZXIvYWNjZWxlci5vIFwKIAkJUGFyc2VyL2dyYW1tYXIxLm8gXApAQCAtMzA2LDE2ICsyOTYsNiBAQAogCiBQQVJTRVJfT0JKUz0JJChQT0JKUykgUGFyc2VyL215cmVhZGxpbmUubyBQYXJzZXIvcGFyc2V0b2subyBQYXJzZXIvdG9rZW5pemVyLm8KIAotUEdTUkNTPQkJXAotCQlPYmplY3RzL29ibWFsbG9jLmMgXAotCQlQeXRob24vZHluYW1pY19hbm5vdGF0aW9ucy5jIFwKLQkJUHl0aG9uL215c25wcmludGYuYyBcCi0JCVB5dGhvbi9weWN0eXBlLmMgXAotCQlQYXJzZXIvdG9rZW5pemVyX3BnZW4uYyBcCi0JCVBhcnNlci9wcmludGdyYW1tYXIuYyBcCi0JCVBhcnNlci9wYXJzZXRva19wZ2VuLmMgXAotCQlQYXJzZXIvcGdlbm1haW4uYwotCiBQR09CSlM9CQlcCiAJCU9iamVjdHMvb2JtYWxsb2MubyBcCiAJCVB5dGhvbi9keW5hbWljX2Fubm90YXRpb25zLm8gXApAQCAtMzMxLDcgKzMxMSw2IEBACiAJCSQoc3JjZGlyKS9JbmNsdWRlL3BhcnNldG9rLmggXAogCQkkKHNyY2RpcikvUGFyc2VyL3Rva2VuaXplci5oCiAKLVBHRU5TUkNTPQkkKFBTUkNTKSAkKFBHU1JDUykKIFBHRU5PQkpTPQkkKFBPQkpTKSAkKFBHT0JKUykKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAgLTM0MCw3ICszMTksNyBAQAogT1BDT0RFX0hfU0NSSVBUPSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQogT1BDT0RFX0g9CSQoT1BDT0RFX0hfRElSKS9vcGNvZGUuaAogT1BDT0RFX0hfR0VOPQkkKFBZVEhPTl9GT1JfR0VOKSAkKE9QQ09ERV9IX1NDUklQVCkgJChzcmNkaXIpL0xpYi9vcGNvZGUucHkgJChPUENPREVfSCkKLSMKKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQVNUCiBBU1RfSF9ESVI9CUluY2x1ZGUKQEAgLTM3Niw2ICszNTUsNyBAQAogCQlQeXRob24vY29tcGlsZS5vIFwKIAkJUHl0aG9uL2NvZGVjcy5vIFwKIAkJUHl0aG9uL2R5bmFtaWNfYW5ub3RhdGlvbnMubyBcCisJCVB5dGhvbi9kdHJhY2Vfc3R1YnMubyBcCiAJCVB5dGhvbi9lcnJvcnMubyBcCiAJCVB5dGhvbi9mcm96ZW5tYWluLm8gXAogCQlQeXRob24vZnV0dXJlLm8gXApAQCAtNDE2LDcgKzM5Niw4IEBACiAJCVB5dGhvbi8kKERZTkxPQURGSUxFKSBcCiAJCSQoTElCT0JKUykgXAogCQkkKE1BQ0hERVBfT0JKUykgXAotCQkkKFRIUkVBRE9CSikKKwkJJChUSFJFQURPQkopIFwKKwkJJChEVFJBQ0VfT0JKUykKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpAQCAtNDcwLDEzICs0NTEsMjEgQEAKIAkJJChPQkpFQ1RfT0JKUykgXAogCQkkKFBZVEhPTl9PQkpTKSBcCiAJCSQoTU9EVUxFX09CSlMpIFwKLQkJJChTSUdOQUxfT0JKUykgXAogCQkkKE1PRE9CSlMpCiAKIExJQlJBUllfT0JKUz0JXAogCQkkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikgXAogCQlQeXRob24vZnJvemVuLm8KIAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMgRFRyYWNlCisKKyMgT24gc29tZSBzeXN0ZW1zLCBvYmplY3QgZmlsZXMgdGhhdCByZWZlcmVuY2UgRFRyYWNlIHByb2JlcyBuZWVkIHRvIGJlIG1vZGlmaWVkCisjIGluLXBsYWNlIGJ5IGR0cmFjZSgxKS4KK0RUUkFDRV9ERVBTID0gXAorCVB5dGhvbi9jZXZhbC5vCisjIFhYWDogc2hvdWxkIGdjbW9kdWxlLCBldGMuIGJlIGhlcmUsIHRvbz8KKwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyBSdWxlcwogCkBAIC01MzIsMTUgKzUyMSwyMyBAQAogCSAgICAtLWJhc2UtZGlyZWN0b3J5ICQocmVhbHBhdGggJChhYnNfYnVpbGRkaXIpKSBcCiAJICAgIC0tcGF0aCAkKHJlYWxwYXRoICQoYWJzX3NyY2RpcikpIFwKIAkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCi0JOiAjIHJlbW92ZSAzcmQgcGFydHkgbW9kdWxlcyBhbmQgc3lzdGVtIGhlYWRlcnMKKwk6ICMgcmVtb3ZlIDNyZCBwYXJ0eSBtb2R1bGVzLCBzeXN0ZW0gaGVhZGVycyBhbmQgaW50ZXJuYWwgZmlsZXMgd2l0aAorCTogIyBkZWJ1ZywgdGVzdCBvciBkdW1teSBmdW5jdGlvbnMuCiAJQGxjb3YgLS1yZW1vdmUgJChDT1ZFUkFHRV9JTkZPKSBcCisJICAgICcqL01vZHVsZXMvX2JsYWtlMi9pbXBsLyonIFwKIAkgICAgJyovTW9kdWxlcy9fY3R5cGVzL2xpYmZmaSovKicgXAogCSAgICAnKi9Nb2R1bGVzL19kZWNpbWFsL2xpYm1wZGVjLyonIFwKKwkgICAgJyovTW9kdWxlcy9fc2hhMy9rY3AvKicgXAogCSAgICAnKi9Nb2R1bGVzL2V4cGF0LyonIFwKIAkgICAgJyovTW9kdWxlcy96bGliLyonIFwKIAkgICAgJyovSW5jbHVkZS8qJyBcCisJICAgICcqL01vZHVsZXMveHgqLmMnIFwKKwkgICAgJyovUGFyc2VyL2xpc3Rub2RlLmMnIFwKKwkgICAgJyovUHl0aG9uL3B5ZnBlLmMnIFwKKwkgICAgJyovUHl0aG9uL3B5c3RyY21wLmMnIFwKIAkgICAgJy91c3IvaW5jbHVkZS8qJyBcCiAJICAgICcvdXNyL2xvY2FsL2luY2x1ZGUvKicgXAorCSAgICAnL3Vzci9saWIvZ2NjLyonIFwKIAkgICAgLS1vdXRwdXQtZmlsZSAkKENPVkVSQUdFX0lORk8pCiAJQGdlbmh0bWwgJChDT1ZFUkFHRV9JTkZPKSAtLW91dHB1dC1kaXJlY3RvcnkgJChDT1ZFUkFHRV9SRVBPUlQpIFwKIAkgICAgJChDT1ZFUkFHRV9SRVBPUlRfT1BUSU9OUykKQEAgLTU2Myw3ICs1NjAsNyBAQAogIyBSdW4gIkFyZ3VtZW50IENsaW5pYyIgb3ZlciBhbGwgc291cmNlIGZpbGVzCiAjIChkZXBlbmRzIG9uIHB5dGhvbiBoYXZpbmcgYWxyZWFkeSBiZWVuIGJ1aWx0KQogLlBIT05ZPWNsaW5pYwotY2xpbmljOiAkKEJVSUxEUFlUSE9OKQorY2xpbmljOiAkKEJVSUxEUFlUSE9OKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMnNfaW1wbC5jCiAJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLi9Ub29scy9jbGluaWMvY2xpbmljLnB5IC0tbWFrZQogCiAjIEJ1aWxkIHRoZSBpbnRlcnByZXRlcgpAQCAtNTcxLDcgKzU2OCw3IEBACiAJJChMSU5LQ0MpICQoUFlfTERGTEFHUykgJChMSU5LRk9SU0hBUkVEKSAtbyAkQCBQcm9ncmFtcy9weXRob24ubyAkKEJMRExJQlJBUlkpICQoTElCUykgJChNT0RMSUJTKSAkKFNZU0xJQlMpICQoTERMQVNUKQogCiBwbGF0Zm9ybTogJChCVUlMRFBZVEhPTikgcHlidWlsZGRpci50eHQKLQkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAtYyAnaW1wb3J0IHN5cyA7IGZyb20gc3lzY29uZmlnIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludChnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXSknID5wbGF0Zm9ybQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50KCIlcy0lZC4lZCIgJSAoZ2V0X3BsYXRmb3JtKCksICpzeXMudmVyc2lvbl9pbmZvWzoyXSkpJyA+cGxhdGZvcm0KIAogIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KICMgcHlidWlsZGRpci50eHQgY29udGFpbnMgdGhlIG5hbWUgb2YgdGhlIGJ1aWxkIGRpciBhbmQgaXMgdXNlZCBmb3IKQEAgLTU5Myw2ICs1OTAsMTEgQEAKIE1vZHVsZXMvX21hdGgubzogTW9kdWxlcy9fbWF0aC5jIE1vZHVsZXMvX21hdGguaAogCSQoQ0MpIC1jICQoQ0NTSEFSRUQpICQoUFlfQ09SRV9DRkxBR1MpIC1vICRAICQ8CiAKKyMgYmxha2UycyBpcyBhdXRvLWdlbmVyYXRlZCBmcm9tIGJsYWtlMmIKKyQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2Uyc19pbXBsLmM6ICQoQlVJTERQWVRIT04pICQoc3JjZGlyKS9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMgJChzcmNkaXIpL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKKwkkKFJVTlNIQVJFRCkgJChQWVRIT05fRk9SX0JVSUxEKSAkKHNyY2RpcikvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weQorCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpICQoc3JjZGlyKS9Ub29scy9jbGluaWMvY2xpbmljLnB5IC1mICRACisKICMgQnVpbGQgdGhlIHNoYXJlZCBtb2R1bGVzCiAjIFVuZGVyIEdOVSBtYWtlLCBNQUtFRkxBR1MgYXJlIHNvcnRlZCBhbmQgbm9ybWFsaXplZDsgdGhlICdzJyBmb3IKICMgLXMsIC0tc2lsZW50IG9yIC0tcXVpZXQgaXMgYWx3YXlzIHRoZSBmaXJzdCBjaGFyLgpAQCAtNjA2LDYgKzYwOCw3IEBACiAJCV9UQ0xUS19JTkNMVURFUz0nJChUQ0xUS19JTkNMVURFUyknIF9UQ0xUS19MSUJTPSckKFRDTFRLX0xJQlMpJyBcCiAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgJChzcmNkaXIpL3NldHVwLnB5ICQkcXVpZXQgYnVpbGQKIAorCiAjIEJ1aWxkIHN0YXRpYyBsaWJyYXJ5CiAjIGF2b2lkIGxvbmcgY29tbWFuZCBsaW5lcywgc2FtZSBhcyBMSUJSQVJZX09CSlMKICQoTElCUkFSWSk6ICQoTElCUkFSWV9PQkpTKQpAQCAtNjE0LDcgKzYxNyw3IEBACiAJJChBUikgJChBUkZMQUdTKSAkQCAkKFBBUlNFUl9PQkpTKQogCSQoQVIpICQoQVJGTEFHUykgJEAgJChPQkpFQ1RfT0JKUykKIAkkKEFSKSAkKEFSRkxBR1MpICRAICQoUFlUSE9OX09CSlMpIFB5dGhvbi9mcm96ZW4ubwotCSQoQVIpICQoQVJGTEFHUykgJEAgJChNT0RVTEVfT0JKUykgJChTSUdOQUxfT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoTU9EVUxFX09CSlMpCiAJJChBUikgJChBUkZMQUdTKSAkQCAkKE1PRE9CSlMpCiAJJChSQU5MSUIpICRACiAKQEAgLTcxOCwxMSArNzIxLDExIEBACiBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYjogUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIubyAkKExJQlJBUllfT0JKU19PTUlUX0ZST1pFTikKIAkkKExJTktDQykgJChQWV9MREZMQUdTKSAtbyAkQCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5vICQoTElCUkFSWV9PQkpTX09NSVRfRlJPWkVOKSAkKExJQlMpICQoTU9ETElCUykgJChTWVNMSUJTKSAkKExETEFTVCkKIAotUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXBfZXh0ZXJuYWwucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwX2V4dGVybmFsLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFB5dGhvbi9tYXJzaGFsLmMKIAkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKIAkgICAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcF9leHRlcm5hbC5weSBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAotUHl0aG9uL2ltcG9ydGxpYi5oOiBAR0VORVJBVEVEX0NPTU1FTlRAICQoc3JjZGlyKS9MaWIvaW1wb3J0bGliL19ib290c3RyYXAucHkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIKK1B5dGhvbi9pbXBvcnRsaWIuaDogQEdFTkVSQVRFRF9DT01NRU5UQCAkKHNyY2RpcikvTGliL2ltcG9ydGxpYi9fYm9vdHN0cmFwLnB5IFByb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFB5dGhvbi9tYXJzaGFsLmMKIAkuL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliIFwKIAkgICAgJChzcmNkaXIpL0xpYi9pbXBvcnRsaWIvX2Jvb3RzdHJhcC5weSBQeXRob24vaW1wb3J0bGliLmgKIApAQCAtNzM0LDcgKzczNyw2IEBACiAJCSQoT0JKRUNUX09CSlMpIFwKIAkJJChQWVRIT05fT0JKUykgXAogCQkkKE1PRFVMRV9PQkpTKSBcCi0JCSQoU0lHTkFMX09CSlMpIFwKIAkJJChNT0RPQkpTKSBcCiAJCSQoc3JjZGlyKS9Nb2R1bGVzL2dldGJ1aWxkaW5mby5jCiAJJChDQykgLWMgJChQWV9DT1JFX0NGTEFHUykgXApAQCAtNzgwLDYgKzc4Miw3IEBACiBQeXRob24vc3lzbW9kdWxlLm86ICQoc3JjZGlyKS9QeXRob24vc3lzbW9kdWxlLmMgTWFrZWZpbGUKIAkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSBcCiAJCS1EQUJJRkxBR1M9JyIkKEFCSUZMQUdTKSInIFwKKwkJJChNVUxUSUFSQ0hfQ1BQRkxBR1MpIFwKIAkJLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9zeXNtb2R1bGUuYwogCiAkKElPX09CSlMpOiAkKElPX0gpCkBAIC04NjEsNyArODY0LDggQEAKIAogT2JqZWN0cy91bmljb2Rlb2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyAkKFVOSUNPREVfREVQUykKIAotT2JqZWN0cy9kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL3N0cmluZ2xpYi9lcS5oCitPYmplY3RzL29kaWN0b2JqZWN0Lm86ICQoc3JjZGlyKS9PYmplY3RzL2RpY3QtY29tbW9uLmgKK09iamVjdHMvZGljdG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaCAkKHNyY2RpcikvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCiBPYmplY3RzL3NldG9iamVjdC5vOiAkKHNyY2RpcikvT2JqZWN0cy9zdHJpbmdsaWIvZXEuaAogCiAkKE9QQ09ERVRBUkdFVFNfSCk6ICQoT1BDT0RFVEFSR0VUR0VOX0ZJTEVTKQpAQCAtODcxLDYgKzg3NSwxOCBAQAogCiBQeXRob24vZnJvemVuLm86IFB5dGhvbi9pbXBvcnRsaWIuaCBQeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKIAorIyBHZW5lcmF0ZSBEVHJhY2UgcHJvYmUgbWFjcm9zLCB0aGVuIHJlbmFtZSB0aGVtIChQWVRIT05fIC0+IFB5RFRyYWNlXykgdG8KKyMgZm9sbG93IG91ciBuYW1pbmcgY29udmVudGlvbnMuIGR0cmFjZSgxKSB1c2VzIHRoZSBvdXRwdXQgZmlsZW5hbWUgdG8gZ2VuZXJhdGUKKyMgYW4gaW5jbHVkZSBndWFyZCwgc28gd2UgY2FuJ3QgdXNlIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGl0cyBvdXRwdXQuCitJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oOiAkKHNyY2RpcikvSW5jbHVkZS9weWR0cmFjZS5kCisJJChEVFJBQ0UpICQoREZMQUdTKSAtbyAkQCAtaCAtcyAkPAorCTogc2VkIGluLXBsYWNlIGVkaXQgd2l0aCBQT1NJWC1vbmx5IHRvb2xzCisJc2VkICdzL1BZVEhPTl8vUHlEVHJhY2VfLycgJEAgPiAkQC50bXAKKwltdiAkQC50bXAgJEAKKworUHl0aG9uL3B5ZHRyYWNlLm86ICQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmQgJChEVFJBQ0VfREVQUykKKwkkKERUUkFDRSkgJChERkxBR1MpIC1vICRAIC1HIC1zICQ8ICQoRFRSQUNFX0RFUFMpCisKIE9iamVjdHMvdHlwZW9iamVjdC5vOiBPYmplY3RzL3R5cGVzbG90cy5pbmMKIE9iamVjdHMvdHlwZXNsb3RzLmluYzogJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5CiAJJChQWVRIT05fRk9SX0dFTikgJChzcmNkaXIpL09iamVjdHMvdHlwZXNsb3RzLnB5IDwgJChzcmNkaXIpL0luY2x1ZGUvdHlwZXNsb3RzLmggT2JqZWN0cy90eXBlc2xvdHMuaW5jCkBAIC05MjgsNiArOTQ0LDcgQEAKIAkJJChzcmNkaXIpL0luY2x1ZGUvb2JqaW1wbC5oIFwKIAkJJChPUENPREVfSCkgXAogCQkkKHNyY2RpcikvSW5jbHVkZS9vc2RlZnMuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL29zbW9kdWxlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wYXRjaGxldmVsLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9wZ2VuaGVhZGVycy5oIFwKQEAgLTkzNiw2ICs5NTMsNyBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWNhcHN1bGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5Y3R5cGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZGVidWcuaCBcCisJCSQoc3JjZGlyKS9JbmNsdWRlL3B5ZHRyYWNlLmggXAogCQkkKHNyY2RpcikvSW5jbHVkZS9weWVycm9ycy5oIFwKIAkJJChzcmNkaXIpL0luY2x1ZGUvcHlmcGUuaCBcCiAJCSQoc3JjZGlyKS9JbmNsdWRlL3B5aGFzaC5oIFwKQEAgLTk2Nyw3ICs5ODUsOCBAQAogCQkkKHNyY2RpcikvSW5jbHVkZS93ZWFrcmVmb2JqZWN0LmggXAogCQlweWNvbmZpZy5oIFwKIAkJJChQQVJTRVJfSEVBREVSUykgXAotCQkkKEFTVF9IKQorCQkkKEFTVF9IKSBcCisJCSQoRFRSQUNFX0hFQURFUlMpCiAKICQoTElCUkFSWV9PQkpTKSAkKE1PRE9CSlMpIFByb2dyYW1zL3B5dGhvbi5vOiAkKFBZVEhPTl9IRUFERVJTKQogCkBAIC05NzcsNyArOTk2LDcgQEAKIFRFU1RPUFRTPQkkKEVYVFJBVEVTVE9QVFMpCiBURVNUUFlUSE9OPQkkKFJVTlNIQVJFRCkgLi8kKEJVSUxEUFlUSE9OKSAkKFRFU1RQWVRIT05PUFRTKQogVEVTVFJVTk5FUj0JJChURVNUUFlUSE9OKSAkKHNyY2RpcikvVG9vbHMvc2NyaXB0cy9ydW5fdGVzdHMucHkKLVRFU1RUSU1FT1VUPQkzNjAwCitURVNUVElNRU9VVD0JMTIwMAogCiAjIFJ1biBhIGJhc2ljIHNldCBvZiByZWdyZXNzaW9uIHRlc3RzLgogIyBUaGlzIGV4Y2x1ZGVzIHNvbWUgdGVzdHMgdGhhdCBhcmUgcGFydGljdWxhcmx5IHJlc291cmNlLWludGVuc2l2ZS4KQEAgLTEwMTUsNyArMTAzNCw3IEBACiAJCS1AaWYgd2hpY2ggcHlidWlsZGJvdC5pZGVudGlmeSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAogCQkJcHlidWlsZGJvdC5pZGVudGlmeSAiQ0M9JyQoQ0MpJyIgIkNYWD0nJChDWFgpJyI7IFwKIAkJZmkKLQkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXRpbWVvdXQ9JChURVNUVElNRU9VVCkgJChURVNUT1BUUykKKwkJJChURVNUUlVOTkVSKSAtaiAxIC11IGFsbCAtVyAtLXNsb3dlc3QgLS10aW1lb3V0PSQoVEVTVFRJTUVPVVQpICQoVEVTVE9QVFMpCiAKIFFVSUNLVEVTVE9QVFM9CSQoVEVTVE9QVFMpIC14IHRlc3Rfc3VicHJvY2VzcyB0ZXN0X2lvIHRlc3RfbGliMnRvMyBcCiAJCXRlc3RfbXVsdGlieXRlY29kZWMgdGVzdF91cmxsaWIyX2xvY2FsbmV0IHRlc3RfaXRlcnRvb2xzIFwKQEAgLTExNjgsMTYgKzExODcsMTYgQEAKIAkoY2QgJChERVNURElSKSQoTUFORElSKS9tYW4xOyAkKExOKSAtcyBweXRob24kKFZFUlNJT04pLjEgcHl0aG9uMy4xKQogCiAjIEluc3RhbGwgdGhlIGxpYnJhcnkKLVBMQVRESVI9CUBQTEFURElSQAotTUFDSERFUFM9CSQoUExBVERJUikKIFhNTExJQlNVQkRJUlM9ICB4bWwgeG1sL2RvbSB4bWwvZXRyZWUgeG1sL3BhcnNlcnMgeG1sL3NheAogTElCU1VCRElSUz0JdGtpbnRlciB0a2ludGVyL3Rlc3QgdGtpbnRlci90ZXN0L3Rlc3RfdGtpbnRlciBcCiAJCXRraW50ZXIvdGVzdC90ZXN0X3R0ayBzaXRlLXBhY2thZ2VzIHRlc3QgXAogCQl0ZXN0L2F1ZGlvZGF0YSBcCiAJCXRlc3QvY2FwYXRoIHRlc3QvZGF0YSBcCiAJCXRlc3QvY2prZW5jb2RpbmdzIHRlc3QvZGVjaW1hbHRlc3RkYXRhIHRlc3QveG1sdGVzdGRhdGEgXAorCQl0ZXN0L2R0cmFjZWRhdGEgXAogCQl0ZXN0L2VpbnRyZGF0YSBcCiAJCXRlc3QvaW1naGRyZGF0YSBcCisJCXRlc3QvbGlicmVncnRlc3QgXAogCQl0ZXN0L3N1YnByb2Nlc3NkYXRhIHRlc3Qvc25kaGRyZGF0YSB0ZXN0L3N1cHBvcnQgXAogCQl0ZXN0L3RyYWNlZG1vZHVsZXMgdGVzdC9lbmNvZGVkX21vZHVsZXMgXAogCQl0ZXN0L3Rlc3RfaW1wb3J0IFwKQEAgLTEyMjYsOCArMTI0NSw4IEBACiAJCW11bHRpcHJvY2Vzc2luZyBtdWx0aXByb2Nlc3NpbmcvZHVtbXkgXAogCQl1bml0dGVzdCB1bml0dGVzdC90ZXN0IHVuaXR0ZXN0L3Rlc3QvdGVzdG1vY2sgXAogCQl2ZW52IHZlbnYvc2NyaXB0cyB2ZW52L3NjcmlwdHMvcG9zaXggXAotCQljdXJzZXMgcHlkb2NfZGF0YSAkKE1BQ0hERVBTKQotbGliaW5zdGFsbDoJYnVpbGRfYWxsICQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisJCWN1cnNlcyBweWRvY19kYXRhCitsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYwogCUBmb3IgaSBpbiAkKFNDUklQVERJUikgJChMSUJERVNUKTsgXAogCWRvIFwKIAkJaWYgdGVzdCAhIC1kICQoREVTVERJUikkJGk7IHRoZW4gXApAQCAtMTI0Nyw3ICsxMjY2LDcgQEAKIAkJZWxzZQl0cnVlOyBcCiAJCWZpOyBcCiAJZG9uZQotCUBmb3IgaSBpbiAkKHNyY2RpcikvTGliLyoucHkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGEucHk7IFwKKwlAZm9yIGkgaW4gJChzcmNkaXIpL0xpYi8qLnB5OyBcCiAJZG8gXAogCQlpZiB0ZXN0IC14ICQkaTsgdGhlbiBcCiAJCQkkKElOU1RBTExfU0NSSVBUKSAkJGkgJChERVNURElSKSQoTElCREVTVCk7IFwKQEAgLTEyODIsNiArMTMwMSwxMCBAQAogCQkJZXNhYzsgXAogCQlkb25lOyBcCiAJZG9uZQorCSQoSU5TVEFMTF9EQVRBKSBgY2F0IHB5YnVpbGRkaXIudHh0YC9fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKS5weSBcCisJCSQoREVTVERJUikkKExJQkRFU1QpOyBcCisJZWNobyAkKElOU1RBTExfREFUQSkgYGNhdCBweWJ1aWxkZGlyLnR4dGAvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUykucHkgXAorCQkkKExJQkRFU1QpCiAJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS9MSUNFTlNFICQoREVTVERJUikkKExJQkRFU1QpL0xJQ0VOU0UudHh0CiAJaWYgdGVzdCAtZCAkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHM7IHRoZW4gXAogCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYyBcCkBAIC0xMzE5LDIzICsxMzQyLDYgQEAKIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAogCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvUGF0dGVybkdyYW1tYXIudHh0CiAKLSMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgotJChzcmNkaXIpL0xpYi8kKFBMQVRESVIpOgotCW1rZGlyICQoc3JjZGlyKS9MaWIvJChQTEFURElSKQotCWNwICQoc3JjZGlyKS9MaWIvcGxhdC1nZW5lcmljL3JlZ2VuICQoc3JjZGlyKS9MaWIvJChQTEFURElSKS9yZWdlbgotCWV4cG9ydCBQQVRIOyBQQVRIPSJgcHdkYDokJFBBVEgiOyBcCi0JZXhwb3J0IFBZVEhPTlBBVEg7IFBZVEhPTlBBVEg9ImBwd2RgL0xpYiI7IFwKLQlleHBvcnQgRFlMRF9GUkFNRVdPUktfUEFUSDsgRFlMRF9GUkFNRVdPUktfUEFUSD0iYHB3ZGAiOyBcCi0JZXhwb3J0IEVYRTsgRVhFPSIkKEJVSUxERVhFKSI7IFwKLQlpZiBbIC1uICIkKE1VTFRJQVJDSCkiIF07IHRoZW4gZXhwb3J0IE1VTFRJQVJDSDsgTVVMVElBUkNIPSQoTVVMVElBUkNIKTsgZmk7IFwKLQlleHBvcnQgUFlUSE9OX0ZPUl9CVUlMRDsgXAotCWlmIFsgIiQoQlVJTERfR05VX1RZUEUpIiA9ICIkKEhPU1RfR05VX1RZUEUpIiBdOyB0aGVuIFwKLQkgIFBZVEhPTl9GT1JfQlVJTEQ9IiQoQlVJTERQWVRIT04pIjsgXAotCWVsc2UgXAotCSAgUFlUSE9OX0ZPUl9CVUlMRD0iJChQWVRIT05fRk9SX0JVSUxEKSI7IFwKLQlmaTsgXAotCWNkICQoc3JjZGlyKS9MaWIvJChQTEFURElSKTsgJChSVU5TSEFSRUQpIC4vcmVnZW4KLQogcHl0aG9uLWNvbmZpZzogJChzcmNkaXIpL01pc2MvcHl0aG9uLWNvbmZpZy5pbiBNaXNjL3B5dGhvbi1jb25maWcuc2gKIAkjIFN1YnN0aXR1dGlvbiBoYXBwZW5zIGhlcmUsIGFzIHRoZSBjb21wbGV0ZWx5LWV4cGFuZGVkIEJJTkRJUgogCSMgaXMgbm90IGF2YWlsYWJsZSBpbiBjb25maWd1cmUKQEAgLTE0MzIsNyArMTQzOCw3IEBACiAJCS0taW5zdGFsbC1zY3JpcHRzPSQoQklORElSKSBcCiAJCS0taW5zdGFsbC1wbGF0bGliPSQoREVTVFNIQVJFRCkgXAogCQktLXJvb3Q9JChERVNURElSKS8KLQktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGEucHkKKwktcm0gJChERVNURElSKSQoREVTVFNIQVJFRCkvX3N5c2NvbmZpZ2RhdGFfJChBQklGTEFHUykucHkKIAktcm0gLXIgJChERVNURElSKSQoREVTVFNIQVJFRCkvX19weWNhY2hlX18KIAogIyBIZXJlIGFyZSBhIGNvdXBsZSBvZiB0YXJnZXRzIGZvciBNYWNPU1ggYWdhaW4sIHRvIGluc3RhbGwgYSBmdWxsCkBAIC0xNDc4LDEwICsxNDg0LDEwIEBACiAjIEluc3RhbGwgYSBudW1iZXIgb2Ygc3ltbGlua3MgdG8ga2VlcCBzb2Z0d2FyZSB0aGF0IGV4cGVjdHMgYSBub3JtYWwgdW5peAogIyBpbnN0YWxsICh3aGljaCBpbmNsdWRlcyBweXRob24tY29uZmlnKSBoYXBweS4KIGZyYW1ld29ya2luc3RhbGxtYWNsaWI6Ci0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmEiCi0JJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChwcmVmaXgpL2xpYi9weXRob24kKFZFUlNJT04pL2NvbmZpZy0kKExEVkVSU0lPTikvbGlicHl0aG9uJChMRFZFUlNJT04pLmR5bGliIgotCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQocHJlZml4KS9saWIvcHl0aG9uJChWRVJTSU9OKS9jb25maWctJChMRFZFUlNJT04pL2xpYnB5dGhvbiQoVkVSU0lPTikuYSIKLQkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL3B5dGhvbiQoVkVSU0lPTikvY29uZmlnLSQoTERWRVJTSU9OKS9saWJweXRob24kKFZFUlNJT04pLmR5bGliIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5hIgorCSQoTE4pIC1mcyAiLi4vLi4vLi4vJChQWVRIT05GUkFNRVdPUkspIiAiJChERVNURElSKSQoTElCUEwpL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKKwkkKExOKSAtZnMgIi4uLy4uLy4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKExJQlBMKS9saWJweXRob24kKFZFUlNJT04pLmEiCisJJChMTikgLWZzICIuLi8uLi8uLi8kKFBZVEhPTkZSQU1FV09SSykiICIkKERFU1RESVIpJChMSUJQTCkvbGlicHl0aG9uJChWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoTERWRVJTSU9OKS5keWxpYiIKIAkkKExOKSAtZnMgIi4uLyQoUFlUSE9ORlJBTUVXT1JLKSIgIiQoREVTVERJUikkKHByZWZpeCkvbGliL2xpYnB5dGhvbiQoVkVSU0lPTikuZHlsaWIiCiAKQEAgLTE1OTYsNiArMTYwMiw3IEBACiAJLXJtIC1mIExpYi9saWIydG8zLypHcmFtbWFyKi5waWNrbGUKIAktcm0gLWYgUHJvZ3JhbXMvX3Rlc3RlbWJlZCBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYgogCS1maW5kIGJ1aWxkIC10eXBlIGYgLWEgISAtbmFtZSAnKi5nYz8/JyAtZXhlYyBybSAtZiB7fSAnOycKKwktcm0gLWYgSW5jbHVkZS9weWR0cmFjZV9wcm9iZXMuaAogCiBwcm9maWxlLXJlbW92YWw6CiAJZmluZCAuIC1uYW1lICcqLmdjPz8nIC1leGVjIHJtIC1mIHt9ICc7JwpAQCAtMTY2MCw3ICsxNjY3LDYgQEAKIAkJLW8gLW5hbWUgJyoudG1TbmlwcGV0JyBcCiAJCS1vIC1uYW1lICdTZXR1cCcgXAogCQktbyAtbmFtZSAnU2V0dXAuKicgXAotCQktbyAtbmFtZSByZWdlbiBcCiAJCS1vIC1uYW1lIFJFQURNRSBcCiAJCS1vIC1uYW1lIE5FV1MgXAogCQktbyAtbmFtZSBISVNUT1JZIFwKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCBkMzVmMWU4Li4yNTI3ODM2IDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xMjAsNiArMTIwLDcgQEAKIFRob21hcyBCZWxsbWFuCiBBbGV4YW5kZXIg4oCc0KHQsNGI0LDigJ0gQmVsb3BvbHNreQogRWxpIEJlbmRlcnNreQorTmlraGlsIEJlbmVzY2gKIERhdmlkIEJlbmphbWluCiBPc2NhciBCZW5qYW1pbgogQW5kcmV3IEJlbm5ldHRzCkBAIC0xNTUsNiArMTU2LDcgQEAKIFBhdWwgQm9kZGllCiBNYXR0aGV3IEJvZWRpY2tlcgogUm9iaW4gQm9lcmRpamsKK05pa29sYXkgQm9nb3ljaGV2CiBEYXZpZCBCb2xlbgogV291dGVyIEJvbHN0ZXJsZWUKIEdhd2FpbiBCb2x0b24KQEAgLTI0MSw2ICsyNDMsNyBAQAogTWljaGFlbCBDZXRydWxvCiBEYXZlIENoYW1iZXJzCiBQYXNjYWwgQ2hhbWJvbgorTmljaG9sYXMgQ2hhbW1hcwogSm9obiBDaGFuZGxlcgogSHllLVNoaWsgQ2hhbmcKIEplZmZyZXkgQ2hhbmcKQEAgLTMwNSwxNSArMzA4LDE4IEBACiBEYXZpZCBDb3VybmFwZWF1CiBKdWxpZW4gQ291cnRlYXUKIFN0ZXZlIENvdXNpbnMKK0ZyYW5jaXNjbyBDb3V6bwogQWxleCBDb3ZlbnRyeQogTWF0dGhldyBEaXhvbiBDb3dsZXMKIFJ5YW4gQ295bmVyCiBDaHJpc3RvcGhlciBBLiBDcmFpZwogSmVyZW15IENyYXZlbgogTGF1cmEgQ3JlaWdodG9uCitUeWxlciBDcm9tcHRvbgogU2ltb24gQ3Jvc3MKIEZlbGlwZSBDcnV6CiBEcmV3IENzaWxsYWcKK0FsZXNzYW5kcm8gQ3VjY2kKIEpvYXF1aW4gQ3VlbmNhIEFiZWxhCiBKb2huIEN1Z2luaQogVG9tIEN1bGxpdG9uCkBAIC0zNTcsNiArMzYzLDcgQEAKIFl2ZXMgRGlvbm5lCiBEYW5pZWwgRGl0dG1hcgogSm9zaXAgRGpvbG9uZ2EKK1dhbHRlciBEw7Zyd2FsZAogSmFyb21pciBEb2xlY2VrCiBJc21haWwgRG9ubWV6CiBSb2JlcnQgRG9ub2h1ZQpAQCAtMzg0LDcgKzM5MSw2IEBACiBLYXJtZW4gRHlrc3RyYQogSm9zaXAgRHpvbG9uZ2EKIE1heGltIER6dW1hbmVua28KLVdhbHRlciBEw7Zyd2FsZAogSGFucyBFY2thcmR0CiBSb2RvbHBobyBFY2toYXJkdAogVWxyaWNoIEVja2hhcmR0CkBAIC01NDIsOCArNTQ4LDEwIEBACiBMYXJzIEd1c3TDpGJlbAogVGhvbWFzIEfDvHR0bGVyCiBKb25hcyBILgorSm9zZXBoIEhhY2ttYW4KIEJhcnJ5IEhhZGRvdwogUGhpbGlwcCBIYWdlbWVpc3RlcgorSm9obiBIYWdlbgogUGF1bCB0ZW4gSGFnZW4KIFJhc211cyBIYWhuCiBQZXRlciBIYWlnaHQKQEAgLTc4MCw2ICs3ODgsNyBAQAogTWFya28gS29odGFsYQogVmFqcmFza3kgS29rCiBHdWlkbyBLb2xsZXJpZQorSmFjZWsgS2/Fgm9kemllagogSmFjZWsgS29uaWVjem55CiBBcmthZHkgS29wbHlhcm92CiBQZXRlciBBLiBLb3JlbgpAQCAtNzkxLDYgKzgwMCw3IEBACiBKZXJ6eSBLb3plcmEKIE1ha3NpbSBLb3p5YXJjaHVrCiBTdGVmYW4gS3JhaAorUm9sZiBLcmFobAogQm9iIEtyYXMKIFNlYmFzdGlhbiBLcmVmdAogSG9sZ2VyIEtyZWtlbApAQCAtODIzLDYgKzgzMyw3IEBACiBUaW5vIExhbmdlCiBHbGVubiBMYW5nZm9yZAogQW5kcmV3IExhbmdtZWFkCitXb2xmZ2FuZyBMYW5nbmVyCiBEZXRsZWYgTGFubmVydAogU29yZW4gTGFyc2VuCiBBbW9zIExhdHRlaWVyCkBAIC04ODUsMjQgKzg5NiwyNyBAQAogR3JlZ29yIExpbmdsCiBFdmVyZXR0IExpcG1hbgogTWlya28gTGlzcworQWxleGFuZGVyIExpdQogTmljayBMb2Nrd29vZAogU3RlcGhhbmllIExvY2t3b29kCitNYXJ0aW4gdm9uIEzDtndpcwogSHVnbyBMb3BlcyBUYXZhcmVzCiBHdWlsbGVybW8gTMOzcGV6LUFuZ2xhZGEKIEFubmUgTG9yZAorQWxleCBMb3JkVGhvcnNlbgogVG9tIExvcmVkbwogSnVzdGluIExvdmUKIE5lZCBKYWNrc29uIExvdmVseQogUGV0ZXIgTG92ZXR0CiBDaGFsbWVyIExvd2UKIEphc29uIExvd2UKLU1hcnRpbiB2b24gTMO2d2lzCiBUb255IExvd25kcwogUmF5IExveXphZ2EKIEthbmctSGFvIChLZW5ueSkgTHUKIEx1a2FzIEx1ZWcKIExvcmVuIEx1a2UKIEZyZWRyaWsgTHVuZGgKK01pa2UgTHVuZHkKIFpob25neXVlIEx1bwogTWFyayBMdXR6CiBUYXJhcyBMeWFwdW4KQEAgLTExNDMsOSArMTE1NywxMSBAQAogR2VvZmYgUGhpbGJyaWNrCiBHYXZyaWUgUGhpbGlwc29uCiBBZHJpYW4gUGhpbGxpcHMKK0R1c3R5IFBoaWxsaXBzCiBDaHJpc3RvcGhlciBKLiBQaG9lbml4CiBKYW1lcyBQaWNrZXJpbmcKIE5lYWxlIFBpY2tldHQKK1N0ZXZlIFBpZXJjeQogSmltIFN0LiBQaWVycmUKIERhbiBQaWVyc29uCiBNYXJ0aWpuIFBpZXRlcnMKQEAgLTExOTcsNiArMTIxMyw3IEBACiBCYXlhcmQgUmFuZGVsCiBWYXJwdSBSYW50YWxhCiBCcm9kaWUgUmFvCitSw6ltaSBSYW1waW4KIFNlbmtvIFJhc2ljCiBBbnR0aSBSYXNpbmVuCiBOaWtvbGF1cyBSYXRoCkBAIC0xMjQ3LDYgKzEyNjQsNyBAQAogS2V2aW4gUm9kZ2VycwogU2VhbiBSb2RtYW4KIEdpYW1wYW9sbyBSb2RvbGEKK01hdXJvIFMuIE0uIFJvZHJpZ3VlcwogRWxzb24gUm9kcmlndWV6CiBBZGkgUm9pYmFuCiBMdWlzIFJvamFzCkBAIC0xMjg5LDYgKzEzMDcsNyBAQAogQ29uc3RhbnRpbmEgUy4KIFBhdHJpY2sgU2FiaW4KIFPDqWJhc3RpZW4gU2FibMOpCitBbWl0IFNhaGEKIFN1bWFuIFNhaGEKIEhhamltZSBTYWl0b3UKIEdlb3JnZSBTYWtraXMKQEAgLTEzMjIsNiArMTM0MSw3IEBACiBQZXRlciBTY2huZWlkZXItS2FtcAogQXJ2aW4gU2NobmVsbAogTm9mYXIgU2NobmlkZXIKK0VkIFNjaG91dGVuCiBTY290dCBTY2hyYW0KIFJvYmluIFNjaHJlaWJlcgogQ2hhZCBKLiBTY2hyb2VkZXIKQEAgLTEzOTYsNiArMTQxNiw3IEBACiBSb3kgU21pdGgKIFJ5YW4gU21pdGgtUm9iZXJ0cwogUmFmYWwgU21vdHJ6eWsKK0pvc2ggU25pZGVyCiBFcmljIFNub3cKIERpcmsgU29lZGUKIE5pciBTb2ZmZXIKQEAgLTE0MjMsMTEgKzE0NDQsMTMgQEAKIE1hcmVrIFN0ZXBuaW93c2tpCiBCYXJ1Y2ggU3RlcmluCiBDaHJpcyBTdGVybgorRWxpIFN0ZXZlbnMKIEFsZXggU3Rld2FydAogVmljdG9yIFN0aW5uZXIKIFJpY2hhcmQgU3RvYWtsZXkKIFBldGVyIFN0b2VocgogQ2FzcGVyIFN0b2VsCitEYW5pZWwgU3Rva2VzCiBNaWNoYWVsIFN0b25lCiBTZXJoaXkgU3RvcmNoYWthCiBLZW4gU3RveApAQCAtMTQ1Miw2ICsxNDc1LDcgQEAKIEpvaG4gU3pha21laXN0ZXIKIEFtaXIgU3pla2VseQogTWFjaWVqIFN6dWxpaworSm9lbCBUYWRkZWkKIEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzCiBIaWRlYWtpIFRha2FoYXNoaQogVGFrYXNlIEFyaWhpcm8KQEAgLTE0NjMsOCArMTQ4NywxMCBAQAogQ2hyaXN0aWFuIFRhbnplcgogU3RldmVuIFRhc2NodWsKIEFteSBUYXlsb3IKK0p1bGlhbiBUYXlsb3IKIE1vbnR5IFRheWxvcgogQW5hdG9seSBUZWNodG9uaWsKK01hcnRpbiBUZWljaG1hbm4KIEd1c3Rhdm8gVGVtcGxlCiBNaWtoYWlsIFRlcmVraG92CiBWaWN0b3IgVGVycsOzbgpAQCAtMTY0Niw2ICsxNjcyLDcgQEAKIEFsYWtzaGVuZHJhIFlhZGF2CiBIaXJva2F6dSBZYW1hbW90bwogS2EtUGluZyBZZWUKK0NoaSBIc3VhbiBZZW4KIEphc29uIFllbwogRXVuZ0p1biBZaQogQm9iIFlvZGxvd3NraQpAQCAtMTY3NCw0ICsxNzAxLDMgQEAKIERvdWcgWm9uZ2tlcgogUGV0ZXIgw4VzdHJhbmQKIGV2aWx6ZXJvCi1DaGkgSHN1YW4gWWVuCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggODJjZjhiMC4uMmIwMzk3YiAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtMiwyMCArMiw1NyBAQAogUHl0aG9uIE5ld3MKICsrKysrKysrKysrCiAKLVdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDE/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYmV0YSAzCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIAotUmVsZWFzZSBkYXRlOiBUQkEKKypSZWxlYXNlIGRhdGU6IFhYWFgtWFgtWFgqCiAKIENvcmUgYW5kIEJ1aWx0aW5zCiAtLS0tLS0tLS0tLS0tLS0tLQogCitMaWJyYXJ5CistLS0tLS0tCisKKy0gSXNzdWUgIzI0NDUyOiBNYWtlIHdlYmJyb3dzZXIgc3VwcG9ydCBDaHJvbWUgb24gTWFjIE9TIFguCisKKy0gSXNzdWUgIzIwNzY2OiBGaXggcmVmZXJlbmNlcyBsZWFrZWQgYnkgcGRiIGluIHRoZSBoYW5kbGluZyBvZiBTSUdJTlQKKyAgaGFuZGxlcnMuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODIwODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgdG8gdXNlIFNRTGl0ZSAzLjE0LjIuMC4KKworLSBJc3N1ZSAjMjgyNDg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkIHRvIHVzZSBPcGVuU1NMIDEuMC4yai4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI4NDA5OiByZWdydGVzdDogZml4IHRoZSBwYXJzZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTEwLTEwKgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjgxODM6IE9wdGltaXplIGFuZCBjbGVhbnVwIGRpY3QgaXRlcmF0aW9uLgorCistIElzc3VlICMyNjA4MTogQWRkZWQgQyBpbXBsZW1lbnRhdGlvbiBvZiBhc3luY2lvLkZ1dHVyZS4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgWXVyeSBTZWxpdmFub3YuCisKIC0gSXNzdWUgIzI4Mzc5OiBBZGRlZCBzYW5pdHkgY2hlY2tzIGFuZCB0ZXN0cyBmb3IgUHlVbmljb2RlX0NvcHlDaGFyYWN0ZXJzKCkuCiAgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCiAtIElzc3VlICMyODM3NjogVGhlIHR5cGUgb2YgbG9uZyByYW5nZSBpdGVyYXRvciBpcyBub3cgcmVnaXN0ZXJlZCBhcyBJdGVyYXRvci4KICAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCiAKKy0gSXNzdWUgIzI4Mzc2OiBDcmVhdGluZyBpbnN0YW5jZXMgb2YgcmFuZ2VfaXRlcmF0b3IgYnkgY2FsbGluZyByYW5nZV9pdGVyYXRvcgorICB0eXBlIG5vdyBpcyBkZXByZWNhdGVkLiAgUGF0Y2ggYnkgT3JlbiBNaWxtYW4uCisKIC0gSXNzdWUgIzI4Mzc2OiBUaGUgY29uc3RydWN0b3Igb2YgcmFuZ2VfaXRlcmF0b3Igbm93IGNoZWNrcyB0aGF0IHN0ZXAgaXMgbm90IDAuCiAgIFBhdGNoIGJ5IE9yZW4gTWlsbWFuLgogCkBAIC0yOCw2ICs2NSw5IEBACiAtIElzc3VlICMyNDA5ODogRml4ZWQgcG9zc2libGUgY3Jhc2ggd2hlbiBBU1QgaXMgY2hhbmdlZCBpbiBwcm9jZXNzIG9mCiAgIGNvbXBpbGluZyBpdC4KIAorLSBJc3N1ZSAjMjgyMDE6IERpY3QgcmVkdWNlcyBwb3NzaWJpbGl0eSBvZiAybmQgY29uZmxpY3QgaW4gaGFzaCB0YWJsZSB3aGVuCisgIGhhc2hlcyBoYXZlIHNhbWUgbG93ZXIgYml0cy4KKwogLSBJc3N1ZSAjMjgzNTA6IFN0cmluZyBjb25zdGFudHMgd2l0aCBudWxsIGNoYXJhY3RlciBubyBsb25nZXIgaW50ZXJuZWQuCiAKIC0gSXNzdWUgIzI2NjE3OiBGaXggY3Jhc2ggd2hlbiBHQyBydW5zIGR1cmluZyB3ZWFrcmVmIGNhbGxiYWNrcy4KQEAgLTM3LDk1ICs3Nyw4MSBAQAogLSBJc3N1ZSAjMjE1Nzg6IEZpeGVkIG1pc2xlYWRpbmcgZXJyb3IgbWVzc2FnZSB3aGVuIEltcG9ydEVycm9yIGNhbGxlZCB3aXRoCiAgIGludmFsaWQga2V5d29yZCBhcmdzLgogCi0tIElzc3VlICMyODIwMzogRml4IGluY29ycmVjdCB0eXBlIGluIGVycm9yIG1lc3NhZ2UgZnJvbQotICBgYGNvbXBsZXgoMS4wLCB7MjozfSlgYC4gUGF0Y2ggYnkgU291bXlhIFNoYXJtYS4KKy0gSXNzdWUgIzI4MjAzOiBGaXggaW5jb3JyZWN0IHR5cGUgaW4gY29tcGxleCgxLjAsIHsyOjN9KSBlcnJvciBtZXNzYWdlLgorICBQYXRjaCBieSBTb3VteWEgU2hhcm1hLgorCistIElzc3VlICMyODA4NjogU2luZ2xlIHZhci1wb3NpdGlvbmFsIGFyZ3VtZW50IG9mIHR1cGxlIHN1YnR5cGUgd2FzIHBhc3NlZAorICB1bnNjYXRoZWQgdG8gdGhlIEMtZGVmaW5lZCBmdW5jdGlvbi4gIE5vdyBpdCBpcyBjb252ZXJ0ZWQgdG8gZXhhY3QgdHVwbGUuCisKKy0gSXNzdWUgIzI4MjE0OiBOb3cgX19zZXRfbmFtZV9fIGlzIGxvb2tlZCB1cCBvbiB0aGUgY2xhc3MgaW5zdGVhZCBvZiB0aGUKKyAgaW5zdGFuY2UuCiAKIC0gSXNzdWUgIzI3OTU1OiBGYWxsYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSBkZXZpY2Ugd2hlbiB0aGUgZ2V0cmFuZG9tKCkKICAgc3lzY2FsbCBmYWlscyB3aXRoIEVQRVJNLCBmb3IgZXhhbXBsZSB3aGVuIGJsb2NrZWQgYnkgU0VDQ09NUC4KIAorLSBJc3N1ZSAjMjgxOTI6IERvbid0IGltcG9ydCByZWFkbGluZSBpbiBpc29sYXRlZCBtb2RlLgorCistIFVwZ3JhZGUgaW50ZXJuYWwgdW5pY29kZSBkYXRhYmFzZXMgdG8gVW5pY29kZSB2ZXJzaW9uIDkuMC4wLgorCiAtIElzc3VlICMyODEzMTogRml4IGEgcmVncmVzc2lvbiBpbiB6aXBpbXBvcnQncyBjb21waWxlX3NvdXJjZSgpLiAgemlwaW1wb3J0CiAgIHNob3VsZCB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9uIGxldmVsIGFzIHRoZSBpbnRlcnByZXRlci4KIAotLSBJc3N1ZSAjMjUyMjE6IEZpeCBjb3JydXB0ZWQgcmVzdWx0IGZyb20gUHlMb25nX0Zyb21Mb25nKDApIHdoZW4KLSAgUHl0aG9uIGlzIGNvbXBpbGVkIHdpdGggTlNNQUxMUE9TSU5UUyA9IDAuCistIElzc3VlICMyODEyNjogUmVwbGFjZSBQeV9NRU1DUFkgd2l0aCBtZW1jcHkoKS4gVmlzdWFsIFN0dWRpbyBjYW4gcHJvcGVybHkKKyAgb3B0aW1pemUgbWVtY3B5KCkuCiAKLS0gSXNzdWUgIzI1NzU4OiBQcmV2ZW50cyB6aXBpbXBvcnQgZnJvbSB1bm5lY2Vzc2FyaWx5IGVuY29kaW5nIGEgZmlsZW5hbWUKLSAgKHBhdGNoIGJ5IEVyeWsgU3VuKQorLSBJc3N1ZSAjMjgxMjA6IEZpeCBkaWN0LnBvcCgpIGZvciBzcGxpdHRlZCBkaWN0aW9uYXJ5IHdoZW4gdHJ5aW5nIHRvIHJlbW92ZSBhCisgICJwZW5kaW5nIGtleSIgKE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUpLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KIAotLSBJc3N1ZSAjMjgxODk6IGRpY3RpdGVtc19jb250YWlucyBubyBsb25nZXIgc3dhbGxvd3MgY29tcGFyZSBlcnJvcnMuCi0gIChQYXRjaCBieSBYaWFuZyBaaGFuZykKLQotLSBJc3N1ZSAjMjc4MTI6IFByb3Blcmx5IGNsZWFyIG91dCBhIGdlbmVyYXRvcidzIGZyYW1lJ3MgYmFja3JlZmVyZW5jZSB0byB0aGUKLSAgZ2VuZXJhdG9yIHRvIHByZXZlbnQgY3Jhc2hlcyBpbiBmcmFtZS5jbGVhcigpLgotCi0tIElzc3VlICMyNzgxMTogRml4IGEgY3Jhc2ggd2hlbiBhIGNvcm91dGluZSB0aGF0IGhhcyBub3QgYmVlbiBhd2FpdGVkIGlzCi0gIGZpbmFsaXplZCB3aXRoIHdhcm5pbmdzLWFzLWVycm9ycyBlbmFibGVkLgotCi0tIElzc3VlICMyNzU4NzogRml4IGFub3RoZXIgaXNzdWUgZm91bmQgYnkgUFZTLVN0dWRpbzogTnVsbCBwb2ludGVyIGNoZWNrCi0gIGFmdGVyIHVzZSBvZiAnZGVmJyBpbiBfUHlTdGF0ZV9BZGRNb2R1bGUoKS4KLSAgSW5pdGlhbCBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgotCi0tIElzc3VlICMyNjAyMDogc2V0IGxpdGVyYWwgZXZhbHVhdGlvbiBvcmRlciBkaWQgbm90IG1hdGNoIGRvY3VtZW50ZWQgYmVoYXZpb3VyLgotCi0tIElzc3VlICMyNzc4MjogTXVsdGktcGhhc2UgZXh0ZW5zaW9uIG1vZHVsZSBpbXBvcnQgbm93IGNvcnJlY3RseSBhbGxvd3MgdGhlCi0gIGBgbV9tZXRob2RzYGAgZmllbGQgdG8gYmUgdXNlZCB0byBhZGQgbW9kdWxlIGxldmVsIGZ1bmN0aW9ucyB0byBpbnN0YW5jZXMKLSAgb2Ygbm9uLW1vZHVsZSB0eXBlcyByZXR1cm5lZCBmcm9tIGBgUHlfY3JlYXRlX21vZGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc5MzY6IFRoZSByb3VuZCgpIGZ1bmN0aW9uIGFjY2VwdGVkIGEgc2Vjb25kIE5vbmUgYXJndW1lbnQKLSAgZm9yIHNvbWUgdHlwZXMgYnV0IG5vdCBmb3Igb3RoZXJzLiAgRml4ZWQgdGhlIGluY29uc2lzdGVuY3kgYnkKLSAgYWNjZXB0aW5nIE5vbmUgZm9yIGFsbCBudW1lcmljIHR5cGVzLgotCi0tIElzc3VlICMyNzQ4NzogV2FybiBpZiBhIHN1Ym1vZHVsZSBhcmd1bWVudCB0byAicHl0aG9uIC1tIiBvcgotICBydW5weS5ydW5fbW9kdWxlKCkgaXMgZm91bmQgaW4gc3lzLm1vZHVsZXMgYWZ0ZXIgcGFyZW50IHBhY2thZ2VzIGFyZQotICBpbXBvcnRlZCwgYnV0IGJlZm9yZSB0aGUgc3VibW9kdWxlIGlzIGV4ZWN1dGVkLgotCi0tIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgotICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQotICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc0MTk6IFN0YW5kYXJkIF9faW1wb3J0X18oKSBubyBsb25nZXIgbG9vayB1cCAiX19pbXBvcnRfXyIgaW4gZ2xvYmFscwotICBvciBidWlsdGlucyBmb3IgaW1wb3J0aW5nIHN1Ym1vZHVsZXMgb3IgImZyb20gaW1wb3J0Ii4gIEZpeGVkIGhhbmRsaW5nIGFuCi0gIGVycm9yIG9mIG5vbi1zdHJpbmcgcGFja2FnZSBuYW1lLgotCi0tIElzc3VlICMyNzA4MzogUmVzcGVjdCB0aGUgUFlUSE9OQ0FTRU9LIGVudmlyb25tZW50IHZhcmlhYmxlIHVuZGVyIFdpbmRvd3MuCi0KLS0gSXNzdWUgIzI3NTE0OiBNYWtlIGhhdmluZyB0b28gbWFueSBzdGF0aWNhbGx5IG5lc3RlZCBibG9ja3MgYSBTeW50YXhFcnJvcgotICBpbnN0ZWFkIG9mIFN5c3RlbUVycm9yLgotCi0tIElzc3VlICMyNzQ3MzogRml4ZWQgcG9zc2libGUgaW50ZWdlciBvdmVyZmxvdyBpbiBieXRlcyBhbmQgYnl0ZWFycmF5Ci0gIGNvbmNhdGVuYXRpb25zLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI3NTA3OiBBZGQgaW50ZWdlciBvdmVyZmxvdyBjaGVjayBpbiBieXRlYXJyYXkuZXh0ZW5kKCkuICBQYXRjaCBieQotICBYaWFuZyBaaGFuZy4KLQotLSBJc3N1ZSAjMjc1ODE6IERvbid0IHJlbHkgb24gd3JhcHBpbmcgZm9yIG92ZXJmbG93IGNoZWNrIGluCi0gIFB5U2VxdWVuY2VfVHVwbGUoKS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgotCi0tIElzc3VlICMyNzQ0MzogX19sZW5ndGhfaGludF9fKCkgb2YgYnl0ZWFycmF5IGl0ZXJhdG9ycyBubyBsb25nZXIgcmV0dXJuIGEKLSAgbmVnYXRpdmUgaW50ZWdlciBmb3IgYSByZXNpemVkIGJ5dGVhcnJheS4KKy0gSXNzdWUgIzI2MTgyOiBSYWlzZSBEZXByZWNhdGlvbldhcm5pbmcgd2hlbiBhc3luYyBhbmQgYXdhaXQga2V5d29yZHMgYXJlCisgIHVzZWQgYXMgdmFyaWFibGUvYXR0cmlidXRlL2NsYXNzL2Z1bmN0aW9uIG5hbWUuCiAKIExpYnJhcnkKIC0tLS0tLS0KIAotLSBJc3N1ZSAjMjQ0NTI6IE1ha2Ugd2ViYnJvd3NlciBzdXBwb3J0IENocm9tZSBvbiBNYWMgT1MgWC4KKy0gSXNzdWUgIzI3OTk4OiBGaXhlZCBieXRlcyBwYXRoIHN1cHBvcnQgaW4gb3Muc2NhbmRpcigpIG9uIFdpbmRvd3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgogCi0tIElzc3VlICMyMDc2NjogRml4IHJlZmVyZW5jZXMgbGVha2VkIGJ5IHBkYiBpbiB0aGUgaGFuZGxpbmcgb2YgU0lHSU5UCi0gIGhhbmRsZXJzLgorLSBJc3N1ZSAjMjgzMTc6IFRoZSBkaXNhc3NlbWJsZXIgbm93IGRlY29kZXMgRk9STUFUX1ZBTFVFIGFyZ3VtZW50LgogCiAtIElzc3VlICMyNjI5MzogRml4ZWQgd3JpdGluZyBaSVAgZmlsZXMgdGhhdCBzdGFydHMgbm90IGZyb20gdGhlIHN0YXJ0IG9mIHRoZQogICBmaWxlLiAgT2Zmc2V0cyBpbiBaSVAgZmlsZSBub3cgYXJlIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgYXJjaGl2ZSBpbgogICBjb25mb3JtaW5nIHRvIHRoZSBzcGVjaWZpY2F0aW9uLgogCistIElzc3VlICMyODM4MDogdW5pdHRlc3QubW9jayBNb2NrIGF1dG9zcGVjIGZ1bmN0aW9ucyBub3cgcHJvcGVybHkgc3VwcG9ydAorICBhc3NlcnRfY2FsbGVkLCBhc3NlcnRfbm90X2NhbGxlZCwgYW5kIGFzc2VydF9jYWxsZWRfb25jZS4KKworLSBJc3N1ZSAjMjcxODEgcmVtb3ZlIHN0YXRpc3RpY3MuZ2VvbWV0cmljX21lYW4gYW5kIGRlZmVyIHVudGlsIDMuNy4KKworLSBJc3N1ZSAjMjgyMjk6IGx6bWEgbW9kdWxlIG5vdyBzdXBwb3J0cyBwYXRobGliLgorCiAtIElzc3VlICMyODMyMTogRml4ZWQgd3JpdGluZyBub24tQk1QIGNoYXJhY3RlcnMgd2l0aCBiaW5hcnkgZm9ybWF0IGluIHBsaXN0bGliLgogCistIElzc3VlICMyODIyNTogYnoyIG1vZHVsZSBub3cgc3VwcG9ydHMgcGF0aGxpYi4gIEluaXRpYWwgcGF0Y2ggYnkgRXRoYW4gRnVybWFuLgorCistIElzc3VlICMyODIyNzogZ3ppcCBub3cgc3VwcG9ydHMgcGF0aGxpYi4gIFBhdGNoIGJ5IEV0aGFuIEZ1cm1hbi4KKworLSBJc3N1ZSAjMjczNTg6IE9wdGltaXplZCBtZXJnaW5nIHZhci1rZXl3b3JkIGFyZ3VtZW50cyBhbmQgaW1wcm92ZWQgZXJyb3IKKyAgbWVzc2FnZSB3aGVuIHBhc3MgYSBub24tbWFwcGluZyBhcyBhIHZhci1rZXl3b3JkIGFyZ3VtZW50LgorCistIElzc3VlICMyODI1NzogSW1wcm92ZWQgZXJyb3IgbWVzc2FnZSB3aGVuIHBhc3MgYSBub24taXRlcmFibGUgYXMKKyAgYSB2YXItcG9zaXRpb25hbCBhcmd1bWVudC4gIEFkZGVkIG9wY29kZSBCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLgorCiAtIElzc3VlICMyODMyMjogRml4ZWQgcG9zc2libGUgY3Jhc2hlcyB3aGVuIHVucGlja2xlIGl0ZXJ0b29scyBvYmplY3RzIGZyb20KICAgaW5jb3JyZWN0IHBpY2tsZSBkYXRhLiAgQmFzZWQgb24gcGF0Y2ggYnkgSm9obiBMZWl0Y2guCiAKLS0gRml4IHBvc3NpYmxlIGludGVnZXIgb3ZlcmZsb3dzIGFuZCBjcmFzaGVzIGluIHRoZSBtbWFwIG1vZHVsZSB3aXRoIHVudXN1YWwKLSAgdXNhZ2UgcGF0dGVybnMuCistIElzc3VlICMyODIyODogaW1naGRyIG5vdyBzdXBwb3J0cyBwYXRobGliLgogCi0tIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQotICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCistIElzc3VlICMyODIyNjogY29tcGlsZWFsbCBub3cgc3VwcG9ydHMgcGF0aGxpYi4KKworLSBJc3N1ZSAjMjgzMTQ6IEZpeCBmdW5jdGlvbiBkZWNsYXJhdGlvbiAoQyBmbGFncykgZm9yIHRoZSBnZXRpdGVyYXRvcigpIG1ldGhvZAorICBvZiB4bWwuZXRyZWUuRWxlbWVudFRyZWUuRWxlbWVudC4KKworLSBJc3N1ZSAjMjgxNDg6IFN0b3AgdXNpbmcgbG9jYWx0aW1lKCkgYW5kIGdtdGltZSgpIGluIHRoZSB0aW1lCisgIG1vZHVsZS4KKworICBJbnRyb2R1Y2VkIHBsYXRmb3JtIGluZGVwZW5kZW50IF9QeVRpbWVfbG9jYWx0aW1lIEFQSSB0aGF0IGlzCisgIHNpbWlsYXIgdG8gUE9TSVggbG9jYWx0aW1lX3IsIGJ1dCBhdmFpbGFibGUgb24gYWxsIHBsYXRmb3Jtcy4gIFBhdGNoCisgIGJ5IEVkIFNjaG91dGVuLgogCiAtIElzc3VlICMyODI1MzogRml4ZWQgY2FsZW5kYXIgZnVuY3Rpb25zIGZvciBleHRyZW1lIG1vbnRoczogMDAwMS0wMQogICBhbmQgOTk5OS0xMi4KQEAgLTE0MSwxMCArMTY3LDE1IEBACiAtIElzc3VlICMyNzg5NzogRml4ZWQgcG9zc2libGUgY3Jhc2ggaW4gc3FsaXRlMy5Db25uZWN0aW9uLmNyZWF0ZV9jb2xsYXRpb24oKQogICBpZiBwYXNzIGludmFsaWQgc3RyaW5nLWxpa2Ugb2JqZWN0IGFzIGEgbmFtZS4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgogCistIElzc3VlICMxODg0NDogcmFuZG9tLmNob2ljZXMoKSBub3cgaGFzIGsgYXMgYSBrZXl3b3JkLW9ubHkgYXJndW1lbnQKKyAgdG8gaW1wcm92ZSB0aGUgcmVhZGFiaWxpdHkgb2YgY29tbW9uIGNhc2VzIGFuZCB0aGUgY29tZSBpbnRvIGxpbmUKKyAgd2l0aCB0aGUgc2lnbmF0dXJlIHVzZWQgaW4gb3RoZXIgbGFuZ3VhZ2VzLgorCiAtIElzc3VlICMxODg5MzogRml4IGludmFsaWQgZXhjZXB0aW9uIGhhbmRsaW5nIGluIExpYi9jdHlwZXMvbWFjaG9saWIvZHlsZC5weS4KICAgUGF0Y2ggYnkgTWFkaXNvbiBNYXkuCiAKIC0gSXNzdWUgIzI3NjExOiBGaXhlZCBzdXBwb3J0IG9mIGRlZmF1bHQgcm9vdCB3aW5kb3cgaW4gdGhlIHRraW50ZXIudGl4IG1vZHVsZS4KKyAgQWRkZWQgdGhlIG1hc3RlciBwYXJhbWV0ZXIgaW4gdGhlIERpc3BsYXlTdHlsZSBjb25zdHJ1Y3Rvci4KIAogLSBJc3N1ZSAjMjczNDg6IEluIHRoZSB0cmFjZWJhY2sgbW9kdWxlLCByZXN0b3JlIHRoZSBmb3JtYXR0aW5nIG9mIGV4Y2VwdGlvbgogICBtZXNzYWdlcyBsaWtlICJFeGNlcHRpb246IE5vbmUiLiAgVGhpcyBmaXhlcyBhIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbgpAQCAtMTUyLDYgKzE4MywxNSBAQAogCiAtIElzc3VlICMyNTY1MTogQWxsb3cgZmFsc3kgdmFsdWVzIHRvIGJlIHVzZWQgZm9yIG1zZyBwYXJhbWV0ZXIgb2Ygc3ViVGVzdCgpLgogCistIElzc3VlICMyNzc3ODogRml4IGEgbWVtb3J5IGxlYWsgaW4gb3MuZ2V0cmFuZG9tKCkgd2hlbiB0aGUgZ2V0cmFuZG9tKCkgaXMKKyAgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgYW5kIGEgc2lnbmFsIGhhbmRsZXIgcmFpc2VzIGEgUHl0aG9uIGV4Y2VwdGlvbi4KKworLSBJc3N1ZSAjMjgyMDA6IEZpeCBtZW1vcnkgbGVhayBvbiBXaW5kb3dzIGluIHRoZSBvcyBtb2R1bGUgKGZpeAorICBwYXRoX2NvbnZlcnRlcigpIGZ1bmN0aW9uKS4KKworLSBJc3N1ZSAjMjU0MDA6IFJvYm90RmlsZVBhcnNlciBub3cgY29ycmVjdGx5IHJldHVybnMgZGVmYXVsdCB2YWx1ZXMgZm9yCisgIGNyYXdsX2RlbGF5IGFuZCByZXF1ZXN0X3JhdGUuICBJbml0aWFsIHBhdGNoIGJ5IFBldGVyIFdpcnR6LgorCiAtIElzc3VlICMyNzkzMjogUHJldmVudCBtZW1vcnkgbGVhayBpbiB3aW4zMl92ZXIoKS4KIAogLSBGaXggVW5ib3VuZExvY2FsRXJyb3IgaW4gc29ja2V0Ll9zZW5kZmlsZV91c2Vfc2VuZGZpbGUuCkBAIC0xNTksNiArMTk5LDEwIEBACiAtIElzc3VlICMyODA3NTogQ2hlY2sgZm9yIEVSUk9SX0FDQ0VTU19ERU5JRUQgaW4gV2luZG93cyBpbXBsZW1lbnRhdGlvbiBvZgogICBvcy5zdGF0KCkuICBQYXRjaCBieSBFcnlrIFN1bi4KIAorLSBJc3N1ZSAjMjI0OTM6IFdhcm5pbmcgbWVzc2FnZSBlbWl0dGVkIGJ5IHVzaW5nIGlubGluZSBmbGFncyBpbiB0aGUgbWlkZGxlIG9mCisgIHJlZ3VsYXIgZXhwcmVzc2lvbiBub3cgY29udGFpbnMgYSAodHJ1bmNhdGVkKSByZWdleCBwYXR0ZXJuLgorICBQYXRjaCBieSBUaW0gR3JhaGFtLgorCiAtIElzc3VlICMyNTI3MDogUHJldmVudCBjb2RlY3MuZXNjYXBlX2VuY29kZSgpIGZyb20gcmFpc2luZyBTeXN0ZW1FcnJvciB3aGVuCiAgIGFuIGVtcHR5IGJ5dGVzdHJpbmcgaXMgcGFzc2VkLgogCkBAIC0xNjcsMjAgKzIxMSwzMDQgQEAKIC0gSXNzdWUgIzI1ODk1OiBFbmFibGUgV2ViU29ja2V0IFVSTCBzY2hlbWVzIGluIHVybGxpYi5wYXJzZS51cmxqb2luLgogICBQYXRjaCBieSBHZXJnZWx5IEltcmVoIGFuZCBNYXJrdXMgSG9sdGVybWFubi4KIAorLSBJc3N1ZSAjMjgxMTQ6IEZpeCBhIGNyYXNoIGluIHBhcnNlX2Vudmxpc3QoKSB3aGVuIGVudiBjb250YWlucyBieXRlIHN0cmluZ3MuCisgIFBhdGNoIGJ5IEVyeWsgU3VuLgorCiAtIElzc3VlICMyNzU5OTogRml4ZWQgYnVmZmVyIG92ZXJydW4gaW4gYmluYXNjaWkuYjJhX3FwKCkgYW5kIGJpbmFzY2lpLmEyYl9xcCgpLgogCi0tIElzc3VlICMxOTAwMzptIGVtYWlsLmdlbmVyYXRvciBub3cgcmVwbGFjZXMgb25seSBcciBhbmQvb3IgXG4gbGluZQotICBlbmRpbmdzLCBwZXIgdGhlIFJGQywgaW5zdGVhZCBvZiBhbGwgdW5pY29kZSBsaW5lIGVuZGluZ3MuCistIElzc3VlICMyNzkwNjogRml4IHNvY2tldCBhY2NlcHQgZXhoYXVzdGlvbiBkdXJpbmcgaGlnaCBUQ1AgdHJhZmZpYy4KKyAgUGF0Y2ggYnkgS2V2aW4gQ29ud2F5LgorCistIElzc3VlICMyODE3NDogSGFuZGxlIHdoZW4gU09fUkVVU0VQT1JUIGlzbid0IHByb3Blcmx5IHN1cHBvcnRlZC4KKyAgUGF0Y2ggYnkgU2V0aCBNaWNoYWVsIExhcnNvbi4KKworLSBJc3N1ZSAjMjY2NTQ6IEluc3BlY3QgZnVuY3Rvb2xzLnBhcnRpYWwgaW4gYXN5bmNpby5IYW5kbGUuX19yZXByX18uCisgIFBhdGNoIGJ5IGljZWJveS4KKworLSBJc3N1ZSAjMjY5MDk6IEZpeCBzbG93IHBpcGVzIElPIGluIGFzeW5jaW8uCisgIFBhdGNoIGJ5IElOQURBIE5hb2tpLgorCistIElzc3VlICMyODE3NjogRml4IGNhbGxiYWNrcyByYWNlIGluIGFzeW5jaW8uU2VsZWN0b3JMb29wLnNvY2tfY29ubmVjdC4KKworLSBJc3N1ZSAjMjc3NTk6IEZpeCBzZWxlY3RvcnMgaW5jb3JyZWN0bHkgcmV0YWluIGludmFsaWQgZmlsZSBkZXNjcmlwdG9ycy4KKyAgUGF0Y2ggYnkgTWFyayBXaWxsaWFtcy4KKworLSBJc3N1ZSAjMjgzNjg6IFJlZnVzZSBtb25pdG9yaW5nIHByb2Nlc3NlcyBpZiB0aGUgY2hpbGQgd2F0Y2hlciBoYXMgbm8KKyAgbG9vcCBhdHRhY2hlZC4KKyAgUGF0Y2ggYnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI4MzY5OiBSYWlzZSBSdW50aW1lRXJyb3Igd2hlbiB0cmFuc3BvcnQncyBGRCBpcyB1c2VkIHdpdGgKKyAgYWRkX3JlYWRlciwgYWRkX3dyaXRlciwgZXRjLgorCistIElzc3VlICMyODM3MDogU3BlZWR1cCBhc3luY2lvLlN0cmVhbVJlYWRlci5yZWFkZXhhY3RseS4KKyAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgorCistIElzc3VlICMyODM3MTogRGVwcmVjYXRlIHBhc3NpbmcgYXN5bmNpby5IYW5kbGVzIHRvIHJ1bl9pbl9leGVjdXRvci4KKworLSBJc3N1ZSAjMjgzNzI6IEZpeCBhc3luY2lvIHRvIHN1cHBvcnQgZm9ybWF0dGluZyBvZiBub24tcHl0aG9uIGNvcm91dGluZXMuCisKKy0gSXNzdWUgIzI4Mzk5OiBSZW1vdmUgVU5JWCBzb2NrZXQgZnJvbSBGUyBiZWZvcmUgYmluZGluZy4KKyAgUGF0Y2ggYnkg0JrQvtGA0LXQvdCx0LXRgNCzINCc0LDRgNC6LgorCistIElzc3VlICMyNzk3MjogUHJvaGliaXQgVGFza3MgdG8gYXdhaXQgb24gdGhlbXNlbHZlcy4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyODQwMjogQWRkcyBzaWduZWQgY2F0YWxvZyBmaWxlcyBmb3Igc3RkbGliIG9uIFdpbmRvd3MuCisKKy0gSXNzdWUgIzI4MzMzOiBFbmFibGVzIFVuaWNvZGUgZm9yIHBzMS9wczIgYW5kIGlucHV0KCkgcHJvbXB0cy4gKFBhdGNoIGJ5CisgIEVyeWsgU3VuKQorCistIElzc3VlICMyODI1MTogSW1wcm92ZW1lbnRzIHRvIGhlbHAgbWFudWFscyBvbiBXaW5kb3dzLgorCistIElzc3VlICMyODExMDogbGF1bmNoZXIubXNpIGhhcyBkaWZmZXJlbnQgcHJvZHVjdCBjb2RlcyBiZXR3ZWVuIDMyLWJpdCBhbmQKKyAgNjQtYml0CisKKy0gSXNzdWUgIzI4MTYxOiBPcGVuaW5nIENPTiBmb3Igd3JpdGUgYWNjZXNzIGZhaWxzCisKKy0gSXNzdWUgIzI4MTYyOiBXaW5kb3dzQ29uc29sZUlPIHJlYWRhbGwoKSBmYWlscyBpZiBmaXJzdCBsaW5lIHN0YXJ0cyB3aXRoCisgIEN0cmwrWgorCistIElzc3VlICMyODE2MzogV2luZG93c0NvbnNvbGVJTyBmaWxlbm8oKSBwYXNzZXMgd3JvbmcgZmxhZ3MgdG8KKyAgX29wZW5fb3NmaGFuZGxlCisKKy0gSXNzdWUgIzI4MTY0OiBfUHlJT19nZXRfY29uc29sZV90eXBlIGZhaWxzIGZvciB2YXJpb3VzIHBhdGhzCisKKy0gSXNzdWUgIzI4MTM3OiBSZW5hbWVzIFdpbmRvd3MgcGF0aCBmaWxlIHRvIC5fcHRoCisKKy0gSXNzdWUgIzI4MTM4OiBXaW5kb3dzIC5fcHRoIGZpbGUgc2hvdWxkIGFsbG93IGltcG9ydCBzaXRlCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyODI1ODogRml4ZWQgYnVpbGQgd2l0aCBFc3RvbmlhbiBsb2NhbGUgKHB5dGhvbi1jb25maWcgYW5kIGRpc3RjbGVhbgorICB0YXJnZXRzIGluIE1ha2VmaWxlKS4gIFBhdGNoIGJ5IEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzLgorCistIElzc3VlICMyNjY2MTogc2V0dXAucHkgbm93IGRldGVjdHMgc3lzdGVtIGxpYmZmaSB3aXRoIG11bHRpYXJjaCB3cmFwcGVyLgorCistIElzc3VlICMxNTgxOTogUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIHNlYXJjaCBkaXJlY3Rvcnkgb3B0aW9uIGZvciBidWlsZGluZworICBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KKworVGVzdHMKKy0tLS0tCisKKy0gSXNzdWUgIzI4MjE3OiBBZGRzIF90ZXN0Y29uc29sZSBtb2R1bGUgdG8gdGVzdCBjb25zb2xlIGlucHV0LgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGJldGEgMQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisKKypSZWxlYXNlIGRhdGU6IDIwMTYtMDktMTIqCisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCistIElzc3VlICMyMzcyMjogVGhlIF9fY2xhc3NfXyBjZWxsIHVzZWQgYnkgemVyby1hcmd1bWVudCBzdXBlcigpIGlzIG5vdworICBpbml0aWFsaXplZCBmcm9tIHR5cGUuX19uZXdfXyByYXRoZXIgdGhhbiBfX2J1aWxkX2NsYXNzX18sIHNvIGNsYXNzIG1ldGhvZHMKKyAgcmVseWluZyBvbiB0aGF0IHdpbGwgbm93IHdvcmsgY29ycmVjdGx5IHdoZW4gY2FsbGVkIGZyb20gbWV0YWNsYXNzIG1ldGhvZHMKKyAgZHVyaW5nIGNsYXNzIGNyZWF0aW9uLiBQYXRjaCBieSBNYXJ0aW4gVGVpY2htYW5uLgorCistIElzc3VlICMyNTIyMTogRml4IGNvcnJ1cHRlZCByZXN1bHQgZnJvbSBQeUxvbmdfRnJvbUxvbmcoMCkgd2hlbiBQeXRob24KKyAgaXMgY29tcGlsZWQgd2l0aCBOU01BTExQT1NJTlRTID0gMC4KKworLSBJc3N1ZSAjMjcwODA6IEltcGxlbWVudCBmb3JtYXR0aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuICBJbml0aWFsIHBhdGNoCisgIGJ5IENocmlzIEFuZ2VsaWNvLgorCistIElzc3VlICMyNzE5OTogSW4gdGFyZmlsZSwgZXhwb3NlIGNvcHlmaWxlb2JqIGJ1ZnNpemUgdG8gaW1wcm92ZSB0aHJvdWdocHV0LgorICBQYXRjaCBieSBKYXNvbiBGcmllZC4KKworLSBJc3N1ZSAjMjc5NDg6IEluIGYtc3RyaW5ncywgb25seSBhbGxvdyBiYWNrc2xhc2hlcyBpbnNpZGUgdGhlIGJyYWNlcworICAod2hlcmUgdGhlIGV4cHJlc3Npb25zIGFyZSkuICBUaGlzIGlzIGEgYnJlYWtpbmcgY2hhbmdlIGZyb20gdGhlIDMuNgorICBhbHBoYSByZWxlYXNlcywgd2hlcmUgYmFja3NsYXNoZXMgYXJlIGFsbG93ZWQgYW55d2hlcmUgaW4gYW4KKyAgZi1zdHJpbmcuICBBbHNvLCByZXF1aXJlIHRoYXQgZXhwcmVzc2lvbnMgaW5zaWRlIGYtc3RyaW5ncyBiZQorICBlbmNsb3NlZCB3aXRoaW4gbGl0ZXJhbCBicmFjZXMsIGFuZCBub3QgZXNjYXBlcyBsaWtlCisgIGYnXHg3YiJoaSJceDdkJy4KKworLSBJc3N1ZSAjMjgwNDY6IFJlbW92ZSBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcyBmcm9tIHN5cy5wYXRoLgorCistIElzc3VlICMyODA3MTogQWRkIGVhcmx5LW91dCBmb3IgZGlmZmVyZW5jaW5nIGZyb20gYW4gZW1wdHkgc2V0LgorCistIElzc3VlICMyNTc1ODogUHJldmVudHMgemlwaW1wb3J0IGZyb20gdW5uZWNlc3NhcmlseSBlbmNvZGluZyBhIGZpbGVuYW1lCisgIChwYXRjaCBieSBFcnlrIFN1bikKKworLSBJc3N1ZSAjMjU4NTY6IFRoZSBfX21vZHVsZV9fIGF0dHJpYnV0ZSBvZiBleHRlbnNpb24gY2xhc3NlcyBhbmQgZnVuY3Rpb25zCisgIG5vdyBpcyBpbnRlcm5lZC4gVGhpcyBsZWFkcyB0byBtb3JlIGNvbXBhY3QgcGlja2xlIGRhdGEgd2l0aCBwcm90b2NvbCA0LgorCistIElzc3VlICMyNzIxMzogUmV3b3JrIENBTExfRlVOQ1RJT04qIG9wY29kZXMgdG8gcHJvZHVjZSBzaG9ydGVyIGFuZCBtb3JlCisgIGVmZmljaWVudCBieXRlY29kZS4gUGF0Y2ggYnkgRGVtdXIgUnVtZWQsIGRlc2lnbiBieSBTZXJoaXkgU3RvcmNoYWthLAorICByZXZpZXdlZCBieSBTZXJoaXkgU3RvcmNoYWthIGFuZCBWaWN0b3IgU3Rpbm5lci4KKworLSBJc3N1ZSAjMjYzMzE6IEltcGxlbWVudCB0b2tlbml6aW5nIHN1cHBvcnQgZm9yIFBFUCA1MTUuIFBhdGNoIGJ5IEdlb3JnIEJyYW5kbC4KKworLSBJc3N1ZSAjMjc5OTk6IE1ha2UgImdsb2JhbCBhZnRlciB1c2UiIGEgU3ludGF4RXJyb3IsIGFuZCBkaXR0byBmb3Igbm9ubG9jYWwuCisgIFBhdGNoIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMjgwMDM6IEltcGxlbWVudCBQRVAgNTI1IC0tIEFzeW5jaHJvbm91cyBHZW5lcmF0b3JzLgorCistIElzc3VlICMyNzk4NTogSW1wbGVtZW50IFBFUCA1MjYgLS0gU3ludGF4IGZvciBWYXJpYWJsZSBBbm5vdGF0aW9ucy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLgorCistIElzc3VlICMyNjA1ODogQWRkIGEgbmV3IHByaXZhdGUgdmVyc2lvbiB0byB0aGUgYnVpbHRpbiBkaWN0IHR5cGUsIGluY3JlbWVudGVkCisgIGF0IGVhY2ggZGljdGlvbmFyeSBjcmVhdGlvbiBhbmQgYXQgZWFjaCBkaWN0aW9uYXJ5IGNoYW5nZS4gSW1wbGVtZW50YXRpb24gb2YKKyAgdGhlIFBFUCA1MDkuCisKKy0gSXNzdWUgIzI3MzY0OiBBIGJhY2tzbGFzaC1jaGFyYWN0ZXIgcGFpciB0aGF0IGlzIG5vdCBhIHZhbGlkIGVzY2FwZSBzZXF1ZW5jZQorICBub3cgZ2VuZXJhdGVzIGEgRGVwcmVjYXRpb25XYXJuaW5nLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjczNTA6IGBkaWN0YCBpbXBsZW1lbnRhdGlvbiBpcyBjaGFuZ2VkIGxpa2UgUHlQeS4gSXQgaXMgbW9yZSBjb21wYWN0CisgIGFuZCBwcmVzZXJ2ZXMgaW5zZXJ0aW9uIG9yZGVyLgorICAoQ29uY2VwdCBkZXZlbG9wZWQgYnkgUmF5bW9uZCBIZXR0aW5nZXIgYW5kIHBhdGNoIGJ5IEluYWRhIE5hb2tpLikKKworLSBJc3N1ZSAjMjc5MTE6IFJlbW92ZSB1bm5lY2Vzc2FyeSBlcnJvciBjaGVja3MgaW4KKyAgYGBleGVjX2J1aWx0aW5fb3JfZHluYW1pYygpYGAuCisKKy0gSXNzdWUgIzI3MDc4OiBBZGRlZCBCVUlMRF9TVFJJTkcgb3Bjb2RlLiAgT3B0aW1pemVkIGYtc3RyaW5ncyBldmFsdWF0aW9uLgorCistIElzc3VlICMxNzg4NDogUHl0aG9uIG5vdyByZXF1aXJlcyBzeXN0ZW1zIHdpdGggaW50dHlwZXMuaCBhbmQgc3RkaW50LmgKKworLSBJc3N1ZSAjMjc5NjE6IFJlcXVpcmUgcGxhdGZvcm1zIHRvIHN1cHBvcnQgYGBsb25nIGxvbmdgYC4gUHl0aG9uIGhhc24ndAorICBjb21waWxlZCB3aXRob3V0IGBgbG9uZyBsb25nYGAgZm9yIHllYXJzLCBzbyB0aGlzIGlzIGJhc2ljYWxseSBhIGZvcm1hbGl0eS4KKworLSBJc3N1ZSAjMjczNTU6IFJlbW92ZWQgc3VwcG9ydCBmb3IgV2luZG93cyBDRS4gIEl0IHdhcyBuZXZlciBmaW5pc2hlZCwKKyAgYW5kIFdpbmRvd3MgQ0UgaXMgbm8gbG9uZ2VyIGEgcmVsZXZhbnQgcGxhdGZvcm0gZm9yIFB5dGhvbi4KKworLSBJbXBsZW1lbnQgUEVQIDUyMy4KKworLSBJc3N1ZSAjMjc4NzA6IEEgbGVmdCBzaGlmdCBvZiB6ZXJvIGJ5IGEgbGFyZ2UgaW50ZWdlciBubyBsb25nZXIgYXR0ZW1wdHMKKyAgdG8gYWxsb2NhdGUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCisKKy0gSXNzdWUgIzI1NDAyOiBJbiBpbnQtdG8tZGVjaW1hbC1zdHJpbmcgY29udmVyc2lvbiwgaW1wcm92ZSB0aGUgZXN0aW1hdGUKKyAgb2YgdGhlIGludGVybWVkaWF0ZSBtZW1vcnkgcmVxdWlyZWQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcmlseSBzdHJpY3QKKyAgb3ZlcmZsb3cgY2hlY2suIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCisKKy0gSXNzdWUgIzI3MjE0OiBJbiBsb25nX2ludmVydCwgYmUgbW9yZSBjYXJlZnVsIGFib3V0IG1vZGlmeWluZyBvYmplY3QKKyAgcmV0dXJuZWQgYnkgbG9uZ19hZGQsIGFuZCByZW1vdmUgYW4gdW5uZWNlc3NhcnkgY2hlY2sgZm9yIHNtYWxsIGxvbmdzLgorICBUaGFua3MgT3JlbiBNaWxtYW4gZm9yIGFuYWx5c2lzIGFuZCBwYXRjaC4KKworLSBJc3N1ZSAjMjc1MDY6IFN1cHBvcnQgcGFzc2luZyB0aGUgYnl0ZXMvYnl0ZWFycmF5LnRyYW5zbGF0ZSgpICJkZWxldGUiCisgIGFyZ3VtZW50IGJ5IGtleXdvcmQuCisKKy0gSXNzdWUgIzI3ODEyOiBQcm9wZXJseSBjbGVhciBvdXQgYSBnZW5lcmF0b3IncyBmcmFtZSdzIGJhY2tyZWZlcmVuY2UgdG8gdGhlCisgIGdlbmVyYXRvciB0byBwcmV2ZW50IGNyYXNoZXMgaW4gZnJhbWUuY2xlYXIoKS4KKworLSBJc3N1ZSAjMjc4MTE6IEZpeCBhIGNyYXNoIHdoZW4gYSBjb3JvdXRpbmUgdGhhdCBoYXMgbm90IGJlZW4gYXdhaXRlZCBpcworICBmaW5hbGl6ZWQgd2l0aCB3YXJuaW5ncy1hcy1lcnJvcnMgZW5hYmxlZC4KKworLSBJc3N1ZSAjMjc1ODc6IEZpeCBhbm90aGVyIGlzc3VlIGZvdW5kIGJ5IFBWUy1TdHVkaW86IE51bGwgcG9pbnRlciBjaGVjaworICBhZnRlciB1c2Ugb2YgJ2RlZicgaW4gX1B5U3RhdGVfQWRkTW9kdWxlKCkuCisgIEluaXRpYWwgcGF0Y2ggYnkgQ2hyaXN0aWFuIEhlaW1lcy4KKworLSBJc3N1ZSAjMjc3OTI6IFRoZSBtb2R1bG8gb3BlcmF0aW9uIGFwcGxpZWQgdG8gYGBib29sYGAgYW5kIG90aGVyCisgIGBgaW50YGAgc3ViY2xhc3NlcyBub3cgYWx3YXlzIHJldHVybnMgYW4gYGBpbnRgYC4gUHJldmlvdXNseQorICB0aGUgcmV0dXJuIHR5cGUgZGVwZW5kZWQgb24gdGhlIGlucHV0IHZhbHVlcy4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2OTg0OiBpbnQoKSBub3cgYWx3YXlzIHJldHVybnMgYW4gaW5zdGFuY2Ugb2YgZXhhY3QgaW50LgorCistIElzc3VlICMyNTYwNDogRml4IGEgbWlub3IgYnVnIGluIGludGVnZXIgdHJ1ZSBkaXZpc2lvbjsgdGhpcyBidWcgY291bGQKKyAgcG90ZW50aWFsbHkgaGF2ZSBjYXVzZWQgb2ZmLWJ5LW9uZS11bHAgcmVzdWx0cyBvbiBwbGF0Zm9ybXMgd2l0aAorICB1bnJlbGlhYmxlIGxkZXhwIGltcGxlbWVudGF0aW9ucy4KKworLSBJc3N1ZSAjMjQyNTQ6IE1ha2UgY2xhc3MgZGVmaW5pdGlvbiBuYW1lc3BhY2Ugb3JkZXJlZCBieSBkZWZhdWx0LgorCistIElzc3VlICMyNzY2MjogRml4IGFuIG92ZXJmbG93IGNoZWNrIGluIGBgTGlzdF9OZXdgYDogdGhlIG9yaWdpbmFsIGNvZGUgd2FzCisgIGNoZWNraW5nIGFnYWluc3QgYGBQeV9TSVpFX01BWGBgIGluc3RlYWQgb2YgdGhlIGNvcnJlY3QgdXBwZXIgYm91bmQgb2YKKyAgYGBQeV9TU0laRV9UX01BWGBgLiBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3ODI6IE11bHRpLXBoYXNlIGV4dGVuc2lvbiBtb2R1bGUgaW1wb3J0IG5vdyBjb3JyZWN0bHkgYWxsb3dzIHRoZQorICBgYG1fbWV0aG9kc2BgIGZpZWxkIHRvIGJlIHVzZWQgdG8gYWRkIG1vZHVsZSBsZXZlbCBmdW5jdGlvbnMgdG8gaW5zdGFuY2VzCisgIG9mIG5vbi1tb2R1bGUgdHlwZXMgcmV0dXJuZWQgZnJvbSBgYFB5X2NyZWF0ZV9tb2RgYC4gUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3OTM2OiBUaGUgcm91bmQoKSBmdW5jdGlvbiBhY2NlcHRlZCBhIHNlY29uZCBOb25lIGFyZ3VtZW50CisgIGZvciBzb21lIHR5cGVzIGJ1dCBub3QgZm9yIG90aGVycy4gIEZpeGVkIHRoZSBpbmNvbnNpc3RlbmN5IGJ5CisgIGFjY2VwdGluZyBOb25lIGZvciBhbGwgbnVtZXJpYyB0eXBlcy4KKworLSBJc3N1ZSAjMjc0ODc6IFdhcm4gaWYgYSBzdWJtb2R1bGUgYXJndW1lbnQgdG8gInB5dGhvbiAtbSIgb3IKKyAgcnVucHkucnVuX21vZHVsZSgpIGlzIGZvdW5kIGluIHN5cy5tb2R1bGVzIGFmdGVyIHBhcmVudCBwYWNrYWdlcyBhcmUKKyAgaW1wb3J0ZWQsIGJ1dCBiZWZvcmUgdGhlIHN1Ym1vZHVsZSBpcyBleGVjdXRlZC4KKworLSBJc3N1ZSAjMjcxNTc6IE1ha2Ugb25seSB0eXBlKCkgaXRzZWxmIGFjY2VwdCB0aGUgb25lLWFyZ3VtZW50IGZvcm0uCisgIFBhdGNoIGJ5IEVyeWsgU3VuIGFuZCBFbWFudWVsIEJhcnJ5LgorCistIElzc3VlICMyNzU1ODogRml4IGEgU3lzdGVtRXJyb3IgaW4gdGhlIGltcGxlbWVudGF0aW9uIG9mICJyYWlzZSIgc3RhdGVtZW50LgorICBJbiBhIGJyYW5kIG5ldyB0aHJlYWQsIHJhaXNlIGEgUnVudGltZUVycm9yIHNpbmNlIHRoZXJlIGlzIG5vIGFjdGl2ZQorICBleGNlcHRpb24gdG8gcmVyYWlzZS4gUGF0Y2ggd3JpdHRlbiBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjgwMDg6IEltcGxlbWVudCBQRVAgNTMwIC0tIGFzeW5jaHJvbm91cyBjb21wcmVoZW5zaW9ucy4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyODAzNzogVXNlIHNxbGl0ZTNfZ2V0X2F1dG9jb21taXQoKSBpbnN0ZWFkIG9mIHNldHRpbmcKKyAgQ29ubmVjdGlvbi0+aW5UcmFuc2FjdGlvbiBtYW51YWxseS4KKworLSBJc3N1ZSAjMjUyODM6IEF0dHJpYnV0ZXMgdG1fZ210b2ZmIGFuZCB0bV96b25lIGFyZSBub3cgYXZhaWxhYmxlIG9uCisgIGFsbCBwbGF0Zm9ybXMgaW4gdGhlIHJldHVybiB2YWx1ZXMgb2YgdGltZS5sb2NhbHRpbWUoKSBhbmQKKyAgdGltZS5nbXRpbWUoKS4KKworLSBJc3N1ZSAjMjQ0NTQ6IFJlZ3VsYXIgZXhwcmVzc2lvbiBtYXRjaCBvYmplY3QgZ3JvdXBzIGFyZSBub3cKKyAgYWNjZXNzaWJsZSB1c2luZyBfX2dldGl0ZW1fXy4gICJtb1t4XSIgaXMgZXF1aXZhbGVudCB0bworICAibW8uZ3JvdXAoeCkiLgorCistIElzc3VlICMxMDc0MDogc3FsaXRlMyBubyBsb25nZXIgaW1wbGljaXRseSBjb21taXQgYW4gb3BlbiB0cmFuc2FjdGlvbgorICBiZWZvcmUgRERMIHN0YXRlbWVudHMuCisKKy0gSXNzdWUgIzE3OTQxOiBBZGQgYSAqbW9kdWxlKiBwYXJhbWV0ZXIgdG8gY29sbGVjdGlvbnMubmFtZWR0dXBsZSgpLgorCistIElzc3VlICMyMjQ5MzogSW5saW5lIGZsYWdzIG5vdyBzaG91bGQgYmUgdXNlZCBvbmx5IGF0IHRoZSBzdGFydCBvZiB0aGUKKyAgcmVndWxhciBleHByZXNzaW9uLiAgRGVwcmVjYXRpb24gd2FybmluZyBpcyBlbWl0dGVkIGlmIHVzZXMgdGhlbSBpbiB0aGUKKyAgbWlkZGxlIG9mIHRoZSByZWd1bGFyIGV4cHJlc3Npb24uCisKKy0gSXNzdWUgIzI2ODg1OiB4bWxycGMgbm93IHN1cHBvcnRzIHVubWFyc2hhbGxpbmcgYWRkaXRpb25hbCBkYXRhIHR5cGVzIHVzZWQKKyAgYnkgQXBhY2hlIFhNTC1SUEMgaW1wbGVtZW50YXRpb24gZm9yIG51bWVyaWNzIGFuZCBOb25lLgorCistIElzc3VlICMyODA3MDogRml4ZWQgcGFyc2luZyBpbmxpbmUgdmVyYm9zZSBmbGFnIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKKy0gSXNzdWUgIzE5NTAwOiBBZGQgY2xpZW50LXNpZGUgU1NMIHNlc3Npb24gcmVzdW1wdGlvbiB0byB0aGUgc3NsIG1vZHVsZS4KKworLSBJc3N1ZSAjMjgwMjI6IERlcHJlY2F0ZSBzc2wtcmVsYXRlZCBhcmd1bWVudHMgaW4gZmF2b3Igb2YgU1NMQ29udGV4dC4gVGhlCisgIGRlcHJlY2F0aW9uIGluY2x1ZGUgbWFudWFsIGNyZWF0aW9uIG9mIFNTTFNvY2tldCBhbmQgY2VydGZpbGUva2V5ZmlsZQorICAob3Igc2ltaWxhcikgaW4gZnRwbGliLCBodHRwbGliLCBpbWFwbGliLCBzbXRwbGliLCBwb3BsaWIgYW5kIHVybGxpYi4KKworLSBJc3N1ZSAjMjgwNDM6IFNTTENvbnRleHQgaGFzIGltcHJvdmVkIGRlZmF1bHQgc2V0dGluZ3M6IE9QX05PX1NTTHYyLAorICBPUF9OT19TU0x2MywgT1BfTk9fQ09NUFJFU1NJT04sIE9QX0NJUEhFUl9TRVJWRVJfUFJFRkVSRU5DRSwKKyAgT1BfU0lOR0xFX0RIX1VTRSwgT1BfU0lOR0xFX0VDREhfVVNFIGFuZCBISUdIIGNpcGhlcnMgd2l0aG91dCBNRDUuCisKKy0gSXNzdWUgIzI0NjkzOiBDaGFuZ2VkIHNvbWUgUnVudGltZUVycm9yJ3MgaW4gdGhlIHppcGZpbGUgbW9kdWxlIHRvIG1vcmUKKyAgYXBwcm9wcmlhdGUgdHlwZXMuIEltcHJvdmVkIHNvbWUgZXJyb3IgbWVzc2FnZXMgYW5kIGRlYnVnZ2luZyBvdXRwdXQuCisKKy0gSXNzdWUgIzE3OTA5OiBgYGpzb24ubG9hZGBgIGFuZCBgYGpzb24ubG9hZHNgYCBub3cgc3VwcG9ydCBiaW5hcnkgaW5wdXQKKyAgZW5jb2RlZCBhcyBVVEYtOCwgVVRGLTE2IG9yIFVURi0zMi4gUGF0Y2ggYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjcxMzc6IHRoZSBwdXJlIFB5dGhvbiBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBgYGZ1bmN0b29scy5wYXJ0aWFsYGAKKyAgbm93IG1hdGNoZXMgdGhlIGJlaGF2aW91ciBvZiBpdHMgYWNjZWxlcmF0ZWQgQyBjb3VudGVycGFydCBmb3Igc3ViY2xhc3NpbmcsCisgIHBpY2tsaW5nIGFuZCB0ZXh0IHJlcHJlc2VudGF0aW9uIHB1cnBvc2VzLiBQYXRjaCBieSBFbWFudWVsIEJhcnJ5IGFuZAorICBTZXJoaXkgU3RvcmNoYWthLgorCistIEZpeCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93cyBhbmQgY3Jhc2hlcyBpbiB0aGUgbW1hcCBtb2R1bGUgd2l0aCB1bnVzdWFsCisgIHVzYWdlIHBhdHRlcm5zLgorCistIElzc3VlICMxNzAzMTc4OiBGaXggdGhlIGFiaWxpdHkgdG8gcGFzcyB0aGUgLS1saW5rLW9iamVjdHMgb3B0aW9uIHRvIHRoZQorICBkaXN0dXRpbHMgYnVpbGRfZXh0IGNvbW1hbmQuCiAKIC0gSXNzdWUgIzI4MDE5OiBpdGVydG9vbHMuY291bnQoKSBubyBsb25nZXIgcm91bmRzIG5vbi1pbnRlZ2VyIHN0ZXAgaW4gcmFuZ2UKICAgYmV0d2VlbiAxLjAgYW5kIDIuMCB0byAxLgogCistIElzc3VlICMxODQwMTogUGRiIG5vdyBzdXBwb3J0cyB0aGUgJ3JlYWRyYycga2V5d29yZCBhcmd1bWVudCB0byBjb250cm9sCisgIHdoZXRoZXIgLnBkYnJjIGZpbGVzIHNob3VsZCBiZSByZWFkLiAgUGF0Y2ggYnkgTWFydGluIE1hdHVzaWFrIGFuZAorICBTYW0gS2ltYnJlbC4KKwogLSBJc3N1ZSAjMjU5Njk6IFVwZGF0ZSB0aGUgbGliMnRvMyBncmFtbWFyIHRvIGhhbmRsZSB0aGUgdW5wYWNraW5nCiAgIGdlbmVyYWxpemF0aW9ucyBhZGRlZCBpbiAzLjUuCiAKIC0gSXNzdWUgIzE0OTc3OiBtYWlsY2FwIG5vdyByZXNwZWN0cyB0aGUgb3JkZXIgb2YgdGhlIGxpbmVzIGluIHRoZSBtYWlsY2FwCiAgIGZpbGVzICgiZmlyc3QgbWF0Y2giKSwgYXMgcmVxdWlyZWQgYnkgUkZDIDE1NDIuICBQYXRjaCBieSBNaWNoYWVsIExhemFyLgogCistIElzc3VlICMyODAyNTogQ29udmVydCBhbGwgc3NsIG1vZHVsZSBjb25zdGFudHMgdG8gSW50RW51bSBhbmQgSW50RmxhZ3MuCisgIFNTTENvbnRleHQgcHJvcGVydGllcyBub3cgcmV0dXJuIGZsYWdzIGFuZCBlbnVtcy4KKworLSBJc3N1ZSAjNDMzMDI4OiBBZGRlZCBzdXBwb3J0IG9mIG1vZGlmaWVyIHNwYW5zIGluIHJlZ3VsYXIgZXhwcmVzc2lvbnMuCisKIC0gSXNzdWUgIzI0NTk0OiBWYWxpZGF0ZXMgcGVyc2lzdCBwYXJhbWV0ZXIgd2hlbiBvcGVuaW5nIE1TSSBkYXRhYmFzZQogCiAtIElzc3VlICMxNzU4MjogeG1sLmV0cmVlLkVsZW1lbnRUcmVlIG5vd3MgcHJlc2VydmVzIHdoaXRlc3BhY2VzIGluIGF0dHJpYnV0ZXMKQEAgLTE4OSw5ICs1MTcsMTkgQEAKIC0gSXNzdWUgIzI4MDQ3OiBGaXhlZCBjYWxjdWxhdGlvbiBvZiBsaW5lIGxlbmd0aCB1c2VkIGZvciB0aGUgYmFzZTY0IENURQogICBpbiB0aGUgbmV3IGVtYWlsIHBvbGljaWVzLgogCistIElzc3VlICMyNzU3NjogRml4IGNhbGwgb3JkZXIgaW4gT3JkZXJlZERpY3QuX19pbml0X18oKS4KKworLSBlbWFpbC5nZW5lcmF0b3IuRGVjb2RlZEdlbmVyYXRvciBub3cgc3VwcG9ydHMgdGhlIHBvbGljeSBrZXl3b3JkLgorCistIElzc3VlICMyODAyNzogUmVtb3ZlIHVuZG9jdW1lbnRlZCBtb2R1bGVzIGZyb20gYGBMaWIvcGxhdC0qYGA6IElOLCBDRFJPTSwKKyAgRExGQ04sIFRZUEVTLCBDRElPLCBhbmQgU1RST1BUUy4KKwogLSBJc3N1ZSAjMjc0NDU6IERvbid0IHBhc3Mgc3RyKF9jaGFyc2V0KSB0byBNSU1FVGV4dC5zZXRfcGF5bG9hZCgpLgogICBQYXRjaCBieSBDbGF1ZGUgUGFyb3ouCiAKKy0gSXNzdWUgIzI0Mjc3OiBUaGUgbmV3IGVtYWlsIEFQSSBpcyBubyBsb25nZXIgcHJvdmlzaW9uYWwsIGFuZCB0aGUgZG9jcworICBoYXZlIGJlZW4gcmVvcmdhbml6ZWQgYW5kIHJld3JpdHRlbiB0byBlbXBoYXNpemUgdGhlIG5ldyBBUEkuCisKIC0gSXNzdWUgIzIyNDUwOiB1cmxsaWIgbm93IGluY2x1ZGVzIGFuICJBY2NlcHQ6ICovKiIgaGVhZGVyIGFtb25nIHRoZQogICBkZWZhdWx0IGhlYWRlcnMuICBUaGlzIG1ha2VzIHRoZSByZXN1bHRzIG9mIFJFU1QgQVBJIHJlcXVlc3RzIG1vcmUKICAgY29uc2lzdGVudCBhbmQgcHJlZGljdGFibGUgZXNwZWNpYWxseSB3aGVuIHByb3h5IHNlcnZlcnMgYXJlIGludm9sdmVkLgpAQCAtMjAwLDYgKzUzOCwxMCBAQAogICBiZXR3ZWVuIHJ1bnMgZ2l2ZW4gdGhlIHNhbWUgR3JhbW1hci50eHQgaW5wdXQgcmVnYXJkbGVzcyBvZiB0aGUgaGFzaAogICByYW5kb21pemF0aW9uIHNldHRpbmcuCiAKKy0gSXNzdWUgIzI4MDA1OiBBbGxvdyBJbXBvcnRFcnJvcnMgaW4gZW5jb2RpbmcgaW1wbGVtZW50YXRpb24gdG8gcHJvcGFnYXRlLgorCistIElzc3VlICMyNjY2NzogU3VwcG9ydCBwYXRoLWxpa2Ugb2JqZWN0cyBpbiBpbXBvcnRsaWIudXRpbC4KKwogLSBJc3N1ZSAjMjc1NzA6IEF2b2lkIHplcm8tbGVuZ3RoIG1lbWNweSgpIGV0YyBjYWxscyB3aXRoIG51bGwgc291cmNlCiAgIHBvaW50ZXJzIGluIHRoZSAiY3R5cGVzIiBhbmQgImFycmF5IiBtb2R1bGVzLgogCkBAIC0yMDcsMTkgKzU0OSw3MiBAQAogICBjaGFyYWN0ZXJzLCBub3Qgb24gYXJiaXRyYXJ5IHVuaWNvZGUgbGluZSBicmVha3MuICBUaGlzIGFsc28gZml4ZXMgYSBidWcgaW4KICAgSFRUUCBoZWFkZXIgcGFyc2luZy4KIAorLSBJc3N1ZSAyNzMzMTogVGhlIGVtYWlsLm1pbWUgY2xhc3NlcyBub3cgYWxsIGFjY2VwdCBhbiBvcHRpb25hbCBwb2xpY3kga2V5d29yZC4KKwogLSBJc3N1ZSAyNzk4ODogRml4IGVtYWlsIGl0ZXJfYXR0YWNobWVudHMgaW5jb3JyZWN0IG11dGF0aW9uIG9mIHBheWxvYWQgbGlzdC4KIAorLSBJc3N1ZSAjMTYxMTM6IEFkZCBTSEEtMyBhbmQgU0hBS0Ugc3VwcG9ydCB0byBoYXNobGliIG1vZHVsZS4KKworLSBFbGltaW5hdGUgYSB0YXV0b2xvZ2ljYWwtcG9pbnRlci1jb21wYXJlIHdhcm5pbmcgaW4gX3NjcHJveHkuYy4KKworLSBJc3N1ZSAjMjc3NzY6IFRoZSA6ZnVuYzpgb3MudXJhbmRvbWAgZnVuY3Rpb24gZG9lcyBub3cgYmxvY2sgb24gTGludXggMy4xNworICBhbmQgbmV3ZXIgdW50aWwgdGhlIHN5c3RlbSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBpbml0aWFsaXplZCB0byBpbmNyZWFzZQorICB0aGUgc2VjdXJpdHkuIFRoaXMgY2hhbmdlIGlzIHBhcnQgb2YgdGhlIDpwZXA6YDUyNGAuCisKKy0gSXNzdWUgIzI3Nzc4OiBFeHBvc2UgdGhlIExpbnV4IGBgZ2V0cmFuZG9tKClgYCBzeXNjYWxsIGFzIGEgbmV3CisgIDpmdW5jOmBvcy5nZXRyYW5kb21gIGZ1bmN0aW9uLiBUaGlzIGNoYW5nZSBpcyBwYXJ0IG9mIHRoZSA6cGVwOmA1MjRgLgorCiAtIElzc3VlICMyNzY5MTogRml4IHNzbCBtb2R1bGUncyBwYXJzaW5nIG9mIEdFTl9SSUQgc3ViamVjdCBhbHRlcm5hdGl2ZSBuYW1lCiAgIGZpZWxkcyBpbiBYLjUwOSBjZXJ0cy4KIAorLSBJc3N1ZSAjMTg4NDQ6IEFkZCByYW5kb20uY2hvaWNlcygpLgorCistIElzc3VlICMyNTc2MTogSW1wcm92ZWQgZXJyb3IgcmVwb3J0aW5nIGFib3V0IHRydW5jYXRlZCBwaWNrbGUgZGF0YSBpbgorICBDIGltcGxlbWVudGF0aW9uIG9mIHVucGlja2xlci4gIFVucGlja2xpbmdFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YKKyAgQXR0cmlidXRlRXJyb3IgYW5kIFZhbHVlRXJyb3IgaW4gc29tZSBjYXNlcy4KKworLSBJc3N1ZSAjMjY3OTg6IEFkZCBCTEFLRTIgKGJsYWtlMmIgYW5kIGJsYWtlMnMpIHRvIGhhc2hsaWIuCisKKy0gSXNzdWUgIzI2MDMyOiBPcHRpbWl6ZWQgZ2xvYmJpbmcgaW4gcGF0aGxpYiBieSB1c2luZyBvcy5zY2FuZGlyKCk7IGl0IGlzIG5vdworICBhYm91dCAxLjUtLTQgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTU5NjogT3B0aW1pemVkIGdsb2IoKSBhbmQgaWdsb2IoKSBmdW5jdGlvbnMgaW4gdGhlCisgIGdsb2IgbW9kdWxlOyB0aGV5IGFyZSBub3cgYWJvdXQgMy0tNiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI3OTI4OiBBZGQgc2NyeXB0IChwYXNzd29yZC1iYXNlZCBrZXkgZGVyaXZhdGlvbiBmdW5jdGlvbikgdG8KKyAgaGFzaGxpYiBtb2R1bGUgKHJlcXVpcmVzIE9wZW5TU0wgMS4xLjApLgorCiAtIElzc3VlICMyNzg1MDogUmVtb3ZlIDNERVMgZnJvbSBzc2wgbW9kdWxlJ3MgZGVmYXVsdCBjaXBoZXIgbGlzdCB0byBjb3VudGVyCiAgIG1lYXN1cmUgc3dlZXQzMiBhdHRhY2sgKENWRS0yMDE2LTIxODMpLgogCiAtIElzc3VlICMyNzc2NjogQWRkIENoYUNoYTIwIFBvbHkxMzA1IHRvIHNzbCBtb2R1bGUncyBkZWZhdWx0IGNpcGVyIGxpc3QuCiAgIChSZXF1aXJlZCBPcGVuU1NMIDEuMS4wIG9yIExpYnJlU1NMKS4KIAorLSBJc3N1ZSAjMjUzODc6IENoZWNrIHJldHVybiB2YWx1ZSBvZiB3aW5zb3VuZC5NZXNzYWdlQmVlcC4KKworLSBJc3N1ZSAjMjc4NjY6IEFkZCBTU0xDb250ZXh0LmdldF9jaXBoZXJzKCkgbWV0aG9kIHRvIGdldCBhIGxpc3Qgb2YgYWxsCisgIGVuYWJsZWQgY2lwaGVycy4KKworLSBJc3N1ZSAjMjc3NDQ6IEFkZCBBRl9BTEcgKExpbnV4IEtlcm5lbCBjcnlwdG8pIHRvIHNvY2tldCBtb2R1bGUuCisKIC0gSXNzdWUgIzI2NDcwOiBQb3J0IHNzbCBhbmQgaGFzaGxpYiBtb2R1bGUgdG8gT3BlblNTTCAxLjEuMC4KIAorLSBJc3N1ZSAjMTE2MjA6IEZpeCBzdXBwb3J0IGZvciBTTkRfTUVNT1JZIGluIHdpbnNvdW5kLlBsYXlTb3VuZC4gIEJhc2VkIG9uIGEKKyAgcGF0Y2ggYnkgVGltIExlc2hlci4KKworLSBJc3N1ZSAjMTE3MzQ6IEFkZCBzdXBwb3J0IGZvciBJRUVFIDc1NCBoYWxmLXByZWNpc2lvbiBmbG9hdHMgdG8gdGhlCisgIHN0cnVjdCBtb2R1bGUuIEJhc2VkIG9uIGEgcGF0Y2ggYnkgRWxpIFN0ZXZlbnMuCisKKy0gSXNzdWUgIzI3OTE5OiBEZXByZWNhdGVkIGBgZXh0cmFfcGF0aGBgIGRpc3RyaWJ1dGlvbiBvcHRpb24gaW4gZGlzdHV0aWxzCisgIHBhY2thZ2luZy4KKworLSBJc3N1ZSAjMjMyMjk6IEFkZCBuZXcgYGBjbWF0aGBgIGNvbnN0YW50czogYGBjbWF0aC5pbmZgYCBhbmQgYGBjbWF0aC5uYW5gYCB0bworICBtYXRjaCBgYG1hdGguaW5mYGAgYW5kIGBgbWF0aC5uYW5gYCwgYW5kIGFsc28gYGBjbWF0aC5pbmZqYGAgYW5kCisgIGBgY21hdGgubmFuamBgIHRvIG1hdGNoIHRoZSBmb3JtYXQgdXNlZCBieSBjb21wbGV4IHJlcHIuCisKKy0gSXNzdWUgIzI3ODQyOiBUaGUgY3N2LkRpY3RSZWFkZXIgbm93IHJldHVybnMgcm93cyBvZiB0eXBlIE9yZGVyZWREaWN0LgorICAoQ29udHJpYnV0ZWQgYnkgU3RldmUgSG9sZGVuLikKKwogLSBSZW1vdmUgc3VwcG9ydCBmb3IgcGFzc2luZyBhIGZpbGUgZGVzY3JpcHRvciB0byBvcy5hY2Nlc3MuIEl0IG5ldmVyIHdvcmtlZCBidXQKICAgcHJldmlvdXNseSBkaWRuJ3QgcmFpc2UuCiAKQEAgLTI0MSwyNSArNjM2LDI3NiBAQAogLSBJc3N1ZSAjMTA1MTM6IEZpeCBhIHJlZ3Jlc3Npb24gaW4gQ29ubmVjdGlvbi5jb21taXQoKS4gIFN0YXRlbWVudHMgc2hvdWxkCiAgIG5vdCBiZSByZXNldCBhZnRlciBhIGNvbW1pdC4KIAorLSBJc3N1ZSAjMTIzMTk6IENodW5rZWQgdHJhbnNmZXIgZW5jb2Rpbmcgc3VwcG9ydCBhZGRlZCB0bworICBodHRwLmNsaWVudC5IVFRQQ29ubmVjdGlvbiByZXF1ZXN0cy4gIFRoZQorICB1cmxsaWIucmVxdWVzdC5BYnN0cmFjdEhUVFBIYW5kbGVyIGNsYXNzIGRvZXMgbm90IGVuZm9yY2UgYSBDb250ZW50LUxlbmd0aAorICBoZWFkZXIgYW55IG1vcmUuICBJZiBhIEhUVFAgcmVxdWVzdCBoYXMgYSBmaWxlIG9yIGl0ZXJhYmxlIGJvZHksIGJ1dCBubworICBDb250ZW50LUxlbmd0aCBoZWFkZXIsIHRoZSBsaWJyYXJ5IG5vdyBmYWxscyBiYWNrIHRvIHVzZSBjaHVua2VkIHRyYW5zZmVyLQorICBlbmNvZGluZy4KKwogLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBmcm9tIGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nOgogICAtIENvbGxlY3Rpb24gKG9ubHkgZm9yIDMuNikgKElzc3VlICMyNzU5OCkKICAgLSBBZGQgRnJvemVuU2V0IHRvIF9fYWxsX18gKHVwc3RyZWFtICMyNjEpCiAgIC0gZml4IGNyYXNoIGluIF9nZXRfdHlwZV92YXJzKCkgKHVwc3RyZWFtICMyNTkpCiAgIC0gUmVtb3ZlIHRoZSBkaWN0IGNvbnN0cmFpbnQgaW4gRm9yd2FyZFJlZi5fZXZhbF90eXBlICh1cHN0cmVhbSAjMjUyKQogCistIElzc3VlICMyNzgzMjogTWFrZSBgYF9ub3JtYWxpemVgYCBwYXJhbWV0ZXIgdG8gYGBGcmFjdGlvbmBgIGNvbnN0dWN0b3IKKyAga2V5d29yZC1vbmx5LCBzbyB0aGF0IGBgRnJhY3Rpb24oMiwgMywgNClgYCBub3cgcmFpc2VzIGBgVHlwZUVycm9yYGAuCisKIC0gSXNzdWUgIzI3NTM5OiBGaXggdW5ub3JtYWxpc2VkIGBgRnJhY3Rpb24uX19wb3dfX2BgIHJlc3VsdCBpbiB0aGUgY2FzZQogICBvZiBuZWdhdGl2ZSBleHBvbmVudCBhbmQgbmVnYXRpdmUgYmFzZS4KIAogLSBJc3N1ZSAjMjE3MTg6IGN1cnNvci5kZXNjcmlwdGlvbiBpcyBub3cgYXZhaWxhYmxlIGZvciBxdWVyaWVzIHVzaW5nIENURXMuCiAKKy0gSXNzdWUgIzI3ODE5OiBJbiBkaXN0dXRpbHMgc2Rpc3RzLCBzaW1wbHkgcHJvZHVjZSB0aGUgImd6dGFyIiAoZ3ppcHBlZCB0YXIKKyAgZm9ybWF0KSBkaXN0cmlidXRpb25zIG9uIGFsbCBwbGF0Zm9ybXMgdW5sZXNzICJmb3JtYXRzIiBpcyBzdXBwbGllZC4KKwogLSBJc3N1ZSAjMjQ2NjogcG9zaXhwYXRoLmlzbW91bnQgbm93IGNvcnJlY3RseSByZWNvZ25pemVzIG1vdW50IHBvaW50cyB3aGljaAogICB0aGUgdXNlciBkb2VzIG5vdCBoYXZlIHBlcm1pc3Npb24gdG8gYWNjZXNzLgogCistIElzc3VlICM5OTk4OiBPbiBMaW51eCwgY3R5cGVzLnV0aWwuZmluZF9saWJyYXJ5IG5vdyBsb29rcyBpbiBMRF9MSUJSQVJZX1BBVEgKKyAgZm9yIHNoYXJlZCBsaWJyYXJpZXMuCisKKy0gSXNzdWUgIzI3NTczOiBleGl0IG1lc3NhZ2UgZm9yIGNvZGUuaW50ZXJhY3QgaXMgbm93IGNvbmZpZ3VyYWJsZS4KKworLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCisgIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgorCistIElzc3VlICM2NzY2OiBEaXN0cmlidXRlZCByZWZlcmVuY2UgY291bnRpbmcgYWRkZWQgdG8gbXVsdGlwcm9jZXNzaW5nCisgIHRvIHN1cHBvcnQgbmVzdGluZyBvZiBzaGFyZWQgdmFsdWVzIC8gcHJveHkgb2JqZWN0cy4KKworLSBJc3N1ZSAjMjEyMDE6IEltcHJvdmVzIHJlYWRhYmlsaXR5IG9mIG11bHRpcHJvY2Vzc2luZyBlcnJvciBtZXNzYWdlLiAgVGhhbmtzCisgIHRvIFdvamNpZWNoIFdhbGN6YWsgZm9yIHBhdGNoLgorCistIGFzeW5jaW86IEFkZCBzZXRfcHJvdG9jb2wgLyBnZXRfcHJvdG9jb2wgdG8gVHJhbnNwb3J0cy4KKworLSBJc3N1ZSAjMjc0NTY6IGFzeW5jaW86IFNldCBUQ1BfTk9ERUxBWSBieSBkZWZhdWx0LgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzE1MzA4OiBBZGQgJ2ludGVycnVwdCBleGVjdXRpb24nICheQykgdG8gU2hlbGwgbWVudS4KKyAgUGF0Y2ggYnkgUm9nZXIgU2Vyd3ksIHVwZGF0ZWQgYnkgQmF5YXJkIFJhbmRlbC4KKworLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKworLSBJc3N1ZSAjMjc4OTE6IENvbnNpc3RlbnRseSBncm91cCBhbmQgc29ydCBpbXBvcnRzIHdpdGhpbiBpZGxlbGliIG1vZHVsZXMuCisKKy0gSXNzdWUgIzE3NjQyOiBhZGQgbGFyZ2VyIGZvbnQgc2l6ZXMgZm9yIGNsYXNzcm9vbSBwcm9qZWN0aW9uLgorCistIEFkZCB2ZXJzaW9uIHRvIHRpdGxlIG9mIElETEUgaGVscCB3aW5kb3cuCisKKy0gSXNzdWUgIzI1NTY0OiBJbiBzZWN0aW9uIG9uIElETEUgLS0gY29uc29sZSBkaWZmZXJlbmNlcywgbWVudGlvbiB0aGF0CisgIHVzaW5nIGV4ZWMgbWVhbnMgdGhhdCBfX2J1aWx0aW5zX18gaXMgZGVmaW5lZCBmb3IgZWFjaCBzdGF0ZW1lbnQuCisKKy0gSXNzdWUgIzI3ODIxOiBGaXggMy42LjBhMyByZWdyZXNzaW9uIHRoYXQgcHJldmVudGVkIGN1c3RvbSBrZXkgc2V0cworICBmcm9tIGJlaW5nIHNlbGVjdGVkIHdoZW4gbm8gY3VzdG9tIHRoZW1lIHdhcyBkZWZpbmVkLgorCitDIEFQSQorLS0tLS0KKworLSBJc3N1ZSAjMjY5MDA6IEV4Y2x1ZGVkIHVuZGVyc2NvcmVkIG5hbWVzIGFuZCBvdGhlciBwcml2YXRlIEFQSSBmcm9tIGxpbWl0ZWQgQVBJLgorCistIElzc3VlICMyNjAyNzogQWRkIHN1cHBvcnQgZm9yIHBhdGgtbGlrZSBvYmplY3RzIGluIFB5VW5pY29kZV9GU0NvbnZlcnRlcigpICYKKyAgUHlVbmljb2RlX0ZTRGVjb2RlcigpLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjc0Mjc6IEFkZGl0aW9uYWwgdGVzdHMgZm9yIHRoZSBtYXRoIG1vZHVsZS4gUGF0Y2ggYnkgRnJhbmNpc2NvIENvdXpvLgorCistIElzc3VlICMyNzk1MzogU2tpcCBtYXRoIGFuZCBjbWF0aCB0ZXN0cyB0aGF0IGZhaWwgb24gT1MgWCAxMC40IGR1ZSB0byBhCisgIHBvb3IgbGlibSBpbXBsZW1lbnRhdGlvbiBvZiB0YW4uCisKKy0gSXNzdWUgIzI2MDQwOiBJbXByb3ZlIHRlc3RfbWF0aCBhbmQgdGVzdF9jbWF0aCBjb3ZlcmFnZSBhbmQgcmlnb3VyLiBQYXRjaCBieQorICBKZWZmIEFsbGVuLgorCistIElzc3VlICMyNzc4NzogQ2FsbCBnYy5jb2xsZWN0KCkgYmVmb3JlIGNoZWNraW5nIGVhY2ggdGVzdCBmb3IgImRhbmdsaW5nCisgIHRocmVhZHMiLCBzaW5jZSB0aGUgZGFuZ2xpbmcgdGhyZWFkcyBhcmUgd2VhayByZWZlcmVuY2VzLgorCitCdWlsZAorLS0tLS0KKworLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQorCistIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKKworLSBJc3N1ZSAjMjc5NzY6IERlcHJlY2F0ZSBidWlsZGluZyBfY3R5cGVzIHdpdGggdGhlIGJ1bmRsZWQgY29weSBvZiBsaWJmZmkgb24KKyAgbm9uLU9TWCBVTklYIHBsYXRmb3Jtcy4KKworLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKKyAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KKyAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKKyAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KKworLSBJc3N1ZSAjMjE1OTA6IFN1cHBvcnQgZm9yIERUcmFjZSBhbmQgU3lzdGVtVGFwIHByb2Jlcy4KKworLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbGllcyBQR08gdG8gdGhlIGJ1aWx0LWluIG1vZHVsZXMuCisKKy0gSXNzdWUgIzI2NTM5OiBBZGQgdGhlIC0td2l0aC1vcHRpbWl6YXRpb25zIGZsYWcgdG8gdHVybiBvbiBMVE8gYW5kIFBHTyBidWlsZAorICBzdXBwb3J0IHdoZW4gYXZhaWxhYmxlLgorCistIElzc3VlICMyNzkxNzogU2V0IHBsYXRmb3JtIHRyaXBsZXRzIGZvciBBbmRyb2lkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjU4MjU6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIHRoZSAkKExJQlBMKSBpbnN0YWxsYXRpb24gcGF0aCBvbiBBSVguCisgIFRoaXMgcGF0aCB3YXMgY2hhbmdlZCBpbiAzLjJhNC4KKworLSBVcGRhdGUgT1MgWCBpbnN0YWxsZXIgdG8gdXNlIFNRTGl0ZSAzLjE0LjEgYW5kIFhaIDUuMi4yLgorCistIElzc3VlICMyMTEyMjogRml4IExUTyBidWlsZHMgb24gT1MgWC4KKworLSBJc3N1ZSAjMTcxMjg6IEJ1aWxkIE9TIFggaW5zdGFsbGVyIHdpdGggYSBwcml2YXRlIGNvcHkgb2YgT3BlblNTTC4KKyAgQWxzbyBwcm92aWRlIGEgc2FtcGxlIEluc3RhbGwgQ2VydGlmaWNhdGVzIGNvbW1hbmQgc2NyaXB0IHRvIGluc3RhbGwgYQorICBzZXQgb2Ygcm9vdCBjZXJ0aWZpY2F0ZXMgZnJvbSB0aGUgdGhpcmQtcGFydHkgY2VydGlmaSBtb2R1bGUuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNzk1MjogR2V0IFRvb2xzL3NjcmlwdHMvZml4Y2lkLnB5IHdvcmtpbmcgd2l0aCBQeXRob24gMyBhbmQgdGhlCisgIGN1cnJlbnQgInJlIiBtb2R1bGUsIGF2b2lkIGludmFsaWQgUHl0aG9uIGJhY2tzbGFzaCBlc2NhcGVzLCBhbmQgZml4IGEgYnVnCisgIHBhcnNpbmcgZXNjYXBlZCBDIHF1b3RlIHNpZ25zLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI4MDY1OiBVcGRhdGUgeHogZGVwZW5kZW5jeSB0byA1LjIuMiBhbmQgYnVpbGQgaXQgZnJvbSBzb3VyY2UuCisKKy0gSXNzdWUgIzI1MTQ0OiBFbnN1cmVzIFRhcmdldERpciBpcyBzZXQgYmVmb3JlIGNvbnRpbnVpbmcgd2l0aCBjdXN0b20KKyAgaW5zdGFsbC4KKworLSBJc3N1ZSAjMTYwMjogV2luZG93cyBjb25zb2xlIGRvZXNuJ3QgaW5wdXQgb3IgcHJpbnQgVW5pY29kZSAoUEVQIDUyOCkKKworLSBJc3N1ZSAjMjc3ODE6IENoYW5nZSBmaWxlIHN5c3RlbSBlbmNvZGluZyBvbiBXaW5kb3dzIHRvIFVURi04IChQRVAgNTI5KQorCistIElzc3VlICMyNzczMTogT3B0LW91dCBvZiBNQVhfUEFUSCBvbiBXaW5kb3dzIDEwCisKKy0gSXNzdWUgIzYxMzU6IEFkZHMgZW5jb2RpbmcgYW5kIGVycm9ycyBwYXJhbWV0ZXJzIHRvIHN1YnByb2Nlc3MuCisKKy0gSXNzdWUgIzI3OTU5OiBBZGRzIG9lbSBlbmNvZGluZywgYWxpYXMgYW5zaSB0byBtYmNzLCBtb3ZlIGFsaWFzbWJjcyB0bworICBjb2RlYyBsb29rdXAuCisKKy0gSXNzdWUgIzI3OTgyOiBUaGUgZnVuY3Rpb25zIG9mIHRoZSB3aW5zb3VuZCBtb2R1bGUgbm93IGFjY2VwdCBrZXl3b3JkCisgIGFyZ3VtZW50cy4KKworLSBJc3N1ZSAjMjAzNjY6IEJ1aWxkIGZ1bGwgdGV4dCBzZWFyY2ggc3VwcG9ydCBpbnRvIFNRTGl0ZSBvbiBXaW5kb3dzLgorCistIElzc3VlICMyNzc1NjogQWRkcyBuZXcgaWNvbnMgZm9yIFB5dGhvbiBmaWxlcyBhbmQgcHJvY2Vzc2VzIG9uIFdpbmRvd3MuCisgIERlc2lnbnMgYnkgQ2hlcnJ5IFdhbmcuCisKKy0gSXNzdWUgIzI3ODgzOiBVcGRhdGUgc3FsaXRlIHRvIDMuMTQuMS4wIG9uIFdpbmRvd3MuCisKKworV2hhdCdzIE5ldyBpbiBQeXRob24gMy42LjAgYWxwaGEgNAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisqUmVsZWFzZSBkYXRlOiAyMDE2LTA4LTE1KgorCitDb3JlIGFuZCBCdWlsdGlucworLS0tLS0tLS0tLS0tLS0tLS0KKworLSBJc3N1ZSAjMjc3MDQ6IE9wdGltaXplZCBjcmVhdGluZyBieXRlcyBhbmQgYnl0ZWFycmF5IGZyb20gYnl0ZS1saWtlIG9iamVjdHMKKyAgYW5kIGl0ZXJhYmxlcy4gIFNwZWVkIHVwIHRvIDMgdGltZXMgZm9yIHNob3J0IG9iamVjdHMuICBPcmlnaW5hbCBwYXRjaCBieQorICBOYW9raSBJbmFkYS4KKworLSBJc3N1ZSAjMjY4MjM6IExhcmdlIHNlY3Rpb25zIG9mIHJlcGVhdGVkIGxpbmVzIGluIHRyYWNlYmFja3MgYXJlIG5vdworICBhYmJyZXZpYXRlZCBhcyAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSIgYnkgdGhlIGJ1aWx0aW4KKyAgdHJhY2ViYWNrIHJlbmRlcmluZy4gUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjc1NzQ6IERlY3JlYXNlZCBhbiBvdmVyaGVhZCBvZiBwYXJzaW5nIGtleXdvcmQgYXJndW1lbnRzIGluIGZ1bmN0aW9ucworICBpbXBsZW1lbnRlZCB3aXRoIHVzaW5nIEFyZ3VtZW50IENsaW5pYy4KKworLSBJc3N1ZSAjMjI1NTc6IE5vdyBpbXBvcnRpbmcgYWxyZWFkeSBpbXBvcnRlZCBtb2R1bGVzIGlzIHVwIHRvIDIuNSB0aW1lcworICBmYXN0ZXIuCisKKy0gSXNzdWUgIzE3NTk2OiBJbmNsdWRlIDx3aW5jcnlwdC5oPiB0byBoZWxwIHdpdGggTWluIEdXIGJ1aWxkaW5nLgorCistIElzc3VlICMxNzU5OTogT24gV2luZG93cywgcmVuYW1lIHRoZSBwcml2YXRlbHkgZGVmaW5lZCBSRVBBUlNFX0RBVEFfQlVGRkVSCisgIHN0cnVjdHVyZSB0byBhdm9pZCBjb25mbGljdGluZyB3aXRoIHRoZSBkZWZpbml0aW9uIGZyb20gTWluIEdXLgorCistIElzc3VlICMyNzUwNzogQWRkIGludGVnZXIgb3ZlcmZsb3cgY2hlY2sgaW4gYnl0ZWFycmF5LmV4dGVuZCgpLiAgUGF0Y2ggYnkKKyAgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NTgxOiBEb24ndCByZWx5IG9uIHdyYXBwaW5nIGZvciBvdmVyZmxvdyBjaGVjayBpbgorICBQeVNlcXVlbmNlX1R1cGxlKCkuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMTYyMTogQXZvaWQgc2lnbmVkIGludGVnZXIgb3ZlcmZsb3cgaW4gbGlzdCBhbmQgdHVwbGUgb3BlcmF0aW9ucy4KKyAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI3NDE5OiBTdGFuZGFyZCBfX2ltcG9ydF9fKCkgbm8gbG9uZ2VyIGxvb2sgdXAgIl9faW1wb3J0X18iIGluIGdsb2JhbHMKKyAgb3IgYnVpbHRpbnMgZm9yIGltcG9ydGluZyBzdWJtb2R1bGVzIG9yICJmcm9tIGltcG9ydCIuICBGaXhlZCBhIGNyYXNoIGlmCisgIHJhaXNlIGEgd2FybmluZyBhYm91dCB1bmFibGluZyB0byByZXNvbHZlIHBhY2thZ2UgZnJvbSBfX3NwZWNfXyBvcgorICBfX3BhY2thZ2VfXy4KKworLSBJc3N1ZSAjMjcwODM6IFJlc3BlY3QgdGhlIFBZVEhPTkNBU0VPSyBlbnZpcm9ubWVudCB2YXJpYWJsZSB1bmRlciBXaW5kb3dzLgorCistIElzc3VlICMyNzUxNDogTWFrZSBoYXZpbmcgdG9vIG1hbnkgc3RhdGljYWxseSBuZXN0ZWQgYmxvY2tzIGEgU3ludGF4RXJyb3IKKyAgaW5zdGVhZCBvZiBTeXN0ZW1FcnJvci4KKworLSBJc3N1ZSAjMjczNjY6IEltcGxlbWVudGVkIFBFUCA0ODcgKFNpbXBsZXIgY3VzdG9taXphdGlvbiBvZiBjbGFzcyBjcmVhdGlvbikuCisgIFVwb24gc3ViY2xhc3NpbmcsIHRoZSBfX2luaXRfc3ViY2xhc3NfXyBjbGFzc21ldGhvZCBpcyBjYWxsZWQgb24gdGhlIGJhc2UKKyAgY2xhc3MuIERlc2NyaXB0b3JzIGFyZSBpbml0aWFsaXplZCB3aXRoIF9fc2V0X25hbWVfXyBhZnRlciBjbGFzcyBjcmVhdGlvbi4KKworTGlicmFyeQorLS0tLS0tLQorCistIElzc3VlICMyNjAyNywgIzI3NTI0OiBBZGQgUEVQIDUxOS9fX2ZzcGF0aF9fKCkgc3VwcG9ydCB0byB0aGUgb3MgYW5kIG9zLnBhdGgKKyAgbW9kdWxlcy4gSW5jbHVkZXMgY29kZSBmcm9tIEplbGxlIFppamxzdHJhLgorCistIElzc3VlICMyNzU5ODogQWRkIENvbGxlY3Rpb25zIHRvIGNvbGxlY3Rpb25zLmFiYy4KKyAgUGF0Y2ggYnkgSXZhbiBMZXZraXZza3lpLCBkb2NzIGJ5IE5laWwgR2lyZGhhci4KKworLSBJc3N1ZSAjMjU5NTg6IFN1cHBvcnQgImFudGktcmVnaXN0cmF0aW9uIiBvZiBzcGVjaWFsIG1ldGhvZHMgZnJvbQorICB2YXJpb3VzIEFCQ3MsIGxpa2UgX19oYXNoX18sIF9faXRlcl9fIG9yIF9fbGVuX18uICBBbGwgdGhlc2UgKGFuZAorICBzZXZlcmFsIG1vcmUpIGNhbiBiZSBzZXQgdG8gTm9uZSBpbiBhbiBpbXBsZW1lbnRhdGlvbiBjbGFzcyBhbmQgdGhlCisgIGJlaGF2aW9yIHdpbGwgYmUgYXMgaWYgdGhlIG1ldGhvZCBpcyBub3QgZGVmaW5lZCBhdCBhbGwuCisgIChQcmV2aW91c2x5LCB0aGlzIG1lY2hhbmlzbSBleGlzdGVkIG9ubHkgZm9yIF9faGFzaF9fLCB0byBtYWtlCisgIG11dGFibGUgY2xhc3NlcyB1bmhhc2hhYmxlLikgIENvZGUgY29udHJpYnV0ZWQgYnkgQW5kcmV3IEJhcm5lcnQgYW5kCisgIEl2YW4gTGV2a2l2c2t5aS4KKworLSBJc3N1ZSAjMTY3NjQ6IFN1cHBvcnQga2V5d29yZCBhcmd1bWVudHMgdG8gemxpYi5kZWNvbXByZXNzKCkuICBQYXRjaCBieQorICBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjc3MzY6IFByZXZlbnQgc2VnZmF1bHQgYWZ0ZXIgaW50ZXJwcmV0ZXIgcmUtaW5pdGlhbGl6YXRpb24gZHVlCisgIHRvIHJlZiBjb3VudCBwcm9ibGVtIGludHJvZHVjZWQgaW4gY29kZSBmb3IgSXNzdWUgIzI3MDM4IGluIDMuNi4wYTMuCisgIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNTYyODogIFRoZSAqdmVyYm9zZSogYW5kICpyZW5hbWUqIHBhcmFtZXRlcnMgZm9yCisgIGNvbGxlY3Rpb25zLm5hbWVkdHVwbGUgYXJlIG5vdyBrZXl3b3JkLW9ubHkuCisKKy0gSXNzdWUgIzEyMzQ1OiBBZGQgbWF0aGVtYXRpY2FsIGNvbnN0YW50IHRhdSB0byBtYXRoIGFuZCBjbWF0aC4gU2VlIGFsc28KKyAgUEVQIDYyOC4KKworLSBJc3N1ZSAjMjY4MjM6IHRyYWNlYmFjay5TdGFja1N1bW1hcnkuZm9ybWF0IG5vdyBhYmJyZXZpYXRlcyBsYXJnZSBzZWN0aW9ucyBvZgorICByZXBlYXRlZCBsaW5lcyBhcyAiW1ByZXZpb3VzIGxpbmUgcmVwZWF0ZWQge2NvdW50fSBtb3JlIHRpbWVzXSIgKHRoaXMgY2hhbmdlCisgIHRoZW4gZnVydGhlciBhZmZlY3RzIG90aGVyIHRyYWNlYmFjayBkaXNwbGF5IG9wZXJhdGlvbnMgaW4gdGhlIG1vZHVsZSkuIFBhdGNoCisgIGJ5IEVtYW51ZWwgQmFycnkuCisKKy0gSXNzdWUgIzI3NjY0OiBBZGQgdG8gY29uY3VycmVudC5mdXR1cmVzLnRocmVhZC5UaHJlYWRQb29sRXhlY3V0b3IoKQorICB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IGEgdGhyZWFkIG5hbWUgcHJlZml4LgorCistIElzc3VlICMyNzE4MTogQWRkIGdlb21ldHJpY19tZWFuIGFuZCBoYXJtb25pY19tZWFuIHRvIHN0YXRpc3RpY3MgbW9kdWxlLgorCistIElzc3VlICMyNzU3MzogY29kZS5pbnRlcmFjdCBub3cgcHJpbnRzIGFuIG1lc3NhZ2Ugd2hlbiBleGl0aW5nLgorCistIElzc3VlICM2NDIyOiBBZGQgYXV0b3JhbmdlIG1ldGhvZCB0byB0aW1laXQuVGltZXIgb2JqZWN0cy4KKwogLSBJc3N1ZSAjMjc3NzM6IENvcnJlY3Qgc29tZSBtZW1vcnkgbWFuYWdlbWVudCBlcnJvcnMgc2VydmVyX2hvc3RuYW1lIGluCiAgIF9zc2wud3JhcF9zb2NrZXQoKS4KIAogLSBJc3N1ZSAjMjY3NTA6IHVuaXR0ZXN0Lm1vY2suY3JlYXRlX2F1dG9zcGVjKCkgbm93IHdvcmtzIHByb3Blcmx5IGZvcgotICBzdWJjbGFzc2VzIG9mIHByb3BlcnR5KCkgYW5kIG90aGVyIGRhdGEgZGVzY3JpcHRvcnMuCisgIHN1YmNsYXNzZXMgb2YgcHJvcGVydHkoKSBhbmQgb3RoZXIgZGF0YSBkZXNjcmlwdG9ycy4gIFJlbW92ZXMgdGhlIG5ldmVyCisgIHB1YmxpY2x5IHVzZWQsIG5ldmVyIGRvY3VtZW50ZWQgdW5pdHRlc3QubW9jay5EZXNjcmlwdG9yVHlwZXMgdHVwbGUuCisKKy0gSXNzdWUgIzI2NzU0OiBVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIGJ5dGVzLWxpa2Ugb2JqZWN0cworICBhcyBwYXRoIGluIGNvbXBpbGUoKSBhbmQgc2ltaWxhciBmdW5jdGlvbnMgaXMgbm93IGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI2ODAwOiBVbmRvY3VtZW50ZWQgc3VwcG9ydCBvZiBnZW5lcmFsIGJ5dGVzLWxpa2Ugb2JqZWN0cworICBhcyBwYXRocyBpbiBvcyBmdW5jdGlvbnMgaXMgbm93IGRlcHJlY2F0ZWQuCisKKy0gSXNzdWUgIzI2OTgxOiBBZGQgX29yZGVyXyBjb21wYXRpYmlsaXR5IHNoaW0gdG8gZW51bS5FbnVtIGZvcgorICBQeXRob24gMi8zIGNvZGUgYmFzZXMuCisKKy0gSXNzdWUgIzI3NjYxOiBBZGRlZCB0emluZm8ga2V5d29yZCBhcmd1bWVudCB0byBkYXRldGltZS5jb21iaW5lLgogCiAtIEluIHRoZSBjdXJzZXMgbW9kdWxlLCByYWlzZSBhbiBlcnJvciBpZiB3aW5kb3cuZ2V0c3RyKCkgb3Igd2luZG93Lmluc3RyKCkgaXMKICAgcGFzc2VkIGEgbmVnYXRpdmUgdmFsdWUuCkBAIC0yNzgsNiArOTI0LDkgQEAKICAgSFRUUF9QUk9YWSB2YXJpYWJsZSB3aGVuIFJFUVVFU1RfTUVUSE9EIGVudmlyb25tZW50IGlzIHNldCwgd2hpY2ggaW5kaWNhdGVzCiAgIHRoYXQgdGhlIHNjcmlwdCBpcyBpbiBDR0kgbW9kZS4KIAorLSBJc3N1ZSAjNzA2MzogUmVtb3ZlIGRlYWQgY29kZSBmcm9tIHRoZSAiYXJyYXkiIG1vZHVsZSdzIHNsaWNlIGhhbmRsaW5nLgorICBQYXRjaCBieSBDaHVjay4KKwogLSBJc3N1ZSAjMjc2NTY6IERvIG5vdCBhc3N1bWUgc2NoZWQuaCBkZWZpbmVzIGFueSBTQ0hFRF8qIGNvbnN0YW50cy4KIAogLSBJc3N1ZSAjMjcxMzA6IEluIHRoZSAiemxpYiIgbW9kdWxlLCBmaXggaGFuZGxpbmcgb2YgbGFyZ2UgYnVmZmVycwpAQCAtMjg1LDYgKzkzNCwxNSBAQAogICB3ZXJlIGxpbWl0ZWQgdG8gNCBHaUIsIGFuZCBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBvcGVyYXRpb25zIGRpZCBub3QKICAgcHJvcGVybHkgaGFuZGxlIHJlc3VsdHMgb2YgNCBHaUIuCiAKKy0gSXNzdWUgIzI0NzczOiBJbXBsZW1lbnRlZCBQRVAgNDk1IChMb2NhbCBUaW1lIERpc2FtYmlndWF0aW9uKS4KKworLSBFeHBvc2UgdGhlIEVQT0xMRVhDTFVTSVZFIGNvbnN0YW50ICh3aGVuIGl0IGlzIGRlZmluZWQpIGluIHRoZSBzZWxlY3QgbW9kdWxlLgorCistIElzc3VlICMyNzU2NzogRXhwb3NlIHRoZSBFUE9MTFJESFVQIGFuZCBQT0xMUkRIVVAgY29uc3RhbnRzIGluIHRoZSBzZWxlY3QKKyAgbW9kdWxlLgorCistIElzc3VlICMxNjIxOiBBdm9pZCBzaWduZWQgaW50IG5lZ2F0aW9uIG92ZXJmbG93IGluIHRoZSAiYXVkaW9vcCIgbW9kdWxlLgorCiAtIElzc3VlICMyNzUzMzogUmVsZWFzZSBHSUwgaW4gbnQuX2lzZGlyCiAKIC0gSXNzdWUgIzE3NzExOiBGaXhlZCB1bnBpY2tsaW5nIGJ5IHRoZSBwZXJzaXN0ZW50IElEIHdpdGggcHJvdG9jb2wgMC4KQEAgLTI5Miw2ICs5NTAsMTEzIEBACiAKIC0gSXNzdWUgIzI3NTIyOiBBdm9pZCBhbiB1bmludGVudGlvbmFsIHJlZmVyZW5jZSBjeWNsZSBpbiBlbWFpbC5mZWVkcGFyc2VyLgogCistIElzc3VlICMyNzUxMjogRml4IGEgc2VnZmF1bHQgd2hlbiBvcy5mc3BhdGgoKSBjYWxsZWQgYW4gX19mc3BhdGhfXygpIG1ldGhvZAorICB0aGF0IHJhaXNlZCBhbiBleGNlcHRpb24uIFBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzI3NzE0OiB0ZXh0X3RleHR2aWV3IGFuZCB0ZXN0X2F1dG9jb21wbGV0ZSBub3cgcGFzcyB3aGVuIHJlLXJ1bgorICBpbiB0aGUgc2FtZSBwcm9jZXNzLiAgVGhpcyBvY2N1cnMgd2hlbiB0ZXN0X2lkbGUgZmFpbHMgd2hlbiBydW4gd2l0aCB0aGUKKyAgLXcgb3B0aW9uIGJ1dCB3aXRob3V0IC1qbi4gIEZpeCB3YXJuaW5nIGZyb20gdGVzdF9jb25maWcuCisKKy0gSXNzdWUgIzI3NjIxOiBQdXQgcXVlcnkgcmVzcG9uc2UgdmFsaWRhdGlvbiBlcnJvciBtZXNzYWdlcyBpbiB0aGUgcXVlcnkKKyAgYm94IGl0c2VsZiBpbnN0ZWFkIG9mIGluIGEgc2VwYXJhdGUgbWFzc2FnZWJveC4gIFJlZG8gdGVzdHMgdG8gbWF0Y2guCisgIEFkZCBNYWMgT1NYIHJlZmluZW1lbnRzLiAgT3JpZ2luYWwgcGF0Y2ggYnkgTWFyayBSb3NlbWFuLgorCistIElzc3VlICMyNzYyMDogRXNjYXBlIGtleSBub3cgY2xvc2VzIFF1ZXJ5IGJveCBhcyBjYW5jZWxsZWQuCisKKy0gSXNzdWUgIzI3NjA5OiBJRExFOiB0YWIgYWZ0ZXIgaW5pdGlhbCB3aGl0ZXNwYWNlIHNob3VsZCB0YWIsIG5vdAorICBhdXRvY29tcGxldGUuIFRoaXMgZml4ZXMgcHJvYmxlbSB3aXRoIHdyaXRpbmcgZG9jc3RyaW5ncyBhdCBsZWFzdAorICB0d2ljZSBpbmRlbnRlZC4KKworLSBJc3N1ZSAjMjc2MDk6IEV4cGxpY2l0bHkgcmV0dXJuIE5vbmUgd2hlbiB0aGVyZSBhcmUgYWxzbyBub24tTm9uZQorICByZXR1cm5zLiBJbiBhIGZldyBjYXNlcywgcmV2ZXJzZSBhIGNvbmRpdGlvbiBhbmQgZWxpbWluYXRlIGEgcmV0dXJuLgorCistIElzc3VlICMyNTUwNzogSURMRSBubyBsb25nZXIgcnVucyBidWdneSBjb2RlIGJlY2F1c2Ugb2YgaXRzIHRraW50ZXIgaW1wb3J0cy4KKyAgVXNlcnMgbXVzdCBpbmNsdWRlIHRoZSBzYW1lIGltcG9ydHMgcmVxdWlyZWQgdG8gcnVuIGRpcmVjdGx5IGluIFB5dGhvbi4KKworLSBJc3N1ZSAjMjcxNzM6IEFkZCAnSURMRSBNb2Rlcm4gVW5peCcgdG8gdGhlIGJ1aWx0LWluIGtleSBzZXRzLgorICBNYWtlIHRoZSBkZWZhdWx0IGtleSBzZXQgZGVwZW5kIG9uIHRoZSBwbGF0Zm9ybS4KKyAgQWRkIHRlc3RzIGZvciB0aGUgY2hhbmdlcyB0byB0aGUgY29uZmlnIG1vZHVsZS4KKworLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgorCitUZXN0cworLS0tLS0KKworLSBJc3N1ZSAjMjU4MDU6IFNraXAgYSB0ZXN0IGluIHRlc3RfcGtndXRpbCBhcyBuZWVkZWQgdGhhdCBkb2Vzbid0IHdvcmsgd2hlbgorICBgYF9fbmFtZV9fID09IF9fbWFpbl9fYGAuIFBhdGNoIGJ5IFNpbGVudEdob3N0LgorCistIElzc3VlICMyNzQ3MjogQWRkIHRlc3Quc3VwcG9ydC51bml4X3NoZWxsIGFzIHRoZSBwYXRoIHRvIHRoZSBkZWZhdWx0IHNoZWxsLgorCistIElzc3VlICMyNzM2OTogSW4gdGVzdF9weWV4cGF0LCBhdm9pZCB0ZXN0aW5nIGFuIGVycm9yIG1lc3NhZ2UgZGV0YWlsIHRoYXQKKyAgY2hhbmdlZCBpbiBFeHBhdCAyLjIuMC4KKworLSBJc3N1ZSAjMjc1OTQ6IFByZXZlbnQgYXNzZXJ0aW9uIGVycm9yIHdoZW4gcnVubmluZyB0ZXN0X2FzdCB3aXRoIGNvdmVyYWdlCisgIGVuYWJsZWQ6IGVuc3VyZSBjb2RlIG9iamVjdCBoYXMgYSB2YWxpZCBmaXJzdCBsaW5lIG51bWJlci4KKyAgUGF0Y2ggc3VnZ2VzdGVkIGJ5IEl2YW4gTGV2a2l2c2t5aS4KKworV2luZG93cworLS0tLS0tLQorCistIElzc3VlICMyNzY0NzogVXBkYXRlIGJ1bmRsZWQgVGNsL1RrIHRvIDguNi42LgorCistIElzc3VlICMyNzYxMDogQWRkcyBQRVAgNTE0IG1ldGFkYXRhIHRvIFdpbmRvd3MgaW5zdGFsbGVyCisKKy0gSXNzdWUgIzI3NDY5OiBBZGRzIGEgc2hlbGwgZXh0ZW5zaW9uIHRvIHRoZSBsYXVuY2hlciBzbyB0aGF0IGRyYWcgYW5kIGRyb3AKKyAgd29ya3MgY29ycmVjdGx5LgorCistIElzc3VlICMyNzMwOTogRW5hYmxlcyBwcm9wZXIgV2luZG93cyBzdHlsZXMgaW4gcHl0aG9uW3ddLmV4ZSBtYW5pZmVzdC4KKworQnVpbGQKKy0tLS0tCisKKy0gSXNzdWUgIzI3NzEzOiBTdXBwcmVzcyBzcHVyaW91cyBidWlsZCB3YXJuaW5ncyB3aGVuIHVwZGF0aW5nIGltcG9ydGxpYidzCisgIGJvb3RzdHJhcCBmaWxlcy4gIFBhdGNoIGJ5IFhpYW5nIFpoYW5nCisKKy0gSXNzdWUgIzI1ODI1OiBDb3JyZWN0IHRoZSByZWZlcmVuY2VzIHRvIE1vZHVsZXMvcHl0aG9uLmV4cCwgd2hpY2ggaXMKKyAgcmVxdWlyZWQgb24gQUlYLiAgVGhlIHJlZmVyZW5jZXMgd2VyZSBhY2NpZGVudGFsbHkgY2hhbmdlZCBpbiAzLjUuMGExLgorCistIElzc3VlICMyNzQ1MzogQ1BQIGludm9jYXRpb24gaW4gY29uZmlndXJlIG11c3QgdXNlIENQUEZMQUdTLiBQYXRjaCBieQorICBDaGkgSHN1YW4gWWVuLgorCistIElzc3VlICMyNzY0MTogVGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IGluc2VydHMgY29tbWVudHMgaW50byB0aGUgbWFrZWZpbGUKKyAgdG8gcHJldmVudCB0aGUgcGdlbiBhbmQgX2ZyZWV6ZV9pbXBvcnRsaWIgZXhlY3V0YWJsZXMgZnJvbSBiZWluZyBjcm9zcy0KKyAgY29tcGlsZWQuCisKKy0gSXNzdWUgIzI2NjYyOiBTZXQgUFlUSE9OX0ZPUl9HRU4gaW4gY29uZmlndXJlIGFzIHRoZSBQeXRob24gcHJvZ3JhbSB0byBiZQorICB1c2VkIGZvciBmaWxlIGdlbmVyYXRpb24gZHVyaW5nIHRoZSBidWlsZC4KKworLSBJc3N1ZSAjMTA5MTA6IEF2b2lkIEMrKyBjb21waWxhdGlvbiBlcnJvcnMgb24gRnJlZUJTRCBhbmQgT1MgWC4KKyAgQWxzbyB1cGRhdGUgRnJlZWRCU0QgdmVyc2lvbiBjaGVja3MgZm9yIHRoZSBvcmlnaW5hbCBjdHlwZSBVVEYtOCB3b3JrYXJvdW5kLgorCisKK1doYXQncyBOZXcgaW4gUHl0aG9uIDMuNi4wIGFscGhhIDMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworKlJlbGVhc2UgZGF0ZTogMjAxNi0wNy0xMSoKKworQ29yZSBhbmQgQnVpbHRpbnMKKy0tLS0tLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzI3NDczOiBGaXhlZCBwb3NzaWJsZSBpbnRlZ2VyIG92ZXJmbG93IGluIGJ5dGVzIGFuZCBieXRlYXJyYXkKKyAgY29uY2F0ZW5hdGlvbnMuICBQYXRjaCBieSBYaWFuZyBaaGFuZy4KKworLSBJc3N1ZSAjMjMwMzQ6IFRoZSBvdXRwdXQgb2YgYSBzcGVjaWFsIFB5dGhvbiBidWlsZCB3aXRoIGRlZmluZWQgQ09VTlRfQUxMT0NTLAorICBTSE9XX0FMTE9DX0NPVU5UIG9yIFNIT1dfVFJBQ0tfQ09VTlQgbWFjcm9zIGlzIG5vdyBvZmYgYnkgIGRlZmF1bHQuICBJdCBjYW4KKyAgYmUgcmUtZW5hYmxlZCB1c2luZyB0aGUgIi1YIHNob3dhbGxvY2NvdW50IiBvcHRpb24uICBJdCBub3cgb3V0cHV0cyB0byBzdGRlcnIKKyAgaW5zdGVhZCBvZiBzdGRvdXQuCisKKy0gSXNzdWUgIzI3NDQzOiBfX2xlbmd0aF9oaW50X18oKSBvZiBieXRlYXJyYXkgaXRlcmF0b3JzIG5vIGxvbmdlciByZXR1cm4gYQorICBuZWdhdGl2ZSBpbnRlZ2VyIGZvciBhIHJlc2l6ZWQgYnl0ZWFycmF5LgorCistIElzc3VlICMyNzAwNzogVGhlIGZyb21oZXgoKSBjbGFzcyBtZXRob2RzIG9mIGJ5dGVzIGFuZCBieXRlYXJyYXkgc3ViY2xhc3NlcworICBub3cgcmV0dXJuIGFuIGluc3RhbmNlIG9mIGNvcnJlc3BvbmRpbmcgc3ViY2xhc3MuCisKK0xpYnJhcnkKKy0tLS0tLS0KKwogLSBJc3N1ZSAjMjY4NDQ6IEZpeCBlcnJvciBtZXNzYWdlIGZvciBpbXAuZmluZF9tb2R1bGUoKSB0byByZWZlciB0byAncGF0aCcKICAgaW5zdGVhZCBvZiAnbmFtZScuIFBhdGNoIGJ5IExldiBNYXhpbW92LgogCkBAIC0zMDIsMjIgKzEwNjcsNTQgQEAKICAgY29uZmlybWluZyB0aGUgbmV0c2NhcGUgY29va2llIGZvcm1hdCBhbmQgbWFraW5nIGl0IGNvbnNpc3RlbnQgd2l0aAogICBkb2N1bWVudGF0aW9uLgogCi0tIElzc3VlICMyNjY2NDogRml4IGFjdGl2YXRlLmZpc2ggYnkgcmVtb3ZpbmcgbWlzLXVzZSBvZiBgYCRgYC4KKy0gSXNzdWUgIzIxNzA4OiBEZXByZWNhdGVkIGRibS5kdW1iIGJlaGF2aW9yIHRoYXQgZGlmZmVycyBmcm9tIGNvbW1vbiBkYm0KKyAgYmVoYXZpb3I6IGNyZWF0aW5nIGEgZGF0YWJhc2UgaW4gJ3InIGFuZCAndycgbW9kZXMgYW5kIG1vZGlmeWluZyBhIGRhdGFiYXNlCisgIGluICdyJyBtb2RlLgogCi0tIElzc3VlICMyMjExNTogRml4ZWQgdHJhY2luZyBUa2ludGVyIHZhcmlhYmxlczogdHJhY2VfdmRlbGV0ZSgpIHdpdGggd3JvbmcKLSAgbW9kZSBubyBsb25nZXIgYnJlYWsgdHJhY2luZywgdHJhY2VfdmluZm8oKSBub3cgYWx3YXlzIHJldHVybnMgYSBsaXN0IG9mCi0gIHBhaXJzIG9mIHN0cmluZ3MsIHRyYWNpbmcgaW4gdGhlICJ1IiBtb2RlIG5vdyB3b3Jrcy4KKy0gSXNzdWUgIzI2NzIxOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlci5TdHJlYW1SZXF1ZXN0SGFuZGxlci53ZmlsZSBhdHRyaWJ1dGUKKyAgdG8gaW1wbGVtZW50IEJ1ZmZlcmVkSU9CYXNlLiBJbiBwYXJ0aWN1bGFyLCB0aGUgd3JpdGUoKSBtZXRob2Qgbm8gbG9uZ2VyCisgIGRvZXMgcGFydGlhbCB3cml0ZXMuCiAKLS0gRml4IGEgc2NvcGluZyBpc3N1ZSBpbiBpbXBvcnRsaWIudXRpbC5MYXp5TG9hZGVyIHdoaWNoIHRyaWdnZXJlZCBhbgotICBVbmJvdW5kTG9jYWxFcnJvciB3aGVuIGxhenktbG9hZGluZyBhIG1vZHVsZSB0aGF0IHdhcyBhbHJlYWR5IHB1dCBpbnRvCi0gIHN5cy5tb2R1bGVzLgorLSBJc3N1ZSAjMjIxMTU6IEFkZGVkIG1ldGhvZHMgdHJhY2VfYWRkLCB0cmFjZV9yZW1vdmUgYW5kIHRyYWNlX2luZm8gaW4gdGhlCisgIHRraW50ZXIuVmFyaWFibGUgY2xhc3MuICBUaGV5IHJlcGxhY2Ugb2xkIG1ldGhvZHMgdHJhY2VfdmFyaWFibGUsIHRyYWNlLAorICB0cmFjZV92ZGVsZXRlIGFuZCB0cmFjZV92aW5mbyB0aGF0IHVzZSBvYnNvbGV0ZSBUY2wgY29tbWFuZHMgYW5kIG1pZ2h0CisgIG5vdCB3b3JrIGluIGZ1dHVyZSB2ZXJzaW9ucyBvZiBUY2wuICBGaXhlZCBvbGQgdHJhY2luZyBtZXRob2RzOgorICB0cmFjZV92ZGVsZXRlKCkgd2l0aCB3cm9uZyBtb2RlIG5vIGxvbmdlciBicmVhayB0cmFjaW5nLCB0cmFjZV92aW5mbygpIG5vdworICBhbHdheXMgcmV0dXJucyBhIGxpc3Qgb2YgcGFpcnMgb2Ygc3RyaW5ncywgdHJhY2luZyBpbiB0aGUgInUiIG1vZGUgbm93IHdvcmtzLgorCistIElzc3VlICMyNjI0MzogT25seSB0aGUgbGV2ZWwgYXJndW1lbnQgdG8gemxpYi5jb21wcmVzcygpIGlzIGtleXdvcmQgYXJndW1lbnQKKyAgbm93LiAgVGhlIGZpcnN0IGFyZ3VtZW50IGlzIHBvc2l0aW9uYWwtb25seS4KKworLSBJc3N1ZSAjMjcwMzg6IEV4cG9zZSB0aGUgRGlyRW50cnkgdHlwZSBhcyBvcy5EaXJFbnRyeS4gQ29kZSBwYXRjaCBieQorICBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjcxODY6IFVwZGF0ZSBvcy5mc3BhdGgoKS9QeU9TX0ZTUGF0aCgpIHRvIGNoZWNrIHRoZSByZXR1cm4gdmFsdWUgb2YKKyAgX19mc3BhdGhfXygpIHRvIGJlIGVpdGhlciBzdHIgb3IgYnl0ZXMuCisKKy0gSXNzdWUgIzE4NzI2OiBBbGwgb3B0aW9uYWwgcGFyYW1ldGVycyBvZiB0aGUgZHVtcCgpLCBkdW1wcygpLAorICBsb2FkKCkgYW5kIGxvYWRzKCkgZnVuY3Rpb25zIGFuZCBKU09ORW5jb2RlciBhbmQgSlNPTkRlY29kZXIgY2xhc3MKKyAgY29uc3RydWN0b3JzIGluIHRoZSBqc29uIG1vZHVsZSBhcmUgbm93IGtleXdvcmQtb25seS4KKworLSBJc3N1ZSAjMjczMTk6IE1ldGhvZHMgc2VsZWN0aW9uX3NldCgpLCBzZWxlY3Rpb25fYWRkKCksIHNlbGVjdGlvbl9yZW1vdmUoKQorICBhbmQgc2VsZWN0aW9uX3RvZ2dsZSgpIG9mIHR0ay5UcmVlVmlldyBub3cgYWxsb3cgcGFzc2luZyBtdWx0aXBsZSBpdGVtcyBhcworICBtdWx0aXBsZSBhcmd1bWVudHMgaW5zdGVhZCBvZiBwYXNzaW5nIHRoZW0gYXMgYSB0dXBsZS4gIERlcHJlY2F0ZWQKKyAgdW5kb2N1bWVudGVkIGFiaWxpdHkgb2YgY2FsbGluZyB0aGUgc2VsZWN0aW9uKCkgbWV0aG9kIHdpdGggYXJndW1lbnRzLgogCiAtIElzc3VlICMyNzA3OTogRml4ZWQgY3Vyc2VzLmFzY2lpIGZ1bmN0aW9ucyBpc2JsYW5rKCksIGlzY250cmwoKSBhbmQgaXNwdW5jdCgpLgogCistIElzc3VlICMyNzI5NDogTnVtZXJpY2FsIHN0YXRlIGluIHRoZSByZXByIGZvciBUa2ludGVyIGV2ZW50IG9iamVjdHMgaXMgbm93CisgIHJlcHJlc2VudGVkIGFzIGEgY29tYmluYXRpb24gb2Yga25vd24gZmxhZ3MuCisKKy0gSXNzdWUgIzI3MTc3OiBNYXRjaCBvYmplY3RzIGluIHRoZSByZSBtb2R1bGUgbm93IHN1cHBvcnQgaW5kZXgtbGlrZSBvYmplY3RzCisgIGFzIGdyb3VwIGluZGljZXMuICBCYXNlZCBvbiBwYXRjaGVzIGJ5IEplcm9lbiBEZW1leWVyIGFuZCBYaWFuZyBaaGFuZy4KKwogLSBJc3N1ZSAjMjY3NTQ6IFNvbWUgZnVuY3Rpb25zIChjb21waWxlKCkgZXRjKSBhY2NlcHRlZCBhIGZpbGVuYW1lIGFyZ3VtZW50CiAgIGVuY29kZWQgYXMgYW4gaXRlcmFibGUgb2YgaW50ZWdlcnMuIE5vdyBvbmx5IHN0cmluZ3MgYW5kIGJ5dGUtbGlrZSBvYmplY3RzCiAgIGFyZSBhY2NlcHRlZC4KIAorLSBJc3N1ZSAjMjY1MzY6IHNvY2tldC5pb2N0bCBub3cgc3VwcG9ydHMgU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSC4gUGF0Y2ggYnkKKyAgRGFuaWVsIFN0b2tlcy4KKwogLSBJc3N1ZSAjMjcwNDg6IFByZXZlbnRzIGRpc3R1dGlscyBmYWlsaW5nIG9uIFdpbmRvd3Mgd2hlbiBlbnZpcm9ubWVudAogICB2YXJpYWJsZXMgY29udGFpbiBub24tQVNDSUkgY2hhcmFjdGVycwogCkBAIC0zMzYsOSArMTEzMywxNSBAQAogICBMaW51eC4gIFRydW5jYXRlIHNpemUgdG8gSU5UX01BWCBhbmQgbG9vcCB1bnRpbCB3ZSBjb2xsZWN0ZWQgZW5vdWdoIHJhbmRvbQogICBieXRlcywgaW5zdGVhZCBvZiBjYXN0aW5nIGEgZGlyZWN0bHkgUHlfc3NpemVfdCB0byBpbnQuCiAKKy0gSXNzdWUgIzE2ODY0OiBzcWxpdGUzLkN1cnNvci5sYXN0cm93aWQgbm93IHN1cHBvcnRzIFJFUExBQ0Ugc3RhdGVtZW50LgorICBJbml0aWFsIHBhdGNoIGJ5IEFsZXggTG9yZFRob3JzZW4uCisKIC0gSXNzdWUgIzI2Mzg2OiBGaXhlZCB0dGsuVHJlZVZpZXcgc2VsZWN0aW9uIG9wZXJhdGlvbnMgd2l0aCBpdGVtIGlkJ3MKICAgY29udGFpbmluZyBzcGFjZXMuCiAKKy0gSXNzdWUgIzg2Mzc6IEhvbm9yIGEgcGFnZXIgc2V0IGJ5IHRoZSBlbnYgdmFyIE1BTlBBR0VSIChpbiBwcmVmZXJlbmNlIHRvCisgIG9uZSBzZXQgYnkgdGhlIGVudiB2YXIgUEFHRVIpLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzIyNjM2OiBBdm9pZCBzaGVsbCBpbmplY3Rpb24gcHJvYmxlbXMgd2l0aAogICBjdHlwZXMudXRpbC5maW5kX2xpYnJhcnkoKS4KIApAQCAtMzQ2LDIxMSArMTE0OSw0MDAgQEAKICAgbG9jYWxlIGVuY29kaW5nLCBhbmQgZml4IGdldF9iZWdpZHgoKSBhbmQgZ2V0X2VuZGlkeCgpIHRvIHJldHVybiBjb2RlIHBvaW50CiAgIGluZGV4ZXMuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgV2luZG93cyBidWlsZHMgdG8gdXNlIE9wZW5TU0wgMS4wLjJoLgotCiAtIElzc3VlICMyNzM5MjogQWRkIGxvb3AuY29ubmVjdF9hY2NlcHRlZF9zb2NrZXQoKS4KICAgUGF0Y2ggYnkgSmltIEZ1bHRvbi4KIAotLSBJc3N1ZSAjMjc5MzA6IEltcHJvdmVkIGJlaGF2aW91ciBvZiBsb2dnaW5nLmhhbmRsZXJzLlF1ZXVlTGlzdGVuZXIuCi0gIFRoYW5rcyB0byBQYXVsbyBBbmRyYWRlIGFuZCBQZXRyIFZpa3RvcmluIGZvciB0aGUgYW5hbHlzaXMgYW5kIHBhdGNoLgotCi0tIElzc3VlICMyMTIwMTogSW1wcm92ZXMgcmVhZGFiaWxpdHkgb2YgbXVsdGlwcm9jZXNzaW5nIGVycm9yIG1lc3NhZ2UuICBUaGFua3MKLSAgdG8gV29qY2llY2ggV2FsY3phayBmb3IgcGF0Y2guCi0KLS0gSXNzdWUgIzI3NDU2OiBhc3luY2lvOiBTZXQgVENQX05PREVMQVkgYnkgZGVmYXVsdC4KLQotLSBJc3N1ZSAjMjc5MDY6IEZpeCBzb2NrZXQgYWNjZXB0IGV4aGF1c3Rpb24gZHVyaW5nIGhpZ2ggVENQIHRyYWZmaWMuCi0gIFBhdGNoIGJ5IEtldmluIENvbndheS4KLQotLSBJc3N1ZSAjMjgxNzQ6IEhhbmRsZSB3aGVuIFNPX1JFVVNFUE9SVCBpc24ndCBwcm9wZXJseSBzdXBwb3J0ZWQuCi0gIFBhdGNoIGJ5IFNldGggTWljaGFlbCBMYXJzb24uCi0KLS0gSXNzdWUgIzI2NjU0OiBJbnNwZWN0IGZ1bmN0b29scy5wYXJ0aWFsIGluIGFzeW5jaW8uSGFuZGxlLl9fcmVwcl9fLgotICBQYXRjaCBieSBpY2Vib3kuCi0KLS0gSXNzdWUgIzI2OTA5OiBGaXggc2xvdyBwaXBlcyBJTyBpbiBhc3luY2lvLgotICBQYXRjaCBieSBJTkFEQSBOYW9raS4KLQotLSBJc3N1ZSAjMjgxNzY6IEZpeCBjYWxsYmFja3MgcmFjZSBpbiBhc3luY2lvLlNlbGVjdG9yTG9vcC5zb2NrX2Nvbm5lY3QuCi0KLS0gSXNzdWUgIzI3NzU5OiBGaXggc2VsZWN0b3JzIGluY29ycmVjdGx5IHJldGFpbiBpbnZhbGlkIGZpbGUgZGVzY3JpcHRvcnMuCi0gIFBhdGNoIGJ5IE1hcmsgV2lsbGlhbXMuCi0KLS0gSXNzdWUgIzI4MzY4OiBSZWZ1c2UgbW9uaXRvcmluZyBwcm9jZXNzZXMgaWYgdGhlIGNoaWxkIHdhdGNoZXIgaGFzCi0gIG5vIGxvb3AgYXR0YWNoZWQuCi0gIFBhdGNoIGJ5IFZpbmNlbnQgTWljaGVsLgotCi0tIElzc3VlICMyODM2OTogUmFpc2UgUnVudGltZUVycm9yIHdoZW4gdHJhbnNwb3J0J3MgRkQgaXMgdXNlZCB3aXRoCi0gIGFkZF9yZWFkZXIsIGFkZF93cml0ZXIsIGV0Yy4KLQotLSBJc3N1ZSAjMjgzNzA6IFNwZWVkdXAgYXN5bmNpby5TdHJlYW1SZWFkZXIucmVhZGV4YWN0bHkuCi0gIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KLQotLSBJc3N1ZSAjMjgzNzE6IERlcHJlY2F0ZSBwYXNzaW5nIGFzeW5jaW8uSGFuZGxlcyB0byBydW5faW5fZXhlY3V0b3IuCi0KLS0gSXNzdWUgIzI4MzcyOiBGaXggYXN5bmNpbyB0byBzdXBwb3J0IGZvcm1hdHRpbmcgb2Ygbm9uLXB5dGhvbiBjb3JvdXRpbmVzLgotCi0tIElzc3VlICMyODM5OTogUmVtb3ZlIFVOSVggc29ja2V0IGZyb20gRlMgYmVmb3JlIGJpbmRpbmcuCi0gIFBhdGNoIGJ5INCa0L7RgNC10L3QsdC10YDQsyDQnNCw0YDQui4KLQotLSBJc3N1ZSAjMjc5NzI6IFByb2hpYml0IFRhc2tzIHRvIGF3YWl0IG9uIHRoZW1zZWx2ZXMuCi0KIElETEUKIC0tLS0KIAotLSBJc3N1ZSAjMTUzMDg6IEFkZCAnaW50ZXJydXB0IGV4ZWN1dGlvbicgKF5DKSB0byBTaGVsbCBtZW51LgotICBQYXRjaCBieSBSb2dlciBTZXJ3eSwgdXBkYXRlZCBieSBCYXlhcmQgUmFuZGVsLgorLSBJc3N1ZSAjMjc0Nzc6IElETEUgc2VhcmNoIGRpYWxvZ3Mgbm93IHVzZSB0dGsgd2lkZ2V0cy4KIAotLSBJc3N1ZSAjMjc5MjI6IFN0b3AgSURMRSB0ZXN0cyBmcm9tICdmbGFzaGluZycgZ3VpIHdpZGdldHMgb24gdGhlIHNjcmVlbi4KKy0gSXNzdWUgIzI3MTczOiBBZGQgJ0lETEUgTW9kZXJuIFVuaXgnIHRvIHRoZSBidWlsdC1pbiBrZXkgc2V0cy4KKyAgTWFrZSB0aGUgZGVmYXVsdCBrZXkgc2V0IGRlcGVuZCBvbiB0aGUgcGxhdGZvcm0uCisgIEFkZCB0ZXN0cyBmb3IgdGhlIGNoYW5nZXMgdG8gdGhlIGNvbmZpZyBtb2R1bGUuCiAKLS0gQWRkIHZlcnNpb24gdG8gdGl0bGUgb2YgSURMRSBoZWxwIHdpbmRvdy4KLQotLSBJc3N1ZSAjMjU1NjQ6IEluIHNlY3Rpb24gb24gSURMRSAtLSBjb25zb2xlIGRpZmZlcmVuY2VzLCBtZW50aW9uIHRoYXQKLSAgdXNpbmcgZXhlYyBtZWFucyB0aGF0IF9fYnVpbHRpbnNfXyBpcyBkZWZpbmVkIGZvciBlYWNoIHN0YXRlbWVudC4KLQotLSBJc3N1ZSAjMjc3MTQ6IHRleHRfdGV4dHZpZXcgYW5kIHRlc3RfYXV0b2NvbXBsZXRlIG5vdyBwYXNzIHdoZW4gcmUtcnVuCi0gIGluIHRoZSBzYW1lIHByb2Nlc3MuICBUaGlzIG9jY3VycyB3aGVuIHRlc3RfaWRsZSBmYWlscyB3aGVuIHJ1biB3aXRoIHRoZQotICAtdyBvcHRpb24gYnV0IHdpdGhvdXQgLWpuLiAgRml4IHdhcm5pbmcgZnJvbSB0ZXN0X2NvbmZpZy4KLQotLSBJc3N1ZSAjMjU1MDc6IElETEUgbm8gbG9uZ2VyIHJ1bnMgYnVnZ3kgY29kZSBiZWNhdXNlIG9mIGl0cyB0a2ludGVyIGltcG9ydHMuCi0gIFVzZXJzIG11c3QgaW5jbHVkZSB0aGUgc2FtZSBpbXBvcnRzIHJlcXVpcmVkIHRvIHJ1biBkaXJlY3RseSBpbiBQeXRob24uCistIElzc3VlICMyNzQ1MjogbWFrZSBjb21tYW5kIGxpbmUgImlkbGUtdGVzdD4gcHl0aG9uIHRlc3RfaGVscC5weSIgd29yay4KKyAgX19maWxlX18gaXMgcmVsYXRpdmUgd2hlbiBweXRob24gaXMgc3RhcnRlZCBpbiB0aGUgZmlsZSdzIGRpcmVjdG9yeS4KIAogLSBJc3N1ZSAjMjc0NTI6IGFkZCBsaW5lIGNvdW50ZXIgYW5kIGNyYyB0byBJRExFIGNvbmZpZ0hhbmRsZXIgdGVzdCBkdW1wLgogCistIElzc3VlICMyNzM4MDogSURMRTogYWRkIHF1ZXJ5LnB5IHdpdGggYmFzZSBRdWVyeSBkaWFsb2cgYW5kIHR0ayB3aWRnZXRzLgorICBNb2R1bGUgaGFkIHN1YmNsYXNzZXMgU2VjdGlvbk5hbWUsIE1vZHVsZU5hbWUsIGFuZCBIZWxwU291cmNlLCB3aGljaCBhcmUKKyAgdXNlZCB0byBnZXQgaW5mb3JtYXRpb24gZnJvbSB1c2VycyBieSBjb25maWdkaWFsb2cgYW5kIGZpbGUgPT5Mb2FkIE1vZHVsZS4KKyAgRWFjaCBzdWJjbGFzcyBoYXMgaXR3IG93biB2YWxpZGl0eSBjaGVja3MuICBVc2luZyBNb2R1bGVOYW1lIGFsbG93cyB1c2VycworICB0byBlZGl0IGJhZCBtb2R1bGUgbmFtZXMgaW5zdGVhZCBvZiBzdGFydGluZyBvdmVyLgorICBBZGQgdGVzdHMgYW5kIGRlbGV0ZSB0aGUgdHdvIGZpbGVzIGNvbWJpbmVkIGludG8gdGhlIG5ldyBvbmUuCisKKy0gSXNzdWUgIzI3MzcyOiBUZXN0X2lkbGUgbm8gbG9uZ2VyIGNoYW5nZXMgdGhlIGxvY2FsZS4KKwogLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBjaGFycyBpbiBJRExFIE5FV1MudHh0LCBmb3IgY29udHJpYnV0b3IgbmFtZXMuCiAKIC0gSXNzdWUgIzI3MjQ1OiBJRExFOiBDbGVhbmx5IGRlbGV0ZSBjdXN0b20gdGhlbWVzIGFuZCBrZXkgYmluZGluZ3MuCiAgIFByZXZpb3VzbHksIHdoZW4gSURMRSB3YXMgc3RhcnRlZCBmcm9tIGEgY29uc29sZSBvciBieSBpbXBvcnQsIGEgY2FzY2FkZQogICBvZiB3YXJuaW5ncyB3YXMgZW1pdHRlZC4gIFBhdGNoIGJ5IFNlcmhpeSBTdG9yY2hha2EuCiAKKy0gSXNzdWUgIzI0MTM3OiBSdW4gSURMRSwgdGVzdF9pZGxlLCBhbmQgaHRlc3Qgd2l0aCB0a2ludGVyIGRlZmF1bHQgcm9vdAorICBkaXNhYmxlZC4gIEZpeCBjb2RlIGFuZCB0ZXN0cyB0aGF0IGZhaWwgd2l0aCB0aGlzIHJlc3RyaWN0aW9uLiAgRml4IGh0ZXN0cyB0bworICBub3QgY3JlYXRlIGEgc2Vjb25kIGFuZCByZWR1bmRhbnQgcm9vdCBhbmQgbWFpbmxvb3AuCisKKy0gSXNzdWUgIzI3MzEwOiBGaXggSURMRS5hcHAgZmFpbHVyZSB0byBsYXVuY2ggb24gT1MgWCBkdWUgdG8gdmVzdGlnaWFsIGltcG9ydC4KKwogQyBBUEkKIC0tLS0tCiAKIC0gSXNzdWUgIzI2NzU0OiBQeVVuaWNvZGVfRlNEZWNvZGVyKCkgYWNjZXB0ZWQgYSBmaWxlbmFtZSBhcmd1bWVudCBlbmNvZGVkIGFzCi0gIGFuIGl0ZXJhYmxlIG9mIGludGVnZXJzLiBOb3cgb25seSBzdHJpbmdzIGFuZCBieXRlcy1saWtlIG9iamVjdHMgYXJlIGFjY2VwdGVkLgorICBhbiBpdGVyYWJsZSBvZiBpbnRlZ2Vycy4gTm93IG9ubHkgc3RyaW5ncyBhbmQgYnl0ZS1saWtlIG9iamVjdHMgYXJlIGFjY2VwdGVkLgogCi1UZXN0cworQnVpbGQKIC0tLS0tCiAKLS0gSXNzdWUgIzI4NDA5OiByZWdydGVzdDogZml4IHRoZSBwYXJzZXIgb2YgY29tbWFuZCBsaW5lIGFyZ3VtZW50cy4KKy0gSXNzdWUgIzI4MDY2OiBGaXggdGhlIGxvZ2ljIHRoYXQgc2VhcmNoZXMgYnVpbGQgZGlyZWN0b3JpZXMgZm9yIGdlbmVyYXRlZAorICBpbmNsdWRlIGZpbGVzIHdoZW4gYnVpbGRpbmcgb3V0c2lkZSB0aGUgc291cmNlIHRyZWUuCiAKLS0gSXNzdWUgIzI3Nzg3OiBDYWxsIGdjLmNvbGxlY3QoKSBiZWZvcmUgY2hlY2tpbmcgZWFjaCB0ZXN0IGZvciAiZGFuZ2xpbmcKLSAgdGhyZWFkcyIsIHNpbmNlIHRoZSBkYW5nbGluZyB0aHJlYWRzIGFyZSB3ZWFrIHJlZmVyZW5jZXMuCistIElzc3VlICMyNzQ0MjogRXhwb3NlIHRoZSBBbmRyb2lkIEFQSSBsZXZlbCB0aGF0IHB5dGhvbiB3YXMgYnVpbHQgYWdhaW5zdCwgaW4KKyAgc3lzY29uZmlnLmdldF9jb25maWdfdmFycygpIGFzICdBTkRST0lEX0FQSV9MRVZFTCcuCiAKLS0gSXNzdWUgIzI3MzY5OiBJbiB0ZXN0X3B5ZXhwYXQsIGF2b2lkIHRlc3RpbmcgYW4gZXJyb3IgbWVzc2FnZSBkZXRhaWwgdGhhdAotICBjaGFuZ2VkIGluIEV4cGF0IDIuMi4wLgorLSBJc3N1ZSAjMjc0MzQ6IFRoZSBpbnRlcnByZXRlciB0aGF0IHJ1bnMgdGhlIGNyb3NzLWJ1aWxkLCBmb3VuZCBpbiBQQVRILCBtdXN0CisgIG5vdyBiZSBvZiB0aGUgc2FtZSBmZWF0dXJlIHZlcnNpb24gKGUuZy4gMy42KSBhcyB0aGUgc291cmNlIGJlaW5nIGJ1aWx0LgorCistIElzc3VlICMyNjkzMDogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KKworLSBJc3N1ZSAjMjM5Njg6IFJlbmFtZSB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5IGZyb20gcGxhdC0kKE1BQ0hERVApIHRvCisgIHBsYXQtJChQTEFURk9STV9UUklQTEVUKS4KKyAgUmVuYW1lIHRoZSBjb25maWcgZGlyZWN0b3J5IChMSUJQTCkgZnJvbSBjb25maWctJChMRFZFUlNJT04pIHRvCisgIGNvbmZpZy0kKExEVkVSU0lPTiktJChQTEFURk9STV9UUklQTEVUKS4KKyAgSW5zdGFsbCB0aGUgcGxhdGZvcm0gc3BlY2lmYyBfc3lzY29uZmlnZGF0YSBtb2R1bGUgaW50byB0aGUgcGxhdGZvcm0KKyAgZGlyZWN0b3J5IGFuZCByZW5hbWUgaXQgdG8gaW5jbHVkZSB0aGUgQUJJRkxBR1MuCisKKy0gRG9uJ3QgdXNlIGxhcmdlZmlsZSBzdXBwb3J0IGZvciBHTlUvSHVyZC4KIAogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzI3OTUyOiBHZXQgVG9vbHMvc2NyaXB0cy9maXhjaWQucHkgd29ya2luZyB3aXRoIFB5dGhvbiAzIGFuZCB0aGUKLSAgY3VycmVudCAicmUiIG1vZHVsZSwgYXZvaWQgaW52YWxpZCBQeXRob24gYmFja3NsYXNoIGVzY2FwZXMsIGFuZCBmaXggYSBidWcKLSAgcGFyc2luZyBlc2NhcGVkIEMgcXVvdGUgc2lnbnMuCi0KIC0gSXNzdWUgIzI3MzMyOiBGaXhlZCB0aGUgdHlwZSBvZiB0aGUgZmlyc3QgYXJndW1lbnQgb2YgbW9kdWxlLWxldmVsIGZ1bmN0aW9ucwogICBnZW5lcmF0ZWQgYnkgQXJndW1lbnQgQ2xpbmljLiAgUGF0Y2ggYnkgUGV0ciBWaWt0b3Jpbi4KIAogLSBJc3N1ZSAjMjc0MTg6IEZpeGVkIFRvb2xzL2ltcG9ydGJlbmNoL2ltcG9ydGJlbmNoLnB5LgogCi1XaW5kb3dzCi0tLS0tLS0tCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCiAKLS0gSXNzdWUgIzI4MjUxOiBJbXByb3ZlbWVudHMgdG8gaGVscCBtYW51YWxzIG9uIFdpbmRvd3MuCistIElzc3VlICMxOTQ4OTogTW92ZWQgdGhlIHNlYXJjaCBib3ggZnJvbSB0aGUgc2lkZWJhciB0byB0aGUgaGVhZGVyIGFuZCBmb290ZXIKKyAgb2YgZWFjaCBwYWdlLiAgUGF0Y2ggYnkgQW1tYXIgQXNrYXIuCiAKLS0gSXNzdWUgIzI4MTEwOiBsYXVuY2hlci5tc2kgaGFzIGRpZmZlcmVudCBwcm9kdWN0IGNvZGVzIGJldHdlZW4gMzItYml0IGFuZAotICA2NC1iaXQKLQotLSBJc3N1ZSAjMjUxNDQ6IEVuc3VyZXMgVGFyZ2V0RGlyIGlzIHNldCBiZWZvcmUgY29udGludWluZyB3aXRoIGN1c3RvbQotICBpbnN0YWxsLgotCi0tIElzc3VlICMyNzQ2OTogQWRkcyBhIHNoZWxsIGV4dGVuc2lvbiB0byB0aGUgbGF1bmNoZXIgc28gdGhhdCBkcmFnIGFuZCBkcm9wCi0gIHdvcmtzIGNvcnJlY3RseS4KLQotLSBJc3N1ZSAjMjczMDk6IEVuYWJsZWQgcHJvcGVyIFdpbmRvd3Mgc3R5bGVzIGluIHB5dGhvblt3XS5leGUgbWFuaWZlc3QuCi0KLUJ1aWxkCi0tLS0tLQotCi0tIElzc3VlICMyODI0ODogVXBkYXRlIFdpbmRvd3MgYnVpbGQgdG8gdXNlIE9wZW5TU0wgMS4wLjJqLgotCi0tIElzc3VlICMyODI1ODogRml4ZWQgYnVpbGQgd2l0aCBFc3RvbmlhbiBsb2NhbGUgKHB5dGhvbi1jb25maWcgYW5kIGRpc3RjbGVhbgotICB0YXJnZXRzIGluIE1ha2VmaWxlKS4gIFBhdGNoIGJ5IEFyZnJldmVyIEZyZWh0ZXMgVGFpZmVyc2FyIEFyYWhlc2lzLgotCi0tIElzc3VlICMyNjY2MTogc2V0dXAucHkgbm93IGRldGVjdHMgc3lzdGVtIGxpYmZmaSB3aXRoIG11bHRpYXJjaCB3cmFwcGVyLgotCi0tIElzc3VlICMyODA2NjogRml4IHRoZSBsb2dpYyB0aGF0IHNlYXJjaGVzIGJ1aWxkIGRpcmVjdG9yaWVzIGZvciBnZW5lcmF0ZWQKLSAgaW5jbHVkZSBmaWxlcyB3aGVuIGJ1aWxkaW5nIG91dHNpZGUgdGhlIHNvdXJjZSB0cmVlLgotCi0tIElzc3VlICMxNTgxOTogUmVtb3ZlIHJlZHVuZGFudCBpbmNsdWRlIHNlYXJjaCBkaXJlY3Rvcnkgb3B0aW9uIGZvciBidWlsZGluZwotICBvdXRzaWRlIHRoZSBzb3VyY2UgdHJlZS4KLQotLSBJc3N1ZSAjMjc1NjY6IEZpeCBjbGVhbiB0YXJnZXQgaW4gZnJlZXplIG1ha2VmaWxlIChwYXRjaCBieSBMaXNhIFJvYWNoKQotCi0tIElzc3VlICMyNzcwNTogVXBkYXRlIG1lc3NhZ2UgaW4gdmFsaWRhdGVfdWNydGJhc2UucHkKLQotLSBJc3N1ZSAjMjc5ODM6IENhdXNlIGxhY2sgb2YgbGx2bS1wcm9mZGF0YSB0b29sIHdoZW4gdXNpbmcgY2xhbmcgYXMKLSAgcmVxdWlyZWQgZm9yIFBHTyBsaW5raW5nIHRvIGJlIGEgY29uZmlndXJlIHRpbWUgZXJyb3IgcmF0aGVyIHRoYW4KLSAgbWFrZSB0aW1lIHdoZW4gLS13aXRoLW9wdGltaXphdGlvbnMgaXMgZW5hYmxlZC4gIEFsc28gaW1wcm92ZSBvdXIKLSAgYWJpbGl0eSB0byBmaW5kIHRoZSBsbHZtLXByb2ZkYXRhIHRvb2wgb24gTWFjT1MgYW5kIHNvbWUgTGludXhlcy4KLQotLSBJc3N1ZSAjMjYzMDc6IFRoZSBwcm9maWxlLW9wdCBidWlsZCBub3cgYXBwbGllcyBQR08gdG8gdGhlIGJ1aWx0LWluIG1vZHVsZXMuCi0KLS0gSXNzdWUgIzI2MzU5OiBBZGQgdGhlIC0td2l0aC1vcHRpbWl6YXRpb25zIGNvbmZpZ3VyZSBmbGFnLgotCi0tIElzc3VlICMyNzcxMzogU3VwcHJlc3Mgc3B1cmlvdXMgYnVpbGQgd2FybmluZ3Mgd2hlbiB1cGRhdGluZyBpbXBvcnRsaWIncwotICBib290c3RyYXAgZmlsZXMuICBQYXRjaCBieSBYaWFuZyBaaGFuZwotCi0tIElzc3VlICMyNTgyNTogQ29ycmVjdCB0aGUgcmVmZXJlbmNlcyB0byBNb2R1bGVzL3B5dGhvbi5leHAgYW5kIGxkX3NvX2FpeCwKLSAgd2hpY2ggYXJlIHJlcXVpcmVkIG9uIEFJWC4gIFRoaXMgdXBkYXRlcyByZWZlcmVuY2VzIHRvIGFuIGluc3RhbGxhdGlvbiBwYXRoCi0gIHRoYXQgd2FzIGNoYW5nZWQgaW4gMy4yYTQsIGFuZCB1bmRvZXMgY2hhbmdlZCByZWZlcmVuY2VzIHRvIHRoZSBidWlsZCB0cmVlCi0gIHRoYXQgd2VyZSBtYWRlIGluIDMuNS4wYTEuCi0KLS0gSXNzdWUgIzI3NDUzOiBDUFAgaW52b2NhdGlvbiBpbiBjb25maWd1cmUgbXVzdCB1c2UgQ1BQRkxBR1MuIFBhdGNoIGJ5Ci0gIENoaSBIc3VhbiBZZW4uCi0KLS0gSXNzdWUgIzI3NjQxOiBUaGUgY29uZmlndXJlIHNjcmlwdCBub3cgaW5zZXJ0cyBjb21tZW50cyBpbnRvIHRoZSBtYWtlZmlsZQotICB0byBwcmV2ZW50IHRoZSBwZ2VuIGFuZCBfZnJlZXplX2ltcG9ydGxpYiBleGVjdXRhYmxlcyBmcm9tIGJlaW5nIGNyb3NzLQotICBjb21waWxlZC4KLQotLSBJc3N1ZSAjMjY2NjI6IFNldCBQWVRIT05fRk9SX0dFTiBpbiBjb25maWd1cmUgYXMgdGhlIFB5dGhvbiBwcm9ncmFtIHRvIGJlCi0gIHVzZWQgZm9yIGZpbGUgZ2VuZXJhdGlvbiBkdXJpbmcgdGhlIGJ1aWxkLgotCi0tIElzc3VlICMxMDkxMDogQXZvaWQgQysrIGNvbXBpbGF0aW9uIGVycm9ycyBvbiBGcmVlQlNEIGFuZCBPUyBYLgotICBBbHNvIHVwZGF0ZSBGcmVlZEJTRCB2ZXJzaW9uIGNoZWNrcyBmb3IgdGhlIG9yaWdpbmFsIGN0eXBlIFVURi04IHdvcmthcm91bmQuCi0KLQotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjI/Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotUmVsZWFzZSBkYXRlOiAyMDE2LTA2LTI2Ci0KLUNvcmUgYW5kIEJ1aWx0aW5zCi0tLS0tLS0tLS0tLS0tLS0tLQotCi0tIElzc3VlICMyNjkzMDogVXBkYXRlIFdpbmRvd3MgYnVpbGRzIHRvIHVzZSBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI3Mjg1OiBVcGRhdGUgZG9jdW1lbnRhdGlvbiB0byByZWZsZWN0IHRoZSBkZXByZWNhdGlvbiBvZiBgYHB5dmVudmBgCisgIGFuZCBub3JtYWxpemUgb24gdGhlIHRlcm0gInZpcnR1YWwgZW52aXJvbm1lbnQiLiBQYXRjaCBieSBTdGV2ZSBQaWVyY3kuCiAKIFRlc3RzCiAtLS0tLQogCi0tIElzc3VlICMyNjg2NzogVWJ1bnR1J3Mgb3BlbnNzbCBPUF9OT19TU0x2MyBpcyBmb3JjZWQgb24gYnkgZGVmYXVsdDsgZml4IHRlc3QuCi0KLUlETEUKLS0tLS0KLQotLSBJc3N1ZSAjMjczNjU6IEFsbG93IG5vbi1hc2NpaSBpbiBpZGxlbGliL05FV1MudHh0IC0gbWluaW1hbCBwYXJ0IGZvciAzLjUuMi4KKy0gSXNzdWUgIzI3MDI3OiBBZGRlZCB0ZXN0LnN1cHBvcnQuaXNfYW5kcm9pZCB0aGF0IGlzIFRydWUgd2hlbiB0aGlzIGlzIGFuCisgIEFuZHJvaWQgYnVpbGQuCiAKIAotV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjIgcmVsZWFzZSBjYW5kaWRhdGUgMT8KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAyCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKLVJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMgorKlJlbGVhc2UgZGF0ZTogMjAxNi0wNi0xMyoKIAogQ29yZSBhbmQgQnVpbHRpbnMKIC0tLS0tLS0tLS0tLS0tLS0tCiAKKy0gSXNzdWUgIzI3MDk1OiBTaW1wbGlmaWVkIE1BS0VfRlVOQ1RJT04gYW5kIHJlbW92ZWQgTUFLRV9DTE9TVVJFIG9wY29kZXMuCisgIFBhdGNoIGJ5IERlbXVyIFJ1bWVkLgorCistIElzc3VlICMyNzE5MDogUmFpc2UgTm90U3VwcG9ydGVkRXJyb3IgaWYgc3FsaXRlMyBpcyBvbGRlciB0aGFuIDMuMy4xLgorICBQYXRjaCBieSBEYXZlIFNhd3llci4KKworLSBJc3N1ZSAjMjcyODY6IEZpeGVkIGNvbXBpbGluZyBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCBvcGNvZGUuICBDYWxsaW5nCisgIGZ1bmN0aW9uIHdpdGggZ2VuZXJhbGl6ZWQgdW5wYWNraW5nIChQRVAgNDQ4KSBhbmQgY29uZmxpY3Rpbmcga2V5d29yZCBuYW1lcworICBjb3VsZCBjYXVzZSB1bmRlZmluZWQgYmVoYXZpb3IuCisKKy0gSXNzdWUgIzI3MTQwOiBBZGRlZCBCVUlMRF9DT05TVF9LRVlfTUFQIG9wY29kZS4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9wZW4oKSAocGFydCBvZiBQRVAgNTE5KS4KKwogLSBJc3N1ZSAjMjcwNjY6IEZpeGVkIFN5c3RlbUVycm9yIGlmIGEgY3VzdG9tIG9wZW5lciAoZm9yIG9wZW4oKSkgcmV0dXJucyBhCiAgIG5lZ2F0aXZlIG51bWJlciB3aXRob3V0IHNldHRpbmcgYW4gZXhjZXB0aW9uLgogCistIElzc3VlICMyNjk4MzogZmxvYXQoKSBub3cgYWx3YXlzIHJldHVybiBhbiBpbnN0YW5jZSBvZiBleGFjdCBmbG9hdC4KKyAgVGhlIGRlcHJlY2F0aW9uIHdhcm5pbmcgaXMgZW1pdHRlZCBpZiBfX2Zsb2F0X18gcmV0dXJucyBhbiBpbnN0YW5jZSBvZgorICBhIHN0cmljdCBzdWJjbGFzcyBvZiBmbG9hdC4gIEluIGEgZnV0dXJlIHZlcnNpb25zIG9mIFB5dGhvbiB0aGlzIGNhbgorICBiZSBhbiBlcnJvci4KKworLSBJc3N1ZSAjMjcwOTc6IFB5dGhvbiBpbnRlcnByZXRlciBpcyBub3cgYWJvdXQgNyUgZmFzdGVyIGR1ZSB0byBvcHRpbWl6ZWQKKyAgaW5zdHJ1Y3Rpb24gZGVjb2RpbmcuICBCYXNlZCBvbiBwYXRjaCBieSBEZW11ciBSdW1lZC4KKworLSBJc3N1ZSAjMjY2NDc6IFB5dGhvbiBpbnRlcnByZXRlciBub3cgdXNlcyAxNi1iaXQgd29yZGNvZGUgaW5zdGVhZCBvZiBieXRlY29kZS4KKyAgUGF0Y2ggYnkgRGVtdXIgUnVtZWQuCisKKy0gSXNzdWUgIzIzMjc1OiBBbGxvdyBhc3NpZ25pbmcgdG8gYW4gZW1wdHkgdGFyZ2V0IGxpc3QgaW4gcm91bmQgYnJhY2tldHM6CisgICgpID0gaXRlcmFibGUuCisKKy0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKKyAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCisgIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKKyAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KKworCitMaWJyYXJ5CistLS0tLS0tCisKKy0gQ29tbWVudCBvdXQgc29ja2V0IChTT19SRVVTRVBPUlQpIGFuZCBwb3NpeCAoT19TSExPQ0ssIE9fRVhMT0NLKSBjb25zdGFudHMKKyAgZXhwb3NlZCBvbiB0aGUgQVBJIHdoaWNoIGFyZSBub3QgaW1wbGVtZW50ZWQgb24gR05VL0h1cmQuIFRoZXkgd291bGQgbm90CisgIHdvcmsgYXQgcnVudGltZSBhbnl3YXkuCisKKy0gSXNzdWUgIzI1NDU1OiBGaXhlZCBjcmFzaGVzIGluIHJlcHIgb2YgcmVjdXJzaXZlIEVsZW1lbnRUcmVlLkVsZW1lbnQgYW5kCisgIGZ1bmN0b29scy5wYXJ0aWFsIG9iamVjdHMuCisKKy0gSXNzdWUgIzI3Mjk0OiBJbXByb3ZlZCByZXByIGZvciBUa2ludGVyIGV2ZW50IG9iamVjdHMuCisKKy0gSXNzdWUgIzIwNTA4OiBJbXByb3ZlIGV4Y2VwdGlvbiBtZXNzYWdlIG9mIElQdns0LDZ9TmV0d29yay5fX2dldGl0ZW1fXy4KKyAgUGF0Y2ggYnkgR2FyZXRoIFJlZXMuCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KKworLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KKyAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbS4KKworLSBJc3N1ZSAjMjEzODY6IEltcGxlbWVudCBtaXNzaW5nIElQdjRBZGRyZXNzLmlzX2dsb2JhbCBwcm9wZXJ0eS4gIEl0IHdhcworICBkb2N1bWVudGVkIHNpbmNlIDA3YTU2MTBiYWU5ZC4gIEluaXRpYWwgcGF0Y2ggYnkgUm9nZXIgTHVldGhpLgorCistIElzc3VlICMyNzAyOTogUmVtb3ZlZCBkZXByZWNhdGVkIHN1cHBvcnQgb2YgdW5pdmVyc2FsIG5ld2xpbmVzIG1vZGUgZnJvbQorICBaaXBGaWxlLm9wZW4oKS4KKworLSBJc3N1ZSAjMjcwMzA6IFVua25vd24gZXNjYXBlcyBjb25zaXN0aW5nIG9mIGBgJ1wnYGAgYW5kIGFuIEFTQ0lJIGxldHRlciBpbgorICByZWd1bGFyIGV4cHJlc3Npb25zIG5vdyBhcmUgZXJyb3JzLiAgVGhlIHJlLkxPQ0FMRSBmbGFnIG5vdyBjYW4gYmUgdXNlZAorICBvbmx5IHdpdGggYnl0ZXMgcGF0dGVybnMuCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgb3MuUGF0aExpa2Ugc3VwcG9ydCB0byBEaXJFbnRyeSAocGFydCBvZiBQRVAgNTE5KS4KKyAgSW5pdGlhbCBwYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjA5MDA6IGRpc3R1dGlscyByZWdpc3RlciBjb21tYW5kIG5vdyBkZWNvZGVzIEhUVFAgcmVzcG9uc2VzCisgIGNvcnJlY3RseS4gIEluaXRpYWwgcGF0Y2ggYnkgaW5ncmlkLgorCistIElzc3VlICMyNzE4NjogQWRkIG9zLlBhdGhMaWtlIHN1cHBvcnQgdG8gcGF0aGxpYiwgcmVtb3ZpbmcgaXRzIHByb3Zpc2lvbmFsCisgIHN0YXR1cyAocGFydCBvZiBQRVAgNTE5KS4gSW5pdGlhbCBwYXRjaCBieSBEdXN0eSBQaGlsbGlwcy4KKworLSBJc3N1ZSAjMjcxODY6IEFkZCBzdXBwb3J0IGZvciBvcy5QYXRoTGlrZSBvYmplY3RzIHRvIG9zLmZzZW5jb2RlKCkgYW5kCisgIG9zLmZzZGVjb2RlKCkgKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI3MTg2OiBJbnRyb2R1Y2Ugb3MuUGF0aExpa2UgYW5kIG9zLmZzcGF0aCgpIChwYXJ0IG9mIFBFUCA1MTkpLgorCistIEEgbmV3IHZlcnNpb24gb2YgdHlwaW5nLnB5IHByb3ZpZGVzIHNldmVyYWwgbmV3IGNsYXNzZXMgYW5kCisgIGZlYXR1cmVzOiBAb3ZlcmxvYWQgb3V0c2lkZSBzdHVicywgUmV2ZXJzaWJsZSwgRGVmYXVsdERpY3QsIFRleHQsCisgIENvbnRleHRNYW5hZ2VyLCBUeXBlW10sIE5ld1R5cGUoKSwgVFlQRV9DSEVDS0lORywgYW5kIG51bWVyb3VzIGJ1ZworICBmaXhlcyAobm90ZSB0aGF0IHNvbWUgb2YgdGhlIG5ldyBmZWF0dXJlcyBhcmUgbm90IHlldCBpbXBsZW1lbnRlZCBpbgorICBteXB5IG9yIG90aGVyIHN0YXRpYyBhbmFseXplcnMpLiAgQWxzbyBjbGFzc2VzIGZvciBQRVAgNDkyCisgIChBd2FpdGFibGUsIEFzeW5jSXRlcmFibGUsIEFzeW5jSXRlcmF0b3IpIGhhdmUgYmVlbiBhZGRlZCAoaW4gZmFjdAorICB0aGV5IG1hZGUgaXQgaW50byAzLjUuMSBidXQgd2VyZSBuZXZlciBtZW50aW9uZWQpLgorCistIElzc3VlICMyNTczODogU3RvcCBodHRwLnNlcnZlci5CYXNlSFRUUFJlcXVlc3RIYW5kbGVyLnNlbmRfZXJyb3IoKSBmcm9tCisgIHNlbmRpbmcgYSBtZXNzYWdlIGJvZHkgZm9yIDIwNSBSZXNldCBDb250ZW50LiAgQWxzbywgZG9uJ3Qgc2VuZCBDb250ZW50CisgIGhlYWRlciBmaWVsZHMgaW4gcmVzcG9uc2VzIHRoYXQgZG9uJ3QgaGF2ZSBhIGJvZHkuICBQYXRjaCBieSBTdXN1bXUKKyAgS29zaGliYS4KKworLSBJc3N1ZSAjMjEzMTM6IEZpeCB0aGUgInBsYXRmb3JtIiBtb2R1bGUgdG8gdG9sZXJhdGUgd2hlbiBzeXMudmVyc2lvbgorICBjb250YWlucyB0cnVuY2F0ZWQgYnVpbGQgaW5mb3JtYXRpb24uCisKKy0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY4Mzk6IE9uIExpbnV4LCA6ZnVuYzpgb3MudXJhbmRvbWAgbm93IGNhbGxzCisgIGBgZ2V0cmFuZG9tKClgYCB3aXRoIGBgR1JORF9OT05CTE9DS2BgIHRvIGZhbGwgYmFjayBvbiByZWFkaW5nCisgIGBgL2Rldi91cmFuZG9tYGAgaWYgdGhlIHVyYW5kb20gZW50cm9weSBwb29sIGlzIG5vdCBpbml0aWFsaXplZCB5ZXQuIFBhdGNoCisgIHdyaXR0ZW4gYnkgQ29sbSBCdWNrbGV5LgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjZ2ksIG1haWxib3gsIG1pbWV0eXBlcywgcGxpc3RsaWIgYW5kIHNtdHBkLgorICBQYXRjaGVzIGJ5IEphY2VrIEtvxYJvZHppZWouCisKKy0gSXNzdWUgIzI3MTY0OiBJbiB0aGUgemxpYiBtb2R1bGUsIGFsbG93IGRlY29tcHJlc3NpbmcgcmF3IERlZmxhdGUgc3RyZWFtcworICB3aXRoIGEgcHJlZGVmaW5lZCB6ZGljdC4gIEJhc2VkIG9uIHBhdGNoIGJ5IFhpYW5nIFpoYW5nLgorCistIElzc3VlICMyNDI5MTogRml4IHdzZ2lyZWYuc2ltcGxlX3NlcnZlci5XU0dJUmVxdWVzdEhhbmRsZXIgdG8gY29tcGxldGVseQorICB3cml0ZSBkYXRhIHRvIHRoZSBjbGllbnQuICBQcmV2aW91c2x5IGl0IGNvdWxkIGRvIHBhcnRpYWwgd3JpdGVzIGFuZAorICB0cnVuY2F0ZSBkYXRhLiAgQWxzbywgd3NnaXJlZi5oYW5kbGVyLlNlcnZlckhhbmRsZXIgY2FuIG5vdyBoYW5kbGUgc3Rkb3V0CisgIGRvaW5nIHBhcnRpYWwgd3JpdGVzLCBidXQgdGhpcyBpcyBkZXByZWNhdGVkLgorCistIElzc3VlICMyMTI3MjogVXNlIF9zeXNjb25maWdkYXRhLnB5IHRvIGluaXRpYWxpemUgZGlzdHV0aWxzLnN5c2NvbmZpZy4KKworLSBJc3N1ZSAjMTk2MTE6IDptb2Q6YGluc3BlY3RgIG5vdyByZXBvcnRzIHRoZSBpbXBsaWNpdCBgYC4wYGAgcGFyYW1ldGVycworICBnZW5lcmF0ZWQgYnkgdGhlIGNvbXBpbGVyIGZvciBjb21wcmVoZW5zaW9uIGFuZCBnZW5lcmF0b3IgZXhwcmVzc2lvbiBzY29wZXMKKyAgYXMgaWYgdGhleSB3ZXJlIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzIGNhbGxlZCBgYGltcGxpY2l0MGBgLgorICBQYXRjaCBieSBKZWxsZSBaaWpsc3RyYS4KKworLSBJc3N1ZSAjMjY4MDk6IEFkZCBgYF9fYWxsX19gYCB0byA6bW9kOmBzdHJpbmdgLiAgUGF0Y2ggYnkgRW1hbnVlbCBCYXJyeS4KKworLSBJc3N1ZSAjMjYzNzM6IHN1YnByb2Nlc3MuUG9wZW4uY29tbXVuaWNhdGUgbm93IGNvcnJlY3RseSBpZ25vcmVzCisgIEJyb2tlblBpcGVFcnJvciB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZXMgYmVmb3JlIC5jb21tdW5pY2F0ZSgpCisgIGlzIGNhbGxlZCBpbiBtb3JlL2FsbCBjaXJjdW1zdGFuY2VzLgorCistIHNpZ25hbCwgc29ja2V0LCBhbmQgc3NsIG1vZHVsZSBJbnRFbnVtIGNvbnN0YW50IG5hbWUgbG9va3VwcyBub3cgcmV0dXJuIGEKKyAgY29uc2lzdGVudCBuYW1lIGZvciB2YWx1ZXMgaGF2aW5nIG11bHRpcGxlIG5hbWVzLiAgRXg6IHNpZ25hbC5TaWduYWxzKDYpCisgIG5vdyByZWZlcnMgdG8gaXRzZWxmIGFzIHNpZ25hbC5TSUdBTFJNIHJhdGhlciB0aGFuIGZsaXBwaW5nIGJldHdlZW4gdGhhdAorICBhbmQgc2lnbmFsLlNJR0lPVCBiYXNlZCBvbiB0aGUgaW50ZXJwcmV0ZXIncyBoYXNoIHJhbmRvbWl6YXRpb24gc2VlZC4KKworLSBJc3N1ZSAjMjcxNjc6IENsYXJpZnkgdGhlIHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGVycm9yIG1lc3NhZ2UgdGV4dAorICB3aGVuIHRoZSBjaGlsZCBwcm9jZXNzIGRpZWQgZHVlIHRvIGEgc2lnbmFsLgorCistIElzc3VlICMyNTkzMTogRG9uJ3QgZGVmaW5lIHNvY2tldHNlcnZlci5Gb3JraW5nKiBuYW1lcyBvbiBwbGF0Zm9ybXMgc3VjaAorICBhcyBXaW5kb3dzIHRoYXQgZG8gbm90IHN1cHBvcnQgb3MuZm9yaygpLgorCistIElzc3VlICMyMTc3NjogZGlzdHV0aWxzLnVwbG9hZCBub3cgY29ycmVjdGx5IGhhbmRsZXMgSFRUUEVycm9yLgorICBJbml0aWFsIHBhdGNoIGJ5IENsYXVkaXUgUG9wYS4KKworLSBJc3N1ZSAjMjY1MjY6IFJlcGxhY2UgY3VzdG9tIHBhcnNlIHRyZWUgdmFsaWRhdGlvbiBpbiB0aGUgcGFyc2VyCisgIG1vZHVsZSB3aXRoIGEgc2ltcGxlIERGQSB2YWxpZGF0b3IuCisKKy0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKKyAgUGVybWlzc2lvbkVycm9yCisKKy0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCisgIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgorCistIElzc3VlICMyMzAyNjogd2lucmVnLlF1ZXJ5VmFsdWVFeCgpIG5vdyByZXR1cm4gYW4gaW50ZWdlciBmb3IgUkVHX1FXT1JEIHR5cGUuCisKKy0gSXNzdWUgIzI2NzQxOiBzdWJwcm9jZXNzLlBvcGVuIGRlc3RydWN0b3Igbm93IGVtaXRzIGEgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgaWYgdGhlIGNoaWxkIHByb2Nlc3MgaXMgc3RpbGwgcnVubmluZy4KKworLSBJc3N1ZSAjMjcwNTY6IE9wdGltaXplIHBpY2tsZS5sb2FkKCkgYW5kIHBpY2tsZS5sb2FkcygpLCB1cCB0byAxMCUgZmFzdGVyCisgIHRvIGRlc2VyaWFsaXplIGEgbG90IG9mIHNtYWxsIG9iamVjdHMuCisKKy0gSXNzdWUgIzIxMjcxOiBOZXcga2V5d29yZCBvbmx5IHBhcmFtZXRlcnMgaW4gcmVzZXRfbW9jayBjYWxsLgorCitJRExFCistLS0tCisKKy0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCisgIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAorICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNDc1MDogU3dpdGNoIGFsbCBzY3JvbGxiYXJzIGluIElETEUgdG8gdHRrIHZlcnNpb25zLgorICBXaGVyZSBuZWVkZWQsIG1pbmltYWwgdGVzdHMgYXJlIGFkZGVkIHRvIGNvdmVyIGNoYW5nZXMuCisKKy0gSXNzdWUgIzI0NzU5OiBJRExFIHJlcXVpcmVzIHRrIDguNSBhbmQgYXZhaWxhYmlsaXR5IHR0ayB3aWRnZXRzLgorICBEZWxldGUgbm93IHVubmVlZGVkIHRrIHZlcnNpb24gdGVzdHMgYW5kIGNvZGUgZm9yIG9sZGVyIHZlcnNpb25zLgorICBBZGQgdGVzdCBmb3IgSURMRSBzeW50YXggY29sb3Jpem9lci4KKworLSBJc3N1ZSAjMjcyMzk6IGlkbGVsaWIubWFjb3N4LmlzWHl6VGsgZnVuY3Rpb25zIGluaXRpYWxpemUgYXMgbmVlZGVkLgorCistIElzc3VlICMyNzI2MjogbW92ZSBBcXVhIHVuYmluZGluZyBjb2RlLCB3aGljaCBlbmFibGUgY29udGV4dCBtZW51cywgdG8gbWF4b3N4LgorCistIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKKyAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KKworLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCisgIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgorICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCisgIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0CisKKy0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKKyAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KKworLSBJc3N1ZSAjMjQyMjU6IFVwZGF0ZSBpZGxlbGliL1JFQURNRS50eHQgd2l0aCBuZXcgZmlsZSBuYW1lcworICBhbmQgZXZlbnQgaGFuZGxlcnMuCisKKy0gSXNzdWUgIzI3MTU2OiBSZW1vdmUgb2Jzb2xldGUgY29kZSBub3QgdXNlZCBieSBJRExFLiAgUmVwbGFjZW1lbnRzOgorICAxLiBoZWxwLnR4dCwgcmVwbGFjZWQgYnkgaGVscC5odG1sLCBpcyBvdXQtb2YtZGF0ZSBhbmQgc2hvdWxkIG5vdCBiZSB1c2VkLgorICBJdHMgZGVkaWNhdGVkIHZpZXdlciBoYXMgYmUgcmVwbGFjZWQgYnkgdGhlIGh0bWwgdmlld2VyIGluIGhlbHAucHkuCisgIDIuIGBgaW1wb3J0IGlkbGV2ZXI7IEkgPSBpZGxldmVyLklETEVfVkVSU0lPTmBgIGlzIHRoZSBzYW1lIGFzCisgIGBgaW1wb3J0IHN5czsgSSA9IHZlcnNpb25bOnZlcnNpb24uaW5kZXgoJyAnKV1gYAorICAzLiBBZnRlciBgYG9iID0gc3RhY2t2aWV3ZXIuVmFyaWFibGVzVHJlZUl0ZW0oKmFyZ3MpYGAsCisgIGBgb2Iua2V5cygpID09IGxpc3Qob2Iub2JqZWN0LmtleXMpYGAuCisgIDQuIEluIG1hY29zYywgcnVubmluZ0FzT1NYQVBQID09IGlzQXF1YVRrOyBpZENhcmJvbkFxdWFUayA9PSBpc0NhcmJvblRrCisKKy0gSXNzdWUgIzI3MTE3OiBNYWtlIGNvbG9yaXplciBodGVzdCBhbmQgdHVydGxlZGVtbyB3b3JrIHdpdGggZGFyayB0aGVtZXMuCisgIE1vdmUgY29kZSBmb3IgY29uZmlndXJpbmcgdGV4dCB3aWRnZXQgY29sb3JzIHRvIGEgbmV3IGZ1bmN0aW9uLgorCistIElzc3VlICMyNDIyNTogUmVuYW1lIG1hbnkgYGlkbGVsaWIvKi5weWAgYW5kIGBpZGxlX3Rlc3QvdGVzdF8qLnB5YCBmaWxlcy4KKyAgRWRpdCBmaWxlcyB0byByZXBsYWNlIG9sZCBuYW1lcyB3aXRoIG5ldyBuYW1lcyB3aGVuIHRoZSBvbGQgbmFtZQorICByZWZlcnJlZCB0byB0aGUgbW9kdWxlIHJhdGhlciB0aGFuIHRoZSBjbGFzcyBpdCBjb250YWluZWQuCisgIFNlZSB0aGUgaXNzdWUgYW5kIElETEUgc2VjdGlvbiBpbiBXaGF0J3MgTmV3IGluIDMuNiBmb3IgbW9yZS4KKworLSBJc3N1ZSAjMjY2NzM6IFdoZW4gdGsgcmVwb3J0cyBmb250IHNpemUgYXMgMCwgY2hhbmdlIHRvIHNpemUgMTAuCisgIFN1Y2ggZm9udHMgb24gTGludXggcHJldmVudGVkIHRoZSBjb25maWd1cmF0aW9uIGRpYWxvZyBmcm9tIG9wZW5pbmcuCisKKy0gSXNzdWUgIzIxOTM5OiBBZGQgdGVzdCBmb3IgSURMRSdzIHBlcmNvbGF0b3IuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMjE2NzY6IEFkZCB0ZXN0IGZvciBJRExFJ3MgcmVwbGFjZSBkaWFsb2cuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IFNhaW1hZGhhdiBIZWJsaWthci4KKworLSBJc3N1ZSAjMTg0MTA6IEFkZCB0ZXN0IGZvciBJRExFJ3Mgc2VhcmNoIGRpYWxvZy4KKyAgT3JpZ2luYWwgcGF0Y2ggYnkgV2VzdGxleSBNYXJ0w61uZXouCisKKy0gSXNzdWUgIzIxNzAzOiBBZGQgdGVzdCBmb3IgdW5kbyBkZWxlZ2F0b3IuICBQYXRjaCBtb3N0bHkgYnkKKyAgU2FpbWFkaGF2IEhlYmxpa2FyIC4KKworLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCisKKy0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgorCitEb2N1bWVudGF0aW9uCistLS0tLS0tLS0tLS0tCisKKy0gSXNzdWUgIzE2NDg0OiBDaGFuZ2UgdGhlIGRlZmF1bHQgUFlUSE9ORE9DUyBVUkwgdG8gImh0dHBzOiIsIGFuZCBmaXggdGhlCisgIHJlc3VsdGluZyBsaW5rcyB0byB1c2UgbG93ZXJjYXNlLiAgUGF0Y2ggYnkgU2VhbiBSb2RtYW4sIHRlc3QgYnkgS2F1c2hpaworICBOYWRpa3VkaXRpLgorCistIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgorCistIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgorICBQYXRjaCBieSBZb25pIExhdmkuCisKK1Rlc3RzCistLS0tLQorCistIElzc3VlICMyNTI4NTogcmVncnRlc3Qgbm93IHVzZXMgc3VicHJvY2Vzc2VzIHdoZW4gdGhlIC1qMSBjb21tYW5kIGxpbmUgb3B0aW9uCisgIGlzIHVzZWQ6IGVhY2ggdGVzdCBmaWxlIHJ1bnMgaW4gYSBmcmVzaCBjaGlsZCBwcm9jZXNzLiBCZWZvcmUsIHRoZSAtajEgb3B0aW9uCisgIHdhcyBpZ25vcmVkLgorCistIElzc3VlICMyNTI4NTogVG9vbHMvYnVpbGRib3QvdGVzdC5iYXQgc2NyaXB0IG5vdyB1c2VzIC1qMSBieSBkZWZhdWx0IHRvIHJ1bgorICBlYWNoIHRlc3QgZmlsZSBpbiBmcmVzaCBjaGlsZCBwcm9jZXNzLgorCitXaW5kb3dzCistLS0tLS0tCisKKy0gSXNzdWUgIzI3MDY0OiBUaGUgcHkuZXhlIGxhdW5jaGVyIG5vdyBkZWZhdWx0cyB0byBQeXRob24gMy4KKyAgVGhlIFdpbmRvd3MgbGF1bmNoZXIgYGBweS5leGVgYCBubyBsb25nZXIgcHJlZmVycyBhbiBpbnN0YWxsZWQKKyAgUHl0aG9uIDIgdmVyc2lvbiBvdmVyIFB5dGhvbiAzIGJ5IGRlZmF1bHQgd2hlbiB1c2VkIGludGVyYWN0aXZlbHkuCisKK0J1aWxkCistLS0tLQorCistIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCisgIGJ5IFhhdmllciBkZSBHYXllLgorCistIElzc3VlICMyNjkzMDogVXBkYXRlIE9TIFggMTAuNSsgMzItYml0LW9ubHkgaW5zdGFsbGVyIHRvIGJ1aWxkCisgIGFuZCBsaW5rIHdpdGggT3BlblNTTCAxLjAuMmguCisKK01pc2MKKy0tLS0KKworLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKKyAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI3MTg2OiBBZGQgdGhlIFB5T1NfRlNQYXRoKCkgZnVuY3Rpb24gKHBhcnQgb2YgUEVQIDUxOSkuCisKKy0gSXNzdWUgIzI2MjgyOiBQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoKSBub3cgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5CisgIHBhcmFtZXRlcnMuCisKK1Rvb2xzL0RlbW9zCistLS0tLS0tLS0tLQorCistIElzc3VlICMyNjI4MjogQXJndW1lbnQgQ2xpbmljIG5vdyBzdXBwb3J0cyBwb3NpdGlvbmFsLW9ubHkgYW5kIGtleXdvcmQKKyAgcGFyYW1ldGVycyBpbiB0aGUgc2FtZSBmdW5jdGlvbi4KKworCitXaGF0J3MgTmV3IGluIFB5dGhvbiAzLjYuMCBhbHBoYSAxPworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKworUmVsZWFzZSBkYXRlOiAyMDE2LTA1LTE2CisKK0NvcmUgYW5kIEJ1aWx0aW5zCistLS0tLS0tLS0tLS0tLS0tLQorCiAtIElzc3VlICMyMDA0MTogRml4ZWQgVHlwZUVycm9yIHdoZW4gZnJhbWUuZl90cmFjZSBpcyBzZXQgdG8gTm9uZS4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKQEAgLTU1OSwxMSArMTU1MSwxNyBAQAogCiAtIElzc3VlICMyNjk5MTogRml4IHBvc3NpYmxlIHJlZmxlYWsgd2hlbiBjcmVhdGluZyBhIGZ1bmN0aW9uIHdpdGggYW5ub3RhdGlvbnMuCiAKLS0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgUGF0Y2ggYnkKLSAgSm9lIEpldm5pay4KKy0gSXNzdWUgIzI3MDM5OiBGaXhlZCBieXRlYXJyYXkucmVtb3ZlKCkgZm9yIHZhbHVlcyBncmVhdGVyIHRoYW4gMTI3LiAgQmFzZWQgb24KKyAgcGF0Y2ggYnkgSm9lIEpldm5pay4KIAogLSBJc3N1ZSAjMjM2NDA6IGludC5mcm9tX2J5dGVzKCkgbm8gbG9uZ2VyIGJ5cGFzc2VzIGNvbnN0cnVjdG9ycyBmb3Igc3ViY2xhc3Nlcy4KIAorLSBJc3N1ZSAjMjcwMDU6IE9wdGltaXplZCB0aGUgZmxvYXQuZnJvbWhleCgpIGNsYXNzIG1ldGhvZCBmb3IgZXhhY3QgZmxvYXQuCisgIEl0IGlzIG5vdyAyIHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMTg1MzE6IFNpbmdsZSB2YXIta2V5d29yZCBhcmd1bWVudCBvZiBkaWN0IHN1YnR5cGUgd2FzIHBhc3NlZAorICB1bnNjYXRoZWQgdG8gdGhlIEMtZGVmaW5lZCBmdW5jdGlvbi4gIE5vdyBpdCBpcyBjb252ZXJ0ZWQgdG8gZXhhY3QgZGljdC4KKwogLSBJc3N1ZSAjMjY4MTE6IGdjLmdldF9vYmplY3RzKCkgbm8gbG9uZ2VyIGNvbnRhaW5zIGEgYnJva2VuIHR1cGxlIHdpdGggTlVMTAogICBwb2ludGVyLgogCkBAIC01NzMsMTEgKzE1NzEsMjYgQEAKICAgaW50ZXJwb2xhdGlvbiBpbiAucHlwaXJjIGZpbGVzLCBtYXRjaGluZyBiZWhhdmlvciBpbiBQeXRob24KICAgMi43IGFuZCBTZXR1cHRvb2xzIDE5LjAuCiAKKy0gSXNzdWUgIzI2MjQ5OiBNZW1vcnkgZnVuY3Rpb25zIG9mIHRoZSA6YzpmdW5jOmBQeU1lbV9NYWxsb2NgIGRvbWFpbgorICAoOmM6ZGF0YTpgUFlNRU1fRE9NQUlOX01FTWApIG5vdyB1c2UgdGhlIDpyZWY6YHB5bWFsbG9jIGFsbG9jYXRvciA8cHltYWxsb2M+YAorICByYXRoZXIgdGhhbiBzeXN0ZW0gOmM6ZnVuYzpgbWFsbG9jYC4gQXBwbGljYXRpb25zIGNhbGxpbmcKKyAgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCB3aXRob3V0IGhvbGRpbmcgdGhlIEdJTCBjYW4gbm93IGNyYXNoOiB1c2UKKyAgYGBQWVRIT05NQUxMT0M9ZGVidWdgYCBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB2YWxpZGF0ZSB0aGUgdXNhZ2Ugb2YgbWVtb3J5CisgIGFsbG9jYXRvcnMgaW4geW91ciBhcHBsaWNhdGlvbi4KKworLSBJc3N1ZSAjMjY4MDI6IE9wdGltaXplIGZ1bmN0aW9uIGNhbGxzIG9ubHkgdXNpbmcgdW5wYWNraW5nIGxpa2UKKyAgYGBmdW5jKCp0dXBsZSlgYCAobm8gb3RoZXIgcG9zaXRpb25hbCBhcmd1bWVudCwgbm8ga2V5d29yZCk6IGF2b2lkIGNvcHlpbmcKKyAgdGhlIHR1cGxlLiBQYXRjaCB3cml0dGVuIGJ5IEpvZSBKZXZuaWsuCisKIC0gSXNzdWUgIzI2NjU5OiBNYWtlIHRoZSBidWlsdGluIHNsaWNlIHR5cGUgc3VwcG9ydCBjeWNsZSBjb2xsZWN0aW9uLgogCiAtIElzc3VlICMyNjcxODogc3VwZXIuX19pbml0X18gbm8gbG9uZ2VyIGxlYWtzIG1lbW9yeSBpZiBjYWxsZWQgbXVsdGlwbGUgdGltZXMuCiAgIE5PVEU6IEEgZGlyZWN0IGNhbGwgb2Ygc3VwZXIuX19pbml0X18gaXMgbm90IGVuZG9yc2VkIQogCistIElzc3VlICMyNzEzODogRml4IHRoZSBkb2MgY29tbWVudCBmb3IgRmlsZUZpbmRlci5maW5kX3NwZWMoKS4KKworLSBJc3N1ZSAjMjcxNDc6IE1lbnRpb24gUEVQIDQyMCBpbiB0aGUgaW1wb3J0bGliIGRvY3MuCisKIC0gSXNzdWUgIzI1MzM5OiBQWVRIT05JT0VOQ09ESU5HIG5vdyBoYXMgcHJpb3JpdHkgb3ZlciBsb2NhbGUgaW4gc2V0dGluZyB0aGUKICAgZXJyb3IgaGFuZGxlciBmb3Igc3RkaW4gYW5kIHN0ZG91dC4KIApAQCAtNTg2LDkgKzE1OTksNDEgQEAKICAgYnl0ZWFycmF5LCBsaXN0LCB0dXBsZSwgc2V0LCBmcm96ZW5zZXQsIGRpY3QsIE9yZGVyZWREaWN0LCBjb3JyZXNwb25kaW5nCiAgIHZpZXdzIGFuZCBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCiAKKy0gSXNzdWUgIzI2NTc0OiBPcHRpbWl6ZSBgYGJ5dGVzLnJlcGxhY2UoYicnLCBiJy4nKWBgIGFuZAorICBgYGJ5dGVhcnJheS5yZXBsYWNlKGInJywgYicuJylgYC4gUGF0Y2ggd3JpdHRlbiBieSBKb3NoIFNuaWRlci4KKwogLSBJc3N1ZSAjMjY1ODE6IElmIGNvZGluZyBjb29raWUgaXMgc3BlY2lmaWVkIG11bHRpcGxlIHRpbWVzIG9uIGEgbGluZSBpbgogICBQeXRob24gc291cmNlIGNvZGUgZmlsZSwgb25seSB0aGUgZmlyc3Qgb25lIGlzIHRha2VuIHRvIGFjY291bnQuCiAKKy0gSXNzdWUgIzE5NzExOiBBZGQgdGVzdHMgZm9yIHJlbG9hZGluZyBuYW1lc3BhY2UgcGFja2FnZXMuCisKKy0gSXNzdWUgIzIxMDk5OiBTd2l0Y2ggYXBwbGljYWJsZSBpbXBvcnRsaWIgdGVzdHMgdG8gdXNlIFBFUCA0NTEgQVBJLgorCistIElzc3VlICMyNjU2MzogRGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyByYWlzZSBhIGZhdGFsCisgIGVycm9yIGlmIGZ1bmN0aW9ucyBvZiB0aGUgOmM6ZnVuYzpgUHlNZW1fTWFsbG9jYCBmYW1pbHkgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1NjQ6IE9uIGVycm9yLCB0aGUgZGVidWcgaG9va3Mgb24gUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIG5vdyB1c2UKKyAgdGhlIDptb2Q6YHRyYWNlbWFsbG9jYCBtb2R1bGUgdG8gZ2V0IHRoZSB0cmFjZWJhY2sgd2hlcmUgYSBtZW1vcnkgYmxvY2sgd2FzCisgIGFsbG9jYXRlZC4KKworLSBJc3N1ZSAjMjY1NTg6IFRoZSBkZWJ1ZyBob29rcyBvbiBQeXRob24gbWVtb3J5IGFsbG9jYXRvcgorICA6YzpmdW5jOmBQeU9iamVjdF9NYWxsb2NgIG5vdyBkZXRlY3Qgd2hlbiBmdW5jdGlvbnMgYXJlIGNhbGxlZCB3aXRob3V0CisgIGhvbGRpbmcgdGhlIEdJTC4KKworLSBJc3N1ZSAjMjY1MTY6IEFkZCA6ZW52dmFyOmBQWVRIT05NQUxMT0NgIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHNldCB0aGUKKyAgUHl0aG9uIG1lbW9yeSBhbGxvY2F0b3JzIGFuZC9vciBpbnN0YWxsIGRlYnVnIGhvb2tzLgorCistIElzc3VlICMyNjUxNjogVGhlIDpjOmZ1bmM6YFB5TWVtX1NldHVwRGVidWdIb29rc2AgZnVuY3Rpb24gY2FuIG5vdyBhbHNvIGJlCisgIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4KKworLSBJc3N1ZSAjMjY1MTY6IFRoZSA6ZW52dmFyOmBQWVRIT05NQUxMT0NTVEFUU2AgZW52aXJvbm1lbnQgdmFyaWFibGUgY2FuIG5vdworICBhbHNvIGJlIHVzZWQgb24gUHl0aG9uIGNvbXBpbGVkIGluIHJlbGVhc2UgbW9kZS4gSXQgbm93IGhhcyBubyBlZmZlY3QgaWYKKyAgc2V0IHRvIGFuIGVtcHR5IHN0cmluZy4KKworLSBJc3N1ZSAjMjY1MTY6IEluIGRlYnVnIG1vZGUsIGRlYnVnIGhvb2tzIGFyZSBub3cgYWxzbyBpbnN0YWxsZWQgb24gUHl0aG9uCisgIG1lbW9yeSBhbGxvY2F0b3JzIHdoZW4gUHl0aG9uIGlzIGNvbmZpZ3VyZWQgd2l0aG91dCBweW1hbGxvYy4KKwogLSBJc3N1ZSAjMjY0NjQ6IEZpeCBzdHIudHJhbnNsYXRlKCkgd2hlbiBzdHJpbmcgaXMgQVNDSUkgYW5kIGZpcnN0IHJlcGxhY2VtZW50cwogICByZW1vdmVzIGNoYXJhY3RlciwgYnV0IG5leHQgcmVwbGFjZW1lbnQgdXNlcyBhIG5vbi1BU0NJSSBjaGFyYWN0ZXIgb3IgYQogICBzdHJpbmcgbG9uZ2VyIHRoYW4gMSBjaGFyYWN0ZXIuIFJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiBQeXRob24gMy41LjAuCkBAIC02MDEsMTEgKzE2NDYsMzcgQEAKIC0gSXNzdWUgIzI2MzAyOiBDb3JyZWN0IGJlaGF2aW9yIHRvIHJlamVjdCBjb21tYSBhcyBhIGxlZ2FsIGNoYXJhY3RlciBmb3IKICAgY29va2llIG5hbWVzLgogCistIElzc3VlICMyNjEzNjogVXBncmFkZSB0aGUgd2FybmluZyB3aGVuIGEgZ2VuZXJhdG9yIHJhaXNlcyBTdG9wSXRlcmF0aW9uCisgIGZyb20gUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyB0byBEZXByZWNhdGlvbldhcm5pbmcuICBQYXRjaCBieSBBbmlzaAorICBTaGFoLgorCistIElzc3VlICMyNjIwNDogVGhlIGNvbXBpbGVyIG5vdyBpZ25vcmVzIGFsbCBjb25zdGFudCBzdGF0ZW1lbnRzOiBieXRlcywgc3RyLAorICBpbnQsIGZsb2F0LCBjb21wbGV4LCBuYW1lIGNvbnN0YW50cyAoTm9uZSwgRmFsc2UsIFRydWUpLCBFbGxpcHNpcworICBhbmQgYXN0LkNvbnN0YW50OyBub3Qgb25seSBzdHIgYW5kIGludC4gRm9yIGV4YW1wbGUsIGBgMS4wYGAgaXMgbm93IGlnbm9yZWQKKyAgaW4gYGBkZWYgZigpOiAxLjBgYC4KKwogLSBJc3N1ZSAjNDgwNjogQXZvaWQgbWFza2luZyB0aGUgb3JpZ2luYWwgVHlwZUVycm9yIGV4Y2VwdGlvbiB3aGVuIHVzaW5nIHN0YXIKICAgKCopIHVucGFja2luZyBpbiBmdW5jdGlvbiBjYWxscy4gIEJhc2VkIG9uIHBhdGNoIGJ5IEhhZ2VuIEbDvHJzdGVuYXUgYW5kCiAgIERhbmllbCBVcmJhbi4KIAotLSBJc3N1ZSAjMjcxMzg6IEZpeCB0aGUgZG9jIGNvbW1lbnQgZm9yIEZpbGVGaW5kZXIuZmluZF9zcGVjKCkuCistIElzc3VlICMyNjE0NjogQWRkIGEgbmV3IGtpbmQgb2YgQVNUIG5vZGU6IGBgYXN0LkNvbnN0YW50YGAuIEl0IGNhbiBiZSB1c2VkCisgIGJ5IGV4dGVybmFsIEFTVCBvcHRpbWl6ZXJzLCBidXQgdGhlIGNvbXBpbGVyIGRvZXMgbm90IGVtaXQgZGlyZWN0bHkgc3VjaAorICBub2RlLgorCistIElzc3VlICMyMzYwMTogIFNwZWQtdXAgYWxsb2NhdGlvbiBvZiBkaWN0IGtleSBvYmplY3RzIGJ5IHVzaW5nIFB5dGhvbidzCisgIHNtYWxsIG9iamVjdCBhbGxvY2F0b3IuICAoQ29udHJpYnV0ZWQgYnkgSnVsaWFuIFRheWxvci4pCisKKy0gSXNzdWUgIzE4MDE4OiBJbXBvcnQgcmFpc2VzIEltcG9ydEVycm9yIGluc3RlYWQgb2YgU3lzdGVtRXJyb3IgaWYgYSByZWxhdGl2ZQorICBpbXBvcnQgaXMgYXR0ZW1wdGVkIHdpdGhvdXQgYSBrbm93biBwYXJlbnQgcGFja2FnZS4KKworLSBJc3N1ZSAjMjU4NDM6IFdoZW4gY29tcGlsaW5nIGNvZGUsIGRvbid0IG1lcmdlIGNvbnN0YW50cyBpZiB0aGV5IGFyZSBlcXVhbAorICBidXQgaGF2ZSBhIGRpZmZlcmVudCB0eXBlcy4gRm9yIGV4YW1wbGUsIGBgZjEsIGYyID0gbGFtYmRhOiAxLCBsYW1iZGE6IDEuMGBgCisgIGlzIG5vdyBjb3JyZWN0bHkgY29tcGlsZWQgdG8gdHdvIGRpZmZlcmVudCBmdW5jdGlvbnM6IGBgZjEoKWBgIHJldHVybnMgYGAxYGAKKyAgKGBgaW50YGApIGFuZCBgYGYyKClgYCByZXR1cm5zIGBgMS4wYGAgKGBgZmxvYXRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKKyAgYXJlIGVxdWFsLgorCistIElzc3VlICMyNjEwNzogVGhlIGZvcm1hdCBvZiB0aGUgYGBjb19sbm90YWJgYCBhdHRyaWJ1dGUgb2YgY29kZSBvYmplY3RzCisgIGNoYW5nZXMgdG8gc3VwcG9ydCBuZWdhdGl2ZSBsaW5lIG51bWJlciBkZWx0YS4KIAogLSBJc3N1ZSAjMjYxNTQ6IEFkZCBhIG5ldyBwcml2YXRlIF9QeVRocmVhZFN0YXRlX1VuY2hlY2tlZEdldCgpIGZ1bmN0aW9uIHRvIGdldAogICB0aGUgY3VycmVudCBQeXRob24gdGhyZWFkIHN0YXRlLCBidXQgZG9uJ3QgaXNzdWUgYSBmYXRhbCBlcnJvciBpZiBpdCBpcyBOVUxMLgpAQCAtNjE0LDE1ICsxNjg1LDggQEAKICAgUHl0aG9uIDMuNS4xIHRvIGhpZGUgdGhlIGV4YWN0IGltcGxlbWVudGF0aW9uIG9mIGF0b21pYyBDIHR5cGVzLCB0byBhdm9pZAogICBjb21waWxlciBpc3N1ZXMuCiAKLS0gSXNzdWUgIzI2MTk0OiAgRGVxdWUuaW5zZXJ0KCkgZ2F2ZSBvZGQgcmVzdWx0cyBmb3IgYm91bmRlZCBkZXF1ZXMgdGhhdCBoYWQKLSAgcmVhY2hlZCB0aGVpciBtYXhpbXVtIHNpemUuICBOb3cgYW4gSW5kZXhFcnJvciB3aWxsIGJlIHJhaXNlZCB3aGVuIGF0dGVtcHRpbmcKLSAgdG8gaW5zZXJ0IGludG8gYSBmdWxsIGRlcXVlLgotCi0tIElzc3VlICMyNTg0MzogV2hlbiBjb21waWxpbmcgY29kZSwgZG9uJ3QgbWVyZ2UgY29uc3RhbnRzIGlmIHRoZXkgYXJlIGVxdWFsCi0gIGJ1dCBoYXZlIGEgZGlmZmVyZW50IHR5cGVzLiBGb3IgZXhhbXBsZSwgYGBmMSwgZjIgPSBsYW1iZGE6IDEsIGxhbWJkYTogMS4wYGAKLSAgaXMgbm93IGNvcnJlY3RseSBjb21waWxlZCB0byB0d28gZGlmZmVyZW50IGZ1bmN0aW9uczogYGBmMSgpYGAgcmV0dXJucyBgYDFgYAotICAoYGBpbnRgYCkgYW5kIGBgZjIoKWBgIHJldHVybnMgYGAxLjBgYCAoYGBpbnRgYCksIGV2ZW4gaWYgYGAxYGAgYW5kIGBgMS4wYGAKLSAgYXJlIGVxdWFsLgorLSBJc3N1ZSAjMjU3OTE6IElmIF9fcGFja2FnZV9fICE9IF9fc3BlY19fLnBhcmVudCBvciBpZiBuZWl0aGVyIF9fcGFja2FnZV9fIG9yCisgIF9fc3BlY19fIGFyZSBkZWZpbmVkIHRoZW4gSW1wb3J0V2FybmluZyBpcyByYWlzZWQuCiAKIC0gSXNzdWUgIzIyOTk1OiBbVVBEQVRFXSBDb21tZW50IG91dCB0aGUgb25lIG9mIHRoZSBwaWNrbGVhYmlsaXR5IHRlc3RzIGluCiAgIF9QeU9iamVjdF9HZXRTdGF0ZSgpIGR1ZSB0byByZWdyZXNzaW9ucyBvYnNlcnZlZCBpbiBDeXRob24tYmFzZWQgcHJvamVjdHMuCkBAIC02NDksNyArMTcxMywxMCBAQAogLSBJc3N1ZSAjMjU3MDk6IEZpeGVkIHByb2JsZW0gd2l0aCBpbi1wbGFjZSBzdHJpbmcgY29uY2F0ZW5hdGlvbiBhbmQgdXRmLTgKICAgY2FjaGUuCiAKLS0gSXNzdWUgIzI3MTQ3OiBNZW50aW9uIFBFUCA0MjAgaW4gdGhlIGltcG9ydGxpYiBkb2NzLgorLSBJc3N1ZSAjNTMxOTogTmV3IFB5X0ZpbmFsaXplRXgoKSBBUEkgYWxsb3dpbmcgUHl0aG9uIHRvIHNldCBhbiBleGl0IHN0YXR1cworICBvZiAxMjAgb24gZmFpbHVyZSB0byBmbHVzaCBidWZmZXJlZCBzdHJlYW1zLgorCistIElzc3VlICMyNTQ4NTogdGVsbmV0bGliLlRlbG5ldCBpcyBub3cgYSBjb250ZXh0IG1hbmFnZXIuCiAKIC0gSXNzdWUgIzI0MDk3OiBGaXhlZCBjcmFzaCBpbiBvYmplY3QuX19yZWR1Y2VfXygpIGlmIHNsb3QgbmFtZSBpcyBmcmVlZCBpbnNpZGUKICAgX19nZXRhdHRyX18uCkBAIC02NTgsNiArMTcyNSw4OCBAQAogICBfX2J5dGVzX18sIF9fdHJ1bmNfXywgYW5kIF9fZmxvYXRfXyByZXR1cm5pbmcgaW5zdGFuY2VzIG9mIHN1YmNsYXNzZXMgb2YKICAgYnl0ZXMsIGludCwgYW5kIGZsb2F0IHRvIHN1YmNsYXNzZXMgb2YgYnl0ZXMsIGludCwgYW5kIGZsb2F0IGNvcnJlc3BvbmRpbmdseS4KIAorLSBJc3N1ZSAjMjU2MzA6IEZpeCBhIHBvc3NpYmxlIHNlZ2ZhdWx0IGR1cmluZyBhcmd1bWVudCBwYXJzaW5nIGluIGZ1bmN0aW9ucworICB0aGF0IGFjY2VwdCBmaWxlc3lzdGVtIHBhdGhzLgorCistIElzc3VlICMyMzU2NDogRml4ZWQgYSBwYXJ0aWFsbHkgYnJva2VuIHNhbml0eSBjaGVjayBpbiB0aGUgX3Bvc2l4c3VicHJvY2VzcworICBpbnRlcm5hbHMgcmVnYXJkaW5nIGhvdyBmZHNfdG9fcGFzcyB3ZXJlIHBhc3NlZCB0byB0aGUgY2hpbGQuICBUaGUgYnVnIGhhZAorICBubyBhY3R1YWwgaW1wYWN0IGFzIHN1YnByb2Nlc3MucHkgYWxyZWFkeSBhdm9pZGVkIGl0LgorCistIElzc3VlICMyNTM4ODogRml4ZWQgdG9rZW5pemVyIGNyYXNoIHdoZW4gcHJvY2Vzc2luZyB1bmRlY29kYWJsZSBzb3VyY2UgY29kZQorICB3aXRoIGEgbnVsbCBieXRlLgorCistIElzc3VlICMyNTQ2MjogVGhlIGhhc2ggb2YgdGhlIGtleSBub3cgaXMgY2FsY3VsYXRlZCBvbmx5IG9uY2UgaW4gbW9zdAorICBvcGVyYXRpb25zIGluIEMgaW1wbGVtZW50YXRpb24gb2YgT3JkZXJlZERpY3QuCisKKy0gSXNzdWUgIzIyOTk1OiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIF9fcmVkdWNlX18gYW5kIF9fcmVkdWNlX2V4X18gbm93CisgIHJlamVjdHMgYnVpbHRpbiB0eXBlcyB3aXRoIG5vdCBkZWZpbmVkIF9fbmV3X18uCisKKy0gSXNzdWUgIzI0ODAyOiBBdm9pZCBidWZmZXIgb3ZlcnJlYWRzIHdoZW4gaW50KCksIGZsb2F0KCksIGNvbXBpbGUoKSwgZXhlYygpCisgIGFuZCBldmFsKCkgYXJlIHBhc3NlZCBieXRlcy1saWtlIG9iamVjdHMuICBUaGVzZSBvYmplY3RzIGFyZSBub3QKKyAgbmVjZXNzYXJpbHkgdGVybWluYXRlZCBieSBhIG51bGwgYnl0ZSwgYnV0IHRoZSBmdW5jdGlvbnMgYXNzdW1lZCB0aGV5IHdlcmUuCisKKy0gSXNzdWUgIzI1NTU1OiBGaXggcGFyc2VyIGFuZCBBU1Q6IGZpbGwgbGluZW5vIGFuZCBjb2xfb2Zmc2V0IG9mICJhcmciIG5vZGUKKyAgd2hlbiBjb21waWxpbmcgQVNUIGZyb20gUHl0aG9uIG9iamVjdHMuCisKKy0gSXNzdWUgIzI0NzI2OiBGaXhlZCBhIGNyYXNoIGFuZCBsZWFraW5nIE5VTEwgaW4gcmVwcigpIG9mIE9yZGVyZWREaWN0IHRoYXQKKyAgd2FzIG11dGF0ZWQgYnkgZGlyZWN0IGNhbGxzIG9mIGRpY3QgbWV0aG9kcy4KKworLSBJc3N1ZSAjMjU0NDk6IEl0ZXJhdGluZyBPcmRlcmVkRGljdCB3aXRoIGtleXMgd2l0aCB1bnN0YWJsZSBoYXNoIG5vdyByYWlzZXMKKyAgS2V5RXJyb3IgaW4gQyBpbXBsZW1lbnRhdGlvbnMgYXMgd2VsbCBhcyBpbiBQeXRob24gaW1wbGVtZW50YXRpb24uCisKKy0gSXNzdWUgIzI1Mzk1OiBGaXhlZCBjcmFzaCB3aGVuIGhpZ2hseSBuZXN0ZWQgT3JkZXJlZERpY3Qgc3RydWN0dXJlcyB3ZXJlCisgIGdhcmJhZ2UgY29sbGVjdGVkLgorCistIElzc3VlICMyNTQwMTogT3B0aW1pemUgYnl0ZXMuZnJvbWhleCgpIGFuZCBieXRlYXJyYXkuZnJvbWhleCgpOiB0aGV5IGFyZSBub3cKKyAgYmV0d2VlbiAyeCBhbmQgMy41eCBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1Mzk5OiBPcHRpbWl6ZSBieXRlYXJyYXkgJSBhcmdzIHVzaW5nIHRoZSBuZXcgcHJpdmF0ZSBfUHlCeXRlc1dyaXRlcgorICBBUEkuIEZvcm1hdHRpbmcgaXMgbm93IGJldHdlZW4gMi41IGFuZCA1IHRpbWVzIGZhc3Rlci4KKworLSBJc3N1ZSAjMjUyNzQ6IHN5cy5zZXRyZWN1cnNpb25saW1pdCgpIG5vdyByYWlzZXMgYSBSZWN1cnNpb25FcnJvciBpZiB0aGUgbmV3CisgIHJlY3Vyc2lvbiBsaW1pdCBpcyB0b28gbG93IGRlcGVuZGluZyBhdCB0aGUgY3VycmVudCByZWN1cnNpb24gZGVwdGguIE1vZGlmeQorICBhbHNvIHRoZSAibG93ZXItd2F0ZXIgbWFyayIgZm9ybXVsYSB0byBtYWtlIGl0IG1vbm90b25pYy4gVGhpcyBtYXJrIGlzIHVzZWQKKyAgdG8gZGVjaWRlIHdoZW4gdGhlIG92ZXJmbG93ZWQgZmxhZyBvZiB0aGUgdGhyZWFkIHN0YXRlIGlzIHJlc2V0LgorCistIElzc3VlICMyNDQwMjogRml4IGlucHV0KCkgdG8gcHJvbXB0IHRvIHRoZSByZWRpcmVjdGVkIHN0ZG91dCB3aGVuCisgIHN5cy5zdGRvdXQuZmlsZW5vKCkgZmFpbHMuCisKKy0gSXNzdWUgIzI1MzQ5OiBPcHRpbWl6ZSBieXRlcyAlIGFyZ3MgdXNpbmcgdGhlIG5ldyBwcml2YXRlIF9QeUJ5dGVzV3JpdGVyIEFQSS4KKyAgRm9ybWF0dGluZyBpcyBub3cgdXAgdG8gMiB0aW1lcyBmYXN0ZXIuCisKKy0gSXNzdWUgIzI0ODA2OiBQcmV2ZW50IGJ1aWx0aW4gdHlwZXMgdGhhdCBhcmUgbm90IGFsbG93ZWQgdG8gYmUgc3ViY2xhc3NlZCBmcm9tCisgIGJlaW5nIHN1YmNsYXNzZWQgdGhyb3VnaCBtdWx0aXBsZSBpbmhlcml0YW5jZS4KKworLSBJc3N1ZSAjMjUzMDE6IFRoZSBVVEYtOCBkZWNvZGVyIGlzIG5vdyB1cCB0byAxNSB0aW1lcyBhcyBmYXN0IGZvciBlcnJvcgorICBoYW5kbGVyczogYGBpZ25vcmVgYCwgYGByZXBsYWNlYGAgYW5kIGBgc3Vycm9nYXRlZXNjYXBlYGAuCisKKy0gSXNzdWUgIzI0ODQ4OiBGaXhlZCBhIG51bWJlciBvZiBidWdzIGluIFVURi03IGRlY29kaW5nIG9mIG1pc2Zvcm1lZCBkYXRhLgorCistIElzc3VlICMyNTI2NzogVGhlIFVURi04IGVuY29kZXIgaXMgbm93IHVwIHRvIDc1IHRpbWVzIGFzIGZhc3QgZm9yIGVycm9yCisgIGhhbmRsZXJzOiBgYGlnbm9yZWBgLCBgYHJlcGxhY2VgYCwgYGBzdXJyb2dhdGVlc2NhcGVgYCwgYGBzdXJyb2dhdGVwYXNzYGAuCisgIFBhdGNoIGNvLXdyaXR0ZW4gd2l0aCBTZXJoaXkgU3RvcmNoYWthLgorCistIElzc3VlICMyNTI4MDogSW1wb3J0IHRyYWNlIG1lc3NhZ2VzIGVtaXR0ZWQgaW4gdmVyYm9zZSAoLXYpIG1vZGUgYXJlIG5vCisgIGxvbmdlciBmb3JtYXR0ZWQgdHdpY2UuCisKKy0gSXNzdWUgIzI1MjI3OiBPcHRpbWl6ZSBBU0NJSSBhbmQgbGF0aW4xIGVuY29kZXJzIHdpdGggdGhlIGBgc3Vycm9nYXRlZXNjYXBlYGAKKyAgZXJyb3IgaGFuZGxlcjogdGhlIGVuY29kZXJzIGFyZSBub3cgdXAgdG8gMyB0aW1lcyBhcyBmYXN0LiBJbml0aWFsIHBhdGNoCisgIHdyaXR0ZW4gYnkgU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjUwMDM6IE9uIFNvbGFyaXMgMTEuMyBvciBuZXdlciwgb3MudXJhbmRvbSgpIG5vdyB1c2VzIHRoZQorICBnZXRyYW5kb20oKSBmdW5jdGlvbiBpbnN0ZWFkIG9mIHRoZSBnZXRlbnRyb3B5KCkgZnVuY3Rpb24uIFRoZSBnZXRlbnRyb3B5KCkKKyAgZnVuY3Rpb24gaXMgYmxvY2tpbmcgdG8gZ2VuZXJhdGUgdmVyeSBnb29kIHF1YWxpdHkgZW50cm9weSwgb3MudXJhbmRvbSgpCisgIGRvZXNuJ3QgbmVlZCBzdWNoIGhpZ2gtcXVhbGl0eSBlbnRyb3B5LgorCistIElzc3VlICM5MjMyOiBNb2RpZnkgUHl0aG9uJ3MgZ3JhbW1hciB0byBhbGxvdyB0cmFpbGluZyBjb21tYXMgaW4gdGhlCisgIGFyZ3VtZW50IGxpc3Qgb2YgYSBmdW5jdGlvbiBkZWNsYXJhdGlvbi4gIEZvciBleGFtcGxlLCAiZGVmIGYoXCosIGEgPQorICAzLCk6IHBhc3MiIGlzIG5vdyBsZWdhbC4gUGF0Y2ggZnJvbSBNYXJrIERpY2tpbnNvbi4KKworLSBJc3N1ZSAjMjQ5NjU6IEltcGxlbWVudCBQRVAgNDk4ICJMaXRlcmFsIFN0cmluZyBJbnRlcnBvbGF0aW9uIi4gVGhpcworICBhbGxvd3MgeW91IHRvIGVtYmVkIGV4cHJlc3Npb25zIGluc2lkZSBmLXN0cmluZ3MsIHdoaWNoIGFyZQorICBjb252ZXJ0ZWQgdG8gbm9ybWFsIHN0cmluZ3MgYXQgcnVuIHRpbWUuIEdpdmVuIHg9MywgdGhlbgorICBmJ3ZhbHVlPXt4fScgPT0gJ3ZhbHVlPTMnLiBQYXRjaCBieSBFcmljIFYuIFNtaXRoLgorCiAtIElzc3VlICMyNjQ3ODogRml4IHNlbWFudGljIGJ1Z3Mgd2hlbiB1c2luZyBiaW5hcnkgb3BlcmF0b3JzIHdpdGggZGljdGlvbmFyeQogICB2aWV3cyBhbmQgdHVwbGVzLgogCkBAIC02NjYsNzkgKzE4MTUsMjcgQEAKIAogLSBJc3N1ZSAjMjU2NjA6IEZpeCBUQUIga2V5IGJlaGF2aW91ciBpbiBSRVBMIHdpdGggcmVhZGxpbmUuCiAKKy0gSXNzdWUgIzI2Mjg4OiBPcHRpbWl6ZSBQeUxvbmdfQXNEb3VibGUuCisKKy0gSXNzdWVzICMyNjI4OSBhbmQgIzI2MzE1OiBPcHRpbWl6ZSBmbG9vciBhbmQgbW9kdWxvIGRpdmlzaW9uIGZvcgorICBzaW5nbGUtZGlnaXQgbG9uZ3MuICBNaWNyb2JlbmNobWFya3Mgc2hvdyAyLTIuNXggaW1wcm92ZW1lbnQuICBCdWlsdC1pbgorICAnZGl2bW9kJyBmdW5jdGlvbiBpcyBub3cgYWxzbyB+MTAlIGZhc3Rlci4KKwogLSBJc3N1ZSAjMjU4ODc6IFJhaXNlIGEgUnVudGltZUVycm9yIHdoZW4gYSBjb3JvdXRpbmUgb2JqZWN0IGlzIGF3YWl0ZWQKICAgbW9yZSB0aGFuIG9uY2UuCiAKLS0gSXNzdWUgIzI3MjQzOiBVcGRhdGUgdGhlIF9fYWl0ZXJfXyBwcm90b2NvbDogaW5zdGVhZCBvZiByZXR1cm5pbmcKLSAgYW4gYXdhaXRhYmxlIHRoYXQgcmVzb2x2ZXMgdG8gYW4gYXN5bmNocm9ub3VzIGl0ZXJhdG9yLCB0aGUgYXN5bmNocm9ub3VzCi0gIGl0ZXJhdG9yIHNob3VsZCBiZSByZXR1cm5lZCBkaXJlY3RseS4gIERvaW5nIHRoZSBmb3JtZXIgd2lsbCB0cmlnZ2VyIGEKLSAgUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZy4KLQotCiBMaWJyYXJ5CiAtLS0tLS0tCiAKLS0gW1NlY3VyaXR5XSBJc3N1ZSAjMjY1NTY6IFVwZGF0ZSBleHBhdCB0byAyLjEuMSwgZml4ZXMgQ1ZFLTIwMTUtMTI4My4KLQotLSBbU2VjdXJpdHldIEZpeCBUTFMgc3RyaXBwaW5nIHZ1bG5lcmFiaWxpdHkgaW4gc210cGxpYiwgQ1ZFLTIwMTYtMDc3Mi4KLSAgUmVwb3J0ZWQgYnkgVGVhbSBPc3RzdHJvbQotCi0tIElzc3VlICMyMTM4NjogSW1wbGVtZW50IG1pc3NpbmcgSVB2NEFkZHJlc3MuaXNfZ2xvYmFsIHByb3BlcnR5LiAgSXQgd2FzCi0gIGRvY3VtZW50ZWQgc2luY2UgMDdhNTYxMGJhZTlkLiAgSW5pdGlhbCBwYXRjaCBieSBSb2dlciBMdWV0aGkuCi0KLS0gSXNzdWUgIzIwOTAwOiBkaXN0dXRpbHMgcmVnaXN0ZXIgY29tbWFuZCBub3cgZGVjb2RlcyBIVFRQIHJlc3BvbnNlcwotICBjb3JyZWN0bHkuICBJbml0aWFsIHBhdGNoIGJ5IGluZ3JpZC4KLQotLSBBIG5ldyB2ZXJzaW9uIG9mIHR5cGluZy5weSBwcm92aWRlcyBzZXZlcmFsIG5ldyBjbGFzc2VzIGFuZAotICBmZWF0dXJlczogQG92ZXJsb2FkIG91dHNpZGUgc3R1YnMsIFJldmVyc2libGUsIERlZmF1bHREaWN0LCBUZXh0LAotICBDb250ZXh0TWFuYWdlciwgVHlwZVtdLCBOZXdUeXBlKCksIFRZUEVfQ0hFQ0tJTkcsIGFuZCBudW1lcm91cyBidWcKLSAgZml4ZXMgKG5vdGUgdGhhdCBzb21lIG9mIHRoZSBuZXcgZmVhdHVyZXMgYXJlIG5vdCB5ZXQgaW1wbGVtZW50ZWQgaW4KLSAgbXlweSBvciBvdGhlciBzdGF0aWMgYW5hbHl6ZXJzKS4gIEFsc28gY2xhc3NlcyBmb3IgUEVQIDQ5MgotICAoQXdhaXRhYmxlLCBBc3luY0l0ZXJhYmxlLCBBc3luY0l0ZXJhdG9yKSBoYXZlIGJlZW4gYWRkZWQgKGluIGZhY3QKLSAgdGhleSBtYWRlIGl0IGludG8gMy41LjEgYnV0IHdlcmUgbmV2ZXIgbWVudGlvbmVkKS4KLQotLSBJc3N1ZSAjMjU3Mzg6IFN0b3AgaHR0cC5zZXJ2ZXIuQmFzZUhUVFBSZXF1ZXN0SGFuZGxlci5zZW5kX2Vycm9yKCkgZnJvbQotICBzZW5kaW5nIGEgbWVzc2FnZSBib2R5IGZvciAyMDUgUmVzZXQgQ29udGVudC4gIEFsc28sIGRvbid0IHNlbmQgQ29udGVudAotICBoZWFkZXIgZmllbGRzIGluIHJlc3BvbnNlcyB0aGF0IGRvbid0IGhhdmUgYSBib2R5LiAgUGF0Y2ggYnkgU3VzdW11Ci0gIEtvc2hpYmEuCi0KLS0gSXNzdWUgIzIxMzEzOiBGaXggdGhlICJwbGF0Zm9ybSIgbW9kdWxlIHRvIHRvbGVyYXRlIHdoZW4gc3lzLnZlcnNpb24KLSAgY29udGFpbnMgdHJ1bmNhdGVkIGJ1aWxkIGluZm9ybWF0aW9uLgotCi0tIFtTZWN1cml0eV0gSXNzdWUgIzI2ODM5OiBPbiBMaW51eCwgOmZ1bmM6YG9zLnVyYW5kb21gIG5vdyBjYWxscwotICBgYGdldHJhbmRvbSgpYGAgd2l0aCBgYEdSTkRfTk9OQkxPQ0tgYCB0byBmYWxsIGJhY2sgb24gcmVhZGluZwotICBgYC9kZXYvdXJhbmRvbWBgIGlmIHRoZSB1cmFuZG9tIGVudHJvcHkgcG9vbCBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiBQYXRjaAotICB3cml0dGVuIGJ5IENvbG0gQnVja2xleS4KLQotLSBJc3N1ZSAjMjcxNjQ6IEluIHRoZSB6bGliIG1vZHVsZSwgYWxsb3cgZGVjb21wcmVzc2luZyByYXcgRGVmbGF0ZSBzdHJlYW1zCi0gIHdpdGggYSBwcmVkZWZpbmVkIHpkaWN0LiAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCi0KLS0gSXNzdWUgIzI0MjkxOiBGaXggd3NnaXJlZi5zaW1wbGVfc2VydmVyLldTR0lSZXF1ZXN0SGFuZGxlciB0byBjb21wbGV0ZWx5Ci0gIHdyaXRlIGRhdGEgdG8gdGhlIGNsaWVudC4gIFByZXZpb3VzbHkgaXQgY291bGQgZG8gcGFydGlhbCB3cml0ZXMgYW5kCi0gIHRydW5jYXRlIGRhdGEuICBBbHNvLCB3c2dpcmVmLmhhbmRsZXIuU2VydmVySGFuZGxlciBjYW4gbm93IGhhbmRsZSBzdGRvdXQKLSAgZG9pbmcgcGFydGlhbCB3cml0ZXMsIGJ1dCB0aGlzIGlzIGRlcHJlY2F0ZWQuCi0KLS0gSXNzdWUgIzI2ODA5OiBBZGQgYGBfX2FsbF9fYGAgdG8gOm1vZDpgc3RyaW5nYC4gIFBhdGNoIGJ5IEVtYW51ZWwgQmFycnkuCi0KLS0gSXNzdWUgIzI2MzczOiBzdWJwcm9jZXNzLlBvcGVuLmNvbW11bmljYXRlIG5vdyBjb3JyZWN0bHkgaWdub3JlcwotICBCcm9rZW5QaXBlRXJyb3Igd2hlbiB0aGUgY2hpbGQgcHJvY2VzcyBkaWVzIGJlZm9yZSAuY29tbXVuaWNhdGUoKQotICBpcyBjYWxsZWQgaW4gbW9yZS9hbGwgY2lyY3Vtc3RhbmNlcy4KLQotLSBJc3N1ZSAjMjE3NzY6IGRpc3R1dGlscy51cGxvYWQgbm93IGNvcnJlY3RseSBoYW5kbGVzIEhUVFBFcnJvci4KLSAgSW5pdGlhbCBwYXRjaCBieSBDbGF1ZGl1IFBvcGEuCi0KLS0gSXNzdWUgIzI3MTE0OiBGaXggU1NMQ29udGV4dC5fbG9hZF93aW5kb3dzX3N0b3JlX2NlcnRzIGZhaWxzIHdpdGgKLSAgUGVybWlzc2lvbkVycm9yCi0KLS0gSXNzdWUgIzE4MzgzOiBBdm9pZCBjcmVhdGluZyBkdXBsaWNhdGUgZmlsdGVycyB3aGVuIHVzaW5nIGZpbHRlcndhcm5pbmdzCi0gIGFuZCBzaW1wbGVmaWx0ZXIuICBCYXNlZCBvbiBwYXRjaCBieSBBbGV4IFNoa29wLgotCiAtIElzc3VlICMyNzA1NzogRml4IG9zLnNldF9pbmhlcml0YWJsZSgpIG9uIEFuZHJvaWQsIGlvY3RsKCkgaXMgYmxvY2tlZCBieQogICBTRUxpbnV4IGFuZCBmYWlscyB3aXRoIEVBQ0NFU1MuIFRoZSBmdW5jdGlvbiBub3cgZmFsbHMgYmFjayB0byBmY250bCgpLgogICBQYXRjaCB3cml0dGVuIGJ5IE1pY2hhxYIgQmVkbmFyc2tpLgogCiAtIElzc3VlICMyNzAxNDogRml4IGluZmluaXRlIHJlY3Vyc2lvbiB1c2luZyB0eXBpbmcucHkuICBUaGFua3MgdG8gS2FsbGUgVHV1cmUhCiAKKy0gSXNzdWUgIzI3MDMxOiBSZW1vdmVkIGR1bW15IG1ldGhvZHMgaW4gVGtpbnRlciB3aWRnZXQgY2xhc3NlczogdGtfbWVudUJhcigpCisgIGFuZCB0a19iaW5kRm9yVHJhdmVyc2FsKCkuCisKIC0gSXNzdWUgIzE0MTMyOiBGaXggdXJsbGliLnJlcXVlc3QgcmVkaXJlY3QgaGFuZGxpbmcgd2hlbiB0aGUgdGFyZ2V0IG9ubHkgaGFzCiAgIGEgcXVlcnkgc3RyaW5nLiAgT3JpZ2luYWwgZml4IGJ5IErDoW4gSmFuZWNoLgogCkBAIC03NDgsNiArMTg0NSwxOCBAQAogICB0byBiZSBBU0NJSS1lbmNvZGFibGUsIG90aGVyd2lzZSBhIFVuaWNvZGVFbmNvZGVFcnJvciBpcyByYWlzZWQuICBCYXNlZCBvbgogICBwYXRjaCBieSBDaHJpc3RpYW4gSGVpbWVzLgogCistIElzc3VlICMyNzAzMzogVGhlIGRlZmF1bHQgdmFsdWUgb2YgdGhlIGRlY29kZV9kYXRhIHBhcmFtZXRlciBmb3IKKyAgc210cGQuU01UUENoYW5uZWwgYW5kIHNtdHBkLlNNVFBTZXJ2ZXIgY29uc3RydWN0b3JzIGlzIGNoYW5nZWQgdG8gRmFsc2UuCisKKy0gSXNzdWUgIzI3MDM0OiBSZW1vdmVkIGRlcHJlY2F0ZWQgY2xhc3MgYXN5bmNoYXQuZmlmby4KKworLSBJc3N1ZSAjMjY4NzA6IEFkZGVkIHJlYWRsaW5lLnNldF9hdXRvX2hpc3RvcnkoKSwgd2hpY2ggY2FuIHN0b3AgZW50cmllcworICBiZWluZyBhdXRvbWF0aWNhbGx5IGFkZGVkIHRvIHRoZSBoaXN0b3J5IGxpc3QuICBCYXNlZCBvbiBwYXRjaCBieSBUeWxlcgorICBDcm9tcHRvbi4KKworLSBJc3N1ZSAjMjYwMzk6IHppcGZpbGUuWmlwRmlsZS5vcGVuKCkgY2FuIG5vdyBiZSB1c2VkIHRvIHdyaXRlIGRhdGEgaW50byBhIFpJUAorICBmaWxlLCBhcyB3ZWxsIGFzIGZvciBleHRyYWN0aW5nIGRhdGEuICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMjY4OTI6IEhvbm9yIGRlYnVnbGV2ZWwgZmxhZyBpbiB1cmxsaWIucmVxdWVzdC5IVFRQSGFuZGxlci4gUGF0Y2gKICAgY29udHJpYnV0ZWQgYnkgQ2hpIEhzdWFuIFllbi4KIApAQCAtNzYyLDYgKzE4NzEsMTQgQEAKIC0gSXNzdWUgIzI2OTc3OiBSZW1vdmVkIHVubmVjZXNzYXJ5LCBhbmQgaWdub3JlZCwgY2FsbCB0byBzdW0gb2Ygc3F1YXJlcyBoZWxwZXIKICAgaW4gc3RhdGlzdGljcy5wdmFyaWFuY2UuCiAKKy0gSXNzdWUgIzI2MDAyOiBVc2UgYmlzZWN0IGluIHN0YXRpc3RpY3MubWVkaWFuIGluc3RlYWQgb2YgYSBsaW5lYXIgc2VhcmNoLgorICBQYXRjaCBieSBVcGVuZHJhIEt1bWEuCisKKy0gSXNzdWUgIzI1OTc0OiBNYWtlIHVzZSBvZiBuZXcgRGVjaW1hbC5hc19pbnRlZ2VyX3JhdGlvKCkgbWV0aG9kIGluIHN0YXRpc3RpY3MKKyAgbW9kdWxlLiBQYXRjaCBieSBTdGVmYW4gS3JhaC4KKworLSBJc3N1ZSAjMjY5OTY6IEFkZCBzZWNyZXRzIG1vZHVsZSBhcyBkZXNjcmliZWQgaW4gUEVQIDUwNi4KKwogLSBJc3N1ZSAjMjY4ODE6IFRoZSBtb2R1bGVmaW5kZXIgbW9kdWxlIG5vdyBzdXBwb3J0cyBleHRlbmRlZCBvcGNvZGUgYXJndW1lbnRzLgogCiAtIElzc3VlICMyMzgxNTogRml4ZWQgY3Jhc2hlcyByZWxhdGVkIHRvIGRpcmVjdGx5IGNyZWF0ZWQgaW5zdGFuY2VzIG9mIHR5cGVzIGluCkBAIC03NzMsNiArMTg5MCwxMSBAQAogLSBJc3N1ZSAjMjY4NzM6IHhtbHJwYyBub3cgcmFpc2VzIFJlc3BvbnNlRXJyb3Igb24gdW5zdXBwb3J0ZWQgdHlwZSB0YWdzCiAgIGluc3RlYWQgb2Ygc2lsZW50bHkgcmV0dXJuIGluY29ycmVjdCByZXN1bHQuCiAKKy0gSXNzdWUgIzI2OTE1OiAgVGhlIF9fY29udGFpbnNfXyBtZXRob2RzIGluIHRoZSBjb2xsZWN0aW9ucyBBQkNzIG5vdyBjaGVjaworICBmb3IgaWRlbnRpdHkgYmVmb3JlIGNoZWNraW5nIGVxdWFsaXR5LiAgVGhpcyBiZXR0ZXIgbWF0Y2hlcyB0aGUgYmVoYXZpb3IKKyAgb2YgdGhlIGNvbmNyZXRlIGNsYXNzZXMsIGFsbG93cyBzZW5zaWJsZSBoYW5kbGluZyBvZiBOYU5zLCBhbmQgbWFrZXMgaXQKKyAgZWFzaWVyIHRvIHJlYXNvbiBhYm91dCBjb250YWluZXIgaW52YXJpYW50cy4KKwogLSBJc3N1ZSAjMjY3MTE6IEZpeGVkIHRoZSBjb21wYXJpc29uIG9mIHBsaXN0bGliLkRhdGEgd2l0aCBvdGhlciB0eXBlcy4KIAogLSBJc3N1ZSAjMjQxMTQ6IEZpeCBhbiB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGluIGBjdHlwZXMudXRpbGAuCkBAIC03ODYsNiArMTkwOCwxMiBAQAogICBuYW1lcyB0aGF0IGhhcHBlbiB0byBoYXZlIGEgYnlwYXNzZWQgaG9zdG5hbWUgYXMgYSBzdWZmaXguICBQYXRjaCBieSBYaWFuZwogICBaaGFuZy4KIAorLSBJc3N1ZSAjMjQ5MDI6IFByaW50IHNlcnZlciBVUkwgb24gaHR0cC5zZXJ2ZXIgc3RhcnR1cC4gIEluaXRpYWwgcGF0Y2ggYnkKKyAgRmVsaXggS2Fpc2VyLgorCistIElzc3VlICMyNTc4ODogZmlsZWlucHV0Lmhvb2tfZW5jb2RlZCgpIG5vdyBzdXBwb3J0cyBhbiAiZXJyb3JzIiBhcmd1bWVudAorICBmb3IgcGFzc2luZyB0byBvcGVuLiAgT3JpZ2luYWwgcGF0Y2ggYnkgSm9zZXBoIEhhY2ttYW4uCisKIC0gSXNzdWUgIzI2NjM0OiByZWN1cnNpdmVfcmVwcigpIG5vdyBzZXRzIF9fcXVhbG5hbWVfXyBvZiB3cmFwcGVyLiAgUGF0Y2ggYnkKICAgWGlhbmcgWmhhbmcuCiAKQEAgLTgyMSwyNiArMTk0OSw1NCBAQAogLSBJc3N1ZSAjMjY3MTc6IFN0b3AgZW5jb2RpbmcgTGF0aW4tMS1pemVkIFdTR0kgcGF0aHMgd2l0aCBVVEYtOC4gIFBhdGNoIGJ5CiAgIEFudGhvbnkgU290dGlsZS4KIAorLSBJc3N1ZSAjMjY3ODI6IEFkZCBTVEFSVFVQSU5GTyB0byBzdWJwcm9jZXNzLl9fYWxsX18gb24gV2luZG93cy4KKworLSBJc3N1ZSAjMjY0MDQ6IEFkZCBjb250ZXh0IG1hbmFnZXIgdG8gc29ja2V0c2VydmVyLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY3MzU6IEZpeCA6ZnVuYzpgb3MudXJhbmRvbWAgb24gU29sYXJpcyAxMS4zIGFuZCBuZXdlciB3aGVuIHJlYWRpbmcKICAgbW9yZSB0aGFuIDEsMDI0IGJ5dGVzOiBjYWxsIGBgZ2V0cmFuZG9tKClgYCBtdWx0aXBsZSB0aW1lcyB3aXRoIGEgbGltaXQgb2YKICAgMTAyNCBieXRlcyBwZXIgY2FsbC4KIAorLSBJc3N1ZSAjMjY1ODU6IEVsaW1pbmF0ZSBodHRwLnNlcnZlci5fcXVvdGVfaHRtbCgpIGFuZCB1c2UKKyAgaHRtbC5lc2NhcGUocXVvdGU9RmFsc2UpLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI2Njg1OiBSYWlzZSBPU0Vycm9yIGlmIGNsb3NpbmcgYSBzb2NrZXQgZmFpbHMuCisKIC0gSXNzdWUgIzE2MzI5OiBBZGQgLndlYm0gdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdpYW1wYW9sbyBSb2RvbGEnLgogCiAtIElzc3VlICMxMzk1MjogQWRkIC5jc3YgdG8gbWltZXR5cGVzLnR5cGVzX21hcC4gIFBhdGNoIGJ5IEdlb2ZmIFdpbHNvbi4KIAorLSBJc3N1ZSAjMjY1ODc6IHRoZSBzaXRlIG1vZHVsZSBub3cgYWxsb3dzIC5wdGggZmlsZXMgdG8gc3BlY2lmeSBmaWxlcyB0byBiZQorICBhZGRlZCB0byBzeXMucGF0aCAoZS5nLiB6aXAgZmlsZXMpLgorCistIElzc3VlICMyNTYwOTogSW50cm9kdWNlIGNvbnRleHRsaWIuQWJzdHJhY3RDb250ZXh0TWFuYWdlciBhbmQKKyAgdHlwaW5nLkNvbnRleHRNYW5hZ2VyLgorCiAtIElzc3VlICMyNjcwOTogRml4ZWQgWTIwMzggcHJvYmxlbSBpbiBsb2FkaW5nIGJpbmFyeSBQTGlzdHMuCiAKIC0gSXNzdWUgIzIzNzM1OiBIYW5kbGUgdGVybWluYWwgcmVzaXppbmcgd2l0aCBSZWFkbGluZSA2LjMrIGJ5IGluc3RhbGxpbmcgb3VyCiAgIG93biBTSUdXSU5DSCBoYW5kbGVyLiAgUGF0Y2ggYnkgRXJpYyBQcmljZS4KIAorLSBJc3N1ZSAjMjU5NTE6IENoYW5nZSBTU0xTb2NrZXQuc2VuZGFsbCgpIHRvIHJldHVybiBOb25lLCBhcyBleHBsaWNpdGx5CisgIGRvY3VtZW50ZWQgZm9yIHBsYWluIHNvY2tldCBvYmplY3RzLiAgUGF0Y2ggYnkgQXZpdiBQYWxpdm9kYS4KKwogLSBJc3N1ZSAjMjY1ODY6IEluIGh0dHAuc2VydmVyLCByZXNwb25kIHdpdGggIjQxMyBSZXF1ZXN0IGhlYWRlciBmaWVsZHMgdG9vCiAgIGxhcmdlIiBpZiB0aGVyZSBhcmUgdG9vIG1hbnkgaGVhZGVyIGZpZWxkcyB0byBwYXJzZSwgcmF0aGVyIHRoYW4ga2lsbGluZwogICB0aGUgY29ubmVjdGlvbiBhbmQgcmFpc2luZyBhbiB1bmhhbmRsZWQgZXhjZXB0aW9uLiAgUGF0Y2ggYnkgWGlhbmcgWmhhbmcuCiAKKy0gSXNzdWUgIzI2Njc2OiBBZGRlZCBtaXNzaW5nIFhNTFB1bGxQYXJzZXIgdG8gRWxlbWVudFRyZWUuX19hbGxfXy4KKwogLSBJc3N1ZSAjMjI4NTQ6IENoYW5nZSBCdWZmZXJlZFJlYWRlci53cml0YWJsZSgpIGFuZAogICBCdWZmZXJlZFdyaXRlci5yZWFkYWJsZSgpIHRvIGFsd2F5cyByZXR1cm4gRmFsc2UuCiAKKy0gSXNzdWUgIzI2NDkyOiBFeGhhdXN0ZWQgaXRlcmF0b3Igb2YgYXJyYXkuYXJyYXkgbm93IGNvbmZvcm1zIHdpdGggdGhlIGJlaGF2aW9yCisgIG9mIGl0ZXJhdG9ycyBvZiBvdGhlciBtdXRhYmxlIHNlcXVlbmNlczogaXQgbGVmdHMgZXhoYXVzdGVkIGV2ZW4gaWYgaXRlcmF0ZWQKKyAgYXJyYXkgaXMgZXh0ZW5kZWQuCisKKy0gSXNzdWUgIzI2NjQxOiBkb2N0ZXN0LkRvY0ZpbGVUZXN0IGFuZCBkb2N0ZXN0LnRlc3RmaWxlKCkgbm93IHN1cHBvcnQKKyAgcGFja2FnZXMgKG1vZHVsZSBzcGxpdHRlZCBpbnRvIG11bHRpcGxlIGRpcmVjdG9yaWVzKSBmb3IgdGhlIHBhY2thZ2UKKyAgcGFyYW1ldGVyLgorCiAtIElzc3VlICMyNTE5NTogRml4IGEgcmVncmVzc2lvbiBpbiBtb2NrLk1hZ2ljTW9jay4gX0NhbGwgaXMgYSBzdWJjbGFzcyBvZgogICB0dXBsZSAoY2hhbmdlc2V0IDM2MDNiYWU2M2MxMyBvbmx5IHdvcmtzIGZvciBjbGFzc2VzKSBzbyB3ZSBuZWVkIHRvCiAgIGltcGxlbWVudCBfX25lX18gb3Vyc2VsdmVzLiAgUGF0Y2ggYnkgQW5kcmV3IFBsdW1tZXIuCkBAIC04NTMsMTYgKzIwMDksNDUgQEAKIAogLSBJc3N1ZSAjMjY2MTY6IEZpeGVkIGEgYnVnIGluIGRhdGV0aW1lLmFzdGltZXpvbmUoKSBtZXRob2QuCiAKLS0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyBvbgotICBgYGxpbmVjYWNoZS5nZXRsaW5lKC4uLilgYCB0byBiZSBhYmxlIHRvIGxvZyA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQKLSAgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorLSBJc3N1ZSAjMjY2Mzc6IFRoZSA6bW9kOmBpbXBvcnRsaWJgIG1vZHVsZSBub3cgZW1pdHMgYW4gOmV4YzpgSW1wb3J0RXJyb3JgCisgIHJhdGhlciB0aGFuIGEgOmV4YzpgVHlwZUVycm9yYCBpZiA6ZnVuYzpgX19pbXBvcnRfX2AgaXMgdHJpZWQgZHVyaW5nIHRoZQorICBQeXRob24gc2h1dGRvd24gcHJvY2VzcyBidXQgOmRhdGE6YHN5cy5wYXRoYCBpcyBhbHJlYWR5IGNsZWFyZWQgKHNldCB0bworICBgYE5vbmVgYCkuCisKKy0gSXNzdWUgIzIxOTI1OiA6ZnVuYzpgd2FybmluZ3MuZm9ybWF0d2FybmluZ2Agbm93IGNhdGNoZXMgZXhjZXB0aW9ucyB3aGVuCisgIGNhbGxpbmcgOmZ1bmM6YGxpbmVjYWNoZS5nZXRsaW5lYCBhbmQKKyAgOmZ1bmM6YHRyYWNlbWFsbG9jLmdldF9vYmplY3RfdHJhY2ViYWNrYCB0byBiZSBhYmxlIHRvIGxvZworICA6ZXhjOmBSZXNvdXJjZVdhcm5pbmdgIGVtaXR0ZWQgbGF0ZSBkdXJpbmcgdGhlIFB5dGhvbiBzaHV0ZG93biBwcm9jZXNzLgorCistIElzc3VlICMyMzg0ODogT24gV2luZG93cywgZmF1bHRoYW5kbGVyLmVuYWJsZSgpIG5vdyBhbHNvIGluc3RhbGxzIGFuCisgIGV4Y2VwdGlvbiBoYW5kbGVyIHRvIGR1bXAgdGhlIHRyYWNlYmFjayBvZiBhbGwgUHl0aG9uIHRocmVhZHMgb24gYW55IFdpbmRvd3MKKyAgZXhjZXB0aW9uLCBub3Qgb25seSBvbiBVTklYIHNpZ25hbHMgKFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCkuCisKKy0gSXNzdWUgIzI2NTMwOiBBZGQgQyBmdW5jdGlvbnMgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfVHJhY2tgIGFuZAorICA6YzpmdW5jOmBfUHlUcmFjZU1hbGxvY19VbnRyYWNrYCB0byB0cmFjayBtZW1vcnkgYmxvY2tzIHVzaW5nIHRoZQorICA6bW9kOmB0cmFjZW1hbGxvY2AgbW9kdWxlLiBBZGQgOmM6ZnVuYzpgX1B5VHJhY2VNYWxsb2NfR2V0VHJhY2ViYWNrYCB0byBnZXQKKyAgdGhlIHRyYWNlYmFjayBvZiBhbiBvYmplY3QuCisKKy0gSXNzdWUgIzI2NTg4OiBUaGUgX3RyYWNlbWFsbG9jIG5vdyBzdXBwb3J0cyB0cmFjaW5nIG1lbW9yeSBhbGxvY2F0aW9ucyBvZgorICBtdWx0aXBsZSBhZGRyZXNzIHNwYWNlcyAoZG9tYWlucykuCiAKIC0gSXNzdWUgIzI0MjY2OiBDdHJsK0MgZHVyaW5nIFJlYWRsaW5lIGhpc3Rvcnkgc2VhcmNoIG5vdyBjYW5jZWxzIHRoZSBzZWFyY2gKICAgbW9kZSB3aGVuIGNvbXBpbGVkIHdpdGggUmVhZGxpbmUgNy4KIAorLSBJc3N1ZSAjMjY1OTA6IEltcGxlbWVudCBhIHNhZmUgZmluYWxpemVyIGZvciB0aGUgX3NvY2tldC5zb2NrZXQgdHlwZS4gSXQgbm93CisgIHJlbGVhc2VzIHRoZSBHSUwgdG8gY2xvc2UgdGhlIHNvY2tldC4KKworLSBJc3N1ZSAjMTg3ODc6IHNwd2QuZ2V0c3BuYW0oKSBub3cgcmFpc2VzIGEgUGVybWlzc2lvbkVycm9yIGlmIHRoZSB1c2VyCisgIGRvZXNuJ3QgaGF2ZSBwcml2aWxlZ2VzLgorCiAtIElzc3VlICMyNjU2MDogQXZvaWQgcG90ZW50aWFsIFZhbHVlRXJyb3IgaW4gQmFzZUhhbmRsZXIuc3RhcnRfcmVzcG9uc2UuCiAgIEluaXRpYWwgcGF0Y2ggYnkgUGV0ZXIgSW5nbGVzYnkuCiAKKy0gSXNzdWUgIzI2NTY3OiBBZGQgYSBuZXcgZnVuY3Rpb24gOmM6ZnVuYzpgUHlFcnJfUmVzb3VyY2VXYXJuaW5nYCBmdW5jdGlvbiB0bworICBwYXNzIHRoZSBkZXN0cm95ZWQgb2JqZWN0LiBBZGQgYSAqc291cmNlKiBhdHRyaWJ1dGUgdG8KKyAgOmNsYXNzOmB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZWAuIEFkZCB3YXJuaW5ncy5fc2hvd3dhcm5tc2coKSB3aGljaCB1c2VzCisgIHRyYWNlbWFsbG9jIHRvIGdldCB0aGUgdHJhY2ViYWNrIHdoZXJlIHNvdXJjZSBvYmplY3Qgd2FzIGFsbG9jYXRlZC4KKwogLSBbU2VjdXJpdHldIElzc3VlICMyNjMxMzogc3NsLnB5IF9sb2FkX3dpbmRvd3Nfc3RvcmVfY2VydHMgZmFpbHMgaWYgd2luZG93cwogICBjZXJ0IHN0b3JlIGlzIGVtcHR5LiBQYXRjaCBieSBCYWppLgogCkBAIC04ODQsMjQgKzIwNjksMzkgQEAKIC0gSXNzdWUgIzIzNzE4OiBGaXhlZCBwYXJzaW5nIHRpbWUgaW4gd2VlayAwIGJlZm9yZSBKYW4gMS4gIE9yaWdpbmFsIHBhdGNoIGJ5CiAgIFRhbcOhcyBCZW5jZSBHZWRhaS4KIAorLSBJc3N1ZSAjMjYzMjM6IEFkZCBNb2NrLmFzc2VydF9jYWxsZWQoKSBhbmQgTW9jay5hc3NlcnRfY2FsbGVkX29uY2UoKQorICBtZXRob2RzIHRvIHVuaXR0ZXN0Lm1vY2suIFBhdGNoIHdyaXR0ZW4gYnkgQW1pdCBTYWhhLgorCiAtIElzc3VlICMyMDU4OTogSW52b2tpbmcgUGF0aC5vd25lcigpIGFuZCBQYXRoLmdyb3VwKCkgb24gV2luZG93cyBub3cgcmFpc2UKICAgTm90SW1wbGVtZW50ZWRFcnJvciBpbnN0ZWFkIG9mIEltcG9ydEVycm9yLgogCiAtIElzc3VlICMyNjE3NzogRml4ZWQgdGhlIGtleXMoKSBtZXRob2QgZm9yIENhbnZhcyBhbmQgU2Nyb2xsYmFyIHdpZGdldHMuCiAKLS0gSXNzdWUgIzE1MDY4OiBHb3QgcmlkIG9mIGV4Y2Vzc2l2ZSBidWZmZXJpbmcgaW4gdGhlIGZpbGVpbnB1dCBtb2R1bGUuCi0gIFRoZSBidWZzaXplIHBhcmFtZXRlciBpcyBubyBsb25nZXIgdXNlZC4KKy0gSXNzdWUgIzE1MDY4OiBHb3QgcmlkIG9mIGV4Y2Vzc2l2ZSBidWZmZXJpbmcgaW4gZmlsZWlucHV0LgorICBUaGUgYnVmc2l6ZSBwYXJhbWV0ZXIgaXMgbm93IGRlcHJlY2F0ZWQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzE5NDc1OiBBZGRlZCBhbiBvcHRpb25hbCBhcmd1bWVudCB0aW1lc3BlYyB0byB0aGUgZGF0ZXRpbWUKKyAgaXNvZm9ybWF0KCkgbWV0aG9kIHRvIGNob29zZSB0aGUgcHJlY2lzaW9uIG9mIHRoZSB0aW1lIGNvbXBvbmVudC4KIAogLSBJc3N1ZSAjMjIwMjogRml4IFVuYm91bmRMb2NhbEVycm9yIGluCiAgIEFic3RyYWN0RGlnZXN0QXV0aEhhbmRsZXIuZ2V0X2FsZ29yaXRobV9pbXBscy4gIEluaXRpYWwgcGF0Y2ggYnkgTWF0aGlldQogICBEdXB1eS4KIAorLSBJc3N1ZSAjMjYxNjc6IE1pbmltaXplZCBvdmVyaGVhZCBpbiBjb3B5LmNvcHkoKSBhbmQgY29weS5kZWVwY29weSgpLgorICBPcHRpbWl6ZWQgY29weWluZyBhbmQgZGVlcGNvcHlpbmcgYnl0ZWFycmF5cywgTm90SW1wbGVtZW50ZWQsIHNsaWNlcywKKyAgc2hvcnQgbGlzdHMsIHR1cGxlcywgZGljdHMsIHNldHMuCisKIC0gSXNzdWUgIzI1NzE4OiBGaXhlZCBwaWNrbGluZyBhbmQgY29weWluZyB0aGUgYWNjdW11bGF0ZSgpIGl0ZXJhdG9yIHdpdGgKICAgdG90YWwgaXMgTm9uZS4KIAogLSBJc3N1ZSAjMjY0NzU6IEZpeGVkIGRlYnVnZ2luZyBvdXRwdXQgZm9yIHJlZ3VsYXIgZXhwcmVzc2lvbnMgd2l0aCB0aGUgKD94KQogICBmbGFnLgogCistIElzc3VlICMyNjQ4MjogQWxsb3dlZCBwaWNrbGluZyByZWN1cnNpdmUgZGVxdWV1ZXMuCisKKy0gSXNzdWUgIzI2MzM1OiBNYWtlIG1tYXAud3JpdGUoKSByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB3cml0dGVuIGxpa2UKKyAgb3RoZXIgd3JpdGUgbWV0aG9kcy4gIFBhdGNoIGJ5IEpha3ViIFN0YXNpYWsuCisKIC0gSXNzdWUgIzI2NDU3OiBGaXhlZCB0aGUgc3VibmV0cygpIG1ldGhvZHMgaW4gSVAgbmV0d29yayBjbGFzc2VzIGZvciB0aGUgY2FzZQogICB3aGVuIHJlc3VsdGluZyBwcmVmaXggbGVuZ3RoIGlzIGVxdWFsIHRvIG1heGltYWwgcHJlZml4IGxlbmd0aC4KICAgQmFzZWQgb24gcGF0Y2ggYnkgWGlhbmcgWmhhbmcuCkBAIC05MTgsNyArMjExOCw3IEBACiAKIC0gSXNzdWUgIzI2MTg2OiBSZW1vdmUgYW4gaW52YWxpZCB0eXBlIGNoZWNrIGluIGltcG9ydGxpYi51dGlsLkxhenlMb2FkZXIuCiAKLS0gSXNzdWUgIzI2MzY3OiBpbXBvcnRsaWIuX19pbXBvcnRfXygpIHJhaXNlcyBTeXN0ZW1FcnJvciBsaWtlCistIElzc3VlICMyNjM2NzogaW1wb3J0bGliLl9faW1wb3J0X18oKSByYWlzZXMgSW1wb3J0RXJyb3IgbGlrZQogICBidWlsdGlucy5fX2ltcG9ydF9fKCkgd2hlbiBgYGxldmVsYGAgaXMgc3BlY2lmaWVkIGJ1dCB3aXRob3V0IGFuIGFjY29tcGFueWluZwogICBwYWNrYWdlIHNwZWNpZmllZC4KIApAQCAtOTI2LDE5ICsyMTI2LDM5IEBACiAgIHRoZSBjb25uZWN0ZWQgc29ja2V0KSB3aGVuIHZlcmlmeV9yZXF1ZXN0KCkgcmV0dXJucyBmYWxzZS4gIFBhdGNoIGJ5IEF2aXYKICAgUGFsaXZvZGEuCiAKKy0gSXNzdWUgIzIzNDMwOiBDaGFuZ2UgdGhlIHNvY2tldHNlcnZlciBtb2R1bGUgdG8gb25seSBjYXRjaCBleGNlcHRpb25zCisgIHJhaXNlZCBmcm9tIGEgcmVxdWVzdCBoYW5kbGVyIHRoYXQgYXJlIGRlcml2ZWQgZnJvbSBFeGNlcHRpb24gKGluc3RlYWQgb2YKKyAgQmFzZUV4Y2VwdGlvbikuICBUaGVyZWZvcmUgU3lzdGVtRXhpdCBhbmQgS2V5Ym9hcmRJbnRlcnJ1cHQgbm8gbG9uZ2VyCisgIHRyaWdnZXIgdGhlIGhhbmRsZV9lcnJvcigpIG1ldGhvZCwgYW5kIHdpbGwgbm93IHRvIHN0b3AgYSBzaW5nbGUtdGhyZWFkZWQKKyAgc2VydmVyLgorCiAtIFtTZWN1cml0eV0gSXNzdWUgIzI1OTM5OiBPbiBXaW5kb3dzIG9wZW4gdGhlIGNlcnQgc3RvcmUgcmVhZG9ubHkgaW4KICAgc3NsLmVudW1fY2VydGlmaWNhdGVzLgogCiAtIElzc3VlICMyNTk5NTogb3Mud2FsaygpIG5vIGxvbmdlciB1c2VzIEZEcyBwcm9wb3J0aW9uYWwgdG8gdGhlIHRyZWUgZGVwdGguCiAKKy0gSXNzdWUgIzI1OTk0OiBBZGRlZCB0aGUgY2xvc2UoKSBtZXRob2QgYW5kIHRoZSBzdXBwb3J0IG9mIHRoZSBjb250ZXh0IG1hbmFnZXIKKyAgcHJvdG9jb2wgZm9yIHRoZSBvcy5zY2FuZGlyKCkgaXRlcmF0b3IuCisKKy0gSXNzdWUgIzIzOTkyOiBtdWx0aXByb2Nlc3Npbmc6IG1ha2UgTWFwUmVzdWx0IG5vdCBmYWlsLWZhc3QgdXBvbiBleGNlcHRpb24uCisKKy0gSXNzdWUgIzI2MjQzOiBTdXBwb3J0IGtleXdvcmQgYXJndW1lbnRzIHRvIHpsaWIuY29tcHJlc3MoKS4gIFBhdGNoIGJ5IEF2aXYKKyAgUGFsaXZvZGEuCisKIC0gSXNzdWUgIzI2MTE3OiBUaGUgb3Muc2NhbmRpcigpIGl0ZXJhdG9yIG5vdyBjbG9zZXMgZmlsZSBkZXNjcmlwdG9yIG5vdCBvbmx5CiAgIHdoZW4gdGhlIGl0ZXJhdGlvbiBpcyBmaW5pc2hlZCwgYnV0IHdoZW4gaXQgd2FzIGZhaWxlZCB3aXRoIGVycm9yLgogCistIElzc3VlICMyNTk0OTogX19kaWN0X18gZm9yIGFuIE9yZGVyZWREaWN0IGluc3RhbmNlIGlzIG5vdyBjcmVhdGVkIG9ubHkgd2hlbgorICBuZWVkZWQuCisKIC0gSXNzdWUgIzI1OTExOiBSZXN0b3JlZCBzdXBwb3J0IG9mIGJ5dGVzIHBhdGhzIGluIG9zLndhbGsoKSBvbiBXaW5kb3dzLgogCiAtIElzc3VlICMyNjA0NTogQWRkIFVURi04IHN1Z2dlc3Rpb24gdG8gZXJyb3IgbWVzc2FnZSB3aGVuIHBvc3RpbmcgYQogICBub24tTGF0aW4tMSBzdHJpbmcgd2l0aCBodHRwLmNsaWVudC4KIAorLSBJc3N1ZSAjMjYwMzk6IEFkZGVkIHppcGZpbGUuWmlwSW5mby5mcm9tX2ZpbGUoKSBhbmQgemlwaW5mby5aaXBJbmZvLmlzX2RpcigpLgorICBQYXRjaCBieSBUaG9tYXMgS2x1eXZlci4KKwogLSBJc3N1ZSAjMTI5MjM6IFJlc2V0IEZhbmN5VVJMb3BlbmVyJ3MgcmVkaXJlY3QgY291bnRlciBldmVuIGlmIHRoZXJlIGlzIGFuCiAgIGV4Y2VwdGlvbi4gIEJhc2VkIG9uIHBhdGNoZXMgYnkgQnJpYW4gQnJhemlsIGFuZCBEYW5pZWwgUm9jY28uCiAKQEAgLTk1OSw2ICsyMTc5LDEwIEBACiAgIGdldGhvc3RieW5hbWVfZXgoKSBmdW5jdGlvbnMgb2YgdGhlIHNvY2tldCBtb2R1bGUgbm93IGRlY29kZSB0aGUgaG9zdG5hbWUKICAgZnJvbSB0aGUgQU5TSSBjb2RlIHBhZ2UgcmF0aGVyIHRoYW4gVVRGLTguCiAKKy0gSXNzdWUgIzI2MDk5OiBUaGUgc2l0ZSBtb2R1bGUgbm93IHdyaXRlcyBhbiBlcnJvciBpbnRvIHN0ZGVyciBpZgorICBzaXRlY3VzdG9taXplIG1vZHVsZSBjYW4gYmUgaW1wb3J0ZWQgYnV0IGV4ZWN1dGluZyB0aGUgbW9kdWxlIHJhaXNlIGFuCisgIEltcG9ydEVycm9yLiBTYW1lIGNoYW5nZSBmb3IgdXNlcmN1c3RvbWl6ZS4KKwogLSBJc3N1ZSAjMjYxNDc6IHhtbHJwYyBub3cgd29ya3Mgd2l0aCBzdHJpbmdzIG5vdCBlbmNvZGFibGUgd2l0aCB1c2VkCiAgIG5vbi1VVEYtOCBlbmNvZGluZy4KIApAQCAtOTY5LDEzICsyMTkzLDIxIEBACiAtIElzc3VlICMyNjAxMzogQWRkZWQgY29tcGF0aWJpbGl0eSB3aXRoIGJyb2tlbiBwcm90b2NvbCAyIHBpY2tsZXMgY3JlYXRlZAogICBpbiBvbGQgUHl0aG9uIDMgdmVyc2lvbnMgKDMuNC4zIGFuZCBsb3dlcikuCiAKKy0gSXNzdWUgIzI2MTI5OiBEZXByZWNhdGVkIGFjY2VwdGluZyBub24taW50ZWdlcnMgaW4gZ3JwLmdldGdyZ2lkKCkuCisKIC0gSXNzdWUgIzI1ODUwOiBVc2UgY3Jvc3MtY29tcGlsYXRpb24gYnkgZGVmYXVsdCBmb3IgNjQtYml0IFdpbmRvd3MuCiAKLS0gSXNzdWUgIzE3NjMzOiBJbXByb3ZlIHppcGltcG9ydCdzIHN1cHBvcnQgZm9yIG5hbWVzcGFjZSBwYWNrYWdlcy4KKy0gSXNzdWUgIzI1ODIyOiBBZGQgZG9jc3RyaW5ncyB0byB0aGUgZmllbGRzIG9mIHVybGxpYi5wYXJzZSByZXN1bHRzLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTd2F0aSBKYWlzd2FsLgorCistIElzc3VlICMyMjY0MjogQ29udmVydCB0cmFjZSBtb2R1bGUgb3B0aW9uIHBhcnNpbmcgbWVjaGFuaXNtIHRvIGFyZ3BhcnNlLgorICBQYXRjaCBjb250cmlidXRlZCBieSBTaWxlbnRHaG9zdC4KIAogLSBJc3N1ZSAjMjQ3MDU6IEZpeCBzeXNjb25maWcuX3BhcnNlX21ha2VmaWxlIG5vdCBleHBhbmRpbmcgJHt9IHZhcnMKICAgYXBwZWFyaW5nIGJlZm9yZSAkKCkgdmFycy4KIAorLSBJc3N1ZSAjMjYwNjk6IFJlbW92ZSB0aGUgZGVwcmVjYXRlZCBhcGlzIGluIHRoZSB0cmFjZSBtb2R1bGUuCisKIC0gSXNzdWUgIzIyMTM4OiBGaXggbW9jay5wYXRjaCBiZWhhdmlvciB3aGVuIHBhdGNoaW5nIGRlc2NyaXB0b3JzLiBSZXN0b3JlCiAgIG9yaWdpbmFsIHZhbHVlcyBhZnRlciBwYXRjaGluZy4gUGF0Y2ggY29udHJpYnV0ZWQgYnkgU2VhbiBNY0N1bGx5LgogCkBAIC05ODgsMTMgKzIyMjAsMjggQEAKIC0gSXNzdWUgIzI0MTIwOiBJZ25vcmUgUGVybWlzc2lvbkVycm9yIHdoZW4gdHJhdmVyc2luZyBhIHRyZWUgd2l0aAogICBwYXRobGliLlBhdGguW3JdZ2xvYigpLiAgUGF0Y2ggYnkgVWxyaWNoIFBldHJpLgogCistIElzc3VlICMyMTgxNTogQWNjZXB0IF0gY2hhcmFjdGVycyBpbiB0aGUgZGF0YSBwb3J0aW9uIG9mIGltYXAgcmVzcG9uc2VzLAorICBpbiBvcmRlciB0byBoYW5kbGUgdGhlIGZsYWdzIHdpdGggc3F1YXJlIGJyYWNrZXRzIGFjY2VwdGVkIGFuZCBwcm9kdWNlZAorICBieSBzZXJ2ZXJzIHN1Y2ggYXMgZ21haWwuCisKIC0gSXNzdWUgIzI1NDQ3OiBmaWxlaW5wdXQgbm93IHVzZXMgc3lzLnN0ZGluIGFzLWlzIGlmIGl0IGRvZXMgbm90IGhhdmUgYQogICBidWZmZXIgYXR0cmlidXRlIChyZXN0b3JlcyBiYWNrd2FyZCBjb21wYXRpYmlsaXR5KS4KIAorLSBJc3N1ZSAjMjU5NzE6IE9wdGltaXplZCBjcmVhdGluZyBGcmFjdGlvbnMgZnJvbSBmbG9hdHMgYnkgMiB0aW1lcyBhbmQgZnJvbQorICBEZWNpbWFscyBieSAzIHRpbWVzLgorCistIElzc3VlICMyNTgwMjogRG9jdW1lbnQgYXMgZGVwcmVjYXRlZCB0aGUgcmVtYWluaW5nIGltcGxlbWVudGF0aW9ucyBvZgorICBpbXBvcnRsaWIuYWJjLkxvYWRlci5sb2FkX21vZHVsZSgpLgorCistIElzc3VlICMyNTkyODogQWRkIERlY2ltYWwuYXNfaW50ZWdlcl9yYXRpbygpLgorCiAtIElzc3VlICMyNTQ0NzogQ29weWluZyB0aGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3Qgbm93IGFsd2F5cyB3b3JrcywKLSAgaW5kZXBlbmRlZGx5IGZyb20gdGhlIHR5cGUgb2YgdGhlIHdyYXBwZWQgb2JqZWN0IChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsCisgIGluZGVwZW5kZW50bHkgZnJvbSB0aGUgdHlwZSBvZiB0aGUgd3JhcHBlZCBvYmplY3QgKGJ5IHJldHVybmluZyB0aGUgb3JpZ2luYWwKICAgb2JqZWN0IHVuY2hhbmdlZCkuCiAKKy0gSXNzdWUgIzI1NzY4OiBIYXZlIHRoZSBmdW5jdGlvbnMgaW4gY29tcGlsZWFsbCByZXR1cm4gYm9vbGVhbnMgaW5zdGVhZCBvZgorICBpbnRzIGFuZCBhZGQgcHJvcGVyIGRvY3VtZW50YXRpb24gYW5kIHRlc3RzIGZvciB0aGUgcmV0dXJuIHZhbHVlcy4KKwogLSBJc3N1ZSAjMjQxMDM6IEZpeGVkIHBvc3NpYmxlIHVzZSBhZnRlciBmcmVlIGluIEVsZW1lbnRUcmVlLlhNTFB1bGxQYXJzZXIuCiAKIC0gSXNzdWUgIzI1ODYwOiBvcy5md2FsaygpIG5vIGxvbmdlciBza2lwcyByZW1haW5pbmcgZGlyZWN0b3JpZXMgd2hlbiBlcnJvcgpAQCAtMTAwMiw4ICsyMjQ5LDIyIEBACiAKIC0gSXNzdWUgIzI1OTE0OiBGaXhlZCBhbmQgc2ltcGxpZmllZCBPcmRlcmVkRGljdC5fX3NpemVvZl9fLgogCistIElzc3VlICMyNTg2OTogT3B0aW1pemVkIGRlZXBjb3B5aW5nIEVsZW1lbnRUcmVlOyBpdCBpcyBub3cgMjAgdGltZXMgZmFzdGVyLgorCistIElzc3VlICMyNTg3MzogT3B0aW1pemVkIGl0ZXJhdGluZyBFbGVtZW50VHJlZS4gIEl0ZXJhdGluZyBlbGVtZW50cworICBFbGVtZW50Lml0ZXIoKSBpcyBub3cgNDAlIGZhc3RlciwgaXRlcmF0aW5nIHRleHQgRWxlbWVudC5pdGVydGV4dCgpCisgIGlzIG5vdyB1cCB0byAyLjUgdGltZXMgZmFzdGVyLgorCiAtIElzc3VlICMyNTkwMjogRml4ZWQgdmFyaW91cyByZWZjb3VudCBpc3N1ZXMgaW4gRWxlbWVudFRyZWUgaXRlcmF0aW9uLgogCistIElzc3VlICMyMjIyNzogVGhlIFRhckZpbGUgaXRlcmF0b3IgaXMgcmVpbXBsZW1lbnRlZCB1c2luZyBnZW5lcmF0b3IuCisgIFRoaXMgaW1wbGVtZW50YXRpb24gaXMgc2ltcGxlciB0aGF0IHVzaW5nIGNsYXNzLgorCistIElzc3VlICMyNTYzODogT3B0aW1pemVkIEVsZW1lbnRUcmVlLml0ZXJwYXJzZSgpOyBpdCBpcyBub3cgMnggZmFzdGVyLgorICBPcHRpbWl6ZWQgRWxlbWVudFRyZWUgcGFyc2luZzsgaXQgaXMgbm93IDEwJSBmYXN0ZXIuCisKKy0gSXNzdWUgIzI1NzYxOiBJbXByb3ZlZCBkZXRlY3RpbmcgZXJyb3JzIGluIGJyb2tlbiBwaWNrbGUgZGF0YS4KKwogLSBJc3N1ZSAjMjU3MTc6IFJlc3RvcmUgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiB0b2xlcmF0aW5nIG1vc3QgZnN0YXQoKQogICBlcnJvcnMgd2hlbiBvcGVuaW5nIGZpbGVzLiAgVGhpcyB3YXMgYSByZWdyZXNzaW9uIGluIDMuNWExLCBhbmQgc3RvcHBlZAogICBhbm9ueW1vdXMgdGVtcG9yYXJ5IGZpbGVzIGZyb20gd29ya2luZyBpbiBzcGVjaWFsIGNhc2VzLgpAQCAtMTAxNSw2ICsyMjc2LDkgQEAKIC0gSXNzdWUgIzI1NzY0OiBJbiB0aGUgc3VicHJvY2VzcyBtb2R1bGUsIHByZXNlcnZlIGFueSBleGNlcHRpb24gY2F1c2VkIGJ5CiAgIGZvcmsoKSBmYWlsdXJlIHdoZW4gcHJlZXhlY19mbiBpcyB1c2VkLgogCistIElzc3VlICMyNTc3MTogVHdlYWsgdGhlIGV4Y2VwdGlvbiBtZXNzYWdlIGZvciBpbXBvcnRsaWIudXRpbC5yZXNvbHZlX25hbWUoKQorICB3aGVuICdwYWNrYWdlJyBpc24ndCBzcGVjaWZpZWQgYnV0IG5lY2Vzc2FyeS4KKwogLSBJc3N1ZSAjNjQ3ODogX3N0cnB0aW1lJ3MgcmVnZXhwIGNhY2hlIG5vdyBpcyByZXNldCBhZnRlciBjaGFuZ2luZyB0aW1lem9uZQogICB3aXRoIHRpbWUudHpzZXQoKS4KIApAQCAtMTAzNiw2ICsyMzAwLDkgQEAKIC0gSXNzdWUgIzEwMTMxOiBGaXhlZCBkZWVwIGNvcHlpbmcgb2YgbWluaWRvbSBkb2N1bWVudHMuICBCYXNlZCBvbiBwYXRjaAogICBieSBNYXJpYW4gR2FuaXNpbi4KIAorLSBJc3N1ZSAjNzk5MDogZGlyKCkgb24gRWxlbWVudFRyZWUuRWxlbWVudCBub3cgbGlzdHMgcHJvcGVydGllczogInRhZyIsCisgICJ0ZXh0IiwgInRhaWwiIGFuZCAiYXR0cmliIi4gIE9yaWdpbmFsIHBhdGNoIGJ5IFNhbnRvc28gV2lqYXlhLgorCiAtIElzc3VlICMyNTcyNTogRml4ZWQgYSByZWZlcmVuY2UgbGVhayBpbiBwaWNrbGUubG9hZHMoKSB3aGVuIHVucGlja2xpbmcKICAgaW52YWxpZCBkYXRhIGluY2x1ZGluZyB0dXBsZSBpbnN0cnVjdGlvbnMuCiAKQEAgLTEwNTEsNiArMjMxOCwyMDMgQEAKIC0gSXNzdWUgIzI1NjI0OiBaaXBGaWxlIG5vdyBhbHdheXMgd3JpdGVzIGEgWklQX1NUT1JFRCBoZWFkZXIgZm9yIGRpcmVjdG9yeQogICBlbnRyaWVzLiAgUGF0Y2ggYnkgRGluZ3l1YW4gV2FuZy4KIAorLSBJc3N1ZSAjMjU2MjY6IENoYW5nZSB0aHJlZSB6bGliIGZ1bmN0aW9ucyB0byBhY2NlcHQgc2l6ZXMgdGhhdCBmaXQgaW4KKyAgUHlfc3NpemVfdCwgYnV0IGludGVybmFsbHkgY2FwIHRob3NlIHNpemVzIHRvIFVJTlRfTUFYLiAgVGhpcyByZXNvbHZlcyBhCisgIHJlZ3Jlc3Npb24gaW4gMy41IHdoZXJlIEd6aXBGaWxlLnJlYWQoKSBmYWlsZWQgdG8gcmVhZCBjaHVua3MgbGFyZ2VyIHRoYW4gMgorICBvciA0IEdpQi4gIFRoZSBjaGFuZ2UgYWZmZWN0cyB0aGUgemxpYi5EZWNvbXByZXNzLmRlY29tcHJlc3MoKSBtYXhfbGVuZ3RoCisgIHBhcmFtZXRlciwgdGhlIHpsaWIuZGVjb21wcmVzcygpIGJ1ZnNpemUgcGFyYW1ldGVyLCBhbmQgdGhlCisgIHpsaWIuRGVjb21wcmVzcy5mbHVzaCgpIGxlbmd0aCBwYXJhbWV0ZXIuCisKKy0gSXNzdWUgIzI1NTgzOiBBdm9pZCBpbmNvcnJlY3QgZXJyb3JzIHJhaXNlZCBieSBvcy5tYWtlZGlycyhleGlzdF9vaz1UcnVlKQorICB3aGVuIHRoZSBPUyBnaXZlcyBwcmlvcml0eSB0byBlcnJvcnMgc3VjaCBhcyBFQUNDRVMgb3ZlciBFRVhJU1QuCisKKy0gSXNzdWUgIzI1NTkzOiBDaGFuZ2Ugc2VtYW50aWNzIG9mIEV2ZW50TG9vcC5zdG9wKCkgaW4gYXN5bmNpby4KKworLSBJc3N1ZSAjNjk3MzogV2hlbiB3ZSBrbm93IGEgc3VicHJvY2Vzcy5Qb3BlbiBwcm9jZXNzIGhhcyBkaWVkLCBkbworICBub3QgYWxsb3cgdGhlIHNlbmRfc2lnbmFsKCksIHRlcm1pbmF0ZSgpLCBvciBraWxsKCkgbWV0aG9kcyB0byBkbworICBhbnl0aGluZyBhcyB0aGV5IGNvdWxkIHBvdGVudGlhbGx5IHNpZ25hbCBhIGRpZmZlcmVudCBwcm9jZXNzLgorCistIElzc3VlICMyMzg4MzogQWRkZWQgbWlzc2luZyBBUElzIHRvIF9fYWxsX18gdG8gbWF0Y2ggdGhlIGRvY3VtZW50ZWQgQVBJcworICBmb3IgdGhlIGZvbGxvd2luZyBtb2R1bGVzOiBjYWxlbmRhciwgY3N2LCBlbnVtLCBmaWxlaW5wdXQsIGZ0cGxpYiwgbG9nZ2luZywKKyAgb3B0cGFyc2UsIHRhcmZpbGUsIHRocmVhZGluZyBhbmQgd2F2ZS4gIEFsc28gYWRkZWQgYQorICB0ZXN0LnN1cHBvcnQuY2hlY2tfX2FsbF9fKCkgaGVscGVyLiAgUGF0Y2hlcyBieSBKYWNlayBLb8WCb2R6aWVqLCBNYXVybworICBTLiBNLiBSb2RyaWd1ZXMgYW5kIEpvZWwgVGFkZGVpLgorCistIElzc3VlICMyNTU5MDogSW4gdGhlIFJlYWRsaW5lIGNvbXBsZXRlciwgb25seSBjYWxsIGdldGF0dHIoKSBvbmNlIHBlcgorICBhdHRyaWJ1dGUuICBBbHNvIGNvbXBsZXRlIG5hbWVzIG9mIGF0dHJpYnV0ZXMgc3VjaCBhcyBwcm9wZXJ0aWVzIGFuZCBzbG90cworICB3aGljaCBhcmUgbGlzdGVkIGJ5IGRpcigpIGJ1dCBub3QgeWV0IGNyZWF0ZWQgb24gYW4gaW5zdGFuY2UuCisKKy0gSXNzdWUgIzI1NDk4OiBGaXggYSBjcmFzaCB3aGVuIGdhcmJhZ2UtY29sbGVjdGluZyBjdHlwZXMgb2JqZWN0cyBjcmVhdGVkCisgIGJ5IHdyYXBwaW5nIGEgbWVtb3J5dmlldy4gIFRoaXMgd2FzIGEgcmVncmVzc2lvbiBtYWRlIGluIDMuNWExLiAgQmFzZWQKKyAgb24gcGF0Y2ggYnkgRXJ5a3N1bi4KKworLSBJc3N1ZSAjMjU1ODQ6IEFkZGVkICJlc2NhcGUiIHRvIHRoZSBfX2FsbF9fIGxpc3QgaW4gdGhlIGdsb2IgbW9kdWxlLgorCistIElzc3VlICMyNTU4NDogRml4ZWQgcmVjdXJzaXZlIGdsb2IoKSB3aXRoIHBhdHRlcm5zIHN0YXJ0aW5nIHdpdGggJ1wqXConLgorCistIElzc3VlICMyNTQ0NjogRml4IHJlZ3Jlc3Npb24gaW4gc210cGxpYidzIEFVVEggTE9HSU4gc3VwcG9ydC4KKworLSBJc3N1ZSAjMTgwMTA6IEZpeCB0aGUgcHlkb2Mgd2ViIHNlcnZlcidzIG1vZHVsZSBzZWFyY2ggZnVuY3Rpb24gdG8gaGFuZGxlCisgIGV4Y2VwdGlvbnMgZnJvbSBpbXBvcnRpbmcgcGFja2FnZXMuCisKKy0gSXNzdWUgIzI1NTU0OiBHb3QgcmlkIG9mIGNpcmN1bGFyIHJlZmVyZW5jZXMgaW4gcmVndWxhciBleHByZXNzaW9uIHBhcnNpbmcuCisKKy0gSXNzdWUgIzE4OTczOiBDb21tYW5kLWxpbmUgaW50ZXJmYWNlIG9mIHRoZSBjYWxlbmRhciBtb2R1bGUgbm93IHVzZXMgYXJncGFyc2UKKyAgaW5zdGVhZCBvZiBvcHRwYXJzZS4KKworLSBJc3N1ZSAjMjU1MTA6IGZpbGVpbnB1dC5GaWxlSW5wdXQucmVhZGxpbmUoKSBub3cgcmV0dXJucyBiJycgaW5zdGVhZCBvZiAnJworICBhdCB0aGUgZW5kIGlmIHRoZSBGaWxlSW5wdXQgd2FzIG9wZW5lZCB3aXRoIGJpbmFyeSBtb2RlLgorICBQYXRjaCBieSBSeW9zdWtlIEl0by4KKworLSBJc3N1ZSAjMjU1MDM6IEZpeGVkIGluc3BlY3QuZ2V0ZG9jKCkgZm9yIGluaGVyaXRlZCBkb2NzdHJpbmdzIG9mIHByb3BlcnRpZXMuCisgIE9yaWdpbmFsIHBhdGNoIGJ5IEpvaG4gTWFyayBWYW5kZW5iZXJnLgorCistIElzc3VlICMyNTUxNTogQWx3YXlzIHVzZSBvcy51cmFuZG9tIGFzIGEgc291cmNlIG9mIHJhbmRvbW5lc3MgaW4gdXVpZC51dWlkNC4KKworLSBJc3N1ZSAjMjE4Mjc6IEZpeGVkIHRleHR3cmFwLmRlZGVudCgpIGZvciB0aGUgY2FzZSB3aGVuIGxhcmdlc3QgY29tbW9uCisgIHdoaXRlc3BhY2UgaXMgYSBzdWJzdHJpbmcgb2Ygc21hbGxlc3QgbGVhZGluZyB3aGl0ZXNwYWNlLgorICBCYXNlZCBvbiBwYXRjaCBieSBSb2JlcnQgTGkuCisKKy0gSXNzdWUgIzI1NDQ3OiBUaGUgbHJ1X2NhY2hlKCkgd3JhcHBlciBvYmplY3RzIG5vdyBjYW4gYmUgY29waWVkIGFuZCBwaWNrbGVkCisgIChieSByZXR1cm5pbmcgdGhlIG9yaWdpbmFsIG9iamVjdCB1bmNoYW5nZWQpLgorCistIElzc3VlICMyNTM5MDogdHlwaW5nOiBEb24ndCBjcmFzaCBvbiBVbmlvbltzdHIsIFBhdHRlcm5dLgorCistIElzc3VlICMyNTQ0MTogYXN5bmNpbzogUmFpc2UgZXJyb3IgZnJvbSBkcmFpbigpIHdoZW4gc29ja2V0IGlzIGNsb3NlZC4KKworLSBJc3N1ZSAjMjU0MTA6IENsZWFuZWQgdXAgYW5kIGZpeGVkIG1pbm9yIGJ1Z3MgaW4gQyBpbXBsZW1lbnRhdGlvbiBvZgorICBPcmRlcmVkRGljdC4KKworLSBJc3N1ZSAjMjU0MTE6IEltcHJvdmVkIFVuaWNvZGUgc3VwcG9ydCBpbiBTTVRQSGFuZGxlciB0aHJvdWdoIGJldHRlciB1c2Ugb2YKKyAgdGhlIGVtYWlsIHBhY2thZ2UuIFRoYW5rcyB0byB1c2VyIHNpbW9uMDQgZm9yIHRoZSBwYXRjaC4KKworLSBNb3ZlIHRoZSBpbXAgbW9kdWxlIGZyb20gYSBQZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nIHRvIERlcHJlY2F0aW9uV2FybmluZy4KKworLSBJc3N1ZSAjMjU0MDc6IFJlbW92ZSBtZW50aW9ucyBvZiB0aGUgZm9ybWF0dGVyIG1vZHVsZSBiZWluZyByZW1vdmVkIGluCisgIFB5dGhvbiAzLjYuCisKKy0gSXNzdWUgIzI1NDA2OiBGaXhlZCBhIGJ1ZyBpbiBDIGltcGxlbWVudGF0aW9uIG9mIE9yZGVyZWREaWN0Lm1vdmVfdG9fZW5kKCkKKyAgdGhhdCBjYXVzZWQgc2VnbWVudGF0aW9uIGZhdWx0IG9yIGhhbmcgaW4gaXRlcmF0aW5nIGFmdGVyIG1vdmluZyBzZXZlcmFsCisgIGl0ZW1zIHRvIHRoZSBzdGFydCBvZiBvcmRlcmVkIGRpY3QuCisKKy0gSXNzdWUgIzI1MzgyOiBwaWNrbGV0b29scy5kaXMoKSBub3cgb3V0cHV0cyBpbXBsaWNpdCBtZW1vIGluZGV4IGZvciB0aGUKKyAgTUVNT0laRSBvcGNvZGUuCisKKy0gSXNzdWUgIzI1MzU3OiBBZGQgYW4gb3B0aW9uYWwgbmV3bGluZSBwYXJhbWVyIHRvIGJpbmFzY2lpLmIyYV9iYXNlNjQoKS4KKyAgYmFzZTY0LmI2NGVuY29kZSgpIHVzZXMgaXQgdG8gYXZvaWQgYSBtZW1vcnkgY29weS4KKworLSBJc3N1ZSAjMjQxNjQ6IE9iamVjdHMgdGhhdCBuZWVkIGNhbGxpbmcgYGBfX25ld19fYGAgd2l0aCBrZXl3b3JkIGFyZ3VtZW50cywKKyAgY2FuIG5vdyBiZSBwaWNrbGVkIHVzaW5nIHBpY2tsZSBwcm90b2NvbHMgb2xkZXIgdGhhbiBwcm90b2NvbCB2ZXJzaW9uIDQuCisKKy0gSXNzdWUgIzI1MzY0OiB6aXBmaWxlIG5vdyB3b3JrcyBpbiB0aHJlYWRzIGRpc2FibGVkIGJ1aWxkcy4KKworLSBJc3N1ZSAjMjUzMjg6IHNtdHBkJ3MgU01UUENoYW5uZWwgbm93IGNvcnJlY3RseSByYWlzZXMgYSBWYWx1ZUVycm9yIGlmIGJvdGgKKyAgZGVjb2RlX2RhdGEgYW5kIGVuYWJsZV9TTVRQVVRGOCBhcmUgc2V0IHRvIHRydWUuCisKKy0gSXNzdWUgIzE2MDk5OiBSb2JvdEZpbGVQYXJzZXIgbm93IHN1cHBvcnRzIENyYXdsLWRlbGF5IGFuZCBSZXF1ZXN0LXJhdGUKKyAgZXh0ZW5zaW9ucy4gIFBhdGNoIGJ5IE5pa29sYXkgQm9nb3ljaGV2LgorCistIElzc3VlICMyNTMxNjogZGlzdHV0aWxzIHJhaXNlcyBPU0Vycm9yIGluc3RlYWQgb2YgRGlzdHV0aWxzUGxhdGZvcm1FcnJvcgorICB3aGVuIE1TVkMgaXMgbm90IGluc3RhbGxlZC4KKworLSBJc3N1ZSAjMjUzODA6IEZpeGVkIHByb3RvY29sIGZvciB0aGUgU1RBQ0tfR0xPQkFMIG9wY29kZSBpbgorICBwaWNrbGV0b29scy5vcGNvZGVzLgorCistIElzc3VlICMyMzk3MjogVXBkYXRlcyBhc3luY2lvIGRhdGFncmFtIGNyZWF0ZSBtZXRob2QgYWxsb3dpbmcgcmV1c2Vwb3J0CisgIGFuZCByZXVzZWFkZHIgc29ja2V0IG9wdGlvbnMgdG8gYmUgc2V0IHByaW9yIHRvIGJpbmRpbmcgdGhlIHNvY2tldC4KKyAgTWlycm9yaW5nIHRoZSBleGlzdGluZyBhc3luY2lvIGNyZWF0ZV9zZXJ2ZXIgbWV0aG9kIHRoZSByZXVzZWFkZHIgb3B0aW9uCisgIGZvciBkYXRhZ3JhbSBzb2NrZXRzIGRlZmF1bHRzIHRvIFRydWUgaWYgdGhlIE8vUyBpcyAncG9zaXgnIChleGNlcHQgaWYgdGhlCisgIHBsYXRmb3JtIGlzIEN5Z3dpbikuIFBhdGNoIGJ5IENocmlzIExhd3MuCisKKy0gSXNzdWUgIzI1MzA0OiBBZGQgYXN5bmNpby5ydW5fY29yb3V0aW5lX3RocmVhZHNhZmUoKS4gIFRoaXMgbGV0cyB5b3UKKyAgc3VibWl0IGEgY29yb3V0aW5lIHRvIGEgbG9vcCBmcm9tIGFub3RoZXIgdGhyZWFkLCByZXR1cm5pbmcgYQorICBjb25jdXJyZW50LmZ1dHVyZXMuRnV0dXJlLiAgQnkgVmluY2VudCBNaWNoZWwuCisKKy0gSXNzdWUgIzI1MjMyOiBGaXggQ0dJUmVxdWVzdEhhbmRsZXIgdG8gc3BsaXQgdGhlIHF1ZXJ5IGZyb20gdGhlIFVSTCBhdCB0aGUKKyAgZmlyc3QgcXVlc3Rpb24gbWFyayAoPykgcmF0aGVyIHRoYW4gdGhlIGxhc3QuIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI0NjU3OiBQcmV2ZW50IENHSVJlcXVlc3RIYW5kbGVyIGZyb20gY29sbGFwc2luZyBzbGFzaGVzIGluIHRoZQorICBxdWVyeSBwYXJ0IG9mIHRoZSBVUkwgYXMgaWYgaXQgd2VyZSBhIHBhdGguIFBhdGNoIGZyb20gWGlhbmcgWmhhbmcuCisKKy0gSXNzdWUgIzI1Mjg3OiBEb24ndCBhZGQgY3J5cHQuTUVUSE9EX0NSWVBUIHRvIGNyeXB0Lm1ldGhvZHMgaWYgaXQncyBub3QKKyAgc3VwcG9ydGVkLiBDaGVjayBpZiBpdCBpcyBzdXBwb3J0ZWQsIGl0IG1heSBub3QgYmUgc3VwcG9ydGVkIG9uIE9wZW5CU0QgZm9yCisgIGV4YW1wbGUuCisKKy0gSXNzdWUgIzIzNjAwOiBEZWZhdWx0IGltcGxlbWVudGF0aW9uIG9mIHR6aW5mby5mcm9tdXRjKCkgd2FzIHJldHVybmluZworICB3cm9uZyByZXN1bHRzIGluIHNvbWUgY2FzZXMuCisKKy0gSXNzdWUgIzI1MjAzOiBGYWlsZWQgcmVhZGxpbmUuc2V0X2NvbXBsZXRlcl9kZWxpbXMoKSBubyBsb25nZXIgbGVmdCB0aGUKKyAgbW9kdWxlIGluIGluY29uc2lzdGVudCBzdGF0ZS4KKworLSBJc3N1ZSAjMjUwMTE6IHJsY29tcGxldGVyIG5vdyBvbWl0cyBwcml2YXRlIGFuZCBzcGVjaWFsIGF0dHJpYnV0ZSBuYW1lcyB1bmxlc3MKKyAgdGhlIHByZWZpeCBzdGFydHMgd2l0aCB1bmRlcnNjb3Jlcy4KKworLSBJc3N1ZSAjMjUyMDk6IHJsY29tcGxldGVyIG5vdyBjYW4gYWRkIGEgc3BhY2Ugb3IgYSBjb2xvbiBhZnRlciBjb21wbGV0ZWQKKyAga2V5d29yZC4KKworLSBJc3N1ZSAjMjIyNDE6IHRpbWV6b25lLnV0YyBuYW1lIGlzIG5vdyBwbGFpbiAnVVRDJywgbm90ICdVVEMtMDA6MDAnLgorCistIElzc3VlICMyMzUxNzogZnJvbXRpbWVzdGFtcCgpIGFuZCB1dGNmcm9tdGltZXN0YW1wKCkgbWV0aG9kcyBvZgorICBkYXRldGltZS5kYXRldGltZSBub3cgcm91bmQgbWljcm9zZWNvbmRzIHRvIG5lYXJlc3Qgd2l0aCB0aWVzIGdvaW5nIHRvCisgIG5lYXJlc3QgZXZlbiBpbnRlZ2VyIChST1VORF9IQUxGX0VWRU4pLCBhcyByb3VuZChmbG9hdCksIGluc3RlYWQgb2Ygcm91bmRpbmcKKyAgdG93YXJkcyAtSW5maW5pdHkgKFJPVU5EX0ZMT09SKS4KKworLSBJc3N1ZSAjMjM1NTI6IFRpbWVpdCBub3cgd2FybnMgd2hlbiB0aGVyZSBpcyBzdWJzdGFudGlhbCAoNHgpIHZhcmlhbmNlCisgIGJldHdlZW4gYmVzdCBhbmQgd29yc3QgdGltZXMuIFBhdGNoIGZyb20gU2VyaGl5IFN0b3JjaGFrYS4KKworLSBJc3N1ZSAjMjQ2MzM6IHNpdGUtcGFja2FnZXMvUkVBRE1FIC0+IFJFQURNRS50eHQuCisKKy0gSXNzdWUgIzI0ODc5OiBoZWxwKCkgYW5kIHB5ZG9jIGNhbiBub3cgbGlzdCBuYW1lZCB0dXBsZSBmaWVsZHMgaW4gdGhlCisgIG9yZGVyIHRoZXkgd2VyZSBkZWZpbmVkIHJhdGhlciB0aGFuIGFscGhhYmV0aWNhbGx5LiAgVGhlIG9yZGVyaW5nIGlzCisgIGRldGVybWluZWQgYnkgdGhlIF9maWVsZHMgYXR0cmlidXRlIGlmIHByZXNlbnQuCisKKy0gSXNzdWUgIzI0ODc0OiBJbXByb3ZlIHNwZWVkIG9mIGl0ZXJ0b29scy5jeWNsZSgpIGFuZCBtYWtlIGl0cworICBwaWNrbGUgbW9yZSBjb21wYWN0LgorCistIEZpeCBjcmFzaCBpbiBpdGVydG9vbHMuY3ljbGUuX19zZXRzdGF0ZV9fKCkgd2hlbiB0aGUgZmlyc3QgYXJndW1lbnQgd2Fzbid0CisgIGEgbGlzdC4KKworLSBJc3N1ZSAjMjAwNTk6IHVybGxpYi5wYXJzZSByYWlzZXMgVmFsdWVFcnJvciBvbiBhbGwgaW52YWxpZCBwb3J0cy4KKyAgUGF0Y2ggYnkgTWFydGluIFBhbnRlci4KKworLSBJc3N1ZSAjMjQzNjA6IEltcHJvdmUgX19yZXByX18gb2YgYXJncGFyc2UuTmFtZXNwYWNlKCkgZm9yIGludmFsaWQKKyAgaWRlbnRpZmllcnMuICBQYXRjaCBieSBNYXR0aGlhcyBCdXNzb25uaWVyLgorCistIElzc3VlICMyMzQyNjogcnVuX3NldHVwIHdhcyBicm9rZW4gaW4gZGlzdHV0aWxzLgorICBQYXRjaCBmcm9tIEFsZXhhbmRlciBCZWxvcG9sc2t5LgorCistIElzc3VlICMxMzkzODogMnRvMyBjb252ZXJ0cyBTdHJpbmdUeXBlcyB0byBhIHR1cGxlLiBQYXRjaCBmcm9tIE1hcmsgSGFtbW9uZC4KKworLSBJc3N1ZSAjMjA5MTogb3BlbigpIGFjY2VwdGVkIGEgJ1UnIG1vZGUgc3RyaW5nIGNvbnRhaW5pbmcgJysnLCBidXQgJ1UnIGNhbgorICBvbmx5IGJlIHVzZWQgd2l0aCAncicuIFBhdGNoIGZyb20gSmVmZiBCYWxvZ2ggYW5kIEpvaG4gTydDb25ub3IuCisKKy0gSXNzdWUgIzg1ODU6IGltcHJvdmVkIHRlc3RzIGZvciB6aXBpbXBvcnRlcjIuIFBhdGNoIGZyb20gTWFyayBMYXdyZW5jZS4KKworLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCisgIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCisKKy0gSXNzdWUgIzI0NDI2OiBGYXN0IHNlYXJjaGluZyBvcHRpbWl6YXRpb24gaW4gcmVndWxhciBleHByZXNzaW9ucyBub3cgd29ya3MKKyAgZm9yIHBhdHRlcm5zIHRoYXQgc3RhcnRzIHdpdGggY2FwdHVyaW5nIGdyb3Vwcy4gIEZhc3Qgc2VhcmNoaW5nIG9wdGltaXphdGlvbgorICBub3cgY2FuJ3QgYmUgZGlzYWJsZWQgYXQgY29tcGlsZSB0aW1lLgorCistIElzc3VlICMyMzY2MTogdW5pdHRlc3QubW9jayBzaWRlX2VmZmVjdHMgY2FuIG5vdyBiZSBleGNlcHRpb25zIGFnYWluLiBUaGlzCisgIHdhcyBhIHJlZ3Jlc3Npb24gdnMgUHl0aG9uIDMuNC4gUGF0Y2ggZnJvbSBJZ25hY2lvIFJvc3NpCisKKy0gSXNzdWUgIzEzMjQ4OiBSZW1vdmUgZGVwcmVjYXRlZCBpbnNwZWN0LmdldG1vZHVsZWluZm8gZnVuY3Rpb24uCisKKy0gSXNzdWUgIzI1NTc4OiBGaXggKGFub3RoZXIpIG1lbW9yeSBsZWFrIGluIFNTTFNvY2tldC5nZXRwZWVyY2VyKCkuCisKKy0gSXNzdWUgIzI1NTMwOiBEaXNhYmxlIHRoZSB2dWxuZXJhYmxlIFNTTHYzIHByb3RvY29sIGJ5IGRlZmF1bHQgd2hlbiBjcmVhdGluZworICBzc2wuU1NMQ29udGV4dC4KKworLSBJc3N1ZSAjMjU1Njk6IEZpeCBtZW1vcnkgbGVhayBpbiBTU0xTb2NrZXQuZ2V0cGVlcmNlcnQoKS4KKworLSBJc3N1ZSAjMjU0NzE6IFNvY2tldHMgcmV0dXJuZWQgZnJvbSBhY2NlcHQoKSBzaG91bGRuJ3QgYXBwZWFyIHRvIGJlCisgIG5vbmJsb2NraW5nLgorCistIElzc3VlICMyNTMxOTogV2hlbiB0aHJlYWRpbmcuRXZlbnQgaXMgcmVpbml0aWFsaXplZCwgdGhlIHVuZGVybHlpbmcgY29uZGl0aW9uCisgIHNob3VsZCB1c2UgYSByZWd1bGFyIGxvY2sgcmF0aGVyIHRoYW4gYSByZWN1cnNpdmUgbG9jay4KKwogLSBTa2lwIGdldGFkZHJpbmZvIGlmIGhvc3QgaXMgYWxyZWFkeSByZXNvbHZlZC4KICAgUGF0Y2ggYnkgQS4gSmVzc2UgSmlyeXUgRGF2aXMuCiAKQEAgLTEwNzAsNTMgKzI1MzQsOSBAQAogCiAtIElzc3VlICMyNzA0MTogYXN5bmNpbzogQWRkIGxvb3AuY3JlYXRlX2Z1dHVyZSBtZXRob2QKIAotLSBJc3N1ZSAjMjcyMjM6IGFzeW5jaW86IEZpeCBfcmVhZF9yZWFkeSBhbmQgX3dyaXRlX3JlYWR5IHRvIHJlc3BlY3QKLSAgX2Nvbm5fbG9zdC4KLSAgUGF0Y2ggYnkgxYF1a2FzeiBMYW5nYS4KLQotLSBJc3N1ZSAjMjI5NzA6IGFzeW5jaW86IEZpeCBpbmNvbnNpc3RlbmN5IGNhbmNlbGxpbmcgQ29uZGl0aW9uLndhaXQuCi0gIFBhdGNoIGJ5IERhdmlkIENvbGVzLgotCiBJRExFCiAtLS0tCiAKLS0gSXNzdWUgIzUxMjQ6IFBhc3RlIHdpdGggdGV4dCBzZWxlY3RlZCBub3cgcmVwbGFjZXMgdGhlIHNlbGVjdGlvbiBvbiBYMTEuCi0gIFRoaXMgbWF0Y2hlcyBob3cgcGFzdGUgd29ya3Mgb24gV2luZG93cywgTWFjLCBtb3N0IG1vZGVybiBMaW51eCBhcHBzLAotICBhbmQgdHRrIHdpZGdldHMuICBPcmlnaW5hbCBwYXRjaCBieSBTZXJoaXkgU3RvcmNoYWthLgotCi0tIElzc3VlICMyNDc1OTogTWFrZSBjbGVhciBpbiBpZGxlbGliLmlkbGVfdGVzdC5fX2luaXRfXyB0aGF0IHRoZSBkaXJlY3RvcnkKLSAgaXMgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uIG9mIHRlc3QudGVzdF9pZGxlIGFuZCB0b29sIGZvciBtYWludGFpbmVycy4KLQotLSBJc3N1ZSAjMjcxOTY6IFN0b3AgJ1RoZW1lQ2hhbmdlZCcgd2FybmluZ3Mgd2hlbiBydW5uaW5nIElETEUgdGVzdHMuCi0gIFRoZXNlIHBlcnNpc3RlZCBhZnRlciBvdGhlciB3YXJuaW5ncyB3ZXJlIHN1cHByZXNzZWQgaW4gIzIwNTY3LgotICBBcHBseSBTZXJoaXkgU3RvcmNoYWthJ3MgdXBkYXRlX2lkbGV0YXNrcyBzb2x1dGlvbiB0byBmb3VyIHRlc3QgZmlsZXMuCi0gIFJlY29yZCB0aGlzIGFkZGl0aW9uYWwgYWR2aWNlIGluIGlkbGVfdGVzdC9SRUFETUUudHh0Ci0KLS0gSXNzdWUgIzIwNTY3OiBSZXZpc2UgaWRsZV90ZXN0L1JFQURNRS50eHQgd2l0aCBhZHZpY2UgYWJvdXQgYXZvaWRpbmcKLSAgdGsgd2FybmluZyBtZXNzYWdlcyBmcm9tIHRlc3RzLiAgQXBwbHkgYWR2aWNlIHRvIHNldmVyYWwgSURMRSB0ZXN0cy4KLQotLSBJc3N1ZSAjMjcxMTc6IE1ha2UgY29sb3JpemVyIGh0ZXN0IGFuZCB0dXJ0bGVkZW1vIHdvcmsgd2l0aCBkYXJrIHRoZW1lcy4KLSAgTW92ZSBjb2RlIGZvciBjb25maWd1cmluZyB0ZXh0IHdpZGdldCBjb2xvcnMgdG8gYSBuZXcgZnVuY3Rpb24uCi0KLS0gSXNzdWUgIzI2NjczOiBXaGVuIHRrIHJlcG9ydHMgZm9udCBzaXplIGFzIDAsIGNoYW5nZSB0byBzaXplIDEwLgotICBTdWNoIGZvbnRzIG9uIExpbnV4IHByZXZlbnRlZCB0aGUgY29uZmlndXJhdGlvbiBkaWFsb2cgZnJvbSBvcGVuaW5nLgotCi0tIElzc3VlICMyMTkzOTogQWRkIHRlc3QgZm9yIElETEUncyBwZXJjb2xhdG9yLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzIxNjc2OiBBZGQgdGVzdCBmb3IgSURMRSdzIHJlcGxhY2UgZGlhbG9nLgotICBPcmlnaW5hbCBwYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCi0KLS0gSXNzdWUgIzE4NDEwOiBBZGQgdGVzdCBmb3IgSURMRSdzIHNlYXJjaCBkaWFsb2cuCi0gIE9yaWdpbmFsIHBhdGNoIGJ5IFdlc3RsZXkgTWFydMOtbmV6LgotCi0tIElzc3VlICMyMTcwMzogQWRkIHRlc3QgZm9yIElETEUncyB1bmRvIGRlbGVnYXRvci4KLSAgT3JpZ2luYWwgcGF0Y2ggYnkgU2FpbWFkaGF2IEhlYmxpa2FyIC4KLQotLSBJc3N1ZSAjMjcwNDQ6IEFkZCBDb25maWdEaWFsb2cucmVtb3ZlX3Zhcl9jYWxsYmFja3MgdG8gc3RvcCBtZW1vcnkgbGVha3MuCi0KLS0gSXNzdWUgIzIzOTc3OiBBZGQgbW9yZSBhc3NlcnRzIHRvIHRlc3RfZGVsZWdhdG9yLgotCiAtIElzc3VlICMyMDY0MDogQWRkIHRlc3RzIGZvciBpZGxlbGliLmNvbmZpZ0hlbHBTb3VyY2VFZGl0LgogICBQYXRjaCBieSBTYWltYWRoYXYgSGVibGlrYXIuCiAKQEAgLTExMzAsMTQgKzI1NTAsMTAzIEBACiAgIE1BUksgaW4gUkVBRE1FLnR4dCBhbmQgb3BlbiB0aGlzIGFuZCBORVdTLnR4dCB3aXRoICdhc2NpaScuCiAgIFJlLWVuY29kZSBDUkVESVRTLnR4dCB0byB1dGYtOCBhbmQgb3BlbiBpdCB3aXRoICd1dGYtOCcuCiAKKy0gSXNzdWUgIzE1MzQ4OiBTdG9wIHRoZSBkZWJ1Z2dlciBlbmdpbmUgKG5vcm1hbGx5IGluIGEgdXNlciBwcm9jZXNzKQorICBiZWZvcmUgY2xvc2luZyB0aGUgZGVidWdnZXIgd2luZG93IChydW5uaW5nIGluIHRoZSBJRExFIHByb2Nlc3MpLgorICBUaGlzIHByZXZlbnRzIHRoZSBSdW50aW1lRXJyb3JzIHRoYXQgd2VyZSBiZWluZyBjYXVnaHQgYW5kIGlnbm9yZWQuCisKKy0gSXNzdWUgIzI0NDU1OiBQcmV2ZW50IElETEUgZnJvbSBoYW5naW5nIHdoZW4gYSkgY2xvc2luZyB0aGUgc2hlbGwgd2hpbGUgdGhlCisgIGRlYnVnZ2VyIGlzIGFjdGl2ZSAoMTUzNDcpOyBiKSBjbG9zaW5nIHRoZSBkZWJ1Z2dlciB3aXRoIHRoZSBbWF0gYnV0dG9uCisgICgxNTM0OCk7IGFuZCBjKSBhY3RpdmF0aW5nIHRoZSBkZWJ1Z2dlciB3aGVuIGFscmVhZHkgYWN0aXZlICgyNDQ1NSkuCisgIFRoZSBwYXRjaCBieSBNYXJrIFJvc2VtYW4gZG9lcyB0aGlzIGJ5IG1ha2luZyB0d28gY2hhbmdlcy4KKyAgMS4gU3VzcGVuZCBhbmQgcmVzdW1lIHRoZSBndWkuaW50ZXJhY3Rpb24gbWV0aG9kIHdpdGggdGhlIHRjbCB2d2FpdAorICBtZWNoYW5pc20gaW50ZW5kZWQgZm9yIHRoaXMgcHVycG9zZSAoaW5zdGVhZCBvZiByb290Lm1haW5sb29wICYgLnF1aXQpLgorICAyLiBJbiBndWkucnVuLCBhbGxvdyBhbnkgZXhpc3RpbmcgaW50ZXJhY3Rpb24gdG8gdGVybWluYXRlIGZpcnN0LgorCistIENoYW5nZSAnVGhlIHByb2dyYW0nIHRvICdZb3VyIHByb2dyYW0nIGluIGFuIElETEUgJ2tpbGwgcHJvZ3JhbT8nIG1lc3NhZ2UKKyAgdG8gbWFrZSBpdCBjbGVhcmVyIHRoYXQgdGhlIHByb2dyYW0gcmVmZXJyZWQgdG8gaXMgdGhlIGN1cnJlbnRseSBydW5uaW5nCisgIHVzZXIgcHJvZ3JhbSwgbm90IElETEUgaXRzZWxmLgorCistIElzc3VlICMyNDc1MDogSW1wcm92ZSB0aGUgYXBwZWFyYW5jZSBvZiB0aGUgSURMRSBlZGl0b3Igd2luZG93IHN0YXR1cyBiYXIuCisgIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjUzMTM6IENoYW5nZSB0aGUgaGFuZGxpbmcgb2YgbmV3IGJ1aWx0LWluIHRleHQgY29sb3IgdGhlbWVzIHRvIGJldHRlcgorICBhZGRyZXNzIHRoZSBjb21wYXRpYmlsaXR5IHByb2JsZW0gaW50cm9kdWNlZCBieSB0aGUgYWRkaXRpb24gb2YgSURMRSBEYXJrLgorICBDb25zaXN0ZW50bHkgdXNlIHRoZSByZXZpc2VkIGlkbGVDb25mLkN1cnJlbnRUaGVtZSBldmVyeXdoZXJlIGluIGlkbGVsaWIuCisKKy0gSXNzdWUgIzI0NzgyOiBFeHRlbnNpb24gY29uZmlndXJhdGlvbiBpcyBub3cgYSB0YWIgaW4gdGhlIElETEUgUHJlZmVyZW5jZXMKKyAgZGlhbG9nIHJhdGhlciB0aGFuIGEgc2VwYXJhdGUgZGlhbG9nLiAgVGhlIGZvcm1lciB0YWJzIGFyZSBub3cgYSBzb3J0ZWQKKyAgbGlzdC4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjI3MjY6IFJlLWFjdGl2YXRlIHRoZSBjb25maWcgZGlhbG9nIGhlbHAgYnV0dG9uIHdpdGggc29tZSBjb250ZW50CisgIGFib3V0IHRoZSBvdGhlciBidXR0b25zIGFuZCB0aGUgbmV3IElETEUgRGFyayB0aGVtZS4KKworLSBJc3N1ZSAjMjQ4MjA6IElETEUgbm93IGhhcyBhbiAnSURMRSBEYXJrJyBidWlsdC1pbiB0ZXh0IGNvbG9yIHRoZW1lLgorICBJdCBpcyBtb3JlIG9yIGxlc3MgSURMRSBDbGFzc2ljIGludmVydGVkLCB3aXRoIGEgY29iYWx0IGJsdWUgYmFja2dyb3VuZC4KKyAgU3RyaW5ncywgY29tbWVudHMsIGtleXdvcmRzLCAuLi4gYXJlIHN0aWxsIGdyZWVuLCByZWQsIG9yYW5nZSwgLi4uIC4KKyAgVG8gdXNlIGl0IHdpdGggSURMRXMgcmVsZWFzZWQgYmVmb3JlIE5vdmVtYmVyIDIwMTUsIGhpdCB0aGUKKyAgJ1NhdmUgYXMgTmV3IEN1c3RvbSBUaGVtZScgYnV0dG9uIGFuZCBlbnRlciBhIG5ldyBuYW1lLAorICBzdWNoIGFzICdDdXN0b20gRGFyaycuICBUaGUgY3VzdG9tIHRoZW1lIHdpbGwgd29yayB3aXRoIGFueSBJRExFCisgIHJlbGVhc2UsIGFuZCBjYW4gYmUgbW9kaWZpZWQuCisKKy0gSXNzdWUgIzI1MjI0OiBSRUFETUUudHh0IGlzIG5vdyBhbiBpZGxlbGliIGluZGV4IGZvciBJRExFIGRldmVsb3BlcnMgYW5kCisgIGN1cmlvdXMgdXNlcnMuICBUaGUgcHJldmlvdXMgdXNlciBjb250ZW50IGlzIG5vdyBpbiB0aGUgSURMRSBkb2MgY2hhcHRlci4KKyAgJ0lETEUnIG5vdyBtZWFucyAnSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBhbmQgTGVhcm5pbmcgRW52aXJvbm1lbnQnLgorCistIElzc3VlICMyNDgyMDogVXNlcnMgY2FuIG5vdyBzZXQgYnJlYWtwb2ludCBjb2xvcnMgaW4KKyAgU2V0dGluZ3MgLT4gQ3VzdG9tIEhpZ2hsaWdodGluZy4gIE9yaWdpbmFsIHBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ5NzI6IEluYWN0aXZlIHNlbGVjdGlvbiBiYWNrZ3JvdW5kIG5vdyBtYXRjaGVzIGFjdGl2ZSBzZWxlY3Rpb24KKyAgYmFja2dyb3VuZCwgYXMgY29uZmlndXJlZCBieSB1c2Vycywgb24gYWxsIHN5c3RlbXMuICBGb3VuZCBpdGVtcyBhcmUgbm93CisgIGFsd2F5cyBoaWdobGlnaHRlZCBvbiBXaW5kb3dzLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0NTcwOiBJZGxlOiBtYWtlIGNhbGx0aXAgYW5kIGNvbXBsZXRpb24gYm94ZXMgYXBwZWFyIG9uIE1hY3MKKyAgYWZmZWN0ZWQgYnkgYSB0ayByZWdyZXNzaW9uLiAgSW5pdGlhbCBwYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI0OTg4OiBJZGxlIFNjcm9sbGVkTGlzdCBjb250ZXh0IG1lbnVzICh1c2VkIGluIGRlYnVnZ2VyKQorICBub3cgd29yayBvbiBNYWMgQXF1YS4gIFBhdGNoIGJ5IE1hcmsgUm9zZW1hbi4KKworLSBJc3N1ZSAjMjQ4MDE6IE1ha2UgcmlnaHQtY2xpY2sgZm9yIGNvbnRleHQgbWVudSB3b3JrIG9uIE1hYyBBcXVhLgorICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTczOiBBc3NvY2lhdGUgdGtpbnRlciBtZXNzYWdlYm94ZXMgd2l0aCBhIHNwZWNpZmljIHdpZGdldC4KKyAgRm9yIE1hYyBPU1gsIG1ha2UgdGhlbSBhICdzaGVldCcuICBQYXRjaCBieSBNYXJrIFJvc2VtYW4uCisKKy0gSXNzdWUgIzI1MTk4OiBFbmhhbmNlIHRoZSBpbml0aWFsIGh0bWwgdmlld2VyIG5vdyB1c2VkIGZvciBJZGxlIEhlbHAuCisgICogUHJvcGVybHkgaW5kZW50IGZpeGVkLXBpdGNoIHRleHQgKHBhdGNoIGJ5IE1hcmsgUm9zZW1hbikuCisgICogR2l2ZSBjb2RlIHNuaXBwZXQgYSB2ZXJ5IFNwaGlueC1saWtlIGxpZ2h0IGJsdWVpc2gtZ3JheSBiYWNrZ3JvdW5kLgorICAqIFJlLXVzZSBpbml0aWFsIHdpZHRoIGFuZCBoZWlnaHQgc2V0IGJ5IHVzZXJzIGZvciBzaGVsbCBhbmQgZWRpdG9yLgorICAqIFdoZW4gdGhlIFRhYmxlIG9mIENvbnRlbnRzIChUT0MpIG1lbnUgaXMgdXNlZCwgcHV0IHRoZSBzZWN0aW9uIGhlYWRlcgorICBhdCB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCisKKy0gSXNzdWUgIzI1MjI1OiBDb25kZW5zZSBhbmQgcmV3cml0ZSBJZGxlIGRvYyBzZWN0aW9uIG9uIHRleHQgY29sb3JzLgorCistIElzc3VlICMyMTk5NTogRXhwbGFpbiBzb21lIGRpZmZlcmVuY2VzIGJldHdlZW4gSURMRSBhbmQgY29uc29sZSBQeXRob24uCisKKy0gSXNzdWUgIzIyODIwOiBFeHBsYWluIG5lZWQgZm9yICpwcmludCogd2hlbiBydW5uaW5nIGZpbGUgZnJvbSBJZGxlIGVkaXRvci4KKworLSBJc3N1ZSAjMjUyMjQ6IERvYzogYXVnbWVudCBJZGxlIGZlYXR1cmUgbGlzdCBhbmQgbm8tc3VicHJvY2VzcyBzZWN0aW9uLgorCistIElzc3VlICMyNTIxOTogVXBkYXRlIGRvYyBmb3IgSWRsZSBjb21tYW5kIGxpbmUgb3B0aW9ucy4KKyAgU29tZSB3ZXJlIG1pc3NpbmcgYW5kIG5vdGVzIHdlcmUgbm90IGNvcnJlY3QuCisKKy0gSXNzdWUgIzI0ODYxOiBNb3N0IG9mIGlkbGVsaWIgaXMgcHJpdmF0ZSBhbmQgc3ViamVjdCB0byBjaGFuZ2UuCisgIFVzZSBpZGxlaWIuaWRsZS4qIHRvIHN0YXJ0IElkbGUuIFNlZSBpZGxlbGliLl9faW5pdF9fLl9fZG9jX18uCisKKy0gSXNzdWUgIzI1MTk5OiBJZGxlOiBhZGQgc3luY2hyb25pemF0aW9uIGNvbW1lbnRzIGZvciBmdXR1cmUgbWFpbnRhaW5lcnMuCisKKy0gSXNzdWUgIzE2ODkzOiBSZXBsYWNlIGhlbHAudHh0IHdpdGggaGVscC5odG1sIGZvciBJZGxlIGRvYyBkaXNwbGF5LgorICBUaGUgbmV3IGlkbGVsaWIvaGVscC5odG1sIGlzIHJzdHJpcHBlZCBEb2MvYnVpbGQvaHRtbC9saWJyYXJ5L2lkbGUuaHRtbC4KKyAgSXQgbG9va3MgYmV0dGVyIHRoYW4gaGVscC50eHQgYW5kIHdpbGwgYmV0dGVyIGRvY3VtZW50IElkbGUgYXMgcmVsZWFzZWQuCisgIFRoZSB0a2ludGVyIGh0bWwgdmlld2VyIHRoYXQgd29ya3MgZm9yIHRoaXMgZmlsZSB3YXMgd3JpdHRlbiBieSBSb3NlIFJvc2VtYW4uCisgIFRoZSBub3cgdW51c2VkIEVkaXRvcldpbmRvdy5IZWxwRGlhbG9nIGNsYXNzIGFuZCBoZWx0LnR4dCBmaWxlIGFyZSBkZXByZWNhdGVkLgorCistIElzc3VlICMyNDE5OTogRGVwcmVjYXRlIHVudXNlZCBpZGxlbGliLmlkbGV2ZXIgd2l0aCBwb3NzaWJsZSByZW1vdmFsIGluIDMuNi4KKworLSBJc3N1ZSAjMjQ3OTA6IFJlbW92ZSBleHRyYW5lb3VzIGNvZGUgKHdoaWNoIGFsc28gY3JlYXRlIDIgJiAzIGNvbmZsaWN0cykuCisKIERvY3VtZW50YXRpb24KIC0tLS0tLS0tLS0tLS0KIAotLSBJc3N1ZSAjMTk0ODk6IE1vdmVkIHRoZSBzZWFyY2ggYm94IGZyb20gdGhlIHNpZGViYXIgdG8gdGhlIGhlYWRlciBhbmQgZm9vdGVyCi0gIG9mIGVhY2ggcGFnZS4gIFBhdGNoIGJ5IEFtbWFyIEFza2FyLgotCi0tIElzc3VlICMyNDEzNjogRG9jdW1lbnQgdGhlIG5ldyBQRVAgNDQ4IHVucGFja2luZyBzeW50YXggb2YgMy41LgotCiAtIElzc3VlICMyNjczNjogVXNlZCBIVFRQUyBmb3IgZXh0ZXJuYWwgbGlua3MgaW4gdGhlIGRvY3VtZW50YXRpb24gaWYgcG9zc2libGUuCiAKIC0gSXNzdWUgIzY5NTM6IFJld29yayB0aGUgUmVhZGxpbmUgbW9kdWxlIGRvY3VtZW50YXRpb24gdG8gZ3JvdXAgcmVsYXRlZApAQCAtMTE0Niw4ICsyNjU1LDggQEAKIAogLSBJc3N1ZSAjMjM2MDY6IEFkZHMgbm90ZSB0byBjdHlwZXMgZG9jdW1lbnRhdGlvbiByZWdhcmRpbmcgY2RsbC5tc3ZjcnQuCiAKLS0gSXNzdWUgIzI1NTAwOiBGaXggZG9jdW1lbnRhdGlvbiB0byBub3QgY2xhaW0gdGhhdCBfX2ltcG9ydF9fIGlzIHNlYXJjaGVkIGZvcgotICBpbiB0aGUgZ2xvYmFsIHNjb3BlLgorLSBJc3N1ZSAjMjQ5NTI6IENsYXJpZnkgdGhlIGRlZmF1bHQgc2l6ZSBhcmd1bWVudCBvZiBzdGFja19zaXplKCkgaW4KKyAgdGhlICJ0aHJlYWRpbmciIGFuZCAiX3RocmVhZCIgbW9kdWxlcy4gUGF0Y2ggZnJvbSBNYXR0aXAuCiAKIC0gSXNzdWUgIzI2MDE0OiBVcGRhdGUgMy54IHBhY2thZ2luZyBkb2N1bWVudGF0aW9uOgogICAqICJTZWUgYWxzbyIgbGlua3MgdG8gdGhlIG5ldyBkb2NzIGFyZSBub3cgcHJvdmlkZWQgaW4gdGhlIGxlZ2FjeSBwYWdlcwpAQCAtMTE1OSw2ICsyNjY4LDkgQEAKIC0gSXNzdWUgIzIxOTE2OiBBZGRlZCB0ZXN0cyBmb3IgdGhlIHR1cnRsZSBtb2R1bGUuICBQYXRjaCBieSBpbmdyaWQsCiAgIEdyZWdvcnkgTG95c2UgYW5kIEplbGxlIFppamxzdHJhLgogCistIElzc3VlICMyNjI5NTogV2hlbiB1c2luZyAicHl0aG9uMyAtbSB0ZXN0IC0tdGVzdGRpcj1URVNURElSIiwgcmVncnRlc3QKKyAgZG9lc24ndCBhZGQgInRlc3QuIiBwcmVmaXggdG8gdGVzdCBtb2R1bGUgbmFtZXMuCisKIC0gSXNzdWUgIzI2NTIzOiBUaGUgbXVsdGlwcm9jZXNzaW5nIHRocmVhZCBwb29sIChtdWx0aXByb2Nlc3NpbmcuZHVtbXkuUG9vbCkKICAgd2FzIHVudGVzdGVkLgogCkBAIC0xMTY3LDMxICsyNjc5LDUwIEBACiAtIElzc3VlICMyNjMyNTogQWRkZWQgdGVzdC5zdXBwb3J0LmNoZWNrX25vX3Jlc291cmNlX3dhcm5pbmcoKSB0byBjaGVjayB0aGF0CiAgIG5vIFJlc291cmNlV2FybmluZyBpcyBlbWl0dGVkLgogCi0tIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2Ugc2VsZi1zaWduZWQucHl0aG9udGVzdC5uZXQuICBUaGlzCistIElzc3VlICMyNTk0MDogQ2hhbmdlZCB0ZXN0X3NzbCB0byB1c2UgaXRzIGludGVybmFsIGxvY2FsIHNlcnZlciBtb3JlLiAgVGhpcwogICBhdm9pZHMgcmVseWluZyBvbiBzdm4ucHl0aG9uLm9yZywgd2hpY2ggcmVjZW50bHkgY2hhbmdlZCByb290IGNlcnRpZmljYXRlLgogCiAtIElzc3VlICMyNTYxNjogVGVzdHMgZm9yIE9yZGVyZWREaWN0IGFyZSBleHRyYWN0ZWQgZnJvbSB0ZXN0X2NvbGxlY3Rpb25zCiAgIGludG8gc2VwYXJhdGUgZmlsZSB0ZXN0X29yZGVyZWRfZGljdC4KIAorLSBJc3N1ZSAjMjU0NDk6IEFkZGVkIHRlc3RzIGZvciBPcmRlcmVkRGljdCBzdWJjbGFzc2VzLgorCistIElzc3VlICMyNTE4ODogQWRkIC1QLy0tcGdvIHRvIHRlc3QucmVncnRlc3QgdG8gc3VwcHJlc3MgZXJyb3Igb3V0cHV0IHdoZW4KKyAgcnVubmluZyB0aGUgdGVzdCBzdWl0ZSBmb3IgdGhlIHB1cnBvc2VzIG9mIGEgUEdPIGJ1aWxkLiBJbml0aWFsIHBhdGNoIGJ5CisgIEFsZWNzYW5kcnUgUGF0cmFzY3UuCisKKy0gSXNzdWUgIzIyODA2OiBBZGQgYGBweXRob24gLW0gdGVzdCAtLWxpc3QtdGVzdHNgYCBjb21tYW5kIHRvIGxpc3QgdGVzdHMuCisKKy0gSXNzdWUgIzE4MTc0OiBgYHB5dGhvbiAtbSB0ZXN0IC0taHVudHJsZWFrcyAuLi5gYCBub3cgYWxzbyBjaGVja3MgZm9yIGxlYWsgb2YKKyAgZmlsZSBkZXNjcmlwdG9ycy4gUGF0Y2ggd3JpdHRlbiBieSBSaWNoYXJkIE91ZGtlcmsuCisKKy0gSXNzdWUgIzI1MjYwOiBGaXggYGBweXRob24gLW0gdGVzdCAtLWNvdmVyYWdlYGAgb24gV2luZG93cy4gUmVtb3ZlIHRoZQorICBsaXN0IG9mIGlnbm9yZWQgZGlyZWN0b3JpZXMuCisKKy0gYGBQQ2J1aWxkXHJ0LmJhdGBgIG5vdyBhY2NlcHRzIGFuIHVubGltaXRlZCBudW1iZXIgb2YgYXJndW1lbnRzIHRvIHBhc3MgYWxvbmcKKyAgdG8gcmVncnRlc3QucHkuICBQcmV2aW91c2x5IHRoZXJlIHdhcyBhIGxpbWl0IG9mIDkuCisKIC0gSXNzdWUgIzI2NTgzOiBTa2lwIHRlc3RfdGltZXN0YW1wX292ZXJmbG93IGluIHRlc3RfaW1wb3J0IGlmIGJ5dGVjb2RlCiAgIGZpbGVzIGNhbm5vdCBiZSB3cml0dGVuLgogCiBCdWlsZAogLS0tLS0KIAorLSBJc3N1ZSAjMjEyNzc6IERvbid0IHRyeSB0byBsaW5rIF9jdHlwZXMgd2l0aCBhIGZmaV9jb252ZW5pZW5jZSBsaWJyYXJ5LgorCiAtIElzc3VlICMyNjg4NDogRml4IGxpbmtpbmcgZXh0ZW5zaW9uIG1vZHVsZXMgZm9yIGNyb3NzIGJ1aWxkcy4KICAgUGF0Y2ggYnkgWGF2aWVyIGRlIEdheWUuCiAKKy0gSXNzdWUgIzI2OTMyOiBGaXhlZCBzdXBwb3J0IG9mIFJUTERfKiBjb25zdGFudHMgZGVmaW5lZCBhcyBlbnVtIHZhbHVlcywKKyAgbm90IHZpYSBtYWNyb3MgKGluIHBhcnRpY3VsYXIgb24gQW5kcm9pZCkuICBQYXRjaCBieSBDaGkgSHN1YW4gWWVuLgorCiAtIElzc3VlICMyMjM1OTogRGlzYWJsZSB0aGUgcnVsZXMgZm9yIHJ1bm5pbmcgX2ZyZWV6ZV9pbXBvcnRsaWIgYW5kIHBnZW4gd2hlbgogICBjcm9zcy1jb21waWxpbmcuICBUaGUgb3V0cHV0IG9mIHRoZXNlIHByb2dyYW1zIGlzIG5vcm1hbGx5IHNhdmVkIHdpdGggdGhlCiAgIHNvdXJjZSBjb2RlIGFueXdheSwgYW5kIGlzIHN0aWxsIHJlZ2VuZXJhdGVkIHdoZW4gZG9pbmcgYSBuYXRpdmUgYnVpbGQuCiAgIFBhdGNoIGJ5IFhhdmllciBkZSBHYXllLgogCi0tIElzc3VlICMyNzIyOTogRml4IHRoZSBjcm9zcy1jb21waWxpbmcgcGdlbiBydWxlIGZvciBpbi10cmVlIGJ1aWxkcy4gIFBhdGNoCi0gIGJ5IFhhdmllciBkZSBHYXllLgotCiAtIElzc3VlICMyMTY2ODogTGluayBhdWRpb29wLCBfZGF0ZXRpbWUsIF9jdHlwZXNfdGVzdCBtb2R1bGVzIHRvIGxpYm0sCi0gIGV4Y2VwdCBvbiBNYWMgT1MgWC4gUGF0Y2ggd3JpdHRlbiBieSBYYXZpZXIgZGUgR2F5ZS4KKyAgZXhjZXB0IG9uIE1hYyBPUyBYLiBQYXRjaCB3cml0dGVuIGJ5IENoaSBIc3VhbiBZZW4uCiAKIC0gSXNzdWUgIzI1NzAyOiBBIC0td2l0aC1sdG8gY29uZmlndXJlIG9wdGlvbiBoYXMgYmVlbiBhZGRlZCB0aGF0IHdpbGwKICAgZW5hYmxlIGxpbmsgdGltZSBvcHRpbWl6YXRpb25zIGF0IGJ1aWxkIHRpbWUgZHVyaW5nIGEgbWFrZSBwcm9maWxlLW9wdC4KQEAgLTEyMTAsMjIgKzI3NDEsMjQgQEAKIAogLSBJc3N1ZSAjMjY0NjU6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmcuCiAKLS0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KLSAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcwotICB3ZXJlIGNvbmN1cnJlbnQuCi0KIC0gSXNzdWUgIzI1MzQ4OiBBZGRlZCBgYC0tcGdvYGAgYW5kIGBgLS1wZ28tam9iYGAgYXJndW1lbnRzIHRvCiAgIGBgUENidWlsZFxidWlsZC5iYXRgYCBmb3IgYnVpbGRpbmcgd2l0aCBQcm9maWxlLUd1aWRlZCBPcHRpbWl6YXRpb24uICBUaGUKLSAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIG5vdyBkZXByZWNhdGVkLCBhbmQgc2ltcGx5IGNhbGxzCi0gIGBgUENidWlsZFxidWlsZC5iYXQgLS1wZ28gJSpgYC4KKyAgb2xkIGBgUENidWlsZFxidWlsZF9wZ28uYmF0YGAgc2NyaXB0IGlzIHJlbW92ZWQuCiAKIC0gSXNzdWUgIzI1ODI3OiBBZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgd2l0aCBJQ0MgdG8gYGBjb25maWd1cmVgYCwgaW5jbHVkaW5nCiAgIGEgbmV3IGBgLS13aXRoLWljY2BgIGZsYWcuCiAKIC0gSXNzdWUgIzI1Njk2OiBGaXggaW5zdGFsbGF0aW9uIG9mIFB5dGhvbiBvbiBVTklYIHdpdGggbWFrZSAtajkuCiAKLS0gSXNzdWUgIzI2OTMwOiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKLSAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yaC4KKy0gSXNzdWUgIzI0OTg2OiBJdCBpcyBub3cgcG9zc2libGUgdG8gYnVpbGQgUHl0aG9uIG9uIFdpbmRvd3Mgd2l0aG91dCBlcnJvcnMKKyAgd2hlbiBleHRlcm5hbCBsaWJyYXJpZXMgYXJlIG5vdCBhdmFpbGFibGUuCisKKy0gSXNzdWUgIzI0NDIxOiBDb21waWxlIE1vZHVsZXMvX21hdGguYyBvbmNlLCBiZWZvcmUgYnVpbGRpbmcgZXh0ZW5zaW9ucy4KKyAgUHJldmlvdXNseSBpdCBjb3VsZCBmYWlsIHRvIGNvbXBpbGUgcHJvcGVybHkgaWYgdGhlIG1hdGggYW5kIGNtYXRoIGJ1aWxkcworICB3ZXJlIGNvbmN1cnJlbnQuCisKKy0gSXNzdWUgIzI2NDY1OiBVcGRhdGUgT1MgWCAxMC41KyAzMi1iaXQtb25seSBpbnN0YWxsZXIgdG8gYnVpbGQKKyAgYW5kIGxpbmsgd2l0aCBPcGVuU1NMIDEuMC4yZy4KIAogLSBJc3N1ZSAjMjYyNjg6IFVwZGF0ZSBXaW5kb3dzIGJ1aWxkcyB0byB1c2UgT3BlblNTTCAxLjAuMmYuCiAKQEAgLTEyNTIsNiArMjc4NSw4IEBACiAtIElzc3VlICMyNjA2NTogRXhjbHVkZXMgdmVudiBmcm9tIGxpYnJhcnkgd2hlbiBnZW5lcmF0aW5nIGVtYmVkZGFibGUKICAgZGlzdHJvLgogCistIElzc3VlICMyNTAyMjogUmVtb3ZlZCB2ZXJ5IG91dGRhdGVkIFBDL2V4YW1wbGVfbnQvIGRpcmVjdG9yeS4KKwogVG9vbHMvRGVtb3MKIC0tLS0tLS0tLS0tCiAKQEAgLTEyNjgsMTEgKzI4MDMsMjEgQEAKIAogLSBJc3N1ZSAjMjYzMTY6IEZpeCB2YXJpYWJsZSBuYW1lIHR5cG8gaW4gQXJndW1lbnQgQ2xpbmljLgogCi1NaXNjCi0tLS0tCistIElzc3VlICMyNTQ0MDogRml4IG91dHB1dCBvZiBweXRob24tY29uZmlnIC0tZXh0ZW5zaW9uLXN1ZmZpeC4KIAotLSBJc3N1ZSAjMTc1MDAsIGFuZCBodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3B5dGhvbmRvdG9yZy9pc3N1ZXMvOTQ1OiBSZW1vdmUKLSAgdW51c2VkIGFuZCBvdXRkYXRlZCBpY29ucy4KKy0gSXNzdWUgIzI1MTU0OiBUaGUgcHl2ZW52IHNjcmlwdCBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGZhdm91ciBvZgorICBgcHl0aG9uMyAtbSB2ZW52YC4KKworQyBBUEkKKy0tLS0tCisKKy0gSXNzdWUgIzI2MzEyOiBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkIGluIGFsbCBwcm9ncmFtbWluZyBidWdzIHdpdGggdXNpbmcKKyAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKCkuICBSdW50aW1lRXJyb3IgZGlkIHJhaXNlZCBiZWZvcmUgaW4gc29tZQorICBwcm9ncmFtbWluZyBidWdzLgorCistIElzc3VlICMyNjE5ODogVmFsdWVFcnJvciBpcyBub3cgcmFpc2VkIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIGJ1ZmZlcgorICBvdmVyZmxvdyBpbiBwYXJzaW5nICJlcyMiIGFuZCAiZXQjIiBmb3JtYXQgdW5pdHMuICBTeXN0ZW1FcnJvciBpcyBub3cgcmFpc2VkCisgIGluc3RlYWQgb2YgVHlwZUVycm9yIG9uIHByb2dyYW1taWNhbCBlcnJvciBpbiBwYXJzaW5nIGZvcm1hdCBzdHJpbmcuCiAKIAogV2hhdCdzIE5ldyBpbiBQeXRob24gMy41LjEgZmluYWw/CkBAIC0xNTg0LDcgKzMxMjksNyBAQAogLSBJc3N1ZSAjMjQ3NzQ6IEZpeCBkb2NzdHJpbmcgaW4gaHR0cC5zZXJ2ZXIudGVzdC4gUGF0Y2ggZnJvbSBDaGl1LUhzaWFuZyBIc3UuCiAKIC0gSXNzdWUgIzIxMTU5OiBJbXByb3ZlIG1lc3NhZ2UgaW4gY29uZmlncGFyc2VyLkludGVycG9sYXRpb25NaXNzaW5nT3B0aW9uRXJyb3IuCi0gIFBhdGNoIGZyb20gxYF1a2FzeiBMYW5nYS4KKyAgUGF0Y2ggZnJvbSDvv70/dWthc3ogTGFuZ2EuCiAKIC0gSXNzdWUgIzIwMzYyOiBIb25vdXIgVGVzdENhc2UubG9uZ01lc3NhZ2UgY29ycmVjdGx5IGluIGFzc2VydFJlZ2V4LgogICBQYXRjaCBmcm9tIElsaWEgS3VyZW5rb3YuCkBAIC0xNjk0LDkgKzMyMzksNiBAQAogRG9jdW1lbnRhdGlvbgogLS0tLS0tLS0tLS0tLQogCi0tIElzc3VlICMyMjU1ODogQWRkIHJlbWFpbmluZyBkb2MgbGlua3MgdG8gc291cmNlIGNvZGUgZm9yIFB5dGhvbi1jb2RlZCBtb2R1bGVzLgotICBQYXRjaCBieSBZb25pIExhdmkuCi0KIC0gSXNzdWUgIzEyMDY3OiBSZXdyaXRlIENvbXBhcmlzb25zIHNlY3Rpb24gaW4gdGhlIEV4cHJlc3Npb25zIGNoYXB0ZXIgb2YgdGhlCiAgIGxhbmd1YWdlIHJlZmVyZW5jZS4gU29tZSBvZiB0aGUgZGV0YWlscyBvZiBjb21wYXJpbmcgbWl4ZWQgdHlwZXMgd2VyZQogICBpbmNvcnJlY3Qgb3IgYW1iaWd1b3VzLiBOb3RJbXBsZW1lbnRlZCBpcyBvbmx5IHJlbGV2YW50IGF0IGEgbG93ZXIgbGV2ZWwKQEAgLTIwMjYsMTIgKzM1NjgsNiBAQAogCiAtIElzc3VlICMyNDYzMTogRml4ZWQgcmVncmVzc2lvbiBpbiB0aGUgdGltZWl0IG1vZHVsZSB3aXRoIG11bHRpbGluZSBzZXR1cC4KIAotLSBJc3N1ZSAjMTg2MjI6IHVuaXR0ZXN0Lm1vY2subW9ja19vcGVuKCkucmVzZXRfbW9jayB3b3VsZCByZWN1cnNlIGluZmluaXRlbHkuCi0gIFBhdGNoIGZyb20gTmljb2xhIFBhbHVtYm8gYW5kIExhdXJlbnQgRGUgQnV5c3QuCi0KLS0gSXNzdWUgIzIzNjYxOiB1bml0dGVzdC5tb2NrIHNpZGVfZWZmZWN0cyBjYW4gbm93IGJlIGV4Y2VwdGlvbnMgYWdhaW4uIFRoaXMKLSAgd2FzIGEgcmVncmVzc2lvbiB2cyBQeXRob24gMy40LiBQYXRjaCBmcm9tIElnbmFjaW8gUm9zc2kKLQogLSBJc3N1ZSAjMjQ2MDg6IGNodW5rLkNodW5rLnJlYWQoKSBub3cgYWx3YXlzIHJldHVybnMgYnl0ZXMsIG5vdCBzdHIuCiAKIC0gSXNzdWUgIzE4Njg0OiBGaXhlZCByZWFkaW5nIG91dCBvZiB0aGUgYnVmZmVyIGluIHRoZSByZSBtb2R1bGUuCkBAIC0yMDQyLDYgKzM1NzgsOSBAQAogLSBJc3N1ZSAjMTUwMTQ6IFNNVFAuYXV0aCgpIGFuZCBTTVRQLmxvZ2luKCkgbm93IHN1cHBvcnQgUkZDIDQ5NTQncyBvcHRpb25hbAogICBpbml0aWFsLXJlc3BvbnNlIGFyZ3VtZW50IHRvIHRoZSBTTVRQIEFVVEggY29tbWFuZC4KIAorLSBJc3N1ZSAjNjU0OTogUmVtb3ZlIGh5cGhlbiBmcm9tIHR0ay5TdHlsZSgpLmVsZW1lbnQgb3B0aW9ucy4gIE9ubHkgcmV0dXJuIHJlc3VsdAorICBmcm9tIHR0ay5TdHlsZSgpLmNvbmZpZ3VyZSBpZiBhIHJlc3VsdCB3YXMgZ2VuZXJhdGVkIG9yIGEgcXVlcnkgc3VibWl0dGVkLgorCiAtIElzc3VlICMyNDY2OTogRml4IGluc3BlY3QuZ2V0c291cmNlKCkgZm9yICdhc3luYyBkZWYnIGZ1bmN0aW9ucy4KICAgUGF0Y2ggYnkgS2FpIEdyb25lci4KIApAQCAtMjA1Myw3ICszNTkyLDYgQEAKIC0gSXNzdWUgIzI0NjAzOiBVcGRhdGUgV2luZG93cyBidWlsZHMgYW5kIE9TIFggMTAuNSBpbnN0YWxsZXIgdG8gdXNlIE9wZW5TU0wKICAgMS4wLjJkLgogCi0KIFdoYXQncyBOZXcgaW4gUHl0aG9uIDMuNS4wIGJldGEgMz8KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApAQCAtMjIxNCw2ICszNzUyLDkgQEAKIC0gSXNzdWUgIzI0MjY4OiBQRVAgNDg5OiBNdWx0aS1waGFzZSBleHRlbnNpb24gbW9kdWxlIGluaXRpYWxpemF0aW9uLgogICBQYXRjaCBieSBQZXRyIFZpa3RvcmluLgogCistIElzc3VlICMyMzM1OTogT3B0aW1pemUgc2V0IG9iamVjdCBpbnRlcm5hbHMgYnkgc3BlY2lhbGl6aW5nIHRoZQorICBoYXNoIHRhYmxlIHNlYXJjaCBpbnRvIGEgbG9va3VwIGZ1bmN0aW9uIGFuZCBhbiBpbnNlcnQgZnVuY3Rpb24uCisKIC0gSXNzdWUgIzIzOTU1OiBBZGQgcHl2ZW52LmNmZyBvcHRpb24gdG8gc3VwcHJlc3MgcmVnaXN0cnkvZW52aXJvbm1lbnQKICAgbG9va3VwIGZvciBnZW5lcmF0aW5nIHN5cy5wYXRoIG9uIFdpbmRvd3MuCiAKQEAgLTIzMzQsOCArMzg3NSw4IEBACiAtIElzc3VlICMxMzIyOiBwbGF0Zm9ybS5kaXN0KCkgYW5kIHBsYXRmb3JtLmxpbnV4X2Rpc3RyaWJ1dGlvbigpIGZ1bmN0aW9ucyBhcmUKICAgbm93IGRlcHJlY2F0ZWQuICBJbml0aWFsIHBhdGNoIGJ5IFZhanJhc2t5IEtvay4KIAotLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbgotICBub3cgaXMgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgorLSBJc3N1ZSAjMjI0ODY6IEFkZGVkIHRoZSBtYXRoLmdjZCgpIGZ1bmN0aW9uLiAgVGhlIGZyYWN0aW9ucy5nY2QoKSBmdW5jdGlvbiBub3cgaXMKKyAgZGVwcmVjYXRlZC4gIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcmsgRGlja2luc29uLgogCiAtIElzc3VlICMyNDA2NDogUHJvcGVydHkoKSBkb2NzdHJpbmdzIGFyZSBub3cgd3JpdGVhYmxlLgogICAoUGF0Y2ggYnkgQmVya2VyIFBla3NhZy4pCkBAIC0yNzU2LDggKzQyOTcsOCBAQAogICB3cml0ZXIgZmFpbGVkIGluIEJ1ZmZlcmVkUldQYWlyLmNsb3NlKCkuCiAKIC0gSXNzdWUgIzIzNjIyOiBVbmtub3duIGVzY2FwZXMgaW4gcmVndWxhciBleHByZXNzaW9ucyB0aGF0IGNvbnNpc3Qgb2YgYGAnXCdgYAotICBhbmQgQVNDSUkgbGV0dGVyIG5vdyByYWlzZSBhIGRlcHJlY2F0aW9uIHdhcm5pbmcgYW5kIHdpbGwgYmUgZm9yYmlkZGVuIGluCi0gIFB5dGhvbiAzLjYuCisgIGFuZCBhbiBBU0NJSSBsZXR0ZXIgbm93IHJhaXNlIGEgZGVwcmVjYXRpb24gd2FybmluZyBhbmQgd2lsbCBiZSBmb3JiaWRkZW4KKyAgaW4gUHl0aG9uIDMuNi4KIAogLSBJc3N1ZSAjMjM2NzE6IHN0cmluZy5UZW1wbGF0ZSBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBwYXJhbWV0ZXIgYXMKICAgYSBrZXl3b3JkIGFyZ3VtZW50LiAgc3RyaW5nLkZvcm1hdHRlciBub3cgYWxsb3dzIHNwZWNpZnlpbmcgdGhlICJzZWxmIiBhbmQKQEAgLTM1MTYsNyArNTA1Nyw3IEBACiAgIEJhc2VkIG9uIHBhdGNoIGJ5IE1hcnRpbiBQYW50ZXIuCiAKIC0gSXNzdWUgIzE3MjkzOiB1dWlkLmdldG5vZGUoKSBub3cgZGV0ZXJtaW5lcyBNQUMgYWRkcmVzcyBvbiBBSVggdXNpbmcgbmV0c3RhdC4KLSAgQmFzZWQgb24gcGF0Y2ggYnkgQWl2YXJzIEthbHbEgW5zLgorICBCYXNlZCBvbiBwYXRjaCBieSBBaXZhcnMgS2Fsdu+/vT9ucy4KIAogLSBJc3N1ZSAjMjI3Njk6IEZpeGVkIHR0ay5UcmVldmlldy50YWdfaGFzKCkgd2hlbiBjYWxsZWQgd2l0aG91dCBhcmd1bWVudHMuCiAKQEAgLTU5MjIsNiArNzQ2Myw5IEBACiAKIC0gSXNzdWUgIzE5MzY5OiBPcHRpbWl6ZWQgdGhlIHVzYWdlIG9mIF9fbGVuZ3RoX2hpbnRfXygpLgogCistIElzc3VlICMyODAyNjogUmFpc2UgSW1wb3J0RXJyb3Igd2hlbiBleGVjX21vZHVsZSgpIGV4aXN0cyBidXQKKyAgY3JlYXRlX21vZHVsZSgpIGlzIG1pc3NpbmcuCisKIC0gSXNzdWUgIzE4NjAzOiBFbnN1cmUgdGhhdCBQeU9TX215c3RyaWNtcCBhbmQgUHlPU19teXN0cm5pY21wIGFyZSBpbiB0aGUKICAgUHl0aG9uIGV4ZWN1dGFibGUgYW5kIG5vdCByZW1vdmVkIGJ5IHRoZSBsaW5rZXIncyBvcHRpbWl6ZXIuCiAKQEAgLTY4MDksNiArODM1Myw5IEBACiAtIElzc3VlICMxNjgwOTogVGtpbnRlcidzIHNwbGl0bGlzdCgpIGFuZCBzcGxpdCgpIG1ldGhvZHMgbm93IGFjY2VwdCBUY2xfT2JqCiAgIGFyZ3VtZW50LgogCistIElzc3VlICMxNzIxMTogWWllbGQgYSBuYW1lZHR1cGxlIGluIHBrZ3V0aWwuCisgIFBhdGNoIGJ5IFJhbWNoYW5kcmEgQXB0ZS4KKwogLSBJc3N1ZSAjMTgzMjQ6IHNldF9wYXlsb2FkIG5vdyBjb3JyZWN0bHkgaGFuZGxlcyBiaW5hcnkgaW5wdXQuICBUaGlzIGFsc28KICAgc3VwZXJzZWRlcyB0aGUgcHJldmlvdXMgZml4ZXMgZm9yICMxNDM2MCwgIzE3MTcsIGFuZCAjMTY1NjQuCiAKQEAgLTY4MTgsNiArODM2NSw4IEBACiAtIElzc3VlICMxNzExOTogRml4ZWQgaW50ZWdlciBvdmVyZmxvd3Mgd2hlbiBwcm9jZXNzaW5nIGxhcmdlIHN0cmluZ3MgYW5kIHR1cGxlcwogICBpbiB0aGUgdGtpbnRlciBtb2R1bGUuCiAKKy0gSXNzdWUgIzE1MzUyOiBSZWJ1aWxkIGZyb3plbiBtb2R1bGVzIHdoZW4gbWFyc2hhbC5jIGlzIGNoYW5nZWQuCisKIC0gSXNzdWUgIzE4NzQ3OiBSZS1zZWVkIE9wZW5TU0wncyBwc2V1ZG8tcmFuZG9tIG51bWJlciBnZW5lcmF0b3IgYWZ0ZXIgZm9yay4KICAgQSBwdGhyZWFkX2F0Zm9yaygpIHBhcmVudCBoYW5kbGVyIGlzIHVzZWQgdG8gc2VlZCB0aGUgUFJORyB3aXRoIHBpZCwgdGltZQogICBhbmQgc29tZSBzdGFjayBkYXRhLgpAQCAtNzAyNSw2ICs4NTc0LDkgQEAKIC0gSXNzdWUgIzE4MTM3OiBEZXRlY3QgaW50ZWdlciBvdmVyZmxvdyBvbiBwcmVjaXNpb24gaW4gZmxvYXQuX19mb3JtYXRfXygpCiAgIGFuZCBjb21wbGV4Ll9fZm9ybWF0X18oKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEludHJvZHVjZSBNb2R1bGVOb3RGb3VuZEVycm9yIHdoaWNoIGlzIHJhaXNlZCB3aGVuIGEgbW9kdWxlCisgIGNvdWxkIG5vdCBiZSBmb3VuZC4KKwogLSBJc3N1ZSAjMTgxODM6IEZpeCB2YXJpb3VzIHVuaWNvZGUgb3BlcmF0aW9ucyBvbiBzdHJpbmdzIHdpdGggbGFyZ2UgdW5pY29kZQogICBjb2RlcG9pbnRzLgogCkBAIC04OTQ1LDYgKzEwNDk3LDEwIEBACiAgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcygpIChhbmQgdGh1cyBieSBleHRlbnNpb24KICAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUoKSBhbmQgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeCgpKS4KIAorLSBJc3N1ZSAjMTU3Njc6IEFkZGVkIFB5RXJyX1NldEltcG9ydEVycm9yU3ViY2xhc3MoKS4KKworLSBQeUVycl9TZXRJbXBvcnRFcnJvcigpIG5vdyBzZXRzIFR5cGVFcnJvciB3aGVuIGl0cyBtc2cgYXJndW1lbnQgaXMgc2V0LgorCiAtIElzc3VlICM5MzY5OiBUaGUgdHlwZXMgb2YgYGNoYXIqYCBhcmd1bWVudHMgb2YgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uKCkgYW5kCiAgIFB5T2JqZWN0X0NhbGxNZXRob2QoKSBub3cgY2hhbmdlZCB0byBgY29uc3QgY2hhcipgLiAgQmFzZWQgb24gcGF0Y2hlcyBieQogICBKw7ZyZyBNw7xsbGVyIGFuZCBMYXJzIEJ1aXRpbmNrLgpkaWZmIC0tZ2l0IGEvTWlzYy9SRUFETUUudmFsZ3JpbmQgYi9NaXNjL1JFQURNRS52YWxncmluZAppbmRleCBiNWE5YTMyLi45MDhmMTM3IDEwMDY0NAotLS0gYS9NaXNjL1JFQURNRS52YWxncmluZAorKysgYi9NaXNjL1JFQURNRS52YWxncmluZApAQCAtMiw2ICsyLDkgQEAKIFB5dGhvbi4gIFZhbGdyaW5kIGlzIHVzZWQgcGVyaW9kaWNhbGx5IGJ5IFB5dGhvbiBkZXZlbG9wZXJzIHRvIHRyeQogdG8gZW5zdXJlIHRoZXJlIGFyZSBubyBtZW1vcnkgbGVha3Mgb3IgaW52YWxpZCBtZW1vcnkgcmVhZHMvd3JpdGVzLgogCitVUERBVEU6IFB5dGhvbiAzLjYgbm93IHN1cHBvcnRzIFBZVEhPTk1BTExPQz1tYWxsb2MgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hpY2gKK2NhbiBiZSB1c2VkIHRvIGZvcmNlIHRoZSB1c2FnZSBvZiB0aGUgbWFsbG9jKCkgYWxsb2NhdG9yIG9mIHRoZSBDIGxpYnJhcnkuCisKIElmIHlvdSBkb24ndCB3YW50IHRvIHJlYWQgYWJvdXQgdGhlIGRldGFpbHMgb2YgdXNpbmcgVmFsZ3JpbmQsIHRoZXJlCiBhcmUgc3RpbGwgdHdvIHRoaW5ncyB5b3UgbXVzdCBkbyB0byBzdXBwcmVzcyB0aGUgd2FybmluZ3MuICBGaXJzdCwKIHlvdSBtdXN0IHVzZSBhIHN1cHByZXNzaW9ucyBmaWxlLiAgT25lIGlzIHN1cHBsaWVkIGluCmRpZmYgLS1naXQgYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0IGIvTWlzYy9TcGVjaWFsQnVpbGRzLnR4dAppbmRleCAzMDA0MTc0Li44MmZhMjNlIDEwMDY0NAotLS0gYS9NaXNjL1NwZWNpYWxCdWlsZHMudHh0CisrKyBiL01pc2MvU3BlY2lhbEJ1aWxkcy50eHQKQEAgLTY1LDkgKzY1LDkgQEAKICAgICBzaW1wbHkgYnkgdmlydHVlIG9mIGJlaW5nIGluIHRoZSBsaXN0LgogCiBlbnZ2YXIgUFlUSE9ORFVNUFJFRlMKLSAgICBJZiB0aGlzIGVudnZhciBleGlzdHMsIFB5X0ZpbmFsaXplKCkgYXJyYW5nZXMgdG8gcHJpbnQgYSBsaXN0IG9mIGFsbAorICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgUHlfRmluYWxpemVFeCgpIGFycmFuZ2VzIHRvIHByaW50IGEgbGlzdCBvZiBhbGwKICAgICBzdGlsbC1saXZlIGhlYXAgb2JqZWN0cy4gIFRoaXMgaXMgcHJpbnRlZCB0d2ljZSwgaW4gZGlmZmVyZW50IGZvcm1hdHMsCi0gICAgYmVmb3JlIGFuZCBhZnRlciBQeV9GaW5hbGl6ZSBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQorICAgIGJlZm9yZSBhbmQgYWZ0ZXIgUHlfRmluYWxpemVFeCBoYXMgY2xlYW5lZCB1cCBldmVyeXRoaW5nIGl0IGNhbiBjbGVhbiB1cC4gIFRoZQogICAgIGZpcnN0IG91dHB1dCBibG9jayBwcm9kdWNlcyB0aGUgcmVwcigpIG9mIGVhY2ggb2JqZWN0IHNvIGlzIG1vcmUKICAgICBpbmZvcm1hdGl2ZTsgaG93ZXZlciwgYSBsb3Qgb2Ygc3R1ZmYgZGVzdGluZWQgdG8gZGllIGlzIHN0aWxsIGFsaXZlIHRoZW4uCiAgICAgVGhlIHNlY29uZCBvdXRwdXQgYmxvY2sgaXMgbXVjaCBoYXJkZXIgdG8gd29yayB3aXRoIChyZXByKCkgY2FuJ3QgYmUgaW52b2tlZApAQCAtMTQ0LDcgKzE0NCw3IEBACiAKIGVudnZhciBQWVRIT05NQUxMT0NTVEFUUwogICAgIElmIHRoaXMgZW52dmFyIGV4aXN0cywgYSByZXBvcnQgb2YgcHltYWxsb2Mgc3VtbWFyeSBzdGF0aXN0aWNzIGlzIHByaW50ZWQgdG8KLSAgICBzdGRlcnIgd2hlbmV2ZXIgYSBuZXcgYXJlbmEgaXMgYWxsb2NhdGVkLCBhbmQgYWxzbyBieSBQeV9GaW5hbGl6ZSgpLgorICAgIHN0ZGVyciB3aGVuZXZlciBhIG5ldyBhcmVuYSBpcyBhbGxvY2F0ZWQsIGFuZCBhbHNvIGJ5IFB5X0ZpbmFsaXplRXgoKS4KIAogQ2hhbmdlZCBpbiAyLjU6ICBUaGUgbnVtYmVyIG9mIGV4dHJhIGJ5dGVzIGFsbG9jYXRlZCBpcyA0KnNpemVvZihzaXplX3QpLgogQmVmb3JlIGl0IHdhcyAxNiBvbiBhbGwgYm94ZXMsIHJlZmxlY3RpbmcgdGhhdCBQeXRob24gY291bGRuJ3QgbWFrZSB1c2Ugb2YKQEAgLTE3OSw3ICsxNzksNyBAQAogICAgICAqLwogICAgIGludCB0cF9tYXhhbGxvYzsKIAotQWxsb2NhdGlvbiBhbmQgZGVhbGxvY2F0aW9uIGNvZGUga2VlcHMgdGhlc2UgY291bnRzIHVwIHRvIGRhdGUuICBQeV9GaW5hbGl6ZSgpCitBbGxvY2F0aW9uIGFuZCBkZWFsbG9jYXRpb24gY29kZSBrZWVwcyB0aGVzZSBjb3VudHMgdXAgdG8gZGF0ZS4gIFB5X0ZpbmFsaXplRXgoKQogZGlzcGxheXMgYSBzdW1tYXJ5IG9mIHRoZSBpbmZvIHJldHVybmVkIGJ5IHN5cy5nZXRjb3VudHMoKSAoc2VlIGJlbG93KSwgYWxvbmcKIHdpdGggYXNzb3J0ZWQgb3RoZXIgc3BlY2lhbCBhbGxvY2F0aW9uIGNvdW50cyAobGlrZSB0aGUgbnVtYmVyIG9mIHR1cGxlCiBhbGxvY2F0aW9ucyBzYXRpc2ZpZWQgYnkgYSB0dXBsZSBmcmVlLWxpc3QsIHRoZSBudW1iZXIgb2YgMS1jaGFyYWN0ZXIgc3RyaW5ncwpAQCAtMjM0LDI5ICsyMzQsMyBAQAogbnVtYmVyIG9mIGZ1bmN0aW9uIGNhbGxzIG1hZGUuICBJdCBrZWVwcyBkZXRhaWxlZCBzdGF0aXN0aWNzIGFib3V0IHdoYXQga2luZCBvZgogb2JqZWN0IHdhcyBjYWxsZWQgYW5kIHdoZXRoZXIgdGhlIGNhbGwgaGl0IGFueSBvZiB0aGUgc3BlY2lhbCBmYXN0IHBhdGhzIGluIHRoZQogY29kZS4KLQotCi1XSVRIX1RTQwotLS0tLS0tLS0KLQotU3VwZXItbG93bGV2ZWwgcHJvZmlsaW5nIG9mIHRoZSBpbnRlcnByZXRlci4gIFdoZW4gZW5hYmxlZCwgdGhlIHN5cyBtb2R1bGUgZ3Jvd3MKLWEgbmV3IGZ1bmN0aW9uOgotCi1zZXR0c2NkdW1wKGJvb2wpCi0gICAgSWYgdHJ1ZSwgdGVsbCB0aGUgUHl0aG9uIGludGVycHJldGVyIHRvIGR1bXAgVk0gbWVhc3VyZW1lbnRzIHRvIHN0ZGVyci4gIElmCi0gICAgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGUgcHJvY2Vzc29yJ3MKLSAgICB0aW1lLXN0YW1wIGNvdW50ZXIuCi0KLVRoaXMgYnVpbGQgb3B0aW9uIHJlcXVpcmVzIGEgc21hbGwgYW1vdW50IG9mIHBsYXRmb3JtIHNwZWNpZmljIGNvZGUuICBDdXJyZW50bHkKLXRoaXMgY29kZSBpcyBwcmVzZW50IGZvciBsaW51eC94ODYgYW5kIGFueSBQb3dlclBDIHBsYXRmb3JtIHRoYXQgdXNlcyBHQ0MKLShpLmUuIE9TIFggYW5kIGxpbnV4L3BwYykuCi0KLU9uIHRoZSBQb3dlclBDIHRoZSByYXRlIGF0IHdoaWNoIHRoZSB0aW1lIGJhc2UgcmVnaXN0ZXIgaXMgaW5jcmVtZW50ZWQgaXMgbm90Ci1kZWZpbmVkIGJ5IHRoZSBhcmNoaXRlY3R1cmUgc3BlY2lmaWNhdGlvbiwgc28geW91J2xsIG5lZWQgdG8gZmluZCB0aGUgbWFudWFsIGZvcgoteW91ciBzcGVjaWZpYyBwcm9jZXNzb3IuICBGb3IgdGhlIDc1MENYLCA3NTBDWGUgYW5kIDc1MEZYIChhbGwgc29sZCBhcyB0aGUgRzMpCi13ZSBmaW5kOgotCi0gICAgVGhlIHRpbWUgYmFzZSBjb3VudGVyIGlzIGNsb2NrZWQgYXQgYSBmcmVxdWVuY3kgdGhhdCBpcyBvbmUtZm91cnRoIHRoYXQgb2YKLSAgICB0aGUgYnVzIGNsb2NrLgotCi1UaGlzIGJ1aWxkIGlzIGVuYWJsZWQgYnkgdGhlIC0td2l0aC10c2MgZmxhZyB0byBjb25maWd1cmUuCmRpZmYgLS1naXQgYS9NaXNjL2NvdmVyaXR5X21vZGVsLmMgYi9NaXNjL2NvdmVyaXR5X21vZGVsLmMKaW5kZXggNzQ5ZjJmMC4uMWFlNjE3OSAxMDA2NDQKLS0tIGEvTWlzYy9jb3Zlcml0eV9tb2RlbC5jCisrKyBiL01pc2MvY292ZXJpdHlfbW9kZWwuYwpAQCAtMjIsNyArMjIsNiBAQAogI2RlZmluZSBhc3NlcnQob3ApIC8qIGVtcHR5ICovCiB0eXBlZGVmIGludCBzZGlnaXQ7CiB0eXBlZGVmIGxvbmcgUHlfc3NpemVfdDsKLXR5cGVkZWYgbG9uZyBsb25nIFBZX0xPTkdfTE9ORzsKIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgd2NoYXJfdDsKIHR5cGVkZWYgc3RydWN0IHt9IFB5T2JqZWN0OwogdHlwZWRlZiBzdHJ1Y3Qge30gZ3JhbW1hcjsKQEAgLTYzLDcgKzYyLDcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLVB5T2JqZWN0ICpQeUxvbmdfRnJvbUxvbmdMb25nKFBZX0xPTkdfTE9ORyBpdmFsKQorUHlPYmplY3QgKlB5TG9uZ19Gcm9tTG9uZ0xvbmcobG9uZyBsb25nIGl2YWwpCiB7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZylpdmFsKTsKIH0KQEAgLTk0LDcgKzkzLDcgQEAKIH0KIAogLyogUGFyc2VyL3BnZW5tYWluLmMgKi8KLWdyYW1tYXIgKmdldGdyYW1tYXIoY2hhciAqZmlsZW5hbWUpCitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKQogewogICAgIGdyYW1tYXIgKmc7CiAgICAgX19jb3Zlcml0eV90YWludGVkX2RhdGFfc2lua19fKGZpbGVuYW1lKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvU2V0dXAuY29uZmlnLmluIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KaW5kZXggYWRhYzAzMC4uNjQ1MDUyOCAxMDA2NDQKLS0tIGEvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KKysrIGIvTW9kdWxlcy9TZXR1cC5jb25maWcuaW4KQEAgLTYsOCArNiw1IEBACiAjIFRocmVhZGluZwogQFVTRV9USFJFQURfTU9EVUxFQF90aHJlYWQgX3RocmVhZG1vZHVsZS5jCiAKLSMgVGhlIHNpZ25hbCBtb2R1bGUKLUBVU0VfU0lHTkFMX01PRFVMRUBfc2lnbmFsIHNpZ25hbG1vZHVsZS5jCi0KICMgVGhlIHJlc3Qgb2YgdGhlIG1vZHVsZXMgcHJldmlvdXNseSBsaXN0ZWQgaW4gdGhpcyBmaWxlIGFyZSBidWlsdAogIyBieSB0aGUgc2V0dXAucHkgc2NyaXB0IGluIFB5dGhvbiAyLjEgYW5kIGxhdGVyLgpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9TZXR1cC5kaXN0IGIvTW9kdWxlcy9TZXR1cC5kaXN0CmluZGV4IDA2YmE2YWQuLjhiODdmYzggMTAwNjQ0Ci0tLSBhL01vZHVsZXMvU2V0dXAuZGlzdAorKysgYi9Nb2R1bGVzL1NldHVwLmRpc3QKQEAgLTExNyw2ICsxMTcsNyBAQAogX2NvbGxlY3Rpb25zIF9jb2xsZWN0aW9uc21vZHVsZS5jICMgQ29udGFpbmVyIHR5cGVzCiBpdGVydG9vbHMgaXRlcnRvb2xzbW9kdWxlLmMgICAgIyBGdW5jdGlvbnMgY3JlYXRpbmcgaXRlcmF0b3JzIGZvciBlZmZpY2llbnQgbG9vcGluZwogYXRleGl0IGF0ZXhpdG1vZHVsZS5jICAgICAgIyBSZWdpc3RlciBmdW5jdGlvbnMgdG8gYmUgcnVuIGF0IGludGVycHJldGVyLXNodXRkb3duCitfc2lnbmFsIHNpZ25hbG1vZHVsZS5jCiBfc3RhdCBfc3RhdC5jCQkJIyBzdGF0LmggaW50ZXJmYWNlCiB0aW1lIHRpbWVtb2R1bGUuYwkjIC1sbSAjIHRpbWUgb3BlcmF0aW9ucyBhbmQgdmFyaWFibGVzCiAKQEAgLTE4MCw2ICsxODEsNyBAQAogI19kYXRldGltZSBfZGF0ZXRpbWVtb2R1bGUuYwkjIGRhdGV0aW1lIGFjY2VsZXJhdG9yCiAjX2Jpc2VjdCBfYmlzZWN0bW9kdWxlLmMJIyBCaXNlY3Rpb24gYWxnb3JpdGhtcwogI19oZWFwcSBfaGVhcHFtb2R1bGUuYwkjIEhlYXAgcXVldWUgYWxnb3JpdGhtCisjX2FzeW5jaW8gX2FzeW5jaW9tb2R1bGUuYyAgIyBGYXN0IGFzeW5jaW8gRnV0dXJlCiAKICN1bmljb2RlZGF0YSB1bmljb2RlZGF0YS5jICAgICMgc3RhdGljIFVuaWNvZGUgY2hhcmFjdGVyIGRhdGFiYXNlCiAKQEAgLTI0OSw2ICsyNTEsOCBAQAogI19zaGEyNTYgc2hhMjU2bW9kdWxlLmMKICNfc2hhNTEyIHNoYTUxMm1vZHVsZS5jCiAKKyMgX2JsYWtlIG1vZHVsZQorI19ibGFrZTIgX2JsYWtlMi9ibGFrZTJtb2R1bGUuYyBfYmxha2UyL2JsYWtlMmJfaW1wbC5jIF9ibGFrZTIvYmxha2Uyc19pbXBsLmMKIAogIyBUaGUgX3RraW50ZXIgbW9kdWxlLgogIwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jIGIvTW9kdWxlcy9fYXN5bmNpb21vZHVsZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNTc2ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19hc3luY2lvbW9kdWxlLmMKQEAgLTAsMCArMSwxMDM0IEBACisjaW5jbHVkZSAiUHl0aG9uLmgiCisjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCisKKworLyogaWRlbnRpZmllcnMgdXNlZCBmcm9tIHNvbWUgZnVuY3Rpb25zICovCitfUHlfSURFTlRJRklFUihjYWxsX3Nvb24pOworCisKKy8qIFN0YXRlIG9mIHRoZSBfYXN5bmNpbyBtb2R1bGUgKi8KK3N0YXRpYyBpbnQgX2FzeW5jaW9tb2RfcmVhZHk7CitzdGF0aWMgUHlPYmplY3QgKnRyYWNlYmFja19leHRyYWN0X3N0YWNrOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX2dldF9ldmVudF9sb29wOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX3JlcHJfaW5mb19mdW5jOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yOworc3RhdGljIFB5T2JqZWN0ICphc3luY2lvX0NhbmNlbGxlZEVycm9yOworCisKKy8qIEdldCBGdXR1cmVJdGVyIGZyb20gRnV0dXJlICovCitzdGF0aWMgUHlPYmplY3QqIG5ld19mdXR1cmVfaXRlcihQeU9iamVjdCAqZnV0KTsKKworCisvKiBtYWtlIHN1cmUgbW9kdWxlIHN0YXRlIGlzIGluaXRpYWxpemVkIGFuZCByZWFkeSB0byBiZSB1c2VkLiAqLworc3RhdGljIGludAorX0FzeW5jaW9Nb2RfRW5zdXJlU3RhdGUodm9pZCkKK3sKKyAgICBpZiAoIV9hc3luY2lvbW9kX3JlYWR5KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiX2FzeW5jaW8gbW9kdWxlIHdhc24ndCBwcm9wZXJseSBpbml0aWFsaXplZCIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCisKK3R5cGVkZWYgZW51bSB7CisgICAgU1RBVEVfUEVORElORywKKyAgICBTVEFURV9DQU5DRUxMRUQsCisgICAgU1RBVEVfRklOSVNIRUQKK30gZnV0X3N0YXRlOworCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgUHlPYmplY3QgKmZ1dF9sb29wOworICAgIFB5T2JqZWN0ICpmdXRfY2FsbGJhY2tzOworICAgIFB5T2JqZWN0ICpmdXRfZXhjZXB0aW9uOworICAgIFB5T2JqZWN0ICpmdXRfcmVzdWx0OworICAgIFB5T2JqZWN0ICpmdXRfc291cmNlX3RiOworICAgIGZ1dF9zdGF0ZSBmdXRfc3RhdGU7CisgICAgaW50IGZ1dF9sb2dfdGI7CisgICAgaW50IGZ1dF9ibG9ja2luZzsKKyAgICBQeU9iamVjdCAqZGljdDsKKyAgICBQeU9iamVjdCAqZnV0X3dlYWtyZWZsaXN0OworfSBGdXR1cmVPYmo7CisKKworc3RhdGljIGludAorX3NjaGVkdWxlX2NhbGxiYWNrcyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeU9iamVjdCogaXRlcnM7CisgICAgaW50IGk7CisKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIk5VTEwgY2FsbGJhY2tzIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBsZW4gPSBQeUxpc3RfR0VUX1NJWkUoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBpZiAobGVuID09IDApIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgaXRlcnMgPSBQeUxpc3RfR2V0U2xpY2UoZnV0LT5mdXRfY2FsbGJhY2tzLCAwLCBsZW4pOworICAgIGlmIChpdGVycyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5TGlzdF9TZXRTbGljZShmdXQtPmZ1dF9jYWxsYmFja3MsIDAsIGxlbiwgTlVMTCkgPCAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihpdGVycyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmhhbmRsZSA9IE5VTEw7CisgICAgICAgIFB5T2JqZWN0ICpjYiA9IFB5TGlzdF9HRVRfSVRFTShpdGVycywgaSk7CisKKyAgICAgICAgaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfc29vbiwgIk9PIiwgY2IsIGZ1dCwgTlVMTCk7CisKKyAgICAgICAgaWYgKGhhbmRsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaXRlcnMpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgUHlfREVDUkVGKGhhbmRsZSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeV9ERUNSRUYoaXRlcnMpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfaW5pdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQoreworICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibG9vcCIsIE5VTEx9OworICAgIFB5T2JqZWN0ICpsb29wID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihnZXRfZGVidWcpOworCisgICAgaWYgKF9Bc3luY2lvTW9kX0Vuc3VyZVN0YXRlKCkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsICJ8JE8iLCBrd2xpc3QsICZsb29wKSkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGlmIChsb29wID09IE5VTEwgfHwgbG9vcCA9PSBQeV9Ob25lKSB7CisgICAgICAgIGxvb3AgPSBQeU9iamVjdF9DYWxsT2JqZWN0KGFzeW5jaW9fZ2V0X2V2ZW50X2xvb3AsIE5VTEwpOworICAgICAgICBpZiAobG9vcCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X0lOQ1JFRihsb29wKTsKKyAgICB9CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfbG9vcCk7CisgICAgZnV0LT5mdXRfbG9vcCA9IGxvb3A7CisKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2dldF9kZWJ1ZywgIigpIiwgTlVMTCk7CisgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKFB5T2JqZWN0X0lzVHJ1ZShyZXMpKSB7CisgICAgICAgIFB5X0NMRUFSKHJlcyk7CisgICAgICAgIGZ1dC0+ZnV0X3NvdXJjZV90YiA9IFB5T2JqZWN0X0NhbGxPYmplY3QodHJhY2ViYWNrX2V4dHJhY3Rfc3RhY2ssIE5VTEwpOworICAgICAgICBpZiAoZnV0LT5mdXRfc291cmNlX3RiID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfQ0xFQVIocmVzKTsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9jYWxsYmFja3MgPSBQeUxpc3RfTmV3KDApOworICAgIGlmIChmdXQtPmZ1dF9jYWxsYmFja3MgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfY2xlYXIoRnV0dXJlT2JqICpmdXQpCit7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfbG9vcCk7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfY2FsbGJhY2tzKTsKKyAgICBQeV9DTEVBUihmdXQtPmZ1dF9yZXN1bHQpOworICAgIFB5X0NMRUFSKGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgUHlfQ0xFQVIoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICBQeV9DTEVBUihmdXQtPmRpY3QpOworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgaW50CitGdXR1cmVPYmpfdHJhdmVyc2UoRnV0dXJlT2JqICpmdXQsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQoreworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2xvb3ApOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgUHlfVklTSVQoZnV0LT5mdXRfcmVzdWx0KTsKKyAgICBQeV9WSVNJVChmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIFB5X1ZJU0lUKGZ1dC0+ZnV0X3NvdXJjZV90Yik7CisgICAgUHlfVklTSVQoZnV0LT5kaWN0KTsKKyAgICByZXR1cm4gMDsKK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX3Jlc3VsdCwKKyAgICAiUmV0dXJuIHRoZSByZXN1bHQgdGhpcyBmdXR1cmUgcmVwcmVzZW50cy5cbiIKKyAgICAiXG4iCisgICAgIklmIHRoZSBmdXR1cmUgaGFzIGJlZW4gY2FuY2VsbGVkLCByYWlzZXMgQ2FuY2VsbGVkRXJyb3IuICBJZiB0aGVcbiIKKyAgICAiZnV0dXJlJ3MgcmVzdWx0IGlzbid0IHlldCBhdmFpbGFibGUsIHJhaXNlcyBJbnZhbGlkU3RhdGVFcnJvci4gIElmXG4iCisgICAgInRoZSBmdXR1cmUgaXMgZG9uZSBhbmQgaGFzIGFuIGV4Y2VwdGlvbiBzZXQsIHRoaXMgZXhjZXB0aW9uIGlzIHJhaXNlZC4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX3Jlc3VsdChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0NhbmNlbGxlZEVycm9yLCAiIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9GSU5JU0hFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgIlJlc3VsdCBpcyBub3QgcmVhZHkuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDA7CisgICAgaWYgKGZ1dC0+ZnV0X2V4Y2VwdGlvbiAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICp0eXBlID0gTlVMTDsKKyAgICAgICAgdHlwZSA9IFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2xhc3MoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIGZ1dC0+ZnV0X2V4Y2VwdGlvbik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9yZXN1bHQpOworICAgIHJldHVybiBmdXQtPmZ1dF9yZXN1bHQ7Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19leGNlcHRpb24sCisgICAgIlJldHVybiB0aGUgZXhjZXB0aW9uIHRoYXQgd2FzIHNldCBvbiB0aGlzIGZ1dHVyZS5cbiIKKyAgICAiXG4iCisgICAgIlRoZSBleGNlcHRpb24gKG9yIE5vbmUgaWYgbm8gZXhjZXB0aW9uIHdhcyBzZXQpIGlzIHJldHVybmVkIG9ubHkgaWZcbiIKKyAgICAidGhlIGZ1dHVyZSBpcyBkb25lLiAgSWYgdGhlIGZ1dHVyZSBoYXMgYmVlbiBjYW5jZWxsZWQsIHJhaXNlc1xuIgorICAgICJDYW5jZWxsZWRFcnJvci4gIElmIHRoZSBmdXR1cmUgaXNuJ3QgZG9uZSB5ZXQsIHJhaXNlc1xuIgorICAgICJJbnZhbGlkU3RhdGVFcnJvci4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoX0FzeW5jaW9Nb2RfRW5zdXJlU3RhdGUoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0NhbmNlbGxlZEVycm9yLCAiIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9GSU5JU0hFRCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgIlJlc3VsdCBpcyBub3QgcmVhZHkuIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCkgeworICAgICAgICBmdXQtPmZ1dF9sb2dfdGIgPSAwOworICAgICAgICBQeV9JTkNSRUYoZnV0LT5mdXRfZXhjZXB0aW9uKTsKKyAgICAgICAgcmV0dXJuIGZ1dC0+ZnV0X2V4Y2VwdGlvbjsKKyAgICB9CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX3NldF9yZXN1bHQsCisgICAgIk1hcmsgdGhlIGZ1dHVyZSBkb25lIGFuZCBzZXQgaXRzIHJlc3VsdC5cbiIKKyAgICAiXG4iCisgICAgIklmIHRoZSBmdXR1cmUgaXMgYWxyZWFkeSBkb25lIHdoZW4gdGhpcyBtZXRob2QgaXMgY2FsbGVkLCByYWlzZXNcbiIKKyAgICAiSW52YWxpZFN0YXRlRXJyb3IuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9zZXRfcmVzdWx0KEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqcmVzKQoreworICAgIGlmIChfQXN5bmNpb01vZF9FbnN1cmVTdGF0ZSgpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhhc3luY2lvX0ludmFsaWRTdGF0ZUVycm9yLCAiaW52YWxpZCBzdGF0ZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYocmVzKTsKKyAgICBmdXQtPmZ1dF9yZXN1bHQgPSByZXM7CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9GSU5JU0hFRDsKKworICAgIGlmIChfc2NoZWR1bGVfY2FsbGJhY2tzKGZ1dCkgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocHlkb2Nfc2V0X2V4Y2VwdGlvbiwKKyAgICAiTWFyayB0aGUgZnV0dXJlIGRvbmUgYW5kIHNldCBhbiBleGNlcHRpb24uXG4iCisgICAgIlxuIgorICAgICJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSB3aGVuIHRoaXMgbWV0aG9kIGlzIGNhbGxlZCwgcmFpc2VzXG4iCisgICAgIkludmFsaWRTdGF0ZUVycm9yLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfc2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmV4YykKK3sKKyAgICBQeU9iamVjdCAqZXhjX3ZhbCA9IE5VTEw7CisKKyAgICBpZiAoX0FzeW5jaW9Nb2RfRW5zdXJlU3RhdGUoKSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoYXN5bmNpb19JbnZhbGlkU3RhdGVFcnJvciwgImludmFsaWQgc3RhdGUiKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2soZXhjKSkgeworICAgICAgICBleGNfdmFsID0gUHlPYmplY3RfQ2FsbE9iamVjdChleGMsIE5VTEwpOworICAgICAgICBpZiAoZXhjX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZXhjX3ZhbCA9IGV4YzsKKyAgICAgICAgUHlfSU5DUkVGKGV4Y192YWwpOworICAgIH0KKyAgICBpZiAoIVB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2soZXhjX3ZhbCkpIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiaW52YWxpZCBleGNlcHRpb24gb2JqZWN0Iik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBpZiAoKFB5T2JqZWN0KilQeV9UWVBFKGV4Y192YWwpID09IFB5RXhjX1N0b3BJdGVyYXRpb24pIHsKKyAgICAgICAgUHlfREVDUkVGKGV4Y192YWwpOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlN0b3BJdGVyYXRpb24gaW50ZXJhY3RzIGJhZGx5IHdpdGggZ2VuZXJhdG9ycyAiCisgICAgICAgICAgICAgICAgICAgICAgICAiYW5kIGNhbm5vdCBiZSByYWlzZWQgaW50byBhIEZ1dHVyZSIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBmdXQtPmZ1dF9leGNlcHRpb24gPSBleGNfdmFsOworICAgIGZ1dC0+ZnV0X3N0YXRlID0gU1RBVEVfRklOSVNIRUQ7CisKKyAgICBpZiAoX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZ1dC0+ZnV0X2xvZ190YiA9IDE7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19hZGRfZG9uZV9jYWxsYmFjaywKKyAgICAiQWRkIGEgY2FsbGJhY2sgdG8gYmUgcnVuIHdoZW4gdGhlIGZ1dHVyZSBiZWNvbWVzIGRvbmUuXG4iCisgICAgIlxuIgorICAgICJUaGUgY2FsbGJhY2sgaXMgY2FsbGVkIHdpdGggYSBzaW5nbGUgYXJndW1lbnQgLSB0aGUgZnV0dXJlIG9iamVjdC4gSWZcbiIKKyAgICAidGhlIGZ1dHVyZSBpcyBhbHJlYWR5IGRvbmUgd2hlbiB0aGlzIGlzIGNhbGxlZCwgdGhlIGNhbGxiYWNrIGlzXG4iCisgICAgInNjaGVkdWxlZCB3aXRoIGNhbGxfc29vbi4iOworKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9hZGRfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgIT0gU1RBVEVfUEVORElORykgeworICAgICAgICBQeU9iamVjdCAqaGFuZGxlID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZCgKKyAgICAgICAgICAgIGZ1dC0+ZnV0X2xvb3AsICZQeUlkX2NhbGxfc29vbiwgIk9PIiwgYXJnLCBmdXQsIE5VTEwpOworCisgICAgICAgIGlmIChoYW5kbGUgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoaGFuZGxlKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgaW50IGVyciA9IFB5TGlzdF9BcHBlbmQoZnV0LT5mdXRfY2FsbGJhY2tzLCBhcmcpOworICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIocHlkb2NfcmVtb3ZlX2RvbmVfY2FsbGJhY2ssCisgICAgIlJlbW92ZSBhbGwgaW5zdGFuY2VzIG9mIGEgY2FsbGJhY2sgZnJvbSB0aGUgXCJjYWxsIHdoZW4gZG9uZVwiIGxpc3QuXG4iCisgICAgIlxuIgorICAgICJSZXR1cm5zIHRoZSBudW1iZXIgb2YgY2FsbGJhY2tzIHJlbW92ZWQuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9yZW1vdmVfZG9uZV9jYWxsYmFjayhGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeU9iamVjdCAqbmV3bGlzdDsKKyAgICBQeV9zc2l6ZV90IGxlbiwgaSwgaj0wOworCisgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKGZ1dC0+ZnV0X2NhbGxiYWNrcyk7CisgICAgaWYgKGxlbiA9PSAwKSB7CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QoMCk7CisgICAgfQorCisgICAgbmV3bGlzdCA9IFB5TGlzdF9OZXcobGVuKTsKKyAgICBpZiAobmV3bGlzdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpbnQgcmV0OworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IFB5TGlzdF9HRVRfSVRFTShmdXQtPmZ1dF9jYWxsYmFja3MsIGkpOworCisgICAgICAgIGlmICgocmV0ID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKGFyZywgaXRlbSwgUHlfRVEpKSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmV0ID09IDApIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihpdGVtKTsKKyAgICAgICAgICAgIFB5TGlzdF9TRVRfSVRFTShuZXdsaXN0LCBqLCBpdGVtKTsKKyAgICAgICAgICAgIGorKzsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChQeUxpc3RfU2V0U2xpY2UobmV3bGlzdCwgaiwgbGVuLCBOVUxMKSA8IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBpZiAoUHlMaXN0X1NldFNsaWNlKGZ1dC0+ZnV0X2NhbGxiYWNrcywgMCwgbGVuLCBuZXdsaXN0KSA8IDApIHsKKyAgICAgICAgZ290byBmYWlsOworICAgIH0KKyAgICBQeV9ERUNSRUYobmV3bGlzdCk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChsZW4gLSBqKTsKKworZmFpbDoKKyAgICBQeV9ERUNSRUYobmV3bGlzdCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5RG9jX1NUUlZBUihweWRvY19jYW5jZWwsCisgICAgIkNhbmNlbCB0aGUgZnV0dXJlIGFuZCBzY2hlZHVsZSBjYWxsYmFja3MuXG4iCisgICAgIlxuIgorICAgICJJZiB0aGUgZnV0dXJlIGlzIGFscmVhZHkgZG9uZSBvciBjYW5jZWxsZWQsIHJldHVybiBGYWxzZS4gIE90aGVyd2lzZSxcbiIKKyAgICAiY2hhbmdlIHRoZSBmdXR1cmUncyBzdGF0ZSB0byBjYW5jZWxsZWQsIHNjaGVkdWxlIHRoZSBjYWxsYmFja3MgYW5kXG4iCisgICAgInJldHVybiBUcnVlLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfY2FuY2VsKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSAhPSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgZnV0LT5mdXRfc3RhdGUgPSBTVEFURV9DQU5DRUxMRUQ7CisKKyAgICBpZiAoX3NjaGVkdWxlX2NhbGxiYWNrcyhmdXQpID09IC0xKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X1JFVFVSTl9UUlVFOworfQorCitQeURvY19TVFJWQVIocHlkb2NfY2FuY2VsbGVkLCAiUmV0dXJuIFRydWUgaWYgdGhlIGZ1dHVyZSB3YXMgY2FuY2VsbGVkLiIpOworCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2NhbmNlbGxlZChGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoZnV0LT5mdXRfc3RhdGUgPT0gU1RBVEVfQ0FOQ0VMTEVEKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworUHlEb2NfU1RSVkFSKHB5ZG9jX2RvbmUsCisgICAgIlJldHVybiBUcnVlIGlmIHRoZSBmdXR1cmUgaXMgZG9uZS5cbiIKKyAgICAiXG4iCisgICAgIkRvbmUgbWVhbnMgZWl0aGVyIHRoYXQgYSByZXN1bHQgLyBleGNlcHRpb24gYXJlIGF2YWlsYWJsZSwgb3IgdGhhdCB0aGVcbiIKKyAgICAiZnV0dXJlIHdhcyBjYW5jZWxsZWQuIgorKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9kb25lKEZ1dHVyZU9iaiAqZnV0LCBQeU9iamVjdCAqYXJnKQoreworICAgIGlmIChmdXQtPmZ1dF9zdGF0ZSA9PSBTVEFURV9QRU5ESU5HKSB7CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfYmxvY2tpbmcoRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X2Jsb2NraW5nKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIGludAorRnV0dXJlT2JqX3NldF9ibG9ja2luZyhGdXR1cmVPYmogKmZ1dCwgUHlPYmplY3QgKnZhbCkKK3sKKyAgICBpbnQgaXNfdHJ1ZSA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWwpOworICAgIGlmIChpc190cnVlIDwgMCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIGZ1dC0+ZnV0X2Jsb2NraW5nID0gaXNfdHJ1ZTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfbG9nX3RyYWNlYmFjayhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfbG9nX3RiKSB7CisgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZU9ial9nZXRfbG9vcChGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfbG9vcCA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfbG9vcCk7CisgICAgcmV0dXJuIGZ1dC0+ZnV0X2xvb3A7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2NhbGxiYWNrcyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfY2FsbGJhY2tzID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9jYWxsYmFja3MpOworICAgIHJldHVybiBmdXQtPmZ1dF9jYWxsYmFja3M7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3Jlc3VsdChGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfcmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9yZXN1bHQpOworICAgIHJldHVybiBmdXQtPmZ1dF9yZXN1bHQ7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X2V4Y2VwdGlvbihGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoZnV0LT5mdXRfZXhjZXB0aW9uID09IE5VTEwpIHsKKyAgICAgICAgUHlfUkVUVVJOX05PTkU7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQtPmZ1dF9leGNlcHRpb24pOworICAgIHJldHVybiBmdXQtPmZ1dF9leGNlcHRpb247Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVPYmpfZ2V0X3NvdXJjZV90cmFjZWJhY2soRnV0dXJlT2JqICpmdXQpCit7CisgICAgaWYgKGZ1dC0+ZnV0X3NvdXJjZV90YiA9PSBOVUxMKSB7CisgICAgICAgIFB5X1JFVFVSTl9OT05FOworICAgIH0KKyAgICBQeV9JTkNSRUYoZnV0LT5mdXRfc291cmNlX3RiKTsKKyAgICByZXR1cm4gZnV0LT5mdXRfc291cmNlX3RiOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX2dldF9zdGF0ZShGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihQRU5ESU5HKTsKKyAgICBfUHlfSURFTlRJRklFUihDQU5DRUxMRUQpOworICAgIF9QeV9JREVOVElGSUVSKEZJTklTSEVEKTsKKyAgICBQeU9iamVjdCAqcmV0ID0gTlVMTDsKKworICAgIHN3aXRjaCAoZnV0LT5mdXRfc3RhdGUpIHsKKyAgICBjYXNlIFNUQVRFX1BFTkRJTkc6CisgICAgICAgIHJldCA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1BFTkRJTkcpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIFNUQVRFX0NBTkNFTExFRDoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfQ0FOQ0VMTEVEKTsKKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTVEFURV9GSU5JU0hFRDoKKyAgICAgICAgcmV0ID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfRklOSVNIRUQpOworICAgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQgKDApOworICAgIH0KKyAgICBQeV9JTkNSRUYocmV0KTsKKyAgICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgUHlPYmplY3QqCitGdXR1cmVPYmpfX3JlcHJfaW5mbyhGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBpZiAoYXN5bmNpb19yZXByX2luZm9fZnVuYyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBQeUxpc3RfTmV3KDApOworICAgIH0KKyAgICByZXR1cm4gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhhc3luY2lvX3JlcHJfaW5mb19mdW5jLCBmdXQsIE5VTEwpOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorRnV0dXJlT2JqX3JlcHIoRnV0dXJlT2JqICpmdXQpCit7CisgICAgX1B5X0lERU5USUZJRVIoX3JlcHJfaW5mbyk7CisKKyAgICBQeU9iamVjdCAqX3JlcHJfaW5mbyA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19yZXByX2luZm8pOyAgLy8gYm9ycm93ZWQKKyAgICBpZiAoX3JlcHJfaW5mbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyaW5mbyA9IFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzKChQeU9iamVjdCopZnV0LCBfcmVwcl9pbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgIGlmIChyaW5mbyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpzcCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKCIgIik7CisgICAgaWYgKHNwID09IE5VTEwpIHsKKyAgICAgICAgUHlfREVDUkVGKHJpbmZvKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKnJpbmZvX3MgPSBQeVVuaWNvZGVfSm9pbihzcCwgcmluZm8pOworICAgIFB5X0RFQ1JFRihzcCk7CisgICAgUHlfREVDUkVGKHJpbmZvKTsKKyAgICBpZiAocmluZm9fcyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5T2JqZWN0ICpyc3RyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqdHlwZV9uYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoZnV0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19uYW1lX18iKTsKKyAgICBpZiAodHlwZV9uYW1lICE9IE5VTEwpIHsKKyAgICAgICAgcnN0ciA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCI8JVMgJVM+IiwgdHlwZV9uYW1lLCByaW5mb19zKTsKKyAgICAgICAgUHlfREVDUkVGKHR5cGVfbmFtZSk7CisgICAgfQorICAgIFB5X0RFQ1JFRihyaW5mb19zKTsKKyAgICByZXR1cm4gcnN0cjsKK30KKworc3RhdGljIHZvaWQKK0Z1dHVyZU9ial9maW5hbGl6ZShGdXR1cmVPYmogKmZ1dCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihjYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBfUHlfSURFTlRJRklFUihtZXNzYWdlKTsKKyAgICBfUHlfSURFTlRJRklFUihleGNlcHRpb24pOworICAgIF9QeV9JREVOVElGSUVSKGZ1dHVyZSk7CisgICAgX1B5X0lERU5USUZJRVIoc291cmNlX3RyYWNlYmFjayk7CisKKyAgICBpZiAoIWZ1dC0+ZnV0X2xvZ190YikgeworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGFzc2VydChmdXQtPmZ1dF9leGNlcHRpb24gIT0gTlVMTCk7CisgICAgZnV0LT5mdXRfbG9nX3RiID0gMDs7CisKKyAgICBQeU9iamVjdCAqZXJyb3JfdHlwZSwgKmVycm9yX3ZhbHVlLCAqZXJyb3JfdHJhY2ViYWNrOworICAgIC8qIFNhdmUgdGhlIGN1cnJlbnQgZXhjZXB0aW9uLCBpZiBhbnkuICovCisgICAgUHlFcnJfRmV0Y2goJmVycm9yX3R5cGUsICZlcnJvcl92YWx1ZSwgJmVycm9yX3RyYWNlYmFjayk7CisKKyAgICBQeU9iamVjdCAqY29udGV4dCA9IE5VTEw7CisgICAgUHlPYmplY3QgKnR5cGVfbmFtZSA9IE5VTEw7CisgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBOVUxMOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTDsKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsKKworICAgIGNvbnRleHQgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGNvbnRleHQgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgdHlwZV9uYW1lID0gUHlPYmplY3RfR2V0QXR0clN0cmluZygoUHlPYmplY3QqKVB5X1RZUEUoZnV0KSwgIl9fbmFtZV9fIik7CisgICAgaWYgKHR5cGVfbmFtZSA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIlUyBleGNlcHRpb24gd2FzIG5ldmVyIHJldHJpZXZlZCIsIHR5cGVfbmFtZSk7CisgICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX21lc3NhZ2UsIG1lc3NhZ2UpIDwgMCB8fAorICAgICAgICBfUHlEaWN0X1NldEl0ZW1JZChjb250ZXh0LCAmUHlJZF9leGNlcHRpb24sIGZ1dC0+ZnV0X2V4Y2VwdGlvbikgPCAwIHx8CisgICAgICAgIF9QeURpY3RfU2V0SXRlbUlkKGNvbnRleHQsICZQeUlkX2Z1dHVyZSwgKFB5T2JqZWN0KilmdXQpIDwgMCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGlmIChmdXQtPmZ1dF9zb3VyY2VfdGIgIT0gTlVMTCkgeworICAgICAgICBpZiAoX1B5RGljdF9TZXRJdGVtSWQoY29udGV4dCwgJlB5SWRfc291cmNlX3RyYWNlYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1dC0+ZnV0X3NvdXJjZV90YikgPCAwKSB7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChmdXQtPmZ1dF9sb29wLCAmUHlJZF9jYWxsX2V4Y2VwdGlvbl9oYW5kbGVyKTsKKyAgICBpZiAoZnVuYyAhPSBOVUxMKSB7CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKHJlcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoZnVuYyk7CisgICAgICAgIH0KKyAgICB9CisKK2ZpbmFsbHk6CisgICAgUHlfQ0xFQVIoY29udGV4dCk7CisgICAgUHlfQ0xFQVIodHlwZV9uYW1lKTsKKyAgICBQeV9DTEVBUihtZXNzYWdlKTsKKyAgICBQeV9DTEVBUihmdW5jKTsKKyAgICBQeV9DTEVBUihyZXMpOworCisgICAgLyogUmVzdG9yZSB0aGUgc2F2ZWQgZXhjZXB0aW9uLiAqLworICAgIFB5RXJyX1Jlc3RvcmUoZXJyb3JfdHlwZSwgZXJyb3JfdmFsdWUsIGVycm9yX3RyYWNlYmFjayk7Cit9CisKKworc3RhdGljIFB5QXN5bmNNZXRob2RzIEZ1dHVyZVR5cGVfYXNfYXN5bmMgPSB7CisgICAgKHVuYXJ5ZnVuYyluZXdfZnV0dXJlX2l0ZXIsICAgICAgICAgLyogYW1fYXdhaXQgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBhbV9haXRlciAqLworICAgIDAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIGFtX2FuZXh0ICovCit9OworCitzdGF0aWMgUHlNZXRob2REZWYgRnV0dXJlVHlwZV9tZXRob2RzW10gPSB7CisgICAgeyJfcmVwcl9pbmZvIiwgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9fcmVwcl9pbmZvLCBNRVRIX05PQVJHUywgTlVMTH0sCisgICAgeyJhZGRfZG9uZV9jYWxsYmFjayIsCisgICAgICAgIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfYWRkX2RvbmVfY2FsbGJhY2ssCisgICAgICAgIE1FVEhfTywgcHlkb2NfYWRkX2RvbmVfY2FsbGJhY2t9LAorICAgIHsicmVtb3ZlX2RvbmVfY2FsbGJhY2siLAorICAgICAgICAoUHlDRnVuY3Rpb24pRnV0dXJlT2JqX3JlbW92ZV9kb25lX2NhbGxiYWNrLAorICAgICAgICBNRVRIX08sIHB5ZG9jX3JlbW92ZV9kb25lX2NhbGxiYWNrfSwKKyAgICB7InNldF9yZXN1bHQiLAorICAgICAgICAoUHlDRnVuY3Rpb24pRnV0dXJlT2JqX3NldF9yZXN1bHQsIE1FVEhfTywgcHlkb2Nfc2V0X3Jlc3VsdH0sCisgICAgeyJzZXRfZXhjZXB0aW9uIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9zZXRfZXhjZXB0aW9uLCBNRVRIX08sIHB5ZG9jX3NldF9leGNlcHRpb259LAorICAgIHsiY2FuY2VsIiwgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9jYW5jZWwsIE1FVEhfTk9BUkdTLCBweWRvY19jYW5jZWx9LAorICAgIHsiY2FuY2VsbGVkIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9jYW5jZWxsZWQsIE1FVEhfTk9BUkdTLCBweWRvY19jYW5jZWxsZWR9LAorICAgIHsiZG9uZSIsIChQeUNGdW5jdGlvbilGdXR1cmVPYmpfZG9uZSwgTUVUSF9OT0FSR1MsIHB5ZG9jX2RvbmV9LAorICAgIHsicmVzdWx0IiwgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9yZXN1bHQsIE1FVEhfTk9BUkdTLCBweWRvY19yZXN1bHR9LAorICAgIHsiZXhjZXB0aW9uIiwKKyAgICAgICAgKFB5Q0Z1bmN0aW9uKUZ1dHVyZU9ial9leGNlcHRpb24sIE1FVEhfTk9BUkdTLCBweWRvY19leGNlcHRpb259LAorICAgIHtOVUxMLCBOVUxMfSAgICAgICAgLyogU2VudGluZWwgKi8KK307CisKK3N0YXRpYyBQeUdldFNldERlZiBGdXR1cmVUeXBlX2dldHNldGxpc3RbXSA9IHsKKyAgICB7Il9zdGF0ZSIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9zdGF0ZSwgTlVMTCwgTlVMTH0sCisgICAgeyJfYXN5bmNpb19mdXR1cmVfYmxvY2tpbmciLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfYmxvY2tpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2V0dGVyKUZ1dHVyZU9ial9zZXRfYmxvY2tpbmcsIE5VTEx9LAorICAgIHsiX2xvb3AiLCAoZ2V0dGVyKUZ1dHVyZU9ial9nZXRfbG9vcCwgTlVMTCwgTlVMTH0sCisgICAgeyJfY2FsbGJhY2tzIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2NhbGxiYWNrcywgTlVMTCwgTlVMTH0sCisgICAgeyJfcmVzdWx0IiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3Jlc3VsdCwgTlVMTCwgTlVMTH0sCisgICAgeyJfZXhjZXB0aW9uIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X2V4Y2VwdGlvbiwgTlVMTCwgTlVMTH0sCisgICAgeyJfbG9nX3RyYWNlYmFjayIsIChnZXR0ZXIpRnV0dXJlT2JqX2dldF9sb2dfdHJhY2ViYWNrLCBOVUxMLCBOVUxMfSwKKyAgICB7Il9zb3VyY2VfdHJhY2ViYWNrIiwgKGdldHRlcilGdXR1cmVPYmpfZ2V0X3NvdXJjZV90cmFjZWJhY2ssIE5VTEwsIE5VTEx9LAorICAgIHtOVUxMfSAvKiBTZW50aW5lbCAqLworfTsKKworc3RhdGljIHZvaWQgRnV0dXJlT2JqX2RlYWxsb2MoUHlPYmplY3QgKnNlbGYpOworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEZ1dHVyZVR5cGUgPSB7CisgICAgUHlWYXJPYmplY3RfSEVBRF9JTklUKDAsIDApCisgICAgIl9hc3luY2lvLkZ1dHVyZSIsCisgICAgc2l6ZW9mKEZ1dHVyZU9iaiksICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9iYXNpY3NpemUgKi8KKyAgICAudHBfZGVhbGxvYyA9IEZ1dHVyZU9ial9kZWFsbG9jLAorICAgIC50cF9hc19hc3luYyA9ICZGdXR1cmVUeXBlX2FzX2FzeW5jLAorICAgIC50cF9yZXByID0gKHJlcHJmdW5jKUZ1dHVyZU9ial9yZXByLAorICAgIC50cF9mbGFncyA9IFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQyB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsCisgICAgLnRwX2RvYyA9ICJGYXN0IGFzeW5jaW8uRnV0dXJlIGltcGxlbWVudGF0aW9uLiIsCisgICAgLnRwX3RyYXZlcnNlID0gKHRyYXZlcnNlcHJvYylGdXR1cmVPYmpfdHJhdmVyc2UsCisgICAgLnRwX2NsZWFyID0gKGlucXVpcnkpRnV0dXJlT2JqX2NsZWFyLAorICAgIC50cF93ZWFrbGlzdG9mZnNldCA9IG9mZnNldG9mKEZ1dHVyZU9iaiwgZnV0X3dlYWtyZWZsaXN0KSwKKyAgICAudHBfaXRlciA9IChnZXRpdGVyZnVuYyluZXdfZnV0dXJlX2l0ZXIsCisgICAgLnRwX21ldGhvZHMgPSBGdXR1cmVUeXBlX21ldGhvZHMsCisgICAgLnRwX2dldHNldCA9IEZ1dHVyZVR5cGVfZ2V0c2V0bGlzdCwKKyAgICAudHBfZGljdG9mZnNldCA9IG9mZnNldG9mKEZ1dHVyZU9iaiwgZGljdCksCisgICAgLnRwX2luaXQgPSAoaW5pdHByb2MpRnV0dXJlT2JqX2luaXQsCisgICAgLnRwX25ldyA9IFB5VHlwZV9HZW5lcmljTmV3LAorICAgIC50cF9maW5hbGl6ZSA9IChkZXN0cnVjdG9yKUZ1dHVyZU9ial9maW5hbGl6ZSwKK307CisKK3N0YXRpYyB2b2lkCitGdXR1cmVPYmpfZGVhbGxvYyhQeU9iamVjdCAqc2VsZikKK3sKKyAgICBGdXR1cmVPYmogKmZ1dCA9IChGdXR1cmVPYmogKilzZWxmOworCisgICAgaWYgKFB5X1RZUEUoZnV0KSA9PSAmRnV0dXJlVHlwZSkgeworICAgICAgICAvKiBXaGVuIGZ1dCBpcyBzdWJjbGFzcyBvZiBGdXR1cmUsIGZpbmFsaXplciBpcyBjYWxsZWQgZnJvbQorICAgICAgICAgKiBzdWJ0eXBlX2RlYWxsb2MuCisgICAgICAgICAqLworICAgICAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKHNlbGYpIDwgMCkgeworICAgICAgICAgICAgLy8gcmVzdXJyZWN0ZWQuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoZnV0LT5mdXRfd2Vha3JlZmxpc3QgIT0gTlVMTCkgeworICAgICAgICBQeU9iamVjdF9DbGVhcldlYWtSZWZzKHNlbGYpOworICAgIH0KKworICAgIEZ1dHVyZU9ial9jbGVhcihmdXQpOworICAgIFB5X1RZUEUoZnV0KS0+dHBfZnJlZShmdXQpOworfQorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKiBGdXR1cmUgSXRlcmF0b3IgKioqKioqKioqKioqKioqKioqKioqKioqKiovCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgRnV0dXJlT2JqICpmdXR1cmU7Cit9IGZ1dHVyZWl0ZXJvYmplY3Q7CisKK3N0YXRpYyB2b2lkCitGdXR1cmVJdGVyX2RlYWxsb2MoZnV0dXJlaXRlcm9iamVjdCAqaXQpCit7CisgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soaXQpOworICAgIFB5X1hERUNSRUYoaXQtPmZ1dHVyZSk7CisgICAgUHlPYmplY3RfR0NfRGVsKGl0KTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfaXRlcm5leHQoZnV0dXJlaXRlcm9iamVjdCAqaXQpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBGdXR1cmVPYmogKmZ1dCA9IGl0LT5mdXR1cmU7CisKKyAgICBpZiAoZnV0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKGZ1dC0+ZnV0X3N0YXRlID09IFNUQVRFX1BFTkRJTkcpIHsKKyAgICAgICAgaWYgKCFmdXQtPmZ1dF9ibG9ja2luZykgeworICAgICAgICAgICAgZnV0LT5mdXRfYmxvY2tpbmcgPSAxOworICAgICAgICAgICAgUHlfSU5DUkVGKGZ1dCk7CisgICAgICAgICAgICByZXR1cm4gKFB5T2JqZWN0ICopZnV0OworICAgICAgICB9CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19Bc3NlcnRpb25FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJ5aWVsZCBmcm9tIHdhc24ndCB1c2VkIHdpdGggZnV0dXJlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlcyA9IEZ1dHVyZU9ial9yZXN1bHQoZnV0LCBOVUxMKTsKKyAgICBpZiAocmVzICE9IE5VTEwpIHsKKyAgICAgICAgLy8gbm9ybWFsIHJlc3VsdAorICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgcmVzKTsKKyAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgfQorCisgICAgaXQtPmZ1dHVyZSA9IE5VTEw7CisgICAgUHlfREVDUkVGKGZ1dCk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3NlbmQoZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBpZiAoYXJnICE9IFB5X05vbmUpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgRnV0dXJlSXRlciIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIEZ1dHVyZUl0ZXJfaXRlcm5leHQoc2VsZik7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitGdXR1cmVJdGVyX3Rocm93KGZ1dHVyZWl0ZXJvYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5T2JqZWN0ICp0eXBlPU5VTEwsICp2YWw9TlVMTCwgKnRiPU5VTEw7CisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPfE9PIiwgJnR5cGUsICZ2YWwsICZ0YikpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHZhbCA9PSBQeV9Ob25lKSB7CisgICAgICAgIHZhbCA9IE5VTEw7CisgICAgfQorICAgIGlmICh0YiA9PSBQeV9Ob25lKSB7CisgICAgICAgIHRiID0gTlVMTDsKKyAgICB9CisKKyAgICBQeV9DTEVBUihzZWxmLT5mdXR1cmUpOworCisgICAgaWYgKHRiICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfUmVzdG9yZSh0eXBlLCB2YWwsIHRiKTsKKyAgICB9CisgICAgZWxzZSBpZiAodmFsICE9IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0T2JqZWN0KHR5cGUsIHZhbCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBpZiAoUHlFeGNlcHRpb25DbGFzc19DaGVjayh0eXBlKSkgeworICAgICAgICAgICAgdmFsID0gUHlPYmplY3RfQ2FsbE9iamVjdCh0eXBlLCBOVUxMKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHZhbCA9IHR5cGU7CisgICAgICAgICAgICBhc3NlcnQgKFB5RXhjZXB0aW9uSW5zdGFuY2VfQ2hlY2sodmFsKSk7CisgICAgICAgICAgICB0eXBlID0gKFB5T2JqZWN0KilQeV9UWVBFKHZhbCk7CisgICAgICAgICAgICBhc3NlcnQgKFB5RXhjZXB0aW9uQ2xhc3NfQ2hlY2sodHlwZSkpOworICAgICAgICB9CisgICAgICAgIFB5RXJyX1NldE9iamVjdCh0eXBlLCB2YWwpOworICAgIH0KKyAgICByZXR1cm4gRnV0dXJlSXRlcl9pdGVybmV4dChzZWxmKTsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKK0Z1dHVyZUl0ZXJfY2xvc2UoZnV0dXJlaXRlcm9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9DTEVBUihzZWxmLT5mdXR1cmUpOworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitzdGF0aWMgaW50CitGdXR1cmVJdGVyX3RyYXZlcnNlKGZ1dHVyZWl0ZXJvYmplY3QgKml0LCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKK3sKKyAgICBQeV9WSVNJVChpdC0+ZnV0dXJlKTsKKyAgICByZXR1cm4gMDsKK30KKworc3RhdGljIFB5TWV0aG9kRGVmIEZ1dHVyZUl0ZXJfbWV0aG9kc1tdID0geworICAgIHsic2VuZCIsICAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl9zZW5kLCBNRVRIX08sIE5VTEx9LAorICAgIHsidGhyb3ciLCAoUHlDRnVuY3Rpb24pRnV0dXJlSXRlcl90aHJvdywgTUVUSF9WQVJBUkdTLCBOVUxMfSwKKyAgICB7ImNsb3NlIiwgKFB5Q0Z1bmN0aW9uKUZ1dHVyZUl0ZXJfY2xvc2UsIE1FVEhfTk9BUkdTLCBOVUxMfSwKKyAgICB7TlVMTCwgTlVMTH0gICAgICAgIC8qIFNlbnRpbmVsICovCit9OworCitzdGF0aWMgUHlUeXBlT2JqZWN0IEZ1dHVyZUl0ZXJUeXBlID0geworICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgwLCAwKQorICAgICJfYXN5bmNpby5GdXR1cmVJdGVyIiwKKyAgICBzaXplb2YoZnV0dXJlaXRlcm9iamVjdCksICAgICAgICAgICAgICAgIC8qIHRwX2Jhc2ljc2l6ZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaXRlbXNpemUgKi8KKyAgICAoZGVzdHJ1Y3RvcilGdXR1cmVJdGVyX2RlYWxsb2MsICAgICAgICAgIC8qIHRwX2RlYWxsb2MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ByaW50ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19hc3luYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfcmVwciAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbnVtYmVyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19zZXF1ZW5jZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfbWFwcGluZyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfaGFzaCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FsbCAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc3RyICovCisgICAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHIsICAgICAgICAgICAgICAgICAvKiB0cF9nZXRhdHRybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfc2V0YXR0cm8gKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2FzX2J1ZmZlciAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfSEFWRV9HQywgLyogdHBfZmxhZ3MgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2RvYyAqLworICAgICh0cmF2ZXJzZXByb2MpRnV0dXJlSXRlcl90cmF2ZXJzZSwgICAgICAgLyogdHBfdHJhdmVyc2UgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2NsZWFyICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9yaWNoY29tcGFyZSAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfd2Vha2xpc3RvZmZzZXQgKi8KKyAgICBQeU9iamVjdF9TZWxmSXRlciwgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX2l0ZXIgKi8KKyAgICAoaXRlcm5leHRmdW5jKUZ1dHVyZUl0ZXJfaXRlcm5leHQsICAgICAgIC8qIHRwX2l0ZXJuZXh0ICovCisgICAgRnV0dXJlSXRlcl9tZXRob2RzLCAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZXRob2RzICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9tZW1iZXJzICovCit9OworCitzdGF0aWMgUHlPYmplY3QgKgorbmV3X2Z1dHVyZV9pdGVyKFB5T2JqZWN0ICpmdXQpCit7CisgICAgZnV0dXJlaXRlcm9iamVjdCAqaXQ7CisKKyAgICBpZiAoIVB5T2JqZWN0X1R5cGVDaGVjayhmdXQsICZGdXR1cmVUeXBlKSkgeworICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGl0ID0gUHlPYmplY3RfR0NfTmV3KGZ1dHVyZWl0ZXJvYmplY3QsICZGdXR1cmVJdGVyVHlwZSk7CisgICAgaWYgKGl0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIFB5X0lOQ1JFRihmdXQpOworICAgIGl0LT5mdXR1cmUgPSAoRnV0dXJlT2JqKilmdXQ7CisgICAgUHlPYmplY3RfR0NfVHJhY2soaXQpOworICAgIHJldHVybiAoUHlPYmplY3QqKWl0OworfQorCisvKioqKioqKioqKioqKioqKioqKioqKiogTW9kdWxlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCitQeURvY19TVFJWQVIobW9kdWxlX2RvYywgImFzeW5jaW8gc3BlZWR1cHMuXG4iKTsKKworUHlPYmplY3QgKgorX2luaXRfbW9kdWxlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqZXh0cmFjdF9zdGFjazsKKyAgICBQeU9iamVjdCAqZ2V0X2V2ZW50X2xvb3A7CisgICAgUHlPYmplY3QgKnJlcHJfaW5mb19mdW5jOworICAgIFB5T2JqZWN0ICppbnZhbGlkU3RhdGVFcnJvcjsKKyAgICBQeU9iamVjdCAqY2FuY2VsbGVkRXJyb3I7CisKKyAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJfaW5pdF9tb2R1bGUiLCA1LCA1LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJmV4dHJhY3Rfc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmZ2V0X2V2ZW50X2xvb3AsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmcmVwcl9pbmZvX2Z1bmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW52YWxpZFN0YXRlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2FuY2VsbGVkRXJyb3IpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRihleHRyYWN0X3N0YWNrKTsKKyAgICBQeV9YU0VUUkVGKHRyYWNlYmFja19leHRyYWN0X3N0YWNrLCBleHRyYWN0X3N0YWNrKTsKKworICAgIFB5X0lOQ1JFRihnZXRfZXZlbnRfbG9vcCk7CisgICAgUHlfWFNFVFJFRihhc3luY2lvX2dldF9ldmVudF9sb29wLCBnZXRfZXZlbnRfbG9vcCk7CisKKyAgICBQeV9JTkNSRUYocmVwcl9pbmZvX2Z1bmMpOworICAgIFB5X1hTRVRSRUYoYXN5bmNpb19yZXByX2luZm9fZnVuYywgcmVwcl9pbmZvX2Z1bmMpOworCisgICAgUHlfSU5DUkVGKGludmFsaWRTdGF0ZUVycm9yKTsKKyAgICBQeV9YU0VUUkVGKGFzeW5jaW9fSW52YWxpZFN0YXRlRXJyb3IsIGludmFsaWRTdGF0ZUVycm9yKTsKKworICAgIFB5X0lOQ1JFRihjYW5jZWxsZWRFcnJvcik7CisgICAgUHlfWFNFVFJFRihhc3luY2lvX0NhbmNlbGxlZEVycm9yLCBjYW5jZWxsZWRFcnJvcik7CisKKyAgICBfYXN5bmNpb21vZF9yZWFkeSA9IDE7CisKKyAgICBQeV9SRVRVUk5fTk9ORTsKK30KKworCitzdGF0aWMgc3RydWN0IFB5TWV0aG9kRGVmIGFzeW5jaW9tb2RfbWV0aG9kc1tdID0geworICAgIHsiX2luaXRfbW9kdWxlIiwgX2luaXRfbW9kdWxlLCBNRVRIX1ZBUkFSR1MsIE5VTEx9LAorICAgIHtOVUxMLCBOVUxMfQorfTsKKworCitzdGF0aWMgc3RydWN0IFB5TW9kdWxlRGVmIF9hc3luY2lvbW9kdWxlID0geworICAgIFB5TW9kdWxlRGVmX0hFQURfSU5JVCwgICAgICAvKiBtX2Jhc2UgKi8KKyAgICAiX2FzeW5jaW8iLCAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgbW9kdWxlX2RvYywgICAgICAgICAgICAgICAgIC8qIG1fZG9jICovCisgICAgLTEsICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2l6ZSAqLworICAgIGFzeW5jaW9tb2RfbWV0aG9kcywgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zbG90cyAqLworICAgIE5VTEwsICAgICAgICAgICAgICAgICAgICAgICAvKiBtX3RyYXZlcnNlICovCisgICAgTlVMTCwgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgLyogbV9mcmVlICovCit9OworCisKK1B5TU9ESU5JVF9GVU5DCitQeUluaXRfX2FzeW5jaW8odm9pZCkKK3sKKyAgICBpZiAoUHlUeXBlX1JlYWR5KCZGdXR1cmVUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeVR5cGVfUmVhZHkoJkZ1dHVyZUl0ZXJUeXBlKSA8IDApIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgUHlPYmplY3QgKm0gPSBQeU1vZHVsZV9DcmVhdGUoJl9hc3luY2lvbW9kdWxlKTsKKyAgICBpZiAobSA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIFB5X0lOQ1JFRigmRnV0dXJlVHlwZSk7CisgICAgaWYgKFB5TW9kdWxlX0FkZE9iamVjdChtLCAiRnV0dXJlIiwgKFB5T2JqZWN0ICopJkZ1dHVyZVR5cGUpIDwgMCkgeworICAgICAgICBQeV9ERUNSRUYoJkZ1dHVyZVR5cGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gbTsKK30KZGlmZiAtLWdpdCBhL01vZHVsZXMvX2Jpc2VjdG1vZHVsZS5jIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKaW5kZXggMDJiNTVkMS4uMjJkZGJmMiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKKysrIGIvTW9kdWxlcy9fYmlzZWN0bW9kdWxlLmMKQEAgLTEyLDcgKzEyLDggQEAKIGludGVybmFsX2Jpc2VjdF9yaWdodChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpAQCAtMTE1LDcgKzExNiw4IEBACiBpbnRlcm5hbF9iaXNlY3RfbGVmdChQeU9iamVjdCAqbGlzdCwgUHlPYmplY3QgKml0ZW0sIFB5X3NzaXplX3QgbG8sIFB5X3NzaXplX3QgaGkpCiB7CiAgICAgUHlPYmplY3QgKmxpdGVtOwotICAgIFB5X3NzaXplX3QgbWlkLCByZXM7CisgICAgUHlfc3NpemVfdCBtaWQ7CisgICAgaW50IHJlczsKIAogICAgIGlmIChsbyA8IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJsbyBtdXN0IGJlIG5vbi1uZWdhdGl2ZSIpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmIycy5weSBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uMDFjZjI2NQotLS0gL2Rldi9udWxsCisrKyBiL01vZHVsZXMvX2JsYWtlMi9ibGFrZTJiMnMucHkKQEAgLTAsMCArMSw0OSBAQAorIyEvdXNyL2Jpbi9weXRob24zCisKK2ltcG9ydCBvcworaW1wb3J0IHJlCisKK0hFUkUgPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkKK0JMQUtFMiA9IG9zLnBhdGguam9pbihIRVJFLCAnaW1wbCcpCisKK1BVQkxJQ19TRUFSQ0ggPSByZS5jb21waWxlKHInXCBpbnQgKGJsYWtlMltic11wP1thLXpfXSopXCgnKQorCisKK2RlZiBnZXRmaWxlcygpOgorICAgIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoQkxBS0UyKToKKyAgICAgICAgbmFtZSA9IG9zLnBhdGguam9pbihCTEFLRTIsIG5hbWUpCisgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKG5hbWUpOgorICAgICAgICAgICAgeWllbGQgbmFtZQorCisKK2RlZiBmaW5kX3B1YmxpYygpOgorICAgIHB1YmxpY19mdW5jcyA9IHNldCgpCisgICAgZm9yIG5hbWUgaW4gZ2V0ZmlsZXMoKToKKyAgICAgICAgd2l0aCBvcGVuKG5hbWUpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgICMgZmluZCBwdWJsaWMgZnVuY3Rpb25zCisgICAgICAgICAgICAgICAgbW8gPSBQVUJMSUNfU0VBUkNILnNlYXJjaChsaW5lKQorICAgICAgICAgICAgICAgIGlmIG1vOgorICAgICAgICAgICAgICAgICAgICBwdWJsaWNfZnVuY3MuYWRkKG1vLmdyb3VwKDEpKQorCisgICAgZm9yIGYgaW4gc29ydGVkKHB1YmxpY19mdW5jcyk6CisgICAgICAgIHByaW50KCcjZGVmaW5lIHswOjwxOH0gUHlCbGFrZTJfezB9Jy5mb3JtYXQoZikpCisKKyAgICByZXR1cm4gcHVibGljX2Z1bmNzCisKKworZGVmIG1haW4oKToKKyAgICBsaW5lcyA9IFtdCisgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihIRVJFLCAnYmxha2UyYl9pbXBsLmMnKSkgYXMgZjoKKyAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgIGxpbmUgPSBsaW5lLnJlcGxhY2UoJ2JsYWtlMmInLCAnYmxha2UycycpCisgICAgICAgICAgICBsaW5lID0gbGluZS5yZXBsYWNlKCdCTEFLRTJiJywgJ0JMQUtFMnMnKQorICAgICAgICAgICAgbGluZSA9IGxpbmUucmVwbGFjZSgnQkxBS0UyQicsICdCTEFLRTJTJykKKyAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQorICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4oSEVSRSwgJ2JsYWtlMnNfaW1wbC5jJyksICd3JykgYXMgZjoKKyAgICAgICAgZi53cml0ZSgnJy5qb2luKGxpbmVzKSkKKyAgICAjIGZpbmRfcHVibGljKCkKKworCitpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorICAgIG1haW4oKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jIGIvTW9kdWxlcy9fYmxha2UyL2JsYWtlMmJfaW1wbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YjUwMmIKLS0tIC9kZXYvbnVsbAorKysgYi9Nb2R1bGVzL19ibGFrZTIvYmxha2UyYl9pbXBsLmMKQEAgLTAsMCArMSw0NjAgQEAKKy8qCisgKiBXcml0dGVuIGluIDIwMTMgYnkgRG1pdHJ5IENoZXN0bnlraCA8ZG1pdHJ5QGNvZGluZ3JvYm90cy5jb20+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+PigodW5zaWduZWQgbG9uZyBsb25nKSh5KSAmIDYzKSkgfCBcCisgICAgICAoKHgpPDwoKHVuc2lnbmVkIGxvbmcgbG9uZykoNjQtKCh5KSAmIDYzKSkpKSkgJiAweEZGRkZGRkZGRkZGRkZGRkZVTEwpCiAjZGVmaW5lIENoKHgseSx6KSAgICAgICAoeiBeICh4ICYgKHkgXiB6KSkpCiAjZGVmaW5lIE1haih4LHkseikgICAgICAoKCh4IHwgeSkgJiB6KSB8ICh4ICYgeSkpCiAjZGVmaW5lIFMoeCwgbikgICAgICAgICBST1I2NCgoeCksKG4pKQotI2RlZmluZSBSKHgsIG4pICAgICAgICAgKCgoeCkgJiBQeV9VTEwoMHhGRkZGRkZGRkZGRkZGRkZGKSkgPj4gKCh1bnNpZ25lZCBQWV9MT05HX0xPTkcpbikpCisjZGVmaW5lIFIoeCwgbikgICAgICAgICAoKCh4KSAmIDB4RkZGRkZGRkZGRkZGRkZGRlVMTCkgPj4gKCh1bnNpZ25lZCBsb25nIGxvbmcpbikpCiAjZGVmaW5lIFNpZ21hMCh4KSAgICAgICAoUyh4LCAyOCkgXiBTKHgsIDM0KSBeIFMoeCwgMzkpKQogI2RlZmluZSBTaWdtYTEoeCkgICAgICAgKFMoeCwgMTQpIF4gUyh4LCAxOCkgXiBTKHgsIDQxKSkKICNkZWZpbmUgR2FtbWEwKHgpICAgICAgIChTKHgsIDEpIF4gUyh4LCA4KSBeIFIoeCwgNykpCkBAIC0xNTgsODYgKzE1Niw4NiBAQAogICAgICBkICs9IHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIGggID0gdDAgKyB0MTsKIAotICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMCxQeV9VTEwoMHg0MjhhMmY5OGQ3MjhhZTIyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLFB5X1VMTCgweDcxMzc0NDkxMjNlZjY1Y2QpKTsKLSAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDIsUHlfVUxMKDB4YjVjMGZiY2ZlYzRkM2IyZikpOwotICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMyxQeV9VTEwoMHhlOWI1ZGJhNTgxODlkYmJjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LFB5X1VMTCgweDM5NTZjMjViZjM0OGI1MzgpKTsKLSAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDUsUHlfVUxMKDB4NTlmMTExZjFiNjA1ZDAxOSkpOwotICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNixQeV9VTEwoMHg5MjNmODJhNGFmMTk0ZjliKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LFB5X1VMTCgweGFiMWM1ZWQ1ZGE2ZDgxMTgpKTsKLSAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDgsUHlfVUxMKDB4ZDgwN2FhOThhMzAzMDI0MikpOwotICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sOSxQeV9VTEwoMHgxMjgzNWIwMTQ1NzA2ZmJlKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCxQeV9VTEwoMHgyNDMxODViZTRlZTRiMjhjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxMSxQeV9VTEwoMHg1NTBjN2RjM2Q1ZmZiNGUyKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwxMixQeV9VTEwoMHg3MmJlNWQ3NGYyN2I4OTZmKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMyxQeV9VTEwoMHg4MGRlYjFmZTNiMTY5NmIxKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwxNCxQeV9VTEwoMHg5YmRjMDZhNzI1YzcxMjM1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwxNSxQeV9VTEwoMHhjMTliZjE3NGNmNjkyNjk0KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNixQeV9VTEwoMHhlNDliNjljMTllZjE0YWQyKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxNyxQeV9VTEwoMHhlZmJlNDc4NjM4NGYyNWUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxOCxQeV9VTEwoMHgwZmMxOWRjNjhiOGNkNWI1KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSxQeV9VTEwoMHgyNDBjYTFjYzc3YWM5YzY1KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyMCxQeV9VTEwoMHgyZGU5MmM2ZjU5MmIwMjc1KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyMSxQeV9VTEwoMHg0YTc0ODRhYTZlYTZlNDgzKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMixQeV9VTEwoMHg1Y2IwYTlkY2JkNDFmYmQ0KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwyMyxQeV9VTEwoMHg3NmY5ODhkYTgzMTE1M2I1KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwyNCxQeV9VTEwoMHg5ODNlNTE1MmVlNjZkZmFiKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSxQeV9VTEwoMHhhODMxYzY2ZDJkYjQzMjEwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyNixQeV9VTEwoMHhiMDAzMjdjODk4ZmIyMTNmKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwyNyxQeV9VTEwoMHhiZjU5N2ZjN2JlZWYwZWU0KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCxQeV9VTEwoMHhjNmUwMGJmMzNkYTg4ZmMyKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwyOSxQeV9VTEwoMHhkNWE3OTE0NzkzMGFhNzI1KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzMCxQeV9VTEwoMHgwNmNhNjM1MWUwMDM4MjZmKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSxQeV9VTEwoMHgxNDI5Mjk2NzBhMGU2ZTcwKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwzMixQeV9VTEwoMHgyN2I3MGE4NTQ2ZDIyZmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwzMyxQeV9VTEwoMHgyZTFiMjEzODVjMjZjOTI2KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCxQeV9VTEwoMHg0ZDJjNmRmYzVhYzQyYWVkKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzNSxQeV9VTEwoMHg1MzM4MGQxMzlkOTViM2RmKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwzNixQeV9VTEwoMHg2NTBhNzM1NDhiYWY2M2RlKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNyxQeV9VTEwoMHg3NjZhMGFiYjNjNzdiMmE4KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwzOCxQeV9VTEwoMHg4MWMyYzkyZTQ3ZWRhZWU2KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzOSxQeV9VTEwoMHg5MjcyMmM4NTE0ODIzNTNiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCxQeV9VTEwoMHhhMmJmZThhMTRjZjEwMzY0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0MSxQeV9VTEwoMHhhODFhNjY0YmJjNDIzMDAxKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw0MixQeV9VTEwoMHhjMjRiOGI3MGQwZjg5NzkxKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MyxQeV9VTEwoMHhjNzZjNTFhMzA2NTRiZTMwKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0NCxQeV9VTEwoMHhkMTkyZTgxOWQ2ZWY1MjE4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw0NSxQeV9VTEwoMHhkNjk5MDYyNDU1NjVhOTEwKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NixQeV9VTEwoMHhmNDBlMzU4NTU3NzEyMDJhKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw0NyxQeV9VTEwoMHgxMDZhYTA3MDMyYmJkMWI4KSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0OCxQeV9VTEwoMHgxOWE0YzExNmI4ZDJkMGM4KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSxQeV9VTEwoMHgxZTM3NmMwODUxNDFhYjUzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1MCxQeV9VTEwoMHgyNzQ4Nzc0Y2RmOGVlYjk5KSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1MSxQeV9VTEwoMHgzNGIwYmNiNWUxOWI0OGE4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MixQeV9VTEwoMHgzOTFjMGNiM2M1Yzk1YTYzKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1MyxQeV9VTEwoMHg0ZWQ4YWE0YWUzNDE4YWNiKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw1NCxQeV9VTEwoMHg1YjljY2E0Zjc3NjNlMzczKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSxQeV9VTEwoMHg2ODJlNmZmM2Q2YjJiOGEzKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw1NixQeV9VTEwoMHg3NDhmODJlZTVkZWZiMmZjKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw1NyxQeV9VTEwoMHg3OGE1NjM2ZjQzMTcyZjYwKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCxQeV9VTEwoMHg4NGM4NzgxNGExZjBhYjcyKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw1OSxQeV9VTEwoMHg4Y2M3MDIwODFhNjQzOWVjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2MCxQeV9VTEwoMHg5MGJlZmZmYTIzNjMxZTI4KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSxQeV9VTEwoMHhhNDUwNmNlYmRlODJiZGU5KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2MixQeV9VTEwoMHhiZWY5YTNmN2IyYzY3OTE1KSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw2MyxQeV9VTEwoMHhjNjcxNzhmMmUzNzI1MzJiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCxQeV9VTEwoMHhjYTI3M2VjZWVhMjY2MTljKSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw2NSxQeV9VTEwoMHhkMTg2YjhjNzIxYzBjMjA3KSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw2NixQeV9VTEwoMHhlYWRhN2RkNmNkZTBlYjFlKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NyxQeV9VTEwoMHhmNTdkNGY3ZmVlNmVkMTc4KSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw2OCxQeV9VTEwoMHgwNmYwNjdhYTcyMTc2ZmJhKSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2OSxQeV9VTEwoMHgwYTYzN2RjNWEyYzg5OGE2KSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCxQeV9VTEwoMHgxMTNmOTgwNGJlZjkwZGFlKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3MSxQeV9VTEwoMHgxYjcxMGIzNTEzMWM0NzFiKSk7Ci0gICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw3MixQeV9VTEwoMHgyOGRiNzdmNTIzMDQ3ZDg0KSk7Ci0gICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MyxQeV9VTEwoMHgzMmNhYWI3YjQwYzcyNDkzKSk7Ci0gICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw3NCxQeV9VTEwoMHgzYzllYmUwYTE1YzliZWJjKSk7Ci0gICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw3NSxQeV9VTEwoMHg0MzFkNjdjNDljMTAwZDRjKSk7Ci0gICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NixQeV9VTEwoMHg0Y2M1ZDRiZWNiM2U0MmI2KSk7Ci0gICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw3NyxQeV9VTEwoMHg1OTdmMjk5Y2ZjNjU3ZTJhKSk7Ci0gICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3OCxQeV9VTEwoMHg1ZmNiNmZhYjNhZDZmYWVjKSk7Ci0gICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSxQeV9VTEwoMHg2YzQ0MTk4YzRhNDc1ODE3KSk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwwLDB4NDI4YTJmOThkNzI4YWUyMlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwxLDB4NzEzNzQ0OTEyM2VmNjVjZFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwyLDB4YjVjMGZiY2ZlYzRkM2IyZlVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwzLDB4ZTliNWRiYTU4MTg5ZGJiY1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw0LDB4Mzk1NmMyNWJmMzQ4YjUzOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw1LDB4NTlmMTExZjFiNjA1ZDAxOVVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw2LDB4OTIzZjgyYTRhZjE5NGY5YlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3LDB4YWIxYzVlZDVkYTZkODExOFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw4LDB4ZDgwN2FhOThhMzAzMDI0MlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw5LDB4MTI4MzViMDE0NTcwNmZiZVVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwxMCwweDI0MzE4NWJlNGVlNGIyOGNVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMTEsMHg1NTBjN2RjM2Q1ZmZiNGUyVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDEyLDB4NzJiZTVkNzRmMjdiODk2ZlVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwxMywweDgwZGViMWZlM2IxNjk2YjFVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMTQsMHg5YmRjMDZhNzI1YzcxMjM1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDE1LDB4YzE5YmYxNzRjZjY5MjY5NFVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSwxNiwweGU0OWI2OWMxOWVmMTRhZDJVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sMTcsMHhlZmJlNDc4NjM4NGYyNWUzVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDE4LDB4MGZjMTlkYzY4YjhjZDViNVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSwxOSwweDI0MGNhMWNjNzdhYzljNjVVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sMjAsMHgyZGU5MmM2ZjU5MmIwMjc1VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDIxLDB4NGE3NDg0YWE2ZWE2ZTQ4M1VMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSwyMiwweDVjYjBhOWRjYmQ0MWZiZDRVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sMjMsMHg3NmY5ODhkYTgzMTE1M2I1VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDI0LDB4OTgzZTUxNTJlZTY2ZGZhYlVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSwyNSwweGE4MzFjNjZkMmRiNDMyMTBVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sMjYsMHhiMDAzMjdjODk4ZmIyMTNmVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDI3LDB4YmY1OTdmYzdiZWVmMGVlNFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSwyOCwweGM2ZTAwYmYzM2RhODhmYzJVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sMjksMHhkNWE3OTE0NzkzMGFhNzI1VUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDMwLDB4MDZjYTYzNTFlMDAzODI2ZlVMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSwzMSwweDE0MjkyOTY3MGEwZTZlNzBVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sMzIsMHgyN2I3MGE4NTQ2ZDIyZmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDMzLDB4MmUxYjIxMzg1YzI2YzkyNlVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSwzNCwweDRkMmM2ZGZjNWFjNDJhZWRVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sMzUsMHg1MzM4MGQxMzlkOTViM2RmVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDM2LDB4NjUwYTczNTQ4YmFmNjNkZVVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSwzNywweDc2NmEwYWJiM2M3N2IyYThVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sMzgsMHg4MWMyYzkyZTQ3ZWRhZWU2VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDM5LDB4OTI3MjJjODUxNDgyMzUzYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw0MCwweGEyYmZlOGExNGNmMTAzNjRVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNDEsMHhhODFhNjY0YmJjNDIzMDAxVUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDQyLDB4YzI0YjhiNzBkMGY4OTc5MVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw0MywweGM3NmM1MWEzMDY1NGJlMzBVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNDQsMHhkMTkyZTgxOWQ2ZWY1MjE4VUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDQ1LDB4ZDY5OTA2MjQ1NTY1YTkxMFVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw0NiwweGY0MGUzNTg1NTc3MTIwMmFVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNDcsMHgxMDZhYTA3MDMyYmJkMWI4VUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDQ4LDB4MTlhNGMxMTZiOGQyZDBjOFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw0OSwweDFlMzc2YzA4NTE0MWFiNTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNTAsMHgyNzQ4Nzc0Y2RmOGVlYjk5VUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDUxLDB4MzRiMGJjYjVlMTliNDhhOFVMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw1MiwweDM5MWMwY2IzYzVjOTVhNjNVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNTMsMHg0ZWQ4YWE0YWUzNDE4YWNiVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDU0LDB4NWI5Y2NhNGY3NzYzZTM3M1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw1NSwweDY4MmU2ZmYzZDZiMmI4YTNVTEwpOworICAgIFJORChTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sNTYsMHg3NDhmODJlZTVkZWZiMmZjVUxMKTsKKyAgICBSTkQoU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLDU3LDB4NzhhNTYzNmY0MzE3MmY2MFVMTCk7CisgICAgUk5EKFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSw1OCwweDg0Yzg3ODE0YTFmMGFiNzJVTEwpOworICAgIFJORChTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLFNbNF0sNTksMHg4Y2M3MDIwODFhNjQzOWVjVUxMKTsKKyAgICBSTkQoU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSxTWzNdLDYwLDB4OTBiZWZmZmEyMzYzMWUyOFVMTCk7CisgICAgUk5EKFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sU1syXSw2MSwweGE0NTA2Y2ViZGU4MmJkZTlVTEwpOworICAgIFJORChTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLFNbMV0sNjIsMHhiZWY5YTNmN2IyYzY3OTE1VUxMKTsKKyAgICBSTkQoU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSxTWzBdLDYzLDB4YzY3MTc4ZjJlMzcyNTMyYlVMTCk7CisgICAgUk5EKFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sU1s3XSw2NCwweGNhMjczZWNlZWEyNjYxOWNVTEwpOworICAgIFJORChTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLFNbNl0sNjUsMHhkMTg2YjhjNzIxYzBjMjA3VUxMKTsKKyAgICBSTkQoU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSxTWzVdLDY2LDB4ZWFkYTdkZDZjZGUwZWIxZVVMTCk7CisgICAgUk5EKFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sU1s0XSw2NywweGY1N2Q0ZjdmZWU2ZWQxNzhVTEwpOworICAgIFJORChTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLFNbM10sNjgsMHgwNmYwNjdhYTcyMTc2ZmJhVUxMKTsKKyAgICBSTkQoU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSxTWzJdLDY5LDB4MGE2MzdkYzVhMmM4OThhNlVMTCk7CisgICAgUk5EKFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sU1sxXSw3MCwweDExM2Y5ODA0YmVmOTBkYWVVTEwpOworICAgIFJORChTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLFNbMF0sNzEsMHgxYjcxMGIzNTEzMWM0NzFiVUxMKTsKKyAgICBSTkQoU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSxTWzddLDcyLDB4MjhkYjc3ZjUyMzA0N2Q4NFVMTCk7CisgICAgUk5EKFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sU1s2XSw3MywweDMyY2FhYjdiNDBjNzI0OTNVTEwpOworICAgIFJORChTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLFNbNV0sNzQsMHgzYzllYmUwYTE1YzliZWJjVUxMKTsKKyAgICBSTkQoU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSxTWzRdLDc1LDB4NDMxZDY3YzQ5YzEwMGQ0Y1VMTCk7CisgICAgUk5EKFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sU1szXSw3NiwweDRjYzVkNGJlY2IzZTQyYjZVTEwpOworICAgIFJORChTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLFNbMl0sNzcsMHg1OTdmMjk5Y2ZjNjU3ZTJhVUxMKTsKKyAgICBSTkQoU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSxTWzFdLDc4LDB4NWZjYjZmYWIzYWQ2ZmFlY1VMTCk7CisgICAgUk5EKFNbMV0sU1syXSxTWzNdLFNbNF0sU1s1XSxTWzZdLFNbN10sU1swXSw3OSwweDZjNDQxOThjNGE0NzU4MTdVTEwpOwogCiAjdW5kZWYgUk5ECiAKQEAgLTgwMyw1ICs4MDEsMyBAQAogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAiU0hBNTEyVHlwZSIsIChQeU9iamVjdCAqKSZTSEE1MTJ0eXBlKTsKICAgICByZXR1cm4gbTsKIH0KLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jIGIvTW9kdWxlcy9zaWduYWxtb2R1bGUuYwppbmRleCA3NTNkOTg3Li5lMjcwNzViIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NpZ25hbG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc2lnbmFsbW9kdWxlLmMKQEAgLTE5OCw3ICsxOTgsNyBAQAogcmVwb3J0X3dha2V1cF93cml0ZV9lcnJvcih2b2lkICpkYXRhKQogewogICAgIGludCBzYXZlX2Vycm5vID0gZXJybm87Ci0gICAgZXJybm8gPSAoaW50KSAoUHlfaW50cHRyX3QpIGRhdGE7CisgICAgZXJybm8gPSAoaW50KSAoaW50cHRyX3QpIGRhdGE7CiAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJFeGNlcHRpb24gaWdub3JlZCB3aGVuIHRyeWluZyB0byB3cml0ZSB0byB0aGUgIgogICAgICAgICAgICAgICAgICAgICAgICJzaWduYWwgd2FrZXVwIGZkOlxuIik7CkBAIC0yNzcsNyArMjc3LDcgQEAKIAogICAgICAgICAgICAgaWYgKHJjIDwgMCkgewogICAgICAgICAgICAgICAgIFB5X0FkZFBlbmRpbmdDYWxsKHJlcG9ydF93YWtldXBfd3JpdGVfZXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKikoUHlfaW50cHRyX3QpZXJybm8pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopKGludHB0cl90KWVycm5vKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KQEAgLTU3OSw3ICs1NzksNyBAQAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBmZCA9IChpbnQpc29ja2ZkOwotICAgICAgICAgICAgaWYgKChTT0NLRVRfVClmZCAhPSBzb2NrZmQgfHwgIV9QeVZlcmlmeV9mZChmZCkpIHsKKyAgICAgICAgICAgIGlmICgoU09DS0VUX1QpZmQgIT0gc29ja2ZkKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGZkIik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgICAgICB9CkBAIC02MDksMTEgKzYwOSw2IEBACiAgICAgaWYgKGZkICE9IC0xKSB7CiAgICAgICAgIGludCBibG9ja2luZzsKIAotICAgICAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiaW52YWxpZCBmZCIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3RhdHVzKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTEyNzEsMjEwICsxMjY2LDE2OSBAQAogICAgIH0KIAogI2lmZGVmIFNJR0hVUAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSFVQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSFVQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSFVQKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU5UKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSU5UIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JSRUFLCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdCUkVBSyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0JSRUFLIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlJFQUspKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUVVJVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUVVJVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1FVSVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdRVUlUKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSUxMKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHSUxMIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RSQVAKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RSQVApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUUkFQIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFJBUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJT1QKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lPVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0lPVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPVCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdBQlJUCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdBQlJUKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQUJSVCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0FCUlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRU1UCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdFTVQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdFTVQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdFTVQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHRlBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdGUEUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdGUEUiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdGUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHS0lMTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHS0lMTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0tJTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdLSUxMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0JVUwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQlVTKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQlVTIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQlVTKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NFR1YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NFR1YpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTRUdWIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU0VHVikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdTWVMKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NZUyk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1NZUyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1NZUykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQSVBFCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdQSVBFKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUElQRSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BJUEUpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQUxSTQotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQUxSTSk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0FMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdBTFJNKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RFUk0KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RFUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdURVJNIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVEVSTSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdVU1IxCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdVU1IxKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVNSMSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1VTUjEpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVVNSMgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVNSMik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1VTUjIiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdVU1IyKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NMRAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ0xEKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHQ0xEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0xEKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0NITEQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0NITEQpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdDSExEIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHQ0hMRCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdQV1IKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1BXUik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BXUiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1BXUikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdJTwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHSU8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTyIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR0lPKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1VSRwotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHVVJHKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVVJHIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVVJHKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1dJTkNICi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdXSU5DSCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1dJTkNIIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHV0lOQ0gpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUE9MTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUE9MTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BPTEwiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQT0xMKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1NUT1AKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1NUT1ApOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdTVE9QIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHU1RPUCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUU1RQCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUU1RQKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFNUUCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RTVFApKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHQ09OVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHQ09OVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR0NPTlQiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdDT05UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1RUSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1RUSU4pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdUVElOIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHVFRJTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdUVE9VCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdUVE9VKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHVFRPVSIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1RUT1UpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHVlRBTFJNCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdWVEFMUk0pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdWVEFMUk0iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdWVEFMUk0pKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUFJPRgotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUFJPRik7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIlNJR1BST0YiLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdQUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR1hDUFUKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1hDUFUpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdYQ1BVIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHWENQVSkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdYRlNaCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhTSUdYRlNaKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHWEZTWiIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1hGU1opKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgU0lHUlRNSU4KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR1JUTUlOKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU0lHUlRNSU4iLCB4KTsKLSAgICBQeV9YREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTSUdSVE1JTikpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBTSUdSVE1BWAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoU0lHUlRNQVgpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdSVE1BWCIsIHgpOwotICAgIFB5X1hERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNJR1JUTUFYKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogI2lmZGVmIFNJR0lORk8KLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKFNJR0lORk8pOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJTSUdJTkZPIiwgeCk7Ci0gICAgUHlfWERFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU0lHSU5GTykpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKIAogI2lmZGVmIElUSU1FUl9SRUFMCi0gICAgeCA9IFB5TG9uZ19Gcm9tTG9uZyhJVElNRVJfUkVBTCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIklUSU1FUl9SRUFMIiwgeCk7Ci0gICAgUHlfREVDUkVGKHgpOworICAgIGlmIChQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBJVElNRVJfUkVBTCkpCisgICAgICAgICBnb3RvIGZpbmFsbHk7CiAjZW5kaWYKICNpZmRlZiBJVElNRVJfVklSVFVBTAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoSVRJTUVSX1ZJUlRVQUwpOwotICAgIFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJJVElNRVJfVklSVFVBTCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgSVRJTUVSX1ZJUlRVQUwpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAjaWZkZWYgSVRJTUVSX1BST0YKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKElUSU1FUl9QUk9GKTsKLSAgICBQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSVRJTUVSX1BST0YiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIElUSU1FUl9QUk9GKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWYgZGVmaW5lZCAoSEFWRV9TRVRJVElNRVIpIHx8IGRlZmluZWQgKEhBVkVfR0VUSVRJTUVSKQpAQCAtMTQ4NSwxNSArMTQzOSwxMyBAQAogI2VuZGlmCiAKICNpZmRlZiBDVFJMX0NfRVZFTlQKLSAgICB4ID0gUHlMb25nX0Zyb21Mb25nKENUUkxfQ19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQ19FVkVOVCIsIHgpOwotICAgIFB5X0RFQ1JFRih4KTsKKyAgICBpZiAoUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ1RSTF9DX0VWRU5UKSkKKyAgICAgICAgIGdvdG8gZmluYWxseTsKICNlbmRpZgogCiAjaWZkZWYgQ1RSTF9CUkVBS19FVkVOVAotICAgIHggPSBQeUxvbmdfRnJvbUxvbmcoQ1RSTF9CUkVBS19FVkVOVCk7Ci0gICAgUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkNUUkxfQlJFQUtfRVZFTlQiLCB4KTsKLSAgICBQeV9ERUNSRUYoeCk7CisgICAgaWYgKFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENUUkxfQlJFQUtfRVZFTlQpKQorICAgICAgICAgZ290byBmaW5hbGx5OwogI2VuZGlmCiAKICNpZmRlZiBNU19XSU5ET1dTCmRpZmYgLS1naXQgYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jIGIvTW9kdWxlcy9zb2NrZXRtb2R1bGUuYwppbmRleCAzZTFhNDYwLi5kMjViZDdmIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3NvY2tldG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc29ja2V0bW9kdWxlLmMKQEAgLTEzNiw3ICsxMzYsNyBAQAogc2VuZChkYXRhWywgZmxhZ3NdKSAtLSBzZW5kIGRhdGEsIG1heSBub3Qgc2VuZCBhbGwgb2YgaXRcblwKIHNlbmR0byhkYXRhWywgZmxhZ3NdLCBhZGRyKSAtLSBzZW5kIGRhdGEgdG8gYSBnaXZlbiBhZGRyZXNzXG5cCiBzZXRibG9ja2luZygwIHwgMSkgLS0gc2V0IG9yIGNsZWFyIHRoZSBibG9ja2luZyBJL08gZmxhZ1xuXAotc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWUpIC0tIHNldCBzb2NrZXQgb3B0aW9uc1xuXAorc2V0c29ja29wdChsZXZlbCwgb3B0bmFtZSwgdmFsdWVbLCBvcHRsZW5dKSAtLSBzZXQgc29ja2V0IG9wdGlvbnNcblwKIHNldHRpbWVvdXQoTm9uZSB8IGZsb2F0KSAtLSBzZXQgb3IgY2xlYXIgdGhlIHRpbWVvdXRcblwKIHNodXRkb3duKGhvdykgLS0gc2h1dCBkb3duIHRyYWZmaWMgaW4gb25lIG9yIGJvdGggZGlyZWN0aW9uc1xuXAogaWZfbmFtZWluZGV4KCkgLS0gcmV0dXJuIGFsbCBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzIGFuZCBuYW1lc1xuXApAQCAtMTUzLDcgKzE1Myw3IEBACiAgICBPbiB0aGUgb3RoZXIgaGFuZCwgbm90IGFsbCBMaW51eCB2ZXJzaW9ucyBhZ3JlZSwgc28gdGhlcmUgdGhlIHNldHRpbmdzCiAgICBjb21wdXRlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCBhcmUgbmVlZGVkISAqLwogCi0jaWZuZGVmIGxpbnV4CisjaWZuZGVmIF9fbGludXhfXwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl8zX0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUl82X0FSRwpAQCAtMTYzLDcgKzE2MywxMSBAQAogIyBpbmNsdWRlIDxzeXMvdWlvLmg+CiAjZW5kaWYKIAotI2lmbmRlZiBXSVRIX1RIUkVBRAorI2lmICFkZWZpbmVkKFdJVEhfVEhSRUFEKQorIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgorI2VuZGlmCisKKyNpZiBkZWZpbmVkKF9fQU5EUk9JRF9fKSAmJiBfX0FORFJPSURfQVBJX18gPCAyMwogIyB1bmRlZiBIQVZFX0dFVEhPU1RCWU5BTUVfUgogI2VuZGlmCiAKQEAgLTE3Miw3ICsxNzYsNyBAQAogIyAgZGVmaW5lIEhBVkVfR0VUSE9TVEJZTkFNRV9SXzNfQVJHCiAjIGVsaWYgZGVmaW5lZChfX3N1bikgfHwgZGVmaW5lZChfX3NnaSkKICMgIGRlZmluZSBIQVZFX0dFVEhPU1RCWU5BTUVfUl81X0FSRwotIyBlbGlmIGRlZmluZWQobGludXgpCisjIGVsaWYgZGVmaW5lZChfX2xpbnV4X18pCiAvKiBSZWx5IG9uIHRoZSBjb25maWd1cmUgc2NyaXB0ICovCiAjIGVsc2UKICMgIHVuZGVmIEhBVkVfR0VUSE9TVEJZTkFNRV9SCkBAIC0yODIsNiArMjg2LDM2IEBACiAjaW5jbHVkZSA8bmV0L2lmLmg+CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisjaW5jbHVkZSA8bGludXgvaWZfYWxnLmg+CisjaWZuZGVmIEFGX0FMRworI2RlZmluZSBBRl9BTEcgMzgKKyNlbmRpZgorI2lmbmRlZiBTT0xfQUxHCisjZGVmaW5lIFNPTF9BTEcgMjc5CisjZW5kaWYKKworLyogTGludXggMy4xOSAqLworI2lmbmRlZiBBTEdfU0VUX0FFQURfQVNTT0NMRU4KKyNkZWZpbmUgQUxHX1NFVF9BRUFEX0FTU09DTEVOICAgICAgICAgICA0CisjZW5kaWYKKyNpZm5kZWYgQUxHX1NFVF9BRUFEX0FVVEhTSVpFCisjZGVmaW5lIEFMR19TRVRfQUVBRF9BVVRIU0laRSAgICAgICAgICAgNQorI2VuZGlmCisvKiBMaW51eCA0LjggKi8KKyNpZm5kZWYgQUxHX1NFVF9QVUJLRVkKKyNkZWZpbmUgQUxHX1NFVF9QVUJLRVkgICAgICAgICAgICAgICAgICA2CisjZW5kaWYKKworI2lmbmRlZiBBTEdfT1BfU0lHTgorI2RlZmluZSBBTEdfT1BfU0lHTiAgICAgICAgICAgICAgICAgICAgIDIKKyNlbmRpZgorI2lmbmRlZiBBTEdfT1BfVkVSSUZZCisjZGVmaW5lIEFMR19PUF9WRVJJRlkgICAgICAgICAgICAgICAgICAgMworI2VuZGlmCisKKyNlbmRpZiAvKiBIQVZFX1NPQ0tBRERSX0FMRyAqLworCiAvKiBHZW5lcmljIHNvY2tldCBvYmplY3QgZGVmaW5pdGlvbnMgYW5kIGluY2x1ZGVzICovCiAjZGVmaW5lIFB5U29ja2V0X0JVSUxESU5HX1NPQ0tFVAogI2luY2x1ZGUgInNvY2tldG1vZHVsZS5oIgpAQCAtNjA2LDI0ICs2NDAsMzUgQEAKICNpZm5kZWYgTVNfV0lORE9XUwogI2lmIChkZWZpbmVkKEhBVkVfU1lTX0lPQ1RMX0gpICYmIGRlZmluZWQoRklPTkJJTykpCiAgICAgYmxvY2sgPSAhYmxvY2s7Ci0gICAgaW9jdGwocy0+c29ja19mZCwgRklPTkJJTywgKHVuc2lnbmVkIGludCAqKSZibG9jayk7CisgICAgaWYgKGlvY3RsKHMtPnNvY2tfZmQsIEZJT05CSU8sICh1bnNpZ25lZCBpbnQgKikmYmxvY2spID09IC0xKQorICAgICAgICBnb3RvIGVycm9yOwogI2Vsc2UKICAgICBkZWxheV9mbGFnID0gZmNudGwocy0+c29ja19mZCwgRl9HRVRGTCwgMCk7CisgICAgaWYgKGRlbGF5X2ZsYWcgPT0gLTEpCisgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgaWYgKGJsb2NrKQogICAgICAgICBuZXdfZGVsYXlfZmxhZyA9IGRlbGF5X2ZsYWcgJiAofk9fTk9OQkxPQ0spOwogICAgIGVsc2UKICAgICAgICAgbmV3X2RlbGF5X2ZsYWcgPSBkZWxheV9mbGFnIHwgT19OT05CTE9DSzsKICAgICBpZiAobmV3X2RlbGF5X2ZsYWcgIT0gZGVsYXlfZmxhZykKLSAgICAgICAgZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpOworICAgICAgICBpZiAoZmNudGwocy0+c29ja19mZCwgRl9TRVRGTCwgbmV3X2RlbGF5X2ZsYWcpID09IC0xKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICNlbmRpZgogI2Vsc2UgLyogTVNfV0lORE9XUyAqLwogICAgIGFyZyA9ICFibG9jazsKLSAgICBpb2N0bHNvY2tldChzLT5zb2NrX2ZkLCBGSU9OQklPLCAmYXJnKTsKKyAgICBpZiAoaW9jdGxzb2NrZXQocy0+c29ja19mZCwgRklPTkJJTywgJmFyZykgIT0gMCkKKyAgICAgICAgZ290byBlcnJvcjsKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKIAotICAgIC8qIFNpbmNlIHRoZXNlIGRvbid0IHJldHVybiBhbnl0aGluZyAqLwotICAgIHJldHVybiAxOworICAgIHJldHVybiAwOworICBlcnJvcjoKKyNpZm5kZWYgTVNfV0lORE9XUworICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyNlbHNlCisgICAgUHlFcnJfU2V0RXhjRnJvbVdpbmRvd3NFcnIoUHlFeGNfT1NFcnJvciwgV1NBR2V0TGFzdEVycm9yKCkpOworI2VuZGlmCisgICAgcmV0dXJuIC0xOwogfQogCiBzdGF0aWMgaW50CkBAIC04NzEsNyArOTE2LDcgQEAKIC8qIERlZmF1bHQgdGltZW91dCBmb3IgbmV3IHNvY2tldHMgKi8KIHN0YXRpYyBfUHlUaW1lX3QgZGVmYXVsdHRpbWVvdXQgPSBfUFlUSU1FX0ZST01TRUNPTkRTKC0xKTsKIAotc3RhdGljIHZvaWQKK3N0YXRpYyBpbnQKIGluaXRfc29ja29iamVjdChQeVNvY2tldFNvY2tPYmplY3QgKnMsCiAgICAgICAgICAgICAgICAgU09DS0VUX1QgZmQsIGludCBmYW1pbHksIGludCB0eXBlLCBpbnQgcHJvdG8pCiB7CkBAIC04ODgsMTAgKzkzMywxMyBAQAogI2VuZGlmCiAgICAgewogICAgICAgICBzLT5zb2NrX3RpbWVvdXQgPSBkZWZhdWx0dGltZW91dDsKLSAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApCi0gICAgICAgICAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKTsKKyAgICAgICAgaWYgKGRlZmF1bHR0aW1lb3V0ID49IDApIHsKKyAgICAgICAgICAgIGlmIChpbnRlcm5hbF9zZXRibG9ja2luZyhzLCAwKSA9PSAtMSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KLQorICAgIHJldHVybiAwOwogfQogCiAKQEAgLTkwNiw4ICs5NTQsMTIgQEAKICAgICBQeVNvY2tldFNvY2tPYmplY3QgKnM7CiAgICAgcyA9IChQeVNvY2tldFNvY2tPYmplY3QgKikKICAgICAgICAgUHlUeXBlX0dlbmVyaWNOZXcoJnNvY2tfdHlwZSwgTlVMTCwgTlVMTCk7Ci0gICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKTsKKyAgICBpZiAocyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoaW5pdF9zb2Nrb2JqZWN0KHMsIGZkLCBmYW1pbHksIHR5cGUsIHByb3RvKSA9PSAtMSkgeworICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KICAgICByZXR1cm4gczsKIH0KIApAQCAtOTI2LDcgKzk3OCw3IEBACiAgICBhbiBlcnJvciBvY2N1cnJlZDsgdGhlbiBhbiBleGNlcHRpb24gaXMgcmFpc2VkLiAqLwogCiBzdGF0aWMgaW50Ci1zZXRpcGFkZHIoY2hhciAqbmFtZSwgc3RydWN0IHNvY2thZGRyICphZGRyX3JldCwgc2l6ZV90IGFkZHJfcmV0X3NpemUsIGludCBhZikKK3NldGlwYWRkcihjb25zdCBjaGFyICpuYW1lLCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHJfcmV0LCBzaXplX3QgYWRkcl9yZXRfc2l6ZSwgaW50IGFmKQogewogICAgIHN0cnVjdCBhZGRyaW5mbyBoaW50cywgKnJlczsKICAgICBpbnQgZXJyb3I7CkBAIC0xMTA3LDcgKzExNTksNyBAQAogICAgYW4gZXJyb3Igb2NjdXJyZWQuICovCiAKIHN0YXRpYyBpbnQKLXNldGJkYWRkcihjaGFyICpuYW1lLCBiZGFkZHJfdCAqYmRhZGRyKQorc2V0YmRhZGRyKGNvbnN0IGNoYXIgKm5hbWUsIGJkYWRkcl90ICpiZGFkZHIpCiB7CiAgICAgdW5zaWduZWQgaW50IGIwLCBiMSwgYjIsIGIzLCBiNCwgYjU7CiAgICAgY2hhciBjaDsKQEAgLTExODAsNyArMTIzMiw3IEBACiAgICAgY2FzZSBBRl9VTklYOgogICAgIHsKICAgICAgICAgc3RydWN0IHNvY2thZGRyX3VuICphID0gKHN0cnVjdCBzb2NrYWRkcl91biAqKSBhZGRyOwotI2lmZGVmIGxpbnV4CisjaWZkZWYgX19saW51eF9fCiAgICAgICAgIGlmIChhLT5zdW5fcGF0aFswXSA9PSAwKSB7ICAvKiBMaW51eCBhYnN0cmFjdCBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIGFkZHJsZW4gLT0gb2Zmc2V0b2Yoc3RydWN0IHNvY2thZGRyX3VuLCBzdW5fcGF0aCk7CiAgICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShhLT5zdW5fcGF0aCwgYWRkcmxlbik7CkBAIC0xMzcxLDYgKzE0MjMsMjIgQEAKICAgICAgICAgfQogI2VuZGlmCiAKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqYSA9IChzdHJ1Y3Qgc29ja2FkZHJfYWxnICopYWRkcjsKKyAgICAgICAgcmV0dXJuIFB5X0J1aWxkVmFsdWUoInMjcyNISCIsCisgICAgICAgICAgICBhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICBzdHJubGVuKChjb25zdCBjaGFyKilhLT5zYWxnX3R5cGUsCisgICAgICAgICAgICAgICAgICAgIHNpemVvZihhLT5zYWxnX3R5cGUpKSwKKyAgICAgICAgICAgIGEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgIHN0cm5sZW4oKGNvbnN0IGNoYXIqKWEtPnNhbGdfbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKGEtPnNhbGdfbmFtZSkpLAorICAgICAgICAgICAgYS0+c2FsZ19mZWF0LAorICAgICAgICAgICAgYS0+c2FsZ19tYXNrKTsKKyAgICB9CisjZW5kaWYKKwogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCiAgICAgZGVmYXVsdDoKQEAgLTE0MDEsNyArMTQ2OSw3IEBACiBpZG5hX2NvbnZlcnRlcihQeU9iamVjdCAqb2JqLCBzdHJ1Y3QgbWF5YmVfaWRuYSAqZGF0YSkKIHsKICAgICBzaXplX3QgbGVuOwotICAgIFB5T2JqZWN0ICpvYmoyLCAqb2JqMzsKKyAgICBQeU9iamVjdCAqb2JqMjsKICAgICBpZiAob2JqID09IE5VTEwpIHsKICAgICAgICAgaWRuYV9jbGVhbnVwKGRhdGEpOwogICAgICAgICByZXR1cm4gMTsKQEAgLTE0MTYsMzEgKzE0ODQsMjcgQEAKICAgICAgICAgZGF0YS0+YnVmID0gUHlCeXRlQXJyYXlfQXNTdHJpbmcob2JqKTsKICAgICAgICAgbGVuID0gUHlCeXRlQXJyYXlfU2l6ZShvYmopOwogICAgIH0KLSAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSAmJiBQeVVuaWNvZGVfUkVBRFkob2JqKSA9PSAwICYmIFB5VW5pY29kZV9JU19DT01QQUNUX0FTQ0lJKG9iaikpIHsKLSAgICAgICAgZGF0YS0+YnVmID0gUHlVbmljb2RlX0RBVEEob2JqKTsKLSAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICBlbHNlIGlmIChQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBpZiAoUHlVbmljb2RlX1JFQURZKG9iaikgPT0gMCAmJiBQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSShvYmopKSB7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeVVuaWNvZGVfREFUQShvYmopOworICAgICAgICAgICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgob2JqKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIG9iajIgPSBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nKG9iaiwgImlkbmEiLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICghb2JqMikgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKG9iajIpKTsKKyAgICAgICAgICAgIGRhdGEtPm9iaiA9IG9iajI7CisgICAgICAgICAgICBkYXRhLT5idWYgPSBQeUJ5dGVzX0FTX1NUUklORyhvYmoyKTsKKyAgICAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUob2JqMik7CisgICAgICAgIH0KICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIG9iajIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgICAgICBpZiAoIW9iajIpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICJzdHJpbmcgb3IgdW5pY29kZSB0ZXh0IGJ1ZmZlciBleHBlY3RlZCwgbm90ICVzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIH0KLSAgICAgICAgb2JqMyA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcob2JqMiwgImlkbmEiLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKG9iajIpOwotICAgICAgICBpZiAoIW9iajMpIHsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJlbmNvZGluZyBvZiBob3N0bmFtZSBmYWlsZWQiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGlmICghUHlCeXRlc19DaGVjayhvYmozKSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG9iajMpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImVuY29kaW5nIG9mIGhvc3RuYW1lIGZhaWxlZCB0byByZXR1cm4gYnl0ZXMiKTsKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICB9Ci0gICAgICAgIGRhdGEtPm9iaiA9IG9iajM7Ci0gICAgICAgIGRhdGEtPmJ1ZiA9IFB5Qnl0ZXNfQVNfU1RSSU5HKG9iajMpOwotICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKG9iajMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLCAic3RyLCBieXRlcyBvciBieXRlYXJyYXkgZXhwZWN0ZWQsIG5vdCAlcyIsCisgICAgICAgICAgICAgICAgICAgICBvYmotPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKHN0cmxlbihkYXRhLT5idWYpICE9IGxlbikgewogICAgICAgICBQeV9DTEVBUihkYXRhLT5vYmopOwpAQCAtMTQ4Myw3ICsxNTQ3LDcgQEAKICAgICAgICAgYXNzZXJ0KHBhdGgubGVuID49IDApOwogCiAgICAgICAgIGFkZHIgPSAoc3RydWN0IHNvY2thZGRyX3VuKilhZGRyX3JldDsKLSNpZmRlZiBsaW51eAorI2lmZGVmIF9fbGludXhfXwogICAgICAgICBpZiAocGF0aC5sZW4gPiAwICYmICooY29uc3QgY2hhciAqKXBhdGguYnVmID09IDApIHsKICAgICAgICAgICAgIC8qIExpbnV4IGFic3RyYWN0IG5hbWVzcGFjZSBleHRlbnNpb24gKi8KICAgICAgICAgICAgIGlmICgoc2l6ZV90KXBhdGgubGVuID4gc2l6ZW9mIGFkZHItPnN1bl9wYXRoKSB7CkBAIC0xOTQwLDYgKzIwMDQsMzYgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgc3RydWN0IHNvY2thZGRyX2FsZyAqc2E7CisgICAgICAgIGNoYXIgKnR5cGU7CisgICAgICAgIGNoYXIgKm5hbWU7CisgICAgICAgIHNhID0gKHN0cnVjdCBzb2NrYWRkcl9hbGcgKilhZGRyX3JldDsKKworICAgICAgICBtZW1zZXQoc2EsIDAsIHNpemVvZigqc2EpKTsKKyAgICAgICAgc2EtPnNhbGdfZmFtaWx5ID0gQUZfQUxHOworCisgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAic3N8SEg6Z2V0c29ja2FkZHJhcmciLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmdHlwZSwgJm5hbWUsICZzYS0+c2FsZ19mZWF0LCAmc2EtPnNhbGdfbWFzaykpCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgLyogc29ja2FkZHJfYWxnIGhhcyBmaXhlZC1zaXplZCBjaGFyIGFycmF5cyBmb3IgdHlwZSBhbmQgbmFtZSAqLworICAgICAgICBpZiAoc3RybGVuKHR5cGUpID4gc2l6ZW9mKHNhLT5zYWxnX3R5cGUpKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkFGX0FMRyB0eXBlIHRvbyBsb25nLiIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgc3RybmNweSgoY2hhciAqKXNhLT5zYWxnX3R5cGUsIHR5cGUsIHNpemVvZihzYS0+c2FsZ190eXBlKSk7CisgICAgICAgIGlmIChzdHJsZW4obmFtZSkgPiBzaXplb2Yoc2EtPnNhbGdfbmFtZSkpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiQUZfQUxHIG5hbWUgdG9vIGxvbmcuIik7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBzdHJuY3B5KChjaGFyICopc2EtPnNhbGdfbmFtZSwgbmFtZSwgc2l6ZW9mKHNhLT5zYWxnX25hbWUpKTsKKworICAgICAgICAqbGVuX3JldCA9IHNpemVvZigqc2EpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMDYyLDYgKzIxNTYsMTMgQEAKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIGNhc2UgQUZfQUxHOgorICAgIHsKKyAgICAgICAgKmxlbl9yZXQgPSBzaXplb2YgKHN0cnVjdCBzb2NrYWRkcl9hbGcpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisjZW5kaWYKIAogICAgIC8qIE1vcmUgY2FzZXMgaGVyZS4uLiAqLwogCkBAIC0yMjIxLDEwICsyMzIyLDIxIEBACiBzb2NrX2FjY2VwdF9pbXBsKFB5U29ja2V0U29ja09iamVjdCAqcywgdm9pZCAqZGF0YSkKIHsKICAgICBzdHJ1Y3Qgc29ja19hY2NlcHQgKmN0eCA9IGRhdGE7CisgICAgc3RydWN0IHNvY2thZGRyICphZGRyID0gU0FTMlNBKGN0eC0+YWRkcmJ1Zik7CisgICAgc29ja2xlbl90ICpwYWRkcmxlbiA9IGN0eC0+YWRkcmxlbjsKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIC8qIEFGX0FMRyBkb2VzIG5vdCBzdXBwb3J0IGFjY2VwdCgpIHdpdGggYWRkciBhbmQgcmFpc2VzCisgICAgICogRUNPTk5BQk9SVEVEIGluc3RlYWQuICovCisgICAgaWYgKHMtPnNvY2tfZmFtaWx5ID09IEFGX0FMRykgeworICAgICAgICBhZGRyID0gTlVMTDsKKyAgICAgICAgcGFkZHJsZW4gPSBOVUxMOworICAgICAgICAqY3R4LT5hZGRybGVuID0gMDsKKyAgICB9CisjZW5kaWYKIAogI2lmIGRlZmluZWQoSEFWRV9BQ0NFUFQ0KSAmJiBkZWZpbmVkKFNPQ0tfQ0xPRVhFQykKICAgICBpZiAoYWNjZXB0NF93b3JrcyAhPSAwKSB7Ci0gICAgICAgIGN0eC0+cmVzdWx0ID0gYWNjZXB0NChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuLAorICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdDQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTT0NLX0NMT0VYRUMpOwogICAgICAgICBpZiAoY3R4LT5yZXN1bHQgPT0gSU5WQUxJRF9TT0NLRVQgJiYgYWNjZXB0NF93b3JrcyA9PSAtMSkgewogICAgICAgICAgICAgLyogT24gTGludXggb2xkZXIgdGhhbiAyLjYuMjgsIGFjY2VwdDQoKSBmYWlscyB3aXRoIEVOT1NZUyAqLwpAQCAtMjIzMiw5ICsyMzQ0LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBpZiAoYWNjZXB0NF93b3JrcyA9PSAwKQotICAgICAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICAgICAgY3R4LT5yZXN1bHQgPSBhY2NlcHQocy0+c29ja19mZCwgYWRkciwgcGFkZHJsZW4pOwogI2Vsc2UKLSAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBTQVMyU0EoY3R4LT5hZGRyYnVmKSwgY3R4LT5hZGRybGVuKTsKKyAgICBjdHgtPnJlc3VsdCA9IGFjY2VwdChzLT5zb2NrX2ZkLCBhZGRyLCBwYWRkcmxlbik7CiAjZW5kaWYKIAogI2lmZGVmIE1TX1dJTkRPV1MKQEAgLTIzMzAsMTAgKzI0NDIsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBzLT5zb2NrX3RpbWVvdXQgPSBfUHlUaW1lX0Zyb21TZWNvbmRzKGJsb2NrID8gLTEgOiAwKTsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCBibG9jayk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIGJsb2NrKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXRibG9ja2luZ19kb2MsCkBAIC0yMzk5LDEwICsyNTExLDEwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcy0+c29ja190aW1lb3V0ID0gdGltZW91dDsKLSAgICBpbnRlcm5hbF9zZXRibG9ja2luZyhzLCB0aW1lb3V0IDwgMCk7Ci0KLSAgICBQeV9JTkNSRUYoUHlfTm9uZSk7Ci0gICAgcmV0dXJuIFB5X05vbmU7CisgICAgaWYgKGludGVybmFsX3NldGJsb2NraW5nKHMsIHRpbWVvdXQgPCAwKSA9PSAtMSkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgUHlfUkVUVVJOX05PTkU7CiB9CiAKIFB5RG9jX1NUUlZBUihzZXR0aW1lb3V0X2RvYywKQEAgLTI0MzYsOSArMjU0OCwxMiBAQAogb3BlcmF0aW9ucyBhcmUgZGlzYWJsZWQuIik7CiAKIC8qIHMuc2V0c29ja29wdCgpIG1ldGhvZC4KLSAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdGlvbi4KKyAgIFdpdGggYW4gaW50ZWdlciB0aGlyZCBhcmd1bWVudCwgc2V0cyBhbiBpbnRlZ2VyIG9wdHZhbCB3aXRoIG9wdGxlbj00LgorICAgV2l0aCBOb25lIGFzIHRoaXJkIGFyZ3VtZW50IGFuZCBhbiBpbnRlZ2VyIGZvdXJ0aCBhcmd1bWVudCwgc2V0CisgICBvcHR2YWw9TlVMTCB3aXRoIHVuc2lnbmVkIGludCBhcyBvcHRsZW4uCiAgICBXaXRoIGEgc3RyaW5nIHRoaXJkIGFyZ3VtZW50LCBzZXRzIGFuIG9wdGlvbiBmcm9tIGEgYnVmZmVyOwotICAgdXNlIG9wdGlvbmFsIGJ1aWx0LWluIG1vZHVsZSAnc3RydWN0JyB0byBlbmNvZGUgdGhlIHN0cmluZy4gKi8KKyAgIHVzZSBvcHRpb25hbCBidWlsdC1pbiBtb2R1bGUgJ3N0cnVjdCcgdG8gZW5jb2RlIHRoZSBzdHJpbmcuCisqLwogCiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZXRzb2Nrb3B0KFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCkBAIC0yNDQ4LDMxICsyNTYzLDY0IEBACiAgICAgaW50IHJlczsKICAgICBQeV9idWZmZXIgb3B0dmFsOwogICAgIGludCBmbGFnOworICAgIHVuc2lnbmVkIGludCBvcHRsZW47CisgICAgUHlPYmplY3QgKm5vbmU7CiAKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGZsYWcpICovCiAgICAgaWYgKFB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpaTpzZXRzb2Nrb3B0IiwKICAgICAgICAgICAgICAgICAgICAgICAgICAmbGV2ZWwsICZvcHRuYW1lLCAmZmxhZykpIHsKICAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hhciopJmZsYWcsIHNpemVvZiBmbGFnKTsKKyAgICAgICAgZ290byBkb25lOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaXkqOnNldHNvY2tvcHQiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwgb3B0dmFsLmJ1Ziwgb3B0dmFsLmxlbik7CisKKyAgICBQeUVycl9DbGVhcigpOworICAgIC8qIHNldHNvY2tvcHQobGV2ZWwsIG9wdCwgTm9uZSwgZmxhZykgKi8KKyAgICBpZiAoUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiaWlPIUk6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgUHlfVFlQRShQeV9Ob25lKSwgJm5vbmUsICZvcHRsZW4pKSB7CisgICAgICAgIGFzc2VydChzaXplb2Yoc29ja2xlbl90KSA+PSBzaXplb2YodW5zaWduZWQgaW50KSk7CisgICAgICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgKHNvY2tsZW5fdClvcHRsZW4pOworICAgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAvKiBzZXRzb2Nrb3B0KGxldmVsLCBvcHQsIGJ1ZmZlcikgKi8KKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpeSo6c2V0c29ja29wdCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmxldmVsLCAmb3B0bmFtZSwgJm9wdHZhbCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmIChvcHR2YWwubGVuID4gSU5UX01BWCkgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvcHR2YWwpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzb2NrZXQgb3B0aW9uIGlzIGxhcmdlciB0aGFuICVpIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIElOVF9NQVgpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgaWYgKHJlcyA8IDApCisgICAgcmVzID0gc2V0c29ja29wdChzLT5zb2NrX2ZkLCBsZXZlbCwgb3B0bmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdHZhbC5idWYsIChpbnQpb3B0dmFsLmxlbik7CisjZWxzZQorICAgIHJlcyA9IHNldHNvY2tvcHQocy0+c29ja19mZCwgbGV2ZWwsIG9wdG5hbWUsIG9wdHZhbC5idWYsIG9wdHZhbC5sZW4pOworI2VuZGlmCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmb3B0dmFsKTsKKworZG9uZToKKyAgICBpZiAocmVzIDwgMCkgewogICAgICAgICByZXR1cm4gcy0+ZXJyb3JoYW5kbGVyKCk7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOwogfQogCiBQeURvY19TVFJWQVIoc2V0c29ja29wdF9kb2MsCi0ic2V0c29ja29wdChsZXZlbCwgb3B0aW9uLCB2YWx1ZSlcblwKKyJzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBpbnQpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIHZhbHVlOiBidWZmZXIpXG5cCitzZXRzb2Nrb3B0KGxldmVsLCBvcHRpb24sIE5vbmUsIG9wdGxlbjogaW50KVxuXAogXG5cCiBTZXQgYSBzb2NrZXQgb3B0aW9uLiAgU2VlIHRoZSBVbml4IG1hbnVhbCBmb3IgbGV2ZWwgYW5kIG9wdGlvbi5cblwKLVRoZSB2YWx1ZSBhcmd1bWVudCBjYW4gZWl0aGVyIGJlIGFuIGludGVnZXIgb3IgYSBzdHJpbmcuIik7CitUaGUgdmFsdWUgYXJndW1lbnQgY2FuIGVpdGhlciBiZSBhbiBpbnRlZ2VyLCBhIHN0cmluZyBidWZmZXIsIG9yIFxuXAorTm9uZSwgb3B0bGVuLiIpOwogCiAKIC8qIHMuZ2V0c29ja29wdCgpIG1ldGhvZC4KQEAgLTI1NjQsMTcgKzI3MTIsMjIgQEAKIHNvY2tfY2xvc2UoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQogewogICAgIFNPQ0tFVF9UIGZkOworICAgIGludCByZXM7CiAKLSAgICAvKiBXZSBkbyBub3Qgd2FudCB0byByZXRyeSB1cG9uIEVJTlRSOiBzZWUgaHR0cDovL2x3bi5uZXQvQXJ0aWNsZXMvNTc2NDc4LwotICAgICAqIGFuZCBodHRwOi8vbGludXguZGVya2VpbGVyLmNvbS9NYWlsaW5nLUxpc3RzL0tlcm5lbC8yMDA1LTA5LzMwMDAuaHRtbAotICAgICAqIGZvciBtb3JlIGRldGFpbHMuCi0gICAgICovCiAgICAgZmQgPSBzLT5zb2NrX2ZkOwogICAgIGlmIChmZCAhPSBJTlZBTElEX1NPQ0tFVCkgewogICAgICAgICBzLT5zb2NrX2ZkID0gSU5WQUxJRF9TT0NLRVQ7CisKKyAgICAgICAgLyogV2UgZG8gbm90IHdhbnQgdG8gcmV0cnkgdXBvbiBFSU5UUjogc2VlCisgICAgICAgICAgIGh0dHA6Ly9sd24ubmV0L0FydGljbGVzLzU3NjQ3OC8gYW5kCisgICAgICAgICAgIGh0dHA6Ly9saW51eC5kZXJrZWlsZXIuY29tL01haWxpbmctTGlzdHMvS2VybmVsLzIwMDUtMDkvMzAwMC5odG1sCisgICAgICAgICAgIGZvciBtb3JlIGRldGFpbHMuICovCiAgICAgICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKLSAgICAgICAgKHZvaWQpIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmVzID0gU09DS0VUQ0xPU0UoZmQpOwogICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgICAgICBpZiAocmVzIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIHMtPmVycm9yaGFuZGxlcigpOworICAgICAgICB9CiAgICAgfQogICAgIFB5X0lOQ1JFRihQeV9Ob25lKTsKICAgICByZXR1cm4gUHlfTm9uZTsKQEAgLTM3NTcsNiArMzkxMCw2MyBAQAogfTsKIAogc3RhdGljIGludAorc29ja19zZW5kbXNnX2lvdmVjKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmRhdGFfYXJnLAorICAgICAgICAgICAgICAgICAgIHN0cnVjdCBtc2doZHIgKm1zZywKKyAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKipkYXRhYnVmc291dCwgUHlfc3NpemVfdCAqbmRhdGFidWZzb3V0KSB7CisgICAgUHlfc3NpemVfdCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwOworICAgIGludCByZXN1bHQgPSAtMTsKKyAgICBzdHJ1Y3QgaW92ZWMgKmlvdnMgPSBOVUxMOworICAgIFB5T2JqZWN0ICpkYXRhX2Zhc3QgPSBOVUxMOworICAgIFB5X2J1ZmZlciAqZGF0YWJ1ZnMgPSBOVUxMOworCisgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKKyAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KKyAgICBkYXRhX2Zhc3QgPSBQeVNlcXVlbmNlX0Zhc3QoZGF0YV9hcmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIik7CisgICAgaWYgKGRhdGFfZmFzdCA9PSBOVUxMKSB7CisgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICB9CisKKyAgICBuZGF0YXBhcnRzID0gUHlTZXF1ZW5jZV9GYXN0X0dFVF9TSVpFKGRhdGFfZmFzdCk7CisgICAgaWYgKG5kYXRhcGFydHMgPiBJTlRfTUFYKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLCAic2VuZG1zZygpIGFyZ3VtZW50IDEgaXMgdG9vIGxvbmciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKworICAgIG1zZy0+bXNnX2lvdmxlbiA9IG5kYXRhcGFydHM7CisgICAgaWYgKG5kYXRhcGFydHMgPiAwKSB7CisgICAgICAgIGlvdnMgPSBQeU1lbV9OZXcoc3RydWN0IGlvdmVjLCBuZGF0YXBhcnRzKTsKKyAgICAgICAgaWYgKGlvdnMgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBtc2ctPm1zZ19pb3YgPSBpb3ZzOworCisgICAgICAgIGRhdGFidWZzID0gUHlNZW1fTmV3KFB5X2J1ZmZlciwgbmRhdGFwYXJ0cyk7CisgICAgICAgIGlmIChkYXRhYnVmcyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgfQorICAgIGZvciAoOyBuZGF0YWJ1ZnMgPCBuZGF0YXBhcnRzOyBuZGF0YWJ1ZnMrKykgeworICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKFB5U2VxdWVuY2VfRmFzdF9HRVRfSVRFTShkYXRhX2Zhc3QsIG5kYXRhYnVmcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgInkqO3NlbmRtc2coKSBhcmd1bWVudCAxIG11c3QgYmUgYW4gaXRlcmFibGUgb2YgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcy1saWtlIG9iamVjdHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhYnVmc1tuZGF0YWJ1ZnNdKSkKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgaW92c1tuZGF0YWJ1ZnNdLmlvdl9iYXNlID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5idWY7CisgICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfbGVuID0gZGF0YWJ1ZnNbbmRhdGFidWZzXS5sZW47CisgICAgfQorICAgIHJlc3VsdCA9IDA7CisgIGZpbmFsbHk6CisgICAgKmRhdGFidWZzb3V0ID0gZGF0YWJ1ZnM7CisgICAgKm5kYXRhYnVmc291dCA9IG5kYXRhYnVmczsKKyAgICBQeV9YREVDUkVGKGRhdGFfZmFzdCk7CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIGludAogc29ja19zZW5kbXNnX2ltcGwoUHlTb2NrZXRTb2NrT2JqZWN0ICpzLCB2b2lkICpkYXRhKQogewogICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgKmN0eCA9IGRhdGE7CkBAIC0zNzcwLDExICszOTgwLDEwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogc29ja19zZW5kbXNnKFB5U29ja2V0U29ja09iamVjdCAqcywgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBpLCBuZGF0YXBhcnRzLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CisgICAgUHlfc3NpemVfdCBpLCBuZGF0YWJ1ZnMgPSAwLCBuY21zZ3MsIG5jbXNnYnVmcyA9IDA7CiAgICAgUHlfYnVmZmVyICpkYXRhYnVmcyA9IE5VTEw7Ci0gICAgc3RydWN0IGlvdmVjICppb3ZzID0gTlVMTDsKICAgICBzb2NrX2FkZHJfdCBhZGRyYnVmOwotICAgIHN0cnVjdCBtc2doZHIgbXNnID0gezB9OworICAgIHN0cnVjdCBtc2doZHIgbXNnOwogICAgIHN0cnVjdCBjbXNnaW5mbyB7CiAgICAgICAgIGludCBsZXZlbDsKICAgICAgICAgaW50IHR5cGU7CkBAIC0zNzgzLDEzICszOTkyLDE2IEBACiAgICAgdm9pZCAqY29udHJvbGJ1ZiA9IE5VTEw7CiAgICAgc2l6ZV90IGNvbnRyb2xsZW4sIGNvbnRyb2xsZW5fbGFzdDsKICAgICBpbnQgYWRkcmxlbiwgZmxhZ3MgPSAwOwotICAgIFB5T2JqZWN0ICpkYXRhX2FyZywgKmNtc2dfYXJnID0gTlVMTCwgKmFkZHJfYXJnID0gTlVMTCwgKmRhdGFfZmFzdCA9IE5VTEwsCisgICAgUHlPYmplY3QgKmRhdGFfYXJnLCAqY21zZ19hcmcgPSBOVUxMLCAqYWRkcl9hcmcgPSBOVUxMLAogICAgICAgICAqY21zZ19mYXN0ID0gTlVMTCwgKnJldHZhbCA9IE5VTEw7CiAgICAgc3RydWN0IHNvY2tfc2VuZG1zZyBjdHg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98T2lPOnNlbmRtc2ciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YV9hcmcsICZjbXNnX2FyZywgJmZsYWdzLCAmYWRkcl9hcmcpKSB7CiAgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CiAKICAgICAvKiBQYXJzZSBkZXN0aW5hdGlvbiBhZGRyZXNzLiAqLwogICAgIGlmIChhZGRyX2FyZyAhPSBOVUxMICYmIGFkZHJfYXJnICE9IFB5X05vbmUpIHsKQEAgLTM4MDEsMzAgKzQwMTMsOCBAQAogCiAgICAgLyogRmlsbCBpbiBhbiBpb3ZlYyBmb3IgZWFjaCBtZXNzYWdlIHBhcnQsIGFuZCBzYXZlIHRoZSBQeV9idWZmZXIKICAgICAgICBzdHJ1Y3RzIHRvIHJlbGVhc2UgYWZ0ZXJ3YXJkcy4gKi8KLSAgICBpZiAoKGRhdGFfZmFzdCA9IFB5U2VxdWVuY2VfRmFzdChkYXRhX2FyZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2VuZG1zZygpIGFyZ3VtZW50IDEgbXVzdCBiZSBhbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIml0ZXJhYmxlIikpID09IE5VTEwpCisgICAgaWYgKHNvY2tfc2VuZG1zZ19pb3ZlYyhzLCBkYXRhX2FyZywgJm1zZywgJmRhdGFidWZzLCAmbmRhdGFidWZzKSA9PSAtMSkgewogICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgbmRhdGFwYXJ0cyA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShkYXRhX2Zhc3QpOwotICAgIGlmIChuZGF0YXBhcnRzID4gSU5UX01BWCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT1NFcnJvciwgInNlbmRtc2coKSBhcmd1bWVudCAxIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIGdvdG8gZmluYWxseTsKLSAgICB9Ci0gICAgbXNnLm1zZ19pb3ZsZW4gPSBuZGF0YXBhcnRzOwotICAgIGlmIChuZGF0YXBhcnRzID4gMCAmJgotICAgICAgICAoKG1zZy5tc2dfaW92ID0gaW92cyA9IFB5TWVtX05ldyhzdHJ1Y3QgaW92ZWMsIG5kYXRhcGFydHMpKSA9PSBOVUxMIHx8Ci0gICAgICAgICAoZGF0YWJ1ZnMgPSBQeU1lbV9OZXcoUHlfYnVmZmVyLCBuZGF0YXBhcnRzKSkgPT0gTlVMTCkpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgZ290byBmaW5hbGx5OwotICAgIH0KLSAgICBmb3IgKDsgbmRhdGFidWZzIDwgbmRhdGFwYXJ0czsgbmRhdGFidWZzKyspIHsKLSAgICAgICAgaWYgKCFQeUFyZ19QYXJzZShQeVNlcXVlbmNlX0Zhc3RfR0VUX0lURU0oZGF0YV9mYXN0LCBuZGF0YWJ1ZnMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICJ5KjtzZW5kbXNnKCkgYXJndW1lbnQgMSBtdXN0IGJlIGFuIGl0ZXJhYmxlIG9mICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMtbGlrZSBvYmplY3RzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAmZGF0YWJ1ZnNbbmRhdGFidWZzXSkpCi0gICAgICAgICAgICBnb3RvIGZpbmFsbHk7Ci0gICAgICAgIGlvdnNbbmRhdGFidWZzXS5pb3ZfYmFzZSA9IGRhdGFidWZzW25kYXRhYnVmc10uYnVmOwotICAgICAgICBpb3ZzW25kYXRhYnVmc10uaW92X2xlbiA9IGRhdGFidWZzW25kYXRhYnVmc10ubGVuOwogICAgIH0KIAogICAgIGlmIChjbXNnX2FyZyA9PSBOVUxMKQpAQCAtMzg4MywxMSArNDA3MywxMyBAQAogICAgIGlmIChuY21zZ2J1ZnMgPiAwKSB7CiAgICAgICAgIHN0cnVjdCBjbXNnaGRyICpjbXNnaCA9IE5VTEw7CiAKLSAgICAgICAgaWYgKChtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmID0KLSAgICAgICAgICAgICBQeU1lbV9NYWxsb2MoY29udHJvbGxlbikpID09IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGJ1ZiA9IFB5TWVtX01hbGxvYyhjb250cm9sbGVuKTsKKyAgICAgICAgaWYgKGNvbnRyb2xidWYgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIGdvdG8gZmluYWxseTsKICAgICAgICAgfQorICAgICAgICBtc2cubXNnX2NvbnRyb2wgPSBjb250cm9sYnVmOworCiAgICAgICAgIG1zZy5tc2dfY29udHJvbGxlbiA9IGNvbnRyb2xsZW47CiAKICAgICAgICAgLyogTmVlZCB0byB6ZXJvIG91dCB0aGUgYnVmZmVyIGFzIGEgd29ya2Fyb3VuZCBmb3IgZ2xpYmMncwpAQCAtMzk1MiwxMSArNDE0NCwxMSBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZjbXNnc1tpXS5kYXRhKTsKICAgICBQeU1lbV9GcmVlKGNtc2dzKTsKICAgICBQeV9YREVDUkVGKGNtc2dfZmFzdCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5kYXRhYnVmczsgaSsrKQorICAgIFB5TWVtX0ZyZWUobXNnLm1zZ19pb3YpOworICAgIGZvciAoaSA9IDA7IGkgPCBuZGF0YWJ1ZnM7IGkrKykgewogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZkYXRhYnVmc1tpXSk7CisgICAgfQogICAgIFB5TWVtX0ZyZWUoZGF0YWJ1ZnMpOwotICAgIFB5TWVtX0ZyZWUoaW92cyk7Ci0gICAgUHlfWERFQ1JFRihkYXRhX2Zhc3QpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTM5NzgsNiArNDE3MCwxNzEgQEAKIGRhdGEgc2VudC4iKTsKICNlbmRpZiAgICAvKiBDTVNHX0xFTiAqLwogCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKK3N0YXRpYyBQeU9iamVjdCoKK3NvY2tfc2VuZG1zZ19hZmFsZyhQeVNvY2tldFNvY2tPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKK3sKKyAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKKworICAgIFB5X3NzaXplX3QgaSwgbmRhdGFidWZzID0gMDsKKyAgICBQeV9idWZmZXIgKmRhdGFidWZzID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZGF0YV9hcmcgPSBOVUxMOworCisgICAgUHlfYnVmZmVyIGl2ID0ge05VTEwsIE5VTEx9OworCisgICAgUHlPYmplY3QgKm9wb2JqID0gTlVMTDsKKyAgICBpbnQgb3AgPSAtMTsKKworICAgIFB5T2JqZWN0ICphc3NvY2xlbm9iaiA9IE5VTEw7CisgICAgaW50IGFzc29jbGVuID0gLTE7CisKKyAgICB1bnNpZ25lZCBpbnQgKnVpcHRyOworICAgIGludCBmbGFncyA9IDA7CisKKyAgICBzdHJ1Y3QgbXNnaGRyIG1zZzsKKyAgICBzdHJ1Y3QgY21zZ2hkciAqaGVhZGVyID0gTlVMTDsKKyAgICBzdHJ1Y3QgYWZfYWxnX2l2ICphbGdfaXYgPSBOVUxMOworICAgIHN0cnVjdCBzb2NrX3NlbmRtc2cgY3R4OworICAgIFB5X3NzaXplX3QgY29udHJvbGxlbjsKKyAgICB2b2lkICpjb250cm9sYnVmID0gTlVMTDsKKyAgICBzdGF0aWMgY2hhciAqa2V5d29yZHNbXSA9IHsibXNnIiwgIm9wIiwgIml2IiwgImFzc29jbGVuIiwgImZsYWdzIiwgMH07CisKKyAgICBpZiAoc2VsZi0+c29ja19mYW1pbHkgIT0gQUZfQUxHKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PU0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImFsZ3NldCBpcyBvbmx5IHN1cHBvcnRlZCBmb3IgQUZfQUxHIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3ZHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInxPJE8heSpPIWk6c2VuZG1zZ19hZmFsZyIsIGtleXdvcmRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZkYXRhX2FyZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlMb25nX1R5cGUsICZvcG9iaiwgJml2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUxvbmdfVHlwZSwgJmFzc29jbGVub2JqLCAmZmxhZ3MpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIG1lbXNldCgmbXNnLCAwLCBzaXplb2YobXNnKSk7CisKKyAgICAvKiBvcCBpcyBhIHJlcXVpcmVkLCBrZXl3b3JkLW9ubHkgYXJndW1lbnQgPj0gMCAqLworICAgIGlmIChvcG9iaiAhPSBOVUxMKSB7CisgICAgICAgIG9wID0gX1B5TG9uZ19Bc0ludChvcG9iaik7CisgICAgfQorICAgIGlmIChvcCA8IDApIHsKKyAgICAgICAgLyogb3ZlcnJpZGUgZXhjZXB0aW9uIGZyb20gX1B5TG9uZ19Bc0ludCgpICovCisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBvciBtaXNzaW5nIGFyZ3VtZW50ICdvcCciKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICAvKiBhc3NvY2xlbiBpcyBvcHRpb25hbCBidXQgbXVzdCBiZSA+PSAwICovCisgICAgaWYgKGFzc29jbGVub2JqICE9IE5VTEwpIHsKKyAgICAgICAgYXNzb2NsZW4gPSBfUHlMb25nX0FzSW50KGFzc29jbGVub2JqKTsKKyAgICAgICAgaWYgKGFzc29jbGVuID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBpZiAoYXNzb2NsZW4gPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJhc3NvY2xlbiBtdXN0IGJlIHBvc2l0aXZlIik7CisgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBjb250cm9sbGVuID0gQ01TR19TUEFDRSg0KTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgY29udHJvbGxlbiArPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgfQorICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGNvbnRyb2xsZW4gKz0gQ01TR19TUEFDRSg0KTsKKyAgICB9CisKKyAgICBjb250cm9sYnVmID0gUHlNZW1fTWFsbG9jKGNvbnRyb2xsZW4pOworICAgIGlmIChjb250cm9sYnVmID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgZ290byBmaW5hbGx5OworICAgIH0KKyAgICBtZW1zZXQoY29udHJvbGJ1ZiwgMCwgY29udHJvbGxlbik7CisKKyAgICBtc2cubXNnX2NvbnRyb2xsZW4gPSBjb250cm9sbGVuOworICAgIG1zZy5tc2dfY29udHJvbCA9IGNvbnRyb2xidWY7CisKKyAgICAvKiBGaWxsIGluIGFuIGlvdmVjIGZvciBlYWNoIG1lc3NhZ2UgcGFydCwgYW5kIHNhdmUgdGhlIFB5X2J1ZmZlcgorICAgICAgIHN0cnVjdHMgdG8gcmVsZWFzZSBhZnRlcndhcmRzLiAqLworICAgIGlmIChkYXRhX2FyZyAhPSBOVUxMKSB7CisgICAgICAgIGlmIChzb2NrX3NlbmRtc2dfaW92ZWMoc2VsZiwgZGF0YV9hcmcsICZtc2csICZkYXRhYnVmcywgJm5kYXRhYnVmcykgPT0gLTEpIHsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgIH0KKworICAgIC8qIHNldCBvcGVyYXRpb24gdG8gZW5jcnlwdCBvciBkZWNyeXB0ICovCisgICAgaGVhZGVyID0gQ01TR19GSVJTVEhEUigmbXNnKTsKKyAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIE5VTEwgcmVzdWx0IGZyb20gQ01TR19GSVJTVEhEUiIpOworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgaGVhZGVyLT5jbXNnX3R5cGUgPSBBTEdfU0VUX09QOworICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX0xFTig0KTsKKyAgICB1aXB0ciA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KW9wOworCisgICAgLyogc2V0IGluaXRpYWxpemF0aW9uIHZlY3RvciAqLworICAgIGlmIChpdi5idWYgIT0gTlVMTCkgeworICAgICAgICBoZWFkZXIgPSBDTVNHX05YVEhEUigmbXNnLCBoZWFkZXIpOworICAgICAgICBpZiAoaGVhZGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgTlVMTCByZXN1bHQgZnJvbSBDTVNHX05YVEhEUihpdikiKTsKKyAgICAgICAgICAgIGdvdG8gZmluYWxseTsKKyAgICAgICAgfQorICAgICAgICBoZWFkZXItPmNtc2dfbGV2ZWwgPSBTT0xfQUxHOworICAgICAgICBoZWFkZXItPmNtc2dfdHlwZSA9IEFMR19TRVRfSVY7CisgICAgICAgIGhlYWRlci0+Y21zZ19sZW4gPSBDTVNHX1NQQUNFKHNpemVvZigqYWxnX2l2KSArIGl2Lmxlbik7CisgICAgICAgIGFsZ19pdiA9ICh2b2lkKilDTVNHX0RBVEEoaGVhZGVyKTsKKyAgICAgICAgYWxnX2l2LT5pdmxlbiA9IGl2LmxlbjsKKyAgICAgICAgbWVtY3B5KGFsZ19pdi0+aXYsIGl2LmJ1ZiwgaXYubGVuKTsKKyAgICB9CisKKyAgICAvKiBzZXQgbGVuZ3RoIG9mIGFzc29jaWF0ZWQgZGF0YSBmb3IgQUVBRCAqLworICAgIGlmIChhc3NvY2xlbiA+PSAwKSB7CisgICAgICAgIGhlYWRlciA9IENNU0dfTlhUSERSKCZtc2csIGhlYWRlcik7CisgICAgICAgIGlmIChoZWFkZXIgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBOVUxMIHJlc3VsdCBmcm9tIENNU0dfTlhUSERSKGFzc29jKSIpOworICAgICAgICAgICAgZ290byBmaW5hbGx5OworICAgICAgICB9CisgICAgICAgIGhlYWRlci0+Y21zZ19sZXZlbCA9IFNPTF9BTEc7CisgICAgICAgIGhlYWRlci0+Y21zZ190eXBlID0gQUxHX1NFVF9BRUFEX0FTU09DTEVOOworICAgICAgICBoZWFkZXItPmNtc2dfbGVuID0gQ01TR19MRU4oNCk7CisgICAgICAgIHVpcHRyID0gKHZvaWQqKUNNU0dfREFUQShoZWFkZXIpOworICAgICAgICAqdWlwdHIgPSAodW5zaWduZWQgaW50KWFzc29jbGVuOworICAgIH0KKworICAgIGN0eC5tc2cgPSAmbXNnOworICAgIGN0eC5mbGFncyA9IGZsYWdzOworICAgIGlmIChzb2NrX2NhbGwoc2VsZiwgMSwgc29ja19zZW5kbXNnX2ltcGwsICZjdHgpIDwgMCkgeworICAgICAgICBnb3RvIGZpbmFsbHk7CisgICAgfQorCisgICAgcmV0dmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGN0eC5yZXN1bHQpOworCisgIGZpbmFsbHk6CisgICAgUHlNZW1fRnJlZShjb250cm9sYnVmKTsKKyAgICBpZiAoaXYuYnVmICE9IE5VTEwpIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmaXYpOworICAgIH0KKyAgICBQeU1lbV9GcmVlKG1zZy5tc2dfaW92KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmRhdGFidWZzOyBpKyspIHsKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmZGF0YWJ1ZnNbaV0pOworICAgIH0KKyAgICBQeU1lbV9GcmVlKGRhdGFidWZzKTsKKyAgICByZXR1cm4gcmV0dmFsOworfQorCitQeURvY19TVFJWQVIoc2VuZG1zZ19hZmFsZ19kb2MsCisic2VuZG1zZ19hZmFsZyhbbXNnXSwgKiwgb3BbLCBpdlssIGFzc29jbGVuWywgZmxhZ3M9TVNHX01PUkVdXV0pXG5cCitcblwKK1NldCBvcGVyYXRpb24gbW9kZSwgSVYgYW5kIGxlbmd0aCBvZiBhc3NvY2lhdGVkIGRhdGEgZm9yIGFuIEFGX0FMR1xuXAorb3BlcmF0aW9uIHNvY2tldC4iKTsKKyNlbmRpZgogCiAvKiBzLnNodXRkb3duKGhvdykgbWV0aG9kICovCiAKQEAgLTQwMzYsNiArNDM5MywxNyBAQAogICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICBjYXNlIFNJT19MT09QQkFDS19GQVNUX1BBVEg6IHsKKyAgICAgICAgdW5zaWduZWQgaW50IG9wdGlvbjsKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZywgImtJOmlvY3RsIiwgJmNtZCwgJm9wdGlvbikpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgaWYgKFdTQUlvY3RsKHMtPnNvY2tfZmQsIGNtZCwgJm9wdGlvbiwgc2l6ZW9mKG9wdGlvbiksCisgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgMCwgJnJlY3YsIE5VTEwsIE5VTEwpID09IFNPQ0tFVF9FUlJPUikgeworICAgICAgICAgICAgcmV0dXJuIHNldF9lcnJvcigpOworICAgICAgICB9CisgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhyZWN2KTsgfQorI2VuZGlmCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsICJpbnZhbGlkIGlvY3RsIGNvbW1hbmQgJWQiLCBjbWQpOwogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQwNDYsNyArNDQxNCw4IEBACiBcblwKIENvbnRyb2wgdGhlIHNvY2tldCB3aXRoIFdTQUlvY3RsIHN5c2NhbGwuIEN1cnJlbnRseSBzdXBwb3J0ZWQgJ2NtZCcgdmFsdWVzIGFyZVxuXAogU0lPX1JDVkFMTDogICdvcHRpb24nIG11c3QgYmUgb25lIG9mIHRoZSBzb2NrZXQuUkNWQUxMXyogY29uc3RhbnRzLlxuXAotU0lPX0tFRVBBTElWRV9WQUxTOiAgJ29wdGlvbicgaXMgYSB0dXBsZSBvZiAob25vZmYsIHRpbWVvdXQsIGludGVydmFsKS4iKTsKK1NJT19LRUVQQUxJVkVfVkFMUzogICdvcHRpb24nIGlzIGEgdHVwbGUgb2YgKG9ub2ZmLCB0aW1lb3V0LCBpbnRlcnZhbCkuXG5cCitTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIOiAnb3B0aW9uJyBpcyBhIGJvb2xlYW4gdmFsdWUsIGFuZCBpcyBkaXNhYmxlZCBieSBkZWZhdWx0Iik7CiAjZW5kaWYKIAogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTQxNDUsNiArNDUxNCwxMCBAQAogICAgIHsic2VuZG1zZyIsICAgICAgICAgICAoUHlDRnVuY3Rpb24pc29ja19zZW5kbXNnLCBNRVRIX1ZBUkFSR1MsCiAgICAgICAgICAgICAgICAgICAgICAgc2VuZG1zZ19kb2N9LAogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICB7InNlbmRtc2dfYWZhbGciLCAgICAgKFB5Q0Z1bmN0aW9uKXNvY2tfc2VuZG1zZ19hZmFsZywgTUVUSF9WQVJBUkdTIHwgTUVUSF9LRVlXT1JEUywKKyAgICAgICAgICAgICAgICAgICAgICBzZW5kbXNnX2FmYWxnX2RvY30sCisjZW5kaWYKICAgICB7TlVMTCwgICAgICAgICAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCkBAIC00MTY1LDIyICs0NTM4LDQ1IEBACiAgICBGaXJzdCBjbG9zZSB0aGUgZmlsZSBkZXNjcmlwdGlvbi4gKi8KIAogc3RhdGljIHZvaWQKK3NvY2tfZmluYWxpemUoUHlTb2NrZXRTb2NrT2JqZWN0ICpzKQoreworICAgIFNPQ0tFVF9UIGZkOworICAgIFB5T2JqZWN0ICplcnJvcl90eXBlLCAqZXJyb3JfdmFsdWUsICplcnJvcl90cmFjZWJhY2s7CisKKyAgICAvKiBTYXZlIHRoZSBjdXJyZW50IGV4Y2VwdGlvbiwgaWYgYW55LiAqLworICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgaWYgKHMtPnNvY2tfZmQgIT0gSU5WQUxJRF9TT0NLRVQpIHsKKyAgICAgICAgaWYgKFB5RXJyX1Jlc291cmNlV2FybmluZygoUHlPYmplY3QgKilzLCAxLCAidW5jbG9zZWQgJVIiLCBzKSkgeworICAgICAgICAgICAgLyogU3B1cmlvdXMgZXJyb3JzIGNhbiBhcHBlYXIgYXQgc2h1dGRvd24gKi8KKyAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1dhcm5pbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKChQeU9iamVjdCAqKXMpOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgLyogT25seSBjbG9zZSB0aGUgc29ja2V0ICphZnRlciogbG9nZ2luZyB0aGUgUmVzb3VyY2VXYXJuaW5nIHdhcm5pbmcKKyAgICAgICAgICAgdG8gYWxsb3cgdGhlIGxvZ2dlciB0byBjYWxsIHNvY2tldCBtZXRob2RzIGxpa2UKKyAgICAgICAgICAgc29ja2V0LmdldHNvY2tuYW1lKCkuIElmIHRoZSBzb2NrZXQgaXMgY2xvc2VkIGJlZm9yZSwgc29ja2V0CisgICAgICAgICAgIG1ldGhvZHMgZmFpbHMgd2l0aCB0aGUgRUJBREYgZXJyb3IuICovCisgICAgICAgIGZkID0gcy0+c29ja19mZDsKKyAgICAgICAgcy0+c29ja19mZCA9IElOVkFMSURfU09DS0VUOworCisgICAgICAgIC8qIFdlIGRvIG5vdCB3YW50IHRvIHJldHJ5IHVwb24gRUlOVFI6IHNlZSBzb2NrX2Nsb3NlKCkgKi8KKyAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUworICAgICAgICAodm9pZCkgU09DS0VUQ0xPU0UoZmQpOworICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUworICAgIH0KKworICAgIC8qIFJlc3RvcmUgdGhlIHNhdmVkIGV4Y2VwdGlvbi4gKi8KKyAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworfQorCitzdGF0aWMgdm9pZAogc29ja19kZWFsbG9jKFB5U29ja2V0U29ja09iamVjdCAqcykKIHsKLSAgICBpZiAocy0+c29ja19mZCAhPSBJTlZBTElEX1NPQ0tFVCkgewotICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7Ci0gICAgICAgIFB5X3NzaXplX3Qgb2xkX3JlZmNvdW50ID0gUHlfUkVGQ05UKHMpOwotICAgICAgICArK1B5X1JFRkNOVChzKTsKLSAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKLSAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfUmVzb3VyY2VXYXJuaW5nLCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidW5jbG9zZWQgJVIiLCBzKSkKLSAgICAgICAgICAgIC8qIFNwdXJpb3VzIGVycm9ycyBjYW4gYXBwZWFyIGF0IHNodXRkb3duICovCi0gICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19XYXJuaW5nKSkKLSAgICAgICAgICAgICAgICBQeUVycl9Xcml0ZVVucmFpc2FibGUoKFB5T2JqZWN0ICopIHMpOwotICAgICAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsLCB0Yik7Ci0gICAgICAgICh2b2lkKSBTT0NLRVRDTE9TRShzLT5zb2NrX2ZkKTsKLSAgICAgICAgUHlfUkVGQ05UKHMpID0gb2xkX3JlZmNvdW50OwotICAgIH0KKyAgICBpZiAoUHlPYmplY3RfQ2FsbEZpbmFsaXplckZyb21EZWFsbG9jKChQeU9iamVjdCAqKXMpIDwgMCkKKyAgICAgICAgcmV0dXJuOworCiAgICAgUHlfVFlQRShzKS0+dHBfZnJlZSgoUHlPYmplY3QgKilzKTsKIH0KIApAQCAtNDM2OCw3ICs0NzY0LDEwIEBACiAgICAgICAgIH0KICNlbmRpZgogICAgIH0KLSAgICBpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pOworICAgIGlmIChpbml0X3NvY2tvYmplY3QocywgZmQsIGZhbWlseSwgdHlwZSwgcHJvdG8pID09IC0xKSB7CisgICAgICAgIFNPQ0tFVENMT1NFKGZkKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KIAogICAgIHJldHVybiAwOwogCkBAIC00Mzk3LDcgKzQ3OTYsOCBAQAogICAgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyLCAgICAgICAgICAgICAgICAgICAgLyogdHBfZ2V0YXR0cm8gKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3NldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hc19idWZmZXIgKi8KLSAgICBQeV9UUEZMQUdTX0RFRkFVTFQgfCBQeV9UUEZMQUdTX0JBU0VUWVBFLCAvKiB0cF9mbGFncyAqLworICAgIFB5X1RQRkxBR1NfREVGQVVMVCB8IFB5X1RQRkxBR1NfQkFTRVRZUEUKKyAgICAgICAgfCBQeV9UUEZMQUdTX0hBVkVfRklOQUxJWkUsICAgICAgICAgICAgIC8qIHRwX2ZsYWdzICovCiAgICAgc29ja19kb2MsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kb2MgKi8KICAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3RyYXZlcnNlICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9jbGVhciAqLwpAQCAtNDQxNyw2ICs0ODE3LDE1IEBACiAgICAgUHlUeXBlX0dlbmVyaWNBbGxvYywgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9hbGxvYyAqLwogICAgIHNvY2tfbmV3LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfbmV3ICovCiAgICAgUHlPYmplY3RfRGVsLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9mcmVlICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9pc19nYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYmFzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX21ybyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2FjaGUgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3N1YmNsYXNzZXMgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3dlYWtsaXN0ICovCisgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9kZWwgKi8KKyAgICAwLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHRwX3ZlcnNpb25fdGFnICovCisgICAgKGRlc3RydWN0b3Ipc29ja19maW5hbGl6ZSwgICAgICAgICAgICAgICAgICAvKiB0cF9maW5hbGl6ZSAqLwogfTsKIAogCkBAIC01NDUyLDEwICs1ODYxLDYgQEAKICAgICB9IGVsc2UgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcocmV0dmFsKTsKICAgICB9Ci0KLSAgICAvKiBOT1RSRUFDSEVEICovCi0gICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgImludmFsaWQgaGFuZGxpbmcgb2YgaW5ldF9udG9wIik7Ci0gICAgcmV0dXJuIE5VTEw7CiB9CiAKICNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykKQEAgLTYxODksOSArNjU5NCw2IEBACiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfVU5TUEVDKTsKICNlbmRpZgogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0lORVQpOwotI2lmZGVmIEFGX0lORVQ2Ci0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUZfSU5FVDYpOwotI2VuZGlmIC8qIEFGX0lORVQ2ICovCiAjaWYgZGVmaW5lZChBRl9VTklYKQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX1VOSVgpOwogI2VuZGlmIC8qIEFGX1VOSVggKi8KQEAgLTYyMjIsNiArNjYyNCw5IEBACiAgICAgLyogUmVzZXJ2ZWQgZm9yIFdlcm5lcidzIEFUTSAqLwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFGX0FBTDUpOwogI2VuZGlmCisjaWZkZWYgSEFWRV9TT0NLQUREUl9BTEcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9BTEcpOyAvKiBMaW51eCBjcnlwdG8gKi8KKyNlbmRpZgogI2lmZGVmIEFGX1gyNQogICAgIC8qIFJlc2VydmVkIGZvciBYLjI1IHByb2plY3QgKi8KICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBRl9YMjUpOwpAQCAtNjI4Myw2ICs2Njg4LDkgQEAKICNpZmRlZiBORVRMSU5LX1RBUEJBU0UKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX1RBUEJBU0UpOwogI2VuZGlmCisjaWZkZWYgTkVUTElOS19DUllQVE8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBORVRMSU5LX0NSWVBUTyk7CisjZW5kaWYKICNlbmRpZiAvKiBBRl9ORVRMSU5LICovCiAjaWZkZWYgQUZfUk9VVEUKICAgICAvKiBBbGlhcyB0byBlbXVsYXRlIDQuNEJTRCAqLwpAQCAtNjQzNiwxMSArNjg0NCwzMCBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFRJUENfVE9QX1NSVik7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfU09DS0FERFJfQUxHCisgICAgLyogU29ja2V0IG9wdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0tFWSk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9JVik7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9PUCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX1NFVF9BRUFEX0FTU09DTEVOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfU0VUX0FFQURfQVVUSFNJWkUpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19TRVRfUFVCS0VZKTsKKworICAgIC8qIE9wZXJhdGlvbnMgKi8KKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfREVDUllQVCk7CisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQUxHX09QX0VOQ1JZUFQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIEFMR19PUF9TSUdOKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBBTEdfT1BfVkVSSUZZKTsKKyNlbmRpZgorCiAgICAgLyogU29ja2V0IHR5cGVzICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TVFJFQU0pOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPQ0tfREdSQU0pOwogLyogV2UgaGF2ZSBpbmNvbXBsZXRlIHNvY2tldCBzdXBwb3J0LiAqLworI2lmZGVmIFNPQ0tfUkFXCisgICAgLyogU09DS19SQVcgaXMgbWFya2VkIGFzIG9wdGlvbmFsIGluIHRoZSBQT1NJWCBzcGVjaWZpY2F0aW9uICovCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SQVcpOworI2VuZGlmCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19TRVFQQUNLRVQpOwogI2lmIGRlZmluZWQoU09DS19SRE0pCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09DS19SRE0pOwpAQCAtNjQ4Myw5ICs2OTEwLDExIEBACiAjaWZkZWYgIFNPX09PQklOTElORQogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX09PQklOTElORSk7CiAjZW5kaWYKKyNpZm5kZWYgX19HTlVfXwogI2lmZGVmICBTT19SRVVTRVBPUlQKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19SRVVTRVBPUlQpOwogI2VuZGlmCisjZW5kaWYKICNpZmRlZiAgU09fU05EQlVGCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fU05EQlVGKTsKICNlbmRpZgpAQCAtNjUyMiw2ICs2OTUxLDEyIEBACiAjaWZkZWYgIExPQ0FMX1BFRVJDUkVECiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgTE9DQUxfUEVFUkNSRUQpOwogI2VuZGlmCisjaWZkZWYgIFNPX1BBU1NTRUMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19QQVNTU0VDKTsKKyNlbmRpZgorI2lmZGVmICBTT19QRUVSU0VDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fUEVFUlNFQyk7CisjZW5kaWYKICNpZmRlZiAgU09fQklORFRPREVWSUNFCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09fQklORFRPREVWSUNFKTsKICNlbmRpZgpAQCAtNjUzMSw2ICs2OTY2LDEyIEBACiAjaWZkZWYgIFNPX01BUksKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBTT19NQVJLKTsKICNlbmRpZgorI2lmZGVmIFNPX0RPTUFJTgorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX0RPTUFJTik7CisjZW5kaWYKKyNpZmRlZiBTT19QUk9UT0NPTAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPX1BST1RPQ09MKTsKKyNlbmRpZgogCiAgICAgLyogTWF4aW11bSBudW1iZXIgb2YgY29ubmVjdGlvbnMgZm9yICJsaXN0ZW4iICovCiAjaWZkZWYgIFNPTUFYQ09OTgpAQCAtNjY4OSw2ICs3MTMwLDkgQEAKICNpZmRlZiBTT0xfUkRTCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgU09MX1JEUyk7CiAjZW5kaWYKKyNpZmRlZiBIQVZFX1NPQ0tBRERSX0FMRworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIFNPTF9BTEcpOworI2VuZGlmCiAjaWZkZWYgUkRTX0NBTkNFTF9TRU5UX1RPCiAgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgUkRTX0NBTkNFTF9TRU5UX1RPKTsKICNlbmRpZgpAQCAtNzIyNiw4ICs3NjcwLDE2IEBACiAKICNpZmRlZiBTSU9fUkNWQUxMCiAgICAgewotICAgICAgICBEV09SRCBjb2Rlc1tdID0ge1NJT19SQ1ZBTEwsIFNJT19LRUVQQUxJVkVfVkFMU307Ci0gICAgICAgIGNvbnN0IGNoYXIgKm5hbWVzW10gPSB7IlNJT19SQ1ZBTEwiLCAiU0lPX0tFRVBBTElWRV9WQUxTIn07CisgICAgICAgIERXT1JEIGNvZGVzW10gPSB7U0lPX1JDVkFMTCwgU0lPX0tFRVBBTElWRV9WQUxTLAorI2lmIGRlZmluZWQoU0lPX0xPT1BCQUNLX0ZBU1RfUEFUSCkKKyAgICAgICAgICAgIFNJT19MT09QQkFDS19GQVNUX1BBVEgKKyNlbmRpZgorICAgICAgICB9OworICAgICAgICBjb25zdCBjaGFyICpuYW1lc1tdID0geyJTSU9fUkNWQUxMIiwgIlNJT19LRUVQQUxJVkVfVkFMUyIsCisjaWYgZGVmaW5lZChTSU9fTE9PUEJBQ0tfRkFTVF9QQVRIKQorICAgICAgICAgICAgIlNJT19MT09QQkFDS19GQVNUX1BBVEgiCisjZW5kaWYKKyAgICAgICAgfTsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvcihpID0gMDsgaTxQeV9BUlJBWV9MRU5HVEgoY29kZXMpOyArK2kpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp0bXA7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3Nwd2Rtb2R1bGUuYyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCmluZGV4IDRiOWYzY2QuLjU1NmE3MTUgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvc3B3ZG1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3B3ZG1vZHVsZS5jCkBAIC0xMzcsNyArMTM3LDEwIEBACiAgICAgaWYgKFB5Qnl0ZXNfQXNTdHJpbmdBbmRTaXplKGJ5dGVzLCAmbmFtZSwgTlVMTCkgPT0gLTEpCiAgICAgICAgIGdvdG8gb3V0OwogICAgIGlmICgocCA9IGdldHNwbmFtKG5hbWUpKSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19LZXlFcnJvciwgImdldHNwbmFtKCk6IG5hbWUgbm90IGZvdW5kIik7CisgICAgICAgIGlmIChlcnJubyAhPSAwKQorICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfS2V5RXJyb3IsICJnZXRzcG5hbSgpOiBuYW1lIG5vdCBmb3VuZCIpOwogICAgICAgICBnb3RvIG91dDsKICAgICB9CiAgICAgcmV0dmFsID0gbWtzcGVudChwKTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvc3JlX2xpYi5oIGIvTW9kdWxlcy9zcmVfbGliLmgKaW5kZXggMTI4YzcxZS4uMDg2NWZjNiAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zcmVfbGliLmgKKysrIGIvTW9kdWxlcy9zcmVfbGliLmgKQEAgLTM2NywxNCArMzY3LDEyIEBACiAjZGVmaW5lIFJFVFVSTl9PTl9GQUlMVVJFKGkpIFwKICAgICBkbyB7IFJFVFVSTl9PTl9FUlJPUihpKTsgaWYgKGkgPT0gMCkgUkVUVVJOX0ZBSUxVUkU7IH0gd2hpbGUgKDApCiAKLSNkZWZpbmUgU0ZZKHgpICN4Ci0KICNkZWZpbmUgREFUQV9TVEFDS19BTExPQyhzdGF0ZSwgdHlwZSwgcHRyKSBcCiBkbyB7IFwKICAgICBhbGxvY19wb3MgPSBzdGF0ZS0+ZGF0YV9zdGFja19iYXNlOyBcCiAgICAgVFJBQ0UoKCJhbGxvY2F0aW5nICVzIGluICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQgIiBcCiAgICAgICAgICAgICIoJSIgUFlfRk9STUFUX1NJWkVfVCAiZClcbiIsIFwKLSAgICAgICAgICAgU0ZZKHR5cGUpLCBhbGxvY19wb3MsIHNpemVvZih0eXBlKSkpOyBcCisgICAgICAgICAgIFB5X1NUUklOR0lGWSh0eXBlKSwgYWxsb2NfcG9zLCBzaXplb2YodHlwZSkpKTsgXAogICAgIGlmIChzaXplb2YodHlwZSkgPiBzdGF0ZS0+ZGF0YV9zdGFja19zaXplIC0gYWxsb2NfcG9zKSB7IFwKICAgICAgICAgaW50IGogPSBkYXRhX3N0YWNrX2dyb3coc3RhdGUsIHNpemVvZih0eXBlKSk7IFwKICAgICAgICAgaWYgKGogPCAwKSByZXR1cm4gajsgXApAQCAtMzg3LDcgKzM4NSw3IEBACiAKICNkZWZpbmUgREFUQV9TVEFDS19MT09LVVBfQVQoc3RhdGUsIHR5cGUsIHB0ciwgcG9zKSBcCiBkbyB7IFwKLSAgICBUUkFDRSgoImxvb2tpbmcgdXAgJXMgYXQgJSIgUFlfRk9STUFUX1NJWkVfVCAiZFxuIiwgU0ZZKHR5cGUpLCBwb3MpKTsgXAorICAgIFRSQUNFKCgibG9va2luZyB1cCAlcyBhdCAlIiBQWV9GT1JNQVRfU0laRV9UICJkXG4iLCBQeV9TVFJJTkdJRlkodHlwZSksIHBvcykpOyBcCiAgICAgcHRyID0gKHR5cGUqKShzdGF0ZS0+ZGF0YV9zdGFjaytwb3MpOyBcCiB9IHdoaWxlICgwKQogCkBAIC01MzEsNyArNTI5LDcgQEAKICAgICBpZiAoY3R4LT5wYXR0ZXJuWzBdID09IFNSRV9PUF9JTkZPKSB7CiAgICAgICAgIC8qIG9wdGltaXphdGlvbiBpbmZvIGJsb2NrICovCiAgICAgICAgIC8qIDxJTkZPPiA8MT1za2lwPiA8Mj1mbGFncz4gPDM9bWluPiAuLi4gKi8KLSAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAoUHlfdWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKKyAgICAgICAgaWYgKGN0eC0+cGF0dGVyblszXSAmJiAodWludHB0cl90KShlbmQgLSBjdHgtPnB0cikgPCBjdHgtPnBhdHRlcm5bM10pIHsKICAgICAgICAgICAgIFRSQUNFKCgicmVqZWN0IChnb3QgJSIgUFlfRk9STUFUX1NJWkVfVCAiZCBjaGFycywgIgogICAgICAgICAgICAgICAgICAgICJuZWVkICUiIFBZX0ZPUk1BVF9TSVpFX1QgImQpXG4iLAogICAgICAgICAgICAgICAgICAgIGVuZCAtIGN0eC0+cHRyLCAoUHlfc3NpemVfdCkgY3R4LT5wYXR0ZXJuWzNdKSk7CkBAIC0xMjU2LDcgKzEyNTQsMzIgQEAKICAgICAgICAgICAgcHJlZml4LCBwcmVmaXhfbGVuLCBwcmVmaXhfc2tpcCkpOwogICAgIFRSQUNFKCgiY2hhcnNldCA9ICVwXG4iLCBjaGFyc2V0KSk7CiAKLSNpZiBkZWZpbmVkKFVTRV9GQVNUX1NFQVJDSCkKKyAgICBpZiAocHJlZml4X2xlbiA9PSAxKSB7CisgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBsaXRlcmFsIGNoYXJhY3RlciAqLworICAgICAgICBTUkVfQ0hBUiBjID0gKFNSRV9DSEFSKSBwcmVmaXhbMF07CisjaWYgU0laRU9GX1NSRV9DSEFSIDwgNAorICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHByZWZpeFswXSkKKyAgICAgICAgICAgIHJldHVybiAwOyAvKiBsaXRlcmFsIGNhbid0IG1hdGNoOiBkb2Vzbid0IGZpdCBpbiBjaGFyIHdpZHRoICovCisjZW5kaWYKKyAgICAgICAgZW5kID0gKFNSRV9DSEFSICopc3RhdGUtPmVuZDsKKyAgICAgICAgd2hpbGUgKHB0ciA8IGVuZCkgeworICAgICAgICAgICAgd2hpbGUgKCpwdHIgIT0gYykgeworICAgICAgICAgICAgICAgIGlmICgrK3B0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgVFJBQ0UoKCJ8JXB8JXB8U0VBUkNIIExJVEVSQUxcbiIsIHBhdHRlcm4sIHB0cikpOworICAgICAgICAgICAgc3RhdGUtPnN0YXJ0ID0gcHRyOworICAgICAgICAgICAgc3RhdGUtPnB0ciA9IHB0ciArIHByZWZpeF9za2lwOworICAgICAgICAgICAgaWYgKGZsYWdzICYgU1JFX0lORk9fTElURVJBTCkKKyAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogd2UgZ290IGFsbCBvZiBpdCAqLworICAgICAgICAgICAgc3RhdHVzID0gU1JFKG1hdGNoKShzdGF0ZSwgcGF0dGVybiArIDIqcHJlZml4X3NraXAsIDApOworICAgICAgICAgICAgaWYgKHN0YXR1cyAhPSAwKQorICAgICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICAgICArK3B0cjsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKICAgICBpZiAocHJlZml4X2xlbiA+IDEpIHsKICAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGtub3duIHByZWZpeC4gIHVzZSB0aGUgb3ZlcmxhcAogICAgICAgICAgICB0YWJsZSB0byBza2lwIGZvcndhcmQgYXMgZmFzdCBhcyB3ZSBwb3NzaWJseSBjYW4gKi8KQEAgLTEzMDUsMzIgKzEzMjgsOCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSNlbmRpZgogCi0gICAgaWYgKHBhdHRlcm5bMF0gPT0gU1JFX09QX0xJVEVSQUwpIHsKLSAgICAgICAgLyogcGF0dGVybiBzdGFydHMgd2l0aCBhIGxpdGVyYWwgY2hhcmFjdGVyLiAgdGhpcyBpcyB1c2VkCi0gICAgICAgICAgIGZvciBzaG9ydCBwcmVmaXhlcywgYW5kIGlmIGZhc3Qgc2VhcmNoIGlzIGRpc2FibGVkICovCi0gICAgICAgIFNSRV9DSEFSIGMgPSAoU1JFX0NIQVIpIHBhdHRlcm5bMV07Ci0jaWYgU0laRU9GX1NSRV9DSEFSIDwgNAotICAgICAgICBpZiAoKFNSRV9DT0RFKSBjICE9IHBhdHRlcm5bMV0pCi0gICAgICAgICAgICByZXR1cm4gMDsgLyogbGl0ZXJhbCBjYW4ndCBtYXRjaDogZG9lc24ndCBmaXQgaW4gY2hhciB3aWR0aCAqLwotI2VuZGlmCi0gICAgICAgIGVuZCA9IChTUkVfQ0hBUiAqKXN0YXRlLT5lbmQ7Ci0gICAgICAgIHdoaWxlIChwdHIgPCBlbmQpIHsKLSAgICAgICAgICAgIHdoaWxlICgqcHRyICE9IGMpIHsKLSAgICAgICAgICAgICAgICBpZiAoKytwdHIgPj0gZW5kKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFRSQUNFKCgifCVwfCVwfFNFQVJDSCBMSVRFUkFMXG4iLCBwYXR0ZXJuLCBwdHIpKTsKLSAgICAgICAgICAgIHN0YXRlLT5zdGFydCA9IHB0cjsKLSAgICAgICAgICAgIHN0YXRlLT5wdHIgPSArK3B0cjsKLSAgICAgICAgICAgIGlmIChmbGFncyAmIFNSRV9JTkZPX0xJVEVSQUwpCi0gICAgICAgICAgICAgICAgcmV0dXJuIDE7IC8qIHdlIGdvdCBhbGwgb2YgaXQgKi8KLSAgICAgICAgICAgIHN0YXR1cyA9IFNSRShtYXRjaCkoc3RhdGUsIHBhdHRlcm4gKyAyLCAwKTsKLSAgICAgICAgICAgIGlmIChzdGF0dXMgIT0gMCkKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoY2hhcnNldCkgeworICAgIGlmIChjaGFyc2V0KSB7CiAgICAgICAgIC8qIHBhdHRlcm4gc3RhcnRzIHdpdGggYSBjaGFyYWN0ZXIgZnJvbSBhIGtub3duIHNldCAqLwogICAgICAgICBlbmQgPSAoU1JFX0NIQVIgKilzdGF0ZS0+ZW5kOwogICAgICAgICBmb3IgKDs7KSB7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMgYi9Nb2R1bGVzL3N5bXRhYmxlbW9kdWxlLmMKaW5kZXggZjg0Y2M3OC4uMzRhNmZjNSAxMDA2NDQKLS0tIGEvTW9kdWxlcy9zeW10YWJsZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvc3ltdGFibGVtb2R1bGUuYwpAQCAtNzksNiArNzksNyBAQAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9GUkVFX0NMQVNTKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfSU1QT1JUKTsKICAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBERUZfQk9VTkQpOworICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIERFRl9BTk5PVCk7CiAKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiVFlQRV9GVU5DVElPTiIsIEZ1bmN0aW9uQmxvY2spOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJUWVBFX0NMQVNTIiwgQ2xhc3NCbG9jayk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3RpbWVtb2R1bGUuYyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCmluZGV4IGQyY2FhY2QuLmYwNzA4MzMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdGltZW1vZHVsZS5jCisrKyBiL01vZHVsZXMvdGltZW1vZHVsZS5jCkBAIC0xNjAsNyArMTYwLDkgQEAKICJjbG9ja19nZXR0aW1lKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgdGltZSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKKyNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLwogCisjaWZkZWYgSEFWRV9DTE9DS19TRVRUSU1FCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19zZXR0aW1lKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTE5MSw3ICsxOTMsOSBAQAogImNsb2NrX3NldHRpbWUoY2xrX2lkLCB0aW1lKVxuXAogXG5cCiBTZXQgdGhlIHRpbWUgb2YgdGhlIHNwZWNpZmllZCBjbG9jayBjbGtfaWQuIik7CisjZW5kaWYgICAvKiBIQVZFX0NMT0NLX1NFVFRJTUUgKi8KIAorI2lmZGVmIEhBVkVfQ0xPQ0tfR0VUUkVTCiBzdGF0aWMgUHlPYmplY3QgKgogdGltZV9jbG9ja19nZXRyZXMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewpAQCAtMjE1LDcgKzIxOSw3IEBACiAiY2xvY2tfZ2V0cmVzKGNsa19pZCkgLT4gZmxvYXRpbmcgcG9pbnQgbnVtYmVyXG5cCiBcblwKIFJldHVybiB0aGUgcmVzb2x1dGlvbiAocHJlY2lzaW9uKSBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrIGNsa19pZC4iKTsKLSNlbmRpZiAgIC8qIEhBVkVfQ0xPQ0tfR0VUVElNRSAqLworI2VuZGlmICAgLyogSEFWRV9DTE9DS19HRVRSRVMgKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIHRpbWVfc2xlZXAoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpvYmopCkBAIC0yNTAsMTAgKzI1NCw4IEBACiAgICAgeyJ0bV93ZGF5IiwgImRheSBvZiB3ZWVrLCByYW5nZSBbMCwgNl0sIE1vbmRheSBpcyAwIn0sCiAgICAgeyJ0bV95ZGF5IiwgImRheSBvZiB5ZWFyLCByYW5nZSBbMSwgMzY2XSJ9LAogICAgIHsidG1faXNkc3QiLCAiMSBpZiBzdW1tZXIgdGltZSBpcyBpbiBlZmZlY3QsIDAgaWYgbm90LCBhbmQgLTEgaWYgdW5rbm93biJ9LAotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICB7InRtX3pvbmUiLCAiYWJicmV2aWF0aW9uIG9mIHRpbWV6b25lIG5hbWUifSwKICAgICB7InRtX2dtdG9mZiIsICJvZmZzZXQgZnJvbSBVVEMgaW4gc2Vjb25kcyJ9LAotI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICAgICB7MH0KIH07CiAKQEAgLTI3NSw3ICsyNzcsMTEgQEAKIAogCiBzdGF0aWMgUHlPYmplY3QgKgotdG10b3R1cGxlKHN0cnVjdCB0bSAqcCkKK3RtdG90dXBsZShzdHJ1Y3QgdG0gKnAKKyNpZm5kZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgICAgICAsIGNvbnN0IGNoYXIgKnpvbmUsIGludCBnbXRvZmYKKyNlbmRpZgorKQogewogICAgIFB5T2JqZWN0ICp2ID0gUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcoJlN0cnVjdFRpbWVUeXBlKTsKICAgICBpZiAodiA9PSBOVUxMKQpAQCAtMjk2LDYgKzMwMiwxMCBAQAogICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0odiwgOSwKICAgICAgICAgUHlVbmljb2RlX0RlY29kZUxvY2FsZShwLT50bV96b25lLCAic3Vycm9nYXRlZXNjYXBlIikpOwogICAgIFNFVCgxMCwgcC0+dG1fZ210b2ZmKTsKKyNlbHNlCisgICAgUHlTdHJ1Y3RTZXF1ZW5jZV9TRVRfSVRFTSh2LCA5LAorICAgICAgICBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHpvbmUsICJzdXJyb2dhdGVlc2NhcGUiKSk7CisgICAgU0VUKDEwLCBnbXRvZmYpOwogI2VuZGlmIC8qIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUgKi8KICN1bmRlZiBTRVQKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewpAQCAtMzExLDcgKzMyMSw3IEBACiAgICBSZXR1cm5zIG5vbi16ZXJvIG9uIHN1Y2Nlc3MgKHBhcmFsbGVscyBQeUFyZ19QYXJzZVR1cGxlKS4KICovCiBzdGF0aWMgaW50Ci1wYXJzZV90aW1lX3RfYXJncyhQeU9iamVjdCAqYXJncywgY2hhciAqZm9ybWF0LCB0aW1lX3QgKnB3aGVuKQorcGFyc2VfdGltZV90X2FyZ3MoUHlPYmplY3QgKmFyZ3MsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdGltZV90ICpwd2hlbikKIHsKICAgICBQeU9iamVjdCAqb3QgPSBOVUxMOwogICAgIHRpbWVfdCB3aGVudDsKQEAgLTMzMywyNCArMzQzLDM0IEBACiB0aW1lX2dtdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgdGltZV90IHdoZW47Ci0gICAgc3RydWN0IHRtIGJ1ZiwgKmxvY2FsOworICAgIHN0cnVjdCB0bSBidWY7CiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpnbXRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgZXJybm8gPSAwOwotICAgIGxvY2FsID0gZ210aW1lKCZ3aGVuKTsKLSAgICBpZiAobG9jYWwgPT0gTlVMTCkgewotI2lmZGVmIEVJTlZBTAotICAgICAgICBpZiAoZXJybm8gPT0gMCkKLSAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOwotI2VuZGlmCi0gICAgICAgIHJldHVybiBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgfQotICAgIGJ1ZiA9ICpsb2NhbDsKKyAgICBpZiAoX1B5VGltZV9nbXRpbWUod2hlbiwgJmJ1ZikgIT0gMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1Zik7CisjZWxzZQorICAgIHJldHVybiB0bXRvdHVwbGUoJmJ1ZiwgIlVUQyIsIDApOworI2VuZGlmCiB9CiAKKyNpZm5kZWYgSEFWRV9USU1FR00KK3N0YXRpYyB0aW1lX3QKK3RpbWVnbShzdHJ1Y3QgdG0gKnApCit7CisgICAgLyogWFhYOiB0aGUgZm9sbG93aW5nIGltcGxlbWVudGF0aW9uIHdpbGwgbm90IHdvcmsgZm9yIHRtX3llYXIgPCAxOTcwLgorICAgICAgIGJ1dCBpdCBpcyBsaWtlbHkgdGhhdCBwbGF0Zm9ybXMgdGhhdCBkb24ndCBoYXZlIHRpbWVnbSBkbyBub3Qgc3VwcG9ydAorICAgICAgIG5lZ2F0aXZlIHRpbWVzdGFtcHMgYW55d2F5cy4gKi8KKyAgICByZXR1cm4gcC0+dG1fc2VjICsgcC0+dG1fbWluKjYwICsgcC0+dG1faG91ciozNjAwICsgcC0+dG1feWRheSo4NjQwMCArCisgICAgICAgIChwLT50bV95ZWFyLTcwKSozMTUzNjAwMCArICgocC0+dG1feWVhci02OSkvNCkqODY0MDAgLQorICAgICAgICAoKHAtPnRtX3llYXItMSkvMTAwKSo4NjQwMCArICgocC0+dG1feWVhcisyOTkpLzQwMCkqODY0MDA7Cit9CisjZW5kaWYKKwogUHlEb2NfU1RSVkFSKGdtdGltZV9kb2MsCiAiZ210aW1lKFtzZWNvbmRzXSkgLT4gKHRtX3llYXIsIHRtX21vbiwgdG1fbWRheSwgdG1faG91ciwgdG1fbWluLFxuXAogICAgICAgICAgICAgICAgICAgICAgICB0bV9zZWMsIHRtX3dkYXksIHRtX3lkYXksIHRtX2lzZHN0KVxuXApAQCAtMzYxLDI2ICszODEsNiBAQAogSWYgdGhlIHBsYXRmb3JtIHN1cHBvcnRzIHRoZSB0bV9nbXRvZmYgYW5kIHRtX3pvbmUsIHRoZXkgYXJlIGF2YWlsYWJsZSBhc1xuXAogYXR0cmlidXRlcyBvbmx5LiIpOwogCi1zdGF0aWMgaW50Ci1weWxvY2FsdGltZSh0aW1lX3QgKnRpbWVwLCBzdHJ1Y3QgdG0gKnJlc3VsdCkKLXsKLSAgICBzdHJ1Y3QgdG0gKmxvY2FsOwotCi0gICAgYXNzZXJ0ICh0aW1lcCAhPSBOVUxMKTsKLSAgICBsb2NhbCA9IGxvY2FsdGltZSh0aW1lcCk7Ci0gICAgaWYgKGxvY2FsID09IE5VTEwpIHsKLSAgICAgICAgLyogdW5jb252ZXJ0aWJsZSB0aW1lICovCi0jaWZkZWYgRUlOVkFMCi0gICAgICAgIGlmIChlcnJubyA9PSAwKQotICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7Ci0jZW5kaWYKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgICpyZXN1bHQgPSAqbG9jYWw7Ci0gICAgcmV0dXJuIDA7Ci19Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiB0aW1lX2xvY2FsdGltZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CkBAIC0zODksOSArMzg5LDIwIEBACiAKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8Tzpsb2NhbHRpbWUiLCAmd2hlbikpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmd2hlbiwgJmJ1ZikgPT0gLTEpCisgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHdoZW4sICZidWYpICE9IDApCiAgICAgICAgIHJldHVybiBOVUxMOworI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICByZXR1cm4gdG10b3R1cGxlKCZidWYpOworI2Vsc2UKKyAgICB7CisgICAgICAgIHN0cnVjdCB0bSBsb2NhbCA9IGJ1ZjsKKyAgICAgICAgY2hhciB6b25lWzEwMF07CisgICAgICAgIGludCBnbXRvZmY7CisgICAgICAgIHN0cmZ0aW1lKHpvbmUsIHNpemVvZihidWYpLCAiJVoiLCAmYnVmKTsKKyAgICAgICAgZ210b2ZmID0gdGltZWdtKCZidWYpIC0gd2hlbjsKKyAgICAgICAgcmV0dXJuIHRtdG90dXBsZSgmbG9jYWwsIHpvbmUsIGdtdG9mZik7CisgICAgfQorI2VuZGlmCiB9CiAKIFB5RG9jX1NUUlZBUihsb2NhbHRpbWVfZG9jLApAQCAtNTczLDcgKzU4NCw3IEBACiAKICAgICBpZiAodHVwID09IE5VTEwpIHsKICAgICAgICAgdGltZV90IHR0ID0gdGltZShOVUxMKTsKLSAgICAgICAgaWYgKHB5bG9jYWx0aW1lKCZ0dCwgJmJ1ZikgPT0gLTEpCisgICAgICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBlbHNlIGlmICghZ2V0dG1hcmcodHVwLCAmYnVmKSB8fCAhY2hlY2t0bSgmYnVmKSkKQEAgLTczMiwxMCArNzQzLDEwIEBACiB7CiAgICAgLyogSW5zcGlyZWQgYnkgT3BlbiBHcm91cCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gYXZhaWxhYmxlIGF0CiAgICAgICogaHR0cDovL3B1YnMub3Blbmdyb3VwLm9yZy9vbmxpbmVwdWJzLzAwOTY5NTM5OS9mdW5jdGlvbnMvYXNjdGltZS5odG1sICovCi0gICAgc3RhdGljIGNoYXIgd2RheV9uYW1lWzddWzRdID0geworICAgIHN0YXRpYyBjb25zdCBjaGFyIHdkYXlfbmFtZVs3XVs0XSA9IHsKICAgICAgICAgIlN1biIsICJNb24iLCAiVHVlIiwgIldlZCIsICJUaHUiLCAiRnJpIiwgIlNhdCIKICAgICB9OwotICAgIHN0YXRpYyBjaGFyIG1vbl9uYW1lWzEyXVs0XSA9IHsKKyAgICBzdGF0aWMgY29uc3QgY2hhciBtb25fbmFtZVsxMl1bNF0gPSB7CiAgICAgICAgICJKYW4iLCAiRmViIiwgIk1hciIsICJBcHIiLCAiTWF5IiwgIkp1biIsCiAgICAgICAgICJKdWwiLCAiQXVnIiwgIlNlcCIsICJPY3QiLCAiTm92IiwgIkRlYyIKICAgICB9OwpAQCAtNzU4LDcgKzc2OSw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmICh0dXAgPT0gTlVMTCkgewogICAgICAgICB0aW1lX3QgdHQgPSB0aW1lKE5VTEwpOwotICAgICAgICBpZiAocHlsb2NhbHRpbWUoJnR0LCAmYnVmKSA9PSAtMSkKKyAgICAgICAgaWYgKF9QeVRpbWVfbG9jYWx0aW1lKHR0LCAmYnVmKSAhPSAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICB9IGVsc2UgaWYgKCFnZXR0bWFyZyh0dXAsICZidWYpIHx8ICFjaGVja3RtKCZidWYpKQpAQCAtNzgwLDcgKzc5MSw3IEBACiAgICAgc3RydWN0IHRtIGJ1ZjsKICAgICBpZiAoIXBhcnNlX3RpbWVfdF9hcmdzKGFyZ3MsICJ8TzpjdGltZSIsICZ0dCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChweWxvY2FsdGltZSgmdHQsICZidWYpID09IC0xKQorICAgIGlmIChfUHlUaW1lX2xvY2FsdGltZSh0dCwgJmJ1ZikgIT0gMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIF9hc2N0aW1lKCZidWYpOwogfQpAQCAtMTAzNCw2ICsxMDQ1LDcgQEAKICAgICB9CiAjZW5kaWYKIAorICAgIC8qIEN1cnJlbnRseSwgUHl0aG9uIDMgcmVxdWlyZXMgY2xvY2soKSB0byBidWlsZDogc2VlIGlzc3VlICMyMjYyNCAqLwogICAgIHJldHVybiBmbG9hdGNsb2NrKGluZm8pOwogI2VuZGlmCiB9CkBAIC0xMTQ1LDYgKzExNTcsMjcgQEAKIEdldCBpbmZvcm1hdGlvbiBvZiB0aGUgc3BlY2lmaWVkIGNsb2NrLiIpOwogCiBzdGF0aWMgdm9pZAorZ2V0X3pvbmUoY2hhciAqem9uZSwgaW50IG4sIHN0cnVjdCB0bSAqcCkKK3sKKyNpZmRlZiBIQVZFX1NUUlVDVF9UTV9UTV9aT05FCisgICAgc3RybmNweSh6b25lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCBuKTsKKyNlbHNlCisgICAgdHpzZXQoKTsKKyAgICBzdHJmdGltZSh6b25lLCBuLCAiJVoiLCBwKTsKKyNlbmRpZgorfQorCitzdGF0aWMgaW50CitnZXRfZ210b2ZmKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnApCit7CisjaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQorICAgIHJldHVybiBwLT50bV9nbXRvZmY7CisjZWxzZQorICAgIHJldHVybiB0aW1lZ20ocCkgLSB0OworI2VuZGlmCit9CisKK3N0YXRpYyB2b2lkCiBQeUluaXRfdGltZXpvbmUoUHlPYmplY3QgKm0pIHsKICAgICAvKiBUaGlzIGNvZGUgbW92ZWQgZnJvbSBQeUluaXRfdGltZSB3aG9sZXNhbGUgdG8gYWxsb3cgY2FsbGluZyBpdCBmcm9tCiAgICAgdGltZV90enNldC4gSW4gdGhlIGZ1dHVyZSwgc29tZSBwYXJ0cyBvZiBpdCBjYW4gYmUgbW92ZWQgYmFjawpAQCAtMTE3NiwyMiArMTIwOSwyMSBAQAogICAgIG90ejEgPSBQeVVuaWNvZGVfRGVjb2RlTG9jYWxlKHR6bmFtZVsxXSwgInN1cnJvZ2F0ZWVzY2FwZSIpOwogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAidHpuYW1lIiwgUHlfQnVpbGRWYWx1ZSgiKE5OKSIsIG90ejAsIG90ejEpKTsKICNlbHNlIC8qICFIQVZFX1RaTkFNRSB8fCBfX0dMSUJDX18gfHwgX19DWUdXSU5fXyovCi0jaWZkZWYgSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORQogICAgIHsKICNkZWZpbmUgWUVBUiAoKHRpbWVfdCkoKDM2NSAqIDI0ICsgNikgKiAzNjAwKSkKICAgICAgICAgdGltZV90IHQ7Ci0gICAgICAgIHN0cnVjdCB0bSAqcDsKKyAgICAgICAgc3RydWN0IHRtIHA7CiAgICAgICAgIGxvbmcgamFuem9uZSwganVseXpvbmU7CiAgICAgICAgIGNoYXIgamFubmFtZVsxMF0sIGp1bHluYW1lWzEwXTsKICAgICAgICAgdCA9ICh0aW1lKCh0aW1lX3QgKikwKSAvIFlFQVIpICogWUVBUjsKLSAgICAgICAgcCA9IGxvY2FsdGltZSgmdCk7Ci0gICAgICAgIGphbnpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGphbm5hbWUsIHAtPnRtX3pvbmUgPyBwLT50bV96b25lIDogIiAgICIsIDkpOworICAgICAgICBfUHlUaW1lX2xvY2FsdGltZSh0LCAmcCk7CisgICAgICAgIGdldF96b25lKGphbm5hbWUsIDksICZwKTsKKyAgICAgICAgamFuem9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAgamFubmFtZVs5XSA9ICdcMCc7CiAgICAgICAgIHQgKz0gWUVBUi8yOwotICAgICAgICBwID0gbG9jYWx0aW1lKCZ0KTsKLSAgICAgICAganVseXpvbmUgPSAtcC0+dG1fZ210b2ZmOwotICAgICAgICBzdHJuY3B5KGp1bHluYW1lLCBwLT50bV96b25lID8gcC0+dG1fem9uZSA6ICIgICAiLCA5KTsKKyAgICAgICAgX1B5VGltZV9sb2NhbHRpbWUodCwgJnApOworICAgICAgICBnZXRfem9uZShqdWx5bmFtZSwgOSwgJnApOworICAgICAgICBqdWx5em9uZSA9IC1nZXRfZ210b2ZmKHQsICZwKTsKICAgICAgICAganVseW5hbWVbOV0gPSAnXDAnOwogCiAgICAgICAgIGlmKCBqYW56b25lIDwganVseXpvbmUgKSB7CkBAIC0xMjEzLDggKzEyNDUsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgamFubmFtZSwganVseW5hbWUpKTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0jZW5kaWYgLyogSEFWRV9TVFJVQ1RfVE1fVE1fWk9ORSAqLwogI2lmZGVmIF9fQ1lHV0lOX18KICAgICB0enNldCgpOwogICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJ0aW1lem9uZSIsIF90aW1lem9uZSk7CkBAIC0xMjI0LDI1ICsxMjU0LDYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgUHlfQnVpbGRWYWx1ZSgiKHp6KSIsIF90em5hbWVbMF0sIF90em5hbWVbMV0pKTsKICNlbmRpZiAvKiBfX0NZR1dJTl9fICovCiAjZW5kaWYgLyogIUhBVkVfVFpOQU1FIHx8IF9fR0xJQkNfXyB8fCBfX0NZR1dJTl9fKi8KLQotI2lmIGRlZmluZWQoSEFWRV9DTE9DS19HRVRUSU1FKQotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1JFQUxUSU1FKTsKLSNpZmRlZiBDTE9DS19NT05PVE9OSUMKLSAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfTU9OT1RPTklDX1JBVwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX01PTk9UT05JQ19SQVcpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfSElHSFJFUwotICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX0hJR0hSRVMpOwotI2VuZGlmCi0jaWZkZWYgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUFJPQ0VTU19DUFVUSU1FX0lEKTsKLSNlbmRpZgotI2lmZGVmIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lECi0gICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfVEhSRUFEX0NQVVRJTUVfSUQpOwotI2VuZGlmCi0jZW5kaWYgLyogSEFWRV9DTE9DS19HRVRUSU1FICovCiB9CiAKIApAQCAtMTI1Myw3ICsxMjY0LDExIEBACiAjZW5kaWYKICNpZmRlZiBIQVZFX0NMT0NLX0dFVFRJTUUKICAgICB7ImNsb2NrX2dldHRpbWUiLCAgIHRpbWVfY2xvY2tfZ2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19nZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX1NFVFRJTUUKICAgICB7ImNsb2NrX3NldHRpbWUiLCAgIHRpbWVfY2xvY2tfc2V0dGltZSwgTUVUSF9WQVJBUkdTLCBjbG9ja19zZXR0aW1lX2RvY30sCisjZW5kaWYKKyNpZmRlZiBIQVZFX0NMT0NLX0dFVFJFUwogICAgIHsiY2xvY2tfZ2V0cmVzIiwgICAgdGltZV9jbG9ja19nZXRyZXMsIE1FVEhfVkFSQVJHUywgY2xvY2tfZ2V0cmVzX2RvY30sCiAjZW5kaWYKICAgICB7InNsZWVwIiwgICAgICAgICAgIHRpbWVfc2xlZXAsIE1FVEhfTywgc2xlZXBfZG9jfSwKQEAgLTEzNDksMTcgKzEzNjQsMzIgQEAKICAgICAvKiBTZXQsIG9yIHJlc2V0LCBtb2R1bGUgdmFyaWFibGVzIGxpa2UgdGltZS50aW1lem9uZSAqLwogICAgIFB5SW5pdF90aW1lem9uZShtKTsKIAorI2lmZGVmIENMT0NLX1JFQUxUSU1FCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfUkVBTFRJTUUpOworI2VuZGlmCisjaWZkZWYgQ0xPQ0tfTU9OT1RPTklDCisgICAgUHlNb2R1bGVfQWRkSW50TWFjcm8obSwgQ0xPQ0tfTU9OT1RPTklDKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX01PTk9UT05JQ19SQVcKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19NT05PVE9OSUNfUkFXKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX0hJR0hSRVMKKyAgICBQeU1vZHVsZV9BZGRJbnRNYWNybyhtLCBDTE9DS19ISUdIUkVTKTsKKyNlbmRpZgorI2lmZGVmIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1BST0NFU1NfQ1BVVElNRV9JRCk7CisjZW5kaWYKKyNpZmRlZiBDTE9DS19USFJFQURfQ1BVVElNRV9JRAorICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIENMT0NLX1RIUkVBRF9DUFVUSU1FX0lEKTsKKyNlbmRpZgorCiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpZiAoUHlTdHJ1Y3RTZXF1ZW5jZV9Jbml0VHlwZTIoJlN0cnVjdFRpbWVUeXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0cnVjdF90aW1lX3R5cGVfZGVzYykgPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRigmU3RydWN0VGltZVR5cGUpOwotI2lmZGVmIEhBVkVfU1RSVUNUX1RNX1RNX1pPTkUKICAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiX1NUUlVDVF9UTV9JVEVNUyIsIDExKTsKLSNlbHNlCi0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIl9TVFJVQ1RfVE1fSVRFTVMiLCA5KTsKLSNlbmRpZgogICAgIFB5TW9kdWxlX0FkZE9iamVjdChtLCAic3RydWN0X3RpbWUiLCAoUHlPYmplY3QqKSAmU3RydWN0VGltZVR5cGUpOwogICAgIGluaXRpYWxpemVkID0gMTsKICAgICByZXR1cm4gbTsKZGlmZiAtLWdpdCBhL01vZHVsZXMvdW5pY29kZWRhdGEuYyBiL01vZHVsZXMvdW5pY29kZWRhdGEuYwppbmRleCAxZjliYTc4Li45ZTcxZTAxIDEwMDY0NAotLS0gYS9Nb2R1bGVzL3VuaWNvZGVkYXRhLmMKKysrIGIvTW9kdWxlcy91bmljb2RlZGF0YS5jCkBAIC00NSw2ICs0NSw3IEBACiAgICAgY29uc3QgdW5zaWduZWQgY2hhciBjYXRlZ29yeV9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgZGVjaW1hbF9jaGFuZ2VkOwogICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgbWlycm9yZWRfY2hhbmdlZDsKKyAgICBjb25zdCB1bnNpZ25lZCBjaGFyIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICBjb25zdCBkb3VibGUgbnVtZXJpY19jaGFuZ2VkOwogfSBjaGFuZ2VfcmVjb3JkOwogCkBAIC0zNzUsNiArMzc2LDggQEAKICAgICAgICAgY29uc3QgY2hhbmdlX3JlY29yZCAqb2xkID0gZ2V0X29sZF9yZWNvcmQoc2VsZiwgYyk7CiAgICAgICAgIGlmIChvbGQtPmNhdGVnb3J5X2NoYW5nZWQgPT0gMCkKICAgICAgICAgICAgIGluZGV4ID0gMDsgLyogdW5hc3NpZ25lZCAqLworICAgICAgICBlbHNlIGlmIChvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZCAhPSAweEZGKQorICAgICAgICAgICAgaW5kZXggPSBvbGQtPmVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlZDsKICAgICB9CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKF9QeVVuaWNvZGVfRWFzdEFzaWFuV2lkdGhOYW1lc1tpbmRleF0pOwogfQpAQCAtODg0LDcgKzg4Nyw3IEBACiAgICAgcmV0dXJuIGg7CiB9CiAKLXN0YXRpYyBjaGFyICpoYW5ndWxfc3lsbGFibGVzW11bM10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGhhbmd1bF9zeWxsYWJsZXNbXVszXSA9IHsKICAgICB7ICJHIiwgICJBIiwgICAiIiAgIH0sCiAgICAgeyAiR0ciLCAiQUUiLCAgIkciICB9LAogICAgIHsgIk4iLCAgIllBIiwgICJHRyIgfSwKQEAgLTEwNTcsNyArMTA2MCw3IEBACiAgICAgaW50IGksIGxlbjE7CiAgICAgKmxlbiA9IC0xOwogICAgIGZvciAoaSA9IDA7IGkgPCBjb3VudDsgaSsrKSB7Ci0gICAgICAgIGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBoYW5ndWxfc3lsbGFibGVzW2ldW2NvbHVtbl07CiAgICAgICAgIGxlbjEgPSBQeV9TQUZFX0RPV05DQVNUKHN0cmxlbihzKSwgc2l6ZV90LCBpbnQpOwogICAgICAgICBpZiAobGVuMSA8PSAqbGVuKQogICAgICAgICAgICAgY29udGludWU7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmggYi9Nb2R1bGVzL3VuaWNvZGVkYXRhX2RiLmgKaW5kZXggODlkODc2OC4uZWE0MGMyYiAxMDA2NDQKLS0tIGEvTW9kdWxlcy91bmljb2RlZGF0YV9kYi5oCisrKyBiL01vZHVsZXMvdW5pY29kZWRhdGFfZGIuaApAQCAtMSw2ICsxLDYgQEAKIC8qIHRoaXMgZmlsZSB3YXMgZ2VuZXJhdGVkIGJ5IFRvb2xzL3VuaWNvZGUvbWFrZXVuaWNvZGVkYXRhLnB5IDMuMiAqLwogCi0jZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOC4wLjAiCisjZGVmaW5lIFVOSURBVEFfVkVSU0lPTiAiOS4wLjAiCiAvKiBhIGxpc3Qgb2YgdW5pcXVlIGRhdGFiYXNlIHJlY29yZHMgKi8KIGNvbnN0IF9QeVVuaWNvZGVfRGF0YWJhc2VSZWNvcmQgX1B5VW5pY29kZV9EYXRhYmFzZV9SZWNvcmRzW10gPSB7CiAgICAgezAsIDAsIDAsIDAsIDAsIDB9LApAQCAtMjQyLDEyICsyNDIsMTMgQEAKICAgICB7MjcsIDAsIDExLCAwLCA1LCAwfSwKICAgICB7MjcsIDAsIDE5LCAxLCA0LCAxMzZ9LAogICAgIHsyNywgMCwgMTksIDEsIDQsIDEwfSwKKyAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MjIsIDAsIDE5LCAxLCAyLCAxNzB9LAogICAgIHsyMywgMCwgMTksIDEsIDIsIDE3MH0sCiAgICAgezMwLCAwLCAxLCAwLCA0LCAxMzZ9LAogICAgIHs5LCAwLCAxOSwgMCwgNCwgMH0sCisgICAgezI3LCAwLCAxOSwgMCwgMiwgMH0sCiAgICAgezI3LCAwLCAxOSwgMSwgNSwgMTcwfSwKLSAgICB7MzAsIDAsIDE5LCAwLCAyLCAwfSwKICAgICB7MzAsIDAsIDE5LCAwLCAyLCAxMzZ9LAogICAgIHsxMCwgMCwgMTgsIDAsIDAsIDEzNn0sCiAgICAgezI2LCAwLCAxOSwgMCwgMiwgMH0sCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICB7MSwgMCwgNCwgMCwgNSwgMH0sCiAgICAgezIsIDAsIDQsIDAsIDUsIDB9LAogICAgIHs5LCAwLCAxMiwgMCwgNSwgMH0sCisgICAgezQsIDksIDEsIDAsIDUsIDB9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTcwfSwKICAgICB7NSwgMjE2LCAxLCAwLCA1LCAwfSwKICAgICB7NSwgMjI2LCAxLCAwLCA1LCAwfSwKQEAgLTMzNiw2ICszMzgsNyBAQAogICAgIHs3LCAwLCA5LCAwLCA1LCAxMzZ9LAogICAgIHszMCwgMCwgMSwgMCwgNSwgMTM2fSwKICAgICB7MzAsIDAsIDEsIDAsIDQsIDB9LAorICAgIHsyOSwgMCwgMTksIDAsIDIsIDB9LAogfTsKIAogLyogUmVpbmRleGluZyBvZiBORkMgZmlyc3QgY2hhcmFjdGVycy4gKi8KQEAgLTczMCwzOSArNzMzLDM5IEBACiAgICAgMTI1LCAxMjYsIDEyNywgMTI3LCAxMjgsIDEyOSwgMTMwLCAxMzEsIDEzMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIAogICAgIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTM4LCA0MSwgNDEsIDE0NSwgMTM4LCAxNDYsIDE0NywgMTQ4LCAKICAgICAxNDksIDE1MCwgMTUxLCAxNTIsIDE1MywgMTU0LCAxNTUsIDEzOCwgMTM4LCAxNTYsIDEzOCwgMTM4LCAxMzgsIDE1NywgCi0gICAgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTM4LCAxMzgsIDE2NCwgMTM4LCAxNjUsIDE2NiwgMTY3LCAxNjgsIAotICAgIDEzOCwgMTM4LCAxNjksIDEzOCwgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgMTcxLCAxNzIsIDQxLCAxNzMsIDEzOCwgMTM4LCAKKyAgICAxNTgsIDE1OSwgMTYwLCAxNjEsIDE2MiwgMTYzLCAxMzgsIDE2NCwgMTY1LCAxMzgsIDE2NiwgMTY3LCAxNjgsIDE2OSwgCisgICAgMTM4LCAxMzgsIDE3MCwgMTM4LCAxMzgsIDEzOCwgMTcxLCAxMzgsIDEzOCwgMTcyLCAxNzMsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDE3NSwgNDEsIDE3NiwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzQsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDQxLCA0MSwgNDEsIDQxLCAxNzcsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgNDEsIDQxLCA0MSwgNDEsIDE3NSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCA0MSwgNDEsIDQxLCA0MSwgMTc4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzYsIDE3NywgMTc4LCAxNzksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDE4MCwgMTgxLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDQxLCA0MSwgNDEsIDQxLCAxNzksIDE4MCwgMTgxLCAxODIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDE4MywgMTg0LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTg1LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTg2LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTg3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTg4LCAxODksIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTgyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTgzLCAxODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCA3OCwgMTg1LCAKLSAgICAxODYsIDE4NywgMTg4LCAxMzgsIDE4OSwgMTM4LCAxOTAsIDE5MSwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5NywgNzgsIAotICAgIDc4LCA3OCwgNzgsIDE5OCwgMTk5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMjAwLCAyMDEsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjAyLCAyMDMsIDEzOCwgMTM4LCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMTM4LCAyMDksIDIxMCwgMjA5LCAyMDksIAotICAgIDIxMSwgMjEyLCAyMDksIDIxMywgMjE0LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDIxOSwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDc4LCAxOTAsIAorICAgIDE5MSwgMTkyLCAxOTMsIDEzOCwgMTk0LCAxMzgsIDE5NSwgMTk2LCAxOTcsIDE5OCwgMTk5LCAyMDAsIDIwMSwgMjAyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgMjAzLCAyMDQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMjA1LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAyMDYsIDIwNywgMjA4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAyMDksIDIxMCwgMTM4LCAxMzgsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAxMzgsIDIxNiwgMjE3LCAyMTgsIDIxOSwgCisgICAgMjIwLCAyMjEsIDIyMiwgMjIzLCAyMjQsIDIyNSwgMjI2LCAyMjcsIDIyOCwgMjI5LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIApAQCAtNzg3LDE5ICs3OTAsMTkgQEAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjIwLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIzMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIyMSwgMTAxLCAyMjIsIDEwMSwgCisgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMzEsIDEwMSwgMjMyLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMjIzLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMDEsIDIzMywgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMjIsIDEyMiwgMTIyLCAxMjIsIDIyNCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTIyLCAxMjIsIDEyMiwgMTIyLCAyMzQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTIwMiw3ICsxMjA1LDcgQEAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKLSAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAyMjUsIDEzOCwgMjI2LCAyMjcsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMjM1LCAxMzgsIDIzNiwgMjM3LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAogICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKICAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCiAgICAgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIApAQCAtMTI3NSw3ICsxMjc4LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDIyOCwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCisgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAyMzgsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIApAQCAtMTMxMiw3ICsxMzE1LDcgQEAKICAgICAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgCiAgICAgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIAogICAgIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAxMjEsIDEyMSwgMTIxLCAKLSAgICAxMjEsIDIyOCwgCisgICAgMTIxLCAyMzgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIHNob3J0IGluZGV4MltdID0gewpAQCAtMTQ0NCwxNzAgKzE0NDcsMTcxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIAotICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODYsIDgxLCA4MSwgODYsIDgxLCA4MSwgODYsIDgxLCAKLSAgICA4MSwgODEsIDg2LCA4NiwgODYsIDEyMSwgMTIyLCAxMjMsIDgxLCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4NiwgODEsIAotICAgIDgxLCA4MSwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxNDAsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxNDEsIDQ4LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIDEzOSwgCi0gICAgMTM5LCA0OCwgODEsIDg2LCA4MSwgODEsIDEzNSwgMTM1LCAxMzUsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIAotICAgIDE0MywgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgODMsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKLSAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMTM5LCAxMzksIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDAsIDAsIDAsIAotICAgIDAsIDE0MywgMTQzLCAwLCAxNDMsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA4NSwgODUsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDgwLCA4NSwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAKLSAgICAxNDMsIDAsIDQ4LCAxNDMsIDAsIDQ4LCA0OCwgMCwgMCwgMTQ1LCAwLCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzUsIDAsIDAsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQzLCAxNDMsIDE0MywgNDgsIDAsIDE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxMzUsIDEzNSwgNDgsIDQ4LCA0OCwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMzUsIDEzNSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgMTM5LCAxMzksIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAwLCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDE0NiwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMCwgMTM5LCAKLSAgICAxNDcsIDAsIDAsIDE0NywgMTQ3LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0OSwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAxNDMsIDE0MywgMCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODAsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMzUsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDE0MCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM1LCAxMzksIDEzOSwgMCwgMCwgMCwgMTM5LCAxMzksIDEzOSwgMCwgMTQ3LCAKLSAgICAxNDcsIDE0NywgMTQyLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDg1LCAyNiwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzksIDEzOSwgCi0gICAgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAotICAgIDAsIDAsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDAsIDEzNSwgMTM1LCAxNTAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUxLCAxNTIsIDAsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIAotICAgIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCA4MCwgMCwgCi0gICAgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDE0NSwgNDgsIDEzOSwgMTU0LCAxNDcsIDEzOSwgMTQ2LCAxMzksIDEzOSwgMCwgMTU0LCAxNDcsIAotICAgIDE0NywgMCwgMTQ3LCAxNDcsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDYsIDE0NiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDAsIDQ4LCA0OCwgMTM1LCAxMzUsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzUsIAotICAgIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCisgICAgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAxMTgsIDExOCwgMTE4LCAwLCAxMTgsIDExOCwgMTE4LCAxMTgsIAorICAgIDExOCwgMTE4LCAxMTgsIDExOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAxMDgsIAorICAgIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4NiwgODYsIDg2LCAxMjEsIDEyMiwgMTIzLCA4MSwgCisgICAgODEsIDgxLCA4NiwgODEsIDgxLCA4NiwgODYsIDgxLCA4MSwgODEsIDgxLCA4MSwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMCwgMTM5LCAxMzksIAotICAgIDEzOSwgMCwgMTQ3LCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCA4MCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgMCwgMCwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgMCwgMTU1LCAwLCAwLCAwLCAwLCAxNDYsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDAsIDEzOSwgMTM5LCAKLSAgICAxNDcsIDEzOSwgMTQ3LCAxNDcsIDE0NywgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDEzOSwgMTM5LCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAKLSAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAKLSAgICAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgCi0gICAgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAKLSAgICAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgCi0gICAgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIAotICAgIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIAotICAgIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCAKLSAgICA0OCwgMCwgMCwgMCwgMCwgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIAotICAgIDE2NiwgMTY2LCAxMzUsIDEzOSwgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIAotICAgIDEzOSwgMTM1LCAxNDksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAKLSAgICAxNDIsIDEzOSwgMTM5LCAxMzUsIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTM5LCAxMzksIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDUxLCA0OCwgNDgsIDQ4LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCA0OCwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIAotICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKLSAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQwLCA0OCwgNDgsIDE0MCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzOSwgMTQxLCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAxMzksIDEzOSwgNDgsIDgxLCA4NiwgODEsIDgxLCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgMTQzLCAxNDMsIDE0MywgNDgsIDQ4LCAxMzUsIDEzNSwgODMsIDgzLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzOSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTM5LCAwLCAwLCAxNDcsIDE0NywgMTQyLCA0OCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ2LCAwLCAwLCAwLCAwLCAxNDMsIDE0MywgMCwgMTQzLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgODUsIDg1LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCA4MCwgODUsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMTQzLCAwLCA0OCwgMTQzLCAwLCA0OCwgNDgsIDAsIDAsIDE0NSwgMCwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAwLCAwLCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAKKyAgICAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MywgMTQzLCAxNDMsIDQ4LCAwLCAxNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzksIDAsIDEzOSwgMTM5LCAxNDIsIDAsIDAsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgzLCA4NSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDUsIDQ4LCAxNDYsIDEzNSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDEzOSwgMTQ3LCAwLCAwLCAxNDcsIDE0NywgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxNDksIDE0NiwgMCwgMCwgMCwgMCwgMTQzLCAxNDMsIDAsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDgwLCA0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCAxNDAsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTQ2LCAxMzksIDEzNSwgMTM5LCAxMzksIDAsIAorICAgIDAsIDAsIDEzOSwgMTM5LCAxMzksIDAsIDE0NywgMTQ3LCAxNDcsIDE0MiwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA4NSwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAwLCAxMzUsIDEzNSwgMTUwLCAwLCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1MSwgMTUyLCAwLCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgODAsIDQ4LCAxMzUsIDEzOSwgMTM5LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMTQ1LCA0OCwgMTM5LCAxNTQsIDE0NywgCisgICAgMTM5LCAxNDYsIDEzOSwgMTM5LCAwLCAxNTQsIDE0NywgMTQ3LCAwLCAxNDcsIDE0NywgMTM1LCAxNDIsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE0NiwgMTQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA0OCwgNDgsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM5LCAxMzksIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgMTQ2LCAxMzksIDEzOSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAwLCAxMzksIDEzOSwgMTM5LCAwLCAxNDcsIDE0NywgMTQ3LCAxNDIsIDQ4LCA4MCwgMCwgMCwgMCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMTQ2LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDQ4LCA0OCwgNDgsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzksIAorICAgIDEzOSwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAxNTUsIDAsIDAsIDAsIAorICAgIDAsIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMCwgMTM5LCAxMzksIDE0NywgMTM5LCAxNDcsIDE0NywgCisgICAgMTQ3LCAxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMCwgMCwgMTM5LCAxMzksIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgMTU2LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDE1NywgMTU3LCAxNDIsIDAsIDAsIDAsIDAsIDg1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgMTM1LCAxNTgsIDE1OCwgCisgICAgMTU4LCAxNTgsIDEzNSwgMTM1LCAxMzUsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCAwLCA0OCwgMCwgMCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAxMzUsIDQ4LCAxNTYsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTU5LCAxNTksIDAsIDEzNSwgMTM1LCA0OCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA1MywgMCwgMTYwLCAxNjAsIDE2MCwgMTYwLCAxMzUsIDEzNSwgMCwgMCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAxNTYsIDE1NiwgNDgsIDQ4LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgODAsIDgwLCA4MCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNjEsIAorICAgIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCA4MywgODAsIDgwLCA4MCwgODYsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgODAsIDg2LCA4MCwgODYsIDgwLCAxNjIsIDE2MywgMTY0LCAxNjMsIAorICAgIDE2NCwgMTM5LCAxMzksIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgNDgsIDQ4LCAxNDMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0MywgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMTY1LCAKKyAgICAxNjYsIDE2NywgMTY4LCAxNjcsIDE2NywgMTY5LCAxNjcsIDE2OSwgMTY2LCAxNjYsIDE2NiwgMTY2LCAxMzUsIDEzOSwgCisgICAgMTY2LCAxNjcsIDgxLCA4MSwgMTQyLCA4MywgODEsIDgxLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxNjcsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE2NywgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTY3LCAxMzUsIAorICAgIDEzNSwgMTM1LCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxNDksIDEzNSwgCisgICAgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDUsIDEzOSwgMTQyLCAxNDIsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMTM1LCAxMzUsIDEzNSwgNDgsIDEzOSwgMTM5LCAxMzksIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgODYsIDQ4LCAxMzksIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCA4MCwgODAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDQsIDAsIDAsIDAsIDAsIDAsIDQ0LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAotICAgIDE0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCAKKyAgICA0OCwgNDgsIDQ4LCA4MywgNTEsIDQ4LCA0OCwgNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDQ4LCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIAorICAgIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAKKyAgICAxNzEsIDE3MSwgMTcxLCAxNzEsIDE3MSwgMTcxLCAxNzEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDgxLCA4MSwgCisgICAgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICAwLCAwLCA4NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDg0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIApAQCAtMTYyNyw0NSArMTYzMSw0NSBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNzIsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTYzLCAxNjQsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MywgODMsIDgzLCAxNzMsIDE3MywgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDE0MiwgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDE3MywgMTczLCAxNzMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzUsIDEzNSwgMTQyLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgMCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIAotICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTQyLCAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgCi0gICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzOSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTQyLCAKKyAgICAxMzUsIDgzLCA4MywgODMsIDUzLCA4MywgODMsIDgzLCA4NSwgNDgsIDgxLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAKKyAgICAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMCwgMCwgMCwgMCwgMCwgMCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgODQsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM1LCAxMzUsIDEzNSwgMTc0LCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDEzNSwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDg4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA4OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzksIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzOSwgCiAgICAgMTM5LCAxMzksIDg3LCA4MSwgODYsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAxMzgsIDEzOCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTE3MTQsMjcgKzE3MTgsMjcgQEAKICAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCAKLSAgICA4MywgMTc2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDgxLCAxMzksIDE3NiwgMTc2LCAKLSAgICAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgNDgsIDQ4LCA0OCwgNDgsIDg2LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIAotICAgIDgxLCA0OCwgNDgsIDAsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICAwLCAwLCAwLCAwLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDgxLCA4MSwgODEsIDgzLCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODEsIDgxLCA4NiwgODYsIDg2LCA4NiwgODEsIDEzOSwgCisgICAgMTc2LCAxNzYsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCA0OCwgNDgsIDQ4LCA0OCwgODYsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzksIDEzOSwgODEsIDQ4LCA0OCwgMCwgODEsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MywgNTEsIAorICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUzLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MywgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAogICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIAotICAgIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDgxLCA4MSwgMTc3LCAKLSAgICAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA4MSwgODEsIDg2LCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIAorICAgIDgxLCA4MSwgMTc3LCAxNzgsIDg2LCAxNzksIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCiAgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgCi0gICAgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDAsIDE4MCwgODYsIDgxLCA4NiwgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDgxLCAxODAsIDg2LCA4MSwgODYsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKICAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKQEAgLTE3NDMsMzMyICsxNzQ3LDMzMyBAQAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAogICAgIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIAotICAgIDQzLCA0MywgNDMsIDQzLCA0MywgMzUsIDE4MSwgNDcsIDQ3LCA0NCwgNDcsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCAKKyAgICA0MywgMzgsIDQzLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCAzNSwgMTgxLCA0NywgNDcsIDQ0LCA0NywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCiAgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgCi0gICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0MywgCi0gICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCA0MywgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAwLCAzOCwgMzgsIDM4LCAKLSAgICAzOCwgMzgsIDM4LCAwLCAwLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDM4LCAwLCAzOCwgMCwgMzgsIDAsIAotICAgIDM4LCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIAotICAgIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgNDMsIDQzLCAKLSAgICA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMTgzLCA1OCwgMTgyLCA1OCwgNTgsIDc2LCA0MywgNDMsIAotICAgIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIDM4LCAxODQsIDE4MywgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCAwLCAwLCAKLSAgICA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMCwgNzYsIDc2LCA3NiwgNDMsIDQzLCA0MywgMTgyLCA0MywgNDMsIDQzLCA0MywgCi0gICAgMzgsIDM4LCAzOCwgMTg0LCAzOCwgNzYsIDE4NSwgMTg1LCAwLCAwLCA0MywgNDMsIDQzLCAwLCA0MywgNDMsIDM4LCAxODQsIAotICAgIDM4LCAxODQsIDE4MywgMTg1LCA1OCwgMCwgMTg2LCAxODYsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgCi0gICAgMTg3LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE4OCwgMTg5LCAxOTAsIDE5MSwgODQsIDE5MCwgMTkwLCAxOTAsIDIyLCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE5NiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAyMiwgMjIsIDIyLCAxMzgsIDE5NywgMTk3LCAxOTcsIAotICAgIDIyLCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIxLCAyMDUsIDExMCwgMjA1LCAyMDYsIDIwNywgMjIsIAotICAgIDE5MiwgMTkyLCAxMzgsIDI4LCAzNiwgMjIsIDE5MiwgMTM4LCAxOTcsIDIwOCwgMjA4LCAxMzgsIDEzOCwgMTM4LCAyMDksIAotICAgIDE2MywgMTY0LCAxOTIsIDE5MiwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNzgsIDEzOCwgCi0gICAgMjA4LCAxMzgsIDEzOCwgMTkyLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE4NywgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDAsIDIxMCwgMjExLCAyMTIsIDIxMywgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMjE0LCAKLSAgICA1MSwgMCwgMCwgMzQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTUsIDIxNSwgMjE2LCAyMTcsIDIxOCwgMjE5LCAyMTQsIAotICAgIDM0LCAzNCwgMzQsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgMjE3LCAyMTgsIDAsIDUxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCAwLCAwLCAwLCA4NSwgODUsIDg1LCA4NSwgCi0gICAgODUsIDg1LCA4NSwgODUsIDIyMCwgMjIxLCA4NSwgODUsIDIzLCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAKLSAgICA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDE3NiwgMTc2LCA4MSwgODEsIDgxLCA4MSwgMTc2LCAxNzYsIDE3NiwgODEsIDgxLCAKLSAgICA4MiwgODIsIDgyLCA4MiwgODEsIDgyLCA4MiwgODIsIDE3NiwgMTc2LCA4MSwgODYsIDgxLCAxNzYsIDE3NiwgODYsIDg2LCAKLSAgICA4NiwgODYsIDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMjIsIDIyMiwgNDksIAotICAgIDIyMywgMjYsIDIyMywgMjIyLCA0OSwgMjYsIDIyMywgMzUsIDQ5LCA0OSwgNDksIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDYsIAotICAgIDI2LCA0OSwgMjIzLCAyNiwgNzgsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMjYsIDI2LCAyMjIsIDIyMywgMjIzLCAyNiwgNDksIAotICAgIDI2LCAyMjQsIDI2LCA0OSwgMjYsIDE4NCwgMjI0LCA0OSwgNDksIDIyNSwgMzUsIDQ5LCA0OSwgNDQsIDQ5LCAzNSwgMTU2LCAKLSAgICAxNTYsIDE1NiwgMTU2LCAzNSwgMjYsIDIyMiwgMzUsIDM1LCA0OSwgNDksIDIyNiwgNzgsIDc4LCA3OCwgNzgsIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMjYsIDc4LCAyNiwgMjYsIDQ3LCA4MCwgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAyMjcsIDIyNywgMjI3LCAKLSAgICAyMjcsIDIyNywgMjI3LCAzNywgMzcsIDM3LCAzNywgMjI3LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIAotICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAKLSAgICAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjksIDIyOSwgMTczLCAxNzMsIDE3MywgNDQsIAotICAgIDQ3LCAxNzMsIDE3MywgMTczLCAxNzMsIDM3LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDQwLCA0MCwgNDAsIDQwLCA0MCwgMzAsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAyMzAsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgMjYsIDc4LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyMzEsIDIzMCwgMjMwLCAyNiwgMjYsIDQwLCAyNiwgNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA0MCwgCi0gICAgMjMyLCAyMzMsIDIzMywgMjM0LCA3OCwgNzgsIDQwLCAyMzMsIDIzNCwgMjMyLCAyMzMsIDIzNCwgMjMyLCA3OCwgNDAsIDc4LCAKLSAgICAyMzMsIDIzNSwgMjM2LCA3OCwgMjMzLCAyMzIsIDc4LCA3OCwgNzgsIDIzMywgMjMyLCAyMzIsIDIzMywgNDAsIDIzMywgCi0gICAgMjMzLCAyMzIsIDIzMiwgNDAsIDIzNCwgNDAsIDIzNCwgNDAsIDQwLCA0MCwgNDAsIDIzMywgMjM3LCAyMjYsIDIzMywgMjI2LCAKLSAgICAyMjYsIDIzMiwgMjMyLCAyMzIsIDQwLCA0MCwgNDAsIDQwLCA3OCwgMjMyLCA3OCwgMjMyLCAyMzMsIDIzMywgMjMyLCAyMzIsIAotICAgIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzMsIDIzNCwgMjMyLCAyMzIsIDIzMywgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyMzMsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjM4LCA0MCwgMjM0LCA3OCwgMjMzLCAyMzMsIDIzMywgMjMzLCAyMzIsIDIzMiwgMjMzLCAyMzMsIDc4LCAyMzAsIDIzOCwgCi0gICAgMjM4LCAyMzQsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjM0LCAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMywgMjMzLCAyMzQsIDIzNCwgMjMyLCAKLSAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNDAsIDc4LCA3OCwgMjMyLCA0MCwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDQwLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzNCwgMjM0LCAyMzQsIDIzNCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMTYzLCAxNjQsIDE2MywgMTY0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKLSAgICAyNDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgMzgsIDQzLCAzOCwgNDMsIDM4LCA0MywgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ0LCA0NywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDAsIDAsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDAsIDAsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCA0MywgNDMsIDQzLCA0MywgCisgICAgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgCisgICAgMCwgMCwgMzgsIDM4LCAzOCwgMzgsIDM4LCAzOCwgMCwgMCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAwLCAKKyAgICAzOCwgMCwgMzgsIDAsIDM4LCAwLCAzOCwgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCAzOCwgMzgsIDM4LCAzOCwgCisgICAgMzgsIDM4LCAzOCwgMzgsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAxODIsIDQzLCAKKyAgICAxODIsIDAsIDAsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgNDMsIDQzLCA0MywgMTgzLCAxODMsIDE4MywgMTgzLCAxODMsIDE4MywgCisgICAgMTgzLCAxODMsIDQzLCA0MywgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDE4MywgNTgsIDE4MiwgCisgICAgNTgsIDU4LCA3NiwgNDMsIDQzLCA0MywgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDc2LCA3NiwgNzYsIDQzLCAKKyAgICA0MywgNDMsIDE4MiwgMCwgMCwgNDMsIDQzLCAzOCwgMzgsIDM4LCAxODQsIDAsIDc2LCA3NiwgNzYsIDQzLCA0MywgNDMsIAorICAgIDE4MiwgNDMsIDQzLCA0MywgNDMsIDM4LCAzOCwgMzgsIDE4NCwgMzgsIDc2LCAxODUsIDE4NSwgMCwgMCwgNDMsIDQzLCA0MywgCisgICAgMCwgNDMsIDQzLCAzOCwgMTg0LCAzOCwgMTg0LCAxODMsIDE4NSwgNTgsIDAsIDE4NiwgMTg2LCAxODcsIDE4NywgMTg3LCAKKyAgICAxODcsIDE4NywgMTg3LCAxODcsIDE4NywgMTg3LCAxNzQsIDE3NCwgMTc0LCAxODgsIDE4OSwgMTkwLCAxOTEsIDg0LCAxOTAsIAorICAgIDE5MCwgMTkwLCAyMiwgMTkyLCAxOTMsIDE5NCwgMTk1LCAxOTYsIDE5MywgMTk0LCAxOTUsIDE5NiwgMjIsIDIyLCAyMiwgCisgICAgMTM4LCAxOTcsIDE5NywgMTk3LCAyMiwgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCAyMSwgMjA1LCAxMTAsIAorICAgIDIwNSwgMjA2LCAyMDcsIDIyLCAxOTIsIDE5MiwgMTM4LCAyOCwgMzYsIDIyLCAxOTIsIDEzOCwgMTk3LCAyMDgsIDIwOCwgCisgICAgMTM4LCAxMzgsIDEzOCwgMjA5LCAxNjMsIDE2NCwgMTkyLCAxOTIsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDc4LCAxMzgsIDIwOCwgMTM4LCAxMzgsIDE5MiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgCisgICAgMTM4LCAxODcsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAyMTAsIDIxMSwgMjEyLCAyMTMsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDIxNCwgNTEsIDAsIDAsIDM0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNCwgMjE1LCAyMTUsIDIxNiwgCisgICAgMjE3LCAyMTgsIDIxOSwgMjE0LCAzNCwgMzQsIDM0LCAzNCwgMjE0LCAyMTQsIDIxNCwgMjE0LCAyMTQsIDIxNSwgMjE1LCAKKyAgICAyMTYsIDIxNywgMjE4LCAwLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgNTEsIDUxLCA1MSwgMCwgCisgICAgMCwgMCwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCAyMjAsIDIyMSwgODUsIDg1LCAyMywgODUsIDg1LCA4NSwgCisgICAgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgODUsIDg1LCA4NSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEsIDgxLCAxNzYsIDE3NiwgODEsIDgxLCA4MSwgODEsIAorICAgIDE3NiwgMTc2LCAxNzYsIDgxLCA4MSwgODIsIDgyLCA4MiwgODIsIDgxLCA4MiwgODIsIDgyLCAxNzYsIDE3NiwgODEsIDg2LCAKKyAgICA4MSwgMTc2LCAxNzYsIDg2LCA4NiwgODYsIDg2LCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMjIyLCAyMjIsIDQ5LCAyMjMsIDI2LCAyMjMsIDIyMiwgNDksIDI2LCAyMjMsIDM1LCA0OSwgNDksIDQ5LCAzNSwgCisgICAgMzUsIDQ5LCA0OSwgNDksIDQ2LCAyNiwgNDksIDIyMywgMjYsIDc4LCA0OSwgNDksIDQ5LCA0OSwgNDksIDI2LCAyNiwgMjIyLCAKKyAgICAyMjMsIDIyMywgMjYsIDQ5LCAyNiwgMjI0LCAyNiwgNDksIDI2LCAxODQsIDIyNCwgNDksIDQ5LCAyMjUsIDM1LCA0OSwgNDksIAorICAgIDQ0LCA0OSwgMzUsIDE1NiwgMTU2LCAxNTYsIDE1NiwgMzUsIDI2LCAyMjIsIDM1LCAzNSwgNDksIDQ5LCAyMjYsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDI2LCA3OCwgMjYsIDI2LCA0NywgODAsIDIyNywgMjI3LCAyMjcsIDM3LCAKKyAgICAzNywgMjI3LCAyMjcsIDIyNywgMjI3LCAyMjcsIDIyNywgMzcsIDM3LCAzNywgMzcsIDIyNywgMjI4LCAyMjgsIDIyOCwgCisgICAgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI5LCAyMjksIDIyOSwgMjI5LCAyMjgsIAorICAgIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOCwgMjI4LCAyMjgsIDIyOSwgMjI5LCAyMjksIDIyOSwgMjI5LCAKKyAgICAyMjksIDE3MywgMTczLCAxNzMsIDQ0LCA0NywgMTczLCAxNzMsIDE3MywgMTczLCAzNywgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICA0MCwgNDAsIDQwLCA0MCwgNDAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjMwLCAyMzAsIDI2LCAyNiwgMjYsIDI2LCA3OCwgMjYsIAorICAgIDI2LCA3OCwgMjYsIDI2LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjMxLCAyMzAsIDIzMCwgMjYsIDI2LCA0MCwgMjYsIDQwLCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNDAsIDIzMiwgMjMzLCAyMzMsIDIzNCwgNzgsIDc4LCA0MCwgMjMzLCAyMzQsIDIzMiwgCisgICAgMjMzLCAyMzQsIDIzMiwgNzgsIDQwLCA3OCwgMjMzLCAyMzUsIDIzNiwgNzgsIDIzMywgMjMyLCA3OCwgNzgsIDc4LCAyMzMsIAorICAgIDIzMiwgMjMyLCAyMzMsIDQwLCAyMzMsIDIzMywgMjMyLCAyMzIsIDQwLCAyMzQsIDQwLCAyMzQsIDQwLCA0MCwgNDAsIDQwLCAKKyAgICAyMzMsIDIzNywgMjI2LCAyMzMsIDIyNiwgMjI2LCAyMzIsIDIzMiwgMjMyLCA0MCwgNDAsIDQwLCA0MCwgNzgsIDIzMiwgNzgsIAorICAgIDIzMiwgMjMzLCAyMzMsIDIzMiwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMyLCAyMzIsIDIzNCwgMjMzLCAKKyAgICAyMzQsIDIzMiwgMjMyLCAyMzMsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMzLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzOCwgNDAsIDIzNCwgNzgsIDIzMywgMjMzLCAyMzMsIDIzMywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjMzLCA3OCwgMjMwLCAyMzgsIDIzOCwgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMyLCAyMzIsIAorICAgIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjMzLCAyMzMsIDIzNCwgMjM0LCAKKyAgICAyMzMsIDIzMywgMjM0LCAyMzQsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDQwLCA3OCwgNzgsIDIzMiwgNDAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDc4LCA0MCwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMzLCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjM0LCAyMzQsIDIzNCwgCisgICAgMjM0LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzQsIDIzNCwgMjM0LCAyMzQsIDc4LCA3OCwgMjMyLCAyMzIsIAorICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzMiwgMjMyLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjQwLCAyNDEsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKICAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNiwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMjYsIDc4LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKICAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAKLSAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzcsIDM3LCAzNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyMjcsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCi0gICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMwLCAKKyAgICAzNywgMzcsIDM3LCAzNywgMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjI3LCAKKyAgICAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgCisgICAgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKICAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAKLSAgICAyNiwgMzAsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMzAsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAzMCwgMjYsIDI2LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDMwLCA0MCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMjYsIDI2LCAzMCwgNDAsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDMwLCAyNiwgMjYsIDMwLCAyNiwgMjYsIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjQ0LCAyNDQsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDMwLCAzMCwgMjYsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMzAsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAzMCwgCisgICAgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjYsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIAotICAgIDMwLCAzMCwgMjYsIDMwLCAzMCwgMjYsIDQwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAzMCwgMzAsIDI2LCAyMzksIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDgwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDMwLCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDIzOSwgMzAsIDMwLCAzMCwgMzAsIAorICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMjYsIDI2LCAyNiwgMjYsIDMwLCAzMCwgMjM5LCAKKyAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjM5LCAyMzksIDMwLCAyMzksIDMwLCAzMCwgMzAsIDMwLCAyMzksIDMwLCAKKyAgICAzMCwgMjM5LCAzMCwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAKLSAgICAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgODAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDI2LCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAKLSAgICAzMCwgMzAsIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDMwLCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMzAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDE1MywgMTUzLCAKKyAgICAxNjMsIDE2NCwgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAyNDMsIDI0MywgMjQzLCAxNTMsIDE1MywgCiAgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIDE1MywgMTUzLCAxNTMsIAotICAgIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzIsIDc4LCA3OCwgMjMyLCAKLSAgICAyMzIsIDE2MywgMTY0LCA3OCwgMjMyLCAyMzIsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDksIDEwLCA5LCAxMCwgOSwgMTAsIDksIDEwLCAxNjMsIDE2NCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgMTUzLCAxNTMsIDE1MywgMTUzLCAyNiwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjMyLCA3OCwgNzgsIAorICAgIDIzMiwgMjMyLCAxNjMsIDE2NCwgNzgsIDIzMiwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAKKyAgICAyMzIsIDIzMiwgMjMyLCA5LCAxMCwgOSwgMTAsIDksIDEwLCA5LCAxMCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCiAgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAxNjMsIAotICAgIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIAotICAgIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgMjMyLCAKLSAgICA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKLSAgICA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCiAgICAgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCi0gICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgMjI2LCAyMTYsIAotICAgIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKKyAgICAxNjMsIDE2NCwgOSwgMTAsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKKyAgICAxNjQsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAxNjQsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDE2MywgMTY0LCAxNjMsIDE2NCwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMTYzLCAxNjQsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMjYsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjMyLCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAKKyAgICAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgMjMyLCA3OCwgNzgsIDIzMiwgCisgICAgMjI2LCAyMTYsIDIxNiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAogICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKICAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDIzMiwgCisgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAorICAgIDc4LCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCiAgICAgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIAotICAgIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAKLSAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCAyNDMsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCA3OCwgCi0gICAgNzgsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIDc4LCAyMzIsIDc4LCA3OCwgNzgsIDIzMiwgMjMyLCAyMzIsIDIzMiwgCi0gICAgMjMyLCA3OCwgMjMyLCA3OCwgNzgsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDIzMiwgMjMyLCA3OCwgNzgsIDc4LCAKKyAgICA3OCwgNzgsIDI0NSwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgMjMyLCAyMzIsIDc4LCA3OCwgNzgsIAorICAgIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgNzgsIDc4LCA3OCwgNzgsIDIzMiwgNzgsIDc4LCA3OCwgMjMyLCAyMzIsIDIzMiwgCisgICAgMjMyLCAyMzIsIDc4LCAyMzIsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNzgsIAotICAgIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIAotICAgIDc4LCA3OCwgMjYsIDI2LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDMwLCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgCisgICAgNzgsIDc4LCA3OCwgNzgsIDI2LCAyNiwgNzgsIDc4LCA3OCwgNzgsIDc4LCA3OCwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjM5LCAzMCwgMzAsIDMwLCAzMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgMCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAogICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDAsIDQ0LCA0NywgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDcsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA1MSwgNTEsIDQ0LCA0NCwgNDQsIDQ3LCA0NCwgCisgICAgNDcsIDQ3LCAwLCA0NCwgNDcsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCAKKyAgICA0NCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNTEsIDUxLCA0NCwgNDQsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKICAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDcsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA4MSwgODEsIDgxLCA0NCwgNDcsIDAsIDAsIDAsIDAsIDAsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTUzLCAxMzgsIDEzOCwgNDcsIAorICAgIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ3LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgODEsIDgxLCA4MSwgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDE1MywgMTM4LCAKKyAgICAxMzgsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDAsIDQ3LCAwLCAwLCAwLCAwLCAwLCA0NywgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDcsIDQ3LCA0NywgMCwgNDcsIDAsIDAsIDAsIDAsIDAsIDQ3LCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MSwgODMsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1MSwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgxLCA4MSwgODEsIDgxLCAKICAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgCi0gICAgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIAotICAgIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgMTYzLCAKLSAgICAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMCwgMCwgMCwgMCwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDEzOCwgMTM4LCAyOCwgMzYsIDI4LCAzNiwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMjgsIDM2LCAxMzgsIDI4LCAzNiwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgODQsIDEzOCwgMTM4LCA4NCwgMTM4LCAyOCwgMzYsIDEzOCwgMTM4LCAyOCwgMzYsIDE2MywgMTY0LCAxNjMsIDE2NCwgCisgICAgMTYzLCAxNjQsIDE2MywgMTY0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgNTIsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAKKyAgICAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgODQsIDg0LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDg0LCAxMzgsIDE5NSwgMTM4LCAKKyAgICAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIAotICAgIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAKLSAgICAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI0NSwgCi0gICAgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAyNDYsIDI0NywgMjQ3LCAyNDcsIDI0NCwgMjQ4LCAxNzAsIDI0OSwgMjUwLCAyNTEsIAotICAgIDI1MCwgMjUxLCAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MCwgMjUxLCAyNDQsIDI0NCwgMjUwLCAyNTEsIDI1MCwgMjUxLCAKLSAgICAyNTAsIDI1MSwgMjUwLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NCwgMjQ0LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0OSwgCi0gICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNTUsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjU5LCAyNTIsIDI0OCwgMjQ4LCAyNDgsIAotICAgIDI0OCwgMjQ4LCAyNDUsIDI0NCwgMjYwLCAyNjAsIDI2MCwgMjQ4LCAxNzAsIDI0NywgMjQ0LCAyNiwgMCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAxNzAsIDI2MSwgMjYxLCAKLSAgICAxNzAsIDI2MSwgMjYxLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDAsIAotICAgIDAsIDI2MiwgMjYyLCAyNjMsIDI2MywgMjQ4LCAyNjQsIDI2NSwgMjUyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgCi0gICAgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAyNjEsIAotICAgIDE3MCwgMTcwLCAyNjEsIDE3MCwgMjYxLCAxNzAsIDI2MSwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAKLSAgICAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgMjYxLCAyNjEsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYxLCAxNzAsIDE3MCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNDcsIDI0OCwgMjQ4LCAyNjQsIDI2NSwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgCisgICAgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIAorICAgIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDI0NywgMjQ4LCAyNDgsIDI0OCwgMjM5LCAyNDksIDE3MCwgCisgICAgMjUwLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUxLCAyNTIsIDIzOSwgMjM5LCAyNTEsIAorICAgIDI1MiwgMjUxLCAyNTIsIDI1MSwgMjUyLCAyNTEsIDI1MiwgMjUzLCAyNTQsIDI1NSwgMjU1LCAyMzksIDI1MCwgMjUwLCAKKyAgICAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1MCwgMjUwLCAyNTAsIDI1NiwgMjU3LCAyNTgsIDI1OSwgMjYwLCAyNjAsIDI1MywgCisgICAgMjQ5LCAyNDksIDI0OSwgMjQ5LCAyNDksIDI0NiwgMjM5LCAyNjEsIDI2MSwgMjYxLCAyNDksIDE3MCwgMjQ4LCAyMzksIDI2LCAKKyAgICAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAxNzAsIDI2MiwgCisgICAgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIAorICAgIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgCisgICAgMjYyLCAyNjIsIDE3MCwgMjYyLCAyNjIsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMjYyLCAKKyAgICAxNzAsIDE3MCwgMCwgMCwgMjYzLCAyNjMsIDI2NCwgMjY0LCAyNDksIDI2NSwgMjY2LCAyNTMsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgCisgICAgMjYyLCAxNzAsIDI2MiwgMTcwLCAxNzAsIDI2MiwgMTcwLCAyNjIsIDE3MCwgMjYyLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAyNjIsIDI2MiwgMTcwLCAKKyAgICAyNjIsIDI2MiwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNjIsIDE3MCwgMTcwLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI0OCwgMjQ5LCAyNDksIDI2NSwgMjY2LCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIAotICAgIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAKLSAgICAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgMjY1LCAyNjUsIDI2NSwgCi0gICAgMjY1LCAyNjUsIDI2NSwgMjY1LCAwLCAyNjYsIDI2NiwgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAKKyAgICAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgCisgICAgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIAorICAgIDI2NiwgMjY2LCAyNjYsIDI2NiwgMjY2LCAyNjYsIDI2NiwgMCwgMjY3LCAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMCwgCi0gICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIDI2OSwgCi0gICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ1LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIAotICAgIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI0NSwgMjQ1LCAyNDUsIDI2NiwgMjY3LCAyNjcsIAotICAgIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAKLSAgICAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjQ1LCAyNDUsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAwLCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjQ1LCAyNDUsIDI0NSwgMjQ1LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNDUsIDI0NSwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNDUsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjQ2LCAyNDYsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI3MCwgMjcwLCAyNzAsIDI0NiwgMjcxLCAyNzEsIDI3MSwgMjcxLCAKKyAgICAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNDYsIDI0NiwgMjQ2LCAKKyAgICAyNjcsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgCisgICAgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjcxLCAyNzEsIDI3MSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAyNDYsIDI0NiwgMjQ2LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI0NiwgMjQ2LCAyNDYsIDI0NiwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjQ2LCAyNDYsIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjQ2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMDgxLDIwICsyMDg2LDIwIEBACiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAyNDgsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDI0OSwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCkBAIC0yMTAzLDEyNCArMjEwOCwxMTUgQEAKICAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCiAgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAogICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDAsIDAsIDAsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAKLSAgICAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgCi0gICAgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIDI0NCwgMjQ0LCAyNDQsIAotICAgIDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCAKLSAgICA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCAxMzgsIDEzOCwgCi0gICAgMTM4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNTMsIDEzOCwgMTM4LCAxMzgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDQ4LCA0OCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAogICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAotICAgIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCA4MSwgODEsIDQ4LCA0OCwgCisgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDgsIDgxLCA4MiwgODIsIDgyLCAxMzgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIAorICAgIDgxLCA4MSwgODEsIDgxLCAxMzgsIDUyLCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNTEsIDUxLCAKKyAgICA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIAotICAgIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NywgNDcsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgODEsIDgxLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgCisgICAgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDU0LCA1NCwgNTQsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDU0LCA1NCwgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCisgICAgNDQsIDQ3LCA0NywgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCiAgICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgCi0gICAgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NCwgCi0gICAgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MiwgMjcxLCAyNzEsIDQ0LCAKLSAgICA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKLSAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIDQ0LCA0NCwgMCwgMCwgNDQsIAotICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDQsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCAKKyAgICA1MiwgMjcyLCAyNzIsIDQ0LCA0NywgNDQsIDQ3LCA0OCwgNDQsIDQ3LCA0NCwgNDcsIDQ3LCA0NywgNDQsIDQ3LCA0NCwgNDcsIAorICAgIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDcsIDQ0LCA0NywgNDQsIDQ3LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ0LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgNDgsIDE0MiwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDUxLCA1MSwgNDcsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCAKKyAgICA0OCwgNDgsIDE0MiwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzUsIAorICAgIDEzOSwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDgwLCA4MCwgCisgICAgODUsIDIyNSwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5LCAxMzksIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxNDIsIAorICAgIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODMsIDgzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDQ4LCAKKyAgICA4MywgNDgsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCA4NiwgODYsIDg2LCA4MywgCisgICAgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTc1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MywgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDUsIDEzOSwgMTM5LCAxMzUsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzksIDE3NSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgCisgICAgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDUzLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDUzLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMTM1LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDgzLCA4MywgODMsIDgzLCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNTMsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDgwLCA4MCwgODAsIDQ4LCAxMzksIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA0OCwgODEsIDgxLCA4NiwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgODEsIDgxLCA0OCwgODEsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDUzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM5LCAxMzksIDgzLCA4MywgNDgsIDUzLCA1MywgCisgICAgMTM5LCAxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDI3MiwgNTEsIDUxLCA1MSwgNTEsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM1LCAxMzksIDEzOSwgCisgICAgMTM1LCAxMzksIDEzOSwgODMsIDEzOSwgMTQyLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAogICAgIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzOSwgMTM5LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA4MywgODMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAKLSAgICA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODMsIDgzLCA4MywgNDgsIDgzLCA0OCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDg2LCA4NiwgODYsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxNzUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE0NSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTM5LCAxMzksIDEzOSwgMTc1LCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIAotICAgIDgzLCA4MywgMCwgNTMsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgCi0gICAgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgNTMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgCi0gICAgMTM5LCAxMzksIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCAxMzUsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgODMsIDgzLCA4MywgODMsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA1MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgODAsIDgwLCA4MCwgCi0gICAgNDgsIDEzOSwgMTM1LCAxMzksIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgODEsIDQ4LCA4MSwgODEsIDg2LCA0OCwgNDgsIDgxLCA4MSwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDQ4LCAKLSAgICA4MSwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDQ4LCA0OCwgNTMsIDgzLCA4MywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAxMzksIDEzNSwgMTM1LCAxMzksIDEzOSwgODMsIDgzLCA0OCwgNTMsIDUzLCAxMzksIDE0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMjcxLCAKLSAgICA1MSwgNTEsIDUxLCA1MSwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAotICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzOSwgMTM5LCA4MywgMTM5LCAKLSAgICAxNDIsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIAotICAgIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAKLSAgICAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgCi0gICAgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIAotICAgIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAKLSAgICAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgCi0gICAgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzIsIDI3MiwgMjcyLCAyNzMsIDI3MywgMjczLCAyNzMsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKQEAgLTIyMjksNyArMjIyNSw4IEBACiAgICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAogICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKICAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjc0LCAyNzQsIAorICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKKyAgICAyNzMsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCkBAIC0yMjM4LDM4ICsyMjM1LDQ3IEBACiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAogICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKICAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAxNzAsIDE3MCwgMjc0LCAxNzAsIDI3NCwgMTcwLCAxNzAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMTcwLCAyNzQsIDE3MCwgMjc0LCAxNzAsIDE3MCwgMjc0LCAyNzQsIDE3MCwgMTcwLCAxNzAsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAwLCAwLCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCi0gICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKLSAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMTcwLCAxNzAsIDI3NSwgMTcwLCAyNzUsIDE3MCwgMTcwLCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDE3MCwgMjc1LCAxNzAsIDI3NSwgMTcwLCAxNzAsIAorICAgIDI3NSwgMjc1LCAxNzAsIDE3MCwgMTcwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMCwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgCisgICAgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzUsIDI3NiwgMjc1LCAyNzcsIDI3NywgMjc3LCAyNzcsIDI3NywgCi0gICAgMjc3LCAyNzcsIDI3NywgMjc3LCAyMTUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIAotICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMCwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDI3NSwgMCwgMjc1LCAyNzUsIDAsIAotICAgIDI3NSwgMjc1LCAwLCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzcsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCAwLCAwLCAwLCAyNzYsIDI3NywgMjc2LCAKKyAgICAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyMTUsIDI3NiwgMjc2LCAyNzYsIDI3NiwgCisgICAgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMCwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDAsIDI3NiwgMCwgMjc2LCAyNzYsIDAsIDI3NiwgMjc2LCAwLCAyNzYsIDI3NiwgMjc2LCAyNzYsIDI3NiwgMjc2LCAyNzYsIAorICAgIDI3NiwgMjc2LCAyNzgsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyNzgsIDI3OCwgCi0gICAgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDI3OCwgMjc4LCAyNzgsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDI3OSwgCisgICAgMjc5LCAyNzksIDI3OSwgMjc5LCAyNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIyODUsMjcgKzIyOTEsMjcgQEAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjc5LCAxOTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMjgwLCAxOTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCi0gICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDEzMSwgMTMxLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAyODAsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKLSAgICA3MSwgNzEsIDcxLCA3MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODEsIDI4MSwgMjgxLCAyODIsIDI4MywgMjgxLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCAKLSAgICA4MSwgMjgxLCAyODQsIDI4NCwgMjg1LCAyODUsIDI4MiwgMjgzLCAyODIsIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIAotICAgIDI4MywgMjgyLCAyODMsIDI4MiwgMjgzLCAyODIsIDI4MywgMjQ3LCAyNDcsIDI4MiwgMjgzLCAyODEsIDI4MSwgMjgxLCAKLSAgICAyODEsIDI4NSwgMjg1LCAyODUsIDI4NiwgMjgxLCAyODYsIDAsIDI4MSwgMjg2LCAyODEsIDI4MSwgMjg0LCAyODcsIDI4OCwgCi0gICAgMjg3LCAyODgsIDI4NywgMjg4LCAyODksIDI4MSwgMjgxLCAyOTAsIDI5MSwgMjkyLCAyOTIsIDI5MywgMCwgMjgxLCAyOTQsIAotICAgIDI4OSwgMjgxLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCisgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAyODEsIDI2LCAwLCAwLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgMjgyLCAyODIsIDI4MiwgMjgyLCAyODIsIDI4MiwgCisgICAgMjgyLCAyODMsIDI4NCwgMjgyLCAwLCAwLCAwLCAwLCAwLCAwLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODYsIDg2LCAKKyAgICA4NiwgODYsIDg2LCA4NiwgODYsIDgxLCA4MSwgMjgyLCAyODUsIDI4NSwgMjg2LCAyODYsIDI4MywgMjg0LCAyODMsIDI4NCwgCisgICAgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjgzLCAyODQsIDI4MywgMjg0LCAyODMsIDI4NCwgMjQ4LCAyNDgsIAorICAgIDI4MywgMjg0LCAyODIsIDI4MiwgMjgyLCAyODIsIDI4NiwgMjg2LCAyODYsIDI4NywgMjgyLCAyODcsIDAsIDI4MiwgMjg3LCAKKyAgICAyODIsIDI4MiwgMjg1LCAyODgsIDI4OSwgMjg4LCAyODksIDI4OCwgMjg5LCAyOTAsIDI4MiwgMjgyLCAyOTEsIDI5MiwgCisgICAgMjkzLCAyOTMsIDI5NCwgMCwgMjgyLCAyOTUsIDI5MCwgMjgyLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMTgsIAorICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKQEAgLTIzMTQsMTY1ICsyMzIwLDE2NSBAQAogICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKICAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKLSAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMCwgMCwgMTc0LCAwLCAyOTUsIDI5NSwgMjk2LCAyOTcsIDI5NiwgMjk1LCAyOTUsIAotICAgIDI5OCwgMjk5LCAyOTUsIDMwMCwgMzAxLCAzMDIsIDMwMSwgMzAxLCAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMywgMzAzLCAKLSAgICAzMDMsIDMwMywgMzAzLCAzMDMsIDMwMSwgMjk1LCAzMDQsIDMwNSwgMzA0LCAyOTUsIDI5NSwgMzA2LCAzMDYsIDMwNiwgCi0gICAgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIAotICAgIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDMwNiwgMzA2LCAzMDYsIDI5OCwgMjk1LCAyOTksIDMwNywgMzA4LCAKLSAgICAzMDcsIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgCi0gICAgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAzMDksIDMwOSwgMzA5LCAyOTgsIAotICAgIDMwNSwgMjk5LCAzMDUsIDI5OCwgMjk5LCAzMTAsIDMxMSwgMzEyLCAzMTAsIDMxMCwgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTQsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxNCwgMzE0LCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIAotICAgIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAKLSAgICAzMTMsIDAsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgCi0gICAgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDMxMywgMzEzLCAzMTMsIDAsIDAsIDMxMywgMzEzLCAzMTMsIDAsIDAsIAotICAgIDAsIDI5NywgMjk3LCAzMDUsIDMwNywgMzE1LCAyOTcsIDI5NywgMCwgMzE2LCAzMTcsIDMxNywgMzE3LCAzMTcsIDMxNiwgCi0gICAgMzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTgsIDMxOCwgMzE4LCAyNiwgMzAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDE3NCwgMCwgMjk2LCAyOTYsIAorICAgIDI5NywgMjk4LCAyOTcsIDI5NiwgMjk2LCAyOTksIDMwMCwgMjk2LCAzMDEsIDMwMiwgMzAzLCAzMDIsIDMwMiwgMzA0LCAKKyAgICAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDQsIDMwNCwgMzA0LCAzMDIsIDI5NiwgMzA1LCAzMDYsIDMwNSwgCisgICAgMjk2LCAyOTYsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIAorICAgIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAzMDcsIDMwNywgMzA3LCAKKyAgICAyOTksIDI5NiwgMzAwLCAzMDgsIDMwOSwgMzA4LCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgCisgICAgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIDMxMCwgMzEwLCAzMTAsIAorICAgIDMxMCwgMzEwLCAzMTAsIDMxMCwgMjk5LCAzMDYsIDMwMCwgMzA2LCAyOTksIDMwMCwgMzExLCAzMTIsIDMxMywgMzExLCAKKyAgICAzMTEsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE1LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgCisgICAgMzE0LCAzMTUsIDMxNSwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIAorICAgIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAKKyAgICAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAzMTQsIDMxNCwgMzE0LCAzMTQsIDMxNCwgMzE0LCAwLCAKKyAgICAwLCAzMTQsIDMxNCwgMzE0LCAwLCAwLCAwLCAyOTgsIDI5OCwgMzA2LCAzMDgsIDMxNiwgMjk4LCAyOTgsIDAsIDMxNywgCisgICAgMzE4LCAzMTgsIDMxOCwgMzE4LCAzMTcsIDMxNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE5LCAzMTksIAorICAgIDMxOSwgMjYsIDMwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA4MywgMTM4LCA4MywgMCwgMCwgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDgzLCAxMzgsIDgzLCAwLCAwLCAKKyAgICAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAogICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKICAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIAotICAgIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAKLSAgICAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgCi0gICAgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAzMTksIAotICAgIDMxOSwgMzE5LCAzMTksIDMxOSwgMzE5LCAxNTMsIDE1MywgMTUzLCAxNTMsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMTUzLCAxNTMsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg2LCAzMjAsIDMyMCwgMzIwLCAKKyAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyMCwgCiAgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAotICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDE3MywgMCwgMCwgCi0gICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIAorICAgIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAKKyAgICAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDMyMCwgMzIwLCAzMjAsIDE1MywgMTUzLCAxNTMsIDE1MywgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAxNTMsIDE1MywgCisgICAgMjYsIDgwLCA4MCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgCisgICAgMCwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA4NiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKKyAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxNDgsIDE0OCwgCisgICAgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTczLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDE3MywgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDAsIDAsIDAsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIAorICAgIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIAorICAgIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCiAgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCi0gICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCiAgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCi0gICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDEwNywgMCwgCisgICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAKKyAgICAwLCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMTA3LCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMCwgMTA3LCAxMDcsIDAsIDAsIDAsIDEwNywgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAwLCAxMDQsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIzLCAzMjMsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDMyMiwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMCwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMCwgMCwgCisgICAgMCwgMCwgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAwLCAxMDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDAsIDAsIDAsIDEzOCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIDAsIDAsIDAsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDEwNywgMTA3LCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgCi0gICAgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAKLSAgICAzMjEsIDMyMSwgMTA3LCAxMzUsIDEzNSwgMTM1LCAwLCAxMzUsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMTM1LCA4NiwgMTM1LCAKLSAgICA4MSwgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgCisgICAgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIAorICAgIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAxMDcsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAwLCAwLCAwLCAwLCAwLCAxMzUsIDg2LCAKKyAgICAxMzUsIDgxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDAsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgMCwgMCwgCi0gICAgMCwgMTQyLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAwLCA4MSwgMTc2LCA4NiwgMCwgCisgICAgMCwgMCwgMCwgMTQyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAzMjEsIDMyMSwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCisgICAgMTA3LCAzMjIsIDMyMiwgMTA0LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNywgMTA3LCAxMDcsIAotICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMzIyLCAzMjIsIDMyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDMyMywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjEsIDMyMSwgMzIxLCAzMjEsIAotICAgIDMyMSwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgODEsIDg2LCAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMTA0LCAxMDQsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgMTM4LCAxMzgsIAotICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKLSAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIDAsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAwLCAwLCAwLCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgCisgICAgMCwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKKyAgICAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA0LCAxMDQsIDEwNCwgMTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjEsIAotICAgIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwNCwgMTA0LCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIyLCAKKyAgICAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIDEwNywgMTA3LCAxMDcsIApAQCAtMjQ4MywyMSArMjQ4OSwyMSBAQAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgCi0gICAgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIAotICAgIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAKLSAgICAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMzIzLCAzMjMsIDMyMywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKKyAgICAwLCAwLCAwLCAwLCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAKICAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCiAgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAotICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCiAgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIAotICAgIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAxMzksIDEzNSwgMTM5LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAKKyAgICAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCisgICAgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDAsIDEzOSwgMTM1LCAxMzksIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAKQEAgLTI1MzAsMTUgKzI1MzYsMTUgQEAKICAgICAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKLSAgICAxMzksIDEzNSwgMTc1LCAxNDUsIDEzNSwgODMsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTM5LCAxMzUsIDE3NSwgMTQ1LCAxMzUsIDgzLCA4MywgODMsIDgzLCA4MywgODMsIDEzNSwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDQ4LCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzOSwgMTM5LCAxMzUsIDEzNSwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzUsIDEzOSwgMTM5LCAxMzksIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0NSwgMTQyLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzksIDEzOSwgMCwgNDgsIDQ4LCAKICAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA0OCwgNDgsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKQEAgLTI1NTAsNiArMjU1NiwxMyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzksIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzOSwgMTM5LCAxNDIsIDEzNSwgMTM1LCAxMzksIDE0NSwgNDgsIDQ4LCA0OCwgNDgsIDgzLCA4MywgODMsIDgzLCAKKyAgICA4MywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCA4MywgMCwgODMsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAogICAgIDE0NiwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTQ5LCAxNDcsIDE0NywgMTQ2LCAKICAgICAxNDcsIDEzNSwgMTM1LCAxMzksIDE0MiwgMTQ1LCA0OCwgNDgsIDgzLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTI1NjYsMjMwICsyNTc5LDI2OCBAQAogICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAxMzksIDEzOSwgMTM5LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM5LCAxNDIsIDEzNSwgODMsIDgzLCAKICAgICA4MywgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgCisgICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAxMzgsIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIAorICAgIDEzOCwgMTM4LCAxMzgsIDEzOCwgMTM4LCAxMzgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDEzNSwgMTM5LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKLSAgICAxNzUsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIAotICAgIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzOSwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxNDIsIDAsIAotICAgIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ4LCAxNDgsIDgzLCAKLSAgICA4MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCAKLSAgICA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCAKLSAgICA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKLSAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgCi0gICAgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKLSAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCi0gICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAotICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAwLCA4MywgODMsIDgzLCA4MywgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM1LCAxMzksIDEzNSwgMTM5LCAxMzksIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDE3NSwgMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAxNDQsIAotICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDAsIDAsIDAsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM5LCAxMzksIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM5LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDE0MiwgMCwgMCwgMCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAKKyAgICAxNDQsIDE0NCwgMTQ0LCAxNDgsIDE0OCwgODMsIDgzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDE3NiwgMTc2LCAxNzYsIDE3NiwgMTc2LCAKLSAgICA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgzLCA4MywgODMsIDgzLCA4MywgODAsIDgwLCA4MCwgODAsIAotICAgIDUzLCA1MywgNTMsIDUzLCA4MywgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCi0gICAgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAotICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCi0gICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIAotICAgIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgCisgICAgNDQsIDQ0LCA0NCwgNDQsIDQ0LCA0NCwgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgCisgICAgNDcsIDQ3LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMTM5LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzOSwgMzI3LCA0OCwgODMsIDgzLCA4MywgODMsIAorICAgIDgzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgCisgICAgMTQ0LCAxNDQsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgODMsIDgzLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIAorICAgIDEzOSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAxMzksIDEzNSwgMTM1LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIAorICAgIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAKKyAgICAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgCisgICAgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDE3MywgMTczLCAxNzMsIDAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCiAgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCAKLSAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgCi0gICAgMCwgODAsIDEzNSwgMTc2LCA4MywgMTc0LCAxNzQsIDE3NCwgMTc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAwLCAwLCAwLCAwLCA4MywgCisgICAgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDMyNiwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgCi0gICAgMzI3LCAzMjcsIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIDMyOCwgMzI3LCAzMjcsIDMyNywgMzI3LCAzMjcsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCAKLSAgICA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKLSAgICA4MCwgMzI2LCAzMjYsIDMyNiwgMzI2LCAzMjYsIDMyNiwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIAorICAgIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAxNzYsIDE3NiwgMTc2LCAKKyAgICAxNzYsIDE3NiwgODMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MywgODMsIDgzLCA4MywgODMsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA1MywgNTMsIDUzLCA1MywgODMsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDQsIAorICAgIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDE0NCwgMTQ0LCAxNDQsIDAsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKKyAgICAxNDgsIDE0OCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDgsIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCA1MywgNTMsIDUzLCA1MywgCisgICAgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgNTMsIDUzLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAKKyAgICA0OCwgMCwgMCwgMCwgMCwgMCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIAorICAgIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgCisgICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCA4MCwgMTM1LCAxNzYsIDgzLCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgMzI5LCAzMjksIDE3NiwgMTc2LCAxNzYsIDgwLCA4MCwgODAsIAorICAgIDMzMCwgMzI5LCAzMjksIDMyOSwgMzI5LCAzMjksIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCA4NiwgCisgICAgODYsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIDgwLCA4MCwgODEsIDgxLCA4MSwgODEsIDgxLCA4NiwgODYsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgxLCA4MSwgODEsIDgxLCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMzI4LCAzMjgsIDMyOCwgMzI4LCAzMjgsIDMyOCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAKKyAgICA4MCwgODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDgxLCA4MSwgODEsIDI2LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAKLSAgICAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgMCwgNDksIDQ5LCAwLCAwLCA0OSwgMCwgCi0gICAgMCwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMCwgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIAorICAgIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAxNDgsIDE0OCwgMTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAwLCAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCi0gICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAotICAgIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzI5LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMjI2LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAwLCA0OSwgNDksIDAsIDAsIDQ5LCAwLCAwLCA0OSwgNDksIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAwLCAzNSwgMCwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKICAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKLSAgICA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMyOSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgCisgICAgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAwLCAKKyAgICAwLCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgMCwgNDksIDQ5LCA0OSwgNDksIDAsIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgMCwgNDksIDAsIDAsIDAsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAwLCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAogICAgIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAotICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzMjksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKICAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKLSAgICAyMjYsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCAzNSwgMCwgMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIAotICAgIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAKLSAgICAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgMzMwLCAzMzAsIDMzMCwgCi0gICAgMzMwLCAzMzAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAorICAgIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMCwgMCwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIAorICAgIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAKKyAgICAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgCisgICAgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIAorICAgIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCAKKyAgICA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDQ5LCA0OSwgNDksIDMzMSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCisgICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDIyNiwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgNDksIDM1LCAwLCAwLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCisgICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAorICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKKyAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCiAgICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCA4MCwgODAsIDgwLCA4MCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDEzNSwgMTM1LCAxMzUsIAogICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKICAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCi0gICAgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgODAsIDgwLCA4MCwgCi0gICAgODAsIDgwLCA4MCwgODAsIDgwLCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgzLCA4MywgODMsIDgzLCA4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIAotICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgMTM1LCA4MCwgODAsIDgwLCA4MCwgCisgICAgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDEzNSwgODAsIDgwLCA4MywgODMsIDgzLCA4MywgODMsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAwLCAKKyAgICAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgMTM1LCAxMzUsIDEzNSwgCisgICAgMTM1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDgxLCA4MSwgCisgICAgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDgxLCA4MSwgODEsIDAsIDAsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDgxLCAwLCA4MSwgODEsIDAsIDgxLCA4MSwgODEsIDgxLCA4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCkBAIC0yODAzLDExICsyODU0LDE4IEBACiAgICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIAogICAgIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAKICAgICAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgCi0gICAgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDEwNywgMTA3LCAxMDcsIDAsIAotICAgIDAsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDMyMSwgMzIxLCAzMjEsIDg2LCA4NiwgODYsIDg2LCA4NiwgODYsIAotICAgIDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAotICAgIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAKKyAgICAxMDcsIDEwNywgMTA3LCAwLCAwLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCAzMjIsIDMyMiwgMzIyLCA4NiwgODYsIAorICAgIDg2LCA4NiwgODYsIDg2LCA4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI0LCAKKyAgICAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgCisgICAgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjQsIAorICAgIDMyNCwgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAKKyAgICAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgCisgICAgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDMyNSwgMzI1LCAzMjUsIDgxLCA4MSwgODEsIDgxLCAKKyAgICA4MSwgODEsIDE0NSwgMCwgMCwgMCwgMCwgMCwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCisgICAgMTM2LCAwLCAwLCAwLCAwLCAxMDQsIDEwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAKKyAgICAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgCiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAwLCAwLCAxMzEsIDAsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIAogICAgIDEzMSwgMCwgMTMxLCAxMzEsIDEzMSwgMTMxLCAwLCAxMzEsIDAsIDEzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxLCAwLCAwLCAKQEAgLTI4MjEsNyArMjg3OSw3IEBACiAgICAgMTMxLCAxMzEsIDEzMSwgMTMxLCAxMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4LCA3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIApAQCAtMjgzMiwxNzMgKzI4OTAsMjA4IEBACiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMSwgMCwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIAotICAgIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAKLSAgICAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDI0MSwgMzMyLCAzMzIsIDMzMiwgCi0gICAgMzMyLCAzMzIsIDMzMiwgMzMyLCAzMzIsIDMzMiwgMzMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTUzLCAxNTMsIDAsIDAsIDAsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzMywgMCwgCisgICAgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIAorICAgIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAyNDIsIDI0MiwgMjQyLCAKKyAgICAyNDIsIDI0MiwgMjQyLCAyNDIsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgCisgICAgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAyMjIsIDIyMiwgMCwgMCwgMCwgMCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAKKyAgICAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMjY3LCAzMzQsIDI0MiwgMjY3LCAyNjcsIDI2NywgCisgICAgMjY3LCAyNjcsIDI2NywgMjY3LCAyNjcsIDI2NywgMjY3LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIAorICAgIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzQsIDMzNCwgMzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAotICAgIDI2OCwgMjY4LCAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2OCwgMjY4LCAyNjgsIDI2OCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIAotICAgIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAKLSAgICAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjgsIDI2OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY4LCAKLSAgICAyNjgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgNTQsIDU0LCAKLSAgICA1NCwgNTQsIDU0LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIAorICAgIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCA4MCwgODAsIDgwLCAyNjksIDI2OSwgMjY5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIAorICAgIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAKKyAgICAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDI2OSwgMjY5LCAyNjksIDI2OSwgCisgICAgMjY5LCAyNjksIDI2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5LCAyNjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjM5LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAzMzUsIDMzNSwgMzM1LCAzMzUsIDMzNSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjYsIDIzOSwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAKICAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyNiwgMjYsIDI2LCAyNiwgCisgICAgMjYsIDI2LCAyMzksIDI2LCAyNiwgMjYsIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjM5LCAyMzksIDAsIDAsIDAsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyMzksIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAorICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAogICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCiAgICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgCi0gICAgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIAotICAgIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyNiwgMjYsIDI2LCAKLSAgICAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMzksIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAKKyAgICAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIzOSwgCisgICAgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIDIzOSwgMjM5LCAyMzksIAorICAgIDIzOSwgMjM5LCAyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDIzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAorICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKKyAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCisgICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjYsIDI2LCAyNiwgMjYsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAwLCAwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIAotICAgIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAKLSAgICAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgMTcwLCAxNzAsIDE3MCwgCi0gICAgMTcwLCAxNzAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NSwgMjc1LCAyNzUsIAorICAgIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAKKyAgICAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDI3NSwgMjc1LCAyNzUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAorICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKKyAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCisgICAgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCAKKyAgICA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCiAgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAotICAgIDI3NCwgMjc0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIAotICAgIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAKLSAgICAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDE3NCwgCi0gICAgMTc0LCAxNzQsIDE3NCwgMTc0LCAxNzQsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIAotICAgIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDcxLCA3MSwgNzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgCi0gICAgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIAotICAgIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAyNzMsIDI3MywgMjczLCAKLSAgICAyNzMsIDI3MywgMjczLCAyNzMsIDAsIDAsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgCisgICAgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIAorICAgIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAyNzQsIDI3NCwgMjc0LCAKKyAgICAyNzQsIDAsIDAsIAogfTsKIAogLyogZGVjb21wb3NpdGlvbiBkYXRhICovCkBAIC0zOTcwLDEwMiArNDA2MywxMDIgQEAKICAgICAyNjYsIDI4NDM2LCAyNjYsIDI1MjM3LCAyNjYsIDI1NDI5LCAyNjYsIDE5OTY4LCAyNjYsIDE5OTc3LCAyNjYsIDM2OTM4LCAKICAgICAyNjYsIDI0MDM4LCAyNjYsIDIwMDEzLCAyNjYsIDIxNDkxLCAyNjYsIDI1MzUxLCAyNjYsIDM2MjA4LCAyNjYsIDI1MTcxLCAKICAgICAyNjYsIDMxMTA1LCAyNjYsIDMxMzU0LCAyNjYsIDIxNTEyLCAyNjYsIDI4Mjg4LCAyNjYsIDI2Mzc3LCAyNjYsIDI2Mzc2LCAKLSAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIDc3MCwgMTIzMDgsIAotICAgIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgMTIzMDksIDc3MCwgCi0gICAgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAzMDQyMywgMTIzMDksIAotICAgIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIDI0NDcxLCAyNjMsIAotICAgIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAyMDMyMCwgMjU2LCAKLSAgICAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAyMDcxMSwgMjU2LCAKLSAgICAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgMjA4MzYsIDI1NiwgCi0gICAgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIDEzMjQyNywgMjU2LCAKLSAgICAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAxNjg0MTUsIDI1NiwgCi0gICAgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgMjExMDYsIDI1NiwgCi0gICAgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgMjEyNDIsIDI1NiwgCi0gICAgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgMjEzMzgsIDI1NiwgCi0gICAgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMTMzNjc2LCAyNTYsIAotICAgIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAyMTQ4OSwgMjU2LCAKLSAgICAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAyMTY2NiwgMjU2LCAKLSAgICAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAyMTg5MiwgMjU2LCAKLSAgICAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAyMjAyMiwgMjU2LCAKLSAgICAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAyMjQ3OCwgMjU2LCAKLSAgICAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAyMjcwMCwgMjU2LCAKLSAgICAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgMjI4MTgsIDI1NiwgCi0gICAgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAyMzA3OSwgMjU2LCAKLSAgICAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAyMzM1OCwgMjU2LCAKLSAgICAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgMjM1MzksIDI1NiwgCi0gICAgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIDE0MjA5LCAyNTYsIAotICAgIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAyMzg3NSwgMjU2LCAKLSAgICAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgMjQwMzQsIDI1NiwgCi0gICAgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgMTQ0MzQsIDI1NiwgCi0gICAgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIDI0MjY2LCAyNTYsIAotICAgIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAyNTYsIDI0MzU0LCAKLSAgICAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIDI1NiwgMjQ0MjcsIAotICAgIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIDI1NiwgMjQ3MDUsIAotICAgIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAyNTYsIDI0OTA0LCAKLSAgICAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAyNTYsIDI1MDEwLCAKLSAgICAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAyNTYsIDI1MTA0LCAKLSAgICAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAyNTYsIDE0MjA5MiwgCi0gICAgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgMjU2LCAxNDIzMjEsIAotICAgIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIDI1NiwgMjU3MjYsIAotICAgIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIDI1NiwgMTQzMzcwLCAKLSAgICAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAyNTYsIDE1MTEyLCAKLSAgICAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAyNTYsIDMyOTQxLCAKLSAgICAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAyNTYsIDI2NDUxLCAKLSAgICAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgMjU2LCAyNjc1NywgCi0gICAgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIDI1NiwgMjY5NDYsIAotICAgIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAyNTYsIDE1Mzg0LCAKLSAgICAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgMjU2LCAyNzU1MSwgCi0gICAgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIDE0NjE3MCwgMjU2LCAKLSAgICAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgMjc5MjYsIDI1NiwgCi0gICAgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgMjgwMzcsIDI1NiwgCi0gICAgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIDI4MzYzLCAyNTYsIAotICAgIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgMTQ3MzQyLCAKLSAgICAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIDI4NzQ2LCAKLSAgICAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAxNDgwNjcsIAotICAgIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIDE0OTAwMCwgCi0gICAgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAyNTYsIDI5NTc5LCAKLSAgICAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAyNTYsIDI5Nzg4LCAKLSAgICAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAyNTYsIDE1MDU4MiwgCi0gICAgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIDMwMjI0LCAyNTYsIAotICAgIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAyNTYsIDMwNDUyLCAKLSAgICAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAzMDQ5NCwgMjU2LCAKLSAgICAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAxNjQ1NCwgMjU2LCAKLSAgICAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgMTY2MTEsIDI1NiwgCi0gICAgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIDI1NiwgMzEyMTEsIAotICAgIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAyNTYsIDE1NDI3OSwgCi0gICAgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIDMxNjg2LCAyNTYsIDMxNjg5LCAKLSAgICAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAzMTk3NiwgMjU2LCAzMTk3MSwgCi0gICAgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgMzIxOTksIDI1NiwgMzIyNTgsIAotICAgIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAxNzI0MSwgMjU2LCAKLSAgICAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIDMyNzczLCAyNTYsIAotICAgIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAyNTYsIDE0NDIyMywgCi0gICAgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgMjU2LCAyMzIyMSwgCi0gICAgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgMzMyODEsIDI1NiwgCi0gICAgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgMzM0MzcsIDI1NiwgCi0gICAgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgMTU4NTI0LCAyNTYsIAotICAgIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIDMzNzI1LCAyNTYsIAotICAgIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIDMzNzU2LCAyNTYsIAotICAgIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAyNTYsIDM0MDM1LCAKLSAgICAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIDI1NiwgMTc3NjEsIAotICAgIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgMjU2LCAzNDQwNywgCi0gICAgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgMjU2LCAzNDY4MSwgCi0gICAgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgMjU2LCAzNDgxNywgCi0gICAgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIDI1NiwgMzUwMzgsIAotICAgIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgMjU2LCAxODExMCwgCi0gICAgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgMjU2LCAxNjI5ODQsIAotICAgIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAyNTYsIDEzMzEyNCwgCi0gICAgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIDI1NiwgMzY2NjQsIAotICAgIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgMjU2LCAKLSAgICAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIDI1NiwgCi0gICAgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAyNTYsIAotICAgIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIDI1NiwgCi0gICAgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgMjU2LCAKLSAgICAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAyNTYsIAotICAgIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAyNTYsIAotICAgIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgMjU2LCAKLSAgICA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAxNzI2ODksIAotICAgIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgNDA3MTksIAotICAgIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKKyAgICAyNjYsIDMwMDAzLCAyNjYsIDIxMTA2LCAyNjYsIDIxOTQyLCAyNjYsIDM3MTk3LCA3NzAsIDEyMzA4LCAyNjQxMiwgMTIzMDksIAorICAgIDc3MCwgMTIzMDgsIDE5OTc3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjAxMDgsIDEyMzA5LCA3NzAsIDEyMzA4LCAyMzQzMywgCisgICAgMTIzMDksIDc3MCwgMTIzMDgsIDI4ODU3LCAxMjMwOSwgNzcwLCAxMjMwOCwgMjUxNzEsIDEyMzA5LCA3NzAsIDEyMzA4LCAKKyAgICAzMDQyMywgMTIzMDksIDc3MCwgMTIzMDgsIDIxMjEzLCAxMjMwOSwgNzcwLCAxMjMwOCwgMjU5NDMsIDEyMzA5LCAyNjMsIAorICAgIDI0NDcxLCAyNjMsIDIxNDg3LCAyNTYsIDIwMDI5LCAyNTYsIDIwMDI0LCAyNTYsIDIwMDMzLCAyNTYsIDEzMTM2MiwgMjU2LCAKKyAgICAyMDMyMCwgMjU2LCAyMDM5OCwgMjU2LCAyMDQxMSwgMjU2LCAyMDQ4MiwgMjU2LCAyMDYwMiwgMjU2LCAyMDYzMywgMjU2LCAKKyAgICAyMDcxMSwgMjU2LCAyMDY4NywgMjU2LCAxMzQ3MCwgMjU2LCAxMzI2NjYsIDI1NiwgMjA4MTMsIDI1NiwgMjA4MjAsIDI1NiwgCisgICAgMjA4MzYsIDI1NiwgMjA4NTUsIDI1NiwgMTMyMzgwLCAyNTYsIDEzNDk3LCAyNTYsIDIwODM5LCAyNTYsIDIwODc3LCAyNTYsIAorICAgIDEzMjQyNywgMjU2LCAyMDg4NywgMjU2LCAyMDkwMCwgMjU2LCAyMDE3MiwgMjU2LCAyMDkwOCwgMjU2LCAyMDkxNywgMjU2LCAKKyAgICAxNjg0MTUsIDI1NiwgMjA5ODEsIDI1NiwgMjA5OTUsIDI1NiwgMTM1MzUsIDI1NiwgMjEwNTEsIDI1NiwgMjEwNjIsIDI1NiwgCisgICAgMjExMDYsIDI1NiwgMjExMTEsIDI1NiwgMTM1ODksIDI1NiwgMjExOTEsIDI1NiwgMjExOTMsIDI1NiwgMjEyMjAsIDI1NiwgCisgICAgMjEyNDIsIDI1NiwgMjEyNTMsIDI1NiwgMjEyNTQsIDI1NiwgMjEyNzEsIDI1NiwgMjEzMjEsIDI1NiwgMjEzMjksIDI1NiwgCisgICAgMjEzMzgsIDI1NiwgMjEzNjMsIDI1NiwgMjEzNzMsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgMjEzNzUsIDI1NiwgCisgICAgMTMzNjc2LCAyNTYsIDI4Nzg0LCAyNTYsIDIxNDUwLCAyNTYsIDIxNDcxLCAyNTYsIDEzMzk4NywgMjU2LCAyMTQ4MywgMjU2LCAKKyAgICAyMTQ4OSwgMjU2LCAyMTUxMCwgMjU2LCAyMTY2MiwgMjU2LCAyMTU2MCwgMjU2LCAyMTU3NiwgMjU2LCAyMTYwOCwgMjU2LCAKKyAgICAyMTY2NiwgMjU2LCAyMTc1MCwgMjU2LCAyMTc3NiwgMjU2LCAyMTg0MywgMjU2LCAyMTg1OSwgMjU2LCAyMTg5MiwgMjU2LCAKKyAgICAyMTg5MiwgMjU2LCAyMTkxMywgMjU2LCAyMTkzMSwgMjU2LCAyMTkzOSwgMjU2LCAyMTk1NCwgMjU2LCAyMjI5NCwgMjU2LCAKKyAgICAyMjAyMiwgMjU2LCAyMjI5NSwgMjU2LCAyMjA5NywgMjU2LCAyMjEzMiwgMjU2LCAyMDk5OSwgMjU2LCAyMjc2NiwgMjU2LCAKKyAgICAyMjQ3OCwgMjU2LCAyMjUxNiwgMjU2LCAyMjU0MSwgMjU2LCAyMjQxMSwgMjU2LCAyMjU3OCwgMjU2LCAyMjU3NywgMjU2LCAKKyAgICAyMjcwMCwgMjU2LCAxMzY0MjAsIDI1NiwgMjI3NzAsIDI1NiwgMjI3NzUsIDI1NiwgMjI3OTAsIDI1NiwgMjI4MTAsIDI1NiwgCisgICAgMjI4MTgsIDI1NiwgMjI4ODIsIDI1NiwgMTM2ODcyLCAyNTYsIDEzNjkzOCwgMjU2LCAyMzAyMCwgMjU2LCAyMzA2NywgMjU2LCAKKyAgICAyMzA3OSwgMjU2LCAyMzAwMCwgMjU2LCAyMzE0MiwgMjU2LCAxNDA2MiwgMjU2LCAxNDA3NiwgMjU2LCAyMzMwNCwgMjU2LCAKKyAgICAyMzM1OCwgMjU2LCAyMzM1OCwgMjU2LCAxMzc2NzIsIDI1NiwgMjM0OTEsIDI1NiwgMjM1MTIsIDI1NiwgMjM1MjcsIDI1NiwgCisgICAgMjM1MzksIDI1NiwgMTM4MDA4LCAyNTYsIDIzNTUxLCAyNTYsIDIzNTU4LCAyNTYsIDI0NDAzLCAyNTYsIDIzNTg2LCAyNTYsIAorICAgIDE0MjA5LCAyNTYsIDIzNjQ4LCAyNTYsIDIzNjYyLCAyNTYsIDIzNzQ0LCAyNTYsIDIzNjkzLCAyNTYsIDEzODcyNCwgMjU2LCAKKyAgICAyMzg3NSwgMjU2LCAxMzg3MjYsIDI1NiwgMjM5MTgsIDI1NiwgMjM5MTUsIDI1NiwgMjM5MzIsIDI1NiwgMjQwMzMsIDI1NiwgCisgICAgMjQwMzQsIDI1NiwgMTQzODMsIDI1NiwgMjQwNjEsIDI1NiwgMjQxMDQsIDI1NiwgMjQxMjUsIDI1NiwgMjQxNjksIDI1NiwgCisgICAgMTQ0MzQsIDI1NiwgMTM5NjUxLCAyNTYsIDE0NDYwLCAyNTYsIDI0MjQwLCAyNTYsIDI0MjQzLCAyNTYsIDI0MjQ2LCAyNTYsIAorICAgIDI0MjY2LCAyNTYsIDE3Mjk0NiwgMjU2LCAyNDMxOCwgMjU2LCAxNDAwODEsIDI1NiwgMTQwMDgxLCAyNTYsIDMzMjgxLCAKKyAgICAyNTYsIDI0MzU0LCAyNTYsIDI0MzU0LCAyNTYsIDE0NTM1LCAyNTYsIDE0NDA1NiwgMjU2LCAxNTYxMjIsIDI1NiwgMjQ0MTgsIAorICAgIDI1NiwgMjQ0MjcsIDI1NiwgMTQ1NjMsIDI1NiwgMjQ0NzQsIDI1NiwgMjQ1MjUsIDI1NiwgMjQ1MzUsIDI1NiwgMjQ1NjksIAorICAgIDI1NiwgMjQ3MDUsIDI1NiwgMTQ2NTAsIDI1NiwgMTQ2MjAsIDI1NiwgMjQ3MjQsIDI1NiwgMTQxMDEyLCAyNTYsIDI0Nzc1LCAKKyAgICAyNTYsIDI0OTA0LCAyNTYsIDI0OTA4LCAyNTYsIDI0OTEwLCAyNTYsIDI0OTA4LCAyNTYsIDI0OTU0LCAyNTYsIDI0OTc0LCAKKyAgICAyNTYsIDI1MDEwLCAyNTYsIDI0OTk2LCAyNTYsIDI1MDA3LCAyNTYsIDI1MDU0LCAyNTYsIDI1MDc0LCAyNTYsIDI1MDc4LCAKKyAgICAyNTYsIDI1MTA0LCAyNTYsIDI1MTE1LCAyNTYsIDI1MTgxLCAyNTYsIDI1MjY1LCAyNTYsIDI1MzAwLCAyNTYsIDI1NDI0LCAKKyAgICAyNTYsIDE0MjA5MiwgMjU2LCAyNTQwNSwgMjU2LCAyNTM0MCwgMjU2LCAyNTQ0OCwgMjU2LCAyNTQ3NSwgMjU2LCAyNTU3MiwgCisgICAgMjU2LCAxNDIzMjEsIDI1NiwgMjU2MzQsIDI1NiwgMjU1NDEsIDI1NiwgMjU1MTMsIDI1NiwgMTQ4OTQsIDI1NiwgMjU3MDUsIAorICAgIDI1NiwgMjU3MjYsIDI1NiwgMjU3NTcsIDI1NiwgMjU3MTksIDI1NiwgMTQ5NTYsIDI1NiwgMjU5MzUsIDI1NiwgMjU5NjQsIAorICAgIDI1NiwgMTQzMzcwLCAyNTYsIDI2MDgzLCAyNTYsIDI2MzYwLCAyNTYsIDI2MTg1LCAyNTYsIDE1MTI5LCAyNTYsIDI2MjU3LCAKKyAgICAyNTYsIDE1MTEyLCAyNTYsIDE1MDc2LCAyNTYsIDIwODgyLCAyNTYsIDIwODg1LCAyNTYsIDI2MzY4LCAyNTYsIDI2MjY4LCAKKyAgICAyNTYsIDMyOTQxLCAyNTYsIDE3MzY5LCAyNTYsIDI2MzkxLCAyNTYsIDI2Mzk1LCAyNTYsIDI2NDAxLCAyNTYsIDI2NDYyLCAKKyAgICAyNTYsIDI2NDUxLCAyNTYsIDE0NDMyMywgMjU2LCAxNTE3NywgMjU2LCAyNjYxOCwgMjU2LCAyNjUwMSwgMjU2LCAyNjcwNiwgCisgICAgMjU2LCAyNjc1NywgMjU2LCAxNDQ0OTMsIDI1NiwgMjY3NjYsIDI1NiwgMjY2NTUsIDI1NiwgMjY5MDAsIDI1NiwgMTUyNjEsIAorICAgIDI1NiwgMjY5NDYsIDI1NiwgMjcwNDMsIDI1NiwgMjcxMTQsIDI1NiwgMjczMDQsIDI1NiwgMTQ1MDU5LCAyNTYsIDI3MzU1LCAKKyAgICAyNTYsIDE1Mzg0LCAyNTYsIDI3NDI1LCAyNTYsIDE0NTU3NSwgMjU2LCAyNzQ3NiwgMjU2LCAxNTQzOCwgMjU2LCAyNzUwNiwgCisgICAgMjU2LCAyNzU1MSwgMjU2LCAyNzU3OCwgMjU2LCAyNzU3OSwgMjU2LCAxNDYwNjEsIDI1NiwgMTM4NTA3LCAyNTYsIAorICAgIDE0NjE3MCwgMjU2LCAyNzcyNiwgMjU2LCAxNDY2MjAsIDI1NiwgMjc4MzksIDI1NiwgMjc4NTMsIDI1NiwgMjc3NTEsIDI1NiwgCisgICAgMjc5MjYsIDI1NiwgMjc5NjYsIDI1NiwgMjgwMjMsIDI1NiwgMjc5NjksIDI1NiwgMjgwMDksIDI1NiwgMjgwMjQsIDI1NiwgCisgICAgMjgwMzcsIDI1NiwgMTQ2NzE4LCAyNTYsIDI3OTU2LCAyNTYsIDI4MjA3LCAyNTYsIDI4MjcwLCAyNTYsIDE1NjY3LCAyNTYsIAorICAgIDI4MzYzLCAyNTYsIDI4MzU5LCAyNTYsIDE0NzE1MywgMjU2LCAyODE1MywgMjU2LCAyODUyNiwgMjU2LCAxNDcyOTQsIDI1NiwgCisgICAgMTQ3MzQyLCAyNTYsIDI4NjE0LCAyNTYsIDI4NzI5LCAyNTYsIDI4NzAyLCAyNTYsIDI4Njk5LCAyNTYsIDE1NzY2LCAyNTYsIAorICAgIDI4NzQ2LCAyNTYsIDI4Nzk3LCAyNTYsIDI4NzkxLCAyNTYsIDI4ODQ1LCAyNTYsIDEzMjM4OSwgMjU2LCAyODk5NywgMjU2LCAKKyAgICAxNDgwNjcsIDI1NiwgMjkwODQsIDI1NiwgMTQ4Mzk1LCAyNTYsIDI5MjI0LCAyNTYsIDI5MjM3LCAyNTYsIDI5MjY0LCAyNTYsIAorICAgIDE0OTAwMCwgMjU2LCAyOTMxMiwgMjU2LCAyOTMzMywgMjU2LCAxNDkzMDEsIDI1NiwgMTQ5NTI0LCAyNTYsIDI5NTYyLCAKKyAgICAyNTYsIDI5NTc5LCAyNTYsIDE2MDQ0LCAyNTYsIDI5NjA1LCAyNTYsIDE2MDU2LCAyNTYsIDE2MDU2LCAyNTYsIDI5NzY3LCAKKyAgICAyNTYsIDI5Nzg4LCAyNTYsIDI5ODA5LCAyNTYsIDI5ODI5LCAyNTYsIDI5ODk4LCAyNTYsIDE2MTU1LCAyNTYsIDI5OTg4LCAKKyAgICAyNTYsIDE1MDU4MiwgMjU2LCAzMDAxNCwgMjU2LCAxNTA2NzQsIDI1NiwgMzAwNjQsIDI1NiwgMTM5Njc5LCAyNTYsIAorICAgIDMwMjI0LCAyNTYsIDE1MTQ1NywgMjU2LCAxNTE0ODAsIDI1NiwgMTUxNjIwLCAyNTYsIDE2MzgwLCAyNTYsIDE2MzkyLCAKKyAgICAyNTYsIDMwNDUyLCAyNTYsIDE1MTc5NSwgMjU2LCAxNTE3OTQsIDI1NiwgMTUxODMzLCAyNTYsIDE1MTg1OSwgMjU2LCAKKyAgICAzMDQ5NCwgMjU2LCAzMDQ5NSwgMjU2LCAzMDQ5NSwgMjU2LCAzMDUzOCwgMjU2LCAxNjQ0MSwgMjU2LCAzMDYwMywgMjU2LCAKKyAgICAxNjQ1NCwgMjU2LCAxNjUzNCwgMjU2LCAxNTI2MDUsIDI1NiwgMzA3OTgsIDI1NiwgMzA4NjAsIDI1NiwgMzA5MjQsIDI1NiwgCisgICAgMTY2MTEsIDI1NiwgMTUzMTI2LCAyNTYsIDMxMDYyLCAyNTYsIDE1MzI0MiwgMjU2LCAxNTMyODUsIDI1NiwgMzExMTksIAorICAgIDI1NiwgMzEyMTEsIDI1NiwgMTY2ODcsIDI1NiwgMzEyOTYsIDI1NiwgMzEzMDYsIDI1NiwgMzEzMTEsIDI1NiwgMTUzOTgwLCAKKyAgICAyNTYsIDE1NDI3OSwgMjU2LCAxNTQyNzksIDI1NiwgMzE0NzAsIDI1NiwgMTY4OTgsIDI1NiwgMTU0NTM5LCAyNTYsIAorICAgIDMxNjg2LCAyNTYsIDMxNjg5LCAyNTYsIDE2OTM1LCAyNTYsIDE1NDc1MiwgMjU2LCAzMTk1NCwgMjU2LCAxNzA1NiwgMjU2LCAKKyAgICAzMTk3NiwgMjU2LCAzMTk3MSwgMjU2LCAzMjAwMCwgMjU2LCAxNTU1MjYsIDI1NiwgMzIwOTksIDI1NiwgMTcxNTMsIDI1NiwgCisgICAgMzIxOTksIDI1NiwgMzIyNTgsIDI1NiwgMzIzMjUsIDI1NiwgMTcyMDQsIDI1NiwgMTU2MjAwLCAyNTYsIDE1NjIzMSwgMjU2LCAKKyAgICAxNzI0MSwgMjU2LCAxNTYzNzcsIDI1NiwgMzI2MzQsIDI1NiwgMTU2NDc4LCAyNTYsIDMyNjYxLCAyNTYsIDMyNzYyLCAyNTYsIAorICAgIDMyNzczLCAyNTYsIDE1Njg5MCwgMjU2LCAxNTY5NjMsIDI1NiwgMzI4NjQsIDI1NiwgMTU3MDk2LCAyNTYsIDMyODgwLCAKKyAgICAyNTYsIDE0NDIyMywgMjU2LCAxNzM2NSwgMjU2LCAzMjk0NiwgMjU2LCAzMzAyNywgMjU2LCAxNzQxOSwgMjU2LCAzMzA4NiwgCisgICAgMjU2LCAyMzIyMSwgMjU2LCAxNTc2MDcsIDI1NiwgMTU3NjIxLCAyNTYsIDE0NDI3NSwgMjU2LCAxNDQyODQsIDI1NiwgCisgICAgMzMyODEsIDI1NiwgMzMyODQsIDI1NiwgMzY3NjYsIDI1NiwgMTc1MTUsIDI1NiwgMzM0MjUsIDI1NiwgMzM0MTksIDI1NiwgCisgICAgMzM0MzcsIDI1NiwgMjExNzEsIDI1NiwgMzM0NTcsIDI1NiwgMzM0NTksIDI1NiwgMzM0NjksIDI1NiwgMzM1MTAsIDI1NiwgCisgICAgMTU4NTI0LCAyNTYsIDMzNTA5LCAyNTYsIDMzNTY1LCAyNTYsIDMzNjM1LCAyNTYsIDMzNzA5LCAyNTYsIDMzNTcxLCAyNTYsIAorICAgIDMzNzI1LCAyNTYsIDMzNzY3LCAyNTYsIDMzODc5LCAyNTYsIDMzNjE5LCAyNTYsIDMzNzM4LCAyNTYsIDMzNzQwLCAyNTYsIAorICAgIDMzNzU2LCAyNTYsIDE1ODc3NCwgMjU2LCAxNTkwODMsIDI1NiwgMTU4OTMzLCAyNTYsIDE3NzA3LCAyNTYsIDM0MDMzLCAKKyAgICAyNTYsIDM0MDM1LCAyNTYsIDM0MDcwLCAyNTYsIDE2MDcxNCwgMjU2LCAzNDE0OCwgMjU2LCAxNTk1MzIsIDI1NiwgMTc3NTcsIAorICAgIDI1NiwgMTc3NjEsIDI1NiwgMTU5NjY1LCAyNTYsIDE1OTk1NCwgMjU2LCAxNzc3MSwgMjU2LCAzNDM4NCwgMjU2LCAzNDM5NiwgCisgICAgMjU2LCAzNDQwNywgMjU2LCAzNDQwOSwgMjU2LCAzNDQ3MywgMjU2LCAzNDQ0MCwgMjU2LCAzNDU3NCwgMjU2LCAzNDUzMCwgCisgICAgMjU2LCAzNDY4MSwgMjU2LCAzNDYwMCwgMjU2LCAzNDY2NywgMjU2LCAzNDY5NCwgMjU2LCAxNzg3OSwgMjU2LCAzNDc4NSwgCisgICAgMjU2LCAzNDgxNywgMjU2LCAxNzkxMywgMjU2LCAzNDkxMiwgMjU2LCAzNDkxNSwgMjU2LCAxNjEzODMsIDI1NiwgMzUwMzEsIAorICAgIDI1NiwgMzUwMzgsIDI1NiwgMTc5NzMsIDI1NiwgMzUwNjYsIDI1NiwgMTM0OTksIDI1NiwgMTYxOTY2LCAyNTYsIDE2MjE1MCwgCisgICAgMjU2LCAxODExMCwgMjU2LCAxODExOSwgMjU2LCAzNTQ4OCwgMjU2LCAzNTU2NSwgMjU2LCAzNTcyMiwgMjU2LCAzNTkyNSwgCisgICAgMjU2LCAxNjI5ODQsIDI1NiwgMzYwMTEsIDI1NiwgMzYwMzMsIDI1NiwgMzYxMjMsIDI1NiwgMzYyMTUsIDI1NiwgMTYzNjMxLCAKKyAgICAyNTYsIDEzMzEyNCwgMjU2LCAzNjI5OSwgMjU2LCAzNjI4NCwgMjU2LCAzNjMzNiwgMjU2LCAxMzMzNDIsIDI1NiwgMzY1NjQsIAorICAgIDI1NiwgMzY2NjQsIDI1NiwgMTY1MzMwLCAyNTYsIDE2NTM1NywgMjU2LCAzNzAxMiwgMjU2LCAzNzEwNSwgMjU2LCAzNzEzNywgCisgICAgMjU2LCAxNjU2NzgsIDI1NiwgMzcxNDcsIDI1NiwgMzc0MzIsIDI1NiwgMzc1OTEsIDI1NiwgMzc1OTIsIDI1NiwgMzc1MDAsIAorICAgIDI1NiwgMzc4ODEsIDI1NiwgMzc5MDksIDI1NiwgMTY2OTA2LCAyNTYsIDM4MjgzLCAyNTYsIDE4ODM3LCAyNTYsIDM4MzI3LCAKKyAgICAyNTYsIDE2NzI4NywgMjU2LCAxODkxOCwgMjU2LCAzODU5NSwgMjU2LCAyMzk4NiwgMjU2LCAzODY5MSwgMjU2LCAxNjgyNjEsIAorICAgIDI1NiwgMTY4NDc0LCAyNTYsIDE5MDU0LCAyNTYsIDE5MDYyLCAyNTYsIDM4ODgwLCAyNTYsIDE2ODk3MCwgMjU2LCAxOTEyMiwgCisgICAgMjU2LCAxNjkxMTAsIDI1NiwgMzg5MjMsIDI1NiwgMzg5MjMsIDI1NiwgMzg5NTMsIDI1NiwgMTY5Mzk4LCAyNTYsIDM5MTM4LCAKKyAgICAyNTYsIDE5MjUxLCAyNTYsIDM5MjA5LCAyNTYsIDM5MzM1LCAyNTYsIDM5MzYyLCAyNTYsIDM5NDIyLCAyNTYsIDE5NDA2LCAKKyAgICAyNTYsIDE3MDgwMCwgMjU2LCAzOTY5OCwgMjU2LCA0MDAwMCwgMjU2LCA0MDE4OSwgMjU2LCAxOTY2MiwgMjU2LCAxOTY5MywgCisgICAgMjU2LCA0MDI5NSwgMjU2LCAxNzIyMzgsIDI1NiwgMTk3MDQsIDI1NiwgMTcyMjkzLCAyNTYsIDE3MjU1OCwgMjU2LCAKKyAgICAxNzI2ODksIDI1NiwgNDA2MzUsIDI1NiwgMTk3OTgsIDI1NiwgNDA2OTcsIDI1NiwgNDA3MDIsIDI1NiwgNDA3MDksIDI1NiwgCisgICAgNDA3MTksIDI1NiwgNDA3MjYsIDI1NiwgNDA3NjMsIDI1NiwgMTczNTY4LCAKIH07CiAKIC8qIGluZGV4IHRhYmxlcyBmb3IgdGhlIGRlY29tcG9zaXRpb24gZGF0YSAqLwpAQCAtNTE4NywxMSArNTI4MCwxMSBAQAogICAgIDEzMDQ0LCAxMzA0NiwgMTMwNDgsIDEzMDUwLCAxMzA1MiwgMTMwNTQsIDEzMDU2LCAxMzA1OCwgMTMwNjAsIDEzMDYyLCAKICAgICAxMzA2NCwgMTMwNjYsIDEzMDY4LCAxMzA3MCwgMTMwNzIsIDEzMDc0LCAxMzA3NiwgMTMwNzgsIDEzMDgwLCAxMzA4MiwgCiAgICAgMTMwODQsIDEzMDg2LCAxMzA4OCwgMTMwOTAsIDEzMDkyLCAxMzA5NCwgMTMwOTYsIDEzMDk4LCAxMzEwMCwgMTMxMDIsIAotICAgIDEzMTA0LCAxMzEwNiwgMTMxMDgsIDEzMTEwLCAxMzExMiwgMTMxMTQsIDEzMTE2LCAxMzExOCwgMTMxMjAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDEzMTIyLCAxMzEyNiwgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTU4LCAxMzE2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMxMDQsIDEzMTA2LCAxMzEwOCwgMTMxMTAsIDEzMTEyLCAxMzExNCwgMTMxMTYsIDEzMTE4LCAxMzEyMCwgMTMxMjIsIDAsIAorICAgIDAsIDAsIDAsIDEzMTI0LCAxMzEyOCwgMTMxMzIsIDEzMTM2LCAxMzE0MCwgMTMxNDQsIDEzMTQ4LCAxMzE1MiwgMTMxNTYsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTYwLCAxMzE2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNjIsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTY0LCAxMzE2NiwgMTMxNjgsIDEzMTcwLCAxMzE3MiwgMTMxNzQsIAogICAgIDEzMTc2LCAxMzE3OCwgMTMxODAsIDEzMTgyLCAxMzE4NCwgMTMxODYsIDEzMTg4LCAxMzE5MCwgMTMxOTIsIDEzMTk0LCAKICAgICAxMzE5NiwgMTMxOTgsIDEzMjAwLCAxMzIwMiwgMTMyMDQsIDEzMjA2LCAxMzIwOCwgMTMyMTAsIDEzMjEyLCAxMzIxNCwgCiAgICAgMTMyMTYsIDEzMjE4LCAxMzIyMCwgMTMyMjIsIDEzMjI0LCAxMzIyNiwgMTMyMjgsIDEzMjMwLCAxMzIzMiwgMTMyMzQsIApAQCAtNTI0NSwxMSArNTMzOCwxMSBAQAogICAgIDE0MTc2LCAxNDE3OCwgMTQxODAsIDE0MTgyLCAxNDE4NCwgMTQxODYsIDE0MTg4LCAxNDE5MCwgMTQxOTIsIDE0MTk0LCAKICAgICAxNDE5NiwgMTQxOTgsIDE0MjAwLCAxNDIwMiwgMTQyMDQsIDE0MjA2LCAxNDIwOCwgMTQyMTAsIDE0MjEyLCAxNDIxNCwgCiAgICAgMTQyMTYsIDE0MjE4LCAxNDIyMCwgMTQyMjIsIDE0MjI0LCAxNDIyNiwgMTQyMjgsIDE0MjMwLCAxNDIzMiwgMTQyMzQsIAotICAgIDE0MjM2LCAxNDIzOCwgMTQyNDAsIDE0MjQyLCAxNDI0NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTQyMzYsIDE0MjM4LCAxNDI0MCwgMTQyNDIsIDE0MjQ0LCAxNDI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBORkMgcGFpcnMgKi8KQEAgLTU2NjUsMTMyICs1NzU4LDEzNSBAQAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQgY2hhbmdlX3JlY29yZHNfM18yXzBbXSA9IHsKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTEsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDEwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyLCAyNTUsIDI1NSwgMCB9LAotCXsgMTksIDIxLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDMsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDEsIDI1NSwgMCB9LAotCXsgMjU1LCAwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyOSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjYsIDI1NSwgMjU1LCAwIH0sCi0JeyA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxNCwgNiwgMjU1LCAyNTUsIDAgfSwKLQl7IDE1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDEuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMy4wIH0sCi0JeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDQuMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAotCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjU1LCAyNTUsIDAsIDAgfSwKLQl7IDI1NSwgNywgMSwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDIsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCAzLCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNCwgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA2LCAyNTUsIDAgfSwKLQl7IDI1NSwgNywgNywgMjU1LCAwIH0sCi0JeyAyNTUsIDcsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCA3LCA5LCAyNTUsIDAgfSwKLQl7IDI1NSwgMTksIDI1NSwgMjU1LCAwIH0sCi0JeyAxLCA1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDAgfSwKLQl7IDE4LCAyNTUsIDI1NSwgMjU1LCAwIH0sCi0JeyAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDAsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDQsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDYsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDcsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDgsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDksIDI1NSwgMCB9LAotCXsgMTksIDMwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNywgMjU1LCAyNTUsIDAgfSwKLQl7IDI1NSwgMjIsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIzLCAyNTUsIDI1NSwgMCB9LAotCXsgOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAotCXsgMTQsIDQsIDI1NSwgMjU1LCAwIH0sCi0JeyAyNTUsIDIwLCAyNTUsIDI1NSwgMCB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsxNiB9LAotCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAotCXsgMjU1LCAxOSwgMjU1LCAyNTUsIC0xIH0sCi0JeyAxLCAyNTUsIDI1NSwgMCwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDExLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDEwLCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMiwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDIxLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMiwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAzLCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjksIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTQsIDYsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE1LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAyLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAzLjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCA0LjAgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAtMSB9LAorCXsgMTQsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMCwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDEsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDIsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDMsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDQsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDcsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDgsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDcsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDE5LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCA1LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAxLCAxOSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAxMCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTgsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMTksIDI1NSwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDAsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNCwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDYsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgNywgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgMjU1LCA4LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDksIDI1NSwgMjU1LCAwIH0sCisJeyAxOSwgMzAsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDI1NSwgOCwgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNywgMjU1LCAyNTUsIDI1NSwgMCB9LAorCXsgMjU1LCAyNTUsIDI1NSwgMjU1LCA1LCAwIH0sCisJeyAyNTUsIDIyLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIzLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyA5LCAyNTUsIDI1NSwgMjU1LCAyNTUsIDAgfSwKKwl7IDE0LCA0LCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDIwLCAyNTUsIDI1NSwgMjU1LCAwIH0sCisJeyAyNTUsIDI1NSwgMjU1LCAyNTUsIDI1NSwgMWUrMTYgfSwKKwl7IDI1NSwgMjU1LCAyNTUsIDI1NSwgMjU1LCAxZSsyMCB9LAorCXsgMjU1LCAxOSwgMjU1LCAyNTUsIDI1NSwgLTEgfSwKKwl7IDEsIDI1NSwgMjU1LCAwLCAyNTUsIDAgfSwKIH07CiBzdGF0aWMgdW5zaWduZWQgY2hhciBjaGFuZ2VzXzNfMl8wX2luZGV4W10gPSB7CiAgICAgMCwgMSwgMiwgMiwgMywgNCwgNSwgNiwgMiwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE3LCAxOCwgCiAgICAgMTksIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDIsIDI2LCAyNywgMjgsIDI5LCAzMCwgMzEsIDMyLCAzMywgMzQsIDM1LCAKICAgICAzNiwgMzcsIDIsIDIsIDIsIDM4LCAzOSwgMiwgNDAsIDIsIDQxLCA0MiwgNDMsIDQ0LCA0NSwgNDYsIDQ3LCA0OCwgNDksIAotICAgIDUwLCA1MSwgMiwgNTIsIDIsIDIsIDUzLCA1NCwgNTUsIDU2LCA1NywgMiwgNTgsIDU5LCA2MCwgNjEsIDIsIDIsIDYyLCA2MywgCi0gICAgNjQsIDY1LCA2NiwgNjYsIDIsIDIsIDIsIDIsIDY3LCA2OCwgNjksIDcwLCA3MSwgNzIsIDczLCAyLCAyLCAyLCA3NCwgNzUsIAotICAgIDc2LCA3NywgNzgsIDc5LCA4MCwgODEsIDgyLCA4MywgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIsIDIsIDIsIDIsIDIsIDg1LCAKKyAgICA1MCwgNTEsIDIsIDUyLCAyLCAyLCA1MywgNTQsIDU1LCA1NiwgNTcsIDIsIDU4LCA1OSwgNjAsIDYxLCAyLCA2MiwgNjMsIAorICAgIDY0LCA2NSwgNjYsIDY3LCA2NywgMiwgMiwgMiwgMiwgNjgsIDY5LCA3MCwgNzEsIDcyLCA3MywgNzQsIDIsIDIsIDIsIDc1LCAKKyAgICA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCAyLCAyLCAyLCAyLCAyLCAyLCA4NSwgMiwgMiwgMiwgMiwgMiwgCisgICAgODYsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg3LCAyLCA4OCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgODksIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTIsIAorICAgIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODYsIDIsIDg3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICA4OCwgODksIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkwLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5MSwgCi0gICAgOTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDkzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NCwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk2LCA5NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTgsIDUwLCA1MCwgCi0gICAgOTksIDEwMCwgNTAsIDEwMSwgMTAyLCAxMDMsIDEwNCwgMTA1LCAxMDYsIDEwNywgMTA4LCAxMDksIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDk1LCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5NiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgOTcsIDk4LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA5OSwgNTAsIDUwLCAKKyAgICAxMDAsIDEwMSwgNTAsIDEwMiwgMTAzLCAxMDQsIDEwNSwgMTA2LCAxMDcsIDEwOCwgMTA5LCAxMTAsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDExMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTExLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAxMTEsIDExMiwgMTEzLCAxMTQsIDExNSwgMTE2LCAyLCAyLCAxMTcsIDExOCwgMTE5LCAyLCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAyLCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAyLCA1MCwgNTAsIDEzMiwgCi0gICAgMiwgMTMzLCAxMzQsIDEzNSwgMTM2LCAxMzcsIDEzOCwgMTM5LCAxNDAsIDE0MSwgMTQyLCAyLCAyLCAxNDMsIDIsIDIsIDIsIAotICAgIDE0NCwgMTQ1LCAxNDYsIDE0NywgMTQ4LCAxNDksIDE1MCwgMiwgMiwgMTUxLCAyLCAxNTIsIDE1MywgMTU0LCAxNTUsIDIsIAotICAgIDIsIDE1NiwgMiwgMiwgMiwgMTU3LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAotICAgIDUwLCA1MCwgMTU4LCAxNTksIDUwLCAxNjAsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAxMTIsIDExMywgMTE0LCAxMTUsIDExNiwgMTE3LCAyLCAyLCAxMTgsIDExOSwgMTIwLCAyLCAxMjEsIAorICAgIDEyMiwgMTIzLCAxMjQsIDEyNSwgMTI2LCAyLCAxMjcsIDEyOCwgMTI5LCAxMzAsIDEzMSwgMTMyLCAyLCA1MCwgNTAsIDEzMywgCisgICAgMiwgMTM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAyLCAyLCAxNDQsIDIsIDIsIDIsIAorICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMiwgMTUyLCAxNTMsIDIsIDE1NCwgMTU1LCAxNTYsIDE1NywgMiwgCisgICAgMiwgMTU4LCAyLCAyLCAyLCAxNTksIDIsIDIsIDE2MCwgMTYxLCAyLCAyLCAyLCAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgMTYyLCAxNjMsIDUwLCAxNjQsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTY1LCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCA1MCwgNTAsIDUwLCA1MCwgMTYyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCA1MCwgNTAsIDUwLCA1MCwgMTYzLCAxNjQsIDE2NSwgMTY2LCAyLCAyLCAyLCAyLCAyLCAyLCAxNjcsIDE2OCwgCisgICAgMiwgMiwgMiwgMiwgNTAsIDUwLCA1MCwgNTAsIDE2NywgMTY4LCAxNjksIDE3MCwgMiwgMiwgMiwgMiwgMiwgMiwgMTcxLCAKKyAgICAxNzIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTczLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDE3NCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMTc1LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAxNzYsIDE3NywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTc4LCAKKyAgICAxNzksIDE4MCwgMiwgMTgxLCAyLCAyLCAxODIsIDIsIDIsIDIsIDE4MywgMTg0LCAxODUsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgMTg2LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAxODcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDUwLCAxODgsIDE4OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTkwLCAxOTEsIDIsIDIsIDE5MiwgCisgICAgMTkzLCAxOTQsIDE5NSwgMTk2LCAyLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMTk3LCAxOTgsIDE5OSwgMjAwLCAKKyAgICAyMDEsIDIwMiwgMjAzLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDQsIDIwNSwgOTYsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDg1LCAyMDYsIDIsIDIwNywgMjA4LCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyMDksIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjExLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKKyAgICAyMTIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE2OSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTcwLCAxNzEsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDE3MiwgMTczLCAxNzQsIDIsIDE3NSwgMiwgMiwgMTc2LCAyLCAyLCAyLCAxNzcsIDE3OCwgMTc5LCA1MCwgCi0gICAgNTAsIDUwLCA1MCwgNTAsIDE4MCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDE4MSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMTgyLCAKLSAgICAxODMsIDIsIDIsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAyLCA1MCwgNTAsIDUwLCA1MCwgMTg5LCAxOTAsIDUwLCAxOTEsIAotICAgIDE5MiwgMTkzLCAxOTQsIDE5NSwgMTk2LCAxOTcsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDE5OCwgCi0gICAgMTk5LCA5NSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgODQsIDIwMCwgMiwgMjAxLCAKLSAgICAyMDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIwMywgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA0LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKLSAgICAyLCAyMDUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAyMDcsIDUwLCAyMDgsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgCisgICAgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMjEzLCA1MCwgMjE0LCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKICAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCAKLSAgICA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDIwOSwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDUwLCAyMTUsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIwMywgCisgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMjA5LCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKICAgICAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAyLCAKQEAgLTYwMjYsOCArNjEyMiw3IEBACiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgNTAsIDIxMCwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCi0gICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCisgICAgNTAsIDIxNiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCiAgICAgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgMiwgCkBAIC02MDkwLDcgKzYxODUsNyBAQAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgY2hhbmdlc18zXzJfMF9kYXRhW10gPSB7CkBAIC02MTc2LDkgKzYyNzEsOSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIApAQCAtNjIxNiw3ICs2MzExLDcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAyMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjIyNSw5ICs2MzIwLDkgQEAKICAgICAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKQEAgLTYzMTQsNyArNjQwOSw3IEBACiAgICAgMzIsIDMyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIAogICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIApAQCAtNjM1Niw4ICs2NDUxLDggQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKQEAgLTYzNzIsMjkgKzY0NjcsMjkgQEAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMzYsIDQsIDAsIDAsIAotICAgIDM3LCAzOCwgMzksIDQwLCA0MSwgNDIsIDEsIDEsIDAsIDAsIDAsIDQsIDM2LCA4LCA2LCA3LCAzNywgMzgsIDM5LCA0MCwgCi0gICAgNDEsIDQyLCAxLCAxLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDM3LCA0LCAwLCAwLCAKKyAgICAzOCwgMzksIDQwLCA0MSwgNDIsIDQzLCAxLCAxLCAwLCAwLCAwLCA0LCAzNywgOCwgNiwgNywgMzgsIDM5LCA0MCwgNDEsIAorICAgIDQyLCA0MywgMSwgMSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDQ0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtNjQwNSwxMzcgKzY1MDAsODIxIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDUsIDQ1LCA0NSwgNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NiwgNDYsIDQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2LCA0NywgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OSwgMTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgCi0gICAgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCA0OCwgNDgsIDQ4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIAorICAgIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgNTAsIDUwLCA1MCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIAorICAgIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA0NywgNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDQ3LCA0NywgNDcsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgCisgICAgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgMzYsIDM2LCAzNiwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNTEsIDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCA5LCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgCi0gICAgMzUsIDM1LCAzNSwgMzUsIDM1LCAzNSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNDgsIDQ5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIAorICAgIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5LCA0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIAorICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDAsIDksIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKKyAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIAorICAgIDAsIDksIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDksIAorICAgIDAsIDksIDksIDAsIDksIDAsIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDAsIDksIDksIDAsIDksIDAsIDAsIDksIAorICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDAsIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDksIDksIDksIDksIDksIAorICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC02NTQ3LDY4MyArNzMyNiwzMSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCisgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCiAgICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUxLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUyLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAogICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIAotICAgIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDE5LCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYsIDQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAwLCAwLCAwLCAxLCAxLCAyMSwgMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEsIDAsIDEsIDAsIDIsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNCwgMTQsIDE0LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCA5LCA5LCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCA5LCA5LCA5LCAwLCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAKLSAgICAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCA5LCAKLSAgICA5LCA5LCA5LCA5LCA5LCA5LCA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDksIAotICAgIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDksIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDAsIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDksIDksIDAsIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDksIDksIDAsIDAsIDksIDksIDksIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIAotICAgIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU0LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTQsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgMCwgOSwgMCwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgMCwgOSwgOSwgMCwgOSwgCi0gICAgMCwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgCi0gICAgMCwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgCi0gICAgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgOSwgOSwgOSwgOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIAotICAgIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDksIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogfTsKIAogc3RhdGljIGNvbnN0IGNoYW5nZV9yZWNvcmQqIGdldF9jaGFuZ2VfM18yXzAoUHlfVUNTNCBuKQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oIGIvTW9kdWxlcy91bmljb2RlbmFtZV9kYi5oCmluZGV4IGQwZjljYjQuLmE4MWQ4ZTMgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvdW5pY29kZW5hbWVfZGIuaAorKysgYi9Nb2R1bGVzL3VuaWNvZGVuYW1lX2RiLmgKQEAgLTQsMjQ2ICs0LDI0NyBAQAogCiAvKiBsZXhpY29uICovCiBzdGF0aWMgdW5zaWduZWQgY2hhciBsZXhpY29uW10gPSB7Ci0gICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgODksIDc2LCAKLSAgICA3NiwgNjUsIDY2LCA3NiwgMTk3LCA4MywgNzcsIDY1LCA3NiwgMjA0LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAotICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjcsIDg1LCA3OCwgCi0gICAgNjksIDczLCA3MCwgNzksIDgyLCAyMDUsIDY1LCA4MiwgNjUsIDY2LCA3MywgMTk1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCisgICAgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDgzLCA3MywgNzEsIDIwNiwgODcsIDczLCA4NCwgMjAwLCA4MywgNzcsIDY1LCAKKyAgICA3NiwgMjA0LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3NiwgMTk3LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCAyMDQsIAorICAgIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDIwMCwgNzYsIDY1LCA4NCwgNzMsIDIwNiwgNjUsIDgyLCA2NSwgCisgICAgNjYsIDczLCAxOTUsIDY3LCA4NSwgNzgsIDY5LCA3MywgNzAsIDc5LCA4MiwgMjA1LCA4OSwgMjAxLCA2NywgNzQsIDIwMywgCiAgICAgNzcsIDY1LCA4NCwgNzIsIDY5LCA3NywgNjUsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDgwLCA4NCwgNzMsIAogICAgIDY1LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA2NSwgODQsIDczLCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDcwLCA3OSwgODIsIDc3LCAxMjgsIDY3LCA2NSwgNzgsIDY1LCAKLSAgICA2OCwgNzMsIDY1LCAyMDYsIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCA2NywgMjExLCA4MywgNzMsIDcxLCA3OCwgODcsIAotICAgIDgyLCA3MywgODQsIDczLCA3OCwgMTk5LCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4NCwgNzMsIDc3LCA2OSwgMjExLCA2NiwgCi0gICAgNjUsIDc3LCA4NSwgMjA1LCA2NSwgNzgsIDE5NiwgNjYsIDc5LCA3NiwgMTk2LCA2NSwgNzgsIDY1LCA4NCwgNzksIDc2LCAKLSAgICA3MywgNjUsIDIwNiwgNzIsIDY1LCA3OCwgNzEsIDg1LCAyMDQsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MSwgODIsIAotICAgIDY5LCA2OSwgMjAzLCA3NywgODUsIDgzLCA3MywgNjcsIDY1LCAyMDQsIDc2LCA3MywgNzEsIDY1LCA4NCwgODUsIDgyLCAKLSAgICAxOTcsIDY5LCA4NCwgNzIsIDczLCA3OSwgODAsIDczLCAxOTUsIDE5MywgNzAsIDc5LCAyMTAsIDY3LCA4OSwgODIsIDczLCAKLSAgICA3NiwgNzYsIDczLCAxOTUsIDczLCA4NCwgNjUsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY1LCA2OCwgNzMsIDY3LCA2NSwgMjA0LCA4MywgNjUsIDc4LCA4MywgNDUsIDgzLCA2OSwgODIsIDczLCAKLSAgICAxOTgsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxOTYsIDg0LCA2NSwgNzcsIAotICAgIDczLCAyMDQsIDg0LCA2NSwgMjAxLCA3MCwgNzMsIDc4LCA2NSwgMjA0LCA2NSwgODIsIDgyLCA3OSwgODcsIDEyOCwgODYsIAotICAgIDY1LCAyMDEsIDc2LCA2OSwgNzAsIDIxMiwgODIsIDczLCA3MSwgNzIsIDIxMiwgODMsIDgxLCA4NSwgNjUsIDgyLCAxOTcsIAotICAgIDY4LCA3OSwgODUsIDY2LCA3NiwgMTk3LCA2NSwgODIsIDgyLCA3OSwgMjE1LCA4MywgNzMsIDcxLCA3OCwgMTI4LCA2NSwgCi0gICAgNjYsIDc5LCA4NiwgNjksIDEyOCwgNjYsIDY5LCA3NiwgNzksIDg3LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMjA2LCA2NiwgODIsIDY1LCA3MywgNzYsIDc2LCAxOTcsIDgwLCA2NSwgODQsIDg0LCA2OSwgODIsIDIwNiwgNjYsIAotICAgIDg5LCA5MCwgNjUsIDc4LCA4NCwgNzMsIDc4LCAxOTcsIDg3LCA3MiwgNzMsIDg0LCAxOTcsIDY2LCA3NiwgNjUsIDY3LCAKLSAgICAyMDMsIDY1LCAxMjgsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAxOTYsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIAotICAgIDY5LCAyMTAsIDE5NCwgNzUsIDY1LCA4NCwgNjUsIDc1LCA2NSwgNzgsIDE5MywgODUsIDEyOCwgNzcsIDg5LCA2NSwgNzgsIAotICAgIDc3LCA2NSwgMjEwLCA2OCwgNzksIDIxMiwgNzUsIDY1LCA3OCwgNzEsIDg4LCAyMDEsIDc1LCA3MywgNzUsIDY1LCA3NSwgCi0gICAgODUsIDIwMSwgNzcsIDY5LCA3OCwgNjgsIDE5NywgNzMsIDEyOCwgNzksIDE5OCwgODQsIDczLCA2NiwgNjksIDg0LCA2NSwgCi0gICAgMjA2LCA3OSwgMTI4LCA3MiwgNjksIDY1LCA4NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3MywgCi0gICAgNzgsIDczLCA4NCwgNzMsIDY1LCAyMDQsIDc3LCA2NSwgODIsIDc1LCAxMjgsIDc3LCA2OSwgNjksIDIwNSwgNjcsIDc5LCAKLSAgICA4MCwgODQsIDczLCAxOTUsIDc1LCA3MiwgNzcsIDY5LCAyMTAsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDY2LCA3OSwgODYsIDE5NywgNjcsIDY1LCA4MiwgODIsIDczLCA2OSwgMjEwLCA4OSwgNjksIDIwMCwgNjcsIAotICAgIDcyLCA2OSwgODIsIDc5LCA3NSwgNjksIDE5NywgODAsIDc2LCA4NSwgMjExLCA2OCwgNjksIDg2LCA2NSwgNzgsIDY1LCA3MSwgCi0gICAgNjUsIDgyLCAyMDEsIDgwLCA3MiwgNjUsIDgzLCA2OSwgNDUsIDE5NywgNzcsIDc5LCA3OCwgNzEsIDc5LCA3NiwgNzMsIDY1LCAKLSAgICAyMDYsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIAotICAgIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDg0LCA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgCi0gICAgNzYsIDc5LCA4OSwgNjUsIDIwNiwgNzcsIDczLCA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgODIsIDY5LCA3OCwgODQsIDcyLCAKLSAgICA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4NCwgNzIsIDY1LCAyMDUsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgMjEzLCA3NCwgNzksIDc4LCA3MSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgODQsIDg3LCA3OSwgCi0gICAgMTI4LCA2NywgNzksIDc4LCA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzIsIDY5LCA2NiwgODIsIDY5LCAyMTUsIDc3LCAKLSAgICA3MywgNjUsIDIwNywgODUsIDIwOCwgNzIsIDc5LCA3OSwgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIAotICAgIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA2OCwgODIsIDY1LCA4NywgNzMsIDc4LCA3MSwgMjExLCA3MiwgNzcsIDc5LCA3OCwgCi0gICAgMTk5LCA3OSwgNzgsIDE5NywgODAsIDY1LCA3MiwgNjUsIDg3LCAyMDAsIDg0LCA4NywgMjA3LCA2OCwgNzksIDg3LCAyMDYsIAotICAgIDczLCA3OCwgNjgsIDY5LCAyMTYsIDY3LCA3MiwgNzksIDgzLCA2OSwgNzksIDc4LCAxOTksIDc2LCA3OSwgMjE1LCA4NiwgCi0gICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDg0LCA3MiwgODIsIDY5LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCA4NywgNzMsIDY4LCAKLSAgICA4NCwgMjAwLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDIxMiwgNzcsIDY5LCA4MiwgNzksIDczLCA4NCwgNzMsIAotICAgIDE5NSwgNjYsIDY1LCA3NiwgNzMsIDc4LCA2OSwgODMsIDE5NywgNzcsIDY1LCA4MiwgMjAzLCA4MywgNjcsIDgyLCA3MywgCi0gICAgODAsIDIxMiwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDIwNSwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk2LCAKLSAgICA4NCwgNzksIDEyOCwgNjUsIDc2LCA2NywgNzIsIDY5LCA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgNzYsIDY5LCAxOTgsIAotICAgIDcyLCA3MywgNzEsIDIwMCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgODMsIDczLCA3OCwgCi0gICAgNzIsIDY1LCA3NiwgMTkzLCA3OCwgODUsIDc3LCA2OSwgODIsIDczLCAxOTUsIDY2LCA2NSwgODIsIDEyOCwgODQsIDc5LCAKLSAgICA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIAotICAgIDg0LCA3MiwgODIsIDY5LCA2OSwgMTI4LCA4NCwgNzIsIDg1LCA3NywgMTk0LCA3MCwgNzksIDg1LCA4MiwgMTI4LCA2NiwgCi0gICAgNjUsIDgyLCAxOTQsIDcyLCA2NSwgMjAwLCA3MiwgNjUsIDEyOCwgNzgsIDc5LCA4MiwgODQsIDIwMCwgNzAsIDg1LCA3NiwgCi0gICAgNzYsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCAxMjgsIDY5LCA4MSwgODUsIDY1LCAKLSAgICAyMDQsIDc2LCA3MywgNzEsIDcyLCAyMTIsIDg0LCA2NSwgMTk5LCA2OCwgNzksIDc3LCA3MywgNzgsIDIwNywgNzIsIDY1LCAKLSAgICA3NiwgMTk4LCA3NiwgNzksIDc4LCAxOTksIDc3LCA2NSwgNzYsIDY1LCA4OSwgNjUsIDc2LCA2NSwgMjA1LCA2NSwgNjcsIAotICAgIDg1LCA4NCwgNjksIDEyOCwgNzAsIDgyLCA2NSwgNzUsIDg0LCA4NSwgMjEwLCA2NywgNzIsIDY1LCA4MiwgNjUsIDY3LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDcyLCA2NSwgODMsIDY5LCA0NSwgMTk1LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCAKLSAgICA4MiwgODUsIDY3LCAyMDMsIDcwLCA3MywgODYsIDY5LCAxMjgsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAotICAgIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCisgICAgNjYsIDc5LCAyMDQsIDY4LCA3MywgNzEsIDczLCAyMTIsIDg0LCA2NSwgNzgsIDcxLCA4NSwgMjEyLCA3MCwgNzksIDgyLCAKKyAgICA3NywgMTI4LCA2NywgNjUsIDc4LCA2NSwgNjgsIDczLCA2NSwgMjA2LCA4MywgODksIDc2LCA3NiwgNjUsIDY2LCA3MywgNjcsIAorICAgIDIxMSwgODYsIDc5LCA4NywgNjksIDIwNCwgODMsIDczLCA3MSwgNzgsIDg3LCA4MiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgODQsIDczLCA3NywgNjksIDIxMSwgNjYsIDY1LCA3NywgODUsIDIwNSwgNjUsIDc4LCAxOTYsIDY2LCA3OSwgNzYsIDE5NiwgCisgICAgNjUsIDc4LCA2NSwgODQsIDc5LCA3NiwgNzMsIDY1LCAyMDYsIDcyLCA2NSwgNzgsIDcxLCA4NSwgMjA0LCA3NiwgNzMsIDc4LCAKKyAgICA2OSwgNjUsIDIxMCwgNzEsIDgyLCA2OSwgNjksIDIwMywgNzcsIDg1LCA4MywgNzMsIDY3LCA2NSwgMjA0LCA3NiwgNzMsIAorICAgIDcxLCA2NSwgODQsIDg1LCA4MiwgMTk3LCA2OSwgODQsIDcyLCA3MywgNzksIDgwLCA3MywgMTk1LCAxOTMsIDcwLCA3OSwgCisgICAgMjEwLCA2NywgODksIDgyLCA3MywgNzYsIDc2LCA3MywgMTk1LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA3MywgNzgsIAorICAgIDE5OSwgNzMsIDg0LCA2NSwgNzYsIDczLCAxOTUsIDc4LCA4NSwgNzcsIDY2LCA2OSwgMjEwLCA4MiwgNjUsIDY4LCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA2NSwgNzgsIDgzLCA0NSwgODMsIDY5LCA4MiwgNzMsIDE5OCwgNjcsIDczLCA4MiwgNjcsIDc2LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc3LCA3MywgMjA0LCA4NCwgNjUsIDIwMSwgNzAsIDczLCA3OCwgNjUsIDIwNCwgNjUsIDgyLCAKKyAgICA4MiwgNzksIDg3LCAxMjgsIDc2LCA2OSwgNzAsIDIxMiwgODYsIDY1LCAyMDEsIDgyLCA3MywgNzEsIDcyLCAyMTIsIDgzLCAKKyAgICA4MSwgODUsIDY1LCA4MiwgMTk3LCA2OCwgNzksIDg1LCA2NiwgNzYsIDE5NywgODMsIDczLCA3MSwgNzgsIDEyOCwgNjUsIAorICAgIDgyLCA4MiwgNzksIDIxNSwgNjUsIDY2LCA3OSwgODYsIDY5LCAxMjgsIDY2LCA2OSwgNzYsIDc5LCA4NywgMTI4LCA4NiwgCisgICAgNjUsIDgyLCA3MywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjYsIDgyLCA2NSwgNzMsIDc2LCA3NiwgMTk3LCA4MCwgNjUsIDg0LCAKKyAgICA4NCwgNjksIDgyLCAyMDYsIDY2LCA4OSwgOTAsIDY1LCA3OCwgODQsIDczLCA3OCwgMTk3LCA2NSwgMTI4LCA2NiwgNzYsIAorICAgIDY1LCA2NywgMjAzLCA4NywgNzIsIDczLCA4NCwgMTk3LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTk2LCA4NSwgCisgICAgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCA2OSwgMjEwLCAxOTQsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCAKKyAgICAxOTMsIDczLCAxMjgsIDc3LCA4OSwgNjUsIDc4LCA3NywgNjUsIDIxMCwgNjgsIDc5LCAyMTIsIDc5LCAxMjgsIDc1LCA2NSwgCisgICAgNzgsIDcxLCA4OCwgMjAxLCA3OSwgMTk4LCA3NSwgNzMsIDc1LCA2NSwgNzUsIDg1LCAyMDEsIDc3LCA2OSwgNzgsIDY4LCAKKyAgICAxOTcsIDg0LCA3MywgNjYsIDY5LCA4NCwgNjUsIDIwNiwgNzIsIDY5LCA2NSwgODYsIDIxNywgNzcsIDY1LCA4MiwgNzUsIAorICAgIDEyOCwgNzMsIDc4LCA3MywgODQsIDczLCA2NSwgMjA0LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3NywgCisgICAgNjksIDY5LCAyMDUsIDY3LCA3OSwgODAsIDg0LCA3MywgMTk1LCA3NSwgNzIsIDc3LCA2OSwgMjEwLCA4MiwgNzMsIDcxLCAKKyAgICA3MiwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDY1LCA2NiwgNzksIDg2LCAxOTcsIDY3LCA2NSwgODIsIDgyLCA3MywgNjksIAorICAgIDIxMCwgODksIDY5LCAyMDAsIDY3LCA3MiwgNjksIDgyLCA3OSwgNzUsIDY5LCAxOTcsIDc3LCA3OSwgNzgsIDcxLCA3OSwgCisgICAgNzYsIDczLCA2NSwgMjA2LCA4MCwgNzYsIDg1LCAyMTEsIDY4LCA2OSwgODYsIDY1LCA3OCwgNjUsIDcxLCA2NSwgODIsIAorICAgIDIwMSwgODMsIDgxLCA4NSwgNjUsIDgyLCA2OSwgMTk2LCA4MCwgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTcsIDgzLCA4NCwgCisgICAgODIsIDc5LCA3NSwgNjksIDEyOCwgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDEyOCwgNjYsIDc5LCAyMTYsIDc3LCA3MywgNjgsIDY4LCA3NiwgMTk3LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCAKKyAgICA3MywgNzYsIDE5NywgNjgsIDg1LCA4MCwgNzYsIDc5LCA4OSwgNjUsIDIwNiwgODQsIDg3LCA3OSwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgOTAsIDY5LCAxOTYsIDg0LCA3MiwgNjUsIDIwNSwgMjEzLCA4NiwgCisgICAgNzksIDY3LCA2NSwgNzYsIDczLCAxOTUsIDc0LCA3OSwgNzgsIDcxLCA4MywgNjksIDc5LCA3OCwgMTk5LCA2NywgNzksIDc4LCAKKyAgICA4MywgNzksIDc4LCA2NSwgNzgsIDIxMiwgNzksIDc4LCAxOTcsIDcyLCA2OSwgNjYsIDgyLCA2OSwgMjE1LCA3NywgNzMsIAorICAgIDY1LCAyMDcsIDg1LCAyMDgsIDcxLCA3NiwgNjUsIDcxLCA3OSwgNzYsIDczLCA4NCwgNzMsIDE5NSwgNzIsIDc5LCA3OSwgCisgICAgNzUsIDEyOCwgNzEsIDY5LCA3OSwgODIsIDcxLCA3MywgNjUsIDIwNiwgNzksIDg2LCA2OSwgMjEwLCA4NCwgODcsIDIwNywgCisgICAgNjgsIDgyLCA2NSwgODcsIDczLCA3OCwgNzEsIDIxMSwgNzIsIDczLCA3MSwgMjAwLCA3MiwgNzcsIDc5LCA3OCwgMTk5LCAKKyAgICA3MywgNzgsIDY4LCA2OSwgMjE2LCA4MCwgNjUsIDcyLCA2NSwgODcsIDIwMCwgODQsIDcyLCA4MiwgNjksIDE5NywgNjgsIAorICAgIDc5LCA4NywgMjA2LCA3NiwgNzksIDIxNSwgNjcsIDcyLCA3OSwgODMsIDY5LCA3OSwgNzgsIDE5OSwgNzIsIDY1LCA3NiwgCisgICAgNzAsIDg3LCA3MywgNjgsIDg0LCAyMDAsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgMjEyLCA3NywgNjksIDgyLCAKKyAgICA3OSwgNzMsIDg0LCA3MywgMTk1LCA2NiwgNjUsIDc2LCA3MywgNzgsIDY5LCA4MywgMTk3LCA3NywgNjUsIDgyLCAyMDMsIAorICAgIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgNzIsIDY1LCA4MywgCisgICAgNjksIDQ1LCAxOTYsIDg0LCA3OSwgMTI4LCA2NSwgNzYsIDY3LCA3MiwgNjksIDc3LCA3MywgNjcsIDY1LCAyMDQsIDY1LCAKKyAgICA3NiwgNjksIDE5OCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgNzcsIDY1LCA3NiwgNjUsIAorICAgIDg5LCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA3MywgNzgsIDcyLCA2NSwgNzYsIDE5MywgNzIsIDY1LCAxMjgsIDc4LCA4NSwgCisgICAgNzcsIDY5LCA4MiwgNzMsIDE5NSwgODIsIDEyOCwgODQsIDcyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCA2NSwgODIsIDEyOCwgCisgICAgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDc5LCA3OCwgMTk3LCA2NiwgODIsIDY1LCA3MiwgNzcsIDIwMSwgNzIsIDg1LCAKKyAgICA3OCwgNzEsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgODUsIDc3LCAxOTQsIDY2LCA2NSwgODIsIDE5NCwgNzIsIAorICAgIDY1LCAyMDAsIDc4LCA3OSwgODIsIDg0LCAyMDAsIDcwLCA4NSwgNzYsIDc2LCA4NywgNzMsIDY4LCA4NCwgMjAwLCA2NiwgCisgICAgODIsIDY1LCA2NywgNzUsIDY5LCA4NCwgMTI4LCA2OSwgODEsIDg1LCA2NSwgMjA0LCA3NSwgNjUsIDEyOCwgNzYsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgNzAsIDczLCA4NiwgNjksIDEyOCwgODQsIDY1LCAxOTksIDY4LCA3OSwgNzcsIDczLCA3OCwgMjA3LCAKKyAgICA3MiwgNjUsIDc2LCAxOTgsIDc2LCA3OSwgNzgsIDE5OSwgNjUsIDY3LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA4MiwgNjUsIAorICAgIDc1LCA4NCwgODUsIDIxMCwgNjcsIDcyLCA2NSwgODIsIDY1LCA2NywgODQsIDY5LCAyMTAsIDgwLCA2NSwgMTI4LCA4MCwgCisgICAgNzIsIDY1LCA4MywgNjksIDQ1LCAxOTUsIDY2LCA3MiwgNjUsIDczLCA3NSwgODMsIDg1LCA3NSwgMjAxLCA2OCwgNzksIDg1LCAKKyAgICA2NiwgNzYsIDY5LCA0NSwgODMsIDg0LCA4MiwgODUsIDY3LCAyMDMsIDc5LCA4MCwgNjksIDIwNiwgNzIsIDczLCA4MiwgNjUsIAorICAgIDcxLCA2NSwgNzgsIDE5MywgNzcsIDY1LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NSwgMjA0LCA4NCwgNjksIDc2LCA4NSwgCiAgICAgNzEsIDIxMywgNzQsIDg1LCA3OCwgNzEsIDgzLCA2OSwgNzksIDc4LCAxOTksIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDIxMSwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCA3NiwgMjAxLCA3MSwgCi0gICAgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgODQsIDczLCAxOTUsIDgzLCA3MiwgNjUsIDgyLCA2NSwgNjgsIDE5MywgNzgsIDY5LCAKLSAgICA3MSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIDY4LCAyMTEsIDc0LCA2OSwgNjksIAotICAgIDIwNSwgODAsIDY1LCAxMjgsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNjgsIDc5LCA4NCwgMjExLCA3MywgNjgsIAotICAgIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDIwMCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNjcsIDg1LCA4MiwgCi0gICAgODMsIDczLCA4NiwgMTk3LCA3NywgNjUsIDEyOCwgNzksIDgyLCA3MywgODksIDE5MywgODMsIDEyOCwgODMsIDczLCA4OCwgCi0gICAgMTI4LCA4NywgNjksIDgzLCA4NCwgNDUsIDY3LCA4MiwgNjksIDE5NywgODIsIDg1LCA3OCwgNzMsIDE5NSwgODksIDY1LCAKLSAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNjUsIDc4LCA3OCwgNjUsIDY4LCAxOTMsIDc4LCA2NSwgMTI4LCAKLSAgICA5MCwgOTAsIDg5LCA4OCwgMTI4LCA5MCwgOTAsIDg5LCA4NCwgMTI4LCA5MCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgOTAsIAotICAgIDkwLCA4OSwgODIsIDEyOCwgOTAsIDkwLCA4OSwgODAsIDEyOCwgOTAsIDkwLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCA4OSwgCi0gICAgMTI4LCA5MCwgOTAsIDg1LCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgODgsIDEyOCwgOTAsIDkwLCA4NSwgODIsIDEyOCwgCi0gICAgOTAsIDkwLCA4NSwgODAsIDEyOCwgOTAsIDkwLCA4NSwgMTI4LCA5MCwgOTAsIDgzLCA4OSwgNjUsIDEyOCwgOTAsIDkwLCAKLSAgICA4MywgNjUsIDEyOCwgOTAsIDkwLCA3OSwgODgsIDEyOCwgOTAsIDkwLCA3OSwgODAsIDEyOCwgOTAsIDkwLCA3OSwgMTI4LCAKLSAgICA5MCwgOTAsIDczLCA4OCwgMTI4LCA5MCwgOTAsIDczLCA4NCwgMTI4LCA5MCwgOTAsIDczLCA4MCwgMTI4LCA5MCwgOTAsIAotICAgIDczLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA3MywgNjksIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDY5LCA4MCwgMTI4LCA5MCwgCi0gICAgOTAsIDczLCA2OSwgMTI4LCA5MCwgOTAsIDczLCAxMjgsIDkwLCA5MCwgNjksIDg4LCAxMjgsIDkwLCA5MCwgNjksIDgwLCAKLSAgICAxMjgsIDkwLCA5MCwgNjksIDY5LCAxMjgsIDkwLCA5MCwgNjksIDEyOCwgOTAsIDkwLCA2NSwgODgsIDEyOCwgOTAsIDkwLCAKLSAgICA2NSwgODQsIDEyOCwgOTAsIDkwLCA2NSwgODAsIDEyOCwgOTAsIDkwLCA2NSwgNjUsIDEyOCwgOTAsIDkwLCA2NSwgMTI4LCAKLSAgICA5MCwgODksIDcxLCA3OSwgODMsIDEyOCwgOTAsIDg3LCA4MywgODAsIDEyOCwgOTAsIDg3LCA3OCwgNzQsIDEyOCwgOTAsIAotICAgIDg3LCA3OCwgNjYsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc0LCAxMjgsIDkwLCA4NywgMjAyLCA5MCwgODcsIDY1LCA4MiwgCi0gICAgNjUsIDc1LCA2NSwgODksIDEyOCwgOTAsIDg3LCA2NSwgMTI4LCA5MCwgODUsIDg0LCAxMjgsIDkwLCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDkwLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA4NSwgNzksIDEyOCwgOTAsIDg1LCA3NywgMTI4LCA5MCwgODUsIDY2LCAKLSAgICA4NSwgODIsIDEyOCwgOTAsIDg1LCA1MywgMTI4LCA5MCwgODUsIDE4MSwgOTAsIDIxMywgOTAsIDgzLCA3MiwgNjUsIDEyOCwgCi0gICAgOTAsIDgyLCA2NSwgMTI4LCA5MCwgODEsIDY1LCA4MCwgNzIsIDE5MywgOTAsIDc5LCA4NCwgMTI4LCA5MCwgNzksIDc5LCAKLSAgICAxMjgsIDkwLCA3OSwgNjUsIDEyOCwgOTAsIDc2LCA2NSwgNzcsIDE5MywgOTAsIDc2LCA2NSwgMTI4LCA5MCwgNzYsIDE5MywgCi0gICAgOTAsIDc0LCA2OSwgMTI4LCA5MCwgNzMsIDkwLCA1MCwgMTI4LCA5MCwgNzMsIDgxLCA2NSwgNjUsIDEyOCwgOTAsIDczLCAKLSAgICA4MCwgODAsIDY5LCA4MiwgNDUsIDc3LCA3OSwgODUsIDg0LCAyMDAsIDkwLCA3MywgNzgsIDc5LCA4MiwgMTI4LCA5MCwgNzMsIAotICAgIDc2LCA2OCwgNjksIDEyOCwgOTAsIDczLCA3MSwgOTAsIDY1LCAxOTksIDkwLCA3MywgNzEsIDEyOCwgOTAsIDczLCA2OCwgCi0gICAgMTkzLCA5MCwgNzMsIDY2LCAxMjgsIDkwLCA3MywgMTk0LCA5MCwgNzMsIDUxLCAxMjgsIDkwLCAyMDEsIDkwLCA3MiwgODksIAotICAgIDg4LCAxMjgsIDkwLCA3MiwgODksIDg0LCAxMjgsIDkwLCA3MiwgODksIDgyLCA4OCwgMTI4LCA5MCwgNzIsIDg5LCA4MiwgCi0gICAgMTI4LCA5MCwgNzIsIDg5LCA4MCwgMTI4LCA5MCwgNzIsIDg5LCAxMjgsIDkwLCA3MiwgODcsIDY5LCAxMjgsIDkwLCA3MiwgCi0gICAgODcsIDY1LCAxMjgsIDkwLCA3MiwgODUsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDg0LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAKLSAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA4MiwgMTI4LCA5MCwgNzIsIDg1LCA4MCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODgsIAotICAgIDEyOCwgOTAsIDcyLCA4NSwgNzksIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAxMjgsIDkwLCA3MiwgODUsIDEyOCwgOTAsIAotICAgIDcyLCA3OSwgODgsIDEyOCwgOTAsIDcyLCA3OSwgODQsIDEyOCwgOTAsIDcyLCA3OSwgODAsIDEyOCwgOTAsIDcyLCA3OSwgCi0gICAgNzksIDEyOCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgOTAsIDcyLCA3OSwgMTI4LCA5MCwgNzIsIDczLCA4NiwgNjksIDg0LCAKLSAgICA2OSwgMTI4LCA5MCwgNzIsIDczLCA3NiwgMTI4LCA5MCwgNzIsIDczLCAxMjgsIDkwLCA3MiwgNjksIDg4LCAxMjgsIDkwLCAKLSAgICA3MiwgNjksIDg0LCAxMjgsIDkwLCA3MiwgNjksIDgwLCAxMjgsIDkwLCA3MiwgNjksIDY5LCAxMjgsIDkwLCA3MiwgNjksIAotICAgIDEyOCwgOTAsIDcyLCAxOTcsIDkwLCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgODgsIDEyOCwgOTAsIAotICAgIDcyLCA2NSwgODQsIDEyOCwgOTAsIDcyLCA2NSwgODIsIDEyOCwgOTAsIDcyLCA2NSwgODAsIDEyOCwgOTAsIDcyLCA2NSwgCi0gICAgNzMsIDc4LCAxMjgsIDkwLCA3MiwgNjUsIDY1LCAxMjgsIDkwLCA3MiwgNjUsIDEyOCwgOTAsIDcyLCAxMjgsIDkwLCA2OSwgCi0gICAgODQsIDY1LCAxMjgsIDkwLCA2OSwgODIsIDc5LCAxMjgsIDkwLCA2OSwgODIsIDIwNywgOTAsIDY5LCA3OCwgMTI4LCA5MCwgCi0gICAgNjksIDc3LCA3NiwgODksIDY1LCAxMjgsIDkwLCA2OSwgNzcsIDc2LCA3NCwgNjUsIDEyOCwgOTAsIDY5LCA1MCwgMTI4LCAKLSAgICA5MCwgMTk3LCA5MCwgNjUsIDg5LCA3OCwgMTI4LCA5MCwgNjUsIDg5LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA4OSwgNzMsIAotICAgIDIwNiwgOTAsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDkwLCA2NSwgODQsIDY1LCAxMjgsIDkwLCA2NSwgCi0gICAgODIsIDgxLCA2NSwgMTI4LCA5MCwgNjUsIDgyLCA3NiwgMTI4LCA5MCwgNjUsIDgxLCA2OSwgMTk4LCA5MCwgNjUsIDc3LCAKLSAgICA4OCwgMTI4LCA5MCwgNjUsIDIwNCwgOTAsIDY1LCA3MywgNzgsIDEyOCwgOTAsIDY1LCA3MywgMjA2LCA5MCwgNjUsIDczLCAKLSAgICAxMjgsIDkwLCA2NSwgNzIsIDEyOCwgOTAsIDY1LCAyMDAsIDkwLCA2NSwgNzEsIDEyOCwgOTAsIDY1LCA2OSwgNzAsIDEyOCwgCi0gICAgOTAsIDY1LCA1NSwgMTI4LCA5MCwgMTkzLCA5MCwgNDgsIDQ5LCA1NCwgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDcxLCAKLSAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA3MCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAotICAgIDY4LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NywgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgCi0gICAgNTQsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDU0LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MywgMTI4LCA5MCwgNDgsIDQ5LCAKLSAgICA1MywgNzIsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcxLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MCwgMTI4LCA5MCwgNDgsIAotICAgIDQ5LCA1MywgNjksIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY4LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NywgMTI4LCA5MCwgCi0gICAgNDgsIDQ5LCA1MywgNjYsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY1LCAxMjgsIDkwLCA0OCwgNDksIDUzLCAxMjgsIDkwLCAKLSAgICA0OCwgNDksIDUyLCAxMjgsIDkwLCA0OCwgNDksIDUxLCAxMjgsIDkwLCA0OCwgNDksIDUwLCAxMjgsIDkwLCA0OCwgNDksIAotICAgIDQ5LCAxMjgsIDkwLCA0OCwgNDksIDQ4LCAxMjgsIDkwLCA0OCwgNDgsIDU3LCAxMjgsIDkwLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDkwLCA0OCwgNDgsIDU1LCAxMjgsIDkwLCA0OCwgNDgsIDU0LCAxMjgsIDkwLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA5MCwgNDgsIDQ4LCA1MiwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDEyOCwgOTAsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgMTI4LCA5MCwgNDgsIAotICAgIDQ4LCA1MCwgNjgsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY3LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA5MCwgCi0gICAgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDEyOCwgOTAsIDQ4LCA0OCwgNDksIDEyOCwgOTAsIDEyOCwgCi0gICAgMjE4LCA4OSwgODksIDg4LCAxMjgsIDg5LCA4OSwgODQsIDEyOCwgODksIDg5LCA4MiwgODgsIDEyOCwgODksIDg5LCA4MiwgCi0gICAgMTI4LCA4OSwgODksIDgwLCAxMjgsIDg5LCA4OSwgNjksIDEyOCwgODksIDg5LCA2NSwgNjUsIDEyOCwgODksIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgODksIDEyOCwgODksIDg3LCA3OSwgNzksIDEyOCwgODksIDg3LCA3OSwgMTI4LCA4OSwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4OSwgODcsIDczLCAxMjgsIDg5LCA4NywgNjksIDEyOCwgODksIDg3LCA2NSwgNjUsIDEyOCwgODksIDg3LCA2NSwgCi0gICAgMTI4LCA4OSwgODYsIDEyOCwgODksIDg1LCA4OCwgMTI4LCA4OSwgODUsIDg3LCA3OSwgODEsIDEyOCwgODksIDg1LCA4NSwgCi0gICAgNzUsIDY1LCA3NiwgNjksIDY1LCA4MCwgNzMsIDc4LCA4NCwgODUsIDEyOCwgODksIDg1LCA4NSwgMTI4LCA4OSwgODUsIDg0LCAKLSAgICAxMjgsIDg5LCA4NSwgODMsIDEyOCwgODksIDg1LCAyMTEsIDg5LCA4NSwgODIsIDg4LCAxMjgsIDg5LCA4NSwgODIsIDEyOCwgCi0gICAgODksIDg1LCA4MSwgMTI4LCA4OSwgODUsIDIwOSwgODksIDg1LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA4OCwgMTI4LCA4OSwgCi0gICAgODUsIDc5LCA4NCwgMTI4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA4OSwgODUsIDc5LCA3NywgMTI4LCA4OSwgODUsIDc5LCAKLSAgICAxMjgsIDg5LCA4NSwgNzgsIDEyOCwgODksIDg1LCA3NywgMTI4LCA4OSwgODUsIDc0LCAxMjgsIDg5LCA4NSwgNjksIDgxLCAKLSAgICAxMjgsIDg5LCA4NSwgNjksIDEyOCwgODksIDg1LCA2OCwgNzIsIDEyOCwgODksIDg1LCA2OCwgMjAwLCA4OSwgODUsIDY1LCAKLSAgICA3OCwgMTI4LCA4OSwgODUsIDY1LCA2OSwgNzgsIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgODUsIAotICAgIDQ1LCA4OSwgNjksIDEyOCwgODksIDg1LCA0NSwgODUsIDEyOCwgODksIDg1LCA0NSwgNzksIDEyOCwgODksIDg1LCA0NSwgCi0gICAgNzMsIDEyOCwgODksIDg1LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDY1LCAKLSAgICA2OSwgMTI4LCA4OSwgODUsIDQ1LCA2NSwgMTI4LCA4OSwgODUsIDEyOCwgODksIDIxMywgODksIDgyLCA4OSwgMTI4LCA4OSwgCi0gICAgODAsIDgzLCA3MywgNzYsIDczLCAxMjgsIDg5LCA4MCwgNzksIDgyLCA4MiwgNzksIDczLCAxMjgsIDg5LCA4MCwgNzksIDc1LCAKLSAgICA4MiwgNzMsIDgzLCA3MywgODMsIDEyOCwgODksIDgwLCA3OSwgNzUsIDgyLCA3MywgODMsIDczLCAyMTEsIDg5LCA4MCwgNzksIAotICAgIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDg5LCA3OSwgODksIDEyOCwgODksIDc5LCA4OCwgCi0gICAgMTI4LCA4OSwgNzksIDg3LCA2OCwgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgNzYsIDc4LCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDg5LCA3OSwgODUsIDg0LCA3MiwgNzAsIDg1LCAyMDQsIDg5LCA3OSwgODQsIDEyOCwgODksIDc5LCA4MiwgNzMsIAotICAgIDEyOCwgODksIDc5LCA4MSwgMTI4LCA4OSwgNzksIDIwOSwgODksIDc5LCA4MCwgMTI4LCA4OSwgNzksIDc5LCAxMjgsIDg5LCAKLSAgICA3OSwgNzcsIDc5LCAxMjgsIDg5LCA3OSwgNzEsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIDcyLCAxMjgsIDg5LCA3OSwgNjgsIAotICAgIDEyOCwgODksIDc5LCAxOTYsIDg5LCA3OSwgNjUsIDEyOCwgODksIDc5LCA0NSwgODksIDY5LCA3OSwgMTI4LCA4OSwgNzksIAotICAgIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCA2NSwgMTI4LCA4OSwgNzksIDQ1LCA3OSwgMTI4LCA4OSwgCi0gICAgNzksIDQ1LCA3MywgMTI4LCA4OSwgNzksIDQ1LCA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgNjUsIDY5LCAxMjgsIDg5LCAKLSAgICA3OSwgNDUsIDY1LCAxMjgsIDg5LCA3OSwgMTI4LCA4OSwgMjA3LCA4OSwgNzMsIDkwLCA2OSwgODQsIDEyOCwgODksIDczLCAKLSAgICA4OCwgMTI4LCA4OSwgNzMsIDg3LCA3OCwgMTI4LCA4OSwgNzMsIDg0LCAxMjgsIDg5LCA3MywgODAsIDEyOCwgODksIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgODksIDczLCA3MywgMTI4LCA4OSwgNzMsIDE5OSwgODksIDczLCA2OSwgODgsIDEyOCwgODksIDczLCAKLSAgICA2OSwgODQsIDEyOCwgODksIDczLCA2OSwgODAsIDEyOCwgODksIDczLCA2OSwgNjksIDEyOCwgODksIDczLCA2OSwgMTI4LCAKLSAgICA4OSwgNzMsIDY4LCA2OCwgNzMsIDgzLCAyMDAsIDg5LCA3MywgNDUsIDg1LCAxMjgsIDg5LCA3MywgMTI4LCA4OSwgNzAsIAotICAgIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgCi0gICAgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIAotICAgIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgCi0gICAgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCAKLSAgICA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgCi0gICAgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIAotICAgIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgCi0gICAgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCAKLSAgICA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgCi0gICAgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCAKLSAgICA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIAotICAgIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgCi0gICAgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgCi0gICAgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCAKLSAgICA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCAKLSAgICA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIAotICAgIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIAotICAgIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIAotICAgIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgCi0gICAgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgCi0gICAgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCAKLSAgICA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIAotICAgIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAKLSAgICAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAKLSAgICAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCAKLSAgICA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIAotICAgIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgCi0gICAgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgCi0gICAgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCAKLSAgICA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIAotICAgIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCAKLSAgICA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCAKLSAgICA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCAKLSAgICA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIAotICAgIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIAotICAgIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIAotICAgIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCAKLSAgICA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCAKLSAgICA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIAotICAgIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIAotICAgIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIAotICAgIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIAotICAgIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIAotICAgIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIAotICAgIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIAotICAgIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIAotICAgIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgCi0gICAgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAKLSAgICAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCAKLSAgICA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCAKLSAgICA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCAKLSAgICA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCAKLSAgICA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCAKLSAgICA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCAKLSAgICA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCAKLSAgICA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIAotICAgIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgCi0gICAgMTI4LCA4NywgODIsIDY5LCA3OCwgNjcsIDcyLCAxMjgsIDg3LCA4MiwgNjksIDY1LCA4NCwgMjAwLCA4NywgODIsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDg3LCA4MiwgNjUsIDgwLCAxMjgsIDg3LCA3OSwgODgsIDEyOCwgODcsIDc5LCA4NywgMTI4LCAKLSAgICA4NywgNzksIDgyLCA4MywgNzIsIDczLCA4MCwgMTI4LCA4NywgNzksIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg3LCA3OSwgODIsIAotICAgIDc2LCAxOTYsIDg3LCA3OSwgODIsIDc1LCA2OSwgODIsIDEyOCwgODcsIDc5LCA4MiwgNzUsIDEyOCwgODcsIDc5LCA4MiwgCi0gICAgMjAzLCA4NywgNzksIDgyLCA2OCwgODMsIDgwLCA2NSwgNjcsIDY5LCAxMjgsIDg3LCA3OSwgODIsIDE5NiwgODcsIDc5LCAKLSAgICA4MCwgMTI4LCA4NywgNzksIDc5LCA3OCwgMTI4LCA4NywgNzksIDc5LCA3NiwgMTI4LCA4NywgNzksIDc5LCA2OCwgODMsIAotICAgIDQ1LCA2NywgODIsIDY5LCAxOTcsIDg3LCA3OSwgNzksIDY4LCAxMjgsIDg3LCA3OSwgNzgsIDEyOCwgODcsIDc5LCAyMDYsIAotICAgIDg3LCA3OSwgNzcsIDY5LCA3OCwgMjExLCA4NywgNzksIDc3LCA2OSwgMjA2LCA4NywgNzksIDc3LCA2NSwgNzgsIDIxMSwgCi0gICAgODcsIDc5LCA3NywgNjUsIDc4LCAxMjgsIDg3LCA3OSwgNzcsIDY1LCAyMDYsIDg3LCA3OSwgNzYsIDc5LCA4MywgNzksIAotICAgIDEyOCwgODcsIDc5LCA3NiwgMTk4LCA4NywgNzksIDY5LCAxMjgsIDg3LCA3OSwgNjUsIDEyOCwgODcsIDczLCA4NCwgNzIsIAotICAgIDc5LCA4NSwgMjEyLCA4NywgNzMsIDg0LCA3MiwgNzMsIDc4LCAxMjgsIDg3LCA3MywgODQsIDcyLCA3MywgMjA2LCA4NywgCi0gICAgNzMsIDgyLCA2OSwgMTk2LCA4NywgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDg3LCA3MywgNzgsIDc1LCA3MywgNzgsIAotICAgIDE5OSwgODcsIDczLCA3OCwgNzUsIDEyOCwgODcsIDczLCA3OCwgNzQsIDY1LCAxMjgsIDg3LCA3MywgNzgsIDcxLCA4MywgCi0gICAgMTI4LCA4NywgNzMsIDc4LCA2OSwgMTI4LCA4NywgNzMsIDc4LCAxOTcsIDg3LCA3MywgNzgsIDY4LCA4NSwgMTI4LCA4NywgCi0gICAgNzMsIDc4LCA2OCwgNzksIDg3LCAxMjgsIDg3LCA3MywgNzgsIDY4LCAxMjgsIDg3LCA3MywgNzgsIDE5NiwgODcsIDczLCAKLSAgICA3OCwgMTI4LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIAotICAgIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgCi0gICAgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIAotICAgIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgCi0gICAgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIAotICAgIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgCi0gICAgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAKLSAgICAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCAKLSAgICA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIAotICAgIDIwNiwgODcsIDY5LCA4MywgODQsIDEyOCwgODcsIDY5LCA4MywgMjEyLCA4NywgNjksIDgwLCAxMjgsIDg3LCA2OSwgNzksIAotICAgIDEyOCwgODcsIDY5LCA3OCwgMTI4LCA4NywgNjksIDc2LCA3NiwgMTI4LCA4NywgNjksIDczLCA3MSwgNzIsIDIxMiwgODcsIAotICAgIDY5LCA3MywgNjksIDgyLCA4MywgODQsIDgyLCA2NSwgODMsIDIxMSwgODcsIDY5LCA3MywgMTI4LCA4NywgNjksIDY5LCA3OCwgCisgICAgMjExLCA4OSwgNjUsIDEyOCwgNjUsIDgyLCA3NywgNjksIDc4LCA3MywgNjUsIDIwNiwgNjYsIDY5LCA3OCwgNzEsIDY1LCAKKyAgICA3NiwgMjAxLCA4MywgNzIsIDY1LCA4MiwgNjUsIDY4LCAxOTMsIDgzLCA3MywgODgsIDEyOCwgNzgsIDY1LCAxMjgsIDc4LCAKKyAgICA2OSwgNzEsIDY1LCA4NCwgNzMsIDg2LCAxOTcsIDY4LCA3OSwgODQsIDIxMSwgNjgsIDc5LCA4NywgNzgsIDg3LCA2NSwgODIsIAorICAgIDY4LCAyMTEsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NCwgNjksIDY5LCAyMDUsIDc2LCA2NSwgMTI4LCA3OCwgNjksIAorICAgIDg3LCAxOTMsIDgzLCA3MywgNjgsIDY4LCA3MiwgNjUsIDIwNSwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCAKKyAgICAyMDAsIDkwLCA5MCwgODksIDg4LCAxMjgsIDkwLCA5MCwgODksIDg0LCAxMjgsIDkwLCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA5MCwgOTAsIDg5LCA4MiwgMTI4LCA5MCwgOTAsIDg5LCA4MCwgMTI4LCA5MCwgOTAsIDg5LCA2NSwgMTI4LCA5MCwgOTAsIAorICAgIDg5LCAxMjgsIDkwLCA5MCwgODUsIDg4LCAxMjgsIDkwLCA5MCwgODUsIDgyLCA4OCwgMTI4LCA5MCwgOTAsIDg1LCA4MiwgCisgICAgMTI4LCA5MCwgOTAsIDg1LCA4MCwgMTI4LCA5MCwgOTAsIDg1LCAxMjgsIDkwLCA5MCwgODMsIDg5LCA2NSwgMTI4LCA5MCwgCisgICAgOTAsIDgzLCA2NSwgMTI4LCA5MCwgOTAsIDc5LCA4OCwgMTI4LCA5MCwgOTAsIDc5LCA4MCwgMTI4LCA5MCwgOTAsIDc5LCAKKyAgICAxMjgsIDkwLCA5MCwgNzMsIDg4LCAxMjgsIDkwLCA5MCwgNzMsIDg0LCAxMjgsIDkwLCA5MCwgNzMsIDgwLCAxMjgsIDkwLCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA5MCwgOTAsIDczLCA2OSwgODQsIDEyOCwgOTAsIDkwLCA3MywgNjksIDgwLCAxMjgsIAorICAgIDkwLCA5MCwgNzMsIDY5LCAxMjgsIDkwLCA5MCwgNzMsIDEyOCwgOTAsIDkwLCA2OSwgODgsIDEyOCwgOTAsIDkwLCA2OSwgCisgICAgODAsIDEyOCwgOTAsIDkwLCA2OSwgNjksIDEyOCwgOTAsIDkwLCA2OSwgMTI4LCA5MCwgOTAsIDY1LCA4OCwgMTI4LCA5MCwgCisgICAgOTAsIDY1LCA4NCwgMTI4LCA5MCwgOTAsIDY1LCA4MCwgMTI4LCA5MCwgOTAsIDY1LCA2NSwgMTI4LCA5MCwgOTAsIDY1LCAKKyAgICAxMjgsIDkwLCA4OSwgNzEsIDc5LCA4MywgMTI4LCA5MCwgODcsIDgzLCA4MCwgMTI4LCA5MCwgODcsIDc4LCA3NCwgMTI4LCAKKyAgICA5MCwgODcsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDkwLCA4NywgNzQsIDEyOCwgOTAsIDg3LCAyMDIsIDkwLCA4NywgNjUsIAorICAgIDgyLCA2NSwgNzUsIDY1LCA4OSwgMTI4LCA5MCwgODcsIDY1LCAxMjgsIDkwLCA4NSwgODQsIDEyOCwgOTAsIDg1LCA3OSwgCisgICAgODgsIDEyOCwgOTAsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDg1LCA3OSwgMTI4LCA5MCwgODUsIDc3LCAxMjgsIDkwLCA4NSwgCisgICAgNjYsIDg1LCA4MiwgMTI4LCA5MCwgODUsIDUzLCAxMjgsIDkwLCA4NSwgMTgxLCA5MCwgMjEzLCA5MCwgODMsIDcyLCA2NSwgCisgICAgMTI4LCA5MCwgODIsIDY1LCAxMjgsIDkwLCA4MSwgNjUsIDgwLCA3MiwgMTkzLCA5MCwgNzksIDg0LCAxMjgsIDkwLCA3OSwgCisgICAgNzksIDEyOCwgOTAsIDc5LCA2NSwgMTI4LCA5MCwgNzYsIDY1LCA3NywgMTkzLCA5MCwgNzYsIDY1LCAxMjgsIDkwLCA3NiwgCisgICAgMTkzLCA5MCwgNzQsIDY5LCAxMjgsIDkwLCA3MywgOTAsIDUwLCAxMjgsIDkwLCA3MywgODEsIDY1LCA2NSwgMTI4LCA5MCwgCisgICAgNzMsIDgwLCA4MCwgNjksIDgyLCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgOTAsIDczLCA3OCwgNzksIDgyLCAxMjgsIDkwLCAKKyAgICA3MywgNzYsIDY4LCA2OSwgMTI4LCA5MCwgNzMsIDcxLCA5MCwgNjUsIDE5OSwgOTAsIDczLCA3MSwgMTI4LCA5MCwgNzMsIAorICAgIDY4LCAxOTMsIDkwLCA3MywgNjYsIDEyOCwgOTAsIDczLCAxOTQsIDkwLCA3MywgNTEsIDEyOCwgOTAsIDIwMSwgOTAsIDcyLCAKKyAgICA4OSwgODgsIDEyOCwgOTAsIDcyLCA4OSwgODQsIDEyOCwgOTAsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDkwLCA3MiwgODksIAorICAgIDgyLCAxMjgsIDkwLCA3MiwgODksIDgwLCAxMjgsIDkwLCA3MiwgODksIDEyOCwgOTAsIDcyLCA4NywgNjksIDEyOCwgOTAsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgOTAsIDcyLCA4NSwgODgsIDEyOCwgOTAsIDcyLCA4NSwgODQsIDEyOCwgOTAsIDcyLCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDkwLCA3MiwgODUsIDgyLCAxMjgsIDkwLCA3MiwgODUsIDgwLCAxMjgsIDkwLCA3MiwgODUsIDc5LCAKKyAgICA4OCwgMTI4LCA5MCwgNzIsIDg1LCA3OSwgODAsIDEyOCwgOTAsIDcyLCA4NSwgNzksIDEyOCwgOTAsIDcyLCA4NSwgMTI4LCAKKyAgICA5MCwgNzIsIDc5LCA4OCwgMTI4LCA5MCwgNzIsIDc5LCA4NCwgMTI4LCA5MCwgNzIsIDc5LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDc5LCA3OSwgMTI4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA5MCwgNzIsIDc5LCAxMjgsIDkwLCA3MiwgNzMsIDg2LCA2OSwgCisgICAgODQsIDY5LCAxMjgsIDkwLCA3MiwgNzMsIDc2LCAxMjgsIDkwLCA3MiwgNzMsIDEyOCwgOTAsIDcyLCA2OSwgODgsIDEyOCwgCisgICAgOTAsIDcyLCA2OSwgODQsIDEyOCwgOTAsIDcyLCA2OSwgODAsIDEyOCwgOTAsIDcyLCA2OSwgNjksIDEyOCwgOTAsIDcyLCAKKyAgICA2OSwgMTI4LCA5MCwgNzIsIDE5NywgOTAsIDcyLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNzIsIDY1LCA4OCwgMTI4LCAKKyAgICA5MCwgNzIsIDY1LCA4NCwgMTI4LCA5MCwgNzIsIDY1LCA4MiwgMTI4LCA5MCwgNzIsIDY1LCA4MCwgMTI4LCA5MCwgNzIsIAorICAgIDY1LCA3MywgNzgsIDEyOCwgOTAsIDcyLCA2NSwgNjUsIDEyOCwgOTAsIDcyLCA2NSwgMTI4LCA5MCwgNzIsIDEyOCwgOTAsIAorICAgIDY5LCA4NCwgNjUsIDEyOCwgOTAsIDY5LCA4MiwgNzksIDEyOCwgOTAsIDY5LCA4MiwgMjA3LCA5MCwgNjksIDc4LCAxMjgsIAorICAgIDkwLCA2OSwgNzcsIDc2LCA4OSwgNjUsIDEyOCwgOTAsIDY5LCA3NywgNzYsIDc0LCA2NSwgMTI4LCA5MCwgNjksIDUwLCAKKyAgICAxMjgsIDkwLCAxOTcsIDkwLCA2NSwgODksIDc4LCAxMjgsIDkwLCA2NSwgODksIDczLCA3OCwgMTI4LCA5MCwgNjUsIDg5LCAKKyAgICA3MywgMjA2LCA5MCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgOTAsIDY1LCA4NCwgNjUsIDEyOCwgOTAsIAorICAgIDY1LCA4MiwgODEsIDY1LCAxMjgsIDkwLCA2NSwgODIsIDc2LCAxMjgsIDkwLCA2NSwgODEsIDY5LCAxOTgsIDkwLCA2NSwgCisgICAgNzcsIDg4LCAxMjgsIDkwLCA2NSwgNzYsIDEyOCwgOTAsIDY1LCAyMDQsIDkwLCA2NSwgNzMsIDc4LCAxMjgsIDkwLCA2NSwgCisgICAgNzMsIDIwNiwgOTAsIDY1LCA3MywgMTI4LCA5MCwgNjUsIDcyLCAxMjgsIDkwLCA2NSwgMjAwLCA5MCwgNjUsIDcxLCAxMjgsIAorICAgIDkwLCA2NSwgNjksIDcwLCAxMjgsIDkwLCA2NSwgNTUsIDEyOCwgOTAsIDE5MywgOTAsIDQ4LCA0OSwgNTQsIDcyLCAxMjgsIAorICAgIDkwLCA0OCwgNDksIDU0LCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIDY5LCAKKyAgICAxMjgsIDkwLCA0OCwgNDksIDU0LCA2OCwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTQsIAorICAgIDY2LCAxMjgsIDkwLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA5MCwgNDgsIDQ5LCA1NCwgMTI4LCA5MCwgNDgsIDQ5LCA1MywgCisgICAgNzMsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDcyLCAxMjgsIDkwLCA0OCwgNDksIDUzLCA3MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MywgNzAsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY5LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2OCwgMTI4LCA5MCwgNDgsIAorICAgIDQ5LCA1MywgNjcsIDEyOCwgOTAsIDQ4LCA0OSwgNTMsIDY2LCAxMjgsIDkwLCA0OCwgNDksIDUzLCA2NSwgMTI4LCA5MCwgCisgICAgNDgsIDQ5LCA1MywgMTI4LCA5MCwgNDgsIDQ5LCA1MiwgMTI4LCA5MCwgNDgsIDQ5LCA1MSwgMTI4LCA5MCwgNDgsIDQ5LCAKKyAgICA1MCwgMTI4LCA5MCwgNDgsIDQ5LCA0OSwgMTI4LCA5MCwgNDgsIDQ5LCA0OCwgMTI4LCA5MCwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA5MCwgNDgsIDQ4LCA1NiwgMTI4LCA5MCwgNDgsIDQ4LCA1NSwgMTI4LCA5MCwgNDgsIDQ4LCA1NCwgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MywgNjUsIDEyOCwgOTAsIDQ4LCA0OCwgNTMsIDEyOCwgOTAsIDQ4LCA0OCwgNTIsIDY1LCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDUyLCAxMjgsIDkwLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA5MCwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgOTAsIDQ4LCAKKyAgICA0OCwgNTEsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY4LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCA2NywgMTI4LCA5MCwgNDgsIAorICAgIDQ4LCA1MCwgNjYsIDEyOCwgOTAsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDkwLCA0OCwgNDgsIDUwLCAxMjgsIDkwLCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDkwLCAxMjgsIDIxOCwgODksIDg5LCA4OCwgMTI4LCA4OSwgODksIDg0LCAxMjgsIDg5LCA4OSwgODIsIAorICAgIDg4LCAxMjgsIDg5LCA4OSwgODIsIDEyOCwgODksIDg5LCA4MCwgMTI4LCA4OSwgODksIDY5LCAxMjgsIDg5LCA4OSwgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4OSwgNjUsIDEyOCwgODksIDg5LCAxMjgsIDg5LCA4NywgNzksIDc5LCAxMjgsIDg5LCA4NywgNzksIAorICAgIDEyOCwgODksIDg3LCA3MywgNzMsIDEyOCwgODksIDg3LCA3MywgMTI4LCA4OSwgODcsIDY5LCAxMjgsIDg5LCA4NywgNjUsIAorICAgIDY1LCAxMjgsIDg5LCA4NywgNjUsIDEyOCwgODksIDg2LCAxMjgsIDg5LCA4NSwgODgsIDEyOCwgODksIDg1LCA4NywgNzksIAorICAgIDgxLCAxMjgsIDg5LCA4NSwgODUsIDc1LCA2NSwgNzYsIDY5LCA2NSwgODAsIDczLCA3OCwgODQsIDg1LCAxMjgsIDg5LCA4NSwgCisgICAgODUsIDEyOCwgODksIDg1LCA4NCwgMTI4LCA4OSwgODUsIDgzLCAxMjgsIDg5LCA4NSwgMjExLCA4OSwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA4OSwgODUsIDgyLCAxMjgsIDg5LCA4NSwgODEsIDEyOCwgODksIDg1LCAyMDksIDg5LCA4NSwgODAsIDEyOCwgODksIAorICAgIDg1LCA3OSwgODgsIDEyOCwgODksIDg1LCA3OSwgODQsIDEyOCwgODksIDg1LCA3OSwgODAsIDEyOCwgODksIDg1LCA3OSwgCisgICAgNzcsIDEyOCwgODksIDg1LCA3OSwgMTI4LCA4OSwgODUsIDc4LCAxMjgsIDg5LCA4NSwgNzcsIDEyOCwgODksIDg1LCA3NCwgCisgICAgMTI4LCA4OSwgODUsIDY5LCA4MSwgMTI4LCA4OSwgODUsIDY5LCAxMjgsIDg5LCA4NSwgNjgsIDcyLCAxMjgsIDg5LCA4NSwgCisgICAgNjgsIDIwMCwgODksIDg1LCA2NSwgNzgsIDEyOCwgODksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg5LCA4NSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDg1LCA0NSwgODksIDY5LCAxMjgsIDg5LCA4NSwgNDUsIDg1LCAxMjgsIDg5LCA4NSwgNDUsIAorICAgIDc5LCAxMjgsIDg5LCA4NSwgNDUsIDczLCAxMjgsIDg5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA4OSwgODUsIDQ1LCA2OSwgCisgICAgMTI4LCA4OSwgODUsIDQ1LCA2NSwgNjksIDEyOCwgODksIDg1LCA0NSwgNjUsIDEyOCwgODksIDg1LCAxMjgsIDg5LCAyMTMsIAorICAgIDg5LCA4MiwgODksIDEyOCwgODksIDgwLCA4MywgNzMsIDc2LCA3MywgMTI4LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3MywgCisgICAgMTI4LCA4OSwgODAsIDc5LCA3NSwgODIsIDczLCA4MywgNzMsIDgzLCAxMjgsIDg5LCA4MCwgNzksIDc1LCA4MiwgNzMsIDgzLCAKKyAgICA3MywgMjExLCA4OSwgODAsIDc5LCA3MSwgNjksIDcxLCA4MiwgNjUsIDc3LCA3NywgNjksIDc4LCA3MywgMTI4LCA4OSwgNzksIAorICAgIDg5LCAxMjgsIDg5LCA3OSwgODgsIDEyOCwgODksIDc5LCA4NywgNjgsIDEyOCwgODksIDc5LCA4NSwgODQsIDcyLCA3MCwgCisgICAgODUsIDc2LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4OSwgNzksIDg1LCA4NCwgNzIsIDcwLCA4NSwgMjA0LCA4OSwgNzksIDg0LCAKKyAgICAxMjgsIDg5LCA3OSwgODIsIDczLCAxMjgsIDg5LCA3OSwgODEsIDEyOCwgODksIDc5LCAyMDksIDg5LCA3OSwgODAsIDEyOCwgCisgICAgODksIDc5LCA3OSwgMTI4LCA4OSwgNzksIDc3LCA3OSwgMTI4LCA4OSwgNzksIDcxLCA3MiwgMTI4LCA4OSwgNzksIDY4LCAKKyAgICA3MiwgMTI4LCA4OSwgNzksIDY4LCAxMjgsIDg5LCA3OSwgMTk2LCA4OSwgNzksIDY1LCAxMjgsIDg5LCA3OSwgNDUsIDg5LCAKKyAgICA2OSwgNzksIDEyOCwgODksIDc5LCA0NSwgODksIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA4OSwgNjUsIDEyOCwgODksIAorICAgIDc5LCA0NSwgNzksIDEyOCwgODksIDc5LCA0NSwgNzMsIDEyOCwgODksIDc5LCA0NSwgNjksIDc5LCAxMjgsIDg5LCA3OSwgCisgICAgNDUsIDY1LCA2OSwgMTI4LCA4OSwgNzksIDQ1LCA2NSwgMTI4LCA4OSwgNzksIDEyOCwgODksIDIwNywgODksIDczLCA5MCwgCisgICAgNjksIDg0LCAxMjgsIDg5LCA3MywgODgsIDEyOCwgODksIDczLCA4NywgNzgsIDEyOCwgODksIDczLCA4NCwgMTI4LCA4OSwgCisgICAgNzMsIDgwLCAxMjgsIDg5LCA3MywgNzgsIDcxLCAxMjgsIDg5LCA3MywgNzMsIDEyOCwgODksIDczLCAxOTksIDg5LCA3MywgCisgICAgNjksIDg4LCAxMjgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDg5LCA3MywgNjksIDgwLCAxMjgsIDg5LCA3MywgNjksIDY5LCAKKyAgICAxMjgsIDg5LCA3MywgNjksIDEyOCwgODksIDczLCA2OCwgNjgsIDczLCA4MywgMjAwLCA4OSwgNzMsIDQ1LCA4NSwgMTI4LCAKKyAgICA4OSwgNzMsIDEyOCwgODksIDcyLCA2OSwgMTI4LCA4OSwgNzAsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDg5LCA3MCwgNjksIAorICAgIDgzLCA3MywgMjExLCA4OSwgNzAsIDY5LCAyMDYsIDg5LCA2OSwgODksIDEyOCwgODksIDY5LCA4NywgMTI4LCA4OSwgNjksIAorICAgIDg1LCA4OCwgMTI4LCA4OSwgNjksIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDg5LCA2OSwgODUsIDgxLCAxMjgsIDg5LCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgODksIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg5LCAKKyAgICA2OSwgODQsIDczLCA4NiwgMTI4LCA4OSwgNjksIDgzLCA4NCwgODUsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIAorICAgIDcxLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDY1LCAKKyAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzcsIDczLCA2OSwgCisgICAgODUsIDc3LCAxMjgsIDg5LCA2OSwgODMsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCAKKyAgICA4OSwgNjksIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODksIDY5LCA4MiwgODUsIDEyOCwgODksIDY5LCA4MiwgCisgICAgMjEzLCA4OSwgNjksIDgyLCA3MywgMTI4LCA4OSwgNjksIDgyLCA2NSwgMjAwLCA4OSwgNjksIDgyLCAxMjgsIDg5LCA2OSwgCisgICAgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4OSwgNjksIDc5LCA0NSwgODksIDY1LCAxMjgsIDg5LCAKKyAgICA2OSwgNzksIDQ1LCA4NSwgMTI4LCA4OSwgNjksIDc5LCA0NSwgNzksIDEyOCwgODksIDY5LCA3OCwgNzMsIDgzLCA2OSwgCisgICAgMjAxLCA4OSwgNjksIDc4LCA2NSwgODAsIDEyOCwgODksIDY5LCA3OCwgMTI4LCA4OSwgNjksIDIwNiwgODksIDY5LCA3NiwgCisgICAgNzYsIDc5LCA4NywgMTI4LCA4OSwgNjksIDc2LCA3NiwgNzksIDIxNSwgODksIDY5LCA3MywgNzgsIDEyOCwgODksIDY5LCAKKyAgICA3MiwgMTI4LCA4OSwgNjksIDY5LCA3MSwgMTI4LCA4OSwgNjksIDY5LCAxMjgsIDg5LCA2OSwgNjUsIDIxMCwgODksIDY5LCAKKyAgICA2NSwgMTI4LCA4OSwgNjUsIDkwLCA5MCwgMTI4LCA4OSwgNjUsIDkwLCA3MiwgMTI4LCA4OSwgNjUsIDkwLCAxMjgsIDg5LCAKKyAgICA2NSwgODksIDY4LCAxMjgsIDg5LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg5LCA2NSwgODksIDEyOCwgODksIAorICAgIDY1LCA4NywgNzgsIDEyOCwgODksIDY1LCA4NywgMTI4LCA4OSwgNjUsIDg2LCAxMjgsIDg5LCA2NSwgODUsIDEyOCwgODksIAorICAgIDY1LCA4NCwgODQsIDEyOCwgODksIDY1LCA4NCwgNzMsIDEyOCwgODksIDY1LCA4NCwgNzIsIDEyOCwgODksIDY1LCA4NCwgCisgICAgMTI4LCA4OSwgNjUsIDgzLCA4MywgMTI4LCA4OSwgNjUsIDgzLCA3MiwgMTI4LCA4OSwgNjUsIDgzLCAxMjgsIDg5LCA2NSwgCisgICAgODIsIDgyLCAxMjgsIDg5LCA2NSwgODIsIDEyOCwgODksIDY1LCAyMTAsIDg5LCA2NSwgODEsIDEyOCwgODksIDY1LCA4MCwgCisgICAgMTI4LCA4OSwgNjUsIDc4LCA4MywgNjUsIDg5LCA2NSwgMTI4LCA4OSwgNjUsIDc4LCA3MSwgMTI4LCA4OSwgNjUsIDc4LCAKKyAgICAxOTksIDg5LCA2NSwgNzgsIDEyOCwgODksIDY1LCA3NywgNzksIDc1LCAxMjgsIDg5LCA2NSwgNzcsIDY1LCA3NSwgNzUsIAorICAgIDY1LCA3OCwgMTI4LCA4OSwgNjUsIDc3LCAxMjgsIDg5LCA2NSwgNzYsIDEyOCwgODksIDY1LCA3NSwgNzIsIDcyLCAxMjgsIAorICAgIDg5LCA2NSwgNzUsIDcyLCAxMjgsIDg5LCA2NSwgNzUsIDY1LCA4MywgNzIsIDEyOCwgODksIDY1LCA3NSwgMTI4LCA4OSwgCisgICAgNjUsIDc0LCA4NSwgODIsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDg5LCA2NSwgNzQsIDEyOCwgODksIDY1LCA3MywgMTI4LCAKKyAgICA4OSwgNjUsIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcyLCAxMjgsIDg5LCA2NSwgNzEsIDc4LCAxMjgsIDg5LCA2NSwgNzEsIAorICAgIDcyLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCA3MiwgMTI4LCA4OSwgNjUsIDcxLCAxMjgsIDg5LCA2NSwgNzAsIDIxMywgODksIAorICAgIDY1LCA3MCwgMTI4LCA4OSwgNjUsIDY5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA4OSwgNjUsIDY4LCA3MiwgMTI4LCA4OSwgCisgICAgNjUsIDY4LCA2OCwgNzIsIDEyOCwgODksIDY1LCA2OCwgNjgsIDEyOCwgODksIDY1LCA2OCwgMTI4LCA4OSwgNjUsIDY3LCAKKyAgICA3MiwgMTI4LCA4OSwgNjUsIDY2LCA3MiwgMTI4LCA4OSwgNjUsIDY2LCAxMjgsIDg5LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCAKKyAgICA4OSwgNjUsIDY1LCA3MywgMTI4LCA4OSwgNjUsIDY1LCA2OCwgNzksIDEyOCwgODksIDY1LCA0NSwgODksIDc5LCAxMjgsIAorICAgIDg5LCA2NSwgNDUsIDg1LCAxMjgsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDg5LCA0OCwgNDgsIDU2LCAxMjgsIDg5LCA0OCwgCisgICAgNDgsIDU1LCAxMjgsIDg5LCA0OCwgNDgsIDU0LCAxMjgsIDg5LCA0OCwgNDgsIDUzLCAxMjgsIDg5LCA0OCwgNDgsIDUyLCAKKyAgICAxMjgsIDg5LCA0OCwgNDgsIDUxLCAxMjgsIDg5LCA0OCwgNDgsIDUwLCAxMjgsIDg5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCAKKyAgICA4OSwgNDgsIDQ4LCA0OSwgMTI4LCA4OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgODgsIDg5LCA4OCwgMTI4LCA4OCwgODksIAorICAgIDg1LCAxMjgsIDg4LCA4OSwgODQsIDEyOCwgODgsIDg5LCA4MiwgODgsIDEyOCwgODgsIDg5LCA4MiwgMTI4LCA4OCwgODksIAorICAgIDgwLCAxMjgsIDg4LCA4OSwgNzksIDc5LCA3NCwgMTI4LCA4OCwgODksIDc5LCA3OSwgMTI4LCA4OCwgODksIDc5LCAxMjgsIAorICAgIDg4LCA4OSwgNzMsIDEyOCwgODgsIDg5LCA2OSwgNjksIDIwNSwgODgsIDg5LCA2OSwgNjksIDEyOCwgODgsIDg5LCA2OSwgCisgICAgMTI4LCA4OCwgODksIDY1LCA2NSwgMTI4LCA4OCwgODksIDY1LCAxMjgsIDg4LCA4OSwgMTI4LCA4OCwgODcsIDczLCAxMjgsIAorICAgIDg4LCA4NywgNjksIDY5LCAxMjgsIDg4LCA4NywgNjksIDEyOCwgODgsIDg3LCA2NSwgNjUsIDEyOCwgODgsIDg3LCA2NSwgCisgICAgMTI4LCA4OCwgODcsIDEyOCwgODgsIDg2LCA2OSwgMTI4LCA4OCwgODYsIDY1LCAxMjgsIDg4LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDg4LCA4NSwgNzksIDEyOCwgODgsIDg1LCAxMjgsIDg4LCA4MywgNzIsIDY1LCA2NSwgODksIDY1LCA4NCwgNzIsIDczLCA4OSwgCisgICAgNjUsIDEyOCwgODgsIDc5LCA4OCwgMTI4LCA4OCwgNzksIDg0LCAxMjgsIDg4LCA3OSwgODIsIDEyOCwgODgsIDc5LCA4MCwgCisgICAgNzIsIDEyOCwgODgsIDc5LCA4MCwgMTI4LCA4OCwgNzksIDY1LCAxMjgsIDg4LCA3OSwgMTI4LCA4OCwgNzMsIDg4LCAxMjgsIAorICAgIDg4LCA3MywgODQsIDEyOCwgODgsIDczLCA4MiwgNzksIDIwNiwgODgsIDczLCA4MCwgMTI4LCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA4OCwgNzMsIDY5LCA4NCwgMTI4LCA4OCwgNzMsIDY5LCA4MCwgMTI4LCA4OCwgNzMsIDY5LCAxMjgsIDg4LCA3MywgCisgICAgNjUsIDY2LCAxMjgsIDg4LCA3MywgMTI4LCA4OCwgNzEsIDEyOCwgODgsIDY5LCA4OSwgNzgsIDEyOCwgODgsIDY5LCA4MywgCisgICAgODQsIDY5LCAyMTEsIDg4LCA2OSwgNzIsIDEyOCwgODgsIDY5LCA2OSwgMTI4LCA4OCwgNjksIDEyOCwgODgsIDY1LCA4NSwgCisgICAgODMsIDEyOCwgODgsIDY1LCA4NSwgMTI4LCA4OCwgNjUsIDgwLCA3MiwgMTI4LCA4OCwgNjUsIDc4LCAxMjgsIDg4LCA2NSwgCisgICAgNjUsIDEyOCwgODgsIDY1LCAxMjgsIDg4LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NiwgMTI4LCA4OCwgCisgICAgNDgsIDQ4LCA1NSwgMTI4LCA4OCwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgODgsIDQ4LCA0OCwgNTQsIDEyOCwgODgsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgODgsIDQ4LCA0OCwgNTIsIDY2LCAxMjgsIDg4LCA0OCwgNDgsIDUyLCA2NSwgMTI4LCA4OCwgNDgsIAorICAgIDQ4LCA1MiwgMTI4LCA4OCwgNDgsIDQ4LCA1MSwgMTI4LCA4OCwgNDgsIDQ4LCA1MCwgMTI4LCA4OCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4OCwgNDUsIDIxNiwgODcsIDkwLCAxMjgsIDg3LCA4OSwgNzgsIDc4LCAxMjgsIDg3LCA4OSwgNzgsIDIwNiwgODcsIAorICAgIDg2LCA3MywgMTI4LCA4NywgODYsIDY5LCAxMjgsIDg3LCA4NiwgNjUsIDEyOCwgODcsIDg2LCAxMjgsIDg3LCA4NSwgODAsIAorICAgIDEyOCwgODcsIDg1LCA3OSwgODgsIDEyOCwgODcsIDg1LCA3OSwgODAsIDEyOCwgODcsIDg1LCA3OSwgMTI4LCA4NywgODUsIAorICAgIDc4LCA3NCwgMjA3LCA4NywgODUsIDc4LCAxMjgsIDg3LCA4NSwgNzYsIDg1LCAxMjgsIDg3LCA4NSwgNzYsIDIxMywgODcsIAorICAgIDg1LCA3MywgMTI4LCA4NywgODUsIDY5LCAxMjgsIDg3LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA4NywgODUsIDY1LCA2OSwgCisgICAgNzgsIDEyOCwgODcsIDg1LCAxMjgsIDg3LCA4MiwgMjE3LCA4NywgODIsIDc5LCA3OCwgNzEsIDEyOCwgODcsIDgyLCA3MywgCisgICAgODMsIDIxMiwgODcsIDgyLCA3MywgNzgsIDc1LCA3NiwgNjksIDgzLCAxMjgsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCAKKyAgICAyMTEsIDg3LCA4MiwgNzMsIDc4LCA3NSwgNzYsIDY5LCA2OCwgMTI4LCA4NywgODIsIDY5LCA4MywgODQsIDc2LCA2OSwgODIsIAorICAgIDgzLCAxMjgsIDg3LCA4MiwgNjksIDc4LCA2NywgNzIsIDEyOCwgODcsIDgyLCA2OSwgNjUsIDg0LCAyMDAsIDg3LCA4MiwgCisgICAgNjUsIDgwLCA4MCwgNjksIDE5NiwgODcsIDgyLCA2NSwgODAsIDEyOCwgODcsIDc5LCA4OCwgMTI4LCA4NywgNzksIDg3LCAKKyAgICAxMjgsIDg3LCA3OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDg3LCA3OSwgODIsIDgyLCA3MywgNjksIDE5NiwgODcsIAorICAgIDc5LCA4MiwgNzYsIDE5NiwgODcsIDc5LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA4NywgNzksIDgyLCA3NSwgMTI4LCA4NywgCisgICAgNzksIDgyLCAyMDMsIDg3LCA3OSwgODIsIDY4LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgODcsIDc5LCA4MiwgMTk2LCAKKyAgICA4NywgNzksIDgwLCAxMjgsIDg3LCA3OSwgNzksIDc4LCAxMjgsIDg3LCA3OSwgNzksIDc2LCAxMjgsIDg3LCA3OSwgNzksIAorICAgIDY4LCA4MywgNDUsIDY3LCA4MiwgNjksIDE5NywgODcsIDc5LCA3OSwgNjgsIDEyOCwgODcsIDc5LCA3OCwgMTI4LCA4NywgCisgICAgNzksIDIwNiwgODcsIDc5LCA3NywgNjksIDc4LCAyMTEsIDg3LCA3OSwgNzcsIDY5LCAyMDYsIDg3LCA3OSwgNzcsIDY1LCAKKyAgICA3OCwgMjExLCA4NywgNzksIDc3LCA2NSwgNzgsIDEyOCwgODcsIDc5LCA3NywgNjUsIDIwNiwgODcsIDc5LCA3NiwgNzksIAorICAgIDgzLCA3OSwgMTI4LCA4NywgNzksIDc2LCAxOTgsIDg3LCA3OSwgNjksIDEyOCwgODcsIDc5LCA2NSwgMTI4LCA4NywgNzMsIAorICAgIDg0LCA3MiwgNzksIDg1LCAyMTIsIDg3LCA3MywgODQsIDcyLCA3MywgNzgsIDEyOCwgODcsIDczLCA4NCwgNzIsIDczLCAKKyAgICAyMDYsIDg3LCA3MywgODIsIDY5LCAxOTYsIDg3LCA3MywgNzgsIDg0LCA2OSwgODIsIDEyOCwgODcsIDczLCA3OCwgNzUsIAorICAgIDczLCA3OCwgMTk5LCA4NywgNzMsIDc4LCA3NSwgMTI4LCA4NywgNzMsIDc4LCA3NCwgNjUsIDEyOCwgODcsIDczLCA3OCwgCisgICAgNzEsIDgzLCAxMjgsIDg3LCA3MywgNzgsIDY5LCAxMjgsIDg3LCA3MywgNzgsIDE5NywgODcsIDczLCA3OCwgNjgsIDg1LCAKKyAgICAxMjgsIDg3LCA3MywgNzgsIDY4LCA3OSwgODcsIDEyOCwgODcsIDczLCA3OCwgNjgsIDEyOCwgODcsIDczLCA3OCwgMTk2LCAKKyAgICA4NywgNzMsIDc4LCAxMjgsIDg3LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA4NywgNzMsIDcxLCA3OCwgODksIDY1LCA3OCwgCisgICAgMTI4LCA4NywgNzMsIDcxLCA3MSwgNzYsIDIxNywgODcsIDczLCA3MSwgNzEsIDc2LCA2OSwgODMsIDEyOCwgODcsIDczLCAKKyAgICA2OCwgODQsIDcyLCAxMjgsIDg3LCA3MywgNjgsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDg3LCA3MywgNjgsIDY5LCA0NSwgNzIsIAorICAgIDY5LCA2NSwgNjgsIDY5LCAxOTYsIDg3LCA3MywgNjgsIDE5NywgODcsIDczLCA2NSwgNzgsIDcxLCA4NywgNjUsIDY1LCA3NSwgCisgICAgMTI4LCA4NywgNzMsIDY1LCA3OCwgNzEsIDEyOCwgODcsIDcyLCA3OSwgNzYsIDE5NywgODcsIDcyLCA3MywgODQsIDY5LCAKKyAgICA0NSwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDY5LCAxOTYsIDg3LCA3MiwgNzMsIDg0LCA2OSwgMTI4LCA4NywgNzIsIAorICAgIDY5LCA2OSwgNzYsIDY5LCAxOTYsIDg3LCA3MiwgNjksIDY5LCA3NiwgNjcsIDcyLCA2NSwgNzMsIDIxMCwgODcsIDcyLCA2OSwgCisgICAgNjksIDc2LCAxMjgsIDg3LCA3MiwgNjksIDY5LCAyMDQsIDg3LCA3MiwgNjksIDY1LCA4NCwgMTI4LCA4NywgNzIsIDY1LCAKKyAgICA3NiwgNjksIDEyOCwgODcsIDcyLCAxMjgsIDg3LCA3MSwgMTI4LCA4NywgNjksIDg4LCAxMjgsIDg3LCA2OSwgODUsIDg4LCAKKyAgICAxMjgsIDg3LCA2OSwgODMsIDg0LCA2OSwgODIsIDIwNiwgODcsIDY5LCA4MywgODQsIDQ1LCA2NywgODIsIDY5LCAxOTcsIAorICAgIDg3LCA2OSwgODMsIDg0LCAxMjgsIDg3LCA2OSwgODMsIDIxMiwgODcsIDY5LCA4MCwgMTI4LCA4NywgNjksIDc5LCAxMjgsIAorICAgIDg3LCA2OSwgNzgsIDEyOCwgODcsIDY5LCA3NiwgNzYsIDEyOCwgODcsIDY5LCA3MywgNzEsIDcyLCAyMTIsIDg3LCA2OSwgCisgICAgNzMsIDY5LCA4MiwgODMsIDg0LCA4MiwgNjUsIDgzLCAyMTEsIDg3LCA2OSwgNzMsIDEyOCwgODcsIDY5LCA2OSwgNzgsIAogICAgIDEyOCwgODcsIDY5LCA2OCwgNzEsIDY5LCA0NSwgODQsIDY1LCA3MywgNzYsIDY5LCAxOTYsIDg3LCA2OSwgNjgsIDcxLCA2OSwgCiAgICAgMTI4LCA4NywgNjksIDY4LCA2OCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjksIDY2LCAxMjgsIDg3LCA2OSwgNjUsIDgyLCAKICAgICAyMTcsIDg3LCA2OSwgNjUsIDgwLCA3OSwgNzgsIDEyOCwgODcsIDY3LCAxMjgsIDg3LCA2NiwgMTI4LCA4NywgNjUsIDg5LCAKQEAgLTI1NywyNTEgKzI1OCwyNTMgQEAKICAgICAxMjgsIDg3LCA2NSwgODMsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzcsIDEyOCwgODcsIDY1LCA4MywgNzYsIDY1LCAxMjgsIAogICAgIDg3LCA2NSwgODMsIDc2LCAxOTMsIDg3LCA2NSwgODMsIDY1LCA3NiwgNzYsIDY1LCA3NywgMTI4LCA4NywgNjUsIDgzLCA2NSwgCiAgICAgNzYsIDc2LCA2NSwgMjA1LCA4NywgNjUsIDgyLCA3OCwgNzMsIDc4LCAxOTksIDg3LCA2NSwgODIsIDY1LCA3OCwgMTk5LCAKLSAgICA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIAotICAgIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgCi0gICAgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCAKLSAgICA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIAotICAgIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIAotICAgIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgCi0gICAgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIAotICAgIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgCi0gICAgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIAotICAgIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIAotICAgIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCAKLSAgICA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCAKLSAgICA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIAotICAgIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIAotICAgIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgCi0gICAgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAKLSAgICAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCAKLSAgICA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIAotICAgIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIAotICAgIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgCi0gICAgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgCi0gICAgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCAKLSAgICA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIAotICAgIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIAotICAgIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgCi0gICAgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAKLSAgICAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCAKLSAgICA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIAotICAgIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIAotICAgIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgCi0gICAgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCAKLSAgICA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCAKLSAgICA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIAotICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgCi0gICAgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgCi0gICAgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIAotICAgIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCAKLSAgICA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgCi0gICAgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCAKLSAgICA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIAotICAgIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCAKLSAgICA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIAotICAgIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCAKLSAgICA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIAotICAgIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgCi0gICAgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCAKLSAgICA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIAotICAgIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgCi0gICAgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCAKLSAgICA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAKLSAgICAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCAKLSAgICA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIAotICAgIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCAKLSAgICA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIAotICAgIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgCi0gICAgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCAKLSAgICA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIAotICAgIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY3LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgODYsIDc5LCA2NywgNjUsIDIwNCwgODYsIDc5LCAxMjgsIDg2LCA3MywgODksIDc5LCAxMjgsIDg2LCA3MywgCi0gICAgODgsIDEyOCwgODYsIDczLCA4NCwgODIsIDczLCA3OSwgNzYsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgNzMsIDc5LCAKLSAgICA3NiwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDg0LCA2NSwgNjksIDEyOCwgODYsIAotICAgIDczLCA4NCwgMTI4LCA4NiwgNzMsIDgzLCA3MywgNzEsIDc5LCA4NCwgNzIsIDczLCAxOTUsIDg2LCA3MywgODMsIDY1LCA4MiwgCi0gICAgNzEsIDY1LCA4OSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MywgNjUsIDgyLCAKLSAgICA3MSwgMTkzLCA4NiwgNzMsIDgyLCA3MywgNjUsIDc3LCAxMjgsIDg2LCA3MywgODIsIDcxLCA3OSwgMTI4LCA4NiwgNzMsIAotICAgIDgyLCA3MSwgNjUsIDEyOCwgODYsIDczLCA4MiwgNjUsIDc3LCA2NSwgMTI4LCA4NiwgNzMsIDgwLCAxMjgsIDg2LCA3MywgCi0gICAgNzksIDc2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDQ1LCA1MSwgMTI4LCA4NiwgNzMsIDc4LCAKLSAgICA2OSwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCAxMjgsIDg2LCA3MywgNzgsIAotICAgIDY5LCA3MSwgNjUsIDIxMCwgODYsIDczLCA3OCwgNjksIDEyOCwgODYsIDczLCA3OCwgMTk3LCA4NiwgNzMsIDc4LCAxMjgsIAotICAgIDg2LCA3MywgNzYsIDc2LCA2NSwgNzEsIDY5LCAxMjgsIDg2LCA3MywgNzMsIDEyOCwgODYsIDczLCA2OSwgODgsIDEyOCwgCi0gICAgODYsIDczLCA2OSwgODcsIDczLCA3OCwgMTk5LCA4NiwgNzMsIDY5LCA4NywgNjgsIDY1LCA4NCwgMTkzLCA4NiwgNzMsIDY5LCAKLSAgICA4NCwgMTI4LCA4NiwgNzMsIDY5LCAyMTIsIDg2LCA3MywgNjksIDgwLCAxMjgsIDg2LCA3MywgNjksIDEyOCwgODYsIDczLCAKLSAgICA2OCwgNzQsIDQ1LCA1MCwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgNzksIDY3LCA2NSwgODMsIAotICAgIDgzLCA2OSwgODQsIDg0LCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA2OSwgMjA3LCA4NiwgNzMsIDY4LCA2NSwgMTI4LCA4NiwgCi0gICAgNzMsIDY3LCA4NCwgNzksIDgyLCAyMTcsIDg2LCA3MywgNjYsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzAsIDY1LCAKLSAgICAxMjgsIDg2LCA2OSwgODksIDkwLCAxMjgsIDg2LCA2OSwgODgsIDEyOCwgODYsIDY5LCA4NywgMTI4LCA4NiwgNjksIDIxNSwgCi0gICAgODYsIDY5LCA4NSwgODgsIDEyOCwgODYsIDY5LCA4NSwgNzcsIDEyOCwgODYsIDY5LCA4NSwgNjUsIDY5LCA4MCwgNjksIDc4LCAKLSAgICAxMjgsIDg2LCA2OSwgODUsIDY1LCA2OSwgMTI4LCA4NiwgNjksIDgzLCA4NCwgNjUsIDEyOCwgODYsIDY5LCA4MywgODMsIAotICAgIDY5LCAyMDQsIDg2LCA2OSwgODIsIDIxNywgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgODksIDEyOCwgCi0gICAgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MywgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCAKLSAgICA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1NCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCAKLSAgICA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA0OCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCAKLSAgICA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCAKLSAgICA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA1MCwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCAKLSAgICA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MSwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCAKLSAgICA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MiwgCi0gICAgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCAKLSAgICA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgCi0gICAgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAxMjgsIDg2LCA2OSwgCi0gICAgODIsIDgzLCA3MywgNjcsIDc2LCA2OSwgMTI4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA4NiwgNjksIDgyLCA3MSwgNjksIAotICAgIDEyOCwgODYsIDY5LCA4MiwgNjgsIDczLCA3MSwgODIsIDczLCA4MywgMTI4LCA4NiwgNjksIDgyLCAxMjgsIDg2LCA2OSwgCi0gICAgODAsIDEyOCwgODYsIDY5LCA3OCwgNjgsIDEyOCwgODYsIDY5LCA3MywgNzYsIDEyOCwgODYsIDY5LCA3MiwgNzMsIDY3LCAKLSAgICA3NiwgNjksIDEyOCwgODYsIDY5LCA3MiwgMTI4LCA4NiwgNjksIDIwMCwgODYsIDY5LCA2OSwgMTI4LCA4NiwgNjksIDE5NywgCi0gICAgODYsIDY5LCA2OCwgNjksIDEyOCwgODYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDg2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDg2LCA2NSwgODgsIDEyOCwgODYsIDY1LCA4NiwgMTI4LCA4NiwgNjUsIDIxNCwgODYsIDY1LCA4NSwgMTI4LCA4NiwgCi0gICAgNjUsIDg0LCA3MiwgODksIDEyOCwgODYsIDY1LCA4NCwgMTI4LCA4NiwgNjUsIDgzLCA4NCwgNzgsIDY5LCA4MywgMjExLCAKLSAgICA4NiwgNjUsIDgzLCA3MywgODMsIDEyOCwgODYsIDY1LCA4MiwgODksIDIxMSwgODYsIDY1LCA4MiwgNzMsIDc1LCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCA4NCwgMTI4LCA4NiwgNjUsIDgyLCA3MywgNjUsIDc4LCAyMTIsIDg2LCAKLSAgICA2NSwgODIsIDczLCA2NSwgMTI4LCA4NiwgNjUsIDgyLCA3MywgMTkzLCA4NiwgNjUsIDgyLCA2OSwgNzMsIDY1LCAyMDEsIAotICAgIDg2LCA2NSwgODIsIDY5LCA3MywgMTkzLCA4NiwgNjUsIDgwLCA3OSwgODUsIDgyLCA4MywgMTI4LCA4NiwgNjUsIDgwLCAKLSAgICAxMjgsIDg2LCA2NSwgNzgsIDY5LCAxMjgsIDg2LCA2NSwgNzcsIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCA2NSwgCi0gICAgMTI4LCA4NiwgNjUsIDc3LCA2NSwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgMTkzLCA4NiwgNjUsIDc2LCA3NiwgNjksIDg5LCAKLSAgICAxMjgsIDg2LCA2NSwgNzQsIDEyOCwgODYsIDY1LCA3MywgMTI4LCA4NiwgNjUsIDcyLCAxMjgsIDg2LCA2NSwgMjAwLCA4NiwgCi0gICAgNjUsIDY1LCA4NiwgODUsIDEyOCwgODYsIDY1LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA1MiwgNDgsIDEyOCwgODYsIDQ4LCA1MSwgNTcsIDEyOCwgODYsIDQ4LCA1MSwgNTYsIDEyOCwgODYsIDQ4LCA1MSwgNTUsIAotICAgIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDU1LCAxMjgsIDg2LCA0OCwgNTEsIDU0LCAxMjgsIDg2LCA0OCwgNTEsIDUzLCAxMjgsIAotICAgIDg2LCA0OCwgNTEsIDUyLCAxMjgsIDg2LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA1MSwgMTI4LCA4NiwgCi0gICAgNDgsIDUxLCA1MCwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgODYsIDQ4LCA1MSwgNDksIDEyOCwgODYsIDQ4LCAKLSAgICA1MSwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDQ4LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA4NiwgNDgsIAotICAgIDUwLCA1NywgMTI4LCA4NiwgNDgsIDUwLCA1NiwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTYsIDEyOCwgODYsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgODYsIDQ4LCA1MCwgNTQsIDEyOCwgODYsIDQ4LCA1MCwgNTMsIDEyOCwgODYsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDUxLCAxMjgsIDg2LCA0OCwgNTAsIDUwLCAxMjgsIDg2LCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzUsIDEyOCwgODYsIAotICAgIDQ4LCA1MCwgNDgsIDc0LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzIsIDEyOCwgCi0gICAgODYsIDQ4LCA1MCwgNDgsIDcxLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MCwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNjksIAotICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY4LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NywgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCi0gICAgNjYsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCAxMjgsIDg2LCA0OCwgNDksIDU3LCAKLSAgICAxMjgsIDg2LCA0OCwgNDksIDU2LCAxMjgsIDg2LCA0OCwgNDksIDU1LCAxMjgsIDg2LCA0OCwgNDksIDU0LCAxMjgsIDg2LCAKLSAgICA0OCwgNDksIDUzLCAxMjgsIDg2LCA0OCwgNDksIDUyLCAxMjgsIDg2LCA0OCwgNDksIDUxLCAxMjgsIDg2LCA0OCwgNDksIAotICAgIDUwLCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDEyOCwgODYsIDQ4LCA0OSwgCi0gICAgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODYsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODYsIDQ4LCA0OSwgNDgsIDEyOCwgODYsIDQ4LCA0OCwgNTcsIDEyOCwgODYsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1NSwgCi0gICAgMTI4LCA4NiwgNDgsIDQ4LCA1NCwgMTI4LCA4NiwgNDgsIDQ4LCA1MywgMTI4LCA4NiwgNDgsIDQ4LCA1MiwgMTI4LCA4NiwgCi0gICAgNDgsIDQ4LCA1MSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODYsIDQ4LCA0OCwgNTAsIDEyOCwgODYsIDQ4LCAKLSAgICA0OCwgNDksIDczLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzEsIDEyOCwgODYsIAotICAgIDQ4LCA0OCwgNDksIDcwLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjgsIDEyOCwgCi0gICAgODYsIDQ4LCA0OCwgNDksIDY3LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NiwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDEyOCwgODUsIDkwLCA4NSwgMTI4LCA4NSwgOTAsIDUxLCAxMjgsIDg1LCA5MCwgMTc5LCAKLSAgICA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4OSwgMTI4LCA4NSwgODcsIDg1LCAxMjgsIDg1LCA4NSwgODksIAotICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4NSwgODUsIDg1LCAxMjgsIDg1LCA4NSwgODUsIDUxLCAxMjgsIDg1LCA4NSwgCi0gICAgODUsIDUwLCAxMjgsIDg1LCA4NSwgNjksIDEyOCwgODUsIDg0LCA4NSwgNzUsIDczLCAxMjgsIDg1LCA4MywgODMsIDg1LCAKLSAgICA1MSwgMTI4LCA4NSwgODMsIDgzLCA4NSwgMTI4LCA4NSwgODMsIDcyLCA4OCwgMTI4LCA4NSwgODMsIDcyLCA4NSwgNzcsIAotICAgIDg4LCAxMjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIDg1LCA4MywgNzIsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNzIsIDEyOCwgODUsIDgzLCAyMDAsIDg1LCA4MywgNjksIDE5NiwgODUsIDgzLCA2OSwgNDUsIDUwLCAxMjgsIDg1LCA4MywgCi0gICAgNjksIDQ1LCA0OSwgMTI4LCA4NSwgODMsIDY5LCAxMjgsIDg1LCA4MywgMTk3LCA4NSwgODIsIDg1LCAyMTgsIDg1LCA4MiwgCi0gICAgODUsIDgzLCAxMjgsIDg1LCA4MiwgODUsIDY4LCA2NSwgMTI4LCA4NSwgODIsIDg1LCA2OCwgMTkzLCA4NSwgODIsIDg1LCAKLSAgICAxMjgsIDg1LCA4MiwgMjEzLCA4NSwgODIsIDc4LCAxMjgsIDg1LCA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4NSwgODIsIDczLCAKLSAgICA1MSwgMTI4LCA4NSwgODIsIDczLCAxMjgsIDg1LCA4MiwgNjUsIDc4LCA4NSwgODMsIDEyOCwgODUsIDgyLCA2NSwgMTI4LCAKLSAgICA4NSwgODIsIDUyLCAxMjgsIDg1LCA4MiwgNTAsIDEyOCwgODUsIDgyLCAxNzgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIAotICAgIDgzLCAxMjgsIDg1LCA4MCwgODcsIDY1LCA4MiwgNjgsIDEyOCwgODUsIDgwLCA4NywgNjUsIDgyLCAxOTYsIDg1LCA4MCwgCi0gICAgODQsIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIDEyOCwgODUsIDgwLCA4MywgNzMsIDc2LCAKLSAgICA3OSwgMjA2LCA4NSwgODAsIDgzLCA3MywgNjgsIDY5LCA0NSwgNjgsIDc5LCA4NywgMjA2LCA4NSwgODAsIDgyLCA3MywgNzEsIAotICAgIDcyLCAyMTIsIDg1LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4NSwgODAsIDgwLCA2OSwgMjEwLCA4NSwgODAsIDY1LCA2OCwgCi0gICAgNzIsIDc3LCA2NSwgNzgsIDczLCA4OSwgNjUsIDEyOCwgODUsIDgwLCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIAotICAgIDE5OSwgODUsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDc4LCAxMjgsIDg1LCA3OCwgNzcsIDY1LCA4MiwgODIsIDczLCA2OSwgCi0gICAgMTk2LCA4NSwgNzgsIDc1LCA3OCwgNzksIDg3LCA3OCwgMTI4LCA4NSwgNzgsIDc1LCAxMjgsIDg1LCA3OCwgNzMsIDg2LCAKLSAgICA2OSwgODIsIDgzLCA2NSwgMjA0LCA4NSwgNzgsIDczLCA4NCwgODksIDEyOCwgODUsIDc4LCA3MywgODQsIDEyOCwgODUsIAotICAgIDc4LCA3MywgMjEyLCA4NSwgNzgsIDczLCA3OSwgNzgsIDEyOCwgODUsIDc4LCA3MywgNzksIDIwNiwgODUsIDc4LCA3MywgCi0gICAgNzAsIDczLCA2OSwgMTk2LCA4NSwgNzgsIDczLCA2NywgNzksIDgyLCAyMDYsIDg1LCA3OCwgNjgsIDIwNywgODUsIDc4LCAKLSAgICA2OCwgNjksIDgyLCA4NCwgNzMsIDY5LCAxMjgsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNzYsIDczLCA3OCwgMTk3LCA4NSwgNzgsIAotICAgIDY4LCA2OSwgODIsIDY4LCA3OSwgODQsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA2NiwgNjUsIDgyLCAxMjgsIDg1LCA3OCwgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgMjEwLCA4NSwgNzgsIDY3LCA3MywgMTkzLCA4NSwgNzgsIDY3LCAKLSAgICA2OSwgODIsIDg0LCA2NSwgNzMsIDc4LCA4NCwgMjE3LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgCi0gICAgNjgsIDEyOCwgODUsIDc4LCA2NSwgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCAKLSAgICA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCAKLSAgICA2OSwgNzYsIDc2LCA2NSwgMTI4LCA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIAotICAgIDEyOCwgODUsIDc1LCA4NSwgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgCi0gICAgODIsIDY1LCAxMjgsIDg1LCA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCAKLSAgICA3OCwgNzgsIDEyOCwgODUsIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MSwgNjUsIDgyLCA3MywgODQsIDczLCAxOTUsIAorICAgIDg3LCA2NSwgODEsIDcwLCA2NSwgMTI4LCA4NywgNjUsIDgwLCAxMjgsIDg3LCA2NSwgNzgsIDczLCA3OCwgMTk5LCA4NywgCisgICAgNjUsIDc4LCA3MSwgNzUsIDg1LCA3OSwgODEsIDEyOCwgODcsIDY1LCA3OCwgNjgsIDY5LCA4MiwgNjksIDgyLCAxMjgsIDg3LCAKKyAgICA2NSwgNzgsIDEyOCwgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDg3LCA2NSwgNzYsIDc2LCAxMjgsIAorICAgIDg3LCA2NSwgNzYsIDIwNCwgODcsIDY1LCA3NiwgNzUsIDEyOCwgODcsIDY1LCA3NiwgMjAzLCA4NywgNjUsIDczLCA4NCwgCisgICAgNzMsIDc4LCA3MSwgMTI4LCA4NywgNjUsIDczLCA4MywgODQsIDEyOCwgODcsIDY1LCA3MywgMTI4LCA4NywgNjUsIDY5LCAKKyAgICA3OCwgMTI4LCA4NywgNjUsIDY5LCAxMjgsIDg3LCA2NSwgNjgsIDY4LCA2NSwgMTI4LCA4NywgNjUsIDY1LCA4NiwgODUsIAorICAgIDEyOCwgODcsIDQ4LCA1MCwgNTMsIDEyOCwgODcsIDQ4LCA1MCwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNTAsIDUxLCAxMjgsIDg3LCA0OCwgNTAsIDUwLCAxMjgsIDg3LCA0OCwgNTAsIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDg3LCA0OCwgNDksIDU3LCAxMjgsIDg3LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA4NywgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgODcsIDQ4LCA0OSwgNTUsIDEyOCwgODcsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OSwgNTMsIDEyOCwgODcsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDg3LCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDg3LCA0OCwgNDksIDUxLCAxMjgsIDg3LCA0OCwgNDksIDUwLCAxMjgsIDg3LCA0OCwgNDksIDQ5LCAxMjgsIDg3LCA0OCwgCisgICAgNDksIDQ4LCA2NSwgMTI4LCA4NywgNDgsIDQ5LCA0OCwgMTI4LCA4NywgNDgsIDQ4LCA1NywgNjUsIDEyOCwgODcsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgODcsIDQ4LCA0OCwgNTYsIDEyOCwgODcsIDQ4LCA0OCwgNTUsIDEyOCwgODcsIDQ4LCA0OCwgNTQsIAorICAgIDEyOCwgODcsIDQ4LCA0OCwgNTMsIDEyOCwgODcsIDQ4LCA0OCwgNTIsIDEyOCwgODcsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIAorICAgIDg3LCA0OCwgNDgsIDUxLCAxMjgsIDg3LCA0OCwgNDgsIDUwLCAxMjgsIDg3LCA0OCwgNDgsIDQ5LCAxMjgsIDg2LCA5MCwgCisgICAgNzcsIDY5LCA4NCwgMTI4LCA4NiwgODksIDg4LCAxMjgsIDg2LCA4OSwgODQsIDEyOCwgODYsIDg5LCA4MiwgODgsIDEyOCwgCisgICAgODYsIDg5LCA4MiwgMTI4LCA4NiwgODksIDgwLCAxMjgsIDg2LCA4OSwgMTI4LCA4NiwgODcsIDc0LCAxMjgsIDg2LCA4NywgCisgICAgNjUsIDEyOCwgODYsIDg1LCA4OCwgMTI4LCA4NiwgODUsIDg1LCAxMjgsIDg2LCA4NSwgODQsIDEyOCwgODYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgODYsIDg1LCA4MiwgMTI4LCA4NiwgODUsIDgwLCAxMjgsIDg2LCA4NSwgNzYsIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgODUsIDY5LCA4MSwgMTI4LCA4NiwgODQsIDgzLCAxMjgsIDg2LCA4NCwgMTI4LCA4NiwgODMsIDU3LCA1NywgMTI4LCA4NiwgCisgICAgODMsIDU3LCA1NiwgMTI4LCA4NiwgODMsIDU3LCA1NSwgMTI4LCA4NiwgODMsIDU3LCA1NCwgMTI4LCA4NiwgODMsIDU3LCAKKyAgICA1MywgMTI4LCA4NiwgODMsIDU3LCA1MiwgMTI4LCA4NiwgODMsIDU3LCA1MSwgMTI4LCA4NiwgODMsIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDU3LCA0OSwgMTI4LCA4NiwgODMsIDU3LCA0OCwgMTI4LCA4NiwgODMsIDU3LCAxMjgsIDg2LCA4MywgNTYsIAorICAgIDU3LCAxMjgsIDg2LCA4MywgNTYsIDU2LCAxMjgsIDg2LCA4MywgNTYsIDU1LCAxMjgsIDg2LCA4MywgNTYsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNTYsIDUzLCAxMjgsIDg2LCA4MywgNTYsIDUyLCAxMjgsIDg2LCA4MywgNTYsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTYsIDUwLCAxMjgsIDg2LCA4MywgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNTYsIDQ4LCAxMjgsIDg2LCA4MywgNTYsIDEyOCwgCisgICAgODYsIDgzLCA1NSwgNTcsIDEyOCwgODYsIDgzLCA1NSwgNTYsIDEyOCwgODYsIDgzLCA1NSwgNTUsIDEyOCwgODYsIDgzLCAKKyAgICA1NSwgNTQsIDEyOCwgODYsIDgzLCA1NSwgNTMsIDEyOCwgODYsIDgzLCA1NSwgNTIsIDEyOCwgODYsIDgzLCA1NSwgNTEsIAorICAgIDEyOCwgODYsIDgzLCA1NSwgNTAsIDEyOCwgODYsIDgzLCA1NSwgNDksIDEyOCwgODYsIDgzLCA1NSwgNDgsIDEyOCwgODYsIAorICAgIDgzLCA1NSwgMTI4LCA4NiwgODMsIDU0LCA1NywgMTI4LCA4NiwgODMsIDU0LCA1NiwgMTI4LCA4NiwgODMsIDU0LCA1NSwgCisgICAgMTI4LCA4NiwgODMsIDU0LCA1NCwgMTI4LCA4NiwgODMsIDU0LCA1MywgMTI4LCA4NiwgODMsIDU0LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDU0LCA1MSwgMTI4LCA4NiwgODMsIDU0LCA1MCwgMTI4LCA4NiwgODMsIDU0LCA0OSwgMTI4LCA4NiwgODMsIDU0LCAKKyAgICA0OCwgMTI4LCA4NiwgODMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDU3LCAxMjgsIDg2LCA4MywgNTMsIDU2LCAxMjgsIDg2LCAKKyAgICA4MywgNTMsIDU1LCAxMjgsIDg2LCA4MywgNTMsIDU0LCAxMjgsIDg2LCA4MywgNTMsIDUzLCAxMjgsIDg2LCA4MywgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTMsIDUxLCAxMjgsIDg2LCA4MywgNTMsIDUwLCAxMjgsIDg2LCA4MywgNTMsIDQ5LCAxMjgsIAorICAgIDg2LCA4MywgNTMsIDQ4LCAxMjgsIDg2LCA4MywgNTMsIDEyOCwgODYsIDgzLCA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MiwgCisgICAgNTYsIDEyOCwgODYsIDgzLCA1MiwgNTUsIDEyOCwgODYsIDgzLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MiwgNTMsIDEyOCwgCisgICAgODYsIDgzLCA1MiwgNTIsIDEyOCwgODYsIDgzLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MiwgNTAsIDEyOCwgODYsIDgzLCAKKyAgICA1MiwgNDksIDEyOCwgODYsIDgzLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1NywgMTI4LCAKKyAgICA4NiwgODMsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUxLCA1NSwgMTI4LCA4NiwgODMsIDUxLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUxLCA1MywgMTI4LCA4NiwgODMsIDUxLCA1MiwgMTI4LCA4NiwgODMsIDUxLCA1MSwgMTI4LCA4NiwgODMsIDUxLCA1MCwgCisgICAgMTI4LCA4NiwgODMsIDUxLCA0OSwgMTI4LCA4NiwgODMsIDUxLCA0OCwgMTI4LCA4NiwgODMsIDUxLCAxMjgsIDg2LCA4MywgCisgICAgNTAsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUzLCA1NCwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTMsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUzLCA1MSwgMTI4LCA4NiwgODMsIDUwLCA1MywgNTAsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUzLCA0OCwgMTI4LCA4NiwgODMsIDUwLCA1MywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MiwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDU2LCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MiwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUzLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MiwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDUwLCAxMjgsIDg2LCA4MywgNTAsIDUyLCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MiwgNDgsIDEyOCwgODYsIDgzLCA1MCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDUxLCA1NiwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNTEsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MywgMTI4LCA4NiwgODMsIDUwLCA1MSwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNTEsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUxLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA1MSwgNDksIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NywgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA1MCwgNTYsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDU1LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDUwLCA1MCwgNTMsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDUyLCAxMjgsIDg2LCA4MywgNTAsIDUwLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA1MCwgNTAsIDEyOCwgODYsIDgzLCA1MCwgNTAsIDQ5LCAxMjgsIDg2LCA4MywgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDUwLCA1MCwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTcsIDEyOCwgODYsIDgzLCA1MCwgNDksIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNTAsIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTQsIDEyOCwgODYsIDgzLCA1MCwgNDksIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNTAsIDQ5LCA1MiwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNTEsIDEyOCwgODYsIDgzLCA1MCwgNDksIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNTAsIDQ5LCA0OSwgMTI4LCA4NiwgODMsIDUwLCA0OSwgNDgsIDEyOCwgODYsIDgzLCA1MCwgCisgICAgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU3LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDUwLCAKKyAgICA0OCwgNTUsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDU0LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MywgMTI4LCA4NiwgODMsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODYsIDgzLCA1MCwgNDgsIDUxLCAxMjgsIDg2LCA4MywgNTAsIDQ4LCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDUwLCA0OCwgNDksIDEyOCwgODYsIDgzLCA1MCwgNDgsIDQ4LCAxMjgsIDg2LCA4MywgNTAsIDQ4LCAxMjgsIDg2LCAKKyAgICA4MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU3LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1NiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NywgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDU0LCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MywgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NywgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTcsIDUxLCAxMjgsIDg2LCA4MywgNDksIDU3LCA1MCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NywgNDksIDEyOCwgODYsIDgzLCA0OSwgNTcsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU2LCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTYsIDU1LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU2LCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTYsIAorICAgIDUyLCAxMjgsIDg2LCA4MywgNDksIDU2LCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgNTAsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTYsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDU2LCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1NSwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDU2LCAxMjgsIDg2LCA4MywgNDksIDU1LCA1NSwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1NSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUzLCAxMjgsIDg2LCA4MywgNDksIDU1LCA1MiwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1NSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDUwLCAxMjgsIDg2LCA4MywgNDksIDU1LCA0OSwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1NSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDU0LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTQsIDU0LCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDU0LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTQsIAorICAgIDUxLCAxMjgsIDg2LCA4MywgNDksIDU0LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA1NCwgNDksIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTQsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDU0LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NywgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MywgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDU1LCAxMjgsIDg2LCA4MywgNDksIDUzLCA1NCwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MywgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDUyLCAxMjgsIDg2LCA4MywgNDksIDUzLCA1MSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MywgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTMsIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUzLCA0OCwgMTI4LCAKKyAgICA4NiwgODMsIDQ5LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTcsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDU2LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUyLCA1NSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNTIsIDUzLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUyLCA1MiwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNTIsIAorICAgIDUwLCAxMjgsIDg2LCA4MywgNDksIDUyLCA0OSwgMTI4LCA4NiwgODMsIDQ5LCA1MiwgNDgsIDEyOCwgODYsIDgzLCA0OSwgCisgICAgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU3LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1NiwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDU0LCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MywgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA1MSwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNTEsIDUxLCAxMjgsIDg2LCA4MywgNDksIDUxLCA1MCwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA1MSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNTEsIDQ4LCAxMjgsIDg2LCA4MywgNDksIDUxLCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDUwLCA1NywgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTYsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDU1LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDUwLCA1NCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTMsIDEyOCwgODYsIDgzLCA0OSwgNTAsIDUyLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDUwLCA1MSwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgNTAsIDEyOCwgODYsIDgzLCA0OSwgNTAsIAorICAgIDQ5LCAxMjgsIDg2LCA4MywgNDksIDUwLCA0OCwgMTI4LCA4NiwgODMsIDQ5LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OSwgCisgICAgNTcsIDEyOCwgODYsIDgzLCA0OSwgNDksIDU2LCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1NSwgMTI4LCA4NiwgODMsIDQ5LCAKKyAgICA0OSwgNTQsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUzLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA1MiwgMTI4LCA4NiwgODMsIAorICAgIDQ5LCA0OSwgNTEsIDEyOCwgODYsIDgzLCA0OSwgNDksIDUwLCAxMjgsIDg2LCA4MywgNDksIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgODMsIDQ5LCA0OSwgNDgsIDEyOCwgODYsIDgzLCA0OSwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU3LCAxMjgsIDg2LCAKKyAgICA4MywgNDksIDQ4LCA1NiwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTUsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDg2LCA4MywgNDksIDQ4LCA1MywgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNTIsIDEyOCwgODYsIDgzLCA0OSwgNDgsIDUxLCAKKyAgICAxMjgsIDg2LCA4MywgNDksIDQ4LCA1MCwgMTI4LCA4NiwgODMsIDQ5LCA0OCwgNDksIDEyOCwgODYsIDgzLCA0OSwgNDgsIAorICAgIDQ4LCAxMjgsIDg2LCA4MywgNDksIDQ4LCAxMjgsIDg2LCA4MywgNDksIDEyOCwgODYsIDgzLCAxMjgsIDg2LCA4MiwgNjUsIAorICAgIDY3LCA3MiwgODksIDEyOCwgODYsIDc5LCA4OCwgMTI4LCA4NiwgNzksIDg3LCA2OSwgNzYsIDQ1LCA2NywgNjUsIDgyLCA4MiwgCisgICAgNzMsIDY5LCAyMTAsIDg2LCA3OSwgODcsIDEyOCwgODYsIDc5LCA4NSwgMTI4LCA4NiwgNzksIDg0LCAxMjgsIDg2LCA3OSwgCisgICAgMjExLCA4NiwgNzksIDgwLCAxMjgsIDg2LCA3OSwgNzksIDczLCAxMjgsIDg2LCA3OSwgNzksIDEyOCwgODYsIDc5LCA3NywgCisgICAgMTI4LCA4NiwgNzksIDc2LCA4NSwgNzcsIDE5NywgODYsIDc5LCA3NiwgODQsIDY1LCA3MSwgMTk3LCA4NiwgNzksIDc2LCAKKyAgICA3NiwgNjksIDg5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA4NiwgNzksIDc2LCA2NywgNjUsIDc4LCA3OSwgMTI4LCA4NiwgNzksIAorICAgIDc2LCA2NSwgODAsIDg1LCAyMDMsIDg2LCA3OSwgNzMsIDE5NiwgODYsIDc5LCA3MywgNjcsIDczLCA3OCwgNzEsIDEyOCwgCisgICAgODYsIDc5LCA3MywgNjcsIDY5LCA3NiwgNjksIDgzLCAyMTEsIDg2LCA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4NiwgNzksIDY4LCAKKyAgICAxMjgsIDg2LCA3OSwgNjcsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgMjA2LCA4NiwgNzksIDY3LCA2NSwgCisgICAgMjA0LCA4NiwgNzksIDEyOCwgODYsIDczLCA4OSwgNzksIDEyOCwgODYsIDczLCA4OCwgMTI4LCA4NiwgNzMsIDg0LCA4MiwgCisgICAgNzMsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDgyLCA3MywgNzksIDc2LCAxMjgsIDg2LCA3MywgODQsIDY1LCAKKyAgICA2OSwgNDUsIDUwLCAxMjgsIDg2LCA3MywgODQsIDY1LCA2OSwgMTI4LCA4NiwgNzMsIDg0LCAxMjgsIDg2LCA3MywgODMsIAorICAgIDczLCA3MSwgNzksIDg0LCA3MiwgNzMsIDE5NSwgODYsIDczLCA4MywgNjUsIDgyLCA3MSwgNjUsIDg5LCA2NSwgMTI4LCA4NiwgCisgICAgNzMsIDgzLCA2NSwgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIDgzLCA2NSwgODIsIDcxLCAxOTMsIDg2LCA3MywgODIsIDczLCAKKyAgICA2NSwgNzcsIDEyOCwgODYsIDczLCA4MiwgNzEsIDc5LCAxMjgsIDg2LCA3MywgODIsIDcxLCA2NSwgMTI4LCA4NiwgNzMsIAorICAgIDgyLCA2NSwgNzcsIDY1LCAxMjgsIDg2LCA3MywgODAsIDEyOCwgODYsIDczLCA3OSwgNzYsIDczLCA3OCwgMTI4LCA4NiwgCisgICAgNzMsIDc4LCA2OSwgNzEsIDY1LCA4MiwgNDUsIDUxLCAxMjgsIDg2LCA3MywgNzgsIDY5LCA3MSwgNjUsIDgyLCA0NSwgNTAsIAorICAgIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgODIsIDEyOCwgODYsIDczLCA3OCwgNjksIDcxLCA2NSwgMjEwLCA4NiwgCisgICAgNzMsIDc4LCA2OSwgMTI4LCA4NiwgNzMsIDc4LCAxOTcsIDg2LCA3MywgNzgsIDEyOCwgODYsIDczLCA3NiwgNzYsIDY1LCAKKyAgICA3MSwgNjksIDEyOCwgODYsIDczLCA3MywgMTI4LCA4NiwgNzMsIDY5LCA4OCwgMTI4LCA4NiwgNzMsIDY5LCA4NywgNzMsIAorICAgIDc4LCAxOTksIDg2LCA3MywgNjksIDg3LCA2OCwgNjUsIDg0LCAxOTMsIDg2LCA3MywgNjksIDg0LCAxMjgsIDg2LCA3MywgCisgICAgNjksIDIxMiwgODYsIDczLCA2OSwgODAsIDEyOCwgODYsIDczLCA2OSwgMTI4LCA4NiwgNzMsIDY4LCA3NCwgNDUsIDUwLCAKKyAgICAxMjgsIDg2LCA3MywgNjgsIDc0LCAxMjgsIDg2LCA3MywgNjgsIDY5LCA3OSwgNjcsIDY1LCA4MywgODMsIDY5LCA4NCwgODQsIAorICAgIDY5LCAxMjgsIDg2LCA3MywgNjgsIDY5LCAyMDcsIDg2LCA3MywgNjgsIDY1LCAxMjgsIDg2LCA3MywgNjcsIDg0LCA3OSwgCisgICAgODIsIDIxNywgODYsIDczLCA2NiwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg2LCA3MCwgNjUsIDEyOCwgODYsIDY5LCAKKyAgICA4OSwgOTAsIDEyOCwgODYsIDY5LCA4OCwgMTI4LCA4NiwgNjksIDg3LCAxMjgsIDg2LCA2OSwgMjE1LCA4NiwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA4NiwgNjksIDg1LCA3NywgMTI4LCA4NiwgNjksIDg1LCA2NSwgNjksIDgwLCA2OSwgNzgsIDEyOCwgODYsIAorICAgIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDg2LCA2OSwgODMsIDg0LCA2NSwgMTI4LCA4NiwgNjksIDgzLCA4MywgNjksIDIwNCwgCisgICAgODYsIDY5LCA4MiwgMjE3LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCA4OSwgMTI4LCA4NiwgNjksIDgyLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDU0LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDU0LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1NCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUzLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUzLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MywgCisgICAgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUyLCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MiwgCisgICAgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUyLCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUxLCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgCisgICAgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUxLCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MSwgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDUwLCA0NSwgNDgsIDUzLCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgCisgICAgNDUsIDQ4LCA1MiwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDUwLCA0NSwgNDgsIDUwLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA1MCwgNDUsIDQ4LCA0OSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDU0LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgCisgICAgNDUsIDQ4LCA1MywgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ5LCA0NSwgNDgsIDUxLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OSwgNDUsIDQ4LCA1MCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ5LCA0NSwgNDgsIDQ4LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA1NCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCA0NSwgNDgsIDQ4LCA0NSwgNDgsIDUyLCAxMjgsIDg2LCA2OSwgCisgICAgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgNDUsIDQ4LCA1MSwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIAorICAgIDY3LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgODYsIDY5LCA4MiwgODQsIDczLCA2NywgNjUsIDc2LCAKKyAgICA0NSwgNDgsIDQ4LCA0NSwgNDgsIDQ5LCAxMjgsIDg2LCA2OSwgODIsIDg0LCA3MywgNjcsIDY1LCA3NiwgNDUsIDQ4LCA0OCwgCisgICAgNDUsIDQ4LCA0OCwgMTI4LCA4NiwgNjksIDgyLCA4NCwgNzMsIDY3LCA2NSwgNzYsIDEyOCwgODYsIDY5LCA4MiwgODMsIDczLCAKKyAgICA2NywgNzYsIDY5LCAxMjgsIDg2LCA2OSwgODIsIDgzLCAxOTcsIDg2LCA2OSwgODIsIDcxLCA2OSwgMTI4LCA4NiwgNjksIAorICAgIDgyLCA2OCwgNzMsIDcxLCA4MiwgNzMsIDgzLCAxMjgsIDg2LCA2OSwgODIsIDEyOCwgODYsIDY5LCA4MCwgMTI4LCA4NiwgCisgICAgNjksIDc4LCA2OCwgMTI4LCA4NiwgNjksIDczLCA3NiwgMTI4LCA4NiwgNjksIDcyLCA3MywgNjcsIDc2LCA2OSwgMTI4LCAKKyAgICA4NiwgNjksIDcyLCAxMjgsIDg2LCA2OSwgMjAwLCA4NiwgNjksIDY5LCAxMjgsIDg2LCA2OSwgMTk3LCA4NiwgNjksIDY4LCAKKyAgICA2OSwgMTI4LCA4NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODYsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODYsIAorICAgIDY1LCA4OCwgMTI4LCA4NiwgNjUsIDg2LCAxMjgsIDg2LCA2NSwgMjE0LCA4NiwgNjUsIDg1LCAxMjgsIDg2LCA2NSwgODQsIAorICAgIDcyLCA4OSwgMTI4LCA4NiwgNjUsIDg0LCAxMjgsIDg2LCA2NSwgODMsIDg0LCA3OCwgNjksIDgzLCAyMTEsIDg2LCA2NSwgCisgICAgODMsIDczLCA4MywgMTI4LCA4NiwgNjUsIDgyLCA4OSwgMjExLCA4NiwgNjUsIDgyLCA3MywgNzUsIDY1LCAxMjgsIDg2LCAKKyAgICA2NSwgODIsIDczLCA2NSwgNzgsIDg0LCAxMjgsIDg2LCA2NSwgODIsIDczLCA2NSwgNzgsIDIxMiwgODYsIDY1LCA4MiwgNzMsIAorICAgIDY1LCAxMjgsIDg2LCA2NSwgODIsIDczLCAxOTMsIDg2LCA2NSwgODIsIDY5LCA3MywgNjUsIDIwMSwgODYsIDY1LCA4MiwgCisgICAgNjksIDczLCAxOTMsIDg2LCA2NSwgODAsIDc5LCA4NSwgODIsIDgzLCAxMjgsIDg2LCA2NSwgODAsIDEyOCwgODYsIDY1LCAKKyAgICA3OCwgNjksIDEyOCwgODYsIDY1LCA3NywgNjUsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDg2LCA2NSwgNzcsIAorICAgIDY1LCA3MSwgNzksIDc3LCA4NSwgNzUsIDcyLCAxOTMsIDg2LCA2NSwgNzYsIDc2LCA2OSwgODksIDEyOCwgODYsIDY1LCA3NCwgCisgICAgMTI4LCA4NiwgNjUsIDczLCAxMjgsIDg2LCA2NSwgNzIsIDEyOCwgODYsIDY1LCAyMDAsIDg2LCA2NSwgNjUsIDg2LCA4NSwgCisgICAgMTI4LCA4NiwgNjUsIDY1LCAxMjgsIDg2LCA0OCwgNTIsIDQ4LCA2NSwgMTI4LCA4NiwgNDgsIDUyLCA0OCwgMTI4LCA4NiwgCisgICAgNDgsIDUxLCA1NywgMTI4LCA4NiwgNDgsIDUxLCA1NiwgMTI4LCA4NiwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgODYsIDQ4LCAKKyAgICA1MSwgNTUsIDEyOCwgODYsIDQ4LCA1MSwgNTQsIDEyOCwgODYsIDQ4LCA1MSwgNTMsIDEyOCwgODYsIDQ4LCA1MSwgNTIsIAorICAgIDEyOCwgODYsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg2LCA0OCwgNTEsIDUxLCAxMjgsIDg2LCA0OCwgNTEsIDUwLCAxMjgsIAorICAgIDg2LCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDUxLCA0OSwgMTI4LCA4NiwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgCisgICAgODYsIDQ4LCA1MSwgNDgsIDEyOCwgODYsIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDg2LCA0OCwgNTAsIDU3LCAxMjgsIDg2LCAKKyAgICA0OCwgNTAsIDU2LCA2NSwgMTI4LCA4NiwgNDgsIDUwLCA1NiwgMTI4LCA4NiwgNDgsIDUwLCA1NSwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA1NCwgMTI4LCA4NiwgNDgsIDUwLCA1MywgMTI4LCA4NiwgNDgsIDUwLCA1MiwgMTI4LCA4NiwgNDgsIDUwLCA1MSwgCisgICAgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNTEsIDEyOCwgODYsIDQ4LCA1MCwgNTAsIDEyOCwgODYsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgODYsIDQ4LCA1MCwgNDgsIDc2LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3NSwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgNzQsIAorICAgIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDczLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA3MiwgMTI4LCA4NiwgNDgsIDUwLCA0OCwgCisgICAgNzEsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDcwLCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2OSwgMTI4LCA4NiwgNDgsIDUwLCAKKyAgICA0OCwgNjgsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDY3LCAxMjgsIDg2LCA0OCwgNTAsIDQ4LCA2NiwgMTI4LCA4NiwgNDgsIAorICAgIDUwLCA0OCwgNjUsIDEyOCwgODYsIDQ4LCA1MCwgNDgsIDEyOCwgODYsIDQ4LCA0OSwgNTcsIDEyOCwgODYsIDQ4LCA0OSwgCisgICAgNTYsIDEyOCwgODYsIDQ4LCA0OSwgNTUsIDEyOCwgODYsIDQ4LCA0OSwgNTQsIDEyOCwgODYsIDQ4LCA0OSwgNTMsIDEyOCwgCisgICAgODYsIDQ4LCA0OSwgNTIsIDEyOCwgODYsIDQ4LCA0OSwgNTEsIDEyOCwgODYsIDQ4LCA0OSwgNTAsIDY2LCAxMjgsIDg2LCAKKyAgICA0OCwgNDksIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA1MCwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgNjcsIDEyOCwgODYsIAorICAgIDQ4LCA0OSwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ5LCA0OSwgMTI4LCA4NiwgCisgICAgNDgsIDQ5LCA0OCwgMTI4LCA4NiwgNDgsIDQ4LCA1NywgMTI4LCA4NiwgNDgsIDQ4LCA1NiwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA1NSwgNjYsIDEyOCwgODYsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg2LCA0OCwgNDgsIDU1LCAxMjgsIDg2LCA0OCwgNDgsIAorICAgIDU0LCAxMjgsIDg2LCA0OCwgNDgsIDUzLCAxMjgsIDg2LCA0OCwgNDgsIDUyLCAxMjgsIDg2LCA0OCwgNDgsIDUxLCAxMjgsIAorICAgIDg2LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCA1MCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzMsIDEyOCwgCisgICAgODYsIDQ4LCA0OCwgNDksIDcyLCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA3MSwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgNzAsIAorICAgIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY5LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2OCwgMTI4LCA4NiwgNDgsIDQ4LCA0OSwgCisgICAgNjcsIDEyOCwgODYsIDQ4LCA0OCwgNDksIDY2LCAxMjgsIDg2LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA4NiwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA4NSwgOTAsIDg1LCAxMjgsIDg1LCA5MCwgNTEsIDEyOCwgODUsIDkwLCAxNzksIDg1LCA4OSwgNjUsIDc4LCAKKyAgICA3OCwgNjUsIDEyOCwgODUsIDg5LCAxMjgsIDg1LCA4NywgODUsIDEyOCwgODUsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgODUsIDg1LCA4NSwgODUsIDEyOCwgODUsIDg1LCA4NSwgNTEsIDEyOCwgODUsIDg1LCA4NSwgNTAsIDEyOCwgODUsIAorICAgIDg1LCA2OSwgMTI4LCA4NSwgODQsIDg1LCA3NSwgNzMsIDEyOCwgODUsIDgzLCA4MywgODUsIDUxLCAxMjgsIDg1LCA4MywgCisgICAgODMsIDg1LCAxMjgsIDg1LCA4MywgNzIsIDg4LCAxMjgsIDg1LCA4MywgNzIsIDg1LCA3NywgODgsIDEyOCwgODUsIDgzLCAKKyAgICA3MiwgNjksIDc4LCA3OCwgNjUsIDEyOCwgODUsIDgzLCA3MiwgNTAsIDEyOCwgODUsIDgzLCA3MiwgMTI4LCA4NSwgODMsIAorICAgIDIwMCwgODUsIDgzLCA2OSwgMTk2LCA4NSwgODMsIDY5LCA0NSwgNTAsIDEyOCwgODUsIDgzLCA2OSwgNDUsIDQ5LCAxMjgsIAorICAgIDg1LCA4MywgNjksIDEyOCwgODUsIDgzLCAxOTcsIDg1LCA4MiwgODUsIDIxOCwgODUsIDgyLCA4NSwgODMsIDEyOCwgODUsIAorICAgIDgyLCA4NSwgNjgsIDY1LCAxMjgsIDg1LCA4MiwgODUsIDY4LCAxOTMsIDg1LCA4MiwgODUsIDEyOCwgODUsIDgyLCAyMTMsIAorICAgIDg1LCA4MiwgNzgsIDEyOCwgODUsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg1LCA4MiwgNzMsIDUxLCAxMjgsIDg1LCA4MiwgCisgICAgNzMsIDEyOCwgODUsIDgyLCA2NSwgNzgsIDg1LCA4MywgMTI4LCA4NSwgODIsIDY1LCAxMjgsIDg1LCA4MiwgNTIsIDEyOCwgCisgICAgODUsIDgyLCA1MCwgMTI4LCA4NSwgODIsIDE3OCwgODUsIDgwLCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgODUsIDgwLCAKKyAgICA4NywgNjUsIDgyLCA2OCwgMTI4LCA4NSwgODAsIDg3LCA2NSwgODIsIDE5NiwgODUsIDgwLCA4NCwgODUsIDgyLCA3OCwgCisgICAgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCA3OCwgMTI4LCA4NSwgODAsIDgzLCA3MywgNzYsIDc5LCAyMDYsIDg1LCAKKyAgICA4MCwgODMsIDczLCA2OCwgNjksIDQ1LCA2OCwgNzksIDg3LCAyMDYsIDg1LCA4MCwgODIsIDczLCA3MSwgNzIsIDIxMiwgODUsIAorICAgIDgwLCA4MCwgNjksIDgyLCAxMjgsIDg1LCA4MCwgODAsIDY5LCAyMTAsIDg1LCA4MCwgNjUsIDY4LCA3MiwgNzcsIDY1LCA3OCwgCisgICAgNzMsIDg5LCA2NSwgMTI4LCA4NSwgODAsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA4NSwgNzksIDc4LCAKKyAgICAxMjgsIDg1LCA3OCwgNzgsIDEyOCwgODUsIDc4LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzUsIAorICAgIDc4LCA3OSwgODcsIDc4LCAxMjgsIDg1LCA3OCwgNzUsIDEyOCwgODUsIDc4LCA3MywgODYsIDY5LCA4MiwgODMsIDY1LCAKKyAgICAyMDQsIDg1LCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4NSwgNzgsIDczLCAyMTIsIDg1LCAKKyAgICA3OCwgNzMsIDc5LCA3OCwgMTI4LCA4NSwgNzgsIDczLCA3OSwgMjA2LCA4NSwgNzgsIDczLCA3MCwgNzksIDgyLCA3NywgCisgICAgMTI4LCA4NSwgNzgsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDg1LCA3OCwgNzMsIDY3LCA3OSwgODIsIDIwNiwgODUsIDc4LCAKKyAgICA2OCwgMjA3LCA4NSwgNzgsIDY4LCA2OSwgODIsIDg0LCA3MywgNjksIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCA3NiwgNzMsIAorICAgIDc4LCAxOTcsIDg1LCA3OCwgNjgsIDY5LCA4MiwgNjgsIDc5LCA4NCwgMTI4LCA4NSwgNzgsIDY4LCA2OSwgODIsIDY2LCA2NSwgCisgICAgODIsIDEyOCwgODUsIDc4LCA2OCwgNjksIDgyLCAxMjgsIDg1LCA3OCwgNjgsIDY5LCAyMTAsIDg1LCA3OCwgNjcsIDczLCAKKyAgICAxOTMsIDg1LCA3OCwgNjcsIDY5LCA4MiwgODQsIDY1LCA3MywgNzgsIDg0LCAyMTcsIDg1LCA3OCwgNjYsIDc2LCA2OSwgNzgsIAorICAgIDY4LCA2OSwgMTk2LCA4NSwgNzgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA2OSwgNjgsIDEyOCwgODUsIDc4LCA2NSwgCisgICAgODAsIDEyOCwgODUsIDc4LCA2NSwgNzcsIDg1LCA4MywgNjksIDE5NiwgODUsIDc4LCA2NSwgMTI4LCA4NSwgMjA2LCA4NSwgCisgICAgNzcsIDg1LCA3NywgMTI4LCA4NSwgNzcsIDg1LCAyMDUsIDg1LCA3NywgNjYsIDgyLCA2OSwgNzYsIDc2LCA2NSwgMTI4LCAKKyAgICA4NSwgNzcsIDY2LCA4MiwgNjksIDc2LCA3NiwgMTkzLCA4NSwgNzcsIDY2LCA3MywgNzgsIDEyOCwgODUsIDc1LCA4NSwgCisgICAgMTI4LCA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgODUsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDg1LCAKKyAgICA3NSwgNjUsIDgyLCAxOTMsIDg1LCA3NSwgMTI4LCA4NSwgNzMsIDc2LCA3NiwgNjksIDY1LCA3OCwgNzgsIDEyOCwgODUsIAorICAgIDczLCA3MSwgNzIsIDg1LCAyMTAsIDg1LCA3MiwgNjgsIDEyOCwgODUsIDcxLCA2NSwgODIsIDczLCA4NCwgNzMsIDE5NSwgCiAgICAgODUsIDY5LCA4OSwgMTI4LCA4NSwgNjksIDczLCAxMjgsIDg1LCA2OSwgNjksIDEyOCwgODUsIDY5LCA2NSwgMTI4LCA4NSwgCiAgICAgNjgsIDg1LCA3MSwgMTI4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgMTkzLCAKICAgICA4NSwgNjgsIDY1LCA2NSwgODQsIDEyOCwgODUsIDY4LCAxMjgsIDg1LCAxOTYsIDg1LCA2NywgMTI4LCA4NSwgNjYsIDg1LCAKQEAgLTUzOCw2OCArNTQxLDcxIEBACiAgICAgODcsIDc5LCA0NSwgNjksIDIwNSwgODQsIDg3LCA3OSwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA4NCwgODcsIDczLCAKICAgICA4MywgODQsIDczLCA3OCwgNzEsIDEyOCwgODQsIDg3LCA3MywgODMsIDg0LCA2OSwgMTk2LCA4NCwgODcsIDczLCA3MywgCiAgICAgMTI4LCA4NCwgODcsIDczLCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDc5LCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgNzIsIDgyLCA2OSwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgCi0gICAgNDUsIDgzLCA3MywgODgsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDgzLCA2OSwgODYsIDY5LCA3OCwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgNzksIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNzgsIDczLCA3OCwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3OSwgODUsIDgyLCAxMjgsIDg0LCAKLSAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3MCwgNzMsIDg2LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgCi0gICAgNjksIDczLCA3MSwgNzIsIDg0LCAyMDAsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIAotICAgIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDIxNywgODQsIDg3LCA2OSwgCi0gICAgNzYsIDg2LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCA2OSwgMTI4LCAKLSAgICA4NCwgODcsIDY5LCA3NiwgODYsIDE5NywgODQsIDg3LCA2OSwgNzYsIDcwLCA4NCwgNzIsIDgzLCAxMjgsIDg0LCA4NywgNjksIAotICAgIDc2LCA3MCwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDEyOCwgODQsIDg3LCA2NSwgNjUsIDEyOCwgODQsIDg3LCA2NSwgCi0gICAgMTI4LCA4NCwgODYsIDgyLCA3MywgNjgsIDc5LCAxMjgsIDg0LCA4NiwgNzMsIDc3LCA2NSwgNjgsIDg1LCAyMTAsIDg0LCAKLSAgICA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCA4NCwgODQsIAotICAgIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgMTI4LCA4NCwgCi0gICAgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAxMjgsIDg0LCAKLSAgICA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDg0LCA4NSwgODIsIAotICAgIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgODQsIDg1LCA4MiwgCi0gICAgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCA3OCwgMTI4LCAKLSAgICA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCA3OSwgODQsIAotICAgIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIDEyOCwgODQsIAotICAgIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjUsIDY5LCAxMjgsIDg0LCA4NSwgNzcsIDEyOCwgCi0gICAgODQsIDg1LCAyMDUsIDg0LCA4NSwgNzYsIDczLCA4MCwgMTI4LCA4NCwgODUsIDc1LCA4NywgNjksIDc4LCA4NCwgNzMsIDgzLCAKLSAgICAxMjgsIDg0LCA4NSwgNzUsIDEyOCwgODQsIDg1LCA3MSwgODIsIDczLCAyMDMsIDg0LCA4NSwgNzEsIDUwLCAxMjgsIDg0LCAKLSAgICA4NSwgNzEsIDE3OCwgODQsIDg1LCA2NiwgMTI4LCA4NCwgODUsIDY1LCA4MiwgNjksIDE5OSwgODQsIDg1LCA2NSwgNjksIAotICAgIDgwLCAxMjgsIDg0LCA4NSwgNjUsIDY5LCAxMjgsIDg0LCAyMTMsIDg0LCA4NCwgODUsIDg1LCAxMjgsIDg0LCA4NCwgODUsIAotICAgIDY4LCA2OCwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDY4LCA2OCwgNjUsIDY1LCA3MSwgMTI4LCA4NCwgODQsIDg1LCAKLSAgICAxMjgsIDg0LCA4NCwgODQsIDcyLCA2NSwgMTI4LCA4NCwgODQsIDg0LCA2NSwgMTI4LCA4NCwgODQsIDgzLCA4NSwgMTI4LCAKLSAgICA4NCwgODQsIDgzLCA3OSwgMTI4LCA4NCwgODQsIDgzLCA3MywgMTI4LCA4NCwgODQsIDgzLCA2OSwgNjksIDEyOCwgODQsIAotICAgIDg0LCA4MywgNjksIDEyOCwgODQsIDg0LCA4MywgNjUsIDEyOCwgODQsIDg0LCA3OSwgNzksIDEyOCwgODQsIDg0LCA3MywgCi0gICAgNzMsIDEyOCwgODQsIDg0LCA3MywgMTI4LCA4NCwgODQsIDcyLCA4NywgNjksIDEyOCwgODQsIDg0LCA3MiwgODUsIDEyOCwgCi0gICAgODQsIDg0LCA3MiwgNzksIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDc5LCAxMjgsIDg0LCA4NCwgNzIsIDczLCAxMjgsIDg0LCAKLSAgICA4NCwgNzIsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2OSwgMTI4LCA4NCwgODQsIDcyLCA2NSwgNjUsIDEyOCwgODQsIAotICAgIDg0LCA3MiwgMTI4LCA4NCwgODQsIDY5LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCA2OSwgMjAwLCA4NCwgCi0gICAgODQsIDY5LCA3MiwgMTI4LCA4NCwgODQsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDY5LCAxMjgsIDg0LCA4NCwgNjUsIDg5LCAKLSAgICA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4NCwgODQsIDY1LCA4NSwgMTI4LCA4NCwgODQsIDY1LCA3MywgMTI4LCA4NCwgODQsIAotICAgIDY1LCA2NSwgMTI4LCA4NCwgODQsIDUwLCAxMjgsIDg0LCA4MywgODcsIDY5LCAxMjgsIDg0LCA4MywgODcsIDY2LCAxMjgsIAotICAgIDg0LCA4MywgODcsIDY1LCAxMjgsIDg0LCA4MywgODYsIDEyOCwgODQsIDgzLCA4MywgNjksIDEyOCwgODQsIDgzLCA4MywgCi0gICAgNjUsIDEyOCwgODQsIDgzLCA3OSwgMjE0LCA4NCwgODMsIDczLCA4NSwgMTI4LCA4NCwgODMsIDcyLCA4NSwgNzEsIDgzLCAKLSAgICAxMjgsIDg0LCA4MywgNzIsIDc5LCA3OSwgNzUsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCAyMDMsIDg0LCA4MywgNzIsIAotICAgIDc5LCA3OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDgzLCAxMjgsIDg0LCA4MywgNzIsIDY5LCA3MSwgMTI4LCA4NCwgCi0gICAgODMsIDcyLCA2OSwgMTk5LCA4NCwgODMsIDcyLCA2OSwgNjksIDc0LCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxMjgsIDg0LCAKLSAgICA4MywgNzIsIDY1LCAxOTQsIDg0LCA4MywgNzIsIDY1LCAxMjgsIDg0LCA4MywgNjksIDgyLCA2OSwgMTI4LCA4NCwgODMsIAotICAgIDY5LCA2OSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDczLCAxMjgsIDg0LCA4MywgNjUsIDY4LCAyMDEsIDg0LCA4MywgCi0gICAgNjUsIDY2LCAxMjgsIDg0LCA4MywgNjUsIDY1LCA2OCwgNzMsIDg5LCAxMjgsIDg0LCA4MywgNjUsIDY1LCAxMjgsIDg0LCAKLSAgICA4MywgMTkzLCA4NCwgODIsIDg5LCA2NiwgNzYsIDczLCA3OSwgMjA2LCA4NCwgODIsIDg1LCA4NCwgNzIsIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzgsIDc1LCAxMjgsIDg0LCA4MiwgODUsIDc4LCA2NywgNjUsIDg0LCA2OSwgMTk2LCA4NCwgODIsIDg1LCA3NywgCi0gICAgODAsIDY5LCA4NCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCAKLSAgICA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1NCwgCi0gICAgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MiwgMTI4LCAKLSAgICA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDksIDEyOCwgODQsIAotICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NywgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTYsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgNTMsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUyLCAxMjgsIDg0LCA4MiwgCi0gICAgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTAsIDEyOCwgODQsIDgyLCAKLSAgICA4NSwgNzcsIDgwLCA0NSwgNDksIDQ5LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA0OCwgMTI4LCA4NCwgODIsIAotICAgIDg1LCA3NywgODAsIDQ1LCA0OSwgMTI4LCA4NCwgODIsIDg1LCA2OSwgMTI4LCA4NCwgODIsIDg1LCA2NywgNzUsIDEyOCwgCi0gICAgODQsIDgyLCA3OSwgODAsIDczLCA2NywgNjUsIDIwNCwgODQsIDgyLCA3OSwgODAsIDcyLCA4OSwgMTI4LCA4NCwgODIsIDc5LCAKLSAgICA3NywgNzMsIDc1LCA3OSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgNjUsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgCi0gICAgNzksIDgwLCA4MywgNzMsIDcwLCA3MywgODMsIDg0LCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCAKLSAgICA3OSwgNzgsIDEyOCwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIDIwNiwgODQsIDgyLCA3OSwgNzcsIDczLCA3NSwgNzksIAotICAgIDc2LCA4OSwgNzEsIDczLCA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc2LCA3NiwgNjksIDg5LCA2NiwgODUsIDgzLCAKKyAgICA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA4NCwgODcsIDIwNywgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2OSwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCA0NSwgODMsIDczLCA4OCwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgODMsIDY5LCA4NiwgNjksIDc4LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OSwgCisgICAgNzgsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA3OCwgNzMsIDc4LCA2OSwgMTI4LCA4NCwgODcsIDY5LCAKKyAgICA3OCwgODQsIDg5LCA0NSwgNzAsIDc5LCA4NSwgODIsIDEyOCwgODQsIDg3LCA2OSwgNzgsIDg0LCA4OSwgNDUsIDcwLCA3MywgCisgICAgODYsIDY5LCAxMjgsIDg0LCA4NywgNjksIDc4LCA4NCwgODksIDQ1LCA2OSwgNzMsIDcxLCA3MiwgODQsIDIwMCwgODQsIDg3LCAKKyAgICA2OSwgNzgsIDg0LCA4OSwgNDUsIDY5LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4NCwgODcsIDY5LCA3OCwgODQsIDg5LCAxMjgsIAorICAgIDg0LCA4NywgNjksIDc4LCA4NCwgMjE3LCA4NCwgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCA4MywgMTI4LCA4NCwgCisgICAgODcsIDY5LCA3OCwgODQsIDczLCA2OSwgODQsIDcyLCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDQ1LCA4NCwgNzIsIAorICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA4NywgNjksIDc2LCA4NiwgNjksIDEyOCwgODQsIDg3LCA2OSwgNzYsIDg2LCAKKyAgICAxOTcsIDg0LCA4NywgNjksIDc2LCA3MCwgODQsIDcyLCA4MywgMTI4LCA4NCwgODcsIDY5LCA3NiwgNzAsIDg0LCA3MiwgCisgICAgMTI4LCA4NCwgODcsIDY5LCAxMjgsIDg0LCA4NywgNjUsIDY1LCAxMjgsIDg0LCA4NywgNjUsIDEyOCwgODQsIDg2LCA4MiwgCisgICAgNzMsIDY4LCA3OSwgMTI4LCA4NCwgODYsIDczLCA3NywgNjUsIDY4LCA4NSwgMjEwLCA4NCwgODUsIDg4LCA2OSwgNjgsIDc5LCAKKyAgICAxMjgsIDg0LCA4NSwgODgsIDEyOCwgODQsIDg1LCA4NSwgNzcsIDg1LCAxMjgsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg1LCAKKyAgICA4NCwgODQsIDg5LCAxMjgsIDg0LCA4NSwgODQsIDY5LCA4OSwgNjUsIDgzLCA2NSwgODQsIDEyOCwgODQsIDg1LCA4NCwgCisgICAgMTI4LCA4NCwgODUsIDgyLCA4OCwgMTI4LCA4NCwgODUsIDgyLCA4NSwgMTI4LCA4NCwgODUsIDgyLCA4NCwgNzYsIDY5LCAKKyAgICAxMjgsIDg0LCA4NSwgODIsIDc5LCA1MCwgMTI4LCA4NCwgODUsIDgyLCA3OCwgODMsIDg0LCA3MywgNzYsIDY5LCAxMjgsIAorICAgIDg0LCA4NSwgODIsIDc4LCA2OSwgMTk2LCA4NCwgODUsIDgyLCAyMDYsIDg0LCA4NSwgODIsIDc1LCA3MywgODMsIDIwMCwgCisgICAgODQsIDg1LCA4MiwgNzUsIDczLCAxOTUsIDg0LCA4NSwgODIsIDc1LCA2OSwgODksIDEyOCwgODQsIDg1LCA4MiwgNjYsIDY1LCAKKyAgICA3OCwgMTI4LCA4NCwgODUsIDgyLCAxMjgsIDg0LCA4NSwgODAsIDEyOCwgODQsIDg1LCA3OSwgODgsIDEyOCwgODQsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgODQsIDg1LCA3OSwgODAsIDEyOCwgODQsIDg1LCA3OSwgMTI4LCA4NCwgODUsIDc4LCA3OCwgODksIAorICAgIDEyOCwgODQsIDg1LCA3NywgNjksIDg0LCA2OSwgODMsIDEyOCwgODQsIDg1LCA3NywgNjYsIDc2LCA2OSwgMjEwLCA4NCwgCisgICAgODUsIDc3LCA2NSwgNjksIDEyOCwgODQsIDg1LCA3NywgMTI4LCA4NCwgODUsIDIwNSwgODQsIDg1LCA3NiwgNzMsIDgwLCAKKyAgICAxMjgsIDg0LCA4NSwgNzUsIDg3LCA2OSwgNzgsIDg0LCA3MywgODMsIDEyOCwgODQsIDg1LCA3NSwgMTI4LCA4NCwgODUsIAorICAgIDcxLCA4MiwgNzMsIDIwMywgODQsIDg1LCA3MSwgNTAsIDEyOCwgODQsIDg1LCA3MSwgMTc4LCA4NCwgODUsIDY2LCAxMjgsIAorICAgIDg0LCA4NSwgNjUsIDgyLCA2OSwgMTk5LCA4NCwgODUsIDY1LCA2OSwgODAsIDEyOCwgODQsIDg1LCA2NSwgNjksIDEyOCwgCisgICAgODQsIDIxMywgODQsIDg0LCA4NSwgODUsIDEyOCwgODQsIDg0LCA4NSwgNjgsIDY4LCA2NSwgNzEsIDEyOCwgODQsIDg0LCAKKyAgICA4NSwgNjgsIDY4LCA2NSwgNjUsIDcxLCAxMjgsIDg0LCA4NCwgODUsIDEyOCwgODQsIDg0LCA4NCwgNzIsIDY1LCAxMjgsIAorICAgIDg0LCA4NCwgODQsIDY1LCAxMjgsIDg0LCA4NCwgODMsIDg1LCAxMjgsIDg0LCA4NCwgODMsIDc5LCAxMjgsIDg0LCA4NCwgCisgICAgODMsIDczLCAxMjgsIDg0LCA4NCwgODMsIDY5LCA2OSwgMTI4LCA4NCwgODQsIDgzLCA2OSwgMTI4LCA4NCwgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4NCwgODQsIDc5LCA3OSwgMTI4LCA4NCwgODQsIDczLCA3MywgMTI4LCA4NCwgODQsIDczLCAxMjgsIDg0LCAKKyAgICA4NCwgNzIsIDg3LCA2OSwgMTI4LCA4NCwgODQsIDcyLCA4NSwgMTI4LCA4NCwgODQsIDcyLCA3OSwgNzksIDEyOCwgODQsIAorICAgIDg0LCA3MiwgNzksIDEyOCwgODQsIDg0LCA3MiwgNzMsIDEyOCwgODQsIDg0LCA3MiwgNjksIDY5LCAxMjgsIDg0LCA4NCwgCisgICAgNzIsIDY5LCAxMjgsIDg0LCA4NCwgNzIsIDY1LCA2NSwgMTI4LCA4NCwgODQsIDcyLCAxMjgsIDg0LCA4NCwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgODQsIDg0LCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA4NCwgNjksIDcyLCAxMjgsIDg0LCA4NCwgNjksIAorICAgIDIwMCwgODQsIDg0LCA2OSwgNjksIDEyOCwgODQsIDg0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA4NCwgCisgICAgNjUsIDg1LCAxMjgsIDg0LCA4NCwgNjUsIDczLCAxMjgsIDg0LCA4NCwgNjUsIDY1LCAxMjgsIDg0LCA4NCwgNTAsIDEyOCwgCisgICAgODQsIDgzLCA4NywgNjksIDEyOCwgODQsIDgzLCA4NywgNjYsIDEyOCwgODQsIDgzLCA4NywgNjUsIDEyOCwgODQsIDgzLCAKKyAgICA4NiwgMTI4LCA4NCwgODMsIDgzLCA2OSwgMTI4LCA4NCwgODMsIDgzLCA2NSwgMTI4LCA4NCwgODMsIDc5LCAyMTQsIDg0LCAKKyAgICA4MywgNzMsIDg1LCAxMjgsIDg0LCA4MywgNzIsIDg1LCA3MSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNzksIDc5LCA3NSwgCisgICAgMTI4LCA4NCwgODMsIDcyLCA3OSwgNzksIDIwMywgODQsIDgzLCA3MiwgNzksIDc5LCA3NCwgMTI4LCA4NCwgODMsIDcyLCAKKyAgICA2OSwgODMsIDEyOCwgODQsIDgzLCA3MiwgNjksIDcxLCAxMjgsIDg0LCA4MywgNzIsIDY5LCAxOTksIDg0LCA4MywgNzIsIAorICAgIDY5LCA2OSwgNzQsIDEyOCwgODQsIDgzLCA3MiwgNjksIDEyOCwgODQsIDgzLCA3MiwgNjUsIDE5NCwgODQsIDgzLCA3MiwgCisgICAgNjUsIDEyOCwgODQsIDgzLCA2OSwgODIsIDY5LCAxMjgsIDg0LCA4MywgNjksIDY5LCA2NiwgMTI4LCA4NCwgODMsIDY1LCAKKyAgICA2OCwgNzMsIDEyOCwgODQsIDgzLCA2NSwgNjgsIDIwMSwgODQsIDgzLCA2NSwgNjYsIDEyOCwgODQsIDgzLCA2NSwgNjUsIAorICAgIDY4LCA3MywgODksIDEyOCwgODQsIDgzLCA2NSwgNjUsIDEyOCwgODQsIDgzLCAxOTMsIDg0LCA4MiwgODksIDY2LCA3NiwgCisgICAgNzMsIDc5LCAyMDYsIDg0LCA4MiwgODUsIDg0LCA3MiwgMTI4LCA4NCwgODIsIDg1LCA3OCwgNzUsIDEyOCwgODQsIDgyLCAKKyAgICA4NSwgNzgsIDY3LCA2NSwgODQsIDY5LCAxOTYsIDg0LCA4MiwgODUsIDc3LCA4MCwgNjksIDg0LCAxMjgsIDg0LCA4MiwgODUsIAorICAgIDc3LCA4MCwgNDUsIDU3LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU2LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgCisgICAgNDUsIDU1LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUzLCAKKyAgICAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUyLCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUxLCAxMjgsIAorICAgIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDUwLCA0OSwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA1MCwgNDgsIDEyOCwgCisgICAgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNTAsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU3LCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1NiwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTUsIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDU0LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MywgMTI4LCA4NCwgCisgICAgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNTIsIDEyOCwgODQsIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDUxLCAxMjgsIDg0LCAKKyAgICA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCA1MCwgMTI4LCA4NCwgODIsIDg1LCA3NywgODAsIDQ1LCA0OSwgNDksIDEyOCwgODQsIAorICAgIDgyLCA4NSwgNzcsIDgwLCA0NSwgNDksIDQ4LCAxMjgsIDg0LCA4MiwgODUsIDc3LCA4MCwgNDUsIDQ5LCAxMjgsIDg0LCA4MiwgCisgICAgODUsIDY5LCAxMjgsIDg0LCA4MiwgODUsIDY3LCA3NSwgMTI4LCA4NCwgODIsIDc5LCA4MCwgNzMsIDY3LCA2NSwgMjA0LCAKKyAgICA4NCwgODIsIDc5LCA4MCwgNzIsIDg5LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA4MywgODksIDc4LCA2NSwgCisgICAgNzEsIDc3LCA2NSwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIAorICAgIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCAKKyAgICA4MywgNzcsIDY1LCAxMjgsIDg0LCA4MiwgNzksIDc3LCA3MywgNzUsIDc5LCA3OCwgMTI4LCA4NCwgODIsIDc5LCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA4NCwgODIsIDc5LCA3NywgNzMsIDc1LCA3OSwgNzYsIDg5LCA3MSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgCisgICAgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIDY2LCA4NSwgODMsIDEyOCwgODQsIDgyLCA3OSwgNzYsIDc2LCA2OSwgODksIAogICAgIDEyOCwgODQsIDgyLCA3OSwgNzUsIDg1LCA4NCwgNjUsIDgzLCA4NCwgMjAxLCA4NCwgODIsIDc5LCA2OSwgOTAsIDY5LCA3OCwgCiAgICAgNzMsIDY1LCAyMDYsIDg0LCA4MiwgNzMsIDg1LCA3NywgODAsIDcyLCAxMjgsIDg0LCA4MiwgNzMsIDg0LCA3OSwgMjExLCAKICAgICA4NCwgODIsIDczLCA4NCwgNzMsIDc3LCA3OSwgODIsIDczLCA3OSwgNzgsIDEyOCwgODQsIDgyLCA3MywgODMsIDczLCA3NywgCkBAIC02ODgsMjQ5ICs2OTQsMjUwIEBACiAgICAgMjAwLCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDg0LCA3MiwgODIsIDY5LCAKICAgICA2OSwgNDUsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDIxMCwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgODAsIDY5LCA4MiwgCiAgICAgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODQsIDcyLCA4MiwgNjksIDY5LCAKLSAgICA0NSwgNjksIDIwNSwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgMTk2LCA4NCwgNzIsIDgyLCA2OSwgNjksIDQ1LCA2NywgNzMsIAotICAgIDgyLCA2NywgNzYsIDE5NywgODQsIDcyLCA4MiwgNjksIDY1LCA2OCwgMTI4LCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCA3OCwgCi0gICAgNjgsIDgzLCAxMjgsIDg0LCA3MiwgNzksIDg1LCA4MywgNjUsIDc4LCA2OCwgMjExLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY1LCAKLSAgICA3OCwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDE5NiwgODQsIDcyLCA3OSwgODUsIDcxLCA3MiwgCi0gICAgMjEyLCA4NCwgNzIsIDc5LCA4NSwgMTI4LCA4NCwgNzIsIDc5LCA4MiwgNzgsIDEyOCwgODQsIDcyLCA3OSwgODIsIDIwNiwgCi0gICAgODQsIDcyLCA3OSwgNzgsIDcxLCAxMjgsIDg0LCA3MiwgNzksIDc3LCAxMjgsIDg0LCA3MiwgNzksIDc0LCAxMjgsIDg0LCAKLSAgICA3MiwgNzksIDY1LCAxMjgsIDg0LCA3MiwgMjA3LCA4NCwgNzIsIDczLCA4NSwgODQsIDcyLCAxMjgsIDg0LCA3MiwgNzMsIAotICAgIDg0LCA2NSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgODMsIDY5LCA2NywgNzksIDc4LCAxOTYsIDg0LCA3MiwgCi0gICAgNzMsIDgyLCA4NCwgODksIDQ1LCA3OSwgNzgsIDY5LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgMjE3LCA4NCwgNzIsIDczLCAKLSAgICA4MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDIwNiwgODQsIDcyLCA3MywgODIsIAotICAgIDY4LCA4MywgMTI4LCA4NCwgNzIsIDczLCA4MiwgNjgsIDIxMSwgODQsIDcyLCA3MywgODIsIDY4LCA0NSwgODMsIDg0LCA2NSwgCi0gICAgNzEsIDE5NywgODQsIDcyLCA3MywgODIsIDY4LCAxMjgsIDg0LCA3MiwgNzMsIDgyLCAxOTYsIDg0LCA3MiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDg0LCA3MiwgNzMsIDczLCAxMjgsIDg0LCA3MiwgNzMsIDcxLCA3MiwgMTI4LCA4NCwgNzIsIAotICAgIDczLCA2OSwgODUsIDg0LCAyMDAsIDg0LCA3MiwgNzMsIDY3LCAyMDMsIDg0LCA3MiwgNzMsIDY1LCA2NiwgMTI4LCA4NCwgCi0gICAgNzIsIDY5LCA4OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDg0LCA3MiwgMTI4LCAKLSAgICA4NCwgNzIsIDY5LCA4NCwgNjUsIDEyOCwgODQsIDcyLCA2OSwgODQsIDE5MywgODQsIDcyLCA2OSwgODMsIDgwLCA3MywgNjUsIAotICAgIDIwNiwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgODMsIDEyOCwgODQsIDcyLCA2OSwgODMsIDY5LCA3OSwgMjExLCA4NCwgCi0gICAgNzIsIDY5LCAyMTEsIDg0LCA3MiwgNjksIDgyLCA3NywgNzksIDc3LCA2OSwgODQsIDY5LCA4MiwgMTI4LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgNzcsIDc5LCA2OCwgODksIDc4LCA2NSwgNzcsIDczLCA2NywgMTI4LCA4NCwgNzIsIDY5LCA4MiwgNjksIDcwLCA3OSwgCi0gICAgODIsIDY5LCAxMjgsIDg0LCA3MiwgNjksIDgyLCAxOTcsIDg0LCA3MiwgNjksIDIwNiwgODQsIDcyLCA2OSwgNzcsIDY1LCAKLSAgICA4NCwgNzMsIDgzLCA3NywgNzksIDIxMSwgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDg0LCA3MiwgNjksIDc3LCAxOTMsIAotICAgIDg0LCA3MiwgNjksIDcyLCAxMjgsIDg0LCA3MiwgNjksIDIwMCwgODQsIDcyLCA2OSwgNjUsIDEyOCwgODQsIDcyLCAxOTcsIAotICAgIDg0LCA3MiwgNjUsIDg3LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCA4NCwgNzIsIDY1LCA3NSwgNzIsIDY1LCA4NCwgMTI4LCA4NCwgCi0gICAgNzIsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDg0LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDIwNiwgODQsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgODQsIDcyLCA2NSwgNzYsIDEyOCwgODQsIDcyLCA2NSwgMjA0LCA4NCwgNzIsIAotICAgIDY1LCA3NCwgMTI4LCA4NCwgNzIsIDY1LCAyMDEsIDg0LCA3MiwgNjUsIDcyLCA2NSwgNzgsIDEyOCwgODQsIDcyLCA2NSwgCi0gICAgNjUsIDc4LCAxOTMsIDg0LCA3MiwgNjUsIDY1LCA3NiwgODUsIDEyOCwgODQsIDcyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCAKLSAgICA4NCwgNjksIDg4LCA4NCwgMTI4LCA4NCwgNjksIDg4LCAyMTIsIDg0LCA2OSwgODgsIDEyOCwgODQsIDY5LCA4NiwgNzMsIAotICAgIDgyLCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg4LCAxMjgsIDg0LCA2OSwgODUsIDg0LCA2OSwgODUsIDg3LCA2OSwgCi0gICAgNzgsIDEyOCwgODQsIDY5LCA4NSwgODQsIDEyOCwgODQsIDY5LCA4NSwgNzgsIDEyOCwgODQsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MSwgMTI4LCA4NCwgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIAotICAgIDY1LCA4MywgNzMsIDc3LCA3OSwgODUsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MywgNjksIDc3LCA2OSwgMTI4LCA4NCwgCi0gICAgNjksIDg0LCA4MiwgNjUsIDgwLCA3NiwgNzMsIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDg0LCAKLSAgICA2OSwgODQsIDgyLCA2NSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA4NCwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIAotICAgIDg0LCAyMDAsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDc5LCAyMTEsIDg0LCA2OSwgODQsIDY1LCA4MiwgODQsIDczLCA3NywgCi0gICAgNzksIDgyLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgODQsIDEyOCwgODQsIDY5LCAyMTIsIDg0LCA2OSwgODMsIDgzLCAKLSAgICA2OSwgODIsIDY1LCAxMjgsIDg0LCA2OSwgODMsIDgzLCA2OSwgODIsIDE5MywgODQsIDY5LCA4MywgODMsIDY1LCA4MiwgNzksIAotICAgIDIwNiwgODQsIDY5LCA4MywgMjAwLCA4NCwgNjksIDgyLCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA4NCwgCi0gICAgNjksIDgwLCAxMjgsIDg0LCA2OSwgNzgsIDg1LCA4NCwgNzksIDEyOCwgODQsIDY5LCA3OCwgODUsIDEyOCwgODQsIDY5LCAKLSAgICA3OCwgMjEzLCA4NCwgNjksIDc4LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY5LCA3OCwgODMsIAotICAgIDY5LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCAxOTcsIDg0LCA2OSwgNzgsIDgzLCAxMjgsIDg0LCA2OSwgNzgsIDIxMSwgODQsIAotICAgIDY5LCA3OCwgNzgsIDczLCAyMTEsIDg0LCA2OSwgNzgsIDcxLCAxOTcsIDg0LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDg0LCA2OSwgNzgsIDEyOCwgODQsIDY5LCAyMDYsIDg0LCA2OSwgNzcsIDgwLCA4NSwgMjExLCA4NCwgCi0gICAgNjksIDc2LCA4NSwgMTI4LCA4NCwgNjksIDc2LCA3OSwgODUsIDIxMSwgODQsIDY5LCA3NiwgNzYsIDY5LCAyMTAsIDg0LCAKLSAgICA2OSwgNzYsIDczLCA4MywgNzIsIDE5MywgODQsIDY5LCA3NiwgNjksIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgODQsIAotICAgIDY5LCA3NiwgNjksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKLSAgICAxMjgsIDg0LCA2OSwgNzYsIDY5LCA4MCwgNzIsIDc5LCA3OCwgMTk3LCA4NCwgNjksIDc2LCA2OSwgNzMsIDY1LCAxMjgsIAotICAgIDg0LCA2OSwgNzYsIDY5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4NCwgNjksIDc1LCAxMjgsIDg0LCA2OSwgNzMsIDg3LCA4MywgCi0gICAgMTI4LCA4NCwgNjksIDcxLCA2OSwgNzIsIDEyOCwgODQsIDY5LCA2OSwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCAKLSAgICAyMDAsIDg0LCA2OSwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDY5LCA2OSwgNjksIDEyOCwgODQsIDY5LCAxOTcsIDg0LCAKLSAgICA2OSwgNjgsIDg1LCA3OCwgNzEsIDEyOCwgODQsIDY5LCA2NSwgODIsIDIxMSwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIAotICAgIDgwLCA0NSwgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKLSAgICA3MiwgNjUsIDc4LCA3NSwgNjksIDE5NiwgODQsIDY5LCA2NSwgODIsIDY4LCA4MiwgNzksIDgwLCA0NSwgNjYsIDY1LCA4MiwgCi0gICAgNjYsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA0NSwgNzksIDcwLCAxOTgsIDg0LCA2OSwgNjUsIDY3LCA4NSwgMjA4LCAKLSAgICA4NCwgNjksIDQ1LCA4NSwgMTI4LCA4NCwgNjksIDQ1LCA1MCwgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCA3MiwgCi0gICAgMTI4LCA4NCwgNjcsIDcyLCA2OSwgNzIsIDY5LCAyMDAsIDg0LCA2NywgNzIsIDY5LCA3MiwgMTI4LCA4NCwgNjcsIDcyLCAKLSAgICA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgMTI4LCA4NCwgMTk1LCA4NCwgNjUsIDg5LCAxMjgsIDg0LCA2NSwgODgsIDczLCAKLSAgICAxMjgsIDg0LCA2NSwgODgsIDEyOCwgODQsIDY1LCA4NywgNjksIDc2LCA3NiwgNjksIDc3LCA2OSwgMjEyLCA4NCwgNjUsIAotICAgIDg3LCA2NSwgMTI4LCA4NCwgNjUsIDg3LCAxMjgsIDg0LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA4NCwgCi0gICAgNjUsIDg2LCAxMjgsIDg0LCA2NSwgMjE0LCA4NCwgNjUsIDg1LCA4MiwgODUsIDgzLCAxMjgsIDg0LCA2NSwgODUsIDc3LCAKLSAgICAxMjgsIDg0LCA2NSwgMjEzLCA4NCwgNjUsIDg0LCA4NywgNjksIDY5LCA3NiwgMTI4LCA4NCwgNjUsIDg0LCA4NywgNjksIAotICAgIDY5LCAyMDQsIDg0LCA2NSwgODQsIDg0LCA3OSwgNzksIDY5LCAxOTYsIDg0LCA2NSwgODQsIDEyOCwgODQsIDY1LCA4MywgCi0gICAgMTI4LCA4NCwgNjUsIDgyLCA4NSwgNzgsIDcxLCAxMjgsIDg0LCA2NSwgODIsIDg0LCA2NSwgODIsIDQ1LCA1MCwgMTI4LCAKLSAgICA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDg0LCA2NSwgODIsIDcxLCA2OSwgODQsIDEyOCwgODQsIDY1LCA4MSwgCi0gICAgMTI4LCA4NCwgNjUsIDgwLCA2OSwgODIsIDEyOCwgODQsIDY1LCA4MCwgMTk3LCA4NCwgNjUsIDgwLCAxMjgsIDg0LCA2NSwgCi0gICAgNzksIDEyOCwgODQsIDY1LCA3OCwgNzgsIDY5LCAxOTYsIDg0LCA2NSwgNzgsIDcxLCA2OSwgODIsIDczLCA3OCwgNjksIAotICAgIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgODQsIDEyOCwgODQsIDY1LCA3OCwgNzEsIDY5LCA3OCwgMjEyLCA4NCwgCi0gICAgNjUsIDc4LCAxOTksIDg0LCA2NSwgNzgsIDY1LCA2NiwgNjUsIDg0LCAxOTMsIDg0LCA2NSwgNzgsIDEyOCwgODQsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc3LCAxMjgsIDg0LCA2NSwgNzYsIDc2LCAxMjgsIDg0LCA2NSwgNzYsIAotICAgIDIwNCwgODQsIDY1LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDc2LCA3MywgNzgsIDE5OSwgODQsIDY1LCA3NiwgCi0gICAgNjksIDc4LCA4NCwgODMsIDEyOCwgODQsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDg0LCA2NSwgNzUsIDgyLCAyMDEsIDg0LCAKLSAgICA2NSwgNzUsIDcyLCA2NSwgNzYsIDc2LCA4NSwgODMsIDEyOCwgODQsIDY1LCA3NSwgNjksIDEyOCwgODQsIDY1LCA3NSwgNTIsIAotICAgIDEyOCwgODQsIDY1LCA3NSwgMTgwLCA4NCwgNjUsIDc1LCAxMjgsIDg0LCA2NSwgNzMsIDgzLCA4OSwgNzksIDg1LCAxMjgsIAotICAgIDg0LCA2NSwgNzMsIDc2LCA3NiwgNjksIDgzLCAyMTEsIDg0LCA2NSwgNzMsIDc2LCAxMjgsIDg0LCA2NSwgNzMsIDIwNCwgCi0gICAgODQsIDY1LCA3MiwgMTI4LCA4NCwgNjUsIDIwMCwgODQsIDY1LCA3MSwgNjYsIDY1LCA3OCwgODcsIDE5MywgODQsIDY1LCAKLSAgICA3MSwgNjUsIDc2LCA3OSwgMTk5LCA4NCwgNjUsIDcxLCAxMjgsIDg0LCA2NSwgNjksIDIwNiwgODQsIDY1LCA2NywgNzksIAotICAgIDEyOCwgODQsIDY1LCA2NywgNzUsIDEyOCwgODQsIDY1LCA2NywgMjAzLCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA4NCwgNjUsIDY2LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDg0LCA2NSwgNjYsIDgzLCAKLSAgICAxMjgsIDg0LCA2NSwgNjYsIDc2LCA2OSwgMTI4LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA4NCwgNjUsIDY2LCAxMjgsIDg0LCAKLSAgICA2NSwgMTk0LCA4NCwgNjUsIDY1LCA4MywgNzIsIDY1LCA2OSwgMTI4LCA4NCwgNjUsIDY1LCA4MSwgMTI4LCA4NCwgNjUsIAotICAgIDY1LCA3NywgMTI4LCA4NCwgNjUsIDY1LCA3NiwgODUsIDc0LCAxOTMsIDg0LCA2NSwgNjUsIDczLCAxMjgsIDg0LCA2NSwgCi0gICAgNjUsIDcwLCAxMjgsIDg0LCA2NSwgNTAsIDEyOCwgODQsIDY1LCA0NSwgODIsIDc5LCA3NiwgMTI4LCA4NCwgNjUsIDQ1LCAKLSAgICA1MCwgMTI4LCA4NCwgNDgsIDUxLCA1NCwgMTI4LCA4NCwgNDgsIDUxLCA1MywgMTI4LCA4NCwgNDgsIDUxLCA1MiwgMTI4LCAKLSAgICA4NCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDEyOCwgODQsIDQ4LCA1MSwgNTAsIDY1LCAxMjgsIAotICAgIDg0LCA0OCwgNTEsIDUwLCAxMjgsIDg0LCA0OCwgNTEsIDQ5LCAxMjgsIDg0LCA0OCwgNTEsIDQ4LCAxMjgsIDg0LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDg0LCA0OCwgNTAsIDU2LCAxMjgsIDg0LCA0OCwgNTAsIDU1LCAxMjgsIDg0LCA0OCwgNTAsIDU0LCAKLSAgICAxMjgsIDg0LCA0OCwgNTAsIDUzLCAxMjgsIDg0LCA0OCwgNTAsIDUyLCAxMjgsIDg0LCA0OCwgNTAsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNTAsIDUwLCAxMjgsIDg0LCA0OCwgNTAsIDQ5LCAxMjgsIDg0LCA0OCwgNTAsIDQ4LCAxMjgsIDg0LCA0OCwgNDksIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDksIDU2LCAxMjgsIDg0LCA0OCwgNDksIDU1LCAxMjgsIDg0LCA0OCwgNDksIDU0LCA2NSwgCi0gICAgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgMTI4LCA4NCwgNDgsIDQ5LCA1MywgMTI4LCA4NCwgNDgsIDQ5LCA1MiwgMTI4LCA4NCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA4NCwgNDgsIDQ5LCA1MCwgMTI4LCA4NCwgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgODQsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgODQsIDQ4LCA0OSwgNDgsIDEyOCwgODQsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIAotICAgIDU3LCAxMjgsIDg0LCA0OCwgNDgsIDU2LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgMTI4LCA4NCwgNDgsIDQ4LCA1NSwgCi0gICAgNjUsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDEyOCwgODQsIDQ4LCA0OCwgNTQsIDEyOCwgODQsIDQ4LCA0OCwgNTMsIDEyOCwgCi0gICAgODQsIDQ4LCA0OCwgNTIsIDEyOCwgODQsIDQ4LCA0OCwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDUxLCAxMjgsIDg0LCAKLSAgICA0OCwgNDgsIDUwLCAxMjgsIDg0LCA0OCwgNDgsIDQ5LCAxMjgsIDg0LCA0NSwgODMsIDcyLCA3MywgODIsIDg0LCAxMjgsIAotICAgIDgzLCA5MCwgOTAsIDEyOCwgODMsIDkwLCA4NywgNzEsIDEyOCwgODMsIDkwLCA4NywgNjUsIDEyOCwgODMsIDkwLCA4NSwgCi0gICAgMTI4LCA4MywgOTAsIDc5LCAxMjgsIDgzLCA5MCwgNzMsIDEyOCwgODMsIDkwLCA2OSwgNjksIDEyOCwgODMsIDkwLCA2OSwgCi0gICAgMTI4LCA4MywgOTAsIDY1LCA2NSwgMTI4LCA4MywgOTAsIDY1LCAxMjgsIDgzLCA5MCwgMTI4LCA4MywgODksIDg4LCAxMjgsIAotICAgIDgzLCA4OSwgODQsIDEyOCwgODMsIDg5LCA4MywgODQsIDY5LCAyMDUsIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4OSwgCi0gICAgODIsIDc3LCA2NSwgODQsIDczLCA3NSwgNzMsIDEyOCwgODMsIDg5LCA4MiwgNzcsIDY1LCAxMjgsIDgzLCA4OSwgODIsIDczLCAKLSAgICA3OCwgNzEsIDY5LCAxMjgsIDgzLCA4OSwgODIsIDczLCA2NSwgMTk1LCA4MywgODksIDgyLCAxMjgsIDgzLCA4OSwgODAsIAotICAgIDEyOCwgODMsIDg5LCA3OSwgODUsIDg3LCA2NSwgMTI4LCA4MywgODksIDc4LCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MywgCi0gICAgODksIDc4LCA2OCwgNjksIDgzLCA3NywgNzksIDIxMSwgODMsIDg5LCA3OCwgNjcsIDcyLCA4MiwgNzksIDc4LCA3OSwgODUsIAotICAgIDIxMSwgODMsIDg5LCA3OCwgNjUsIDcxLCA3OSwgNzEsIDg1LCA2OSwgMTI4LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKLSAgICAxOTMsIDgzLCA4OSwgNzgsIDY1LCA3MCwgNzMsIDEyOCwgODMsIDg5LCA3OCwgMTI4LCA4MywgODksIDc3LCA3NywgNjksIAotICAgIDg0LCA4MiwgODksIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDczLCAxOTUsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDgzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIAotICAgIDQ1LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCi0gICAgNzYsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA1MCwgMTI4LCA4MywgODksIDc3LCAKLSAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgNDgsIDEyOCwgODMsIAotICAgIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTcsIDEyOCwgCi0gICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAotICAgIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTMsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCi0gICAgNDUsIDUyLCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKLSAgICA3OSwgNzYsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCAxMjgsIDgzLCA4OSwgNzcsIAotICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgCi0gICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTQsIAotICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTUsIDEyOCwgODMsIDg5LCA3NywgNjYsIAotICAgIDc5LCA3NiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUzLCAxMjgsIDgzLCA4OSwgCi0gICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MSwgMTI4LCAKLSAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCi0gICAgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKLSAgICA0NSwgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTUsIDEyOCwgODMsIDg5LCA3NywgCi0gICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUzLCAxMjgsIDgzLCAKLSAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MSwgCi0gICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKLSAgICA0OSwgNDksIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAotICAgIDc2LCA0NSwgNDksIDEyOCwgODMsIDg5LCA3NiwgNzksIDg0LCAyMDEsIDgzLCA4OSwgMTI4LCA4MywgODcsIDkwLCAxMjgsIAotICAgIDgzLCA4NywgODUsIDc4LCAxOTksIDgzLCA4NywgNzksIDgyLCA2OCwgODMsIDEyOCwgODMsIDg3LCA3OSwgODIsIDY4LCAKLSAgICAxMjgsIDgzLCA4NywgNzksIDc5LCAxMjgsIDgzLCA4NywgNzksIDEyOCwgODMsIDg3LCA3MywgODIsIDIwNCwgODMsIDg3LCAKLSAgICA3MywgNzcsIDc3LCA3MywgNzgsIDcxLCAxMjgsIDgzLCA4NywgNzMsIDc3LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NywgNzMsIAotICAgIDczLCAxMjgsIDgzLCA4NywgNzMsIDEyOCwgODMsIDg3LCA3MSwgMTI4LCA4MywgODcsIDY5LCA2OSwgODQsIDEyOCwgODMsIAotICAgIDg3LCA2OSwgNjksIDIxMiwgODMsIDg3LCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA4NywgNjksIDY1LCAyMTIsIDgzLCA4NywgCi0gICAgNjUsIDgzLCAyMDAsIDgzLCA4NywgNjUsIDgwLCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA4MywgODcsIDEyOCwgODMsIDg2LCA2NSwgODMsIDg0LCAyMDEsIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDY1LCAxMjgsIAotICAgIDgzLCA4NiwgNjUsIDgyLCA3MywgODQsIDE5MywgODMsIDg1LCA4OCwgMTI4LCA4MywgODUsIDg1LCAxMjgsIDgzLCA4NSwgCi0gICAgODQsIDgyLCAxOTMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDg1LCA4MywgODAsIDY5LCA3OCwgODMsIDczLCA3OSwgMjA2LCAKLSAgICA4MywgODUsIDgzLCA3MiwgNzMsIDEyOCwgODMsIDg1LCA4MiwgODksIDY1LCAxMjgsIDgzLCA4NSwgODIsIDg4LCAxMjgsIAotICAgIDgzLCA4NSwgODIsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgMTk2LCA4MywgCi0gICAgODUsIDgyLCA3MCwgNjksIDgyLCAxMjgsIDgzLCA4NSwgODIsIDcwLCA2NSwgNjcsIDE5NywgODMsIDg1LCA4MiwgNjksIAotICAgIDEyOCwgODMsIDg1LCA4MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgODUsIDgyLCA1NywgMTI4LCA4MywgODUsIDgyLCAxMjgsIAotICAgIDgzLCA4NSwgMjEwLCA4MywgODUsIDgwLCA4MiwgNjUsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MywgODUsIDgwLCA2OSwgCi0gICAgODIsIDg2LCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgODAsIDY5LCA4MiwgODMsIDY5LCA4NCwgMTI4LCA4MywgODUsIDgwLCAKLSAgICA2OSwgODIsIDgzLCA2OSwgMjEyLCA4MywgODUsIDgwLCA2OSwgODIsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIAotICAgIDgwLCA2OSwgODIsIDczLCA3NywgODAsIDc5LCA4MywgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MCwgNzMsIDg4LCAKLSAgICA2OSwgMTk2LCA4MywgODUsIDgwLCA2OSwgMjEwLCA4MywgODUsIDgwLCAxMjgsIDgzLCA4NSwgNzksIDg4LCAxMjgsIDgzLCAKLSAgICA4NSwgNzksIDgwLCAxMjgsIDgzLCA4NSwgNzksIDEyOCwgODMsIDg1LCA3OCwgODMsIDY5LCAyMTIsIDgzLCA4NSwgNzgsIAotICAgIDgyLCA3MywgODMsIDY5LCAxMjgsIDgzLCA4NSwgNzgsIDgyLCA3MywgODMsIDE5NywgODMsIDg1LCA3OCwgNzEsIDc2LCA2NSwgCi0gICAgODMsIDgzLCA2OSwgODMsIDEyOCwgODMsIDg1LCA3OCwgNzEsIDEyOCwgODMsIDg1LCA3OCwgNzAsIDc2LCA3OSwgODcsIDY5LCAKLSAgICA4MiwgMTI4LCA4MywgODUsIDc4LCA2OCwgNjUsIDc4LCA2OSwgODMsIDE5NywgODMsIDg1LCA3OCwgMTI4LCA4MywgODUsIAotICAgIDIwNiwgODMsIDg1LCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICAxMjgsIDgzLCA4NSwgNzcsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MywgODUsIDc3LCA2NSwgODMsIDcyLCAxMjgsIAotICAgIDgzLCA4NSwgNzcsIDEyOCwgODMsIDg1LCA3NiwgNzAsIDg1LCA4MiwgMTI4LCA4MywgODUsIDc1LCA4NSwgNzgsIDEyOCwgCi0gICAgODMsIDg1LCA3NSwgODUsIDIwNiwgODMsIDg1LCA3NSwgODUsIDEyOCwgODMsIDg1LCA3NSwgMjEzLCA4MywgODUsIDczLCAKLSAgICA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODMsIDg1LCA3MywgODQsIDEyOCwgODMsIDg1LCA3MywgMjEyLCA4MywgODUsIAotICAgIDcyLCA4NSwgODIsIDEyOCwgODMsIDg1LCA2OSwgMTI4LCA4MywgODUsIDY4LCA1MCwgMTI4LCA4MywgODUsIDY4LCAxMjgsIAotICAgIDgzLCA4NSwgNjcsIDc1LCA3MywgNzgsIDE5OSwgODMsIDg1LCA2NywgNzUsIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCAKLSAgICAyMDMsIDgzLCA4NSwgNjcsIDY3LCA2OSwgNjksIDY4LCA4MywgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgCi0gICAgMjExLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgMTI4LCA4MywgODUsIDY3LCA2NywgNjksIDY5LCAxOTYsIDgzLCAKLSAgICA4NSwgNjYsIDg1LCA3OCwgNzMsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDgzLCA4NCwgNzMsIDg0LCA4NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA4MywgODUsIDY2LCA4MywgODQsIDczLCA4NCwgODUsIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIDczLCAKLSAgICA4NCwgODUsIDg0LCAxOTcsIDgzLCA4NSwgNjYsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA2NiwgODMsIDY5LCAyMTIsIAotICAgIDgzLCA4NSwgNjYsIDgzLCA2NywgODIsIDczLCA4MCwgMjEyLCA4MywgODUsIDY2LCA4MCwgODUsIDc4LCA2NywgODQsIDczLCAKLSAgICA4MywgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA4NSwgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDQ1LCA1MSwgMTI4LCA4MywgCi0gICAgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIDE5NywgODMsIDg1LCA2NiwgNzQsIDc5LCA3MywgCi0gICAgNzgsIDY5LCAxOTYsIDgzLCA4NSwgNjYsIDc0LCA2OSwgNjcsIDg0LCAxMjgsIDgzLCA4NSwgNjYsIDczLCA4NCwgNzksIAotICAgIDEyOCwgODMsIDg1LCA2NiwgNzEsIDgyLCA3OSwgODUsIDgwLCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCAKLSAgICAyMDgsIDgzLCA4NSwgNjYsIDEyOCwgODMsIDg1LCA2NSwgNzcsIDEyOCwgODMsIDg1LCA2NSwgNjksIDg0LCAxMjgsIDgzLCAKLSAgICA4NSwgNjUsIDY5LCA3OCwgMTI4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA4MywgODUsIDY1LCA2NiwgMTI4LCA4MywgODUsIAotICAgIDY1LCAxMjgsIDgzLCAyMTMsIDgzLCA4NCwgODgsIDEyOCwgODMsIDg0LCA4NywgNjUsIDEyOCwgODMsIDg0LCA4NSwgNjgsIAotICAgIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgCi0gICAgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIAotICAgIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgCi0gICAgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgCi0gICAgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIAotICAgIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgCi0gICAgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIAotICAgIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgCi0gICAgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIAotICAgIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgCi0gICAgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCAKLSAgICA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgCi0gICAgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCAKLSAgICA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgCi0gICAgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCAKLSAgICA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIAotICAgIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgCi0gICAgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCAKLSAgICA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIAotICAgIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgCi0gICAgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIAotICAgIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgCi0gICAgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCAKLSAgICA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgODQsIDY5LCAxMjgsIDgzLCA4NCwgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCAKLSAgICA4MiwgODIsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIAotICAgIDY1LCAyMTAsIDgzLCA4NCwgNjUsIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgCi0gICAgNjUsIDgyLCAxOTYsIDgzLCA4NCwgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCAKLSAgICA3NywgODAsIDY5LCAxOTYsIDgzLCA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIAotICAgIDEyOCwgODMsIDg0LCA2NSwgNzAsIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgCi0gICAgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIAotICAgIDc5LCAxMjgsIDgzLCA4NCwgNTAsIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIAotICAgIDgzLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgCi0gICAgODksIDEyOCwgODMsIDgzLCA4NSwgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgCi0gICAgODMsIDgzLCA4NSwgODAsIDEyOCwgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCAKLSAgICA3OSwgODAsIDEyOCwgODMsIDgzLCA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCAKLSAgICA4MywgODMsIDczLCA4NCwgMTI4LCA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIAotICAgIDczLCA2OSwgODgsIDEyOCwgODMsIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgCi0gICAgNzMsIDEyOCwgODMsIDgzLCA3MiwgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAKLSAgICAxMjgsIDgzLCA4MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDg1LCAxMjgsIDgzLCA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIAotICAgIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCAKLSAgICA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCAKLSAgICA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIAotICAgIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCAKLSAgICA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgCi0gICAgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKLSAgICA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgCi0gICAgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCAKLSAgICA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIAotICAgIDEyOCwgODMsIDgzLCA2NSwgNzMsIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIAotICAgIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgCi0gICAgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNjksIDY5LCA5MCwgNjksIDY4LCAKKyAgICA0NSwgNzYsIDY5LCA3MSwgNzEsIDY5LCAxOTYsIDg0LCA3MiwgODIsIDY5LCA2OSwgNDUsIDY5LCAyMDUsIDg0LCA3MiwgODIsIAorICAgIDY5LCA2OSwgNDUsIDE5NiwgODQsIDcyLCA4MiwgNjksIDY5LCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDg0LCA3MiwgCisgICAgODIsIDY5LCA2NSwgNjgsIDEyOCwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA4NCwgNzIsIDc5LCAKKyAgICA4NSwgODMsIDY1LCA3OCwgNjgsIDIxMSwgODQsIDcyLCA3OSwgODUsIDgzLCA2NSwgNzgsIDY4LCAxMjgsIDg0LCA3MiwgNzksIAorICAgIDg1LCA4MywgNjUsIDc4LCAxOTYsIDg0LCA3MiwgNzksIDg1LCA3MSwgNzIsIDIxMiwgODQsIDcyLCA3OSwgODUsIDEyOCwgCisgICAgODQsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDg0LCA3MiwgNzksIDgyLCAyMDYsIDg0LCA3MiwgNzksIDc4LCA3MSwgMTI4LCAKKyAgICA4NCwgNzIsIDc5LCA3NywgMTI4LCA4NCwgNzIsIDc5LCA3NCwgMTI4LCA4NCwgNzIsIDc5LCA2NSwgMTI4LCA4NCwgNzIsIAorICAgIDIwNywgODQsIDcyLCA3MywgODUsIDg0LCA3MiwgMTI4LCA4NCwgNzIsIDczLCA4NCwgNjUsIDEyOCwgODQsIDcyLCA3MywgCisgICAgODIsIDg0LCA4OSwgNDUsIDgzLCA2OSwgNjcsIDc5LCA3OCwgMTk2LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCA0NSwgNzksIAorICAgIDc4LCA2OSwgMTI4LCA4NCwgNzIsIDczLCA4MiwgODQsIDIxNywgODQsIDcyLCA3MywgODIsIDg0LCA2OSwgNjksIDc4LCAKKyAgICAxMjgsIDg0LCA3MiwgNzMsIDgyLCA4NCwgNjksIDY5LCAyMDYsIDg0LCA3MiwgNzMsIDgyLCA2OCwgODMsIDEyOCwgODQsIAorICAgIDcyLCA3MywgODIsIDY4LCAyMTEsIDg0LCA3MiwgNzMsIDgyLCA2OCwgNDUsIDgzLCA4NCwgNjUsIDcxLCAxOTcsIDg0LCA3MiwgCisgICAgNzMsIDgyLCA2OCwgMTI4LCA4NCwgNzIsIDczLCA4MiwgMTk2LCA4NCwgNzIsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4NCwgNzIsIDczLCA3MywgMTI4LCA4NCwgNzIsIDczLCA3MSwgNzIsIDEyOCwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgCisgICAgMjAwLCA4NCwgNzIsIDczLCA2NywgMjAzLCA4NCwgNzIsIDczLCA2NSwgNjYsIDEyOCwgODQsIDcyLCA2OSwgODksIDEyOCwgCisgICAgODQsIDcyLCA2OSwgODQsIDcyLCA2OSwgMTI4LCA4NCwgNzIsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDcyLCA2OSwgODQsIDY1LCAKKyAgICAxMjgsIDg0LCA3MiwgNjksIDg0LCAxOTMsIDg0LCA3MiwgNjksIDgzLCA4MCwgNzMsIDY1LCAyMDYsIDg0LCA3MiwgNjksIAorICAgIDgzLCA2OSwgNzksIDgzLCAxMjgsIDg0LCA3MiwgNjksIDgzLCA2OSwgNzksIDIxMSwgODQsIDcyLCA2OSwgMjExLCA4NCwgCisgICAgNzIsIDY5LCA4MiwgNzcsIDc5LCA3NywgNjksIDg0LCA2OSwgODIsIDEyOCwgODQsIDcyLCA2OSwgODIsIDc3LCA3OSwgNjgsIAorICAgIDg5LCA3OCwgNjUsIDc3LCA3MywgNjcsIDEyOCwgODQsIDcyLCA2OSwgODIsIDY5LCA3MCwgNzksIDgyLCA2OSwgMTI4LCA4NCwgCisgICAgNzIsIDY5LCA4MiwgMTk3LCA4NCwgNzIsIDY5LCAyMDYsIDg0LCA3MiwgNjksIDc3LCA2NSwgODQsIDczLCA4MywgNzcsIDc5LCAKKyAgICAyMTEsIDg0LCA3MiwgNjksIDc3LCA2NSwgMTI4LCA4NCwgNzIsIDY5LCA3NywgMTkzLCA4NCwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA4NCwgNzIsIDY5LCAyMDAsIDg0LCA3MiwgNjksIDY1LCAxMjgsIDg0LCA3MiwgMTk3LCA4NCwgNzIsIDY1LCA4NywgMTI4LCAKKyAgICA4NCwgNzIsIDY1LCA3OCwgODQsIDcyLCA2NSwgNzUsIDcyLCA2NSwgODQsIDEyOCwgODQsIDcyLCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA4NCwgNzIsIDY1LCAyMDYsIDg0LCA3MiwgNjUsIDc3LCA2OSwgNjgsIDcyLCAKKyAgICAxMjgsIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDg0LCA3MiwgNjUsIDIwNCwgODQsIDcyLCA2NSwgNzQsIDEyOCwgODQsIDcyLCAKKyAgICA2NSwgMjAxLCA4NCwgNzIsIDY1LCA3MiwgNjUsIDc4LCAxMjgsIDg0LCA3MiwgNjUsIDY1LCA3OCwgMTkzLCA4NCwgNzIsIAorICAgIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDg0LCA3MiwgNDUsIDY3LCA4MiwgNjksIDE5NywgODQsIDY5LCA4OCwgODQsIDEyOCwgCisgICAgODQsIDY5LCA4OCwgMjEyLCA4NCwgNjksIDg4LCAxMjgsIDg0LCA2OSwgODYsIDczLCA4MiwgMTI4LCA4NCwgNjksIDg1LCAKKyAgICA4NCwgNjksIDg1LCA4OCwgMTI4LCA4NCwgNjksIDg1LCA4NCwgNjksIDg1LCA4NywgNjksIDc4LCAxMjgsIDg0LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDg0LCA2OSwgODUsIDc4LCAxMjgsIDg0LCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODQsIDY5LCA4NSwgCisgICAgNjUsIDY5LCA3OCwgMTI4LCA4NCwgNjksIDg1LCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDczLCA3NywgNzksIDg1LCAKKyAgICAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODQsIDY5LCA4NCwgODIsIDY1LCA4MCwgNzYsIAorICAgIDczLCAxMjgsIDg0LCA2OSwgODQsIDgyLCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA4NCwgNjksIDg0LCA4MiwgNjUsIDcwLCA3OSwgCisgICAgNzgsIDczLCA2NSwgODMsIDEyOCwgODQsIDY5LCA4NCwgNzIsIDEyOCwgODQsIDY5LCA4NCwgMjAwLCA4NCwgNjksIDg0LCAKKyAgICA2NSwgODIsIDg0LCA3OSwgMjExLCA4NCwgNjksIDg0LCA2NSwgODIsIDg0LCA3MywgNzcsIDc5LCA4MiwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA4NCwgNjksIDg0LCAxMjgsIDg0LCA2OSwgMjEyLCA4NCwgNjksIDgzLCA4MywgNjksIDgyLCA2NSwgMTI4LCA4NCwgCisgICAgNjksIDgzLCA4MywgNjksIDgyLCAxOTMsIDg0LCA2OSwgODMsIDgzLCA2NSwgODIsIDc5LCAyMDYsIDg0LCA2OSwgODMsIAorICAgIDIwMCwgODQsIDY5LCA4MiwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODQsIDY5LCA4MCwgMTI4LCA4NCwgCisgICAgNjksIDc4LCA4NSwgODQsIDc5LCAxMjgsIDg0LCA2OSwgNzgsIDg1LCAxMjgsIDg0LCA2OSwgNzgsIDIxMywgODQsIDY5LCAKKyAgICA3OCwgODQsIDcyLCAxMjgsIDg0LCA2OSwgNzgsIDg0LCAxMjgsIDg0LCA2OSwgNzgsIDgzLCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc4LCA4MywgMTk3LCA4NCwgNjksIDc4LCA4MywgMTI4LCA4NCwgNjksIDc4LCAyMTEsIDg0LCA2OSwgNzgsIDc4LCA3MywgCisgICAgMjExLCA4NCwgNjksIDc4LCA3MSwgMTk3LCA4NCwgNjksIDc4LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCAKKyAgICA4NCwgNjksIDc4LCAxMjgsIDg0LCA2OSwgMjA2LCA4NCwgNjksIDc3LCA4MCwgODUsIDIxMSwgODQsIDY5LCA3NiwgODUsIAorICAgIDEyOCwgODQsIDY5LCA3NiwgNzksIDg1LCAyMTEsIDg0LCA2OSwgNzYsIDc2LCA2OSwgMjEwLCA4NCwgNjksIDc2LCA3MywgCisgICAgODMsIDcyLCAxOTMsIDg0LCA2OSwgNzYsIDY5LCA4NiwgNzMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDg0LCA2OSwgNzYsIDY5LCAKKyAgICA4MywgNjcsIDc5LCA4MCwgNjksIDEyOCwgODQsIDY5LCA3NiwgNjksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA4NCwgNjksIAorICAgIDc2LCA2OSwgODAsIDcyLCA3OSwgNzgsIDE5NywgODQsIDY5LCA3NiwgNjksIDczLCA2NSwgMTI4LCA4NCwgNjksIDc2LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODAsIDIwMCwgODQsIDY5LCA3NSwgMTI4LCA4NCwgNjksIDczLCA4NywgODMsIDEyOCwgODQsIDY5LCAKKyAgICA3MSwgNjksIDcyLCAxMjgsIDg0LCA2OSwgNjksIDg0LCA3MiwgMTI4LCA4NCwgNjksIDY5LCA4NCwgMjAwLCA4NCwgNjksIAorICAgIDY5LCA3OCwgODMsIDEyOCwgODQsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDg0LCA2OSwgMTk3LCA4NCwgNjksIDY4LCA4NSwgCisgICAgNzgsIDcxLCAxMjgsIDg0LCA2OSwgNjUsIDgyLCAyMTEsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCAKKyAgICA4MCwgNzksIDc1LCA2OSwgMTk2LCA4NCwgNjksIDY1LCA4MiwgNjgsIDgyLCA3OSwgODAsIDQ1LCA4MywgNzIsIDY1LCA3OCwgCisgICAgNzUsIDY5LCAxOTYsIDg0LCA2OSwgNjUsIDgyLCA2OCwgODIsIDc5LCA4MCwgNDUsIDY2LCA2NSwgODIsIDY2LCA2OSwgMTk2LCAKKyAgICA4NCwgNjksIDY1LCA4MiwgNDUsIDc5LCA3MCwgMTk4LCA4NCwgNjksIDY1LCA2NywgODUsIDIwOCwgODQsIDY5LCA0NSwgODUsIAorICAgIDEyOCwgODQsIDY5LCA0NSwgNTAsIDEyOCwgODQsIDY3LCA3MiwgNjksIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgCisgICAgNjksIDcyLCA2OSwgMjAwLCA4NCwgNjcsIDcyLCA2OSwgNzIsIDEyOCwgODQsIDY3LCA3MiwgNjksIDIwMCwgODQsIDY3LCAKKyAgICA3MiwgNjksIDEyOCwgODQsIDE5NSwgODQsIDY1LCA4OSwgMTI4LCA4NCwgNjUsIDg4LCA3MywgMTI4LCA4NCwgNjUsIDg4LCAKKyAgICAxMjgsIDg0LCA2NSwgODcsIDY5LCA3NiwgNzYsIDY5LCA3NywgNjksIDIxMiwgODQsIDY1LCA4NywgNjUsIDEyOCwgODQsIAorICAgIDY1LCA4NywgMTI4LCA4NCwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODQsIDY1LCA4NiwgMTI4LCA4NCwgCisgICAgNjUsIDIxNCwgODQsIDY1LCA4NSwgODIsIDg1LCA4MywgMTI4LCA4NCwgNjUsIDg1LCA3NywgMTI4LCA4NCwgNjUsIDIxMywgCisgICAgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgNzYsIDEyOCwgODQsIDY1LCA4NCwgODcsIDY5LCA2OSwgMjA0LCA4NCwgNjUsIDg0LCAKKyAgICA4NCwgNzksIDc5LCA2OSwgMTk2LCA4NCwgNjUsIDg0LCAxMjgsIDg0LCA2NSwgODMsIDEyOCwgODQsIDY1LCA4MiwgODUsIAorICAgIDc4LCA3MSwgMTI4LCA4NCwgNjUsIDgyLCA4NCwgNjUsIDgyLCA0NSwgNTAsIDEyOCwgODQsIDY1LCA4MiwgODQsIDY1LCA4MiwgCisgICAgMTI4LCA4NCwgNjUsIDgyLCA3MSwgNjksIDg0LCAxMjgsIDg0LCA2NSwgODEsIDEyOCwgODQsIDY1LCA4MCwgNjksIDgyLCAKKyAgICAxMjgsIDg0LCA2NSwgODAsIDE5NywgODQsIDY1LCA4MCwgMTI4LCA4NCwgNjUsIDc5LCAxMjgsIDg0LCA2NSwgNzgsIDc4LCAKKyAgICA2OSwgMTk2LCA4NCwgNjUsIDc4LCA3MSwgNjksIDgyLCA3MywgNzgsIDY5LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIAorICAgIDg0LCAxMjgsIDg0LCA2NSwgNzgsIDcxLCA2OSwgNzgsIDIxMiwgODQsIDY1LCA3OCwgMTk5LCA4NCwgNjUsIDc4LCA2NSwgCisgICAgNjYsIDY1LCA4NCwgMTkzLCA4NCwgNjUsIDc4LCAxMjgsIDg0LCA2NSwgNzcsIDczLCA3OCwgNzEsIDEyOCwgODQsIDY1LCAKKyAgICA3NywgMTI4LCA4NCwgNjUsIDc2LCA3NiwgMTI4LCA4NCwgNjUsIDc2LCAyMDQsIDg0LCA2NSwgNzYsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODQsIDY1LCA3NiwgNzMsIDc4LCAxOTksIDg0LCA2NSwgNzYsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDg0LCA2NSwgCisgICAgNzYsIDY5LCA3OCwgMjEyLCA4NCwgNjUsIDc1LCA4MiwgMjAxLCA4NCwgNjUsIDc1LCA3MiwgNjUsIDc2LCA3NiwgODUsIDgzLCAKKyAgICAxMjgsIDg0LCA2NSwgNzUsIDY5LCAxMjgsIDg0LCA2NSwgNzUsIDUyLCAxMjgsIDg0LCA2NSwgNzUsIDE4MCwgODQsIDY1LCAKKyAgICA3NSwgMTI4LCA4NCwgNjUsIDczLCA4MywgODksIDc5LCA4NSwgMTI4LCA4NCwgNjUsIDczLCA3NiwgNzYsIDY5LCA4MywgCisgICAgMjExLCA4NCwgNjUsIDczLCA3NiwgMTI4LCA4NCwgNjUsIDczLCAyMDQsIDg0LCA2NSwgNzIsIDEyOCwgODQsIDY1LCAyMDAsIAorICAgIDg0LCA2NSwgNzEsIDY2LCA2NSwgNzgsIDg3LCAxOTMsIDg0LCA2NSwgNzEsIDY1LCA3NiwgNzksIDE5OSwgODQsIDY1LCA3MSwgCisgICAgMTI4LCA4NCwgNjUsIDY5LCAyMDYsIDg0LCA2NSwgNjcsIDc5LCAxMjgsIDg0LCA2NSwgNjcsIDc1LCAxMjgsIDg0LCA2NSwgCisgICAgNjcsIDIwMywgODQsIDY1LCA2NiwgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODQsIDY1LCA2NiwgODUsIDc2LCAKKyAgICA2NSwgODQsIDczLCA3OSwgMjA2LCA4NCwgNjUsIDY2LCA4MywgMTI4LCA4NCwgNjUsIDY2LCA3NiwgNjksIDEyOCwgODQsIAorICAgIDY1LCA2NiwgNzYsIDE5NywgODQsIDY1LCA2NiwgMTI4LCA4NCwgNjUsIDE5NCwgODQsIDY1LCA2NSwgODMsIDcyLCA2NSwgCisgICAgNjksIDEyOCwgODQsIDY1LCA2NSwgODEsIDEyOCwgODQsIDY1LCA2NSwgNzcsIDEyOCwgODQsIDY1LCA2NSwgNzYsIDg1LCAKKyAgICA3NCwgMTkzLCA4NCwgNjUsIDY1LCA3MywgMTI4LCA4NCwgNjUsIDY1LCA3MCwgMTI4LCA4NCwgNjUsIDUwLCAxMjgsIDg0LCAKKyAgICA2NSwgNDUsIDgyLCA3OSwgNzYsIDEyOCwgODQsIDY1LCA0NSwgNTAsIDEyOCwgODQsIDQ4LCA1MSwgNTQsIDEyOCwgODQsIAorICAgIDQ4LCA1MSwgNTMsIDEyOCwgODQsIDQ4LCA1MSwgNTIsIDEyOCwgODQsIDQ4LCA1MSwgNTEsIDY1LCAxMjgsIDg0LCA0OCwgCisgICAgNTEsIDUxLCAxMjgsIDg0LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA4NCwgNDgsIDUxLCA1MCwgMTI4LCA4NCwgNDgsIDUxLCAKKyAgICA0OSwgMTI4LCA4NCwgNDgsIDUxLCA0OCwgMTI4LCA4NCwgNDgsIDUwLCA1NywgMTI4LCA4NCwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA4NCwgNDgsIDUwLCA1NSwgMTI4LCA4NCwgNDgsIDUwLCA1NCwgMTI4LCA4NCwgNDgsIDUwLCA1MywgMTI4LCA4NCwgNDgsIAorICAgIDUwLCA1MiwgMTI4LCA4NCwgNDgsIDUwLCA1MSwgMTI4LCA4NCwgNDgsIDUwLCA1MCwgMTI4LCA4NCwgNDgsIDUwLCA0OSwgCisgICAgMTI4LCA4NCwgNDgsIDUwLCA0OCwgMTI4LCA4NCwgNDgsIDQ5LCA1NywgMTI4LCA4NCwgNDgsIDQ5LCA1NiwgMTI4LCA4NCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA4NCwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODQsIDQ4LCA0OSwgNTQsIDEyOCwgODQsIDQ4LCAKKyAgICA0OSwgNTMsIDEyOCwgODQsIDQ4LCA0OSwgNTIsIDEyOCwgODQsIDQ4LCA0OSwgNTEsIDEyOCwgODQsIDQ4LCA0OSwgNTAsIAorICAgIDEyOCwgODQsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDg0LCA0OCwgNDksIDQ5LCAxMjgsIDg0LCA0OCwgNDksIDQ4LCAxMjgsIAorICAgIDg0LCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1NywgMTI4LCA4NCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgCisgICAgODQsIDQ4LCA0OCwgNTYsIDEyOCwgODQsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDg0LCA0OCwgNDgsIDU1LCAxMjgsIDg0LCAKKyAgICA0OCwgNDgsIDU0LCAxMjgsIDg0LCA0OCwgNDgsIDUzLCAxMjgsIDg0LCA0OCwgNDgsIDUyLCAxMjgsIDg0LCA0OCwgNDgsIAorICAgIDUxLCA2NSwgMTI4LCA4NCwgNDgsIDQ4LCA1MSwgMTI4LCA4NCwgNDgsIDQ4LCA1MCwgMTI4LCA4NCwgNDgsIDQ4LCA0OSwgCisgICAgMTI4LCA4NCwgNDUsIDgzLCA3MiwgNzMsIDgyLCA4NCwgMTI4LCA4MywgOTAsIDkwLCAxMjgsIDgzLCA5MCwgODcsIDcxLCAKKyAgICAxMjgsIDgzLCA5MCwgODcsIDY1LCAxMjgsIDgzLCA5MCwgODUsIDEyOCwgODMsIDkwLCA3OSwgMTI4LCA4MywgOTAsIDczLCAKKyAgICAxMjgsIDgzLCA5MCwgNjksIDY5LCAxMjgsIDgzLCA5MCwgNjksIDEyOCwgODMsIDkwLCA2NSwgNjUsIDEyOCwgODMsIDkwLCAKKyAgICA2NSwgMTI4LCA4MywgOTAsIDEyOCwgODMsIDg5LCA4OCwgMTI4LCA4MywgODksIDg0LCAxMjgsIDgzLCA4OSwgODMsIDg0LCAKKyAgICA2OSwgMjA1LCA4MywgODksIDgyLCA4OCwgMTI4LCA4MywgODksIDgyLCA3NywgNjUsIDg0LCA3MywgNzUsIDczLCAxMjgsIAorICAgIDgzLCA4OSwgODIsIDc3LCA2NSwgMTI4LCA4MywgODksIDgyLCA3MywgNzgsIDcxLCA2OSwgMTI4LCA4MywgODksIDgyLCA3MywgCisgICAgNjUsIDE5NSwgODMsIDg5LCA4MiwgMTI4LCA4MywgODksIDgwLCAxMjgsIDgzLCA4OSwgNzksIDg1LCA4NywgNjUsIDEyOCwgCisgICAgODMsIDg5LCA3OCwgNjksIDg2LCA3NywgNjUsIDEyOCwgODMsIDg5LCA3OCwgNjgsIDY5LCA4MywgNzcsIDc5LCAyMTEsIDgzLCAKKyAgICA4OSwgNzgsIDY3LCA3MiwgODIsIDc5LCA3OCwgNzksIDg1LCAyMTEsIDgzLCA4OSwgNzgsIDY1LCA3MSwgNzksIDcxLCA4NSwgCisgICAgNjksIDEyOCwgODMsIDg5LCA3OCwgNjUsIDcxLCA3NywgMTkzLCA4MywgODksIDc4LCA2NSwgNzAsIDczLCAxMjgsIDgzLCAKKyAgICA4OSwgNzgsIDEyOCwgODMsIDg5LCA3NywgNzcsIDY5LCA4NCwgODIsIDg5LCAxMjgsIDgzLCA4OSwgNzcsIDc3LCA2OSwgODQsIAorICAgIDgyLCA3MywgMTk1LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA4MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDU2LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIAorICAgIDUzLCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTMsIDUxLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgCisgICAgNzYsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUzLCA0OSwgMTI4LCA4MywgODksIDc3LCAKKyAgICA2NiwgNzksIDc2LCA0NSwgNTMsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MywgMTI4LCA4MywgODksIAorICAgIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTYsIDEyOCwgCisgICAgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUyLCA1NSwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIAorICAgIDUzLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgCisgICAgNDUsIDUyLCA1MCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTIsIDQ4LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCAKKyAgICA3OSwgNzYsIDQ1LCA1MiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU3LCAxMjgsIDgzLCA4OSwgNzcsIAorICAgIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTYsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA1NSwgMTI4LCA4MywgCisgICAgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTEsIDU0LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MSwgNTAsIAorICAgIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgCisgICAgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1NywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCAKKyAgICA0NSwgNTAsIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDg5LCA3NywgNjYsIAorICAgIDc5LCA3NiwgNDUsIDUwLCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDUyLCAxMjgsIDgzLCA4OSwgCisgICAgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCA1MCwgMTI4LCAKKyAgICA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNTAsIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA1MCwgCisgICAgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDUwLCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNTcsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1NiwgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIAorICAgIDc2LCA0NSwgNDksIDU1LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIDg5LCA3NywgCisgICAgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDUyLCAxMjgsIDgzLCAKKyAgICA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCA1MCwgCisgICAgMTI4LCA4MywgODksIDc3LCA2NiwgNzksIDc2LCA0NSwgNDksIDQ5LCAxMjgsIDgzLCA4OSwgNzcsIDY2LCA3OSwgNzYsIDQ1LCAKKyAgICA0OSwgNDgsIDEyOCwgODMsIDg5LCA3NywgNjYsIDc5LCA3NiwgNDUsIDQ5LCAxMjgsIDgzLCA4OSwgNzYsIDc5LCA4NCwgCisgICAgMjAxLCA4MywgODksIDEyOCwgODMsIDg3LCA5MCwgMTI4LCA4MywgODcsIDg1LCA3OCwgMTk5LCA4MywgODcsIDc5LCA4MiwgCisgICAgNjgsIDgzLCAxMjgsIDgzLCA4NywgNzksIDgyLCA2OCwgMTI4LCA4MywgODcsIDc5LCA3OSwgMTI4LCA4MywgODcsIDc5LCAKKyAgICAxMjgsIDgzLCA4NywgNzMsIDgyLCAyMDQsIDgzLCA4NywgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA4MywgODcsIAorICAgIDczLCA3NywgNzcsIDY5LCA4MiwgMTI4LCA4MywgODcsIDczLCA3MywgMTI4LCA4MywgODcsIDczLCAxMjgsIDgzLCA4NywgCisgICAgNzEsIDEyOCwgODMsIDg3LCA2OSwgNjksIDg0LCAxMjgsIDgzLCA4NywgNjksIDY5LCAyMTIsIDgzLCA4NywgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA4MywgODcsIDY5LCA2NSwgMjEyLCA4MywgODcsIDY1LCA4MywgMjAwLCA4MywgODcsIDY1LCA4MCwgODAsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDg3LCAxMjgsIDgzLCA4NiwgNjUsIDgzLCA4NCwgCisgICAgMjAxLCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCA2NSwgMTI4LCA4MywgODYsIDY1LCA4MiwgNzMsIDg0LCAxOTMsIDgzLCAKKyAgICA4NSwgODgsIDEyOCwgODMsIDg1LCA4NSwgMTI4LCA4MywgODUsIDg0LCA4MiwgMTkzLCA4MywgODUsIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgODMsIDgwLCA2OSwgNzgsIDgzLCA3MywgNzksIDIwNiwgODMsIDg1LCA4MywgNzIsIDczLCAxMjgsIDgzLCA4NSwgODIsIAorICAgIDg5LCA2NSwgMTI4LCA4MywgODUsIDgyLCA4OCwgMTI4LCA4MywgODUsIDgyLCA4MiwgNzksIDg1LCA3OCwgNjgsIDEyOCwgCisgICAgODMsIDg1LCA4MiwgODIsIDc5LCA4NSwgNzgsIDE5NiwgODMsIDg1LCA4MiwgNzAsIDY5LCA4MiwgMTI4LCA4MywgODUsIDgyLCAKKyAgICA3MCwgNjUsIDY3LCAxOTcsIDgzLCA4NSwgODIsIDY5LCAxMjgsIDgzLCA4NSwgODIsIDY1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDg1LCA4MiwgNTcsIDEyOCwgODMsIDg1LCA4MiwgMTI4LCA4MywgODUsIDIxMCwgODMsIDg1LCA4MCwgODIsIDY1LCA3NiwgCisgICAgNzMsIDc4LCA2OSwgNjUsIDIxMCwgODMsIDg1LCA4MCwgNjksIDgyLCA4NiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDgwLCAKKyAgICA2OSwgODIsIDgzLCA2OSwgODQsIDEyOCwgODMsIDg1LCA4MCwgNjksIDgyLCA4MywgNjksIDIxMiwgODMsIDg1LCA4MCwgNjksIAorICAgIDgyLCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA4MCwgNjksIDgyLCA3MywgNzcsIDgwLCA3OSwgODMsIDY5LCAKKyAgICAxOTYsIDgzLCA4NSwgODAsIDY5LCA4MiwgNzAsIDczLCA4OCwgNjksIDE5NiwgODMsIDg1LCA4MCwgNjksIDIxMCwgODMsIAorICAgIDg1LCA4MCwgMTI4LCA4MywgODUsIDc5LCA4OCwgMTI4LCA4MywgODUsIDc5LCA4MCwgMTI4LCA4MywgODUsIDc5LCAxMjgsIAorICAgIDgzLCA4NSwgNzgsIDgzLCA2OSwgMjEyLCA4MywgODUsIDc4LCA4MiwgNzMsIDgzLCA2OSwgMTI4LCA4MywgODUsIDc4LCA4MiwgCisgICAgNzMsIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDcxLCA3NiwgNjUsIDgzLCA4MywgNjksIDgzLCAxMjgsIDgzLCA4NSwgNzgsIDcxLCAKKyAgICAxMjgsIDgzLCA4NSwgNzgsIDcwLCA3NiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDg1LCA3OCwgNjgsIDY1LCA3OCwgNjksIAorICAgIDgzLCAxOTcsIDgzLCA4NSwgNzgsIDEyOCwgODMsIDg1LCAyMDYsIDgzLCA4NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDg1LCA3NywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDc3LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgCisgICAgODMsIDg1LCA3NywgNjUsIDgzLCA3MiwgMTI4LCA4MywgODUsIDc3LCAxMjgsIDgzLCA4NSwgNzYsIDcwLCA4NSwgODIsIAorICAgIDEyOCwgODMsIDg1LCA3NSwgODUsIDc4LCAxMjgsIDgzLCA4NSwgNzUsIDg1LCAyMDYsIDgzLCA4NSwgNzUsIDg1LCAxMjgsIAorICAgIDgzLCA4NSwgNzUsIDIxMywgODMsIDg1LCA3MywgODQsIDY1LCA2NiwgNzYsIDY5LCAxMjgsIDgzLCA4NSwgNzMsIDg0LCAKKyAgICAxMjgsIDgzLCA4NSwgNzMsIDIxMiwgODMsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDgzLCA4NSwgNjksIDEyOCwgODMsIDg1LCAKKyAgICA2OCwgNTAsIDEyOCwgODMsIDg1LCA2OCwgMTI4LCA4MywgODUsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDgzLCA4NSwgNjcsIAorICAgIDc1LCA2OSwgNjgsIDEyOCwgODMsIDg1LCA2NywgMjAzLCA4MywgODUsIDY3LCA2NywgNjksIDY5LCA2OCwgODMsIDEyOCwgCisgICAgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDIxMSwgODMsIDg1LCA2NywgNjcsIDY5LCA2OSwgNjgsIDEyOCwgODMsIDg1LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTk2LCA4MywgODUsIDY2LCA4NSwgNzgsIDczLCA4NCwgMTI4LCA4MywgODUsIDY2LCA4MywgODQsIAorICAgIDczLCA4NCwgODUsIDg0LCA3MywgNzksIDIwNiwgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgNjksIDEyOCwgCisgICAgODMsIDg1LCA2NiwgODMsIDg0LCA3MywgODQsIDg1LCA4NCwgMTk3LCA4MywgODUsIDY2LCA4MywgNjksIDg0LCAxMjgsIDgzLCAKKyAgICA4NSwgNjYsIDgzLCA2OSwgMjEyLCA4MywgODUsIDY2LCA4MywgNjcsIDgyLCA3MywgODAsIDIxMiwgODMsIDg1LCA2NiwgODAsIAorICAgIDg1LCA3OCwgNjcsIDg0LCA3MywgODMsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODUsIDY2LCA3NiwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCA2OSwgNDUsIDUwLCAxMjgsIDgzLCA4NSwgCisgICAgNjYsIDc2LCA3MywgNzcsIDY1LCA4NCwgNjksIDEyOCwgODMsIDg1LCA2NiwgNzYsIDczLCA3NywgNjUsIDg0LCAxOTcsIDgzLCAKKyAgICA4NSwgNjYsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA4MywgODUsIDY2LCA3NCwgNjksIDY3LCA4NCwgMTI4LCA4MywgODUsIAorICAgIDY2LCA3MywgODQsIDc5LCAxMjgsIDgzLCA4NSwgNjYsIDcxLCA4MiwgNzksIDg1LCA4MCwgMTI4LCA4MywgODUsIDY2LCA3MSwgCisgICAgODIsIDc5LCA4NSwgMjA4LCA4MywgODUsIDY2LCAxMjgsIDgzLCA4NSwgNjUsIDc3LCAxMjgsIDgzLCA4NSwgNjUsIDY5LCAKKyAgICA4NCwgMTI4LCA4MywgODUsIDY1LCA2OSwgNzgsIDEyOCwgODMsIDg1LCA2NSwgNjksIDEyOCwgODMsIDg1LCA2NSwgNjYsIAorICAgIDEyOCwgODMsIDg1LCA2NSwgMTI4LCA4MywgMjEzLCA4MywgODQsIDg4LCAxMjgsIDgzLCA4NCwgODcsIDY1LCAxMjgsIDgzLCAKKyAgICA4NCwgODUsIDcwLCA3MCwgNjksIDE5NiwgODMsIDg0LCA4NSwgNjgsIDg5LCAxMjgsIDgzLCA4NCwgODUsIDY4LCA3MywgCisgICAgMjA3LCA4MywgODQsIDg1LCA2NywgNzUsIDQ1LCA3OSwgODUsIDIxMiwgODMsIDg0LCA4MywgMTI4LCA4MywgODQsIDgyLCAKKyAgICA3OSwgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgODMsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgCisgICAgMjExLCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTcsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDU2LCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1NSwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTQsIAorICAgIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUzLCAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNTEsIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIDUwLCAKKyAgICAxMjgsIDgzLCA4NCwgODIsIDc5LCA3NSwgNjksIDQ1LCA0OSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCA2OSwgNDUsIAorICAgIDQ5LCA0OCwgMTI4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCA0NSwgNDksIDEyOCwgODMsIDg0LCA4MiwgNzksIDc1LCAKKyAgICAxOTcsIDgzLCA4NCwgODIsIDczLCA4MCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA4MywgODQsIAorICAgIDgyLCA3MywgNzgsIDE5OSwgODMsIDg0LCA4MiwgNzMsIDc1LCA2OSwgODQsIDcyLCA4MiwgNzksIDg1LCA3MSwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNzMsIDc1LCAxOTcsIDgzLCA4NCwgODIsIDczLCA2OCwgNjksIDEyOCwgODMsIDg0LCA4MiwgNzMsIDY3LCAKKyAgICA4NCwgNzYsIDIxNywgODMsIDg0LCA4MiwgNjksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDgzLCA4NCwgODIsIDY5LCA4NCwgNjcsIAorICAgIDcyLCAxMjgsIDgzLCA4NCwgODIsIDY5LCA4MywgMjExLCA4MywgODQsIDgyLCA2OSwgNzgsIDcxLCA4NCwgNzIsIDEyOCwgCisgICAgODMsIDg0LCA4MiwgNjksIDY1LCA3NywgNjksIDgyLCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NywgNjYsIDY5LCA4MiwgODIsIAorICAgIDg5LCAxMjgsIDgzLCA4NCwgODIsIDY1LCA4NCwgODUsIDc3LCA0NSwgNTAsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgCisgICAgNzcsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDg0LCA4NSwgMjA1LCA4MywgODQsIDgyLCA2NSwgODQsIDczLCA2NSwgMjA2LCAKKyAgICA4MywgODQsIDgyLCA2NSwgNzMsIDc4LCA2OSwgODIsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCA3MSwgNzIsIDg0LCA3OCwgCisgICAgNjksIDgzLCA4MywgMTI4LCA4MywgODQsIDgyLCA2NSwgNzMsIDcxLCA3MiwgODQsIDEyOCwgODMsIDg0LCA4MiwgNjUsIDczLCAKKyAgICA3MSwgNzIsIDIxMiwgODMsIDg0LCA4MiwgNjUsIDczLCA3MCwgMTI4LCA4MywgODQsIDgyLCA2NSwgNzEsIDcxLCA3MywgODMsIAorICAgIDc3LCA2NSwgODQsIDY1LCAxMjgsIDgzLCA4NCwgNzksIDg2LCA2OSwgMTI4LCA4MywgODQsIDc5LCA4MiwgNjksIDEyOCwgCisgICAgODMsIDg0LCA3OSwgODAsIDg3LCA2NSwgODQsIDY3LCA3MiwgMTI4LCA4MywgODQsIDc5LCA4MCwgODAsIDczLCA3OCwgNzEsIAorICAgIDEyOCwgODMsIDg0LCA3OSwgODAsIDgwLCA2NSwgNzEsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDgwLCAxMjgsIDgzLCA4NCwgCisgICAgNzksIDIwOCwgODMsIDg0LCA3OSwgNzgsIDY5LCAxMjgsIDgzLCA4NCwgNzksIDY3LCA3NSwgMTI4LCA4MywgODQsIDc5LCAKKyAgICA2NywgMjAzLCA4MywgODQsIDczLCA4MiwgODIsIDg1LCAyMDgsIDgzLCA4NCwgNzMsIDc3LCA3NywgNjksIDEyOCwgODMsIAorICAgIDg0LCA3MywgNzYsIDIwNCwgODMsIDg0LCA3MywgNzYsIDE5NywgODMsIDg0LCA3MywgNzEsIDc3LCA2NSwgMTI4LCA4MywgCisgICAgODQsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA4MywgODQsIDczLCA2NywgMjAzLCA4MywgODQsIDY5LCA4MiwgNjksIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjksIDgwLCAxMjgsIDgzLCA4NCwgNjksIDc4LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgCisgICAgMTk1LCA4MywgODQsIDY5LCA3NywgMTI4LCA4MywgODQsIDY5LCA2NSwgNzcsIDczLCA3OCwgMTk5LCA4MywgODQsIDY5LCAKKyAgICA2NSwgNzcsIDEyOCwgODMsIDg0LCA2OSwgNjUsIDIwNSwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgODUsIDEyOCwgODMsIAorICAgIDg0LCA2NSwgODYsIDgyLCA3OSwgODMsIDEyOCwgODMsIDg0LCA2NSwgODYsIDgyLCA3OSwgMjExLCA4MywgODQsIDY1LCA4NSwgCisgICAgODIsIDc5LCA4MywgMTI4LCA4MywgODQsIDY1LCA4NCwgODUsIDE5NywgODMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCA4MiwgODMsIDEyOCwgODMsIDg0LCA2NSwgODQsIDY5LCAxMjgsIDgzLCA4NCwgCisgICAgNjUsIDgyLCAyMTIsIDgzLCA4NCwgNjUsIDgyLCA4MywgMTI4LCA4MywgODQsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDgyLCA3NSwgMTI4LCA4MywgODQsIDY1LCA4MiwgMTI4LCA4MywgODQsIDY1LCAyMTAsIDgzLCA4NCwgNjUsIAorICAgIDc4LCA2OCwgODMsIDg0LCA3MywgNzYsIDc2LCAxMjgsIDgzLCA4NCwgNjUsIDc4LCA2OCwgNjUsIDgyLCAxOTYsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA2OCwgMTI4LCA4MywgODQsIDY1LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3NywgODAsIDY5LCAxOTYsIDgzLCAKKyAgICA4NCwgNjUsIDc2LCA3NiwgNzMsIDc5LCA3OCwgMTI4LCA4MywgODQsIDY1LCA3MCwgNzAsIDEyOCwgODMsIDg0LCA2NSwgNzAsIAorICAgIDE5OCwgODMsIDg0LCA2NSwgNjgsIDczLCA4NSwgNzcsIDEyOCwgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAKKyAgICAxMjgsIDgzLCA4NCwgNjUsIDY3LCA2NywgNjUsIDg0LCA3MywgODMsIDgzLCA3MywgNzcsIDc5LCAxMjgsIDgzLCA4NCwgNTAsIAorICAgIDEyOCwgODMsIDgzLCA4OSwgODgsIDEyOCwgODMsIDgzLCA4OSwgODQsIDEyOCwgODMsIDgzLCA4OSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA4MywgODksIDgyLCAxMjgsIDgzLCA4MywgODksIDgwLCAxMjgsIDgzLCA4MywgODksIDEyOCwgODMsIDgzLCA4NSwgCisgICAgODgsIDEyOCwgODMsIDgzLCA4NSwgODUsIDEyOCwgODMsIDgzLCA4NSwgODQsIDEyOCwgODMsIDgzLCA4NSwgODAsIDEyOCwgCisgICAgODMsIDgzLCA3OSwgODgsIDEyOCwgODMsIDgzLCA3OSwgODQsIDEyOCwgODMsIDgzLCA3OSwgODAsIDEyOCwgODMsIDgzLCAKKyAgICA3OSwgNzksIDEyOCwgODMsIDgzLCA3OSwgMTI4LCA4MywgODMsIDczLCA4OCwgMTI4LCA4MywgODMsIDczLCA4NCwgMTI4LCAKKyAgICA4MywgODMsIDczLCA4MCwgMTI4LCA4MywgODMsIDczLCA3MywgMTI4LCA4MywgODMsIDczLCA2OSwgODgsIDEyOCwgODMsIAorICAgIDgzLCA3MywgNjksIDgwLCAxMjgsIDgzLCA4MywgNzMsIDY5LCAxMjgsIDgzLCA4MywgNzMsIDEyOCwgODMsIDgzLCA3MiwgCisgICAgNzMsIDc4LCAxMjgsIDgzLCA4MywgNzIsIDY5LCAxMjgsIDgzLCA4MywgNjksIDg4LCAxMjgsIDgzLCA4MywgNjksIDgwLCAKKyAgICAxMjgsIDgzLCA4MywgNjksIDY5LCAxMjgsIDgzLCA4MywgNjUsIDg4LCAxMjgsIDgzLCA4MywgNjUsIDg1LCAxMjgsIDgzLCAKKyAgICA4MywgNjUsIDg0LCAxMjgsIDgzLCA4MywgNjUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODksIDY5LCA3OSwgODIsIAorICAgIDczLCA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCAKKyAgICA4NCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDg0LCA3MywgNzUsIDY5LCA4NSwgCisgICAgODQsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MywgODMsIDY1LCA3OCwgCisgICAgNzEsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKKyAgICA3OSwgODMsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzIsIDczLCA2OSwgCisgICAgODUsIDc1LCA3MiwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA4MywgODMsIDY1LCAKKyAgICA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc4LCA3MywgNjksIDg1LCA3OCwgCisgICAgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgODMsIDY1LCA3OCwgNzEsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDgzLCA2NSwgNzgsIDcxLCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgCisgICAgNjcsIDEyOCwgODMsIDgzLCA2NSwgNzgsIDcxLCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgODMsIDgzLCA2NSwgNzMsIAorICAgIDEyOCwgODMsIDgzLCA2NSwgNjUsIDEyOCwgODMsIDgzLCA1MSwgMTI4LCA4MywgODMsIDUwLCAxMjgsIDgzLCA4MiwgMTI4LCAKKyAgICA4MywgODEsIDg1LCA3MywgODMsIDIwMCwgODMsIDgxLCA4NSwgNzMsIDgyLCA4MiwgNjksIDIwNCwgODMsIDgxLCA4NSwgNzMsIAorICAgIDcxLCA3MSwgNzYsIDE5NywgODMsIDgxLCA4NSwgNzMsIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY5LCA2OSwgOTAsIDY5LCA2OCwgCiAgICAgMTI4LCA4MywgODEsIDg1LCA2OSwgNjksIDkwLCAxOTcsIDgzLCA4MSwgODUsIDY1LCAyMTIsIDgzLCA4MSwgODUsIDY1LCAKICAgICA4MiwgNjksIDgzLCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIDY4LCAxMjgsIDgzLCA4MSwgODUsIDY1LCA4MiwgNjksIAogICAgIDEyOCwgODMsIDgwLCA4OSwgMTI4LCA4MywgODAsIDg3LCA2NSwgMTI4LCA4MywgODAsIDg1LCA3OCwgNzEsIDIxMSwgODMsIApAQCAtOTY5LDc3ICs5NzYsNzkgQEAKICAgICA2NSwgNzgsIDEyOCwgODMsIDc4LCA3OSwgODcsIDc3LCA2NSwgMjA2LCA4MywgNzgsIDc5LCA4NywgNzAsIDc2LCA2NSwgNzUsIAogICAgIDY5LCAxMjgsIDgzLCA3OCwgNzksIDg3LCA2NiwgNzksIDY1LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzgsIDc5LCA4NywgCiAgICAgMTI4LCA4MywgNzgsIDc5LCAyMTUsIDgzLCA3OCwgNzksIDg1LCA4NCwgMTI4LCA4MywgNzgsIDc5LCA4NSwgMjEyLCA4MywgCi0gICAgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCAKLSAgICA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIAotICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCAKLSAgICA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIAotICAgIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgCi0gICAgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCAKLSAgICA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIAotICAgIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgCi0gICAgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCAKLSAgICA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgCi0gICAgMTk5LCA4MywgNzYsIDY1LCA4NiwgNzksIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCAKLSAgICA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIAotICAgIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgCi0gICAgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCAKLSAgICA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIAotICAgIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIAotICAgIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAKLSAgICAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIAotICAgIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgCi0gICAgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCAKLSAgICA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgCi0gICAgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIAotICAgIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgCi0gICAgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAKLSAgICA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgCi0gICAgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIAotICAgIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgCi0gICAgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIAotICAgIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgCi0gICAgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIAotICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIAotICAgIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCAKLSAgICA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIAotICAgIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc1LCA3MywgNzgsIDcxLCAKLSAgICAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgMTI4LCA4MywgNzMsIAotICAgIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCA3OCwgNzEsIDc2LCAKLSAgICA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIAotICAgIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgNzMsIDc4LCA2OCwgCi0gICAgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCA4NSwgODMsIAotICAgIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIDgwLCA3NiwgCi0gICAgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgNzMsIDc2LCAKLSAgICA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCA3OCwgNzEsIAotICAgIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIDczLCA3NiwgCi0gICAgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAKLSAgICA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCA1MSwgCi0gICAgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCA3MywgCi0gICAgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIDczLCAKLSAgICA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIDgzLCAKLSAgICA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAxMjgsIAotICAgIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA2NSwgNzcsIDEyOCwgODMsIDczLCA2NywgNzUsIDc4LCA2OSwgCi0gICAgODMsIDgzLCAxMjgsIDgzLCA3MywgNjcsIDc1LCA3NiwgNjksIDEyOCwgODMsIDczLCA2NiwgMTk3LCA4MywgNzMsIDY1LCAKLSAgICAxMjgsIDgzLCAyMDEsIDgzLCA3MiwgODksIDg4LCAxMjgsIDgzLCA3MiwgODksIDg0LCAxMjgsIDgzLCA3MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MywgNzIsIDg5LCA4MiwgMTI4LCA4MywgNzIsIDg5LCA4MCwgMTI4LCA4MywgNzIsIDg5LCA2OSwgMTI4LCAKLSAgICA4MywgNzIsIDg5LCA2NSwgMTI4LCA4MywgNzIsIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA4OSwgMTI4LCA4MywgNzIsIAotICAgIDg3LCA3OSwgNzksIDEyOCwgODMsIDcyLCA4NywgNzksIDEyOCwgODMsIDcyLCA4NywgNzMsIDczLCAxMjgsIDgzLCA3MiwgCi0gICAgODcsIDczLCAxMjgsIDgzLCA3MiwgODcsIDY5LCAxMjgsIDgzLCA3MiwgODcsIDE5NywgODMsIDcyLCA4NywgNjUsIDY1LCAKLSAgICAxMjgsIDgzLCA3MiwgODcsIDY1LCAxMjgsIDgzLCA3MiwgODUsIDg4LCAxMjgsIDgzLCA3MiwgODUsIDg1LCAxMjgsIDgzLCAKLSAgICA3MiwgODUsIDg0LCA4NCwgNzYsIDY5LCA2NywgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgMTI4LCA4MywgNzIsIAotICAgIDg1LCA4MiwgODgsIDEyOCwgODMsIDcyLCA4NSwgODIsIDEyOCwgODMsIDcyLCA4NSwgODAsIDEyOCwgODMsIDcyLCA4NSwgCi0gICAgNzksIDg4LCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4MCwgMTI4LCA4MywgNzIsIDg1LCA3OSwgMTI4LCA4MywgNzIsIDg1LCAKLSAgICA3NywgMTI4LCA4MywgNzIsIDg1LCA3NiwgMTI4LCA4MywgNzIsIDg1LCA3MCwgNzAsIDc2LCAxOTcsIDgzLCA3MiwgODUsIAotICAgIDY5LCA4MSwgMTI4LCA4MywgNzIsIDg1LCA2OSwgNzgsIDgzLCA3MiwgODUsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDg1LCA2NiwgCi0gICAgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDgzLCA3MiwgODUsIDE3OCwgODMsIDcyLCA4NSwgMTI4LCA4MywgCi0gICAgNzIsIDIxMywgODMsIDcyLCA4NCwgNjUsIDgwLCA3MywgNjcsIDEyOCwgODMsIDcyLCA4NCwgNjUsIDEyOCwgODMsIDcyLCAKLSAgICA4MiwgNzMsIDc4LCA2OSwgMTI4LCA4MywgNzIsIDgyLCA3MywgNzcsIDgwLCAxMjgsIDgzLCA3MiwgODIsIDczLCA3MywgCi0gICAgMTI4LCA4MywgNzIsIDgyLCA3MywgMTI4LCA4MywgNzIsIDc5LCA4OSwgMTI4LCA4MywgNzIsIDc5LCA4OCwgMTI4LCA4MywgCi0gICAgNzIsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgzLCA3MiwgNzksIDg1LCA3NiwgNjgsIDY5LCA4MiwgNjksIDE5NiwgODMsIDcyLCAKLSAgICA3OSwgODUsIDc2LCA2OCwgNjksIDIxMCwgODMsIDcyLCA3OSwgODQsIDEyOCwgODMsIDcyLCA3OSwgODIsIDg0LCA4MywgCisgICAgNzgsIDY5LCA2OSwgOTAsIDczLCA3OCwgMTk5LCA4MywgNzgsIDY1LCAyMDgsIDgzLCA3OCwgNjUsIDc1LCA2OSwgMTI4LCAKKyAgICA4MywgNzgsIDY1LCA3NSwgMTk3LCA4MywgNzgsIDY1LCA3MywgNzYsIDEyOCwgODMsIDc4LCAxOTMsIDgzLCA3NywgNzksIAorICAgIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgODIsIDc1LCA3MywgNzgsIDE5OSwgODMsIDc3LCA3MywgNzYsIDczLCA3OCwgCisgICAgMTk5LCA4MywgNzcsIDczLCA3NiwgNjksIDEyOCwgODMsIDc3LCA3MywgNzYsIDE5NywgODMsIDc3LCA2OSwgNjUsIDgyLCAKKyAgICAxMjgsIDgzLCA3NywgNjUsIDgzLCAyMDAsIDgzLCA3NywgNjUsIDc2LCA3NiwgNjksIDIxMCwgODMsIDc3LCA2NSwgNzYsIAorICAgIDc2LCAxMjgsIDgzLCA3NiwgODUsIDgyLCAxMjgsIDgzLCA3NiwgNzksIDg3LCA3NiwgODksIDEyOCwgODMsIDc2LCA3OSwgCisgICAgODcsIDEyOCwgODMsIDc2LCA3OSwgMjE1LCA4MywgNzYsIDc5LCA4NiwgNzksIDEyOCwgODMsIDc2LCA3OSwgMjEyLCA4MywgCisgICAgNzYsIDc5LCA4MCwgNzMsIDc4LCAxOTksIDgzLCA3NiwgNzksIDgwLCA2OSwgMTI4LCA4MywgNzYsIDc5LCA2NSwgMjA2LCAKKyAgICA4MywgNzYsIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzYsIDIxNywgODMsIDc2LCA3MywgNjgsIAorICAgIDczLCA3OCwgNzEsIDEyOCwgODMsIDc2LCA3MywgNjgsIDY5LCA4MiwgMTI4LCA4MywgNzYsIDczLCA2NywgNjksIDEyOCwgCisgICAgODMsIDc2LCA3MywgNjcsIDE5NywgODMsIDc2LCA2OSwgODUsIDg0LCAyMDAsIDgzLCA3NiwgNjksIDY5LCA4MCwgMjE3LCAKKyAgICA4MywgNzYsIDY5LCA2OSwgODAsIDczLCA3OCwgMTk5LCA4MywgNzYsIDY5LCA2OSwgMjA4LCA4MywgNzYsIDY1LCA4NiwgNzksIAorICAgIDc4LCA3MywgMTk1LCA4MywgNzYsIDY1LCA4NiwgNjksIDEyOCwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDgzLCA3NiwgCisgICAgNjUsIDgzLCAyMDAsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgODMsIDc1LCA4NywgNjUsIDEyOCwgODMsIDc1LCAKKyAgICA4NywgMTI4LCA4MywgNzUsIDg1LCA3NiwgNzYsIDEyOCwgODMsIDc1LCA4NSwgNzYsIDIwNCwgODMsIDc1LCA3NiwgNzMsIAorICAgIDgyLCA3OSwgMjA2LCA4MywgNzUsIDczLCA3OCwgMTI4LCA4MywgNzUsIDczLCA2OSwgODIsIDEyOCwgODMsIDc1LCAyMDEsIAorICAgIDgzLCA3NSwgNjksIDg3LCA2OSwgMTk2LCA4MywgNzUsIDY1LCA4NCwgNjksIDEyOCwgODMsIDc1LCAxMjgsIDgzLCA3NCwgCisgICAgNjksIDEyOCwgODMsIDczLCA5MCwgMTk3LCA4MywgNzMsIDg4LCA4NCwgODksIDQ1LCA3MCwgNzksIDg1LCA4MiwgODQsIAorICAgIDIwMCwgODMsIDczLCA4OCwgODQsIDg5LCAxMjgsIDgzLCA3MywgODgsIDg0LCAyMTcsIDgzLCA3MywgODgsIDg0LCA3MiwgCisgICAgODMsIDEyOCwgODMsIDczLCA4OCwgODQsIDcyLCAyMTEsIDgzLCA3MywgODgsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDg4LCAKKyAgICA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCA4MywgMTI4LCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgODQsIDcyLCAxMjgsIAorICAgIDgzLCA3MywgODgsIDg0LCA2OSwgNjksIDc4LCA4NCwgMjAwLCA4MywgNzMsIDg4LCA4NCwgNjksIDY5LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDg4LCA4NCwgNjksIDY5LCAyMDYsIDgzLCA3MywgODgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCAKKyAgICA3MywgODgsIDQ1LCA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgODMsIDczLCA4OCwgNDUsIDgwLCA2OSwgODIsIDQ1LCA2OSwgCisgICAgMjA1LCA4MywgNzMsIDg4LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA4MywgNzMsIDIxNiwgODMsIDczLCA4NCwgNjksIDEyOCwgCisgICAgODMsIDczLCA4MywgNjUsIDEyOCwgODMsIDczLCA4MiwgNzMsIDc4LCA3MSwgODUsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCAKKyAgICA4NCwgNzIsIDczLCA2OSwgODUsIDg0LCA3MiwgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgCisgICAgODMsIDczLCA3OSwgODMsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgODMsIDczLCAKKyAgICA3OSwgODMsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgzLCA3MywgCisgICAgNzksIDgzLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgNjUsIAorICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc4LCA3MywgNjksIDg1LCA3OCwgMTI4LCA4MywgCisgICAgNzMsIDc5LCA4MywgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA3MiwgNzMsIAorICAgIDY5LCA4NSwgNzUsIDcyLCAxMjgsIDgzLCA3MywgNzksIDgzLCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCAKKyAgICA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODMsIAorICAgIDczLCA3OSwgODMsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzMsIDY5LCAKKyAgICA4NSwgNjcsIDEyOCwgODMsIDczLCA3OSwgODMsIDQ1LCA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA4MywgNzMsIAorICAgIDc5LCAyMTEsIDgzLCA3MywgNzgsIDg1LCA4MywgNzksIDczLCAxOTYsIDgzLCA3MywgNzgsIDc5LCA3NiwgNzksIDcxLCA3MywgCisgICAgNjcsIDY1LCAyMDQsIDgzLCA3MywgNzgsIDc4LCA4OSwgNzMsIDczLCA4OSwgNzIsIDY5LCAxMjgsIDgzLCA3MywgNzgsIDc1LCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDgzLCA3MywgNzgsIDcxLCA3NiwgNjksIDQ1LCA4MywgNzIsIDczLCA3MCwgODQsIDQ1LCA1MSwgCisgICAgMTI4LCA4MywgNzMsIDc4LCA3MSwgNzYsIDY5LCA0NSwgODMsIDcyLCA3MywgNzAsIDg0LCA0NSwgNTAsIDEyOCwgODMsIDczLCAKKyAgICA3OCwgNzEsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgODMsIDczLCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA4MywgNzMsIAorICAgIDc4LCA3MSwgNzYsIDE5NywgODMsIDczLCA3OCwgNzEsIDY1LCA2NSwgODQsIDEyOCwgODMsIDczLCA3OCwgMTk3LCA4MywgCisgICAgNzMsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDczLCAyMDYsIDgzLCA3MywgNzcsIDg1LCA3NiwgODQsIDY1LCA3OCwgNjksIDc5LCAKKyAgICA4NSwgODMsIDEyOCwgODMsIDczLCA3NywgODUsIDc2LCA4NCwgNjUsIDc4LCA2OSwgNzksIDg1LCAyMTEsIDgzLCA3MywgNzcsIAorICAgIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgODMsIDczLCA3NywgNzMsIDc2LCA2NSwgODIsIDEyOCwgODMsIDczLCA3NywgCisgICAgNzMsIDc2LCA2NSwgMjEwLCA4MywgNzMsIDc3LCA2NSwgNzgsIDgzLCA3MywgMjExLCA4MywgNzMsIDc3LCA2NSwgNzYsIDg1LCAKKyAgICA3OCwgNzEsIDg1LCAyMDYsIDgzLCA3MywgNzcsIDY1LCAxMjgsIDgzLCA3MywgNzYsIDg2LCA2OSwgODIsIDEyOCwgODMsIAorICAgIDczLCA3NiwgNzUsIDEyOCwgODMsIDczLCA3NiwgNzMsIDgxLCA4NSwgMTkzLCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgCisgICAgODQsIDg0LCA2OSwgMTI4LCA4MywgNzMsIDc2LCA3MiwgNzksIDg1LCA2OSwgODQsIDg0LCAxOTcsIDgzLCA3MywgNzYsIDY1LCAKKyAgICA1MSwgMTI4LCA4MywgNzMsIDc1LCA3MywgMTI4LCA4MywgNzMsIDc1LCA1MCwgMTI4LCA4MywgNzMsIDc1LCAxNzgsIDgzLCAKKyAgICA3MywgNzEsIDc4LCA4MywgMTI4LCA4MywgNzMsIDcxLCA3NywgNjUsIDEyOCwgODMsIDczLCA3MSwgNzcsIDE5MywgODMsIAorICAgIDczLCA3MSwgNjksIDIwNCwgODMsIDczLCA3MSwgNTIsIDEyOCwgODMsIDczLCA3MSwgMTgwLCA4MywgNzMsIDcxLCAxMjgsIAorICAgIDgzLCA3MywgNjksIDY5LCAxMjgsIDgzLCA3MywgNjgsIDY5LCA4NywgNjUsIDg5LCAyMTEsIDgzLCA3MywgNjgsIDY5LCAKKyAgICAxMjgsIDgzLCA3MywgNjgsIDE5NywgODMsIDczLCA2OCwgNjgsIDcyLCA3MywgMTI4LCA4MywgNzMsIDY4LCA2OCwgNzIsIAorICAgIDY1LCA3NywgMTI4LCA4MywgNzMsIDY3LCA3NSwgNzgsIDY5LCA4MywgODMsIDEyOCwgODMsIDczLCA2NywgNzUsIDc2LCA2OSwgCisgICAgMTI4LCA4MywgNzMsIDY2LCAxOTcsIDgzLCA3MywgNjUsIDEyOCwgODMsIDIwMSwgODMsIDcyLCA4OSwgODgsIDEyOCwgODMsIAorICAgIDcyLCA4OSwgODQsIDEyOCwgODMsIDcyLCA4OSwgODIsIDg4LCAxMjgsIDgzLCA3MiwgODksIDgyLCAxMjgsIDgzLCA3MiwgCisgICAgODksIDgwLCAxMjgsIDgzLCA3MiwgODksIDY5LCAxMjgsIDgzLCA3MiwgODksIDY1LCAxMjgsIDgzLCA3MiwgODksIDEyOCwgCisgICAgODMsIDcyLCA4NywgNzksIDg5LCAxMjgsIDgzLCA3MiwgODcsIDc5LCA3OSwgMTI4LCA4MywgNzIsIDg3LCA3OSwgMTI4LCAKKyAgICA4MywgNzIsIDg3LCA3MywgNzMsIDEyOCwgODMsIDcyLCA4NywgNzMsIDEyOCwgODMsIDcyLCA4NywgNjksIDEyOCwgODMsIAorICAgIDcyLCA4NywgMTk3LCA4MywgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODMsIDcyLCA4NywgNjUsIDEyOCwgODMsIDcyLCA4NiwgCisgICAgMTI4LCA4MywgNzIsIDg1LCA4OCwgMTI4LCA4MywgNzIsIDg1LCA4NSwgMTI4LCA4MywgNzIsIDg1LCA4NCwgODQsIDc2LCAKKyAgICA2OSwgNjcsIDc5LCA2NywgNzUsIDEyOCwgODMsIDcyLCA4NSwgODQsIDEyOCwgODMsIDcyLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgODUsIDgyLCAxMjgsIDgzLCA3MiwgODUsIDgwLCAxMjgsIDgzLCA3MiwgODUsIDc5LCA4OCwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA3OSwgODAsIDEyOCwgODMsIDcyLCA4NSwgNzksIDEyOCwgODMsIDcyLCA4NSwgNzcsIDEyOCwgODMsIDcyLCAKKyAgICA4NSwgNzYsIDEyOCwgODMsIDcyLCA4NSwgNzAsIDcwLCA3NiwgMTk3LCA4MywgNzIsIDg1LCA2OSwgODEsIDEyOCwgODMsIAorICAgIDcyLCA4NSwgNjksIDc4LCA4MywgNzIsIDg1LCA2OSwgODQsIDEyOCwgODMsIDcyLCA4NSwgNjYsIDg1LCA4MiwgMTI4LCA4MywgCisgICAgNzIsIDg1LCA1MCwgMTI4LCA4MywgNzIsIDg1LCAxNzgsIDgzLCA3MiwgODUsIDEyOCwgODMsIDcyLCAyMTMsIDgzLCA3MiwgCisgICAgODQsIDY1LCA4MCwgNzMsIDY3LCAxMjgsIDgzLCA3MiwgODQsIDY1LCAxMjgsIDgzLCA3MiwgODIsIDg1LCA3MSwgMTI4LCAKKyAgICA4MywgNzIsIDgyLCA3MywgNzgsIDY5LCAxMjgsIDgzLCA3MiwgODIsIDczLCA3NywgODAsIDEyOCwgODMsIDcyLCA4MiwgNzMsIAorICAgIDczLCAxMjgsIDgzLCA3MiwgODIsIDczLCAxMjgsIDgzLCA3MiwgNzksIDg5LCAxMjgsIDgzLCA3MiwgNzksIDg4LCAxMjgsIAorICAgIDgzLCA3MiwgNzksIDg3LCA2OSwgODIsIDEyOCwgODMsIDcyLCA3OSwgODUsIDc2LCA2OCwgNjksIDgyLCA2OSwgMTk2LCA4MywgCisgICAgNzIsIDc5LCA4NSwgNzYsIDY4LCA2OSwgMjEwLCA4MywgNzIsIDc5LCA4NCwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDgzLCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgMjExLCA4MywgNzIsIDc5LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5NiwgODMsIAogICAgIDcyLCA3OSwgODIsIDg0LCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA4MywgNzIsIDc5LCA4MiwgODQsIDY3LCA2NSwgNzUsIDY5LCAKICAgICAxMjgsIDgzLCA3MiwgNzksIDgyLCA4NCwgNDUsIDg0LCA4NywgNzMsIDcxLCA0NSwgODksIDgyLCAxMjgsIDgzLCA3MiwgNzksIApAQCAtMTA3Nyw1NDMgKzEwODYsNTQ4IEBACiAgICAgMTI4LCA4MywgNzIsIDY1LCA4OCwgMTI4LCA4MywgNzIsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgzLCAKICAgICA3MiwgNjUsIDg2LCA3MywgNjUsIDIwNiwgODMsIDcyLCA2NSwgODYsIDY5LCAxOTYsIDgzLCA3MiwgNjUsIDg1LCAxMjgsIAogICAgIDgzLCA3MiwgNjUsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA4NSwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjEzLCA4MywgCi0gICAgNzIsIDY1LCA4MiwgODAsIDEyOCwgODMsIDcyLCA2NSwgODIsIDIwOCwgODMsIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAxOTcsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA4MywgNzIsIDY1LCAyMDYsIDgzLCAKLSAgICA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIDcyLCA2OSwgNzYsIDY5LCA4NCwgCi0gICAgMTI4LCA4MywgNzIsIDY1LCA3NSwgODQsIDczLCAxMjgsIDgzLCA3MiwgNjUsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgzLCAKLSAgICA3MiwgNjUsIDc1LCA3MywgNzgsIDE5OSwgODMsIDcyLCA2NSwgNzUsIDEyOCwgODMsIDcyLCA2NSwgNzMsIDEyOCwgODMsIAotICAgIDcyLCA2NSwgNzAsIDg0LCAxMjgsIDgzLCA3MiwgNjUsIDcwLCAyMTIsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAKLSAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA4MywgNzIsIDY1LCA2OCwgNjksIDEyOCwgODMsIDcyLCA2NSwgNjgsIAotICAgIDY4LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDE5MywgODMsIDcyLCA2NSwgNjgsIDEyOCwgODMsIDcyLCA2NSwgCi0gICAgMTk2LCA4MywgNzIsIDY1LCA2NiwgNTQsIDEyOCwgODMsIDcyLCA2NSwgNjUsIDEyOCwgODMsIDcyLCA2NSwgNTQsIDEyOCwgCi0gICAgODMsIDcyLCA2NSwgMTgyLCA4MywgNzIsIDY1LCA1MSwgMTI4LCA4MywgNzIsIDY1LCAxNzksIDgzLCA3MSwgODIsIDE5MywgCi0gICAgODMsIDcxLCA3OSwgMjEwLCA4MywgNzEsIDY3LCAxMjgsIDgzLCA3MSwgNjUsIDIxNSwgODMsIDcxLCA2NSwgMTk0LCA4MywgCi0gICAgNzEsIDEyOCwgODMsIDY5LCA4OSwgNzUsIDEyOCwgODMsIDY5LCA4OCwgODQsIDg1LCA3NiwgMTkzLCA4MywgNjksIDg4LCAKLSAgICA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDg4LCA4NCwgNjUsIDc4LCAyMTEsIDgzLCA2OSwgODYsIDY5LCA4MiwgNjUsIAotICAgIDc4LCA2NywgNjksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgODksIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCA4NCwgCi0gICAgMjE3LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA3MiwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgMjA2LCA4MywgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIAotICAgIDczLCA4MiwgODQsIDg5LCAxMjgsIDgzLCA2OSwgODYsIDY5LCAyMDYsIDgzLCA2OSwgODUsIDg4LCAxMjgsIDgzLCA2OSwgCi0gICAgODUsIDc4LCA4OSwgNjUsIDc3LCAxMjgsIDgzLCA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgODMsIDY5LCA4NCwgNzAsIDc5LCAKLSAgICA3OCwgMTI4LCA4MywgNjksIDgzLCA4NCwgNjksIDgyLCA4NCwgNzMsIDg1LCAyMTEsIDgzLCA2OSwgODMsIDgxLCA4NSwgNzMsIAotICAgIDgxLCA4NSwgNjUsIDY4LCA4MiwgNjUsIDg0LCA2OSwgMTI4LCA4MywgNjksIDgzLCA2NSwgNzcsIDE5NywgODMsIDY5LCA4MiwgCi0gICAgODYsIDczLCA2NywgMTk3LCA4MywgNjksIDgyLCA3MywgNzAsIDgzLCAxMjgsIDgzLCA2OSwgODIsIDczLCA3MCwgMjExLCAKLSAgICA4MywgNjksIDgyLCA3MywgNzAsIDEyOCwgODMsIDY5LCA4MSwgODUsIDY5LCA3OCwgODQsIDczLCA2NSwgNzYsIDEyOCwgODMsIAotICAgIDY5LCA4MSwgODUsIDY5LCA3OCwgNjcsIDE5NywgODMsIDY5LCA4MCwgODQsIDg1LCA4MCwgNzYsIDE5NywgODMsIDY5LCA4MCwgCi0gICAgODQsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA4MywgNjksIDgwLCA2NSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDgzLCAKLSAgICA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgMjEwLCA4MywgNjksIDc4LCA4NCwgNzksIDEyOCwgODMsIDY5LCA3OCwgODQsIAotICAgIDczLCAxMjgsIDgzLCA2OSwgNzcsIDg1LCA3OCwgNjcsIDczLCAxOTMsIDgzLCA2OSwgNzcsIDc1LCA2NSwgODQsIDcyLCAKLSAgICAxMjgsIDgzLCA2OSwgNzcsIDc1LCAxMjgsIDgzLCA2OSwgNzcsIDczLCA4NiwgNzksIDg3LCA2OSwgMjA0LCA4MywgNjksIAotICAgIDc3LCA3MywgODMsIDc5LCA3MCwgMjEyLCA4MywgNjksIDc3LCA3MywgODMsIDY5LCA4OCwgODQsIDczLCA3NiwgNjksIDEyOCwgCi0gICAgODMsIDY5LCA3NywgNzMsIDc3LCA3MywgNzgsIDczLCA3NywgMTkzLCA4MywgNjksIDc3LCA3MywgNjgsIDczLCA4MiwgNjksIAotICAgIDY3LCAyMTIsIDgzLCA2OSwgNzcsIDczLCA2NywgNzksIDc2LCA3OSwgNzgsIDEyOCwgODMsIDY5LCA3NywgNzMsIDY3LCA3OSwgCi0gICAgNzYsIDc5LCAyMDYsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgODUsIDc2LCA2NSwgMjEwLCA4MywgNjksIDc3LCAKLSAgICA3MywgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDgzLCA2OSwgNzcsIDczLCA2NiwgODIsIDY5LCA4NiwgNzMsIDIxMSwgODMsIAotICAgIDY5LCA3NywgNzMsIDQ1LCA4NiwgNzksIDczLCA2NywgNjksIDE5NiwgODMsIDY5LCA3NiwgNzAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NywgNDksIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIAotICAgIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTcsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTQsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTEsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDgsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MywgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MCwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTQsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU1LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUyLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDQ5LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTcsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTQsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTEsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDgsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1NiwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MywgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTMsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTAsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDUwLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU0LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA1MCwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTAsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNTAsIDUxLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIAotICAgIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCAKLSAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNTAsIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCi0gICAgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDUwLCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NSwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAotICAgIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNTAsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKLSAgICA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDUwLCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MiwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNTAsIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU3LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKLSAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTYsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTAsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDU1LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAotICAgIDgyLCA0NSwgNDksIDU1LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUxLCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCi0gICAgNDksIDU0LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDU0LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIAotICAgIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCAKLSAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIAotICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKLSAgICA0NSwgNDksIDUzLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIAotICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgCi0gICAgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA1MiwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MiwgMTI4LCAKLSAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCi0gICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAotICAgIDUyLCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDgzLCA2OSwgCi0gICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTYsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA1MSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MiwgMTI4LCA4MywgNjksIAotICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKLSAgICA4MiwgNDUsIDQ5LCA1MSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OSwgCi0gICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKLSAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCi0gICAgNTAsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTYsIDEyOCwgODMsIDY5LCAKLSAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCi0gICAgODIsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTMsIAotICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgCi0gICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAotICAgIDQ5LCA1MCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OSwgMTI4LCA4MywgCi0gICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAotICAgIDc5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU3LCAKLSAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKLSAgICA0OSwgNDksIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTMsIDEyOCwgODMsIAotICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgCi0gICAgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCAKLSAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCi0gICAgNDUsIDQ5LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDgzLCAKLSAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNzksIDgyLCA0NSwgNDksIDQ4LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIAotICAgIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCi0gICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAotICAgIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCi0gICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKLSAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAotICAgIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDIxMCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCi0gICAgNjksIDE5NiwgODMsIDY5LCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MywgNjksIDczLCA4MywgNzcsIDE5MywgODMsIDY5LCAKLSAgICA3MiwgMTI4LCA4MywgNjksIDcxLCA3OSwgNzYsIDEyOCwgODMsIDY5LCA3MSwgNzgsIDc5LCAxMjgsIDgzLCA2OSwgNzEsIAotICAgIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjksIDg2LCAxMjgsIDgzLCA2OSwgNjksIDc4LCA4NSwgMTI4LCA4MywgCi0gICAgNjksIDY5LCA3OCwgMTI4LCA4MywgNjksIDY5LCAyMDYsIDgzLCA2OSwgNjksIDY4LCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA4MywgNjksIDY5LCA0NSwgNzgsIDc5LCA0NSwgNjksIDg2LCA3MywgMjA0LCA4MywgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIAotICAgIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgzLCA2OSwgNjcsIDg0LCA3MywgNzksIDIwNiwgODMsIDY5LCA2NywgCi0gICAgODIsIDY5LCA4NCwgMTI4LCA4MywgNjksIDY3LCA3OSwgNzgsIDY4LCAxMjgsIDgzLCA2OSwgNjcsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgODMsIDY5LCA2NiwgNjUsIDg0LCA2NiwgNjksIDczLCAyMTIsIDgzLCA2OSwgNjUsIDg0LCAxMjgsIDgzLCA2OSwgCi0gICAgNjUsIDc2LCAxMjgsIDgzLCA2OSwgNjUsIDcxLCA4NSwgNzYsIDIwNCwgODMsIDY4LCA3OSwgNzgsIDE5OSwgODMsIDY4LCAKLSAgICAxMjgsIDgzLCA2NywgODcsIDY1LCAxMjgsIDgzLCA2NywgODIsIDg1LCA4MCwgNzYsIDY5LCAxMjgsIDgzLCA2NywgODIsIAotICAgIDc5LCA3NiwgNzYsIDEyOCwgODMsIDY3LCA4MiwgNzMsIDgwLCA4NCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDc4LCAKLSAgICAxMjgsIDgzLCA2NywgODIsIDY5LCA2OSwgMjA2LCA4MywgNjcsIDgyLCA2OSwgNjUsIDc3LCA3MywgNzgsIDE5OSwgODMsIAotICAgIDY3LCA3OSwgODIsIDgwLCA3MywgODUsIDgzLCAxMjgsIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgCi0gICAgNjcsIDc5LCA4MiwgNjksIDEyOCwgODMsIDY3LCA3MywgODMsIDgzLCA3OSwgODIsIDgzLCAxMjgsIDgzLCA2NywgNzMsIAotICAgIDEyOCwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgzLCA2NywgNzIsIDg3LCAxOTMsIDgzLCA2NywgNzIsIDgyLCA3OSwgCi0gICAgNjksIDY4LCA2OSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCA3NiwgMTI4LCA4MywgNjcsIDcyLCA3OSwgNzksIAotICAgIDIwNCwgODMsIDY3LCA3MiwgNzksIDc2LCA2NSwgODIsIDEyOCwgODMsIDY3LCA3MiwgNjksIDc3LCAxOTMsIDgzLCA2NywgCi0gICAgNjksIDgwLCA4NCwgNjksIDIxMCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCA4MywgMTI4LCA4MywgNjcsIDY1LCAKLSAgICA3OCwgNjgsIDczLCA2NywgODUsIDIxMSwgODMsIDY3LCA2NSwgMjA2LCA4MywgNjcsIDY1LCA3NiwgNjksIDgzLCAxMjgsIAotICAgIDgzLCA2NiwgODUsIDE5NCwgODMsIDY2LCA4MiwgODUsIDIwNCwgODMsIDY1LCA4OSwgNzMsIDgzLCAyMDEsIDgzLCA2NSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgzLCA2NSwgODksIDEyOCwgODMsIDY1LCA4OCwgNzksIDgwLCA3MiwgNzksIDc4LCAKLSAgICA2OSwgMTI4LCA4MywgNjUsIDg4LCA3MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgODMsIDY1LCA4NywgNjUsIDc4LCAxMjgsIAotICAgIDgzLCA2NSwgODcsIDEyOCwgODMsIDY1LCA4NiwgNzksIDg1LCA4MiwgNzMsIDc4LCAxOTksIDgzLCA2NSwgODUsIDgyLCA2NSwgCi0gICAgODMsIDcyLCA4NCwgODIsIDE5MywgODMsIDY1LCA4NSwgNzMsIDc2LCAxMjgsIDgzLCA2NSwgODQsIDg1LCA4MiwgNzgsIAotICAgIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgNzgsIDc1LCA4NSwgODUsIDEyOCwgODMsIDY1LCA4NCwgNzUsIDY1LCA2NSwgCi0gICAgNzgsIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCA2OSwgMTI4LCA4MywgNjUsIDg0LCA2OSwgNzYsIDc2LCAKLSAgICA3MywgODQsIDE5NywgODMsIDY1LCA4NCwgNjcsIDcyLCA2OSwgNzYsIDEyOCwgODMsIDY1LCA4NCwgNjUsIDc4LCA3MSwgNjUsIAotICAgIDEyOCwgODMsIDY1LCA4MywgNzIsIDEyOCwgODMsIDY1LCA4MywgNjUsIDc1LCAxMjgsIDgzLCA2NSwgODIsIDczLCAxMjgsIAotICAgIDgzLCA2NSwgODIsIDE5MywgODMsIDY1LCA4MiwgMTI4LCA4MywgNjUsIDgxLCAxMjgsIDgzLCA2NSwgODAsIDY1LCAxMjgsIAotICAgIDgzLCA2NSwgNzgsIDg5LCA3OSwgNzksIDcxLCAxOTMsIDgzLCA2NSwgNzgsIDg5LCA2NSwgNzUsIDE5MywgODMsIDY1LCA3OCwgCi0gICAgODQsIDczLCA3MywgNzcsIDg1LCAxMjgsIDgzLCA2NSwgNzgsIDc4LCA4OSwgNjUsIDEyOCwgODMsIDY1LCA3OCwgNzEsIDY1LCAKLSAgICA1MCwgMTI4LCA4MywgNjUsIDc4LCA2OCwgNzIsIDIwMSwgODMsIDY1LCA3OCwgNjgsIDY1LCA3NiwgMTI4LCA4MywgNjUsIAotICAgIDc4LCA2NSwgNzIsIDEyOCwgODMsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDc3LCA4OSwgNzksIDIwMywgODMsIDY1LCA3NywgCi0gICAgODYsIDY1LCA4NCwgMTI4LCA4MywgNjUsIDc3LCA4MCwgNzMsIDEyOCwgODMsIDY1LCA3NywgODAsIDcyLCA2NSwgNzksIAotICAgIDEyOCwgODMsIDY1LCA3NywgNzUsIDY1LCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgNzIsIDEyOCwgODMsIDY1LCA3NywgCi0gICAgNjksIDc1LCAyMDAsIDgzLCA2NSwgNzcsIDY2LCA2NSwgMTI4LCA4MywgNjUsIDc3LCA2NSwgODIsIDczLCA4NCwgNjUsIAotICAgIDIwNiwgODMsIDY1LCA3NywgMTI4LCA4MywgNjUsIDc2LCA4NCwgNzMsIDgyLCA2OSwgMTI4LCA4MywgNjUsIDc2LCA4NCwgCi0gICAgNzMsIDc2LCA3NiwgNzksIDEyOCwgODMsIDY1LCA3NiwgODQsIDQ1LCA1MCwgMTI4LCA4MywgNjUsIDc2LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDc2LCAyMTIsIDgzLCA2NSwgNzYsIDc2LCA2NSwgNzYsIDc2LCA2NSwgNzIsIDc5LCAyMTMsIDgzLCA2NSwgNzYsIAotICAgIDc2LCAxOTMsIDgzLCA2NSwgNzYsIDY1LCAyMDUsIDgzLCA2NSwgNzYsIDY1LCAxMjgsIDgzLCA2NSwgNzYsIDQ1LCA2NSwgCi0gICAgNzcsIDc3LCA3OSwgNzgsIDczLCA2NSwgNjcsIDEyOCwgODMsIDY1LCA3NiwgMTI4LCA4MywgNjUsIDc1LCA3OSwgODQsIAotICAgIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCA3NSwgCi0gICAgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgMTI4LCAKLSAgICA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAxMjgsIAotICAgIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgMTI4LCA4MywgCi0gICAgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgNjksIDg0LCAKLSAgICAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAxMjgsIDgzLCAKLSAgICA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIDY1LCA3MywgCi0gICAgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgNDUsIDUwLCAKLSAgICAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAxMjgsIDgzLCAKLSAgICA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCA0OCwgNTIsIAotICAgIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIDU1LCAxMjgsIAotICAgIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgMTI4LCA4MywgCi0gICAgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgNDgsIDUxLCAKLSAgICA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCA1NiwgMTI4LCAKLSAgICA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIAotICAgIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgNTAsIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKLSAgICA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIDgzLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgNDksIDQ4LCAKLSAgICAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAxMjgsIDgzLCAKLSAgICA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCA4MywgNDgsIAotICAgIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIDQ4LCA0OCwgCi0gICAgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgNjUsIDgwLCAKLSAgICA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgODksIDgyLCAKLSAgICA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgODIsIDg3LCAKLSAgICA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAxMjgsIDgyLCAKLSAgICA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCA4NywgNjUsIAotICAgIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIDg1LCAxMjgsIAotICAgIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDg1LCA4MiwgCi0gICAgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgMTI4LCA4MiwgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgNzgsIDc5LCAKLSAgICA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAxMjgsIAotICAgIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIAotICAgIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgCi0gICAgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCAKLSAgICA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIAotICAgIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgCi0gICAgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCAKLSAgICA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIAotICAgIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgCi0gICAgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCAKLSAgICA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIAotICAgIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIAotICAgIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIAotICAgIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgCi0gICAgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgCi0gICAgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCAKLSAgICA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIAotICAgIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIAotICAgIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCAKLSAgICA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAKLSAgICAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIAotICAgIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgCi0gICAgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCAKLSAgICA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIAotICAgIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgCi0gICAgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgCi0gICAgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCAKLSAgICA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIAotICAgIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIAotICAgIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIAotICAgIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAKLSAgICAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDczLCA4MywgNzIsIAotICAgIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIDgyLCA3MywgODAsIDEyOCwgODIsIAotICAgIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgCi0gICAgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCA2NiwgNjUsIDEyOCwgODIsIDczLCAKLSAgICA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIDg2LCA2OSwgNjgsIDczLCAxOTUsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgNzEsIDcyLCA4NCwgNzIsIDY1LCAKLSAgICA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIDcwLCAyMTIsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDc5LCAKLSAgICA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIAotICAgIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIDY1LCA3OCwgNjgsIDY5LCAxOTYsIAotICAgIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzAsIDY1LCAKLSAgICA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIAotICAgIDgzLCA3MywgNjksIDg1LCA3OCwgNzEsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA3OSwgODIsIDczLCAKLSAgICA3OCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKLSAgICA3NiwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDcyLCA3MywgCi0gICAgNjksIDg1LCA4NCwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4NCwgNzMsIAotICAgIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODMsIDczLCAKLSAgICA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgCi0gICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgODIsIDczLCA2OSwgODUsIAotICAgIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCA2OSwgCi0gICAgODUsIDc2LCA0NSwgODAsIDczLCA2OSwgODUsIDgwLCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIAotICAgIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzIsIDczLCAKLSAgICA2OSwgODUsIDgwLCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCi0gICAgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAotICAgIDQ1LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCAKLSAgICA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCA3OSwgCi0gICAgNzUsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIAotICAgIDc1LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc1LCA3MywgODksIDY5LCAKLSAgICA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgCi0gICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCAKLSAgICA3MywgNjksIDg1LCA3NiwgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgMjA0LCA4MiwgNzMsIAotICAgIDY5LCA3NiwgMTI4LCA4MiwgNzMsIDY5LCA2OSwgMTI4LCA4MiwgNzMsIDY3LCA2OSwgNzcsIDEyOCwgODIsIDczLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDczLCA2NywgMTk3LCA4MiwgNzMsIDY2LCA2NiwgNzksIDc4LCAxMjgsIDgyLCA3MywgNjYsIDY2LCAKLSAgICA3OSwgMjA2LCA4MiwgNzMsIDY1LCAyMDQsIDgyLCA3MiwgNzksIDg0LCA3MywgMTk1LCA4MiwgNzIsIDc5LCAxMjgsIDgyLCAKLSAgICA3MiwgMjA3LCA4MiwgNzIsIDY1LCAxMjgsIDgyLCA3MiwgMTI4LCA4MiwgNzEsIDg5LCA3MywgNzgsIDcxLCA4MywgMTI4LCAKLSAgICA4MiwgNzEsIDg5LCA2NSwgNzgsIDEyOCwgODIsIDcxLCA4OSwgMTkzLCA4MiwgNjksIDg2LCA3OSwgNzYsIDg2LCA3MywgNzgsIAotICAgIDE5OSwgODIsIDY5LCA4NiwgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4NiwgNzcsIDY1LCAKLSAgICAxMjgsIDgyLCA2OSwgODYsIDczLCA2NSwgMTI4LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCA4MywgNjcsIAotICAgIDcyLCA4NywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgNjksIDY4LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCAxOTYsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDE5NywgODIsIDY5LCA4NSwgODgsIDEyOCwgODIsIDY5LCAKLSAgICA4NSwgMTI4LCA4MiwgNjksIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgyLCA2OSwgODQsIDg1LCA4MiwgMjA2LCA4MiwgNjksIAotICAgIDg0LCA4MiwgNzksIDcwLCA3NiwgNjksIDIxNiwgODIsIDY5LCA4NCwgODIsIDY5LCA2NSwgODQsIDEyOCwgODIsIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4NSwgODAsIDczLCA3OCwgODUsIDgzLCAxMjgsIDgyLCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzksIDc5LCA3NywgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDY5LCAxOTYsIDgyLCA2OSwgODMsIAotICAgIDg0LCAxMjgsIDgyLCA2OSwgODMsIDgwLCA3OSwgNzgsIDgzLCA2OSwgMTI4LCA4MiwgNjksIDgzLCA3OSwgODUsIDgyLCA2NywgCi0gICAgNjksIDEyOCwgODIsIDY5LCA4MywgNzksIDc2LCA4NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA4MywgNzMsIDgzLCAKLSAgICA4NCwgNjUsIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgNzMsIDY4LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA4MiwgNjksIAotICAgIDgzLCAyMDAsIDgyLCA2OSwgODIsIDY5LCA3OCwgNzEsIDcxLCA2NSwgNzgsIDEyOCwgODIsIDY5LCA4MiwgNjksIDc1LCA2NSwgCi0gICAgNzgsIDEyOCwgODIsIDY5LCA4MCwgODIsIDY5LCA4MywgNjksIDc4LCA4NCwgMTI4LCA4MiwgNjksIDgwLCA3NiwgNjUsIDY3LCAKLSAgICA2OSwgNzcsIDY5LCA3OCwgMjEyLCA4MiwgNjksIDgwLCA3MiwgMTI4LCA4MiwgNjksIDgwLCA2OSwgODQsIDczLCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDY5LCAxOTYsIDgyLCA2OSwgODAsIDY5LCA2NSwgODQsIDEyOCwgCi0gICAgODIsIDY5LCA4MCwgNjksIDY1LCAyMTIsIDgyLCA2OSwgODAsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY5LCA4MCwgNjUsIAotICAgIDEyOCwgODIsIDY5LCA4MCwgMTkzLCA4MiwgNjksIDc4LCA4NCwgNzksIDcxLCA2OSwgNzgsIDEyOCwgODIsIDY5LCA3OCwgCi0gICAgMTI4LCA4MiwgNjksIDIwNiwgODIsIDY5LCA3NywgODUsIDEyOCwgODIsIDY5LCA3NywgNzMsIDc4LCA2OCwgNjksIDIxMCwgCi0gICAgODIsIDY5LCA3NywgNjksIDY4LCA4OSwgMTI4LCA4MiwgNjksIDc2LCA3MywgNzEsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCAKLSAgICA3NiwgNzMsIDY5LCA4NiwgNjksIDE5NiwgODIsIDY5LCA3NiwgNjksIDY1LCA4MywgNjksIDEyOCwgODIsIDY5LCA3NiwgNjUsIAotICAgIDg4LCA2OSwgNjgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDc2LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA3NiwgNjUsIDY1LCAxMjgsIDgyLCA2OSwgNzQsIDY1LCA3OCwgMTk5LCAKLSAgICA4MiwgNjksIDczLCAxOTYsIDgyLCA2OSwgNzMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MiwgCi0gICAgMTI4LCA4MiwgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUxLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAKLSAgICA0NSwgNTAsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgCi0gICAgMjExLCA4MiwgNjksIDcxLCA3MywgODMsIDg0LCA2OSwgODIsIDY5LCAxOTYsIDgyLCA2OSwgNzEsIDczLCA3OSwgNzgsIDY1LCAKLSAgICAyMDQsIDgyLCA2OSwgNzEsIDczLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDczLCA2NSwgMTI4LCA4MiwgNjksIAotICAgIDcwLCA3OSwgODIsIDc3LCA2OSwgMTk2LCA4MiwgNjksIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgODIsIDY5LCA2OCwgCi0gICAgODUsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNzMsIAotICAgIDc4LCAxOTksIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgyLCA2OSwgNjcsIDg0LCA3MywgNzYsIDczLCA3OCwgCi0gICAgNjksIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA4NSwgNzYsIDY1LCAyMTAsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA2NSwgNzgsIDcxLCA3NiwgNjksIDEyOCwgODIsIDY5LCA2NywgODQsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIDgyLCA2OSwgNjcsIAotICAgIDgyLCA2OSwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDY3LCA3OSwgODIsIDY4LCA3MywgNzgsIDE5OSwgCi0gICAgODIsIDY5LCA2NywgNzksIDgyLCA2OCwgNjksIDgyLCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDEyOCwgODIsIDY5LCAKLSAgICA2NywgNzksIDgyLCAxOTYsIDgyLCA2OSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgODYsIDE5NywgODIsIDY5LCA2NywgNjksIAotICAgIDgwLCA4NCwgNzMsIDg2LCAxOTcsIDgyLCA2OSwgNjcsIDY5LCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA2OSwgCi0gICAgNzMsIDg2LCA2OSwgMjEwLCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNjUsIDc2LCAKLSAgICA3MSwgNjUsIDgyLCAxMjgsIDgyLCA2OSwgNjUsIDcyLCA3NywgODUsIDc1LCAxMjgsIDgyLCA2OSwgNjUsIDY3LCA3MiwgCi0gICAgMTI4LCA4MiwgNjgsIDIwNywgODIsIDY4LCA2OSwgMjA0LCA4MiwgNjYsIDY1LCA4MywgMTkzLCA4MiwgNjUsIDg5LCA4MywgCi0gICAgMTI4LCA4MiwgNjUsIDg5LCAyMTEsIDgyLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDczLCAKLSAgICA3OSwgMTI4LCA4MiwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgODIsIDY1LCA4NCwgNzIsIDE5MywgODIsIDY1LCA4NCwgNjUsIAotICAgIDEyOCwgODIsIDY1LCA4NCwgMTI4LCA4MiwgNjUsIDgzLCA4NywgNjUsIDY4LCA3MywgMTI4LCA4MiwgNjUsIDgzLCA3OSwgCi0gICAgODUsIDIwNCwgODIsIDY1LCA4MywgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODEsIDEyOCwgODIsIDY1LCA4MCwgNzMsIDgzLCAKLSAgICA3NywgNjUsIDEyOCwgODIsIDY1LCA3OCwgNzEsIDE5NywgODIsIDY1LCA3OCwgNjUsIDEyOCwgODIsIDY1LCA3OCwgMTI4LCAKLSAgICA4MiwgNjUsIDc3LCAyMTEsIDgyLCA2NSwgNzcsIDY2LCA2NSwgODQsIDEyOCwgODIsIDY1LCA3NSwgNzIsIDY1LCA3OCwgNzEsIAotICAgIDEyOCwgODIsIDY1LCA3NSwgNjUsIDY1LCA4MiwgNjUsIDY1LCA3OCwgODMsIDY1LCA4OSwgNjUsIDEyOCwgODIsIDY1LCA3MywgCi0gICAgODMsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDczLCA4MywgNjksIDE5NiwgODIsIDY1LCA3MywgNzgsIDY2LCA3OSwgODcsIAotICAgIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgODksIDEyOCwgODIsIDY1LCA3MywgNzYsIDg3LCA2NSwgMjE3LCA4MiwgCi0gICAgNjUsIDczLCA3NiwgMTI4LCA4MiwgNjUsIDczLCA2OCwgMjA3LCA4MiwgNjUsIDczLCA2OCwgNjUsIDEyOCwgODIsIDY1LCAKLSAgICA3MiwgNzcsIDY1LCA4NCwgODUsIDc2LCA3NiwgNjUsIDIwMCwgODIsIDY1LCA3MiwgMTI4LCA4MiwgNjUsIDcwLCA2OSwgCi0gICAgMTI4LCA4MiwgNjUsIDY5LCA3NywgMTI4LCA4MiwgNjUsIDY4LCA3MywgNzksIDY1LCA2NywgODQsIDczLCA4NiwgMTk3LCAKLSAgICA4MiwgNjUsIDY4LCA3MywgNzksIDEyOCwgODIsIDY1LCA2OCwgNzMsIDIwNywgODIsIDY1LCA2OCwgMjAxLCA4MiwgNjUsIAotICAgIDY4LCAxMjgsIDgyLCA2NSwgMTk2LCA4MiwgNjUsIDY3LCA4MSwgODUsIDY5LCAyMTIsIDgyLCA2NSwgNjcsIDczLCA3OCwgCi0gICAgNzEsIDEyOCwgODIsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA2NSwgNjYsIDY2LCA3MywgODQsIDEyOCwgODIsIDY1LCAKLSAgICA2NiwgNjYsIDczLCAyMTIsIDgyLCA2NSwgNjYsIDEyOCwgODIsIDY1LCA2NSwgNzMsIDEyOCwgODIsIDY1LCA1MSwgMTI4LCAKLSAgICA4MiwgNjUsIDUwLCAxMjgsIDgyLCA2NSwgNDUsIDUwLCAxMjgsIDgyLCA0OCwgNTAsIDU3LCAxMjgsIDgyLCA0OCwgNTAsIAotICAgIDU2LCAxMjgsIDgyLCA0OCwgNTAsIDU1LCAxMjgsIDgyLCA0OCwgNTAsIDU0LCAxMjgsIDgyLCA0OCwgNTAsIDUzLCAxMjgsIAotICAgIDgyLCA0OCwgNTAsIDUyLCAxMjgsIDgyLCA0OCwgNTAsIDUxLCAxMjgsIDgyLCA0OCwgNTAsIDUwLCAxMjgsIDgyLCA0OCwgCi0gICAgNTAsIDQ5LCAxMjgsIDgyLCA0OCwgNTAsIDQ4LCAxMjgsIDgyLCA0OCwgNDksIDU3LCAxMjgsIDgyLCA0OCwgNDksIDU2LCAKLSAgICAxMjgsIDgyLCA0OCwgNDksIDU1LCAxMjgsIDgyLCA0OCwgNDksIDU0LCA2NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgMTI4LCAKLSAgICA4MiwgNDgsIDQ5LCA1MywgMTI4LCA4MiwgNDgsIDQ5LCA1MiwgMTI4LCA4MiwgNDgsIDQ5LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ5LCA1MCwgMTI4LCA4MiwgNDgsIDQ5LCA0OSwgMTI4LCA4MiwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgODIsIDQ4LCA0OSwgCi0gICAgNDgsIDEyOCwgODIsIDQ4LCA0OCwgNTcsIDEyOCwgODIsIDQ4LCA0OCwgNTYsIDEyOCwgODIsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgODIsIDQ4LCA0OCwgNTQsIDEyOCwgODIsIDQ4LCA0OCwgNTMsIDEyOCwgODIsIDQ4LCA0OCwgNTIsIDEyOCwgODIsIDQ4LCAKLSAgICA0OCwgNTEsIDY2LCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NSwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgMTI4LCA4MiwgNDgsIAotICAgIDQ4LCA1MCwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDEyOCwgODIsIDQ4LCA0OCwgNDksIDEyOCwgODIsIDQ1LCA2NywgCi0gICAgODIsIDY5LCAxOTcsIDgxLCA4OSwgODgsIDEyOCwgODEsIDg5LCA4NSwgMTI4LCA4MSwgODksIDg0LCAxMjgsIDgxLCA4OSwgCi0gICAgODIsIDg4LCAxMjgsIDgxLCA4OSwgODIsIDEyOCwgODEsIDg5LCA4MCwgMTI4LCA4MSwgODksIDc5LCAxMjgsIDgxLCA4OSwgCi0gICAgNzMsIDEyOCwgODEsIDg5LCA2OSwgNjksIDEyOCwgODEsIDg5LCA2OSwgMTI4LCA4MSwgODksIDY1LCA2NSwgMTI4LCA4MSwgCi0gICAgODksIDY1LCAxMjgsIDgxLCA4OSwgMTI4LCA4MSwgODcsIDczLCAxMjgsIDgxLCA4NywgNjksIDY5LCAxMjgsIDgxLCA4NywgCi0gICAgNjksIDEyOCwgODEsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDg3LCA2NSwgMTI4LCA4MSwgODUsIDg4LCAxMjgsIDgxLCA4NSwgCi0gICAgODYsIDEyOCwgODEsIDg1LCA4NSwgODYsIDEyOCwgODEsIDg1LCA4NSwgMTI4LCA4MSwgODUsIDg0LCAxMjgsIDgxLCA4NSwgCi0gICAgODMsIDcyLCA4MywgNzIsIDY1LCA4OSwgNjUsIDEyOCwgODEsIDg1LCA4MiwgODgsIDEyOCwgODEsIDg1LCA4MiwgMTI4LCAKLSAgICA4MSwgODUsIDgwLCAxMjgsIDgxLCA4NSwgNzksIDg4LCAxMjgsIDgxLCA4NSwgNzksIDg0LCAxOTcsIDgxLCA4NSwgNzksIAotICAgIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MSwgODUsIDc5LCA4NCwgMTI4LCA4MSwgODUsIDc5LCA4MCwgMTI4LCA4MSwgCi0gICAgODUsIDc5LCAxMjgsIDgxLCA4NSwgNzUsIDEyOCwgODEsIDg1LCA3MywgNzgsIDg0LCA2OSwgODMsIDgzLCA2OSwgNzgsIDY3LCAKLSAgICA2OSwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjgsIDczLCA2NywgNjksIDgzLCA3MywgNzcsIDE5MywgODEsIDg1LCA3MywgNzgsIAotICAgIDY3LCA4NSwgNzgsIDg4LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA2NSwgODIsIDczLCA4NSwgMjExLCA4MSwgODUsIDczLCA3NiwgCi0gICAgMjEyLCA4MSwgODUsIDczLCA3NiwgNzYsIDEyOCwgODEsIDg1LCA3MywgNjcsIDIwMywgODEsIDg1LCA3MywgMTI4LCA4MSwgCi0gICAgODUsIDcwLCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgNjksIDE5NiwgODEsIDg1LCA2OSwgODMsIDg0LCAKLSAgICA3MywgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCAyMDYsIDgxLCA4NSwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA4MSwgODUsIDY5LCA2OSwgMjA2LCA4MSwgODUsIDY5LCAxMjgsIDgxLCA4NSwgNjYsIDg1LCA4NCwgODMsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgODQsIDY5LCA4MiwgNzgsIDczLCA3OSwgMjA2LCA4MSwgODUsIDY1LCA4MiwgODQsIDY5LCA4MiwgODMsIAotICAgIDEyOCwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDIxMSwgODEsIDg1LCA2NSwgODIsIDg0LCA2OSwgODIsIDEyOCwgCi0gICAgODEsIDg1LCA2NSwgNzgsIDg0LCA3MywgODQsIDIxNywgODEsIDg1LCA2NSwgNjgsIDgyLCA4NSwgODAsIDc2LCAxOTcsIDgxLCAKLSAgICA4NSwgNjUsIDY4LCA4MiwgNjUsIDc4LCA4NCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgMjEyLCA4MSwgODUsIAotICAgIDY1LCA2OCwgNjcsIDc5LCA3NiwgNzksIDc4LCAxMjgsIDgxLCA4NSwgNjUsIDY4LCAxMjgsIDgxLCA4NSwgNjUsIDE5NiwgCi0gICAgODEsIDg1LCA2NSwgMTI4LCA4MSwgODUsIDEyOCwgODEsIDIwOCwgODEsIDc5LCA4OCwgMTI4LCA4MSwgNzksIDg0LCAxMjgsIAotICAgIDgxLCA3OSwgODAsIDcyLCAxMjgsIDgxLCA3OSwgODAsIDY1LCAxMjgsIDgxLCA3OSwgODAsIDEyOCwgODEsIDc5LCA3OSwgCi0gICAgMTI4LCA4MSwgNzksIDIwNywgODEsIDc5LCA3MCwgMTI4LCA4MSwgNzksIDE5OCwgODEsIDc5LCA2NSwgMTI4LCA4MSwgNzksIAotICAgIDEyOCwgODEsIDc4LCAxMjgsIDgxLCA3MywgODgsIDEyOCwgODEsIDczLCA4NCwgODMsIDY1LCAxMjgsIDgxLCA3MywgODQsIAotICAgIDEyOCwgODEsIDczLCA4MCwgMTI4LCA4MSwgNzMsIDczLCAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIAotICAgIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIAotICAgIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgCi0gICAgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgCi0gICAgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAKLSAgICAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCAKLSAgICA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIAotICAgIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIAotICAgIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgCi0gICAgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgCi0gICAgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIAotICAgIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgCi0gICAgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIAotICAgIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgCi0gICAgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgCi0gICAgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgCi0gICAgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIAotICAgIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCAKLSAgICA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCAKLSAgICA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgCi0gICAgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAKLSAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCAKLSAgICA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIAotICAgIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIAotICAgIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIAotICAgIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgCi0gICAgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIAotICAgIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAKLSAgICA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgCi0gICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAKLSAgICAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIAotICAgIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgCi0gICAgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIAotICAgIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgCi0gICAgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCAKLSAgICA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIAotICAgIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgCi0gICAgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgCi0gICAgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCA3MCwgNzksIDg1LCA3OCwgNjgsIAotICAgIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgMjEyLCA4MCwgCi0gICAgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDgwLCA4MiwgNzMsIDg2LCAKLSAgICA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIDg0LCA4MiwgMTkzLCA4MCwgODIsIAotICAgIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgCi0gICAgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCAKLSAgICA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3NywgNjksIDEyOCwgODAsIDgyLCA3MywgNzcsIDE5NywgODAsIAotICAgIDgyLCA2OSwgODYsIDczLCA3OSwgODUsIDIxMSwgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA4MCwgODIsIDY5LCA4MywgCi0gICAgNjksIDg0LCAxMjgsIDgwLCA4MiwgNjksIDgzLCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCAKLSAgICA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDIwNiwgODAsIDgyLCA2OSwgODAsIDc5LCA3OCwgNjgsIDY5LCA4MiwgCi0gICAgNjUsIDc4LCA2NywgNjksIDEyOCwgODAsIDgyLCA2OSwgNzgsIDc1LCA3MiwgNjUsIDEyOCwgODAsIDgyLCA2OSwgNzAsIDY1LCAKLSAgICA2NywgMTk3LCA4MCwgODIsIDY5LCA2NywgNzMsIDgwLCA3MywgODQsIDY1LCA4NCwgNjksIDEyOCwgODAsIDgyLCA2OSwgNjcsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxOTksIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCA4MywgMTI4LCA4MCwgODIsIDY5LCA2NywgCi0gICAgNjksIDY4LCA2OSwgMjExLCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA2OSwgMTk2LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAKLSAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCAxOTcsIDgwLCA4MiwgNjUsIDg5LCA2OSwgMjEwLCA4MCwgODIsIAotICAgIDY1LCA3NywgNDUsIDgwLCA3MywgNzMsIDEyOCwgODAsIDgyLCA2NSwgNzcsIDQ1LCA4MCwgNzMsIDIwMSwgODAsIDgyLCA2NSwgCi0gICAgNzcsIDQ1LCA3NywgODUsIDc5LCA4OSwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDIxNywgODAsIDgyLCAKLSAgICA2NSwgNzcsIDQ1LCA2NiwgODUsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDIwNiwgODAsIAotICAgIDgyLCA2NSwgNzcsIDQ1LCA2NiwgNjksIDczLCAxMjgsIDgwLCA4MiwgNjUsIDc3LCA0NSwgNjYsIDY5LCAyMDEsIDgwLCA4MiwgCi0gICAgNjUsIDc3LCAxMjgsIDgwLCA4MiwgNjUsIDIwNSwgODAsIDgyLCAxMjgsIDgwLCA4MCwgODYsIDEyOCwgODAsIDgwLCA3NywgCi0gICAgMTI4LCA4MCwgODAsIDY1LCAxMjgsIDgwLCA3OSwgODksIDEyOCwgODAsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDg3LCA2OSwgCi0gICAgODIsIDIxMSwgODAsIDc5LCA4NywgNjksIDgyLCAxMjgsIDgwLCA3OSwgODcsIDY4LCA2OSwgODIsIDY5LCAxOTYsIDgwLCAKLSAgICA3OSwgODcsIDY4LCA2OSwgODIsIDEyOCwgODAsIDc5LCA4NSwgNzgsIDE5NiwgODAsIDc5LCA4NSwgNzYsIDg0LCA4MiwgCi0gICAgMjE3LCA4MCwgNzksIDg1LCA2NywgNzIsIDEyOCwgODAsIDc5LCA4NCwgNjUsIDg0LCA3OSwgMTI4LCA4MCwgNzksIDg0LCAKLSAgICA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgMjEyLCA4MCwgNzksIDgzLCA4NCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIAotICAgIDIwNiwgODAsIDc5LCA4MywgODQsIDY2LCA3OSwgODgsIDEyOCwgODAsIDc5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA3OSwgCi0gICAgODMsIDg0LCAxMjgsIDgwLCA3OSwgODMsIDIxMiwgODAsIDc5LCA4MywgODMsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCA4MywgMTI4LCA4MCwgNzksIDgyLCA4NCwgNjUsIDY2LCA3NiwgCi0gICAgMTk3LCA4MCwgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgODUsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDgyLCA2OSwgNjcsIDg0LCAKLSAgICA4NSwgMjExLCA4MCwgNzksIDgwLCA4MCwgNzMsIDc4LCAxOTksIDgwLCA3OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIAotICAgIDc5LCA4MCwgNjcsIDc5LCA4MiwgNzgsIDEyOCwgODAsIDc5LCA4MCwgMTI4LCA4MCwgNzksIDIwOCwgODAsIDc5LCA3OSwgCi0gICAgNjgsIDc2LCA2OSwgMTI4LCA4MCwgNzksIDc5LCAxMjgsIDgwLCA3OSwgNzgsIDY4LCA3OSwgMTI4LCA4MCwgNzksIDIwNiwgCi0gICAgODAsIDc5LCA3NywgNzcsIDY5LCA2OSwgMTI4LCA4MCwgNzksIDc3LCA3NywgNjksIDE5NywgODAsIDc5LCA3NiwgNzMsIDgzLCAKKyAgICA3MiwgNjUsIDgyLCA4MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMjA4LCA4MywgNzIsIDY1LCA4MiwgNzUsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgODIsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA4MywgNzIsIDY1LCA4MiwgMTc4LCA4MywgCisgICAgNzIsIDY1LCA4MCwgNzMsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA4MCwgNjksIDgzLCAxMjgsIDgzLCA3MiwgNjUsIDgwLCAKKyAgICAxOTcsIDgzLCA3MiwgNjUsIDgwLCAxMjgsIDgzLCA3MiwgNjUsIDc4LCA3MSwgMTI4LCA4MywgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA4MywgNzIsIDY1LCAyMDYsIDgzLCA3MiwgNjUsIDc3LCA4MiwgNzksIDY3LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3NiwgODMsIAorICAgIDcyLCA2OSwgNzYsIDY5LCA4NCwgMTI4LCA4MywgNzIsIDY1LCA3NiwgNzYsIDc5LCAyMTUsIDgzLCA3MiwgNjUsIDc1LCA4NCwgCisgICAgNzMsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgNzEsIDEyOCwgODMsIDcyLCA2NSwgNzUsIDczLCA3OCwgMTk5LCAKKyAgICA4MywgNzIsIDY1LCA3NSwgMTI4LCA4MywgNzIsIDY1LCA3MywgMTI4LCA4MywgNzIsIDY1LCA3MCwgODQsIDEyOCwgODMsIAorICAgIDcyLCA2NSwgNzAsIDIxMiwgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODMsIDcyLCA2NSwgNjgsIDY5LCAKKyAgICAxOTYsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTI4LCA4MywgNzIsIDY1LCA2OCwgNjgsIDY1LCAxMjgsIDgzLCA3MiwgNjUsIAorICAgIDY4LCA2OCwgMTkzLCA4MywgNzIsIDY1LCA2OCwgMTI4LCA4MywgNzIsIDY1LCAxOTYsIDgzLCA3MiwgNjUsIDY2LCA1NCwgCisgICAgMTI4LCA4MywgNzIsIDY1LCA2NSwgMTI4LCA4MywgNzIsIDY1LCA1NCwgMTI4LCA4MywgNzIsIDY1LCAxODIsIDgzLCA3MiwgCisgICAgNjUsIDUxLCAxMjgsIDgzLCA3MiwgNjUsIDE3OSwgODMsIDcxLCA4MiwgMTkzLCA4MywgNzEsIDc5LCAyMTAsIDgzLCA3MSwgCisgICAgNjcsIDEyOCwgODMsIDcxLCA2NSwgMjE1LCA4MywgNzEsIDY1LCAxOTQsIDgzLCA3MSwgMTI4LCA4MywgNjksIDg5LCA3NSwgCisgICAgMTI4LCA4MywgNjksIDg4LCA4NCwgODUsIDc2LCAxOTMsIDgzLCA2OSwgODgsIDg0LCA3MywgNzYsIDY5LCAxMjgsIDgzLCAKKyAgICA2OSwgODgsIDg0LCA2NSwgNzgsIDIxMSwgODMsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA4MywgNjksIAorICAgIDg2LCA2OSwgNzgsIDg0LCA4OSwgMTI4LCA4MywgNjksIDg2LCA2OSwgNzgsIDg0LCAyMTcsIDgzLCA2OSwgODYsIDY5LCA3OCwgCisgICAgODQsIDcyLCAxMjgsIDgzLCA2OSwgODYsIDY5LCA3OCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA4NiwgNjksIDc4LCAKKyAgICA4NCwgNjksIDY5LCAyMDYsIDgzLCA2OSwgODYsIDY5LCA3OCwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgODMsIAorICAgIDY5LCA4NiwgNjksIDIwNiwgODMsIDY5LCA4NSwgODgsIDEyOCwgODMsIDY5LCA4NSwgNzgsIDg5LCA2NSwgNzcsIDEyOCwgCisgICAgODMsIDY5LCA4NSwgNjUsIDY5LCA4MSwgMTI4LCA4MywgNjksIDg0LCA3MCwgNzksIDc4LCAxMjgsIDgzLCA2OSwgODMsIDg0LCAKKyAgICA2OSwgODIsIDg0LCA3MywgODUsIDIxMSwgODMsIDY5LCA4MywgODEsIDg1LCA3MywgODEsIDg1LCA2NSwgNjgsIDgyLCA2NSwgCisgICAgODQsIDY5LCAxMjgsIDgzLCA2OSwgODMsIDY1LCA3NywgMTk3LCA4MywgNjksIDgyLCA4NiwgNzMsIDY3LCAxOTcsIDgzLCAKKyAgICA2OSwgODIsIDczLCA3MCwgODMsIDEyOCwgODMsIDY5LCA4MiwgNzMsIDcwLCAyMTEsIDgzLCA2OSwgODIsIDczLCA3MCwgCisgICAgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCA4NCwgNzMsIDY1LCA3NiwgMTI4LCA4MywgNjksIDgxLCA4NSwgNjksIDc4LCAKKyAgICA2NywgMTk3LCA4MywgNjksIDgwLCA4NCwgODUsIDgwLCA3NiwgMTk3LCA4MywgNjksIDgwLCA4NCwgNjksIDc3LCA2NiwgNjksIAorICAgIDgyLCAxMjgsIDgzLCA2OSwgODAsIDY1LCA4MiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgODMsIDY5LCA4MCwgNjUsIDgyLCA2NSwgCisgICAgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MywgNjksIDc4LCA4NCwgNzMsIDEyOCwgODMsIDY5LCAKKyAgICA3NywgODUsIDc4LCA2NywgNzMsIDE5MywgODMsIDY5LCA3NywgNzUsIDY1LCA4NCwgNzIsIDEyOCwgODMsIDY5LCA3NywgNzUsIAorICAgIDEyOCwgODMsIDY5LCA3NywgNzMsIDg2LCA3OSwgODcsIDY5LCAyMDQsIDgzLCA2OSwgNzcsIDczLCA4MywgNzksIDcwLCAKKyAgICAyMTIsIDgzLCA2OSwgNzcsIDczLCA4MywgNjksIDg4LCA4NCwgNzMsIDc2LCA2OSwgMTI4LCA4MywgNjksIDc3LCA3MywgNzcsIAorICAgIDczLCA3OCwgNzMsIDc3LCAxOTMsIDgzLCA2OSwgNzcsIDczLCA2OCwgNzMsIDgyLCA2OSwgNjcsIDIxMiwgODMsIDY5LCA3NywgCisgICAgNzMsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MywgNjksIDc3LCA3MywgNjcsIDc5LCA3NiwgNzksIDIwNiwgODMsIDY5LCAKKyAgICA3NywgNzMsIDY3LCA3MywgODIsIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDgzLCA2OSwgNzcsIDczLCA2NywgNzMsIDgyLCA2NywgCisgICAgNzYsIDE5NywgODMsIDY5LCA3NywgNzMsIDY2LCA4MiwgNjksIDg2LCA3MywgMjExLCA4MywgNjksIDc3LCA3MywgNDUsIDg2LCAKKyAgICA3OSwgNzMsIDY3LCA2OSwgMTk2LCA4MywgNjksIDc2LCA3MCwgNzMsIDY5LCAxMjgsIDgzLCA2OSwgNzYsIDcwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDU1LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDUyLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTcsIDQ5LCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTcsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNTEsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDU2LCA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NiwgNDgsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU3LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1NiwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDU0LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDUxLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCA1MCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTUsIDQ4LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTQsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1NSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA1MiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUzLCAKKyAgICA0OSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MywgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU3LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1NiwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDU0LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDUxLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCA1MCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTIsIDQ4LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTYsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDU1LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTMsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDUyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTEsIDQ5LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1NSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTQsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTMsIDUzLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MywgNDksIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA1MCwgNTMsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA1NywgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNTAsIDUyLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTIsIAorICAgIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUyLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA1NywgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCAKKyAgICA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNTAsIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNTAsIDUxLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgCisgICAgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDUwLCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDUwLCA1NCwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIAorICAgIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA1MCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNTAsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCAKKyAgICA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1NCwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDUwLCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ5LCA1MSwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNTAsIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDUwLCA0OCwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDUwLCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCA1MSwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDUwLCA0OCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDQ4LCAKKyAgICA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA1MCwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU3LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTcsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NywgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU3LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTcsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA1NywgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDU2LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDgzLCA2OSwgCisgICAgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDU2LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTYsIDUwLCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU2LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTYsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NywgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1NSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCAKKyAgICA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDU1LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDU1LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTUsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1NCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCA1NCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIAorICAgIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDU0LCAKKyAgICA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1NCwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDU0LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTQsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgCisgICAgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1NCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgCisgICAgNDUsIDQ5LCA1MywgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUzLCA1MSwgMTI4LCAKKyAgICA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgCisgICAgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MywgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIAorICAgIDUzLCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTMsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MiwgNTUsIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCAKKyAgICA1MiwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA1MSwgMTI4LCA4MywgNjksIAorICAgIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgNDUsIDQ5LCA1MiwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUyLCA0OCwgCisgICAgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNTEsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTUsIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MSwgNTIsIAorICAgIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgCisgICAgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIAorICAgIDQ5LCA1MSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUxLCA0OCwgMTI4LCA4MywgCisgICAgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTEsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIAorICAgIDgyLCA0NSwgNDksIDUwLCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDU2LCAKKyAgICAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIAorICAgIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgNTIsIDEyOCwgODMsIAorICAgIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA1MCwgCisgICAgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDUwLCA0OCwgMTI4LCA4MywgNjksIDc2LCAKKyAgICA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNTAsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgCisgICAgNDksIDQ5LCA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDgzLCAKKyAgICA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgCisgICAgNzksIDgyLCA0NSwgNDksIDQ5LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIAorICAgIDUzLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNTIsIDEyOCwgODMsIDY5LCA3NiwgCisgICAgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIAorICAgIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OSwgNDksIDEyOCwgCisgICAgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ5LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIAorICAgIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCAKKyAgICA1NywgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTUsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAKKyAgICA0NSwgNDksIDQ4LCA1NCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIAorICAgIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNTIsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCAKKyAgICA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA1MSwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgODIsIDQ1LCA0OSwgCisgICAgNDgsIDUwLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCA4MiwgNDUsIDQ5LCA0OCwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDQ4LCA0OCwgMTI4LCA4MywgNjksIDc2LCA2OSwgNjcsIDg0LCA3OSwgCisgICAgODIsIDQ1LCA0OSwgNDgsIDEyOCwgODMsIDY5LCA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCA0NSwgNDksIDEyOCwgODMsIDY5LCAKKyAgICA3NiwgNjksIDY3LCA4NCwgNzksIDgyLCAxMjgsIDgzLCA2OSwgNzYsIDY5LCA2NywgODQsIDc5LCAyMTAsIDgzLCA2OSwgNzYsIAorICAgIDY5LCA2NywgODQsIDY5LCAxOTYsIDgzLCA2OSwgNzMsIDgzLCA3NywgNjUsIDEyOCwgODMsIDY5LCA3MywgODMsIDc3LCAKKyAgICAxOTMsIDgzLCA2OSwgNzIsIDEyOCwgODMsIDY5LCA3MSwgNzksIDc2LCAxMjgsIDgzLCA2OSwgNzEsIDc4LCA3OSwgMTI4LCAKKyAgICA4MywgNjksIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA4MywgNjksIDY5LCA4NiwgMTI4LCA4MywgNjksIDY5LCA3OCwgODUsIAorICAgIDEyOCwgODMsIDY5LCA2OSwgNzgsIDEyOCwgODMsIDY5LCA2OSwgMjA2LCA4MywgNjksIDY5LCA2OCwgNzYsIDczLCA3OCwgCisgICAgNzEsIDEyOCwgODMsIDY5LCA2OSwgNDUsIDc4LCA3OSwgNDUsIDY5LCA4NiwgNzMsIDIwNCwgODMsIDY5LCA2NywgODQsIDc5LCAKKyAgICA4MiwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDgzLCA2OSwgNjcsIDgyLCA2OSwgODQsIDEyOCwgODMsIDY5LCA2NywgNzksIDc4LCA2OCwgMTI4LCA4MywgNjksIDY3LCA2NSwgCisgICAgNzgsIDg0LCAxMjgsIDgzLCA2OSwgNjYsIDY1LCA4NCwgNjYsIDY5LCA3MywgMjEyLCA4MywgNjksIDY1LCA4NCwgMTI4LCAKKyAgICA4MywgNjksIDY1LCA3NiwgMTI4LCA4MywgNjksIDY1LCA3MSwgODUsIDc2LCAyMDQsIDgzLCA2OCwgNzksIDc4LCAxOTksIAorICAgIDgzLCA2OCwgMTI4LCA4MywgNjcsIDg3LCA2NSwgMTI4LCA4MywgNjcsIDgyLCA4NSwgODAsIDc2LCA2OSwgMTI4LCA4MywgCisgICAgNjcsIDgyLCA3OSwgNzYsIDc2LCAxMjgsIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDEyOCwgODMsIDY3LCA4MiwgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA4MywgNjcsIDgyLCA2OSwgNjksIDIwNiwgODMsIDY3LCA4MiwgNjksIDY1LCA3NywgNzMsIDc4LCAxOTksIAorICAgIDgzLCA2NywgNzksIDgyLCA4MCwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjcsIDc5LCA4MiwgODAsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgODMsIDY3LCA3OSwgODIsIDY5LCAxMjgsIDgzLCA2NywgNzksIDc5LCA4NCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzMsIDgzLCAKKyAgICA4MywgNzksIDgyLCA4MywgMTI4LCA4MywgNjcsIDczLCAxMjgsIDgzLCA2NywgNzIsIDg3LCA2NSwgMTI4LCA4MywgNjcsIAorICAgIDcyLCA4NywgMTkzLCA4MywgNjcsIDcyLCA4MiwgNzksIDY5LCA2OCwgNjksIDgyLCAxMjgsIDgzLCA2NywgNzIsIDc5LCA3OSwgCisgICAgNzYsIDEyOCwgODMsIDY3LCA3MiwgNzksIDc5LCAyMDQsIDgzLCA2NywgNzIsIDc5LCA3NiwgNjUsIDgyLCAxMjgsIDgzLCAKKyAgICA2NywgNzIsIDY5LCA3NywgMTkzLCA4MywgNjcsIDY5LCA4MCwgODQsIDY5LCAyMTAsIDgzLCA2NywgNjUsIDc4LCA2OCwgNzMsIAorICAgIDY3LCA4NSwgODMsIDEyOCwgODMsIDY3LCA2NSwgNzgsIDY4LCA3MywgNjcsIDg1LCAyMTEsIDgzLCA2NywgNjUsIDIwNiwgCisgICAgODMsIDY3LCA2NSwgNzYsIDY5LCA4MywgMTI4LCA4MywgNjYsIDg1LCAxOTQsIDgzLCA2NiwgODIsIDg1LCAyMDQsIDgzLCAKKyAgICA2NSwgODksIDczLCA4MywgMjAxLCA4MywgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA4MywgNjUsIDg5LCAxMjgsIAorICAgIDgzLCA2NSwgODgsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNjksIDEyOCwgODMsIDY1LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY1LCAKKyAgICAxMjgsIDgzLCA2NSwgODcsIDY1LCA3OCwgMTI4LCA4MywgNjUsIDg3LCAxMjgsIDgzLCA2NSwgODYsIDc5LCA4NSwgODIsIAorICAgIDczLCA3OCwgMTk5LCA4MywgNjUsIDg1LCA4MiwgNjUsIDgzLCA3MiwgODQsIDgyLCAxOTMsIDgzLCA2NSwgODUsIDczLCA3NiwgCisgICAgMTI4LCA4MywgNjUsIDg0LCA4NSwgODIsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCA3NSwgODUsIDg1LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDc1LCA2NSwgNjUsIDc4LCAxMjgsIDgzLCA2NSwgODQsIDY5LCA3NiwgNzYsIDczLCA4NCwgNjksIAorICAgIDEyOCwgODMsIDY1LCA4NCwgNjksIDc2LCA3NiwgNzMsIDg0LCAxOTcsIDgzLCA2NSwgODQsIDY3LCA3MiwgNjksIDc2LCAKKyAgICAxMjgsIDgzLCA2NSwgODQsIDY1LCA3OCwgNzEsIDY1LCAxMjgsIDgzLCA2NSwgODMsIDcyLCAxMjgsIDgzLCA2NSwgODMsIAorICAgIDY1LCA3NSwgMTI4LCA4MywgNjUsIDgyLCA3MywgMTI4LCA4MywgNjUsIDgyLCAxOTMsIDgzLCA2NSwgODIsIDEyOCwgODMsIAorICAgIDY1LCA4MSwgMTI4LCA4MywgNjUsIDgwLCA2NSwgMTI4LCA4MywgNjUsIDc4LCA4OSwgNzksIDc5LCA3MSwgMTkzLCA4MywgCisgICAgNjUsIDc4LCA4OSwgNjUsIDc1LCAxOTMsIDgzLCA2NSwgNzgsIDg0LCA3MywgNzMsIDc3LCA4NSwgMTI4LCA4MywgNjUsIDc4LCAKKyAgICA3OCwgODksIDY1LCAxMjgsIDgzLCA2NSwgNzgsIDcxLCA2NSwgNTAsIDEyOCwgODMsIDY1LCA3OCwgNjgsIDcyLCAyMDEsIAorICAgIDgzLCA2NSwgNzgsIDY4LCA2NSwgNzYsIDEyOCwgODMsIDY1LCA3OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzgsIDEyOCwgCisgICAgODMsIDY1LCA3NywgODksIDc5LCAyMDMsIDgzLCA2NSwgNzcsIDg2LCA2NSwgODQsIDEyOCwgODMsIDY1LCA3NywgODAsIDczLCAKKyAgICAxMjgsIDgzLCA2NSwgNzcsIDgwLCA3MiwgNjUsIDc5LCAxMjgsIDgzLCA2NSwgNzcsIDc1LCA2NSwgMTI4LCA4MywgNjUsIAorICAgIDc3LCA2OSwgNzUsIDcyLCAxMjgsIDgzLCA2NSwgNzcsIDY5LCA3NSwgMjAwLCA4MywgNjUsIDc3LCA2NiwgNjUsIDEyOCwgCisgICAgODMsIDY1LCA3NywgNjUsIDgyLCA3MywgODQsIDY1LCAyMDYsIDgzLCA2NSwgNzcsIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCAKKyAgICA4MiwgNjksIDEyOCwgODMsIDY1LCA3NiwgODQsIDczLCA3NiwgNzYsIDc5LCAxMjgsIDgzLCA2NSwgNzYsIDg0LCA0NSwgNTAsIAorICAgIDEyOCwgODMsIDY1LCA3NiwgODQsIDEyOCwgODMsIDY1LCA3NiwgMjEyLCA4MywgNjUsIDc2LCA3NiwgNjUsIDc2LCA3NiwgCisgICAgNjUsIDcyLCA3OSwgMjEzLCA4MywgNjUsIDc2LCA3NiwgMTkzLCA4MywgNjUsIDc2LCA2NSwgMjA1LCA4MywgNjUsIDc2LCAKKyAgICA2NSwgNjgsIDEyOCwgODMsIDY1LCA3NiwgNjUsIDEyOCwgODMsIDY1LCA3NiwgNDUsIDY1LCA3NywgNzcsIDc5LCA3OCwgNzMsIAorICAgIDY1LCA2NywgMTI4LCA4MywgNjUsIDc2LCAxMjgsIDgzLCA2NSwgNzUsIDg0LCA2NSwgMTI4LCA4MywgNjUsIDc1LCA3OSwgCisgICAgODQsIDEyOCwgODMsIDY1LCA3NSwgNzIsIDE5MywgODMsIDY1LCA3NSwgNjksIDg1LCA2NSwgNjksIDEyOCwgODMsIDY1LCAKKyAgICA3NSwgMTk3LCA4MywgNjUsIDc0LCA2OCwgNjUsIDcyLCAxMjgsIDgzLCA2NSwgNzMsIDc2LCA2NiwgNzksIDY1LCA4NCwgCisgICAgMTI4LCA4MywgNjUsIDczLCA3NiwgMTI4LCA4MywgNjUsIDczLCA3NSwgODUsIDgyLCA4NSwgMTI4LCA4MywgNjUsIDcyLCAKKyAgICAxMjgsIDgzLCA2NSwgNzEsIDczLCA4NCwgODQsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA4MywgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA4MywgNjUsIDcxLCAxMjgsIDgzLCA2NSwgMTk5LCA4MywgNjUsIDcwLCA3MiwgNjUsIDEyOCwgODMsIDY1LCA3MCwgCisgICAgNjksIDg0LCAyMTcsIDgzLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA4MywgNjUsIDY4LCA2OSwgMTI4LCA4MywgNjUsIDY4LCAKKyAgICAxMjgsIDgzLCA2NSwgMTk2LCA4MywgNjUsIDY3LCA4MiwgNzMsIDcwLCA3MywgNjcsIDczLCA2NSwgMjA0LCA4MywgNjUsIAorICAgIDY1LCA3MywgMTI4LCA4MywgNjUsIDY1LCA2OCwgNzIsIDg1LCAxMjgsIDgzLCA2NSwgNDUsIDczLCAxMjgsIDgzLCA2NSwgCisgICAgNDUsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDU0LCAxMjgsIDgzLCA0OCwgNTIsIDUzLCAxMjgsIDgzLCA0OCwgNTIsIDUyLCAKKyAgICAxMjgsIDgzLCA0OCwgNTIsIDUxLCAxMjgsIDgzLCA0OCwgNTIsIDUwLCAxMjgsIDgzLCA0OCwgNTIsIDQ5LCAxMjgsIDgzLCAKKyAgICA0OCwgNTIsIDQ4LCAxMjgsIDgzLCA0OCwgNTEsIDU3LCAxMjgsIDgzLCA0OCwgNTEsIDU2LCAxMjgsIDgzLCA0OCwgNTEsIAorICAgIDU1LCAxMjgsIDgzLCA0OCwgNTEsIDU0LCAxMjgsIDgzLCA0OCwgNTEsIDUzLCA2NSwgMTI4LCA4MywgNDgsIDUxLCA1MywgCisgICAgMTI4LCA4MywgNDgsIDUxLCA1MiwgMTI4LCA4MywgNDgsIDUxLCA1MSwgMTI4LCA4MywgNDgsIDUxLCA1MCwgMTI4LCA4MywgCisgICAgNDgsIDUxLCA0OSwgMTI4LCA4MywgNDgsIDUxLCA0OCwgMTI4LCA4MywgNDgsIDUwLCA1NywgMTI4LCA4MywgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA4MywgNDgsIDUwLCA1NSwgMTI4LCA4MywgNDgsIDUwLCA1NCwgNjYsIDEyOCwgODMsIDQ4LCA1MCwgNTQsIAorICAgIDY1LCAxMjgsIDgzLCA0OCwgNTAsIDU0LCAxMjgsIDgzLCA0OCwgNTAsIDUzLCAxMjgsIDgzLCA0OCwgNTAsIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNTAsIDUxLCAxMjgsIDgzLCA0OCwgNTAsIDUwLCAxMjgsIDgzLCA0OCwgNTAsIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDgzLCA0OCwgNDksIDU3LCAxMjgsIDgzLCA0OCwgNDksIDU2LCAxMjgsIDgzLCA0OCwgNDksIDU1LCAKKyAgICA2NSwgMTI4LCA4MywgNDgsIDQ5LCA1NSwgMTI4LCA4MywgNDgsIDQ5LCA1NCwgMTI4LCA4MywgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ5LCA1MiwgNjYsIDEyOCwgODMsIDQ4LCA0OSwgNTIsIDY1LCAxMjgsIDgzLCA0OCwgNDksIDUyLCAxMjgsIAorICAgIDgzLCA0OCwgNDksIDUxLCAxMjgsIDgzLCA0OCwgNDksIDUwLCAxMjgsIDgzLCA0OCwgNDksIDQ5LCAxMjgsIDgzLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDgzLCA0OCwgNDgsIDU3LCAxMjgsIDgzLCA0OCwgNDgsIDU2LCAxMjgsIDgzLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDgzLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA4MywgNDgsIDQ4LCA1NCwgMTI4LCA4MywgNDgsIDQ4LCA1MywgMTI4LCAKKyAgICA4MywgNDgsIDQ4LCA1MiwgMTI4LCA4MywgNDgsIDQ4LCA1MSwgMTI4LCA4MywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgODMsIAorICAgIDQ4LCA0OCwgNTAsIDEyOCwgODMsIDQ4LCA0OCwgNDksIDEyOCwgODMsIDQ1LCA4NywgMTI4LCA4MywgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA4MiwgODksIDg5LCAxMjgsIDgyLCA4OSwgODgsIDEyOCwgODIsIDg5LCA4NCwgMTI4LCA4MiwgCisgICAgODksIDgyLCA4OCwgMTI4LCA4MiwgODksIDgyLCAxMjgsIDgyLCA4OSwgODAsIDEyOCwgODIsIDg3LCA3OSwgNzksIDEyOCwgCisgICAgODIsIDg3LCA3OSwgMTI4LCA4MiwgODcsIDczLCA3MywgMTI4LCA4MiwgODcsIDczLCAxMjgsIDgyLCA4NywgNjksIDY5LCAKKyAgICAxMjgsIDgyLCA4NywgNjksIDEyOCwgODIsIDg3LCA2NSwgNzIsIDY1LCAxMjgsIDgyLCA4NywgNjUsIDY1LCAxMjgsIDgyLCAKKyAgICA4NywgNjUsIDEyOCwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODUsIDg1LCA2NiwgODUsIDgyLCA4NSwgMTI4LCA4MiwgODUsIAorICAgIDg1LCAxMjgsIDgyLCA4NSwgODQsIDEyOCwgODIsIDg1LCA4MywgNzMsIDEyOCwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIAorICAgIDg1LCA4MiwgMTI4LCA4MiwgODUsIDgwLCA3MywgNzMsIDEyOCwgODIsIDg1LCA4MCwgNjksIDE5NywgODIsIDg1LCA4MCwgCisgICAgMTI4LCA4MiwgODUsIDc5LCA4OCwgMTI4LCA4MiwgODUsIDc5LCA4MCwgMTI4LCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4NSwgCisgICAgNzgsIDc5LCA4NSwgODQsIDEyOCwgODIsIDg1LCA3OCwgNzgsIDczLCA3OCwgMTk5LCA4MiwgODUsIDc4LCA3OCwgNjksIDgyLCAKKyAgICAxMjgsIDgyLCA4NSwgNzgsIDczLCAxOTUsIDgyLCA4NSwgNzgsIDEyOCwgODIsIDg1LCA3NywgMjAxLCA4MiwgODUsIDc3LCAKKyAgICA2NSwgMjAxLCA4MiwgODUsIDc3LCAxMjgsIDgyLCA4NSwgMjA1LCA4MiwgODUsIDc2LCA2OSwgODIsIDEyOCwgODIsIDg1LCAKKyAgICA3NiwgNjksIDQ1LCA2OCwgNjksIDc2LCA2NSwgODksIDY5LCA2OCwgMTI4LCA4MiwgODUsIDc2LCA2OSwgMTI4LCA4MiwgODUsIAorICAgIDc2LCA2NSwgNzMsIDEyOCwgODIsIDg1LCA3NSwgNzUsIDY1LCA3NSwgNzIsIDY1LCAxMjgsIDgyLCA4NSwgNzMsIDgzLCAKKyAgICAxMjgsIDgyLCA4NSwgNzEsIDY2LCAyMTcsIDgyLCA4NSwgNjgsIDczLCA3NywgNjksIDc4LCA4NCwgMTkzLCA4MiwgODUsIAorICAgIDY2LCA3NiwgMTk3LCA4MiwgODUsIDE5NCwgODIsIDg1LCA2NSwgMTI4LCA4MiwgODQsIDcyLCA2NSwgNzgsIDE5OSwgODIsIAorICAgIDg0LCA2NSwgNzEsIDgzLCAxMjgsIDgyLCA4NCwgNjUsIDcxLCAyMTEsIDgyLCA4MiwgODksIDg4LCAxMjgsIDgyLCA4MiwgCisgICAgODksIDg0LCAxMjgsIDgyLCA4MiwgODksIDgyLCA4OCwgMTI4LCA4MiwgODIsIDg5LCA4MiwgMTI4LCA4MiwgODIsIDg5LCAKKyAgICA4MCwgMTI4LCA4MiwgODIsIDg1LCA4OCwgMTI4LCA4MiwgODIsIDg1LCA4NSwgMTI4LCA4MiwgODIsIDg1LCA4NCwgMTI4LCAKKyAgICA4MiwgODIsIDg1LCA4MiwgODgsIDEyOCwgODIsIDgyLCA4NSwgODIsIDEyOCwgODIsIDgyLCA4NSwgODAsIDEyOCwgODIsIAorICAgIDgyLCA4NSwgNzksIDg4LCAxMjgsIDgyLCA4MiwgODUsIDc5LCAxMjgsIDgyLCA4MiwgODUsIDEyOCwgODIsIDgyLCA4MiwgCisgICAgNjUsIDEyOCwgODIsIDgyLCA3OSwgODgsIDEyOCwgODIsIDgyLCA3OSwgODQsIDEyOCwgODIsIDgyLCA3OSwgODAsIDEyOCwgCisgICAgODIsIDgyLCA3OSwgNzksIDEyOCwgODIsIDgyLCA3OSwgMTI4LCA4MiwgODIsIDczLCA3MywgMTI4LCA4MiwgODIsIDczLCAKKyAgICAxMjgsIDgyLCA4MiwgNjksIDg4LCAxMjgsIDgyLCA4MiwgNjksIDg0LCAxMjgsIDgyLCA4MiwgNjksIDgwLCAxMjgsIDgyLCAKKyAgICA4MiwgNjksIDcyLCAxMjgsIDgyLCA4MiwgNjksIDIwMCwgODIsIDgyLCA2OSwgNjksIDEyOCwgODIsIDgyLCA2OSwgMTI4LCAKKyAgICA4MiwgODIsIDY1LCA4OCwgMTI4LCA4MiwgODIsIDY1LCA4NSwgMTI4LCA4MiwgODIsIDY1LCA3MywgMTI4LCA4MiwgODIsIAorICAgIDY1LCA2NSwgMTI4LCA4MiwgNzksIDg3LCA2NiwgNzksIDY1LCA4NCwgMTI4LCA4MiwgNzksIDg1LCA3OCwgNjgsIDY5LCAKKyAgICAxOTYsIDgyLCA3OSwgODUsIDc4LCA2OCwgNDUsIDg0LCA3MywgODAsIDgwLCA2OSwgMTk2LCA4MiwgNzksIDg0LCA4NSwgNzgsIAorICAgIDY4LCA2NSwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgyLCA3OSwgODQsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDczLCA3OSwgNzgsIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDgyLCA3OSwgODQsIDY1LCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MiwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA4MiwgNzksIDg0LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDgyLCA3OSwgODMsIDcyLCAxMjgsIDgyLCA3OSwgODMsIDY5LCA4NCwgODQsIDY5LCAxMjgsIDgyLCA3OSwgCisgICAgODMsIDY5LCAxMjgsIDgyLCA3OSwgNzksIDg0LCAxMjgsIDgyLCA3OSwgNzksIDgzLCA4NCwgNjksIDgyLCAxMjgsIDgyLCAKKyAgICA3OSwgNzksIDc1LCAxMjgsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgyLCA3OSwgNzcsIDY1LCA3OCwgNzMsIDY1LCAyMDYsIAorICAgIDgyLCA3OSwgNzcsIDY1LCAyMDYsIDgyLCA3OSwgNzcsIDEyOCwgODIsIDc5LCA3NiwgNzYsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzksIDc2LCA3NiwgNjksIDIxMCwgODIsIDc5LCA3NiwgNzYsIDY5LCA2OCwgNDUsIDg1LCAyMDgsIDgyLCA3OSwgNzIsIDczLCAKKyAgICA3OCwgNzEsIDg5LCAxOTMsIDgyLCA3OSwgNzEsIDEyOCwgODIsIDc5LCAxOTYsIDgyLCA3OSwgNjcsIDc1LCA2OSwgODQsIAorICAgIDEyOCwgODIsIDc5LCA2NywgMjAzLCA4MiwgNzksIDY3LCAxMjgsIDgyLCA3OSwgNjYsIDc5LCAyMTIsIDgyLCA3OSwgNjYsIAorICAgIDY1LCA4NCwgMTI4LCA4MiwgNzksIDY1LCA4MywgODQsIDY5LCAxOTYsIDgyLCA3OSwgNjUsIDgyLCAxMjgsIDgyLCA3OSwgCisgICAgNjUsIDEyOCwgODIsIDc4LCA4OSwgNzMsIDc4LCAxOTksIDgyLCA3OCwgNzksIDc5LCA3OCwgMTI4LCA4MiwgNzgsIDc5LCAKKyAgICA3OSwgMjA2LCA4MiwgNzgsIDY1LCAyMDUsIDgyLCA3NywgODQsIDEyOCwgODIsIDc2LCA3OSwgMTI4LCA4MiwgNzYsIDc3LCAKKyAgICAxMjgsIDgyLCA3NiwgNzMsIDEyOCwgODIsIDc2LCA2OSwgMTI4LCA4MiwgNzQsIDY5LCAyMTEsIDgyLCA3NCwgNjksIDEyOCwgCisgICAgODIsIDc0LCAxOTcsIDgyLCA3MywgODYsIDY5LCA4MiwgMTI4LCA4MiwgNzMsIDg0LCA4NSwgNjUsIDc2LCAxMjgsIDgyLCAKKyAgICA3MywgODQsIDg0LCA3OSwgODIsIDg1LCAxMjgsIDgyLCA3MywgODQsIDgzLCA3MywgMTI4LCA4MiwgNzMsIDgzLCA3MywgNzgsIAorICAgIDE5OSwgODIsIDczLCA4MywgNzIsIDEyOCwgODIsIDczLCA4MiwgNjUsIDEyOCwgODIsIDczLCA4MCwgODAsIDc2LCAxOTcsIAorICAgIDgyLCA3MywgODAsIDEyOCwgODIsIDczLCA3OCwgNzEsIDIxMSwgODIsIDczLCA3OCwgNzEsIDczLCA3OCwgMTk5LCA4MiwgCisgICAgNzMsIDc4LCA3MCwgNzksIDgyLCA5MCwgNjUsIDc4LCA2OCwgNzksIDEyOCwgODIsIDczLCAyMDYsIDgyLCA3MywgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDEyOCwgODIsIDczLCA3NywgMTI4LCA4MiwgNzMsIDc1LCA4MiwgNzMsIDc1LCAxMjgsIDgyLCA3MywgNzEsIAorICAgIDg2LCA2OSwgNjgsIDczLCAxOTUsIDgyLCA3MywgNzEsIDcyLCA4NCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNzIsIDY1LCA3OCwgMTk2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzksIDQ1LCA3NiwgNjksIAorICAgIDcwLCAyMTIsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgzLCA3MywgNjgsIDE5NywgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgCisgICAgODMsIDcyLCA2NSwgNjgsIDc5LCA4NywgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgODMsIDcyLCA2NSwgNjgsIAorICAgIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzMsIDc4LCAxOTksIDgyLCA3MywgCisgICAgNzEsIDcyLCA4NCwgNDUsIDc2LCA3MywgNzEsIDcyLCA4NCwgNjksIDE5NiwgODIsIDczLCA3MSwgNzIsIDg0LCA0NSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDgyLCA3MywgNzEsIDcyLCA4NCwgNDUsIDcyLCA2NSwgNzgsIDE5NiwgODIsIDczLCA3MSwgCisgICAgNzIsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA4MiwgNzMsIDcwLCAKKyAgICA3NiwgNjksIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODksIDY5LCA4MywgNzMsIDY5LCA4NSwgNzgsIDcxLCAxMjgsIAorICAgIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg5LCA2OSwgNzksIDgyLCA3MywgNzgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIAorICAgIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4OSwgNjksIDc5LCA4MiwgNzMsIDc4LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgCisgICAgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIAorICAgIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDg0LCA3MiwgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA4MiwgNzMsIAorICAgIDY5LCA4NSwgNzYsIDQ1LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgCisgICAgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIAorICAgIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCAKKyAgICA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgCisgICAgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIAorICAgIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgCisgICAgODAsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgODIsIDczLCAKKyAgICA2OSwgODUsIDc2LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgCisgICAgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIAorICAgIDgzLCA3MywgNzksIDgzLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDc1LCAKKyAgICA3MywgODksIDY5LCA3OSwgNzUsIDEyOCwgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgCisgICAgNzIsIDczLCA2OSwgODUsIDcyLCAxMjgsIDgyLCA3MywgNjksIDg1LCA3NiwgNDUsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCAKKyAgICA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgCisgICAgODIsIDczLCA2OSwgODUsIDc2LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgCisgICAgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDgyLCA3MywgNjksIDg1LCAKKyAgICA3NiwgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgyLCA3MywgCisgICAgNjksIDg1LCA3NiwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgODIsIDczLCA2OSwgODUsIDIwNCwgODIsIDczLCA2OSwgNzYsIDEyOCwgODIsIDczLCA2OSwgCisgICAgNjksIDEyOCwgODIsIDczLCA2NywgNjksIDc3LCAxMjgsIDgyLCA3MywgNjcsIDY5LCAxMjgsIDgyLCA3MywgNjcsIDE5NywgCisgICAgODIsIDczLCA2NiwgNjYsIDc5LCA3OCwgMTI4LCA4MiwgNzMsIDY2LCA2NiwgNzksIDIwNiwgODIsIDczLCA2NSwgMjA0LCAKKyAgICA4MiwgNzIsIDc5LCA4NCwgNzMsIDE5NSwgODIsIDcyLCA3OSwgMTI4LCA4MiwgNzIsIDIwNywgODIsIDcyLCA3MywgNzgsIAorICAgIDc5LCA2NywgNjksIDgyLCA3OSwgODMsIDEyOCwgODIsIDcyLCA2NSwgMTI4LCA4MiwgNzIsIDEyOCwgODIsIDcxLCA4OSwgCisgICAgNzMsIDc4LCA3MSwgODMsIDEyOCwgODIsIDcxLCA4OSwgNjUsIDc4LCAxMjgsIDgyLCA3MSwgODksIDE5MywgODIsIDY5LCAKKyAgICA4NiwgNzksIDc2LCA4NiwgNzMsIDc4LCAxOTksIDgyLCA2OSwgODYsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAorICAgIDgyLCA2OSwgODYsIDc3LCA2NSwgMTI4LCA4MiwgNjksIDg2LCA3MywgNjUsIDEyOCwgODIsIDY5LCA4NiwgNjksIDgyLCA4MywgCisgICAgNjksIDY4LCA0NSwgODMsIDY3LCA3MiwgODcsIDY1LCAxMjgsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgMTI4LCAKKyAgICA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgMTk2LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCAxOTcsIDgyLCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDgyLCA2OSwgODUsIDEyOCwgODIsIDY5LCA4NCwgODUsIDgyLCA3OCwgMTI4LCA4MiwgNjksIDg0LCA4NSwgCisgICAgODIsIDIwNiwgODIsIDY5LCA4NCwgODIsIDc5LCA3MCwgNzYsIDY5LCAyMTYsIDgyLCA2OSwgODQsIDgyLCA2OSwgNjUsIDg0LCAKKyAgICAxMjgsIDgyLCA2OSwgODQsIDc5LCA4MiwgODQsIDEyOCwgODIsIDY5LCA4MywgODUsIDgwLCA3MywgNzgsIDg1LCA4MywgCisgICAgMTI4LCA4MiwgNjksIDgzLCA4NCwgODIsIDc5LCA3OSwgNzcsIDEyOCwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjcsIDg0LCAKKyAgICA2OSwgMTk2LCA4MiwgNjksIDgzLCA4NCwgMTI4LCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA4MywgNjksIDEyOCwgODIsIAorICAgIDY5LCA4MywgNzksIDg1LCA4MiwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDc5LCA3NiwgODUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODMsIDczLCA4MywgODQsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDgyLCA2OSwgODMsIDczLCA2OCwgNjksIAorICAgIDc4LCA2NywgNjksIDEyOCwgODIsIDY5LCA4MywgMjAwLCA4MiwgNjksIDgyLCA2OSwgNzgsIDcxLCA3MSwgNjUsIDc4LCAKKyAgICAxMjgsIDgyLCA2OSwgODIsIDY5LCA3NSwgNjUsIDc4LCAxMjgsIDgyLCA2OSwgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgODIsIDY5LCA4MCwgNzYsIDY1LCA2NywgNjksIDc3LCA2OSwgNzgsIDIxMiwgODIsIDY5LCA4MCwgNzIsIDEyOCwgCisgICAgODIsIDY5LCA4MCwgNjksIDg0LCA3MywgODQsIDczLCA3OSwgMjA2LCA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA4MiwgNjksIDgwLCA2OSwgNjUsIDg0LCAxMjgsIDgyLCA2OSwgODAsIDY5LCA2NSwgMjEyLCA4MiwgNjksIDgwLCA2NSwgODksIAorICAgIDY1LCAxMjgsIDgyLCA2OSwgODAsIDY1LCAxMjgsIDgyLCA2OSwgODAsIDE5MywgODIsIDY5LCA3OCwgODQsIDc5LCA3MSwgCisgICAgNjksIDc4LCAxMjgsIDgyLCA2OSwgNzgsIDEyOCwgODIsIDY5LCAyMDYsIDgyLCA2OSwgNzcsIDg1LCAxMjgsIDgyLCA2OSwgCisgICAgNzcsIDczLCA3OCwgNjgsIDY5LCAyMTAsIDgyLCA2OSwgNzcsIDY5LCA2OCwgODksIDEyOCwgODIsIDY5LCA3NiwgNzMsIDcxLCAKKyAgICA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDczLCA2OSwgODYsIDY5LCAxOTYsIDgyLCA2OSwgNzYsIDY5LCA2NSwgODMsIAorICAgIDY5LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4OCwgNjksIDY4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgODIsIDY5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNzYsIDY1LCA2NSwgMTI4LCAKKyAgICA4MiwgNjksIDc0LCA2NSwgNzgsIDE5OSwgODIsIDY5LCA3MywgMTk2LCA4MiwgNjksIDczLCAxMjgsIDgyLCA2OSwgNzEsIAorICAgIDg1LCA3NiwgODUsIDgzLCA0NSwgNTIsIDEyOCwgODIsIDY5LCA3MSwgODUsIDc2LCA4NSwgODMsIDQ1LCA1MSwgMTI4LCA4MiwgCisgICAgNjksIDcxLCA4NSwgNzYsIDg1LCA4MywgNDUsIDUwLCAxMjgsIDgyLCA2OSwgNzEsIDg1LCA3NiwgODUsIDgzLCAxMjgsIDgyLCAKKyAgICA2OSwgNzEsIDg1LCA3NiwgODUsIDIxMSwgODIsIDY5LCA3MSwgNzMsIDgzLCA4NCwgNjksIDgyLCA2OSwgMTk2LCA4MiwgNjksIAorICAgIDcxLCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MiwgNjksIDcxLCA3MywgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNjksIDcxLCA3MywgCisgICAgNjUsIDEyOCwgODIsIDY5LCA3MCwgNzksIDgyLCA3NywgNjksIDE5NiwgODIsIDY5LCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAKKyAgICAxOTcsIDgyLCA2OSwgNjgsIDg1LCA4MCwgNzYsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgyLCA2OSwgNjcsIAorICAgIDg5LCA2NywgNzYsIDczLCA3OCwgMTk5LCA4MiwgNjksIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTk2LCA4MiwgNjksIDY3LCA4NCwgCisgICAgNzMsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCAKKyAgICA4MiwgNjksIDY3LCA4NCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDgyLCA2OSwgNjcsIDg0LCA2NSwgNzgsIDcxLCA3NiwgCisgICAgMTk3LCA4MiwgNjksIDY3LCA4MiwgNjksIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgODIsIDY5LCA2NywgNzksIDgyLCAKKyAgICA2OCwgNzMsIDc4LCAxOTksIDgyLCA2OSwgNjcsIDc5LCA4MiwgNjgsIDY5LCA4MiwgMTI4LCA4MiwgNjksIDY3LCA3OSwgODIsIAorICAgIDY4LCAxMjgsIDgyLCA2OSwgNjcsIDc5LCA4MiwgMTk2LCA4MiwgNjksIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIDg2LCAKKyAgICAxOTcsIDgyLCA2OSwgNjcsIDY5LCA4MCwgODQsIDczLCA4NiwgMTk3LCA4MiwgNjksIDY3LCA2OSwgNzMsIDg2LCA2OSwgODIsIAorICAgIDEyOCwgODIsIDY5LCA2NywgNjksIDczLCA4NiwgNjksIDIxMCwgODIsIDY5LCA2NSwgNzYsIDcxLCA2NSwgODIsIDQ1LCA1MCwgCisgICAgMTI4LCA4MiwgNjksIDY1LCA3NiwgNzEsIDY1LCA4MiwgMTI4LCA4MiwgNjksIDY1LCA3MiwgNzcsIDg1LCA3NSwgMTI4LCAKKyAgICA4MiwgNjksIDY1LCA2NywgNzIsIDEyOCwgODIsIDY4LCAyMDcsIDgyLCA2OCwgNjksIDIwNCwgODIsIDY2LCA2NSwgODMsIAorICAgIDE5MywgODIsIDY1LCA4OSwgODMsIDEyOCwgODIsIDY1LCA4OSwgMjExLCA4MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCisgICAgMTI4LCA4MiwgNjUsIDg0LCA3MywgNzksIDEyOCwgODIsIDY1LCA4NCwgNzIsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDcyLCAKKyAgICAxOTMsIDgyLCA2NSwgODQsIDY1LCAxMjgsIDgyLCA2NSwgODQsIDEyOCwgODIsIDY1LCA4MywgODcsIDY1LCA2OCwgNzMsIAorICAgIDEyOCwgODIsIDY1LCA4MywgNzksIDg1LCAyMDQsIDgyLCA2NSwgODMsIDcyLCA2NSwgMTI4LCA4MiwgNjUsIDgxLCAxMjgsIAorICAgIDgyLCA2NSwgODAsIDczLCA4MywgNzcsIDY1LCAxMjgsIDgyLCA2NSwgNzgsIDcxLCAxOTcsIDgyLCA2NSwgNzgsIDY1LCAKKyAgICAxMjgsIDgyLCA2NSwgNzgsIDEyOCwgODIsIDY1LCA3NywgMjExLCA4MiwgNjUsIDc3LCA2NiwgNjUsIDg0LCAxMjgsIDgyLCAKKyAgICA2NSwgNzUsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNzUsIDY1LCA2NSwgODIsIDY1LCA2NSwgNzgsIDgzLCA2NSwgCisgICAgODksIDY1LCAxMjgsIDgyLCA2NSwgNzMsIDgzLCA3MywgNzgsIDE5OSwgODIsIDY1LCA3MywgODMsIDY5LCAxOTYsIDgyLCAKKyAgICA2NSwgNzMsIDc4LCA2NiwgNzksIDg3LCAxMjgsIDgyLCA2NSwgNzMsIDc2LCA4NywgNjUsIDg5LCAxMjgsIDgyLCA2NSwgNzMsIAorICAgIDc2LCA4NywgNjUsIDIxNywgODIsIDY1LCA3MywgNzYsIDEyOCwgODIsIDY1LCA3MywgNjgsIDIwNywgODIsIDY1LCA3MywgCisgICAgNjgsIDY1LCAxMjgsIDgyLCA2NSwgNzIsIDc3LCA2NSwgODQsIDg1LCA3NiwgNzYsIDY1LCAyMDAsIDgyLCA2NSwgNzIsIAorICAgIDEyOCwgODIsIDY1LCA3MCwgNjksIDEyOCwgODIsIDY1LCA2OSwgNzcsIDEyOCwgODIsIDY1LCA2OCwgNzMsIDc5LCA2NSwgCisgICAgNjcsIDg0LCA3MywgODYsIDE5NywgODIsIDY1LCA2OCwgNzMsIDc5LCAxMjgsIDgyLCA2NSwgNjgsIDczLCAyMDcsIDgyLCAKKyAgICA2NSwgNjgsIDIwMSwgODIsIDY1LCA2OCwgMTI4LCA4MiwgNjUsIDE5NiwgODIsIDY1LCA2NywgODEsIDg1LCA2OSwgMjEyLCAKKyAgICA4MiwgNjUsIDY3LCA3MywgNzgsIDcxLCAxMjgsIDgyLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA4MiwgNjUsIDY2LCA2NiwgNzMsIAorICAgIDg0LCAxMjgsIDgyLCA2NSwgNjYsIDY2LCA3MywgMjEyLCA4MiwgNjUsIDY2LCAxMjgsIDgyLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDgyLCA2NSwgNTEsIDEyOCwgODIsIDY1LCA1MCwgMTI4LCA4MiwgNjUsIDQ1LCA1MCwgMTI4LCA4MiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA4MiwgNDgsIDUwLCA1NiwgMTI4LCA4MiwgNDgsIDUwLCA1NSwgMTI4LCA4MiwgNDgsIDUwLCA1NCwgMTI4LCA4MiwgCisgICAgNDgsIDUwLCA1MywgMTI4LCA4MiwgNDgsIDUwLCA1MiwgMTI4LCA4MiwgNDgsIDUwLCA1MSwgMTI4LCA4MiwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA4MiwgNDgsIDUwLCA0OSwgMTI4LCA4MiwgNDgsIDUwLCA0OCwgMTI4LCA4MiwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA4MiwgNDgsIDQ5LCA1NiwgMTI4LCA4MiwgNDgsIDQ5LCA1NSwgMTI4LCA4MiwgNDgsIDQ5LCA1NCwgNjUsIDEyOCwgODIsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgODIsIDQ4LCA0OSwgNTMsIDEyOCwgODIsIDQ4LCA0OSwgNTIsIDEyOCwgODIsIDQ4LCA0OSwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OSwgNTAsIDEyOCwgODIsIDQ4LCA0OSwgNDksIDEyOCwgODIsIDQ4LCA0OSwgNDgsIDY1LCAKKyAgICAxMjgsIDgyLCA0OCwgNDksIDQ4LCAxMjgsIDgyLCA0OCwgNDgsIDU3LCAxMjgsIDgyLCA0OCwgNDgsIDU2LCAxMjgsIDgyLCAKKyAgICA0OCwgNDgsIDU1LCAxMjgsIDgyLCA0OCwgNDgsIDU0LCAxMjgsIDgyLCA0OCwgNDgsIDUzLCAxMjgsIDgyLCA0OCwgNDgsIAorICAgIDUyLCAxMjgsIDgyLCA0OCwgNDgsIDUxLCA2NiwgMTI4LCA4MiwgNDgsIDQ4LCA1MSwgNjUsIDEyOCwgODIsIDQ4LCA0OCwgCisgICAgNTEsIDEyOCwgODIsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDgyLCA0OCwgNDgsIDUwLCAxMjgsIDgyLCA0OCwgNDgsIDQ5LCAKKyAgICAxMjgsIDgyLCA0NSwgNjcsIDgyLCA2OSwgMTk3LCA4MSwgODksIDg4LCAxMjgsIDgxLCA4OSwgODUsIDEyOCwgODEsIDg5LCAKKyAgICA4NCwgMTI4LCA4MSwgODksIDgyLCA4OCwgMTI4LCA4MSwgODksIDgyLCAxMjgsIDgxLCA4OSwgODAsIDEyOCwgODEsIDg5LCAKKyAgICA3OSwgMTI4LCA4MSwgODksIDczLCAxMjgsIDgxLCA4OSwgNjksIDY5LCAxMjgsIDgxLCA4OSwgNjksIDEyOCwgODEsIDg5LCAKKyAgICA2NSwgNjUsIDEyOCwgODEsIDg5LCA2NSwgMTI4LCA4MSwgODksIDEyOCwgODEsIDg3LCA3MywgMTI4LCA4MSwgODcsIDY5LCAKKyAgICA2OSwgMTI4LCA4MSwgODcsIDY5LCAxMjgsIDgxLCA4NywgNjUsIDY1LCAxMjgsIDgxLCA4NywgNjUsIDEyOCwgODEsIDg1LCAKKyAgICA4OCwgMTI4LCA4MSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDg2LCAxMjgsIDgxLCA4NSwgODUsIDEyOCwgODEsIDg1LCAKKyAgICA4NCwgMTI4LCA4MSwgODUsIDgzLCA3MiwgODMsIDcyLCA2NSwgODksIDY1LCAxMjgsIDgxLCA4NSwgODIsIDg4LCAxMjgsIAorICAgIDgxLCA4NSwgODIsIDEyOCwgODEsIDg1LCA4MCwgMTI4LCA4MSwgODUsIDc5LCA4OCwgMTI4LCA4MSwgODUsIDc5LCA4NCwgCisgICAgMTk3LCA4MSwgODUsIDc5LCA4NCwgNjUsIDg0LCA3MywgNzksIDIwNiwgODEsIDg1LCA3OSwgODQsIDEyOCwgODEsIDg1LCAKKyAgICA3OSwgODAsIDEyOCwgODEsIDg1LCA3OSwgMTI4LCA4MSwgODUsIDc1LCAxMjgsIDgxLCA4NSwgNzMsIDc4LCA4NCwgNjksIAorICAgIDgzLCA4MywgNjksIDc4LCA2NywgNjksIDEyOCwgODEsIDg1LCA3MywgNzgsIDY4LCA3MywgNjcsIDY5LCA4MywgNzMsIDc3LCAKKyAgICAxOTMsIDgxLCA4NSwgNzMsIDc4LCA2NywgODUsIDc4LCA4OCwgMTI4LCA4MSwgODUsIDczLCA3OCwgNjUsIDgyLCA3MywgODUsIAorICAgIDIxMSwgODEsIDg1LCA3MywgNzYsIDIxMiwgODEsIDg1LCA3MywgNzYsIDc2LCAxMjgsIDgxLCA4NSwgNzMsIDY3LCAyMDMsIAorICAgIDgxLCA4NSwgNzMsIDEyOCwgODEsIDg1LCA3MCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgNzgsIDY5LCAKKyAgICAxOTYsIDgxLCA4NSwgNjksIDgzLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY5LCA4MywgODQsIDczLCA3OSwgCisgICAgMjA2LCA4MSwgODUsIDY5LCA2OSwgNzgsIDEyOCwgODEsIDg1LCA2OSwgNjksIDIwNiwgODEsIDg1LCA2OSwgMTI4LCA4MSwgCisgICAgODUsIDY2LCA4NSwgODQsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDg0LCA2OSwgODIsIDc4LCA3MywgNzksIDIwNiwgODEsIDg1LCAKKyAgICA2NSwgODIsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDgxLCA4NSwgNjUsIDgyLCA4NCwgNjksIDgyLCAyMTEsIDgxLCA4NSwgNjUsIAorICAgIDgyLCA4NCwgNjksIDgyLCAxMjgsIDgxLCA4NSwgNjUsIDc4LCA4NCwgNzMsIDg0LCAyMTcsIDgxLCA4NSwgNjUsIDY4LCA4MiwgCisgICAgODUsIDgwLCA3NiwgMTk3LCA4MSwgODUsIDY1LCA2OCwgODIsIDY1LCA3OCwgODQsIDEyOCwgODEsIDg1LCA2NSwgNjgsIDgyLCAKKyAgICA2NSwgNzgsIDIxMiwgODEsIDg1LCA2NSwgNjgsIDY3LCA3OSwgNzYsIDc5LCA3OCwgMTI4LCA4MSwgODUsIDY1LCA2OCwgCisgICAgMTI4LCA4MSwgODUsIDY1LCAxOTYsIDgxLCA4NSwgNjUsIDEyOCwgODEsIDg1LCAxMjgsIDgxLCAyMDgsIDgxLCA3OSwgODgsIAorICAgIDEyOCwgODEsIDc5LCA4NCwgMTI4LCA4MSwgNzksIDgwLCA3MiwgMTI4LCA4MSwgNzksIDgwLCA2NSwgMTI4LCA4MSwgNzksIAorICAgIDgwLCAxMjgsIDgxLCA3OSwgNzksIDEyOCwgODEsIDc5LCAyMDcsIDgxLCA3OSwgNzAsIDEyOCwgODEsIDc5LCAxOTgsIDgxLCAKKyAgICA3OSwgNjUsIDEyOCwgODEsIDc5LCAxMjgsIDgxLCA3OCwgMTI4LCA4MSwgNzMsIDg4LCAxMjgsIDgxLCA3MywgODQsIDgzLCAKKyAgICA2NSwgMTI4LCA4MSwgNzMsIDg0LCAxMjgsIDgxLCA3MywgODAsIDEyOCwgODEsIDczLCA3MywgMTI4LCA4MSwgNzMsIDcwLCAKKyAgICAxMjgsIDgxLCA3MywgNjksIDg4LCAxMjgsIDgxLCA3MywgNjksIDg0LCAxMjgsIDgxLCA3MywgNjksIDgwLCAxMjgsIDgxLCAKKyAgICA3MywgNjksIDEyOCwgODEsIDczLCAxMjgsIDgxLCA3MiwgODcsIDczLCAxMjgsIDgxLCA3MiwgODcsIDY5LCA2OSwgMTI4LCAKKyAgICA4MSwgNzIsIDg3LCA2OSwgMTI4LCA4MSwgNzIsIDg3LCA2NSwgNjUsIDEyOCwgODEsIDcyLCA4NywgNjUsIDEyOCwgODEsIAorICAgIDcyLCA4NSwgMTI4LCA4MSwgNzIsIDc5LCA4MCwgNzIsIDEyOCwgODEsIDcyLCA3OSwgMTI4LCA4MSwgNzIsIDczLCAxMjgsIAorICAgIDgxLCA3MiwgNjksIDY5LCAxMjgsIDgxLCA3MiwgNjksIDEyOCwgODEsIDcyLCA2NSwgODUsIDEyOCwgODEsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgODEsIDcyLCA2NSwgMTI4LCA4MSwgNzEsIDY1LCAxMjgsIDgxLCA2OSwgODQsIDY1LCA3OCwgNjUsIDEyOCwgCisgICAgODEsIDY5LCA2OSwgMTI4LCA4MSwgNjksIDEyOCwgODEsIDY1LCA4OSwgMTI4LCA4MSwgNjUsIDg1LCAxMjgsIDgxLCA2NSwgCisgICAgODQsIDY1LCA3OCwgMTI4LCA4MSwgNjUsIDgyLCA3OCwgNjksIDIxNywgODEsIDY1LCA4MiwgMTI4LCA4MSwgNjUsIDgxLCAKKyAgICAxMjgsIDgxLCA2NSwgODAsIDcyLCAxMjgsIDgxLCA2NSwgNzcsIDY1LCA4NCwgODMsIDEyOCwgODEsIDY1LCA3NywgNjUsIAorICAgIDg0LCAyMTEsIDgxLCA2NSwgNzYsIDE5MywgODEsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNzMsIDEyOCwgODEsIDY1LCA3MCwgMTI4LCA4MSwgNjUsIDE5OCwgODEsIDY1LCA2OCwgNzcsIDY1LCAxMjgsIDgxLCA2NSwgCisgICAgNjUsIDczLCAxMjgsIDgxLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA4MSwgNjUsIDY1LCA3MCwgMTI4LCA4MSwgNDgsIDQ4LCAKKyAgICA1NSwgMTI4LCA4MSwgNDgsIDQ4LCA1NCwgMTI4LCA4MSwgNDgsIDQ4LCA1MywgMTI4LCA4MSwgNDgsIDQ4LCA1MiwgMTI4LCAKKyAgICA4MSwgNDgsIDQ4LCA1MSwgMTI4LCA4MSwgNDgsIDQ4LCA1MCwgMTI4LCA4MSwgNDgsIDQ4LCA0OSwgMTI4LCA4MCwgOTAsIAorICAgIDEyOCwgODAsIDg5LCA4OCwgMTI4LCA4MCwgODksIDg0LCAxMjgsIDgwLCA4OSwgODIsIDg4LCAxMjgsIDgwLCA4OSwgODIsIAorICAgIDEyOCwgODAsIDg5LCA4MCwgMTI4LCA4MCwgODcsIDc5LCA4OSwgMTI4LCA4MCwgODcsIDc5LCA3OSwgMTI4LCA4MCwgODcsIAorICAgIDc5LCAxMjgsIDgwLCA4NywgMjA3LCA4MCwgODcsIDczLCA3MywgMTI4LCA4MCwgODcsIDczLCAxMjgsIDgwLCA4NywgNjksIAorICAgIDY5LCAxMjgsIDgwLCA4NywgNjksIDEyOCwgODAsIDg3LCA2NSwgNjUsIDEyOCwgODAsIDg3LCAxMjgsIDgwLCA4NiwgMTI4LCAKKyAgICA4MCwgODUsIDg4LCAxMjgsIDgwLCA4NSwgODUsIDg0LCAxMjgsIDgwLCA4NSwgODUsIDEyOCwgODAsIDg1LCA4NCwgODIsIAorICAgIDY5LCA3MCwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDg0LCAxMjgsIDgwLCA4NSwgMjEyLCA4MCwgCisgICAgODUsIDgzLCA3MiwgODAsIDczLCA3OCwgMTI4LCA4MCwgODUsIDgzLCA3MiwgODAsIDczLCA3NSwgNjUsIDEyOCwgODAsIDg1LCAKKyAgICA4MywgNzIsIDczLCA3OCwgMTk5LCA4MCwgODUsIDgyLCA4OCwgMTI4LCA4MCwgODUsIDgyLCA4MywgNjksIDEyOCwgODAsIAorICAgIDg1LCA4MiwgODAsIDc2LCAxOTcsIDgwLCA4NSwgODIsIDc4LCA2NSwgNzcsIDY1LCAxMjgsIDgwLCA4NSwgODIsIDczLCA4NCwgCisgICAgODksIDEyOCwgODAsIDg1LCA4MiwgNzMsIDcwLCA4OSwgMTI4LCA4MCwgODUsIDgyLCAxMjgsIDgwLCA4NSwgODEsIDEyOCwgCisgICAgODAsIDg1LCA4MCwgMTI4LCA4MCwgODUsIDc5LCA4OCwgMTI4LCA4MCwgODUsIDc5LCA4MCwgMTI4LCA4MCwgODUsIDc5LCAKKyAgICAxMjgsIDgwLCA4NSwgNzgsIDcxLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA4NSwgNzgsIDcxLCAxMjgsIDgwLCA4NSwgNzgsIAorICAgIDY3LCA4NCwgODUsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODUsIDc4LCA2NywgODQsIDg1LCA2NSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA4MCwgODUsIDc3LCA4MCwgMTI4LCA4MCwgODUsIDc3LCAxMjgsIDgwLCA4NSwgNzAsIDcwLCA2OSwgNjgsIAorICAgIDEyOCwgODAsIDg1LCA2OSwgMTI4LCA4MCwgODUsIDY3LCA3NSwgMTI4LCA4MCwgODUsIDY2LCA3NiwgNzMsIDE5NSwgODAsIAorICAgIDg1LCAxOTQsIDgwLCA4NSwgNjUsIDgxLCAxMjgsIDgwLCA4NSwgNjUsIDY5LCAxMjgsIDgwLCA4NSwgNTAsIDEyOCwgODAsIAorICAgIDg1LCA0OSwgMTI4LCA4MCwgODUsIDEyOCwgODAsIDg0LCA3MiwgNjUsIDcyLCAxOTMsIDgwLCA4NCwgNjksIDEyOCwgODAsIAorICAgIDgzLCA3MywgNzYsIDIwMSwgODAsIDgzLCA3MywgNzAsIDczLCA4MywgODQsIDc5LCA4MywgODksIDc4LCA2NSwgNzEsIDc3LCAKKyAgICA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgCisgICAgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCA3MCwgNzMsIDgzLCA4NCwgNzksIDIwNiwgODAsIDgzLCA3MywgNzAsIDczLCAKKyAgICA4MywgODQsIDc5LCA3NiwgODksIDcxLCA3MywgODMsIDc3LCA2NSwgMTI4LCA4MCwgODMsIDczLCAxMjgsIDgwLCA4MywgNjUsIAorICAgIDc2LCA4NCwgNjksIDIxMCwgODAsIDgzLCAxMjgsIDgwLCA4MiwgNzksIDg2LCA2OSwgMTI4LCA4MCwgODIsIDc5LCA4NCwgCisgICAgNzksIDg2LCA2NSwgODIsIDg5LCAyMTEsIDgwLCA4MiwgNzksIDg0LCA3OSwgMjExLCA4MCwgODIsIDc5LCA4NCwgNjksIDY3LCAKKyAgICA4NCwgNjksIDE5NiwgODAsIDgyLCA3OSwgODMsIDcxLCA2OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA2OSwgNzgsIDczLCAxMjgsIAorICAgIDgwLCA4MiwgNzksIDgwLCA3OSwgODIsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA4MCwgODIsIDc5LCA4MCwgNzksIDgyLCAKKyAgICA4NCwgNzMsIDc5LCA3OCwgMTI4LCA4MCwgODIsIDc5LCA4MCwgNjksIDgyLCA4NCwgMjE3LCA4MCwgODIsIDc5LCA4MCwgNjksIAorICAgIDc2LCA3NiwgNjksIDIxMCwgODAsIDgyLCA3OSwgNzksIDcwLCAxMjgsIDgwLCA4MiwgNzksIDc2LCA3OSwgNzgsIDcxLCA2OSwgCisgICAgMTk2LCA4MCwgODIsIDc5LCA3NiwgNjUsIDg0LCA3MywgNzksIDc4LCAxOTcsIDgwLCA4MiwgNzksIDc0LCA2OSwgNjcsIDg0LCAKKyAgICA3OSwgODIsIDEyOCwgODAsIDgyLCA3OSwgNzQsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDEyOCwgODAsIDgyLCA3OSwgNzQsIAorICAgIDY5LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDgyLCA3OSwgNzIsIDczLCA2NiwgNzMsIDg0LCA2OSwgMTk2LCA4MCwgCisgICAgODIsIDc5LCA3MSwgODIsIDY5LCA4MywgODMsIDEyOCwgODAsIDgyLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDc5LCAKKyAgICA3MCwgNzksIDg1LCA3OCwgNjgsIDEyOCwgODAsIDgyLCA3OSwgNjgsIDg1LCA2NywgODQsIDEyOCwgODAsIDgyLCA3OSwgNjgsIAorICAgIDg1LCA2NywgMjEyLCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCA2OSwgMTI4LCA4MCwgODIsIDczLCA4NiwgNjUsIDg0LCAKKyAgICAxOTcsIDgwLCA4MiwgNzMsIDg2LCA2NSwgNjcsIDIxNywgODAsIDgyLCA3MywgODMsIDcyLCA4NCwgNzIsIDY1LCA3NywgNjUsIAorICAgIDg0LCA4MiwgMTkzLCA4MCwgODIsIDczLCA3OCwgODQsIDgzLCAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc4LCA4NCwgNjksIDIxMCwgODAsIDgyLCA3MywgNzgsIDg0LCAxMjgsIDgwLCA4MiwgNzMsIAorICAgIDc4LCAyMTIsIDgwLCA4MiwgNzMsIDc4LCA2NywgNjksIDgzLCA4MywgMTI4LCA4MCwgODIsIDczLCA3OCwgNjcsIDY5LCAKKyAgICAxMjgsIDgwLCA4MiwgNzMsIDc3LCA2OSwgMTI4LCA4MCwgODIsIDczLCA3NywgMTk3LCA4MCwgODIsIDY5LCA4NiwgNzMsIAorICAgIDc5LCA4NSwgMjExLCA4MCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIDgwLCA4MiwgNjksIDgzLCA2OSwgODQsIDEyOCwgCisgICAgODAsIDgyLCA2OSwgODMsIDY5LCA3OCwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDgwLCA4MiwgNjksIDgzLCA2NywgODIsIAorICAgIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA4MCwgODIsIDY5LCA4MCwgNzksIDc4LCA2OCwgNjksIDgyLCA2NSwgNzgsIDY3LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA3OCwgNzUsIDcyLCA2NSwgMTI4LCA4MCwgODIsIDY5LCA3MSwgNzgsIDY1LCA3OCwgCisgICAgMjEyLCA4MCwgODIsIDY5LCA3MCwgNjUsIDY3LCAxOTcsIDgwLCA4MiwgNjksIDY3LCA3MywgODAsIDczLCA4NCwgNjUsIDg0LCAKKyAgICA2OSwgMTI4LCA4MCwgODIsIDY5LCA2NywgNjksIDY4LCA3MywgNzgsIDE5OSwgODAsIDgyLCA2OSwgNjcsIDY5LCA2OCwgNjksIAorICAgIDgzLCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAyMTEsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAKKyAgICAxOTYsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDY5LCAxMjgsIDgwLCA4MiwgNjksIDY3LCA2OSwgNjgsIDE5NywgODAsIAorICAgIDgyLCA2NSwgODksIDY5LCAyMTAsIDgwLCA4MiwgNjUsIDc3LCA0NSwgODAsIDczLCA3MywgMTI4LCA4MCwgODIsIDY1LCA3NywgCisgICAgNDUsIDgwLCA3MywgMjAxLCA4MCwgODIsIDY1LCA3NywgNDUsIDc3LCA4NSwgNzksIDg5LCAxMjgsIDgwLCA4MiwgNjUsIDc3LCAKKyAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA4NSwgNzksIDc4LCAxMjgsIDgwLCA4MiwgNjUsIAorICAgIDc3LCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA4MCwgODIsIDY1LCA3NywgNDUsIDY2LCA2OSwgNzMsIDEyOCwgODAsIDgyLCA2NSwgCisgICAgNzcsIDQ1LCA2NiwgNjksIDIwMSwgODAsIDgyLCA2NSwgNzcsIDEyOCwgODAsIDgyLCA2NSwgMjA1LCA4MCwgODIsIDEyOCwgCisgICAgODAsIDgwLCA4NiwgMTI4LCA4MCwgODAsIDc3LCAxMjgsIDgwLCA4MCwgNjUsIDEyOCwgODAsIDc5LCA4OSwgMTI4LCA4MCwgCisgICAgNzksIDg4LCAxMjgsIDgwLCA3OSwgODcsIDY5LCA4MiwgMjExLCA4MCwgNzksIDg3LCA2OSwgODIsIDEyOCwgODAsIDc5LCAKKyAgICA4NywgNjksIDIxMCwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgNjksIDE5NiwgODAsIDc5LCA4NywgNjgsIDY5LCA4MiwgCisgICAgMTI4LCA4MCwgNzksIDg1LCA3OCwgMTk2LCA4MCwgNzksIDg1LCA3NiwgODQsIDgyLCAyMTcsIDgwLCA3OSwgODUsIDY3LCAKKyAgICA3MiwgMTI4LCA4MCwgNzksIDg0LCA2NSwgODQsIDc5LCAxMjgsIDgwLCA3OSwgODQsIDY1LCA2NiwgNzYsIDE5NywgODAsIAorICAgIDc5LCAyMTIsIDgwLCA3OSwgODMsIDg0LCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgMjA2LCA4MCwgNzksIDgzLCA4NCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA4MCwgNzksIDgzLCA4NCwgNjUsIDIwNCwgODAsIDc5LCA4MywgODQsIDEyOCwgODAsIDc5LCAKKyAgICA4MywgMjEyLCA4MCwgNzksIDgzLCA4MywgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA4MCwgNzksIDgzLCA3MywgODQsIAorICAgIDczLCA3OSwgNzgsIDgzLCAxMjgsIDgwLCA3OSwgODIsIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDgwLCA3OSwgODIsIDgyLCA2OSwgCisgICAgNjcsIDg0LCA4NSwgODMsIDEyOCwgODAsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDg1LCAyMTEsIDgwLCA3OSwgODAsIDgwLCAKKyAgICA3MywgNzgsIDE5OSwgODAsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA4MCwgNzksIDgwLCA2NywgNzksIDgyLCA3OCwgCisgICAgMTI4LCA4MCwgNzksIDgwLCAxMjgsIDgwLCA3OSwgMjA4LCA4MCwgNzksIDc5LCA2OCwgNzYsIDY5LCAxMjgsIDgwLCA3OSwgCisgICAgNzksIDEyOCwgODAsIDc5LCA3OCwgNjgsIDc5LCAxMjgsIDgwLCA3OSwgMjA2LCA4MCwgNzksIDc3LCA3NywgNjksIDY5LCAKKyAgICAxMjgsIDgwLCA3OSwgNzcsIDc3LCA2OSwgMTk3LCA4MCwgNzksIDc2LCA3OSwgMTI4LCA4MCwgNzksIDc2LCA3MywgODMsIAogICAgIDcyLCAxMjgsIDgwLCA3OSwgNzYsIDczLCA2NywgMTk3LCA4MCwgNzksIDc2LCAyMDEsIDgwLCA3OSwgNzYsIDY5LCAxMjgsIAogICAgIDgwLCA3OSwgNzYsIDE5NywgODAsIDc5LCA3NSwgODIsIDg5LCA4NCwgNzMsIDY5LCAxMjgsIDgwLCA3OSwgNzUsIDc5LCA3NCwgCiAgICAgNzMsIDEyOCwgODAsIDc5LCA3MywgNzgsIDg0LCAyMTEsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNzksIDEyOCwgODAsIDc5LCAKQEAgLTE2OTEsNzYgKzE3MDUsNzggQEAKICAgICA4MCwgNjksIDgyLCA3MCwgNjksIDY3LCA4NCwgMTkzLCA4MCwgNjksIDgyLCA2NywgODUsIDgzLCA4MywgNzMsIDg2LCA2OSwgCiAgICAgMTI4LCA4MCwgNjksIDgyLCA2NywgNjksIDc4LCAyMTIsIDgwLCA2OSwgODAsIDgwLCA2OSwgODIsIDEyOCwgODAsIDY5LCAKICAgICA4MCwgNjksIDg0LCAxMjgsIDgwLCA2OSwgODAsIDY5LCAyMTIsIDgwLCA2OSwgNzksIDgyLCA4NCwgMjAwLCA4MCwgNjksIAotICAgIDc5LCA4MCwgNzYsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgODMsIDY5LCA3NywgNjksIDEyOCwgODAsIDY5LCA3OCwgCi0gICAgODQsIDY1LCA3MSwgODIsIDY1LCA3NywgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgODAsIDY5LCAKLSAgICA3OCwgODMsIDg1LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA3MywgODYsIDE5NywgODAsIDY5LCA3OCwgNzgsIDIxNywgODAsIAotICAgIDY5LCA3OCwgNzgsIDY1LCA3OCwgODQsIDEyOCwgODAsIDY5LCA3OCwgNzMsIDcyLCA3MywgMTI4LCA4MCwgNjksIDc4LCA3MSwgCi0gICAgODUsIDczLCA3OCwgMTI4LCA4MCwgNjksIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjksIDc4LCA2OSwgODQsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3OCwgNjcsIDczLCA3NiwgMTI4LCA4MCwgNjksIDc2LCA2NSwgODMsIAotICAgIDg0LCA3OSwgNzgsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDIwNiwgODAsIDY5LCA3MywgODQsIDcyLCAKLSAgICAxMjgsIDgwLCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgMjAwLCA4MCwgNjksIDcyLCAxMjgsIDgwLCAKLSAgICA2OSwgMjAwLCA4MCwgNjksIDY5LCA5MCwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODMsIDcyLCA3MywgMTI4LCA4MCwgNjksIAotICAgIDY5LCA4MCwgMTI4LCA4MCwgNjksIDY5LCA3NywgMTI4LCA4MCwgNjksIDY5LCA3MywgMTI4LCA4MCwgNjksIDY5LCAxMjgsIAotICAgIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDc4LCA4MywgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCAKLSAgICA4MiwgNzMsIDY1LCA3OCwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA2OCwgNjksIAotICAgIDgzLCA4NCwgNjUsIDIwNCwgODAsIDY5LCA2OCwgNjUsIDIwNCwgODAsIDY5LCA2NSwgNzUsIDIxMSwgODAsIDY5LCA2NSwgCi0gICAgNjcsIDcyLCAxMjgsIDgwLCA2OSwgNjUsIDY3LCA2OSwgMTI4LCA4MCwgNjksIDY1LCA2NywgMTk3LCA4MCwgNjgsIDczLCAKLSAgICAxMjgsIDgwLCA2OCwgNzAsIDEyOCwgODAsIDY4LCAxMjgsIDgwLCA2NywgMTI4LCA4MCwgNjUsIDkwLCA2OSwgODIsIDEyOCwgCi0gICAgODAsIDY1LCA4OSwgNjksIDgyLCA3OSwgNzUsIDEyOCwgODAsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgODAsIDY1LCAKLSAgICA4OSwgMTI4LCA4MCwgNjUsIDg4LCAxMjgsIDgwLCA2NSwgODcsIDc4LCAxMjgsIDgwLCA2NSwgMjE1LCA4MCwgNjUsIDg2LCAKLSAgICA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgODAsIDY1LCA4NSwgMTI4LCA4MCwgNjUsIDIxMywgODAsIDY1LCA4NCwgODQsIAotICAgIDY5LCA4MiwgNzgsIDEyOCwgODAsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgODAsIDY1LCA4NCwgCi0gICAgMjAwLCA4MCwgNjUsIDg0LCA2NSwgNzUsIDEyOCwgODAsIDY1LCA4NCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgODQsIDEyOCwgCi0gICAgODAsIDY1LCA4MywgODUsIDgxLCAxMjgsIDgwLCA2NSwgODMsIDgzLCA4MCwgNzksIDgyLCAyMTIsIDgwLCA2NSwgODMsIDgzLCAKLSAgICA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA4NSwgODAsIDQ1LCA3OSwgODUsIDg0LCA4MCwgODUsIDIxMiwgCi0gICAgODAsIDY1LCA4MywgODMsIDczLCA4NiwgNjksIDQ1LCA4MCwgODUsIDc2LCA3NiwgNDUsIDY4LCA3OSwgODcsIDc4LCA0NSwgCi0gICAgNzksIDg1LCA4NCwgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA2OSwgNzgsIDcxLCA2OSwgMjEwLCA4MCwgNjUsIDgzLCAKLSAgICA3MiwgODQsIDY1LCAxMjgsIDgwLCA2NSwgODMsIDcyLCA2NSwgNjksIDEyOCwgODAsIDY1LCA4MywgNjksIDgxLCAxMjgsIAotICAgIDgwLCA2NSwgODMsIDY1LCA3OCwgNzEsIDY1LCAyMDYsIDgwLCA2NSwgODIsIDg1LCA3NywgMTI4LCA4MCwgNjUsIDgyLCA4NCwgCi0gICAgMjE3LCA4MCwgNjUsIDgyLCA4NCwgNzgsIDY5LCA4MiwgODMsIDcyLCA3MywgMjA4LCA4MCwgNjUsIDgyLCA4NCwgNzMsIDY1LCAKLSAgICA3NiwgNzYsIDg5LCA0NSwgODIsIDY5LCA2NywgODksIDY3LCA3NiwgNjksIDE5NiwgODAsIDY1LCA4MiwgODQsIDczLCA2NSwgCi0gICAgMjA0LCA4MCwgNjUsIDgyLCA4NCwgNzIsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCAyMTIsIDgwLCA2NSwgODIsIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgODIsIDczLCA2NywgNzIsIDc5LCA3OCwgMTI4LCA4MCwgNjUsIDgyLCA2OSwgODMsIDg0LCA3MywgNzEsIAotICAgIDc3LCA2OSwgNzgsIDc5LCAyMDYsIDgwLCA2NSwgODIsIDY5LCA4MiwgNjksIDc4LCAxMjgsIDgwLCA2NSwgODIsIDY5LCA3OCwgCi0gICAgODQsIDcyLCA2OSwgODMsIDczLCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgMjExLCAKLSAgICA4MCwgNjUsIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA2OSwgMjExLCA4MCwgNjUsIDgyLCA2NSwgODAsIDcyLCA4MiwgCi0gICAgNjUsIDgzLCAxOTcsIDgwLCA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgNzksIDcxLCA4MiwgNjUsIDc3LCAxMjgsIDgwLCAKLSAgICA2NSwgODIsIDY1LCA3NiwgNzYsIDY5LCA3NiwgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgMjA0LCA4MCwgNjUsIAotICAgIDgyLCA2NSwgNzUsIDc2LCA3MywgODQsIDczLCA3NSwgNzMsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCAKLSAgICA3MywgNzUsIDIwMSwgODAsIDY1LCA4MiwgNjUsIDc1LCA2NSwgNzYsIDY5LCA4MywgNzcsIDE5MywgODAsIDY1LCA4MiwgNjUsIAotICAgIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzksIDgzLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgCi0gICAgODAsIDY1LCA4MiwgNjUsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDgwLCA2NSwgODIsIDY1LCAxMjgsIDgwLCA2NSwgODIsIAotICAgIDEyOCwgODAsIDY1LCA4MCwgODksIDgyLCA4NSwgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgCi0gICAgODMsIDEyOCwgODAsIDY1LCA4MCwgNjksIDgyLCA2NywgNzYsIDczLCA4MCwgMTI4LCA4MCwgNjUsIDgwLCA2OSwgMjEwLCAKLSAgICA4MCwgNjUsIDgwLCAxMjgsIDgwLCA2NSwgMjA4LCA4MCwgNjUsIDIwNywgODAsIDY1LCA3OCwgODksIDg1LCA3NSwgODUsIAotICAgIDEyOCwgODAsIDY1LCA3OCwgODksIDczLCA3NSwgODUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY5LCA2NywgNjksIDc1LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzgsIDcxLCA3MSwgNjUsIDEyOCwgODAsIDY1LCA3OCwgODksIDY1LCA3NSwgODIsIAotICAgIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg0LCA3MywgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDgwLCA3MywgCi0gICAgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgNDUsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAotICAgIDg1LCA3OCwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3OCwgNzEsIDc5LCA3OCwgNjUsIDc4LCAKLSAgICAxMjgsIDgwLCA2NSwgNzgsIDc5LCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODcsIDczLCA4MywgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA4MiwgNjUsIDc4LCA3MSwgNzUsIDY5LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCi0gICAgNzksIDc2LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc2LCA3OSwgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKLSAgICA3NiwgNjUsIDg5LCA2NSwgODIsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDc1LCA3OSwgNzgsIDEyOCwgODAsIDY1LCA3OCwgNzEsIAotICAgIDc1LCA2NSwgODQsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDcyLCA4NSwgNzYsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCAKKyAgICA3OSwgODAsIDc2LCA2OSwgMTI4LCA4MCwgNjksIDc4LCA4NCwgNjUsIDg0LCA3MiwgNzYsIDc5LCA3OCwgMTI4LCA4MCwgNjksIAorICAgIDc4LCA4NCwgNjUsIDgzLCA2OSwgNzcsIDY5LCAxMjgsIDgwLCA2OSwgNzgsIDg0LCA2NSwgNzEsIDgyLCA2NSwgNzcsIDEyOCwgCisgICAgODAsIDY5LCA3OCwgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzgsIDgzLCA4NSwgMTI4LCA4MCwgNjksIDc4LCAKKyAgICA4MywgNzMsIDg2LCAxOTcsIDgwLCA2OSwgNzgsIDc4LCAyMTcsIDgwLCA2OSwgNzgsIDc4LCA2NSwgNzgsIDg0LCAxMjgsIAorICAgIDgwLCA2OSwgNzgsIDczLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA3OCwgNzEsIDg1LCA3MywgNzgsIDEyOCwgODAsIDY5LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgNzYsIDEyOCwgODAsIDY5LCA3OCwgNjksIDg0LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDgwLCAKKyAgICA2OSwgNzgsIDY3LCA3MywgNzYsIDEyOCwgODAsIDY5LCA3NiwgNjUsIDgzLCA4NCwgNzksIDc4LCAxMjgsIDgwLCA2OSwgNzYsIAorICAgIDY1LCA4MywgODQsIDc5LCAyMDYsIDgwLCA2OSwgNzMsIDg0LCA3MiwgMTI4LCA4MCwgNjksIDcyLCA2OSwgNzIsIDEyOCwgCisgICAgODAsIDY5LCA3MiwgNjksIDIwMCwgODAsIDY5LCA3MiwgMTI4LCA4MCwgNjksIDIwMCwgODAsIDY5LCA2OSwgOTAsIDczLCAKKyAgICAxMjgsIDgwLCA2OSwgNjksIDgzLCA3MiwgNzMsIDEyOCwgODAsIDY5LCA2OSwgODAsIDEyOCwgODAsIDY5LCA2OSwgNzcsIAorICAgIDEyOCwgODAsIDY5LCA2OSwgNzMsIDEyOCwgODAsIDY5LCA2OSwgMTI4LCA4MCwgNjksIDY4LCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY1LCA3OCwgODMsIDEyOCwgODAsIDY5LCA2OCwgNjksIDgzLCA4NCwgODIsIDczLCA2NSwgNzgsIDEyOCwgODAsIDY5LCAKKyAgICA2OCwgNjksIDgzLCA4NCwgNjUsIDc2LCAxMjgsIDgwLCA2OSwgNjgsIDY5LCA4MywgODQsIDY1LCAyMDQsIDgwLCA2OSwgNjgsIAorICAgIDY1LCAyMDQsIDgwLCA2OSwgNjUsIDc4LCA4NSwgODQsIDgzLCAxMjgsIDgwLCA2OSwgNjUsIDc1LCAyMTEsIDgwLCA2OSwgCisgICAgNjUsIDY3LCA3MiwgMTI4LCA4MCwgNjksIDY1LCA2NywgNjksIDEyOCwgODAsIDY5LCA2NSwgNjcsIDE5NywgODAsIDY4LCAKKyAgICA3MywgMTI4LCA4MCwgNjgsIDcwLCAxMjgsIDgwLCA2OCwgMTI4LCA4MCwgNjcsIDEyOCwgODAsIDY1LCA5MCwgNjksIDgyLCAKKyAgICAxMjgsIDgwLCA2NSwgODksIDY5LCA4MiwgNzksIDc1LCAxMjgsIDgwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDgwLCA2NSwgODksIDEyOCwgODAsIDY1LCA4OCwgMTI4LCA4MCwgNjUsIDg3LCA3OCwgMTI4LCA4MCwgNjUsIDIxNSwgODAsIAorICAgIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDgwLCA2NSwgODUsIDEyOCwgODAsIDY1LCAyMTMsIDgwLCA2NSwgCisgICAgODQsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDgwLCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIDg0LCAxMjgsIDgwLCAKKyAgICA2NSwgODQsIDIwMCwgODAsIDY1LCA4NCwgNjUsIDc1LCAxMjgsIDgwLCA2NSwgODQsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIAorICAgIDg0LCAxMjgsIDgwLCA2NSwgODMsIDg1LCA4MSwgMTI4LCA4MCwgNjUsIDgzLCA4MywgODAsIDc5LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgzLCA4MywgNzMsIDg2LCA2OSwgNDUsIDgwLCA4NSwgNzYsIDc2LCA0NSwgODUsIDgwLCA0NSwgNzksIDg1LCA4NCwgCisgICAgODAsIDg1LCAyMTIsIDgwLCA2NSwgODMsIDgzLCA3MywgODYsIDY5LCA0NSwgODAsIDg1LCA3NiwgNzYsIDQ1LCA2OCwgNzksIAorICAgIDg3LCA3OCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA4MCwgNjUsIDgzLCA4MywgNjksIDc4LCA3MSwgNjksIDIxMCwgCisgICAgODAsIDY1LCA4MywgNzIsIDg0LCA2NSwgMTI4LCA4MCwgNjUsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgODMsIDY5LCAKKyAgICA4MSwgMTI4LCA4MCwgNjUsIDgzLCA2NSwgNzgsIDcxLCA2NSwgMjA2LCA4MCwgNjUsIDgyLCA4NSwgNzcsIDEyOCwgODAsIAorICAgIDY1LCA4MiwgODQsIDIxNywgODAsIDY1LCA4MiwgODQsIDc4LCA2OSwgODIsIDgzLCA3MiwgNzMsIDIwOCwgODAsIDY1LCA4MiwgCisgICAgODQsIDczLCA2NSwgNzYsIDc2LCA4OSwgNDUsIDgyLCA2OSwgNjcsIDg5LCA2NywgNzYsIDY5LCAxOTYsIDgwLCA2NSwgODIsIAorICAgIDg0LCA3MywgNjUsIDIwNCwgODAsIDY1LCA4MiwgODQsIDcyLCA3MywgNjUsIDIwNiwgODAsIDY1LCA4MiwgMjEyLCA4MCwgCisgICAgNjUsIDgyLCA3NSwgMTI4LCA4MCwgNjUsIDgyLCA3MywgNjcsIDcyLCA3OSwgNzgsIDEyOCwgODAsIDY1LCA4MiwgNjksIDgzLCAKKyAgICA4NCwgNzMsIDcxLCA3NywgNjksIDc4LCA3OSwgMjA2LCA4MCwgNjUsIDgyLCA2OSwgODIsIDY5LCA3OCwgMTI4LCA4MCwgNjUsIAorICAgIDgyLCA2OSwgNzgsIDg0LCA3MiwgNjksIDgzLCA3MywgODMsIDEyOCwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCAKKyAgICA4MywgNzMsIDIxMSwgODAsIDY1LCA4MiwgNjksIDc4LCA4NCwgNzIsIDY5LCA4MywgNjksIDIxMSwgODAsIDY1LCA4MiwgNjUsIAorICAgIDgwLCA3MiwgODIsIDY1LCA4MywgMTk3LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDc5LCA3MSwgODIsIDY1LCAKKyAgICA3NywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzYsIDc2LCA2OSwgNzYsIDEyOCwgODAsIDY1LCA4MiwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNCwgODAsIDY1LCA4MiwgNjUsIDc1LCA3NiwgNzMsIDg0LCA3MywgNzUsIDczLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3NSwgCisgICAgNzYsIDczLCA4NCwgNzMsIDc1LCAyMDEsIDgwLCA2NSwgODIsIDY1LCA3NSwgNjUsIDc2LCA2OSwgODMsIDc3LCAxOTMsIDgwLCAKKyAgICA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgNzIsIDc5LCA4MywgMTI4LCA4MCwgNjUsIDgyLCA2NSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCAxMjgsIDgwLCA2NSwgODIsIDY1LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA4MCwgNjUsIDgyLCA2NSwgMTI4LCAKKyAgICA4MCwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgODAsIDg5LCA4MiwgODUsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIAorICAgIDc2LCA3MywgODAsIDgzLCAxMjgsIDgwLCA2NSwgODAsIDY5LCA4MiwgNjcsIDc2LCA3MywgODAsIDEyOCwgODAsIDY1LCA4MCwgCisgICAgNjksIDIxMCwgODAsIDY1LCA4MCwgMTI4LCA4MCwgNjUsIDIwOCwgODAsIDY1LCAyMDcsIDgwLCA2NSwgNzgsIDg5LCA4NSwgCisgICAgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA3MywgNzUsIDg1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2OSwgNjcsIDY5LCAKKyAgICA3NSwgMTI4LCA4MCwgNjUsIDc4LCA4OSwgNjUsIDc4LCA3MSwgNzEsIDY1LCAxMjgsIDgwLCA2NSwgNzgsIDg5LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA4MCwgNjUsIDc4LCA4NCwgNzMsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNjUsIDgwLCA4OSwgNjksIAorICAgIDc5LCA4NSwgNzgsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzgsIDcxLCA3OSwgNzgsIDY1LCAKKyAgICA3OCwgMTI4LCA4MCwgNjUsIDc4LCA3OSwgNzYsIDc5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3OCwgNzEsIDg3LCA3MywgODMsIAorICAgIDY1LCA2OCwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgODIsIDY1LCA3OCwgNzEsIDc1LCA2OSwgODAsIDEyOCwgODAsIDY1LCA3OCwgCisgICAgNzEsIDc5LCA3NiwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NiwgNzksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAKKyAgICA3MSwgNzYsIDY1LCA4OSwgNjUsIDgyLCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3NSwgNzksIDc4LCAxMjgsIDgwLCA2NSwgNzgsIAorICAgIDcxLCA3NSwgNjUsIDg0LCAxMjgsIDgwLCA2NSwgNzgsIDcxLCA3MiwgODUsIDc2LCA4NSwgMTI4LCA4MCwgNjUsIDc4LCA3MSwgCiAgICAgMTI4LCA4MCwgNjUsIDc4LCA2OSwgODUsIDc2LCA2OSwgODUsIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCA2OCwgMTkzLCAKLSAgICA4MCwgNjUsIDc4LCA2NSwgNjksIDc2LCA2NSwgNjksIDc4LCA3MSwgMTI4LCA4MCwgNjUsIDc4LCAxMjgsIDgwLCA2NSwgNzcsIAotICAgIDg1LCA3OCwgNzEsIDc1LCA2NSwgNzIsIDEyOCwgODAsIDY1LCA3NywgODUsIDY4LCA4MCwgNzksIDY4LCAxMjgsIDgwLCA2NSwgCi0gICAgNzcsIDgzLCA3MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNzcsIDgwLCA3MiwgODksIDc2LCA3MywgNjUsIDIwNiwgODAsIDY1LCAKLSAgICA3NywgNzMsIDc4LCA3MSwgNzUsIDY1LCA3NiwgMTI4LCA4MCwgNjUsIDc3LCA2OSwgODAsIDY5LCA4NCwgMTI4LCA4MCwgNjUsIAotICAgIDc3LCA2OSwgNzgsIDY5LCA3OCwgNzEsIDEyOCwgODAsIDY1LCA3NywgNjUsIDY4LCA2NSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgCi0gICAgNjUsIDY5LCA3MiwgMTI4LCA4MCwgNjUsIDc2LCA4NSwgODQsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc5LCA2NywgNzIsIDc1LCAKLSAgICA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NywgODksIDgyLCA2OSwgNzgsIDE5NywgODAsIDY1LCA3NiwgMjA1LCA4MCwgNjUsIAotICAgIDc2LCA3NiwgNjUsIDg3LCA2NSwgMTI4LCA4MCwgNjUsIDc2LCA3NiwgNjUsIDgzLCAxMjgsIDgwLCA2NSwgNzYsIDY5LCA4NCwgCi0gICAgODQsIDY5LCAxMjgsIDgwLCA2NSwgNzYsIDY1LCA4NSwgNzgsIDE5OSwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCAKLSAgICA5MCwgNjksIDE5NiwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDgwLCA2NSwgNzYsIDY1LCA4NCwgNjUsIDIwNCwgODAsIDY1LCA3NSwgODAsIDY1LCAyMDMsIDgwLCA2NSwgNzMsIDg5LCA2NSwgCi0gICAgNzgsIDc4LCA3OSwgNzMsIDEyOCwgODAsIDY1LCA3MywgODIsIDg0LCA3MiwgODIsIDY1LCAxMjgsIDgwLCA2NSwgNzMsIDgyLCAKLSAgICA2OSwgMTk2LCA4MCwgNjUsIDczLCA3OCwgODQsIDY2LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA4MCwgNjUsIDczLCAxMjgsIAotICAgIDgwLCA2NSwgNzIsIDc2LCA2NSwgODYsIDIwMSwgODAsIDY1LCA3MiwgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODMsIDEyOCwgCi0gICAgODAsIDY1LCA3MSwgNjksIDgyLCAxMjgsIDgwLCA2NSwgNzEsIDE5NywgODAsIDY1LCA2OCwgNzcsIDE5MywgODAsIDY1LCAKLSAgICA2OCwgNjgsIDc2LCAxOTcsIDgwLCA2NSwgNjgsIDY4LCA3MywgNzgsIDE5OSwgODAsIDY1LCA2OCwgMTkzLCA4MCwgNjUsIAotICAgIDY4LCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA3MywgNzgsIDcxLCAxMjgsIDgwLCA2NSwgNjcsIDc1LCA2NSwgNzEsIDY5LCAKKyAgICA4MCwgNjUsIDc4LCA2NywgNjUsIDc1LCA2OSwgODMsIDEyOCwgODAsIDY1LCA3OCwgNjUsIDY5LCA3NiwgNjUsIDY5LCA3OCwgCisgICAgNzEsIDEyOCwgODAsIDY1LCA3OCwgMTI4LCA4MCwgNjUsIDIwNiwgODAsIDY1LCA3NywgODUsIDc4LCA3MSwgNzUsIDY1LCAKKyAgICA3MiwgMTI4LCA4MCwgNjUsIDc3LCA4NSwgNjgsIDgwLCA3OSwgNjgsIDEyOCwgODAsIDY1LCA3NywgODMsIDcyLCA2NSwgNjksIAorICAgIDEyOCwgODAsIDY1LCA3NywgODAsIDcyLCA4OSwgNzYsIDczLCA2NSwgMjA2LCA4MCwgNjUsIDc3LCA3MywgNzgsIDcxLCA3NSwgCisgICAgNjUsIDc2LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA4MCwgNjksIDg0LCAxMjgsIDgwLCA2NSwgNzcsIDY5LCA3OCwgNjksIDc4LCAKKyAgICA3MSwgMTI4LCA4MCwgNjUsIDc3LCA2NSwgNjgsIDY1LCAxMjgsIDgwLCA2NSwgNzcsIDY1LCA2NSwgNjksIDcyLCAxMjgsIAorICAgIDgwLCA2NSwgNzYsIDg1LCA4NCwgNjUsIDEyOCwgODAsIDY1LCA3NiwgNzksIDY3LCA3MiwgNzUsIDY1LCAxMjgsIDgwLCA2NSwgCisgICAgNzYsIDc3LCA4OSwgODIsIDY5LCA3OCwgMTk3LCA4MCwgNjUsIDc2LCA3NywgMTI4LCA4MCwgNjUsIDc2LCAyMDUsIDgwLCAKKyAgICA2NSwgNzYsIDc2LCA2NSwgODcsIDY1LCAxMjgsIDgwLCA2NSwgNzYsIDc2LCA2NSwgODMsIDEyOCwgODAsIDY1LCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg1LCA3OCwgMTk5LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgCisgICAgNzMsIDkwLCA2OSwgMTk2LCA4MCwgNjUsIDc2LCA2NSwgODQsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgODAsIDY1LCA3NiwgNjUsIDg0LCA2NSwgMjA0LCA4MCwgNjUsIDc1LCA4MCwgNjUsIDIwMywgODAsIDY1LCA3MywgCisgICAgODksIDY1LCA3OCwgNzgsIDc5LCA3MywgMTI4LCA4MCwgNjUsIDczLCA4MiwgODQsIDcyLCA4MiwgNjUsIDEyOCwgODAsIDY1LCAKKyAgICA3MywgODIsIDY5LCAxOTYsIDgwLCA2NSwgNzMsIDc4LCA4NCwgNjYsIDgyLCA4NSwgODMsIDcyLCAxMjgsIDgwLCA2NSwgNzMsIAorICAgIDEyOCwgODAsIDY1LCA3MiwgNzYsIDY1LCA4NiwgMjAxLCA4MCwgNjUsIDcyLCAxMjgsIDgwLCA2NSwgNzEsIDY5LCA4MywgCisgICAgMTI4LCA4MCwgNjUsIDcxLCA2OSwgODIsIDEyOCwgODAsIDY1LCA3MSwgMTk3LCA4MCwgNjUsIDY4LCA3NywgMTkzLCA4MCwgCisgICAgNjUsIDY4LCA2OCwgNzYsIDE5NywgODAsIDY1LCA2OCwgNjgsIDczLCA3OCwgMTk5LCA4MCwgNjUsIDY4LCAxOTMsIDgwLCAKKyAgICA2NSwgNjgsIDEyOCwgODAsIDY1LCA2NywgNzUsIDczLCA3OCwgNzEsIDEyOCwgODAsIDY1LCA2NywgNzUsIDY1LCA3MSwgNjksIAogICAgIDEyOCwgODAsIDY1LCA2NSwgODQsIDg1LCAxMjgsIDgwLCA2NSwgNjUsIDgzLCA2OSwgNzgsIDg0LCA3OSwgMTI4LCA4MCwgCiAgICAgNjUsIDY1LCA4MiwgNjUsIDY5LCAxMjgsIDgwLCA2NSwgNjUsIDc3LCAxMjgsIDgwLCA2NSwgNjUsIDczLCAxMjgsIDgwLCAKICAgICA2NSwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgODAsIDY1LCA2NSwgMTI4LCA4MCwgNTAsIDEyOCwgODAsIApAQCAtMTc3MCw0NjQgKzE3ODYsNDcxIEBACiAgICAgNDgsIDQ4LCA1MCwgMTI4LCA4MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgODAsIDQ4LCA0OCwgNDksIDEyOCwgNzksIDg5LCAKICAgICA4MiwgNjUsIDc4LCA3MywgODMsIDc3LCAxOTMsIDc5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzksIDg4LCA3MywgNjUsIAogICAgIDEyOCwgNzksIDg4LCA3MywgMTkzLCA3OSwgODgsIDY5LCA3MywgNjUsIDIwMSwgNzksIDg4LCA2OSwgNzMsIDE5MywgNzksIAotICAgIDg2LCA2OSwgODIsIDgyLCA3MywgNjgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNzksIDc4LCAxOTksIDc5LCA4NiwgCi0gICAgNjksIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4OSwgMTI4LCA3OSwgODYsIDY5LCAKLSAgICA4MiwgNzYsIDY1LCA4MCwgODAsIDczLCA3OCwgMTk5LCA3OSwgODYsIDY5LCA4MiwgNzYsIDY1LCA4MCwgMTI4LCA3OSwgODYsIAotICAgIDY5LCA4MiwgNzYsIDY1LCA3MywgNjgsIDEyOCwgNzksIDg2LCA2OSwgODIsIDY2LCA2NSwgODIsIDEyOCwgNzksIDg2LCA2NSwgCi0gICAgNzYsIDEyOCwgNzksIDg2LCA2NSwgMjA0LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODUsIDg0LCAKLSAgICA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OSwgODUsIDg0LCA2OSwgMjEwLCA3OSwgODUsIDg0LCA2NiwgNzksIDIxNiwgNzksIAotICAgIDg1LCA3OCwgNzUsIDczLCAxOTMsIDc5LCA4NSwgNzgsIDY3LCA2OSwgMTI4LCA3OSwgODUsIDc4LCA2NywgMTk3LCA3OSwgCi0gICAgODQsIDg1LCAxMjgsIDc5LCA4NCwgODQsIDY1LCA4NiwgMTkzLCA3OSwgODQsIDg0LCAxMjgsIDc5LCA4NCwgNzIsIDY5LCAKLSAgICA4MiwgMjExLCA3OSwgODQsIDcyLCA2OSwgMjEwLCA3OSwgODQsIDcyLCA2NSwgNzYsIDY1LCAyMDYsIDc5LCA4NCwgNzIsIAotICAgIDY1LCA3NiwgMTI4LCA3OSwgODMsIDc3LCA2NSwgNzgsIDg5LCAxOTMsIDc5LCA4MywgNjcsIDEyOCwgNzksIDgyLCA4NCwgCi0gICAgNzIsIDc5LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3OSwgODIsIDg0LCA3MiwgNzksIDY4LCA3OSwgMjE2LCA3OSwgODIsIDc4LCAKLSAgICA2NSwgODQsIDE5NywgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDg0LCA4MywgMTI4LCA3OSwgODIsIDc4LCA2NSwgNzcsIAotICAgIDY5LCA3OCwgODQsIDEyOCwgNzksIDgyLCA3OCwgNjUsIDc3LCA2OSwgNzgsIDIxMiwgNzksIDgyLCA3NSwgNzIsIDc5LCAKLSAgICAyMDYsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDY1LCAyMDQsIDc5LCA4MiwgNzMsIDcxLCA3MywgNzgsIDEyOCwgNzksIAotICAgIDgyLCA2OSwgNDUsIDUwLCAxMjgsIDc5LCA4MiwgNjgsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA2OCwgNjksIDIxMCwgCi0gICAgNzksIDgyLCA2NywgNzIsIDczLCA2OCwgMTI4LCA3OSwgODIsIDY1LCA3OCwgNzEsIDE5NywgNzksIDgwLCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc5LCA4MCwgODQsIDczLCA2NywgNjUsIDIwNCwgNzksIDgwLCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgNzgsIAotICAgIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDgwLCA4MCwgNzksIDgzLCA3MywgCi0gICAgNzgsIDE5OSwgNzksIDgwLCA4MCwgNzksIDgzLCA2OSwgMTI4LCA3OSwgODAsIDcyLCA3MywgODUsIDY3LCA3MiwgODUsIDgzLCAKLSAgICAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCA4MiwgMTI4LCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3OSwgCi0gICAgMjEwLCA3OSwgODAsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzksIDgwLCA2OSwgNzgsIDczLCA3OCwgMTk5LCAKLSAgICA3OSwgODAsIDY5LCA3OCwgNDUsIDgwLCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgNzksIDg1LCA4NCwgNzYsIDczLCA3OCwgCi0gICAgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgMTI4LCA3OSwgODAsIDY5LCA3OCwgNDUsIDIwNywgNzksIDgwLCAKLSAgICA2OSwgNzgsIDQ1LCA3MiwgNjksIDY1LCA2OCwgNjksIDE5NiwgNzksIDgwLCA2OSwgNzgsIDQ1LCA2NywgNzMsIDgyLCA2NywgCi0gICAgODUsIDczLCA4NCwgNDUsIDc5LCA4NSwgODQsIDgwLCA4NSwgMjEyLCA3OSwgODAsIDY5LCA3OCwgMTI4LCA3OSwgNzksIDkwLCAKLSAgICA2OSwgMTI4LCA3OSwgNzksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3OSwgNzksIDg1LCAxMjgsIDc5LCA3OSwgNzcsIAotICAgIDg1LCAxMjgsIDc5LCA3OSwgNzIsIDEyOCwgNzksIDc5LCA2OSwgMTI4LCA3OSwgNzksIDY2LCA3OSwgNzksIDcwLCA3MywgCi0gICAgNzYsIDczLCAxMjgsIDc5LCA3OCwgODUsIDEyOCwgNzksIDc4LCA4MywgODUsIDEyOCwgNzksIDc4LCA3OCwgMTI4LCA3OSwgCi0gICAgNzgsIDc1LCA2NSwgODIsIDEyOCwgNzksIDc4LCA2OSwgODMsIDY5LCA3NiwgNzAsIDEyOCwgNzksIDc4LCA2OSwgNDUsIDg3LCAKLSAgICA2NSwgMjE3LCA3OSwgNzgsIDY5LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgNzYsIAotICAgIDczLCA3OCwgMTk3LCA3OSwgNzgsIDY3LCA3OSwgNzcsIDczLCA3OCwgMTk5LCA3OSwgNzgsIDY1LCA4MCwgMTI4LCA3OSwgCi0gICAgNzcsIDczLCA4MywgODMsIDczLCA3OSwgMjA2LCA3OSwgNzcsIDczLCA2NywgODIsIDc5LCA3OCwgMTI4LCA3OSwgNzcsIDczLCAKLSAgICA2NywgODIsIDc5LCAyMDYsIDc5LCA3NywgNjksIDcxLCA2NSwgMTI4LCA3OSwgNzcsIDY5LCA3MSwgMTkzLCA3OSwgNzcsIAotICAgIDY1LCA3NiwgNzksIDc4LCAxMjgsIDc5LCA3NiwgNzMsIDg2LCA2OSwgMTI4LCA3OSwgNzYsIDczLCA3MSwgNzksIDIwNiwgCi0gICAgNzksIDc2LCA2OCwgMTI4LCA3OSwgNzUsIDg0LCAyMDcsIDc5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3OSwgNzUsIDY1LCAKLSAgICA4MiwgMTkzLCA3OSwgNzQsIDczLCA2NiwgODcsIDY1LCAyMTcsIDc5LCA3NCwgNjksIDc5LCA3OCwgMTI4LCA3OSwgNzMsIAotICAgIDc2LCAxMjgsIDc5LCA3MywgMjA0LCA3OSwgNzIsIDc3LCAxMjgsIDc5LCA3MiwgMjA1LCA3OSwgNzEsIDgyLCA2OSwgMTI4LCAKLSAgICA3OSwgNzEsIDc5LCA3OCwgNjksIDc1LCAxMjgsIDc5LCA3MSwgNzksIDc4LCA2OSwgMjAzLCA3OSwgNzEsIDcyLCA2NSwgCi0gICAgMjA1LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCA4MiwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDY5LCAxMjgsIDc5LCAKLSAgICA3MCwgNzAsIDczLCA2NywgMTk3LCA3OSwgNzAsIDcwLCAxMjgsIDc5LCA2OSwgODksIDEyOCwgNzksIDY5LCA3NSwgMTI4LCAKLSAgICA3OSwgNjksIDY5LCAxMjgsIDc5LCA2OCwgNjksIDc4LCAxMjgsIDc5LCA2OCwgNjgsIDEyOCwgNzksIDY4LCAxOTYsIDc5LCAKLSAgICA2NywgODQsIDc5LCA4MCwgODUsIDgzLCAxMjgsIDc5LCA2NywgODQsIDc5LCA2NiwgNjksIDgyLCAxMjgsIDc5LCA2NywgODQsIAotICAgIDY5LCAyMTIsIDc5LCA2NywgODQsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDc5LCA2NywgMjEwLCA3OSwgNjcsIDc2LCA3OSwgCi0gICAgNjcsIDc1LCAxMjgsIDc5LCA2NywgNjcsIDc2LCA4NSwgODMsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA4MywgODQsIDgyLCAKLSAgICA4NSwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc5LCA2NiwgNzksIDc2LCAyMTEsIDc5LCA2NiwgNzksIDIwNCwgNzksIAotICAgIDY2LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDY2LCA3NiwgNzMsIDgxLCA4NSwgMTk3LCA3OSwgNjYsIDc0LCA2OSwgCi0gICAgNjcsIDIxMiwgNzksIDY2LCA2OSwgNzYsIDg1LCA4MywgMTI4LCA3OSwgNjYsIDY5LCA3NiwgNzksIDgzLCAxMjgsIDc5LCAKLSAgICA2NiwgMTI4LCA3OSwgNjUsIDg5LCAxMjgsIDc5LCA2NSwgNzUsIDEyOCwgNzksIDY1LCA2NiwgNzksIDY1LCA3MCwgNzMsIAotICAgIDc2LCA3MywgMTI4LCA3OSwgMTkzLCA3OSwgNDgsIDUzLCA0OSwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNzksIAotICAgIDQ4LCA1MywgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTMsIDQ4LCAxMjgsIDc5LCA0OCwgNTIsIDU3LCAxMjgsIDc5LCA0OCwgCi0gICAgNTIsIDU2LCAxMjgsIDc5LCA0OCwgNTIsIDU1LCAxMjgsIDc5LCA0OCwgNTIsIDU0LCAxMjgsIDc5LCA0OCwgNTIsIDUzLCAKLSAgICAxMjgsIDc5LCA0OCwgNTIsIDUyLCAxMjgsIDc5LCA0OCwgNTIsIDUxLCAxMjgsIDc5LCA0OCwgNTIsIDUwLCAxMjgsIDc5LCAKLSAgICA0OCwgNTIsIDQ5LCAxMjgsIDc5LCA0OCwgNTIsIDQ4LCAxMjgsIDc5LCA0OCwgNTEsIDU3LCAxMjgsIDc5LCA0OCwgNTEsIAotICAgIDU2LCAxMjgsIDc5LCA0OCwgNTEsIDU1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDUxLCA1NCwgCi0gICAgNjcsIDEyOCwgNzksIDQ4LCA1MSwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUxLCA1MywgMTI4LCA3OSwgNDgsIDUxLCA1MiwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgNjUsIAotICAgIDEyOCwgNzksIDQ4LCA1MSwgNTEsIDEyOCwgNzksIDQ4LCA1MSwgNTAsIDEyOCwgNzksIDQ4LCA1MSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA1MSwgNDgsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDQ4LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCA2NSwgMTI4LCA3OSwgCi0gICAgNDgsIDUwLCA1NywgMTI4LCA3OSwgNDgsIDUwLCA1NiwgMTI4LCA3OSwgNDgsIDUwLCA1NSwgMTI4LCA3OSwgNDgsIDUwLCAKLSAgICA1NCwgMTI4LCA3OSwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTMsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIAotICAgIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDUyLCAxMjgsIDc5LCA0OCwgNTAsIDUxLCAxMjgsIDc5LCA0OCwgNTAsIDUwLCAxMjgsIAotICAgIDc5LCA0OCwgNTAsIDQ5LCAxMjgsIDc5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDUwLCA0OCwgMTI4LCA3OSwgCi0gICAgNDgsIDQ5LCA1NywgNjUsIDEyOCwgNzksIDQ4LCA0OSwgNTcsIDEyOCwgNzksIDQ4LCA0OSwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OSwgNTUsIDEyOCwgNzksIDQ4LCA0OSwgNTQsIDEyOCwgNzksIDQ4LCA0OSwgNTMsIDEyOCwgNzksIDQ4LCA0OSwgNTIsIAotICAgIDEyOCwgNzksIDQ4LCA0OSwgNTEsIDEyOCwgNzksIDQ4LCA0OSwgNTAsIDEyOCwgNzksIDQ4LCA0OSwgNDksIDEyOCwgNzksIAotICAgIDQ4LCA0OSwgNDgsIDY3LCAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgCi0gICAgNzksIDQ4LCA0OSwgNDgsIDEyOCwgNzksIDQ4LCA0OCwgNTcsIDEyOCwgNzksIDQ4LCA0OCwgNTYsIDEyOCwgNzksIDQ4LCAKLSAgICA0OCwgNTUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDcwLCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OSwgMTI4LCA3OSwgNDgsIAotICAgIDQ4LCA1NCwgNjgsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDY3LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NiwgMTI4LCA3OSwgCi0gICAgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTQsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDc5LCAKLSAgICA0OCwgNDgsIDUzLCAxMjgsIDc5LCA0OCwgNDgsIDUyLCAxMjgsIDc5LCA0OCwgNDgsIDUxLCAxMjgsIDc5LCA0OCwgNDgsIAotICAgIDUwLCAxMjgsIDc5LCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA0OSwgMTI4LCA3OSwgNDUsIDg5LCA2OSwgCi0gICAgMTI4LCA3OSwgNDUsIDc5LCA0NSwgNzMsIDEyOCwgNzksIDQ1LCA2OSwgMTI4LCA3OCwgOTAsIDg5LCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDg5LCA4NCwgMTI4LCA3OCwgOTAsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDkwLCA4OSwgODIsIDEyOCwgNzgsIDkwLCAKLSAgICA4OSwgODAsIDEyOCwgNzgsIDkwLCA4OSwgMTI4LCA3OCwgOTAsIDg1LCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA4NSwgODIsIDEyOCwgNzgsIDkwLCA4NSwgODEsIDEyOCwgNzgsIDkwLCA4NSwgODAsIDEyOCwgNzgsIAotICAgIDkwLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA5MCwgODUsIDc5LCAxMjgsIDc4LCA5MCwgODUsIDIwNiwgNzgsIDkwLCA4NSwgCi0gICAgMTI4LCA3OCwgOTAsIDc5LCA4OCwgMTI4LCA3OCwgOTAsIDc5LCA4MCwgMTI4LCA3OCwgOTAsIDczLCA4OCwgMTI4LCA3OCwgCi0gICAgOTAsIDczLCA4NCwgMTI4LCA3OCwgOTAsIDczLCA4MCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODgsIDEyOCwgNzgsIDkwLCAKLSAgICA3MywgNjksIDgwLCAxMjgsIDc4LCA5MCwgNzMsIDY5LCAxMjgsIDc4LCA5MCwgNzMsIDEyOCwgNzgsIDkwLCA2OSwgODgsIAotICAgIDEyOCwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA5MCwgNjksIDEyOCwgNzgsIDkwLCA2NSwgODgsIDEyOCwgNzgsIAotICAgIDkwLCA2NSwgODQsIDEyOCwgNzgsIDkwLCA2NSwgODEsIDEyOCwgNzgsIDkwLCA2NSwgODAsIDEyOCwgNzgsIDkwLCA2NSwgCi0gICAgMTI4LCA3OCwgOTAsIDE5MywgNzgsIDg5LCA4NywgNjUsIDEyOCwgNzgsIDg5LCA4NSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgCi0gICAgODUsIDEyOCwgNzgsIDg5LCA4NSwgODQsIDEyOCwgNzgsIDg5LCA4NSwgODAsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDg4LCAKLSAgICAxMjgsIDc4LCA4OSwgODUsIDc5LCA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgMTI4LCA3OCwgODksIDg1LCA3OCwgMTI4LCAKLSAgICA3OCwgODksIDg1LCA2OSwgMTI4LCA3OCwgODksIDg1LCAxMjgsIDc4LCA4OSwgNzksIDg4LCAxMjgsIDc4LCA4OSwgNzksIAotICAgIDg0LCAxMjgsIDc4LCA4OSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgNzksIDc5LCAxMjgsIDc4LCA4OSwgNzksIDc4LCAxMjgsIAotICAgIDc4LCA4OSwgNzksIDY1LCAxMjgsIDc4LCA4OSwgNzksIDEyOCwgNzgsIDg5LCA3NCwgNjUsIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgODgsIDEyOCwgNzgsIDg5LCA3MywgODQsIDEyOCwgNzgsIDg5LCA3MywgMjEyLCA3OCwgODksIDczLCAyMTEsIDc4LCA4OSwgCi0gICAgNzMsIDIxMCwgNzgsIDg5LCA3MywgODAsIDEyOCwgNzgsIDg5LCA3MywgNzgsIDQ1LCA2OCwgNzksIDEyOCwgNzgsIDg5LCAKLSAgICA3MywgNzgsIDEyOCwgNzgsIDg5LCA3MywgNzMsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg4LCAxMjgsIDc4LCA4OSwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3OCwgODksIDczLCA2OSwgODAsIDEyOCwgNzgsIDg5LCA3MywgNjksIDEyOCwgNzgsIDg5LCA3MywgCi0gICAgMTI4LCA3OCwgODksIDIwMSwgNzgsIDg5LCA3MiwgNjUsIDEyOCwgNzgsIDg5LCA2OSwgODQsIDEyOCwgNzgsIDg5LCA2OSwgCi0gICAgMjEyLCA3OCwgODksIDY5LCA3OCwgMTI4LCA3OCwgODksIDY5LCA3MiwgMTI4LCA3OCwgODksIDY5LCAyMDAsIDc4LCA4OSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA4OSwgNjksIDEyOCwgNzgsIDg5LCAxOTYsIDc4LCA4OSwgNjcsIDY1LCAxMjgsIDc4LCA4OSwgCi0gICAgNjUsIDg1LCAxMjgsIDc4LCA4OSwgNjUsIDczLCAxMjgsIDc4LCA4OSwgNjUsIDcyLCAxMjgsIDc4LCA4OSwgNjUsIDY5LCAKLSAgICA3NywgNjUsIDY5LCAxMjgsIDc4LCA4OSwgNjUsIDY1LCAxMjgsIDc4LCA4NywgNzksIDc5LCAxMjgsIDc4LCA4NywgNzksIAotICAgIDEyOCwgNzgsIDg3LCA3MywgNzMsIDEyOCwgNzgsIDg3LCA3MywgMTI4LCA3OCwgODcsIDY5LCAxMjgsIDc4LCA4NywgNjUsIAotICAgIDY1LCAxMjgsIDc4LCA4NywgNjUsIDEyOCwgNzgsIDg3LCAxMjgsIDc4LCA4NiwgMTI4LCA3OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA4NSwgODUsIDc4LCAxMjgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDg1LCA4NCwgNzMsIDc2LCA3NiwgODUsIDEyOCwgNzgsIAotICAgIDg1LCA4NCwgMTI4LCA3OCwgODUsIDIxMiwgNzgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDg1LCA4MiwgMTI4LCA3OCwgODUsIAotICAgIDgwLCAxMjgsIDc4LCA4NSwgNzksIDg4LCAxMjgsIDc4LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4NSwgNzksIDEyOCwgNzgsIAotICAgIDg1LCA3OCwgODUsIDkwLCAxMjgsIDc4LCA4NSwgNzgsIDg1LCAyMTgsIDc4LCA4NSwgNzgsIDcxLCAxMjgsIDc4LCA4NSwgCi0gICAgNzgsIDY1LCA4NiwgODUsIDIxMiwgNzgsIDg1LCA3OCwgNjUsIDg2LCA3MywgMjAzLCA3OCwgODUsIDc4LCAxMjgsIDc4LCAKLSAgICA4NSwgMjA2LCA3OCwgODUsIDc3LCA2OSwgODIsIDIwNywgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIAotICAgIDc4LCA4NSwgNzcsIDY5LCA4MiwgNjUsIDIwNCwgNzgsIDg1LCA3NywgNjYsIDY5LCA4MiwgODMsIDEyOCwgNzgsIDg1LCA3NywgCi0gICAgNjYsIDY5LCA4MiwgMTI4LCA3OCwgODUsIDc3LCAxMjgsIDc4LCA4NSwgNzYsIDc2LCAxMjgsIDc4LCA4NSwgNzYsIDIwNCwgCi0gICAgNzgsIDg1LCA3NiwgMTI4LCA3OCwgODUsIDc1LCA4NCwgNjUsIDEyOCwgNzgsIDg1LCA2OSwgNzgsIDcxLCAxMjgsIDc4LCAKLSAgICA4NSwgNjksIDEyOCwgNzgsIDg1LCA2NiwgNzMsIDY1LCAyMDYsIDc4LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA4NSwgNDksIAotICAgIDQ5LCAxMjgsIDc4LCA4NSwgNDksIDE3NywgNzgsIDg1LCA0OCwgNTAsIDUwLCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgCi0gICAgNTAsIDEyOCwgNzgsIDg1LCA0OCwgNTAsIDQ5LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgODUsIDQ4LCAKLSAgICA0OSwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIAotICAgIDg1LCA0OCwgNDksIDU1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTMsIDEyOCwgCi0gICAgNzgsIDg1LCA0OCwgNDksIDUyLCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTAsIAotICAgIDEyOCwgNzgsIDg1LCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCi0gICAgNDksIDQ4LCA2NSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCAKLSAgICA4NSwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU0LCAxMjgsIAotICAgIDc4LCA4NSwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUxLCAKLSAgICAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDg0LCA4OCwgNzMsIAotICAgIDg2LCAxMjgsIDc4LCA4NCwgODUsIDg1LCAxMjgsIDc4LCA4NCwgODUsIDc3LCAxMjgsIDc4LCA4NCwgODUsIDc0LCAxMjgsIAotICAgIDc4LCA4NCwgMjEzLCA3OCwgODQsIDgzLCA2NSwgODUsIDEyOCwgNzgsIDg0LCA3OSwgODEsIDgwLCA2OSwgNzgsIDEyOCwgCi0gICAgNzgsIDg0LCA3OSwgNzEsIDEyOCwgNzgsIDg0LCA3OSwgMTk5LCA3OCwgODQsIDczLCA2OSwgMTk3LCA3OCwgODQsIDcyLCAKLSAgICA2NSwgODUsIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc4LCA3MSwgNjYsIDY1LCAxMjgsIDc4LCA4NCwgNjksIDg1LCA3NywgCi0gICAgMTI4LCA3OCwgODQsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDY5LCA2OSwgMTI4LCA3OCwgODQsIDY1LCA4MCwgMTI4LCA3OCwgCi0gICAgODQsIDY1LCAyMDgsIDc4LCA4NCwgNjUsIDY1LCAxMjgsIDc4LCA4MywgODUsIDc5LCAyMTIsIDc4LCA4MywgODUsIDc4LCAKLSAgICAxMjgsIDc4LCA4MywgODUsIDc3LCAxMjgsIDc4LCA4MywgNzksIDc3LCAxMjgsIDc4LCA4MywgNzMsIDY5LCA2OSwgODQsIAotICAgIDEyOCwgNzgsIDgzLCA3MywgNjksIDY5LCA4MCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgCi0gICAgODUsIDg0LCAxMjgsIDc4LCA4MywgNzIsIDg1LCAyMTIsIDc4LCA4MywgNzIsIDg1LCA3OSwgODAsIDEyOCwgNzgsIDgzLCAKLSAgICA3MiwgODUsIDY5LCAxMjgsIDc4LCA4MywgNzIsIDczLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjksIDY5LCAxMjgsIAotICAgIDc4LCA4MywgNzIsIDY1LCA4MSwgMTI4LCA3OCwgODMsIDcyLCA2NSwgMTI4LCA3OCwgODMsIDY5LCA4NSwgNjUsIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgODMsIDY5LCA3OCwgMTI4LCA3OCwgODMsIDY1LCAxMjgsIDc4LCA4MiwgODksIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgODksIDg0LCAxMjgsIDc4LCA4MiwgODksIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg5LCA4MiwgMTI4LCA3OCwgODIsIDg5LCAKLSAgICA4MCwgMTI4LCA3OCwgODIsIDg5LCAxMjgsIDc4LCA4MiwgODUsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDg0LCAxMjgsIDc4LCAKLSAgICA4MiwgODUsIDgyLCA4OCwgMTI4LCA3OCwgODIsIDg1LCA4MiwgMTI4LCA3OCwgODIsIDg1LCA4MCwgMTI4LCA3OCwgODIsIAotICAgIDg1LCA2NSwgMTI4LCA3OCwgODIsIDg1LCAxMjgsIDc4LCA4MiwgNzksIDg4LCAxMjgsIDc4LCA4MiwgNzksIDgwLCAxMjgsIAotICAgIDc4LCA4MiwgNzksIDEyOCwgNzgsIDgyLCA2OSwgODgsIDEyOCwgNzgsIDgyLCA2OSwgODQsIDEyOCwgNzgsIDgyLCA2OSwgCi0gICAgMjExLCA3OCwgODIsIDY5LCA4MCwgMTI4LCA3OCwgODIsIDY5LCAxMjgsIDc4LCA4MiwgNjUsIDg4LCAxMjgsIDc4LCA4MiwgCi0gICAgNjUsIDg0LCAxMjgsIDc4LCA4MiwgNjUsIDgwLCAxMjgsIDc4LCA4MiwgNjUsIDEyOCwgNzgsIDgxLCA3MywgNzEsIDEyOCwgCi0gICAgNzgsIDc5LCA4OSwgMTI4LCA3OCwgNzksIDg4LCAxMjgsIDc4LCA3OSwgODcsIDY3LCAxMjgsIDc4LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjYsIDY5LCA4MiwgMTI4LCA3OCwgNzksIDg0LCA4NCwgNzksIDEyOCwgNzgsIDc5LCA4NCwgNjksIDgzLCAxMjgsIAotICAgIDc4LCA3OSwgODQsIDY5LCA3MiwgNjksIDY1LCA2OCwgMTI4LCA3OCwgNzksIDg0LCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3OCwgCi0gICAgNzksIDg0LCA2OSwgNjYsIDc5LCA3OSwgNzUsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDY2LCA3OSwgNzksIDIwMywgNzgsIDc5LCAKLSAgICA4NCwgNjksIDEyOCwgNzgsIDc5LCA4NCwgMTk3LCA3OCwgNzksIDg0LCA2NywgNzIsIDY5LCAxOTYsIDc4LCA3OSwgODQsIAotICAgIDY3LCA3MiwgMTI4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNzksIDg0LCAxMjgsIDc4LCA3OSwgCi0gICAgMjEyLCA3OCwgNzksIDgzLCA2OSwgMTI4LCA3OCwgNzksIDgzLCAxOTcsIDc4LCA3OSwgODIsIDg0LCA3MiwgODcsIDY5LCAKLSAgICA4MywgMjEyLCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA4MiwgMjA2LCA3OCwgNzksIDgyLCA4NCwgNzIsIDY5LCA2NSwgODMsIAotICAgIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA4MiwgNzcsIDY1LCAyMDQsIDc4LCA3OSwgCi0gICAgODIsIDY4LCA3MywgMTk1LCA3OCwgNzksIDIxMCwgNzgsIDc5LCA4MCwgMTI4LCA3OCwgNzksIDc5LCA3OCwgODUsIDEyOCwgCi0gICAgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzksIDc4LCA3MCwgNzksIDgyLCA3NSwgNzMsIDc4LCA3MSwgMTI4LCA3OCwgNzksIDc4LCAKLSAgICA0NSwgODAsIDc5LCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3OCwgNzksIDc4LCA0NSwgNzQsIDc5LCA3MywgNzgsIDY5LCA4MiwgCi0gICAgMTI4LCA3OCwgNzksIDc4LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDc1LCA3MywgNzgsIDE5OSwgNzgsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNzksIDc3LCA3MywgNzgsIDY1LCAyMDQsIDc4LCA3OSwgNzUsIDcyLCA4NSwgNzUsIDEyOCwgNzgsIDc5LCA2OCwgNjksIAotICAgIDEyOCwgNzgsIDc5LCA2NSwgMTI4LCA3OCwgNzksIDQ1LCA2NiwgODIsIDY5LCA2NSwgMjAzLCA3OCwgNzgsIDg1LCA4NSwgCi0gICAgMTI4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCA3OCwgCi0gICAgODUsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCAxMjgsIDc4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc4LCAKLSAgICA3OSwgMTI4LCA3OCwgNzgsIDc4LCA3MywgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjksIAotICAgIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY5LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgCi0gICAgNzMsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDY1LCAxMjgsIDc4LCA3OCwgNzgsIDEyOCwgCi0gICAgNzgsIDc4LCA3MiwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgNzksIDc5LCAxMjgsIDc4LCA3OCwgNzEsIDc5LCAxMjgsIDc4LCAKLSAgICA3OCwgNzEsIDczLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA3MywgMTI4LCA3OCwgNzgsIDcxLCA2NSwgNjUsIDEyOCwgNzgsIAotICAgIDc4LCA3MSwgNjUsIDEyOCwgNzgsIDc4LCA3MSwgMTI4LCA3OCwgNzgsIDY2LCA4MywgODAsIDEyOCwgNzgsIDc3LCAxMjgsIAotICAgIDc4LCA3NiwgNjUsIDg1LCAxMjgsIDc4LCA3NiwgNDgsIDUwLCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTcsIDEyOCwgCi0gICAgNzgsIDc2LCA0OCwgNDksIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU1LCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDksIAotICAgIDUyLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgCi0gICAgNDksIDQ5LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDc2LCAKLSAgICA0OCwgNDgsIDU2LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIAotICAgIDc2LCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUyLCAKLSAgICAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIAotICAgIDQ5LCAxMjgsIDc4LCA3NiwgMTI4LCA3OCwgNzUsIDc5LCA3NywgMTI4LCA3OCwgNzUsIDIwNywgNzgsIDc1LCA3MywgNzgsIAotICAgIDY4LCA3MywgMTI4LCA3OCwgNzUsIDY1LCA4NSwgMTI4LCA3OCwgNzUsIDY1LCA2NSwgODIsIDY1LCA2OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg5LCA4OCwgMTI4LCA3OCwgNzQsIDg5LCA4NCwgMTI4LCA3OCwgNzQsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDc0LCAKLSAgICA4OSwgODIsIDEyOCwgNzgsIDc0LCA4OSwgODAsIDEyOCwgNzgsIDc0LCA4OSwgMTI4LCA3OCwgNzQsIDg1LCA4OCwgMTI4LCAKLSAgICA3OCwgNzQsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDc0LCA4NSwgODIsIDEyOCwgNzgsIDc0LCA4NSwgODEsIDY1LCAxMjgsIAotICAgIDc4LCA3NCwgODUsIDgwLCAxMjgsIDc4LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgMTI4LCA3OCwgCi0gICAgNzQsIDg1LCA2OSwgODEsIDEyOCwgNzgsIDc0LCA4NSwgNjUsIDY5LCAxMjgsIDc4LCA3NCwgODUsIDEyOCwgNzgsIDc0LCAKLSAgICA3OSwgODgsIDEyOCwgNzgsIDc0LCA3OSwgODQsIDEyOCwgNzgsIDc0LCA3OSwgODAsIDEyOCwgNzgsIDc0LCA3OSwgNzksIAotICAgIDEyOCwgNzgsIDc0LCA3OSwgMTI4LCA3OCwgNzQsIDczLCA4OCwgMTI4LCA3OCwgNzQsIDczLCA4NCwgMTI4LCA3OCwgNzQsIAotICAgIDczLCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODgsIDEyOCwgNzgsIDc0LCA3MywgNjksIDg0LCAxMjgsIDc4LCA3NCwgCi0gICAgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgNjksIDEyOCwgNzgsIDc0LCA3MywgNjksIDEyOCwgNzgsIDc0LCAKLSAgICA3MywgMTI4LCA3OCwgNzQsIDIwMSwgNzgsIDc0LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA4NCwgMTI4LCAKLSAgICA3OCwgNzQsIDY5LCA4NSwgNjUsIDY5LCA3OCwgNjUsIDEyOCwgNzgsIDc0LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIAotICAgIDc0LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCA2OSwgMTI4LCA3OCwgNzQsIDY5LCAxOTcsIDc4LCA3NCwgCi0gICAgNjksIDEyOCwgNzgsIDc0LCA2NSwgODEsIDEyOCwgNzgsIDc0LCA2NSwgODAsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAKLSAgICA3NiwgNzMsIDEyOCwgNzgsIDc0LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjUsIDY1LCAxMjgsIDc4LCA3MywgODgsIAotICAgIDEyOCwgNzgsIDczLCA4NCwgODIsIDY5LCAxMjgsIDc4LCA3MywgODMsIDY1LCA3MSwgMTI4LCA3OCwgNzMsIDgyLCA4NSwgCi0gICAgNzEsIDg1LCAxMjgsIDc4LCA3MywgODAsIDEyOCwgNzgsIDczLCA3OCwgODQsIDcyLCAxMjgsIDc4LCA3MywgNzgsIDY5LCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgNjksIDg0LCAyMTcsIDc4LCA3MywgNzgsIDY5LCA4NCwgNjksIDY5LCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgMjA2LCA3OCwgNzMsIDc4LCA2OSwgNDUsIDg0LCA3MiwgNzMsIDgyLCAKLSAgICA4NCwgODksIDEyOCwgNzgsIDczLCA3OCwgMTk3LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDUwLCAxMjgsIDc4LCA3MywgNzgsIAotICAgIDY4LCA2NSwgMTc4LCA3OCwgNzMsIDc4LCA1NywgMTI4LCA3OCwgNzMsIDc4LCAxMjgsIDc4LCA3MywgNzcsIDEyOCwgNzgsIAotICAgIDczLCAyMDUsIDc4LCA3MywgNzUsIDc5LCA3NiwgODMsIDY2LCA4NSwgODIsIDE5OSwgNzgsIDczLCA3NSwgNzIsIDY1LCA3MiwgCi0gICAgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCA3MiwgNzMsIDg0LCAxMjgsIDc4LCA3MywgNzUsIDY1LCAxMjgsIDc4LCAKLSAgICA3MywgNzIsIDgzLCA3MiwgODYsIDY1LCA4MywgNjUsIDEyOCwgNzgsIDczLCA3MSwgNzMsIDY4LCA2NSwgNzcsIDczLCA3OCwgCi0gICAgMTI4LCA3OCwgNzMsIDcxLCA3MywgNjgsIDY1LCA2OSwgODMsIDcyLCAxMjgsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCAKLSAgICA3OCwgNzMsIDcxLCA3MiwgMjEyLCA3OCwgNzMsIDcxLCA3MSwgNjUsIDcyLCA3MywgODQsIDY1LCAxMjgsIDc4LCA3MywgNjksIAotICAgIDg4LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDc4LCA3MywgCi0gICAgNjksIDg1LCA3OCwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgNjUsIAotICAgIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDcyLCA3MywgNjksIDg1LCA3MiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIAotICAgIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCAKLSAgICA2NywgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDIwNiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzgsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNzMsIDY2LCAxMjgsIDc4LCA3MywgNjUsIDEyOCwgNzgsIDczLCA1MCwgMTI4LCA3OCwgNzIsIDg1LCA2OSwgMTI4LCAKLSAgICA3OCwgNzIsIDc0LCA2NSwgMTI4LCA3OCwgNzIsIDEyOCwgNzgsIDcxLCA4OSwgNjksIDEyOCwgNzgsIDcxLCA4NiwgNjksIAotICAgIDEyOCwgNzgsIDcxLCA4NSwgODUsIDEyOCwgNzgsIDcxLCA4NSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgODUsIDc5LCA4NCwgCi0gICAgMTI4LCA3OCwgNzEsIDg1LCA3OSwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNzgsIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDY5LCAKLSAgICA4NCwgMTI4LCA3OCwgNzEsIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3OSwgODgsIDEyOCwgNzgsIDcxLCA3OSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA3OSwgMjEzLCA3OCwgNzEsIDc5LCA4NCwgMTI4LCA3OCwgNzEsIDc5LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDc5LCA4MCwgMTI4LCA3OCwgNzEsIDc5LCA3OCwgMTI4LCA3OCwgNzEsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDc5LCA2OSwgCi0gICAgNzIsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDIwMCwgNzgsIDcxLCAyMDcsIDc4LCA3MSwgNzUsIDg5LCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA3NSwgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDg1LCAKLSAgICA3OCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgODUsIDY5LCA3OCwgOTAsIDY5LCA4NSwgNzcsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgODUsIDE5NywgNzgsIDcxLCA3NSwgNzMsIDc4LCA2OCwgMjAxLCA3OCwgNzEsIDc1LCA3MywgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODgsIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA4MiwgNzMsIAotICAgIDEyOCwgNzgsIDcxLCA3NSwgNjksIDg1LCA2NSwgNjksIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgNjUsIDY5LCA3NywgCi0gICAgMTI4LCA3OCwgNzEsIDc1LCA2NSwgODEsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIDgwLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAKLSAgICA2NSwgNzcsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCAxMjgsIDc4LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIAotICAgIDczLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA3MywgNjksIDEyOCwgNzgsIDcxLCA3MiwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgODcsIDY1LCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgODUsIDgwLCAKLSAgICAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCAyMDksIDc4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc5LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA4NSwgNzcsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgODUsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgODMsIDcyLCA2NSwgMTk3LCAKLSAgICA3OCwgNzEsIDcxLCA4NSwgNjUsIDY5LCAyMDYsIDc4LCA3MSwgNzEsIDg1LCA2NSwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCi0gICAgMTI4LCA3OCwgNzEsIDcxLCA3OSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzksIDEyOCwgNzgsIDcxLCA3MSwgNzMsIDEyOCwgCi0gICAgNzgsIDcxLCA3MSwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCAKLSAgICA3MSwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjksIDIxMywgNzgsIDcxLCA3MSwgNjksIDc4LCAxMjgsIAotICAgIDc4LCA3MSwgNzEsIDY5LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA3MSwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgCi0gICAgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCAKLSAgICA2NSwgNjUsIDc3LCA2NSwgNjksIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgMTI4LCA3OCwgNzEsIDcxLCA2NSwgNjUsIAotICAgIDEyOCwgNzgsIDcxLCA3MSwgMTI4LCA3OCwgNzEsIDY5LCA4OCwgMTI4LCA3OCwgNzEsIDY5LCA4NSwgODIsIDY5LCA4NSwgCi0gICAgODQsIDEyOCwgNzgsIDcxLCA2OSwgODAsIDEyOCwgNzgsIDcxLCA2OSwgNzgsIDEyOCwgNzgsIDcxLCA2OSwgNjksIDEyOCwgCi0gICAgNzgsIDcxLCA2OSwgNjUsIDY4LCA2NSwgNzYsIDEyOCwgNzgsIDcxLCA2NSwgODgsIDEyOCwgNzgsIDcxLCA2NSwgODUsIAotICAgIDEyOCwgNzgsIDcxLCA2NSwgODQsIDEyOCwgNzgsIDcxLCA2NSwgMjExLCA3OCwgNzEsIDY1LCA4MSwgMTI4LCA3OCwgNzEsIAotICAgIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgNzEsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgCi0gICAgNjUsIDczLCAxMjgsIDc4LCA3MSwgNjUsIDcyLCAxMjgsIDc4LCA3MSwgNjUsIDY1LCA3MywgMTI4LCA3OCwgNzEsIDE5MywgCi0gICAgNzgsIDcwLCAxMjgsIDc4LCA2OSwgODgsIDIxMiwgNzgsIDY5LCA4OCwgMTI4LCA3OCwgNjksIDg3LCA4MywgODAsIDY1LCAKLSAgICA4MCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc4LCA2OSwgODcsIDc2LCA3MywgNzgsIAotICAgIDE5NywgNzgsIDY5LCA4NywgMTI4LCA3OCwgNjksIDIxNSwgNzgsIDY5LCA4NSwgODQsIDgyLCA2NSwgNzYsIDEyOCwgNzgsIAotICAgIDY5LCA4NSwgODQsIDgyLCA2NSwgMjA0LCA3OCwgNjksIDg1LCA4NCwgNjksIDgyLCAxMjgsIDc4LCA2OSwgODQsIDg3LCA3OSwgCi0gICAgODIsIDc1LCA2OSwgMTk2LCA3OCwgNjksIDg0LCAxMjgsIDc4LCA2OSwgMjEyLCA3OCwgNjksIDgzLCA4NCwgNjksIDE5NiwgCi0gICAgNzgsIDY5LCA4MiwgMTk2LCA3OCwgNjksIDgxLCA4NSwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjksIDgwLCA4NCwgODUsIDc4LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDgwLCAxMjgsIDc4LCA2OSwgNzksIDEyOCwgNzgsIDY5LCAyMDcsIDc4LCA2OSwgNzgsIDc5LCAKLSAgICA2OSwgMTI4LCA3OCwgNjksIDc4LCA2NSwgNzgsIDc5LCAxMjgsIDc4LCA2OSwgNzgsIDEyOCwgNzgsIDY5LCA3NiwgMTI4LCAKLSAgICA3OCwgNjksIDczLCA4NCwgNzIsIDY5LCAyMTAsIDc4LCA2OSwgNzEsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc4LCA2OSwgNzEsIAotICAgIDY1LCA4NCwgNjksIDE5NiwgNzgsIDY5LCA2NywgNzUsIDg0LCA3MywgNjksIDEyOCwgNzgsIDY5LCA2NywgNzUsIDEyOCwgCi0gICAgNzgsIDY5LCA2NiwgNjksIDc4LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDc4LCA2OCwgODUsIDg4LCAxMjgsIDc4LCAKLSAgICA2OCwgODUsIDg0LCAxMjgsIDc4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgMTI4LCA3OCwgNjgsIAotICAgIDg1LCA4MCwgMTI4LCA3OCwgNjgsIDg1LCA3OCwgMTI4LCA3OCwgNjgsIDIxMywgNzgsIDY4LCA3OSwgODgsIDEyOCwgNzgsIAotICAgIDY4LCA3OSwgODQsIDEyOCwgNzgsIDY4LCA3OSwgODAsIDEyOCwgNzgsIDY4LCA3OSwgNzksIDEyOCwgNzgsIDY4LCA3OSwgCi0gICAgNzgsIDEyOCwgNzgsIDY4LCA3OSwgNzcsIDY2LCA4NSwgMTI4LCA3OCwgNjgsIDc5LCA3NiwgMTk3LCA3OCwgNjgsIDczLCAKLSAgICA4OCwgMTI4LCA3OCwgNjgsIDczLCA4NCwgMTI4LCA3OCwgNjgsIDczLCA4MSwgMTI4LCA3OCwgNjgsIDczLCA4MCwgMTI4LCAKLSAgICA3OCwgNjgsIDczLCA2OSwgODgsIDEyOCwgNzgsIDY4LCA3MywgNjksIDEyOCwgNzgsIDY4LCA3MywgNjgsIDY1LCAxMjgsIAotICAgIDc4LCA2OCwgNzMsIDY1LCA4MSwgMTI4LCA3OCwgNjgsIDY5LCA4OCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgODgsIDEyOCwgCi0gICAgNzgsIDY4LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA2OCwgNjksIDg1LCA2NSwgNjksIDgyLCA2OSwgNjksIDEyOCwgNzgsIDY4LCAKLSAgICA2OSwgODAsIDEyOCwgNzgsIDY4LCA2OSwgNjksIDEyOCwgNzgsIDY4LCA2OSwgMTI4LCA3OCwgNjgsIDY1LCA4OCwgMTI4LCAKLSAgICA3OCwgNjgsIDY1LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA4MCwgMTI4LCA3OCwgNjgsIDY1LCA3NywgMTI4LCA3OCwgNjgsIAotICAgIDY1LCA2NSwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA2OCwgNjUsIDY1LCAxMjgsIDc4LCA2OCwgCi0gICAgNjUsIDE5MywgNzgsIDY3LCA3MiwgNjUsIDg1LCAxMjgsIDc4LCA2NiwgODksIDg4LCAxMjgsIDc4LCA2NiwgODksIDg0LCAKLSAgICAxMjgsIDc4LCA2NiwgODksIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4MiwgMTI4LCA3OCwgNjYsIDg5LCA4MCwgMTI4LCAKLSAgICA3OCwgNjYsIDg5LCAxMjgsIDc4LCA2NiwgODUsIDg4LCAxMjgsIDc4LCA2NiwgODUsIDg0LCAxMjgsIDc4LCA2NiwgODUsIAotICAgIDgyLCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgMTI4LCA3OCwgNjYsIDg1LCA4MCwgMTI4LCA3OCwgNjYsIDg1LCAxMjgsIAotICAgIDc4LCA2NiwgNzksIDg4LCAxMjgsIDc4LCA2NiwgNzksIDg0LCAxMjgsIDc4LCA2NiwgNzksIDgwLCAxMjgsIDc4LCA2NiwgCi0gICAgNzksIDEyOCwgNzgsIDY2LCA3MywgODgsIDEyOCwgNzgsIDY2LCA3MywgODQsIDEyOCwgNzgsIDY2LCA3MywgODAsIDEyOCwgCi0gICAgNzgsIDY2LCA3MywgNjksIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgMTI4LCAKLSAgICA3OCwgNjYsIDczLCAxMjgsIDc4LCA2NiwgNzIsIDEyOCwgNzgsIDY2LCA2NSwgODgsIDEyOCwgNzgsIDY2LCA2NSwgODQsIAotICAgIDEyOCwgNzgsIDY2LCA2NSwgODAsIDEyOCwgNzgsIDY2LCA2NSwgMTI4LCA3OCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA3OCwgNjUsIDg5LCAxMjgsIDc4LCA2NSwgODgsIDczLCA2NSwgMjA2LCA3OCwgNjUsIDg4LCAxMjgsIDc4LCA2NSwgCi0gICAgODUsIDg0LCA3MiwgODMsIDEyOCwgNzgsIDY1LCA4NSwgNjgsIDczLCAyMTgsIDc4LCA2NSwgODQsIDg1LCA4MiwgNjUsIAotICAgIDIwNCwgNzgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzgsIDY1LCA4MywgNzUsIDY1LCA4MCwgMjAxLCA3OCwgCi0gICAgNjUsIDgzLCA3MiwgNzMsIDEyOCwgNzgsIDY1LCA4MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzgsIDY1LCA4MywgNjUsIDIwNCwgNzgsIAotICAgIDY1LCA4MiwgODIsIDc5LCAyMTUsIDc4LCA2NSwgODIsIDEyOCwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc5LCAyMTEsIAotICAgIDc4LCA2NSwgNzgsIDgzLCA2NSwgNzgsIDY1LCA4MSwgMTI4LCA3OCwgNjUsIDc4LCA3MSwgNzcsIDc5LCA3OCwgODQsIDcyLCAKLSAgICA3OSwgMTI4LCA3OCwgNjUsIDc4LCA2OCwgMTI4LCA3OCwgNjUsIDc4LCA2NSwgMTI4LCA3OCwgNjUsIDc3LCA2OSwgMTI4LCAKLSAgICA3OCwgNjUsIDc3LCAxOTcsIDc4LCA2NSwgNzcsIDUwLCAxMjgsIDc4LCA2NSwgNzcsIDEyOCwgNzgsIDY1LCA3NSwgMTI4LCAKLSAgICA3OCwgNjUsIDczLCA4MiwgMTkzLCA3OCwgNjUsIDczLCAyMDQsIDc4LCA2NSwgNzEsIDgyLCAyMDEsIDc4LCA2NSwgNzEsIAotICAgIDY1LCA4MiwgMTI4LCA3OCwgNjUsIDcxLCA2NSwgMTI4LCA3OCwgNjUsIDcxLCAxOTMsIDc4LCA2NSwgNzEsIDEyOCwgNzgsIAotICAgIDY1LCAxOTksIDc4LCA2NSwgNjksIDEyOCwgNzgsIDY1LCA2NiwgNzYsIDY1LCAxMjgsIDc4LCA2NSwgNjYsIDY1LCA4NCwgCi0gICAgNjUsIDY5LCA2NSwgMjA2LCA3OCwgNjUsIDY1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIDY1LCAKLSAgICA3NSwgODMsIDczLCA3NSwgODksIDY1LCA4OSwgNjUsIDEyOCwgNzgsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDY1LCAxOTMsIAotICAgIDc4LCA2NSwgNTIsIDEyOCwgNzgsIDY1LCA1MCwgMTI4LCA3OCwgNjUsIDQ1LCA1MCwgMTI4LCA3OCwgNDgsIDUyLCA1MCwgCi0gICAgMTI4LCA3OCwgNDgsIDUyLCA0OSwgMTI4LCA3OCwgNDgsIDUyLCA0OCwgMTI4LCA3OCwgNDgsIDUxLCA1NywgMTI4LCA3OCwgCi0gICAgNDgsIDUxLCA1NiwgMTI4LCA3OCwgNDgsIDUxLCA1NSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MSwgNTQsIDEyOCwgNzgsIDQ4LCA1MSwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUzLCAxMjgsIDc4LCA0OCwgNTEsIAotICAgIDUyLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MiwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgNjUsIDEyOCwgNzgsIDQ4LCA1MSwgCi0gICAgNTEsIDEyOCwgNzgsIDQ4LCA1MSwgNTAsIDEyOCwgNzgsIDQ4LCA1MSwgNDksIDEyOCwgNzgsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNzgsIDQ4LCA1MCwgNTcsIDEyOCwgNzgsIDQ4LCA1MCwgNTYsIDEyOCwgNzgsIDQ4LCA1MCwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA1MCwgNTQsIDEyOCwgNzgsIDQ4LCA1MCwgNTMsIDY1LCAxMjgsIDc4LCA0OCwgNTAsIDUzLCAxMjgsIDc4LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDc4LCA0OCwgNTAsIDUxLCAxMjgsIDc4LCA0OCwgNTAsIDUwLCAxMjgsIDc4LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDc4LCA0OCwgNTAsIDQ4LCAxMjgsIDc4LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NiwgMTI4LCA3OCwgCi0gICAgNDgsIDQ5LCA1NiwgNjUsIDEyOCwgNzgsIDQ4LCA0OSwgNTYsIDEyOCwgNzgsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDQ4LCAKLSAgICA0OSwgNTQsIDEyOCwgNzgsIDQ4LCA0OSwgNTMsIDEyOCwgNzgsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDQ4LCA0OSwgNTEsIAotICAgIDEyOCwgNzgsIDQ4LCA0OSwgNTAsIDEyOCwgNzgsIDQ4LCA0OSwgNDksIDEyOCwgNzgsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIAotICAgIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDQ4LCA0OCwgNTYsIDEyOCwgNzgsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDQ4LCA0OCwgCi0gICAgNTQsIDEyOCwgNzgsIDQ4LCA0OCwgNTMsIDEyOCwgNzgsIDQ4LCA0OCwgNTIsIDEyOCwgNzgsIDQ4LCA0OCwgNTEsIDEyOCwgCi0gICAgNzgsIDQ4LCA0OCwgNTAsIDEyOCwgNzgsIDQ4LCA0OCwgNDksIDEyOCwgNzgsIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc4LCAKLSAgICA0NSwgNjUsIDgyLCAyMTcsIDc3LCA4OSwgODgsIDEyOCwgNzcsIDg5LCA4NCwgMTI4LCA3NywgODksIDgzLCA3NiwgNzMsIAotICAgIDg0LCA2OSwgMTI4LCA3NywgODksIDgwLCAxMjgsIDc3LCA4OSwgNjUsIDEyOCwgNzcsIDg5LCAxOTMsIDc3LCA4OSwgMTI4LCAKLSAgICA3NywgMjE3LCA3NywgODcsIDc5LCA3OSwgMTI4LCA3NywgODcsIDc5LCAxMjgsIDc3LCA4NywgNzMsIDczLCAxMjgsIDc3LCAKLSAgICA4NywgNzMsIDEyOCwgNzcsIDg3LCA2OSwgNjksIDEyOCwgNzcsIDg3LCA2OSwgMTI4LCA3NywgODcsIDY1LCA2NSwgMTI4LCAKLSAgICA3NywgODcsIDY1LCAxMjgsIDc3LCA4NywgMTI4LCA3NywgMjE1LCA3NywgODYsIDgzLCAxMjgsIDc3LCA4NiwgNzksIDgwLCAKLSAgICAxMjgsIDc3LCA4NiwgNzMsIDEyOCwgNzcsIDg2LCA2OSwgODUsIDY1LCA2OSwgNzgsIDcxLCA2NSwgNzcsIDEyOCwgNzcsIAotICAgIDg2LCAxMjgsIDc3LCAyMTQsIDc3LCA4NSwgODgsIDEyOCwgNzcsIDg1LCA4NSwgODMsIDczLCA3NSwgNjUsIDg0LCA3OSwgCi0gICAgNjUsIDc4LCAxMjgsIDc3LCA4NSwgODUsIDgyLCA2OCwgNzIsIDY1LCA3NCwgMTkzLCA3NywgODUsIDg1LCAxMjgsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzcsIDg1LCA4MywgNzMsIDY3LCAxMjgsIDc3LCA4NSwgODMsIDczLCAxOTUsIDc3LCA4NSwgODMsIAotICAgIDcyLCA4MiwgNzksIDc5LCA3NywgMTI4LCA3NywgODUsIDgzLCA3MiwgNTEsIDEyOCwgNzcsIDg1LCA4MywgNzIsIDE3OSwgCi0gICAgNzcsIDg1LCA4MywgNzIsIDEyOCwgNzcsIDg1LCA4MywgMjAwLCA3NywgODUsIDgzLCAxMjgsIDc3LCA4NSwgODIsIDg4LCAKLSAgICAxMjgsIDc3LCA4NSwgODIsIDcxLCA4NSwgNTAsIDEyOCwgNzcsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDg1LCA4MiwgNjgsIAotICAgIDY1LCAxMjgsIDc3LCA4NSwgODIsIDY4LCAxOTMsIDc3LCA4NSwgODIsIDEyOCwgNzcsIDg1LCA4MSwgNjgsIDY1LCA3NywgCi0gICAgMTI4LCA3NywgODUsIDgwLCAxMjgsIDc3LCA4NSwgNzksIDg4LCAxMjgsIDc3LCA4NSwgNzksIDg0LCAxMjgsIDc3LCA4NSwgCi0gICAgNzksIDgwLCAxMjgsIDc3LCA4NSwgNzksIDc3LCA2NSwgNjksIDEyOCwgNzcsIDg1LCA3OSwgMTI4LCA3NywgODUsIDc4LCAKLSAgICA4MywgODUsIDY2LCAxMjgsIDc3LCA4NSwgNzgsIDY1LCA3MiwgMTI4LCA3NywgODUsIDc4LCAxMjgsIDc3LCA4NSwgNzYsIAotICAgIDg0LCA3MywgODMsIDY5LCA4NCwgMTI4LCA3NywgODUsIDc2LCA4NCwgNzMsIDgzLCA2OSwgMjEyLCA3NywgODUsIDc2LCA4NCwgCi0gICAgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDY5LCAxMjgsIDc3LCA4NSwgCi0gICAgNzYsIDg0LCA3MywgODAsIDc2LCAxOTcsIDc3LCA4NSwgNzYsIDg0LCA3MywgNzksIDY3LCA4NSwgNzYsIDY1LCAyMTAsIDc3LCAKLSAgICA4NSwgNzYsIDg0LCA3MywgNzcsIDY1LCA4MCwgMTI4LCA3NywgODUsIDc2LCA4NCwgMjAxLCA3NywgODUsIDc2LCA4NCwgNjUsIAotICAgIDc4LCAyMDEsIDc3LCA4NSwgNzUsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzcsIDg1LCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA3MSwgODMsIDEyOCwgNzcsIDg1LCA3MSwgMTI4LCA3NywgODUsIDE5OSwgNzcsIDg1LCA2OSwgNzgsIDEyOCwgCi0gICAgNzcsIDg1LCA2OSwgMTI4LCA3NywgODUsIDY3LCA3MiwgMTI4LCA3NywgODUsIDY3LCAyMDAsIDc3LCA4NSwgNjcsIDY1LCAKLSAgICA2NSwgNjgsIDEyOCwgNzcsIDg1LCA2NSwgODMsIDEyOCwgNzcsIDg1LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA2NSwgNjksIAotICAgIDEyOCwgNzcsIDg1LCA0NSwgNzEsIDY1LCA2NSwgNzIsIDc2LCA2NSwgMTkzLCA3NywgMjEzLCA3NywgODMsIDEyOCwgNzcsIAotICAgIDgyLCAyMDcsIDc3LCA4MCwgNjUsIDEyOCwgNzcsIDc5LCA4OSwgNjUsIDczLCAxMjgsIDc3LCA3OSwgODgsIDEyOCwgNzcsIAotICAgIDc5LCA4NiwgNzMsIDE5NywgNzcsIDc5LCA4NiwgNjksIDIxMSwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgCi0gICAgODcsIDY1LCA3NiwgNzYsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIAotICAgIDcyLCA3MywgNzgsIDcxLCAxOTcsIDc3LCA3OSwgODYsIDY5LCA3NywgNjksIDc4LCA4NCwgNDUsIDcwLCA3NiwgNzksIDc5LCAKLSAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNjgsIDczLCA2NSwgCi0gICAgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDc3LCA3OSwgODYsIDY5LCAKLSAgICA3NywgNjksIDc4LCAyMTIsIDc3LCA3OSwgODYsIDY5LCAxOTYsIDc3LCA3OSwgODYsIDY5LCAxMjgsIDc3LCA3OSwgODUsIAotICAgIDg0LCA3MiwgMTI4LCA3NywgNzksIDg1LCA4MywgNjksIDEyOCwgNzcsIDc5LCA4NSwgODMsIDE5NywgNzcsIDc5LCA4NSwgCi0gICAgNzgsIDg0LCA2NSwgNzMsIDc4LCA4MywgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzcsIDc5LCAKLSAgICA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzcsIDc5LCA4NSwgNzgsIDIxMiwgNzcsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIAotICAgIDc3LCA3OSwgODUsIDc4LCAxOTYsIDc3LCA3OSwgODQsIDc5LCA4MiwgODcsIDY1LCA4OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgCi0gICAgODIsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA3NywgNzksIDg0LCA3OSwgMjEwLCA3NywgNzksIDg0LCA3MiwgNjksIDgyLCAKLSAgICAxMjgsIDc3LCA3OSwgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIAotICAgIDg1LCA3NywgMTI4LCA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgCi0gICAgNzEsIDczLCA2NywgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCAKLSAgICA3NywgNzksIDc5LCA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIAotICAgIDIwNiwgNzcsIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgCi0gICAgNzcsIDc5LCA3OSwgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCAKLSAgICA3MywgNjksIDY5LCA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgODMsIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgCi0gICAgNzksIDc4LCA3OSwgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCAKLSAgICA3OSwgNzgsIDc5LCA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCi0gICAgMjExLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCAKLSAgICA4MywgMTI4LCA3NywgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgCi0gICAgMTI4LCA3NywgNzksIDc4LCA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCAKLSAgICA2OSwgODUsIDY1LCA2OSwgODEsIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIAotICAgIDc5LCA3OCwgNjksIDIxNywgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIAotICAgIDcyLCA2NSwgNzcsIDc3LCA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCi0gICAgNjksIDgyLCA0NSwgNTcsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCAKLSAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCi0gICAgNTQsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKLSAgICA3MywgNjksIDgyLCA0NSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDU0LCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDUxLCAxMjgsIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIAotICAgIDY4LCA3MywgNzAsIDczLCA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCAKLSAgICA0NSwgNDksIDQ4LCAxMjgsIDc3LCA3OSwgNjgsIDIwMSwgNzcsIDc5LCA2OCwgNjksIDgzLCA4NCwgODksIDEyOCwgNzcsIAotICAgIDc5LCA2OCwgNjksIDc3LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA3NiwgODMsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDc2LCAKLSAgICAxMjgsIDc3LCA3OSwgNjgsIDY5LCAxMjgsIDc3LCA3OSwgNjYsIDczLCA3NiwgMTk3LCA3NywgNzksIDY1LCAxMjgsIDc3LCAKLSAgICAyMDcsIDc3LCA3OCwgODksIDY1LCAyMDUsIDc3LCA3OCwgNjUsIDgzLCAxMjgsIDc3LCA3NywgODMsIDgwLCAxMjgsIDc3LCAKLSAgICA3NywgMTI4LCA3NywgMjA1LCA3NywgNzYsIDY1LCAxMjgsIDc3LCA3NiwgMTI4LCA3NywgNzUsIDgwLCA2NSwgODIsIDY1LCAKLSAgICAyMDksIDc3LCA3MywgODgsIDEyOCwgNzcsIDczLCA4NCwgMTI4LCA3NywgNzMsIDgzLCA4MiwgNjUsIDEyOCwgNzcsIDczLCAKLSAgICA4MiwgNzMsIDY2LCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgMTI4LCA3NywgNzMsIDgyLCA2OSwgNjgsIAotICAgIDEyOCwgNzcsIDczLCA4MCwgMTI4LCA3NywgNzMsIDc4LCA4OSwgMTI4LCA3NywgNzMsIDc4LCA4NSwgODMsIDQ1LCA3OSwgCi0gICAgODIsIDQ1LCA4MCwgNzYsIDg1LCAyMTEsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3NywgNzMsIDc4LCA3MywgODMsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA3MywgNzgsIDczLCA3NywgNjUsIAotICAgIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY4LCA3MywgODMsIDY3LCAxMjgsIDc3LCA3MywgNzgsIDczLCA2NiwgODUsIDgzLCAKLSAgICAxMjgsIDc3LCA3MywgNzcsIDY5LCAxMjgsIDc3LCA3MywgNzcsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIAotICAgIDgzLCAxMjgsIDc3LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCAyMTEsIDc3LCA3MywgNzYsIDc2LCA2OSwgODQsIDEyOCwgCi0gICAgNzcsIDczLCA3NiwgNzYsIDE5NywgNzcsIDczLCA3NiwgMjA0LCA3NywgNzMsIDc2LCA3NSwgMjE3LCA3NywgNzMsIDc2LCAKLSAgICA3MywgODQsIDY1LCA4MiwgMjE3LCA3NywgNzMsIDc2LCAxMjgsIDc3LCA3MywgNzUsIDg1LCA4MiwgNzksIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNzUsIDgyLCA3OSwgMjA2LCA3NywgNzMsIDc1LCA4MiwgNzMsIDEyOCwgNzcsIDczLCA3MywgNzgsIDEyOCwgCi0gICAgNzcsIDczLCA3MywgMTI4LCA3NywgNzMsIDE5OSwgNzcsIDczLCA2OSwgODgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MywgODMsIDY1LCA3OCwgCi0gICAgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgNjUsIDc4LCA3MSwgNzgsIAotICAgIDczLCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NywgCi0gICAgNzMsIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDQ1LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIAotICAgIDY5LCA4NSwgNzcsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODAsIDY1LCAKLSAgICA3OCwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIAotICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKLSAgICA2NywgNzIsIDczLCA2OSwgODUsIDY3LCA3MiwgMTI4LCA3NywgNzMsIDY5LCA4NSwgMjA1LCA3NywgNzMsIDY5LCA4MCwgCi0gICAgMTI4LCA3NywgNzMsIDY5LCA2OSwgMTI4LCA3NywgNzMsIDY5LCAxMjgsIDc3LCA3MywgNjgsIDc2LCA3MywgNzgsIDE5NywgCi0gICAgNzcsIDczLCA2OCwgNjgsIDc2LCA2OSwgNDUsIDg3LCA2OSwgNzYsIDgzLCAyMDAsIDc3LCA3MywgNjgsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzcsIDczLCA2OCwgNDUsIDc2LCA2OSwgODYsIDY5LCAyMDQsIDc3LCA3MywgMTk2LCA3NywgNzMsIDY3LCA4MiwgCi0gICAgNzksIDgzLCA2NywgNzksIDgwLCA2OSwgMTI4LCA3NywgNzMsIDY3LCA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCAKLSAgICA3NywgNzMsIDY3LCA4MiwgMjA3LCA3NywgNzMsIDY3LCAyMTAsIDc3LCA3MiwgOTAsIDEyOCwgNzcsIDcyLCA2NSwgMTI4LCAKLSAgICA3NywgNzIsIDEyOCwgNzcsIDcxLCA4NSwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODQsIDEyOCwgNzcsIDcxLCA4NSwgODIsIAotICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDgyLCAxMjgsIDc3LCA3MSwgODUsIDgwLCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4OCwgCi0gICAgMTI4LCA3NywgNzEsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIDEyOCwgNzcsIDcxLCA4NSwgMTI4LCA3NywgCi0gICAgNzEsIDc5LCA4OCwgMTI4LCA3NywgNzEsIDc5LCA4NCwgMTI4LCA3NywgNzEsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDc5LCAKLSAgICAxMjgsIDc3LCA3MSwgMjA3LCA3NywgNzEsIDczLCA2OSwgODgsIDEyOCwgNzcsIDcxLCA3MywgNjksIDEyOCwgNzcsIDcxLCAKLSAgICA2OSwgODgsIDEyOCwgNzcsIDcxLCA2OSwgODAsIDEyOCwgNzcsIDcxLCA2OSwgMTI4LCA3NywgNzEsIDY2LCA4NSwgMTI4LCAKLSAgICA3NywgNzEsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDcxLCA2NiwgNzksIDcwLCA4NSwgNzcsIDEyOCwgNzcsIDcxLCA2NiwgNzksIAotICAgIDEyOCwgNzcsIDcxLCA2NiwgNzMsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDg1LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgCi0gICAgNzgsIDEyOCwgNzcsIDcxLCA2NiwgNjksIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDY1LCAKLSAgICA4MywgNjUsIDgxLCAxMjgsIDc3LCA3MSwgNjYsIDY1LCA4MywgNjUsIDEyOCwgNzcsIDcxLCA2NSwgODgsIDEyOCwgNzcsIAotICAgIDcxLCA2NSwgODQsIDEyOCwgNzcsIDcxLCA2NSwgODAsIDEyOCwgNzcsIDcxLCA2NSwgMTI4LCA3NywgNzEsIDEyOCwgNzcsIAotICAgIDcwLCA3OSwgNzgsIDEyOCwgNzcsIDcwLCA3OSwgMjA2LCA3NywgNzAsIDc5LCAxMjgsIDc3LCA3MCwgNzMsIDg5LCA2NSwgCi0gICAgODEsIDEyOCwgNzcsIDcwLCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MCwgNjksIDg1LCA4NCwgMTI4LCA3NywgNzAsIDY5LCAKLSAgICA4NSwgODEsIDEyOCwgNzcsIDcwLCA2OSwgODUsIDY1LCA2OSwgMTI4LCA3NywgNzAsIDY1LCA2NSwgMTI4LCA3NywgNjksIAotICAgIDkwLCA5MCwgNzksIDEyOCwgNzcsIDY5LCA4OCwgMTI4LCA3NywgNjksIDg1LCAyMTIsIDc3LCA2OSwgODUsIDgxLCAxMjgsIAotICAgIDc3LCA2OSwgODUsIDc4LCA3NCwgNzksIDc3LCA3OCwgNjgsIDY5LCA4NSwgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDEyOCwgCi0gICAgNzcsIDY5LCA4NCwgODIsIDc5LCAxMjgsIDc3LCA2OSwgODQsIDgyLCA3MywgNjcsIDY1LCAyMDQsIDc3LCA2OSwgODQsIDgyLCAKLSAgICA3MywgNjUsIDEyOCwgNzcsIDY5LCA4NCwgODIsIDY5LCA4NCwgNjksIDIxMSwgNzcsIDY5LCA4NCwgNzksIDY2LCA2OSwgNzYsIAotICAgIDg1LCA4MywgMTI4LCA3NywgNjksIDg0LCA2OSwgNzUsIDEyOCwgNzcsIDY5LCA4NCwgNjksIDcxLCAxMjgsIDc3LCA2OSwgCi0gICAgODQsIDY1LCA3NiwgMTI4LCA3NywgNjksIDg0LCAxOTMsIDc3LCA2OSwgODMsIDgzLCA2OSwgNzgsIDczLCA2NSwgMjA2LCAKLSAgICA3NywgNjksIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjksIDgzLCA4MywgNjUsIDcxLCAxOTcsIDc3LCA2OSwgODMsIAotICAgIDc5LCAxMjgsIDc3LCA2OSwgODMsIDczLCAxMjgsIDc3LCA2OSwgODMsIDcyLCAxMjgsIDc3LCA2OSwgODIsIDc1LCA3MiwgCi0gICAgNjUsIDEyOCwgNzcsIDY5LCA4MiwgNzUsIDcyLCAxOTMsIDc3LCA2OSwgODIsIDczLCA2OCwgNzMsIDY1LCA3OCwgODMsIAotICAgIDEyOCwgNzcsIDY5LCA4MiwgNzMsIDEyOCwgNzcsIDY5LCA4MiwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgCi0gICAgODIsIDg5LCAxMjgsIDc3LCA2OSwgODIsIDY3LCA4NSwgODIsIDIxNywgNzcsIDY5LCA3OCwgNzksIDgyLCA2NSwgMjAwLCAKLSAgICA3NywgNjksIDc4LCA3OSwgNjksIDEyOCwgNzcsIDY5LCA3OCwgNjgsIDg1LCA4NCwgMTI4LCA3NywgNjksIDc4LCAxMjgsIAotICAgIDc3LCA2OSwgNzcsIDc5LCAxMjgsIDc3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDc3LCA2OSwgCi0gICAgNzcsIDY2LCA2OSwgODIsIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCAyMTAsIDc3LCA2OSwgNzcsIDQ1LCA4MSwgNzksIDgwLCAKLSAgICA3MiwgMTI4LCA3NywgNjksIDc3LCAxMjgsIDc3LCA2OSwgMjA1LCA3NywgNjksIDc2LCA3OSwgNjgsIDczLCAxOTUsIDc3LCAKLSAgICA2OSwgNzYsIDczLCA3NSwgMTI4LCA3NywgNjksIDczLCA5MCwgNzMsIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDg0LCA3OSwgNzgsIAotICAgIDEyOCwgNzcsIDY5LCA3MSwgNjUsIDgwLCA3MiwgNzksIDc4LCA2OSwgMTI4LCA3NywgNjksIDcxLCA2NSwgNzYsIDczLCAKLSAgICAxMjgsIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc3LCA2OSwgNjksIDg0LCA2OSwgMjAxLCA3NywgNjksIAotICAgIDY5LCA4NCwgMTI4LCA3NywgNjksIDY5LCA3NywgODUsIDEyOCwgNzcsIDY5LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCA2OSwgCi0gICAgMjAyLCA3NywgNjksIDY5LCA2OSwgNjksIDEyOCwgNzcsIDY5LCA2OCwgNzMsIDg1LCA3NywgMTI4LCA3NywgNjksIDY4LCAKLSAgICA3MywgODUsIDIwNSwgNzcsIDY5LCA2OCwgNzMsIDY3LCA3MywgNzgsIDY5LCAxMjgsIDc3LCA2OSwgNjgsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzcsIDY5LCA2OCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgNjUsIDg0LCAxMjgsIDc3LCA2OSwgNjUsIDIxMiwgNzcsIAotICAgIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDE5NiwgNzcsIDY5LCA2NSwgODMsIDg1LCA4MiwgNjksIDEyOCwgNzcsIDY5LCA2NSwgCi0gICAgODMsIDg1LCA4MiwgMTk3LCA3NywgNjgsIDg1LCAyMDYsIDc3LCAxOTYsIDc3LCA2NywgNzIsIDIxMywgNzcsIDY3LCA3MiwgCi0gICAgNjUsIDIwNiwgNzcsIDE5NSwgNzcsIDY2LCA4NSwgODUsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDgxLCAxMjgsIDc3LCA2NiwgCi0gICAgODUsIDc5LCAxMjgsIDc3LCA2NiwgODUsIDY5LCAxMjgsIDc3LCA2NiwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzcsIDY2LCAKLSAgICA4NSwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDc3LCA2NiwgNzksIDEyOCwgNzcsIDY2LCA3MywgODQsIAotICAgIDEyOCwgNzcsIDY2LCA3MywgMjEyLCA3NywgNjYsIDczLCA4MiwgNzMsIDY5LCA2OSwgNzgsIDEyOCwgNzcsIDY2LCA3MywgCi0gICAgMTI4LCA3NywgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzcsIDY2LCA2OSwgODUsIDgyLCA3MywgMTI4LCA3NywgNjYsIDY5LCAKLSAgICA4NSwgNzcsIDEyOCwgNzcsIDY2LCA2OSwgODIsIDY1LCA2OSwgMTI4LCA3NywgNjYsIDY5LCA3OCwgMTI4LCA3NywgNjYsIAotICAgIDY5LCA2OSwgNzUsIDY5LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDY2LCA2OSwgMTI4LCA3NywgCi0gICAgNjYsIDY1LCA4MSwgMTI4LCA3NywgNjYsIDY1LCA3OCwgODksIDczLCAxMjgsIDc3LCA2NiwgNjUsIDY1LCA4MiwgNjUsIDY5LCAKLSAgICAxMjgsIDc3LCA2NiwgNjUsIDY1LCA3NSwgNjksIDg0LCAxMjgsIDc3LCA2NiwgNjUsIDY1LCAxMjgsIDc3LCA2NiwgNjUsIAotICAgIDE5MywgNzcsIDY2LCAxOTMsIDc3LCA2NiwgNTIsIDEyOCwgNzcsIDY2LCA1MSwgMTI4LCA3NywgNjYsIDUwLCAxMjgsIDc3LCAKLSAgICA2NSwgODksIDY5LCAyMDMsIDc3LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgODksIDEyOCwgNzcsIAotICAgIDY1LCA4OCwgNzMsIDc3LCA3MywgOTAsIDY5LCAxMjgsIDc3LCA2NSwgODgsIDczLCA3NywgNjUsIDEyOCwgNzcsIDY1LCA4OCwgCi0gICAgMTI4LCA3NywgNjUsIDg1LCAxMjgsIDc3LCA2NSwgODQsIDg0LCA3OSwgNjcsIDc1LCAxMjgsIDc3LCA2NSwgODQsIDgyLCAKLSAgICA3MywgODgsIDEyOCwgNzcsIDY1LCA4NCwgNjksIDgyLCA3MywgNjUsIDc2LCA4MywgMTI4LCA3NywgNjUsIDg0LCAxMjgsIAotICAgIDc3LCA2NSwgODMsIDIxMywgNzcsIDY1LCA4MywgODMsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDY1LCA4MywgODMsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzcsIDY1LCA4MywgNzksIDgyLCAxOTMsIDc3LCA2NSwgODMsIDc1LCAxMjgsIDc3LCA2NSwgODMsIDcyLCAKLSAgICA3MCwgNjUsIDY1LCA4NCwgMTI4LCA3NywgNjUsIDgzLCA3MiwgNTAsIDEyOCwgNzcsIDY1LCA4MywgNjcsIDg1LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDc3LCA2NSwgODIsIDg5LCAxMjgsIDc3LCA2NSwgODIsIDg3LCA2NSwgODIsIDIwMSwgNzcsIDY1LCA4MiwgCi0gICAgODUsIDc1LCA4NSwgMTI4LCA3NywgNjUsIDgyLCA4NCwgODksIDgyLCA3MywgMTkzLCA3NywgNjUsIDgyLCA4MiwgODksIDczLCAKLSAgICA3OCwgMTk5LCA3NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA3NywgNjUsIDgyLCA3NSwgMjExLCA3NywgNjUsIAotICAgIDgyLCA3NSwgNjksIDgyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTIsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCA1MSwgCi0gICAgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDUwLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNDksIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgODMsIAotICAgIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgCi0gICAgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIDY1LCAKLSAgICA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgNjUsIAotICAgIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgNzcsIAotICAgIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCA4MywgCi0gICAgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAorICAgIDg3LCA3NiwgMTI4LCA3OSwgODYsIDY5LCA4MiwgODIsIDczLCA2OCwgNjksIDEyOCwgNzksIDg2LCA2OSwgODIsIDc2LCA3OSwgCisgICAgNzgsIDE5OSwgNzksIDg2LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDg5LCAKKyAgICAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIAorICAgIDgwLCAxMjgsIDc5LCA4NiwgNjksIDgyLCA3NiwgNjUsIDczLCA2OCwgMTI4LCA3OSwgODYsIDY5LCA4MiwgNjYsIDY1LCA4MiwgCisgICAgMTI4LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3OSwgODYsIDY1LCAyMDQsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAKKyAgICAxOTYsIDc5LCA4NSwgODQsIDc2LCA3MywgNzgsIDY5LCAxMjgsIDc5LCA4NSwgODQsIDY5LCAyMTAsIDc5LCA4NSwgODQsIAorICAgIDY2LCA3OSwgMjE2LCA3OSwgODUsIDc4LCA3NSwgNzMsIDE5MywgNzksIDg1LCA3OCwgNjcsIDY5LCAxMjgsIDc5LCA4NSwgCisgICAgNzgsIDY3LCAxOTcsIDc5LCA4NCwgODUsIDEyOCwgNzksIDg0LCA4NCwgNjUsIDg2LCAxOTMsIDc5LCA4NCwgODQsIDEyOCwgCisgICAgNzksIDg0LCA3MiwgNjksIDgyLCAyMTEsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc5LCA4NCwgNzIsIDY1LCA3NiwgNjUsIAorICAgIDIwNiwgNzksIDg0LCA3MiwgNjUsIDc2LCAxMjgsIDc5LCA4MywgNzcsIDY1LCA3OCwgODksIDE5MywgNzksIDgzLCA2NywgCisgICAgMTI4LCA3OSwgODMsIDY1LCA3MSwgMTk3LCA3OSwgODIsIDg0LCA3MiwgNzksIDcxLCA3OSwgNzgsIDY1LCAyMDQsIDc5LCAKKyAgICA4MiwgODQsIDcyLCA3OSwgNjgsIDc5LCAyMTYsIDc5LCA4MiwgNzgsIDY1LCA4NCwgMTk3LCA3OSwgODIsIDc4LCA2NSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDgzLCAxMjgsIDc5LCA4MiwgNzgsIDY1LCA3NywgNjksIDc4LCA4NCwgMTI4LCA3OSwgODIsIDc4LCA2NSwgCisgICAgNzcsIDY5LCA3OCwgMjEyLCA3OSwgODIsIDc1LCA3MiwgNzksIDIwNiwgNzksIDgyLCA3MywgODksIDE5MywgNzksIDgyLCAKKyAgICA3MywgNzEsIDczLCA3OCwgNjUsIDIwNCwgNzksIDgyLCA3MywgNzEsIDczLCA3OCwgMTI4LCA3OSwgODIsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNzksIDgyLCA2OCwgNzMsIDc4LCA2NSwgMjA0LCA3OSwgODIsIDY4LCA2OSwgMjEwLCA3OSwgODIsIDY3LCA3MiwgCisgICAgNzMsIDY4LCAxMjgsIDc5LCA4MiwgNjUsIDc4LCA3MSwgMTk3LCA3OSwgODAsIDg0LCA3MywgNzksIDIwNiwgNzksIDgwLCAKKyAgICA4NCwgNzMsIDY3LCA2NSwgMjA0LCA3OSwgODAsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3OSwgODAsIDgwLCA3OSwgODMsIDczLCA3OCwgMTk5LCA3OSwgCisgICAgODAsIDgwLCA3OSwgODMsIDY5LCAxMjgsIDc5LCA4MCwgNzIsIDczLCA4NSwgNjcsIDcyLCA4NSwgODMsIDEyOCwgNzksIDgwLCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDc5LCA4MCwgNjksIDgyLCA2NSwgODQsIDc5LCAyMTAsIDc5LCA4MCwgNjksIAorICAgIDgyLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3OSwgODAsIDY5LCA3OCwgNzMsIDc4LCAxOTksIDc5LCA4MCwgNjksIDc4LCA0NSwgCisgICAgODAsIDEyOCwgNzksIDgwLCA2OSwgNzgsIDQ1LCA3OSwgODUsIDg0LCA3NiwgNzMsIDc4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCAKKyAgICA3OCwgNDUsIDc5LCAxMjgsIDc5LCA4MCwgNjksIDc4LCA0NSwgMjA3LCA3OSwgODAsIDY5LCA3OCwgNDUsIDcyLCA2OSwgNjUsIAorICAgIDY4LCA2OSwgMTk2LCA3OSwgODAsIDY5LCA3OCwgNDUsIDY3LCA3MywgODIsIDY3LCA4NSwgNzMsIDg0LCA0NSwgNzksIDg1LCAKKyAgICA4NCwgODAsIDg1LCAyMTIsIDc5LCA4MCwgNjksIDc4LCAxMjgsIDc5LCA3OSwgOTAsIDY5LCAxMjgsIDc5LCA3OSwgODksIAorICAgIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc5LCA3OSwgODUsIDEyOCwgNzksIDc5LCA3NywgODUsIDEyOCwgNzksIDc5LCA3MiwgCisgICAgMTI4LCA3OSwgNzksIDY5LCAxMjgsIDc5LCA3OSwgNjYsIDc5LCA3OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNzksIDc4LCAKKyAgICA4NSwgMTI4LCA3OSwgNzgsIDgzLCA4NSwgMTI4LCA3OSwgNzgsIDc4LCAxMjgsIDc5LCA3OCwgNzUsIDY1LCA4MiwgMTI4LCAKKyAgICA3OSwgNzgsIDY5LCA4MywgNjksIDc2LCA3MCwgMTI4LCA3OSwgNzgsIDY5LCA0NSwgODcsIDY1LCAyMTcsIDc5LCA3OCwgNjksIAorICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc5LCA3OCwgNjksIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDc5LCA3OCwgCisgICAgNjksIDQ1LCA3MiwgODUsIDc4LCA2OCwgODIsIDY5LCA2OCwgNDUsIDY1LCA3OCwgNjgsIDQ1LCA4MywgNzMsIDg4LCA4NCwgCisgICAgNzMsIDY5LCA4NCwgNzIsIDEyOCwgNzksIDc4LCA2NywgNzksIDc3LCA3MywgNzgsIDE5OSwgNzksIDc4LCA2NSwgODAsIAorICAgIDEyOCwgNzksIDc4LCA0NSwgNzksIDcwLCAxOTgsIDc5LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDc5LCA3NywgCisgICAgNzMsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDc5LCA3NywgNzMsIDY3LCA4MiwgNzksIDIwNiwgNzksIDc3LCA2OSwgNzEsIDY1LCAKKyAgICAxMjgsIDc5LCA3NywgNjksIDcxLCAxOTMsIDc5LCA3NywgNjUsIDc2LCA3OSwgNzgsIDEyOCwgNzksIDc2LCA3MywgODYsIAorICAgIDY5LCAxMjgsIDc5LCA3NiwgNzMsIDcxLCA3OSwgMjA2LCA3OSwgNzYsIDY4LCAxMjgsIDc5LCA3NSwgODQsIDIwNywgNzksIAorICAgIDc1LCA2NSwgODIsIDY1LCAxMjgsIDc5LCA3NSwgNjUsIDgyLCAxOTMsIDc5LCA3NCwgNzMsIDY2LCA4NywgNjUsIDIxNywgCisgICAgNzksIDc0LCA2OSwgNzksIDc4LCAxMjgsIDc5LCA3MywgNzgsIDEyOCwgNzksIDczLCA3NiwgMTI4LCA3OSwgNzMsIDIwNCwgCisgICAgNzksIDcyLCA3NywgMTI4LCA3OSwgNzIsIDIwNSwgNzksIDcxLCA4MiwgNjksIDEyOCwgNzksIDcxLCA3OSwgNzgsIDY5LCAKKyAgICA3NSwgMTI4LCA3OSwgNzEsIDc5LCA3OCwgNjksIDIwMywgNzksIDcxLCA3MiwgNjUsIDIwNSwgNzksIDcwLCA3MCwgNzMsIAorICAgIDY3LCA2OSwgODIsIDEyOCwgNzksIDcwLCA3MCwgNzMsIDY3LCA2OSwgMTI4LCA3OSwgNzAsIDcwLCA3MywgNjcsIDE5NywgCisgICAgNzksIDcwLCA3MCwgMTI4LCA3OSwgNjksIDg5LCAxMjgsIDc5LCA2OSwgNzUsIDEyOCwgNzksIDY5LCA2OSwgMTI4LCA3OSwgCisgICAgNjgsIDY5LCA3OCwgMTI4LCA3OSwgNjgsIDY4LCAxMjgsIDc5LCA2OCwgMTk2LCA3OSwgNjcsIDg0LCA3OSwgODAsIDg1LCAKKyAgICA4MywgMTI4LCA3OSwgNjcsIDg0LCA3OSwgNjYsIDY5LCA4MiwgMTI4LCA3OSwgNjcsIDg0LCA2OSwgMjEyLCA3OSwgNjcsIAorICAgIDg0LCA2NSwgNzEsIDc5LCA3OCwgNjUsIDIwNCwgNzksIDY3LCA4NCwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNzksIDY3LCAKKyAgICAyMTAsIDc5LCA2NywgNzYsIDc5LCA2NywgNzUsIDEyOCwgNzksIDY3LCA2NywgNzYsIDg1LCA4MywgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA3OSwgNjYsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNzksIDY2LCA3OSwgNzYsIAorICAgIDIxMSwgNzksIDY2LCA3OSwgMjA0LCA3OSwgNjYsIDc5LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA3OSwgNjYsIDc2LCA3MywgCisgICAgODEsIDg1LCAxOTcsIDc5LCA2NiwgNzQsIDY5LCA2NywgMjEyLCA3OSwgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc5LCAKKyAgICA2NiwgNjksIDc2LCA3OSwgODMsIDEyOCwgNzksIDY2LCAxMjgsIDc5LCA2NSwgODksIDEyOCwgNzksIDY1LCA3NSwgMTI4LCAKKyAgICA3OSwgNjUsIDY2LCA3OSwgNjUsIDcwLCA3MywgNzYsIDczLCAxMjgsIDc5LCAxOTMsIDc5LCA0OCwgNTMsIDQ5LCAxMjgsIAorICAgIDc5LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA3OSwgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MywgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MiwgNTcsIDEyOCwgNzksIDQ4LCA1MiwgNTYsIDEyOCwgNzksIDQ4LCA1MiwgNTUsIDEyOCwgNzksIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNzksIDQ4LCA1MiwgNTMsIDEyOCwgNzksIDQ4LCA1MiwgNTIsIDEyOCwgNzksIDQ4LCA1MiwgNTEsIAorICAgIDEyOCwgNzksIDQ4LCA1MiwgNTAsIDEyOCwgNzksIDQ4LCA1MiwgNDksIDEyOCwgNzksIDQ4LCA1MiwgNDgsIDEyOCwgNzksIAorICAgIDQ4LCA1MSwgNTcsIDEyOCwgNzksIDQ4LCA1MSwgNTYsIDEyOCwgNzksIDQ4LCA1MSwgNTUsIDEyOCwgNzksIDQ4LCA1MSwgCisgICAgNTQsIDY4LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCA2NywgMTI4LCA3OSwgNDgsIDUxLCA1NCwgNjYsIDEyOCwgNzksIDQ4LCAKKyAgICA1MSwgNTQsIDY1LCAxMjgsIDc5LCA0OCwgNTEsIDU0LCAxMjgsIDc5LCA0OCwgNTEsIDUzLCAxMjgsIDc5LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDc5LCA0OCwgNTEsIDUxLCA2NSwgMTI4LCA3OSwgNDgsIDUxLCA1MSwgMTI4LCA3OSwgNDgsIDUxLCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDUxLCA0OSwgMTI4LCA3OSwgNDgsIDUxLCA0OCwgNjUsIDEyOCwgNzksIDQ4LCA1MSwgNDgsIDEyOCwgCisgICAgNzksIDQ4LCA1MCwgNTcsIDY1LCAxMjgsIDc5LCA0OCwgNTAsIDU3LCAxMjgsIDc5LCA0OCwgNTAsIDU2LCAxMjgsIDc5LCAKKyAgICA0OCwgNTAsIDU1LCAxMjgsIDc5LCA0OCwgNTAsIDU0LCAxMjgsIDc5LCA0OCwgNTAsIDUzLCA2NSwgMTI4LCA3OSwgNDgsIAorICAgIDUwLCA1MywgMTI4LCA3OSwgNDgsIDUwLCA1MiwgNjUsIDEyOCwgNzksIDQ4LCA1MCwgNTIsIDEyOCwgNzksIDQ4LCA1MCwgCisgICAgNTEsIDEyOCwgNzksIDQ4LCA1MCwgNTAsIDEyOCwgNzksIDQ4LCA1MCwgNDksIDEyOCwgNzksIDQ4LCA1MCwgNDgsIDY1LCAKKyAgICAxMjgsIDc5LCA0OCwgNTAsIDQ4LCAxMjgsIDc5LCA0OCwgNDksIDU3LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ5LCA1NiwgMTI4LCA3OSwgNDgsIDQ5LCA1NSwgMTI4LCA3OSwgNDgsIDQ5LCA1NCwgMTI4LCA3OSwgNDgsIAorICAgIDQ5LCA1MywgMTI4LCA3OSwgNDgsIDQ5LCA1MiwgMTI4LCA3OSwgNDgsIDQ5LCA1MSwgMTI4LCA3OSwgNDgsIDQ5LCA1MCwgCisgICAgMTI4LCA3OSwgNDgsIDQ5LCA0OSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgNjcsIDEyOCwgNzksIDQ4LCA0OSwgNDgsIDY2LCAKKyAgICAxMjgsIDc5LCA0OCwgNDksIDQ4LCA2NSwgMTI4LCA3OSwgNDgsIDQ5LCA0OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NywgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1NiwgMTI4LCA3OSwgNDgsIDQ4LCA1NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNzAsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTQsIDY5LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2OCwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgNjcsIDEyOCwgCisgICAgNzksIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDc5LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3OSwgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3OSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzksIDQ4LCA0OCwgNTMsIDEyOCwgNzksIDQ4LCA0OCwgNTIsIDEyOCwgNzksIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzksIDQ4LCA0OCwgNTAsIDEyOCwgNzksIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc5LCA0OCwgCisgICAgNDgsIDQ5LCAxMjgsIDc5LCA0NSwgODksIDY5LCAxMjgsIDc5LCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3OSwgNDUsIDY5LCAKKyAgICAxMjgsIDc4LCA5MCwgODksIDg4LCAxMjgsIDc4LCA5MCwgODksIDg0LCAxMjgsIDc4LCA5MCwgODksIDgyLCA4OCwgMTI4LCAKKyAgICA3OCwgOTAsIDg5LCA4MiwgMTI4LCA3OCwgOTAsIDg5LCA4MCwgMTI4LCA3OCwgOTAsIDg5LCAxMjgsIDc4LCA5MCwgODUsIAorICAgIDg4LCAxMjgsIDc4LCA5MCwgODUsIDgyLCA4OCwgMTI4LCA3OCwgOTAsIDg1LCA4MiwgMTI4LCA3OCwgOTAsIDg1LCA4MSwgCisgICAgMTI4LCA3OCwgOTAsIDg1LCA4MCwgMTI4LCA3OCwgOTAsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDkwLCA4NSwgNzksIDEyOCwgCisgICAgNzgsIDkwLCA4NSwgMjA2LCA3OCwgOTAsIDg1LCAxMjgsIDc4LCA5MCwgNzksIDg4LCAxMjgsIDc4LCA5MCwgNzksIDgwLCAKKyAgICAxMjgsIDc4LCA5MCwgNzMsIDg4LCAxMjgsIDc4LCA5MCwgNzMsIDg0LCAxMjgsIDc4LCA5MCwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA5MCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDczLCA2OSwgODAsIDEyOCwgNzgsIDkwLCA3MywgNjksIDEyOCwgNzgsIAorICAgIDkwLCA3MywgMTI4LCA3OCwgOTAsIDY5LCA4OCwgMTI4LCA3OCwgOTAsIDY5LCA4NSwgNzcsIDEyOCwgNzgsIDkwLCA2OSwgCisgICAgMTI4LCA3OCwgOTAsIDY1LCA4OCwgMTI4LCA3OCwgOTAsIDY1LCA4NCwgMTI4LCA3OCwgOTAsIDY1LCA4MSwgMTI4LCA3OCwgCisgICAgOTAsIDY1LCA4MCwgMTI4LCA3OCwgOTAsIDY1LCAxMjgsIDc4LCA5MCwgMTkzLCA3OCwgODksIDg3LCA2NSwgMTI4LCA3OCwgCisgICAgODksIDg1LCA4OCwgMTI4LCA3OCwgODksIDg1LCA4NSwgMTI4LCA3OCwgODksIDg1LCA4NCwgMTI4LCA3OCwgODksIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgODksIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA4NSwgNzksIDgwLCAxMjgsIDc4LCA4OSwgODUsIAorICAgIDc5LCAxMjgsIDc4LCA4OSwgODUsIDc4LCAxMjgsIDc4LCA4OSwgODUsIDY5LCAxMjgsIDc4LCA4OSwgODUsIDEyOCwgNzgsIAorICAgIDg5LCA3OSwgODgsIDEyOCwgNzgsIDg5LCA3OSwgODQsIDEyOCwgNzgsIDg5LCA3OSwgODAsIDEyOCwgNzgsIDg5LCA3OSwgCisgICAgNzksIDEyOCwgNzgsIDg5LCA3OSwgNzgsIDEyOCwgNzgsIDg5LCA3OSwgNjUsIDEyOCwgNzgsIDg5LCA3OSwgMTI4LCA3OCwgCisgICAgODksIDc0LCA2NSwgMTI4LCA3OCwgODksIDczLCA4OCwgMTI4LCA3OCwgODksIDczLCA4NCwgMTI4LCA3OCwgODksIDczLCAKKyAgICAyMTIsIDc4LCA4OSwgNzMsIDIxMSwgNzgsIDg5LCA3MywgMjEwLCA3OCwgODksIDczLCA4MCwgMTI4LCA3OCwgODksIDczLCAKKyAgICA3OCwgNDUsIDY4LCA3OSwgMTI4LCA3OCwgODksIDczLCA3OCwgMTI4LCA3OCwgODksIDczLCA3MywgMTI4LCA3OCwgODksIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzgsIDg5LCA3MywgNjksIDg0LCAxMjgsIDc4LCA4OSwgNzMsIDY5LCA4MCwgMTI4LCA3OCwgCisgICAgODksIDczLCA2OSwgMTI4LCA3OCwgODksIDczLCAxMjgsIDc4LCA4OSwgMjAxLCA3OCwgODksIDcyLCA2NSwgMTI4LCA3OCwgCisgICAgODksIDY5LCA4NCwgMTI4LCA3OCwgODksIDY5LCAyMTIsIDc4LCA4OSwgNjksIDc4LCAxMjgsIDc4LCA4OSwgNjksIDcyLCAKKyAgICAxMjgsIDc4LCA4OSwgNjksIDIwMCwgNzgsIDg5LCA2OSwgNjksIDEyOCwgNzgsIDg5LCA2OSwgMTI4LCA3OCwgODksIDE5NiwgCisgICAgNzgsIDg5LCA2NywgNjUsIDEyOCwgNzgsIDg5LCA2NSwgODUsIDEyOCwgNzgsIDg5LCA2NSwgNzMsIDEyOCwgNzgsIDg5LCAKKyAgICA2NSwgNzIsIDEyOCwgNzgsIDg5LCA2NSwgNjksIDc3LCA2NSwgNjksIDEyOCwgNzgsIDg5LCA2NSwgNjUsIDEyOCwgNzgsIAorICAgIDg3LCA3OSwgNzksIDEyOCwgNzgsIDg3LCA3OSwgMTI4LCA3OCwgODcsIDczLCA3MywgMTI4LCA3OCwgODcsIDczLCAxMjgsIAorICAgIDc4LCA4NywgNjksIDEyOCwgNzgsIDg3LCA2NSwgNjUsIDEyOCwgNzgsIDg3LCA2NSwgMTI4LCA3OCwgODcsIDEyOCwgNzgsIAorICAgIDg2LCAxMjgsIDc4LCA4NSwgODgsIDEyOCwgNzgsIDg1LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgODUsIAorICAgIDg0LCA3MywgNzYsIDc2LCA4NSwgMTI4LCA3OCwgODUsIDg0LCAxMjgsIDc4LCA4NSwgMjEyLCA3OCwgODUsIDgyLCA4OCwgCisgICAgMTI4LCA3OCwgODUsIDgyLCAxMjgsIDc4LCA4NSwgODAsIDEyOCwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDg1LCA3OSwgCisgICAgODAsIDEyOCwgNzgsIDg1LCA3OSwgMTI4LCA3OCwgODUsIDc4LCA4NSwgOTAsIDEyOCwgNzgsIDg1LCA3OCwgODUsIDIxOCwgCisgICAgNzgsIDg1LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA3OCwgNjUsIDg2LCA4NSwgMjEyLCA3OCwgODUsIDc4LCA2NSwgODYsIDczLCAKKyAgICAyMDMsIDc4LCA4NSwgNzgsIDEyOCwgNzgsIDg1LCAyMDYsIDc4LCA4NSwgNzcsIDY5LCA4MiwgMjA3LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzksIDIxMCwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgMjA0LCA3OCwgODUsIDc3LCA2NiwgNjksIAorICAgIDgyLCA4MywgMTI4LCA3OCwgODUsIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA4NSwgNzcsIDEyOCwgNzgsIDg1LCA3NiwgCisgICAgNzYsIDEyOCwgNzgsIDg1LCA3NiwgMjA0LCA3OCwgODUsIDc2LCAxMjgsIDc4LCA4NSwgNzUsIDg0LCA2NSwgMTI4LCA3OCwgCisgICAgODUsIDY5LCA3OCwgNzEsIDEyOCwgNzgsIDg1LCA2OSwgMTI4LCA3OCwgODUsIDY2LCA3MywgNjUsIDIwNiwgNzgsIDg1LCAKKyAgICA2NSwgNjksIDEyOCwgNzgsIDg1LCA0OSwgNDksIDEyOCwgNzgsIDg1LCA0OSwgMTc3LCA3OCwgODUsIDQ4LCA1MCwgNTAsIAorICAgIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDUwLCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDg1LCA0OCwgCisgICAgNTAsIDQ4LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1NywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTYsIDY1LCAxMjgsIDc4LCAKKyAgICA4NSwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTUsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDc4LCA4NSwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNTIsIDEyOCwgNzgsIDg1LCA0OCwgNDksIDUxLCAKKyAgICAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDksIDY1LCAxMjgsIDc4LCA4NSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA3OCwgODUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDc4LCA4NSwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgCisgICAgODUsIDQ4LCA0OCwgNTcsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDU2LCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1NSwgMTI4LCAKKyAgICA3OCwgODUsIDQ4LCA0OCwgNTQsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgODUsIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDg1LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA4NSwgNDgsIDQ4LCAKKyAgICA0OSwgMTI4LCA3OCwgODQsIDg4LCA3MywgODYsIDEyOCwgNzgsIDg0LCA4NSwgODUsIDEyOCwgNzgsIDg0LCA4NSwgNzcsIAorICAgIDEyOCwgNzgsIDg0LCA4NSwgNzQsIDEyOCwgNzgsIDg0LCAyMTMsIDc4LCA4NCwgODMsIDY1LCA4NSwgMTI4LCA3OCwgODQsIAorICAgIDc5LCA4MSwgODAsIDY5LCA3OCwgMTI4LCA3OCwgODQsIDc5LCA3MSwgMTI4LCA3OCwgODQsIDc5LCAxOTksIDc4LCA4NCwgCisgICAgNzMsIDY5LCAxOTcsIDc4LCA4NCwgNzIsIDY1LCA4NSwgMTI4LCA3OCwgODQsIDY5LCA4NSwgNzgsIDcxLCA2NiwgNjUsIAorICAgIDEyOCwgNzgsIDg0LCA2OSwgODUsIDc3LCAxMjgsIDc4LCA4NCwgNjksIDc4LCAxMjgsIDc4LCA4NCwgNjksIDY5LCAxMjgsIAorICAgIDc4LCA4NCwgNjUsIDgwLCAxMjgsIDc4LCA4NCwgNjUsIDIwOCwgNzgsIDg0LCA2NSwgNjUsIDEyOCwgNzgsIDgzLCA4NSwgCisgICAgNzksIDIxMiwgNzgsIDgzLCA4NSwgNzgsIDEyOCwgNzgsIDgzLCA4NSwgNzcsIDEyOCwgNzgsIDgzLCA3OSwgNzcsIDEyOCwgCisgICAgNzgsIDgzLCA3MywgNjksIDY5LCA4NCwgMTI4LCA3OCwgODMsIDczLCA2OSwgNjksIDgwLCAxMjgsIDc4LCA4MywgNzMsIDY5LCAKKyAgICA2OSwgMTI4LCA3OCwgODMsIDcyLCA4NSwgODQsIDEyOCwgNzgsIDgzLCA3MiwgODUsIDIxMiwgNzgsIDgzLCA3MiwgODUsIAorICAgIDc5LCA4MCwgMTI4LCA3OCwgODMsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgODMsIDcyLCA2OSwgNjksIDEyOCwgNzgsIDgzLCA3MiwgNjUsIDgxLCAxMjgsIDc4LCA4MywgNzIsIDY1LCAxMjgsIDc4LCAKKyAgICA4MywgNjksIDg1LCA2NSwgNjksIDc4LCAxMjgsIDc4LCA4MywgNjksIDc4LCAxMjgsIDc4LCA4MywgNjUsIDEyOCwgNzgsIAorICAgIDgyLCA4OSwgODgsIDEyOCwgNzgsIDgyLCA4OSwgODQsIDEyOCwgNzgsIDgyLCA4OSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgCisgICAgODksIDgyLCAxMjgsIDc4LCA4MiwgODksIDgwLCAxMjgsIDc4LCA4MiwgODksIDEyOCwgNzgsIDgyLCA4NSwgODgsIDEyOCwgCisgICAgNzgsIDgyLCA4NSwgODQsIDEyOCwgNzgsIDgyLCA4NSwgODIsIDg4LCAxMjgsIDc4LCA4MiwgODUsIDgyLCAxMjgsIDc4LCAKKyAgICA4MiwgODUsIDgwLCAxMjgsIDc4LCA4MiwgODUsIDY1LCAxMjgsIDc4LCA4MiwgODUsIDEyOCwgNzgsIDgyLCA3OSwgODgsIAorICAgIDEyOCwgNzgsIDgyLCA3OSwgODAsIDEyOCwgNzgsIDgyLCA3OSwgMTI4LCA3OCwgODIsIDY5LCA4OCwgMTI4LCA3OCwgODIsIAorICAgIDY5LCA4NCwgMTI4LCA3OCwgODIsIDY5LCAyMTEsIDc4LCA4MiwgNjksIDgwLCAxMjgsIDc4LCA4MiwgNjksIDEyOCwgNzgsIAorICAgIDgyLCA2NSwgODgsIDEyOCwgNzgsIDgyLCA2NSwgODQsIDEyOCwgNzgsIDgyLCA2NSwgODAsIDEyOCwgNzgsIDgyLCA2NSwgCisgICAgMTI4LCA3OCwgODEsIDczLCA3MSwgMTI4LCA3OCwgNzksIDg5LCAxMjgsIDc4LCA3OSwgODgsIDEyOCwgNzgsIDc5LCA4NywgCisgICAgNjcsIDEyOCwgNzgsIDc5LCA4NiwgNjksIDc3LCA2NiwgNjksIDgyLCAxMjgsIDc4LCA3OSwgODQsIDg0LCA3OSwgMTI4LCAKKyAgICA3OCwgNzksIDg0LCA2OSwgODMsIDEyOCwgNzgsIDc5LCA4NCwgNjksIDcyLCA2OSwgNjUsIDY4LCAxMjgsIDc4LCA3OSwgODQsIAorICAgIDY5LCA3MiwgNjksIDY1LCAxOTYsIDc4LCA3OSwgODQsIDY5LCA2NiwgNzksIDc5LCA3NSwgMTI4LCA3OCwgNzksIDg0LCA2OSwgCisgICAgNjYsIDc5LCA3OSwgMjAzLCA3OCwgNzksIDg0LCA2OSwgMTI4LCA3OCwgNzksIDg0LCAxOTcsIDc4LCA3OSwgODQsIDY3LCAKKyAgICA3MiwgNjksIDE5NiwgNzgsIDc5LCA4NCwgNjcsIDcyLCAxMjgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAorICAgIDc4LCA3OSwgODQsIDEyOCwgNzgsIDc5LCAyMTIsIDc4LCA3OSwgODMsIDY5LCAxMjgsIDc4LCA3OSwgODMsIDE5NywgNzgsIAorICAgIDc5LCA4MiwgODQsIDcyLCA4NywgNjksIDgzLCAyMTIsIDc4LCA3OSwgODIsIDg0LCA3MiwgNjksIDgyLCAyMDYsIDc4LCA3OSwgCisgICAgODIsIDg0LCA3MiwgNjksIDY1LCA4MywgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3OCwgNzksIAorICAgIDgyLCA3NywgNjUsIDIwNCwgNzgsIDc5LCA4MiwgNjgsIDczLCAxOTUsIDc4LCA3OSwgMjEwLCA3OCwgNzksIDgwLCAxMjgsIAorICAgIDc4LCA3OSwgNzksIDc4LCA4NSwgMTI4LCA3OCwgNzksIDc5LCAxMjgsIDc4LCA3OSwgNzgsIDcwLCA3OSwgODIsIDc1LCA3MywgCisgICAgNzgsIDcxLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA4MCwgNzksIDg0LCA2NSwgNjYsIDc2LCAxOTcsIDc4LCA3OSwgNzgsIDQ1LCAKKyAgICA3NCwgNzksIDczLCA3OCwgNjksIDgyLCAxMjgsIDc4LCA3OSwgNzgsIDQ1LCA2NiwgODIsIDY5LCA2NSwgNzUsIDczLCA3OCwgCisgICAgMTk5LCA3OCwgNzksIDc4LCAxMjgsIDc4LCA3OSwgNzcsIDczLCA4MywgNzcsIDE5MywgNzgsIDc5LCA3NywgNzMsIDc4LCAKKyAgICA2NSwgMjA0LCA3OCwgNzksIDc1LCA3MiwgODUsIDc1LCAxMjgsIDc4LCA3OSwgNjgsIDY5LCAxMjgsIDc4LCA3OSwgNjUsIAorICAgIDEyOCwgNzgsIDc5LCA0NSwgNjYsIDgyLCA2OSwgNjUsIDIwMywgNzgsIDc4LCA4NSwgODUsIDEyOCwgNzgsIDc4LCA4NSwgCisgICAgMTI4LCA3OCwgNzgsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDc5LCAxMjgsIDc4LCA3OCwgNzgsIDg1LCA4NSwgMTI4LCA3OCwgCisgICAgNzgsIDc4LCA4NSwgMTI4LCA3OCwgNzgsIDc4LCA3OSwgNzksIDEyOCwgNzgsIDc4LCA3OCwgNzksIDEyOCwgNzgsIDc4LCAKKyAgICA3OCwgNzMsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDczLCAxMjgsIDc4LCA3OCwgNzgsIDY5LCA2OSwgMTI4LCA3OCwgNzgsIAorICAgIDc4LCA2OSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgODUsIDEyOCwgNzgsIDc4LCA3OCwgNjUsIDczLCAxMjgsIDc4LCA3OCwgCisgICAgNzgsIDY1LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCA2NSwgMTI4LCA3OCwgNzgsIDc4LCAxMjgsIDc4LCA3OCwgNzIsIDY1LCAKKyAgICAxMjgsIDc4LCA3OCwgNzEsIDc5LCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3OSwgMTI4LCA3OCwgNzgsIDcxLCA3MywgNzMsIAorICAgIDEyOCwgNzgsIDc4LCA3MSwgNzMsIDEyOCwgNzgsIDc4LCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3OCwgNzEsIDY1LCAxMjgsIAorICAgIDc4LCA3OCwgNzEsIDEyOCwgNzgsIDc4LCA2NiwgODMsIDgwLCAxMjgsIDc4LCA3NywgMTI4LCA3OCwgNzYsIDY1LCA4NSwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCAKKyAgICA1NiwgMTI4LCA3OCwgNzYsIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OSwgNTQsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA1MiwgMTI4LCA3OCwgCisgICAgNzYsIDQ4LCA0OSwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDksIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNzYsIDQ4LCA0OSwgNDgsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU3LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1NiwgCisgICAgMTI4LCA3OCwgNzYsIDQ4LCA0OCwgNTUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDU0LCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCAKKyAgICA1MywgNjUsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUzLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA1MiwgMTI4LCA3OCwgNzYsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzgsIDc2LCA0OCwgNDgsIDUwLCAxMjgsIDc4LCA3NiwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNzYsIDEyOCwgNzgsIDc1LCA3OSwgNzcsIDEyOCwgNzgsIDc1LCAyMDcsIDc4LCA3NSwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgCisgICAgNzgsIDc1LCA2NSwgODUsIDEyOCwgNzgsIDc1LCA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzgsIDc0LCA4OSwgODgsIAorICAgIDEyOCwgNzgsIDc0LCA4OSwgODQsIDEyOCwgNzgsIDc0LCA4OSwgODIsIDg4LCAxMjgsIDc4LCA3NCwgODksIDgyLCAxMjgsIAorICAgIDc4LCA3NCwgODksIDgwLCAxMjgsIDc4LCA3NCwgODksIDEyOCwgNzgsIDc0LCA4NSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgCisgICAgODIsIDg4LCAxMjgsIDc4LCA3NCwgODUsIDgyLCAxMjgsIDc4LCA3NCwgODUsIDgxLCA2NSwgMTI4LCA3OCwgNzQsIDg1LCAKKyAgICA4MCwgMTI4LCA3OCwgNzQsIDg1LCA3OSwgODgsIDEyOCwgNzgsIDc0LCA4NSwgNzksIDEyOCwgNzgsIDc0LCA4NSwgNjksIAorICAgIDgxLCAxMjgsIDc4LCA3NCwgODUsIDY1LCA2OSwgMTI4LCA3OCwgNzQsIDg1LCAxMjgsIDc4LCA3NCwgNzksIDg4LCAxMjgsIAorICAgIDc4LCA3NCwgNzksIDg0LCAxMjgsIDc4LCA3NCwgNzksIDgwLCAxMjgsIDc4LCA3NCwgNzksIDc5LCAxMjgsIDc4LCA3NCwgCisgICAgNzksIDEyOCwgNzgsIDc0LCA3MywgODgsIDEyOCwgNzgsIDc0LCA3MywgODQsIDEyOCwgNzgsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzgsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3OCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzgsIDc0LCA3MywgNjksIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDY5LCAxMjgsIDc4LCA3NCwgNzMsIDEyOCwgNzgsIAorICAgIDc0LCAyMDEsIDc4LCA3NCwgNjksIDg1LCA4OCwgMTI4LCA3OCwgNzQsIDY5LCA4NSwgODQsIDEyOCwgNzgsIDc0LCA2OSwgCisgICAgODUsIDY1LCA2OSwgNzgsIDY1LCAxMjgsIDc4LCA3NCwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDc4LCA3NCwgNjksIDY5LCAKKyAgICA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgNjksIDEyOCwgNzgsIDc0LCA2OSwgMTk3LCA3OCwgNzQsIDY5LCAxMjgsIDc4LCAKKyAgICA3NCwgNjUsIDgxLCAxMjgsIDc4LCA3NCwgNjUsIDgwLCAxMjgsIDc4LCA3NCwgNjUsIDY5LCA3NywgNzYsIDczLCAxMjgsIAorICAgIDc4LCA3NCwgNjUsIDY5LCA3NywgMTI4LCA3OCwgNzQsIDY1LCA2NSwgMTI4LCA3OCwgNzMsIDg4LCAxMjgsIDc4LCA3MywgCisgICAgODQsIDgyLCA2OSwgMTI4LCA3OCwgNzMsIDgzLCA2NSwgNzEsIDEyOCwgNzgsIDczLCA4MiwgODUsIDcxLCA4NSwgMTI4LCAKKyAgICA3OCwgNzMsIDgwLCAxMjgsIDc4LCA3MywgNzgsIDg0LCA3MiwgMTI4LCA3OCwgNzMsIDc4LCA2OSwgODQsIDg5LCAxMjgsIAorICAgIDc4LCA3MywgNzgsIDY5LCA4NCwgMjE3LCA3OCwgNzMsIDc4LCA2OSwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzgsIDczLCA3OCwgCisgICAgNjksIDg0LCA2OSwgNjksIDIwNiwgNzgsIDczLCA3OCwgNjksIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDc4LCAKKyAgICA3MywgNzgsIDE5NywgNzgsIDczLCA3OCwgNjgsIDY1LCA1MCwgMTI4LCA3OCwgNzMsIDc4LCA2OCwgNjUsIDE3OCwgNzgsIAorICAgIDczLCA3OCwgNTcsIDEyOCwgNzgsIDczLCA3OCwgMTI4LCA3OCwgNzMsIDc3LCAxMjgsIDc4LCA3MywgMjA1LCA3OCwgNzMsIAorICAgIDc1LCA3OSwgNzYsIDgzLCA2NiwgODUsIDgyLCAxOTksIDc4LCA3MywgNzUsIDcyLCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgCisgICAgNzMsIDc1LCA2NSwgNzIsIDczLCA4NCwgMTI4LCA3OCwgNzMsIDc1LCA2NSwgMTI4LCA3OCwgNzMsIDcyLCA4MywgNzIsIDg2LCAKKyAgICA2NSwgODMsIDY1LCAxMjgsIDc4LCA3MywgNzEsIDczLCA2OCwgNjUsIDc3LCA3MywgNzgsIDEyOCwgNzgsIDczLCA3MSwgNzMsIAorICAgIDY4LCA2NSwgNjksIDgzLCA3MiwgMTI4LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzgsIDczLCA3MSwgNzIsIDIxMiwgCisgICAgNzgsIDczLCA3MSwgNzEsIDY1LCA3MiwgNzMsIDg0LCA2NSwgMTI4LCA3OCwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNzMsIDY5LCAKKyAgICA4NSwgNzgsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDg0LCA3MiwgCisgICAgNzMsIDY5LCA4NSwgODQsIDcyLCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIDc4LCAKKyAgICA3MywgNjksIDg1LCA3OCwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgODAsIDY1LCA3OCwgODMsIDczLCA3OSwgODMsIAorICAgIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDQ1LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDEyOCwgNzgsIDczLCA2OSwgODUsIDc4LCA0NSwgNjcsIDczLCA2OSwgODUsIAorICAgIDY3LCAxMjgsIDc4LCA3MywgNjksIDg1LCA3OCwgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc4LCA3MywgCisgICAgNjksIDg1LCAyMDYsIDc4LCA3MywgNjksIDgwLCAxMjgsIDc4LCA3MywgNjksIDEyOCwgNzgsIDczLCA2NiwgMTI4LCA3OCwgCisgICAgNzMsIDY1LCAxMjgsIDc4LCA3MywgNTAsIDEyOCwgNzgsIDcyLCA4NSwgNjksIDEyOCwgNzgsIDcyLCA3NCwgNjUsIDEyOCwgCisgICAgNzgsIDcyLCAxMjgsIDc4LCA3MSwgODksIDY5LCAxMjgsIDc4LCA3MSwgODYsIDY5LCAxMjgsIDc4LCA3MSwgODUsIDg1LCAKKyAgICAxMjgsIDc4LCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3OCwgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgNzksIAorICAgIDEyOCwgNzgsIDcxLCA4NSwgNjUsIDc4LCAxMjgsIDc4LCA3MSwgODUsIDY1LCA2OSwgODQsIDEyOCwgNzgsIDcxLCA4NSwgCisgICAgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzksIDg4LCAxMjgsIDc4LCA3MSwgNzksIDg1LCAxMjgsIDc4LCA3MSwgNzksIDIxMywgCisgICAgNzgsIDcxLCA3OSwgODQsIDEyOCwgNzgsIDcxLCA3OSwgODEsIDEyOCwgNzgsIDcxLCA3OSwgODAsIDEyOCwgNzgsIDcxLCAKKyAgICA3OSwgNzgsIDEyOCwgNzgsIDcxLCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3OSwgNjksIDcyLCAxMjgsIDc4LCA3MSwgNzksIAorICAgIDY5LCAyMDAsIDc4LCA3MSwgMjA3LCA3OCwgNzEsIDc1LCA4OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzUsIDg3LCA2NSwgCisgICAgNjksIDc4LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA4NSwgNzgsIDEyOCwgNzgsIDcxLCAKKyAgICA3NSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIDg1LCA2OSwgNzgsIDkwLCA2OSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzUsIAorICAgIDg1LCAxOTcsIDc4LCA3MSwgNzUsIDczLCA3OCwgNjgsIDIwMSwgNzgsIDcxLCA3NSwgNzMsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA3MSwgNzUsIDY5LCA4NSwgODIsIDczLCAxMjgsIDc4LCA3MSwgNzUsIDY5LCAKKyAgICA4NSwgNjUsIDY5LCA4MSwgMTI4LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzgsIDcxLCA3NSwgNjUsIAorICAgIDgxLCAxMjgsIDc4LCA3MSwgNzUsIDY1LCA4MCwgMTI4LCA3OCwgNzEsIDc1LCA2NSwgNjUsIDc3LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDc1LCA2NSwgMTI4LCA3OCwgNzEsIDczLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA3MywgNjksIDgwLCAxMjgsIDc4LCAKKyAgICA3MSwgNzMsIDY5LCAxMjgsIDc4LCA3MSwgNzIsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIDg3LCA2NSwgNjksIDc4LCAxMjgsIAorICAgIDc4LCA3MSwgNzEsIDg1LCA4MiwgNjUsIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA4MCwgMTI4LCA3OCwgNzEsIDcxLCA4NSwgCisgICAgNzksIDgxLCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA3OSwgMjA5LCA3OCwgNzEsIDcxLCA4NSwgNzksIDc4LCAxMjgsIDc4LCAKKyAgICA3MSwgNzEsIDg1LCA3OSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDc3LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDg1LCA2NSwgNjksIDgzLCA3MiwgNjUsIDE5NywgNzgsIDcxLCA3MSwgODUsIDY1LCA2OSwgCisgICAgMjA2LCA3OCwgNzEsIDcxLCA4NSwgNjUsIDEyOCwgNzgsIDcxLCA3MSwgODUsIDEyOCwgNzgsIDcxLCA3MSwgNzksIDc5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDc5LCAxMjgsIDc4LCA3MSwgNzEsIDczLCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgODgsIAorICAgIDEyOCwgNzgsIDcxLCA3MSwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY5LCAyMTMsIDc4LCA3MSwgNzEsIDY5LCA3OCwgMTI4LCA3OCwgNzEsIDcxLCA2OSwgNjksIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNzEsIDY5LCA2OSwgMTI4LCA3OCwgCisgICAgNzEsIDcxLCA2OSwgMTI4LCA3OCwgNzEsIDcxLCA2NSwgODAsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCA3NywgNjUsIDY5LCAKKyAgICAxMjgsIDc4LCA3MSwgNzEsIDY1LCA2NSwgNzcsIDEyOCwgNzgsIDcxLCA3MSwgNjUsIDY1LCAxMjgsIDc4LCA3MSwgNzEsIAorICAgIDEyOCwgNzgsIDcxLCA2OSwgODgsIDEyOCwgNzgsIDcxLCA2OSwgODUsIDgyLCA2OSwgODUsIDg0LCAxMjgsIDc4LCA3MSwgCisgICAgNjksIDgwLCAxMjgsIDc4LCA3MSwgNjksIDc4LCAxMjgsIDc4LCA3MSwgNjksIDY5LCAxMjgsIDc4LCA3MSwgNjksIDY1LCAKKyAgICA2OCwgNjUsIDc2LCAxMjgsIDc4LCA3MSwgNjUsIDg4LCAxMjgsIDc4LCA3MSwgNjUsIDg1LCAxMjgsIDc4LCA3MSwgNjUsIAorICAgIDg0LCAxMjgsIDc4LCA3MSwgNjUsIDIxMSwgNzgsIDcxLCA2NSwgODEsIDEyOCwgNzgsIDcxLCA2NSwgODAsIDEyOCwgNzgsIAorICAgIDcxLCA2NSwgNzgsIDcxLCA4NSwgMTI4LCA3OCwgNzEsIDY1LCA3OCwgMTI4LCA3OCwgNzEsIDY1LCA3MywgMTI4LCA3OCwgCisgICAgNzEsIDY1LCA3MiwgMTI4LCA3OCwgNzEsIDY1LCA2NSwgNzMsIDEyOCwgNzgsIDcxLCAxOTMsIDc4LCA3MCwgMTI4LCA3OCwgCisgICAgNjksIDg4LCAyMTIsIDc4LCA2OSwgODgsIDEyOCwgNzgsIDY5LCA4NywgODMsIDgwLCA2NSwgODAsIDY5LCA4MiwgMTI4LCAKKyAgICA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA3OCwgNjksIDg3LCA3NiwgNzMsIDc4LCAxOTcsIDc4LCA2OSwgODcsIAorICAgIDEyOCwgNzgsIDY5LCAyMTUsIDc4LCA2OSwgODUsIDg0LCA4MiwgNjUsIDc2LCAxMjgsIDc4LCA2OSwgODUsIDg0LCA4MiwgCisgICAgNjUsIDIwNCwgNzgsIDY5LCA4NSwgODQsIDY5LCA4MiwgMTI4LCA3OCwgNjksIDg0LCA4NywgNzksIDgyLCA3NSwgNjksIAorICAgIDE5NiwgNzgsIDY5LCA4NCwgMTI4LCA3OCwgNjksIDIxMiwgNzgsIDY5LCA4MywgODQsIDY5LCAxOTYsIDc4LCA2OSwgODIsIAorICAgIDE5NiwgNzgsIDY5LCA4MSwgODUsIDY4LCA2NSwgNjUsIDEyOCwgNzgsIDY5LCA4MCwgODQsIDg1LCA3OCwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA4MCwgMTI4LCA3OCwgNjksIDc5LCAxMjgsIDc4LCA2OSwgMjA3LCA3OCwgNjksIDc4LCA3OSwgNjksIDEyOCwgCisgICAgNzgsIDY5LCA3OCwgNjUsIDc4LCA3OSwgMTI4LCA3OCwgNjksIDc4LCAxMjgsIDc4LCA2OSwgNzYsIDEyOCwgNzgsIDY5LCAKKyAgICA3MywgODQsIDcyLCA2OSwgMjEwLCA3OCwgNjksIDcxLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3OCwgNjksIDcxLCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDc4LCA2OSwgNjcsIDc1LCA4NCwgNzMsIDY5LCAxMjgsIDc4LCA2OSwgNjcsIDc1LCAxMjgsIDc4LCA2OSwgCisgICAgNjYsIDY5LCA3OCwgODMsIDg0LCA3MywgNzcsIDc3LCA2OSwgMTI4LCA3OCwgNjgsIDg1LCA4OCwgMTI4LCA3OCwgNjgsIDg1LCAKKyAgICA4NCwgMTI4LCA3OCwgNjgsIDg1LCA4MiwgODgsIDEyOCwgNzgsIDY4LCA4NSwgODIsIDEyOCwgNzgsIDY4LCA4NSwgODAsIAorICAgIDEyOCwgNzgsIDY4LCA4NSwgNzgsIDEyOCwgNzgsIDY4LCAyMTMsIDc4LCA2OCwgNzksIDg4LCAxMjgsIDc4LCA2OCwgNzksIAorICAgIDg0LCAxMjgsIDc4LCA2OCwgNzksIDgwLCAxMjgsIDc4LCA2OCwgNzksIDc5LCAxMjgsIDc4LCA2OCwgNzksIDc4LCAxMjgsIAorICAgIDc4LCA2OCwgNzksIDc3LCA2NiwgODUsIDEyOCwgNzgsIDY4LCA3OSwgNzYsIDE5NywgNzgsIDY4LCA3MywgODgsIDEyOCwgCisgICAgNzgsIDY4LCA3MywgODQsIDEyOCwgNzgsIDY4LCA3MywgODEsIDEyOCwgNzgsIDY4LCA3MywgODAsIDEyOCwgNzgsIDY4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDc4LCA2OCwgNzMsIDY5LCAxMjgsIDc4LCA2OCwgNzMsIDY4LCA2NSwgMTI4LCA3OCwgNjgsIAorICAgIDczLCA2NSwgODEsIDEyOCwgNzgsIDY4LCA2OSwgODgsIDEyOCwgNzgsIDY4LCA2OSwgODUsIDg4LCAxMjgsIDc4LCA2OCwgCisgICAgNjksIDg1LCA4NCwgMTI4LCA3OCwgNjgsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDgwLCAKKyAgICAxMjgsIDc4LCA2OCwgNjksIDY5LCAxMjgsIDc4LCA2OCwgNjksIDEyOCwgNzgsIDY4LCA2NSwgODgsIDEyOCwgNzgsIDY4LCAKKyAgICA2NSwgODQsIDEyOCwgNzgsIDY4LCA2NSwgODAsIDEyOCwgNzgsIDY4LCA2NSwgNzcsIDEyOCwgNzgsIDY4LCA2NSwgNjUsIAorICAgIDc4LCA3MSwgNzEsIDY5LCA4NSwgNjUsIDY5LCA4NCwgMTI4LCA3OCwgNjgsIDY1LCA2NSwgMTI4LCA3OCwgNjgsIDY1LCAKKyAgICAxOTMsIDc4LCA2NywgNzIsIDY1LCA4NSwgMTI4LCA3OCwgNjYsIDg5LCA4OCwgMTI4LCA3OCwgNjYsIDg5LCA4NCwgMTI4LCAKKyAgICA3OCwgNjYsIDg5LCA4MiwgODgsIDEyOCwgNzgsIDY2LCA4OSwgODIsIDEyOCwgNzgsIDY2LCA4OSwgODAsIDEyOCwgNzgsIAorICAgIDY2LCA4OSwgMTI4LCA3OCwgNjYsIDg1LCA4OCwgMTI4LCA3OCwgNjYsIDg1LCA4NCwgMTI4LCA3OCwgNjYsIDg1LCA4MiwgCisgICAgODgsIDEyOCwgNzgsIDY2LCA4NSwgODIsIDEyOCwgNzgsIDY2LCA4NSwgODAsIDEyOCwgNzgsIDY2LCA4NSwgMTI4LCA3OCwgCisgICAgNjYsIDc5LCA4OCwgMTI4LCA3OCwgNjYsIDc5LCA4NCwgMTI4LCA3OCwgNjYsIDc5LCA4MCwgMTI4LCA3OCwgNjYsIDc5LCAKKyAgICAxMjgsIDc4LCA2NiwgNzMsIDg4LCAxMjgsIDc4LCA2NiwgNzMsIDg0LCAxMjgsIDc4LCA2NiwgNzMsIDgwLCAxMjgsIDc4LCAKKyAgICA2NiwgNzMsIDY5LCA4OCwgMTI4LCA3OCwgNjYsIDczLCA2OSwgODAsIDEyOCwgNzgsIDY2LCA3MywgNjksIDEyOCwgNzgsIAorICAgIDY2LCA3MywgMTI4LCA3OCwgNjYsIDcyLCAxMjgsIDc4LCA2NiwgNjUsIDg4LCAxMjgsIDc4LCA2NiwgNjUsIDg0LCAxMjgsIAorICAgIDc4LCA2NiwgNjUsIDgwLCAxMjgsIDc4LCA2NiwgNjUsIDEyOCwgNzgsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgCisgICAgNzgsIDY1LCA4OSwgMTI4LCA3OCwgNjUsIDg4LCA3MywgNjUsIDIwNiwgNzgsIDY1LCA4OCwgMTI4LCA3OCwgNjUsIDg1LCAKKyAgICA4NCwgNzIsIDgzLCAxMjgsIDc4LCA2NSwgODUsIDgzLCA2OSwgNjUsIDg0LCA2OSwgMTk2LCA3OCwgNjUsIDg1LCA2OCwgNzMsIAorICAgIDIxOCwgNzgsIDY1LCA4NCwgODUsIDgyLCA2NSwgMjA0LCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3OCwgCisgICAgNjUsIDgzLCA3NSwgNjUsIDgwLCAyMDEsIDc4LCA2NSwgODMsIDcyLCA3MywgMTI4LCA3OCwgNjUsIDgzLCA2NSwgNzYsIDczLCAKKyAgICA5MCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc4LCA2NSwgODMsIDY1LCA3NiwgNzMsIDkwLCA2NSwgODQsIDczLCA3OSwgCisgICAgMjA2LCA3OCwgNjUsIDgzLCA2NSwgMjA0LCA3OCwgNjUsIDgyLCA4MiwgNzksIDIxNSwgNzgsIDY1LCA4MiwgMTI4LCA3OCwgCisgICAgNjUsIDgxLCAxMjgsIDc4LCA2NSwgNzksIDIxMSwgNzgsIDY1LCA3OCwgODMsIDY1LCA3OCwgNjUsIDgxLCAxMjgsIDc4LCAKKyAgICA2NSwgNzgsIDcxLCA3NywgNzksIDc4LCA4NCwgNzIsIDc5LCAxMjgsIDc4LCA2NSwgNzgsIDY4LCAxMjgsIDc4LCA2NSwgNzgsIAorICAgIDY1LCAxMjgsIDc4LCA2NSwgNzcsIDY5LCAxMjgsIDc4LCA2NSwgNzcsIDE5NywgNzgsIDY1LCA3NywgNTAsIDEyOCwgNzgsIAorICAgIDY1LCA3NywgMTI4LCA3OCwgNjUsIDc1LCAxMjgsIDc4LCA2NSwgNzMsIDgyLCAxOTMsIDc4LCA2NSwgNzMsIDIwNCwgNzgsIAorICAgIDY1LCA3MSwgODIsIDIwMSwgNzgsIDY1LCA3MSwgNjUsIDgyLCAxMjgsIDc4LCA2NSwgNzEsIDY1LCAxMjgsIDc4LCA2NSwgCisgICAgNzEsIDE5MywgNzgsIDY1LCA3MSwgMTI4LCA3OCwgNjUsIDE5OSwgNzgsIDY1LCA2OSwgMTI4LCA3OCwgNjUsIDY2LCA3NiwgCisgICAgNjUsIDEyOCwgNzgsIDY1LCA2NiwgNjUsIDg0LCA2NSwgNjksIDY1LCAyMDYsIDc4LCA2NSwgNjUsIDgzLCA3MywgNzUsIDg5LCAKKyAgICA2NSwgODksIDY1LCAxMjgsIDc4LCA2NSwgNjUsIDc1LCA4MywgNzMsIDc1LCA4OSwgNjUsIDg5LCA2NSwgMTI4LCA3OCwgNjUsIAorICAgIDY1LCA3MywgMTI4LCA3OCwgNjUsIDE5MywgNzgsIDY1LCA1MiwgMTI4LCA3OCwgNjUsIDUwLCAxMjgsIDc4LCA2NSwgNDUsIAorICAgIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDUwLCAxMjgsIDc4LCA0OCwgNTIsIDQ5LCAxMjgsIDc4LCA0OCwgNTIsIDQ4LCAxMjgsIAorICAgIDc4LCA0OCwgNTEsIDU3LCAxMjgsIDc4LCA0OCwgNTEsIDU2LCAxMjgsIDc4LCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3OCwgCisgICAgNDgsIDUxLCA1NSwgMTI4LCA3OCwgNDgsIDUxLCA1NCwgMTI4LCA3OCwgNDgsIDUxLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MSwgNTMsIDEyOCwgNzgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDc4LCA0OCwgNTEsIDUyLCAxMjgsIDc4LCA0OCwgNTEsIAorICAgIDUxLCA2NSwgMTI4LCA3OCwgNDgsIDUxLCA1MSwgMTI4LCA3OCwgNDgsIDUxLCA1MCwgMTI4LCA3OCwgNDgsIDUxLCA0OSwgCisgICAgMTI4LCA3OCwgNDgsIDUxLCA0OCwgMTI4LCA3OCwgNDgsIDUwLCA1NywgMTI4LCA3OCwgNDgsIDUwLCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDUwLCA1NSwgMTI4LCA3OCwgNDgsIDUwLCA1NCwgMTI4LCA3OCwgNDgsIDUwLCA1MywgNjUsIDEyOCwgNzgsIDQ4LCAKKyAgICA1MCwgNTMsIDEyOCwgNzgsIDQ4LCA1MCwgNTIsIDEyOCwgNzgsIDQ4LCA1MCwgNTEsIDEyOCwgNzgsIDQ4LCA1MCwgNTAsIAorICAgIDEyOCwgNzgsIDQ4LCA1MCwgNDksIDEyOCwgNzgsIDQ4LCA1MCwgNDgsIDEyOCwgNzgsIDQ4LCA0OSwgNTcsIDEyOCwgNzgsIAorICAgIDQ4LCA0OSwgNTYsIDY2LCAxMjgsIDc4LCA0OCwgNDksIDU2LCA2NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NiwgMTI4LCA3OCwgCisgICAgNDgsIDQ5LCA1NSwgMTI4LCA3OCwgNDgsIDQ5LCA1NCwgMTI4LCA3OCwgNDgsIDQ5LCA1MywgMTI4LCA3OCwgNDgsIDQ5LCAKKyAgICA1MiwgMTI4LCA3OCwgNDgsIDQ5LCA1MSwgMTI4LCA3OCwgNDgsIDQ5LCA1MCwgMTI4LCA3OCwgNDgsIDQ5LCA0OSwgMTI4LCAKKyAgICA3OCwgNDgsIDQ5LCA0OCwgMTI4LCA3OCwgNDgsIDQ4LCA1NywgMTI4LCA3OCwgNDgsIDQ4LCA1NiwgMTI4LCA3OCwgNDgsIAorICAgIDQ4LCA1NSwgMTI4LCA3OCwgNDgsIDQ4LCA1NCwgMTI4LCA3OCwgNDgsIDQ4LCA1MywgMTI4LCA3OCwgNDgsIDQ4LCA1MiwgCisgICAgMTI4LCA3OCwgNDgsIDQ4LCA1MSwgMTI4LCA3OCwgNDgsIDQ4LCA1MCwgMTI4LCA3OCwgNDgsIDQ4LCA0OSwgMTI4LCA3OCwgCisgICAgNDUsIDY3LCA4MiwgNjksIDE5NywgNzgsIDQ1LCA2NSwgODIsIDIxNywgNzcsIDg5LCA4OCwgMTI4LCA3NywgODksIDg0LCAKKyAgICAxMjgsIDc3LCA4OSwgODMsIDc2LCA3MywgODQsIDY5LCAxMjgsIDc3LCA4OSwgODAsIDEyOCwgNzcsIDg5LCA2NSwgMTI4LCAKKyAgICA3NywgODksIDE5MywgNzcsIDg5LCAxMjgsIDc3LCAyMTcsIDc3LCA4NywgNzksIDc5LCAxMjgsIDc3LCA4NywgNzksIDEyOCwgCisgICAgNzcsIDg3LCA3MywgNzMsIDEyOCwgNzcsIDg3LCA3MywgMTI4LCA3NywgODcsIDY5LCA2OSwgMTI4LCA3NywgODcsIDY5LCAKKyAgICAxMjgsIDc3LCA4NywgNjUsIDY1LCAxMjgsIDc3LCA4NywgNjUsIDEyOCwgNzcsIDg3LCAxMjgsIDc3LCAyMTUsIDc3LCA4NiwgCisgICAgODMsIDEyOCwgNzcsIDg2LCA3OSwgODAsIDEyOCwgNzcsIDg2LCA3MywgMTI4LCA3NywgODYsIDY5LCA4NSwgNjUsIDY5LCAKKyAgICA3OCwgNzEsIDY1LCA3NywgMTI4LCA3NywgODYsIDEyOCwgNzcsIDIxNCwgNzcsIDg1LCA4OCwgMTI4LCA3NywgODUsIDg1LCAKKyAgICA4MywgNzMsIDc1LCA2NSwgODQsIDc5LCA2NSwgNzgsIDEyOCwgNzcsIDg1LCA4NSwgODIsIDY4LCA3MiwgNjUsIDc0LCAxOTMsIAorICAgIDc3LCA4NSwgODUsIDEyOCwgNzcsIDg1LCA4NCwgMTI4LCA3NywgODUsIDgzLCA3MywgNjcsIDEyOCwgNzcsIDg1LCA4MywgCisgICAgNzMsIDE5NSwgNzcsIDg1LCA4MywgNzIsIDgyLCA3OSwgNzksIDc3LCAxMjgsIDc3LCA4NSwgODMsIDcyLCA1MSwgMTI4LCAKKyAgICA3NywgODUsIDgzLCA3MiwgMTc5LCA3NywgODUsIDgzLCA3MiwgMTI4LCA3NywgODUsIDgzLCAyMDAsIDc3LCA4NSwgODMsIAorICAgIDEyOCwgNzcsIDg1LCA4MiwgODgsIDEyOCwgNzcsIDg1LCA4MiwgNzEsIDg1LCA1MCwgMTI4LCA3NywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgODUsIDgyLCA2OCwgNjUsIDEyOCwgNzcsIDg1LCA4MiwgNjgsIDE5MywgNzcsIDg1LCA4MiwgMTI4LCA3NywgCisgICAgODUsIDgxLCA2OCwgNjUsIDc3LCAxMjgsIDc3LCA4NSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgODgsIDEyOCwgNzcsIDg1LCAKKyAgICA3OSwgODQsIDEyOCwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzcsIDg1LCA3OSwgNzcsIDY1LCA2OSwgMTI4LCA3NywgODUsIAorICAgIDc5LCAxMjgsIDc3LCA4NSwgNzgsIDgzLCA4NSwgNjYsIDEyOCwgNzcsIDg1LCA3OCwgNjUsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MywgNjksIDg0LCAxMjgsIDc3LCA4NSwgNzYsIDg0LCA3MywgODMsIDY5LCAKKyAgICAyMTIsIDc3LCA4NSwgNzYsIDg0LCA3MywgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3NywgODUsIAorICAgIDc2LCA4NCwgNzMsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NywgODUsIDc2LCA4NCwgNzMsIDgwLCAKKyAgICA3NiwgNjksIDEyOCwgNzcsIDg1LCA3NiwgODQsIDczLCA4MCwgNzYsIDE5NywgNzcsIDg1LCA3NiwgODQsIDczLCA3OSwgNjcsIAorICAgIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDg1LCA3NiwgODQsIDczLCA3NywgNjUsIDgwLCAxMjgsIDc3LCA4NSwgNzYsIDg0LCAKKyAgICAyMDEsIDc3LCA4NSwgNzYsIDg0LCA2NSwgNzgsIDIwMSwgNzcsIDg1LCA3NSwgODAsIDcyLCA4MiwgNjksIDc4LCA3MSwgCisgICAgMTI4LCA3NywgODUsIDczLCA3OCwgMTI4LCA3NywgODUsIDcxLCA4MywgMTI4LCA3NywgODUsIDcxLCAxMjgsIDc3LCA4NSwgCisgICAgMTk5LCA3NywgODUsIDY5LCA3OCwgMTI4LCA3NywgODUsIDY5LCAxMjgsIDc3LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA4NSwgCisgICAgNjcsIDIwMCwgNzcsIDg1LCA2NywgNjUsIDY1LCA2OCwgMTI4LCA3NywgODUsIDY1LCA4MywgMTI4LCA3NywgODUsIDY1LCAKKyAgICA3OCwgMTI4LCA3NywgODUsIDY1LCA2OSwgMTI4LCA3NywgODUsIDQ1LCA3MSwgNjUsIDY1LCA3MiwgNzYsIDY1LCAxOTMsIAorICAgIDc3LCAyMTMsIDc3LCA4MywgMTI4LCA3NywgODIsIDIwNywgNzcsIDgwLCA2NSwgMTI4LCA3NywgNzksIDg5LCA2NSwgNzMsIAorICAgIDEyOCwgNzcsIDc5LCA4OCwgMTI4LCA3NywgNzksIDg2LCA3MywgMTk3LCA3NywgNzksIDg2LCA2OSwgMjExLCA3NywgNzksIAorICAgIDg2LCA2OSwgNzcsIDY5LCA3OCwgODQsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzcsIDc5LCAKKyAgICA4NiwgNjksIDc3LCA2OSwgNzgsIDg0LCA0NSwgNzIsIDczLCA3OCwgNzEsIDE5NywgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgCisgICAgNzgsIDg0LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NywgNzksIDg2LCA2OSwgNzcsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgMjA0LCA3NywgNzksIDg2LCA2OSwgNzcsIDY5LCAKKyAgICA3OCwgODQsIDEyOCwgNzcsIDc5LCA4NiwgNjksIDc3LCA2OSwgNzgsIDIxMiwgNzcsIDc5LCA4NiwgNjksIDE5NiwgNzcsIAorICAgIDc5LCA4NiwgNjksIDEyOCwgNzcsIDc5LCA4NSwgODQsIDcyLCAxMjgsIDc3LCA3OSwgODUsIDgzLCA2OSwgMTI4LCA3NywgCisgICAgNzksIDg1LCA4MywgMTk3LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDc3LCA3OSwgODUsIDc4LCAKKyAgICA4NCwgNjUsIDczLCA3OCwgMTI4LCA3NywgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgMjA2LCA3NywgNzksIDg1LCA3OCwgCisgICAgMjEyLCA3NywgNzksIDg1LCA3OCwgNjgsIDEyOCwgNzcsIDc5LCA4NSwgNzgsIDE5NiwgNzcsIDc5LCA4NCwgNzksIDgyLCAKKyAgICA4NywgNjUsIDg5LCAxMjgsIDc3LCA3OSwgODQsIDc5LCA4MiwgNjcsIDg5LCA2NywgNzYsIDY5LCAxMjgsIDc3LCA3OSwgODQsIAorICAgIDc5LCAyMTAsIDc3LCA3OSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzcsIDc5LCA4NCwgNzIsIDY5LCAyMTAsIDc3LCA3OSwgCisgICAgODQsIDEyOCwgNzcsIDc5LCA4MywgODEsIDg1LCA2OSwgMTI4LCA3NywgNzksIDgyLCA4NCwgODUsIDg1LCA3NywgMTI4LCAKKyAgICA3NywgNzksIDgyLCA4NCwgNjUsIDgyLCAxMjgsIDc3LCA3OSwgODIsIDgwLCA3MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCisgICAgNjUsIDIwNCwgNzcsIDc5LCA4MiwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzcsIDc5LCA4MCwgMTI4LCA3NywgNzksIDc5LCAKKyAgICA4MywgNjksIDQ1LCA2NywgODIsIDY5LCAxOTcsIDc3LCA3OSwgNzksIDc4LCAxMjgsIDc3LCA3OSwgNzksIDIwNiwgNzcsIAorICAgIDc5LCA3OSwgNzcsIDgwLCA4NSwgODEsIDEyOCwgNzcsIDc5LCA3OSwgNzcsIDY5LCA4NSwgODQsIDEyOCwgNzcsIDc5LCA3OSwgCisgICAgNjgsIDEyOCwgNzcsIDc5LCA3OSwgMTk2LCA3NywgNzksIDc5LCAxMjgsIDc3LCA3OSwgNzgsIDg0LCA3MywgNjksIDY5LCAKKyAgICA3OCwgMTI4LCA3NywgNzksIDc4LCA4NCwgNzIsIDEyOCwgNzcsIDc5LCA3OCwgODQsIDIwMCwgNzcsIDc5LCA3OCwgODMsIAorICAgIDg0LCA2OSwgODIsIDEyOCwgNzcsIDc5LCA3OCwgNzksIDgzLCA4NCwgNjUsIDY2LCA3NiwgMTk3LCA3NywgNzksIDc4LCA3OSwgCisgICAgODMsIDgwLCA2NSwgNjcsIDE5NywgNzcsIDc5LCA3OCwgNzksIDgyLCA2NSwgNzMsIDc2LCAxMjgsIDc3LCA3OSwgNzgsIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgMjAwLCA3NywgNzksIDc4LCA3OSwgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgMjExLCA3NywgNzksIAorICAgIDc4LCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NywgNzksIDc4LCA3OSwgNzAsIDc5LCA3OCwgNzMsIDY1LCA4MywgMTI4LCA3NywgCisgICAgNzksIDc4LCA3OSwgNjcsIDg1LCA3NiwgNjUsIDIxMCwgNzcsIDc5LCA3OCwgNzUsIDY5LCA4OSwgMTI4LCA3NywgNzksIDc4LCAKKyAgICA3NSwgNjksIDIxNywgNzcsIDc5LCA3OCwgNzMsIDEyOCwgNzcsIDc5LCA3OCwgNzEsIDc1LCA2OSwgODUsIDY1LCA2OSwgODEsIAorICAgIDEyOCwgNzcsIDc5LCA3OCwgNjksIDg5LCA0NSwgNzcsIDc5LCA4NSwgODQsIDIwMCwgNzcsIDc5LCA3OCwgNjksIDIxNywgCisgICAgNzcsIDc5LCA3OCwgMTI4LCA3NywgNzksIDIwNiwgNzcsIDc5LCA3NiwgMTI4LCA3NywgNzksIDcyLCA2NSwgNzcsIDc3LCAKKyAgICA2NSwgMTk2LCA3NywgNzksIDY4LCA4NSwgNzYsIDIwNywgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTcsIAorICAgIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTYsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgCisgICAgNjksIDgyLCA0NSwgNTUsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTQsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTMsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgCisgICAgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNTEsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCAKKyAgICA3MywgNjksIDgyLCA0NSwgNTAsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDU0LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MywgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNTIsIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDUxLCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgNDUsIDQ5LCA1MCwgMTI4LCA3NywgNzksIDY4LCA3MywgNzAsIDczLCAKKyAgICA2OSwgODIsIDQ1LCA0OSwgNDksIDEyOCwgNzcsIDc5LCA2OCwgNzMsIDcwLCA3MywgNjksIDgyLCA0NSwgNDksIDQ4LCAxMjgsIAorICAgIDc3LCA3OSwgNjgsIDczLCA3MCwgNzMsIDY5LCA4MiwgMTI4LCA3NywgNzksIDY4LCAyMDEsIDc3LCA3OSwgNjgsIDY5LCA4MywgCisgICAgODQsIDg5LCAxMjgsIDc3LCA3OSwgNjgsIDY5LCA4MiwgMjA2LCA3NywgNzksIDY4LCA2OSwgNzcsIDEyOCwgNzcsIDc5LCAKKyAgICA2OCwgNjksIDc2LCA4MywgMTI4LCA3NywgNzksIDY4LCA2OSwgNzYsIDEyOCwgNzcsIDc5LCA2OCwgNjksIDEyOCwgNzcsIAorICAgIDc5LCA2NiwgNzMsIDc2LCAxOTcsIDc3LCA3OSwgNjUsIDEyOCwgNzcsIDIwNywgNzcsIDc4LCA4OSwgNjUsIDIwNSwgNzcsIAorICAgIDc4LCA2NSwgODMsIDEyOCwgNzcsIDc3LCA4MywgODAsIDEyOCwgNzcsIDc3LCAxMjgsIDc3LCAyMDUsIDc3LCA3NiwgNjUsIAorICAgIDEyOCwgNzcsIDc2LCAxMjgsIDc3LCA3NSwgODAsIDY1LCA4MiwgNjUsIDIwOSwgNzcsIDczLCA4OCwgMTI4LCA3NywgNzMsIAorICAgIDg0LCAxMjgsIDc3LCA3MywgODMsIDgyLCA2NSwgMTI4LCA3NywgNzMsIDgyLCA3MywgNjYsIDY1LCA2NSwgODIsIDg1LCAKKyAgICAxMjgsIDc3LCA3MywgODIsIDczLCAxMjgsIDc3LCA3MywgODIsIDY5LCA2OCwgMTI4LCA3NywgNzMsIDgwLCAxMjgsIDc3LCAKKyAgICA3MywgNzgsIDg5LCAxMjgsIDc3LCA3MywgNzgsIDg1LCA4MywgNDUsIDc5LCA4MiwgNDUsIDgwLCA3NiwgODUsIDIxMSwgNzcsIAorICAgIDczLCA3OCwgODUsIDgzLCAxMjgsIDc3LCA3MywgNzgsIDczLCA4MywgODQsIDY5LCA4MiwgMTI4LCA3NywgNzMsIDc4LCA3MywgCisgICAgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDczLCA3OCwgNzMsIDc3LCA2NSwgMTI4LCA3NywgNzMsIDc4LCA3MywgNjgsIDczLCAKKyAgICA4MywgNjcsIDEyOCwgNzcsIDczLCA3OCwgNzMsIDY2LCA4NSwgODMsIDEyOCwgNzcsIDczLCA3NywgNjksIDEyOCwgNzcsIAorICAgIDczLCA3NywgMTI4LCA3NywgNzMsIDc2LCA3NiwgNzMsIDc5LCA3OCwgODMsIDEyOCwgNzcsIDczLCA3NiwgNzYsIDczLCA3OSwgCisgICAgNzgsIDIxMSwgNzcsIDczLCA3NiwgNzYsIDY5LCA4NCwgMTI4LCA3NywgNzMsIDc2LCA3NiwgMTk3LCA3NywgNzMsIDc2LCAKKyAgICAyMDQsIDc3LCA3MywgNzYsIDc1LCAyMTcsIDc3LCA3MywgNzYsIDc1LCAxMjgsIDc3LCA3MywgNzYsIDczLCA4NCwgNjUsIAorICAgIDgyLCAyMTcsIDc3LCA3MywgNzYsIDEyOCwgNzcsIDczLCA3NSwgODUsIDgyLCA3OSwgNzgsIDEyOCwgNzcsIDczLCA3NSwgCisgICAgODIsIDc5LCAyMDYsIDc3LCA3MywgNzUsIDgyLCA3MywgMTI4LCA3NywgNzMsIDczLCA3OCwgMTI4LCA3NywgNzMsIDczLCAKKyAgICA3NywgMTI4LCA3NywgNzMsIDczLCAxMjgsIDc3LCA3MywgMTk5LCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzMsIDY5LCAKKyAgICA4NSwgNzcsIDQ1LCA4NCwgNzMsIDc1LCA2OSwgODUsIDg0LCAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgzLCA4MywgCisgICAgNjUsIDc4LCA3MSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODMsIDgzLCA2NSwgNzgsIAorICAgIDcxLCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAKKyAgICAxMjgsIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgNDUsIDgzLCA3MywgNzksIDgzLCAxMjgsIAorICAgIDc3LCA3MywgNjksIDg1LCA3NywgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCAKKyAgICA4MCwgNjUsIDc4LCA4MywgNzMsIDc5LCA4MywgMTI4LCA3NywgNzMsIDY5LCA4NSwgNzcsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzcsIDczLCA2OSwgODUsIDc3LCA0NSwgNjcsIDczLCA2OSwgODUsIDY3LCAxMjgsIDc3LCA3MywgNjksIDg1LCAKKyAgICA3NywgNDUsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDc3LCA3MywgNjksIDg1LCAyMDUsIDc3LCA3MywgNjksIAorICAgIDgwLCAxMjgsIDc3LCA3MywgNjksIDY5LCAxMjgsIDc3LCA3MywgNjksIDEyOCwgNzcsIDczLCA2OCwgNzYsIDczLCA3OCwgCisgICAgMTk3LCA3NywgNzMsIDY4LCA2OCwgNzYsIDY5LCA0NSwgODcsIDY5LCA3NiwgODMsIDIwMCwgNzcsIDczLCA2OCwgNjgsIDc2LCAKKyAgICA2OSwgMTI4LCA3NywgNzMsIDY4LCA0NSwgNzYsIDY5LCA4NiwgNjksIDIwNCwgNzcsIDczLCAxOTYsIDc3LCA3MywgNjcsIAorICAgIDgyLCA3OSwgODMsIDY3LCA3OSwgODAsIDY5LCAxMjgsIDc3LCA3MywgNjcsIDgyLCA3OSwgODAsIDcyLCA3OSwgNzgsIDY5LCAKKyAgICAxMjgsIDc3LCA3MywgNjcsIDgyLCAyMDcsIDc3LCA3MywgNjcsIDIxMCwgNzcsIDcyLCA5MCwgMTI4LCA3NywgNzIsIDY1LCAKKyAgICAxMjgsIDc3LCA3MiwgMTI4LCA3NywgNzEsIDg1LCA4OCwgMTI4LCA3NywgNzEsIDg1LCA4NCwgMTI4LCA3NywgNzEsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzcsIDcxLCA4NSwgODIsIDEyOCwgNzcsIDcxLCA4NSwgODAsIDEyOCwgNzcsIDcxLCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc3LCA3MSwgODUsIDc5LCA4MCwgMTI4LCA3NywgNzEsIDg1LCA3OSwgMTI4LCA3NywgNzEsIDg1LCAxMjgsIAorICAgIDc3LCA3MSwgNzksIDg4LCAxMjgsIDc3LCA3MSwgNzksIDg0LCAxMjgsIDc3LCA3MSwgNzksIDgwLCAxMjgsIDc3LCA3MSwgCisgICAgNzksIDEyOCwgNzcsIDcxLCAyMDcsIDc3LCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDczLCA2OSwgMTI4LCA3NywgCisgICAgNzEsIDY5LCA4OCwgMTI4LCA3NywgNzEsIDY5LCA4MCwgMTI4LCA3NywgNzEsIDY5LCAxMjgsIDc3LCA3MSwgNjYsIDg1LCAKKyAgICAxMjgsIDc3LCA3MSwgNjYsIDc5LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3OSwgNzAsIDg1LCA3NywgMTI4LCA3NywgNzEsIAorICAgIDY2LCA3OSwgMTI4LCA3NywgNzEsIDY2LCA3MywgMTI4LCA3NywgNzEsIDY2LCA2OSwgODUsIDc4LCAxMjgsIDc3LCA3MSwgCisgICAgNjYsIDY5LCA3OCwgMTI4LCA3NywgNzEsIDY2LCA2OSwgNjksIDEyOCwgNzcsIDcxLCA2NiwgNjksIDEyOCwgNzcsIDcxLCAKKyAgICA2NiwgNjUsIDgzLCA2NSwgODEsIDEyOCwgNzcsIDcxLCA2NiwgNjUsIDgzLCA2NSwgMTI4LCA3NywgNzEsIDY1LCA4OCwgCisgICAgMTI4LCA3NywgNzEsIDY1LCA4NCwgMTI4LCA3NywgNzEsIDY1LCA4MCwgMTI4LCA3NywgNzEsIDY1LCAxMjgsIDc3LCA3MSwgCisgICAgMTI4LCA3NywgNzAsIDc5LCA3OCwgMTI4LCA3NywgNzAsIDc5LCAyMDYsIDc3LCA3MCwgNzksIDEyOCwgNzcsIDcwLCA3MywgCisgICAgODksIDY1LCA4MSwgMTI4LCA3NywgNzAsIDczLCA2OSwgNjksIDEyOCwgNzcsIDcwLCA2OSwgODUsIDg0LCAxMjgsIDc3LCAKKyAgICA3MCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNzAsIDY5LCA4NSwgNjUsIDY5LCAxMjgsIDc3LCA3MCwgNjUsIDY1LCAxMjgsIAorICAgIDc3LCA2OSwgOTAsIDkwLCA3OSwgMTI4LCA3NywgNjksIDg4LCAxMjgsIDc3LCA2OSwgODUsIDIxMiwgNzcsIDY5LCA4NSwgCisgICAgODEsIDEyOCwgNzcsIDY5LCA4NSwgNzgsIDc0LCA3OSwgNzcsIDc4LCA2OCwgNjksIDg1LCA4MSwgMTI4LCA3NywgNjksIDg1LCAKKyAgICA3OCwgMTI4LCA3NywgNjksIDg0LCA4MiwgNzksIDEyOCwgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNzcsIAorICAgIDY5LCA4NCwgODIsIDczLCA2NSwgMTI4LCA3NywgNjksIDg0LCA4MiwgNjksIDg0LCA2OSwgMjExLCA3NywgNjksIDg0LCA3OSwgCisgICAgNjYsIDY5LCA3NiwgODUsIDgzLCAxMjgsIDc3LCA2OSwgODQsIDY5LCA3NSwgMTI4LCA3NywgNjksIDg0LCA2OSwgNzEsIAorICAgIDEyOCwgNzcsIDY5LCA4NCwgNjUsIDc2LCAxMjgsIDc3LCA2OSwgODQsIDE5MywgNzcsIDY5LCA4MywgODMsIDY5LCA3OCwgCisgICAgNzMsIDY1LCAyMDYsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIDY5LCAxMjgsIDc3LCA2OSwgODMsIDgzLCA2NSwgNzEsIAorICAgIDE5NywgNzcsIDY5LCA4MywgNzksIDEyOCwgNzcsIDY5LCA4MywgNzMsIDEyOCwgNzcsIDY5LCA4MywgNzIsIDEyOCwgNzcsIAorICAgIDY5LCA4MiwgNzUsIDcyLCA2NSwgMTI4LCA3NywgNjksIDgyLCA3NSwgNzIsIDE5MywgNzcsIDY5LCA4MiwgNzMsIDY4LCA3MywgCisgICAgNjUsIDc4LCA4MywgMTI4LCA3NywgNjksIDgyLCA3MywgMTI4LCA3NywgNjksIDgyLCA3MSwgNjksIDEyOCwgNzcsIDY5LCAKKyAgICA4MiwgNjcsIDg1LCA4MiwgODksIDEyOCwgNzcsIDY5LCA4MiwgNjcsIDg1LCA4MiwgMjE3LCA3NywgNjksIDc4LCA3OSwgODIsIAorICAgIDY1LCAyMDAsIDc3LCA2OSwgNzgsIDc5LCA2OSwgMTI4LCA3NywgNjksIDc4LCA2OCwgODUsIDg0LCAxMjgsIDc3LCA2OSwgCisgICAgNzgsIDEyOCwgNzcsIDY5LCA3NywgNzksIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgODMsIDcyLCA3MywgODAsIAorICAgIDEyOCwgNzcsIDY5LCA3NywgNjYsIDY5LCA4MiwgMTI4LCA3NywgNjksIDc3LCA2NiwgNjksIDIxMCwgNzcsIDY5LCA3NywgCisgICAgNDUsIDgxLCA3OSwgODAsIDcyLCAxMjgsIDc3LCA2OSwgNzcsIDEyOCwgNzcsIDY5LCAyMDUsIDc3LCA2OSwgNzYsIDc5LCAKKyAgICA2OCwgNzMsIDE5NSwgNzcsIDY5LCA3NiwgNzMsIDc1LCAxMjgsIDc3LCA2OSwgNzMsIDkwLCA3MywgMTI4LCA3NywgNjksIAorICAgIDcxLCA2NSwgODQsIDc5LCA3OCwgMTI4LCA3NywgNjksIDcxLCA2NSwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDc3LCA2OSwgCisgICAgNzEsIDY1LCA3NiwgNzMsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDc5LCA4MiwgODUsIDEyOCwgNzcsIDY5LCA2OSwgODQsIDY5LCAKKyAgICAyMDEsIDc3LCA2OSwgNjksIDg0LCAxMjgsIDc3LCA2OSwgNjksIDc3LCA4NSwgMTI4LCA3NywgNjksIDY5LCA3NywgMTI4LCAKKyAgICA3NywgNjksIDY5LCAyMDIsIDc3LCA2OSwgNjksIDY5LCA2OSwgMTI4LCA3NywgNjksIDY4LCA3MywgODUsIDc3LCAxMjgsIAorICAgIDc3LCA2OSwgNjgsIDczLCA4NSwgMjA1LCA3NywgNjksIDY4LCA3MywgNjcsIDczLCA3OCwgNjksIDEyOCwgNzcsIDY5LCA2OCwgCisgICAgNzMsIDY3LCA2NSwgMjA0LCA3NywgNjksIDY4LCA2NSwgNzYsIDEyOCwgNzcsIDY5LCA2NSwgODQsIDEyOCwgNzcsIDY5LCAKKyAgICA2NSwgMjEyLCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgMTk2LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NywgNjksIDY1LCA4MywgODUsIDgyLCAxOTcsIDc3LCA2OCwgODUsIDIwNiwgNzcsIDE5NiwgNzcsIDY3LCA3MiwgCisgICAgMjEzLCA3NywgNjcsIDcyLCA2NSwgMjA2LCA3NywgMTk1LCA3NywgNjYsIDg1LCA4NSwgMTI4LCA3NywgNjYsIDg1LCA3OSwgCisgICAgODEsIDEyOCwgNzcsIDY2LCA4NSwgNzksIDEyOCwgNzcsIDY2LCA4NSwgNjksIDEyOCwgNzcsIDY2LCA4NSwgNjUsIDY5LCAKKyAgICA3NywgMTI4LCA3NywgNjYsIDg1LCA2NSwgNjksIDEyOCwgNzcsIDY2LCA3OSwgNzksIDEyOCwgNzcsIDY2LCA3OSwgMTI4LCAKKyAgICA3NywgNjYsIDczLCA4NCwgMTI4LCA3NywgNjYsIDczLCAyMTIsIDc3LCA2NiwgNzMsIDgyLCA3MywgNjksIDY5LCA3OCwgCisgICAgMTI4LCA3NywgNjYsIDczLCAxMjgsIDc3LCA2NiwgNjksIDg1LCA4OCwgMTI4LCA3NywgNjYsIDY5LCA4NSwgODIsIDczLCAKKyAgICAxMjgsIDc3LCA2NiwgNjksIDg1LCA3NywgMTI4LCA3NywgNjYsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDc3LCA2NiwgNjksIAorICAgIDc4LCAxMjgsIDc3LCA2NiwgNjksIDY5LCA3NSwgNjksIDY5LCA4NCwgMTI4LCA3NywgNjYsIDY5LCA2OSwgMTI4LCA3NywgCisgICAgNjYsIDY5LCAxMjgsIDc3LCA2NiwgNjUsIDgxLCAxMjgsIDc3LCA2NiwgNjUsIDc4LCA4OSwgNzMsIDEyOCwgNzcsIDY2LCAKKyAgICA2NSwgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzcsIDY2LCA2NSwgNjUsIDc1LCA2OSwgODQsIDEyOCwgNzcsIDY2LCA2NSwgNjUsIAorICAgIDEyOCwgNzcsIDY2LCA2NSwgMTkzLCA3NywgNjYsIDE5MywgNzcsIDY2LCA1MiwgMTI4LCA3NywgNjYsIDUxLCAxMjgsIDc3LCAKKyAgICA2NiwgNTAsIDEyOCwgNzcsIDY1LCA4OSwgNjksIDIwMywgNzcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4OSwgMTI4LCA3NywgNjUsIDg4LCA3MywgNzcsIDczLCA5MCwgNjksIDEyOCwgNzcsIDY1LCA4OCwgNzMsIDc3LCA2NSwgCisgICAgMTI4LCA3NywgNjUsIDg4LCAxMjgsIDc3LCA2NSwgODUsIDEyOCwgNzcsIDY1LCA4NCwgODQsIDc5LCA2NywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4NCwgODIsIDczLCA4OCwgMTI4LCA3NywgNjUsIDg0LCA2OSwgODIsIDczLCA2NSwgNzYsIDgzLCAxMjgsIDc3LCAKKyAgICA2NSwgODQsIDEyOCwgNzcsIDY1LCA4MywgMjEzLCA3NywgNjUsIDgzLCA4MywgNzMsIDc4LCA3MSwgMTI4LCA3NywgNjUsIAorICAgIDgzLCA4MywgNjUsIDcxLCA2OSwgMTI4LCA3NywgNjUsIDgzLCA3OSwgODIsIDE5MywgNzcsIDY1LCA4MywgNzUsIDEyOCwgCisgICAgNzcsIDY1LCA4MywgNzIsIDcwLCA2NSwgNjUsIDg0LCAxMjgsIDc3LCA2NSwgODMsIDcyLCA1MCwgMTI4LCA3NywgNjUsIDgzLCAKKyAgICA2NywgODUsIDc2LCA3MywgNzgsIDE5NywgNzcsIDY1LCA4MiwgODksIDEyOCwgNzcsIDY1LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMjAxLCA3NywgNjUsIDgyLCA4NSwgNzUsIDg1LCAxMjgsIDc3LCA2NSwgODIsIDg0LCA4OSwgODIsIDczLCAxOTMsIDc3LCAKKyAgICA2NSwgODIsIDg0LCA3MywgNjUsIDIwNCwgNzcsIDY1LCA4MiwgODIsIDg5LCA3MywgNzgsIDE5OSwgNzcsIDY1LCA4MiwgODIsIAorICAgIDczLCA2NSwgNzEsIDE5NywgNzcsIDY1LCA4MiwgNzUsIDIxMSwgNzcsIDY1LCA4MiwgNzUsIDY5LCA4MiwgMTI4LCA3NywgCisgICAgNjUsIDgyLCA3NSwgNDUsIDUyLCAxMjgsIDc3LCA2NSwgODIsIDc1LCA0NSwgNTEsIDEyOCwgNzcsIDY1LCA4MiwgNzUsIDQ1LCAKKyAgICA1MCwgMTI4LCA3NywgNjUsIDgyLCA3NSwgNDUsIDQ5LCAxMjgsIDc3LCA2NSwgODIsIDY5LCAxMjgsIDc3LCA2NSwgODIsIAorICAgIDY3LCA3MiwgNjksIDIwNiwgNzcsIDY1LCA4MiwgNjcsIDcyLCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCA0NSwgCisgICAgODMsIDg0LCA2NSwgNjcsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCA2NSwgODIsIDY3LCA2NSwgODQsIDc5LCAxMjgsIDc3LCAKKyAgICA2NSwgODIsIDY3LCA2NSwgODMsIDczLCA4NCwgNjksIDEyOCwgNzcsIDY1LCA4MiwgNjYsIDg1LCA4NCwgNjUsIDEyOCwgNzcsIAorICAgIDY1LCA4MiwgNjYsIDg1LCA4NCwgMTkzLCA3NywgNjUsIDgyLCAxMjgsIDc3LCA2NSwgODEsIDY1LCA3MCwgMTI4LCA3NywgCisgICAgNjUsIDgxLCAxMjgsIDc3LCA2NSwgODAsIDc2LCAxOTcsIDc3LCA2NSwgODAsIDczLCA4MSwgMTI4LCA3NywgNjUsIDIwOCwgCisgICAgNzcsIDY1LCA3OSwgMTI4LCA3NywgNjUsIDc4LCA4NCwgNjksIDc2LCA4MCwgNzMsIDY5LCA2NywgMTk3LCA3NywgNjUsIDc4LCAKKyAgICA4MywgODksIDc5LCA3OCwgMTI4LCA3NywgNjUsIDc4LCA4MywgODUsIDY1LCA2OSwgMTI4LCA3NywgNjUsIDc4LCA3OCwgNjUsIAogICAgIDIxOCwgNzcsIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc3LCA2NSwgNzgsIDczLCA2NywgNzIsIDY1LCA2OSwgNjUsIDIwNiwgCiAgICAgNzcsIDY1LCA3OCwgNzEsIDY1LCA3NiwgNjUsIDc3LCAxMjgsIDc3LCA2NSwgNzgsIDY4LCA2NSwgNzMsIDc2LCA3MywgNzgsIAogICAgIDE5OSwgNzcsIDY1LCA3OCwgNjgsIDY1LCA3MywgMTk1LCA3NywgNjUsIDc4LCA2NywgNzIsIDIxMywgNzcsIDY1LCA3OCwgCkBAIC0yMzIyLDE0MjAgKzIzNDUsMTQyNiBAQAogICAgIDQ4LCA0OCwgMTc4LCA3NywgNDgsIDQ4LCA0OSwgNjYsIDEyOCwgNzcsIDQ4LCA0OCwgNDksIDY1LCAxMjgsIDc3LCA0OCwgCiAgICAgNDgsIDQ5LCAxMjgsIDc3LCA0OCwgNDgsIDE3NywgNzYsIDIxOCwgNzYsIDg5LCA4OSwgMTI4LCA3NiwgODksIDg4LCAxMjgsIAogICAgIDc2LCA4OSwgODQsIDEyOCwgNzYsIDg5LCA4MiwgODgsIDEyOCwgNzYsIDg5LCA4MiwgMTI4LCA3NiwgODksIDgwLCAxMjgsIAotICAgIDc2LCA4OSwgNzMsIDg0LCAxMjgsIDc2LCA4OSwgNjgsIDczLCA2NSwgMjA2LCA3NiwgODksIDY3LCA3MywgNjUsIDIwNiwgCi0gICAgNzYsIDg4LCAxMjgsIDc2LCA4NywgNzksIDc5LCAxMjgsIDc2LCA4NywgNzksIDEyOCwgNzYsIDg3LCA3MywgNzMsIDEyOCwgCi0gICAgNzYsIDg3LCA3MywgMTI4LCA3NiwgODcsIDY5LCAxMjgsIDc2LCA4NywgNjUsIDY1LCAxMjgsIDc2LCA4NywgNjUsIDEyOCwgCi0gICAgNzYsIDg1LCA4OCwgMTI4LCA3NiwgODUsIDg1LCAxMjgsIDc2LCA4NSwgODQsIDEyOCwgNzYsIDg1LCA4MiwgODgsIDEyOCwgCi0gICAgNzYsIDg1LCA4MCwgMTI4LCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3NiwgODUsIDc5LCA4NCwgMTI4LCA3NiwgODUsIDc5LCAKLSAgICA4MCwgMTI4LCA3NiwgODUsIDc5LCAxMjgsIDc2LCA4NSwgNzgsIDcxLCA4MywgNzMsIDEyOCwgNzYsIDg1LCA3OCwgNjUsIAotICAgIDg0LCAxOTcsIDc2LCA4NSwgMjA1LCA3NiwgODUsIDc2LCAxMjgsIDc2LCA4NSwgNzMsIDgzLCAxMjgsIDc2LCA4NSwgNzIsIAotICAgIDg1LCA4MiwgMTI4LCA3NiwgODUsIDcyLCAxMjgsIDc2LCA4NSwgMjAwLCA3NiwgODUsIDcxLCA3MSwgNjUsIDcxLCA2OSwgCi0gICAgMTI4LCA3NiwgODUsIDcxLCA2NSwgNzYsIDEyOCwgNzYsIDg1LCA3MSwgNjUsIDIwNCwgNzYsIDg1LCA2OSwgMTI4LCA3NiwgCi0gICAgODUsIDE5NywgNzYsIDg1LCA2NiwgMTI4LCA3NiwgODUsIDY1LCA2OSwgODAsIDEyOCwgNzYsIDg1LCA1MSwgMTI4LCA3NiwgCi0gICAgODUsIDUwLCAxMjgsIDc2LCA4NSwgMTc4LCA3NiwgODIsIDc5LCAxMjgsIDc2LCA4MiwgNzcsIDEyOCwgNzYsIDgyLCA3MywgCi0gICAgMTI4LCA3NiwgODIsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCA3OCwgNzEsIDY5LCAxMjgsIDc2LCA3OSwgOTAsIDY5LCAKLSAgICA3OCwgNzEsIDE5NywgNzYsIDc5LCA4OCwgMTI4LCA3NiwgNzksIDg3LCA2OSwgODIsIDY5LCAxOTYsIDc2LCA3OSwgODcsIAotICAgIDY5LCAyMTAsIDc2LCA3OSwgODcsIDQ1LCA4MiwgNjksIDg2LCA2OSwgODIsIDgzLCA2OSwgNjgsIDQ1LCAxODUsIDc2LCA3OSwgCi0gICAgODcsIDQ1LCA3NywgNzMsIDE5NiwgNzYsIDc5LCA4NywgNDUsIDcwLCA2NSwgNzYsIDc2LCA3MywgNzgsIDE5OSwgNzYsIDc5LCAKLSAgICA4NywgNDUsIDE4NSwgNzYsIDc5LCA4NiwgMTk3LCA3NiwgNzksIDg1LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA4NSwgNjgsIAotICAgIDgzLCA4MCwgNjksIDY1LCA3NSwgNjksIDgyLCAxMjgsIDc2LCA3OSwgODUsIDY4LCA3NiwgMjE3LCA3NiwgNzksIDg0LCA4NSwgCi0gICAgODMsIDEyOCwgNzYsIDc5LCA4NCwgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCAKLSAgICA3MywgNzgsIDY5LCAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCAKLSAgICA3NiwgNzksIDc5LCA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIAotICAgIDc5LCA3OCwgMTI4LCA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgCi0gICAgMTI4LCA3NiwgNzksIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCAKLSAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgCi0gICAgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIAotICAgIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCAKLSAgICA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgCi0gICAgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCAKLSAgICA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIAotICAgIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgCi0gICAgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCAKLSAgICA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgCi0gICAgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAKLSAgICAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIAotICAgIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCAKLSAgICA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgCi0gICAgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAKLSAgICAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCAKLSAgICA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIAotICAgIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgCi0gICAgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCAKLSAgICA3NCwgMTI4LCA3NiwgNzMsIDg4LCAxMjgsIDc2LCA3MywgODcsIDc4LCAxMjgsIDc2LCA3MywgODYsIDgyLCAxOTcsIDc2LCAKLSAgICA3MywgODQsIDg0LCA3NiwgNjksIDEyOCwgNzYsIDczLCA4NCwgODQsIDc2LCAxOTcsIDc2LCA3MywgODQsIDg0LCA2OSwgCi0gICAgMjEwLCA3NiwgNzMsIDg0LCA4MiwgMTkzLCA3NiwgNzMsIDg0LCAyMDAsIDc2LCA3MywgODMsIDIxMywgNzYsIDczLCA4MywgCi0gICAgMTI4LCA3NiwgNzMsIDgyLCAxOTMsIDc2LCA3MywgODEsIDg1LCA3MywgMTk2LCA3NiwgNzMsIDgxLCAxMjgsIDc2LCA3MywgCi0gICAgODAsIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NiwgNzMsIDgwLCAyMTEsIDc2LCA3MywgMjA4LCA3NiwgNzMsIDc4LCAKLSAgICA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzgsIDc1LCA2OSwgMTk2LCA3NiwgNzMsIDc4LCAyMDMsIDc2LCA3MywgNzgsIAotICAgIDcxLCA4MywgNjUsIDEyOCwgNzYsIDczLCA3OCwgNjksIDgzLCAxMjgsIDc2LCA3MywgNzgsIDY5LCAyMTEsIDc2LCA3MywgCi0gICAgNzgsIDY5LCA0NSwgNTcsIDEyOCwgNzYsIDczLCA3OCwgNjksIDQ1LCA1NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDUxLCAKLSAgICAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNDksIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3NiwgNzMsIAotICAgIDc3LCA3NywgODUsIDUwLCAxMjgsIDc2LCA3MywgNzcsIDc3LCA4NSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3NiwgCi0gICAgNzMsIDc3LCA3MywgODQsIDY5LCAxOTYsIDc2LCA3MywgNzcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDc2LCAKLSAgICA3MywgNzcsIDczLCA4NCwgMTI4LCA3NiwgNzMsIDc3LCA2OSwgMTI4LCA3NiwgNzMsIDc3LCA2NiwgMjEzLCA3NiwgNzMsIAotICAgIDc3LCA2NiwgMjExLCA3NiwgNzMsIDc3LCAxOTQsIDc2LCA3MywgNzYsIDg5LCAxMjgsIDc2LCA3MywgNzYsIDczLCA4NCwgCi0gICAgNzIsIDEyOCwgNzYsIDczLCA3NiwgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDc2LCAKLSAgICA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcxLCA3MiwgODQsIDcyLCA3OSwgODUsIDgzLCA2OSwgCi0gICAgMTI4LCA3NiwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNzYsIDczLCA3MSwgNjUsIDg0LCA3MywgNzgsIDE5OSwgNzYsIDczLCAKLSAgICA3MCwgODQsIDY5LCA4MiwgMTI4LCA3NiwgNzMsIDcwLCA2OSwgMTI4LCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA3NiwgNzMsIDY5LCA4MCwgMTI4LCA3NiwgNzMsIDY5LCA2OSwgMTI4LCA3NiwgNzMsIDY5LCAxMjgsIAotICAgIDc2LCA3MywgNjgsIDEyOCwgNzYsIDczLCA2NywgNzUsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDY2LCA4MiwgNjUsIDEyOCwgCi0gICAgNzYsIDczLCA2NiwgNjksIDgyLCA4NCwgODksIDEyOCwgNzYsIDczLCA2NSwgNjYsIDczLCA3NiwgNzMsIDg0LCAyMTcsIDc2LCAKLSAgICA3MiwgNzMsIDczLCAxMjgsIDc2LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzYsIDcyLCA2NSwgCi0gICAgMTk5LCA3NiwgNzIsIDY1LCA2NSwgMTI4LCA3NiwgNzIsIDEyOCwgNzYsIDY5LCA5MCwgNzIsIDEyOCwgNzYsIDY5LCA4OCwgCi0gICAgMTI4LCA3NiwgNjksIDg2LCA3MywgODQsIDY1LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3NiwgNjksIDg1LCA3NywgMTI4LCAKLSAgICA3NiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgNzcsIDEyOCwgNzYsIDY5LCA4NSwgCi0gICAgMTI4LCA3NiwgNjksIDIxMywgNzYsIDY5LCA4NCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNzYsIDY5LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgMTI4LCA3NiwgNjksIDIxMiwgNzYsIDY5LCA4MywgODMsIDY5LCAyMTAsIDc2LCA2OSwgODMsIDgzLCA0NSwgODQsIAotICAgIDcyLCA2NSwgNzgsIDEyOCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCAyMDYsIDc2LCA2OSwgODAsIDY3LCA3MiwgCi0gICAgMTkzLCA3NiwgNjksIDgwLCAxMjgsIDc2LCA2OSwgNzksIDgwLCA2NSwgODIsIDY4LCAxMjgsIDc2LCA2OSwgNzksIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgODQsIDczLCA2NywgODUsIDc2LCA2NSwgMjEwLCA3NiwgNjksIDc4LCA3MywgODMsIDEyOCwgNzYsIDY5LCAKLSAgICA3OCwgNzMsIDIxMSwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNjksIDc4LCA2OSwgODIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDU1LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1NCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgCi0gICAgODQsIDcyLCA0NSwgNTMsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUyLCAxMjgsIDc2LCA2OSwgNzgsIDcxLCAKLSAgICA4NCwgNzIsIDQ1LCA1MSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTAsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIAotICAgIDg0LCA3MiwgNDUsIDQ5LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgMjAwLCA3NiwgNjksIDc4LCA3MSwgNjUsIDEyOCwgCi0gICAgNzYsIDY5LCA3OCwgNzEsIDE5MywgNzYsIDY5LCA3NywgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzcsIDc5LCA3MywgMTI4LCAKLSAgICA3NiwgNjksIDc2LCA2OSwgODQsIDEyOCwgNzYsIDY5LCA3NiwgNjksIDIxMiwgNzYsIDY5LCAyMDMsIDc2LCA2OSwgNzMsIAotICAgIDc3LCA3NywgNjUsIDEyOCwgNzYsIDY5LCA3MywgNzcsIDc3LCAxOTMsIDc2LCA2OSwgNzMsIDEyOCwgNzYsIDY5LCA3MSwgCi0gICAgODMsIDEyOCwgNzYsIDY5LCA3MSwgNzMsIDc5LCA3OCwgMTI4LCA3NiwgNjksIDcxLCA2OSwgODQsIDc5LCAyMTEsIDc2LCAKLSAgICA2OSwgNzEsIDEyOCwgNzYsIDY5LCAxOTksIDc2LCA2OSwgNzAsIDg0LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNzYsIAotICAgIDY5LCA3MCwgODQsIDQ1LCA4NCwgNzksIDQ1LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA3NiwgNjksIDcwLCA4NCwgNDUsIDgzLCAKLSAgICA4NCwgNjksIDIwNSwgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzMsIDY4LCAxOTcsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIAotICAgIDcyLCA2NSwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODAsIDc5LCA3MywgNzgsIDg0LCA3MywgNzgsIDE5OSwgCi0gICAgNzYsIDY5LCA3MCwgODQsIDQ1LCA3NiwgNzMsIDcxLCA3MiwgODQsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIAotICAgIDY1LCA3OCwgNjgsIDY5LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzIsIDY1LCA3OCwgMTk2LCA3NiwgNjksIDcwLCA4NCwgCi0gICAgNDUsIDcwLCA2NSwgNjcsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgMTI4LCA3NiwgNjksIDY5LCA4MiwgNjUsIDY5LCAKLSAgICA4NywgNjUsIDEyOCwgNzYsIDY5LCA2OSwgNzUsIDEyOCwgNzYsIDY5LCA2OSwgNjksIDY5LCAxMjgsIDc2LCA2OSwgNjgsIAotICAgIDcxLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzYsIDY5LCA2NSwgNzAsIDEyOCwgCi0gICAgNzYsIDY5LCA2NSwgMTk4LCA3NiwgNjksIDY1LCA2OCwgNzMsIDc4LCAxOTksIDc2LCA2OSwgNjUsIDY4LCA2OSwgODIsIAotICAgIDEyOCwgNzYsIDY5LCA2NSwgMTk2LCA3NiwgNjgsIDY1LCA3OCwgMTI4LCA3NiwgNjgsIDUwLCAxMjgsIDc2LCA2NywgMjAxLCAKLSAgICA3NiwgNjcsIDE5NywgNzYsIDY1LCA5MCwgMjE3LCA3NiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg4LCAxMjgsIDc2LCA2NSwgODcsIDEyOCwgNzYsIDY1LCAyMTUsIDc2LCA2NSwgODUsIDc2LCA2NSwgMTI4LCA3NiwgNjUsIAotICAgIDg1LCA3NSwgNjUsIDIxOCwgNzYsIDY1LCA4NSwgNzQsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIDE5NywgCi0gICAgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgMTk3LCAKLSAgICA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAyMDEsIAotICAgIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIDgyLCA3MSwgCi0gICAgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgODEsIDEyOCwgCi0gICAgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCA4NSwgNjUsIDcxLCAKLSAgICAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIDgwLCAxMjgsIDc2LCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY5LCAxOTYsIAotICAgIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAxMjgsIDc2LCA2NSwgCi0gICAgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIDcyLCAxMjgsIDc2LCAKLSAgICA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgODksIDY1LCA3OSwgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCA1MiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgCi0gICAgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIDEyOCwgNzYsIDY1LCAKLSAgICA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAotICAgIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgCi0gICAgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgMTg1LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCAKLSAgICA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1MywgCi0gICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1NiwgMTI4LCAKLSAgICA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgMTI4LCA3NiwgNjUsIAotICAgIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCi0gICAgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU3LCAKLSAgICA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCAxNzcsIAotICAgIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIDE4NSwgNzYsIDY1LCA3NSwgCi0gICAgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCAKLSAgICA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNTMsIAotICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgNjUsIDc2LCA2NSwgNzgsIAotICAgIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCA3MiwgODUsIDEyOCwgNzYsIAotICAgIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCA3NiwgNjUsIDcxLCA2NSwgCi0gICAgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIDc2LCA2NSwgNzEsIDY1LCAKLSAgICAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgMjE3LCA3NiwgNjUsIDY3LCAKLSAgICA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIDY1LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgNzYsIDY1LCA2NiwgNjUsIAotICAgIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA2NSwgCi0gICAgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIDc2LCA1NCwgMTI4LCA3NiwgCi0gICAgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzYsIDQ4LCA0OCwgCi0gICAgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCAKLSAgICA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCA3OSwgMTI4LCA3NSwgODksIAotICAgIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIDEyOCwgNzUsIDg5LCA2NSwgCi0gICAgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIDc1LCA4OCwgODcsIDczLCAKLSAgICAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2NSwgNjUsIAotICAgIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAxMjgsIDc1LCA4OCwgNzMsIAotICAgIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCA2NSwgMTI4LCA3NSwgODgsIAotICAgIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCA3NSwgODcsIDc5LCA3OSwgCi0gICAgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIDEyOCwgNzUsIDg3LCA3MywgCi0gICAgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIDEyOCwgNzUsIDg3LCA2NSwgCi0gICAgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIDc1LCA4NiwgNjUsIDEyOCwgCi0gICAgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIDg1LCA3MiwgMTI4LCA3NSwgCi0gICAgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgODUsIDUwLCAxMjgsIDc1LCAKLSAgICA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCA4NSwgOTAsIDY5LCA3MywgODIsIAotICAgIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIDY5LCAxMjgsIDc1LCA4NSwgCi0gICAgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIDEyOCwgNzUsIDg1LCA3OSwgCi0gICAgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIDc5LCAxMjgsIDc1LCA4NSwgCi0gICAgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAxMjgsIDc1LCA4NSwgNzYsIAotICAgIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgNzUsIDg1LCA2NiwgMTI4LCAKLSAgICA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAxMjgsIDc1LCA4NSwgNTUsIAotICAgIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgODUsIDE3OSwgNzUsIDg0LCAKLSAgICAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgODMsIDgzLCA3OSwgNzksIAotICAgIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCA4MywgODMsIDczLCAxMjgsIAotICAgIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgODUsIDEyOCwgCi0gICAgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgODMsIDgzLCA2NSwgMTI4LCAKLSAgICA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCA4MywgODQsIDczLCAxMjgsIAotICAgIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgNzgsIDEyOCwgNzUsIDgyLCAKLSAgICA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODIsIDY1LCA4NCwgCi0gICAgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIDgwLCA4NSwgMTI4LCAKLSAgICA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIDc1LCA4MCwgNzMsIAotICAgIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgNjksIDEyOCwgNzUsIAotICAgIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCA3MiwgMTI4LCA3NSwgCi0gICAgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCA3OSwgODYsIDEyOCwgCi0gICAgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIDgyLCA3OSwgNzgsIDczLCAKLSAgICA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgMTk1LCA3NSwgNzksIAotICAgIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCA4MCwgMTI4LCA3NSwgCi0gICAgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIDg1LCA4NSwgODQsIAotICAgIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgNjksIDg2LCA3NywgCi0gICAgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCA3NSwgNzksIDc3LCAKLSAgICA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIDY2LCAyMTMsIAotICAgIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIDc5LCAyMDMsIAotICAgIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIDc5LCA3NywgCi0gICAgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgMTI4LCA3NSwgCi0gICAgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3NSwgNzgsIAotICAgIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAxOTcsIDc1LCA3NywgCi0gICAgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgCi0gICAgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCA3NSwgODUsIDEyOCwgCi0gICAgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCA3NSwgNjksIDEyOCwgCi0gICAgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKLSAgICA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgODMsIDczLCA3OSwgCi0gICAgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIDQ1LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3NSwgCi0gICAgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAotICAgIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNjcsIDcyLCAKLSAgICA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIDEyOCwgNzUsIAotICAgIDczLCA4NywgMTI4LCA3NSwgNzMsIDg2LCAxMjgsIDc1LCA3MywgODQsIDEyOCwgNzUsIDczLCA4MywgODMsIDczLCA3OCwgCi0gICAgMTk5LCA3NSwgNzMsIDgzLCA4MywgMTI4LCA3NSwgNzMsIDgzLCAyMTEsIDc1LCA3MywgODMsIDczLCA3NywgNTMsIDEyOCwgCi0gICAgNzUsIDczLCA4MywgNzMsIDc3LCAxODEsIDc1LCA3MywgODMsIDcyLCAxMjgsIDc1LCA3MywgODMsIDY1LCA3NiwgMTI4LCAKLSAgICA3NSwgNzMsIDgyLCA3OSwgODcsIDY1LCA4NCwgODQsIDc5LCAxMjgsIDc1LCA3MywgODIsIDc5LCA3NywgNjksIDY5LCA4NCwgCi0gICAgNzksIDgyLCA4NSwgMTI4LCA3NSwgNzMsIDgyLCA3OSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgMTI4LCA3NSwgNzMsIDgyLCAKLSAgICA3OSwgMTI4LCA3NSwgNzMsIDgyLCA3MSwgNzIsIDczLCAyMTgsIDc1LCA3MywgODEsIDEyOCwgNzUsIDczLCA4MCwgMTI4LCAKLSAgICA3NSwgNzMsIDIwOCwgNzUsIDczLCA3OCwgODMsIDcyLCA3MywgODAsIDEyOCwgNzUsIDczLCA3OCwgNjgsIDY5LCA4MiwgNzEsIAotICAgIDY1LCA4MiwgODQsIDY5LCA3OCwgMTI4LCA3NSwgNzMsIDc3LCA3OSwgNzgsIDc5LCAxMjgsIDc1LCA3MywgNzYsIDc2LCA2OSwgCi0gICAgODIsIDEyOCwgNzUsIDczLCA3MywgMTI4LCA3NSwgNzMsIDcyLCAxMjgsIDc1LCA3MywgNjksIDg4LCAxMjgsIDc1LCA3MywgCi0gICAgNjksIDg2LCA2NSwgMjA2LCA3NSwgNzMsIDY5LCA4MCwgMTI4LCA3NSwgNzMsIDY5LCA2OSwgNzcsIDEyOCwgNzUsIDczLCAKLSAgICA2OSwgMTI4LCA3NSwgNzMsIDY4LCAxMjgsIDc1LCA3MywgMTk2LCA3NSwgNzMsIDY3LCA3NSwgMTI4LCA3NSwgNzMsIDY2LCAKLSAgICAxMjgsIDc1LCA3MywgNjUsIDg2LCAxMjgsIDc1LCA3MywgNjUsIDY2LCAxMjgsIDc1LCA3MiwgOTAsIDEyOCwgNzUsIDcyLCAKLSAgICA4NywgNjUsIDczLCAxMjgsIDc1LCA3MiwgODUsIDY5LCA3OCwgNDUsIDc2LCA4NSwgMTk3LCA3NSwgNzIsIDg1LCA2OSwgCi0gICAgMjA2LCA3NSwgNzIsIDg1LCA2OCwgNjUsIDg3LCA2NSwgNjgsIDIwMSwgNzUsIDcyLCA4NSwgNjgsIDY1LCA3NywgMTI4LCAKLSAgICA3NSwgNzIsIDg1LCA2NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgODUsIDEyOCwgNzUsIDcyLCA3OSwgMjEyLCA3NSwgNzIsIAotICAgIDc5LCA3OCwgMTI4LCA3NSwgNzIsIDc5LCA3NywgODUsIDg0LCAxMjgsIDc1LCA3MiwgNzksIDc0LCA3NSwgMjAxLCA3NSwgCi0gICAgNzIsIDc5LCAxMjgsIDc1LCA3MiwgMjA3LCA3NSwgNzIsIDc3LCAyMTMsIDc1LCA3MiwgNzMsIDg0LCAxMjgsIDc1LCA3MiwgCi0gICAgNzMsIDc4LCA4OSwgNjUsIDEyOCwgNzUsIDcyLCA3MywgNjksIDg1LCA3NSwgMjAwLCA3NSwgNzIsIDczLCAxMjgsIDc1LCAKLSAgICA3MiwgMjAxLCA3NSwgNzIsIDcyLCA3OSwgMTI4LCA3NSwgNzIsIDcyLCA2NSwgMTI4LCA3NSwgNzIsIDY5LCA4NCwgNzIsIAotICAgIDEyOCwgNzUsIDcyLCA2OSwgNzMsIDEyOCwgNzUsIDcyLCA2OSwgNjksIDEyOCwgNzUsIDcyLCA2OSwgMTI4LCA3NSwgNzIsIAotICAgIDY1LCA4NiwgMTI4LCA3NSwgNzIsIDY1LCA4MiwgNzksIDgzLCA3MiwgODQsIDcyLCAyMDEsIDc1LCA3MiwgNjUsIDgyLCAKLSAgICAxMjgsIDc1LCA3MiwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNzIsIDY1LCA3OCwgMTk5LCA3NSwgNzIsIDY1LCA3OCwgNjgsIAotICAgIDE5MywgNzUsIDcyLCA2NSwgNzgsIDEyOCwgNzUsIDcyLCA2NSwgNzcsIDg0LCAyMDEsIDc1LCA3MiwgNjUsIDc1LCA2NSwgCi0gICAgODMsIDgzLCA3MywgNjUsIDIwNiwgNzUsIDcyLCA2NSwgNzMsIDEyOCwgNzUsIDcyLCA2NSwgNzIsIDEyOCwgNzUsIDcyLCAKLSAgICA2NSwgMjAwLCA3NSwgNzIsIDY1LCA2NiwgMTI4LCA3NSwgNzIsIDY1LCA2NSwgMTI4LCA3NSwgNzEsIDEyOCwgNzUsIDY5LCAKLSAgICA4OSwgNjcsIDY1LCA4MCwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDIwOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCA2NSwgODIsIAotICAgIDY4LCAxMjgsIDc1LCA2OSwgODksIDY2LCA3OSwgNjUsIDgyLCAxOTYsIDc1LCA2OSwgODgsIDEyOCwgNzUsIDY5LCA4NiwgCi0gICAgMTI4LCA3NSwgNjksIDg1LCA4OSwgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNzIsIDY5LCA4NSwgNjUsIDY5LCAKLSAgICA4MCwgMTI4LCA3NSwgNjksIDg1LCA4MywgNjksIDg1LCA4OCwgMTI4LCA3NSwgNjksIDg1LCA4MCwgODUsIDgxLCAxMjgsIAotICAgIDc1LCA2OSwgODUsIDc5LCAyMTIsIDc1LCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2OSwgODUsIDg0LCA3OCwgCi0gICAgNjgsIDY1LCAxMjgsIDc1LCA2OSwgODUsIDc1LCA2NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4NCwgNzcsIDY5LCAKLSAgICA4NSwgNzgsIDEyOCwgNzUsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNzMsIDEyOCwgNzUsIDY5LCA4NCwgODQsIDIwMSwgNzUsIAotICAgIDY5LCA4MywgNzIsIDUwLCAxMjgsIDc1LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA3NSwgNjksIDc5LCA4NywgMTI4LCA3NSwgCi0gICAgNjksIDc4LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgMTkzLCAKLSAgICA3NSwgNjksIDc4LCA4NCwgNzMsIDc3LCAxOTMsIDc1LCA2OSwgNzgsIDY1LCA4NCwgMTI4LCA3NSwgNjksIDc4LCAxMjgsIAotICAgIDc1LCA2OSwgMjA2LCA3NSwgNjksIDc3LCA4MCwgODUsIDc2LCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA4NSwgMjA0LCA3NSwgCi0gICAgNjksIDc3LCA4MCwgNzYsIDczLCAxMjgsIDc1LCA2OSwgNzcsIDgwLCA3NiwgMjAxLCA3NSwgNjksIDc3LCA4MCwgNzIsIDgyLCAKLSAgICA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzcsIDY2LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNzYsIDg2LCA3MywgCi0gICAgMjA2LCA3NSwgNjksIDcyLCA2OSwgNzIsIDEyOCwgNzUsIDY5LCA3MiwgNjksIDIwMCwgNzUsIDY5LCA3MiwgMTI4LCA3NSwgCi0gICAgNjksIDcwLCA4NSwgNzYsIDY1LCAxMjgsIDc1LCA2OSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgNjksIDgzLCA4NSwgMTI4LCAKLSAgICA3NSwgNjksIDY5LCA4MCwgNzMsIDc4LCAxOTksIDc1LCA2OSwgNjksIDc4LCA3MSwgMTI4LCA3NSwgNjksIDY5LCA2NiwgCi0gICAgMTI4LCA3NSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjUsIDY1LCA2OSwgMTI4LCA3NSwgNjcsIDY1LCA3NiwgMTI4LCA3NSwgCi0gICAgNjYsIDEyOCwgNzUsIDY1LCA5MCwgNjUsIDc1LCAyMDAsIDc1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc1LCAKLSAgICA2NSwgODksIDY1LCAyMDAsIDc1LCA2NSwgODgsIDEyOCwgNzUsIDY1LCA4NywgODYsIDEyOCwgNzUsIDY1LCA4NywgNzMsIAotICAgIDEyOCwgNzUsIDY1LCA4NywgNjYsIDEyOCwgNzUsIDY1LCA4NiwgODksIDc1LCA2NSwgMTI4LCA3NSwgNjUsIDg2LCAxMjgsIAotICAgIDc1LCA2NSwgODUsIDg2LCAxMjgsIDc1LCA2NSwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNjUsIDg1LCAyMDYsIDc1LCA2NSwgCi0gICAgODUsIDY2LCAxMjgsIDc1LCA2NSwgODQsIDc5LCAxMjgsIDc1LCA2NSwgODQsIDcyLCA3MywgODMsIDg0LCA3MywgMTI4LCAKLSAgICA3NSwgNjUsIDg0LCA3MiwgNjUsIDc1LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA4NiwgNjUsIDgzLCA3NywgNjUsIDEyOCwgNzUsIAotICAgIDY1LCA4NCwgNjUsIDg2LCAxOTMsIDc1LCA2NSwgODQsIDY1LCA3NSwgNjUsIDc4LCA2NSwgNDUsIDcyLCA3MywgODIsIDY1LCAKLSAgICA3MSwgNjUsIDc4LCAxOTMsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCA3OCwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgNjUsIAotICAgIDg0LCA2NSwgMjA2LCA3NSwgNjUsIDgzLCA4MiwgNjUsIDEyOCwgNzUsIDY1LCA4MywgODIsIDE5MywgNzUsIDY1LCA4MywgCi0gICAgNzUsIDY1LCA3NiwgMTI4LCA3NSwgNjUsIDgzLCA3NSwgNjUsIDIwNCwgNzUsIDY1LCA4MywgNzIsIDc3LCA3MywgODIsIAotICAgIDIwMSwgNzUsIDY1LCA4MiwgODMsIDcyLCA2NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODIsIDc5LCA4MiwgNzMsIDczLCAKLSAgICAxMjgsIDc1LCA2NSwgODIsIDIwNywgNzUsIDY1LCA4MiwgNjksIDIwNiwgNzUsIDY1LCA4MiwgNjUsIDg0LCA4NCwgNzksIAotICAgIDEyOCwgNzUsIDY1LCA4MiwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIDg1LCA3OCwgODMsIDgzLCA2NSwgCi0gICAgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MiwgNzMsIAotICAgIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MCwgNzIsIDczLCA2OSwgODUsIDgwLCAKLSAgICA3MiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDc3LCA3MywgNjksIDg1LCA3NywgMTI4LCA3NSwgNjUsIAotICAgIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDY1LCA4MCwgODAsIDE5MywgNzUsIDY1LCA4MCwgNzksIDEyOCwgNzUsIDY1LCA4MCwgCi0gICAgNzIsIDEyOCwgNzUsIDY1LCA4MCwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODAsIDY1LCAxMjgsIDc1LCA2NSwgMjA4LCA3NSwgCi0gICAgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDc1LCA2NSwgNzgsIDcxLCAxMjgsIDc1LCA2NSwgNzgsIDE5OSwgNzUsIDY1LCAKLSAgICA3OCwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc3LCA1MiwgMTI4LCA3NSwgNjUsIDc3LCA1MCwgMTI4LCA3NSwgNjUsIAotICAgIDc3LCAxMjgsIDc1LCA2NSwgNzUsIDc5LCAxMjgsIDc1LCA2NSwgNzUsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc1LCA2NSwgCi0gICAgNzUsIDEyOCwgNzUsIDY1LCAyMDMsIDc1LCA2NSwgNzMsIDg2LCAxMjgsIDc1LCA2NSwgNzMsIDg0LCA3MiwgMjAxLCA3NSwgCi0gICAgNjUsIDczLCA4MiwgNzMsIDEyOCwgNzUsIDY1LCA3MywgNjYsIDEyOCwgNzUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDIwMSwgCi0gICAgNzUsIDY1LCA3MCwgNjUsIDEyOCwgNzUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDE5OCwgNzUsIDY1LCA2OCwgNTMsIDEyOCwgCi0gICAgNzUsIDY1LCA2OCwgMTgxLCA3NSwgNjUsIDY4LCA1MiwgMTI4LCA3NSwgNjUsIDY4LCA1MSwgMTI4LCA3NSwgNjUsIDY4LCAKLSAgICAxNzksIDc1LCA2NSwgNjgsIDUwLCAxMjgsIDc1LCA2NSwgNjgsIDEyOCwgNzUsIDY1LCA2NiwgMTkzLCA3NSwgNjUsIDY2LCAKLSAgICAxMjgsIDc1LCA2NSwgNjUsIDg2LCAxMjgsIDc1LCA2NSwgNjUsIDczLCAxMjgsIDc1LCA2NSwgNjUsIDcwLCA4NSwgMTI4LCAKLSAgICA3NSwgNjUsIDY1LCA3MCwgMTI4LCA3NSwgNjUsIDY1LCA2NiwgNjUsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDEyOCwgNzUsIAotICAgIDY1LCA1MCwgMTI4LCA3NSwgNjUsIDE3OCwgNzUsIDQ4LCA0OCwgNTYsIDEyOCwgNzUsIDQ4LCA0OCwgNTUsIDEyOCwgNzUsIAotICAgIDQ4LCA0OCwgNTQsIDEyOCwgNzUsIDQ4LCA0OCwgNTMsIDEyOCwgNzUsIDQ4LCA0OCwgNTIsIDEyOCwgNzUsIDQ4LCA0OCwgCi0gICAgNTEsIDEyOCwgNzUsIDQ4LCA0OCwgNTAsIDEyOCwgNzUsIDQ4LCA0OCwgNDksIDEyOCwgNzQsIDg3LCA2NSwgMTI4LCA3NCwgCi0gICAgODUsIDg1LCAxMjgsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDg1LCA4MywgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzQsIDg1LCA4MCwgNzMsIDg0LCA2OSwgODIsIDEyOCwgNzQsIDg1LCA3OSwgODQsIDEyOCwgNzQsIAotICAgIDg1LCA3OSwgODAsIDEyOCwgNzQsIDg1LCA3OCwgNzksIDEyOCwgNzQsIDg1LCA3OCwgNjksIDEyOCwgNzQsIDg1LCA3NiwgCi0gICAgODksIDEyOCwgNzQsIDg1LCA2OSwgODUsIDczLCAxMjgsIDc0LCA4NSwgNjgsIDg1LCA3NiwgMTI4LCA3NCwgODUsIDY4LCAKLSAgICA3MSwgNjksIDEyOCwgNzQsIDg1LCA2OCwgNjksIDc5LCA0NSwgODMsIDgwLCA2NSwgNzgsIDczLCA4MywgMjAwLCA3NCwgNzksIAotICAgIDg5LCA4MywgODQsIDczLCA2NywgNzUsIDEyOCwgNzQsIDc5LCA4OSwgNzksIDg1LCAyMTEsIDc0LCA3OSwgODksIDEyOCwgCi0gICAgNzQsIDc5LCA4NiwgNjksIDEyOCwgNzQsIDc5LCAyMTIsIDc0LCA3OSwgNzgsIDcxLCAxMjgsIDc0LCA3OSwgNzgsIDE5MywgCi0gICAgNzQsIDc5LCA3NSwgNjksIDgyLCAxMjgsIDc0LCA3OSwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzQsIDc5LCA3MywgNzgsIDY5LCAKLSAgICA2OCwgMTI4LCA3NCwgNzksIDczLCA3OCwgMTI4LCA3NCwgNzksIDY1LCAxMjgsIDc0LCA3NCwgODksIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgODksIDg0LCAxMjgsIDc0LCA3NCwgODksIDgwLCAxMjgsIDc0LCA3NCwgODksIDEyOCwgNzQsIDc0LCA4NSwgODgsIAotICAgIDEyOCwgNzQsIDc0LCA4NSwgODQsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDg4LCAxMjgsIDc0LCA3NCwgODUsIDgyLCAxMjgsIAotICAgIDc0LCA3NCwgODUsIDgwLCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNzQsIDc0LCA4NSwgNzksIDEyOCwgNzQsIDc0LCA4NSwgMTI4LCA3NCwgNzQsIDc5LCA4OCwgMTI4LCA3NCwgNzQsIDc5LCAKLSAgICA4NCwgMTI4LCA3NCwgNzQsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDc5LCAxMjgsIDc0LCA3NCwgNzMsIDg4LCAxMjgsIDc0LCAKLSAgICA3NCwgNzMsIDg0LCAxMjgsIDc0LCA3NCwgNzMsIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4OCwgMTI4LCA3NCwgNzQsIAotICAgIDczLCA2OSwgODQsIDEyOCwgNzQsIDc0LCA3MywgNjksIDgwLCAxMjgsIDc0LCA3NCwgNzMsIDY5LCAxMjgsIDc0LCA3NCwgCi0gICAgNzMsIDEyOCwgNzQsIDc0LCA2OSwgNjksIDEyOCwgNzQsIDc0LCA2OSwgMTI4LCA3NCwgNzQsIDY1LCAxMjgsIDc0LCA3MywgCi0gICAgNzYsIDEyOCwgNzQsIDczLCA3MywgMTI4LCA3NCwgNzMsIDcyLCA4NiwgNjUsIDc3LCA4NSwgNzYsIDczLCA4OSwgNjUsIAotICAgIDEyOCwgNzQsIDczLCA2NSwgMTI4LCA3NCwgNzIsIDc5LCA4OCwgMTI4LCA3NCwgNzIsIDc5LCAxMjgsIDc0LCA3MiwgNjksIAotICAgIDcyLCAxMjgsIDc0LCA3MiwgNjUsIDg5LCA3MywgNzgsIDEyOCwgNzQsIDcyLCA2NSwgNzgsIDEyOCwgNzQsIDcyLCA2NSwgCi0gICAgNzcsIDEyOCwgNzQsIDcyLCA2NSwgNjUsIDEyOCwgNzQsIDcyLCA2NSwgMTI4LCA3NCwgNjksIDg1LCAxMjgsIDc0LCA2OSwgCi0gICAgODIsIDg1LCA4MywgNjUsIDc2LCA2OSwgNzcsIDEyOCwgNzQsIDY5LCA4MiwgNjUsIDIwNiwgNzQsIDY5LCA4MiwgNjUsIAotICAgIDEyOCwgNzQsIDY5LCA4MiwgMTI4LCA3NCwgNjksIDcyLCAxMjgsIDc0LCA2OSwgMjAwLCA3NCwgNjksIDcxLCA3OSwgNzEsIAotICAgIDY1LCA3OCwgMTI4LCA3NCwgNjksIDY5LCA3NywgMTI4LCA3NCwgNjksIDY1LCA3OCwgODMsIDEyOCwgNzQsIDY1LCA4OSwgCi0gICAgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDc0LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc0LCAKLSAgICA2NSwgODcsIDEyOCwgNzQsIDY1LCA4NiwgNzMsIDg5LCA2NSwgNzgsIDczLCAxMjgsIDc0LCA2NSwgODUsIDEyOCwgNzQsIAotICAgIDY1LCA4MiwgMTI4LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDY5LCA4MywgMTk3LCA3NCwgNjUsIDgwLCA2NSwgNzgsIDEyOCwgCi0gICAgNzQsIDY1LCA3OCwgODUsIDY1LCA4MiwgODksIDEyOCwgNzQsIDY1LCA3NiwgNzYsIDY1LCA3NCwgNjUsIDc2LCA2NSwgNzYsIAotICAgIDc5LCA4NSwgNzIsIDc5LCA4NSwgMTI4LCA3NCwgNjUsIDczLCAyMDYsIDc0LCA2NSwgNzMsIDEyOCwgNzQsIDY1LCA3MiwgCi0gICAgMTI4LCA3NCwgNjUsIDY4LCA2OSwgMTI4LCA3NCwgNjUsIDY3LCA3NSwgODMsIDEyOCwgNzQsIDY1LCA2NywgNzUsIDQ1LCAKLSAgICA3OSwgNDUsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc0LCA2NSwgNjcsIDIwMywgNzQsIDQ1LCA4MywgNzMsIAotICAgIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA5MCwgNzIsIDczLCA4NCwgODMsIDY1LCAxMjgsIDczLCA5MCwgCi0gICAgNzIsIDczLCA4NCwgODMsIDE5MywgNzMsIDkwLCA3MiwgNjksIDEyOCwgNzMsIDkwLCA2NSwgNzUsIDY1LCA4OSwgMTkzLCAKLSAgICA3MywgODksIDY5LCA3NSwgMTI4LCA3MywgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDczLCA4NSwgNzQsIDY1LCAxMjgsIAotICAgIDczLCA4NCwgMjExLCA3MywgODQsIDY5LCA4MiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDg0LCA2OSwgNzcsIDEyOCwgCi0gICAgNzMsIDgzLCA4MywgNzIsIDY1LCA4MiwgMTI4LCA3MywgODMsIDc5LCA4MywgNjcsIDY5LCA3NiwgNjksIDIxMSwgNzMsIDgzLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDgzLCA3OSwgMjA2LCA3MywgODMsIDc5LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgODMsIAotICAgIDc2LCA2NSwgNzgsIDY4LCAxMjgsIDczLCA4MywgNjksIDc4LCA0NSwgNzMsIDgzLCA2OSwgNzgsIDEyOCwgNzMsIDgzLCA2NSwgCi0gICAgNzUsIDczLCAxOTMsIDczLCA4MywgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNzMsIDgyLCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDc5LCA3OCwgNDUsIAotICAgIDY3LCA3OSwgODAsIDgwLCA2OSwgMjEwLCA3MywgODIsIDc5LCA3OCwgMTI4LCA3MywgODIsIDY2LCAxMjgsIDczLCA3OSwgCi0gICAgODQsIDczLCA3MCwgNzMsIDY5LCAxOTYsIDczLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIAotICAgIDEyOCwgNzMsIDc5LCA4NCwgMTkzLCA3MywgNzksIDgyLCAxMjgsIDczLCA3OSwgNjgsIDcyLCA2NSwgNjgsIDcyLCAxMjgsIAotICAgIDczLCA3OCwgODYsIDczLCA4MywgNzMsIDY2LCA3NiwgMTk3LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgNjgsIDEyOCwgCi0gICAgNzMsIDc4LCA4NiwgNjksIDgyLCA4NCwgNjksIDE5NiwgNzMsIDc4LCA4NiwgNjksIDgyLCA4MywgMTk3LCA3MywgNzgsIDg0LCAKLSAgICA4MiwgNzksIDY4LCA4NSwgNjcsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDg0LCA3MywgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDgzLCA4OSwgNzYsIDc2LCA2NSwgNjYsIDczLCAxOTUsIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIAotICAgIDY5LCA4MiwgODMsIDY5LCA2NywgODQsIDczLCA3OCwgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCAKLSAgICA3OCwgNzEsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MiwgNzksIDY2LCA2NSwgNzgsIDE5OSwgNzMsIDc4LCA4NCwgNjksIAotICAgIDgyLCA4MCwgNzksIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3OSwgNjcsIDc1LCAKLSAgICA2OSwgMTk2LCA3MywgNzgsIDg0LCA2OSwgODIsIDc2LCA3MywgNzgsIDY5LCA2NSwgMjEwLCA3MywgNzgsIDg0LCA2OSwgODIsIAotICAgIDc2LCA2NSwgNjcsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzMsIDc5LCAyMTAsIDczLCA3OCwgODQsIDY5LCA4MiwgCi0gICAgNjksIDgzLCAyMTIsIDczLCA3OCwgODQsIDY5LCA4MiwgNjcsIDY1LCA3NiwgNjUsIDg0LCA2OSwgMTI4LCA3MywgNzgsIDg0LCAKLSAgICA2OSwgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDcxLCA4MiwgNjUsIDc2LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCAKLSAgICAyMDQsIDczLCA3OCwgODMsIDg1LCA3NiwgNjUsIDIxMCwgNzMsIDc4LCA4MywgODQsIDgyLCA4NSwgNzcsIDY5LCA3OCwgODQsIAotICAgIDY1LCAyMDQsIDczLCA3OCwgODMsIDczLCA2OCwgNjksIDEyOCwgNzMsIDc4LCA4MywgNzMsIDY4LCAxOTcsIDczLCA3OCwgCi0gICAgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDgzLCA2OSwgNjcsIDg0LCAxMjgsIDczLCA3OCwgODMsIDY3LCAKLSAgICA4MiwgNzMsIDgwLCA4NCwgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNzMsIDc4LCA4MCwgODUsIDIxMiwgNzMsIDc4LCA3OCwgNzksIAotICAgIDY3LCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MywgNzgsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgCi0gICAgNzMsIDc4LCA3OCwgNjksIDIxMCwgNzMsIDc4LCA3OCwgMTI4LCA3MywgNzgsIDczLCA3OCwgNzEsIDg1LCAxMjgsIDczLCAKLSAgICA3OCwgNzMsIDEyOCwgNzMsIDc4LCA3MiwgNzMsIDY2LCA3MywgMjEyLCA3MywgNzgsIDcyLCA2OSwgODIsIDY5LCA3OCwgCi0gICAgMjEyLCA3MywgNzgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDczLCA3OCwgNzEsIDg3LCA2NSwgOTAsIDEyOCwgNzMsIDc4LCAKLSAgICA3MCwgNzksIDgyLCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNzMsIDc4LCA3MCwgNzYsIDg1LCA2OSwgNzgsIDY3LCA2OSwgCi0gICAgMTI4LCA3MywgNzgsIDcwLCA3MywgNzgsIDczLCA4NCwgODksIDEyOCwgNzMsIDc4LCA3MCwgNzMsIDc4LCA3MywgODQsIAotICAgIDIxNywgNzMsIDc4LCA2OCwgODUsIDgzLCA4NCwgODIsIDczLCA2NSwgMjA0LCA3MywgNzgsIDY4LCA3MywgODIsIDY5LCA2NywgCi0gICAgMjEyLCA3MywgNzgsIDY4LCA3MywgNjcsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCAKLSAgICA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIAotICAgIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgCi0gICAgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCAKLSAgICA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIAotICAgIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgCi0gICAgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCAKLSAgICA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgCi0gICAgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKLSAgICA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIAotICAgIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgCi0gICAgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCAKLSAgICA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgCi0gICAgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCAKLSAgICA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIAotICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgCi0gICAgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCAKLSAgICA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIAotICAgIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgCi0gICAgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgCi0gICAgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIAotICAgIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCAKLSAgICA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgCi0gICAgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCAKLSAgICA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgCi0gICAgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCAKLSAgICA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgCi0gICAgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIAotICAgIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKLSAgICA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKLSAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU3LCA0OCwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNjgsIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTYsIDY3LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU2LCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNjgsIDUyLCAKLSAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDY1LCA1NSwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1NywgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTQsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTUsIDUzLCA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU1LCA1MywgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNDksIDUwLCAKLSAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDQ4LCA2NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA3MCwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNjksIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDU1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1NSwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCAKLSAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDU0LCA1MCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTQsIDUzLCA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDU0LCA1MSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDQ4LCAKLSAgICA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1NywgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MCwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDcwLCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA2OCwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjYsIDU2LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDY2LCA1MywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDU2LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTIsIDUxLCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUyLCA0OCwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MSwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTMsIDUwLCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUzLCA1MCwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDUyLCAKLSAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUwLCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA0OSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCi0gICAgODAsIDcyLCA0NSwgNTIsIDY5LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAotICAgIDUyLCA2OSwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDQ4LCAKLSAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDY1LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIAotICAgIDQ4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDcwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDY1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUyLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUxLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDUwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU3LCA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIAotICAgIDQ4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA3MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA2NSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDY1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU3LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU2LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDQ5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNDgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDU2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU1LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDcwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU0LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTMsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTQsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjcsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDUyLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTEsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY2LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjUsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTIsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUwLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNDksIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA0OCwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDQ4LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNzAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDUwLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU1LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTQsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY5LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjgsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NywgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUzLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTIsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY3LCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjYsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgCi0gICAgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIAotICAgIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCAKLSAgICA0NSwgNTAsIDcwLCA1NiwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgCi0gICAgNzAsIDU2LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIAotICAgIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUxLCAKLSAgICAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTAsIDEyOCwgNzMsIAotICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCAKLSAgICA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDcwLCA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNzMsIDY3LCA3OSwgNzgsIDEyOCwgNzMsIDY3LCA3MiwgNzksIDg1LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4MywgCi0gICAgMTI4LCA3MywgNjcsIDcyLCA3MywgNzcsIDY1LCA4NCwgNzksIDgzLCAxMjgsIDczLCA2NywgNzIsIDY1LCA2OCwgNzMsIDc4LCAKLSAgICAxMjgsIDczLCA2NywgNjksIDc2LCA2NSwgNzgsIDY4LCA3MywgNjcsIDQ1LCA4OSwgODIsIDEyOCwgNzMsIDY2LCA3MywgNzAsIAotICAgIDczLCA3NiwgNzMsIDEyOCwgNzMsIDY1LCA4NSwgNjgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDUzLCAxMjgsIDczLCA0OCwgCi0gICAgNDksIDUyLCAxMjgsIDczLCA0OCwgNDksIDUxLCAxMjgsIDczLCA0OCwgNDksIDUwLCAxMjgsIDczLCA0OCwgNDksIDQ5LCAKLSAgICA2NSwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgMTI4LCA3MywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDgsIAotICAgIDEyOCwgNzMsIDQ4LCA0OCwgNTcsIDY1LCAxMjgsIDczLCA0OCwgNDgsIDU3LCAxMjgsIDczLCA0OCwgNDgsIDU2LCAxMjgsIAotICAgIDczLCA0OCwgNDgsIDU1LCAxMjgsIDczLCA0OCwgNDgsIDU0LCAxMjgsIDczLCA0OCwgNDgsIDUzLCA2NSwgMTI4LCA3MywgCi0gICAgNDgsIDQ4LCA1MywgMTI4LCA3MywgNDgsIDQ4LCA1MiwgMTI4LCA3MywgNDgsIDQ4LCA1MSwgMTI4LCA3MywgNDgsIDQ4LCAKLSAgICA1MCwgMTI4LCA3MywgNDgsIDQ4LCA0OSwgMTI4LCA3MywgNDUsIDg5LCA4NSwgMTI4LCA3MywgNDUsIDg5LCA3OSwgMTI4LCAKLSAgICA3MywgNDUsIDg5LCA2OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDY5LCAxMjgsIAotICAgIDczLCA0NSwgODksIDY1LCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjUsIDEyOCwgNzMsIDQ1LCA3OSwgNDUsIDczLCAKLSAgICAxMjgsIDczLCA0NSwgNzksIDEyOCwgNzMsIDQ1LCA2OSwgODUsIDEyOCwgNzMsIDQ1LCA2NiwgNjksIDY1LCA3NywgMTI4LCAKLSAgICA3MywgNDUsIDY1LCA4MiwgNjUsIDY5LCA2NSwgMTI4LCA3MywgNDUsIDY1LCAxMjgsIDcyLCA5MCwgOTAsIDkwLCA3MSwgCi0gICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDkwLCA4MCwgMTI4LCA3MiwgOTAsIDkwLCAxMjgsIDcyLCA5MCwgCi0gICAgODcsIDcxLCAxMjgsIDcyLCA5MCwgODcsIDEyOCwgNzIsIDkwLCA4NCwgMTI4LCA3MiwgOTAsIDcxLCAxMjgsIDcyLCA4OSwgCi0gICAgODMsIDg0LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNzIsIDg5LCA4MCwgNzksIDY4LCA3MywgNjUsIDgzLCA4NCwgNzksIAotICAgIDc2LCA2OSwgMTI4LCA3MiwgODksIDgwLCA3MiwgNjksIDc4LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MiwgODksIDgwLCA3MiwgCi0gICAgNjksIDc4LCA0NSwgNzcsIDczLCA3OCwgODUsIDgzLCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgNzgsIDEyOCwgNzIsIDg5LCAKLSAgICA4MCwgNzIsIDY5LCAyMDYsIDcyLCA4OSwgNzEsIDczLCA2OSwgNzMsIDY1LCAxMjgsIDcyLCA4OCwgODcsIDcxLCAxMjgsIAotICAgIDcyLCA4OCwgODUsIDc5LCA4OCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDgwLCAKLSAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCAxMjgsIDcyLCA4OCwgNzksIDg4LCAxMjgsIDcyLCA4OCwgNzksIDg0LCAxMjgsIDcyLCAKLSAgICA4OCwgNzksIDgwLCAxMjgsIDcyLCA4OCwgNzksIDEyOCwgNzIsIDg4LCA3MywgODgsIDEyOCwgNzIsIDg4LCA3MywgODQsIAotICAgIDEyOCwgNzIsIDg4LCA3MywgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4NCwgCi0gICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDg4LCA3MywgNjksIDEyOCwgNzIsIDg4LCA3MywgMTI4LCA3MiwgCi0gICAgODgsIDY5LCA4OCwgMTI4LCA3MiwgODgsIDY5LCA4MCwgMTI4LCA3MiwgODgsIDY5LCAxMjgsIDcyLCA4OCwgNjUsIDg4LCAKLSAgICAxMjgsIDcyLCA4OCwgNjUsIDg0LCAxMjgsIDcyLCA4OCwgNjUsIDgwLCAxMjgsIDcyLCA4OCwgNjUsIDEyOCwgNzIsIDg3LCAKLSAgICA4NSwgMTI4LCA3MiwgODcsIDY1LCA3MywgODIsIDEyOCwgNzIsIDg3LCA2NSwgNzIsIDEyOCwgNzIsIDg2LCAxMjgsIDcyLCAKLSAgICA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgMTI4LCA3MiwgODUsIAotICAgIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCA2OSwgNjgsIDgzLCAKLSAgICAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIAotICAgIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgCi0gICAgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCAKLSAgICA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCAKLSAgICA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIAotICAgIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgCi0gICAgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCAKLSAgICA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgCi0gICAgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgCi0gICAgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAKLSAgICAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIAotICAgIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIAotICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCAKLSAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgCi0gICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIAotICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgCi0gICAgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAotICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKLSAgICA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCi0gICAgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAotICAgIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKLSAgICA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCi0gICAgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIAotICAgIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCAKLSAgICA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgCi0gICAgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIAotICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgCi0gICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIAotICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCAKLSAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgCi0gICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAotICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKLSAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCi0gICAgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCAKLSAgICA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCAKLSAgICA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIAotICAgIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgCi0gICAgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCAKLSAgICA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIAotICAgIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgCi0gICAgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCAKLSAgICA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIAotICAgIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgCi0gICAgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgCi0gICAgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCAKLSAgICA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIAotICAgIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIAotICAgIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgCi0gICAgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAKLSAgICAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCAKLSAgICA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIAotICAgIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgCi0gICAgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgCi0gICAgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAKLSAgICAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIAotICAgIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIAotICAgIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgCi0gICAgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgCi0gICAgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCAKLSAgICA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIAotICAgIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgCi0gICAgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgCi0gICAgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCAKLSAgICA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCAKLSAgICA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIAotICAgIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCAKLSAgICA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIAotICAgIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgCi0gICAgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCAKLSAgICA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgCi0gICAgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCAKLSAgICA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIAotICAgIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIAotICAgIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgCi0gICAgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAKLSAgICAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIAotICAgIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDcyLCA3MiwgODcsIDY1LCAxMjgsIDcyLCA3MiwgCi0gICAgODUsIDEyOCwgNzIsIDcyLCA3MywgMTI4LCA3MiwgNzIsIDY5LCA2OSwgMTI4LCA3MiwgNzIsIDY5LCAxMjgsIDcyLCA3MiwgCi0gICAgNjUsIDY1LCAxMjgsIDcyLCA3MSwgMTI4LCA3MiwgNjksIDg5LCA4NCwgMTI4LCA3MiwgNjksIDg4LCA3MywgNzAsIDc5LCAKLSAgICA4MiwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDgyLCA2NSwgMjA1LCA3MiwgNjksIDg4LCA2NSwgNzEsIDc5LCA3OCwgCisgICAgNzYsIDg5LCA3MywgODQsIDEyOCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzYsIDg5LCA2OCwgNzMsIDY1LCAyMDYsIDc2LCAKKyAgICA4OSwgNjcsIDczLCA2NSwgMjA2LCA3NiwgODgsIDEyOCwgNzYsIDg3LCA3OSwgNzksIDEyOCwgNzYsIDg3LCA3OSwgMTI4LCAKKyAgICA3NiwgODcsIDczLCA3MywgMTI4LCA3NiwgODcsIDczLCAxMjgsIDc2LCA4NywgNjksIDEyOCwgNzYsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzYsIDg3LCA2NSwgMTI4LCA3NiwgODUsIDg4LCAxMjgsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDg1LCA4NCwgMTI4LCAKKyAgICA3NiwgODUsIDgyLCA4OCwgMTI4LCA3NiwgODUsIDgwLCAxMjgsIDc2LCA4NSwgNzksIDg4LCAxMjgsIDc2LCA4NSwgNzksIAorICAgIDg0LCAxMjgsIDc2LCA4NSwgNzksIDgwLCAxMjgsIDc2LCA4NSwgNzksIDEyOCwgNzYsIDg1LCA3OCwgNzEsIDgzLCA3MywgCisgICAgMTI4LCA3NiwgODUsIDc4LCA2NSwgODQsIDE5NywgNzYsIDg1LCAyMDUsIDc2LCA4NSwgNzYsIDEyOCwgNzYsIDg1LCA3MywgCisgICAgODMsIDEyOCwgNzYsIDg1LCA3MiwgODUsIDgyLCAxMjgsIDc2LCA4NSwgNzIsIDEyOCwgNzYsIDg1LCAyMDAsIDc2LCA4NSwgCisgICAgNzEsIDcxLCA2NSwgNzEsIDY5LCAxMjgsIDc2LCA4NSwgNzEsIDY1LCA3NiwgMTI4LCA3NiwgODUsIDcxLCA2NSwgMjA0LCAKKyAgICA3NiwgODUsIDY5LCAxMjgsIDc2LCA4NSwgMTk3LCA3NiwgODUsIDY2LCAxMjgsIDc2LCA4NSwgNjUsIDY5LCA4MCwgMTI4LCAKKyAgICA3NiwgODUsIDUxLCAxMjgsIDc2LCA4NSwgNTAsIDEyOCwgNzYsIDg1LCAxNzgsIDc2LCA4MiwgNzksIDEyOCwgNzYsIDgyLCAKKyAgICA3NywgMTI4LCA3NiwgODIsIDczLCAxMjgsIDc2LCA4MiwgNjksIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgNjksIAorICAgIDEyOCwgNzYsIDc5LCA5MCwgNjksIDc4LCA3MSwgMTk3LCA3NiwgNzksIDg4LCAxMjgsIDc2LCA3OSwgODcsIDY5LCA4MiwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA4NywgNjksIDIxMCwgNzYsIDc5LCA4NywgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCAKKyAgICA2OCwgNDUsIDE4NSwgNzYsIDc5LCA4NywgNDUsIDc3LCA3MywgMTk2LCA3NiwgNzksIDg3LCA0NSwgNzAsIDY1LCA3NiwgNzYsIAorICAgIDczLCA3OCwgMTk5LCA3NiwgNzksIDg3LCA0NSwgMTg1LCA3NiwgNzksIDg2LCAxOTcsIDc2LCA3OSwgODUsIDgyLCA2OSwgCisgICAgMTI4LCA3NiwgNzksIDg1LCA2OCwgODMsIDgwLCA2OSwgNjUsIDc1LCA2OSwgODIsIDEyOCwgNzYsIDc5LCA4NSwgNjgsIDc2LCAKKyAgICAyMTcsIDc2LCA3OSwgODQsIDg1LCA4MywgMTI4LCA3NiwgNzksIDg0LCAxMjgsIDc2LCA3OSwgODMsIDgzLCA3NiwgNjksIAorICAgIDgzLCA4MywgMTI4LCA3NiwgNzksIDgyLCA4MiwgODksIDEyOCwgNzYsIDc5LCA4MiwgODIsIDY1LCA3MywgNzgsIDY5LCAKKyAgICAxMjgsIDc2LCA3OSwgODEsIDEyOCwgNzYsIDc5LCA4MCwgMTI4LCA3NiwgNzksIDc5LCA4NCwgMTI4LCA3NiwgNzksIDc5LCAKKyAgICA4MCwgNjksIDE5NiwgNzYsIDc5LCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3OSwgMjA4LCA3NiwgNzksIDc5LCA3OCwgMTI4LCAKKyAgICA3NiwgNzksIDc5LCAyMDMsIDc2LCA3OSwgNzksIDEyOCwgNzYsIDc5LCA3OCwgODMsIDg1LCA3NywgMTI4LCA3NiwgNzksIAorICAgIDc4LCA3MSwgNjUsIDEyOCwgNzYsIDc5LCA3OCwgNzEsIDE5MywgNzYsIDc5LCA3OCwgNzEsIDQ1LCA3NiwgNjksIDcxLCA3MSwgCisgICAgNjksIDE5NiwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA0NSwgODksIDgyLCAxMjgsIDc2LCAKKyAgICA3OSwgNzgsIDcxLCA0NSwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgNDUsIDgzLCA3OSwgMjA0LCA3NiwgNzksIDc4LCA3MSwgCisgICAgNDUsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDQ1LCA3OSwgODMsIDIxMSwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIAorICAgIDY1LCA3OCwgNjcsIDcyLCA0NSwgNzcsIDY1LCA2OCwgMjEwLCA3NiwgNzksIDc4LCA3MSwgNDUsIDY2LCA4MiwgNjUsIDc4LCAKKyAgICA2NywgNzIsIDQ1LCA3MiwgNjUsIDcxLCA2NSwgNzYsIDIwNCwgNzYsIDc5LCA3OCwgNzEsIDQ1LCA2NiwgODIsIDY1LCA3OCwgCisgICAgNjcsIDcyLCA0NSwgNjUsIDIxMCwgNzYsIDc5LCA3NywgNzcsIDY1LCA2OSwgMTI4LCA3NiwgNzksIDc3LCAxMjgsIDc2LCAKKyAgICA3OSwgMjA1LCA3NiwgNzksIDc2LCA3NiwgNzMsIDgwLCA3OSwgODAsIDEyOCwgNzYsIDc5LCA3NiwgNzYsIDEyOCwgNzYsIAorICAgIDc5LCA3MSwgMjEwLCA3NiwgNzksIDcxLCA3OSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNzksIDcxLCA3OSwgNzEsIDgyLCA2NSwgCisgICAgMjA1LCA3NiwgNzksIDcxLCAxMjgsIDc2LCA3OSwgNjgsIDY5LCA4MywgODQsIDc5LCA3OCwgNjksIDEyOCwgNzYsIDc5LCAKKyAgICA2NywgNzksIDc3LCA3OSwgODQsIDczLCA4NiwgNjksIDEyOCwgNzYsIDc5LCA2NywgNzUsIDczLCA3OCwgNzEsIDQ1LCA4MywgCisgICAgNzIsIDczLCA3MCwgMjEyLCA3NiwgNzksIDY3LCAyMDMsIDc2LCA3OSwgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCAKKyAgICA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgCisgICAgNzYsIDc5LCA2NywgNjUsIDg0LCA3MywgNzksIDc4LCA0NSwgNzAsIDc2LCA3OSwgNzksIDgyLCA4MCwgNzYsIDY1LCA3OCwgCisgICAgMTk3LCA3NiwgNzksIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3NiwgNzksIDY1LCAxMjgsIDc2LCA3OCwgMTI4LCA3NiwgCisgICAgNzYsIDg1LCA4NSwgMTI4LCA3NiwgNzYsIDc5LCA3OSwgMTI4LCA3NiwgNzYsIDc2LCA4NSwgODUsIDEyOCwgNzYsIDc2LCAKKyAgICA3NiwgODUsIDEyOCwgNzYsIDc2LCA3NiwgNzksIDc5LCAxMjgsIDc2LCA3NiwgNzYsIDc5LCAxMjgsIDc2LCA3NiwgNzYsIAorICAgIDczLCA3MywgMTI4LCA3NiwgNzYsIDc2LCA3MywgMTI4LCA3NiwgNzYsIDc2LCA2OSwgNjksIDEyOCwgNzYsIDc2LCA3NiwgCisgICAgNjksIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDg1LCAxMjgsIDc2LCA3NiwgNzYsIDY1LCA3MywgMTI4LCA3NiwgNzYsIDc2LCAKKyAgICA2NSwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgNjUsIDEyOCwgNzYsIDc2LCA3NiwgMTI4LCA3NiwgNzQsIDg1LCA2OCwgNzMsIAorICAgIDc0LCA2OSwgMTI4LCA3NiwgNzQsIDY5LCAxMjgsIDc2LCA3NCwgMTI4LCA3NiwgNzMsIDkwLCA2NSwgODIsIDY4LCAxMjgsIAorICAgIDc2LCA3MywgODgsIDEyOCwgNzYsIDczLCA4NywgNzgsIDEyOCwgNzYsIDczLCA4NiwgODIsIDE5NywgNzYsIDczLCA4NCwgCisgICAgODQsIDc2LCA2OSwgMTI4LCA3NiwgNzMsIDg0LCA4NCwgNzYsIDE5NywgNzYsIDczLCA4NCwgODQsIDY5LCAyMTAsIDc2LCAKKyAgICA3MywgODQsIDgyLCAxOTMsIDc2LCA3MywgODQsIDIwMCwgNzYsIDczLCA4MywgMjEzLCA3NiwgNzMsIDgzLCAxMjgsIDc2LCAKKyAgICA3MywgODIsIDE5MywgNzYsIDczLCA4MSwgODUsIDczLCAxOTYsIDc2LCA3MywgODEsIDEyOCwgNzYsIDczLCA4MCwgODMsIAorICAgIDg0LCA3MywgNjcsIDc1LCAxMjgsIDc2LCA3MywgODAsIDIxMSwgNzYsIDczLCAyMDgsIDc2LCA3MywgNzgsIDc1LCA3MywgCisgICAgNzgsIDE5OSwgNzYsIDczLCA3OCwgNzUsIDY5LCAxOTYsIDc2LCA3MywgNzgsIDIwMywgNzYsIDczLCA3OCwgNzEsIDgzLCAKKyAgICA2NSwgMTI4LCA3NiwgNzMsIDc4LCA2OSwgODMsIDEyOCwgNzYsIDczLCA3OCwgNjksIDIxMSwgNzYsIDczLCA3OCwgNjksIAorICAgIDQ1LCA1NywgMTI4LCA3NiwgNzMsIDc4LCA2OSwgNDUsIDU1LCAxMjgsIDc2LCA3MywgNzgsIDY5LCA0NSwgNTEsIDEyOCwgCisgICAgNzYsIDczLCA3OCwgNjksIDQ1LCA0OSwgMTI4LCA3NiwgNzMsIDc3LCA3NywgODUsIDUyLCAxMjgsIDc2LCA3MywgNzcsIDc3LCAKKyAgICA4NSwgNTAsIDEyOCwgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDc2LCA3MywgNzcsIDc3LCAyMTMsIDc2LCA3MywgNzcsIAorICAgIDczLCA4NCwgNjksIDE5NiwgNzYsIDczLCA3NywgNzMsIDg0LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzYsIDczLCA3NywgCisgICAgNzMsIDg0LCAxMjgsIDc2LCA3MywgNzcsIDY5LCAxMjgsIDc2LCA3MywgNzcsIDY2LCAyMTMsIDc2LCA3MywgNzcsIDY2LCAKKyAgICAyMTEsIDc2LCA3MywgNzcsIDE5NCwgNzYsIDczLCA3NiwgODksIDEyOCwgNzYsIDczLCA3NiwgNzMsIDg0LCA3MiwgMTI4LCAKKyAgICA3NiwgNzMsIDc2LCAxMjgsIDc2LCA3MywgNzEsIDcyLCA4NCwgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCA3OCwgNzMsIDc4LCAxOTksIDc2LCA3MywgNzEsIDcyLCA4NCwgNzIsIDc5LCA4NSwgODMsIDY5LCAxMjgsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgMTI4LCA3NiwgNzMsIDcxLCA2NSwgODQsIDczLCA3OCwgMTk5LCA3NiwgNzMsIDcwLCA4NCwgNjksIDgyLCAKKyAgICAxMjgsIDc2LCA3MywgNzAsIDY5LCAxMjgsIDc2LCA3MywgNjksIDg4LCAxMjgsIDc2LCA3MywgNjksIDg0LCAxMjgsIDc2LCAKKyAgICA3MywgNjksIDgwLCAxMjgsIDc2LCA3MywgNjksIDY5LCAxMjgsIDc2LCA3MywgNjksIDEyOCwgNzYsIDczLCA2OCwgMTI4LCAKKyAgICA3NiwgNzMsIDY3LCA3NSwgNzMsIDc4LCAxOTksIDc2LCA3MywgNjYsIDgyLCA2NSwgMTI4LCA3NiwgNzMsIDY2LCA2OSwgODIsIAorICAgIDg0LCA4OSwgMTI4LCA3NiwgNzMsIDY1LCA2NiwgNzMsIDc2LCA3MywgODQsIDIxNywgNzYsIDcyLCA3MywgNzMsIDEyOCwgCisgICAgNzYsIDcyLCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3NiwgNzIsIDY1LCAxOTksIDc2LCA3MiwgNjUsIDY1LCAKKyAgICAxMjgsIDc2LCA3MiwgMTI4LCA3NiwgNjksIDkwLCA3MiwgMTI4LCA3NiwgNjksIDg4LCAxMjgsIDc2LCA2OSwgODYsIDczLCAKKyAgICA4NCwgNjUsIDg0LCA3MywgNzgsIDcxLCAxMjgsIDc2LCA2OSwgODUsIDc3LCAxMjgsIDc2LCA2OSwgODUsIDY1LCA2OSwgODAsIAorICAgIDEyOCwgNzYsIDY5LCA4NSwgNjUsIDY5LCA3NywgMTI4LCA3NiwgNjksIDg1LCAxMjgsIDc2LCA2OSwgMjEzLCA3NiwgNjksIAorICAgIDg0LCA4NCwgNjksIDgyLCA4MywgMTI4LCA3NiwgNjksIDg0LCA4NCwgNjksIDgyLCAxMjgsIDc2LCA2OSwgMjEyLCA3NiwgCisgICAgNjksIDgzLCA4MywgNjksIDIxMCwgNzYsIDY5LCA4MywgODMsIDQ1LCA4NCwgNzIsIDY1LCA3OCwgMTI4LCA3NiwgNjksIDgzLCAKKyAgICA4MywgNDUsIDg0LCA3MiwgNjUsIDIwNiwgNzYsIDY5LCA4MCwgNjcsIDcyLCAxOTMsIDc2LCA2OSwgODAsIDEyOCwgNzYsIAorICAgIDY5LCA3OSwgODAsIDY1LCA4MiwgNjgsIDEyOCwgNzYsIDY5LCA3OSwgMTI4LCA3NiwgNjksIDc4LCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzYsIDY1LCAyMTAsIDc2LCA2OSwgNzgsIDczLCA4MywgMTI4LCA3NiwgNjksIDc4LCA3MywgMjExLCA3NiwgNjksIDc4LCAKKyAgICA3MSwgODQsIDcyLCA2OSwgNzgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTUsIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDU0LCAxMjgsIDc2LCA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MywgMTI4LCA3NiwgCisgICAgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNTIsIDEyOCwgNzYsIDY5LCA3OCwgNzEsIDg0LCA3MiwgNDUsIDUxLCAxMjgsIDc2LCAKKyAgICA2OSwgNzgsIDcxLCA4NCwgNzIsIDQ1LCA1MCwgMTI4LCA3NiwgNjksIDc4LCA3MSwgODQsIDcyLCA0NSwgNDksIDEyOCwgNzYsIAorICAgIDY5LCA3OCwgNzEsIDg0LCAyMDAsIDc2LCA2OSwgNzgsIDcxLCA2NSwgMTI4LCA3NiwgNjksIDc4LCA3MSwgMTkzLCA3NiwgCisgICAgNjksIDc3LCA3OSwgNzgsIDEyOCwgNzYsIDY5LCA3NywgNzksIDczLCAxMjgsIDc2LCA2OSwgNzYsIDY5LCA4NCwgMTI4LCAKKyAgICA3NiwgNjksIDc2LCA2OSwgMjEyLCA3NiwgNjksIDIwMywgNzYsIDY5LCA3MywgNzcsIDc3LCA2NSwgMTI4LCA3NiwgNjksIAorICAgIDczLCA3NywgNzcsIDE5MywgNzYsIDY5LCA3MywgMTI4LCA3NiwgNjksIDcxLCA4MywgMTI4LCA3NiwgNjksIDcxLCA3MywgCisgICAgNzksIDc4LCAxMjgsIDc2LCA2OSwgNzEsIDY5LCA4NCwgNzksIDIxMSwgNzYsIDY5LCA3MSwgMTI4LCA3NiwgNjksIDE5OSwgCisgICAgNzYsIDY5LCA3MCwgODQsIDg3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA3NiwgNjksIDcwLCA4NCwgNDUsIDg0LCA3OSwgNDUsIAorICAgIDgyLCA3MywgNzEsIDcyLCAyMTIsIDc2LCA2OSwgNzAsIDg0LCA0NSwgODMsIDg0LCA2OSwgMjA1LCA3NiwgNjksIDcwLCA4NCwgCisgICAgNDUsIDgzLCA3MywgNjgsIDE5NywgNzYsIDY5LCA3MCwgODQsIDQ1LCA4MywgNzIsIDY1LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA4MCwgNzksIDczLCA3OCwgODQsIDczLCA3OCwgMTk5LCA3NiwgNjksIDcwLCA4NCwgNDUsIDc2LCA3MywgCisgICAgNzEsIDcyLCA4NCwgNjksIDE5NiwgNzYsIDY5LCA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCA2OCwgNjksIDE5NiwgNzYsIDY5LCAKKyAgICA3MCwgODQsIDQ1LCA3MiwgNjUsIDc4LCAxOTYsIDc2LCA2OSwgNzAsIDg0LCA0NSwgNzAsIDY1LCA2NywgNzMsIDc4LCAxOTksIAorICAgIDc2LCA2OSwgNzAsIDg0LCAxMjgsIDc2LCA2OSwgNjksIDgyLCA2NSwgNjksIDg3LCA2NSwgMTI4LCA3NiwgNjksIDY5LCA3NSwgCisgICAgMTI4LCA3NiwgNjksIDY5LCA2OSwgNjksIDEyOCwgNzYsIDY5LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAKKyAgICA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCA3MCwgMTI4LCA3NiwgNjksIDY1LCAxOTgsIDc2LCA2OSwgNjUsIAorICAgIDY4LCA3MywgNzgsIDE5OSwgNzYsIDY5LCA2NSwgNjgsIDY5LCA4MiwgMTI4LCA3NiwgNjksIDY1LCAxOTYsIDc2LCA2OCwgCisgICAgNjUsIDc4LCAxMjgsIDc2LCA2OCwgNTAsIDEyOCwgNzYsIDY3LCAyMDEsIDc2LCA2NywgMTk3LCA3NiwgNjUsIDkwLCAyMTcsIAorICAgIDc2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDc2LCA2NSwgODgsIDEyOCwgNzYsIDY1LCA4NywgMTI4LCA3NiwgCisgICAgNjUsIDIxNSwgNzYsIDY1LCA4NSwgNzYsIDY1LCAxMjgsIDc2LCA2NSwgODUsIDc1LCA2NSwgMjE4LCA3NiwgNjUsIDg1LCAKKyAgICA3NCwgMTI4LCA3NiwgNjUsIDg1LCA3MSwgNzIsIDczLCA3OCwgNzEsIDEyOCwgNzYsIDY1LCA4NCwgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzYsIDY1LCA4NCwgNzMsIDc1LCAxMjgsIDc2LCA2NSwgODQsIDY5LCA4MiwgNjUsIDIwNCwgNzYsIDY1LCA4NCwgCisgICAgMTk3LCA3NiwgNjUsIDgzLCAyMTIsIDc2LCA2NSwgODIsIDg5LCA3OCwgNzEsIDY5LCA2NSwgMjA0LCA3NiwgNjUsIDgyLCAKKyAgICAyMDEsIDc2LCA2NSwgODIsIDcxLCA2OSwgODMsIDg0LCAxMjgsIDc2LCA2NSwgODIsIDcxLCA2OSwgMjEwLCA3NiwgNjUsIAorICAgIDgyLCA3MSwgNjksIDEyOCwgNzYsIDY1LCA4MiwgNzEsIDE5NywgNzYsIDY1LCA4MSwgMTI4LCA3NiwgNjUsIDgwLCA2NSwgCisgICAgODEsIDEyOCwgNzYsIDY1LCAyMDcsIDc2LCA2NSwgNzgsIDg0LCA2OSwgODIsIDc4LCAxMjgsIDc2LCA2NSwgNzgsIDcxLCAKKyAgICA4NSwgNjUsIDcxLCAxOTcsIDc2LCA2NSwgNzgsIDY5LCA4MywgMTI4LCA3NiwgNjUsIDc4LCAxMjgsIDc2LCA2NSwgNzcsIAorICAgIDgwLCAxMjgsIDc2LCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNzYsIDY1LCA3NywgNjksIDY4LCAxMjgsIDc2LCA2NSwgCisgICAgNzcsIDY5LCAxOTYsIDc2LCA2NSwgNzcsIDY5LCAxMjgsIDc2LCA2NSwgNzcsIDE5NywgNzYsIDY1LCA3NywgNjgsIDY1LCAKKyAgICAxMjgsIDc2LCA2NSwgNzcsIDY4LCAxMjgsIDc2LCA2NSwgNzcsIDY2LCA2OCwgMTkzLCA3NiwgNjUsIDc3LCA2NSwgNjgsIAorICAgIDcyLCAxMjgsIDc2LCA2NSwgNzYsIDEyOCwgNzYsIDY1LCAyMDQsIDc2LCA2NSwgNzUsIDc1LCA3MiwgNjUsIDc4LCA3MSwgCisgICAgODksIDY1LCA3OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUyLCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTUsIDUwLCAKKyAgICA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDU0LCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCA1NiwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTQsIDUyLCAxODQsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDc2LCAKKyAgICA2NSwgNzUsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA1NCwgNDksIDE4MywgNzYsIDY1LCA3NSwgNDUsIAorICAgIDU0LCA0OCwgNTYsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUzLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgCisgICAgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTEsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNTAsIAorICAgIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NiwgNTEsIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDUyLCA1NSwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MywgNTUsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDUyLCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDUyLCA1MiwgNTcsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDUyLCA1MiwgMTg1LCA3NiwgNjUsIDc1LCA0NSwgNTIsIDUyLCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU3LCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDU2LCA1MSwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNTEsIDUyLCA1MSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDU0LCA1NCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNTAsIDU0LCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUxLCA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCAKKyAgICA1NiwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA1MywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDUwLCA0OCwgCisgICAgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA1NywgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNTAsIDQ5LCA0OCwgMTI4LCAKKyAgICA3NiwgNjUsIDc1LCA0NSwgNDksIDUyLCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDksIDUxLCA0OCwgMTI4LCA3NiwgNjUsIAorICAgIDc1LCA0NSwgNDgsIDU3LCA1MCwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgNDgsIDU2LCA0OSwgMTI4LCA3NiwgNjUsIDc1LCA0NSwgCisgICAgNDgsIDU2LCAxNzcsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTYsIDQ4LCAxMjgsIDc2LCA2NSwgNzUsIDQ1LCA0OCwgNTUsIAorICAgIDE4NSwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1NCwgNTAsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDksIDEyOCwgCisgICAgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MywgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MSwgNDgsIDEyOCwgNzYsIDY1LCAKKyAgICA3NSwgNDUsIDQ4LCA1MCwgNTMsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA1MCwgNDksIDEyOCwgNzYsIDY1LCA3NSwgNDUsIAorICAgIDQ4LCA1MCwgNDgsIDEyOCwgNzYsIDY1LCA3NSwgNDUsIDQ4LCA0OCwgNTEsIDEyOCwgNzYsIDY1LCA3NCwgNjUsIDc4LCA4OSwgCisgICAgNjUsIDc2LCA2NSwgNzgsIDEyOCwgNzYsIDY1LCA3MywgNzgsIDE5OSwgNzYsIDY1LCAyMDEsIDc2LCA2NSwgNzIsIDgzLCAKKyAgICA3MiwgODUsIDEyOCwgNzYsIDY1LCA3MiwgMTI4LCA3NiwgNjUsIDcxLCA4NSwgODMsIDEyOCwgNzYsIDY1LCA3MSwgMjEzLCAKKyAgICA3NiwgNjUsIDcxLCA2NSwgODIsIDEyOCwgNzYsIDY1LCA3MSwgNjUsIDIxMCwgNzYsIDY1LCA3MSwgNjUsIDY2LCAxMjgsIAorICAgIDc2LCA2NSwgNzEsIDY1LCAxOTQsIDc2LCA2NSwgNjksIDg2LCAxMjgsIDc2LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2OCwgCisgICAgMjE3LCA3NiwgNjUsIDY3LCA3NSwgMTI4LCA3NiwgNjUsIDY3LCA2NSwgMTI4LCA3NiwgNjUsIDY2LCA3OSwgODUsIDgyLCAKKyAgICA3MywgNzgsIDcxLCAxMjgsIDc2LCA2NSwgNjYsIDc5LCA4MiwgMTI4LCA3NiwgNjUsIDY2LCA3MywgNjUsIDc2LCA3MywgOTAsIAorICAgIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDc2LCA2NSwgNjYsIDczLCA2NSwgMjA0LCA3NiwgNjUsIDY2LCA2OSwgNzYsIDEyOCwgCisgICAgNzYsIDY1LCA2NiwgNjUsIDg0LCAxMjgsIDc2LCA2NSwgNjUsIDc4LCA2NSwgNjksIDEyOCwgNzYsIDY1LCA2NSwgNzgsIAorICAgIDEyOCwgNzYsIDY1LCA2NSwgNzcsIDg1LCAxMjgsIDc2LCA2NSwgNjUsIDc3LCAxMjgsIDc2LCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDc2LCA1NCwgMTI4LCA3NiwgNTIsIDEyOCwgNzYsIDUxLCAxMjgsIDc2LCA1MCwgMTI4LCA3NiwgNDgsIDQ4LCA1NCwgNjUsIAorICAgIDEyOCwgNzYsIDQ4LCA0OCwgNTAsIDY1LCAxMjgsIDc2LCA0NSwgODQsIDg5LCA4MCwgMTk3LCA3NiwgNDUsIDgzLCA3MiwgCisgICAgNjUsIDgwLCA2OSwgMTk2LCA3NSwgODksIDg1LCA4MiwgNzMsIDczLCAxMjgsIDc1LCA4OSwgODUsIDEyOCwgNzUsIDg5LCAKKyAgICA3OSwgMTI4LCA3NSwgODksIDc2LCA3MywgODMsIDc3LCA2NSwgMTI4LCA3NSwgODksIDczLCAxMjgsIDc1LCA4OSwgNjksIAorICAgIDEyOCwgNzUsIDg5LCA2NSwgODQsIDcyLCA3OSwgMjExLCA3NSwgODksIDY1LCA2NSwgMTI4LCA3NSwgODksIDY1LCAxMjgsIAorICAgIDc1LCA4OCwgODcsIDczLCAxMjgsIDc1LCA4OCwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODgsIDg3LCA2OSwgMTI4LCA3NSwgCisgICAgODgsIDg3LCA2NSwgNjUsIDEyOCwgNzUsIDg4LCA4NywgNjUsIDEyOCwgNzUsIDg4LCA4NSwgMTI4LCA3NSwgODgsIDc5LCAKKyAgICAxMjgsIDc1LCA4OCwgNzMsIDEyOCwgNzUsIDg4LCA2OSwgNjksIDEyOCwgNzUsIDg4LCA2OSwgMTI4LCA3NSwgODgsIDY1LCAKKyAgICA2NSwgMTI4LCA3NSwgODgsIDY1LCAxMjgsIDc1LCA4NywgODYsIDEyOCwgNzUsIDg3LCA4NSwgNTEsIDQ5LCA1NiwgMTI4LCAKKyAgICA3NSwgODcsIDc5LCA3OSwgMTI4LCA3NSwgODcsIDc5LCAxMjgsIDc1LCA4NywgNzcsIDEyOCwgNzUsIDg3LCA3MywgNzMsIAorICAgIDEyOCwgNzUsIDg3LCA3MywgMTI4LCA3NSwgODcsIDY5LCA2OSwgMTI4LCA3NSwgODcsIDY5LCAxMjgsIDc1LCA4NywgNjYsIAorICAgIDEyOCwgNzUsIDg3LCA2NSwgODksIDEyOCwgNzUsIDg3LCA2NSwgNjksIDg0LCAxMjgsIDc1LCA4NywgNjUsIDY1LCAxMjgsIAorICAgIDc1LCA4NiwgNjUsIDEyOCwgNzUsIDg2LCAxMjgsIDc1LCA4NSwgODgsIDEyOCwgNzUsIDg1LCA4NiwgMTI4LCA3NSwgODUsIAorICAgIDg1LCA3MiwgMTI4LCA3NSwgODUsIDg0LCAxMjgsIDc1LCA4NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgODUsIDgzLCA3MiwgCisgICAgODUsIDUwLCAxMjgsIDc1LCA4NSwgODMsIDcyLCA4NSwgMTc4LCA3NSwgODUsIDgyLCA4OCwgMTI4LCA3NSwgODUsIDgyLCAKKyAgICA4NSwgOTAsIDY5LCA3MywgODIsIDc5LCAxMjgsIDc1LCA4NSwgODIsIDg0LCAxMjgsIDc1LCA4NSwgODIsIDc5LCA3OSwgNzgsIAorICAgIDY5LCAxMjgsIDc1LCA4NSwgODIsIDEyOCwgNzUsIDg1LCAyMTAsIDc1LCA4NSwgODEsIDEyOCwgNzUsIDg1LCA3OSwgODgsIAorICAgIDEyOCwgNzUsIDg1LCA3OSwgODAsIDEyOCwgNzUsIDg1LCA3OSwgMjA4LCA3NSwgODUsIDc5LCA3NywgMTI4LCA3NSwgODUsIAorICAgIDc5LCAxMjgsIDc1LCA4NSwgNzgsIDcxLCAxMjgsIDc1LCA4NSwgNzgsIDY4LCA2OCwgNjUsIDc2LCA3MywgODksIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNzYsIDEyOCwgNzUsIDg1LCAyMDQsIDc1LCA4NSwgNzEsIDEyOCwgNzUsIDg1LCA2OSwgODQsIDEyOCwgCisgICAgNzUsIDg1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCA4NiwgMTI4LCA3NSwgODUsIDY1LCA2NiwgMTI4LCA3NSwgODUsIDY1LCAKKyAgICAxMjgsIDc1LCA4NSwgNTUsIDEyOCwgNzUsIDg1LCA1MiwgMTI4LCA3NSwgODUsIDE4MCwgNzUsIDg1LCA1MSwgMTI4LCA3NSwgCisgICAgODUsIDE3OSwgNzUsIDg0LCAxMjgsIDc1LCA4MywgODMsIDg1LCA4NSwgMTI4LCA3NSwgODMsIDgzLCA4NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA3OSwgNzksIDEyOCwgNzUsIDgzLCA4MywgNzksIDEyOCwgNzUsIDgzLCA4MywgNzMsIDczLCAxMjgsIDc1LCAKKyAgICA4MywgODMsIDczLCAxMjgsIDc1LCA4MywgODMsIDY5LCA2OSwgMTI4LCA3NSwgODMsIDgzLCA2OSwgMTI4LCA3NSwgODMsIAorICAgIDgzLCA2NSwgODUsIDEyOCwgNzUsIDgzLCA4MywgNjUsIDczLCAxMjgsIDc1LCA4MywgODMsIDY1LCA2NSwgMTI4LCA3NSwgCisgICAgODMsIDgzLCA2NSwgMTI4LCA3NSwgODMsIDgzLCAxMjgsIDc1LCA4MywgNzMsIDEyOCwgNzUsIDgyLCA2OSwgNzcsIDY1LCAKKyAgICA4MywgODQsIDczLCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDc5LCA4OSwgODAsIDc5LCA4MiwgODIsIDc5LCA3OSwgCisgICAgNzgsIDEyOCwgNzUsIDgyLCA2NSwgODQsIDczLCA3NywgNzksIDc1LCA3OSwgODUsIDcwLCA3MywgODMsIDc3LCA2NSwgMTI4LCAKKyAgICA3NSwgODIsIDY1LCA4NCwgNzMsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDc1LCA4MiwgNjUsIDg0LCA3MywgNzcsIDE5MywgNzUsIAorICAgIDgwLCA4NSwgMTI4LCA3NSwgODAsIDc5LCA4MSwgMTI4LCA3NSwgODAsIDc5LCA3OSwgMTI4LCA3NSwgODAsIDc5LCAxMjgsIAorICAgIDc1LCA4MCwgNzMsIDEyOCwgNzUsIDgwLCA2OSwgODUsIDg4LCAxMjgsIDc1LCA4MCwgNjksIDY5LCAxMjgsIDc1LCA4MCwgCisgICAgNjksIDEyOCwgNzUsIDgwLCA2NSwgODIsIDY1LCA4MSwgMTI4LCA3NSwgODAsIDY1LCA3OCwgMTI4LCA3NSwgODAsIDY1LCAKKyAgICA3MiwgMTI4LCA3NSwgODAsIDY1LCAxMjgsIDc1LCA3OSwgODgsIDEyOCwgNzUsIDc5LCA4NiwgODUsIDg1LCAxMjgsIDc1LCAKKyAgICA3OSwgODYsIDEyOCwgNzUsIDc5LCA4NCwgNzksIDEyOCwgNzUsIDc5LCA4MiwgODUsIDc4LCA2NSwgMTI4LCA3NSwgNzksIAorICAgIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA3NSwgNzksIDgyLCA2OSwgNjUsIDIwNiwgNzUsIDc5LCA4MiwgNjUsIDc4LCA3MywgCisgICAgMTk1LCA3NSwgNzksIDgxLCA3OCwgNjgsIDc5LCA3OCwgMTI4LCA3NSwgNzksIDgwLCA4MCwgNjUsIDEyOCwgNzUsIDc5LCAKKyAgICA4MCwgMTI4LCA3NSwgNzksIDc5LCA4NiwgMTI4LCA3NSwgNzksIDc5LCA4MCwgNzksIDEyOCwgNzUsIDc5LCA3OSwgNzcsIAorICAgIDg1LCA4NSwgODQsIDEyOCwgNzUsIDc5LCA3OSwgNjYsIDEyOCwgNzUsIDc5LCA3OSwgMTI4LCA3NSwgNzksIDc4LCA4NCwgCisgICAgNjksIDg2LCA3NywgNjUsIDEyOCwgNzUsIDc5LCA3OCwgODQsIDY5LCA4NiwgNzcsIDE5MywgNzUsIDc5LCA3NywgMjAxLCAKKyAgICA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCA2NSwgMTI4LCA3NSwgNzksIDc3LCA2NiwgODUsIDg2LCAxOTMsIDc1LCA3OSwgNzcsIAorICAgIDY2LCAyMTMsIDc1LCA3OSwgNzUsIDc5LCAxMjgsIDc1LCA3OSwgNzUsIDY5LCAxMjgsIDc1LCA3OSwgNzUsIDEyOCwgNzUsIAorICAgIDc5LCAyMDMsIDc1LCA3OSwgNzMsIDEyOCwgNzUsIDc5LCAyMDEsIDc1LCA3OSwgNzIsIDEyOCwgNzUsIDc5LCA3MSwgNzIsIAorICAgIDc5LCA3NywgMTI4LCA3NSwgNzksIDY5LCA4NCwgMTI4LCA3NSwgNzksIDY2LCAxMjgsIDc1LCA3OSwgNjUsIDc2LCA2NSwgCisgICAgMTI4LCA3NSwgNzksIDY1LCAxMjgsIDc1LCA3OCwgODUsIDY3LCA3NSwgNzYsIDY5LCA4MywgMTI4LCA3NSwgNzgsIDg1LCAKKyAgICA2NywgNzUsIDc2LCA2OSwgMTI4LCA3NSwgNzgsIDc5LCA2NiwgODMsIDEyOCwgNzUsIDc4LCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3NSwgNzgsIDczLCA3MSwgNzIsIDIxMiwgNzUsIDc4LCA3MywgNzAsIDY5LCAxMjgsIDc1LCA3OCwgNzMsIDcwLCAKKyAgICAxOTcsIDc1LCA3NywgMTI4LCA3NSwgMjA1LCA3NSwgNzYsIDczLCA4NCwgNzksIDc4LCAxMjgsIDc1LCA3NiwgNjUsIDgzLCAKKyAgICA3NywgNjUsIDEyOCwgNzUsIDc2LCA2NSwgODMsIDc3LCAxOTMsIDc1LCA3NiwgNjUsIDEyOCwgNzUsIDc2LCAxMjgsIDc1LCAKKyAgICA3NSwgODUsIDEyOCwgNzUsIDc1LCA3OSwgMTI4LCA3NSwgNzUsIDczLCAxMjgsIDc1LCA3NSwgNjksIDY5LCAxMjgsIDc1LCAKKyAgICA3NSwgNjksIDEyOCwgNzUsIDc1LCA2NSwgMTI4LCA3NSwgNzUsIDEyOCwgNzUsIDc0LCA2OSwgMTI4LCA3NSwgNzMsIDg5LCAKKyAgICA2OSwgNzksIDc1LCA0NSwgODQsIDczLCA3NSwgNjksIDg1LCA4NCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgCisgICAgODMsIDczLCA3OSwgODMsIDQ1LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDc1LCA3MywgODksIDY5LCA3OSwgNzUsIAorICAgIDQ1LCA4MiwgNzMsIDY5LCA4NSwgNzYsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgNDUsIDgwLCA3MywgNjksIDg1LCAKKyAgICA4MCwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCA0NSwgNzgsIDczLCA2OSwgODUsIDc4LCAxMjgsIDc1LCA3MywgODksIAorICAgIDY5LCA3OSwgNzUsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAKKyAgICA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgNzUsIDczLCA4OSwgNjksIDc5LCAyMDMsIDc1LCA3MywgODgsIAorICAgIDEyOCwgNzUsIDczLCA4NywgNzMsIDcwLCA4MiwgODUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDg3LCAxMjgsIDc1LCA3MywgCisgICAgODYsIDEyOCwgNzUsIDczLCA4NCwgMTI4LCA3NSwgNzMsIDgzLCA4MywgNzMsIDc4LCAxOTksIDc1LCA3MywgODMsIDgzLCAKKyAgICAxMjgsIDc1LCA3MywgODMsIDIxMSwgNzUsIDczLCA4MywgNzMsIDc3LCA1MywgMTI4LCA3NSwgNzMsIDgzLCA3MywgNzcsIAorICAgIDE4MSwgNzUsIDczLCA4MywgNzIsIDEyOCwgNzUsIDczLCA4MywgNjUsIDc2LCAxMjgsIDc1LCA3MywgODIsIDc5LCA4NywgCisgICAgNjUsIDg0LCA4NCwgNzksIDEyOCwgNzUsIDczLCA4MiwgNzksIDc3LCA2OSwgNjksIDg0LCA3OSwgODIsIDg1LCAxMjgsIDc1LCAKKyAgICA3MywgODIsIDc5LCA3MSwgODUsIDgyLCA2NSwgNzcsIDg1LCAxMjgsIDc1LCA3MywgODIsIDc5LCAxMjgsIDc1LCA3MywgODIsIAorICAgIDcxLCA3MiwgNzMsIDIxOCwgNzUsIDczLCA4MSwgMTI4LCA3NSwgNzMsIDgwLCAxMjgsIDc1LCA3MywgMjA4LCA3NSwgNzMsIAorICAgIDc4LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3NSwgNzMsIDc4LCA2OCwgNjksIDgyLCA3MSwgNjUsIDgyLCA4NCwgNjksIDc4LCAKKyAgICAxMjgsIDc1LCA3MywgNzcsIDc5LCA3OCwgNzksIDEyOCwgNzUsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3NSwgNzMsIAorICAgIDczLCAxMjgsIDc1LCA3MywgNzIsIDEyOCwgNzUsIDczLCA2OSwgODgsIDEyOCwgNzUsIDczLCA2OSwgODYsIDY1LCAyMDYsIAorICAgIDc1LCA3MywgNjksIDgwLCAxMjgsIDc1LCA3MywgNjksIDY5LCA3NywgMTI4LCA3NSwgNzMsIDY5LCAxMjgsIDc1LCA3MywgCisgICAgNjgsIDEyOCwgNzUsIDczLCAxOTYsIDc1LCA3MywgNjcsIDc1LCAxMjgsIDc1LCA3MywgNjYsIDEyOCwgNzUsIDczLCA2NSwgCisgICAgODYsIDEyOCwgNzUsIDczLCA2NSwgNjYsIDEyOCwgNzUsIDcyLCA5MCwgMTI4LCA3NSwgNzIsIDg3LCA2NSwgNzMsIDEyOCwgCisgICAgNzUsIDcyLCA4NSwgNjksIDc4LCA0NSwgNzYsIDg1LCAxOTcsIDc1LCA3MiwgODUsIDY5LCAyMDYsIDc1LCA3MiwgODUsIDY4LCAKKyAgICA2NSwgODcsIDY1LCA2OCwgMjAxLCA3NSwgNzIsIDg1LCA2OCwgNjUsIDc3LCAxMjgsIDc1LCA3MiwgODUsIDY1LCA4NCwgCisgICAgMTI4LCA3NSwgNzIsIDc5LCA4NSwgMTI4LCA3NSwgNzIsIDc5LCAyMTIsIDc1LCA3MiwgNzksIDc4LCAxMjgsIDc1LCA3MiwgCisgICAgNzksIDc3LCA4NSwgODQsIDEyOCwgNzUsIDcyLCA3OSwgNzQsIDc1LCAyMDEsIDc1LCA3MiwgNzksIDEyOCwgNzUsIDcyLCAKKyAgICAyMDcsIDc1LCA3MiwgNzcsIDIxMywgNzUsIDcyLCA3MywgODQsIDEyOCwgNzUsIDcyLCA3MywgNzgsIDg5LCA2NSwgMTI4LCAKKyAgICA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCAyMDAsIDc1LCA3MiwgNzMsIDEyOCwgNzUsIDcyLCAyMDEsIDc1LCA3MiwgNzIsIAorICAgIDc5LCAxMjgsIDc1LCA3MiwgNzIsIDY1LCAxMjgsIDc1LCA3MiwgNjksIDg0LCA3MiwgMTI4LCA3NSwgNzIsIDY5LCA3MywgCisgICAgMTI4LCA3NSwgNzIsIDY5LCA2OSwgMTI4LCA3NSwgNzIsIDY5LCAxMjgsIDc1LCA3MiwgNjUsIDg2LCAxMjgsIDc1LCA3MiwgCisgICAgNjUsIDgyLCA3OSwgODMsIDcyLCA4NCwgNzIsIDIwMSwgNzUsIDcyLCA2NSwgODIsIDEyOCwgNzUsIDcyLCA2NSwgODAsIDcyLCAKKyAgICAxMjgsIDc1LCA3MiwgNjUsIDc4LCAxOTksIDc1LCA3MiwgNjUsIDc4LCA2OCwgMTkzLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCAKKyAgICA3NSwgNzIsIDY1LCA3NywgODQsIDIwMSwgNzUsIDcyLCA2NSwgNzUsIDY1LCA4MywgODMsIDczLCA2NSwgMjA2LCA3NSwgNzIsIAorICAgIDY1LCA3MywgMTI4LCA3NSwgNzIsIDY1LCA3MiwgMTI4LCA3NSwgNzIsIDY1LCAyMDAsIDc1LCA3MiwgNjUsIDY2LCAxMjgsIAorICAgIDc1LCA3MiwgNjUsIDY1LCAxMjgsIDc1LCA3MSwgMTI4LCA3NSwgNjksIDg5LCA2NywgNjUsIDgwLCAxMjgsIDc1LCA2OSwgCisgICAgODksIDY3LCA2NSwgMjA4LCA3NSwgNjksIDg5LCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNzUsIDY5LCA4OSwgNjYsIDc5LCAKKyAgICA2NSwgODIsIDE5NiwgNzUsIDY5LCA4OCwgMTI4LCA3NSwgNjksIDg2LCAxMjgsIDc1LCA2OSwgODUsIDg5LCA2OSwgODUsIAorICAgIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgzLCA3MiwgNjksIDg1LCA2NSwgNjksIDgwLCAxMjgsIDc1LCA2OSwgODUsIDgzLCA2OSwgCisgICAgODUsIDg4LCAxMjgsIDc1LCA2OSwgODUsIDgwLCA4NSwgODEsIDEyOCwgNzUsIDY5LCA4NSwgNzksIDIxMiwgNzUsIDY5LCAKKyAgICA4NSwgNzcsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIDY5LCA4NSwgODQsIDc4LCA2OCwgNjUsIDEyOCwgNzUsIDY5LCA4NSwgNzUsIAorICAgIDY1LCA4MSwgMTI4LCA3NSwgNjksIDg1LCA2NSwgNjksIDg0LCA3NywgNjksIDg1LCA3OCwgMTI4LCA3NSwgNjksIDg1LCA2NSwgCisgICAgNjksIDgyLCA3MywgMTI4LCA3NSwgNjksIDg0LCA4NCwgMjAxLCA3NSwgNjksIDgzLCA3MiwgNTAsIDEyOCwgNzUsIDY5LCAKKyAgICA4MiwgNjksIDg0LCAxMjgsIDc1LCA2OSwgNzksIDg3LCAxMjgsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjUsIAorICAgIDEyOCwgNzUsIDY5LCA3OCwgODQsIDczLCA3NywgNjUsIDg0LCAxOTMsIDc1LCA2OSwgNzgsIDg0LCA3MywgNzcsIDE5MywgCisgICAgNzUsIDY5LCA3OCwgNjUsIDg0LCAxMjgsIDc1LCA2OSwgNzgsIDEyOCwgNzUsIDY5LCAyMDYsIDc1LCA2OSwgNzcsIDgwLCAKKyAgICA4NSwgNzYsIDEyOCwgNzUsIDY5LCA3NywgODAsIDg1LCAyMDQsIDc1LCA2OSwgNzcsIDgwLCA3NiwgNzMsIDEyOCwgNzUsIAorICAgIDY5LCA3NywgODAsIDc2LCAyMDEsIDc1LCA2OSwgNzcsIDgwLCA3MiwgODIsIDY5LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NywgCisgICAgNjYsIDY1LCA3OCwgNzEsIDEyOCwgNzUsIDY5LCA3NiwgODYsIDczLCAyMDYsIDc1LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCAKKyAgICA3NSwgNjksIDcyLCA2OSwgMjAwLCA3NSwgNjksIDcyLCAxMjgsIDc1LCA2OSwgNzAsIDg1LCA3NiwgNjUsIDEyOCwgNzUsIAorICAgIDY5LCA2OSwgODYsIDEyOCwgNzUsIDY5LCA2OSwgODMsIDg1LCAxMjgsIDc1LCA2OSwgNjksIDgwLCA3MywgNzgsIDE5OSwgCisgICAgNzUsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDc1LCA2OSwgNjksIDY2LCAxMjgsIDc1LCA2OSwgNjYsIDEyOCwgNzUsIDY5LCAKKyAgICA2NSwgNjUsIDY5LCAxMjgsIDc1LCA2NywgNjUsIDc2LCAxMjgsIDc1LCA2NiwgMTI4LCA3NSwgNjUsIDkwLCA2NSwgNzUsIAorICAgIDIwMCwgNzUsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzUsIDY1LCA4OSwgNjUsIDIwMCwgNzUsIDY1LCA4OCwgCisgICAgMTI4LCA3NSwgNjUsIDg3LCA4NiwgMTI4LCA3NSwgNjUsIDg3LCA3MywgMTI4LCA3NSwgNjUsIDg3LCA2NiwgMTI4LCA3NSwgCisgICAgNjUsIDg2LCA4OSwgNzUsIDY1LCAxMjgsIDc1LCA2NSwgODYsIDEyOCwgNzUsIDY1LCA4NSwgODYsIDEyOCwgNzUsIDY1LCAKKyAgICA4NSwgNzgsIDY1LCAxMjgsIDc1LCA2NSwgODUsIDIwNiwgNzUsIDY1LCA4NSwgNjYsIDEyOCwgNzUsIDY1LCA4NCwgNzksIAorICAgIDEyOCwgNzUsIDY1LCA4NCwgNzIsIDczLCA4MywgODQsIDczLCAxMjgsIDc1LCA2NSwgODQsIDcyLCA2NSwgNzUsIDE5MywgCisgICAgNzUsIDY1LCA4NCwgNjUsIDg2LCA2NSwgODMsIDc3LCA2NSwgMTI4LCA3NSwgNjUsIDg0LCA2NSwgODYsIDE5MywgNzUsIDY1LCAKKyAgICA4NCwgNjUsIDc1LCA2NSwgNzgsIDY1LCA0NSwgNzIsIDczLCA4MiwgNjUsIDcxLCA2NSwgNzgsIDE5MywgNzUsIDY1LCA4MywgCisgICAgODIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDc1LCA2NSwgODMsIDgyLCA2NSwgODQsIDY1LCAyMDYsIDc1LCA2NSwgODMsIDgyLCAKKyAgICA2NSwgMTI4LCA3NSwgNjUsIDgzLCA4MiwgMTkzLCA3NSwgNjUsIDgzLCA3NSwgNjUsIDc2LCAxMjgsIDc1LCA2NSwgODMsIAorICAgIDc1LCA2NSwgMjA0LCA3NSwgNjUsIDgzLCA3MiwgNzcsIDczLCA4MiwgMjAxLCA3NSwgNjUsIDgyLCA4MywgNzIsIDY1LCA3OCwgCisgICAgNjUsIDEyOCwgNzUsIDY1LCA4MiwgNzksIDgyLCA3MywgNzMsIDEyOCwgNzUsIDY1LCA4MiwgMjA3LCA3NSwgNjUsIDgyLCAKKyAgICA2OSwgMjA2LCA3NSwgNjUsIDgyLCA2NSwgODQsIDg0LCA3OSwgMTI4LCA3NSwgNjUsIDgyLCA2NSwgNzgsIDEyOCwgNzUsIAorICAgIDY1LCA4MCwgODksIDY5LCA3OSwgODUsIDc4LCA4MywgODMsIDY1LCA3OCwgNzEsIDgwLCA3MywgNjksIDg1LCA4MCwgMTI4LCAKKyAgICA3NSwgNjUsIDgwLCA4OSwgNjksIDc5LCA4NSwgNzgsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3NSwgNjUsIDgwLCA4OSwgCisgICAgNjksIDc5LCA4NSwgNzgsIDgwLCA3MiwgNzMsIDY5LCA4NSwgODAsIDcyLCAxMjgsIDc1LCA2NSwgODAsIDg5LCA2OSwgNzksIAorICAgIDg1LCA3OCwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDc1LCA2NSwgODAsIDgwLCA2NSwgMTI4LCA3NSwgNjUsIDgwLCA4MCwgCisgICAgMTkzLCA3NSwgNjUsIDgwLCA3OSwgMTI4LCA3NSwgNjUsIDgwLCA3MiwgMTI4LCA3NSwgNjUsIDgwLCA2NSwgNzYsIDEyOCwgCisgICAgNzUsIDY1LCA4MCwgNjUsIDEyOCwgNzUsIDY1LCAyMDgsIDc1LCA2NSwgNzgsIDg0LCA2NSwgNzQsIDE5MywgNzUsIDY1LCAKKyAgICA3OCwgNzgsIDY1LCA2OCwgMTkzLCA3NSwgNjUsIDc4LCA3MSwgMTI4LCA3NSwgNjUsIDc4LCAxOTksIDc1LCA2NSwgNzgsIAorICAgIDY1LCA3NSwgNzksIDEyOCwgNzUsIDY1LCA3NywgNTIsIDEyOCwgNzUsIDY1LCA3NywgNTAsIDEyOCwgNzUsIDY1LCA3NywgCisgICAgMTI4LCA3NSwgNjUsIDc1LCA3OSwgMTI4LCA3NSwgNjUsIDc1LCA2NSwgNjYsIDY1LCA4NCwgMTI4LCA3NSwgNjUsIDc1LCAKKyAgICAxMjgsIDc1LCA2NSwgMjAzLCA3NSwgNjUsIDczLCA4NiwgMTI4LCA3NSwgNjUsIDczLCA4NCwgNzIsIDIwMSwgNzUsIDY1LCAKKyAgICA3MywgODIsIDczLCAxMjgsIDc1LCA2NSwgNzMsIDY2LCAxMjgsIDc1LCA2NSwgNzMsIDEyOCwgNzUsIDY1LCAyMDEsIDc1LCAKKyAgICA2NSwgNzAsIDY1LCAxMjgsIDc1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCAxOTgsIDc1LCA2NSwgNjgsIDUzLCAxMjgsIDc1LCAKKyAgICA2NSwgNjgsIDE4MSwgNzUsIDY1LCA2OCwgNTIsIDEyOCwgNzUsIDY1LCA2OCwgNTEsIDEyOCwgNzUsIDY1LCA2OCwgMTc5LCAKKyAgICA3NSwgNjUsIDY4LCA1MCwgMTI4LCA3NSwgNjUsIDY4LCAxMjgsIDc1LCA2NSwgNjYsIDE5MywgNzUsIDY1LCA2NiwgMTI4LCAKKyAgICA3NSwgNjUsIDY1LCA4NiwgMTI4LCA3NSwgNjUsIDY1LCA3MywgMTI4LCA3NSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzUsIAorICAgIDY1LCA2NSwgNzAsIDEyOCwgNzUsIDY1LCA2NSwgNjYsIDY1LCAxMjgsIDc1LCA2NSwgNjUsIDY2LCAxMjgsIDc1LCA2NSwgCisgICAgNTAsIDEyOCwgNzUsIDY1LCAxNzgsIDc1LCA0OCwgNDgsIDU2LCAxMjgsIDc1LCA0OCwgNDgsIDU1LCAxMjgsIDc1LCA0OCwgCisgICAgNDgsIDU0LCAxMjgsIDc1LCA0OCwgNDgsIDUzLCAxMjgsIDc1LCA0OCwgNDgsIDUyLCAxMjgsIDc1LCA0OCwgNDgsIDUxLCAKKyAgICAxMjgsIDc1LCA0OCwgNDgsIDUwLCAxMjgsIDc1LCA0OCwgNDgsIDQ5LCAxMjgsIDc0LCA4NywgNjUsIDEyOCwgNzQsIDg1LCAKKyAgICA4NSwgMTI4LCA3NCwgODUsIDg0LCAxMjgsIDc0LCA4NSwgODMsIDg0LCA3MywgNzAsIDczLCA2NywgNjUsIDg0LCA3MywgNzksIAorICAgIDc4LCAxMjgsIDc0LCA4NSwgODAsIDczLCA4NCwgNjksIDgyLCAxMjgsIDc0LCA4NSwgNzksIDg0LCAxMjgsIDc0LCA4NSwgCisgICAgNzksIDgwLCAxMjgsIDc0LCA4NSwgNzgsIDc5LCAxMjgsIDc0LCA4NSwgNzgsIDY5LCAxMjgsIDc0LCA4NSwgNzYsIDg5LCAKKyAgICAxMjgsIDc0LCA4NSwgNzEsIDcxLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA3NCwgODUsIDY5LCA4NSwgNzMsIDEyOCwgNzQsIAorICAgIDg1LCA2OCwgODUsIDc2LCAxMjgsIDc0LCA4NSwgNjgsIDcxLCA2OSwgMTI4LCA3NCwgODUsIDY4LCA2OSwgNzksIDQ1LCA4MywgCisgICAgODAsIDY1LCA3OCwgNzMsIDgzLCAyMDAsIDc0LCA3OSwgODksIDgzLCA4NCwgNzMsIDY3LCA3NSwgMTI4LCA3NCwgNzksIDg5LCAKKyAgICA3OSwgODUsIDIxMSwgNzQsIDc5LCA4OSwgMTI4LCA3NCwgNzksIDg2LCA2OSwgMTI4LCA3NCwgNzksIDIxMiwgNzQsIDc5LCAKKyAgICA3OCwgNzEsIDEyOCwgNzQsIDc5LCA3OCwgMTkzLCA3NCwgNzksIDc1LCA2OSwgODIsIDEyOCwgNzQsIDc5LCA3MywgNzgsIAorICAgIDg0LCA4MywgMTI4LCA3NCwgNzksIDczLCA3OCwgNjksIDY4LCAxMjgsIDc0LCA3OSwgNzMsIDc4LCAxMjgsIDc0LCA3OSwgCisgICAgNjUsIDEyOCwgNzQsIDc0LCA4OSwgODgsIDEyOCwgNzQsIDc0LCA4OSwgODQsIDEyOCwgNzQsIDc0LCA4OSwgODAsIDEyOCwgCisgICAgNzQsIDc0LCA4OSwgMTI4LCA3NCwgNzQsIDg1LCA4OCwgMTI4LCA3NCwgNzQsIDg1LCA4NCwgMTI4LCA3NCwgNzQsIDg1LCAKKyAgICA4MiwgODgsIDEyOCwgNzQsIDc0LCA4NSwgODIsIDEyOCwgNzQsIDc0LCA4NSwgODAsIDEyOCwgNzQsIDc0LCA4NSwgNzksIAorICAgIDg4LCAxMjgsIDc0LCA3NCwgODUsIDc5LCA4MCwgMTI4LCA3NCwgNzQsIDg1LCA3OSwgMTI4LCA3NCwgNzQsIDg1LCAxMjgsIAorICAgIDc0LCA3NCwgNzksIDg4LCAxMjgsIDc0LCA3NCwgNzksIDg0LCAxMjgsIDc0LCA3NCwgNzksIDgwLCAxMjgsIDc0LCA3NCwgCisgICAgNzksIDEyOCwgNzQsIDc0LCA3MywgODgsIDEyOCwgNzQsIDc0LCA3MywgODQsIDEyOCwgNzQsIDc0LCA3MywgODAsIDEyOCwgCisgICAgNzQsIDc0LCA3MywgNjksIDg4LCAxMjgsIDc0LCA3NCwgNzMsIDY5LCA4NCwgMTI4LCA3NCwgNzQsIDczLCA2OSwgODAsIAorICAgIDEyOCwgNzQsIDc0LCA3MywgNjksIDEyOCwgNzQsIDc0LCA3MywgMTI4LCA3NCwgNzQsIDY5LCA2OSwgMTI4LCA3NCwgNzQsIAorICAgIDY5LCAxMjgsIDc0LCA3NCwgNjUsIDEyOCwgNzQsIDczLCA3NiwgMTI4LCA3NCwgNzMsIDczLCA3NywgMTI4LCA3NCwgNzMsIAorICAgIDczLCAxMjgsIDc0LCA3MywgNzIsIDg2LCA2NSwgNzcsIDg1LCA3NiwgNzMsIDg5LCA2NSwgMTI4LCA3NCwgNzMsIDY1LCAKKyAgICAxMjgsIDc0LCA3MiwgNzksIDg4LCAxMjgsIDc0LCA3MiwgNzksIDEyOCwgNzQsIDcyLCA2OSwgNzIsIDEyOCwgNzQsIDcyLCAKKyAgICA2NSwgODksIDczLCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3OCwgMTI4LCA3NCwgNzIsIDY1LCA3NywgMTI4LCA3NCwgNzIsIAorICAgIDY1LCA2NSwgMTI4LCA3NCwgNzIsIDY1LCAxMjgsIDc0LCA2OSwgODUsIDEyOCwgNzQsIDY5LCA4MiwgODUsIDgzLCA2NSwgCisgICAgNzYsIDY5LCA3NywgMTI4LCA3NCwgNjksIDgyLCA2NSwgMjA2LCA3NCwgNjksIDgyLCA2NSwgMTI4LCA3NCwgNjksIDgyLCAKKyAgICAxMjgsIDc0LCA2OSwgNzIsIDEyOCwgNzQsIDY5LCAyMDAsIDc0LCA2OSwgNzEsIDc5LCA3MSwgNjUsIDc4LCAxMjgsIDc0LCAKKyAgICA2OSwgNjksIDc3LCAxMjgsIDc0LCA2OSwgNjUsIDc4LCA4MywgMTI4LCA3NCwgNjUsIDg5LCA3OCwgMTI4LCA3NCwgNjUsIAorICAgIDg5LCA3MywgNzgsIDEyOCwgNzQsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzQsIDY1LCA4NywgMTI4LCA3NCwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNzQsIDY1LCA4NiwgNjUsIDc4LCA2OSwgODMsIDE5NywgNzQsIDY1LCAKKyAgICA4NSwgMTI4LCA3NCwgNjUsIDgyLCAxMjgsIDc0LCA2NSwgODAsIDY1LCA3OCwgNjksIDgzLCAxOTcsIDc0LCA2NSwgODAsIAorICAgIDY1LCA3OCwgMTI4LCA3NCwgNjUsIDc4LCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3NCwgNjUsIDc2LCA3NiwgNjUsIDc0LCA2NSwgCisgICAgNzYsIDY1LCA3NiwgNzksIDg1LCA3MiwgNzksIDg1LCAxMjgsIDc0LCA2NSwgNzMsIDIwNiwgNzQsIDY1LCA3MywgMTI4LCAKKyAgICA3NCwgNjUsIDcyLCAxMjgsIDc0LCA2NSwgNjgsIDY5LCAxMjgsIDc0LCA2NSwgNjcsIDc1LCA4MywgMTI4LCA3NCwgNjUsIAorICAgIDY3LCA3NSwgNDUsIDc5LCA0NSwgNzYsIDY1LCA3OCwgODQsIDY5LCA4MiwgNzgsIDEyOCwgNzQsIDY1LCA2NywgMjAzLCA3NCwgCisgICAgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgNjUsIAorICAgIDEyOCwgNzMsIDkwLCA3MiwgNzMsIDg0LCA4MywgMTkzLCA3MywgOTAsIDcyLCA2OSwgMTI4LCA3MywgOTAsIDY1LCA3NSwgCisgICAgNjUsIDg5LCAxOTMsIDczLCA4OSwgNjksIDc1LCAxMjgsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDg1LCAKKyAgICA3NCwgNjUsIDEyOCwgNzMsIDg0LCAyMTEsIDczLCA4NCwgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgODQsIAorICAgIDY5LCA3NywgMTI4LCA3MywgODMsIDgzLCA3MiwgNjUsIDgyLCAxMjgsIDczLCA4MywgNzksIDgzLCA2NywgNjksIDc2LCA2OSwgCisgICAgMjExLCA3MywgODMsIDc5LCA3OCwgMTI4LCA3MywgODMsIDc5LCAyMDYsIDczLCA4MywgNzksIDc2LCA2NSwgODQsIDY5LCAKKyAgICAxMjgsIDczLCA4MywgNzYsIDY1LCA3OCwgNjgsIDEyOCwgNzMsIDgzLCA2OSwgNzgsIDQ1LCA3MywgODMsIDY5LCA3OCwgCisgICAgMTI4LCA3MywgODMsIDY1LCA3NSwgNzMsIDE5MywgNzMsIDgzLCA0NSwgODAsIDczLCA3NiwgNzYsIDY1LCAxMjgsIDczLCAKKyAgICA4MiwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgODIsIDg1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDczLCA4MiwgNzksIDc4LCA0NSwgNjcsIDc5LCA4MCwgODAsIDY5LCAyMTAsIDczLCA4MiwgNzksIDc4LCAxMjgsIDczLCA4MiwgCisgICAgNjYsIDEyOCwgNzMsIDc5LCA4NCwgNzMsIDcwLCA3MywgNjksIDE5NiwgNzMsIDc5LCA4NCwgNjUsIDg0LCA2OSwgMTk2LCAKKyAgICA3MywgNzksIDg0LCA2NSwgMTI4LCA3MywgNzksIDg0LCAxOTMsIDczLCA3OSwgODIsIDEyOCwgNzMsIDc5LCA2OCwgNzIsIAorICAgIDY1LCA2OCwgNzIsIDEyOCwgNzMsIDc4LCA4NiwgNzMsIDgzLCA3MywgNjYsIDc2LCAxOTcsIDczLCA3OCwgODYsIDY5LCA4MiwgCisgICAgODQsIDY5LCA2OCwgMTI4LCA3MywgNzgsIDg2LCA2OSwgODIsIDg0LCA2OSwgMTk2LCA3MywgNzgsIDg2LCA2OSwgODIsIDgzLCAKKyAgICAxOTcsIDczLCA3OCwgODQsIDgyLCA3OSwgNjgsIDg1LCA2NywgNjksIDgyLCAxMjgsIDczLCA3OCwgODQsIDczLCAxMjgsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgODMsIDg5LCA3NiwgNzYsIDY1LCA2NiwgNzMsIDE5NSwgNzMsIDc4LCA4NCwgNjksIDgyLCAKKyAgICA4MywgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgzLCA2OSwgNjcsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzMsIDc4LCA4NCwgNjksIDgyLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgODIsIDc5LCA2NiwgNjUsIDc4LCA3MSwgMTI4LCA3MywgNzgsIDg0LCA2OSwgODIsIDgyLCA3OSwgNjYsIDY1LCA3OCwgCisgICAgMTk5LCA3MywgNzgsIDg0LCA2OSwgODIsIDgwLCA3OSwgNzYsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODQsIDY5LCAKKyAgICA4MiwgNzYsIDc5LCA2NywgNzUsIDY5LCAxOTYsIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDczLCA3OCwgNjksIDY1LCAyMTAsIAorICAgIDczLCA3OCwgODQsIDY5LCA4MiwgNzYsIDY1LCA2NywgNjksIDE5NiwgNzMsIDc4LCA4NCwgNjksIDgyLCA3MywgNzksIDIxMCwgCisgICAgNzMsIDc4LCA4NCwgNjksIDgyLCA2OSwgODMsIDIxMiwgNzMsIDc4LCA4NCwgNjksIDgyLCA2NywgNjUsIDc2LCA2NSwgODQsIAorICAgIDY5LCAxMjgsIDczLCA3OCwgODQsIDY5LCA3MSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MywgNzgsIDg0LCA2OSwgCisgICAgNzEsIDgyLCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDg0LCA2OSwgNzEsIDgyLCA2NSwgNzYsIDEyOCwgNzMsIDc4LCAKKyAgICA4NCwgNjksIDcxLCA4MiwgNjUsIDIwNCwgNzMsIDc4LCA4MywgODUsIDc2LCA2NSwgMjEwLCA3MywgNzgsIDgzLCA4NCwgODIsIAorICAgIDg1LCA3NywgNjksIDc4LCA4NCwgNjUsIDIwNCwgNzMsIDc4LCA4MywgNzMsIDY4LCA2OSwgMTI4LCA3MywgNzgsIDgzLCA3MywgCisgICAgNjgsIDE5NywgNzMsIDc4LCA4MywgNjksIDgyLCA4NCwgNzMsIDc5LCAyMDYsIDczLCA3OCwgODMsIDY5LCA2NywgODQsIAorICAgIDEyOCwgNzMsIDc4LCA4MywgNjcsIDgyLCA3MywgODAsIDg0LCA3MywgNzksIDc4LCA2NSwgMjA0LCA3MywgNzgsIDgwLCA4NSwgCisgICAgMjEyLCA3MywgNzgsIDc4LCA3OSwgNjcsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzgsIDc4LCAxMjgsIDczLCAKKyAgICA3OCwgNzgsIDY5LCA4MiwgMTI4LCA3MywgNzgsIDc4LCA2OSwgMjEwLCA3MywgNzgsIDc4LCAxMjgsIDczLCA3OCwgNzMsIAorICAgIDc4LCA3MSwgODUsIDEyOCwgNzMsIDc4LCA3MywgMTI4LCA3MywgNzgsIDcyLCA3MywgNjYsIDczLCAyMTIsIDczLCA3OCwgCisgICAgNzIsIDY5LCA4MiwgNjksIDc4LCAyMTIsIDczLCA3OCwgNzIsIDY1LCA3NiwgNjksIDEyOCwgNzMsIDc4LCA3MSwgODcsIDY1LCAKKyAgICA5MCwgMTI4LCA3MywgNzgsIDcwLCA3OSwgODIsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDcwLCA3NiwgODUsIAorICAgIDY5LCA3OCwgNjcsIDY5LCAxMjgsIDczLCA3OCwgNzAsIDczLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA3MywgNzgsIDcwLCA3MywgCisgICAgNzgsIDczLCA4NCwgMjE3LCA3MywgNzgsIDY4LCA4NSwgODMsIDg0LCA4MiwgNzMsIDY1LCAyMDQsIDczLCA3OCwgNjgsIDczLCAKKyAgICA4MiwgNjksIDY3LCAyMTIsIDczLCA3OCwgNjgsIDczLCA2NywgODQsIDczLCA3OSwgMjA2LCA3MywgNzgsIDY4LCA3MywgNjcsIAorICAgIDY1LCA4NCwgNzksIDgyLCAxMjgsIDczLCA3OCwgNjgsIDczLCA2NywgNjUsIDg0LCA3OSwgMjEwLCA3MywgNzgsIDY4LCA3MywgCisgICAgMTk1LCA3MywgNzgsIDY4LCA3MywgNjUsIDIwNiwgNzMsIDc4LCA2OCwgNjksIDg4LCAxMjgsIDczLCA3OCwgNjgsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA2OCwgNjksIDc4LCAyMTIsIDczLCA3OCwgNjcsIDgyLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNzMsIAorICAgIDc4LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAyMTEsIDczLCA3OCwgNjcsIDgyLCA2OSwgNjUsIDgzLCA2OSwgMTI4LCA3MywgCisgICAgNzgsIDY3LCA4MiwgNjksIDY1LCA4MywgMTk3LCA3MywgNzgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCAxOTcsIDczLCAKKyAgICA3OCwgNjcsIDc5LCA3NywgNzMsIDc4LCAxOTksIDczLCA3OCwgNjcsIDc2LCA4NSwgNjgsIDczLCA3OCwgMTk5LCA3MywgNzgsIAorICAgIDY3LCA3MiwgMTI4LCA3MywgNzgsIDY2LCA3OSwgMjE2LCA3MywgNzgsIDY1LCA4MCwgMTI4LCA3MywgNzgsIDQ1LCA2NSwgCisgICAgNzYsIDY1LCA3MCwgMTI4LCA3MywgNzcsIDgwLCA2OSwgODIsIDczLCA2NSwgMjA0LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCAKKyAgICA2OSwgNjcsIDg0LCA4NSwgMjA1LCA3MywgNzcsIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCA2NSwgMTI4LCA3MywgNzcsIAorICAgIDgwLCA2OSwgODIsIDcwLCA2OSwgNjcsIDg0LCAxOTMsIDczLCA3NywgNzgsIDEyOCwgNzMsIDc3LCA3MywgODMsIDY5LCA3OSwgCisgICAgMjExLCA3MywgNzcsIDczLCA3OCwgNTEsIDEyOCwgNzMsIDc3LCA3MywgNzgsIDEyOCwgNzMsIDc3LCA3MywgMjA2LCA3MywgCisgICAgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA3MCwgODQsIDcyLCA3OSwgODIsIAorICAgIDY1LCAxMjgsIDczLCA3NywgNzMsIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDczLCA2OCwgNzMsIDY1LCA4MiwgCisgICAgNzEsIDc5LCA3OCwgMTI4LCA3MywgNzcsIDY1LCA3MSwgMTk3LCA3MywgNzYsIDg1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIAorICAgIDEyOCwgNzMsIDc2LCA4NSwgODksIDEyOCwgNzMsIDc2LCA4NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MywgCisgICAgNzYsIDg1LCA4NCwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCA1MiwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAKKyAgICA1MSwgMTI4LCA3MywgNzYsIDczLCA3NywgNzcsIDg1LCAxMjgsIDczLCA3NiwgNzMsIDc3LCA3NywgMjEzLCA3MywgNzYsIAorICAgIDUwLCAxMjgsIDczLCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA3MywgNzUsIDY1LCA4MiwgMTkzLCA3MywgNzQsIDEyOCwgNzMsIAorICAgIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzMsIDcxLCA3MywgMTI4LCA3MywgNzEsIDIwMSwgNzMsIDcxLCA3MSwgCisgICAgODcsIDgzLCAxMjgsIDczLCA3MCwgNzMsIDc4LCAxMjgsIDczLCA2OSwgODUsIDc4LCA3MSwgNDUsIDg0LCA3MywgNzUsIDY5LCAKKyAgICA4NSwgODQsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODQsIDcyLCA3MywgNjksIDg1LCA4NCwgNzIsIDEyOCwgNzMsIAorICAgIDY5LCA4NSwgNzgsIDcxLCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA3NSwgNzMsIDg5LCA2OSwgNzksIDc1LCAxMjgsIDczLCAKKyAgICA2OSwgODUsIDc4LCA3MSwgNDUsIDgyLCA3MywgNjksIDg1LCA3NiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA4MCwgCisgICAgNzMsIDY5LCA4NSwgODAsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgODAsIDcyLCA3MywgNjksIDg1LCA4MCwgNzIsIAorICAgIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNzUsIDczLCA4OSwgNjksIDc5LCA3NSwgMTI4LCA3MywgNjksIDg1LCA3OCwgCisgICAgNzEsIDQ1LCA3NSwgNzIsIDczLCA2OSwgODUsIDc1LCA3MiwgMTI4LCA3MywgNjksIDg1LCA3OCwgNzEsIDQ1LCA2NywgNzMsIAorICAgIDY5LCA4NSwgNjcsIDEyOCwgNzMsIDY5LCA4NSwgNzgsIDcxLCA0NSwgNjcsIDcyLCA3MywgNjksIDg1LCA2NywgNzIsIDEyOCwgCisgICAgNzMsIDY5LCA4NSwgNzgsIDE5OSwgNzMsIDY4LCA3NiwgNjksIDEyOCwgNzMsIDY4LCA3MywgNzcsIDEyOCwgNzMsIDY4LCAKKyAgICA3MywgMjA1LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNjUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNjUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTcsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU3LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTcsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTYsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTYsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTUsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTUsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1NCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDU0LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTMsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUzLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTIsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUyLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTEsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUxLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA1MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA2NSwgNDgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDY1LCA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA2NSwgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNjUsIDQ4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNzAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDcwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY5LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY4LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNjUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDY1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU3LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU2LCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU1LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTQsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDU0LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUzLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTMsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUyLCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTEsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUxLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNTAsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDUwLCAKKyAgICA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA1MCwgNDksIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDksIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ5LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNzAsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDcwLCA1NywgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDcwLCA1NywgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA3MCwgNTcsIDQ4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU3LCA0OSwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NywgNDgsIDUyLCAKKyAgICA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTYsIDY4LCA1NSwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU2LCA2NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NiwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDY4LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA2NSwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTcsIDU2LCAKKyAgICA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTUsIDU0LCA2OCwgNTUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU1LCA1MywgNTEsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NSwgNTMsIDQ5LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTUsIDQ5LCA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU1LCA0OCwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNzAsIDQ5LCAKKyAgICA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDY5LCA1NiwgNDgsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1NSwgNTAsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTUsIDQ4LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDU1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1NCwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTMsIDY2LCAKKyAgICA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUzLCA1NywgNTcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDU0LCA1MywgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTEsIDUzLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTQsIDUxLCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDU0LCA1MCwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1NCwgNTAsIDUzLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTQsIDUwLCA1MiwgNjYsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA3MCwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNjgsIDY5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDY2LCA1NiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA2NiwgNTMsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTcsIDUwLCAKKyAgICA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDU3LCA0OSwgNjUsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1NiwgNzAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTMsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUyLCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MiwgNDgsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTEsIDcwLCAKKyAgICA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTMsIDUxLCA2NywgNjcsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUzLCA1MCwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNTAsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTMsIDUwLCA1MiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUzLCA1MCwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MywgNDksIDU2LCAKKyAgICA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTIsIDY5LCA2NSwgNTIsIDEyOCwgNzMsIAorICAgIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUyLCA2OSwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCAKKyAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MiwgNjksIDUwLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgCisgICAgODAsIDcyLCA0NSwgNTIsIDY5LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIAorICAgIDUyLCA2OSwgNDgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDksIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDksIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCA0OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNjUsIDQ4LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA2NSwgNDgsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDY1LCAKKyAgICA0OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNjUsIDQ4LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA2NSwgNDgsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNzAsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA3MCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDcwLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNzAsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA3MCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjksIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY5LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjksIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY5LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY4LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjgsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2OCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2OCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY4LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjgsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjcsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY3LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjcsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY2LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjYsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY2LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA2NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDY1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNjUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA2NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDY1LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNjUsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU3LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTcsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NywgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU3LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTcsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NywgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU2LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTYsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NiwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTYsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NiwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU2LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU1LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTUsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU1LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTUsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTQsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1NCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDU0LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTQsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1NCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTMsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUzLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTMsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUzLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUyLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTIsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUyLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTIsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTEsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUxLCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTEsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNTAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA1MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDUwLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNTAsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA1MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDUwLCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ5LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDksIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NywgNDgsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCAKKyAgICA0OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTcsIDQ4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NywgNDgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU3LCA0OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDcwLCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNzAsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA3MCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNzAsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA3MCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDcwLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OSwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY5LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjksIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OSwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY5LCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjksIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjgsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2OCwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY4LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjgsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2OCwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjcsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY3LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY2LCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjYsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNjUsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA2NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDY1LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNjUsIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA2NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTcsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NywgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU3LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTcsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NywgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU3LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDcwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NiwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDU0LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU2LCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTYsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NiwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU2LCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTYsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU1LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTUsIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDUyLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU1LCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTUsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA2NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDY2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDU0LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTQsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1NCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA1MSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTQsIDUwLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1NCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDU0LCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA2OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDY3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNjYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA2NSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MywgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUzLCA1MiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTMsIDUxLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MywgNTAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUzLCA0OSwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTMsIDQ4LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA2NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDY1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDU1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTIsIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MiwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUyLCA1MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTIsIDQ5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MiwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA3MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTEsIDU2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MSwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1NCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUzLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUxLCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTEsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MSwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUxLCA0OCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDcwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNjksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDY3LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNjYsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA2NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDU3LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTYsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDUwLCA1NSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNTAsIDU0LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA1MCwgNTMsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA1MiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDUxLCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA1MCwgNTAsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDUwLCA0OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNTAsIDQ4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNzAsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2OSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDY4LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNjcsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA2NiwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDY1LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTcsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1NiwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDU1LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNTQsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDksIDUyLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OSwgNTEsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ5LCA1MCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDksIDQ5LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OSwgNDgsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA3MCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDY5LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNjgsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA2NywgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDY2LCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNjUsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NywgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDU2LCAxMjgsIDczLCAKKyAgICA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTUsIDEyOCwgNzMsIDY4LCA2OSwgCisgICAgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1NCwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIAorICAgIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIDcwLCA1NiwgNDgsIDUzLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCAKKyAgICA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCA0OCwgNTIsIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNDUsIDUwLCA3MCwgNTYsIDQ4LCA1MSwgMTI4LCA3MywgNjgsIDY5LCA3OSwgNzEsIDgyLCA2NSwgODAsIDcyLCA0NSwgNTAsIAorICAgIDcwLCA1NiwgNDgsIDUwLCAxMjgsIDczLCA2OCwgNjksIDc5LCA3MSwgODIsIDY1LCA4MCwgNzIsIDQ1LCA1MCwgNzAsIDU2LCAKKyAgICA0OCwgNDksIDEyOCwgNzMsIDY4LCA2OSwgNzksIDcxLCA4MiwgNjUsIDgwLCA3MiwgNDUsIDUwLCA3MCwgNTYsIDQ4LCA0OCwgCisgICAgMTI4LCA3MywgNjgsIDY5LCA3OCwgODQsIDczLCA3MCwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNzMsIDY4LCAKKyAgICA2OSwgNzgsIDg0LCA3MywgNjcsIDY1LCAyMDQsIDczLCA2NywgNzksIDc4LCAxMjgsIDczLCA2NywgNzIsIDc5LCA4NSwgCisgICAgMTI4LCA3MywgNjcsIDcyLCA3OSwgODMsIDEyOCwgNzMsIDY3LCA3MiwgNzMsIDc3LCA2NSwgODQsIDc5LCA4MywgMTI4LCAKKyAgICA3MywgNjcsIDcyLCA2NSwgNjgsIDczLCA3OCwgMTI4LCA3MywgNjcsIDY5LCA3NiwgNjUsIDc4LCA2OCwgNzMsIDY3LCA0NSwgCisgICAgODksIDgyLCAxMjgsIDczLCA2NiwgNzMsIDcwLCA3MywgNzYsIDczLCAxMjgsIDczLCA2NSwgODUsIDY4LCA2NSwgMTI4LCAKKyAgICA3MywgNDgsIDQ5LCA1MywgMTI4LCA3MywgNDgsIDQ5LCA1MiwgMTI4LCA3MywgNDgsIDQ5LCA1MSwgMTI4LCA3MywgNDgsIAorICAgIDQ5LCA1MCwgMTI4LCA3MywgNDgsIDQ5LCA0OSwgNjUsIDEyOCwgNzMsIDQ4LCA0OSwgNDksIDEyOCwgNzMsIDQ4LCA0OSwgCisgICAgNDgsIDY1LCAxMjgsIDczLCA0OCwgNDksIDQ4LCAxMjgsIDczLCA0OCwgNDgsIDU3LCA2NSwgMTI4LCA3MywgNDgsIDQ4LCAKKyAgICA1NywgMTI4LCA3MywgNDgsIDQ4LCA1NiwgMTI4LCA3MywgNDgsIDQ4LCA1NSwgMTI4LCA3MywgNDgsIDQ4LCA1NCwgMTI4LCAKKyAgICA3MywgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNzMsIDQ4LCA0OCwgNTMsIDEyOCwgNzMsIDQ4LCA0OCwgNTIsIDEyOCwgNzMsIAorICAgIDQ4LCA0OCwgNTEsIDEyOCwgNzMsIDQ4LCA0OCwgNTAsIDEyOCwgNzMsIDQ4LCA0OCwgNDksIDEyOCwgNzMsIDQ1LCA4OSwgCisgICAgODUsIDEyOCwgNzMsIDQ1LCA4OSwgNzksIDEyOCwgNzMsIDQ1LCA4OSwgNjksIDc5LCAxMjgsIDczLCA0NSwgODksIDY5LCAKKyAgICAxMjgsIDczLCA0NSwgODksIDY1LCA2OSwgMTI4LCA3MywgNDUsIDg5LCA2NSwgNDUsIDc5LCAxMjgsIDczLCA0NSwgODksIAorICAgIDY1LCAxMjgsIDczLCA0NSwgNzksIDQ1LCA3MywgMTI4LCA3MywgNDUsIDc5LCAxMjgsIDczLCA0NSwgNjksIDg1LCAxMjgsIAorICAgIDczLCA0NSwgNjYsIDY5LCA2NSwgNzcsIDEyOCwgNzMsIDQ1LCA2NSwgODIsIDY1LCA2OSwgNjUsIDEyOCwgNzMsIDQ1LCA2NSwgCisgICAgMTI4LCA3MiwgOTAsIDkwLCA5MCwgNzEsIDEyOCwgNzIsIDkwLCA5MCwgOTAsIDEyOCwgNzIsIDkwLCA5MCwgODAsIDEyOCwgCisgICAgNzIsIDkwLCA5MCwgMTI4LCA3MiwgOTAsIDg3LCA3MSwgMTI4LCA3MiwgOTAsIDg3LCAxMjgsIDcyLCA5MCwgODQsIDEyOCwgCisgICAgNzIsIDkwLCA3MSwgMTI4LCA3MiwgODksIDgzLCA4NCwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDcyLCA4OSwgODAsIDc5LCAKKyAgICA2OCwgNzMsIDY1LCA4MywgODQsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNzIsIDg5LCA4MCwgNzIsIDY5LCA3OCwgNDUsIDc3LCA3MywgNzgsIDg1LCA4MywgMTI4LCA3MiwgODksIDgwLCAKKyAgICA3MiwgNjksIDc4LCAxMjgsIDcyLCA4OSwgODAsIDcyLCA2OSwgMjA2LCA3MiwgODksIDcxLCA3MywgNjksIDczLCA2NSwgCisgICAgMTI4LCA3MiwgODgsIDg3LCA3MSwgMTI4LCA3MiwgODgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDg4LCA4NSwgNzksIDg0LCAKKyAgICAxMjgsIDcyLCA4OCwgODUsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDg1LCA3OSwgMTI4LCA3MiwgODgsIDc5LCA4OCwgMTI4LCAKKyAgICA3MiwgODgsIDc5LCA4NCwgMTI4LCA3MiwgODgsIDc5LCA4MCwgMTI4LCA3MiwgODgsIDc5LCAxMjgsIDcyLCA4OCwgNzMsIAorICAgIDg4LCAxMjgsIDcyLCA4OCwgNzMsIDg0LCAxMjgsIDcyLCA4OCwgNzMsIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCA4OCwgCisgICAgMTI4LCA3MiwgODgsIDczLCA2OSwgODQsIDEyOCwgNzIsIDg4LCA3MywgNjksIDgwLCAxMjgsIDcyLCA4OCwgNzMsIDY5LCAKKyAgICAxMjgsIDcyLCA4OCwgNzMsIDEyOCwgNzIsIDg4LCA2OSwgODgsIDEyOCwgNzIsIDg4LCA2OSwgODAsIDEyOCwgNzIsIDg4LCAKKyAgICA2OSwgMTI4LCA3MiwgODgsIDY1LCA4OCwgMTI4LCA3MiwgODgsIDY1LCA4NCwgMTI4LCA3MiwgODgsIDY1LCA4MCwgMTI4LCAKKyAgICA3MiwgODgsIDY1LCAxMjgsIDcyLCA4NywgODUsIDEyOCwgNzIsIDg3LCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA4NywgNjUsIAorICAgIDcyLCAxMjgsIDcyLCA4NSwgODYsIDY1LCAxMjgsIDcyLCA4NSwgODMsIDcyLCA2OSwgMTk2LCA3MiwgODUsIDgzLCA3MiwgCisgICAgMTI4LCA3MiwgODUsIDgyLCA2NSwgNzgsIDEyOCwgNzIsIDg1LCA3OSwgODQsIDEyOCwgNzIsIDg1LCA3OCwgNjgsIDgyLCAKKyAgICA2OSwgNjgsIDgzLCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDY4LCAyMTEsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIAorICAgIDY4LCAxMjgsIDcyLCA4NSwgNzgsIDY4LCA4MiwgNjksIDE5NiwgNzIsIDg1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCAyMDgsIAorICAgIDcyLCA4NSwgNzcsIDY1LCA3OCwgMTI4LCA3MiwgODUsIDc3LCA2NSwgMjA2LCA3MiwgODUsIDc2LCA1MCwgMTI4LCA3MiwgCisgICAgODUsIDczLCA3MywgODQsIDc5LCAxMjgsIDcyLCA4NSwgNzEsIDcxLCA3MywgNzgsIDE5OSwgNzIsIDg1LCA2NiwgNTAsIAorICAgIDEyOCwgNzIsIDg1LCA2NiwgMTc4LCA3MiwgODUsIDY2LCAxMjgsIDcyLCA4NSwgNjUsIDgyLCA2NSwgNjgsIDY4LCA3OSwgCisgICAgMTI4LCA3MiwgODUsIDY1LCA3OCwgMTI4LCA3MiwgODQsIDgzLCAxMjgsIDcyLCA4NCwgNzQsIDEyOCwgNzIsIDgyLCA4OSwgCisgICAgODYsIDc4LCA3MywgMTkzLCA3MiwgODAsIDg3LCA3MSwgMTI4LCA3MiwgODAsIDY1LCAxMjgsIDcyLCA4MCwgMTI4LCA3MiwgCisgICAgNzksIDg1LCA4MywgMTk3LCA3MiwgNzksIDg1LCA4MiwgNzEsIDc2LCA2NSwgODMsIDgzLCAxMjgsIDcyLCA3OSwgODUsIDgyLCAKKyAgICA3MSwgNzYsIDY1LCA4MywgMjExLCA3MiwgNzksIDg1LCA4MiwgMTI4LCA3MiwgNzksIDg1LCAyMTAsIDcyLCA3OSwgODQsIAorICAgIDY5LCA3NiwgMTI4LCA3MiwgNzksIDg0LCA2NSwgMTI4LCA3MiwgNzksIDgzLCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgODMsIDY5LCAxMjgsIDcyLCA3OSwgODIsIDgzLCAxOTcsIDcyLCA3OSwgODIsIDgyLCAxMjgsIDcyLCAKKyAgICA3OSwgODIsIDc4LCA4MywgMTI4LCA3MiwgNzksIDgyLCA3MywgOTAsIDc5LCA3OCwgODQsIDY1LCA3NiwgNzYsIDIxNywgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTQsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTMsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTMsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTMsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIAorICAgIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTMsIDQ1LCAKKyAgICA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgCisgICAgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTMsIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTIsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTIsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNTEsIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNTAsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNTAsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIAorICAgIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCAKKyAgICA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgCisgICAgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDksIAorICAgIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNTAsIDQ1LCA0OCwgNDgsIDEyOCwgCisgICAgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIAorICAgIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCAKKyAgICA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIAorICAgIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCAKKyAgICA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDksIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIAorICAgIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTQsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCAKKyAgICA2NSwgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTMsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgCisgICAgNzYsIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTIsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIAorICAgIDQ1LCA0OCwgNDgsIDQ1LCA0OCwgNTEsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCAKKyAgICA0OCwgNDgsIDQ1LCA0OCwgNTAsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgCisgICAgNDgsIDQ1LCA0OCwgNDksIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDQ1LCA0OCwgNDgsIAorICAgIDQ1LCA0OCwgNDgsIDEyOCwgNzIsIDc5LCA4MiwgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgNzYsIDEyOCwgNzIsIDc5LCA4MiwgCisgICAgNzMsIDkwLCA3OSwgNzgsIDg0LCA2NSwgMjA0LCA3MiwgNzksIDgyLCA3MywgMTI4LCA3MiwgNzksIDgyLCAxOTMsIDcyLCAKKyAgICA3OSwgNzksIDg1LCAxMjgsIDcyLCA3OSwgNzksIDgyLCA4NSwgMTI4LCA3MiwgNzksIDc5LCA4MCwgMTI4LCA3MiwgNzksIAorICAgIDc5LCA3OCwgMTI4LCA3MiwgNzksIDc5LCA3NSwgNjksIDY4LCAxMjgsIDcyLCA3OSwgNzksIDc1LCA2OSwgMTk2LCA3MiwgCisgICAgNzksIDc4LCA2OSwgODksIDY2LCA2OSwgNjksIDEyOCwgNzIsIDc5LCA3OCwgNjksIDIxNywgNzIsIDc5LCA3NywgNzksIDg0LCAKKyAgICA3MiwgNjksIDg0LCA3MywgNjcsIDEyOCwgNzIsIDc5LCA3NywgNzksIDg0LCA3MiwgNjksIDg0LCA3MywgMTk1LCA3MiwgNzksIAorICAgIDc2LCA3OSwgMTI4LCA3MiwgNzksIDc2LCA3NiwgNzksIDIxNSwgNzIsIDc5LCA3NiwgNjksIDEyOCwgNzIsIDc5LCA3NiwgCisgICAgNjgsIDczLCA3OCwgMTk5LCA3MiwgNzksIDc2LCA2NSwgNzcsIDEyOCwgNzIsIDc5LCA3NiwgNjUsIDIwNSwgNzIsIDc5LCAKKyAgICA3NSwgNjUsIDEyOCwgNzIsIDc5LCA2NywgNzUsIDY5LCAyMTcsIDcyLCA3OSwgNjcsIDcyLCA3OSwgMTI4LCA3MiwgNzgsIAorICAgIDg1LCA4NCwgMTI4LCA3MiwgNzgsIDg1LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA4NSwgNzksIDEyOCwgNzIsIDc4LCA4NSwgCisgICAgNjYsIDEyOCwgNzIsIDc4LCA3OSwgODgsIDEyOCwgNzIsIDc4LCA3OSwgODQsIDEyOCwgNzIsIDc4LCA3OSwgODAsIDEyOCwgCisgICAgNzIsIDc4LCA3MywgODgsIDEyOCwgNzIsIDc4LCA3MywgODQsIDEyOCwgNzIsIDc4LCA3MywgODAsIDEyOCwgNzIsIDc4LCAKKyAgICA3MywgNjksIDg4LCAxMjgsIDcyLCA3OCwgNzMsIDY5LCA4NCwgMTI4LCA3MiwgNzgsIDczLCA2OSwgODAsIDEyOCwgNzIsIAorICAgIDc4LCA3MywgNjksIDEyOCwgNzIsIDc4LCA3MywgMTI4LCA3MiwgNzgsIDY5LCA4OCwgMTI4LCA3MiwgNzgsIDY5LCA4MCwgCisgICAgMTI4LCA3MiwgNzgsIDY5LCAxMjgsIDcyLCA3OCwgNjUsIDg4LCAxMjgsIDcyLCA3OCwgNjUsIDg1LCAxMjgsIDcyLCA3OCwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA3OCwgNjUsIDgwLCAxMjgsIDcyLCA3OCwgNjUsIDEyOCwgNzIsIDc3LCA4OSwgODgsIDEyOCwgCisgICAgNzIsIDc3LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NywgODksIDgyLCAxMjgsIDcyLCA3NywgODksIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgODksIDEyOCwgNzIsIDc3LCA4NSwgODgsIDEyOCwgNzIsIDc3LCA4NSwgODQsIDEyOCwgNzIsIDc3LCA4NSwgODIsIAorICAgIDg4LCAxMjgsIDcyLCA3NywgODUsIDgyLCAxMjgsIDcyLCA3NywgODUsIDgwLCAxMjgsIDcyLCA3NywgODUsIDc5LCA4OCwgCisgICAgMTI4LCA3MiwgNzcsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc3LCA4NSwgNzksIDEyOCwgNzIsIDc3LCA4NSwgMTI4LCA3MiwgCisgICAgNzcsIDc5LCA4OCwgMTI4LCA3MiwgNzcsIDc5LCA4NCwgMTI4LCA3MiwgNzcsIDc5LCA4MCwgMTI4LCA3MiwgNzcsIDc5LCAKKyAgICAxMjgsIDcyLCA3NywgNzMsIDg4LCAxMjgsIDcyLCA3NywgNzMsIDg0LCAxMjgsIDcyLCA3NywgNzMsIDgwLCAxMjgsIDcyLCAKKyAgICA3NywgNzMsIDY5LCA4OCwgMTI4LCA3MiwgNzcsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc3LCA3MywgNjksIDEyOCwgNzIsIAorICAgIDc3LCA3MywgMTI4LCA3MiwgNzcsIDY5LCAxMjgsIDcyLCA3NywgNjUsIDg4LCAxMjgsIDcyLCA3NywgNjUsIDg0LCAxMjgsIAorICAgIDcyLCA3NywgNjUsIDgwLCAxMjgsIDcyLCA3NywgNjUsIDEyOCwgNzIsIDc2LCA4OSwgODgsIDEyOCwgNzIsIDc2LCA4OSwgCisgICAgODQsIDEyOCwgNzIsIDc2LCA4OSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODksIDgyLCAxMjgsIDcyLCA3NiwgODksIDgwLCAKKyAgICAxMjgsIDcyLCA3NiwgODksIDEyOCwgNzIsIDc2LCA4NSwgODgsIDEyOCwgNzIsIDc2LCA4NSwgODQsIDEyOCwgNzIsIDc2LCAKKyAgICA4NSwgODIsIDg4LCAxMjgsIDcyLCA3NiwgODUsIDgyLCAxMjgsIDcyLCA3NiwgODUsIDgwLCAxMjgsIDcyLCA3NiwgODUsIAorICAgIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDg1LCA3OSwgODAsIDEyOCwgNzIsIDc2LCA4NSwgNzksIDEyOCwgNzIsIDc2LCA4NSwgCisgICAgMTI4LCA3MiwgNzYsIDc5LCA4OCwgMTI4LCA3MiwgNzYsIDc5LCA4MCwgMTI4LCA3MiwgNzYsIDc5LCAxMjgsIDcyLCA3NiwgCisgICAgNzMsIDg4LCAxMjgsIDcyLCA3NiwgNzMsIDg0LCAxMjgsIDcyLCA3NiwgNzMsIDgwLCAxMjgsIDcyLCA3NiwgNzMsIDY5LCAKKyAgICA4OCwgMTI4LCA3MiwgNzYsIDczLCA2OSwgODAsIDEyOCwgNzIsIDc2LCA3MywgNjksIDEyOCwgNzIsIDc2LCA3MywgMTI4LCAKKyAgICA3MiwgNzYsIDY5LCA4OCwgMTI4LCA3MiwgNzYsIDY5LCA4MCwgMTI4LCA3MiwgNzYsIDY5LCAxMjgsIDcyLCA3NiwgNjUsIAorICAgIDg4LCAxMjgsIDcyLCA3NiwgNjUsIDg1LCAxMjgsIDcyLCA3NiwgNjUsIDg0LCAxMjgsIDcyLCA3NiwgNjUsIDgwLCAxMjgsIAorICAgIDcyLCA3NiwgNjUsIDEyOCwgNzIsIDc2LCAxMjgsIDcyLCA3NSwgMTI4LCA3MiwgNzMsIDkwLCA2NiwgMTI4LCA3MiwgNzMsIAorICAgIDg5LCA3OSwgMTI4LCA3MiwgNzMsIDg0LCA4NCwgNzMsIDc4LCAxOTksIDcyLCA3MywgODMsIDg0LCA3OSwgODIsIDczLCAKKyAgICAxOTUsIDcyLCA3MywgODIsIDczLCA4MSwgMTI4LCA3MiwgNzMsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDcyLCA3MywgNzgsIAorICAgIDcxLCA2OSwgMTk2LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDczLCA3MSwgNzIsIDQ1LCA4MywgODAsIDY5LCA2OSwgCisgICAgMTk2LCA3MiwgNzMsIDcxLCA3MiwgNDUsIDgyLCA2OSwgODYsIDY5LCA4MiwgODMsIDY5LCA2OCwgNDUsIDE4NSwgNzIsIDczLCAKKyAgICA3MSwgNzIsIDQ1LCA3NiwgNzksIDIxNSwgNzIsIDczLCA3MSwgNzIsIDQ1LCA3MiwgNjksIDY5LCA3NiwgNjksIDE5NiwgNzIsIAorICAgIDczLCA2OSwgODgsIDEyOCwgNzIsIDczLCA2OSwgODUsIDcyLCA0NSwgODMsIDczLCA3OSwgODMsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgODIsIDczLCA2OSwgODUsIDc2LCAxMjgsIDcyLCA3MywgNjksIDg1LCA3MiwgNDUsIDgwLCA3MywgNjksIAorICAgIDg1LCA4MCwgMTI4LCA3MiwgNzMsIDY5LCA4NSwgNzIsIDQ1LCA3OCwgNzMsIDY5LCA4NSwgNzgsIDEyOCwgNzIsIDczLCA2OSwgCisgICAgODUsIDcyLCA0NSwgNzcsIDczLCA2OSwgODUsIDc3LCAxMjgsIDcyLCA3MywgNjksIDg1LCAyMDAsIDcyLCA3MywgNjksIDgyLCAKKyAgICA3OSwgNzEsIDc2LCA4OSwgODAsIDcyLCA3MywgMTk1LCA3MiwgNzMsIDY5LCAxMjgsIDcyLCA3MywgNjgsIDczLCA3OCwgCisgICAgMTk5LCA3MiwgNzMsIDY4LCA2OSwgODQsIDEyOCwgNzIsIDczLCA2OCwgNjksIDEyOCwgNzIsIDczLCA2NiwgNzMsIDgzLCAKKyAgICA2NywgODUsIDgzLCAxMjgsIDcyLCA3MywgNDUsIDgyLCA2OSwgODMsIDEyOCwgNzIsIDcyLCA4NywgNjUsIDEyOCwgNzIsIAorICAgIDcyLCA4NSwgMTI4LCA3MiwgNzIsIDczLCAxMjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDcyLCA3MiwgNjksIDEyOCwgNzIsIAorICAgIDcyLCA2NSwgNjUsIDEyOCwgNzIsIDcxLCAxMjgsIDcyLCA2OSwgODksIDg0LCAxMjgsIDcyLCA2OSwgODgsIDczLCA3MCwgCisgICAgNzksIDgyLCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgODIsIDY1LCAyMDUsIDcyLCA2OSwgODgsIDY1LCA3MSwgNzksIDc4LCAKICAgICAxMjgsIDcyLCA2OSwgODIsIDg1LCA4NCwgODUsIDEyOCwgNzIsIDY5LCA4MiwgODUsIDEyOCwgNzIsIDY5LCA4MiwgNzcsIAogICAgIDczLCA4NCwgNzMsIDY1LCAyMDYsIDcyLCA2OSwgODIsIDc3LCA3MywgNzksIDc4LCA3MywgNjUsIDIwNiwgNzIsIDY5LCA4MiwgCiAgICAgNzcsIDY5LCA4MywgMTI4LCA3MiwgNjksIDgyLCA2OSwgMTI4LCA3MiwgNjksIDgyLCA2NiwgMTI4LCA3MiwgNjksIDgyLCAKQEAgLTM3NTAsNDI5ICszNzc5LDQzOCBAQAogICAgIDQ1LCA2OSwgODYsIDczLCAyMDQsIDcyLCA2OSwgNjUsIDY4LCA4MywgODQsIDgyLCA3OSwgNzUsIDY5LCAxMjgsIDcyLCA2OSwgCiAgICAgNjUsIDY4LCA4MywgODQsIDc5LCA3OCwgMTk3LCA3MiwgNjksIDY1LCA2OCwgODAsIDcyLCA3OSwgNzgsIDY5LCAxMjgsIDcyLCAKICAgICA2OSwgNjUsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDcyLCA2OSwgNjUsIDY4LCA0NSwgNjYsIDY1LCA3OCwgNjgsIDY1LCA3MSwgCi0gICAgNjksIDEyOCwgNzIsIDY2LCA2NSwgODMsIDY1LCA0NSwgNjksIDgzLCA2NSwgODMsIDE5MywgNzIsIDY2LCA2NSwgODMsIAotICAgIDE5MywgNzIsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzIsIDY1LCA4NywgNzQsIDEyOCwgNzIsIDY1LCA4NiwgCi0gICAgNjksIDEyOCwgNzIsIDY1LCA4NSwgODAsIDg0LCA4MywgODQsIDczLCA3NywgNzcsIDY5LCAxMjgsIDcyLCA2NSwgMjEzLCAKLSAgICA3MiwgNjUsIDg0LCA4MiwgNjUsIDIwNiwgNzIsIDY1LCA4NCwgNzIsIDczLCAxMjgsIDcyLCA2NSwgODQsIDY5LCAxMjgsIAotICAgIDcyLCA2NSwgODQsIDY3LCA3MiwgNzMsIDc4LCAxOTksIDcyLCA2NSwgODQsIDY1LCAxOTgsIDcyLCA2NSwgODMsIDY5LCAKLSAgICAyMTAsIDcyLCA2NSwgODMsIDY1LCA3OCwgODQsIDY1LCAxMjgsIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDc4LCAxMjgsIAotICAgIDcyLCA2NSwgODIsIDgwLCA3OSwgNzksIDIwNiwgNzIsIDY1LCA4MiwgNzcsIDc5LCA3OCwgNzMsIDY3LCAxMjgsIDcyLCA2NSwgCi0gICAgODIsIDc1LCA3NiwgNjksIDY1LCAyMDYsIDcyLCA2NSwgODIsIDY4LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MiwgNjUsIDgyLCAKLSAgICAxOTYsIDcyLCA2NSwgODAsIDgwLCAyMTcsIDcyLCA2NSwgNzgsIDg1LCA3OCwgNzksIDIwNywgNzIsIDY1LCA3OCwgNzEsIAotICAgIDkwLCA3MiwgNzksIDIxMywgNzIsIDY1LCA3OCwgNjgsIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCAyMTEsIDcyLCA2NSwgCi0gICAgNzgsIDY4LCA3NiwgNjksIDgzLCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDY2LCAKLSAgICA2NSwgNzEsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3OSwgODYsIDY1LCA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIAotICAgIDc5LCA4NiwgNjUsIDIwNCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgCi0gICAgNDUsIDcyLCA3OSwgNzksIDIwMywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgNjksIDEyOCwgNzIsIDY1LCAKLSAgICA3OCwgNjgsIDQ1LCA3MiwgNzMsIDc4LCA3MSwgMTk3LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3NiwgNjUsIDg0LCAxMjgsIAotICAgIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzAsIDc2LCA2NSwgMjEyLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcwLCA3MywgODMsIDg0LCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAotICAgIDY4LCA0NSwgNjcsIDg1LCA4MiwgNzYsIDczLCA2NywgODUsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgwLCAKLSAgICAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDg1LCAyMDgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDc2LCA2NSwgODcsIAotICAgIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCAyMTUsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc4LCAKLSAgICA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY1LCA3OCwgNzEsIDc2LCAxOTcsIAotICAgIDcyLCA2NSwgNzgsIDY4LCAxMjgsIDcyLCA2NSwgNzgsIDQ1LCA2NSwgNzUsIDY1LCA4NCwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgCi0gICAgNjUsIDEyOCwgNzIsIDY1LCA3NywgOTAsIDE5MywgNzIsIDY1LCA3NywgODMsIDg0LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCAKLSAgICA3NywgNjksIDgyLCAxMjgsIDcyLCA2NSwgNzcsIDc3LCA2OSwgMjEwLCA3MiwgNjUsIDc3LCA2NiwgODUsIDgyLCA3MSwgNjksIAotICAgIDgyLCAxMjgsIDcyLCA2NSwgNzYsIDgxLCA2NSwgMTI4LCA3MiwgNjUsIDc2LCA3OSwgMTI4LCA3MiwgNjUsIDc2LCA3MCwgCi0gICAgNDUsIDY3LCA3MywgODIsIDY3LCA3NiwgMTk3LCA3MiwgNjUsIDc2LCA3MCwgMTI4LCA3MiwgNjUsIDc2LCA2NiwgNjksIDgyLCAKLSAgICA2OCwgMTI4LCA3MiwgNjUsIDc2LCA2NSwgNzgsIDg0LCA2NSwgMTI4LCA3MiwgNjUsIDczLCA4NCwgODUsIDEyOCwgNzIsIAotICAgIDY1LCA3MywgMjExLCA3MiwgNjUsIDczLCA4MiwgNjcsIDg1LCA4NCwgMTI4LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA3MiwgCi0gICAgNjUsIDcxLCA3NiwgNjUsIDIxOCwgNzIsIDY1LCA3MSwgNzYsIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgNjUsIAotICAgIDEyOCwgNzIsIDY1LCA3MCwgODUsIDc1LCA3MiwgMTI4LCA3MiwgNjUsIDY5LCA3MSwgMjA0LCA3MiwgNjUsIDY1LCA4MiwgCi0gICAgODUsIDEyOCwgNzIsIDY1LCA2NSwgNzcsIDEyOCwgNzIsIDY1LCAxOTMsIDcyLCA2NSwgNDUsIDcyLCA2NSwgMTI4LCA3MiwgCi0gICAgNDgsIDQ4LCA1NiwgMTI4LCA3MiwgNDgsIDQ4LCA1NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNzIsIDQ4LCAKLSAgICA0OCwgNTQsIDEyOCwgNzIsIDQ4LCA0OCwgNTMsIDEyOCwgNzIsIDQ4LCA0OCwgNTIsIDEyOCwgNzIsIDQ4LCA0OCwgNTEsIAotICAgIDEyOCwgNzIsIDQ4LCA0OCwgNTAsIDEyOCwgNzIsIDQ4LCA0OCwgNDksIDEyOCwgNzIsIDQ1LCA4NCwgODksIDgwLCAxOTcsIAotICAgIDcxLCA4OSwgODUsIDEyOCwgNzEsIDg5LCA3OSwgNzgsIDEyOCwgNzEsIDg5LCA3OSwgMTI4LCA3MSwgODksIDczLCAxMjgsIAotICAgIDcxLCA4OSwgNzAsIDIxMywgNzEsIDg5LCA2OSwgNjksIDEyOCwgNzEsIDg5LCA2NSwgODMsIDEyOCwgNzEsIDg5LCA2NSwgCi0gICAgNjUsIDEyOCwgNzEsIDg5LCA2NSwgMTI4LCA3MSwgODksIDEyOCwgNzEsIDg3LCA4NSwgMTI4LCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA4NywgNjksIDY5LCAxMjgsIDcxLCA4NywgNjksIDEyOCwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgNzEsIDg3LCA2NSwgCi0gICAgMTI4LCA3MSwgODYsIDY1LCA3OCwgNzEsIDEyOCwgNzEsIDg2LCAxMjgsIDcxLCA4NSwgODIsIDg1LCA4MywgNzIsIDEyOCwgCi0gICAgNzEsIDg1LCA4MiwgODUsIDc4LCAxMjgsIDcxLCA4NSwgODIsIDc3LCA4NSwgNzUsIDcyLCAyMDEsIDcxLCA4NSwgODIsIDY1LCAKLSAgICA3NywgODUsIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNTUsIDEyOCwgNzEsIDg1LCA3OCwgODUsIDEyOCwgNzEsIAotICAgIDg1LCA3OCwgMjEzLCA3MSwgODUsIDIwNSwgNzEsIDg1LCA3NiwgMTI4LCA3MSwgODUsIDc0LCA2NSwgODIsIDY1LCA4NCwgCi0gICAgMjAxLCA3MSwgODUsIDczLCA4NCwgNjUsIDgyLCAxMjgsIDcxLCA4NSwgMTk5LCA3MSwgODUsIDY5LCA3MywgMTI4LCA3MSwgCi0gICAgODUsIDY5LCA3MiwgMTI4LCA3MSwgODUsIDY5LCAyMDAsIDcxLCA4NSwgNjgsIDEyOCwgNzEsIDg1LCAxOTYsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2OCwgODMsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgNjgsIDc4LCA2OSwgODMsIAotICAgIDgzLCAxMjgsIDcxLCA4NSwgNjUsIDgyLCA2OCwgNjksIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCAxMjgsIDcxLCA4NSwgCi0gICAgNjUsIDgyLCA2NSwgNzgsIDIwMSwgNzEsIDg1LCAxOTMsIDcxLCA4NSwgMTc4LCA3MSwgODQsIDY5LCAyMTAsIDcxLCA4MywgCi0gICAgODUsIDc3LCAxMjgsIDcxLCA4MywgODUsIDIwNSwgNzEsIDgyLCAyMTMsIDcxLCA4MiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzEsIDgyLCA3OSwgODUsIDc4LCA2OCwgMTI4LCA3MSwgODIsIDc5LCA3OCwgODQsIDcyLCA3MywgODMsIDc3LCA2NSwgODQsIAotICAgIDY1LCAxMjgsIDcxLCA4MiwgNzMsIDc4LCA3OCwgNzMsIDc4LCAxOTksIDcxLCA4MiwgNzMsIDc3LCA2NSwgNjcsIDczLCA3OCwgCi0gICAgMTk5LCA3MSwgODIsIDY5LCA3MSwgNzksIDgyLCA3MywgNjUsIDIwNiwgNzEsIDgyLCA2OSwgNjksIDIwNiwgNzEsIDgyLCAKLSAgICA2OSwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MSwgODIsIDY5LCA2NSwgODQsIDY5LCA4MiwgNDUsIDg0LCA3MiwgCi0gICAgNjUsIDc4LCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgMjA2LCA3MSwgODIsIDY5LCAKLSAgICA2NSwgODQsIDY5LCAyMTAsIDcxLCA4MiwgNjksIDY1LCAyMTIsIDcxLCA4MiwgNjUsIDg2LCA2OSwgODksIDY1LCA4MiwgCi0gICAgMTk2LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA3NywgNjUsIDY3LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDg2LCAKLSAgICA2OSwgNDUsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDcxLCA4MiwgNjUsIDg2LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA4NiwgCi0gICAgMTk3LCA3MSwgODIsIDY1LCA4NCwgNjksIDgyLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCA4MywgMTI4LCA3MSwgODIsIDY1LCAKLSAgICA4MywgMjExLCA3MSwgODIsIDY1LCA4MywgMjA4LCA3MSwgODIsIDY1LCA4MCwgNzIsIDY5LCA3NywgMTk3LCA3MSwgODIsIAotICAgIDY1LCA4MCwgNjksIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDc4LCA4NCwgNzIsIDE5MywgNzEsIDgyLCA2NSwgNzcsIDc3LCAKLSAgICAxOTMsIDcxLCA4MiwgNjUsIDczLCA3OCwgMTI4LCA3MSwgODIsIDY1LCA2OCwgODUsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIAotICAgIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIDc2LCAxMjgsIDcxLCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA3MSwgODIsIDY1LCA2NywgCi0gICAgMTk3LCA3MSwgODAsIDY1LCAxMjgsIDcxLCA3OSwgODIsIDg0LCA3MiwgNzcsIDczLCA3NSwgNzksIDIwNiwgNzEsIDc5LCAKLSAgICA4MiwgODQsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCA4NCwgNjksIDgyLCA3MywgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIAotICAgIDgzLCA4OSwgNzgsIDg0LCA3MiwgNjksIDg0LCA3OSwgNzgsIDEyOCwgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDcxLCA3OSwgCi0gICAgODIsIDcxLCA3MywgMTI4LCA3MSwgNzksIDgyLCA2NSwgMTI4LCA3MSwgNzksIDc5LCAxOTYsIDcxLCA3OSwgNzgsIDcxLCAKLSAgICAxMjgsIDcxLCA3OSwgNzYsIDcwLCA2OSwgODIsIDEyOCwgNzEsIDc5LCA3NiwgNjgsIDEyOCwgNzEsIDc5LCA3NSwgMTI4LCAKLSAgICA3MSwgNzksIDczLCA3OCwgMTk5LCA3MSwgNzksIDY2LCA3NiwgNzMsIDc4LCAxMjgsIDcxLCA3OSwgNjUsIDc2LCAxMjgsIAotICAgIDcxLCA3OSwgNjUsIDIwNCwgNzEsIDc5LCA2NSwgMTI4LCA3MSwgNzgsIDg5LCA3MywgODMsIDEyOCwgNzEsIDc4LCA2NSwgCi0gICAgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA3MSwgNzYsIDc5LCA4NywgNzMsIDc4LCAxOTksIDcxLCA3NiwgNzksIDg0LCAKLSAgICA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgNzgsIDY4LCAyMDcsIAotICAgIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCA3MSwgNzYsIDY1LCAKLSAgICAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MywgODMsIDcyLCAKLSAgICAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIDg1LCA2OCwgNjUsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgODIsIDUxLCAxMjgsIAotICAgIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgNzMsIDgwLCAxMjgsIAotICAgIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCA3NywgNjksIDIwNCwgCi0gICAgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCA3MywgNjksIDg0LCAKLSAgICAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIDcxLCA3MywgNjYsIAotICAgIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIDcyLCA4NywgNjUsIAotICAgIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgNzEsIDcyLCA4NSwgCi0gICAgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCA3OSwgMTI4LCA3MSwgCi0gICAgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIDEyOCwgNzEsIDcyLCAKLSAgICA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNzgsIDEyOCwgNzEsIAotICAgIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA3MSwgNzIsIDY5LCAKLSAgICA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIAotICAgIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgNjksIDEyOCwgCi0gICAgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDgyLCAKLSAgICA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIDEyOCwgCi0gICAgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIDcxLCAKLSAgICA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAxMjgsIAotICAgIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIDEyOCwgCi0gICAgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIDcxLCAKLSAgICA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgNzEsIAotICAgIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCA3MSwgCi0gICAgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIDg4LCAKLSAgICAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgODAsIAotICAgIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgNzEsIAotICAgIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCA4NCwgCi0gICAgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIDY5LCAKLSAgICA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgNTAsIAotICAgIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIDIwNiwgCi0gICAgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgNzcsIDY5LCAKLSAgICA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIDE5NSwgNzEsIAotICAgIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgNjksIDc4LCA3MywgCi0gICAgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAxMjgsIDcxLCAKLSAgICA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIAotICAgIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgCi0gICAgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgCi0gICAgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCAKLSAgICA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIAotICAgIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAKLSAgICAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgCi0gICAgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCAKLSAgICA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIAotICAgIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgCi0gICAgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCAKLSAgICA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIAotICAgIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIAotICAgIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgCi0gICAgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCAKLSAgICA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCAKLSAgICA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIAotICAgIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIAotICAgIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgCi0gICAgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIAotICAgIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgCi0gICAgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAKLSAgICAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCAKLSAgICA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIAotICAgIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgCi0gICAgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgCi0gICAgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCAKLSAgICA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIAotICAgIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgCi0gICAgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCAKLSAgICA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCAKLSAgICA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIAotICAgIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgCi0gICAgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCAKLSAgICA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAKLSAgICAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCAKLSAgICA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCAKLSAgICA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCAKLSAgICA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIAotICAgIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCAKLSAgICA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIAotICAgIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIAotICAgIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgCi0gICAgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCAKLSAgICA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIAotICAgIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIAotICAgIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgCi0gICAgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCAKLSAgICA4MiwgNjksIDc4LCA2NywgMjAwLCA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIAotICAgIDc4LCA3NSwgMjExLCA3MCwgODIsIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgCi0gICAgNjUsIDc3LCA2OSwgMTI4LCA3MCwgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIAotICAgIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAKLSAgICAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIDc5LCA4NSwgODIsIDg0LCA2OSwgNjksIDc4LCAxMjgsIDcwLCA3OSwgODUsIAotICAgIDgyLCA4NCwgNjksIDY5LCAyMDYsIDcwLCA3OSwgODUsIDgyLCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgCi0gICAgNzksIDg1LCA4MiwgNDUsIDgzLCA4NCwgODIsIDczLCA3OCwgMTk5LCA3MCwgNzksIDg1LCA4MiwgNDUsIDgwLCA2OSwgODIsIAotICAgIDQ1LCA2OSwgMjA1LCA3MCwgNzksIDg1LCA4MiwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDc5LCA4NSwgMjEwLCA3MCwgCi0gICAgNzksIDg1LCA3OCwgODQsIDY1LCA3MywgNzgsIDEyOCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNzAsIDc5LCAKLSAgICA4MywgODQsIDY5LCA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA4NywgNjUsIDgyLCA2OCwgMTI4LCA3MCwgNzksIAotICAgIDgyLCA4NywgNjUsIDgyLCAxOTYsIDcwLCA3OSwgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzksIDgyLCA4NCwgMjE3LCA3MCwgCi0gICAgNzksIDgyLCA4NCwgNjksIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDIxMSwgNzAsIDc5LCA4MiwgNzcsIDY1LCA4NCwgODQsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgNzcsIDY1LCAyMTIsIDcwLCA3OSwgODIsIDc1LCA2OSwgMTk2LCA3MCwgNzksIAotICAgIDgyLCA2OSwgNzIsIDY5LCA2NSwgMTk2LCA3MCwgNzksIDgyLCA2NywgNjksIDgzLCAxMjgsIDcwLCA3OSwgODIsIDY3LCA2OSwgCi0gICAgMTI4LCA3MCwgNzksIDgwLCAxMjgsIDcwLCA3OSwgNzksIDg0LCA4MywgODQsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCAKLSAgICA3OSwgODQsIDgwLCA4MiwgNzMsIDc4LCA4NCwgODMsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDc4LCA3OSwgODQsIDE5NywgNzAsIAotICAgIDc5LCA3OSwgODQsIDY2LCA2NSwgNzYsIDc2LCAxMjgsIDcwLCA3OSwgNzksIDg0LCAxMjgsIDcwLCA3OSwgNzksIDc2LCAKLSAgICAxMjgsIDcwLCA3OSwgNzksIDY4LCAxMjgsIDcwLCA3OSwgNzksIDEyOCwgNzAsIDc5LCA3OCwgMjEyLCA3MCwgNzksIDc4LCAKLSAgICA3MSwgNzcsIDY1LCA3OCwgMTI4LCA3MCwgNzksIDc3LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA4OSwgMTI4LCA3MCwgNzksIAotICAgIDc2LCA3NiwgNzksIDg3LCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3OSwgNzYsIDY4LCA2OSwgODIsIDEyOCwgNzAsIDc5LCA3NiwgCi0gICAgNjgsIDY5LCAxOTYsIDcwLCA3OSwgNzEsIDcxLCA4OSwgMTI4LCA3MCwgNzksIDcxLCAxMjgsIDcwLCAyMDcsIDcwLCA3NywgCi0gICAgMTI4LCA3MCwgNzYsIDg5LCA3MywgNzgsIDE5OSwgNzAsIDc2LCA4OSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCAKLSAgICA4MiwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzMsIDc4LCAxOTksIDcwLCA3NiwgODUsIAotICAgIDg0LCA2OSwgMTI4LCA3MCwgNzYsIDg1LCA4MywgNzIsIDY5LCAxOTYsIDcwLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgCi0gICAgNzAsIDc2LCA3OSwgODcsIDY5LCA4MiwgODMsIDEyOCwgNzAsIDc2LCA3OSwgODcsIDY5LCAyMTAsIDcwLCA3NiwgNzksIDg1LCAKLSAgICA4MiwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjksIDg0LCA4NCwgNjksIDEyOCwgNzAsIDc2LCA3OSwgODIsIAotICAgIDY1LCAyMDQsIDcwLCA3NiwgNzksIDgwLCA4MCwgMjE3LCA3MCwgNzYsIDc5LCA3OSwgODIsIDEyOCwgNzAsIDc2LCA3OSwgCi0gICAgNzksIDIxMCwgNzAsIDc2LCA3MywgODAsIDEyOCwgNzAsIDc2LCA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzYsIDczLCAKLSAgICA2NywgMjAzLCA3MCwgNzYsIDY5LCA4OCwgODUsIDgzLCAxMjgsIDcwLCA3NiwgNjksIDg4LCA2OSwgMTk2LCA3MCwgNzYsIAotICAgIDY5LCA4OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDc5LCA3OCwgMTI4LCA3MCwgNzYsIDY5LCA4NSwgODIsIDQ1LCA2OCwgCi0gICAgNjksIDQ1LCA3NiwgNzMsIDgzLCAxMjgsIDcwLCA3NiwgNjUsIDg0LCA4NCwgNjksIDc4LCA2OSwgMTk2LCA3MCwgNzYsIDY1LCAKLSAgICA4NCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA4MywgCi0gICAgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUzLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNTIsIDEyOCwgNzAsIDc2LCAKLSAgICA2NSwgNzEsIDQ1LCA1MSwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUwLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgNDksIAotICAgIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDEyOCwgNzAsIDc2LCA2NSwgMTk5LCA3MCwgNzYsIDY1LCAxMjgsIDcwLCA3NiwgMTI4LCAKLSAgICA3MCwgNzMsIDg4LCA2OSwgNjgsIDQ1LCA3MCwgNzksIDgyLCAyMDUsIDcwLCA3MywgODgsIDEyOCwgNzAsIDczLCA4NiwgNjksIAotICAgIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCA3MCwgCi0gICAgNzMsIDg2LCAxOTcsIDcwLCA3MywgODQsIDkwLCA4MCwgNjUsIDg0LCA4MiwgNzMsIDY3LCAyMDMsIDcwLCA3MywgODQsIDY1LCAKLSAgICAxMjgsIDcwLCA3MywgODQsIDEyOCwgNzAsIDczLCA4MywgODQsIDY5LCAxOTYsIDcwLCA3MywgODMsIDcyLCA3MywgNzgsIAotICAgIDE5OSwgNzAsIDczLCA4MywgNzIsIDcyLCA3OSwgNzksIDc1LCAxMjgsIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCAKLSAgICAyMDMsIDcwLCA3MywgODMsIDcyLCA2OSwgODksIDY5LCAxMjgsIDcwLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3MywgODMsIAotICAgIDIwMCwgNzAsIDczLCA4MiwgODMsIDIxMiwgNzAsIDczLCA4MiwgNzMsIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgCi0gICAgODIsIDc1LCA4MywgMTI4LCA3MCwgNzMsIDgyLCA2OSwgODcsIDc5LCA4MiwgMjAzLCA3MCwgNzMsIDgyLCA2OSwgMTI4LCAKLSAgICA3MCwgNzMsIDgyLCAxOTcsIDcwLCA3MywgODAsIDEyOCwgNzAsIDczLCA3OCwgNzMsIDg0LCAxOTcsIDcwLCA3MywgNzgsIAotICAgIDcxLCA2OSwgODIsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDIxMSwgNzAsIDczLCA3OCwgNzEsIDY5LCA4MiwgCi0gICAgNzgsIDY1LCA3MywgNzYsIDgzLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDY5LCAxOTYsIDcwLCA3MywgNzgsIDcxLCAKLSAgICA2OSwgODIsIDQ1LCA4MCwgNzksIDgzLCAyMTIsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDEyOCwgNzAsIDczLCA3OCwgNzEsIAotICAgIDY5LCAyMTAsIDcwLCA3MywgNzgsIDY1LCA3OCwgNjcsIDczLCA2NSwgNzYsIDEyOCwgNzAsIDczLCA3OCwgNjUsIDc2LCAKLSAgICAxMjgsIDcwLCA3MywgNzYsIDIwNSwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIAotICAgIDE5NiwgNzAsIDczLCA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIAotICAgIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgCi0gICAgMTI4LCA3MCwgNzMsIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCAKLSAgICA3MywgNzEsIDcyLCA4NCwgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIAotICAgIDczLCA3MCwgODQsIDcyLCA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgCi0gICAgNzgsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCAKLSAgICA2OSwgNzYsIDE5NiwgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCAKLSAgICA3MCwgNjksIDg1LCA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIAotICAgIDg0LCA3MywgODYsIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAKLSAgICAyMTEsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIAotICAgIDY5LCA3OSwgMjAwLCA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA3MCwgNjksIDc3LCA3MywgCi0gICAgNzgsIDczLCA3OCwgMTk3LCA3MCwgNjksIDc3LCA2NSwgNzYsIDY5LCAxMjgsIDcwLCA2OSwgNzcsIDY1LCA3NiwgMTk3LCAKLSAgICA3MCwgNjksIDc2LCA3NiwgNzksIDg3LCA4MywgNzIsIDczLCA4MCwgMTI4LCA3MCwgNjksIDczLCAxMjgsIDcwLCA2OSwgNzIsIAotICAgIDIxMywgNzAsIDY5LCA3MiwgMTI4LCA3MCwgNjksIDIwMCwgNzAsIDY5LCA2OSwgNzgsIDcxLCAxMjgsIDcwLCA2OSwgNjksIAotICAgIDc3LCAxMjgsIDcwLCA2OSwgNjksIDY4LCAxMjgsIDcwLCA2OSwgNjksIDE5NiwgNzAsIDY5LCA2OSwgMTI4LCA3MCwgNjksIAotICAgIDY2LCA4MiwgODUsIDY1LCA4MiwgODksIDEyOCwgNzAsIDY5LCA2NSwgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY5LCA2NSwgCi0gICAgODQsIDcyLCA2OSwgMjEwLCA3MCwgNjksIDY1LCA4MiwgNzgsIDEyOCwgNzAsIDY5LCA2NSwgODIsIDcwLCA4NSwgMjA0LCAKLSAgICA3MCwgNjksIDY1LCA4MiwgMTI4LCA3MCwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MCwgNjUsIDg5LCAxMjgsIAotICAgIDcwLCA2NSwgODgsIDEyOCwgNzAsIDY1LCAyMTYsIDcwLCA2NSwgODQsIDczLCA3MSwgODUsIDY5LCAxMjgsIDcwLCA2NSwgCi0gICAgODQsIDcyLCA2OSwgODIsIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAKLSAgICA3OCwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDg0LCA2NSwgMjA2LCA3MCwgNjUsIDg0LCA3MiwgNjUsIDEyOCwgNzAsIAotICAgIDY1LCA4NCwgNzIsIDE5MywgNzAsIDY1LCA4NCwgMTI4LCA3MCwgNjUsIDgzLCA4NCwgMTI4LCA3MCwgNjUsIDgyLCA4MywgCi0gICAgMjAxLCA3MCwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODEsIDEyOCwgNzAsIDY1LCA4MCwgMTI4LCA3MCwgNjUsIDc4LCA3MSwgCi0gICAgMTI4LCA3MCwgNjUsIDc4LCA2OSwgODIsIDc5LCA4MywgNzMsIDIxMSwgNzAsIDY1LCA3OCwgMTI4LCA3MCwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDg5LCAxMjgsIDcwLCA2NSwgNzcsIDEyOCwgNzAsIDY1LCA3NiwgNzYsIDY5LCAyMDYsIDcwLCA2NSwgNzQsIAotICAgIDEyOCwgNzAsIDY1LCA3MywgNzYsIDg1LCA4MiwgNjksIDEyOCwgNzAsIDY1LCA3MywgNzIsIDg1LCAxMjgsIDcwLCA2NSwgCi0gICAgNzMsIDY2LCAxMjgsIDcwLCA2NSwgNzIsIDgyLCA2OSwgNzgsIDcyLCA2OSwgNzMsIDg0LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCAKLSAgICA3OSwgODIsIDg5LCAxMjgsIDcwLCA2NSwgNjcsIDg0LCA3OSwgMjEwLCA3MCwgNjUsIDY3LCA4MywgNzMsIDc3LCA3MywgNzYsIAotICAgIDE5NywgNzAsIDY1LCA2NywgNzMsIDc4LCA3MSwgODMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1NCwgMTI4LCA3MCwgCi0gICAgNjUsIDY3LCA2OSwgNDUsIDUzLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTIsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCAKLSAgICA1MSwgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUwLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNDksIDEyOCwgNzAsIAotICAgIDY1LCA2NSwgNzcsIDY1LCA2OSwgMTI4LCA3MCwgNjUsIDY1LCA3MywgMTI4LCA3MCwgNjUsIDY1LCA3MCwgODUsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MywgNTEsIDEyOCwgNzAsIDQ4LCA1MywgNTAsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY3LCAxMjgsIDcwLCAKLSAgICA0OCwgNTMsIDQ5LCA2NiwgMTI4LCA3MCwgNDgsIDUzLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MywgNDgsIDEyOCwgNzAsIDQ4LCA1MiwgNTcsIDEyOCwgNzAsIDQ4LCA1MiwgNTYsIDEyOCwgNzAsIDQ4LCA1MiwgCi0gICAgNTUsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUyLCA1MywgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTMsIDEyOCwgNzAsIDQ4LCA1MiwgNTIsIAotICAgIDEyOCwgNzAsIDQ4LCA1MiwgNTEsIDEyOCwgNzAsIDQ4LCA1MiwgNTAsIDEyOCwgNzAsIDQ4LCA1MiwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MiwgNDgsIDEyOCwgNzAsIDQ4LCA1MSwgNTcsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDY1LCAxMjgsIDcwLCA0OCwgCi0gICAgNTEsIDU2LCAxMjgsIDcwLCA0OCwgNTEsIDU1LCA2NSwgMTI4LCA3MCwgNDgsIDUxLCA1NSwgMTI4LCA3MCwgNDgsIDUxLCAKLSAgICA1NCwgMTI4LCA3MCwgNDgsIDUxLCA1MywgMTI4LCA3MCwgNDgsIDUxLCA1MiwgMTI4LCA3MCwgNDgsIDUxLCA1MSwgMTI4LCAKLSAgICA3MCwgNDgsIDUxLCA1MCwgMTI4LCA3MCwgNDgsIDUxLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNDksIDEyOCwgNzAsIAotICAgIDQ4LCA1MSwgNDgsIDEyOCwgNzAsIDQ4LCA1MCwgNTcsIDEyOCwgNzAsIDQ4LCA1MCwgNTYsIDEyOCwgNzAsIDQ4LCA1MCwgCi0gICAgNTUsIDEyOCwgNzAsIDQ4LCA1MCwgNTQsIDEyOCwgNzAsIDQ4LCA1MCwgNTMsIDEyOCwgNzAsIDQ4LCA1MCwgNTIsIDEyOCwgCi0gICAgNzAsIDQ4LCA1MCwgNTEsIDEyOCwgNzAsIDQ4LCA1MCwgNTAsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDY1LCAxMjgsIDcwLCAKLSAgICA0OCwgNTAsIDQ5LCAxMjgsIDcwLCA0OCwgNTAsIDQ4LCAxMjgsIDcwLCA0OCwgNDksIDU3LCAxMjgsIDcwLCA0OCwgNDksIAotICAgIDU2LCAxMjgsIDcwLCA0OCwgNDksIDU1LCAxMjgsIDcwLCA0OCwgNDksIDU0LCAxMjgsIDcwLCA0OCwgNDksIDUzLCAxMjgsIAotICAgIDcwLCA0OCwgNDksIDUyLCAxMjgsIDcwLCA0OCwgNDksIDUxLCA2NSwgMTI4LCA3MCwgNDgsIDQ5LCA1MSwgMTI4LCA3MCwgCi0gICAgNDgsIDQ5LCA1MCwgMTI4LCA3MCwgNDgsIDQ5LCA0OSwgMTI4LCA3MCwgNDgsIDQ5LCA0OCwgMTI4LCA3MCwgNDgsIDQ4LCAKLSAgICA1NywgMTI4LCA3MCwgNDgsIDQ4LCA1NiwgMTI4LCA3MCwgNDgsIDQ4LCA1NSwgMTI4LCA3MCwgNDgsIDQ4LCA1NCwgMTI4LCAKLSAgICA3MCwgNDgsIDQ4LCA1MywgMTI4LCA3MCwgNDgsIDQ4LCA1MiwgMTI4LCA3MCwgNDgsIDQ4LCA1MSwgMTI4LCA3MCwgNDgsIAotICAgIDQ4LCA1MCwgMTI4LCA3MCwgNDgsIDQ4LCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA0OCwgNDksIDEyOCwgNjksIDkwLCA4MywgCi0gICAgMTI4LCA2OSwgOTAsIDIwMCwgNjksIDkwLCA2OSwgNzgsIDEyOCwgNjksIDkwLCA2OSwgMjA2LCA2OSwgOTAsIDEyOCwgNjksIAotICAgIDg5LCA4OSwgODksIDEyOCwgNjksIDg5LCA2OSwgODMsIDEyOCwgNjksIDg5LCA2OSwgMjExLCA2OSwgODksIDY5LCA3NiwgCi0gICAgNjUsIDgzLCA3MiwgNjksIDIxMSwgNjksIDg5LCA2OSwgNzEsIDc2LCA2NSwgODMsIDgzLCA2OSwgODMsIDEyOCwgNjksIDg5LCAKLSAgICA2OSwgNzEsIDY1LCA5MCwgNjksIDQ1LCA4NywgNjUsIDc2LCA3NiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgCi0gICAgNzEsIDY1LCA5MCwgNjksIDQ1LCA3MCwgNzYsIDc5LCA3OSwgODIsIDgwLCA3NiwgNjUsIDc4LCAxOTcsIDY5LCA4OSwgNjksIAotICAgIDY2LCA4MiwgNzksIDg3LCAyMTEsIDY5LCA4OSwgMTk3LCA2OSwgODksIDY2LCA2OSwgODksIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjksIDg4LCA4NCwgODIsIDY5LCA3NywgNjksIDc2LCAyMTcsIAotICAgIDY5LCA4OCwgODQsIDgyLCA2NSwgODQsIDY5LCA4MiwgODIsIDY5LCA4MywgODQsIDgyLCA3MywgNjUsIDIwNCwgNjksIDg4LCAKLSAgICA4NCwgODIsIDY1LCA0NSwgNzYsIDc5LCAyMTUsIDY5LCA4OCwgODQsIDgyLCA2NSwgNDUsIDcyLCA3MywgNzEsIDIwMCwgNjksIAotICAgIDg4LCA4NCwgODIsIDE5MywgNjksIDg4LCA4NCwgNjksIDc4LCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgCi0gICAgNzgsIDY4LCA2OSwgNjgsIDEyOCwgNjksIDg4LCA4NCwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjksIDg4LCA4MCwgODIsIDY5LCAKLSAgICA4MywgODMsIDczLCA3OSwgNzgsIDc2LCA2OSwgODMsIDIxMSwgNjksIDg4LCA4MCwgNzksIDc4LCA2OSwgNzgsIDIxMiwgNjksIAotICAgIDg4LCA3OSwgMTI4LCA2OSwgODgsIDIwNywgNjksIDg4LCA3MywgODMsIDg0LCA4MywgMTI4LCA2OSwgODgsIDczLCA4MywgCi0gICAgODQsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDg1LCA4MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA3MiwgNjUsIDc2LCAKLSAgICA2OSwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjksIDg4LCA2NywgNzYsIAotICAgIDY1LCA3NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjksIDg4LCA2NywgNzMsIDg0LCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCi0gICAgNjksIDg4LCA2NywgNzIsIDY1LCA3OCwgNzEsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDY5LCA4MywgODMsIDEyOCwgNjksIDg4LCAKLSAgICA2NywgNjksIDc2LCA3NiwgNjksIDc4LCA4NCwgMTI4LCA2OSwgODcsIDY5LCAxMjgsIDY5LCA4NiwgNjksIDgyLCAyMTcsIAotICAgIDY5LCA4NiwgNjksIDgyLCA3MSwgODIsIDY5LCA2OSwgMjA2LCA2OSwgODYsIDY5LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2OSwgCi0gICAgODUsIDgyLCA3OSwgODAsIDY5LCA2NSwgMjA2LCA2OSwgODUsIDgyLCA3OSwgODAsIDY5LCA0NSwgNjUsIDcwLCA4MiwgNzMsIAotICAgIDY3LCA2NSwgMTI4LCA2OSwgODUsIDgyLCA3OSwgNDUsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDY3LCAyMTcsIDY5LCA4NSwgCi0gICAgODIsIDIwNywgNjksIDg1LCA3NiwgNjksIDIxMCwgNjksIDg1LCA0NSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNzksIDEyOCwgCi0gICAgNjksIDg1LCA0NSwgNjksIDg1LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgMTI4LCAKLSAgICA2OSwgODUsIDQ1LCA2NSwgMTI4LCA2OSwgODQsIDg4LCAxMjgsIDY5LCA4NCwgNzgsIDY1LCA3MiwgODQsIDY1LCAxMjgsIAotICAgIDY5LCA4NCwgNzIsIDY5LCAyMDQsIDY5LCA4NCwgNjksIDgyLCA3OSwgMjA2LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCi0gICAgODksIDEyOCwgNjksIDg0LCA2OSwgODIsIDc4LCA3MywgODQsIDIxNywgNjksIDg0LCA2NiwgMTI4LCA2OSwgODMsIDkwLCAKLSAgICAxMjgsIDY5LCA4MywgODUsIDc1LCA4NSwgODUsIDY4LCA3OSwgMTI4LCA2OSwgODMsIDg0LCA3MywgNzcsIDY1LCA4NCwgNjksIAotICAgIDgzLCAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2OSwgODMsIDcyLCA2OSwgNTEsIDEyOCwgCi0gICAgNjksIDgzLCA3MiwgNTAsIDQ5LCAxMjgsIDY5LCA4MywgNzIsIDQ5LCA1NCwgMTI4LCA2OSwgODMsIDY3LCA2NSwgODAsIDY5LCAKLSAgICAxMjgsIDY5LCA4MywgNjcsIDEyOCwgNjksIDgzLCA2NSwgMTI4LCA2OSwgODMsIDQ1LCA4NCwgNjksIDEyOCwgNjksIDgzLCAKLSAgICA0NSwgNTEsIDEyOCwgNjksIDgzLCA0NSwgNTAsIDEyOCwgNjksIDgzLCA0NSwgNDksIDEyOCwgNjksIDgyLCA4MiwgNzksIAotICAgIDgyLCA0NSwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTYsIDY5LCA4MiwgODIsIDEyOCwgNjksIDgyLCA3MywgNzgsIDUwLCAKLSAgICAxMjgsIDY5LCA4MiwgNzMsIDc4LCAxNzgsIDY5LCA4MiwgNzEsIDEyOCwgNjksIDgyLCA2NSwgODMsIDE5NywgNjksIDgxLCAKLSAgICA4NSwgNzMsIDg2LCA2NSwgNzYsIDY5LCA3OCwgMjEyLCA2OSwgODEsIDg1LCA3MywgNzYsIDY1LCA4NCwgNjksIDgyLCA2NSwgCi0gICAgMjA0LCA2OSwgODEsIDg1LCA3MywgNjgsIDEyOCwgNjksIDgxLCA4NSwgNzMsIDY1LCA3OCwgNzEsIDg1LCA3NiwgNjUsIAotICAgIDIxMCwgNjksIDgxLCA4NSwgNjUsIDc2LCA4MywgMTI4LCA2OSwgODEsIDg1LCA2NSwgNzYsIDIxMSwgNjksIDgxLCA4NSwgCi0gICAgNjUsIDc2LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY5LCA4MCwgODMsIDczLCA3NiwgNzksIAotICAgIDIwNiwgNjksIDgwLCA3OSwgNjcsIDcyLCAxMjgsIDY5LCA4MCwgNzMsIDcxLCA4MiwgNjUsIDgwLCA3MiwgNzMsIDE5NSwgCi0gICAgNjksIDgwLCA3MywgNjgsIDY1LCA4NSwgODIsIDY5LCA2NSwgMjA2LCA2OSwgODAsIDY5LCA3OCwgODQsIDcyLCA2OSwgODQsIAotICAgIDczLCAxOTUsIDY5LCA4MCwgNjksIDcxLCA2OSwgODIsIDc3LCA2NSwgMTI4LCA2OSwgODAsIDY1LCA2NywgMjEyLCA2OSwgCi0gICAgNzksIDg0LCAxMjgsIDY5LCA3OSwgNzcsIDEyOCwgNjksIDc5LCA3NiwgNzIsIDg4LCAxMjgsIDY5LCA3OSwgNzYsIDEyOCwgCi0gICAgNjksIDc5LCA3MiwgMTI4LCA2OSwgNzgsIDg5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCA2OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg2LCA2OSwgNzYsIDc5LCA4MCwgMTk3LCA2OSwgNzgsIDg1LCA3NywgNjksIDgyLCA2NSwgODQsIDczLCA3OSwgCi0gICAgMjA2LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA1MCwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgODksIDQ1LCA0OSwgMTI4LCAKLSAgICA2OSwgNzgsIDg0LCA4MiwgODksIDEyOCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjksIDc4LCA4NCwgNzIsIDg1LCA4MywgNzMsIAotICAgIDY1LCA4MywgNzcsIDEyOCwgNjksIDc4LCA4NCwgNjksIDgyLCA4MCwgODIsIDczLCA4MywgNjksIDEyOCwgNjksIDc4LCA4NCwgCi0gICAgNjksIDgyLCA3MywgNzgsIDE5OSwgNjksIDc4LCA4NCwgNjksIDgyLCAxMjgsIDY5LCA3OCwgODQsIDY5LCAyMTAsIDY5LCAKLSAgICA3OCwgODQsIDQ1LCA4MywgNzIsIDY1LCA4MCwgNjksIDE5NiwgNjksIDc4LCA4MSwgODUsIDczLCA4MiwgODksIDEyOCwgNjksIAotICAgIDc4LCA4MSwgMTI4LCA2OSwgNzgsIDc5LCAyMTEsIDY5LCA3OCwgNzgsIDczLCAxMjgsIDY5LCA3OCwgNzgsIDEyOCwgNjksIAotICAgIDc4LCA3NiwgNjUsIDgyLCA3MSwgNjksIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3OCwgNzEsIDczLCA3OCwgNjksIDEyOCwgCi0gICAgNjksIDc4LCA2OCwgNzksIDcwLCA3OSwgNzgsIDc5LCA3OCwgMTI4LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjksIDc4LCAKLSAgICA2OCwgNjksIDgwLCAxMjgsIDY5LCA3OCwgNjgsIDY5LCA2NSwgODYsIDc5LCA4NSwgODIsIDEyOCwgNjksIDc4LCA2NywgNzksIAotICAgIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDEyOCwgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgODMsIDEyOCwgCi0gICAgNjksIDc4LCA2NywgNzYsIDc5LCA4MywgODUsIDgyLCA2OSwgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA3MywgNzgsIAotICAgIDE5OSwgNjksIDc4LCA2NywgMTI4LCA2OSwgNzgsIDY1LCA4MiwgODgsIDczLCAyMTEsIDY5LCA3OCwgNjUsIDgyLCA3NywgCi0gICAgNzksIDc4LCA3MywgNzksIDIxMSwgNjksIDc3LCA4MCwgODQsIDIxNywgNjksIDc3LCA4MCwgNzIsIDY1LCA4NCwgNzMsIAotICAgIDE5NSwgNjksIDc3LCA4MCwgNzIsIDY1LCA4MywgNzMsIDIxMSwgNjksIDc3LCA3OSwgNzQsIDIwMSwgNjksIDc3LCA2NiwgCi0gICAgODIsIDc5LCA3MywgNjgsIDY5LCA4MiwgODksIDEyOCwgNjksIDc3LCA2NiwgNzYsIDY5LCA3NywgMTI4LCA2OSwgNzcsIDY2LCAKLSAgICA2OSwgNzYsIDc2LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgNzcsIDY2LCA2OSwgNjgsIDY4LCA3MywgCi0gICAgNzgsIDcxLCAxMjgsIDY5LCA3NiwgODksIDEyOCwgNjksIDc2LCA4NCwgMTI4LCA2OSwgNzYsIDc2LCA3MywgODAsIDg0LCAKLSAgICA3MywgMTk1LCA2OSwgNzYsIDc2LCA3MywgODAsIDgzLCA3MywgODMsIDEyOCwgNjksIDc2LCA3NiwgNzMsIDgwLCA4MywgNjksIAotICAgIDEyOCwgNjksIDc2LCA3MywgNzAsIDczLCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDQ1LCA4NCwgNzIsIDczLCA4MiwgCi0gICAgODQsIDg5LCAxMjgsIDY5LCA3NiwgNjksIDg2LCA2OSwgNzgsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCAyMDYsIDY5LCAKLSAgICA3NiwgNjksIDgwLCA3MiwgNjUsIDc4LCA4NCwgMTI4LCA2OSwgNzYsIDY5LCA3NywgNjksIDc4LCAyMTIsIDY5LCA3NiwgNjksIAotICAgIDY3LCA4NCwgODIsIDczLCA2NywgNjUsIDIwNCwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDE5NSwgNjksIDc2LCA2NiwgCi0gICAgNjUsIDgzLCA2NSwgMjA2LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCA2OSwgMTI4LCA2OSwgNzYsIDY1LCA3NywgNzMsIDg0LCAKLSAgICAxOTcsIDY5LCA3NiwgNjUsIDcwLCA4MiwgNzksIDc4LCAxMjgsIDY5LCA3NSwgODMsIDg0LCA4MiwgNjksIDgwLCA4NCwgNzksIAotICAgIDc4LCAxMjgsIDY5LCA3NSwgODMsIDEyOCwgNjksIDc1LCA3MCwgNzksIDc4LCA3MywgODQsIDczLCA3NSwgNzksIDc4LCAKLSAgICAxMjgsIDY5LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2OSwgNzUsIDY1LCA3NywgMTI4LCA2OSwgNzQsIDY5LCA2NywgMjEyLCAKLSAgICA2OSwgNzMsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgODksIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAyMTcsIAotICAgIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDgzLCAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNzIsIDIxMSwgNjksIDczLCA3MSwgCi0gICAgNzIsIDg0LCA3MiwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCAKLSAgICA2OSwgNjksIDIwNiwgNjksIDczLCA3MSwgNzIsIDg0LCA0NSwgODQsIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAotICAgIDY5LCAxMjgsIDY5LCA3MiwgODcsIDY1LCAyMTgsIDY5LCA3MSwgODksIDgwLCA4NCwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgCi0gICAgNjUsIDIwNCwgNjksIDcxLCA4OSwgMTI4LCA2OSwgNzEsIDczLCA4MiwgMTI4LCA2OSwgNzEsIDcxLCAxMjgsIDY5LCA2OSwgCi0gICAgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY5LCA2OSwgNzUsIDY1LCA2NSwgMTI4LCA2OSwgNjksIDcyLCAxMjgsIDY5LCAKLSAgICA2OSwgNjYsIDY5LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY4LCA3MywgODQsIDc5LCA4MiwgNzMsIDY1LCAyMDQsIAotICAgIDY5LCA2OCwgNzMsIDc4LCAxMjgsIDY5LCA2OCwgNjgsIDEyOCwgNjksIDY3LCA4MywgMTI4LCA2OSwgNjYsIDY5LCA3MCwgCi0gICAgNzMsIDc2LCA3MywgMTI4LCA2OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAyMDYsIDY5LCA2NSwgODMsIDg0LCAxMjgsIDY5LCAKLSAgICA2NSwgODMsIDIxMiwgNjksIDY1LCA4MiwgODQsIDcyLCA3NiwgMjE3LCA2OSwgNjUsIDgyLCA4NCwgNzIsIDEyOCwgNjksIAotICAgIDY1LCA4MiwgODQsIDIwMCwgNjksIDY1LCA4MiwgODMsIDEyOCwgNjksIDY1LCA4MiwgNzYsIDIxNywgNjksIDY1LCA3NywgCi0gICAgNzIsIDY1LCA3OCwgNjcsIDcyLCA3OSwgNzYsIDc2LCAxMjgsIDY5LCA2NSwgNzEsIDc2LCA2OSwgMTI4LCA2OSwgNjUsIDY4LCAKLSAgICA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgNjUsIDY2LCA3MiwgNjUsIDY4LCA3MiwgMTI4LCA2OSwgMTc4LCA2OSwgNDgsIAotICAgIDUxLCA1NiwgMTI4LCA2OSwgNDgsIDUxLCA1NSwgMTI4LCA2OSwgNDgsIDUxLCA1NCwgMTI4LCA2OSwgNDgsIDUxLCA1MiwgCi0gICAgNjUsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDEyOCwgNjksIDQ4LCA1MSwgNTEsIDEyOCwgNjksIDQ4LCA1MSwgNTAsIDEyOCwgCi0gICAgNjksIDQ4LCA1MSwgNDksIDEyOCwgNjksIDQ4LCA1MSwgNDgsIDEyOCwgNjksIDQ4LCA1MCwgNTcsIDEyOCwgNjksIDQ4LCAKLSAgICA1MCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCAxMjgsIDY5LCA0OCwgNTAsIDU1LCAxMjgsIDY5LCA0OCwgNTAsIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNTAsIDUzLCAxMjgsIDY5LCA0OCwgNTAsIDUyLCAxMjgsIDY5LCA0OCwgNTAsIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNTAsIDUwLCAxMjgsIDY5LCA0OCwgNTAsIDQ5LCAxMjgsIDY5LCA0OCwgNTAsIDQ4LCA2NSwgMTI4LCA2OSwgCi0gICAgNDgsIDUwLCA0OCwgMTI4LCA2OSwgNDgsIDQ5LCA1NywgMTI4LCA2OSwgNDgsIDQ5LCA1NiwgMTI4LCA2OSwgNDgsIDQ5LCAKLSAgICA1NSwgNjUsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDEyOCwgNjksIDQ4LCA0OSwgNTQsIDY1LCAxMjgsIDY5LCA0OCwgNDksIAotICAgIDU0LCAxMjgsIDY5LCA0OCwgNDksIDUzLCAxMjgsIDY5LCA0OCwgNDksIDUyLCAxMjgsIDY5LCA0OCwgNDksIDUxLCAxMjgsIAotICAgIDY5LCA0OCwgNDksIDUwLCAxMjgsIDY5LCA0OCwgNDksIDQ5LCAxMjgsIDY5LCA0OCwgNDksIDQ4LCAxMjgsIDY5LCA0OCwgCi0gICAgNDgsIDU3LCA2NSwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgMTI4LCA2OSwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjksIDQ4LCAKLSAgICA0OCwgNTYsIDEyOCwgNjksIDQ4LCA0OCwgNTUsIDEyOCwgNjksIDQ4LCA0OCwgNTQsIDEyOCwgNjksIDQ4LCA0OCwgNTMsIAotICAgIDEyOCwgNjksIDQ4LCA0OCwgNTIsIDEyOCwgNjksIDQ4LCA0OCwgNTEsIDEyOCwgNjksIDQ4LCA0OCwgNTAsIDEyOCwgNjksIAotICAgIDQ4LCA0OCwgNDksIDEyOCwgNjksIDQ1LCA3NywgNjUsIDczLCAyMDQsIDY4LCA5MCwgOTAsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgOTAsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDg5LCA2NSwgODksIDEyOCwgNjgsIDkwLCAKLSAgICA4NywgNjksIDEyOCwgNjgsIDkwLCA4NSwgMTI4LCA2OCwgOTAsIDc5LCAxMjgsIDY4LCA5MCwgNzQsIDY5LCAxMjgsIDY4LCAKLSAgICA5MCwgNzMsIDg0LCA2NSwgMTI4LCA2OCwgOTAsIDczLCAxMjgsIDY4LCA5MCwgNzIsIDc5LCA3MywgMTI4LCA2OCwgOTAsIAotICAgIDcyLCA2OSwgMTI4LCA2OCwgOTAsIDcyLCA2NSwgMTI4LCA2OCwgOTAsIDY5LCA3NiwgNzksIDEyOCwgNjgsIDkwLCA2OSwgCi0gICAgNjksIDEyOCwgNjgsIDkwLCA2OSwgMTI4LCA2OCwgOTAsIDY1LCA4OSwgMTI4LCA2OCwgOTAsIDY1LCA2NSwgMTI4LCA2OCwgCi0gICAgOTAsIDY1LCAxMjgsIDY4LCA5MCwgMTI4LCA2OCwgMjE4LCA2OCwgODksIDc5LCAxMjgsIDY4LCA4OSwgMjA3LCA2OCwgODksIAotICAgIDc4LCA2NSwgNzcsIDczLCAxOTUsIDY4LCA4OSwgNjksIDcyLCAxMjgsIDY4LCA4OSwgNjksIDIwMCwgNjgsIDg5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjgsIDg3LCA3OSwgMTI4LCA2OCwgODcsIDY5LCAxMjgsIDY4LCA4NywgNjUsIDEyOCwgNjgsIDg2LCA3MywgCi0gICAgODMsIDg2LCA2NSwgODIsIDY1LCAxMjgsIDY4LCA4NiwgNjgsIDEyOCwgNjgsIDg2LCAxMjgsIDY4LCA4NSwgODQsIDczLCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDg1LCA4MywgNzUsIDEyOCwgNjgsIDg1LCA4MywgNzIsIDY5LCA3OCwgNzgsIDY1LCAxMjgsIAotICAgIDY4LCA4NSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgODUsIDgyLCA1MCwgMTI4LCA2OCwgODUsIDgwLCA3OSwgCi0gICAgNzgsIDY4LCA3MywgODUsIDIxMSwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDg1LCA3OSwgMTI4LCA2OCwgODUsIDc4LCAKLSAgICA1MiwgMTI4LCA2OCwgODUsIDc4LCA1MSwgMTI4LCA2OCwgODUsIDc4LCAxNzksIDY4LCA4NSwgNzcsIDEyOCwgNjgsIDg1LCAKLSAgICAyMDQsIDY4LCA4NSwgNzIsIDEyOCwgNjgsIDg1LCA3MSwgODUsIDY4LCAxMjgsIDY4LCA4NSwgMTk5LCA2OCwgODUsIDY2LCAKLSAgICA1MCwgMTI4LCA2OCwgODUsIDY2LCAxMjgsIDY4LCA4NSwgMTk0LCA2OCwgODIsIDg5LCAxMjgsIDY4LCA4MiwgMjE3LCA2OCwgCi0gICAgODIsIDg1LCA3NywgMTI4LCA2OCwgODIsIDg1LCAyMDUsIDY4LCA4MiwgNzksIDgwLCA4MywgMTI4LCA2OCwgODIsIDc5LCAKLSAgICA4MCwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgODIsIDc5LCA4MCwgNDUsIDgzLCA3MiwgNjUsIDY4LCA3OSwgODcsIDY5LCAxOTYsIAotICAgIDY4LCA4MiwgNzksIDc3LCA2OSwgNjgsIDY1LCA4MiwgMjE3LCA2OCwgODIsIDczLCA4NiwgNjksIDEyOCwgNjgsIDgyLCA3MywgCi0gICAgODYsIDE5NywgNjgsIDgyLCA3MywgNzgsIDc1LCAxMjgsIDY4LCA4MiwgNzMsIDIwNCwgNjgsIDgyLCA2OSwgODMsIDgzLCAKLSAgICAxMjgsIDY4LCA4MiwgNjksIDY1LCA3NywgMjE3LCA2OCwgODIsIDY1LCA4NSwgNzEsIDcyLCA4NCwgMjExLCA2OCwgODIsIAotICAgIDY1LCA3NywgMTI4LCA2OCwgODIsIDY1LCAyMDUsIDY4LCA4MiwgNjUsIDcxLCA3OSwgNzgsIDEyOCwgNjgsIDgyLCA2NSwgCi0gICAgNzEsIDc5LCAyMDYsIDY4LCA4MiwgNjUsIDcwLCA4NCwgNzMsIDc4LCAxOTksIDY4LCA4MiwgNjUsIDY3LCA3MiwgNzcsIDY1LCAKLSAgICA4MywgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgMTI4LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCAxOTMsIAotICAgIDY4LCA3OSwgODcsIDc4LCA4NywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjgsIDc5LCA4NywgNzgsIDQ1LCA4MCwgNzksIDczLCAKLSAgICA3OCwgODQsIDczLCA3OCwgMTk5LCA2OCwgNzksIDg3LCA3OCwgMTI4LCA2OCwgNzksIDg2LCA2OSwgMTI4LCA2OCwgNzksIAotICAgIDg2LCAxOTcsIDY4LCA3OSwgODUsIDcxLCA3MiwgNzgsIDg1LCA4NCwgMTI4LCA2OCwgNzksIDg1LCA2NiwgODQsIDEyOCwgCi0gICAgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgMTk2LCA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNzYsIDczLCA3OCwgMTk3LCAKLSAgICA2OCwgNzksIDg1LCA2NiwgNzYsIDY5LCA0NSwgNjksIDc4LCA2OCwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgCi0gICAgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgODAsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDc4LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3NiwgMTI4LCA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDg0LCA2OSwgMTk2LCA2OCwgNzksIDg0LCA4MywgNDUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTYsIAotICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCAKLSAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTYsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NCwgMTI4LCA2OCwgNzksIAotICAgIDg0LCA4MywgNDUsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCAKLSAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgCi0gICAgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MiwgNTMsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDU0LCA1NSwgMTI4LCA2OCwgCi0gICAgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTMsIDEyOCwgNjgsIDc5LCAKLSAgICA4NCwgODMsIDQ1LCA1MiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAotICAgIDUxLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKLSAgICA1MSwgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUzLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCi0gICAgNTEsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKLSAgICA0NSwgNTEsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIAotICAgIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUzLCAxMjgsIDY4LCA3OSwgCi0gICAgODQsIDgzLCA0NSwgNTEsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTUsIDU2LCAxMjgsIDY4LCAKLSAgICA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU2LCAxMjgsIAotICAgIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAKLSAgICA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAotICAgIDUyLCA1MywgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgCi0gICAgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NiwgMTI4LCAKLSAgICA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgCi0gICAgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCAKLSAgICA4MywgNDUsIDUxLCA1MiwgNTMsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIAotICAgIDQ1LCA1MSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NSwgCi0gICAgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTQsIDU2LCAKKyAgICA2OSwgMTI4LCA3MiwgNjgsIDgyLCAxMjgsIDcyLCA2NywgMTI4LCA3MiwgNjYsIDY1LCA4MywgNjUsIDQ1LCA2OSwgODMsIAorICAgIDY1LCA4MywgMTkzLCA3MiwgNjYsIDY1LCA4MywgMTkzLCA3MiwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA3MiwgCisgICAgNjUsIDg3LCA3NCwgMTI4LCA3MiwgNjUsIDg2LCA2OSwgMTI4LCA3MiwgNjUsIDg1LCA4MCwgODQsIDgzLCA4NCwgNzMsIDc3LCAKKyAgICA3NywgNjksIDEyOCwgNzIsIDY1LCAyMTMsIDcyLCA2NSwgODQsIDgyLCA2NSwgMjA2LCA3MiwgNjUsIDg0LCA3MiwgNzMsIAorICAgIDEyOCwgNzIsIDY1LCA4NCwgNjksIDEyOCwgNzIsIDY1LCA4NCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNzIsIDY1LCA4NCwgCisgICAgNjUsIDE5OCwgNzIsIDY1LCA4MywgNjksIDIxMCwgNzIsIDY1LCA4MywgNjUsIDc4LCA4NCwgNjUsIDEyOCwgNzIsIDY1LCAKKyAgICA4MiwgODAsIDc5LCA3OSwgNzgsIDEyOCwgNzIsIDY1LCA4MiwgODAsIDc5LCA3OSwgMjA2LCA3MiwgNjUsIDgyLCA3NywgNzksIAorICAgIDc4LCA3MywgNjcsIDEyOCwgNzIsIDY1LCA4MiwgNzUsIDc2LCA2OSwgNjUsIDIwNiwgNzIsIDY1LCA4MiwgNjgsIDc4LCA2OSwgCisgICAgODMsIDgzLCAxMjgsIDcyLCA2NSwgODIsIDE5NiwgNzIsIDY1LCA4MCwgODAsIDIxNywgNzIsIDY1LCA3OCwgODUsIDc4LCAKKyAgICA3OSwgMjA3LCA3MiwgNjUsIDc4LCA3MSwgOTAsIDcyLCA3OSwgMjEzLCA3MiwgNjUsIDc4LCA2OCwgODMsIDcyLCA2NSwgNzUsIAorICAgIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgMjExLCA3MiwgNjUsIDc4LCA2OCwgCisgICAgNzYsIDY5LCA4MywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA2NiwgNjUsIDc2LCAKKyAgICA3NiwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNjYsIDY1LCA3MSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDc5LCA4NiwgNjUsIAorICAgIDc2LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzksIDg2LCA2NSwgMjA0LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3OSwgCisgICAgNzksIDc1LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNzIsIDc5LCA3OSwgMjAzLCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCAKKyAgICA3MywgNzgsIDcxLCA2OSwgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDcyLCA3MywgNzgsIDcxLCAxOTcsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNzAsIDc2LCA2NSwgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA3MCwgNzYsIDY1LCAyMTIsIDcyLCA2NSwgCisgICAgNzgsIDY4LCA0NSwgNzAsIDczLCA4MywgODQsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIAorICAgIDY3LCA4NSwgNjksIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDgyLCA3NiwgNzMsIDY3LCA4NSwgMTk3LCA3MiwgCisgICAgNjUsIDc4LCA2OCwgNDUsIDY3LCA4NSwgODAsIDEyOCwgNzIsIDY1LCA3OCwgNjgsIDQ1LCA2NywgODUsIDIwOCwgNzIsIDY1LCAKKyAgICA3OCwgNjgsIDQ1LCA2NywgNzYsIDY1LCA4NywgMTI4LCA3MiwgNjUsIDc4LCA2OCwgNDUsIDY3LCA3NiwgNjUsIDIxNSwgNzIsIAorICAgIDY1LCA3OCwgNjgsIDQ1LCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzgsIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxMjgsIDcyLCA2NSwgNzgsIAorICAgIDY4LCA0NSwgNjUsIDc4LCA3MSwgNzYsIDE5NywgNzIsIDY1LCA3OCwgNjgsIDEyOCwgNzIsIDY1LCA3OCwgNDUsIDY1LCA3NSwgCisgICAgNjUsIDg0LCAxMjgsIDcyLCA2NSwgNzcsIDkwLCA2NSwgMTI4LCA3MiwgNjUsIDc3LCA5MCwgMTkzLCA3MiwgNjUsIDc3LCAKKyAgICA4MywgODQsIDY5LCAyMTAsIDcyLCA2NSwgNzcsIDc3LCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NywgNzcsIDY5LCAyMTAsIAorICAgIDcyLCA2NSwgNzcsIDY2LCA4NSwgODIsIDcxLCA2OSwgODIsIDEyOCwgNzIsIDY1LCA3NiwgODEsIDY1LCAxMjgsIDcyLCA2NSwgCisgICAgNzYsIDc5LCAxMjgsIDcyLCA2NSwgNzYsIDcwLCA0NSwgNjcsIDczLCA4MiwgNjcsIDc2LCAxOTcsIDcyLCA2NSwgNzYsIDcwLCAKKyAgICAxMjgsIDcyLCA2NSwgNzYsIDY2LCA2OSwgODIsIDY4LCAxMjgsIDcyLCA2NSwgNzYsIDY1LCA3OCwgODQsIDY1LCAxMjgsIAorICAgIDcyLCA2NSwgNzMsIDg0LCA4NSwgMTI4LCA3MiwgNjUsIDczLCAyMTEsIDcyLCA2NSwgNzMsIDgyLCA2NywgODUsIDg0LCAKKyAgICAxMjgsIDcyLCA2NSwgNzMsIDgyLCAxMjgsIDcyLCA2NSwgNzEsIDc2LCA2NSwgMjE4LCA3MiwgNjUsIDcxLCA3NiwgMTI4LCAKKyAgICA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCA2NSwgMTI4LCA3MiwgNjUsIDcwLCA4NSwgNzUsIDcyLCAxMjgsIDcyLCA2NSwgNjksIAorICAgIDcxLCAyMDQsIDcyLCA2NSwgNjUsIDgyLCA4NSwgMTI4LCA3MiwgNjUsIDY1LCA3NywgMTI4LCA3MiwgNjUsIDE5MywgNzIsIAorICAgIDY1LCA0NSwgNzIsIDY1LCAxMjgsIDcyLCA0OCwgNDgsIDU2LCAxMjgsIDcyLCA0OCwgNDgsIDU1LCAxMjgsIDcyLCA0OCwgCisgICAgNDgsIDU0LCA2NSwgMTI4LCA3MiwgNDgsIDQ4LCA1NCwgMTI4LCA3MiwgNDgsIDQ4LCA1MywgMTI4LCA3MiwgNDgsIDQ4LCAKKyAgICA1MiwgMTI4LCA3MiwgNDgsIDQ4LCA1MSwgMTI4LCA3MiwgNDgsIDQ4LCA1MCwgMTI4LCA3MiwgNDgsIDQ4LCA0OSwgMTI4LCAKKyAgICA3MiwgNDUsIDg0LCA4OSwgODAsIDE5NywgNzEsIDg5LCA4NSwgMTI4LCA3MSwgODksIDc5LCA3OCwgMTI4LCA3MSwgODksIAorICAgIDc5LCAxMjgsIDcxLCA4OSwgNzMsIDEyOCwgNzEsIDg5LCA3MCwgMjEzLCA3MSwgODksIDY5LCA2OSwgMTI4LCA3MSwgODksIAorICAgIDY1LCA4MywgMTI4LCA3MSwgODksIDY1LCA2NSwgMTI4LCA3MSwgODksIDY1LCAxMjgsIDcxLCA4OSwgMTI4LCA3MSwgODcsIAorICAgIDg1LCAxMjgsIDcxLCA4NywgNzMsIDEyOCwgNzEsIDg3LCA2OSwgNjksIDEyOCwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgODcsIAorICAgIDY1LCA2NSwgMTI4LCA3MSwgODcsIDY1LCAxMjgsIDcxLCA4NiwgNjUsIDc4LCA3MSwgMTI4LCA3MSwgODYsIDEyOCwgNzEsIAorICAgIDg1LCA4MiwgODUsIDgzLCA3MiwgMTI4LCA3MSwgODUsIDgyLCA4NSwgNzgsIDEyOCwgNzEsIDg1LCA4MiwgNzcsIDg1LCA3NSwgCisgICAgNzIsIDIwMSwgNzEsIDg1LCA4MiwgNjUsIDc3LCA4NSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgODUsIDgyLCA1NSwgMTI4LCAKKyAgICA3MSwgODUsIDc4LCA4NSwgMTI4LCA3MSwgODUsIDc4LCAyMTMsIDcxLCA4NSwgMjA1LCA3MSwgODUsIDc2LCAxMjgsIDcxLCAKKyAgICA4NSwgNzQsIDY1LCA4MiwgNjUsIDg0LCAyMDEsIDcxLCA4NSwgNzMsIDg0LCA2NSwgODIsIDEyOCwgNzEsIDg1LCAxOTksIAorICAgIDcxLCA4NSwgNjksIDczLCAxMjgsIDcxLCA4NSwgNjksIDcyLCAxMjgsIDcxLCA4NSwgNjksIDIwMCwgNzEsIDg1LCA2OCwgCisgICAgMTI4LCA3MSwgODUsIDE5NiwgNzEsIDg1LCA2NSwgODIsIDY4LCA4MywgNzcsIDY1LCA3OCwgMTI4LCA3MSwgODUsIDY1LCAKKyAgICA4MiwgNjgsIDY5LCA2OCwgNzgsIDY5LCA4MywgODMsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY4LCA2OSwgMTk2LCA3MSwgODUsIAorICAgIDY1LCA4MiwgNjgsIDEyOCwgNzEsIDg1LCA2NSwgODIsIDY1LCA3OCwgMjAxLCA3MSwgODUsIDE5MywgNzEsIDg1LCAxNzgsIAorICAgIDcxLCA4NCwgNjksIDIxMCwgNzEsIDgzLCA4NSwgNzcsIDEyOCwgNzEsIDgzLCA4NSwgMjA1LCA3MSwgODIsIDIxMywgNzEsIAorICAgIDgyLCA3OSwgODcsIDczLCA3OCwgMTk5LCA3MSwgODIsIDc5LCA4NSwgNzgsIDY4LCAxMjgsIDcxLCA4MiwgNzksIDc4LCA4NCwgCisgICAgNzIsIDczLCA4MywgNzcsIDY1LCA4NCwgNjUsIDEyOCwgNzEsIDgyLCA3MywgNzgsIDc4LCA3MywgNzgsIDE5OSwgNzEsIDgyLCAKKyAgICA3MywgNzcsIDY1LCA2NywgNzMsIDc4LCAxOTksIDcxLCA4MiwgNjksIDcxLCA3OSwgODIsIDczLCA2NSwgMjA2LCA3MSwgODIsIAorICAgIDY5LCA2OSwgMjA2LCA3MSwgODIsIDY5LCA2NSwgODQsIDc4LCA2OSwgODMsIDgzLCAxMjgsIDcxLCA4MiwgNjksIDY1LCA4NCwgCisgICAgNjksIDgyLCA0NSwgODQsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDgyLCA2OSwgNjUsIDg0LCA2OSwgODIsIDQ1LCA4NCwgNzIsIAorICAgIDY1LCAyMDYsIDcxLCA4MiwgNjksIDY1LCA4NCwgNjksIDIxMCwgNzEsIDgyLCA2OSwgNjUsIDIxMiwgNzEsIDgyLCA2NSwgCisgICAgODYsIDY5LCA4OSwgNjUsIDgyLCAxOTYsIDcxLCA4MiwgNjUsIDg2LCA2OSwgNDUsIDc3LCA2NSwgNjcsIDgyLCA3OSwgNzgsIAorICAgIDEyOCwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDg2LCAxOTcsIDcxLCA4MiwgNjUsIDg0LCA2OSwgODIsIDEyOCwgNzEsIDgyLCA2NSwgODMsIAorICAgIDgzLCAxMjgsIDcxLCA4MiwgNjUsIDgzLCAyMTEsIDcxLCA4MiwgNjUsIDgzLCAyMDgsIDcxLCA4MiwgNjUsIDgwLCA3MiwgCisgICAgNjksIDc3LCAxOTcsIDcxLCA4MiwgNjUsIDgwLCA2OSwgODMsIDEyOCwgNzEsIDgyLCA2NSwgNzgsIDg0LCA3MiwgMTkzLCAKKyAgICA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNzEsIDgyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA4MiwgNjUsIDY4LCA4NSwgNjUsIAorICAgIDg0LCA3MywgNzksIDIwNiwgNzEsIDgyLCA2NSwgNjgsIDg1LCA2NSwgNzYsIDEyOCwgNzEsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDcxLCA4MiwgNjUsIDY3LCAxOTcsIDcxLCA4MCwgNjUsIDEyOCwgNzEsIDc5LCA4MiwgODQsIDcyLCA3NywgNzMsIAorICAgIDc1LCA3OSwgMjA2LCA3MSwgNzksIDgyLCA4NCwgMTI4LCA3MSwgNzksIDgyLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgCisgICAgNzksIDgyLCA3MSwgNzksIDg0LCA2OSwgODIsIDczLCAxMjgsIDcxLCA3OSwgODIsIDcxLCA3OSwgODMsIDg5LCA3OCwgODQsIAorICAgIDcyLCA2OSwgODQsIDc5LCA3OCwgMTI4LCA3MSwgNzksIDgyLCA3MSwgNzksIDIwNiwgNzEsIDc5LCA4MiwgNzEsIDczLCAKKyAgICAxMjgsIDcxLCA3OSwgODIsIDY1LCAxMjgsIDcxLCA3OSwgNzksIDE5NiwgNzEsIDc5LCA3OCwgNzEsIDEyOCwgNzEsIDc5LCAKKyAgICA3NiwgNzAsIDY5LCA4MiwgMTI4LCA3MSwgNzksIDc2LCA2OCwgMTI4LCA3MSwgNzksIDc1LCAxMjgsIDcxLCA3OSwgNzMsIAorICAgIDc4LCAxOTksIDcxLCA3OSwgNjYsIDc2LCA3MywgNzgsIDEyOCwgNzEsIDc5LCA2NSwgNzYsIDEyOCwgNzEsIDc5LCA2NSwgCisgICAgMjA0LCA3MSwgNzksIDY1LCAxMjgsIDcxLCA3OCwgODksIDczLCA4MywgMTI4LCA3MSwgNzgsIDY1LCA4NiwgNzMsIDg5LCAKKyAgICA2NSwgNzgsIDczLCAxMjgsIDcxLCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNzEsIDc2LCA3OSwgODYsIDY5LCAxMjgsIAorICAgIDcxLCA3NiwgNzksIDg0LCA4NCwgNjUsIDIwNCwgNzEsIDc2LCA3OSwgNjYsIDE5NywgNzEsIDc2LCA3MywgODMsIDgzLCA2NSwgCisgICAgNzgsIDY4LCAyMDcsIDcxLCA3NiwgNjksIDczLCA2NywgMjAwLCA3MSwgNzYsIDY1LCA3MSwgNzksIDc2LCA3MywgMTI4LCAKKyAgICA3MSwgNzYsIDY1LCAxMjgsIDcxLCA3NCwgNjksIDEyOCwgNzEsIDczLCA4OCwgMTI4LCA3MSwgNzMsIDg0LCAxMjgsIDcxLCAKKyAgICA3MywgODMsIDcyLCAxMjgsIDcxLCA3MywgODMsIDIwMCwgNzEsIDczLCA4MywgNjUsIDc2LCAxMjgsIDcxLCA3MywgODIsIAorICAgIDg1LCA2OCwgNjUsIDY1LCAxMjgsIDcxLCA3MywgODIsIDc2LCAyMTEsIDcxLCA3MywgODIsIDc2LCAxMjgsIDcxLCA3MywgCisgICAgODIsIDUxLCAxMjgsIDcxLCA3MywgODIsIDE3OSwgNzEsIDczLCA4MiwgNTAsIDEyOCwgNzEsIDczLCA4MiwgMTc4LCA3MSwgCisgICAgNzMsIDgwLCAxMjgsIDcxLCA3MywgNzgsIDczLCA3MywgMTI4LCA3MSwgNzMsIDc3LCA2OSwgNzYsIDEyOCwgNzEsIDczLCAKKyAgICA3NywgNjksIDIwNCwgNzEsIDczLCA3NywgMTI4LCA3MSwgNzMsIDcxLCA2NSwgMTI4LCA3MSwgNzMsIDcxLCAxMjgsIDcxLCAKKyAgICA3MywgNjksIDg0LCAxMjgsIDcxLCA3MywgNjgsIDczLCA3NywgMTI4LCA3MSwgNzMsIDY2LCA2NiwgNzksIDg1LCAyMTEsIAorICAgIDcxLCA3MywgNjYsIDY1LCAxMjgsIDcxLCA3MywgNTIsIDEyOCwgNzEsIDczLCAxODAsIDcxLCA3MiwgOTAsIDEyOCwgNzEsIAorICAgIDcyLCA4NywgNjUsIDEyOCwgNzEsIDcyLCA4NSwgNzgsIDc4LCA2NSwgMTI4LCA3MSwgNzIsIDg1LCA3OCwgNzgsIDE5MywgCisgICAgNzEsIDcyLCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4NSwgMTI4LCA3MSwgNzIsIDc5LCA4MywgODQsIDEyOCwgNzEsIDcyLCAKKyAgICA3OSwgMTI4LCA3MSwgNzIsIDczLCA3NywgNjksIDc2LCAxMjgsIDcxLCA3MiwgNzMsIDEyOCwgNzEsIDcyLCA3MiwgNjUsIAorICAgIDEyOCwgNzEsIDcyLCA2OSwgODksIDgzLCAxMjgsIDcxLCA3MiwgNjksIDg1LCA4OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgCisgICAgNzgsIDEyOCwgNzEsIDcyLCA2OSwgODUsIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDc3LCAxMjgsIDcxLCA3MiwgNjksIDg1LCAKKyAgICA3MSwgNzIsIDY5LCA3OCwgMTI4LCA3MSwgNzIsIDY5LCA4NSwgNjUsIDY5LCA4MiwgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjksIAorICAgIDg1LCA2NSwgNjksIDcxLCA3MiwgNjksIDg1LCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2OSwgODQsIDEyOCwgNzEsIDcyLCA2OSwgCisgICAgNjksIDEyOCwgNzEsIDcyLCA2OSwgMTI4LCA3MSwgNzIsIDE5NywgNzEsIDcyLCA2NSwgODksIDc4LCAxMjgsIDcxLCA3MiwgCisgICAgNjUsIDgyLCA2NSwgNjksIDEyOCwgNzEsIDcyLCA2NSwgODAsIDEyOCwgNzEsIDcyLCA2NSwgNzgsIDEyOCwgNzEsIDcyLCAKKyAgICA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNzIsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA3MiwgNjUsIDczLCA3OCwgODUsIAorICAgIDEyOCwgNzEsIDcyLCA2NSwgNzMsIDc4LCAxMjgsIDcxLCA3MiwgNjUsIDczLCAyMDYsIDcxLCA3MiwgNjUsIDY4LCAxMjgsIAorICAgIDcxLCA3MiwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcxLCA3MiwgNjUsIDY1LCAxMjgsIDcxLCA3MSwgODcsIDczLCAKKyAgICAxMjgsIDcxLCA3MSwgODcsIDY5LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2OSwgMTI4LCA3MSwgNzEsIDg3LCA2NSwgNjUsIAorICAgIDEyOCwgNzEsIDcxLCA4NywgNjUsIDEyOCwgNzEsIDcxLCA4NSwgODgsIDEyOCwgNzEsIDcxLCA4NSwgODQsIDEyOCwgNzEsIAorICAgIDcxLCA4NSwgODIsIDg4LCAxMjgsIDcxLCA3MSwgODUsIDgyLCAxMjgsIDcxLCA3MSwgODUsIDc5LCA4OCwgMTI4LCA3MSwgCisgICAgNzEsIDg1LCA3OSwgODQsIDEyOCwgNzEsIDcxLCA4NSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgODUsIDc5LCAxMjgsIDcxLCAKKyAgICA3MSwgNzksIDg4LCAxMjgsIDcxLCA3MSwgNzksIDg0LCAxMjgsIDcxLCA3MSwgNzksIDgwLCAxMjgsIDcxLCA3MSwgNzMsIAorICAgIDg4LCAxMjgsIDcxLCA3MSwgNzMsIDg0LCAxMjgsIDcxLCA3MSwgNzMsIDY5LCA4OCwgMTI4LCA3MSwgNzEsIDczLCA2OSwgCisgICAgODAsIDEyOCwgNzEsIDcxLCA3MywgNjksIDEyOCwgNzEsIDcxLCA2OSwgODgsIDEyOCwgNzEsIDcxLCA2OSwgODQsIDEyOCwgCisgICAgNzEsIDcxLCA2OSwgODAsIDEyOCwgNzEsIDcxLCA2NSwgODgsIDEyOCwgNzEsIDcxLCA2NSwgODQsIDEyOCwgNzEsIDY5LCAKKyAgICA4NCwgMTkzLCA3MSwgNjksIDgzLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA3MSwgNjksIDgzLCA3MiwgODUsIDEyOCwgNzEsIAorICAgIDY5LCA4MywgNzIsIDg0LCA3MywgNzgsIDEyOCwgNzEsIDY5LCA4MywgNzIsIDg0LCA3MywgMjA2LCA3MSwgNjksIDgzLCA3MiwgCisgICAgNTAsIDEyOCwgNzEsIDY5LCA4MiwgODMsIDcyLCA2NSwgODksIDczLCA3NywgMTI4LCA3MSwgNjksIDgyLCA3NywgNjUsIAorICAgIDIwNiwgNzEsIDY5LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA3MSwgNjksIDgyLCA2OSwgODMsIDIwMCwgNzEsIDY5LCA3OSwgCisgICAgNzcsIDY5LCA4NCwgODIsIDczLCA2NywgNjUsIDc2LCA3NiwgMjE3LCA3MSwgNjksIDc5LCA3NywgNjksIDg0LCA4MiwgNzMsIAorICAgIDE5NSwgNzEsIDY5LCA3OCwgODQsIDc2LCAxOTcsIDcxLCA2OSwgNzgsIDczLCA4NCwgNzMsIDg2LCA2OSwgMTI4LCA3MSwgCisgICAgNjksIDc4LCA3MywgNzUsIDIwMSwgNzEsIDY5LCA3OCwgNjksIDgyLCA3MywgMTk1LCA3MSwgNjksIDc3LCA3MywgNzgsIDczLCAKKyAgICAxMjgsIDcxLCA2OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNzEsIDY5LCA3NywgNzMsIDc4LCA2NSwgODQsIAorICAgIDE5NywgNzEsIDY5LCAyMDUsIDcxLCA2OSwgNjksIDc3LCAxMjgsIDcxLCA2OSwgNjgsIDc5LCA3NiwgNjUsIDEyOCwgNzEsIAorICAgIDY5LCA2OCwgNjksIDEyOCwgNzEsIDY5LCA2NiwgMjA3LCA3MSwgNjksIDY2LCAxOTMsIDcxLCA2OSwgNjUsIDgyLCAxMjgsIAorICAgIDcxLCA2OSwgNjUsIDIxMCwgNzEsIDY5LCA1MCwgNTAsIDEyOCwgNzEsIDY4LCA2NSwgNzgsIDEyOCwgNzEsIDY3LCA3MywgCisgICAgNzEsIDEyOCwgNzEsIDY3LCA2NSwgMjA2LCA3MSwgNjYsIDc5LCA3OCwgMTI4LCA3MSwgNjYsIDczLCA2OSwgMTk3LCA3MSwgCisgICAgNjYsIDY5LCA4NSwgODgsIDEyOCwgNzEsIDY2LCA2OSwgODQsIDEyOCwgNzEsIDY2LCA2NSwgODksIDczLCAxMjgsIDcxLCAKKyAgICA2NiwgNjUsIDc1LCA4NSwgODIsIDg1LCA3OCwgNjksIDc4LCAxMjgsIDcxLCA2NiwgMTI4LCA3MSwgNjUsIDg5LCA2NSwgNzgsIAorICAgIDg1LCA3NSwgNzMsIDg0LCA4NCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNzEsIDY1LCA4OSwgCisgICAgMTI4LCA3MSwgNjUsIDg1LCA3OCwgODQsIDc2LCA2OSwgODQsIDEyOCwgNzEsIDY1LCA4NCwgNzIsIDY5LCA4MiwgNzMsIDc4LCAKKyAgICA3MSwgMTI4LCA3MSwgNjUsIDg0LCA3MiwgNjksIDgyLCA3MywgNzgsIDE5OSwgNzEsIDY1LCA4NCwgNjksIDEyOCwgNzEsIAorICAgIDY1LCA4MywgNzIsIDY1LCA3OCwgMTI4LCA3MSwgNjUsIDgyLCA4MywgNzIsIDg1LCA3OCwgNzMsIDEyOCwgNzEsIDY1LCA4MiwgCisgICAgNzksIDc4LCAxMjgsIDcxLCA2NSwgODIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDcxLCA2NSwgODIsIDY4LCA2OSwgNzgsIAorICAgIDEyOCwgNzEsIDY1LCA4MiwgNTEsIDEyOCwgNzEsIDY1LCA4MCwgODAsIDY5LCAxOTYsIDcxLCA2NSwgMjA4LCA3MSwgNjUsIAorICAgIDc4LCA3NywgNjUsIDEyOCwgNzEsIDY1LCA3OCwgNzEsIDczLCA2NSwgMTI4LCA3MSwgNjUsIDc4LCA2OCwgMTkzLCA3MSwgCisgICAgNjUsIDc4LCA1MCwgMTI4LCA3MSwgNjUsIDc4LCAxNzgsIDcxLCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA3MSwgNjUsIDc3LCAKKyAgICA3NiwgNjUsIDEyOCwgNzEsIDY1LCA3NywgNzYsIDEyOCwgNzEsIDY1LCA3NywgNjksIDEyOCwgNzEsIDY1LCA3NywgMTk3LCAKKyAgICA3MSwgNjUsIDc3LCA2NSwgNzgsIDEyOCwgNzEsIDY1LCA3NywgNjUsIDc2LCAxMjgsIDcxLCA2NSwgNzcsIDY1LCAyMDQsIAorICAgIDcxLCA2NSwgNzEsIDEyOCwgNzEsIDY1LCA3MCwgMTI4LCA3MSwgNjUsIDE5OCwgNzEsIDY1LCA2OSwgODQsIDg0LCA2NSwgCisgICAgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA3MSwgNjUsIDY4LCA3OSwgNzYsIDEyOCwgNzEsIDY1LCA2OCwgMTI4LCAKKyAgICA3MSwgNjUsIDE5NiwgNzEsIDY1LCA2NiwgNjUsIDEyOCwgNzEsIDY1LCA2NiwgMTkzLCA3MSwgNjUsIDY1LCA3MCwgODUsIAorICAgIDEyOCwgNzEsIDY1LCAxNzgsIDcxLCA0OCwgNTMsIDUyLCAxMjgsIDcxLCA0OCwgNTMsIDUxLCAxMjgsIDcxLCA0OCwgNTMsIAorICAgIDUwLCAxMjgsIDcxLCA0OCwgNTMsIDQ5LCAxMjgsIDcxLCA0OCwgNTMsIDQ4LCAxMjgsIDcxLCA0OCwgNTIsIDU3LCAxMjgsIAorICAgIDcxLCA0OCwgNTIsIDU2LCAxMjgsIDcxLCA0OCwgNTIsIDU1LCAxMjgsIDcxLCA0OCwgNTIsIDU0LCAxMjgsIDcxLCA0OCwgCisgICAgNTIsIDUzLCA2NSwgMTI4LCA3MSwgNDgsIDUyLCA1MywgMTI4LCA3MSwgNDgsIDUyLCA1MiwgMTI4LCA3MSwgNDgsIDUyLCAKKyAgICA1MSwgNjUsIDEyOCwgNzEsIDQ4LCA1MiwgNTEsIDEyOCwgNzEsIDQ4LCA1MiwgNTAsIDEyOCwgNzEsIDQ4LCA1MiwgNDksIAorICAgIDEyOCwgNzEsIDQ4LCA1MiwgNDgsIDEyOCwgNzEsIDQ4LCA1MSwgNTcsIDEyOCwgNzEsIDQ4LCA1MSwgNTYsIDEyOCwgNzEsIAorICAgIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNTEsIDU1LCAxMjgsIDcxLCA0OCwgNTEsIDU0LCA2NSwgMTI4LCA3MSwgCisgICAgNDgsIDUxLCA1NCwgMTI4LCA3MSwgNDgsIDUxLCA1MywgMTI4LCA3MSwgNDgsIDUxLCA1MiwgMTI4LCA3MSwgNDgsIDUxLCAKKyAgICA1MSwgMTI4LCA3MSwgNDgsIDUxLCA1MCwgMTI4LCA3MSwgNDgsIDUxLCA0OSwgMTI4LCA3MSwgNDgsIDUxLCA0OCwgMTI4LCAKKyAgICA3MSwgNDgsIDUwLCA1NywgMTI4LCA3MSwgNDgsIDUwLCA1NiwgMTI4LCA3MSwgNDgsIDUwLCA1NSwgMTI4LCA3MSwgNDgsIAorICAgIDUwLCA1NCwgNjUsIDEyOCwgNzEsIDQ4LCA1MCwgNTQsIDEyOCwgNzEsIDQ4LCA1MCwgNTMsIDEyOCwgNzEsIDQ4LCA1MCwgCisgICAgNTIsIDEyOCwgNzEsIDQ4LCA1MCwgNTEsIDEyOCwgNzEsIDQ4LCA1MCwgNTAsIDEyOCwgNzEsIDQ4LCA1MCwgNDksIDEyOCwgCisgICAgNzEsIDQ4LCA1MCwgNDgsIDY1LCAxMjgsIDcxLCA0OCwgNTAsIDQ4LCAxMjgsIDcxLCA0OCwgNDksIDU3LCAxMjgsIDcxLCAKKyAgICA0OCwgNDksIDU2LCAxMjgsIDcxLCA0OCwgNDksIDU1LCAxMjgsIDcxLCA0OCwgNDksIDU0LCAxMjgsIDcxLCA0OCwgNDksIAorICAgIDUzLCAxMjgsIDcxLCA0OCwgNDksIDUyLCAxMjgsIDcxLCA0OCwgNDksIDUxLCAxMjgsIDcxLCA0OCwgNDksIDUwLCAxMjgsIAorICAgIDcxLCA0OCwgNDksIDQ5LCA2NSwgMTI4LCA3MSwgNDgsIDQ5LCA0OSwgMTI4LCA3MSwgNDgsIDQ5LCA0OCwgMTI4LCA3MSwgCisgICAgNDgsIDQ4LCA1NywgMTI4LCA3MSwgNDgsIDQ4LCA1NiwgMTI4LCA3MSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNzEsIDQ4LCAKKyAgICA0OCwgNTUsIDY1LCAxMjgsIDcxLCA0OCwgNDgsIDU1LCAxMjgsIDcxLCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA3MSwgNDgsIAorICAgIDQ4LCA1NCwgMTI4LCA3MSwgNDgsIDQ4LCA1MywgMTI4LCA3MSwgNDgsIDQ4LCA1MiwgMTI4LCA3MSwgNDgsIDQ4LCA1MSwgCisgICAgMTI4LCA3MSwgNDgsIDQ4LCA1MCwgMTI4LCA3MSwgNDgsIDQ4LCA0OSwgMTI4LCA3MCwgODksIDg4LCAxMjgsIDcwLCA4OSwgCisgICAgODQsIDEyOCwgNzAsIDg5LCA4MCwgMTI4LCA3MCwgODksIDY1LCAxMjgsIDcwLCA4NywgNzMsIDEyOCwgNzAsIDg3LCA2OSwgCisgICAgNjksIDEyOCwgNzAsIDg3LCA2OSwgMTI4LCA3MCwgODcsIDY1LCA2NSwgMTI4LCA3MCwgODcsIDY1LCAxMjgsIDcwLCA4NiwgCisgICAgODMsIDUxLCAxMjgsIDcwLCA4NiwgODMsIDUwLCAxMjgsIDcwLCA4NiwgODMsIDQ5LCAxMjgsIDcwLCA4NSwgODgsIDEyOCwgCisgICAgNzAsIDg1LCA4NCwgMTI4LCA3MCwgODUsIDgzLCA2OSwgMTI4LCA3MCwgODUsIDgzLCAxOTMsIDcwLCA4NSwgODIsIDg4LCAKKyAgICAxMjgsIDcwLCA4NSwgODAsIDEyOCwgNzAsIDg1LCA3OCwgNjksIDgyLCA2NSwgMjA0LCA3MCwgODUsIDc4LCA2NywgODQsIAorICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDcwLCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA3MCwgODUsIDc2LCA3NiwgCisgICAgNzgsIDY5LCA4MywgODMsIDEyOCwgNzAsIDg1LCA3NiwgMjA0LCA3MCwgODUsIDc0LCA3MywgMTI4LCA3MCwgODUsIDY5LCAKKyAgICA4NCwgMTI4LCA3MCwgODUsIDY5LCAyMDQsIDcwLCA4NSwgNjksIDEyOCwgNzAsIDg1LCA2NSwgMTI4LCA3MCwgODQsIDcyLCAKKyAgICA3OSwgODIsIDE5MywgNzAsIDgzLCA3MywgMTI4LCA3MCwgODIsIDc5LCA4NywgNzgsIDczLCA3OCwgNzEsIDEyOCwgNzAsIAorICAgIDgyLCA3OSwgODcsIDc4LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDcwLCA4MiwgNzksIDg3LCAKKyAgICAyMDYsIDcwLCA4MiwgNzksIDc4LCA4NCwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA3MCwgODIsIDc5LCA3OCwgODQsIAorICAgIDQ1LCA3MCwgNjUsIDY3LCA3MywgNzgsIDE5OSwgNzAsIDgyLCA3OSwgNzgsIDIxMiwgNzAsIDgyLCA3OSwgMjA1LCA3MCwgCisgICAgODIsIDc5LCA3MSwgMTI4LCA3MCwgODIsIDc5LCAxOTksIDcwLCA4MiwgNzMsIDg0LCA4NSwgMTI4LCA3MCwgODIsIDczLCAKKyAgICA2OSwgODMsIDEyOCwgNzAsIDgyLCA3MywgNjksIDE5NiwgNzAsIDgyLCA3MywgNjcsIDY1LCA4NCwgNzMsIDg2LCA2OSwgCisgICAgMTI4LCA3MCwgODIsIDY5LCA4NCwgNjYsIDc5LCA2NSwgODIsIDY4LCAxMjgsIDcwLCA4MiwgNjksIDc4LCA2NywgMjAwLCAKKyAgICA3MCwgODIsIDY5LCA2OSwgMTI4LCA3MCwgODIsIDY5LCAxOTcsIDcwLCA4MiwgNjUsIDc4LCA3NSwgMjExLCA3MCwgODIsIAorICAgIDY1LCA3OCwgMTk1LCA3MCwgODIsIDY1LCA3NywgNjksIDgzLCAxMjgsIDcwLCA4MiwgNjUsIDc3LCA2OSwgMTI4LCA3MCwgCisgICAgODIsIDY1LCA3NywgMTk3LCA3MCwgODIsIDY1LCA3MSwgODIsIDY1LCA3OCwgODQsIDEyOCwgNzAsIDgyLCA2NSwgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDcwLCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDcwLCA3OSwgODgsIDEyOCwgNzAsIAorICAgIDc5LCAyMTYsIDcwLCA3OSwgODUsIDgyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA3MCwgNzksIDg1LCA4MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA3MCwgNzksIDg1LCA4MiwgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4NSwgODIsIDQ1LCAKKyAgICA4MywgODQsIDgyLCA3MywgNzgsIDE5OSwgNzAsIDc5LCA4NSwgODIsIDQ1LCA4MCwgNjksIDgyLCA0NSwgNjksIDIwNSwgNzAsIAorICAgIDc5LCA4NSwgODIsIDQ1LCA3NiwgNzMsIDc4LCAxOTcsIDcwLCA3OSwgODUsIDIxMCwgNzAsIDc5LCA4NSwgNzgsIDg0LCA2NSwgCisgICAgNzMsIDc4LCAxMjgsIDcwLCA3OSwgODUsIDc4LCA4NCwgNjUsIDczLCAyMDYsIDcwLCA3OSwgODMsIDg0LCA2OSwgODIsIDczLCAKKyAgICA3OCwgNzEsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNzAsIDc5LCA4MiwgODcsIDY1LCA4MiwgCisgICAgMTk2LCA3MCwgNzksIDgyLCA4NCwgODksIDEyOCwgNzAsIDc5LCA4MiwgODQsIDIxNywgNzAsIDc5LCA4MiwgODQsIDczLCAKKyAgICA2OSwgODQsIDcyLCAxMjgsIDcwLCA3OSwgODIsIDg0LCA2OSwgMTI4LCA3MCwgNzksIDgyLCA3NywgMjExLCA3MCwgNzksIAorICAgIDgyLCA3NywgNjUsIDg0LCA4NCwgNzMsIDc4LCA3MSwgMTI4LCA3MCwgNzksIDgyLCA3NywgNjUsIDIxMiwgNzAsIDc5LCA4MiwgCisgICAgNzUsIDY5LCAxOTYsIDcwLCA3OSwgODIsIDY5LCA3MiwgNjksIDY1LCAxOTYsIDcwLCA3OSwgODIsIDY3LCA2OSwgODMsIAorICAgIDEyOCwgNzAsIDc5LCA4MiwgNjcsIDY5LCAxMjgsIDcwLCA3OSwgODAsIDEyOCwgNzAsIDc5LCA3OSwgODQsIDgzLCA4NCwgCisgICAgNzksIDc5LCA3NiwgMTI4LCA3MCwgNzksIDc5LCA4NCwgODAsIDgyLCA3MywgNzgsIDg0LCA4MywgMTI4LCA3MCwgNzksIDc5LCAKKyAgICA4NCwgNzgsIDc5LCA4NCwgMTk3LCA3MCwgNzksIDc5LCA4NCwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgODQsIAorICAgIDEyOCwgNzAsIDc5LCA3OSwgNzYsIDEyOCwgNzAsIDc5LCA3OSwgNjgsIDEyOCwgNzAsIDc5LCA3OSwgMTI4LCA3MCwgNzksIAorICAgIDc4LCAyMTIsIDcwLCA3OSwgNzgsIDcxLCA3NywgNjUsIDc4LCAxMjgsIDcwLCA3OSwgNzcsIDEyOCwgNzAsIDc5LCA3NiwgCisgICAgNzYsIDg5LCAxMjgsIDcwLCA3OSwgNzYsIDc2LCA3OSwgODcsIDczLCA3OCwgNzEsIDEyOCwgNzAsIDc5LCA3NiwgNjgsIDY5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzksIDc2LCA2OCwgNjksIDE5NiwgNzAsIDc5LCA3MSwgNzEsIDg5LCAxMjgsIDcwLCA3OSwgNzEsIAorICAgIDEyOCwgNzAsIDIwNywgNzAsIDc3LCAxMjgsIDcwLCA3NiwgODksIDczLCA3OCwgMTk5LCA3MCwgNzYsIDg5LCAxMjgsIDcwLCAKKyAgICA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgNzgsIDcxLCAxMjgsIDcwLCA3NiwgODUsIDg0LCA4NCwgNjksIDgyLCA3MywgCisgICAgNzgsIDE5OSwgNzAsIDc2LCA4NSwgODQsIDY5LCAxMjgsIDcwLCA3NiwgODUsIDgzLCA3MiwgNjksIDE5NiwgNzAsIDc2LCAKKyAgICA3OSwgODcsIDczLCA3OCwgMTk5LCA3MCwgNzYsIDc5LCA4NywgNjksIDgyLCA4MywgMTI4LCA3MCwgNzYsIDc5LCA4NywgNjksIAorICAgIDIxMCwgNzAsIDc2LCA3OSwgODUsIDgyLCA3MywgODMsIDcyLCAxMjgsIDcwLCA3NiwgNzksIDgyLCA2OSwgODQsIDg0LCA2OSwgCisgICAgMTI4LCA3MCwgNzYsIDc5LCA4MiwgNjUsIDIwNCwgNzAsIDc2LCA3OSwgODAsIDgwLCAyMTcsIDcwLCA3NiwgNzksIDc5LCAKKyAgICA4MiwgMTI4LCA3MCwgNzYsIDc5LCA3OSwgMjEwLCA3MCwgNzYsIDczLCA4MCwgMTI4LCA3MCwgNzYsIDczLCA3MSwgNzIsIAorICAgIDg0LCAxMjgsIDcwLCA3NiwgNzMsIDY3LCAyMDMsIDcwLCA3NiwgNjksIDg4LCA4NSwgODMsIDEyOCwgNzAsIDc2LCA2OSwgCisgICAgODgsIDY5LCAxOTYsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDcwLCA3NiwgNjksIDg1LCA4MiwgNzksIDc4LCAxMjgsIDcwLCAKKyAgICA3NiwgNjksIDg1LCA4MiwgNDUsIDY4LCA2OSwgNDUsIDc2LCA3MywgODMsIDEyOCwgNzAsIDc2LCA2NSwgODQsIDg0LCA2OSwgCisgICAgNzgsIDY5LCAxOTYsIDcwLCA3NiwgNjUsIDg0LCA3OCwgNjksIDgzLCA4MywgMTI4LCA3MCwgNzYsIDY1LCA4NCwgNjYsIDgyLCAKKyAgICA2OSwgNjUsIDY4LCAxMjgsIDcwLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgODMsIDEyOCwgNzAsIAorICAgIDc2LCA2NSwgNzEsIDQ1LCA1MywgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDUyLCAxMjgsIDcwLCA3NiwgNjUsIDcxLCA0NSwgCisgICAgNTEsIDEyOCwgNzAsIDc2LCA2NSwgNzEsIDQ1LCA1MCwgMTI4LCA3MCwgNzYsIDY1LCA3MSwgNDUsIDQ5LCAxMjgsIDcwLCAKKyAgICA3NiwgNjUsIDcxLCAxMjgsIDcwLCA3NiwgNjUsIDE5OSwgNzAsIDc2LCA2NSwgMTI4LCA3MCwgNzYsIDEyOCwgNzAsIDczLCAKKyAgICA4OCwgNjksIDY4LCA0NSwgNzAsIDc5LCA4MiwgMjA1LCA3MCwgNzMsIDg4LCAxMjgsIDcwLCA3MywgODYsIDY5LCA0NSwgODQsIAorICAgIDcyLCA3MywgODIsIDg0LCA4OSwgMTI4LCA3MCwgNzMsIDg2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNzAsIDczLCA4NiwgCisgICAgMTk3LCA3MCwgNzMsIDg0LCA5MCwgODAsIDY1LCA4NCwgODIsIDczLCA2NywgMjAzLCA3MCwgNzMsIDg0LCA2NSwgMTI4LCAKKyAgICA3MCwgNzMsIDg0LCAxMjgsIDcwLCA3MywgODMsIDg0LCA2OSwgMTk2LCA3MCwgNzMsIDgzLCA3MiwgNzMsIDc4LCAxOTksIAorICAgIDcwLCA3MywgODMsIDcyLCA3MiwgNzksIDc5LCA3NSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgNzIsIDc5LCA3OSwgMjAzLCA3MCwgCisgICAgNzMsIDgzLCA3MiwgNjksIDg5LCA2OSwgMTI4LCA3MCwgNzMsIDgzLCA3MiwgMTI4LCA3MCwgNzMsIDgzLCAyMDAsIDcwLCAKKyAgICA3MywgODIsIDgzLCAyMTIsIDcwLCA3MywgODIsIDczLCAxMjgsIDcwLCA3MywgODIsIDY5LCA4NywgNzksIDgyLCA3NSwgODMsIAorICAgIDEyOCwgNzAsIDczLCA4MiwgNjksIDg3LCA3OSwgODIsIDIwMywgNzAsIDczLCA4MiwgNjksIDEyOCwgNzAsIDczLCA4MiwgCisgICAgMTk3LCA3MCwgNzMsIDgwLCAxMjgsIDcwLCA3MywgNzgsIDczLCA4NCwgMTk3LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAyMTEsIDcwLCA3MywgNzgsIDcxLCA2OSwgODIsIDc4LCA2NSwgNzMsIAorICAgIDc2LCA4MywgMTI4LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA2OSwgMTk2LCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCA0NSwgCisgICAgODAsIDc5LCA4MywgMjEyLCA3MCwgNzMsIDc4LCA3MSwgNjksIDgyLCAxMjgsIDcwLCA3MywgNzgsIDcxLCA2OSwgMjEwLCAKKyAgICA3MCwgNzMsIDc4LCA2NSwgNzgsIDY3LCA3MywgNjUsIDc2LCAxMjgsIDcwLCA3MywgNzgsIDY1LCA3NiwgMTI4LCA3MCwgNzMsIAorICAgIDc2LCAyMDUsIDcwLCA3MywgNzYsIDc2LCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDgyLCA0NSwgCisgICAgNDksIDEyOCwgNzAsIDczLCA3NiwgNzYsIDY5LCA4MiwgMTI4LCA3MCwgNzMsIDc2LCA3NiwgNjksIDE5NiwgNzAsIDczLCAKKyAgICA3NiwgNzYsIDEyOCwgNzAsIDczLCA3NiwgMjA0LCA3MCwgNzMsIDc2LCAxOTcsIDcwLCA3MywgNzMsIDEyOCwgNzAsIDczLCAKKyAgICA3MSwgODUsIDgyLCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA3MywgNzEsIDg1LCA4MiwgNjksIDQ1LCA1MCwgMTI4LCA3MCwgNzMsIAorICAgIDcxLCA4NSwgODIsIDY5LCA0NSwgNDksIDEyOCwgNzAsIDczLCA3MSwgODUsIDgyLCAxOTcsIDcwLCA3MywgNzEsIDcyLCA4NCwgCisgICAgMTI4LCA3MCwgNzMsIDcwLCA4NCwgODksIDEyOCwgNzAsIDczLCA3MCwgODQsIDIxNywgNzAsIDczLCA3MCwgODQsIDcyLCAKKyAgICA4MywgMTI4LCA3MCwgNzMsIDcwLCA4NCwgNzIsIDEyOCwgNzAsIDczLCA3MCwgODQsIDY5LCA2OSwgNzgsIDEyOCwgNzAsIAorICAgIDczLCA3MCwgODQsIDY5LCA2OSwgMjA2LCA3MCwgNzMsIDY5LCA3NiwgNjgsIDEyOCwgNzAsIDczLCA2OSwgNzYsIDE5NiwgCisgICAgNzAsIDcyLCA4NCwgNzksIDgyLCAxOTMsIDcwLCA3MCwgNzYsIDEyOCwgNzAsIDcwLCA3MywgMTI4LCA3MCwgNjksIDg1LCAKKyAgICA4OCwgMTI4LCA3MCwgNjksIDg1LCA3MCwgNjksIDg1LCA2NSwgNjksIDg0LCAxMjgsIDcwLCA2OSwgODMsIDg0LCA3MywgODYsIAorICAgIDY1LCA3NiwgMTI4LCA3MCwgNjksIDgyLCA4MiwgODksIDEyOCwgNzAsIDY5LCA4MiwgODIsIDczLCAyMTEsIDcwLCA2OSwgCisgICAgODIsIDc3LCA2NSwgODQsIDY1LCAxMjgsIDcwLCA2OSwgODIsIDc3LCA2NSwgODQsIDE5MywgNzAsIDY5LCA3OSwgMjAwLCAKKyAgICA3MCwgNjksIDc4LCAxOTksIDcwLCA2OSwgNzgsIDY3LCA2OSwgODIsIDEyOCwgNzAsIDY5LCA3OCwgNjcsIDY5LCAxMjgsIAorICAgIDcwLCA2OSwgNzcsIDczLCA3OCwgNzMsIDc4LCAxOTcsIDcwLCA2OSwgNzcsIDY1LCA3NiwgNjksIDEyOCwgNzAsIDY5LCA3NywgCisgICAgNjUsIDc2LCAxOTcsIDcwLCA2OSwgNzYsIDc2LCA3OSwgODcsIDgzLCA3MiwgNzMsIDgwLCAxMjgsIDcwLCA2OSwgNzMsIAorICAgIDEyOCwgNzAsIDY5LCA3MiwgMjEzLCA3MCwgNjksIDcyLCAxMjgsIDcwLCA2OSwgMjAwLCA3MCwgNjksIDY5LCA3OCwgNzEsIAorICAgIDEyOCwgNzAsIDY5LCA2OSwgNzcsIDEyOCwgNzAsIDY5LCA2OSwgNjgsIDEyOCwgNzAsIDY5LCA2OSwgMTk2LCA3MCwgNjksIAorICAgIDY5LCAxMjgsIDcwLCA2OSwgNjYsIDgyLCA4NSwgNjUsIDgyLCA4OSwgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgCisgICAgMTI4LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCAyMTAsIDcwLCA2OSwgNjUsIDgyLCA3OCwgMTI4LCA3MCwgNjksIDY1LCAKKyAgICA4MiwgNzAsIDg1LCAyMDQsIDcwLCA2OSwgNjUsIDgyLCAxMjgsIDcwLCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIAorICAgIDcwLCA2NSwgODksIDEyOCwgNzAsIDY1LCA4OCwgMTI4LCA3MCwgNjUsIDIxNiwgNzAsIDY1LCA4NCwgNzMsIDcxLCA4NSwgCisgICAgNjksIDEyOCwgNzAsIDY1LCA4NCwgNzIsIDY5LCA4MiwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgNjksIDIxMCwgNzAsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDcwLCA2NSwgODQsIDcyLCA2NSwgODQsIDY1LCAyMDYsIDcwLCA2NSwgODQsIAorICAgIDcyLCA2NSwgMTI4LCA3MCwgNjUsIDg0LCA3MiwgMTkzLCA3MCwgNjUsIDg0LCAxMjgsIDcwLCA2NSwgODMsIDg0LCAxMjgsIAorICAgIDcwLCA2NSwgODIsIDgzLCAyMDEsIDcwLCA2NSwgODIsIDEyOCwgNzAsIDY1LCA4MSwgMTI4LCA3MCwgNjUsIDgwLCAxMjgsIAorICAgIDcwLCA2NSwgNzgsIDcxLCAxMjgsIDcwLCA2NSwgNzgsIDY5LCA4MiwgNzksIDgzLCA3MywgMjExLCA3MCwgNjUsIDc4LCAKKyAgICAxMjgsIDcwLCA2NSwgNzcsIDczLCA3NiwgODksIDEyOCwgNzAsIDY1LCA3NywgMTI4LCA3MCwgNjUsIDc2LCA3NiwgNjksIAorICAgIDIwNiwgNzAsIDY1LCA3NCwgMTI4LCA3MCwgNjUsIDczLCA3NiwgODUsIDgyLCA2OSwgMTI4LCA3MCwgNjUsIDczLCA3MiwgCisgICAgODUsIDEyOCwgNzAsIDY1LCA3MywgNjYsIDEyOCwgNzAsIDY1LCA3MiwgODIsIDY5LCA3OCwgNzIsIDY5LCA3MywgODQsIAorICAgIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCA4MiwgODksIDEyOCwgNzAsIDY1LCA2NywgODQsIDc5LCAyMTAsIDcwLCA2NSwgCisgICAgNjcsIDgzLCA3MywgNzcsIDczLCA3NiwgMTk3LCA3MCwgNjUsIDY3LCA3MywgNzgsIDcxLCA4MywgMTI4LCA3MCwgNjUsIDY3LCAKKyAgICA2OSwgNDUsIDU0LCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTMsIDEyOCwgNzAsIDY1LCA2NywgNjksIDQ1LCA1MiwgCisgICAgMTI4LCA3MCwgNjUsIDY3LCA2OSwgNDUsIDUxLCAxMjgsIDcwLCA2NSwgNjcsIDY5LCA0NSwgNTAsIDEyOCwgNzAsIDY1LCAKKyAgICA2NywgNjksIDQ1LCA0OSwgMTI4LCA3MCwgNjUsIDY1LCA3NywgNjUsIDY5LCAxMjgsIDcwLCA2NSwgNjUsIDczLCAxMjgsIAorICAgIDcwLCA2NSwgNjUsIDcwLCA4NSwgMTI4LCA3MCwgNDgsIDUzLCA1MSwgMTI4LCA3MCwgNDgsIDUzLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUzLCA0OSwgNjcsIDEyOCwgNzAsIDQ4LCA1MywgNDksIDY2LCAxMjgsIDcwLCA0OCwgNTMsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUzLCA0OSwgMTI4LCA3MCwgNDgsIDUzLCA0OCwgMTI4LCA3MCwgNDgsIDUyLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUyLCA1NiwgMTI4LCA3MCwgNDgsIDUyLCA1NSwgNjUsIDEyOCwgNzAsIDQ4LCA1MiwgNTUsIDEyOCwgNzAsIDQ4LCA1MiwgCisgICAgNTQsIDY1LCAxMjgsIDcwLCA0OCwgNTIsIDU0LCAxMjgsIDcwLCA0OCwgNTIsIDUzLCA2NSwgMTI4LCA3MCwgNDgsIDUyLCAKKyAgICA1MywgMTI4LCA3MCwgNDgsIDUyLCA1MiwgMTI4LCA3MCwgNDgsIDUyLCA1MSwgMTI4LCA3MCwgNDgsIDUyLCA1MCwgMTI4LCAKKyAgICA3MCwgNDgsIDUyLCA0OSwgMTI4LCA3MCwgNDgsIDUyLCA0OCwgMTI4LCA3MCwgNDgsIDUxLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUxLCA1NiwgNjUsIDEyOCwgNzAsIDQ4LCA1MSwgNTYsIDEyOCwgNzAsIDQ4LCA1MSwgNTUsIDY1LCAxMjgsIDcwLCA0OCwgCisgICAgNTEsIDU1LCAxMjgsIDcwLCA0OCwgNTEsIDU0LCAxMjgsIDcwLCA0OCwgNTEsIDUzLCAxMjgsIDcwLCA0OCwgNTEsIDUyLCAKKyAgICAxMjgsIDcwLCA0OCwgNTEsIDUxLCAxMjgsIDcwLCA0OCwgNTEsIDUwLCAxMjgsIDcwLCA0OCwgNTEsIDQ5LCA2NSwgMTI4LCAKKyAgICA3MCwgNDgsIDUxLCA0OSwgMTI4LCA3MCwgNDgsIDUxLCA0OCwgMTI4LCA3MCwgNDgsIDUwLCA1NywgMTI4LCA3MCwgNDgsIAorICAgIDUwLCA1NiwgMTI4LCA3MCwgNDgsIDUwLCA1NSwgMTI4LCA3MCwgNDgsIDUwLCA1NCwgMTI4LCA3MCwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA3MCwgNDgsIDUwLCA1MiwgMTI4LCA3MCwgNDgsIDUwLCA1MSwgMTI4LCA3MCwgNDgsIDUwLCA1MCwgMTI4LCA3MCwgCisgICAgNDgsIDUwLCA0OSwgNjUsIDEyOCwgNzAsIDQ4LCA1MCwgNDksIDEyOCwgNzAsIDQ4LCA1MCwgNDgsIDEyOCwgNzAsIDQ4LCAKKyAgICA0OSwgNTcsIDEyOCwgNzAsIDQ4LCA0OSwgNTYsIDEyOCwgNzAsIDQ4LCA0OSwgNTUsIDEyOCwgNzAsIDQ4LCA0OSwgNTQsIAorICAgIDEyOCwgNzAsIDQ4LCA0OSwgNTMsIDEyOCwgNzAsIDQ4LCA0OSwgNTIsIDEyOCwgNzAsIDQ4LCA0OSwgNTEsIDY1LCAxMjgsIAorICAgIDcwLCA0OCwgNDksIDUxLCAxMjgsIDcwLCA0OCwgNDksIDUwLCAxMjgsIDcwLCA0OCwgNDksIDQ5LCAxMjgsIDcwLCA0OCwgCisgICAgNDksIDQ4LCAxMjgsIDcwLCA0OCwgNDgsIDU3LCAxMjgsIDcwLCA0OCwgNDgsIDU2LCAxMjgsIDcwLCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDcwLCA0OCwgNDgsIDU0LCAxMjgsIDcwLCA0OCwgNDgsIDUzLCAxMjgsIDcwLCA0OCwgNDgsIDUyLCAxMjgsIDcwLCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDcwLCA0OCwgNDgsIDUwLCAxMjgsIDcwLCA0OCwgNDgsIDQ5LCA2NSwgMTI4LCA3MCwgNDgsIAorICAgIDQ4LCA0OSwgMTI4LCA2OSwgOTAsIDgzLCAxMjgsIDY5LCA5MCwgMjAwLCA2OSwgOTAsIDY5LCA3OCwgMTI4LCA2OSwgOTAsIAorICAgIDY5LCAyMDYsIDY5LCA5MCwgMTI4LCA2OSwgODksIDg5LCA4OSwgMTI4LCA2OSwgODksIDY5LCA4MywgMTI4LCA2OSwgODksIAorICAgIDY5LCAyMTEsIDY5LCA4OSwgNjksIDc2LCA2NSwgODMsIDcyLCA2OSwgMjExLCA2OSwgODksIDY5LCA3MSwgNzYsIDY1LCA4MywgCisgICAgODMsIDY5LCA4MywgMTI4LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDg3LCA2NSwgNzYsIDc2LCA4MCwgNzYsIAorICAgIDY1LCA3OCwgMTk3LCA2OSwgODksIDY5LCA3MSwgNjUsIDkwLCA2OSwgNDUsIDcwLCA3NiwgNzksIDc5LCA4MiwgODAsIDc2LCAKKyAgICA2NSwgNzgsIDE5NywgNjksIDg5LCA2OSwgNjYsIDgyLCA3OSwgODcsIDIxMSwgNjksIDg5LCAxOTcsIDY5LCA4OSwgNjYsIAorICAgIDY5LCA4OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgODgsIDg0LCA4MiwgCisgICAgNjksIDc3LCA2OSwgNzYsIDIxNywgNjksIDg4LCA4NCwgODIsIDY1LCA4NCwgNjksIDgyLCA4MiwgNjksIDgzLCA4NCwgODIsIAorICAgIDczLCA2NSwgMjA0LCA2OSwgODgsIDg0LCA4MiwgNjUsIDQ1LCA3NiwgNzksIDIxNSwgNjksIDg4LCA4NCwgODIsIDY1LCA0NSwgCisgICAgNzIsIDczLCA3MSwgMjAwLCA2OSwgODgsIDg0LCA4MiwgMTkzLCA2OSwgODgsIDg0LCA2OSwgNzgsIDgzLCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY5LCA4OCwgODQsIDY5LCA3OCwgNjgsIDY5LCA2OCwgMTI4LCA2OSwgODgsIDg0LCA2OSwgNzgsIDY4LCA2OSwgCisgICAgMTk2LCA2OSwgODgsIDgwLCA4MiwgNjksIDgzLCA4MywgNzMsIDc5LCA3OCwgNzYsIDY5LCA4MywgMjExLCA2OSwgODgsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgMjEyLCA2OSwgODgsIDc5LCAxMjgsIDY5LCA4OCwgMjA3LCA2OSwgODgsIDczLCA4MywgODQsIAorICAgIDgzLCAxMjgsIDY5LCA4OCwgNzMsIDgzLCA4NCwgMTI4LCA2OSwgODgsIDcyLCA2NSwgODUsIDgzLCA4NCwgNzMsIDc5LCA3OCwgCisgICAgMTI4LCA2OSwgODgsIDcyLCA2NSwgNzYsIDY5LCAxMjgsIDY5LCA4OCwgNjcsIDc2LCA2NSwgNzcsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgMTI4LCA2OSwgODgsIDY3LCA3NiwgNjUsIDc3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2OSwgODgsIDY3LCA3MywgODQsIAorICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OSwgODgsIDY3LCA3MiwgNjUsIDc4LCA3MSwgNjksIDEyOCwgNjksIDg4LCA2NywgCisgICAgNjksIDgzLCA4MywgMTI4LCA2OSwgODgsIDY3LCA2OSwgNzYsIDc2LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA4NywgNjksIAorICAgIDEyOCwgNjksIDg2LCA2OSwgODIsIDIxNywgNjksIDg2LCA2OSwgODIsIDcxLCA4MiwgNjksIDY5LCAyMDYsIDY5LCA4NiwgCisgICAgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY5LCA4NSwgODIsIDc5LCA4MCwgNjksIDY1LCAyMDYsIDY5LCA4NSwgODIsIDc5LCAKKyAgICA4MCwgNjksIDQ1LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAxMjgsIDY5LCA4NSwgODIsIDc5LCA0NSwgNjcsIDg1LCA4MiwgCisgICAgODIsIDY5LCA3OCwgNjcsIDIxNywgNjksIDg1LCA4MiwgMjA3LCA2OSwgODUsIDc2LCA2OSwgMjEwLCA2OSwgODUsIDQ1LCAKKyAgICA4NSwgMTI4LCA2OSwgODUsIDQ1LCA3OSwgMTI4LCA2OSwgODUsIDQ1LCA2OSwgODUsIDEyOCwgNjksIDg1LCA0NSwgNjksIAorICAgIDc5LCAxMjgsIDY5LCA4NSwgNDUsIDY5LCAxMjgsIDY5LCA4NSwgNDUsIDY1LCAxMjgsIDY5LCA4NCwgODgsIDEyOCwgNjksIAorICAgIDg0LCA3OCwgNjUsIDcyLCA4NCwgNjUsIDEyOCwgNjksIDg0LCA3MiwgNjksIDIwNCwgNjksIDg0LCA2OSwgODIsIDc5LCAKKyAgICAyMDYsIDY5LCA4NCwgNjksIDgyLCA3OCwgNzMsIDg0LCA4OSwgMTI4LCA2OSwgODQsIDY5LCA4MiwgNzgsIDczLCA4NCwgCisgICAgMjE3LCA2OSwgODQsIDY2LCAxMjgsIDY5LCA4MywgOTAsIDEyOCwgNjksIDgzLCA4NSwgNzUsIDg1LCA4NSwgNjgsIDc5LCAKKyAgICAxMjgsIDY5LCA4MywgODQsIDczLCA3NywgNjUsIDg0LCA2OSwgODMsIDEyOCwgNjksIDgzLCA4NCwgNzMsIDc3LCA2NSwgODQsIAorICAgIDY5LCAxOTYsIDY5LCA4MywgNzIsIDY5LCA1MSwgMTI4LCA2OSwgODMsIDcyLCA1MCwgNDksIDEyOCwgNjksIDgzLCA3MiwgCisgICAgNDksIDU0LCAxMjgsIDY5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjksIDgzLCA2NywgMTI4LCA2OSwgODMsIDY1LCAKKyAgICAxMjgsIDY5LCA4MywgNDUsIDg0LCA2OSwgMTI4LCA2OSwgODMsIDQ1LCA1MSwgMTI4LCA2OSwgODMsIDQ1LCA1MCwgMTI4LCAKKyAgICA2OSwgODMsIDQ1LCA0OSwgMTI4LCA2OSwgODIsIDgyLCA3OSwgODIsIDQ1LCA2NiwgNjUsIDgyLCA4MiwgNjksIDE5NiwgNjksIAorICAgIDgyLCA4MiwgMTI4LCA2OSwgODIsIDczLCA3OCwgNTAsIDEyOCwgNjksIDgyLCA3MywgNzgsIDE3OCwgNjksIDgyLCA3MSwgCisgICAgMTI4LCA2OSwgODIsIDY1LCA4MywgMTk3LCA2OSwgODEsIDg1LCA3MywgODYsIDY1LCA3NiwgNjksIDc4LCAyMTIsIDY5LCAKKyAgICA4MSwgODUsIDczLCA3NiwgNjUsIDg0LCA2OSwgODIsIDY1LCAyMDQsIDY5LCA4MSwgODUsIDczLCA2OCwgMTI4LCA2OSwgODEsIAorICAgIDg1LCA3MywgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgMjEwLCA2OSwgODEsIDg1LCA2NSwgNzYsIDgzLCAxMjgsIDY5LCA4MSwgCisgICAgODUsIDY1LCA3NiwgMjExLCA2OSwgODEsIDg1LCA2NSwgNzYsIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgNzgsIAorICAgIDEyOCwgNjksIDgwLCA4MywgNzMsIDc2LCA3OSwgMjA2LCA2OSwgODAsIDc5LCA2NywgNzIsIDEyOCwgNjksIDgwLCA3MywgCisgICAgNzEsIDgyLCA2NSwgODAsIDcyLCA3MywgMTk1LCA2OSwgODAsIDczLCA2OCwgNjUsIDg1LCA4MiwgNjksIDY1LCAyMDYsIDY5LCAKKyAgICA4MCwgNjksIDc4LCA4NCwgNzIsIDY5LCA4NCwgNzMsIDE5NSwgNjksIDgwLCA2OSwgNzEsIDY5LCA4MiwgNzcsIDY1LCAxMjgsIAorICAgIDY5LCA4MCwgNjUsIDY3LCAyMTIsIDY5LCA3OSwgODQsIDEyOCwgNjksIDc5LCA3NywgMTI4LCA2OSwgNzksIDc2LCA3MiwgCisgICAgODgsIDEyOCwgNjksIDc5LCA3NiwgMTI4LCA2OSwgNzksIDcyLCAxMjgsIDY5LCA3OCwgODksIDEyOCwgNjksIDc4LCA4NiwgCisgICAgNjksIDc2LCA3OSwgODAsIDY5LCAxMjgsIDY5LCA3OCwgODYsIDY5LCA3NiwgNzksIDgwLCAxOTcsIDY5LCA3OCwgODUsIDc3LCAKKyAgICA2OSwgODIsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY5LCA3OCwgODQsIDgyLCA4OSwgNDUsIDUwLCAxMjgsIDY5LCA3OCwgODQsIAorICAgIDgyLCA4OSwgNDUsIDQ5LCAxMjgsIDY5LCA3OCwgODQsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2OSwgCisgICAgNzgsIDg0LCA3MiwgODUsIDgzLCA3MywgNjUsIDgzLCA3NywgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDgwLCA4MiwgNzMsIAorICAgIDgzLCA2OSwgMTI4LCA2OSwgNzgsIDg0LCA2OSwgODIsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDg0LCA2OSwgODIsIDEyOCwgCisgICAgNjksIDc4LCA4NCwgNjksIDIxMCwgNjksIDc4LCA4NCwgNDUsIDgzLCA3MiwgNjUsIDgwLCA2OSwgMTk2LCA2OSwgNzgsIDgxLCAKKyAgICA4NSwgNzMsIDgyLCA4OSwgMTI4LCA2OSwgNzgsIDgxLCAxMjgsIDY5LCA3OCwgNzksIDIxMSwgNjksIDc4LCA3OCwgNzMsIAorICAgIDEyOCwgNjksIDc4LCA3OCwgMTI4LCA2OSwgNzgsIDc2LCA2NSwgODIsIDcxLCA2OSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgCisgICAgNjksIDc4LCA3MSwgNzMsIDc4LCA2OSwgMTI4LCA2OSwgNzgsIDY4LCA3OSwgNzAsIDc5LCA3OCwgNzksIDc4LCAxMjgsIDY5LCAKKyAgICA3OCwgNjgsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY4LCA2OSwgODAsIDEyOCwgNjksIDc4LCA2OCwgNjksIDY1LCA4NiwgNzksIAorICAgIDg1LCA4MiwgMTI4LCA2OSwgNzgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgCisgICAgNzksIDgzLCA4NSwgODIsIDY5LCA4MywgMTI4LCA2OSwgNzgsIDY3LCA3NiwgNzksIDgzLCA4NSwgODIsIDY5LCAxMjgsIDY5LCAKKyAgICA3OCwgNjcsIDc2LCA3OSwgODMsIDczLCA3OCwgMTk5LCA2OSwgNzgsIDY3LCAxMjgsIDY5LCA3OCwgNjUsIDgyLCA4OCwgNzMsIAorICAgIDIxMSwgNjksIDc4LCA2NSwgODIsIDc3LCA3OSwgNzgsIDczLCA3OSwgMjExLCA2OSwgNzcsIDgwLCA4NCwgMjE3LCA2OSwgCisgICAgNzcsIDgwLCA3MiwgNjUsIDg0LCA3MywgMTk1LCA2OSwgNzcsIDgwLCA3MiwgNjUsIDgzLCA3MywgMjExLCA2OSwgNzcsIDc5LCAKKyAgICA3NCwgMjAxLCA2OSwgNzcsIDY2LCA4MiwgNzksIDczLCA2OCwgNjksIDgyLCA4OSwgMTI4LCA2OSwgNzcsIDY2LCA3NiwgNjksIAorICAgIDc3LCAxMjgsIDY5LCA3NywgNjYsIDY5LCA3NiwgNzYsIDczLCA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY5LCA3NywgCisgICAgNjYsIDY5LCA2OCwgNjgsIDczLCA3OCwgNzEsIDEyOCwgNjksIDc2LCA4OSwgMTI4LCA2OSwgNzYsIDg0LCAxMjgsIDY5LCAKKyAgICA3NiwgNzYsIDczLCA4MCwgODQsIDczLCAxOTUsIDY5LCA3NiwgNzYsIDczLCA4MCwgODMsIDczLCA4MywgMTI4LCA2OSwgNzYsIAorICAgIDc2LCA3MywgODAsIDgzLCA2OSwgMTI4LCA2OSwgNzYsIDczLCA3MCwgNzMsIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgCisgICAgNDUsIDg0LCA3MiwgNzMsIDgyLCA4NCwgODksIDEyOCwgNjksIDc2LCA2OSwgODYsIDY5LCA3OCwgMTI4LCA2OSwgNzYsIDY5LCAKKyAgICA4NiwgNjksIDIwNiwgNjksIDc2LCA2OSwgODAsIDcyLCA2NSwgNzgsIDg0LCAxMjgsIDY5LCA3NiwgNjksIDc3LCA2OSwgNzgsIAorICAgIDIxMiwgNjksIDc2LCA2OSwgNjcsIDg0LCA4MiwgNzMsIDY3LCA2NSwgMjA0LCA2OSwgNzYsIDY5LCA2NywgODQsIDgyLCA3MywgCisgICAgMTk1LCA2OSwgNzYsIDY2LCA2NSwgODMsIDY1LCAyMDYsIDY5LCA3NiwgNjUsIDc3LCA3MywgODQsIDY5LCAxMjgsIDY5LCAKKyAgICA3NiwgNjUsIDc3LCA3MywgODQsIDE5NywgNjksIDc2LCA2NSwgNzAsIDgyLCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgODQsIAorICAgIDgyLCA2OSwgODAsIDg0LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA4MywgMTI4LCA2OSwgNzUsIDcwLCA3OSwgNzgsIDczLCA4NCwgCisgICAgNzMsIDc1LCA3OSwgNzgsIDEyOCwgNjksIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY5LCA3NSwgNjUsIDc3LCAxMjgsIDY5LCAKKyAgICA3NCwgNjksIDY3LCAyMTIsIDY5LCA3MywgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA4OSwgMTI4LCA2OSwgNzMsIAorICAgIDcxLCA3MiwgODQsIDIxNywgNjksIDczLCA3MSwgNzIsIDg0LCA3MywgNjksIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgCisgICAgNzIsIDg0LCA3MiwgODMsIDEyOCwgNjksIDczLCA3MSwgNzIsIDg0LCA3MiwgMjExLCA2OSwgNzMsIDcxLCA3MiwgODQsIDcyLCAKKyAgICAxMjgsIDY5LCA3MywgNzEsIDcyLCA4NCwgNjksIDY5LCA3OCwgMTI4LCA2OSwgNzMsIDcxLCA3MiwgODQsIDY5LCA2OSwgCisgICAgMjA2LCA2OSwgNzMsIDcxLCA3MiwgODQsIDQ1LCA4NCwgNzIsIDczLCA4MiwgODQsIDg5LCAxMjgsIDY5LCA3MywgNjksIAorICAgIDEyOCwgNjksIDcyLCA4NywgNjUsIDIxOCwgNjksIDcyLCA4NCwgODMsIDY1LCAxMjgsIDY5LCA3MiwgODQsIDY1LCAxMjgsIAorICAgIDY5LCA3MiwgODAsIDY1LCAxMjgsIDY5LCA3MiwgNzUsIDY1LCAxMjgsIDY5LCA3MiwgNjcsIDcyLCA2NSwgMTI4LCA2OSwgCisgICAgNzEsIDg5LCA4MCwgODQsIDc5LCA3NiwgNzksIDcxLCA3MywgNjcsIDY1LCAyMDQsIDY5LCA3MSwgODksIDEyOCwgNjksIDcxLCAKKyAgICA3MywgODIsIDEyOCwgNjksIDcxLCA3MSwgMTI4LCA2OSwgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2OSwgNjksIAorICAgIDc1LCA2NSwgNjUsIDEyOCwgNjksIDY5LCA3MiwgMTI4LCA2OSwgNjksIDY2LCA2OSwgNjksIDcwLCA3MywgNzYsIDczLCAKKyAgICAxMjgsIDY5LCA2OCwgNzMsIDg0LCA3OSwgODIsIDczLCA2NSwgMjA0LCA2OSwgNjgsIDczLCA3OCwgMTI4LCA2OSwgNjgsIAorICAgIDY4LCAxMjgsIDY5LCA2NywgODMsIDEyOCwgNjksIDY2LCA2OSwgNzAsIDczLCA3NiwgNzMsIDEyOCwgNjksIDY1LCA4MywgCisgICAgODQsIDY5LCA4MiwgMjA2LCA2OSwgNjUsIDgzLCA4NCwgMTI4LCA2OSwgNjUsIDgzLCAyMTIsIDY5LCA2NSwgODIsIDg0LCAKKyAgICA3MiwgNzYsIDIxNywgNjksIDY1LCA4MiwgODQsIDcyLCAxMjgsIDY5LCA2NSwgODIsIDg0LCAyMDAsIDY5LCA2NSwgODIsIAorICAgIDgzLCAxMjgsIDY5LCA2NSwgODIsIDc2LCAyMTcsIDY5LCA2NSwgNzcsIDcyLCA2NSwgNzgsIDY3LCA3MiwgNzksIDc2LCA3NiwgCisgICAgMTI4LCA2OSwgNjUsIDcxLCA3NiwgNjksIDEyOCwgNjksIDY1LCA2OCwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDY1LCAKKyAgICA2NiwgNzIsIDY1LCA2OCwgNzIsIDEyOCwgNjksIDE3OCwgNjksIDQ4LCA1MSwgNTYsIDEyOCwgNjksIDQ4LCA1MSwgNTUsIAorICAgIDEyOCwgNjksIDQ4LCA1MSwgNTQsIDEyOCwgNjksIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY5LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY5LCA0OCwgNTEsIDUxLCAxMjgsIDY5LCA0OCwgNTEsIDUwLCAxMjgsIDY5LCA0OCwgNTEsIDQ5LCAxMjgsIDY5LCA0OCwgCisgICAgNTEsIDQ4LCAxMjgsIDY5LCA0OCwgNTAsIDU3LCAxMjgsIDY5LCA0OCwgNTAsIDU2LCA2NSwgMTI4LCA2OSwgNDgsIDUwLCAKKyAgICA1NiwgMTI4LCA2OSwgNDgsIDUwLCA1NSwgMTI4LCA2OSwgNDgsIDUwLCA1NCwgMTI4LCA2OSwgNDgsIDUwLCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDUwLCA1MiwgMTI4LCA2OSwgNDgsIDUwLCA1MSwgMTI4LCA2OSwgNDgsIDUwLCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDUwLCA0OSwgMTI4LCA2OSwgNDgsIDUwLCA0OCwgNjUsIDEyOCwgNjksIDQ4LCA1MCwgNDgsIDEyOCwgNjksIDQ4LCA0OSwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OSwgNTYsIDEyOCwgNjksIDQ4LCA0OSwgNTUsIDY1LCAxMjgsIDY5LCA0OCwgNDksIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDksIDU0LCA2NSwgMTI4LCA2OSwgNDgsIDQ5LCA1NCwgMTI4LCA2OSwgNDgsIDQ5LCA1MywgMTI4LCAKKyAgICA2OSwgNDgsIDQ5LCA1MiwgMTI4LCA2OSwgNDgsIDQ5LCA1MSwgMTI4LCA2OSwgNDgsIDQ5LCA1MCwgMTI4LCA2OSwgNDgsIAorICAgIDQ5LCA0OSwgMTI4LCA2OSwgNDgsIDQ5LCA0OCwgMTI4LCA2OSwgNDgsIDQ4LCA1NywgNjUsIDEyOCwgNjksIDQ4LCA0OCwgCisgICAgNTcsIDEyOCwgNjksIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY5LCA0OCwgNDgsIDU2LCAxMjgsIDY5LCA0OCwgNDgsIDU1LCAKKyAgICAxMjgsIDY5LCA0OCwgNDgsIDU0LCAxMjgsIDY5LCA0OCwgNDgsIDUzLCAxMjgsIDY5LCA0OCwgNDgsIDUyLCAxMjgsIDY5LCAKKyAgICA0OCwgNDgsIDUxLCAxMjgsIDY5LCA0OCwgNDgsIDUwLCAxMjgsIDY5LCA0OCwgNDgsIDQ5LCAxMjgsIDY5LCA0NSwgNzcsIAorICAgIDY1LCA3MywgMjA0LCA2OCwgOTAsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA5MCwgNjksIDEyOCwgNjgsIDkwLCA5MCwgCisgICAgNjUsIDEyOCwgNjgsIDkwLCA4OSwgNjUsIDg5LCAxMjgsIDY4LCA5MCwgODcsIDY5LCAxMjgsIDY4LCA5MCwgODUsIDEyOCwgCisgICAgNjgsIDkwLCA3OSwgMTI4LCA2OCwgOTAsIDc0LCA2OSwgMTI4LCA2OCwgOTAsIDczLCA4NCwgNjUsIDEyOCwgNjgsIDkwLCAKKyAgICA3MywgMTI4LCA2OCwgOTAsIDcyLCA3OSwgNzMsIDEyOCwgNjgsIDkwLCA3MiwgNjksIDEyOCwgNjgsIDkwLCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDkwLCA2OSwgNzYsIDc5LCAxMjgsIDY4LCA5MCwgNjksIDY5LCAxMjgsIDY4LCA5MCwgNjksIDEyOCwgNjgsIAorICAgIDkwLCA2NSwgODksIDEyOCwgNjgsIDkwLCA2NSwgNjUsIDEyOCwgNjgsIDkwLCA2NSwgMTI4LCA2OCwgOTAsIDEyOCwgNjgsIAorICAgIDIxOCwgNjgsIDg5LCA3OSwgMTI4LCA2OCwgODksIDIwNywgNjgsIDg5LCA3OCwgNjUsIDc3LCA3MywgMTk1LCA2OCwgODksIAorICAgIDY5LCA3MiwgMTI4LCA2OCwgODksIDY5LCAyMDAsIDY4LCA4OSwgNjUsIDc4LCAxMjgsIDY4LCA4NywgNzksIDEyOCwgNjgsIAorICAgIDg3LCA2OSwgMTI4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA4NiwgNzMsIDgzLCA4NiwgNjUsIDgyLCA2NSwgMTI4LCA2OCwgCisgICAgODYsIDY4LCAxMjgsIDY4LCA4NiwgMTI4LCA2OCwgODUsIDg0LCA3MywgNjksIDgzLCAxMjgsIDY4LCA4NSwgODMsIDc1LCAKKyAgICAxMjgsIDY4LCA4NSwgODMsIDcyLCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2OCwgODUsIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjgsIDg1LCA4MiwgNTAsIDEyOCwgNjgsIDg1LCA4MCwgNzksIDc4LCA2OCwgNzMsIDg1LCAyMTEsIDY4LCA4NSwgCisgICAgNzksIDg4LCAxMjgsIDY4LCA4NSwgNzksIDEyOCwgNjgsIDg1LCA3OCwgNTIsIDEyOCwgNjgsIDg1LCA3OCwgNTEsIDEyOCwgCisgICAgNjgsIDg1LCA3OCwgMTc5LCA2OCwgODUsIDc3LCAxMjgsIDY4LCA4NSwgMjA0LCA2OCwgODUsIDcyLCAxMjgsIDY4LCA4NSwgCisgICAgNzEsIDg1LCA2OCwgMTI4LCA2OCwgODUsIDE5OSwgNjgsIDg1LCA2NywgNzUsIDEyOCwgNjgsIDg1LCA2NiwgNTAsIDEyOCwgCisgICAgNjgsIDg1LCA2NiwgMTI4LCA2OCwgODUsIDE5NCwgNjgsIDgyLCA4OSwgMTI4LCA2OCwgODIsIDIxNywgNjgsIDgyLCA4NSwgCisgICAgNzcsIDgzLCA4NCwgNzMsIDY3LCA3NSwgODMsIDEyOCwgNjgsIDgyLCA4NSwgNzcsIDEyOCwgNjgsIDgyLCA4NSwgMjA1LCAKKyAgICA2OCwgODIsIDc5LCA4MCwgODMsIDEyOCwgNjgsIDgyLCA3OSwgODAsIDc2LCA2OSwgODQsIDEyOCwgNjgsIDgyLCA3OSwgODAsIAorICAgIDQ1LCA4MywgNzIsIDY1LCA2OCwgNzksIDg3LCA2OSwgMTk2LCA2OCwgODIsIDc5LCA3OSwgNzYsIDczLCA3OCwgMTk5LCA2OCwgCisgICAgODIsIDc5LCA3NywgNjksIDY4LCA2NSwgODIsIDIxNywgNjgsIDgyLCA3MywgODYsIDY5LCAxMjgsIDY4LCA4MiwgNzMsIDg2LCAKKyAgICAxOTcsIDY4LCA4MiwgNzMsIDc4LCA3NSwgMTI4LCA2OCwgODIsIDczLCAyMDQsIDY4LCA4MiwgNjksIDgzLCA4MywgMTI4LCAKKyAgICA2OCwgODIsIDY5LCA2NSwgNzcsIDIxNywgNjgsIDgyLCA2NSwgODUsIDcxLCA3MiwgODQsIDIxMSwgNjgsIDgyLCA2NSwgNzcsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgMjA1LCA2OCwgODIsIDY1LCA3MSwgNzksIDc4LCAxMjgsIDY4LCA4MiwgNjUsIDcxLCA3OSwgCisgICAgMjA2LCA2OCwgODIsIDY1LCA3MCwgODQsIDczLCA3OCwgMTk5LCA2OCwgODIsIDY1LCA2NywgNzIsIDc3LCA2NSwgODMsIAorICAgIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgNjUsIDEyOCwgNjgsIDgyLCA2NSwgNjcsIDcyLCA3NywgMTkzLCA2OCwgCisgICAgNzksIDg3LCA3OCwgODcsIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY4LCA3OSwgODcsIDc4LCA0NSwgODAsIDc5LCA3MywgNzgsIAorICAgIDg0LCA3MywgNzgsIDE5OSwgNjgsIDc5LCA4NywgNzgsIDEyOCwgNjgsIDc5LCA4NiwgNjksIDEyOCwgNjgsIDc5LCA4NiwgCisgICAgMTk3LCA2OCwgNzksIDg1LCA3MSwgNzIsIDc4LCA4NSwgODQsIDEyOCwgNjgsIDc5LCA4NSwgNjYsIDg0LCAxMjgsIDY4LCAKKyAgICA3OSwgODUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDc2LCA3MywgNzgsIDE5NywgNjgsIAorICAgIDc5LCA4NSwgNjYsIDc2LCA2OSwgNDUsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY4LCA3OSwgODUsIDY2LCA3NiwgNjksIDEyOCwgCisgICAgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgNDUsIDgwLCAxMjgsIDY4LCA3OSwgODQsIDg0LCA2OSwgNjgsIDQ1LCA3OCwgMTI4LCAKKyAgICA2OCwgNzksIDg0LCA4NCwgNjksIDY4LCA0NSwgNzYsIDEyOCwgNjgsIDc5LCA4NCwgODQsIDY5LCA2OCwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4NCwgNjksIDE5NiwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTQsIDU2LCAxMjgsIDY4LCAKKyAgICA3OSwgODQsIDgzLCA0NSwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDU0LCA1NSwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTMsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUzLCAKKyAgICA1NCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIAorICAgIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MywgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1NSwgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCA1NSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MiwgNTQsIAorICAgIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUyLCA1MywgNTQsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIAorICAgIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCA1NCwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgCisgICAgODMsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCAKKyAgICA0NSwgNTIsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTUsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCA1NiwgCisgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDU0LCAKKyAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTYsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgCisgICAgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTMsIDU0LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCAKKyAgICA1MywgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIAorICAgIDgzLCA0NSwgNTEsIDUzLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MywgMTI4LCA2OCwgNzksIDg0LCA4MywgCisgICAgNDUsIDUxLCA1MiwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCAKKyAgICA4MywgNDUsIDUxLCA1MiwgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDU0LCA1NiwgMTI4LCA2OCwgNzksIAorICAgIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUxLCA1MiwgNTMsIAorICAgIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgCisgICAgNTEsIDUyLCA1MywgNTUsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTYsIDEyOCwgNjgsIDc5LCAKKyAgICA4NCwgODMsIDQ1LCA1MSwgNTIsIDUzLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgCisgICAgNTQsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCA1MywgNTQsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCAKKyAgICA1MSwgNTIsIDUzLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIDUyLCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTEsIAorICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTYsIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTUsIDU2LCAKKyAgICAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU1LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCA1NiwgCiAgICAgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgNTUsIDU2LCAxMjgsIDY4LCA3OSwgODQsIDgzLCA0NSwgNTAsIDU0LCAKICAgICA1NSwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1NCwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgNTYsIAogICAgIDEyOCwgNjgsIDc5LCA4NCwgODMsIDQ1LCA1MCwgNTMsIDU1LCA1NiwgMTI4LCA2OCwgNzksIDg0LCA4MywgNDUsIDUwLCA1MywgCkBAIC00Mjg2LDI2MyArNDMyNCw4NTQgQEAKICAgICA3MSwgMTI4LCA2OCwgNzksIDc4LCA3MSwgMTI4LCA2OCwgNzksIDc3LCA2NSwgNzMsIDIwNiwgNjgsIDc5LCA3NiwgODAsIAogICAgIDcyLCA3MywgNzgsIDEyOCwgNjgsIDc5LCA3NiwgNzYsIDgzLCAxMjgsIDY4LCA3OSwgNzYsIDc2LCA2NSwgMjEwLCA2OCwgCiAgICAgNzksIDc2LCA3MywgODUsIDc3LCAxMjgsIDY4LCA3OSwgNzUsIDc3LCA2NSwgNzMsIDEyOCwgNjgsIDc5LCA3MywgODQsIAotICAgIDEyOCwgNjgsIDc5LCA3MywgMTI4LCA2OCwgNzksIDcxLCAxMjgsIDY4LCA3OSwgMTk5LCA2OCwgNzksIDY5LCAyMTEsIDY4LCAKLSAgICA3OSwgNjgsIDY5LCA3NSwgNjUsIDg0LCA2NSwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgODQsIDEyOCwgNjgsIAotICAgIDc5LCA2NywgODUsIDc3LCA2OSwgNzgsIDIxMiwgNjgsIDc5LCA2NiwgODIsIDc5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCi0gICAgNjUsIDgzLCA3MiwgNzcsIDY5LCA2OSwgMTI4LCA2OCwgNzksIDY1LCA2NywgNzIsIDY1LCA4MywgNzIsIDc3LCA2OSwgMTk3LCAKLSAgICA2OCwgNzksIDY1LCAxMjgsIDY4LCA3OSwgNDUsIDc5LCAxMjgsIDY4LCA3NywgMTI4LCA2OCwgMjA1LCA2OCwgNzYsIDg1LCAKLSAgICAxMjgsIDY4LCA3NiwgNzksIDEyOCwgNjgsIDc2LCA3MywgMTI4LCA2OCwgNzYsIDcyLCA4OSwgNjUsIDEyOCwgNjgsIDc2LCAKLSAgICA3MiwgNjUsIDEyOCwgNjgsIDc2LCA2OSwgNjksIDEyOCwgNjgsIDc2LCA2NSwgMTI4LCA2OCwgNzYsIDEyOCwgNjgsIDc1LCAKLSAgICA2NSwgODIsIDEyOCwgNjgsIDc1LCA2NSwgMjEwLCA2OCwgNzQsIDY5LCA4MiwgODYsIDczLCAxMjgsIDY4LCA3NCwgNjksIAotICAgIDgyLCA4NiwgMTI4LCA2OCwgNzQsIDY5LCAxMjgsIDY4LCA3NCwgNjUsIDEyOCwgNjgsIDczLCA5MCwgOTAsIDIxNywgNjgsIAotICAgIDczLCA4NiwgNzksIDgyLCA2NywgMTk3LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCA4NiwgCi0gICAgNzMsIDgzLCA3MywgNzksIDIwNiwgNjgsIDczLCA4NiwgNzMsIDc4LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDczLCAKLSAgICA4NiwgNzMsIDY4LCA2OSwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDgzLCAxMjgsIDY4LCA3MywgODYsIAotICAgIDczLCA2OCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgNjksIDE5NiwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCi0gICAgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDE5NywgNjgsIDczLCA4NiwgNjksIDgyLCA3MSwgNjksIDc4LCA2NywgNjksIAotICAgIDEyOCwgNjgsIDczLCA4NCwgODQsIDIwNywgNjgsIDczLCA4MywgODQsIDc5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgCi0gICAgNjgsIDczLCA4MywgODQsIDczLCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDg0LCA3MywgNzYsIAotICAgIDc2LCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgNzYsIDg2LCA2OSwgNDUsIDUwLCAxMjgsIDY4LCA3MywgODMsIDgzLCA3OSwgCi0gICAgNzYsIDg2LCA2OSwgMTI4LCA2OCwgNzMsIDgzLCA4MCwgNjksIDgyLCA4MywgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCAKLSAgICA3NSwgMTI4LCA2OCwgNzMsIDgzLCA3MywgNzcsIDc5LCA4NSwgMTI4LCA2OCwgNzMsIDgzLCA3MiwgMTI4LCA2OCwgNzMsIAotICAgIDgzLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzksIDg1LCAyMTEsIDY4LCA3MywgODMsIDE5NSwgNjgsIDczLCA4MywgCi0gICAgNjUsIDgwLCA4MCwgNzksIDczLCA3OCwgODQsIDY5LCAxOTYsIDY4LCA3MywgODMsIDY1LCA2NiwgNzYsIDY5LCAxOTYsIDY4LCAKLSAgICA3MywgODIsIDcxLCAxOTMsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDc2LCAyMTcsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIAotICAgIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgODIsIDY5LCA2NywgODQsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDgwLCA4NCwgCi0gICAgNjksIDEyOCwgNjgsIDczLCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2OCwgNzMsIDgwLCA3NiwgNzksIDg1LCA3OCwgMTI4LCAKLSAgICA2OCwgNzMsIDgwLCA3NiwgNzMsIDEyOCwgNjgsIDczLCA4MCwgNzYsIDIwMSwgNjgsIDczLCA3OCwgNzEsIDY2LCA2NSwgCi0gICAgMjEyLCA2OCwgNzMsIDIwNiwgNjgsIDczLCA3NywgNzcsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA3NywgNzMsIDc4LCAKLSAgICA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA1MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCA3OCwgCi0gICAgNDUsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNDksIDEyOCwgNjgsIDczLCAKLSAgICA3NywgNzMsIDc4LCA3MywgODMsIDcyLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNjgsIDczLCAxOTMsIAotICAgIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCA3OSwgNzgsIDY1LCAyMDQsIDY4LCA3MywgNzcsIDY5LCA3OCwgODMsIDczLCAKLSAgICA3OSwgMjA2LCA2OCwgNzMsIDc3LCA1MCwgMTI4LCA2OCwgNzMsIDc3LCAxNzgsIDY4LCA3MywgNzYsIDEyOCwgNjgsIDczLCAKLSAgICA3MSwgODIsIDY1LCA4MCwgNzIsIDEyOCwgNjgsIDczLCA3MSwgODIsIDY1LCA4MCwgMjAwLCA2OCwgNzMsIDcxLCA4MiwgNjUsIAotICAgIDc3LCA3NywgNzksIDIxMSwgNjgsIDczLCA3MSwgODIsIDY1LCA3NywgNzcsIDE5MywgNjgsIDczLCA3MSwgODIsIDY1LCAKLSAgICAyMDUsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDcxLCA3OSwgODIsIDcxLCA3OSwgCi0gICAgMjA2LCA2OCwgNzMsIDcxLCA3MywgODQsIDgzLCAxMjgsIDY4LCA3MywgNzEsIDY1LCA3NywgNzcsIDY1LCAxMjgsIDY4LCAKLSAgICA3MywgNzEsIDE5MywgNjgsIDczLCA3MCwgODQsIDc5LCA3MSwgNzEsIDc5LCAyMTEsIDY4LCA3MywgNzAsIDc5LCA3OCwgNzMsIAotICAgIDY1LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNzMsIDY3LCA4NSwgNzYsIDg0LCAyMTcsIDY4LCA3MywgNzAsIDcwLCA3MywgCi0gICAgNjcsIDg1LCA3NiwgODQsIDczLCA2OSwgODMsIDEyOCwgNjgsIDczLCA3MCwgNzAsIDY5LCA4MiwgNjksIDc4LCA4NCwgNzMsIAotICAgIDY1LCA3NiwgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDY3LCAxOTcsIDY4LCA3MywgNzAsIDY1LCA4NCwgCi0gICAgMTI4LCA2OCwgNzMsIDY5LCA4MywgNzMsIDgzLCAxMjgsIDY4LCA3MywgNjksIDgzLCA3MywgMjExLCA2OCwgNzMsIDY5LCAKLSAgICA4MywgNjksIDIwNCwgNjgsIDczLCA2OSwgODAsIDEyOCwgNjgsIDczLCAxOTcsIDY4LCA3MywgNjYsIDEyOCwgNjgsIDczLCAKLSAgICA2NSwgODQsIDc5LCA3OCwgNzksIDIwNiwgNjgsIDczLCA2NSwgODQsIDc5LCA3OCwgNzMsIDc1LCAyMDEsIDY4LCA3MywgNjUsIAotICAgIDgzLCA4NCwgNzksIDc2LCAyMDEsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCA4MywgMTI4LCA2OCwgNzMsIDY1LCA3NywgCi0gICAgNzksIDc4LCA2OCwgMTI4LCA2OCwgNzMsIDY1LCA3NywgNzksIDc4LCAxOTYsIDY4LCA3MywgNjUsIDc3LCA2OSwgODQsIDY5LCAKLSAgICAyMTAsIDY4LCA3MywgNjUsIDc2LCA4OSwgODQsIDczLCA3NSwgNjUsIDEyOCwgNjgsIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIAotICAgIDc1LCAxOTMsIDY4LCA3MywgNjUsIDc2LCA2OSwgNjcsIDg0LCA0NSwgMjA4LCA2OCwgNzMsIDY1LCA3MSwgNzksIDc4LCA2NSwgCi0gICAgNzYsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA5MCwgNjksIDE5NiwgNjgsIDczLCA2NSwgNjksIDgyLCAKLSAgICA2OSwgODMsIDczLCA4MywgNDUsIDgyLCA3MywgNzgsIDcxLCAxMjgsIDY4LCA3MywgNjUsIDY5LCA4MiwgNjksIDgzLCA3MywgCi0gICAgODMsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MiwgNzksIDg1LCAxMjgsIDY4LCAKLSAgICA3MiwgNzksIDc5LCAxMjgsIDY4LCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MywgNzMsIDEyOCwgNjgsIDcyLCA3MywgMTI4LCAKLSAgICA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIAotICAgIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgCi0gICAgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCAKLSAgICA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIAotICAgIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCAKLSAgICA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgCi0gICAgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCAKLSAgICA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIAotICAgIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgCi0gICAgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCAKLSAgICA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgCi0gICAgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCAKLSAgICA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIAotICAgIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgCi0gICAgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCAKLSAgICA3OCwgODQsIDY1LCAyMDQsIDY4LCA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIAotICAgIDc4LCA3OSwgNzcsIDczLCA3OCwgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgCi0gICAgNzgsIDcxLCAxMjgsIDY4LCA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCAKLSAgICA3NiwgODQsIDY1LCAxMjgsIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIAotICAgIDgwLCA3MiwgNzMsIDE5NSwgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgCi0gICAgODIsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCAKLSAgICA3NiwgNzMsIDc3LCA3MywgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIAotICAgIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIDc1LCA2NSwgMTI4LCA2OCwgCi0gICAgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAKLSAgICA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgNzMsIDg0LCA3MywgNzksIAotICAgIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIDIxMSwgNjgsIDY5LCA2OSwgCi0gICAgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgMTI4LCA2OCwgNjksIDY3LCAKLSAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCA2NSwgODMsIDY5LCAxMjgsIAotICAgIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIDg0LCA3MywgODYsIDE5NywgCi0gICAgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgNzMsIDgzLCA3MywgODYsIAotICAgIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCA2OSwgNjcsIDczLCA2OCwgCi0gICAgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2NywgNjUsIDg5LCAKLSAgICA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAxMjgsIDY4LCA2OSwgNjUsIAotICAgIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCA2OCwgODUsIDg0LCAxMjgsIAotICAgIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIDg1LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgODUsIDc5LCAxMjgsIDY4LCAKLSAgICA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgNjgsIDY4LCA3OSwgODAsIAotICAgIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCA3MywgODQsIDEyOCwgNjgsIAotICAgIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIDY5LCA4MCwgMTI4LCA2OCwgCi0gICAgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIDY4LCA2OCwgNzIsIDc5LCAKLSAgICAxMjgsIDY4LCA2OCwgNzIsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCAKLSAgICA2OCwgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIAotICAgIDY4LCA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgCi0gICAgNjUsIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCAKLSAgICA2OCwgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIAotICAgIDc2LCAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgCi0gICAgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgCi0gICAgNjcsIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIAotICAgIDY4LCA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAKLSAgICAxMjgsIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIAotICAgIDY1LCA4NCwgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgCi0gICAgNzIsIDY5LCAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCAKLSAgICA2NSwgMTI4LCA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIAotICAgIDY4LCA2NSwgODIsIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgCi0gICAgMTI4LCA2OCwgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgCi0gICAgNjgsIDY1LCA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCAKLSAgICA0NSwgNzcsIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIAotICAgIDY5LCAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgCi0gICAgMTI4LCA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgCi0gICAgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCAKLSAgICA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIAotICAgIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgCi0gICAgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCAKLSAgICA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIAotICAgIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAKLSAgICAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCAKLSAgICA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgCi0gICAgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCAKLSAgICA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIAotICAgIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgCi0gICAgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCAKLSAgICA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCAKLSAgICA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNjgsIDcyLCA4NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzIsIDEyOCwgNjgsIAotICAgIDQ4LCA1NCwgNTUsIDcxLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjksIDEyOCwgCi0gICAgNjgsIDQ4LCA1NCwgNTUsIDY4LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA2NywgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjYsIAotICAgIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY1LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAxMjgsIDY4LCA0OCwgNTQsIDU0LCAxMjgsIAotICAgIDY4LCA0OCwgNTQsIDUzLCAxMjgsIDY4LCA0OCwgNTQsIDUyLCAxMjgsIDY4LCA0OCwgNTQsIDUxLCAxMjgsIDY4LCA0OCwgCi0gICAgNTQsIDUwLCAxMjgsIDY4LCA0OCwgNTQsIDQ5LCAxMjgsIDY4LCA0OCwgNTQsIDQ4LCAxMjgsIDY4LCA0OCwgNTMsIDU3LCAKLSAgICAxMjgsIDY4LCA0OCwgNTMsIDU2LCAxMjgsIDY4LCA0OCwgNTMsIDU1LCAxMjgsIDY4LCA0OCwgNTMsIDU0LCAxMjgsIDY4LCAKLSAgICA0OCwgNTMsIDUzLCAxMjgsIDY4LCA0OCwgNTMsIDUyLCA2NSwgMTI4LCA2OCwgNDgsIDUzLCA1MiwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA1MSwgMTI4LCA2OCwgNDgsIDUzLCA1MCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTAsIDEyOCwgNjgsIDQ4LCA1MywgCi0gICAgNDksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDczLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA3MiwgMTI4LCA2OCwgNDgsIDUzLCAKLSAgICA0OCwgNzEsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcwLCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2OSwgMTI4LCA2OCwgNDgsIAotICAgIDUzLCA0OCwgNjgsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY3LCAxMjgsIDY4LCA0OCwgNTMsIDQ4LCA2NiwgMTI4LCA2OCwgCi0gICAgNDgsIDUzLCA0OCwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDEyOCwgNjgsIDQ4LCA1MiwgNTcsIDEyOCwgNjgsIDQ4LCAKLSAgICA1MiwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCAxMjgsIDY4LCA0OCwgNTIsIDU1LCAxMjgsIDY4LCA0OCwgNTIsIAotICAgIDU0LCA2NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgMTI4LCA2OCwgNDgsIDUyLCA1MywgMTI4LCA2OCwgNDgsIDUyLCA1MiwgCi0gICAgMTI4LCA2OCwgNDgsIDUyLCA1MSwgMTI4LCA2OCwgNDgsIDUyLCA1MCwgMTI4LCA2OCwgNDgsIDUyLCA0OSwgMTI4LCA2OCwgCi0gICAgNDgsIDUyLCA0OCwgMTI4LCA2OCwgNDgsIDUxLCA1NywgMTI4LCA2OCwgNDgsIDUxLCA1NiwgMTI4LCA2OCwgNDgsIDUxLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUxLCA1NCwgMTI4LCA2OCwgNDgsIDUxLCA1MywgMTI4LCA2OCwgNDgsIDUxLCA1MiwgNjUsIAotICAgIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDEyOCwgNjgsIDQ4LCA1MSwgNTEsIDEyOCwgNjgsIDQ4LCA1MSwgNTAsIDEyOCwgNjgsIAotICAgIDQ4LCA1MSwgNDksIDY1LCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCAxMjgsIDY4LCA0OCwgNTEsIDQ4LCAxMjgsIDY4LCA0OCwgCi0gICAgNTAsIDU3LCAxMjgsIDY4LCA0OCwgNTAsIDU2LCAxMjgsIDY4LCA0OCwgNTAsIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDUwLCAKLSAgICA1NSwgMTI4LCA2OCwgNDgsIDUwLCA1NCwgMTI4LCA2OCwgNDgsIDUwLCA1MywgMTI4LCA2OCwgNDgsIDUwLCA1MiwgMTI4LCAKLSAgICA2OCwgNDgsIDUwLCA1MSwgMTI4LCA2OCwgNDgsIDUwLCA1MCwgMTI4LCA2OCwgNDgsIDUwLCA0OSwgMTI4LCA2OCwgNDgsIAotICAgIDUwLCA0OCwgMTI4LCA2OCwgNDgsIDQ5LCA1NywgMTI4LCA2OCwgNDgsIDQ5LCA1NiwgMTI4LCA2OCwgNDgsIDQ5LCA1NSwgCi0gICAgMTI4LCA2OCwgNDgsIDQ5LCA1NCwgMTI4LCA2OCwgNDgsIDQ5LCA1MywgMTI4LCA2OCwgNDgsIDQ5LCA1MiwgMTI4LCA2OCwgCi0gICAgNDgsIDQ5LCA1MSwgMTI4LCA2OCwgNDgsIDQ5LCA1MCwgMTI4LCA2OCwgNDgsIDQ5LCA0OSwgMTI4LCA2OCwgNDgsIDQ5LCAKLSAgICA0OCwgMTI4LCA2OCwgNDgsIDQ4LCA1NywgMTI4LCA2OCwgNDgsIDQ4LCA1NiwgNjUsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIAotICAgIDEyOCwgNjgsIDQ4LCA0OCwgNTUsIDEyOCwgNjgsIDQ4LCA0OCwgNTQsIDEyOCwgNjgsIDQ4LCA0OCwgNTMsIDEyOCwgNjgsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjgsIDQ4LCA0OCwgNTEsIDEyOCwgNjgsIDQ4LCA0OCwgNTAsIDEyOCwgNjgsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjcsIDg5LCA4OCwgMTI4LCA2NywgODksIDg0LCAxMjgsIDY3LCA4OSwgODIsIDg4LCAxMjgsIDY3LCA4OSwgCi0gICAgODIsIDY5LCA3OCwgNjUsIDczLCAxOTUsIDY3LCA4OSwgODIsIDEyOCwgNjcsIDg5LCA4MCwgODIsIDczLCA3OSwgMjEyLCAKLSAgICA2NywgODksIDgwLCA2OSwgODIsIDg1LCA4MywgMTI4LCA2NywgODksIDgwLCAxMjgsIDY3LCA4OSwgNzYsIDczLCA3OCwgNjgsIAotICAgIDgyLCA3MywgNjcsIDczLCA4NCwgODksIDEyOCwgNjcsIDg5LCA2NywgNzYsIDc5LCA3OCwgNjksIDEyOCwgNjcsIDg5LCA2NSwgCi0gICAgODksIDEyOCwgNjcsIDg5LCA2NSwgODcsIDEyOCwgNjcsIDg5LCA2NSwgMTI4LCA2NywgODcsIDc5LCA3OSwgMTI4LCA2NywgCi0gICAgODcsIDc5LCAxMjgsIDY3LCA4NywgNzMsIDczLCAxMjgsIDY3LCA4NywgNzMsIDEyOCwgNjcsIDg3LCA2OSwgNzksIDgyLCAKLSAgICA4NCwgNzIsIDEyOCwgNjcsIDg3LCA2OSwgMTI4LCA2NywgODcsIDY1LCA2NSwgMTI4LCA2NywgODUsIDg4LCAxMjgsIDY3LCAKLSAgICA4NSwgODUsIDEyOCwgNjcsIDg1LCAyMTIsIDY3LCA4NSwgODMsIDg0LCA3OSwgNzcsIDgzLCAxMjgsIDY3LCA4NSwgODMsIAotICAgIDg0LCA3OSwgNzcsIDY5LCAyMTAsIDY3LCA4NSwgODMsIDg0LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA4NSwgODMsIDgwLCAKLSAgICAxMjgsIDY3LCA4NSwgODIsIDg4LCAxMjgsIDY3LCA4NSwgODIsIDg2LCA3MywgNzgsIDE5OSwgNjcsIDg1LCA4MiwgODYsIAotICAgIDY5LCA2OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNjksIDE5NiwgNjcsIDg1LCA4MiwgODYsIDY5LCAxMjgsIDY3LCA4NSwgCi0gICAgODIsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAxMjgsIDY3LCAKLSAgICA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIDEyOCwgNjcsIAotICAgIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgMTk2LCA2NywgCi0gICAgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgMjA1LCA2NywgCi0gICAgODUsIDY2LCA2OSwgNjgsIDEyOCwgNjcsIDg1LCA2NiwgMTk3LCA2NywgODUsIDY1LCA4NCwgODIsIDczLCA3NiwgNzYsIDc5LCAKLSAgICAxMjgsIDY3LCA4NSwgNjUsIDg0LCA4MiwgNzMsIDc2LCA3NiwgMjA3LCA2NywgODUsIDY1LCAyMDUsIDY3LCA4NSwgMTI4LCAKLSAgICA2NywgODMsIDczLCAxMjgsIDY3LCA4MiwgODksIDgzLCA4NCwgNjUsIDIwNCwgNjcsIDgyLCA4OSwgODAsIDg0LCA3OSwgNzEsIAotICAgIDgyLCA2NSwgNzcsIDc3LCA3MywgMTk1LCA2NywgODIsIDg5LCA3MywgNzgsIDE5OSwgNjcsIDgyLCA4NSwgOTAsIDY5LCA3MywgCi0gICAgODIsIDIwNywgNjcsIDgyLCA4NSwgNjcsIDczLCA3MCwgNzksIDgyLCAyMDUsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCAKLSAgICA2OSwgNDUsIDUzLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUyLCAxMjgsIDY3LCA4MiwgODUsIAotICAgIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUxLCAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgNDUsIDUwLCAKLSAgICAxMjgsIDY3LCA4MiwgODUsIDY3LCA3MywgNjYsIDc2LCA2OSwgMTI4LCA2NywgODIsIDc5LCA4NywgNzgsIDEyOCwgNjcsIAotICAgIDgyLCA3OSwgODMsIDgzLCA3MywgNzgsIDcxLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCAxOTksIDY3LCA4MiwgCi0gICAgNzksIDgzLCA4MywgNzIsIDY1LCA4NCwgNjcsIDIwMCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgNjgsIDQ1LCA4NCwgNjUsIAotICAgIDczLCA3NiwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCA2OCwgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDY5LCAKLSAgICAxOTYsIDY3LCA4MiwgNzksIDgzLCA4MywgNjYsIDc5LCA3OCwgNjksIDgzLCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgCi0gICAgMTI4LCA2NywgODIsIDc5LCA4MywgMjExLCA2NywgODIsIDc5LCA4MCwgMTI4LCA2NywgODIsIDc5LCA3MywgODgsIDEyOCwgCi0gICAgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgNjcsIDgyLCAKLSAgICA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCA4MiwgNjksIAotICAgIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIDY5LCA2OCwgCi0gICAgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAxMjgsIDY3LCAKLSAgICA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIDgyLCA2NSwgNjYsIAotICAgIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgMTI4LCA2NywgNzksIDIxNSwgNjcsIDc5LCAKLSAgICA4NiwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODUsIDgwLCA3NiwgMTk3LCA2NywgNzksIDg1LCA3OCwgODQsIDczLCA3OCwgCi0gICAgMTk5LCA2NywgNzksIDg1LCA3OCwgODQsIDY5LCA4MiwgODMsIDczLCA3OCwgNzUsIDEyOCwgNjcsIDc5LCA4NSwgNzgsIDg0LCAKLSAgICA2OSwgODIsIDY2LCA3OSwgODIsIDY5LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA2NywgNzMsIDIwNCwgNjcsIDc5LCA4NSwgNjcsIAotICAgIDIwMCwgNjcsIDc5LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MiwgNjksIDgzLCA4MCwgNzksIDc4LCA2OCwgMjExLCA2NywgCi0gICAgNzksIDgyLCA4MiwgNjksIDY3LCA4NCwgMTI4LCA2NywgNzksIDgyLCA4MCwgODMsIDY5LCAxMjgsIDY3LCA3OSwgODIsIDgwLCAKLSAgICA3OSwgODIsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDgyLCA3OSwgNzgsIDczLCA4MywgMTI4LCA2NywgNzksIAotICAgIDgyLCA3OCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgODIsIDc4LCA2OSwgCi0gICAgMjEwLCA2NywgNzksIDgyLCA3NSwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDg0LCAxMjgsIDY3LCAKLSAgICA3OSwgODAsIDg5LCA4MiwgNzMsIDcxLCA3MiwgMjEyLCA2NywgNzksIDgwLCA4OSwgMTI4LCA2NywgNzksIDgwLCA4MiwgNzksIAotICAgIDY4LCA4NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgODAsIDgwLCA2OSwgODIsIDQ1LCA1MCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCi0gICAgNjksIDgyLCAxMjgsIDY3LCA3OSwgODAsIDEyOCwgNjcsIDc5LCA3OSwgNzYsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCAKLSAgICA3OCwgNzEsIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDczLCA2OSwgMTI4LCA2NywgNzksIDc5LCA3NSwgNjksIDE5NiwgNjcsIAotICAgIDc5LCA3OSwgMTI4LCA2NywgNzksIDc4LCA4NiwgNjksIDgyLCA3MSwgNzMsIDc4LCAxOTksIDY3LCA3OSwgNzgsIDg2LCA2OSwgCi0gICAgNzgsIDczLCA2OSwgNzgsIDY3LCAxOTcsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzgsIDg0LCAKLSAgICA4MiwgNzksIDIwNCwgNjcsIDc5LCA3OCwgODQsIDgyLCA2NSwgODIsIDczLCA2OSwgODQsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIAotICAgIDg0LCA4MiwgNjUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNzksIDg1LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgMjEwLCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNzMsIDc4LCAxOTksIDY3LCAKLSAgICA3OSwgNzgsIDg0LCA3MywgNzgsIDg1LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzksIDc4LCA4NCwgNjksIDc4LCA4NCwgCi0gICAgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4NCwgNjksIDc3LCA4MCwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgMjExLCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCA3OCwgNzMsIDc4LCAxOTksIAotICAgIDY3LCA3OSwgNzgsIDg0LCA2NSwgNzMsIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY1LCA2NywgODQsIDEyOCwgNjcsIDc5LCA3OCwgCi0gICAgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDgyLCA4NSwgNjcsIAotICAgIDg0LCA3MywgNzksIDIwNiwgNjcsIDc5LCA3OCwgODMsIDg0LCA2NSwgNzgsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCi0gICAgNjUsIDc4LCAyMTIsIDY3LCA3OSwgNzgsIDgzLCA4NCwgNjUsIDc4LCA2NywgODksIDEyOCwgNjcsIDc5LCA3OCwgODMsIDY5LCAKLSAgICA2NywgODUsIDg0LCA3MywgODYsIDE5NywgNjcsIDc5LCA3OCwgNzQsIDg1LCA3OCwgNjcsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY3LCA3OSwgNzgsIDc0LCA4NSwgNzEsIDY1LCA4NCwgMTk3LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNzMsIDc4LCAKLSAgICAxOTksIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIAotICAgIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDczLCA2NywgNjUsIDIwNCwgNjcsIDc5LCA3OCwgNzEsIDgyLCA4NSwgNjksIDc4LCAKLSAgICAyMTIsIDY3LCA3OSwgNzgsIDcxLCA4MiwgNjUsIDg0LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIAotICAgIDc4LCA3MCwgODUsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzksIDg1LCA3OCwgNjgsIDY5LCAxOTYsIDY3LCA3OSwgCi0gICAgNzgsIDcwLCA3NiwgNzMsIDY3LCA4NCwgMTI4LCA2NywgNzksIDc4LCA3MCwgNjksIDg0LCA4NCwgMjAxLCA2NywgNzksIDc4LCAKLSAgICA2NywgNjUsIDg2LCA2OSwgNDUsIDgzLCA3MywgNjgsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDY3LCA2NSwgODYsIDY5LCA0NSwgCi0gICAgODAsIDc5LCA3MywgNzgsIDg0LCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCAKLSAgICA3OSwgNzcsIDgwLCA4NSwgODQsIDY5LCA4MiwgMTI4LCA2NywgNzksIDc3LCA4MCwgODIsIDY5LCA4MywgODMsIDczLCA3OSwgCi0gICAgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgNzksIDc3LCA4MCwgNzksIDgzLCAKLSAgICA3MywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDIwNiwgNjcsIAotICAgIDc5LCA3NywgODAsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDczLCAKLSAgICA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgODQsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNzYsIAotICAgIDY5LCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NywgNzksIDc3LCA4MCwgNjUsIDgyLCA2OSwgMTI4LCA2NywgNzksIDc3LCA3NywgCi0gICAgNzksIDIwNiwgNjcsIDc5LCA3NywgNzcsIDY5LCA4MiwgNjcsIDczLCA2NSwgMjA0LCA2NywgNzksIDc3LCA3NywgNjUsIDc4LCAKLSAgICA2OCwgMTI4LCA2NywgNzksIDc3LCA3NywgNjUsIDEyOCwgNjcsIDc5LCA3NywgNzcsIDE5MywgNjcsIDc5LCA3NywgNjksIAotICAgIDg0LCAxMjgsIDY3LCA3OSwgNzcsIDY2LCA3MywgNzgsIDY5LCA2OCwgMTI4LCA2NywgNzksIDc3LCA2NiwgNzMsIDc4LCA2NSwgCi0gICAgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDEyOCwgNjcsIDc5LCA3NiwgODUsIDc3LCA3OCwgMTI4LCAKLSAgICA2NywgNzksIDc2LCA3OSwgODIsIDEyOCwgNjcsIDc5LCA3NiwgNzYsIDczLCA4MywgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzYsIAotICAgIDc2LCAxMjgsIDY3LCA3OSwgNzYsIDE5NiwgNjcsIDc5LCA3MCwgNzAsIDczLCA3OCwgMTI4LCA2NywgNzksIDY5LCA3OCwgCi0gICAgNzEsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDE5OSwgNjcsIDc5LCA2OCwgNjUsIDEyOCwgNjcsIDc5LCA2NywgNzUsIDg0LCAKLSAgICA2NSwgNzMsIDIwNCwgNjcsIDc5LCA2NSwgODMsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDc5LCA2NSwgMTI4LCA2NywgNzcsIAotICAgIDEyOCwgNjcsIDIwNSwgNjcsIDc2LCA4NSwgODMsIDg0LCA2OSwgMjEwLCA2NywgNzYsIDg1LCA2NiwgODMsIDEyOCwgNjcsIAotICAgIDc2LCA4NSwgNjYsIDQ1LCA4MywgODAsIDc5LCA3NSwgNjksIDE5NiwgNjcsIDc2LCA4NSwgNjYsIDEyOCwgNjcsIDc2LCA4NSwgCi0gICAgMTk0LCA2NywgNzYsIDc5LCA4NiwgNjksIDgyLCAxMjgsIDY3LCA3NiwgNzksIDg1LCA2OCwgMTI4LCA2NywgNzYsIDc5LCAKLSAgICA4NSwgMTk2LCA2NywgNzYsIDc5LCA4NCwgNzIsIDY5LCA4MywgMTI4LCA2NywgNzYsIDc5LCA4NCwgNzIsIDEyOCwgNjcsIAotICAgIDc2LCA3OSwgODMsIDY5LCA4NCwgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDc4LCA2OSwgODMsIDgzLCAxMjgsIDY3LCA3NiwgCi0gICAgNzksIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDE5NywgNjcsIDc2LCA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCAKLSAgICAxOTcsIDY3LCA3NiwgNzksIDY3LCAyMDMsIDY3LCA3NiwgNzMsIDg2LCA3MywgODMsIDEyOCwgNjcsIDc2LCA3MywgODAsIAotICAgIDY2LCA3OSwgNjUsIDgyLCA2OCwgMTI4LCA2NywgNzYsIDczLCA3OCwgNzUsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3OCwgCi0gICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzYsIDczLCA3NywgNjUsIDY3LCA4NSwgODMsIDEyOCwgNjcsIDc2LCA3MywgNzAsIDcwLCAKLSAgICAxMjgsIDY3LCA3NiwgNzMsIDY3LCA3NSwgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDUwLCAxMjgsIDY3LCA3NiwgNjksIAotICAgIDcwLCA0NSwgNDksIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDEyOCwgNjcsIDc2LCA2OSwgMTk4LCA2NywgNzYsIDY5LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDY5LCA2NSwgMjEwLCA2NywgNzYsIDY1LCA4MywgODMsIDczLCA2NywgNjUsIAotICAgIDIwNCwgNjcsIDc2LCA2NSwgODAsIDgwLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA2NSwgODAsIDgwLCA2OSwgMjEwLCA2NywgCi0gICAgNzYsIDY1LCA3OCwgMTI4LCA2NywgNzYsIDY1LCAyMDYsIDY3LCA3NiwgNjUsIDc3LCA4MywgNzIsIDY5LCA3NiwgMjA0LCAKLSAgICA2NywgNzYsIDY1LCA3MywgNzcsIDEyOCwgNjcsIDc2LCAxMjgsIDY3LCA3MywgODgsIDEyOCwgNjcsIDczLCA4NiwgNzMsIAotICAgIDc2LCA3MywgNjUsIDc4LCAxMjgsIDY3LCA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgNjksIDEyOCwgNjcsIDczLCA4NCwgCi0gICAgODksIDgzLCA2NywgNjUsIDgwLCAxOTcsIDY3LCA3MywgODQsIDIwMSwgNjcsIDczLCA4NCwgNjUsIDg0LCA3MywgNzksIAotICAgIDIwNiwgNjcsIDczLCA4NCwgMTI4LCA2NywgNzMsIDgyLCA2NywgODUsIDIxMSwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgCi0gICAgNzAsIDc2LCA2OSwgODgsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCA3NywgNzAsIDc2LCA2OSwgMjE2LCA2NywgNzMsIDgyLCAKLSAgICA2NywgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNzMsIDgyLCA2NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjcsIAotICAgIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDE5OSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjcsIDczLCA4MiwgCi0gICAgNjcsIDc2LCA2OSwgMjExLCA2NywgNzMsIDgyLCA2NywgNzYsIDY5LCA2OCwgMTI4LCA2NywgNzMsIDgwLCAxMjgsIDY3LCAKLSAgICA3MywgNzgsIDc4LCA2NSwgNjYsIDY1LCA4MiwgMTI4LCA2NywgNzMsIDc4LCA2OSwgNzcsIDY1LCAxMjgsIDY3LCA3MywgCisgICAgMTI4LCA2OCwgNzksIDczLCA3OCwgMTk5LCA2OCwgNzksIDczLCAxMjgsIDY4LCA3OSwgNzEsIDEyOCwgNjgsIDc5LCAxOTksIAorICAgIDY4LCA3OSwgNjksIDIxMSwgNjgsIDc5LCA2OCwgNjksIDc1LCA2NSwgODQsIDY1LCAxMjgsIDY4LCA3OSwgNjcsIDg1LCA3NywgCisgICAgNjksIDc4LCA4NCwgMTI4LCA2OCwgNzksIDY3LCA4NSwgNzcsIDY5LCA3OCwgMjEyLCA2OCwgNzksIDY2LCA4MiwgNzksIAorICAgIDEyOCwgNjgsIDc5LCA2NSwgNjcsIDcyLCA2NSwgODMsIDcyLCA3NywgNjksIDY5LCAxMjgsIDY4LCA3OSwgNjUsIDY3LCA3MiwgCisgICAgNjUsIDgzLCA3MiwgNzcsIDY5LCAxOTcsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDc5LCA0NSwgNzksIDEyOCwgNjgsIDc3LCAKKyAgICAxMjgsIDY4LCAyMDUsIDY4LCA3NiwgODUsIDEyOCwgNjgsIDc2LCA3OSwgMTI4LCA2OCwgNzYsIDczLCAxMjgsIDY4LCA3NiwgCisgICAgNzIsIDg5LCA2NSwgMTI4LCA2OCwgNzYsIDcyLCA2NSwgMTI4LCA2OCwgNzYsIDY5LCA2OSwgMTI4LCA2OCwgNzYsIDY1LCAKKyAgICAxMjgsIDY4LCA3NiwgMTI4LCA2OCwgNzUsIDY1LCA4MiwgMTI4LCA2OCwgNzUsIDY1LCAyMTAsIDY4LCA3NCwgNjksIDgyLCAKKyAgICA4NiwgNzMsIDEyOCwgNjgsIDc0LCA2OSwgODIsIDg2LCAxMjgsIDY4LCA3NCwgNjksIDEyOCwgNjgsIDc0LCA2NSwgMTI4LCAKKyAgICA2OCwgNzMsIDkwLCA5MCwgMjE3LCA2OCwgNzMsIDg2LCA3OSwgODIsIDY3LCAxOTcsIDY4LCA3MywgODYsIDczLCA4MywgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2OCwgNzMsIDg2LCA3MywgNzgsIDY1LCA4NCwgCisgICAgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAKKyAgICA4MiwgODMsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDczLCA4NiwgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2OCwgNzMsIDg2LCA3MywgNjgsIDY5LCAxMjgsIDY4LCA3MywgODYsIDczLCA2OCwgMTk3LCA2OCwgNzMsIDg2LCAKKyAgICA2OSwgODIsIDcxLCA2OSwgNzgsIDY3LCA2OSwgMTI4LCA2OCwgNzMsIDg0LCA4NCwgMjA3LCA2OCwgNzMsIDgzLCA4NCwgNzksIAorICAgIDgyLCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2OCwgNzMsIDgzLCA4NCwgNzMsIDc4LCA3MSwgODUsIDczLCA4MywgNzIsIDEyOCwgCisgICAgNjgsIDczLCA4MywgODQsIDczLCA3NiwgNzYsIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCA0NSwgNTAsIAorICAgIDEyOCwgNjgsIDczLCA4MywgODMsIDc5LCA3NiwgODYsIDY5LCAxMjgsIDY4LCA3MywgODMsIDgwLCA4NSwgODQsIDY5LCAKKyAgICAxOTYsIDY4LCA3MywgODMsIDgwLCA2OSwgODIsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY4LCA3MywgODMsIDc1LCAxMjgsIAorICAgIDY4LCA3MywgODMsIDczLCA3NywgNzksIDg1LCAxMjgsIDY4LCA3MywgODMsIDcyLCAxMjgsIDY4LCA3MywgODMsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA3MywgNzgsIDg1LCA3OSwgODUsIDIxMSwgNjgsIDczLCA4MywgMTk1LCA2OCwgNzMsIDgzLCA2NSwgODAsIDgwLCAKKyAgICA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjgsIDczLCA4MywgNjUsIDY2LCA3NiwgNjksIDE5NiwgNjgsIDczLCA4MiwgNzEsIAorICAgIDE5MywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzYsIDIxNywgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCA3OCwgCisgICAgNjUsIDIwNCwgNjgsIDczLCA4MiwgNjksIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY4LCA3MywgODAsIDg0LCA2OSwgMTI4LCAKKyAgICA2OCwgNzMsIDgwLCA4MCwgNjksIDgyLCAxMjgsIDY4LCA3MywgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY4LCA3MywgODAsIAorICAgIDc2LCA3MywgMTI4LCA2OCwgNzMsIDgwLCA3NiwgMjAxLCA2OCwgNzMsIDc4LCA3MSwgNjYsIDY1LCAyMTIsIDY4LCA3MywgCisgICAgMjA2LCA2OCwgNzMsIDc3LCA3NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDg1LCA4NCwgNzMsIDc5LCAKKyAgICA3OCwgNDUsIDUxLCAxMjgsIDY4LCA3MywgNzcsIDczLCA3OCwgODUsIDg0LCA3MywgNzksIDc4LCA0NSwgNTAsIDEyOCwgNjgsIAorICAgIDczLCA3NywgNzMsIDc4LCA4NSwgODQsIDczLCA3OSwgNzgsIDQ1LCA0OSwgMTI4LCA2OCwgNzMsIDc3LCA3MywgNzgsIDczLCAKKyAgICA4MywgNzIsIDc3LCA2OSwgNzgsIDg0LCAxMjgsIDY4LCA3MywgNzcsIDczLCA2OCwgNzMsIDE5MywgNjgsIDczLCA3NywgNjksIAorICAgIDc4LCA4MywgNzMsIDc5LCA3OCwgNjUsIDIwNCwgNjgsIDczLCA3NywgNjksIDc4LCA4MywgNzMsIDc5LCAyMDYsIDY4LCA3MywgCisgICAgNzcsIDUwLCAxMjgsIDY4LCA3MywgNzcsIDE3OCwgNjgsIDczLCA3NiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAKKyAgICA3MiwgMTI4LCA2OCwgNzMsIDcxLCA4MiwgNjUsIDgwLCAyMDAsIDY4LCA3MywgNzEsIDgyLCA2NSwgNzcsIDc3LCA3OSwgCisgICAgMjExLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDc3LCA3NywgMTkzLCA2OCwgNzMsIDcxLCA4MiwgNjUsIDIwNSwgNjgsIDczLCAKKyAgICA3MSwgNzksIDgyLCA3MSwgNzksIDc4LCAxMjgsIDY4LCA3MywgNzEsIDc5LCA4MiwgNzEsIDc5LCAyMDYsIDY4LCA3MywgNzEsIAorICAgIDczLCA4NCwgODMsIDEyOCwgNjgsIDczLCA3MSwgNjUsIDc3LCA3NywgNjUsIDEyOCwgNjgsIDczLCA3MSwgMTkzLCA2OCwgCisgICAgNzMsIDcwLCA4NCwgNzksIDcxLCA3MSwgNzksIDIxMSwgNjgsIDczLCA3MCwgNzksIDc4LCA3MywgNjUsIDgzLCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA3MywgNjcsIDg1LCA3NiwgODQsIDIxNywgNjgsIDczLCA3MCwgNzAsIDczLCA2NywgODUsIDc2LCA4NCwgCisgICAgNzMsIDY5LCA4MywgMTI4LCA2OCwgNzMsIDcwLCA3MCwgNjksIDgyLCA2OSwgNzgsIDg0LCA3MywgNjUsIDc2LCAxMjgsIDY4LCAKKyAgICA3MywgNzAsIDcwLCA2OSwgODIsIDY5LCA3OCwgNjcsIDE5NywgNjgsIDczLCA3MCwgNjUsIDg0LCAxMjgsIDY4LCA3MywgNjksIAorICAgIDgzLCA3MywgODMsIDEyOCwgNjgsIDczLCA2OSwgODMsIDczLCAyMTEsIDY4LCA3MywgNjksIDgzLCA2OSwgMjA0LCA2OCwgCisgICAgNzMsIDY5LCA4MCwgMTI4LCA2OCwgNzMsIDE5NywgNjgsIDczLCA2NiwgMTI4LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCAKKyAgICA3OSwgMjA2LCA2OCwgNzMsIDY1LCA4NCwgNzksIDc4LCA3MywgNzUsIDIwMSwgNjgsIDczLCA2NSwgODMsIDg0LCA3OSwgNzYsIAorICAgIDIwMSwgNjgsIDczLCA2NSwgNzcsIDc5LCA3OCwgNjgsIDgzLCAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDY4LCAKKyAgICAxMjgsIDY4LCA3MywgNjUsIDc3LCA3OSwgNzgsIDE5NiwgNjgsIDczLCA2NSwgNzcsIDY5LCA4NCwgNjksIDIxMCwgNjgsIAorICAgIDczLCA2NSwgNzYsIDg5LCA4NCwgNzMsIDc1LCA2NSwgMTI4LCA2OCwgNzMsIDY1LCA3NiwgODksIDg0LCA3MywgNzUsIDE5MywgCisgICAgNjgsIDczLCA2NSwgNzYsIDY5LCA2NywgODQsIDQ1LCAyMDgsIDY4LCA3MywgNjUsIDcxLCA3OSwgNzgsIDY1LCA3NiwgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDkwLCA2OSwgMTk2LCA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgCisgICAgNzMsIDgzLCA0NSwgODIsIDczLCA3OCwgNzEsIDEyOCwgNjgsIDczLCA2NSwgNjksIDgyLCA2OSwgODMsIDczLCA4MywgMTI4LCAKKyAgICA2OCwgNzMsIDY1LCA2OSwgODIsIDY5LCA4MywgNzMsIDIxMSwgNjgsIDcyLCA3OSwgODUsIDEyOCwgNjgsIDcyLCA3OSwgNzksIAorICAgIDEyOCwgNjgsIDcyLCA3OSwgMTI4LCA2OCwgNzIsIDczLCA3MywgMTI4LCA2OCwgNzIsIDcyLCA4NSwgMTI4LCA2OCwgNzIsIAorICAgIDcyLCA3OSwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzksIDEyOCwgNjgsIDcyLCA3MiwgNzMsIDEyOCwgNjgsIDcyLCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY5LCAxMjgsIDY4LCA3MiwgNzIsIDY1LCAxMjgsIDY4LCA3MiwgNjksIDY5LCAKKyAgICAxMjgsIDY4LCA3MiwgNjUsIDgyLCA3NywgNjUsIDEyOCwgNjgsIDcyLCA2NSwgNzcsIDY5LCA2OCwgNzIsIDEyOCwgNjgsIAorICAgIDcyLCA2NSwgNzYsIDY5LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgNzYsIDY1LCA4NCwgNzIsIDEyOCwgNjgsIDcyLCA2NSwgCisgICAgNzYsIDEyOCwgNjgsIDcyLCA2NSwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgNzIsIDY1LCA2NSwgNzYsIDg1LCAxMjgsIDY4LCAKKyAgICA3MiwgNjUsIDY1LCAxMjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY5LCA5MCwgMjAwLCA2OCwgNjksIDg5LCA4NCwgNjksIAorICAgIDgyLCA3OSwgMjEzLCA2OCwgNjksIDg5LCA4NCwgNjksIDgyLCA3OSwgMjExLCA2OCwgNjksIDg4LCA3MywgNjUsIDEyOCwgCisgICAgNjgsIDY5LCA4NiwgNzMsIDY3LCAxOTcsIDY4LCA2OSwgODYsIDY5LCA3NiwgNzksIDgwLCA3NywgNjksIDc4LCA4NCwgMTI4LCAKKyAgICA2OCwgNjksIDg1LCA3OCwgNzEsIDEyOCwgNjgsIDY5LCA4MywgNzUsIDg0LCA3OSwgMjA4LCA2OCwgNjksIDgzLCAyMDMsIAorICAgIDY4LCA2OSwgODMsIDczLCA3MSwgNzgsIDEyOCwgNjgsIDY5LCA4MywgNzMsIDEyOCwgNjgsIDY5LCA4MywgNjksIDgyLCA4NCwgCisgICAgMTI4LCA2OCwgNjksIDgzLCA2OSwgODIsIDIxMiwgNjgsIDY5LCA4MywgNjksIDgyLCA2OSwgMjEyLCA2OCwgNjksIDgzLCAKKyAgICA2NywgODIsIDczLCA4MCwgODQsIDczLCA3OSwgMjA2LCA2OCwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzMsIDc4LCAxOTksIAorICAgIDY4LCA2OSwgODMsIDY3LCA2OSwgNzgsIDY4LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA4MiwgNjksIDg0LCA0NSwgNzIsIDczLCAKKyAgICA2OCwgNjksIDg0LCAxMjgsIDY4LCA2OSwgODIsIDY5LCA4NCwgMTI4LCA2OCwgNjksIDgyLCA2OSwgNzYsIDczLCA2NywgCisgICAgMjEyLCA2OCwgNjksIDgwLCA4NCwgNzIsIDEyOCwgNjgsIDY5LCA4MCwgNjUsIDgyLCA4NCwgODUsIDgyLCA2OSwgMTI4LCAKKyAgICA2OCwgNjksIDgwLCA2NSwgODIsIDg0LCA3NywgNjksIDc4LCAyMTIsIDY4LCA2OSwgODAsIDY1LCA4MiwgODQsIDczLCA3OCwgCisgICAgMTk5LCA2OCwgNjksIDc4LCA4NCwgNzMsIDgzLCA4NCwgODIsIDIxNywgNjgsIDY5LCA3OCwgODQsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNzgsIDc5LCA3NywgNzMsIDc4LCA2NSwgODQsIDc5LCA4MiwgMTI4LCA2OCwgNjksIDc4LCA3OSwgNzcsIDczLCA3OCwgCisgICAgNjUsIDg0LCA3OSwgMjEwLCA2OCwgNjksIDc4LCA3OCwgNjksIDc4LCAxMjgsIDY4LCA2OSwgNzgsIDcxLCAxMjgsIDY4LCAKKyAgICA2OSwgNzgsIDE5NywgNjgsIDY5LCA3OCwgNjUsIDgyLCA3MywgODUsIDIxMSwgNjgsIDY5LCA3NiwgODQsIDY1LCAxMjgsIAorICAgIDY4LCA2OSwgNzYsIDg0LCAxOTMsIDY4LCA2OSwgNzYsIDg0LCAxMjgsIDY4LCA2OSwgNzYsIDgwLCA3MiwgNzMsIDE5NSwgCisgICAgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDIxNywgNjgsIDY5LCA3NiwgNzMsIDg2LCA2OSwgODIsIDY1LCA3OCwgNjcsIAorICAgIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDczLCA3NywgNzMsIDg0LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA3NiwgNzMsIDc3LCA3MywgCisgICAgODQsIDY5LCAyMTAsIDY4LCA2OSwgNzYsIDczLCA2NywgNzMsIDc5LCA4NSwgMjExLCA2OCwgNjksIDc2LCA2OSwgODQsIDczLCAKKyAgICA3OSwgMjA2LCA2OCwgNjksIDc2LCA2OSwgODQsIDY5LCAxMjgsIDY4LCA2OSwgNzYsIDY5LCA4NCwgMTk3LCA2OCwgNjksIAorICAgIDc1LCA2NSwgMTI4LCA2OCwgNjksIDc1LCAxMjgsIDY4LCA2OSwgNzMsIDEyOCwgNjgsIDY5LCA3MiwgNzMsIDEyOCwgNjgsIAorICAgIDY5LCA3MSwgODIsIDY5LCA2OSwgODMsIDEyOCwgNjgsIDY5LCA3MSwgODIsIDY5LCAxOTcsIDY4LCA2OSwgNzAsIDczLCA3OCwgCisgICAgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY4LCA2OSwgNzAsIDY5LCA2NywgODQsIDczLCA4NiwgNjksIDc4LCA2OSwgODMsIAorICAgIDIxMSwgNjgsIDY5LCA2OSwgODIsIDEyOCwgNjgsIDY5LCA2OSwgODAsIDc2LCA4OSwgMTI4LCA2OCwgNjksIDY5LCA3NiwgCisgICAgMTI4LCA2OCwgNjksIDY3LCA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA2OCwgNzksIDEyOCwgNjgsIDY5LCA2NywgODIsIDY5LCAKKyAgICA2NSwgODMsIDY5LCAxMjgsIDY4LCA2OSwgNjcsIDgyLCA2OSwgNjUsIDgzLCAxOTcsIDY4LCA2OSwgNjcsIDc5LCA4MiwgNjUsIAorICAgIDg0LCA3MywgODYsIDE5NywgNjgsIDY5LCA2NywgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjgsIDY5LCA2NywgCisgICAgNzMsIDgzLCA3MywgODYsIDY5LCA3OCwgNjksIDgzLCA4MywgMTI4LCA2OCwgNjksIDY3LCA3MywgNzcsIDY1LCAyMDQsIDY4LCAKKyAgICA2OSwgNjcsIDczLCA2OCwgODUsIDc5LCA4NSwgMjExLCA2OCwgNjksIDY3LCA2OSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjgsIAorICAgIDY5LCA2NywgNjUsIDg5LCA2OSwgNjgsIDEyOCwgNjgsIDY5LCA2NiwgNzMsIDIxMiwgNjgsIDY5LCA2NSwgODQsIDcyLCAKKyAgICAxMjgsIDY4LCA2OSwgNjUsIDY4LCAxMjgsIDY4LCA2OCwgODcsIDY1LCAxMjgsIDY4LCA2OCwgODUsIDg4LCAxMjgsIDY4LCAKKyAgICA2OCwgODUsIDg0LCAxMjgsIDY4LCA2OCwgODUsIDgyLCA4OCwgMTI4LCA2OCwgNjgsIDg1LCA4MiwgMTI4LCA2OCwgNjgsIAorICAgIDg1LCA4MCwgMTI4LCA2OCwgNjgsIDg1LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA4NSwgNzksIDgwLCAxMjgsIDY4LCA2OCwgCisgICAgODUsIDc5LCAxMjgsIDY4LCA2OCwgODUsIDEyOCwgNjgsIDY4LCA3OSwgODgsIDEyOCwgNjgsIDY4LCA3OSwgODQsIDEyOCwgCisgICAgNjgsIDY4LCA3OSwgODAsIDEyOCwgNjgsIDY4LCA3OSwgNjUsIDEyOCwgNjgsIDY4LCA3MywgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA3MywgODQsIDEyOCwgNjgsIDY4LCA3MywgODAsIDEyOCwgNjgsIDY4LCA3MywgNjksIDg4LCAxMjgsIDY4LCA2OCwgNzMsIAorICAgIDY5LCA4MCwgMTI4LCA2OCwgNjgsIDczLCA2OSwgMTI4LCA2OCwgNjgsIDczLCAxMjgsIDY4LCA2OCwgNzIsIDg1LCAxMjgsIAorICAgIDY4LCA2OCwgNzIsIDc5LCAxMjgsIDY4LCA2OCwgNzIsIDY5LCA2OSwgMTI4LCA2OCwgNjgsIDcyLCA2OSwgMTI4LCA2OCwgCisgICAgNjgsIDcyLCA2NSwgNjUsIDEyOCwgNjgsIDY4LCA3MiwgNjUsIDEyOCwgNjgsIDY4LCA2OSwgODgsIDEyOCwgNjgsIDY4LCAKKyAgICA2OSwgODAsIDEyOCwgNjgsIDY4LCA2OSwgNjksIDEyOCwgNjgsIDY4LCA2OSwgMTI4LCA2OCwgNjgsIDY4LCA3MiwgNjUsIAorICAgIDEyOCwgNjgsIDY4LCA2OCwgNjUsIDEyOCwgNjgsIDY4LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY4LCA2OCwgCisgICAgNjUsIDg4LCAxMjgsIDY4LCA2OCwgNjUsIDg0LCAxMjgsIDY4LCA2OCwgNjUsIDgwLCAxMjgsIDY4LCA2OCwgNjUsIDc2LCAKKyAgICAxMjgsIDY4LCA2OCwgNjUsIDIwNCwgNjgsIDY4LCA2NSwgNzIsIDY1LCA3NiwgMTI4LCA2OCwgNjgsIDY1LCA3MiwgNjUsIAorICAgIDIwNCwgNjgsIDY4LCA2NSwgNjUsIDEyOCwgNjgsIDY3LCA4MywgMTI4LCA2OCwgNjcsIDcyLCA2OSwgMTI4LCA2OCwgNjcsIAorICAgIDUyLCAxMjgsIDY4LCA2NywgNTEsIDEyOCwgNjgsIDY3LCA1MCwgMTI4LCA2OCwgNjcsIDQ5LCAxMjgsIDY4LCAxOTQsIDY4LCAKKyAgICA2NSwgODksIDQ1LCA3OCwgNzMsIDcxLCA3MiwgODQsIDEyOCwgNjgsIDY1LCAyMTcsIDY4LCA2NSwgODcsIDY2LCAxMjgsIAorICAgIDY4LCA2NSwgODYsIDczLCA4OSwgNjUsIDc4LCA3MywgMTI4LCA2OCwgNjUsIDg2LCA3MywgNjgsIDEyOCwgNjgsIDY1LCA4NCwgCisgICAgMTk3LCA2OCwgNjUsIDgzLCA3MywgNjUsIDEyOCwgNjgsIDY1LCA4MywgNzMsIDE5MywgNjgsIDY1LCA4MywgNzIsIDY5LCAKKyAgICAxOTYsIDY4LCA2NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgODMsIDIwMCwgNjgsIDY1LCA4MywgNjksIDczLCA2NSwgMTI4LCAKKyAgICA2OCwgNjUsIDgyLCA4NCwgMTI4LCA2OCwgNjUsIDgyLCA3NSwgNjksIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY4LCA2NSwgODIsIAorICAgIDc1LCA2OSwgNzgsIDczLCA3OCwgMTk5LCA2OCwgNjUsIDgyLCAyMDMsIDY4LCA2NSwgODIsIDcxLCA2NSwgMTI4LCA2OCwgCisgICAgNjUsIDgyLCA2NSwgNTIsIDEyOCwgNjgsIDY1LCA4MiwgNjUsIDUxLCAxMjgsIDY4LCA2NSwgODIsIDEyOCwgNjgsIDY1LCAKKyAgICA4MCwgNDUsIDgwLCA4MiwgNjUsIDIwNSwgNjgsIDY1LCA4MCwgNDUsIDgwLCA3MywgMjAxLCA2OCwgNjUsIDgwLCA0NSwgNzcsIAorICAgIDg1LCA3OSwgMjE3LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDg1LCA3OSwgMjA2LCA2OCwgNjUsIDgwLCA0NSwgNjYsIDY5LCAKKyAgICAyMDEsIDY4LCA2NSwgMjA4LCA2OCwgNjUsIDc4LCA4NCwgNjUsIDc0LCAxOTMsIDY4LCA2NSwgNzgsIDcxLCA3OSwgMTI4LCAKKyAgICA2OCwgNjUsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCAxOTksIDY4LCA2NSwgNzgsIDY4LCA2NSwgMTI4LCA2OCwgNjUsIAorICAgIDc4LCA2NywgNzMsIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY4LCA2NSwgNzcsIDgwLCAKKyAgICAxMjgsIDY4LCA2NSwgNzcsIDIwOCwgNjgsIDY1LCA3NywgNzcsIDY1LCA4NCwgNjUsIDc4LCAxMjgsIDY4LCA2NSwgNzcsIAorICAgIDc3LCA2NSwgODQsIDY1LCAyMDYsIDY4LCA2NSwgNzcsIDc3LCA2NSwgMTI4LCA2OCwgNjUsIDc3LCA3NywgMTkzLCA2OCwgCisgICAgNjUsIDc3LCA2NSwgODIsIDg1LCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgNzIsIDQ1LCA4MiwgNjksIDgzLCA3MiwgMTI4LCAKKyAgICA2OCwgNjUsIDc2LCA2OSwgODQsIDcyLCAxMjgsIDY4LCA2NSwgNzYsIDY5LCA4NCwgMTI4LCA2OCwgNjUsIDc2LCA2OSwgCisgICAgMjEyLCA2OCwgNjUsIDc2LCA2OCwgNjUsIDEyOCwgNjgsIDY1LCA3NiwgNjUsIDg0LCA3MiwgMTI4LCA2OCwgNjUsIDc2LCAKKyAgICA2NSwgODQsIDIwMCwgNjgsIDY1LCA3NiwgNjUsIDg0LCAxMjgsIDY4LCA2NSwgNzMsIDgyLCAxMjgsIDY4LCA2NSwgNzMsIAorICAgIDc4LCA3MSwgMTI4LCA2OCwgNjUsIDczLCAxMjgsIDY4LCA2NSwgNzIsIDg5LCA2NSwgNjUsIDg1LCA4MywgNzIsIDQ1LCA1MCwgCisgICAgMTI4LCA2OCwgNjUsIDcyLCA4OSwgNjUsIDY1LCA4NSwgODMsIDcyLCAxMjgsIDY4LCA2NSwgNzEsIDgzLCAxMjgsIDY4LCAKKyAgICA2NSwgNzEsIDcxLCA2OSwgODIsIDEyOCwgNjgsIDY1LCA3MSwgNzEsIDY5LCAyMTAsIDY4LCA2NSwgNzEsIDY5LCA4MywgNzIsIAorICAgIDEyOCwgNjgsIDY1LCA3MSwgNjksIDgzLCAyMDAsIDY4LCA2NSwgNzEsIDY2LCA2NSwgODMsIDczLCA3OCwgNzgsIDY1LCAKKyAgICAxMjgsIDY4LCA2NSwgNzEsIDY1LCAyMTgsIDY4LCA2NSwgNzEsIDY1LCA3NiwgNzEsIDY1LCAxMjgsIDY4LCA2NSwgNzEsIAorICAgIDUxLCAxMjgsIDY4LCA2NSwgMTk5LCA2OCwgNjUsIDY5LCA3OCwgNzEsIDEyOCwgNjgsIDY1LCA2OSwgMTk5LCA2OCwgNjUsIAorICAgIDY4LCAxMjgsIDY4LCA2NSwgMTk2LCA2OCwgNjUsIDY1LCA4MywgODUsIDEyOCwgNjgsIDY1LCA2NSwgNzYsIDczLCAxMjgsIAorICAgIDY4LCA2NSwgNjUsIDY4LCA3MiwgODUsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDcyLCAxMjgsIDY4LCA0OCwgNTQsIDU1LCA3MSwgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNzAsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY5LCAxMjgsIDY4LCA0OCwgNTQsIDU1LCAKKyAgICA2OCwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgNjcsIDEyOCwgNjgsIDQ4LCA1NCwgNTUsIDY2LCAxMjgsIDY4LCA0OCwgNTQsIAorICAgIDU1LCA2NSwgMTI4LCA2OCwgNDgsIDU0LCA1NSwgMTI4LCA2OCwgNDgsIDU0LCA1NCwgMTI4LCA2OCwgNDgsIDU0LCA1MywgCisgICAgMTI4LCA2OCwgNDgsIDU0LCA1MiwgMTI4LCA2OCwgNDgsIDU0LCA1MSwgMTI4LCA2OCwgNDgsIDU0LCA1MCwgMTI4LCA2OCwgCisgICAgNDgsIDU0LCA0OSwgMTI4LCA2OCwgNDgsIDU0LCA0OCwgMTI4LCA2OCwgNDgsIDUzLCA1NywgMTI4LCA2OCwgNDgsIDUzLCAKKyAgICA1NiwgMTI4LCA2OCwgNDgsIDUzLCA1NSwgMTI4LCA2OCwgNDgsIDUzLCA1NCwgMTI4LCA2OCwgNDgsIDUzLCA1MywgMTI4LCAKKyAgICA2OCwgNDgsIDUzLCA1MiwgNjUsIDEyOCwgNjgsIDQ4LCA1MywgNTIsIDEyOCwgNjgsIDQ4LCA1MywgNTEsIDEyOCwgNjgsIAorICAgIDQ4LCA1MywgNTAsIDY1LCAxMjgsIDY4LCA0OCwgNTMsIDUwLCAxMjgsIDY4LCA0OCwgNTMsIDQ5LCAxMjgsIDY4LCA0OCwgCisgICAgNTMsIDQ4LCA3MywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNzIsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDcxLCAxMjgsIDY4LCAKKyAgICA0OCwgNTMsIDQ4LCA3MCwgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjksIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY4LCAxMjgsIAorICAgIDY4LCA0OCwgNTMsIDQ4LCA2NywgMTI4LCA2OCwgNDgsIDUzLCA0OCwgNjYsIDEyOCwgNjgsIDQ4LCA1MywgNDgsIDY1LCAKKyAgICAxMjgsIDY4LCA0OCwgNTMsIDQ4LCAxMjgsIDY4LCA0OCwgNTIsIDU3LCAxMjgsIDY4LCA0OCwgNTIsIDU2LCA2NSwgMTI4LCAKKyAgICA2OCwgNDgsIDUyLCA1NiwgMTI4LCA2OCwgNDgsIDUyLCA1NSwgMTI4LCA2OCwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjgsIAorICAgIDQ4LCA1MiwgNTQsIDEyOCwgNjgsIDQ4LCA1MiwgNTMsIDEyOCwgNjgsIDQ4LCA1MiwgNTIsIDEyOCwgNjgsIDQ4LCA1MiwgCisgICAgNTEsIDEyOCwgNjgsIDQ4LCA1MiwgNTAsIDEyOCwgNjgsIDQ4LCA1MiwgNDksIDEyOCwgNjgsIDQ4LCA1MiwgNDgsIDEyOCwgCisgICAgNjgsIDQ4LCA1MSwgNTcsIDEyOCwgNjgsIDQ4LCA1MSwgNTYsIDEyOCwgNjgsIDQ4LCA1MSwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MSwgNTQsIDEyOCwgNjgsIDQ4LCA1MSwgNTMsIDEyOCwgNjgsIDQ4LCA1MSwgNTIsIDY1LCAxMjgsIDY4LCA0OCwgNTEsIAorICAgIDUyLCAxMjgsIDY4LCA0OCwgNTEsIDUxLCAxMjgsIDY4LCA0OCwgNTEsIDUwLCAxMjgsIDY4LCA0OCwgNTEsIDQ5LCA2NSwgCisgICAgMTI4LCA2OCwgNDgsIDUxLCA0OSwgMTI4LCA2OCwgNDgsIDUxLCA0OCwgMTI4LCA2OCwgNDgsIDUwLCA1NywgMTI4LCA2OCwgCisgICAgNDgsIDUwLCA1NiwgMTI4LCA2OCwgNDgsIDUwLCA1NSwgNjUsIDEyOCwgNjgsIDQ4LCA1MCwgNTUsIDEyOCwgNjgsIDQ4LCAKKyAgICA1MCwgNTQsIDEyOCwgNjgsIDQ4LCA1MCwgNTMsIDEyOCwgNjgsIDQ4LCA1MCwgNTIsIDEyOCwgNjgsIDQ4LCA1MCwgNTEsIAorICAgIDEyOCwgNjgsIDQ4LCA1MCwgNTAsIDEyOCwgNjgsIDQ4LCA1MCwgNDksIDEyOCwgNjgsIDQ4LCA1MCwgNDgsIDEyOCwgNjgsIAorICAgIDQ4LCA0OSwgNTcsIDEyOCwgNjgsIDQ4LCA0OSwgNTYsIDEyOCwgNjgsIDQ4LCA0OSwgNTUsIDEyOCwgNjgsIDQ4LCA0OSwgCisgICAgNTQsIDEyOCwgNjgsIDQ4LCA0OSwgNTMsIDEyOCwgNjgsIDQ4LCA0OSwgNTIsIDEyOCwgNjgsIDQ4LCA0OSwgNTEsIDEyOCwgCisgICAgNjgsIDQ4LCA0OSwgNTAsIDEyOCwgNjgsIDQ4LCA0OSwgNDksIDEyOCwgNjgsIDQ4LCA0OSwgNDgsIDEyOCwgNjgsIDQ4LCAKKyAgICA0OCwgNTcsIDEyOCwgNjgsIDQ4LCA0OCwgNTYsIDY1LCAxMjgsIDY4LCA0OCwgNDgsIDU2LCAxMjgsIDY4LCA0OCwgNDgsIAorICAgIDU1LCAxMjgsIDY4LCA0OCwgNDgsIDU0LCAxMjgsIDY4LCA0OCwgNDgsIDUzLCAxMjgsIDY4LCA0OCwgNDgsIDUyLCAxMjgsIAorICAgIDY4LCA0OCwgNDgsIDUxLCAxMjgsIDY4LCA0OCwgNDgsIDUwLCAxMjgsIDY4LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA4OSwgCisgICAgODgsIDEyOCwgNjcsIDg5LCA4NCwgMTI4LCA2NywgODksIDgyLCA4OCwgMTI4LCA2NywgODksIDgyLCA2OSwgNzgsIDY1LCAKKyAgICA3MywgMTk1LCA2NywgODksIDgyLCAxMjgsIDY3LCA4OSwgODAsIDgyLCA3MywgNzksIDIxMiwgNjcsIDg5LCA4MCwgNjksIAorICAgIDgyLCA4NSwgODMsIDEyOCwgNjcsIDg5LCA4MCwgMTI4LCA2NywgODksIDc2LCA3MywgNzgsIDY4LCA4MiwgNzMsIDY3LCA3MywgCisgICAgODQsIDg5LCAxMjgsIDY3LCA4OSwgNjcsIDc2LCA3OSwgNzgsIDY5LCAxMjgsIDY3LCA4OSwgNjUsIDg5LCAxMjgsIDY3LCAKKyAgICA4OSwgNjUsIDg3LCAxMjgsIDY3LCA4OSwgNjUsIDEyOCwgNjcsIDg3LCA3OSwgNzksIDEyOCwgNjcsIDg3LCA3OSwgMTI4LCAKKyAgICA2NywgODcsIDczLCA3MywgMTI4LCA2NywgODcsIDczLCAxMjgsIDY3LCA4NywgNjksIDc5LCA4MiwgODQsIDcyLCAxMjgsIAorICAgIDY3LCA4NywgNjksIDEyOCwgNjcsIDg3LCA2NSwgNjUsIDEyOCwgNjcsIDg1LCA4OCwgMTI4LCA2NywgODUsIDg1LCAxMjgsIAorICAgIDY3LCA4NSwgMjEyLCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA4MywgMTI4LCA2NywgODUsIDgzLCA4NCwgNzksIDc3LCA2OSwgCisgICAgMjEwLCA2NywgODUsIDgzLCA4NCwgNjUsIDgyLCA2OCwgMTI4LCA2NywgODUsIDgzLCA4MCwgMTI4LCA2NywgODUsIDgyLCAKKyAgICA4OCwgMTI4LCA2NywgODUsIDgyLCA4NiwgNzMsIDc4LCAxOTksIDY3LCA4NSwgODIsIDg2LCA2OSwgNjgsIDEyOCwgNjcsIAorICAgIDg1LCA4MiwgODYsIDY5LCAxOTYsIDY3LCA4NSwgODIsIDg2LCA2OSwgMTI4LCA2NywgODUsIDgyLCA4NiwgMTk3LCA2NywgCisgICAgODUsIDgyLCA4MywgNzMsIDg2LCAxOTcsIDY3LCA4NSwgODIsIDgyLCAyMTcsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDg0LCAKKyAgICAxMjgsIDY3LCA4NSwgODIsIDgyLCA2OSwgNzgsIDIxMiwgNjcsIDg1LCA4MiwgNzYsIDIxNywgNjcsIDg1LCA4MiwgNzYsIAorICAgIDEyOCwgNjcsIDg1LCA4MiwgMTI4LCA2NywgODUsIDgwLCA4MCwgNjksIDY4LCAxMjgsIDY3LCA4NSwgODAsIDgwLCA2OSwgCisgICAgMTk2LCA2NywgODUsIDc5LCA4OCwgMTI4LCA2NywgODUsIDc5LCA4MCwgMTI4LCA2NywgODUsIDc5LCAxMjgsIDY3LCA4NSwgCisgICAgMjA1LCA2NywgODUsIDY3LCA4NSwgNzcsIDY2LCA2OSwgODIsIDEyOCwgNjcsIDg1LCA2NiwgNjksIDY4LCAxMjgsIDY3LCAKKyAgICA4NSwgNjYsIDE5NywgNjcsIDg1LCA2NSwgODQsIDgyLCA3MywgNzYsIDc2LCA3OSwgMTI4LCA2NywgODUsIDY1LCA4NCwgODIsIAorICAgIDczLCA3NiwgNzYsIDIwNywgNjcsIDg1LCA2NSwgMjA1LCA2NywgODUsIDEyOCwgNjcsIDgzLCA3MywgMTI4LCA2NywgODIsIAorICAgIDg5LCA4MywgODQsIDY1LCAyMDQsIDY3LCA4MiwgODksIDgwLCA4NCwgNzksIDcxLCA4MiwgNjUsIDc3LCA3NywgNzMsIDE5NSwgCisgICAgNjcsIDgyLCA4OSwgNzMsIDc4LCAxOTksIDY3LCA4MiwgODUsIDkwLCA2OSwgNzMsIDgyLCAyMDcsIDY3LCA4MiwgODUsIDY3LCAKKyAgICA3MywgNzAsIDc5LCA4MiwgMjA1LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MywgMTI4LCA2NywgODIsIAorICAgIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MiwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCAKKyAgICA1MSwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIDY2LCA3NiwgNjksIDQ1LCA1MCwgMTI4LCA2NywgODIsIDg1LCA2NywgNzMsIAorICAgIDY2LCA3NiwgNjksIDEyOCwgNjcsIDgyLCA3OSwgODcsIDc4LCAxMjgsIDY3LCA4MiwgNzksIDgzLCA4MywgNzMsIDc4LCA3MSwgCisgICAgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDczLCA3OCwgMTk5LCA2NywgODIsIDc5LCA4MywgODMsIDcyLCA2NSwgODQsIDY3LCAKKyAgICAyMDAsIDY3LCA4MiwgNzksIDgzLCA4MywgNjksIDY4LCA0NSwgODQsIDY1LCA3MywgNzYsIDEyOCwgNjcsIDgyLCA3OSwgODMsIAorICAgIDgzLCA2OSwgNjgsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDgzLCA2OSwgMTk2LCA2NywgODIsIDc5LCA4MywgODMsIDY2LCA3OSwgCisgICAgNzgsIDY5LCA4MywgMTI4LCA2NywgODIsIDc5LCA4MywgODMsIDEyOCwgNjcsIDgyLCA3OSwgODMsIDIxMSwgNjcsIDgyLCAKKyAgICA3OSwgODAsIDEyOCwgNjcsIDgyLCA3OSwgNzMsIDg4LCAxMjgsIDY3LCA4MiwgNzksIDczLCA4MywgODMsIDY1LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDgyLCA3OSwgNjcsIDg1LCAyMTEsIDY3LCA4MiwgNzksIDY3LCA3OSwgNjgsIDczLCA3NiwgNjksIDEyOCwgCisgICAgNjcsIDgyLCA3MywgNjcsIDc1LCA2OSwgMjEyLCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgODQsIDgzLCAxMjgsIDY3LCAKKyAgICA4MiwgNjksIDgzLCA2NywgNjksIDc4LCA4NCwgMTI4LCA2NywgODIsIDY5LCA4MywgNjcsIDY5LCA3OCwgMjEyLCA2NywgODIsIAorICAgIDY5LCA2OCwgNzMsIDIxMiwgNjcsIDgyLCA2OSwgNjUsIDg0LCA3MywgODYsIDE5NywgNjcsIDgyLCA2OSwgNjUsIDc3LCAKKyAgICAxMjgsIDY3LCA4MiwgNjUsIDg5LCA3OSwgNzgsIDEyOCwgNjcsIDgyLCA2NSwgNjcsIDc1LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDgyLCA2NSwgNjYsIDEyOCwgNjcsIDgyLCAxMjgsIDY3LCA3OSwgODgsIDEyOCwgNjcsIDc5LCA4NywgNjYsIDc5LCAyMTcsIAorICAgIDY3LCA3OSwgODcsIDEyOCwgNjcsIDc5LCAyMTUsIDY3LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzksIDg1LCA4MCwgCisgICAgNzYsIDE5NywgNjcsIDc5LCA4NSwgNzgsIDg0LCA3MywgNzgsIDE5OSwgNjcsIDc5LCA4NSwgNzgsIDg0LCA2OSwgODIsIDgzLCAKKyAgICA3MywgNzgsIDc1LCAxMjgsIDY3LCA3OSwgODUsIDc4LCA4NCwgNjksIDgyLCA2NiwgNzksIDgyLCA2OSwgMTI4LCA2NywgNzksIAorICAgIDg1LCA3OCwgNjcsIDczLCAyMDQsIDY3LCA3OSwgODUsIDY3LCAyMDAsIDY3LCA3OSwgODQsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgODIsIDY5LCA4MywgODAsIDc5LCA3OCwgNjgsIDIxMSwgNjcsIDc5LCA4MiwgODIsIDY5LCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA4MiwgODAsIDgzLCA2OSwgMTI4LCA2NywgNzksIDgyLCA4MCwgNzksIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIAorICAgIDc5LCA4MiwgNzksIDc4LCA3MywgODMsIDEyOCwgNjcsIDc5LCA4MiwgNzgsIDY5LCA4MiwgODMsIDEyOCwgNjcsIDc5LCA4MiwgCisgICAgNzgsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgyLCA3OCwgNjksIDIxMCwgNjcsIDc5LCA4MiwgNzUsIDEyOCwgNjcsIDc5LCAKKyAgICA4MCwgODksIDgyLCA3MywgNzEsIDcyLCA4NCwgMTI4LCA2NywgNzksIDgwLCA4OSwgODIsIDczLCA3MSwgNzIsIDIxMiwgNjcsIAorICAgIDc5LCA4MCwgODksIDEyOCwgNjcsIDc5LCA4MCwgODIsIDc5LCA2OCwgODUsIDY3LCA4NCwgMTI4LCA2NywgNzksIDgwLCA4MCwgCisgICAgNjksIDgyLCA0NSwgNTAsIDEyOCwgNjcsIDc5LCA4MCwgODAsIDY5LCA4MiwgMTI4LCA2NywgNzksIDgwLCAxMjgsIDY3LCAKKyAgICA3OSwgNzksIDc2LCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNzgsIDcxLCAxMjgsIDY3LCA3OSwgNzksIDc1LCA3MywgNjksIAorICAgIDEyOCwgNjcsIDc5LCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3OSwgNzksIDEyOCwgNjcsIDc5LCA3OCwgODYsIDY5LCA4MiwgCisgICAgNzEsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NiwgNjksIDc4LCA3MywgNjksIDc4LCA2NywgMTk3LCA2NywgNzksIDc4LCAKKyAgICA4NCwgODIsIDc5LCA3NiwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDc5LCAyMDQsIDY3LCA3OSwgNzgsIDg0LCA4MiwgNjUsIAorICAgIDgyLCA3MywgNjksIDg0LCA4OSwgMTI4LCA2NywgNzksIDc4LCA4NCwgODIsIDY1LCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgCisgICAgNjcsIDc5LCA3OCwgODQsIDc5LCA4NSwgODIsIDY5LCAxOTYsIDY3LCA3OSwgNzgsIDg0LCA3OSwgODUsIDIxMCwgNjcsIDc5LCAKKyAgICA3OCwgODQsIDczLCA3OCwgODUsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNzMsIDc4LCA4NSwgNjUsIDg0LCA3MywgCisgICAgNzksIDIwNiwgNjcsIDc5LCA3OCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY5LCAKKyAgICA3NywgODAsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDIxMSwgNjcsIAorICAgIDc5LCA3OCwgODQsIDY1LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA4NCwgNjUsIDczLCAyMDYsIDY3LCA3OSwgCisgICAgNzgsIDg0LCA2NSwgNjcsIDg0LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA4NCwgODIsIDg1LCA2NywgODQsIDczLCA3OSwgNzgsIAorICAgIDEyOCwgNjcsIDc5LCA3OCwgODMsIDg0LCA4MiwgODUsIDY3LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzgsIDgzLCA4NCwgCisgICAgNjUsIDc4LCA4NCwgMTI4LCA2NywgNzksIDc4LCA4MywgODQsIDY1LCA3OCwgMjEyLCA2NywgNzksIDc4LCA4MywgODQsIDY1LCAKKyAgICA3OCwgNjcsIDg5LCAxMjgsIDY3LCA3OSwgNzgsIDgzLCA2OSwgNjcsIDg1LCA4NCwgNzMsIDg2LCAxOTcsIDY3LCA3OSwgNzgsIAorICAgIDc0LCA4NSwgNzgsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NywgNzksIDc4LCA3NCwgODUsIDcxLCA2NSwgODQsIDE5NywgCisgICAgNjcsIDc5LCA3OCwgNzQsIDc5LCA3MywgNzgsIDczLCA3OCwgMTk5LCA2NywgNzksIDc4LCA3NCwgNzksIDczLCA3OCwgNjksIAorICAgIDY4LCAxMjgsIDY3LCA3OSwgNzgsIDc0LCA3OSwgNzMsIDc4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MywgNjcsIDY1LCAKKyAgICAyMDQsIDY3LCA3OSwgNzgsIDcxLCA4MiwgODUsIDY5LCA3OCwgMjEyLCA2NywgNzksIDc4LCA3MSwgODIsIDY1LCA4NCwgODUsIAorICAgIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjcsIDc5LCA3OCwgNzAsIDg1LCA4MywgNjksIDE5NiwgNjcsIDc5LCA3OCwgCisgICAgNzAsIDc5LCA4NSwgNzgsIDY4LCA2OSwgMTk2LCA2NywgNzksIDc4LCA3MCwgNzYsIDczLCA2NywgODQsIDEyOCwgNjcsIDc5LCAKKyAgICA3OCwgNzAsIDY5LCA4NCwgODQsIDIwMSwgNjcsIDc5LCA3OCwgNjcsIDY1LCA4NiwgNjksIDQ1LCA4MywgNzMsIDY4LCA2OSwgCisgICAgMTk2LCA2NywgNzksIDc4LCA2NywgNjUsIDg2LCA2OSwgNDUsIDgwLCA3OSwgNzMsIDc4LCA4NCwgNjksIDE5NiwgNjcsIDc5LCAKKyAgICA3NywgODAsIDg1LCA4NCwgNjksIDgyLCA4MywgMTI4LCA2NywgNzksIDc3LCA4MCwgODUsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAorICAgIDc5LCA3NywgODAsIDgyLCA2OSwgODMsIDgzLCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA4MiwgNjksIDgzLCAKKyAgICA4MywgNjksIDE5NiwgNjcsIDc5LCA3NywgODAsIDc5LCA4MywgNzMsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgNzcsIAorICAgIDgwLCA3OSwgODMsIDczLCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTMsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NSwgNDgsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTQsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDksIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1NCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1NCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1NCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTUsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNTAsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MywgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MywgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MywgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTYsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTEsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MiwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MiwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MiwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTcsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTIsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MSwgNDgsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTMsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDksIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA1MCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA1MCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA1MCwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTcsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTcsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTYsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTYsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTUsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTUsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTQsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTQsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTQsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTMsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTMsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTIsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTIsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTEsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTEsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNTAsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNTAsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNTAsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDksIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDksIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OSwgNDgsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OSwgNDgsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OSwgNDgsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTcsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTcsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU2LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTYsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIAorICAgIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUxLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTYsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTYsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU3LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTUsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIAorICAgIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUyLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTUsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTUsIDQ4LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTQsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIAorICAgIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUzLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTQsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ5LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTQsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTMsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIAorICAgIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDU0LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTMsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDUwLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTMsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIAorICAgIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU1LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTIsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUxLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTIsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTIsIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU2LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTEsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUyLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTEsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTEsIAorICAgIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU3LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNTAsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUzLCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIAorICAgIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDksIDU1LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDU0LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIAorICAgIDUwLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDksIDQ4LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIAorICAgIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU3LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCAKKyAgICA0OCwgNDgsIDU2LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU1LCAxMjgsIAorICAgIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDU0LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCAKKyAgICA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUzLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgCisgICAgODQsIDQ1LCA0OCwgNDgsIDUyLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIAorICAgIDUxLCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDUwLCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3OSwgNzgsIDY5LCA3OCwgODQsIDQ1LCA0OCwgNDgsIDQ5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNzMsIAorICAgIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY3LCA3OSwgNzcsIDgwLCA3NiwgNjksIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA3OSwgCisgICAgNzcsIDgwLCA3NiwgNjksIDg0LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgODAsIDc2LCA2OSwgNzcsIDY5LCA3OCwgODQsIAorICAgIDEyOCwgNjcsIDc5LCA3NywgODAsIDY1LCA4MiwgNjksIDEyOCwgNjcsIDc5LCA3NywgNzcsIDc5LCAyMDYsIDY3LCA3OSwgCisgICAgNzcsIDc3LCA2OSwgODIsIDY3LCA3MywgNjUsIDIwNCwgNjcsIDc5LCA3NywgNzcsIDY1LCA3OCwgNjgsIDEyOCwgNjcsIDc5LCAKKyAgICA3NywgNzcsIDY1LCAxMjgsIDY3LCA3OSwgNzcsIDc3LCAxOTMsIDY3LCA3OSwgNzcsIDY5LCA4NCwgMTI4LCA2NywgNzksIAorICAgIDc3LCA2NiwgNzMsIDc4LCA2OSwgNjgsIDEyOCwgNjcsIDc5LCA3NywgNjYsIDczLCA3OCwgNjUsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY3LCA3OSwgNzcsIDY2LCAxMjgsIDY3LCA3OSwgNzYsIDg1LCA3NywgNzgsIDEyOCwgNjcsIDc5LCA3NiwgNzksIAorICAgIDgyLCAxMjgsIDY3LCA3OSwgNzYsIDc2LCA3MywgODMsIDczLCA3OSwgMjA2LCA2NywgNzksIDc2LCA3NiwgMTI4LCA2NywgCisgICAgNzksIDc2LCAxOTYsIDY3LCA3OSwgNzAsIDcwLCA3MywgNzgsIDEyOCwgNjcsIDc5LCA2OSwgNzgsIDcxLCAxMjgsIDY3LCAKKyAgICA3OSwgNjksIDc4LCAxOTksIDY3LCA3OSwgNjgsIDY1LCAxMjgsIDY3LCA3OSwgNjcsIDc1LCA4NCwgNjUsIDczLCAyMDQsIAorICAgIDY3LCA3OSwgNjUsIDgzLCA4NCwgNjksIDgyLCAxMjgsIDY3LCA3OSwgNjUsIDEyOCwgNjcsIDc3LCAxMjgsIDY3LCAyMDUsIAorICAgIDY3LCA3NiwgODUsIDgzLCA4NCwgNjksIDIxMCwgNjcsIDc2LCA4NSwgNjYsIDgzLCAxMjgsIDY3LCA3NiwgODUsIDY2LCA0NSwgCisgICAgODMsIDgwLCA3OSwgNzUsIDY5LCAxOTYsIDY3LCA3NiwgODUsIDY2LCAxMjgsIDY3LCA3NiwgODUsIDE5NCwgNjcsIDc2LCAKKyAgICA3OSwgODcsIDIwNiwgNjcsIDc2LCA3OSwgODYsIDY5LCA4MiwgMTI4LCA2NywgNzYsIDc5LCA4NSwgNjgsIDEyOCwgNjcsIAorICAgIDc2LCA3OSwgODUsIDE5NiwgNjcsIDc2LCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjcsIDc2LCA3OSwgODQsIDcyLCAKKyAgICAxMjgsIDY3LCA3NiwgNzksIDgzLCA2OSwgODQsIDEyOCwgNjcsIDc2LCA3OSwgODMsIDY5LCA3OCwgNjksIDgzLCA4MywgCisgICAgMTI4LCA2NywgNzYsIDc5LCA4MywgNjksIDY4LCAxMjgsIDY3LCA3NiwgNzksIDgzLCAxOTcsIDY3LCA3NiwgNzksIDY3LCAKKyAgICA3NSwgODcsIDczLCA4MywgMTk3LCA2NywgNzYsIDc5LCA2NywgMjAzLCA2NywgNzYsIDczLCA4NiwgNzMsIDgzLCAxMjgsIAorICAgIDY3LCA3NiwgNzMsIDgwLCA2NiwgNzksIDY1LCA4MiwgNjgsIDEyOCwgNjcsIDc2LCA3MywgNzgsIDc1LCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDc2LCA3MywgNzgsIDcxLCA3MywgNzgsIDE5OSwgNjcsIDc2LCA3MywgNzcsIDY1LCA2NywgODUsIDgzLCAxMjgsIDY3LCAKKyAgICA3NiwgNzMsIDcwLCA3MCwgMTI4LCA2NywgNzYsIDczLCA2NywgNzUsIDEyOCwgNjcsIDc2LCA2OSwgNzAsIDQ1LCA1MCwgCisgICAgMTI4LCA2NywgNzYsIDY5LCA3MCwgNDUsIDQ5LCAxMjgsIDY3LCA3NiwgNjksIDcwLCAxMjgsIDY3LCA3NiwgNjksIDE5OCwgCisgICAgNjcsIDc2LCA2OSwgNjUsIDg2LCA2OSwgODIsIDEyOCwgNjcsIDc2LCA2OSwgNjUsIDIxMCwgNjcsIDc2LCA2NSwgODMsIDgzLCAKKyAgICA3MywgNjcsIDY1LCAyMDQsIDY3LCA3NiwgNjUsIDgwLCA4MCwgNzMsIDc4LCAxOTksIDY3LCA3NiwgNjUsIDgwLCA4MCwgNjksIAorICAgIDIxMCwgNjcsIDc2LCA2NSwgNzgsIDEyOCwgNjcsIDc2LCA2NSwgMjA2LCA2NywgNzYsIDY1LCA3NywgODMsIDcyLCA2OSwgCisgICAgNzYsIDIwNCwgNjcsIDc2LCA2NSwgNzMsIDc3LCAxMjgsIDY3LCA3NiwgMTI4LCA2NywgNzMsIDg4LCAxMjgsIDY3LCA3MywgCisgICAgODYsIDczLCA3NiwgNzMsIDY1LCA3OCwgMTI4LCA2NywgNzMsIDg0LCA4OSwgODMsIDY3LCA2NSwgODAsIDY5LCAxMjgsIDY3LCAKKyAgICA3MywgODQsIDg5LCA4MywgNjcsIDY1LCA4MCwgMTk3LCA2NywgNzMsIDg0LCAyMDEsIDY3LCA3MywgODQsIDY1LCA4NCwgNzMsIAorICAgIDc5LCAyMDYsIDY3LCA3MywgODQsIDEyOCwgNjcsIDczLCA4MiwgNjcsIDg1LCAyMTEsIDY3LCA3MywgODIsIDY3LCA4NSwgCisgICAgNzcsIDcwLCA3NiwgNjksIDg4LCAxMjgsIDY3LCA3MywgODIsIDY3LCA4NSwgNzcsIDcwLCA3NiwgNjksIDIxNiwgNjcsIDczLCAKKyAgICA4MiwgNjcsIDg1LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDczLCA4MiwgNjcsIDc2LCA3MywgNzgsIDcxLCAxMjgsIAorICAgIDY3LCA3MywgODIsIDY3LCA3NiwgNzMsIDc4LCAxOTksIDY3LCA3MywgODIsIDY3LCA3NiwgNjksIDgzLCAxMjgsIDY3LCA3MywgCisgICAgODIsIDY3LCA3NiwgNjksIDIxMSwgNjcsIDczLCA4MiwgNjcsIDc2LCA2OSwgNjgsIDEyOCwgNjcsIDczLCA4MCwgMTI4LCAKKyAgICA2NywgNzMsIDc4LCA3OCwgNjUsIDY2LCA2NSwgODIsIDEyOCwgNjcsIDczLCA3OCwgNjksIDc3LCA2NSwgMTI4LCA2NywgNzMsIAogICAgIDIwNiwgNjcsIDczLCAyMDUsIDY3LCA3MywgNzMsIDEyOCwgNjcsIDczLCA2OSwgODgsIDEyOCwgNjcsIDczLCA2OSwgODUsIAogICAgIDY3LCA0NSwgODMsIDgzLCA2NSwgNzgsIDcxLCA4MCwgNzMsIDY5LCA4NSwgODAsIDEyOCwgNjcsIDczLCA2OSwgODUsIDY3LCAKICAgICA0NSwgODAsIDczLCA2OSwgODUsIDgwLCAxMjgsIDY3LCA3MywgNjksIDg1LCA2NywgNDUsIDczLCA2OSwgODUsIDc4LCA3MSwgCkBAIC00NTc2LDMwMCArNTIwNSwzMDQgQEAKICAgICA4NiwgODIsIDc5LCAyMDYsIDY3LCA3MiwgNjksIDg0LCAxMjgsIDY3LCA3MiwgNjksIDgzLCA4NCwgNzgsIDg1LCA4NCwgCiAgICAgMTI4LCA2NywgNzIsIDY5LCA4MywgODQsIDEyOCwgNjcsIDcyLCA2OSwgODMsIDIxMSwgNjcsIDcyLCA2OSwgODIsIDg5LCAKICAgICAxMjgsIDY3LCA3MiwgNjksIDgyLCA4MiwgMjE3LCA2NywgNzIsIDY5LCA4MiwgODIsIDczLCA2OSwgODMsIDEyOCwgNjcsIAotICAgIDcyLCA2OSwgODEsIDg1LCA2OSwgODIsIDY5LCAxOTYsIDY3LCA3MiwgNjksIDgwLCAxMjgsIDY3LCA3MiwgNjksIDIwNiwgCi0gICAgNjcsIDcyLCA2OSwgNzMsIDc4LCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCAKLSAgICA3MiwgNjksIDczLCA3NSwgNzIsIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIAotICAgIDgyLCA3MywgNzgsIDE5OSwgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgCi0gICAgNzIsIDY5LCA2OSwgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCAKLSAgICA2NywgNzIsIDY5LCA2NywgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIAotICAgIDg4LCAxMjgsIDY3LCA3MiwgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgCi0gICAgODcsIDY1LCAxMjgsIDY3LCA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCAKLSAgICA4MiwgMjEyLCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIAotICAgIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCAKLSAgICA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIAotICAgIDcyLCA2NSwgODAsIDEyOCwgNjcsIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgCi0gICAgNjUsIDc3LCA3NSwgNzksIDEyOCwgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCAKLSAgICA3MywgNzYsIDczLCAxMjgsIDY3LCA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIAotICAgIDczLCA4MiwgMTI4LCA2NywgNzIsIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgCi0gICAgNzIsIDY1LCAxOTYsIDY3LCA3MiwgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgCi0gICAgNjksIDgyLCA2OSwgODMsIDEyOCwgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCAKLSAgICA3NSwgMTI4LCA2NywgNjksIDgyLCA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIAotICAgIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCAKLSAgICA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCAKLSAgICA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgCi0gICAgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCAKLSAgICA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAKLSAgICAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIAotICAgIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgCi0gICAgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCAKLSAgICA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIAotICAgIDE5NSwgNjcsIDY5LCA3NiwgODMsIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgCi0gICAgNzksIDc4LCAxMjgsIDY3LCA2OSwgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCAKLSAgICA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIAotICAgIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgCi0gICAgMTkzLCA2NywgNjksIDY4LCAyMDEsIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgCi0gICAgNjcsIDY5LCA2NywgNjUsIDIwMywgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCAKLSAgICA3OSwgMTI4LCA2NywgNjcsIDczLCAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCAKLSAgICA2NywgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIAotICAgIDY3LCA3MiwgNzIsIDczLCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAKLSAgICAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIAotICAgIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgCi0gICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgCi0gICAgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCAKLSAgICA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIAotICAgIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgCi0gICAgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCAKLSAgICA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCAKLSAgICA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIAotICAgIDgyLCA3MywgNjgsIDcxLCA2OSwgMTI4LCA2NywgNjUsIDgyLCA4NCwgMTI4LCA2NywgNjUsIDgyLCAyMTEsIDY3LCA2NSwgCi0gICAgODIsIDgyLCA3MywgNjUsIDcxLCAxOTcsIDY3LCA2NSwgODIsIDgwLCA2OSwgNzgsIDg0LCA4MiwgMjE3LCA2NywgNjUsIDgyLCAKLSAgICAyMDgsIDY3LCA2NSwgODIsIDc5LCA4NSwgODMsIDY5LCAyMDQsIDY3LCA2NSwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIAotICAgIDgyLCA3OSwgMjA2LCA2NywgNjUsIDgyLCA3MywgMjAzLCA2NywgNjUsIDgyLCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgCi0gICAgNjksIDg0LCAxMjgsIDY3LCA2NSwgODIsIDY5LCAyMTIsIDY3LCA2NSwgODIsIDE5NywgNjcsIDY1LCA4MiwgNjgsIDgzLCAKLSAgICAxMjgsIDY3LCA2NSwgODIsIDY4LCAxMjgsIDY3LCA2NSwgODIsIDE5NiwgNjcsIDY1LCA4MiwgMTI4LCA2NywgNjUsIDIxMCwgCi0gICAgNjcsIDY1LCA4MCwgODUsIDIxMiwgNjcsIDY1LCA4MCwgODQsIDczLCA4NiwgNjksIDEyOCwgNjcsIDY1LCA4MCwgODIsIDczLCAKLSAgICA2NywgNzksIDgyLCA3OCwgMTI4LCA2NywgNjUsIDgwLCA4MCwgNjksIDE5NiwgNjcsIDY1LCA4MCwgNzksIDEyOCwgNjcsIAotICAgIDY1LCA4MCwgNzMsIDg0LCA4NSwgNzYsIDg1LCA3NywgMTI4LCA2NywgNjUsIDgwLCA3MywgODQsIDY1LCA3NiwgMTI4LCA2NywgCi0gICAgNjUsIDc4LCA4NCwgNzMsIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgMTk5LCA2NywgNjUsIDc4LCAKLSAgICA2OCwgODksIDEyOCwgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDg1LCAxMjgsIDY3LCA2NSwgNzgsIAotICAgIDY4LCA4MiwgNjUsIDY2LCA3MywgNzgsIDY4LCAyMTMsIDY3LCA2NSwgNzgsIDY4LCA4MiwgNjUsIDEyOCwgNjcsIDY1LCA3OCwgCi0gICAgNjgsIDgyLCAxOTMsIDY3LCA2NSwgNzgsIDY4LCA3NiwgNjksIDEyOCwgNjcsIDY1LCA3OCwgNjcsIDY5LCA4MiwgMTI4LCAKLSAgICA2NywgNjUsIDc4LCA2NywgNjksIDc2LCA3NiwgNjUsIDg0LCA3MywgNzksIDIwNiwgNjcsIDY1LCA3OCwgNjcsIDY5LCA3NiwgCi0gICAgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDIwNCwgNjcsIDY1LCA3OCwgMTI4LCA2NywgNjUsIDc3LCA4MCwgNzMsIDc4LCAKLSAgICA3MSwgMTI4LCA2NywgNjUsIDc3LCA3OCwgODUsIDE5NSwgNjcsIDY1LCA3NywgNjksIDgyLCA2NSwgMTI4LCA2NywgNjUsIAotICAgIDc3LCA2OSwgODIsIDE5MywgNjcsIDY1LCA3NywgNjksIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDg5LCA2NSwgMTI4LCA2NywgCi0gICAgNjUsIDc2LCA4OSwgMTkzLCA2NywgNjUsIDc2LCA4OCwgMTI4LCA2NywgNjUsIDc2LCA3NiwgMTI4LCA2NywgNjUsIDc2LCAKLSAgICA2OSwgNzgsIDY4LCA2NSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDIxMCwgNjcsIDY1LCA3NiwgNjcsIAotICAgIDg1LCA3NiwgNjUsIDg0LCA3OSwgODIsIDEyOCwgNjcsIDY1LCA3NiwgNjcsIDEyOCwgNjcsIDY1LCA3NSwgODIsIDY1LCAKLSAgICAxMjgsIDY3LCA2NSwgNzUsIDE5NywgNjcsIDY1LCA3MywgMTI4LCA2NywgNjUsIDcyLCAxMjgsIDY3LCA2NSwgNjksIDgzLCAKLSAgICA4NSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNjgsIDg1LCA2NywgNjksIDg1LCA4MywgMTI4LCA2NywgNjUsIDY4LCAxOTMsIAotICAgIDY3LCA2NSwgNjcsIDg0LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2NiwgNzYsIDY5LCA4NywgNjUsIDg5LCAxMjgsIDY3LCA2NSwgCi0gICAgNjYsIDczLCA3OCwgNjksIDg0LCAxMjgsIDY3LCA2NSwgNjYsIDY2LCA2NSwgNzEsIDY5LCA0NSwgODQsIDgyLCA2OSwgNjksIAotICAgIDEyOCwgNjcsIDY1LCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA2NSwgNjUsIDczLCAxMjgsIDY3LCAxOTMsIDY3LCA0OCwgNTAsIAotICAgIDUyLCAxMjgsIDY3LCA0OCwgNTAsIDUxLCAxMjgsIDY3LCA0OCwgNTAsIDUwLCAxMjgsIDY3LCA0OCwgNTAsIDQ5LCAxMjgsIAotICAgIDY3LCA0OCwgNTAsIDQ4LCAxMjgsIDY3LCA0OCwgNDksIDU3LCAxMjgsIDY3LCA0OCwgNDksIDU2LCAxMjgsIDY3LCA0OCwgCi0gICAgNDksIDU1LCAxMjgsIDY3LCA0OCwgNDksIDU0LCAxMjgsIDY3LCA0OCwgNDksIDUzLCAxMjgsIDY3LCA0OCwgNDksIDUyLCAKLSAgICAxMjgsIDY3LCA0OCwgNDksIDUxLCAxMjgsIDY3LCA0OCwgNDksIDUwLCAxMjgsIDY3LCA0OCwgNDksIDQ5LCAxMjgsIDY3LCAKLSAgICA0OCwgNDksIDQ4LCA2NSwgMTI4LCA2NywgNDgsIDQ5LCA0OCwgMTI4LCA2NywgNDgsIDQ4LCA1NywgMTI4LCA2NywgNDgsIAotICAgIDQ4LCA1NiwgMTI4LCA2NywgNDgsIDQ4LCA1NSwgMTI4LCA2NywgNDgsIDQ4LCA1NCwgMTI4LCA2NywgNDgsIDQ4LCA1MywgCi0gICAgMTI4LCA2NywgNDgsIDQ4LCA1MiwgMTI4LCA2NywgNDgsIDQ4LCA1MSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjcsIDEyOCwgCi0gICAgNjcsIDQ4LCA0OCwgNTAsIDY2LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NSwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgMTI4LCAKLSAgICA2NywgNDgsIDQ4LCA0OSwgMTI4LCA2NywgNDUsIDgzLCA3MywgNzcsIDgwLCA3NiwgNzMsIDcwLCA3MywgNjksIDE5NiwgNjcsIAotICAgIDQ1LCA1MSwgNTcsIDEyOCwgNjcsIDQ1LCA0OSwgNTYsIDEyOCwgNjYsIDkwLCA4NSwgNzgsIDE5OSwgNjYsIDkwLCA3MiwgCi0gICAgMjAxLCA2NiwgODksIDg0LCAxOTcsIDY2LCA4OSwgNjksIDc2LCA3OSwgODIsIDg1LCA4MywgODMsIDczLCA2NSwgNzgsIDQ1LCAKLSAgICA4NSwgNzUsIDgyLCA2NSwgNzMsIDc4LCA3MywgNjUsIDIwNiwgNjYsIDg4LCA3MSwgMTI4LCA2NiwgODcsIDczLCAxMjgsIAotICAgIDY2LCA4NywgNjksIDY5LCAxMjgsIDY2LCA4NywgNjksIDEyOCwgNjYsIDg3LCA2NSwgMTI4LCA2NiwgODUsIDg1LCA3NywgCi0gICAgNzMsIDgzLCA3MiwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIDc4LCAxMjgsIDY2LCA4NSwgODQsIDg0LCA3OSwgMjA2LCAKLSAgICA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIAotICAgIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgCi0gICAgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAKLSAgICAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCAKLSAgICA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIAotICAgIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgCi0gICAgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCAKLSAgICA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIAotICAgIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgCi0gICAgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAKLSAgICAxOTksIDY2LCA4NSwgNzIsIDczLCAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIAotICAgIDEyOCwgNjYsIDg1LCA3MCwgNzAsIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgCi0gICAgNzYsIDY5LCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIAotICAgIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIAotICAgIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgCi0gICAgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAKLSAgICAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIAotICAgIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgCi0gICAgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCAKLSAgICA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIAotICAgIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY5LCA2NSwgNjgsIDEyOCwgCi0gICAgNjYsIDgyLCA2OCwgMTkzLCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA3MywgNzgsIDE5OSwgNjYsIDgyLCA2NSwgNzgsIDY3LCAKLSAgICA3MiwgNjksIDgzLCAxMjgsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCAyMDAsIAotICAgIDY2LCA4MiwgNjUsIDc1LCA2NywgNjksIDg0LCAxMjgsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDg0LCA2OSwgMTk2LCA2NiwgCi0gICAgODIsIDY1LCA2NywgNzUsIDY5LCAyMTIsIDY2LCA4MiwgNjUsIDY3LCA2OSwgMTI4LCA2NiwgODEsIDEyOCwgNjYsIDgwLCAKLSAgICA3MiwgMTI4LCA2NiwgNzksIDg5LCAyMTEsIDY2LCA3OSwgODksIDEyOCwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCAKLSAgICA2NiwgNzksIDg3LCA4NCwgNzMsIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIAotICAgIDEyOCwgNjYsIDc5LCA4NywgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIAotICAgIDgxLCA4NSwgNjksIDg0LCAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgCi0gICAgODIsIDIxNywgNjYsIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCAKLSAgICA4NCwgNzksIDc3LCA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIAotICAgIDY2LCA3OSwgODQsIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgCi0gICAgMTk3LCA2NiwgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAKLSAgICA0NSwgNTEsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIAotICAgIDY2LCA3OSwgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCAKLSAgICA2NiwgNzksIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIAotICAgIDc5LCA3OCwgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgCi0gICAgMTI4LCA2NiwgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAKLSAgICAxMjgsIDY2LCA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCAKLSAgICA2OSwgMTI4LCA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIAotICAgIDcwLCA3MywgODMsIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgCi0gICAgNjYsIDc2LCA3OSwgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCAKLSAgICA2NiwgNzYsIDczLCA3OCwgMjAzLCA2NiwgNzYsIDY5LCA3OCwgNjgsIDY5LCAxOTYsIDY2LCA3NiwgNjUsIDc4LCA3NSwgCi0gICAgMTI4LCA2NiwgNzYsIDY1LCA3OCwgMjAzLCA2NiwgNzYsIDY1LCA2OCwgMTk3LCA2NiwgNzYsIDY1LCA2NywgNzUsIDc2LCAKLSAgICA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCA2NywgNzUsIDcwLCA3OSwgNzksIDIxMiwgNjYsIDc2LCA2NSwgNjcsIAotICAgIDc1LCA0NSwgNzYsIDY5LCA4NCwgODQsIDY5LCAyMTAsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDcwLCA2OSwgNjUsIDg0LCAKLSAgICA3MiwgNjksIDgyLCA2OSwgMTk2LCA2NiwgNzYsIDY1LCA2NywgNzUsIDEyOCwgNjYsIDc1LCA2NSwgMTczLCA2NiwgNzMsIAotICAgIDg0LCA4NCwgNjksIDgyLCAxMjgsIDY2LCA3MywgODQsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDg0LCAxOTcsIDY2LCA3MywgCi0gICAgODMsIDc3LCA4NSwgODQsIDIwMCwgNjYsIDczLCA4MywgNzcsIDczLCA3NiwgNzYsIDY1LCAyMDAsIDY2LCA3MywgODMsIDcyLCAKLSAgICA3OSwgODAsIDEyOCwgNjYsIDczLCA4MywgNjksIDY3LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA3MywgODMsIDY1LCA3MiwgCi0gICAgMTI4LCA2NiwgNzMsIDgyLCA4NSwgMTI4LCA2NiwgNzMsIDgyLCA4NCwgNzIsIDY4LCA2NSwgMjE3LCA2NiwgNzMsIDgyLCAKLSAgICA3MSwgNjUsIDEyOCwgNjYsIDczLCA4MiwgNjgsIDEyOCwgNjYsIDczLCA3OSwgNzIsIDY1LCA5MCwgNjUsIDgyLCAxOTYsIAotICAgIDY2LCA3MywgNzgsIDc5LCA2NywgODUsIDc2LCA2NSwgMjEwLCA2NiwgNzMsIDc4LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA3MywgCi0gICAgNzgsIDY4LCA3MywgMTI4LCA2NiwgNzMsIDc4LCA2NSwgODIsIDIxNywgNjYsIDczLCA3NiwgNzYsIDczLCA3OSwgNzgsIDgzLCAKLSAgICAxMjgsIDY2LCA3MywgNzYsIDc2LCA3MywgNjUsIDgyLCA2OCwgODMsIDEyOCwgNjYsIDczLCA3NiwgNjUsIDY2LCA3MywgNjUsIAotICAgIDIwNCwgNjYsIDczLCA3NSwgNzMsIDc4LCA3MywgMTI4LCA2NiwgNzMsIDcxLCAxMjgsIDY2LCA3MywgMTk5LCA2NiwgNzMsIAotICAgIDY5LCA4NCwgMTI4LCA2NiwgNzMsIDY4LCA2OSwgNzgsIDg0LCA2NSwgMjA0LCA2NiwgNzMsIDY4LCA2NSwgNzUsIDg1LCA3OSwgCi0gICAgMjA2LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA3MywgODMsIDg0LCAxMjgsIDY2LCA3MywgNjcsIDg5LCA2NywgNzYsIDY5LCAKLSAgICA4MywgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgMTI4LCA2NiwgNzMsIDY3LCA2OSwgODAsIDgzLCAxMjgsIAotICAgIDY2LCA3MywgNjYsIDc2LCA2OSwgNDUsIDY3LCA4MiwgNjksIDE5NywgNjYsIDczLCA2NiwgMTI4LCA2NiwgMjAxLCA2NiwgCi0gICAgNzIsIDg1LCAxMjgsIDY2LCA3MiwgNzksIDc5LCAxMjgsIDY2LCA3MiwgNzksIDEyOCwgNjYsIDcyLCA3MywgMTI4LCA2NiwgCi0gICAgNzIsIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDcyLCA2OSwgNjksIDEyOCwgNjYsIDcyLCA2OSwgMTI4LCA2NiwgNzIsIDY1LCAKLSAgICA4NCwgODQsIDczLCA4MCwgODIsIDc5LCA3NiwgMjEzLCA2NiwgNzIsIDY1LCA3NywgMTI4LCA2NiwgNzIsIDY1LCA2NSwgCi0gICAgMTI4LCA2NiwgNzIsIDY1LCAxMjgsIDY2LCA2OSwgODksIDg5LCA2NSwgNzYsIDEyOCwgNjYsIDY5LCA4OCwgMTI4LCA2NiwgCi0gICAgNjksIDg2LCA2OSwgODIsIDY1LCA3MSwgNjksIDEyOCwgNjYsIDY5LCA4NCwgODcsIDY5LCA2OSwgNzgsIDEyOCwgNjYsIDY5LCAKLSAgICA4NCwgODcsIDY5LCA2OSwgMjA2LCA2NiwgNjksIDg0LCA3MiwgMTI4LCA2NiwgNjksIDg0LCA2NSwgMTI4LCA2NiwgNjksIAotICAgIDg0LCAxOTMsIDY2LCA2OSwgMjEyLCA2NiwgNjksIDgzLCA3MywgNjgsIDE5NywgNjYsIDY5LCA4MiwgNzUsIDY1LCA3OCwgCi0gICAgNjUsIDIwNiwgNjYsIDY5LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY5LCA3OSwgODIsIDE5NSwgCi0gICAgNjYsIDY5LCA3OCwgOTAsIDY5LCA3OCwgMTk3LCA2NiwgNjksIDc4LCA4NCwgMjA3LCA2NiwgNjksIDc4LCA4NCwgMTI4LCAKLSAgICA2NiwgNjksIDc4LCAyMTIsIDY2LCA2OSwgNzgsIDY4LCA2OSwgMTI4LCA2NiwgNjksIDc4LCA2OCwgMTI4LCA2NiwgNjksIAotICAgIDc4LCAxOTYsIDY2LCA2OSwgMjA2LCA2NiwgNjksIDc2LCA4NCwgMTI4LCA2NiwgNjksIDc2LCAyMTIsIDY2LCA2OSwgNzYsIAotICAgIDc5LCAyMTUsIDY2LCA2OSwgNzYsIDc2LCA3MiwgNzksIDIwOCwgNjYsIDY5LCA3NiwgNzYsIDEyOCwgNjYsIDY5LCA3NiwgCi0gICAgMjA0LCA2NiwgNjksIDc2LCA3MSwgODQsIDcyLCA3OSwgMjEwLCA2NiwgNjksIDczLCA4NCwgNzIsIDEyOCwgNjYsIDY5LCAKLSAgICA3MiwgNzMsIDc4LCAxOTYsIDY2LCA2OSwgNzIsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDcyLCA2OSwgMjAwLCA2NiwgNjksIAotICAgIDcyLCAxMjgsIDY2LCA2OSwgMjAwLCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA2OSwgCi0gICAgNzEsIDczLCA3OCwgNzgsIDY5LCA4MiwgMTI4LCA2NiwgNjksIDcxLCA3MywgMjA2LCA2NiwgNjksIDcwLCA3OSwgODIsIAotICAgIDE5NywgNjYsIDY5LCA2OSwgODQsIDc2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA2OSwgCi0gICAgMjEwLCA2NiwgNjksIDY5LCA3MiwgNzMsIDg2LCA2OSwgMTI4LCA2NiwgNjksIDY5LCA3MiwgMTI4LCA2NiwgNjksIDY5LCAKLSAgICAyMDAsIDY2LCA2OSwgNjcsIDY1LCA4NSwgODMsIDY5LCAxMjgsIDY2LCA2OSwgNjUsIDg2LCA2OSwgMjEwLCA2NiwgNjksIAotICAgIDY1LCA4NCwgNzMsIDc4LCAxOTksIDY2LCA2OSwgNjUsIDg0LCAxMjgsIDY2LCA2OSwgNjUsIDIxMCwgNjYsIDY5LCA2NSwgCi0gICAgNzgsIDEyOCwgNjYsIDY5LCA2NSwgNzcsIDY5LCAxOTYsIDY2LCA2OSwgNjUsIDY4LCA4MywgMTI4LCA2NiwgNjksIDY1LCAKLSAgICA2NywgMjAwLCA2NiwgNjcsIDY1LCA2OCwgMTI4LCA2NiwgNjcsIDY1LCAxOTYsIDY2LCA2NiwgODksIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgODksIDg0LCAxMjgsIDY2LCA2NiwgODksIDgwLCAxMjgsIDY2LCA2NiwgODksIDEyOCwgNjYsIDY2LCA4NSwgODgsIAotICAgIDEyOCwgNjYsIDY2LCA4NSwgODQsIDEyOCwgNjYsIDY2LCA4NSwgODIsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDgyLCAxMjgsIAotICAgIDY2LCA2NiwgODUsIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA3OSwgODAsIDEyOCwgCi0gICAgNjYsIDY2LCA4NSwgNzksIDEyOCwgNjYsIDY2LCA4NSwgMTI4LCA2NiwgNjYsIDc5LCA4OCwgMTI4LCA2NiwgNjYsIDc5LCAKLSAgICA4NCwgMTI4LCA2NiwgNjYsIDc5LCA4MCwgMTI4LCA2NiwgNjYsIDc5LCAxMjgsIDY2LCA2NiwgNzMsIDg4LCAxMjgsIDY2LCAKLSAgICA2NiwgNzMsIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4OCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIAotICAgIDY2LCA3MywgNjksIDgwLCAxMjgsIDY2LCA2NiwgNzMsIDY5LCAxMjgsIDY2LCA2NiwgNzMsIDEyOCwgNjYsIDY2LCA2OSwgCi0gICAgODgsIDEyOCwgNjYsIDY2LCA2OSwgODAsIDEyOCwgNjYsIDY2LCA2OSwgNjksIDEyOCwgNjYsIDY2LCA2OSwgMTI4LCA2NiwgCi0gICAgNjYsIDY1LCA4OCwgMTI4LCA2NiwgNjYsIDY1LCA4NCwgMTI4LCA2NiwgNjYsIDY1LCA4MCwgMTI4LCA2NiwgNjYsIDY1LCAKLSAgICA2NSwgMTI4LCA2NiwgNjYsIDY1LCAxMjgsIDY2LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgODUsIAotICAgIDEyOCwgNjYsIDY1LCA4NCwgODQsIDY5LCA4MiwgODksIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDg0LCA4NSwgNjYsIDEyOCwgCi0gICAgNjYsIDY1LCA4NCwgNzIsIDY1LCA3NywgNjUsIDgzLCA2NSwgODQsIDEyOCwgNjYsIDY1LCA4NCwgNzIsIDEyOCwgNjYsIDY1LCAKLSAgICA4NCwgMjAwLCA2NiwgNjUsIDg0LCA2NSwgMjAzLCA2NiwgNjUsIDgzLCA4MywgNjUsIDEyOCwgNjYsIDY1LCA4MywgODMsIAotICAgIDE5MywgNjYsIDY1LCA4MywgNzUsIDY5LCA4NCwgNjYsIDY1LCA3NiwgMjA0LCA2NiwgNjUsIDgzLCA3MiwgNzUsIDczLCAKLSAgICAyMTAsIDY2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgODMsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY2LCA2NSwgODMsIAotICAgIDY5LCA2NiwgNjUsIDc2LCA3NiwgMTI4LCA2NiwgNjUsIDgzLCA2OSwgMTI4LCA2NiwgNjUsIDgzLCAxOTcsIDY2LCA2NSwgCi0gICAgODIsIDgzLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA3MywgNjksIDgyLCAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNzUsIDcyLCAKLSAgICAxMjgsIDY2LCA2NSwgODIsIDgyLCA2OSwgNjksIDEyOCwgNjYsIDY1LCA4MiwgODIsIDY5LCAxOTcsIDY2LCA2NSwgODIsIAotICAgIDc2LCA3MywgNzgsIDY5LCAxMjgsIDY2LCA2NSwgODIsIDc2LCA2OSwgODksIDEyOCwgNjYsIDY1LCA4MiwgNzMsIDg5LCA3OSwgCi0gICAgNzksIDgzLCA2NSwgNzgsIDEyOCwgNjYsIDY1LCA4MiwgNjYsIDY5LCAyMTAsIDY2LCA2NSwgODIsIDY1LCA1MCwgMTI4LCAKLSAgICA2NiwgNjUsIDIxMCwgNjYsIDY1LCA3OCwgODQsIDc5LCA2NywgMTI4LCA2NiwgNjUsIDc4LCA3NSwgNzgsIDc5LCA4NCwgCi0gICAgMTk3LCA2NiwgNjUsIDc4LCA3NSwgMTI4LCA2NiwgNjUsIDc4LCAyMDMsIDY2LCA2NSwgNzgsIDY4LCAxMjgsIDY2LCA2NSwgCi0gICAgNzgsIDY1LCA3OCwgNjUsIDEyOCwgNjYsIDY1LCA3OCwgNTAsIDEyOCwgNjYsIDY1LCA3OCwgMTc4LCA2NiwgNjUsIDc3LCAKLSAgICA2NiwgNzksIDc5LCA4MywgMTI4LCA2NiwgNjUsIDc3LCA2NiwgNzksIDc5LCAxMjgsIDY2LCA2NSwgNzYsIDg1LCA2OCwgNjUsIAotICAgIDEyOCwgNjYsIDY1LCA3NiwgNzYsIDgwLCA3OSwgNzMsIDc4LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgODQsIDEyOCwgCi0gICAgNjYsIDY1LCA3NiwgNzYsIDc5LCAyMTIsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCA0NSwgODMsIDgwLCA3OSwgNzUsIAotICAgIDY5LCAxOTYsIDY2LCA2NSwgNzYsIDc2LCA3OSwgNzksIDc4LCAxMjgsIDY2LCA2NSwgNzYsIDY1LCA3MSwgMTI4LCA2NiwgCi0gICAgNjUsIDc2LCAxMjgsIDY2LCA2NSwgMjA0LCA2NiwgNjUsIDczLCA4MiwgNzUsIDY1LCA3OCwgMTI4LCA2NiwgNjUsIDczLCAKLSAgICA3NywgNjUsIDczLCAxMjgsIDY2LCA2NSwgNzIsIDg0LCAxMjgsIDY2LCA2NSwgNzIsIDczLCA4MiwgNzEsIDc5LCA3NywgODUsIAotICAgIDc1LCA3MiwgNjUsIDEyOCwgNjYsIDY1LCA3MiwgNjUsIDgyLCA1MCwgMTI4LCA2NiwgNjUsIDcyLCA2NSwgODIsIDE3OCwgCi0gICAgNjYsIDY1LCA3MiwgMTI4LCA2NiwgNjUsIDcxLCA4MywgMTI4LCA2NiwgNjUsIDcxLCA3MSwgNjUsIDcxLCAxOTcsIDY2LCAKLSAgICA2NSwgNzEsIDY1LCAxMjgsIDY2LCA2NSwgNzEsIDUxLCAxMjgsIDY2LCA2NSwgMTk5LCA2NiwgNjUsIDY4LCA3NywgNzMsIAotICAgIDc4LCA4NCwgNzksIDIwNiwgNjYsIDY1LCA2OCwgNzEsIDY5LCA4MiwgMTI4LCA2NiwgNjUsIDY4LCA3MSwgNjksIDEyOCwgCi0gICAgNjYsIDY1LCA2OCwgMTI4LCA2NiwgNjUsIDE5NiwgNjYsIDY1LCA2NywgODQsIDgyLCA3MywgNjUsIDIwNiwgNjYsIDY1LCAKLSAgICA2NywgNzUsIDg3LCA2NSwgODIsIDY4LCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgODAsIDY1LCA2NywgNjksIDEyOCwgNjYsIAotICAgIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDIwMCwgCi0gICAgNjYsIDY1LCA2NywgNzUsIDgzLCA3NiwgNjUsIDc4LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDcyLCA2NSwgNzgsIAotICAgIDE5NiwgNjYsIDY1LCA2NywgNzUsIDQ1LCA4NCwgNzMsIDc2LCA4NCwgNjksIDE5NiwgNjYsIDY1LCA2NywgNzUsIDEyOCwgCi0gICAgNjYsIDY1LCA2NywgMjAzLCA2NiwgNjUsIDY2LCA4OSwgMTI4LCA2NiwgNjUsIDY2LCAyMTcsIDY2LCA2NSwgNjUsIDgyLCAKLSAgICA2OSwgODIsIDg1LCAxMjgsIDY2LCA2NSwgNDUsIDUwLCAxMjgsIDY2LCA1MSwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIAotICAgIDU3LCAxMjgsIDY2LCA1MCwgNTMsIDU2LCAxMjgsIDY2LCA1MCwgNTMsIDU1LCAxMjgsIDY2LCA1MCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA1MCwgNTMsIDUzLCAxMjgsIDY2LCA1MCwgNTMsIDE4MCwgNjYsIDUwLCA1MywgNTEsIDEyOCwgNjYsIDUwLCA1MywgCi0gICAgNTAsIDEyOCwgNjYsIDUwLCA1MywgNDksIDEyOCwgNjYsIDUwLCA1MywgNDgsIDEyOCwgNjYsIDUwLCA1MiwgNTcsIDEyOCwgCi0gICAgNjYsIDUwLCA1MiwgNTYsIDEyOCwgNjYsIDUwLCA1MiwgMTgzLCA2NiwgNTAsIDUyLCA1NCwgMTI4LCA2NiwgNTAsIDUyLCAKLSAgICA1MywgMTI4LCA2NiwgNTAsIDUyLCAxNzksIDY2LCA1MCwgNTIsIDE3OCwgNjYsIDUwLCA1MiwgMTc3LCA2NiwgNTAsIDUyLCAKLSAgICAxNzYsIDY2LCA1MCwgNTEsIDU0LCAxMjgsIDY2LCA1MCwgNTEsIDUyLCAxMjgsIDY2LCA1MCwgNTEsIDE3OSwgNjYsIDUwLCAKLSAgICA1MSwgNTAsIDEyOCwgNjYsIDUwLCA1MSwgMTc3LCA2NiwgNTAsIDUxLCAxNzYsIDY2LCA1MCwgNTAsIDU3LCAxMjgsIDY2LCAKLSAgICA1MCwgNTAsIDU2LCAxMjgsIDY2LCA1MCwgNTAsIDU1LCAxMjgsIDY2LCA1MCwgNTAsIDU0LCAxMjgsIDY2LCA1MCwgNTAsIAotICAgIDE4MSwgNjYsIDUwLCA1MCwgNTAsIDEyOCwgNjYsIDUwLCA1MCwgNDksIDEyOCwgNjYsIDUwLCA1MCwgMTc2LCA2NiwgNTAsIAotICAgIDQ5LCA1NywgMTI4LCA2NiwgNTAsIDQ5LCA1NiwgMTI4LCA2NiwgNTAsIDQ5LCA1NSwgMTI4LCA2NiwgNTAsIDQ5LCA1NCwgCi0gICAgMTI4LCA2NiwgNTAsIDQ5LCA1MywgMTI4LCA2NiwgNTAsIDQ5LCA1MiwgMTI4LCA2NiwgNTAsIDQ5LCA1MSwgMTI4LCA2NiwgCi0gICAgNTAsIDQ5LCA1MCwgMTI4LCA2NiwgNTAsIDQ5LCA0OSwgMTI4LCA2NiwgNTAsIDQ5LCA0OCwgMTI4LCA2NiwgNTAsIDQ4LCAKLSAgICA1NywgMTI4LCA2NiwgNTAsIDQ4LCA1NiwgMTI4LCA2NiwgNTAsIDQ4LCA1NSwgMTI4LCA2NiwgNTAsIDQ4LCA1NCwgMTI4LCAKLSAgICA2NiwgNTAsIDQ4LCA1MywgMTI4LCA2NiwgNTAsIDQ4LCA1MiwgMTI4LCA2NiwgNTAsIDQ4LCA1MSwgMTI4LCA2NiwgNTAsIAotICAgIDQ4LCA1MCwgMTI4LCA2NiwgNTAsIDQ4LCA0OSwgMTI4LCA2NiwgNTAsIDQ4LCA0OCwgMTI4LCA2NiwgNDksIDU3LCAxNzcsIAotICAgIDY2LCA0OSwgNTcsIDQ4LCAxMjgsIDY2LCA0OSwgNTYsIDU3LCAxMjgsIDY2LCA0OSwgNTYsIDUzLCAxMjgsIDY2LCA0OSwgCi0gICAgNTYsIDUyLCAxMjgsIDY2LCA0OSwgNTYsIDUxLCAxMjgsIDY2LCA0OSwgNTYsIDUwLCAxMjgsIDY2LCA0OSwgNTYsIDQ5LCAKLSAgICAxMjgsIDY2LCA0OSwgNTYsIDQ4LCAxMjgsIDY2LCA0OSwgNTUsIDU3LCAxMjgsIDY2LCA0OSwgNTUsIDU2LCAxMjgsIDY2LCAKLSAgICA0OSwgNTUsIDU1LCAxMjgsIDY2LCA0OSwgNTUsIDE4MiwgNjYsIDQ5LCA1NSwgNTIsIDEyOCwgNjYsIDQ5LCA1NSwgMTc5LCAKLSAgICA2NiwgNDksIDU1LCA1MCwgMTI4LCA2NiwgNDksIDU1LCA0OSwgMTI4LCA2NiwgNDksIDU1LCA0OCwgMTI4LCA2NiwgNDksIAotICAgIDU0LCA1NywgMTI4LCA2NiwgNDksIDU0LCA1NiwgMTI4LCA2NiwgNDksIDU0LCA1NSwgMTI4LCA2NiwgNDksIDU0LCA1NCwgCi0gICAgMTI4LCA2NiwgNDksIDU0LCA1MywgMTI4LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NiwgNDksIDU0LCAxNzksIDY2LCA0OSwgCi0gICAgNTQsIDE3OCwgNjYsIDQ5LCA1NCwgNDksIDEyOCwgNjYsIDQ5LCA1NCwgNDgsIDEyOCwgNjYsIDQ5LCA1MywgMTg1LCA2NiwgCi0gICAgNDksIDUzLCA1NiwgMTI4LCA2NiwgNDksIDUzLCA1NSwgMTI4LCA2NiwgNDksIDUzLCAxODIsIDY2LCA0OSwgNTMsIDUzLCAKLSAgICAxMjgsIDY2LCA0OSwgNTMsIDUyLCAxMjgsIDY2LCA0OSwgNTMsIDUxLCAxMjgsIDY2LCA0OSwgNTMsIDUwLCAxMjgsIDY2LCAKLSAgICA0OSwgNTMsIDE3NywgNjYsIDQ5LCA1MywgNDgsIDEyOCwgNjYsIDQ5LCA1MiwgNTQsIDEyOCwgNjYsIDQ5LCA1MiwgMTgxLCAKLSAgICA2NiwgNDksIDUyLCA1MCwgMTI4LCA2NiwgNDksIDUyLCAxNzcsIDY2LCA0OSwgNTIsIDE3NiwgNjYsIDQ5LCA1MSwgMTgxLCAKLSAgICA2NiwgNDksIDUxLCAxNzksIDY2LCA0OSwgNTEsIDUwLCAxMjgsIDY2LCA0OSwgNTEsIDE3NywgNjYsIDQ5LCA1MSwgMTc2LCAKLSAgICA2NiwgNDksIDUwLCAxODQsIDY2LCA0OSwgNTAsIDE4MywgNjYsIDQ5LCA1MCwgMTgxLCA2NiwgNDksIDUwLCAxNzksIDY2LCAKLSAgICA0OSwgNTAsIDE3OCwgNjYsIDQ5LCA1MCwgMTc3LCA2NiwgNDksIDUwLCAxNzYsIDY2LCA0OSwgNDgsIDU3LCAyMDUsIDY2LCAKLSAgICA0OSwgNDgsIDU3LCAxOTgsIDY2LCA0OSwgNDgsIDU2LCAyMDUsIDY2LCA0OSwgNDgsIDU2LCAxOTgsIDY2LCA0OSwgNDgsIAotICAgIDU1LCAyMDUsIDY2LCA0OSwgNDgsIDU1LCAxOTgsIDY2LCA0OSwgNDgsIDU0LCAyMDUsIDY2LCA0OSwgNDgsIDU0LCAxOTgsIAotICAgIDY2LCA0OSwgNDgsIDUzLCAyMDUsIDY2LCA0OSwgNDgsIDUzLCAxOTgsIDY2LCA0OSwgNDgsIDE4MSwgNjYsIDQ5LCA0OCwgCi0gICAgMTgwLCA2NiwgNDksIDQ4LCAxNzgsIDY2LCA0OSwgNDgsIDE3NiwgNjYsIDQ4LCA1NywgMTc3LCA2NiwgNDgsIDU3LCAxNzYsIAotICAgIDY2LCA0OCwgNTYsIDU3LCAxMjgsIDY2LCA0OCwgNTYsIDE4MywgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjYsIDQ4LCA1NiwgCi0gICAgMTgxLCA2NiwgNDgsIDU2LCA1MSwgMTI4LCA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NiwgNDgsIDU2LCAxNzcsIDY2LCA0OCwgCi0gICAgNTYsIDE3NiwgNjYsIDQ4LCA1NSwgNTcsIDEyOCwgNjYsIDQ4LCA1NSwgMTg0LCA2NiwgNDgsIDU1LCAxODMsIDY2LCA0OCwgCi0gICAgNTUsIDE4MiwgNjYsIDQ4LCA1NSwgMTgxLCA2NiwgNDgsIDU1LCAxODAsIDY2LCA0OCwgNTUsIDE3OSwgNjYsIDQ4LCA1NSwgCi0gICAgMTc4LCA2NiwgNDgsIDU1LCAxNzcsIDY2LCA0OCwgNTUsIDE3NiwgNjYsIDQ4LCA1NCwgMTg1LCA2NiwgNDgsIDU0LCAxODQsIAotICAgIDY2LCA0OCwgNTQsIDE4MywgNjYsIDQ4LCA1NCwgMTgyLCA2NiwgNDgsIDU0LCAxODEsIDY2LCA0OCwgNTQsIDUyLCAxMjgsIAotICAgIDY2LCA0OCwgNTQsIDUxLCAxMjgsIDY2LCA0OCwgNTQsIDE3OCwgNjYsIDQ4LCA1NCwgMTc3LCA2NiwgNDgsIDU0LCAxNzYsIAotICAgIDY2LCA0OCwgNTMsIDE4NSwgNjYsIDQ4LCA1MywgMTg0LCA2NiwgNDgsIDUzLCAxODMsIDY2LCA0OCwgNTMsIDU0LCAxMjgsIAotICAgIDY2LCA0OCwgNTMsIDE4MSwgNjYsIDQ4LCA1MywgMTgwLCA2NiwgNDgsIDUzLCAxNzksIDY2LCA0OCwgNTMsIDE3OCwgNjYsIAotICAgIDQ4LCA1MywgMTc3LCA2NiwgNDgsIDUzLCAxNzYsIDY2LCA0OCwgNTIsIDU3LCAxMjgsIDY2LCA0OCwgNTIsIDE4NCwgNjYsIAotICAgIDQ4LCA1MiwgNTUsIDEyOCwgNjYsIDQ4LCA1MiwgMTgyLCA2NiwgNDgsIDUyLCAxODEsIDY2LCA0OCwgNTIsIDE4MCwgNjYsIAotICAgIDQ4LCA1MiwgMTc5LCA2NiwgNDgsIDUyLCAxNzgsIDY2LCA0OCwgNTIsIDE3NywgNjYsIDQ4LCA1MiwgMTc2LCA2NiwgNDgsIAotICAgIDUxLCAxODUsIDY2LCA0OCwgNTEsIDE4NCwgNjYsIDQ4LCA1MSwgMTgzLCA2NiwgNDgsIDUxLCAxODIsIDY2LCA0OCwgNTEsIAotICAgIDUyLCAxMjgsIDY2LCA0OCwgNTEsIDE3OSwgNjYsIDQ4LCA1MSwgMTc4LCA2NiwgNDgsIDUxLCAxNzcsIDY2LCA0OCwgNTEsIAotICAgIDE3NiwgNjYsIDQ4LCA1MCwgMTg1LCA2NiwgNDgsIDUwLCAxODQsIDY2LCA0OCwgNTAsIDE4MywgNjYsIDQ4LCA1MCwgMTgyLCAKLSAgICA2NiwgNDgsIDUwLCAxODEsIDY2LCA0OCwgNTAsIDE4MCwgNjYsIDQ4LCA1MCwgMTc5LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCAKLSAgICA2NiwgNDgsIDUwLCAxNzcsIDY2LCA0OCwgNTAsIDE3NiwgNjYsIDQ4LCA0OSwgNTcsIDEyOCwgNjYsIDQ4LCA0OSwgNTYsIAotICAgIDEyOCwgNjYsIDQ4LCA0OSwgMTgzLCA2NiwgNDgsIDQ5LCAxODIsIDY2LCA0OCwgNDksIDE4MSwgNjYsIDQ4LCA0OSwgMTgwLCAKLSAgICA2NiwgNDgsIDQ5LCAxNzksIDY2LCA0OCwgNDksIDE3OCwgNjYsIDQ4LCA0OSwgMTc3LCA2NiwgNDgsIDQ5LCAxNzYsIDY2LCAKLSAgICA0OCwgNDgsIDU3LCAxMjgsIDY2LCA0OCwgNDgsIDE4NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjYsIDQ4LCA0OCwgMTg0LCAKLSAgICA2NiwgNDgsIDQ4LCA1NSwgMTI4LCA2NiwgNDgsIDQ4LCAxODMsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY2LCA0OCwgNDgsIAotICAgIDE4MiwgNjYsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY2LCA0OCwgNDgsIDUzLCAxMjgsIDY2LCA0OCwgNDgsIDE4MSwgNjYsIAotICAgIDQ4LCA0OCwgNTIsIDEyOCwgNjYsIDQ4LCA0OCwgMTgwLCA2NiwgNDgsIDQ4LCA1MSwgMTI4LCA2NiwgNDgsIDQ4LCAxNzksIAotICAgIDY2LCA0OCwgNDgsIDUwLCAxMjgsIDY2LCA0OCwgNDgsIDE3OCwgNjYsIDQ4LCA0OCwgNDksIDEyOCwgNjYsIDQ4LCA0OCwgCi0gICAgMTc3LCA2NSwgOTAsIDg1LCAxMjgsIDY1LCA4OSwgNjYsIDEyOCwgNjUsIDg5LCA2NSwgNzIsIDEyOCwgNjUsIDg4LCA2OSwgCi0gICAgMTI4LCA2NSwgODcsIDY5LCAxMjgsIDY1LCA4NywgNjUsIDIxNywgNjUsIDg2LCA2OSwgODMsIDg0LCA2NSwgMjA2LCA2NSwgCi0gICAgODYsIDY5LCA4MiwgNjUsIDcxLCAxOTcsIDY1LCA4NiwgNjUsIDc1LCA4MiwgNjUsIDcyLCA2NSwgODMsIDY1LCA3OCwgODksIAotICAgIDY1LCAxMjgsIDY1LCA4NiwgNjUsIDcxLCA4MiwgNjUsIDcyLCA2NSwgMTI4LCA2NSwgODUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgCi0gICAgMTI4LCA2NSwgODUsIDg0LCA4NSwgNzcsIDc4LCAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNzksIDY2LCA3MywgNzYsIDY5LCAKLSAgICAxMjgsIDY1LCA4NSwgODQsIDc5LCA3NywgNjUsIDg0LCA2OSwgMTk2LCA2NSwgODUsIDgzLCA4NCwgODIsIDY1LCAyMDQsIAotICAgIDY1LCA4NSwgODIsIDczLCA4MCwgNzMsIDcxLCA3NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKLSAgICA5MCwgNjgsIDY1LCA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA0NSwgCi0gICAgNTAsIDEyOCwgNjUsIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDEyOCwgNjUsIDg1LCA3OCwgNzgsIAotICAgIDEyOCwgNjUsIDg1LCA3MSwgODUsIDgzLCA4NCwgMTI4LCA2NSwgODUsIDcxLCA3NywgNjksIDc4LCA4NCwgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDg1LCA2OSwgMTI4LCA2NSwgODUsIDY2LCA2OSwgODIsIDcxLCA3MywgNzgsIDY5LCAxMjgsIDY1LCAKLSAgICA4NCwgODQsIDczLCAxOTUsIDY1LCA4NCwgODQsIDcyLCA2NSwgNjcsIDY1LCA3OCwgMTI4LCA2NSwgODQsIDg0LCA2OSwgNzgsIAotICAgIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY1LCAyMDMsIDY1LCA4NCwgODQsIDY1LCA2NywgNzIsIDY5LCAKLSAgICAxOTYsIDY1LCA4NCwgNzksIDIwNSwgNjUsIDg0LCA3OCwgNjUsIDIwMCwgNjUsIDg0LCA3NywgNjUsIDY1LCA4NSwgMTI4LCAKLSAgICA2NSwgODQsIDczLCA4OSwgNjUsIDEyOCwgNjUsIDg0LCA3MiwgNzYsIDY5LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA3MiwgNjUsIAotICAgIDgyLCA4NiwgNjUsIDg2LCA2OSwgNjgsIDczLCAxOTUsIDY1LCA4NCwgNzIsIDY1LCA4MCwgNjUsIDgzLCA2NywgNjUsIDIwNiwgCi0gICAgNjUsIDgzLCA5MCwgMTI4LCA2NSwgODMsIDg5LCA4NSwgODIsIDE5MywgNjUsIDgzLCA4OSwgNzcsIDgwLCA4NCwgNzksIDg0LCAKLSAgICA3MywgNjcsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDgzLCA4NCwgODIsIDc5LCA3OCwgNzksIDc3LCA3MywgNjcsIDY1LCAyMDQsIAotICAgIDY1LCA4MywgODQsIDgyLCA3OSwgNzYsIDc5LCA3MSwgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA3OSwgNzgsIDczLCAKLSAgICA4MywgNzIsIDY5LCAxOTYsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NywgMTI4LCA2NSwgODMsIDg0LCA2OSwgODIsIAotICAgIDczLCA4MywgNzUsIDIxMSwgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAxMjgsIDY1LCA4MywgODQsIDY5LCA4MiwgCi0gICAgNzMsIDgzLCAyMDMsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA2NywgODUsIDgzLCAxMjgsIDY1LCA4MywgODMsIDg5LCAKLSAgICA4MiwgNzMsIDY1LCAyMDYsIDY1LCA4MywgODMsIDY5LCA4MiwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIAotICAgIDgyLCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgzLCA4MCwgNzMsIDgyLCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MywgCi0gICAgODAsIDY5LCA4MiwgMTI4LCA2NSwgODMsIDczLCA2NSwgNDUsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDc2LCA3MywgNjUsIAotICAgIDEyOCwgNjUsIDgzLCA3MiwgNzEsIDY1LCA2NiwgMTI4LCA2NSwgODMsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgzLCA3MiwgCi0gICAgNTcsIDEyOCwgNjUsIDgzLCA3MiwgNTEsIDEyOCwgNjUsIDgzLCA3MiwgMTc4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDg0LCAKLSAgICAxMjgsIDY1LCA4MywgNjcsIDY5LCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NSwgODMsIDY1LCA3NiwgNTAsIDEyOCwgNjUsIAotICAgIDgyLCA4NSwgNzIsIDg1LCA2NSwgMTI4LCA2NSwgODIsIDg0LCA3MywgODMsIDIxMiwgNjUsIDgyLCA4NCwgNzMsIDY3LCA4NSwgCisgICAgNzIsIDY5LCA4MSwgODUsIDY5LCA4MiwgNjksIDE5NiwgNjcsIDcyLCA2OSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc4LCAKKyAgICA2NSwgODAsIDEyOCwgNjcsIDcyLCA2OSwgNzMsIDc1LCA3MiwgNjksIDczLCAxMjgsIDY3LCA3MiwgNjksIDczLCA3NSwgNzIsIAorICAgIDY1LCA3OCwgMTI4LCA2NywgNzIsIDY5LCA2OSwgODMsIDE5NywgNjcsIDcyLCA2OSwgNjksIDgyLCA3MywgNzgsIDE5OSwgCisgICAgNjcsIDcyLCA2OSwgNjksIDc3LCAxMjgsIDY3LCA3MiwgNjksIDY5LCA3NSwgMjExLCA2NywgNzIsIDY5LCA2OSwgNzUsIAorICAgIDEyOCwgNjcsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDc1LCA2OSwgMjEwLCA2NywgNzIsIDY5LCA2NywgCisgICAgNzUsIDEyOCwgNjcsIDcyLCA2OSwgNjcsIDIwMywgNjcsIDcyLCAxOTcsIDY3LCA3MiwgNjUsIDg4LCAxMjgsIDY3LCA3MiwgCisgICAgNjUsIDg2LCA3MywgODksIDY1LCA3OCwgNzMsIDEyOCwgNjcsIDcyLCA2NSwgODQsIDg0LCA2NSwgODcsIDY1LCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDg0LCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgMjEyLCA2NywgNzIsIAorICAgIDY1LCA4MiwgNzMsIDc5LCA4NCwgMTI4LCA2NywgNzIsIDY1LCA4MiwgNzMsIDc5LCAyMTIsIDY3LCA3MiwgNjUsIDgyLCA2NSwgCisgICAgNjcsIDg0LCA2OSwgODIsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDgyLCA2NSwgNjcsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCAKKyAgICA2NSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDg0LCA2OSwgODIsIDEyOCwgNjcsIDcyLCA2NSwgODAsIDEyOCwgNjcsIAorICAgIDcyLCA2NSwgNzgsIDcxLCAxMjgsIDY3LCA3MiwgNjUsIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3NSwgNzksIDEyOCwgCisgICAgNjcsIDcyLCA2NSwgNzcsIDczLCA3NiwgNzksIDc4LCAxMjgsIDY3LCA3MiwgNjUsIDc3LCA3MywgNzYsIDczLCAxMjgsIDY3LCAKKyAgICA3MiwgNjUsIDIwNSwgNjcsIDcyLCA2NSwgNzUsIDc3LCAxOTMsIDY3LCA3MiwgNjUsIDczLCA4MiwgMTI4LCA2NywgNzIsIAorICAgIDY1LCA3MywgNzgsIDgzLCAxMjgsIDY3LCA3MiwgNjUsIDY4LCA2NSwgMTI4LCA2NywgNzIsIDY1LCAxOTYsIDY3LCA3MiwgCisgICAgNjUsIDY1LCAxMjgsIDY3LCA3MSwgNzQsIDEyOCwgNjcsIDY5LCA4OCwgMTI4LCA2NywgNjksIDgyLCA2OSwgODMsIDEyOCwgCisgICAgNjcsIDY5LCA4MiwgNjksIDc3LCA3OSwgNzgsIDg5LCAxMjgsIDY3LCA2OSwgODIsIDY5LCA3NSwgMTI4LCA2NywgNjksIDgyLCAKKyAgICA0NSwgODcsIDY1LCAxMjgsIDY3LCA2OSwgODAsIDEyOCwgNjcsIDY5LCA3OSwgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIAorICAgIDc3LCA4MywgODMsIDY1LCA3OCwgNzEsIDgzLCA3MywgNzksIDgzLCAxMjgsIDY3LCA2OSwgNzksIDc4LCA3MSwgNjcsIDcyLCAKKyAgICA3MywgNjksIDg1LCA3NywgODMsIDgzLCA2NSwgNzgsIDcxLCA2NywgNzMsIDY5LCA4NSwgNjcsIDEyOCwgNjcsIDY5LCA3OSwgCisgICAgNzgsIDcxLCA2NywgNzIsIDczLCA2OSwgODUsIDc3LCA4MywgNzMsIDc5LCA4MywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIAorICAgIDY3LCA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MywgNjksIDg1LCA2NywgMTI4LCA2NywgNjksIDc5LCA3OCwgNzEsIDY3LCAKKyAgICA3MiwgNzMsIDY5LCA4NSwgNzcsIDY3LCA3MiwgNzMsIDY5LCA4NSwgNjcsIDcyLCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4NSwgCisgICAgODIsIDczLCA2NSwgMjA0LCA2NywgNjksIDc4LCA4NCwgODIsIDY5LCA3NiwgNzMsIDc4LCAxOTcsIDY3LCA2OSwgNzgsIDg0LCAKKyAgICA4MiwgNjksIDY4LCAxMjgsIDY3LCA2OSwgNzgsIDg0LCA4MiwgNjksIDE5NiwgNjcsIDY5LCA3OCwgODQsIDgyLCA2OSwgCisgICAgMTI4LCA2NywgNjksIDc4LCA4NCwgODIsIDE5NywgNjcsIDY5LCA3OCwgODQsIDgyLCA2NSwgNzYsIDczLCA5MCwgNjUsIDg0LCAKKyAgICA3MywgNzksIDIwNiwgNjcsIDY5LCA3OCwgMTI4LCA2NywgNjksIDc2LCA4NCwgNzMsIDE5NSwgNjcsIDY5LCA3NiwgODMsIAorICAgIDczLCA4NSwgODMsIDEyOCwgNjcsIDY5LCA3NiwgNjksIDY2LCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY3LCA2OSwgCisgICAgNzMsIDgyLCA4NCwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCA3MSwgMTI4LCA2NywgNjksIDczLCA3NiwgNzMsIDc4LCAKKyAgICAxOTksIDY3LCA2OSwgNjksIDg2LCAxMjgsIDY3LCA2OSwgNjksIDY2LCAxMjgsIDY3LCA2OSwgNjksIDEyOCwgNjcsIDY5LCAKKyAgICA2OCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjcsIDY5LCA2OCwgNzMsIDc2LCA3NiwgMTkzLCA2NywgNjksIDY4LCAyMDEsIAorICAgIDY3LCA2OSwgNjcsIDY5LCA3NSwgMTI4LCA2NywgNjksIDY3LCA2NSwgNzUsIDEyOCwgNjcsIDY5LCA2NywgNjUsIDIwMywgCisgICAgNjcsIDY5LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NywgODUsIDEyOCwgNjcsIDY3LCA3OSwgMTI4LCA2NywgNjcsIDczLCAKKyAgICAxMjgsIDY3LCA2NywgNzIsIDg1LCAxMjgsIDY3LCA2NywgNzIsIDc5LCAxMjgsIDY3LCA2NywgNzIsIDczLCAxMjgsIDY3LCAKKyAgICA2NywgNzIsIDcyLCA4NSwgMTI4LCA2NywgNjcsIDcyLCA3MiwgNzksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDczLCAxMjgsIAorICAgIDY3LCA2NywgNzIsIDcyLCA2OSwgNjksIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY5LCAxMjgsIDY3LCA2NywgNzIsIDcyLCA2NSwgCisgICAgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNzIsIDY1LCAxMjgsIDY3LCA2NywgNzIsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDcyLCAKKyAgICA2OSwgMTI4LCA2NywgNjcsIDcyLCA2NSwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgNjUsIDEyOCwgNjcsIDY3LCA3MiwgMTI4LCAKKyAgICA2NywgNjcsIDY5LCA2OSwgMTI4LCA2NywgNjcsIDY5LCAxMjgsIDY3LCA2NywgNjUsIDY1LCAxMjgsIDY3LCA2NywgNjUsIAorICAgIDEyOCwgNjcsIDY1LCA4OSwgNzgsIDEyOCwgNjcsIDY1LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjcsIDY1LCA4OCwgCisgICAgMTI4LCA2NywgNjUsIDg2LCA2OSwgMTI4LCA2NywgNjUsIDg1LCA4NCwgNzMsIDc5LCAyMDYsIDY3LCA2NSwgODUsIDc2LCAKKyAgICA2OCwgODIsIDc5LCA3OCwgMTI4LCA2NywgNjUsIDg1LCA2OCwgNjUsIDEyOCwgNjcsIDY1LCA4NSwgNjcsIDY1LCA4MywgNzMsIAorICAgIDY1LCAyMDYsIDY3LCA2NSwgODUsIDEyOCwgNjcsIDY1LCA4NCwgNjUsIDg3LCA2NSwgMTI4LCA2NywgNjUsIDg0LCAxMjgsIAorICAgIDY3LCA2NSwgMjEyLCA2NywgNjUsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY3LCA2NSwgODMsIDc1LCA2OSwgMjEyLCA2NywgCisgICAgNjUsIDgyLCA4OSwgODMsIDg0LCA3MywgNjUsIDIwNiwgNjcsIDY1LCA4MiwgODQsIDg3LCA3MiwgNjksIDY5LCA3NiwgMTI4LCAKKyAgICA2NywgNjUsIDgyLCA4NCwgODIsIDczLCA2OCwgNzEsIDY5LCAxMjgsIDY3LCA2NSwgODIsIDg0LCAxMjgsIDY3LCA2NSwgODIsIAorICAgIDIxMSwgNjcsIDY1LCA4MiwgODIsIDc5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA4MiwgNzMsIDY1LCA3MSwgMTk3LCA2NywgCisgICAgNjUsIDgyLCA4MCwgNjksIDc4LCA4NCwgODIsIDIxNywgNjcsIDY1LCA4MiwgMjA4LCA2NywgNjUsIDgyLCA3OSwgODUsIDgzLCAKKyAgICA2OSwgMjA0LCA2NywgNjUsIDgyLCA3OSwgNzgsIDEyOCwgNjcsIDY1LCA4MiwgNzksIDIwNiwgNjcsIDY1LCA4MiwgNzMsIAorICAgIDIwMywgNjcsIDY1LCA4MiwgNzMsIDY1LCAyMDYsIDY3LCA2NSwgODIsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDgyLCA2OSwgCisgICAgMjEyLCA2NywgNjUsIDgyLCAxOTcsIDY3LCA2NSwgODIsIDY4LCA4MywgMTI4LCA2NywgNjUsIDgyLCA2OCwgMTI4LCA2NywgCisgICAgNjUsIDgyLCAxOTYsIDY3LCA2NSwgODIsIDEyOCwgNjcsIDY1LCAyMTAsIDY3LCA2NSwgODAsIDg1LCAyMTIsIDY3LCA2NSwgCisgICAgODAsIDg0LCA3MywgODYsIDY5LCAxMjgsIDY3LCA2NSwgODAsIDgyLCA3MywgNjcsIDc5LCA4MiwgNzgsIDEyOCwgNjcsIDY1LCAKKyAgICA4MCwgODAsIDY5LCAxOTYsIDY3LCA2NSwgODAsIDc5LCAxMjgsIDY3LCA2NSwgODAsIDczLCA4NCwgODUsIDc2LCA4NSwgNzcsIAorICAgIDEyOCwgNjcsIDY1LCA4MCwgNzMsIDg0LCA2NSwgNzYsIDEyOCwgNjcsIDY1LCA3OCwgODQsIDczLCA3NiwgNzYsIDY1LCA4NCwgCisgICAgNzMsIDc5LCAyMDYsIDY3LCA2NSwgNzgsIDc5LCA2OSwgMTI4LCA2NywgNjUsIDc4LCAxOTksIDY3LCA2NSwgNzgsIDY4LCAKKyAgICA4OSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgODIsIDY1LCA2NiwgNzMsIDc4LCA2OCwgODUsIDEyOCwgNjcsIDY1LCA3OCwgNjgsIAorICAgIDgyLCA2NSwgNjYsIDczLCA3OCwgNjgsIDIxMywgNjcsIDY1LCA3OCwgNjgsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc4LCA2OCwgCisgICAgODIsIDE5MywgNjcsIDY1LCA3OCwgNjgsIDc2LCA2OSwgMTI4LCA2NywgNjUsIDc4LCA2NywgNjksIDgyLCAxMjgsIDY3LCAKKyAgICA2NSwgNzgsIDY3LCA2OSwgNzYsIDc2LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NywgNjUsIDc4LCA2NywgNjksIDc2LCAxMjgsIAorICAgIDY3LCA2NSwgNzgsIDY3LCA2OSwgMjA0LCA2NywgNjUsIDc4LCAxMjgsIDY3LCA2NSwgNzcsIDgwLCA3MywgNzgsIDcxLCAKKyAgICAxMjgsIDY3LCA2NSwgNzcsIDc4LCA4NSwgMTk1LCA2NywgNjUsIDc3LCA2OSwgODIsIDY1LCAxMjgsIDY3LCA2NSwgNzcsIAorICAgIDY5LCA4MiwgMTkzLCA2NywgNjUsIDc3LCA2OSwgNzYsIDEyOCwgNjcsIDY1LCA3NiwgODksIDY1LCAxMjgsIDY3LCA2NSwgCisgICAgNzYsIDg5LCAxOTMsIDY3LCA2NSwgNzYsIDg4LCAxMjgsIDY3LCA2NSwgNzYsIDc2LCAxMjgsIDY3LCA2NSwgNzYsIDIwNCwgCisgICAgNjcsIDY1LCA3NiwgNjksIDc4LCA2OCwgNjUsIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY5LCA3OCwgNjgsIDY1LCAyMTAsIDY3LCAKKyAgICA2NSwgNzYsIDY3LCA4NSwgNzYsIDY1LCA4NCwgNzksIDgyLCAxMjgsIDY3LCA2NSwgNzYsIDY3LCAxMjgsIDY3LCA2NSwgNzUsIAorICAgIDgyLCA2NSwgMTI4LCA2NywgNjUsIDc1LCAxOTcsIDY3LCA2NSwgNzMsIDEyOCwgNjcsIDY1LCA3MiwgMTI4LCA2NywgNjUsIAorICAgIDY5LCA4MywgODUsIDgyLCA2NSwgMTI4LCA2NywgNjUsIDY4LCA4NSwgNjcsIDY5LCA4NSwgODMsIDEyOCwgNjcsIDY1LCA2OCwgCisgICAgMTkzLCA2NywgNjUsIDY3LCA4NCwgODUsIDgzLCAxMjgsIDY3LCA2NSwgNjYsIDc2LCA2OSwgODcsIDY1LCA4OSwgMTI4LCAKKyAgICA2NywgNjUsIDY2LCA3MywgNzgsIDY5LCA4NCwgMTI4LCA2NywgNjUsIDY2LCA2NiwgNjUsIDcxLCA2OSwgNDUsIDg0LCA4MiwgCisgICAgNjksIDY5LCAxMjgsIDY3LCA2NSwgNjUsIDc4LCA3MSwgMTI4LCA2NywgNjUsIDY1LCA3MywgMTI4LCA2NywgMTkzLCA2NywgCisgICAgNDgsIDUwLCA1MiwgMTI4LCA2NywgNDgsIDUwLCA1MSwgMTI4LCA2NywgNDgsIDUwLCA1MCwgMTI4LCA2NywgNDgsIDUwLCAKKyAgICA0OSwgMTI4LCA2NywgNDgsIDUwLCA0OCwgMTI4LCA2NywgNDgsIDQ5LCA1NywgMTI4LCA2NywgNDgsIDQ5LCA1NiwgMTI4LCAKKyAgICA2NywgNDgsIDQ5LCA1NSwgMTI4LCA2NywgNDgsIDQ5LCA1NCwgMTI4LCA2NywgNDgsIDQ5LCA1MywgMTI4LCA2NywgNDgsIAorICAgIDQ5LCA1MiwgMTI4LCA2NywgNDgsIDQ5LCA1MSwgMTI4LCA2NywgNDgsIDQ5LCA1MCwgMTI4LCA2NywgNDgsIDQ5LCA0OSwgCisgICAgMTI4LCA2NywgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjcsIDQ4LCA0OSwgNDgsIDEyOCwgNjcsIDQ4LCA0OCwgNTcsIDEyOCwgCisgICAgNjcsIDQ4LCA0OCwgNTYsIDEyOCwgNjcsIDQ4LCA0OCwgNTUsIDEyOCwgNjcsIDQ4LCA0OCwgNTQsIDEyOCwgNjcsIDQ4LCAKKyAgICA0OCwgNTMsIDEyOCwgNjcsIDQ4LCA0OCwgNTIsIDEyOCwgNjcsIDQ4LCA0OCwgNTEsIDEyOCwgNjcsIDQ4LCA0OCwgNTAsIAorICAgIDY3LCAxMjgsIDY3LCA0OCwgNDgsIDUwLCA2NiwgMTI4LCA2NywgNDgsIDQ4LCA1MCwgNjUsIDEyOCwgNjcsIDQ4LCA0OCwgCisgICAgNTAsIDEyOCwgNjcsIDQ4LCA0OCwgNDksIDEyOCwgNjcsIDQ1LCA4MywgNzMsIDc3LCA4MCwgNzYsIDczLCA3MCwgNzMsIDY5LCAKKyAgICAxOTYsIDY3LCA0NSwgNTEsIDU3LCAxMjgsIDY3LCA0NSwgNDksIDU2LCAxMjgsIDY2LCA5MCwgODUsIDc4LCAxOTksIDY2LCAKKyAgICA5MCwgNzIsIDIwMSwgNjYsIDg5LCA4NCwgMTk3LCA2NiwgODksIDY5LCA3NiwgNzksIDgyLCA4NSwgODMsIDgzLCA3MywgNjUsIAorICAgIDc4LCA0NSwgODUsIDc1LCA4MiwgNjUsIDczLCA3OCwgNzMsIDY1LCAyMDYsIDY2LCA4OCwgNzEsIDEyOCwgNjYsIDg3LCA3MywgCisgICAgMTI4LCA2NiwgODcsIDY5LCA2OSwgMTI4LCA2NiwgODcsIDY5LCAxMjgsIDY2LCA4NywgNjUsIDEyOCwgNjYsIDg1LCA4NSwgCisgICAgNzcsIDczLCA4MywgNzIsIDEyOCwgNjYsIDg1LCA4NCwgODQsIDc5LCA3OCwgMTI4LCA2NiwgODUsIDg0LCA4NCwgNzksIAorICAgIDIwNiwgNjYsIDg1LCA4NCwgODQsIDY5LCA4MiwgNzAsIDc2LCA4OSwgMTI4LCA2NiwgODUsIDIxMiwgNjYsIDg1LCA4MywgCisgICAgODQsIDIxMSwgNjYsIDg1LCA4MywgMjEyLCA2NiwgODUsIDgzLCA4MywgODksIDY5LCA4MiwgODUsIDEyOCwgNjYsIDg1LCAKKyAgICA4MywgNzMsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDg1LCAyMTEsIDY2LCA4NSwgODIsIDIxMywgNjYsIDg1LCA4MiwgODIsIAorICAgIDczLCA4NCwgNzksIDEyOCwgNjYsIDg1LCA4MiwgNTAsIDEyOCwgNjYsIDg1LCAyMTAsIDY2LCA4NSwgNzksIDg4LCAxMjgsIAorICAgIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA4NSwgNzgsIDc4LCAyMTcsIDY2LCA4NSwgNzgsIDcxLCAxMjgsIDY2LCA4NSwgCisgICAgNzcsIDgwLCAyMTcsIDY2LCA4NSwgNzYsIDg1LCA3MSwgMTI4LCA2NiwgODUsIDc2LCA4NSwgMTk5LCA2NiwgODUsIDc2LCAKKyAgICA3NiwgODMsIDY5LCA4OSwgNjksIDEyOCwgNjYsIDg1LCA3NiwgNzYsIDIxMSwgNjYsIDg1LCA3NiwgNzYsIDcyLCA3OSwgODIsIAorICAgIDc4LCAxMjgsIDY2LCA4NSwgNzYsIDc2LCA3MiwgNzksIDgyLCAyMDYsIDY2LCA4NSwgNzYsIDc2LCA2OSwgODQsIDEyOCwgCisgICAgNjYsIDg1LCA3NiwgNzYsIDY5LCAyMTIsIDY2LCA4NSwgNzYsIDc2LCAxMjgsIDY2LCA4NSwgNzYsIDY2LCAxMjgsIDY2LCAKKyAgICA4NSwgNzUsIDg5LCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCA3MSwgODMsIDEyOCwgNjYsIDg1LCA3MywgNzYsIAorICAgIDY4LCA3MywgNzgsIDcxLCAxMjgsIDY2LCA4NSwgNzMsIDc2LCA2OCwgNzMsIDc4LCAxOTksIDY2LCA4NSwgNzIsIDczLCAKKyAgICAxOTYsIDY2LCA4NSwgNzEsIDczLCA3OCwgNjksIDgzLCAxOTcsIDY2LCA4NSwgNzEsIDEyOCwgNjYsIDg1LCA3MCwgNzAsIAorICAgIDY1LCA3NiwgNzksIDEyOCwgNjYsIDg1LCA2OCwgMTI4LCA2NiwgODUsIDY3LCA3NSwgNzYsIDY5LCAxMjgsIDY2LCA4NSwgCisgICAgNjYsIDY2LCA3NiwgNjksIDgzLCAxMjgsIDY2LCA4NSwgNjYsIDY2LCA3NiwgNjksIDEyOCwgNjYsIDgzLCA4NCwgNjUsIDgyLCAKKyAgICAxMjgsIDY2LCA4MywgNzUsIDg1LCAyMTAsIDY2LCA4MywgNzUsIDY1LCAxNzMsIDY2LCA4MywgNjgsIDg1LCAyMTEsIDY2LCAKKyAgICA4MiwgODUsIDgzLCAyMDAsIDY2LCA4MiwgNzksIDc4LCA5MCwgNjksIDEyOCwgNjYsIDgyLCA3OSwgNzUsIDY5LCAyMDYsIAorICAgIDY2LCA4MiwgNzksIDY1LCAxOTYsIDY2LCA4MiwgNzMsIDgzLCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA4MiwgNzMsIDcxLCA3MiwgCisgICAgODQsIDc4LCA2OSwgODMsIDIxMSwgNjYsIDgyLCA3MywgNjksIDcwLCA2NywgNjUsIDgzLCA2OSwgMTI4LCA2NiwgODIsIDczLCAKKyAgICA2OCwgNzEsIDE5NywgNjYsIDgyLCA3MywgNjgsIDE5NywgNjYsIDgyLCA3MywgNjcsIDc1LCAxMjgsIDY2LCA4MiwgNjksIAorICAgIDg2LCA3MywgODMsIDEyOCwgNjYsIDgyLCA2OSwgODYsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgODIsIDY5LCA4NiwgMTk3LCA2NiwgODIsIDY5LCA2NSwgODQsIDIwMCwgNjYsIDgyLCA2OSwgNjUsIDc1LCA4NCwgNzIsIDgyLCAKKyAgICA3OSwgODUsIDcxLCA3MiwgMTI4LCA2NiwgODIsIDY4LCAxOTMsIDY2LCA4MiwgNjUsIDc4LCA2NywgNzIsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgODIsIDY1LCA3OCwgNjcsIDcyLCA2OSwgODMsIDEyOCwgNjYsIDgyLCA2NSwgNzgsIDY3LCA3MiwgMTI4LCAKKyAgICA2NiwgODIsIDY1LCA3OCwgNjcsIDIwMCwgNjYsIDgyLCA2NSwgNzUsIDY3LCA2OSwgODQsIDEyOCwgNjYsIDgyLCA2NSwgNjcsIAorICAgIDc1LCA2OSwgODQsIDY5LCAxOTYsIDY2LCA4MiwgNjUsIDY3LCA3NSwgNjksIDIxMiwgNjYsIDgyLCA2NSwgNjcsIDY5LCAKKyAgICAxMjgsIDY2LCA4MSwgMTI4LCA2NiwgODAsIDcyLCAxMjgsIDY2LCA3OSwgODksIDIxMSwgNjYsIDc5LCA4OSwgMTI4LCA2NiwgCisgICAgNzksIDg4LCA3MywgNzgsIDE5OSwgNjYsIDc5LCA4NywgODQsIDczLCA2OSwgMTI4LCA2NiwgNzksIDg3LCA4NCwgNzMsIAorICAgIDE5NywgNjYsIDc5LCA4NywgNzYsIDczLCA3OCwgNzEsIDEyOCwgNjYsIDc5LCA4NywgNzYsIDEyOCwgNjYsIDc5LCA4NywgCisgICAgMjA0LCA2NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc5LCAyMTUsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDg0LCAKKyAgICAxMjgsIDY2LCA3OSwgODUsIDgxLCA4NSwgNjksIDIxMiwgNjYsIDc5LCA4NSwgNzgsIDY4LCA2NSwgODIsIDIxNywgNjYsIAorICAgIDc5LCA4NCwgODQsIDc5LCA3NywgNDUsIDgzLCA3MiwgNjUsIDY4LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAKKyAgICA0NSwgNzYsIDczLCA3MSwgNzIsIDg0LCA2OSwgMTk2LCA2NiwgNzksIDg0LCA4NCwgNzksIDc3LCAxMjgsIDY2LCA3OSwgODQsIAorICAgIDg0LCA3OSwgMjA1LCA2NiwgNzksIDg0LCA4NCwgNzYsIDY5LCAxMjgsIDY2LCA3OSwgODQsIDg0LCA3NiwgMTk3LCA2NiwgCisgICAgNzksIDg0LCAyMDAsIDY2LCA3OSwgODIsIDg1LCA4NCwgNzksIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTEsIAorICAgIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCA0NSwgNTAsIDEyOCwgNjYsIDc5LCA4MiwgNjUsIDg4LCAxMjgsIDY2LCA3OSwgCisgICAgODAsIDc5LCA3NywgNzksIDcwLCAyMDcsIDY2LCA3OSwgNzksIDg0LCA4MywgMTI4LCA2NiwgNzksIDc5LCA4NCwgMTI4LCAKKyAgICA2NiwgNzksIDc5LCA3NywgNjksIDgyLCA2NSwgNzgsIDcxLCAxMjgsIDY2LCA3OSwgNzksIDc1LCA4MywgMTI4LCA2NiwgNzksIAorICAgIDc5LCA3NSwgNzcsIDY1LCA4MiwgNzUsIDEyOCwgNjYsIDc5LCA3OSwgNzUsIDc3LCA2NSwgODIsIDIwMywgNjYsIDc5LCA3OCwgCisgICAgNjksIDEyOCwgNjYsIDc5LCA3NywgNjYsIDEyOCwgNjYsIDc5LCA3NywgMTI4LCA2NiwgNzksIDc2LCA4NCwgMTI4LCA2NiwgCisgICAgNzksIDc2LCAyMTIsIDY2LCA3OSwgNzIsIDY1LCA3MywgODIsIDczLCAxOTUsIDY2LCA3OSwgNjgsIDg5LCAxMjgsIDY2LCAKKyAgICA3OSwgNjgsIDIxNywgNjYsIDc5LCA2NSwgODIsIDEyOCwgNjYsIDc5LCA2NSwgMTI4LCA2NiwgNzYsIDg1LCA2OSwgMTI4LCAKKyAgICA2NiwgNzYsIDg1LCAxOTcsIDY2LCA3NiwgNzksIDg3LCA3MywgNzgsIDE5OSwgNjYsIDc2LCA3OSwgODcsIDcwLCA3MywgODMsIAorICAgIDcyLCAxMjgsIDY2LCA3NiwgNzksIDIxNSwgNjYsIDc2LCA3OSwgODMsIDgzLCA3OSwgNzcsIDEyOCwgNjYsIDc2LCA3OSwgCisgICAgNzksIDY4LCAxMjgsIDY2LCA3NiwgNzksIDc4LCAxOTYsIDY2LCA3NiwgNzksIDY3LCA3NSwgMTI4LCA2NiwgNzYsIDczLCAKKyAgICA3OCwgMjAzLCA2NiwgNzYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDc2LCA2NSwgNzgsIDIwMywgNjYsIDc2LCA2NSwgNjgsIAorICAgIDE5NywgNjYsIDc2LCA2NSwgNjcsIDc1LCA3NiwgNjksIDg0LCA4NCwgNjksIDIxMCwgNjYsIDc2LCA2NSwgNjcsIDc1LCA3MCwgCisgICAgNzksIDc5LCAyMTIsIDY2LCA3NiwgNjUsIDY3LCA3NSwgNDUsIDc2LCA2OSwgODQsIDg0LCA2OSwgMjEwLCA2NiwgNzYsIDY1LCAKKyAgICA2NywgNzUsIDQ1LCA3MCwgNjksIDY1LCA4NCwgNzIsIDY5LCA4MiwgNjksIDE5NiwgNjYsIDc2LCA2NSwgNjcsIDc1LCAxMjgsIAorICAgIDY2LCA3NSwgNjUsIDE3MywgNjYsIDczLCA4NCwgODQsIDY5LCA4MiwgMTI4LCA2NiwgNzMsIDg0LCA3MywgNzgsIDE5OSwgCisgICAgNjYsIDczLCA4NCwgMTk3LCA2NiwgNzMsIDgzLCA3NywgODUsIDg0LCAyMDAsIDY2LCA3MywgODMsIDc3LCA3MywgNzYsIDc2LCAKKyAgICA2NSwgMjAwLCA2NiwgNzMsIDgzLCA3MiwgNzksIDgwLCAxMjgsIDY2LCA3MywgODMsIDY5LCA2NywgODQsIDczLCA3OCwgCisgICAgMTk5LCA2NiwgNzMsIDgzLCA2NSwgNzIsIDEyOCwgNjYsIDczLCA4MiwgODUsIDEyOCwgNjYsIDczLCA4MiwgODQsIDcyLCAKKyAgICA2OCwgNjUsIDIxNywgNjYsIDczLCA4MiwgNzEsIDY1LCAxMjgsIDY2LCA3MywgODIsIDcxLCAxOTMsIDY2LCA3MywgODIsIAorICAgIDY4LCAxMjgsIDY2LCA3MywgNzksIDcyLCA2NSwgOTAsIDY1LCA4MiwgMTk2LCA2NiwgNzMsIDc4LCA3OSwgNjcsIDg1LCA3NiwgCisgICAgNjUsIDIxMCwgNjYsIDczLCA3OCwgNjgsIDczLCA3OCwgMTk5LCA2NiwgNzMsIDc4LCA2OCwgNzMsIDEyOCwgNjYsIDczLCAKKyAgICA3OCwgNjUsIDgyLCAyMTcsIDY2LCA3MywgNzYsIDc2LCA3MywgNzksIDc4LCA4MywgMTI4LCA2NiwgNzMsIDc2LCA3NiwgNzMsIAorICAgIDY1LCA4MiwgNjgsIDgzLCAxMjgsIDY2LCA3MywgNzYsIDY1LCA2NiwgNzMsIDY1LCAyMDQsIDY2LCA3MywgNzUsIDczLCA3OCwgCisgICAgNzMsIDEyOCwgNjYsIDczLCA3MSwgMTI4LCA2NiwgNzMsIDE5OSwgNjYsIDczLCA2OSwgODQsIDEyOCwgNjYsIDczLCA2OCwgCisgICAgNjksIDc4LCA4NCwgNjUsIDIwNCwgNjYsIDczLCA2OCwgNjUsIDc1LCA4NSwgNzksIDIwNiwgNjYsIDczLCA2NywgODksIDY3LCAKKyAgICA3NiwgNzMsIDgzLCA4NCwgMTI4LCA2NiwgNzMsIDY3LCA4OSwgNjcsIDc2LCA2OSwgODMsIDEyOCwgNjYsIDczLCA2NywgODksIAorICAgIDY3LCA3NiwgNjksIDEyOCwgNjYsIDczLCA2NywgNjksIDgwLCA4MywgMTI4LCA2NiwgNzMsIDY2LCA3NiwgNjksIDQ1LCA2NywgCisgICAgODIsIDY5LCAxOTcsIDY2LCA3MywgNjYsIDEyOCwgNjYsIDIwMSwgNjYsIDcyLCA4NSwgMTI4LCA2NiwgNzIsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNzIsIDc5LCAxMjgsIDY2LCA3MiwgNzMsIDEyOCwgNjYsIDcyLCA2OSwgODQsIDcyLCAxMjgsIDY2LCA3MiwgCisgICAgNjksIDY5LCAxMjgsIDY2LCA3MiwgNjksIDEyOCwgNjYsIDcyLCA2NSwgODQsIDg0LCA3MywgODAsIDgyLCA3OSwgNzYsIAorICAgIDIxMywgNjYsIDcyLCA2NSwgNzcsIDEyOCwgNjYsIDcyLCA2NSwgNjUsIDEyOCwgNjYsIDcyLCA2NSwgMTI4LCA2NiwgNjksIAorICAgIDg5LCA4OSwgNjUsIDc2LCAxMjgsIDY2LCA2OSwgODgsIDEyOCwgNjYsIDY5LCA4NiwgNjksIDgyLCA2NSwgNzEsIDY5LCAKKyAgICAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDc4LCAxMjgsIDY2LCA2OSwgODQsIDg3LCA2OSwgNjksIDIwNiwgNjYsIAorICAgIDY5LCA4NCwgNzIsIDEyOCwgNjYsIDY5LCA4NCwgNjUsIDEyOCwgNjYsIDY5LCA4NCwgMTkzLCA2NiwgNjksIDIxMiwgNjYsIAorICAgIDY5LCA4MywgNzMsIDY4LCAxOTcsIDY2LCA2OSwgODIsIDc1LCA2NSwgNzgsIDY1LCAyMDYsIDY2LCA2OSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjksIDgwLCAxMjgsIDY2LCA2OSwgNzksIDgyLCAxOTUsIDY2LCA2OSwgNzgsIDkwLCA2OSwgNzgsIDE5NywgCisgICAgNjYsIDY5LCA3OCwgODQsIDIwNywgNjYsIDY5LCA3OCwgODQsIDEyOCwgNjYsIDY5LCA3OCwgMjEyLCA2NiwgNjksIDc4LCAKKyAgICA2OCwgNjksIDEyOCwgNjYsIDY5LCA3OCwgNjgsIDEyOCwgNjYsIDY5LCA3OCwgMTk2LCA2NiwgNjksIDIwNiwgNjYsIDY5LCAKKyAgICA3NiwgODQsIDEyOCwgNjYsIDY5LCA3NiwgMjEyLCA2NiwgNjksIDc2LCA3OSwgMjE1LCA2NiwgNjksIDc2LCA3NiwgNzIsIAorICAgIDc5LCAyMDgsIDY2LCA2OSwgNzYsIDc2LCAxMjgsIDY2LCA2OSwgNzYsIDIwNCwgNjYsIDY5LCA3NiwgNzEsIDg0LCA3MiwgCisgICAgNzksIDIxMCwgNjYsIDY5LCA3MywgODQsIDcyLCAxMjgsIDY2LCA2OSwgNzIsIDczLCA3OCwgMTk2LCA2NiwgNjksIDcyLCAKKyAgICA2OSwgNzIsIDEyOCwgNjYsIDY5LCA3MiwgNjksIDIwMCwgNjYsIDY5LCA3MiwgMTI4LCA2NiwgNjksIDIwMCwgNjYsIDY5LCAKKyAgICA3MSwgNzMsIDc4LCA3OCwgNzMsIDc4LCA3MSwgMTI4LCA2NiwgNjksIDcxLCA3MywgNzgsIDc4LCA2OSwgODIsIDEyOCwgNjYsIAorICAgIDY5LCA3MSwgNzMsIDIwNiwgNjYsIDY5LCA3MCwgNzksIDgyLCAxOTcsIDY2LCA2OSwgNjksIDg0LCA3NiwgNjksIDEyOCwgCisgICAgNjYsIDY5LCA2OSwgODQsIDY1LCAxMjgsIDY2LCA2OSwgNjksIDIxMCwgNjYsIDY5LCA2OSwgNzIsIDczLCA4NiwgNjksIAorICAgIDEyOCwgNjYsIDY5LCA2OSwgNzIsIDEyOCwgNjYsIDY5LCA2OSwgMjAwLCA2NiwgNjksIDY3LCA2NSwgODUsIDgzLCA2OSwgCisgICAgMTI4LCA2NiwgNjksIDY1LCA4NiwgNjksIDIxMCwgNjYsIDY5LCA2NSwgODQsIDczLCA3OCwgMTk5LCA2NiwgNjksIDY1LCAKKyAgICA4NCwgMTI4LCA2NiwgNjksIDY1LCAyMTAsIDY2LCA2OSwgNjUsIDc4LCAxMjgsIDY2LCA2OSwgNjUsIDc3LCA2OSwgMTk2LCAKKyAgICA2NiwgNjksIDY1LCA2OCwgODMsIDEyOCwgNjYsIDY5LCA2NSwgNjcsIDIwMCwgNjYsIDY3LCA2NSwgNjgsIDEyOCwgNjYsIAorICAgIDY3LCA2NSwgMTk2LCA2NiwgNjYsIDg5LCA4OCwgMTI4LCA2NiwgNjYsIDg5LCA4NCwgMTI4LCA2NiwgNjYsIDg5LCA4MCwgCisgICAgMTI4LCA2NiwgNjYsIDg5LCAxMjgsIDY2LCA2NiwgODUsIDg4LCAxMjgsIDY2LCA2NiwgODUsIDg0LCAxMjgsIDY2LCA2NiwgCisgICAgODUsIDgyLCA4OCwgMTI4LCA2NiwgNjYsIDg1LCA4MiwgMTI4LCA2NiwgNjYsIDg1LCA4MCwgMTI4LCA2NiwgNjYsIDg1LCAKKyAgICA3OSwgODgsIDEyOCwgNjYsIDY2LCA4NSwgNzksIDgwLCAxMjgsIDY2LCA2NiwgODUsIDc5LCAxMjgsIDY2LCA2NiwgODUsIAorICAgIDEyOCwgNjYsIDY2LCA3OSwgODgsIDEyOCwgNjYsIDY2LCA3OSwgODQsIDEyOCwgNjYsIDY2LCA3OSwgODAsIDEyOCwgNjYsIAorICAgIDY2LCA3OSwgMTI4LCA2NiwgNjYsIDczLCA4OCwgMTI4LCA2NiwgNjYsIDczLCA4MCwgMTI4LCA2NiwgNjYsIDczLCA2OSwgCisgICAgODgsIDEyOCwgNjYsIDY2LCA3MywgNjksIDg0LCAxMjgsIDY2LCA2NiwgNzMsIDY5LCA4MCwgMTI4LCA2NiwgNjYsIDczLCAKKyAgICA2OSwgMTI4LCA2NiwgNjYsIDczLCAxMjgsIDY2LCA2NiwgNjksIDg4LCAxMjgsIDY2LCA2NiwgNjksIDgwLCAxMjgsIDY2LCAKKyAgICA2NiwgNjksIDY5LCAxMjgsIDY2LCA2NiwgNjksIDEyOCwgNjYsIDY2LCA2NSwgODgsIDEyOCwgNjYsIDY2LCA2NSwgODQsIAorICAgIDEyOCwgNjYsIDY2LCA2NSwgODAsIDEyOCwgNjYsIDY2LCA2NSwgNjUsIDEyOCwgNjYsIDY2LCA2NSwgMTI4LCA2NiwgNjUsIAorICAgIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NiwgNjUsIDg1LCAxMjgsIDY2LCA2NSwgODQsIDg0LCA2OSwgODIsIDg5LCAKKyAgICAxMjgsIDY2LCA2NSwgODQsIDcyLCA4NCwgODUsIDY2LCAxMjgsIDY2LCA2NSwgODQsIDcyLCA2NSwgNzcsIDY1LCA4MywgNjUsIAorICAgIDg0LCAxMjgsIDY2LCA2NSwgODQsIDcyLCAxMjgsIDY2LCA2NSwgODQsIDIwMCwgNjYsIDY1LCA4NCwgNjUsIDIwMywgNjYsIAorICAgIDY1LCA4MywgODMsIDY1LCAxMjgsIDY2LCA2NSwgODMsIDgzLCAxOTMsIDY2LCA2NSwgODMsIDc1LCA2OSwgODQsIDY2LCA2NSwgCisgICAgNzYsIDIwNCwgNjYsIDY1LCA4MywgNzIsIDc1LCA3MywgMjEwLCA2NiwgNjUsIDgzLCA3MiwgMTI4LCA2NiwgNjUsIDgzLCAKKyAgICA2OSwgNzYsIDczLCA3OCwgMTk3LCA2NiwgNjUsIDgzLCA2OSwgNjYsIDY1LCA3NiwgNzYsIDEyOCwgNjYsIDY1LCA4MywgNjksIAorICAgIDEyOCwgNjYsIDY1LCA4MywgMTk3LCA2NiwgNjUsIDgyLCA4MywgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNzMsIDY5LCA4MiwgCisgICAgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDc1LCA3MiwgMTI4LCA2NiwgNjUsIDgyLCA4MiwgNjksIDY5LCAxMjgsIDY2LCAKKyAgICA2NSwgODIsIDgyLCA2OSwgMTk3LCA2NiwgNjUsIDgyLCA3NiwgNzMsIDc4LCA2OSwgMTI4LCA2NiwgNjUsIDgyLCA3NiwgNjksIAorICAgIDg5LCAxMjgsIDY2LCA2NSwgODIsIDczLCA4OSwgNzksIDc5LCA4MywgNjUsIDc4LCAxMjgsIDY2LCA2NSwgODIsIDY2LCA2OSwgCisgICAgMjEwLCA2NiwgNjUsIDgyLCA2NSwgNTAsIDEyOCwgNjYsIDY1LCAyMTAsIDY2LCA2NSwgNzgsIDg0LCA3OSwgNjcsIDEyOCwgCisgICAgNjYsIDY1LCA3OCwgNzUsIDc4LCA3OSwgODQsIDE5NywgNjYsIDY1LCA3OCwgNzUsIDEyOCwgNjYsIDY1LCA3OCwgMjAzLCAKKyAgICA2NiwgNjUsIDc4LCA2OCwgMTI4LCA2NiwgNjUsIDc4LCA2NSwgNzgsIDY1LCAxMjgsIDY2LCA2NSwgNzgsIDUwLCAxMjgsIAorICAgIDY2LCA2NSwgNzgsIDE3OCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgODMsIDEyOCwgNjYsIDY1LCA3NywgNjYsIDc5LCA3OSwgCisgICAgMTI4LCA2NiwgNjUsIDc2LCA4NSwgNjgsIDY1LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA4MCwgNzksIDczLCA3OCwgMjEyLCAKKyAgICA2NiwgNjUsIDc2LCA3NiwgNzksIDg0LCAxMjgsIDY2LCA2NSwgNzYsIDc2LCA3OSwgMjEyLCA2NiwgNjUsIDc2LCA3NiwgNzksIAorICAgIDc5LCA3OCwgNDUsIDgzLCA4MCwgNzksIDc1LCA2OSwgMTk2LCA2NiwgNjUsIDc2LCA3NiwgNzksIDc5LCA3OCwgMTI4LCA2NiwgCisgICAgNjUsIDc2LCA2NSwgNzEsIDEyOCwgNjYsIDY1LCA3NiwgMTI4LCA2NiwgNjUsIDIwNCwgNjYsIDY1LCA3MywgODIsIDc1LCAKKyAgICA2NSwgNzgsIDEyOCwgNjYsIDY1LCA3MywgNzcsIDY1LCA3MywgMTI4LCA2NiwgNjUsIDcyLCA4NCwgMTI4LCA2NiwgNjUsIAorICAgIDcyLCA3MywgODIsIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY2LCA2NSwgNzIsIDY1LCA4MiwgNTAsIDEyOCwgCisgICAgNjYsIDY1LCA3MiwgNjUsIDgyLCAxNzgsIDY2LCA2NSwgNzIsIDEyOCwgNjYsIDY1LCA3MSwgODUsIDY5LCA4NCwgODQsIAorICAgIDE5NywgNjYsIDY1LCA3MSwgODMsIDEyOCwgNjYsIDY1LCA3MSwgNzEsIDY1LCA3MSwgMTk3LCA2NiwgNjUsIDcxLCA2NSwgCisgICAgMTI4LCA2NiwgNjUsIDcxLCA1MSwgMTI4LCA2NiwgNjUsIDE5OSwgNjYsIDY1LCA2OCwgNzcsIDczLCA3OCwgODQsIDc5LCAKKyAgICAyMDYsIDY2LCA2NSwgNjgsIDcxLCA2OSwgODIsIDEyOCwgNjYsIDY1LCA2OCwgNzEsIDY5LCAxMjgsIDY2LCA2NSwgNjgsIAorICAgIDEyOCwgNjYsIDY1LCAxOTYsIDY2LCA2NSwgNjcsIDg0LCA4MiwgNzMsIDY1LCAyMDYsIDY2LCA2NSwgNjcsIDc5LCA3OCwgCisgICAgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODcsIDY1LCA4MiwgNjgsIDEyOCwgNjYsIDY1LCA2NywgNzUsIDgzLCA4MCwgNjUsIDY3LCAKKyAgICA2OSwgMTI4LCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgODMsIDcyLCAxMjgsIDY2LCA2NSwgNjcsIDc1LCA4MywgNzYsIAorICAgIDY1LCA4MywgMjAwLCA2NiwgNjUsIDY3LCA3NSwgODMsIDc2LCA2NSwgNzgsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgCisgICAgNzIsIDY1LCA3OCwgMTk2LCA2NiwgNjUsIDY3LCA3NSwgNDUsIDg0LCA3MywgNzYsIDg0LCA2OSwgMTk2LCA2NiwgNjUsIDY3LCAKKyAgICA3NSwgMTI4LCA2NiwgNjUsIDY3LCAyMDMsIDY2LCA2NSwgNjYsIDg5LCAxMjgsIDY2LCA2NSwgNjYsIDIxNywgNjYsIDY1LCAKKyAgICA2NSwgODIsIDY5LCA4MiwgODUsIDEyOCwgNjYsIDY1LCA0NSwgNTAsIDEyOCwgNjYsIDUxLCA0OCwgNTMsIDEyOCwgNjYsIAorICAgIDUwLCA1MywgNTcsIDEyOCwgNjYsIDUwLCA1MywgNTYsIDEyOCwgNjYsIDUwLCA1MywgNTUsIDEyOCwgNjYsIDUwLCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDUwLCA1MywgNTMsIDEyOCwgNjYsIDUwLCA1MywgMTgwLCA2NiwgNTAsIDUzLCA1MSwgMTI4LCA2NiwgCisgICAgNTAsIDUzLCA1MCwgMTI4LCA2NiwgNTAsIDUzLCA0OSwgMTI4LCA2NiwgNTAsIDUzLCA0OCwgMTI4LCA2NiwgNTAsIDUyLCAKKyAgICA1NywgMTI4LCA2NiwgNTAsIDUyLCA1NiwgMTI4LCA2NiwgNTAsIDUyLCAxODMsIDY2LCA1MCwgNTIsIDU0LCAxMjgsIDY2LCAKKyAgICA1MCwgNTIsIDUzLCAxMjgsIDY2LCA1MCwgNTIsIDE3OSwgNjYsIDUwLCA1MiwgMTc4LCA2NiwgNTAsIDUyLCAxNzcsIDY2LCAKKyAgICA1MCwgNTIsIDE3NiwgNjYsIDUwLCA1MSwgNTQsIDEyOCwgNjYsIDUwLCA1MSwgNTIsIDEyOCwgNjYsIDUwLCA1MSwgMTc5LCAKKyAgICA2NiwgNTAsIDUxLCA1MCwgMTI4LCA2NiwgNTAsIDUxLCAxNzcsIDY2LCA1MCwgNTEsIDE3NiwgNjYsIDUwLCA1MCwgNTcsIAorICAgIDEyOCwgNjYsIDUwLCA1MCwgNTYsIDEyOCwgNjYsIDUwLCA1MCwgNTUsIDEyOCwgNjYsIDUwLCA1MCwgNTQsIDEyOCwgNjYsIAorICAgIDUwLCA1MCwgMTgxLCA2NiwgNTAsIDUwLCA1MCwgMTI4LCA2NiwgNTAsIDUwLCA0OSwgMTI4LCA2NiwgNTAsIDUwLCAxNzYsIAorICAgIDY2LCA1MCwgNDksIDU3LCAxMjgsIDY2LCA1MCwgNDksIDU2LCAxMjgsIDY2LCA1MCwgNDksIDU1LCAxMjgsIDY2LCA1MCwgCisgICAgNDksIDU0LCAxMjgsIDY2LCA1MCwgNDksIDUzLCAxMjgsIDY2LCA1MCwgNDksIDUyLCAxMjgsIDY2LCA1MCwgNDksIDUxLCAKKyAgICAxMjgsIDY2LCA1MCwgNDksIDUwLCAxMjgsIDY2LCA1MCwgNDksIDQ5LCAxMjgsIDY2LCA1MCwgNDksIDQ4LCAxMjgsIDY2LCAKKyAgICA1MCwgNDgsIDU3LCAxMjgsIDY2LCA1MCwgNDgsIDU2LCAxMjgsIDY2LCA1MCwgNDgsIDU1LCAxMjgsIDY2LCA1MCwgNDgsIAorICAgIDU0LCAxMjgsIDY2LCA1MCwgNDgsIDUzLCAxMjgsIDY2LCA1MCwgNDgsIDUyLCAxMjgsIDY2LCA1MCwgNDgsIDUxLCAxMjgsIAorICAgIDY2LCA1MCwgNDgsIDUwLCAxMjgsIDY2LCA1MCwgNDgsIDQ5LCAxMjgsIDY2LCA1MCwgNDgsIDQ4LCAxMjgsIDY2LCA0OSwgCisgICAgNTcsIDE3NywgNjYsIDQ5LCA1NywgNDgsIDEyOCwgNjYsIDQ5LCA1NiwgNTcsIDEyOCwgNjYsIDQ5LCA1NiwgNTMsIDEyOCwgCisgICAgNjYsIDQ5LCA1NiwgNTIsIDEyOCwgNjYsIDQ5LCA1NiwgNTEsIDEyOCwgNjYsIDQ5LCA1NiwgNTAsIDEyOCwgNjYsIDQ5LCAKKyAgICA1NiwgNDksIDEyOCwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjYsIDQ5LCA1NSwgNTcsIDEyOCwgNjYsIDQ5LCA1NSwgNTYsIAorICAgIDEyOCwgNjYsIDQ5LCA1NSwgNTUsIDEyOCwgNjYsIDQ5LCA1NSwgMTgyLCA2NiwgNDksIDU1LCA1MiwgMTI4LCA2NiwgNDksIAorICAgIDU1LCAxNzksIDY2LCA0OSwgNTUsIDUwLCAxMjgsIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY2LCA0OSwgNTUsIDQ4LCAxMjgsIAorICAgIDY2LCA0OSwgNTQsIDU3LCAxMjgsIDY2LCA0OSwgNTQsIDU2LCAxMjgsIDY2LCA0OSwgNTQsIDU1LCAxMjgsIDY2LCA0OSwgCisgICAgNTQsIDU0LCAxMjgsIDY2LCA0OSwgNTQsIDUzLCAxMjgsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIDY2LCA0OSwgNTQsIDE3OSwgCisgICAgNjYsIDQ5LCA1NCwgMTc4LCA2NiwgNDksIDU0LCA0OSwgMTI4LCA2NiwgNDksIDU0LCA0OCwgMTI4LCA2NiwgNDksIDUzLCAKKyAgICAxODUsIDY2LCA0OSwgNTMsIDU2LCAxMjgsIDY2LCA0OSwgNTMsIDU1LCAxMjgsIDY2LCA0OSwgNTMsIDE4MiwgNjYsIDQ5LCAKKyAgICA1MywgNTMsIDEyOCwgNjYsIDQ5LCA1MywgNTIsIDEyOCwgNjYsIDQ5LCA1MywgNTEsIDEyOCwgNjYsIDQ5LCA1MywgNTAsIAorICAgIDEyOCwgNjYsIDQ5LCA1MywgMTc3LCA2NiwgNDksIDUzLCA0OCwgMTI4LCA2NiwgNDksIDUyLCA1NCwgMTI4LCA2NiwgNDksIAorICAgIDUyLCAxODEsIDY2LCA0OSwgNTIsIDUwLCAxMjgsIDY2LCA0OSwgNTIsIDE3NywgNjYsIDQ5LCA1MiwgMTc2LCA2NiwgNDksIAorICAgIDUxLCAxODEsIDY2LCA0OSwgNTEsIDE3OSwgNjYsIDQ5LCA1MSwgNTAsIDEyOCwgNjYsIDQ5LCA1MSwgMTc3LCA2NiwgNDksIAorICAgIDUxLCAxNzYsIDY2LCA0OSwgNTAsIDE4NCwgNjYsIDQ5LCA1MCwgMTgzLCA2NiwgNDksIDUwLCAxODEsIDY2LCA0OSwgNTAsIAorICAgIDE3OSwgNjYsIDQ5LCA1MCwgMTc4LCA2NiwgNDksIDUwLCAxNzcsIDY2LCA0OSwgNTAsIDE3NiwgNjYsIDQ5LCA0OCwgNTcsIAorICAgIDIwNSwgNjYsIDQ5LCA0OCwgNTcsIDE5OCwgNjYsIDQ5LCA0OCwgNTYsIDIwNSwgNjYsIDQ5LCA0OCwgNTYsIDE5OCwgNjYsIAorICAgIDQ5LCA0OCwgNTUsIDIwNSwgNjYsIDQ5LCA0OCwgNTUsIDE5OCwgNjYsIDQ5LCA0OCwgNTQsIDIwNSwgNjYsIDQ5LCA0OCwgCisgICAgNTQsIDE5OCwgNjYsIDQ5LCA0OCwgNTMsIDIwNSwgNjYsIDQ5LCA0OCwgNTMsIDE5OCwgNjYsIDQ5LCA0OCwgMTgxLCA2NiwgCisgICAgNDksIDQ4LCAxODAsIDY2LCA0OSwgNDgsIDE3OCwgNjYsIDQ5LCA0OCwgMTc2LCA2NiwgNDgsIDU3LCAxNzcsIDY2LCA0OCwgCisgICAgNTcsIDE3NiwgNjYsIDQ4LCA1NiwgNTcsIDEyOCwgNjYsIDQ4LCA1NiwgMTgzLCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NiwgCisgICAgNDgsIDU2LCAxODEsIDY2LCA0OCwgNTYsIDUxLCAxMjgsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY2LCA0OCwgNTYsIDE3NywgCisgICAgNjYsIDQ4LCA1NiwgMTc2LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NiwgNDgsIDU1LCAxODQsIDY2LCA0OCwgNTUsIDE4MywgCisgICAgNjYsIDQ4LCA1NSwgMTgyLCA2NiwgNDgsIDU1LCAxODEsIDY2LCA0OCwgNTUsIDE4MCwgNjYsIDQ4LCA1NSwgMTc5LCA2NiwgCisgICAgNDgsIDU1LCAxNzgsIDY2LCA0OCwgNTUsIDE3NywgNjYsIDQ4LCA1NSwgMTc2LCA2NiwgNDgsIDU0LCAxODUsIDY2LCA0OCwgCisgICAgNTQsIDE4NCwgNjYsIDQ4LCA1NCwgMTgzLCA2NiwgNDgsIDU0LCAxODIsIDY2LCA0OCwgNTQsIDE4MSwgNjYsIDQ4LCA1NCwgCisgICAgNTIsIDEyOCwgNjYsIDQ4LCA1NCwgNTEsIDEyOCwgNjYsIDQ4LCA1NCwgMTc4LCA2NiwgNDgsIDU0LCAxNzcsIDY2LCA0OCwgCisgICAgNTQsIDE3NiwgNjYsIDQ4LCA1MywgMTg1LCA2NiwgNDgsIDUzLCAxODQsIDY2LCA0OCwgNTMsIDE4MywgNjYsIDQ4LCA1MywgCisgICAgNTQsIDEyOCwgNjYsIDQ4LCA1MywgMTgxLCA2NiwgNDgsIDUzLCAxODAsIDY2LCA0OCwgNTMsIDE3OSwgNjYsIDQ4LCA1MywgCisgICAgMTc4LCA2NiwgNDgsIDUzLCAxNzcsIDY2LCA0OCwgNTMsIDE3NiwgNjYsIDQ4LCA1MiwgNTcsIDEyOCwgNjYsIDQ4LCA1MiwgCisgICAgMTg0LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NiwgNDgsIDUyLCAxODIsIDY2LCA0OCwgNTIsIDE4MSwgNjYsIDQ4LCA1MiwgCisgICAgMTgwLCA2NiwgNDgsIDUyLCAxNzksIDY2LCA0OCwgNTIsIDE3OCwgNjYsIDQ4LCA1MiwgMTc3LCA2NiwgNDgsIDUyLCAxNzYsIAorICAgIDY2LCA0OCwgNTEsIDE4NSwgNjYsIDQ4LCA1MSwgMTg0LCA2NiwgNDgsIDUxLCAxODMsIDY2LCA0OCwgNTEsIDE4MiwgNjYsIAorICAgIDQ4LCA1MSwgNTIsIDEyOCwgNjYsIDQ4LCA1MSwgMTc5LCA2NiwgNDgsIDUxLCAxNzgsIDY2LCA0OCwgNTEsIDE3NywgNjYsIAorICAgIDQ4LCA1MSwgMTc2LCA2NiwgNDgsIDUwLCAxODUsIDY2LCA0OCwgNTAsIDE4NCwgNjYsIDQ4LCA1MCwgMTgzLCA2NiwgNDgsIAorICAgIDUwLCAxODIsIDY2LCA0OCwgNTAsIDE4MSwgNjYsIDQ4LCA1MCwgMTgwLCA2NiwgNDgsIDUwLCAxNzksIDY2LCA0OCwgNTAsIAorICAgIDUwLCAxMjgsIDY2LCA0OCwgNTAsIDE3NywgNjYsIDQ4LCA1MCwgMTc2LCA2NiwgNDgsIDQ5LCA1NywgMTI4LCA2NiwgNDgsIAorICAgIDQ5LCA1NiwgMTI4LCA2NiwgNDgsIDQ5LCAxODMsIDY2LCA0OCwgNDksIDE4MiwgNjYsIDQ4LCA0OSwgMTgxLCA2NiwgNDgsIAorICAgIDQ5LCAxODAsIDY2LCA0OCwgNDksIDE3OSwgNjYsIDQ4LCA0OSwgMTc4LCA2NiwgNDgsIDQ5LCAxNzcsIDY2LCA0OCwgNDksIAorICAgIDE3NiwgNjYsIDQ4LCA0OCwgNTcsIDEyOCwgNjYsIDQ4LCA0OCwgMTg1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NiwgNDgsIAorICAgIDQ4LCAxODQsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY2LCA0OCwgNDgsIDE4MywgNjYsIDQ4LCA0OCwgNTQsIDEyOCwgNjYsIAorICAgIDQ4LCA0OCwgMTgyLCA2NiwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjYsIDQ4LCA0OCwgCisgICAgMTgxLCA2NiwgNDgsIDQ4LCA1MiwgMTI4LCA2NiwgNDgsIDQ4LCAxODAsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY2LCA0OCwgCisgICAgNDgsIDE3OSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjYsIDQ4LCA0OCwgMTc4LCA2NiwgNDgsIDQ4LCA0OSwgMTI4LCA2NiwgCisgICAgNDgsIDQ4LCAxNzcsIDY1LCA5MCwgODUsIDEyOCwgNjUsIDg5LCA2NiwgMTI4LCA2NSwgODksIDY1LCA3MiwgMTI4LCA2NSwgCisgICAgODgsIDY5LCAxMjgsIDY1LCA4NywgNjksIDEyOCwgNjUsIDg3LCA2NSwgMjE3LCA2NSwgODYsIDc5LCA2NywgNjUsIDY4LCAKKyAgICA3OSwgMTI4LCA2NSwgODYsIDY5LCA4MywgODQsIDY1LCAyMDYsIDY1LCA4NiwgNjksIDgyLCA2NSwgNzEsIDE5NywgNjUsIAorICAgIDg2LCA2NSwgNzUsIDgyLCA2NSwgNzIsIDY1LCA4MywgNjUsIDc4LCA4OSwgNjUsIDEyOCwgNjUsIDg2LCA2NSwgNzEsIDgyLCAKKyAgICA2NSwgNzIsIDY1LCAxMjgsIDY1LCA4NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCA4NSwgODQsIDg1LCA3NywgNzgsIAorICAgIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA3OSwgNjYsIDczLCA3NiwgNjksIDEyOCwgNjUsIDg1LCA4NCwgNzksIDc3LCA2NSwgCisgICAgODQsIDY5LCAxOTYsIDY1LCA4NSwgODMsIDg0LCA4MiwgNjUsIDIwNCwgNjUsIDg1LCA4MiwgNzMsIDgwLCA3MywgNzEsIDc3LCAKKyAgICA2OSwgNzgsIDg0LCAxMjgsIDY1LCA4NSwgODIsIDY1LCA3NywgNjUsIDkwLCA2OCwgNjUsIDY1LCA3MiwgNjUsIDEyOCwgNjUsIAorICAgIDg1LCA4MiwgNjUsIDc3LCA2NSwgOTAsIDY4LCA2NSwgNjUsIDQ1LCA1MCwgMTI4LCA2NSwgODUsIDgyLCA2NSwgNzcsIDY1LCAKKyAgICA5MCwgNjgsIDY1LCA2NSwgMTI4LCA2NSwgODUsIDc4LCA3OCwgMTI4LCA2NSwgODUsIDcxLCA4NSwgODMsIDg0LCAxMjgsIAorICAgIDY1LCA4NSwgNzEsIDc3LCA2OSwgNzgsIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODUsIDY5LCAxMjgsIDY1LCA4NSwgCisgICAgNjYsIDY5LCA4MiwgNzEsIDczLCA3OCwgNjksIDEyOCwgNjUsIDg0LCA4NCwgNzMsIDE5NSwgNjUsIDg0LCA4NCwgNzIsIDY1LCAKKyAgICA2NywgNjUsIDc4LCAxMjgsIDY1LCA4NCwgODQsIDY5LCA3OCwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDIwMywgNjUsIDg0LCA4NCwgNjUsIDY3LCA3MiwgNjksIDE5NiwgNjUsIDg0LCA3OSwgMjA1LCA2NSwgODQsIDc4LCA2NSwgCisgICAgMjAwLCA2NSwgODQsIDc3LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCA4NCwgNzMsIDg5LCA2NSwgMTI4LCA2NSwgODQsIDcyLCAKKyAgICA3NiwgNjksIDg0LCA3MywgMTk1LCA2NSwgODQsIDcyLCA2NSwgODIsIDg2LCA2NSwgODYsIDY5LCA2OCwgNzMsIDE5NSwgNjUsIAorICAgIDg0LCA3MiwgNjUsIDgwLCA2NSwgODMsIDY3LCA2NSwgMjA2LCA2NSwgODQsIDcyLCA0NSwgODQsIDcyLCA2NSwgNzYsIDY1LCAKKyAgICA4NCwgNzIsIDY1LCAxMjgsIDY1LCA4MywgOTAsIDEyOCwgNjUsIDgzLCA4OSwgODUsIDgyLCAxOTMsIDY1LCA4MywgODksIAorICAgIDc3LCA4MCwgODQsIDc5LCA4NCwgNzMsIDY3LCA2NSwgNzYsIDc2LCAyMTcsIDY1LCA4MywgODQsIDgyLCA3OSwgNzgsIDc5LCAKKyAgICA3NywgNzMsIDY3LCA2NSwgMjA0LCA2NSwgODMsIDg0LCA4MiwgNzksIDc2LCA3OSwgNzEsIDczLCA2NywgNjUsIDIwNCwgNjUsIAorICAgIDgzLCA4NCwgNzksIDc4LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNzcsIDEyOCwgCisgICAgNjUsIDgzLCA4NCwgNjksIDgyLCA3MywgODMsIDc1LCAyMTEsIDY1LCA4MywgODQsIDY5LCA4MiwgNzMsIDgzLCA3NSwgMTI4LCAKKyAgICA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgMjAzLCA2NSwgODMsIDg0LCA2OSwgODIsIDczLCA4MywgNjcsIDg1LCA4MywgCisgICAgMTI4LCA2NSwgODMsIDgzLCA4OSwgODIsIDczLCA2NSwgMjA2LCA2NSwgODMsIDgzLCA2OSwgODIsIDg0LCA3MywgNzksIDc4LCAKKyAgICAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIDY1LCA4MywgODAsIDczLCA4MiwgNjUsIAorICAgIDg0LCA2OSwgMTk2LCA2NSwgODMsIDgwLCA2OSwgODIsIDEyOCwgNjUsIDgzLCA3MywgNjUsIDQ1LCA2NSwgODUsIDgzLCA4NCwgCisgICAgODIsIDY1LCA3NiwgNzMsIDY1LCAxMjgsIDY1LCA4MywgNzIsIDcxLCA2NSwgNjYsIDEyOCwgNjUsIDgzLCA3MiwgNjksIDgzLCAKKyAgICAxMjgsIDY1LCA4MywgNzIsIDU3LCAxMjgsIDY1LCA4MywgNzIsIDUxLCAxMjgsIDY1LCA4MywgNzIsIDE3OCwgNjUsIDgzLCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgODMsIDY3LCA2OSwgNzgsIDY4LCA3MywgNzgsIDE5OSwgNjUsIDgzLCA2NSwgNzYsIAorICAgIDUwLCAxMjgsIDY1LCA4MywgNDUsIDgzLCA2NSwgNzQsIDY4LCA2NSwgMTI4LCA2NSwgODIsIDg1LCA3MiwgODUsIDY1LCAKKyAgICAxMjgsIDY1LCA4MiwgODQsIDIxMSwgNjUsIDgyLCA4NCwgNzMsIDgzLCAyMTIsIDY1LCA4MiwgODQsIDczLCA2NywgODUsIAogICAgIDc2LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA4MiwgODQsIDY1LCA2NiwgMTk3LCA2NSwgODIsIDgzLCA2OSwgNzksIDgzLCAKICAgICAxMjgsIDY1LCA4MiwgODMsIDY5LCA3OSwgMjExLCA2NSwgODIsIDgzLCA2OSwgNzgsIDczLCA2NywgMTI4LCA2NSwgODIsIAogICAgIDgyLCA3OSwgODcsIDgzLCAxMjgsIDY1LCA4MiwgODIsIDc5LCA4NywgMjExLCA2NSwgODIsIDgyLCA3OSwgODcsIDcyLCA2OSwgCkBAIC00ODkyLDQyICs1NTI1LDQzIEBACiAgICAgNjUsIDQ1LCA4NSwgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCA3MywgMTI4LCA2NSwgODIsIDY1LCA2OSwgNjUsIDQ1LCAKICAgICA2OSwgNzksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjksIDEyOCwgNjUsIDgyLCA2NSwgNjksIDY1LCA0NSwgNjUsIAogICAgIDEyOCwgNjUsIDgyLCA2NSwgNjgsIDEyOCwgNjUsIDgyLCA2NSwgMTk2LCA2NSwgODIsIDY1LCA2NiwgNzMsIDY3LCA0NSwgCi0gICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCAKLSAgICA3NywgNjUsIDIwNiwgNjUsIDgyLCA0NSwgODIsIDY1LCA3MiwgNjksIDY5LCA3NywgMTI4LCA2NSwgODEsIDg1LCA2NSwgODIsIAotICAgIDczLCA4NSwgODMsIDEyOCwgNjUsIDgxLCA4NSwgNjUsIDcwLCA3OSwgODIsIDg0LCA3MywgODMsIDEyOCwgNjUsIDgxLCA4NSwgCi0gICAgMTkzLCA2NSwgODAsIDg1LCAyMDYsIDY1LCA4MCwgODIsIDczLCA3NiwgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDg4LCAKLSAgICA3MywgNzcsIDY1LCA4NCwgNjksIDc2LCAyMTcsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgCi0gICAgMTI4LCA2NSwgODAsIDgwLCA4MiwgNzksIDY1LCA2NywgNzIsIDY5LCAyMTEsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCAKLSAgICA3MiwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDgwLCA4MCwgNzYsIAotICAgIDczLCA2NywgNjUsIDg0LCA3MywgNzksIDIwNiwgNjUsIDgwLCA3OSwgODQsIDcyLCA2OSwgODMsIDEyOCwgNjUsIDgwLCA3OSwgCi0gICAgODQsIDcyLCA2OSwgNzcsIDY1LCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA4MCwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgNzksIDgzLCAxMjgsIDY1LCA4MCwgNzksIDgzLCA4NCwgODIsIDc5LCA3MCwgCi0gICAgNzksIDIxMSwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjAxLCA2NSwgODAsIDc5LCA2OCwgNjksIDg4LCAKLSAgICA3MywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgNjgsIDY5LCA4MiwgNzcsIDE5MywgNjUsIDgwLCA3NiwgNzksIDg1LCA3OCwgCi0gICAgMTI4LCA2NSwgODAsIDc2LCAyMDEsIDY1LCA4MCwgMjA0LCA2NSwgODAsIDczLCA3OCwgMTI4LCA2NSwgODAsIDY5LCA4MywgCi0gICAgMjA3LCA2NSwgODAsIDY3LCAxMjgsIDY1LCA4MCwgNjUsIDgyLCA4NCwgMTI4LCA2NSwgODAsIDY1LCA2NSwgODQsIDc5LCAKLSAgICAxMjgsIDY1LCA3OSwgODUsIDEyOCwgNjUsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIAotICAgIDg5LCA2NSwgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc4LCA4NSwgODMsIDg2LCA2NSwgCi0gICAgODIsIDE5MywgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDY1LCAxMjgsIDY1LCA3OCwgODUsIDY4LCA2NSwgODQsIDg0LCAKLSAgICAxOTMsIDY1LCA3OCwgODQsIDczLCA4MiwgNjksIDgzLCA4NCwgODIsIDczLCA2NywgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIAotICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCA0NSwgNTAsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDg5LCAKLSAgICAxMjgsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCAyMTcsIDY1LCA3OCwgODQsIDczLCA3NywgNzksIDc4LCA3MywgNjUsIAotICAgIDg0LCA2OSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzUsIDY5LCA3OCwgNzksIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgCi0gICAgNzUsIDY5LCA3OCwgNzksIDc1LCA4OSwgNzYsIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3MCwgNzksIAotICAgIDc4LCA3MywgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDQ1LCAKLSAgICA4MiwgNzksIDg0LCA2NSwgODQsIDY5LCAxOTYsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgCi0gICAgODMsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA2NywgNzYsIDc5LCA2NywgNzUsIDg3LCA3MywgODMsIDE5NywgNjUsIDc4LCAKLSAgICA4NCwgNjksIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNjksIDc4LCA3OCwgMTkzLCA2NSwgNzgsIDg0LCA2NSwgODIsIAotICAgIDcxLCA3OSwgNzcsIDg1LCA3NSwgNzIsIDY1LCAxMjgsIDY1LCA3OCwgODMsIDg1LCAyMTgsIDY1LCA3OCwgODMsIDcyLCA2OSwgCi0gICAgMTI4LCA2NSwgNzgsIDgwLCA2OSwgNjUsIDEyOCwgNjUsIDc4LCAyMDcsIDY1LCA3OCwgNzgsIDg1LCA3MywgODQsIDIxNywgCi0gICAgNjUsIDc4LCA3OCwgNzksIDg0LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgNzgsIDc4LCA2NSwgNjUsIDg1LCAxMjgsIDY1LCAKLSAgICA3OCwgNzUsIDcyLCAxMjgsIDY1LCA3OCwgNzQsIDczLCAxMjgsIDY1LCA3OCwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIAotICAgIDg1LCA3NiwgNjUsIDgyLCAxMjgsIDY1LCA3OCwgNzEsIDg1LCA3MywgODMsIDcyLCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA4MywgCi0gICAgODQsIDgyLCA3OSwgMjA1LCA2NSwgNzgsIDcxLCA4MiwgMjE3LCA2NSwgNzgsIDcxLCA3NiwgNjksIDY4LCAxMjgsIDY1LCAKLSAgICA3OCwgNzEsIDc2LCA2OSwgMTk2LCA2NSwgNzgsIDcxLCA3NSwgNzIsIDY1LCA3OCwgNzUsIDcyLCA4NSwgMTI4LCA2NSwgNzgsIAotICAgIDcxLCA2OSwgMjEwLCA2NSwgNzgsIDcxLCA2OSwgNzYsIDEyOCwgNjUsIDc4LCA3MSwgNjksIDY4LCAxMjgsIDY1LCA3OCwgCi0gICAgNjgsIDY1LCA4MCwgMTI4LCA2NSwgNzgsIDY3LCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3OCwgNjcsIDcyLCA3OSwgODIsIAotICAgIDEyOCwgNjUsIDc4LCA2NSwgODQsIDgyLCA3MywgNjcsIDcyLCA3MywgODMsIDc3LCA2NSwgMTI4LCA2NSwgNzgsIDY1LCA4MCwgCisgICAgNzMsIDc4LCA2OCwgNzMsIDE5NSwgNjUsIDgyLCA2NSwgNjYsIDczLCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgODUsIDY2LCAKKyAgICAxMjgsIDY1LCA4MiwgNDUsIDgyLCA2NSwgNzIsIDc3LCA2NSwgMjA2LCA2NSwgODIsIDQ1LCA4MiwgNjUsIDcyLCA2OSwgNjksIAorICAgIDc3LCAxMjgsIDY1LCA4MSwgODUsIDY1LCA4MiwgNzMsIDg1LCA4MywgMTI4LCA2NSwgODEsIDg1LCA2NSwgNzAsIDc5LCA4MiwgCisgICAgODQsIDczLCA4MywgMTI4LCA2NSwgODEsIDg1LCAxOTMsIDY1LCA4MCwgODUsIDIwNiwgNjUsIDgwLCA4MiwgNzMsIDc2LCAKKyAgICAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgODgsIDczLCA3NywgNjUsIDg0LCA2OSwgNzYsIDIxNywgNjUsIDgwLCA4MCwgODIsIAorICAgIDc5LCA4OCwgNzMsIDc3LCA2NSwgODQsIDY5LCAxMjgsIDY1LCA4MCwgODAsIDgyLCA3OSwgNjUsIDY3LCA3MiwgNjksIDIxMSwgCisgICAgNjUsIDgwLCA4MCwgODIsIDc5LCA2NSwgNjcsIDcyLCAxMjgsIDY1LCA4MCwgODAsIDc2LCA3MywgNjcsIDY1LCA4NCwgNzMsIAorICAgIDc5LCA3OCwgMTI4LCA2NSwgODAsIDgwLCA3NiwgNzMsIDY3LCA2NSwgODQsIDczLCA3OSwgMjA2LCA2NSwgODAsIDc5LCA4NCwgCisgICAgNzIsIDY5LCA4MywgMTI4LCA2NSwgODAsIDc5LCA4NCwgNzIsIDY5LCA3NywgNjUsIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCAKKyAgICA4MiwgNzksIDgwLCA3MiwgNjksIDEyOCwgNjUsIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgODMsIDEyOCwgNjUsIAorICAgIDgwLCA3OSwgODMsIDg0LCA4MiwgNzksIDcwLCA3OSwgMjExLCA2NSwgODAsIDc5LCA4MywgODQsIDgyLCA3OSwgNzAsIDc5LCAKKyAgICAyMDEsIDY1LCA4MCwgNzksIDY4LCA2OSwgODgsIDczLCA2NSwgMTI4LCA2NSwgODAsIDc5LCA2OCwgNjksIDgyLCA3NywgCisgICAgMTkzLCA2NSwgODAsIDc2LCA3OSwgODUsIDc4LCAxMjgsIDY1LCA4MCwgNzYsIDIwMSwgNjUsIDgwLCAyMDQsIDY1LCA4MCwgCisgICAgNzMsIDc4LCAxMjgsIDY1LCA4MCwgNjksIDgzLCAyMDcsIDY1LCA4MCwgNjcsIDEyOCwgNjUsIDgwLCA2NSwgODIsIDg0LCAKKyAgICAxMjgsIDY1LCA4MCwgNjUsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDc5LCA4NSwgMTI4LCA2NSwgNzksIDgyLCAxMjgsIDY1LCAKKyAgICA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgODksIDY1LCAxMjgsIDY1LCA3OCwgODUsIDgzLCA4NiwgNjUsIDgyLCA2NSwgCisgICAgMTI4LCA2NSwgNzgsIDg1LCA4MywgODYsIDY1LCA4MiwgMTkzLCA2NSwgNzgsIDg1LCA2OCwgNjUsIDg0LCA4NCwgNjUsIAorICAgIDEyOCwgNjUsIDc4LCA4NSwgNjgsIDY1LCA4NCwgODQsIDE5MywgNjUsIDc4LCA4NCwgNzMsIDgyLCA2OSwgODMsIDg0LCA4MiwgCisgICAgNzMsIDY3LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDQ1LCA1MCwgMTI4LCAKKyAgICA2NSwgNzgsIDg0LCA3MywgNzcsIDc5LCA3OCwgODksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDIxNywgNjUsIAorICAgIDc4LCA4NCwgNzMsIDc3LCA3OSwgNzgsIDczLCA2NSwgODQsIDY5LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCAKKyAgICA3OSwgNzcsIDY1LCAxMjgsIDY1LCA3OCwgODQsIDczLCA3NSwgNjksIDc4LCA3OSwgNzUsIDg5LCA3NiwgNzMsIDgzLCA3NywgCisgICAgNjUsIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDcwLCA3OSwgNzgsIDczLCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA3MywgNjcsIDc2LCAKKyAgICA3OSwgNjcsIDc1LCA4NywgNzMsIDgzLCA2OSwgNDUsIDgyLCA3OSwgODQsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDc4LCA4NCwgCisgICAgNzMsIDY3LCA3NiwgNzksIDY3LCA3NSwgODcsIDczLCA4MywgNjksIDEyOCwgNjUsIDc4LCA4NCwgNzMsIDY3LCA3NiwgNzksIAorICAgIDY3LCA3NSwgODcsIDczLCA4MywgMTk3LCA2NSwgNzgsIDg0LCA2OSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzgsIDg0LCA2OSwgCisgICAgNzgsIDc4LCAxOTMsIDY1LCA3OCwgODQsIDY1LCA4MiwgNzEsIDc5LCA3NywgODUsIDc1LCA3MiwgNjUsIDEyOCwgNjUsIDc4LCAKKyAgICA4MywgODUsIDIxOCwgNjUsIDc4LCA4MywgNzIsIDY5LCAxMjgsIDY1LCA3OCwgODAsIDY5LCA2NSwgMTI4LCA2NSwgNzgsIAorICAgIDIwNywgNjUsIDc4LCA3OCwgODUsIDczLCA4NCwgMjE3LCA2NSwgNzgsIDc4LCA3OSwgODQsIDY1LCA4NCwgNzMsIDc5LCAKKyAgICAyMDYsIDY1LCA3OCwgNzgsIDY1LCA2NSwgODUsIDEyOCwgNjUsIDc4LCA3NSwgNzIsIDEyOCwgNjUsIDc4LCA3NCwgNzMsIAorICAgIDEyOCwgNjUsIDc4LCA3MiwgODUsIDEyOCwgNjUsIDc4LCA3MSwgODUsIDc2LCA2NSwgODIsIDEyOCwgNjUsIDc4LCA3MSwgCisgICAgODUsIDczLCA4MywgNzIsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIDgzLCA4NCwgODIsIDc5LCAyMDUsIDY1LCA3OCwgNzEsIDgyLCAKKyAgICAyMTcsIDY1LCA3OCwgNzEsIDc2LCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA3MSwgNzYsIDY5LCAxOTYsIDY1LCA3OCwgNzEsIAorICAgIDc1LCA3MiwgNjUsIDc4LCA3NSwgNzIsIDg1LCAxMjgsIDY1LCA3OCwgNzEsIDY5LCAyMTAsIDY1LCA3OCwgNzEsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNzgsIDcxLCA2OSwgNjgsIDEyOCwgNjUsIDc4LCA2OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNjcsIDc5LCAKKyAgICA4MiwgNjUsIDEyOCwgNjUsIDc4LCA2NywgNzIsIDc5LCA4MiwgMTI4LCA2NSwgNzgsIDY1LCA4NCwgODIsIDczLCA2NywgNzIsIAorICAgIDczLCA4MywgNzcsIDY1LCAxMjgsIDY1LCA3OCwgNjUsIDgwLCAxMjgsIDY1LCA3OCwgNDUsIDc4LCA3MywgODMsIDcwLCAKICAgICAxMjgsIDY1LCA3NywgODAsIDgzLCAxMjgsIDY1LCA3NywgODAsIDcyLCA3OSwgODIsIDY1LCAxMjgsIDY1LCA3NywgODAsIAogICAgIDY5LCA4MiwgODMsIDY1LCA3OCwgNjgsIDEyOCwgNjUsIDc3LCA4MCwgNjksIDgyLCA4MywgNjUsIDc4LCAxOTYsIDY1LCA3NywgCiAgICAgNzksIDg1LCA3OCwgMjEyLCA2NSwgNzcsIDY5LCA4MiwgNzMsIDY3LCA2NSwgODMsIDEyOCwgNjUsIDc3LCA2OSwgODIsIDczLCAKQEAgLTQ5NDEsMTE1ODAgKzU1NzUsMTIwNjIgQEAKICAgICA2NSwgODQsIDE5NywgNjUsIDc2LCA4NCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNzIsIDY1LCAxMjgsIDY1LCA3NiwgODAsIAogICAgIDcyLCAxOTMsIDY1LCA3NiwgODAsIDY1LCA4MCwgODIsIDY1LCA3OCwgNjUsIDEyOCwgNjUsIDc2LCA4MCwgNjUsIDgwLCA4MiwgCiAgICAgNjUsIDY1LCA3OCwgMTkzLCA2NSwgNzYsIDgwLCA2NSwgMTI4LCA2NSwgNzYsIDc3LCA3OSwgODMsIDIxMiwgNjUsIDc2LCAKLSAgICA3NywgMTI4LCA2NSwgNzYsIDc2LCA3OSwgMTI4LCA2NSwgNzYsIDc2LCA3MywgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIAotICAgIDc2LCA3NiwgMjAxLCA2NSwgNzYsIDc2LCA2NSwgMjAwLCA2NSwgNzYsIDc1LCA2NSwgNzYsIDczLCA0NSwgNTAsIDEyOCwgCi0gICAgNjUsIDc2LCA3NSwgNjUsIDc2LCA3MywgMTI4LCA2NSwgNzYsIDczLCA3MSwgNzgsIDY5LCAxOTYsIDY1LCA3NiwgNzMsIDcwLCAKLSAgICA4NSwgMTI4LCA2NSwgNzYsIDczLCA2OSwgNzgsIDEyOCwgNjUsIDc2LCA3MywgNjksIDIwNiwgNjUsIDc2LCA3MSwgNzMsIAotICAgIDIxOCwgNjUsIDc2LCA3MCwgNjUsIDEyOCwgNjUsIDc2LCA2OSwgODUsIDIxMiwgNjUsIDc2LCA2OSwgODIsIDg0LCAxMjgsIAotICAgIDY1LCA3NiwgNjksIDgwLCA3MiwgMTI4LCA2NSwgNzYsIDY5LCA3NywgNjYsIDczLCA2NywgMTI4LCA2NSwgNzYsIDY5LCA3MCwgCi0gICAgMTI4LCA2NSwgNzYsIDY2LCA2NSwgNzgsIDczLCA2NSwgMjA2LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDY5LCAxMjgsIDY1LCAKLSAgICA3NiwgNjUsIDg5LCA3MiwgMTk3LCA2NSwgNzYsIDY1LCA4MiwgMjA1LCA2NSwgNzYsIDY1LCA4MCwgNzIsIDEyOCwgNjUsIAotICAgIDc2LCA0NSwgNzYsIDY1LCA3NSwgODUsIDc4LCA2NSwgMTI4LCA2NSwgNzUsIDg0LCA3MywgNjksIDgzLCA2OSwgNzYsIDgzLCAKLSAgICA3NSwgNjUsIDY2LCAxMjgsIDY1LCA3NSwgODMsIDY1LCAxMjgsIDY1LCA3NSwgNzIsIDc3LCA3MywgNzcsIDczLCAxOTUsIAotICAgIDY1LCA3NSwgNjYsIDY1LCAyMTAsIDY1LCA3NSwgNjUsIDgyLCA2NSwgMTI4LCA2NSwgNzUsIDY1LCA4MiwgMTkzLCA2NSwgCi0gICAgNzMsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNzMsIDg2LCA3MywgNzYsIDczLCAyMDMsIDY1LCA3MywgODQsIDc5LCAKLSAgICAyMDYsIDY1LCA3MywgODIsIDgwLCA3NiwgNjUsIDc4LCA2OSwgMTI4LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgCi0gICAgMTk3LCA2NSwgNzMsIDc4LCAyMTMsIDY1LCA3MywgNzgsIDc4LCAxMjgsIDY1LCA3MywgNzYsIDc3LCAxMjgsIDY1LCA3MywgCi0gICAgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDczLCA3MiwgODYsIDg1LCA4MywgMTI4LCA2NSwgNzIsIDgzLCA2OCwgNjUsIAotICAgIDEyOCwgNjUsIDcyLCA4MywgNjUsIDEyOCwgNjUsIDcyLCA3OSwgMjA1LCA2NSwgNzIsIDY1LCA3OCwgMTk5LCA2NSwgNzIsIAotICAgIDY1LCA3MSwgNzEsIDY1LCAyMTAsIDY1LCA3MiwgNjUsIDY4LCAxMjgsIDY1LCA3MSwgODUsIDc4LCA3MSwgMTI4LCA2NSwgCi0gICAgNzEsIDc5LCA3MSwgMjAxLCA2NSwgNzEsIDcxLCA4MiwgNjUsIDg2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDcxLCAKLSAgICA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA2OSwgMTk2LCA2NSwgNzEsIDY1LCA3MywgNzgsIDgzLCAyMTIsIDY1LCA3MSwgNjUsIAotICAgIDczLCA3OCwgMTI4LCA2NSwgNzAsIDg0LCA2OSwgMjEwLCA2NSwgNzAsIDgzLCA2NSwgNjUsIDgxLCAxMjgsIDY1LCA3MCwgCi0gICAgODIsIDczLCA2NywgNjUsIDIwNiwgNjUsIDcwLCA3OSwgODIsIDY5LCA3NywgNjksIDc4LCA4NCwgNzMsIDc5LCA3OCwgNjksIAotICAgIDY4LCAxMjgsIDY1LCA3MCwgNzEsIDcyLCA2NSwgNzgsIDIwMSwgNjUsIDcwLCA3MCwgODIsIDczLCA2NywgNjUsIDg0LCA3MywgCi0gICAgNzksIDIwNiwgNjUsIDcwLCA3MCwgNzMsIDIxNiwgNjUsIDY5LCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDY5LCAKLSAgICA4OSwgMTI4LCA2NSwgNjksIDgzLCA2NywgODUsIDc2LCA2NSwgODAsIDczLCA4NSwgODMsIDEyOCwgNjUsIDY5LCA4MywgNjcsIAotICAgIDEyOCwgNjUsIDY5LCA4MywgMTI4LCA2NSwgNjksIDgyLCA3MywgNjUsIDIwNCwgNjUsIDY5LCA4MiwgMTI4LCA2NSwgNjksIAotICAgIDc2LCA2NSwgNDUsIDgwLCA3MywgNzYsIDc2LCA2NSwgMTI4LCA2NSwgNjksIDc2LCAxMjgsIDY1LCA2OSwgNzUsIDEyOCwgCi0gICAgNjUsIDY5LCA3MSwgNjksIDY1LCAyMDYsIDY1LCA2OSwgNzEsIDEyOCwgNjUsIDY5LCA2OSwgODksIDY1LCA3OCwgNzgsIDY1LCAKLSAgICAxMjgsIDY1LCA2OSwgNjksIDEyOCwgNjUsIDY5LCA2OCwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIAotICAgIDY5LCA2OCwgMTI4LCA2NSwgNjksIDY2LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgODQsIDY1LCA3MSwgNjksIDEyOCwgCi0gICAgNjUsIDY4LCA4NiwgNjUsIDc4LCA2NywgNjksIDEyOCwgNjUsIDY4LCA3NywgNzMsIDgzLCA4MywgNzMsIDc5LCAyMDYsIDY1LCAKLSAgICA2OCwgNjksIDcxLCAxMjgsIDY1LCA2OCwgNjksIDE5OSwgNjUsIDY4LCA2OCwgODIsIDY5LCA4MywgODMsIDY5LCAxOTYsIAotICAgIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDIxMSwgNjUsIDY4LCA2OCwgNjUsIDc1LCAxMjgsIDY1LCA2OCwgNjUsIDIwMywgCi0gICAgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzcsIDY1LCA2NywgODIsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDg1LCA4NCwgNjksIAotICAgIDQ1LCA3MSwgODIsIDY1LCA4NiwgNjksIDQ1LCA2NSwgNjcsIDg1LCA4NCwgNjksIDEyOCwgNjUsIDY3LCA4NSwgODQsIDE5NywgCi0gICAgNjUsIDY3LCA4NCwgODUsIDY1LCA3NiwgNzYsIDIxNywgNjUsIDY3LCA4NCwgNzMsIDg2LCA2NSwgODQsIDE5NywgNjUsIDY3LCAKLSAgICA4MiwgNzksIDgwLCA3MiwgNzksIDc4LCA3MywgMTk1LCA2NSwgNjcsIDc1LCA3OCwgNzksIDg3LCA3NiwgNjksIDY4LCA3MSwgCi0gICAgNjksIDEyOCwgNjUsIDY3LCA2NywgODUsIDc3LCA4NSwgNzYsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCAKLSAgICA3OSwgODUsIDc4LCAyMTIsIDY1LCA2NywgNjcsIDc5LCA3NywgNzcsIDc5LCA2OCwgNjUsIDg0LCA3MywgNzksIDc4LCAxMjgsIAotICAgIDY1LCA2NywgNjcsIDY5LCA4MCwgODQsIDEyOCwgNjUsIDY3LCA2NywgNjksIDc4LCA4NCwgNDUsIDgzLCA4NCwgNjUsIDY3LCAKLSAgICA2NywgNjUsIDg0LCA3OSwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDg0LCAxMjgsIDY1LCA2NywgNjcsIDY5LCA3OCwgCi0gICAgMjEyLCA2NSwgNjcsIDY1LCA2OCwgNjksIDc3LCAyMTcsIDY1LCA2NiwgODksIDgzLCA3NywgNjUsIDIwNCwgNjUsIDY2LCAKLSAgICA4NSwgNzgsIDY4LCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNjYsIDc1LCA3MiwgNjUsIDgzLCA3MywgNjUsIDIwNiwgNjUsIAotICAgIDY2LCA2NiwgODIsIDY5LCA4NiwgNzMsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA2NiwgNjUsIDcwLCA3MywgNzYsIDczLCAKLSAgICAxMjgsIDY1LCA2NiwgMTc4LCA2NSwgNjYsIDQ5LCA1NywgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCAKLSAgICA2NiwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCA1NSwgNDksIDEyOCwgNjUsIDY2LCA0OSwgNTQsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDksIDUxLCA0OSwgNjYsIDEyOCwgNjUsIDY2LCA0OSwgNTEsIDQ5LCA2NSwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgCi0gICAgNTEsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDksIDUwLCA0OCwgMTI4LCA2NSwgNjYsIDQ5LCAKLSAgICA0OSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA1NCwgMTI4LCA2NSwgNjYsIAotICAgIDQ4LCA1NiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgCi0gICAgNjYsIDQ4LCA1NiwgNDgsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NiwgMTI4LCAKLSAgICA2NSwgNjYsIDQ4LCA1NSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1MiwgCi0gICAgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIAotICAgIDU0LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTQsIDQ4LCAxMjgsIDY1LCA2NiwgCi0gICAgNDgsIDUzLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUzLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDUyLCAxMjgsIAotICAgIDY1LCA2NiwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ4LCAKLSAgICAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIAotICAgIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTIsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgNDgsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNTEsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA1MSwgNDgsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTUsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgCi0gICAgNTEsIDc3LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDc3LCAxMjgsIDY1LCAKLSAgICA2NiwgNDgsIDUwLCA1MCwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OSwgNzcsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCA3MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY2LCA0OCwgCi0gICAgNTAsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNTQsIDEyOCwgNjUsIDY2LCAKLSAgICA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA0OSwgMTI4LCA2NSwgNjYsIDQ4LCA0OSwgNDgsIDEyOCwgNjUsIAotICAgIDY2LCA0OCwgNDgsIDU3LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NiwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTUsIDEyOCwgCi0gICAgNjUsIDY2LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTIsIAotICAgIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDY1LCA4OSwgNzMsIDc4LCAxMjgsIDY1LCA2NSwgODksIDY1LCA3OCwgNzgsIDY1LCAxMjgsIDY1LCAKLSAgICA2NSwgODksIDEyOCwgNjUsIDY1LCA4NywgMTI4LCA2NSwgNjUsIDc5LCAxMjgsIDY1LCA2NSwgNzQsIDEyOCwgNjUsIDY1LCAKLSAgICA2NiwgNjUsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjUsIDQ4LCA1MSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIAotICAgIDQ5LCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNTAsIDU2LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTQsIDEyOCwgNjUsIDY1LCAKLSAgICA0OCwgNTAsIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIAotICAgIDY1LCA0OCwgNTAsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA0OSwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDgsIDEyOCwgCi0gICAgNjUsIDY1LCA0OCwgNDksIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTUsIAotICAgIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgCi0gICAgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ5LCA1MCwgMTI4LCA2NSwgNjUsIDQ4LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NywgMTI4LCA2NSwgNjUsIAotICAgIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTUsIDY1LCAKLSAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTQsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIAotICAgIDUzLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MiwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTEsIDEyOCwgNjUsIDY1LCA0OCwgCi0gICAgNDgsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA1NSwgMTI4LCA2NSwgNTYsIDQ4LCAKLSAgICA1NCwgMTI4LCA2NSwgNTYsIDQ4LCA1MywgMTI4LCA2NSwgNTYsIDQ4LCA1MiwgMTI4LCA2NSwgNTYsIDQ4LCA1MSwgMTI4LCAKLSAgICA2NSwgNTYsIDQ4LCA1MCwgMTI4LCA2NSwgNTYsIDQ4LCA0OSwgMTI4LCA2NSwgNTYsIDQ4LCA0OCwgMTI4LCA2NSwgNTUsIAotICAgIDUxLCAxNzgsIDY1LCA1NSwgNTAsIDE4MiwgNjUsIDU1LCA0OSwgMTgzLCA2NSwgNTUsIDQ5LCAxODEsIDY1LCA1NSwgNDksIAotICAgIDE4MCwgNjUsIDU1LCA0OSwgMTc5LCA2NSwgNTUsIDQ5LCAxNzgsIDY1LCA1NSwgNDksIDE3NywgNjUsIDU1LCA0OSwgMTc2LCAKLSAgICA2NSwgNTUsIDQ4LCA1NywgNDUsIDE4MiwgNjUsIDU1LCA0OCwgNTcsIDQ1LCAxODAsIDY1LCA1NSwgNDgsIDU3LCA0NSwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OCwgNjUsIDU1LCA0OCwgMTg1LCA2NSwgNTUsIDQ4LCAxODQsIDY1LCA1NSwgCi0gICAgNDgsIDE4MywgNjUsIDU1LCA0OCwgMTgyLCA2NSwgNTUsIDQ4LCAxODEsIDY1LCA1NSwgNDgsIDE4MCwgNjUsIDU1LCA0OCwgCi0gICAgMTc5LCA2NSwgNTUsIDQ4LCAxNzgsIDY1LCA1NSwgNDgsIDE3NywgNjUsIDU0LCA1NCwgNTIsIDEyOCwgNjUsIDU0LCA1NCwgCi0gICAgNTEsIDEyOCwgNjUsIDU0LCA1NCwgNTAsIDEyOCwgNjUsIDU0LCA1NCwgNDksIDEyOCwgNjUsIDU0LCA1NCwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MywgNTcsIDEyOCwgNjUsIDU0LCA1MywgNTYsIDEyOCwgNjUsIDU0LCA1MywgNTUsIDEyOCwgNjUsIDU0LCAKLSAgICA1MywgNTQsIDEyOCwgNjUsIDU0LCA1MywgNTMsIDEyOCwgNjUsIDU0LCA1MywgNTIsIDEyOCwgNjUsIDU0LCA1MywgNTEsIAotICAgIDEyOCwgNjUsIDU0LCA1MywgNTAsIDEyOCwgNjUsIDU0LCA1MywgNDksIDEyOCwgNjUsIDU0LCA1MiwgNTcsIDEyOCwgNjUsIAotICAgIDU0LCA1MiwgNTYsIDEyOCwgNjUsIDU0LCA1MiwgNTQsIDEyOCwgNjUsIDU0LCA1MiwgNTMsIDEyOCwgNjUsIDU0LCA1MiwgCi0gICAgNTIsIDEyOCwgNjUsIDU0LCA1MiwgNTEsIDEyOCwgNjUsIDU0LCA1MiwgNTAsIDEyOCwgNjUsIDU0LCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDU0LCA1MSwgNTYsIDEyOCwgNjUsIDU0LCA1MSwgNTUsIDEyOCwgNjUsIDU0LCA1MSwgNTIsIDEyOCwgNjUsIDU0LCAKLSAgICA1MCwgNTcsIDEyOCwgNjUsIDU0LCA1MCwgNTYsIDEyOCwgNjUsIDU0LCA1MCwgNTUsIDEyOCwgNjUsIDU0LCA1MCwgNTQsIAotICAgIDEyOCwgNjUsIDU0LCA1MCwgNTIsIDEyOCwgNjUsIDU0LCA1MCwgNTEsIDEyOCwgNjUsIDU0LCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDU0LCA1MCwgNDksIDEyOCwgNjUsIDU0LCA1MCwgNDgsIDEyOCwgNjUsIDU0LCA0OSwgNTcsIDEyOCwgNjUsIDU0LCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDU0LCA0OSwgNTUsIDEyOCwgNjUsIDU0LCA0OSwgNTQsIDEyOCwgNjUsIDU0LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDU0LCA0OSwgNTIsIDEyOCwgNjUsIDU0LCA0OSwgNTEsIDEyOCwgNjUsIDU0LCA0OSwgNTAsIDEyOCwgNjUsIDU0LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDU0LCA0OSwgNDgsIDEyOCwgNjUsIDU0LCA0OCwgNTcsIDEyOCwgNjUsIDU0LCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDU0LCA0OCwgNTQsIDEyOCwgNjUsIDU0LCA0OCwgNTIsIDEyOCwgNjUsIDU0LCA0OCwgNTEsIDEyOCwgNjUsIAotICAgIDU0LCA0OCwgNTAsIDEyOCwgNjUsIDU0LCA0OCwgNDksIDEyOCwgNjUsIDU0LCA0OCwgNDgsIDEyOCwgNjUsIDUzLCA1NywgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NywgNTQsIDEyOCwgNjUsIDUzLCA1NywgNTMsIDEyOCwgNjUsIDUzLCA1NywgNTIsIDEyOCwgCi0gICAgNjUsIDUzLCA1NywgNTAsIDEyOCwgNjUsIDUzLCA1NywgNDksIDEyOCwgNjUsIDUzLCA1NiwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1NiwgNTYsIDEyOCwgNjUsIDUzLCA1NiwgNTUsIDEyOCwgNjUsIDUzLCA1NiwgNTQsIDEyOCwgNjUsIDUzLCA1NiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1NiwgNTIsIDEyOCwgNjUsIDUzLCA1NiwgNTEsIDEyOCwgNjUsIDUzLCA1NiwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1NiwgNDksIDEyOCwgNjUsIDUzLCA1NiwgNDgsIDEyOCwgNjUsIDUzLCA1NSwgNTcsIDEyOCwgNjUsIDUzLCA1NSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA1NSwgNTUsIDEyOCwgNjUsIDUzLCA1NSwgNTQsIDEyOCwgNjUsIDUzLCA1NSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA1NSwgNTIsIDEyOCwgNjUsIDUzLCA1NSwgNTEsIDEyOCwgNjUsIDUzLCA1NSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA1NSwgNDksIDEyOCwgNjUsIDUzLCA1NSwgNDgsIDEyOCwgNjUsIDUzLCA1NCwgNTcsIDEyOCwgNjUsIDUzLCA1NCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA1NCwgNTQsIDEyOCwgNjUsIDUzLCA1NCwgNTMsIDEyOCwgNjUsIDUzLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUzLCA1NCwgNTEsIDEyOCwgNjUsIDUzLCA1MywgNTcsIDEyOCwgNjUsIDUzLCA1MywgNTUsIDEyOCwgNjUsIDUzLCA1MywgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MywgNTMsIDEyOCwgNjUsIDUzLCA1MywgNTIsIDEyOCwgNjUsIDUzLCA1MywgNTEsIDEyOCwgCi0gICAgNjUsIDUzLCA1MywgNTAsIDEyOCwgNjUsIDUzLCA1MywgNDksIDEyOCwgNjUsIDUzLCA1MywgNDgsIDEyOCwgNjUsIDUzLCAKLSAgICA1MiwgNTcsIDEyOCwgNjUsIDUzLCA1MiwgNTYsIDEyOCwgNjUsIDUzLCA1MiwgNTUsIDEyOCwgNjUsIDUzLCA1MiwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MiwgNTAsIDEyOCwgNjUsIDUzLCA1MiwgNDksIDEyOCwgNjUsIDUzLCA1MiwgNDgsIDEyOCwgNjUsIAotICAgIDUzLCA1MSwgNTcsIDEyOCwgNjUsIDUzLCA1MSwgNTYsIDEyOCwgNjUsIDUzLCA1MSwgNTUsIDEyOCwgNjUsIDUzLCA1MSwgCi0gICAgNTQsIDEyOCwgNjUsIDUzLCA1MSwgNTMsIDEyOCwgNjUsIDUzLCA1MSwgNTIsIDEyOCwgNjUsIDUzLCA1MSwgNTAsIDEyOCwgCi0gICAgNjUsIDUzLCA1MSwgNDksIDEyOCwgNjUsIDUzLCA1MSwgNDgsIDEyOCwgNjUsIDUzLCA1MCwgNTcsIDEyOCwgNjUsIDUzLCAKLSAgICA1MCwgNTYsIDEyOCwgNjUsIDUzLCA1MCwgNTUsIDEyOCwgNjUsIDUzLCA1MCwgNTQsIDEyOCwgNjUsIDUzLCA1MCwgNTMsIAotICAgIDEyOCwgNjUsIDUzLCA1MCwgNTIsIDEyOCwgNjUsIDUzLCA1MCwgNTEsIDEyOCwgNjUsIDUzLCA1MCwgNTAsIDEyOCwgNjUsIAotICAgIDUzLCA1MCwgNDksIDEyOCwgNjUsIDUzLCA1MCwgNDgsIDEyOCwgNjUsIDUzLCA0OSwgNTcsIDEyOCwgNjUsIDUzLCA0OSwgCi0gICAgNTYsIDEyOCwgNjUsIDUzLCA0OSwgNTUsIDEyOCwgNjUsIDUzLCA0OSwgNTQsIDEyOCwgNjUsIDUzLCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDUzLCA0OSwgNTIsIDEyOCwgNjUsIDUzLCA0OSwgNTEsIDEyOCwgNjUsIDUzLCA0OSwgNTAsIDEyOCwgNjUsIDUzLCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDUzLCA0OSwgNDgsIDEyOCwgNjUsIDUzLCA0OCwgNTcsIDEyOCwgNjUsIDUzLCA0OCwgNTYsIAotICAgIDEyOCwgNjUsIDUzLCA0OCwgNTUsIDEyOCwgNjUsIDUzLCA0OCwgNTQsIDEyOCwgNjUsIDUzLCA0OCwgNTMsIDEyOCwgNjUsIAotICAgIDUzLCA0OCwgNTIsIDEyOCwgNjUsIDUzLCA0OCwgNTEsIDEyOCwgNjUsIDUzLCA0OCwgNTAsIDEyOCwgNjUsIDUzLCA0OCwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NywgNTUsIDEyOCwgNjUsIDUyLCA1NywgNTQsIDEyOCwgNjUsIDUyLCA1NywgNTMsIDEyOCwgCi0gICAgNjUsIDUyLCA1NywgNTIsIDEyOCwgNjUsIDUyLCA1NywgNTEsIDEyOCwgNjUsIDUyLCA1NywgNTAsIDEyOCwgNjUsIDUyLCAKLSAgICA1NywgNDksIDEyOCwgNjUsIDUyLCA1NywgNDgsIDEyOCwgNjUsIDUyLCA1NiwgNTcsIDEyOCwgNjUsIDUyLCA1NiwgNTYsIAotICAgIDEyOCwgNjUsIDUyLCA1NiwgNTUsIDEyOCwgNjUsIDUyLCA1NiwgNTQsIDEyOCwgNjUsIDUyLCA1NiwgNTMsIDEyOCwgNjUsIAotICAgIDUyLCA1NiwgNTIsIDEyOCwgNjUsIDUyLCA1NiwgNTEsIDEyOCwgNjUsIDUyLCA1NiwgNTAsIDEyOCwgNjUsIDUyLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUyLCA1NiwgNDgsIDEyOCwgNjUsIDUyLCA1NSwgNTcsIDEyOCwgNjUsIDUyLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUyLCA1NSwgNTUsIDEyOCwgNjUsIDUyLCA1NSwgNTQsIDEyOCwgNjUsIDUyLCA1NSwgNTMsIDEyOCwgNjUsIDUyLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUyLCA1NSwgNTEsIDEyOCwgNjUsIDUyLCA1NSwgNTAsIDEyOCwgNjUsIDUyLCA1NSwgNDksIAotICAgIDEyOCwgNjUsIDUyLCA1NSwgNDgsIDEyOCwgNjUsIDUyLCA1NCwgNTcsIDEyOCwgNjUsIDUyLCA1NCwgNTYsIDEyOCwgNjUsIAotICAgIDUyLCA1NCwgNTUsIDEyOCwgNjUsIDUyLCA1NCwgNTQsIDEyOCwgNjUsIDUyLCA1NCwgNTMsIDEyOCwgNjUsIDUyLCA1NCwgCi0gICAgNTIsIDEyOCwgNjUsIDUyLCA1NCwgNTEsIDEyOCwgNjUsIDUyLCA1NCwgNTAsIDEyOCwgNjUsIDUyLCA1NCwgNDksIDEyOCwgCi0gICAgNjUsIDUyLCA1NCwgNDgsIDEyOCwgNjUsIDUyLCA1MywgNTcsIDEyOCwgNjUsIDUyLCA1MywgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA1MywgNTUsIDY1LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCAxMjgsIDY1LCA1MiwgNTMsIDU0LCAxMjgsIDY1LCA1MiwgNTMsIAotICAgIDUzLCAxMjgsIDY1LCA1MiwgNTMsIDUyLCAxMjgsIDY1LCA1MiwgNTMsIDUxLCAxMjgsIDY1LCA1MiwgNTMsIDUwLCAxMjgsIAotICAgIDY1LCA1MiwgNTMsIDQ5LCAxMjgsIDY1LCA1MiwgNTMsIDQ4LCA2NSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgMTI4LCA2NSwgCi0gICAgNTIsIDUyLCA1NywgMTI4LCA2NSwgNTIsIDUyLCA1NiwgMTI4LCA2NSwgNTIsIDUyLCA1NSwgMTI4LCA2NSwgNTIsIDUyLCAKLSAgICA1NCwgMTI4LCA2NSwgNTIsIDUyLCA1MywgMTI4LCA2NSwgNTIsIDUyLCA1MiwgMTI4LCA2NSwgNTIsIDUyLCA1MSwgMTI4LCAKLSAgICA2NSwgNTIsIDUyLCA1MCwgMTI4LCA2NSwgNTIsIDUyLCA0OSwgMTI4LCA2NSwgNTIsIDUyLCA0OCwgMTI4LCA2NSwgNTIsIAotICAgIDUxLCA1NywgMTI4LCA2NSwgNTIsIDUxLCA1NiwgMTI4LCA2NSwgNTIsIDUxLCA1NSwgMTI4LCA2NSwgNTIsIDUxLCA1NCwgCi0gICAgMTI4LCA2NSwgNTIsIDUxLCA1MywgMTI4LCA2NSwgNTIsIDUxLCA1MiwgMTI4LCA2NSwgNTIsIDUxLCA1MSwgMTI4LCA2NSwgCi0gICAgNTIsIDUxLCA1MCwgMTI4LCA2NSwgNTIsIDUxLCA0OSwgMTI4LCA2NSwgNTIsIDUxLCA0OCwgMTI4LCA2NSwgNTIsIDUwLCAKLSAgICA1NywgMTI4LCA2NSwgNTIsIDUwLCA1NiwgMTI4LCA2NSwgNTIsIDUwLCA1NSwgMTI4LCA2NSwgNTIsIDUwLCA1NCwgMTI4LCAKLSAgICA2NSwgNTIsIDUwLCA1MywgMTI4LCA2NSwgNTIsIDUwLCA1MiwgMTI4LCA2NSwgNTIsIDUwLCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDUwLCA1MCwgMTI4LCA2NSwgNTIsIDUwLCA0OSwgMTI4LCA2NSwgNTIsIDUwLCA0OCwgMTI4LCA2NSwgNTIsIDQ5LCA1NywgCi0gICAgMTI4LCA2NSwgNTIsIDQ5LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTYsIDEyOCwgNjUsIDUyLCAKLSAgICA0OSwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU1LCAxMjgsIDY1LCA1MiwgNDksIDU0LCA0NSwgODYsIAotICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgMTI4LCA2NSwgNTIsIDQ5LCA1MywgNDUsIDg2LCA2NSwgODMsIDEyOCwgCi0gICAgNjUsIDUyLCA0OSwgNTMsIDEyOCwgNjUsIDUyLCA0OSwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUyLCAKLSAgICAxMjgsIDY1LCA1MiwgNDksIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MSwgMTI4LCA2NSwgNTIsIAotICAgIDQ5LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDEyOCwgNjUsIDUyLCA0OSwgNDksIDQ1LCA4NiwgCi0gICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCAxMjgsIDY1LCA1MiwgNDksIDQ4LCAxOTMsIDY1LCA1MiwgNDksIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCAxNzYsIDY1LCA1MiwgNDgsIDU3LCA0NSwgODYsIDY1LCA4MywgCi0gICAgMTI4LCA2NSwgNTIsIDQ4LCA1NywgMTI4LCA2NSwgNTIsIDQ4LCA1NiwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCAKLSAgICA0OCwgNTYsIDEyOCwgNjUsIDUyLCA0OCwgNTUsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU1LCAxMjgsIAotICAgIDY1LCA1MiwgNDgsIDU0LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgMTI4LCA2NSwgNTIsIDQ4LCA1MywgCi0gICAgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDEyOCwgNjUsIDUyLCA0OCwgNTIsIDQ1LCA4NiwgNjUsIDgzLCAKLSAgICAxMjgsIDY1LCA1MiwgNDgsIDUyLCAxMjgsIDY1LCA1MiwgNDgsIDUxLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAotICAgIDQ4LCA1MSwgMTI4LCA2NSwgNTIsIDQ4LCA1MCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTAsIDEyOCwgCi0gICAgNjUsIDUyLCA0OCwgNDksIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAxMjgsIDY1LCA1MiwgNDgsIDQ4LCAKLSAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgMTI4LCA2NSwgNTEsIDU3LCA1NywgMTI4LCA2NSwgNTEsIAotICAgIDU3LCA1NiwgMTI4LCA2NSwgNTEsIDU3LCA1NSwgMTI4LCA2NSwgNTEsIDU3LCA1NCwgMTI4LCA2NSwgNTEsIDU3LCA1MywgCi0gICAgMTI4LCA2NSwgNTEsIDU3LCA1MiwgMTI4LCA2NSwgNTEsIDU3LCAxNzksIDY1LCA1MSwgNTcsIDUwLCAxMjgsIDY1LCA1MSwgCi0gICAgNTcsIDQ5LCAxMjgsIDY1LCA1MSwgNTcsIDQ4LCAxMjgsIDY1LCA1MSwgNTYsIDU3LCAxMjgsIDY1LCA1MSwgNTYsIDU2LCAKLSAgICAxMjgsIDY1LCA1MSwgNTYsIDU1LCAxMjgsIDY1LCA1MSwgNTYsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgMTI4LCAKLSAgICA2NSwgNTEsIDU2LCA1MywgMTI4LCA2NSwgNTEsIDU2LCA1MiwgMTI4LCA2NSwgNTEsIDU2LCA1MSwgNjUsIDEyOCwgNjUsIAotICAgIDUxLCA1NiwgMTc5LCA2NSwgNTEsIDU2LCA1MCwgMTI4LCA2NSwgNTEsIDU2LCA0OSwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgCi0gICAgNDksIDEyOCwgNjUsIDUxLCA1NiwgNDgsIDEyOCwgNjUsIDUxLCA1NSwgNTcsIDEyOCwgNjUsIDUxLCA1NSwgNTYsIDEyOCwgCi0gICAgNjUsIDUxLCA1NSwgNTUsIDEyOCwgNjUsIDUxLCA1NSwgNTQsIDEyOCwgNjUsIDUxLCA1NSwgNTMsIDEyOCwgNjUsIDUxLCAKLSAgICA1NSwgNTIsIDEyOCwgNjUsIDUxLCA1NSwgNTEsIDEyOCwgNjUsIDUxLCA1NSwgNTAsIDEyOCwgNjUsIDUxLCA1NSwgNDksIAotICAgIDY1LCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCAxMjgsIDY1LCA1MSwgNTUsIDQ4LCAxMjgsIDY1LCA1MSwgNTQsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTQsIDU2LCA2NSwgMTI4LCA2NSwgNTEsIDU0LCA1NiwgMTI4LCA2NSwgNTEsIDU0LCA1NSwgMTI4LCA2NSwgCi0gICAgNTEsIDU0LCA1NCwgMTI4LCA2NSwgNTEsIDU0LCA1MywgMTI4LCA2NSwgNTEsIDU0LCA1MiwgNjUsIDEyOCwgNjUsIDUxLCAKLSAgICA1NCwgNTIsIDEyOCwgNjUsIDUxLCA1NCwgNTEsIDEyOCwgNjUsIDUxLCA1NCwgNTAsIDEyOCwgNjUsIDUxLCA1NCwgNDksIAotICAgIDEyOCwgNjUsIDUxLCA1NCwgNDgsIDEyOCwgNjUsIDUxLCA1MywgNTcsIDY1LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCAxMjgsIAotICAgIDY1LCA1MSwgNTMsIDU2LCAxMjgsIDY1LCA1MSwgNTMsIDU1LCAxMjgsIDY1LCA1MSwgNTMsIDU0LCAxMjgsIDY1LCA1MSwgCi0gICAgNTMsIDUzLCAxMjgsIDY1LCA1MSwgNTMsIDUyLCAxMjgsIDY1LCA1MSwgNTMsIDUxLCAxMjgsIDY1LCA1MSwgNTMsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTMsIDQ5LCAxMjgsIDY1LCA1MSwgNTMsIDQ4LCAxMjgsIDY1LCA1MSwgNTIsIDU3LCAxMjgsIDY1LCAKLSAgICA1MSwgNTIsIDU2LCAxMjgsIDY1LCA1MSwgNTIsIDU1LCAxMjgsIDY1LCA1MSwgNTIsIDU0LCAxMjgsIDY1LCA1MSwgNTIsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTIsIDUyLCAxMjgsIDY1LCA1MSwgNTIsIDUxLCAxMjgsIDY1LCA1MSwgNTIsIDUwLCAxMjgsIAotICAgIDY1LCA1MSwgNTIsIDQ5LCAxMjgsIDY1LCA1MSwgNTIsIDQ4LCAxMjgsIDY1LCA1MSwgNTEsIDU3LCAxMjgsIDY1LCA1MSwgCi0gICAgNTEsIDU2LCAxMjgsIDY1LCA1MSwgNTEsIDU1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCA2NywgMTI4LCA2NSwgNTEsIDUxLCAKLSAgICA1NCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDU0LCAxMjgsIDY1LCA1MSwgNTEsIAotICAgIDUzLCAxMjgsIDY1LCA1MSwgNTEsIDUyLCAxMjgsIDY1LCA1MSwgNTEsIDUxLCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NywgCi0gICAgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjYsIDEyOCwgNjUsIDUxLCA1MSwgNTAsIDY1LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCAKLSAgICAxMjgsIDY1LCA1MSwgNTEsIDQ5LCAxMjgsIDY1LCA1MSwgNTEsIDQ4LCAxMjgsIDY1LCA1MSwgNTAsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDUwLCA1NywgMTI4LCA2NSwgNTEsIDUwLCA1NiwgMTI4LCA2NSwgNTEsIDUwLCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDUwLCA1NCwgMTI4LCA2NSwgNTEsIDUwLCA1MywgMTI4LCA2NSwgNTEsIDUwLCA1MiwgMTI4LCA2NSwgNTEsIDUwLCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDUwLCA1MCwgMTI4LCA2NSwgNTEsIDUwLCA0OSwgMTI4LCA2NSwgNTEsIDUwLCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ5LCA1NywgMTI4LCA2NSwgNTEsIDQ5LCA1NiwgMTI4LCA2NSwgNTEsIDQ5LCA1NSwgMTI4LCA2NSwgNTEsIDQ5LCAKLSAgICA1NCwgMTI4LCA2NSwgNTEsIDQ5LCA1MywgMTI4LCA2NSwgNTEsIDQ5LCA1MiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjcsIAotICAgIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY2LCAxMjgsIDY1LCA1MSwgNDksIDUxLCA2NSwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ5LCA1MCwgMTI4LCA2NSwgNTEsIDQ5LCA0OSwgMTI4LCA2NSwgNTEsIDQ5LCA0OCwgMTI4LCA2NSwgCi0gICAgNTEsIDQ4LCA1NywgNjcsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY2LCAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NSwgMTI4LCAKLSAgICA2NSwgNTEsIDQ4LCA1NywgMTI4LCA2NSwgNTEsIDQ4LCA1NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NSwgMTI4LCA2NSwgNTEsIAotICAgIDQ4LCA1NCwgMTI4LCA2NSwgNTEsIDQ4LCA1MywgMTI4LCA2NSwgNTEsIDQ4LCA1MiwgMTI4LCA2NSwgNTEsIDQ4LCA1MSwgCi0gICAgMTI4LCA2NSwgNTEsIDQ4LCA1MCwgMTI4LCA2NSwgNTEsIDQ4LCA0OSwgMTI4LCA2NSwgNTEsIDQ4LCA0OCwgMTI4LCA2NSwgCi0gICAgNTAsIDU3LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDEyOCwgNjUsIDUwLCA1NywgNTYsIDEyOCwgNjUsIDUwLCAKLSAgICA1NywgNTUsIDEyOCwgNjUsIDUwLCA1NywgNTQsIDEyOCwgNjUsIDUwLCA1NywgNTMsIDEyOCwgNjUsIDUwLCA1NywgNTIsIAotICAgIDY1LCAxMjgsIDY1LCA1MCwgNTcsIDUyLCAxMjgsIDY1LCA1MCwgNTcsIDUxLCAxMjgsIDY1LCA1MCwgNTcsIDUwLCAxMjgsIAotICAgIDY1LCA1MCwgNTcsIDQ5LCAxMjgsIDY1LCA1MCwgNTcsIDQ4LCAxMjgsIDY1LCA1MCwgNTYsIDU3LCA2NSwgMTI4LCA2NSwgCi0gICAgNTAsIDU2LCA1NywgMTI4LCA2NSwgNTAsIDU2LCA1NiwgMTI4LCA2NSwgNTAsIDU2LCA1NSwgMTI4LCA2NSwgNTAsIDU2LCAKLSAgICA1NCwgMTI4LCA2NSwgNTAsIDU2LCA1MywgMTI4LCA2NSwgNTAsIDU2LCA1MiwgMTI4LCA2NSwgNTAsIDU2LCA1MSwgMTI4LCAKLSAgICA2NSwgNTAsIDU2LCA1MCwgMTI4LCA2NSwgNTAsIDU2LCA0OSwgMTI4LCA2NSwgNTAsIDU2LCA0OCwgMTI4LCA2NSwgNTAsIAotICAgIDU1LCA1NywgMTI4LCA2NSwgNTAsIDU1LCA1NiwgMTI4LCA2NSwgNTAsIDU1LCA1NSwgMTI4LCA2NSwgNTAsIDU1LCA1NCwgCi0gICAgMTI4LCA2NSwgNTAsIDU1LCA1MywgMTI4LCA2NSwgNTAsIDU1LCA1MiwgMTI4LCA2NSwgNTAsIDU1LCA1MSwgMTI4LCA2NSwgCi0gICAgNTAsIDU1LCA1MCwgMTI4LCA2NSwgNTAsIDU1LCA0OSwgMTI4LCA2NSwgNTAsIDU1LCA0OCwgMTI4LCA2NSwgNTAsIDU0LCAKLSAgICA1NywgMTI4LCA2NSwgNTAsIDU0LCA1NiwgMTI4LCA2NSwgNTAsIDU0LCA1NSwgNjUsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIAotICAgIDEyOCwgNjUsIDUwLCA1NCwgNTQsIDEyOCwgNjUsIDUwLCA1NCwgNTMsIDEyOCwgNjUsIDUwLCA1NCwgNTIsIDEyOCwgNjUsIAotICAgIDUwLCA1NCwgNTEsIDEyOCwgNjUsIDUwLCA1NCwgNTAsIDEyOCwgNjUsIDUwLCA1NCwgNDksIDEyOCwgNjUsIDUwLCA1NCwgCi0gICAgNDgsIDEyOCwgNjUsIDUwLCA1MywgNTcsIDEyOCwgNjUsIDUwLCA1MywgNTYsIDEyOCwgNjUsIDUwLCA1MywgNTUsIDEyOCwgCi0gICAgNjUsIDUwLCA1MywgNTQsIDEyOCwgNjUsIDUwLCA1MywgNTMsIDEyOCwgNjUsIDUwLCA1MywgNTIsIDEyOCwgNjUsIDUwLCAKLSAgICA1MywgNTEsIDEyOCwgNjUsIDUwLCA1MywgNTAsIDEyOCwgNjUsIDUwLCA1MywgNDksIDEyOCwgNjUsIDUwLCA1MywgNDgsIAotICAgIDEyOCwgNjUsIDUwLCA1MiwgNTcsIDEyOCwgNjUsIDUwLCA1MiwgNTYsIDEyOCwgNjUsIDUwLCA1MiwgNTUsIDEyOCwgNjUsIAotICAgIDUwLCA1MiwgNTQsIDEyOCwgNjUsIDUwLCA1MiwgNTMsIDEyOCwgNjUsIDUwLCA1MiwgNTIsIDEyOCwgNjUsIDUwLCA1MiwgCi0gICAgNTEsIDEyOCwgNjUsIDUwLCA1MiwgNTAsIDEyOCwgNjUsIDUwLCA1MiwgNDksIDEyOCwgNjUsIDUwLCA1MiwgNDgsIDEyOCwgCi0gICAgNjUsIDUwLCA1MSwgNTcsIDEyOCwgNjUsIDUwLCA1MSwgNTYsIDEyOCwgNjUsIDUwLCA1MSwgNTUsIDEyOCwgNjUsIDUwLCAKLSAgICA1MSwgNTQsIDEyOCwgNjUsIDUwLCA1MSwgNTMsIDEyOCwgNjUsIDUwLCA1MSwgNTIsIDEyOCwgNjUsIDUwLCA1MSwgNTEsIAotICAgIDEyOCwgNjUsIDUwLCA1MSwgNTAsIDEyOCwgNjUsIDUwLCA1MSwgNDksIDEyOCwgNjUsIDUwLCA1MSwgNDgsIDEyOCwgNjUsIAotICAgIDUwLCA1MCwgNTcsIDEyOCwgNjUsIDUwLCA1MCwgNTYsIDEyOCwgNjUsIDUwLCA1MCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgCi0gICAgNTAsIDU1LCAxMjgsIDY1LCA1MCwgNTAsIDU0LCAxMjgsIDY1LCA1MCwgNTAsIDUzLCAxMjgsIDY1LCA1MCwgNTAsIDUyLCAKLSAgICAxMjgsIDY1LCA1MCwgNTAsIDUxLCAxMjgsIDY1LCA1MCwgNTAsIDUwLCAxMjgsIDY1LCA1MCwgNTAsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNTAsIDQ4LCAxMjgsIDY1LCA1MCwgNDksIDU3LCAxMjgsIDY1LCA1MCwgNDksIDU2LCAxMjgsIDY1LCA1MCwgNDksIAotICAgIDU1LCAxMjgsIDY1LCA1MCwgNDksIDU0LCA2NSwgMTI4LCA2NSwgNTAsIDQ5LCA1NCwgMTI4LCA2NSwgNTAsIDQ5LCA1MywgCi0gICAgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDEyOCwgNjUsIDUwLCA0OSwgNTIsIDEyOCwgNjUsIDUwLCA0OSwgNTEsIDEyOCwgCi0gICAgNjUsIDUwLCA0OSwgNTAsIDEyOCwgNjUsIDUwLCA0OSwgNDksIDEyOCwgNjUsIDUwLCA0OSwgNDgsIDEyOCwgNjUsIDUwLCAKLSAgICA0OCwgNTcsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCAxMjgsIDY1LCA1MCwgNDgsIDU2LCAxMjgsIDY1LCA1MCwgNDgsIAotICAgIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgMTI4LCA2NSwgNTAsIDQ4LCA1NCwgMTI4LCA2NSwgNTAsIDQ4LCA1MywgCi0gICAgMTI4LCA2NSwgNTAsIDQ4LCA1MiwgMTI4LCA2NSwgNTAsIDQ4LCA1MSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgNjYsIDEyOCwgCi0gICAgNjUsIDUwLCA0OCwgNTAsIDY1LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAxMjgsIDY1LCA1MCwgNDgsIDQ5LCAxMjgsIDY1LCAKLSAgICA1MCwgNDgsIDQ4LCAxMjgsIDY1LCA0OSwgNTcsIDU3LCAxMjgsIDY1LCA0OSwgNTcsIDU2LCAxMjgsIDY1LCA0OSwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OSwgNTcsIDU0LCAxMjgsIDY1LCA0OSwgNTcsIDUzLCAxMjgsIDY1LCA0OSwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OSwgNTcsIDUxLCAxMjgsIDY1LCA0OSwgNTcsIDUwLCAxMjgsIDY1LCA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA0OSwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OSwgNTYsIDU3LCAxMjgsIDY1LCA0OSwgNTYsIDU2LCAxMjgsIDY1LCA0OSwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTYsIDU0LCAxMjgsIDY1LCA0OSwgNTYsIDUzLCAxMjgsIDY1LCA0OSwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OSwgNTYsIDUxLCAxMjgsIDY1LCA0OSwgNTYsIDUwLCAxMjgsIDY1LCA0OSwgNTYsIDQ5LCAxMjgsIDY1LCA0OSwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OSwgNTUsIDU3LCAxMjgsIDY1LCA0OSwgNTUsIDU2LCAxMjgsIDY1LCA0OSwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OSwgNTUsIDU0LCAxMjgsIDY1LCA0OSwgNTUsIDUzLCAxMjgsIDY1LCA0OSwgNTUsIDUyLCAxMjgsIDY1LCA0OSwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OSwgNTUsIDUwLCAxMjgsIDY1LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA0OSwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OSwgNTQsIDU3LCAxMjgsIDY1LCA0OSwgNTQsIDU2LCAxMjgsIDY1LCA0OSwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OSwgNTQsIDU0LCAxMjgsIDY1LCA0OSwgNTQsIDUzLCAxMjgsIDY1LCA0OSwgNTQsIDUyLCAxMjgsIDY1LCA0OSwgNTQsIAotICAgIDUxLCAxMjgsIDY1LCA0OSwgNTQsIDUwLCAxMjgsIDY1LCA0OSwgNTQsIDQ5LCAxMjgsIDY1LCA0OSwgNTQsIDQ4LCAxMjgsIAotICAgIDY1LCA0OSwgNTMsIDU3LCAxMjgsIDY1LCA0OSwgNTMsIDU2LCAxMjgsIDY1LCA0OSwgNTMsIDU1LCAxMjgsIDY1LCA0OSwgCi0gICAgNTMsIDU0LCAxMjgsIDY1LCA0OSwgNTMsIDUzLCAxMjgsIDY1LCA0OSwgNTMsIDUyLCAxMjgsIDY1LCA0OSwgNTMsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNTMsIDUwLCAxMjgsIDY1LCA0OSwgNTMsIDQ5LCAxMjgsIDY1LCA0OSwgNTMsIDQ4LCAxMjgsIDY1LCAKLSAgICA0OSwgNTIsIDU3LCAxMjgsIDY1LCA0OSwgNTIsIDU2LCAxMjgsIDY1LCA0OSwgNTIsIDU1LCAxMjgsIDY1LCA0OSwgNTIsIAotICAgIDU0LCAxMjgsIDY1LCA0OSwgNTIsIDUzLCAxMjgsIDY1LCA0OSwgNTIsIDUyLCAxMjgsIDY1LCA0OSwgNTIsIDUxLCAxMjgsIAotICAgIDY1LCA0OSwgNTIsIDUwLCAxMjgsIDY1LCA0OSwgNTIsIDQ5LCAxMjgsIDY1LCA0OSwgNTIsIDQ4LCAxMjgsIDY1LCA0OSwgCi0gICAgNTEsIDU3LCAxMjgsIDY1LCA0OSwgNTEsIDU2LCAxMjgsIDY1LCA0OSwgNTEsIDU1LCAxMjgsIDY1LCA0OSwgNTEsIDU0LCAKLSAgICAxMjgsIDY1LCA0OSwgNTEsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUxLCA1MywgMTI4LCA2NSwgNDksIDUxLCA1MiwgMTI4LCAKLSAgICA2NSwgNDksIDUxLCA1MSwgMTI4LCA2NSwgNDksIDUxLCA1MCwgMTI4LCA2NSwgNDksIDUxLCA0OSwgNjcsIDEyOCwgNjUsIAotICAgIDQ5LCA1MSwgNDksIDEyOCwgNjUsIDQ5LCA1MSwgNDgsIDEyOCwgNjUsIDQ5LCA1MCwgNTcsIDEyOCwgNjUsIDQ5LCA1MCwgCi0gICAgNTYsIDEyOCwgNjUsIDQ5LCA1MCwgNTUsIDEyOCwgNjUsIDQ5LCA1MCwgNTQsIDEyOCwgNjUsIDQ5LCA1MCwgNTMsIDY1LCAKLSAgICAxMjgsIDY1LCA0OSwgNTAsIDUzLCAxMjgsIDY1LCA0OSwgNTAsIDUyLCAxMjgsIDY1LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCAKLSAgICA0OSwgNTAsIDUwLCAxMjgsIDY1LCA0OSwgNTAsIDQ5LCAxMjgsIDY1LCA0OSwgNTAsIDQ4LCA2NiwgMTI4LCA2NSwgNDksIAotICAgIDUwLCA0OCwgMTI4LCA2NSwgNDksIDQ5LCA1NywgMTI4LCA2NSwgNDksIDQ5LCA1NiwgMTI4LCA2NSwgNDksIDQ5LCA1NSwgCi0gICAgMTI4LCA2NSwgNDksIDQ5LCA1NCwgMTI4LCA2NSwgNDksIDQ5LCA1MywgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDEyOCwgCi0gICAgNjUsIDQ5LCA0OSwgNTIsIDEyOCwgNjUsIDQ5LCA0OSwgNTEsIDEyOCwgNjUsIDQ5LCA0OSwgNTAsIDEyOCwgNjUsIDQ5LCAKLSAgICA0OSwgNDksIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDY2LCAxMjgsIDY1LCA0OSwgNDksIDQ4LCA2NSwgMTI4LCA2NSwgNDksIAotICAgIDQ5LCA0OCwgMTI4LCA2NSwgNDksIDQ4LCA1NywgMTI4LCA2NSwgNDksIDQ4LCA1NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgCi0gICAgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCAKLSAgICA1NSwgMTI4LCA2NSwgNDksIDQ4LCA1NCwgMTI4LCA2NSwgNDksIDQ4LCA1MywgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIAotICAgIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCAxMjgsIDY1LCA0OSwgNDgsIDUyLCA2NywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgCi0gICAgNjYsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDUyLCAxMjgsIDY1LCA0OSwgNDgsIDUxLCAKLSAgICAxMjgsIDY1LCA0OSwgNDgsIDUwLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OSwgNjUsIAotICAgIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDEyOCwgNjUsIDQ5LCA0OCwgNDgsIDY1LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA0NSwgCi0gICAgNDksIDQ4LCA1MCwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgMTI4LCA2NSwgNDgsIDU3LCA1NywgMTI4LCA2NSwgNDgsIDU3LCAKLSAgICA1NiwgNjUsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDEyOCwgNjUsIDQ4LCA1NywgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNTcsIAotICAgIDU1LCAxMjgsIDY1LCA0OCwgNTcsIDU0LCAxMjgsIDY1LCA0OCwgNTcsIDUzLCAxMjgsIDY1LCA0OCwgNTcsIDUyLCAxMjgsIAotICAgIDY1LCA0OCwgNTcsIDUxLCAxMjgsIDY1LCA0OCwgNTcsIDUwLCAxMjgsIDY1LCA0OCwgNTcsIDQ5LCAxMjgsIDY1LCA0OCwgCi0gICAgNTcsIDQ4LCAxMjgsIDY1LCA0OCwgNTYsIDU3LCAxMjgsIDY1LCA0OCwgNTYsIDU2LCAxMjgsIDY1LCA0OCwgNTYsIDU1LCAKLSAgICAxMjgsIDY1LCA0OCwgNTYsIDU0LCAxMjgsIDY1LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCA0OCwgNTYsIDUyLCAxMjgsIDY1LCAKLSAgICA0OCwgNTYsIDUxLCAxMjgsIDY1LCA0OCwgNTYsIDUwLCAxMjgsIDY1LCA0OCwgNTYsIDQ5LCAxMjgsIDY1LCA0OCwgNTYsIAotICAgIDQ4LCAxMjgsIDY1LCA0OCwgNTUsIDU3LCAxMjgsIDY1LCA0OCwgNTUsIDU2LCAxMjgsIDY1LCA0OCwgNTUsIDU1LCAxMjgsIAotICAgIDY1LCA0OCwgNTUsIDU0LCAxMjgsIDY1LCA0OCwgNTUsIDUzLCAxMjgsIDY1LCA0OCwgNTUsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTUsIDUxLCAxMjgsIDY1LCA0OCwgNTUsIDUwLCAxMjgsIDY1LCA0OCwgNTUsIDQ5LCAxMjgsIDY1LCA0OCwgNTUsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTQsIDU3LCAxMjgsIDY1LCA0OCwgNTQsIDU2LCAxMjgsIDY1LCA0OCwgNTQsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTQsIDU0LCA2NywgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjYsIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY1LCAxMjgsIAotICAgIDY1LCA0OCwgNTQsIDU0LCAxMjgsIDY1LCA0OCwgNTQsIDUzLCAxMjgsIDY1LCA0OCwgNTQsIDUyLCAxMjgsIDY1LCA0OCwgCi0gICAgNTQsIDUxLCAxMjgsIDY1LCA0OCwgNTQsIDUwLCAxMjgsIDY1LCA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA0OCwgNTQsIDQ4LCAKLSAgICAxMjgsIDY1LCA0OCwgNTMsIDU3LCAxMjgsIDY1LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA0OCwgNTMsIDU1LCAxMjgsIDY1LCAKLSAgICA0OCwgNTMsIDU0LCAxMjgsIDY1LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA0OCwgNTMsIDUyLCAxMjgsIDY1LCA0OCwgNTMsIAotICAgIDUxLCAxMjgsIDY1LCA0OCwgNTMsIDUwLCAxMjgsIDY1LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA0OCwgNTMsIDQ4LCAxMjgsIAotICAgIDY1LCA0OCwgNTIsIDU3LCAxMjgsIDY1LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA0OCwgNTIsIDU1LCAxMjgsIDY1LCA0OCwgCi0gICAgNTIsIDU0LCA2NiwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgNTQsIDEyOCwgNjUsIDQ4LCAKLSAgICA1MiwgNTMsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA0OCwgNTIsIDUyLCAxMjgsIDY1LCA0OCwgNTIsIAotICAgIDUxLCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgMTI4LCA2NSwgNDgsIDUyLCA1MCwgNjUsIDEyOCwgNjUsIDQ4LCA1MiwgCi0gICAgNTAsIDEyOCwgNjUsIDQ4LCA1MiwgNDksIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDQ5LCAxMjgsIDY1LCA0OCwgNTIsIDQ4LCAKLSAgICA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgMTI4LCA2NSwgNDgsIDUxLCA1NywgNjUsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIAotICAgIDEyOCwgNjUsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDQ4LCA1MSwgNTUsIDEyOCwgNjUsIDQ4LCA1MSwgNTQsIDEyOCwgNjUsIAotICAgIDQ4LCA1MSwgNTMsIDEyOCwgNjUsIDQ4LCA1MSwgNTIsIDEyOCwgNjUsIDQ4LCA1MSwgNTEsIDEyOCwgNjUsIDQ4LCA1MSwgCi0gICAgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTAsIDU2LCA2NiwgMTI4LCA2NSwgNDgsIDUwLCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCAKLSAgICA0OSwgNTUsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDUyLCA2NSwgMTI4LCA2NSwgNDgsIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIAotICAgIDQ4LCA0OCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDQ4LCA1MywgNjUsIDEyOCwgCi0gICAgNjUsIDQ1LCA2OSwgODUsIDEyOCwgNDUsIDg1LCAyMDUsIDQ1LCA4MCwgNzIsIDgyLCA4NSwgMTI4LCA0NSwgNzUsIDcyLCAKLSAgICA4OSwgODUsIDE5NiwgNDUsIDc1LCA3MiwgODksIDczLCA3NiwgMTI4LCA0NSwgNjgsIDkwLCA4NSwgMTk2LCA0NSwgNjcsIAotICAgIDcyLCA2NSwgMjEwLCA0NSwgNjcsIDcyLCA2NSwgNzYsIDEyOCwgCisgICAgNzYsIDc5LCAxMjgsIDY1LCA3NiwgNzYsIDczLCA2NSwgNzgsIDY3LCA2OSwgMTI4LCA2NSwgNzYsIDc2LCAyMDEsIDY1LCAKKyAgICA3NiwgNzYsIDY1LCAyMDAsIDY1LCA3NiwgNzUsIDY1LCA3NiwgNzMsIDQ1LCA1MCwgMTI4LCA2NSwgNzYsIDc1LCA2NSwgNzYsIAorICAgIDczLCAxMjgsIDY1LCA3NiwgNzMsIDcxLCA3OCwgNjksIDE5NiwgNjUsIDc2LCA3MywgNzAsIDg1LCAxMjgsIDY1LCA3NiwgCisgICAgNzMsIDcwLCAxMjgsIDY1LCA3NiwgNzMsIDE5OCwgNjUsIDc2LCA3MywgNjksIDc4LCAxMjgsIDY1LCA3NiwgNzMsIDY5LCAKKyAgICAyMDYsIDY1LCA3NiwgNzEsIDczLCAyMTgsIDY1LCA3NiwgNzAsIDY1LCAxMjgsIDY1LCA3NiwgNjksIDg1LCAyMTIsIDY1LCAKKyAgICA3NiwgNjksIDgyLCA4NCwgMTI4LCA2NSwgNzYsIDY5LCA4MCwgNzIsIDEyOCwgNjUsIDc2LCA2OSwgNzcsIDY2LCA3MywgNjcsIAorICAgIDEyOCwgNjUsIDc2LCA2OSwgNzAsIDEyOCwgNjUsIDc2LCA2NiwgNjUsIDc4LCA3MywgNjUsIDIwNiwgNjUsIDc2LCA2NSwgCisgICAgODksIDcyLCA2OSwgMTI4LCA2NSwgNzYsIDY1LCA4OSwgNzIsIDE5NywgNjUsIDc2LCA2NSwgODIsIDIwNSwgNjUsIDc2LCAKKyAgICA2NSwgODAsIDcyLCAxMjgsIDY1LCA3NiwgNDUsIDc2LCA2NSwgNzUsIDg1LCA3OCwgNjUsIDEyOCwgNjUsIDc1LCA4NCwgNzMsIAorICAgIDY5LCA4MywgNjksIDc2LCA4MywgNzUsIDY1LCA2NiwgMTI4LCA2NSwgNzUsIDgzLCA2NSwgMTI4LCA2NSwgNzUsIDcyLCA3NywgCisgICAgNzMsIDc3LCA3MywgMTk1LCA2NSwgNzUsIDY2LCA2NSwgMjEwLCA2NSwgNzUsIDY1LCA4MiwgNjUsIDEyOCwgNjUsIDc1LCAKKyAgICA2NSwgODIsIDE5MywgNjUsIDczLCA4OSwgNjUsIDc4LCA3OCwgNjUsIDEyOCwgNjUsIDczLCA4NiwgNzMsIDc2LCA3MywgCisgICAgMjAzLCA2NSwgNzMsIDg0LCA3OSwgMjA2LCA2NSwgNzMsIDgyLCA4MCwgNzYsIDY1LCA3OCwgNjksIDEyOCwgNjUsIDczLCAKKyAgICA4MiwgODAsIDc2LCA2NSwgNzgsIDE5NywgNjUsIDczLCA3OCwgMjEzLCA2NSwgNzMsIDc4LCA3OCwgMTI4LCA2NSwgNzMsIAorICAgIDc2LCA3NywgMTI4LCA2NSwgNzMsIDc1LCA2NSwgODIsIDY1LCAxMjgsIDY1LCA3MywgNzIsIDg2LCA4NSwgODMsIDEyOCwgCisgICAgNjUsIDcyLCA4MywgNjgsIDY1LCAxMjgsIDY1LCA3MiwgODMsIDY1LCAxMjgsIDY1LCA3MiwgNzksIDIwNSwgNjUsIDcyLCAKKyAgICA2NSwgNzgsIDE5OSwgNjUsIDcyLCA2NSwgNzEsIDcxLCA2NSwgMjEwLCA2NSwgNzIsIDY1LCA2OCwgMTI4LCA2NSwgNzEsIAorICAgIDg1LCA3OCwgNzEsIDEyOCwgNjUsIDcxLCA3OSwgNzEsIDIwMSwgNjUsIDcxLCA3MSwgODIsIDY1LCA4NiwgNjUsIDg0LCA3MywgCisgICAgNzksIDc4LCAxMjgsIDY1LCA3MSwgNzEsIDgyLCA2NSwgODYsIDY1LCA4NCwgNjksIDE5NiwgNjUsIDcxLCA2NSwgNzMsIDc4LCAKKyAgICA4MywgMjEyLCA2NSwgNzEsIDY1LCA3MywgNzgsIDEyOCwgNjUsIDcwLCA4NCwgNjksIDIxMCwgNjUsIDcwLCA4MywgNjUsIAorICAgIDY1LCA4MSwgMTI4LCA2NSwgNzAsIDgyLCA3MywgNjcsIDY1LCAyMDYsIDY1LCA3MCwgNzksIDgyLCA2OSwgNzcsIDY5LCA3OCwgCisgICAgODQsIDczLCA3OSwgNzgsIDY5LCA2OCwgMTI4LCA2NSwgNzAsIDcxLCA3MiwgNjUsIDc4LCAyMDEsIDY1LCA3MCwgNzAsIDgyLCAKKyAgICA3MywgNjcsIDY1LCA4NCwgNzMsIDc5LCAyMDYsIDY1LCA3MCwgNzAsIDczLCAyMTYsIDY1LCA2OSwgODksIDY1LCA3OCwgNzgsIAorICAgIDY1LCAxMjgsIDY1LCA2OSwgODksIDEyOCwgNjUsIDY5LCA4MywgNjcsIDg1LCA3NiwgNjUsIDgwLCA3MywgODUsIDgzLCAKKyAgICAxMjgsIDY1LCA2OSwgODMsIDY3LCAxMjgsIDY1LCA2OSwgODMsIDEyOCwgNjUsIDY5LCA4MiwgNzMsIDY1LCAyMDQsIDY1LCAKKyAgICA2OSwgODIsIDEyOCwgNjUsIDY5LCA3NiwgNjUsIDQ1LCA4MCwgNzMsIDc2LCA3NiwgNjUsIDEyOCwgNjUsIDY5LCA3NiwgCisgICAgMTI4LCA2NSwgNjksIDc1LCAxMjgsIDY1LCA2OSwgNzEsIDY5LCA2NSwgMjA2LCA2NSwgNjksIDcxLCAxMjgsIDY1LCA2OSwgCisgICAgNjksIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjksIDY5LCAxMjgsIDY1LCA2OSwgNjgsIDY1LCA0NSwgODAsIDczLCAKKyAgICA3NiwgNzYsIDY1LCAxMjgsIDY1LCA2OSwgNjgsIDEyOCwgNjUsIDY5LCA2NiwgMTI4LCA2NSwgNjgsIDg2LCA2NSwgNzgsIAorICAgIDg0LCA2NSwgNzEsIDY5LCAxMjgsIDY1LCA2OCwgODYsIDY1LCA3OCwgNjcsIDY5LCAxMjgsIDY1LCA2OCwgNzcsIDczLCA4MywgCisgICAgODMsIDczLCA3OSwgMjA2LCA2NSwgNjgsIDc2LCA2NSwgMjA1LCA2NSwgNjgsIDY5LCA3MSwgMTI4LCA2NSwgNjgsIDY5LCAKKyAgICAxOTksIDY1LCA2OCwgNjgsIDgyLCA2OSwgODMsIDgzLCA2OSwgMTk2LCA2NSwgNjgsIDY4LCA4MiwgNjksIDgzLCAyMTEsIAorICAgIDY1LCA2OCwgNjgsIDY1LCA3NSwgMTI4LCA2NSwgNjgsIDY1LCAyMDMsIDY1LCA2NywgODUsIDg0LCA2OSwgNDUsIDc3LCA2NSwgCisgICAgNjcsIDgyLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA4NSwgODQsIDY5LCA0NSwgNzEsIDgyLCA2NSwgODYsIDY5LCA0NSwgNjUsIAorICAgIDY3LCA4NSwgODQsIDY5LCAxMjgsIDY1LCA2NywgODUsIDg0LCAxOTcsIDY1LCA2NywgODQsIDg1LCA2NSwgNzYsIDc2LCAKKyAgICAyMTcsIDY1LCA2NywgODQsIDczLCA4NiwgNjUsIDg0LCAxOTcsIDY1LCA2NywgODIsIDc5LCA4MCwgNzIsIDc5LCA3OCwgNzMsIAorICAgIDE5NSwgNjUsIDY3LCA3NSwgNzgsIDc5LCA4NywgNzYsIDY5LCA2OCwgNzEsIDY5LCAxMjgsIDY1LCA2NywgNjcsIDg1LCA3NywgCisgICAgODUsIDc2LCA2NSwgODQsIDczLCA3OSwgNzgsIDEyOCwgNjUsIDY3LCA2NywgNzksIDg1LCA3OCwgMjEyLCA2NSwgNjcsIDY3LCAKKyAgICA3OSwgNzcsIDc3LCA3OSwgNjgsIDY1LCA4NCwgNzMsIDc5LCA3OCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgODAsIDg0LCAxMjgsIAorICAgIDY1LCA2NywgNjcsIDY5LCA3OCwgODQsIDQ1LCA4MywgODQsIDY1LCA2NywgNjcsIDY1LCA4NCwgNzksIDEyOCwgNjUsIDY3LCAKKyAgICA2NywgNjksIDc4LCA4NCwgMTI4LCA2NSwgNjcsIDY3LCA2OSwgNzgsIDIxMiwgNjUsIDY3LCA2NSwgNjgsIDY5LCA3NywgCisgICAgMjE3LCA2NSwgNjYsIDg5LCA4MywgNzcsIDY1LCAyMDQsIDY1LCA2NiwgODUsIDc4LCA2OCwgNjUsIDc4LCA2NywgNjksIAorICAgIDEyOCwgNjUsIDY2LCA3NSwgNzIsIDY1LCA4MywgNzMsIDY1LCAyMDYsIDY1LCA2NiwgNjYsIDgyLCA2OSwgODYsIDczLCA2NSwgCisgICAgODQsIDczLCA3OSwgMjA2LCA2NSwgNjYsIDY1LCA3MCwgNzMsIDc2LCA3MywgMTI4LCA2NSwgNjYsIDE3OCwgNjUsIDY2LCAKKyAgICA0OSwgNTcsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNjYsIDQ5LCA1NiwgNDgsIDEyOCwgNjUsIAorICAgIDY2LCA0OSwgNTUsIDQ5LCAxMjgsIDY1LCA2NiwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNjYsIDQ5LCA1MSwgNDksIDY2LCAKKyAgICAxMjgsIDY1LCA2NiwgNDksIDUxLCA0OSwgNjUsIDEyOCwgNjUsIDY2LCA0OSwgNTAsIDUxLCAxMjgsIDY1LCA2NiwgNDksIAorICAgIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIDY2LCA0OSwgNDksIDU2LCAxMjgsIDY1LCA2NiwgCisgICAgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDUzLCAxMjgsIDY1LCAKKyAgICA2NiwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1NiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTYsIDQ4LCAxMjgsIAorICAgIDY1LCA2NiwgNDgsIDU1LCA1NywgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDU1LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NSwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTUsIAorICAgIDUxLCAxMjgsIDY1LCA2NiwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTcsIDEyOCwgNjUsIDY2LCA0OCwgCisgICAgNTQsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1NCwgNTMsIDEyOCwgNjUsIDY2LCAKKyAgICA0OCwgNTQsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTcsIDEyOCwgNjUsIAorICAgIDY2LCA0OCwgNTMsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTQsIDEyOCwgCisgICAgNjUsIDY2LCA0OCwgNTMsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNjYsIDQ4LCA1MywgNTEsIAorICAgIDEyOCwgNjUsIDY2LCA0OCwgNTMsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNjYsIDQ4LCA1MiwgCisgICAgNTcsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDU2LCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNjYsIDQ4LCAKKyAgICA1MiwgNTQsIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDUzLCAxMjgsIDY1LCA2NiwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MiwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTIsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA1MSwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUxLCA1MiwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA1MSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNTEsIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUxLCA3NywgMTI4LCA2NSwgNjYsIAorICAgIDQ4LCA1MCwgNTEsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDUwLCA3NywgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNTAsIDcwLCAKKyAgICAxMjgsIDY1LCA2NiwgNDgsIDUwLCA1MCwgMTI4LCA2NSwgNjYsIDQ4LCA1MCwgNDksIDc3LCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDUwLCA0OSwgNzAsIDEyOCwgNjUsIDY2LCA0OCwgNTAsIDQ5LCAxMjgsIDY1LCA2NiwgNDgsIDUwLCA0OCwgMTI4LCA2NSwgCisgICAgNjYsIDQ4LCA0OSwgNTUsIDEyOCwgNjUsIDY2LCA0OCwgNDksIDU0LCAxMjgsIDY1LCA2NiwgNDgsIDQ5LCA1MSwgMTI4LCAKKyAgICA2NSwgNjYsIDQ4LCA0OSwgNDksIDEyOCwgNjUsIDY2LCA0OCwgNDksIDQ4LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCA1NywgCisgICAgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTYsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDU1LCAxMjgsIDY1LCA2NiwgNDgsIDQ4LCAKKyAgICA1NCwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTMsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDUyLCAxMjgsIDY1LCA2NiwgNDgsIAorICAgIDQ4LCA1MSwgMTI4LCA2NSwgNjYsIDQ4LCA0OCwgNTAsIDEyOCwgNjUsIDY2LCA0OCwgNDgsIDQ5LCAxMjgsIDY1LCA2NSwgCisgICAgODksIDczLCA3OCwgMTI4LCA2NSwgNjUsIDg5LCA2NSwgNzgsIDc4LCA2NSwgMTI4LCA2NSwgNjUsIDg5LCAxMjgsIDY1LCAKKyAgICA2NSwgODcsIDEyOCwgNjUsIDY1LCA3OSwgMTI4LCA2NSwgNjUsIDc0LCAxMjgsIDY1LCA2NSwgNjYsIDY1LCA2NSwgNzAsIAorICAgIDczLCA3NiwgNzMsIDEyOCwgNjUsIDY1LCA0OCwgNTEsIDUwLCAxMjgsIDY1LCA2NSwgNDgsIDUxLCA0OSwgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA1MSwgNDgsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU3LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1NiwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA1MCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDUwLCA1MywgCisgICAgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDUwLCAKKyAgICA1MCwgMTI4LCA2NSwgNjUsIDQ4LCA1MCwgNDksIDEyOCwgNjUsIDY1LCA0OCwgNTAsIDQ4LCAxMjgsIDY1LCA2NSwgNDgsIAorICAgIDQ5LCA1NywgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTYsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDU1LCAxMjgsIDY1LCA2NSwgCisgICAgNDgsIDQ5LCA1NCwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTMsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDUyLCAxMjgsIDY1LCAKKyAgICA2NSwgNDgsIDQ5LCA1MSwgMTI4LCA2NSwgNjUsIDQ4LCA0OSwgNTAsIDEyOCwgNjUsIDY1LCA0OCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA2NSwgNDgsIDQ5LCA0OCwgMTI4LCA2NSwgNjUsIDQ4LCA0OCwgNTcsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU2LCAKKyAgICAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1NSwgNjYsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU1LCA2NSwgMTI4LCA2NSwgNjUsIAorICAgIDQ4LCA0OCwgNTUsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDU0LCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MywgMTI4LCA2NSwgCisgICAgNjUsIDQ4LCA0OCwgNTIsIDEyOCwgNjUsIDY1LCA0OCwgNDgsIDUxLCAxMjgsIDY1LCA2NSwgNDgsIDQ4LCA1MCwgMTI4LCAKKyAgICA2NSwgNjUsIDQ4LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNTUsIDEyOCwgNjUsIDU2LCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDU2LCA0OCwgNTMsIDEyOCwgNjUsIDU2LCA0OCwgNTIsIDEyOCwgNjUsIDU2LCA0OCwgNTEsIDEyOCwgNjUsIDU2LCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDU2LCA0OCwgNDksIDEyOCwgNjUsIDU2LCA0OCwgNDgsIDEyOCwgNjUsIDU1LCA1MSwgMTc4LCA2NSwgCisgICAgNTUsIDUwLCAxODIsIDY1LCA1NSwgNDksIDE4MywgNjUsIDU1LCA0OSwgMTgxLCA2NSwgNTUsIDQ5LCAxODAsIDY1LCA1NSwgCisgICAgNDksIDE3OSwgNjUsIDU1LCA0OSwgMTc4LCA2NSwgNTUsIDQ5LCAxNzcsIDY1LCA1NSwgNDksIDE3NiwgNjUsIDU1LCA0OCwgCisgICAgNTcsIDQ1LCAxODIsIDY1LCA1NSwgNDgsIDU3LCA0NSwgMTgwLCA2NSwgNTUsIDQ4LCA1NywgNDUsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgNTcsIDQ1LCAxNzgsIDY1LCA1NSwgNDgsIDE4NSwgNjUsIDU1LCA0OCwgMTg0LCA2NSwgNTUsIDQ4LCAxODMsIDY1LCAKKyAgICA1NSwgNDgsIDE4MiwgNjUsIDU1LCA0OCwgMTgxLCA2NSwgNTUsIDQ4LCAxODAsIDY1LCA1NSwgNDgsIDE3OSwgNjUsIDU1LCAKKyAgICA0OCwgMTc4LCA2NSwgNTUsIDQ4LCAxNzcsIDY1LCA1NCwgNTQsIDUyLCAxMjgsIDY1LCA1NCwgNTQsIDUxLCAxMjgsIDY1LCAKKyAgICA1NCwgNTQsIDUwLCAxMjgsIDY1LCA1NCwgNTQsIDQ5LCAxMjgsIDY1LCA1NCwgNTQsIDQ4LCAxMjgsIDY1LCA1NCwgNTMsIAorICAgIDU3LCAxMjgsIDY1LCA1NCwgNTMsIDU2LCAxMjgsIDY1LCA1NCwgNTMsIDU1LCAxMjgsIDY1LCA1NCwgNTMsIDU0LCAxMjgsIAorICAgIDY1LCA1NCwgNTMsIDUzLCAxMjgsIDY1LCA1NCwgNTMsIDUyLCAxMjgsIDY1LCA1NCwgNTMsIDUxLCAxMjgsIDY1LCA1NCwgCisgICAgNTMsIDUwLCAxMjgsIDY1LCA1NCwgNTMsIDQ5LCAxMjgsIDY1LCA1NCwgNTIsIDU3LCAxMjgsIDY1LCA1NCwgNTIsIDU2LCAKKyAgICAxMjgsIDY1LCA1NCwgNTIsIDU0LCAxMjgsIDY1LCA1NCwgNTIsIDUzLCAxMjgsIDY1LCA1NCwgNTIsIDUyLCAxMjgsIDY1LCAKKyAgICA1NCwgNTIsIDUxLCAxMjgsIDY1LCA1NCwgNTIsIDUwLCAxMjgsIDY1LCA1NCwgNTIsIDQ4LCAxMjgsIDY1LCA1NCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA1NCwgNTEsIDU1LCAxMjgsIDY1LCA1NCwgNTEsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1NCwgNTAsIDU2LCAxMjgsIDY1LCA1NCwgNTAsIDU1LCAxMjgsIDY1LCA1NCwgNTAsIDU0LCAxMjgsIDY1LCA1NCwgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1NCwgNTAsIDUxLCAxMjgsIDY1LCA1NCwgNTAsIDUwLCAxMjgsIDY1LCA1NCwgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1NCwgNTAsIDQ4LCAxMjgsIDY1LCA1NCwgNDksIDU3LCAxMjgsIDY1LCA1NCwgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1NCwgNDksIDU1LCAxMjgsIDY1LCA1NCwgNDksIDU0LCAxMjgsIDY1LCA1NCwgNDksIDUzLCAxMjgsIDY1LCA1NCwgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1NCwgNDksIDUxLCAxMjgsIDY1LCA1NCwgNDksIDUwLCAxMjgsIDY1LCA1NCwgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1NCwgNDksIDQ4LCAxMjgsIDY1LCA1NCwgNDgsIDU3LCAxMjgsIDY1LCA1NCwgNDgsIDU2LCAxMjgsIDY1LCA1NCwgCisgICAgNDgsIDU0LCAxMjgsIDY1LCA1NCwgNDgsIDUyLCAxMjgsIDY1LCA1NCwgNDgsIDUxLCAxMjgsIDY1LCA1NCwgNDgsIDUwLCAKKyAgICAxMjgsIDY1LCA1NCwgNDgsIDQ5LCAxMjgsIDY1LCA1NCwgNDgsIDQ4LCAxMjgsIDY1LCA1MywgNTcsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTcsIDU0LCAxMjgsIDY1LCA1MywgNTcsIDUzLCAxMjgsIDY1LCA1MywgNTcsIDUyLCAxMjgsIDY1LCA1MywgNTcsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTcsIDQ5LCAxMjgsIDY1LCA1MywgNTYsIDU3LCAxMjgsIDY1LCA1MywgNTYsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTYsIDU1LCAxMjgsIDY1LCA1MywgNTYsIDU0LCAxMjgsIDY1LCA1MywgNTYsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTYsIDUyLCAxMjgsIDY1LCA1MywgNTYsIDUxLCAxMjgsIDY1LCA1MywgNTYsIDUwLCAxMjgsIDY1LCA1MywgNTYsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTYsIDQ4LCAxMjgsIDY1LCA1MywgNTUsIDU3LCAxMjgsIDY1LCA1MywgNTUsIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNTUsIDU1LCAxMjgsIDY1LCA1MywgNTUsIDU0LCAxMjgsIDY1LCA1MywgNTUsIDUzLCAxMjgsIDY1LCA1MywgNTUsIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNTUsIDUxLCAxMjgsIDY1LCA1MywgNTUsIDUwLCAxMjgsIDY1LCA1MywgNTUsIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNTUsIDQ4LCAxMjgsIDY1LCA1MywgNTQsIDU3LCAxMjgsIDY1LCA1MywgNTQsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNTQsIDU0LCAxMjgsIDY1LCA1MywgNTQsIDUzLCAxMjgsIDY1LCA1MywgNTQsIDUyLCAxMjgsIDY1LCA1MywgNTQsIDUxLCAKKyAgICAxMjgsIDY1LCA1MywgNTMsIDU3LCAxMjgsIDY1LCA1MywgNTMsIDU1LCAxMjgsIDY1LCA1MywgNTMsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTMsIDUzLCAxMjgsIDY1LCA1MywgNTMsIDUyLCAxMjgsIDY1LCA1MywgNTMsIDUxLCAxMjgsIDY1LCA1MywgNTMsIAorICAgIDUwLCAxMjgsIDY1LCA1MywgNTMsIDQ5LCAxMjgsIDY1LCA1MywgNTMsIDQ4LCAxMjgsIDY1LCA1MywgNTIsIDU3LCAxMjgsIAorICAgIDY1LCA1MywgNTIsIDU2LCAxMjgsIDY1LCA1MywgNTIsIDU1LCAxMjgsIDY1LCA1MywgNTIsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MywgNTIsIDQ5LCAxMjgsIDY1LCA1MywgNTIsIDQ4LCAxMjgsIDY1LCA1MywgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MywgNTEsIDU2LCAxMjgsIDY1LCA1MywgNTEsIDU1LCAxMjgsIDY1LCA1MywgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MywgNTEsIDUzLCAxMjgsIDY1LCA1MywgNTEsIDUyLCAxMjgsIDY1LCA1MywgNTEsIDUwLCAxMjgsIDY1LCA1MywgNTEsIAorICAgIDQ5LCAxMjgsIDY1LCA1MywgNTEsIDQ4LCAxMjgsIDY1LCA1MywgNTAsIDU3LCAxMjgsIDY1LCA1MywgNTAsIDU2LCAxMjgsIAorICAgIDY1LCA1MywgNTAsIDU1LCAxMjgsIDY1LCA1MywgNTAsIDU0LCAxMjgsIDY1LCA1MywgNTAsIDUzLCAxMjgsIDY1LCA1MywgCisgICAgNTAsIDUyLCAxMjgsIDY1LCA1MywgNTAsIDUxLCAxMjgsIDY1LCA1MywgNTAsIDUwLCAxMjgsIDY1LCA1MywgNTAsIDQ5LCAKKyAgICAxMjgsIDY1LCA1MywgNTAsIDQ4LCAxMjgsIDY1LCA1MywgNDksIDU3LCAxMjgsIDY1LCA1MywgNDksIDU2LCAxMjgsIDY1LCAKKyAgICA1MywgNDksIDU1LCAxMjgsIDY1LCA1MywgNDksIDU0LCAxMjgsIDY1LCA1MywgNDksIDUzLCAxMjgsIDY1LCA1MywgNDksIAorICAgIDUyLCAxMjgsIDY1LCA1MywgNDksIDUxLCAxMjgsIDY1LCA1MywgNDksIDUwLCAxMjgsIDY1LCA1MywgNDksIDQ5LCAxMjgsIAorICAgIDY1LCA1MywgNDksIDQ4LCAxMjgsIDY1LCA1MywgNDgsIDU3LCAxMjgsIDY1LCA1MywgNDgsIDU2LCAxMjgsIDY1LCA1MywgCisgICAgNDgsIDU1LCAxMjgsIDY1LCA1MywgNDgsIDU0LCAxMjgsIDY1LCA1MywgNDgsIDUzLCAxMjgsIDY1LCA1MywgNDgsIDUyLCAKKyAgICAxMjgsIDY1LCA1MywgNDgsIDUxLCAxMjgsIDY1LCA1MywgNDgsIDUwLCAxMjgsIDY1LCA1MywgNDgsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTcsIDU1LCAxMjgsIDY1LCA1MiwgNTcsIDU0LCAxMjgsIDY1LCA1MiwgNTcsIDUzLCAxMjgsIDY1LCA1MiwgNTcsIAorICAgIDUyLCAxMjgsIDY1LCA1MiwgNTcsIDUxLCAxMjgsIDY1LCA1MiwgNTcsIDUwLCAxMjgsIDY1LCA1MiwgNTcsIDQ5LCAxMjgsIAorICAgIDY1LCA1MiwgNTcsIDQ4LCAxMjgsIDY1LCA1MiwgNTYsIDU3LCAxMjgsIDY1LCA1MiwgNTYsIDU2LCAxMjgsIDY1LCA1MiwgCisgICAgNTYsIDU1LCAxMjgsIDY1LCA1MiwgNTYsIDU0LCAxMjgsIDY1LCA1MiwgNTYsIDUzLCAxMjgsIDY1LCA1MiwgNTYsIDUyLCAKKyAgICAxMjgsIDY1LCA1MiwgNTYsIDUxLCAxMjgsIDY1LCA1MiwgNTYsIDUwLCAxMjgsIDY1LCA1MiwgNTYsIDQ5LCAxMjgsIDY1LCAKKyAgICA1MiwgNTYsIDQ4LCAxMjgsIDY1LCA1MiwgNTUsIDU3LCAxMjgsIDY1LCA1MiwgNTUsIDU2LCAxMjgsIDY1LCA1MiwgNTUsIAorICAgIDU1LCAxMjgsIDY1LCA1MiwgNTUsIDU0LCAxMjgsIDY1LCA1MiwgNTUsIDUzLCAxMjgsIDY1LCA1MiwgNTUsIDUyLCAxMjgsIAorICAgIDY1LCA1MiwgNTUsIDUxLCAxMjgsIDY1LCA1MiwgNTUsIDUwLCAxMjgsIDY1LCA1MiwgNTUsIDQ5LCAxMjgsIDY1LCA1MiwgCisgICAgNTUsIDQ4LCAxMjgsIDY1LCA1MiwgNTQsIDU3LCAxMjgsIDY1LCA1MiwgNTQsIDU2LCAxMjgsIDY1LCA1MiwgNTQsIDU1LCAKKyAgICAxMjgsIDY1LCA1MiwgNTQsIDU0LCAxMjgsIDY1LCA1MiwgNTQsIDUzLCAxMjgsIDY1LCA1MiwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MiwgNTQsIDUxLCAxMjgsIDY1LCA1MiwgNTQsIDUwLCAxMjgsIDY1LCA1MiwgNTQsIDQ5LCAxMjgsIDY1LCA1MiwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MiwgNTMsIDU3LCAxMjgsIDY1LCA1MiwgNTMsIDU2LCAxMjgsIDY1LCA1MiwgNTMsIDU1LCA2NSwgCisgICAgMTI4LCA2NSwgNTIsIDUzLCA1NSwgMTI4LCA2NSwgNTIsIDUzLCA1NCwgMTI4LCA2NSwgNTIsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTIsIDUzLCA1MiwgMTI4LCA2NSwgNTIsIDUzLCA1MSwgMTI4LCA2NSwgNTIsIDUzLCA1MCwgMTI4LCA2NSwgNTIsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTIsIDUzLCA0OCwgNjUsIDEyOCwgNjUsIDUyLCA1MywgNDgsIDEyOCwgNjUsIDUyLCA1MiwgNTcsIAorICAgIDEyOCwgNjUsIDUyLCA1MiwgNTYsIDEyOCwgNjUsIDUyLCA1MiwgNTUsIDEyOCwgNjUsIDUyLCA1MiwgNTQsIDEyOCwgNjUsIAorICAgIDUyLCA1MiwgNTMsIDEyOCwgNjUsIDUyLCA1MiwgNTIsIDEyOCwgNjUsIDUyLCA1MiwgNTEsIDEyOCwgNjUsIDUyLCA1MiwgCisgICAgNTAsIDEyOCwgNjUsIDUyLCA1MiwgNDksIDEyOCwgNjUsIDUyLCA1MiwgNDgsIDEyOCwgNjUsIDUyLCA1MSwgNTcsIDEyOCwgCisgICAgNjUsIDUyLCA1MSwgNTYsIDEyOCwgNjUsIDUyLCA1MSwgNTUsIDEyOCwgNjUsIDUyLCA1MSwgNTQsIDEyOCwgNjUsIDUyLCAKKyAgICA1MSwgNTMsIDEyOCwgNjUsIDUyLCA1MSwgNTIsIDEyOCwgNjUsIDUyLCA1MSwgNTEsIDEyOCwgNjUsIDUyLCA1MSwgNTAsIAorICAgIDEyOCwgNjUsIDUyLCA1MSwgNDksIDEyOCwgNjUsIDUyLCA1MSwgNDgsIDEyOCwgNjUsIDUyLCA1MCwgNTcsIDEyOCwgNjUsIAorICAgIDUyLCA1MCwgNTYsIDEyOCwgNjUsIDUyLCA1MCwgNTUsIDEyOCwgNjUsIDUyLCA1MCwgNTQsIDEyOCwgNjUsIDUyLCA1MCwgCisgICAgNTMsIDEyOCwgNjUsIDUyLCA1MCwgNTIsIDEyOCwgNjUsIDUyLCA1MCwgNTEsIDEyOCwgNjUsIDUyLCA1MCwgNTAsIDEyOCwgCisgICAgNjUsIDUyLCA1MCwgNDksIDEyOCwgNjUsIDUyLCA1MCwgNDgsIDEyOCwgNjUsIDUyLCA0OSwgNTcsIDEyOCwgNjUsIDUyLCAKKyAgICA0OSwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDU2LCAxMjgsIDY1LCA1MiwgNDksIDU1LCA0NSwgODYsIAorICAgIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1NSwgMTI4LCA2NSwgNTIsIDQ5LCA1NCwgNDUsIDg2LCA2NSwgODMsIDEyOCwgCisgICAgNjUsIDUyLCA0OSwgNTQsIDEyOCwgNjUsIDUyLCA0OSwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDksIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ5LCA1MiwgMTI4LCA2NSwgNTIsIAorICAgIDQ5LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OSwgNTEsIDEyOCwgNjUsIDUyLCA0OSwgNTAsIDQ1LCA4NiwgCisgICAgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDksIDUwLCAxMjgsIDY1LCA1MiwgNDksIDQ5LCA0NSwgODYsIDY1LCA4MywgMTI4LCAKKyAgICA2NSwgNTIsIDQ5LCA0OSwgMTI4LCA2NSwgNTIsIDQ5LCA0OCwgMTkzLCA2NSwgNTIsIDQ5LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OSwgMTc2LCA2NSwgNTIsIDQ4LCA1NywgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgCisgICAgNTcsIDEyOCwgNjUsIDUyLCA0OCwgNTYsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDU2LCAxMjgsIDY1LCAKKyAgICA1MiwgNDgsIDU1LCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA1NSwgMTI4LCA2NSwgNTIsIDQ4LCA1NCwgNDUsIAorICAgIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTQsIDEyOCwgNjUsIDUyLCA0OCwgNTMsIDQ1LCA4NiwgNjUsIDgzLCAKKyAgICAxMjgsIDY1LCA1MiwgNDgsIDUzLCAxMjgsIDY1LCA1MiwgNDgsIDUyLCA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIAorICAgIDQ4LCA1MiwgMTI4LCA2NSwgNTIsIDQ4LCA1MSwgNDUsIDg2LCA2NSwgODMsIDEyOCwgNjUsIDUyLCA0OCwgNTEsIDEyOCwgCisgICAgNjUsIDUyLCA0OCwgNTAsIDQ1LCA4NiwgNjUsIDgzLCAxMjgsIDY1LCA1MiwgNDgsIDUwLCAxMjgsIDY1LCA1MiwgNDgsIDQ5LCAKKyAgICA0NSwgODYsIDY1LCA4MywgMTI4LCA2NSwgNTIsIDQ4LCA0OSwgMTI4LCA2NSwgNTIsIDQ4LCA0OCwgNDUsIDg2LCA2NSwgODMsIAorICAgIDEyOCwgNjUsIDUyLCA0OCwgNDgsIDEyOCwgNjUsIDUxLCA1NywgNTcsIDEyOCwgNjUsIDUxLCA1NywgNTYsIDEyOCwgNjUsIAorICAgIDUxLCA1NywgNTUsIDEyOCwgNjUsIDUxLCA1NywgNTQsIDEyOCwgNjUsIDUxLCA1NywgNTMsIDEyOCwgNjUsIDUxLCA1NywgCisgICAgNTIsIDEyOCwgNjUsIDUxLCA1NywgMTc5LCA2NSwgNTEsIDU3LCA1MCwgMTI4LCA2NSwgNTEsIDU3LCA0OSwgMTI4LCA2NSwgCisgICAgNTEsIDU3LCA0OCwgMTI4LCA2NSwgNTEsIDU2LCA1NywgMTI4LCA2NSwgNTEsIDU2LCA1NiwgMTI4LCA2NSwgNTEsIDU2LCAKKyAgICA1NSwgMTI4LCA2NSwgNTEsIDU2LCA1NCwgNjUsIDEyOCwgNjUsIDUxLCA1NiwgNTQsIDEyOCwgNjUsIDUxLCA1NiwgNTMsIAorICAgIDEyOCwgNjUsIDUxLCA1NiwgNTIsIDEyOCwgNjUsIDUxLCA1NiwgNTEsIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDE3OSwgNjUsIAorICAgIDUxLCA1NiwgNTAsIDEyOCwgNjUsIDUxLCA1NiwgNDksIDY1LCAxMjgsIDY1LCA1MSwgNTYsIDQ5LCAxMjgsIDY1LCA1MSwgCisgICAgNTYsIDQ4LCAxMjgsIDY1LCA1MSwgNTUsIDU3LCAxMjgsIDY1LCA1MSwgNTUsIDU2LCAxMjgsIDY1LCA1MSwgNTUsIDU1LCAKKyAgICAxMjgsIDY1LCA1MSwgNTUsIDU0LCAxMjgsIDY1LCA1MSwgNTUsIDUzLCAxMjgsIDY1LCA1MSwgNTUsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTUsIDUxLCAxMjgsIDY1LCA1MSwgNTUsIDUwLCAxMjgsIDY1LCA1MSwgNTUsIDQ5LCA2NSwgMTI4LCA2NSwgNTEsIAorICAgIDU1LCA0OSwgMTI4LCA2NSwgNTEsIDU1LCA0OCwgMTI4LCA2NSwgNTEsIDU0LCA1NywgMTI4LCA2NSwgNTEsIDU0LCA1NiwgCisgICAgNjUsIDEyOCwgNjUsIDUxLCA1NCwgNTYsIDEyOCwgNjUsIDUxLCA1NCwgNTUsIDEyOCwgNjUsIDUxLCA1NCwgNTQsIDEyOCwgCisgICAgNjUsIDUxLCA1NCwgNTMsIDEyOCwgNjUsIDUxLCA1NCwgNTIsIDY1LCAxMjgsIDY1LCA1MSwgNTQsIDUyLCAxMjgsIDY1LCAKKyAgICA1MSwgNTQsIDUxLCAxMjgsIDY1LCA1MSwgNTQsIDUwLCAxMjgsIDY1LCA1MSwgNTQsIDQ5LCAxMjgsIDY1LCA1MSwgNTQsIAorICAgIDQ4LCAxMjgsIDY1LCA1MSwgNTMsIDU3LCA2NSwgMTI4LCA2NSwgNTEsIDUzLCA1NywgMTI4LCA2NSwgNTEsIDUzLCA1NiwgCisgICAgMTI4LCA2NSwgNTEsIDUzLCA1NSwgMTI4LCA2NSwgNTEsIDUzLCA1NCwgMTI4LCA2NSwgNTEsIDUzLCA1MywgMTI4LCA2NSwgCisgICAgNTEsIDUzLCA1MiwgMTI4LCA2NSwgNTEsIDUzLCA1MSwgMTI4LCA2NSwgNTEsIDUzLCA1MCwgMTI4LCA2NSwgNTEsIDUzLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUzLCA0OCwgMTI4LCA2NSwgNTEsIDUyLCA1NywgMTI4LCA2NSwgNTEsIDUyLCA1NiwgMTI4LCAKKyAgICA2NSwgNTEsIDUyLCA1NSwgMTI4LCA2NSwgNTEsIDUyLCA1NCwgMTI4LCA2NSwgNTEsIDUyLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUyLCA1MiwgMTI4LCA2NSwgNTEsIDUyLCA1MSwgMTI4LCA2NSwgNTEsIDUyLCA1MCwgMTI4LCA2NSwgNTEsIDUyLCA0OSwgCisgICAgMTI4LCA2NSwgNTEsIDUyLCA0OCwgMTI4LCA2NSwgNTEsIDUxLCA1NywgMTI4LCA2NSwgNTEsIDUxLCA1NiwgMTI4LCA2NSwgCisgICAgNTEsIDUxLCA1NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgNTQsIDY2LCAxMjgsIDY1LCAKKyAgICA1MSwgNTEsIDU0LCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1NCwgMTI4LCA2NSwgNTEsIDUxLCA1MywgMTI4LCA2NSwgNTEsIAorICAgIDUxLCA1MiwgMTI4LCA2NSwgNTEsIDUxLCA1MSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgNjcsIDEyOCwgNjUsIDUxLCA1MSwgCisgICAgNTAsIDY2LCAxMjgsIDY1LCA1MSwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgNTEsIDUxLCA1MCwgMTI4LCA2NSwgNTEsIDUxLCAKKyAgICA0OSwgMTI4LCA2NSwgNTEsIDUxLCA0OCwgMTI4LCA2NSwgNTEsIDUwLCA1NywgNjUsIDEyOCwgNjUsIDUxLCA1MCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA1MCwgNTYsIDEyOCwgNjUsIDUxLCA1MCwgNTUsIDEyOCwgNjUsIDUxLCA1MCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA1MCwgNTMsIDEyOCwgNjUsIDUxLCA1MCwgNTIsIDEyOCwgNjUsIDUxLCA1MCwgNTEsIDEyOCwgNjUsIDUxLCA1MCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA1MCwgNDksIDEyOCwgNjUsIDUxLCA1MCwgNDgsIDEyOCwgNjUsIDUxLCA0OSwgNTcsIDEyOCwgCisgICAgNjUsIDUxLCA0OSwgNTYsIDEyOCwgNjUsIDUxLCA0OSwgNTUsIDEyOCwgNjUsIDUxLCA0OSwgNTQsIDEyOCwgNjUsIDUxLCAKKyAgICA0OSwgNTMsIDEyOCwgNjUsIDUxLCA0OSwgNTIsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDY3LCAxMjgsIDY1LCA1MSwgNDksIAorICAgIDUxLCA2NiwgMTI4LCA2NSwgNTEsIDQ5LCA1MSwgNjUsIDEyOCwgNjUsIDUxLCA0OSwgNTEsIDEyOCwgNjUsIDUxLCA0OSwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OSwgNDksIDEyOCwgNjUsIDUxLCA0OSwgNDgsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIDY3LCAKKyAgICAxMjgsIDY1LCA1MSwgNDgsIDU3LCA2NiwgMTI4LCA2NSwgNTEsIDQ4LCA1NywgNjUsIDEyOCwgNjUsIDUxLCA0OCwgNTcsIAorICAgIDEyOCwgNjUsIDUxLCA0OCwgNTYsIDEyOCwgNjUsIDUxLCA0OCwgNTUsIDEyOCwgNjUsIDUxLCA0OCwgNTQsIDEyOCwgNjUsIAorICAgIDUxLCA0OCwgNTMsIDEyOCwgNjUsIDUxLCA0OCwgNTIsIDEyOCwgNjUsIDUxLCA0OCwgNTEsIDEyOCwgNjUsIDUxLCA0OCwgCisgICAgNTAsIDEyOCwgNjUsIDUxLCA0OCwgNDksIDEyOCwgNjUsIDUxLCA0OCwgNDgsIDEyOCwgNjUsIDUwLCA1NywgNTcsIDY1LCAKKyAgICAxMjgsIDY1LCA1MCwgNTcsIDU3LCAxMjgsIDY1LCA1MCwgNTcsIDU2LCAxMjgsIDY1LCA1MCwgNTcsIDU1LCAxMjgsIDY1LCAKKyAgICA1MCwgNTcsIDU0LCAxMjgsIDY1LCA1MCwgNTcsIDUzLCAxMjgsIDY1LCA1MCwgNTcsIDUyLCA2NSwgMTI4LCA2NSwgNTAsIAorICAgIDU3LCA1MiwgMTI4LCA2NSwgNTAsIDU3LCA1MSwgMTI4LCA2NSwgNTAsIDU3LCA1MCwgMTI4LCA2NSwgNTAsIDU3LCA0OSwgCisgICAgMTI4LCA2NSwgNTAsIDU3LCA0OCwgMTI4LCA2NSwgNTAsIDU2LCA1NywgNjUsIDEyOCwgNjUsIDUwLCA1NiwgNTcsIDEyOCwgCisgICAgNjUsIDUwLCA1NiwgNTYsIDEyOCwgNjUsIDUwLCA1NiwgNTUsIDEyOCwgNjUsIDUwLCA1NiwgNTQsIDEyOCwgNjUsIDUwLCAKKyAgICA1NiwgNTMsIDEyOCwgNjUsIDUwLCA1NiwgNTIsIDEyOCwgNjUsIDUwLCA1NiwgNTEsIDEyOCwgNjUsIDUwLCA1NiwgNTAsIAorICAgIDEyOCwgNjUsIDUwLCA1NiwgNDksIDEyOCwgNjUsIDUwLCA1NiwgNDgsIDEyOCwgNjUsIDUwLCA1NSwgNTcsIDEyOCwgNjUsIAorICAgIDUwLCA1NSwgNTYsIDEyOCwgNjUsIDUwLCA1NSwgNTUsIDEyOCwgNjUsIDUwLCA1NSwgNTQsIDEyOCwgNjUsIDUwLCA1NSwgCisgICAgNTMsIDEyOCwgNjUsIDUwLCA1NSwgNTIsIDEyOCwgNjUsIDUwLCA1NSwgNTEsIDEyOCwgNjUsIDUwLCA1NSwgNTAsIDEyOCwgCisgICAgNjUsIDUwLCA1NSwgNDksIDEyOCwgNjUsIDUwLCA1NSwgNDgsIDEyOCwgNjUsIDUwLCA1NCwgNTcsIDEyOCwgNjUsIDUwLCAKKyAgICA1NCwgNTYsIDEyOCwgNjUsIDUwLCA1NCwgNTUsIDY1LCAxMjgsIDY1LCA1MCwgNTQsIDU1LCAxMjgsIDY1LCA1MCwgNTQsIAorICAgIDU0LCAxMjgsIDY1LCA1MCwgNTQsIDUzLCAxMjgsIDY1LCA1MCwgNTQsIDUyLCAxMjgsIDY1LCA1MCwgNTQsIDUxLCAxMjgsIAorICAgIDY1LCA1MCwgNTQsIDUwLCAxMjgsIDY1LCA1MCwgNTQsIDQ5LCAxMjgsIDY1LCA1MCwgNTQsIDQ4LCAxMjgsIDY1LCA1MCwgCisgICAgNTMsIDU3LCAxMjgsIDY1LCA1MCwgNTMsIDU2LCAxMjgsIDY1LCA1MCwgNTMsIDU1LCAxMjgsIDY1LCA1MCwgNTMsIDU0LCAKKyAgICAxMjgsIDY1LCA1MCwgNTMsIDUzLCAxMjgsIDY1LCA1MCwgNTMsIDUyLCAxMjgsIDY1LCA1MCwgNTMsIDUxLCAxMjgsIDY1LCAKKyAgICA1MCwgNTMsIDUwLCAxMjgsIDY1LCA1MCwgNTMsIDQ5LCAxMjgsIDY1LCA1MCwgNTMsIDQ4LCAxMjgsIDY1LCA1MCwgNTIsIAorICAgIDU3LCAxMjgsIDY1LCA1MCwgNTIsIDU2LCAxMjgsIDY1LCA1MCwgNTIsIDU1LCAxMjgsIDY1LCA1MCwgNTIsIDU0LCAxMjgsIAorICAgIDY1LCA1MCwgNTIsIDUzLCAxMjgsIDY1LCA1MCwgNTIsIDUyLCAxMjgsIDY1LCA1MCwgNTIsIDUxLCAxMjgsIDY1LCA1MCwgCisgICAgNTIsIDUwLCAxMjgsIDY1LCA1MCwgNTIsIDQ5LCAxMjgsIDY1LCA1MCwgNTIsIDQ4LCAxMjgsIDY1LCA1MCwgNTEsIDU3LCAKKyAgICAxMjgsIDY1LCA1MCwgNTEsIDU2LCAxMjgsIDY1LCA1MCwgNTEsIDU1LCAxMjgsIDY1LCA1MCwgNTEsIDU0LCAxMjgsIDY1LCAKKyAgICA1MCwgNTEsIDUzLCAxMjgsIDY1LCA1MCwgNTEsIDUyLCAxMjgsIDY1LCA1MCwgNTEsIDUxLCAxMjgsIDY1LCA1MCwgNTEsIAorICAgIDUwLCAxMjgsIDY1LCA1MCwgNTEsIDQ5LCAxMjgsIDY1LCA1MCwgNTEsIDQ4LCAxMjgsIDY1LCA1MCwgNTAsIDU3LCAxMjgsIAorICAgIDY1LCA1MCwgNTAsIDU2LCAxMjgsIDY1LCA1MCwgNTAsIDU1LCA2NSwgMTI4LCA2NSwgNTAsIDUwLCA1NSwgMTI4LCA2NSwgCisgICAgNTAsIDUwLCA1NCwgMTI4LCA2NSwgNTAsIDUwLCA1MywgMTI4LCA2NSwgNTAsIDUwLCA1MiwgMTI4LCA2NSwgNTAsIDUwLCAKKyAgICA1MSwgMTI4LCA2NSwgNTAsIDUwLCA1MCwgMTI4LCA2NSwgNTAsIDUwLCA0OSwgMTI4LCA2NSwgNTAsIDUwLCA0OCwgMTI4LCAKKyAgICA2NSwgNTAsIDQ5LCA1NywgMTI4LCA2NSwgNTAsIDQ5LCA1NiwgMTI4LCA2NSwgNTAsIDQ5LCA1NSwgMTI4LCA2NSwgNTAsIAorICAgIDQ5LCA1NCwgNjUsIDEyOCwgNjUsIDUwLCA0OSwgNTQsIDEyOCwgNjUsIDUwLCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA1MCwgCisgICAgNDksIDUzLCAxMjgsIDY1LCA1MCwgNDksIDUyLCAxMjgsIDY1LCA1MCwgNDksIDUxLCAxMjgsIDY1LCA1MCwgNDksIDUwLCAKKyAgICAxMjgsIDY1LCA1MCwgNDksIDQ5LCAxMjgsIDY1LCA1MCwgNDksIDQ4LCAxMjgsIDY1LCA1MCwgNDgsIDU3LCA2NSwgMTI4LCAKKyAgICA2NSwgNTAsIDQ4LCA1NywgMTI4LCA2NSwgNTAsIDQ4LCA1NiwgMTI4LCA2NSwgNTAsIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIAorICAgIDUwLCA0OCwgNTUsIDEyOCwgNjUsIDUwLCA0OCwgNTQsIDEyOCwgNjUsIDUwLCA0OCwgNTMsIDEyOCwgNjUsIDUwLCA0OCwgCisgICAgNTIsIDEyOCwgNjUsIDUwLCA0OCwgNTEsIDEyOCwgNjUsIDUwLCA0OCwgNTAsIDY2LCAxMjgsIDY1LCA1MCwgNDgsIDUwLCAKKyAgICA2NSwgMTI4LCA2NSwgNTAsIDQ4LCA1MCwgMTI4LCA2NSwgNTAsIDQ4LCA0OSwgMTI4LCA2NSwgNTAsIDQ4LCA0OCwgMTI4LCAKKyAgICA2NSwgNDksIDU3LCA1NywgMTI4LCA2NSwgNDksIDU3LCA1NiwgMTI4LCA2NSwgNDksIDU3LCA1NSwgMTI4LCA2NSwgNDksIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDksIDU3LCA1MywgMTI4LCA2NSwgNDksIDU3LCA1MiwgMTI4LCA2NSwgNDksIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDksIDU3LCA1MCwgMTI4LCA2NSwgNDksIDU3LCA0OSwgMTI4LCA2NSwgNDksIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDksIDU2LCA1NywgMTI4LCA2NSwgNDksIDU2LCA1NiwgMTI4LCA2NSwgNDksIDU2LCA1NSwgMTI4LCA2NSwgNDksIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDksIDU2LCA1MywgMTI4LCA2NSwgNDksIDU2LCA1MiwgMTI4LCA2NSwgNDksIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDksIDU2LCA1MCwgMTI4LCA2NSwgNDksIDU2LCA0OSwgMTI4LCA2NSwgNDksIDU2LCA0OCwgMTI4LCA2NSwgNDksIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDksIDU1LCA1NiwgMTI4LCA2NSwgNDksIDU1LCA1NSwgMTI4LCA2NSwgNDksIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDksIDU1LCA1MywgMTI4LCA2NSwgNDksIDU1LCA1MiwgMTI4LCA2NSwgNDksIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDksIDU1LCA1MCwgMTI4LCA2NSwgNDksIDU1LCA0OSwgMTI4LCA2NSwgNDksIDU1LCA0OCwgMTI4LCA2NSwgNDksIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDksIDU0LCA1NiwgMTI4LCA2NSwgNDksIDU0LCA1NSwgMTI4LCA2NSwgNDksIDU0LCA1NCwgMTI4LCAKKyAgICA2NSwgNDksIDU0LCA1MywgMTI4LCA2NSwgNDksIDU0LCA1MiwgMTI4LCA2NSwgNDksIDU0LCA1MSwgMTI4LCA2NSwgNDksIAorICAgIDU0LCA1MCwgMTI4LCA2NSwgNDksIDU0LCA0OSwgMTI4LCA2NSwgNDksIDU0LCA0OCwgMTI4LCA2NSwgNDksIDUzLCA1NywgCisgICAgMTI4LCA2NSwgNDksIDUzLCA1NiwgMTI4LCA2NSwgNDksIDUzLCA1NSwgMTI4LCA2NSwgNDksIDUzLCA1NCwgMTI4LCA2NSwgCisgICAgNDksIDUzLCA1MywgMTI4LCA2NSwgNDksIDUzLCA1MiwgMTI4LCA2NSwgNDksIDUzLCA1MSwgMTI4LCA2NSwgNDksIDUzLCAKKyAgICA1MCwgMTI4LCA2NSwgNDksIDUzLCA0OSwgMTI4LCA2NSwgNDksIDUzLCA0OCwgMTI4LCA2NSwgNDksIDUyLCA1NywgMTI4LCAKKyAgICA2NSwgNDksIDUyLCA1NiwgMTI4LCA2NSwgNDksIDUyLCA1NSwgMTI4LCA2NSwgNDksIDUyLCA1NCwgMTI4LCA2NSwgNDksIAorICAgIDUyLCA1MywgMTI4LCA2NSwgNDksIDUyLCA1MiwgMTI4LCA2NSwgNDksIDUyLCA1MSwgMTI4LCA2NSwgNDksIDUyLCA1MCwgCisgICAgMTI4LCA2NSwgNDksIDUyLCA0OSwgMTI4LCA2NSwgNDksIDUyLCA0OCwgMTI4LCA2NSwgNDksIDUxLCA1NywgMTI4LCA2NSwgCisgICAgNDksIDUxLCA1NiwgMTI4LCA2NSwgNDksIDUxLCA1NSwgMTI4LCA2NSwgNDksIDUxLCA1NCwgMTI4LCA2NSwgNDksIDUxLCAKKyAgICA1MywgNjUsIDEyOCwgNjUsIDQ5LCA1MSwgNTMsIDEyOCwgNjUsIDQ5LCA1MSwgNTIsIDEyOCwgNjUsIDQ5LCA1MSwgNTEsIAorICAgIDEyOCwgNjUsIDQ5LCA1MSwgNTAsIDEyOCwgNjUsIDQ5LCA1MSwgNDksIDY3LCAxMjgsIDY1LCA0OSwgNTEsIDQ5LCAxMjgsIAorICAgIDY1LCA0OSwgNTEsIDQ4LCAxMjgsIDY1LCA0OSwgNTAsIDU3LCAxMjgsIDY1LCA0OSwgNTAsIDU2LCAxMjgsIDY1LCA0OSwgCisgICAgNTAsIDU1LCAxMjgsIDY1LCA0OSwgNTAsIDU0LCAxMjgsIDY1LCA0OSwgNTAsIDUzLCA2NSwgMTI4LCA2NSwgNDksIDUwLCAKKyAgICA1MywgMTI4LCA2NSwgNDksIDUwLCA1MiwgMTI4LCA2NSwgNDksIDUwLCA1MSwgMTI4LCA2NSwgNDksIDUwLCA1MCwgMTI4LCAKKyAgICA2NSwgNDksIDUwLCA0OSwgMTI4LCA2NSwgNDksIDUwLCA0OCwgNjYsIDEyOCwgNjUsIDQ5LCA1MCwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OSwgNTcsIDEyOCwgNjUsIDQ5LCA0OSwgNTYsIDEyOCwgNjUsIDQ5LCA0OSwgNTUsIDEyOCwgNjUsIDQ5LCA0OSwgCisgICAgNTQsIDEyOCwgNjUsIDQ5LCA0OSwgNTMsIDY1LCAxMjgsIDY1LCA0OSwgNDksIDUzLCAxMjgsIDY1LCA0OSwgNDksIDUyLCAKKyAgICAxMjgsIDY1LCA0OSwgNDksIDUxLCAxMjgsIDY1LCA0OSwgNDksIDUwLCAxMjgsIDY1LCA0OSwgNDksIDQ5LCAxMjgsIDY1LCAKKyAgICA0OSwgNDksIDQ4LCA2NiwgMTI4LCA2NSwgNDksIDQ5LCA0OCwgNjUsIDEyOCwgNjUsIDQ5LCA0OSwgNDgsIDEyOCwgNjUsIAorICAgIDQ5LCA0OCwgNTcsIDEyOCwgNjUsIDQ5LCA0OCwgNTYsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDY3LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDU1LCA2NiwgMTI4LCA2NSwgNDksIDQ4LCA1NSwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTUsIDEyOCwgNjUsIDQ5LCAKKyAgICA0OCwgNTQsIDEyOCwgNjUsIDQ5LCA0OCwgNTMsIDY2LCAxMjgsIDY1LCA0OSwgNDgsIDUzLCA2NSwgMTI4LCA2NSwgNDksIAorICAgIDQ4LCA1MywgMTI4LCA2NSwgNDksIDQ4LCA1MiwgNjcsIDEyOCwgNjUsIDQ5LCA0OCwgNTIsIDY2LCAxMjgsIDY1LCA0OSwgCisgICAgNDgsIDUyLCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA1MiwgMTI4LCA2NSwgNDksIDQ4LCA1MSwgMTI4LCA2NSwgNDksIDQ4LCAKKyAgICA1MCwgNjUsIDEyOCwgNjUsIDQ5LCA0OCwgNTAsIDEyOCwgNjUsIDQ5LCA0OCwgNDksIDY1LCAxMjgsIDY1LCA0OSwgNDgsIAorICAgIDQ5LCAxMjgsIDY1LCA0OSwgNDgsIDQ4LCA2NSwgMTI4LCA2NSwgNDksIDQ4LCA0OCwgNDUsIDQ5LCA0OCwgNTAsIDEyOCwgCisgICAgNjUsIDQ5LCA0OCwgNDgsIDEyOCwgNjUsIDQ4LCA1NywgNTcsIDEyOCwgNjUsIDQ4LCA1NywgNTYsIDY1LCAxMjgsIDY1LCAKKyAgICA0OCwgNTcsIDU2LCAxMjgsIDY1LCA0OCwgNTcsIDU1LCA2NSwgMTI4LCA2NSwgNDgsIDU3LCA1NSwgMTI4LCA2NSwgNDgsIAorICAgIDU3LCA1NCwgMTI4LCA2NSwgNDgsIDU3LCA1MywgMTI4LCA2NSwgNDgsIDU3LCA1MiwgMTI4LCA2NSwgNDgsIDU3LCA1MSwgCisgICAgMTI4LCA2NSwgNDgsIDU3LCA1MCwgMTI4LCA2NSwgNDgsIDU3LCA0OSwgMTI4LCA2NSwgNDgsIDU3LCA0OCwgMTI4LCA2NSwgCisgICAgNDgsIDU2LCA1NywgMTI4LCA2NSwgNDgsIDU2LCA1NiwgMTI4LCA2NSwgNDgsIDU2LCA1NSwgMTI4LCA2NSwgNDgsIDU2LCAKKyAgICA1NCwgMTI4LCA2NSwgNDgsIDU2LCA1MywgMTI4LCA2NSwgNDgsIDU2LCA1MiwgMTI4LCA2NSwgNDgsIDU2LCA1MSwgMTI4LCAKKyAgICA2NSwgNDgsIDU2LCA1MCwgMTI4LCA2NSwgNDgsIDU2LCA0OSwgMTI4LCA2NSwgNDgsIDU2LCA0OCwgMTI4LCA2NSwgNDgsIAorICAgIDU1LCA1NywgMTI4LCA2NSwgNDgsIDU1LCA1NiwgMTI4LCA2NSwgNDgsIDU1LCA1NSwgMTI4LCA2NSwgNDgsIDU1LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU1LCA1MywgMTI4LCA2NSwgNDgsIDU1LCA1MiwgMTI4LCA2NSwgNDgsIDU1LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU1LCA1MCwgMTI4LCA2NSwgNDgsIDU1LCA0OSwgMTI4LCA2NSwgNDgsIDU1LCA0OCwgMTI4LCA2NSwgNDgsIDU0LCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDU0LCA1NiwgMTI4LCA2NSwgNDgsIDU0LCA1NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgNjcsIAorICAgIDEyOCwgNjUsIDQ4LCA1NCwgNTQsIDY2LCAxMjgsIDY1LCA0OCwgNTQsIDU0LCA2NSwgMTI4LCA2NSwgNDgsIDU0LCA1NCwgCisgICAgMTI4LCA2NSwgNDgsIDU0LCA1MywgMTI4LCA2NSwgNDgsIDU0LCA1MiwgMTI4LCA2NSwgNDgsIDU0LCA1MSwgMTI4LCA2NSwgCisgICAgNDgsIDU0LCA1MCwgMTI4LCA2NSwgNDgsIDU0LCA0OSwgMTI4LCA2NSwgNDgsIDU0LCA0OCwgMTI4LCA2NSwgNDgsIDUzLCAKKyAgICA1NywgMTI4LCA2NSwgNDgsIDUzLCA1NiwgMTI4LCA2NSwgNDgsIDUzLCA1NSwgMTI4LCA2NSwgNDgsIDUzLCA1NCwgMTI4LCAKKyAgICA2NSwgNDgsIDUzLCA1MywgMTI4LCA2NSwgNDgsIDUzLCA1MiwgMTI4LCA2NSwgNDgsIDUzLCA1MSwgMTI4LCA2NSwgNDgsIAorICAgIDUzLCA1MCwgMTI4LCA2NSwgNDgsIDUzLCA0OSwgMTI4LCA2NSwgNDgsIDUzLCA0OCwgMTI4LCA2NSwgNDgsIDUyLCA1NywgCisgICAgMTI4LCA2NSwgNDgsIDUyLCA1NiwgMTI4LCA2NSwgNDgsIDUyLCA1NSwgMTI4LCA2NSwgNDgsIDUyLCA1NCwgNjYsIDEyOCwgCisgICAgNjUsIDQ4LCA1MiwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDU0LCAxMjgsIDY1LCA0OCwgNTIsIDUzLCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDUyLCA1MywgMTI4LCA2NSwgNDgsIDUyLCA1MiwgMTI4LCA2NSwgNDgsIDUyLCA1MSwgNjUsIDEyOCwgNjUsIAorICAgIDQ4LCA1MiwgNTEsIDEyOCwgNjUsIDQ4LCA1MiwgNTAsIDY1LCAxMjgsIDY1LCA0OCwgNTIsIDUwLCAxMjgsIDY1LCA0OCwgCisgICAgNTIsIDQ5LCA2NSwgMTI4LCA2NSwgNDgsIDUyLCA0OSwgMTI4LCA2NSwgNDgsIDUyLCA0OCwgNjUsIDEyOCwgNjUsIDQ4LCAKKyAgICA1MiwgNDgsIDEyOCwgNjUsIDQ4LCA1MSwgNTcsIDY1LCAxMjgsIDY1LCA0OCwgNTEsIDU3LCAxMjgsIDY1LCA0OCwgNTEsIAorICAgIDU2LCAxMjgsIDY1LCA0OCwgNTEsIDU1LCAxMjgsIDY1LCA0OCwgNTEsIDU0LCAxMjgsIDY1LCA0OCwgNTEsIDUzLCAxMjgsIAorICAgIDY1LCA0OCwgNTEsIDUyLCAxMjgsIDY1LCA0OCwgNTEsIDUxLCAxMjgsIDY1LCA0OCwgNTEsIDUwLCA2NSwgMTI4LCA2NSwgCisgICAgNDgsIDUwLCA1NiwgNjYsIDEyOCwgNjUsIDQ4LCA1MCwgNTQsIDY1LCAxMjgsIDY1LCA0OCwgNDksIDU1LCA2NSwgMTI4LCAKKyAgICA2NSwgNDgsIDQ5LCA1MiwgNjUsIDEyOCwgNjUsIDQ4LCA0OSwgNDgsIDY1LCAxMjgsIDY1LCA0OCwgNDgsIDU0LCA2NiwgCisgICAgMTI4LCA2NSwgNDgsIDQ4LCA1NCwgNjUsIDEyOCwgNjUsIDQ4LCA0OCwgNTMsIDY1LCAxMjgsIDY1LCA0NSwgNjksIDg1LCAKKyAgICAxMjgsIDQ1LCA4NSwgMjA1LCA0NSwgODAsIDcyLCA4MiwgODUsIDEyOCwgNDUsIDc1LCA3MiwgODksIDg1LCAxOTYsIDQ1LCAKKyAgICA3NSwgNzIsIDg5LCA3MywgNzYsIDEyOCwgNDUsIDY4LCA5MCwgODUsIDE5NiwgNDUsIDY3LCA3MiwgNjUsIDIxMCwgNDUsIAorICAgIDY3LCA3MiwgNjUsIDc2LCAxMjgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGludCBsZXhpY29uX29mZnNldFtdID0gewotICAgIDAsIDAsIDYsIDEwLCAxNCwgMjIsIDI3LCAzNCwgNDQsIDQ5LCA1OCwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCi0gICAgMTEzLCAxMTgsIDEyNiwgMTM1LCAxNDYsIDE1MSwgMTU2LCAxNjEsIDE2NCwgMTY4LCAxNzcsIDE4MywgMTg5LCAxOTQsIAotICAgIDIwMSwgMjA5LCAyMTcsIDIxOCwgMjIxLCAyMjksIDE2NSwgMjM1LCAyNDQsIDI1MSwgMjYxLCAyNjcsIDI3NCwgMjc5LCAKLSAgICAyODIsIDI4NywgMjkzLCAyOTYsIDMwMCwgMzA1LCAzMTEsIDMxNywgMzIyLCAzMjcsIDMzMywgMzM5LCAzNDgsIDM1NSwgCi0gICAgMzYyLCAzNzEsIDM3NiwgMzgxLCAzODMsIDM5MSwgMzk5LCA0MDAsIDQwOCwgNDEwLCA0MTcsIDQyMCwgNDI2LCA0MzMsIAotICAgIDMzMSwgNDM4LCA0NDAsIDQ0MiwgNDQ5LCA0NTEsIDQ1NiwgNDY0LCA0NzEsIDQ3NiwgNDgwLCA0ODYsIDQ5MSwgNTAxLCAKLSAgICA1MDYsIDUxMywgNTE2LCA1MjQsIDUyOCwgNTM4LCA1NDUsIDU1NCwgNTYxLCA1NzAsIDU3NywgNTgwLCA1ODQsIDU5MiwgCi0gICAgNTk4LCA2MTEsIDYxOCwgNjIyLCA2MjYsIDYyNywgNjM2LCA2NDAsIDY0OSwgNjU1LCA2NTksIDY2MSwgNjY2LCA2NzQsIAotICAgIDY3OCwgNjg2LCA2OTEsIDY5NCwgNzAwLCA3MDMsIDcwNywgNzEyLCA3MjAsIDcyMywgNzMwLCA3MzUsIDc0NCwgNzUzLCAKLSAgICA3NjEsIDc2OSwgNzczLCA3NzksIDc4NywgNzk0LCA3OTcsIDgwNywgODExLCA4MTUsIDgyNiwgODMzLCA4NDAsIDg0NCwgCi0gICAgODQ4LCA4NTQsIDg0MiwgODYzLCA4NjksIDg3NCwgODc5LCA4ODMsIDg4NiwgODg5LCA4OTQsIDkwMywgOTExLCA5MTYsIAotICAgIDY1OCwgNTc1LCA5MjEsIDkyNCwgOTMwLCA5MzQsIDkzOCwgOTQ3LCA5NTMsIDk2MCwgOTY5LCA5NzYsIDk4OSwgOTk0LCAKLSAgICA5OTgsIDEwMDYsIDEwMDksIDEwMTUsIDEwMjEsIDEwMzAsIDEwMzcsIDEwNDUsIDEwNTIsIDEwNjIsIDEwNjksIDEwNzcsIAotICAgIDEwODYsIDEwOTAsIDEwOTMsIDExMDAsIDIxLCAxMTA0LCAxMTEzLCAxMTIxLCAxMTI4LCAxMTMxLCAxMTM2LCAxMTM4LCAKLSAgICAxMTQyLCAxMTUxLCAxMTU2LCAxMTU5LCAxMTY1LCAxMTcyLCAxMTc1LCAxMTgwLCAxMTg1LCAxMTkxLCAxMTk2LCAxMjAxLCAKLSAgICAxMjA2LCAxMjEwLCAxMjE1LCAxMjIxLCAxMjI2LCAxMjMxLCAxMjM1LCAxMjQxLCAxMjQ2LCAxMjUxLCAxMjU2LCAxMjYwLCAKLSAgICAxMjY1LCAxMjcwLCAxMjc1LCAxMjgxLCAxMjg3LCAxMjkzLCAxMjk4LCAxMzAyLCAxMzA3LCAxMzEyLCAxMzE3LCAxMzIxLCAKLSAgICAxMzI2LCAxMzMxLCAxMzM2LCAxMzQxLCAxMTc2LCAxMTgxLCAxMTg2LCAxMTkyLCAxMTk3LCAxMzQ1LCAxMjA3LCAxMzUxLCAKLSAgICAxMzU2LCAxMzYxLCAxMzY4LCAxMzcyLCAxMzc1LCAxMzg0LCAxMjExLCAxMzg4LCAxMjE2LCAxMjIyLCAxMjI3LCAxMzkyLCAKLSAgICAxMzk3LCAxNDAyLCAxNDA2LCAxNDEwLCAxNDE2LCAxNDIwLCAxMjMyLCAxNDIzLCAxNDI1LCAxMjQyLCAxNDMwLCAxNDM0LCAKLSAgICAxMjQ3LCAxNDQwLCAxMjUyLCAxNDQ0LCAxNDQ4LCAxMjU3LCAxNDUyLCAxNDU3LCAxNDYxLCAxNDY0LCAxNDY4LCAxMjYxLCAKLSAgICAxMjY2LCAxNDczLCAxNDc5LCAxMjcxLCAxNDkxLCAxNDk3LCAxNTAzLCAxNTA5LCAxMjc2LCAxMjg4LCAxMjk0LCAxNTEzLCAKLSAgICAxNTE3LCAxNTIxLCAxNTI0LCAxMjk5LCAxNTI4LCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ2LCAxNTUxLCAxNTU2LCAxNTYwLCAKLSAgICAxNTY1LCAxNTcwLCAxNTc1LCAxNTgwLCAxNTg2LCAxNTkxLCAxNTk2LCAxNjAyLCAxNjA4LCAxNjEzLCAxNjE3LCAxNjIyLCAKLSAgICAxNjI3LCAxNjMyLCAxNjM3LCAxNjQyLCAxNjQ2LCAxNjU0LCAxNjU5LCAxNjYzLCAxNjY4LCAxNjczLCAxNjc4LCAxNjgzLCAKLSAgICAxNjg3LCAxNjkwLCAxNjk3LCAxNzAyLCAxNzA3LCAxNzEyLCAxNzE3LCAxNzIzLCAxNzI4LCAxNzMyLCAxMzAzLCAxNzM1LCAKLSAgICAxNzQwLCAxNzQ1LCAxMzA4LCAxNzQ5LCAxNzUzLCAxNzYwLCAxMzEzLCAxNzY3LCAxMzE4LCAxNzcxLCAxNzczLCAxNzc4LCAKLSAgICAxNzg0LCAxMzIyLCAxNzg5LCAxNzk4LCAxMzI3LCAxODAzLCAxODA5LCAxODE0LCAxMzMyLCAxODE5LCAxODI0LCAxODI3LCAKLSAgICAxODMyLCAxODM2LCAxODQwLCAxODQ0LCAxODQ3LCAxODUxLCAxMzM3LCAxODU2LCAxMzQyLCAxODYwLCAxODYyLCAxODY4LCAKLSAgICAxODc0LCAxODgwLCAxODg2LCAxODkyLCAxODk4LCAxOTA0LCAxOTEwLCAxOTE1LCAxOTIxLCAxOTI3LCAxOTMzLCAxOTM5LCAKLSAgICAxOTQ1LCAxOTUxLCAxOTU3LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg0LCAxOTg5LCAxOTk0LCAxOTk5LCAyMDA0LCAKLSAgICAyMDA5LCAyMDE0LCAyMDE5LCAyMDI1LCAyMDMwLCAyMDM2LCAyMDQxLCAyMDQ3LCAyMDUzLCAyMDU4LCAyMDY0LCAyMDcwLCAKLSAgICAyMDc2LCAyMDgyLCAyMDg3LCAyMDkyLCAyMDk0LCAyMDk1LCAyMDk5LCAyMTAzLCAyMTA4LCAyMTEyLCAyMTE2LCAyMTIwLCAKLSAgICAyMTI1LCAyMTI5LCAyMTMyLCAyMTM3LCAyMTQxLCAyMTQ2LCAyMTUwLCAyMTU0LCAyMTU5LCAyMTYzLCAyMTY2LCAyMTcwLCAKLSAgICAyMTc2LCAyMTkwLCAyMTk0LCAyMTk4LCAyMjAyLCAyMjA1LCAyMjEwLCAyMjE0LCAyMjE4LCAyMjIxLCAyMjI1LCAyMjMwLCAKLSAgICAyMjM1LCAyMjQwLCAyMjQ1LCAyMjQ5LCAyMjUzLCAyMjU3LCAyMjYxLCAyMjY2LCAyMjcwLCAyMjc1LCAyMjc5LCAyMjg0LCAKLSAgICAyMjkwLCAyMjk3LCAyMzAzLCAyMzA4LCAyMzEzLCAyMzE4LCAyMzI0LCAyMzI5LCAyMzM1LCAyMzQwLCAyMzQzLCAyMzQ1LCAKLSAgICAxMTkzLCAyMzQ5LCAyMzU2LCAyMzY0LCAyMzc0LCAyMzgzLCAyMzk3LCAyNDAxLCAyNDA1LCAyNDEwLCAyNDIzLCAyNDMxLCAKLSAgICAyNDM1LCAyNDQwLCAyNDQ0LCAyNDQ3LCAyNDUxLCAyNDU1LCAyNDYwLCAyNDY1LCAyNDcwLCAyNDc0LCAyNDc3LCAyNDgxLCAKLSAgICAyNDg4LCAyNDk1LCAyNTAxLCAyNTA2LCAyNTExLCAyNTE3LCAyNTIzLCAyNTI4LCAyNTMxLCAxNzc1LCAyNTMzLCAyNTM5LCAKLSAgICAyNTQzLCAyNTQ4LCAyNTUyLCAyNTU2LCAxNjkzLCAxNzg2LCAyNTYxLCAyNTY1LCAyNTY4LCAyNTczLCAyNTc4LCAyNTgzLCAKLSAgICAyNTg4LCAyNTkyLCAyNTk5LCAyNjA0LCAyNjA3LCAyNjE0LCAyNjIwLCAyNjI0LCAyNjI4LCAyNjMyLCAyNjM3LCAyNjQ0LCAKLSAgICAyNjQ5LCAyNjU0LCAyNjYxLCAyNjY3LCAyNjczLCAyNjc5LCAyNjkzLCAyNzEwLCAyNzI1LCAyNzQwLCAyNzQ5LCAyNzU0LCAKLSAgICAyNzU4LCAyNzYzLCAyNzY4LCAyNzcyLCAyNzg0LCAyNzkxLCAyNzk3LCAyMjkzLCAyODAzLCAyODEwLCAyODE2LCAyODIwLCAKLSAgICAyODIzLCAyODMwLCAyODM2LCAyODQxLCAyODQ1LCAyODUwLCAyODU0LCAyODU4LCAyMTE3LCAyODYyLCAyODY3LCAyODcyLCAKLSAgICAyODc2LCAyODgxLCAyODg5LCAyODkzLCAyODk4LCAyOTAyLCAyOTA2LCAyOTEwLCAyOTE1LCAyOTIwLCAyOTI1LCAyOTI5LCAKLSAgICAyOTM0LCAyOTM5LCAyOTQzLCAyOTQ4LCAyOTUyLCAyOTU1LCAyOTU5LCAyOTYzLCAyOTcxLCAyOTc2LCAyOTgwLCAyOTg0LCAKLSAgICAyOTkwLCAyOTk5LCAzMDAzLCAzMDA3LCAzMDEzLCAzMDE4LCAzMDI1LCAzMDI5LCAzMDM5LCAzMDQzLCAzMDQ3LCAzMDUyLCAKLSAgICAzMDU2LCAzMDYxLCAzMDY3LCAzMDcyLCAzMDc2LCAzMDgwLCAzMDg0LCAyNDkxLCAzMDkyLCAzMDk3LCAzMTAzLCAzMTA4LCAKLSAgICAzMTEyLCAzMTE3LCAzMTIyLCAzMTI2LCAzMTMyLCAzMTM3LCAyMTIxLCAzMTQzLCAzMTQ5LCAzMTU0LCAzMTU5LCAzMTY0LCAKLSAgICAzMTY5LCAzMTc0LCAzMTc5LCAzMTg0LCAzMTg5LCAzMTk0LCAzMjAwLCAzMjA1LCAxMjA4LCAxMDEsIDMyMTEsIDMyMTUsIAotICAgIDMyMTksIDMyMjMsIDMyMjgsIDMyMzIsIDMyMzYsIDMyNDIsIDMyNDcsIDMyNTEsIDMyNTUsIDMyNjAsIDMyNjUsIDMyNjksIAotICAgIDMyNzQsIDMyNzgsIDMyODEsIDMyODUsIDMyOTAsIDMyOTQsIDMyOTksIDMzMDMsIDMzMDYsIDMzMTAsIDMzMTQsIDMzMTksIAotICAgIDMzMjMsIDMzMjYsIDMzMzksIDMzNDMsIDMzNDcsIDMzNTEsIDMzNTYsIDMzNjAsIDMzNjQsIDMzNjcsIDMzNzEsIDMzNzUsIAotICAgIDMzODAsIDMzODQsIDMzODksIDMzOTQsIDMzOTksIDM0MDMsIDM0MDgsIDM0MTEsIDM0MTQsIDM0MTksIDM0MjUsIDM0MjksIAotICAgIDM0MzMsIDM0MzYsIDM0NDEsIDM0NDUsIDM0NTAsIDM0NTQsIDM0NTgsIDM0NjEsIDM0NjcsIDM0NzIsIDM0NzcsIDM0ODMsIAotICAgIDM0ODgsIDM0OTMsIDM0OTksIDM1MDUsIDM1MTAsIDM1MTUsIDM1MjAsIDM1MjUsIDExNDAsIDU3OSwgMzUyOCwgMzUzMSwgCi0gICAgMzUzNiwgMzU0MCwgMzU0NCwgMzU0OCwgMzU1MiwgMzU1NSwgMzU1OSwgMzU2NCwgMzU2OSwgMzU3MywgMzU3OCwgMzU4MiwgCi0gICAgMzU4NywgMzU5MSwgMzU5NSwgMzU5OSwgMzYwNSwgMzYxMSwgMzYxNCwgMzYxNywgMTM5LCAzNjIzLCAzNjI4LCAzNjM3LCAKLSAgICAzNjQ1LCAzNjU0LCAzNjYxLCAzNjY3LCAzNjc0LCAzNjc5LCAzNjgzLCAzNjg3LCAzNjk1LCAzNzAyLCAzNzA3LCAzNzE0LCAKLSAgICAzNzE5LCAzNzIzLCAzNzMzLCAzNzM3LCAzNzQxLCAzNzQ2LCAzNzUxLCAzNzYxLCAyMTMzLCAzNzY2LCAzNzcwLCAzNzczLCAKLSAgICAzNzc5LCAzNzg0LCAzNzkwLCAzNzk2LCAzODAxLCAzODA4LCAzODEyLCAzODE2LCA2MzcsIDcwMSwgMTM2OSwgMzgyMCwgCi0gICAgMzgyNywgMzgzNCwgMzg0MCwgMzg0NSwgMzg1MiwgMzg1OSwgMzg2NCwgMzg3MCwgMzg3NiwgMzg4MSwgMzg4NSwgMzg5MSwgCi0gICAgMzg5OCwgMzkwMywgMzkwNywgMjE0MiwgMzkxMSwgMzkxOSwgMzkyNSwgMzkzMywgNzM5LCAzOTM5LCAzOTQ3LCAzOTU4LCAKLSAgICAzOTYyLCAzOTcyLCAyMTQ3LCAzOTc4LCAzOTgzLCAzOTk4LCA0MDA0LCA0MDExLCA0MDIxLCA0MDI3LCA0MDMyLCA0MDM4LCAKLSAgICA0MDQ0LCA0MDQ3LCA0MDUwLCA0MDU0LCA0MDU5LCA0MDY2LCA0MDcxLCA0MDc1LCA0MDc5LCA0MDgzLCA0MDg3LCA0MDkyLCAKLSAgICA0MDk4LCA0MTA5LCA0MTEzLCAzMjg2LCA0MTE4LCA0MTMwLCA0MTM2LCA0MTQ0LCA0MTQ4LCA0MTUzLCAxNTYyLCA0MTYwLCAKLSAgICA0MTYzLCA0MTY2LCA0MTcwLCA0MTczLCA0MTc5LCA0MTgzLCA0MTk3LCA0MjAxLCA0MjA0LCA0MjA4LCA0MjE0LCA0MjIwLCAKLSAgICA0MjI1LCA0MjI5LCA0MjMzLCA0MjM5LCA0MjUwLCA0MjU2LCA0MjYxLCA0MjY3LCA0MjcxLCA0Mjc5LCA0MjkxLCA0MzAxLCAKLSAgICA0MzA3LCA0MzEyLCA0MzIxLCA0MzI5LCA0MzM2LCA0MzQyLCA0MzQ2LCA0MzUyLCA0MzYxLCA0MzcwLCA0Mzc0LCA0MzgzLCAKLSAgICA0Mzg4LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA5LCA0NDE1LCA0NDE5LCA0NDI0LCA0NDI4LCA0NDM0LCAyMTU1LCAxMzg1LCAKLSAgICA0NDQwLCA0NDQ1LCA0NDUxLCA0NDU2LCA0NDYxLCA0NDY2LCA0NDcxLCA0NDc2LCA0NDgxLCA0NDg3LCA0NDkyLCA0NDk4LCAKLSAgICA0NTAzLCA0NTA4LCA0NTEzLCA0NTE5LCA0NTI0LCA0NTI5LCA0NTM0LCA0NTM5LCA0NTQ1LCA0NTUwLCA0NTU2LCA0NTYxLCAKLSAgICA0NTY2LCA0NTcxLCA0NTc2LCA0NTgxLCA0NTg2LCA0NTkyLCA0NTk3LCA0NjAyLCAyOTEsIDMyMSwgNDYwNywgNDYxMywgCi0gICAgNDYxNywgNDYyMSwgNDYyNiwgNDYzMCwgNDYzNCwgNDYzNywgNDY0MSwgNDY0NSwgNDY0OSwgNDY1MywgNDY1NywgNDY2MiwgCi0gICAgNDY2NiwgNDY3MCwgNDY3NiwgNDQzNywgNDY4MSwgNDY4NSwgNDY4OCwgNDY5MywgNDY5OCwgNDcwMywgNDcwOCwgNDcxMywgCi0gICAgNDcxOCwgNDcyMywgNDcyOCwgNDczMywgNDczOCwgNDc0MiwgNDc0NywgNDc1MiwgNDc1NywgNDc2MiwgNDc2NywgNDc3MiwgCi0gICAgNDc3NywgNDc4MiwgNDc4NywgNDc5MiwgNDc5NiwgNDgwMSwgNDgwNiwgNDgxMSwgNDgxNiwgNDgyMSwgNDgyNiwgNDgzMSwgCi0gICAgNDgzNiwgNDg0MSwgNDg0NiwgNDg1MCwgNDg1NSwgNDg2MCwgNDg2NSwgNDg3MCwgNDg3NSwgNDg4MCwgNDg4NSwgNDg5MCwgCi0gICAgNDg5NSwgNDkwMCwgNDkwNCwgNDkwOSwgNDkxNCwgNDkxOSwgNDkyNCwgNDkyOSwgNDkzNCwgNDkzOSwgNDk0NCwgNDk0OSwgCi0gICAgNDk1NCwgNDk1OCwgNDk2MywgNDk2OCwgNDk3MywgNDk3OCwgNDk4MywgNDk4OCwgNDk5MywgNDk5OCwgNTAwMywgNTAwOCwgCi0gICAgNTAxMiwgNTAxNywgNTAyMiwgNTAyNywgNTAzMiwgNTAzNywgNTA0MiwgNTA0NywgNTA1MiwgNTA1NywgNTA2MiwgNTA2NiwgCi0gICAgNTA3MSwgNTA3NiwgNTA4MSwgNTA4NiwgNTA5MiwgNTA5OCwgNTEwNCwgNTExMCwgNTExNiwgNTEyMiwgNTEyOCwgNTEzMywgCi0gICAgNTEzOSwgNTE0NSwgNTE1MSwgNTE1NywgNTE2MywgNTE2OSwgNTE3NSwgNTE4MSwgNTE4NywgNTE5MywgNTE5OCwgNTIwNCwgCi0gICAgNTIxMCwgNTIxNiwgNTIyMiwgNTIyOCwgNTIzNCwgNTI0MCwgNTI0NiwgNTI1MiwgNTI1OCwgNTI2MywgNTI2OSwgNTI3NSwgCi0gICAgNTI4MSwgNTI4NywgNTI5MywgNTI5OSwgNTMwNSwgNTMxMSwgNTMxNywgNTMyMywgNTMyOCwgNTMzNCwgNTM0MCwgNTM0NiwgCi0gICAgNTM1MiwgNTM1OCwgNTM2NCwgNTM3MCwgNTM3NiwgNTM4MiwgNTM4OCwgNTM5MywgNTM5OSwgNTQwNSwgNTQxMSwgNTQxNywgCi0gICAgNTQyMywgNTQyOSwgNTQzNSwgNTQ0MSwgNTQ0NywgNTQ1MywgNTQ1OCwgNTQ2MiwgNTQ2OCwgNTQ3NCwgNTQ4MCwgNTQ4NiwgCi0gICAgNTQ5MiwgNTQ5OCwgNTUwNCwgNTUxMCwgNTUxNiwgNTUyMiwgNTUyNywgNTUzMywgNTUzOSwgNTU0NSwgNTU1MSwgNTU1NywgCi0gICAgNTU2MywgNTU2OSwgNTU3NSwgNTU4MSwgNTU4NywgNTU5MiwgNTU5OCwgNTYwNCwgNTYxMCwgNTYxNiwgNTYyMiwgNTYyOCwgCi0gICAgNTYzNCwgNTY0MCwgNTY0NiwgNTY1MiwgNTY1NywgNTY2MywgNTY2OSwgNTY3NSwgNTY4MSwgNTY4NywgNTY5MywgNTY5OSwgCi0gICAgNTcwNSwgNTcxMSwgNTcxNywgNTcyMiwgNTcyOCwgNTczNCwgNTc0MCwgNTc0NiwgNTc1MiwgNTc1OCwgNTc2NCwgNTc3MCwgCi0gICAgNTc3NiwgNTc4MiwgNTc4NywgNTc5MywgNTc5OSwgNTgwNSwgNTgxMSwgNTgxNywgNTgyMywgNTgyOSwgNTgzNSwgNTg0MSwgCi0gICAgNTg0NywgNTg1MiwgNTg1OCwgNTg2NCwgNTg3MCwgNTg3NiwgNTg4MiwgNTg4OCwgNTg5NCwgNTkwMCwgNTkwNiwgNTkxMiwgCi0gICAgNTkxNywgNTkyMywgNTkyOSwgNTkzNSwgNTk0MSwgNTk0NywgNTk1MywgNTk1OSwgNTk2NSwgNTk3MSwgNTk3NywgNTk4MiwgCi0gICAgNTk4OCwgNTk5NCwgNjAwMCwgNjAwNiwgNjAxMiwgNjAxOCwgNjAyNCwgNjAzMCwgNjAzNiwgNjA0MiwgNjA0NywgNjA1MywgCi0gICAgNjA1OSwgNjA2NSwgNjA3MSwgNjA3NywgNjA4MywgNjA4OSwgNjA5NSwgNjEwMSwgNjEwNywgNjExMiwgNjExNiwgNjExOSwgCi0gICAgNjEyNiwgNjEzMCwgNjE0MywgNjE0NywgNjE1MSwgNjE1NSwgNjE1OCwgNjE2MiwgNjE2NywgNjE3MSwgNjE3NSwgNjE4MSwgCi0gICAgNjE4OCwgNjE5OSwgNjIwNywgNjIxNCwgNjIxOCwgNjIyNiwgNjIzNSwgNjI0MSwgNjI1MywgNjI1OCwgNjI2MSwgNjI2NiwgCi0gICAgNjI3MCwgNjI4MCwgNjI4OCwgNjI5NiwgNjMwMiwgNjMwNiwgNjMxNiwgNjMyNiwgNjMzNCwgNjM0MSwgNjM0OCwgNjM1NCwgCi0gICAgNjM2MCwgNjM2NywgNjM3MSwgNjM3OCwgNjM4OCwgNjM5OCwgNjQwNiwgNjQxMywgNjQxOCwgNjQyMiwgNjQyNiwgNjQzNCwgCi0gICAgNjQzOCwgNjQ0MywgNjQ1MCwgNjQ1OCwgNjQ2MywgNjQ2NywgNjQ3MiwgNjQ3NiwgNjQ4MywgNjQ4OCwgNjUwMiwgNjUwNywgCi0gICAgNjUxMiwgNjUxOSwgMzU0MSwgNjUyOCwgNjUzMiwgNjUzNywgNjU0MSwgNjU0NSwgNjU0OCwgNjU1MywgNjU1OCwgNjU2NywgCi0gICAgNjU3MywgNjU3OSwgNjU4NSwgNjU4OSwgNjYwMCwgNjYxMCwgNjYyNSwgNjY0MCwgNjY1NSwgNjY3MCwgNjY4NSwgNjcwMCwgCi0gICAgNjcxNSwgNjczMCwgNjc0NSwgNjc2MCwgNjc3NSwgNjc5MCwgNjgwNSwgNjgyMCwgNjgzNSwgNjg1MCwgNjg2NSwgNjg4MCwgCi0gICAgNjg5NSwgNjkxMCwgNjkyNSwgNjk0MCwgNjk1NSwgNjk3MCwgNjk4NSwgNzAwMCwgNzAxNSwgNzAzMCwgNzA0NSwgNzA2MCwgCi0gICAgNzA3NSwgNzA5MCwgNzEwNSwgNzEyMCwgNzEzNSwgNzE1MCwgNzE2NSwgNzE4MCwgNzE5NSwgNzIxMCwgNzIyNSwgNzI0MCwgCi0gICAgNzI1NSwgNzI3MCwgNzI4NSwgNzMwMCwgNzMxNSwgNzMzMCwgNzM0NSwgNzM1NCwgNzM2MywgNzM2OCwgNzM3NCwgNzM4NCwgCi0gICAgNzM4OCwgNzM5MiwgNzM5NywgNzQwMiwgNzQxMCwgNzQxNCwgNzQxNywgNzQyMSwgMzAzNCwgNzQyNCwgNzQyOSwgMzMwLCAKLSAgICA1MDQsIDc0MzUsIDc0NDMsIDc0NDcsIDc0NTEsIDc0NTQsIDc0NTgsIDc0NjQsIDc0NjgsIDc0NzYsIDc0ODIsIDc0ODcsIAotICAgIDc0OTQsIDc1MDIsIDc1MDksIDc1MTUsIDc1MjAsIDc1MjcsIDc1MzMsIDc1NDEsIDc1NDUsIDc1NTAsIDc1NjIsIDc1NzMsIAotICAgIDc1ODAsIDc1ODQsIDc1ODgsIDc1OTIsIDc1OTUsIDc2MDEsIDMzMTEsIDc2MDUsIDc2MTEsIDc2MTYsIDc2MjEsIDc2MjYsIAotICAgIDc2MzIsIDc2MzcsIDc2NDIsIDc2NDcsIDc2NTIsIDc2NTgsIDc2NjMsIDc2NjgsIDc2NzQsIDc2NzksIDc2ODUsIDc2OTAsIAotICAgIDc2OTYsIDc3MDEsIDc3MDcsIDc3MTIsIDc3MTcsIDc3MjIsIDc3MjcsIDc3MzIsIDc3MzgsIDc3NDMsIDc3NDgsIDc3NTMsIAotICAgIDc3NTksIDc3NjUsIDc3NzEsIDc3NzcsIDc3ODMsIDc3ODksIDc3OTUsIDc4MDEsIDc4MDcsIDc4MTMsIDc4MTksIDc4MjUsIAotICAgIDc4MzAsIDc4MzUsIDc4NDAsIDc4NDUsIDc4NTAsIDc4NTUsIDc4NjAsIDc4NjUsIDc4NzEsIDc4NzcsIDc4ODIsIDc4ODgsIAotICAgIDc4OTQsIDc5MDAsIDc5MDUsIDc5MTAsIDc5MTUsIDc5MjAsIDc5MjYsIDc5MzIsIDc5MzcsIDc5NDIsIDc5NDcsIDc5NTIsIAotICAgIDc5NTcsIDc5NjMsIDc5NjgsIDc5NzQsIDc5ODAsIDc5ODYsIDc5OTIsIDc5OTgsIDgwMDQsIDgwMTAsIDgwMTYsIDgwMjIsIAotICAgIDIxNjQsIDc0NTMsIDgwMjcsIDgwMzEsIDgwMzUsIDgwMzgsIDgwNDUsIDgwNDgsIDgwNTIsIDgwNjAsIDgwNjUsIDgwNzAsIAotICAgIDgwNjEsIDgwNzUsIDIxOTEsIDgwNzksIDgwODUsIDgwOTEsIDgwOTYsIDgxMDEsIDgxMDgsIDgxMTYsIDgxMjEsIDgxMjUsIAotICAgIDgxMjgsIDgxMzIsIDgxMzgsIDgxNDQsIDgxNDgsIDIxOTksIDUyNiwgODE1MSwgODE1NSwgODE2MCwgODE2NiwgODE3MSwgCi0gICAgODE3NSwgODE3OCwgODE4MiwgODE4OCwgODE5MywgODE5NywgODIwNCwgODIwOCwgODIxMiwgODIxNiwgODc2LCA5NTgsIAotICAgIDgyMTksIDgyMjcsIDgyMzQsIDgyNDAsIDgyNDcsIDgyNTUsIDgyNjIsIDgyNzMsIDgyODAsIDgyODYsIDgyOTEsIDgzMDMsIAotICAgIDEyMjgsIDEzOTMsIDEzOTgsIDgzMTQsIDE0MDMsIDgzMTgsIDgzMjIsIDgzMzEsIDgzMzksIDgzNDMsIDgzNTIsIDgzNTgsIAotICAgIDgzNjMsIDgzNjcsIDgzNzMsIDgzNzgsIDgzODUsIDI3NDUsIDgzOTIsIDgzOTYsIDg0MDUsIDg0MTQsIDg0MjMsIDg0MzIsIAotICAgIDg0MzgsIDg0NDMsIDg0NDgsIDg0NTksIDg0NzEsIDg0NzYsIDg0ODQsIDIyNTAsIDg0ODgsIDg0OTAsIDg0OTUsIDg0OTksIAotICAgIDg1MDgsIDg1MTYsIDE0MDcsIDE1OSwgMzU4MywgMzU4OCwgODUyMiwgODUyNiwgODUzNSwgODU0MSwgODU0NiwgODU0OSwgCi0gICAgODU1OCwgMzU5MiwgMjczNywgODU2NCwgODU3MiwgODU3NiwgODU4MCwgODU4NCwgMjI2NywgODU4OCwgODU5MywgODYwMCwgCi0gICAgODYwNiwgODYxMiwgODYxNSwgODYxNywgODYyMCwgODYyOCwgODYzNiwgODY0NCwgODY0NywgODY1MiwgMjI4MCwgODY1NywgCi0gICAgODA3MiwgODY2MCwgODY2MiwgODY2NywgODY3MiwgODY3NywgODY4MiwgODY4NywgODY5MiwgODY5NywgODcwMiwgODcwNywgCi0gICAgODcxMiwgODcxOCwgODcyMywgODcyOCwgODczMywgODczOSwgODc0NCwgODc0OSwgODc1NCwgODc1OSwgODc2NCwgODc2OSwgCi0gICAgODc3NSwgODc4MCwgODc4NSwgODc5MCwgODc5NSwgODgwMCwgODgwNSwgODgxMCwgODgxNSwgODgyMCwgODgyNSwgODgzMCwgCi0gICAgODgzNSwgODg0MCwgODg0NSwgODg1MCwgODg1NSwgODg2MCwgODg2NiwgODg3MiwgODg3NywgODg4MiwgODg4NywgODg5MiwgCi0gICAgODg5NywgMjI5MSwgMjI5OCwgMjMwNCwgODkwMiwgODkxMCwgODkxNiwgODkyNCwgMjMzMCwgMjMzNiwgODkzMiwgODkzNiwgCi0gICAgODk0MSwgODk0NSwgODk0OSwgODk1MywgODk1OCwgODk2MiwgODk2NywgODk3MSwgODk3NCwgODk3NywgODk4MywgODk5MCwgCi0gICAgODk5NiwgOTAwMywgOTAwOSwgOTAxNiwgOTAyMiwgOTAyOSwgOTAzNSwgOTA0MSwgOTA1MCwgOTA1NiwgOTA2MCwgOTA2NCwgCi0gICAgOTA2OCwgOTA3MiwgOTA3NywgOTA4MSwgOTA4NiwgOTA5MCwgOTA5NiwgOTEwMSwgOTEwOCwgOTExOSwgOTEyNywgOTEzNywgCi0gICAgOTE0MywgOTE1MywgOTE2MiwgOTE2OSwgOTE3NCwgOTE3OCwgOTE4OSwgOTIwMiwgOTIxMywgOTIyNiwgOTIzNywgOTI0OSwgCi0gICAgOTI2MSwgOTI3MywgOTI4NiwgOTI5OSwgOTMwNiwgOTMxMiwgOTMyNiwgOTMzMywgOTMzOSwgOTM0OCwgOTM1NiwgOTM2MCwgCi0gICAgOTM2NSwgOTM2OSwgOTM3NiwgOTM4NCwgOTM4OCwgOTM5NCwgOTM5OCwgOTQwNCwgOTQxNCwgOTQxOCwgOTQyMywgOTQyOCwgCi0gICAgOTQzNSwgOTQ0MSwgOTQ1MSwgODI0MiwgOTQ1NywgOTQ2MSwgOTQ2OCwgOTQ3NCwgOTQ4MSwgOTQ4OCwgOTU3LCA5NDkyLCAKLSAgICA5NDk2LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE1LCA5NTIxLCA5NTI5LCA5NTM1LCA5NTM5LCA5NTQyLCA5NTQ4LCA5NTU4LCAKLSAgICA5NTYyLCA5NTY4LCA5NTczLCA5NTc3LCA5NTgxLCA5NTg3LCA5NTkzLCAyMTg3LCA5NTk4LCA5NjAwLCA5NjA1LCA5NjEzLCAKLSAgICA5NjIyLCA5NjI2LCA5NjMyLCA5NjM3LCA5NjQyLCA5NjQ3LCA5NjUyLCA5NjU4LCA5NjYzLCA5NjY4LCA0MjM1LCA5NjczLCAKLSAgICA5Njc4LCA5NjgyLCA5Njg4LCA5NjkzLCA5Njk5LCA5NzA0LCA5NzA5LCA5NzE1LCA5NzIwLCA5NjI3LCA5NzI2LCA5NzMwLCAKLSAgICA5NzM3LCA5NzQzLCA5NzQ4LCA5NzUyLCA2NDk4LCA5NzU3LCA5NzY2LCA5NzcxLCA5Nzc2LCA4NTk2LCA4NjAzLCA5NzgxLCAKLSAgICAyOTEyLCA5Nzg1LCA5NzkwLCA5Nzk1LCA5ODAwLCA5NjM4LCA5ODA0LCA5ODA5LCA5ODE0LCA5NjQzLCA5ODE4LCA5NjQ4LCAKLSAgICA5ODIzLCA5ODMwLCA5ODM3LCA5ODQzLCA5ODUwLCA5ODU2LCA5ODYyLCA5ODY3LCA5ODc0LCA5ODc5LCA5ODg0LCA5ODg5LCAKLSAgICA5ODk1LCA5NjUzLCA5NjU5LCA5OTAxLCA5OTA3LCA5OTEyLCA5OTE3LCA5OTI1LCA5NjY0LCA5OTMwLCAxMTAyLCA5OTMzLCAKLSAgICA5OTQxLCA5OTQ3LCA5OTUzLCA5OTYyLCA5OTcwLCA5OTc4LCA5OTg2LCA5OTk0LCAxMDAwMiwgMTAwMTAsIDEwMDE4LCAKLSAgICAxMDAyNiwgMTAwMzUsIDEwMDQ0LCAxMDA1MiwgMTAwNjEsIDEwMDcwLCAxMDA3OSwgMTAwODgsIDEwMDk3LCAxMDEwNiwgCi0gICAgMTAxMTUsIDEwMTI0LCAxMDEzMywgMTAxNDIsIDEwMTUwLCAxMDE1NSwgMTAxNjEsIDEwMTY5LCAxMDE3NiwgMTAxOTEsIAotICAgIDEwMjA4LCAxMDIyNywgMTAyMzYsIDEwMjQ0LCAxMDI1OSwgMTAyNzAsIDEwMjgwLCAxMDI5MCwgMTAyOTgsIDEwMzA0LCAKLSAgICAxMDMxNiwgMTAzMjUsIDEwMzMzLCAxMDM0MCwgMTAzNDcsIDEwMzU0LCAxMDM2MCwgMTAzNjUsIDEwMzc1LCAxMDM4MywgCi0gICAgMTAzOTMsIDEwNDAwLCAxMDQxMCwgMTA0MjAsIDEwNDMwLCAxMDQzOCwgMTA0NDUsIDEwNDU0LCAxMDQ2NCwgMTA0NzgsIAotICAgIDEwNDkzLCAxMDUwMiwgMTA1MTAsIDEwNTE1LCAxMDUxOSwgMTA1MjgsIDEwNTM0LCAxMDUzOSwgMTA1NDksIDEwNTU5LCAKLSAgICAxMDU2OSwgMTA1NzQsIDEwNTc4LCAxMDU4NywgMTA1OTIsIDEwNjA4LCAxMDYyNSwgMTA2MzUsIDEwNjQ2LCAxMDY1OSwgCi0gICAgMTA2NjcsIDEwNjgwLCAxMDY5MiwgMTA3MDAsIDEwNzA1LCAxMDcwOSwgMTA3MTUsIDEwNzIwLCAxMDcyOCwgMTA3MzYsIAotICAgIDEwNzQzLCAxMDc0OCwgMTA3NTYsIDEwNzY2LCAxMDc3MiwgMTA3NzYsIDEwNzc5LCAxMDc4MywgMTA3ODksIDEwNzk2LCAKLSAgICAxMDgwMCwgMTA4MDgsIDEwODE3LCAxMDgyNSwgMTA4MzIsIDEwODM3LCAxMDg0MiwgMTA4NDYsIDEwODUwLCAxMDg1OCwgCi0gICAgMTA4NzMsIDEwODg5LCAxMDg5NSwgMTA5MDMsIDEwOTEyLCAxMDkyMCwgMTA5MjYsIDEwOTMwLCAxMDkzNywgMTA5NDgsIAotICAgIDEwOTUyLCAxMDk1NSwgMTA5NjEsIDk2NjksIDEwOTY2LCAxMDk3MiwgMTA5NzksIDEwOTg1LCAxMDk5MCwgMTA5OTcsIAotICAgIDExMDA0LCAxMTAxMSwgMTEwMTgsIDExMDI1LCAxMTAzMiwgMTEwMzksIDExMDQ2LCAxMTA1MSwgMTAyMDQsIDExMDU2LCAKLSAgICAxMTA2MiwgMTEwNjksIDExMDc2LCAxMTA4MSwgMTEwODgsIDExMDk3LCAxMTEwMSwgMTExMTMsIDg2MzQsIDExMTE3LCAKLSAgICAxMTEyMCwgMTExMjQsIDExMTI4LCAxMTEzMiwgMTExMzYsIDExMTQyLCAxMTE0OCwgMTExNTMsIDExMTU5LCAxMTE2NCwgCi0gICAgMTExNjksIDExMTc1LCAxMTE4MCwgMTExODUsIDk0MzEsIDExMTkwLCAxMTE5NCwgMTExOTgsIDExMjAyLCAxMTIwNywgCi0gICAgMTEyMTIsIDExMjE3LCAxMTIyNSwgMTEyMzEsIDExMjM2LCAxMTI0MCwgMTEyNDQsIDExMjUxLCAxMTI1NiwgMTEyNjQsIAotICAgIDExMjcxLCAxMTI3NiwgMTEyODAsIDExMjgzLCAxMTI4OSwgMTEyOTYsIDExMzAwLCAxMTMwMywgMTEzMDgsIDExMzEyLCAKLSAgICA0Mjc0LCAxMTMxOCwgMTEzMjcsIDQ2LCAxMTMzNSwgMTEzNDEsIDExMzQ2LCAxMTM1MSwgMTEzNTksIDExMzY2LCAxMTM3MSwgCi0gICAgOTQ0NiwgMTEzNzcsIDExMzgzLCAxMTM4OCwgMTEzOTIsIDExMzk1LCAxMTQxMCwgMTE0MjksIDExNDQxLCAxMTQ1NCwgCi0gICAgMTE0NjcsIDExNDgwLCAxMTQ5NCwgMTE1MDcsIDExNTIyLCAxMTUyOSwgOTY3NCwgMTE1MzUsIDExNTQ5LCAxMTU1NCwgCi0gICAgMTE1NjAsIDExNTY1LCAxMTU3MywgMTE1NzgsIDg0MDEsIDExNTgzLCAxMTU4NiwgMTE1OTQsIDExNjAxLCAxMTYwNiwgCi0gICAgMTE2MTAsIDExNjE2LCAyOTE3LCAxMDI3OCwgMTE2MjAsIDExNjI0LCAxMTYzMCwgMTE2MzYsIDExNjQxLCAxMTY0NywgCi0gICAgMTE2NTIsIDk2ODMsIDExNjU4LCAxMTY2NCwgMTE2NjksIDExNjc0LCAxMTY4MiwgMTE2ODgsIDExNzAxLCAxMTcwOSwgCi0gICAgMTE3MTYsIDExNzIyLCA5Njg5LCAxMTcyOCwgMTE3MzYsIDExNzQ0LCAxMTc1MSwgMTE3NjQsIDExNzc3LCAxMTc4OSwgCi0gICAgMTE3OTksIDExODA3LCAxMTgxNCwgMTE4MjYsIDExODMzLCAxMTg0MywgMTE4NTIsIDExODYxLCAxMTg2OSwgMTE4NzYsIAotICAgIDExODgxLCAxMTg4NywgOTY5NCwgMTE4OTIsIDExODk4LCAxMTkwMywgMTE5MDgsIDk3MDAsIDExOTEzLCAxMTkxNiwgCi0gICAgMTE5MjMsIDExOTI5LCAxMTk0MiwgOTExMiwgMTE5NTMsIDExOTU5LCAxMTk2OCwgMTE5NzYsIDExOTgzLCAxMTk4OSwgCi0gICAgMTIwMDAsIDEyMDA2LCAxMjAxMSwgMzgzNiwgMTIwMTksIDEyMDI0LCAxMTQwMiwgMTIwMzAsIDEyMDM3LCAxMjA0MiwgCi0gICAgOTcwNSwgMTIwNDgsIDEyMDUzLCAxMjA2MCwgMTIwNjYsIDEyMDcyLCAxMjA3NywgMTIwODUsIDEyMDkzLCAxMjEwMCwgCi0gICAgMTIxMDQsIDEyMTE2LCAxMjEzMCwgMTIxNDAsIDEyMTQ1LCAxMjE0OSwgMTIxNjAsIDEyMTY2LCAxMjE3MSwgMTIxNzYsIAotICAgIDk3MTAsIDEyMTgwLCA5NzE2LCAxMjE4NSwgMTIxODgsIDEyMTkzLCAxMjIwNSwgMTIyMTIsIDEyMjE3LCAxMjIyMSwgCi0gICAgMTIyMjksIDEyMjM0LCAxMjIzOCwgMTIyNDMsIDEyMjQ3LCAxMjI1NCwgMTIyNjAsIDk3MjEsIDk2MjgsIDEyMjY3LCAyOTIyLCAKLSAgICAxMiwgMTIyNzQsIDEyMjc5LCAxMjI4MywgMTIyODcsIDEyMjkzLCAxMjMwMSwgMTIzMTEsIDEyMzE2LCAxMjMyMSwgMTIzMjgsIAotICAgIDEyMzM1LCAxMjMzOSwgMTIzNTAsIDEyMzYwLCAxMjM2OSwgMTIzNzgsIDEyMzkwLCAxMjM5NSwgMTIzOTksIDEyNDA3LCAKLSAgICAxMjQyMSwgMTI0MjUsIDEyNDI4LCAxMjQzNiwgMTI0NDMsIDEyNDUxLCAxMjQ1NSwgMTI0NjYsIDEyNDcwLCAxMjQ3NywgCi0gICAgMTI0ODIsIDEyNDg2LCAxMjQ5MiwgMTI0OTcsIDEyNTAzLCAxMjUwOCwgMTI1MTMsIDEyNTE3LCAxMjUyMywgMTI1MjgsIAotICAgIDEyNTM5LCAxMjU0MywgMTI1NDYsIDEyNTUyLCAxMjU1NywgMTI1NjMsIDEyNTY5LCAxMjU3NiwgMTI1ODcsIDEyNTk3LCAKLSAgICAxMjYwNywgMTI2MTYsIDEyNjIzLCAxMjYzMiwgMTI2MzYsIDk3MzEsIDk3MzgsIDk3NDQsIDk3NDksIDEyNjQyLCAxMjY0OCwgCi0gICAgMTI2NTQsIDEyNjU5LCAxMjY2NSwgOTc1MywgMTI2NzEsIDEyNjc0LCAxMjY4MSwgMTI2ODYsIDEyNzAxLCAxMjcxNywgCi0gICAgMTI3MzIsIDEyNzQwLCAxMjc0NiwgMTI3NTEsIDk1MCwgMzc0LCAxMjc1NiwgMTI3NjQsIDEyNzcxLCAxMjc3NywgMTI3ODIsIAotICAgIDEyNzg3LCA5NzU4LCAxMjc4OSwgMTI3OTMsIDEyNzk4LCAxMjgwMiwgMTI4MTIsIDEyODE3LCAxMjgyMSwgMTI4MzAsIAotICAgIDEyODM0LCAxMjgzNywgMTI4NDQsIDk3NjcsIDEyODQ5LCAxMjg1MiwgMTI4NjAsIDEyODY3LCAxMjg3NSwgMTI4NzksIAotICAgIDEyODgzLCAxMjg5MCwgMTI4OTksIDEyOTA2LCAxMjkwMiwgMTI5MTMsIDEyOTE3LCAxMjkyMywgMTI5MjcsIDEyOTMxLCAKLSAgICAxMjkzNSwgMTI5NDEsIDEyOTUxLCAxMjk1OSwgMTI5NjYsIDEyOTcwLCAxMjk3OCwgMTI5ODIsIDEyOTg5LCAxMjk5MywgCi0gICAgMTI5OTgsIDEzMDAyLCAxMzAwOSwgMTMwMTUsIDEzMDIzLCAxMzAyOSwgMTMwMzQsIDEzMDQ0LCAxMzA0OSwgMTMwNTQsIAotICAgIDEzMDU4LCAxMzA2MiwgMTMwNzAsIDQxMjQsIDEzMDc4LCAxMzA4MywgOTc3MiwgMTMwODcsIDEzMDkxLCAxMzA5NCwgCi0gICAgMTMxMDIsIDEzMTA5LCAxMzExMywgNjI5OCwgMTMxMTcsIDEzMTIyLCAxMzEyNywgMTMxMzEsIDEzMTQyLCAxMzE1MiwgCi0gICAgMTMxNTcsIDEzMTYzLCAxMzE2OCwgMTMxNzIsIDEzMTc1LCAxMzE4MywgMTMxODgsIDEzMTkzLCAxMzIwMCwgMTMyMDUsIAotICAgIDk3NzcsIDEzMjEwLCAxMzIxNCwgMTMyMjEsIDE3MzcsIDY0NTYsIDEzMjI2LCAxMzIzMSwgMTMyMzYsIDEzMjQxLCAxMzI0NywgCi0gICAgMTMyNTIsIDEzMjU4LCAxMzI2MywgMTMyNjgsIDEzMjczLCAxMzI3OCwgMTMyODMsIDEzMjg4LCAxMzI5MywgMTMyOTgsIAotICAgIDEzMzAzLCAxMzMwOCwgMTMzMTMsIDEzMzE4LCAxMzMyMywgMTMzMjgsIDEzMzMzLCAxMzMzOCwgMTMzNDQsIDEzMzQ5LCAKLSAgICAxMzM1NCwgMTMzNTksIDEzMzY0LCAxMzM2OSwgMTMzNzUsIDEzMzgwLCAxMzM4NSwgMTMzOTEsIDEzMzk2LCAxMzQwMiwgCi0gICAgMTM0MDcsIDEzNDEzLCAxMzQxOCwgMTM0MjMsIDEzNDI4LCAxMzQzMywgMTM0MzksIDEzNDQ0LCAxMzQ0OSwgMTM0NTQsIAotICAgIDkwOSwgMTEyLCAxMzQ2MiwgMTM0NjYsIDEzNDcxLCAxMzQ3NiwgMTM0ODAsIDEzNDg0LCAxMzQ4OCwgMTM0OTMsIDEzNDk3LCAKLSAgICAxMzUwMiwgMTM1MDYsIDEzNTA5LCAxMzUxMywgMTM1MTcsIDEzNTIzLCAxMzUyOCwgMTM1MzgsIDEzNTQ0LCAxMzU1MiwgCi0gICAgMTM1NTgsIDEzNTYyLCAxMzU2NiwgMTM1NzMsIDEzNTgxLCAxMzU5MCwgMTM2MDEsIDEzNjExLCAxMzYxOCwgMTM2MjUsIAotICAgIDEzNjI5LCAxMzYzOCwgMTM2NDcsIDEzNjU1LCAxMzY2NCwgMTM2NzMsIDEzNjgyLCAxMzY5MSwgMTM3MDEsIDEzNzExLCAKLSAgICAxMzcyMSwgMTM3MzEsIDEzNzQxLCAxMzc1MCwgMTM3NjAsIDEzNzcwLCAxMzc4MCwgMTM3OTAsIDEzODAwLCAxMzgxMCwgCi0gICAgMTM4MjAsIDEzODI5LCAxMzgzOSwgMTM4NDksIDEzODU5LCAxMzg2OSwgMTM4NzksIDEzODg5LCAxMzg5OCwgMTM5MDgsIAotICAgIDEzOTE4LCAxMzkyOCwgMTM5MzgsIDEzOTQ4LCAxMzk1OCwgMTM5NjgsIDEzOTc4LCAxMzk4OCwgMTM5OTcsIDE0MDA3LCAKLSAgICAxNDAxNywgMTQwMjcsIDE0MDM3LCAxNDA0NywgMTQwNTcsIDE0MDY3LCAxNDA3NywgMTQwODcsIDE0MDk3LCAxNDEwNiwgCi0gICAgMTIzNywgMTQxMTIsIDE0MTE1LCAxNDExOSwgMTQxMjQsIDE0MTMxLCAxNDEzNywgMTQxNDIsIDE0MTQ2LCAxNDE1MSwgCi0gICAgMTQxNjAsIDE0MTY4LCAxNDE3MywgMTQxNzcsIDE0MTgxLCAxNDE4NywgMTQxOTIsIDE0MTk4LCA5Nzg2LCAxNDIwMywgCi0gICAgMTQyMDgsIDE0MjE3LCA5Nzk2LCAxNDIyMiwgMTQyMjUsIDE0MjMxLCAxNDIzOSwgOTgwMSwgMTQyNDYsIDE0MjUwLCAKLSAgICAxNDI1NCwgMTQyNTksIDE0MjYzLCAxNDI3MywgMTQyNzksIDE0Mjg1LCAxNDI5MCwgMTQyOTksIDE0MzA3LCAxNDMxNCwgCi0gICAgMTQzMjEsIDE0MzI2LCAxNDMzMywgMTQzMzgsIDE0MzQyLCAxNDM0NSwgMTQzNTYsIDE0MzY2LCAxNDM3NSwgMTQzODMsIAotICAgIDE0Mzk0LCAxNDQwNiwgMTQ0MTYsIDE0NDIxLCAxNDQyNSwgMTQ0MzAsIDE0NDM1LCAxNDQzOSwgMTQ0NDUsIDE0NDUzLCAKLSAgICAxNDQ2MCwgMTQ0NzEsIDE0NDc2LCAxNDQ4NiwgMTQ0OTUsIDE0NDk5LCAxNDUwMiwgMTQ1MDksIDE0NTE5LCAxNDUyOCwgCi0gICAgMTQ1MzUsIDE0NTM5LCAxNDU0NiwgMTQ1NTIsIDE0NTU3LCAxNDU2MiwgMTQ1NjYsIDE0NTc1LCAxNDU4MCwgMTQ1ODQsIAotICAgIDE0NTkwLCAxNDU5NCwgMTQ1OTksIDE0NjAzLCAxNDYxMCwgMTQ2MTcsIDE0NjIxLCAxNDYzMCwgMTQ2MzgsIDE0NjQ2LCAKLSAgICAxNDY1MywgMTQ2NjEsIDE0NjczLCAxNDY4NCwgMTQ2OTQsIDE0NzAxLCAxNDcwNywgMTQ3MTYsIDE0NzI3LCAxNDczNiwgCi0gICAgMTQ3NDgsIDE0NzYwLCAxNDc3MiwgMTQ3ODIsIDE0NzkxLCAxNDgwMCwgMTQ4MDgsIDE0ODE1LCAxNDgyNCwgMTQ4MzIsIAotICAgIDE0ODM2LCAxNDg0MSwgMTQ4NDcsIDE0ODUzLCAxNDg1OCwgMTQ4NjMsIDgwOTMsIDE0ODY3LCAxNDg2OSwgMTQ4NzMsIAotICAgIDE0ODc4LCAxNDg4NCwgMTQ4OTAsIDE0ODk5LCAxNDkwMywgMTQ5MDksIDE0OTE3LCAxNDkyNCwgMTQ5MzMsIDE0OTQyLCAKLSAgICAxNDk1MSwgMTQ5NjAsIDE0OTY5LCAxNDk3OCwgMTQ5ODcsIDE0OTk2LCAxNTAwNiwgMTUwMTYsIDE1MDI1LCAxNTAzMSwgCi0gICAgMTUwMzgsIDE1MDQ1LCAxNTA1MSwgMTUwNjUsIDE1MDcxLCAxNTA3OCwgMTUwODYsIDE1MDk1LCAxNTEwMywgMTUxMDksIAotICAgIDE1MTE4LCAxNTEyNywgMTUxMzgsIDE1MTQ4LCAxNTE1NiwgMTUxNjMsIDE1MTcxLCAxNTE4MCwgMTUxOTMsIDE1MjAyLCAKLSAgICAxNTIxMCwgMTUyMTcsIDE1MjMwLCAxNTIzNiwgMTUyNDIsIDE1MjUyLCAxNTI2MSwgMTUyNzAsIDE1Mjc1LCAxNTI3OSwgCi0gICAgMTUyODUsIDE1MjkxLCAxNTI5NiwgMTUzMDMsIDE1MzEwLCA5NDQ1LCAxNTMxNSwgMTUzMjAsIDE1MzI3LCAxNTMzNSwgCi0gICAgMTUzNDAsIDE1MzQ3LCAxNTM1MiwgMTUzNjQsIDEzNTE5LCAxNTM2OSwgMTUzNzcsIDE1MzgzLCAxNTM4OCwgMTUzOTYsIAotICAgIDE1NDA0LCAxNTQxMSwgMTU0MTksIDE1NDI1LCAxNTQzMywgMTU0NDEsIDE1NDQ3LCAxNTQ1MiwgMTU0NTgsIDE1NDY1LCAKLSAgICAxNTQ3MSwgMTU0NzYsIDE1NDgwLCAxNTQ5MSwgMTU0OTksIDE1NTA1LCAxNTUxMCwgMTU1MTcsIDE1NTI2LCAxNTUzMiwgCi0gICAgMTU1MzcsIDE1NTQ1LCAxNTU1NCwgMTU1NjgsIDQwNjgsIDE1NTcyLCAxNTU3NywgMTU1ODIsIDE1NTg4LCAxNTU5MywgCi0gICAgMTU1OTgsIDE1NjAyLCAxNTYwNywgMTU2MTIsIDE1NjE3LCA4MDkyLCAxNTYyMiwgMTU2MjcsIDE1NjMyLCAxNTYzNywgCi0gICAgMTU2NDIsIDE1NjQ2LCAxNTY1MSwgMTU2NTYsIDE1NjYxLCAxNTY2NiwgMTU2NzIsIDE1Njc4LCAxNTY4MywgMTU2ODcsIAotICAgIDE1NjkzLCAxNTY5OCwgMTU3MDMsIDE1NzA4LCA5ODA1LCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMTU3MzMsIAotICAgIDE1NzUwLCAxNTc2OCwgMTU3ODAsIDE1NzkzLCAxNTgxMCwgMTU4MjYsIDE1ODQzLCAxNTg1MywgMTU4NzIsIDE1ODgzLCAKLSAgICAxNTg5NCwgMTU5MDUsIDE1OTE2LCAxNTkyOCwgMTU5MzksIDE1OTUwLCAxNTk2NywgMTU5NzgsIDE1OTg5LCAxNTk5NCwgCi0gICAgOTgxMCwgMTU5OTksIDE2MDAzLCAyNDIwLCAxNjAwNywgMTYwMTAsIDE2MDE2LCAxNjAyNCwgMTYwMzIsIDE2MDQxLCAKLSAgICAxNjA0OCwgMTYwNTMsIDE2MDYxLCAxNjA2OSwgMTYwNzYsIDE2MDgwLCAxNjA4NSwgMTYwOTEsIDE2MDk4LCAxNjEwNiwgCi0gICAgMTYxMTMsIDE2MTI1LCAxNjEzMiwgMTYxMzgsIDE2MTQ2LCAxNjE1MSwgMTYxNTcsIDEyNjk1LCAxNjE2MywgMTYxNzIsIAotICAgIDE2MTc4LCAxNjE4MywgMTYxOTEsIDE2MjAwLCAxNjIwOCwgMTYyMTUsIDE2MjIxLCAxNjIyOSwgMTYyMzYsIDE2MjQyLCAKLSAgICAxNjI0OCwgMTYyNTUsIDE2MjYyLCAxNjI2OCwgMTYyNzQsIDE2MjgzLCAxNjI5MSwgMTYzMDEsIDE2MzA4LCAxNjMxNCwgCi0gICAgMTYzMjIsIDE2MzI4LCAxNjMzNiwgMTYzNDQsIDE2MzUxLCAxNjM2NCwgMTYzNzEsIDE2MzgwLCAxNjM4OSwgMTYzOTgsIAotICAgIDE2NDA2LCAxNjQxNiwgMTY0MjMsIDE2NDI4LCAzNzI3LCAxNjQzNSwgMTY0NDAsIDEzNTMsIDE2NDQ0LCAxNTYyMywgCi0gICAgMTY0NDgsIDE2NDU0LCAxNjQ1OCwgMTY0NjYsIDE2NDc4LCAxNjQ4MywgMTY0OTAsIDE2NDk2LCAxNjUwMSwgMTY1MDgsIAotICAgIDE1NjI4LCAxNjUxMiwgMTY1MTYsIDE2NTIwLCAxNTYzMywgMTY1MjQsIDE1NjM4LCAxNjUyOCwgMTY1MzUsIDE2NTQwLCAKLSAgICAxNjU0NCwgMTY1NTEsIDE2NTU1LCAxNjU2MywgMTY1NzAsIDE2NTc1LCAxNjU3OSwgMTY1ODYsIDE2NjAzLCAxNjYxMiwgCi0gICAgMTY2MTYsIDE2NjE5LCAxNjYyNywgMTY2MzMsIDE2NjM4LCAzODA1LCAxNjY0MiwgMTY2NDQsIDE2NjUyLCAxNjY1OSwgCi0gICAgMTY2NjksIDE2NjgxLCAxNjY4NiwgMTY2OTAsIDE2Njk2LCAxNjcwMSwgMTY3MDUsIDE2NzExLCAxNjcxNiwgMTY3MjIsIAotICAgIDE2NzI1LCAxNjczMiwgMTY3NDAsIDE2NzQ3LCAxNjc1MywgMTY3NTgsIDE2NzY0LCAxNjc2OSwgMTY3NzYsIDE2NzgyLCAKLSAgICAxNjc4NywgMTY3OTQsIDE2Nzk5LCAxNjgwMywgMTY4MDksIDE2ODEzLCAxNjgyMCwgMTY4MjYsIDE2ODMxLCAxNjgzNywgCi0gICAgMTY4NDUsIDE2ODUzLCAxNjg2MCwgMTY4NjYsIDE2ODcxLCAxNjg3NywgMTY4ODMsIDE2ODkxLCAxNjg5OSwgMTY5MDUsIAotICAgIDE2OTExLCAxNjkxNiwgMTY5MjMsIDE2OTI4LCAxNjkzMiwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYxLCAKLSAgICAxNjk2NCwgMTY5NzAsIDE2OTc2LCAxNjk3OSwgMTY5ODMsIDE2OTg3LCAxNjk5OSwgMTcwMDUsIDE3MDEwLCAxNzAxNywgCi0gICAgMTcwMjMsIDE3MDI5LCAxNzA0MCwgMTcwNTAsIDE3MDU5LCAxNzA2NywgMTcwNzQsIDE3MDg1LCAxNzA5NSwgMTcxMDUsIAotICAgIDE3MTEzLCAxNzExNiwgMTU2NTIsIDE3MTIxLCAxNzEyNiwgMTU2NTcsIDE1Nzk4LCAxNzEzNCwgMTcxNDcsIDE3MTYyLCAKLSAgICAxNzE3MywgMTU4MTUsIDE3MTkxLCAxNzIwNCwgMTcyMTcsIDE3MjI4LCAxMTQxNywgMTcyMzksIDE3MjUyLCAxNzI3MSwgCi0gICAgMTcyODIsIDE3MjkzLCAxNzMwNCwgMjY4OCwgMTczMTcsIDE3MzIxLCAxNzMyOSwgMTczNDAsIDE3MzQ4LCAxNzM2MywgCi0gICAgMTczNzgsIDE3Mzg5LCAxNzM5NiwgMTc0MDIsIDE3NDEwLCAxNzQxNCwgMTc0MjAsIDE3NDIzLCAxNzQzNiwgMTc0NDgsIAotICAgIDE3NDU4LCAxNzQ2NiwgMTc0NzMsIDE3NDgxLCAxNzQ5MSwgMTc0OTYsIDE3NTAzLCAxNzUwOCwgMTc1MTUsIDE3NTI2LCAKLSAgICAxNzUzNiwgMTc1NDIsIDE3NTQ3LCAxNzU1MiwgMTU2NjIsIDE3NTU2LCAxNzU2MiwgMTc1NjgsIDE3NTczLCAxNzU3OCwgCi0gICAgMTc1ODMsIDE3NTg3LCAxNTY2NywgMTU2NzMsIDE3NTkxLCAxNTY3OSwgMTc1OTYsIDE3NjA0LCAxNzYwOSwgMTc2MTMsIAotICAgIDE3NjIxLCAxNzYzMCwgMTc2MzcsIDE3NjQxLCA5NjQ5LCAxNzY0NSwgMTc2NDcsIDE3NjUyLCAxNzY1NywgMTc2NjMsIAotICAgIDE3NjY4LCAxNzY3MywgMTc2NzgsIDE3NjgzLCAxNzY4NywgMTc2OTMsIDE3Njk5LCAxNzcwNCwgMTc3MTAsIDE3NzE1LCAKLSAgICAxNzcyMCwgMTc3MjQsIDE3NzMwLCAxNzczNSwgMTc3NDAsIDE3NzQ1LCAxNzc1NywgMTc3NjIsIDE3NzY4LCAxNzc3MywgCi0gICAgMTc3NzgsIDE3Nzg0LCAxNzc5MCwgMTc3OTUsIDE3ODAwLCAxNzgwNSwgMTc4MTIsIDE3ODE4LCAxNzgyOSwgMTc4MzYsIAotICAgIDE3ODQxLCAxNzg0NSwgMTc4NDksIDE3ODUyLCAxNzg2MCwgMTc4NjUsIDE3ODcyLCAxNzg3OSwgMTc4ODUsIDE3ODkwLCAKLSAgICAxNzg5NSwgMTc5MDAsIDE3OTA3LCAxNzkxNywgMTc5MjUsIDE3OTMwLCAxNzkzNywgMTc5NDMsIDE3OTUyLCAxNzk2MiwgCi0gICAgMTc5NzIsIDE3OTg2LCAxODAwMCwgMTgwMTQsIDE4MDI4LCAxODA0MywgMTgwNTgsIDE4MDc1LCAxODA5MywgMTgxMDYsIAotICAgIDE4MTEyLCAxODExNywgMTgxMjIsIDE4MTI2LCAxODEzNCwgMTgxMzksIDE4MTQ3LCAxODE1MywgMTgxNTksIDE4MTY0LCAKLSAgICAxODE2OSwgMTgxNzMsIDE4MTc4LCAxODE4MiwgMTgxODcsIDE4MTkxLCAxODIwMiwgMTgyMDgsIDE4MjEzLCAxODIxOCwgCi0gICAgMTgyMjUsIDE4MjMwLCAxODIzNCwgMzY5MCwgMTgyMzksIDE4MjQ1LCAxODI1MiwgMTU2ODgsIDE4MjU4LCAxODI2MiwgCi0gICAgMTgyNjgsIDE4MjczLCAxODI3OCwgMTgyODIsIDE4Mjg4LCAxODI5MywgMTgyOTgsIDE4MzA1LCAxODMxMCwgMTQyNzUsIAotICAgIDE4MzE0LCAxODMxOSwgMTgzMjMsIDE4MzI4LCAxODMzNCwgMTgzNDAsIDE4MzQ3LCAxODM1NywgMTgzNjUsIDE4MzcyLCAKLSAgICAxODM3NywgMTgzODEsIDE4MzkwLCAxODM5OCwgMTg0MDUsIDE4NDEyLCAxODQxOCwgMTg0MjMsIDE4NDI5LCAxODQzNCwgCi0gICAgMTg0MzksIDE4NDQ1LCAxODQ1MCwgMTg0NTYsIDE4NDYxLCAxODQ2NywgMTg0NzMsIDE4NDgwLCAxODQ4NiwgMTg0OTEsIAotICAgIDE4NDk2LCA5ODc1LCAxODUwNSwgMTg1MDgsIDE4NTE2LCAxODUyMiwgMTg1MjcsIDE4NTMyLCAxODU0MiwgMTg1NDksIAotICAgIDE4NTU1LCAxODU2MCwgMTg1NjUsIDE4NTcxLCAxODU3NiwgMTg1ODIsIDE4NTg3LCAxODU5MywgMTg1OTksIDE4NjA0LCAKLSAgICAxODYxMiwgMTg2MTksIDE4NjI0LCAxODYyOSwgMTg2MzUsIDE4NjQwLCAxODY0NCwgMTg2NTMsIDE4NjY0LCAxODY3MSwgCi0gICAgMTg2NzksIDE4Njg2LCAxODY5MSwgMTg2OTYsIDE4NzAyLCAxODcwNywgMTg3MTUsIDE4NzIxLCAxODcyNywgMTg3MzQsIAotICAgIDE4NzQwLCAxODc0NSwgMTg3NDksIDE4NzU1LCAxODc2MCwgMTg3NjUsIDE4NzY5LCAxODc3NCwgMTQyNiwgODExNywgMjkzNiwgCi0gICAgMTg3NzgsIDE4NzgyLCAxODc4NiwgMTg3OTAsIDE4Nzk0LCAxODc5OCwgMTg4MDEsIDE4ODA2LCAxODgxMywgMTg4MjEsIAotICAgIDE1Njk5LCAxODgyOCwgMTg4MzgsIDE4ODQ2LCAxODg1MywgMTg4NjEsIDE4ODcxLCAxODg4MCwgOTIyMCwgMTg4OTMsIAotICAgIDE4ODk4LCAxODkwMywgMTg5MTEsIDE4OTE4LCAxNDM3MSwgMTQzODAsIDE4OTI1LCAxODkzNSwgMTg5NTAsIDE4OTU2LCAKLSAgICAxODk2MywgMTg5NzAsIDE4OTc2LCAxODk4MiwgMTg5OTMsIDE5MDAxLCAxOTAwOSwgMTkwMTksIDE5MDI5LCAxNTcwNCwgCi0gICAgMTkwMzgsIDE5MDQ0LCAxOTA1MCwgMTkwNTgsIDE5MDY2LCAxOTA3MSwgMTkwODAsIDE5MDg4LCAxOTEwMCwgMTkxMTAsIAotICAgIDE5MTIwLCAxOTEzMCwgMTkxMzksIDE5MTUxLCAxOTE2MSwgMTkxNzEsIDE5MTgyLCAxOTE4NywgMTkxOTksIDE5MjExLCAKLSAgICAxOTIyMywgMTkyMzUsIDE5MjQ3LCAxOTI1OSwgMTkyNzEsIDE5MjgzLCAxOTI5NSwgMTkzMDcsIDE5MzE4LCAxOTMzMCwgCi0gICAgMTkzNDIsIDE5MzU0LCAxOTM2NiwgMTkzNzgsIDE5MzkwLCAxOTQwMiwgMTk0MTQsIDE5NDI2LCAxOTQzOCwgMTk0NDksIAotICAgIDE5NDYxLCAxOTQ3MywgMTk0ODUsIDE5NDk3LCAxOTUwOSwgMTk1MjEsIDE5NTMzLCAxOTU0NSwgMTk1NTcsIDE5NTY5LCAKLSAgICAxOTU4MCwgMTk1OTIsIDE5NjA0LCAxOTYxNiwgMTk2MjgsIDE5NjQwLCAxOTY1MiwgMTk2NjQsIDE5Njc2LCAxOTY4OCwgCi0gICAgMTk3MDAsIDE5NzExLCAxOTcyMywgMTk3MzUsIDE5NzQ3LCAxOTc1OSwgMTk3NzEsIDE5NzgzLCAxOTc5NSwgMTk4MDcsIAotICAgIDE5ODE5LCAxOTgzMSwgMTk4NDIsIDE5ODU0LCAxOTg2NiwgMTk4NzgsIDE5ODkwLCAxOTkwMiwgMTk5MTQsIDE5OTI2LCAKLSAgICAxOTkzOCwgMTk5NTAsIDE5OTYyLCAxOTk3MywgMTk5ODUsIDE5OTk3LCAyMDAwOSwgMjAwMjEsIDIwMDMzLCAyMDA0NSwgCi0gICAgMjAwNTcsIDIwMDY5LCAyMDA4MSwgMjAwOTMsIDIwMTA0LCAyMDExNiwgMjAxMjgsIDIwMTQwLCAyMDE1MiwgMjAxNjUsIAotICAgIDIwMTc4LCAyMDE5MSwgMjAyMDQsIDIwMjE3LCAyMDIzMCwgMjAyNDMsIDIwMjU1LCAyMDI2OCwgMjAyODEsIDIwMjk0LCAKLSAgICAyMDMwNywgMjAzMjAsIDIwMzMzLCAyMDM0NiwgMjAzNTksIDIwMzcyLCAyMDM4NSwgMjAzOTcsIDIwNDEwLCAyMDQyMywgCi0gICAgMjA0MzYsIDIwNDQ5LCAyMDQ2MiwgMjA0NzUsIDIwNDg4LCAyMDUwMSwgMjA1MTQsIDIwNTI3LCAyMDUzOSwgMjA1NTIsIAotICAgIDIwNTY1LCAyMDU3OCwgMjA1OTEsIDIwNjA0LCAyMDYxNywgMjA2MzAsIDIwNjQzLCAyMDY1NiwgMjA2NjksIDIwNjgxLCAKLSAgICAyMDY5NCwgMjA3MDcsIDIwNzIwLCAyMDczMywgMjA3NDYsIDIwNzU5LCAyMDc3MiwgMjA3ODUsIDIwNzk4LCAyMDgxMSwgCi0gICAgMjA4MjMsIDIwODM2LCAyMDg0OSwgMjA4NjIsIDIwODc1LCAyMDg4OCwgMjA5MDEsIDIwOTE0LCAyMDkyNywgMjA5NDAsIAotICAgIDIwOTUzLCAyMDk2NSwgMjA5NzYsIDIwOTg5LCAyMTAwMiwgMjEwMTUsIDIxMDI4LCAyMTA0MSwgMjEwNTQsIDIxMDY3LCAKLSAgICAyMTA4MCwgMjEwOTMsIDIxMTA2LCAyMTExOCwgMjExMzEsIDIxMTQ0LCAyMTE1NywgMjExNzAsIDIxMTgzLCAyMTE5NiwgCi0gICAgMjEyMDksIDIxMjIyLCAyMTIzNSwgMjEyNDgsIDIxMjYwLCAyMTI3MywgMjEyODYsIDIxMjk5LCAyMTMxMiwgMjEzMjUsIAotICAgIDIxMzM4LCAyMTM1MSwgMjEzNjQsIDIxMzc3LCAyMTM5MCwgMjE0MDIsIDIxNDE1LCAyMTQyOCwgMjE0NDEsIDIxNDU0LCAKLSAgICAyMTQ2NywgMjE0ODAsIDIxNDkzLCAyMTUwNiwgMjE1MTksIDIxNTMyLCAyMTU0NCwgMjE1NTcsIDIxNTcwLCAyMTU4MywgCi0gICAgMjE1OTYsIDIxNjA5LCAyMTYyMiwgMjE2MzUsIDIxNjQ4LCAyMTY2MSwgMjE2NzQsIDIxNjg2LCAyMTY5OSwgMjE3MTIsIAotICAgIDIxNzI1LCAyMTczOCwgMjE3NTEsIDIxNzY0LCAyMTc3NywgMjE3OTAsIDIxODAzLCAyMTgxNiwgMjE4MjgsIDIxODQxLCAKLSAgICAyMTg1NCwgMjE4NjcsIDIxODgwLCAyMTg5MywgMjE5MDYsIDIxOTE5LCAyMTkzMiwgMjE5NDUsIDIxOTU4LCAyMTk3MCwgCi0gICAgMjE5ODMsIDIxOTk2LCAyMjAwOSwgMjIwMjIsIDIyMDM1LCAyMjA0OCwgMjIwNjEsIDIyMDc0LCAyMjA4NywgMjIxMDAsIAotICAgIDIyMTEyLCAyMjEyNSwgMjIxMzgsIDIyMTUxLCAyMjE2NCwgMjIxNzcsIDIyMTkwLCAyMjIwMywgMjIyMTYsIDIyMjI5LCAKLSAgICAyMjI0MiwgMjIyNTQsIDIyMjY3LCAyMjI4MCwgMjIyOTMsIDIyMzA2LCAyMjMxOSwgMjIzMzIsIDIyMzQ1LCAyMjM1OCwgCi0gICAgMjIzNzEsIDIyMzg0LCAyMjM5NiwgMjI0MDcsIDIyNDE2LCAyMjQyNCwgMjI0MzIsIDIyNDM5LCAyMjQ0NSwgMjI0NDksIAotICAgIDIyNDU1LCAyMjQ2MSwgMjI0NjksIDIyNDc0LCAyMjQ4MCwgMjI0ODUsIDIyNDg5LCAyMjQ5OCwgOTY1NCwgMjI1MDksIAotICAgIDIyNTE2LCAyMjUyNCwgMjI1MzEsIDIyNTM4LCAxMTkzNiwgMjI1NDUsIDIyNTUyLCAyMjU2MSwgMjI1NjYsIDIyNTcxLCAKLSAgICA4MTQ1LCAyMjU3OCwgMjI1ODMsIDIyNTg2LCAyMjU5MSwgMjI1OTksIDIyNjA2LCAyMjYxMywgMjI2MjAsIDIyNjI2LCAKLSAgICAyMjYzNSwgMjI2NDQsIDIyNjUzLCAyMjY1OSwgMjI2NjgsIDIyNjcyLCAyMjY3OCwgMjI2ODMsIDIyNjkzLCAyMjcwMCwgCi0gICAgMjI3MDYsIDIyNzE0LCAyMjcyMCwgMjI3MjcsIDIyNzM3LCAyMjc0NiwgMjI3NTAsIDIyNzU3LCAyMjc2MSwgMjI3NjYsIAotICAgIDIyNzcyLCAyMjc4MCwgMjI3ODQsIDIyNzk0LCAxNTcxNCwgMjI4MDMsIDIyODA5LCAyMjgxMywgMjI4MjIsIDIyODMyLCAKLSAgICAxNTcxOSwgMjI4MzgsIDIyODQ1LCAyMjg1NiwgMjI4NjQsIDIyODc0LCAyMjg4MywgMjI4OTEsIDk0MTAsIDIyODk5LCAKLSAgICAyMjkwNCwgMjI5MTAsIDIyOTE1LCAyMjkxOSwgMjI5MjMsIDIyOTI3LCAxMDM3OSwgMjI5MzIsIDIyOTQwLCAyMjk0NywgCi0gICAgMjI5NTYsIDIyOTYzLCAyMjk3MCwgMjI5NzYsIDExODU2LCAyMjk4MywgMjI5ODksIDIyOTkzLCAyMjk5OSwgMjMwMDYsIAotICAgIDIzMDEyLCAyMzAyMCwgMjMwMjYsIDIzMDMzLCAyMzAzOSwgMjMwNDUsIDIzMDU0LCAyMzA1OCwgMjMwNjYsIDIzMDc1LCAKLSAgICAyMzA4MiwgMjMwODcsIDIzMDkxLCAyMzEwMiwgMjMxMDcsIDIzMTEyLCAyMzExNywgMjMxMzAsIDgzNDksIDIzMTM0LCAKLSAgICAyMzE0MCwgMjMxNDUsIDIzMTUzLCAyMzE1NywgMjMxNjQsIDIzMTczLCAyMzE3OCwgMTU5OTAsIDIzMTg2LCAyMzE5MCwgCi0gICAgMjMyMDIsIDIzMjA3LCAyMzIxMSwgMjMyMTQsIDIzMjIwLCAyMzIyNiwgMjMyMzIsIDIzMjM3LCAyMzI0MSwgMjMyNDQsIAotICAgIDIzMjU1LCAyMzI2MCwgOTkyNiwgMjMyNjcsIDIzMjcyLCAxMjQzLCA5OTMxLCAyMzI3NywgMjMyODIsIDIzMjg3LCAyMzI5MiwgCi0gICAgMjMyOTcsIDIzMzAyLCAyMzMwNywgMjMzMTIsIDIzMzE3LCAyMzMyMiwgMjMzMjcsIDIzMzMyLCAyMzMzOCwgMjMzNDMsIAotICAgIDIzMzQ4LCAyMzM1MywgMjMzNTgsIDIzMzYzLCAyMzM2OCwgMjMzNzMsIDIzMzc4LCAyMzM4MywgMjMzODksIDIzMzk1LCAKLSAgICAyMzQwMCwgMjM0MDUsIDIzNDEwLCAyMzQxNSwgMjM0MjAsIDIzNDI1LCAyMzQzMCwgMjM0MzUsIDIzNDQwLCAyMzQ0NiwgCi0gICAgMjM0NTEsIDIzNDU2LCAyMzQ2MSwgMjM0NjcsIDIzNDczLCAyMzQ3OCwgMjM0ODMsIDIzNDg4LCAyMzQ5MywgMjM0OTgsIAotICAgIDIzNTAzLCAyMzUwOCwgMjM1MTMsIDIzNTE5LCAyMzUyNCwgMjM1MjksIDIzNTM0LCAyMzUzOSwgMjM1NDUsIDIzNTUwLCAKLSAgICAyMzU1NSwgMjM1NTksIDEzNCwgMjM1NjcsIDIzNTcxLCAyMzU3NSwgMjM1NzksIDIzNTg0LCAyMzU4OCwgMTQyODEsIDIzNDYsIAotICAgIDIzNTkyLCAyMzU5NywgMjM2MDEsIDIzNjA2LCAyMzYxMCwgMjM2MTUsIDIzNjE5LCAyMzYyNSwgMjM2MzAsIDIzNjM0LCAKLSAgICAyMzYzOCwgMjM2NDYsIDIzNjUwLCAyMzY1NCwgMjM2NTksIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc5LCAyMzY4MywgCi0gICAgMjM2ODgsIDIzNjkzLCAyMzY5NywgMjM3MDQsIDIzNzExLCAyMzcxOCwgMjM3MjIsIDIzNzI2LCAyMzczMSwgMjM3MzUsIAotICAgIDIzNzM4LCAyMzc0NCwgMjM3NTcsIDIzNzYyLCAyMzc2OCwgMjM3NzcsIDIzNzgyLCAxMDE1MSwgMjM3ODcsIDIzNzk2LCAKLSAgICAyMzgwMSwgMjM4MDQsIDI3NTEsIDI3NTYsIDIzODA4LCAyMzgxNCwgMjM4MjAsIDc1MzgsIDIzODI1LCAyMzgzMCwgMjM4MzUsIAotICAgIDIzODQxLCAyMzg0NiwgMTUxMzQsIDIzODUxLCAyMzg1NiwgMjM4NjEsIDIzODY2LCAyMzg3MiwgMjM4NzcsIDIzODgyLCAKLSAgICAyMzg4OCwgMjM4OTMsIDIzODk3LCAyMzkwMiwgMjM5MDcsIDIzOTEyLCAyMzkxNywgMjM5MjIsIDIzOTI2LCAyMzkzMSwgCi0gICAgMjM5MzUsIDIzOTQwLCAyMzk0NSwgMjM5NTAsIDIzOTU1LCAyMzk1OSwgMjM5NjQsIDIzOTY4LCAyMzk3MywgMjM5NzgsIAotICAgIDIzOTgzLCAyMzg5OCwgMjk0NSwgMjM5MDMsIDIzOTg4LCAyMzk5NiwgMjQwMDMsIDEwNDczLCAyNDAxNSwgMjQwMjMsIAotICAgIDI0MDMzLCAyNDA1MSwgMjQwNzAsIDI0MDc5LCAyNDA4NywgMjM5MDgsIDI0MDk0LCAyNDA5OSwgMjQxMDcsIDIzOTEzLCAKLSAgICAyNDExMiwgMjQxMTcsIDI0MTI1LCAyNDEzMCwgMjM5MTgsIDI0MTM1LCAyNDE0MywgMjQxNDgsIDI0MTUyLCAyNDE1OSwgCi0gICAgMjQxNjUsIDI0MTc0LCAyNDE4MiwgMjQxODYsIDI0MTg5LCAyNDE5NiwgMjQyMDAsIDI0MjA0LCAyNDIwOSwgMjQyMTUsIAotICAgIDI0MjIyLCAyNDIyNywgOTQzNywgMTc0MiwgMTc0NywgMjQyMzEsIDI0MjM3LCAyNDI0MywgMjQyNDgsIDI0MjUyLCAyNDI1NiwgCi0gICAgMjQyNjAsIDI0MjY0LCAyNDI2OCwgMjQyNzIsIDI0Mjc2LCAyNDI4MCwgMjQyODMsIDI0Mjg5LCAyNDI5NiwgMjQzMDQsIAotICAgIDI0MzEwLCAyNDMxNiwgMjQzMjEsIDI0MzI2LCAyNDMzMiwgMjQzMzYsIDI0MzQxLCAxNTA0MCwgMTUwNDcsIDI0MzQ4LCAKLSAgICAyNDM2MCwgMjQzNjMsIDI0MzcwLCAyNDM3NCwgMTc4ODEsIDI0MzgxLCAyNDM4OSwgMjQ0MDAsIDI0NDA5LCAyNDQyMiwgCi0gICAgMjQ0MzIsIDI0NDQ2LCAyNDQ1OCwgMjQ0NzIsIDI0NDg1LCAyNDQ5NywgMjQ1MDcsIDI0NTE5LCAyNDUyNSwgMjQ1NDAsIAotICAgIDI0NTY0LCAyNDU4MiwgMjQ2MDEsIDI0NjE0LCAyNDYyOCwgMjQ2NDYsIDI0NjYyLCAyNDY3OSwgMjQ2OTcsIDI0NzA4LCAKLSAgICAyNDcyNywgMjQ3NDQsIDI0NzY0LCAyNDc4MiwgMjQ3OTQsIDI0ODA4LCAyNDgyMiwgMjQ4MzQsIDI0ODUxLCAyNDg3MCwgCi0gICAgMjQ4ODgsIDI0OTAwLCAyNDkxOCwgMjQ5MzcsIDE1ODU4LCAyNDk1MCwgMjQ5NzAsIDI0OTgyLCAxMTQ0OCwgMjQ5OTQsIAotICAgIDI0OTk5LCAyNTAwNCwgMjUwMDksIDI1MDE1LCAyNTAyMCwgMjUwMjQsIDI1MDMxLCAyNTAzNywgMjQzNywgMjUwNDEsIAotICAgIDI1MDQ3LCAyNTA1MSwgMjUwNTQsIDI1MDU4LCAyNTA2MSwgMjUwNjksIDI1MDc1LCAyMzkzNiwgMjUwNzksIDI1MDg4LCAKLSAgICAyNTA5OSwgMjUxMDUsIDI1MTExLCAyNTEyNiwgMjUxMzUsIDI1MTQzLCAyNTE1MCwgMjUxNTUsIDI1MTU5LCAyNTE2NiwgCi0gICAgMjUxNzIsIDI1MTgxLCAyNTE4OSwgMjUxOTYsIDI1MjA2LCAyNTIxNSwgMjUyMjUsIDI1MjMwLCAyNTIzOSwgMjUyNDgsIAotICAgIDI1MjU5LCAyNTI3MCwgNDE5MiwgMjUyODAsIDI1Mjg0LCAyNTI5NCwgMjUzMDIsIDI1MzEyLCAyNTMyMywgMjUzMjgsIAotICAgIDI1MzM4LCAyNTM0NiwgMjUzNTMsIDI1MzU5LCAyNTM2NiwgMjUzNzEsIDIzOTQ2LCAyNTM3NSwgMjUzODQsIDI1Mzg4LCAKLSAgICAyNTM5MSwgMjUzOTYsIDI1NDA0LCAyNTQxMSwgMjU0MjAsIDI1NDI4LCAyNTQzNiwgMjU0NDQsIDI1NDU0LCAyNTQ2MywgCi0gICAgMjU0NjksIDI1NDc1LCAyNTQ3OSwgMjM5NTEsIDIzOTU2LCAyNTQ4MywgMjU0OTMsIDI1NTAzLCAyNTUxMywgMjU1MjEsIAotICAgIDI1NTI4LCAyNTUzOCwgMjU1NDYsIDI1NTU0LCAyNTU2MCwgMjU1NjgsIDg2NSwgMjU1NzcsIDE2MDY1LCA2MTUsIDI1NTkxLCAKLSAgICAyNTYwMCwgMjU2MDgsIDI1NjE5LCAyNTYzMCwgMjU2NDAsIDI1NjQ5LCAyNTY2MSwgMjU2NzAsIDI1Njc5LCAyNTY4NiwgCi0gICAgMjU2OTIsIDI1NzAyLCAyNTcxMSwgMjU3MjAsIDI1NzI4LCAyNTczOCwgMjU3NDYsIDI1NzU0LCA5ODkyLCAyNTc2MCwgCi0gICAgMjU3NjMsIDI1NzY3LCAyNTc3MiwgMjU3NzcsIDI1NzgxLCAxMDU4OCwgMjM5NjksIDIzOTc0LCAyNTc4OSwgMjU3OTUsIAotICAgIDI1ODAxLCAyNTgwNiwgMjU4MTEsIDI1ODE1LCAyNTgyMywgMjU4MjksIDI1ODM1LCAyNTgzOSwgMzY3NSwgMjU4NDcsIAotICAgIDI1ODUyLCAyNTg1NywgMjU4NjEsIDI1ODY1LCAxMDcwMSwgMjU4NzIsIDI1ODgwLCAyNTg5NCwgMjU5MDEsIDI1OTA3LCAKLSAgICAxMDcxMCwgMTA3MTYsIDI1OTE1LCAyNTkyMywgMjU5MzAsIDI1OTM1LCAyNTk0MCwgMjM5NzksIDI1OTQ2LCAyNTk1NywgCi0gICAgMjU5NjEsIDI1OTY2LCAyNjQwLCAyNTk3MSwgMjU5ODIsIDI1OTg4LCAyNTk5MywgMjU5OTcsIDI2MDAxLCAyNjAwNCwgCi0gICAgMjYwMTEsIDI2MDE4LCAyNjAyNCwgMjYwMzEsIDI2MDM3LCAyNjA0MSwgMjM5ODQsIDI2MDQ2LCAyNjA1MCwgMjYwNTQsIAotICAgIDE0MzEsIDg1NDQsIDI2MDU5LCAyNjA2NCwgMjYwNjksIDI2MDc0LCAyNjA3OSwgMjYwODQsIDI2MDg5LCAyNjA5NCwgCi0gICAgMjYwOTksIDI2MTA0LCAyNjEwOSwgMjYxMTQsIDI2MTE5LCAyNjEyNCwgMjYxMzAsIDI2MTM1LCAyNjE0MCwgMjYxNDUsIAotICAgIDI2MTUwLCAyNjE1NSwgMjYxNjAsIDI2MTY2LCAyNjE3MSwgMjYxNzYsIDI2MTgxLCAyNjE4NiwgMjYxOTEsIDI2MTk2LCAKLSAgICAyNjIwMSwgMjYyMDcsIDI2MjEzLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgNSwgMjYyNDAsIDI2MjQ0LCAyNjI0OCwgCi0gICAgMjYyNTIsIDI2MjU3LCAyNjI2MSwgMjYyNjUsIDI2MjY5LCAyNjI3MywgMjYyNzgsIDI2MjgyLCAyNjI4NywgMjYyOTEsIAotICAgIDI2Mjk0LCAyNjI5OCwgMjYzMDMsIDI2MzA3LCAyNjMxMiwgMjYzMTYsIDI2MzIwLCAyNjMyNCwgMjYzMjksIDI2MzMzLCAKLSAgICAyNjMzNywgMjYzNDcsIDI2MzUyLCAyNjM1NiwgMjYzNjAsIDI2MzY1LCAyNjM3MCwgMjYzNzksIDI2Mzg0LCAyNjM4OSwgCi0gICAgMjYzOTMsIDI2Mzk3LCAyNjQxMCwgMjY0MjIsIDI2NDMxLCAyNjQ0MCwgMjY0NDUsIDI2NDUxLCAyNjQ1NiwgMjY0NjAsIAotICAgIDI2NDY0LCAyNjQ3NCwgMjY0ODMsIDI2NDkxLCAyNjQ5NywgMjY1MDIsIDI2NTA2LCAyNjUxMywgMjY1MjMsIDI2NTMyLCAKLSAgICAyNjU0MCwgMTE3NzAsIDI2NTQ4LCAyNjU1NiwgMjY1NjUsIDI2NTc0LCAyNjU4MiwgMjY1OTIsIDI2NTk3LCAyNjYwMSwgCi0gICAgMjY2MDUsIDI2NjA4LCAyNjYxMCwgMjY2MTQsIDI2NjE4LCAyNjYyMywgMjY2MjgsIDI2NjMyLCAyNjYzNiwgMjY2MzksIAotICAgIDI2NjQzLCAyNjY0NiwgMjY2NTAsIDI2NjUzLCAyNjY1NiwgMjY2NjAsIDI2NjY2LCAyNjY3MCwgMjY2NzQsIDI2Njc4LCAKLSAgICAyNjY4MywgMjY2ODgsIDI2NjkzLCAyNjY5NywgMjY3MDAsIDI2NzA1LCAyNjcxMSwgMjY3MTYsIDI2NzIyLCAyNjcyNywgCi0gICAgMjY3MzEsIDI2NzM3LCAyNjc0MSwgMjY3NDUsIDI2NzUwLCAyNjc1NCwgMjY3NTksIDI2NzY0LCAyNjc2OCwgMjY3NzIsIAotICAgIDI2Nzc5LCAyNjc4MywgMjY3ODYsIDI2NzkwLCAyNjc5NCwgMjY4MDAsIDI2ODA2LCAyNjgxMCwgMjY4MTQsIDI2ODE5LCAKLSAgICAyNjgyNiwgMjY4MzIsIDI2ODM2LCAyNjg0NSwgMjY4NDksIDI2ODUzLCAyNjg1NiwgMjY4NjIsIDI2ODY3LCAyNjg3MywgCi0gICAgMTQ3NSwgMTgwNiwgMjY4NzgsIDI2ODgzLCAyNjg4OCwgMjY4OTMsIDI2ODk4LCAyNjkwMywgMjY5MDgsIDIxNzQsIDIyMjAsIAotICAgIDI2OTEzLCAyNjkxNiwgMjY5MjAsIDI2OTI0LCAyNjkyOSwgMjY5MzMsIDE2MDc3LCAyNjkzNywgMjY5NDIsIDI2OTQ3LCAKLSAgICAyNjk1MSwgMjY5NTQsIDI2OTU5LCAyNjk2MywgMjY5NjgsIDI2OTcyLCAxNjA4MSwgMjY5NzcsIDI2OTgwLCAyNjk4MywgCi0gICAgMjY5ODcsIDI2OTkyLCAyNjk5NiwgMjcwMDksIDI3MDEzLCAyNzAxNiwgMjcwMjQsIDI3MDMzLCAyNzA0MCwgMjcwNDUsIAotICAgIDI3MDUxLCAyNzA1NywgMjcwNjUsIDI3MDcyLCAyNzA3OSwgMjcwODMsIDI3MDg3LCAyNzA5MSwgMjcwOTYsIDI3MTAxLCAKLSAgICAyNzEwNSwgMjcxMTMsIDI3MTE4LCAyNzEzMCwgMjcxNDEsIDI3MTQ2LCAyNzE1MCwgMjcxNTcsIDI3MTYxLCAyNzE2NiwgCi0gICAgMjcxNzIsIDI3MTc1LCAyNzE4MCwgMjcxODUsIDI3MTg5LCAyNzE5MywgMjcxOTYsIDI3MjAyLCA4MjQ4LCAyMzUwLCAKLSAgICAyNzIwNiwgMjcyMTEsIDI3MjI3LCAxMDE5OCwgMjcyNDcsIDI3MjU2LCAyNzI3MiwgMjcyNzYsIDI3MjgzLCAyNzI4NiwgCi0gICAgMjcyOTIsIDI3MzAyLCAyNzMwOCwgMjczMTcsIDI3MzMyLCAyNzM0NCwgMjczNTUsIDI3MzYzLCAyNzM3MiwgMjczNzgsIAotICAgIDI3Mzg3LCAyNzM5NywgMjc0MDcsIDI3NDE4LCAyNzQyOSwgMjc0MzksIDI3NDQ4LCAyNzQ1NSwgMjc0NjQsIDI3NDcyLCAKLSAgICAyNzQ3OSwgMjc0ODcsIDI3NDk0LCAyNzUwMSwgMjc1MTQsIDI3NTIxLCAyNzUyOSwgMjc1MzYsIDI3NTQyLCAyNzU0NywgCi0gICAgMjc1NTYsIDI3NTYyLCAyNzU2NywgMjc1NzUsIDI3NTgyLCAyNzU4OSwgMjUzMDQsIDI3NjAxLCAyNzYxMywgMjc2MjcsIAotICAgIDI3NjM1LCAyNzY0MiwgMjc2NTQsIDI3NjYzLCAyNzY3MiwgMjc2ODAsIDI3Njg4LCAyNzY5NiwgMjc3MDMsIDI3NzA5LCAKLSAgICAyNzcxOCwgMjc3MjYsIDI3NzM2LCAyNzc0NSwgMjc3NTUsIDI3NzY0LCAyNzc3MywgMjc3ODEsIDI3Nzg2LCAyNzc5MCwgCi0gICAgMjc3OTMsIDI3Nzk3LCAyNzgwMSwgMjc4MDUsIDI3ODA5LCAyNzgxMywgMjc4MTksIDI3ODI1LCAyNzgzMywgMTYxMzksIAotICAgIDI3ODQwLCAyNzg0NSwgMjc4NTIsIDI3ODU4LCAyNzg2NSwgMTYxNDcsIDI3ODcyLCAyNzg3NSwgMjc4ODcsIDI3ODk1LCAKLSAgICAyNzkwMSwgMjc5MDYsIDI3OTEwLCAyNzkyMSwgMTA2NTEsIDI3OTMxLCAyNzkzOSwgMjc5NDksIDI3OTU4LCAyNzk2NSwgCi0gICAgMjc5NzIsIDI3OTgwLCAyNzk4NCwgMTYxNTgsIDI3OTg3LCAyNzk5NCwgMjc5OTgsIDI4MDA0LCAyODAwNywgMjgwMTQsIAotICAgIDI4MDIwLCAyODAyNywgMjgwMzMsIDI4MDM3LCAyODA0MiwgMjgwNDYsIDI4MDU1LCAyODA2MiwgMjgwNjgsIDgzMDYsIAotICAgIDI4MDc1LCAyODA4MywgMjgwOTAsIDI4MDk2LCAyODEwMSwgMjgxMDcsIDI4MTEzLCAyODEyMSwgMjgxMjcsIDI4MTMxLCAKLSAgICAyODEzNCwgMjgxMzYsIDI3Nzk4LCAyODE0NSwgMjgxNTEsIDI4MTU3LCAyODE2NywgMjgxNzIsIDI4MTc5LCAyODE4NSwgCi0gICAgMjgxOTAsIDI4MTk1LCAyODIwMCwgMjgyMDQsIDI4MjA5LCAyODIxNiwgMjgyMjIsIDI4MjMxLCAyODIzNSwgMjgyNDIsIAotICAgIDI4MjQ4LCAyODI1NywgNDM3OCwgMjgyNjMsIDI4MjY5LCAyODI3NCwgMjgyODEsIDI4MjkyLCAyODI5NywgMjgzMDEsIAotICAgIDI4MzExLCAyODMxNywgMjgzMjEsIDI4MzI2LCAyODMzNiwgMjgzNDUsIDI4MzQ5LCAyODM1NiwgMjgzNjQsIDI4MzcxLCAKLSAgICAyODM3NywgMjgzODIsIDI4MzkwLCAyODM5NywgMjg0MDIsIDI4NDA5LCAyODQyMSwgMjg0MzAsIDI4NDM0LCAxNDIxMiwgCi0gICAgMjg0NDIsIDI4NDUyLCAyODQ1NiwgMjcwMjAsIDI4NDY3LCAyODQ3MiwgMjg0NzYsIDI4NDgzLCAyODQ5MCwgMjM2NzAsIAotICAgIDI3NzIzLCAyODQ5NSwgMjg0OTksIDI4NTAyLCAyNDcxNCwgMjg1MDcsIDI4NTIxLCAyODUzNywgMjg1NTUsIDI4NTc0LCAKLSAgICAyODU5MSwgMjg2MDksIDI0NzMzLCAyODYyNiwgMjg2NDYsIDI0NzUwLCAyODY1OCwgMjg2NzAsIDE3MTc4LCAyODY4MiwgCi0gICAgMjQ3NzAsIDI4Njk2LCAyODcwOCwgMTE0NjEsIDI4NzIyLCAyODcyNywgMjg3MzIsIDI4NzM3LCAyODc0MywgMjg3NDksIAotICAgIDI4NzU1LCAyODc1OSwgMjg3NjcsIDI4Nzc0LCAyODc3OSwgMjg3ODksIDI4Nzk1LCAxMTA1OSwgMjg4MDEsIDI4ODAzLCAKLSAgICAyODgwOCwgMjg4MTYsIDI4ODIwLCAyODIxMiwgMjg4MjYsIDI4ODMzLCAxMjYwMSwgMTI2MTEsIDI4ODQwLCAyODg1MCwgCi0gICAgMjg4NTUsIDI4ODU5LCAyODg2MiwgMjg4NjgsIDI4ODc2LCAyODg4OCwgMjg4OTgsIDI4OTE0LCAyODkyNywgMjg5NDEsIAotICAgIDE3MTk2LCAyODk1NSwgMjg5NjIsIDI4OTY2LCAyODk2OSwgMjg5NzQsIDI4OTc4LCAyODk4NSwgMjg5OTIsIDI4OTk5LCAKLSAgICAyOTAwOSwgMjkwMTQsIDI5MDE5LCAyOTAyNCwgMjkwMzIsIDI5MDQwLCAyOTA0NSwgMjkwNTQsIDI5MDU5LCAzMzUzLCAKLSAgICAyOTA2MywgMjkwNjYsIDI5MDY5LCAyOTA3NCwgMjkwODEsIDI5MDg2LCAyOTEwMiwgMjkxMTAsIDI5MTE4LCA5OTY2LCAKLSAgICAyOTEyNiwgMjkxMzEsIDI5MTM1LCAyOTE0MSwgMjkxNDYsIDI5MTUyLCAyOTE1NSwgMjkxNjEsIDI5MTczLCAyOTE4MSwgCi0gICAgMjkxODgsIDI5MTk0LCAyOTIwMSwgMjkyMTIsIDI5MjI2LCAyOTIzOSwgMjkyNDUsIDI5MjU0LCAyOTI2MCwgMjkyNjksIAotICAgIDI5MjgxLCAyOTI5MiwgMjkzMDIsIDI5MzExLCAyOTMyMCwgMjkzMjgsIDI5MzM5LCA4Mjg4LCAyOTM0NiwgMjkzNTMsIAotICAgIDI5MzU5LCAyOTM2NCwgMjkzNzAsIDI5Mzc3LCAyOTM4NywgMjkzOTcsIDI5NDA2LCAyOTQxMiwgMjk0MTksIDI5NDI0LCAKLSAgICAyOTQzMiwgMjk0MzksIDI5NDQ3LCAyOTQ1NSwgMjk0NjcsIDY1NjMsIDk5NSwgMjk0NzQsIDI5NDgzLCAyOTQ5MSwgMjk0OTcsIAotICAgIDI5NTAzLCAyOTUwOCwgMjk1MTIsIDI5NTE1LCAyOTUyMSwgMjk1MjgsIDI5NTMzLCAyOTUzOCwgMjk1NDMsIDI5NTQ3LCAKLSAgICAyOTU1OSwgMjk1NzAsIDI5NTc5LCAyOTU4NywgMTYzMjMsIDI5NTkyLCAyOTU5NywgMjk2MDMsIDI5NjA5LCAxMjU5NCwgCi0gICAgOTA1OCwgMjk2MTQsIDI5NjE4LCAyOTYyMiwgMjk2MjUsIDI5NjI4LCAyOTYzNCwgMjk2NDIsIDI5NjUwLCAyOTY1NCwgCi0gICAgMjk2NTgsIDI5NjYzLCAyOTY2NiwgMjk2NzUsIDI5Njc5LCAyOTY4MiwgMjk2OTAsIDI5NzAxLCAyOTcwNSwgMjk3MTEsIAotICAgIDI5NzE3LCAyOTcyMSwgMjk3MjcsIDI5NzM1LCAyOTc1NywgMjk3ODEsIDI5NzkwLCAyOTc5NywgMjk4MDQsIDI5ODEwLCAKLSAgICAyOTgxOCwgMjk4MjQsIDI5ODI5LCAyOTg0MCwgMjk4NTgsIDI5ODY1LCAyOTg3MywgMjk4NzcsIDI5ODgyLCAyOTg5MSwgCi0gICAgMjk5MDQsIDI5OTEyLCAyOTkyNCwgMjk5MzUsIDI5OTQ2LCAyOTk1NiwgMjk5NzAsIDI5OTc5LCAyOTk4NywgMjk5OTksIAotICAgIDEwMjE1LCAzMDAxMCwgMzAwMjEsIDMwMDMzLCAzMDA0MywgMzAwNTIsIDMwMDU3LCAzMDA2MSwgMzAwNjksIDMwMDgwLCAKLSAgICAzMDA5MCwgMzAwOTUsIDMwMDk5LCAzMDEwMiwgMzAxMDUsIDMwMTEzLCAzMDEyMSwgMzAxMzAsIDMwMTQwLCAzMDE0OSwgCi0gICAgMzAxNTUsIDMwMTY5LCAyNzAyLCAzMDE5MSwgMzAyMDIsIDMwMjExLCAzMDIyMSwgMzAyMzMsIDMwMjQyLCAzMDI1MSwgCi0gICAgMzAyNjEsIDMwMjY5LCAzMDI3NywgMzAyODYsIDMwMjkxLCAzMDMwMiwgMzAzMDcsIDMwMzE4LCAzMDMyMiwgMzAzMzIsIAotICAgIDMwMzQxLCAzMDM0OSwgMzAzNTksIDMwMzY5LCAzMDM3NywgMzAzODYsIDMwMzkzLCAzMDQwMSwgMzA0MDgsIDMwNDE3LCAKLSAgICAzMDQyNiwgMzA0MzAsIDMwNDM4LCAzMDQ0NSwgMzA0NTMsIDMwNDYwLCAzMDQ3MSwgMzA0ODYsIDMwNDkzLCAzMDQ5OSwgCi0gICAgMzA1MDksIDMwNTE4LCAzMDUyNCwgMzA1MzUsIDMwNTM5LCAzMDU0NiwgMzA1NTAsIDMwNTU2LCAxNTI2NSwgMzA1NjIsIAotICAgIDMwNTY2LCAzMDU3MSwgMzA1NzcsIDMwNTg0LCAzMDU4OCwgMzA1OTIsIDMwNjAwLCAzMDYwOCwgMzA2MTQsIDMwNjIzLCAKLSAgICAzMDYzMCwgMzA2MzUsIDMwNjQwLCAzMDY1MCwgMjUzNzMsIDMwNjU0LCAzMDY1NywgMzA2NjIsIDMwNjY3LCAzMDY3MiwgCi0gICAgMzA2NzcsIDMwNjgyLCAzMDY4NywgMzA2OTIsIDMwNjk3LCAzMDcwMywgMzA3MDgsIDMwNzEzLCAzMDcxOSwgMTE5OSwgNjYwLCAKLSAgICAzMDcyNCwgMzA3MzMsIDIzOTgsIDMwNzQwLCAzMDc0NSwgMzA3NDksIDMwNzU1LCAxMjQ4LCA1NzgsIDI5MCwgMzA3NjAsIAotICAgIDMwNzY5LCAzMDc3NywgMzA3ODYsIDMwNzk0LCAzMDgwNSwgMzA4MTMsIDMwODIyLCAzMDgzMCwgMzA4MzUsIDEwNzk3LCAKLSAgICAzMDgzOSwgMzA4NDcsIDMwODU1LCAzMDg2MCwgMTYwOTQsIDM4MjQsIDMwODY2LCAzMDg3MiwgMzA4NzgsIDYxNDgsIAotICAgIDMwODgzLCAzMDg4NywgMzA4OTMsIDMwODk3LCAzMDkwMywgMzA5MDgsIDMwOTE1LCAxNDQxLCAzMDkyMSwgMzA5MjgsIAotICAgIDEzNDgsIDYxNTYsIDMwOTMyLCAzMDk0MiwgMzA5NTAsIDMwOTU2LCAzMDk2NiwgMzA5NzUsIDMwOTgzLCAzMDk4OSwgCi0gICAgMzA5OTcsIDMxMDA0LCAxMjEzNiwgMzEwMTAsIDMxMDE3LCAzMTAyMiwgMzEwMjksIDE0OTQsIDIxOSwgMjE3MywgMzEwMzUsIAotICAgIDMxMDQxLCAzMTA0OCwgMzEwNTksIDMxMDcwLCAzMTA3OCwgMzEwODUsIDMxMDk1LCAzMTEwNCwgMzExMTIsIDMxMTIxLCAKLSAgICAzMTEyOCwgMzExMzUsIDMxMTQ4LCAzMTE1NSwgMzExNjEsIDMxMTcyLCAzMTE5MSwgMTI1MywgMzExOTYsIDMxMjAxLCAKLSAgICAzMTIwOSwgMzc0MiwgMzEyMTMsIDMxMjE4LCAzMTIyMiwgMzEyMjYsIDE0NDUsIDI2NjM3LCAzMTIzNiwgMzEyNDAsIAotICAgIDMxMjQ1LCAzMTI0OSwgMzYxOSwgMzEyNTUsIDMxMjYzLCAzMTI3MCwgMzEyODEsIDMxMjg5LCAzMTI5NywgMzc0MywgMzQ2LCAKLSAgICAzMTMwMiwgMzEzMTAsIDMxMzE4LCAzMTMyNSwgMzEzMzEsIDMxMzM2LCAyMjQyLCAxMTYyOCwgMzEzNDMsIDMxMzQ5LCAKLSAgICAyODAzOCwgMjgyODcsIDMxMzU1LCA1NzQsIDEwNiwgMzEzNTksIDMxMzYzLCAzMTM2OSwgNjYzLCA5ODQxLCAzMTM3NCwgCi0gICAgMzEzODEsIDMxMzg3LCAzMTM5MSwgMTYzOSwgMzEzOTQsIDMxMzk4LCAxNjU3NiwgMzE0MDEsIDMxNDA2LCAzMTQxMywgCi0gICAgMzE0MTksIDMxNDI0LCAzMTQzMiwgMzE0MzksIDMxNDQ1LCAyNDEzMiwgMzE0NDksIDMxNDUzLCAzMTQ1NywgMzgxMywgCi0gICAgMTgxODAsIDMxNDYxLCAzMTQ2NiwgMzE0NzAsIDMxNDczLCAzMTQ4MSwgMzE0ODksIDMxNDk0LCAzMTUwMiwgMzE1MDUsIAotICAgIDMxNTEyLCAzMTUyMiwgMzE1MzQsIDMxNTM5LCAzMTU0MywgMzE1NTEsIDMxNTU4LCAzMTU2NCwgMzE1NzEsIDMxNTc4LCAKLSAgICAzMTU4MSwgMzE1ODUsIDMxNTg5LCAxNDQ5LCAzMTU5OSwgMzE2MDEsIDMxNjA2LCAzMTYxMiwgMzE2MTgsIDMxNjIzLCAKLSAgICAzMTYyOCwgMzE2MzMsIDMxNjM4LCAzMTY0MywgMzE2NDgsIDMxNjUzLCAzMTY1OCwgMzE2NjMsIDMxNjY4LCAzMTY3MywgCi0gICAgMzE2NzgsIDMxNjgzLCAzMTY4OCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTIsIDMxNzE3LCAzMTcyMiwgMzE3MjcsIAotICAgIDMxNzMzLCAzMTczOCwgMzE3NDMsIDMxNzQ4LCAzMTc1NCwgMzE3NTksIDMxNzY1LCAzMTc3MCwgMzE3NzUsIDMxNzgwLCAKLSAgICAzMTc4NSwgMzE3OTEsIDMxNzk2LCAzMTgwMiwgMzE4MDcsIDMxODEyLCAzMTgxNywgMzE4MjIsIDMxODI4LCAzMTgzMywgCi0gICAgMzE4MzksIDMxODQ0LCAzMTg0OSwgMzE4NTQsIDMxODU5LCAzMTg2NCwgMzE4NjksIDMxODc0LCAzMTg3OSwgMzE4ODQsIAotICAgIDMxODkwLCAzMTg5NiwgMzE5MDIsIDMxOTA3LCAzMTkxMiwgMzE5MTcsIDMxOTIyLCAzMTkyOCwgMzE5MzQsIDMxOTQwLCAKLSAgICAzMTk0NiwgMzE5NTIsIDMxOTU4LCAzMTk2MywgMzE5NjksIDMxOTc0LCAzMTk3OSwgMzE5ODQsIDMxOTg5LCAzMTk5NSwgCi0gICAgMjQ4MiwgMzIwMDAsIDI0ODksIDI0OTYsIDI3OTMsIDMyMDA1LCAyNTAyLCAyNTEyLCAzMjAxMSwgMzIwMTUsIDMyMDIwLCAKLSAgICAzMjAyNSwgMzIwMzEsIDMyMDM2LCAzMjA0MSwgMzIwNDUsIDMyMDUwLCAzMjA1NiwgMzIwNjEsIDMyMDY2LCAzMjA3MSwgCi0gICAgMzIwNzcsIDMyMDgyLCAzMjA4NiwgMzIwOTAsIDMyMDk1LCAzMjEwMCwgMzIxMDUsIDMyMTEwLCAzMjExNSwgMzIxMjEsIAotICAgIDMyMTI3LCAzMjEzMiwgMzIxMzYsIDMyMTQxLCAzMjE0NywgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKLSAgICAzMjE3NSwgMzIxNzgsIDMyMTgzLCAzMjE4OCwgMzIxOTMsIDMyMTk4LCAzMjIwMywgMzIyMDksIDMyMjE1LCAzMjIyMCwgCi0gICAgMzIyMjUsIDMyMjMwLCAzMjIzNCwgMzIyMzksIDMyMjQ0LCAzMjI0OSwgMzIyNTQsIDMyMjU5LCAzMjI2NCwgMzIyNjgsIAotICAgIDMyMjczLCAzMjI3OCwgMzIyODMsIDMyMjg3LCAzMjI5MSwgMzIyOTUsIDMyMzAwLCAzMjMwOCwgMzIzMTMsIDMyMzE4LCAKLSAgICAzMjMyNCwgMzIzMzAsIDMyMzM2LCAzMjM0MSwgMzIzNDUsIDMyMzQ4LCAzMjM1MywgMzIzNTgsIDMyMzYyLCAzMjM2NywgCi0gICAgMzIzNzIsIDMyMzc2LCAzMjM4MSwgMzIzODUsIDMyMzg4LCAzMjM5MywgMzkxNCwgMTg5MDYsIDMyMzk4LCAzMjQwMywgCi0gICAgMzI0MDgsIDMyNDE2LCAyMjk1OSwgMzA5MjUsIDk1MTgsIDMyNDIxLCAzMjQyNiwgMzI0MzAsIDMyNDM1LCAzMjQzOSwgCi0gICAgMzI0NDMsIDMyNDQ4LCAzMjQ1MiwgMzI0NTUsIDMyNDU4LCAzMjQ2MiwgMzI0NjcsIDMyNDcxLCAzMjQ3OSwgMzI0ODMsIAotICAgIDMyNDg2LCAzMjQ5MSwgMzI0OTUsIDMyNDk5LCAzMjUwNCwgMzI1MDksIDMyNTEzLCAzMjUxOSwgMzI1MjQsIDMyNTI5LCAKLSAgICAzMjUzNiwgMzI1NDMsIDMyNTQ3LCAzMjU1MCwgMzI1NTYsIDMyNTY1LCAzMjU3MiwgMzI1ODAsIDMyNTg3LCAzMjU5MSwgCi0gICAgMzI1OTYsIDMyNjAwLCAzMjYwNCwgMzI2MTAsIDMyNjE2LCAzMjYyMCwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIAotICAgIDMyNjQ3LCAzMjY1MywgMzI2NTksIDMyNjY1LCAzMjY3MSwgMzI2NzgsIDMyNjg0LCAzMjY5MCwgMzI2OTYsIDMyNzAyLCAKLSAgICAzMjcwOCwgMzI3MTQsIDMyNzIwLCAzMjcyNywgMzI3MzMsIDMyNzQwLCAzMjc0NiwgMzI3NTIsIDMyNzU4LCAzMjc2NCwgCi0gICAgMzI3NzAsIDMyNzc2LCAzMjc4MiwgMzI3ODgsIDMyNzk0LCAxMjQ3OSwgMzI4MDAsIDMyODA2LCAzMjgxMSwgMzI4MTYsIAotICAgIDMyODIxLCAzMjgyNCwgMzI4MzAsIDMyODM4LCAzMjg0MywgMzI4NDcsIDMyODUyLCAzMjg1OCwgMzI4NjcsIDMyODczLCAKLSAgICAzMjg3OCwgMzI4ODMsIDMyODg4LCAzMjg5MiwgMzI4OTcsIDMyOTAyLCAzMjkwNywgMzI5MTIsIDMyOTE3LCAzMjkyNCwgCi0gICAgMzI5MzEsIDMyOTM3LCAzMjk0MywgMzI5NDgsIDE3ODIyLCAzMjk1NSwgMzI5NjEsIDMyOTY4LCAzMjk3NCwgMzI5ODAsIAotICAgIDMyOTg1LCAzMjk5MywgMzI5OTgsIDEwMzcyLCAzMzAwMiwgMzMwMDcsIDMzMDEyLCAzMzAxOCwgMzMwMjMsIDMzMDI4LCAKLSAgICAzMzAzMiwgMzMwMzcsIDMzMDQyLCAzMzA0OCwgMzMwNTMsIDMzMDU4LCAzMzA2MywgMzMwNjcsIDMzMDcyLCAzMzA3NywgCi0gICAgMzMwODEsIDMzMDg2LCAzMzA5MSwgMzMwOTUsIDMzMTAwLCAzMzEwNCwgMzMxMDksIDMzMTE0LCAzMzExOSwgMzMxMjMsIAotICAgIDMzMTI4LCAzMzEzMiwgMzMxMzYsIDE2NjgyLCAzMzE0MSwgMzMxNTAsIDMzMTU2LCAzMzE2MiwgMzMxNzEsIDMzMTc5LCAKLSAgICAzMzE4OCwgMzMxOTYsIDMzMjAxLCAzMzIwNSwgMzMyMTIsIDMzMjE4LCAzMzIyNiwgMzMyMzAsIDMzMjMzLCAzMzIzOCwgCi0gICAgMzMyNDIsIDMzMjUxLCAzMzI1OSwgMzMyNzcsIDMzMjgzLCAxNDkzLCAzMzI4OSwgMzMyOTIsIDMzMjk2LCAyNDIzOCwgCi0gICAgMjQyNDQsIDMzMzAyLCAzMzMwNiwgMzMzMTcsIDMzMzI4LCAzMzMzOSwgMzMzNTEsIDMzMzU1LCAzMzM2MiwgMzMzNjksIAotICAgIDMzMzc0LCAzMzM3OCwgNjIwNCwgOTI4LCAyMjk1OCwgMzMzODYsIDMzMzkxLCAzMzM5NSwgMzM0MDAsIDMzNDA0LCAzMzQxMCwgCi0gICAgMzM0MTUsIDMzNDIxLCAzMzQyNiwgMzM0MzIsIDMzNDM3LCAzMzQ0MywgMzM0NDgsIDMzNDU0LCAzMzQ2MCwgMzM0NjYsIAotICAgIDMzNDcxLCAzMzQyNywgMzM0MzMsIDMzNDc1LCAzMzQ4MCwgMzM0ODYsIDMzNDkxLCAzMzQ5NywgMzM1MDIsIDMzNTA4LCAKLSAgICAzMzUxMywgMzM0MzgsIDExMzE0LCAzMzUxNywgMzM0NDksIDMzNDU1LCAzMzQ2MSwgMjg4NSwgMzUzMywgMzM1MjMsIAotICAgIDMzNTI2LCAzMzUzMSwgMzM1MzcsIDMzNTQzLCAzMzU0OSwgMzM1NTYsIDMzNTYyLCAzMzU2OCwgMzM1NzQsIDMzNTgwLCAKLSAgICAzMzU4NiwgMzM1OTIsIDMzNTk4LCAzMzYwNCwgMzM2MTAsIDMzNjE2LCAzMzYyMiwgMzM2MjgsIDMzNjM1LCAzMzY0MSwgCi0gICAgMzM2NDcsIDMzNjUzLCAzMzY1OSwgMzM2NjUsIDMzNjY4LCAzMzY3MywgMzM2NzYsIDMzNjgzLCAzMzY4OCwgMzM2OTYsIAotICAgIDMzNzAxLCAzMzcwNiwgMzM3MTIsIDMzNzE3LCAzMzcyMiwgMzM3MjYsIDMzNzMxLCAzMzczNywgMzM3NDIsIDMzNzQ4LCAKLSAgICAzMzc1MywgMzM3NTksIDMzNzY0LCAzMzc3MCwgMzM3NzYsIDMzNzgwLCAzMzc4NSwgMzM3OTAsIDMzNzk1LCAzMzgwMCwgCi0gICAgMzM4MDQsIDMzODA5LCAzMzgxNCwgMzM4MTksIDMzODI1LCAzMzgzMSwgMzM4MzcsIDMzODQzLCAzMzg0OCwgMzM4NTIsIAotICAgIDMzODU1LCAzMzg2MSwgMzM4NjcsIDMzODc2LCAzMzg4NCwgMzM4OTEsIDMzODk2LCAzMzkwMCwgMzM5MDQsIDMzOTA5LCAKLSAgICAxNjUzMCwgMzM5MTQsIDMzOTIyLCAzMzkyOCwgMzg2NiwgMTM1OCwgMzM5MzMsIDMzOTM3LCA4MzU5LCAzMzk0MywgMzM5NDksIAotICAgIDMzOTU2LCA4MzY4LCAzMzk2MCwgMzM5NjYsIDMzOTczLCAzMzk3OSwgMzM5ODgsIDMzOTk2LCA5MjQ0LCAzNDAwOCwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM0LCAzNDAzOCwgMzQwNDEsIDM0MDUxLCAzNDA2MCwgMzQwNjgsIAotICAgIDMzNDI4LCAzNDA3MywgMzQwODMsIDM0MDkzLCAzNDEwMywgMzQxMDksIDM0MTE0LCAzNDEyNCwgMzQxMjksIDM0MTQyLCAKLSAgICAzNDE1NiwgMzQxNjcsIDM0MTc5LCAzNDE5MSwgMzQyMDUsIDM0MjE4LCAzNDIzMCwgMzQyNDIsIDE1ODk5LCAzNDI1NiwgCi0gICAgMzQyNjEsIDM0MjY2LCAzNDI3MCwgMzQyNzQsIDM0Mjc4LCAxNzk1LCAyOTI5MCwgMzQyODIsIDM0Mjg3LCAzMzQ3NiwgCi0gICAgMzQyOTIsIDM0Mjk1LCAzNDMwMCwgMzQzMDUsIDM0MzEwLCAzNDMxNiwgMzQzMjIsIDEwOTc0LCAzNDMyNywgMzQzMzMsIAotICAgIDM0MzQwLCAxNzEzMCwgMzQzNDYsIDM0MzUxLCAzNDM1NiwgMzQzNjAsIDM0MzY1LCAzNDM3MCwgMzM0ODEsIDM0Mzc1LCAKLSAgICAzNDM4MCwgMzQzODUsIDM0MzkxLCAzMzQ4NywgMzQzOTYsIDM0Mzk5LCAzNDQwNiwgMzQ0MTQsIDM0NDIwLCAzNDQyNiwgCi0gICAgMzQ0MzIsIDM0NDQzLCAzNDQ0OCwgMzQ0NTUsIDM0NDYyLCAzNDQ2OSwgMzQ0NzcsIDM0NDg2LCAzNDQ5NSwgMzQ1MDEsIAotICAgIDM0NTA3LCAzNDUxNSwgMzM0OTIsIDM0NTIwLCAzNDUyNiwgMzQ1MzIsIDMzNDk4LCAzNDUzNywgMzQ1NDIsIDM0NTUwLCAKLSAgICAzNDU1OCwgMzQ1NjQsIDM0NTcxLCAzNDU3NywgMzQ1ODQsIDM0NTkxLCAzNDU5NywgMzQ2MDUsIDM0NjE1LCAzNDYyMiwgCi0gICAgMzQ2MjgsIDM0NjMzLCAzNDYzOSwgMzQ2NDQsIDM0NjQ5LCAzNDY1NiwgMzQ2NjUsIDM0NjczLCAzNDY3OCwgMzQ2ODQsIAotICAgIDM0NjkxLCAzNDY5OSwgMzQ3MDUsIDM0NzEwLCAzNDcxNiwgMzQ3MjUsIDM0NzMyLCAzMDEzNSwgMzQ3MzgsIDM0NzQyLCAKLSAgICAzNDc0NywgMzQ3NTYsIDM0NzYxLCAzNDc2NiwgMzQ3NzEsIDEzNTQ4LCAzNDc3OSwgMzQ3ODQsIDM0Nzg5LCAzNDc5NCwgCi0gICAgMzQ3OTgsIDM0ODAzLCAzNDgwOCwgMzQ4MTUsIDM0ODIwLCAzNDgyNSwgMzQ4MzAsIDMzNTAzLCAyMjg5NSwgMzQ4MzYsIAotICAgIDI1NTgsIDE0NCwgMzQ4MzksIDM0ODQyLCAzNDg0NiwgMzQ4NTAsIDM0ODYwLCAzNDg2OCwgMzQ4NzUsIDM0ODc5LCAzNDg4MiwgCi0gICAgMzQ4OTAsIDM0ODk3LCAzNDkwNCwgMzQ5MTMsIDM0OTE3LCAzNDkyMCwgMzQ5MjYsIDM0OTMwLCAzNDkzOCwgMzQ5NDYsIAotICAgIDM0OTUwLCAzNDk1NCwgMzQ5NTcsIDM0OTYzLCAzNDk3MCwgMzQ5NzQsIDM0OTc4LCAzNDk4NSwgMzQ5OTMsIDMzNDM5LCAKLSAgICAzNTAwMCwgMzUwMDgsIDM1MDEzLCAxMTAzNCwgNjIzLCAzNjksIDM1MDI1LCAzNTAzMCwgMzUwMzUsIDM1MDQxLCAzNTA0NiwgCi0gICAgMzUwNTEsIDM4ODcsIDM1MDU2LCAzNTA1OSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIDM1MDg0LCAzNTA5MSwgCi0gICAgMjQzNTYsIDM1MDk2LCAzNTEwMSwgMzUxMDYsIDM1MTExLCAzNTExNiwgMzUxMjIsIDM1MTI3LCAzNTEzMywgMzM2NzksIAotICAgIDM1MTM5LCAzNTE0NCwgMzUxNTAsIDM1MTU2LCAzNTE2NiwgMzUxNzEsIDM1MTc2LCAzNTE4MCwgMzUxODUsIDM1MTkwLCAKLSAgICAzNTE5NSwgMzUyMDAsIDM1MjEzLCAzNTIxOCwgMjQwMTksIDE4MjU1LCAzOTAwLCAzNTIyMiwgMzUyMjgsIDM1MjMzLCAKLSAgICAzNTIzOCwgMzUyNDQsIDM1MjQ5LCAzNTI1NCwgMzUyNTgsIDM1MjYzLCAzNTI2OCwgMzUyNzQsIDM1Mjc5LCAzNTI4NCwgCi0gICAgMTM2MywgMzUyODgsIDM1MjkzLCAzNTI5OCwgMzUzMDMsIDM1MzA3LCAzNTMxMiwgMzUzMTcsIDM1MzIyLCAzNTMyOCwgCi0gICAgMzUzMzQsIDM1MzM5LCAzNTM0MywgMzUzNDcsIDM1MzUyLCAzNTM1NywgMzUzNjIsIDM1MzY2LCAzNTM3NCwgMzUzNzgsIAotICAgIDM1Mzg0LCAzNTM4OCwgMzUzOTUsIDE4MDM5LCAzMzQ1MCwgMzU0MDEsIDM1NDA4LCAzNTQxNiwgMzU0MjMsIDM1NDI5LCAKLSAgICAzNTQ0MiwgMzU0NTQsIDM1NDU5LCAzNTQ2NSwgMzU0NjksIDI4MTIsIDM1NDczLCAzNTQ3NywgMzQ5NjUsIDM1NDg2LCAKLSAgICAzNTQ5NywgMzU1MDIsIDMwMTk4LCAzNTUwNywgMzU1MTIsIDM1NTE2LCAzNTUyMSwgMjQyNDksIDM1NTI1LCAzNTUyOSwgCi0gICAgMzU1MzQsIDMzNDU2LCAyMjk4NSwgMzU1MzgsIDM1NTQzLCAzNTU0OSwgMzU1NTQsIDM1NTU4LCAzNTU2MiwgMzU1NjUsIAotICAgIDM1NTY5LCAzNTU3NSwgMzU1ODQsIDM1NTk1LCAzNTYwNywgMzM0NjIsIDM1NjEyLCAzNTYxNSwgMzU2MTksIDM1NjIzLCAKLSAgICA0MDYsIDM1NjI4LCAzNTYzMywgMzU2MzgsIDM1NjQzLCAzNTY0OCwgMzU2NTMsIDM1NjU5LCAzNTY2NCwgMzU2NjksIAotICAgIDM1Njc1LCAzNTY4MCwgMzU2ODYsIDM1NjkxLCAzNTY5NywgMzU3MDIsIDM1NzA3LCAzNTcxMiwgMzU3MTcsIDM1NzIyLCAKLSAgICAzNTcyNywgMzU3MzIsIDM1NzM3LCAzNTc0MywgMzU3NDgsIDM1NzUzLCAzNTc1OCwgMzU3NjMsIDM1NzY4LCAzNTc3MywgCi0gICAgMzU3NzgsIDM1Nzg0LCAzNTc5MCwgMzU3OTUsIDM1ODAwLCAzNTgwNSwgMzU4MTAsIDM1ODE1LCAzNTgyMCwgMzU4MjUsIAotICAgIDM1ODMwLCAzNTgzNSwgMzU4NDAsIDM1ODQ1LCAzNTg1MCwgMzU4NTUsIDM1ODYwLCAzNTg2NSwgMzU4NzAsIDM1ODc1LCAKLSAgICAzNTg4MCwgMzU4ODYsIDMyNSwgOSwgMzU4OTEsIDM1ODk1LCAzNTg5OSwgMzU5MDcsIDM1OTExLCAzNTkxNSwgMzU5MTgsIAotICAgIDM1OTIxLCAzNTkyMywgMzU5MjgsIDM1OTMyLCAzNTkzNywgMzU5NDEsIDM1OTQ2LCAzNTk1MCwgMzU5NTUsIDM1OTU5LCAKLSAgICAzNTk2MiwgMzU5NjQsIDM1OTY4LCAzNTk3MywgMzU5NzcsIDM1OTg4LCAzNTk5MSwgMzU5OTMsIDM1OTk3LCAzNjAwOSwgCi0gICAgMzYwMTgsIDM2MDIyLCAzNjAyNiwgMzYwMzIsIDM2MDM3LCAzNjA0NiwgMzYwNTIsIDM2MDU3LCAzNjA2MiwgMzYwNjYsIAotICAgIDM2MDcwLCAzNjA3NSwgMzYwODIsIDM2MDg3LCAzNjA5MywgMzYwOTgsIDM2MTAyLCAzNjEwOSwgMjc3MzEsIDI3NzQxLCAKLSAgICAzNjExMywgMzYxMTgsIDM2MTIzLCAzNjEyOCwgMzYxMzUsIDM2MTM5LCAzNjE0NiwgMzYxNTIsIDg0OTEsIDM2MTU2LCAKLSAgICAzNjE2NSwgMzYxNzMsIDM2MTg4LCAzNjIwMiwgMzYyMTEsIDM2MjE5LCAzNjIzMCwgMzYyMzksIDM2MjQ0LCAzNjI1MSwgCi0gICAgNzU1NiwgMzYyNjEsIDM2MjY2LCAzNjI3MSwgMzYyNzUsIDM2Mjc4LCAzNjI4MywgMzYyODcsIDM2MjkyLCAzNjI5NiwgCi0gICAgMzYzMDMsIDM2MzA4LCAzNjMxMywgMzYzMTgsIDkzOTEsIDM2MzI4LCAzNjMzMCwgMzYzMzMsIDM2MzM2LCAzNjM0MCwgCi0gICAgMzYzNDYsIDM2MzUwLCAzNjM1NSwgMzYzNjAsIDM2Mzc4LCAzNjM5MiwgMzY0MTEsIDM2NDI4LCAzNjQzNywgMzY0NDUsIAotICAgIDM2NDUwLCAzNjQ1NSwgMTQ4NiwgMzY0NjEsIDM2NDY3LCAzNjQ3MiwgMzY0ODIsIDM2NDkxLCAzNjQ5OSwgMzY1MDQsIAotICAgIDM2NTEwLCAzNjUxNSwgMzY1MjQsIDM2NTM1LCAzNjU0MCwgMzY1NDcsIDM2NTUxLCAzNjU1OCwgMzY1NjYsIDM2NTczLCAKLSAgICAzNjU4NiwgMzY1OTQsIDM2NTk4LCAzNjYwOCwgMzY2MTMsIDM2NjE3LCAzNjYyNSwgMzY2MzMsIDM2NjM4LCAzNjY0MiwgCi0gICAgMzY2NDYsIDM2NjU1LCAzNjY2MSwgMzY2NjYsIDM2Njc0LCAzNjY4NCwgMzY2OTMsIDM2NzAyLCAzNjcxMSwgMzY3MjIsIAotICAgIDM2NzMwLCAzNjc0MSwgMzY3NTAsIDM2NzU3LCAzNjc2MywgMzY3NjgsIDM2Nzc5LCAzNjc5MCwgMzY3OTUsIDM2Nzk5LCAKLSAgICAzNjgwMiwgMzY4MDYsIDM2ODE0LCAzNjgyMCwgMzY4MzEsIDM2ODQyLCAzNjg1MywgMzY4NjQsIDM2ODc1LCAzNjg4NiwgCi0gICAgMzY4OTcsIDM2OTA4LCAzNjkyMCwgMzY5MzIsIDM2OTQ0LCAzNjk1NiwgMzY5NjgsIDM2OTgwLCAzNjk5MiwgMzY5OTYsIAotICAgIDM3MDA0LCAzNzAxMCwgMzcwMTcsIDM3MDIzLCAzNzAyOCwgMzcwMzQsIDI0NTcsIDM3MDM4LCAzNzA0MCwgMzcwNDUsIAotICAgIDM3MDUwLCAzNzA1NSwgMzcwNTgsIDM3MDYwLCAzNzA2NCwgMzcwNjcsIDM3MDc0LCAzNzA3OCwgMTA2NjQsIDM3MDgyLCAKLSAgICAzNzA4OCwgMzcwOTgsIDM3MTAzLCAzNzEwOSwgMzcxMTMsIDM3MTE4LCAzNzEzMSwgMjgxNjIsIDM3MTM3LCAzNzE0NiwgCi0gICAgMzcxNTUsIDE5MTA0LCAzNzE2MiwgMzcxNzEsIDM0MDg5LCAzNzE3OSwgMzcxODQsIDM3MTg4LCAzNzE5NywgMzcyMDUsIAotICAgIDM3MjEyLCAzNzIxNywgMzcyMjEsIDM3MjI2LCAzNzIzNCwgMzcyMzgsIDM3MjQ2LCAzNzI1MiwgMzcyNTgsIDM3MjYzLCAKLSAgICAzNzI2NywgMzcyNzAsIDM3Mjc1LCAzNzI4OCwgMzczMDQsIDI0ODQwLCAzNzMyMSwgMzczMzMsIDM3MzUwLCAzNzM2MiwgCi0gICAgMzczNzYsIDI0ODU3LCAyNDg3NiwgMzczODgsIDM3NDAwLCAyNzE5LCAzNzQxNCwgMzc0MTksIDM3NDI0LCAzNzQyOSwgCi0gICAgMzc0MzMsIDM3NDQwLCAzNzQ1MiwgMzc0NTksIDM3NDY4LCAzNzQ3MSwgMzc0ODIsIDM3NDkzLCAzNzQ5OCwgMzQ1MTIsIAotICAgIDg1MiwgMzc1MDIsIDM3NTA2LCAzNzUxMCwgMzc1MTMsIDM3NTE4LCAzNzUyMywgMzc1MjksIDM3NTM0LCAzNzUzOSwgCi0gICAgMzc1NDUsIDM3NTUxLCAzNzU1NiwgMzc1NjAsIDM3NTY1LCAzNzU3MCwgMzc1NzUsIDM3NTc5LCAzNzU4MiwgMzc1ODgsIAotICAgIDM3NTkzLCAzNzU5OCwgMzc2MDMsIDM3NjA3LCAzNzYxMiwgMzc2MTgsIDM3NjI2LCAyODQxNCwgMzc2MzEsIDM3NjM2LCAKLSAgICAzNzY0MywgMzc2NDksIDM3NjU1LCAzNzY2MCwgMzc2NjgsIDI0MzY1LCAzNzY3NSwgMzc2ODAsIDM3Njg1LCAzNzY5MCwgCi0gICAgMzc2OTQsIDM3Njk3LCAzNzcwMiwgMzc3MDYsIDM3NzEwLCAzNzcxNywgMzc3MjMsIDM3NzI5LCAzNzczNSwgMzc3NDIsIAotICAgIDM3NzQ3LCAzNzc1MywgMzY2MjgsIDM3NzU3LCAzNzc2MSwgMzc3NjYsIDM3Nzc5LCAzNzc4NCwgMzc3OTAsIDM3Nzk4LCAKLSAgICAzNzgwNSwgMzc4MTMsIDM3ODIzLCAzNzgyOSwgMzc4MzUsIDM3ODQxLCAzNzg0NSwgMzc4NTQsIDM3ODYyLCAzNzg2OSwgCi0gICAgMzc4NzQsIDM3ODc5LCAxMTMzNywgMzc4ODQsIDM3ODkxLCAzNzg5NywgMzc5MDcsIDM3OTEyLCAzNzkxOCwgMzc5MjYsIAotICAgIDM3NzUsIDM3OTMzLCAzNzk0MCwgMzc5NDYsIDM3OTUzLCAzNzgxLCAzNzk1NywgMzc5NjIsIDM3OTczLCAzNzk4MCwgCi0gICAgMzc5ODYsIDM3OTk1LCAzNzk5OSwgNDI0NCwgMzgwMDIsIDM4MDA5LCAzODAxNSwgMzgwMjEsIDM4MDI5LCAzODAzOSwgCi0gICAgMzEzMjYsIDM4MDQ2LCAzODA1NCwgMzgwNjAsIDM4MDY1LCAzODA3MSwgMzgwNzYsIDM4MDgwLCAyODAxMCwgMzgwODYsIAotICAgIDM4MDkzLCAzODA5OSwgMzgxMDgsIDM4MTE1LCAyNTU2NSwgMzgxMjEsIDM4MTI2LCAzODEzMCwgMzgxMzgsIDM4MTQ2LCAKLSAgICAxMDMzMCwgNjE3OSwgMzgxNTMsIDM4MTU3LCAzODE1OSwgMzgxNjMsIDM4MTY4LCAzODE3MCwgMzgxNzUsIDM4MTgxLCAKLSAgICAzODE4NiwgMzgxOTEsIDM4MTk4LCAzNTA4NywgMzgyMDQsIDM4MjA5LCAzODIxMywgMzgyMTgsIDM4MjIyLCAzODIzMSwgCi0gICAgMzgyMzUsIDM4MjQxLCAzODI0OCwgMzgyNTQsIDM4MjYxLCAzODI2NiwgMzgyNzUsIDM4MjgwLCAzODI4NCwgMzgyODksIAotICAgIDM4Mjk2LCAzODMwNCwgMzgzMTIsIDM4MzE3LCAyMzA0MSwgMzgzMjEsIDM4MzI0LCAzODMyOCwgMzgzMzIsIDExNzI1LCAKLSAgICA4NzIsIDM4MzM2LCAzODM0MSwgMzgzNDksIDM4MzUzLCAzODM2MiwgMzgzNjksIDM4MzczLCAzODM3NywgMzgzODUsIAotICAgIDM4MzkyLCAzODQwMiwgMzg0MDYsIDM4NDEwLCAzODQxOCwgMzg0MjYsIDM4NDMyLCAzODQzNywgMzg0NDYsIDE0NTMwLCAKLSAgICAzODQ1MiwgMzg0NjEsIDM4NDY2LCAzODQ3MywgMzg0ODAsIDM4NDg4LCAzODQ5NiwgMzg1MDQsIDM4NTA5LCAzODUxNiwgCi0gICAgMzg1MjMsIDM4NTMwLCAzODUzNywgMzg1NDQsIDM4NTQ5LCAzODU1NSwgMzg1NzIsIDM4NTgwLCAzODU5MCwgMzg1OTgsIAotICAgIDM4NjA1LCA0MTQsIDM4NjA5LCAzODYxNSwgMzg2MTksIDM4NjI0LCAzNjIzNSwgMzg2MzAsIDM4NjMzLCAzODYzNywgCi0gICAgMzg2NDgsIDM4NjU2LCAzNzg2LCAzODY2NCwgMzg2NzAsIDM4Njc2LCAzODY4NiwgMzg2OTUsIDM4NzA1LCAzODcxMiwgCi0gICAgMzg3MTgsIDM4NzIzLCAzNzkyLCAzNzk4LCAzODczMiwgMzg3MzksIDM4NzQ3LCAzODc1MiwgMzg3NTYsIDM4NzYzLCAKLSAgICAzODc3MSwgMzg3NzgsIDM4Nzg0LCAzODc5MywgMzg4MDMsIDM4ODA5LCAzODgxNywgMzg4MjYsIDM4ODMzLCAzODg0MSwgCi0gICAgMzg4NDgsIDIzNzI4LCAzODg1MiwgMzg4NTksIDM4ODY1LCAzODg3NSwgMzg4ODQsIDM4ODkyLCAzODkwMywgMzg5MDcsIAotICAgIDM4OTE3LCAzODkyMywgMzg5MzAsIDM4OTM4LCAzODk0NywgMzg5NTYsIDM4OTY2LCAzODk3NywgMzg5ODQsIDM4OTg5LCAKLSAgICAzODk5NiwgMzA4OCwgMzkwMDQsIDM5MDEwLCAzOTAxNSwgMzkwMjEsIDM5MDI3LCAzOTAzMiwgMzkwNDUsIDM5MDU4LCAKLSAgICAzOTA3MSwgMzkwNzgsIDM5MDg0LCAzOTA5MiwgMzkxMDAsIDM5MTA1LCAzOTEwOSwgMTQ1NSwgMzkxMTMsIDM5MTE3LCAKLSAgICAzOTEyMSwgMzkxMjUsIDM5MTI5LCAzOTEzMywgMzkxMzcsIDM5MTQxLCAzOTE0NSwgMzkxNDksIDM5MTUzLCAzOTE1NywgCi0gICAgMzkxNjEsIDM5MTY1LCAzOTE2OSwgMzkxNzMsIDM5MTc3LCAzOTE4MSwgMzkxODUsIDM5MTg5LCAzOTE5MywgMzkxOTcsIAotICAgIDM5MjAxLCAzOTIwNSwgMzkyMDksIDM5MjEzLCAzOTIxNywgMzkyMjEsIDM5MjI1LCAzOTIyOSwgMzkyMzMsIDM5MjM3LCAKLSAgICAzOTI0MSwgMzkyNDUsIDM5MjQ5LCAzOTI1MywgMzkyNTcsIDM5MjYxLCAzOTI2NSwgMzkyNjksIDM5MjczLCAzOTI3NywgCi0gICAgMzkyODEsIDM5Mjg1LCAzOTI4OSwgMzkyOTMsIDM5Mjk3LCAzOTMwMSwgMzkzMDUsIDM5MzA5LCAzOTMxMywgMzkzMTcsIAotICAgIDM5MzIxLCAzOTMyNSwgMzkzMjksIDM5MzMzLCAzOTMzNywgMzkzNDEsIDM5MzQ1LCAzOTM0OSwgMzkzNTMsIDM5MzU3LCAKLSAgICAzOTM2MSwgMzkzNjUsIDM5MzY5LCAzOTM3MywgMzkzNzcsIDM5MzgxLCAzOTM4NSwgMzkzODksIDM5MzkzLCAzOTM5NywgCi0gICAgMzk0MDEsIDM5NDA1LCAzOTQwOSwgMzk0MTMsIDM5NDE3LCAzOTQyMSwgMzk0MjUsIDM5NDI5LCAzOTQzMywgMzk0MzcsIAotICAgIDM5NDQxLCAzOTQ0NSwgMzk0NDksIDM5NDUzLCAzOTQ1NywgMzk0NjEsIDM5NDY1LCAzOTQ2OSwgMzk0NzMsIDM5NDc3LCAKLSAgICAzOTQ4MSwgMzk0ODUsIDM5NDg5LCAzOTQ5MywgMzk0OTcsIDM5NTAxLCAzOTUwNSwgMzk1MDksIDM5NTEzLCAzOTUxNywgCi0gICAgMzk1MjEsIDM5NTI1LCAzOTUyOSwgMzk1MzMsIDM5NTM3LCAzOTU0MSwgMzk1NDUsIDM5NTQ5LCAzOTU1MywgMzk1NTcsIAotICAgIDM5NTYxLCAzOTU2NSwgMzk1NjksIDM5NTczLCAzOTU3NywgMzk1ODEsIDM5NTg1LCAzOTU4OSwgMzk1OTMsIDM5NTk3LCAKLSAgICAzOTYwMSwgMzk2MDUsIDM5NjA5LCAzOTYxMywgMzk2MTcsIDM5NjIxLCAzOTYyNSwgMzk2MjksIDM5NjMzLCAzOTYzNywgCi0gICAgMzk2NDEsIDM5NjQ1LCAzOTY0OSwgMzk2NTMsIDM5NjU3LCAzOTY2MSwgMzk2NjUsIDM5NjY5LCAzOTY3MywgMzk2NzcsIAotICAgIDM5NjgxLCAzOTY4NSwgMzk2ODksIDM5NjkzLCAzOTY5NywgMzk3MDEsIDM5NzA1LCAzOTcwOSwgMzk3MTMsIDM5NzE3LCAKLSAgICAzOTcyMSwgMzk3MjUsIDM5NzMwLCAzOTczNCwgMzk3MzksIDM5NzQzLCAzOTc0OCwgMzk3NTIsIDM5NzU3LCAzOTc2MSwgCi0gICAgMzk3NjcsIDM5NzcyLCAzOTc3NiwgMzk3ODEsIDM5Nzg1LCAzOTc5MCwgMzk3OTQsIDM5Nzk5LCAzOTgwMywgMzk4MDgsIAotICAgIDM5ODEyLCAzOTgxNywgMzk4MjEsIDM5ODI2LCAzOTgzMCwgMzk4MzYsIDM5ODQyLCAzOTg0NywgMzk4NTEsIDM5ODU2LCAKLSAgICAzOTg2MCwgMzk4NjYsIDM5ODcxLCAzOTg3NSwgMzk4ODAsIDM5ODg0LCAzOTg4OSwgMzk4OTMsIDM5ODk5LCAzOTkwNCwgCi0gICAgMzk5MDgsIDM5OTEzLCAzOTkxNywgMzk5MjIsIDM5OTI2LCAzOTkzMSwgMzk5MzUsIDM5OTQxLCAzOTk0NiwgMzk5NTAsIAotICAgIDM5OTU1LCAzOTk1OSwgMzk5NjUsIDM5OTcwLCAzOTk3NCwgMzk5NzksIDM5OTgzLCAzOTk4OCwgMzk5OTIsIDM5OTk3LCAKLSAgICA0MDAwMSwgNDAwMDYsIDQwMDEwLCA0MDAxNiwgNDAwMjEsIDQwMDI1LCA0MDAzMSwgNDAwMzYsIDQwMDQwLCA0MDA0NiwgCi0gICAgNDAwNTEsIDQwMDU1LCA0MDA2MCwgNDAwNjQsIDQwMDY5LCA0MDA3MywgNDAwNzksIDQwMDg1LCA0MDA5MSwgNDAwOTcsIAotICAgIDQwMTAzLCA0MDEwOSwgNDAxMTUsIDQwMTIxLCA0MDEyNiwgNDAxMzAsIDQwMTM1LCA0MDEzOSwgNDAxNDUsIDQwMTUwLCAKLSAgICA0MDE1NCwgNDAxNTksIDQwMTYzLCA0MDE2OCwgNDAxNzIsIDQwMTc3LCA0MDE4MSwgNDAxODYsIDQwMTkwLCA0MDE5NSwgCi0gICAgNDAxOTksIDQwMjA0LCA0MDIwOCwgNDAyMTQsIDQwMjE5LCA0MDIyMywgNDAyMjgsIDQwMjMyLCA0MDIzOCwgNDAyNDQsIAotICAgIDQwMjQ5LCAxMTYsIDU3LCA0MDI1MywgNDAyNTUsIDQwMjU5LCA0MDI2MywgNDAyNjcsIDQwMjcyLCA0MDI3NiwgNDAyODAsIAotICAgIDEwMjUxLCA0MDI4NSwgNDAyOTEsIDE3NTYsIDY1OTcsIDQwMjk3LCA0MDMwMCwgNDAzMDUsIDQwMzA5LCA0MDMxNCwgCi0gICAgNDAzMTgsIDQwMzIyLCA0MDMyNywgMTExMjEsIDQwMzMxLCA0MDMzNSwgNDAzMzksIDUyNSwgNDAzNDMsIDE2NzgzLCAKLSAgICA0MDM0OCwgNDAzNTIsIDQwMzU3LCA0MDM2MiwgNDAzNjcsIDQwMzcxLCA0MDM3OCwgMjgxODYsIDQwMzg0LCA0MDM4NywgCi0gICAgNDAzOTEsIDQwMzk2LCA0MDQwMiwgNDA0MDYsIDQwNDA5LCA0MDQxNywgNDA0MjMsIDQwNDI4LCA0MDQzMiwgNDA0MzUsIAotICAgIDQwNDM5LCA0MDQ0NSwgNDA0NDksIDQwNDUzLCAzNTg0LCAzNTg5LCAzMTUzNywgNDA0NTYsIDQwNDYwLCA0MDQ2NCwgCi0gICAgNDA0NjgsIDQwNDcyLCA0MDQ4MCwgNDA0ODcsIDQwNDkxLCAxNDQ4MCwgNDA0OTgsIDQwNTAzLCA0MDUxNywgNDA1MjQsIAotICAgIDQwNTM1LCAzMzUsIDQwNTQwLCA0MDU0NCwgNDA1NTAsIDQwNTYyLCA0MDU2OCwgNDA1NzQsIDMxNTc0LCA0MDU3OCwgCi0gICAgNDA1ODQsIDQwNTkzLCA0MDU5NywgNDA2MDEsIDQwNjA2LCA0MDYxMiwgNDA2MTcsIDQwNjIxLCA0MDYyNiwgNDA2MzAsIAotICAgIDQwNjM0LCA0MDY0MSwgNDA2NDcsIDQwNjUyLCA0MDY2NywgNDA2ODIsIDQwNjk3LCA0MDcxMywgNDA3MzEsIDExMDcxLCAKLSAgICA0MDc0NSwgNDA3NTIsIDQwNzU2LCA0MDc1OSwgNDA3NjgsIDQwNzczLCA0MDc3NywgNDA3ODUsIDE3MzMzLCA0MDc5MywgCi0gICAgNDA3OTcsIDQwODA3LCA0MDgxOCwgMzE1MDcsIDQwODMxLCA0MDgzNSwgNDA4NDQsIDQwODYyLCA0MDg4MSwgNDA4ODksIAotICAgIDEwNTI1LCAxMTIzNCwgNDA4OTMsIDI0MjYxLCA0MDg5NiwgMzI0NzUsIDQwOTAxLCAxMDUyNCwgNDA5MDYsIDQwOTEyLCAKLSAgICA0MDkxNywgNDA5MjMsIDQwOTI4LCA0MDkzNCwgNDA5MzksIDQwOTQ1LCA0MDk1MCwgNDA5NTYsIDQwOTYyLCA0MDk2OCwgCi0gICAgNDA5NzMsIDQwOTI5LCA0MDkzNSwgNDA5NDAsIDQwOTQ2LCA0MDk1MSwgNDA5NTcsIDQwOTYzLCA4NTA0LCA0MDg5LCAKLSAgICA0MDk3NywgNDA5ODUsIDQwOTg5LCA0MDk5MiwgNDA5OTYsIDQxMDAxLCA0MTAwNiwgNDEwMTMsIDQxMDE5LCA0MTAyNSwgCi0gICAgNDEwMzAsIDE2MTc0LCA0MTAzNCwgMjgwMjIsIDQxMDM4LCA0MTA0MiwgNDEwNDYsIDQxMDUyLCA0MTA1NiwgMzAwNzUsIAotICAgIDQxMDY1LCA5NTQ0LCA0MTA2OSwgOTkzNywgNDEwNzIsIDQxMDc5LCA0MTA4NSwgNDEwODksIDEzMDA0LCA0MTA5NiwgCi0gICAgNDExMDIsIDQxMTA3LCA0MTExNCwgNDExMjEsIDQxMTI4LCAzMDc4MSwgODQxMCwgNDExMzUsIDQxMTQyLCA0MTE0OSwgCi0gICAgNDExNTUsIDQxMTYwLCA0MTE2NywgNDExNzgsIDQxMTg0LCA0MTE4OSwgNDExOTQsIDQxMTk5LCA0MTIwMywgNDEyMDgsIAotICAgIDQxMjE1LCA0MDkzMCwgNDEyMTksIDQxMjI5LCA0MTIzOCwgNDEyNDksIDQxMjU1LCA0MTI2MywgNDEyNzAsIDQxMjc1LCAKLSAgICA0MTI4MCwgNDEyODUsIDQxMjkwLCA0MTI5NSwgNDEyOTksIDQxMzAzLCA0MTMxMCwgNDEzMTYsIDQxMzI0LCAyMzUzLCAKLSAgICAxMDUwLCAxMTEzNywgMTExNDksIDExMTU0LCAxMTE2MCwgNDEzMzMsIDExMTY1LCAxMTE3MCwgMTExNzYsIDQxMzM4LCAKLSAgICA0MTM0OCwgNDEzNTIsIDExMTgxLCA0MTM1NywgMTg0NTMsIDQxMzYwLCA0MTM2NSwgNDEzNjksIDM3NDYzLCA0MTM4MCwgCi0gICAgNDEzODUsIDQxMzkyLCA0MTM5OSwgNDE0MDMsIDQxNDA2LCA0MTQxNCwgMTEwODQsIDQxNDIxLCA0MTQyNCwgNDE0MzAsIAotICAgIDQxNDQwLCA2MjMxLCA0MTQ0OSwgNDE0NTUsIDQxNDU5LCA0MTQ2NywgNDE0NzEsIDQxNDgxLCA0MTQ4NywgNDE0OTIsIAotICAgIDQxNTAzLCA0MTUxMiwgNDE1MjEsIDQxNTMwLCA0MTUzOSwgNDE1NDgsIDQxNTU3LCA0MTU2NiwgNDE1NzIsIDQxNTc4LCAKLSAgICA0MTU4MywgNDE1ODksIDQxNTk1LCA0MTYwMSwgNDE2MDYsIDQxNjA5LCA0MTYxNiwgNDE2MjIsIDQxNjI2LCA0MTYzMSwgCi0gICAgNDE2MzgsIDQxNjQ1LCA0MTY0OSwgNDE2NTIsIDQxNjYyLCA0MTY3NSwgNDE2ODQsIDQxNjkzLCA0MTcwNCwgNDE3MTcsIAotICAgIDQxNzI5LCA0MTc0MCwgNDE3NDksIDQxNzYwLCA0MTc2NSwgNDE3NzQsIDQxNzc5LCAxMTE4NiwgNDE3ODUsIDQxNzkyLCAKLSAgICA0MTgwMCwgNDE4MDUsIDQxODA5LCA0MTgxNiwgNDE4MjMsIDQwNDEsIDIwLCA0MTgyNywgNDE4MzIsIDE4MzAyLCA0MTgzNiwgCi0gICAgNDE4MzksIDQxODQyLCAzMDI1NSwgNDE4NDYsIDMwNzkwLCA0MTg1NCwgNDE4NTgsIDQxODYyLCA0MTg2NSwgNDE4NzEsIAotICAgIDQxODc3LCAzMzUyNywgNDE4ODIsIDQxODkwLCA0MTg5NiwgNDE5MDMsIDMwMjM4LCA0MTkwNywgMzA0NDEsIDQxOTExLCAKLSAgICA0MTkyMCwgNDE5MjQsIDQxOTMyLCA0MTkzOCwgNDE5NDQsIDQxOTQ5LCA0MTk1MywgMzA4MDksIDQxOTU5LCA0MTk2MiwgCi0gICAgNDE5NzAsIDQxOTc4LCA0Mzc5LCA0MTk4NCwgNDE5ODgsIDQxOTkzLCA0MjAwMCwgNDIwMDYsIDQyMDExLCA0MjAxNiwgCi0gICAgNDIwMjAsIDQyMDI2LCA0MjAzMSwgNDIwMzcsIDQyOTcsIDk0NCwgNDIwNDQsIDQyMDQ4LCA0MjA1MSwgMTY2NjQsIDQyMDYzLCAKLSAgICA0MjA3MSwgNDIwNzksIDQyMDg3LCA0MjA5NSwgNDIxMDIsIDQyMTEwLCA0MjExOCwgNDIxMjUsIDQyMTMzLCA0MjE0MSwgCi0gICAgNDIxNDksIDQyMTU3LCA0MjE2NSwgNDIxNzMsIDQyMTgxLCA0MjE4OSwgNDIxOTcsIDQyMjA1LCA0MjIxMywgNDIyMjAsIAotICAgIDQyMjI4LCA0MjIzNiwgNDIyNDQsIDQyMjUyLCA0MjI2MCwgNDIyNjgsIDQyMjc2LCA0MjI4NCwgNDIyOTIsIDQyMzAwLCAKLSAgICA0MjMwOCwgNDIzMTYsIDQyMzI0LCA0MjMzMiwgNDIzNDAsIDQyMzQ4LCA0MjM1NiwgNDIzNjQsIDQyMzcyLCA0MjM3OSwgCi0gICAgNDIzODcsIDQyMzk0LCA0MjQwMiwgNDI0MTAsIDQyNDE4LCA0MjQyNiwgNDI0MzQsIDQyNDQyLCA0MjQ1MCwgNDI0NTgsIAotICAgIDQyNDY5LCAyMzc2NCwgNDI0NzQsIDQyNDc3LCA0MjQ4NCwgNDI0ODgsIDQyNDk0LCA0MjQ5OCwgNDI1MDQsIDQyNTA5LCAKLSAgICA0MjUxNSwgNDI1MjAsIDQyNTI1LCA0MjUyOSwgNDI1MzMsIDQyNTM4LCA0MjU0MywgNDI1NTMsIDQyNTU5LCA0MjU3MiwgCi0gICAgNDI1NzgsIDQyNTg0LCA0MjU5MCwgNDI1OTcsIDQyNjAyLCA0MjYwOCwgNDI2MTMsIDE4MTk4LCAxNDU4LCA4MzEsIDQyNjE4LCAKLSAgICA0MjYyMSwgNDI2MjQsIDQyNjI3LCAzMzYxMSwgMzM2MTcsIDQyNjMwLCAzMzYyMywgMzM2MzYsIDMzNjQyLCAzMzY0OCwgCi0gICAgNDI2MzYsIDMzNjU0LCAzMzY2MCwgNDI2NDIsIDQyNjQ4LCAyNiwgNDI2NTYsIDQyNjYzLCA0MjY2NywgNDI2NzEsIDQyNjc5LCAKLSAgICAzNDQwMSwgNDI2ODMsIDQyNjg3LCA0MjY5NCwgNDI2OTksIDQyNzAzLCA0MjcwOCwgNDI3MTQsIDQyNzE5LCA0MjcyNSwgCi0gICAgNDI3MzAsIDQyNzM0LCA0MjczOCwgNDI3NDIsIDQyNzQ3LCA0Mjc1MSwgNDI3NTYsIDQyNzYwLCA0Mjc2NCwgNDI3NzEsIAotICAgIDQyNzc2LCA0Mjc4MCwgNDI3ODQsIDQyNzg5LCA0Mjc5MywgNDI3OTgsIDQyODAyLCA0MjgwNiwgNDI4MTEsIDQyODE3LCAKLSAgICAxNjkyNCwgMTY5MjksIDQyODIyLCA0MjgyNiwgNDI4MjksIDQyODMzLCA0MjgzNywgMjI4NTIsIDQyODQyLCA0Mjg0NiwgCi0gICAgNDI4NTIsIDQyODU5LCA0Mjg2NSwgNDI4NzAsIDQyODgwLCA0Mjg4NSwgNDI4OTMsIDQyODk3LCA0MjkwMCwgMzQ0MTYsIAotICAgIDQyOTA0LCA0MzU2LCA0MjkwOSwgNDI5MTQsIDQyOTE4LCA0MjkyMywgNDI5MjcsIDQyOTMyLCAxNDU0OCwgNDI5NDMsIAotICAgIDQyOTQ3LCA0Mjk1MCwgNDI5NTQsIDQyOTU5LCA0Mjk2MywgNDI5NjgsIDQyOTczLCA0Mjk3NywgNDI5ODEsIDQyOTg1LCAKLSAgICA0Mjk4OCwgNDI5OTIsIDg1MjMsIDE0NTY0LCA0Mjk5NSwgNDI5OTgsIDQzMDA0LCA0MzAwOSwgNDMwMTUsIDQzMDIwLCAKLSAgICA0MzAyNiwgNDMwMzEsIDQzMDM3LCA0MzA0MiwgNDMwNDgsIDQzMDU0LCA0MzA2MCwgNDMwNjUsIDQzMDY5LCA0MzA3MywgCi0gICAgNDMwODIsIDQzMDk4LCA0MzExNCwgNDMxMjQsIDMwMTQ1LCA0MzEzMSwgNDMxMzUsIDQzMTQwLCA0MzE0NSwgNDMxNDksIAotICAgIDQzMTUzLCAzODk1MSwgNDMxNTksIDQzMTY0LCA0MzE2OCwgNDMxNzUsIDQzMTgwLCA0MzE4NSwgNDMxODksIDQzMTkzLCAKLSAgICA0MzE5OSwgMjkwOTMsIDQzMjAzLCAyMzEzNiwgNDMyMDgsIDQzMjE1LCA0MzIyMywgNDMyMjksIDQzMjM2LCA0MzI0NCwgCi0gICAgNDMyNTAsIDQzMjU0LCA0MzI1OSwgNDMyNjUsIDQzMjczLCA0MzI3OCwgNDMyODIsIDQzMjkxLCAxMDIzMiwgNDMyOTksIAotICAgIDQzMzAzLCA0MzMxMSwgNDMzMTgsIDQzMzIzLCA0MzMyOCwgNDMzMzMsIDQzMzM3LCA0MzM0MCwgNDMzNDQsIDQzMzQ3LCAKLSAgICA0MzM1MSwgNDMzNTgsIDQzMzYzLCA0MzM2NywgNDMzNzMsIDI4NDkyLCAzMzY3NCwgNDMzNzcsIDQzMzg2LCA0MzM5NCwgCi0gICAgNDM0MDAsIDQzNDA3LCA0MzQxMywgNDM0MTksIDQzNDI0LCA0MzQyNywgNDM0MjksIDQzNDM2LCA0MzQ0MywgNDM0NDksIAotICAgIDQzNDUzLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCA0MzQ2OCwgNDM0NzMsIDQzNDc3LCA0MzQ4MSwgNDM0ODQsIDQzNDg4LCAKLSAgICA0MzUwMiwgMjQ5MDYsIDQzNTIxLCA0MzUzNCwgNDM1NDcsIDQzNTYwLCAyNDkyNCwgNDM1NzUsIDExNDIyLCA0MzU5MCwgCi0gICAgNDM1OTYsIDQzNjAwLCA0MzYwNCwgNDM2MDgsIDQzNjEyLCA0MzYxOSwgNDM2MjQsIDQzNjI4LCA0MzYzNSwgNDM2NDEsIAotICAgIDQzNjQ2LCA0MzY1MiwgNDM2NjIsIDQzNjc0LCA0MzY4NSwgNDM2OTAsIDQzNjk3LCA0MzcwMSwgNDM3MDUsIDQzNzA4LCAKLSAgICAxNzM0MywgMzg1NSwgNDM3MTYsIDE2OTUxLCA0MzcyOSwgNDM3MzYsIDQzNzQzLCA0Mzc0NywgNDM3NTEsIDQzNzU2LCAKLSAgICA0Mzc2MiwgNDM3NjcsIDQzNzczLCA0Mzc3NywgNDM3ODEsIDQzNzg0LCA0Mzc4OSwgNDM3OTMsIDQzNzk4LCA4MDgyLCAKLSAgICAxNjk2MiwgNDM4MDMsIDQzODA3LCA0MzgxMywgNDM4MjIsIDQzODI3LCA0MzgzNiwgNDM4NDMsIDM4Nzk5LCA0Mzg0OSwgCi0gICAgNDM4NTQsIDQzODU4LCA0Mzg2MywgNDM4NzAsIDQzODc2LCA0Mzg4MCwgNDM4ODMsIDQzODg3LCA0Mzg5MiwgMTU4NjQsIAotICAgIDQzODk5LCA0MzkwNiwgNDM5MTAsIDQzOTEzLCA0MzkxOCwgNDM5MjMsIDQzOTI5LCA0MzkzNCwgNDM5MzksIDQzOTQzLCAKLSAgICA0Mzk0OCwgNDM5NTgsIDQzOTYzLCA0Mzk2OSwgNDM5NzQsIDQzOTgwLCA0Mzk4NSwgNDM5OTEsIDQ0MDAxLCA0NDAwNiwgCi0gICAgNDQwMTEsIDQ0MDE1LCA0NDAyMCwgNzU1OCwgNzU3MCwgNDQwMjUsIDQ0MDI4LCA0NDAzNSwgNDQwNDEsIDQ0MDUwLCA5NDc3LCAKLSAgICAzNjc2MCwgNDQwNTgsIDQ0MDYyLCA0NDA2NiwgMzQ0NjQsIDQ0MDc0LCA0NDA4NSwgNDQwOTMsIDM4OTk5LCA0NDEwMCwgCi0gICAgNDQxMDUsIDQ0MTEwLCA0NDEyMSwgNDQxMjgsIDQ0MTM5LCAzNDQ4OCwgMjMxNDcsIDQ0MTQ3LCA5MDcsIDQ0MTUyLCAKLSAgICAxNDkxMywgNDQxNTgsIDMwMjI5LCA0NDE2NCwgNDQxNjksIDQ0MTc5LCA0NDE4OCwgNDQxOTUsIDQ0MjAxLCA0NDIwNSwgCi0gICAgNDQyMDgsIDQ0MjE1LCA0NDIyMSwgNDQyMjgsIDQ0MjM0LCA0NDI0NCwgNDQyNTIsIDQ0MjU4LCA0NDI2NCwgNDQyNjksIAotICAgIDQ0MjczLCA0NDI4MCwgNDQyODUsIDQ0MjkxLCA0NDI5OCwgNDQzMDQsIDQzNDY5LCA0NDMwOSwgNDQzMTMsIDU1OCwgCi0gICAgMTUwMjksIDQ0MzE5LCA0NDMyNCwgNDQzMjcsIDQ0MzMzLCA0NDM0MSwgMTM4MCwgNDQzNDYsIDQ0MzUwLCA0NDM1NSwgCi0gICAgNDQzNjAsIDQ0MzY1LCA0NDM3MiwgNDQzNzYsIDQ0MzgxLCA0NDM4NywgNDQzOTEsIDMzNjg0LCA0NDM5NiwgNDQ0MDEsIAotICAgIDQ0NDEwLCA0NDQxNywgNDQ0MjcsIDQ0NDMzLCAzMDI3MywgNDQ0NTAsIDQ0NDU5LCA0NDQ2NywgNDQ0NzMsIDQ0NDc4LCAKLSAgICA0NDQ4NSwgNDQ0OTEsIDQ0NDk5LCA0NDUwOCwgNDQ1MTYsIDQ0NTIwLCA0NDUyNSwgNDQ1MzMsIDMxMjUxLCAzNDQ5NywgCi0gICAgNDQ1MzksIDQ0NTU4LCAxNzI1NywgNDQ1NzIsIDQ0NTg4LCA0NDYwMiwgNDQ2MDgsIDQ0NjEzLCA0NDYxOCwgNDQ2MjMsIAotICAgIDQ0NjI5LCAzNDUwMywgNDQ2MzQsIDQ0NjM3LCA0NDY0NCwgNDQ2NDksIDQ0NjUzLCA0MDQsIDI5OTUsIDQ0NjYwLCA0NDY2NSwgCi0gICAgNDQ2NzAsIDI5NDUxLCA0NDQ4OCwgNDQ2NzQsIDQ0Njc5LCA0NDY4NywgNDQ2OTEsIDQ0Njk0LCA0NDY5OSwgNDQ3MDUsIAotICAgIDQ0NzExLCA0NDcxNiwgNDQ3MjAsIDMwMzI4LCA0NDcyMywgNDQ3MjgsIDQ0NzMyLCA0NDczNSwgNDQ3NDAsIDQ0NzQ0LCAKLSAgICA0NDc0OSwgNDQ3NTQsIDQ0NzU4LCA0NDc2MywgNDQ3NjcsIDQ0NzcxLCA0NDc3NSwgMjI4NDgsIDIyODU5LCA0NDc4MCwgCi0gICAgNDQ3ODUsIDQ0NzkxLCA0NDc5NiwgNDQ4MDIsIDI5MDUwLCA0NDgwNywgNDQ4MTEsIDIyOTQ1LCAxNzU0OSwgNDQ4MTQsIAotICAgIDQ0ODE5LCA0NDgyNCwgNDQ4MjksIDQ0ODM0LCA0NDgzOSwgNDQ4NDQsIDQ0ODQ5LCA0NzQsIDY4LCAzMzY5NywgMzM3MDIsIAotICAgIDMzNzA3LCAzMzcxMywgMzM3MTgsIDMzNzIzLCA0NDg1NCwgMzM3MjcsIDQ0ODU4LCA0NDg2MiwgNDQ4NjYsIDMzNzMyLCAKLSAgICAzMzczOCwgNDQ4ODAsIDMzNzQ5LCAzMzc1NCwgNDQ4ODgsIDQ0ODkzLCAzMzc2MCwgNDQ4OTgsIDQ0OTAzLCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE5LCA0NDkyNSwgNDQ5MzEsIDMzNzc3LCA0NDk0NCwgNDQ5NTMsIDQ0OTU5LCAzMzc4MSwgNDQ5NjMsIAotICAgIDMzNzg2LCA0NDk2OCwgMzM3OTEsIDMzNzk2LCA0NDk3MSwgNDQ5NzYsIDQ0OTgwLCA0NDk4NiwgMzMzMzIsIDQ0OTkzLCAKLSAgICAxNDc5NCwgNDUwMDAsIDQ1MDA1LCAzMzgwMSwgNDUwMDksIDQ1MDE0LCA0NTAxOSwgNDUwMjQsIDQ1MDI4LCA0NTAzMywgCi0gICAgNDUwMzgsIDQ1MDQ0LCA0NTA0OSwgNDUwNTQsIDQ1MDYwLCA0NTA2NiwgNDUwNzEsIDQ1MDc1LCA0NTA4MCwgNDUwODUsIAotICAgIDQ1MDkwLCA0NTA5NCwgNDUwOTksIDQ1MTA0LCA0NTEwOSwgNDUxMTUsIDQ1MTIxLCA0NTEyNywgNDUxMzIsIDQ1MTM2LCAKLSAgICA0NTE0MSwgNDUxNDUsIDMzODA1LCAzMzgxMCwgMzM4MTUsIDQ1MTQ5LCA0NTE1MywgNDUxNTcsIDMzODIwLCAzMzgyNiwgCi0gICAgMzM4MzIsIDMzODQ0LCA0NTE2OSwgMjgwNTksIDQ1MTczLCA0NTE3OCwgNDUxODIsIDQ1MTg3LCA0NTE5NCwgNDUxOTksIAotICAgIDQ1MjA0LCA0NTIwOSwgNDUyMTMsIDQ1MjE3LCA0NTIyNywgNDUyMzIsIDQ1MjM3LCA0NTI0MSwgNDUyNDUsIDQ1MjQ4LCAKLSAgICA0NTI1NiwgMzM4OTIsIDQ1MjYxLCAxNDY1LCA0NTI2NywgNDUyNzIsIDQ1Mjc4LCA0NTI4NiwgNDUyOTAsIDQ1Mjk5LCAKLSAgICA0NTMwMywgNDUzMDcsIDQ1MzE1LCA0NTMyMSwgNDUzMjksIDQ1MzQ1LCA0NTM0OSwgNDUzNTMsIDQ1MzU3LCA0NTM2MiwgCi0gICAgNDUzNjgsIDQ1MzgzLCAzMzkyOSwgMTc2NCwgMTMxOTgsIDQ1Mzg3LCAxMzU5LCAxMzc0LCA0NTM5OSwgNDU0MDcsIDQ1NDE0LCAKLSAgICA0NTQxOSwgNDU0MjYsIDQ1NDMxLCA5OTIyLCAxMTM5LCAyNTQ0LCAxMTIxMywgNDU0MzgsIDk4MjAsIDQ1NDQzLCA0NTQ0NiwgCi0gICAgNDU0NTUsIDEyNjcsIDQ1NDYwLCA0MzYyNSwgNDU0NjcsIDQ1NDc2LCA0NTQ4MSwgNDU0ODUsIDQ1NDkzLCAyNDMxNywgCi0gICAgMjU5NiwgNDU1MDAsIDExNjc4LCA0NTUxMCwgNDU1MTYsIDIzNzEsIDIzODEsIDQ1NTI1LCA0NTUzNCwgNDU1NDQsIDQ1NTU1LCAKLSAgICAzMzc2LCAzNzA5OSwgNDU1NjAsIDExMjc3LCA0MDE5LCAxODIzNiwgMTI3MiwgNDU1NjQsIDQ1NTcyLCA0NTU3OSwgNDU1ODQsIAotICAgIDQ1NTg4LCA0NTU5MiwgMjU3OTIsIDQzODk0LCAxMTMwNCwgNDU2MDAsIDQ1NjA5LCA0NTYxOCwgNDU2MjYsIDQ1NjMzLCAKLSAgICA0NTY0NCwgNDU2NDksIDQ1NjYyLCA0NTY3NSwgNDU2ODcsIDQ1Njk5LCA0NTcxMSwgNDU3MjIsIDQ1NzM1LCA0NTc0NiwgCi0gICAgNDU3NTcsIDQ1NzY3LCA0NTc3NSwgNDU3ODMsIDQ1Nzk1LCA0NTgwNywgNDU4MTgsIDQ1ODI3LCA0NTgzNSwgNDU4NDIsIAotICAgIDQ1ODU0LCA0NTg2MSwgNDU4NjcsIDQ1ODc2LCA0NTg4MywgNDU4OTYsIDQ1OTAxLCA0NTkxMSwgNDU5MTYsIDQ1OTIyLCAKLSAgICA0NTkyNywgNDEwODYsIDQ1OTMxLCA0NTkzOCwgNDU5NDIsIDQ1OTQ5LCA0NTk1NywgNDU5NjQsIDI1NTcsIDQ1OTcxLCAKLSAgICA0NTk4MiwgNDU5OTIsIDQ2MDAxLCA0NjAwOSwgNDYwMTksIDQ2MDI3LCA0NjAzNywgNDYwNDYsIDQ2MDUxLCA0NjA1NywgCi0gICAgNDYwNjMsIDM4OTksIDQ2MDc0LCA0NjA4NCwgNDYwOTMsIDQ2MTAyLCA0NjExMCwgNDYxMjAsIDQ2MTI4LCA0NjEzNywgCi0gICAgNDYxNDIsIDQ2MTQ3LCA0NjE1MiwgMTY5NCwgNDcsIDQ2MTYwLCA0NjE2OCwgNDYxNzksIDQ2MTkwLCAxNzg3NSwgNDYyMDAsIAotICAgIDQ2MjA0LCA0NjIxMSwgNDYyMTcsIDQ2MjIyLCA0NjIyNiwgNDYyMzcsIDQ2MjQ3LCA0NjI1NiwgNDYyNjcsIDE4Mjc1LCAKLSAgICAxODI4MCwgNDYyNzIsIDQ2MjgxLCA0NjI4NiwgNDYyOTYsIDQ2MzAxLCA0NjMwOSwgNDYzMTcsIDQ2MzI0LCA0NjMzMCwgCi0gICAgMTY1NiwgMjc3LCA0NjMzNCwgNDYzNDAsIDQ2MzQ1LCA0NjM0OCwgMjE0MywgNDM3NDgsIDQ2MzU2LCA0NjM2MCwgNDYzNjMsIAotICAgIDE1MTAsIDQ2MzY5LCAxNTIxNCwgMTI3NywgNDYzNzQsIDQ2Mzg3LCA0NjQwMSwgMjY4MiwgNDY0MTksIDQ2NDMxLCA0NjQ0MywgCi0gICAgMjY5NiwgMjcxMywgNDY0NTcsIDQ2NDcwLCAyNzI4LCA0NjQ4NCwgNDY0OTYsIDI3NDMsIDQ2NTEwLCAxMjgzLCAxMjg5LCAKLSAgICAxMjk1LCAxMTU4NCwgNDY1MTUsIDQ2NTIwLCA0NjUyNSwgNDY1MjksIDQ2NTQ0LCA0NjU1OSwgNDY1NzQsIDQ2NTg5LCAKLSAgICA0NjYwNCwgNDY2MTksIDQ2NjM0LCA0NjY0OSwgNDY2NjQsIDQ2Njc5LCA0NjY5NCwgNDY3MDksIDQ2NzI0LCA0NjczOSwgCi0gICAgNDY3NTQsIDQ2NzY5LCA0Njc4NCwgNDY3OTksIDQ2ODE0LCA0NjgyOSwgNDY4NDQsIDQ2ODU5LCA0Njg3NCwgNDY4ODksIAotICAgIDQ2OTA0LCA0NjkxOSwgNDY5MzQsIDQ2OTQ5LCA0Njk2NCwgNDY5NzksIDQ2OTk0LCA0NzAwOSwgNDcwMjQsIDQ3MDM5LCAKLSAgICA0NzA1NCwgNDcwNjksIDQ3MDg0LCA0NzA5OSwgNDcxMTQsIDQ3MTI5LCA0NzE0NCwgNDcxNTksIDQ3MTc0LCA0NzE4OSwgCi0gICAgNDcyMDQsIDQ3MjE5LCA0NzIzNCwgNDcyNDksIDQ3MjY0LCA0NzI3OSwgNDcyOTQsIDQ3MzA5LCA0NzMyNCwgNDczMzksIAotICAgIDQ3MzU0LCA0NzM2OSwgNDczODQsIDQ3Mzk5LCA0NzQxNCwgNDc0MjksIDQ3NDQ0LCA0NzQ1OSwgNDc0NzQsIDQ3NDg5LCAKLSAgICA0NzUwNCwgNDc1MTksIDQ3NTM0LCA0NzU0OSwgNDc1NjQsIDQ3NTc5LCA0NzU5NCwgNDc2MDksIDQ3NjI0LCA0NzYzOSwgCi0gICAgNDc2NTQsIDQ3NjY5LCA0NzY4NCwgNDc2OTksIDQ3NzE0LCA0NzcyOSwgNDc3NDQsIDQ3NzU5LCA0Nzc3NCwgNDc3ODksIAotICAgIDQ3ODA0LCA0NzgxOSwgNDc4MzQsIDQ3ODQ5LCA0Nzg2NCwgNDc4NzksIDQ3ODk0LCA0NzkwOSwgNDc5MjQsIDQ3OTM5LCAKLSAgICA0Nzk1NCwgNDc5NjksIDQ3OTg0LCA0Nzk5OSwgNDgwMTQsIDQ4MDI5LCA0ODA0NCwgNDgwNTksIDQ4MDc0LCA0ODA4OSwgCi0gICAgNDgxMDQsIDQ4MTE5LCA0ODEzNCwgNDgxNDksIDQ4MTY0LCA0ODE3OSwgNDgxOTQsIDQ4MjA5LCA0ODIyNCwgNDgyMzksIAotICAgIDQ4MjU0LCA0ODI2OSwgNDgyODQsIDQ4Mjk5LCA0ODMxNCwgNDgzMjksIDQ4MzQ0LCA0ODM1OSwgNDgzNzQsIDQ4Mzg5LCAKLSAgICA0ODQwNCwgNDg0MTksIDQ4NDM0LCA0ODQ0OSwgNDg0NjQsIDQ4NDc5LCA0ODQ5NCwgNDg1MDksIDQ4NTI0LCA0ODUzOSwgCi0gICAgNDg1NTQsIDQ4NTY5LCA0ODU4NCwgNDg1OTksIDQ4NjE0LCA0ODYyOSwgNDg2NDQsIDQ4NjU5LCA0ODY3NCwgNDg2ODksIAotICAgIDQ4NzA0LCA0ODcxOSwgNDg3MzQsIDQ4NzQ5LCA0ODc2NCwgNDg3NzksIDQ4Nzk0LCA0ODgwOSwgNDg4MjQsIDQ4ODM5LCAKLSAgICA0ODg1NCwgNDg4NjksIDQ4ODg0LCA0ODg5OSwgNDg5MTQsIDQ4OTI5LCA0ODk0NCwgNDg5NTksIDQ4OTc0LCA0ODk4OSwgCi0gICAgNDkwMDQsIDQ5MDE5LCA0OTAzNCwgNDkwNDksIDQ5MDY0LCA0OTA3OSwgNDkwOTQsIDQ5MTA5LCA0OTEyNCwgNDkxMzksIAotICAgIDQ5MTU0LCA0OTE2OSwgNDkxODQsIDQ5MTk5LCA0OTIxNCwgNDkyMjksIDQ5MjQ0LCA0OTI1OSwgNDkyNzQsIDQ5Mjg5LCAKLSAgICA0OTMwNCwgNDkzMTksIDQ5MzM0LCA0OTM0OSwgNDkzNjQsIDQ5Mzc5LCA0OTM5NCwgNDk0MDksIDQ5NDI0LCA0OTQzOSwgCi0gICAgNDk0NTQsIDQ5NDY5LCA0OTQ4NCwgNDk0OTksIDQ5NTE0LCA0OTUyOSwgNDk1NDQsIDQ5NTU5LCA0OTU3NCwgNDk1ODksIAotICAgIDQ5NjA0LCA0OTYxOSwgNDk2MzQsIDQ5NjQ5LCA0OTY2NCwgNDk2NzksIDQ5Njk0LCA0OTcwOSwgNDk3MjQsIDQ5NzM5LCAKLSAgICA0OTc1NCwgNDk3NjksIDQ5Nzg0LCA0OTc5OSwgNDk4MTQsIDQ5ODI5LCA0OTg0NCwgNDk4NTksIDQ5ODc0LCA0OTg4OSwgCi0gICAgNDk5MDQsIDQ5OTE5LCA0OTkzNCwgNDk5NDksIDQ5OTY0LCA0OTk3OSwgNDk5OTQsIDUwMDA5LCA1MDAyNCwgNTAwMzksIAotICAgIDUwMDU0LCA1MDA2OSwgNTAwODQsIDUwMDk5LCA1MDExNCwgNTAxMjksIDUwMTQ0LCA1MDE1OSwgNTAxNzQsIDUwMTg5LCAKLSAgICA1MDIwNCwgNTAyMTksIDUwMjM0LCA1MDI0OSwgNTAyNjQsIDUwMjc5LCA1MDI5NCwgNTAzMDksIDUwMzI0LCA1MDMzOSwgCi0gICAgNTAzNTQsIDUwMzY5LCA1MDM4NCwgNTAzOTksIDUwNDE0LCA1MDQyOSwgNTA0NDQsIDUwNDU5LCA1MDQ3NCwgNTA0ODksIAotICAgIDUwNTA0LCA1MDUxOSwgNTA1MzQsIDUwNTQ5LCA1MDU2NCwgNTA1NzksIDUwNTk0LCA1MDYwOSwgNTA2MjQsIDUwNjM5LCAKLSAgICA1MDY1NCwgNTA2NjksIDUwNjg0LCA1MDY5OSwgNTA3MTQsIDUwNzI5LCA1MDc0NCwgNTA3NTksIDUwNzc0LCA1MDc4OSwgCi0gICAgNTA4MDQsIDUwODE5LCA1MDgzNCwgNTA4NDksIDUwODY0LCA1MDg3OSwgNTA4OTQsIDUwOTA5LCA1MDkyNCwgNTA5MzksIAotICAgIDUwOTU0LCA1MDk2OSwgNTA5ODQsIDUwOTk5LCA1MTAxNCwgNTEwMjksIDUxMDQ0LCA1MTA1OSwgNTEwNzQsIDUxMDg5LCAKLSAgICA1MTEwNCwgNTExMTksIDUxMTM0LCA1MTE0OSwgNTExNjQsIDUxMTc5LCA1MTE5NCwgNTEyMDksIDUxMjI0LCA1MTIzOSwgCi0gICAgNTEyNTQsIDUxMjY5LCA1MTI4NCwgNTEyOTksIDUxMzE0LCA1MTMyOSwgNTEzNDQsIDUxMzU5LCA1MTM3NCwgNTEzODksIAotICAgIDUxNDA0LCA1MTQxOSwgNTE0MzQsIDUxNDQ5LCA1MTQ2NCwgNTE0NzksIDUxNDk0LCA1MTUwOSwgNTE1MjQsIDUxNTM5LCAKLSAgICA1MTU1NCwgNTE1NjksIDUxNTg0LCA1MTU5OSwgNTE2MTQsIDUxNjI5LCA1MTY0NCwgNTE2NTksIDUxNjc0LCA1MTY4OSwgCi0gICAgNTE3MDQsIDUxNzE5LCA1MTczNCwgNTE3NDksIDUxNzY0LCA1MTc3OSwgNTE3OTQsIDUxODA5LCA1MTgyNCwgNTE4MzksIAotICAgIDUxODU0LCA1MTg2OSwgNTE4ODQsIDUxODk5LCA1MTkxNCwgNTE5MjksIDUxOTQ0LCA1MTk1OSwgNTE5NzQsIDUxOTg5LCAKLSAgICA1MjAwNCwgNTIwMTksIDUyMDM0LCA1MjA0OSwgNTIwNjQsIDUyMDc5LCA1MjA5NCwgNTIxMDksIDUyMTI0LCA1MjEzOSwgCi0gICAgNTIxNTQsIDUyMTY5LCA1MjE4NCwgNTIxOTksIDUyMjE0LCA1MjIyOSwgNTIyNDQsIDUyMjU5LCA1MjI3NCwgNTIyODksIAotICAgIDUyMzA0LCA1MjMxOSwgNTIzMzQsIDUyMzQ5LCA1MjM2NCwgNTIzNzksIDUyMzk0LCA1MjQwOSwgNTI0MjQsIDUyNDM5LCAKLSAgICA1MjQ1NCwgNTI0NjksIDUyNDg0LCA1MjQ5OSwgNTI1MTQsIDUyNTI5LCA1MjU0NCwgNTI1NTksIDUyNTc0LCA1MjU4OSwgCi0gICAgNTI2MDQsIDUyNjE5LCA1MjYzNCwgNTI2NDksIDUyNjY0LCA1MjY3OSwgNTI2OTQsIDUyNzA5LCA1MjcyNCwgNTI3MzksIAotICAgIDUyNzU0LCA1Mjc2OSwgNTI3ODQsIDUyNzk5LCA1MjgxNCwgNTI4MjksIDUyODQ0LCA1Mjg1OSwgNTI4NzQsIDUyODg5LCAKLSAgICA1MjkwNCwgNTI5MTksIDUyOTM0LCA1Mjk0OSwgNTI5NjQsIDUyOTc5LCA1Mjk5NCwgNTMwMDksIDUzMDI0LCA1MzAzOSwgCi0gICAgNTMwNTQsIDUzMDY5LCA1MzA4NCwgNTMwOTksIDUzMTE0LCA1MzEyOSwgNTMxNDQsIDUzMTU5LCA1MzE3NCwgNTMxODksIAotICAgIDUzMjA0LCA1MzIxOSwgNTMyMzQsIDUzMjQ5LCA1MzI2NCwgNTMyNzksIDUzMjk0LCA1MzMwOSwgNTMzMjQsIDUzMzM5LCAKLSAgICA1MzM1NCwgNTMzNjksIDUzMzg0LCA1MzM5OSwgNTM0MTQsIDUzNDI5LCA1MzQ0NCwgNTM0NTksIDUzNDc0LCA1MzQ4OSwgCi0gICAgNTM1MDQsIDUzNTE5LCA1MzUzNCwgNTM1NDksIDUzNTY0LCA1MzU3OSwgNTM1OTQsIDUzNjA5LCA1MzYyNCwgNTM2MzksIAotICAgIDUzNjU0LCA1MzY2OSwgNTM2ODQsIDUzNjk5LCA1MzcxNCwgNTM3MjksIDUzNzQ0LCA1Mzc1OSwgNTM3NzQsIDUzNzg5LCAKLSAgICA1MzgwNCwgNTM4MTksIDUzODM0LCA1Mzg0OSwgNTM4NjQsIDUzODc5LCA1Mzg5NCwgNTM5MDksIDUzOTI0LCA1MzkzOSwgCi0gICAgNTM5NTQsIDUzOTY5LCA1Mzk4NCwgNTM5OTksIDU0MDE0LCA1NDAyOSwgNTQwNDQsIDU0MDU5LCA1NDA3NCwgNTQwODksIAotICAgIDU0MTA0LCA1NDExOSwgNTQxMzQsIDU0MTQ5LCA1NDE2NCwgNTQxNzksIDU0MTk0LCA1NDIwOSwgNTQyMjQsIDU0MjM5LCAKLSAgICA1NDI1NCwgNTQyNjksIDU0Mjg0LCA1NDI5OSwgNTQzMTQsIDU0MzI5LCA1NDM0NSwgNTQzNjEsIDU0Mzc3LCA1NDM5MywgCi0gICAgNTQ0MDksIDU0NDI1LCA1NDQ0MSwgNTQ0NTcsIDU0NDczLCA1NDQ4OSwgNTQ1MDUsIDU0NTIxLCA1NDUzNywgNTQ1NTMsIAotICAgIDU0NTY5LCA1NDU4NSwgNTQ2MDEsIDU0NjE3LCA1NDYzMywgNTQ2NDksIDU0NjY1LCA1NDY4MSwgNTQ2OTcsIDU0NzEzLCAKLSAgICA1NDcyOSwgNTQ3NDUsIDU0NzYxLCA1NDc3NywgNTQ3OTMsIDU0ODA5LCA1NDgyNSwgNTQ4NDEsIDU0ODU3LCA1NDg3MywgCi0gICAgNTQ4ODksIDU0OTA1LCA1NDkyMSwgNTQ5MzcsIDU0OTUzLCA1NDk2OSwgNTQ5ODUsIDU1MDAxLCA1NTAxNywgNTUwMzMsIAotICAgIDU1MDQ5LCA1NTA2NSwgNTUwODEsIDU1MDk3LCA1NTExMywgNTUxMjksIDU1MTQ1LCA1NTE2MSwgNTUxNzcsIDU1MTkzLCAKLSAgICA1NTIwOSwgNTUyMjUsIDU1MjQxLCA1NTI1NywgNTUyNzMsIDU1Mjg5LCA1NTMwNSwgNTUzMjEsIDU1MzM3LCA1NTM1MywgCi0gICAgNTUzNjksIDU1Mzg1LCA1NTQwMSwgNTU0MTcsIDU1NDMzLCA1NTQ0OSwgNTU0NjUsIDU1NDgxLCA1NTQ5NywgNTU1MTMsIAotICAgIDU1NTI5LCA1NTU0NSwgNTU1NjEsIDU1NTc3LCA1NTU5MywgNTU2MDksIDU1NjI1LCA1NTY0MSwgNTU2NTcsIDU1NjczLCAKLSAgICA1NTY4OSwgNTU3MDUsIDU1NzIxLCA1NTczNywgNTU3NTMsIDU1NzY5LCA1NTc4NSwgNTU4MDEsIDU1ODE3LCA1NTgzMywgCi0gICAgNTU4NDksIDU1ODY1LCA1NTg4MSwgNTU4OTcsIDU1OTEzLCA1NTkyOSwgNTU5NDUsIDU1OTYxLCA1NTk3NywgNTU5OTMsIAotICAgIDU2MDA5LCA1NjAyNSwgNTYwNDEsIDU2MDU3LCA1NjA3MywgNTYwODksIDU2MTA1LCA1NjEyMSwgNTYxMzcsIDU2MTUzLCAKLSAgICA1NjE2OSwgNTYxODUsIDU2MjAxLCA1NjIxNywgNTYyMzMsIDU2MjQ5LCA1NjI2NSwgNTYyODEsIDU2Mjk3LCA1NjMxMywgCi0gICAgNTYzMjksIDU2MzQ1LCA1NjM2MSwgNTYzNzcsIDU2MzkzLCA1NjQwOSwgNTY0MjUsIDU2NDQxLCA1NjQ1NywgNTY0NzMsIAotICAgIDU2NDg5LCA1NjUwNSwgNTY1MjEsIDU2NTM3LCA1NjU1MywgNTY1NjksIDU2NTg1LCA1NjYwMSwgNTY2MTcsIDU2NjMzLCAKLSAgICA1NjY0OSwgNTY2NjUsIDU2NjgxLCA1NjY5NywgNTY3MTMsIDU2NzI5LCA1Njc0NSwgNTY3NjEsIDU2Nzc3LCA1Njc5MywgCi0gICAgNTY4MDksIDU2ODI1LCA1Njg0MSwgNTY4NTcsIDU2ODczLCA1Njg4OSwgNTY5MDUsIDU2OTIxLCA1NjkzNywgNTY5NTMsIAotICAgIDU2OTY5LCA1Njk4NSwgNTcwMDEsIDU3MDE3LCA1NzAzMywgNTcwNDksIDU3MDY1LCA1NzA4MSwgNTcwOTcsIDU3MTEzLCAKLSAgICA1NzEyOSwgNTcxNDUsIDU3MTYxLCA1NzE3NywgNTcxOTMsIDU3MjA5LCA1NzIyNSwgNTcyNDEsIDU3MjU3LCA1NzI3MywgCi0gICAgNTcyODksIDU3MzA1LCA1NzMyMSwgNTczMzcsIDU3MzUzLCA1NzM2OSwgNTczODUsIDU3NDAxLCA1NzQxNywgNTc0MzMsIAotICAgIDU3NDQ5LCA1NzQ2NSwgNTc0ODEsIDU3NDk3LCA1NzUxMywgNTc1MjksIDU3NTQ1LCA1NzU2MSwgNTc1NzcsIDU3NTkzLCAKLSAgICA1NzYwOSwgNTc2MjUsIDU3NjQxLCA1NzY1NywgNTc2NzMsIDU3Njg5LCA1NzcwNSwgNTc3MjEsIDU3NzM3LCA1Nzc1MywgCi0gICAgNTc3NjksIDU3Nzg1LCA1NzgwMSwgNTc4MTcsIDU3ODMzLCA1Nzg0OSwgNTc4NjUsIDU3ODgxLCA1Nzg5NywgNTc5MTMsIAotICAgIDU3OTI5LCA1Nzk0NSwgNTc5NjEsIDU3OTc3LCA1Nzk5MywgNTgwMDksIDU4MDI1LCA1ODA0MSwgNTgwNTcsIDU4MDczLCAKLSAgICA1ODA4OSwgNTgxMDUsIDU4MTIxLCA1ODEzNywgNTgxNTMsIDU4MTY5LCA1ODE4NSwgNTgyMDEsIDU4MjE3LCA1ODIzMywgCi0gICAgNTgyNDksIDU4MjY1LCA1ODI4MSwgNTgyOTcsIDU4MzEzLCA1ODMyOSwgNTgzNDUsIDU4MzYxLCA1ODM3NywgNTgzOTMsIAotICAgIDU4NDA5LCA1ODQyNSwgNTg0NDEsIDU4NDU3LCA1ODQ3MywgNTg0ODksIDU4NTA1LCA1ODUyMSwgNTg1MzcsIDU4NTUzLCAKLSAgICA1ODU2OSwgNTg1ODUsIDU4NjAxLCA1ODYxNywgNTg2MzMsIDU4NjQ5LCA1ODY2NSwgNTg2ODEsIDU4Njk3LCA1ODcxMywgCi0gICAgNTg3MjksIDU4NzQ1LCA1ODc2MSwgNTg3NzcsIDU4NzkzLCA1ODgwOSwgNTg4MjUsIDU4ODQxLCA1ODg1NywgNTg4NzMsIAotICAgIDU4ODg5LCA1ODkwNSwgNTg5MjEsIDU4OTM3LCA1ODk1MywgNTg5NjksIDU4OTg1LCA1OTAwMSwgNTkwMTcsIDU5MDMzLCAKLSAgICA1OTA0OSwgNTkwNjUsIDU5MDgxLCA1OTA5NywgNTkxMTMsIDU5MTI5LCA1OTE0NSwgNTkxNjEsIDU5MTc3LCA1OTE5MywgCi0gICAgNTkyMDksIDU5MjI1LCA1OTI0MSwgNTkyNTcsIDU5MjczLCA1OTI4OSwgNTkzMDUsIDU5MzIxLCA1OTMzNywgNTkzNTMsIAotICAgIDU5MzY5LCA1OTM4NSwgNTk0MDEsIDU5NDE3LCA1OTQzMywgNTk0NDksIDU5NDY1LCA1OTQ4MSwgNTk0OTcsIDU5NTEzLCAKLSAgICA1OTUyOSwgNTk1NDUsIDU5NTYxLCA1OTU3NywgNTk1OTMsIDU5NjA5LCA1OTYyNSwgNTk2NDEsIDU5NjU3LCA1OTY3MywgCi0gICAgNTk2ODksIDU5NzA1LCA1OTcyMSwgNTk3MzcsIDU5NzUzLCA1OTc2OSwgNTk3ODUsIDU5ODAxLCA1OTgxNywgNTk4MzMsIAotICAgIDU5ODQ5LCA1OTg2NSwgNTk4ODEsIDU5ODk3LCA1OTkxMywgNTk5MjksIDU5OTQ1LCA1OTk2MSwgNTk5NzcsIDU5OTkzLCAKLSAgICA2MDAwOSwgNjAwMjUsIDYwMDQxLCA2MDA1NywgNjAwNzMsIDYwMDg5LCA2MDEwNSwgNjAxMjEsIDYwMTM3LCA2MDE1MywgCi0gICAgNjAxNjksIDYwMTg1LCA2MDIwMSwgNjAyMTcsIDYwMjMzLCA2MDI0OSwgNjAyNjUsIDYwMjgxLCA2MDI5NywgNjAzMTMsIAotICAgIDYwMzI5LCA2MDM0NSwgNjAzNjEsIDYwMzc3LCA2MDM5MywgNjA0MDksIDYwNDI1LCA2MDQ0MSwgNjA0NTcsIDYwNDczLCAKLSAgICA2MDQ4OSwgNjA1MDUsIDYwNTIxLCA2MDUzNywgNjA1NTMsIDYwNTY5LCA2MDU4NSwgNjA2MDEsIDYwNjE3LCA2MDYzMywgCi0gICAgNjA2NDksIDYwNjY1LCA2MDY4MSwgNjA2OTcsIDYwNzEzLCA2MDcyOSwgNjA3NDUsIDYwNzYxLCA2MDc3NywgNjA3OTMsIAotICAgIDYwODA5LCA2MDgyNSwgNjA4NDEsIDYwODU3LCA2MDg3MywgNjA4ODksIDYwOTA1LCA2MDkyMSwgNjA5MzcsIDYwOTUzLCAKLSAgICA2MDk2OSwgNjA5ODUsIDYxMDAxLCA2MTAxNywgNjEwMzMsIDYxMDQ5LCA2MTA2NSwgNjEwODEsIDYxMDk3LCA2MTExMywgCi0gICAgNjExMjksIDYxMTQ1LCA2MTE2MSwgNjExNzcsIDYxMTkzLCA2MTIwOSwgNjEyMjUsIDYxMjQxLCA2MTI1NywgNjEyNzMsIAotICAgIDYxMjg5LCA2MTMwNSwgNjEzMjEsIDYxMzM3LCA2MTM1MywgNjEzNjksIDYxMzg1LCA2MTQwMSwgNjE0MTcsIDYxNDMzLCAKLSAgICA2MTQ0OSwgNjE0NjUsIDYxNDgxLCA2MTQ5NywgNjE1MTMsIDYxNTI5LCA2MTU0NSwgNjE1NjEsIDYxNTc3LCA2MTU5MywgCi0gICAgNjE2MDksIDYxNjI1LCA2MTY0MSwgNjE2NTcsIDYxNjczLCA2MTY4OSwgNjE3MDUsIDYxNzIxLCA2MTczNywgNjE3NTMsIAotICAgIDYxNzY5LCA2MTc4NSwgNjE4MDEsIDYxODE3LCA2MTgzMywgNjE4NDksIDYxODY1LCA2MTg4MSwgNjE4OTcsIDYxOTEzLCAKLSAgICA2MTkyOSwgNjE5NDUsIDYxOTYxLCA2MTk3NywgNjE5OTMsIDYyMDA5LCA2MjAyNSwgNjIwNDEsIDYyMDU3LCA2MjA3MywgCi0gICAgNjIwODksIDYyMTA1LCA2MjEyMSwgNjIxMzcsIDYyMTUzLCA2MjE2OSwgNjIxODUsIDYyMjAxLCA2MjIxNywgNjIyMzMsIAotICAgIDYyMjQ5LCA2MjI2NSwgNjIyODEsIDYyMjk3LCA2MjMxMywgNjIzMjksIDYyMzQ1LCA2MjM2MSwgNjIzNzcsIDYyMzkzLCAKLSAgICA2MjQwOSwgNjI0MjUsIDYyNDQxLCA2MjQ1NywgNjI0NzMsIDYyNDg5LCA2MjUwNSwgNjI1MjEsIDYyNTM3LCA2MjU1MywgCi0gICAgNjI1NjksIDYyNTg1LCA2MjYwMSwgNjI2MTcsIDYyNjMzLCA2MjY0OSwgNjI2NjUsIDYyNjgxLCA2MjY5NywgNjI3MTMsIAotICAgIDYyNzI5LCA2Mjc0NSwgNjI3NjEsIDYyNzc3LCA2Mjc5MywgNjI4MDksIDYyODI1LCA2Mjg0MSwgNjI4NTcsIDYyODczLCAKLSAgICA2Mjg4OSwgNjI5MDUsIDYyOTIxLCA2MjkzNywgNjI5NTMsIDYyOTY5LCA2Mjk4NSwgNjMwMDEsIDYzMDE2LCAxODMwNywgCi0gICAgNjMwMjUsIDYzMDMwLCA2MzAzNiwgNjMwNDIsIDYzMDUyLCA2MzA2MCwgMTYyNzAsIDE2ODY4LCAxMDczMywgNjMwNzMsIAotICAgIDE1MTgsIDE1MjIsIDYzMDgxLCAzOTczLCAyOTU2NiwgNzUxMiwgNjMwODcsIDYzMDkyLCA2MzA5NywgNjMxMDIsIDYzMTA3LCAKLSAgICA2MzExMywgNjMxMTgsIDYzMTI0LCA2MzEyOSwgNjMxMzUsIDYzMTQwLCA2MzE0NSwgNjMxNTAsIDYzMTU1LCA2MzE2MSwgCi0gICAgNjMxNjYsIDYzMTcxLCA2MzE3NiwgNjMxODEsIDYzMTg2LCA2MzE5MSwgNjMxOTYsIDYzMjAyLCA2MzIwNywgNjMyMTMsIAotICAgIDYzMjIwLCAyNjAwLCA2MzIyNSwgNjMyMzEsIDg5MTIsIDYzMjM1LCA2MzI0MCwgNjMyNDcsIDYzMjU1LCA2NSwgNjMyNTksIAotICAgIDYzMjY1LCA2MzI3MCwgNjMyNzUsIDYzMjc5LCA2MzI4NCwgNjMyODgsIDYzMjkyLCAxMTYyMSwgNjMyOTYsIDYzMzA2LCAKLSAgICA2MzMxOSwgNjMzMzAsIDYzMzQzLCA2MzM1MCwgNjMzNTYsIDYzMzY0LCA2MzM2OSwgNjMzNzUsIDYzMzgxLCA2MzM4NywgCi0gICAgNjMzOTIsIDYzMzk3LCA2MzQwMiwgNjM0MDcsIDYzNDExLCA2MzQxNiwgNjM0MjEsIDYzNDI2LCA2MzQzMiwgNjM0MzgsIAotICAgIDYzNDQ0LCA2MzQ0OSwgNjM0NTMsIDYzNDU4LCA2MzQ2MywgNjM0NjcsIDYzNDcyLCA2MzQ3NywgNjM0ODIsIDYzNDg2LCAKLSAgICAxMTYzNywgMTE2NDgsIDExNjUzLCAxNTYxLCA2MzQ5MCwgNjM0OTYsIDE1NjYsIDYzNTAxLCA2MzUwNCwgMTc3NDEsIAotICAgIDYzNTA5LCA2MzUxNSwgNjM1MjAsIDE1OTcsIDYzNTI2LCAxNjAzLCAxNjA5LCAxMTY4MywgNjM1MzEsIDYzNTQwLCA2MzU0OCwgCi0gICAgNjM1NTUsIDYzNTU5LCA2MzU2MywgNjM1NjksIDYzNTc0LCAzMzM2NSwgNjM1NzksIDYzNTg2LCA2MzU5MywgNjM1OTgsIAotICAgIDYzNjAyLCA2MzYwNiwgNjM2MTUsIDE2MTQsIDE3ODUwLCA2MzYyMCwgNjM2MjQsIDE3ODYxLCAxMTYyLCA2MzYyOCwgCi0gICAgNjM2MzUsIDYzNjQwLCA2MzY0NCwgMTc4OTEsIDE2MTgsIDQxMjQzLCA2MzY0NywgNjM2NTIsIDYzNjYyLCA2MzY3MSwgCi0gICAgNjM2NzYsIDYzNjgwLCA2MzY4NiwgMTYyMywgNDM4NTUsIDYzNjkxLCA2MzcwMCwgNjM3MDYsIDYzNzExLCA2MzcxNiwgCi0gICAgMTE4ODIsIDExODg4LCA2MzcyMiwgNjM3MzQsIDYzNzUxLCA2Mzc2OCwgNjM3ODUsIDYzODAyLCA2MzgxOSwgNjM4MzYsIAotICAgIDYzODUzLCA2Mzg3MCwgNjM4ODcsIDYzOTA0LCA2MzkyMSwgNjM5MzgsIDYzOTU1LCA2Mzk3MiwgNjM5ODksIDY0MDA2LCAKLSAgICA2NDAyMywgNjQwNDAsIDY0MDU3LCA2NDA3NCwgNjQwOTEsIDY0MTA4LCA2NDEyNSwgNjQxNDIsIDY0MTU5LCA2NDE3NiwgCi0gICAgNjQxOTMsIDY0MjEwLCA2NDIyNywgNjQyNDQsIDY0MjYxLCA2NDI3OCwgNjQyOTUsIDY0MzEyLCA2NDMyOSwgNjQzNDYsIAotICAgIDY0MzYzLCA2NDM4MCwgNjQzOTcsIDY0NDE0LCA2NDQzMSwgNjQ0NDgsIDY0NDY1LCA2NDQ4MiwgNjQ0OTksIDY0NTE2LCAKLSAgICA2NDUzMywgNjQ1NTAsIDY0NTY3LCA2NDU3OCwgNjQ1ODgsIDY0NTkzLCAxNjI4LCA2NDU5NywgNjQ2MDIsIDY0NjA4LCAKLSAgICA2NDYxMywgNjQ2MTgsIDY0NjI1LCA5ODM5LCAxNjMzLCA2NDYzMSwgNjQ2NDAsIDI5ODg3LCA2NDY0NSwgNjQ2NTYsIAotICAgIDExODk5LCA2NDY2NiwgNjQ2NzEsIDY0Njc3LCA2NDY4MiwgNjQ2ODksIDY0Njk1LCA2NDcwMCwgMTYzOCwgMTgxNzQsIAotICAgIDY0NzA1LCA2NDcxMSwgMTE5MDksIDE2NDMsIDExOTE0LCA2NDcxNywgNjQ3MjIsIDY0NzI4LCA2NDczMywgNjQ3MzgsIAotICAgIDY0NzQzLCA2NDc0OCwgNjQ3NTMsIDY0NzU4LCA2NDc2MywgNjQ3NjgsIDY0Nzc0LCA2NDc4MCwgNjQ3ODYsIDY0NzkxLCAKLSAgICA2NDc5NSwgNjQ4MDAsIDY0ODA1LCA2NDgwOSwgNjQ4MTQsIDY0ODE5LCA2NDgyNCwgNjQ4MjksIDY0ODMzLCA2NDgzOCwgCi0gICAgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTgsIDY0ODYzLCA2NDg2OCwgNjQ4NzQsIDY0ODc5LCA2NDg4NCwgNjQ4OTAsIAotICAgIDY0ODk2LCA2NDkwMSwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCA2NDkyOSwgNjQ5MzQsIDY0OTM5LCAKLSAgICA2NDk0NSwgNjQ5NTEsIDY0OTU2LCA2NDk2MCwgNjQ5NjQsIDY0OTY5LCA2NDk3NCwgNjQ5NzksIDMxMzk1LCA2NDk4MywgCi0gICAgNjQ5ODgsIDY0OTkzLCA2NDk5OSwgNjUwMDQsIDY1MDA5LCA2NTAxMywgNjUwMTgsIDY1MDIzLCA2NTAyOSwgNjUwMzQsIAotICAgIDY1MDM5LCA2NTA0NSwgNjUwNTEsIDY1MDU2LCA2NTA2MCwgNjUwNjUsIDY1MDcwLCA2NTA3NCwgNjUwNzksIDY1MDg0LCAKLSAgICA2NTA4OSwgNjUwOTUsIDY1MTAxLCA2NTEwNiwgNjUxMTAsIDY1MTE1LCA2NTEyMCwgNjUxMjQsIDY1MTI5LCA2NTEzNCwgCi0gICAgNjUxMzksIDY1MTQ0LCA2NTE0OCwgNjUxNTEsIDY1MTU0LCA2NTE1OSwgNjUxNjQsIDM0MDU2LCA2NTE3MSwgNjUxNzksIAotICAgIDM2OTEsIDI5ODM3LCA2NTE4NSwgNjUxOTIsIDY1MTk4LCAzODMwLCAxMjAyMCwgNjUyMDQsIDY1MjE0LCA2NTIyOSwgCi0gICAgNjUyMzcsIDEyMDI1LCA2NTI0OCwgNjUyNTMsIDY1MjY0LCA2NTI3NiwgNjUyODgsIDY1MzAwLCAyNzM0LCA2NTMxMiwgCi0gICAgNjUzMTcsIDY1MzI5LCA2NTMzMywgNjUzMzksIDY1MzQ1LCA2NTM1MCwgMTY2MCwgMTc0MTgsIDY1MzU5LCA2NTM2NCwgCi0gICAgNDM5MTQsIDY1MzY4LCA2NTM3MiwgNjUzNzcsIDY1MzgxLCAxODMxNSwgNjUzODYsIDY1Mzg5LCA2NTM5NCwgNjU0MDIsIAotICAgIDY1NDEwLCAxNjY0LCAxMjA2MSwgMTIwNjcsIDE2NjksIDY1NDE4LCA2NTQyNSwgNjU0MzAsIDY1NDM5LCA2NTQ0OSwgCi0gICAgNjU0NTYsIDY1NDYxLCA2NTQ2NiwgMTY3NCwgNjU0NzMsIDY1NDc4LCAxODQzNSwgNjU0ODIsIDY1NDg3LCA2NTQ5NCwgCi0gICAgNjU1MDAsIDY1NTA0LCA2NTUxNSwgNjU1MjUsIDY1NTMyLCAxODQ1NywgOTczMywgOTc0MCwgNDAyMiwgNDAyOCwgNjU1MzksIAotICAgIDE2NzksIDY1NTQ0LCA2NTU1MCwgNjU1NTgsIDY1NTY1LCA2NTU3MSwgNjU1NzgsIDY1NTkwLCA2NTU5NiwgNjU2MDEsIAotICAgIDY1NjEzLCA2NTYyNCwgNjU2MzMsIDY1NjQzLCAzOTUyLCA2NTY1MSwgMzMxNjYsIDMzMTc1LCAxODQ5NywgMTY4NCwgMTY4OCwgCi0gICAgNjU2NjQsIDY1Njc1LCA2NTY4MCwgMTY5OCwgNjU2ODgsIDY1NjkzLCA2NTY5OCwgMTg1NTYsIDY1NzEwLCA2NTcxMywgCi0gICAgNjU3MTksIDY1NzI1LCA2NTczMCwgNjU3MzgsIDE3MDMsIDY1NzQzLCA2NTc0OCwgNjU3NTYsIDY1NzY0LCA2NTc3MSwgCi0gICAgNjU3ODAsIDY1Nzg4LCA2NTc5NywgMTcwOCwgNjU4MDEsIDE3MTMsIDIzMDE2LCA2NTgwNiwgNjU4MTMsIDE4NjMwLCAKLSAgICA2NTgyMSwgNjU4MjcsIDY1ODMyLCA2NTg0MCwgNjU4NDcsIDY1ODU1LCA2NTg2NSwgNjU4NzQsIDY1ODg0LCA2NTg5MywgCi0gICAgNjU5MDQsIDY1OTE0LCA2NTkyNCwgNjU5MzMsIDY1OTQzLCA2NTk1NywgNjU5NzAsIDY1OTc5LCA2NTk4NywgNjU5OTcsIAotICAgIDY2MDA2LCA2NjAxOCwgNjYwMjksIDY2MDQwLCA2NjA1MCwgMTc5NDgsIDY2MDU1LCAxMjIxMywgNjYwNjQsIDY2MDcwLCAKLSAgICA2NjA3NSwgNjYwODIsIDY2MDg5LCA2NjA5NSwgMTc2MTcsIDY2MTA1LCA2NjExMSwgNjYxMTYsIDY2MTI3LCA2NjEzMiwgCi0gICAgNjYxNDAsIDEyMjMwLCAxMjIzNSwgNjYxNDgsIDY2MTU0LCA2NjE1OCwgNjYxNjYsIDQwMTcsIDE4NjkyLCA0NDAwNywgCi0gICAgNjYxNzEsIDY2MTc3LCA2NjE4MiwgNjYxOTAsIDY2MTk3LCAxMzE3OSwgNjYyMDIsIDY2MjA4LCAxNzI0LCA2NjIxMywgCi0gICAgNjYyMTYsIDE0MzgsIDY2MjIyLCA2NjIyNywgNjYyMzIsIDY2MjM4LCA2NjI0MywgNjYyNDgsIDY2MjUzLCA2NjI1OCwgCi0gICAgNjYyNjMsIDY2MjY4LCAxNzMzLCAxMywgNjYyNzQsIDY2Mjc4LCA2NjI4MywgNjYyODcsIDY2MjkxLCA2NjI5NSwgMzQyOTYsIAotICAgIDY2MzAwLCAyNTA3MCwgNjYzMDUsIDY2MzEwLCA2NjMxNCwgNjYzMTcsIDY2MzIxLCA2NjMyNSwgNjYzMzAsIDY2MzM0LCAKLSAgICA2NjMzOSwgNjYzNDMsIDY2MzQ5LCAzNzUxNCwgMzc1MTksIDM3NTI0LCA2NjM1MiwgNjYzNTksIDY2MzY1LCA2NjM3MywgCi0gICAgNDM2NzgsIDY2MzgzLCAzNzUzMCwgMzQ1NjAsIDM0MzExLCAzNDMxNywgMzc1NDYsIDM0MzIzLCA2NjM4OCwgNjYzOTMsIAotICAgIDM0NTkzLCA2NjM5NywgNjY0MDAsIDY2NDA0LCA2NjQxMiwgNjY0MTksIDY2NDIyLCA2NjQyNywgNjY0MzIsIDY2NDM2LCAKLSAgICA2NjQ0MCwgNjY0NDMsIDY2NDUzLCA2NjQ2NSwgNjY0NzIsIDY2NDc4LCAzNDMyOCwgNjY0ODUsIDM2MDc4LCA2NjQ4OCwgCi0gICAgODkyOSwgMTAxOSwgNjY0OTEsIDY2NDk1LCA2NjUwMCwgMzg3MywgNjY1MDQsIDY2NTA3LCAxNDgyNywgNjY1MTQsIDY2NTIxLCAKLSAgICA2NjUzNCwgNjY1NDIsIDY2NTUxLCA2NjU2MCwgNjY1NjUsIDY2NTc1LCA2NjU4OCwgNjY2MDAsIDY2NjA3LCA2NjYxMiwgCi0gICAgNjY2MjEsIDY2NjM0LCAzOTAzOSwgNjY2NTIsIDY2NjU3LCA2NjY2NCwgNjY2NzAsIDY2Njc1LCA4MTksIDY2NjgwLCAKLSAgICA2NjY4OCwgNjY2OTUsIDY2NzAyLCAyOTM5MiwgNzgzLCA2NjcwOCwgNjY3MTQsIDY2NzI0LCA2NjczMiwgNjY3MzgsIAotICAgIDY2NzQzLCAzNDM0NywgNjMxMCwgMzQzNjEsIDY2NzQ3LCA2Njc1NywgNjY3NjIsIDY2NzcyLCA2Njc4NywgNjY3OTMsIAotICAgIDY2Nzk5LCAzNDM3MSwgNjY4MDQsIDMzNDgyLCA2NjgwOCwgNjY4MTMsIDY2ODIwLCA2NjgyNSwgNjY4MjksIDY2ODM0LCAKLSAgICAxODUwMCwgNjY4NDEsIDY2ODQ2LCA2Njg1MCwgNjM1MSwgMzQzOTcsIDY2ODU0LCA2Njg2MCwgMzI0LCA2Njg3MCwgNjY4NzcsIAotICAgIDY2ODg0LCA2Njg4OSwgNjY4OTgsIDYzNjU2LCA2NjkwNCwgNjY5MTIsIDY2OTE2LCA2NjkyMCwgNjY5MjQsIDY2OTI4LCAKLSAgICA2NjkzMywgNjY5MzcsIDY2OTQzLCA2Njk1MSwgNjY5NTYsIDY2OTYxLCA2Njk2NiwgNjY5NzAsIDY2OTc1LCA2Njk3OSwgCi0gICAgNjY5ODMsIDY2OTg5LCA2Njk5NSwgNjcwMDAsIDY3MDA0LCA2NzAwOSwgMzQ1MjEsIDY3MDEzLCAzNDUyNywgMzQ1MzMsIAotICAgIDY3MDE4LCA2NzAyNCwgNjcwMzEsIDY3MDM2LCA2NzA0MCwgMzM0OTksIDE4MTY3LCA2NzA0MywgNjcwNDcsIDY3MDUyLCAKLSAgICA2NzA1OSwgNjcwNjUsIDY3MDY5LCA2NzA3NCwgNDMzNTMsIDY3MDgwLCA2NzA4NCwgNjcwOTEsIDY3MDk1LCA2NzEwMCwgCi0gICAgNjcxMDYsIDY3MTEyLCA2NzExOCwgNjcxMzAsIDY3MTM5LCA2NzE0OSwgNjcxNTUsIDY3MTYyLCA2NzE2NywgNjcxNzIsIAotICAgIDY3MTc2LCA2NzE3OSwgNjcxODUsIDY3MTkyLCA2NzE5NywgNjcyMDIsIDY3MjA5LCA2NzIxNiwgNjcyMjMsIDY3MjI5LCAKLSAgICA2NzIzNCwgNjcyMzksIDY3MjQ3LCAzNDUzOCwgMjQ2MiwgNjcyNTIsIDY3MjU3LCA2NzI2MywgNjcyNjgsIDY3Mjc0LCAKLSAgICA2NzI3OSwgNjcyODQsIDY3Mjg5LCA2NzI5NSwgMzQ1NTksIDY3MzAwLCA2NzMwNiwgNjczMTIsIDY3MzE4LCAzNDYyOSwgCi0gICAgNjczMjMsIDY3MzI4LCA2NzMzMywgMzQ2NDAsIDY3MzM4LCA2NzM0MywgNjczNDgsIDY3MzU0LCA2NzM2MCwgMzQ2NDUsIAotICAgIDY3MzY1LCA2NzM3MCwgNjczNzUsIDM0NzAwLCAzNDcwNiwgNjczODAsIDY3Mzg1LCAzNDcxMSwgMzQ3MzMsIDMwMTM2LCAKLSAgICAzNDczOSwgMzQ3NDMsIDY3MzkwLCAxMjkwOSwgNjczOTQsIDY3NDAyLCA2NzQwOCwgNjc0MTYsIDY3NDIzLCA2NzQyOSwgCi0gICAgNjc0MzksIDY3NDQ1LCA2NzQ1MiwgMTE1NTYsIDM0NzU3LCA2NzQ1OCwgNjc0NzEsIDY3NDgwLCA2NzQ4NiwgNjc0OTUsIAotICAgIDY3NTAxLCAyNTM4MCwgNjc1MDgsIDY3NTE1LCA2NzUyNSwgNjc1MjgsIDM0NzAxLCA2NzUzMywgNjc1NDAsIDY3NTQ1LCAKLSAgICA2NzU0OSwgNjc1NTMsIDY3NTU4LCA2NzU2MiwgNDEzMywgNjc1NjcsIDY3NTcyLCA2NzU3NywgMzc2MDgsIDM3NjEzLCAKLSAgICA2NzU4MSwgMzc2MjcsIDY3NTg2LCAzNzYzMiwgNjc1OTEsIDY3NTk3LCAzNzY0NCwgMzc2NTAsIDM3NjU2LCA2NzYwMiwgCi0gICAgNjc2MDgsIDI0MzY2LCA2NzYxOSwgNjc2MjIsIDY3NjM0LCA2NzY0MiwgMzQ3ODAsIDY3NjQ2LCA2NzY1NSwgNjc2NjUsIAotICAgIDY3Njc0LCAzNDc5MCwgNjc2NzksIDY3Njg2LCA2NzY5NSwgNjc3MDEsIDY3NzA5LCA2NzcxNiwgNjQwMiwgNDY3MywgCi0gICAgNjc3MjEsIDM0NzEyLCA2NzcyNywgNjc3MzAsIDY3NzM2LCA2Nzc0MywgNjc3NDgsIDY3NzUzLCAyNTI5MCwgNjc3NTcsIAotICAgIDY3NzYzLCA2Nzc2OSwgNjc3NzQsIDY3Nzc5LCA2Nzc4MywgNjc3ODksIDY3Nzk1LCAzNTk4NCwgMTA0OCwgMzg2ODksIAotICAgIDQwNDE5LCA0MDQyNSwgMzQ4MjEsIDM0ODI2LCA2NzgwMCwgNjc4MDQsIDY3ODA4LCA2NzgxMSwgNjc4MjQsIDY3ODMwLCAKLSAgICA2NzgzNCwgNjc4MzcsIDY3ODQyLCAzNjMyMSwgNjc4NDYsIDMzNTA0LCAyMjk2NiwgNjc4NTIsIDYzMzEsIDYzMzksIDk1NzAsIAotICAgIDY3ODU1LCA2Nzg2MCwgNjc4NjUsIDY3ODcwLCA2Nzg3NSwgNjc4ODAsIDY3ODg1LCA2Nzg5MCwgNjc4OTUsIDY3OTAwLCAKLSAgICA2NzkwNiwgNjc5MTEsIDY3OTE2LCA2NzkyMiwgNjc5MjcsIDY3OTMyLCA2NzkzNywgNjc5NDIsIDY3OTQ3LCA2Nzk1MiwgCi0gICAgNjc5NTgsIDY3OTYzLCA2Nzk2OSwgNjc5NzQsIDY3OTc5LCA2Nzk4NCwgNjc5ODksIDY3OTk0LCA2Nzk5OSwgNjgwMDQsIAotICAgIDY4MDA5LCA2ODAxNCwgNjgwMTksIDY4MDI1LCA2ODAzMCwgNjgwMzUsIDY4MDQwLCA2ODA0NSwgNjgwNTAsIDY4MDU1LCAKLSAgICA2ODA2MSwgNjgwNjYsIDY4MDcxLCA2ODA3NiwgNjgwODEsIDY4MDg2LCA2ODA5MSwgNjgwOTYsIDY4MTAxLCA2ODEwNiwgCi0gICAgNjgxMTIsIDY4MTE3LCA2ODEyMiwgNjgxMjcsIDY4MTMyLCA2ODEzOCwgNjgxNDQsIDY4MTQ5LCA2ODE1NSwgNjgxNjAsIAotICAgIDY4MTY1LCA2ODE3MCwgNjgxNzUsIDY4MTgwLCAxNTExLCAxNDUsIDY4MTg1LCA2ODE4OSwgNjgxOTMsIDY4MTk3LCAyNzA3NiwgCi0gICAgNjgyMDEsIDY4MjA1LCA2ODIxMCwgNjgyMTQsIDY4MjE5LCA2ODIyMywgNjgyMjgsIDY4MjMzLCA2ODIzOCwgNjgyNDIsIAotICAgIDY4MjQ2LCA2ODI1MSwgNjgyNTUsIDE0NTQyLCA2ODI2MCwgNjgyNjQsIDY4MjcxLCA2ODI4MSwgMTY1OTUsIDY4MjkwLCAKLSAgICA2ODI5OSwgNjgzMDMsIDY4MzA4LCA2ODMxMywgNjgzMTcsIDY4MzIxLCAyNjg3MCwgMzA3OCwgNjgzMjUsIDY4MzMxLCAKLSAgICAxODk2NywgNjgzMzUsIDY4MzQ0LCA2ODM1MiwgNjgzNTgsIDY4MzYzLCA2ODM3NSwgNjgzODcsIDY4MzkyLCA2ODM5NiwgCi0gICAgNjg0MDEsIDY4NDA1LCA2ODQxMSwgNjg0MTcsIDY4NDIyLCA2ODQzMiwgNjg0NDIsIDY4NDQ4LCA2ODQ1MywgNjg0NTcsIAotICAgIDY4NDYzLCA2ODQ2OCwgNjg0NzUsIDY4NDgxLCA2ODQ4NiwgNjg0OTUsIDY4NTA0LCA2ODUxMiwgMTY5OTMsIDY4NTE2LCAKLSAgICA2ODUyNSwgNjg1MzMsIDY4NTQ1LCA2ODU1NiwgNjg1NjcsIDY4NTc2LCA2ODU4MCwgNjg1ODksIDY4NTk3LCA2ODYwNywgCi0gICAgNjg2MTUsIDY4NjIyLCA2ODYyOCwgNjg2MzMsIDY4NjM5LCA2ODY0NCwgNjg2NTUsIDU0LCAzMzMwOSwgNjg2NjEsIDI4MzMxLCAKLSAgICAyODM0MSwgNjg2NjcsIDY4Njc1LCA2ODY4MiwgNjg2ODgsIDY4NjkyLCA2ODcwMiwgNjg3MTMsIDY4NzIxLCA2ODczMCwgCi0gICAgNjg3MzUsIDY4NzQwLCA2ODc0NSwgNjg3NDksIDY4NzUzLCAxODkyMSwgNjg3NjEsIDY4NzY1LCA2ODc3MSwgNjg3ODEsIAotICAgIDY4Nzg4LCA2ODc5NCwgNjg4MDAsIDM3NzA3LCA2ODgwNCwgNjg4MDYsIDY4ODA5LCA2ODgxNSwgNjg4MTksIDY4ODMwLCAKLSAgICA2ODg0MCwgNjg4NDYsIDY4ODUzLCA2ODg2MCwgMTQ0NzksIDY4ODY4LCA2ODg3NCwgNjg4ODMsIDY4ODkyLCA2ODg5OCwgCi0gICAgMTA2MTUsIDY4OTA0LCA2ODkxMCwgNjg5MTUsIDY4OTIwLCA2ODkyNywgNjg5MzIsIDY4OTM5LCA2ODk0NSwgNjg5NTAsIAotICAgIDY4OTU4LCA2ODk3MSwgNjg5ODAsIDY1OTE5LCA2NTkyOSwgNjg5ODksIDY4OTk1LCA2OTAwMSwgNjkwMDgsIDY5MDE1LCAKLSAgICA2OTAyMiwgNjkwMjksIDY5MDM2LCA2OTA0MSwgNjkwNDUsIDY5MDQ5LCA2OTA1MiwgNjkwNjIsIDY5MDY2LCA2OTA3OCwgCi0gICAgNjkwODcsIDY5MDkxLCA2OTEwMiwgNjkxMDcsIDY5MTExLCA2NTkzOCwgNjkxMTcsIDY5MTI0LCA2OTEzMywgNjkxNDEsIAotICAgIDY5MTQ5LCA2OTE1NCwgNjkxNTgsIDY5MTYzLCA2OTE2OCwgNjkxNzgsIDY5MTg2LCA2OTE5MSwgNjkxOTUsIDY5MTk5LCAKLSAgICA2OTIwNSwgNjkyMTMsIDY5MjIwLCA2OTIzMiwgNjkyNDAsIDY5MjUxLCA2OTI1OCwgNjkyNjQsIDY5Mjc0LCA2OTI4MCwgCi0gICAgNjkyODQsIDY5MjkxLCA2OTI5NywgNjkzMDIsIDY5MzA2LCA2OTMxMCwgNjkzMTQsIDY5MzIzLCA2OTMzMiwgNjkzNDEsIAotICAgIDY5MzQ3LCA2OTM1MywgNjkzNTksIDY5MzY0LCA2OTM3MSwgNjkzNzcsIDY5Mzg1LCA2OTM5MiwgNjkzOTgsIDEzNjIyLCAKLSAgICA2OTQwMywgNjk0MDksIDY5NDEzLCAxNTUyOSwgNjk0MTcsIDY5NDIyLCA2OTQzMiwgNjk0NDEsIDY5NDQ3LCA2OTQ1MywgCi0gICAgNjk0NjEsIDY5NDY4LCA2OTQ3MiwgNjk0NzYsIDY5NDgyLCA2OTQ5MCwgNjk0OTcsIDY5NTAzLCA2OTUxNCwgNjk1MTgsIAotICAgIDY5NTIyLCA2OTUyNiwgNjk1MjksIDY5NTM1LCA2OTU0MCwgNjk1NDUsIDY5NTQ5LCA2OTU1MywgNjk1NjIsIDY5NTcwLCAKLSAgICA2OTU3NywgNjk1ODMsIDY5NTkwLCAyNTk2MywgNDM0MjIsIDY5NTk1LCA2OTYwMywgNjk2MDcsIDY5NjExLCA2OTYxNCwgCi0gICAgNjk2MjIsIDY5NjI5LCA2OTYzNSwgNjk2NDQsIDY5NjUyLCA2OTY1OCwgNjk2NjMsIDY5NjY3LCA2OTY3MiwgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5Njk0LCA2OTcwMywgNjk3MDcsIDY5NzE0LCA0MDUyOCwgNjk3MTgsIDY5NzI0LCAKLSAgICA2OTcyOCwgNjk3MzYsIDY5NzQyLCA2OTc0NywgNjk3NTgsIDY5NzY2LCA2OTc3MiwgNjk3ODEsIDI0NTEzLCA2OTc4OSwgCi0gICAgNjk3OTYsIDY5ODAzLCA2OTgxMCwgNjk4MTcsIDY5ODI0LCA0NjcwNCwgMTQzMTcsIDY5ODMxLCA2OTgzOCwgNjk4NDMsIAotICAgIDM3NzQzLCA2NTI5LCA2OTg0OSwgNjk4NTQsIDY5ODU5LCA2OTg2NSwgNjk4NzEsIDY5ODc3LCA2OTg4MiwgNjk4ODcsIAotICAgIDY5ODkyLCA2OTg5NywgNjk5MDMsIDY5OTA4LCA2OTkxNCwgNjk5MTksIDY5OTI1LCA2OTkzMCwgNjk5MzUsIDY5OTQwLCAKLSAgICA2OTk0NSwgNjk5NTAsIDY5OTU1LCA2OTk2MCwgNjk5NjYsIDY5OTcxLCA2OTk3NywgNjk5ODIsIDY5OTg3LCA2OTk5MiwgCi0gICAgNjk5OTcsIDcwMDAyLCA3MDAwNywgNzAwMTMsIDcwMDE4LCA3MDAyMywgNzAwMjgsIDcwMDMzLCA3MDAzOCwgNzAwNDMsIAotICAgIDcwMDQ4LCA3MDA1MywgNzAwNTgsIDcwMDYzLCA3MDA2OSwgNzAwNzQsIDcwMDc5LCA3MDA4NCwgNzAwODksIDcwMDk0LCAKLSAgICA3MDA5OSwgNzAxMDQsIDcwMTA5LCA3MDExNSwgNzAxMjAsIDcwMTI1LCA3MDEzMCwgNzAxMzUsIDcwMTQwLCA3MDE0NSwgCi0gICAgNzAxNTAsIDcwMTU1LCA3MDE2MCwgNzAxNjUsIDcwMTcwLCA3MDE3NSwgNzAxODEsIDE4NTQsIDI2MCwgNzAxODYsIDQxMzYxLCAKLSAgICA3MDE5MCwgNzAxOTMsIDcwMTk4LCA3MDIwMiwgNzAyMDUsIDM0MTUsIDcwMjEwLCA3MDIxNSwgNzAyMTksIDcwMjI4LCAKLSAgICA3MDIzOSwgNzAyNTYsIDcwMjc0LCA2OTE0NSwgNzAyODIsIDcwMjg1LCA3MDI5NSwgNzAzMDIsIDcwMzExLCA3MDMyNywgCi0gICAgNzAzMzYsIDcwMzQ2LCA3MDM1MSwgNzAzNjEsIDcwMzcwLCA3MDM3OCwgNzAzOTIsIDcwNDAwLCA3MDQwNCwgNzA0MDcsIAotICAgIDcwNDE0LCA3MDQyMCwgNzA0MzEsIDcwNDM4LCA3MDQ1MCwgNzA0NjEsIDcwNDcyLCA3MDQ4MSwgNzA0ODgsIDEyNzgsIDcxMCwgCi0gICAgNzA0OTgsIDI2MjksIDcwNTAyLCA3MDUwNywgNzA1MTYsIDkyMjEsIDE4ODk0LCAyMjQ3MSwgNzA1MjQsIDcwNTMyLCAKLSAgICA3MDU0NiwgNzA1NTksIDcwNTYzLCA3MDU2OCwgNzA1NzMsIDcwNTc4LCA3MDU4NCwgNzA1OTAsIDcwNTk1LCA4OTIxLCAKLSAgICAxNjYyMywgNzA2MDAsIDcwNjA0LCA3MDYxMiwgMTIwNjIsIDcwNjE3LCA3MDYyMywgNzA2MzIsIDcwNjQwLCAxNzM2LCAKLSAgICAxMjA3NCwgOTA4LCA2NDY1LCA3MDY0NCwgNzA2NDgsIDcwNjU3LCA3MDY2NywgMjQxOSwgMjkxMjcsIDcwNjc2LCA3MDY4MiwgCi0gICAgMTg0MDcsIDI5MTQyLCA3MDY4OCwgNDE5MywgMTI0NTIsIDcwNjk0LCA3MDcwMSwgNjU2NzAsIDcwNzA1LCA3MDcwOSwgCi0gICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgMzYzNCwgMTU0LCAxNTQzNywgNzA3MzAsIDcwNzQyLCA3MDc0NiwgNzA3NTIsIDcwNzU3LCAKLSAgICAyOTkwNywgNzA3NjEsIDEyNDQwLCAyNzY5LCA0LCA3MDc2NiwgNzA3NzYsIDcwNzg3LCA3MDc5MywgNzA4MDQsIDcwODExLCAKLSAgICA3MDgxNywgNzA4MjMsIDcwODMxLCA3MDgzOCwgNzA4NDQsIDcwODU0LCA3MDg2NCwgNzA4NzQsIDcwODgzLCAyNTM2NywgCi0gICAgMTI5MCwgNzA4ODgsIDcwODkyLCA3MDg5NiwgNzA5MDIsIDcwOTA2LCAyNzkyLCAyNzk4LCA4OTE4LCAyMjk0LCA3MDkxMCwgCi0gICAgNzA5MTQsIDcwOTIzLCA3MDkzMSwgNzA5NDIsIDcwOTUwLCA3MDk1OCwgNzA5NjQsIDcwOTY5LCA3MDk4MCwgNzA5OTEsIAotICAgIDcwOTk5LCA3MTAwNSwgNzEwMTAsIDEwNDM0LCA3MTAyMCwgNzEwMjgsIDcxMDMyLCA3MTAzNiwgNzEwNDEsIDcxMDQ1LCAKLSAgICA3MTA1NywgMzAzMTQsIDE2NTQ4LCA3MTA2NCwgNzEwNzQsIDcxMDgwLCA3MTA4NiwgMTA1MzYsIDcxMDk2LCA3MTEwNywgCi0gICAgNzExMTgsIDcxMTI4LCA3MTEzNywgNzExNDEsIDcxMTQ4LCAxNzUwLCA5OTYsIDcxMTU4LCA3MTE2MywgNzExNzEsIDY1NDgzLCAKLSAgICA3MTE3OSwgNzExODQsIDcxMTk1LCA3MTIwMiwgNzEyMTYsIDE1MzY2LCA0NzgsIDcxMjI2LCA3MTIzMCwgNzEyMzQsIAotICAgIDcxMjQyLCA3MTI1MSwgNzEyNTksIDcxMjY1LCA3MTI3OSwgNzEyODYsIDcxMjkyLCA3MTMwMSwgNzEzMDgsIDcxMzE4LCAKLSAgICA3MTMyNiwgNzEzMzMsIDcxMzQxLCA3MTM0OCwgNDAyNCwgMTQ5LCA3MTM1NiwgNzEzNjcsIDcxMzcxLCA3MTM4MywgNzEzODksIAotICAgIDEyNjMzLCAxOTIsIDcxMzk0LCA5ODcxLCA3MTM5OSwgNzE0MDMsIDcxNDEwLCA3MTQxNiwgNzE0MjQsIDcxNDMxLCA5MjgwLCAKLSAgICA3MTQzOCwgNzE0NDcsIDcxNDU1LCA0MDkzLCA3MTQ2OCwgNDExMCwgNzE0NzIsIDI4NDIsIDUxNCwgNzE0NzcsIDcxNDkwLCAKLSAgICA3MTQ5NCwgNzE0OTksIDI4NDcsIDE4NTMsIDgwOSwgNzE1MDMsIDQxMTQsIDcxNTExLCA3MTUxNywgNzE1MjEsIDg2NiwgCi0gICAgNzE1MzEsIDcxNTQwLCA3MTU0NSwgMzY1MSwgNzE1NDksIDE2MzA0LCAxNjMxMSwgNTAwNjYsIDcxNTUzLCA0MTQ1LCA0MDM0LCAKLSAgICAxNDIwMCwgNzE1NjEsIDcxNTY4LCA3MTU3MywgMjU0MzEsIDcxNTc3LCA3MTU4NCwgNzE1OTAsIDcxNTk1LCA3MTYwMCwgCi0gICAgMTYzMjQsIDE4NiwgNzE2MDUsIDcxNjE3LCA3MTYyMywgNzE2MzEsIDI4NTksIDE3NjgsIDcxNjM5LCA3MTY0MSwgNzE2NDYsIAotICAgIDcxNjUxLCA3MTY1NiwgNzE2NjIsIDcxNjY3LCA3MTY3MiwgNzE2NzcsIDcxNjgyLCA3MTY4NywgNzE2OTIsIDcxNjk4LCAKLSAgICA3MTcwMywgNzE3MDgsIDcxNzEzLCA3MTcxOCwgNzE3MjMsIDcxNzI4LCA3MTczMywgNzE3MzgsIDcxNzQ0LCA3MTc0OSwgCi0gICAgNzE3NTQsIDcxNzU5LCA3MTc2NSwgNzE3NzAsIDcxNzc2LCA3MTc4MSwgNzE3ODYsIDcxNzkxLCA3MTc5NiwgNzE4MDEsIAotICAgIDcxODA2LCA3MTgxMSwgNzE4MTcsIDcxODIyLCA3MTgyOCwgNzE4MzMsIDcxODM4LCA3MTg0MywgNzE4NDgsIDcxODUzLCAKLSAgICA3MTg1OCwgNzE4NjMsIDcxODY4LCA3MTg3NCwgNzE4ODAsIDcxODg1LCA3MTg5MCwgNzE4OTYsIDcxOTAxLCA3MTkwNSwgCi0gICAgNzE5MDksIDcxOTE0LCA3MTkyMCwgNzE5MjQsIDcxOTMwLCA3MTkzNSwgNzE5NDAsIDcxOTQ2LCA3MTk1MSwgNzE5NTUsIAotICAgIDcxOTYwLCA3MTk2NSwgNzE5NjksIDcxOTcyLCA3MTk3NCwgNzE5NzgsIDcxOTgxLCA3MTk4OCwgNzE5OTMsIDcxOTk3LCAKLSAgICA3MjAwMiwgNzIwMDYsIDcyMDEwLCA3MjAxNCwgNzIwMjMsIDcyMDI3LCAzNTAyNiwgNzIwMzAsIDM1MDMxLCA3MjAzNywgCi0gICAgNzIwNDIsIDM1MDM2LCA3MjA1MSwgNzIwNjAsIDM1MDQyLCA3MjA2NSwgMzUwNDcsIDcyMDc0LCA3MjA3OSwgMTI2NzYsIAotICAgIDcyMDgzLCA3MjA4OCwgNzIwOTMsIDM1MDUyLCA3MjA5NywgNDQ5MjEsIDcyMTAxLCA3MjEwNCwgNzIxMDgsIDg1ODksIAotICAgIDcyMTE0LCA3MjExNywgNzIxMjIsIDcyMTI2LCAzODg4LCAzNTA1NywgNzIxMjksIDcyMTMzLCA3MjEzNiwgNzIxNDEsIAotICAgIDcyMTQ1LCA3MjE1MSwgNzIxNTksIDcyMTcyLCA3MjE4MSwgNzIxODcsIDcyMTkyLCA3MjE5OCwgNzIyMDIsIDcyMjA4LCAKLSAgICA3MjIxNCwgNzIyMjIsIDcyMjI3LCA3MjIzMSwgNzIyMzgsIDcyMjQ0LCA3MjI1MiwgNzIyNjEsIDcyMjY5LCAzNTA2MCwgCi0gICAgNzIyNzYsIDcyMjg2LCA3MjI5OSwgNzIzMDQsIDcyMzA5LCA3MjMxMywgNzIzMjIsIDcyMzI4LCA3MjMzNSwgNzIzNDYsIAotICAgIDcyMzU4LCA3MjM2NSwgNzIzNzQsIDcyMzgzLCA3MjM5MiwgNzIzOTksIDcyNDA1LCA3MjQxMiwgNzI0MjAsIDcyNDI3LCAKLSAgICA3MjQzNSwgNzI0NDQsIDcyNDUyLCA3MjQ1OSwgNzI0NjcsIDcyNDc2LCA3MjQ4NCwgNzI0OTMsIDcyNTAzLCA3MjUxMiwgCi0gICAgNzI1MjAsIDcyNTI3LCA3MjUzNSwgNzI1NDQsIDcyNTUyLCA3MjU2MSwgNzI1NzEsIDcyNTgwLCA3MjU4OCwgNzI1OTcsIAotICAgIDcyNjA3LCA3MjYxNiwgNzI2MjYsIDcyNjM3LCA3MjY0NywgNzI2NTYsIDcyNjY0LCA3MjY3MSwgNzI2NzksIDcyNjg4LCAKLSAgICA3MjY5NiwgNzI3MDUsIDcyNzE1LCA3MjcyNCwgNzI3MzIsIDcyNzQxLCA3Mjc1MSwgNzI3NjAsIDcyNzcwLCA3Mjc4MSwgCi0gICAgNzI3OTEsIDcyODAwLCA3MjgwOCwgNzI4MTcsIDcyODI3LCA3MjgzNiwgNzI4NDYsIDcyODU3LCA3Mjg2NywgNzI4NzYsIAotICAgIDcyODg2LCA3Mjg5NywgNzI5MDcsIDcyOTE4LCA3MjkzMCwgNzI5NDEsIDcyOTUxLCA3Mjk2MCwgNzI5NjgsIDcyOTc1LCAKLSAgICA3Mjk4MywgNzI5OTIsIDczMDAwLCA3MzAwOSwgNzMwMTksIDczMDI4LCA3MzAzNiwgNzMwNDUsIDczMDU1LCA3MzA2NCwgCi0gICAgNzMwNzQsIDczMDg1LCA3MzA5NSwgNzMxMDQsIDczMTEyLCA3MzEyMSwgNzMxMzEsIDczMTQwLCA3MzE1MCwgNzMxNjEsIAotICAgIDczMTcxLCA3MzE4MCwgNzMxOTAsIDczMjAxLCA3MzIxMSwgNzMyMjIsIDczMjM0LCA3MzI0NSwgNzMyNTUsIDczMjY0LCAKLSAgICA3MzI3MiwgNzMyODEsIDczMjkxLCA3MzMwMCwgNzMzMTAsIDczMzIxLCA3MzMzMSwgNzMzNDAsIDczMzUwLCA3MzM2MSwgCi0gICAgNzMzNzEsIDczMzgyLCA3MzM5NCwgNzM0MDUsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQ1LCA3MzQ1NSwgNzM0NjYsIAotICAgIDczNDc4LCA3MzQ4OSwgNzM0OTksIDczNTEwLCA3MzUyMiwgNzM1MzMsIDczNTQ1LCA3MzU1OCwgNzM1NzAsIDczNTgxLCAKLSAgICA3MzU5MSwgNzM2MDAsIDczNjA4LCA3MzYxNSwgNzM2MjMsIDczNjMyLCA3MzY0MCwgNzM2NDksIDczNjU5LCA3MzY2OCwgCi0gICAgNzM2NzYsIDczNjg1LCA3MzY5NSwgNzM3MDQsIDczNzE0LCA3MzcyNSwgNzM3MzUsIDczNzQ0LCA3Mzc1MiwgNzM3NjEsIAotICAgIDczNzcxLCA3Mzc4MCwgNzM3OTAsIDczODAxLCA3MzgxMSwgNzM4MjAsIDczODMwLCA3Mzg0MSwgNzM4NTEsIDczODYyLCAKLSAgICA3Mzg3NCwgNzM4ODUsIDczODk1LCA3MzkwNCwgNzM5MTIsIDczOTIxLCA3MzkzMSwgNzM5NDAsIDczOTUwLCA3Mzk2MSwgCi0gICAgNzM5NzEsIDczOTgwLCA3Mzk5MCwgNzQwMDEsIDc0MDExLCA3NDAyMiwgNzQwMzQsIDc0MDQ1LCA3NDA1NSwgNzQwNjQsIAotICAgIDc0MDc0LCA3NDA4NSwgNzQwOTUsIDc0MTA2LCA3NDExOCwgNzQxMjksIDc0MTM5LCA3NDE1MCwgNzQxNjIsIDc0MTczLCAKLSAgICA3NDE4NSwgNzQxOTgsIDc0MjEwLCA3NDIyMSwgNzQyMzEsIDc0MjQwLCA3NDI0OCwgNzQyNTcsIDc0MjY3LCA3NDI3NiwgCi0gICAgNzQyODYsIDc0Mjk3LCA3NDMwNywgNzQzMTYsIDc0MzI2LCA3NDMzNywgNzQzNDcsIDc0MzU4LCA3NDM3MCwgNzQzODEsIAotICAgIDc0MzkxLCA3NDQwMCwgNzQ0MTAsIDc0NDIxLCA3NDQzMSwgNzQ0NDIsIDc0NDU0LCA3NDQ2NSwgNzQ0NzUsIDc0NDg2LCAKLSAgICA3NDQ5OCwgNzQ1MDksIDc0NTIxLCA3NDUzNCwgNzQ1NDYsIDc0NTU3LCA3NDU2NywgNzQ1NzYsIDc0NTg2LCA3NDU5NywgCi0gICAgNzQ2MDcsIDc0NjE4LCA3NDYzMCwgNzQ2NDEsIDc0NjUxLCA3NDY2MiwgNzQ2NzQsIDc0Njg1LCA3NDY5NywgNzQ3MTAsIAotICAgIDc0NzIyLCA3NDczMywgNzQ3NDMsIDc0NzU0LCA3NDc2NiwgNzQ3NzcsIDc0Nzg5LCA3NDgwMiwgNzQ4MTQsIDc0ODI1LCAKLSAgICA3NDgzNywgNzQ4NTAsIDc0ODYyLCA3NDg3NSwgNzQ4ODksIDc0OTAyLCA3NDkxNCwgNzQ5MjUsIDc0OTM1LCA3NDk0NCwgCi0gICAgNzQ5NTIsIDc0OTU5LCA3NDk2NCwgODQxOSwgNzQ5NzEsIDM1MDcwLCA3NDk3NiwgNzQ5ODEsIDM1MDc1LCA3NDk4NywgCi0gICAgMjI1NzksIDM1MDgwLCA3NDk5MiwgNzQ5OTgsIDc1MDA2LCA3NTAxMiwgNzUwMTgsIDc1MDI1LCA3NTAzMiwgNzUwMzcsIAotICAgIDc1MDQxLCA3NTA0NSwgNzUwNDgsIDc1MDUyLCA3NTA2MSwgNzUwNzAsIDc1MDc4LCA3NTA4NCwgNzUwOTYsIDc1MTA3LCAKLSAgICA3NTExMSwgMzE0MCwgODM5NCwgNzUxMTYsIDc1MTE5LCA3NTEyMSwgNzUxMjUsIDc1MTI5LCA3NTEzMywgNzUxMzksIAotICAgIDc1MTQ0LCAyNzk5MCwgNzUxNDksIDc1MTUzLCA3NTE1NiwgNzUxNjEsIDc1MTY1LCA3NTE3MiwgNzUxNzgsIDc1MTgyLCAKLSAgICA2NDg1LCA3NTE4NiwgMzUwOTcsIDc1MTkxLCA3NTE5OCwgNzUyMDcsIDc1MjE1LCA3NTIyNiwgNzUyMzQsIDc1MjQzLCAKLSAgICA3NTI1MSwgNzUyNTgsIDc1MjY1LCA3NTI3MSwgNzUyODIsIDM1MTAyLCA3NTI4NywgNzUyOTgsIDc1MzEwLCA3NTMxOCwgCi0gICAgNzUzMjksIDc1MzM4LCA3NTM0OSwgNzUzNTQsIDc1MzYyLCAyNTk1LCA3NTM2NywgMzcxNjYsIDc1MzgwLCA3NTM4NCwgCi0gICAgNzUzOTYsIDc1NDA0LCA3NTQwOSwgNzU0MTcsIDc1NDI4LCAxOTExNCwgNzU0MzcsIDc1NDQzLCA3NTQ1MCwgNzU0NTgsIAotICAgIDc1NDY0LCAzNTExMiwgNzU0NjksIDQxMzksIDYzMDU2LCA3NTQ3NiwgNzU0NzksIDc1NDg3LCA3NTUwMCwgNzU1MTMsIAotICAgIDc1NTI2LCA3NTUzOSwgNzU1NDYsIDc1NTU3LCA3NTU2NiwgNzU1NzEsIDQ2NTIxLCA0NjUyNiwgNzU1NzUsIDc1NTc5LCAKLSAgICA3NTU4NywgNzU1OTQsIDc1NjAzLCA3NTYxMSwgNzU2MTcsIDc1NjI2LCA3NTYzNCwgNzU2NDEsIDc1NjQ5LCA3NTY1MywgCi0gICAgNzU2NjIsIDc1NjcxLCA3NTY4MSwgNzU2OTQsIDc1NzA3LCA3NTcxNywgMzUxMTcsIDc1NzIzLCA3NTczMCwgNzU3MzYsIAotICAgIDc1NzQyLCAzNTEyMywgNzU3NDcsIDc1NzUwLCA3NTc1NCwgNzU3NjIsIDc1NzcxLCA0NjI1OSwgNzU3NzksIDc1Nzg4LCAKLSAgICA3NTc5NiwgNzU4MDMsIDc1ODExLCA3NTgyMSwgNzU4MzAsIDc1ODM5LCAzNjQyMCwgNzU4NDgsIDc1ODU5LCA3NTg3NCwgCi0gICAgNzU4ODQsIDk5MDQsIDIzMjYzLCA3NTg5MywgNzU4OTgsIDc1OTAzLCA3NTkwNywgNzU5MTIsIDc1OTE2LCA3NTkyMSwgCi0gICAgNzU5MjcsIDc1OTMyLCA3NTkzNywgNzU5NDMsIDc1OTQ4LCA3NTk1MywgMjMyMjgsIDc1OTU4LCA3NTk2NSwgNzU5NzMsIAotICAgIDc1OTgxLCA3NTk4OSwgNzU5OTQsIDc2MDAxLCA3NjAwOCwgNzYwMTMsIDIyNzIsIDc2MDE3LCA3NjAyMSwgNzYwMjksIAotICAgIDc2MDM3LCAzNTE0MCwgNzYwNDMsIDc2MDQ5LCA3NjA2MSwgNzYwNjcsIDc2MDc0LCA3NjA3OCwgNzYwODUsIDc2MDkwLCAKLSAgICA3NjA5NywgNzYxMDMsIDc2MTEwLCA3NjEyMSwgNzYxMzEsIDc2MTQxLCA3NjE1MywgNzYxNTksIDc2MTY3LCA3NjE3MywgCi0gICAgNzYxODMsIDc2MTkzLCAzNTE2NywgNzYyMDIsIDc2MjExLCA3NjIxNywgNzYyMjksIDc2MjQwLCA3NjI0NywgNzYyNTIsIAotICAgIDc2MjU2LCA3NjI2NCwgNzYyNzAsIDc2Mjc1LCA3NjI4MCwgNzYyODcsIDc2Mjk1LCA3NjMwNywgNzYzMTcsIDc2MzI2LCAKLSAgICA3NjMzNSwgNzYzNDIsIDM3MDE5LCAyNTc2NCwgNzYzNDgsIDc2MzUzLCA3NjM1NywgNzYzNjEsIDc2MzY2LCA3NjM3NCwgCi0gICAgNzYzODAsIDc2MzkxLCA3NjQwNCwgNzY0MDksIDc2NDE2LCAzNTE3MiwgNzY0MjEsIDc2NDMzLCA3NjQ0MiwgNzY0NTAsIAotICAgIDc2NDYwLCA3NjQ3MSwgNzY0ODQsIDc2NDkxLCA3NjUwMCwgNzY1MDksIDc2NTE3LCA3NjUyMiwgNzY1MjgsIDE1MDAsIAotICAgIDc2NTMzLCA3NjUzOCwgNzY1NDMsIDc2NTQ4LCA3NjU1NCwgNzY1NTksIDc2NTY0LCA3NjU3MCwgNzY1NzYsIDc2NTgxLCAKLSAgICA3NjU4NSwgNzY1OTAsIDc2NTk1LCA3NjYwMCwgNjM2MTEsIDc2NjA1LCA3NjYxMCwgNzY2MTUsIDc2NjIwLCA3NjYyNiwgCi0gICAgNzY2MzIsIDc2NjM3LCA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjIsIDc2NjY3LCA3NjY3MywgNzY2NzgsIAotICAgIDc2NjgzLCA3NjY4OCwgNzY2OTMsIDc2Njk3LCA3NjcwMywgNzY3MDgsIDc2NzE3LCA3NjcyMiwgNzY3MjcsIDc2NzMyLCAKLSAgICA3NjczNywgNzY3NDEsIDc2NzQ4LCA3Njc1NCwgNDQzMCwgMTg3MzcsIDMxMDUsIDc2NzU5LCA3Njc2MywgNzY3NjgsIAotICAgIDc2NzcyLCA3Njc3NiwgNzY3ODAsIDUwMzIxLCA3Njc4NCwgNzY3MDksIDc2Nzg2LCA3Njc5NiwgMzUxODEsIDc2Nzk5LCAKLSAgICA3NjgwNCwgNzY4MTMsIDc2ODE5LCA2NDU0LCAzNTE4NiwgNzY4MjMsIDc2ODI5LCA3NjgzNCwgNzY4NDAsIDc2ODQ1LCAKLSAgICA3Njg0OSwgNzY4NTYsIDc2ODYxLCA3Njg3MSwgNzY4ODAsIDc2ODg0LCA3Njg5MCwgNzY4OTYsIDc2OTAyLCA3NjkwNiwgCi0gICAgNzY5MTQsIDc2OTIxLCA3NjkyOSwgNzY5MzcsIDM1MTkxLCA3Njk0NCwgNzY5NDcsIDc2OTU0LCA3Njk2MCwgNzY5NjUsIAotICAgIDc2OTY5LCA3Njk3NSwgNzY5ODIsIDc2OTg3LCA3Njk5MSwgNzcwMDAsIDc3MDA4LCA3NzAxNCwgNzcwMTksIDM1MTk2LCAKLSAgICA3NzAyNiwgNzcwMzgsIDc3MDQ1LCA3NzA1MSwgNzcwNTYsIDc3MDYyLCA3NzA2OSwgNzcwNzUsIDIyOTc5LCAyOTU4OSwgCi0gICAgNzcwODEsIDc3MDg2LCA3NzA5MiwgNzcwOTYsIDc3MTA4LCA3Njc0MiwgNzY3NDksIDIzMTYwLCA3NzExOCwgNzcxMjMsIAotICAgIDc3MTMwLCA3NzEzNiwgNzcxNDMsIDc3MTQ5LCA3NzE2MCwgNzcxNjUsIDc3MTczLCA5NjA5LCA3NzE3OCwgNzcxODEsIAotICAgIDc3MTg3LCA3NzE5MSwgNzcxOTUsIDc3MTk4LCA3NzIwNCwgMzQ5MzQsIDQ0MzEsIDEwNjcsIDE0NTk2LCA3NzIxMSwgCi0gICAgNzcyMTcsIDc3MjIzLCA3NzIyOSwgNzcyMzUsIDc3MjQxLCA3NzI0NywgNzcyNTMsIDc3MjU5LCA3NzI2NCwgNzcyNjksIAotICAgIDc3Mjc0LCA3NzI3OSwgNzcyODQsIDc3Mjg5LCA3NzI5NCwgNzcyOTksIDc3MzA0LCA3NzMwOSwgNzczMTQsIDc3MzE5LCAKLSAgICA3NzMyNCwgNzczMzAsIDc3MzM1LCA3NzM0MCwgNzczNDYsIDc3MzUxLCA3NzM1NiwgNzczNjIsIDc3MzY4LCA3NzM3NCwgCi0gICAgNzczODAsIDc3Mzg2LCA3NzM5MiwgNzczOTgsIDc3NDA0LCA3NzQxMCwgNzc0MTUsIDc3NDIwLCA3NzQyNiwgNzc0MzEsIAotICAgIDc3NDM2LCA3NzQ0MiwgNzc0NDcsIDc3NDUyLCA3NzQ1NywgNzc0NjIsIDc3NDY3LCA3NzQ3MiwgNzc0NzcsIDc3NDgyLCAKLSAgICA3NzQ4NywgNzc0OTIsIDc3NDk3LCA3NzUwMiwgNzc1MDgsIDc3NTEzLCA3NzUxOCwgNzc1MjMsIDc3NTI5LCA3NzUzNCwgCi0gICAgNzc1MzksIDc3NTQ0LCA3NzU0OSwgNzc1NTUsIDc3NTYwLCA3NzU2NSwgNzc1NzAsIDc3NTc1LCA3NzU4MCwgNzc1ODUsIAotICAgIDc3NTkwLCA3NzU5NSwgNzc2MDAsIDc3NjA1LCA3NzYxMCwgNzc2MTUsIDc3NjIwLCA3NzYyNSwgNzc2MzAsIDc3NjM1LCAKLSAgICA3NzY0MCwgNzc2NDUsIDc3NjUwLCA3NzY1NiwgNzc2NjEsIDc3NjY2LCA3NzY3MSwgNzc2NzYsIDc3NjgxLCA3NzY4NiwgCi0gICAgNzc2OTEsIDE4OTAsIDE2MywgNzc2OTYsIDc3NzAwLCA3NzcwNCwgNzc3MDksIDc3NzE3LCA3NzcyMSwgNzc3MjgsIDc3NzM2LCAKLSAgICA3Nzc0MCwgNzc3NTMsIDc3NzYxLCA3Nzc2NiwgNzc3NzEsIDI4Mzk0LCA3Nzc3NSwgNzc3ODAsIDc3Nzg0LCA3Nzc4OSwgCi0gICAgNzc3OTMsIDc3ODAxLCA3NzgwNSwgMjI1ODcsIDc3ODEwLCA3NzgxNCwgNjYxNjIsIDc3ODE4LCA3NzgyMSwgNzc4MjksIAotICAgIDc3ODM3LCA3Nzg0NSwgNzc4NTAsIDc3ODU1LCA3Nzg2MiwgNzc4NjksIDc3ODc1LCA3Nzg4MSwgNzc4ODYsIDc3ODkxLCAKLSAgICA3Nzg5OSwgNzA1NTEsIDc3OTA2LCA2NTk0OCwgNzc5MTEsIDc3OTE2LCA3NzkyMCwgNzc5MjcsIDY1OTc1LCAxMjc0MywgCi0gICAgNzc5MzMsIDc3OTM4LCA3Nzk0MywgNzc5NDcsIDc3OTUwLCA3Nzk1NiwgNzc5NjAsIDc3OTcwLCA3Nzk3OSwgNzc5ODMsIAotICAgIDc3OTg2LCA3Nzk5MCwgNzc5OTcsIDc4MDEwLCA3ODAxNiwgNzgwMjQsIDc4MDMzLCA3ODA0NCwgNzgwNTUsIDc4MDY2LCAKLSAgICA3ODA3NywgNzgwODYsIDc4MDkyLCA3ODEwMSwgNzgxMDksIDc4MTE5LCA3ODEzMiwgNzgxNDAsIDc4MTQ3LCA3ODE1OCwgCi0gICAgNzgxNjQsIDc4MTY5LCA3ODE3NCwgNzgxODAsIDc4MTg2LCA3ODE5NiwgNzgyMDMsIDc4MjEzLCA3ODIyMiwgNzY0MjMsIAotICAgIDc4MjMwLCA3ODIzNiwgNzgyNDQsIDc4MjUwLCA3ODI1NywgNzgyNjUsIDc4MjcwLCA3ODI3MywgNzgyNzcsIDc4MjgxLCAKLSAgICA3ODI4NCwgNzgyOTAsIDc4Mjk2LCA3ODMwNCwgNzgzMTYsIDc4MzI4LCA3ODMzNSwgNzgzNDAsIDc4MzQ0LCA3ODM1NSwgCi0gICAgNzgzNjMsIDc4MzcwLCA3ODM4MiwgNzgzOTAsIDc4Mzk4LCA3ODQwNSwgNzg0MTEsIDc4NDE2LCA3ODQyNiwgNzg0MzUsIAotICAgIDc4NDQwLCA3ODQ1MCwgNzg0NTksIDQ1NTQ5LCA3ODQ2NiwgNzg0NzAsIDc4NDc1LCA3ODQ4MywgNzg0OTAsIDc4NDk2LCAKLSAgICA3ODUwMCwgNzg1MTAsIDc4NTIxLCA3ODUyOSwgNzg1MzYsIDc4NTQ4LCA3ODU2MCwgNzg1NjksIDc1MzcwLCA3ODU3NiwgCi0gICAgNzg1ODYsIDc4NTk4LCA3ODYwOSwgNzg2MjMsIDc4NjMxLCA3ODY0MSwgNzg2NDgsIDc4NjU2LCA3ODY2OSwgNzg2ODEsIAotICAgIDc4NjkwLCA3ODY5OCwgNzg3MDgsIDc4NzE5LCA3ODczMSwgNzg3NDAsIDc4NzUwLCA3ODc2MCwgNzg3NjksIDc4Nzc2LCAKLSAgICA3ODc4NSwgNzg4MDAsIDc4ODA4LCA3ODgxOCwgNzg4MjcsIDc4ODM1LCA3ODg0OCwgNjMwMjYsIDc4ODYzLCA3ODg3MywgCi0gICAgNzg4ODIsIDc4ODk0LCA3ODkwNCwgNzg5MTYsIDc4OTI3LCA3ODkzOCwgNzg5NDksIDc4OTU5LCA3ODk3MCwgNzg5NzgsIAotICAgIDc4OTg0LCA3ODk5NCwgNzkwMDIsIDc5MDA4LCAzMTI5MSwgNzkwMTMsIDc5MDE5LCA3OTAyOCwgNzkwNDAsIDc5MDQ1LCAKLSAgICA3OTA1MiwgMTA0NDgsIDE5MTM0LCA3OTA1OCwgNzkwNjcsIDc5MDcyLCA3OTA3NiwgNzkwODMsIDc5MDg5LCA3OTA5NCwgCi0gICAgNzkwOTksIDc5MTA3LCA3OTExNSwgMTMxMTksIDc5MTE5LCA3OTEyMiwgNzkxMjQsIDc5MTMxLCA3OTEzNywgNzkxNDgsIAotICAgIDc5MTUzLCA3OTE1NywgNzkxNjQsIDc5MTcwLCA3OTE3NSwgNzkxODMsIDcxMTIwLCA3MTEzMCwgNzkxODksIDc5MTk2LCAKLSAgICA3OTIwNiwgMTE1NDMsIDc5MjEzLCA3OTIxOCwgMzE1MDYsIDc5MjI3LCA3OTIzMiwgNzkyMzksIDc5MjQ5LCA3OTI1NywgCi0gICAgNzkyNjUsIDc5Mjc0LCA3OTI4MCwgNzkyODYsIDc5MjkzLCA3OTMwMCwgNzkzMDUsIDc5MzA5LCA3OTMxNywgNjU5OTIsIAotICAgIDc5MzIyLCA3OTMzMSwgNzkzMzksIDc5MzQ2LCA3OTM1MSwgNzkzNTUsIDc5MzY0LCA3OTM3MCwgNzkzNzMsIDc5Mzc3LCAKLSAgICA3OTM4NiwgNzkzOTYsIDc3NzQ4LCA3OTQwNSwgNzk0MDksIDc5NDE3LCA3OTQyMSwgNzk0MjcsIDc5NDM4LCA3OTQ0OCwgCi0gICAgMTkxNDMsIDc5NDU5LCA3OTQ2OCwgNzk0NzYsIDc5NDg0LCA3OTQ5MSwgNjYwMTEsIDkxNDcsIDc5NDk5LCA3OTUwMywgCi0gICAgNzk1MTIsIDc5NTE5LCA3OTUyMiwgMjk0NzAsIDc5NTI1LCA3OTUyOSwgNzk1MzQsIDc5NTUxLCA3OTU2MywgMTE1MDEsIAotICAgIDc5NTc1LCA3OTU4MCwgNzk1ODUsIDc5NTkwLCAyMjY2OSwgNzk1OTQsIDc5NTk5LCA3OTYwNCwgNzk2MTAsIDc5NjE1LCAKLSAgICA2MTIyLCA3OTYyMCwgMjI2NzMsIDc5NjI1LCA3OTYzMCwgNzk2MzYsIDc5NjQzLCA3OTY0OCwgNzk2NTMsIDc5NjU5LCAKLSAgICA3OTY2NSwgNzk2NzEsIDc5Njc2LCA3OTY4MiwgNzk2ODYsIDc5NzAwLCA3OTcwOCwgNzk3MTYsIDc5NzIyLCA3OTcyNywgCi0gICAgNzk3MzQsIDc5NzQ0LCA3OTc1MywgNzk3NTgsIDc5NzYzLCA3OTc2OCwgNzk3NzYsIDc5NzgxLCA3OTc4NywgNzk3OTIsIAotICAgIDc5ODAxLCA2NDcxMywgNzk4MDYsIDc5ODA5LCA3OTgyNywgNzk4NDYsIDc5ODU5LCA3OTg3MywgNzk4ODksIDc5ODk2LCAKLSAgICA3OTkwMywgNzk5MTIsIDc5OTE5LCA3OTkyNSwgNzk5MzIsIDc5OTM3LCA3OTk0MywgNzk5NDksIDc5OTU3LCA3OTk2MywgCi0gICAgNzk5NjgsIDc5OTczLCA3OTk4OSwgMTE1MTQsIDgwMDAzLCA4MDAxMCwgODAwMTgsIDgwMDI0LCA4MDAyOCwgODAwMzEsIAotICAgIDgwMDM2LCA4MDA0MSwgODAwNDgsIDgwMDUzLCA4MDA2MiwgODAwNjgsIDgwMDczLCA4MDA3OSwgODAwODUsIDgwMDk0LCAKLSAgICA4MDEwMywgODAxMDgsIDgwMTEyLCA4MDEyMCwgODAxMjksIDEyNzcyLCA4MDEzOCwgODAxNDQsIDgwMTUyLCA4MDE1OCwgCi0gICAgODAxNjQsIDgwMTcwLCA4MDE3NSwgODAxODIsIDgwMTg4LCAxMjc4MywgODAxOTMsIDgwMTk2LCA4MDIwMSwgMzUyMjMsIAotICAgIDgwMjExLCA4MDIyMCwgODAyMjUsIDgwMjMxLCA4MDIzNiwgODAyNDQsIDgwMjUxLCA4MDI2MiwgODAyNzIsIDgwMjc3LCAKLSAgICA4MDI4NSwgNzA0NzQsIDgwMjkwLCA4MDI5NiwgODAzMDEsIDgwMzA4LCA4MDMxNywgODAzMjUsIDgwMzI5LCA4MDMzNSwgCi0gICAgODAzNDEsIDgwMzQ4LCA4MDM1NCwgODAzNTgsIDE4NTE4LCAzMTE0LCA4MDM2MywgODAzNjcsIDgwMzcxLCA4MDM3NywgCi0gICAgODAzODYsIDgwMzkyLCA4MDM5OSwgODA0MDMsIDgwNDI0LCA4MDQ0NiwgODA0NjIsIDgwNDc5LCA4MDQ5OCwgODA1MDcsIAotICAgIDgwNTE3LCA4MDUyNSwgODA1MzIsIDgwNTM5LCA4MDU0NSwgMjkzNDIsIDgwNTU5LCA4MDU2MywgODA1NjksIDgwNTc3LCAKLSAgICA4MDU4OSwgODA1OTUsIDgwNjAzLCA4MDYxMCwgODA2MTUsIDgwNjIwLCA4MDYyNCwgODA2MzIsIDgwNjM5LCA4MDY0MywgCi0gICAgODA2NDksIDgwNjU1LCA4MDY2MCwgMzczMCwgNDY3MjEsIDgwNjY2LCA4MDY3MCwgODA2NzQsIDgwNjc4LCA4MDY4MywgCi0gICAgODA2ODgsIDgwNjkzLCA4MDY5OSwgODA3MDUsIDgwNzExLCA4MDcxOCwgODA3MjQsIDgwNzMxLCA4MDczNywgODA3NDMsIAotICAgIDgwNzQ4LCA4MDc1NCwgODA3NTksIDgwNzYzLCA4MDc2OCwgODA3NzIsIDgwNzc3LCA0NjczNiwgODA3ODEsIDgwNzg2LCAKLSAgICA4MDc5NCwgODA3OTgsIDgwODAzLCA4MDgxMCwgODA4MTksIDgwODI1LCA4MDgzNCwgODA4MzgsIDgwODQ1LCA4MDg0OSwgCi0gICAgODA4NTIsIDgwODU5LCA4MDg2NSwgODA4NzQsIDgwODg0LCA4MDg4OSwgODA4OTMsIDgwOTAxLCA4MDkxMCwgODA5MTQsIAotICAgIDgwOTIyLCA4MDkyOCwgODA5MzMsIDgwOTM4LCA4MDk0NCwgODA5NTAsIDgwOTU1LCA4MDk1OSwgODA5NjUsIDgwOTcwLCAKLSAgICA4MDk3NCwgODA5NzgsIDgwOTgxLCA4MDk4NiwgODA5OTQsIDgxMDA0LCA4MTAxMCwgODEwMTUsIDgxMDI1LCA0NDAzMSwgCi0gICAgODEwMzMsIDgxMDQ1LCA4MTA0OSwgODEwNTUsIDgxMDY3LCA4MTA3OCwgODEwODUsIDgxMDkxLCA4MTA5OCwgODExMDUsIAotICAgIDgxMTE3LCA4MTEyNCwgODExMzAsIDIyNzQ3LCA4MTEzNCwgODExNDIsIDgxMTQ4LCA4MTE1NSwgODExNjEsIDgxMTY3LCAKLSAgICA4MTE3MywgODExNzgsIDgxMTgzLCA4MTE4OCwgODExOTcsIDgxMjA1LCA4MTIxNiwgNzM1MCwgODEyMjEsIDE3OTY3LCAKLSAgICA4MTIyNywgODEyMzEsIDgxMjM1LCA4MTIzOSwgODEyNDcsIDgxMjU2LCA4MTI2MCwgODEyNjcsIDgxMjc2LCA4MTI4NCwgCi0gICAgODEyOTcsIDgxMzAzLCA4MDc3MywgMzIzOTAsIDgxMzA4LCA4MTMxMCwgODEzMTUsIDgxMzIwLCA4MTMyNSwgODEzMzAsIAotICAgIDgxMzM1LCA4MTM0MCwgODEzNDUsIDgxMzUwLCA4MTM1NSwgODEzNjAsIDgxMzY1LCA4MTM3MCwgODEzNzUsIDgxMzgwLCAKLSAgICA4MTM4NiwgODEzOTEsIDgxMzk2LCA4MTQwMSwgODE0MDYsIDgxNDExLCA4MTQxNiwgODE0MjEsIDgxNDI2LCA4MTQzMiwgCi0gICAgODE0MzgsIDgxNDQ0LCA4MTQ0OSwgODE0NTQsIDgxNDY2LCA4MTQ3MSwgMTg5NiwgNjMsIDgxNDc2LCA4MTQ4MSwgMzUyMjksIAotICAgIDgxNDg1LCAzNTIzNCwgMzUyMzksIDM1MjQ1LCAzNTI1MCwgODE0ODksIDM1MjU1LCAyMzc4NSwgODE1MTEsIDgxNTE1LCAKLSAgICA4MTUxOSwgODE1MjQsIDgxNTI4LCAzNTI1OSwgODE1MzIsIDgxNTQwLCA4MTU0NywgMzUyNjQsIDgxNTUzLCA4MTU1NiwgCi0gICAgODE1NjEsIDgxNTY1LCA4MTU3NCwgMTAyNjYsIDgxNTgyLCAzNTI2OSwgMjM2NDEsIDgxNTg1LCA4MTU4OSwgODE1OTcsIAotICAgIDE0MTIsIDgxNjAyLCAzNTI4MCwgODE2MDUsIDgxNjEwLCAyNzc1MCwgMjc3NjAsIDM4MTgyLCA4MTYxNSwgODE2MjAsIAotICAgIDgxNjI1LCA4MTYzMCwgODE2MzYsIDgxNjQxLCA4MTY1MCwgODE2NTUsIDgxNjY0LCA4MTY3MiwgODE2NzksIDgxNjg1LCAKLSAgICA4MTY5MCwgODE2OTUsIDgxNzAwLCA4MTcxMCwgODE3MTksIDgxNzI3LCA4MTczMiwgODE3NDAsIDgxNzQ0LCA4MTc1MiwgCi0gICAgODE3NTYsIDgxNzYzLCA4MTc3MSwgMzUwODgsIDQxMTkyLCA4MTc3OCwgODE3ODQsIDgxNzg5LCA4MTc5NCwgMTMxNTQsIAotICAgIDMwNTI5LCA4MTc5OSwgODE4MDQsIDgxODExLCA4MTgxNywgODE4MjIsIDgxODMwLCA4MTg0MCwgODE4NTAsIDgxODU2LCAKLSAgICA4MTg2MSwgODE4NjcsIDE5MTY1LCA4MTg3NCwgMzkwNTIsIDgxODg3LCA4MTg5MiwgODE4OTgsIDMzMzgxLCA4MTkxMSwgCi0gICAgODE5MTcsIDgxOTIxLCA4MTkzMCwgODE5MzksIDgxOTQ2LCA4MTk1MiwgODE5NjAsIDgxOTY5LCA4MTk3NiwgODE5ODIsIAotICAgIDgxOTg1LCA4MTk4OSwgODE5OTMsIDI3ODkxLCA4MTk5NywgODIwMDQsIDgyMDEwLCA4MjAxOCwgODIwMjMsIDgyMDI3LCAKLSAgICAyNTkxMSwgODIwMzMsIDgyMDM2LCA4MjA0NCwgODIwNTEsIDgyMDU5LCA4MjA3MiwgODIwODYsIDgyMDkzLCA4MjA5OSwgCi0gICAgODIxMDYsIDgyMTEyLCAzNTI5NCwgODIxMTYsIDgyMTIzLCA4MjEzMSwgODIxMzksIDgyMTQ1LCAzNTI5OSwgODIxNTMsIAotICAgIDgyMTU5LCA4MjE2NCwgODIxNzQsIDgyMTgwLCA4MjE4OSwgMzMxODMsIDM3NjE0LCA4MjE5NywgODIyMDIsIDgyMjA3LCAKLSAgICA4MjIxMSwgODIyMTYsIDgyMjIwLCA4MjIyOCwgODIyMzMsIDE2Mjk2LCA0NDA0NCwgODIyMzcsIDgyMjQyLCAzNTMwNCwgCi0gICAgNjc1NDcsIDgyMjQ2LCA4MjI1MSwgODIyNTUsIDgyMjYyLCA4MjI3MSwgODIyNzUsIDgyMjgzLCA4MjI4OSwgODIyOTQsIAotICAgIDgyMzAwLCA4MjMwNSwgODIzMTIsIDgyMzE4LCA4MjMyMywgODIzMjgsIDgyMzM5LCA4MjM0OCwgODIzNjAsIDgyMzc1LCAKLSAgICAzNTU3MSwgODIzODEsIDE4MDg2LCAzNTMwOCwgODIzODUsIDgyMzkyLCA4MjM5OCwgMjYwMjcsIDgyNDAyLCA4MjQwOSwgCi0gICAgODI0MTgsIDgyNDI1LCA4MjQzNCwgODI0NDAsIDgyNDQ1LCA4MjQ1MywgODI0NTksIDM1MzE4LCA4MjQ2NCwgODI0NzMsIAotICAgIDgxMDczLCA4MjQ4MiwgODI0ODksIDgyNDk1LCA4MjUwMSwgODI1MTAsIDgyNTIwLCA4MjUyOCwgODI1MzUsIDgyNTM5LCAKLSAgICAzNTMyMywgODI1NDIsIDM1MzI5LCAzNTMzNSwgODI1NDcsIDgyNTU1LCA4MjU2MywgODI1NzMsIDgyNTgyLCA4MjU5MCwgCi0gICAgODI1OTcsIDgyNjA3LCAzNTM0MCwgODI2MTEsIDgyNjEzLCA4MjYxNywgODI2MjIsIDgyNjI2LCA4MjYzMCwgODI2MzYsIAotICAgIDgyNjQxLCA4MjY0NSwgODI2NTYsIDgyNjYxLCA4MjY2NiwgMzExOSwgODI2NzAsIDgyNjc3LCA4MjY4MSwgODI2OTAsIAotICAgIDgyNjk4LCA4MjcwNSwgODI3MTAsIDgyNzE1LCA2NzU5OCwgODI3MTksIDgyNzIyLCA4MjcyOCwgODI3MzYsIDgyNzQyLCAKLSAgICA4Mjc0NiwgODI3NTEsIDgyNzU4LCA4Mjc2MywgODI3NjgsIDgyNzcyLCA4Mjc3OCwgODI3ODMsIDM3NjQ1LCA4Mjc4NywgCi0gICAgODI3OTAsIDgyNzk1LCA4Mjc5OSwgODI4MDQsIDgyODExLCA4MjgxNiwgODI4MjAsIDQyNTgwLCA4MjgyOCwgMjc3NjksIAotICAgIDI3Nzc4LCA4MjgzNCwgODI4NDAsIDgyODQ2LCA4Mjg1MSwgODI4NTUsIDgyODU4LCA4Mjg2OCwgODI4NzcsIDgyODgyLCAKLSAgICA4Mjg4OCwgODI4OTUsIDgyOTAxLCA4MjkwNSwgODI5MTMsIDgyOTE4LCAzNzY1MSwgNzc5NTIsIDgyOTIyLCA4MjkzMCwgCi0gICAgODI5MzYsIDgyOTQzLCA4Mjk0OCwgODI5NTIsIDgyOTU3LCA2MzI0MiwgODI5NjMsIDgyOTY5LCAzNzY1NywgODI5NzQsIAotICAgIDgyOTc5LCA4Mjk4MywgODI5ODgsIDgyOTkzLCA4Mjk5OCwgODMwMDIsIDgzMDA3LCA4MzAxMiwgODMwMTgsIDgzMDIzLCAKLSAgICA4MzAyOCwgODMwMzQsIDgzMDQwLCA4MzA0NSwgODMwNDksIDgzMDU0LCA4MzA1OSwgODMwNjQsIDgzMDY4LCAyNjAyNiwgCi0gICAgODMwNzMsIDgzMDc4LCA4MzA4NCwgODMwOTAsIDgzMDk2LCA4MzEwMSwgODMxMDUsIDgzMTEwLCA4MzExNSwgODMxMjAsIAotICAgIDgzMTI0LCA4MzEyOSwgODMxMzQsIDgzMTM5LCA4MzE0NCwgNDY5OTEsIDgzMTQ4LCAzNTM0OCwgODMxNTYsIDgzMTYwLCAKLSAgICA4MzE2OCwgODMxNzYsIDgzMTg3LCA4MzE5MiwgODMxOTYsIDI0MjExLCA3NTQ3MywgODMyMDEsIDgzMjA3LCA4MzIxMiwgCi0gICAgODMyMjIsIDgzMjI5LCA4MzIzNCwgODMyNDIsIDgzMjUxLCA4MzI1NiwgODMyNjAsIDgzMjY1LCA4MzI3MywgODMyODEsIAotICAgIDgzMjg4LCA3MDczNiwgODMyOTQsIDgzMzAyLCA4MzMwOSwgODMzMjAsIDgzMzI2LCA4MzMzMiwgMzUzNTgsIDgzMzM1LCAKLSAgICA4MzM0MiwgODMzNTAsIDgzMzU1LCA0NDI0NywgODMzNTksIDgzMzY0LCA4MzM3MSwgODMzNzYsIDk0ODQsIDgzMzgwLCAKLSAgICA4MzM4OCwgODMzOTUsIDgzNDAyLCA4MzQxMSwgODM0MTgsIDgzNDI0LCA4MzQzOCwgNjE5NCwgODM0NDYsIDgzNDUyLCAKLSAgICA4MzQ1NiwgODM0NTksIDgzNDY3LCA4MzQ3NCwgODM0NzksIDgzNDkyLCA4MzQ5OSwgODM1MDUsIDgzNTA5LCA4MzUxNCwgCi0gICAgODM1MjEsIDgzNTI2LCA2NTg1MSwgODM1MzEsIDgzNTM0LCA4MzU0MywgODM1NTAsIDgzNTU2LCA4MzU2MCwgODM1NjMsIAotICAgIDgzNTcxLCA4MzU4MCwgODM1OTAsIDgzNjAwLCA4MzYwOSwgODM2MjAsIDgzNjI4LCA4MzYzOSwgODM2NDQsIDgzNjQ4LCAKLSAgICA4MzY1MywgODM2NTcsIDM4MzEzLCA4MzY2NSwgMjMwNDIsIDM4MzIyLCA4MzY3MCwgODM2NzUsIDgzNjgwLCA4MzY4NSwgCi0gICAgODM2OTAsIDgzNjk1LCA4MzcwMCwgODM3MDQsIDgzNzA5LCA4MzcxNCwgODM3MTksIDgzNzI0LCA4MzcyOSwgODM3MzQsIAotICAgIDgzNzM4LCA4Mzc0MywgODM3NDgsIDgzNzUyLCA4Mzc1NiwgODM3NjAsIDgzNzY0LCA4Mzc2OSwgODM3NzQsIDgzNzc4LCAKLSAgICA4Mzc4MywgODM3ODcsIDgzNzkxLCA4Mzc5NiwgODM4MDEsIDgzODA2LCA4MzgxMSwgODM4MTUsIDgzODIwLCA4MzgyNSwgCi0gICAgODM4MjksIDgzODM0LCA4MzgzOSwgODM4NDQsIDgzODQ5LCA4Mzg1NCwgODM4NTksIDgzODY0LCA4Mzg2OSwgODM4NzQsIAotICAgIDgzODc5LCA4Mzg4NCwgODM4ODksIDgzODk0LCA4Mzg5OSwgODM5MDQsIDgzOTA5LCA4MzkxNCwgODM5MTksIDgzOTI0LCAKLSAgICA4MzkyOSwgODM5MzMsIDgzOTM4LCA4Mzk0MywgODM5NDgsIDgzOTUzLCA4Mzk1OCwgODM5NjMsIDgzOTY4LCA4Mzk3MywgCi0gICAgODM5NzgsIDgzOTgzLCA4Mzk4OCwgODM5OTIsIDgzOTk3LCA4NDAwMSwgODQwMDYsIDg0MDExLCA4NDAxNiwgODQwMjEsIAotICAgIDg0MDI2LCA4NDAzMSwgODQwMzYsIDg0MDQxLCA4NDA0NiwgODQwNTAsIDg0MDU0LCA4NDA1OSwgODQwNjQsIDg0MDY4LCAKLSAgICA4NDA3MywgODQwNzgsIDg0MDgyLCA4NDA4NywgODQwOTIsIDg0MDk3LCA4NDEwMiwgODQxMDYsIDg0MTExLCA4NDExNiwgCi0gICAgODQxMjAsIDg0MTI1LCA4NDEyOSwgODQxMzMsIDg0MTM3LCA4NDE0MSwgODQxNDYsIDg0MTUwLCA4NDE1NCwgODQxNTgsIAotICAgIDg0MTYyLCA4NDE2NiwgODQxNzAsIDg0MTc0LCA4NDE3OCwgODQxODIsIDg0MTg3LCA4NDE5MiwgODQxOTcsIDg0MjAyLCAKLSAgICA4NDIwNywgODQyMTIsIDg0MjE3LCA4NDIyMiwgODQyMjcsIDg0MjMyLCA4NDIzNiwgODQyNDAsIDg0MjQ0LCA4NDI0OCwgCi0gICAgODQyNTIsIDg0MjU2LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NCwgODQyNzksIDg0Mjg0LCA4NDI4OCwgODQyOTIsIAotICAgIDg0Mjk3LCA4NDMwMSwgODQzMDUsIDg0MzA5LCA4NDMxMywgODQzMTcsIDg0MzIxLCA4NDMyNSwgODQzMjksIDg0MzMzLCAKLSAgICA4NDMzNywgODQzNDEsIDg0MzQ1LCA4NDM0OSwgODQzNTMsIDg0MzU4LCA4NDM2MywgODQzNjcsIDg0MzcxLCA4NDM3NSwgCi0gICAgODQzNzksIDg0MzgzLCA4NDM4NywgODQzOTIsIDg0Mzk2LCA4NDQwMCwgODQ0MDQsIDg0NDA4LCA4NDQxMiwgODQ0MTYsIAotICAgIDg0NDIxLCA4NDQyNSwgODQ0MzAsIDg0NDM0LCA4NDQzOCwgODQ0NDIsIDg0NDQ2LCA4NDQ1MCwgODQ0NTQsIDg0NDU4LCAKLSAgICA4NDQ2MiwgODQ0NjYsIDg0NDcwLCA4NDQ3NCwgODQ0NzksIDg0NDgzLCA4NDQ4NywgODQ0OTEsIDg0NDk1LCA4NDQ5OSwgCi0gICAgODQ1MDMsIDg0NTA3LCA4NDUxMSwgODQ1MTUsIDg0NTE5LCA4NDUyMywgODQ1MjgsIDg0NTMyLCA4NDUzNiwgODQ1NDEsIAotICAgIDg0NTQ2LCA4NDU1MCwgODQ1NTQsIDg0NTU4LCA4NDU2MiwgODQ1NjYsIDg0NTcwLCA4NDU3NCwgODQ1NzgsIDg0NTgzLCAKLSAgICA4NDU4NywgODQ1OTIsIDg0NTk2LCA4NDYwMSwgODQ2MDUsIDg0NjEwLCA4NDYxNCwgODQ2MjAsIDg0NjI1LCA4NDYyOSwgCi0gICAgODQ2MzQsIDg0NjM4LCA4NDY0MywgODQ2NDcsIDg0NjUyLCA4NDY1NiwgODQ2NjEsIDE1MTksIDg0NjY1LCAyODczLCAxNzc0LCAKLSAgICAxNjkyLCAyNzcwNSwgODQ2NjksIDI4ODIsIDg0NjczLCAxMzgxLCA4NDY3OCwgMTMyMywgODQ2ODIsIDg0Njg2LCAyODk5LCAKLSAgICA4NDY5MCwgODQ2OTcsIDg0NzA0LCA4NDcxOCwgMjkwMywgNzQ1MiwgODQ3MjcsIDg0NzM1LCA4NDc0MiwgODQ3NTMsIAotICAgIDg0NzYyLCA4NDc2OSwgODQ3ODEsIDg0Nzk0LCA4NDgwNywgODQ4MTgsIDg0ODIzLCA4NDgzMCwgODQ4NDIsIDg0ODQ2LCAKLSAgICAyOTA3LCAxMjg1MCwgODQ4NTYsIDg0ODYxLCA4NDg3MCwgODQ4ODAsIDg0ODg1LCAyOTExLCA4NDg5MywgODQ4OTcsIAotICAgIDg0OTAyLCA4NDkwOSwgODQ5MTUsIDg0OTIzLCA4NDkzNSwgMTMyOCwgMTQyMDEsIDg0OTQ1LCA4NDk0OSwgODQ5NTUsIAotICAgIDg0OTY5LCA4NDk4MSwgODQ5OTMsIDg1MDAzLCA4NTAxMiwgODUwMjEsIDg1MDMwLCA4NTAzOCwgODUwNDksIDg1MDU3LCAKLSAgICA0MjkyLCA4NTA2NywgODUwNzgsIDg1MDg3LCA4NTA5MywgODUxMDgsIDg1MTE1LCA4NTEyMSwgODUxMjYsIDM4NDQ3LCAKLSAgICA4NTEzMSwgMjkzNSwgMTQyMDUsIDg1MTM1LCA4NTE0MiwgOTQwOSwgODUxNTEsIDI5NDAsIDM0Nzk2LCA4NTE1NywgNjU1NzMsIAotICAgIDg1MTY0LCA4NTE3MCwgODUxODEsIDg1MTg3LCA4NTE5NCwgODUyMDAsIDg1MjA4LCA4NTIxNSwgODUyMjEsIDg1MjMyLCAKLSAgICA4NTI0MiwgODUyNTEsIDg1MjYyLCA4NTI3MSwgODUyNzgsIDg1Mjg0LCA4NTI5NCwgODUzMDIsIDg1MzA4LCA4NTMyMywgCi0gICAgODUzMjksIDg1MzM0LCA4NTM0MSwgODUzNDQsIDg1MzUwLCA4NTM1NywgODUzNjMsIDg1MzcxLCA4NTM4MCwgODUzODgsIAotICAgIDg1Mzk0LCA4NTQwMywgNDYyNjEsIDg1NDE3LCA4NTQyMiwgODU0MjgsIDE2MDcyLCA4NTQzMywgODU0NDYsIDg1NDU4LCAKLSAgICA4NTQ2NywgODU0NzUsIDg1NDgyLCA4NTQ4NiwgODU0OTAsIDg1NDkzLCA4NTUwMCwgODU1MDcsIDg1NTE1LCA4NTUyMywgCi0gICAgODU1MzIsIDg1NTQwLCAxNTk4MywgODU1NDgsIDg1NTUzLCA4NTU1NywgODU1NjksIDg1NTc2LCA4NTU4NSwgODQxLCAKLSAgICA4NTU5NSwgODU2MDQsIDg1NjE1LCAyOTU2LCA4NTYxOSwgODU2MjMsIDg1NjI5LCA4NTY0MiwgODU2NTQsIDg1NjY0LCAKLSAgICA4NTY3MywgODU2ODUsIDI4NDQ2LCA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyNCwgODU3MzUsIDg1NzQ1LCA4NTc1NSwgCi0gICAgODU3NjQsIDg1NzcyLCAxMjM2NCwgODU3NzksIDg1NzgzLCA4NTc4NiwgODU3OTEsIDg1Nzk2LCA4NTgwMCwgODU4MDYsIAotICAgIDEzMzMsIDg1ODEzLCA4NTgxNywgMTI5MzIsIDg1ODIxLCA4NTgzMiwgODU4NDEsIDg1ODQ5LCA4NTg1OCwgODU4NjYsIAotICAgIDg1ODgyLCA4NTg5MywgODU5MDIsIDg1OTEwLCA4NTkyMiwgODU5MzMsIDg1OTQ5LCA4NTk1OSwgODU5ODAsIDg1OTk0LCAKLSAgICA4NjAwNywgODYwMTUsIDg2MDIyLCA3NDk4LCA4NjAzNSwgODYwNDAsIDg2MDQ2LCA2MjAzLCA4NjA1MiwgODYwNTUsIAotICAgIDg2MDYyLCA4NjA3MiwgODU1NCwgODYwNzksIDg2MDg0LCA4NjA4OSwgODYwOTQsIDg2MTAyLCA4NjExMSwgODYxMTksIAotICAgIDg2MTI0LCA4NjEzMSwgMTA0OTYsIDEwNTA1LCA4NjEzNywgODYxNDgsIDg2MTUzLCA4NjE1OSwgMjk3MiwgMjk3NywgCi0gICAgODYxNjUsIDExODU3LCA4NjE3MSwgODYxNzgsIDg2MTg1LCA4NjE5OCwgMjI4MSwgODcsIDg2MjAzLCA4NjIwOCwgODYyMTYsIAotICAgIDg2MjI2LCA4NjIzNSwgODYyNDEsIDg2MjUwLCA4NjI1OCwgODYyNjgsIDg2MjcyLCA4NjI3NiwgODYyODEsIDg2Mjg1LCAKLSAgICA4NjI5NywgMzAwMCwgODYzMDUsIDg2MzEzLCA4NjMxOCwgODYzMjksIDg2MzQwLCA4NjM1MiwgODYzNjMsIDg2MzczLCAKLSAgICA4NjM4MiwgMjMwODMsIDg2Mzg3LCA4NjM5MywgODYzOTgsIDg2NDA4LCA4NjQxOCwgODY0MjMsIDg2NDI5LCA4NjQzMywgCi0gICAgODY0MzgsIDg2NDQ3LCAyMzA5NSwgODY0NTEsIDQzODQsIDI0LCA4NjQ1NiwgODY0NjUsIDg2NDcyLCA4NjQ3OSwgODY0ODUsIAotICAgIDg2NDkxLCAxMDQ5LCA4NjQ5NiwgODY1MDEsIDY2MTI4LCA4NjUwNiwgODY1MTEsIDg2NTE3LCA4NjUyMywgODY1MzEsIAotICAgIDg2NTM2LCA4NjU0NCwgODY1NTEsIDg2NTU3LCA4NjU2MiwgNDI0NjQsIDQ2MTU1LCA4NjU2OCwgMzAwNCwgMzIsIDg2NTc4LCAKLSAgICA4NjU5MSwgODY1OTYsIDg2NjA0LCA4NjYwOSwgODY2MTUsIDMwMjYsIDMwNDk3LCA4NjYyMCwgODY2MjgsIDg2NjM1LCAKLSAgICA4NjY0MCwgODY2NDksIDYzNDkyLCA0MDE4LCA2NzIxOCwgODY2NTcsIDg2NjYxLCAxNzE5LCAxODMzLCA4NjY2NiwgODY2NzEsIAotICAgIDg2Njc4LCAxODM3LCAyODAsIDg2Njg1LCA4NjY5MSwgODY2OTYsIDMwNDgsIDg2NzAwLCA4NjcwNSwgODY3MTIsIDE4NDEsIAotICAgIDg2NzE3LCA4NjcyMywgODY3MjgsIDg2NzQwLCA2NDMwLCA4Njc1MCwgODY3NTcsIDE4NDgsIDg2NzYzLCA4Njc2OCwgCi0gICAgODY3NzUsIDg2NzgyLCA4Njc5NywgODY4MDQsIDg2ODE1LCA4NjgyMCwgODY4MjgsIDI2NTcsIDg2ODMyLCA4Njg0NCwgCi0gICAgODY4NDksIDg2ODUzLCA4Njg1OSwgMzAzMTMsIDIyODYsIDg2ODYzLCA4Njg3NCwgODY4NzgsIDg2ODgyLCA4Njg4OCwgCi0gICAgODY4OTIsIDg2OTAxLCA4NjkwNSwgODY5MTYsIDg2OTIwLCAyMzMyLCAzNDYxMywgODY5MjQsIDg2OTM0LCAzMTM5LCAKLSAgICA4Njk0MiwgOTkwOSwgODY5NTEsIDg2OTU2LCA4Njk2MCwgODY5NjksIDg2OTc2LCA4Njk4MiwgMzEwOSwgMTYxMzYsIAotICAgIDg2OTg2LCA4Njk5OSwgODcwMTcsIDg3MDIyLCA4NzAzMCwgODcwMzgsIDg3MDQ4LCAxMDc2OCwgMTQzMTgsIDg3MDYwLCAKLSAgICA4NzA3MywgODcwODAsIDg3MDk0LCA4NzEwMSwgODcxMTcsIDg3MTI0LCA4NzEzMCwgMjMxMjcsIDEzNTU2LCA4NzEzNywgCi0gICAgODcxNDQsIDg3MTU0LCA4NzE2MywgNDY5OTAsIDg3MTc1LCA0NzEyNSwgODcxODMsIDg3MTg2LCA4NzE5MiwgODcxOTgsIAotICAgIDg3MjA0LCA4NzIxMCwgODcyMTYsIDg3MjIzLCA4NzIzMCwgODcyMzYsIDg3MjQyLCA4NzI0OCwgODcyNTQsIDg3MjYwLCAKLSAgICA4NzI2NiwgODcyNzIsIDg3Mjc4LCA4NzI4NCwgODcyOTAsIDg3Mjk2LCA4NzMwMiwgODczMDgsIDg3MzE0LCA4NzMyMCwgCi0gICAgODczMjYsIDg3MzMyLCA4NzMzOCwgODczNDQsIDg3MzUwLCA4NzM1NiwgODczNjIsIDg3MzY4LCA4NzM3NCwgODczODAsIAotICAgIDg3Mzg2LCA4NzM5MiwgODczOTgsIDg3NDA0LCA4NzQxMCwgODc0MTYsIDg3NDIyLCA4NzQyOCwgODc0MzQsIDg3NDQwLCAKLSAgICA4NzQ0NiwgODc0NTIsIDg3NDU4LCA4NzQ2NCwgODc0NzAsIDg3NDc2LCA4NzQ4MiwgODc0ODgsIDg3NDk0LCA4NzUwMCwgCi0gICAgODc1MDYsIDg3NTEyLCA4NzUxOCwgODc1MjQsIDg3NTMwLCA4NzUzNiwgODc1NDMsIDg3NTQ5LCA4NzU1NiwgODc1NjMsIAotICAgIDg3NTY5LCA4NzU3NiwgODc1ODMsIDg3NTg5LCA4NzU5NSwgODc2MDEsIDg3NjA3LCA4NzYxMywgODc2MTksIDg3NjI1LCAKLSAgICA4NzYzMSwgODc2MzcsIDg3NjQzLCA4NzY0OSwgODc2NTUsIDg3NjYxLCA4NzY2NywgODc2NzMsIDMxMjMsIDk4ODIsIAotICAgIDg3Njc5LCA4NzY4NSwgODc2OTMsIDg3Njk3LCA4NDkwNSwgMzEyNywgODc3MDEsIDIyODYwLCAxMzE4OSwgMzk2OCwgCi0gICAgODc3MDUsIDMxMzMsIDg3NzA5LCA4NzcxOSwgODc3MjUsIDg3NzMxLCA4NzczNywgODc3NDMsIDg3NzQ5LCA4Nzc1NSwgCi0gICAgODc3NjEsIDg3NzY3LCA4Nzc3MywgODc3NzksIDg3Nzg1LCA4Nzc5MSwgODc3OTcsIDg3ODAzLCA4NzgwOSwgODc4MTUsIAotICAgIDg3ODIxLCA4NzgyNywgODc4MzMsIDg3ODM5LCA4Nzg0NSwgODc4NTEsIDg3ODU3LCA4Nzg2MywgODc4NjksIDg3ODc2LCAKLSAgICA4Nzg4MywgODc4ODksIDg3ODk1LCA4NzkwMSwgODc5MDcsIDg3OTEzLCA4NzkxOSwgMTMzOCwgODc5MjUsIDg3OTMwLCAKLSAgICA4NzkzNSwgODc5NDAsIDg3OTQ1LCA4Nzk1MCwgODc5NTUsIDg3OTYwLCA4Nzk2NSwgODc5NjksIDg3OTczLCA4Nzk3NywgCi0gICAgODc5ODEsIDg3OTg1LCA4Nzk4OSwgODc5OTMsIDg3OTk3LCA4ODAwMSwgODgwMDcsIDg4MDEzLCA4ODAxOSwgODgwMjUsIAotICAgIDg4MDI5LCA4ODAzMywgODgwMzcsIDg4MDQxLCA4ODA0NSwgODgwNDksIDg4MDUzLCA4ODA1NywgODgwNjEsIDg4MDY2LCAKLSAgICA4ODA3MSwgODgwNzYsIDg4MDgxLCA4ODA4NiwgODgwOTEsIDg4MDk2LCA4ODEwMSwgODgxMDYsIDg4MTExLCA4ODExNiwgCi0gICAgODgxMjEsIDg4MTI2LCA4ODEzMSwgODgxMzYsIDg4MTQxLCA4ODE0NiwgODgxNTEsIDg4MTU2LCA4ODE2MSwgODgxNjYsIAotICAgIDg4MTcxLCA4ODE3NiwgODgxODEsIDg4MTg2LCA4ODE5MSwgODgxOTYsIDg4MjAxLCA4ODIwNiwgODgyMTEsIDg4MjE2LCAKLSAgICA4ODIyMSwgODgyMjYsIDg4MjMxLCA4ODIzNiwgODgyNDEsIDg4MjQ2LCA4ODI1MSwgODgyNTYsIDg4MjYxLCA4ODI2NiwgCi0gICAgODgyNzEsIDg4Mjc2LCA4ODI4MSwgODgyODYsIDg4MjkxLCA4ODI5NiwgODgzMDEsIDg4MzA2LCA4ODMxMSwgODgzMTYsIAotICAgIDg4MzIxLCA4ODMyNiwgODgzMzEsIDg4MzM2LCA4ODM0MSwgODgzNDYsIDg4MzUxLCA4ODM1NiwgODgzNjEsIDg4MzY2LCAKLSAgICA4ODM3MSwgODgzNzYsIDg4MzgxLCA4ODM4NiwgODgzOTEsIDg4Mzk2LCA4ODQwMSwgODg0MDYsIDg4NDExLCA4ODQxNiwgCi0gICAgODg0MjEsIDg4NDI2LCA4ODQzMSwgODg0MzYsIDg4NDQxLCA4ODQ0NiwgODg0NTEsIDg4NDU2LCA4ODQ2MSwgODg0NjYsIAotICAgIDg4NDcxLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NTAxLCA4ODUwNiwgODg1MTEsIDg4NTE2LCAKLSAgICA4ODUyMSwgODg1MjYsIDg4NTMxLCA4ODUzNiwgODg1NDEsIDg4NTQ2LCA4ODU1MSwgODg1NTYsIDg4NTYxLCA4ODU2NiwgCi0gICAgODg1NzEsIDg4NTc2LCA4ODU4MSwgODg1ODYsIDg4NTkxLCA4ODU5NiwgODg2MDEsIDg4NjA2LCA4ODYxMSwgODg2MTYsIAotICAgIDg4NjIxLCA4ODYyNiwgODg2MzEsIDg4NjM2LCA4ODY0MSwgODg2NDYsIDg4NjUxLCA4ODY1NiwgODg2NjEsIDg4NjY2LCAKLSAgICA4ODY3MSwgODg2NzYsIDg4NjgxLCA4ODY4NiwgODg2OTEsIDg4Njk2LCA4ODcwMSwgODg3MDYsIDg4NzExLCA4ODcxNiwgCi0gICAgODg3MjEsIDg4NzI2LCA4ODczMSwgODg3MzYsIDg4NzQxLCA4ODc0NiwgODg3NTEsIDg4NzU2LCA4ODc2MSwgODg3NjYsIAotICAgIDg4NzcxLCA4ODc3NiwgODg3ODEsIDg4Nzg2LCA4ODc5MSwgODg3OTYsIDg4ODAxLCA4ODgwNiwgODg4MTEsIDg4ODE2LCAKLSAgICA4ODgyMSwgODg4MjYsIDg4ODMxLCA4ODgzNiwgODg4NDEsIDg4ODQ2LCA4ODg1MSwgODg4NTYsIDg4ODYxLCA4ODg2NiwgCi0gICAgODg4NzEsIDg4ODc2LCA4ODg4MSwgODg4ODYsIDg4ODkxLCA4ODg5NiwgODg5MDEsIDg4OTA2LCA4ODkxMSwgODg5MTYsIAotICAgIDg4OTIxLCA4ODkyNiwgODg5MzEsIDg4OTM2LCA4ODk0MSwgODg5NDYsIDg4OTUxLCA4ODk1NywgODg5NjIsIDg4OTY3LCAKLSAgICA4ODk3MiwgODg5NzcsIDg4OTgyLCA4ODk4NywgODg5OTIsIDg4OTk4LCA4OTAwMywgODkwMDgsIDg5MDEzLCA4OTAxOCwgCi0gICAgODkwMjMsIDg5MDI4LCA4OTAzMywgODkwMzgsIDg5MDQzLCA4OTA0OCwgODkwNTMsIDg5MDU4LCA4OTA2MywgODkwNjgsIAotICAgIDg5MDczLCA4OTA3OCwgODkwODMsIDg5MDg4LCA4OTA5MywgODkwOTgsIDg5MTAzLCA4OTEwOCwgODkxMTMsIDg5MTE4LCAKLSAgICA4OTEyMywgODkxMjgsIDg5MTMzLCA4OTEzOCwgODkxNDMsIDg5MTQ4LCA4OTE1MywgODkxNTgsIDg5MTY3LCA4OTE3MiwgCi0gICAgODkxODEsIDg5MTg2LCA4OTE5NSwgODkyMDAsIDg5MjA5LCA4OTIxNCwgODkyMjMsIDg5MjI4LCA4OTIzNywgODkyNDIsIAotICAgIDg5MjUxLCA4OTI1NiwgODkyNjUsIDg5MjcwLCA4OTI3NSwgODkyODQsIDg5Mjg4LCA4OTI5NywgODkzMDIsIDg5MzExLCAKLSAgICA4OTMxNiwgODkzMjUsIDg5MzMwLCA4OTMzOSwgODkzNDQsIDg5MzUzLCA4OTM1OCwgODkzNjcsIDg5MzcyLCA4OTM4MSwgCi0gICAgODkzODYsIDg5Mzk1LCA4OTQwMCwgODk0MDksIDg5NDE0LCA4OTQyMywgODk0MjgsIDg5NDMzLCA4OTQzOCwgODk0NDMsIAotICAgIDg5NDQ4LCA4OTQ1MywgODk0NTgsIDg5NDYyLCA4OTQ2NywgODk0NzIsIDg5NDc3LCA4OTQ4MiwgODk0ODcsIDg5NDkyLCAKLSAgICA4OTQ5OCwgODk1MDMsIDg5NTA4LCA4OTUxMywgODk1MTksIDg5NTIzLCA4OTUyOCwgODk1MzQsIDg5NTM5LCA4OTU0NCwgCi0gICAgODk1NDksIDg5NTU0LCA4OTU1OSwgODk1NjQsIDg5NTY5LCA4OTU3NCwgODk1NzksIDg5NTg0LCA4OTU5MCwgODk1OTUsIAotICAgIDg5NjAwLCA4OTYwNSwgODk2MTEsIDg5NjE2LCA4OTYyMSwgODk2MjYsIDg5NjMxLCA4OTYzNywgODk2NDIsIDg5NjQ3LCAKLSAgICA4OTY1MiwgODk2NTcsIDg5NjYyLCA4OTY2OCwgODk2NzMsIDg5Njc4LCA4OTY4MywgODk2ODgsIDg5NjkzLCA4OTY5OCwgCi0gICAgODk3MDMsIDg5NzA4LCA4OTcxMywgODk3MTgsIDg5NzIzLCA4OTcyOCwgODk3MzMsIDg5NzM4LCA4OTc0MywgODk3NDgsIAotICAgIDg5NzUzLCA4OTc1OCwgODk3NjMsIDg5NzY4LCA4OTc3MywgODk3NzgsIDg5NzgzLCA4OTc4OSwgODk3OTUsIDg5ODAxLCAKLSAgICA4OTgwNiwgODk4MTEsIDg5ODE2LCA4OTgyMSwgODk4MjcsIDg5ODMzLCA4OTgzOSwgODk4NDQsIDg5ODQ5LCA4OTg1NCwgCi0gICAgODk4NjAsIDg5ODY1LCA4OTg3MCwgODk4NzUsIDg5ODgwLCA4OTg4NSwgODk4OTAsIDg5ODk1LCA4OTkwMCwgODk5MDUsIAotICAgIDg5OTEwLCA4OTkxNSwgODk5MjAsIDg5OTI1LCA4OTkzMCwgODk5MzUsIDg5OTQwLCA4OTk0NiwgODk5NTIsIDg5OTU4LCAKLSAgICA4OTk2MywgODk5NjgsIDg5OTczLCA4OTk3OCwgODk5ODQsIDg5OTkwLCA4OTk5NiwgOTAwMDEsIDkwMDA2LCA5MDAxMSwgCi0gICAgOTAwMTYsIDkwMDIxLCA5MDAyNiwgOTAwMzEsIDkwMDM2LCA5MDA0MSwgMTc1MzksIDkwMDQ2LCA5MDA1MiwgOTAwNTcsIAotICAgIDkwMDYyLCA5MDA2NywgOTAwNzIsIDkwMDc3LCA5MDA4MywgOTAwODgsIDkwMDkzLCA5MDA5OCwgOTAxMDMsIDkwMTA4LCAKLSAgICA5MDExNCwgOTAxMTksIDkwMTI0LCA5MDEyOSwgOTAxMzQsIDkwMTM5LCA5MDE0NCwgOTAxNDksIDkwMTU0LCA5MDE1OSwgCi0gICAgOTAxNjQsIDkwMTY5LCA5MDE3NCwgOTAxNzksIDkwMTg0LCA5MDE4OSwgOTAxOTQsIDkwMTk5LCA5MDIwNCwgOTAyMDksIAotICAgIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjMwLCA5MDIzNSwgOTAyNDAsIDkwMjQ1LCA5MDI1MCwgOTAyNTUsIDkwMjYwLCAKLSAgICA5MDI2NSwgOTAyNzAsIDkwMjc1LCA5MDI4MCwgOTAyODUsIDkwMjkwLCA5MDI5NSwgOTAzMDAsIDkwMzA1LCA5MDMxMCwgCi0gICAgOTAzMTUsIDkwMzIwLCA5MDMyNSwgOTAzMzAsIDkwMzM1LCA5MDM0MCwgOTAzNDUsIDkwMzUwLCA5MDM1NSwgOTAzNjAsIAotICAgIDkwMzY1LCA5MDM3MCwgOTAzNzUsIDkwMzgwLCA5MDM4NSwgOTAzOTAsIDkwMzk1LCA5MDQwMCwgOTA0MDUsIDkwNDEwLCAKLSAgICA5MDQxNSwgOTA0MjAsIDkwNDI1LCA5MDQzMCwgOTA0MzYsIDkwNDQxLCA5MDQ0NiwgOTA0NTEsIDkwNDU2LCA5MDQ2MSwgCi0gICAgOTA0NjYsIDkwNDcxLCA5MDQ3NiwgOTA0ODEsIDkwNDg2LCA5MDQ5MSwgOTA0OTcsIDkwNTAyLCA5MDUwOCwgOTA1MTMsIAotICAgIDkwNTE4LCA5MDUyMywgOTA1MjgsIDkwNTMzLCA5MDUzOCwgOTA1NDQsIDkwNTQ5LCA5MDU1NCwgOTA1NjAsIDkwNTY1LCAKLSAgICA5MDU3MCwgOTA1NzUsIDkwNTgwLCA5MDU4NSwgOTA1OTEsIDkwNTk3LCA5MDYwMiwgOTA2MDcsIDEzMjExLCA5MDYxMiwgCi0gICAgOTA2MTcsIDkwNjIyLCA5MDYyNywgOTA2MzIsIDkwNjM3LCA5MDY0MiwgOTA2NDcsIDkwNjUyLCA5MDY1NywgOTA2NjIsIAotICAgIDkwNjY3LCA5MDY3MiwgOTA2NzcsIDkwNjgyLCA5MDY4NywgOTA2OTIsIDkwNjk3LCA5MDcwMiwgOTA3MDcsIDkwNzEyLCAKLSAgICA5MDcxNywgOTA3MjIsIDkwNzI3LCA5MDczMiwgOTA3MzcsIDkwNzQyLCA5MDc0NywgOTA3NTIsIDkwNzU3LCA5MDc2MiwgCi0gICAgOTA3NjcsIDkwNzcyLCA5MDc3NywgOTA3ODIsIDkwNzg3LCA5MDc5MiwgOTA3OTcsIDkwODAyLCA5MDgwNywgOTA4MTIsIAotICAgIDkwODE3LCA5MDgyMiwgOTA4MjcsIDkwODMyLCA5MDgzNywgOTA4NDIsIDkwODQ3LCA5MDg1MiwgOTA4NTcsIDkwODYyLCAKLSAgICA5MDg2NywgOTA4NzIsIDkwODc3LCA5MDg4MiwgOTA4ODcsIDkwODkyLCA5MDg5NywgOTA5MDIsIDkwOTA3LCA5MDkxMiwgCi0gICAgOTA5MTcsIDkwOTIyLCA5MDkyNywgOTA5MzIsIDkwOTM4LCA5MDk0MywgOTA5NDgsIDkwOTUzLCA5MDk1OCwgOTA5NjQsIAotICAgIDkwOTY5LCA5MDk3NCwgOTA5NzksIDkwOTg0LCA5MDk4OSwgOTA5OTQsIDkxMDAwLCA5MTAwNSwgOTEwMTAsIDkxMDE1LCAKLSAgICA5MTAyMCwgOTEwMjUsIDkxMDMxLCA5MTAzNiwgOTEwNDEsIDkxMDQ2LCA5MTA1MSwgOTEwNTYsIDkxMDYyLCA5MTA2NywgCi0gICAgOTEwNzIsIDkxMDc3LCA5MTA4MiwgOTEwODcsIDkxMDkzLCA5MTA5OSwgOTExMDQsIDkxMTA5LCA5MTExNCwgOTExMjAsIAotICAgIDkxMTI2LCA5MTEzMiwgOTExMzcsIDkxMTQyLCA5MTE0OCwgOTExNTQsIDkxMTU5LCA5MTE2NSwgOTExNzEsIDkxMTc3LCAKLSAgICA5MTE4MiwgOTExODcsIDkxMTkzLCA5MTE5OCwgOTEyMDQsIDkxMjA5LCA5MTIxNSwgOTEyMjQsIDkxMjI5LCA5MTIzNCwgCi0gICAgOTEyNDAsIDkxMjQ1LCA5MTI1MSwgOTEyNTYsIDkxMjYxLCA5MTI2NiwgOTEyNzEsIDkxMjc2LCA5MTI4MSwgOTEyODYsIAotICAgIDkxMjkxLCA5MTI5NiwgOTEzMDEsIDkxMzA2LCA5MTMxMSwgOTEzMTYsIDkxMzIxLCA5MTMyNiwgOTEzMzEsIDkxMzM2LCAKLSAgICA5MTM0MSwgOTEzNDYsIDkxMzUxLCA5MTM1NiwgOTEzNjEsIDkxMzY2LCA5MTM3MSwgOTEzNzYsIDkxMzgxLCA5MTM4NiwgCi0gICAgOTEzOTEsIDkxMzk2LCA5MTQwMSwgOTE0MDYsIDkxNDEyLCA5MTQxOCwgOTE0MjQsIDkxNDI5LCA5MTQzNCwgOTE0MzksIAotICAgIDkxNDQ0LCA5MTQ0OSwgOTE0NTQsIDkxNDU5LCA5MTQ2NCwgOTE0NjksIDkxNDc0LCA5MTQ3OSwgOTE0ODQsIDkxNDg5LCAKLSAgICA5MTQ5NCwgOTE0OTksIDkxNTA0LCA5MTUwOSwgOTE1MTQsIDkxNTE5LCA5MTUyNCwgOTE1MzAsIDkxNTM2LCA5MTU0MSwgCi0gICAgOTE1NDcsIDkxNTUyLCA5MTU1NywgOTE1NjMsIDkxNTY4LCA5MTU3NCwgOTE1NzksIDkxNTg1LCA5MTU5MCwgOTE1OTYsIAotICAgIDkxNjAxLCA5MTYwNywgOTE2MTIsIDkxNjE3LCA5MTYyMiwgOTE2MjcsIDkxNjMyLCA5MTYzNywgOTE2NDIsIDg3NzIwLCAKLSAgICA4NzcyNiwgODc3MzIsIDg3NzM4LCA5MTY0OCwgODc3NDQsIDg3NzUwLCA5MTY1NCwgODc3NTYsIDg3NzYyLCA4Nzc2OCwgCi0gICAgODc3NzQsIDg3NzgwLCA4Nzc4NiwgODc3OTIsIDg3Nzk4LCA4NzgwNCwgOTE2NjAsIDg3ODEwLCA4NzgxNiwgODc4MjIsIAotICAgIDkxNjY2LCA4NzgyOCwgODc4MzQsIDg3ODQwLCA4Nzg0NiwgOTE2NzIsIDg3ODUyLCA4Nzg1OCwgODc4NjQsIDg3ODg0LCAKLSAgICA5MTY3OCwgOTE2ODQsIDg3ODkwLCA5MTY5MCwgODc4OTYsIDg3OTAyLCA4NzkwOCwgODc5MTQsIDg3OTIwLCAzMTUwLCAKLSAgICAzMTU1LCA5MTY5NiwgOTE3MDEsIDkxNzA0LCA5MTcxMCwgOTE3MTYsIDkxNzIzLCA5MTcyOCwgOTE3MzMsIDIzMzcsIAorICAgIDAsIDAsIDYsIDEwLCAxNCwgMTksIDI3LCAzNCwgNDQsIDQ5LCA1NSwgNjQsIDY2LCA2OSwgODEsIDg5LCAxMDIsIDEwOCwgCisgICAgMTEzLCAxMTksIDEyNCwgMTMyLCAxNDEsIDE0NiwgMTU3LCAxNjIsIDE2NywgMTcwLCAxNzQsIDE4MywgMTg5LCAxOTUsIAorICAgIDIwMCwgMjA3LCAyMTUsIDIyMywgMjI0LCAyMjcsIDIzNSwgMjQ0LCAxNzEsIDI1MCwgMjU2LCAyNjMsIDI3MywgMjgwLCAKKyAgICAyODUsIDI4OCwgMjkzLCAyOTksIDMwMywgMzA2LCAzMTEsIDMxNywgMzIzLCAzMjgsIDMzMywgMzM5LCAzNDUsIDM1NCwgCisgICAgMzYxLCAzNjgsIDM3NywgMzc5LCAzODQsIDM4OSwgMzk3LCAzOTksIDQwNywgNDA4LCA0MTYsIDQxOCwgMzM3LCA0MjUsIAorICAgIDQyOCwgNDMwLCA0MzYsIDQzOCwgNDQ1LCA0NTAsIDQ1NywgNDYyLCA0NjcsIDQ3NCwgNDgyLCA0ODYsIDQ5MiwgNDk3LCAKKyAgICA1MDcsIDUxMiwgNTE5LCA1MjIsIDUzMCwgNTM5LCA1NDMsIDU1MywgNTYwLCA1NjcsIDU3NCwgNTgzLCA1OTAsIDU5MywgCisgICAgNTk5LCA2MDMsIDYwNywgNjE1LCA2MTksIDYzMiwgNjM2LCA2MzcsIDY0NCwgNjUzLCA2NjIsIDY2NSwgNjcxLCA2NzUsIAorICAgIDY3NywgNjg3LCA2OTIsIDcwMCwgNzA0LCA3MDcsIDcxNSwgNzE5LCA3MjQsIDcyOSwgNzM1LCA3NDAsIDc0NCwgNzQ3LCAKKyAgICA3NTUsIDc2NCwgNzczLCA3ODEsIDc4OSwgNzkzLCA3OTksIDgwNywgODE0LCA4MTcsIDgyNywgODMxLCA4NDIsIDg1MSwgCisgICAgODU4LCA4NjEsIDg2OCwgODcwLCA4NzYsIDg4MCwgODg1LCA4ODksIDg5NSwgOTA0LCA5MDksIDkxMywgNTg4LCA5MTYsIAorICAgIDkyMSwgOTMwLCA5MzgsIDk0MywgOTQ2LCA2NzQsIDk1MSwgOTU2LCA5NTksIDk2NSwgOTY5LCA5NzMsIDk3OSwgOTg2LCAKKyAgICA5OTUsIDk5OCwgMTAwNSwgMTAxNCwgMTAyNywgMTAzMSwgMTAzOSwgMTA0MiwgMTA0OCwgMTA1NCwgMTA2MywgMTA3MCwgCisgICAgMTA3MywgMTA4MSwgMTA4OCwgMTA5NSwgMTA5OSwgMTEwMiwgMTExMCwgMTExNCwgMTEyMywgMTEyOSwgMTEzMywgMTEzNiwgCisgICAgMTE0MCwgMjYsIDExNDcsIDExNTYsIDExNjEsIDExNjYsIDExNzIsIDExNzcsIDExODIsIDExODcsIDExOTEsIDExOTYsIAorICAgIDEyMDIsIDEyMDcsIDEyMTIsIDEyMTYsIDEyMjIsIDEyMjcsIDEyMzIsIDEyMzcsIDEyNDEsIDEyNDYsIDEyNTEsIDEyNTYsIAorICAgIDEyNjIsIDEyNjgsIDEyNzQsIDEyNzksIDEyODMsIDEyODgsIDEyOTMsIDEyOTgsIDEzMDIsIDEzMDcsIDEzMTIsIDEzMTcsIAorICAgIDEzMjIsIDExNTcsIDExNjIsIDExNjcsIDExNzMsIDExNzgsIDEzMjYsIDExODgsIDEzMzIsIDEzMzcsIDEzNDIsIDEzNDksIAorICAgIDEzNTMsIDEzNTYsIDEzNjUsIDExOTIsIDEzNjksIDExOTcsIDEyMDMsIDEyMDgsIDEzNzMsIDEzNzgsIDEzODMsIDEzODcsIAorICAgIDEzOTEsIDEzOTcsIDE0MDEsIDEyMTMsIDE0MDQsIDE0MDYsIDEyMjMsIDE0MTEsIDE0MTUsIDEyMjgsIDE0MjEsIDEyMzMsIAorICAgIDE0MjUsIDE0MjksIDEyMzgsIDE0MzMsIDE0MzgsIDE0NDIsIDE0NDUsIDE0NDksIDEyNDIsIDEyNDcsIDE0NTQsIDE0NjAsIAorICAgIDEyNTIsIDE0NzIsIDE0NzgsIDE0ODQsIDE0OTAsIDEyNTcsIDEyNjksIDEyNzUsIDE0OTQsIDE0OTgsIDE1MDIsIDE1MDUsIAorICAgIDEyODAsIDE1MDksIDE1MTEsIDE1MTYsIDE1MjEsIDE1MjcsIDE1MzIsIDE1MzcsIDE1NDEsIDE1NDYsIDE1NTEsIDE1NTYsIAorICAgIDE1NjEsIDE1NjcsIDE1NzIsIDE1NzcsIDE1ODMsIDE1ODksIDE1OTQsIDE1OTgsIDE2MDMsIDE2MDgsIDE2MTMsIDE2MTgsIAorICAgIDE2MjMsIDE2MjcsIDE2MzUsIDE2NDAsIDE2NDQsIDE2NDksIDE2NTQsIDE2NTksIDE2NjQsIDE2NjgsIDE2NzEsIDE2NzgsIAorICAgIDE2ODMsIDE2ODgsIDE2OTMsIDE2OTgsIDE3MDQsIDE3MDksIDE3MTMsIDEyODQsIDE3MTYsIDE3MjEsIDE3MjYsIDEyODksIAorICAgIDE3MzAsIDE3MzQsIDE3NDEsIDEyOTQsIDE3NDgsIDEyOTksIDE3NTIsIDE3NTQsIDE3NTksIDE3NjUsIDEzMDMsIDE3NzAsIAorICAgIDE3NzksIDEzMDgsIDE3ODQsIDE3OTAsIDE3OTUsIDEzMTMsIDE4MDAsIDE4MDUsIDE4MDksIDE4MTIsIDE4MTcsIDE4MjEsIAorICAgIDE4MjUsIDE4MjksIDE4MzIsIDE4MzYsIDEzMTgsIDE4NDEsIDEzMjMsIDE4NDUsIDE4NDcsIDE4NTMsIDE4NTksIDE4NjUsIAorICAgIDE4NzEsIDE4NzcsIDE4ODMsIDE4ODksIDE4OTUsIDE5MDAsIDE5MDYsIDE5MTIsIDE5MTgsIDE5MjQsIDE5MzAsIDE5MzYsIAorICAgIDE5NDIsIDE5NDgsIDE5NTQsIDE5NTksIDE5NjQsIDE5NjksIDE5NzQsIDE5NzksIDE5ODQsIDE5ODksIDE5OTQsIDE5OTksIAorICAgIDIwMDQsIDIwMTAsIDIwMTUsIDIwMjEsIDIwMjYsIDIwMzIsIDIwMzgsIDIwNDMsIDIwNDksIDIwNTUsIDIwNjEsIDIwNjcsIAorICAgIDIwNzIsIDIwNzcsIDIwNzksIDIwODAsIDIwODQsIDIwODgsIDIwOTMsIDIwOTcsIDIxMDEsIDIxMDUsIDIxMTAsIDIxMTQsIAorICAgIDIxMTcsIDIxMjIsIDIxMjYsIDIxMzEsIDIxMzUsIDIxMzksIDIxNDQsIDIxNDgsIDIxNTEsIDIxNTUsIDIxNjEsIDIxNzUsIAorICAgIDIxNzksIDIxODMsIDIxODcsIDIxOTAsIDIxOTUsIDIxOTksIDIyMDMsIDIyMDYsIDIyMTAsIDIyMTUsIDIyMjAsIDIyMjUsIAorICAgIDIyMzAsIDIyMzQsIDIyMzgsIDIyNDIsIDIyNDYsIDIyNTEsIDIyNTUsIDIyNjAsIDIyNjQsIDIyNjksIDIyNzUsIDIyODIsIAorICAgIDIyODgsIDIyOTMsIDIyOTgsIDIzMDMsIDIzMDksIDIzMTQsIDIzMjAsIDIzMjUsIDIzMjgsIDIzMzAsIDExNzQsIDIzMzQsIAorICAgIDIzNDEsIDIzNDksIDIzNTksIDIzNjgsIDIzODIsIDIzODYsIDIzOTAsIDIzOTUsIDI0MDgsIDI0MTYsIDI0MjAsIDI0MjUsIAorICAgIDI0MjksIDI0MzIsIDI0MzYsIDI0NDAsIDI0NDUsIDI0NTAsIDI0NTUsIDI0NTksIDI0NjIsIDI0NjYsIDI0NzMsIDI0ODAsIAorICAgIDI0ODYsIDI0OTEsIDI0OTYsIDI1MDIsIDI1MDgsIDI1MTMsIDI1MTYsIDE3NTYsIDI1MTgsIDI1MjQsIDI1MjgsIDI1MzMsIAorICAgIDI1MzcsIDI1NDEsIDE2NzQsIDE3NjcsIDI1NDYsIDI1NTAsIDI1NTMsIDI1NTgsIDI1NjMsIDI1NjgsIDI1NzMsIDI1NzcsIAorICAgIDI1ODQsIDI1ODksIDI1OTIsIDI1OTYsIDI2MDMsIDI2MDksIDI2MTMsIDI2MTcsIDI2MjEsIDI2MjYsIDI2MzMsIDI2MzgsIAorICAgIDI2NDMsIDI2NTAsIDI2NTYsIDI2NjIsIDI2NjgsIDI2ODIsIDI2OTksIDI3MTQsIDI3MjksIDI3MzgsIDI3NDMsIDI3NDcsIAorICAgIDI3NTIsIDI3NTcsIDI3NjEsIDI3NzMsIDI3ODAsIDI3ODYsIDIyNzgsIDI3OTIsIDI3OTksIDI4MDUsIDI4MDksIDI4MTIsIAorICAgIDI4MTksIDI4MjUsIDI4MzAsIDI4MzQsIDI4MzksIDI4NDMsIDI4NDcsIDIxMDIsIDI4NTEsIDI4NTYsIDI4NjEsIDI4NjUsIAorICAgIDI4NzAsIDI4NzgsIDI4ODIsIDI4ODcsIDI4OTEsIDI4OTUsIDI4OTksIDI5MDQsIDI5MDksIDI5MTQsIDI5MTgsIDI5MjMsIAorICAgIDI5MjgsIDI5MzIsIDI5MzcsIDI5NDEsIDI5NDQsIDI5NDgsIDI5NTIsIDI5NjAsIDI5NjUsIDI5NjksIDI5NzMsIDI5NzksIAorICAgIDI5ODgsIDI5OTIsIDI5OTYsIDMwMDIsIDMwMDcsIDMwMTQsIDMwMTgsIDMwMjgsIDMwMzIsIDMwMzYsIDMwNDEsIDMwNDUsIAorICAgIDMwNTAsIDMwNTYsIDMwNjEsIDMwNjUsIDMwNjksIDMwNzMsIDI0NzYsIDMwODEsIDMwODYsIDMwOTIsIDMwOTcsIDMxMDEsIAorICAgIDMxMDYsIDMxMTEsIDMxMTUsIDMxMjEsIDMxMjYsIDIxMDYsIDMxMzIsIDMxMzgsIDMxNDMsIDMxNDgsIDMxNTMsIDMxNTgsIAorICAgIDMxNjMsIDMxNjgsIDMxNzMsIDMxNzgsIDMxODMsIDMxODksIDMxOTQsIDExODksIDEwMSwgMzIwMCwgMzIwNCwgMzIwOCwgCisgICAgMzIxMiwgMzIxNywgMzIyMSwgMzIyNSwgMzIzMSwgMzIzNiwgMzI0MCwgMzI0NCwgMzI0OSwgMzI1NCwgMzI1OCwgMzI2MywgCisgICAgMzI2NywgMzI3MCwgMzI3NCwgMzI3OSwgMzI4MywgMzI4OCwgMzI5MiwgMzI5NSwgMzI5OSwgMzMwMywgMzMwOCwgMzMxMiwgCisgICAgMzMxNSwgMzMyOCwgMzMzMiwgMzMzNiwgMzM0MCwgMzM0NSwgMzM0OSwgMzM1MywgMzM1NiwgMzM2MCwgMzM2NCwgMzM2OSwgCisgICAgMzM3MywgMzM3OCwgMzM4MywgMzM4OCwgMzM5MiwgMzM5NywgMzQwMCwgMzQwMywgMzQwOCwgMzQxNCwgMzQxOCwgMzQyMiwgCisgICAgMzQyNSwgMzQzMCwgMzQzNCwgMzQzOSwgMzQ0MywgMzQ0NywgMzQ1MCwgMzQ1NiwgMzQ2MSwgMzQ2NiwgMzQ3MiwgMzQ3NywgCisgICAgMzQ4MiwgMzQ4OCwgMzQ5NCwgMzQ5OSwgMzUwNCwgMzUwOSwgMzUxNCwgMTA5NywgNTkyLCAzNTE3LCAzNTIwLCAzNTI1LCAKKyAgICAzNTI5LCAzNTMzLCAzNTM3LCAzNTQxLCAzNTQ0LCAzNTQ4LCAzNTUzLCAzNTU4LCAzNTYyLCAzNTY3LCAzNTcxLCAzNTc2LCAKKyAgICAzNTgwLCAzNTg0LCAzNTg4LCAzNTk0LCAzNjAwLCAzNjAzLCAzNjA2LCAxNTAsIDM2MTIsIDM2MTcsIDM2MjYsIDM2MzQsIAorICAgIDM2NDMsIDM2NTMsIDM2NjAsIDM2NjYsIDM2NzMsIDM2NzgsIDM2ODIsIDM2ODYsIDM2OTQsIDM3MDEsIDM3MDYsIDM3MTMsIAorICAgIDM3MTgsIDM3MjIsIDM3MzIsIDM3MzYsIDM3NDAsIDM3NDUsIDM3NTAsIDM3NjAsIDIxMTgsIDM3NjUsIDM3NjksIDM3NzIsIAorICAgIDM3NzgsIDM3ODMsIDM3ODksIDM3OTUsIDM4MDAsIDM4MDcsIDM4MTEsIDM4MTUsIDYxNiwgNzA1LCAxMzUwLCAzODE5LCAKKyAgICAzODI2LCAzODMzLCAzODM5LCAzODQ0LCAzODUxLCAzODU4LCAzODYzLCAzODY5LCAzODc1LCAzODgwLCAzODg0LCAzODkwLCAKKyAgICAzODk3LCAzOTAyLCAzOTA2LCAzOTEwLCAyMTI3LCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCA3NTksIDM5NDQsIDM5NTIsIAorICAgIDM5NjMsIDM5NjcsIDM5NzcsIDIxMzIsIDM5ODMsIDM5ODgsIDQwMDMsIDQwMDksIDQwMTYsIDQwMjYsIDQwMzIsIDQwMzcsIAorICAgIDQwNDMsIDQwNDksIDQwNTIsIDQwNTUsIDQwNTksIDQwNjQsIDQwNzEsIDQwODAsIDQwODUsIDQwODksIDQwOTMsIDQwOTcsIAorICAgIDQxMDEsIDQxMDYsIDQxMTIsIDQxMjMsIDQxMjcsIDMyNzUsIDQxMzIsIDQxNDQsIDQxNTAsIDQxNTgsIDQxNjIsIDQxNjcsIAorICAgIDE1NDMsIDQxNzQsIDQxNzcsIDQxODAsIDQxODQsIDQxODcsIDQxOTMsIDQxOTcsIDQyMTEsIDQyMTUsIDQyMTgsIDQyMjIsIAorICAgIDQyMjgsIDQyMzQsIDQyMzksIDQyNDMsIDQyNDcsIDQyNTMsIDQyNjQsIDQyNzAsIDQyNzUsIDQyODEsIDQyODUsIDQyOTMsIAorICAgIDQzMDUsIDQzMTUsIDQzMjEsIDQzMjYsIDQzMzUsIDQzNDMsIDQzNTAsIDQzNTYsIDQzNjIsIDQzNjYsIDQzNzIsIDQzODEsIAorICAgIDQzOTAsIDQzOTQsIDQ0MDMsIDQ0MDgsIDQ0MTIsIDQ0MTcsIDQ0MjEsIDQ0MjksIDQ0MzUsIDQ0MzksIDQ0NDQsIDQ0NDgsIAorICAgIDQ0NTQsIDIxNDAsIDEzNjYsIDQ0NjAsIDQ0NjUsIDQ0NzEsIDQ0NzYsIDQ0ODEsIDQ0ODYsIDQ0OTEsIDQ0OTYsIDQ1MDEsIAorICAgIDQ1MDcsIDQ1MTIsIDQ1MTgsIDQ1MjMsIDQ1MjgsIDQ1MzMsIDQ1MzksIDQ1NDQsIDQ1NDksIDQ1NTQsIDQ1NTksIDQ1NjUsIAorICAgIDQ1NzAsIDQ1NzYsIDQ1ODEsIDQ1ODYsIDQ1OTEsIDQ1OTYsIDQ2MDEsIDQ2MDYsIDQ2MTIsIDQ2MTcsIDQ2MjIsIDI5NywgCisgICAgMzMyLCA0NjI3LCA0NjMzLCA0NjM3LCA0NjQxLCA0NjQ2LCA0NjUwLCA0NjU0LCA0NjU3LCA0NjYxLCA0NjY1LCA0NjY5LCAKKyAgICA0NjczLCA0Njc3LCA0NjgyLCA0Njg2LCA0NjkwLCA0Njk2LCA0NDU3LCA0NzAxLCA0NzA1LCA0NzA4LCA0NzEzLCA0NzE4LCAKKyAgICA0NzIzLCA0NzI4LCA0NzMzLCA0NzM4LCA0NzQzLCA0NzQ4LCA0NzUzLCA0NzU4LCA0NzYyLCA0NzY3LCA0NzcyLCA0Nzc3LCAKKyAgICA0NzgyLCA0Nzg3LCA0NzkyLCA0Nzk3LCA0ODAyLCA0ODA3LCA0ODEyLCA0ODE2LCA0ODIxLCA0ODI2LCA0ODMxLCA0ODM2LCAKKyAgICA0ODQxLCA0ODQ2LCA0ODUxLCA0ODU2LCA0ODYxLCA0ODY2LCA0ODcwLCA0ODc1LCA0ODgwLCA0ODg1LCA0ODkwLCA0ODk1LCAKKyAgICA0OTAwLCA0OTA1LCA0OTEwLCA0OTE1LCA0OTIwLCA0OTI0LCA0OTI5LCA0OTM0LCA0OTM5LCA0OTQ0LCA0OTQ5LCA0OTU0LCAKKyAgICA0OTU5LCA0OTY0LCA0OTY5LCA0OTc0LCA0OTc4LCA0OTgzLCA0OTg4LCA0OTkzLCA0OTk4LCA1MDAzLCA1MDA4LCA1MDEzLCAKKyAgICA1MDE4LCA1MDIzLCA1MDI4LCA1MDMyLCA1MDM3LCA1MDQyLCA1MDQ3LCA1MDUyLCA1MDU3LCA1MDYyLCA1MDY3LCA1MDcyLCAKKyAgICA1MDc3LCA1MDgyLCA1MDg2LCA1MDkxLCA1MDk2LCA1MTAxLCA1MTA2LCA1MTEyLCA1MTE4LCA1MTI0LCA1MTMwLCA1MTM2LCAKKyAgICA1MTQyLCA1MTQ4LCA1MTUzLCA1MTU5LCA1MTY1LCA1MTcxLCA1MTc3LCA1MTgzLCA1MTg5LCA1MTk1LCA1MjAxLCA1MjA3LCAKKyAgICA1MjEzLCA1MjE4LCA1MjI0LCA1MjMwLCA1MjM2LCA1MjQyLCA1MjQ4LCA1MjU0LCA1MjYwLCA1MjY2LCA1MjcyLCA1Mjc4LCAKKyAgICA1MjgzLCA1Mjg5LCA1Mjk1LCA1MzAxLCA1MzA3LCA1MzEzLCA1MzE5LCA1MzI1LCA1MzMxLCA1MzM3LCA1MzQzLCA1MzQ4LCAKKyAgICA1MzU0LCA1MzYwLCA1MzY2LCA1MzcyLCA1Mzc4LCA1Mzg0LCA1MzkwLCA1Mzk2LCA1NDAyLCA1NDA4LCA1NDEzLCA1NDE5LCAKKyAgICA1NDI1LCA1NDMxLCA1NDM3LCA1NDQzLCA1NDQ5LCA1NDU1LCA1NDYxLCA1NDY3LCA1NDczLCA1NDc4LCA1NDgyLCA1NDg4LCAKKyAgICA1NDk0LCA1NTAwLCA1NTA2LCA1NTEyLCA1NTE4LCA1NTI0LCA1NTMwLCA1NTM2LCA1NTQyLCA1NTQ3LCA1NTUzLCA1NTU5LCAKKyAgICA1NTY1LCA1NTcxLCA1NTc3LCA1NTgzLCA1NTg5LCA1NTk1LCA1NjAxLCA1NjA3LCA1NjEyLCA1NjE4LCA1NjI0LCA1NjMwLCAKKyAgICA1NjM2LCA1NjQyLCA1NjQ4LCA1NjU0LCA1NjYwLCA1NjY2LCA1NjcyLCA1Njc3LCA1NjgzLCA1Njg5LCA1Njk1LCA1NzAxLCAKKyAgICA1NzA3LCA1NzEzLCA1NzE5LCA1NzI1LCA1NzMxLCA1NzM3LCA1NzQyLCA1NzQ4LCA1NzU0LCA1NzYwLCA1NzY2LCA1NzcyLCAKKyAgICA1Nzc4LCA1Nzg0LCA1NzkwLCA1Nzk2LCA1ODAyLCA1ODA3LCA1ODEzLCA1ODE5LCA1ODI1LCA1ODMxLCA1ODM3LCA1ODQzLCAKKyAgICA1ODQ5LCA1ODU1LCA1ODYxLCA1ODY3LCA1ODcyLCA1ODc4LCA1ODg0LCA1ODkwLCA1ODk2LCA1OTAyLCA1OTA4LCA1OTE0LCAKKyAgICA1OTIwLCA1OTI2LCA1OTMyLCA1OTM3LCA1OTQzLCA1OTQ5LCA1OTU1LCA1OTYxLCA1OTY3LCA1OTczLCA1OTc5LCA1OTg1LCAKKyAgICA1OTkxLCA1OTk3LCA2MDAyLCA2MDA4LCA2MDE0LCA2MDIwLCA2MDI2LCA2MDMyLCA2MDM4LCA2MDQ0LCA2MDUwLCA2MDU2LCAKKyAgICA2MDYyLCA2MDY3LCA2MDczLCA2MDc5LCA2MDg1LCA2MDkxLCA2MDk3LCA2MTAzLCA2MTA5LCA2MTE1LCA2MTIxLCA2MTI3LCAKKyAgICA2MTMyLCA2MTM2LCA2MTM5LCA2MTQ2LCA2MTUwLCA2MTYzLCA2MTY3LCA2MTcxLCA2MTc1LCA2MTc4LCA2MTgyLCA2MTg3LCAKKyAgICA2MTkxLCA2MTk1LCA2MjAxLCA2MjA4LCA2MjE5LCA2MjI3LCA2MjM0LCA2MjM4LCA2MjQ2LCA2MjU1LCA2MjYxLCA2MjY1LCAKKyAgICA2Mjc3LCA2MjgyLCA2Mjg1LCA2MjkwLCA2Mjk0LCA2MzA0LCA2MzEyLCA2MzIwLCA2MzI2LCA2MzMwLCA2MzQwLCA2MzUwLCAKKyAgICA2MzU4LCA2MzY1LCA2MzcyLCA2Mzc4LCA2Mzg0LCA2MzkxLCA2Mzk1LCA2NDAyLCA2NDEyLCA2NDIyLCA2NDMwLCA2NDM3LCAKKyAgICA2NDQyLCA2NDQ2LCA2NDUwLCA2NDU4LCA2NDYyLCA2NDY3LCA2NDc0LCA2NDgyLCA2NDg3LCA2NDkxLCA2NDk2LCA2NTAwLCAKKyAgICA2NTA3LCA2NTEyLCA2NTI2LCA2NTMxLCA2NTM2LCA2NTQzLCAzNTMwLCA2NTUyLCA2NTU2LCA2NTYxLCA2NTY1LCA2NTY5LCAKKyAgICA2NTcyLCA2NTc3LCA2NTgyLCA2NTkxLCA2NTk3LCA2NjAzLCA2NjA5LCA2NjEzLCA2NjI0LCA2NjM0LCA2NjQ5LCA2NjY0LCAKKyAgICA2Njc5LCA2Njk0LCA2NzA5LCA2NzI0LCA2NzM5LCA2NzU0LCA2NzY5LCA2Nzg0LCA2Nzk5LCA2ODE0LCA2ODI5LCA2ODQ0LCAKKyAgICA2ODU5LCA2ODc0LCA2ODg5LCA2OTA0LCA2OTE5LCA2OTM0LCA2OTQ5LCA2OTY0LCA2OTc5LCA2OTk0LCA3MDA5LCA3MDI0LCAKKyAgICA3MDM5LCA3MDU0LCA3MDY5LCA3MDg0LCA3MDk5LCA3MTE0LCA3MTI5LCA3MTQ0LCA3MTU5LCA3MTc0LCA3MTg5LCA3MjA0LCAKKyAgICA3MjE5LCA3MjM0LCA3MjQ5LCA3MjY0LCA3Mjc5LCA3Mjk0LCA3MzA5LCA3MzI0LCA3MzM5LCA3MzU0LCA3MzY5LCA3Mzc4LCAKKyAgICA3Mzg3LCA3MzkyLCA3Mzk4LCA3NDA4LCA3NDEyLCA3NDE2LCA3NDIxLCA3NDI2LCA3NDM0LCA3NDM4LCA3NDQxLCA3NDQ1LCAKKyAgICAzMDIzLCA3NDQ4LCA3NDUzLCAzMzYsIDUxMCwgNzQ1OSwgNzQ2NywgNzQ3MSwgNzQ3NSwgNzQ3OCwgNzQ4MiwgNzQ4OCwgCisgICAgNzQ5MiwgNzUwMCwgNzUwNiwgNzUxMSwgNzUxOCwgNzUyNiwgNzUzMywgNzUzOSwgNzU0NCwgNzU1MSwgNzU1NywgNzU2NSwgCisgICAgNzU2OSwgNzU3NCwgNzU4NiwgNzU5NywgNzYwNCwgNzYwOCwgNzYxMiwgNzYxNiwgNzYxOSwgNzYyNSwgMzMwMCwgNzYyOSwgCisgICAgNzYzNSwgNzY0MCwgNzY0NSwgNzY1MCwgNzY1NiwgNzY2MSwgNzY2NiwgNzY3MSwgNzY3NiwgNzY4MiwgNzY4NywgNzY5MiwgCisgICAgNzY5OCwgNzcwMywgNzcwOSwgNzcxNCwgNzcyMCwgNzcyNSwgNzczMSwgNzczNiwgNzc0MSwgNzc0NiwgNzc1MSwgNzc1NiwgCisgICAgNzc2MiwgNzc2NywgNzc3MiwgNzc3NywgNzc4MywgNzc4OSwgNzc5NSwgNzgwMSwgNzgwNywgNzgxMywgNzgxOSwgNzgyNSwgCisgICAgNzgzMSwgNzgzNywgNzg0MywgNzg0OSwgNzg1NCwgNzg1OSwgNzg2NCwgNzg2OSwgNzg3NCwgNzg3OSwgNzg4NCwgNzg4OSwgCisgICAgNzg5NSwgNzkwMSwgNzkwNiwgNzkxMiwgNzkxOCwgNzkyNCwgNzkyOSwgNzkzNCwgNzkzOSwgNzk0NCwgNzk1MCwgNzk1NiwgCisgICAgNzk2MSwgNzk2NiwgNzk3MSwgNzk3NiwgNzk4MSwgNzk4NywgNzk5MiwgNzk5OCwgODAwNCwgODAxMCwgODAxNiwgODAyMiwgCisgICAgODAyOCwgODAzNCwgODA0MCwgODA0NiwgMjE0OSwgNzQ3NywgODA1MSwgODA1NSwgODA1OSwgODA2MiwgODA2OSwgODA3MiwgCisgICAgODA3NiwgODA4NCwgODA4OSwgODA5NCwgODA4NSwgODA5OSwgMjE3NiwgODEwMywgODEwOSwgODExNSwgODEyMCwgODEyNSwgCisgICAgODEzMiwgODE0MCwgODE0NSwgODE0OSwgODE1MiwgODE1NiwgODE2MiwgODE2OCwgODE3MiwgMjE4NCwgNTQxLCA4MTc1LCAKKyAgICA4MTc5LCA4MTg0LCA4MTkwLCA4MTk1LCA4MTk5LCA4MjAyLCA4MjA2LCA4MjEyLCA4MjE3LCA4MjIxLCA4MjI4LCA4MjMyLCAKKyAgICA4MjM2LCA4MjQwLCA4ODIsIDk4NCwgODI0MywgODI1MSwgODI1OCwgODI2NCwgODI3MSwgODI3OSwgODI4NiwgODI5NywgCisgICAgODMwNCwgODMxMCwgODMxNSwgODMyNywgMTIwOSwgMTM3NCwgMTM3OSwgODMzOCwgMTM4NCwgODM0MiwgODM0NiwgODM1NSwgCisgICAgODM2MywgODM2NywgODM3NiwgODM4MiwgODM4NywgODM5MSwgODM5NywgODQwMiwgODQxMCwgODQxNywgMjczNCwgODQyNCwgCisgICAgODQyOCwgODQzNywgODQ0NiwgODQ1NSwgODQ2NCwgODQ3MCwgODQ3NSwgODQ4MCwgODQ5MSwgODUwMCwgODUxMiwgODUxNywgCisgICAgODUyNSwgMjIzNSwgODUyOSwgODUzMSwgODUzNiwgODU0MCwgODU0OSwgODU1NywgMTM4OCwgMTY1LCAzNTcyLCAzNTc3LCAKKyAgICA4NTYzLCA4NTY3LCA4NTc2LCA4NTgyLCA4NTg3LCA4NTkwLCA4NTk5LCAzNTgxLCA4NjA1LCAyNzI2LCA4NjA5LCA4NjE3LCAKKyAgICA4NjIxLCA4NjI1LCA4NjI5LCAyMjUyLCA4NjMzLCA4NjM4LCA4NjQ1LCA4NjUxLCA4NjU3LCA4NjYwLCA4NjYyLCA4NjY1LCAKKyAgICA4NjczLCA4NjgxLCA4Njg5LCA4NjkyLCA4Njk3LCAyMjY1LCA4NzAyLCA4MDk2LCA4NzA1LCA4NzA3LCA4NzEyLCA4NzE3LCAKKyAgICA4NzIyLCA4NzI3LCA4NzMyLCA4NzM3LCA4NzQyLCA4NzQ3LCA4NzUyLCA4NzU3LCA4NzYzLCA4NzY4LCA4NzczLCA4Nzc4LCAKKyAgICA4Nzg0LCA4Nzg5LCA4Nzk0LCA4Nzk5LCA4ODA0LCA4ODA5LCA4ODE0LCA4ODIwLCA4ODI1LCA4ODMwLCA4ODM1LCA4ODQwLCAKKyAgICA4ODQ1LCA4ODUwLCA4ODU1LCA4ODYwLCA4ODY1LCA4ODcwLCA4ODc1LCA4ODgwLCA4ODg1LCA4ODkwLCA4ODk1LCA4OTAwLCAKKyAgICA4OTA1LCA4OTExLCA4OTE3LCA4OTIyLCA4OTI3LCA4OTMyLCA4OTM3LCA4OTQyLCAyMjc2LCAyMjgzLCAyMjg5LCA4OTQ3LCAKKyAgICA4OTU1LCA4OTYxLCA4OTY5LCAyMzE1LCAyMzIxLCA4OTc3LCA4OTgxLCA4OTg2LCA4OTkwLCA4OTk0LCA4OTk4LCA5MDAzLCAKKyAgICA5MDA3LCA5MDEyLCA5MDE2LCA5MDE5LCA5MDIyLCA5MDI4LCA5MDM1LCA5MDQxLCA5MDQ4LCA5MDU0LCA5MDYxLCA5MDY3LCAKKyAgICA5MDc0LCA5MDgwLCA5MDg2LCA5MDk1LCA5MTAxLCA5MTA1LCA5MTA5LCA5MTEzLCA5MTE3LCA5MTIyLCA5MTI2LCA5MTMxLCAKKyAgICA5MTM1LCA5MTQxLCA5MTQ2LCA5MTUzLCA5MTY0LCA5MTcyLCA5MTgyLCA5MTg4LCA5MTk4LCA5MjA3LCA5MjE0LCA5MjE5LCAKKyAgICA5MjIzLCA5MjM0LCA5MjQ0LCA5MjU3LCA5MjY4LCA5MjgxLCA5MjkyLCA5MzA0LCA5MzE2LCA5MzI4LCA5MzQxLCA5MzU0LCAKKyAgICA5MzYxLCA5MzY3LCA5Mzc4LCA5Mzg4LCA5NDAyLCA5NDA5LCA5NDE1LCA5NDI0LCA5NDMyLCA5NDM2LCA5NDQxLCA5NDQ1LCAKKyAgICA5NDUyLCA5NDYwLCA5NDY3LCA5NDcxLCA5NDc3LCA5NDgxLCA5NDg3LCA5NDk3LCA5NTAxLCA5NTA2LCA5NTExLCA5NTE4LCAKKyAgICA5NTI0LCA5NTM0LCA4MjY2LCA5NTQwLCA5NTQ0LCA5NTUxLCA5NTU3LCA5NTY0LCA5NTcxLCA5ODMsIDk1NzUsIDk1NzksIAorICAgIDk1ODQsIDk1ODksIDk1OTQsIDk1OTgsIDk2MDQsIDk2MTIsIDk2MTksIDk2MjUsIDk2MjksIDk2MzIsIDk2MzgsIDk2NDgsIAorICAgIDk2NTIsIDk2NTgsIDk2NjMsIDk2NjcsIDk2NzEsIDk2NzcsIDk2ODMsIDIxNzIsIDk2ODgsIDk2OTAsIDk2OTUsIDk3MDMsIAorICAgIDk3MTIsIDk3MTYsIDk3MjIsIDk3MjcsIDk3MzIsIDk3MzcsIDk3NDIsIDk3NDgsIDk3NTMsIDk3NTgsIDQyNDksIDk3NjMsIAorICAgIDk3NjgsIDk3NzIsIDk3NzgsIDk3ODMsIDk3ODksIDk3OTQsIDk3OTksIDk4MDUsIDk4MTAsIDk3MTcsIDk4MTYsIDk4MjAsIAorICAgIDk4MjcsIDk4MzMsIDk4MzgsIDk4NDIsIDY1MjIsIDk4NDcsIDk4NTYsIDk4NjEsIDk4NjYsIDg2NDEsIDg2NDgsIDk4NzEsIAorICAgIDI5MDEsIDk4NzUsIDk4ODAsIDk4ODUsIDk4OTAsIDk3MjgsIDk4OTQsIDk4OTksIDk5MDQsIDk3MzMsIDk5MDgsIDk3MzgsIAorICAgIDk5MTMsIDk5MjAsIDk5MjcsIDk5MzMsIDk5NDAsIDk5NDYsIDk5NTIsIDk5NTcsIDk5NjQsIDk5NjksIDk5NzQsIDk5NzksIAorICAgIDk5ODUsIDk3NDMsIDk3NDksIDk5OTEsIDk5OTcsIDEwMDAyLCAxMDAwNywgMTAwMTUsIDk3NTQsIDEwMDIwLCAxMTEyLCAKKyAgICAxMDAyMywgMTAwMzEsIDEwMDM3LCAxMDA0MywgMTAwNTIsIDEwMDYwLCAxMDA2OCwgMTAwNzYsIDEwMDg0LCAxMDA5MiwgCisgICAgMTAxMDAsIDEwMTA4LCAxMDExNiwgMTAxMjUsIDEwMTM0LCAxMDE0MiwgMTAxNTEsIDEwMTYwLCAxMDE2OSwgMTAxNzgsIAorICAgIDEwMTg3LCAxMDE5NiwgMTAyMDUsIDEwMjE0LCAxMDIyMywgMTAyMzIsIDEwMjQwLCAxMDI0NSwgMTAyNTEsIDEwMjU5LCAKKyAgICAxMDI2NiwgMTAyODEsIDEwMjk4LCAxMDMxNywgMTAzMjYsIDEwMzM0LCAxMDM0OSwgMTAzNjAsIDEwMzY4LCAxMDM3OCwgCisgICAgMTAzODgsIDEwMzk2LCAxMDQwMiwgMTA0MTQsIDEwNDIzLCAxMDQzMSwgMTA0MzgsIDEwNDQ1LCAxMDQ1MiwgMTA0NTgsIAorICAgIDEwNDYzLCAxMDQ3MywgMTA0ODEsIDEwNDkxLCAxMDQ5OCwgMTA1MDgsIDEwNTE4LCAxMDUyOCwgMTA1MzYsIDEwNTQzLCAKKyAgICAxMDU1MiwgMTA1NjIsIDEwNTc2LCAxMDU5MSwgMTA2MDAsIDEwNjA4LCAxMDYxMywgMTA2MTcsIDEwNjI2LCAxMDYzMiwgCisgICAgMTA2MzcsIDEwNjQ3LCAxMDY1NywgMTA2NjcsIDEwNjcyLCAxMDY3NiwgMTA2ODUsIDEwNjkwLCAxMDcwNiwgMTA3MjMsIAorICAgIDEwNzMzLCAxMDc0NCwgMTA3NTcsIDEwNzY1LCAxMDc3OCwgMTA3OTAsIDEwNzk4LCAxMDgwMywgMTA4MDcsIDEwODEzLCAKKyAgICAxMDgxOCwgMTA4MjYsIDEwODM0LCAxMDg0MSwgMTA4NDYsIDEwODU0LCAxMDg2NCwgMTA4NzAsIDEwODc0LCAxMDg3NywgCisgICAgMTA4ODEsIDEwODg3LCAxMDg5NCwgMTA4OTgsIDEwOTA2LCAxMDkxNSwgMTA5MjMsIDEwOTMwLCAxMDkzNSwgMTA5NDAsIAorICAgIDEwOTQ0LCAxMDk0OCwgMTA5NTYsIDEwOTcxLCAxMDk4NywgMTA5OTMsIDExMDAxLCAxMTAxMCwgMTEwMTgsIDExMDI0LCAKKyAgICAxMTAyOCwgMTEwMzUsIDExMDQ2LCAxMTA1MCwgMTEwNTMsIDExMDU5LCA5NzU5LCAxMTA2NCwgMTEwNzAsIDExMDc3LCAKKyAgICAxMTA4MywgMTEwODgsIDExMDk1LCAxMTEwMiwgMTExMDksIDExMTE2LCAxMTEyMywgMTExMzAsIDExMTM3LCAxMTE0NCwgCisgICAgMTExNDksIDEwMjk0LCAxMTE1NCwgMTExNjAsIDExMTY3LCAxMTE3NCwgMTExNzksIDExMTg2LCAxMTE5NSwgMTExOTksIAorICAgIDExMjExLCA4Njc5LCAxMTIxNSwgMTEyMTgsIDExMjIyLCAxMTIyNiwgMTEyMzAsIDExMjM0LCAxMTI0MCwgMTEyNDYsIAorICAgIDExMjUxLCAxMTI1NywgMTEyNjIsIDExMjY3LCAxMTI3MywgMTEyNzgsIDExMjgzLCA5NTE0LCAxMTI4OCwgMTEyOTIsIAorICAgIDExMjk2LCAxMTMwMCwgMTEzMDUsIDExMzEwLCAxMTMxNSwgMTEzMjMsIDExMzI5LCAxMTMzNCwgMTEzMzgsIDExMzQyLCAKKyAgICAxMTM0OSwgMTEzNTQsIDExMzYyLCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MSwgMTEzODcsIDExMzk0LCAxMTM5OCwgCisgICAgMTE0MDEsIDExNDA2LCAxMTQxMCwgNDI4OCwgMTE0MTYsIDExNDI1LCA0NiwgMTE0MzMsIDExNDM5LCAxMTQ0NCwgMTE0NDksIAorICAgIDExNDU3LCAxMTQ2NCwgMTE0NjksIDk1MjksIDExNDc1LCAxMTQ4MSwgMTE0ODYsIDExNDkwLCAxMTQ5MywgMTE1MDgsIAorICAgIDExNTI3LCAxMTUzOSwgMTE1NTIsIDExNTY1LCAxMTU3OCwgMTE1OTIsIDExNjA1LCAxMTYyMCwgMTE2MjcsIDk3NjQsIAorICAgIDExNjMzLCAxMTY0NywgMTE2NTIsIDExNjU4LCAxMTY2MywgMTE2NzEsIDExNjc2LCA4NDMzLCAxMTY4MSwgMTE2ODQsIAorICAgIDExNjkyLCAxMTY5OSwgMTE3MDQsIDExNzA4LCAxMTcxNCwgMjkwNiwgMTAzNzYsIDExNzE4LCAxMTcyMiwgMTE3MjgsIAorICAgIDExNzM0LCAxMTczOSwgMTE3NDUsIDExNzUwLCA5NzczLCAxMTc1NiwgMTE3NjIsIDExNzY3LCAxMTc3MiwgMTE3ODAsIAorICAgIDExNzg2LCAxMTc5OSwgMTE4MDcsIDExODE0LCAxMTgyMCwgOTc3OSwgMTE4MjYsIDExODM0LCAxMTg0MiwgMTE4NDksIAorICAgIDExODYyLCAxMTg3NSwgMTE4ODcsIDExODk3LCAxMTkwOSwgMTE5MTcsIDExOTI0LCAxMTkzNiwgMTE5NDMsIDExOTUzLCAKKyAgICAxMTk2MiwgMTE5NzEsIDExOTc5LCAxMTk4NiwgMTE5OTEsIDExOTk3LCA5Nzg0LCAxMjAwMiwgMTIwMDgsIDEyMDEzLCAKKyAgICAxMjAxOCwgOTc5MCwgMTIwMjMsIDEyMDI2LCAxMjAzMywgMTIwMzksIDEyMDUyLCA5MTU3LCAxMjA2MywgMTIwNjksIAorICAgIDEyMDc4LCAxMjA4NiwgMTIwOTMsIDEyMDk5LCAxMjExMCwgMTIxMTYsIDEyMTIxLCAzODM1LCAxMjEyOSwgMTIxMzQsIAorICAgIDExNTAwLCAxMjE0MCwgMTIxNDcsIDEyMTUyLCA5Nzk1LCAxMjE1OCwgMTIxNjMsIDEyMTcwLCAxMjE3NiwgMTIxODIsIAorICAgIDEyMTg3LCAxMjE5NSwgMTIyMDMsIDEyMjEwLCAxMjIxNCwgMTIyMjYsIDEyMjQwLCAxMjI1MCwgMTIyNTUsIDEyMjU5LCAKKyAgICAxMjI3MCwgMTIyNzYsIDEyMjgxLCAxMjI4NiwgOTgwMCwgMTIyOTAsIDk4MDYsIDEyMjk1LCAxMjI5OCwgMTIzMDMsIAorICAgIDEyMzE1LCAxMjMyMiwgMTIzMjcsIDEyMzMxLCAxMjMzOSwgMTIzNDQsIDEyMzQ4LCAxMjM1MywgMTIzNTcsIDEyMzY0LCAKKyAgICAxMjM3MCwgOTgxMSwgOTcxOCwgMTIzNzcsIDI5MTEsIDEyLCAxMjM4NCwgMTIzODksIDEyMzkzLCAxMjM5NywgMTI0MDMsIAorICAgIDEyNDExLCAxMjQyMSwgMTI0MjYsIDEyNDMxLCAxMjQzOCwgMTI0NDUsIDEyNDQ5LCAxMjQ2MCwgMTI0NzAsIDEyNDc5LCAKKyAgICAxMjQ4OCwgMTI1MDAsIDEyNTA1LCAxMjUwOSwgMTI1MTcsIDEyNTMxLCAxMjUzNSwgMTI1MzgsIDEyNTQ2LCAxMjU1MywgCisgICAgMTI1NjEsIDEyNTY1LCAxMjU3NiwgMTI1ODAsIDEyNTg3LCAxMjU5MiwgMTI1OTYsIDEyNjAyLCAxMjYwNywgMTI2MTMsIAorICAgIDEyNjE4LCAxMjYyMywgMTI2MjcsIDEyNjMzLCAxMjYzOCwgMTI2NDksIDEyNjUzLCAxMjY1NiwgMTI2NjIsIDEyNjY3LCAKKyAgICAxMjY3MywgMTI2NzksIDEyNjg2LCAxMjY5NywgMTI3MDcsIDEyNzE3LCAxMjcyNiwgMTI3MzMsIDEyNzQyLCAxMjc0NiwgCisgICAgOTgyMSwgOTgyOCwgOTgzNCwgOTgzOSwgMTI3NTIsIDEyNzU4LCAxMjc2NCwgMTI3NjksIDEyNzc1LCA5ODQzLCAxMjc4MSwgCisgICAgMTI3ODQsIDEyNzkxLCAxMjc5NiwgMTI4MTEsIDEyODI3LCAxMjg0MiwgMTI4NTAsIDEyODU2LCAxMjg2MSwgOTc2LCAzODcsIAorICAgIDEyODY2LCAxMjg3NCwgMTI4ODEsIDEyODg3LCAxMjg5MiwgMTI4OTcsIDk4NDgsIDEyODk5LCAxMjkwMywgMTI5MDgsIAorICAgIDEyOTEyLCAxMjkyMiwgMTI5MjcsIDEyOTMxLCAxMjk0MCwgMTI5NDQsIDEyOTQ3LCAxMjk1NCwgOTg1NywgMTI5NTksIAorICAgIDEyOTYyLCAxMjk3MCwgMTI5NzcsIDEyOTg1LCAxMjk4OSwgMTI5OTMsIDEzMDAwLCAxMzAwOSwgMTMwMTYsIDEzMDEyLCAKKyAgICAxMzAyMywgMTMwMjcsIDEzMDMzLCAxMzAzNywgMTMwNDEsIDEzMDQ1LCAxMzA1MSwgMTMwNjEsIDEzMDY5LCAxMzA3NiwgCisgICAgMTMwODAsIDEzMDg4LCAxMzA5MiwgMTMwOTksIDEzMTAzLCAxMzEwOCwgMTMxMTIsIDEzMTE5LCAxMzEyNSwgMTMxMzMsIAorICAgIDEzMTM5LCAxMzE0NCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjgsIDEzMTcyLCAxMzE4MCwgNDEzOCwgMTMxODgsIAorICAgIDEzMTkzLCA5ODYyLCAxMzE5NywgMTMyMDEsIDEzMjA0LCAxMzIxMiwgMTMyMTksIDEzMjIzLCA2MzIyLCAxMzIyNywgCisgICAgMTMyMzIsIDEzMjM3LCAxMzI0MSwgMTMyNTIsIDEzMjYyLCAxMzI2NywgMTMyNzMsIDEzMjc4LCAxMzI4MiwgMTMyODUsIAorICAgIDEzMjkzLCAxMzI5OCwgMTMzMDMsIDEzMzEwLCAxMzMxNSwgOTg2NywgMTMzMjAsIDEzMzI0LCAxMzMzMSwgMTcxOCwgNjQ4MCwgCisgICAgMTMzMzYsIDEzMzQxLCAxMzM0NiwgMTMzNTEsIDEzMzU3LCAxMzM2MiwgMTMzNjgsIDEzMzczLCAxMzM3OCwgMTMzODMsIAorICAgIDEzMzg4LCAxMzM5MywgMTMzOTgsIDEzNDAzLCAxMzQwOCwgMTM0MTMsIDEzNDE4LCAxMzQyMywgMTM0MjgsIDEzNDMzLCAKKyAgICAxMzQzOCwgMTM0NDMsIDEzNDQ4LCAxMzQ1NCwgMTM0NTksIDEzNDY0LCAxMzQ2OSwgMTM0NzQsIDEzNDc5LCAxMzQ4NSwgCisgICAgMTM0OTAsIDEzNDk1LCAxMzUwMSwgMTM1MDYsIDEzNTEyLCAxMzUxNywgMTM1MjMsIDEzNTI4LCAxMzUzMywgMTM1MzgsIAorICAgIDEzNTQzLCAxMzU0OSwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgOTM2LCAxMTIsIDEzNTcyLCAxMzU3NiwgMTM1ODEsIDEzNTg2LCAKKyAgICAxMzU5MCwgMTM1OTQsIDEzNTk4LCAxMzYwMywgMTM2MDcsIDEzNjEyLCAxMzYxNiwgMTM2MTksIDEzNjIzLCAxMzYyNywgCisgICAgMTM2MzMsIDEzNjM4LCAxMzY0OCwgMTM2NTQsIDEzNjYyLCAxMzY2OCwgMTM2NzIsIDEzNjc2LCAxMzY4MywgMTM2OTEsIAorICAgIDEzNzAwLCAxMzcxMSwgMTM3MjEsIDEzNzI4LCAxMzczNSwgMTM3MzksIDEzNzQ4LCAxMzc1NywgMTM3NjUsIDEzNzc0LCAKKyAgICAxMzc4MywgMTM3OTIsIDEzODAxLCAxMzgxMSwgMTM4MjEsIDEzODMxLCAxMzg0MSwgMTM4NTEsIDEzODYwLCAxMzg3MCwgCisgICAgMTM4ODAsIDEzODkwLCAxMzkwMCwgMTM5MTAsIDEzOTIwLCAxMzkzMCwgMTM5MzksIDEzOTQ5LCAxMzk1OSwgMTM5NjksIAorICAgIDEzOTc5LCAxMzk4OSwgMTM5OTksIDE0MDA4LCAxNDAxOCwgMTQwMjgsIDE0MDM4LCAxNDA0OCwgMTQwNTgsIDE0MDY4LCAKKyAgICAxNDA3OCwgMTQwODgsIDE0MDk4LCAxNDEwNywgMTQxMTcsIDE0MTI3LCAxNDEzNywgMTQxNDcsIDE0MTU3LCAxNDE2NywgCisgICAgMTQxNzcsIDE0MTg3LCAxNDE5NywgMTQyMDcsIDE0MjE2LCAxMjE4LCAxNDIyMiwgMTQyMjUsIDE0MjI5LCAxNDIzNCwgCisgICAgMTQyNDEsIDE0MjQ3LCAxNDI1MiwgMTQyNTYsIDE0MjYxLCAxNDI3MCwgMTQyNzgsIDE0MjgzLCAxNDI4NywgMTQyOTEsIAorICAgIDE0Mjk3LCAxNDMwMiwgMTQzMDgsIDk4NzYsIDE0MzEzLCAxNDMxOCwgMTQzMjcsIDk4ODYsIDE0MzMyLCAxNDMzNSwgCisgICAgMTQzNDEsIDE0MzQ5LCA5ODkxLCAxNDM1NiwgMTQzNjAsIDE0MzY0LCAxNDM2OSwgMTQzNzMsIDE0MzgzLCAxNDM4OSwgCisgICAgMTQzOTUsIDE0NDAwLCAxNDQwOSwgMTQ0MTcsIDE0NDI0LCAxNDQzMSwgMTQ0MzYsIDE0NDQzLCAxNDQ0OCwgMTQ0NTIsIAorICAgIDE0NDU1LCAxNDQ2NiwgMTQ0NzYsIDE0NDg1LCAxNDQ5MywgMTQ1MDQsIDE0NTE2LCAxNDUyNiwgMTQ1MzEsIDE0NTM1LCAKKyAgICAxNDU0MCwgMTQ1NDUsIDE0NTQ5LCAxNDU1NSwgMTQ1NjMsIDE0NTcwLCAxNDU4MSwgMTQ1ODYsIDE0NTk2LCAxNDYwNSwgCisgICAgMTQ2MDksIDE0NjEyLCAxNDYxOSwgMTQ2MjksIDE0NjM4LCAxNDY0NSwgMTQ2NDksIDE0NjU2LCAxNDY2MiwgMTQ2NjcsIAorICAgIDE0NjcyLCAxNDY3NiwgMTQ2ODUsIDE0NjkwLCAxNDY5NCwgMTQ3MDAsIDE0NzA0LCAxNDcwOSwgMTQ3MTMsIDE0NzIwLCAKKyAgICAxNDcyNywgMTQ3MzEsIDE0NzQwLCAxNDc0OCwgMTQ3NTYsIDE0NzYzLCAxNDc3MSwgMTQ3ODMsIDE0Nzk0LCAxNDgwNCwgCisgICAgMTQ4MTEsIDE0ODE3LCAxNDgyNiwgMTQ4MzcsIDE0ODQ2LCAxNDg1OCwgMTQ4NzAsIDE0ODgyLCAxNDg5MiwgMTQ5MDEsIAorICAgIDE0OTEwLCAxNDkxOCwgMTQ5MjUsIDE0OTM0LCAxNDk0MiwgMTQ5NDYsIDE0OTUxLCAxNDk1NywgMTQ5NjMsIDE0OTY4LCAKKyAgICAxNDk3MywgODExNywgMTQ5NzcsIDE0OTc5LCAxNDk4MywgMTQ5ODgsIDE0OTk1LCAxNTAwMSwgMTUwMDcsIDE1MDE2LCAKKyAgICAxNTAyMCwgMTUwMjYsIDE1MDM0LCAxNTA0MSwgMTUwNTAsIDE1MDU5LCAxNTA2OCwgMTUwNzcsIDE1MDg2LCAxNTA5NSwgCisgICAgMTUxMDQsIDE1MTEzLCAxNTEyMywgMTUxMzMsIDE1MTQyLCAxNTE0OCwgMTUxNTUsIDE1MTYyLCAxNTE2OCwgMTUxODIsIAorICAgIDE1MTg4LCAxNTE5NSwgMTUyMDMsIDE1MjEyLCAxNTIyMCwgMTUyMjYsIDE1MjM1LCAxNTI0NCwgMTUyNTUsIDE1MjY1LCAKKyAgICAxNTI3MywgMTUyODAsIDE1Mjg4LCAxNTI5NywgMTUzMTAsIDE1MzE5LCAxNTMyNywgMTUzMzQsIDE1MzQ3LCAxNTM1MywgCisgICAgMTUzNTksIDE1MzY5LCAxNTM3OCwgMTUzODcsIDE1MzkyLCAxNTM5NiwgMTU0MDIsIDE1NDA4LCAxNTQxMywgMTU0MjAsIAorICAgIDE1NDI3LCA5NTI4LCAxNTQzMiwgMTU0MzcsIDE1NDQ0LCAxNTQ1MiwgMTU0NTcsIDE1NDY0LCAxNTQ2OSwgMTU0ODEsIAorICAgIDEzNjI5LCAxNTQ4NiwgMTU0OTQsIDE1NTAwLCAxNTUwNSwgMTU1MTMsIDE1NTIxLCAxNTUyOCwgMTU1MzYsIDE1NTQyLCAKKyAgICAxNTU1MCwgMTU1NTgsIDE1NTY0LCAxNTU2OSwgMTU1NzUsIDE1NTgyLCAxNTU4OCwgMTU1OTMsIDE1NTk3LCAxNTYwOCwgCisgICAgMTU2MTYsIDE1NjIyLCAxNTYyNywgMTU2MzQsIDE1NjQzLCAxNTY0OSwgMTU2NTQsIDE1NjYyLCAxNTY3MSwgMTU2ODUsIAorICAgIDQwODIsIDE1Njg5LCAxNTY5NCwgMTU2OTksIDE1NzA1LCAxNTcxMCwgMTU3MTUsIDE1NzE5LCAxNTcyNCwgMTU3MjksIAorICAgIDE1NzM0LCA4MTE2LCAxNTczOSwgMTU3NDQsIDE1NzQ5LCAxNTc1NCwgMTU3NTksIDE1NzYzLCAxNTc2OCwgMTU3NzMsIAorICAgIDE1Nzc4LCAxNTc4MywgMTU3ODksIDE1Nzk1LCAxNTgwMCwgMTU4MDQsIDE1ODEwLCAxNTgxNSwgMTU4MjAsIDE1ODI1LCAKKyAgICA5ODk1LCAxNTgzMCwgMTU4MzUsIDE1ODQwLCAxNTg0NSwgMTU4NTAsIDE1ODY3LCAxNTg4NSwgMTU4OTcsIDE1OTEwLCAKKyAgICAxNTkyNywgMTU5NDMsIDE1OTYwLCAxNTk3MCwgMTU5ODksIDE2MDAwLCAxNjAxMSwgMTYwMjIsIDE2MDMzLCAxNjA0NSwgCisgICAgMTYwNTYsIDE2MDY3LCAxNjA4NCwgMTYwOTUsIDE2MTA2LCAxNjExMSwgOTkwMCwgMTYxMTYsIDE2MTIwLCAyNDA1LCAKKyAgICAxNjEyNCwgMTYxMjcsIDE2MTMzLCAxNjE0MSwgMTYxNDksIDE2MTU1LCAxNjE2NCwgMTYxNzEsIDE2MTc2LCAxNjE4NCwgCisgICAgMTYxOTIsIDE2MTk5LCAxNjIwMywgMTYyMDgsIDE2MjE0LCAxNjIyMSwgMTYyMjksIDE2MjM2LCAxNjI0OCwgMTYyNTUsIAorICAgIDE2MjYxLCAxNjI2OSwgMTYyNzQsIDE2MjgwLCAxMjgwNSwgMTYyODYsIDE2Mjk1LCAxNjMwMSwgMTYzMDYsIDE2MzE0LCAKKyAgICAxNjMyMywgMTYzMzEsIDE2MzM4LCAxNjM0NCwgMTYzNTIsIDE2MzU5LCAxNjM2NSwgMTYzNzEsIDE2Mzc4LCAxNjM4NSwgCisgICAgMTYzOTEsIDE2Mzk3LCAxNjQwNiwgMTY0MTQsIDE2NDI0LCAxNjQzMSwgMTY0MzcsIDE2NDQ1LCAxNjQ1MSwgMTY0NTksIAorICAgIDE2NDY3LCAxNjQ3NCwgMTY0ODcsIDE2NDk0LCAxNjUwMywgMTY1MTIsIDE2NTIxLCAxNjUyOSwgMTY1MzksIDE2NTQ2LCAKKyAgICAxNjU1MSwgMzcyNiwgMTY1NTgsIDE2NTYzLCAxMzM0LCAxNjU2NywgMTU3NDAsIDE2NTcxLCAxNjU3NywgMTY1ODEsIAorICAgIDE2NTg5LCAxNjYwMSwgMTY2MDYsIDE2NjEzLCAxNjYxOSwgMTY2MjQsIDE2NjMxLCAxNTc0NSwgMTY2MzUsIDE2NjM5LCAKKyAgICAxNjY0MywgMTU3NTAsIDE2NjQ3LCAxNTc1NSwgMTY2NTEsIDE2NjU4LCAxNjY2MywgMTY2NjcsIDE2Njc0LCAxNjY3OCwgCisgICAgMTY2ODYsIDE2NjkzLCAxNjY5OCwgMTY3MDIsIDE2NzA5LCAxNjcyNiwgMTY3MzUsIDE2NzM5LCAxNjc0MiwgMTY3NTAsIAorICAgIDE2NzU2LCAxNjc2MSwgMzgwNCwgMTY3NjUsIDE2NzY3LCAxNjc3NSwgMTY3ODIsIDE2NzkyLCAxNjgwNCwgMTY4MDksIAorICAgIDE2ODEzLCAxNjgxOSwgMTY4MjQsIDE2ODMyLCAxNjgzNiwgMTY4NDIsIDE2ODQ3LCAxNjg1MywgMTY4NTYsIDE2ODYzLCAKKyAgICAxNjg3MSwgMTY4NzgsIDE2ODg0LCAxNjg4OSwgMTY4OTUsIDE2OTAwLCAxNjkwNywgMTY5MTMsIDE2OTE4LCAxNjkyNSwgCisgICAgMTY5MzAsIDE2OTM0LCAxNjk0MCwgMTY5NDQsIDE2OTUxLCAxNjk1NywgMTY5NjIsIDE2OTY4LCAxNjk3NiwgMTY5ODQsIAorICAgIDE2OTkxLCAxNjk5NywgMTcwMDIsIDE3MDA4LCAxNzAxNCwgMTcwMjIsIDE3MDI3LCAxNzAzNSwgMTcwNDEsIDE3MDQ3LCAKKyAgICAxNzA1MiwgMTcwNTksIDE3MDY0LCAxNzA2OCwgMTcwNzQsIDE3MDc5LCAxNzA4NiwgMTcwOTEsIDE3MDk3LCAxNzEwMCwgCisgICAgMTcxMDYsIDE3MTEyLCAxNzExNSwgMTcxMTksIDE3MTIzLCAxNzEzNSwgMTcxNDEsIDE3MTQ2LCAxNzE1MywgMTcxNTksIAorICAgIDE3MTY1LCAxNzE3NiwgMTcxODYsIDE3MTk1LCAxNzIwMywgMTcyMTAsIDE3MjIxLCAxNzIzMSwgMTcyNDEsIDE3MjQ5LCAKKyAgICAxNzI1MiwgMTU3NjksIDE3MjU3LCAxNzI2MiwgMTU3NzQsIDE1OTE1LCAxNzI3MCwgMTcyODMsIDE3Mjk4LCAxNzMwOSwgCisgICAgMTU5MzIsIDE3MzI3LCAxNzM0MCwgMTczNTMsIDE3MzY0LCAxMTUxNSwgMTczNzUsIDE3Mzg4LCAxNzQwNywgMTc0MTgsIAorICAgIDE3NDI5LCAxNzQ0MCwgMjY3NywgMTc0NTMsIDE3NDU3LCAxNzQ2NSwgMTc0NzYsIDE3NDg3LCAxNzQ5NSwgMTc1MTAsIAorICAgIDE3NTI1LCAxNzUzNiwgMTc1NDMsIDE3NTQ5LCAxNzU1NywgMTc1NjEsIDE3NTY3LCAxNzU3MCwgMTc1ODMsIDE3NTk1LCAKKyAgICAxNzYwNSwgMTc2MTMsIDE3NjIwLCAxNzYyOCwgMTc2MzgsIDE3NjQzLCAxNzY1MCwgMTc2NTUsIDE3NjYyLCAxNzY3MywgCisgICAgMTc2ODMsIDE3Njg5LCAxNzY5NCwgMTc2OTksIDE1Nzc5LCAxNzcwMywgMTc3MDksIDE3NzE1LCAxNzcyMCwgMTc3MjUsIAorICAgIDE3NzMwLCAxNzczNCwgMTU3ODQsIDE1NzkwLCAxNzczOCwgMTU3OTYsIDE3NzQzLCAxNzc1MSwgMTc3NTYsIDE3NzYwLCAKKyAgICAxNzc2NywgMTc3NzUsIDE3Nzg0LCAxNzc5MSwgMTc3OTUsIDk3MzksIDE3Nzk5LCAxNzgwMSwgMTc4MDYsIDE3ODExLCAKKyAgICAxNzgxNywgMTc4MjIsIDE3ODI3LCAxNzgzMiwgMTc4MzcsIDE3ODQxLCAxNzg0NywgMTc4NTMsIDE3ODU4LCAxNzg2NCwgCisgICAgMTc4NjksIDE3ODc0LCAxNzg3OCwgMTc4ODQsIDE3ODg5LCAxNzg5MywgMTc4OTgsIDE3OTAzLCAxNzkxNSwgMTc5MjAsIAorICAgIDE3OTI2LCAxNzkzMSwgMTc5MzYsIDE3OTQyLCAxNzk0OCwgMTc5NTMsIDE3OTU4LCAxNzk2MywgMTc5NzAsIDE3OTc2LCAKKyAgICAxNzk4NywgMTc5OTQsIDE3OTk5LCAxODAwMywgMTgwMDcsIDE4MDEwLCAxODAxOCwgMTgwMjMsIDE4MDI5LCAxODAzNiwgCisgICAgMTgwNDMsIDE4MDQ5LCAxODA1NCwgMTgwNTksIDE4MDY0LCAxODA3MSwgMTgwODEsIDE4MDg5LCAxODA5NCwgMTgxMDEsIAorICAgIDE4MTA3LCAxODExNiwgMTgxMjYsIDE4MTM2LCAxODE1MCwgMTgxNjQsIDE4MTc4LCAxODE5MiwgMTgyMDcsIDE4MjIyLCAKKyAgICAxODIzOSwgMTgyNTcsIDE4MjcwLCAxODI3NiwgMTgyODEsIDE4Mjg2LCAxODI5MCwgMTgyOTgsIDE4MzAzLCAxODMxMSwgCisgICAgMTgzMTcsIDE4MzIzLCAxODMyOCwgMTgzMzMsIDE4MzM3LCAxODM0MiwgMTgzNDYsIDE4MzUxLCAxODM1NSwgMTgzNjYsIAorICAgIDE4MzcyLCAxODM3NywgMTgzODIsIDE4Mzg5LCAxODM5NCwgMTgzOTgsIDM2ODksIDE4NDAzLCAxODQwOSwgMTg0MTYsIAorICAgIDE1ODA1LCAxODQyMiwgMTg0MjYsIDE4NDMyLCAxODQzNywgMTg0NDIsIDE4NDQ2LCAxODQ1MiwgMTg0NTcsIDE4NDYyLCAKKyAgICAxODQ2OSwgMTg0NzQsIDE0Mzg1LCAxODQ3OCwgMTg0ODMsIDE4NDg3LCAxODQ5MiwgMTg0OTgsIDE4NTA0LCAxODUxMSwgCisgICAgMTg1MjEsIDE4NTI5LCAxODUzNiwgMTg1NDEsIDE4NTQ1LCAxODU1NCwgMTg1NjIsIDE4NTY5LCAxODU3NiwgMTg1ODIsIAorICAgIDE4NTg3LCAxODU5MywgMTg1OTgsIDE4NjAzLCAxODYwOSwgMTg2MTQsIDE4NjIwLCAxODYyNSwgMTg2MzEsIDE4NjM3LCAKKyAgICAxODY0NCwgMTg2NTAsIDE4NjU1LCAxODY2MCwgOTk2NSwgMTg2NjksIDE4NjcyLCAxODY4MCwgMTg2ODYsIDE4NjkxLCAKKyAgICAxODY5NiwgMTg3MDYsIDE4NzEzLCAxODcxOSwgMTg3MjQsIDE4NzI5LCAxODczNSwgMTg3NDAsIDE4NzQ2LCAxODc1MSwgCisgICAgMTg3NTcsIDE4NzYzLCAxODc2OSwgMTg3NzQsIDE4NzgyLCAxODc4OSwgMTg3OTQsIDE4Nzk5LCAxODgwNSwgMTg4MTAsIAorICAgIDE4ODE0LCAxODgyMywgMTg4MzQsIDE4ODQxLCAxODg0OCwgMTg4NTYsIDE4ODYzLCAxODg2OCwgMTg4NzMsIDE4ODc5LCAKKyAgICAxODg4NCwgMTg4OTIsIDE4ODk4LCAxODkwNCwgMTg5MTEsIDE4OTE3LCAxODkyMiwgMTg5MjYsIDE4OTMyLCAxODkzNywgCisgICAgMTg5NDIsIDE4OTQ2LCAxODk1MSwgMTQwNywgODE0MSwgMjkyNSwgMTg5NTUsIDE4OTU5LCAxODk2MywgMTg5NjcsIDE4OTcxLCAKKyAgICAxODk3NSwgMTg5NzgsIDE4OTgzLCAxODk5MCwgMTg5OTgsIDE1ODE2LCAxOTAwNSwgMTkwMTUsIDE5MDIzLCAxOTAzMCwgCisgICAgMTkwMzgsIDE5MDQ4LCAxOTA1NywgOTI3NSwgMTkwNzAsIDE5MDc1LCAxOTA4MCwgMTkwODgsIDE5MDk1LCAxNDQ4MSwgCisgICAgMTQ0OTAsIDE5MTAyLCAxOTExMiwgMTkxMjcsIDE5MTMzLCAxOTE0MCwgMTkxNDcsIDE5MTUzLCAxOTE1OSwgMTkxNzAsIAorICAgIDE5MTc4LCAxOTE4NiwgMTkxOTYsIDE5MjA2LCAxNTgyMSwgMTkyMTUsIDE5MjIxLCAxOTIyNywgMTkyMzUsIDE5MjQzLCAKKyAgICAxOTI0OCwgMTkyNTcsIDE5MjY1LCAxOTI3NywgMTkyODcsIDE5Mjk3LCAxOTMwNywgMTkzMTYsIDE5MzI4LCAxOTMzOCwgCisgICAgMTkzNDgsIDE5MzU5LCAxOTM2NiwgMTkzNzEsIDE5MzgzLCAxOTM5NSwgMTk0MDcsIDE5NDE5LCAxOTQzMSwgMTk0NDMsIAorICAgIDE5NDU1LCAxOTQ2NywgMTk0NzksIDE5NDkxLCAxOTUwMiwgMTk1MTQsIDE5NTI2LCAxOTUzOCwgMTk1NTAsIDE5NTYyLCAKKyAgICAxOTU3NCwgMTk1ODYsIDE5NTk4LCAxOTYxMCwgMTk2MjIsIDE5NjMzLCAxOTY0NSwgMTk2NTcsIDE5NjY5LCAxOTY4MSwgCisgICAgMTk2OTMsIDE5NzA1LCAxOTcxNywgMTk3MjksIDE5NzQxLCAxOTc1MywgMTk3NjQsIDE5Nzc2LCAxOTc4OCwgMTk4MDAsIAorICAgIDE5ODEyLCAxOTgyNCwgMTk4MzYsIDE5ODQ4LCAxOTg2MCwgMTk4NzIsIDE5ODg0LCAxOTg5NSwgMTk5MDcsIDE5OTE5LCAKKyAgICAxOTkzMSwgMTk5NDMsIDE5OTU1LCAxOTk2NywgMTk5NzksIDE5OTkxLCAyMDAwMywgMjAwMTUsIDIwMDI2LCAyMDAzOCwgCisgICAgMjAwNTAsIDIwMDYyLCAyMDA3NCwgMjAwODYsIDIwMDk4LCAyMDExMCwgMjAxMjIsIDIwMTM0LCAyMDE0NiwgMjAxNTcsIAorICAgIDIwMTY5LCAyMDE4MSwgMjAxOTMsIDIwMjA1LCAyMDIxNywgMjAyMjksIDIwMjQxLCAyMDI1MywgMjAyNjUsIDIwMjc3LCAKKyAgICAyMDI4OCwgMjAzMDAsIDIwMzEyLCAyMDMyNCwgMjAzMzYsIDIwMzQ5LCAyMDM2MiwgMjAzNzUsIDIwMzg4LCAyMDQwMSwgCisgICAgMjA0MTQsIDIwNDI3LCAyMDQzOSwgMjA0NTIsIDIwNDY1LCAyMDQ3OCwgMjA0OTEsIDIwNTA0LCAyMDUxNywgMjA1MzAsIAorICAgIDIwNTQzLCAyMDU1NiwgMjA1NjksIDIwNTgxLCAyMDU5NCwgMjA2MDcsIDIwNjIwLCAyMDYzMywgMjA2NDYsIDIwNjU5LCAKKyAgICAyMDY3MiwgMjA2ODUsIDIwNjk4LCAyMDcxMSwgMjA3MjMsIDIwNzM2LCAyMDc0OSwgMjA3NjIsIDIwNzc1LCAyMDc4OCwgCisgICAgMjA4MDEsIDIwODE0LCAyMDgyNywgMjA4NDAsIDIwODUzLCAyMDg2NSwgMjA4NzgsIDIwODkxLCAyMDkwNCwgMjA5MTcsIAorICAgIDIwOTMwLCAyMDk0MywgMjA5NTYsIDIwOTY5LCAyMDk4MiwgMjA5OTUsIDIxMDA3LCAyMTAyMCwgMjEwMzMsIDIxMDQ2LCAKKyAgICAyMTA1OSwgMjEwNzIsIDIxMDg1LCAyMTA5OCwgMjExMTEsIDIxMTI0LCAyMTEzNywgMjExNDksIDIxMTYwLCAyMTE3MywgCisgICAgMjExODYsIDIxMTk5LCAyMTIxMiwgMjEyMjUsIDIxMjM4LCAyMTI1MSwgMjEyNjQsIDIxMjc3LCAyMTI5MCwgMjEzMDIsIAorICAgIDIxMzE1LCAyMTMyOCwgMjEzNDEsIDIxMzU0LCAyMTM2NywgMjEzODAsIDIxMzkzLCAyMTQwNiwgMjE0MTksIDIxNDMyLCAKKyAgICAyMTQ0NCwgMjE0NTcsIDIxNDcwLCAyMTQ4MywgMjE0OTYsIDIxNTA5LCAyMTUyMiwgMjE1MzUsIDIxNTQ4LCAyMTU2MSwgCisgICAgMjE1NzQsIDIxNTg2LCAyMTU5OSwgMjE2MTIsIDIxNjI1LCAyMTYzOCwgMjE2NTEsIDIxNjY0LCAyMTY3NywgMjE2OTAsIAorICAgIDIxNzAzLCAyMTcxNiwgMjE3MjgsIDIxNzQxLCAyMTc1NCwgMjE3NjcsIDIxNzgwLCAyMTc5MywgMjE4MDYsIDIxODE5LCAKKyAgICAyMTgzMiwgMjE4NDUsIDIxODU4LCAyMTg3MCwgMjE4ODMsIDIxODk2LCAyMTkwOSwgMjE5MjIsIDIxOTM1LCAyMTk0OCwgCisgICAgMjE5NjEsIDIxOTc0LCAyMTk4NywgMjIwMDAsIDIyMDEyLCAyMjAyNSwgMjIwMzgsIDIyMDUxLCAyMjA2NCwgMjIwNzcsIAorICAgIDIyMDkwLCAyMjEwMywgMjIxMTYsIDIyMTI5LCAyMjE0MiwgMjIxNTQsIDIyMTY3LCAyMjE4MCwgMjIxOTMsIDIyMjA2LCAKKyAgICAyMjIxOSwgMjIyMzIsIDIyMjQ1LCAyMjI1OCwgMjIyNzEsIDIyMjg0LCAyMjI5NiwgMjIzMDksIDIyMzIyLCAyMjMzNSwgCisgICAgMjIzNDgsIDIyMzYxLCAyMjM3NCwgMjIzODcsIDIyNDAwLCAyMjQxMywgMjI0MjYsIDIyNDM4LCAyMjQ1MSwgMjI0NjQsIAorICAgIDIyNDc3LCAyMjQ5MCwgMjI1MDMsIDIyNTE2LCAyMjUyOSwgMjI1NDIsIDIyNTU1LCAyMjU2OCwgMjI1ODAsIDIyNTkxLCAKKyAgICAyMjYwMCwgMjI2MDgsIDIyNjE2LCAyMjYyMywgMjI2MjksIDIyNjMzLCAyMjYzOSwgMjI2NDUsIDIyNjUzLCAyMjY1OCwgCisgICAgMjI2NjQsIDIyNjY5LCAyMjY3MywgMjI2ODIsIDk3NDQsIDIyNjkzLCAyMjcwMCwgMjI3MDgsIDIyNzE1LCAyMjcyMiwgCisgICAgMTIwNDYsIDIyNzI5LCAyMjczNiwgMjI3NDUsIDIyNzUwLCAyMjc1NSwgODE2OSwgMjI3NjIsIDIyNzY3LCAyMjc3MCwgCisgICAgMjI3NzUsIDIyNzgzLCAyMjc5MCwgMjI3OTcsIDIyODA0LCAyMjgxMCwgMjI4MTksIDIyODI4LCAyMjgzNywgMjI4NDMsIAorICAgIDIyODUxLCAyMjg2MCwgMjI4NjQsIDIyODcwLCAyMjg3NSwgMjI4ODUsIDIyODkyLCAyMjg5OCwgMjI5MDYsIDIyOTEyLCAKKyAgICAyMjkxOSwgMjI5MjksIDIyOTM4LCAyMjk0MiwgMjI5NDksIDIyOTUzLCAyMjk1OCwgMjI5NjQsIDIyOTcyLCAyMjk3NiwgCisgICAgMjI5ODYsIDE1ODMxLCAyMjk5NSwgMjMwMDEsIDIzMDA1LCAyMzAxNCwgMjMwMjQsIDE1ODM2LCAyMzAzMCwgMjMwMzcsIAorICAgIDIzMDQ4LCAyMzA1NiwgMjMwNjYsIDIzMDc1LCAyMzA4MywgOTQ5MywgMjMwOTEsIDIzMDk2LCAyMzEwMiwgMjMxMDcsIAorICAgIDIzMTExLCAyMzExNSwgMjMxMTksIDEwNDc3LCAyMzEyNCwgMjMxMzIsIDIzMTM5LCAyMzE0OCwgMjMxNTUsIDIzMTYyLCAKKyAgICAyMzE2OCwgMTE5NjYsIDIzMTc1LCAyMzE4MSwgMjMxODUsIDIzMTkxLCAyMzE5OCwgMjMyMDQsIDIzMjEyLCAyMzIxOCwgCisgICAgMjMyMjUsIDIzMjMxLCAyMzIzNywgMjMyNDYsIDIzMjUwLCAyMzI1OCwgMjMyNjcsIDIzMjc0LCAyMzI3OSwgMjMyODMsIAorICAgIDIzMjk0LCAyMzI5OSwgMjMzMDQsIDIzMzEwLCAyMzMxNSwgMjMzMjgsIDgzNzMsIDIzMzMyLCAyMzMzOCwgMjMzNDQsIAorICAgIDIzMzQ5LCAyMzM1NywgMjMzNjEsIDIzMzY4LCAyMzM3NywgMjMzODIsIDE2MTA3LCAyMzM5MCwgMjMzOTQsIDIzNDA2LCAKKyAgICAyMzQxMSwgMjM0MTUsIDIzNDE4LCAyMzQyNCwgMjM0MzAsIDIzNDM2LCAyMzQ0MSwgMjM0NDUsIDIzNDQ4LCAyMzQ1OSwgCisgICAgMjM0NjQsIDEwMDE2LCAyMzQ3MSwgMjM0NzYsIDEyMjQsIDEwMDIxLCAyMzQ4MSwgMjM0ODYsIDIzNDkxLCAyMzQ5NiwgCisgICAgMjM1MDEsIDIzNTA2LCAyMzUxMSwgMjM1MTYsIDIzNTIxLCAyMzUyNiwgMjM1MzEsIDIzNTM2LCAyMzU0MiwgMjM1NDcsIAorICAgIDIzNTUyLCAyMzU1NywgMjM1NjIsIDIzNTY3LCAyMzU3MiwgMjM1NzcsIDIzNTgyLCAyMzU4NywgMjM1OTMsIDIzNTk5LCAKKyAgICAyMzYwNCwgMjM2MDksIDIzNjE0LCAyMzYxOSwgMjM2MjQsIDIzNjI5LCAyMzYzNCwgMjM2MzksIDIzNjQ0LCAyMzY1MCwgCisgICAgMjM2NTUsIDIzNjYwLCAyMzY2NSwgMjM2NzEsIDIzNjc3LCAyMzY4MiwgMjM2ODcsIDIzNjkyLCAyMzY5NywgMjM3MDIsIAorICAgIDIzNzA3LCAyMzcxMiwgMjM3MTcsIDIzNzIzLCAyMzcyOCwgMjM3MzMsIDIzNzM4LCAyMzc0MywgMjM3NDksIDIzNzU0LCAKKyAgICAyMzc1OSwgMjM3NjMsIDEzMzAsIDE0MCwgMjM3NzEsIDIzNzc1LCAyMzc3OSwgMjM3ODMsIDIzNzg4LCAyMzc5MiwgMTQzOTEsIAorICAgIDIzMzEsIDIzNzk2LCAyMzgwMSwgMjM4MDUsIDIzODEwLCAyMzgxNCwgMjM4MTksIDIzODIzLCAyMzgyOSwgMjM4MzQsIAorICAgIDIzODM4LCAyMzg0MiwgMjM4NTAsIDIzODU0LCAyMzg1OCwgMjM4NjMsIDIzODY4LCAyMzg3MiwgMjM4NzgsIDIzODgzLCAKKyAgICAyMzg4NywgMjM4OTIsIDIzODk3LCAyMzkwMSwgMjM5MDgsIDIzOTE1LCAyMzkyMiwgMjM5MjcsIDIzOTMxLCAyMzkzNSwgCisgICAgMjM5NDAsIDIzOTQ0LCAyMzk0NywgMjM5NTMsIDIzOTY2LCAyMzk3MSwgMjM5NzcsIDIzOTg2LCAyMzk5MSwgMTAyNDEsIAorICAgIDIzOTk2LCAyNDAwNSwgMjQwMTAsIDI0MDEzLCAyNzQwLCAyNzQ1LCAyNDAxNywgMjQwMjMsIDI0MDI5LCAzNjUwLCAyNDAzNCwgCisgICAgMjQwMzksIDI0MDQ0LCAyNDA1MCwgMjQwNTUsIDE1MjUxLCAyNDA2MCwgMjQwNjUsIDI0MDcwLCAyNDA3NSwgMjQwODEsIAorICAgIDI0MDg2LCAyNDA5MSwgMjQwOTcsIDI0MTAyLCAyNDEwNiwgMjQxMTEsIDI0MTE2LCAyNDEyMSwgMjQxMjYsIDI0MTMxLCAKKyAgICAyNDEzNSwgMjQxNDAsIDI0MTQ0LCAyNDE0OSwgMjQxNTQsIDI0MTU5LCAyNDE2NCwgMjQxNjgsIDI0MTczLCAyNDE3NywgCisgICAgMjQxODIsIDI0MTg3LCAyNDE5MiwgMjQxMDcsIDI5MzQsIDI0MTEyLCAyNDE5NywgMjQyMDUsIDI0MjEyLCAxMDU3MSwgCisgICAgMjQyMjQsIDI0MjMyLCAyNDI0MiwgMjQyNjAsIDI0Mjc5LCAyNDI4OCwgMjQyOTYsIDI0MTE3LCAyNDMwMywgMjQzMDgsIAorICAgIDI0MzE2LCAyNDEyMiwgMjQzMjEsIDI0MzI2LCAyNDMzNCwgMjQzMzksIDI0MTI3LCAyNDM0NCwgMjQzNTIsIDI0MzU3LCAKKyAgICAyNDM2MSwgMjQzNjgsIDI0Mzc0LCAyNDM4MywgMjQzOTEsIDI0Mzk1LCAyNDM5OCwgMjQ0MDUsIDI0NDA5LCAyNDQxMywgCisgICAgMjQ0MTgsIDI0NDI0LCAyNDQzMSwgMjQ0MzYsIDk1MjAsIDE3MjMsIDE3MjgsIDI0NDQwLCAyNDQ0NiwgMjQ0NTIsIDI0NDU3LCAKKyAgICAyNDQ2MSwgMjQ0NjUsIDI0NDY5LCAyNDQ3MywgMjQ0NzcsIDI0NDgxLCAyNDQ4NSwgMjQ0ODksIDI0NDkyLCAyNDQ5OCwgCisgICAgMjQ1MDUsIDI0NTEzLCAyNDUxOSwgMjQ1MjUsIDI0NTMwLCAyNDUzNSwgMjQ1NDEsIDI0NTQ1LCAyNDU1MCwgMTUxNTcsIAorICAgIDE1MTY0LCAyNDU1NywgMjQ1NjksIDI0NTcyLCAyNDU3OSwgMjQ1ODMsIDE4MDQ1LCAyNDU5MCwgMjQ1OTgsIDI0NjA5LCAKKyAgICAyNDYxOCwgMjQ2MzEsIDI0NjQxLCAyNDY1NSwgMjQ2NjcsIDI0NjgxLCAyNDY5NCwgMjQ3MDYsIDI0NzE2LCAyNDcyOCwgCisgICAgMjQ3MzQsIDI0NzQwLCAyNDc1NSwgMjQ3NzksIDI0Nzk3LCAyNDgxNiwgMjQ4MjksIDI0ODQzLCAyNDg2MSwgMjQ4NzcsIAorICAgIDI0ODk0LCAyNDkxMiwgMjQ5MjMsIDI0OTQyLCAyNDk1OSwgMjQ5NzksIDI0OTk3LCAyNTAwOSwgMjUwMjMsIDI1MDM3LCAKKyAgICAyNTA0OSwgMjUwNjYsIDI1MDg1LCAyNTEwMywgMjUxMTUsIDI1MTMzLCAyNTE1MiwgMTU5NzUsIDI1MTY1LCAyNTE4NSwgCisgICAgMjUxOTcsIDExNTQ2LCAyNTIwOSwgMjUyMTQsIDI1MjE5LCAyNTIyNCwgMjUyMzAsIDI1MjM1LCAyNTIzOSwgMjUyNDYsIAorICAgIDI1MjUyLCAyNDIyLCAyNTI1NiwgMjUyNjIsIDI1MjY2LCAyNTI2OSwgMjUyODAsIDI1Mjg0LCAyNTI4NywgMjUyOTUsIAorICAgIDI1MzAxLCAyNDE0NSwgMjUzMDUsIDI1MzE0LCAyNTMyNSwgMjUzMzEsIDI1MzM3LCAyNTM1MiwgMjUzNjEsIDI1MzY5LCAKKyAgICAyNTM3NiwgMjUzODEsIDI1Mzg1LCAyNTM5MiwgMjUzOTgsIDI1NDA3LCAyNTQxNSwgMjU0MjIsIDI1NDMyLCAyNTQ0MSwgCisgICAgMjU0NTEsIDI1NDU2LCAyNTQ2NSwgMjU0NzQsIDI1NDg1LCAyNTQ5NiwgNDIwNiwgMjU1MDYsIDI1NTEwLCAyNTUyMCwgCisgICAgMjU1MjgsIDI1NTM4LCAyNTU0OSwgMjU1NTQsIDI1NTY0LCAyNTU3MiwgMjU1NzksIDI1NTg1LCAyNTU5MiwgMjU1OTcsIAorICAgIDI0MTU1LCAyNTYwMSwgMjU2MTAsIDI1NjE0LCAyNTYxNywgMjU2MjIsIDI1NjMwLCAyNTYzNywgMjU2NDYsIDI1NjU0LCAKKyAgICAyNTY2MiwgMjU2NzAsIDI1NjgwLCAyNTY4OSwgMjU2OTUsIDI1NzAxLCAyNTcwNSwgMjQxNjAsIDI0MTY1LCAyNTcwOSwgCisgICAgMjU3MTksIDI1NzI5LCAyNTczOSwgMjU3NDcsIDI1NzU0LCAyNTc2NCwgMjU3NzIsIDI1NzgwLCAyNTc4NiwgMjU3OTQsIAorICAgIDg3MiwgMjU4MDMsIDE2MTg4LCA1NTcsIDI1ODE3LCAyNTgyNiwgMjU4MzQsIDI1ODQ1LCAyNTg1NiwgMjU4NjYsIDI1ODc1LCAKKyAgICAyNTg4NywgMjU4OTYsIDI1OTA1LCAyNTkxMiwgMjU5MTgsIDI1OTI4LCAyNTkzNywgMjU5NDYsIDI1OTU0LCAyNTk2NCwgCisgICAgMjU5NzIsIDI1OTgwLCA5OTgyLCAyNTk4NiwgMjU5ODksIDI1OTkzLCAyNTk5OCwgMjYwMDMsIDI2MDA3LCAxMDY4NiwgCisgICAgMjQxNzgsIDI0MTgzLCAyNjAxNSwgMjYwMjEsIDI2MDI3LCAyNjAzMiwgMjYwMzcsIDI2MDQxLCAyNjA0OSwgMjYwNTUsIAorICAgIDI2MDYxLCAyNjA2NSwgMzY3NCwgMjYwNzMsIDI2MDc4LCAyNjA4MywgMjYwODcsIDI2MDkxLCAxMDc5OSwgMjYwOTgsIAorICAgIDI2MTA2LCAyNjEyMCwgMjYxMjcsIDI2MTMzLCAxMDgwOCwgMTA4MTQsIDI2MTQxLCAyNjE0OSwgMjYxNTYsIDI2MTYxLCAKKyAgICAyNjE2NiwgMjQxODgsIDI2MTcyLCAyNjE4MywgMjYxODcsIDI2MTkyLCAyNjI5LCAyNjE5NywgMjYyMDgsIDI2MjE0LCAKKyAgICAyNjIxOSwgMjYyMjMsIDI2MjI3LCAyNjIzMCwgMjYyMzcsIDI2MjQ0LCAyNjI1MCwgMjYyNTcsIDI2MjYzLCAyNjI2NywgCisgICAgMjQxOTMsIDI2MjcyLCAyNjI3NiwgMjYyODAsIDE0MTIsIDg1ODUsIDI2Mjg1LCAyNjI5MCwgMjYyOTUsIDI2MzAwLCAKKyAgICAyNjMwNSwgMjYzMTAsIDI2MzE1LCAyNjMyMCwgMjYzMjUsIDI2MzMwLCAyNjMzNSwgMjYzNDAsIDI2MzQ1LCAyNjM1MCwgCisgICAgMjYzNTYsIDI2MzYxLCAyNjM2NiwgMjYzNzEsIDI2Mzc2LCAyNjM4MSwgMjYzODYsIDI2MzkyLCAyNjM5NywgMjY0MDIsIAorICAgIDI2NDA3LCAyNjQxMiwgMjY0MTcsIDI2NDIyLCAyNjQyNywgMjY0MzMsIDI2NDM5LCAyNjQ0NCwgMjY0NTAsIDI2NDU1LCAKKyAgICAyNjQ2MCwgNSwgMjY0NjYsIDI2NDcwLCAyNjQ3NCwgMjY0NzgsIDI2NDgzLCAyNjQ4NywgMjY0OTEsIDI2NDk1LCAyNjQ5OSwgCisgICAgMjY1MDQsIDI2NTA4LCAyNjUxMywgMjY1MTcsIDI2NTIwLCAyNjUyNCwgMjY1MjksIDI2NTMzLCAyNjUzOCwgMjY1NDIsIAorICAgIDI2NTQ2LCAyNjU1MCwgMjY1NTUsIDI2NTU5LCAyNjU2MywgMjY1NzMsIDI2NTc4LCAyNjU4MiwgMjY1ODYsIDI2NTkxLCAKKyAgICAyNjU5NiwgMjY2MDUsIDI2NjEwLCAyNjYxNSwgMjY2MTksIDI2NjIzLCAyNjYzNiwgMjY2NDgsIDI2NjU3LCAyNjY2NiwgCisgICAgMjY2NzEsIDI2Njc3LCAyNjY4MiwgMjY2ODYsIDI2NjkwLCAyNjcwMCwgMjY3MDksIDI2NzE3LCAyNjcyMywgMjY3MjgsIAorICAgIDI2NzMyLCAyNjczOSwgMjY3NDksIDI2NzU4LCAyNjc2NiwgMTE4NjgsIDI2Nzc0LCAyNjc4MiwgMjY3OTEsIDI2ODAwLCAKKyAgICAyNjgwOCwgMjY4MTgsIDI2ODIzLCAyNjgyNywgMjY4MzEsIDI2ODM0LCAyNjgzNiwgMjY4NDAsIDI2ODQ0LCAyNjg0OSwgCisgICAgMjY4NTQsIDI2ODU4LCAyNjg2MiwgMjY4NjUsIDI2ODY5LCAyNjg3MiwgMjY4NzYsIDI2ODc5LCAyNjg4MiwgMjY4ODYsIAorICAgIDI2ODkyLCAyNjg5NiwgMjY5MDAsIDI2OTA0LCAyNjkwOCwgMjY5MTMsIDI2OTE4LCAyNjkyMywgMjY5MjcsIDI2OTMwLCAKKyAgICAyNjkzNSwgMjY5NDEsIDI2OTQ2LCAyNjk1MiwgMjY5NTcsIDI2OTYxLCAyNjk2NywgMjY5NzEsIDI2OTc1LCAyNjk4MCwgCisgICAgMjY5ODQsIDI2OTg5LCAyNjk5NCwgMjY5OTgsIDI3MDAyLCAyNzAwOSwgMjcwMTMsIDI3MDE2LCAyNzAyMCwgMjcwMjQsIAorICAgIDI3MDMwLCAyNzAzNiwgMjcwNDAsIDI3MDQ0LCAyNzA0OSwgMjcwNTYsIDI3MDYyLCAyNzA2NiwgMjcwNzUsIDI3MDc5LCAKKyAgICAyNzA4MywgMjcwODYsIDI3MDkyLCAyNzA5NywgMjcxMDMsIDE0NTYsIDE3ODcsIDI3MTA4LCAyNzExMywgMjcxMTgsIAorICAgIDI3MTIzLCAyNzEyOCwgMjcxMzMsIDI3MTM4LCAyMTU5LCAyMjA1LCAyNzE0MywgMjcxNDYsIDI3MTUwLCAyNzE1NCwgCisgICAgMjcxNTksIDI3MTYzLCAxNjIwMCwgMjcxNjcsIDI3MTcyLCAyNzE3NywgMjcxODEsIDI3MTg0LCAyNzE4OSwgMjcxOTMsIAorICAgIDI3MTk4LCAyNzIwMiwgMTYyMDQsIDI3MjA3LCAyNzIxMCwgMjcyMTMsIDI3MjE3LCAyNzIyMiwgMjcyMjYsIDI3MjM5LCAKKyAgICAyNzI0MywgMjcyNDYsIDI3MjU0LCAyNzI2MywgMjcyNzAsIDI3Mjc1LCAyNzI4MSwgMjcyODcsIDI3Mjk1LCAyNzMwMiwgCisgICAgMjczMDksIDI3MzEzLCAyNzMxNywgMjczMjEsIDI3MzI2LCAyNzMzMSwgMjczMzUsIDI3MzQzLCAyNzM0OCwgMjczNjAsIAorICAgIDI3MzcxLCAyNzM3NiwgMjczODAsIDI3Mzg3LCAyNzM5MSwgMjczOTYsIDI3NDAyLCAyNzQwNSwgMjc0MTAsIDI3NDE1LCAKKyAgICAyNzQxOSwgMjc0MjMsIDI3NDI2LCAyNzQzMiwgODI3MiwgMjMzNSwgMjc0MzYsIDI3NDQxLCAyNzQ1NywgMTAyODgsIAorICAgIDI3NDc3LCAyNzQ4NiwgMjc1MDIsIDI3NTA2LCAyNzUxMywgMjc1MTYsIDI3NTIyLCAyNzUzMiwgMjc1MzgsIDI3NTQ3LCAKKyAgICAyNzU2MiwgMjc1NzQsIDI3NTg1LCAyNzU5MywgMjc2MDIsIDI3NjA4LCAyNzYxNywgMjc2MjcsIDI3NjM3LCAyNzY0OCwgCisgICAgMjc2NTksIDI3NjY5LCAyNzY3OCwgMjc2ODUsIDI3Njk0LCAyNzcwMiwgMjc3MDksIDI3NzE3LCAyNzcyNCwgMjc3MzEsIAorICAgIDI3NzQ0LCAyNzc1MSwgMjc3NTksIDI3NzY2LCAyNzc3MiwgMjc3NzcsIDI3Nzg2LCAyNzc5MywgMjc3OTksIDI3ODA0LCAKKyAgICAyNzgxMiwgMjc4MTksIDI3ODI2LCAyNTUzMCwgMjc4MzgsIDI3ODUwLCAyNzg2NCwgMjc4NzIsIDI3ODgwLCAyNzg4NywgCisgICAgMjc4OTksIDI3OTA4LCAyNzkxNywgMjc5MjUsIDI3OTMzLCAyNzk0MSwgMjc5NDgsIDI3OTU0LCAyNzk2MywgMjc5NzEsIAorICAgIDI3OTgxLCAyNzk5MCwgMjgwMDAsIDI4MDA5LCAyODAxOCwgMjgwMjYsIDI4MDMxLCAyODAzNSwgMjgwMzgsIDI4MDQyLCAKKyAgICAyODA0NiwgMjgwNTAsIDI4MDU0LCAyODA1OCwgMjgwNjQsIDI4MDcwLCAyODA3NSwgMjgwODMsIDE2MjYyLCAyODA5MCwgCisgICAgMjgwOTUsIDI4MTAyLCAyODEwOCwgMjgxMTUsIDE2MjcwLCAyODEyMiwgMjgxMjUsIDI4MTM3LCAyODE0NSwgMjgxNTEsIAorICAgIDI4MTU2LCAyODE2MCwgMjgxNzEsIDEwNzQ5LCAyODE4MSwgMjgxODksIDI4MTk5LCAyODIwOCwgMjgyMTUsIDI4MjIyLCAKKyAgICAyODIzMCwgMjgyMzQsIDE2MjgxLCAyODIzNywgMjgyNDQsIDI4MjQ4LCAyODI1NCwgMjgyNTcsIDI4MjY0LCAyODI3MCwgCisgICAgMjgyNzUsIDI4MjgyLCAyODI4OCwgMjgyOTIsIDI4Mjk3LCAyODMwMSwgMjgzMTAsIDI4MzE3LCAyODMyMywgODMzMCwgCisgICAgMjgzMzAsIDI4MzM4LCAyODM0NSwgMjgzNTEsIDI4MzU2LCAyODM2MiwgMjgzNjgsIDI4Mzc2LCAyODM4MiwgMjgzODYsIAorICAgIDI4Mzg5LCAyODM5MSwgMjgwNDMsIDI4NDAwLCAyODQwNiwgMjg0MTIsIDI4NDIyLCAyODQyNywgMjg0MzQsIDI4NDQwLCAKKyAgICAyODQ0NSwgMjg0NTAsIDI4NDU1LCAyODQ1OSwgMjg0NjQsIDI4NDcxLCAyODQ3NywgMjg0ODYsIDI4NDkwLCAyODQ5NywgCisgICAgMjg1MDMsIDI4NTEyLCA0Mzk4LCAyODUxOCwgMjg1MjQsIDI4NTI5LCAyODUzNiwgMjg1NDcsIDI4NTUyLCAyODU1NiwgCisgICAgMjg1NjYsIDI4NTcyLCAyODU3NiwgMjg1ODEsIDI4NTkxLCAyODYwMCwgMjg2MDQsIDI4NjExLCAyODYxOSwgMjg2MjYsIAorICAgIDI4NjMyLCAyODYzNywgMjg2NDUsIDI4NjUyLCAyODY1NywgMjg2NjQsIDI4Njc2LCAyODY4NSwgMjg2ODksIDE0MzIyLCAKKyAgICAyODY5NywgMjg3MDcsIDI4NzExLCAyNzI1MCwgMjg3MjIsIDI4NzI3LCAyODczMSwgMjg3MzgsIDI4NzQ1LCAyMzg3NCwgCisgICAgMjc5NjgsIDI4NzUwLCAyODc1NCwgMjg3NTcsIDI0OTI5LCAyODc2MiwgMjg3NzYsIDI4NzkyLCAyODgxMCwgMjg4MjksIAorICAgIDI4ODQ2LCAyODg2NCwgMjQ5NDgsIDI4ODgxLCAyODkwMSwgMjQ5NjUsIDI4OTEzLCAyODkyNSwgMTczMTQsIDI4OTM3LCAKKyAgICAyNDk4NSwgMjg5NTEsIDI4OTYzLCAxMTU1OSwgMjg5NzcsIDI4OTgyLCAyODk4NywgMjg5OTIsIDI4OTk4LCAyOTAwNCwgCisgICAgMjkwMTAsIDI5MDE0LCAyOTAyMiwgMjkwMjksIDI5MDM0LCAyOTA0NCwgMjkwNTAsIDExMTU3LCAyOTA1NiwgMjkwNTgsIAorICAgIDI5MDYzLCAyOTA3MSwgMjkwNzUsIDI4NDY3LCAyOTA4MSwgMjkwODgsIDEyNzExLCAxMjcyMSwgMjkwOTUsIDI5MTA1LCAKKyAgICAyOTExMCwgMjkxMTQsIDI5MTE3LCAyOTEyMywgMjkxMzEsIDI5MTQzLCAyOTE1MywgMjkxNjksIDI5MTgyLCAyOTE5NiwgCisgICAgMTczMzIsIDI5MjEwLCAyOTIxNywgMjkyMjEsIDI5MjI0LCAyOTIyOSwgMjkyMzMsIDI5MjQwLCAyOTI0NywgMjkyNTQsIAorICAgIDI5MjY0LCAyOTI2OSwgMjkyNzQsIDI5Mjc5LCAyOTI4NywgMjkyOTUsIDI5MzAwLCAyOTMwOSwgMjkzMTQsIDMzNDIsIAorICAgIDI5MzE4LCAyOTMyMSwgMjkzMjQsIDI5MzI5LCAyOTMzNiwgMjkzNDEsIDI5MzU3LCAyOTM2NSwgMjkzNzMsIDEwMDU2LCAKKyAgICAyOTM4MSwgMjkzODYsIDI5MzkwLCAyOTM5NiwgMjk0MDEsIDI5NDA3LCAyOTQxMCwgMjk0MTYsIDI5NDI4LCAyOTQzNiwgCisgICAgMjk0NDMsIDI5NDQ5LCAyOTQ1NiwgMjk0NjcsIDI5NDgxLCAyOTQ5NCwgMjk1MDAsIDI5NTA5LCAyOTUxNSwgMjk1MjQsIAorICAgIDI5NTM2LCAyOTU0NywgMjk1NTcsIDI5NTY2LCAyOTU3NSwgMjk1ODMsIDI5NTk0LCA4MzEyLCAyOTYwMSwgMjk2MDgsIAorICAgIDI5NjE0LCAyOTYxOSwgMjk2MjUsIDI5NjMyLCAyOTY0MywgMjk2NTMsIDI5NjYzLCAyOTY3MiwgMjk2NzgsIDI5Njg1LCAKKyAgICAyOTY5MCwgMjk2OTgsIDI5NzA1LCAyOTcxMywgMjk3MjEsIDI5NzMzLCA2NTg3LCAxMDI4LCAyOTc0MCwgMjk3NDksIAorICAgIDI5NzU3LCAyOTc2MywgMjk3NjksIDI5Nzc0LCAyOTc3OCwgMjk3ODEsIDI5Nzg3LCAyOTc5NCwgMjk3OTksIDI5ODA0LCAKKyAgICAyOTgwOSwgMjk4MTMsIDI5ODI1LCAyOTgzNiwgMjk4NDUsIDI5ODUzLCAxNjQ0NiwgMjk4NTgsIDI5ODY2LCAyOTg3MSwgCisgICAgMjk4NzcsIDI5ODgzLCAxMjcwNCwgOTEwMywgMjk4ODgsIDI5ODkyLCAyOTg5NiwgMjk4OTksIDI5OTAyLCAyOTkwOCwgCisgICAgMjk5MTYsIDI5OTI0LCAyOTkyOCwgMjk5MzIsIDI5OTM3LCAyOTk0MCwgMjk5NDksIDI5OTUzLCAyOTk1NiwgMjk5NjQsIAorICAgIDI5OTc1LCAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NSwgMzAwMDEsIDMwMDA5LCAzMDAzMSwgMzAwNTUsIDMwMDY0LCAKKyAgICAzMDA3MSwgMzAwNzgsIDMwMDg0LCAzMDA5MiwgMzAwOTgsIDMwMTAzLCAzMDExNCwgMzAxMzIsIDMwMTM5LCAzMDE0NywgCisgICAgMzAxNTEsIDMwMTU2LCAzMDE2NSwgMzAxNzgsIDMwMTg2LCAzMDE5OCwgMzAyMDksIDMwMjIwLCAzMDIzMCwgMzAyNDQsIAorICAgIDMwMjUzLCAzMDI2MSwgMzAyNzMsIDEwMzA1LCAzMDI4NCwgMzAyOTUsIDMwMzA3LCAzMDMxNywgMzAzMjYsIDMwMzMxLCAKKyAgICAzMDMzNSwgMzAzNDMsIDMwMzU0LCAzMDM2NCwgMzAzNjksIDMwMzczLCAzMDM3NiwgMzAzNzksIDMwMzg3LCAzMDM5NSwgCisgICAgMzA0MDQsIDMwNDE0LCAzMDQyMywgMzA0MjksIDMwNDQzLCAyNjkxLCAzMDQ2NSwgMzA0NzYsIDMwNDg1LCAzMDQ5NSwgCisgICAgMzA1MDcsIDMwNTE2LCAzMDUyNSwgMzA1MzUsIDMwNTQzLCAzMDU1MSwgMzA1NjAsIDMwNTY1LCAzMDU3NiwgMzA1ODEsIAorICAgIDMwNTkwLCAzMDYwMSwgMzA2MDUsIDMwNjA4LCAzMDYxOCwgMzA2MjcsIDMwNjM1LCAzMDY0NSwgMzA2NTUsIDMwNjYzLCAKKyAgICAzMDY3MiwgMzA2NzksIDMwNjg3LCAzMDY5NCwgMzA3MDMsIDMwNzEyLCAzMDcxNywgMzA3MjEsIDMwNzI5LCAzMDczNiwgCisgICAgMzA3NDQsIDMwNzUxLCAzMDc2MiwgMzA3NzcsIDMwNzg0LCAzMDc5MCwgMzA4MDAsIDMwODA5LCAzMDgxNSwgMzA4MjYsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDEsIDMwODQ3LCAxNTM4MiwgMzA4NTMsIDMwODU3LCAzMDg2MiwgMzA4NjgsIDMwODc1LCAKKyAgICAzMDg3OSwgMzA4ODMsIDMwODkxLCAzMDg5OSwgMzA5MDUsIDMwOTE0LCAzMDkyMSwgMzA5MjYsIDMwOTMxLCAzMDk0MSwgCisgICAgMjU1OTksIDMwOTQ1LCAzMDk0OCwgMzA5NTMsIDMwOTU4LCAzMDk2MywgMzA5NjgsIDMwOTczLCAzMDk3OCwgMzA5ODMsIAorICAgIDMwOTg4LCAzMDk5NCwgMzA5OTksIDMxMDA0LCAzMTAxMCwgMTE4MCwgNjc2LCAzMTAxNSwgMzEwMjQsIDIzODMsIDMxMDMxLCAKKyAgICAzMTAzNiwgMzEwNDAsIDMxMDQ2LCAxMjI5LCA1OTEsIDMxMDUxLCAyOTYsIDMxMDU1LCAzMTA2NCwgMzEwNzIsIDMxMDgxLCAKKyAgICAzMTA4OSwgMzExMDAsIDMxMTA4LCAzMTExNywgMzExMjUsIDMxMTMwLCAxMDg5NSwgMzExMzQsIDMxMTQyLCAzMTE1MCwgCisgICAgMzExNTUsIDE2MjE3LCAzODIzLCAzMTE2MSwgMzExNjcsIDMxMTczLCA2MTY4LCAzMTE3OCwgMzExODIsIDMxMTg4LCAKKyAgICAzMTE5MiwgMzExOTgsIDMxMjAzLCAzMTIxMCwgMTQyMiwgMzEyMTYsIDMxMjIzLCAzMTIyNywgMTMyOSwgNjE3NiwgMzEyMzIsIAorICAgIDMxMjQyLCAzMTI1MCwgMzEyNTYsIDMxMjY2LCAzMTI3NSwgMzEyODMsIDMxMjg5LCAzMTI5NCwgMzEzMDIsIDMxMzA5LCAKKyAgICAxMjI0NiwgMzEzMTUsIDMxMzIyLCAzMTMyNywgMzEzMzQsIDE0NzUsIDIyNSwgMjE1OCwgMzEzNDAsIDMxMzQ2LCAzMTM1MywgCisgICAgMzEzNjQsIDMxMzc1LCAzMTM4MywgMzEzOTAsIDMxNDAwLCAzMTQwOSwgMzE0MTcsIDMxNDI2LCAzMTQzMywgMzE0NDAsIAorICAgIDMxNDUzLCAzMTQ2MCwgMzE0NjYsIDMxNDc3LCAzMTQ5NiwgMTIzNCwgMzE1MDEsIDMxNTA2LCAzMTUxNCwgMzc0MSwgCisgICAgMzE1MTgsIDMxNTIzLCAzMTUyNywgMzE1MzEsIDE0MjYsIDI2ODYzLCAzMTU0MSwgMzE1NDUsIDMxNTUwLCAzMTU1NCwgCisgICAgMzYwOCwgMzE1NjAsIDMxNTY4LCAzMTU3NSwgMzE1ODYsIDMxNTk0LCAzMTYxOSwgMzE2MjcsIDMxNjMyLCAzNzQyLCAzNTIsIAorICAgIDMxNjM4LCAzMTY0NiwgMzE2NTQsIDMxNjYxLCAzMTY2NywgMzE2NzIsIDIyMjcsIDExNzI2LCAzMTY3OSwgMzE2ODUsIAorICAgIDI4MjkzLCAyODU0MiwgMzE2OTEsIDU4NywgMTA2LCAzMTY5NSwgMzE2OTksIDMxNzA1LCA2ODksIDk5MzEsIDMxNzEwLCAKKyAgICAzMTcxNywgMzE3MjMsIDMxNzI3LCAzMTczMSwgMTYyMCwgMzE3MzQsIDMxNzM4LCAxNjY5OSwgMzE3NDEsIDMxNzQ2LCAKKyAgICAzMTc1MywgMzE3NTksIDMxNzY0LCAzMTc3MiwgMzE3NzksIDMxNzg1LCAyNDM0MSwgMzE3ODksIDMxNzkzLCAzMTc5NywgCisgICAgMzgxMiwgMTgzNDQsIDMxODAxLCAzMTgwNiwgMzE4MTAsIDMxODEzLCAzMTgyMSwgMzE4MjksIDMxODM0LCAzMTg0MywgCisgICAgMzE4NTEsIDMxODU0LCAzMTg2MSwgMzE4NzEsIDMxODgzLCAzMTg4OCwgMzE4OTIsIDMxOTAwLCAzMTkwNywgMzE5MTMsIAorICAgIDMxOTIwLCAzMTkyNywgMzE5MzAsIDMxOTM0LCAzMTkzOCwgMTQzMCwgMzE5NDgsIDMxOTUwLCAzMTk1NSwgMzE5NjEsIAorICAgIDMxOTY3LCAzMTk3MiwgMzE5NzcsIDMxOTgyLCAzMTk4NywgMzE5OTIsIDMxOTk3LCAzMjAwMiwgMzIwMDcsIDMyMDEyLCAKKyAgICAzMjAxNywgMzIwMjIsIDMyMDI3LCAzMjAzMiwgMzIwMzcsIDMyMDQzLCAzMjA0OSwgMzIwNTUsIDMyMDYxLCAzMjA2NiwgCisgICAgMzIwNzEsIDMyMDc2LCAzMjA4MiwgMzIwODcsIDMyMDkyLCAzMjA5NywgMzIxMDMsIDMyMTA4LCAzMjExNCwgMzIxMTksIAorICAgIDMyMTI0LCAzMjEyOSwgMzIxMzQsIDMyMTQwLCAzMjE0NSwgMzIxNTEsIDMyMTU2LCAzMjE2MSwgMzIxNjYsIDMyMTcxLCAKKyAgICAzMjE3NywgMzIxODIsIDMyMTg4LCAzMjE5MywgMzIxOTgsIDMyMjAzLCAzMjIwOCwgMzIyMTMsIDMyMjE4LCAzMjIyMywgCisgICAgMzIyMjgsIDMyMjMzLCAzMjIzOSwgMzIyNDUsIDMyMjUxLCAzMjI1NiwgMzIyNjEsIDMyMjY2LCAzMjI3MSwgMzIyNzcsIAorICAgIDMyMjgzLCAzMjI4OSwgMzIyOTUsIDMyMzAxLCAzMjMwNywgMzIzMTIsIDMyMzE4LCAzMjMyMywgMzIzMjgsIDMyMzMzLCAKKyAgICAzMjMzOCwgMzIzNDQsIDI0NjcsIDMyMzQ5LCAyNDc0LCAyNDgxLCAyNzgyLCAzMjM1NCwgMjQ4NywgMjQ5NywgMzIzNjAsIAorICAgIDMyMzY0LCAzMjM2OSwgMzIzNzQsIDMyMzgwLCAzMjM4NSwgMzIzOTAsIDMyMzk0LCAzMjM5OSwgMzI0MDUsIDMyNDEwLCAKKyAgICAzMjQxNSwgMzI0MjAsIDMyNDI2LCAzMjQzMSwgMzI0MzUsIDMyNDM5LCAzMjQ0NCwgMzI0NDksIDMyNDU0LCAzMjQ1OSwgCisgICAgMzI0NjQsIDMyNDcwLCAzMjQ3NiwgMzI0ODEsIDMyNDg1LCAzMjQ5MCwgMzI0OTYsIDMyNTAwLCAzMjUwNSwgMzI1MTAsIAorICAgIDMyNTE1LCAzMjUyMCwgMzI1MjQsIDMyNTI3LCAzMjUzMiwgMzI1MzcsIDMyNTQyLCAzMjU0NywgMzI1NTIsIDMyNTU4LCAKKyAgICAzMjU2NCwgMzI1NjksIDMyNTc0LCAzMjU3OSwgMzI1ODMsIDMyNTg4LCAzMjU5MywgMzI1OTgsIDMyNjAzLCAzMjYwOCwgCisgICAgMzI2MTMsIDMyNjE3LCAzMjYyMiwgMzI2MjcsIDMyNjMyLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAzMjY0OSwgMzI2NTcsIAorICAgIDMyNjYyLCAzMjY2NywgMzI2NzMsIDMyNjc5LCAzMjY4NSwgMzI2OTAsIDMyNjk0LCAzMjY5NywgMzI3MDIsIDMyNzA3LCAKKyAgICAzMjcxMSwgMzI3MTYsIDMyNzIxLCAzMjcyNSwgMzI3MzAsIDMyNzM0LCAzMjczNywgMzI3NDIsIDM5MTksIDE5MDgzLCAKKyAgICAzMjc0NywgMzI3NTIsIDMyNzU3LCAzMjc2NSwgMjMxNTEsIDMxMjIwLCA5NjAxLCAzMjc3MCwgMzI3NzUsIDMyNzc5LCAKKyAgICAzMjc4NCwgMzI3ODgsIDMyNzkyLCAzMjc5NywgMzI4MDEsIDMyODA0LCAzMjgwNywgMzI4MTEsIDMyODE2LCAzMjgyMCwgCisgICAgMzI4MjgsIDMyODMyLCAzMjgzNSwgMzI4NDAsIDMyODQ0LCAzMjg0OCwgMzI4NTMsIDMyODU4LCAzMjg2MiwgMzI4NjgsIAorICAgIDMyODczLCAzMjg3OCwgMzI4ODUsIDMyODkyLCAzMjg5NiwgMzI4OTksIDMyOTA1LCAzMjkxNCwgMzI5MjEsIDMyOTI5LCAKKyAgICAzMjkzNiwgMzI5NDAsIDMyOTQ1LCAzMjk0OSwgMzI5NTMsIDMyOTU5LCAzMjk2NSwgMzI5NjksIDMyOTc1LCAzMjk4MCwgCisgICAgMzI5ODUsIDMyOTg5LCAzMjk5NiwgMzMwMDIsIDMzMDA4LCAzMzAxNCwgMzMwMjAsIDMzMDI3LCAzMzAzMywgMzMwMzksIAorICAgIDMzMDQ1LCAzMzA1MSwgMzMwNTcsIDMzMDYzLCAzMzA2OSwgMzMwNzYsIDMzMDgyLCAzMzA4OSwgMzMwOTUsIDMzMTAxLCAKKyAgICAzMzEwNywgMzMxMTMsIDMzMTE5LCAzMzEyNSwgMzMxMzEsIDMzMTM3LCAzMzE0MywgMTI1ODksIDMzMTQ5LCAzMzE1NSwgCisgICAgMzMxNjAsIDMzMTY1LCAzMzE3MCwgMzMxNzMsIDMzMTc5LCAzMzE4NywgMzMxOTIsIDMzMTk2LCAzMzIwMSwgMzMyMDcsIAorICAgIDMzMjE2LCAzMzIyMiwgMzMyMjcsIDMzMjMyLCAzMzIzNywgMzMyNDEsIDMzMjQ2LCAzMzI1MSwgMzMyNTYsIDMzMjYxLCAKKyAgICAzMzI2NiwgMzMyNzMsIDMzMjgwLCAzMzI4NiwgMzMyOTIsIDMzMjk3LCAxNzk4MCwgMzMzMDQsIDMzMzEwLCAzMzMxNywgCisgICAgMzMzMjMsIDMzMzI5LCAzMzMzNCwgMzMzNDIsIDMzMzQ3LCAxMDQ3MCwgMzMzNTEsIDMzMzU2LCAzMzM2MSwgMzMzNjcsIAorICAgIDMzMzcyLCAzMzM3NywgMzMzODEsIDMzMzg2LCAzMzM5MSwgMzMzOTcsIDMzNDAyLCAzMzQwNywgMzM0MTIsIDMzNDE2LCAKKyAgICAzMzQyMSwgMzM0MjYsIDMzNDMwLCAzMzQzNSwgMzM0NDAsIDMzNDQ0LCAzMzQ0OSwgMzM0NTMsIDMzNDU4LCAzMzQ2MywgCisgICAgMzM0NjgsIDMzNDcyLCAzMzQ3NywgMzM0ODEsIDMzNDg1LCAxNjgwNSwgMzM0OTAsIDMzNDk5LCAzMzUwNSwgMzM1MTEsIAorICAgIDMzNTIwLCAzMzUyOCwgMzM1MzcsIDMzNTQ1LCAzMzU1MCwgMzM1NTQsIDMzNTYxLCAzMzU2NywgMzM1NzUsIDMzNTc5LCAKKyAgICAzMzU4MiwgMzM1ODcsIDMzNTkxLCAzMzYwMCwgMzM2MDgsIDMzNjI2LCAzMzYzMiwgMTQ3NCwgMzM2MzgsIDMzNjQxLCAKKyAgICAzMzY0NSwgMjQ0NDcsIDI0NDUzLCAzMzY1MSwgMzM2NTUsIDMzNjY2LCAzMzY3NywgMzM2ODgsIDMzNzAwLCAzMzcwNCwgCisgICAgMzM3MTEsIDMzNzE4LCAzMzcyNSwgMzM3MzAsIDMzNzM0LCA2MjI0LCA5NjMsIDIzMTUwLCAzMzc0MiwgMzM3NDcsIDMzNzUxLCAKKyAgICAzMzc1NiwgMzM3NjAsIDMzNzY2LCAzMzc3MSwgMzM3NzcsIDMzNzgyLCAzMzc4OCwgMzM3OTMsIDMzNzk5LCAzMzgwNCwgCisgICAgMzM4MTAsIDMzODE2LCAzMzgyMiwgMzM4MjcsIDMzNzgzLCAzMzc4OSwgMzM4MzEsIDMzODM2LCAzMzg0MiwgMzM4NDcsIAorICAgIDMzODUzLCAzMzg1OCwgMzM4NjQsIDMzODY5LCAzMzc5NCwgMTE0MTIsIDMzODczLCAzMzgwNSwgMzM4MTEsIDMzODE3LCAKKyAgICAyODc0LCAzNTIyLCAzMzg3OSwgMzM4ODIsIDMzODg3LCAzMzg5MywgMzM4OTksIDMzOTA1LCAzMzkxMiwgMzM5MTgsIAorICAgIDMzOTI0LCAzMzkzMCwgMzM5MzYsIDMzOTQyLCAzMzk0OCwgMzM5NTQsIDMzOTYwLCAzMzk2NiwgMzM5NzIsIDMzOTc4LCAKKyAgICAzMzk4NCwgMzM5OTEsIDMzOTk3LCAzNDAwMywgMzQwMDksIDM0MDE1LCAzNDAyMSwgMzQwMjQsIDM0MDI5LCAzNDAzMiwgCisgICAgMzQwMzksIDM0MDQ0LCAzNDA1MiwgMzQwNTcsIDM0MDYyLCAzNDA2OCwgMzQwNzMsIDM0MDc4LCAzNDA4MiwgMzQwODcsIAorICAgIDM0MDkzLCAzNDA5OCwgMzQxMDQsIDM0MTA5LCAzNDExNSwgMzQxMjAsIDM0MTI2LCAzNDEzMiwgMzQxMzYsIDM0MTQxLCAKKyAgICAzNDE0NiwgMzQxNTEsIDM0MTU2LCAzNDE2MCwgMzQxNjUsIDM0MTcwLCAzNDE3NSwgMzQxODEsIDM0MTg3LCAzNDE5MywgCisgICAgMzQxOTksIDM0MjA0LCAzNDIwOCwgMzQyMTEsIDM0MjE3LCAzNDIyMywgMzQyMzIsIDM0MjQwLCAzNDI0NywgMzQyNTIsIAorICAgIDM0MjU2LCAzNDI2MCwgMzQyNjUsIDE2NjUzLCAzNDI3MCwgMzQyNzgsIDM0Mjg0LCAzODY1LCAxMzM5LCAzNDI4OSwgCisgICAgMzQyOTMsIDgzODMsIDM0Mjk5LCAzNDMwNSwgMzQzMTIsIDgzOTIsIDM0MzE2LCAzNDMyMiwgMzQzMjksIDM0MzM1LCAKKyAgICAzNDM0NCwgMzQzNTIsIDkyOTksIDM0MzY0LCAzNDM2OCwgMzQzNzUsIDM0MzgxLCAzNDM4NiwgMzQzOTAsIDM0Mzk0LCAKKyAgICAzNDM5NywgMzQ0MDcsIDM0NDE2LCAzNDQyNCwgMzM3ODQsIDM0NDI5LCAzNDQzOSwgMzQ0NDksIDM0NDU5LCAzNDQ2NSwgCisgICAgMzQ0NzAsIDM0NDgwLCAzNDQ4NSwgMzQ0OTgsIDM0NTEyLCAzNDUyMywgMzQ1MzUsIDM0NTQ3LCAzNDU2MSwgMzQ1NzQsIAorICAgIDM0NTg2LCAzNDU5OCwgMTYwMTYsIDM0NjEyLCAzNDYxNywgMzQ2MjIsIDM0NjI2LCAzNDYzMCwgMzQ2MzQsIDE3NzYsIAorICAgIDI5NTQ1LCAzNDYzOCwgMzQ2NDMsIDMzODMyLCAzNDY0OCwgMzQ2NTEsIDM0NjU2LCAzNDY2MSwgMzQ2NjYsIDM0NjcyLCAKKyAgICAzNDY3OCwgMTEwNzIsIDM0NjgzLCAzNDY4OSwgMzQ2OTYsIDE3MjY2LCAzNDcwMiwgMzQ3MDcsIDM0NzEyLCAzNDcxNiwgCisgICAgMzQ3MjEsIDM0NzI2LCAzMzgzNywgMzQ3MzEsIDM0NzM2LCAzNDc0MSwgMzQ3NDcsIDMzODQzLCAzNDc1MiwgMzQ3NTUsIAorICAgIDM0NzYyLCAzNDc3MCwgMzQ3NzYsIDM0NzgyLCAzNDc4OCwgMzQ3OTksIDM0ODA0LCAzNDgxMSwgMzQ4MTgsIDM0ODI1LCAKKyAgICAzNDgzMywgMzQ4NDIsIDM0ODUxLCAzNDg1NywgMzQ4NjMsIDM0ODcxLCAzMzg0OCwgMzQ4NzYsIDM0ODgyLCAzNDg4OCwgCisgICAgMzM4NTQsIDM0ODkzLCAzNDg5OCwgMzQ5MDYsIDM0OTE0LCAzNDkyMCwgMzQ5MjcsIDM0OTMzLCAzNDk0MCwgMzQ5NDcsIAorICAgIDM0OTUzLCAzNDk2MSwgMzQ5NzEsIDM0OTc4LCAzNDk4NCwgMzQ5ODksIDM0OTk1LCAzNTAwMCwgMzUwMDUsIDM1MDEyLCAKKyAgICAzNTAyMSwgMzUwMjksIDM1MDM0LCAzNTA0MCwgMzUwNDcsIDM1MDU1LCAzNTA2MSwgMzUwNjYsIDM1MDcyLCAzNTA4MSwgCisgICAgMzUwODgsIDMwNDA5LCAzNTA5NCwgMzUwOTgsIDM1MTAzLCAzNTExMiwgMzUxMTcsIDM1MTIyLCAzNTEyNywgMTM2NTgsIAorICAgIDM1MTM1LCAzNTE0MCwgMzUxNDUsIDM1MTUwLCAzNTE1NCwgMzUxNTksIDM1MTY0LCAzNTE3MSwgMzUxNzYsIDM1MTgxLCAKKyAgICAzNTE4NiwgMzM4NTksIDIzMDg3LCAzNTE5MiwgMjU0MywgMTU1LCAzNTE5NSwgMzUxOTgsIDM1MjAyLCAzNTIwNiwgMzUyMTYsIAorICAgIDM1MjI0LCAzNTIzMSwgMzUyMzUsIDM1MjM4LCAzNTI0NiwgMzUyNTMsIDM1MjYwLCAzNTI2OSwgMzUyNzMsIDM1Mjc2LCAKKyAgICAzNTI4MiwgMzUyODYsIDM1Mjk0LCAzNTMwMiwgMzUzMDYsIDM1MzEwLCAzNTMxMywgMzUzMTksIDM1MzI2LCAzNTMzMCwgCisgICAgMzUzMzQsIDM1MzQxLCAzNTM0OSwgMzM3OTUsIDM1MzU2LCAzNTM2NCwgMzUzNjksIDExMTMyLCA2MDAsIDM3NSwgMzUzODEsIAorICAgIDM1Mzg2LCAzNTM5MSwgMzUzOTcsIDM1NDAyLCAzNTQwNywgMzg4NiwgMzU0MTIsIDM1NDE1LCAzNTQyMCwgMzU0MjUsIAorICAgIDM1NDMwLCAzNTQzNSwgMzU0NDAsIDM1NDQ3LCAyNDU2NSwgMzU0NTIsIDM1NDU3LCAzNTQ2MiwgMzU0NjcsIDM1NDcyLCAKKyAgICAzNTQ3OCwgMzU0ODMsIDM1NDg5LCAzNDAzNSwgMzU0OTUsIDM1NTAwLCAzNTUwNiwgMzU1MTIsIDM1NTIyLCAzNTUyNywgCisgICAgMzU1MzIsIDM1NTM2LCAzNTU0MSwgMzU1NDYsIDM1NTUxLCAzNTU1NiwgMzU1NjksIDM1NTc0LCAyNDIyOCwgMTg0MTksIAorICAgIDM4OTksIDM1NTc4LCAzNTU4NCwgMzU1ODksIDM1NTk0LCAzNTYwMCwgMzU2MDUsIDM1NjEwLCAzNTYxNCwgMzU2MTksIAorICAgIDM1NjI0LCAzNTYzMCwgMzU2MzUsIDM1NjQwLCAxMzQ0LCAzNTY0NCwgMzU2NDksIDM1NjU0LCAzNTY1OSwgMzU2NjMsIAorICAgIDM1NjY4LCAzNTY3MywgMzU2NzgsIDM1Njg0LCAzNTY5MCwgMzU2OTUsIDM1Njk5LCAzNTcwMywgMzU3MDgsIDM1NzEzLCAKKyAgICAzNTcxOCwgMzU3MjIsIDM1NzMwLCAzNTczNCwgMzU3NDAsIDM1NzQ0LCAzNTc1MSwgMzU3NjAsIDE4MjAzLCAzMzgwNiwgCisgICAgMzU3NjYsIDM1NzczLCAzNTc4MSwgMzU3ODgsIDM1Nzk0LCAzNTgwNywgMzU4MTksIDM1ODI0LCAzNTgzMCwgMzU4MzQsIAorICAgIDI4MDEsIDM1ODM4LCAzNTg0MiwgMzUzMjEsIDM1ODUxLCAzNTg2MiwgMzU4NjcsIDMwNDcyLCAzNTg3MiwgMzU4NzcsIAorICAgIDM1ODgxLCAzNTg4NiwgMjQ0NTgsIDM1ODkwLCAzNTg5NCwgMzU4OTksIDMzODEyLCAyMzE3NywgMzU5MDMsIDM1OTA4LCAKKyAgICAzNTkxNCwgMzU5MTksIDM1OTIzLCAzNTkyNywgMzU5MzAsIDM1OTM0LCAzNTk0MCwgMzU5NDksIDM1OTYwLCAzNTk3MiwgCisgICAgMzM4MTgsIDM1OTc3LCAzNTk4MCwgMzU5ODQsIDM1OTg4LCA0MTQsIDM1OTkzLCAzNTk5OCwgMzYwMDMsIDM2MDA4LCAKKyAgICAzNjAxMywgMzYwMTgsIDM2MDI0LCAzNjAyOSwgMzYwMzQsIDM2MDQwLCAzNjA0NSwgMzYwNTEsIDM2MDU2LCAzNjA2MiwgCisgICAgMzYwNjcsIDM2MDcyLCAzNjA3NywgMzYwODIsIDM2MDg3LCAzNjA5MiwgMzYwOTcsIDM2MTAyLCAzNjEwOCwgMzYxMTMsIAorICAgIDM2MTE4LCAzNjEyMywgMzYxMjgsIDM2MTMzLCAzNjEzOCwgMzYxNDMsIDM2MTQ5LCAzNjE1NSwgMzYxNjAsIDM2MTY1LCAKKyAgICAzNjE3MCwgMzYxNzUsIDM2MTgwLCAzNjE4NSwgMzYxOTAsIDM2MTk1LCAzNjIwMCwgMzYyMDUsIDM2MjEwLCAzNjIxNSwgCisgICAgMzYyMjAsIDM2MjI1LCAzNjIzMCwgMzYyMzUsIDM2MjQwLCAzNjI0NSwgMzYyNTEsIDMyNiwgOSwgMzYyNTYsIDM2MjYwLCAKKyAgICAzNjI2NCwgMzYyNzIsIDM2Mjc2LCAzNjI4MCwgMzYyODMsIDM2Mjg2LCAzNjI4OCwgMzYyOTMsIDM2Mjk3LCAzNjMwMiwgCisgICAgMzYzMDYsIDM2MzExLCAzNjMxNSwgMzYzMjAsIDM2MzI0LCAzNjMyNywgMzYzMjksIDM2MzMzLCAzNjMzOCwgMzYzNDIsIAorICAgIDM2MzUzLCAzNjM1NiwgMzYzNTgsIDM2MzYyLCAzNjM3NCwgMzYzODMsIDM2Mzg3LCAzNjM5MSwgMzYzOTcsIDM2NDAyLCAKKyAgICAzNjQxMSwgMzY0MTcsIDM2NDIyLCAzNjQyNywgMzY0MzEsIDM2NDM1LCAzNjQ0MCwgMzY0NDcsIDM2NDUyLCAzNjQ1OCwgCisgICAgMzY0NjMsIDM2NDY3LCAzNjQ3NCwgMjc5NzYsIDI3OTg2LCAzNjQ3OCwgMzY0ODMsIDM2NDg4LCAzNjQ5MywgMzY1MDAsIAorICAgIDM2NTA0LCAzNjUxMSwgMzY1MTcsIDg1MzIsIDM2NTIxLCAzNjUzMCwgMzY1MzgsIDM2NTUzLCAzNjU2NywgMzY1NzYsIAorICAgIDM2NTg0LCAzNjU5NSwgMzY2MDQsIDM2NjA5LCAzNjYxNiwgNzU4MCwgMzY2MjYsIDM2NjMxLCAzNjYzNiwgMzY2NDAsIAorICAgIDM2NjQzLCAzNjY0OCwgMzY2NTIsIDM2NjU3LCAzNjY2MSwgMzY2NjgsIDM2NjczLCAzNjY3OCwgMzY2ODMsIDk0NzQsIAorICAgIDM2NjkzLCAzNjY5NSwgMzY2OTgsIDM2NzAxLCAzNjcwNSwgMzY3MTEsIDM2NzE1LCAzNjcyMCwgMzY3MjUsIDM2NzQzLCAKKyAgICAzNjc1NywgMzY3NzYsIDM2NzkzLCAzNjgwMiwgMzY4MTAsIDM2ODE1LCAzNjgyMCwgMTQ2NywgMzY4MjYsIDM2ODMyLCAKKyAgICAzNjgzNywgMzY4NDcsIDM2ODU2LCAzNjg2NCwgMzY4NjksIDM2ODc1LCAzNjg4MCwgMzY4ODksIDM2OTAwLCAzNjkwNSwgCisgICAgMzY5MTIsIDM2OTE4LCAzNjkyMiwgMzY5MjksIDM2OTM3LCAzNjk0NCwgMzY5NTcsIDM2OTY1LCAzNjk2OSwgMzY5NzksIAorICAgIDM2OTg0LCAzNjk4OCwgMzY5OTYsIDM3MDA0LCAzNzAwOSwgMzcwMTMsIDM3MDE3LCAzNzAyNiwgMzcwMzIsIDM3MDM3LCAKKyAgICAzNzA0NSwgMzcwNTUsIDM3MDY0LCAzNzA3MywgMzcwODIsIDM3MDkzLCAzNzEwMSwgMzcxMTIsIDM3MTIxLCAzNzEyOCwgCisgICAgMzcxMzQsIDM3MTM5LCAzNzE1MCwgMzcxNjEsIDM3MTY2LCAzNzE3MCwgMzcxNzMsIDM3MTc3LCAzNzE4NSwgMzcxOTEsIAorICAgIDM3MjAyLCAzNzIxMywgMzcyMjQsIDM3MjM1LCAzNzI0NiwgMzcyNTcsIDM3MjY4LCAzNzI3OSwgMzcyOTEsIDM3MzAzLCAKKyAgICAzNzMxNSwgMzczMjcsIDM3MzM5LCAzNzM1MSwgMzczNjMsIDM3MzcyLCAzNzM3NiwgMzczODQsIDM3MzkwLCAzNzM5NiwgCisgICAgMzc0MDMsIDM3NDA5LCAzNzQxNCwgMzc0MjAsIDI0NDIsIDM3NDI0LCAzNzQyNiwgMzc0MzEsIDM3NDM2LCAzNzQ0MSwgCisgICAgMzc0NDQsIDM3NDQ2LCAzNzQ1MCwgMzc0NTMsIDM3NDYwLCAzNzQ2NCwgMTA3NjIsIDM3NDY4LCAzNzQ3NCwgMzc0ODQsIAorICAgIDM3NDg5LCAzNzQ5NSwgMzc0OTksIDM3NTA0LCAzNzUxNywgMjg0MTcsIDM3NTIzLCAzNzUzMiwgMzc1NDEsIDE5MjgxLCAKKyAgICAzNzU0OCwgMzc1NTcsIDM0NDQ1LCAzNzU2NSwgMzc1NzAsIDM3NTc0LCAzNzU4MywgMzc1OTEsIDM3NTk4LCAzNzYwMywgCisgICAgMzc2MDcsIDM3NjEyLCAzNzYxNywgMzc2MjUsIDM3NjI5LCAzNzYzNywgMzc2NDMsIDM3NjQ5LCAzNzY1NCwgMzc2NTksIAorICAgIDM3NjYzLCAzNzY2NiwgMzc2NzEsIDM3Njg0LCAzNzcwMCwgMjUwNTUsIDM3NzE3LCAzNzcyOSwgMzc3NDYsIDM3NzU4LCAKKyAgICAzNzc3MiwgMjUwNzIsIDI1MDkxLCAzNzc4NCwgMzc3OTYsIDI3MDgsIDM3ODEwLCAzNzgxNSwgMzc4MjAsIDM3ODI1LCAKKyAgICAzNzgyOSwgMzc4MzYsIDM3ODQ4LCAzNzg1NSwgMzc4NjQsIDM3ODY3LCAzNzg3OCwgMzc4ODksIDM3ODk0LCAzNDg2OCwgCisgICAgODkzLCAzNzg5OCwgMzc5MDIsIDM3OTA2LCAzNzkwOSwgMzc5MTQsIDM3OTE5LCAzNzkyNSwgMzc5MzAsIDM3OTM1LCAKKyAgICAzNzk0MSwgMzc5NDcsIDM3OTUyLCAzNzk1NiwgMzc5NjEsIDM3OTY2LCAzNzk3MSwgMzc5NzUsIDM3OTc4LCAzNzk4NCwgCisgICAgMzc5ODksIDM3OTk0LCAzNzk5OSwgMzgwMDMsIDM4MDA4LCAzODAxNCwgMzgwMjIsIDI4NjY5LCAzODAyNywgMzgwMzIsIAorICAgIDM4MDM5LCAzODA0NSwgMzgwNTEsIDM4MDU2LCAzODA2NCwgMjQ1NzQsIDM4MDcxLCAzODA3NiwgMzgwODEsIDM4MDg2LCAKKyAgICAzODA5MCwgMzgwOTMsIDM4MDk4LCAzODEwMiwgMzgxMDYsIDM4MTEzLCAzODExOSwgMzgxMjUsIDM4MTMxLCAzODEzOCwgCisgICAgMzgxNDMsIDM4MTQ5LCAzNjk5OSwgMzgxNTMsIDM4MTU3LCAzODE2MiwgMzgxNzUsIDM4MTgwLCAzODE4NiwgMzgxOTQsIAorICAgIDM4MjAxLCAzODIwOSwgMzgyMTksIDM4MjI1LCAzODIzMSwgMzgyMzcsIDM4MjQxLCAzODI1MCwgMzgyNTgsIDM4MjY1LCAKKyAgICAzODI3MCwgMzgyNzUsIDExNDM1LCAzODI4MCwgMzgyODcsIDM4MjkzLCAzODMwMywgMzgzMDgsIDM4MzE0LCAzODMyMiwgCisgICAgMzc3NCwgMzgzMjksIDM4MzM2LCAzODM0MiwgMzgzNDksIDM3ODAsIDM4MzUzLCAzODM1OCwgMzgzNjksIDM4Mzc2LCAKKyAgICAzODM4MiwgMzgzOTEsIDM4Mzk1LCA0MjU4LCAzODM5OCwgMzg0MDUsIDM4NDExLCAzODQxNywgMzg0MjUsIDM4NDM1LCAKKyAgICAzMTY2MiwgMzg0NDIsIDM4NDUwLCAzODQ1NiwgMzg0NjEsIDM4NDY3LCAzODQ3MiwgMzg0NzYsIDI4MjYwLCAzODQ4MiwgCisgICAgMzg0ODksIDM4NDk1LCAzODUwNCwgMzg1MTEsIDI1NzkxLCAzODUxNywgMzg1MjIsIDM4NTI2LCAzODUzNCwgMzg1NDIsIAorICAgIDEwNDI4LCA2MTk5LCAzODU0OSwgMzg1NTMsIDM4NTU1LCAzODU1OSwgMzg1NjQsIDM4NTY2LCAzODU3MSwgMzg1NzcsIAorICAgIDM4NTgyLCAzODU4NywgMzg1OTQsIDM1NDQzLCAzODYwMCwgMzg2MDUsIDM4NjA5LCAzODYxNCwgMzg2MTgsIDM4NjI3LCAKKyAgICAzODYzMSwgMzg2MzcsIDM4NjQ0LCAzODY1MCwgMzg2NTcsIDM4NjYyLCAzODY3MSwgMzg2NzYsIDM4NjgwLCAzODY4NSwgCisgICAgMzg2OTIsIDM4NzAwLCAzODcwOCwgMzg3MTMsIDIzMjMzLCAzODcxNywgMzg3MjAsIDM4NzI0LCAzODcyOCwgMTE4MjMsIAorICAgIDkwNywgMzg3MzIsIDM4NzM3LCAzODc0NSwgMzg3NDksIDM4NzU4LCAzODc2NSwgMzg3NjksIDM4NzczLCAzODc4MSwgCisgICAgMzg3ODgsIDM4Nzk4LCAzODgwMiwgMzg4MDYsIDM4ODE0LCAzODgyMiwgMzg4MjgsIDM4ODMzLCAzODg0MiwgMTQ2NDAsIAorICAgIDM4ODQ4LCAzODg1NywgMzg4NjIsIDM4ODY5LCAzODg3NiwgMzg4ODQsIDM4ODkxLCAzODg5OSwgMzg5MDcsIDM4OTEyLCAKKyAgICAzODkxOSwgMzg5MjYsIDM4OTMzLCAzODk0MCwgMzg5NDcsIDM4OTUyLCAzODk1OSwgMzg5NjUsIDM4OTgyLCAzODk5MCwgCisgICAgMzkwMDAsIDM5MDA4LCAzOTAxNSwgNDIyLCAzOTAxOSwgMzkwMjUsIDM5MDI5LCAzOTAzNCwgMzY2MDAsIDM5MDQwLCAKKyAgICAzOTA0MywgMzkwNDcsIDM5MDU4LCAzOTA2NiwgMzc4NSwgMzkwNzQsIDM5MDgwLCAzOTA4NiwgMzkwOTYsIDM5MTA1LCAKKyAgICAzOTExNSwgMzkxMjIsIDM5MTI4LCAzOTEzMywgMzc5MSwgMzc5NywgMzkxNDIsIDM5MTQ5LCAzOTE1NywgMzkxNjIsIAorICAgIDM5MTY2LCAzOTE3MywgMzkxODEsIDM5MTg4LCAzOTE5NCwgMzkyMDMsIDM5MjEzLCAzOTIxOSwgMzkyMjcsIDM5MjM2LCAKKyAgICAzOTI0MywgMzkyNTEsIDM5MjU4LCAyMzkzNywgMzkyNjIsIDM5MjY5LCAzOTI3NSwgMzkyODUsIDM5Mjk0LCAzOTMwMiwgCisgICAgMzkzMTMsIDM5MzE3LCAzOTMyNywgMzkzMzMsIDM5MzQwLCAzOTM0OCwgMzkzNTcsIDM5MzY2LCAzOTM3NiwgMzkzODcsIAorICAgIDM5Mzk0LCAzOTM5OSwgMzk0MDYsIDMwNzcsIDM5NDE0LCAzOTQyMCwgMzk0MjUsIDM5NDMxLCAzOTQzNywgMzk0NDIsIAorICAgIDM5NDU1LCAzOTQ2OCwgMzk0ODEsIDM5NDg4LCAzOTQ5NCwgMzk1MDIsIDM5NTEwLCAzOTUxNSwgMzk1MTksIDE0MzYsIAorICAgIDM5NTIzLCAzOTUyNywgMzk1MzEsIDM5NTM1LCAzOTUzOSwgMzk1NDMsIDM5NTQ3LCAzOTU1MSwgMzk1NTUsIDM5NTU5LCAKKyAgICAzOTU2MywgMzk1NjcsIDM5NTcxLCAzOTU3NSwgMzk1NzksIDM5NTgzLCAzOTU4NywgMzk1OTEsIDM5NTk1LCAzOTU5OSwgCisgICAgMzk2MDMsIDM5NjA3LCAzOTYxMSwgMzk2MTUsIDM5NjE5LCAzOTYyMywgMzk2MjcsIDM5NjMxLCAzOTYzNSwgMzk2MzksIAorICAgIDM5NjQzLCAzOTY0NywgMzk2NTEsIDM5NjU1LCAzOTY1OSwgMzk2NjMsIDM5NjY3LCAzOTY3MSwgMzk2NzUsIDM5Njc5LCAKKyAgICAzOTY4MywgMzk2ODcsIDM5NjkxLCAzOTY5NSwgMzk2OTksIDM5NzAzLCAzOTcwNywgMzk3MTEsIDM5NzE1LCAzOTcxOSwgCisgICAgMzk3MjMsIDM5NzI3LCAzOTczMSwgMzk3MzUsIDM5NzM5LCAzOTc0MywgMzk3NDcsIDM5NzUxLCAzOTc1NSwgMzk3NTksIAorICAgIDM5NzYzLCAzOTc2NywgMzk3NzEsIDM5Nzc1LCAzOTc3OSwgMzk3ODMsIDM5Nzg3LCAzOTc5MSwgMzk3OTUsIDM5Nzk5LCAKKyAgICAzOTgwMywgMzk4MDcsIDM5ODExLCAzOTgxNSwgMzk4MTksIDM5ODIzLCAzOTgyNywgMzk4MzEsIDM5ODM1LCAzOTgzOSwgCisgICAgMzk4NDMsIDM5ODQ3LCAzOTg1MSwgMzk4NTUsIDM5ODU5LCAzOTg2MywgMzk4NjcsIDM5ODcxLCAzOTg3NSwgMzk4NzksIAorICAgIDM5ODgzLCAzOTg4NywgMzk4OTEsIDM5ODk1LCAzOTg5OSwgMzk5MDMsIDM5OTA3LCAzOTkxMSwgMzk5MTUsIDM5OTE5LCAKKyAgICAzOTkyMywgMzk5MjcsIDM5OTMxLCAzOTkzNSwgMzk5MzksIDM5OTQzLCAzOTk0NywgMzk5NTEsIDM5OTU1LCAzOTk1OSwgCisgICAgMzk5NjMsIDM5OTY3LCAzOTk3MSwgMzk5NzUsIDM5OTc5LCAzOTk4MywgMzk5ODcsIDM5OTkxLCAzOTk5NSwgMzk5OTksIAorICAgIDQwMDAzLCA0MDAwNywgNDAwMTEsIDQwMDE1LCA0MDAxOSwgNDAwMjMsIDQwMDI3LCA0MDAzMSwgNDAwMzUsIDQwMDM5LCAKKyAgICA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgNDAwNzEsIDQwMDc1LCA0MDA3OSwgCisgICAgNDAwODMsIDQwMDg3LCA0MDA5MSwgNDAwOTUsIDQwMDk5LCA0MDEwMywgNDAxMDcsIDQwMTExLCA0MDExNSwgNDAxMTksIAorICAgIDQwMTIzLCA0MDEyNywgNDAxMzEsIDQwMTM1LCA0MDE0MCwgNDAxNDQsIDQwMTQ5LCA0MDE1MywgNDAxNTgsIDQwMTYyLCAKKyAgICA0MDE2NywgNDAxNzEsIDQwMTc3LCA0MDE4MiwgNDAxODYsIDQwMTkxLCA0MDE5NSwgNDAyMDAsIDQwMjA0LCA0MDIwOSwgCisgICAgNDAyMTMsIDQwMjE4LCA0MDIyMiwgNDAyMjcsIDQwMjMxLCA0MDIzNiwgNDAyNDAsIDQwMjQ2LCA0MDI1MiwgNDAyNTcsIAorICAgIDQwMjYxLCA0MDI2NiwgNDAyNzAsIDQwMjc2LCA0MDI4MSwgNDAyODUsIDQwMjkwLCA0MDI5NCwgNDAyOTksIDQwMzAzLCAKKyAgICA0MDMwOSwgNDAzMTQsIDQwMzE4LCA0MDMyMywgNDAzMjcsIDQwMzMyLCA0MDMzNiwgNDAzNDEsIDQwMzQ1LCA0MDM1MSwgCisgICAgNDAzNTYsIDQwMzYwLCA0MDM2NSwgNDAzNjksIDQwMzc1LCA0MDM4MCwgNDAzODQsIDQwMzg5LCA0MDM5MywgNDAzOTgsIAorICAgIDQwNDAyLCA0MDQwNywgNDA0MTEsIDQwNDE2LCA0MDQyMCwgNDA0MjYsIDQwNDMxLCA0MDQzNSwgNDA0NDEsIDQwNDQ2LCAKKyAgICA0MDQ1MCwgNDA0NTYsIDQwNDYxLCA0MDQ2NSwgNDA0NzAsIDQwNDc0LCA0MDQ3OSwgNDA0ODMsIDQwNDg5LCA0MDQ5NSwgCisgICAgNDA1MDEsIDQwNTA3LCA0MDUxMywgNDA1MTksIDQwNTI1LCA0MDUzMSwgNDA1MzYsIDQwNTQwLCA0MDU0NSwgNDA1NDksIAorICAgIDQwNTU1LCA0MDU2MCwgNDA1NjQsIDQwNTY5LCA0MDU3MywgNDA1NzgsIDQwNTgyLCA0MDU4NywgNDA1OTEsIDQwNTk2LCAKKyAgICA0MDYwMCwgNDA2MDUsIDQwNjA5LCA0MDYxNCwgNDA2MTgsIDQwNjI0LCA0MDYyOSwgNDA2MzMsIDQwNjM4LCA0MDY0MiwgCisgICAgNDA2NDgsIDQwNjU0LCA0MDY1OSwgMTIyLCA2MywgNDA2NjMsIDQwNjY1LCA0MDY2OSwgNDA2NzMsIDQwNjc3LCA0MDY4MiwgCisgICAgNDA2ODYsIDQwNjkwLCA0MDY5NSwgMTAzNDEsIDQwNzAwLCA0MDcwNiwgMTczNywgNjYyMSwgNDA3MTIsIDQwNzE1LCAKKyAgICA0MDcyMCwgNDA3MjQsIDQwNzI5LCA0MDczMywgNDA3MzcsIDQwNzQyLCAxMTIxOSwgNDA3NDYsIDQwNzUwLCA0MDc1NCwgCisgICAgNTQwLCA0MDc1OCwgMTY5MTQsIDQwNzYzLCA0MDc2NywgNDA3NzIsIDQwNzc3LCA0MDc4MiwgNDA3ODYsIDQwNzkzLCAKKyAgICAyODQ0MSwgNDA3OTksIDQwODAyLCA0MDgwNiwgNDA4MTEsIDQwODE3LCA0MDgyMSwgNDA4MjQsIDQwODMyLCA0MDgzOCwgCisgICAgNDA4NDMsIDQwODQ3LCA0MDg1MCwgNDA4NTQsIDQwODYwLCA0MDg2NCwgNDA4NjgsIDM1NzMsIDM1NzgsIDMxODg2LCAKKyAgICA0MDg3MSwgNDA4NzUsIDQwODc5LCA0MDg4MywgNDA4ODcsIDQwODk1LCA0MDkwMiwgNDA5MDYsIDE0NTkwLCA0MDkxMywgCisgICAgNDA5MTgsIDQwOTMyLCA0MDkzOSwgNDA5NTAsIDM0MSwgNDA5NTUsIDQwOTU5LCA0MDk2NSwgNDA5NzcsIDQwOTgzLCAKKyAgICA0MDk4OSwgNDA5OTMsIDMxOTIzLCA0MTAwMiwgNDEwMDgsIDQxMDE3LCA0MTAyMSwgNDEwMjUsIDQxMDMwLCA0MTAzNiwgCisgICAgNDEwNDEsIDQxMDQ1LCA0MTA1MCwgNDEwNTQsIDQxMDU4LCA0MTA2NSwgNDEwNzEsIDQxMDc2LCA0MTA4NywgNDExMDIsIAorICAgIDQxMTE3LCA0MTEzMiwgNDExNDgsIDQxMTY2LCAxMTE2OSwgNDExODAsIDQxMTg3LCA0MTE5MSwgNDExOTQsIDQxMjAzLCAKKyAgICA0MTIwOCwgNDEyMTIsIDQxMjIwLCAxNzQ2OSwgNDEyMjgsIDQxMjMyLCA0MTI0MiwgNDEyNTMsIDMxODU2LCA0MTI2NiwgCisgICAgNDEyNzAsIDQxMjc5LCA0MTI5NywgNDEzMTYsIDQxMzI0LCAxMDYyMywgMTEzMzIsIDQxMzI4LCAyNDQ3MCwgNDEzMzEsIAorICAgIDMyODI0LCA0MTMzNiwgMTA2MjIsIDQxMzQxLCA0MTM0NywgNDEzNTIsIDQxMzU4LCA0MTM2MywgNDEzNjksIDQxMzc0LCAKKyAgICA0MTM4MCwgNDEzODUsIDQxMzkxLCA0MTM5NywgNDE0MDMsIDQxNDA4LCA0MTM2NCwgNDEzNzAsIDQxMzc1LCA0MTM4MSwgCisgICAgNDEzODYsIDQxMzkyLCA0MTM5OCwgODU0NSwgNDEwMywgNDE0MTIsIDQxNDIwLCA0MTQyNCwgNDE0MjcsIDQxNDM0LCAKKyAgICA0MTQzOCwgNDE0NDMsIDQxNDQ4LCA0MTQ1NSwgNDE0NjEsIDQxNDY3LCA0MTQ3MiwgMTYyOTcsIDQxNDc2LCAyODI3NywgCisgICAgNDE0ODAsIDQxNDg0LCA0MTQ4OCwgNDE0OTQsIDQxNDk4LCAzMDM0OSwgNDE1MDcsIDk2MzQsIDQxNTExLCAxMDAyNywgCisgICAgNDE1MTQsIDQxNTIxLCA0MTUyNywgNDE1MzEsIDEzMTE0LCA0MTUzOCwgNDE1NDQsIDQxNTQ5LCA0MTU1NiwgNDE1NjMsIAorICAgIDQxNTcwLCAzMTA3NiwgODQ0MiwgNDE1NzcsIDQxNTg0LCA0MTU5MSwgNDE1OTcsIDQxNjAyLCA0MTYwOSwgNDE2MjAsIAorICAgIDQxNjI2LCA0MTYzMSwgNDE2MzYsIDQxNjQxLCA0MTY0NSwgNDE2NTAsIDQxNjU3LCA0MTM2NSwgNDE2NjEsIDQxNjcxLCAKKyAgICA0MTY4MCwgNDE2OTEsIDQxNjk3LCA0MTcwNSwgNDE3MTIsIDQxNzE3LCA0MTcyMiwgNDE3MjcsIDQxNzMyLCA0MTczNywgCisgICAgNDE3NDEsIDQxNzQ1LCA0MTc1MiwgNDE3NTgsIDQxNzY2LCAyMzM4LCAxMDg2LCAxMTIzNSwgMTEyNDcsIDExMjUyLCAKKyAgICAxMTI1OCwgNDE3NzUsIDExMjYzLCAxMTI2OCwgMTEyNzQsIDQxNzgwLCA0MTc5MCwgNDE3OTQsIDExMjc5LCA0MTc5OSwgCisgICAgMTg2MTcsIDQxODAyLCA0MTgwNywgNDE4MTEsIDM3ODU5LCA0MTgyMiwgNDE4MjcsIDQxODM0LCA0MTg0MSwgNDE4NDUsIAorICAgIDQxODQ4LCA0MTg1NiwgMTExODIsIDQxODYzLCA0MTg2NiwgNDE4NzIsIDQxODgyLCA2MjUxLCA0MTg5MSwgNDE4OTcsIAorICAgIDQxOTAxLCA0MTkwOSwgNDE5MTMsIDQxOTIzLCA0MTkyOSwgNDE5MzQsIDQxOTQ1LCA0MTk1NCwgNDE5NjMsIDQxOTcyLCAKKyAgICA0MTk4MSwgNDE5OTAsIDQxOTk5LCA0MjAwOCwgNDIwMTQsIDQyMDIwLCA0MjAyNSwgNDIwMzEsIDQyMDM3LCA0MjA0MywgCisgICAgNDIwNDgsIDQyMDUxLCA0MjA1OCwgNDIwNjQsIDQyMDY4LCA0MjA3MywgNDIwODAsIDQyMDg3LCA0MjA5MSwgNDIwOTQsIAorICAgIDQyMTA0LCA0MjExNywgNDIxMjYsIDQyMTM1LCA0MjE0NiwgNDIxNTksIDQyMTcxLCA0MjE4MiwgNDIxOTEsIDQyMjAyLCAKKyAgICA0MjIwNywgNDIyMTYsIDQyMjIxLCAxMTI4NCwgNDIyMjcsIDQyMjM0LCA0MjI0MiwgNDIyNDcsIDQyMjUxLCA0MjI1OCwgCisgICAgNDIyNjUsIDQwNDYsIDI1LCA0MjI2OSwgNDIyNzQsIDE4NDY2LCA0MjI3OCwgNDIyODEsIDQyMjg0LCAzMDUyOSwgNDIyODgsIAorICAgIDMxMDg1LCA0MjI5NiwgNDIzMDAsIDQyMzA0LCA0MjMwNywgNDIzMTMsIDQyMzE5LCA0MjMyNCwgMzM4ODMsIDQyMzMzLCAKKyAgICA0MjM0MSwgNDIzNDcsIDQyMzU0LCAzMDUxMiwgNDIzNTgsIDMwNzMyLCA0MjM2MiwgNDIzNzEsIDQyMzc1LCA0MjM4MywgCisgICAgNDIzODksIDQyMzk1LCA0MjQwMCwgNDI0MDQsIDMxMTA0LCA0MjQxMCwgNDI0MTMsIDQyNDIxLCA0MjQyOSwgNDM5OSwgCisgICAgNDI0MzUsIDQyNDM5LCA0MjQ0NCwgNDI0NTEsIDQyNDU3LCA0MjQ2MiwgNDI0NjcsIDQyNDcxLCA0MjQ3NywgNDI0ODIsIAorICAgIDQyNDg4LCA0MzExLCA4NDgsIDQyNDk1LCA0MjQ5OSwgNDI1MDIsIDE2Nzg3LCA0MjUxNCwgNDI1MjIsIDQyNTMwLCA0MjUzOCwgCisgICAgNDI1NDYsIDQyNTUzLCA0MjU2MSwgNDI1NjksIDQyNTc2LCA0MjU4NCwgNDI1OTIsIDQyNjAwLCA0MjYwOCwgNDI2MTYsIAorICAgIDQyNjI0LCA0MjYzMiwgNDI2NDAsIDQyNjQ4LCA0MjY1NiwgNDI2NjQsIDQyNjcxLCA0MjY3OSwgNDI2ODcsIDQyNjk1LCAKKyAgICA0MjcwMywgNDI3MTEsIDQyNzE5LCA0MjcyNywgNDI3MzUsIDQyNzQzLCA0Mjc1MSwgNDI3NTksIDQyNzY3LCA0Mjc3NSwgCisgICAgNDI3ODMsIDQyNzkxLCA0Mjc5OSwgNDI4MDcsIDQyODE1LCA0MjgyMywgNDI4MzAsIDQyODM4LCA0Mjg0NSwgNDI4NTMsIAorICAgIDQyODYxLCA0Mjg2OSwgNDI4NzcsIDQyODg1LCA0Mjg5MywgNDI5MDEsIDQyOTA5LCA0MjkyMCwgMjM5NzMsIDQyOTI1LCAKKyAgICA0MjkyOCwgNDI5MzUsIDQyOTM5LCA0Mjk0NSwgNDI5NDksIDQyOTU1LCA0Mjk2MCwgNDI5NjYsIDQyOTcxLCA0Mjk3NiwgCisgICAgNDI5ODAsIDQyOTg0LCA0Mjk4OSwgNDI5OTQsIDQzMDA0LCA0MzAxMCwgNDMwMjMsIDQzMDI5LCA0MzAzNSwgNDMwNDEsIAorICAgIDQzMDQ4LCA0MzA1MywgNDMwNTksIDQzMDY0LCAxODM2MiwgODU2LCA0MzA2OSwgNDMwNzIsIDQzMDc1LCA0MzA3OCwgCisgICAgMzM5NjcsIDMzOTczLCA0MzA4MSwgMzM5NzksIDMzOTkyLCAzMzk5OCwgMzQwMDQsIDQzMDg3LCAzNDAxMCwgMzQwMTYsIAorICAgIDQzMDkzLCA0MzA5OSwgMTgsIDQzMTA3LCA0MzExNCwgNDMxMTgsIDQzMTIyLCA0MzEzMCwgMzQ3NTcsIDQzMTM0LCA0MzEzOCwgCisgICAgNDMxNDUsIDQzMTUwLCA0MzE1NCwgNDMxNTksIDQzMTY1LCA0MzE3MCwgNDMxNzYsIDQzMTgxLCA0MzE4NSwgNDMxODksIAorICAgIDQzMTkzLCA0MzE5OCwgNDMyMDIsIDQzMjA3LCA0MzIxMSwgNDMyMTUsIDQzMjIyLCA0MzIyNywgNDMyMzEsIDQzMjM1LCAKKyAgICA0MzI0MCwgNDMyNDQsIDQzMjQ5LCA0MzI1MywgNDMyNTcsIDQzMjYyLCA0MzI2OCwgMTcwNjAsIDE3MDY1LCA0MzI3MywgCisgICAgNDMyNzcsIDQzMjgwLCA0MzI4NCwgNDMyODgsIDIzMDQ0LCA0MzI5MywgNDMyOTcsIDQzMzAzLCA0MzMxMCwgNDMzMTYsIAorICAgIDQzMzIxLCA0MzMzMSwgNDMzMzYsIDQzMzQ0LCA0MzM0OCwgNDMzNTEsIDM0NzcyLCA0MzM1NSwgNDM3NiwgNDMzNjAsIAorICAgIDQzMzY1LCA0MzM2OSwgNDMzNzQsIDQzMzc4LCA0MzM4MywgMTQ2NTgsIDQzMzk0LCA0MzM5OCwgNDM0MDEsIDQzNDA1LCAKKyAgICA0MzQxMCwgNDM0MTQsIDQzNDE5LCA0MzQyNCwgNDM0MjgsIDQzNDMyLCA0MzQzNiwgNDM0MzksIDQzNDQzLCA4NTY0LCAKKyAgICAxNDY3NCwgNDM0NDYsIDQzNDQ5LCA0MzQ1NSwgNDM0NjAsIDQzNDY2LCA0MzQ3MSwgNDM0NzcsIDQzNDgyLCA0MzQ4OCwgCisgICAgNDM0OTMsIDQzNDk5LCA0MzUwNSwgNDM1MTEsIDQzNTE2LCA0MzUyMCwgNDM1MjQsIDQzNTMzLCA0MzU0OSwgNDM1NjUsIAorICAgIDQzNTc1LCAzMDQxOSwgNDM1ODIsIDQzNTg2LCA0MzU5MSwgNDM1OTYsIDQzNjAwLCA0MzYwNCwgMzkzNjEsIDQzNjEwLCAKKyAgICA0MzYxNSwgNDM2MTksIDQzNjI2LCA0MzYzMSwgNDM2MzYsIDQzNjQwLCA0MzY0NCwgNDM2NTAsIDI5MzQ4LCA0MzY1NCwgCisgICAgMjMzNDAsIDQzNjU5LCA0MzY2NiwgNDM2NzQsIDQzNjgwLCA0MzY4NywgNDM2OTUsIDQzNzAxLCA0MzcwNSwgNDM3MTAsIAorICAgIDQzNzE2LCA0MzcyNCwgNDM3MjksIDQzNzMzLCA0Mzc0MiwgMTAzMjIsIDQzNzUwLCA0Mzc1NCwgNDM3NjIsIDQzNzY5LCAKKyAgICA0Mzc3NCwgNDM3NzksIDQzNzg0LCA0Mzc4OCwgNDM3OTEsIDQzNzk1LCA0Mzc5OCwgNDM4MDIsIDQzODA5LCA0MzgxNCwgCisgICAgNDM4MTgsIDQzODI0LCAyODc0NywgMzQwMzAsIDQzODI4LCA0MzgzNywgNDM4NDUsIDQzODUxLCA0Mzg1OCwgNDM4NjQsIAorICAgIDQzODcwLCA0Mzg3NSwgNDM4NzgsIDQzODgwLCA0Mzg4NywgNDM4OTQsIDQzOTAwLCA0MzkwNCwgNDM5MDcsIDQzOTExLCAKKyAgICA0MzkxNSwgNDM5MTksIDQzOTI0LCA0MzkyOCwgNDM5MzIsIDQzOTM1LCA0MzkzOSwgNDM5NTMsIDI1MTIxLCA0Mzk3MiwgCisgICAgNDM5ODUsIDQzOTk4LCA0NDAxMSwgMjUxMzksIDQ0MDI2LCAxMTUyMCwgNDQwNDEsIDQ0MDQ3LCA0NDA1MSwgNDQwNjEsIAorICAgIDQ0MDY1LCA0NDA2OSwgNDQwNzMsIDQ0MDgwLCA0NDA4NSwgNDQwODksIDQ0MDk2LCA0NDEwMiwgNDQxMDcsIDQ0MTEzLCAKKyAgICA0NDEyMywgNDQxMzUsIDQ0MTQ2LCA0NDE1MSwgNDQxNTgsIDQ0MTYyLCA0NDE2NiwgNDQxNjksIDE3NDkwLCAzODU0LCAKKyAgICA0NDE3NywgMTcwODcsIDQ0MTkwLCA0NDE5NywgNDQyMDQsIDQ0MjA4LCA0NDIxMiwgNDQyMTcsIDQ0MjIzLCA0NDIyOCwgCisgICAgNDQyMzQsIDQ0MjM4LCA0NDI0MiwgNDQyNDUsIDQ0MjUwLCA0NDI1NCwgNDQyNTksIDgxMDYsIDEwMTIsIDQ0MjY0LCAKKyAgICA0NDI2OCwgNDQyNzQsIDQ0MjgzLCA0NDI4OCwgNDQyOTcsIDQ0MzA0LCAzOTIwOSwgNDQzMTAsIDQ0MzE1LCA0NDMxOSwgCisgICAgNDQzMjQsIDQ0MzMxLCA0NDMzNywgNDQzNDEsIDQ0MzQ0LCA0NDM0OCwgNDQzNTMsIDE1OTgxLCA0NDM2MCwgNDQzNjcsIAorICAgIDQ0MzcxLCA0NDM3NCwgNDQzNzksIDQ0Mzg0LCA0NDM5MCwgNDQzOTUsIDQ0NDAwLCA0NDQwNCwgNDQ0MDksIDQ0NDE5LCAKKyAgICA0NDQyNCwgNDQ0MzAsIDQ0NDM1LCA0NDQ0MSwgNDQ0NDYsIDQ0NDUyLCA0NDQ2MiwgNDQ0NjcsIDQ0NDcyLCA0NDQ3NiwgCisgICAgNDQ0ODEsIDc1ODIsIDc1OTQsIDQ0NDg2LCA0NDQ4OSwgNDQ0OTYsIDQ0NTAyLCA0NDUxMSwgOTU2MCwgMzcxMzEsIDQ0NTE5LCAKKyAgICA0NDUyMywgNDQ1MjcsIDM0ODIwLCA0NDUzNSwgNDQ1NDYsIDQ0NTU0LCAzOTQwOSwgNDQ1NjEsIDQ0NTY2LCA0NDU3MSwgCisgICAgNDQ1ODIsIDQ0NTg5LCA0NDYwMCwgMzQ4NDQsIDIzMzUxLCA0NDYwOCwgOTM0LCA0NDYxMywgMTUwMzAsIDQ0NjE5LCAKKyAgICAzMDUwMywgNDQ2MjUsIDQ0NjMwLCA0NDY0MCwgNDQ2NDksIDQ0NjU2LCA0NDY2MiwgNDQ2NjYsIDQ0NjY5LCA0NDY3NiwgCisgICAgNDQ2ODIsIDQ0Njg5LCA0NDY5NSwgNDQ3MDUsIDQ0NzEzLCA0NDcxOSwgNDQ3MjUsIDQ0NzMwLCA0NDczNCwgNDQ3NDEsIAorICAgIDQ0NzQ2LCA0NDc1MiwgNDQ3NTksIDQ0NzY1LCA0MzkyMCwgNDQ3NzAsIDQ0Nzc0LCA1NzEsIDE1MTQ2LCA0NDc4MCwgCisgICAgNDQ3ODUsIDQ0Nzg4LCA0NDc5NCwgNDQ4MDIsIDEzNjEsIDQ0ODA3LCA0NDgxMSwgNDQ4MTYsIDQ0ODIxLCA0NDgyNiwgCisgICAgNDQ4MzMsIDQ0ODM3LCA0NDg0MiwgNDQ4NDgsIDQ0ODUyLCAzNDA0MCwgNDQ4NTcsIDQ0ODYyLCA0NDg3MSwgNDQ4NzgsIAorICAgIDQ0ODg4LCA0NDg5NCwgMzA1NDcsIDQ0OTExLCA0NDkyMCwgNDQ5MjgsIDQ0OTM0LCA0NDkzOSwgNDQ5NDYsIDQ0OTUyLCAKKyAgICA0NDk2MCwgNDQ5NjksIDQ0OTc3LCA0NDk4MSwgNDQ5ODYsIDQ0OTk0LCAzMTU1NiwgMzQ4NTMsIDQ1MDAwLCA0NTAxOSwgCisgICAgMTczOTMsIDQ1MDMzLCA0NTA0OSwgNDUwNjMsIDQ1MDY5LCA0NTA3NCwgNDUwNzksIDQ1MDg0LCA0NTA5MCwgMzQ4NTksIAorICAgIDQ1MDk1LCA0NTA5OCwgNDUxMDUsIDQ1MTEyLCA0NTExNywgNDUxMjEsIDQxMiwgMjk4NCwgNDUxMjgsIDQ1MTMzLCA0NTEzOCwgCisgICAgMjk3MTcsIDQ0OTQ5LCA0NTE0MiwgNDUxNDcsIDQ1MTU1LCA0NTE1OSwgNDUxNjIsIDQ1MTY3LCA0NTE3MywgNDUxNzksIAorICAgIDQ1MTg0LCA0NTE4OCwgMzA2MTQsIDQ1MTkxLCA0NTE5NiwgNDUyMDAsIDQ1MjAzLCA0NTIwOCwgNDUyMTIsIDQ1MjE3LCAKKyAgICA0NTIyMiwgNDUyMjYsIDQ1MjMxLCA0NTIzNSwgNDUyMzksIDQ1MjQzLCAyMzA0MCwgMjMwNTEsIDQ1MjQ4LCA0NTI1MywgCisgICAgNDUyNTksIDQ1MjY0LCA0NTI3MCwgMjkzMDUsIDQ1Mjc1LCA0NTI3OSwgMjMxMzcsIDE3Njk2LCA0NTI4MiwgNDUyODcsIAorICAgIDQ1MjkyLCA0NTI5NywgNDUzMDIsIDQ1MzA3LCA0NTMxMiwgNDUzMTcsIDQ2NSwgNjgsIDM0MDUzLCAzNDA1OCwgMzQwNjMsIAorICAgIDM0MDY5LCAzNDA3NCwgMzQwNzksIDQ1MzIyLCAzNDA4MywgNDUzMjYsIDQ1MzMwLCA0NTMzNCwgMzQwODgsIDM0MDk0LCAKKyAgICA0NTM0OCwgMzQxMDUsIDM0MTEwLCA0NTM1NiwgNDUzNjEsIDM0MTE2LCA0NTM2NiwgNDUzNzEsIDQ1Mzc2LCA0NTM4MSwgCisgICAgNDUzOTAsIDQ1Mzk2LCA0NTQwMiwgNDU0MDgsIDM0MTMzLCA0NTQyMSwgNDU0MzAsIDQ1NDM2LCAzNDEzNywgNDU0NDAsIAorICAgIDM0MTQyLCA0NTQ0NSwgMzQxNDcsIDM0MTUyLCA0NTQ0OCwgNDU0NTMsIDQ1NDU3LCA0NTQ2MywgMzM2ODEsIDQ1NDcwLCAKKyAgICAxNDkwNCwgNDU0NzcsIDQ1NDgyLCAzNDE1NywgNDU0ODYsIDQ1NDkxLCA0NTQ5NiwgNDU1MDEsIDQ1NTA1LCA0NTUxMCwgCisgICAgNDU1MTUsIDQ1NTIxLCA0NTUyNiwgNDU1MzEsIDQ1NTM3LCA0NTU0MywgNDU1NDgsIDQ1NTUyLCA0NTU1NywgNDU1NjIsIAorICAgIDQ1NTY3LCA0NTU3MSwgNDU1NzYsIDQ1NTgxLCA0NTU4NiwgNDU1OTIsIDQ1NTk4LCA0NTYwNCwgNDU2MDksIDQ1NjEzLCAKKyAgICA0NTYxOCwgNDU2MjIsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDQ1NjI2LCA0NTYzMCwgNDU2MzUsIDQ1NjM5LCAzNDE3NiwgCisgICAgMzQxODIsIDM0MTg4LCAzNDIwMCwgNDU2NTEsIDI4MzE0LCA0NTY1NSwgNDU2NjAsIDQ1NjY0LCA0NTY2OSwgNDU2NzYsIAorICAgIDQ1NjgxLCA0NTY4NiwgNDU2OTEsIDQ1Njk1LCA0NTY5OSwgNDU3MDksIDQ1NzE0LCA0NTcxOSwgNDU3MjMsIDQ1NzI3LCAKKyAgICA0NTczMCwgNDU3MzgsIDM0MjQ4LCA0NTc0MywgMTQ0NiwgNDU3NDksIDQ1NzU0LCA0NTc2MCwgNDU3NjgsIDQ1NzcyLCAKKyAgICA0NTc4MSwgNDU3ODksIDQ1NzkzLCA0NTc5NywgNDU4MDUsIDQ1ODExLCA0NTgxOSwgNDU4MzUsIDQ1ODM5LCA0NTg0MywgCisgICAgNDU4NDcsIDQ1ODUyLCA0NTg1OCwgNDU4NzMsIDM0Mjg1LCAxNzQ1LCAxMzMwOCwgNDU4NzcsIDEzNDAsIDEzNTUsIDQ1ODg5LCAKKyAgICA0NTg5NywgNDU5MDQsIDQ1OTA5LCA0NTkxNiwgNDU5MjEsIDEwMDEyLCAxMDk2LCAyNTI5LCAxMTMxMSwgNDU5MjgsIDk5MTAsIAorICAgIDQ1OTMzLCA0NTkzNiwgNDU5NDUsIDEyNDgsIDQ1OTUwLCA0NDA4NiwgNDU5NTcsIDQ1OTY2LCA0NTk3MSwgNDU5NzUsIAorICAgIDQ1OTgzLCAyNDUyNiwgMjU4MSwgNDU5OTAsIDExNzc2LCA0NjAwMCwgNDYwMDYsIDIzNTYsIDIzNjYsIDQ2MDE1LCA0NjAyNCwgCisgICAgNDYwMzQsIDQ2MDQ1LCAzMzY1LCAzNzQ4NSwgNDYwNTAsIDExMzc1LCA0MDI0LCAxODQwMCwgMTI1MywgNDYwNTQsIDQ2MDYyLCAKKyAgICA0NjA2OSwgNDYwNzQsIDQ2MDc4LCA0NjA4MiwgMjYwMTgsIDQ0MzU1LCAxMTQwMiwgNDYwOTAsIDQ2MDk5LCA0NjEwOCwgCisgICAgNDYxMTYsIDQ2MTIzLCA0NjEzNCwgNDYxMzksIDQ2MTUyLCA0NjE2NSwgNDYxNzcsIDQ2MTg5LCA0NjIwMSwgNDYyMTIsIAorICAgIDQ2MjI1LCA0NjIzNiwgNDYyNDcsIDQ2MjU3LCA0NjI2NSwgNDYyNzMsIDQ2Mjg1LCA0NjI5NywgNDYzMDgsIDQ2MzE3LCAKKyAgICA0NjMyNSwgNDYzMzIsIDQ2MzQ0LCA0NjM1MSwgNDYzNTcsIDQ2MzY2LCA0NjM3MywgNDYzODYsIDQ2MzkxLCA0NjQwMSwgCisgICAgNDY0MDYsIDQ2NDEyLCA0NjQxNywgNDE1MjgsIDQ2NDIxLCA0NjQyOCwgNDY0MzIsIDQ2NDM5LCA0NjQ0NywgNDY0NTQsIAorICAgIDI1NDIsIDQ2NDYxLCA0NjQ3MiwgNDY0ODIsIDQ2NDkxLCA0NjQ5OSwgNDY1MDksIDQ2NTE3LCA0NjUyNiwgNDY1MzYsIAorICAgIDQ2NTQ1LCA0NjU1MCwgNDY1NTYsIDQ2NTYyLCAzODk4LCA0NjU3MywgNDY1ODMsIDQ2NTkyLCA0NjYwMSwgNDY2MDksIAorICAgIDQ2NjE5LCA0NjYyNywgNDY2MzYsIDQ2NjQxLCA0NjY0NiwgNDY2NTEsIDE2NzUsIDQ3LCA0NjY1OSwgNDY2NjcsIDQ2Njc4LCAKKyAgICA0NjY4OSwgMTgwMzksIDQ2Njk5LCA0NjcwMywgNDY3MTAsIDQ2NzE2LCA0NjcyMSwgNDY3MjUsIDQ2NzM2LCA0Njc0NiwgCisgICAgNDY3NTUsIDQ2NzY2LCAxODQzOSwgMTg0NDQsIDQ2NzcxLCA0Njc4MCwgNDY3ODUsIDQ2Nzk1LCA0NjgwMCwgNDY4MDgsIAorICAgIDQ2ODE2LCA0NjgyMywgNDY4MjksIDE2MzcsIDI4MywgNDY4MzMsIDQ2ODM5LCA0Njg0NCwgNDY4NDcsIDIxMjgsIDQ0MjA5LCAKKyAgICA0Njg1NSwgNDY4NTksIDQ2ODYyLCAxNDkxLCA0Njg2OCwgMTUzMzEsIDEyNTgsIDQ2ODczLCA0Njg4NiwgNDY5MDAsIDI2NzEsIAorICAgIDQ2OTE4LCA0NjkzMCwgNDY5NDIsIDI2ODUsIDI3MDIsIDQ2OTU2LCA0Njk2OSwgMjcxNywgNDY5ODMsIDQ2OTk1LCAyNzMyLCAKKyAgICA0NzAwOSwgMTI2NCwgMTI3MCwgMTI3NiwgMTE2ODIsIDQ3MDE0LCA0NzAxOSwgNDcwMjQsIDQ3MDI4LCA0NzA0MywgNDcwNTgsIAorICAgIDQ3MDczLCA0NzA4OCwgNDcxMDMsIDQ3MTE4LCA0NzEzMywgNDcxNDgsIDQ3MTYzLCA0NzE3OCwgNDcxOTMsIDQ3MjA4LCAKKyAgICA0NzIyMywgNDcyMzgsIDQ3MjUzLCA0NzI2OCwgNDcyODMsIDQ3Mjk4LCA0NzMxMywgNDczMjgsIDQ3MzQzLCA0NzM1OCwgCisgICAgNDczNzMsIDQ3Mzg4LCA0NzQwMywgNDc0MTgsIDQ3NDMzLCA0NzQ0OCwgNDc0NjMsIDQ3NDc4LCA0NzQ5MywgNDc1MDgsIAorICAgIDQ3NTIzLCA0NzUzOCwgNDc1NTMsIDQ3NTY4LCA0NzU4MywgNDc1OTgsIDQ3NjEzLCA0NzYyOCwgNDc2NDMsIDQ3NjU4LCAKKyAgICA0NzY3MywgNDc2ODgsIDQ3NzAzLCA0NzcxOCwgNDc3MzMsIDQ3NzQ4LCA0Nzc2MywgNDc3NzgsIDQ3NzkzLCA0NzgwOCwgCisgICAgNDc4MjMsIDQ3ODM4LCA0Nzg1MywgNDc4NjgsIDQ3ODgzLCA0Nzg5OCwgNDc5MTMsIDQ3OTI4LCA0Nzk0MywgNDc5NTgsIAorICAgIDQ3OTczLCA0Nzk4OCwgNDgwMDMsIDQ4MDE4LCA0ODAzMywgNDgwNDgsIDQ4MDYzLCA0ODA3OCwgNDgwOTMsIDQ4MTA4LCAKKyAgICA0ODEyMywgNDgxMzgsIDQ4MTUzLCA0ODE2OCwgNDgxODMsIDQ4MTk4LCA0ODIxMywgNDgyMjgsIDQ4MjQzLCA0ODI1OCwgCisgICAgNDgyNzMsIDQ4Mjg4LCA0ODMwMywgNDgzMTgsIDQ4MzMzLCA0ODM0OCwgNDgzNjMsIDQ4Mzc4LCA0ODM5MywgNDg0MDgsIAorICAgIDQ4NDIzLCA0ODQzOCwgNDg0NTMsIDQ4NDY4LCA0ODQ4MywgNDg0OTgsIDQ4NTEzLCA0ODUyOCwgNDg1NDMsIDQ4NTU4LCAKKyAgICA0ODU3MywgNDg1ODgsIDQ4NjAzLCA0ODYxOCwgNDg2MzMsIDQ4NjQ4LCA0ODY2MywgNDg2NzgsIDQ4NjkzLCA0ODcwOCwgCisgICAgNDg3MjMsIDQ4NzM4LCA0ODc1MywgNDg3NjgsIDQ4NzgzLCA0ODc5OCwgNDg4MTMsIDQ4ODI4LCA0ODg0MywgNDg4NTgsIAorICAgIDQ4ODczLCA0ODg4OCwgNDg5MDMsIDQ4OTE4LCA0ODkzMywgNDg5NDgsIDQ4OTYzLCA0ODk3OCwgNDg5OTMsIDQ5MDA4LCAKKyAgICA0OTAyMywgNDkwMzgsIDQ5MDUzLCA0OTA2OCwgNDkwODMsIDQ5MDk4LCA0OTExMywgNDkxMjgsIDQ5MTQzLCA0OTE1OCwgCisgICAgNDkxNzMsIDQ5MTg4LCA0OTIwMywgNDkyMTgsIDQ5MjMzLCA0OTI0OCwgNDkyNjMsIDQ5Mjc4LCA0OTI5MywgNDkzMDgsIAorICAgIDQ5MzIzLCA0OTMzOCwgNDkzNTMsIDQ5MzY4LCA0OTM4MywgNDkzOTgsIDQ5NDEzLCA0OTQyOCwgNDk0NDMsIDQ5NDU4LCAKKyAgICA0OTQ3MywgNDk0ODgsIDQ5NTAzLCA0OTUxOCwgNDk1MzMsIDQ5NTQ4LCA0OTU2MywgNDk1NzgsIDQ5NTkzLCA0OTYwOCwgCisgICAgNDk2MjMsIDQ5NjM4LCA0OTY1MywgNDk2NjgsIDQ5NjgzLCA0OTY5OCwgNDk3MTMsIDQ5NzI4LCA0OTc0MywgNDk3NTgsIAorICAgIDQ5NzczLCA0OTc4OCwgNDk4MDMsIDQ5ODE4LCA0OTgzMywgNDk4NDgsIDQ5ODYzLCA0OTg3OCwgNDk4OTMsIDQ5OTA4LCAKKyAgICA0OTkyMywgNDk5MzgsIDQ5OTUzLCA0OTk2OCwgNDk5ODMsIDQ5OTk4LCA1MDAxMywgNTAwMjgsIDUwMDQzLCA1MDA1OCwgCisgICAgNTAwNzMsIDUwMDg4LCA1MDEwMywgNTAxMTgsIDUwMTMzLCA1MDE0OCwgNTAxNjMsIDUwMTc4LCA1MDE5MywgNTAyMDgsIAorICAgIDUwMjIzLCA1MDIzOCwgNTAyNTMsIDUwMjY4LCA1MDI4MywgNTAyOTgsIDUwMzEzLCA1MDMyOCwgNTAzNDMsIDUwMzU4LCAKKyAgICA1MDM3MywgNTAzODgsIDUwNDAzLCA1MDQxOCwgNTA0MzMsIDUwNDQ4LCA1MDQ2MywgNTA0NzgsIDUwNDkzLCA1MDUwOCwgCisgICAgNTA1MjMsIDUwNTM4LCA1MDU1MywgNTA1NjgsIDUwNTgzLCA1MDU5OCwgNTA2MTMsIDUwNjI4LCA1MDY0MywgNTA2NTgsIAorICAgIDUwNjczLCA1MDY4OCwgNTA3MDMsIDUwNzE4LCA1MDczMywgNTA3NDgsIDUwNzYzLCA1MDc3OCwgNTA3OTMsIDUwODA4LCAKKyAgICA1MDgyMywgNTA4MzgsIDUwODUzLCA1MDg2OCwgNTA4ODMsIDUwODk4LCA1MDkxMywgNTA5MjgsIDUwOTQzLCA1MDk1OCwgCisgICAgNTA5NzMsIDUwOTg4LCA1MTAwMywgNTEwMTgsIDUxMDMzLCA1MTA0OCwgNTEwNjMsIDUxMDc4LCA1MTA5MywgNTExMDgsIAorICAgIDUxMTIzLCA1MTEzOCwgNTExNTMsIDUxMTY4LCA1MTE4MywgNTExOTgsIDUxMjEzLCA1MTIyOCwgNTEyNDMsIDUxMjU4LCAKKyAgICA1MTI3MywgNTEyODgsIDUxMzAzLCA1MTMxOCwgNTEzMzMsIDUxMzQ4LCA1MTM2MywgNTEzNzgsIDUxMzkzLCA1MTQwOCwgCisgICAgNTE0MjMsIDUxNDM4LCA1MTQ1MywgNTE0NjgsIDUxNDgzLCA1MTQ5OCwgNTE1MTMsIDUxNTI4LCA1MTU0MywgNTE1NTgsIAorICAgIDUxNTczLCA1MTU4OCwgNTE2MDMsIDUxNjE4LCA1MTYzMywgNTE2NDgsIDUxNjYzLCA1MTY3OCwgNTE2OTMsIDUxNzA4LCAKKyAgICA1MTcyMywgNTE3MzgsIDUxNzUzLCA1MTc2OCwgNTE3ODMsIDUxNzk4LCA1MTgxMywgNTE4MjgsIDUxODQzLCA1MTg1OCwgCisgICAgNTE4NzMsIDUxODg4LCA1MTkwMywgNTE5MTgsIDUxOTMzLCA1MTk0OCwgNTE5NjMsIDUxOTc4LCA1MTk5MywgNTIwMDgsIAorICAgIDUyMDIzLCA1MjAzOCwgNTIwNTMsIDUyMDY4LCA1MjA4MywgNTIwOTgsIDUyMTEzLCA1MjEyOCwgNTIxNDMsIDUyMTU4LCAKKyAgICA1MjE3MywgNTIxODgsIDUyMjAzLCA1MjIxOCwgNTIyMzMsIDUyMjQ4LCA1MjI2MywgNTIyNzgsIDUyMjkzLCA1MjMwOCwgCisgICAgNTIzMjMsIDUyMzM4LCA1MjM1MywgNTIzNjgsIDUyMzgzLCA1MjM5OCwgNTI0MTMsIDUyNDI4LCA1MjQ0MywgNTI0NTgsIAorICAgIDUyNDczLCA1MjQ4OCwgNTI1MDMsIDUyNTE4LCA1MjUzMywgNTI1NDgsIDUyNTYzLCA1MjU3OCwgNTI1OTMsIDUyNjA4LCAKKyAgICA1MjYyMywgNTI2MzgsIDUyNjUzLCA1MjY2OCwgNTI2ODMsIDUyNjk4LCA1MjcxMywgNTI3MjgsIDUyNzQzLCA1Mjc1OCwgCisgICAgNTI3NzMsIDUyNzg4LCA1MjgwMywgNTI4MTgsIDUyODMzLCA1Mjg0OCwgNTI4NjMsIDUyODc4LCA1Mjg5MywgNTI5MDgsIAorICAgIDUyOTIzLCA1MjkzOCwgNTI5NTMsIDUyOTY4LCA1Mjk4MywgNTI5OTgsIDUzMDEzLCA1MzAyOCwgNTMwNDMsIDUzMDU4LCAKKyAgICA1MzA3MywgNTMwODgsIDUzMTAzLCA1MzExOCwgNTMxMzMsIDUzMTQ4LCA1MzE2MywgNTMxNzgsIDUzMTkzLCA1MzIwOCwgCisgICAgNTMyMjMsIDUzMjM4LCA1MzI1MywgNTMyNjgsIDUzMjgzLCA1MzI5OCwgNTMzMTMsIDUzMzI4LCA1MzM0MywgNTMzNTgsIAorICAgIDUzMzczLCA1MzM4OCwgNTM0MDMsIDUzNDE4LCA1MzQzMywgNTM0NDgsIDUzNDYzLCA1MzQ3OCwgNTM0OTMsIDUzNTA4LCAKKyAgICA1MzUyMywgNTM1MzgsIDUzNTUzLCA1MzU2OCwgNTM1ODMsIDUzNTk4LCA1MzYxMywgNTM2MjgsIDUzNjQzLCA1MzY1OCwgCisgICAgNTM2NzMsIDUzNjg4LCA1MzcwMywgNTM3MTgsIDUzNzMzLCA1Mzc0OCwgNTM3NjMsIDUzNzc4LCA1Mzc5MywgNTM4MDgsIAorICAgIDUzODIzLCA1MzgzOCwgNTM4NTMsIDUzODY4LCA1Mzg4MywgNTM4OTgsIDUzOTEzLCA1MzkyOCwgNTM5NDMsIDUzOTU4LCAKKyAgICA1Mzk3MywgNTM5ODgsIDU0MDAzLCA1NDAxOCwgNTQwMzMsIDU0MDQ4LCA1NDA2MywgNTQwNzgsIDU0MDkzLCA1NDEwOCwgCisgICAgNTQxMjMsIDU0MTM4LCA1NDE1MywgNTQxNjgsIDU0MTgzLCA1NDE5OCwgNTQyMTMsIDU0MjI4LCA1NDI0MywgNTQyNTgsIAorICAgIDU0MjczLCA1NDI4OCwgNTQzMDMsIDU0MzE4LCA1NDMzMywgNTQzNDgsIDU0MzYzLCA1NDM3OCwgNTQzOTMsIDU0NDA4LCAKKyAgICA1NDQyMywgNTQ0MzgsIDU0NDUzLCA1NDQ2OCwgNTQ0ODMsIDU0NDk4LCA1NDUxMywgNTQ1MjgsIDU0NTQzLCA1NDU1OCwgCisgICAgNTQ1NzMsIDU0NTg4LCA1NDYwMywgNTQ2MTgsIDU0NjMzLCA1NDY0OCwgNTQ2NjMsIDU0Njc4LCA1NDY5MywgNTQ3MDgsIAorICAgIDU0NzIzLCA1NDczOCwgNTQ3NTMsIDU0NzY4LCA1NDc4MywgNTQ3OTgsIDU0ODEzLCA1NDgyOCwgNTQ4NDMsIDU0ODU5LCAKKyAgICA1NDg3NSwgNTQ4OTEsIDU0OTA3LCA1NDkyMywgNTQ5MzksIDU0OTU1LCA1NDk3MSwgNTQ5ODcsIDU1MDAzLCA1NTAxOSwgCisgICAgNTUwMzUsIDU1MDUxLCA1NTA2NywgNTUwODMsIDU1MDk5LCA1NTExNSwgNTUxMzEsIDU1MTQ3LCA1NTE2MywgNTUxNzksIAorICAgIDU1MTk1LCA1NTIxMSwgNTUyMjcsIDU1MjQzLCA1NTI1OSwgNTUyNzUsIDU1MjkxLCA1NTMwNywgNTUzMjMsIDU1MzM5LCAKKyAgICA1NTM1NSwgNTUzNzEsIDU1Mzg3LCA1NTQwMywgNTU0MTksIDU1NDM1LCA1NTQ1MSwgNTU0NjcsIDU1NDgzLCA1NTQ5OSwgCisgICAgNTU1MTUsIDU1NTMxLCA1NTU0NywgNTU1NjMsIDU1NTc5LCA1NTU5NSwgNTU2MTEsIDU1NjI3LCA1NTY0MywgNTU2NTksIAorICAgIDU1Njc1LCA1NTY5MSwgNTU3MDcsIDU1NzIzLCA1NTczOSwgNTU3NTUsIDU1NzcxLCA1NTc4NywgNTU4MDMsIDU1ODE5LCAKKyAgICA1NTgzNSwgNTU4NTEsIDU1ODY3LCA1NTg4MywgNTU4OTksIDU1OTE1LCA1NTkzMSwgNTU5NDcsIDU1OTYzLCA1NTk3OSwgCisgICAgNTU5OTUsIDU2MDExLCA1NjAyNywgNTYwNDMsIDU2MDU5LCA1NjA3NSwgNTYwOTEsIDU2MTA3LCA1NjEyMywgNTYxMzksIAorICAgIDU2MTU1LCA1NjE3MSwgNTYxODcsIDU2MjAzLCA1NjIxOSwgNTYyMzUsIDU2MjUxLCA1NjI2NywgNTYyODMsIDU2Mjk5LCAKKyAgICA1NjMxNSwgNTYzMzEsIDU2MzQ3LCA1NjM2MywgNTYzNzksIDU2Mzk1LCA1NjQxMSwgNTY0MjcsIDU2NDQzLCA1NjQ1OSwgCisgICAgNTY0NzUsIDU2NDkxLCA1NjUwNywgNTY1MjMsIDU2NTM5LCA1NjU1NSwgNTY1NzEsIDU2NTg3LCA1NjYwMywgNTY2MTksIAorICAgIDU2NjM1LCA1NjY1MSwgNTY2NjcsIDU2NjgzLCA1NjY5OSwgNTY3MTUsIDU2NzMxLCA1Njc0NywgNTY3NjMsIDU2Nzc5LCAKKyAgICA1Njc5NSwgNTY4MTEsIDU2ODI3LCA1Njg0MywgNTY4NTksIDU2ODc1LCA1Njg5MSwgNTY5MDcsIDU2OTIzLCA1NjkzOSwgCisgICAgNTY5NTUsIDU2OTcxLCA1Njk4NywgNTcwMDMsIDU3MDE5LCA1NzAzNSwgNTcwNTEsIDU3MDY3LCA1NzA4MywgNTcwOTksIAorICAgIDU3MTE1LCA1NzEzMSwgNTcxNDcsIDU3MTYzLCA1NzE3OSwgNTcxOTUsIDU3MjExLCA1NzIyNywgNTcyNDMsIDU3MjU5LCAKKyAgICA1NzI3NSwgNTcyOTEsIDU3MzA3LCA1NzMyMywgNTczMzksIDU3MzU1LCA1NzM3MSwgNTczODcsIDU3NDAzLCA1NzQxOSwgCisgICAgNTc0MzUsIDU3NDUxLCA1NzQ2NywgNTc0ODMsIDU3NDk5LCA1NzUxNSwgNTc1MzEsIDU3NTQ3LCA1NzU2MywgNTc1NzksIAorICAgIDU3NTk1LCA1NzYxMSwgNTc2MjcsIDU3NjQzLCA1NzY1OSwgNTc2NzUsIDU3NjkxLCA1NzcwNywgNTc3MjMsIDU3NzM5LCAKKyAgICA1Nzc1NSwgNTc3NzEsIDU3Nzg3LCA1NzgwMywgNTc4MTksIDU3ODM1LCA1Nzg1MSwgNTc4NjcsIDU3ODgzLCA1Nzg5OSwgCisgICAgNTc5MTUsIDU3OTMxLCA1Nzk0NywgNTc5NjMsIDU3OTc5LCA1Nzk5NSwgNTgwMTEsIDU4MDI3LCA1ODA0MywgNTgwNTksIAorICAgIDU4MDc1LCA1ODA5MSwgNTgxMDcsIDU4MTIzLCA1ODEzOSwgNTgxNTUsIDU4MTcxLCA1ODE4NywgNTgyMDMsIDU4MjE5LCAKKyAgICA1ODIzNSwgNTgyNTEsIDU4MjY3LCA1ODI4MywgNTgyOTksIDU4MzE1LCA1ODMzMSwgNTgzNDcsIDU4MzYzLCA1ODM3OSwgCisgICAgNTgzOTUsIDU4NDExLCA1ODQyNywgNTg0NDMsIDU4NDU5LCA1ODQ3NSwgNTg0OTEsIDU4NTA3LCA1ODUyMywgNTg1MzksIAorICAgIDU4NTU1LCA1ODU3MSwgNTg1ODcsIDU4NjAzLCA1ODYxOSwgNTg2MzUsIDU4NjUxLCA1ODY2NywgNTg2ODMsIDU4Njk5LCAKKyAgICA1ODcxNSwgNTg3MzEsIDU4NzQ3LCA1ODc2MywgNTg3NzksIDU4Nzk1LCA1ODgxMSwgNTg4MjcsIDU4ODQzLCA1ODg1OSwgCisgICAgNTg4NzUsIDU4ODkxLCA1ODkwNywgNTg5MjMsIDU4OTM5LCA1ODk1NSwgNTg5NzEsIDU4OTg3LCA1OTAwMywgNTkwMTksIAorICAgIDU5MDM1LCA1OTA1MSwgNTkwNjcsIDU5MDgzLCA1OTA5OSwgNTkxMTUsIDU5MTMxLCA1OTE0NywgNTkxNjMsIDU5MTc5LCAKKyAgICA1OTE5NSwgNTkyMTEsIDU5MjI3LCA1OTI0MywgNTkyNTksIDU5Mjc1LCA1OTI5MSwgNTkzMDcsIDU5MzIzLCA1OTMzOSwgCisgICAgNTkzNTUsIDU5MzcxLCA1OTM4NywgNTk0MDMsIDU5NDE5LCA1OTQzNSwgNTk0NTEsIDU5NDY3LCA1OTQ4MywgNTk0OTksIAorICAgIDU5NTE1LCA1OTUzMSwgNTk1NDcsIDU5NTYzLCA1OTU3OSwgNTk1OTUsIDU5NjExLCA1OTYyNywgNTk2NDMsIDU5NjU5LCAKKyAgICA1OTY3NSwgNTk2OTEsIDU5NzA3LCA1OTcyMywgNTk3MzksIDU5NzU1LCA1OTc3MSwgNTk3ODcsIDU5ODAzLCA1OTgxOSwgCisgICAgNTk4MzUsIDU5ODUxLCA1OTg2NywgNTk4ODMsIDU5ODk5LCA1OTkxNSwgNTk5MzEsIDU5OTQ3LCA1OTk2MywgNTk5NzksIAorICAgIDU5OTk1LCA2MDAxMSwgNjAwMjcsIDYwMDQzLCA2MDA1OSwgNjAwNzUsIDYwMDkxLCA2MDEwNywgNjAxMjMsIDYwMTM5LCAKKyAgICA2MDE1NSwgNjAxNzEsIDYwMTg3LCA2MDIwMywgNjAyMTksIDYwMjM1LCA2MDI1MSwgNjAyNjcsIDYwMjgzLCA2MDI5OSwgCisgICAgNjAzMTUsIDYwMzMxLCA2MDM0NywgNjAzNjMsIDYwMzc5LCA2MDM5NSwgNjA0MTEsIDYwNDI3LCA2MDQ0MywgNjA0NTksIAorICAgIDYwNDc1LCA2MDQ5MSwgNjA1MDcsIDYwNTIzLCA2MDUzOSwgNjA1NTUsIDYwNTcxLCA2MDU4NywgNjA2MDMsIDYwNjE5LCAKKyAgICA2MDYzNSwgNjA2NTEsIDYwNjY3LCA2MDY4MywgNjA2OTksIDYwNzE1LCA2MDczMSwgNjA3NDcsIDYwNzYzLCA2MDc3OSwgCisgICAgNjA3OTUsIDYwODExLCA2MDgyNywgNjA4NDMsIDYwODU5LCA2MDg3NSwgNjA4OTEsIDYwOTA3LCA2MDkyMywgNjA5MzksIAorICAgIDYwOTU1LCA2MDk3MSwgNjA5ODcsIDYxMDAzLCA2MTAxOSwgNjEwMzUsIDYxMDUxLCA2MTA2NywgNjEwODMsIDYxMDk5LCAKKyAgICA2MTExNSwgNjExMzEsIDYxMTQ3LCA2MTE2MywgNjExNzksIDYxMTk1LCA2MTIxMSwgNjEyMjcsIDYxMjQzLCA2MTI1OSwgCisgICAgNjEyNzUsIDYxMjkxLCA2MTMwNywgNjEzMjMsIDYxMzM5LCA2MTM1NSwgNjEzNzEsIDYxMzg3LCA2MTQwMywgNjE0MTksIAorICAgIDYxNDM1LCA2MTQ1MSwgNjE0NjcsIDYxNDgzLCA2MTQ5OSwgNjE1MTUsIDYxNTMxLCA2MTU0NywgNjE1NjMsIDYxNTc5LCAKKyAgICA2MTU5NSwgNjE2MTEsIDYxNjI3LCA2MTY0MywgNjE2NTksIDYxNjc1LCA2MTY5MSwgNjE3MDcsIDYxNzIzLCA2MTczOSwgCisgICAgNjE3NTUsIDYxNzcxLCA2MTc4NywgNjE4MDMsIDYxODE5LCA2MTgzNSwgNjE4NTEsIDYxODY3LCA2MTg4MywgNjE4OTksIAorICAgIDYxOTE1LCA2MTkzMSwgNjE5NDcsIDYxOTYzLCA2MTk3OSwgNjE5OTUsIDYyMDExLCA2MjAyNywgNjIwNDMsIDYyMDU5LCAKKyAgICA2MjA3NSwgNjIwOTEsIDYyMTA3LCA2MjEyMywgNjIxMzksIDYyMTU1LCA2MjE3MSwgNjIxODcsIDYyMjAzLCA2MjIxOSwgCisgICAgNjIyMzUsIDYyMjUxLCA2MjI2NywgNjIyODMsIDYyMjk5LCA2MjMxNSwgNjIzMzEsIDYyMzQ3LCA2MjM2MywgNjIzNzksIAorICAgIDYyMzk1LCA2MjQxMSwgNjI0MjcsIDYyNDQzLCA2MjQ1OSwgNjI0NzUsIDYyNDkxLCA2MjUwNywgNjI1MjMsIDYyNTM5LCAKKyAgICA2MjU1NSwgNjI1NzEsIDYyNTg3LCA2MjYwMywgNjI2MTksIDYyNjM1LCA2MjY1MSwgNjI2NjcsIDYyNjgzLCA2MjY5OSwgCisgICAgNjI3MTUsIDYyNzMxLCA2Mjc0NywgNjI3NjMsIDYyNzc5LCA2Mjc5NSwgNjI4MTEsIDYyODI3LCA2Mjg0MywgNjI4NTksIAorICAgIDYyODc1LCA2Mjg5MSwgNjI5MDcsIDYyOTIzLCA2MjkzOSwgNjI5NTUsIDYyOTcxLCA2Mjk4NywgNjMwMDMsIDYzMDE5LCAKKyAgICA2MzAzNSwgNjMwNTEsIDYzMDY3LCA2MzA4MywgNjMwOTksIDYzMTE1LCA2MzEzMSwgNjMxNDcsIDYzMTYzLCA2MzE3OSwgCisgICAgNjMxOTUsIDYzMjExLCA2MzIyNywgNjMyNDMsIDYzMjU5LCA2MzI3NSwgNjMyOTEsIDYzMzA3LCA2MzMyMywgNjMzMzksIAorICAgIDYzMzU1LCA2MzM3MSwgNjMzODcsIDYzNDAzLCA2MzQxOSwgNjM0MzUsIDYzNDUxLCA2MzQ2NywgNjM0ODMsIDYzNDk5LCAKKyAgICA2MzUxNSwgNjM1MzAsIDE2MTUyLCA2MzUzOSwgNjM1NDQsIDYzNTUwLCA2MzU1NiwgNjM1NjYsIDYzNTc0LCAxNjM5MywgCisgICAgMTY5OTksIDEwODMxLCA2MzU4NywgMTQ5OSwgMTUwMywgNjM1OTUsIDM5NzgsIDI5ODMyLCA3NTM2LCA2MzYwMSwgNjM2MDYsIAorICAgIDYzNjExLCA2MzYxNiwgNjM2MjEsIDYzNjI3LCA2MzYzMiwgNjM2MzgsIDYzNjQzLCA2MzY0OSwgNjM2NTQsIDYzNjU5LCAKKyAgICA2MzY2NCwgNjM2NjksIDYzNjc1LCA2MzY4MCwgNjM2ODUsIDYzNjkwLCA2MzY5NSwgNjM3MDAsIDYzNzA1LCA2MzcxMCwgCisgICAgNjM3MTYsIDYzNzIxLCA2MzcyNywgNjM3MzQsIDI1ODUsIDYzNzM5LCA2Mzc0NSwgODk1NywgNjM3NDksIDYzNzU0LCAKKyAgICA2Mzc2MSwgNjM3NjksIDY1LCA2Mzc3MywgNjM3NzksIDYzNzg0LCA2Mzc4OSwgNjM3OTMsIDYzNzk4LCA2MzgwMiwgNjM4MDYsIAorICAgIDExNzE5LCA2MzgxMCwgNjM4MjAsIDYzODMzLCA2Mzg0NCwgNjM4NTcsIDYzODY0LCA2Mzg3MCwgMTEyMzYsIDYzODc4LCAKKyAgICA2Mzg4MywgNjM4ODksIDYzODk1LCA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNiwgNjM5MjEsIDYzOTI1LCA2MzkzMCwgCisgICAgNjM5MzUsIDYzOTQwLCA2Mzk0NiwgNjM5NTIsIDYzOTU4LCA2Mzk2MywgNjM5NjcsIDYzOTcyLCA2Mzk3NywgNjM5ODEsIAorICAgIDYzOTg2LCA2Mzk5MSwgNjM5OTYsIDY0MDAwLCAxMTczNSwgMTE3NDYsIDExNzUxLCAxNTQyLCA2NDAwNCwgNjQwMTAsIAorICAgIDE1NDcsIDE3ODkwLCA2NDAxNSwgMTc4OTksIDY0MDIwLCA2NDAyNiwgNjQwMzEsIDE1NzgsIDY0MDM3LCAxNTg0LCAxNTkwLCAKKyAgICAxMTc4MSwgNjQwNDIsIDY0MDUxLCA2NDA1OSwgNjQwNjcsIDY0MDc0LCA2NDA3OCwgNjQwODIsIDY0MDg4LCA2NDA5MywgCisgICAgMzM3MjEsIDY0MDk4LCA2NDEwNSwgNjQxMTIsIDY0MTE3LCA2NDEyMSwgNjQxMjUsIDY0MTM0LCAxNTk1LCAxODAwOCwgCisgICAgNjQxMzksIDY0MTQzLCAxODAxOSwgMTEyNiwgNjQxNDcsIDY0MTU0LCA2NDE1OSwgNjQxNjMsIDE4MDU1LCAxNTk5LCAKKyAgICA0MTY4NSwgNjQxNjYsIDY0MTcxLCA2NDE4MSwgNjQxOTAsIDY0MTk1LCA2NDE5OSwgNjQyMDUsIDE2MDQsIDQ0MzE2LCAKKyAgICA2NDIxMCwgNjQyMTksIDY0MjI1LCA2NDIzMCwgNjQyMzUsIDExOTkyLCAxMTk5OCwgNjQyNDEsIDY0MjUzLCA2NDI3MCwgCisgICAgNjQyODcsIDY0MzA0LCA2NDMyMSwgNjQzMzgsIDY0MzU1LCA2NDM3MiwgNjQzODksIDY0NDA2LCA2NDQyMywgNjQ0NDAsIAorICAgIDY0NDU3LCA2NDQ3NCwgNjQ0OTEsIDY0NTA4LCA2NDUyNSwgNjQ1NDIsIDY0NTU5LCA2NDU3NiwgNjQ1OTMsIDY0NjEwLCAKKyAgICA2NDYyNywgNjQ2NDQsIDY0NjYxLCA2NDY3OCwgNjQ2OTUsIDY0NzEyLCA2NDcyOSwgNjQ3NDYsIDY0NzYzLCA2NDc4MCwgCisgICAgNjQ3OTcsIDY0ODE0LCA2NDgzMSwgNjQ4NDgsIDY0ODY1LCA2NDg4MiwgNjQ4OTksIDY0OTE2LCA2NDkzMywgNjQ5NTAsIAorICAgIDY0OTY3LCA2NDk4NCwgNjUwMDEsIDY1MDE4LCA2NTAzNSwgNjUwNTIsIDY1MDY5LCA2NTA4NiwgNjUwOTcsIDY1MTA3LCAKKyAgICA2NTExMiwgMTYwOSwgNjUxMTYsIDY1MTIxLCA2NTEyNywgNjUxMzIsIDY1MTM3LCA2NTE0NCwgOTkyOSwgMTYxNCwgNjUxNTAsIAorICAgIDY1MTU5LCAzMDE2MSwgNjUxNjQsIDY1MTc1LCAxMjAwOSwgNjUxODUsIDY1MTkwLCA2NTE5NiwgNjUyMDEsIDY1MjA4LCAKKyAgICA2NTIxNCwgNjUyMTksIDE2MTksIDE4MzM4LCA2NTIyNCwgNjUyMzAsIDEyMDE5LCAxNjI0LCAxMjAyNCwgNjUyMzYsIAorICAgIDY1MjQxLCA2NTI0NywgNjUyNTIsIDY1MjU3LCA2NTI2MiwgNjUyNjcsIDY1MjcyLCA2NTI3NywgNjUyODIsIDY1Mjg3LCAKKyAgICA2NTI5MywgNjUyOTksIDY1MzA1LCA2NTMxMCwgNjUzMTQsIDY1MzE5LCA2NTMyNCwgNjUzMjgsIDY1MzMzLCA2NTMzOCwgCisgICAgNjUzNDMsIDY1MzQ4LCA2NTM1MiwgNjUzNTcsIDY1MzYzLCA2NTM2OCwgNjUzNzMsIDY1Mzc3LCA2NTM4MiwgNjUzODcsIAorICAgIDY1MzkzLCA2NTM5OCwgNjU0MDMsIDY1NDA5LCA2NTQxNSwgNjU0MjAsIDY1NDI0LCA2NTQyOSwgNjU0MzQsIDY1NDM5LCAKKyAgICA2NTQ0MywgNjU0NDgsIDY1NDUzLCA2NTQ1OCwgNjU0NjQsIDY1NDcwLCA2NTQ3NSwgNjU0NzksIDY1NDgzLCA2NTQ4OCwgCisgICAgNjU0OTMsIDY1NDk4LCAzMTczNSwgNjU1MDIsIDY1NTA3LCA2NTUxMiwgNjU1MTgsIDY1NTIzLCA2NTUyOCwgNjU1MzIsIAorICAgIDY1NTM3LCA2NTU0MiwgNjU1NDgsIDY1NTUzLCA2NTU1OCwgNjU1NjQsIDY1NTcwLCA2NTU3NSwgNjU1NzksIDY1NTg0LCAKKyAgICA2NTU4OSwgNjU1OTMsIDY1NTk4LCA2NTYwMywgNjU2MDgsIDY1NjE0LCA2NTYyMCwgNjU2MjUsIDY1NjI5LCA2NTYzNCwgCisgICAgNjU2MzksIDY1NjQzLCA2NTY0OCwgNjU2NTMsIDY1NjU4LCA2NTY2MywgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzgsIAorICAgIDY1NjgzLCAzNDQxMiwgNjU2OTAsIDY1Njk4LCAzNjkwLCAzMDExMSwgNjU3MDQsIDY1NzExLCA2NTcxNywgMzgyOSwgCisgICAgMTIxMzAsIDY1NzIzLCA2NTczMywgNjU3NDgsIDY1NzU2LCAxMjEzNSwgNjU3NjcsIDY1NzcyLCA2NTc4MywgNjU3OTUsIAorICAgIDY1ODA3LCA2NTgxOSwgMjcyMywgNjU4MzEsIDY1ODM2LCA2NTg0OCwgNjU4NTIsIDY1ODU4LCA2NTg2NCwgNjU4NjksIAorICAgIDY1ODc4LCAxNjQxLCAxNzU2NSwgNjU4ODUsIDY1ODkwLCA0NDM3NSwgNjU4OTQsIDY1ODk4LCA2NTkwMywgNjU5MDcsIAorICAgIDE4NDc5LCA2NTkxMiwgNjU5MTUsIDY1OTIwLCA2NTkyOCwgNjU5MzYsIDE2NDUsIDEyMTcxLCAxMjE3NywgMTY1MCwgCisgICAgNjU5NDQsIDY1OTUxLCA2NTk1NiwgNjU5NjUsIDY1OTc1LCA2NTk4MiwgNjU5ODcsIDY1OTkyLCAxNjU1LCA2NTk5OSwgCisgICAgNjYwMDQsIDE4NTk5LCA2NjAwOCwgNjYwMTMsIDY2MDIwLCA2NjAyNiwgNjYwMzAsIDY2MDQxLCA2NjA1MSwgNjYwNTgsIAorICAgIDE4NjIxLCA5ODIzLCA5ODMwLCA0MDI3LCA0MDMzLCA2NjA2NSwgMTY2MCwgNjYwNzAsIDY2MDc2LCA2NjA4NCwgNjYwOTEsIAorICAgIDY2MDk3LCA2NjEwNCwgNjYxMTYsIDY2MTIyLCA2NjEyNywgNjYxMzksIDY2MTUwLCA2NjE1OSwgNjYxNjksIDM5NTcsIAorICAgIDY2MTc3LCAzMzUxNSwgMzM1MjQsIDE4NjYxLCAxNjY1LCAxNjY5LCA2NjE5MCwgNjYxOTQsIDY2MTk3LCA2NjIwOCwgCisgICAgNjYyMTMsIDE2NzksIDY2MjIxLCA2NjIyNiwgNjYyMzEsIDE4NzIwLCA2NjI0MywgNjYyNDYsIDY2MjUyLCA2NjI1OCwgCisgICAgNjYyNjMsIDY2MjcxLCAxNjg0LCA2NjI3NiwgNjYyODEsIDY2Mjg5LCA2NjI5NywgNjYzMDQsIDY2MzEzLCA2NjMyMSwgCisgICAgNjYzMzAsIDE2ODksIDY2MzM0LCAxNjk0LCAyMzIwOCwgNjYzMzksIDY2MzQ2LCAxODgwMCwgNjYzNTQsIDY2MzY0LCAKKyAgICA2NjM3MCwgNjYzNzUsIDY2MzgzLCA2NjM5MCwgNjYzOTksIDY2NDA3LCA2NjQxNywgNjY0MjYsIDY2NDM2LCA2NjQ0NSwgCisgICAgNjY0NTYsIDY2NDY2LCA2NjQ3NiwgNjY0ODUsIDY2NDk1LCA2NjUwOSwgNjY1MjIsIDY2NTMxLCA2NjUzOSwgNjY1NDksIAorICAgIDY2NTU4LCA2NjU3MCwgNjY1ODEsIDY2NTkyLCA2NjYwMiwgMTgxMTIsIDY2NjA3LCAxMjMyMywgNjY2MTYsIDY2NjIyLCAKKyAgICA2NjYyNywgNjY2MzQsIDY2NjQxLCA2NjY0NywgMTc3NzEsIDY2NjU3LCA2NjY2MywgNjY2NjgsIDY2Njc5LCA2NjY4NCwgCisgICAgNjY2OTIsIDEyMzQwLCAxMjM0NSwgNjY3MDAsIDY2NzA2LCA2NjcxMCwgNjY3MTgsIDQwMjIsIDE4ODY5LCA0NDQ2OCwgCisgICAgNjY3MjMsIDY2NzI5LCA2NjczNCwgNjY3NDIsIDY2NzQ5LCAxMzI4OSwgNjY3NTQsIDY2NzYwLCAxNzA1LCA2Njc2NSwgCisgICAgNjY3NjgsIDE0MTksIDY2Nzc0LCA2Njc3OSwgNjY3ODQsIDY2NzkwLCA2Njc5NSwgNjY4MDAsIDY2ODA1LCA2NjgxMCwgCisgICAgNjY4MTUsIDY2ODIwLCAxNzE0LCAxMywgNjY4MjYsIDY2ODMwLCA2NjgzNSwgNjY4MzksIDY2ODQzLCA2Njg0NywgMzQ2NTIsIAorICAgIDY2ODUyLCAyNTI5NiwgNjY4NTcsIDY2ODYyLCA2Njg2NiwgNjY4NjksIDY2ODczLCA2Njg3NywgNjY4ODIsIDY2ODg2LCAKKyAgICA2Njg5MSwgNjY4OTUsIDY2OTAxLCAzNzkxMCwgMzc5MTUsIDM3OTIwLCA2NjkwNCwgNjY5MTEsIDY2OTE3LCA2NjkyNSwgCisgICAgNDQxMzksIDY2OTM1LCAzNzkyNiwgMzQ5MTYsIDM0NjY3LCAzNDY3MywgMzc5NDIsIDM0Njc5LCA2Njk0MCwgNjY5NDUsIAorICAgIDM0OTQ5LCA2Njk0OSwgNjY5NTIsIDY2OTU2LCA2Njk2NCwgNjY5NzEsIDY2OTc0LCA2Njk3OSwgNjY5ODQsIDY2OTg4LCAKKyAgICA2Njk5MiwgNjY5OTUsIDY3MDA1LCA2NzAxNywgNjcwMjQsIDY3MDMwLCAzNDY4NCwgNjcwMzcsIDM2NDQzLCA2NzA0MCwgCisgICAgODk3NCwgMTA1MiwgNjcwNDMsIDY3MDQ3LCA2NzA1MiwgMzg3MiwgNjcwNTYsIDY3MDU5LCAxNDkzNywgNjcwNjYsIDY3MDczLCAKKyAgICA2NzA4NiwgNjcwOTQsIDY3MTAzLCA2NzExMiwgNjcxMTcsIDY3MTI3LCA2NzE0MCwgNjcxNTIsIDY3MTU5LCA2NzE2NCwgCisgICAgNjcxNzMsIDY3MTg2LCAzOTQ0OSwgNjcyMDQsIDY3MjA5LCA2NzIxNiwgNjcyMjIsIDY3MjI3LCA4MzUsIDY3MjMyLCAKKyAgICA2NzI0MCwgNjcyNDcsIDY3MjU0LCAyOTY1OCwgODAzLCA2NzI2MCwgNjcyNjYsIDY3Mjc2LCA2NzI4NCwgNjcyOTAsIAorICAgIDY3Mjk1LCAzNDcwMywgNjMzNCwgMzQ3MTcsIDY3Mjk5LCA2NzMwOSwgNjczMTQsIDY3MzIyLCA2NzMzMiwgNjczNDcsIAorICAgIDY3MzUzLCA2NzM1OSwgMzQ3MjcsIDY3MzY0LCAzMzgzOCwgNjczNjgsIDY3MzczLCA2NzM4MCwgNjczODUsIDY3Mzg5LCAKKyAgICA2NzM5NCwgMTg2NjQsIDY3NDAxLCA2NzQwNiwgNjc0MTAsIDYzNzUsIDM0NzUzLCA2NzQxNCwgNjc0MjAsIDMyNSwgNjc0MzAsIAorICAgIDY3NDM3LCA2NzQ0MywgNjc0NTAsIDY3NDU1LCA2NzQ2NCwgMTQ1NzMsIDY0MTc1LCA2NDE4NSwgNjc0NzAsIDY3NDc4LCAKKyAgICA2NzQ4MiwgNjc0ODYsIDY3NDkwLCA2NzQ5NCwgNjc0OTksIDY3NTAzLCA2NzUwOSwgNjc1MTcsIDY3NTIyLCA2NzUyNywgCisgICAgNjc1MzIsIDY3NTM2LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1NSwgNjc1NjEsIDY3NTY2LCA2NzU3MCwgNjc1NzUsIAorICAgIDM0ODc3LCA2NzU3OSwgMzQ4ODMsIDM0ODg5LCA2NzU4NCwgNjc1OTAsIDY3NTk3LCA2NzYwMiwgNjc2MDYsIDMzODU1LCAKKyAgICAxODMzMSwgNjc2MDksIDY3NjEzLCA2NzYxOCwgNjc2MjUsIDY3NjMxLCA2NzYzNSwgNjc2NDAsIDQzODA0LCA2NzY0NiwgCisgICAgNjc2NTAsIDY3NjU3LCA2NzY2MSwgNjc2NjYsIDY3NjcyLCA2NzY3OCwgNjc2ODQsIDY3Njk2LCA2NzcwNSwgNjc3MTUsIAorICAgIDY3NzIxLCA2NzcyOCwgNjc3MzMsIDY3NzM4LCA2Nzc0MiwgNjc3NDUsIDY3NzUxLCA2Nzc1OCwgNjc3NjMsIDY3NzY4LCAKKyAgICA2Nzc3NSwgNjc3ODIsIDY3Nzg5LCA2Nzc5NSwgNjc4MDAsIDY3ODA1LCA2NzgxMywgMzQ4OTQsIDI0NDcsIDY3ODE4LCAKKyAgICA2NzgyMywgNjc4MjksIDY3ODM0LCA2Nzg0MCwgNjc4NDUsIDY3ODUwLCA2Nzg1NSwgNjc4NjEsIDM0OTE1LCA2Nzg2NiwgCisgICAgNjc4NzIsIDY3ODc4LCA2Nzg4NCwgMzQ5ODUsIDY3ODg5LCA2Nzg5NCwgNjc4OTksIDM0OTk2LCA2NzkwNCwgNjc5MDksIAorICAgIDY3OTE0LCA2NzkyMCwgNjc5MjYsIDM1MDAxLCA2NzkzMSwgNjc5MzYsIDY3OTQxLCAzNTA1NiwgMzUwNjIsIDY3OTQ2LCAKKyAgICA2Nzk1MSwgMzUwNjcsIDM1MDg5LCAzMDQxMCwgMzUwOTUsIDM1MDk5LCA2Nzk1NiwgMTMwMTksIDY3OTYwLCA2Nzk2OCwgCisgICAgNjc5NzQsIDY3OTgyLCA2Nzk4OSwgNjc5OTUsIDY4MDA1LCA2ODAxMSwgNjgwMTgsIDExNjU0LCAzNTExMywgNjgwMjQsIAorICAgIDY4MDM3LCA2ODA0NiwgNjgwNTIsIDY4MDYxLCA2ODA2NywgMjU2MDYsIDY4MDc0LCA2ODA4MSwgNjgwOTEsIDY4MDk5LCAKKyAgICA2ODEwMiwgMzUwNTcsIDY4MTA3LCA2ODExNCwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzIsIDY4MTM2LCA0MTQ3LCAKKyAgICA2ODE0MSwgNjgxNDYsIDY4MTUxLCAzODAwNCwgMzgwMDksIDY4MTU1LCAzODAyMywgNjgxNjAsIDM4MDI4LCA2ODE2NSwgCisgICAgNjgxNzEsIDM4MDQwLCAzODA0NiwgMzgwNTIsIDY4MTc2LCA2ODE4MiwgMjQ1NzUsIDY4MTkzLCA2ODE5NiwgNjgyMDgsIAorICAgIDY4MjE2LCAzNTEzNiwgNjgyMjAsIDY4MjI5LCA2ODIzOSwgNjgyNDgsIDM1MTQ2LCA2ODI1MywgNjgyNjAsIDY4MjY5LCAKKyAgICA2ODI3NSwgNjgyODMsIDY4MjkwLCA2NDI2LCA0NjkzLCA2ODI5NSwgMzUwNjgsIDY4MzAxLCA2ODMwNCwgNjgzMTAsIAorICAgIDY4MzE3LCA2ODMyMiwgNjgzMjcsIDI1NTE2LCA2ODMzMSwgNjgzMzcsIDY4MzQzLCA2ODM0OCwgNjgzNTMsIDY4MzU3LCAKKyAgICA2ODM2MywgNjgzNjksIDM2MzQ5LCAxMDg0LCAzOTA5OSwgNDA4MzQsIDQwODQwLCAzNTE3NywgMzUxODIsIDY4Mzc0LCAKKyAgICA2ODM3OCwgNjgzODIsIDY4Mzg1LCA2ODM5OCwgNjg0MDQsIDY4NDA4LCA2ODQxMSwgNjg0MTYsIDM2Njg2LCA2ODQyMCwgCisgICAgMzM4NjAsIDIzMTU4LCA2ODQyNiwgNjM1NSwgNjM2MywgOTY2MCwgNjg0MjksIDY4NDM0LCA2ODQzOSwgNjg0NDQsIDY4NDQ5LCAKKyAgICA2ODQ1NCwgNjg0NTksIDY4NDY0LCA2ODQ2OSwgNjg0NzQsIDY4NDgwLCA2ODQ4NSwgNjg0OTAsIDY4NDk2LCA2ODUwMSwgCisgICAgNjg1MDYsIDY4NTExLCA2ODUxNiwgNjg1MjEsIDY4NTI2LCA2ODUzMiwgNjg1MzcsIDY4NTQzLCA2ODU0OCwgNjg1NTMsIAorICAgIDY4NTU4LCA2ODU2MywgNjg1NjgsIDY4NTczLCA2ODU3OCwgNjg1ODMsIDY4NTg4LCA2ODU5MywgNjg1OTksIDY4NjA0LCAKKyAgICA2ODYwOSwgNjg2MTQsIDY4NjE5LCA2ODYyNCwgNjg2MjksIDY4NjM1LCA2ODY0MCwgNjg2NDUsIDY4NjUwLCA2ODY1NSwgCisgICAgNjg2NjAsIDY4NjY1LCA2ODY3MCwgNjg2NzUsIDY4NjgwLCA2ODY4NiwgNjg2OTEsIDY4Njk2LCA2ODcwMSwgNjg3MDYsIAorICAgIDY4NzEyLCA2ODcxOCwgNjg3MjMsIDY4NzI5LCA2ODczNCwgNjg3MzksIDY4NzQ0LCA2ODc0OSwgNjg3NTQsIDE0OTIsIDE1NiwgCisgICAgNjg3NTksIDY4NzYzLCA2ODc2NywgNjg3NzEsIDI3MzA2LCA2ODc3NSwgNjg3NzksIDY4Nzg0LCA2ODc4OCwgNjg3OTMsIAorICAgIDY4Nzk3LCA2ODgwMiwgNjg4MDcsIDY4ODEyLCA2ODgxNiwgNjg4MjAsIDY4ODI1LCA2ODgyOSwgMTQ2NTIsIDY4ODM0LCAKKyAgICA2ODgzOCwgNjg4NDUsIDY4ODU1LCAxNjcxOCwgNjg4NjQsIDY4ODczLCA2ODg3NywgNjg4ODIsIDY4ODg3LCA2ODg5MSwgCisgICAgNjg4OTUsIDI3MTAwLCAzMDY3LCA2ODg5OSwgNjg5MDUsIDE5MTQ0LCA2ODkwOSwgNjg5MTgsIDY4OTI2LCA2ODkzMiwgCisgICAgNjg5MzcsIDY4OTQ5LCA2ODk2MSwgNjg5NjYsIDY4OTcwLCA2ODk3NSwgNjg5NzksIDY4OTg1LCA2ODk5MSwgNjg5OTYsIAorICAgIDY5MDA2LCA2OTAxNiwgNjkwMjIsIDY5MDI3LCA2OTAzMSwgNjkwMzcsIDY5MDQyLCA2OTA0OSwgNjkwNTUsIDY5MDYwLCAKKyAgICA2OTA2OSwgNjkwNzgsIDY5MDg2LCA2OTA5MCwgMTcxMjksIDY5MDkzLCA2OTEwMiwgNjkxMTAsIDY5MTIyLCA2OTEzMywgCisgICAgNjkxNDQsIDY5MTUzLCA2OTE1NywgNjkxNjYsIDY5MTc0LCA2OTE4NCwgNjkxOTIsIDY5MTk5LCA2OTIwNSwgNjkyMTAsIAorICAgIDY5MjE5LCA2OTIyNSwgNjkyMzAsIDY5MjQxLCA2MCwgMzM2NTgsIDY5MjQ3LCAyODU4NiwgMjg1OTYsIDY5MjUzLCA2OTI2MSwgCisgICAgNjkyNjgsIDY5Mjc0LCA2OTI3OCwgNjkyODgsIDY5Mjk5LCA2OTMwNywgNjkzMTYsIDY5MzIxLCA2OTMyNiwgNjkzMzEsIAorICAgIDY5MzM1LCA2OTMzOSwgMTkwOTgsIDY5MzQ3LCA2OTM1MSwgNjkzNTcsIDY5MzY3LCA2OTM3NCwgNjkzODAsIDY5Mzg2LCAKKyAgICAzODEwMywgNjkzOTAsIDY5MzkyLCA2OTM5NSwgNjk0MDEsIDY5NDA1LCA2OTQxNiwgNjk0MjYsIDY5NDMyLCA2OTQzOSwgCisgICAgNjk0NDYsIDE0NTg5LCA2OTQ1NCwgNjk0NjAsIDY5NDY5LCA2OTQ3OCwgNjk0ODQsIDEwNzEzLCA2OTQ5MCwgNjk0OTYsIAorICAgIDY5NTAxLCA2OTUwNiwgNjk1MTMsIDY5NTE4LCA2OTUyNSwgNjk1MzEsIDY5NTM2LCA2OTU0NCwgNjk1NTcsIDY5NTY2LCAKKyAgICA2OTU3NSwgNjY0NzEsIDY2NDgxLCA2OTU4NSwgNjk1OTEsIDY5NTk3LCA2OTYwNCwgNjk2MTEsIDY5NjE4LCA2OTYyNSwgCisgICAgNjk2MzIsIDY5NjM3LCA2OTY0MSwgNjk2NDUsIDY5NjQ4LCA2OTY1OCwgNjk2NjIsIDY5Njc0LCA2OTY4MywgNjk2ODcsIAorICAgIDY5Njk4LCA2OTcwMywgNjk3MDcsIDY2NDkwLCA2OTcxMywgNjk3MjAsIDY5NzI5LCA2OTczNywgNjk3NDUsIDY5NzUwLCAKKyAgICA2OTc1NCwgNjk3NTksIDY5NzY0LCA2OTc3NCwgNjk3ODIsIDY5Nzg3LCA2OTc5MSwgNjk3OTUsIDY5ODAxLCA2OTgwOSwgCisgICAgNjk4MTYsIDY5ODI4LCA2OTgzNiwgNjk4NDcsIDY5ODU0LCA2OTg2MCwgNjk4NzAsIDY5ODc2LCA2OTg4MCwgNjk4ODksIAorICAgIDY5ODk4LCA2OTkwNSwgNjk5MTEsIDY5OTE2LCA2OTkyMCwgNjk5MjQsIDY5OTI4LCA2OTkzNywgNjk5NDYsIDY5OTU1LCAKKyAgICA2OTk2MSwgNjk5NjcsIDY5OTczLCA2OTk3OCwgNjk5ODUsIDY5OTkxLCA2OTk5OSwgNzAwMDYsIDcwMDEyLCAxMzczMiwgCisgICAgNzAwMTcsIDcwMDIzLCA3MDAyNywgMTU2NDYsIDcwMDMxLCA3MDAzNiwgNzAwNDYsIDcwMDU1LCA3MDA2MSwgNzAwNjcsIAorICAgIDcwMDc1LCA3MDA4MiwgNzAwODYsIDcwMDkwLCA3MDA5NywgNzAxMDMsIDcwMTExLCA3MDExOCwgNzAxMjQsIDcwMTM1LCAKKyAgICA3MDEzOSwgNzAxNDMsIDcwMTQ3LCA3MDE1MCwgNzAxNTYsIDcwMTYxLCA3MDE2NiwgNzAxNzAsIDcwMTc0LCA3MDE4MywgCisgICAgNzAxOTEsIDcwMTk4LCA3MDIwNCwgNzAyMTEsIDI2MTg5LCA0Mzg3MywgNzAyMTYsIDcwMjI0LCA3MDIyOCwgNzAyMzIsIAorICAgIDcwMjM1LCA3MDI0MywgNzAyNTAsIDcwMjU2LCA3MDI2NSwgNzAyNzMsIDcwMjc5LCA3MDI4NCwgNzAyODgsIDcwMjkzLCAKKyAgICA3MDI5OCwgNzAzMDIsIDcwMzA2LCA3MDMxMCwgNzAzMTUsIDcwMzI0LCA3MDMyOCwgNzAzMzUsIDQwOTQzLCA3MDMzOSwgCisgICAgNzAzNDUsIDcwMzQ5LCA3MDM1NywgNzAzNjMsIDcwMzY4LCA3MDM3OSwgNzAzODcsIDcwMzkzLCA3MDQwMiwgMjQ3MjIsIAorICAgIDcwNDEwLCA3MDQxNywgNzA0MjQsIDcwNDMxLCA3MDQzOCwgNzA0NDUsIDQ3MjAzLCAxNDQyNywgNzA0NTIsIDcwNDU5LCAKKyAgICA3MDQ2NCwgMzgxMzksIDQzNTksIDcwNDcwLCA3MDQ3NSwgNzA0ODAsIDcwNDg2LCA3MDQ5MiwgNzA0OTgsIDcwNTAzLCAKKyAgICA3MDUwOCwgNzA1MTMsIDcwNTE4LCA3MDUyNCwgNzA1MjksIDcwNTM1LCA3MDU0MCwgNzA1NDYsIDcwNTUxLCA3MDU1NiwgCisgICAgNzA1NjEsIDcwNTY2LCA3MDU3MSwgNzA1NzYsIDcwNTgxLCA3MDU4NywgNzA1OTIsIDcwNTk4LCA3MDYwMywgNzA2MDgsIAorICAgIDcwNjEzLCA3MDYxOCwgNzA2MjMsIDcwNjI4LCA3MDYzNCwgNzA2MzksIDcwNjQ0LCA3MDY0OSwgNzA2NTQsIDcwNjU5LCAKKyAgICA3MDY2NCwgNzA2NjksIDcwNjc0LCA3MDY3OSwgNzA2ODQsIDcwNjkwLCA3MDY5NSwgNzA3MDAsIDcwNzA1LCA3MDcxMCwgCisgICAgNzA3MTUsIDcwNzIwLCA3MDcyNSwgNzA3MzAsIDcwNzM2LCA3MDc0MSwgNzA3NDYsIDcwNzUxLCA3MDc1NiwgNzA3NjEsIAorICAgIDcwNzY2LCA3MDc3MSwgNzA3NzYsIDcwNzgxLCA3MDc4NiwgNzA3OTEsIDcwNzk2LCA3MDgwMiwgMTgzOSwgMjcyLCA3MDgwNywgCisgICAgNDE4MDMsIDcwODExLCA3MDgxNCwgNzA4MTksIDcwODIzLCA3MDgyNiwgMzQwNCwgNzA4MzEsIDcwODM2LCA3MDg0MCwgCisgICAgNzA4NDksIDcwODYwLCA3MDg3NywgNzA4OTUsIDY5NzQxLCA3MDkwMywgNzA5MDYsIDcwOTE2LCA3MDkyMywgNzA5MzIsIAorICAgIDcwOTQ4LCA3MDk1NywgNzA5NjcsIDcwOTcyLCA3MDk4MiwgNzA5OTEsIDcwOTk5LCA3MTAxMywgNzEwMjEsIDcxMDI1LCAKKyAgICA3MTAyOCwgNzEwMzUsIDcxMDQxLCA3MTA1MiwgNzEwNTksIDcxMDcxLCA3MTA4MiwgNzEwOTMsIDcxMTAyLCA3MTEwOSwgCisgICAgMTI1OSwgNzI3LCA3MTExOSwgMjYxOCwgNzExMjMsIDcxMTI4LCA3MTEzNywgOTI3NiwgMTkwNzEsIDIyNjU1LCA3MTE0NSwgCisgICAgNzExNTMsIDcxMTY3LCA3MTE4MCwgNzExODQsIDcxMTg5LCA3MTE5NCwgNzExOTksIDcxMjA1LCA3MTIxMSwgNzEyMTYsIAorICAgIDg5NjYsIDE2NzQ2LCA3MTIyMSwgNzEyMjUsIDcxMjMzLCA5Mzg0LCA3MTIzOCwgNzEyNDQsIDcxMjUzLCA3MTI2MSwgMTcxNywgCisgICAgMTIxODQsIDkzNSwgNjQ4OSwgNzEyNjUsIDcxMjY5LCA3MTI3OCwgNzEyODgsIDI0MDQsIDI5MzgyLCA3MTI5NywgNzEzMDMsIAorICAgIDE4NTcxLCAyOTM5NywgNzEzMDksIDQyMDcsIDEyNTYyLCA3MTMxNSwgNzEzMjIsIDY2MjAzLCA3MTMyNiwgNzEzMzAsIAorICAgIDcxMzM2LCA3MTM0MSwgNzEzNDYsIDM2MjMsIDE2MCwgMzY0OSwgNzEzNTEsIDcxMzYzLCA3MTM2NywgNzEzNzMsIDcxMzc4LCAKKyAgICAzMDE4MSwgNzEzODIsIDEyNTUwLCAyNzU4LCA0LCA3MTM4NywgNzEzOTcsIDcxNDA4LCA3MTQxNCwgNzE0MjUsIDcxNDMyLCAKKyAgICA3MTQzOCwgNzE0NDQsIDcxNDUyLCA3MTQ1OSwgNzE0NjUsIDcxNDc1LCA3MTQ4NSwgNzE0OTUsIDcxNTA0LCAyNTU5MywgCisgICAgMTI3MSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjMsIDcxNTI3LCAyNzgxLCAyNzg3LCA4OTYzLCAyMjc5LCA3MTUzMSwgCisgICAgNzE1MzUsIDcxNTQ0LCA3MTU1MiwgNzE1NjMsIDcxNTcxLCA3MTU3OSwgNzE1ODUsIDcxNTkwLCA3MTYwMSwgNzE2MTIsIAorICAgIDcxNjIwLCA3MTYyNiwgNzE2MzEsIDEwNTMyLCA3MTY0MSwgNzE2NDksIDcxNjUzLCA3MTY1NywgNzE2NjIsIDcxNjY2LCAKKyAgICA3MTY3OCwgMzA1OTcsIDE2NjcxLCA3MTY4NSwgNzE2OTUsIDcxNzAxLCA3MTcwNywgMTA2MzQsIDcxNzE3LCA3MTcyOCwgCisgICAgNzE3MzksIDcxNzQ5LCA3MTc1OCwgNzE3NjIsIDcxNzY5LCAxNzMxLCAxMDI5LCA3MTc3OSwgNzE3ODQsIDcxNzkyLCAKKyAgICA2NjAwOSwgNzE4MDAsIDcxODA1LCA3MTgxNiwgNzE4MjMsIDcxODM3LCAxNTQ4MywgNDg0LCA3MTg0NywgNzE4NTEsIAorICAgIDcxODU1LCA3MTg2MywgNzE4NzIsIDcxODgwLCA3MTg4NiwgNzE5MDAsIDcxOTA3LCA3MTkxMywgNzE5MjIsIDcxOTI5LCAKKyAgICA3MTkzOSwgNzE5NDcsIDcxOTU0LCA3MTk2MiwgNzE5NjksIDQwMjksIDE0NCwgNzE5NzcsIDcxOTg4LCA3MTk5MiwgNzIwMDQsIAorICAgIDcyMDEwLCAxMjc0MywgMTk4LCA3MjAxNSwgOTk2MSwgNzIwMjAsIDI4MjYsIDcyMDI0LCA3MjAzMSwgNzIwMzcsIDcyMDQ4LCAKKyAgICA3MjA1NiwgNzIwNjMsIDkzMzUsIDcyMDcwLCA3MjA3OSwgNzIwODcsIDQxMDcsIDcyMTAwLCA0MTI0LCA3MjEwNCwgNzIxMDksIAorICAgIDcyMTE1LCA3MjEyMCwgNzIxMjUsIDcyMTMwLCAyODMxLCA1MjAsIDcyMTM2LCA3MjE0OSwgNzIxNTMsIDcyMTU4LCAyODM2LCAKKyAgICAxODM4LCA4MjksIDcyMTYyLCA0MTI4LCA3MjE3MCwgNzIxNzYsIDcyMTgwLCA4NzMsIDcyMTkwLCA3MjE5OSwgNzIyMDQsIAorICAgIDM2NDAsIDcyMjA4LCAxNjQyNywgMTY0MzQsIDUwNTY1LCA3MjIxMiwgNDE1OSwgNDAzOSwgMTQzMTAsIDcyMjIwLCA3MjIyNywgCisgICAgNzIyMzIsIDI1NjU3LCA3MjIzNiwgNzIyNDMsIDcyMjQ5LCA3MjI1NCwgNzIyNTksIDE2NDQ3LCAxOTIsIDcyMjY0LCAKKyAgICA3MjI3NiwgNzIyODIsIDcyMjkwLCAyODQ4LCAxNzQ5LCA3MjI5OCwgNzIzMDAsIDcyMzA1LCA3MjMxMCwgNzIzMTUsIAorICAgIDcyMzIxLCA3MjMyNiwgNzIzMzEsIDcyMzM2LCA3MjM0MSwgNzIzNDYsIDcyMzUxLCA3MjM1NywgNzIzNjIsIDcyMzY3LCAKKyAgICA3MjM3MiwgNzIzNzcsIDcyMzgyLCA3MjM4NywgNzIzOTIsIDcyMzk3LCA3MjQwMywgNzI0MDgsIDcyNDEzLCA3MjQxOCwgCisgICAgNzI0MjQsIDcyNDI5LCA3MjQzNSwgNzI0NDAsIDcyNDQ1LCA3MjQ1MCwgNzI0NTUsIDcyNDYwLCA3MjQ2NSwgNzI0NzAsIAorICAgIDcyNDc2LCA3MjQ4MSwgNzI0ODcsIDcyNDkyLCA3MjQ5NywgNzI1MDIsIDcyNTA3LCA3MjUxMiwgNzI1MTcsIDcyNTIyLCAKKyAgICA3MjUyNywgNzI1MzMsIDcyNTM5LCA3MjU0NCwgNzI1NDksIDcyNTU1LCA3MjU2MCwgNzI1NjQsIDcyNTY4LCA3MjU3MywgCisgICAgNzI1NzksIDcyNTgzLCA3MjU4OSwgNzI1OTQsIDcyNTk5LCA3MjYwNSwgNzI2MTAsIDcyNjE0LCA3MjYxOSwgNzI2MjQsIAorICAgIDcyNjI4LCA3MjYzMSwgNzI2MzMsIDcyNjM3LCA3MjY0MCwgNzI2NDcsIDcyNjUyLCA3MjY1NiwgNzI2NjEsIDcyNjY1LCAKKyAgICA3MjY2OSwgNzI2NzMsIDcyNjgyLCA3MjY4NiwgMzUzODIsIDcyNjg5LCAzNTM4NywgNzI2OTYsIDcyNzAxLCAzNTM5MiwgCisgICAgNzI3MTAsIDcyNzE5LCAzNTM5OCwgNzI3MjQsIDM1NDAzLCA3MjczMywgNzI3MzgsIDEyNzg2LCA3Mjc0MiwgNzI3NDcsIAorICAgIDcyNzUyLCAzNTQwOCwgNzI3NTYsIDQ1Mzk4LCA3Mjc2MCwgNzI3NjMsIDcyNzY3LCA4NjM0LCA3Mjc3MywgNzI3NzYsIAorICAgIDcyNzgxLCA3Mjc4NiwgNzI3OTAsIDM4ODcsIDM1NDEzLCA3Mjc5MywgNzI3OTcsIDcyODAwLCA3MjgxMSwgNzI4MTYsIAorICAgIDcyODIwLCA3MjgyNiwgNzI4MzQsIDcyODQ3LCA3Mjg1NSwgNzI4NjQsIDcyODcwLCA3Mjg3NSwgNzI4ODEsIDcyODg1LCAKKyAgICA3Mjg5MSwgNzI4OTcsIDcyOTA1LCA3MjkxMCwgNzI5MTQsIDcyOTIxLCA3MjkyNywgNzI5MzUsIDcyOTQ0LCA3Mjk1MiwgCisgICAgMzU0MTYsIDcyOTU5LCA3Mjk2OSwgNzI5ODIsIDcyOTg3LCA3Mjk5MiwgNzI5OTYsIDczMDA1LCA3MzAxMSwgNzMwMTgsIAorICAgIDczMDI5LCA3MzA0MSwgNzMwNDgsIDczMDU3LCA3MzA2NiwgNzMwNzUsIDczMDgyLCA3MzA4OCwgNzMwOTUsIDczMTAzLCAKKyAgICA3MzExMCwgNzMxMTgsIDczMTI3LCA3MzEzNSwgNzMxNDIsIDczMTUwLCA3MzE1OSwgNzMxNjcsIDczMTc2LCA3MzE4NiwgCisgICAgNzMxOTUsIDczMjAzLCA3MzIxMCwgNzMyMTgsIDczMjI3LCA3MzIzNSwgNzMyNDQsIDczMjU0LCA3MzI2MywgNzMyNzEsIAorICAgIDczMjgwLCA3MzI5MCwgNzMyOTksIDczMzA5LCA3MzMyMCwgNzMzMzAsIDczMzM5LCA3MzM0NywgNzMzNTQsIDczMzYyLCAKKyAgICA3MzM3MSwgNzMzNzksIDczMzg4LCA3MzM5OCwgNzM0MDcsIDczNDE1LCA3MzQyNCwgNzM0MzQsIDczNDQzLCA3MzQ1MywgCisgICAgNzM0NjQsIDczNDc0LCA3MzQ4MywgNzM0OTEsIDczNTAwLCA3MzUxMCwgNzM1MTksIDczNTI5LCA3MzU0MCwgNzM1NTAsIAorICAgIDczNTU5LCA3MzU2OSwgNzM1ODAsIDczNTkwLCA3MzYwMSwgNzM2MTMsIDczNjI0LCA3MzYzNCwgNzM2NDMsIDczNjUxLCAKKyAgICA3MzY1OCwgNzM2NjYsIDczNjc1LCA3MzY4MywgNzM2OTIsIDczNzAyLCA3MzcxMSwgNzM3MTksIDczNzI4LCA3MzczOCwgCisgICAgNzM3NDcsIDczNzU3LCA3Mzc2OCwgNzM3NzgsIDczNzg3LCA3Mzc5NSwgNzM4MDQsIDczODE0LCA3MzgyMywgNzM4MzMsIAorICAgIDczODQ0LCA3Mzg1NCwgNzM4NjMsIDczODczLCA3Mzg4NCwgNzM4OTQsIDczOTA1LCA3MzkxNywgNzM5MjgsIDczOTM4LCAKKyAgICA3Mzk0NywgNzM5NTUsIDczOTY0LCA3Mzk3NCwgNzM5ODMsIDczOTkzLCA3NDAwNCwgNzQwMTQsIDc0MDIzLCA3NDAzMywgCisgICAgNzQwNDQsIDc0MDU0LCA3NDA2NSwgNzQwNzcsIDc0MDg4LCA3NDA5OCwgNzQxMDcsIDc0MTE3LCA3NDEyOCwgNzQxMzgsIAorICAgIDc0MTQ5LCA3NDE2MSwgNzQxNzIsIDc0MTgyLCA3NDE5MywgNzQyMDUsIDc0MjE2LCA3NDIyOCwgNzQyNDEsIDc0MjUzLCAKKyAgICA3NDI2NCwgNzQyNzQsIDc0MjgzLCA3NDI5MSwgNzQyOTgsIDc0MzA2LCA3NDMxNSwgNzQzMjMsIDc0MzMyLCA3NDM0MiwgCisgICAgNzQzNTEsIDc0MzU5LCA3NDM2OCwgNzQzNzgsIDc0Mzg3LCA3NDM5NywgNzQ0MDgsIDc0NDE4LCA3NDQyNywgNzQ0MzUsIAorICAgIDc0NDQ0LCA3NDQ1NCwgNzQ0NjMsIDc0NDczLCA3NDQ4NCwgNzQ0OTQsIDc0NTAzLCA3NDUxMywgNzQ1MjQsIDc0NTM0LCAKKyAgICA3NDU0NSwgNzQ1NTcsIDc0NTY4LCA3NDU3OCwgNzQ1ODcsIDc0NTk1LCA3NDYwNCwgNzQ2MTQsIDc0NjIzLCA3NDYzMywgCisgICAgNzQ2NDQsIDc0NjU0LCA3NDY2MywgNzQ2NzMsIDc0Njg0LCA3NDY5NCwgNzQ3MDUsIDc0NzE3LCA3NDcyOCwgNzQ3MzgsIAorICAgIDc0NzQ3LCA3NDc1NywgNzQ3NjgsIDc0Nzc4LCA3NDc4OSwgNzQ4MDEsIDc0ODEyLCA3NDgyMiwgNzQ4MzMsIDc0ODQ1LCAKKyAgICA3NDg1NiwgNzQ4NjgsIDc0ODgxLCA3NDg5MywgNzQ5MDQsIDc0OTE0LCA3NDkyMywgNzQ5MzEsIDc0OTQwLCA3NDk1MCwgCisgICAgNzQ5NTksIDc0OTY5LCA3NDk4MCwgNzQ5OTAsIDc0OTk5LCA3NTAwOSwgNzUwMjAsIDc1MDMwLCA3NTA0MSwgNzUwNTMsIAorICAgIDc1MDY0LCA3NTA3NCwgNzUwODMsIDc1MDkzLCA3NTEwNCwgNzUxMTQsIDc1MTI1LCA3NTEzNywgNzUxNDgsIDc1MTU4LCAKKyAgICA3NTE2OSwgNzUxODEsIDc1MTkyLCA3NTIwNCwgNzUyMTcsIDc1MjI5LCA3NTI0MCwgNzUyNTAsIDc1MjU5LCA3NTI2OSwgCisgICAgNzUyODAsIDc1MjkwLCA3NTMwMSwgNzUzMTMsIDc1MzI0LCA3NTMzNCwgNzUzNDUsIDc1MzU3LCA3NTM2OCwgNzUzODAsIAorICAgIDc1MzkzLCA3NTQwNSwgNzU0MTYsIDc1NDI2LCA3NTQzNywgNzU0NDksIDc1NDYwLCA3NTQ3MiwgNzU0ODUsIDc1NDk3LCAKKyAgICA3NTUwOCwgNzU1MjAsIDc1NTMzLCA3NTU0NSwgNzU1NTgsIDc1NTcyLCA3NTU4NSwgNzU1OTcsIDc1NjA4LCA3NTYxOCwgCisgICAgNzU2MjcsIDc1NjM1LCA3NTY0MiwgNzU2NDcsIDg0NTEsIDc1NjU0LCAzNTQyNiwgNzU2NTksIDc1NjY0LCAzNTQzMSwgCisgICAgNzU2NzAsIDIyNzYzLCAzNTQzNiwgNzU2NzUsIDc1NjgxLCA3NTY4OSwgNzU2OTUsIDc1NzAxLCA3NTcwOCwgNzU3MTUsIAorICAgIDc1NzIwLCA3NTcyNSwgNzU3MjksIDc1NzMzLCA3NTczNiwgNzU3NDAsIDc1NzQ5LCA3NTc1OCwgNzU3NjYsIDc1NzcyLCAKKyAgICA3NTc4NCwgNzU3OTUsIDc1Nzk5LCAzMTI5LCA4NDI2LCA3NTgwNCwgNzU4MDcsIDc1ODA5LCA3NTgxMywgNzU4MTcsIAorICAgIDc1ODIxLCA3NTgyNywgNzU4MzIsIDI4MjQwLCA3NTgzNywgNzU4NDEsIDc1ODQ0LCA3NTg0OSwgNzU4NTMsIDc1ODYwLCAKKyAgICA3NTg2NiwgNzU4NzAsIDY1MDksIDc1ODc0LCAzNTQ1MywgNzU4NzksIDc1ODg2LCA3NTg5NSwgNzU5MDMsIDc1OTE0LCAKKyAgICA3NTkyMiwgNzU5MzEsIDc1OTM5LCA3NTk0NiwgNzU5NTMsIDc1OTU5LCA3NTk3MCwgMzU0NTgsIDc1OTc1LCA3NTk4NiwgCisgICAgNzU5OTgsIDc2MDA2LCA3NjAxNywgNzYwMjYsIDc2MDM0LCA3NjA0NSwgNzYwNTAsIDc2MDU4LCAyNTgwLCA3NjA2MywgCisgICAgMzc1NTIsIDc2MDc2LCA3NjA4MCwgNzYwOTIsIDc2MTAwLCA3NjEwNSwgNzYxMTMsIDc2MTI0LCAxOTI5MSwgNzYxMzMsIAorICAgIDc2MTM5LCA3NjE0NiwgNzYxNTQsIDc2MTYwLCAzNTQ2OCwgNzYxNjUsIDQxNTMsIDYzNTcwLCA3NjE3MiwgNzYxNzUsIAorICAgIDc2MTgzLCA3NjE5NiwgNzYyMDksIDc2MjIyLCA3NjIzNSwgNzYyNDIsIDc2MjUzLCA3NjI2MiwgNzYyNjcsIDQ3MDIwLCAKKyAgICA0NzAyNSwgNzYyNzEsIDc2Mjc1LCA3NjI4MywgNzYyOTAsIDc2Mjk5LCA3NjMwNywgNzYzMTMsIDc2MzIyLCA3NjMzMCwgCisgICAgNzYzMzcsIDc2MzQ1LCA3NjM0OSwgNzYzNTgsIDc2MzY3LCA3NjM3NywgNzYzOTAsIDc2NDAzLCA3NjQxMywgMzU0NzMsIAorICAgIDc2NDE5LCA3NjQyNiwgNzY0MzIsIDc2NDM4LCAzNTQ3OSwgNzY0NDMsIDc2NDQ2LCA3NjQ1MCwgNzY0NTgsIDc2NDY3LCAKKyAgICA0Njc1OCwgNzY0NzUsIDc2NDg0LCA3NjQ5MiwgNzY0OTksIDc2NTA3LCA3NjUxNywgNzY1MjYsIDc2NTM1LCAzNjc4NSwgCisgICAgNzY1NDQsIDc2NTU1LCA3NjU3MCwgNzY1ODAsIDk5OTQsIDIzNDY3LCA3NjU4OSwgNzY1OTQsIDc2NTk5LCA3NjYwMywgCisgICAgMTc3NjMsIDc2NjA4LCA3NjYxMywgNzY2MTksIDc2NjI0LCA3NjYyOSwgNzY2MzUsIDc2NjQwLCA3NjY0NSwgMjM0MzIsIAorICAgIDc2NjUwLCA3NjY1NywgNzY2NjUsIDc2NjczLCA3NjY4MSwgNzY2ODYsIDc2NjkzLCA3NjcwMCwgNzY3MDUsIDIyNTcsIAorICAgIDc2NzA5LCA3NjcxMywgNzY3MjEsIDc2NzI5LCAzNTQ5NiwgNzY3MzUsIDc2NzQxLCA3Njc1MywgNzY3NTksIDc2NzY2LCAKKyAgICA3Njc3MCwgNzY3NzcsIDc2NzgyLCA3Njc4OSwgNzY3OTUsIDc2ODAyLCA3NjgxMywgNzY4MjMsIDc2ODMzLCA3Njg0NSwgCisgICAgNzY4NTEsIDc2ODU5LCA3Njg2NSwgNzY4NzUsIDc2ODg1LCAzNTUyMywgNzY4OTQsIDc2OTAzLCA3NjkwOSwgNzY5MjEsIAorICAgIDc2OTMyLCA3NjkzOSwgNzY5NDQsIDc2OTQ4LCA3Njk1NiwgNzY5NjIsIDc2OTY3LCA3Njk3MiwgNzY5NzksIDc2OTg3LCAKKyAgICA3Njk5OSwgNzcwMDksIDc3MDE4LCA3NzAyNywgNzcwMzUsIDc3MDQyLCAzNzQwNSwgMjU5OTAsIDc3MDQ4LCA3NzA1MywgCisgICAgNzcwNTcsIDc3MDYxLCA3NzA2NiwgNzcwNzQsIDc3MDgwLCA3NzA5MSwgNzcxMDQsIDc3MTA5LCA3NzExNiwgMzU1MjgsIAorICAgIDc3MTIxLCA3NzEzMywgNzcxNDIsIDc3MTUwLCA3NzE2MCwgNzcxNzEsIDc3MTg0LCA3NzE5MSwgNzcyMDAsIDc3MjA5LCAKKyAgICA3NzIxNywgNzcyMjIsIDc3MjI4LCAxNDgxLCA3NzIzMywgNzcyMzgsIDc3MjQzLCA3NzI0OCwgNzcyNTQsIDc3MjU5LCAKKyAgICA3NzI2NCwgNzcyNzAsIDc3Mjc2LCA3NzI4MSwgNzcyODUsIDc3MjkwLCA3NzI5NSwgNzczMDAsIDY0MTMwLCA3NzMwNSwgCisgICAgNzczMTAsIDc3MzE1LCA3NzMyMCwgNzczMjYsIDc3MzMyLCA3NzMzNywgNzczNDEsIDc3MzQ2LCAxNzc2MiwgNzczNTEsIAorICAgIDc3MzU3LCA3NzM2MiwgNzczNjgsIDc3MzczLCA3NzM3OCwgNzczODMsIDc3Mzg4LCA3NzM5MiwgNzczOTgsIDc3NDAzLCAKKyAgICA3NzQxMiwgNzc0MTcsIDc3NDIyLCA3NzQyNywgNzc0MzIsIDc3NDM2LCA3NzQ0MywgNzc0NDksIDQ0NTAsIDE4OTE0LCAKKyAgICAzMDk0LCA3NzQ1NCwgNzc0NTgsIDc3NDYzLCA3NzQ2NywgNzc0NzEsIDc3NDc1LCA1MDgyMCwgNzc0NzksIDc3NDA0LCAKKyAgICA3NzQ4MSwgNzc0OTEsIDM1NTM3LCA3NzQ5NCwgNzc0OTksIDc3NTA4LCA3NzUxNCwgNjQ3OCwgMzU1NDIsIDc3NTE4LCAKKyAgICA3NzUyNCwgNzc1MjksIDc3NTM1LCA3NzU0MCwgNzc1NDQsIDc3NTUxLCA3NzU1NiwgNzc1NjYsIDc3NTc1LCA3NzU3OSwgCisgICAgNzc1ODUsIDc3NTkxLCA3NzU5NywgNzc2MDEsIDc3NjA5LCA3NzYxNiwgNzc2MjQsIDc3NjMyLCAzNTU0NywgNzc2MzksIAorICAgIDc3NjQyLCA3NzY0OSwgNzc2NTUsIDc3NjYwLCA3NzY2NCwgNzc2NzAsIDc3Njc4LCA3NzY4NSwgNzc2OTAsIDc3Njk0LCAKKyAgICA3NzcwMywgNzc3MTEsIDc3NzE3LCA3NzcyMiwgMzU1NTIsIDc3NzI5LCA3Nzc0MSwgNzc3NDgsIDc3NzU0LCA3Nzc1OSwgCisgICAgNzc3NjUsIDc3NzcyLCA3Nzc3OCwgMjMxNzEsIDI5ODU1LCA3Nzc4NCwgNzc3ODksIDc3Nzk1LCA3Nzc5OSwgNzc4MTEsIAorICAgIDc3NDM3LCA3NzQ0NCwgMjMzNjQsIDc3ODIxLCA3NzgyNiwgNzc4MzMsIDc3ODM5LCA3Nzg0NiwgNzc4NTIsIDc3ODYzLCAKKyAgICA3Nzg2OCwgNzc4NzYsIDk2OTksIDc3ODgxLCA3Nzg4NCwgNzc4OTAsIDc3ODk0LCA3Nzg5OCwgNzc5MDEsIDc3OTA3LCAKKyAgICA3NzkxMywgMzUyOTAsIDQ0NTEsIDEwOTMsIDE0NzA2LCA3NzkyMCwgNzc5MjYsIDc3OTMyLCA3NzkzOCwgNzc5NDQsIAorICAgIDc3OTUwLCA3Nzk1NiwgNzc5NjIsIDc3OTY4LCA3Nzk3MywgNzc5NzgsIDc3OTgzLCA3Nzk4OCwgNzc5OTMsIDc3OTk4LCAKKyAgICA3ODAwMywgNzgwMDgsIDc4MDEzLCA3ODAxOCwgNzgwMjMsIDc4MDI4LCA3ODAzMywgNzgwMzksIDc4MDQ0LCA3ODA0OSwgCisgICAgNzgwNTUsIDc4MDYwLCA3ODA2NSwgNzgwNzEsIDc4MDc3LCA3ODA4MywgNzgwODksIDc4MDk1LCA3ODEwMSwgNzgxMDcsIAorICAgIDc4MTEzLCA3ODExOSwgNzgxMjQsIDc4MTI5LCA3ODEzNSwgNzgxNDAsIDc4MTQ1LCA3ODE1MSwgNzgxNTYsIDc4MTYxLCAKKyAgICA3ODE2NiwgNzgxNzEsIDc4MTc2LCA3ODE4MSwgNzgxODYsIDc4MTkxLCA3ODE5NiwgNzgyMDEsIDc4MjA2LCA3ODIxMSwgCisgICAgNzgyMTcsIDc4MjIyLCA3ODIyNywgNzgyMzIsIDc4MjM4LCA3ODI0MywgNzgyNDgsIDc4MjUzLCA3ODI1OCwgNzgyNjQsIAorICAgIDc4MjY5LCA3ODI3NCwgNzgyNzksIDc4Mjg0LCA3ODI4OSwgNzgyOTQsIDc4Mjk5LCA3ODMwNCwgNzgzMDksIDc4MzE0LCAKKyAgICA3ODMxOSwgNzgzMjQsIDc4MzI5LCA3ODMzNCwgNzgzMzksIDc4MzQ0LCA3ODM0OSwgNzgzNTQsIDc4MzU5LCA3ODM2NSwgCisgICAgNzgzNzAsIDc4Mzc1LCA3ODM4MCwgNzgzODUsIDc4MzkwLCA3ODM5NSwgNzg0MDAsIDE4NzUsIDE2OSwgNzg0MDUsIDc4NDA5LCAKKyAgICA3ODQxMywgNzg0MTgsIDc4NDI2LCA3ODQzMCwgNzg0MzcsIDc4NDQ1LCA3ODQ0OSwgNzg0NjIsIDc4NDcwLCA3ODQ3NSwgCisgICAgNzg0ODAsIDI4NjQ5LCA3ODQ4NCwgNzg0ODksIDc4NDkzLCA3ODQ5OCwgNzg1MDIsIDc4NTEwLCA3ODUxNCwgMjI3NzEsIAorICAgIDc4NTE5LCA3ODUyMywgNjY3MTQsIDc4NTI3LCA3ODUzMCwgNzg1MzgsIDc4NTQ2LCA3ODU1NCwgNzg1NTksIDc4NTY0LCAKKyAgICA3ODU3MSwgNzg1NzgsIDc4NTg0LCA3ODU5MCwgNzg1OTUsIDc4NjAyLCA3ODYwNywgNzg2MTUsIDcxMTcyLCA3ODYyMiwgCisgICAgNjY1MDAsIDc4NjI3LCA3ODYzMiwgNzg2MzYsIDc4NjQzLCA2NjUyNywgMTI4NTMsIDc4NjQ5LCA3ODY1NCwgNzg2NTksIAorICAgIDc4NjYzLCA3ODY2NiwgNzg2NzUsIDc4NjgxLCA3ODY4NSwgNzg2OTUsIDc4NzA0LCA3ODcwOCwgNzg3MTEsIDc4NzE1LCAKKyAgICA3ODcyMiwgNzg3MzUsIDc4NzQxLCA3ODc0OSwgNzg3NTgsIDc4NzY5LCA3ODc4MCwgNzg3OTEsIDc4ODAyLCA3ODgxMSwgCisgICAgNzg4MTcsIDc4ODI2LCA3ODgzNCwgNzg4NDQsIDc4ODU3LCA3ODg2NSwgNzg4NzIsIDc4ODgzLCA3ODg4OSwgNzg4OTQsIAorICAgIDc4ODk5LCA3ODkwNSwgNzg5MTUsIDc4OTIxLCA3ODkzMSwgNzg5MzgsIDc4OTQ4LCA3ODk1NywgNzcxMjMsIDc4OTY1LCAKKyAgICA3ODk3MSwgNzg5NzksIDc4OTg1LCA3ODk5MiwgNzkwMDAsIDc5MDA1LCA3OTAwOCwgNzkwMTIsIDc5MDE4LCA3OTAyMiwgCisgICAgNzkwMjUsIDc5MDMxLCA3OTAzNywgNzkwNDUsIDc5MDU3LCA3OTA2OSwgNzkwNzYsIDc5MDgxLCA3OTA4NSwgNzkwOTYsIAorICAgIDc5MTA0LCA3OTExMSwgNzkxMjMsIDc5MTMxLCA3OTEzOSwgNzkxNDYsIDc5MTUyLCA3OTE1NywgNzkxNjcsIDc5MTc2LCAKKyAgICA3OTE4MSwgNzkxOTEsIDc5MjAwLCA0NjAzOSwgNzkyMDcsIDc5MjExLCA3OTIxNiwgNzkyMjQsIDc5MjMxLCA3OTIzNywgCisgICAgNzkyNDEsIDc5MjUxLCA3OTI2MiwgNzkyNzAsIDc5Mjc3LCA3OTI4OSwgNzkzMDEsIDc5MzEwLCA3NjA2NiwgNzkzMTcsIAorICAgIDc5MzI3LCA3OTMzOSwgNzkzNTAsIDc5MzY0LCA3OTM3MiwgNzkzODIsIDc5Mzg5LCA3OTM5NywgNzk0MTAsIDc5NDIyLCAKKyAgICA3OTQzMSwgNzk0MzksIDc5NDQ5LCA3OTQ2MCwgNzk0NzIsIDc5NDgxLCA3OTQ5MSwgNzk1MDEsIDc5NTEwLCA3OTUxNywgCisgICAgNzk1MjYsIDc5NTQxLCA3OTU0OSwgNzk1NTksIDc5NTY4LCA3OTU3NiwgNzk1ODksIDYzNTQwLCA3OTYwNCwgNzk2MTQsIAorICAgIDc5NjIzLCA3OTYzNSwgNzk2NDUsIDc5NjU3LCA3OTY2OCwgNzk2ODIsIDc5Njk2LCA3OTcxMCwgNzk3MjQsIDc5NzM4LCAKKyAgICA3OTc1MiwgNzk3NjYsIDc5NzgwLCA3OTc5NCwgNzk4MDgsIDc5ODIyLCA3OTgzNiwgNzk4NTAsIDc5ODY0LCA3OTg3OCwgCisgICAgNzk4OTIsIDc5OTA2LCA3OTkyMCwgNzk5MzQsIDc5OTQ4LCA3OTk2MiwgNzk5NzYsIDc5OTkwLCA4MDAwNCwgODAwMTgsIAorICAgIDgwMDMyLCA4MDA0NiwgODAwNjAsIDgwMDc0LCA4MDA4OCwgODAxMDIsIDgwMTE2LCA4MDEzMCwgODAxNDQsIDgwMTU4LCAKKyAgICA4MDE3MiwgODAxODYsIDgwMjAwLCA4MDIxNCwgODAyMjgsIDgwMjQyLCA4MDI1NiwgODAyNzAsIDgwMjg0LCA4MDI5OCwgCisgICAgODAzMTIsIDgwMzI2LCA4MDM0MCwgODAzNTQsIDgwMzY4LCA4MDM4MiwgODAzOTYsIDgwNDEwLCA4MDQyNCwgODA0MzgsIAorICAgIDgwNDUyLCA4MDQ2NiwgODA0ODAsIDgwNDk0LCA4MDUwOCwgODA1MjIsIDgwNTM2LCA4MDU1MCwgODA1NjQsIDgwNTc4LCAKKyAgICA4MDU5MiwgODA2MDYsIDgwNjIwLCA4MDYzNCwgODA2NDgsIDgwNjYyLCA4MDY3NiwgODA2OTAsIDgwNzA0LCA4MDcxOCwgCisgICAgODA3MzIsIDgwNzQ2LCA4MDc2MCwgODA3NzQsIDgwNzg4LCA4MDgwMiwgODA4MTYsIDgwODMwLCA4MDg0NCwgODA4NTgsIAorICAgIDgwODcyLCA4MDg4NiwgODA5MDAsIDgwOTE0LCA4MDkyOCwgODA5NDIsIDgwOTU2LCA4MDk3MCwgODA5ODQsIDgwOTk4LCAKKyAgICA4MTAxMiwgODEwMjYsIDgxMDQwLCA4MTA1NCwgODEwNjgsIDgxMDgyLCA4MTA5NiwgODExMTAsIDgxMTI0LCA4MTEzOCwgCisgICAgODExNTIsIDgxMTY2LCA4MTE4MCwgODExOTQsIDgxMjA4LCA4MTIyMiwgODEyMzYsIDgxMjUwLCA4MTI2NCwgODEyNzgsIAorICAgIDgxMjkyLCA4MTMwNiwgODEzMjAsIDgxMzM0LCA4MTM0OCwgODEzNjIsIDgxMzc2LCA4MTM5MCwgODE0MDQsIDgxNDE4LCAKKyAgICA4MTQzMiwgODE0NDYsIDgxNDYwLCA4MTQ3NCwgODE0ODgsIDgxNTAyLCA4MTUxNiwgODE1MzAsIDgxNTQ0LCA4MTU1OCwgCisgICAgODE1NzIsIDgxNTg2LCA4MTYwMCwgODE2MTQsIDgxNjI4LCA4MTY0MiwgODE2NTYsIDgxNjcwLCA4MTY4NCwgODE2OTgsIAorICAgIDgxNzEyLCA4MTcyNiwgODE3NDAsIDgxNzU0LCA4MTc2OCwgODE3ODIsIDgxNzk2LCA4MTgxMCwgODE4MjQsIDgxODM4LCAKKyAgICA4MTg1MiwgODE4NjYsIDgxODgwLCA4MTg5NCwgODE5MDgsIDgxOTIyLCA4MTkzNiwgODE5NTAsIDgxOTY0LCA4MTk3OCwgCisgICAgODE5OTIsIDgyMDA2LCA4MjAyMCwgODIwMzQsIDgyMDQ4LCA4MjA2MiwgODIwNzYsIDgyMDkwLCA4MjEwNCwgODIxMTgsIAorICAgIDgyMTMyLCA4MjE0NiwgODIxNjAsIDgyMTc0LCA4MjE4OCwgODIyMDIsIDgyMjE2LCA4MjIzMCwgODIyNDQsIDgyMjU4LCAKKyAgICA4MjI3MiwgODIyODYsIDgyMzAwLCA4MjMxNCwgODIzMjgsIDgyMzQyLCA4MjM1NiwgODIzNzAsIDgyMzg0LCA4MjM5OCwgCisgICAgODI0MTIsIDgyNDI2LCA4MjQ0MCwgODI0NTQsIDgyNDY4LCA4MjQ4MiwgODI0OTYsIDgyNTEwLCA4MjUyNCwgODI1MzgsIAorICAgIDgyNTUyLCA4MjU2NiwgODI1ODAsIDgyNTk0LCA4MjYwOCwgODI2MjIsIDgyNjM2LCA4MjY1MCwgODI2NjQsIDgyNjc4LCAKKyAgICA4MjY5MiwgODI3MDYsIDgyNzIwLCA4MjczNCwgODI3NDgsIDgyNzYyLCA4Mjc3NiwgODI3OTAsIDgyODA0LCA4MjgxOCwgCisgICAgODI4MzIsIDgyODQ2LCA4Mjg2MCwgODI4NzQsIDgyODg4LCA4MjkwMiwgODI5MTYsIDgyOTMwLCA4Mjk0NCwgODI5NTgsIAorICAgIDgyOTcyLCA4Mjk4NiwgODMwMDAsIDgzMDE0LCA4MzAyOCwgODMwNDIsIDgzMDU2LCA4MzA3MCwgODMwODQsIDgzMDk4LCAKKyAgICA4MzExMiwgODMxMjYsIDgzMTQwLCA4MzE1NCwgODMxNjgsIDgzMTgyLCA4MzE5NiwgODMyMTAsIDgzMjI0LCA4MzIzOCwgCisgICAgODMyNTIsIDgzMjY2LCA4MzI4MCwgODMyOTQsIDgzMzA4LCA4MzMyMiwgODMzMzYsIDgzMzUwLCA4MzM2NCwgODMzNzgsIAorICAgIDgzMzkyLCA4MzQwNiwgODM0MjAsIDgzNDM0LCA4MzQ0OCwgODM0NjIsIDgzNDc2LCA4MzQ5MCwgODM1MDQsIDgzNTE4LCAKKyAgICA4MzUzMiwgODM1NDYsIDgzNTYwLCA4MzU3NCwgODM1ODgsIDgzNjAyLCA4MzYxNiwgODM2MzAsIDgzNjQ0LCA4MzY1OCwgCisgICAgODM2NzIsIDgzNjg2LCA4MzcwMCwgODM3MTQsIDgzNzI4LCA4Mzc0MiwgODM3NTYsIDgzNzcwLCA4Mzc4NCwgODM3OTgsIAorICAgIDgzODEyLCA4MzgyNiwgODM4NDAsIDgzODU0LCA4Mzg2OCwgODM4ODIsIDgzODk2LCA4MzkxMCwgODM5MjQsIDgzOTM4LCAKKyAgICA4Mzk1MiwgODM5NjYsIDgzOTgwLCA4Mzk5NCwgODQwMDgsIDg0MDIyLCA4NDAzNiwgODQwNTAsIDg0MDY0LCA4NDA3OCwgCisgICAgODQwOTIsIDg0MTA2LCA4NDEyMCwgODQxMzQsIDg0MTQ4LCA4NDE2MiwgODQxNzYsIDg0MTkwLCA4NDIwNCwgODQyMTgsIAorICAgIDg0MjMyLCA4NDI0NiwgODQyNjAsIDg0Mjc0LCA4NDI4OCwgODQzMDIsIDg0MzE2LCA4NDMzMCwgODQzNDQsIDg0MzU4LCAKKyAgICA4NDM3MiwgODQzODYsIDg0NDAwLCA4NDQxNCwgODQ0MjgsIDg0NDQyLCA4NDQ1NiwgODQ0NzAsIDg0NDg0LCA4NDQ5OCwgCisgICAgODQ1MTIsIDg0NTI2LCA4NDU0MCwgODQ1NTQsIDg0NTY4LCA4NDU4MiwgODQ1OTYsIDg0NjEwLCA4NDYyNCwgODQ2MzgsIAorICAgIDg0NjUyLCA4NDY2NiwgODQ2ODAsIDg0Njk0LCA4NDcwOCwgODQ3MjIsIDg0NzM2LCA4NDc1MCwgODQ3NjQsIDg0Nzc4LCAKKyAgICA4NDc5MiwgODQ4MDYsIDg0ODIwLCA4NDgzNCwgODQ4NDgsIDg0ODYyLCA4NDg3NiwgODQ4OTAsIDg0OTA0LCA4NDkxOCwgCisgICAgODQ5MzIsIDg0OTQ2LCA4NDk2MCwgODQ5NzQsIDg0OTg4LCA4NTAwMiwgODUwMTYsIDg1MDMwLCA4NTA0NCwgODUwNTgsIAorICAgIDg1MDcyLCA4NTA4NiwgODUxMDAsIDg1MTE0LCA4NTEyOCwgODUxNDIsIDg1MTU2LCA4NTE3MCwgODUxODQsIDg1MTk4LCAKKyAgICA4NTIxMiwgODUyMjYsIDg1MjQwLCA4NTI1NCwgODUyNjgsIDg1MjgyLCA4NTI5NiwgODUzMTAsIDg1MzI0LCA4NTMzOCwgCisgICAgODUzNTIsIDg1MzY2LCA4NTM4MCwgODUzOTQsIDg1NDA4LCA4NTQyMiwgODU0MzYsIDg1NDUwLCA4NTQ2NCwgODU0NzgsIAorICAgIDg1NDkyLCA4NTUwNiwgODU1MjAsIDg1NTM0LCA4NTU0OCwgODU1NjIsIDg1NTc2LCA4NTU5MCwgODU2MDQsIDg1NjE4LCAKKyAgICA4NTYzMiwgODU2NDYsIDg1NjYwLCA4NTY3NCwgODU2ODgsIDg1NzAyLCA4NTcxNiwgODU3MzAsIDg1NzQ0LCA4NTc1OCwgCisgICAgODU3NzIsIDg1Nzg2LCA4NTgwMCwgODU4MTQsIDg1ODI4LCA4NTg0MiwgODU4NTYsIDg1ODcwLCA4NTg4NCwgODU4OTgsIAorICAgIDg1OTEyLCA4NTkyNiwgODU5NDAsIDg1OTU0LCA4NTk2OCwgODU5ODIsIDg1OTk2LCA4NjAxMCwgODYwMjQsIDg2MDM4LCAKKyAgICA4NjA1MiwgODYwNjYsIDg2MDgwLCA4NjA5NCwgODYxMDgsIDg2MTIyLCA4NjEzNiwgODYxNTAsIDg2MTY0LCA4NjE3OCwgCisgICAgODYxOTIsIDg2MjA2LCA4NjIyMCwgODYyMzQsIDg2MjQ4LCA4NjI2MiwgODYyNzYsIDg2MjkwLCA4NjMwNCwgODYzMTgsIAorICAgIDg2MzMyLCA4NjM0NiwgODYzNjAsIDg2Mzc0LCA4NjM4OCwgODY0MDIsIDg2NDE2LCA4NjQzMCwgODY0NDQsIDg2NDU4LCAKKyAgICA4NjQ3MiwgODY0ODYsIDg2NTAwLCA4NjUxNCwgODY1MjgsIDg2NTQyLCA4NjU1NiwgODY1NzAsIDg2NTg0LCA4NjU5OCwgCisgICAgODY2MTIsIDg2NjI2LCA4NjY0MCwgODY2NTQsIDg2NjY4LCA4NjY4MiwgODY2OTYsIDg2NzEwLCA4NjcyNCwgODY3MzgsIAorICAgIDg2NzUyLCA4Njc2NiwgODY3ODAsIDg2Nzk0LCA4NjgwOCwgODY4MjIsIDg2ODM2LCA4Njg1MCwgODY4NjQsIDg2ODc4LCAKKyAgICA4Njg5MiwgODY5MDYsIDg2OTIwLCA4NjkzNCwgODY5NDgsIDg2OTYyLCA4Njk3NiwgODY5OTAsIDg3MDA0LCA4NzAxOCwgCisgICAgODcwMzIsIDg3MDQ2LCA4NzA2MCwgODcwNzQsIDg3MDg4LCA4NzEwMiwgODcxMTYsIDg3MTMwLCA4NzE0NCwgODcxNTgsIAorICAgIDg3MTcyLCA4NzE4NiwgODcyMDAsIDg3MjE0LCA4NzIyOCwgODcyNDIsIDg3MjU2LCA4NzI3MCwgODcyODQsIDg3Mjk4LCAKKyAgICA4NzMxMiwgODczMjYsIDg3MzQwLCA4NzM1NCwgODczNjgsIDg3MzgyLCA4NzM5NiwgODc0MTAsIDg3NDI0LCA4NzQzOCwgCisgICAgODc0NTIsIDg3NDY2LCA4NzQ4MCwgODc0OTQsIDg3NTA4LCA4NzUyMiwgODc1MzYsIDg3NTUwLCA4NzU2NCwgODc1NzgsIAorICAgIDg3NTkyLCA4NzYwNiwgODc2MjAsIDg3NjM0LCA4NzY0OCwgODc2NjIsIDg3Njc2LCA4NzY5MCwgODc3MDQsIDg3NzE4LCAKKyAgICA4NzczMiwgODc3NDYsIDg3NzYwLCA4Nzc3NCwgODc3ODgsIDg3ODAyLCA4NzgxNiwgODc4MzAsIDg3ODQ0LCA4Nzg1OCwgCisgICAgODc4NzIsIDg3ODg2LCA4NzkwMCwgODc5MTQsIDg3OTI4LCA4Nzk0MiwgODc5NTYsIDg3OTcwLCA4Nzk4NCwgODc5OTgsIAorICAgIDg4MDEyLCA4ODAyNiwgODgwNDAsIDg4MDU0LCA4ODA2OCwgODgwODIsIDg4MDk2LCA4ODExMCwgODgxMjQsIDg4MTM4LCAKKyAgICA4ODE1MiwgODgxNjYsIDg4MTgwLCA4ODE5NCwgODgyMDgsIDg4MjIyLCA4ODIzNiwgODgyNTAsIDg4MjY0LCA4ODI3OCwgCisgICAgODgyOTIsIDg4MzA2LCA4ODMyMCwgODgzMzQsIDg4MzQ4LCA4ODM2MiwgODgzNzYsIDg4MzkwLCA4ODQwNCwgODg0MTgsIAorICAgIDg4NDMyLCA4ODQ0NiwgODg0NjAsIDg4NDc0LCA4ODQ4OCwgODg1MDIsIDg4NTE2LCA4ODUzMCwgODg1NDQsIDg4NTU4LCAKKyAgICA4ODU3MiwgODg1ODYsIDg4NjAwLCA4ODYxNCwgODg2MjgsIDg4NjQyLCA4ODY1NiwgODg2NzAsIDg4Njg0LCA4ODY5OCwgCisgICAgODg3MTIsIDg4NzI2LCA4ODc0MCwgODg3NTQsIDg4NzY4LCA4ODc4MiwgODg3OTYsIDg4ODEwLCA4ODgyNCwgODg4MzgsIAorICAgIDg4ODUyLCA4ODg2NiwgODg4ODAsIDg4ODk0LCA4ODkwOCwgODg5MjIsIDg4OTM2LCA4ODk1MCwgODg5NjQsIDg4OTc4LCAKKyAgICA4ODk5MiwgODkwMDYsIDg5MDIwLCA4OTAzNCwgODkwNDgsIDg5MDYyLCA4OTA3NiwgODkwOTAsIDg5MTA0LCA4OTExOCwgCisgICAgODkxMzIsIDg5MTQ2LCA4OTE2MCwgODkxNzQsIDg5MTg4LCA4OTIwMiwgODkyMTYsIDg5MjMwLCA4OTI0NCwgODkyNTgsIAorICAgIDg5MjcyLCA4OTI4NiwgODkzMDAsIDg5MzE0LCA4OTMyOCwgODkzNDIsIDg5MzU2LCA4OTM3MCwgODkzODQsIDg5Mzk4LCAKKyAgICA4OTQxMiwgODk0MjYsIDg5NDQwLCA4OTQ1NCwgODk0NjgsIDg5NDgyLCA4OTQ5NiwgODk1MTAsIDg5NTI0LCA4OTUzOCwgCisgICAgODk1NTIsIDg5NTY2LCA4OTU4MCwgODk1OTQsIDg5NjA4LCA4OTYyMiwgODk2MzYsIDg5NjUwLCA4OTY2NCwgODk2NzgsIAorICAgIDg5NjkyLCA4OTcwNiwgODk3MjAsIDg5NzM0LCA4OTc0OCwgODk3NjIsIDg5Nzc2LCA4OTc5MCwgODk4MDQsIDg5ODE4LCAKKyAgICA4OTgzMiwgODk4NDYsIDg5ODYwLCA4OTg3NCwgODk4ODgsIDg5OTAyLCA4OTkxNiwgODk5MzAsIDg5OTQ0LCA4OTk1OCwgCisgICAgODk5NzIsIDg5OTg2LCA5MDAwMCwgOTAwMTQsIDkwMDI4LCA5MDA0MiwgOTAwNTYsIDkwMDcwLCA5MDA4NCwgOTAwOTgsIAorICAgIDkwMTEyLCA5MDEyNiwgOTAxNDAsIDkwMTU0LCA5MDE2OCwgOTAxODIsIDkwMTk2LCA5MDIxMCwgOTAyMjQsIDkwMjM4LCAKKyAgICA5MDI0OSwgOTAyNjAsIDkwMjcwLCA5MDI4MSwgOTAyODksIDkwMjk1LCA5MDMwNSwgOTAzMTMsIDkwMzE5LCAzMTYyMSwgCisgICAgOTAzMjQsIDkwMzMwLCA5MDMzOSwgOTAzNTEsIDkwMzU2LCA5MDM2MywgMTA1NDYsIDE5MzExLCA5MDM2OSwgOTAzNzgsIAorICAgIDkwMzgzLCA5MDM4NywgOTAzOTQsIDkwNDAwLCA5MDQwNSwgOTA0MTAsIDkwNDE4LCA5MDQyNiwgMTMyMjksIDkwNDMwLCAKKyAgICA5MDQzMywgOTA0MzUsIDkwNDQyLCA5MDQ0OCwgOTA0NTksIDkwNDY0LCA5MDQ2OCwgOTA0NzMsIDkwNDgwLCA5MDQ4NiwgCisgICAgOTA0OTEsIDkwNDk5LCA3MTc0MSwgNzE3NTEsIDkwNTA1LCA5MDUxMiwgOTA1MjIsIDExNjQxLCA5MDUyOSwgOTA1MzQsIAorICAgIDMxODU1LCA5MDU0MywgOTA1NDgsIDkwNTU1LCA5MDU2NSwgOTA1NzMsIDkwNTgxLCA5MDU5MCwgOTA1OTYsIDkwNjAyLCAKKyAgICA5MDYwOSwgOTA2MTYsIDkwNjIxLCA5MDYyNSwgOTA2MzMsIDY2NTQ0LCA5MDYzOCwgOTA2NDcsIDkwNjU1LCA5MDY2MiwgCisgICAgOTA2NjcsIDkwNjcxLCA5MDY4MCwgOTA2ODYsIDkwNjg5LCA5MDY5MywgOTA3MDIsIDkwNzEyLCA3ODQ1NywgOTA3MjEsIAorICAgIDkwNzI1LCA5MDczMywgOTA3MzcsIDkwNzQzLCA5MDc1NCwgOTA3NjQsIDE5MzIwLCA5MDc3NSwgOTA3ODQsIDkwNzkyLCAKKyAgICA5MDgwMCwgOTA4MDcsIDY2NTYzLCA5MTkyLCA5MDgxNSwgOTA4MTksIDkwODI4LCA5MDgzNSwgOTA4MzgsIDI5NzM2LCAKKyAgICA5MDg0MSwgOTA4NDUsIDkwODUwLCA5MDg2NywgOTA4NzksIDExNTk5LCA5MDg5MSwgOTA4OTYsIDkwOTAxLCA5MDkwNiwgCisgICAgMjI4NjEsIDkwOTEwLCA5MDkxNSwgOTA5MjAsIDkwOTI2LCA5MDkzMSwgNjE0MiwgOTA5MzYsIDIyODY1LCA5MDk0MSwgCisgICAgOTA5NDYsIDkwOTUyLCA5MDk1OSwgOTA5NjQsIDkwOTY5LCA5MDk3NSwgOTA5ODEsIDkwOTg3LCA5MDk5MiwgOTA5OTgsIAorICAgIDkxMDAyLCA5MTAxNiwgOTEwMjQsIDkxMDMyLCA5MTAzOCwgOTEwNDMsIDkxMDUwLCA5MTA2MCwgOTEwNjksIDkxMDc0LCAKKyAgICA5MTA3OSwgOTEwODQsIDkxMDkyLCA5MTA5NywgOTExMDMsIDkxMTA4LCA5MTExNywgNjUyMzIsIDkxMTIyLCA5MTEyNSwgCisgICAgOTExNDMsIDkxMTYyLCA5MTE3NSwgOTExODksIDkxMjA1LCA5MTIxMiwgOTEyMTksIDkxMjI4LCA5MTIzNSwgOTEyNDEsIAorICAgIDkxMjQ4LCA5MTI1MywgOTEyNTksIDkxMjY1LCA5MTI3MywgOTEyNzksIDkxMjg0LCA5MTI4OSwgOTEzMDUsIDExNjEyLCAKKyAgICA5MTMxOSwgOTEzMjYsIDkxMzM0LCA5MTM0MCwgOTEzNDQsIDkxMzQ3LCA5MTM1MiwgOTEzNTcsIDkxMzY0LCA5MTM2OSwgCisgICAgOTEzNzgsIDkxMzg0LCA5MTM4OSwgOTEzOTUsIDkxNDAxLCA5MTQxMCwgOTE0MTksIDM4OTU1LCA5MTQyNCwgOTE0MzIsIAorICAgIDkxNDQxLCAxMjg4MiwgOTE0NTAsIDkxNDU2LCA5MTQ2NCwgOTE0NzAsIDkxNDc2LCA5MTQ4MiwgOTE0ODcsIDkxNDk0LCAKKyAgICA5MTUwMCwgMTI4OTMsIDkxNTA1LCA5MTUwOCwgOTE1MTMsIDM1NTc5LCA5MTUyMywgOTE1MzIsIDkxNTM3LCA5MTU0MywgCisgICAgOTE1NDgsIDkxNTU2LCA5MTU2MywgOTE1NzQsIDkxNTg0LCA5MTU4OSwgOTE1OTcsIDcxMDk1LCA5MTYwMiwgOTE2MDgsIAorICAgIDkxNjEzLCA5MTYyMCwgOTE2MjksIDkxNjM3LCA5MTY0MSwgOTE2NDcsIDkxNjUzLCA5MTY2MCwgOTE2NjYsIDkxNjcwLCAKKyAgICAxODY4MiwgMzEwMywgOTE2NzUsIDkxNjc5LCA5MTY4MywgOTE2ODksIDkxNjk4LCA5MTcwNCwgOTE3MTEsIDkxNzE1LCAKKyAgICA5MTczNiwgOTE3NTgsIDkxNzc0LCA5MTc5MSwgOTE4MTAsIDkxODE5LCA5MTgyOSwgOTE4MzcsIDkxODQ0LCA5MTg1MSwgCisgICAgOTE4NTcsIDI5NTk3LCA5MTg3MSwgOTE4NzUsIDkxODgxLCA5MTg4OSwgOTE5MDEsIDkxOTA3LCA5MTkxNSwgOTE5MjIsIAorICAgIDkxOTI3LCA5MTkzMiwgOTE5MzYsIDkxOTQ0LCA5MTk1MSwgOTE5NTUsIDkxOTYxLCA5MTk2NywgOTE5NzIsIDM3MjksIAorICAgIDQ3MjIwLCA5MTk3OCwgOTE5ODIsIDkxOTg2LCA5MTk5MCwgOTE5OTUsIDkyMDAwLCA5MjAwNSwgOTIwMTEsIDkyMDE3LCAKKyAgICA5MjAyMywgOTIwMzAsIDkyMDM2LCA5MjA0MywgOTIwNDksIDkyMDU1LCA5MjA2MCwgOTIwNjYsIDkyMDcxLCA5MjA3NSwgCisgICAgOTIwODAsIDkyMDg0LCA5MjA4OSwgNDcyMzUsIDkyMDkzLCA5MjA5OCwgOTIxMDYsIDkyMTEwLCA5MjExNSwgOTIxMjIsIAorICAgIDkyMTMxLCA5MjEzNywgOTIxNDYsIDkyMTUwLCA5MjE1NywgOTIxNjEsIDkyMTY0LCA5MjE3MSwgOTIxNzcsIDkyMTg2LCAKKyAgICA5MjE5NiwgOTIyMDYsIDkyMjExLCA5MjIxNSwgOTIyMjIsIDkyMjMwLCA5MjIzOSwgOTIyNDMsIDkyMjUxLCA5MjI1NywgCisgICAgOTIyNjIsIDkyMjY3LCA5MjI3MywgOTIyNzksIDkyMjg0LCA5MjI4OCwgOTIyOTQsIDkyMjk5LCA5MjMwMywgOTIzMDcsIAorICAgIDkyMzEwLCA5MjMxNSwgOTIzMjMsIDkyMzMzLCA5MjMzOSwgOTIzNDQsIDkyMzU0LCA0NDQ5MiwgOTIzNjIsIDkyMzc0LCAKKyAgICA5MjM4MCwgOTIzODQsIDkyMzkwLCA5MjQwMiwgOTI0MTMsIDkyNDIwLCA5MjQyNiwgOTI0MzMsIDkyNDQwLCA5MjQ1MiwgCisgICAgOTI0NTksIDkyNDY1LCAyMjkzOSwgOTI0NjksIDkyNDc3LCA5MjQ4MywgOTI0OTAsIDkyNDk2LCA5MjUwMiwgOTI1MDgsIAorICAgIDkyNTEzLCA5MjUxOCwgOTI1MjMsIDkyNTI3LCA5MjUzNiwgOTI1NDQsIDkyNTU1LCA3Mzc0LCA5MjU2MCwgMTgxMzEsIAorICAgIDkyNTY2LCA5MjU3MCwgOTI1NzQsIDkyNTc4LCA5MjU4NiwgOTI1OTUsIDkyNTk5LCA5MjYwNiwgOTI2MTUsIDkyNjIzLCAKKyAgICA5MjYzNiwgOTI2NDIsIDkyMDg1LCAzMjczOSwgOTI2NDcsIDkyNjQ5LCA5MjY1NCwgOTI2NTksIDkyNjY0LCA5MjY2OSwgCisgICAgOTI2NzQsIDkyNjc5LCA5MjY4NCwgOTI2ODksIDkyNjk0LCA5MjY5OSwgOTI3MDQsIDkyNzA5LCA5MjcxNCwgOTI3MTksIAorICAgIDkyNzI1LCA5MjczMCwgOTI3MzUsIDkyNzQwLCA5Mjc0NSwgOTI3NTAsIDkyNzU1LCA5Mjc2MCwgOTI3NjUsIDkyNzcxLCAKKyAgICA5Mjc3NywgOTI3ODMsIDkyNzg4LCA5Mjc5MywgOTI4MDUsIDkyODEwLCAxODgxLCA1NCwgOTI4MTUsIDkyODIwLCAzNTU4NSwgCisgICAgOTI4MjQsIDM1NTkwLCAzNTU5NSwgMzU2MDEsIDM1NjA2LCA5MjgyOCwgMzU2MTEsIDIzOTk0LCA5Mjg1MCwgOTI4NTQsIAorICAgIDkyODU4LCA5Mjg2MywgOTI4NjcsIDM1NjE1LCA5Mjg3MSwgOTI4NzksIDkyODg2LCA5Mjg5MiwgMzU2MjAsIDkyOTAyLCAKKyAgICA5MjkwNSwgOTI5MTAsIDkyOTE0LCA5MjkyMywgMTAzNTYsIDkyOTMxLCAzNTYyNSwgMjM4NDUsIDkyOTM0LCA5MjkzOCwgCisgICAgOTI5NDYsIDEzOTMsIDkyOTUxLCAzNTYzNiwgOTI5NTQsIDkyOTU5LCAyNzk5NSwgMjgwMDUsIDM4NTc4LCA5Mjk2NCwgCisgICAgOTI5NjksIDkyOTc0LCA5Mjk3OSwgOTI5ODUsIDkyOTkwLCA5Mjk5OSwgOTMwMDQsIDkzMDEzLCA5MzAyMSwgOTMwMjgsIAorICAgIDkzMDM0LCA5MzAzOSwgOTMwNDQsIDkzMDQ5LCA5MzA1OSwgOTMwNjgsIDkzMDc2LCA5MzA4MSwgOTMwODksIDkzMDkzLCAKKyAgICA5MzEwMSwgOTMxMDUsIDkzMTEyLCA5MzEyMCwgMzU0NDQsIDQxNjM0LCA5MzEyNywgOTMxMzMsIDkzMTM4LCA5MzE0MywgCisgICAgMTMyNjQsIDMwODIwLCA5MzE0OCwgOTMxNTMsIDkzMTYwLCA5MzE2NiwgOTMxNzEsIDkzMTc5LCA5MzE4OSwgOTMxOTksIAorICAgIDkzMjA1LCA5MzIxMCwgOTMyMTYsIDE5MzQyLCA5MzIyMywgMzk0NjIsIDkzMjM2LCA5MzI0MSwgOTMyNDcsIDMzNzM3LCAKKyAgICA2OTU3OSwgOTMyNjAsIDkzMjY0LCA5MzI3MywgOTMyODIsIDkzMjg5LCA5MzI5NSwgOTMzMDMsIDkzMzEyLCA5MzMxOSwgCisgICAgNDE3NTQsIDkzMzI1LCA5MzMyOCwgOTMzMzIsIDkzMzM2LCA5MzM0MCwgMjgxNDEsIDkzMzQ2LCA5MzM1MywgOTMzNTksIAorICAgIDkzMzY3LCA5MzM3MiwgOTMzNzYsIDI2MTM3LCA5MzM4MiwgOTMzODUsIDkzMzkzLCA5MzQwMCwgOTM0MDgsIDkzNDIxLCAKKyAgICA5MzQzNSwgOTM0NDIsIDkzNDQ4LCA5MzQ1NSwgOTM0NjEsIDM1NjUwLCA5MzQ2NSwgOTM0NzIsIDkzNDgwLCA5MzQ4OCwgCisgICAgOTM0OTQsIDM1NjU1LCA5MzUwMiwgOTM1MDgsIDkzNTEzLCA5MzUyMywgOTM1MjksIDkzNTM4LCAzMzUzMiwgMzgwMTAsIAorICAgIDkzNTQ2LCA5MzU1MSwgOTM1NTYsIDkzNTYwLCA5MzU2NSwgOTM1NjksIDkzNTc3LCA5MzU4MiwgMTY0MTksIDQ0NTA1LCAKKyAgICA5MzU4NiwgOTM1OTEsIDM1NjYwLCA2ODEyMSwgOTM1OTUsIDkzNjAwLCA5MzYwNCwgOTM2MTEsIDkzNjIwLCA5MzYyNCwgCisgICAgOTM2MzIsIDkzNjM4LCA5MzY0MywgOTM2NDksIDg0OTMsIDkzNjU0LCA5MzY2MCwgOTM2NjUsIDkzNjcwLCA5MzY4MSwgCisgICAgOTM2OTAsIDkzNzAyLCA5MzcxNywgMzU5MzYsIDkzNzIzLCAxODI1MCwgMzU2NjQsIDkzNzI3LCA5MzczNCwgOTM3NDAsIAorICAgIDI2MjUzLCA5Mzc0NCwgOTM3NTEsIDkzNzYwLCA5Mzc2NywgOTM3NzYsIDkzNzgyLCA5Mzc4NywgOTM3OTUsIDkzODAxLCAKKyAgICA5MzgwNiwgMzU2NzQsIDkzODExLCA5MzgyMCwgOTI0MDgsIDkzODI5LCA5MzgzNiwgOTM4NDIsIDkzODQ4LCA5Mzg1NywgCisgICAgOTM4NjcsIDkzODc1LCA5Mzg4MiwgOTM4ODYsIDM1Njc5LCA5Mzg4OSwgMzU2ODUsIDM1NjkxLCA5Mzg5NCwgOTM5MDIsIAorICAgIDkzOTEwLCA5MzkyMCwgOTM5MjksIDkzOTM3LCA5Mzk0NCwgOTM5NTQsIDM1Njk2LCA5Mzk1OCwgOTM5NjAsIDkzOTY0LCAKKyAgICA5Mzk2OSwgOTM5NzMsIDkzOTc3LCA5Mzk4MywgOTM5ODgsIDkzOTkyLCA5NDAwMywgOTQwMDgsIDk0MDEzLCAzMTA4LCAKKyAgICA5NDAxNywgOTQwMjQsIDk0MDI4LCA5NDAzNywgOTQwNDUsIDk0MDUyLCA5NDA1NywgOTQwNjIsIDY4MTcyLCA5NDA2NiwgCisgICAgOTQwNjksIDk0MDc1LCA5NDA4MywgOTQwODksIDk0MDkzLCA5NDA5OCwgOTQxMDUsIDk0MTEwLCA5NDExNSwgOTQxMTksIAorICAgIDk0MTI1LCA5NDEzMCwgMzgwNDEsIDk0MTM0LCA5NDEzNywgOTQxNDIsIDk0MTQ2LCA5NDE1MSwgOTQxNTgsIDk0MTYzLCAKKyAgICA5NDE2NywgNDMwMzEsIDk0MTc1LCAyODAxNCwgMjgwMjMsIDk0MTgxLCA5NDE4NywgOTQxOTMsIDk0MTk4LCA5NDIwMiwgCisgICAgOTQyMDUsIDk0MjE1LCA5NDIyNCwgOTQyMjksIDk0MjM1LCA5NDI0MiwgOTQyNDgsIDk0MjUyLCA5NDI2MCwgOTQyNjUsIAorICAgIDM4MDQ3LCA3ODY3NywgOTQyNjksIDk0Mjc3LCA5NDI4MywgOTQyOTAsIDk0Mjk1LCA5NDI5OSwgOTQzMDQsIDYzNzU2LCAKKyAgICA5NDMxMCwgOTQzMTYsIDM4MDUzLCA5NDMyMSwgOTQzMjYsIDk0MzMwLCA5NDMzNSwgOTQzNDAsIDk0MzQ1LCA5NDM0OSwgCisgICAgOTQzNTQsIDk0MzU5LCA5NDM2NSwgOTQzNzAsIDk0Mzc1LCA5NDM4MSwgOTQzODcsIDk0MzkyLCA5NDM5NiwgOTQ0MDEsIAorICAgIDk0NDA2LCA5NDQxMSwgOTQ0MTUsIDI2MjUyLCA5NDQyMCwgOTQ0MjUsIDk0NDMxLCA5NDQzNywgOTQ0NDMsIDk0NDQ4LCAKKyAgICA5NDQ1MiwgOTQ0NTcsIDk0NDYyLCA5NDQ2NywgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgOTQ0ODYsIDk0NDkxLCA0NzQ5MCwgCisgICAgOTQ0OTUsIDM1NzA0LCA5NDUwMywgOTQ1MDcsIDk0NTE1LCA5NDUyMywgOTQ1MzQsIDk0NTM5LCA5NDU0MywgMjQ0MjAsIAorICAgIDc2MTY5LCA5NDU0OCwgOTQ1NTQsIDk0NTU5LCA5NDU2OSwgOTQ1NzYsIDk0NTgxLCA5NDU4OSwgOTQ1OTgsIDk0NjAzLCAKKyAgICA5NDYwNywgOTQ2MTIsIDk0NjIwLCA5NDYyOCwgOTQ2MzUsIDcxMzU3LCA5NDY0MSwgOTQ2NDksIDk0NjU2LCA5NDY2NywgCisgICAgOTQ2NzMsIDk0Njc5LCAzNTcxNCwgOTQ2ODIsIDk0Njg5LCA5NDY5NywgOTQ3MDIsIDQ0NzA4LCA5NDcwNiwgOTQ3MTEsIAorICAgIDk0NzE4LCA5NDcyMywgOTU2NywgOTQ3MjcsIDk0NzM1LCA5NDc0MiwgOTQ3NDksIDk0NzU4LCA5NDc2NSwgOTQ3NzEsIAorICAgIDk0Nzg1LCA2MjE0LCA5NDc5MywgOTQ3OTksIDk0ODAzLCA5NDgwNiwgOTQ4MTQsIDk0ODIxLCA5NDgyNiwgOTQ4MzksIAorICAgIDk0ODQ2LCA5NDg1MiwgOTQ4NTYsIDk0ODY0LCA5NDg2OSwgOTQ4NzYsIDk0ODgxLCA2NjQwMywgOTQ4ODYsIDk0ODg5LCAKKyAgICA5NDg5OCwgOTQ5MDUsIDk0OTExLCA5NDkxNSwgOTQ5MTgsIDk0OTI2LCA5NDkzMiwgOTQ5NDEsIDk0OTUxLCA5NDk2MSwgCisgICAgOTQ5NzAsIDk0OTgxLCA5NDk4OSwgOTUwMDAsIDk1MDA1LCA5NTAwOSwgOTUwMTQsIDk1MDE4LCAzODcwOSwgOTUwMjYsIAorICAgIDIzMjM0LCAzODcxOCwgOTUwMzEsIDk1MDM2LCA5NTA0MSwgOTUwNDYsIDk1MDUxLCA5NTA1NiwgOTUwNjEsIDk1MDY1LCAKKyAgICA5NTA3MCwgOTUwNzUsIDk1MDgwLCA5NTA4NSwgOTUwOTAsIDk1MDk1LCA5NTA5OSwgOTUxMDQsIDk1MTA5LCA5NTExMywgCisgICAgOTUxMTcsIDk1MTIxLCA5NTEyNSwgOTUxMzAsIDk1MTM1LCA5NTEzOSwgOTUxNDQsIDk1MTQ4LCA5NTE1MiwgOTUxNTcsIAorICAgIDk1MTYyLCA5NTE2NywgOTUxNzIsIDk1MTc2LCA5NTE4MSwgOTUxODYsIDk1MTkwLCA5NTE5NSwgOTUyMDAsIDk1MjA1LCAKKyAgICA5NTIxMCwgOTUyMTUsIDk1MjIwLCA5NTIyNSwgOTUyMzAsIDk1MjM1LCA5NTI0MCwgOTUyNDUsIDk1MjUwLCA5NTI1NSwgCisgICAgOTUyNjAsIDk1MjY1LCA5NTI3MCwgOTUyNzUsIDk1MjgwLCA5NTI4NSwgOTUyOTAsIDk1Mjk0LCA5NTI5OSwgOTUzMDQsIAorICAgIDk1MzA5LCA5NTMxNCwgOTUzMTksIDk1MzI0LCA5NTMyOSwgOTUzMzQsIDk1MzM5LCA5NTM0NCwgOTUzNDksIDk1MzUzLCAKKyAgICA5NTM1OCwgOTUzNjIsIDk1MzY3LCA5NTM3MiwgOTUzNzcsIDk1MzgyLCA5NTM4NywgOTUzOTIsIDk1Mzk3LCA5NTQwMiwgCisgICAgOTU0MDcsIDk1NDExLCA5NTQxNSwgOTU0MjAsIDk1NDI1LCA5NTQyOSwgOTU0MzQsIDk1NDM5LCA5NTQ0MywgOTU0NDgsIAorICAgIDk1NDUzLCA5NTQ1OCwgOTU0NjMsIDk1NDY3LCA5NTQ3MiwgOTU0NzcsIDk1NDgxLCA5NTQ4NiwgOTU0OTAsIDk1NDk0LCAKKyAgICA5NTQ5OCwgOTU1MDIsIDk1NTA3LCA5NTUxMSwgOTU1MTUsIDk1NTE5LCA5NTUyMywgOTU1MjcsIDk1NTMxLCA5NTUzNSwgCisgICAgOTU1MzksIDk1NTQzLCA5NTU0OCwgOTU1NTMsIDk1NTU4LCA5NTU2MywgOTU1NjgsIDk1NTczLCA5NTU3OCwgOTU1ODMsIAorICAgIDk1NTg4LCA5NTU5MywgOTU1OTcsIDk1NjAxLCA5NTYwNSwgOTU2MDksIDk1NjEzLCA5NTYxNywgOTU2MjIsIDk1NjI2LCAKKyAgICA5NTYzMSwgOTU2MzUsIDk1NjQwLCA5NTY0NSwgOTU2NDksIDk1NjUzLCA5NTY1OCwgOTU2NjIsIDk1NjY2LCA5NTY3MCwgCisgICAgOTU2NzQsIDk1Njc4LCA5NTY4MiwgOTU2ODYsIDk1NjkwLCA5NTY5NCwgOTU2OTgsIDk1NzAyLCA5NTcwNiwgOTU3MTAsIAorICAgIDk1NzE0LCA5NTcxOSwgOTU3MjQsIDk1NzI4LCA5NTczMiwgOTU3MzYsIDk1NzQwLCA5NTc0NCwgOTU3NDgsIDk1NzUzLCAKKyAgICA5NTc1NywgOTU3NjEsIDk1NzY1LCA5NTc2OSwgOTU3NzMsIDk1Nzc3LCA5NTc4MiwgOTU3ODYsIDk1NzkxLCA5NTc5NSwgCisgICAgOTU3OTksIDk1ODAzLCA5NTgwNywgOTU4MTEsIDk1ODE1LCA5NTgxOSwgOTU4MjMsIDk1ODI3LCA5NTgzMSwgOTU4MzUsIAorICAgIDk1ODQwLCA5NTg0NCwgOTU4NDgsIDk1ODUyLCA5NTg1NiwgOTU4NjAsIDk1ODY0LCA5NTg2OCwgOTU4NzIsIDk1ODc2LCAKKyAgICA5NTg4MCwgOTU4ODQsIDk1ODg5LCA5NTg5MywgOTU4OTcsIDk1OTAyLCA5NTkwNywgOTU5MTEsIDk1OTE1LCA5NTkxOSwgCisgICAgOTU5MjMsIDk1OTI3LCA5NTkzMSwgOTU5MzUsIDk1OTM5LCA5NTk0NCwgOTU5NDgsIDk1OTUzLCA5NTk1NywgOTU5NjIsIAorICAgIDk1OTY2LCA5NTk3MSwgOTU5NzUsIDk1OTgxLCA5NTk4NiwgOTU5OTAsIDk1OTk1LCA5NTk5OSwgOTYwMDQsIDk2MDA4LCAKKyAgICA5NjAxMywgOTYwMTcsIDk2MDIyLCAxNTAwLCA5NjAyNiwgMjg2MiwgMTc1NSwgMTY3MywgMjc5NTAsIDk2MDMwLCAyODcxLCAKKyAgICA5NjAzNCwgMTM2MiwgOTYwMzksIDEzMDQsIDk2MDQzLCA5NjA0NywgMjg4OCwgOTYwNTEsIDk2MDU5LCA5NjA2NiwgOTYwNzMsIAorICAgIDk2MDg3LCAyODkyLCA3NDc2LCA5NjA5NiwgOTYxMDQsIDk2MTExLCA5NjEyMiwgOTYxMzEsIDk2MTM4LCA5NjE1MCwgCisgICAgOTYxNjMsIDk2MTc2LCA5NjE4NywgOTYxOTIsIDk2MTk5LCA5NjIxMSwgOTYyMTUsIDI4OTYsIDEyOTYwLCA5NjIyNSwgCisgICAgOTYyMzAsIDk2MjM5LCA5NjI0OSwgOTYyNTQsIDI5MDAsIDk2MjYyLCA5NjI2NiwgOTYyNzEsIDk2Mjc4LCA5NjI4NCwgCisgICAgOTYyOTIsIDk2MzA0LCA5NjMxNCwgMTMwOSwgMTQzMTEsIDk2MzI3LCA5NjMzMSwgOTYzMzcsIDk2MzUxLCA5NjM2MywgCisgICAgOTYzNzUsIDk2Mzg1LCA5NjM5NCwgOTY0MDMsIDk2NDEyLCA5NjQyMCwgOTY0MzEsIDk2NDM5LCA0MzA2LCA5NjQ0OSwgCisgICAgOTY0NjAsIDk2NDY5LCA5NjQ3NSwgOTY0OTAsIDk2NDk3LCA5NjUwMywgOTY1MDgsIDM4ODQzLCA5NjUxMywgMjkyNCwgCisgICAgMTQzMTUsIDk2NTE3LCA5NjUyNCwgOTQ5MiwgOTY1MzMsIDk2NTM5LCAyOTI5LCAzNTE1MiwgOTY1NDgsIDY2MDk5LCAKKyAgICA5NjU1NSwgOTY1NTksIDk2NTY1LCA5NjU3NiwgOTY1ODIsIDk2NTg5LCA5NjU5NSwgOTY2MDMsIDk2NjEwLCA5NjYxNiwgCisgICAgOTY2MjcsIDk2NjM3LCA5NjY0NiwgOTY2NTcsIDk2NjY2LCA5NjY3MywgOTY2NzksIDk2Njg5LCA5NjY5NywgOTY3MDMsIAorICAgIDk2NzE4LCA5NjcyNCwgOTY3MjksIDk2NzM2LCA5NjczOSwgOTY3NDUsIDk2NzUyLCA5Njc1OCwgOTY3NjYsIDk2Nzc1LCAKKyAgICA5Njc4MywgOTY3ODksIDk2Nzk4LCA0Njc2MCwgOTY4MTIsIDk2ODE3LCA5NjgyMywgMTYxOTUsIDk2ODI4LCA5Njg0MSwgCisgICAgOTY4NTMsIDk2ODYyLCA5Njg3MCwgOTY4NzcsIDk2ODgxLCA5Njg4NSwgOTY4ODgsIDk2ODk1LCA5NjkwMiwgOTY5MTAsIAorICAgIDk2OTE4LCA5NjkyNywgOTY5MzUsIDE2MTAwLCA5Njk0MywgOTY5NDgsIDk2OTUyLCA5Njk2NCwgOTY5NzEsIDk2OTc4LCAKKyAgICA5Njk4NywgODc3LCA5Njk5NywgOTcwMDYsIDk3MDE3LCAyOTQ1LCA5NzAyMSwgOTcwMjUsIDk3MDMxLCA5NzA0NCwgOTcwNTYsIAorICAgIDk3MDY2LCA5NzA3NSwgOTcwODcsIDI4NzAxLCA5NzA5OCwgOTcxMDYsIDk3MTE1LCA5NzEyNiwgOTcxMzcsIDk3MTQ3LCAKKyAgICA5NzE1NywgOTcxNjYsIDk3MTc0LCAxMjQ3NCwgOTcxODEsIDk3MTg1LCA5NzE4OCwgOTcxOTMsIDk3MTk4LCA5NzIwMiwgCisgICAgOTcyMDgsIDEzMTQsIDk3MjE1LCA5NzIxOSwgMTMwNDIsIDk3MjIzLCA5NzIzNCwgOTcyNDMsIDk3MjUxLCA5NzI2MCwgCisgICAgOTcyNjgsIDk3Mjg0LCA5NzI5NSwgOTczMDQsIDk3MzEyLCA5NzMyNCwgOTczMzUsIDk3MzUxLCA5NzM2MSwgOTczODIsIAorICAgIDk3Mzk2LCA5NzQwOSwgOTc0MTcsIDk3NDI0LCA3NTIyLCA5NzQzNywgOTc0NDIsIDk3NDQ4LCA2MjIzLCA5NzQ1NCwgCisgICAgOTc0NTcsIDk3NDY0LCA5NzQ3NCwgODU5NSwgOTc0ODEsIDk3NDg2LCA5NzQ5MSwgOTc0OTYsIDk3NTA0LCA5NzUxMywgCisgICAgOTc1MjEsIDk3NTI2LCA5NzUzMywgMTA1OTQsIDEwNjAzLCA5NzUzOSwgOTc1NTAsIDk3NTU1LCA5NzU2MSwgMjk2MSwgCisgICAgMjk2NiwgOTc1NjcsIDExOTY3LCA5NzU3MywgOTc1ODAsIDk3NTg3LCA5NzYwMCwgOTc2MDUsIDIyNjYsIDg3LCA5NzYxMywgCisgICAgOTc2MTgsIDk3NjI2LCA5NzYzNiwgOTc2NDUsIDk3NjUxLCA5NzY2MCwgOTc2NjgsIDk3Njc4LCA5NzY4MiwgOTc2ODYsIAorICAgIDk3NjkxLCA5NzY5NSwgOTc3MDcsIDI5ODksIDk3NzE1LCA5NzcyMywgOTc3MjgsIDk3NzM5LCA5Nzc1MCwgOTc3NjIsIAorICAgIDk3NzczLCA5Nzc4MywgOTc3OTIsIDIzMjc1LCA5Nzc5NywgOTc4MDMsIDk3ODA4LCA5NzgxOCwgOTc4MjgsIDk3ODMzLCAKKyAgICAzMDcxMywgOTc4MzksIDk3ODQ0LCA5Nzg1MywgMjMyODcsIDk3ODU3LCA0NDA0LCAxNiwgOTc4NjIsIDk3ODcxLCA5Nzg3OCwgCisgICAgOTc4ODUsIDk3ODkxLCA5Nzg5NiwgOTc5MDAsIDk3OTA2LCAxMDg1LCA5NzkxMSwgOTc5MTYsIDY2NjgwLCA5NzkyMSwgCisgICAgOTc5MjYsIDk3OTMyLCA5NzkzOCwgOTc5NDYsIDk3OTUxLCA5Nzk1OSwgOTc5NjYsIDk3OTcyLCA5Nzk3NywgNDI5MTUsIAorICAgIDQ2NjU0LCA5Nzk4MywgMTgwNiwgMzIsIDk3OTkzLCA5ODAwNiwgOTgwMTEsIDk4MDE5LCA5ODAyNCwgOTgwMzAsIDMwMTUsIAorICAgIDMwNzg4LCA5ODAzNSwgOTgwNDMsIDk4MDUwLCA5ODA1NSwgOTgwNjQsIDY0MDA2LCA0MDIzLCA2Nzc4NCwgOTgwNzIsIAorICAgIDk4MDc2LCAxNzAwLCAxODE4LCA5ODA4MSwgOTgwODYsIDk4MDkzLCAxODIyLCAyODYsIDk4MTAwLCA5ODEwNiwgOTgxMTEsIAorICAgIDMwMzcsIDk4MTE1LCA5ODEyMCwgOTgxMjcsIDE4MjYsIDk4MTMyLCA5ODEzOCwgOTgxNDMsIDk4MTU1LCA2NDU0LCA5ODE2NSwgCisgICAgOTgxNzIsIDE4MzMsIDk4MTc4LCA5ODE4MywgOTgxOTAsIDk4MTk3LCA5ODIxMiwgOTgyMTksIDk4MjMwLCA5ODIzNSwgCisgICAgOTgyNDMsIDI2NDYsIDk4MjQ3LCA5ODI1OSwgOTgyNjQsIDk4MjY4LCA5ODI3NCwgMzA1OTYsIDIyNzEsIDk4Mjc4LCAKKyAgICA5ODI4OSwgOTgyOTMsIDk4Mjk3LCA5ODMwMywgOTgzMDcsIDk4MzE2LCA5ODMyMCwgOTgzMzEsIDk4MzM1LCAyMzE3LCAKKyAgICAzNDk2OSwgOTgzMzksIDk4MzQ5LCAzMTI4LCA5ODM1NywgOTgzNjYsIDk5OTksIDk4MzcxLCA5ODM3NiwgOTgzODAsIAorICAgIDk4Mzg5LCA5ODM5NiwgOTg0MDIsIDMwOTgsIDE2MjU5LCA5ODQwNiwgOTg0MTksIDk4NDM3LCA5ODQ0MiwgOTg0NTAsIAorICAgIDk4NDU4LCA5ODQ2OCwgMTA4NjYsIDE0NDI4LCA5ODQ4MCwgOTg0OTMsIDk4NTAwLCA5ODUxNCwgOTg1MjEsIDk4NTM3LCAKKyAgICA5ODU0NCwgOTg1NTAsIDIzMzI1LCAxMzY2NiwgOTg1NTcsIDk4NTY0LCA5ODU3NCwgOTg1ODMsIDQ3NDg5LCA5ODU5NSwgCisgICAgNDc2MjQsIDk4NjAzLCA5ODYwNiwgOTg2MTIsIDk4NjE4LCA5ODYyNCwgOTg2MzAsIDk4NjM2LCA5ODY0MywgOTg2NTAsIAorICAgIDk4NjU2LCA5ODY2MiwgOTg2NjgsIDk4Njc0LCA5ODY4MCwgOTg2ODYsIDk4NjkyLCA5ODY5OCwgOTg3MDQsIDk4NzEwLCAKKyAgICA5ODcxNiwgOTg3MjIsIDk4NzI4LCA5ODczNCwgOTg3NDAsIDk4NzQ2LCA5ODc1MiwgOTg3NTgsIDk4NzY0LCA5ODc3MCwgCisgICAgOTg3NzYsIDk4NzgyLCA5ODc4OCwgOTg3OTQsIDk4ODAwLCA5ODgwNiwgOTg4MTIsIDk4ODE4LCA5ODgyNCwgOTg4MzAsIAorICAgIDk4ODM2LCA5ODg0MiwgOTg4NDgsIDk4ODU0LCA5ODg2MCwgOTg4NjYsIDk4ODcyLCA5ODg3OCwgOTg4ODQsIDk4ODkwLCAKKyAgICA5ODg5NiwgOTg5MDIsIDk4OTA4LCA5ODkxNCwgOTg5MjAsIDk4OTI2LCA5ODkzMiwgOTg5MzgsIDk4OTQ0LCA5ODk1MCwgCisgICAgOTg5NTYsIDk4OTYzLCA5ODk2OSwgOTg5NzYsIDk4OTgzLCA5ODk4OSwgOTg5OTYsIDk5MDAzLCA5OTAwOSwgOTkwMTUsIAorICAgIDk5MDIxLCA5OTAyNywgOTkwMzMsIDk5MDM5LCA5OTA0NSwgOTkwNTEsIDk5MDU3LCA5OTA2MywgOTkwNjksIDk5MDc1LCAKKyAgICA5OTA4MSwgOTkwODcsIDk5MDkzLCAzMTEyLCA5OTcyLCA5OTA5OSwgOTkxMDUsIDk5MTEzLCA5OTExNywgOTYyNzQsIDMxMTYsIAorICAgIDk5MTIxLCAyMzA1MiwgMTMyOTksIDM5NzMsIDk5MTI1LCAzMTIyLCA5OTEyOSwgOTkxMzksIDk5MTQ1LCA5OTE1MSwgCisgICAgOTkxNTcsIDk5MTYzLCA5OTE2OSwgOTkxNzUsIDk5MTgxLCA5OTE4NywgOTkxOTMsIDk5MTk5LCA5OTIwNSwgOTkyMTEsIAorICAgIDk5MjE3LCA5OTIyMywgOTkyMjksIDk5MjM1LCA5OTI0MSwgOTkyNDcsIDk5MjUzLCA5OTI1OSwgOTkyNjUsIDk5MjcxLCAKKyAgICA5OTI3NywgOTkyODMsIDk5Mjg5LCA5OTI5NiwgOTkzMDMsIDk5MzA5LCA5OTMxNSwgOTkzMjEsIDk5MzI3LCA5OTMzMywgCisgICAgOTkzMzksIDEzMTksIDk5MzQ1LCA5OTM1MCwgOTkzNTUsIDk5MzYwLCA5OTM2NSwgOTkzNzAsIDk5Mzc1LCA5OTM4MCwgCisgICAgOTkzODUsIDk5Mzg5LCA5OTM5MywgOTkzOTcsIDk5NDAxLCA5OTQwNSwgOTk0MDksIDk5NDEzLCA5OTQxNywgOTk0MjEsIAorICAgIDk5NDI3LCA5OTQzMywgOTk0MzksIDk5NDQ1LCA5OTQ0OSwgOTk0NTMsIDk5NDU3LCA5OTQ2MSwgOTk0NjUsIDk5NDY5LCAKKyAgICA5OTQ3MywgOTk0NzcsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjYsIAorICAgIDk5NTcxLCA5OTU3NiwgOTk1ODEsIDk5NTg2LCA5OTU5MSwgOTk1OTYsIDk5NjAxLCA5OTYwNiwgOTk2MTEsIDk5NjE2LCAKKyAgICA5OTYyMSwgOTk2MjYsIDk5NjMxLCA5OTYzNiwgOTk2NDEsIDk5NjQ2LCA5OTY1MSwgOTk2NTYsIDk5NjYxLCA5OTY2NiwgCisgICAgOTk2NzEsIDk5Njc2LCA5OTY4MSwgOTk2ODYsIDk5NjkxLCA5OTY5NiwgOTk3MDEsIDk5NzA2LCA5OTcxMSwgOTk3MTYsIAorICAgIDk5NzIxLCA5OTcyNiwgOTk3MzEsIDk5NzM2LCA5OTc0MSwgOTk3NDYsIDk5NzUxLCA5OTc1NiwgOTk3NjEsIDk5NzY2LCAKKyAgICA5OTc3MSwgOTk3NzYsIDk5NzgxLCA5OTc4NiwgOTk3OTEsIDk5Nzk2LCA5OTgwMSwgOTk4MDYsIDk5ODExLCA5OTgxNiwgCisgICAgOTk4MjEsIDk5ODI2LCA5OTgzMSwgOTk4MzYsIDk5ODQxLCA5OTg0NiwgOTk4NTEsIDk5ODU2LCA5OTg2MSwgOTk4NjYsIAorICAgIDk5ODcxLCA5OTg3NiwgOTk4ODEsIDk5ODg2LCA5OTg5MSwgOTk4OTYsIDk5OTAxLCA5OTkwNiwgOTk5MTEsIDk5OTE2LCAKKyAgICA5OTkyMSwgOTk5MjYsIDk5OTMxLCA5OTkzNiwgOTk5NDEsIDk5OTQ2LCA5OTk1MSwgOTk5NTYsIDk5OTYxLCA5OTk2NiwgCisgICAgOTk5NzEsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkxLCA5OTk5NiwgMTAwMDAxLCAxMDAwMDYsIDEwMDAxMSwgMTAwMDE2LCAKKyAgICAxMDAwMjEsIDEwMDAyNiwgMTAwMDMxLCAxMDAwMzYsIDEwMDA0MSwgMTAwMDQ2LCAxMDAwNTEsIDEwMDA1NiwgMTAwMDYxLCAKKyAgICAxMDAwNjYsIDEwMDA3MSwgMTAwMDc2LCAxMDAwODEsIDEwMDA4NiwgMTAwMDkxLCAxMDAwOTYsIDEwMDEwMSwgMTAwMTA2LCAKKyAgICAxMDAxMTEsIDEwMDExNiwgMTAwMTIxLCAxMDAxMjYsIDEwMDEzMSwgMTAwMTM2LCAxMDAxNDEsIDEwMDE0NiwgMTAwMTUxLCAKKyAgICAxMDAxNTYsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDEwMDE3NiwgMTAwMTgxLCAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAKKyAgICAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAxMDAyMzEsIDEwMDIzNiwgMTAwMjQxLCAKKyAgICAxMDAyNDYsIDEwMDI1MSwgMTAwMjU2LCAxMDAyNjEsIDEwMDI2NiwgMTAwMjcxLCAxMDAyNzYsIDEwMDI4MSwgMTAwMjg2LCAKKyAgICAxMDAyOTEsIDEwMDI5NiwgMTAwMzAxLCAxMDAzMDYsIDEwMDMxMSwgMTAwMzE2LCAxMDAzMjEsIDEwMDMyNiwgMTAwMzMxLCAKKyAgICAxMDAzMzYsIDEwMDM0MSwgMTAwMzQ2LCAxMDAzNTEsIDEwMDM1NiwgMTAwMzYxLCAxMDAzNjYsIDEwMDM3MSwgMTAwMzc3LCAKKyAgICAxMDAzODIsIDEwMDM4NywgMTAwMzkyLCAxMDAzOTcsIDEwMDQwMiwgMTAwNDA3LCAxMDA0MTIsIDEwMDQxOCwgMTAwNDIzLCAKKyAgICAxMDA0MjgsIDEwMDQzMywgMTAwNDM4LCAxMDA0NDMsIDEwMDQ0OCwgMTAwNDUzLCAxMDA0NTgsIDEwMDQ2MywgMTAwNDY4LCAKKyAgICAxMDA0NzMsIDEwMDQ3OCwgMTAwNDgzLCAxMDA0ODgsIDEwMDQ5MywgMTAwNDk4LCAxMDA1MDMsIDEwMDUwOCwgMTAwNTEzLCAKKyAgICAxMDA1MTgsIDEwMDUyMywgMTAwNTI4LCAxMDA1MzMsIDEwMDUzOCwgMTAwNTQzLCAxMDA1NDgsIDEwMDU1MywgMTAwNTU4LCAKKyAgICAxMDA1NjMsIDEwMDU2OCwgMTAwNTczLCAxMDA1NzgsIDEwMDU4NywgMTAwNTkyLCAxMDA2MDEsIDEwMDYwNiwgMTAwNjE1LCAKKyAgICAxMDA2MjAsIDEwMDYyOSwgMTAwNjM0LCAxMDA2NDMsIDEwMDY0OCwgMTAwNjU3LCAxMDA2NjIsIDEwMDY3MSwgMTAwNjc2LCAKKyAgICAxMDA2ODUsIDEwMDY5MCwgMTAwNjk1LCAxMDA3MDQsIDEwMDcwOCwgMTAwNzE3LCAxMDA3MjIsIDEwMDczMSwgMTAwNzM2LCAKKyAgICAxMDA3NDUsIDEwMDc1MCwgMTAwNzU5LCAxMDA3NjQsIDEwMDc3MywgMTAwNzc4LCAxMDA3ODcsIDEwMDc5MiwgMTAwODAxLCAKKyAgICAxMDA4MDYsIDEwMDgxNSwgMTAwODIwLCAxMDA4MjksIDEwMDgzNCwgMTAwODQzLCAxMDA4NDgsIDEwMDg1MywgMTAwODU4LCAKKyAgICAxMDA4NjMsIDEwMDg2OCwgMTAwODczLCAxMDA4NzgsIDEwMDg4MiwgMTAwODg3LCAxMDA4OTIsIDEwMDg5NywgMTAwOTAyLCAKKyAgICAxMDA5MDcsIDEwMDkxMiwgMTAwOTE4LCAxMDA5MjMsIDEwMDkyOCwgMTAwOTMzLCAxMDA5MzksIDEwMDk0MywgMTAwOTQ4LCAKKyAgICAxMDA5NTQsIDEwMDk1OSwgMTAwOTY0LCAxMDA5NjksIDEwMDk3NCwgMTAwOTc5LCAxMDA5ODQsIDEwMDk4OSwgMTAwOTk0LCAKKyAgICAxMDA5OTksIDEwMTAwNCwgMTAxMDEwLCAxMDEwMTUsIDEwMTAyMCwgMTAxMDI1LCAxMDEwMzEsIDEwMTAzNiwgMTAxMDQxLCAKKyAgICAxMDEwNDYsIDEwMTA1MSwgMTAxMDU3LCAxMDEwNjIsIDEwMTA2NywgMTAxMDcyLCAxMDEwNzcsIDEwMTA4MiwgMTAxMDg4LCAKKyAgICAxMDEwOTMsIDEwMTA5OCwgMTAxMTAzLCAxMDExMDgsIDEwMTExMywgMTAxMTE4LCAxMDExMjMsIDEwMTEyOCwgMTAxMTMzLCAKKyAgICAxMDExMzgsIDEwMTE0MywgMTAxMTQ4LCAxMDExNTMsIDEwMTE1OCwgMTAxMTYzLCAxMDExNjgsIDEwMTE3MywgMTAxMTc4LCAKKyAgICAxMDExODMsIDEwMTE4OCwgMTAxMTkzLCAxMDExOTgsIDEwMTIwMywgMTAxMjA5LCAxMDEyMTUsIDEwMTIyMSwgMTAxMjI2LCAKKyAgICAxMDEyMzEsIDEwMTIzNiwgMTAxMjQxLCAxMDEyNDcsIDEwMTI1MywgMTAxMjU5LCAxMDEyNjQsIDEwMTI2OSwgMTAxMjc0LCAKKyAgICAxMDEyODAsIDEwMTI4NSwgMTAxMjkwLCAxMDEyOTUsIDEwMTMwMCwgMTAxMzA1LCAxMDEzMTAsIDEwMTMxNSwgMTAxMzIwLCAKKyAgICAxMDEzMjUsIDEwMTMzMCwgMTAxMzM1LCAxMDEzNDAsIDEwMTM0NSwgMTAxMzUwLCAxMDEzNTUsIDEwMTM2MCwgMTAxMzY2LCAKKyAgICAxMDEzNzIsIDEwMTM3OCwgMTAxMzgzLCAxMDEzODgsIDEwMTM5MywgMTAxMzk4LCAxMDE0MDQsIDEwMTQxMCwgMTAxNDE2LCAKKyAgICAxMDE0MjEsIDEwMTQyNiwgMTAxNDMxLCAxMDE0MzYsIDEwMTQ0MSwgMTAxNDQ2LCAxMDE0NTEsIDEwMTQ1NiwgMTAxNDYxLCAKKyAgICAxNzY4NiwgMTAxNDY2LCAxMDE0NzIsIDEwMTQ3NywgMTAxNDgyLCAxMDE0ODcsIDEwMTQ5MiwgMTAxNDk3LCAxMDE1MDMsIAorICAgIDEwMTUwOCwgMTAxNTEzLCAxMDE1MTgsIDEwMTUyMywgMTAxNTI4LCAxMDE1MzQsIDEwMTUzOSwgMTAxNTQ0LCAxMDE1NDksIAorICAgIDEwMTU1NCwgMTAxNTU5LCAxMDE1NjQsIDEwMTU2OSwgMTAxNTc0LCAxMDE1NzksIDEwMTU4NCwgMTAxNTg5LCAxMDE1OTQsIAorICAgIDEwMTU5OSwgMTAxNjA0LCAxMDE2MDksIDEwMTYxNCwgMTAxNjE5LCAxMDE2MjQsIDEwMTYyOSwgMTAxNjM0LCAxMDE2MzksIAorICAgIDEwMTY0NCwgMTAxNjUwLCAxMDE2NTUsIDEwMTY2MCwgMTAxNjY1LCAxMDE2NzAsIDEwMTY3NSwgMTAxNjgwLCAxMDE2ODUsIAorICAgIDEwMTY5MCwgMTAxNjk1LCAxMDE3MDAsIDEwMTcwNSwgMTAxNzEwLCAxMDE3MTUsIDEwMTcyMCwgMTAxNzI1LCAxMDE3MzAsIAorICAgIDEwMTczNSwgMTAxNzQwLCAxMDE3NDUsIDEwMTc1MCwgMTAxNzU1LCAxMDE3NjAsIDEwMTc2NSwgMTAxNzcwLCAxMDE3NzUsIAorICAgIDEwMTc4MCwgMTAxNzg1LCAxMDE3OTAsIDEwMTc5NSwgMTAxODAwLCAxMDE4MDUsIDEwMTgxMCwgMTAxODE1LCAxMDE4MjAsIAorICAgIDEwMTgyNSwgMTAxODMwLCAxMDE4MzUsIDEwMTg0MCwgMTAxODQ1LCAxMDE4NTAsIDEwMTg1NiwgMTAxODYxLCAxMDE4NjYsIAorICAgIDEwMTg3MSwgMTAxODc2LCAxMDE4ODEsIDEwMTg4NiwgMTAxODkxLCAxMDE4OTYsIDEwMTkwMSwgMTAxOTA2LCAxMDE5MTEsIAorICAgIDEwMTkxNywgMTAxOTIyLCAxMDE5MjgsIDEwMTkzMywgMTAxOTM4LCAxMDE5NDMsIDEwMTk0OCwgMTAxOTUzLCAxMDE5NTgsIAorICAgIDEwMTk2NCwgMTAxOTY5LCAxMDE5NzQsIDEwMTk4MCwgMTAxOTg1LCAxMDE5OTAsIDEwMTk5NSwgMTAyMDAwLCAxMDIwMDUsIAorICAgIDEwMjAxMSwgMTAyMDE3LCAxMDIwMjIsIDEwMjAyNywgMTMzMjEsIDEwMjAzMiwgMTAyMDM3LCAxMDIwNDIsIDEwMjA0NywgCisgICAgMTAyMDUyLCAxMDIwNTcsIDEwMjA2MiwgMTAyMDY3LCAxMDIwNzIsIDEwMjA3NywgMTAyMDgyLCAxMDIwODcsIDEwMjA5MiwgCisgICAgMTAyMDk3LCAxMDIxMDIsIDEwMjEwNywgMTAyMTEyLCAxMDIxMTcsIDEwMjEyMiwgMTAyMTI3LCAxMDIxMzIsIDEwMjEzNywgCisgICAgMTAyMTQyLCAxMDIxNDcsIDEwMjE1MiwgMTAyMTU3LCAxMDIxNjIsIDEwMjE2NywgMTAyMTcyLCAxMDIxNzcsIDEwMjE4MiwgCisgICAgMTAyMTg3LCAxMDIxOTIsIDEwMjE5NywgMTAyMjAyLCAxMDIyMDcsIDEwMjIxMiwgMTAyMjE3LCAxMDIyMjIsIDEwMjIyNywgCisgICAgMTAyMjMyLCAxMDIyMzcsIDEwMjI0MiwgMTAyMjQ3LCAxMDIyNTIsIDEwMjI1NywgMTAyMjYyLCAxMDIyNjcsIDEwMjI3MiwgCisgICAgMTAyMjc3LCAxMDIyODIsIDEwMjI4NywgMTAyMjkyLCAxMDIyOTcsIDEwMjMwMiwgMTAyMzA3LCAxMDIzMTIsIDEwMjMxNywgCisgICAgMTAyMzIyLCAxMDIzMjcsIDEwMjMzMiwgMTAyMzM3LCAxMDIzNDIsIDEwMjM0NywgMTAyMzUyLCAxMDIzNTgsIDEwMjM2MywgCisgICAgMTAyMzY4LCAxMDIzNzMsIDEwMjM3OCwgMTAyMzg0LCAxMDIzODksIDEwMjM5NCwgMTAyMzk5LCAxMDI0MDQsIDEwMjQwOSwgCisgICAgMTAyNDE0LCAxMDI0MjAsIDEwMjQyNSwgMTAyNDMwLCAxMDI0MzUsIDEwMjQ0MCwgMTAyNDQ1LCAxMDI0NTEsIDEwMjQ1NiwgCisgICAgMTAyNDYxLCAxMDI0NjYsIDEwMjQ3MSwgMTAyNDc2LCAxMDI0ODIsIDEwMjQ4NywgMTAyNDkyLCAxMDI0OTcsIDEwMjUwMiwgCisgICAgMTAyNTA3LCAxMDI1MTMsIDEwMjUxOSwgMTAyNTI0LCAxMDI1MjksIDEwMjUzNCwgMTAyNTQwLCAxMDI1NDYsIDEwMjU1MiwgCisgICAgMTAyNTU3LCAxMDI1NjIsIDEwMjU2OCwgMTAyNTc0LCAxMDI1NzksIDEwMjU4NSwgMTAyNTkxLCAxMDI1OTcsIDEwMjYwMiwgCisgICAgMTAyNjA3LCAxMDI2MTMsIDEwMjYxOCwgMTAyNjI0LCAxMDI2MjksIDEwMjYzNSwgMTAyNjQ0LCAxMDI2NDksIDEwMjY1NCwgCisgICAgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MSwgMTAyNjc2LCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkxLCAxMDI2OTYsIDEwMjcwMSwgCisgICAgMTAyNzA2LCAxMDI3MTEsIDEwMjcxNiwgMTAyNzIxLCAxMDI3MjYsIDEwMjczMSwgMTAyNzM2LCAxMDI3NDEsIDEwMjc0NiwgCisgICAgMTAyNzUxLCAxMDI3NTYsIDEwMjc2MSwgMTAyNzY2LCAxMDI3NzEsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODYsIDEwMjc5MSwgCisgICAgMTAyNzk2LCAxMDI4MDEsIDEwMjgwNiwgMTAyODExLCAxMDI4MTYsIDEwMjgyMSwgMTAyODI2LCAxMDI4MzIsIDEwMjgzOCwgCisgICAgMTAyODQ0LCAxMDI4NDksIDEwMjg1NCwgMTAyODU5LCAxMDI4NjQsIDEwMjg2OSwgMTAyODc0LCAxMDI4NzksIDEwMjg4NCwgCisgICAgMTAyODg5LCAxMDI4OTQsIDEwMjg5OSwgMTAyOTA0LCAxMDI5MDksIDEwMjkxNCwgMTAyOTE5LCAxMDI5MjQsIDEwMjkyOSwgCisgICAgMTAyOTM0LCAxMDI5MzksIDEwMjk0NCwgMTAyOTUwLCAxMDI5NTYsIDEwMjk2MSwgMTAyOTY3LCAxMDI5NzIsIDEwMjk3NywgCisgICAgMTAyOTgzLCAxMDI5ODgsIDEwMjk5NCwgMTAyOTk5LCAxMDMwMDUsIDEwMzAxMCwgMTAzMDE2LCAxMDMwMjEsIDEwMzAyNywgCisgICAgMTAzMDMyLCAxMDMwMzcsIDEwMzA0MiwgMTAzMDQ3LCAxMDMwNTIsIDEwMzA1NywgMTAzMDYyLCA5OTE0MCwgOTkxNDYsIAorICAgIDk5MTUyLCA5OTE1OCwgMTAzMDY4LCA5OTE2NCwgOTkxNzAsIDEwMzA3NCwgOTkxNzYsIDk5MTgyLCA5OTE4OCwgOTkxOTQsIAorICAgIDk5MjAwLCA5OTIwNiwgOTkyMTIsIDk5MjE4LCA5OTIyNCwgMTAzMDgwLCA5OTIzMCwgOTkyMzYsIDk5MjQyLCAxMDMwODYsIAorICAgIDk5MjQ4LCA5OTI1NCwgOTkyNjAsIDk5MjY2LCAxMDMwOTIsIDk5MjcyLCA5OTI3OCwgOTkyODQsIDk5MzA0LCAxMDMwOTgsIAorICAgIDEwMzEwNCwgOTkzMTAsIDEwMzExMCwgOTkzMTYsIDk5MzIyLCA5OTMyOCwgOTkzMzQsIDk5MzQwLCAzMTM5LCAzMTQ0LCAKKyAgICAxMDMxMTYsIDEwMzEyMSwgMTAzMTI0LCAxMDMxMzAsIDEwMzEzNiwgMTAzMTQzLCAxMDMxNDgsIDEwMzE1MywgMjMyMiwgCiB9OwogCiAvKiBjb2RlLT5uYW1lIHBocmFzZWJvb2sgKi8KICNkZWZpbmUgcGhyYXNlYm9va19zaGlmdCA4Ci0jZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMjAxCisjZGVmaW5lIHBocmFzZWJvb2tfc2hvcnQgMTk4CiBzdGF0aWMgdW5zaWduZWQgY2hhciBwaHJhc2Vib29rW10gPSB7Ci0gICAgMCwgMjExLCAyMjgsIDI0MCwgMjEyLCA4MiwgMjE3LCAzMSwgODIsIDQyLCA1NCwgMjQzLCA5NywgNTQsIDIxOCwgMjQ2LCAKLSAgICA1NCwgMjUwLCAyMzUsIDI1MCwgMTYwLCA0OSwgMjE5LCA3NiwgNTAsIDIxOSwgNzYsIDI1MCwgNTksIDkxLCA1NCwgMjQ1LCAKLSAgICAyMzMsIDIzNSwgMjE5LCAyMzksIDEwMiwgMjExLCA2MSwgMjEyLCAwLCAxNywgMjAyLCA4NCwgMTcsIDEwNSwgMTcsIDEwOCwgCi0gICAgMTcsIDE0NywgMTcsIDE0OSwgMTcsIDE3MCwgMTcsIDE5NSwgMTcsIDIxMywgMTExLCAxNywgMTk5LCAxNywgMjIyLCA2MywgCi0gICAgMjQ1LCAyNDIsIDIxMywgMTQzLCAyMjcsIDE3OSwgNTQsIDI0MSwgMzUsIDU0LCAyMzcsIDI0NywgNTQsIDIxNywgNDcsIDgyLCAKLSAgICAyNDUsIDIzMSwgMjUwLCA0OSwgOCwgNiwgMSwgNjMsIDgsIDYsIDEsIDI0OSwgMjU1LCA4LCA2LCAxLCAyNDcsIDEyNSwgOCwgCi0gICAgNiwgMSwgMjQ1LCA1MSwgOCwgNiwgMSwgNzQsIDgsIDYsIDEsIDI0MCwgMTc0LCA4LCA2LCAxLCAyMzksIDc1LCA4LCA2LCAxLCAKLSAgICAyMzcsIDE3MSwgOCwgNiwgMSwgNzUsIDgsIDYsIDEsIDIzMCwgMTg0LCA4LCA2LCAxLCAyMzAsIDU0LCA4LCA2LCAxLCAxNTksIAotICAgIDgsIDYsIDEsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2MywgOCwgNiwgMSwgNzgsIDgsIDYsIDEsIDIxOSwgMTg0LCA4LCAKLSAgICA2LCAxLCAyMTcsIDEzNCwgOCwgNiwgMSwgMTQ2LCA4LCA2LCAxLCAxOTQsIDgsIDYsIDEsIDIxMCwgNjksIDgsIDYsIDEsIAotICAgIDY4LCA4LCA2LCAxLCAyMDYsIDE2NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDgsIDYsIDEsIDIwMywgMTk2LCA4LCA2LCAxLCAKLSAgICAyMDMsIDEyNCwgOCwgNiwgMSwgMjAyLCAxNTksIDQ5LCA1MSwgMTU1LCAyMTYsIDc0LCAyMTIsIDAsIDUwLCA1MSwgMTU1LCAKLSAgICAyNDYsIDUzLCAyNTEsIDEzOCwgMTI0LCAyMjcsIDExNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCA4LCA1LCAxLCA2MywgOCwgNSwgCi0gICAgMSwgMjQ5LCAyNTUsIDgsIDUsIDEsIDI0NywgMTI1LCA4LCA1LCAxLCAyNDUsIDUxLCA4LCA1LCAxLCA3NCwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzQsIDgsIDUsIDEsIDIzOSwgNzUsIDgsIDUsIDEsIDIzNywgMTcxLCA4LCA1LCAxLCA3NSwgOCwgNSwgMSwgMjMwLCAKLSAgICAxODQsIDgsIDUsIDEsIDIzMCwgNTQsIDgsIDUsIDEsIDE1OSwgOCwgNSwgMSwgMjI2LCAxODUsIDgsIDUsIDEsIDIyMywgCi0gICAgMTYzLCA4LCA1LCAxLCA3OCwgOCwgNSwgMSwgMjE5LCAxODQsIDgsIDUsIDEsIDIxNywgMTM0LCA4LCA1LCAxLCAxNDYsIDgsIAotICAgIDUsIDEsIDE5NCwgOCwgNSwgMSwgMjEwLCA2OSwgOCwgNSwgMSwgNjgsIDgsIDUsIDEsIDIwNiwgMTY0LCA4LCA1LCAxLCAKLSAgICAyMDQsIDE0NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDgsIDUsIDEsIDIwMywgMTI0LCA4LCA1LCAxLCAyMDIsIDE1OSwgNDksIAotICAgIDI0NSwgOTMsIDE1NSwgODAsIDIyNywgMTE0LCA1MCwgMjQ1LCA5MywgMTU1LCAyMDgsIDIyNywgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCAyNDYsIDIyMCwgNTQsIDIxOCwgMjAsIDU0LCAyNDUsIDkyLCA1NCwgMjAzLCAKLSAgICA0MywgNTQsIDI0NywgMjAzLCAxNDIsIDIxNCwgMTY4LCA1NCwgMjQzLCAyMzEsIDI0NSwgMTY5LCA1NCwgMjQwLCA0MSwgCi0gICAgMjE5LCAyNDAsIDIzMSwgMzEsIDIyNywgMjE3LCA1MiwgMjUwLCAyMTgsIDIxNywgMzEsIDgyLCAyMjEsIDE2NiwgNTQsIAotICAgIDIxMiwgNywgMjM1LCAyMjAsIDIxNiwgMTI5LCA1NCwgMjI1LCAxNzAsIDI0NCwgNTUsIDU0LCAyMTgsIDc1LCA1NCwgMjEwLCAKLSAgICAxOTksIDEwOCwgMjEwLCAxOTksIDE0NywgMjUxLCAxMjYsIDI1MSwgMTM4LCAyMjQsIDE1MywgNTQsIDIxOCwgMTI2LCA1NCwgCi0gICAgMTAxLCAyNDMsIDg1LCAyNDYsIDIzMSwgMjEwLCAxOTksIDEwNSwgMjI1LCA4MCwgMjE5LCAyNDAsIDIzMSwgMzEsIDIxNiwgCi0gICAgMTEsIDUyLCAyNTAsIDIxOCwgMjE3LCAzMSwgODIsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMTcsIDU1LCAyMDQsIAotICAgIDE2MSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAyMzAsIDIzOSwgCi0gICAgMjE3LCA0NywgODIsIDgsIDYsIDEsIDM0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDE2NSwgOCwgNiwgMSwgMzQsIAotICAgIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDM0LCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAKLSAgICAzNCwgMywgMjE1LCAyNTMsIDU1LCA4LCA2LCAxLCAyNTEsIDEwOSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NiwgMjMxLCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIAotICAgIDUyLCA4LCA2LCAxLCAxODgsIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIAotICAgIDIzNSwgMjA2LCAzLCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgCi0gICAgMjQzLCAyMzEsIDgsIDYsIDEsIDI0MCwgMjQzLCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTIsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDIyMywgMjI0LCA1NCwgOCwgNiwgMSwgCi0gICAgMTU4LCAzLCA5NSwgOCwgNiwgMSwgMTA2LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDEwNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDE2NSwgOCwgCi0gICAgNiwgMSwgMjA5LCA0MCwgOCwgNSwgMSwgMjEzLCA1NywgMTk0LCA4LCA1LCAxLCAzNCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAzNCwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDM0LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMzQsIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMjUxLCAxMDksIDgsIDUsIAotICAgIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAKLSAgICAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCA4LCA1LCAxLCAyNDAsIDI0MywgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDIzNywgMjUzLCA4LCA1LCAxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAxNTgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMxLCAKLSAgICAyNDMsIDEzNywgNTQsIDgsIDUsIDEsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDEwNiwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDgsIDUsIAotICAgIDEsIDIwMywgMTI1LCAzLCAxNjUsIDgsIDUsIDEsIDIwOSwgNDAsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyNDMsIDIzMSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAzNCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIAotICAgIDIxNCwgOCwgNSwgMSwgMzQsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MiwgOCwgNSwgMSwgMzQsIDMsIAotICAgIDIyMCwgNjIsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAxNjUsIDgsIDYsIDEsIAotICAgIDI0NywgMTI2LCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjQ3LCAxMjYsIAotICAgIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjQ3LCAxMjYsIDMsIDI0NywgMjksIAotICAgIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgOTUsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE4OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU1LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxODgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMTg4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA1LCAKLSAgICAxLCAyMzksIDc2LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAyNDcsIDIxNCwgOCwgNSwgMSwgMjM5LCA3NiwgCi0gICAgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgNzAsIDU1LCA4LCAKLSAgICA2LCAxLCAyMzksIDc2LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIzNywgCi0gICAgMTcyLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCA1MiwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzcsIDE3MiwgMywgOTUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAKLSAgICAyMjUsIDE3MCwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAyMTQsIAotICAgIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MiwgOCwgNiwgMSwgCi0gICAgMjM1LCAyMDYsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjQzLCA4NCwgNzUsIDgsIDYsIDMyLCAyMzEsIDgxLCA4LCA1LCAzMiwgCi0gICAgMjMxLCA4MSwgOCwgNiwgMSwgMjMwLCAxODUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIzMCwgMTg1LCAzLCAyNDYsIDUyLCA4LCAKLSAgICA2LCAxLCAyMzAsIDU1LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgCi0gICAgMjMxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTY1LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIAotICAgIDI0NywgMjksIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIAotICAgIDg1LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyNDMsIDg1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIyOCwgMTMxLCAzLCA5NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjIzLCAxNjQsIAotICAgIDIxNywgMjUxLCAyNDcsIDEzNywgMjUwLCAxNjAsIDgsIDYsIDEsIDI0MSwgNzgsIDgsIDUsIDEsIDI0MSwgNzgsIDgsIDYsIAotICAgIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAKLSAgICAyMTQsIDgsIDUsIDEsIDE1OCwgMywgMjQ3LCAyMTQsIDgsIDYsIDEsIDE1OCwgMywgNTIsIDE2NSwgOCwgNSwgMSwgMTU4LCAKLSAgICAzLCA1MiwgMTY1LCA4LCA2LCAzMiwgMjIwLCA3MywgOCwgNSwgMzIsIDIyMCwgNzMsIDgsIDYsIDEsIDIxNywgMSwgMywgCi0gICAgMTY1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDE2NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMjE3LCAKLSAgICAxLCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDI0NywgMjksIAotICAgIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDE2NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDYsIDUyLCA4LCA1LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDUyLCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNDYsIDIzMSwgOCwgCi0gICAgNSwgMSwgMjE1LCA5NCwgMywgMjQ2LCAyMzEsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIxNSwgCi0gICAgOTQsIDMsIDI0NywgMjksIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDI0NiwgMjMxLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgCi0gICAgMjEwLCA3MCwgMywgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAxMDYsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDIyNSwgCi0gICAgMTcwLCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA1LCAxLCAxMDYsIDMsIDI0NywgMjE0LCA4LCA2LCAxLCAxMDYsIAotICAgIDMsIDIxNSwgMjUzLCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMTUsIDI1MywgNTUsIDgsIDYsIDEsIDEwNiwgMywgNTIsIDE2NSwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjIsIDgsIDUsIDEsIDEwNiwgMywgMjIwLCAKLSAgICA2MiwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDI0NiwgNTIsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDYsIDUyLCA4LCA2LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMjQ2LCA1MiwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDI0NiwgNTIsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyNDMsIDIzMSwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDE2NSwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAyLCAKLSAgICAxNjAsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAxNjMsIDE5NCwgOCwgNSwgCi0gICAgMSwgNjYsIDMsIDk1LCA4LCA2LCAxLCA2NiwgMywgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjA4LCAxNDIsIDgsIDUsIDEsIDY2LCAKLSAgICAzLCAyMDgsIDE0MiwgOCwgNiwgMSwgMTQzLCAxOTUsIDgsIDUsIDEsIDE0MywgMTk1LCA4LCA2LCAxLCAxNzEsIDc4LCA4LCAKLSAgICA2LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMTEzLCA4LCA2LCAxLCAyNTEsIDg0LCAyNDUsIAotICAgIDUxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAxMTMsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDIwOCwgMTQyLCA4LCA1LCAxLCAKLSAgICAyNDUsIDUyLCAzLCAyMDgsIDE0MiwgOCwgNSwgMSwgMjA3LCAxNzQsIDI0NCwgMzcsIDgsIDYsIDEsIDIxNiwgNzMsIDc0LCAKLSAgICA4LCA2LCAxLCAyMTQsIDE5MiwgOCwgNiwgMSwgMTcxLCA3NCwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDExMywgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzUsIDMsIDExMywgOCwgNiwgMSwgMjM5LCA3NiwgMywgMTEzLCA4LCA2LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgCi0gICAgMjM1LCAyNTUsIDgsIDYsIDEsIDIzMCwgMjMwLCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIAotICAgIDMsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTEzLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA1LCAxLCAKLSAgICAyMjgsIDI2LCAzLCA5NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgNDksIAotICAgIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDE2MywgNTAsIDIyNywgMjEwLCA4LCA2LCAxLCAxNTgsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDE1OCwgMywgMjM2LCA1MywgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDUzLCA4LCA2LCAxLCAyMjAsIAotICAgIDU3LCA4LCA1LCAxLCAyMjAsIDU3LCA4LCA2LCAxLCAyMTksIDE4NSwgMywgMTEzLCA4LCA1LCAxLCAyMTksIDE4NSwgMywgCi0gICAgMTEzLCA4LCAxLCAyMDIsIDIxNiwgOCwgNiwgMSwgMTQzLCAxMDgsIDgsIDUsIDEsIDE0MywgMTA4LCA4LCA2LCAxLCAyNDEsIAotICAgIDcsIDgsIDEsIDIxNiwgNzMsIDI0MSwgOCwgMjI3LCAxNCwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE5LCAxNDIsIDExMywgOCwgCi0gICAgNiwgMSwgMjEwLCA3MCwgMywgMTEzLCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAxMTMsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNiwgMSwgMTA2LCAzLCAyMzYsIDUzLCA4LCA1LCAxLCAxMDYsIDMsIDIzNiwgNTMsIDgsIDYsIAotICAgIDEsIDIwNiwgMjE2LCA4LCA2LCAxLCAyMDYsIDE2NSwgMywgMTEzLCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA1LCAKLSAgICAxLCAyMDMsIDEyNSwgMywgMTEzLCA4LCA2LCAxLCAyMDIsIDE2MCwgMywgOTUsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCA5NSwgCi0gICAgOCwgNiwgMSwgMjQwLCAxNzcsIDgsIDYsIDEsIDI0MCwgMTc4LCAyMTYsIDcyLCA4LCA1LCAxLCAyNDAsIDE3OCwgMjE2LCAKLSAgICA3MiwgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIwOSwgMjQ4LCA4LCAxLCAxMjAsIDMsIDk1LCA4LCA2LCAxLCAxNDMsIDE3MCwgCi0gICAgOCwgNSwgMSwgMTQzLCAxNzAsIDgsIDEsIDIzMCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgMSwgMjAzLCAKLSAgICAxOTksIDgsIDEsIDI0NCwgMzAsIDI0NiwgMjcsIDgsIDEsIDIyNywgMjU0LCAyNDYsIDI3LCA4LCAxLCAyNTAsIDI0OCwgCi0gICAgMjQ2LCAyNywgOCwgMSwgMjE2LCA3OSwgMjQ2LCAyNywgOCwgNiwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAKLSAgICAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjQyLCAxLCAzLCAyNDcsIDI5LCA4LCAKLSAgICA2LCAxLCAyMjcsIDgxLCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNSwgMSwgMjMwLCAxODQsIDgsIDUsIDEsIDIyNywgODEsIDgsIAotICAgIDYsIDEsIDIyMiwgNDksIDgsIDYsIDEsIDIyMywgMTY0LCAzLCA1LCAxLCAyMzAsIDE4NCwgOCwgNSwgMSwgMjIyLCA0OSwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDI0NywgMjksIDgsIDUsIDEsIDM0LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0NywgMjksIDgsIDYsIDEsIDE1OCwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAyNDcsIDI5LCA4LCA2LCAxLCAxMDYsIDMsIDI0NywgMjksIDgsIDUsIDEsIDEwNiwgMywgMjQ3LCAyOSwgOCwgCi0gICAgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAKLSAgICAxNzAsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAxNjUsIDgsIDUsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjQ3LCAyOSwgOCwgNiwgMSwgMTA2LCAzLCAyNDMsIDIzMiwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDI0MywgMjMyLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIwNywgMTc0LCA3NCwgOCwgNiwgMSwgMzQsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAzNCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDM0LCAzLCA3MCwgODcsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzOSwgNzYsIDMsIAotICAgIDk1LCA4LCA1LCAxLCAyMzksIDc2LCAzLCA5NSwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjMwLCA1NSwgMywgMjQ3LCAyOSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjQ3LCAKLSAgICAyOSwgOCwgNiwgMSwgMTU4LCAzLCAyMjAsIDYyLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjIsIDgsIDYsIDEsIDE1OCwgMywgCi0gICAgMjIwLCA2MywgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDIyMCwgNjMsIDI1LCAyMjUsIDE3MCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzgsIDMsIDI0NywgMjksIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDcsIDI5LCA4LCA1LCAxLCAyMzAsIDE4NSwgCi0gICAgMywgMjQ3LCAyOSwgOCwgNiwgMSwgMjQyLCAwLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCA1LCAxLCAyMDIsIDE1OSwgOCwgNSwgCi0gICAgMSwgMjQyLCAwLCA4LCA2LCAxLCAyMzksIDc2LCAzLCAxNjUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjM1LCAyNTIsIDgsIDYsIDEsIDIwMywgMTk5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMjM3LCAyNTMsIDgsIDUsIDEsIAotICAgIDIyMywgMTY0LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMzQsIDMsIDIxNSwgMjUzLCA4NywgMjUsIDE2NSwgOCwgNiwgMSwgMjUxLCAxMTAsIDMsIDE2NSwgOCwgNSwgMSwgMjUxLCAKLSAgICAxMTAsIDMsIDE2NSwgOCwgNiwgMSwgMTU4LCAzLCAyMTEsIDMyLCAyNSwgMTY1LCA4LCA1LCAxLCAxNTgsIDMsIDIxMSwgMzIsIAotICAgIDI1LCAxNjUsIDgsIDYsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCA1MiwgMjM3LCAyNTMsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDM0LCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIAotICAgIDYsIDEsIDE4OCwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxODgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTg4LCAKLSAgICAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDE4OCwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMzUsIAotICAgIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCAKLSAgICA2LCAxLCAxNTgsIDMsIDUyLCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA1MiwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgCi0gICAgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA1LCAxLCAxNTgsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNiwgMSwgMjE3LCAKLSAgICAxLCAzLCA1MiwgMjM3LCAyNTMsIDgsIDUsIDEsIDIxNywgMSwgMywgNTIsIDIzNywgMjUzLCA4LCA2LCAxLCAyMTcsIDEsIDMsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNCwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyMzAsIDIzOSwgMjQ3LCAyMTQsIDgsIDYsIDEsIDEwNiwgCi0gICAgMywgNTIsIDIzNywgMjUzLCA4LCA1LCAxLCAxMDYsIDMsIDUyLCAyMzcsIDI1MywgOCwgNiwgMSwgMTA2LCAzLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDgsIDUsIDEsIDEwNiwgMywgMjMwLCAyMzksIDI0NywgMjE0LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAKLSAgICAyNDUsIDIzNCwgNTYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDI0NSwgMjM0LCA1NiwgOCwgNiwgMSwgMjEwLCA3MCwgMywgCi0gICAgMjQ1LCAyMzQsIDU2LCA4LCA1LCAxLCAyMTAsIDcwLCAzLCAyNDUsIDIzNCwgNTYsIDgsIDYsIDEsIDIwMiwgMjM0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDIzNCwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjksIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDcsIAotICAgIDI5LCA4LCA2LCAxLCAyMjMsIDE2NCwgMywgMTYzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIDI0NSwgCi0gICAgOTUsIDgsIDYsIDEsIDIxOSwgMjE2LCA4LCA1LCAxLCAyMTksIDIxNiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjAyLCAxNjAsIDMsIDExMywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NSwgCi0gICAgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMSwgOCwgNiwgMSwgMTU4LCAzLCAKLSAgICAyNDMsIDIzMiwgMjUsIDIyNSwgMTcwLCA4LCA1LCAxLCAxNTgsIDMsIDI0MywgMjMyLCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDIyNSwgMTcwLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMTU4LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgNzAsIAotICAgIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDg3LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIwMywgCi0gICAgMTI1LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIDIyNSwgMTcwLCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgCi0gICAgMjQ1LCA5NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDI0NSwgOTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDI0NSwgOTUsIDgsIAotICAgIDUsIDEsIDI0MywgODQsIDIzMCwgMTg0LCA4LCA1LCAxLCAyNDQsIDEzMCwgMjQzLCAxOTEsIDgsIDUsIDEsIDIxNywgNjYsIAotICAgIDI0MywgMTkxLCA4LCA2LCAxLCAzNCwgMywgOTUsIDgsIDYsIDEsIDI0NywgMTI2LCAzLCA5NSwgOCwgNSwgMSwgMjQ3LCAKLSAgICAxMjYsIDMsIDk1LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTQyLCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDMsIDIyOCwgOTUsIAotICAgIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAKLSAgICAyMDksIDI0OCwgOCwgNiwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgNiwgMSwgCi0gICAgNjYsIDMsIDk1LCA4LCA2LCAxLCAxMDYsIDE0MiwgOCwgNiwgMSwgMjA3LCAxNzQsIDIwNiwgMTY0LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDk1LCA4LCA1LCAxLCAxODgsIDMsIDk1LCA4LCA2LCAxLCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCA5NSwgOCwgNiwgMSwgNSwgMjE3LCAxMzUsIDMsIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNSwgMSwgMjE3LCAxMzUsIDMsIAotICAgIDIzNiwgMTE2LCAyMDksIDI0OCwgOCwgNiwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNSwgMSwgMjE3LCAxLCAzLCA5NSwgOCwgNiwgCi0gICAgMSwgMjAzLCAxMjUsIDMsIDk1LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCA2MywgOCwgCi0gICAgNSwgMSwgMjUxLCAyLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjUxLCAyLCA4LCA1LCAxLCA2NiwgMywgMTEzLCA4LCA1LCAxLCAKLSAgICAxNzEsIDc4LCA4LCA1LCAxLCAyNDcsIDEyNiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjA5LCAyNDgsIDgsIAotICAgIDUsIDEsIDI0NSwgNTIsIDMsIDExMywgOCwgNSwgMSwgMjE2LCA3MywgNzQsIDgsIDUsIDEsIDIxNCwgMTkyLCA4LCA1LCAxLCAKLSAgICAyMTQsIDE5MywgMywgMTEzLCA4LCA1LCAxLCAxNzEsIDc0LCA4LCA1LCAxLCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyMTYsIDczLCAxNzEsIDE4OCwgMywgMTEzLCA4LCA1LCAxLCAyNDYsIDE2LCAyMTYsIDczLCAxNzEsIDc0LCA4LCA1LCAxLCAKLSAgICAyNDMsIDg0LCAyMzAsIDE4NSwgMywgOTUsIDgsIDUsIDEsIDIzOSwgNzYsIDMsIDExMywgOCwgNSwgMSwgMTMyLCAyMzksIAotICAgIDc1LCA4LCAxLCA1LCA2LCAyMzksIDc1LCA4LCA1LCAxLCAyMzgsIDIzNSwgOCwgNSwgMSwgMjE2LCAxODIsIDIzNiwgNTMsIAotICAgIDgsIDUsIDEsIDIwNywgMTc0LCAyMzcsIDE3MSwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDExMywgOCwgNSwgMSwgMjM3LCAzMiwgCi0gICAgMywgMTEzLCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIDUsIDEsIDIzMCwgMjMwLCA4LCAxLCA1LCA2LCA3NSwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDgsIDEyNCwgOCwgNSwgCi0gICAgMSwgMjI4LCAxMzEsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjI3LCAxNjQsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjYsIAotICAgIDE4NSwgOCwgNSwgMSwgMjA3LCAxNzQsIDIyNiwgMTg2LCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgNDksIDExMywgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIDExMywgCi0gICAgOCwgMSwgNSwgNiwgMjIzLCAxNjMsIDgsIDUsIDEsIDI0OCwgMjI1LCA3OCwgOCwgMSwgNSwgNiwgMjIwLCA3MywgOCwgNSwgCi0gICAgMSwgMjQ2LCAxNiwgMjIwLCAzNiwgOCwgNSwgMSwgMjE4LCAxOTIsIDgsIDUsIDEsIDIwNywgMTc0LCAxNDYsIDgsIDUsIDEsIAotICAgIDIwNywgMTc0LCAyMTcsIDEsIDMsIDE2MywgMjI3LCAyMTAsIDgsIDUsIDEsIDIwNywgMTc0LCAyMTcsIDEsIDMsIDExMywgOCwgCi0gICAgNSwgMSwgMjE3LCAxLCAzLCAxNjMsIDIyNywgMjEwLCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIwOSwgMjQ4LCA4LCA1LCAxLCAKLSAgICAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCA1LCAxLCAyMTYsIDczLCAyMTcsIDEsIDMsIDIzOSwgMjQwLCA4LCAxLCA1LCA2LCAKLSAgICAxNDYsIDgsIDEsIDUsIDYsIDIzMCwgMjM5LCAxNDYsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDExMywgOCwgNSwgMSwgMjQxLCAKLSAgICA3LCA4LCA1LCAxLCAyNDMsIDg0LCAyMzAsIDE4NSwgMywgMjExLCAzMiwgMjUsIDExMywgOCwgNSwgMSwgMjExLCAxNzQsIAotICAgIDIxNiwgNzMsIDI0MSwgNywgOCwgNSwgMSwgMjQxLCA4LCAzLCAyNDUsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjEwLCA2OSwgCi0gICAgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDE0MiwgOCwgNSwgMSwgMjA2LCAyMTYsIAotICAgIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCAxMTMsIDgsIDUsIDEsIDIwNywgMTc0LCAyMDYsIDE2NCwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNCwgMTQ0LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjAzLCAxMjQsIDgsIDEsIDUsIDYsIDIwMywgMTI0LCA4LCA1LCAKLSAgICAxLCAyMDIsIDE2MCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgCi0gICAgMjQwLCAxNzcsIDgsIDUsIDEsIDI0MCwgMTc4LCAzLCAyNDUsIDk1LCA4LCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA4LCAxLCAKLSAgICAyMTgsIDE5OSwgMjA1LCAxODYsIDIzOSwgMTI2LCA4LCAxLCAyMzAsIDIzOSwgMjM4LCA0NSwgMjExLCA2MSwgOCwgMSwgCi0gICAgMjExLCA0MCwgMjQ3LCAxMjUsIDgsIDEsIDI0OCwgNzAsIDI0NiwgMjcsIDgsIDEsIDUsIDYsIDI0OSwgMjU1LCA4LCA1LCAxLCAKLSAgICAyNDYsIDE2LCAxNzEsIDc0LCA4LCAxLCA1LCA2LCAyMzksIDc2LCAzLCAxMTMsIDgsIDEsIDUsIDYsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMzAsIDE4NSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIwNywgMTc0LCAyMzAsIDU0LCA4LCAxLCA1LCA2LCAxNTksIAotICAgIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAxMTMsIDgsIDEsIDIzOCwgNDUsIDIxMSwgNjIsIDMsIDk1LCA4LCAxLCAyMTYsIDczLCAKLSAgICAyMzgsIDQ1LCAyMTEsIDYyLCAzLCA5NSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MSwgOCwgNSwgMSwgMjQ0LCAzLCAyNDMsIAotICAgIDE5MSwgOCwgNSwgMSwgMjQyLCAxLCAyNDMsIDE5MiwgMywgMjQ1LCA5NSwgOCwgNSwgMSwgMjA4LCAyMiwgMjQzLCAxOTEsIAotICAgIDgsIDUsIDEsIDIwOSwgMTM3LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjA5LCAxOTQsIDI0MywgMTkyLCAzLCAyNDUsIDk1LCA4LCAKLSAgICA1LCAxLCAyNDAsIDM5LCAyNDMsIDE5MSwgOCwgNSwgMSwgMjI2LCAyNDEsIDI0MywgMTkxLCA4LCA1LCAxLCAyMjYsIDE4NywgCi0gICAgMjQzLCAxOTEsIDgsIDEsIDI0OCwgNzAsIDIxOCwgMjQ1LCA4LCAxLCAyNDgsIDc4LCAyMTgsIDI0NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MCwgOCwgNSwgMSwgMjA3LCAxNzQsIDIzNywgMTcyLCAzLCAyMzksIDI0MSwgMjUsIAotICAgIDIwOSwgMjQ4LCA2NSwgMSwgNSwgMjM3LCAxNzEsIDY1LCAxLCA1LCAyMzcsIDE3MiwgMywgMTEzLCA2NSwgMSwgNSwgMjMwLCAKLSAgICAxODQsIDY1LCAxLCA1LCAxNDYsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMTQ2LCA2NSwgMSwgNSwgMjA3LCAxNzQsIDIxNywgMSwgCi0gICAgMywgMTEzLCA2NSwgMSwgNSwgNiwgMjMwLCAyMzksIDE0NiwgNjUsIDEsIDUsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgMjAzLCAKLSAgICAxMjQsIDY1LCAxLCAyMTcsIDIzNiwgNjUsIDEsIDUyLCAyMTcsIDIzNiwgNjUsIDEsIDIwNywgMTc0LCAyNDUsIDIzMywgNjUsIAotICAgIDEsIDI1MCwgMTYwLCA2NSwgMSwgMjE2LCA3MywgMjQ1LCAyMzMsIDY1LCAxLCA1MCwgMTYyLCAyMTUsIDI1MiwgNjUsIDEsIAotICAgIDQ5LCAxNjIsIDIxNSwgMjUyLCA2NSwgMSwgMjM4LCA0NSwgMjExLCA2MSwgNjUsIDEsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgCi0gICAgNjEsIDY1LCAxLCA0OSwgMjUwLCA5NCwgNjUsIDEsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTEyLCAyNTAsIDk0LCA2NSwgMSwgCi0gICAgMTIxLCAyNTAsIDk0LCA2NSwgMSwgMjQ2LCA1MywgMjUxLCAxMzgsIDI0NywgMjksIDY1LCAxLCA4MCwgMjI3LCAxMTQsIDY1LCAKLSAgICAxLCAyMjUsIDE3MCwgNjUsIDEsIDI1MSwgMTI2LCAyNTEsIDEzOCwgNjUsIDEsIDIzNywgMjU0LCAyNTEsIDEzOCwgNjUsIDEsIAotICAgIDEyNCwgODAsIDIyNywgMTE0LCA2NSwgMSwgMTI0LCAyMjUsIDE3MCwgNjUsIDEsIDEyNCwgMjM3LCAyNTQsIDI1MSwgMTM4LCAKLSAgICA2NSwgMSwgMTI0LCAyNTEsIDEyNiwgMjUxLCAxMzgsIDY1LCAxLCAyMDgsIDgyLCAyNDUsIDI0MiwgNjUsIDEsIDE2MiwgCi0gICAgMjA4LCA4MiwgMjQ1LCAyNDIsIDY1LCAxLCAyNDYsIDIxNiwgNTAsIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAyNDYsIDIxNiwgCi0gICAgNDksIDE2MiwgMjE1LCAyNTIsIDY1LCAxLCAxMTIsIDIxMCwgMywgNjUsIDEsIDEyMSwgMjEwLCAzLCA2NSwgMSwgOTEsIDU0LCAKLSAgICA2NSwgMSwgMjI0LCAxMDMsIDU0LCAyNDcsIDIxNCwgNzAsIDU1LCAyMTUsIDI1MywgNTUsIDIyMCwgNjIsIDUsIDIwOCwgCi0gICAgMjI3LCA1MiwgMjUxLCAxMjYsIDI1MSwgMTM4LCA2NSwgMSwgMjE2LCA1OCwgMTEzLCA2NSwgMSwgMjQ1LCAxMzEsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgNSwgMjM4LCAyMzUsIDY1LCAxLCA1LCAxNTksIDY1LCAxLCA1LCAxOTQsIDY1LCAxLCA1LCAyMDMsIAotICAgIDE5NiwgNjUsIDEsIDUsIDIxNiwgNzMsIDIzOCwgNDUsIDIxMSwgNjEsIDY1LCAxLCAyNDAsIDE5OCwgMTQzLCAxNDIsIDY1LCAKLSAgICAxLCAxMzgsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAxNDMsIDE0MiwgNjUsIDEsIAotICAgIDI0MCwgMTk3LCAxNDMsIDE0MiwgNjUsIDEsIDIwMywgMSwgMjQ0LCAyNywgMTQzLCA4MiwgNjUsIDEsIDIwMywgNzcsIDI0NCwgCi0gICAgMjcsIDE0MywgODIsIDY1LCAxLCAyMDUsIDE4NCwgNjUsIDEsIDIwNiwgMjUxLCA2NSwgMSwgNTIsIDI1MCwgMTYwLCA2NSwgCi0gICAgMSwgMTI0LCAxMjEsIDI1MCwgOTQsIDY1LCAxLCAxMjQsIDExMiwgMjUwLCA5NCwgNjUsIDEsIDEyNCwgNDksIDI1MCwgOTQsIAotICAgIDY1LCAxLCAxMjQsIDUwLCAyNTAsIDk0LCA2NSwgMSwgMTI0LCAyMTUsIDI1MiwgNjUsIDEsIDEwMSwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA2NSwgMSwgMTAxLCA1MiwgMjUxLCAxMjYsIDI1MSwgCi0gICAgMTM4LCA2NSwgMSwgMTI0LCAyMDgsIDIyNywgNjUsIDEsIDIxNiwgMTg4LCAyNDUsIDI0MiwgNjUsIDEsIDI0OCwgMTQyLCAKLSAgICAxMzgsIDIwOCwgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTM4LCAyMDgsIDE2MSwgNjUsIDEsIDI0OCwgMTQyLCAxMjQsIDIwOCwgCi0gICAgMTYxLCA2NSwgMSwgMjQxLCA4NCwgMTI0LCAyMDgsIDE2MSwgNjUsIDEsIDIxMywgMzQsIDY1LCAxLCAxNzEsIDIxMywgMzQsIAotICAgIDY1LCAxLCAxMjQsIDQ5LCA0NywgMzksIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI1MSwgMTI2LCAyNTEsIDEzOCwgMzksIAotICAgIDI0NiwgNTMsIDI1MSwgMTM4LCAzOSwgMjA4LCAyMjcsIDM5LCAyMjUsIDE3MCwgMzksIDIxOSwgMTk4LCAzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCA3MCwgNTUsIDM5LCAyNDMsIDIzMSwgMzksIDIzNiwgMTE2LCA1NSwgMzksIDIxNSwgMjUzLCA1NSwgMzksIAotICAgIDUyLCAyNTEsIDEyNiwgMjUxLCAxMzgsIDM5LCAyNDcsIDI5LCAzOSwgODAsIDIyNywgMTE1LCA1NSwgMzksIDUyLCA4MCwgCi0gICAgMjI3LCAxMTUsIDU1LCAzOSwgNTIsIDIzNywgMjU0LCAyNTEsIDEzOCwgMzksIDI0NywgNTIsIDM5LCAyMzAsIDIzOSwgMjQ3LCAKLSAgICAyMTQsIDM5LCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDU1LCAzOSwgMjQ1LCAyMzQsIDU1LCAzOSwgMjE2LCA3MywgMjQ1LCAyMzQsIAotICAgIDU1LCAzOSwgMjQ1LCAyMzQsIDg3LCAyMTYsIDE2LCAzOSwgMjM3LCAyNTQsIDI1MSwgMTM5LCA1NiwgMzksIDI1MSwgMTI2LCAKLSAgICAyNTEsIDEzOSwgNTYsIDM5LCA0OSwgMjEwLCA0LCA1NiwgMzksIDUwLCAyMTAsIDQsIDU2LCAzOSwgNDksIDI1MCwgMjE4LCAKLSAgICA1NSwgMzksIDIzNiwgNTMsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTYsIDM5LCAxMTIsIDIxMCwgNCwgNTYsIDM5LCAxMjEsIAotICAgIDIxMCwgNCwgNTYsIDM5LCA5MSwgMiwgNTYsIDM5LCAyMjQsIDEwMywgMiwgNTYsIDM5LCAyMTksIDE0MCwgMjM2LCAxMTYsIAotICAgIDU2LCAzOSwgMjE2LCA3OSwgMjM2LCAxMTYsIDU2LCAzOSwgNzAsIDU2LCAzOSwgMjQzLCAyMzIsIDU2LCAzOSwgMjE1LCAKLSAgICAyNTMsIDU2LCAzOSwgMjQ1LCAyMzQsIDU2LCAzOSwgMjQ2LCAyMzEsIDM5LCAyMjAsIDYyLCAzOSwgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgMzksIDI0NywgMjA4LCA1NiwgMzksIDIzMCwgMjM5LCA1MiwgMjUwLCAxMjcsIDU2LCAzOSwgMjQ3LCAzMCwgNTYsIAotICAgIDM5LCAyNDYsIDUzLCAyNTEsIDEzOSwgNTYsIDM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyMzAsIDIzOSwgMjQ3LCAyMTUsIDU2LCAKLSAgICAzOSwgMjA4LCAyMjgsIDU2LCAzOSwgMjI1LCAxNzEsIDU2LCAzOSwgMTI0LCAyMjcsIDExNCwgMzksIDUyLCAxMjQsIDIyNywgCi0gICAgMTE0LCAzOSwgMjA4LCAyMjgsIDIxOSwgMTk5LCAzOSwgMjEyLCAyMjgsIDIxMSwgMzIsIDIxOSwgMTk5LCAzOSwgMTYzLCAKLSAgICAyMTEsIDMyLCAyMTksIDE5OSwgMzksIDIxMiwgMjI4LCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgMTYzLCAyMTIsIDEsIDIxOSwgCi0gICAgMTk5LCAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU2LCAzOSwgMjMwLCAyMzksIDI0NywgMjA4LCA1NiwgMzksIDUxLCA1NiwgCi0gICAgMzksIDIxNCwgMTc2LCA1NiwgMzksIDIwMywgMTk3LCA1NSwgMzksIDgwLCAyMDgsIDIyNywgMzksIDUyLCAyMTksIDE5OCwgCi0gICAgMzksIDIzNywgMjU0LCAxNDMsIDgyLCAzOSwgMjUxLCAxMjYsIDE0MywgODIsIDM5LCAzMCwgMjE4LCAyMzksIDM5LCAzMCwgCi0gICAgMjI4LCAyNTIsIDM5LCAzMCwgMjQzLCAyMjUsIDIwOCwgMTQ5LCAzOSwgMzAsIDIwMiwgMjIxLCAzOSwgMjQ3LCAyMDgsIDU1LCAKLSAgICAzOSwgMjQxLCAzNSwgMiwgNTYsIDM5LCA1MiwgODAsIDIyNywgMTE1LCA1NiwgMzksIDQ5LCAyNTAsIDIxOCwgNTYsIDM5LCAKLSAgICAyMjEsIDE2NiwgMjA4LCAyMjgsIDU1LCAzOSwgMjM2LCAxMjIsIDU1LCAzOSwgMjUxLCA3LCAxNTYsIDIwOCwgMTczLCA1NSwgCi0gICAgMzksIDQ5LCA1MCwgNTMsIDU2LCAzOSwgMTc3LCA1MywgNTYsIDM5LCAyMzgsIDQsIDIzMCwgOTYsIDM5LCA1MCwgMjUwLCAKLSAgICA5NSwgNTUsIDM5LCA0OSwgMTYyLCAyMTUsIDI1MywgNTUsIDM5LCAyNDAsIDM2LCAzOSwgMjAzLCAxOTcsIDU2LCAzOSwgNDksIAotICAgIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDU2LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMTIsIDI1MCwgOTUsIDU2LCAKLSAgICAzOSwgNTAsIDE2MiwgMjE1LCAyNTMsIDU1LCAzOSwgNzAsIDg3LCAyMTYsIDE2LCAzOSwgMjUwLCA2MCwgNTYsIDM5LCA1MiwgCi0gICAgMjE1LCAyNTMsIDU2LCAzOSwgMjAyLCAzMCwgNTUsIDM5LCA1MiwgMjQ3LCAyMTUsIDU2LCAzOSwgNTIsIDI0NywgMjE0LCAKLSAgICAzOSwgNTIsIDIyNSwgMTcwLCAzOSwgNTIsIDIyNSwgMTcxLCA1NiwgMzksIDUyLCAyMDgsIDIyNywgMzksIDUyLCAyMzAsIAotICAgIDIzOSwgMjQ3LCAyMTQsIDM5LCA1MiwgODYsIDUzLCA1NiwgMzksIDgsIDUsIDEsIDYzLCAzOSwgOCwgNSwgMSwgNzQsIDM5LCAKLSAgICA4LCA1LCAxLCA3NSwgMzksIDgsIDUsIDEsIDc4LCAzOSwgOCwgNSwgMSwgNjgsIDM5LCA4LCA1LCAxLCAyNDcsIDEyNSwgMzksIAotICAgIDgsIDUsIDEsIDI0NSwgNTEsIDM5LCA4LCA1LCAxLCAyMzcsIDE3MSwgMzksIDgsIDUsIDEsIDIyNiwgMTg1LCAzOSwgOCwgNSwgCi0gICAgMSwgMTQ2LCAzOSwgOCwgNSwgMSwgMjEwLCA2OSwgMzksIDgsIDUsIDEsIDIwNiwgMTY0LCAzOSwgOCwgNSwgMSwgMjAzLCAKLSAgICAxOTYsIDMwLCA2LCAxLCAyMzcsIDIwLCAzMCwgNSwgMSwgMjM3LCAyMCwgMzAsIDYsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDI1MCwgMTI2LCAyMTQsIDI0NiwgMzAsIDIyMSwgNDQsIDU0LCAzMCwgMjI2LCAyNTEsIDIyMSwgNDQsIDU0LCAKLSAgICAzMCwgNiwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgNSwgMSwgMjE5LCAxMjYsIDI0MywgMTk5LCAzMCwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAxNDUsIDk3LCAzMCwgNSwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgCi0gICAgMTQ1LCA5NywgMzAsIDUsIDIxNiwgNzMsIDI0MiwgODMsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAyMTcsIDQ3LCAKLSAgICA4MiwgMzAsIDYsIDEsIDIwMiwgMjI3LCAzMCwgMjA4LCAxNDksIDMwLCAyNDMsIDIyNSwgMjA4LCAxNDksIDMwLCA2LCAxLCAKLSAgICAyNTEsIDMsIDMsIDIwOCwgMTQ5LCAzMCwgMjUwLCAyMDMsIDIwOSwgMTYzLCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjA4LCAKLSAgICAxNDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjA4LCAxNDksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIAotICAgIDMwLCA2LCAxLCAyNTEsIDIsIDMwLCA2LCAxLCAyNDgsIDEwNiwgMzAsIDYsIDEsIDIzOCwgMjM1LCAzMCwgNiwgMSwgMjQ0LCAKLSAgICAzNywgMzAsIDYsIDEsIDI0MSwgMzcsIDMwLCA2LCAxLCAyMDIsIDgzLCAzMCwgNiwgMSwgMjQwLCAyNDgsIDMwLCA2LCAxLCAKLSAgICAyMDksIDc0LCAzMCwgNiwgMSwgMjMwLCAyMzAsIDMwLCA2LCAxLCAyMjksIDI0NywgMzAsIDYsIDEsIDIyOCwgMjQsIDMwLCAKLSAgICA2LCAxLCAyMjMsIDI0NiwgMzAsIDYsIDEsIDIyMSwgODQsIDMwLCA2LCAxLCAyMDMsIDE3MCwgMzAsIDYsIDEsIDIyMCwgMzQsIAotICAgIDMwLCA2LCAxLCAyMTgsIDE2NywgMzAsIDYsIDEsIDIxNiwgNTksIDMwLCA2LCAxLCAyMTIsIDE0NCwgMzAsIDYsIDEsIDIwOSwgCi0gICAgMjA3LCAzMCwgNiwgMSwgMjA2LCAyMTYsIDMwLCA2LCAxLCAyMTgsIDE5MiwgMzAsIDYsIDEsIDI0NiwgMTQyLCAzMCwgNiwgCi0gICAgMSwgMjE3LCAyMDIsIDMwLCA2LCAxLCAyMjAsIDM2LCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI0LCAzMCwgNiwgCi0gICAgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDgsIDE0OSwgMzAsIDUsIDEsIDI0MSwgCi0gICAgMzgsIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIAotICAgIDIwOCwgMTQ5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjA4LCAxNDksIDMwLCA1LCAxLCAyNTEsIAotICAgIDIsIDMwLCA1LCAxLCAyNDgsIDEwNiwgMzAsIDUsIDEsIDIzOCwgMjM1LCAzMCwgNSwgMSwgMjQ0LCAzNywgMzAsIDUsIDEsIAotICAgIDI0MSwgMzcsIDMwLCA1LCAxLCAyMDIsIDgzLCAzMCwgNSwgMSwgMjQwLCAyNDgsIDMwLCA1LCAxLCAyMDksIDc0LCAzMCwgNSwgCi0gICAgMSwgMjMwLCAyMzAsIDMwLCA1LCAxLCAyMjksIDI0NywgMzAsIDUsIDEsIDIyOCwgMjQsIDMwLCA1LCAxLCAyMjMsIDI0NiwgCi0gICAgMzAsIDUsIDEsIDIyMSwgODQsIDMwLCA1LCAxLCAyMDMsIDE3MCwgMzAsIDUsIDEsIDIyMCwgMzQsIDMwLCA1LCAxLCAyMTgsIAotICAgIDE2NywgMzAsIDUsIDEsIDIxNiwgNTksIDMwLCA1LCAxLCA0NiwgMjEyLCAxNDQsIDMwLCA1LCAxLCAyMTIsIDE0NCwgMzAsIAotICAgIDUsIDEsIDIwOSwgMjA3LCAzMCwgNSwgMSwgMjA2LCAyMTYsIDMwLCA1LCAxLCAyMTgsIDE5MiwgMzAsIDUsIDEsIDI0NiwgCi0gICAgMTQyLCAzMCwgNSwgMSwgMjE3LCAyMDIsIDMwLCA1LCAxLCAyMjAsIDM2LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgCi0gICAgMjI0LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI0LCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjA4LCAxNDksIDMwLCAKLSAgICA1LCAxLCAyMDYsIDIxNywgMywgMjA4LCAxNDksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDgsIDE0OSwgMzAsIDYsIDIzMCwgCi0gICAgMTksIDk3LCAzMCwgMjQ4LCAxMDcsIDk3LCAzMCwgMjA5LCA3NSwgOTcsIDMwLCAyMDYsIDIxNywgMywgMjM2LCAxMTYsIDk3LCAKLSAgICAzMCwgMjA2LCAyMTcsIDMsIDI1MSwgMTI2LCAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjA2LCAyMTcsIDMsIDI0MywgMjMyLCAKLSAgICAyNSwgMjM2LCAxMTYsIDk3LCAzMCwgMjE4LCAxOTMsIDk3LCAzMCwgMjE4LCAxNjgsIDk3LCAzMCwgMjMwLCAxOSwgOTcsIAotICAgIDMwLCAxLCAyNTAsIDEyNiwgMjI5LCAwLCAzMCwgNSwgMSwgMjUwLCAxMjYsIDIyOSwgMCwgMzAsIDEsIDIxMSwgNzEsIDMwLCAKLSAgICA1LCAxLCAyMTEsIDcxLCAzMCwgMSwgMjQzLCAxOTksIDMwLCA1LCAxLCAyNDMsIDE5OSwgMzAsIDEsIDIyOSwgMCwgMzAsIDUsIAotICAgIDEsIDIyOSwgMCwgMzAsIDEsIDIxNCwgMjQ2LCAzMCwgNSwgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyMTMsIDM1LCA4NCwgNSwgCi0gICAgMSwgMjEzLCAzNSwgODQsIDYsIDEsIDI0MCwgNDUsIDg0LCA1LCAxLCAyNDAsIDQ1LCA4NCwgNiwgMSwgMjI5LCAxMjcsIDg0LCAKLSAgICA1LCAxLCAyMjksIDEyNywgODQsIDYsIDEsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMjM2LCAxMDcsIDg0LCA2LCAxLCAyMzgsIAotICAgIDIzMCwgODQsIDUsIDEsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMjEzLCAxLCA4NCwgNSwgMSwgMjEzLCAxLCA4NCwgNiwgMSwgCi0gICAgMjQ0LCA1MiwgODQsIDUsIDEsIDI0NCwgNTIsIDMwLCAyMjksIDI0OCwgOTcsIDMwLCAyMTYsIDYwLCA5NywgMzAsIDIyNiwgCi0gICAgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCAxLCAyMDIsIDIyNywgMzAsIDYsIDIwOSwgNzUsIDk3LCAzMCwgMjI2LCAyMjEsIAotICAgIDI0MSwgMzgsIDk3LCAzMCwgMjE2LCA3MywgMjI2LCAyMjEsIDI0MSwgMzgsIDk3LCAzMCwgNiwgMSwgMjEyLCAyNDIsIDMwLCAKLSAgICA1LCAxLCAyMTIsIDI0MiwgMzAsIDYsIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDMwLCA2LCAxLCAyMTQsIDI0MywgMzAsIDUsIAotICAgIDEsIDIxNCwgMjQzLCAzMCwgMjE2LCA2MCwgMywgMjExLCAzMiwgOTcsIDMwLCA2LCAyMTYsIDczLCAyMjYsIDIyMSwgMjEyLCAKLSAgICAxNDUsIDk3LCAzMCwgNiwgMjQyLCA4MywgMjI2LCAyMjEsIDIxMiwgMTQ1LCA5NywgMzAsIDYsIDIxNiwgNzMsIDI0MiwgODMsIAotICAgIDIyNiwgMjIxLCAyMTIsIDE0NSwgOTcsIDM2LCA2LCAxLCAyMzEsIDExMSwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMzAsIAotICAgIDIzNCwgMzYsIDYsIDEsIDI0MywgMTMwLCAzNiwgNiwgMSwgMjM4LCA1MiwgMzYsIDYsIDEsIDIwNywgMTEsIDIzMSwgMTEwLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAyNTIsIDM2LCA2LCAxLCAyNDcsIDEzNSwgNzUsIDM2LCA2LCAxLCAyMDMsIDExLCAzNiwgNiwgMSwgCi0gICAgMjMwLCAxNjEsIDM2LCA2LCAxLCAyMjcsIDgwLCAzNiwgNiwgMSwgMjIyLCA0MSwgMzYsIDYsIDEsIDIwOCwgOCwgMzYsIDYsIAotICAgIDEsIDIyOSwgNDksIDM2LCA2LCAxLCAyMzUsIDIwNiwgMywgMjM3LCAyNTMsIDM2LCA2LCAxLCAyMTIsIDIyOCwgNjgsIDM2LCAKLSAgICA2LCAxLCAyNDEsIDI0OCwgMzYsIDYsIDEsIDYzLCAzNiwgNiwgMSwgMjQ4LCAxNjIsIDM2LCA2LCAxLCAyMDYsIDU1LCAzNiwgCi0gICAgNiwgMSwgMjM4LCAxMDUsIDM2LCA2LCAxLCAyNDQsIDc1LCAzNiwgNiwgMSwgMjMxLCAxMTAsIDM2LCA2LCAxLCAyMDIsIDcxLCAKLSAgICAzNiwgNiwgMSwgMjAyLCA5MiwgMzYsIDYsIDEsIDc1LCAzNiwgNiwgMSwgMjEyLCAyMjgsIDc1LCAzNiwgNiwgMSwgMTczLCAKLSAgICAzNiwgNiwgMSwgMjQxLCAxMjIsIDM2LCA2LCAxLCAyNDEsIDEwMywgMzYsIDYsIDEsIDI0MSwgOTIsIDM2LCA2LCAxLCA3OCwgCi0gICAgMzYsIDYsIDEsIDIxOSwgMzQsIDM2LCA2LCAxLCAyNDEsIDI4LCAzNiwgNiwgMSwgMjQxLCAxNywgMzYsIDYsIDEsIDIwOSwgCi0gICAgMTg3LCAzNiwgNiwgMSwgNjgsIDM2LCA2LCAxLCAyNDEsIDE1NCwgMzYsIDYsIDEsIDE1MiwgMzYsIDYsIDEsIDIwOCwgMTQsIAotICAgIDM2LCA2LCAxLCAyNDYsIDE3MCwgMzYsIDYsIDEsIDIxMywgOTAsIDM2LCA2LCAxLCAyMTMsIDQ2LCAzNiwgNiwgMSwgMjM3LCAKLSAgICA5MSwgNTQsIDM2LCA2LCAxLCAyMDMsIDMwLCAzNiwgNiwgMSwgMjEyLCA3LCA1NCwgMzYsIDYsIDEsIDc0LCAzNiwgNiwgMSwgCi0gICAgMjAyLCAyMTMsIDM2LCA2LCAxLCAxOTgsIDM2LCA1LCAxLCA2MywgMzYsIDUsIDEsIDI0OCwgMTYyLCAzNiwgNSwgMSwgMjA2LCAKLSAgICA1NSwgMzYsIDUsIDEsIDIzOCwgMTA1LCAzNiwgNSwgMSwgMjQ0LCA3NSwgMzYsIDUsIDEsIDIzMSwgMTEwLCAzNiwgNSwgMSwgCi0gICAgMjAyLCA3MSwgMzYsIDUsIDEsIDIwMiwgOTIsIDM2LCA1LCAxLCA3NSwgMzYsIDUsIDEsIDIxMiwgMjI4LCA3NSwgMzYsIDUsIAotICAgIDEsIDE3MywgMzYsIDUsIDEsIDI0MSwgMTIyLCAzNiwgNSwgMSwgMjQxLCAxMDMsIDM2LCA1LCAxLCAyNDEsIDkyLCAzNiwgNSwgCi0gICAgMSwgNzgsIDM2LCA1LCAxLCAyMTksIDM0LCAzNiwgNSwgMSwgMjQxLCAyOCwgMzYsIDUsIDEsIDI0MSwgMTcsIDM2LCA1LCAxLCAKLSAgICAyMDksIDE4NywgMzYsIDUsIDEsIDY4LCAzNiwgNSwgMSwgMjQxLCAxNTQsIDM2LCA1LCAxLCAxNTIsIDM2LCA1LCAxLCAyMDgsIAotICAgIDE0LCAzNiwgNSwgMSwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMTMsIDkwLCAzNiwgNSwgMSwgMjEzLCA0NiwgMzYsIDUsIDEsIAotICAgIDIzNywgOTEsIDU0LCAzNiwgNSwgMSwgMjAzLCAzMCwgMzYsIDUsIDEsIDIxMiwgNywgNTQsIDM2LCA1LCAxLCA3NCwgMzYsIAotICAgIDUsIDEsIDIwMiwgMjEzLCAzNiwgNSwgMSwgMTk4LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgCi0gICAgMjMwLCAyMzQsIDM2LCA1LCAxLCAyNDMsIDEzMCwgMzYsIDUsIDEsIDIzOCwgNTIsIDM2LCA1LCAxLCAyMDcsIDExLCAyMzEsIAotICAgIDExMCwgMzYsIDUsIDEsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjQ3LCAxMzUsIDc1LCAzNiwgNSwgMSwgMjAzLCAxMSwgMzYsIAotICAgIDUsIDEsIDIzMCwgMTYxLCAzNiwgNSwgMSwgMjI3LCA4MCwgMzYsIDUsIDEsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMDgsIDgsIAotICAgIDM2LCA1LCAxLCAyMjksIDQ5LCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDIzNywgMjUzLCAzNiwgNSwgMSwgMjEyLCAyMjgsIAotICAgIDY4LCAzNiwgNSwgMSwgMjQxLCAyNDgsIDM2LCA2LCAxLCAyMjAsIDM2LCAzNiwgNSwgMSwgMjIwLCAzNiwgMzYsIDYsIDEsIAotICAgIDIwMywgNjYsIDM2LCA1LCAxLCAyMDMsIDY2LCAzNiwgNiwgMSwgMjMwLCAyMjgsIDc0LCAzNiwgNSwgMSwgMjMwLCAyMjgsIAotICAgIDc0LCAzNiwgNiwgMSwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA1LCAxLCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDYsIDEsIAotICAgIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMjcsIDg2LCAyMDIsIDE4MywgMzYsIAotICAgIDYsIDEsIDI0OCwgNzMsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMzAsIDIyOCwgCi0gICAgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA1LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgMjAyLCAxODMsIDM2LCA2LCAxLCAyMjgsIAotICAgIDIyNSwgMzYsIDUsIDEsIDIyOCwgMjI1LCAzNiwgNiwgMSwgMjE3LCAyMDIsIDM2LCA1LCAxLCAyMTcsIDIwMiwgMzYsIDYsIAotICAgIDEsIDIzOSwgMjM1LCAzNiwgNSwgMSwgMjM5LCAyMzUsIDM2LCA2LCAxLCAyMzAsIDE4NiwgMzYsIDUsIDEsIDIzMCwgMTg2LCAKLSAgICAzNiwgNiwgMSwgMjMwLCAxODcsIDMsIDUyLCAyMzcsIDI1NCwgMjUxLCAxMzgsIDM2LCA1LCAxLCAyMzAsIDE4NywgMywgNTIsIAotICAgIDIzNywgMjU0LCAyNTEsIDEzOCwgMzYsIDYsIDEsIDIwNywgMTQsIDM2LCA1LCAxLCAyMDcsIDE0LCAzNiwgNiwgMSwgMjE1LCAKLSAgICAxOTEsIDIyMCwgMzYsIDM2LCA1LCAxLCAyMTUsIDE5MSwgMjIwLCAzNiwgMzYsIDYsIDEsIDIyMCwgMzcsIDMsIDIwOCwgCi0gICAgMTk3LCAzNiwgNSwgMSwgMjIwLCAzNywgMywgMjA4LCAxOTcsIDM2LCA2LCAxLCAyMTksIDIyNCwgMzYsIDUsIDEsIDIxOSwgCi0gICAgMjI0LCAzNiwgNiwgMSwgMjI5LCAwLCAzNiwgNSwgMSwgMjI5LCAwLCAzNiwgMjA5LCAzNSwgNTQsIDM5LCAzNiwgMjA4LCAKLSAgICAxOTcsIDM5LCAzNiwgMjE5LCAxNDEsIDM5LCAzNiwgMjQ0LCAxNDIsIDIxOCwgNzEsIDM5LCAzNiwgMjE3LCAxOTYsIDIxOCwgCi0gICAgNzEsIDM5LCAzNiwgMjE4LCA1NSwgMzksIDM2LCAyMzYsIDEyLCAyMDksIDM1LCA1NCwgMzksIDM2LCAyMjQsIDExNCwgNTQsIAotICAgIDM2LCA2LCAxLCAyMTIsIDIyOCwgMjM1LCAyMDYsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjEyLCAyMjgsIDIzNSwgMjA2LCAKLSAgICAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDUsIDEsIDIxMywgMTM5LCA1NCwgMzYsIDYsIDEsIAotICAgIDI0MSwgMjksIDMsIDIwOCwgMjU0LCAzNiwgNSwgMSwgMjQxLCAyOSwgMywgMjA4LCAyNTQsIDM2LCA2LCAxLCAyMzgsIDEwNiwgCi0gICAgMywgMjA2LCAyMTUsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjA2LCAyMTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgOTUsIAotICAgIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgOTUsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAKLSAgICAyMzgsIDEwNiwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDcyLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjAyLCA3MiwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMiwgOTMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDIsIDkzLCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjMwLCA0NCwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA1LCAxLCAyMzAsIDQ0LCAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMzAsIDQ0LCAzLCAKLSAgICA5NSwgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDk1LCAzNiwgNiwgMSwgMjQ4LCAyMTQsIDE3MywgMzYsIDUsIDEsIDI0OCwgCi0gICAgMjE0LCAxNzMsIDM2LCA2LCAxLCAyNDEsIDkzLCAzLCAyNDQsIDIwLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjQ0LCAyMCwgCi0gICAgMzYsIDYsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDUsIDMyLCAyNDEsIDkzLCAyMzgsIDEwNSwgMzYsIDYsIDEsIAotICAgIDIxOSwgMzUsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjE5LCAzNSwgMywgMTAxLCAxMTMsIDM2LCA2LCAxLCAyNTEsIDE0NSwgCi0gICAgMTUyLCAzNiwgNSwgMSwgMjUxLCAxNDUsIDE1MiwgMzYsIDYsIDEsIDI0MSwgMTgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAKLSAgICAyNDEsIDE4LCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjA5LCAxODgsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMDksIDE4OCwgCi0gICAgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIxMSwgNTMsIDY4LCAzNiwgNSwgMSwgMjExLCA1MywgNjgsIDM2LCA2LCAxLCAyMTEsIAotICAgIDUzLCAxMDYsIDMsIDk1LCAzNiwgNSwgMSwgMjExLCA1MywgMTA2LCAzLCA5NSwgMzYsIDYsIDEsIDIzNywgMTYwLCAzLCAKLSAgICAyNDQsIDIwLCAzNiwgNSwgMSwgMjM3LCAxNjAsIDMsIDI0NCwgMjAsIDM2LCA2LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAzMiwgMjA5LCAxODgsIDIwOCwgMTQsIDM2LCA2LCAxLCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMTcxLCAzLCAyNDQsIDIwLCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIDgwLCA5NSwgMzYsIDUsIDEsIDI0NiwgMTcxLCAKLSAgICAzLCA4MCwgOTUsIDM2LCA2LCAxLCAyMTMsIDEyLCAzNiwgNSwgMSwgMjEzLCAxMiwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIAotICAgIDE3MCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MCwgMzYsIDYsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAKLSAgICAyMCwgMzYsIDUsIDEsIDI1MSwgMTQ1LCAyNDYsIDE3MSwgMywgMjQ0LCAyMCwgMzYsIDEsIDIxOSwgMTMzLCAzNiwgNiwgMSwgCi0gICAgMjAyLCA3MiwgMywgMjQ3LCAyMTQsIDM2LCA1LCAxLCAyMDIsIDcyLCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDIzMCwgNDQsIAotICAgIDMsIDExMywgMzYsIDUsIDEsIDIzMCwgNDQsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIAotICAgIDUsIDEsIDI0MSwgMTIzLCAzLCAyMDksIDI0OCwgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDExMywgMzYsIDUsIDEsIDI0MSwgCi0gICAgOTMsIDMsIDExMywgMzYsIDYsIDEsIDI0MSwgOTMsIDMsIDIwOSwgMjQ4LCAzNiwgNSwgMSwgMjQxLCA5MywgMywgMjA5LCAKLSAgICAyNDgsIDM2LCA2LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA1LCAxLCAyMjksIDEzOCwgMjQ2LCAxNzAsIDM2LCA2LCAKLSAgICAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyNDEsIDEwNCwgMywgMjA5LCAyNDgsIDM2LCA1LCAxLCAyMTksIAotICAgIDEzMywgMzYsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDUsIDEsIDM0LCAzLCAyNDcsIDIxNCwgMzYsIDYsIDEsIDM0LCAKLSAgICAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzYsIDYsIDMyLCAzNCwgMjMxLCAxMTAsIDM2LCA1LCAKLSAgICAzMiwgMzQsIDIzMSwgMTEwLCAzNiwgNiwgMSwgMjMxLCAxMTEsIDMsIDI0NywgMjE0LCAzNiwgNSwgMSwgMjMxLCAxMTEsIDMsIAotICAgIDI0NywgMjE0LCAzNiwgNiwgMSwgMjE0LCAxOTIsIDM2LCA1LCAxLCAyMTQsIDE5MiwgMzYsIDYsIDEsIDIxNCwgMTkzLCAzLCAKLSAgICAyNDMsIDIzMSwgMzYsIDUsIDEsIDIxNCwgMTkzLCAzLCAyNDMsIDIzMSwgMzYsIDYsIDEsIDIwMiwgNzIsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNSwgMSwgMjAyLCA3MiwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMDIsIDkzLCAzLCAyNDMsIDIzMSwgMzYsIAotICAgIDUsIDEsIDIwMiwgOTMsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjUxLCAxNDUsIDI0MSwgMjUyLCAzNiwgNSwgMSwgMjUxLCAKLSAgICAxNDUsIDI0MSwgMjUyLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDIyNSwgMTcwLCAzNiwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMxLCAzNiwgNSwgMSwgMjM1LCAyMDYsIDMsIDI0MywgCi0gICAgMjMxLCAzNiwgNiwgMSwgMTU4LCAzLCAyNDMsIDIzMSwgMzYsIDUsIDEsIDE1OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAKLSAgICAyNDgsIDIyNSwgNzgsIDM2LCA1LCAxLCAyNDgsIDIyNSwgNzgsIDM2LCA2LCAxLCAyNDgsIDIyNSwgMTU4LCAzLCAyNDMsIAotICAgIDIzMSwgMzYsIDUsIDEsIDI0OCwgMjI1LCAxNTgsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMTg4LCAzLCAyNDMsIDIzMSwgCi0gICAgMzYsIDUsIDEsIDE4OCwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcwLCAzNiwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMjUsIDE3MCwgMzYsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzEsIDM2LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzNiwgNiwgCi0gICAgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNSwgMSwgMTA2LCAzLCA1MiwgMTY1LCAzNiwgNiwgMSwgMjQ2LCAxNzEsIDMsIAotICAgIDI0MywgMjMxLCAzNiwgNSwgMSwgMjQ2LCAxNzEsIDMsIDI0MywgMjMxLCAzNiwgNiwgMSwgMjM4LCAxMDYsIDMsIDI0NCwgCi0gICAgMjAsIDM2LCA1LCAxLCAyMzgsIDEwNiwgMywgMjQ0LCAyMCwgMzYsIDYsIDEsIDIwMywgMzEsIDMsIDI0MywgMjMxLCAzNiwgCi0gICAgNSwgMSwgMjAzLCAzMSwgMywgMjQzLCAyMzEsIDM2LCA2LCAxLCAyMzgsIDEwNiwgMywgMjExLCAzMiwgMjUsIDExMywgMzYsIAotICAgIDUsIDEsIDIzOCwgMTA2LCAzLCAyMTEsIDMyLCAyNSwgMTEzLCAzNiwgNiwgMSwgMjM3LCAxNjAsIDMsIDExMywgMzYsIDUsIAotICAgIDEsIDIzNywgMTYwLCAzLCAxMTMsIDM2LCA2LCAxLCAyMzcsIDE2MCwgMywgOTUsIDM2LCA1LCAxLCAyMzcsIDE2MCwgMywgCi0gICAgOTUsIDM2LCA2LCAxLCAyMjksIDEwLCAyNDQsIDc1LCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQ0LCA3NSwgMzYsIDYsIDEsIAotICAgIDIyOSwgMTAsIDI0MywgMTMwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjQzLCAxMzAsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDIsIAotICAgIDIxLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjAyLCAyMSwgMzYsIDYsIDEsIDIyOSwgMTAsIDI0MSwgMjQ0LCAzNiwgNSwgMSwgCi0gICAgMjI5LCAxMCwgMjQxLCAyNDQsIDM2LCA2LCAxLCAyMjksIDEwLCAyMjcsIDgwLCAzNiwgNSwgMSwgMjI5LCAxMCwgMjI3LCAKLSAgICA4MCwgMzYsIDYsIDEsIDIyOSwgMTAsIDIyMiwgNDEsIDM2LCA1LCAxLCAyMjksIDEwLCAyMjIsIDQxLCAzNiwgNiwgMSwgCi0gICAgMjI5LCAxMCwgMjEyLCA3MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIxMiwgNzEsIDM2LCA2LCAxLCAyMjksIDEwLCAyMDgsIAotICAgIDE5MSwgMzYsIDUsIDEsIDIyOSwgMTAsIDIwOCwgMTkxLCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCA5MiwgMzYsIDUsIDEsIAotICAgIDIxNiwgNzMsIDIwMiwgOTIsIDM2LCA2LCAxLCAyNDEsIDEyMywgMywgMTEzLCAzNiwgNSwgMSwgMjQxLCAxMjMsIDMsIDExMywgCi0gICAgMzYsIDYsIDEsIDIyNywgMTYxLCAzNiwgNSwgMSwgMjI3LCAxNjEsIDM2LCA2LCAxLCAyMTYsIDYxLCAzNiwgNSwgMSwgMjE2LCAKLSAgICA2MSwgMzYsIDYsIDEsIDIwMywgOTksIDM2LCA1LCAxLCAyMDMsIDk5LCAzNiwgNiwgMSwgMjE3LCAxMjYsIDM2LCA1LCAxLCAKLSAgICAyMTcsIDEyNiwgMzYsIDYsIDEsIDIwNCwgNjIsIDM2LCA1LCAxLCAyMDQsIDYyLCAzNiwgNiwgMSwgMjUxLCAyNiwgMTczLCAKLSAgICAzNiwgNSwgMSwgMjUxLCAyNiwgMTczLCAzNiwgNiwgMSwgMjQxLCAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNSwgMSwgMjQxLCAKLSAgICAxMjMsIDMsIDEwMSwgMTEzLCAzNiwgNiwgMSwgMjQxLCA5MywgMywgMTAxLCAxMTMsIDM2LCA1LCAxLCAyNDEsIDkzLCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDYsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyMTksIDM1LCAzLCAyNDQsIDIwLCAKLSAgICAzNiwgNiwgMSwgMjEzLCAxMywgMywgMjQ0LCAyMCwgMzYsIDUsIDEsIDIxMywgMTMsIDMsIDI0NCwgMjAsIDM2LCA2LCAxLCAKLSAgICAyNDEsIDkzLCAzLCA0OSwgMTEzLCAzNiwgNSwgMSwgMjQxLCA5MywgMywgNDksIDExMywgMzYsIDYsIDEsIDI0MSwgMjM3LCAKLSAgICAzNiwgNSwgMSwgMjQxLCAyMzcsIDM2LCA2LCAxLCAyNDQsIDEyNCwgMzYsIDUsIDEsIDI0NCwgMTI0LCAzNiwgNiwgMSwgCi0gICAgMjQxLCAxMjMsIDMsIDI0NCwgMjAsIDM2LCA1LCAxLCAyNDEsIDEyMywgMywgMjQ0LCAyMCwgMTc4LCA2LCAxLCAyNTAsIDUsIAotICAgIDE3OCwgNiwgMSwgMjQ4LCAxMjIsIDE3OCwgNiwgMSwgMjM4LCA2OSwgMTc4LCA2LCAxLCAyNDQsIDIxMiwgMTc4LCA2LCAxLCAKLSAgICAyNDEsIDE2NywgMTc4LCA2LCAxLCAyMDIsIDExNiwgMTc4LCA2LCAxLCAyNDEsIDE0NywgMTc4LCA2LCAxLCAyNDAsIDI1MCwgCi0gICAgMTc4LCA2LCAxLCAxMzUsIDE3OCwgNiwgMSwgMjAyLCA3MSwgMTc4LCA2LCAxLCAyMzEsIDE5LCAxNzgsIDYsIDEsIDIyNywgCi0gICAgODMsIDE3OCwgNiwgMSwgMjAzLCAxNzQsIDE3OCwgNiwgMSwgMjQ3LCA5MiwgMTc4LCA2LCAxLCAyMjksIDE4MCwgMTc4LCA2LCAKLSAgICAxLCAyMzYsIDEzNiwgMTc4LCA2LCAxLCAyMzAsIDE4MSwgMTc4LCA2LCAxLCAyMzgsIDExNiwgMTc4LCA2LCAxLCAyNDYsIAotICAgIDE2MCwgMTc4LCA2LCAxLCAyMjQsIDI0MCwgMTc4LCA2LCAxLCAyMDMsIDExLCAxNzgsIDYsIDEsIDIyMSwgMTUyLCAxNzgsIAotICAgIDYsIDEsIDIxMywgOTAsIDE3OCwgNiwgMSwgMjA1LCAxODksIDE3OCwgNiwgMSwgMjQ2LCAxOTksIDE3OCwgNiwgMSwgMjE5LCAKLSAgICAxNiwgMTc4LCA2LCAxLCAyMzAsIDE0NCwgMTc4LCA2LCAxLCAyMTYsIDIyMCwgMTc4LCA2LCAxLCAyMTQsIDE1NSwgMTc4LCAKLSAgICA2LCAxLCAyMDUsIDIzNCwgMTc4LCA2LCAxLCAyMDgsIDE5NCwgMTc4LCA2LCAxLCAyMTYsIDEyMiwgMTc4LCA2LCAxLCAyNDUsIAotICAgIDI1NCwgMTc4LCA2LCAxLCAyMDIsIDI1MiwgMTc4LCA2LCAxLCAyMTgsIDEwMiwgMTc4LCA2LCAxLCAyMjksIDE5MSwgMTc4LCAKLSAgICA2LCAxLCAyMjAsIDYwLCAxNzgsIDYsIDEsIDI0MCwgNDcsIDE3OCwgNjUsIDEsIDQ5LCAxNjIsIDIxNSwgMjUyLCAxNzgsIAotICAgIDI1MCwgMTYwLCAxNzgsIDI0MSwgOTYsIDgyLCAxNzgsIDI0MCwgMjEyLCA4MiwgMTc4LCAyNDUsIDIzMywgMTc4LCAyMTcsIAotICAgIDQ3LCA4MiwgMTc4LCAyNTEsIDE0NiwgODIsIDE3OCwgNSwgMSwgMjUwLCA1LCAxNzgsIDUsIDEsIDI0OCwgMTIyLCAxNzgsIAotICAgIDUsIDEsIDIzOCwgNjksIDE3OCwgNSwgMSwgMjQ0LCAyMTIsIDE3OCwgNSwgMSwgMjQxLCAxNjcsIDE3OCwgNSwgMSwgMjAyLCAKLSAgICAxMTYsIDE3OCwgNSwgMSwgMjQxLCAxNDcsIDE3OCwgNSwgMSwgMjQwLCAyNTAsIDE3OCwgNSwgMSwgMTM1LCAxNzgsIDUsIDEsIAotICAgIDIwMiwgNzEsIDE3OCwgNSwgMSwgMjMxLCAxOSwgMTc4LCA1LCAxLCAyMjcsIDgzLCAxNzgsIDUsIDEsIDIwMywgMTc0LCAKLSAgICAxNzgsIDUsIDEsIDI0NywgOTIsIDE3OCwgNSwgMSwgMjI5LCAxODAsIDE3OCwgNSwgMSwgMjM2LCAxMzYsIDE3OCwgNSwgMSwgCi0gICAgMjMwLCAxODEsIDE3OCwgNSwgMSwgMjM4LCAxMTYsIDE3OCwgNSwgMSwgMjQ2LCAxNjAsIDE3OCwgNSwgMSwgMjI0LCAyNDAsIAotICAgIDE3OCwgNSwgMSwgMjAzLCAxMSwgMTc4LCA1LCAxLCAyMjEsIDE1MiwgMTc4LCA1LCAxLCAyMTMsIDkwLCAxNzgsIDUsIDEsIAotICAgIDIwNSwgMTg5LCAxNzgsIDUsIDEsIDI0NiwgMTk5LCAxNzgsIDUsIDEsIDIxOSwgMTYsIDE3OCwgNSwgMSwgMjMwLCAxNDQsIAotICAgIDE3OCwgNSwgMSwgMjE2LCAyMjAsIDE3OCwgNSwgMSwgMjE0LCAxNTUsIDE3OCwgNSwgMSwgMjA1LCAyMzQsIDE3OCwgNSwgMSwgCi0gICAgMjA4LCAxOTQsIDE3OCwgNSwgMSwgMjE2LCAxMjIsIDE3OCwgNSwgMSwgMjQ1LCAyNTQsIDE3OCwgNSwgMSwgMjAyLCAyNTIsIAotICAgIDE3OCwgNSwgMSwgMjE4LCAxMDIsIDE3OCwgNSwgMSwgMjI5LCAxOTEsIDE3OCwgNSwgMSwgMjIwLCA2MCwgMTc4LCA1LCAxLCAKLSAgICAyNDAsIDQ3LCAxNzgsIDUsIDMyLCAyNDEsIDE2OCwgMjAyLCAyNTIsIDE3OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3OCwgCi0gICAgMjM1LCAyMjAsIDIxNiwgMTUsIDE3OCwgMjQwLCAyNDYsIDU0LCAyMjcsIDIyMSwgMTc4LCAyNDAsIDI0NiwgNTQsIDE3OCwgCi0gICAgMjQyLCA2MCwgNTQsIDExMCwgMjUxLCAxMzksIDI0MCwgMjQxLCAxMTAsIDI1MSwgMTM5LCAyMTQsIDE1NiwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjEzLCA2OSwgMTEwLCAyNTEsIDEzOSwgMjAyLCAxMDMsIDIxNywgMTA5LCAxMTAsIDI1MSwgMTM5LCAyMDIsIDEwMywgCi0gICAgMjM4LCAyNTQsIDExMCwgMjUxLCAxMzksIDIwOCwgMjA5LCAxMTAsIDI1MSwgMTM5LCAyMTYsIDcwLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMDIsIDEwMSwgMTEwLCAyNTEsIDEzOSwgMjE5LCA2MSwgMTEwLCAyNTEsIDEzOSwgMjAzLCAyMywgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxMTUsIDExMCwgMjUxLCAxMzksIDIzOCwgMTY3LCAxMTAsIDI1MSwgMTM5LCAyMzgsIDE2OCwgMjIzLCAyMDgsIAotICAgIDExMCwgMjUxLCAxMzksIDIzOCwgMTY1LCAxMTAsIDI1MSwgMTM5LCAyMTcsIDExMCwgMjE5LCA5MCwgMTEwLCAyNTEsIDEzOSwgCi0gICAgMjA5LCAxNTgsIDIzOCwgMTgzLCAxMTAsIDI1MSwgMTM5LCAyMTksIDQwLCAxMTAsIDI1MSwgMTM5LCAyNTAsIDQzLCAyMzcsIAotICAgIDE1MiwgMTEwLCAyNTEsIDEzOSwgMjIzLCAyMTgsIDExMCwgMjUxLCAxMzksIDIyNSwgMTQ1LCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMjQsIDIyOSwgMTEwLCAyNTEsIDEzOSwgMjI0LCAyMzAsIDIyOSwgMTkyLCAxMTAsIDI1MSwgMTM5LCAyNDQsIDE1MSwgCi0gICAgMTEwLCAyNTEsIDEzOSwgMjE3LCAxMjEsIDExMCwgMjUxLCAxMzksIDIwOSwgMTU4LCAyMTcsIDEwNCwgMTEwLCAyNTEsIAotICAgIDEzOSwgMjAzLCAzMywgMjQ4LCAxMjMsIDIwMiwgMjMzLCAxMTAsIDI1MSwgMTM5LCAyMjAsIDQzLCAxMTAsIDI1MSwgMTM5LCAKLSAgICAyMzEsIDY5LCAxMTAsIDI1MSwgMTM5LCAyNDQsIDUzLCAxMTAsIDI1MSwgMTM5LCAyMDIsIDI4LCAxMTAsIDEzMSwgMjI1LCAKLSAgICA3NSwgMjQ2LCA2MSwgMTEwLCAyMTgsIDYzLCAyMTMsIDE1LCAxMTAsIDIxOCwgNjMsIDIzNywgODIsIDIxNCwgMTU2LCAxMTAsIAotICAgIDIxOCwgNjMsIDIzNywgODIsIDIxOSwgNTQsIDExMCwgMjE4LCA2MywgMjM3LCA4MiwgMjE3LCAxMTQsIDExMCwgMjE4LCA2MywgCi0gICAgMjM2LCAyMzIsIDExMCwgMjE4LCA2MywgMjA4LCAxMSwgMTEwLCAyMTgsIDYzLCAyMTQsIDE1NiwgMTEwLCAyMTgsIDYzLCAKLSAgICAyMTksIDU0LCAxMTAsIDIxOCwgNjMsIDIxNywgMTE0LCAxMTAsIDIxOCwgNjMsIDIzNiwgMTI4LCAxMTAsIDIxOCwgNjMsIAotICAgIDIzNiwgMTI5LCAyMzcsIDg0LCAzNSwgMjA2LCA1OSwgMTEwLCAyMTgsIDYzLCAyMTcsIDUxLCAxMTAsIDIxOCwgNjMsIDI0NCwgCi0gICAgMTk4LCAyMTksIDI0NSwgMjI1LCAxMDUsIDExMCwgMjE4LCA2MywgMjI0LCAyMTksIDExMCwgMjE3LCAxNzksIDIyNSwgMTAyLCAKLSAgICAxMTAsIDIxOCwgNjMsIDIxNiwgMjAwLCAxMTAsIDIxNywgMTc5LCAyMTksIDYzLCAxMTAsIDIxOCwgNjMsIDIxMywgMCwgCi0gICAgMjQzLCA4NSwgMTEwLCAyMTgsIDYzLCAyMTIsIDEyNCwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgMjEyLCA4LCAyMTksIDU2LCAKLSAgICAxMTAsIDEzMSwgMjA2LCAyMjEsIDI0MywgODUsIDExMCwgMTMxLCAyMjYsIDI1MSwgMjQzLCA4NSwgMTEwLCAyMTcsIDE3OSwgCi0gICAgMjIxLCA0MSwgMjM3LCAxNTEsIDExMCwgMjE4LCA2MywgMjE3LCAxMTUsIDIxNywgMTA5LCAxMTAsIDEsIDI1MSwgMzAsIAotICAgIDExMCwgMSwgMjQ4LCAxMDgsIDExMCwgMSwgMjM4LCA2NywgMTEwLCAxLCAyNDQsIDE3OCwgMTEwLCAxLCAyMzcsIDY3LCAKLSAgICAxMTAsIDEsIDIwNiwgNTksIDExMCwgMSwgMjAyLCA5NSwgMTEwLCAxLCAyMzcsIDIxLCAxMTAsIDEsIDIwOSwgMTMyLCAxMTAsIAotICAgIDEsIDIwMiwgMjM2LCAxMTAsIDEsIDQ2LCAyMzAsIDIyLCAxMTAsIDEsIDIzMCwgMjIsIDExMCwgMSwgMjI4LCAyMCwgMTEwLCAKLSAgICAxLCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjI0LCAyNDcsIDExMCwgMSwgNDYsIDIyMSwgNDAsIDExMCwgMSwgMjIxLCA0MCwgCi0gICAgMTEwLCAxLCAyMTQsIDI0OSwgMTEwLCAxLCAyNTAsIDMsIDExMCwgMSwgNDYsIDIxOSwgMzQsIDExMCwgMSwgMjE5LCAzNCwgCi0gICAgMTEwLCAxLCA0NiwgMjA4LCAxNSwgMTEwLCAxLCAyMDgsIDE1LCAxMTAsIDEsIDIxNywgNzQsIDExMCwgMSwgMjE2LCA5MSwgCi0gICAgMTEwLCAxLCAyMTIsIDI1NSwgMTEwLCAxLCAyMDksIDIwMywgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjA2LCA1OSwgMTEwLCAKLSAgICAzMiwgMjAzLCA5LCAyMDYsIDYwLCAyMDIsIDIzNiwgMTEwLCAzMiwgMjAzLCA5LCA1MiwgMjAyLCAyMzYsIDExMCwgMjE3LCAKLSAgICAxNzksIDIzOCwgMTY3LCAxMTAsIDIxNywgMTc5LCAyMzgsIDE2NSwgMTAsIDQyLCA1NCwgMTAsIDIsIDIxNCwgMjQyLCAxMCwgCi0gICAgMjM5LCAxNzAsIDIyNSwgODgsIDEwLCAyLCAyMTUsIDI0LCAxMCwgMiwgMjE0LCAyNDUsIDEwLCA0MiwgMTMxLCA1NSwgMjUwLCAKLSAgICAxNDAsIDI0NSwgMTA2LCAyMTUsIDIwNCwgMjUwLCAxNDAsIDIzOSwgMTQwLCAyMTUsIDIwNCwgMTAsIDIxNiwgMTY1LCAyNTAsIAotICAgIDE0MCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjUwLCAxNDAsIDIxOCwgMjQ3LCAyMDksIDE1MywgMjA5LCAzNywgNTQsIAotICAgIDI1MSwgODYsIDU0LCAxMCwgMjQ1LCAyMzMsIDEwLCAyNDQsIDEzOCwgMjEzLCAxMzAsIDEwLCAyMTgsIDY1LCAyMDYsIDQwLCAKLSAgICA1NCwgMTAsIDIsIDIyNCwgOTUsIDEwLCAyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODYsIDEwLCAyLCAyNTEsIDMzLCAyNTAsIAotICAgIDY0LCAxMCwgMiwgMjE2LCAxOTgsIDI1MSwgMzIsIDEwLCAyLCAyMTYsIDIwNiwgMjUxLCAxMiwgMjUwLCAyMTAsIDEwLCAyLCAKLSAgICAyMDksIDI0MCwgMTAsIDUsIDEzOCwgMjA5LCAyNTEsIDEwLCA1LCAxMzgsIDMyLCAxMzcsIDMsIDIyOCwgMjksIDMsIDIwMywgCi0gICAgNDcsIDEwLCA1LCAxMzgsIDIwMiwgMTA3LCAxMCwgNSwgMjQwLCA3MSwgMTAsIDUsIDI0NCwgMTcyLCAxMCwgNSwgMjI5LCAKLSAgICAyMjksIDEwLCAyMTMsIDE0MywgMTAsIDEsIDgyLCAxMCwgMjA4LCA3MCwgNzAsIDIxNywgMTc5LCA4MiwgMTAsIDIxNywgNDcsIAotICAgIDgyLCAxMCwgMSwgMjI5LCAyMzMsIDIwMywgNDcsIDEwLCAxLCAyMzcsIDEyNywgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIAotICAgIDU1LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAKLSAgICAxMzcsIDMsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDg5LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyNTEsIDMwLCAxMCwgMSwgCi0gICAgMjQ4LCAxMzgsIDEwLCAxLCAyMDksIDE3MCwgMjI1LCA5OCwgMTAsIDEsIDIwOSwgMTY5LCAxMCwgMSwgMjA5LCA4OCwgMTAsIAotICAgIDEsIDIzMCwgMTU4LCAxMCwgMSwgMjM3LCAxNDgsIDEwLCAxLCAyMjksIDE0MCwgMTAsIDEsIDI0NCwgMTg0LCAxMCwgMSwgCi0gICAgMjA5LCAxMDAsIDEwLCAxLCAyMTYsIDEyMiwgMTAsIDEsIDIwMiwgMTA3LCAxMCwgMSwgMjE0LCAxNjEsIDEwLCAxLCAyMTMsIAotICAgIDM5LCAxMCwgMSwgMjE1LCAyOCwgMTAsIDEsIDI0NCwgMjA3LCAxMCwgMSwgMjA5LCAyNTEsIDEwLCAxLCAyMDIsIDExMCwgCi0gICAgMTAsIDEsIDI1MSwgNTksIDEwLCAxLCAyMzgsIDExNCwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAKLSAgICAyMjksIDE5MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjQwLCA3NSwgODksIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMTI2LCAxODcsIDU1LCAxMCwgCi0gICAgMjA5LCAyMDksIDEwLCAxLCAyNDAsIDQ3LCAxMCwgMSwgMjE3LCAxMTksIDEwLCAxLCAyMzAsIDIyLCAxMCwgMSwgMjI4LCAKLSAgICAyOCwgMTAsIDEsIDIyNSwgNSwgMTAsIDEsIDIyMSwgMTc4LCAxMCwgMSwgMjM3LCA0MywgMTAsIDEsIDIwNCwgNzAsIDEwLCAKLSAgICAxLCAxMzcsIDIyNSwgMTI5LCAxMCwgMSwgMjAzLCA0NywgMTAsIDI0MCwgNjksIDEwLCAyNDQsIDE3MCwgMTAsIDIyOSwgCi0gICAgMjI3LCAxMCwgMjQwLCA3MSwgMTAsIDI0NCwgMTcyLCAxMCwgMjI5LCAyMjksIDEwLCAyMTMsIDgwLCAxMCwgMjEwLCAyMjIsIAotICAgIDEwLCAyMjUsIDE2NCwgNTUsIDEwLCAyMzcsIDEyOCwgNTUsIDEwLCAyMzcsIDEyOCwgNTYsIDEwLCAyMTAsIDI0NiwgMjUxLCAKLSAgICAzMCwgMTAsIDIzMCwgMjM5LCAyNDQsIDE3MiwgMTAsIDEzMSwgMjIxLCAxNzksIDIzOCwgODUsIDEwLCAyMDEsIDI0OCwgMTAsIAotICAgIDIyLCAyLCA1LCAyMDYsIDE2NSwgNTUsIDEwLCAyMiwgMiwgMjMwLCAyMzksIDUsIDIwNiwgMTY1LCA1NSwgMTAsIDIyLCAyLCAKLSAgICA3MCwgNTYsIDEwLCAyMTYsIDczLCAyNDQsIDE3MiwgMTAsIDI0MCwgNzIsIDMsIDEyMCwgMjQzLCA4MywgMTAsIDIwNCwgNzIsIAotICAgIDIzNywgMTI4LCA1NiwgMjUwLCAxNDAsIDE3LCAyMDIsIDg0LCAyNTAsIDE0MCwgMTcsIDEwNSwgMjUwLCAxNDAsIDE3LCAKLSAgICAxMDgsIDI1MCwgMTQwLCAxNywgMTQ3LCAyNTAsIDE0MCwgMTcsIDE0OSwgMjUwLCAxNDAsIDE3LCAxNzAsIDI1MCwgMTQwLCAKLSAgICAxNywgMTk1LCAyNTAsIDE0MCwgMTcsIDIxMywgMTExLCAyNTAsIDE0MCwgMTcsIDE5OSwgMjUwLCAxNDAsIDE3LCAyMjIsIAotICAgIDYzLCAxMCwgMjE4LCAyNDYsIDU0LCAxMCwgMjQ0LCA2OCwgMjEzLCAxMzAsIDEwLCAyMDksIDM1LCAyMTMsIDEzMCwgMTAsIAotICAgIDIzOSwgMjMzLCAyMTgsIDYxLCAyMTEsIDk0LCAxMCwgMSwgMjQzLCA4NCwgMjQ4LCAxMzgsIDEwLCAxLCAyNDMsIDg0LCAKLSAgICAyMTcsIDExOSwgMTAsIDEsIDIxMCwgMTk5LCAyNTEsIDMwLCAxMCwgMSwgMTM3LCAyMDQsIDg3LCAxMCwgMSwgMTM3LCAzLCAKLSAgICAyMDQsIDcyLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAxMzcsIDMsIDIwNCwgNzIsIDIzNywgMTI4LCA1NiwgMTAsIDEsIDEzOCwgCi0gICAgMjM3LCAxMjcsIDEwLCAxLCAxMzgsIDIzNywgMTI4LCAyNTEsIDMwLCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjA0LCA3MCwgCi0gICAgMTAsIDEsIDEwNiwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTM4LCAyMzcsIDEyOCwgMjAzLCA0NywgMTAsIDEsIDIwNywgCi0gICAgMjMzLCAxMCwgMSwgMjA3LCAyMzEsIDEwLCAxLCAyNDgsIDE0OCwgMTAsIDEsIDIwOSwgMTcwLCAzLCAyMTUsIDI1MiwgMTAsIAotICAgIDEsIDIwOSwgMTcwLCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyMTksIDE2LCAxMCwgMSwgMjA5LCAxNjcsIAotICAgIDEwLCAxLCAyNDgsIDEzNiwgMTAsIDEsIDE1MSwgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTUxLCAzLCAxMjAsIDE4NywgCi0gICAgODAsIDU1LCAxMCwgMSwgMjIwLCAyNTQsIDEwLCAxLCAyNDIsIDUsIDEwLCAxLCAxNTEsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwOSwgMTkxLCAxMCwgMSwgMjA5LCAxODksIDEwLCAxLCAyNDQsIDExNSwgMTAsIDEsIDI0NCwgMTg1LCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDI0NCwgMTg1LCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDE4NSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNSwgCi0gICAgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE5MSwgMTAsIDEsIDI0NCwgMTE3LCAxMCwgMSwgMjQyLCAzMywgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgODcsIDI0MiwgNjgsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDEwLCAKLSAgICAxLCAyMTUsIDE3NywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMTUsIAotICAgIDI1MiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA3MCwgNTYsIDEwLCAxLCAyMTYsIDEyMywgMywgNSwgMjA2LCAxNjUsIDU2LCAxMCwgCi0gICAgMSwgMjE2LCAxMjMsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDcwLCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAxMjAsIDE4NywgCi0gICAgNTUsIDEwLCAxLCAyMzAsIDE1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDEsIDIxNCwgCi0gICAgMTYyLCAzLCA3MCwgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTQsIDE2MiwgMywgMTI2LCAxODcsIDU2LCAxMCwgCi0gICAgMSwgMjE0LCAxNjIsIDMsIDEyNiwgMTg3LCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIxNSwgMjksIDMsIAotICAgIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDIxNSwgMjksIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIwOSwgMjUyLCAzLCAxMjYsIAotICAgIDE4NywgNTUsIDEwLCAxLCAyNTEsIDYwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMSwgCi0gICAgMjQwLCA0OCwgMywgNzAsIDIyNCwgNSwgNTYsIDEwLCAxLCAyNDAsIDQ4LCAzLCA3MCwgNTYsIDEwLCAxLCAyMDYsIDQ4LCAKLSAgICAxMCwgMSwgMjQwLCA0OCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjE5LCAxNCwgMTAsIDEsIDIxNywgMTIwLCAzLCA3MCwgCi0gICAgNTUsIDEwLCAxLCAyMTcsIDEyMCwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjI5LCAxODksIDEwLCAxLCAyMTAsIDE2OSwgCi0gICAgMjMwLCAyMiwgMTAsIDEsIDIzMCwgMjMsIDMsIDIxNSwgMjUyLCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU1LCAxMCwgMSwgCi0gICAgMjIyLCAyMDUsIDEwLCAxLCAyMzAsIDIzLCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MSwgMTAsIDEsIDIzOCwgCi0gICAgMjUyLCAzLCAyMTUsIDI1MiwgMTAsIDEsIDIyMiwgMTI2LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyMCwgMTg3LCA1NiwgMTAsIAotICAgIDEsIDIzNywgMjE3LCAxMCwgMSwgMjM4LCAyNTIsIDMsIDEyNiwgMTg3LCA1NSwgMTAsIDEsIDIyOCwgMjksIDMsIDUsIDIwNiwgCi0gICAgMTY0LCAxMCwgMSwgMjI4LCAyOSwgMywgNzAsIDU1LCAxMCwgMSwgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgCi0gICAgMjI4LCAyOSwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjIxLCAxNzksIDMsIDcwLCA1NiwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICAyMzgsIDg1LCAxMCwgMSwgMjE1LCAyMzAsIDEwLCAxLCAyMjEsIDE3OSwgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjEsIDE3OSwgCi0gICAgMywgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjQzLCAxMDksIDEwLCAxLCAyMDksIDE5MiwgMywgNzAsIDU1LCAKLSAgICAxMCwgMSwgMjM3LCA0NCwgMywgODksIDU1LCAxMCwgMSwgMjM3LCA0NCwgMjM4LCAzNiwgMTAsIDEsIDIzNywgNDQsIDIzOCwgCi0gICAgMzcsIDMsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDIwOSwgMTcwLCAyMjUsIDk5LCAyMzgsIDM2LCAxMCwgMSwgMjA0LCA3MSwgCi0gICAgMywgMjE1LCAyNTIsIDEwLCAxLCAyMjksIDc2LCAyMjAsIDczLCAxMCwgMSwgMjIwLCA3MywgMTAsIDEsIDY4LCAxMCwgMSwgCi0gICAgMjAyLCAyMTMsIDEwLCAxLCAyMjksIDc2LCAyMDIsIDIxMywgMTAsIDEsIDIwNCwgNzEsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIAotICAgIDEsIDIwNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCAyMDMsIDQ3LCAxMCwgMSwgODksIDMsIDIwOSwgMjQ4LCAxMCwgMSwgODksIAotICAgIDMsIDUsIDIwNiwgMTY0LCAxMCwgMSwgMjA0LCA3MSwgMywgNzAsIDU1LCAxMCwgMSwgNzQsIDEwLCAxLCA4OSwgMywgMTI2LCAKLSAgICAxODcsIDU2LCAxMCwgMSwgODksIDI0OCwgMjIzLCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMTAsIDEsIDI1MSwgMTA5LCAxMCwgNSwgMTM4LCAzMiwgMjE1LCAyOSwgMywgMjI4LCAyOSwgCi0gICAgMywgMTM3LCAyMjUsIDEyOSwgMTAsIDUsIDEzOCwgMzIsIDIxNywgMTIwLCAzLCAyMjgsIDI5LCAzLCAxMzcsIDIyNSwgMTI5LCAKLSAgICAxMCwgNSwgMTM4LCA4MywgODEsIDE4LCAxMCwgNSwgMTM4LCAyMjgsIDI5LCAyNTEsIDMwLCAxMCwgNSwgMTM4LCAyMzAsIAotICAgIDE1OCwgMTAsIDUsIDEzOCwgMTI2LCAyNDMsIDgzLCAxMCwgNSwgMTM4LCAyMTQsIDE2MSwgMTAsIDI0MSwgODQsIDc2LCAKLSAgICAyNTAsIDcsIDEwLCAyMTEsIDkwLCA3NiwgMjE1LCAxNDMsIDI0MSwgMTIzLCAyMzYsIDIyNywgMTAsIDUsIDEzOCwgMjE1LCAKLSAgICAxODksIDIwMiwgODQsIDEwLCA1LCAxMzgsIDIwNiwgMjE5LCAyMTYsIDE0MiwgMjAyLCA4NCwgMTAsIDUsIDEzOCwgMjQzLCAKLSAgICA4NCwgMjM3LCA2NSwgNzYsIDIyOSwgMTQwLCAxMCwgNSwgMTM4LCA4MywgNjQsIDE4LCAxMCwgNSwgMTI0LCAyMTQsIDE2MSwgCi0gICAgMTAsIDUsIDEzOCwgMjI1LCAxNjUsIDEwLCA1LCAyMDQsIDcwLCAxMCwgNSwgMjAzLCA0NywgMTAsIDUsIDEzOCwgMjAzLCAKLSAgICA0NywgMTAsIDUsIDEzOCwgMjIxLCAxNzgsIDEwLCAyMTgsIDk3LCA3NiwgMjE1LCAxNCwgMTAsIDI0MSwgOTQsIDI0NiwgCi0gICAgMjE4LCAxMjQsIDIxMSwgNjEsIDEwLCAyNDEsIDk0LCAyNDYsIDIxOCwgMTM4LCAyMTEsIDYxLCAxMCwgMjE1LCAxODksIAotICAgIDEzOCwgMjExLCA2MiwgMywgMjQwLCA4LCAyNDYsIDIxNywgMTAsIDUsIDEyNCwgMjI1LCA1LCAxMCwgMSwgMjQ0LCAxODUsIAotICAgIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzAsIDIzOSwgMjA2LCAxNjQsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDIwMiwgODQsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEwNSwgMjQwLCAyMDIsIDI1MCwgMTQwLCAKLSAgICAxNywgMTA4LCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxNDcsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDE0OSwgMjQwLCAKLSAgICAyMDIsIDI1MCwgMTQwLCAxNywgMTcwLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTUsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDIxMywgMTExLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxOTksIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIyMiwgCi0gICAgNjMsIDEwLCAxLCAyMTMsIDQwLCAzLCA3MCwgNTYsIDEwLCAxLCAyNDQsIDIwOCwgMywgNzAsIDU2LCAxMCwgMSwgMjM4LCAKLSAgICAxMTUsIDMsIDcwLCA1NiwgMTAsIDIsIDIxMiwgMTIzLCAyNTAsIDIzNSwgMTAsIDIsIDIxMiwgMTIzLCAyMTgsIDI3LCAyMjQsIAotICAgIDI0MCwgMTAsIDEsIDIzNywgNDQsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMjEwLCA4OSwgMjQxLCA4NCwgNzYsIDIxOSwgCi0gICAgODgsIDIxMCwgODksIDIxMCwgMTk1LCAyMzksIDEwMiwgMjExLCA2MSwgMjEwLCA4OSwgMjEwLCAyNDgsIDIzOSwgMTAyLCAKLSAgICAyMTEsIDYxLCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDIsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MiwgMjEwLCAKLSAgICA4OSwgMjM2LCAxMDYsIDI0NSwgMjQyLCAyMTAsIDg5LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIxMCwgODksIAotICAgIDI0NSwgMjQzLCAyMTIsIDY4LCAyMTYsIDE2LCAyMTAsIDg5LCAyMTAsIDE5NSwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIyNywgCi0gICAgMjIyLCAyMTAsIDg5LCAyMTAsIDI0OCwgMjQ1LCAyNDMsIDIxMiwgNjgsIDIxNiwgMTYsIDIxMCwgODksIDI0NSwgMTg2LCAKLSAgICAyMTAsIDg5LCAyMzcsIDg5LCAyMjAsIDkxLCAyMTAsIDg5LCAyMzcsIDg5LCAyMjQsIDIxNywgMjEwLCA4OSwgMjM3LCA4OSwgCi0gICAgMjUwLCA2MSwgMjEwLCA4OSwgMjUxLCAxNDYsIDgyLCAyMTAsIDg5LCAxLCAyNTEsIDM1LCAyMTAsIDg5LCAxLCAyMTAsIAotICAgIDE5OSwgMjUxLCAzNSwgMjEwLCA4OSwgMSwgMjQ4LCAxMDUsIDIxMCwgODksIDEsIDIzOCwgMjQxLCAyMTAsIDg5LCAxLCAKLSAgICAyMzgsIDI0MiwgMjM4LCAyMTksIDIxMCwgODksIDEsIDI0NCwgMTgxLCAyMTAsIDg5LCAxLCAyNDMsIDg0LCAyNDQsIDE4MiwgCi0gICAgMjE1LCAyNDYsIDIxMCwgODksIDEsIDIzNywgNjcsIDIxMCwgODksIDEsIDIwNCwgNzAsIDIxMCwgODksIDEsIDIwMiwgMTA3LCAKLSAgICAyMTAsIDg5LCAxLCAyMzcsIDE5LCAyMTAsIDg5LCAxLCAyMDksIDEyOCwgMjEwLCA4OSwgMSwgMjA5LCAxMjksIDIzOCwgCi0gICAgMjE5LCAyMTAsIDg5LCAxLCAyMDIsIDIwMCwgMjEwLCA4OSwgMSwgMjAyLCAyMDEsIDIzNywgNjcsIDIxMCwgODksIDEsIAotICAgIDIyOSwgMjUwLCAyMTAsIDg5LCAxLCAyMjgsIDI3LCAyMTAsIDg5LCAxLCAyMjQsIDExMiwgMjEwLCA4OSwgMSwgMjIxLCA0MCwgCi0gICAgMjEwLCA4OSwgMSwgMjEzLCAxMzYsIDIxMCwgODksIDEsIDQ2LCAyMTMsIDEzNiwgMjEwLCA4OSwgMSwgNzQsIDIxMCwgODksIAotICAgIDEsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNiwgNzMsIDIxOSwgMzQsIDIxMCwgODksIDEsIDIxNSwgMjYsIDIxMCwgODksIAotICAgIDEsIDIxNywgMTEzLCAyMTAsIDg5LCAxLCAyMTUsIDI0NiwgMjEwLCA4OSwgMSwgMjEyLCAyNTUsIDIxMCwgODksIDEsIDIwOSwgCi0gICAgMjAxLCAyMTAsIDg5LCAxLCAyMTgsIDIzMSwgMjQ4LCA5MiwgMjEwLCA4OSwgMSwgMjE4LCAyMzEsIDIzOCwgMTEyLCAyMTAsIAotICAgIDg5LCAxLCAyMTgsIDIzMSwgMjQzLCAyNTIsIDIxMCwgODksIDIxNywgMTkyLCA1NSwgMjEwLCA4OSwgMjE3LCAxOTIsIDU2LCAKLSAgICAyMTAsIDg5LCAyMTcsIDE5MiwgMjQyLCA4MiwgMjEwLCA4OSwgMjAyLCAxMSwgNTUsIDIxMCwgODksIDIwMiwgMTEsIDU2LCAKLSAgICAyMTAsIDg5LCAyMDIsIDExLCAyNDIsIDgyLCAyMTAsIDg5LCAyMTYsIDE2MSwgNTUsIDIxMCwgODksIDIxNiwgMTYxLCA1NiwgCi0gICAgMjEwLCA4OSwgMjQyLCA4MywgMjAyLCAxOCwgMjM2LCAxMDUsIDIxMCwgODksIDI0MiwgODMsIDIwMiwgMTgsIDI1MCwgMjExLCAKLSAgICAyMTAsIDg5LCAyMzcsIDcwLCA1NSwgMjEwLCA4OSwgMjM3LCA3MCwgNTYsIDIxMCwgODksIDIzNywgNjksIDI0MiwgODIsIAotICAgIDIxMCwgODksIDI0MSwgMTEsIDU1LCAyMTAsIDg5LCAyNDEsIDExLCA1NiwgMjEwLCA4OSwgMjE1LCAxMDksIDIxMCwgODksIAotICAgIDI0MCwgNDEsIDI0MywgODUsIDIxMCwgODksIDIxNywgMjUsIDIxMCwgODksIDIxNSwgMTM3LCAyMTAsIDg5LCAxMjAsIDgwLCAKLSAgICAxODcsIDU1LCAyMTAsIDg5LCAxMjAsIDgwLCAxODcsIDU2LCAyMTAsIDg5LCAxMjYsIDE4NywgNTUsIDIxMCwgODksIDEyNiwgCi0gICAgMTg3LCA1NiwgMjEwLCA4OSwgMjIwLCA4OSwgMjI3LCAxMTUsIDU1LCAyMTAsIDg5LCAyMjAsIDg5LCAyMjcsIDExNSwgNTYsIAotICAgIDIxMCwgODksIDIyMywgMTk0LCAyMTAsIDg5LCAyNDgsIDIyMiwgMjEwLCA4OSwgMSwgMjEyLCA0LCAyMDIsIDc4LCAyMTAsIAotICAgIDg5LCAxLCAyMTIsIDQsIDIyOSwgMTMzLCAyMTAsIDg5LCAxLCAyMTIsIDQsIDI0MCwgNjAsIDEwLCAxLCAyNDgsIDEzOSwgMywgCi0gICAgMTI2LCAxODcsIDIzNiwgNTUsIDU2LCAxMCwgMSwgMjQ4LCAxMzksIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDEyNiwgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCAyNDgsIDEyNiwgMjUsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI0OCwgMTM5LCAzLCAKLSAgICAxMjAsIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyNDgsIDEzOSwgMywgMjMwLCAyMzksIDUsIDIwNiwgCi0gICAgMTY1LCA1NiwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NCwgMTAsIDEsIDE1MSwgMywgMTIwLCAxODcsIDU1LCAKLSAgICAxMCwgMSwgMTUxLCAzLCAxMjYsIDE4NywgMjE4LCA1OSwgMTc3LCA1NiwgMTAsIDEsIDI0NCwgMTg1LCAzLCAxMjAsIDE4NywgCi0gICAgMjA1LCAyNDQsIDI0OCwgMTI2LCAyNSwgNSwgMjA5LCAyNTEsIDEwLCAxLCAyNDQsIDE4NSwgMywgMjMwLCAyMzksIDUsIAotICAgIDIwNiwgMTY1LCA1NiwgMTAsIDEsIDIxNiwgMTIzLCAzLCA5NSwgMTAsIDEsIDIxNCwgMTYyLCAzLCAyMzksIDE0NywgMTg3LCAKLSAgICA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyMCwgMTg3LCA1NSwgMTAsIDEsIDI1MSwgNjAsIDMsIDEyNiwgMTg3LCAyMTgsIAotICAgIDU5LCAxODMsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDI0MCwgNDgsIAotICAgIDMsIDEyMCwgMTg3LCA1NiwgMTAsIDEsIDI0MCwgNDgsIDMsIDEyNiwgMTg3LCAyMTgsIDU5LCAxNzcsIDU2LCAxMCwgMSwgCi0gICAgMjI5LCAxOTAsIDMsIDcwLCA1NSwgMTAsIDEsIDIyOSwgMTkwLCAzLCAxMjYsIDE4NywgNTUsIDEwLCAxLCAyMjksIDE5MCwgCi0gICAgMywgMTI2LCAxODcsIDIxOCwgNTksIDE3NywgNTYsIDEwLCAxLCA4MywgMywgNzAsIDU1LCAxMCwgMSwgODMsIDMsIDcwLCAKLSAgICA1NiwgMTAsIDEsIDIyMSwgMTc5LCAzLCAxMjAsIDE4NywgNTYsIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA5LCAyNTEsIAotICAgIDEwLCAxLCAyMjEsIDE3OSwgMywgNSwgMjA2LCAxNjQsIDEwLCAxLCAyMjgsIDI5LCAzLCAxNDIsIDEwLCAxLCAyMTYsIDEyMywgCi0gICAgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDIxNiwgMTIzLCAzLCAyMzcsIDEyOCwgNTUsIDEwLCAxLCAyMTQsIAotICAgIDE2MiwgMywgMTIwLCAxODcsIDIwNSwgMjQ0LCA1NSwgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCA1NiwgCi0gICAgMTAsIDEsIDE1MSwgMywgNSwgMTAsIDEsIDIwOSwgMjUyLCAyNSwgMTIwLCAyNDMsIDgzLCAxMCwgMSwgMjE0LCAxNjIsIDMsIAotICAgIDUsIDEwLCAxLCAyMDksIDI1MiwgMjUsIDEyMCwgMjQzLCA4MywgMTAsIDEsIDIxNiwgMTIzLCAzLCA1LCAxMCwgMSwgMjA5LCAKLSAgICAyNTIsIDI1LCAxMjAsIDI0MywgODMsIDEwLCAxLCAxNTEsIDMsIDUsIDEwLCAxLCAyMDksIDI1MiwgNTUsIDEwLCAxLCAxMzcsIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAxMzcsIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgCi0gICAgMTcsIDEyNiwgNTUsIDEwLCAxLCAyNDAsIDc1LCA4OSwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgMTIwLCA1NSwgMTAsIAotICAgIDEsIDI0MCwgNzUsIDg5LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMjQwLCA3NSwgODksIAotICAgIDMsIDI0MCwgMjAyLCAyNTAsIDE0MCwgMTcsIDIzOSwgMTQ3LCA1NiwgMTAsIDEsIDIwNCwgNzEsIDMsIDI0MCwgMjAyLCAKLSAgICAyNTAsIDE0MCwgMTcsIDEyMCwgNTUsIDEwLCAxLCAyMDQsIDcxLCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIAotICAgIDU1LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjAsIDU1LCAxMCwgMSwgODksIAotICAgIDI0OCwgMjI0LCAzLCAyNDAsIDIwMiwgMjUwLCAxNDAsIDE3LCAxMjYsIDU1LCAxMCwgMSwgMTUxLCAzLCAyNDAsIDIwMiwgCi0gICAgMjUwLCAxNDAsIDE3LCAyMzksIDE0NywgNTYsIDEwLCAxLCAyMTQsIDE2MiwgMywgMjQwLCAyMDIsIDI1MCwgMTQwLCAxNywgCi0gICAgMjM5LCAxNDcsIDU1LCAxMCwgMSwgMjE0LCAxNjIsIDMsIDIzMCwgMjM5LCAyMDYsIDE2NCwgMTAsIDEsIDIzMCwgMjMsIDMsIAotICAgIDEyMCwgMTg3LCA1NSwgMjA5LCAxMDUsIDEsIDIzNywgMTU3LCAyMDksIDEwNSwgMSwgMjEzLCA0OSwgMjA5LCAxMDUsIDEsIAotICAgIDIyMSwgMTc3LCAyMDksIDEwNSwgMSwgMjE2LCAyMTYsIDIwOSwgMTA1LCAxLCAyNDksIDMwLCAyMDksIDEwNSwgMSwgMjI3LCAKLSAgICAxNTgsIDIwOSwgMTA1LCAxLCAyMzAsIDM3LCAyMDksIDEwNSwgMSwgMjUxLCAxOSwgMjA5LCAxMDUsIDEsIDIwNiwgODQsIAotICAgIDIwOSwgMTA1LCAxLCAyMjUsIDQsIDIwOSwgMTA1LCAxLCAyNDAsIDEwNiwgMjA5LCAxMDUsIDEsIDI0MywgMjU1LCAyMDksIAotICAgIDEwNSwgMSwgMjA5LCAxMDcsIDIwOSwgMTA1LCAxLCAyMjgsIDEwOSwgMjA5LCAxMDUsIDEsIDIzOSwgNCwgMjA5LCAxMDUsIAotICAgIDEsIDIzOCwgNDIsIDIwOSwgMTA1LCAxLCAyMTQsIDE2MCwgMjA5LCAxMDUsIDEsIDI0NCwgMTM2LCAyMDksIDEwNSwgMSwgCi0gICAgMjAyLCA5OCwgMjA5LCAxMDUsIDEsIDIwOSwgMjAyLCAyMDksIDEwNSwgMSwgMjAzLCAxMTAsIDIwOSwgMTA1LCAxLCAyMTksIAotICAgIDQ3LCAyMDksIDEwNSwgMSwgMjMwLCAxNjYsIDIwOSwgMTA1LCAxLCAyNDYsIDE3MywgMjA5LCAxMDUsIDEsIDIwNywgMjQwLCAKLSAgICAyMDksIDEwNSwgMSwgMjM3LCAxMSwgMjA5LCAxMDUsIDEsIDIyOSwgMTQzLCAyMDksIDEwNSwgMSwgMjA5LCAxMDYsIDIwOSwgCi0gICAgMTA1LCAxLCAyMDIsIDExNCwgMjA5LCAxMDUsIDEsIDIxMywgMzgsIDIwOSwgMTA1LCAxLCAyMTUsIDMyLCAyMDksIDEwNSwgCi0gICAgMSwgMjQ0LCAyMTAsIDIwOSwgMTA1LCAxLCAxMzUsIDIwOSwgMTA1LCAxLCAyMDIsIDE3LCAyMDksIDEwNSwgMSwgMjUxLCAKLSAgICA1NiwgMjA5LCAxMDUsIDEsIDIzOCwgMTEzLCAyMDksIDEwNSwgMSwgMjE3LCAxMjMsIDIwOSwgMTA1LCAxLCAyMDQsIDEwOSwgCi0gICAgMjA5LCAxMDUsIDI1MSwgMTQ4LCAyMDksIDEwNSwgMjUxLCAyNDYsIDIwOSwgMTA1LCAyMzUsIDE2NSwgMjA5LCAxMDUsIAotICAgIDI0MSwgMTYwLCAyMDksIDEwNSwgMjA3LCAzMiwgMjA5LCAxMDUsIDIyMCwgMTcsIDIwOSwgMTA1LCAyNDEsIDE3MCwgMjA5LCAKLSAgICAxMDUsIDI0MCwgMTkzLCAyMDksIDEwNSwgMjIwLCA4OCwgMjA5LCAxMDUsIDIyMCwgOTYsIDIwOSwgMTA1LCAyMTAsIDIyMiwgCi0gICAgMjA5LCAxMDUsIDEsIDIyMywgMTA2LCAyMjEsIDI1NSwgMTcsIDIwMiwgODQsIDIyMSwgMjU1LCAxNywgMTA1LCAyMjEsIAotICAgIDI1NSwgMTcsIDEwOCwgMjIxLCAyNTUsIDE3LCAxNDcsIDIyMSwgMjU1LCAxNywgMTQ5LCAyMjEsIDI1NSwgMTcsIDE3MCwgCi0gICAgMjIxLCAyNTUsIDE3LCAxOTUsIDIyMSwgMjU1LCAxNywgMjEzLCAxMTEsIDIyMSwgMjU1LCAxNywgMTk5LCAyMjEsIDI1NSwgCi0gICAgMTcsIDIyMiwgNjMsIDIyMSwgMjU1LCAxLCA2MywgMjIxLCAyNTUsIDEsIDI0MSwgMTYxLCAyMjEsIDI1NSwgMSwgNzUsIAotICAgIDIyMSwgMjU1LCAxLCA3NCwgMjIxLCAyNTUsIDEsIDY4LCAyMjEsIDI1NSwgMSwgMjIwLCAxOCwgMjIxLCAyNTUsIDEsIDc4LCAKLSAgICAyMjEsIDI1NSwgMSwgMjQ0LCAxOTksIDIyMSwgMjU1LCAxLCAyMjMsIDE2MywgMjIxLCAyNTUsIDEsIDI0OSwgMzIsIDIyMSwgCi0gICAgMjU1LCAxLCAxODUsIDIyMSwgMjU1LCAxLCAyMTAsIDIyLCAyMjEsIDI1NSwgMSwgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAKLSAgICAyNDYsIDE5OSwgMjIxLCAyNTUsIDEsIDI0NCwgMjEyLCAyMjEsIDI1NSwgMSwgMjE2LCAyMjAsIDIyMSwgMjU1LCAxLCAyMTUsIAotICAgIDE4NSwgMjIxLCAyNTUsIDEsIDIxNSwgMzYsIDIyMSwgMjU1LCAxLCAyMzgsIDIwNywgMjIxLCAyNTUsIDEsIDI0MCwgMTA4LCAKLSAgICAyMjEsIDI1NSwgMSwgMTczLCAyMjEsIDI1NSwgMSwgMjI4LCAxMTMsIDIyMSwgMjU1LCAxLCAyMjMsIDExMSwgMjAzLCAyNTIsIAotICAgIDIyMSwgMjU1LCAxLCAxOTIsIDIyMSwgMjU1LCAxLCAyMjEsIDExLCAyMjEsIDI1NSwgMSwgMjAxLCAyMDEsIDIyMSwgMjU1LCAKLSAgICAxLCAxNTIsIDIyMSwgMjU1LCAxLCAyMDQsIDExMSwgMjIxLCAyNTUsIDEsIDE5OCwgMjIxLCAyNTUsIDEsIDIyMSwgMTIsIAotICAgIDIwMywgMjUyLCAyMjEsIDI1NSwgMSwgMjMwLCA5MywgMjMwLCAxODEsIDIyMSwgMjU1LCAxLCAyMzAsIDkzLCAyNDYsIDE5OSwgCi0gICAgMjIxLCAyNTUsIDEsIDIzMCwgOTMsIDIxNiwgMjIwLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMzgsIDIwOCwgMTYxLCAKLSAgICAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIxMiwgMjI4LCAyMTUsIDI0NSwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAyNDQsIDE5LCAyMDgsIDE2MSwgMjIxLCAyNTUsIDM5LCAxNjMsIDEzOCwgCi0gICAgMjA4LCAxNjEsIDIyMSwgMjU1LCAzOSwgMTYzLCAxMjQsIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDE2MywgMjE1LCAyNDUsIAotICAgIDIwOCwgMTYxLCAyMjEsIDI1NSwgMzksIDIyMywgNzEsIDgyLCAyMjEsIDI1NSwgMzksIDUyLCA3MCwgNTUsIDIyMSwgMjU1LCAKLSAgICAxMzgsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxMjQsIDE0MywgMjUwLCAxNjAsIDIyMSwgMjU1LCAxNiwgMjIwLCAxOSwgCi0gICAgMjQ0LCAzMywgMjIxLCAyNTUsIDE2LCAyMzgsIDIwNiwgMjIxLCAyNTUsIDI0NSwgMjMzLCAyMjEsIDI1NSwgMjQwLCAyMTIsIAotICAgIDgyLCAyMjEsIDI1NSwgMjI4LCA4NCwgMjE0LCAyNTIsIDEsIDI1MSwgMzcsIDIxNCwgMjUyLCAxLCAyNDgsIDUxLCAyMTQsIAotICAgIDI1MiwgMSwgMjM4LCAyNDAsIDIxNCwgMjUyLCAxLCAyNDQsIDE4MywgMjE0LCAyNTIsIDEsIDIzMCwgMTkyLCAyMTQsIDI1MiwgCi0gICAgMSwgMjQ5LCAzMCwgMjE0LCAyNTIsIDEsIDIwMiwgODcsIDIxNCwgMjUyLCAxLCAyMzAsIDIwMSwgMjE0LCAyNTIsIDEsIAotICAgIDIwOCwgMjAwLCAyMTQsIDI1MiwgMSwgMjAyLCAxODIsIDIxNCwgMjUyLCAxLCAyMzAsIDM4LCAyMTQsIDI1MiwgMSwgMjI4LCAKLSAgICAxMDYsIDIxNCwgMjUyLCAxLCAyMjQsIDExMiwgMjE0LCAyNTIsIDEsIDIyMSwgNDAsIDIxNCwgMjUyLCAxLCAyMTIsIDEyMSwgCi0gICAgMjE0LCAyNTIsIDEsIDIzMSwgNDksIDIxNCwgMjUyLCAxLCAyNDAsIDI2LCAyMTQsIDI1MiwgMSwgMjA4LCAxOCwgMjE0LCAKLSAgICAyNTIsIDEsIDIxNywgNDQsIDIxNCwgMjUyLCAxLCAyMTUsIDI0NiwgMjE0LCAyNTIsIDEsIDIxMywgNjYsIDIxNCwgMjUyLCAKLSAgICAxLCAyMTAsIDE3LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ5LCAyMTQsIDI1MiwgMTMxLCAyMzEsIDQ4LCAyMTQsIDI1MiwgCi0gICAgMTMxLCAyMjAsIDg0LCAyMTQsIDI1MiwgMTMxLCAyNDQsIDE5NywgMjE0LCAyNTIsIDY1LCAxLCAyNDEsIDQyLCAyMDIsIAotICAgIDE4MiwgMjE0LCAyNTIsIDEzMSwgMjQxLCA0MiwgMjAyLCAxODIsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NCwgMjE0LCAKLSAgICAyNTIsIDIyLCAyLCA3NCwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAxNjMsIAotICAgIDI1MiwgMjUsIDIxNCwgMjUyLCAyMiwgMiwgMjUyLCAyNSwgMjE0LCAyNTIsIDIyLCAyLCAyMTksIDE5NywgNjMsIDIxNCwgCi0gICAgMjUyLCAyMiwgMiwgMTYzLCA2MywgMjE0LCAyNTIsIDIyLCAyLCA2MywgMjE0LCAyNTIsIDY1LCAxLCAyMTIsIDIyOCwgNjMsIAotICAgIDIxNCwgMjUyLCAyMiwgMiwgMjEyLCAyMjgsIDYzLCAyMTQsIDI1MiwgMjIsIDIsIDE2MywgNjgsIDIxNCwgMjUyLCAyMiwgMiwgCi0gICAgNjgsIDIxNCwgMjUyLCA2NSwgMSwgNzUsIDIxNCwgMjUyLCAyMiwgMiwgMTYzLCA3NSwgMjE0LCAyNTIsIDIyLCAyLCA3NSwgCi0gICAgMjE0LCAyNTIsIDIyLCAyLCA3OCwgMjE0LCAyNTIsIDIyLCAyLCAyMTAsIDIyMiwgMjE0LCAyNTIsIDEzMSwgMjIyLCAyMjMsIAotICAgIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjIyLCAyMjMsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjUxLCA4MywgMjE0LCAyNTIsIDIxNywgCi0gICAgMTc5LCAyNTAsIDIyMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNDgsIDIwMiwgMjE0LCAyNTIsIDIxNywgMTc5LCAyNTAsIDQ0LCAKLSAgICAyMTQsIDI1MiwgMjE3LCAxNzksIDIxMiwgMjQzLCAyMTQsIDI1MiwgMjUxLCAxNDYsIDgyLCAyMTQsIDI1MiwgMjE3LCAxNzksIAotICAgIDIyNCwgMjUwLCAyMTcsIDgwLCAyMTQsIDI1MiwgMjE3LCAxNzksIDIwMiwgMjUsIDIxNCwgMjUyLCAyMTcsIDE3OSwgMjE3LCAKLSAgICA4MCwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDIsIDExMywgMjE0LCAyNTIsIDIxNywgMTc5LCAyMDcsIDE3MCwgMjE0LCAyNTIsIAotICAgIDIxNywgMTc5LCAyNTAsIDExMSwgMjE0LCAyNTIsIDIxNywgMTc5LCAyMTIsIDgsIDIyNSwgNzcsIDIxNCwgMjUyLCAyMTcsIAotICAgIDE3OSwgMjUwLCAyMDYsIDIyNSwgMTE4LCAxLCAyMzcsIDEzNCwgMjI1LCAxMTgsIDEsIDI1MSwgMjMyLCAyMjUsIDExOCwgMSwgCi0gICAgMjUxLCA4MSwgMjI1LCAxMTgsIDEsIDI1MSwgMTIyLCAyMjUsIDExOCwgMSwgMjUxLCA3MywgMjI1LCAxMTgsIDEsIDIwNiwgCi0gICAgMTg0LCAyMjUsIDExOCwgMSwgMjUwLCAxLCAyMjUsIDExOCwgMSwgMjMwLCAyMDEsIDIyNSwgMTE4LCAxLCAyNTAsIDQxLCAKLSAgICAyMjUsIDExOCwgMSwgMjUxLCA0MiwgMjI1LCAxMTgsIDEsIDI1MSwgNDcsIDIyNSwgMTE4LCAxLCAyNTEsIDM5LCAyMjUsIAotICAgIDExOCwgMSwgMjUwLCAyNDcsIDIyNSwgMTE4LCAxLCAyNTAsIDIzMSwgMjI1LCAxMTgsIDEsIDI1MCwgODEsIDIyNSwgMTE4LCAKLSAgICAxLCAyMzEsIDQ5LCAyMjUsIDExOCwgMSwgMjUwLCAxNzUsIDIyNSwgMTE4LCAxLCAyNTAsIDUxLCAyMjUsIDExOCwgMSwgCi0gICAgMjUwLCAxNDgsIDIyNSwgMTE4LCAxLCAyNTAsIDE0NCwgMjI1LCAxMTgsIDEsIDI1MCwgNzUsIDIyNSwgMTE4LCAxLCAyNTAsIAotICAgIDQ5LCAyMjUsIDExOCwgMSwgMjQyLCAxOCwgMjI1LCAxMTgsIDEsIDIzMCwgMzAsIDIyNSwgMTE4LCAxLCAyNTEsIDU5LCAKLSAgICAyMjUsIDExOCwgMjUxLCA4NywgODIsIDIyNSwgMTE4LCAyMDUsIDE4NywgODIsIDIyNSwgMTE4LCAyMzgsIDE3OSwgODIsIAotICAgIDIyNSwgMTE4LCAyMTcsIDE3OCwgMTAsIDEsIDI0OCwgMTM5LCAzLCA1LCAyMDYsIDE2NSwgNTYsIDEwLCAxLCAyNDgsIDEzOSwgCi0gICAgMywgMjM3LCAxMjgsIDU1LCAxMCwgMSwgMTg0LCAzLCAxMjAsIDE4NywgNTUsIDEwLCAxLCAyMDksIDI1MiwgMywgMTIwLCAKLSAgICAxODcsIDU1LCAxMCwgMSwgMjQwLCA0OCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMTI2LCAxODcsIDU1LCAxMCwgMSwgMjE3LCAKLSAgICAxMjAsIDMsIDcwLCA1NiwgMTAsIDEsIDIyOCwgMjksIDMsIDUyLCAxNDIsIDEwLCAxLCA4MywgMywgMTI2LCAxODcsIDU1LCAKLSAgICAxMCwgMSwgODksIDMsIDEyMCwgMTg3LCAyNDgsIDEyNiwgMjUsIDIzNywgMTI4LCA1NSwgMTAsIDEsIDg5LCAzLCAxMjAsIAotICAgIDE4NywgMjQ4LCAxMjYsIDI1LCA3MCwgNTUsIDEwLCAxLCAyMTYsIDEyMywgMywgMjI3LCAxNCwgMTAsIDEsIDIwNCwgNzEsIAotICAgIDMsIDcwLCAyMDQsIDQsIDEwLCAxLCAyMTUsIDIxNSwgMjAzLCA0NywgMTAsIDEsIDEyNCwgMjUxLCAzMCwgMTAsIDEsIDI0NCwgCi0gICAgMTg1LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMTUsIDI5LCAzLCAxMjYsIDE4NywgNTYsIDEwLCAxLCAyMzgsIDI1MiwgCi0gICAgMywgMjMwLCAyMzksIDk1LCAxMCwgMSwgMjExLCA1MywgMjA0LCA3MCwgMTAsIDEsIDIwMiwgMTA4LCAzLCAyMzAsIDIzOSwgCi0gICAgMjA2LCAxNjUsIDU1LCAxMCwgMSwgMjUxLCA2MCwgMywgMTI2LCAxODcsIDU2LCAxMCwgMSwgMjMwLCAyMywgMywgNzAsIDU2LCAKLSAgICAxMCwgMjA3LCAxNzQsIDI0NCwgMTczLCA1NiwgMTAsIDI0NSwgOTMsIDI0MCwgNzEsIDEwLCAyNDUsIDkzLCAyNDQsIDE3MiwgCi0gICAgMTAsIDI0NSwgOTMsIDIyOSwgMjI5LCAxMCwgMjQ1LCA5MywgMjQwLCA2OSwgMTAsIDI0NSwgOTMsIDI0NCwgMTcwLCAxMCwgCi0gICAgMjQ1LCA5MywgMjI5LCAyMjcsIDEwLCAxNDMsIDExOCwgNzAsIDU1LCAxMCwgMTQzLCAxMjAsIDE4NywgNTUsIDEwLCAxNDMsIAotICAgIDIyNywgMTUsIDU1LCAxMCwgMTQzLCAxMTgsIDcwLCA1NiwgMTAsIDE0MywgMTIwLCAxODcsIDU2LCAxMCwgMTQzLCAyMjcsIAotICAgIDE1LCA1NiwgMTAsIDE3MSwgMjQwLCA2OSwgMTAsIDE3MSwgMjQ0LCAxNzAsIDEwLCAxNzEsIDIyOSwgMjI3LCAxMCwgNSwgCi0gICAgMTM4LCAyMDQsIDcwLCAxMCwgMjQwLCA3MiwgMywgMjE1LCAyNTIsIDEwLCAyNDAsIDcyLCAzLCA3MCwgNTUsIDEwLCAyMjksIAotICAgIDIzMCwgMywgNzAsIDU2LCAxMCwgNDksIDI1MCwgOTUsIDU1LCAxMCwgNTAsIDI1MCwgOTUsIDU1LCAxMCwgNDksIDI1MCwgCi0gICAgOTUsIDU2LCAxMCwgNTAsIDI1MCwgOTUsIDU2LCAxMCwgNTIsIDUwLCAyNTAsIDk1LCA1NSwgMTAsIDUyLCA1MCwgMjUwLCAKLSAgICA5NSwgODcsIDMsIDI0MywgODUsIDEwLCA1MCwgMjUwLCA5NSwgODcsIDMsIDI0MywgODUsIDEwLCAyNDQsIDE3MywgMywgCi0gICAgMjQzLCA4NSwgMTAsIDEzMSwgMjEyLCAxNTQsIDIyMSwgMTc5LCAyMzgsIDg1LCA5MiwgMiwgMjMwLCAyMzksIDI0NywgNTIsIAotICAgIDkyLCAyLCAyNDcsIDUyLCA5MiwgMiwgMjUwLCAxODAsIDkyLCAyLCAyMDUsIDE5OSwgOTIsIDEsIDIxMiwgMjI4LCA2MywgCi0gICAgOTIsIDEsIDYzLCA5MiwgMSwgMjUyLCAyNSwgOTIsIDEsIDc1LCA5MiwgMSwgMjMxLCA4MywgOTIsIDEsIDY4LCA5MiwgMSwgCi0gICAgMjA2LCAxNzgsIDkyLCAxLCAxMjUsIDE0NiwgOTIsIDEsIDEyNSwgMTU5LCA5MiwgMSwgMjQ3LCA1NSwgNzQsIDkyLCAxLCAKLSAgICAyMTIsIDIyOCwgNzQsIDkyLCAxLCA3NCwgOTIsIDEsIDI1MSwgNjQsIDkyLCAxLCAyNDcsIDU1LCA3OCwgOTIsIDEsIDIxMiwgCi0gICAgMjI4LCA3OCwgOTIsIDEsIDc4LCA5MiwgMSwgMjUwLCAzNCwgOTIsIDEsIDE3MywgOTIsIDEsIDIyOSwgMTQ0LCA5MiwgMSwgCi0gICAgMjM5LCA4LCA5MiwgMSwgMjM4LCAxMTksIDkyLCAxLCAyMjIsIDIwMywgOTIsIDEsIDI0NywgOTIsIDkyLCAxLCAyNDYsIAotICAgIDE5OSwgOTIsIDEsIDIzMCwgMTgxLCA5MiwgMSwgMjMwLCAxNDksIDkyLCAxLCAyMjEsIDExLCA5MiwgMSwgMjA3LCAyNDEsIAotICAgIDkyLCAxLCAyMDcsIDIyOSwgOTIsIDEsIDI0NCwgMTIwLCA5MiwgMSwgMjQ0LCAxMDQsIDkyLCAxLCAyMjEsIDIyNywgOTIsIAotICAgIDEsIDIxMCwgMjIsIDkyLCAxLCAyMDksIDEwOCwgOTIsIDEsIDI0NCwgMjEyLCA5MiwgMSwgMjQ0LCAxLCA5MiwgMSwgMjAxLCAKLSAgICAyMDEsIDkyLCAxLCAyMjEsIDIwOSwgOTIsIDEsIDE4NSwgOTIsIDEsIDIxOCwgMjA4LCA5MiwgMSwgMjQ5LCAzMiwgOTIsIDEsIAotICAgIDI0OCwgOTgsIDkyLCAxLCAxOTIsIDkyLCAxLCAxOTgsIDkyLCAxLCAyMTYsIDIyMCwgOTIsIDEsIDIxNSwgMTg1LCA5MiwgMSwgCi0gICAgMjI4LCAxMTMsIDkyLCAxLCAyMjcsIDc3LCA5MiwgMSwgMjI3LCA2OCwgOTIsIDEsIDIwNiwgODYsIDkyLCAxLCAyMTMsIDkwLCAKLSAgICA5MiwgMSwgMjExLCAxNjQsIDkyLCAxLCAyMTUsIDM2LCA5MiwgMSwgMTUyLCA5MiwgMjIsIDIsIDIyMCwgNzMsIDkyLCAyMiwgCi0gICAgMiwgMjIwLCAxNiwgOTIsIDIsIDIyMSwgNTEsIDkyLCAyLCAyNTAsIDE3LCA5MiwgMjIsIDIsIDI1MiwgMjUsIDkyLCAyMiwgCi0gICAgMiwgNzUsIDkyLCAyMiwgMiwgMjMxLCA4MywgOTIsIDIyLCAyLCA2OCwgOTIsIDIyLCAyLCAyMDYsIDE3OCwgOTIsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgOTIsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc0LCA5MiwgMjIsIDIsIAotICAgIDIxMiwgMjI4LCA3NCwgOTIsIDIyLCAyLCA3NCwgOTIsIDIyLCAyLCAyNTEsIDY0LCA5MiwgMjIsIDIsIDI0NywgNTUsIDc4LCAKLSAgICA5MiwgMjIsIDIsIDIxMiwgMjI4LCA3OCwgOTIsIDIyLCAyLCA3OCwgOTIsIDIyLCAyLCAyNTAsIDM0LCA5MiwgMiwgMjA1LCAKLSAgICAyMDQsIDkyLCAyMiwgMiwgMjE3LCAyMjksIDc0LCA5MiwgMjIsIDIsIDI1MCwgMTMsIDkyLCAyMjAsIDM5LCA5MiwgMjExLCAKLSAgICA0MiwgMiwgMjA3LCAyNiwgOTIsIDIxMSwgNDIsIDIsIDI1MCwgMTgyLCA5MiwgMjM3LCAyNTQsIDI1MSwgMTM4LCA5MiwgCi0gICAgMjUxLCAxMjYsIDI1MSwgMTM4LCA5MiwgMjIsIDIsIDI0NywgNTUsIDE2MywgNzQsIDkyLCAyMiwgMiwgMjA3LCAyNCwgOTIsIAotICAgIDIyLCAyLCAyMDYsIDE3NywgOTIsIDEsIDIxNywgMTI2LCA5MiwgMSwgMjI5LCAxMjUsIDkyLCAxLCAyMzgsIDk0LCA5MiwgMSwgCi0gICAgMjAyLCAxMTYsIDkyLCAxLCAyNDQsIDEwOSwgOTIsIDEsIDIxNiwgNjEsIDkyLCAxLCAyNDAsIDEwOCwgOTIsIDEsIDIwMiwgCi0gICAgMTY4LCA5MiwgMSwgMTI1LCAyMTUsIDE4NiwgOTIsIDEsIDEyNSwgMjI3LCA3OCwgOTIsIDIyLCAyLCAxMjUsIDE1OSwgOTIsIAotICAgIDIyLCAyLCAxMjUsIDIyNywgNzgsIDkyLCAyNDQsIDE2NiwgOTIsIDUyLCAyNDQsIDE2NiwgOTIsIDE3LCAyMDIsIDg0LCA5MiwgCi0gICAgMTcsIDEwNSwgOTIsIDE3LCAxMDgsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNzAsIDkyLCAxNywgMTk1LCAKLSAgICA5MiwgMTcsIDIxMywgMTExLCA5MiwgMTcsIDE5OSwgOTIsIDE3LCAyMjIsIDYzLCA5MiwgMjUxLCAxNDYsIDU0LCA5MiwgMiwgCi0gICAgMTM4LCAyMTEsIDIyNywgMjQzLCA4NSwgOTIsIDEsIDI0NywgNTUsIDYzLCA5MiwgMSwgMjIwLCA3MywgOTIsIDEsIDIyMCwgCi0gICAgMTYsIDkyLCAxLCAyNTAsIDEzLCA5MiwgMSwgMjA3LCAyNCwgOTIsIDEsIDIwNiwgMTc3LCA5MiwgMSwgMjI1LCA4MiwgMjQ0LCAKLSAgICAxMjAsIDkyLCAxLCAyMDIsIDgwLCA5MiwgMSwgNzksIDE5OCwgOTIsIDEsIDIzOCwgMTU1LCA5MiwgMSwgMjMwLCAxMjksIAotICAgIDkyLCAxLCAyMzgsIDQ1LCAyMTEsIDYxLCA5MiwgMSwgMjQ0LCAxMTAsIDkyLCAxLCAyNDgsIDE5OCwgMTc5LCAyNTAsIDIwOSwgCi0gICAgMTc5LCAyLCAyNDcsIDUyLCAxNzksIDIsIDI1MCwgMTgwLCAxNzksIDIsIDIwNSwgMTk5LCAxNzksIDEsIDYzLCAxNzksIDEsIAotICAgIDI1MiwgMjUsIDE3OSwgMSwgNzUsIDE3OSwgMSwgMjMxLCA4MywgMTc5LCAxLCA2OCwgMTc5LCAxLCAyMDYsIDE3OCwgMTc5LCAKLSAgICAxLCAxMjUsIDE0NiwgMTc5LCAxLCAxMjUsIDE1OSwgMTc5LCAxLCA3NCwgMTc5LCAxLCAyNTEsIDY0LCAxNzksIDEsIDc4LCAKLSAgICAxNzksIDEsIDI1MCwgMzQsIDE3OSwgMSwgMTczLCAxNzksIDEsIDIyOSwgMTQ0LCAxNzksIDEsIDIzOSwgOCwgMTc5LCAxLCAKLSAgICAyMzgsIDExOSwgMTc5LCAxLCAyMjIsIDIwMywgMTc5LCAxLCAyNDcsIDkyLCAxNzksIDEsIDI0NiwgMTk5LCAxNzksIDEsIAotICAgIDIzMCwgMTgxLCAxNzksIDEsIDIzMCwgMTQ5LCAxNzksIDEsIDIyMSwgMTEsIDE3OSwgMSwgMjA3LCAyNDEsIDE3OSwgMSwgCi0gICAgMjA3LCAyMjksIDE3OSwgMSwgMjQ0LCAxMjAsIDE3OSwgMSwgMjQ0LCAxMDQsIDE3OSwgMSwgMjIxLCAyMjcsIDE3OSwgMSwgCi0gICAgMjEwLCAyMiwgMTc5LCAxLCAyMDksIDEwOCwgMTc5LCAxLCAyNDQsIDIxMiwgMTc5LCAxLCAyNDQsIDEsIDE3OSwgMSwgMjAxLCAKLSAgICAyMDEsIDE3OSwgMSwgMTg1LCAxNzksIDEsIDIxOCwgMjA4LCAxNzksIDEsIDI0OSwgMzIsIDE3OSwgMSwgMjQ4LCA5OCwgCi0gICAgMTc5LCAxLCAxOTIsIDE3OSwgMSwgMTk4LCAxNzksIDEsIDIxNiwgMjIwLCAxNzksIDEsIDIyOCwgMTEzLCAxNzksIDEsIAotICAgIDIxMywgOTAsIDE3OSwgMSwgMjExLCAxNjQsIDE3OSwgMSwgMjE1LCAzNiwgMTc5LCAxLCAxNTIsIDE3OSwgMiwgMjIxLCA1MSwgCi0gICAgMTc5LCAyLCAyNTAsIDE3LCAxNzksIDIyLCAyLCAyNTIsIDI1LCAxNzksIDIyLCAyLCA3NSwgMTc5LCAyMiwgMiwgMjMxLCAKLSAgICA4MywgMTc5LCAyMiwgMiwgNjgsIDE3OSwgMjIsIDIsIDIwNiwgMTc4LCAxNzksIDIyLCAyLCAxMjUsIDE0NiwgMTc5LCAyMiwgCi0gICAgMiwgMTI1LCAyMTUsIDE4NiwgMTc5LCAyMiwgMiwgNzQsIDE3OSwgMjIsIDIsIDI1MSwgNjQsIDE3OSwgMjIsIDIsIDc4LCAKLSAgICAxNzksIDIyLCAyLCAyNTAsIDM0LCAxNzksIDIsIDIwNSwgMjA0LCAxNzksIDEsIDIyOSwgMTM1LCAyMTAsIDIyLCAxNzksIAotICAgIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTc5LCAxLCAyMTUsIDE4NSwgMTc5LCAxLCAyMTYsIDYxLCAxNzksIDEsIDIwMiwgCi0gICAgMTY4LCAxNzksIDEsIDEyNSwgMjE1LCAxODYsIDE3OSwgMSwgMTI1LCAyMjcsIDc4LCAxNzksIDIyLCAyLCAxMjUsIDE1OSwgCi0gICAgMTc5LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAxNzksIDE3LCAyMDIsIDg0LCAxNzksIDE3LCAxMDUsIDE3OSwgMTcsIDEwOCwgCi0gICAgMTc5LCAxNywgMTQ3LCAxNzksIDE3LCAxNDksIDE3OSwgMTcsIDE3MCwgMTc5LCAxNywgMTk1LCAxNzksIDE3LCAyMTMsIAotICAgIDExMSwgMTc5LCAxNywgMTk5LCAxNzksIDE3LCAyMjIsIDYzLCAxNzksIDEsIDIxNiwgMjIxLCAzLCAxMDEsIDI0MywgMjI3LCAKLSAgICAxNzksIDEsIDIxNiwgMjIxLCAzLCAyMjYsIDI1MSwgMjQzLCAyMjcsIDE3OSwgMjE1LCAxMjAsIDgyLCAxNzksIDIxNSwgCi0gICAgMTIwLCA1NCwgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxMDUsIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgMTA4LCAxNzksIAotICAgIDI0NSwgOTIsIDIyMSwgNDMsIDE0NywgMTc5LCAyNDUsIDkyLCAyMjEsIDQzLCAxNDksIDE3OSwgMjQ1LCA5MiwgMjIxLCA0MywgCi0gICAgMTE4LCAyMjcsIDE4MCwgMjA5LCA5OCwgMjA5LCA5MywgMjQ0LCAzMSwgMTc5LCAyNDUsIDkyLCAyNDQsIDMyLCAyMTIsIDgyLCAKLSAgICAxNzksIDIzMCwgMjAyLCAxNzksIDIzOCwgMjMxLCA4MiwgMjM3LCAxOTgsIDIsIDI1MSwgMTIxLCAyNDgsIDY2LCAyMzcsIAotICAgIDE5OCwgMiwgMjQ4LCA2NiwgMjM3LCAxOTgsIDIsIDIwNSwgMTk5LCAyMzcsIDE5OCwgMSwgNjMsIDIzNywgMTk4LCAxLCAKLSAgICAyNTIsIDI1LCAyMzcsIDE5OCwgMSwgNzUsIDIzNywgMTk4LCAxLCAyMzEsIDgzLCAyMzcsIDE5OCwgMSwgNjgsIDIzNywgCi0gICAgMTk4LCAxLCAyMDYsIDE3OCwgMjM3LCAxOTgsIDEsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMSwgMjUxLCA2NCwgMjM3LCAxOTgsIAotICAgIDEsIDIyMCwgMTgsIDIzNywgMTk4LCAxLCAyNTAsIDM0LCAyMzcsIDE5OCwgMSwgMTczLCAyMzcsIDE5OCwgMSwgMjI5LCAKLSAgICAxNDQsIDIzNywgMTk4LCAxLCAyMzksIDgsIDIzNywgMTk4LCAxLCAyMzgsIDExOSwgMjM3LCAxOTgsIDEsIDIyMiwgMjAzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjQ3LCA5MiwgMjM3LCAxOTgsIDEsIDI0NiwgMTk5LCAyMzcsIDE5OCwgMSwgMjMwLCAxODEsIDIzNywgCi0gICAgMTk4LCAxLCAyMzAsIDE0OSwgMjM3LCAxOTgsIDEsIDIyMSwgMTEsIDIzNywgMTk4LCAxLCAyMDcsIDI0MSwgMjM3LCAxOTgsIAotICAgIDEsIDIwNywgMjI5LCAyMzcsIDE5OCwgMSwgMjQ0LCAxMjAsIDIzNywgMTk4LCAxLCAyNDQsIDEwNCwgMjM3LCAxOTgsIDEsIAotICAgIDIyMSwgMjI3LCAyMzcsIDE5OCwgMSwgMjEwLCAyMiwgMjM3LCAxOTgsIDEsIDIwOSwgMTA4LCAyMzcsIDE5OCwgMSwgMjQ0LCAKLSAgICAyMTIsIDIzNywgMTk4LCAxLCAyNDQsIDEsIDIzNywgMTk4LCAxLCAyMDEsIDIwMSwgMjM3LCAxOTgsIDEsIDE4NSwgMjM3LCAKLSAgICAxOTgsIDEsIDIxOCwgMjA4LCAyMzcsIDE5OCwgMSwgMjQ5LCAzMiwgMjM3LCAxOTgsIDEsIDI0OCwgOTgsIDIzNywgMTk4LCAKLSAgICAxLCAxOTIsIDIzNywgMTk4LCAxLCAxOTgsIDIzNywgMTk4LCAxLCAyMTYsIDIyMCwgMjM3LCAxOTgsIDEsIDIyOCwgMTEzLCAKLSAgICAyMzcsIDE5OCwgMSwgMjI3LCA3NywgMjM3LCAxOTgsIDEsIDIwNiwgODYsIDIzNywgMTk4LCAxLCAyMTMsIDkwLCAyMzcsIAotICAgIDE5OCwgMSwgMjE1LCAzNiwgMjM3LCAxOTgsIDEsIDE1MiwgMjM3LCAxOTgsIDIsIDIyMSwgNTEsIDIzNywgMTk4LCAyMiwgMiwgCi0gICAgMjUyLCAyNSwgMjM3LCAxOTgsIDIyLCAyLCA3NSwgMjM3LCAxOTgsIDIyLCAyLCAyMzEsIDgzLCAyMzcsIDE5OCwgMjIsIDIsIAotICAgIDY4LCAyMzcsIDE5OCwgMjIsIDIsIDIwNiwgMTc4LCAyMzcsIDE5OCwgMjIsIDIsIDI0MSwgMTYxLCAyMzcsIDE5OCwgMjIsIAotICAgIDIsIDI1MSwgNjQsIDIzNywgMTk4LCAyMiwgMiwgMjIwLCAxOCwgMjM3LCAxOTgsIDIyLCAyLCAyNTAsIDM0LCAyMzcsIDE5OCwgCi0gICAgMiwgMjA1LCAyMDQsIDIzNywgMTk4LCAyLCAyMDcsIDI4LCAyMzcsIDE5OCwgMSwgMjI5LCAxMjUsIDIzNywgMTk4LCAxLCAKLSAgICAyMzgsIDk0LCAyMzcsIDE5OCwgMSwgMjAyLCAxMTYsIDIzNywgMTk4LCAxLCAyMTUsIDE4NSwgMjM3LCAxOTgsIDEsIDI0MCwgCi0gICAgMTA4LCAyMzcsIDE5OCwgMTcsIDIwMiwgODQsIDIzNywgMTk4LCAxNywgMTA1LCAyMzcsIDE5OCwgMTcsIDEwOCwgMjM3LCAKLSAgICAxOTgsIDE3LCAxNDcsIDIzNywgMTk4LCAxNywgMTQ5LCAyMzcsIDE5OCwgMTcsIDE3MCwgMjM3LCAxOTgsIDE3LCAxOTUsIAotICAgIDIzNywgMTk4LCAxNywgMjEzLCAxMTEsIDIzNywgMTk4LCAxNywgMTk5LCAyMzcsIDE5OCwgMTcsIDIyMiwgNjMsIDIzNywgCi0gICAgMTk4LCAyMDgsIDIwOCwgMjM3LCAxOTgsIDI1MSwgMTIwLCAyMzcsIDE5OCwgMjMwLCAyMjIsIDIzNywgMTk4LCAyMDYsIAotICAgIDIwNiwgMjM3LCAxOTgsIDI0MSwgMTMwLCAyMjAsIDIzLCAyMzcsIDE5OCwgMiwgMjAzLCA4NSwgMjM3LCAyMTMsIDIsIDI0NywgCi0gICAgNTIsIDIzNywgMjEzLCAyLCAyNTAsIDE4MCwgMjM3LCAyMTMsIDIsIDIwNSwgMTk5LCAyMzcsIDIxMywgMSwgNjMsIDIzNywgCi0gICAgMjEzLCAxLCAyNTIsIDI1LCAyMzcsIDIxMywgMSwgNzUsIDIzNywgMjEzLCAxLCAyMzEsIDgzLCAyMzcsIDIxMywgMSwgNjgsIAotICAgIDIzNywgMjEzLCAxLCAyMDYsIDE3OCwgMjM3LCAyMTMsIDEsIDEyNSwgMTQ2LCAyMzcsIDIxMywgMSwgMTI1LCAxNTksIDIzNywgCi0gICAgMjEzLCAyMiwgMjQ3LCA1NSwgNzQsIDIzNywgMjEzLCAxLCA3NCwgMjM3LCAyMTMsIDEsIDI1MSwgNjQsIDIzNywgMjEzLCAKLSAgICAyMiwgMjQ3LCA1NSwgNzgsIDIzNywgMjEzLCAxLCA3OCwgMjM3LCAyMTMsIDEsIDI1MCwgMzQsIDIzNywgMjEzLCAxLCAxNzMsIAotICAgIDIzNywgMjEzLCAxLCAyMjksIDE0NCwgMjM3LCAyMTMsIDEsIDIzOSwgOCwgMjM3LCAyMTMsIDEsIDIzOCwgMTE5LCAyMzcsIAotICAgIDIxMywgMSwgMjIyLCAyMDMsIDIzNywgMjEzLCAxLCAyNDcsIDkyLCAyMzcsIDIxMywgMSwgMjQ2LCAxOTksIDIzNywgMjEzLCAKLSAgICAxLCAyMzAsIDE4MSwgMjM3LCAyMTMsIDEsIDIzMCwgMTQ5LCAyMzcsIDIxMywgMSwgMjIxLCAxMSwgMjM3LCAyMTMsIDEsIAotICAgIDIwNywgMjQxLCAyMzcsIDIxMywgMSwgMjA3LCAyMjksIDIzNywgMjEzLCAxLCAyNDQsIDEyMCwgMjM3LCAyMTMsIDEsIDI0NCwgCi0gICAgMTA0LCAyMzcsIDIxMywgMSwgMjIxLCAyMjcsIDIzNywgMjEzLCAxLCAyMTAsIDIyLCAyMzcsIDIxMywgMSwgMjA5LCAxMDgsIAotICAgIDIzNywgMjEzLCAxLCAyNDQsIDIxMiwgMjM3LCAyMTMsIDEsIDI0NCwgMSwgMjM3LCAyMTMsIDEsIDIwMSwgMjAxLCAyMzcsIAotICAgIDIxMywgMSwgMTg1LCAyMzcsIDIxMywgMSwgMjE4LCAyMDgsIDIzNywgMjEzLCAxLCAyNDksIDMyLCAyMzcsIDIxMywgMSwgCi0gICAgMjQ4LCA5OCwgMjM3LCAyMTMsIDEsIDE5MiwgMjM3LCAyMTMsIDEsIDE5OCwgMjM3LCAyMTMsIDEsIDIxNiwgMjIwLCAyMzcsIAotICAgIDIxMywgMSwgMjI4LCAxMTMsIDIzNywgMjEzLCAxLCAyMjcsIDc3LCAyMzcsIDIxMywgMSwgMjA2LCA4NiwgMjM3LCAyMTMsIAotICAgIDEsIDIxMywgOTAsIDIzNywgMjEzLCAxLCAyMTEsIDE2NCwgMjM3LCAyMTMsIDEsIDIxNSwgMzYsIDIzNywgMjEzLCAxLCAKLSAgICAxNTIsIDIzNywgMjEzLCAyLCAyMjEsIDUxLCAyMzcsIDIxMywgMiwgMjUwLCAxNywgMjM3LCAyMTMsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMzcsIDIxMywgMjIsIDIsIDc1LCAyMzcsIDIxMywgMjIsIDIsIDIzMSwgODMsIDIzNywgMjEzLCAyMiwgMiwgNjgsIAotICAgIDIzNywgMjEzLCAyMiwgMiwgMjA2LCAxNzgsIDIzNywgMjEzLCAyMiwgMiwgMTI1LCAxNDYsIDIzNywgMjEzLCAyMiwgMiwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMjM3LCAyMTMsIDIyLCAyLCAyNDcsIDU1LCA3NCwgMjM3LCAyMTMsIDIyLCAyLCA3NCwgMjM3LCAKLSAgICAyMTMsIDIyLCAyLCAyNTEsIDY0LCAyMzcsIDIxMywgMjIsIDIsIDI0NywgNTUsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDc4LCAKLSAgICAyMzcsIDIxMywgMjIsIDIsIDI1MCwgMzQsIDIzNywgMjEzLCAyLCAyMDUsIDIwNCwgMjM3LCAyMTMsIDIyMCwgMzksIDIzNywgCi0gICAgMjEzLCAxLCAxMjUsIDIxNSwgMTg2LCAyMzcsIDIxMywgMSwgMTI1LCAyMjcsIDc4LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAyMzcsIDIxMywgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjM3LCAyMTMsIDE3LCAyMDIsIDg0LCAyMzcsIDIxMywgMTcsIAotICAgIDEwNSwgMjM3LCAyMTMsIDE3LCAxMDgsIDIzNywgMjEzLCAxNywgMTQ3LCAyMzcsIDIxMywgMTcsIDE0OSwgMjM3LCAyMTMsIAotICAgIDE3LCAxNzAsIDIzNywgMjEzLCAxNywgMTk1LCAyMzcsIDIxMywgMTcsIDIxMywgMTExLCAyMzcsIDIxMywgMTcsIDE5OSwgCi0gICAgMjM3LCAyMTMsIDE3LCAyMjIsIDYzLCAyMzcsIDIxMywgMjUxLCAxNDYsIDU0LCAyMzcsIDIxMywgMjE1LCAxMjAsIDU0LCAKLSAgICAyMzcsIDIxMywgMSwgMjAyLCA4MCwgMTkzLCAyLCAyNDcsIDUyLCAxOTMsIDIsIDI1MCwgMTgwLCAxOTMsIDIsIDIwNSwgCi0gICAgMTk5LCAxOTMsIDEsIDYzLCAxOTMsIDEsIDI1MiwgMjUsIDE5MywgMSwgNzUsIDE5MywgMSwgMjMxLCA4MywgMTkzLCAxLCAKLSAgICA2OCwgMTkzLCAxLCAyMDYsIDE3OCwgMTkzLCAxLCAxMjUsIDE0NiwgMTkzLCAxLCAxMjUsIDE1OSwgMTkzLCAxLCA3NCwgCi0gICAgMTkzLCAxLCAyNTEsIDY0LCAxOTMsIDEsIDc4LCAxOTMsIDEsIDI1MCwgMzQsIDE5MywgMSwgMTczLCAxOTMsIDEsIDIyOSwgCi0gICAgMTQ0LCAxOTMsIDEsIDIzOSwgOCwgMTkzLCAxLCAyMzgsIDExOSwgMTkzLCAxLCAyMjIsIDIwMywgMTkzLCAxLCAyNDcsIDkyLCAKLSAgICAxOTMsIDEsIDI0NiwgMTk5LCAxOTMsIDEsIDIzMCwgMTgxLCAxOTMsIDEsIDIzMCwgMTQ5LCAxOTMsIDEsIDIyMSwgMTEsIAotICAgIDE5MywgMSwgMjA3LCAyNDEsIDE5MywgMSwgMjA3LCAyMjksIDE5MywgMSwgMjQ0LCAxMjAsIDE5MywgMSwgMjQ0LCAxMDQsIAotICAgIDE5MywgMSwgMjIxLCAyMjcsIDE5MywgMSwgMjEwLCAyMiwgMTkzLCAxLCAyMDksIDEwOCwgMTkzLCAxLCAyNDQsIDIxMiwgCi0gICAgMTkzLCAxLCAyNDQsIDEsIDE5MywgMSwgMjAxLCAyMDEsIDE5MywgMSwgMTg1LCAxOTMsIDEsIDIxOCwgMjA4LCAxOTMsIDEsIAotICAgIDI0OSwgMzIsIDE5MywgMSwgMjQ4LCA5OCwgMTkzLCAxLCAxOTIsIDE5MywgMSwgMTk4LCAxOTMsIDEsIDIxNiwgMjIwLCAKLSAgICAxOTMsIDEsIDIyOCwgMTEzLCAxOTMsIDEsIDIyNywgNzcsIDE5MywgMSwgMjA2LCA4NiwgMTkzLCAxLCAyMTMsIDkwLCAxOTMsIAotICAgIDEsIDIxMSwgMTY0LCAxOTMsIDEsIDIxNSwgMzYsIDE5MywgMSwgMTUyLCAxOTMsIDIsIDIyMSwgNTEsIDE5MywgMiwgMjUwLCAKLSAgICAxNywgMTkzLCAyMiwgMiwgMjUyLCAyNSwgMTkzLCAyMiwgMiwgNzUsIDE5MywgMjIsIDIsIDIzMSwgODMsIDE5MywgMjIsIDIsIAotICAgIDY4LCAxOTMsIDIyLCAyLCAyMDYsIDE3OCwgMTkzLCAyMiwgMiwgMTI1LCAxNDYsIDE5MywgMjIsIDIsIDEyNSwgMjE1LCAKLSAgICAxODYsIDE5MywgMjIsIDIsIDc0LCAxOTMsIDIyLCAyLCAyNTEsIDY0LCAxOTMsIDIyLCAyLCA3OCwgMTkzLCAyMiwgMiwgCi0gICAgMjUwLCAzNCwgMTkzLCAyLCAyMDUsIDIwNCwgMTkzLCAyNTEsIDY1LCAyMjcsIDE5NiwgODIsIDE5MywgMjUwLCAzNSwgMjI3LCAKLSAgICAxOTYsIDgyLCAxOTMsIDEsIDIxNSwgMTg1LCAxOTMsIDEsIDIxNiwgNjEsIDE5MywgMSwgMjAyLCAxNjgsIDE5MywgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTkzLCAxLCAxMjUsIDIyNywgNzgsIDE5MywgMjIsIDIsIDEyNSwgMTU5LCAxOTMsIDIyLCAyLCAKLSAgICAxMjUsIDIyNywgNzgsIDE5MywgMTcsIDIwMiwgODQsIDE5MywgMTcsIDEwNSwgMTkzLCAxNywgMTA4LCAxOTMsIDE3LCAxNDcsIAotICAgIDE5MywgMTcsIDE0OSwgMTkzLCAxNywgMTcwLCAxOTMsIDE3LCAxOTUsIDE5MywgMTcsIDIxMywgMTExLCAxOTMsIDE3LCAKLSAgICAxOTksIDE5MywgMTcsIDIyMiwgNjMsIDE5MywgMjMwLCAyMDIsIDE5MywgMSwgMjA0LCAxMTEsIDE5MywgMjM5LCAxMzgsIAotICAgIDExOCwgMjE3LCA1NSwgMTkzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgMTkzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAKLSAgICAxOTMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgODAsIDE5MywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE5MywgMjM5LCAxMzgsIAotICAgIDEyNiwgMjEyLCA3OSwgNDQsIDIsIDI1MCwgMTgwLCA0NCwgMiwgMjA1LCAxOTksIDQ0LCAxLCA2MywgNDQsIDEsIDI1MiwgCi0gICAgMjUsIDQ0LCAxLCA3NSwgNDQsIDEsIDIzMSwgODMsIDQ0LCAxLCA2OCwgNDQsIDEsIDIwNiwgMTc4LCA0NCwgMSwgNzQsIDQ0LCAKLSAgICAxLCAyNDEsIDE2MSwgNDQsIDEsIDI1MSwgNjQsIDQ0LCAxLCA3OCwgNDQsIDEsIDIyMCwgMTgsIDQ0LCAxLCAyNTAsIDM0LCAKLSAgICA0NCwgMSwgMTczLCA0NCwgMSwgMjIyLCAyMDMsIDQ0LCAxLCAyNDcsIDkyLCA0NCwgMSwgMjMwLCAxODEsIDQ0LCAxLCAyMjEsIAotICAgIDExLCA0NCwgMSwgMjA3LCAyNDEsIDQ0LCAxLCAyMjEsIDIyNywgNDQsIDEsIDIxMCwgMjIsIDQ0LCAxLCAyMDEsIDIwMSwgCi0gICAgNDQsIDEsIDIyMSwgMjA5LCA0NCwgMSwgMTg1LCA0NCwgMSwgMTkyLCA0NCwgMSwgMTk4LCA0NCwgMSwgMjE2LCAyMjAsIDQ0LCAKLSAgICAxLCAyMTUsIDE4NSwgNDQsIDEsIDIyOCwgMTEzLCA0NCwgMSwgMjI3LCA3NywgNDQsIDEsIDIyNywgNjgsIDQ0LCAxLCAyMDYsIAotICAgIDg2LCA0NCwgMSwgMjEzLCA5MCwgNDQsIDEsIDIxMSwgMTY0LCA0NCwgMSwgMjE1LCAzNiwgNDQsIDEsIDE1MiwgNDQsIDIyLCAKLSAgICAyLCAyNTIsIDI1LCA0NCwgMjIsIDIsIDc1LCA0NCwgMjIsIDIsIDIzMSwgODMsIDQ0LCAyMiwgMiwgNjgsIDQ0LCAyMiwgMiwgCi0gICAgMjA2LCAxNzgsIDQ0LCAyMiwgMiwgNzQsIDQ0LCAyMiwgMiwgMjQxLCAxNjEsIDQ0LCAyMiwgMiwgMjUxLCA2NCwgNDQsIDIyLCAKLSAgICAyLCA3OCwgNDQsIDIyLCAyLCAyMjAsIDE4LCA0NCwgMjIsIDIsIDI1MCwgMzQsIDQ0LCAyLCAyMDUsIDIwNCwgNDQsIDIyMCwgCi0gICAgMzksIDQ0LCAyNTAsIDM1LCAyMjcsIDE5NiwgODIsIDQ0LCAxNywgMjAyLCA4NCwgNDQsIDE3LCAxMDUsIDQ0LCAxNywgMTA4LCAKLSAgICA0NCwgMTcsIDE0NywgNDQsIDE3LCAxNDksIDQ0LCAxNywgMTcwLCA0NCwgMTcsIDE5NSwgNDQsIDE3LCAyMTMsIDExMSwgNDQsIAotICAgIDE3LCAxOTksIDQ0LCAxNywgMjIyLCA2MywgNDQsIDQyLCAyMDksIDE1MiwgNDQsIDQyLCAxMTgsIDIzNiwgMTEsIDQ0LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCA0NCwgMjQ0LCAxMzMsIDU0LCA0NCwgMjI0LCAzOCwgNTQsIDQ0LCAyMDMsIDUwLCA1NCwgNDQsIAotICAgIDI0NCwgNzIsIDU0LCA0NCwgMjQ1LCAxNDEsIDU0LCA0NCwgMjUwLCA4MiwgODcsIDU0LCA0NCwgMjE1LCAxMjAsIDU0LCA0NCwgCi0gICAgNDIsIDU0LCAxNzUsIDIsIDM5LCAyNDcsIDUzLCA1NSwgMTc1LCAyLCAyNDcsIDUyLCAxNzUsIDIsIDI1MCwgMTgwLCAxNzUsIAotICAgIDIsIDIwNSwgMTk5LCAxNzUsIDEsIDYzLCAxNzUsIDEsIDI1MiwgMjUsIDE3NSwgMSwgNzUsIDE3NSwgMSwgMjMxLCA4MywgCi0gICAgMTc1LCAxLCA2OCwgMTc1LCAxLCAyMDYsIDE3OCwgMTc1LCAxLCAxMjUsIDE0NiwgMTc1LCAxLCAxMjUsIDE1OSwgMTc1LCAxLCAKLSAgICA3NCwgMTc1LCAxLCAyNDEsIDE2MSwgMTc1LCAxLCAyNTEsIDY0LCAxNzUsIDEsIDc4LCAxNzUsIDEsIDIyMCwgMTgsIDE3NSwgCi0gICAgMSwgMjUwLCAzNCwgMTc1LCAxLCAxNzMsIDE3NSwgMSwgMjI5LCAxNDQsIDE3NSwgMSwgMjM5LCA4LCAxNzUsIDEsIDIzOCwgCi0gICAgMTE5LCAxNzUsIDEsIDIyMiwgMjAzLCAxNzUsIDEsIDI0NywgOTIsIDE3NSwgMSwgMjQ2LCAxOTksIDE3NSwgMSwgMjMwLCAKLSAgICAxODEsIDE3NSwgMSwgMjMwLCAxNDksIDE3NSwgMSwgMjIxLCAxMSwgMTc1LCAxLCAyMDcsIDI0MSwgMTc1LCAxLCAyMDcsIAotICAgIDIyOSwgMTc1LCAxLCAyNDQsIDEyMCwgMTc1LCAxLCAyNDQsIDEwNCwgMTc1LCAxLCAyMjEsIDIyNywgMTc1LCAxLCAyMTAsIAotICAgIDIyLCAxNzUsIDEsIDIwOSwgMTA4LCAxNzUsIDEsIDI0NCwgMjEyLCAxNzUsIDEsIDI0NCwgMSwgMTc1LCAxLCAyMDEsIDIwMSwgCi0gICAgMTc1LCAxLCAxODUsIDE3NSwgMSwgMjE4LCAyMDgsIDE3NSwgMSwgMjQ5LCAzMiwgMTc1LCAxLCAyNDgsIDk4LCAxNzUsIDEsIAotICAgIDE5MiwgMTc1LCAxLCAxOTgsIDE3NSwgMSwgMjE2LCAyMjAsIDE3NSwgMSwgMjE1LCAxODUsIDE3NSwgMSwgMjI4LCAxMTMsIAotICAgIDE3NSwgMSwgMjI3LCA3NywgMTc1LCAxLCAyMjcsIDY4LCAxNzUsIDEsIDIwNiwgODYsIDE3NSwgMSwgMjEzLCA5MCwgMTc1LCAKLSAgICAxLCAyMTEsIDE2NCwgMTc1LCAxLCAyMTUsIDM2LCAxNzUsIDEsIDE1MiwgMTc1LCAyLCAyNTAsIDE3LCAxNzUsIDIyLCAyLCAKLSAgICAyNTIsIDI1LCAxNzUsIDIyLCAyLCA3NSwgMTc1LCAyMiwgMiwgMjMxLCA4MywgMTc1LCAyMiwgMiwgNjgsIDE3NSwgMjIsIDIsIAotICAgIDIwNiwgMTc4LCAxNzUsIDIyLCAyLCAxMjUsIDE0NiwgMTc1LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTc1LCAyMiwgMiwgCi0gICAgNzQsIDE3NSwgMjIsIDIsIDI0MSwgMTYxLCAxNzUsIDIyLCAyLCAyNTEsIDY0LCAxNzUsIDIyLCAyLCA3OCwgMTc1LCAyMiwgCi0gICAgMiwgMjIwLCAxOCwgMTc1LCAyMiwgMiwgMjUwLCAzNCwgMTc1LCAyLCAyMDUsIDIwNCwgMTc1LCAyMjcsIDE5NiwgODIsIAotICAgIDE3NSwgMjUxLCA2NSwgMjI3LCAxOTYsIDgyLCAxNzUsIDEsIDIwOCwgMjAsIDE3NSwgMSwgMjQxLCAyNTUsIDE3NSwgMSwgCi0gICAgMjE1LCAxNjYsIDE3NSwgMSwgMTI1LCAyMTUsIDE4NiwgMTc1LCAxLCAxMjUsIDIyNywgNzgsIDE3NSwgMjIsIDIsIDEyNSwgCi0gICAgMTU5LCAxNzUsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE3NSwgMTcsIDIwMiwgODQsIDE3NSwgMTcsIDEwNSwgMTc1LCAxNywgCi0gICAgMTA4LCAxNzUsIDE3LCAxNDcsIDE3NSwgMTcsIDE0OSwgMTc1LCAxNywgMTcwLCAxNzUsIDE3LCAxOTUsIDE3NSwgMTcsIAotICAgIDIxMywgMTExLCAxNzUsIDE3LCAxOTksIDE3NSwgMTcsIDIyMiwgNjMsIDE3NSwgMjM5LCAxMzgsIDE3LCAyMDIsIDg1LCAzNSwgCi0gICAgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIDIyMCwgNzcsIDIxOCwgMTUsIAotICAgIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjAsIDM1LCAyMjAsIDc3LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgCi0gICAgMTM4LCAxNywgMTI2LCAzNSwgMjIwLCA3NywgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAyMzksIDEzOCwgMTcsIDExOCwgMzUsIAotICAgIDI0MCwgMjI1LCAyMTgsIDE1LCA3NiwgMTQ5LCAxNzUsIDIzOSwgMTM4LCAxNywgMTIwLCAzNSwgMjQwLCAyMjUsIDIxOCwgCi0gICAgMTUsIDc2LCAxNDksIDE3NSwgMjM5LCAxMzgsIDE3LCAxMjYsIDM1LCAyNDAsIDIyNSwgMjE4LCAxNSwgNzYsIDE0OSwgMTc1LCAKLSAgICAyLCAyMDcsIDE2NCwgMjAwLCAyLCAyNDcsIDUyLCAyMDAsIDIsIDI1MCwgMTgwLCAyMDAsIDIsIDIwNSwgMTk5LCAyMDAsIDEsIAotICAgIDYzLCAyMDAsIDEsIDI1MiwgMjUsIDIwMCwgMSwgNzUsIDIwMCwgMSwgMjMxLCA4MywgMjAwLCAxLCA2OCwgMjAwLCAxLCAKLSAgICAyMDYsIDE3OCwgMjAwLCAxLCAxMjUsIDE0NiwgMjAwLCAxLCAxMjUsIDE1OSwgMjAwLCAxLCA3NCwgMjAwLCAxLCAyNDEsIAotICAgIDE2MSwgMjAwLCAxLCAyNTEsIDY0LCAyMDAsIDEsIDc4LCAyMDAsIDEsIDIyMCwgMTgsIDIwMCwgMSwgMjUwLCAzNCwgMjAwLCAKLSAgICAxLCAxNzMsIDIwMCwgMSwgMjI5LCAxNDQsIDIwMCwgMSwgMjM5LCA4LCAyMDAsIDEsIDIzOCwgMTE5LCAyMDAsIDEsIDIyMiwgCi0gICAgMjAzLCAyMDAsIDEsIDI0NywgOTIsIDIwMCwgMSwgMjQ2LCAxOTksIDIwMCwgMSwgMjMwLCAxODEsIDIwMCwgMSwgMjMwLCAKLSAgICAxNDksIDIwMCwgMSwgMjIxLCAxMSwgMjAwLCAxLCAyMDcsIDI0MSwgMjAwLCAxLCAyMDcsIDIyOSwgMjAwLCAxLCAyNDQsIAotICAgIDEyMCwgMjAwLCAxLCAyNDQsIDEwNCwgMjAwLCAxLCAyMjEsIDIyNywgMjAwLCAxLCAyMTAsIDIyLCAyMDAsIDEsIDIwOSwgCi0gICAgMTA4LCAyMDAsIDEsIDI0NCwgMjEyLCAyMDAsIDEsIDI0NCwgMSwgMjAwLCAxLCAyMDEsIDIwMSwgMjAwLCAxLCAxODUsIAotICAgIDIwMCwgMSwgMjE4LCAyMDgsIDIwMCwgMSwgMjQ5LCAzMiwgMjAwLCAxLCAyNDgsIDk4LCAyMDAsIDEsIDE5MiwgMjAwLCAxLCAKLSAgICAxOTgsIDIwMCwgMSwgMjE2LCAyMjAsIDIwMCwgMSwgMjE1LCAxODUsIDIwMCwgMSwgMjI4LCAxMTMsIDIwMCwgMSwgMjI3LCAKLSAgICA3NywgMjAwLCAxLCAyMDYsIDg2LCAyMDAsIDEsIDIxMywgOTAsIDIwMCwgMSwgMjExLCAxNjQsIDIwMCwgMSwgMjE1LCAzNiwgCi0gICAgMjAwLCAxLCAxNTIsIDIwMCwgMiwgMjIxLCA1MSwgMjAwLCAyLCAyNTAsIDE3LCAyMDAsIDIyLCAyLCAyNTIsIDI1LCAyMDAsIAotICAgIDIyLCAyLCA3NSwgMjAwLCAyMiwgMiwgMjMxLCA4MywgMjAwLCAyMiwgMiwgNjgsIDIwMCwgMjIsIDIsIDIwNiwgMTc4LCAKLSAgICAyMDAsIDIyLCAyLCAxMjUsIDE0NiwgMjAwLCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMjAwLCAyMiwgMiwgNzQsIDIwMCwgMjIsIAotICAgIDIsIDI0MSwgMTYxLCAyMDAsIDIyLCAyLCAyNTEsIDY0LCAyMDAsIDIyLCAyLCA3OCwgMjAwLCAyMiwgMiwgMjIwLCAxOCwgCi0gICAgMjAwLCAyMiwgMiwgMjUwLCAzNCwgMjAwLCAyLCAyMDUsIDIwNCwgMjAwLCAyMjcsIDE5NiwgODIsIDIwMCwgMjUxLCA2NSwgCi0gICAgMjI3LCAxOTYsIDgyLCAyMDAsIDEsIDI0MCwgMTA4LCAyMDAsIDEsIDEyNSwgMjE1LCAxODYsIDIwMCwgMSwgMTI1LCAyMjcsIAotICAgIDc4LCAyMDAsIDIyLCAyLCAxMjUsIDE1OSwgMjAwLCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAyMDAsIDE3LCAyMDIsIDg0LCAKLSAgICAyMDAsIDE3LCAxMDUsIDIwMCwgMTcsIDEwOCwgMjAwLCAxNywgMTQ3LCAyMDAsIDE3LCAxNDksIDIwMCwgMTcsIDE3MCwgCi0gICAgMjAwLCAxNywgMTk1LCAyMDAsIDE3LCAyMTMsIDExMSwgMjAwLCAxNywgMTk5LCAyMDAsIDE3LCAyMjIsIDYzLCAyMDAsIDIsIAotICAgIDIzMCwgMTM1LCAyMDAsIDIsIDIwNiwgMjIyLCAxNjQsIDIsIDI0NywgNTIsIDE2NCwgMiwgMjUwLCAxODAsIDE2NCwgMiwgCi0gICAgMjA1LCAxOTksIDE2NCwgMSwgNjMsIDE2NCwgMSwgMjUyLCAyNSwgMTY0LCAxLCA3NSwgMTY0LCAxLCAyMzEsIDgzLCAxNjQsIAotICAgIDEsIDY4LCAxNjQsIDEsIDIwNiwgMTc4LCAxNjQsIDEsIDEyNSwgMTQ2LCAxNjQsIDEsIDEyNSwgMTU5LCAxNjQsIDEsIDc0LCAKLSAgICAxNjQsIDEsIDI0MSwgMTYxLCAxNjQsIDEsIDI1MSwgNjQsIDE2NCwgMSwgNzgsIDE2NCwgMSwgMjIwLCAxOCwgMTY0LCAxLCAKLSAgICAyNTAsIDM0LCAxNjQsIDEsIDE3MywgMTY0LCAxLCAyMjksIDE0NCwgMTY0LCAxLCAyMzksIDgsIDE2NCwgMSwgMjM4LCAxMTksIAotICAgIDE2NCwgMSwgMjIyLCAyMDMsIDE2NCwgMSwgMjQ3LCA5MiwgMTY0LCAxLCAyNDYsIDE5OSwgMTY0LCAxLCAyMzAsIDE4MSwgCi0gICAgMTY0LCAxLCAyMzAsIDE0OSwgMTY0LCAxLCAyMjEsIDExLCAxNjQsIDEsIDIwNywgMjQxLCAxNjQsIDEsIDIwNywgMjI5LCAKLSAgICAxNjQsIDEsIDI0NCwgMTIwLCAxNjQsIDEsIDI0NCwgMTA0LCAxNjQsIDEsIDIyMSwgMjI3LCAxNjQsIDEsIDIxMCwgMjIsIAotICAgIDE2NCwgMSwgMjA5LCAxMDgsIDE2NCwgMSwgMjQ0LCAyMTIsIDE2NCwgMSwgMjQ0LCAxLCAxNjQsIDEsIDIwMSwgMjAxLCAKLSAgICAxNjQsIDEsIDIyMSwgMjA5LCAxNjQsIDEsIDE4NSwgMTY0LCAxLCAyMTgsIDIwOCwgMTY0LCAxLCAyNDksIDMyLCAxNjQsIDEsIAotICAgIDI0OCwgOTgsIDE2NCwgMSwgMTkyLCAxNjQsIDEsIDE5OCwgMTY0LCAxLCAyMTYsIDIyMCwgMTY0LCAxLCAyMTUsIDE4NSwgCi0gICAgMTY0LCAxLCAyMjgsIDExMywgMTY0LCAxLCAyMjcsIDc3LCAxNjQsIDEsIDIyNywgNjgsIDE2NCwgMSwgMjA2LCA4NiwgMTY0LCAKLSAgICAxLCAyMTMsIDkwLCAxNjQsIDEsIDIxMSwgMTY0LCAxNjQsIDEsIDIxNSwgMzYsIDE2NCwgMSwgMTUyLCAxNjQsIDEsIDIwNywgCi0gICAgMjEwLCAxNjQsIDIsIDI1MCwgMTcsIDE2NCwgMjIsIDIsIDI1MiwgMjUsIDE2NCwgMjIsIDIsIDc1LCAxNjQsIDIyLCAyLCAKLSAgICAyMzEsIDgzLCAxNjQsIDIyLCAyLCA2OCwgMTY0LCAyMiwgMiwgMjA2LCAxNzgsIDE2NCwgMjIsIDIsIDEyNSwgMTQ2LCAxNjQsIAotICAgIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDIyLCAyLCA3NCwgMTY0LCAyMiwgMiwgMjQxLCAxNjEsIDE2NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE2NCwgMjIsIDIsIDc4LCAxNjQsIDIyLCAyLCAyMjAsIDE4LCAxNjQsIDIyLCAyLCAyNTAsIDM0LCAxNjQsIAotICAgIDIsIDIwNSwgMjA0LCAxNjQsIDEsIDcwLCAyMTYsIDk3LCAxNjQsIDI1MCwgMzUsIDIyNywgMTk2LCA4MiwgMTY0LCAxLCAKLSAgICAyNTAsIDEyNiwgMjMxLCA4MywgMTY0LCAxLCAxMjUsIDIxNSwgMTg2LCAxNjQsIDEsIDEyNSwgMjI3LCA3OCwgMTY0LCAyMiwgCi0gICAgMiwgMTI1LCAxNTksIDE2NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTY0LCAxNywgMjAyLCA4NCwgMTY0LCAxNywgMTA1LCAKLSAgICAxNjQsIDE3LCAxMDgsIDE2NCwgMTcsIDE0NywgMTY0LCAxNywgMTQ5LCAxNjQsIDE3LCAxNzAsIDE2NCwgMTcsIDE5NSwgCi0gICAgMTY0LCAxNywgMjEzLCAxMTEsIDE2NCwgMTcsIDE5OSwgMTY0LCAxNywgMjIyLCA2MywgMTY0LCA0MiwgMjA5LCAxNTIsIAotICAgIDE2NCwgNDIsIDExOCwgMjM2LCAxMSwgMTY0LCA0MiwgMTE4LCAyMDksIDM2LCAxNjQsIDIzOSwgMTM4LCAxMTgsIDIxNywgCi0gICAgNTUsIDE2NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDE2NCwgMjM5LCAxMzgsIDEyNiwgMjE3LCA1MywgMTY0LCAyNDQsIAotICAgIDEzOCwgODIsIDE2NCwgMSwgMjQ2LCAxMzEsIDIyMSwgMjI4LCAxNjQsIDEsIDI0NiwgMTMxLCAyMjMsIDE2MywgMTY0LCAxLCAKLSAgICAyNDYsIDEzMSwgMjE1LCAxODYsIDE2NCwgMSwgMjQ2LCAxMzEsIDE1OSwgMTY0LCAxLCAyNDYsIDEzMSwgMjI3LCA3OCwgCi0gICAgMTY0LCAxLCAyNDYsIDEzMSwgMjMwLCA1NCwgMTQwLCAyLCAyNTAsIDE3OSwgMTQwLCAyLCAyMDUsIDE5OCwgMTQwLCAxLCAKLSAgICAyNTAsIDYsIDE0MCwgMSwgMjUxLCAyMzUsIDE0MCwgMSwgMjUxLCA4OSwgMTQwLCAxLCAyNTEsIDEwNCwgMTQwLCAxLCAyMzAsIAotICAgIDE5MSwgMTQwLCAxLCAyMzEsIDgyLCAxNDAsIDEsIDIwNiwgMTY5LCAxNDAsIDEsIDIwNiwgMTcyLCAxNDAsIDEsIDIzMCwgCi0gICAgMjE3LCAxNDAsIDEsIDIzMCwgMjE4LCAxNDAsIDEsIDIzMSwgNjgsIDE0MCwgMSwgMjMxLCA3MCwgMTQwLCAxLCAyNDAsIAotICAgIDE5NCwgMTQwLCAxLCAyNDEsIDE1NiwgMTQwLCAxLCAyNTEsIDQ5LCAxNDAsIDEsIDIxOSwgMTg3LCAxNDAsIDEsIDIyMCwgCi0gICAgMTEsIDE0MCwgMSwgMjUwLCAyMCwgMTQwLCAxLCAyNTEsIDUsIDIyOSwgMjA2LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMjksIAotICAgIDIwNiwgMTQwLCAxLCAyNTEsIDUsIDIzOCwgMjEwLCAxNDAsIDEsIDIyNSwgMTQ3LCAyMzgsIDIxMCwgMTQwLCAxLCAyMjksIAotICAgIDI1NSwgMjIzLCAxMDMsIDE0MCwgMSwgMjE0LCAyMzUsIDIzOCwgMjEwLCAxNDAsIDEsIDI1MSwgNSwgMjQ3LCA4LCAxNDAsIAotICAgIDEsIDIyNSwgMTQ3LCAyNDcsIDgsIDE0MCwgMSwgMjUxLCA1LCAyMzAsIDE2NCwgMTQwLCAxLCAyMjUsIDE0NywgMjMwLCAKLSAgICAxNjQsIDE0MCwgMSwgMjEwLCAxNSwgMjIzLCAxMDMsIDE0MCwgMSwgMjEwLCAxNSwgMjE0LCAyMzQsIDIyMywgMTA0LCAxNDAsIAotICAgIDEsIDIxNCwgMjM1LCAyMzAsIDE2NCwgMTQwLCAxLCAyNTEsIDUsIDIwNywgMjM3LCAxNDAsIDEsIDIyNSwgMTQ3LCAyMDcsIAotICAgIDIzNywgMTQwLCAxLCAyNTEsIDUsIDI0NCwgMTExLCAxNDAsIDEsIDIyNSwgMTQ3LCAyNDQsIDExMSwgMTQwLCAxLCAyMjMsIAotICAgIDE5MSwgMjIzLCA1OCwgMTQwLCAxLCAyMTQsIDIzNSwgMjQ0LCAxMTEsIDE0MCwgMSwgMjUxLCA1LCAyMDksIDE5NSwgMTQwLCAKLSAgICAxLCAyMjUsIDE0NywgMjA5LCAxOTUsIDE0MCwgMSwgMjUxLCA1LCAyNDQsIDEzMSwgMTQwLCAxLCAyMjUsIDE0NywgMjQ0LCAKLSAgICAxMzEsIDE0MCwgMSwgMjQ0LCAxNjIsIDIyMywgNTgsIDE0MCwgMSwgMjE0LCAyMzUsIDI0NCwgMTMxLCAxNDAsIDEsIDI1MSwgCi0gICAgNSwgMjE5LCA0MiwgMTQwLCAxLCAyMjUsIDE0NywgMjE5LCA0MiwgMTQwLCAxLCAyNTEsIDUsIDI0OCwgMjAwLCAxNDAsIDEsIAotICAgIDIyNSwgMTQ3LCAyNDgsIDIwMCwgMTQwLCAxLCAyMjUsIDYyLCAxNDAsIDEsIDI1MCwgMjQxLCAyNDgsIDIwMCwgMTQwLCAxLCAKLSAgICAyMDMsIDU3LCAxNDAsIDEsIDIxNiwgMTY0LCAxNDAsIDEsIDI0NCwgMTYyLCAyMjcsIDI0MywgMTQwLCAxLCAyMDYsIDU3LCAKLSAgICAxNDAsIDEsIDIxMCwgMTUsIDIxNCwgMjA3LCAxNDAsIDEsIDIyMywgMTkxLCAyMTQsIDIwNywgMTQwLCAxLCAyNDQsIDE2MiwgCi0gICAgMjE0LCAyMDcsIDE0MCwgMSwgMjM3LCA3MSwgMTQwLCAxLCAyMjMsIDE5MSwgMjI3LCAyNDMsIDE0MCwgMSwgMjQwLCA2MiwgCi0gICAgMTQwLCAyLCAyNTEsIDM4LCAxNDAsIDIyLCAyLCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDE2OSwgMjUxLCAxMDYsIAotICAgIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyNTEsIDEwNiwgMTQwLCAyMiwgMiwgMjI5LCAxNjksIDIzMCwgMjE0LCAxNDAsIDIyLCAKLSAgICAyLCAyNDMsIDIwMCwgMjMwLCAyMTQsIDE0MCwgMjIsIDIsIDIyOSwgMTY5LCAyMTksIDE2NywgMTQwLCAyMiwgMiwgMjQzLCAKLSAgICAyMDAsIDIxOSwgMTY3LCAxNDAsIDIyLCAyLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjI5LCAxMSwgMTQwLCAyMiwgMiwgCi0gICAgMjQzLCAyMDAsIDIyOSwgMTEsIDE0MCwgMjIsIDIsIDIyOSwgMTMsIDI0NCwgNTAsIDE0MCwgMjIsIDIsIDIyOSwgMTIsIAotICAgIDIzNywgMTU4LCAyNTEsIDk5LCAxNDAsIDIyLCAyLCAyMjksIDEyLCAyMzcsIDE1OCwgMjQzLCAyMDAsIDI1MSwgOTksIDE0MCwgCi0gICAgMjIsIDIsIDIyOSwgMTIsIDIzNywgMTU4LCAyMzgsIDIwOSwgMTQwLCAyMiwgMiwgMjM4LCAyMDksIDE0MCwgMjI3LCA4OSwgCi0gICAgMTcsIDIwMiwgODQsIDE0MCwgMjI3LCA4OSwgMTcsIDEwNSwgMTQwLCAyMjcsIDg5LCAxNywgMTA4LCAxNDAsIDIyNywgODksIAotICAgIDE3LCAxNDcsIDE0MCwgMjI3LCA4OSwgMTcsIDE0OSwgMTQwLCAyMjcsIDg5LCAxNywgMTcwLCAxNDAsIDIyNywgODksIDE3LCAKLSAgICAxOTUsIDE0MCwgMjI3LCA4OSwgMTcsIDIxMywgMTExLCAxNDAsIDIyNywgODksIDE3LCAxOTksIDE0MCwgMjI3LCA4OSwgMTcsIAotICAgIDIyMiwgNjMsIDE0MCwgMjIsIDIsIDI0MywgMjAwLCAyMzgsIDI1MywgMTQwLCAyMiwgMiwgMjQzLCAyMDAsIDIzOCwgMjA5LCAKLSAgICAxNDAsIDIxNywgMTc5LCAyMjgsIDE5NCwgMjA5LCAxMDMsIDE2NywgMjI5LCAyNywgMjMwLCAxOCwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI5LCAxMTYsIDIyOSwgMTM5LCAyMDksIDEwMywgMTY3LCAyMjksIDExNiwgMjI5LCAxMDgsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIyOSwgMTE2LCAyMjksIDEwMywgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTYsIDIyOSwgMTEyLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjksIDExNiwgMjE2LCAxODUsIDIwOSwgMTAzLCAxNjcsIDIyMiwgMTI5LCAyMjIsIDExNiwgMjA5LCAxMDMsIDE2NywgCi0gICAgMjQ2LCAxMTcsIDI0NiwgMTg4LCAyMDksIDEwMywgMTY3LCAyNDYsIDExNywgMjQ2LCAxMjcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDI0NiwgMTE3LCAyNDYsIDE4NywgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjEyLCAxMywgMjA5LCAxMDMsIDE2NywgMjQ2LCAKLSAgICAxMTcsIDI0NiwgMTEzLCAyMDksIDEwMywgMTY3LCAyMDIsIDI0OCwgMjAyLCAyNTUsIDIwOSwgMTAzLCAxNjcsIDI0MywgCi0gICAgMTE0LCAyNDYsIDE5NiwgMjA5LCAxMDMsIDE2NywgMjA4LCAxNzMsIDIxOSwgNTMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIAotICAgIDIwOSwgOTcsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIyMywgODAsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIxOCwgCi0gICAgMTcwLCAyMDksIDEwMywgMTY3LCAyMjEsIDE5MiwgMjIyLCAyMzAsIDIwOSwgMTAzLCAxNjcsIDI0MywgMTE0LCAyNDQsIDUxLCAKLSAgICAyMDksIDEwMywgMTY3LCAyMDgsIDE3MywgMjA5LCAyMjMsIDIwOSwgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTYsIDIwOSwgCi0gICAgMTAzLCAxNjcsIDIwOSwgNDgsIDIwOSwgMTA0LCAyMDksIDEwMywgMTY3LCAyMDksIDQ4LCAyMDksIDQzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjEsIDE5MiwgMjIxLCA4NCwgMjA5LCAxMDMsIDE2NywgMjQ4LCAyNCwgMjQ5LCAwLCAyMDksIDEwMywgMTY3LCAKLSAgICAyMTgsIDcwLCAyMTgsIDk4LCAyMDksIDEwMywgMTY3LCAyMTgsIDE4MSwgMjE4LCAxNzIsIDIwOSwgMTAzLCAxNjcsIDIzOSwgCi0gICAgMTg3LCAyNDAsIDEwOCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxOCwgMjAxLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE4NywgMjQwLCA4MSwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODEsIDIxNCwgMjQ3LCAyMDksIDEwMywgMTY3LCAyMjQsIDgzLCAKLSAgICAxOTIsIDIwOSwgMTAzLCAxNjcsIDIwMiwgMjQ4LCAyMDMsIDg2LCAyMDksIDEwMywgMTY3LCAyMTUsIDIyOCwgMjE1LCAxNDQsIAotICAgIDIwOSwgMTAzLCAxNjcsIDIxNSwgMTQ1LCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyMjcsIDEwNywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjI2LCAyMzksIDIwOSwgMTAzLCAxNjcsIDIwNCwgMSwgMjA0LCAxMDYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxNSwgCi0gICAgNiwgMjA5LCAxMDMsIDE2NywgMjEyLCAxNCwgMjE1LCAxMTYsIDIwOSwgMTAzLCAxNjcsIDIxMiwgMTQsIDIxMSwgOSwgMjA5LCAKLSAgICAxMDMsIDE2NywgMjM2LCAxMzcsIDIzNiwgMjMzLCAyMDksIDEwMywgMTY3LCAyMjcsIDUwLCAyNDYsIDk3LCAyMDksIDEwMywgCi0gICAgMTY3LCAxNTgsIDI1MCwgMjIzLCAyMDksIDEwMywgMTY3LCAyMzYsIDEzNywgMjIxLCAxODcsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxOSwgMTQ0LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNjMsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMzcsIDEyNSwgCi0gICAgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDI1MiwgMjUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTAsIDI0NywgMjA5LCAKLSAgICAxMDMsIDE2NywgMjE0LCAyMjksIDc1LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgMjMxLCA4MywgMjA5LCAxMDMsIDE2NywgCi0gICAgMjE0LCAyMjksIDIwNywgMjQsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDcsIDIyLCAyMDksIDEwMywgMTY3LCAyMTQsIAotICAgIDIyOSwgNjgsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyMDYsIDE3OCwgMjA5LCAxMDMsIDE2NywgMjE4LCAxODMsIDIwOSwgCi0gICAgMTAzLCAyNDUsIDkyLCAxNiwgMjQ5LCAxLCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgNzQsIDIwOSwgMTAzLCAxNjcsIAotICAgIDIxNCwgMjI5LCAyNTEsIDEwOSwgMjA5LCAxMDMsIDE2NywgMjE0LCAyMjksIDc4LCAyMDksIDEwMywgMTY3LCAyMTQsIDIyOSwgCi0gICAgMjUxLCA2NSwgMjI1LCAxMzUsIDIwOSwgMTAzLCAxNjcsIDIxNCwgMjI5LCAyNTEsIDY1LCAyMjUsIDEzNiwgMjA5LCAxMDMsIAotICAgIDE2NywgMjI4LCAzMiwgMjA5LCAxMDMsIDE2NywgMjI1LCAxMzIsIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTMzLCAyMDksIDEwMywgCi0gICAgMTY3LCAyMjUsIDE0MSwgMjQxLCAxMjksIDIwOSwgMTAzLCAxNjcsIDIyNSwgMTQxLCAyMDksIDQ3LCAyMDksIDEwMywgMTY3LCAKLSAgICAyMjUsIDE0MSwgMjA4LCA4OCwgMjA5LCAxMDMsIDE2NywgMjI1LCAxNDEsIDI0NiwgMTc1LCAyMDksIDEwMywgMTY3LCAyMDksIAotICAgIDk1LCAyMDksIDEwMywgMTY3LCAyMjIsIDcyLCAyMDksIDEwMywgMTY3LCAyMDMsIDgwLCAyMDksIDEwMywgMTY3LCAyMzksIAotICAgIDE3NywgMjA5LCAxMDMsIDE3LCAyMDIsIDg0LCAyMDksIDEwMywgMTcsIDEwNSwgMjA5LCAxMDMsIDE3LCAxMDgsIDIwOSwgCi0gICAgMTAzLCAxNywgMTQ3LCAyMDksIDEwMywgMTcsIDE0OSwgMjA5LCAxMDMsIDE3LCAxNzAsIDIwOSwgMTAzLCAxNywgMTk1LCAKLSAgICAyMDksIDEwMywgMTcsIDIxMywgMTExLCAyMDksIDEwMywgMTcsIDE5OSwgMjA5LCAxMDMsIDE3LCAyMjIsIDYzLCAyMDksIAotICAgIDEwMywgMTY3LCAyNTAsIDIxOSwgMjA5LCAxMDMsIDE2NywgMjI5LCAxMTMsIDIyOCwgMTIsIDEsIDIyOSwgMjYsIDIyOCwgCi0gICAgMTIsIDEsIDIyOSwgMTE2LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgMjI5LCAxMTYsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAKLSAgICAyMjIsIDEyOCwgMjI4LCAxMiwgMSwgMjQ1LCAyNTQsIDIyOCwgMTIsIDEsIDIxMiwgMTQsIDIwOSwgMjMyLCAyMjgsIDEyLCAKLSAgICAxLCAyMjAsIDIzMywgMjI4LCAxMiwgMSwgMjQzLCAxMTMsIDIyOCwgMTIsIDEsIDEzNSwgMjI4LCAxMiwgMSwgMjA5LCA0OCwgCi0gICAgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIwOSwgNDgsIDIwOSwgMjMyLCAyMjgsIDEyLCAxLCAyMjEsIDE5MSwgMjI4LCAxMiwgCi0gICAgMSwgMjQ4LCAyMywgMjI4LCAxMiwgMSwgMjE4LCA2OSwgMjI4LCAxMiwgMSwgMjE4LCAxODEsIDIxMCwgMjExLCAyMjgsIDEyLCAKLSAgICAxLCAyMzksIDE4NywgMjA5LCAyMzIsIDIyOCwgMTIsIDEsIDIxOCwgMTgxLCAyMDksIDIzMiwgMjI4LCAxMiwgMSwgMjM5LCAKLSAgICAxODcsIDIxMCwgMjExLCAyMjgsIDEyLCAxLCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMDIsIDI0NywgMjI4LCAxMiwgMSwgCi0gICAgMjI3LCA1MCwgMjI3LCAxMDcsIDIyOCwgMTIsIDEsIDIyNywgNTAsIDIyNywgMTIsIDIyOCwgMTIsIDEsIDIwNCwgMCwgMjI4LCAKLSAgICAxMiwgMSwgMjEyLCAxNCwgMjEwLCAyMTEsIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMTAsIDIxMSwgMjI4LCAxMiwgMSwgNzgsIAotICAgIDIyOCwgMTIsIDEsIDIzNiwgMTM3LCAyMDksIDIzMiwgMjI4LCAxMiwgMjQxLCAxMDgsIDIyOCwgMTIsIDIyLCAyLCA2MywgCi0gICAgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMzAsIDQsIDIyOCwgMTIsIDIyLCAyLCAyNTIsIDI1LCAyMjgsIDEyLCAyMiwgCi0gICAgMiwgMjUwLCAyNDcsIDIyOCwgMTIsIDIyLCAyLCA3NSwgMjI4LCAxMiwgMjIsIDIsIDIzMSwgODMsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDMsIDEyNCwgMjI4LCAxMiwgMjIsIDIsIDIwMiwgMTY5LCAyMjgsIDEyLCAyMiwgMiwgNjgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyMDYsIDE3OCwgMjI4LCAxMiwgMjIsIDIsIDIyNSwgMTQxLCAyMjksIDksIDIyOCwgMTIsIDIxMywgMTM4LCAyLCAyMjcsIAotICAgIDQ5LCAyMjgsIDEyLCAyMTMsIDEzOCwgMiwgMjIwLCAyMzMsIDIyOCwgMTIsIDIyLCAyLCA3NCwgMjI4LCAxMiwgMjIsIDIsIAotICAgIDI0MSwgMTQ1LCAyMjgsIDEyLCAyMiwgMiwgNzgsIDIyOCwgMTIsIDIyLCAyLCAyNTAsIDgsIDIyOCwgMTIsIDIyLCAyLCAKLSAgICAyNTEsIDY0LCAyMjgsIDEyLCAyMjksIDI3LCAyMjgsIDExMywgMjI4LCAxMiwgMTQzLCAyMjUsIDE0MSwgMjQxLCAxMjksIAotICAgIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgNDcsIDIyOCwgMTIsIDE0MywgMjI1LCAxNDEsIDIwOSwgMiwgMjI4LCAxMiwgCi0gICAgMTQzLCAyMjUsIDE0MSwgMjQ3LCAxNiwgMjI4LCAxMiwgMjQ3LCA1OCwgODIsIDIyOCwgMTIsIDIyMiwgODEsIDIyOCwgMTIsIAotICAgIDE3LCAyMDIsIDg0LCAyMjgsIDEyLCAxNywgMTA1LCAyMjgsIDEyLCAxNywgMTA4LCAyMjgsIDEyLCAxNywgMTQ3LCAyMjgsIAotICAgIDEyLCAxNywgMTQ5LCAyMjgsIDEyLCAxNywgMTcwLCAyMjgsIDEyLCAxNywgMTk1LCAyMjgsIDEyLCAxNywgMjEzLCAxMTEsIAotICAgIDIyOCwgMTIsIDE3LCAxOTksIDIyOCwgMTIsIDE3LCAyMjIsIDYzLCAyMjgsIDEyLCAyMzYsIDEzNywgMjIxLCAxOTEsIDIyOCwgCi0gICAgMTIsIDIzNiwgMTM3LCAyMjQsIDgyLCAyMjgsIDEyLCAxLCAyMjksIDExNywgMjM4LCAzOSwgMjI4LCAxMiwgMSwgMjI5LCAKLSAgICAxMTcsIDIyMCwgMjMzLCA3NywgNCwgMjIwLCAzOSwgNzcsIDEzMSwgMjM3LCAyMzIsIDIwMywgMywgMjI0LCAxNzMsIDIwOCwgCi0gICAgMjYsIDYzLCA3NywgMTMxLCAyMzcsIDIzMiwgMjAzLCAzLCAyMjQsIDE3MywgMjU1LCAyMiwgMjE1LCAyMzIsIDI0OCwgMTY0LCAKLSAgICAxOTIsIDc3LCAxMzEsIDIzNywgMjMyLCAyMDMsIDMsIDIyNCwgMTczLCAyNTUsIDIyLCAyMzcsIDIzMiwgMjA4LCA2LCAxOTIsIAotICAgIDc3LCAxMzEsIDgxLCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAxMzEsIDI0NiwgMTIsIDIwMywgMywgCi0gICAgMjI0LCAxNzMsIDIxMywgOTcsIDE5MiwgNzcsIDEzMSwgMjQ3LCAzNCwgMjAzLCAzLCAyMjQsIDE3MywgMjE4LCAxNzEsIAotICAgIDIxMywgODMsIDE5MiwgNzcsIDEzMSwgMjAzLCAzLCAyMjQsIDE3MywgMjA4LCA2LCAyMTMsIDgzLCAxOTIsIDc3LCAxMzEsIAotICAgIDIxNCwgMjA1LCAyMTMsIDgyLCA3NywgMTMxLCAyNDcsIDE5NiwgMjAzLCAzLCAyMjQsIDE3MiwgNzcsIDEzMSwgMjQ4LCA0NSwgCi0gICAgMjEyLCAyMzgsIDIwMywgMywgMjI0LCAxNzIsIDc3LCAxMzEsIDIzMCwgMjQzLCAyMDgsIDUsIDc3LCAxMzEsIDI0NCwgNDQsIAotICAgIDIwOCwgNiwgMjQ3LCAxOTUsIDc3LCAxMzEsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMTMsIDgyLCA3NywgMTMxLCAKLSAgICAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIyMCwgMjM4LCAyMDgsIDYsIDIxMywgODIsIDc3LCAxMzEsIDIxNSwgMjU1LCAKLSAgICAyNDYsIDE1NiwgMjExLCAxODAsIDIxMywgODIsIDc3LCAxMzEsIDIxNiwgNjUsIDIzOCwgOSwgMjEzLCA4MiwgNzcsIDEzMSwgCi0gICAgMjQ3LCAzNCwgMjU1LCAyNiwgMjE1LCAxNDksIDIyNSwgMjEsIDE2MywgMjQ3LCA2MSwgNzcsIDEzMSwgMjM3LCAyMzIsIAotICAgIDIwOCwgNSwgNzcsIDIyNywgMzUsIDIsIDI0NiwgMTk3LCAyMTUsIDE0OCwgNzcsIDIyNywgMzUsIDIsIDIyNywgMTU5LCAKLSAgICAyMTUsIDE0OCwgNzcsIDI1MCwgNTUsIDIsIDIxMywgOTMsIDIzOCwgMTkzLCAyNTUsIDI3LCAyMTUsIDE0OCwgNzcsIDI1MCwgCi0gICAgNTUsIDIsIDI1NSwgMjQsIDE4NSwgNzcsIDI1MCwgNTUsIDIsIDIxNCwgMTc4LCAyMDgsIDAsIDc3LCAyLCAyMTYsIDE2MCwgCi0gICAgMjQzLCAxMjcsIDIzOCwgMTkyLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIAotICAgIDI0MywgMTI3LCAyMzcsIDIzMywgNzcsIDIsIDIxNiwgMTYwLCAyMjMsIDk5LCAyMzgsIDE5MiwgNzcsIDIsIDIxNiwgMTYwLCAKLSAgICAyMjMsIDk5LCAyMzgsIDQxLCA3NywgMiwgMjE2LCAxNjAsIDI0MywgMTI3LCAyMTYsIDE2MCwgMjIzLCA5OCwgNzcsIDE3LCAKLSAgICAyMDIsIDg0LCA3NywgMTcsIDEwNSwgNzcsIDE3LCAxMDgsIDc3LCAxNywgMTQ3LCA3NywgMTcsIDE0OSwgNzcsIDE3LCAxNzAsIAotICAgIDc3LCAxNywgMTk1LCA3NywgMTcsIDIxMywgMTExLCA3NywgMTcsIDE5OSwgNzcsIDE3LCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgCi0gICAgMTA1LCA3NywgMTcsIDE2MiwgMTA4LCA3NywgMTcsIDE2MiwgMTQ3LCA3NywgMTcsIDE2MiwgMTQ5LCA3NywgMTcsIDE2MiwgCi0gICAgMTcwLCA3NywgMTcsIDE2MiwgMTk1LCA3NywgMTcsIDE2MiwgMjEzLCAxMTEsIDc3LCAxNywgMTYyLCAxOTksIDc3LCAxNywgCi0gICAgMTYyLCAyMjIsIDYzLCA3NywgMTcsIDE2MiwgMjAyLCA4NCwgNzcsIDEzMSwgMjQ3LCAxOTgsIDIxNSwgMTQ4LCA3NywgMTMxLCAKLSAgICAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIyMCwgMjQ5LCAyMDIsIDE5LCA3NywgMTMxLCAyNDcsIDM0LCAyNTUsIDI2LCAyMTUsIAotICAgIDE0OSwgMjQ3LCAxMjgsIDIyNCwgMTI2LCAyNDcsIDYxLCA3NywgMTMxLCAyMjIsIDE5NCwgMjQ3LCAxMjcsIDIxMywgOTQsIAotICAgIDIxNSwgMTQ4LCA3NywgMTMxLCAyNDYsIDE3MSwgMjI0LCAxNzIsIDc3LCAxMzEsIDIwOCwgMjEsIDI1NSwgMjMsIDc3LCAKLSAgICAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxNzQsIDc3LCAxMzEsIDIzNywgMjE1LCAyMTUsIDE0OSwgMjM3LCAxODAsIAotICAgIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAxNzQsIDc3LCAxMzEsIDI1MCwgMjI0LCAyMjksIDEzNCwgMjM3LCAKLSAgICAxODAsIDc3LCAyLCAyMDMsIDcyLCAyMDgsIDQsIDc3LCAyLCAyMjUsIDEwMSwgMjA4LCA0LCA3NywgMSwgMTczLCA3NywgMSwgCi0gICAgMjI5LCAxNDQsIDc3LCAxLCAyMzksIDgsIDc3LCAxLCAyMzgsIDExOSwgNzcsIDEsIDIyMiwgMjAzLCA3NywgMSwgMjQ3LCAKLSAgICA5MiwgNzcsIDEsIDI0NiwgMTk5LCA3NywgMSwgMjMwLCAxODEsIDc3LCAxLCAyMjEsIDExLCA3NywgMSwgMjA3LCAyNDEsIAotICAgIDc3LCAxLCAyMDcsIDIyOSwgNzcsIDEsIDI0NCwgMTIwLCA3NywgMSwgMjQ0LCAxMDQsIDc3LCAxLCAyMjEsIDIyNywgNzcsIAotICAgIDEsIDIxMCwgMjIsIDc3LCAxLCAyMDksIDEwOCwgNzcsIDEsIDI0NCwgMjEyLCA3NywgMSwgMjQ0LCAxLCA3NywgMSwgMjAxLCAKLSAgICAyMDEsIDc3LCAxLCAxODUsIDc3LCAxLCAyMTgsIDIwOCwgNzcsIDEsIDI0OSwgMzIsIDc3LCAxLCAyNDgsIDk4LCA3NywgMSwgCi0gICAgMTkyLCA3NywgMSwgMjA4LCAyMCwgNzcsIDEsIDIwOCwgMTAsIDc3LCAxLCAyNDEsIDI1NSwgNzcsIDEsIDI0MSwgMjQ5LCAKLSAgICA3NywgMSwgMjA0LCAxMTEsIDc3LCAxLCAyMDIsIDgwLCA3NywgMSwgMjAyLCAxMTYsIDc3LCAxLCAyNTUsIDI5LCA3NywgMSwgCi0gICAgMTk4LCA3NywgMSwgMjE2LCAyMjAsIDc3LCAxLCAyMjgsIDExMywgNzcsIDEsIDIxMywgOTAsIDc3LCAxLCAyMTEsIDE2NCwgCi0gICAgNzcsIDEsIDIxNSwgMzYsIDc3LCAxLCAxNTIsIDc3LCAxLCA2MywgNzcsIDEsIDIyOCwgMjIzLCA3NywgMSwgMjM5LCAyMjksIAotICAgIDIxNiwgMjIwLCA3NywgMSwgMjI5LCA0NywgNzcsIDEsIDIxNSwgMTg1LCA3NywgMjIsIDIsIDI1MiwgMjUsIDc3LCAyMiwgMiwgCi0gICAgNzUsIDc3LCAyMiwgMiwgMjMxLCA4MywgNzcsIDIyLCAyLCA2OCwgNzcsIDIyLCAyLCAyMDYsIDE3OCwgNzcsIDIyLCAyLCAKLSAgICAxMjUsIDE0NiwgNzcsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCA3NywgMjIsIDIsIDEyNSwgMTU5LCA3NywgMjIsIDIsIDEyNSwgCi0gICAgMjI3LCA3OCwgNzcsIDIyLCAyLCA3NCwgNzcsIDIyLCAyLCAyNDEsIDE2MSwgNzcsIDIyLCAyLCA3OCwgNzcsIDIyLCAyLCAKLSAgICAyMjAsIDE4LCA3NywgMiwgMjE1LCAyMzgsIDIxMSwgMTEsIDIyMiwgMjA0LCAyMTUsIDIyNywgNzcsIDIsIDIxNSwgMjMyLCAKLSAgICAyNDgsIDE2MywgNzcsIDIyLCAyLCAyMTYsIDczLCA3NSwgNzcsIDIyLCAyLCAyMTYsIDczLCAyMzEsIDgzLCA3NywgMiwgCi0gICAgMjIwLCAyNDksIDIwMiwgMjAsIDIyMywgMTA3LCAyNDQsIDIxMiwgNzcsIDIsIDIxMiwgMjcsIDIyNywgMjM2LCA3NywgMTMxLCAKLSAgICAyMzcsIDEzOSwgNzcsIDEzMSwgMjE5LCAxMzIsIDc3LCAyLCAyMjcsIDIzOSwgMjE1LCAxNDgsIDc3LCAyLCAyMDMsIDc3LCAKLSAgICAyMTUsIDE0OCwgNzcsIDIsIDIyNywgMjQwLCAyMDgsIDIxLCAyNDcsIDYxLCA3NywgMiwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIAotICAgIDIsIDIzNywgMjM2LCAyNDcsIDYyLCAyMTYsIDYzLCA3NywgMiwgMjM3LCAyMzYsIDIyNSwgMTQsIDIxNiwgNjMsIDc3LCAyLCAKLSAgICAyMzAsIDIzOSwgMjI1LCAyNCwgMjQ3LCA2MSwgNzcsIDIxMCwgMjU0LCAyLCAyMjcsIDI0MCwgMjA4LCAyMSwgMjQ3LCA2MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAyLCAyMjUsIDI0LCAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDIsIDIzMCwgMjM5LCAyMjUsIDI0LCAKLSAgICAyNDcsIDYxLCA3NywgMjEwLCAyNTQsIDEsIDE3MywgNzcsIDIxMCwgMjU0LCAxLCAyMjksIDE0NCwgNzcsIDIxMCwgMjU0LCAKLSAgICAxLCAyMzksIDgsIDc3LCAyMTAsIDI1NCwgMSwgMjM4LCAxMTksIDc3LCAyMTAsIDI1NCwgMSwgMjIyLCAyMDMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjQ3LCA5MiwgNzcsIDIxMCwgMjU0LCAxLCAyNDYsIDE5OSwgNzcsIDIxMCwgMjU0LCAxLCAyMzAsIDE4MSwgCi0gICAgNzcsIDIxMCwgMjU0LCAxLCAyMjEsIDExLCA3NywgMjEwLCAyNTQsIDEsIDIwNywgMjQxLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwNywgMjI5LCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTIwLCA3NywgMjEwLCAyNTQsIDEsIDI0NCwgMTA0LCA3NywgMjEwLCAKLSAgICAyNTQsIDEsIDIyMSwgMjI3LCA3NywgMjEwLCAyNTQsIDEsIDIxMCwgMjIsIDc3LCAyMTAsIDI1NCwgMSwgMjA5LCAxMDgsIAotICAgIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAyMTIsIDc3LCAyMTAsIDI1NCwgMSwgMjQ0LCAxLCA3NywgMjEwLCAyNTQsIDEsIDIwMSwgCi0gICAgMjAxLCA3NywgMjEwLCAyNTQsIDEsIDE4NSwgNzcsIDIxMCwgMjU0LCAxLCAyMTgsIDIwOCwgNzcsIDIxMCwgMjU0LCAxLCAKLSAgICAyNDksIDMyLCA3NywgMjEwLCAyNTQsIDEsIDI0OCwgOTgsIDc3LCAyMTAsIDI1NCwgMSwgMTkyLCA3NywgMjEwLCAyNTQsIDEsIAotICAgIDIwOCwgMjAsIDc3LCAyMTAsIDI1NCwgMSwgMjA4LCAxMCwgNzcsIDIxMCwgMjU0LCAxLCAyNDEsIDI1NSwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAyNDEsIDI0OSwgNzcsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgNzcsIDIxMCwgMjU0LCAxLCAyMDIsIDgwLCAKLSAgICA3NywgMjEwLCAyNTQsIDEsIDIwMiwgMTE2LCA3NywgMjEwLCAyNTQsIDEsIDI1NSwgMjksIDc3LCAyMTAsIDI1NCwgMSwgCi0gICAgMTk4LCA3NywgMjEwLCAyNTQsIDEsIDIxNiwgMjIwLCA3NywgMjEwLCAyNTQsIDEsIDIyOCwgMTEzLCA3NywgMjEwLCAyNTQsIAotICAgIDEsIDIxMywgOTAsIDc3LCAyMTAsIDI1NCwgMSwgMjExLCAxNjQsIDc3LCAyMTAsIDI1NCwgMSwgMjE1LCAzNiwgNzcsIDIxMCwgCi0gICAgMjU0LCAxLCAxNTIsIDc3LCAyMTAsIDI1NCwgMSwgNjMsIDc3LCAyMTAsIDI1NCwgMSwgMjI4LCAyMjMsIDc3LCAyMTAsIAotICAgIDI1NCwgMSwgMjM5LCAyMjksIDIwNCwgMTExLCA3NywgMjEwLCAyNTQsIDEsIDIzOSwgMjI5LCAxOTgsIDc3LCAyMTAsIDI1NCwgCi0gICAgMSwgMjM5LCAyMjksIDIxNiwgMjIwLCA3NywgMjI4LCAyMTAsIDIxNSwgMTQ2LCAyMjksIDE0NCwgNzcsIDIyOCwgMjEwLCAKLSAgICAyMTUsIDE0NiwgMjI5LCAxNDUsIDI0NywgMTI4LCAyMjQsIDEyNiwgMjQ3LCA2MSwgNzcsIDI0NywgNDksIDIsIDc5LCAyNDgsIAotICAgIDE1NSwgNzcsIDI0NywgNDksIDIsIDE1NywgMjQ4LCAxNTUsIDc3LCAyNDcsIDQ5LCAyLCAyNDcsIDUwLCAyMDksIDE4NSwgCi0gICAgNzcsIDI0NywgNDksIDIsIDIxNCwgMjA0LCAyNTUsIDI4LCA3NywgMTYsIDI0MiwgNTUsIDI0NywgMTkzLCA3NywgMTYsIAotICAgIDIxNiwgMTU5LCAyMTUsIDIzOSwgNzcsIDE2LCAyMTksIDE1NSwgMjM4LCAxOTEsIDc3LCAxNiwgMjE2LCAxNTksIDIxNSwgCi0gICAgMjQwLCAyMTYsIDY1LCAyMzgsIDgsIDc3LCAxNiwgMjE4LCAxNzEsIDE4NSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAxOTMsIAotICAgIDc3LCAxNiwgMjIxLCAxNzUsIDI0NywgMTk0LCAyMjAsIDIzOCwgMjU1LCAyNSwgNzcsIDE2LCAyMjEsIDE3NSwgMjQ3LCAKLSAgICAxOTQsIDIzNywgMjM0LCAyNTUsIDI1LCA3NywgMTYsIDIyMSwgMTc1LCAyNDcsIDE5NCwgMjQ3LCAxMjgsIDI1NSwgMjUsIAotICAgIDc3LCAyLCAyMTYsIDE2MCwgMjIzLCA5OSwgMjE2LCAxNjAsIDI0MywgMTI2LCA3NywgMiwgMjE2LCAxNjAsIDIyMywgOTksIAotICAgIDIzNywgMjMzLCA3NywgMTMxLCAyNDcsIDE5NywgMjEyLCAyMzgsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgCi0gICAgMTMxLCAyMjQsIDg0LCAyMDMsIDMsIDIzOCwgODIsIDIyNCwgMTczLCAyMTYsIDY0LCA3NywgMTMxLCAyMjAsIDIzOCwgMjA4LCAKLSAgICA1LCA3NywgMTMxLCA4MSwgMjQ3LCAyMjAsIDIxNSwgMjI5LCAyMDMsIDMsIDIyNCwgMTczLCAyMjUsIDIyLCAxOTIsIDc3LCAKLSAgICAxMzEsIDI0NiwgMTIsIDI0NywgMjIwLCAyMTUsIDIyOSwgMjAzLCAzLCAyMjQsIDE3MywgMjEzLCA5NywgMTkyLCAyMTYsIAotICAgIDE1LCAyMTAsIDE3NCwgNTQsIDIyNywgMjIxLCAyMTAsIDE3NCwgNTQsIDIxNiwgMTUsIDIxMCwgMTc0LCAyLCAzLCAyNDMsIAotICAgIDgzLCAyMjcsIDIyMSwgMjEwLCAxNzQsIDIsIDMsIDI0MywgODMsIDc3LCAxMzEsIDIyNywgMjMxLCAyMjUsIDI1LCAyMTUsIAotICAgIDE0OCwgNzcsIDEzMSwgMjA4LCAxMTIsIDIyNSwgMjUsIDIxNSwgMTQ4LCA2OSwgMSwgMTczLCA2OSwgMSwgMjI5LCAxNDQsIAotICAgIDY5LCAxLCAyMzksIDgsIDY5LCAxLCAyMzgsIDExOSwgNjksIDEsIDIyMiwgMjAzLCA2OSwgMSwgMjQ3LCA5MiwgNjksIDEsIAotICAgIDI0NiwgMTk5LCA2OSwgMSwgMjMwLCAxODEsIDY5LCAxLCAyMzAsIDE0OSwgNjksIDEsIDIyMSwgMTEsIDY5LCAxLCAyMjEsIAotICAgIDE5MywgNjksIDEsIDIwNywgMjQxLCA2OSwgMSwgMjA3LCAyMjksIDY5LCAxLCAyNDQsIDEyMCwgNjksIDEsIDI0NCwgMTA0LCAKLSAgICA2OSwgMSwgMjIxLCAyMjcsIDY5LCAxLCAyMTAsIDIyLCA2OSwgMSwgMjA5LCAxMDgsIDY5LCAxLCAyNDQsIDIxMiwgNjksIDEsIAotICAgIDI0NCwgMSwgNjksIDEsIDIwMSwgMjAxLCA2OSwgMSwgMTg1LCA2OSwgMSwgMjE4LCAyMDgsIDY5LCAxLCAyNDksIDMyLCA2OSwgCi0gICAgMSwgMjQ4LCA5OCwgNjksIDEsIDE5MiwgNjksIDEsIDE5OCwgNjksIDEsIDIxNiwgMjIwLCA2OSwgMSwgMjI4LCAxMTMsIDY5LCAKLSAgICAxLCAyMDQsIDExMSwgNjksIDEsIDIxNSwgMzYsIDY5LCAxLCAxNTIsIDY5LCAxLCAyMjcsIDc3LCA2OSwgMSwgNjMsIDY5LCAKLSAgICAxLCAyMTMsIDY3LCA2MywgNjksIDEsIDc1LCA2OSwgMSwgMjMxLCA4MywgNjksIDEsIDY4LCA2OSwgMSwgMjA2LCAxNzgsIAotICAgIDY5LCAxLCA3NCwgNjksIDEsIDIyNCwgNTUsIDc0LCA2OSwgMSwgNzgsIDY5LCAxLCAyNTAsIDM0LCA2OSwgMjIsIDIsIDIwOSwgCi0gICAgMjM0LCAyNTIsIDI1LCA2OSwgMjIsIDIsIDI1MiwgMjUsIDY5LCAyMiwgMiwgNzUsIDY5LCAyMiwgMiwgMjMxLCA4MywgNjksIAotICAgIDIyLCAyLCA2OCwgNjksIDIyLCAyLCAyMDYsIDE3OCwgNjksIDIyLCAyLCA3NCwgNjksIDIyLCAyLCAyNTEsIDY0LCA2OSwgCi0gICAgMjIsIDIsIDIyNCwgNTUsIDIzMSwgODMsIDY5LCAyMiwgMiwgMjI0LCA1NSwgNzgsIDY5LCAyMiwgMiwgMTg4LCA1NSwgNjksIAotICAgIDIsIDI1MCwgMTgwLCA2OSwgMiwgNzAsIDU2LCA2OSwgMiwgMjA1LCAxOTksIDY5LCAyLCAyMDUsIDIwNCwgNjksIDIsIDI1MCwgCi0gICAgNzksIDY5LCAxMDksIDIsIDE3NCwgMTk4LCA2OSwgMTA5LCAyLCAxNzQsIDIxNiwgMjIwLCA2OSwgMTA5LCAyLCAxNzQsIAotICAgIDIwNCwgMTExLCA2OSwgMTA5LCAyLCAxNzQsIDE1MiwgNjksIDEsIDIzNywgMjQ5LCAyMTUsIDM2LCA2OSwgMTcsIDIwMiwgCi0gICAgODQsIDY5LCAxNywgMTA1LCA2OSwgMTcsIDEwOCwgNjksIDE3LCAxNDcsIDY5LCAxNywgMTQ5LCA2OSwgMTcsIDE3MCwgNjksIAotICAgIDE3LCAxOTUsIDY5LCAxNywgMjEzLCAxMTEsIDY5LCAxNywgMTk5LCA2OSwgMTcsIDIyMiwgNjMsIDY5LCAyLCAyMjcsIDg2LCAKLSAgICAyMTQsIDE2NywgNjksIDIsIDIxNCwgMTY3LCA2OSwgMTYsIDIyNywgNDQsIDY5LCAxNiwgMjQ1LCAyMjcsIDY5LCAxNiwgCi0gICAgMjUxLCA4NSwgNjksIDE2LCAyMzgsIDE3NCwgNjksIDEsIDIxMywgOTAsIDY5LCAxLCAyMTEsIDE2NCwgNjksIDEsIDEyNSwgCi0gICAgMTQ2LCA2OSwgMSwgMTI1LCAyMTUsIDE4NiwgNjksIDEsIDEyNSwgMTU5LCA2OSwgMSwgMTI1LCAyMjcsIDc4LCA2OSwgMjIsIAotICAgIDIsIDEyNSwgMTQ2LCA2OSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDY5LCAyMiwgMiwgMTI1LCAxNTksIDY5LCAyMiwgMiwgCi0gICAgMTI1LCAyMjcsIDc4LCA2OSwgMSwgMjI0LCA1NSwgMjIyLCAyMDMsIDY5LCAxLCAyMjQsIDU1LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIyNCwgNTUsIDI0OCwgMTk4LCA2OSwgMSwgMjI0LCA1NSwgMjQ4LCAxOTMsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgCi0gICAgMjAxLCAyMDEsIDY5LCAxMDksIDIsIDIyNCwgNTUsIDE3NCwgMTkyLCA2OSwgMTA5LCAyLCAyMjQsIDU1LCAxNzQsIDIyOCwgCi0gICAgMTEzLCA2OSwgMSwgMjEzLCA5NiwgMjI5LCAyMzcsIDIxMywgOTAsIDY5LCAyMiwgMiwgMjEzLCA5NiwgMjI5LCAyMzcsIAotICAgIDI0MCwgMjM4LCA2OSwgMTQzLCAxMzEsIDIxMywgOTYsIDIyOSwgMjM3LCAyMzcsIDc5LCA2OSwgMTQzLCAxMzEsIDIxMywgCi0gICAgOTYsIDIyOSwgMjM3LCAyMjksIDIwMiwgMjE4LCAxODAsIDY5LCAxLCAyMDQsIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIAotICAgIDIwOSwgMTA4LCA2OSwgMSwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMTcsIDE1MiwgNjksIDIyLCAyLCAyMDQsIAotICAgIDQ0LCAyMTcsIDE0NiwgMjI5LCAyMzcsIDI0MCwgMjM4LCA2OSwgMjIsIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgCi0gICAgMjA3LCAyNCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNjAsIDY5LCAyLCAyMDQsIDQ0LCAKLSAgICAyMTcsIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU5LCA2OSwgMiwgMjA0LCA0NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDgsIAotICAgIDE1OCwgNjksIDIsIDIwNCwgNDQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjA4LCAxNTcsIDY5LCAyLCAyMDQsIDQ0LCAyMTcsIAotICAgIDE0NiwgMjI5LCAyMzcsIDIwOCwgMTU2LCA2OSwgMSwgMjQxLCAxNzQsIDIxNywgMTQ2LCAyMjksIDIzNywgMjIxLCAyMjcsIAotICAgIDY5LCAxLCAyNDEsIDE3NCwgMjE3LCAxNDYsIDIyOSwgMjM3LCAyMDIsIDE3NiwgNjksIDEsIDI0MSwgMTc0LCAyMTcsIDE0NiwgCi0gICAgMjI5LCAyMzcsIDIzOCwgODQsIDY5LCAyMiwgMiwgMjM4LCAxODYsIDIyOSwgMjM3LCA3NSwgNjksIDIyLCAyLCAyMjksIAotICAgIDIwNywgMjIwLCA3MywgNjksIDIyLCAyLCAyMjksIDIwNywgNjgsIDY5LCAyMiwgMiwgMjI5LCAyMDcsIDI0MSwgMTYxLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMTczLCA2OSwgMSwgMjEzLCA2NywgMjI5LCAxNDQsIDY5LCAxLCAyMTMsIDY3LCAyMzksIDgsIDY5LCAxLCAKLSAgICAyMTMsIDY3LCAyNDcsIDkyLCA2OSwgMSwgMjEzLCA2NywgMjAyLCAxMTYsIDY5LCAxLCAyMTMsIDY3LCAyMjEsIDExLCA2OSwgCi0gICAgMSwgMjEzLCA2NywgMjQ0LCAyMTIsIDY5LCAxLCAyMTMsIDY3LCAyMDEsIDIwMSwgNjksIDEsIDIxMywgNjcsIDIxOCwgMjA4LCAKLSAgICA2OSwgMSwgMjEzLCA2NywgMjQwLCAxMDgsIDY5LCAxLCAyMTMsIDY3LCAyNDksIDMyLCA2OSwgMSwgMjEzLCA2NywgMjA5LCAKLSAgICAxMDgsIDY5LCAxLCAyMTMsIDY3LCAxNTIsIDY5LCAxMDksIDIsIDIxMywgNjcsIDE3NCwgMjA0LCAxMTEsIDY5LCAyMiwgMiwgCi0gICAgMjEzLCA2NywgMjUyLCAyNSwgNjksIDIyLCAyLCAyMTMsIDY3LCA3NCwgNjksIDIyLCAyLCAyMTMsIDY3LCAxODgsIDU1LCAKLSAgICA2OSwgMjIsIDIsIDIxMywgNjcsIDQ2LCAyMDMsIDEyNCwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCAKLSAgICA2NywgMjA4LCAxNTgsIDY5LCAyLCAyMTMsIDY3LCAyMDgsIDE1NiwgNjksIDIsIDIxMywgNjcsIDIwOCwgMTU1LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU5LCA2OSwgMiwgMjEzLCA2NywgMjQ1LCAxNTYsIDIwOCwgMTU4LCA2OSwgMiwgCi0gICAgMjEzLCA2NywgMjQ1LCAxNTYsIDI0MSwgOTUsIDIwOCwgMTYxLCA2OSwgMSwgMjE1LCAxMzAsIDIxOSwgMTM5LCAyNDAsIAotICAgIDEwOCwgNjksIDIsIDIxNSwgMTMwLCAyMTksIDEzOSwgMjA4LCAxNTYsIDY5LCAyMTMsIDY3LCAxNywgMjAyLCA4NCwgNjksIAotICAgIDIxMywgNjcsIDE3LCAxMDUsIDY5LCAyMTMsIDY3LCAxNywgMTA4LCA2OSwgMjEzLCA2NywgMTcsIDE0NywgNjksIDIxMywgCi0gICAgNjcsIDE3LCAxNDksIDY5LCAyMTMsIDY3LCAxNywgMTcwLCA2OSwgMjEzLCA2NywgMTcsIDE5NSwgNjksIDIxMywgNjcsIDE3LCAKLSAgICAyMTMsIDExMSwgNjksIDIxMywgNjcsIDE3LCAxOTksIDY5LCAyMTMsIDY3LCAxNywgMjIyLCA2MywgNjksIDIsIDIyOSwgCi0gICAgMTM3LCAyMDgsIDE2MCwgNjksIDIsIDIyOSwgMTM3LCAyMDgsIDE1OCwgNjksIDIyLCAyLCAyNTEsIDUxLCA2MywgNjksIDIyLCAKLSAgICAyLCAyNTEsIDUxLCAyNTEsIDY0LCA2OSwgMTYsIDIxMywgNjcsIDEwNSwgNjksIDE2LCAyMTMsIDY3LCAyNDAsIDIxMSwgCi0gICAgMTE0LCA2LCAxLCAyNTAsIDIzMSwgMTE0LCA2LCAxLCAyNDgsIDI0MiwgMTE0LCA2LCAxLCAyMzgsIDIzNCwgMTE0LCA2LCAxLCAKLSAgICAyNDMsIDkzLCAxMTQsIDYsIDEsIDI0MSwgOTIsIDExNCwgNiwgMSwgMjA1LCAyMTMsIDExNCwgNiwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCA2LCAxLCAyMDksIDIzMCwgMTE0LCA2LCAxLCAyMzEsIDQ5LCAxMTQsIDYsIDEsIDIzMCwgNCwgMTE0LCA2LCAxLCAKLSAgICAyMjgsIDIsIDExNCwgNiwgMSwgMjI1LCAxMjIsIDExNCwgNiwgMSwgMjIzLCA3NCwgMTE0LCA2LCAxLCAyMjAsIDMxLCAxMTQsIAotICAgIDYsIDEsIDIxOSwgOTEsIDExNCwgNiwgMSwgMjAyLCA3NiwgMTE0LCA2LCAxLCAyMTYsIDIwMiwgMTE0LCA2LCAxLCAyMTQsIAotICAgIDI0MywgMTE0LCA2LCAxLCAyMDksIDIxOCwgMTE0LCA2LCAxLCAyMDYsIDI1NSwgMTE0LCA2LCAxLCAyMTgsIDIwMCwgMTE0LCAKLSAgICA2LCAxLCAyMjksIDEzMiwgMTE0LCA2LCAxLCAyMzgsIDExMCwgMTE0LCA2LCAxLCAyMTcsIDExMSwgMTE0LCA2LCAxLCAyMTIsIAotICAgIDI1NSwgMTE0LCA2LCAxLCAyNDYsIDEyOSwgMTE0LCA2LCAxLCAyNDcsIDYxLCAxMTQsIDYsIDEsIDIzMCwgMTMzLCAxMTQsIAotICAgIDYsIDEsIDI0NiwgNjgsIDExNCwgNiwgMSwgMjQ2LCAxODMsIDExNCwgNiwgMSwgMjAzLCAxODAsIDExNCwgNiwgMSwgMjMwLCAKLSAgICAxNDYsIDExNCwgNiwgMSwgMjM3LCAxNTQsIDExNCwgNiwgMSwgMjM3LCA2NywgMTE0LCA2LCAxLCAyMzYsIDI1NCwgMTE0LCAKLSAgICA2LCAxLCAyMDQsIDYyLCAxMTQsIDYsIDEsIDIzNywgOTIsIDExNCwgNiwgMSwgMjM2LCAxMzIsIDExNCwgNiwgMSwgMjAyLCAKLSAgICAyNDksIDExNCwgNiwgMSwgMjUxLCA5OCwgMTE0LCAxLCAyNTAsIDIzMSwgMTE0LCAxLCAyNDgsIDI0MiwgMTE0LCAxLCAyMzgsIAotICAgIDIzNCwgMTE0LCAxLCAyNDMsIDkzLCAxMTQsIDEsIDI0MSwgOTIsIDExNCwgMSwgMjA1LCAyMTMsIDExNCwgMSwgMjAyLCA4NywgCi0gICAgMTE0LCAxLCAyMDksIDIzMCwgMTE0LCAxLCAyMzEsIDQ5LCAxMTQsIDEsIDIzMCwgNCwgMTE0LCAxLCAyMjgsIDIsIDExNCwgCi0gICAgMSwgMjI1LCAxMjIsIDExNCwgMSwgMjIzLCA3NCwgMTE0LCAxLCAyMjAsIDMxLCAxMTQsIDEsIDIxOSwgOTEsIDExNCwgMSwgCi0gICAgMjAyLCA3NiwgMTE0LCAxLCAyMTYsIDIwMiwgMTE0LCAxLCAyMTQsIDI0MywgMTE0LCAxLCAyMDksIDIxOCwgMTE0LCAxLCAKLSAgICAyMDYsIDI1NSwgMTE0LCAxLCAyMTgsIDIwMCwgMTE0LCAxLCAyMjksIDEzMiwgMTE0LCAxLCAyMzgsIDExMCwgMTE0LCAxLCAKLSAgICAyMTcsIDExMSwgMTE0LCAxLCAyMTIsIDI1NSwgMTE0LCAxLCAyNDYsIDEyOSwgMTE0LCAxLCAyNDcsIDYxLCAxMTQsIDEsIAotICAgIDIzMCwgMTMzLCAxMTQsIDEsIDI0NiwgNjgsIDExNCwgMSwgMjQ2LCAxODMsIDExNCwgMSwgMjAzLCAxODAsIDExNCwgMSwgCi0gICAgMjMwLCAxNDYsIDExNCwgMSwgMjM3LCAxNTQsIDExNCwgMSwgMjM3LCA2NywgMTE0LCAxLCAyMzYsIDI1NCwgMTE0LCAxLCAKLSAgICAyMDQsIDYyLCAxMTQsIDEsIDIzNywgOTIsIDExNCwgMSwgMjM2LCAxMzIsIDExNCwgMSwgMjQwLCAyNiwgMTE0LCAxLCAyMDIsIAotICAgIDI0OSwgMTE0LCAxLCAyNDEsIDExMCwgMTE0LCAxLCAyMDcsIDE3NCwgMjM4LCAyMzQsIDExNCwgMSwgMjUxLCA1OSwgMTE0LCAKLSAgICAyMTksIDg5LCAyMTMsIDEzMCwgNjUsIDEsIDExNCwgMjIzLCA3NCwgMTE0LCAxLCAyNTEsIDk4LCAxMTQsIDEsIDIzNywgOTEsIAotICAgIDU0LCAxMTQsIDEsIDIyOCwgMTA0LCA1NCwgMjgsIDEyMywgMjI5LCA1OSwgMjgsIDEyMywgMjExLCAxNTYsIDI4LCAxMjMsIAotICAgIDIyMiwgOTMsIDI4LCAxMjMsIDIwOCwgMjQwLCAyOCwgMTIzLCAyMTEsIDE0NSwgMjgsIDEyMywgMjE2LCA0NywgMjgsIDEyMywgCi0gICAgMjI0LCAxNDEsIDI4LCAxMjMsIDIxOCwgMTUzLCAyOCwgMTIzLCAyMTEsIDE1MywgMjgsIDEyMywgMjEyLCAxMTEsIDI4LCAKLSAgICAxMjMsIDIxMSwgMTUwLCAyOCwgMTIzLCAyMzEsIDEwNiwgMjgsIDEyMywgMjQ2LCA3NCwgMjgsIDEyMywgMjExLCAxNjAsIAotICAgIDI4LCAxMjMsIDI0NiwgMTM4LCAyOCwgMTIzLCAyMjksIDEyMCwgMjgsIDEyMywgMjA5LCA2NiwgMjgsIDEyMywgMjE4LCAKLSAgICAxOTAsIDI4LCAxMjMsIDIzNiwgMjUxLCAyOCwgMTIzLCAyMjIsIDg5LCAyOCwgMTIzLCAyMTEsIDE1NCwgMjgsIDEyMywgCi0gICAgMjIyLCA4MywgMjgsIDEyMywgMjIyLCA4NywgMjgsIDEyMywgMjA4LCAyMzcsIDI4LCAxMjMsIDIxNiwgMzUsIDI4LCAxMjMsIAotICAgIDIxMSwgMTUyLCAyOCwgMTIzLCAyMTYsIDQ1LCAyOCwgMTIzLCAyMjksIDI0MywgMjgsIDEyMywgMjI0LCAxMzQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQ2LCAyOCwgMTIzLCAyMTgsIDE0OCwgMjgsIDEyMywgMjE4LCAxNDYsIDI4LCAxMjMsIDIxOCwgMTM0LCAKLSAgICAyOCwgMTIzLCAyMTgsIDE0MiwgMjgsIDEyMywgMjE4LCAxNDAsIDI4LCAxMjMsIDIxOCwgMTM3LCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOSwgMjgsIDEyMywgMjE4LCAxMzYsIDI4LCAxMjMsIDIxOCwgMTQxLCAyOCwgMTIzLCAyMTgsIDE1MSwgMjgsIDEyMywgCi0gICAgMjE4LCAxNTIsIDI4LCAxMjMsIDIxOCwgMTM1LCAyOCwgMTIzLCAyMTgsIDE0NSwgMjgsIDEyMywgMjI5LCAyNDQsIDI4LCAKLSAgICAxMjMsIDIyOSwgMjQyLCAyOCwgMTIzLCAyMTIsIDEwNCwgMjgsIDEyMywgMjEyLCAxMDIsIDI4LCAxMjMsIDIxMiwgOTQsIAotICAgIDI4LCAxMjMsIDIxMiwgOTcsIDI4LCAxMjMsIDIxMiwgMTAzLCAyOCwgMTIzLCAyMTIsIDk5LCAyOCwgMTIzLCAyMTIsIDk4LCAKLSAgICAyOCwgMTIzLCAyMTIsIDk2LCAyOCwgMTIzLCAyMTIsIDEwNywgMjgsIDEyMywgMjEyLCAxMDksIDI4LCAxMjMsIDIxMiwgCi0gICAgMTEwLCAyOCwgMTIzLCAyMTIsIDEwNSwgMjgsIDEyMywgMjEyLCA5NSwgMjgsIDEyMywgMjEyLCAxMDAsIDI4LCAxMjMsIAotICAgIDIxMiwgMTA4LCAyOCwgMTIzLCAyNDYsIDEyMCwgMjgsIDEyMywgMjQ2LCAxMTgsIDI4LCAxMjMsIDI0NiwgMjEwLCAyOCwgCi0gICAgMTIzLCAyNDYsIDIwOCwgMjgsIDEyMywgMjE5LCAxMDcsIDI4LCAxMjMsIDIzMSwgMTAxLCAyOCwgMTIzLCAyMzEsIDkyLCAKLSAgICAyOCwgMTIzLCAyMzEsIDEwMCwgMjgsIDEyMywgMjMxLCA5NywgMjgsIDEyMywgMjMxLCA5NSwgMjgsIDEyMywgMjMxLCA5OSwgCi0gICAgMjgsIDEyMywgMjExLCAxNTcsIDI4LCAxMjMsIDIzMSwgMTA0LCAyOCwgMTIzLCAyMzEsIDEwNSwgMjgsIDEyMywgMjMxLCAKLSAgICA5MywgMjgsIDEyMywgMjMxLCA5OCwgMjgsIDEyMywgMjAzLCAyOSwgMjgsIDEyMywgMjQ2LCA3MywgMjgsIDEyMywgMjQ2LCAKLSAgICAxMjEsIDI4LCAxMjMsIDI0NiwgMTE5LCAyOCwgMTIzLCAyNDYsIDIxMSwgMjgsIDEyMywgMjQ2LCAyMDksIDI4LCAxMjMsIAotICAgIDI0NiwgMTM2LCAyOCwgMTIzLCAyNDYsIDEzNywgMjgsIDEyMywgMjQ2LCAxMjIsIDI4LCAxMjMsIDI0NiwgMjEyLCAyOCwgCi0gICAgMTIzLCAyMTgsIDE4OCwgMjgsIDEyMywgMjI5LCAyNDUsIDI4LCAxMjMsIDIxMSwgMTU4LCAyOCwgMTIzLCAyMDMsIDM1LCAKLSAgICAyOCwgMTIzLCAyMjksIDUwLCAyOCwgMTIzLCAyMjIsIDg1LCAyOCwgMTIzLCAyMjIsIDkxLCAyOCwgMTIzLCAyMjIsIDkwLCAKLSAgICAyOCwgMTIzLCAyMDgsIDIzNCwgMjgsIDEyMywgMjQwLCA3LCAyOCwgMTc2LCAyNDAsIDcsIDI4LCAxNzYsIDYzLCAyOCwgCi0gICAgMTc2LCAyNTEsIDEwOSwgMjgsIDE3NiwgMTk4LCAyOCwgMTc2LCAyMDMsIDk5LCAyOCwgMTc2LCAyNDEsIDU1LCAyOCwgMTc2LCAKLSAgICA3NCwgMjgsIDE3NiwgMjAzLCAzOSwgMjgsIDE3NiwgMjAzLCA1MiwgMjgsIDE3NiwgNzgsIDI4LCAxNzYsIDIwNCwgMTExLCAKLSAgICAyOCwgMTc2LCAyMDQsIDEwNywgMjgsIDE3NiwgMjIwLCA3MywgMjgsIDE3NiwgMjAyLCAyNDcsIDI4LCAxNzYsIDY4LCAyOCwgCi0gICAgMTc2LCAyMDQsIDQ4LCAyOCwgMTc2LCAyMDQsIDYyLCAyOCwgMTc2LCAyMDQsIDMwLCAyOCwgMTc2LCAyMDIsIDIxMywgMjgsIAotICAgIDE3NiwgMjQwLCAyMzgsIDI4LCAxNzYsIDIwMywgMTEsIDI4LCAxNzYsIDc1LCAyOCwgMTc2LCAyNTUsIDIwLCAyOCwgMTc2LCAKLSAgICAyNTUsIDE5LCAyOCwgMTc2LCAyMDMsIDExMywgMjgsIDE3NiwgMjAzLCAxMTEsIDI4LCAxNzYsIDI0MSwgNTMsIDI4LCAxNzYsIAotICAgIDI0MSwgNTIsIDI4LCAxNzYsIDI0MSwgNTQsIDI4LCAxNzYsIDIwMywgMzgsIDI4LCAxNzYsIDIwMywgMzcsIDI4LCAxNzYsIAotICAgIDIyMCwgMTgxLCAyOCwgMTc2LCAyMjAsIDE4MiwgMjgsIDE3NiwgMjIwLCAxNzUsIDI4LCAxNzYsIDIyMCwgMTgwLCAyOCwgCi0gICAgMTc2LCAyMjAsIDE3OCwgMjgsIDE3NiwgMjAyLCAyNDEsIDI4LCAxNzYsIDIwMiwgMjQwLCAyOCwgMTc2LCAyMDIsIDIzOSwgCi0gICAgMjgsIDE3NiwgMjAyLCAyNDIsIDI4LCAxNzYsIDIwMiwgMjQzLCAyOCwgMTc2LCAyMDcsIDk3LCAyOCwgMTc2LCAyMDcsIDk2LCAKLSAgICAyOCwgMTc2LCAyMDcsIDk0LCAyOCwgMTc2LCAyMDcsIDkwLCAyOCwgMTc2LCAyMDcsIDkxLCAyOCwgMTc2LCAyMDIsIDIxMiwgCi0gICAgMjgsIDE3NiwgMjAyLCAyMDksIDI4LCAxNzYsIDIwMiwgMjEwLCAyOCwgMTc2LCAyMDIsIDIwNCwgMjgsIDE3NiwgMjAyLCAKLSAgICAyMDUsIDI4LCAxNzYsIDIwMiwgMjA2LCAyOCwgMTc2LCAyMDIsIDIwOCwgMjgsIDE3NiwgMjQwLCAyMzIsIDI4LCAxNzYsIAotICAgIDI0MCwgMjM0LCAyOCwgMTc2LCAyMDMsIDEwLCAyOCwgMTc2LCAyMzUsIDIwNSwgMjgsIDE3NiwgMjM1LCAxOTcsIDI4LCAKLSAgICAxNzYsIDIzNSwgMjAwLCAyOCwgMTc2LCAyMzUsIDE5OCwgMjgsIDE3NiwgMjM1LCAyMDIsIDI4LCAxNzYsIDIzNSwgMjA0LCAKLSAgICAyOCwgMTc2LCAyNTAsIDEzNywgMjgsIDE3NiwgMjUwLCAxMzQsIDI4LCAxNzYsIDI1MCwgMTMyLCAyOCwgMTc2LCAyNTAsIAotICAgIDEzMywgMjgsIDE3NiwgMjExLCAxNjEsIDI4LCAxNzYsIDI1NSwgMjEsIDI4LCAxNzYsIDIwMywgMTEyLCAyOCwgMTc2LCAKLSAgICAyMDMsIDM2LCAyOCwgMTc2LCAyMjAsIDE3NywgMjgsIDE3NiwgMjIwLCAxNzYsIDI4LCAxMDcsIDIyOSwgNTksIDI4LCAxMDcsIAotICAgIDIxMSwgMTU2LCAyOCwgMTA3LCAyMjksIDUyLCAyOCwgMTA3LCAyMjIsIDkzLCAyOCwgMTA3LCAyMjIsIDkxLCAyOCwgMTA3LCAKLSAgICAyMjIsIDkwLCAyOCwgMTA3LCAyMDgsIDI0MCwgMjgsIDEwNywgMjE2LCA0NywgMjgsIDEwNywgMjE2LCA0MiwgMjgsIDEwNywgCi0gICAgMjE2LCAzOSwgMjgsIDEwNywgMjE2LCAzMiwgMjgsIDEwNywgMjE2LCAyNywgMjgsIDEwNywgMjE2LCAyMiwgMjgsIDEwNywgCi0gICAgMjE2LCAzMywgMjgsIDEwNywgMjE2LCA0NSwgMjgsIDEwNywgMjI0LCAxNDEsIDI4LCAxMDcsIDIxOCwgMTUzLCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0MiwgMjgsIDEwNywgMjEyLCAxMTEsIDI4LCAxMDcsIDIxMSwgMTUwLCAyOCwgMTA3LCAyMzEsIDEwNiwgMjgsIAotICAgIDEwNywgMjQ2LCA3NCwgMjgsIDEwNywgMjQ2LCAxMzgsIDI4LCAxMDcsIDIyOSwgMTIwLCAyOCwgMTA3LCAyMDksIDY2LCAyOCwgCi0gICAgMTA3LCAyMTgsIDE5MCwgMjgsIDEwNywgMjM2LCAyNTEsIDI4LCAxMDcsIDIyOSwgNTMsIDI4LCAxMDcsIDIyOSwgNTEsIDI4LCAKLSAgICAxMDcsIDIyMiwgODksIDI4LCAxMDcsIDIyMiwgODMsIDI4LCAxMDcsIDIyMiwgODUsIDI4LCAxMDcsIDIyMiwgODgsIDI4LCAKLSAgICAxMDcsIDIyMiwgODQsIDI4LCAxMDcsIDIwOCwgMjM3LCAyOCwgMTA3LCAyMDgsIDIzNCwgMjgsIDEwNywgMjE2LCA0MCwgMjgsIAotICAgIDEwNywgMjE2LCAzNSwgMjgsIDEwNywgMjE2LCAyMSwgMjgsIDEwNywgMjE2LCAyMCwgMjgsIDEwNywgMjExLCAxNTIsIDI4LCAKLSAgICAxMDcsIDIxNiwgMzcsIDI4LCAxMDcsIDIxNiwgMzYsIDI4LCAxMDcsIDIxNiwgMjksIDI4LCAxMDcsIDIxNiwgMzEsIDI4LCAKLSAgICAxMDcsIDIxNiwgNDQsIDI4LCAxMDcsIDIxNiwgMjQsIDI4LCAxMDcsIDIxNiwgMzQsIDI4LCAxMDcsIDIxNiwgNDMsIDI4LCAKLSAgICAxMDcsIDIxNiwgMTksIDI4LCAxMDcsIDIyNCwgMTM3LCAyOCwgMTA3LCAyMjQsIDEzMiwgMjgsIDEwNywgMjI0LCAxMzQsIAotICAgIDI4LCAxMDcsIDIyNCwgMTMxLCAyOCwgMTA3LCAyMjQsIDEyOSwgMjgsIDEwNywgMjI0LCAxMzUsIDI4LCAxMDcsIDIyNCwgCi0gICAgMTQwLCAyOCwgMTA3LCAyMjQsIDEzOCwgMjgsIDEwNywgMjI5LCAyNDYsIDI4LCAxMDcsIDIxOCwgMTQ0LCAyOCwgMTA3LCAKLSAgICAyMTgsIDE0NSwgMjgsIDEwNywgMjE4LCAxNTAsIDI4LCAxMDcsIDIyOSwgMjQ0LCAyOCwgMTA3LCAyMTIsIDEwNCwgMjgsIAotICAgIDEwNywgMjEyLCA5NCwgMjgsIDEwNywgMjEyLCA5NywgMjgsIDEwNywgMjEyLCA5OSwgMjgsIDEwNywgMjE5LCAxMDcsIDI4LCAKLSAgICAxMDcsIDIzMSwgMTAxLCAyOCwgMTA3LCAyMzEsIDk0LCAyOCwgMTA3LCAyMTEsIDE1NywgMjgsIDEwNywgMjMxLCAxMDIsIAotICAgIDI4LCAxMDcsIDIwMywgMjksIDI4LCAxMDcsIDIwMywgMjUsIDI4LCAxMDcsIDIwMywgMjYsIDI4LCAxMDcsIDIxOCwgMTg4LCAKLSAgICAyOCwgMTA3LCAyMjksIDI0NSwgMjgsIDEwNywgMjM2LCAyNDksIDI4LCAxMDcsIDIzNiwgMjQ3LCAyOCwgMTA3LCAyMzYsIAotICAgIDI1MCwgMjgsIDEwNywgMjM2LCAyNDgsIDI4LCAxMDcsIDIwMywgMzUsIDI4LCAxMDcsIDIyOSwgNTUsIDI4LCAxMDcsIDIyOSwgCi0gICAgNTQsIDI4LCAxMDcsIDIyOSwgNTgsIDI4LCAxMDcsIDIyOSwgNTYsIDI4LCAxMDcsIDIyOSwgNTcsIDI4LCAxMDcsIDIxMSwgCi0gICAgMTU0LCAzMywgNCwgMTUyLCAzMywgNCwgMjM2LCAyNiwgMzMsIDQsIDIzNywgMywgMzMsIDQsIDIzNywgMTU3LCAzMywgNCwgCi0gICAgMjM3LCA0OCwgMzMsIDQsIDIzNywgNjcsIDMzLCA0LCAyMzYsIDEzNiwgMzMsIDQsIDIzNiwgMTM1LCAzMywgNCwgMjI4LCAKLSAgICAxMTMsIDMzLCA0LCAyMjYsIDIzOSwgMzMsIDQsIDIyNywgMTQ4LCAzMywgNCwgMjI4LCAxMTIsIDMzLCA0LCAyMjcsIDIyNiwgCi0gICAgMzMsIDQsIDIyNywgMjM0LCAzMywgNCwgMjI3LCA0OSwgMzMsIDQsIDIyNiwgMjA3LCAzMywgNCwgMjM3LCAxMiwgMzMsIDQsIAotICAgIDIzNywgNiwgMzMsIDQsIDIzNywgOCwgMzMsIDQsIDIzNywgMTEsIDMzLCA0LCAyMzcsIDksIDMzLCA0LCAyMzcsIDEwLCAzMywgCi0gICAgNCwgMjM3LCA3LCAzMywgNCwgMjM3LCA1LCAzMywgNCwgMTkyLCAzMywgNCwgMjIzLCAyNDYsIDMzLCA0LCAyMjQsIDE1NSwgCi0gICAgMzMsIDQsIDIyNSwgMTc1LCAzMywgNCwgMjI1LCA4LCAzMywgNCwgMjI1LCAyMCwgMzMsIDQsIDIyNCwgODIsIDMzLCA0LCAKLSAgICAyMjMsIDE4MCwgMzMsIDQsIDIxMCwgODAsIDMzLCA0LCAyMTAsIDc0LCAzMywgNCwgMjEwLCA3NiwgMzMsIDQsIDIxMCwgNzksIAotICAgIDMzLCA0LCAyMTAsIDc3LCAzMywgNCwgMjEwLCA3OCwgMzMsIDQsIDIxMCwgNzUsIDMzLCA0LCAyMTAsIDczLCAzMywgNCwgCi0gICAgMjE2LCAyMjAsIDMzLCA0LCAyMTUsIDE0NSwgMzMsIDQsIDIxNiwgNTcsIDMzLCA0LCAyMTYsIDIxNiwgMzMsIDQsIDIxNiwgCi0gICAgMTM1LCAzMywgNCwgMjE2LCAxNTgsIDMzLCA0LCAyMTUsIDIyNywgMzMsIDQsIDIxNSwgMTExLCAzMywgNCwgMjE1LCAzNiwgCi0gICAgMzMsIDQsIDIxMSwgMTAsIDMzLCA0LCAyMTIsIDE2MiwgMzMsIDQsIDIxNSwgMzMsIDMzLCA0LCAyMTQsIDE2NSwgMzMsIDQsIAotICAgIDIxNCwgMTc3LCAzMywgNCwgMjEyLCAxMywgMzMsIDQsIDIxMCwgMTcyLCAzMywgNCwgMjEzLCA5MCwgMzMsIDQsIDIxMiwgCi0gICAgMTk5LCAzMywgNCwgMjEzLCAxMSwgMzMsIDQsIDIxMywgODUsIDMzLCA0LCAyMTMsIDQxLCAzMywgNCwgMjEzLCA0MywgMzMsIAotICAgIDQsIDIxMiwgMjQyLCAzMywgNCwgMjEyLCAxODAsIDMzLCA0LCAyMTcsIDEyNiwgMzMsIDQsIDIxNywgNjUsIDMzLCA0LCAKLSAgICAyMTcsIDg4LCAzMywgNCwgMjE3LCAxMjUsIDMzLCA0LCAyMTcsIDEwNSwgMzMsIDQsIDIxNywgMTA2LCAzMywgNCwgMjE3LCAKLSAgICA3NywgMzMsIDQsIDIxNywgNzYsIDMzLCA0LCAyMTcsIDE5LCAzMywgNCwgMjE3LCAxNSwgMzMsIDQsIDIxNywgMTgsIDMzLCAKLSAgICA0LCAyMTcsIDE2LCAzMywgNCwgMjE3LCAxNywgMzMsIDQsIDIxNywgMTAyLCAzMywgNCwgMjE3LCA5NCwgMzMsIDQsIDIxNywgCi0gICAgOTcsIDMzLCA0LCAyMTcsIDEwMSwgMzMsIDQsIDIxNywgOTgsIDMzLCA0LCAyMTcsIDk5LCAzMywgNCwgMjE3LCA5NiwgMzMsIAotICAgIDQsIDIxNywgOTMsIDMzLCA0LCAyMTcsIDg5LCAzMywgNCwgMjE3LCA5MiwgMzMsIDQsIDIxNywgOTAsIDMzLCA0LCAyMTcsIAotICAgIDkxLCAzMywgNCwgMjQ5LCAzMiwgMzMsIDQsIDI0NywgMTkzLCAzMywgNCwgMjQ4LCA4NiwgMzMsIDQsIDI0OSwgMzAsIDMzLCAKLSAgICA0LCAyNDgsIDE1MCwgMzMsIDQsIDI0OCwgMTYyLCAzMywgNCwgMjQ4LCAyMywgMzMsIDQsIDI0NywgMTQyLCAzMywgNCwgCi0gICAgMjA2LCA4NiwgMzMsIDQsIDIwNCwgMTYzLCAzMywgNCwgMjA1LCAyMzAsIDMzLCA0LCAyMDYsIDg1LCAzMywgNCwgMjA2LCAKLSAgICA1MCwgMzMsIDQsIDIwNiwgNTUsIDMzLCA0LCAyMDUsIDE4OSwgMzMsIDQsIDIwNCwgMTU0LCAzMywgNCwgMjEwLCAyMiwgMzMsIAotICAgIDQsIDIwNywgMjAzLCAzMywgNCwgMjA5LCAyLCAzMywgNCwgMjEwLCAxOCwgMzMsIDQsIDIwOSwgMTc2LCAzMywgNCwgMjA5LCAKLSAgICAxODcsIDMzLCA0LCAxMzUsIDMzLCA0LCAyMDcsIDE2MCwgMzMsIDQsIDI0NywgOTIsIDMzLCA0LCAyNDUsIDExMCwgMzMsIDQsIAotICAgIDI0NiwgNzksIDMzLCA0LCAyNDcsIDkxLCAzMywgNCwgMjQ2LCAyMzAsIDMzLCA0LCAyNDYsIDIzOCwgMzMsIDQsIDI0NSwgCi0gICAgMjU0LCAzMywgNCwgMjQ1LCA3NCwgMzMsIDQsIDIwMywgMTgyLCAzMywgNCwgMjAzLCAxNTIsIDMzLCA0LCAyMDMsIDE3MCwgCi0gICAgMzMsIDQsIDIwMywgMTgxLCAzMywgNCwgMjAzLCAxNzUsIDMzLCA0LCAyMDMsIDE3NiwgMzMsIDQsIDIwMywgMTYwLCAzMywgCi0gICAgNCwgMjAzLCAxNTksIDMzLCA0LCAyMDMsIDE0NiwgMzMsIDQsIDIwMywgMTQyLCAzMywgNCwgMjAzLCAxNDUsIDMzLCA0LCAKLSAgICAyMDMsIDE0MywgMzMsIDQsIDIwMywgMTQ0LCAzMywgNCwgMjAxLCAyMDEsIDMzLCA0LCAyMjEsIDg0LCAzMywgNCwgMjIyLCAKLSAgICAxMDAsIDMzLCA0LCAyMjMsIDEwNiwgMzMsIDQsIDIyMiwgMjM1LCAzMywgNCwgMjIyLCAyNDAsIDMzLCA0LCAyMjEsIDE5MSwgCi0gICAgMzMsIDQsIDIyMSwgMjAsIDMzLCA0LCAyMjEsIDExLCAzMywgNCwgMjIwLCAyMjYsIDMzLCA0LCAyMjAsIDI0OCwgMzMsIDQsIAotICAgIDIyMSwgMTAsIDMzLCA0LCAyMjEsIDAsIDMzLCA0LCAyMjEsIDEsIDMzLCA0LCAyMjAsIDIzMywgMzMsIDQsIDIyMCwgMjE2LCAKLSAgICAzMywgNCwgMjM4LCA0NSwgNjMsIDMzLCA0LCAyMzgsIDQ1LCA2OCwgMzMsIDQsIDIzOCwgNDUsIDc1LCAzMywgNCwgMjM4LCAKLSAgICA0NSwgMjUyLCAyNSwgMzMsIDQsIDIzOCwgNDUsIDI0MSwgMTYxLCAzMywgNCwgMjM4LCA0NSwgNzQsIDMzLCA0LCAyMzgsIAotICAgIDQ1LCA3OCwgMzMsIDQsIDIzOCwgNDUsIDIwNCwgMTExLCAzMywgNCwgMTczLCAzMywgNCwgMjI4LCAyMDksIDMzLCA0LCAKLSAgICAyMjksIDEwMCwgMzMsIDQsIDIzMCwgNDEsIDMzLCA0LCAyMjksIDE5OCwgMzMsIDQsIDIyOSwgMjAxLCAzMywgNCwgMjI5LCAKLSAgICAyNiwgMzMsIDQsIDIyOSwgMjUsIDMzLCA0LCAyMjgsIDE2NywgMzMsIDQsIDIyOCwgMTYwLCAzMywgNCwgMjI4LCAxNjYsIAotICAgIDMzLCA0LCAyMjgsIDE2MSwgMzMsIDQsIDIyOCwgMTYyLCAzMywgNCwgMjI4LCAxNTMsIDMzLCA0LCAyMjgsIDE0NywgMzMsIAotICAgIDQsIDIyOCwgMTQ5LCAzMywgNCwgMjI4LCAxNTIsIDMzLCA0LCAyMjgsIDE1MCwgMzMsIDQsIDIyOCwgMTUxLCAzMywgNCwgCi0gICAgMjI4LCAxNDgsIDMzLCA0LCAyMjgsIDE0NiwgMzMsIDQsIDIyOCwgMTQyLCAzMywgNCwgMjI4LCAxNDUsIDMzLCA0LCAyMjgsIAotICAgIDE0MywgMzMsIDQsIDIyOCwgMTQ0LCAzMywgNCwgMjA0LCAxMTEsIDMzLCA0LCAyMDMsIDIxNywgMzMsIDQsIDIwNCwgMzAsIAotICAgIDMzLCA0LCAyMDQsIDExMCwgMzMsIDQsIDIwNCwgNTUsIDMzLCA0LCAyMDQsIDYyLCAzMywgNCwgMjA0LCAwLCAzMywgNCwgCi0gICAgMjAzLCAyNTUsIDMzLCA0LCAyMTgsIDE5OSwgNjMsIDMzLCA0LCAyMTgsIDE5OSwgNjgsIDMzLCA0LCAyMTgsIDE5OSwgNzUsIAotICAgIDMzLCA0LCAyMTgsIDE5OSwgMjUyLCAyNSwgMzMsIDQsIDIxOCwgMTk5LCAyNDEsIDE2MSwgMzMsIDQsIDIxOCwgMTk5LCA3NCwgCi0gICAgMzMsIDQsIDIxOCwgMTk5LCA3OCwgMzMsIDQsIDIwMiwgMTE2LCAzMywgNCwgMjAyLCA2LCAzMywgNCwgMjAyLCAzOSwgMzMsIAotICAgIDQsIDIwMiwgMTE0LCAzMywgNCwgMjAyLCA5MCwgMzMsIDQsIDIwMiwgOTIsIDMzLCA0LCAyMDIsIDE3LCAzMywgNCwgMjAxLCAKLSAgICAyNDksIDMzLCA0LCAyMDIsIDgwLCAzMywgNCwgMjAyLCA1NywgMzMsIDQsIDIwMiwgNjYsIDMzLCA0LCAyMDIsIDc5LCAzMywgCi0gICAgNCwgMjAyLCA3MCwgMzMsIDQsIDIwMiwgNzEsIDMzLCA0LCAyMDIsIDYzLCAzMywgNCwgMjAyLCA0OCwgMzMsIDQsIDE5OCwgCi0gICAgMzMsIDQsIDIwMiwgMjEzLCAzMywgNCwgMjAzLCAxMSwgMzMsIDQsIDIwMywgMTEwLCAzMywgNCwgMjAzLCA0OSwgMzMsIDQsIAotICAgIDIwMywgNTIsIDMzLCA0LCAyMDIsIDI0NywgMzMsIDQsIDIwMiwgMjM4LCAzMywgNCwgMjQ0LCAyMTIsIDMzLCA0LCAyNDIsIAotICAgIDQyLCAzMywgNCwgMjQzLCAyMzMsIDMzLCA0LCAyNDQsIDIxMSwgMzMsIDQsIDI0NCwgNjEsIDMzLCA0LCAyNDQsIDc1LCAzMywgCi0gICAgNCwgMjQzLCAxMTMsIDMzLCA0LCAyNDIsIDEwLCAzMywgNCwgMjQ0LCAxMjAsIDMzLCA0LCAyNDQsIDg1LCAzMywgNCwgMjQ0LCAKLSAgICA5NywgMzMsIDQsIDI0NCwgMTE5LCAzMywgNCwgMjQ0LCAxMDcsIDMzLCA0LCAyNDQsIDEwOCwgMzMsIDQsIDI0NCwgOTAsIAotICAgIDMzLCA0LCAyNDQsIDc2LCAzMywgNCwgMjMwLCAxODEsIDMzLCA0LCAyMzAsIDgyLCAzMywgNCwgMjMwLCAxNDEsIDMzLCA0LCAKLSAgICAyMzAsIDE4MCwgMzMsIDQsIDIzMCwgMTU5LCAzMywgNCwgMjMwLCAxNjEsIDMzLCA0LCAyMzAsIDEwMSwgMzMsIDQsIDIzMCwgCi0gICAgNjIsIDMzLCA0LCAyMzksIDgsIDMzLCA0LCAyMzcsIDIzMCwgMzMsIDQsIDIzOCwgODEsIDMzLCA0LCAyMzksIDUsIDMzLCA0LCAKLSAgICAyMzgsIDE4MiwgMzMsIDQsIDIzOCwgMTkwLCAzMywgNCwgMjM4LCAzOSwgMzMsIDQsIDIzOCwgMzgsIDMzLCA0LCAyMzcsIAotICAgIDE5MCwgMzMsIDQsIDIzNywgMTg2LCAzMywgNCwgMjM3LCAxODksIDMzLCA0LCAyMzcsIDE4NywgMzMsIDQsIDIzNywgMTg4LCAKLSAgICAzMywgNCwgMjM4LCAxNTUsIDMzLCA0LCAyMzgsIDEzNSwgMzMsIDQsIDIzOCwgMTQ1LCAzMywgNCwgMjM4LCAxNTQsIDMzLCAKLSAgICA0LCAyMzgsIDE0OSwgMzMsIDQsIDIzOCwgMTUwLCAzMywgNCwgMjM4LCAxMzksIDMzLCA0LCAyMzgsIDEyNCwgMzMsIDQsIAotICAgIDIwOSwgMTA4LCAzMywgNCwgMjA5LCAyMiwgMzMsIDQsIDIwOSwgNzAsIDMzLCA0LCAyMDksIDEwNywgMzMsIDQsIDIwOSwgCi0gICAgOTAsIDMzLCA0LCAyMDksIDkyLCAzMywgNCwgMjA5LCA0NywgMzMsIDQsIDIwOSwgMTMsIDMzLCA0LCAyNDYsIDE5OSwgMzMsIAotICAgIDQsIDI0NiwgOTgsIDMzLCA0LCAyNDYsIDE0MiwgMzMsIDQsIDI0NiwgMTk4LCAzMywgNCwgMjQ2LCAxNjYsIDMzLCA0LCAKLSAgICAyNDYsIDE3MCwgMzMsIDQsIDI0NiwgMTE2LCAzMywgNCwgMjQ2LCA4NywgMzMsIDQsIDIxOCwgMjA4LCAzMywgNCwgMjE4LCAKLSAgICAxNzMsIDMzLCA0LCAyMTgsIDE5MiwgMzMsIDQsIDIxOCwgMjA3LCAzMywgNCwgMjE4LCAxOTQsIDMzLCA0LCAyMTgsIDE5NSwgCi0gICAgMzMsIDQsIDIxOCwgMTgwLCAzMywgNCwgMjE4LCAxNjksIDMzLCA0LCAyMDgsIDIwLCAzMywgNCwgMjA3LCAyNDksIDMzLCA0LCAKLSAgICAyMDcsIDI1NSwgMzMsIDQsIDIwOCwgMTksIDMzLCA0LCAyMDgsIDEzLCAzMywgNCwgMjA4LCAxNCwgMzMsIDQsIDIwNywgCi0gICAgMjUzLCAzMywgNCwgMjA3LCAyNDcsIDMzLCA0LCAyMDcsIDEwNiwgMzMsIDQsIDIwNywgOTgsIDMzLCA0LCAyMDcsIDEwMiwgCi0gICAgMzMsIDQsIDIwNywgMTA1LCAzMywgNCwgMjA3LCAxMDMsIDMzLCA0LCAyMDcsIDEwNCwgMzMsIDQsIDIwNywgMTAwLCAzMywgCi0gICAgNCwgMjA3LCA5OSwgMzMsIDQsIDI0MCwgMTA4LCAzMywgNCwgMjM5LCAxMDgsIDMzLCA0LCAyNDAsIDI2LCAzMywgNCwgMjQwLCAKLSAgICAxMDcsIDMzLCA0LCAyNDAsIDUzLCAzMywgNCwgMjQwLCA2MCwgMzMsIDQsIDIzOSwgMTg2LCAzMywgNCwgMjM5LCA4NiwgMzMsIAotICAgIDQsIDE4NSwgMzMsIDQsIDIxNywgMTkxLCAzMywgNCwgMjE4LCAxNjcsIDMzLCA0LCAyMTksIDE2OCwgMzMsIDQsIDIxOSwgCi0gICAgMjMsIDMzLCA0LCAyMTksIDM0LCAzMywgNCwgMjE4LCA2OSwgMzMsIDQsIDIxNywgMTUyLCAzMywgNCwgMjE1LCAxMDEsIDMzLCAKLSAgICA0LCAyMjMsIDE2OSwgMzMsIDQsIDIzOSwgODAsIDMzLCAzOSwgMjM4LCAxNzksIDI1LCAyMiwgMjI3LCAxOTYsIDgyLCAzMywgCi0gICAgMzksIDIyLCAyMjcsIDE5NiwgODIsIDMzLCAzOSwgMjM4LCAxNzksIDgyLCAzMywgMjE0LCAxNjgsIDgyLCAzMywgMjAzLCAKLSAgICAyMzcsIDMzLCAyMzksIDEwMiwgMjExLCA2MSwgMzMsIDI0NSwgMjMzLCAzMywgMjEzLCAxNDMsIDMzLCAyNDUsIDI0MiwgMzMsIAotICAgIDIxNywgMjQ2LCAyNDUsIDI0MiwgMzMsIDIxNywgNDcsIDgyLCAzMywgMjE5LCA4OSwgMjEzLCAxMzAsIDMzLCAxNywgMTA1LCAKLSAgICAzMywgMTcsIDEwOCwgMzMsIDE3LCAxNDcsIDMzLCAxNywgMTQ5LCAzMywgMTcsIDE3MCwgMzMsIDE3LCAxOTUsIDMzLCAxNywgCi0gICAgMjEzLCAxMTEsIDMzLCAxNywgMTk5LCAzMywgMTcsIDIyMiwgNjMsIDMzLCA0MiwgMjA5LCAxNTIsIDMzLCA0MiwgMjA3LCAKLSAgICAxNTEsIDMzLCA0MiwgMjA5LCA1MywgMzMsIDQyLCAyMzksIDE1MywgMzMsIDQyLCAyNDAsIDE4LCAzMywgNDIsIDIxMiwgNzQsIAotICAgIDMzLCA0MiwgMjEzLCAxMDUsIDMzLCA0MiwgMjQxLCAxMzQsIDMzLCA0MiwgMjIyLCA1OCwgMzMsIDQyLCAyMzYsIDExLCAzMywgCi0gICAgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAzMywgNCwgMjE0LCAxNzMsIDIyMywgMTgwLCAzMywgNCwgMjIzLCAxNzYsIDMzLCA0LCAKLSAgICAyMjMsIDE3NywgMzMsIDQsIDIyMywgMTc4LCAzMywgNCwgMjE0LCAxNzMsIDI0NywgMTQyLCAzMywgNCwgMjQ3LCAxMzksIAotICAgIDMzLCA0LCAyNDcsIDE0MCwgMzMsIDQsIDI0NywgMTQxLCAzMywgNCwgMjE0LCAxNzMsIDIzOSwgODYsIDMzLCA0LCAyMzksIAotICAgIDgyLCAzMywgNCwgMjM5LCA4MywgMzMsIDQsIDIzOSwgODQsIDMzLCA0LCAyMTQsIDE3MywgMjE3LCAxNTIsIDMzLCA0LCAKLSAgICAyMTcsIDE0OCwgMzMsIDQsIDIxNywgMTQ5LCAzMywgNCwgMjE3LCAxNTAsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMDIsIDI1MCwgCi0gICAgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NCwgMjIsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMTYsIDIsIDMzLCAyMDgsIDE2MiwgMTMxLCAKLSAgICAyMTIsIDIyOCwgMjE2LCAyLCAzMywgMjA4LCAxNjIsIDEzMSwgMjQzLCAyMDcsIDMzLCAyMDgsIDE2MiwgMTMxLCAyMjksIAotICAgIDE3OSwgMzMsIDIwOCwgMTYyLCAxMzEsIDI0NiwgMTI0LCAzMywgMjA4LCAxNjIsIDEzMSwgMjM3LCAwLCAzMywgMjA4LCAKLSAgICAxNjIsIDEzMSwgMjQ0LCAyMSwgMzMsIDIwOCwgMTYyLCAxMzEsIDIyOCwgMTgxLCA5MCwgMSwgNjMsIDkwLCAxLCA3NCwgOTAsIAotICAgIDEsIDc1LCA5MCwgMSwgNzgsIDkwLCAxLCA2OCwgOTAsIDEsIDIwNiwgMTY0LCA5MCwgMSwgMjM5LCA4LCA5MCwgMSwgMTczLCAKLSAgICA5MCwgMSwgMjM4LCAxOTAsIDkwLCAxLCAyMzgsIDgxLCA5MCwgMSwgMjM4LCAzOSwgOTAsIDEsIDIzNywgMjMwLCA5MCwgMSwgCi0gICAgMjM3LCAxOTIsIDkwLCAxLCAxNTIsIDkwLCAxLCAyMzcsIDY3LCA5MCwgMSwgMjM3LCAzLCA5MCwgMSwgMjM2LCAxMzYsIDkwLCAKLSAgICAxLCAyMzYsIDI2LCA5MCwgMSwgMjM1LCAyNTUsIDkwLCAxLCAyMjgsIDExMywgOTAsIDEsIDIyNywgMjM0LCA5MCwgMSwgCi0gICAgMjI3LCAxNDgsIDkwLCAxLCAyMjcsIDQ5LCA5MCwgMSwgMjI2LCAyMzksIDkwLCAxLCAyMjYsIDIwOCwgOTAsIDEsIDE5MiwgCi0gICAgOTAsIDEsIDIyNSwgMjAsIDkwLCAxLCAyMjQsIDE1NSwgOTAsIDEsIDIyNCwgODIsIDkwLCAxLCAyMjMsIDI0NiwgOTAsIDEsIAotICAgIDIwMSwgMjAxLCA5MCwgMSwgMjM2LCAxNjAsIDkwLCAxLCAyMjMsIDkzLCA5MCwgMSwgMjIyLCAyNDAsIDkwLCAxLCAyMjIsIAotICAgIDEwMCwgOTAsIDEsIDIyMSwgMTkxLCA5MCwgMSwgMjIxLCA4NCwgOTAsIDEsIDIyMSwgMjIsIDkwLCAxLCAyMTcsIDY0LCA5MCwgCi0gICAgMSwgMjE3LCA1MCwgOTAsIDEsIDIxNywgNDMsIDkwLCAxLCAyMTcsIDM0LCA5MCwgMSwgMjE3LCAyMywgOTAsIDEsIDIxNywgCi0gICAgMjEsIDkwLCAxLCAyMTUsIDM2LCA5MCwgMSwgMTk0LCA5MCwgMSwgMjE0LCAxNzcsIDkwLCAxLCAyMTIsIDE2MiwgOTAsIDEsIAotICAgIDIxMiwgMTMsIDkwLCAxLCAyMTEsIDEwLCA5MCwgMSwgMjEwLCAxNzcsIDkwLCAxLCAyNDQsIDIxMiwgOTAsIDEsIDIxMCwgCi0gICAgMjIsIDkwLCAxLCAyNDQsIDc1LCA5MCwgMSwgMjA5LCAxODcsIDkwLCAxLCAyNDMsIDIzMywgOTAsIDEsIDIwOSwgMiwgOTAsIAotICAgIDEsIDI0MywgMTEzLCA5MCwgMSwgMjQyLCA0MiwgOTAsIDEsIDI0MiwgMTMsIDkwLCAxLCAyNDMsIDEyNCwgOTAsIDEsIDIwOCwgCi0gICAgMTkwLCA5MCwgMSwgMjA4LCAxODksIDkwLCAxLCAyMDgsIDE3OCwgOTAsIDEsIDIwOCwgMTc3LCA5MCwgMSwgMjA4LCAxNzYsIAotICAgIDkwLCAxLCAyMDgsIDE3NSwgOTAsIDEsIDIwOCwgMjAsIDkwLCAxLCAyMDgsIDE0LCA5MCwgMSwgMjA3LCAyNTUsIDkwLCAxLCAKLSAgICAyMDcsIDI1MywgOTAsIDEsIDIwNywgMjQ5LCA5MCwgMSwgMjA3LCAyNDgsIDkwLCAxLCAyMDQsIDExMSwgOTAsIDEsIDIwNCwgCi0gICAgNjIsIDkwLCAxLCAyMDQsIDMwLCA5MCwgMSwgMjA0LCAwLCA5MCwgMSwgMjAzLCAyMTcsIDkwLCAxLCAyMDMsIDIwNCwgOTAsIAotICAgIDEsIDE5OCwgOTAsIDEsIDIwMywgNTIsIDkwLCAxLCAyMDMsIDExLCA5MCwgMSwgMjAyLCAyNDcsIDkwLCAxLCAyMDIsIDIxMywgCi0gICAgOTAsIDEsIDIwMiwgMTc3LCA5MCwgMSwgMjIzLCAxODcsIDkwLCA1LCAxLCAyMDMsIDUyLCA5MCwgNSwgMSwgMjAzLCAxMSwgCi0gICAgOTAsIDUsIDEsIDIwMiwgMjQ3LCA5MCwgNSwgMSwgMjAyLCAyMTMsIDkwLCA1LCAxLCAyMDIsIDE3NywgOTAsIDUsIDEsIAotICAgIDIyMywgMTg3LCAxOSwgMjAsIDIzNSwgMjIwLCAxOSwgMjAsIDc0LCAxOSwgMjAsIDI1MSwgMjQ1LCAxOSwgMjAsIDc1LCAxOSwgCi0gICAgMjAsIDIzMSwgODMsIDE5LCAyMCwgNzgsIDE5LCAyMCwgMjIwLCAxOCwgMTksIDIwLCAyMDMsIDEyMywgMjIwLCAxOCwgMTksIAotICAgIDIwLCA4OCwgMjQxLCAxNjEsIDE5LCAyMCwgODgsIDc1LCAxOSwgMjAsIDYzLCAxOSwgMjAsIDI1MiwgMjUsIDE5LCAyMCwgCi0gICAgMjA0LCA2MiwgMTksIDIwLCAxOTYsIDIwNCwgNjIsIDE5LCAyMCwgMjA0LCAzMCwgMTksIDIwLCAxOTYsIDIwNCwgMzAsIDE5LCAKLSAgICAyMCwgMjA0LCAxOSwgMTksIDIwLCAxOTYsIDIwNCwgMTksIDE5LCAyMCwgMjA0LCAwLCAxOSwgMjAsIDE5NiwgMjA0LCAwLCAKLSAgICAxOSwgMjAsIDIwMywgMjQ0LCAxOSwgMjAsIDE5NiwgMjAzLCAyNDQsIDE5LCAyMCwgMjIzLCA2OCwgMjAzLCAyNDQsIDE5LCAKLSAgICAyMCwgMjA0LCAxMTEsIDE5LCAyMCwgMTk2LCAyMDQsIDExMSwgMTksIDIwLCAyMDQsIDExMCwgMTksIDIwLCAxOTYsIDIwNCwgCi0gICAgMTEwLCAxOSwgMjAsIDIyMywgNjgsIDIwNCwgMTEwLCAxOSwgMjAsIDI1MSwgNjQsIDE5LCAyMCwgMjAzLCAxMjMsIDIwNCwgCi0gICAgMTQ0LCAxOSwgMjAsIDIzOCwgNDUsIDIxMSwgNjEsIDE5LCAyMCwgNDYsIDE2NSwgMTksIDIwLCA0NiwgMjM3LCAyNTMsIDE5LCAKLSAgICAyMCwgNDYsIDI0NywgMjQ4LCAxNjIsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMDgsIDE0NSwgMTYyLCAyMTUsIDI1MiwgMTksIAotICAgIDIwLCA0NiwgNTAsIDE2MiwgMjE1LCAyNTIsIDE5LCAyMCwgNDYsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCA1MiwgMTY1LCAxOSwgCi0gICAgMjAsIDQ2LCA1MiwgMjEyLCAyMjgsIDgwLCAyMTEsIDE5LCAxOSwgMjAsIDQ2LCAxMDEsIDI0MywgODUsIDE5LCAyMCwgNDYsIAotICAgIDIxMiwgMjI4LCAyMzYsIDEwNiwgOTUsIDE5LCAyMCwgNDYsIDIxOCwgNzYsIDE5LCAyMCwgNDYsIDEyMSwgMjEwLCAzLCAxOSwgCi0gICAgMjAsIDI0MSwgOTIsIDE5LCAyMCwgMjMxLCA0OSwgMTksIDIwLCAyMjAsIDMxLCAxOSwgMjAsIDI1MCwgMjMxLCAxOSwgMjAsIAotICAgIDIxOSwgMzQsIDE5LCAyMCwgMjE5LCAxNjYsIDE5LCAyMCwgMjE4LCAxNjcsIDE5LCAyMCwgMjE4LCAxMjksIDE5LCAyMCwgCi0gICAgMjE4LCA2OSwgMTksIDIwLCAyMTgsIDQ1LCAxOSwgMjAsIDIwMywgMTIzLCAyMTgsIDQ1LCAxOSwgMjAsIDg4LCAyMzcsIDQ4LCAKLSAgICAxOSwgMjAsIDg4LCAyMzcsIDMsIDE5LCAyMCwgMTg1LCAxOSwgMjAsIDIxOSwgMTY4LCAxOSwgMjAsIDIxNywgMTUwLCAxOSwgCi0gICAgMjAsIDE5NiwgMjE3LCAxNTAsIDE5LCAyMCwgMjE3LCAxNDgsIDE5LCAyMCwgMTk2LCAyMTcsIDE0OCwgMTksIDIwLCAyMTcsIAotICAgIDE0NywgMTksIDIwLCAxOTYsIDIxNywgMTQ3LCAxOSwgMjAsIDIxNywgMTQ1LCAxOSwgMjAsIDE5NiwgMjE3LCAxNDUsIDE5LCAKLSAgICAyMCwgMjE3LCAxNDQsIDE5LCAyMCwgMTk2LCAyMTcsIDE0NCwgMTksIDIwLCAyMTcsIDE1MiwgMTksIDIwLCAxOTYsIDIxNywgCi0gICAgMTUyLCAxOSwgMjAsIDIxNywgMTUxLCAxOSwgMjAsIDE5NiwgMjE3LCAxNTEsIDE5LCAyMCwgMjAzLCAxMjMsIDIxNywgMTUxLCAKLSAgICAxOSwgMjAsIDIxOSwgMTg0LCAxOSwgMjAsIDE5NiwgMjE5LCAxODQsIDE5LCAyMCwgODgsIDIzNywgMTcxLCAxOSwgMjAsIAotICAgIDIwOSwgMTg3LCAxOSwgMjAsIDIxMCwgMTYsIDE5LCAyMCwgMjA5LCAyLCAxOSwgMjAsIDIwOCwgMjQyLCAxOSwgMjAsIDEzNSwgCi0gICAgMTksIDIwLCAyMDgsIDE0OCwgMTksIDIwLCAyMDMsIDEyMywgMjA4LCAxNDgsIDE5LCAyMCwgODgsIDI0NCwgNjEsIDE5LCAKLSAgICAyMCwgODgsIDI0MywgMjMzLCAxOSwgMjAsIDIxMCwgMjIsIDE5LCAyMCwgMjEwLCAxOCwgMTksIDIwLCAyMDcsIDE1OCwgMTksIAotICAgIDIwLCAxOTYsIDIwNywgMTU4LCAxOSwgMjAsIDIwNywgMTQwLCAxOSwgMjAsIDE5NiwgMjA3LCAxNDAsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzksIDE5LCAyMCwgMTk2LCAyMDcsIDEzOSwgMTksIDIwLCAxMDgsIDE5LCAyMCwgMTk2LCAxMDgsIDE5LCAyMCwgMjA3LCAKLSAgICAxMzAsIDE5LCAyMCwgMTk2LCAyMDcsIDEzMCwgMTksIDIwLCAyMDcsIDE2MCwgMTksIDIwLCAxOTYsIDIwNywgMTYwLCAxOSwgCi0gICAgMjAsIDIwNywgMTU5LCAxOSwgMjAsIDE5NiwgMjA3LCAxNTksIDE5LCAyMCwgMjIzLCA2OCwgMjA3LCAxNTksIDE5LCAyMCwgCi0gICAgMjEwLCA2OSwgMTksIDIwLCAyMDcsIDIzNiwgMTksIDIwLCAyMDcsIDIyMCwgMTksIDIwLCAyMDcsIDIxOCwgMTksIDIwLCAKLSAgICAyMDcsIDI0MSwgMTksIDIwLCAyMjksIDIwMSwgMTksIDIwLCAyMzAsIDM2LCAxOSwgMjAsIDIyOSwgMTAwLCAxOSwgMjAsIAotICAgIDIyOSwgODcsIDE5LCAyMCwgMjI5LCAyNiwgMTksIDIwLCAyMjksIDYsIDE5LCAyMCwgMjAzLCAxMjMsIDIyOSwgNiwgMTksIAotICAgIDIwLCAxNzMsIDE5LCAyMCwgMjMwLCA0MSwgMTksIDIwLCAyMjgsIDE2MiwgMTksIDIwLCAxOTYsIDIyOCwgMTYyLCAxOSwgCi0gICAgMjAsIDIyOCwgMTYwLCAxOSwgMjAsIDE5NiwgMjI4LCAxNjAsIDE5LCAyMCwgMjI4LCAxNTksIDE5LCAyMCwgMTk2LCAyMjgsIAotICAgIDE1OSwgMTksIDIwLCAyMjgsIDE1NywgMTksIDIwLCAxOTYsIDIyOCwgMTU3LCAxOSwgMjAsIDIyOCwgMTU2LCAxOSwgMjAsIAotICAgIDE5NiwgMjI4LCAxNTYsIDE5LCAyMCwgMjI4LCAxNjcsIDE5LCAyMCwgMTk2LCAyMjgsIDE2NywgMTksIDIwLCAyMjgsIDE2NiwgCi0gICAgMTksIDIwLCAxOTYsIDIyOCwgMTY2LCAxOSwgMjAsIDIyMywgNjgsIDIyOCwgMTY2LCAxOSwgMjAsIDIzMCwgNTQsIDE5LCAKLSAgICAyMCwgMjI4LCAxNjgsIDE5LCAyMCwgMjExLCAyMzcsIDIyOSwgMTkxLCAxOSwgMjAsIDIxMSwgMjM3LCAyMjksIDg4LCAxOSwgCi0gICAgMjAsIDIxMSwgMjM3LCAyMjksIDIwLCAxOSwgMjAsIDIxMSwgMjM3LCAyMzAsIDIwLCAxOSwgMjAsIDI0NiwgMjM4LCAxOSwgCi0gICAgMjAsIDI0NywgOTAsIDE5LCAyMCwgMjQ2LCA3OSwgMTksIDIwLCAyNDYsIDY5LCAxOSwgMjAsIDI0NSwgMjU0LCAxOSwgMjAsIAotICAgIDI0NSwgMTgwLCAxOSwgMjAsIDIwMywgMTIzLCAyNDUsIDE4MCwgMTksIDIwLCAyNDcsIDkyLCAxOSwgMjAsIDI0NywgOTEsIAotICAgIDE5LCAyMCwgMjQ1LCA3MiwgMTksIDIwLCAxOTYsIDI0NSwgNzIsIDE5LCAyMCwgMjQ1LCA3MCwgMTksIDIwLCAxOTYsIDI0NSwgCi0gICAgNzAsIDE5LCAyMCwgMjQ1LCA2OSwgMTksIDIwLCAxOTYsIDI0NSwgNjksIDE5LCAyMCwgMjQ1LCA2OCwgMTksIDIwLCAxOTYsIAotICAgIDI0NSwgNjgsIDE5LCAyMCwgMjQ1LCA2NywgMTksIDIwLCAxOTYsIDI0NSwgNjcsIDE5LCAyMCwgMjQ1LCA3NCwgMTksIDIwLCAKLSAgICAxOTYsIDI0NSwgNzQsIDE5LCAyMCwgMjQ1LCA3MywgMTksIDIwLCAxOTYsIDI0NSwgNzMsIDE5LCAyMCwgMjIzLCA2OCwgCi0gICAgMjQ1LCA3MywgMTksIDIwLCAyNDcsIDEyNSwgMTksIDIwLCAyMTQsIDIwNiwgMjA5LCAxMTAsIDE5LCAyMCwgMjI1LCAyMCwgCi0gICAgMTksIDIwLCAyMjUsIDE3NCwgMTksIDIwLCAyMjQsIDE1NSwgMTksIDIwLCAyMjQsIDEyNSwgMTksIDIwLCAyMjQsIDgyLCAKLSAgICAxOSwgMjAsIDIyNCwgMzUsIDE5LCAyMCwgMjAzLCAxMjMsIDIyNCwgMzUsIDE5LCAyMCwgMTkyLCAxOSwgMjAsIDIyNSwgCi0gICAgMTc1LCAxOSwgMjAsIDIyMywgMTc4LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzgsIDE5LCAyMCwgMjIzLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMjMsIDE3NiwgMTksIDIwLCAyMjMsIDE3NSwgMTksIDIwLCAxOTYsIDIyMywgMTc1LCAxOSwgMjAsIDIyMywgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjIzLCAxNzQsIDE5LCAyMCwgMjIzLCAxNzMsIDE5LCAyMCwgMTk2LCAyMjMsIDE3MywgMTksIDIwLCAKLSAgICAyMjMsIDE4MCwgMTksIDIwLCAxOTYsIDIyMywgMTgwLCAxOSwgMjAsIDIyMywgMTc5LCAxOSwgMjAsIDE5NiwgMjIzLCAxNzksIAotICAgIDE5LCAyMCwgMjIzLCA2OCwgMjIzLCAxNzksIDE5LCAyMCwgMjI2LCAxODUsIDE5LCAyMCwgMTk2LCAyMjYsIDE4NSwgMTksIAotICAgIDIwLCAyMjQsIDE1OSwgMTksIDIwLCAyNTAsIDQ4LCAyMjYsIDE4NSwgMTksIDIwLCAyMTQsIDIwNiwgMjI2LCAxODUsIDE5LCAKLSAgICAyMCwgMjIyLCAyNDAsIDE5LCAyMCwgMjIzLCAxMDUsIDE5LCAyMCwgMjIyLCAxMDAsIDE5LCAyMCwgMjIyLCA3NSwgMTksIAotICAgIDIwLCAyMjEsIDE5MSwgMTksIDIwLCAyMjEsIDE4MCwgMTksIDIwLCAyMDMsIDEyMywgMjIxLCAxODAsIDE5LCAyMCwgMjAxLCAKLSAgICAyMDEsIDE5LCAyMCwgMjIzLCAxMDYsIDE5LCAyMCwgMjIxLCAxOCwgMTksIDIwLCAxOTYsIDIyMSwgMTgsIDE5LCAyMCwgCi0gICAgMjIxLCAyMCwgMTksIDIwLCAxOTYsIDIyMSwgMjAsIDE5LCAyMCwgMjIxLCAxOSwgMTksIDIwLCAxOTYsIDIyMSwgMTksIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjIxLCAxOSwgMTksIDIwLCAyMjMsIDE2MywgMTksIDIwLCA4OCwgMjIyLCAyMDUsIDE5LCAyMCwgCi0gICAgMjIyLCAxMDUsIDE5LCAyMCwgMjI3LCAyMzQsIDE5LCAyMCwgMjI4LCAxMTEsIDE5LCAyMCwgMjI3LCAxNDgsIDE5LCAyMCwgCi0gICAgMjI3LCAxMzAsIDE5LCAyMCwgMjI3LCA0OSwgMTksIDIwLCAyMjcsIDE4LCAxOSwgMjAsIDIwMywgMTIzLCAyMjcsIDE4LCAKLSAgICAxOSwgMjAsIDIyOCwgMTEzLCAxOSwgMjAsIDIyOCwgMTEyLCAxOSwgMjAsIDIyNiwgMjA1LCAxOSwgMjAsIDE5NiwgMjI2LCAKLSAgICAyMDUsIDE5LCAyMCwgMjI2LCAyMDQsIDE5LCAyMCwgMTk2LCAyMjYsIDIwNCwgMTksIDIwLCAyMjYsIDIwMywgMTksIDIwLCAKLSAgICAxOTYsIDIyNiwgMjAzLCAxOSwgMjAsIDIyNiwgMjAyLCAxOSwgMjAsIDE5NiwgMjI2LCAyMDIsIDE5LCAyMCwgMjI2LCAyMDEsIAotICAgIDE5LCAyMCwgMTk2LCAyMjYsIDIwMSwgMTksIDIwLCAyMjYsIDIwNywgMTksIDIwLCAxOTYsIDIyNiwgMjA3LCAxOSwgMjAsIAotICAgIDIyNiwgMjA2LCAxOSwgMjAsIDE5NiwgMjI2LCAyMDYsIDE5LCAyMCwgMTU5LCAxOSwgMjAsIDE5NiwgMTU5LCAxOSwgMjAsIAotICAgIDE3NCwgMTU5LCAxOSwgMjAsIDIxNCwgMTc3LCAxOSwgMjAsIDIxNSwgMzEsIDE5LCAyMCwgMjEyLCAxNjIsIDE5LCAyMCwgCi0gICAgMjEyLCAxNDIsIDE5LCAyMCwgMjEyLCAxMywgMTksIDIwLCAyMTEsIDI1MCwgMTksIDIwLCAyMDMsIDEyMywgMjExLCAyNTAsIAotICAgIDE5LCAyMCwgMjE1LCAzNiwgMTksIDIwLCAyMTUsIDMzLCAxOSwgMjAsIDIxMCwgMTY4LCAxOSwgMjAsIDE5NiwgMjEwLCAKLSAgICAxNjgsIDE5LCAyMCwgMjEwLCAxNjIsIDE5LCAyMCwgMTk2LCAyMTAsIDE2MiwgMTksIDIwLCAyMTAsIDE2MSwgMTksIDIwLCAKLSAgICAxOTYsIDIxMCwgMTYxLCAxOSwgMjAsIDIxMCwgMTU3LCAxOSwgMjAsIDE5NiwgMjEwLCAxNTcsIDE5LCAyMCwgMjEwLCAxNTYsIAotICAgIDE5LCAyMCwgMTk2LCAyMTAsIDE1NiwgMTksIDIwLCAyMTAsIDE3MiwgMTksIDIwLCAxOTYsIDIxMCwgMTcyLCAxOSwgMjAsIAotICAgIDIxMCwgMTcxLCAxOSwgMjAsIDE5NiwgMjEwLCAxNzEsIDE5LCAyMCwgMjIzLCA2OCwgMjEwLCAxNzEsIDE5LCAyMCwgMTk0LCAKLSAgICAxOSwgMjAsIDI1MCwgNDgsIDE5NCwgMTksIDIwLCAyMTAsIDE3MywgMTksIDIwLCAyNDgsIDQwLCAxOTQsIDE5LCAyMCwgCi0gICAgMjI0LCAyOCwgMjEyLCA3MCwgMTksIDIwLCAyMjMsIDY4LCAyMTIsIDYxLCAxOSwgMjAsIDIyMywgNjgsIDIxNSwgOTIsIDE5LCAKLSAgICAyMCwgMjIzLCA2OCwgMjExLCAxNzksIDE5LCAyMCwgMjIzLCA2OCwgMjExLCAxMywgMTksIDIwLCAyMjMsIDY4LCAyMTIsIAotICAgIDYwLCAxOSwgMjAsIDIyMywgNjgsIDIxNCwgMTgwLCAxOSwgMjAsIDIxMywgNDMsIDE5LCAyMCwgMjEzLCAxMSwgMTksIDIwLCAKLSAgICAyMTMsIDYsIDE5LCAyMCwgMjEyLCAyNDIsIDE5LCAyMCwgMjEyLCAyMzYsIDE5LCAyMCwgMjEzLCA5MCwgMTksIDIwLCAyMTMsIAotICAgIDg1LCAxOSwgMjAsIDIxMiwgMTc3LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzcsIDE5LCAyMCwgMjEyLCAxNzYsIDE5LCAyMCwgCi0gICAgMTk2LCAyMTIsIDE3NiwgMTksIDIwLCAyMTIsIDE3NSwgMTksIDIwLCAxOTYsIDIxMiwgMTc1LCAxOSwgMjAsIDIxMiwgMTc0LCAKLSAgICAxOSwgMjAsIDE5NiwgMjEyLCAxNzQsIDE5LCAyMCwgMjEyLCAxNzMsIDE5LCAyMCwgMTk2LCAyMTIsIDE3MywgMTksIDIwLCAKLSAgICAyMTIsIDE4MCwgMTksIDIwLCAxOTYsIDIxMiwgMTgwLCAxOSwgMjAsIDIxMiwgMTc5LCAxOSwgMjAsIDE5NiwgMjEyLCAxNzksIAotICAgIDE5LCAyMCwgMjEzLCA5MiwgMTksIDIwLCAyMDMsIDUyLCAxOSwgMjAsIDIwMywgMTA4LCAxOSwgMjAsIDIwMywgMTEsIDE5LCAKLSAgICAyMCwgMjAzLCAyLCAxOSwgMjAsIDIwMiwgMjQ3LCAxOSwgMjAsIDIwMiwgMjMyLCAxOSwgMjAsIDIwMywgMTIzLCAyMDIsIAotICAgIDIzMiwgMTksIDIwLCAxOTgsIDE5LCAyMCwgMjAzLCAxMTAsIDE5LCAyMCwgMjAyLCAxNzQsIDE5LCAyMCwgMTk2LCAyMDIsIAotICAgIDE3NCwgMTksIDIwLCAyMDIsIDE3MywgMTksIDIwLCAxOTYsIDIwMiwgMTczLCAxOSwgMjAsIDIwMiwgMTcyLCAxOSwgMjAsIAotICAgIDE5NiwgMjAyLCAxNzIsIDE5LCAyMCwgMjAyLCAxNzEsIDE5LCAyMCwgMTk2LCAyMDIsIDE3MSwgMTksIDIwLCAyMDIsIDE3MCwgCi0gICAgMTksIDIwLCAxOTYsIDIwMiwgMTcwLCAxOSwgMjAsIDIwMiwgMTc2LCAxOSwgMjAsIDE5NiwgMjAyLCAxNzYsIDE5LCAyMCwgCi0gICAgMjAyLCAxNzUsIDE5LCAyMCwgMTk2LCAyMDIsIDE3NSwgMTksIDIwLCAyMjMsIDY4LCAyMDIsIDE3NSwgMTksIDIwLCAyMDMsIAotICAgIDEyNCwgMTksIDIwLCAyNDgsIDg0LCAyMDMsIDEyNCwgMTksIDIwLCAxOTYsIDIwMywgMTI0LCAxOSwgMjAsIDIxNCwgMjA2LCAKLSAgICAyMDMsIDExLCAxOSwgMjAsIDIxNiwgMTU4LCAxOSwgMjAsIDIxNywgMCwgMjE2LCAxNTgsIDE5LCAyMCwgMTk2LCAyMjcsIAotICAgIDIzNCwgMTksIDIwLCAyMTYsIDIxNSwgMTksIDIwLCAyMTYsIDU3LCAxOSwgMjAsIDIxNiwgMywgMTksIDIwLCAyMTUsIDIyNywgCi0gICAgMTksIDIwLCAyMTUsIDIwOCwgMTksIDIwLCAxOTYsIDIyNywgNDksIDE5LCAyMCwgMjE2LCAyMjAsIDE5LCAyMCwgMjE2LCAKLSAgICAyMTYsIDE5LCAyMCwgMTk2LCAyMjgsIDExMywgMTksIDIwLCAyMTUsIDExMCwgMTksIDIwLCAxOTYsIDIxNSwgMTEwLCAxOSwgCi0gICAgMjAsIDE0NiwgMTksIDIwLCAxOTYsIDE0NiwgMTksIDIwLCAxNzQsIDE0NiwgMTksIDIwLCAyNDAsIDYwLCAxOSwgMjAsIAotICAgIDI0MCwgMTA1LCAxOSwgMjAsIDI0MCwgMjYsIDE5LCAyMCwgMjQwLCAxMiwgMTksIDIwLCAyMzksIDE4NiwgMTksIDIwLCAKLSAgICAyMzksIDE3NSwgMTksIDIwLCAyNDAsIDEwOCwgMTksIDIwLCAyNDAsIDEwNywgMTksIDIwLCAyMzksIDg1LCAxOSwgMjAsIAotICAgIDE5NiwgMjM5LCA4NSwgMTksIDIwLCAyNDAsIDE3NCwgMTksIDIwLCAyMDksIDkyLCAxOSwgMjAsIDIyMywgMTYxLCAyMDksIAotICAgIDkyLCAxOSwgMjAsIDIwOSwgNzAsIDE5LCAyMCwgMjIzLCAxNjEsIDIwOSwgNzAsIDE5LCAyMCwgMjA5LCA2NCwgMTksIDIwLCAKLSAgICAyMjMsIDE2MSwgMjA5LCA2NCwgMTksIDIwLCAyMDksIDQ3LCAxOSwgMjAsIDIwOSwgNDIsIDE5LCAyMCwgMjA5LCAxMDgsIAotICAgIDE5LCAyMCwgMjA5LCAxMDcsIDE5LCAyMCwgMjA5LCAxMiwgMTksIDIwLCAxOTYsIDIwOSwgMTIsIDE5LCAyMCwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjA3LCAyMjcsIDE5LCAyMCwgMjA3LCAyMjUsIDE5LCAyMCwgMjA3LCAyMjQsIDE5LCAyMCwgMjA3LCAKLSAgICAyMjksIDE5LCAyMCwgMjA3LCAyMzAsIDE5LCAyMCwgMjA3LCAxMjQsIDE5LCAyMCwgMjA3LCAxMjMsIDE5LCAyMCwgMjA3LCAKLSAgICAxMjIsIDE5LCAyMCwgMjA3LCAxMjYsIDE5LCAyMCwgMjIxLCAzOSwgMjM3LCA2NywgMTksIDIwLCAyMjEsIDM5LCAyMzcsIDMsIAotICAgIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAyMzksIDE5LCAyMCwgMjIxLCAzOSwgMjM2LCAxMzYsIDE5LCAyMCwgMjIxLCAzOSwgCi0gICAgMjM2LCAxMTcsIDE5LCAyMCwgMjIxLCAzOSwgMTUyLCAxOSwgMjAsIDIyMSwgMzksIDIzNywgMTU3LCAxOSwgMjAsIDIyMSwgCi0gICAgMzksIDIzNywgMTcxLCAxOSwgMjAsIDIyMSwgMzgsIDIzNywgMTcxLCAxOSwgMjAsIDIzNiwgMjI2LCAxOSwgMjAsIDIxNywgCi0gICAgMTIyLCAxOSwgMjAsIDIxNywgODgsIDE5LCAyMCwgMjE3LCA4MywgMTksIDIwLCAyMTcsIDc3LCAxOSwgMjAsIDIxNywgNzIsIAotICAgIDE5LCAyMCwgMjE3LCAxMjYsIDE5LCAyMCwgMjE3LCAxMjUsIDE5LCAyMCwgMjE3LCAxMzQsIDE5LCAyMCwgMjA4LCAxODYsIAotICAgIDE5LCAyMCwgMjA4LCAxODQsIDE5LCAyMCwgMjA4LCAxODMsIDE5LCAyMCwgMjA4LCAxODcsIDE5LCAyMCwgMTk2LCAyMTYsIAotICAgIDE1OCwgMTksIDIwLCAxOTYsIDIxNiwgNTcsIDE5LCAyMCwgMTk2LCAyMTUsIDIyNywgMTksIDIwLCAxOTYsIDIxNiwgMjIwLCAKLSAgICAxOSwgMjAsIDIyMiwgMjAxLCAxOSwgMjAsIDIyMiwgMTUxLCAxOSwgMjAsIDIyMiwgMTQ3LCAxOSwgMjAsIDIyMiwgMTI4LCAKLSAgICAxOSwgMjAsIDIyMiwgMTIzLCAxOSwgMjAsIDIyMiwgMjAzLCAxOSwgMjAsIDIyMiwgMjAyLCAxOSwgMjAsIDIyMiwgMjA1LCAKLSAgICAxOSwgMjAsIDIyMSwgMjIwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDQzLCAxOSwgMjAsIDIxNCwgMjA2LCAyMTMsIDExLCAKLSAgICAxOSwgMjAsIDIxNCwgMjA2LCAyMTIsIDI0MiwgMTksIDIwLCAyMTQsIDIwNiwgMjEzLCA5MCwgMTksIDIwLCAyMDMsIDI0MiwgCi0gICAgMjA5LCA5MiwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA3MCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA0NywgMTksIDIwLCAKLSAgICAyMDMsIDI0MiwgMjA5LCAxMDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgMTEwLCAxOSwgMjAsIDIyNywgMTU1LCAxOSwgMjAsIAotICAgIDIyNywgMTU0LCAxOSwgMjAsIDIyNywgMTUzLCAxOSwgMjAsIDIyNywgMTUyLCAxOSwgMjAsIDIyNywgMTYxLCAxOSwgMjAsIAotICAgIDIyNywgMTYwLCAxOSwgMjAsIDIyNywgMTYyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDkyLCAxOSwgMjAsIDIwOSwgMTA5LCAKLSAgICAyMDksIDcwLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDY0LCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDQ3LCAxOSwgMjAsIAotICAgIDIwOSwgMTA5LCAyMDksIDQyLCAxOSwgMjAsIDIwOSwgMTA5LCAyMDksIDEwOCwgMTksIDIwLCAyMDksIDEwOSwgMjA5LCAKLSAgICAxMDcsIDE5LCAyMCwgMjA5LCAxMDksIDIwOSwgMTEwLCAxOSwgMjAsIDI1MSwgNTAsIDI0OSwgMjU1LCAxOSwgMjAsIDI0OCwgCi0gICAgNDAsIDc0LCAxOSwgMjAsIDI0OCwgNDAsIDc1LCAxOSwgMjAsIDI0OCwgNDAsIDc4LCAxOSwgMjAsIDI0OCwgNDAsIDYzLCAKLSAgICAxOSwgMjAsIDI0OCwgNDAsIDIwNCwgNjIsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAzMCwgMTksIDIwLCAyNDgsIDQwLCAyMDQsIAotICAgIDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxMTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjIyLCAyNDAsIDE5LCAyMCwgMjQ4LCA0MCwgCi0gICAgMjIyLCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjIxLCAxOTEsIDE5LCAyMCwgMjQ4LCA0MCwgMjAxLCAyMDEsIDE5LCAyMCwgCi0gICAgMjQ4LCA0MCwgMjI5LCAyMDEsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAxMDAsIDE5LCAyMCwgMjQ4LCA0MCwgMjI5LCAyNiwgCi0gICAgMTksIDIwLCAyNDgsIDQwLCAxNzMsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgNjcsIDE5LCAyMCwgMjE0LCAyMDYsIDIzNywgCi0gICAgMywgMTksIDIwLCAyMTQsIDIwNiwgMjM2LCAxMzYsIDE5LCAyMCwgMjE0LCAyMDYsIDE1MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4NywgMTksIDIwLCA4OCwgMjM4LCA5MSwgMTksIDIwLCA4OCwgMjM4LCAxMDUsIDE5LCAyMCwgODgsIDIzOCwgMTA0LCAxOSwgCi0gICAgMjAsIDg4LCAyMzgsIDkzLCAxOSwgMjAsIDg4LCAyMzgsIDExOSwgMTksIDIwLCA4OCwgMjE1LCAxNDUsIDE5LCAyMCwgODgsIAotICAgIDIxNSwgMjI3LCAxOSwgMjAsIDg4LCAyMTYsIDE1OCwgMTksIDIwLCA4OCwgMjE2LCAxMzUsIDE5LCAyMCwgODgsIDIxNiwgCi0gICAgNTcsIDE5LCAyMCwgODgsIDIxNiwgMjIwLCAxOSwgMjAsIDg4LCAyMDMsIDIxNywgMTksIDIwLCA4OCwgMjA0LCAwLCAxOSwgCi0gICAgMjAsIDg4LCAyMDQsIDYyLCAxOSwgMjAsIDg4LCAyMDQsIDU1LCAxOSwgMjAsIDg4LCAyMDQsIDMwLCAxOSwgMjAsIDg4LCAKLSAgICAyMDQsIDExMSwgMTksIDIwLCA4OCwgMjM1LCAyNDcsIDE5LCAyMCwgODgsIDIzNSwgMjQ4LCAxOSwgMjAsIDg4LCAyMzUsIAotICAgIDI1MSwgMTksIDIwLCA4OCwgMjM1LCAyNTAsIDE5LCAyMCwgODgsIDIzNSwgMjQ5LCAxOSwgMjAsIDg4LCAyMzUsIDI1NCwgCi0gICAgMTksIDIwLCA4OCwgMjA5LCAyMiwgMTksIDIwLCA4OCwgMjA5LCA0NywgMTksIDIwLCA4OCwgMjA5LCA5MiwgMTksIDIwLCAKLSAgICA4OCwgMjA5LCA5MCwgMTksIDIwLCA4OCwgMjA5LCA3MCwgMTksIDIwLCA4OCwgMjA5LCAxMDgsIDE5LCAyMCwgODgsIDIwNywgCi0gICAgMjA4LCAxOSwgMjAsIDg4LCAyMDcsIDIxOCwgMTksIDIwLCA4OCwgMjA3LCAyMzYsIDE5LCAyMCwgODgsIDIwNywgMjM1LCAKLSAgICAxOSwgMjAsIDg4LCAyMDcsIDIyMCwgMTksIDIwLCA4OCwgMjA3LCAyNDEsIDE5LCAyMCwgODgsIDIxNywgMTkxLCAxOSwgMjAsIAotICAgIDg4LCAyMTgsIDY5LCAxOSwgMjAsIDg4LCAyMTksIDM0LCAxOSwgMjAsIDg4LCAyMTksIDIzLCAxOSwgMjAsIDg4LCAyMTgsIAotICAgIDE2NywgMTksIDIwLCA4OCwgMTg1LCAxOSwgMjAsIDg4LCAyMTksIDE4NCwgMTksIDIwLCA4OCwgMjM3LCAyMzAsIDE5LCAyMCwgCi0gICAgODgsIDIzOCwgMzksIDE5LCAyMCwgODgsIDIzOCwgMTkwLCAxOSwgMjAsIDg4LCAyMzgsIDE4MiwgMTksIDIwLCA4OCwgMjM4LCAKLSAgICA4MSwgMTksIDIwLCA4OCwgMjM5LCA4LCAxOSwgMjAsIDg4LCAyMjksIDEwOSwgMTksIDIwLCA4OCwgMjI5LCAxMTUsIDE5LCAKLSAgICAyMCwgODgsIDIyOSwgMTI5LCAxOSwgMjAsIDg4LCAyMjksIDEyOCwgMTksIDIwLCA4OCwgMjI5LCAxMjIsIDE5LCAyMCwgODgsIAotICAgIDIyOSwgMTQ0LCAxOSwgMjAsIDg4LCAyMjksIDQyLCAxOSwgMjAsIDg4LCAyMjksIDQzLCAxOSwgMjAsIDg4LCAyMjksIDQ2LCAKLSAgICAxOSwgMjAsIDg4LCAyMjksIDQ1LCAxOSwgMjAsIDg4LCAyMjksIDQ0LCAxOSwgMjAsIDg4LCAyMjksIDQ3LCAxOSwgMjAsIAotICAgIDg4LCAyMjksIDQ4LCAxOSwgMjAsIDg4LCAyMjEsIDg0LCAxOSwgMjAsIDg4LCAyMjEsIDE5MSwgMTksIDIwLCA4OCwgMjIyLCAKLSAgICAyNDAsIDE5LCAyMCwgODgsIDIyMiwgMjM1LCAxOSwgMjAsIDg4LCAyMjIsIDEwMCwgMTksIDIwLCA4OCwgMjAxLCAyMDEsIAotICAgIDE5LCAyMCwgODgsIDIyMywgMjQ2LCAxOSwgMjAsIDg4LCAyMjQsIDgyLCAxOSwgMjAsIDg4LCAyMjUsIDIwLCAxOSwgMjAsIAotICAgIDg4LCAyMjUsIDgsIDE5LCAyMCwgODgsIDIyNCwgMTU1LCAxOSwgMjAsIDg4LCAxOTIsIDE5LCAyMCwgODgsIDIwMiwgMjEzLCAKLSAgICAxOSwgMjAsIDg4LCAyMDIsIDI0NywgMTksIDIwLCA4OCwgMjAzLCA1MiwgMTksIDIwLCA4OCwgMjAzLCA0OSwgMTksIDIwLCAKLSAgICA4OCwgMjAzLCAxMSwgMTksIDIwLCA4OCwgMTk4LCAxOSwgMjAsIDg4LCAyMzAsIDgyLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIAotICAgIDgyLCAxOSwgMjAsIDg4LCAyMzAsIDEwMSwgMTksIDIwLCA4OCwgMjMwLCAxNjEsIDE5LCAyMCwgODgsIDIzMCwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDE0MSwgMTksIDIwLCAyMTQsIDIwNiwgMjMwLCAxNDEsIDE5LCAyMCwgODgsIDIzMCwgMTgxLCAxOSwgCi0gICAgMjAsIDg4LCAyMzAsIDExNCwgMTksIDIwLCA4OCwgMjMwLCAxMTgsIDE5LCAyMCwgODgsIDIzMCwgMTI4LCAxOSwgMjAsIDg4LCAKLSAgICAyMzAsIDEyNywgMTksIDIwLCA4OCwgMjMwLCAxMjYsIDE5LCAyMCwgODgsIDIzMCwgMTI5LCAxOSwgMjAsIDg4LCAyMjYsIAotICAgIDIzOSwgMTksIDIwLCA4OCwgMjI3LCA0OSwgMTksIDIwLCA4OCwgMjI3LCAyMzQsIDE5LCAyMCwgODgsIDIyNywgMjI2LCAxOSwgCi0gICAgMjAsIDg4LCAyMjcsIDE0OCwgMTksIDIwLCA4OCwgMjI4LCAxMTMsIDE5LCAyMCwgODgsIDI0MywgMTE3LCAxOSwgMjAsIDg4LCAKLSAgICAyNDMsIDExOCwgMTksIDIwLCA4OCwgMjQzLCAxMjMsIDE5LCAyMCwgODgsIDI0MywgMTIyLCAxOSwgMjAsIDg4LCAyNDMsIAotICAgIDExOSwgMTksIDIwLCA4OCwgMjQzLCAxMjQsIDE5LCAyMCwgODgsIDIyNywgMTUxLCAxOSwgMjAsIDg4LCAyMjcsIDE1MywgCi0gICAgMTksIDIwLCA4OCwgMjI3LCAxNTcsIDE5LCAyMCwgODgsIDIyNywgMTU2LCAxOSwgMjAsIDg4LCAyMjcsIDE1NSwgMTksIDIwLCAKLSAgICA4OCwgMjI3LCAxNjEsIDE5LCAyMCwgODgsIDIwOCwgMTgxLCAxOSwgMjAsIDg4LCAyMDgsIDE4MywgMTksIDIwLCA4OCwgCi0gICAgMjA4LCAxODYsIDE5LCAyMCwgODgsIDIwOCwgMTg1LCAxOSwgMjAsIDg4LCAyMDgsIDE4NCwgMTksIDIwLCA4OCwgMjA4LCAKLSAgICAxODcsIDE5LCAyMCwgODgsIDIwOCwgMTc2LCAxOSwgMjAsIDg4LCAyMDgsIDE3NywgMTksIDIwLCA4OCwgMjA4LCAxODksIAotICAgIDE5LCAyMCwgODgsIDIwOCwgMTg4LCAxOSwgMjAsIDg4LCAyMDgsIDE3OCwgMTksIDIwLCA4OCwgMjA4LCAxOTAsIDE5LCAyMCwgCi0gICAgODgsIDIwMiwgNiwgMTksIDIwLCA4OCwgMjAyLCAxNywgMTksIDIwLCA4OCwgMjAyLCA5MiwgMTksIDIwLCA4OCwgMjAyLCAKLSAgICA5MCwgMTksIDIwLCA4OCwgMjAyLCAzOSwgMTksIDIwLCA4OCwgMjAyLCAxMTYsIDE5LCAyMCwgODgsIDIwMiwgMTU5LCAxOSwgCi0gICAgMjAsIDg4LCA4MSwgMjAyLCAxNTksIDE5LCAyMCwgODgsIDI0MSwgMjQyLCAxOSwgMjAsIDg4LCAyNDEsIDI0MywgMTksIDIwLCAKLSAgICA4OCwgMjQxLCAyNTIsIDE5LCAyMCwgODgsIDI0MSwgMjUxLCAxOSwgMjAsIDg4LCAyNDEsIDI0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQxLCAyNTUsIDE5LCAyMCwgODgsIDIxMSwgMTAsIDE5LCAyMCwgODgsIDIxMiwgMTMsIDE5LCAyMCwgODgsIDIxNCwgMTc3LCAKLSAgICAxOSwgMjAsIDg4LCAyMTQsIDE2NSwgMTksIDIwLCA4OCwgMjEyLCAxNjIsIDE5LCAyMCwgODgsIDIxNSwgMzYsIDE5LCAyMCwgCi0gICAgODgsIDIxMiwgMTk5LCAxOSwgMjAsIDg4LCAyMTIsIDI0MiwgMTksIDIwLCA4OCwgMjEzLCA0MywgMTksIDIwLCA4OCwgMjEzLCAKLSAgICA0MSwgMTksIDIwLCA4OCwgMjEzLCAxMSwgMTksIDIwLCA4OCwgMjEzLCA5MCwgMTksIDIwLCA4OCwgMjEzLCA5MiwgMTksIAotICAgIDIwLCA4OCwgMjA3LCAyNDksIDE5LCAyMCwgODgsIDIwNywgMjUzLCAxOSwgMjAsIDg4LCAyMDgsIDE0LCAxOSwgMjAsIDg4LCAKLSAgICAyMDgsIDEzLCAxOSwgMjAsIDg4LCAyMDcsIDI1NSwgMTksIDIwLCA4OCwgMjA4LCAyMCwgMTksIDIwLCA4OCwgMjQ2LCA5OCwgCi0gICAgMTksIDIwLCA4OCwgMjQ2LCAxMTYsIDE5LCAyMCwgODgsIDI0NiwgMTcwLCAxOSwgMjAsIDg4LCAyNDYsIDE2NiwgMTksIDIwLCAKLSAgICA4OCwgMjQ2LCAxNDIsIDE5LCAyMCwgODgsIDI0NiwgMTk5LCAxOSwgMjAsIDg4LCAyMDcsIDIxMSwgMTksIDIwLCA4OCwgCi0gICAgMjA3LCAyMTIsIDE5LCAyMCwgODgsIDIwNywgMjE1LCAxOSwgMjAsIDg4LCAyMDcsIDIxNCwgMTksIDIwLCA4OCwgMjA3LCAKLSAgICAyMTMsIDE5LCAyMCwgODgsIDIwNywgMjE2LCAxOSwgMjAsIDI0NiwgMTQzLCA1NCwgMTksIDIwLCAyMzksIDEwMiwgMjExLCAKLSAgICA2MSwgMTksIDIwLCAyMTcsIDExOCwgMTksIDIwLCAyMjIsIDE5OSwgMTksIDIwLCAyMjEsIDIxNywgMTksIDIwLCAyMjEsIAotICAgIDIxNiwgMTksIDIwLCAyMjEsIDIxNSwgMTksIDIwLCAyMjEsIDIxNCwgMTksIDIwLCAyMjEsIDIxOSwgMTksIDIwLCAyMjEsIAotICAgIDIxOCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCAxMCwgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA5LCAxOSwgMjAsIDIwMywgCi0gICAgMjQyLCAyMDksIDgsIDE5LCAyMCwgMjAzLCAyNDIsIDIwOSwgNywgMTksIDIwLCAyMDMsIDI0MiwgMjA5LCA2LCAxOSwgMjAsIAotICAgIDIwMywgMjQyLCAyMDksIDEzLCAxOSwgMjAsIDIwMywgMjQyLCAyMDksIDEyLCAxOSwgMjAsIDIwMywgMjQyLCA0NiwgMjA5LCAKLSAgICAxMTAsIDE5LCAyMCwgMjQ4LCA0MCwgMjA0LCAxNDQsIDIyMCwgNjQsIDIxMSwgMjI5LCA4MiwgMjIwLCA2NCwgMSwgMjQ4LCAKLSAgICAxMzIsIDIyMCwgNjQsIDEsIDIyNiwgMjI1LCAyMjAsIDY0LCAxLCAyNDAsIDU3LCAyMjAsIDY0LCAxLCAyMTUsIDE2LCAyMjAsIAotICAgIDY0LCAxLCAyMjIsIDU2LCAyMjAsIDY0LCAxLCAyMDcsIDM2LCAyMjAsIDY0LCAxLCAyNDQsIDE4NiwgMjIwLCA2NCwgMSwgCi0gICAgMjA4LCAyMTQsIDIyMCwgNjQsIDEsIDI0NSwgMjQ1LCAyMjAsIDY0LCAxLCAyNDYsIDIyNSwgMjIwLCA2NCwgMSwgMjIzLCAKLSAgICAyMzMsIDIyMCwgNjQsIDEsIDIzOCwgMjAsIDIyMCwgNjQsIDEsIDIyMiwgMTg5LCAyMjAsIDY0LCAxLCAyMTEsIDU0LCAyMjAsIAotICAgIDY0LCAxLCAyMTUsIDEzOCwgMjIwLCA2NCwgMSwgMjUxLCA2MSwgMjIwLCA2NCwgMSwgMjIwLCAyMiwgMjIwLCA2NCwgMSwgCi0gICAgMjA2LCAyMTAsIDIyMCwgNjQsIDEsIDI0MSwgMTg3LCAyMjAsIDY0LCAxLCAyMzAsIDIzMywgMjIwLCA2NCwgMSwgMjQxLCAKLSAgICAxODgsIDIyMCwgNjQsIDEsIDIxOSwgMjQ0LCAyMjAsIDY0LCAxLCAyMDcsIDE1LCAyMjAsIDY0LCAxLCAyMzEsIDg5LCAyMjAsIAotICAgIDY0LCAxLCAyNDEsIDE4NSwgMjIwLCA2NCwgMSwgMjE5LCAxMywgMjIwLCA2NCwgMjQwLCA1NiwgODIsIDIyMCwgNjQsIDIxNiwgCi0gICAgNzMsIDI0MCwgNTYsIDgyLCAxOTcsIDEsIDI0MCwgNDYsIDI0MCwgMzgsIDI0MCwgNjEsIDI0MCwgMTc0LCAxOTcsIDEsIAotICAgIDIwNiwgMTY0LCAxOTcsIDEsIDIwNiwgMTk1LCAyMDYsIDIxMSwgNjgsIDE5NywgMSwgMjAyLCAyMTYsIDE5NywgMSwgMjAzLCAKLSAgICAxMjQsIDE5NywgMSwgMjA0LCAxNDQsIDE5NywgMSwgMjA5LCAxNSwgMjA5LCAxNCwgMjA5LCA0MCwgMTk3LCAxLCAyNDAsIAotICAgIDI0MywgMTk3LCAxLCAyNTAsIDE5OSwgNjMsIDE5NywgMSwgMjE5LCAyMjgsIDc4LCAxOTcsIDEsIDI1MSwgMTQyLCA2MywgCi0gICAgMTk3LCAxLCAyNTEsIDkzLCAxOTcsIDEsIDIyNywgMjQsIDc4LCAxOTcsIDEsIDIxMiwgMjIxLCA3OCwgMTk3LCAxLCA3OCwgCi0gICAgMTk3LCAxLCAyMjAsIDczLCAxOTcsIDEsIDIyMCwgMzEsIDE5NywgMSwgMjE2LCAxOTUsIDIxNiwgMjA4LCAyMTYsIDEyMCwgCi0gICAgMTQ2LCAxOTcsIDEsIDIyOSwgMjE2LCAxOTcsIDEsIDI0NiwgMjIxLCAxOTcsIDEsIDIyOSwgMjE3LCAyMzAsIDU0LCAxOTcsIAotICAgIDEsIDIzOSwgNzUsIDE5NywgMSwgMjQxLCA3OCwgMTk3LCAxLCAyMzgsIDE4NSwgMjM3LCAxNzcsIDIzOSwgNzUsIDE5NywgMSwgCi0gICAgMjM4LCAyMjQsIDE5NywgMSwgMjAzLCAyMDksIDIwMywgMjAwLCAyMDQsIDE0NCwgMTk3LCAxLCAyMzcsIDE0OSwgMjM3LCAKLSAgICAxNzEsIDE5NywgMSwgMjM3LCAxNTMsIDIzNywgMTcxLCAxOTcsIDEsIDIyNywgMjYsIDIzNywgMTcxLCAxOTcsIDEsIDIxMiwgCi0gICAgMjI0LCAyMzcsIDE3MSwgMTk3LCAxLCAyMjMsIDYzLCAyMjEsIDIsIDIyMywgNjQsIDIyMywgMTYzLCAxOTcsIDEsIDIxMiwgCi0gICAgMjIyLCAyMjMsIDE2MywgMTk3LCAxLCAyNDIsIDgwLCAxOTcsIDEsIDIzMCwgMjEyLCAyMzAsIDIxNiwgMjMwLCAyMDMsIDc1LCAKLSAgICAxOTcsIDEsIDc0LCAxOTcsIDEsIDIzMCwgMTUyLCAyMzAsIDE4NCwgMTk3LCAxLCAyMzgsIDE2OSwgMTk3LCAxLCAyMjcsIAotICAgIDI3LCAyNTEsIDEwOSwgMTk3LCAxLCAyMTIsIDIyNiwgNjMsIDE5NywgMSwgMjMwLCAxOTUsIDI0MSwgNTEsIDE5NywgMSwgCi0gICAgMjE4LCAyMjYsIDIxOCwgMjUxLCAyMTksIDE4NCwgMTk3LCAxLCAyNTEsIDIzLCAyNDEsIDQ5LCAxOTcsIDEsIDIxMSwgMjM0LCAKLSAgICAxOTQsIDE5NywgMSwgMjEyLCAxNDYsIDIyNywgMjMsIDE5NCwgMTk3LCAxLCAyMTIsIDIyMCwgMTk0LCAxOTcsIDEsIDI0NywgCi0gICAgMTI1LCAxOTcsIDEsIDIwMiwgMTU5LCAxOTcsIDEsIDIwOCwgMTk1LCAyMDgsIDIwNywgMjA3LCAxMDgsIDIxMCwgNjksIAotICAgIDE5NywgMSwgMjEyLCAyMTksIDIxMCwgNjksIDE5NywgMSwgMjQ1LCA1MSwgMTk3LCAxLCAyNDgsIDExMSwgMjQ4LCAxMTQsIAotICAgIDI0OCwgNDYsIDI0OSwgMjU1LCAxOTcsIDEsIDIxMiwgMjI1LCAyNDksIDI1NSwgMTk3LCAxLCAyNDIsIDc5LCAxOTcsIDEsIAotICAgIDIyMCwgMiwgMTk3LCAxLCAyNDEsIDE0NiwgMjQxLCAxNDgsIDc0LCAxOTcsIDEsIDIyNSwgMTEzLCAyMjUsIDEyMywgMjI2LCAKLSAgICAxODUsIDE5NywgMSwgMjI3LCAyNSwgMjI2LCAxODUsIDE5NywgMSwgMjEyLCAyMjMsIDIyNiwgMTg1LCAxOTcsIDEsIDIyNywgCi0gICAgMjQ5LCAyMjgsIDkxLCAyMjcsIDM0LCAxNTksIDE5NywgMSwgMjQyLCA4MSwgMTk3LCAxLCAyMzEsIDIzLCAxOTcsIDEsIAotICAgIDIzMSwgMjQsIDE5NywgMSwgMjQ0LCAyMDAsIDI0NCwgMjA2LCAyNDUsIDUxLCAxOTcsIDEsIDIxOSwgMjIyLCAyNDAsIDI0MiwgCi0gICAgNzgsIDE5NywgMSwgMjQxLCAxODMsIDE5NywgMSwgMjMwLCAyMzIsIDE5NywgMSwgMjQ1LCA3MSwgMTk3LCAxLCAyNDcsIDc1LCAKLSAgICAxOTcsIDEsIDI0NiwgMjM3LCAxOTcsIDEsIDIxMSwgOTksIDE5NywgMSwgMjI3LCAyMiwgMTk3LCAxLCAyMTIsIDIxOCwgCi0gICAgMTk3LCAxLCAyMzUsIDE2MSwgMTk3LCAxLCAyMTcsIDEzNCwgMTk3LCAxLCAyMDMsIDE5NiwgMTk3LCAyMTIsIDEyMCwgMjE3LCAKLSAgICAxNzgsIDE5NywgMjIzLCAyMjYsIDIxNywgMTc4LCAxOTcsIDI0NSwgMTMxLCAyMTcsIDE3OCwgMTk3LCAyNTAsIDEwOCwgOTcsIAotICAgIDE5NywgMjA3LCAxNjIsIDk3LCAxOTcsIDI0OCwgMTMwLCA5NywgMTk3LCAxLCAyMzAsIDU0LCAxOTcsIDEsIDIxMywgOTIsIAotICAgIDE5NywgMSwgMjIwLCAxOCwgMTk3LCAxLCAyMzksIDEzMSwgMjQ3LCAyMCwgMjE5LCAyMjcsIDE5NywgMSwgMjM5LCAxMzEsIAotICAgIDI0NywgMjAsIDIzMCwgMjE1LCAxOTcsIDEsIDIzOSwgMTMxLCAyNDcsIDIwLCAyNDEsIDE0NywgMTk3LCAxLCAyMzksIDEzMSwgCi0gICAgMjQ3LCAyMCwgMjUxLCAxNDEsIDE5NywgMSwgMjM5LCAxMzEsIDI0NywgMjAsIDI1MSwgOTMsIDIwOSwgMjU0LCAxLCA2MywgCi0gICAgMjA5LCAyNTQsIDEsIDc1LCAyMDksIDI1NCwgMSwgNjgsIDIwOSwgMjU0LCAxLCAxNzMsIDIwOSwgMjU0LCAxLCAyMzksIDgsIAotICAgIDIwOSwgMjU0LCAxLCAyMjIsIDIwMywgMjA5LCAyNTQsIDEsIDIxMCwgMjIsIDIwOSwgMjU0LCAxLCAyNDQsIDIxMiwgMjA5LCAKLSAgICAyNTQsIDEsIDIwMSwgMjAxLCAyMDksIDI1NCwgMSwgMTg1LCAyMDksIDI1NCwgMSwgMjQ5LCAzMiwgMjA5LCAyNTQsIDEsIAotICAgIDE5MiwgMjA5LCAyNTQsIDEsIDE5OCwgMjA5LCAyNTQsIDEsIDIyOCwgMTEzLCAyMDksIDI1NCwgMSwgMjA0LCAxMTEsIDIwOSwgCi0gICAgMjU0LCAxLCAyMTUsIDM2LCAyMDksIDI1NCwgMSwgMTUyLCAyMDksIDI1NCwgMjIsIDIsIDc1LCAyMDksIDI1NCwgMjIsIDIsIAotICAgIDY4LCAyMDksIDI1NCwgMiwgMjA1LCAyMDQsIDIzNywgOTYsIDEsIDYzLCAyMzcsIDk2LCAxLCA3NSwgMjM3LCA5NiwgMSwgCi0gICAgNjgsIDIzNywgOTYsIDEsIDE3MywgMjM3LCA5NiwgMSwgMjM5LCA4LCAyMzcsIDk2LCAxLCAyMjIsIDIwMywgMjM3LCA5NiwgCi0gICAgMSwgMjEwLCAyMiwgMjM3LCA5NiwgMSwgMjQ0LCAyMTIsIDIzNywgOTYsIDEsIDIwMSwgMjAxLCAyMzcsIDk2LCAxLCAxODUsIAotICAgIDIzNywgOTYsIDEsIDI0OSwgMzIsIDIzNywgOTYsIDEsIDE5MiwgMjM3LCA5NiwgMSwgMTk4LCAyMzcsIDk2LCAxLCAyMTYsIAotICAgIDIyMCwgMjM3LCA5NiwgMSwgMjI4LCAxMTMsIDIzNywgOTYsIDEsIDIwNCwgMTExLCAyMzcsIDk2LCAxLCAyMTUsIDM2LCAKLSAgICAyMzcsIDk2LCAxLCAxNTIsIDIzNywgOTYsIDIyLCAyLCA3NSwgMjM3LCA5NiwgMjIsIDIsIDY4LCAyMzcsIDk2LCAyLCAyMTksIAotICAgIDEyNCwgMjE4LCAxODUsIDIxMiwgMTIwLCAyMTcsIDE3OCwgMjE4LCAxODUsIDUyLCAyMTcsIDE3OCwgMjQ3LCAxODUsIDEsIAotICAgIDYzLCAyNDcsIDE4NSwgMSwgNzUsIDI0NywgMTg1LCAxLCA2OCwgMjQ3LCAxODUsIDEsIDE3MywgMjQ3LCAxODUsIDEsIDIzOSwgCi0gICAgOCwgMjQ3LCAxODUsIDEsIDIyMiwgMjAzLCAyNDcsIDE4NSwgMSwgMjEwLCAyMiwgMjQ3LCAxODUsIDEsIDI0NCwgMjEyLCAKLSAgICAyNDcsIDE4NSwgMSwgMjAxLCAyMDEsIDI0NywgMTg1LCAxLCAxODUsIDI0NywgMTg1LCAxLCAyNDksIDMyLCAyNDcsIDE4NSwgCi0gICAgMSwgMTkyLCAyNDcsIDE4NSwgMSwgMTk4LCAyNDcsIDE4NSwgMSwgMjE2LCAyMjAsIDI0NywgMTg1LCAxLCAyMjgsIDExMywgCi0gICAgMjQ3LCAxODUsIDEsIDIwNCwgMTExLCAyNDcsIDE4NSwgMSwgMjE1LCAzNiwgMjQ3LCAxODUsIDEsIDE1MiwgMjQ3LCAxODUsIAotICAgIDIyLCAyLCA3NSwgMjQ3LCAxODUsIDIyLCAyLCA2OCwgMjA5LCAyNTMsIDEsIDYzLCAyMDksIDI1MywgMSwgNzUsIDIwOSwgCi0gICAgMjUzLCAxLCA2OCwgMjA5LCAyNTMsIDEsIDE3MywgMjA5LCAyNTMsIDEsIDIzOSwgOCwgMjA5LCAyNTMsIDEsIDIyMiwgMjAzLCAKLSAgICAyMDksIDI1MywgMSwgMjEwLCAyMiwgMjA5LCAyNTMsIDEsIDI0NCwgMjEyLCAyMDksIDI1MywgMSwgMjAxLCAyMDEsIDIwOSwgCi0gICAgMjUzLCAxLCAxODUsIDIwOSwgMjUzLCAxLCAyNDksIDMyLCAyMDksIDI1MywgMSwgMTkyLCAyMDksIDI1MywgMSwgMTk4LCAKLSAgICAyMDksIDI1MywgMSwgMjI4LCAxMTMsIDIwOSwgMjUzLCAxLCAyMDQsIDExMSwgMjA5LCAyNTMsIDEsIDIxNSwgMzYsIDIwOSwgCi0gICAgMjUzLCAyMiwgMiwgNzUsIDIwOSwgMjUzLCAyMiwgMiwgNjgsIDg1LCAxLCAxNzMsIDg1LCAxLCAyMjksIDE0NCwgODUsIDEsIAotICAgIDIyOSwgMjYsIDg1LCAxLCAyMjksIDExNSwgODUsIDEsIDIyMiwgMTI4LCA4NSwgMSwgMjQ3LCA5MiwgODUsIDEsIDI0NiwgCi0gICAgMTk5LCA4NSwgMSwgMjQ1LCAyNTQsIDg1LCAxLCAyNDYsIDExNiwgODUsIDEsIDIyMCwgMjMzLCA4NSwgMSwgMjQ0LCAyMTIsIAotICAgIDg1LCAxLCAyMDcsIDIyOSwgODUsIDEsIDI0MywgMTEzLCA4NSwgMSwgMjA3LCAyMjQsIDg1LCAxLCAyMjEsIDE5NywgODUsIAotICAgIDEsIDIxMCwgMjIsIDg1LCAxLCAyMDksIDEwOCwgODUsIDEsIDEzNSwgODUsIDEsIDIwOSwgNDcsIDg1LCAxLCAyMjEsIDE5MSwgCi0gICAgODUsIDEsIDI0OSwgMzIsIDg1LCAxLCAyMTgsIDIwOCwgODUsIDEsIDIxOCwgNjksIDg1LCAxLCAyMTgsIDE4MCwgODUsIDEsIAotICAgIDIyNCwgODIsIDg1LCAxLCAyMDIsIDI0NywgODUsIDEsIDIxNSwgMjI3LCA4NSwgMSwgMjI3LCA0OSwgODUsIDEsIDIwNSwgCi0gICAgMTg5LCA4NSwgMSwgMjEzLCA5MCwgODUsIDEsIDIxMSwgMTI0LCA4NSwgMSwgMjE1LCAzNiwgODUsIDEsIDE1MiwgODUsIDEsIAotICAgIDIyOCwgMTEzLCA4NSwgMSwgMjE3LCAxMjYsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAxMTIsIDg1LCAyMzEsIDM2LCAyMiwgCi0gICAgMjE3LCAxMjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCA4OCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDgzLCA4NSwgMjMxLCAKLSAgICAzNiwgMjIsIDIxNywgNjUsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAzNSwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDIzLCA4NSwgCi0gICAgMjMxLCAzNiwgMjIsIDIxNywgMjIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAxMDIsIDg1LCAyMzEsIDM2LCAyMiwgMjE1LCAKLSAgICA5NSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE5OSwgODUsIDIzMSwgMzYsIDIyLCAyMjYsIDE4OCwgODUsIDIzMSwgMzYsIAotICAgIDIyLCAyMTcsIDEwNiwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDExOCwgODUsIDIzMSwgMzYsIDIyLCAyMTcsIDczLCAyMDcsIAotICAgIDEyMSwgMTA1LCA4NSwgMjMxLCAzNiwgMjIsIDIxNywgNzMsIDIwNywgMTIxLCAxMDgsIDg1LCAyMzEsIDM2LCAyMiwgMjE3LCAKLSAgICAxMDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUwLCAxNDgsIDg1LCAyMiwgMjMxLCAyMSwgMjUyLCAyNSwgODUsIDIyLCAyLCAyNTIsIAotICAgIDI1LCA4NSwgMjIsIDIsIDc1LCA4NSwgMjIsIDIsIDIzMSwgODMsIDg1LCAyMiwgMiwgMjAzLCAxMjQsIDg1LCAyMiwgMiwgCi0gICAgMjAyLCAxNjksIDg1LCAyMiwgMiwgNjgsIDg1LCAyMiwgMiwgMjA2LCAxNzgsIDg1LCAyMiwgMiwgMjA3LCAzOSwgODUsIDIyLCAKLSAgICAyLCAyMjAsIDczLCA4NSwgMjIsIDIsIDE5OCwgODUsIDIyLCAyLCAyMzEsIDExMCwgODUsIDIyLCAyLCA3NCwgODUsIDIyLCAKLSAgICAyLCAyNTEsIDEwOSwgODUsIDIyLCAyLCAyNTEsIDY0LCA4NSwgMjIsIDIsIDIyMCwgMTgsIDg1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgODUsIDIsIDIyMiwgNzMsIDg1LCAyLCAyMTYsIDE1NiwgODUsIDIsIDIwMiwgMTgwLCA4NSwgMiwgMjIzLCAxOTAsIDg1LCAyLCAKLSAgICAyMDgsIDczLCA4NSwgMiwgMjQ4LCAyMzMsIDg1LCAyLCAyMTUsIDIyMiwgODUsIDIsIDIwOCwgMTcxLCA4NSwgMiwgMjMwLCAKLSAgICAxMSwgODUsIDIsIDI1MSwgNjYsIDg1LCAyLCAyMTQsIDI0NCwgMjE0LCAyMzcsIDg1LCAyLCAyMDUsIDIwMSwgODUsIDIsIAotICAgIDI0NSwgMjQ4LCA4NSwgMiwgMjQ4LCAyMDUsIDg1LCAyLCAyMjksIDEzNiwgODUsIDIsIDI0OCwgMjI4LCA4NSwgMiwgMjQ3LCAKLSAgICA2NCwgMjE4LCAxMzAsIDIyOCwgMTczLCA4NSwgMiwgMjI3LCAyMDMsIDIwOCwgMTQ4LCA4NSwgMiwgMjQ4LCAxMDAsIDg1LCAKLSAgICAyLCAyMTgsIDE4MiwgMjIzLCAyNDMsIDg1LCAyLCAyMjksIDQsIDg1LCAyNDUsIDkyLCAxNiwgMjE2LCA0OSwgODUsIDIsIAotICAgIDI1MCwgMTYsIDg1LCAyLCAyNTAsIDM3LCA4NSwgMTcsIDIwMiwgODQsIDg1LCAxNywgMTA1LCA4NSwgMTcsIDEwOCwgODUsIAotICAgIDE3LCAxNDcsIDg1LCAxNywgMTQ5LCA4NSwgMTcsIDE3MCwgODUsIDE3LCAxOTUsIDg1LCAxNywgMjEzLCAxMTEsIDg1LCAxNywgCi0gICAgMTk5LCA4NSwgMTcsIDIyMiwgNjMsIDg1LCAxNiwgMjI3LCAyMDMsIDI1MCwgMzksIDIxMSwgMjUzLCA4NSwgMTYsIDIyNywgCi0gICAgMjAzLCAyNTAsIDM5LCAyMjMsIDIxMCwgODUsIDE2LCAyMjcsIDIwMywgMjUwLCAzOSwgMjE4LCAxMjksIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDI0OCwgMTMzLCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyNDcsIDE2NSwgODUsIDE2LCAyMjcsIAotICAgIDIwMywgMjUwLCAzOSwgMjE4LCA3LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDEsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxNywgMjU1LCA4NSwgMTYsIDIyNywgMjAzLCAyNTAsIDM5LCAyMTgsIDUsIDg1LCAxNiwgMjI3LCAKLSAgICAyMDMsIDI1MCwgMzksIDIxOCwgMywgOTQsIDI0OCwgNTksIDk0LCAyNDEsIDEwOCwgOTQsIDI0NSwgMjMzLCA5NCwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDk0LCAyNDUsIDI0MiwgOTQsIDIzOSwgMTQ3LCAyNDMsIDgzLCA5NCwgMjA4LCAxNzAsIDIxMiwgNywgCi0gICAgMjM1LCAyMjAsIDk0LCAyMTIsIDE2MCwgNCwgMjQ3LCAyNDQsIDIyNSwgODgsIDk0LCAyMjUsIDExOSwgMjQ1LCAyMzMsIDk0LCAKLSAgICAyMjUsIDExOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDk0LCAyMjIsIDU0LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgCi0gICAgMTA1LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTA4LCA5NCwgMjM5LCAxMzAsIDU3LCAyMTQsIDE1MSwgMTQ3LCAKLSAgICA5NCwgMjIsIDIxMywgMTMwLCA5NCwgMTcsIDIwMiwgODQsIDk0LCAxNywgMTA1LCA5NCwgMTcsIDEwOCwgOTQsIDE3LCAxNDcsIAotICAgIDk0LCAxNywgMTQ5LCA5NCwgMTcsIDE3MCwgOTQsIDE3LCAxOTUsIDk0LCAxNywgMjEzLCAxMTEsIDk0LCAxNywgMTk5LCA5NCwgCi0gICAgMTcsIDIyMiwgNjMsIDk0LCAxLCA2MywgOTQsIDEsIDc0LCA5NCwgMSwgNzUsIDk0LCAxLCA3OCwgOTQsIDEsIDY4LCA5NCwgCi0gICAgMSwgMjIwLCA3MywgOTQsIDEsIDIwNywgMjQsIDk0LCAxLCAyNDEsIDE2MSwgOTQsIDEsIDIwMSwgMjAxLCA5NCwgMSwgMjUwLCAKLSAgICAyMjMsIDk0LCAxLCAyNDksIDMyLCA5NCwgMSwgMTg1LCA5NCwgMSwgMjE3LCAxMjYsIDk0LCAxLCAyMzksIDgsIDk0LCAxLCAKLSAgICAxOTIsIDk0LCAxLCAyMjgsIDExMywgOTQsIDEsIDIxNSwgMzYsIDk0LCAxLCAyMTMsIDkwLCA5NCwgMSwgMjEwLCAyMiwgOTQsIAotICAgIDEsIDI0NCwgMjEyLCA5NCwgMSwgMjQ2LCAxOTksIDk0LCAxLCAyMzAsIDE4MSwgOTQsIDEsIDE5OCwgOTQsIDEsIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjA0LCAxMTEsIDk0LCAxLCAyNDAsIDEwOCwgOTQsIDEsIDE3MywgOTQsIDEsIDIyOSwgMTQ0LCA5NCwgCi0gICAgMSwgMjA4LCAyMCwgOTQsIDEsIDIwMiwgMTE2LCA5NCwgMSwgMjM3LCAxNTcsIDk0LCAxLCAyMDIsIDEwLCA5NCwgMSwgMjI3LCAKLSAgICAxNjEsIDk0LCAxLCAyMDIsIDY2LCA5NCwgMSwgMjQ2LCAxNDIsIDk0LCAxLCAyMDgsIDE3MCwgMTYzLCAyMiwgNTQsIDk0LCAKLSAgICAxLCAyMDgsIDE3MCwgNzQsIDk0LCAxLCAyMDgsIDE3MCwgNzUsIDk0LCAxLCAyMDgsIDE3MCwgNzgsIDk0LCAxLCAyMDgsIAotICAgIDE3MCwgNjgsIDk0LCAxLCAyMDgsIDE3MCwgMjIwLCA3MywgOTQsIDEsIDIwOCwgMTcwLCAyMDcsIDI0LCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDI1MCwgMjIzLCA5NCwgMSwgMjA4LCAxNzAsIDI0OSwgMzIsIDk0LCAxLCAyMDgsIDE3MCwgMTg1LCA5NCwgMSwgCi0gICAgMjA4LCAxNzAsIDIxNywgMTI2LCA5NCwgMSwgMjA4LCAxNzAsIDIzOSwgOCwgOTQsIDEsIDIwOCwgMTcwLCAxOTIsIDk0LCAxLCAKLSAgICAyMDgsIDE3MCwgMjEwLCAyMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDQsIDIxMiwgOTQsIDEsIDIwOCwgMTcwLCAyNDYsIDE5OSwgCi0gICAgOTQsIDEsIDIwOCwgMTcwLCAyMzAsIDE4MSwgOTQsIDEsIDIwOCwgMTcwLCAyMDgsIDIwLCA5NCwgMSwgMjA4LCAxNzAsIAotICAgIDE5OCwgOTQsIDEsIDIwOCwgMTcwLCAyMDQsIDExMSwgOTQsIDEsIDIwOCwgMTcwLCAxNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjM5LCA1LCA5NCwgMSwgMjA4LCAxNzAsIDIzNywgMTU3LCA5NCwgMSwgMjA4LCAxNzAsIDIzMCwgMTQwLCA5NCwgMSwgMjA4LCAKLSAgICAxNzAsIDIyMiwgOTgsIDk0LCAxLCAyMDgsIDE3MCwgMjQxLCAyNTUsIDk0LCAxLCAyMTIsIDE2MCwgNzQsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgNzUsIDk0LCAxLCAyMTIsIDE2MCwgMjMwLCAxOTIsIDk0LCAxLCAyMTIsIDE2MCwgMjA3LCAyNCwgOTQsIDEsIDIxMiwgCi0gICAgMTYwLCA2OCwgOTQsIDEsIDIxMiwgMTYwLCAyNTAsIDIyMywgOTQsIDEsIDIxMiwgMTYwLCAxNzMsIDk0LCAxLCAyMTIsIAotICAgIDE2MCwgMjM5LCA4LCA5NCwgMSwgMjEyLCAxNjAsIDE1MiwgOTQsIDEsIDIxMiwgMTYwLCAxODUsIDk0LCAxLCAyMTIsIDE2MCwgCi0gICAgMjEzLCA5MCwgOTQsIDEsIDIxMiwgMTYwLCAyMTAsIDIyLCA5NCwgMSwgMjEyLCAxNjAsIDI0NCwgMjEyLCA5NCwgMSwgMjEyLCAKLSAgICAxNjAsIDIzMCwgMTgxLCA5NCwgMSwgMjEyLCAxNjAsIDI0MCwgMTA4LCA5NCwgMSwgMjEyLCAxNjAsIDIzOSwgNSwgOTQsIDEsIAotICAgIDIxMiwgMTYwLCAyMzcsIDE1NywgOTQsIDEsIDIxMiwgMTYwLCAyMDgsIDIwLCA5NCwgMSwgMjEyLCAxNjAsIDIwMiwgMTE2LCAKLSAgICA5NCwgMSwgMjEyLCAxNjAsIDIxNiwgMjE2LCA5NCwgMSwgMjEyLCAxNjAsIDI0NiwgMTk5LCA5NCwgMSwgMjEyLCAxNjAsIAotICAgIDIwMiwgODAsIDk0LCAxLCAyMjUsIDExOSwgNzUsIDk0LCAxLCAyMjUsIDExOSwgMTczLCA5NCwgMSwgMjI1LCAxMTksIDIxNiwgCi0gICAgMjIwLCA5NCwgMSwgMjI1LCAxMTksIDI0MCwgMTA4LCA5NCwgMSwgMjI1LCAxMTksIDIwMiwgODAsIDk0LCAxLCAyNTEsIDIyLCAKLSAgICAyMzgsIDI0NCwgMjUwLCAxODEsIDEwNSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDUsIDIwMCwgMTA1LCA5NCwgMSwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMTc0LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwNywgMzQsIDk0LCAxLCAKLSAgICAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAyMzksIDIwNywgMzQsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ4LCAyNDUsIAotICAgIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTI2LCAyNDgsIDI0NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA2MywgCi0gICAgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCA3NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNzMsIDk0LCAxLCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjIyLCAyMDMsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMDcsIDI0MSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDcsIDIyOSwgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyNDQsIDEyMCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMjEsIDIyNywgOTQsIDEsIDI1MSwgCi0gICAgMjIsIDIzOCwgMjQ0LCAyMTAsIDIyLCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI0NCwgMjEyLCA5NCwgMSwgMjUxLCAKLSAgICAyMiwgMjM4LCAyNDQsIDE4NSwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTgsIDIwOCwgOTQsIDEsIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMDIsIDgwLCA5NCwgMSwgMjUxLCAyMiwgCi0gICAgMjM4LCAyNDQsIDIwMiwgMTE2LCA5NCwgMSwgMjUxLCAyMiwgMjM4LCAyNDQsIDI1MSwgNzMsIDk0LCAxLCAyMDgsIDE3MCwgCi0gICAgMjUxLCAyMiwgMjM4LCAyNDQsIDIxMCwgMjIsIDk0LCAxLCAyMDgsIDE3MCwgMjUxLCAyMiwgMjM4LCAyNDQsIDIwMiwgODAsIAotICAgIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAyNDQsIDIzOCwgMTE5LCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIAotICAgIDIzOCwgMjQ0LCAyMjIsIDIwMywgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ3LCA5MiwgOTQsIDEsIAotICAgIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjMwLCAxNDksIDk0LCAxLCAyMjUsIDExOSwgMjUxLCAyMiwgMjM4LCAKLSAgICAyNDQsIDIwNywgMjQxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDEwNCwgOTQsIDEsIDIyNSwgCi0gICAgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjEwLCAyMiwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjQ0LCAKLSAgICAxLCA5NCwgMSwgMjI1LCAxMTksIDI1MSwgMjIsIDIzOCwgMjQ0LCAyMTEsIDE2NCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjQ1LCA2NSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCA4MCwgOTQsIAotICAgIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIDI0NCwgMjAyLCAxMTYsIDk0LCAxLCAyNTEsIDIyLCAyMzgsIDI0NCwgMTYyLCAKLSAgICA2OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAxNjIsIDE5OCwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIDIyLCAyMzgsIAotICAgIDI0NCwgMjQ4LCA5OCwgOTQsIDEsIDI1MSwgMjIsIDIzOCwgMjQ0LCAyNDQsIDIwMSwgOTQsIDEsIDIyNSwgMTE5LCAyNTEsIAotICAgIDIyLCAyMzgsIDI0NCwgMjI3LCAxNjEsIDE5LCAyMCwgMjE5LCAxODgsIDE5LCAyMCwgMjUwLCA4LCAxOSwgMjAsIDI1MSwgCi0gICAgMjM2LCAxOSwgMjAsIDIwNCwgNjUsIDE5LCAyMCwgMjE4LCAxMywgMTksIDIwLCAyMTksIDQzLCAxOSwgMjAsIDIxNywgMTQzLCAKLSAgICAxOSwgMjAsIDIwOSwgMTk2LCAxOSwgMjAsIDIyOSwgMjA4LCAxOSwgMjAsIDIyOCwgMTY0LCAxOSwgMjAsIDIyNSwgNjMsIAotICAgIDE5LCAyMCwgMjIxLCAxNDksIDE5LCAyMCwgMjIzLCA1OSwgMTksIDIwLCAyMjcsIDI0NCwgMTksIDIwLCAyMTEsIDIzMiwgCi0gICAgMTksIDIwLCAyMTQsIDIwOCwgMTksIDIwLCAyMTIsIDIwNywgMTksIDIwLCAyMTMsIDQ3LCAxOSwgMjAsIDIxMiwgMTcyLCAKLSAgICAxOSwgMjAsIDIwMiwgMjIyLCAxOSwgMjAsIDIwMywgNTgsIDE5LCAyMCwgMjE2LCAxNjUsIDE5LCAyMCwgMjIxLCAxNywgMTksIAotICAgIDIwLCAyMjAsIDUzLCAyMjEsIDE3LCAxOSwgMjAsIDIyMSwgMTYsIDE5LCAyMCwgMjIwLCA1MywgMjIxLCAxNiwgMTksIDIwLCAKLSAgICAyMjEsIDE1LCAxOSwgMjAsIDIyMCwgNTMsIDIyMSwgMTUsIDE5LCAyMCwgMjIxLCAxNCwgMTksIDIwLCAyMjAsIDUzLCAyMjEsIAotICAgIDE0LCAxOSwgMjAsIDIxNSwgMTA3LCAxOSwgMjAsIDIxNSwgMTA2LCAxOSwgMjAsIDIxNSwgMTA1LCAxOSwgMjAsIDIxNSwgCi0gICAgMTA0LCAxOSwgMjAsIDIxNSwgMTAzLCAxOSwgMjAsIDIxNSwgMTExLCAxOSwgMjAsIDIyMCwgNTMsIDIxOSwgMTg0LCAxOSwgCi0gICAgMjAsIDIyMCwgNTMsIDIxMCwgNjksIDE5LCAyMCwgMjIwLCA1MywgMjMwLCA1NCwgMTksIDIwLCAyMjAsIDUzLCAyNDcsIAotICAgIDEyNSwgMTksIDIwLCAyMjAsIDUzLCAyMjYsIDE4NSwgMTksIDIwLCAyMjAsIDUzLCAyMjMsIDE2MywgMTksIDIwLCAyMjAsIAotICAgIDUzLCAxOTQsIDE5LCAyMCwgMjIwLCA1MywgMjEzLCA5MiwgMTksIDIwLCAyNDEsIDE3NCwgMjA0LCAxNDQsIDE5LCAyMCwgCi0gICAgMjA0LCA0NCwgMjA0LCAxNDQsIDE5LCAyMCwgNDYsIDUsIDIxNSwgMjUyLCAxOSwgMjAsIDQ2LCAyMTYsIDE4OCwgMjQzLCAKLSAgICA4NSwgMTksIDIwLCAyMTcsIDAsIDIxNSwgMTA4LCAxOSwgMjAsIDE5NiwgMjI3LCAxOCwgMTksIDIwLCAxOTYsIDIyOCwgCi0gICAgMTEyLCAxOSwgMjAsIDIwOSwgMTEsIDE5LCAyMCwgMjA5LCAxMywgMTksIDIwLCAyMDcsIDIyMSwgMTksIDIwLCAyMDcsIAotICAgIDIyMywgMTksIDIwLCAyMDcsIDIyOCwgMTksIDIwLCAyMDgsIDE4MCwgMTksIDIwLCAyMDgsIDE4MiwgMTksIDIwLCAyMTQsIAotICAgIDIwNiwgMjEyLCAxNzcsIDE5LCAyMCwgMjE0LCAyMDYsIDIxMiwgMjM2LCAxOSwgMjAsIDIxNCwgMjA2LCAyMzYsIDExNywgCi0gICAgMTksIDIwLCA4OCwgMjM3LCAxODUsIDE5LCAyMCwgODgsIDI0NCwgMzUsIDIzOCwgMTgyLCAxOSwgMjAsIDg4LCAyMzksIDUsIAotICAgIDE5LCAyMCwgODgsIDIzNywgMTkwLCAxOSwgMjAsIDIxNCwgMjA2LCAyMzAsIDY0LCAxOSwgMjAsIDg4LCAyMzAsIDYyLCAxOSwgCi0gICAgMjAsIDI0OCwgMTUzLCAyNDQsIDM1LCAxNTksIDE5LCAyMCwgMjQ4LCAxNTMsIDI0NCwgMzUsIDE0NiwgMTksIDIwLCA4OCwgCi0gICAgMjQ0LCAzMCwgMTk0LCAyMjcsIDEyNCwgMjA1LCAxNjksIDIyNywgMTc0LCAyMjcsIDEyNCwgMSwgMTczLCAyMjcsIDEyNCwgCi0gICAgMSwgMjI5LCAxNDQsIDIyNywgMTI0LCAxLCAyMzksIDgsIDIyNywgMTI0LCAxLCAyMzgsIDExOSwgMjI3LCAxMjQsIDEsIAotICAgIDIyMiwgMjAzLCAyMjcsIDEyNCwgMSwgMjQ3LCA5MiwgMjI3LCAxMjQsIDEsIDI0NiwgMTk5LCAyMjcsIDEyNCwgMSwgMjMwLCAKLSAgICAxODEsIDIyNywgMTI0LCAxLCAyMzAsIDE0OSwgMjI3LCAxMjQsIDEsIDIwMywgNzgsIDIyNywgMTI0LCAxLCAyMTAsIDIyLCAKLSAgICAyMjcsIDEyNCwgMSwgMjA5LCAxMDgsIDIyNywgMTI0LCAxLCAyNDQsIDIxMiwgMjI3LCAxMjQsIDEsIDI0NCwgMSwgMjI3LCAKLSAgICAxMjQsIDEsIDIwMSwgMjAxLCAyMjcsIDEyNCwgMSwgMTg1LCAyMjcsIDEyNCwgMSwgMjE4LCAyMDgsIDIyNywgMTI0LCAxLCAKLSAgICAyNDksIDMyLCAyMjcsIDEyNCwgMSwgMjQ4LCA5OCwgMjI3LCAxMjQsIDEsIDE5MiwgMjI3LCAxMjQsIDEsIDE5OCwgMjI3LCAKLSAgICAxMjQsIDEsIDIxNiwgMjIwLCAyMjcsIDEyNCwgMSwgMjI4LCAxMTMsIDIyNywgMTI0LCAxLCAyMDQsIDExMSwgMjI3LCAxMjQsIAotICAgIDEsIDIxMywgOTAsIDIyNywgMTI0LCAxLCAyMTEsIDE2NCwgMjI3LCAxMjQsIDEsIDIxNSwgMzYsIDIyNywgMTI0LCAxLCAKLSAgICAxNTIsIDIyNywgMTI0LCAxLCAyMzcsIDE4MSwgMjI3LCAxMjQsIDEsIDIwOCwgMTE5LCAyMjcsIDEyNCwgMjIsIDIsIDYzLCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc1LCAyMjcsIDEyNCwgMjIsIDIsIDY4LCAyMjcsIDEyNCwgMjIsIDIsIDI0MSwgMTYxLCAyMjcsIAotICAgIDEyNCwgMjIsIDIsIDI1MSwgNjQsIDIyNywgMTI0LCAyMiwgMiwgMjIwLCAxOCwgMjI3LCAxMjQsIDIyLCAyLCAyNTAsIDM0LCAKLSAgICAyMjcsIDEyNCwgMjIsIDIsIDc0LCAyMjcsIDEyNCwgMjIsIDIsIDc4LCAyMjcsIDEyNCwgMjEwLCAyNTQsIDEsIDE5OCwgCi0gICAgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDIxMCwgMjU0LCAxLCAyMDQsIDExMSwgMjI3LCAKLSAgICAxMjQsIDUsIDEsIDE3MywgMjI3LCAxMjQsIDUsIDEsIDIyMiwgMjAzLCAyMjcsIDEyNCwgNSwgMSwgMjUwLCAxODAsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAyMTAsIDIyLCAyMjcsIDEyNCwgNSwgMSwgMjAxLCAyMDEsIDIyNywgMTI0LCA1LCAxLCAxODUsIDIyNywgCi0gICAgMTI0LCA1LCAxLCAxOTIsIDIyNywgMTI0LCA1LCAxLCAyMTYsIDIyMCwgMjI3LCAxMjQsIDUsIDEsIDIyOCwgMTEzLCAyMjcsIAotICAgIDEyNCwgMiwgMjIzLCAyMzEsIDIyNywgMTI0LCAyLCAyMjksIDE4NiwgMjI3LCAxMjQsIDIsIDIxNSwgMzQsIDIyNywgMTI0LCAKLSAgICAyLCAyMjcsIDE4LCAyMjcsIDEyNCwgMjQwLCAyMTIsIDgyLCAyMjcsIDEyNCwgMjE3LCA0NywgODIsIDIyNywgMTI0LCAxNywgCi0gICAgMjAyLCA4NCwgMjI3LCAxMjQsIDE3LCAxMDUsIDIyNywgMTI0LCAxNywgMTA4LCAyMjcsIDEyNCwgMTcsIDE0NywgMjI3LCAKLSAgICAxMjQsIDE3LCAxNDksIDIyNywgMTI0LCAxNywgMTcwLCAyMjcsIDEyNCwgMTcsIDE5NSwgMjI3LCAxMjQsIDE3LCAyMTMsIAotICAgIDExMSwgMjI3LCAxMjQsIDE3LCAxOTksIDIyNywgMTI0LCAxNywgMjIyLCA2MywgNDUsIDIyNywgMjM1LCAxLCAxNzMsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgMjAzLCAxODIsIDQ1LCAyMjcsIDIzNSwgMSwgMjIyLCAyMDMsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAKLSAgICAyMCwgNDUsIDIyNywgMjM1LCAxLCAyMTUsIDM2LCA0NSwgMjI3LCAyMzUsIDEsIDE5OCwgNDUsIDIyNywgMjM1LCAxLCAyMTAsIAotICAgIDIyLCA0NSwgMjI3LCAyMzUsIDEsIDIwOSwgMTA4LCA0NSwgMjI3LCAyMzUsIDEsIDIyOCwgMTEzLCA0NSwgMjI3LCAyMzUsIAotICAgIDEsIDE4NSwgNDUsIDIyNywgMjM1LCAxLCAyMTgsIDIwOCwgNDUsIDIyNywgMjM1LCAxLCAxOTIsIDQ1LCAyMjcsIDIzNSwgMSwgCi0gICAgMjQwLCAxMDgsIDQ1LCAyMjcsIDIzNSwgMSwgMjA2LCA4NiwgNDUsIDIyNywgMjM1LCAxLCAxNTIsIDQ1LCAyMjcsIDIzNSwgCi0gICAgMSwgMjE3LCAxMjYsIDQ1LCAyMjcsIDIzNSwgMSwgMjI5LCAxNDQsIDQ1LCAyMjcsIDIzNSwgMSwgMjA4LCAxMCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMDEsIDIwMSwgNDUsIDIyNywgMjM1LCAxLCA2MywgNDUsIDIyNywgMjM1LCAxLCA3NSwgNDUsIDIyNywgCi0gICAgMjM1LCAxLCAyNDEsIDE2MSwgNDUsIDIyNywgMjM1LCAxLCAyNDEsIDE0NywgNDUsIDIyNywgMjM1LCAxLCA2OCwgNDUsIAotICAgIDIyNywgMjM1LCAxLCAyMjAsIDE4LCA0NSwgMjI3LCAyMzUsIDEsIDc4LCA0NSwgMjI3LCAyMzUsIDEsIDIwNywgMjQsIDQ1LCAKLSAgICAyMjcsIDIzNSwgMSwgNzQsIDQ1LCAyMjcsIDIzNSwgMSwgMjUwLCAzMiwgNDUsIDIyNywgMjM1LCAxLCAyNTEsIDY0LCA0NSwgCi0gICAgMjI3LCAyMzUsIDEsIDIwOCwgMTU5LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU4LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgCi0gICAgMTU3LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU2LCA0NSwgMjI3LCAyMzUsIDEsIDIwOCwgMTU1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCAxMzgsIDIxNywgMTI2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNywgMTI2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE3MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMDMsIAotICAgIDE4MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjIsIDIwMywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxNzMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjAzLCAxODIsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEyNCwgMjIyLCAyMDMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA4LCAyMCwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMTUsIDM2LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDE5OCwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDgsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIxNSwgCi0gICAgMzYsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMTk4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDIxMCwgMjIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjA5LCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjAxLCAyMDEsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEyNCwgMjEwLCAyMiwgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDksIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDEsIDIwMSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAxODUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjE4LCAKLSAgICAyMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMTkyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDE4NSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMTgsIDIwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTI0LCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDEzOCwgMjQwLCAxMDgsIDIyMiwgMjE0LCA0NSwgMjI2LCAKLSAgICAyMzMsIDEsIDEzOCwgMjA2LCA4NiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyMjgsIDExMywgMjIyLCAyMTQsIAotICAgIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDAsIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyMDYsIDg2LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTEzLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIAotICAgIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTM4LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgCi0gICAgMTM4LCAyNDksIDMyLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDE1MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMSwgMTI0LCAyNDQsIDIxMiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgMTI0LCAyNDksIDMyLCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIwMywgMTQ5LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIDIyOCwgMTY5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMjQsIAotICAgIDIwMywgMTQ5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCAxMzgsIDIxMSwgOSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgCi0gICAgMSwgMTI0LCAyMTEsIDksIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMiwgMjEyLCAyMTYsIDIyMiwgMjE0LCAKLSAgICA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyNTIsIDI1LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDY4LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAKLSAgICAxNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCA3NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIAotICAgIDI1MSwgMTA5LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgNzgsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAKLSAgICAyLCAyMjAsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA3LCAyNCwgMjIyLCAyMTQsIDQ1LCAyMjYsIAotICAgIDIzMywgMjIsIDIsIDI1MCwgOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDI1MSwgMjM2LCAyMjIsIDIxNCwgCi0gICAgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjA2LCAxNzAsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAyMTksIDE4OCwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMjIsIDIsIDIyMCwgOTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDIyLCAyLCAKLSAgICAyMDcsIDIwLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyMiwgMiwgMjMwLCAxOTIsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIAotICAgIDEsIDQ2LCAyMDYsIDE2NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIyMiwgMjA1LCAyMjIsIDIxNCwgNDUsIAotICAgIDIyNiwgMjMzLCAxLCA0NiwgMjIzLCAxNjMsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyMjYsIDE4NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMSwgNDYsIDIzMCwgNTQsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDEsIDQ2LCAyNDUsIAotICAgIDUxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxLCA0NiwgMjQ5LCAyNTUsIDIyMiwgMjE0LCA0NSwgMjI2LCAyMzMsIDE0MywgCi0gICAgMjI1LCA5MiwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTQzLCAyMjUsIDkxLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAKLSAgICAxNywgMjAyLCA4NCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDEwNSwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIAotICAgIDEwOCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0NywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE0OSwgCi0gICAgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE3MCwgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDE5NSwgMjIyLCAKLSAgICAyMTQsIDQ1LCAyMjYsIDIzMywgMTcsIDIxMywgMTExLCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMTk5LCAyMjIsIAotICAgIDIxNCwgNDUsIDIyNiwgMjMzLCAxNywgMjIyLCA2MywgMjIyLCAyMTQsIDQ1LCAyMjYsIDIzMywgMTA0LCAxNywgMTA1LCAKLSAgICAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk3LCAyMjIsIDIxNCwgNDUsIDIyNiwgMjMzLCAyLCAyMjgsIDk2LCAKLSAgICA4NSwgMTYsIDIxOSwgNTEsIDg1LCAxNiwgMjIzLCAyMTEsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAxMzAsIDIyOSwgMjIsIAotICAgIDg1LCAxNiwgMjQ4LCAxMzQsIDIyOSwgMjIsIDg1LCAxNiwgMjQ3LCAxNjYsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCA4LCAKLSAgICAyMjksIDIyLCA4NSwgMTYsIDIxOCwgMiwgMjI5LCAyMiwgODUsIDE2LCAyMTgsIDAsIDIyOSwgMjIsIDg1LCAxNiwgMjE4LCAKLSAgICA2LCAyMjksIDIyLCA4NSwgMTYsIDIxOCwgNCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE2MSwgMjI5LCAyMiwgODUsIDE2LCAKLSAgICAyNDQsIDE1NywgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NiwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1OSwgMjI5LCAyMiwgCi0gICAgODUsIDE2LCAyNDQsIDE1OCwgMjI5LCAyMiwgODUsIDE2LCAyNDQsIDE1NSwgMjI5LCAyMiwgODUsIDE2LCAyMDcsIDE2NywgCi0gICAgODUsIDE2LCAyMjMsIDIxMSwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCAxMzAsIDIxNSwgMjIwLCA4NSwgMTYsIDI0OCwgMTM0LCAKLSAgICAyMTUsIDIyMCwgODUsIDE2LCAyNDcsIDE2NiwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA4LCAyMTUsIDIyMCwgODUsIDE2LCAKLSAgICAyMTgsIDIsIDIxNSwgMjIwLCA4NSwgMTYsIDIxOCwgMCwgMjE1LCAyMjAsIDg1LCAxNiwgMjE4LCA2LCAyMTUsIDIyMCwgODUsIAotICAgIDE2LCAyMTgsIDQsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTYxLCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIDE1NywgMjE1LCAKLSAgICAyMjAsIDg1LCAxNiwgMjQ0LCAxNTYsIDIxNSwgMjIwLCA4NSwgMTYsIDI0NCwgMTU5LCAyMTUsIDIyMCwgODUsIDE2LCAyNDQsIAotICAgIDE1OCwgMjE1LCAyMjAsIDg1LCAxNiwgMjQ0LCAxNTUsIDIxNSwgMjIwLCAyNDcsIDE4NiwgMSwgMTczLCAyNDcsIDE4NiwgMSwgCi0gICAgMjM5LCA4LCAyNDcsIDE4NiwgMSwgMjIyLCAyMDMsIDI0NywgMTg2LCAxLCAyMjIsIDE0NiwgMjQ3LCAxODYsIDEsIDE4NSwgCi0gICAgMjQ3LCAxODYsIDEsIDI0OSwgMzIsIDI0NywgMTg2LCAxLCAxOTIsIDI0NywgMTg2LCAxLCAyMjMsIDI1MCwgMjQ3LCAxODYsIAotICAgIDEsIDIxMCwgMjIsIDI0NywgMTg2LCAxLCAyNDQsIDIxMiwgMjQ3LCAxODYsIDEsIDIwMSwgMjAxLCAyNDcsIDE4NiwgMSwgCi0gICAgMjIxLCAxNDcsIDI0NywgMTg2LCAxLCAyNDcsIDkyLCAyNDcsIDE4NiwgMSwgMjMwLCAxODEsIDI0NywgMTg2LCAxLCAyMjEsIAotICAgIDExLCAyNDcsIDE4NiwgMSwgMjIxLCAzLCAyNDcsIDE4NiwgMSwgMTk4LCAyNDcsIDE4NiwgMSwgMjE2LCAyMjAsIDI0NywgCi0gICAgMTg2LCAxLCAyMjgsIDExMywgMjQ3LCAxODYsIDEsIDIwNiwgODYsIDI0NywgMTg2LCAxLCAyMTUsIDM2LCAyNDcsIDE4NiwgCi0gICAgMSwgNjMsIDI0NywgMTg2LCAxLCAxNTIsIDI0NywgMTg2LCAyMiwgMiwgNzUsIDI0NywgMTg2LCAyMiwgMiwgNjgsIDI0NywgCi0gICAgMTg2LCAyMiwgMiwgNzQsIDI0NywgMTg2LCAyMiwgMiwgNzgsIDI0NywgMTg2LCAyMiwgMiwgMjUxLCAxMDksIDI0NywgMTg2LCAKLSAgICAyMTksIDEzNiwgMjQ3LCAxODYsIDI0MSwgODQsIDc2LCAyMTQsIDE2NywgNDUsIDEwNCwgMSwgMTM4LCAxNzMsIDQ1LCAxMDQsIAotICAgIDEsIDEzOCwgMjI5LCAxNDQsIDQ1LCAxMDQsIDEsIDEzOCwgMjI4LCAxNTMsIDQ1LCAxMDQsIDEsIDEyNCwgMTczLCA0NSwgCi0gICAgMTA0LCAxLCAxMjQsIDIyOCwgMTUzLCA0NSwgMTA0LCAxLCAxMjQsIDIyOSwgMTQ0LCA0NSwgMTA0LCAxLCAyMjIsIDIwMywgCi0gICAgNDUsIDEwNCwgMSwgMTM4LCAyNDcsIDkyLCA0NSwgMTA0LCAxLCAxMzgsIDI0NiwgMTk5LCA0NSwgMTA0LCAxLCAxMjQsIAotICAgIDI0NywgOTIsIDQ1LCAxMDQsIDEsIDEyNCwgMjE1LCAzNiwgNDUsIDEwNCwgMSwgMTI0LCAyNDYsIDE5OSwgNDUsIDEwNCwgMSwgCi0gICAgMjIxLCAxMSwgNDUsIDEwNCwgMSwgMjE2LCAxNzEsIDQ1LCAxMDQsIDEsIDEzOCwgMjE2LCAxNjksIDQ1LCAxMDQsIDEsIAotICAgIDI0NCwgMjEyLCA0NSwgMTA0LCAxLCAxMjQsIDIxNiwgMTY5LCA0NSwgMTA0LCAxLCAyMTYsIDE4MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTAsIDIyLCA0NSwgMTA0LCAxLCAxMzgsIDIwOSwgMTA4LCA0NSwgMTA0LCAxLCAxMjQsIDIxMCwgMjIsIDQ1LCAKLSAgICAxMDQsIDEsIDEyNCwgMjA5LCAxMDgsIDQ1LCAxMDQsIDEsIDIwMSwgMjAxLCA0NSwgMTA0LCAxLCAyNDksIDMyLCA0NSwgCi0gICAgMTA0LCAxLCAxMzgsIDE4NSwgNDUsIDEwNCwgMSwgMTM4LCAyMTgsIDIwOCwgNDUsIDEwNCwgMSwgMTM4LCAyNDAsIDEwOCwgCi0gICAgNDUsIDEwNCwgMSwgMTI0LCAxODUsIDQ1LCAxMDQsIDEsIDEyNCwgMjQwLCAxMDgsIDQ1LCAxMDQsIDEsIDEyNCwgMjE4LCAKLSAgICAyMDgsIDQ1LCAxMDQsIDEsIDE5MiwgNDUsIDEwNCwgMSwgMTI0LCAxOTgsIDQ1LCAxMDQsIDEsIDEzOCwgMTk4LCA0NSwgCi0gICAgMTA0LCAxLCAyMTYsIDIyMCwgNDUsIDEwNCwgMSwgMjE1LCAxNDAsIDQ1LCAxMDQsIDEsIDIyOCwgMTEzLCA0NSwgMTA0LCAxLCAKLSAgICAyMjYsIDIzMiwgNDUsIDEwNCwgMSwgMjA0LCAxMTEsIDQ1LCAxMDQsIDEsIDEzOCwgMjEzLCA5MCwgNDUsIDEwNCwgMSwgCi0gICAgMTM4LCAyMTEsIDE2NCwgNDUsIDEwNCwgMSwgMTM4LCAyMTUsIDM2LCA0NSwgMTA0LCAxLCAxMzgsIDE1MiwgNDUsIDEwNCwgCi0gICAgMSwgMjI3LCA3NywgNDUsIDEwNCwgMSwgNjMsIDQ1LCAxMDQsIDEsIDEyNCwgMTUyLCA0NSwgMTA0LCAxLCA3NSwgNDUsIAotICAgIDEwNCwgMSwgMjMxLCA4MywgNDUsIDEwNCwgMSwgNjgsIDQ1LCAxMDQsIDEsIDIwNiwgMTc4LCA0NSwgMTA0LCAxLCAyNDEsIAotICAgIDE2MSwgNDUsIDEwNCwgMSwgMjIwLCAxOCwgNDUsIDEwNCwgMSwgMjI4LCA5NywgNDUsIDEwNCwgMSwgMjM3LCAyNDksIDIxNSwgCi0gICAgMzYsIDQ1LCAxMDQsIDEwOSwgMiwgMTc0LCAyMTYsIDIyMCwgNDUsIDEwNCwgMTA5LCAyLCAxNzQsIDIyOCwgMTEzLCA0NSwgCi0gICAgMTA0LCAxMDksIDIsIDIyOCwgMTE0LCAyMDksIDIyOCwgMjI4LCA4NiwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIDIzMCwgMSwgCi0gICAgMjI4LCA4NiwgNDUsIDEwNCwgMTA5LCAyLCA0NiwgMjIyLCAyMDMsIDQ1LCAxMDQsIDEwOSwgMiwgMTI0LCAxODUsIDQ1LCAKLSAgICAxMDQsIDEwOSwgMiwgMTM4LCAyMTYsIDE3MCwgMjE5LCAyNDUsIDEyNCwgMTg1LCA0NSwgMTA0LCAxMDksIDIsIDE5MiwgNDUsIAotICAgIDEwNCwgMTA5LCAyLCAyNDksIDMyLCA0NSwgMTA0LCAxMDksIDIsIDIxNSwgMzYsIDQ1LCAxMDQsIDIsIDIxNSwgMTAsIDQ1LCAKLSAgICAxMDQsIDIyLCAyLCA2MywgNDUsIDEwNCwgMjIsIDIsIDIyNSwgMTQxLCAyMTQsIDIyNSwgNDUsIDEwNCwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDQ1LCAxMDQsIDIyLCAyLCAyMDksIDIzNCwgMjUyLCAyNSwgNDUsIDEwNCwgMjIsIDIsIDc1LCA0NSwgMTA0LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgNDUsIDEwNCwgMjIsIDIsIDIwNywgMjQsIDQ1LCAxMDQsIDIyLCAyLCAyMDYsIDE3NywgNDUsIDEwNCwgCi0gICAgMjIsIDIsIDY4LCA0NSwgMTA0LCAyMiwgMiwgMjA2LCAxNzgsIDQ1LCAxMDQsIDIyLCAyLCA3OCwgNDUsIDEwNCwgMjIsIDIsIAotICAgIDIyMCwgOTgsIDU2LCA0NSwgMTA0LCAyMiwgMiwgMjE5LCAxODgsIDQ1LCAxMDQsIDIyLCAyLCA3NCwgNDUsIDEwNCwgMjIsIAotICAgIDIsIDI1MSwgMTA5LCA0NSwgMTA0LCAyMiwgMiwgMjIwLCAxOCwgNDUsIDEwNCwgMjIsIDIsIDI1MSwgNjQsIDQ1LCAxMDQsIAotICAgIDIyLCAyLCAxMDQsIDI1MSwgNjQsIDQ1LCAxMDQsIDIyLCAyLCAyMjAsIDk4LCA1NSwgNDUsIDEwNCwgMiwgMjI1LCAxNDEsIAotICAgIDIzMCwgMCwgNDUsIDEwNCwgMiwgMjA4LCAxNjAsIDQ1LCAxMDQsIDIsIDIwOCwgMTU5LCA0NSwgMTA0LCAyLCAyMjksIDEwNSwgCi0gICAgMjA4LCAxNTgsIDQ1LCAxMDQsIDIsIDIyOSwgMTA1LCAyMDgsIDE1NywgNDUsIDEwNCwgMiwgMjI5LCAxMDUsIDIwOCwgMTU2LCAKLSAgICA0NSwgMTA0LCAyLCAyMTYsIDIyMSwgMjM3LCAxNTYsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMTQsIDI1MywgNDUsIDEwNCwgCi0gICAgMiwgMjI5LCAxMDQsIDIyOSwgMjM5LCA0NSwgMTA0LCAzOSwgMjQ1LCAxMTMsIDI0MywgODUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMjAyLCA4NCwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxMDUsIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMTA4LCA0NSwgCi0gICAgMTA0LCAyMzYsIDEwOCwgMTcsIDE0NywgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAxNDksIDQ1LCAxMDQsIDIzNiwgMTA4LCAKLSAgICAxNywgMTcwLCA0NSwgMTA0LCAyMzYsIDEwOCwgMTcsIDE5NSwgNDUsIDEwNCwgMjM2LCAxMDgsIDE3LCAyMTMsIDExMSwgNDUsIAotICAgIDEwNCwgMjM2LCAxMDgsIDE3LCAxOTksIDQ1LCAxMDQsIDIzNiwgMTA4LCAxNywgMjIyLCA2MywgNDUsIDEwNCwgMTA0LCAxNywgCi0gICAgMjAyLCA4NCwgNDUsIDEwNCwgMTA0LCAxNywgMTA1LCA0NSwgMTA0LCAxMDQsIDE3LCAxMDgsIDQ1LCAxMDQsIDEwNCwgMTcsIAotICAgIDE0NywgNDUsIDEwNCwgMTA0LCAxNywgMTQ5LCA0NSwgMTA0LCAxMDQsIDE3LCAxNzAsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5NSwgCi0gICAgNDUsIDEwNCwgMTA0LCAxNywgMjEzLCAxMTEsIDQ1LCAxMDQsIDEwNCwgMTcsIDE5OSwgNDUsIDEwNCwgMTA0LCAxNywgMjIyLCAKLSAgICA2MywgNDUsIDEwNCwgMiwgMjA0LCAyOSwgNDUsIDEwNCwgMiwgMjA0LCAyOCwgNDUsIDEwNCwgMiwgMjE0LCAyMTIsIDQ1LCAKLSAgICAxMDQsIDIsIDIyOSwgMTc1LCA0NSwgMTA0LCAyLCAyMzYsIDM2LCA0NSwgMTA0LCAyLCAyNDMsIDk5LCA0NSwgMTA0LCAyLCAKLSAgICAyMTYsIDczLCAyMTUsIDE5OCwgMjE2LCAxODAsIDQ1LCAxMDQsIDIsIDIyNSwgMTQxLCAyMDMsIDc5LCA0NSwgMTA0LCAyLCAKLSAgICAyMzAsIDM1LCA0NSwgMTA0LCAyLCAyMzAsIDM0LCA0NSwgMTA0LCAyLCAyMTQsIDIyMCwgNDUsIDEwNCwgMiwgMjE0LCAyMTksIAotICAgIDQ1LCAxMDQsIDIsIDIzNywgOTgsIDQ1LCAxMDQsIDIsIDI0NywgODksIDM5LCAyNDIsIDc1LCAyNDYsIDUzLCAyNTEsIDEzOCwgCi0gICAgMzksIDI0MywgMjMwLCAzOSwgMjMxLCAyNywgMzksIDE4MywgNDcsIDM5LCAyMDgsIDcwLCAyNDMsIDg1LCAzOSwgMjAzLCAKLSAgICAxOTUsIDU2LCAzOSwgMjA0LCAyMSwgMjI3LCAxMTUsIDU2LCAzOSwgMTcxLCAxMzEsIDU2LCAzOSwgNTIsIDE3MSwgMTMxLCAKLSAgICA1NiwgMzksIDE1NywgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAzOSwgMjExLCAxOCwgMjQ2LCAyMTksIDIxMSwgMzIsIDU2LCAKLSAgICAzOSwgMjE5LCA3OCwgNTUsIDM5LCA1MiwgMjE5LCA3OCwgNTUsIDM5LCAyMTksIDc4LCA1NiwgMzksIDIxOSwgNzgsIDIxOSwgCi0gICAgMTk5LCAxMzAsIDIsIDIwNywgOSwgMjE2LCA1MSwgMTMwLCAyLCAyMDcsIDksIDI0NywgNTQsIDEzMCwgMiwgMjQ2LCAyMzQsIAotICAgIDEzMCwgMiwgMjEwLCAxOTEsIDEzMCwgMiwgMjQ4LCA1NiwgMTMwLCAxLCAyNTEsIDQ1LCAxMzAsIDEsIDI1MSwgNDYsIDIwOSwgCi0gICAgMTc4LCAxMzAsIDEsIDIzMSwgNzksIDEzMCwgMSwgMjMxLCA4MCwgMjA5LCAxNzgsIDEzMCwgMSwgMjA3LCAxMiwgMTMwLCAxLCAKLSAgICAyMDcsIDEzLCAyMDksIDE3OCwgMTMwLCAxLCAyMTYsIDIyMSwgMjE2LCAxMDMsIDEzMCwgMSwgMjE2LCAyMjEsIDIxNiwgCi0gICAgMTA0LCAyMDksIDE3OCwgMTMwLCAxLCAyMjgsIDExNCwgMjI3LCAxOTcsIDEzMCwgMSwgMjI4LCAxMTQsIDIyNywgMTk4LCAKLSAgICAyMDksIDE3OCwgMTMwLCAxLCAyNDEsIDEyNywgMTMwLCAxLCAyNTEsIDYyLCAxMzAsIDEsIDIyMCwgNDksIDEzMCwgMSwgCi0gICAgMjIwLCA1MCwgMjA5LCAxNzgsIDEzMCwgMSwgMTczLCAxMzAsIDEsIDIzMCwgNDQsIDIyNSwgMTQ0LCAxMzAsIDEsIDIzOSwgCi0gICAgOCwgMTMwLCAxLCAyMzksIDksIDIzOCwgMjUsIDEzMCwgMSwgMjIyLCAyMDMsIDEzMCwgMSwgMjQ3LCA5MiwgMTMwLCAxLCAKLSAgICAyNDcsIDkzLCAyMjgsIDEwMCwgMTMwLCAxLCAyMzAsIDE4MSwgMTMwLCAxLCAyMzAsIDE4MiwgMjMwLCAxNTMsIDEzMCwgMSwgCi0gICAgMjIxLCAxMSwgMTMwLCAxLCAyMTAsIDIzLCAyMjcsIDI1MywgMTMwLCAxLCAyMTAsIDIzLCAyMjMsIDIwNiwgMjI1LCAxNDQsIAotICAgIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyNTEsIDQsIDEzMCwgMSwgMjQ0LCAyMTMsIDIyMywgMjA2LCAyMjUsIDE0NCwgCi0gICAgMTMwLCAxLCAyMjMsIDExMSwgMjE2LCAxODMsIDEzMCwgMSwgMjEwLCAyMiwgMTMwLCAxLCAyMTAsIDIzLCAyMDksIDIwMCwgCi0gICAgMTMwLCAxLCAyNDQsIDIxMiwgMTMwLCAxLCAyNDQsIDIxMywgMjI1LCAxNjMsIDEzMCwgMSwgMjAxLCAyMDEsIDEzMCwgMSwgCi0gICAgMTg1LCAxMzAsIDEsIDIxOSwgMTY5LCAyMjksIDI1MSwgMTMwLCAxLCAyNDksIDMyLCAxMzAsIDEsIDI0OSwgMzMsIDIyOSwgCi0gICAgMTg3LCAxMzAsIDEsIDE5MiwgMTMwLCAxLCAxOTgsIDEzMCwgMSwgMjE2LCAyMjAsIDEzMCwgMSwgMjI4LCAxMTMsIDEzMCwgCi0gICAgMSwgMjA0LCAxMTEsIDEzMCwgMSwgMjE1LCAzNywgMjE1LCAyMSwgMTMwLCAxLCAyMTUsIDM3LCAyMTQsIDIzMiwgMTMwLCAxLCAKLSAgICAyMTUsIDM2LCAxMzAsIDEsIDE1MiwgMTMwLCAyLCAyMTYsIDk0LCAxMzAsIDIyLCAyLCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgCi0gICAgMjA3LCA4LCAxMzAsIDIyLCAyLCAyMDcsIDksIDIxNCwgMjI4LCAxMzAsIDIyLCAyLCAyMTAsIDIyNCwgMTMwLCAyMiwgMiwgCi0gICAgMjEwLCAyMjUsIDIzMSwgNzEsIDEzMCwgMjIsIDIsIDIxNiwgMjIxLCAyMTYsIDEwMywgMTMwLCAyMiwgMiwgMjE2LCAyMjEsIAotICAgIDIxNiwgMTA0LCAyMDksIDE3OCwgMTMwLCAyMiwgMiwgMjI4LCAxMTQsIDIyNywgMTk3LCAxMzAsIDIyLCAyLCAyMjgsIDExNCwgCi0gICAgMjI3LCAxOTgsIDIwOSwgMTc4LCAxMzAsIDIyLCAyLCAyMDksIDIzNSwgMTMwLCAyMiwgMiwgMjA5LCAyMzYsIDIxNiwgMTAzLCAKLSAgICAxMzAsIDIyLCAyLCAyMDksIDIzNiwgMjA5LCAxNzgsIDEzMCwgMjIsIDIsIDIwOSwgMjM2LCAyMTYsIDEwNCwgMjA5LCAxNzgsIAotICAgIDEzMCwgMjIsIDIsIDIxOCwgMjQ5LCAxMzAsIDIyLCAyLCAyMTgsIDI1MCwgMjA5LCAxNzgsIDEzMCwgMjUxLCAxMTcsIDI1MSwgCi0gICAgMTE2LCAxMzAsIDEsIDIzMCwgMjMsIDIxNCwgMjI3LCAxMzAsIDEsIDIyOSwgMTExLCAyMTQsIDIyNywgMTMwLCAxLCAyMDcsIAotICAgIDEwMSwgMjE0LCAyMjcsIDEzMCwgMSwgMjQxLCAxNTUsIDIxNCwgMjI3LCAxMzAsIDEsIDIwNiwgNTYsIDIxNCwgMjI3LCAKLSAgICAxMzAsIDEsIDIwMiwgMTA2LCAyMTQsIDIyNywgMTMwLCAxLCAyNTAsIDUyLCAyMTQsIDIyNywgMTMwLCAxNywgMjAyLCA4NCwgCi0gICAgMTMwLCAxNywgMTA1LCAxMzAsIDE3LCAxMDgsIDEzMCwgMTcsIDE0NywgMTMwLCAxNywgMTQ5LCAxMzAsIDE3LCAxNzAsIAotICAgIDEzMCwgMTcsIDE5NSwgMTMwLCAxNywgMjEzLCAxMTEsIDEzMCwgMTcsIDE5OSwgMTMwLCAxNywgMjIyLCA2MywgMTMwLCAKLSAgICAyMTksIDEwNCwgMTMwLCAyMTksIDEzMCwgMTMwLCAyMDQsIDE0LCAxMzAsIDI0NywgMzEsIDIxOSwgMTIzLCAxMzAsIDI0NywgCi0gICAgMzEsIDIxMiwgMTM5LCAxMzAsIDI0NywgMzEsIDIxOSwgNzUsIDEzMCwgMjE5LCAxMjksIDEzMCwgMzEsIDE2LCAyNDMsIDkxLCAKLSAgICAxMzAsIDMxLCAxNiwgMjQ0LCAzNCwgMTMwLCAzMSwgMTYsIDI0MiwgMjcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NCwgMTMwLCAKLSAgICAzMSwgMTYsIDI0NCwgMTY1LCAyMTAsIDE5MSwgMTMwLCAzMSwgMTYsIDI0MywgMTc1LCAxMzAsIDMxLCAxNiwgMjQ0LCAyMDUsIAotICAgIDEzMCwgMzEsIDE2LCAyNDQsIDEwLCAxMzAsIDMxLCAxNiwgMjQ0LCAxODcsIDEzMCwgMzEsIDE2LCAyNDQsIDE2NSwgMjM4LCAKLSAgICAxODQsIDEzMCwgMzEsIDE2LCAzOSwgMjA5LCAxNzEsIDEzMCwgMzEsIDE2LCAzOSwgMjQxLCA4MiwgMTMwLCAzMSwgMTYsIAotICAgIDM5LCAyMjksIDE4MiwgMTMwLCAzMSwgMTYsIDM5LCAyMjksIDE4NCwgMTMwLCAzMSwgMTYsIDM5LCAyMzAsIDE1NywgMTMwLCAKLSAgICAzMSwgMTYsIDM5LCAyMjksIDE4MywgMywgMjMwLCAxNTcsIDEzMCwgMzEsIDE2LCAzOSwgMjI5LCAxODUsIDMsIDIzMCwgCi0gICAgMTU3LCAxMzAsIDMxLCAxNiwgMzksIDI0OCwgMTE5LCAxMzAsIDMxLCAxNiwgMzksIDIzOCwgMjksIDEzMCwgMzEsIDE2LCAKLSAgICAyMTYsIDE0LCAxNzEsIDI0MiwgMzcsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAxNzEsIDI0NCwgMjAzLCAxMzAsIDMxLCAxNiwgCi0gICAgMjE2LCAxNCwgMjQ2LCAxNiwgMjA3LCAxOTUsIDEzMCwgMzEsIDE2LCAyMTYsIDE0LCAyNDYsIDE2LCAyMDksIDI0NCwgMTMwLCAKLSAgICAzMSwgMTYsIDIyNywgMjIwLCAxNzEsIDIxOSwgMTE4LCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE3LCAxNzcsIAotICAgIDEzMCwgMzEsIDE2LCAyMjcsIDIyMCwgMjQ2LCAxNiwgMjE4LCA5NCwgMTMwLCAzMSwgMTYsIDIyNywgMjIwLCAyNDYsIDE2LCAKLSAgICAyMTgsIDgwLCAxMzAsIDMxLCAxNiwgMjI3LCAyMjAsIDE3MSwgMjE4LCAxMTksIDIxMCwgMjEzLCAyLCAyMTksIDEwMSwgCi0gICAgMjEwLCAyMTMsIDIsIDIxOSwgMTE0LCAyMTAsIDIxMywgMiwgMjE5LCAxMTAsIDIxMCwgMjEzLCAxLCA2MywgMjEwLCAyMTMsIAotICAgIDEsIDc1LCAyMTAsIDIxMywgMSwgNjgsIDIxMCwgMjEzLCAxLCAyNTEsIDEwOSwgMjEwLCAyMTMsIDEsIDc4LCAyMTAsIDIxMywgCi0gICAgMSwgNzQsIDIxMCwgMjEzLCAxLCAyNDAsIDIzOCwgMjEwLCAyMTMsIDEsIDE3MywgMjEwLCAyMTMsIDEsIDIxNywgMTI2LCAKLSAgICAyMTAsIDIxMywgMSwgMjM5LCA4LCAyMTAsIDIxMywgMSwgMjIyLCAyMDMsIDIxMCwgMjEzLCAxLCAyNDcsIDkyLCAyMTAsIAotICAgIDIxMywgMSwgMjMwLCAxODEsIDIxMCwgMjEzLCAxLCAyMDIsIDExNiwgMjEwLCAyMTMsIDEsIDIyMSwgMTEsIDIxMCwgMjEzLCAKLSAgICAxLCAyMTAsIDIyLCAyMTAsIDIxMywgMSwgMjQ0LCAyMTIsIDIxMCwgMjEzLCAxLCAyMDEsIDIwMSwgMjEwLCAyMTMsIDEsIAotICAgIDE4NSwgMjEwLCAyMTMsIDEsIDI0MCwgMTA4LCAyMTAsIDIxMywgMSwgMjA2LCA4NiwgMjEwLCAyMTMsIDEsIDI0OSwgMzIsIAotICAgIDIxMCwgMjEzLCAxLCAxOTIsIDIxMCwgMjEzLCAxLCAxOTgsIDIxMCwgMjEzLCAxLCAyMTYsIDIyMCwgMjEwLCAyMTMsIDEsIAotICAgIDIyOCwgMTEzLCAyMTAsIDIxMywgMSwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMTUsIDM2LCAyMTAsIDIxMywgMSwgMjAzLCAKLSAgICAxODIsIDIxMCwgMjEzLCAxLCAxNTIsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgMTI3LCAyMTAsIDIxMywgMTA5LCAyLCAyMTksIAotICAgIDEwMywgMjEwLCAyMTMsIDEwOSwgMiwgMjE5LCAxMDAsIDIxMCwgMjEzLCAyMiwgMiwgMjE5LCAxMTcsIDIxMCwgMjEzLCAyMiwgCi0gICAgMiwgMjE5LCA5OSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEyMSwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDEwOSwgMjEwLCAKLSAgICAyMTMsIDIyLCAyLCAyMTksIDEyOCwgMjEwLCAyMTMsIDIyLCAyLCAyMTksIDExOSwgMjEwLCAyMTMsIDIsIDIxOSwgMTMxLCAKLSAgICAyMTAsIDIxMywgMiwgMjA1LCAyMDQsIDIxMCwgMjEzLCAxMDksIDIsIDIxOSwgNjQsIDE5MiwgMjEwLCAyMTMsIDEwOSwgMiwgCi0gICAgMjE5LCA2NCwgMjA0LCAxMTEsIDIxMCwgMjEzLCAxLCAyMjksIDE0NCwgMjEwLCAyMTMsIDEsIDIxMCwgMTUwLCAyMTAsIAotICAgIDIxMywgMTcsIDIwMiwgODQsIDIxMCwgMjEzLCAxNywgMTA1LCAyMTAsIDIxMywgMTcsIDEwOCwgMjEwLCAyMTMsIDE3LCAKLSAgICAxNDcsIDIxMCwgMjEzLCAxNywgMTQ5LCAyMTAsIDIxMywgMTcsIDE3MCwgMjEwLCAyMTMsIDE3LCAxOTUsIDIxMCwgMjEzLCAKLSAgICAxNywgMjEzLCAxMTEsIDIxMCwgMjEzLCAxNywgMTk5LCAyMTAsIDIxMywgMTcsIDIyMiwgNjMsIDIxMCwgMjEzLCAyNTAsIAotICAgIDE3LCAyMTAsIDIxMywgMSwgMjE2LCA3NiwgMjEwLCAyMTMsIDEsIDIyNywgMTcxLCAyMTAsIDIxMywgMSwgMjQ4LCA5OCwgCi0gICAgMjEwLCAyMTMsIDEsIDQ2LCAyMzAsIDU0LCAyMTAsIDIxMywgMSwgNDYsIDIyNiwgMTg1LCAyNDgsIDIwOCwgMSwgNjMsIAotICAgIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgNjMsIDI0OCwgMjA4LCAxLCAxNTIsIDI0OCwgMjA4LCAxLCAyMTIsIDEzMSwgMTUyLCAKLSAgICAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDE1MiwgMjQ4LCAyMDgsIDEsIDI0OSwgMzIsIDI0OCwgMjA4LCAxLCAyMjksIDIzNiwgCi0gICAgMjQ5LCAzMiwgMjQ4LCAyMDgsIDEsIDE4NSwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxODUsIDI0OCwgMjA4LCAxLCAyMDEsIAotICAgIDIwMSwgMjQ4LCAyMDgsIDEsIDIyNSwgMTE3LCAyMDEsIDIwMSwgMjQ4LCAyMDgsIDEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgCi0gICAgMjEyLCAxMzEsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjE5LCAxNDMsIDIwNCwgMTExLCAyNDgsIDIwOCwgMSwgMjM5LCA4LCAKLSAgICAyNDgsIDIwOCwgMSwgMjEyLCAxMzEsIDIzOSwgOCwgMjQ4LCAyMDgsIDEsIDIzMCwgMTgxLCAyNDgsIDIwOCwgMSwgMjQ0LCAKLSAgICAyMTIsIDI0OCwgMjA4LCAxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAyMTYsIDIyMCwgMjQ4LCAyMDgsIDEsIAotICAgIDE5MiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAxOTIsIDI0OCwgMjA4LCAxLCAyMTEsIDIzNiwgMjEwLCAyMiwgMjQ4LCAKLSAgICAyMDgsIDEsIDIyMSwgMTcwLCAyMTAsIDIyLCAyNDgsIDIwOCwgMSwgMjE1LCAzNiwgMjQ4LCAyMDgsIDEsIDIxMiwgMTMxLCAKLSAgICAyMTUsIDM2LCAyNDgsIDIwOCwgMSwgMjI1LCAxMTcsIDIxNSwgMzYsIDI0OCwgMjA4LCAxLCAxOTgsIDI0OCwgMjA4LCAxLCAKLSAgICAyMTIsIDEzMSwgMTk4LCAyNDgsIDIwOCwgMSwgMjIyLCAyMDMsIDI0OCwgMjA4LCAxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIAotICAgIDIxMiwgMTMxLCAyMjgsIDExMywgMjQ4LCAyMDgsIDEsIDIyMSwgMTEsIDI0OCwgMjA4LCAxLCAyNDcsIDkyLCAyNDgsIDIwOCwgCi0gICAgMSwgMjIzLCAyNSwgMjQ4LCAyMDgsIDEsIDIyNSwgNTQsIDI0OCwgMjA4LCAxLCA3NSwgMjQ4LCAyMDgsIDEsIDY4LCAyNDgsIAotICAgIDIwOCwgMiwgMjA4LCAxNjQsIDI0OCwgMjA4LCAyMiwgMiwgNzQsIDI0OCwgMjA4LCAyMiwgMiwgMjE5LCAxNDMsIDc0LCAKLSAgICAyNDgsIDIwOCwgMjIsIDIsIDI0MSwgMTYxLCAyNDgsIDIwOCwgMjIsIDIsIDc1LCAyNDgsIDIwOCwgMjIsIDIsIDIyOSwgCi0gICAgMjM2LCA3NSwgMjQ4LCAyMDgsIDIyLCAyLCA3OCwgMjQ4LCAyMDgsIDIyLCAyLCAyMjksIDIzNiwgNzgsIDI0OCwgMjA4LCAKLSAgICAyMiwgMiwgNjgsIDI0OCwgMjA4LCAyMiwgMiwgMTA2LCAzNSwgMjEyLCAxMzEsIDIxNSwgMzYsIDI0OCwgMjA4LCAxMDksIDIsIAotICAgIDIyMiwgMjA1LCAyNDgsIDIwOCwgMTA5LCAyLCAyMzcsIDE3MSwgMjQ4LCAyMDgsIDIxOSwgMTEyLCAyNDgsIDIwOCwgMjE5LCAKLSAgICAxMDgsIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjIzLCAxMTEsIDIyNCwgMjE4LCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIAotICAgIDIxOCwgMTIyLCAyNDgsIDIwOCwgMTYsIDI0OCwgNjQsIDIzMCwgNzksIDI0OCwgMjA4LCAxNiwgMjQ4LCA2NCwgMjE5LCAKLSAgICAxMTIsIDIyNywgMTgxLCAxLCAxNzMsIDIyNywgMTgxLCAxLCAyMjksIDQwLCAyMjcsIDE4MSwgMSwgMjI5LCAxNDQsIDIyNywgCi0gICAgMTgxLCAxLCAyMzksIDgsIDIyNywgMTgxLCAxLCAyMzgsIDUxLCAyMjcsIDE4MSwgMSwgMjIyLCAyMDMsIDIyNywgMTgxLCAxLCAKLSAgICAyNDcsIDkyLCAyMjcsIDE4MSwgMSwgMjQ2LCAxOTksIDIyNywgMTgxLCAxLCAyMzAsIDE4MSwgMjI3LCAxODEsIDEsIDIyMSwgCi0gICAgMTEsIDIyNywgMTgxLCAxLCAyMTAsIDIyLCAyMjcsIDE4MSwgMSwgMjA5LCAxMDgsIDIyNywgMTgxLCAxLCAyNDQsIDIxMiwgCi0gICAgMjI3LCAxODEsIDEsIDIwMSwgMjAxLCAyMjcsIDE4MSwgMSwgMTg1LCAyMjcsIDE4MSwgMSwgMjE4LCA5OCwgMjI3LCAxODEsIAotICAgIDEsIDIxOCwgMjA4LCAyMjcsIDE4MSwgMSwgMjQwLCAxMDgsIDIyNywgMTgxLCAxLCAyMzksIDIyNywgMjI3LCAxODEsIDEsIAotICAgIDI0OSwgMzIsIDIyNywgMTgxLCAxLCAyNDgsIDQ0LCAyMjcsIDE4MSwgMSwgMTkyLCAyMjcsIDE4MSwgMSwgMjI0LCA4OSwgCi0gICAgMjI3LCAxODEsIDEsIDIwOCwgMjAsIDIyNywgMTgxLCAxLCAyMDgsIDEwLCAyMjcsIDE4MSwgMSwgMjQxLCAyNTUsIDIyNywgCi0gICAgMTgxLCAxLCAxOTgsIDIyNywgMTgxLCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDEsIDIyOCwgMTEzLCAyMjcsIDE4MSwgMSwgCi0gICAgMTUyLCAyMjcsIDE4MSwgMSwgMjM2LCAyMjQsIDIyNywgMTgxLCAxLCAyMDYsIDg2LCAyMjcsIDE4MSwgMSwgMjE1LCAzNiwgCi0gICAgMjI3LCAxODEsIDEsIDIxMywgOTAsIDIyNywgMTgxLCAxLCAyMDQsIDExMSwgMjI3LCAxODEsIDEsIDYzLCAyMjcsIDE4MSwgCi0gICAgMjEwLCAyNTQsIDEsIDE5OCwgMjI3LCAxODEsIDIxMCwgMjU0LCAxLCAyMTYsIDIyMCwgMjI3LCAxODEsIDIyLCAyLCAyNTIsIAotICAgIDI1LCAyMjcsIDE4MSwgMjIsIDIsIDc1LCAyMjcsIDE4MSwgMjIsIDIsIDc4LCAyMjcsIDE4MSwgMjIsIDIsIDIyMCwgMTgsIAotICAgIDIyNywgMTgxLCAyMiwgMiwgNjgsIDIyNywgMTgxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNywgMTgxLCAyMiwgMiwgNzQsIDIyNywgCi0gICAgMTgxLCAxMDksIDIsIDIzMCwgNTQsIDIyNywgMTgxLCAxMDksIDIsIDIyNiwgMTg1LCAyMjcsIDE4MSwgMTA5LCAyLCAxNTksIAotICAgIDIyNywgMTgxLCAxMDksIDIsIDIyMywgMTYzLCAyMjcsIDE4MSwgMTA5LCAyLCAyMTksIDE4NCwgMjI3LCAxODEsIDEwOSwgMiwgCi0gICAgMTQ2LCAyMjcsIDE4MSwgMTA5LCAyLCAyMTAsIDY5LCAyMjcsIDE4MSwgMTA5LCAyLCAyMjAsIDI0MSwgMjI3LCAxODEsIAotICAgIDEwOSwgMiwgMjMwLCAwLCAyMjcsIDE4MSwgMiwgMjE2LCAxODEsIDIyNywgMTgxLCAyLCAyMjEsIDUxLCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIxMCwgMjAsIDIyNywgMTgxLCAyMTcsIDE3OSwgMjIwLCAyNTIsIDIwOSwgNSwgMjEwLCAyMCwgMjI3LCAKLSAgICAxODEsIDIxNywgMTc5LCAyNDYsIDIwNiwgMjI3LCAxODEsIDIxNywgMTc5LCAyMDgsIDIsIDI0NiwgMjA2LCAyMjcsIDE4MSwgCi0gICAgMjE3LCAxNzksIDIwOCwgMSwgMjI3LCAxODEsIDE3LCAyMDIsIDg0LCAyMjcsIDE4MSwgMTcsIDEwNSwgMjI3LCAxODEsIDE3LCAKLSAgICAxMDgsIDIyNywgMTgxLCAxNywgMTQ3LCAyMjcsIDE4MSwgMTcsIDE0OSwgMjI3LCAxODEsIDE3LCAxNzAsIDIyNywgMTgxLCAKLSAgICAxNywgMTk1LCAyMjcsIDE4MSwgMTcsIDIxMywgMTExLCAyMjcsIDE4MSwgMTcsIDE5OSwgMjI3LCAxODEsIDE3LCAyMjIsIAotICAgIDYzLCAyMjcsIDE4MSwgMSwgMjA3LCAyNDEsIDIyNywgMTgxLCAxLCAyMDcsIDIyOSwgMjI3LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDIwMiwgODQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTA1LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMTcsIDEwOCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxNDcsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTQ5LCAKLSAgICAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIDE3MCwgMjIwLCA0NywgMjQ2LCAxMzUsIDE3LCAxOTUsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAxNywgMjEzLCAxMTEsIDIyMCwgNDcsIDI0NiwgMTM1LCAxNywgMTk5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMTcsIAotICAgIDIyMiwgNjMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMjgsIDExMywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MCwgNDksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDgxLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUwLCAyMjMsIDIyMCwgNDcsIAotICAgIDI0NiwgMTM1LCAxLCAyNTEsIDM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjI4LCAxMTIsIDIyMCwgNDcsIDI0NiwgMTM1LCAKLSAgICAxLCAyNTEsIDI0MywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDI1MSwgMjQ0LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjUxLCAKLSAgICAyNDIsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNTEsIDIzNywgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgMTQ4LCAyMjAsIAotICAgIDQ3LCAyNDYsIDEzNSwgMSwgMjMwLCAyMTUsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzEsIDg0LCAyMjAsIDQ3LCAyNDYsIAotICAgIDEzNSwgMSwgMjMwLCAyMzYsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMzAsIDIyNCwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIAotICAgIDIyNiwgMjM5LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjA3LCAzMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNywgMjksIAotICAgIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMDYsIDIyOSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIwNiwgMTcwLCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMSwgMjI3LCAyMzQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDQ2LCAyMjAsIDQ3LCAyNDYsIDEzNSwgCi0gICAgMSwgMjQxLCAxNjQsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyNDEsIDkyLCAyMjAsIDQ3LCAyNDYsIDEzNSwgMSwgMjQxLCAKLSAgICAyMSwgMjIwLCA0NywgMjQ2LCAxMzUsIDEsIDIyNywgNDksIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIxOSwgMjIwLCAKLSAgICA0NywgMjQ2LCAxMzUsIDEsIDIyMCwgOTMsIDIyMCwgNDcsIDI0NiwgMTM1LCAxLCAyMTksIDIwNiwgMjIwLCA0NywgMjQ2LCAKLSAgICAxMzUsIDEsIDIyMCwgNjAsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMjMsIDI0NywgMjA3LCAyMDYsIDIyMCwgNDcsIDI0NiwgCi0gICAgMTM1LCAyMzksIDMsIDIwNywgMjA3LCAyMjAsIDQ3LCAyNDYsIDEzNSwgMjIzLCAyNDUsIDIwNywgMjA3LCAyMjAsIDQ3LCAKLSAgICAyNDYsIDEzNSwgMjE2LCAxMTgsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTgsIDIwNiwgMjIwLCA0NywgMjQ2LCAxMzUsIDI1MSwgCi0gICAgNzIsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgMjIzLCAyNDEsIDIyMCwgNDcsIDI0NiwgMTM1LCAyMTcsIDE3OSwgCi0gICAgNTIsIDIyMywgMjQxLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxMCwgMTg0LCAyMTAsIDIxMywgMjE3LCAxNzksIAotICAgIDI0OCwgNjQsIDIxOSwgMTEzLCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIxNywgMTY3LCAyMTAsIDIxMywgMjE3LCAKLSAgICAxNzksIDI0OCwgNjQsIDI0NywgNzcsIDIxMCwgMjEzLCAyMTcsIDE3OSwgMjQ4LCA2NCwgMjI3LCAxNzIsIDIxNCwgMjI0LCAKLSAgICAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgNjQsIDIzMCwgNDQsIDIxNCwgMjI0LCAyMTAsIDIxMywgMjE3LCAxNzksIDI0OCwgCi0gICAgNjQsIDI0NCwgMjEzLCAyMTQsIDIyNCwgMjEwLCAyMTMsIDIxNywgMTc5LCAyNDgsIDY0LCAyNDksIDMzLCAyMTQsIDIyNCwgCi0gICAgMjA2LCA1MiwgMTQzLCAyMjksIDIzNCwgMjA2LCA1MiwgMTQzLCAyMTMsIDU4LCAyMDYsIDUyLCAxNDMsIDIxNywgMjQ1LCAKLSAgICAyMDYsIDUyLCAyLCAyMjIsIDc2LCAyMDYsIDUyLCAyLCAyMDMsIDg3LCAyMjQsIDE0NiwgMjEwLCAxNzUsIDIwNiwgNTIsIAotICAgIDE0MywgMjAzLCA4NywgMjUxLCA3NywgMjMxLCAzNiwgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjMxLCAzNiwgCi0gICAgMjEwLCAxNzUsIDIwNiwgNTIsIDE0MywgMjAzLCA4NywgMjI5LCAyMjIsIDIzMSwgMzYsIDIxMCwgMTc1LCAyMDYsIDUyLCAKLSAgICAxNDMsIDI0NywgNTUsIDU2LCAyMDYsIDUyLCAxNDMsIDIwMywgODcsIDIyOSwgMjIyLCAyMzEsIDM2LCAyMTAsIDE3NiwgCi0gICAgMjE0LCAxOTQsIDIwNiwgNTIsIDE0MywgNTIsIDIxMCwgMTc1LCAyMDYsIDUyLCAxNDMsIDIwOCwgNzAsIDIxMCwgMTc1LCAKLSAgICAyMDYsIDUyLCAxNDMsIDIyOSwgMjIyLCAyNTAsIDE4MiwgMjA2LCA1MiwgMTQzLCA3MCwgNTYsIDIwNiwgNTIsIDE0MywgCi0gICAgMTIwLCAxODcsIDU2LCAyMDYsIDUyLCAxNDMsIDEyNiwgMTg3LCA1NiwgMjA2LCA1MiwgMTQzLCAyMTYsIDQsIDIyOSwgMjMzLCAKLSAgICAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMTQzLCAyNTAsIDQ3LCAyMzEsIDM2LCAyMTAsIDE3NSwgMjA2LCA1MiwgMiwgCi0gICAgMjA1LCAyMDAsIDIxMCwgMTc1LCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDIwNywgMjYsIDIwNiwgNTIsIDIsIDIwNSwgMjAwLCAyNTAsIDE4MiwgMjA2LCA1MiwgMiwgMjE2LCA3MywgCi0gICAgMjA1LCAyMDAsIDI1MCwgMTgyLCAyMDYsIDUyLCAyLCAyMDUsIDIwMCwgMjA3LCAyNywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIAotICAgIDIsIDIwNSwgMjAwLCAyNTAsIDE4MywgMywgMjA5LCAyNDgsIDIwNiwgNTIsIDIsIDI1MCwgMTgxLCAyNTAsIDE5NywgMjA2LCAKLSAgICA1MiwgMiwgMjUwLCAxODEsIDI0OSwgMiwgMjA2LCA1MiwgMiwgMjUwLCAxODEsIDIwNiwgNzcsIDIwNiwgNTIsIDIsIDI1MCwgCi0gICAgMTgxLCAyMDYsIDc4LCAzLCAyMDksIDI0OCwgMjA2LCA1MiwgMiwgMjA4LCAyMDEsIDIwNiwgNTIsIDIsIDIzNywgMTUsIAotICAgIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDE2MywgMjUwLCAxODAsIDIwNiwgNTIsIDIsIDIxNSwgMTQ3LCAxNjMsIDI1MCwgCi0gICAgMTgwLCAyMDYsIDUyLCAyLCAyNTAsIDE4MSwgMjA3LCAzMywgMjIzLCAyMzIsIDIwNiwgNTIsIDIsIDI1MCwgMTIyLCAyMDYsIAotICAgIDUyLCAyLCAyMTUsIDE5OCwgMjUwLCAxMjIsIDIwNiwgNTIsIDE0MywgMjQ3LCA1NSwgNTUsIDIwNiwgNTIsIDIsIDIzMCwgCi0gICAgMTM1LCAyMDYsIDUyLCAyLCAyMDYsIDIyMiwgMjA2LCA1MiwgMTQzLCAyMTUsIDI1MywgNTUsIDIwNiwgNTIsIDE0MywgNTIsIAotICAgIDIxNSwgMjUzLCA1NSwgOCwgMSwgNSwgNiwgNjMsIDgsIDEsIDUsIDYsIDI1MSwgMTA5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMjUxLCAxMDksIDgsIDEsIDUsIDYsIDI0OCwgMjI1LCAyNDksIDI1NSwgOCwgMSwgNSwgNiwgMjQ3LCAxMjUsIDgsIDEsIDUsIAotICAgIDYsIDI0NSwgNTEsIDgsIDEsIDUsIDYsIDI0MCwgMjQzLCA4LCAxLCA1LCA2LCA3NCwgOCwgNSwgMSwgMjA3LCAxNzQsIDE3MSwgCi0gICAgNzQsIDgsIDUsIDEsIDIwNywgMTc0LCA3NSwgOCwgMSwgNSwgNiwgMjMwLCAxODQsIDgsIDEsIDUsIDYsIDIzMCwgNTQsIDgsIAotICAgIDEsIDUsIDYsIDIyOCwgMTMxLCAzLCA5NSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDgsIDEsIDUsIDYsIDIxNiwgNzMsIDIyMywgCi0gICAgMTYzLCA4LCAxLCA1LCA2LCA3OCwgOCwgMSwgNSwgNiwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDc4LCA4LCA1LCAxLCAKLSAgICAyMTIsIDE1NCwgMTcxLCA3OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDE1OCwgMywgOTUsIDgsIDUsIDEsIDIwNywgMTc0LCAyMjAsIAotICAgIDczLCA4LCAxLCA1LCA2LCAyMTksIDIxNiwgOCwgNSwgMSwgMjA4LCAxNDUsIDE2MiwgNzgsIDgsIDUsIDEsIDI0NywgMjQ4LCAKLSAgICAxNjIsIDc4LCA4LCAxLCA1LCA2LCAyMTksIDE4NCwgOCwgMSwgNSwgNiwgMjE2LCA3MywgMTQ2LCA4LCAxLCA1LCA2LCAyMDcsIAotICAgIDE3NCwgMTQ2LCA4LCAxLCA1LCA2LCAyMTAsIDY5LCA4LCAxLCA1LCA2LCA2OCwgOCwgNSwgMSwgMjEyLCAxNTQsIDY4LCA4LCAKLSAgICA1LCAxLCAyMTIsIDE1NCwgMjQzLCAyMjksIDY4LCA4LCA1LCAxLCAyMTIsIDE1NCwgMjA3LCAxNzQsIDIyNiwgMTg1LCA4LCAKLSAgICAxLCA1LCA2LCAyMDYsIDE2NCwgOCwgMSwgNSwgNiwgMjA0LCAxNDQsIDgsIDEsIDUsIDYsIDIwMiwgMTU5LCA4LCAxLCA1LCAKLSAgICA2LCAyNDAsIDE3NywgOCwgMSwgMjA1LCAxODYsIDIyOCwgMywgMjExLCAyMDAsIDgsIDEsIDI1MSwgNTksIDMwLCAxLCA1LCAKLSAgICA2LCAyMzgsIDIzNSwgMzAsIDEsIDUsIDYsIDIyOCwgMjQsIDMwLCAxLCA1LCA2LCAyMTgsIDE2NywgMzAsIDEsIDUsIDYsIAotICAgIDIxNiwgNTksIDMwLCAxLCA1LCA2LCAyMTcsIDIwMiwgMzYsIDEsIDUsIDYsIDI0MSwgMTIyLCA2NSwgMSwgNiwgNjMsIDY1LCAKLSAgICAxLCA2LCAyNTEsIDEwOSwgNjUsIDEsIDYsIDI0OSwgMjU1LCA2NSwgMSwgNiwgMjQ4LCAyMjUsIDI0OSwgMjU1LCA2NSwgMSwgCi0gICAgNiwgMjQ1LCA1MSwgNjUsIDEsIDYsIDc0LCA2NSwgMSwgNiwgMjE2LCA3MywgNzQsIDY1LCAxLCA2LCAyMzksIDc1LCA2NSwgCi0gICAgMSwgNiwgMjM3LCAxNzEsIDY1LCAxLCA2LCA3NSwgNjUsIDEsIDYsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjMwLCA1NCwgNjUsIAotICAgIDEsIDYsIDE1OSwgNjUsIDEsIDYsIDIyNiwgMTg1LCA2NSwgMSwgNiwgMjIzLCAxNjMsIDY1LCAxLCA2LCAyMTYsIDczLCAKLSAgICAyMjMsIDE2MywgNjUsIDEsIDYsIDc4LCA2NSwgMSwgNiwgMjE5LCAyMTYsIDY1LCAxLCA2LCAyMTksIDE4NCwgNjUsIDEsIDYsIAotICAgIDE0NiwgNjUsIDEsIDYsIDIxMCwgNjksIDY1LCAxLCA2LCA2OCwgNjUsIDEsIDYsIDIwNCwgMTQ0LCA2NSwgMSwgNSwgNjMsIAotICAgIDY1LCAxLCA1LCAyMDcsIDE3NCwgNjMsIDY1LCAxLCA1LCAyNTEsIDIsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjUxLCAxMDksIAotICAgIDY1LCAxLCA1LCAyNDksIDI1NSwgNjUsIDEsIDUsIDI0NSwgNTEsIDY1LCAxLCA1LCA3NCwgNjUsIDEsIDUsIDIxNCwgMTkyLCAKLSAgICA2NSwgMSwgNSwgMTcxLCA3NCwgNjUsIDEsIDUsIDIwNywgMTc0LCAxNzEsIDc0LCA2NSwgMSwgNSwgMjM5LCA3NSwgNjUsIDEsIAotICAgIDUsIDIwNywgMTc0LCA3NSwgNjUsIDEsIDUsIDIzMCwgNTQsIDY1LCAxLCA1LCAyMjYsIDE4NSwgNjUsIDEsIDUsIDI0MSwgCi0gICAgNzgsIDY1LCAxLCA1LCA3OCwgNjUsIDEsIDUsIDE3MSwgNzgsIDY1LCAxLCA1LCAyMDgsIDE0NSwgMTYyLCA3OCwgNjUsIDEsIAotICAgIDUsIDI0NywgMjQ4LCAxNjIsIDc4LCA2NSwgMSwgNSwgMjE5LCAxODQsIDY1LCAxLCA1LCAyMTAsIDY5LCA2NSwgMSwgNSwgCi0gICAgNjgsIDY1LCAxLCA1LCAyMTIsIDE1NCwgNjgsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjI2LCAxODUsIDY1LCAxLCA1LCAyMDYsIAotICAgIDE2NCwgNjUsIDEsIDUsIDI1MSwgNTksIDY1LCAxLCA1LCAyNDgsIDEwNiwgNjUsIDEsIDUsIDMwLCAyMzgsIDIzNSwgNjUsIAotICAgIDEsIDUsIDI0NCwgMzcsIDY1LCAxLCA1LCAzMCwgMjE4LCAxOTIsIDY1LCAxLCA1LCAyNDYsIDE0MiwgOCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDc1LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTQ2LCA4LCAyMTAsIDI0NiwgNSwgMSwgNjgsIDgsIDIxMCwgMjQ2LCA1LCAKLSAgICAxLCAyMDYsIDE2NCwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyNDgsIDEwNiwgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMzgsIDIzNSwgCi0gICAgMzAsIDIxMCwgMjQ2LCA1LCAxLCAyMTYsIDU5LCAzMCwgMjEwLCAyNDYsIDUsIDEsIDIxOCwgMTkyLCAzMCwgMjEwLCAyNDYsIAotICAgIDUsIDEsIDI0NiwgMTQyLCA4LCA1LCAxLCAyMDcsIDI0LCA4LCA1LCAxLCA2NiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjQ1LCA1MiwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgMjQwLCAxNzUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIyNiwgMTg2LCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNywgMSwgMywgMTAxLCAyMDgsIDIyNywgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCAyMzksIDI0MSwgMjUsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIxNSwgOTQsIDMsIDEwMSwgMjA4LCAKLSAgICAyMjcsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDEwMSwgMjA4LCAyMjcsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAxMDEsIDIwOCwgCi0gICAgMjI3LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjM5LCA3NSwgNjUsIDEsIDM2LCAyNDEsIDkyLCA4LCA1LCAxLCAyMzEsIDQsIAotICAgIDIzOSwgNzUsIDgsIDUsIDEsIDIwOSwgMTExLCAzLCAyMTEsIDM2LCA4LCA1LCA2LCAxLCAyMzUsIDIwNiwgMywgOTUsIDgsIAotICAgIDUsIDEsIDIzMCwgMjMxLCAzLCA5NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDk1LCA4LCA1LCA2LCAxLCAxMDYsIDMsIDk1LCAKLSAgICA4LCA1LCAxLCAyMDYsIDIxNywgMywgOTUsIDgsIDUsIDEsIDY2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDUsIAotICAgIDUyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjM5LCAKLSAgICA3NiwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjMwLCA1NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIyNiwgMTg2LCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMjMsIAotICAgIDE2NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIxNywgCi0gICAgMSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjQxLCA4LCAKLSAgICAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjE5LCAxNDIsIDExMywgOCwgNSwgMSwgMjAzLCAxOTcsIAotICAgIDMsIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIwMiwgMTYwLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAyNTEsIDMsIDMsIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjM2LCAKLSAgICAxMTYsIDI1LCAyMDksIDI0OCwgOCwgNSwgMSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgMTg4LCAzLCAKLSAgICAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNiwgNzMsIDE3MSwgMTg4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIxNCwgCi0gICAgMTkzLCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDE3MSwgCi0gICAgMTU4LCAzLCAyMTYsIDc5LCAxMTMsIDgsIDUsIDEsIDI0MSwgOCwgMywgMjE2LCA3OSwgMTEzLCA4LCA1LCAxLCAxMDYsIDMsIAotICAgIDIxNiwgNzksIDExMywgOCwgNSwgMSwgMjQwLCAxNzgsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAKLSAgICAyNTEsIDIsIDY1LCAxLCA1LCAyNDcsIDEyNSwgNjUsIDEsIDUsIDI0NywgMTI2LCAzLCAyNDUsIDk1LCA2NSwgMSwgNSwgCi0gICAgMjQwLCAyNDMsIDY1LCAxLCA1LCAyMTYsIDczLCAxNzEsIDc0LCA2NSwgMSwgNSwgMjQwLCAxNzQsIDY1LCAxLCA1LCAyNDMsIAotICAgIDg0LCAyMzAsIDE4NSwgMywgOTUsIDY1LCAxLCA1LCAxMzIsIDIzOSwgNzUsIDY1LCAxLCA1LCAyMDcsIDE3NCwgMjM3LCAKLSAgICAxNzEsIDY1LCAxLCA1LCAyMzUsIDIwNiwgMywgOTUsIDY1LCAxLCA1LCAyMzAsIDIzMCwgNjUsIDEsIDUsIDYsIDc1LCA2NSwgCi0gICAgMSwgNSwgNiwgMjM1LCAyMDYsIDMsIDk1LCA2NSwgMSwgNSwgMjMwLCAxODUsIDMsIDI0NSwgMTI2LCA2NSwgMSwgNSwgMjI4LCAKLSAgICAxMzEsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIyOCwgMTMxLCAzLCAyMTksIDE0MiwgMTEzLCA2NSwgMSwgNSwgNiwgCi0gICAgMTU5LCA2NSwgMSwgNSwgMjI2LCAxODYsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMjYsIDE4NiwgMywgMTYzLCAKLSAgICAyMjcsIDIxMCwgNjUsIDEsIDUsIDIyMywgMTY0LCAzLCA0OSwgMTEzLCA2NSwgMSwgNSwgMjIzLCAxNjQsIDMsIDIxNiwgNzksIAotICAgIDExMywgNjUsIDEsIDUsIDYsIDIyMywgMTYzLCA2NSwgMSwgNSwgMjQ4LCAyMjUsIDc4LCA2NSwgMSwgNSwgMjE4LCAxOTIsIAotICAgIDY1LCAxLCA1LCAyMTUsIDk0LCAzLCAxMTMsIDY1LCAxLCA1LCAyNDEsIDcsIDY1LCAxLCA1LCAyMTAsIDcwLCAzLCAyMTksIAotICAgIDE0MiwgMTEzLCA2NSwgMSwgNSwgMTA2LCAxNDIsIDY1LCAxLCA1LCAyMDYsIDIxNiwgNjUsIDEsIDUsIDYsIDY4LCA2NSwgMSwgCi0gICAgNSwgMjA2LCAxNjUsIDMsIDExMywgNjUsIDEsIDUsIDIwNywgMTc0LCAyMDYsIDE2NCwgNjUsIDEsIDUsIDIwMiwgMTU5LCAKLSAgICA2NSwgMSwgNSwgMjAyLCAxNjAsIDMsIDIxNiwgNzksIDExMywgNjUsIDEsIDUsIDIwMiwgMTYwLCAzLCAyNDUsIDk1LCA2NSwgCi0gICAgMSwgNSwgMjQwLCAxNzcsIDY1LCAxLCA1LCAyMDksIDc0LCAzOSwgMjQyLCA4MywgMjM3LCAyNTQsIDI1MSwgMTM4LCAzOSwgCi0gICAgMjQyLCA4MywgMjUxLCAxMjYsIDI1MSwgMTM4LCAzOSwgMjEyLCAyNSwgNTYsIDM5LCAyMTAsIDE4MiwgODIsIDM5LCAyMjUsIAotICAgIDE2OSwgMzksIDIzNywgMjUxLCAzOSwgMjI1LCAxNjcsIDM5LCAyNTEsIDEyNCwgMzksIDIzNywgMjUyLCAzOSwgMjUxLCAKLSAgICAxMjUsIDM5LCA4LCA1LCAxLCAyMTcsIDEsIDU2LCAzOSwgMjQ3LCAyMTMsIDM5LCAyMjUsIDE2OCwgMzksIDUyLCAyNDYsIAotICAgIDUzLCA1NSwgMzksIDIyMCwgNjMsIDU1LCAzOSwgMjAyLCAzMCwgNTYsIDM5LCAyMzAsIDIxNiwgNTYsIDM5LCAyMDYsIDIxMSwgCi0gICAgNTUsIDM5LCAyMDYsIDE5NCwgNTUsIDM5LCA4LCA1LCAxLCAyMzksIDIxNCwgMTcxLCAzNCwgNTUsIDM5LCA4LCA1LCAxLCAKLSAgICAyNTEsIDEwOSwgMzksIDgsIDUsIDEsIDI1MCwgMTc4LCAzOSwgOCwgNSwgMSwgMjUwLCAxOCwgMzksIDgsIDUsIDEsIDI0NywgCi0gICAgMTI2LCAyNDYsIDIzMSwgMzksIDgsIDUsIDEsIDIzMSwgNCwgMjQ1LCA1MSwgMzksIDgsIDUsIDEsIDI0MCwgMjQzLCAzOSwgCi0gICAgOCwgNSwgMSwgMjM5LCA3NSwgMzksIDgsIDEsIDUsIDYsIDIzOSwgNzUsIDM5LCA4LCA1LCAxLCAyMzAsIDU0LCAzOSwgOCwgCi0gICAgNSwgMSwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMTU5LCAzOSwgOCwgMSwgNSwgNiwgMjI2LCAxODUsIDM5LCA4LCA1LCAxLCAKLSAgICAyMjMsIDE2MywgMzksIDgsIDEsIDUsIDYsIDIyMywgMTYzLCAzOSwgOCwgMSwgNSwgNiwgMTQ2LCAzOSwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAyMTUsIDE5MiwgMzksIDgsIDUsIDEsIDE5NCwgMzksIDgsIDUsIDEsIDE2MywgMTk0LCAzOSwgOCwgNSwgMSwgCi0gICAgMjAyLCAxNTksIDM5LCA4LCA1LCAxLCAyNTEsIDIsIDM5LCA4LCA1LCAxLCAyNDksIDI1NSwgMzksIDgsIDUsIDEsIDI0OCwgCi0gICAgMTA2LCAzOSwgOCwgNSwgMSwgMjE0LCAxOTIsIDM5LCA4LCA1LCAxLCAyNDAsIDE3NCwgMzksIDgsIDUsIDEsIDIyOCwgMTMxLCAKLSAgICAzLCA1MiwgMTAxLCAyMDgsIDIyNywgMzksIDgsIDUsIDEsIDE1OCwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIDM5LCA4LCA1LCAKLSAgICAxLCAyMTksIDE4NCwgMzksIDgsIDUsIDEsIDI0MSwgNywgMzksIDgsIDUsIDEsIDEwNiwgMywgMTU3LCAyNDYsIDIxOSwgOTUsIAotICAgIDM5LCA4LCA1LCAxLCAyMDQsIDE0NCwgMzksIDgsIDUsIDEsIDM0LCAzLCAyNDMsIDIzMSwgMzksIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjQzLCAyMzEsIDM5LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgMjMxLCAzOSwgMTEyLCAyMTAsIDQsIDU1LCAzOSwgNTIsIAotICAgIDIzMCwgMjM5LCAyNDcsIDIxNSwgNTYsIDM5LCAyNTEsIDcsIDE1NiwgMjA4LCAxNzMsIDU2LCAzOSwgNDksIDI1MCwgOTUsIAotICAgIDU1LCAzOSwgNTAsIDI1MCwgOTUsIDI1LCAxMjEsIDI1MCwgOTUsIDU2LCA4LCA2LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjE1LCAyNTMsIDU2LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU1LCA4LCA1LCAxLCA2NiwgMywgNzAsIAotICAgIDU1LCA4LCA2LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA1LCAxLCA2NiwgMywgNzAsIDU2LCA4LCA2LCAxLCA2NiwgMywgMjI3LCAKLSAgICAxMTUsIDU2LCA4LCA1LCAxLCA2NiwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyNDcsIDEyNiwgMywgMjQ2LCAyMzIsIAotICAgIDI1LCAxNjUsIDgsIDUsIDEsIDI0NywgMTI2LCAzLCAyNDYsIDIzMiwgMjUsIDE2NSwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgCi0gICAgNzAsIDU1LCA4LCA1LCAxLCAyNDUsIDUyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDI0NSwgNTIsIDMsIDcwLCA1NiwgOCwgNSwgCi0gICAgMSwgMjQ1LCA1MiwgMywgNzAsIDU2LCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDI0NSwgCi0gICAgNTIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjQ1LCA1MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDI0NSwgNTIsIDMsIAotICAgIDI0NiwgMjMxLCA4LCA2LCAxLCAyNDUsIDUyLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjQ1LCA1MiwgMywgMjQ2LCA1MywgCi0gICAgNTYsIDgsIDYsIDEsIDE4OCwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTg4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDIyNSwgMTcxLCAyNSwgMTY1LCA4LCA1LCAxLCAxODgsIDMsIDIyNSwgCi0gICAgMTcxLCAyNSwgMTY1LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxODgsIDMsIDI0NiwgNTMsIDU2LCAKLSAgICA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMTg4LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDYsIDEsIAotICAgIDE4OCwgMywgMjQ2LCAyMzIsIDI1LCAyNDcsIDIxNCwgOCwgNSwgMSwgMTg4LCAzLCAyNDYsIDIzMiwgMjUsIDI0NywgMjE0LCAKLSAgICA4LCA2LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA1LCAxLCAyNDAsIDE3NSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMzksIAotICAgIDc2LCAzLCAyMjUsIDE3MCwgOCwgNSwgMSwgMjM5LCA3NiwgMywgMjI1LCAxNzAsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgCi0gICAgNTUsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDIzNywgMTcyLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAyNDMsIDIzMSwgOCwgNSwgMSwgMjM3LCAxNzIsIAotICAgIDMsIDI0MywgMjMxLCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ2LCAyMzEsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyNDYsIAotICAgIDIzMSwgOCwgNiwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCA1NiwgOCwgNSwgMSwgMjM3LCAxNzIsIDMsIDI0NywgMjE1LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIwOCwgMjI4LCAKLSAgICA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDI0MywgMjMyLCAyNSwgMTY1LCA4LCA1LCAxLCAyMzUsIDIwNiwgMywgMjQzLCAKLSAgICAyMzIsIDI1LCAxNjUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDE2NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgMTY1LCA4LCA2LCAKLSAgICAxLCAyMzAsIDU1LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjMwLCA1NSwgMywgCi0gICAgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMjcsIDExNSwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAKLSAgICA3MCwgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCA3MCwgMjQ4LCAxMjYsIAotICAgIDI1LCAyMjUsIDE3MCwgOCwgNSwgMSwgMjI4LCAxMzEsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAKLSAgICAyMjgsIDEzMSwgMywgMjQ2LCA1MywgNTYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyNDYsIDUzLCA1NiwgOCwgNiwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDE2NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDE2NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCAKLSAgICA1NSwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjI2LCAxODYsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIAotICAgIDcwLCA1NSwgOCwgNiwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDcwLCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjIzLCAxNjQsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgCi0gICAgMSwgMjIzLCAxNjQsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAxNjUsIDgsIDYsIDEsIAotICAgIDE1OCwgMywgMjA4LCAyMjgsIDI1LCAyNDMsIDIzMSwgOCwgNSwgMSwgMTU4LCAzLCAyMDgsIDIyOCwgMjUsIDI0MywgMjMxLCAKLSAgICA4LCA2LCAxLCAxNTgsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjI1LCAxNzEsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNiwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDE2NSwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDE2NSwgOCwgNiwgMSwgCi0gICAgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjE3LCAxLCAzLCAKLSAgICA3MCwgNTUsIDgsIDUsIDEsIDIxNywgMSwgMywgNzAsIDU1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDcwLCA1NiwgOCwgNSwgMSwgCi0gICAgMjE3LCAxLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDUsIAotICAgIDEsIDIxNywgMSwgMywgNzAsIDI0OCwgMTI2LCAyNSwgMjI1LCAxNzAsIDgsIDYsIDEsIDIxNywgMSwgMywgMjI3LCAxMTUsIAotICAgIDU2LCA4LCA1LCAxLCAyMTcsIDEsIDMsIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMjE1LCA5NCwgMywgNzAsIDU1LCA4LCA1LCAKLSAgICAxLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgNzAsIDU2LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyNTEsIDEyNiwgMjUsIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgCi0gICAgMjUxLCAxMjYsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDUsIDEsIAotICAgIDIxNSwgOTQsIDMsIDI0NywgMzAsIDI1LCA3MCwgNTUsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDcwLCAyNDgsIDEyNiwgMjUsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgNzAsIDI0OCwgMTI2LCAyNSwgNzAsIDU1LCA4LCA2LCAxLCAyMTAsIDcwLCAKLSAgICAzLCA3MCwgNTUsIDgsIDUsIDEsIDIxMCwgNzAsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjEwLCA3MCwgMywgNzAsIDU2LCA4LCAKLSAgICA1LCAxLCAyMTAsIDcwLCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIxMCwgNzAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjEwLCA3MCwgMywgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAyMTAsIDcwLCAzLCAyNDYsIDUzLCA1NiwgOCwgNSwgMSwgMjEwLCAKLSAgICA3MCwgMywgMjQ2LCA1MywgNTYsIDgsIDYsIDEsIDEwNiwgMywgMjQzLCAyMzIsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0MywgCi0gICAgMjMyLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCAyMDgsIDIyOCwgNTYsIDgsIDUsIDEsIDEwNiwgMywgMjA4LCAyMjgsIDU2LCA4LCAKLSAgICA2LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA1LCAxLCAxMDYsIDMsIDI0NiwgNTMsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA1LCAxLCAxMDYsIDMsIDIwOCwgMjI4LCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIAotICAgIDIyNSwgMTcxLCAyNSwgMjQzLCAyMzEsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyNDMsIDIzMSwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIwNiwgMTY1LCAKLSAgICAzLCA3MCwgNTYsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA3MCwgNTYsIDgsIDYsIDEsIDIwNCwgMTQ1LCAzLCAyMzcsIDI1MywgCi0gICAgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDIzNywgMjUzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMTY1LCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NSwgMywgMTY1LCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgMTQ1LCAzLCAyNDMsIAotICAgIDIzMSwgOCwgNiwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjA0LCAxNDUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIAotICAgIDcwLCA1NSwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDcwLCA1NSwgOCwgNiwgMSwgMjAzLCAxOTcsIDMsIDI0MywgMjMxLCA4LCAKLSAgICA1LCAxLCAyMDMsIDE5NywgMywgMjQzLCAyMzEsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI1LCAzLCA3MCwgNTUsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDYsIDUyLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ2LCAKLSAgICA1MiwgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDcwLCA1NiwgOCwgNiwgMSwgCi0gICAgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjAyLCAxNjAsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgCi0gICAgMjM3LCAxNzIsIDMsIDIyNywgMTE1LCA1NiwgOCwgNSwgMSwgMjEwLCA3MCwgMywgMjQzLCAyMzEsIDgsIDUsIDEsIDIwNCwgCi0gICAgMTQ1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDIwMywgMTI1LCAzLCAyMTUsIDI1MywgNTUsIDgsIDUsIDEsIDM0LCAzLCAKLSAgICA1MCwgMTYyLCAyMTUsIDI1MiwgOCwgNSwgMSwgMTYzLCAyMTUsIDk0LCAzLCA3MCwgNTUsIDgsIDUsIDEsIDE2MywgMjE1LCAKLSAgICA5NCwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAxNjMsIDIxNSwgOTQsIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDIxMywgNTcsIAotICAgIDE5NCwgOCwgNSwgMSwgMjQ0LCAzNywgOCwgNiwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMzQsIDMsIDcwLCA1NiwgOCwgCi0gICAgNiwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMzQsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAzNCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMzQsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIAotICAgIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDM0LCAzLCAyNDYsIDUzLCAyNSwgNzAsIDU2LCA4LCA1LCAxLCAzNCwgMywgMjQ2LCA1MywgMjUsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMTY1LCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAKLSAgICAxNjUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIzNywgMjUzLCA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIAotICAgIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA1LCAxLCAzNCwgMywgCi0gICAgMjQ3LCAyMTUsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDM0LCAzLCAyNDcsIDIxNSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAKLSAgICAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCAyMDgsIDIyNywgOCwgNiwgMSwgMzQsIDMsIDI0NywgMjE1LCAyNSwgNzAsIDU2LCAKLSAgICA4LCA1LCAxLCAzNCwgMywgMjQ3LCAyMTUsIDI1LCA3MCwgNTYsIDgsIDYsIDEsIDE4OCwgMywgNzAsIDU2LCA4LCA1LCAxLCAKLSAgICAxODgsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMTg4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjM2LCAxMTYsIAotICAgIDU1LCA4LCA2LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAxODgsIDMsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIAotICAgIDMsIDI0NiwgNTMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDI0NiwgNTMsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgMjUsIDIzNiwgCi0gICAgMTE2LCA1NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCA3MCwgNTYsIDgsIDUsIDEsIDE4OCwgMywgCi0gICAgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjM1LCAKLSAgICAyMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjM1LCAyMDYsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIAotICAgIDcwLCA1NiwgOCwgNiwgMSwgMTU4LCAzLCA3MCwgNTYsIDgsIDUsIDEsIDE1OCwgMywgNzAsIDU2LCA4LCA2LCAxLCAxNTgsIAotICAgIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyMzYsIDExNiwgNTUsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMTY1LCA4LCA2LCAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAKLSAgICAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM3LCAyNTMsIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCAKLSAgICA1MywgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAKLSAgICAxLCAxNTgsIDMsIDI0NiwgNTMsIDI1LCAyMDgsIDIyNywgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgMjA4LCAyMjcsIAotICAgIDgsIDYsIDEsIDE1OCwgMywgMjQ2LCA1MywgMjUsIDcwLCA1NiwgOCwgNSwgMSwgMTU4LCAzLCAyNDYsIDUzLCAyNSwgNzAsIAotICAgIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAxNjUsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDE2NSwgCi0gICAgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIAotICAgIDIzNywgMjUzLCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCAyMzYsIDExNiwgNTUsIDgsIDUsIDEsIDE1OCwgMywgCi0gICAgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMTU4LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDUsIAotICAgIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxNTgsIDMsIDIzNiwgNTQsIDI1LCA3MCwgNTYsIAotICAgIDgsIDUsIDEsIDE1OCwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgOCwgNiwgMSwgMTA2LCAzLCA3MCwgNTYsIDgsIDUsIDEsIAotICAgIDEwNiwgMywgNzAsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDExNiwgCi0gICAgNTUsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDE2NSwgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMTY1LCAKLSAgICA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMTA2LCAzLCAKLSAgICAyMzYsIDU0LCAyNSwgMjM2LCAxMTYsIDU1LCA4LCA2LCAxLCAxMDYsIDMsIDIzNiwgNTQsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjM2LCA1NCwgMjUsIDcwLCA1NiwgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMzYsIDU0LCAyNSwgNzAsIDU2LCA4LCA2LCAxLCAyMDMsIDEyNSwgMywgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDIwMywgMTI1LCAzLCAyMzcsIDI1MywgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDcwLCA1NiwgOCwgNSwgMSwgMjAzLCAKLSAgICAxMjUsIDMsIDcwLCA1NiwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIzNiwgMTE2LCA1NSwgOCwgNSwgMSwgMjAzLCAxMjUsIDMsIAotICAgIDIzNiwgMTE2LCA1NSwgOCwgNiwgMSwgMjAzLCAxMjUsIDMsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjA4LCAKLSAgICAyMjcsIDgsIDYsIDEsIDIyNCwgMTQ3LCAyMjcsIDc4LCA4LCA1LCAxLCAyMjQsIDE0NywgMjI3LCA3OCwgOCwgNiwgMSwgCi0gICAgMjI0LCAxNDcsIDIwNiwgMTY0LCA4LCA1LCAxLCAyMjQsIDE0NywgMjA2LCAxNjQsIDgsIDYsIDEsIDIwMywgMTI1LCAzLCAKLSAgICAyMjcsIDE0LCA4LCA1LCAxLCAyMDMsIDEyNSwgMywgMjI3LCAxNCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIAotICAgIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAKLSAgICAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIAotICAgIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMTgsIDIzOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAKLSAgICAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMTksIDE4OSwgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjQxLCAzOCwgMywgMjQ0LCAxNDEsIAotICAgIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNiwgMSwgCi0gICAgMjQxLCAzOCwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NSwgMzAsIAotICAgIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTUsIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIAotICAgIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyNDAsIAotICAgIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgCi0gICAgMjM5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk1LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQxLCAKLSAgICAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIAotICAgIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIAotICAgIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAKLSAgICAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIAotICAgIDIzMCwgMjMxLCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyNDQsIDE0MSwgMzAsIDYsIDEsIDIzMCwgCi0gICAgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxODksIDMwLCA2LCAxLCAyMzAsIDIzMSwgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAKLSAgICAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNSwgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA2LCAxLCAyMjAsIDM1LCAzLCAyMTcsIDE5NSwgMzAsIDYsIDEsIDIyMCwgMzUsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjQ0LCAxNDIsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzUsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTUsIDMwLCA1LCAxLCAKLSAgICAyMDYsIDIxNywgMywgMjQ0LCAxNDEsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyMTcsIAotICAgIDE5NiwgMjUsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIxOCwgMjM5LCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQxLCAzMCwgNiwgMSwgMjA2LCAyMTcsIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTg5LCAzMCwgCi0gICAgNiwgMSwgMjA2LCAyMTcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDE5NSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAKLSAgICAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjIwLCAzNywgCi0gICAgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxODksIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk1LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgCi0gICAgMjQ0LCAxNDEsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzAsIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTg5LCAKLSAgICAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjM5LCAzMCwgNSwgCi0gICAgMSwgMjUxLCAzLCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MSwgMzgsIAotICAgIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNSwgMSwgMjMwLCAyMzEsIDMsIDIwNiwgNzAsIDMwLCAKLSAgICA1LCAxLCAyMzAsIDIzMSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNSwgMSwgCi0gICAgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjA2LCA3MCwgMzAsIDUsIDEsIDIwNiwgMjE3LCAKLSAgICAzLCAyMTksIDE4OSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIwNiwgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMTksIAotICAgIDE4OSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgCi0gICAgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgCi0gICAgNSwgMSwgMjUxLCAzLCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTgsIDI0MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAKLSAgICAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIAotICAgIDMsIDMsIDI0NCwgMTQyLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgCi0gICAgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgCi0gICAgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAxOTYsIDI1LCAyMTksIDE5MCwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjUxLCAKLSAgICAzLCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjQ0LCAxNDIsIDI1LCAyMTgsIAotICAgIDI0MCwgMjUsIDIxNywgMjA5LCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgCi0gICAgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIAotICAgIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAzLCAyMTcsIDE5NiwgMjUsIDIxOSwgMTkwLCAyNSwgMjAyLCAKLSAgICAyMjEsIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjQ0LCAxNDIsIDI1LCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgCi0gICAgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDI0MCwgMjQ5LCAKLSAgICAzLCAyNDQsIDE0MiwgMjUsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIAotICAgIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgCi0gICAgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIAotICAgIDI0NCwgMTQyLCAyNSwgMjA2LCA3MSwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxNywgMTk2LCAyNSwgCi0gICAgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDI0MCwgMjQ5LCAzLCAyNDQsIDE0MiwgMjUsIDIxOSwgMTkwLCAKLSAgICAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyNDAsIDI0OSwgMywgMjE3LCAxOTYsIDI1LCAyMTgsIDI0MCwgMjUsIDIxNywgCi0gICAgMjA5LCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIAotICAgIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgCi0gICAgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIAotICAgIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgCi0gICAgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAyNDAsIDI1LCAyMDIsIAotICAgIDIyMSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyNDQsIDE0MiwgMjUsIDIxNywgMjA5LCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE3LCAxOTYsIDI1LCAyMDYsIDcxLCAyNSwgCi0gICAgMjE3LCAyMDksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyNDQsIDE0MiwgMjUsIDIwNiwgNzEsIDI1LCAyMTcsIDIwOSwgMzAsIAotICAgIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgMTk2LCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgCi0gICAgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE5LCAxOTAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDIxNywgCi0gICAgMTk2LCAyNSwgMjE4LCAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDYsIDEsIDIyMCwgMzcsIDMsIDI0NCwgMTQyLCAyNSwgMjE4LCAKLSAgICAyNDAsIDI1LCAyMTcsIDIwOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAyNTEsIDMsIDMsIAotICAgIDIyNSwgMTcwLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyNTEsIDMsIAotICAgIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAzLCAzLCAyMTksIDE5MCwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjUxLCAKLSAgICAzLCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDI1MSwgMywgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgMzAsIDYsIDEsIAotICAgIDI1MSwgMywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyNTEsIDMsIDMsIDIyNSwgMTcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAKLSAgICAyMDYsIDcwLCAzMCwgNiwgMSwgMjUxLCAzLCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDI1MSwgMywgMywgMjE3LCAyMDksIAotICAgIDMwLCAyMjgsIDI1MiwgMzAsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTUsIDMwLCAyMTgsIDIzOSwgMzAsIDI0MywgMjI1LCAyNSwgCi0gICAgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjA2LCA3MSwgMjUsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIwMiwgMjIxLCAzMCwgNSwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAKLSAgICAxLCAyNDAsIDI0OSwgMywgMjE4LCAyMzksIDMwLCA1LCAxLCAyNDAsIDI0OSwgMywgMjE4LCAyNDAsIDI1LCAyMDIsIDIyMSwgCi0gICAgMzAsIDYsIDEsIDI0MSwgMzgsIDMsIDIwNiwgNzAsIDMwLCA2LCAxLCAyNDEsIDM4LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIAotICAgIDI0MCwgMjQ5LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjQwLCAyNDksIDMsIDIxOSwgMTg5LCAzMCwgNiwgMSwgMjQwLCAKLSAgICAyNDksIDMsIDIxNywgMjA5LCAzMCwgMjE3LCAxOTYsIDI1LCAyMDYsIDcwLCAzMCwgMjE3LCAxOTYsIDI1LCAyMTksIDE4OSwgCi0gICAgMzAsIDIxNywgMTk2LCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjA1LCAxNjcsIDMwLCA1LCAxLCAKLSAgICAyMzAsIDIzMSwgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgCi0gICAgNSwgMSwgMjMwLCAyMzEsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjE4LCAKLSAgICAyMzksIDMwLCA1LCAxLCAyMzAsIDIzMSwgMywgMjQzLCAyMjUsIDI1LCAyMTgsIDIzOSwgMzAsIDYsIDEsIDIzMCwgMjMxLCAKLSAgICAzLCAyMDUsIDE2NywgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMjUsIDE3MCwgMzAsIDYsIDEsIDIzMCwgMjMxLCAzLCAyMDYsIAotICAgIDcwLCAzMCwgNiwgMSwgMjMwLCAyMzEsIDMsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDIsIDI1LCAyMDYsIDcwLCAzMCwgMjQ0LCAKLSAgICAxNDIsIDI1LCAyMTksIDE4OSwgMzAsIDI0NCwgMTQyLCAyNSwgMjE4LCAyMzksIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgCi0gICAgMjA1LCAxNjcsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA1LCAxLCAyMDYsIDIxNywgMywgMjQzLCAKLSAgICAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE5LCAxODksIDMwLCA1LCAKLSAgICAxLCAyMTYsIDYwLCAzLCAyMTcsIDE5NSwgMzAsIDUsIDEsIDIxNiwgNjAsIDMsIDI0NCwgMTQxLCAzMCwgNSwgMSwgMjA2LCAKLSAgICAyMTcsIDMsIDIxOCwgMjM5LCAzMCwgNSwgMSwgMjA2LCAyMTcsIDMsIDI0MywgMjI1LCAyNSwgMjE4LCAyMzksIDMwLCA2LCAKLSAgICAxLCAyMDYsIDIxNywgMywgMjA1LCAxNjcsIDMwLCA2LCAxLCAyMDYsIDIxNywgMywgMjI1LCAxNzAsIDMwLCA2LCAxLCAyMDYsIAotICAgIDIxNywgMywgMjA2LCA3MCwgMzAsIDYsIDEsIDIwNiwgMjE3LCAzLCAyMTksIDE4OSwgMzAsIDYsIDEsIDIxNiwgNjAsIDMsIAotICAgIDI0NCwgMTQxLCAzMCwgMjQzLCAyMjUsIDI1LCAyMDYsIDcwLCAzMCwgMjQzLCAyMjUsIDI1LCAyMTksIDE4OSwgMzAsIDIwNiwgCi0gICAgNzAsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAyMDYsIDcxLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIDM3LCAzLCAKLSAgICAyMDIsIDIyMSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOSwgMTkwLCAyNSwgMjAyLCAyMjEsIDMwLCA1LCAxLCAyMjAsIAotICAgIDM3LCAzLCAyMTgsIDIzOSwgMzAsIDUsIDEsIDIyMCwgMzcsIDMsIDIxOCwgMjQwLCAyNSwgMjAyLCAyMjEsIDMwLCA2LCAxLCAKLSAgICAyMjAsIDM1LCAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNSwgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAKLSAgICAzLCAyMDYsIDcwLCAzMCwgNiwgMSwgMjIwLCAzNywgMywgMjE5LCAxODksIDMwLCA2LCAxLCAyMjAsIDM3LCAzLCAyMTcsIAotICAgIDIwOSwgMzAsIDIxOSwgMTg5LCAzMCwgMjQ0LCAxNDEsIDI0MSwgOTMsIDIxNywgNjIsIDI0MSwgMTA0LCAyMTcsIDYyLCAKLSAgICAyNDEsIDkzLCAyMTEsIDIyOCwgMjQxLCAxMDQsIDIxMSwgMjI4LCAyMDksIDI4LCAyMTEsIDIyOCwgMjM5LCAxNDUsIDIxMSwgCi0gICAgMjI4LCAyMTIsIDg2LCAyMTEsIDIyOCwgMjQwLCAxNiwgMjExLCAyMjgsIDIxNywgMTc5LCAyMTEsIDIyOCwgMjA5LCA2MywgCi0gICAgMjExLCAyMjgsIDIzNywgMTQ2LCAyMTEsIDIyOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjExLCAyMjgsIDIwMiwgODUsIDIwNCwgCi0gICAgMjQsIDIyMSwgMTgzLCAyMDIsIDg1LCAyMDQsIDI0LCAyMzAsIDk2LCAyMjcsIDIxMywgODIsIDIxNiwgNywgODIsIDIzNSwgCi0gICAgMjIwLCAyMjEsIDE4NCwgMjM1LCAyMjAsIDI0MCwgMTYsIDI0NCwgMTQ0LCAyNDEsIDkzLCAyNDQsIDE0NCwgMjQxLCAxMDQsIAotICAgIDI0NCwgMTQ0LCAyMzYsIDEwNiwgMTQyLCA1MiwgODAsIDIyNywgMTE0LCA1MiwgMTI0LCAyMjcsIDExNCwgNDksIDIxMiwgCi0gICAgMTIwLCAyMTcsIDMxLCA4MiwgNTAsIDIxMiwgMTIwLCAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIyNiwgMjU1LCAyMTcsIDMxLCAKLSAgICA4MiwgMjEyLCAxMjAsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgNDksIDUyLCAyMTcsIDMxLCA4MiwgNTAsIDUyLCAyMTcsIAotICAgIDMxLCA4MiwgNTIsIDIyNiwgMjU1LCAyMTcsIDMxLCA4MiwgNTIsIDIzNiwgMjQxLCAyMTcsIDMxLCA4MiwgMjQ0LCAxOTUsIAotICAgIDUyLCAyNDQsIDE5NSwgMjQ3LCAxNzcsIDIwOCwgODIsIDI0NywgMTc3LCAxMTgsIDcwLCAyMjcsIDIzMiwgMTIwLCA3MCwgCi0gICAgMjI3LCAyMzIsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMjM1LCAyMTgsIDIxOCwgNjIsIDIyNywgMTE1LCAyMTMsIDEzMCwgMjE5LCAKLSAgICA4OSwgMjEzLCAxMzAsIDIyNywgMjEzLCAyNDEsIDEwMiwgMjE2LCA3LCAyNDEsIDEwMiwgMjE4LCA0MiwgMjQzLCAxNjUsIAotICAgIDIzOSwgMTU3LCAyMjcsIDIxMywgMjE5LCAxOTYsIDIxNiwgNywgMjE5LCAxOTYsIDIyMywgNzMsIDIyMSwgMTkwLCAyMTEsIAotICAgIDIyOCwgMjE4LCAyNDcsIDIyNCwgMTE2LCA1NCwgMjE4LCAyNDcsIDIwOSwgMTUzLCAyMDksIDM3LCA1NCwgMjE3LCAyMzYsIAotICAgIDUyLCAyMTcsIDIzNiwgMjA4LCA3MCwgMjE3LCAyMzYsIDIxNiwgNzMsIDIxNywgMjM2LCAyMTYsIDczLCA1MiwgMjE3LCAKLSAgICAyMzYsIDIxNiwgNzMsIDIwOCwgNzAsIDIxNywgMjM2LCAyNDcsIDMzLCAyMTIsIDEyMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAKLSAgICAyMTcsIDMxLCA4MiwgMjEyLCAxMjAsIDIxNiwgMTEsIDI1MCwgMjE4LCAyMTcsIDMxLCA4MiwgMjE2LCAxMzQsIDgyLCA1MiwgCi0gICAgMjQwLCAyMTIsIDgyLCAyMzAsIDI0NywgMjE5LCAxOTgsIDIwNiwgMjQzLCAxNjcsIDIwOCwgMjUwLCAyNDcsIDM0LCAyMzEsIAotICAgIDgsIDIxOCwgNjIsIDI1MCwgNTcsIDIzNSwgMjIxLCAyNDcsIDE3NywgMjM5LCAxMzgsIDIxMiwgNTcsIDQ5LCA1MSwgMjQ3LCAKLSAgICAyMjcsIDMsIDIxNywgNDEsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIxNywgNDEsIDUyLCAyMTcsIDQ3LCA4MiwgMjE3LCA0NywgCi0gICAgMjQwLCAyMTIsIDgyLCAyNDAsIDIxMiwgMjE3LCA0NywgODIsIDIwOCwgMjAzLCAyLCAyNDAsIDI1MCwgMjE2LCA3MywgMjE4LCAKLSAgICAxMjYsIDU0LCA2MiwgOTYsIDI0NywgMTc3LCA2MiwgODYsIDI0NywgMTc3LCAxMjQsIDI1MCwgNTksIDIxNiwgNzMsIDIxMywgCi0gICAgMTQzLCAyNDYsIDE3LCAyMDYsIDIyNCwgMTIwLCAyNTAsIDU4LCAyNTEsIDE4LCAyMDUsIDI0MywgMjQ1LCAyMzEsIDIyNCwgCi0gICAgMTAzLCA1NCwgMjEwLCAxNTMsIDI0NCwgMTQ0LCAyMzAsIDIzOSwgMjA2LCAyNDMsIDIzOSwgMTk4LCAyMTcsIDE3OSwgODIsIAotICAgIDEyNiwgNzAsIDIxNywgMTc4LCAyMTcsIDU4LCAyMTcsIDIzNiwgMjM5LCAxNDcsIDcwLCAyMTcsIDE3OCwgMjM5LCAyMzMsIAotICAgIDcwLCAyMTcsIDE3OCwgMTIwLCA3MCwgMjE3LCAxNzgsIDIzOSwgMTQ3LCA3MCwgODIsIDI0MiwgODMsIDI0NSwgMTMwLCAKLSAgICAyMDgsIDgxLCA4MCwgMjM5LCAxNDcsIDI0MywgODMsIDIyNSwgMTAsIDEzLCAyMTEsIDIyOCwgMjAzLCAyMzgsIDIzMCwgOTYsIAotICAgIDIzOSwgMTAwLCAyNTAsIDE1NSwgMjMwLCAyMzcsIDIwOCwgMjE5LCAyMzAsIDIzNywgMjEzLCAxMzAsIDIzMCwgMjM3LCAKLSAgICAyMTgsIDc2LCAyMjcsIDIxMywgMjMwLCAyMDcsIDIxNiwgNywgMjMwLCAyMDcsIDIzOSwgMjQ1LCAyMTEsIDE4LCAyMzAsIAotICAgIDIwNywgMjE4LCA0MiwgMjQzLCAxNjUsIDIzMCwgMjA3LCAyMzEsIDIwLCAyMTAsIDEwMSwgMjEwLCAxNzAsIDI1MSwgMTI4LCAKLSAgICAyMTAsIDEwMSwgMjEwLCAxNzAsIDIzMSwgMjAsIDEwLCAyMzksIDE1OSwgMjEzLCA2MSwgMjUxLCAxMjgsIDEwLCAyMzksIAotICAgIDE1OSwgMjEzLCA2MSwgMjIzLCA2NywgMTcsIDIxMywgNjIsIDIyMSwgMTg2LCAxNywgMjEzLCA2MiwgMjEwLCAxOTksIDIwMiwgCi0gICAgODQsIDIxMCwgMTk5LCA4LCA1LCAxLCA3NSwgMjEwLCAxOTksIDE0OSwgMjEwLCAxOTksIDE3MCwgMjEwLCAxOTksIDE5NSwgCi0gICAgMjEwLCAxOTksIDIxMywgMTExLCAyMTAsIDE5OSwgMTk5LCAyMTAsIDE5OSwgMjIyLCA2MywgMjEwLCAxOTksIDkxLCA1NCwgCi0gICAgMjEwLCAxOTksIDIyNCwgMTAyLCAyMTAsIDE5OSwgMjQxLCAzNSwgNTQsIDIxMCwgMTk5LCA0OSwgMjE5LCA3NiwgMjEwLCAKLSAgICAxOTksIDUwLCAyMTksIDc2LCAyMTAsIDE5OSwgOCwgNSwgMSwgMjIzLCAxNjMsIDIxMCwgMjQ2LCAyMDIsIDg0LCAyMTAsIAotICAgIDI0NiwgMTA1LCAyMTAsIDI0NiwgMTA4LCAyMTAsIDI0NiwgMTQ3LCAyMTAsIDI0NiwgMTQ5LCAyMTAsIDI0NiwgMTcwLCAKLSAgICAyMTAsIDI0NiwgMTk1LCAyMTAsIDI0NiwgMjEzLCAxMTEsIDIxMCwgMjQ2LCAxOTksIDIxMCwgMjQ2LCAyMjIsIDYzLCAyMTAsIAotICAgIDI0NiwgOTEsIDU0LCAyMTAsIDI0NiwgMjI0LCAxMDIsIDIxMCwgMjQ2LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDYsIDQ5LCAKLSAgICAyMTksIDc2LCAyMTAsIDI0NiwgNTAsIDIxOSwgNzYsIDgsIDIxMCwgMjQ2LCA1LCAxLCA2MywgOCwgMjEwLCAyNDYsIDUsIDEsIAotICAgIDc0LCA4LCAyMTAsIDI0NiwgNSwgMSwgNzgsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMDMsIDE5NiwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIxNCwgMTkyLCA4LCAyMTAsIDI0NiwgNSwgMSwgMjM3LCAxNzEsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMzAsIDU0LCA4LCAKLSAgICAyMTAsIDI0NiwgNSwgMSwgMTU5LCA4LCAyMTAsIDI0NiwgNSwgMSwgMjI2LCAxODUsIDgsIDIxMCwgMjQ2LCA1LCAxLCAyMjMsIAotICAgIDE2MywgOCwgMjEwLCAyNDYsIDUsIDEsIDIxOSwgMTg0LCA4LCAyMTAsIDI0NiwgNSwgMSwgMTk0LCA4LCAyMTAsIDI0NiwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMjQwLCAyMjksIDU0LCAyNDUsIDI0MywgNTQsIDI0NSwgMTE1LCA1NCwgMjM5LCAxMjgsIDIzOSwgMTMyLCAKLSAgICA1NCwgMjI3LCA5NCwgNTQsIDIyNCwgMTE3LCA1NCwgMjIzLCA5MCwgNTQsIDIxOCwgMjI0LCA1NCwgMjE1LCAxMjAsIDU0LCAKLSAgICAyMDMsIDI0NiwgNTQsIDIyMiwgMjE0LCAyMTMsIDI5LCA1NCwgMjQzLCA5MiwgNTQsIDI0MCwgMjMwLCA1NCwgMjI5LCA3OSwgCi0gICAgNTQsIDIwNywgMTk2LCA1NCwgMjQyLCA2NiwgNTQsIDIzOCwgMTY2LCAyMTksIDIsIDU0LCAyMTgsIDIyMSwgNTQsIDIzNywgCi0gICAgMjI1LCA1NCwgMjUwLCAyNCwgNTQsIDIzNiwgMzIsIDU0LCAyNDYsIDIzMywgNTQsIDIyNywgODQsIDIwOCwgMTI1LCA1NCwgCi0gICAgMjExLCAyMDksIDU0LCAyMDksIDE1MCwgNTQsIDIzMSwgMzQsIDIxNSwgMTIwLCA1NCwgMjA3LCAxNzcsIDIyNywgOTQsIDU0LCAKLSAgICAyMjEsIDE3MywgMTMxLCA1NCwgMjI1LCAxMjAsIDU0LCAyMTUsIDE0MiwgNTQsIDIyOCwgNCwgNTQsIDM5LCA0OSwgMjM3LCAKLSAgICA4NywgNTUsIDM5LCA1MCwgMjM3LCA4NywgNTUsIDM5LCAxNjMsIDgwLCAyMjcsIDExNSwgMjE5LCAxOTksIDM5LCAyMTIsIAotICAgIDIyOCwgODAsIDIyNywgMTE1LCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCA1MywgNTUsIDM5LCAyNDYsIDE4LCA1MywgNTUsIAotICAgIDM5LCA0OSwgNTMsIDU1LCAzOSwgNTAsIDUzLCA1NSwgMzksIDIxNSwgMjUzLCAyMTksIDE5OSwgMzksIDI0NiwgMTgsIDIxNSwgCi0gICAgMjUzLCAyMTksIDE5OSwgMzksIDI1MCwgMTk0LCAyMTUsIDI1MywgMjE5LCAxOTksIDM5LCAxMjYsIDE4NywgNTUsIDM5LCAKLSAgICAyMzksIDE0NywgMTg3LCA1NSwgMzksIDI0MSwgODgsIDI0NiwgNjEsIDM5LCAyNDEsIDg4LCAyMTEsIDE3NywgMzksIDI0MSwgCi0gICAgODgsIDI0MywgMjIxLCAzOSwgMjQxLCA4OCwgMjQ2LCA2MiwgMjQ5LCAyMCwgMzksIDQ5LCA1MCwgNTMsIDU1LCAzOSwgMjQxLCAKLSAgICA4OCwgMjE0LCAxODQsIDM5LCAyNDEsIDg4LCAyMjksIDE0NywgMzksIDI0MSwgODgsIDIwNiwgMjE0LCAyMTgsIDU5LCAyMDgsIAotICAgIDg1LCAzOSwgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDE5OSwgMzksIDUyLCA4MCwgMjExLCAzMiwgMjE5LCAxOTksIDM5LCAKLSAgICAyNTAsIDIwNCwgOTcsIDM5LCAyMDgsIDcwLCAyMDYsIDI0NSwgMzksIDIwNCwgMjcsIDI0NywgMjA4LCA1NSwgMzksIDk2LCAKLSAgICA1MywgMjE5LCAxOTksIDM5LCAxNjMsIDUyLCAyMTIsIDEsIDIxOSwgMTk5LCAzOSwgODYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMjQyLCA2OCwgMzksIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDM5LCA0OSwgNTMsIDU2LCAzOSwgNTAsIDUzLCAKLSAgICA1NiwgMzksIDI1MCwgNjAsIDU1LCAyNTEsIDEzNCwgMjIwLCA2OSwgMjUxLCAxMTgsIDIwOCwgMTczLCAyMDksIDkzLCAyMTAsIAotICAgIDI1NSwgMTY5LCA2LCAyNDcsIDEyNSwgMjQ0LCA1NSwgMjQ2LCAyMjMsIDI0NiwgMjE4LCAyMjcsIDExNSwgOTcsIDI0NywgCi0gICAgMzUsIDIyMCwgNjksIDI0NywgODQsIDIwNiwgMjU0LCAyNDAsIDIzMSwgMjQ1LCAyMDAsIDIxNCwgMTgxLCAyNDQsIDU1LCAKLSAgICAyNDAsIDkwLCAxMzIsIDUsIDIzOSwgNzUsIDEzMiwgNiwgMjM3LCAxNzEsIDI0OCwgNDEsIDYsIDIzNywgMTcxLCAxNjksIDYsIAotICAgIDIzNywgMTcxLCAyMTgsIDkzLCAyNDUsIDIwMCwgMjE4LCA5MywgMjQ1LCAyMDEsIDExNSwgMTIwLCAyMTgsIDE2NywgMTMyLCAKLSAgICA2LCA3NSwgMjQ4LCA0MSwgNiwgNzUsIDEzMiwgNiwgMTU5LCAxMzIsIDUsIDE1OSwgMjI4LCAxMzEsIDY2LCAyNDgsIDIzMSwgCi0gICAgOTcsIDE2OSwgNiwgMjIzLCAxNjMsIDIyMSwgNDIsIDU0LCAyMTEsIDI0MSwgMjE2LCAxNDYsIDI0NSwgMTY4LCAxMzIsIDYsIAotICAgIDIxOSwgMTg0LCAxNjksIDYsIDIxOSwgMTg0LCAxNjksIDYsIDIxNywgMTM0LCAxMzIsIDYsIDE0NiwgMjQ4LCA0MSwgNiwgCi0gICAgMTQ2LCAxNjksIDYsIDE0NiwgMjE3LCAyNDMsIDIwOSwgMjQxLCAyMTYsIDg2LCAyMTMsIDEyMiwgODIsIDIwOSwgMTYyLCAKLSAgICA1NCwgMjA4LCAxMTUsIDEzMSwgNTQsIDIwNiwgMzksIDE2OSwgNiwgMjAyLCAxNTksIDIxOSwgMjE1LCA1NCwgMjIwLCA1OSwgCi0gICAgNTQsIDIzMCwgMjM5LCAyMjAsIDU5LCA1NCwgMjQ4LCA0MSwgNiwgMjAyLCAxNTksIDIwNywgMTc0LCAzMCwgNSwgMSwgMjMwLCAKLSAgICAyMzAsIDIyOSwgMTg4LCA1NCwgMjUwLCAyMTMsIDU0LCAxMzIsIDYsIDI0OSwgMjU1LCAyNDgsIDQxLCA2LCAyNDcsIDEyNSwgCi0gICAgMjQwLCAyNTUsIDk3LCAxMzIsIDUsIDc0LCAxMzIsIDYsIDc0LCAxMzIsIDYsIDI0MCwgMTc0LCAyMDcsIDE3NCwgNiwgMjQwLCAKLSAgICAxNzQsIDEzMiwgNiwgMjI2LCAxODUsIDEzMiwgNSwgNzgsIDEzNywgOTcsIDI0OCwgMTA5LCA5NywgMjM4LCA2OCwgOTcsIAotICAgIDI0NCwgMTc5LCA5NywgMjMxLCAyNSwgMjExLCAyMzksIDIxNSwgMTk4LCA2LCAyMTcsIDEzNCwgMjQwLCA5MywgNTQsIDE2OSwgCi0gICAgNSwgMjE4LCAxNjcsIDE2OSwgNSwgMjM4LCAyMzUsIDE2OSwgNiwgMjM4LCAyMzUsIDE2OSwgNiwgMjE4LCAxNjcsIDE2OSwgCi0gICAgMjIzLCAxNjIsIDIxMCwgMjE3LCAyMDcsIDE3NCwgNDEsIDYsIDIzOSwgNzUsIDIwNywgMTc0LCA0MSwgNiwgMTU5LCAyMTYsIAotICAgIDczLCA0MSwgNiwgMTU5LCAyMDcsIDE3NCwgNDEsIDYsIDIwMywgMTI0LCAxNjksIDM3LCA2LCAyNDUsIDUxLCAxNjksIDM3LCAKLSAgICA1LCAyNDUsIDUxLCAxNjksIDM3LCA1LCA3NCwgMTY5LCAzNywgNSwgNzUsIDE2OSwgMzcsIDUsIDIzMCwgMTg0LCAyMTcsIAotICAgIDIxMiwgMjI3LCAxMTQsIDIwNywgMTc0LCAyNTAsIDIzNSwgMjE4LCAyNDcsIDU0LCAyNTEsIDQxLCAyMDcsIDE3NCwgNSwgCi0gICAgMjQwLCAxNzQsIDE2LCAzNSwgMjE0LCAyNTIsIDIxMSwgMjM5LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjEzLCAxMDcsIAotICAgIDIwNCwgMTYxLCAyMzksIDEzOCwgMTE4LCAyMjIsIDU3LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDExOCwgMjA5LCAxNDMsIDIwNCwgCi0gICAgMTYxLCAyMzksIDEzOCwgMTE4LCAyMDksIDYwLCAyMDQsIDE2MSwgMjM5LCAxMzgsIDEyMCwgMjA5LCA1NywgMjA0LCAxNjEsIAotICAgIDIzOSwgMTM4LCAxMTgsIDI0MCwgMjEsIDIwNCwgMTYxLCAyMzksIDEzOCwgMTIwLCAyNDAsIDIwLCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDEyNiwgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMzksIDE0NywgMjQwLCAyMCwgMjA0LCAxNjEsIDIzOSwgCi0gICAgMTM4LCAxMTgsIDIxMiwgNzgsIDIwNCwgMTYxLCAyMzksIDEzOCwgMjM5LCAyMzMsIDIxMiwgNzYsIDIwNCwgMTYxLCAyMzksIAotICAgIDEzOCwgMTE4LCAyNDEsIDEzOCwgMjA0LCAxNjEsIDIzOSwgMTM4LCAxMjYsIDI0MSwgMTM2LCAyMDQsIDE2MSwgMjM5LCAKLSAgICAxMzgsIDIzOSwgMjMzLCAyNDEsIDEzNiwgMjA0LCAxNjEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjQxLCAxMzYsIDIzOSwgCi0gICAgMTM4LCAyMjEsIDQzLCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDgsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxNDcsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDIxNSwgCi0gICAgMjEwLCAyMjEsIDQ0LCAxOTUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTMsIDExMSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgCi0gICAgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgMjE1LCAyMTAsIDIyMSwgCi0gICAgNDQsIDI0MSwgMTEyLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjA3LCAxNTQsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMTE4LCAyMzYsIDExLCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzYsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMDUsIDUsIDIxNSwgMjEwLCAKLSAgICAyMjEsIDQ0LCAxMDgsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDcsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNDksIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAxNzAsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxOTUsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAKLSAgICAyMTMsIDExMSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDE5OSwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDIyMiwgNjMsIDUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MiwgNSwgMjE1LCAyMTAsIDIyMSwgNDQsIDI0MSwgMTEyLCA1LCAyMTUsIDIxMCwgCi0gICAgMjIxLCA0NCwgMjA3LCAxNTQsIDUsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE4LCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDExLCA1LCAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIzNiwgMTEsIDUsIDIxNSwgMjEwLCAyMjEsIAotICAgIDQ0LCAxMTgsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAxMTgsIDIwOSwgMzcsIDI0NywgMTI2LCAyNDUsIDUxLCAKLSAgICAyMTUsIDIxMCwgMjIxLCA0NCwgMjM5LCAyMzMsIDIwOSwgMzYsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMDksIDE1MywgMjA5LCAKLSAgICAzNiwgMjE1LCAyMTAsIDIyMSwgNDQsIDIxNiwgNzMsIDExOCwgMjM2LCAxMSwgOCwgNSwgMSwgMjE2LCA3MywgMjQ3LCAxMjUsIAotICAgIDIxNSwgMjEwLCAyMjEsIDQ0LCAyMTIsIDg4LCAyMjcsIDI1NSwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAKLSAgICAyNDEsIDE4MiwgMTgsIDIxNSwgMjEwLCAyMjEsIDQ0LCAyNDAsIDE5LCAyMDksIDM2LCAyMTUsIDIxMCwgMjIxLCA0NCwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDksIDM2LCAyMDQsIDE2MSwgMjM5LCAxMzgsIDIwMiwgODUsIDIwOSwgNTcsIDIwNywgMTc0LCAKLSAgICAxNywgMTA4LCAyMDcsIDE3NCwgMTcsIDE0NywgOTYsIDQ3LCAxNzcsIDQ3LCA4NiwgNDcsIDE4MywgNDcsIDQ5LCA1MCwgNDcsIAotICAgIDExMiwgMTIxLCA0NywgMTUzLCAyMDQsIDQ2LCA0NywgMTUzLCAyNDEsIDE3NiwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA0NywgOTYsIDUzLCAzLCA5NSwgODYsIDUzLCAzLCA5NSwgOTYsIDIwNCwgNzYsIDQ3LCAKLSAgICA4NiwgMjA0LCA3NiwgNDcsIDk2LCAxMjAsIDIzNywgNjIsIDQ3LCAxNzcsIDEyMCwgMjM3LCA2MiwgNDcsIDg2LCAxMjAsIAotICAgIDIzNywgNjIsIDQ3LCAxODMsIDEyMCwgMjM3LCA2MiwgNDcsIDk2LCA1MywgMywgMjA5LCAyNDgsIDg2LCA1MywgMywgMjA5LCAKLSAgICAyNDgsIDk2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA1MywgMjM5LCAxMjAsIDE0MiwgODYsIDUzLCAyMzksIDEyMCwgCi0gICAgMTQyLCAxODMsIDUzLCAyMzksIDEyMCwgMTQyLCAxMTIsIDEyMSwgNTMsIDMsIDI0OCwgMjE4LCA5NiwgNTMsIDMsIDExMywgCi0gICAgODYsIDUzLCAzLCAxMTMsIDk2LCA1MywgMywgMjI3LCAxNCwgODYsIDUzLCAzLCAyMjcsIDE0LCA0OSwgNTAsIDIwNCwgNzYsIAotICAgIDQ3LCA0OSwgNTAsIDUzLCAzLCA5NSwgMTgzLCAyMDIsIDMwLCA0NywgMTc3LCA1MywgMywgMjA4LCAyMTEsIDIyNywgMjEyLCAKLSAgICAxNzcsIDUzLCAzLCAyMDgsIDIxMSwgMjE2LCA1LCAxODMsIDUzLCAzLCAyMDgsIDIxMSwgMjI3LCAyMTIsIDE4MywgNTMsIDMsIAotICAgIDIwOCwgMjExLCAyMTYsIDUsIDg2LCA1MywgMywgMjQ1LCAxNjYsIDI0MiwgNjgsIDE4MywgNTMsIDMsIDI0NSwgMTY2LCAKLSAgICAyMjcsIDIxMiwgMjUwLCAxOTQsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgNDcsIDI0NiwgMTgsIDIwOCwgMTQ1LCAyMTMsIDE0NiwgCi0gICAgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDIwOCwgMTczLCAxNjMsIDE0MiwgOTYsIDUzLCAyMDgsIDE3MywgMjQ4LCAyMzEsIAotICAgIDExNSwgODYsIDUzLCAyMDgsIDE3MywgMTQyLCAyNTAsIDE5NCwgMTcxLCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMTcxLCAKLSAgICAyNDYsIDYyLCA0NywgOTYsIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIAotICAgIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDUsIDE3NywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDIzNywgCi0gICAgODcsIDMsIDE1MCwgMjA2LCAyMTIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNjgsIDE4MywgMjM3LCA4NywgMywgMTUwLCAKLSAgICAyMTYsIDUsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMjcsIDIxMiwgODYsIDUzLCAxMTUsIDk2LCA0NywgMTc3LCA1MywgOTYsIAotICAgIDc2LCAxODMsIDQ3LCA5NiwgNTMsIDExNSwgODYsIDQ3LCA5NiwgMjE5LCAxNDYsIDI1MCwgOTEsIDE3NywgMjE5LCAxNDYsIAotICAgIDI1MCwgOTEsIDg2LCAyMTksIDE0NiwgMjUwLCA5MSwgMTgzLCAyMTksIDE0NiwgMjUwLCA5MSwgOTYsIDIzNywgODcsIDExNSwgCi0gICAgODYsIDIzNywgODYsIDg2LCAyMzcsIDg3LCAxMTUsIDk2LCAyMzcsIDg2LCA5NiwgNTIsIDUzLCAzLCA5NSwgNDksIDUwLCAKLSAgICA1MiwgNTMsIDMsIDk1LCA4NiwgNTIsIDUzLCAzLCA5NSwgOTYsIDUyLCA0NywgMTc3LCA1MiwgNDcsIDg2LCA1MiwgNDcsIAotICAgIDE4MywgNTIsIDQ3LCA0OSwgNTAsIDUyLCA0NywgMTEyLCAxMjEsIDUyLCA0NywgMTUzLCAyMDQsIDQ2LCA1MiwgNDcsIDE1MywgCi0gICAgMjQxLCAxNzYsIDUyLCA0NywgMjExLCAyMzgsIDI0MSwgMTc2LCA1MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA1MiwgNDcsIAotICAgIDk2LCAyMDgsIDcwLCA0NywgODYsIDIwOCwgNzAsIDQ3LCA5NiwgMjExLCAxNzEsIDQ3LCA4NiwgMjExLCAxNzEsIDQ3LCAKLSAgICAxNzcsIDUzLCAzLCA1MiwgOTUsIDE4MywgNTMsIDMsIDUyLCA5NSwgOTYsIDI0NCwgMTQzLCA0NywgMTc3LCAyNDQsIDE0MywgCi0gICAgNDcsIDg2LCAyNDQsIDE0MywgNDcsIDE4MywgMjQ0LCAxNDMsIDQ3LCA5NiwgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgCi0gICAgMjA4LCAxNzMsIDE0MiwgOTYsIDYxLCA0NywgMTc3LCA2MSwgNDcsIDg2LCA2MSwgNDcsIDE4MywgNjEsIDQ3LCAxNzcsIDYxLCAKLSAgICA1MywgMjM5LCAxMjAsIDE0MiwgMTc3LCA2MSwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDE3NywgNjEsIDUzLCAyMjAsIDMyLCAKLSAgICAyMTksIDI3LCAzLCAyMzYsIDEwNiwgMTQyLCAxNzcsIDYxLCA1MywgMjIwLCAzMiwgMjE5LCAyNywgMywgODAsIDE0MiwgCi0gICAgMTc3LCA2MSwgNTIsIDQ3LCAxNzcsIDYxLCA1MiwgNTMsIDIyMCwgMzIsIDIxOSwgMjYsIDg2LCA2MSwgNTMsIDIzOSwgMTIwLCAKLSAgICAyMDQsIDk5LCAxNTMsIDIwNCwgNDYsIDUzLCAyMDgsIDE3MywgMjQ1LCAxNjUsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIAotICAgIDIwOCwgMTczLCAyNDUsIDE2NSwgMTEyLCAxMjEsIDYxLCA0NywgNTAsIDUzLCAzLCA1LCAyNDYsIDYxLCAxODMsIDUzLCA5NiwgCi0gICAgNzYsIDE3NywgNDcsIDEyNiwgODYsIDI1MCwgOTEsIDk2LCA1MywgMywgODAsIDk1LCA4NiwgNTMsIDMsIDgwLCA5NSwgNDksIAotICAgIDUwLCA1MywgMywgODAsIDk1LCA5NiwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCA1MywgMywgNTIsIDgwLCA5NSwgNDksIDUwLCAKLSAgICA1MywgMywgNTIsIDgwLCA5NSwgOTYsIDIyMCwgNiwgNDcsIDg2LCAyMjAsIDYsIDQ3LCA0OSwgNTAsIDIyMCwgNiwgNDcsIAotICAgIDM1LCAyNTEsIDE0LCAyNDUsIDIyOCwgMjE5LCA2OSwgMjQzLCAyMDUsIDIwOSwgODMsIDI0MCwgMjA3LCAyMDksIDgzLCAKLSAgICAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0MCwgMjA4LCAyNDEsIDk0LCAyMTMsIDExNywgMjMxLCAzOCwgMjIzLCAxMDEsIDI0MSwgCi0gICAgMTE1LCAyMjAsIDY5LCAyMjEsIDE2NiwgMjUwLCAyMzIsIDI0MSwgMTE1LCAyMjAsIDY5LCA1LCAyNDEsIDExNSwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAyNTAsIDgyLCAKLSAgICAyMjQsIDI0NCwgNSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyNCwgMjQ0LCAyNDEsIDg0LCA3NiwgMjE3LCAyMTQsIDIyMywgCi0gICAgMTYyLCAyMTcsIDIyNCwgMjIzLCAxNjIsIDI0NSwgMTcxLCAyMjMsIDE2MiwgMjEwLCAyMTcsIDIyNCwgMTAzLCA1NCwgMjI0LCAKLSAgICAxMDEsIDU0LCA3MCwgMjE4LCA3NiwgMjQzLCAxMzcsIDIxMiwgNTcsIDIxMywgMTE4LCAyMjQsIDEwMiwgMjUwLCA2MCwgCi0gICAgMjE5LCAyNTQsIDIxNSwgMjUzLCAyMTksIDI1NCwgMjQ3LCAxNzgsIDIxOSwgMjU0LCA1MSwgMjE1LCAyMDQsIDI0NSwgMTA2LCAKLSAgICAyMTUsIDIwNCwgMjM5LCAxNDAsIDIxNSwgMjA0LCAyMTcsIDIxMCwgMTM1LCAyMzEsIDI3LCA1MCwgMjUwLCAyMTcsIDI1MCwgCi0gICAgMjE3LCAyMjUsIDE3LCAyNTAsIDIxNywgMjExLCAyMDgsIDI1MCwgMjE3LCAyNDMsIDEzOSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0MywgMjE5LCA4MiwgMTM1LCAyMjEsIDE2NiwgMjE5LCA4MiwgMTM1LCAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAKLSAgICAzNywgMjE5LCAyNDQsIDIzMCwgMjQ0LCAyMDYsIDIzNywgMjMxLCAyLCA1MiwgMjMxLCAyLCAyMDgsIDcwLCAyMzEsIDIsIAotICAgIDI0NSwgMTg4LCAyMzEsIDIsIDIxMCwgMTg5LCAyMzEsIDIsIDIwNSwgMTc4LCAyMzEsIDIsIDI0NiwgMTgsIDIzMSwgMiwgCi0gICAgMjQ2LCAxOCwgMjQ1LCAxODgsIDIzMSwgMiwgMjUwLCAxOTQsIDI0NSwgMTg4LCAyMzEsIDIsIDIwOSwgODIsIDI0OCwgMTUyLCAKLSAgICAyMTYsIDE2OCwgMjE3LCAyMTEsIDcwLCAyMjQsIDEwMiwgMjQwLCAyMTUsIDIzOCwgMTcyLCAyMTcsIDIxMSwgMjM2LCAxMjEsIAotICAgIDIwOCwgMjI4LCAyMTksIDI1NCwgMjE2LCA3MywgMjA4LCAyMjcsIDIzMCwgMjM5LCAyMjcsIDI0MSwgMTk0LCAyMTIsIDEyMiwgCi0gICAgMjA0LCA3NSwgMjAzLCAyMjYsIDIxNywgMjI0LCAyMjEsIDE2NiwgMjA4LCAyMjcsIDIyNCwgMTAzLCAyMDgsIDIyNywgMjUwLCAKLSAgICA1MywgMTU2LCAxMzUsIDIyMSwgMTY2LCAyNTAsIDUzLCAxNTYsIDEzNSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgCi0gICAgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNTEsIDEyNywgMTU2LCAxMzUsIDIyMiwgMjMyLCAyNTAsIDE1MSwgMjIxLCAxNzUsIAotICAgIDI1MSwgMTI3LCAxNTYsIDEzNSwgMjUxLCA3LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDI1MSwgNywgMTU2LCAxMzUsIDI1MSwgNywgCi0gICAgMTU2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIwOCwgNzAsIDIwOCwgMjI3LCAyNTEsIDE1LCAxNTYsIDEzNSwgMjQxLCAzMCwgCi0gICAgMTM1LCAyMzgsIDE3MSwgMjQxLCAzMCwgMTM1LCAyNDMsIDIwNiwgMjQ4LCAxMDMsIDI1MCwgMTUzLCAyMDksIDkzLCAyMjcsIAotICAgIDEyMiwgMjM4LCAxNzEsIDE1NiwgMTM1LCAyNTAsIDE1MSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIwOSwgOTMsIDIzMSwgCi0gICAgNjUsIDIyMCwgNjksIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjUwLCAxNTEsIDE1NiwgMTM1LCAyNDUsIDI0MywgMjQxLCAKLSAgICAzNCwgMjQxLCAzNSwgMjQ1LCAyNDIsIDIxNSwgMjUzLCAyMzEsIDUwLCAxNTYsIDEzNSwgMjE1LCAyNTMsIDE1NiwgMTM1LCAKLSAgICAyNDUsIDE1OSwgMTM1LCAyNDAsIDI1NCwgMjQxLCAzMywgMTM1LCAyMTEsIDk1LCAyNDEsIDM0LCAyNDQsIDM4LCAxNTYsIAotICAgIDEzNSwgMTU2LCAyMDgsIDE3MywgMjQ3LCAxMzcsIDI0NCwgNTYsIDIyNSwgMTcsIDI0NywgMTM2LCAyMTcsIDQ1LCAxNTYsIAotICAgIDEzNSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzUsIDE1NCwgMTM1LCAyMjEsIDE2NiwgMjM1LCAxNTQsIDEzNSwgMjExLCAzOSwgCi0gICAgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDE1NiwgMTM1LCAKLSAgICAyMjcsIDE3OSwgMTE1LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDExNSwgMTU2LCAxMzUsIDIyNywgMTc5LCAyNDcsIDE0OCwgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjIzLCAyNDAsIAotICAgIDIyNywgMTc4LCAyMjMsIDI0MCwgMjM3LCAyNDYsIDI0OCwgMTAzLCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMjEsIDE2NiwgCi0gICAgMjI3LCAxNzgsIDIyMSwgMTY2LCAyMzcsIDI0NiwgMjIyLCAyMzIsIDIyNywgMTc5LCAyMjEsIDE3NSwgMTU2LCAxMzUsIAotICAgIDIyMiwgMjMyLCAyMzcsIDI0NywgMjIxLCAxNzUsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDI0MSwgMzAsIDEzNSwgCi0gICAgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNDEsIDMwLCAxMzUsIDIyMiwgMjMyLCAyMjcsIDE3OSwgMjIxLCAxNzUsIDI0MSwgMzAsIAotICAgIDEzNSwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjQxLCAzMCwgMTM1LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIyNywgMTc4LCAyMjIsIDIzMiwgMjI3LCAxNzksIDIyMSwgMTc1LCAyMzcsIAotICAgIDI0NiwgMjIyLCAyMzIsIDIzNywgMjQ3LCAyMjEsIDE3NSwgMjI3LCAxNzgsIDIxNywgMjQ5LCAyMTAsIDIzNiwgMjE3LCAKLSAgICAyNTAsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjEwLCAyMzcsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDIxOSwgCi0gICAgMjQ1LCAyNDEsIDMwLCAxMzUsIDIxMCwgMjM3LCAyMTksIDI0NSwgMjQxLCAzMCwgMTM1LCAyNDMsIDEwNCwgMjIxLCAxNjYsIAotICAgIDIxNywgMjUyLCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxMCwgMjM4LCAyMTAsIDI0NSwgMjIwLCA2OSwgMjEwLCAxOTgsIDIyMCwgCi0gICAgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAyNDUsIDIyMCwgNjksIDIyMSwgMTY2LCAzNCwgMjEwLCAxOTgsIDIyMCwgNjksIAotICAgIDIxMCwgMjQ1LCA3NiwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMTAsIDE5OCwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIyLCAKLSAgICAyMzIsIDM0LCAyMTAsIDI0NSwgNzYsIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjIyLCAyMzIsIDM0LCAyMTAsIDE5OCwgNzYsIAotICAgIDIyMSwgMTc1LCAxNTYsIDEzNSwgMjEwLCAyNDUsIDc2LCAzLCAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMTk4LCA3NiwgMywgCi0gICAgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjMsIDIyMSwgMjIzLCAyMjIsIDIyMywgMjIzLCAyMjMsIDIyMiwgMjA2LCAyMzcsIDUxLCAKLSAgICAyMzEsIDY1LCAyMjAsIDY5LCA1MSwgMjE5LCAyMzYsIDIyMCwgNjksIDUxLCAyMzEsIDY1LCA3NiwgMjE5LCAyNDUsIDE1NiwgCi0gICAgMTM1LCA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMTU2LCAxMzUsIDUxLCAyNDcsIDQ4LCA1MSwgMjQ1LCA5OSwgNDMsIAotICAgIDIxOCwgNzYsIDQzLCAyMjQsIDEwMiwgNDMsIDIwOCwgMjE5LCA0MywgMjQzLCAxMzcsIDIxMiwgNTcsIDQzLCA3MCwgMjE5LCAKLSAgICAyNTQsIDQzLCAyMTUsIDI1MywgMjE5LCAyNTQsIDQzLCAyNTAsIDYwLCAyMTksIDI1NCwgNDMsIDI0MSwgMzQsIDQzLCAyNDQsIAotICAgIDE0NCwgMTAzLCAyMTgsIDc2LCAxMDMsIDIyNCwgMTAyLCAxMDMsIDIwOCwgMjE5LCAxMDMsIDcwLCAyMTksIDI1NCwgNTAsIAotICAgIDIxMCwgMywgNDksIDIxMCwgMywgMTIxLCAyMTAsIDMsIDExMiwgMjEwLCAzLCAyNTAsIDYzLCAyMjQsIDc3LCAyMDgsIDQ5LCAKLSAgICAyMzksIDE2NSwgMjA4LCA3MCwgODAsIDI0OCwgMjMxLCA1MCwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA1MCwgCi0gICAgMjA3LCAxNzMsIDI0MywgMTA0LCAyMjEsIDE2NiwgMjE3LCAyMDUsIDIyMSwgMTY2LCAyMDgsIDQ5LCAyNDMsIDEwNCwgMjIxLCAKLSAgICAxNjYsIDIzOSwgMTY2LCAyMjIsIDIzNCwgNTIsIDgwLCAyNDgsIDIzMSwgNTIsIDUwLCAyMDcsIDE3MywgMjE3LCAyNTAsIAotICAgIDIwNiwgMjQ4LCAyMTYsIDExNywgMjEwLCAyMzcsIDIwNiwgMjQ4LCAyMTYsIDExNywgMjIxLCAxNzIsIDIxMSwgMiwgMjIwLCAKLSAgICA2OSwgMjQ1LCAxOTQsIDI1MCwgODIsIDIyMSwgMTcyLCAyMTEsIDEsIDIyMSwgMTcyLCAyMTEsIDIsIDc2LCAyMTksIDI0NSwgCi0gICAgMTU2LCAxMzUsIDI0NSwgMTk0LCAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAyLCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxOSwgCi0gICAgMjM2LCAyMjAsIDY5LCAyMzEsIDY1LCAyMjAsIDY5LCAyMjMsIDIyOCwgMjM3LCAyNCwgMjQ1LCAyMDUsIDIyNSwgNjksIAotICAgIDIzMCwgMjU1LCAyMDMsIDE1NiwgMjIzLCA4MSwgMjIxLCAxNzQsIDUwLCAyNTAsIDIxOCwgMywgMjUwLCAxMjgsIDUwLCAKLSAgICAyMDgsIDg1LCAyMjMsIDE2MiwgMjI3LCAzNywgMjUwLCAyMjYsIDIyMywgMTYyLCAyMjcsIDM3LCAyMTksIDI0NCwgMjIzLCAKLSAgICAxNjIsIDIzMCwgMjQ0LCAyMjMsIDE2MiwgMjA2LCAyMzcsIDI0MywgMjIyLCAyMTksIDI1NCwgNzAsIDIxOSwgMjU0LCAyMTEsIAotICAgIDk1LCAyMTksIDI1NCwgMjQzLCAxMzcsIDIwOCwgMjE5LCAyNDcsIDIzNCwgNDksIDIyMSwgMTcyLCAyNDAsIDkyLCAyMTMsIAotICAgIDE0MiwgMjE3LCAyMjQsIDUwLCAyMjEsIDE3MiwgMjQwLCA5MiwgMjEzLCAxNDIsIDIxNywgMjI0LCA0OSwgMjEzLCAxNDIsIAotICAgIDIxNywgMjI0LCA1MCwgMjEzLCAxNDIsIDIxNywgMjI0LCAyMTYsIDczLCAyMDgsIDIyOCwgMjQxLCAzNCwgMjQ1LCA5MywgCi0gICAgMjI3LCAzNywgMjE5LCAyNDQsIDI0NSwgOTMsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjEwLCAyNDQsIDUyLCAyMTAsIAotICAgIDE5NywgNTIsIDIzMCwgMjQ0LCA1MiwgMjA2LCAyMzcsIDIxOCwgMTAzLCAxNTYsIDI1LCAyMTksIDgyLCAxMzUsIDIyNywgCi0gICAgMTc5LCAzLCAyNDMsIDg1LCAyMzcsIDI0NywgMywgMjQzLCA4NSwgMjA1LCAyNDIsIDIyMywgMjQwLCAyMjcsIDE3OCwgMjA1LCAKLSAgICAyNDIsIDIyMywgMjQwLCAyMzcsIDI0NiwgMjI3LCAxNzksIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMzcsIDI0NiwgCi0gICAgMjM3LCAyNDcsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIAotICAgIDIyNywgMTc4LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDE1NiwgMjA4LCAxNzMsIDIxOSwgMjQ1LCAKLSAgICAyMTcsIDI0OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIxMCwgMjM2LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDIxNywgCi0gICAgMjUzLCAyMTksIDI0NSwgMjQxLCAzNiwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyMTAsIDIzOSwgMjE5LCAyNDUsIDI0MSwgMzYsIAotICAgIDIyMSwgMTY2LCA1MSwgMjMxLCA2NSwgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjIxLCAxNjYsIDUxLCAyMTksIDIzNiwgCi0gICAgNzYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgNTEsIDIzMSwgNjUsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAKLSAgICA1MSwgMjE5LCAyMzYsIDc2LCAyMTksIDI0NSwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMjcsIDE3OSwgMjQ3LCAxNDgsIDIyMSwgCi0gICAgMTY2LCAyNDEsIDMwLCAxMzUsIDIzNywgMjQ3LCAyNDcsIDE0OCwgMjIxLCAxNjYsIDI0MSwgMzAsIDEzNSwgMjE3LCAyNTAsIAotICAgIDI0NywgMTQ4LCAyMjEsIDE2NiwgMjQxLCAzMCwgMTM1LCAyMTAsIDIzNywgMjQ3LCAxNDgsIDIyMSwgMTY2LCAyNDEsIDMwLCAKLSAgICAxMzUsIDIyMSwgMTY2LCAyMjEsIDE3MiwgMjExLCAyLCAyMjAsIDY5LCAyNDMsIDEwNCwgMjIxLCAxNjYsIDI0NSwgMTk2LCAKLSAgICAyNTAsIDgyLCAyMjEsIDE3MiwgMjExLCAxLCAyMjEsIDE2NiwgMjIxLCAxNzIsIDIxMSwgMiwgNzYsIDIxOSwgMjQ1LCAxNTYsIAotICAgIDEzNSwgMjQzLCAxMDQsIDIyMSwgMTY2LCAyNDUsIDE5NiwgMjUwLCA4MiwgMjIxLCAxNzIsIDIxMSwgMiwgMjE5LCAyNDUsIAotICAgIDI0MSwgMzYsIDgwLCAyNDEsIDEwOCwgMjI0LCAxNDYsIDIzNiwgMTA2LCAyNDEsIDEwOCwgMTEyLCA1MCwgMjQzLCAyMjgsIAotICAgIDI0MSwgMTA4LCAxMjEsIDUwLCAyNDMsIDIyOCwgMjQxLCAxMDgsIDI0MSwgMTE1LCA3NiwgMywgMTYzLCAyMzYsIDEwNiwgCi0gICAgOTUsIDI0MSwgMTE1LCA3NiwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAKLSAgICAyNDEsIDExNSwgNzYsIDMsIDgwLCAyNDgsIDIzMSwgMjUwLCA1MCwgMjQxLCA4NCwgNzYsIDIzNiwgMTA2LCA5NSwgMjQxLCAKLSAgICAxMTUsIDc2LCAzLCA3MCwgNTUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAyMDMsIDUsIDI0MSwgMTE1LCA3NiwgMywgMjE5LCAKLSAgICAyMDMsIDI0MSwgMTE1LCA3NiwgMywgMjA2LCAyNDYsIDI0MSwgMTE1LCA3NiwgMywgMTIwLCAyMzYsIDEwNiwgMjExLCAxOSwgCi0gICAgMjQ1LCAxOTQsIDMsIDE2MywgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIAotICAgIDg0LCA3NiwgMjM2LCAxMDYsIDk1LCA1LCAyNDUsIDE5NCwgMywgODAsIDI0OCwgMjMxLCAyNTAsIDUwLCAyNDEsIDg0LCA3NiwgCi0gICAgMjM2LCAxMDYsIDk1LCAyNDUsIDE5NCwgMywgMjE5LCAyMDMsIDUsIDI0NSwgMTk0LCAzLCAyMTksIDIwMywgMjAyLCAxNjAsIAotICAgIDIyMSwgMTY0LCAyNDksIDExLCAyMjQsIDI0MywgMjQzLCAyMjMsIDU0LCAyNDEsIDExNywgNDcsIDIzNiwgMzgsIDExMiwgCi0gICAgMjUwLCA5NCwgMTIxLCAyNTAsIDk0LCAyMTcsIDIxOCwgMjE4LCAyMjcsIDIwNCwgNzIsIDIyNywgMTE0LCA0OSwgMjQ2LCAKLSAgICAyMjYsIDUwLCAyNDYsIDIyNiwgNDksIDIzOSwgMjA0LCA1MCwgMjM5LCAyMDQsIDI0NywgMjQ4LCA1MCwgMjQ1LCAxMzIsIAotICAgIDI0NywgMjQ4LCA0OSwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA1MCwgMjQ1LCAxMzIsIDIwOCwgMTQ1LCA0OSwgMjQ1LCAxMzIsIAotICAgIDIxNiwgNzMsIDIyMSwgMTY2LCA1NCwgNTEsIDIyNiwgMjQ2LCAyNTAsIDEyOCwgMjE0LCAxNTgsIDIxNCwgMTY2LCAyMDksIAotICAgIDE2MiwgMjE2LCAxNDcsIDIxOCwgMzQsIDIzMSwgMzEsIDIwNSwgMjE4LCAyMTEsIDE3NywgMjE4LCA5NywgNzYsIDIzMCwgCi0gICAgMjU0LCA1NCwgMjA3LCAxNzQsIDIyMSwgMTY2LCA1NCwgMjA0LCA4MiwgMjM2LCA0MCwgMjA4LCAxNDUsIDQ5LCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDUwLCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDQ5LCAyNDUsIDE2NSwgMjQ3LCAyNDgsIDUwLCAyNDUsIAotICAgIDE2NSwgMjA4LCAxNDUsIDE2MiwgMjMxLCAyLCAyNDcsIDI0OCwgMTYyLCAyMzEsIDIsIDIzOSwgMTE1LCAyMTIsIDMxLCAKLSAgICAxMTIsIDI1MCwgOTUsIDI0OCwgMTA0LCAxMjAsIDIzNiwgMTA2LCAyNDgsIDIyMCwgMjE5LCAyNDcsIDIyOSwgMTUxLCAyNDEsIAotICAgIDI2LCAyMDgsIDE3MywgMjA5LCA5MywgMjE2LCAxNiwgMjAzLCAxOTcsIDIzMSwgNTAsIDM0LCAyMTYsIDE0NCwgMjQ3LCAKLSAgICAyMzMsIDIyOSwgMTQ5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDE1NSwgMjE2LCAxMSwgMjUwLCAyMTgsIDE1NSwgMjQxLCAyNiwgCi0gICAgMjA4LCAxNzMsIDIwOSwgOTMsIDIyNywgMjIyLCAyNDgsIDExNSwgMjE1LCAyNTIsIDI0NSwgNjEsIDI1MSwgMTUsIDI1MCwgCi0gICAgMTAzLCAyMTAsIDEwMCwgMjA4LCAxMzAsIDIxNSwgMTI1LCAyNDMsIDE4NSwgMjE5LCAyMzcsIDI0NSwgMjA5LCAyMDksIAotICAgIDIyMCwgMjEyLCA0NCwgMjQ1LCAxNTUsIDI0NSwgMTU0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzNSwgMjAzLCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxMSwgMTY5LCAyMTcsIDYyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0MSwgCi0gICAgMzYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQzLCAxNDMsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMjQzLCAyMjEsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCAyNDYsIDYxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIxMSwgNjksIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ2LCA2MiwgMjMwLCA4OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTIsIDU4LCAxNDIsIDI1MCwgCi0gICAgMTY5LCAyMzksIDk4LCAxNiwgMjQ5LCAyMSwgMTQyLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDIxMiwgNTcsIAotICAgIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjQ5LCAyMCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAKLSAgICAyMjcsIDE3OCwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTcsIDYzLCAyMzcsIDI0NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCA5NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCA4NiwgMjA2LCA3NiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyMTcsIDYzLCA5NiwgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgODYsIDQ3LCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDI0OSwgMjAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIwNiwgCi0gICAgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgMzgsIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAKLSAgICA2MywgMTIxLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgMzcsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMTIxLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTc3LCAyMDYsIDc2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE3NywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIAotICAgIDIxOSwgMjAzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NCwgNDksIDIxMSwgNjksIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjE3LCA2MywgMTEyLCAyNDcsIDMzLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NCwgNDgsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMTEyLCAyMTAsIDQsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMTgzLCAyMDYsIDc2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDE4MywgNDcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQ0LCAzOCwgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjQzLCAyMjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIzMCwgODksIDIwNiwgMjQ2LCAyNTAsIAotICAgIDE2OSwgMjM5LCA5OCwgMTYsIDI0NiwgNjIsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjEyLCAKLSAgICAyNDAsIDIzMCwgODgsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCAzMCwgMjE3LCA2MiwgMjUwLCAxNjksIDIzOSwgOTgsIAotICAgIDE2LCAyNDYsIDYyLCAyMTEsIDk0LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjMsIDI0NSwgMjQyLCAyNTAsIDE2OSwgCi0gICAgMjM5LCA5OCwgMTYsIDExMiwgMjEwLCA0LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDQsIDQ5LCAyNDMsIAotICAgIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTEsIDk1LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAKLSAgICAyMzAsIDg5LCAyNDMsIDIzMSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyNDYsIDYyLCAyNDMsIDIzMSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAxMjEsIDIxMiwgMjQwLCAyMTEsIDY5LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDQ5LCAyMTIsIDI0MCwgCi0gICAgMjExLCA2OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMDgsIDIyOCwgMjQzLCAyMzEsIDI1MCwgMTY5LCAyMzksIDk4LCAKLSAgICAxNiwgMjM3LCAyNDcsIDI0MywgMjMxLCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI0NSwgMjM0LCAxNDIsIDI1MCwgMTY5LCAKLSAgICAyMzksIDk4LCAxNiwgMjQ0LCA0OSwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjAyLCAyOSwgMjUwLCAxNjksIAotICAgIDIzOSwgOTgsIDE2LCAyMTEsIDcwLCAyMDgsIDIyNywgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMTMsIDE0NCwgMjA2LCAKLSAgICAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE3LCA2MywgMjIxLCAxNjYsIDI0MSwgMzYsIDI1MCwgMTY5LCAyMzksIAotICAgIDk4LCAxNiwgMjE3LCA2MywgMjE3LCA0NiwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAxMjEsIDI0NywgMzQsIDIwOCwgMjI3LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDExMiwgMjQ3LCAzNCwgMjA4LCAyMjcsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgCi0gICAgMjMwLCAyMzAsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjE2LCA1OSwgMjUwLCAxNjksIDIzOSwgOTgsIDE2LCAyMjAsIDM2LCAKLSAgICAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMywgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjQxLCAzOCwgCi0gICAgMjA2LCAyNDYsIDI1MCwgMTY5LCAyMzksIDk4LCAxNiwgMjMwLCAyMzEsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgCi0gICAgMTYsIDIyMCwgMzcsIDIwNiwgMjQ2LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDI1MSwgMiwgMjIxLCAxNjYsIDI0NiwgMTY5LCAKLSAgICA4MiwgNTAsIDI1MCwgMjE4LCAzLCAxODMsIDIwMiwgMzAsIDQ3LCAyMTIsIDIxMCwgMTcxLCAyNDcsIDIzMywgMjQ4LCAxMjksIAotICAgIDk3LCA4MCwgMjI3LCAxMTUsIDMsIDEwMSwgMjQzLCA4NSwgMjMxLCA4LCA5NywgMjQ1LCAxODksIDIwNiwgMjQ0LCA5NywgCi0gICAgMjQzLCAxNTgsIDIwNiwgMjQ0LCA5NywgMjQxLCA5NiwgOTcsIDI0NSwgMjI0LCA5NywgNjEsIDUxLCAzLCAyNDYsIDIxOCwgCi0gICAgODAsIDIyNywgMTE0LCAyNDEsIDY4LCA5NywgMjUwLCAyNTAsIDIyOSwgMTUyLCA5NywgMjM3LCAzNywgOTcsIDQzLCAyMzYsIAotICAgIDEwNiwgMjQ4LCAyMzEsIDMsIDIyMSwgMTYzLCA0MywgMjA4LCA4NiwgMjQyLCA3MCwgMjQ3LCAyMDMsIDI0NiwgNjIsIDMsIAotICAgIDIyMSwgMTY5LCA0NywgMjA2LCAyNDIsIDk3LCAyMjQsIDQwLCA5NywgMjM1LCAyMTYsIDk3LCAyMjAsIDcsIDIzNywgMTcwLCAKLSAgICA5NywgMjIwLCA3LCAyMjgsIDEyOSwgOTcsIDIxOSwgNTksIDk3LCAyMTksIDU4LCA5NywgMjQzLCAxNjcsIDI0NSwgOTEsIAotICAgIDE2LCAyMzksIDE1OSwgMTA4LCAyMTIsIDUsIDk3LCAyNTAsIDE2OSwgMjM5LCA5OCwgMTYsIDIxNywgNjIsIDI0NCwgNjgsIAotICAgIDIxMywgMTMxLCAyMjksIDE1MiwgOTcsIDIxNywgMjM4LCAyMTksIDE1MywgMjIyLCAyMDgsIDIxOSwgMTUzLCAyMTcsIDIzNCwgCi0gICAgMjE0LCAxODUsIDk3LCAyNDYsIDMzLCAyMTQsIDE4NSwgOTcsIDQ5LCAyMTksIDc3LCAyMDYsIDIyMSwgMTEzLCA0OSwgMjE5LCAKLSAgICA3NywgMjQwLCAyMDAsIDQ5LCAyMTksIDc3LCAyMjYsIDI1MSwgMTEzLCA1MCwgMjE5LCA3NywgMjA2LCAyMjEsIDExMywgNTAsIAotICAgIDIxOSwgNzcsIDI0MCwgMjAwLCA1MCwgMjE5LCA3NywgMjI2LCAyNTEsIDExMywgNDksIDUxLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAyNDAsIDIwMCwgNDksIDUxLCAyNDcsIDIyNywgMjI2LCAyNTEsIAotICAgIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAyMDYsIDIyMSwgMjQ1LCAxNjUsIDUwLCA1MSwgMjQ3LCAyMjcsIDI0MCwgCi0gICAgMjAwLCA1MCwgNTEsIDI0NywgMjI3LCAyMjYsIDI1MSwgMjQ1LCAxNjUsIDQ5LCAyNDUsIDkzLCAyNDcsIDIyNywgMjA2LCAKLSAgICAyMjEsIDExMywgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAxMDEsIDIxOCwgMTU5LCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIAotICAgIDIyNiwgMjUxLCAxMTMsIDI0NSwgOTMsIDI0NywgMjI3LCAyNDAsIDIwMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMDYsIAotICAgIDIyMSwgMTEzLCA1MCwgMjQ1LCA5MywgMjQ3LCAyMjcsIDEwMSwgMjE4LCAxNTksIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgCi0gICAgMjI2LCAyNTEsIDExMywgMjMxLCAzLCAyNDAsIDIwMCwgMjM2LCAxMDYsIDIyNywgMTE1LCAyNDAsIDIwMCwgMjA2LCAyMjEsIAotICAgIDQ5LCAyMTksIDI0NSwgMjI2LCAyNTEsIDUwLCAyNDUsIDkzLCAyNDcsIDIyNywgMjE0LCAxNjcsIDIwNiwgMjIxLCA1MCwgCi0gICAgMjE5LCAyNDUsIDIyNiwgMjUxLCA0OSwgMjQ1LCA5MywgMjQ3LCAyMjcsIDIxNCwgMTY3LCAyMTAsIDIxOCwgMjA4LCAxNDQsIAotICAgIDIxMCwgMjE4LCAyNDcsIDI0NywgMjA4LCAxNDUsIDUxLCAxNTUsIDI0NywgMjQ4LCA1MSwgMTU1LCAyNDcsIDI0OCwgNTEsIAotICAgIDI0NywgMjI3LCAxMTUsIDIwOCwgMTQ1LCA1MSwgMTU1LCA0MCwgMTYsIDI0NywgMjQ3LCA0OSwgODAsIDk4LCAyMjcsIDExNCwgCi0gICAgNTAsIDgwLCA5OCwgMjI3LCAxMTQsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTMsIDIzNiwgMTA2LCAyMTQsIDIwMiwgCi0gICAgMjI3LCAxMTIsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTEsIDIzNiwgMTA2LCAyMTQsIDIwMiwgMjI3LCAxMTAsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgCi0gICAgMjQ3LCAyNDgsIDIxNiwgMTYsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyNDYsIDYxLCAyNDQsIDI5LCAxNiwgMTU3LCAKLSAgICAxMjEsIDI1LCAyMzYsIDEwNiwgMywgMjQ2LCA2MSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIAotICAgIDI0NiwgNjEsIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAzLCAyMDgsIDg1LCAyNDQsIDI5LCAxNiwgMTU3LCAxMjEsIDI1LCAKLSAgICAyMzYsIDEwNiwgMywgMjA4LCA4NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDYsIDMsIDIwOCwgODUsIAotICAgIDI0NCwgMjksIDE2LCAxNTcsIDgwLCAyNSwgMjA0LCA3NSwgMjQ0LCAyOSwgMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDYsIAotICAgIDMsIDIwNCwgNzUsIDI0NCwgMjksIDE2LCAxNTcsIDExMiwgMjUsIDIzNiwgMTA2LCAzLCAyMDQsIDc1LCAyNDQsIDI5LCAxNiwgCi0gICAgMTU3LCAxMjEsIDI1LCAyMzYsIDEwNSwgMjQ0LCAyOSwgMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAxMDUsIDI0NCwgMjksIDE2LCAKLSAgICAxNTcsIDgwLCAyNSwgMjA4LCAxNDUsIDIyNywgMjIyLCAyNDQsIDI5LCAxNiwgMTU3LCA4MCwgMjUsIDI0NywgMjQ4LCAyMjcsIAotICAgIDIyMiwgNTEsIDIzOSwgMTcyLCAyMTYsIDc4LCA5NywgMjQxLCAxMzEsIDk3LCA4MCwgMjI3LCAxMTUsIDI0MCwgMjAwLCAKLSAgICAyMjQsIDIxNCwgMjQ3LCAyMTQsIDIyNCwgMjE0LCAxNjMsIDExNSwgMjEyLCAyMjcsIDIyNCwgMjE0LCAyMTIsIDIyOCwgCi0gICAgMTE1LCAyMjcsIDI4LCAyMjQsIDIxNCwgMTYzLCAxMTUsIDEyMCwgMjEyLCAyMTMsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAKLSAgICAxMTUsIDIyNywgMjgsIDIyNCwgMjE0LCAxMjAsIDIxMiwgMjE0LCAyMzAsIDk3LCAyMjQsIDIxNCwgMjA4LCA2NiwgMjI0LCAKLSAgICAyMTQsIDIwOSwgMTI0LCAyMjQsIDIxNCwgMjE4LCAyNTMsIDI0MSwgMTgwLCAyMzcsIDIzOSwgMjM5LCA5MiwgMjA4LCAxNDUsIAotICAgIDIxOSwgNzYsIDI0NywgMjQ4LCAyMTksIDc2LCAyMDgsIDE0NSwgMjQ1LCA5MywgMTU1LCAyNDcsIDI0OCwgMjQ1LCA5MywgCi0gICAgMTU1LCAyMDgsIDE0NSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMjQ3LCAyNDgsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDYxLCAyMDgsIDEwMSwgMjQ4LCAxMTUsIDIxNSwgMjUzLCAzLCAyNDYsIDYxLCAyMTEsIDUxLCAyMzksIDIxNSwgMjUxLCAKLSAgICAxNDIsIDI0NSwgOTAsIDI0MSwgMTE2LCAyMzAsIDI0NCwgMjQ0LCA2OCwgMjQwLCAyMDQsIDk3LCA2MiwgMjE2LCAxMSwgNTIsIAotICAgIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgNTIsIDIwOCwgODUsIDYyLCAyMDYsIDIyMywgNTIsIDIwOCwgODUsIDYyLCAyNDIsIAotICAgIDY5LCA1MiwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDUyLCAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjI3LCAyMTcsIDUyLCAKLSAgICAyMDgsIDg2LCAzLCA4MCwgMTQyLCA2MiwgMjE2LCAxMSwgMjA4LCA4NiwgMywgNTIsIDgwLCAxNDIsIDI1MSwgMzQsIDI0NiwgCi0gICAgMTksIDIxMSwgNTgsIDIwOCwgMjIwLCAyNDYsIDE5LCAyMzYsIDQxLCAzLCAyMzksIDE5NSwgMjE0LCAyNDEsIDYyLCAyMjUsIAotICAgIDEwLCAyMjcsIDIxNywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDIxNiwgMTEsIDIwOCwgODUsIDYyLCAyMjUsIDEwLCAyMDYsIAotICAgIDIyMywgMjA4LCA4NSwgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODUsIDUyLCA4MCwgMTQyLCA2MiwgNTEsIDM1LCAKLSAgICAyMTEsIDYxLCA2MiwgMjQ2LCA2MiwgMzUsIDIxNiwgMTQ4LCAxNiwgMzUsIDIyMSwgNDgsIDE2LCAzNSwgMjExLCA5MCwgNzYsIAotICAgIDIzNywgNjEsIDE2LCAzNSwgMjExLCA5MCwgNzYsIDIwOSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMDksIDExMiwgCi0gICAgMTYsIDM1LCAyNDEsIDg0LCA3NiwgMjA4LCAxMDUsIDE2LCAzNSwgMjQxLCA3MSwgMTYsIDM1LCAyNTEsIDEzMCwgMTYsIDM1LCAKLSAgICAyNDgsIDEyOCwgMTYsIDM1LCAyNDksIDE5LCAxNiwgMzUsIDIzNiwgMTA2LCAyMTAsIDUsIDE2LCAzNSwgMjI3LCAxMTUsIAotICAgIDI0MCwgNTEsIDE2LCAzNSwgODAsIDIxMCwgNSwgMTYsIDM1LCAyMzksIDE1OSwgMjQwLCA1MSwgMTYsIDM1LCAyNDcsIDI1LCAKLSAgICAyMTYsIDc3LCAxNiwgMzUsIDIxMywgNywgMjE5LCAyMTEsIDE2LCAzNSwgMjEzLCA3LCAyMzEsIDQ5LCAxNiwgMzUsIDI0NCwgCi0gICAgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIDEwNSwgMTYsIDM1LCAyNDQsIDgsIAotICAgIDI0NSwgMTg0LCAxMDgsIDE2LCAzNSwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ3LCAxNiwgMzUsIDI0NCwgOCwgMjQ1LCAxODQsIAotICAgIDE0OSwgMTYsIDM1LCAxODIsIDI1MSwgMTMwLCAxNiwgMzUsIDIxMCwgOTUsIDIzMSwgMTEyLCAxNiwgMzUsIDI0MSwgODQsIAotICAgIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMTYsIDM1LCAyNDcsIDU5LCAxNiwgMzUsIDI0MSwgODQsIDc2LCAyMjUsIDksIDE2LCAKLSAgICAzNSwgMjEwLCAyNDIsIDE2LCAzNSwgMjQxLCA5LCAxNiwgMzUsIDI0MCwgMTEsIDIxMywgMTMwLCAxNiwgMzUsIDIzNywgCi0gICAgMjM4LCAyMTMsIDEzMCwgMTYsIDM1LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDE2LCAzNSwgMjA2LCAyMzYsIDIxMywgMTMwLCAKLSAgICAxNiwgMzUsIDIxMSwgMjI4LCAxNiwgMzUsIDI0NCwgNDYsIDI0OCwgMzcsIDk3LCAxNzEsIDI0NywgMjMzLCAxNiwgMzUsIAotICAgIDIyMiwgMjExLCAxNiwgMzUsIDI0NCwgNDcsIDIzOSwgMTU5LCAxMDgsIDE2LCAzNSwgMjEwLCAyNDMsIDIzOSwgMTU5LCAKLSAgICAxMDgsIDIyMCwgODIsIDExMywgMjIwLCA4MiwgMjQ2LCAxOTQsIDIyMCwgODIsIDIzOSwgMTYyLCAyMjAsIDgyLCAyMzAsIAotICAgIDIzOSwgMjM5LCAxNjIsIDIyMCwgODIsIDI0OCwgMTI1LCAyNDcsIDE5MCwgMjIwLCA4MiwgMjQ3LCAyNDEsIDIwOCwgMjUwLCAKLSAgICAyMjAsIDgyLCAyNDcsIDIyNCwgMjQ4LCAyMzYsIDIzNSwgMTUzLCAyMjAsIDgyLCAyNTAsIDIzNywgNzYsIDI0NiwgMTY4LCAKLSAgICAyMjAsIDgyLCAyNDQsIDE0NCwgMjIwLCA4MiwgMjQ1LCA4MCwgMjUxLCAxMzQsIDIyMSwgNDYsIDIyMCwgODIsIDUyLCAyNDksIAotICAgIDIwLCA0MywgMTcsIDEwNSwgNDMsIDE3LCAxMDgsIDQzLCAxNywgMTQ3LCA0MywgMTcsIDE0OSwgNDMsIDE3LCAxNzAsIDQzLCAKLSAgICAxNywgMTk1LCA0MywgMTcsIDIxMywgMTExLCA0MywgMTcsIDE5OSwgNDMsIDE3LCAyMjIsIDYzLCA0MywgNDIsIDIwOSwgCi0gICAgMTUyLCA0MywgNDIsIDI0MSwgMTEyLCA0MywgNDIsIDIwNywgMTU0LCA0MywgNDIsIDIwOSwgNTUsIDQzLCA0MiwgMjM5LCAKLSAgICAxNDEsIDQzLCA0MiwgMjQwLCAyMiwgNDMsIDQyLCAyMTIsIDgyLCA0MywgNDIsIDIxMywgMTA4LCA0MywgNDIsIDI0MSwgCi0gICAgMTQwLCA0MywgNDIsIDIyMiwgNjAsIDQzLCA0MiwgMjA3LCAxNTEsIDEwMiwgMTcsIDEwNSwgMTAyLCAxNywgMTA4LCAxMDIsIAotICAgIDE3LCAxNDcsIDEwMiwgMTcsIDE0OSwgMTAyLCAxNywgMTcwLCAxMDIsIDE3LCAxOTUsIDEwMiwgMTcsIDIxMywgMTExLCAKLSAgICAxMDIsIDE3LCAxOTksIDEwMiwgMTcsIDIyMiwgNjMsIDEwMiwgNDIsIDIwOSwgMTUyLCAxMDIsIDQyLCAyNDEsIDExMiwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTQsIDEwMiwgNDIsIDIwOSwgNTUsIDEwMiwgNDIsIDIzOSwgMTQxLCAxMDIsIDQyLCAyNDAsIDIyLCAKLSAgICAxMDIsIDQyLCAyMTIsIDgyLCAxMDIsIDQyLCAyMTMsIDEwOCwgMTAyLCA0MiwgMjQxLCAxNDAsIDEwMiwgNDIsIDIyMiwgNjAsIAotICAgIDEwMiwgNDIsIDIwNywgMTUxLCAxNywgMTE4LCAyMzksIDEwMiwgMjExLCA2MSwgMTcsIDEyMCwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDE3LCAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAxNDcsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjM5LCAKLSAgICAyMzMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNywgMjEyLCA4OCwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMTMsIDExMiwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyNDEsIDE0MywgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMjIsIDY0LCAyMzksIAotICAgIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgMTUzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTEzLCAyMzksIDEwMiwgCi0gICAgMjExLCA2MSwgNDIsIDIwNywgMTU1LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIwOSwgNTYsIDIzOSwgMTAyLCAyMTEsIDYxLCAKLSAgICA0MiwgMjM5LCAxNDIsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjQwLCAyMywgMjM5LCAxMDIsIDIxMSwgNjEsIDQyLCAyMTIsIAotICAgIDgzLCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIxMywgMTA5LCAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDI0MSwgMTQxLCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgNDIsIDIyMiwgNjEsIDIzOSwgMTAyLCAyMTEsIDYxLCA0MiwgMjA3LCAxNTIsIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCAxMDIsIDgsIDUsIDEsIDYzLCAxMDIsIDgsIDUsIDEsIDI0OSwgMjU1LCAxMDIsIDgsIDUsIDEsIAotICAgIDI0NywgMTI1LCAxMDIsIDgsIDUsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNSwgMSwgNzQsIDEwMiwgOCwgNSwgMSwgMjQwLCAKLSAgICAxNzQsIDEwMiwgOCwgNSwgMSwgMjM5LCA3NSwgMTAyLCA4LCA1LCAxLCAyMzcsIDE3MSwgMTAyLCA4LCA1LCAxLCA3NSwgCi0gICAgMTAyLCA4LCA1LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA1LCAxLCAyMzAsIDU0LCAxMDIsIDgsIDUsIDEsIDE1OSwgMTAyLCA4LCAKLSAgICA1LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA1LCAxLCAyMjMsIDE2MywgMTAyLCA4LCA1LCAxLCA3OCwgMTAyLCA4LCA1LCAxLCAKLSAgICAyMTksIDE4NCwgMTAyLCA4LCA1LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA1LCAxLCAxNDYsIDEwMiwgOCwgNSwgMSwgMTk0LCAKLSAgICAxMDIsIDgsIDUsIDEsIDIxMCwgNjksIDEwMiwgOCwgNSwgMSwgNjgsIDEwMiwgOCwgNSwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNSwgMSwgMjAzLCAxOTYsIDEwMiwgOCwgNSwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgCi0gICAgNSwgMSwgMjAyLCAxNTksIDQzLCA4LCA2LCAxLCA2MywgNDMsIDgsIDYsIDEsIDI0OSwgMjU1LCA0MywgOCwgNiwgMSwgMjQ3LCAKLSAgICAxMjUsIDQzLCA4LCA2LCAxLCAyNDUsIDUxLCA0MywgOCwgNiwgMSwgNzQsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgNDMsIDgsIAotICAgIDYsIDEsIDIzOSwgNzUsIDQzLCA4LCA2LCAxLCAyMzcsIDE3MSwgNDMsIDgsIDYsIDEsIDc1LCA0MywgOCwgNiwgMSwgMjMwLCAKLSAgICAxODQsIDQzLCA4LCA2LCAxLCAyMzAsIDU0LCA0MywgOCwgNiwgMSwgMTU5LCA0MywgOCwgNiwgMSwgMjI2LCAxODUsIDQzLCAKLSAgICA4LCA2LCAxLCAyMjMsIDE2MywgNDMsIDgsIDYsIDEsIDc4LCA0MywgOCwgNiwgMSwgMjE5LCAxODQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTcsIDEzNCwgNDMsIDgsIDYsIDEsIDE0NiwgNDMsIDgsIDYsIDEsIDE5NCwgNDMsIDgsIDYsIDEsIDIxMCwgNjksIDQzLCAKLSAgICA4LCA2LCAxLCA2OCwgNDMsIDgsIDYsIDEsIDIwNiwgMTY0LCA0MywgOCwgNiwgMSwgMjA0LCAxNDQsIDQzLCA4LCA2LCAxLCAKLSAgICAyMDMsIDE5NiwgNDMsIDgsIDYsIDEsIDIwMywgMTI0LCA0MywgOCwgNiwgMSwgMjAyLCAxNTksIDQzLCA4LCA1LCAxLCA2MywgCi0gICAgNDMsIDgsIDUsIDEsIDI0OSwgMjU1LCA0MywgOCwgNSwgMSwgMjQ3LCAxMjUsIDQzLCA4LCA1LCAxLCAyNDUsIDUxLCA0MywgCi0gICAgOCwgNSwgMSwgNzQsIDQzLCA4LCA1LCAxLCAyNDAsIDE3NCwgNDMsIDgsIDUsIDEsIDIzOSwgNzUsIDQzLCA4LCA1LCAxLCAKLSAgICAyMzcsIDE3MSwgNDMsIDgsIDUsIDEsIDc1LCA0MywgOCwgNSwgMSwgMjMwLCAxODQsIDQzLCA4LCA1LCAxLCAyMzAsIDU0LCAKLSAgICA0MywgOCwgNSwgMSwgMTU5LCA0MywgOCwgNSwgMSwgMjI2LCAxODUsIDQzLCA4LCA1LCAxLCAyMjMsIDE2MywgNDMsIDgsIDUsIAotICAgIDEsIDc4LCA0MywgOCwgNSwgMSwgMjE5LCAxODQsIDQzLCA4LCA1LCAxLCAyMTcsIDEzNCwgNDMsIDgsIDUsIDEsIDE0NiwgCi0gICAgNDMsIDgsIDUsIDEsIDE5NCwgNDMsIDgsIDUsIDEsIDIxMCwgNjksIDQzLCA4LCA1LCAxLCA2OCwgNDMsIDgsIDUsIDEsIAotICAgIDIwNiwgMTY0LCA0MywgOCwgNSwgMSwgMjA0LCAxNDQsIDQzLCA4LCA1LCAxLCAyMDMsIDE5NiwgNDMsIDgsIDUsIDEsIDIwMywgCi0gICAgMTI0LCA0MywgOCwgNSwgMSwgMjAyLCAxNTksIDQzLCAxNywgMjAyLCA4NCwgMTgyLCA0MywgNDIsIDI0MSwgMTEyLCAxODIsIAotICAgIDQzLCA0MiwgMjA3LCAxNTQsIDE4MiwgNDMsIDQyLCAyMDksIDU1LCAxODIsIDQzLCA0MiwgMjM5LCAxNDEsIDE4MiwgNDMsIAotICAgIDQyLCAyNDAsIDIyLCAxODIsIDQzLCA0MiwgMjEyLCA4MiwgMTgyLCA0MywgNDIsIDIxMywgMTA4LCAxODIsIDQzLCA0MiwgCi0gICAgMjQxLCAxNDAsIDE4MiwgNDMsIDQyLCAyMjIsIDYwLCAxODIsIDQzLCA0MiwgMjA3LCAxNTEsIDUyLCA0MywgMTcsIDEwNSwgCi0gICAgNTIsIDQzLCAxNywgMTA4LCA1MiwgNDMsIDE3LCAxNDcsIDUyLCA0MywgMTcsIDE0OSwgNTIsIDQzLCAxNywgMTcwLCA1MiwgCi0gICAgNDMsIDE3LCAxOTUsIDUyLCA0MywgMTcsIDIxMywgMTExLCA1MiwgNDMsIDE3LCAxOTksIDUyLCA0MywgMTcsIDIyMiwgNjMsIAotICAgIDUyLCA0MywgNDIsIDIwOSwgMTUyLCAxODIsIDQzLCAxNywgMjAyLCA4NCwgOTgsIDExNiwgMTU3LCAyMzYsIDEwNSwgOTgsIAotICAgIDExNiwgNzksIDIzNiwgMTA1LCA5OCwgMTE2LCAxNTcsIDIwNiwgMzgsIDk4LCAxMTYsIDc5LCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxNTcsIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgMTQ1LCAyMzYsIAotICAgIDEwNSwgOTgsIDExNiwgMTU3LCAyMDgsIDcwLCAyNDQsIDE0NSwgMjA2LCAzOCwgOTgsIDExNiwgNzksIDIwOCwgNzAsIDI0NCwgCi0gICAgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIAotICAgIDIxNywgNTgsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTU3LCAyMTcsIDU4LCAyNDQsIDE0NSwgMjA2LCAzOCwgCi0gICAgOTgsIDExNiwgNzksIDIxNywgNTgsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIxNiwgMTYsIAotICAgIDk4LCAxMTYsIDEyMSwgMTU3LCAyNSwgNTAsIDIzNywgNDksIDk4LCAxMTYsIDEyMSwgNzksIDI1LCA1MCwgMjI3LCAxMzQsIAotICAgIDk4LCAxMTYsIDc5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDEyMSwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDE1NywgMjUsIDQ5LCAyMzcsIDQ5LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAKLSAgICA3OSwgMTIxLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAxNTcsIAotICAgIDI1LCA1MCwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgNzksIDExMiwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgNzksIDI1LCA0OSwgMjI3LCAxMzQsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAxNTcsIDI1LCA1MCwgMjM3LCA0OSwgCi0gICAgOTgsIDExNiwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDc5LCAyNSwgNTAsIDExMiwgCi0gICAgMjI3LCAxMzQsIDk4LCAxMTYsIDgwLCA3OSwgMjUsIDUwLCAyMjcsIDEzNCwgOTgsIDExNiwgMTIxLCAxNTcsIDI1LCA1MCwgCi0gICAgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDE1NywgMjUsIDUwLCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDc5LCA4MCwgCi0gICAgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgODAsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgODAsIDE1NywgMjUsIDQ5LCAKLSAgICAyMzcsIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgNDksIDEyMSwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICA0OSwgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgNDksIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgCi0gICAgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgNDksIDEyMSwgMjM3LCA0OSwgOTgsIDExNiwgCi0gICAgNzksIDgwLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgCi0gICAgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgMTIxLCAyMjcsIDEzNCwgOTgsIDExNiwgCi0gICAgMTIxLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTIxLCA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIAotICAgIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMjEsIDIzNywgNDksIDk4LCAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgCi0gICAgMTIxLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTIxLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgMTEyLCAyNSwgMjM2LCAKLSAgICAxMDUsIDk4LCAxMTYsIDQ5LCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgNzksIDI1LCA0OSwgCi0gICAgMTEyLCAyMjcsIDEzNCwgOTgsIDExNiwgMTEyLCAxNTcsIDI1LCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgMTEyLCAKLSAgICA3OSwgMjUsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgNTAsIDE1NywgMjUsIDQ5LCAxMTIsIDIzNywgNDksIDk4LCAKLSAgICAxMTYsIDQ5LCAxNTcsIDI1LCA1MCwgMTEyLCAyMzcsIDQ5LCA5OCwgMTE2LCA3OSwgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAKLSAgICAxMTYsIDE1NywgODAsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgNDksIDc5LCAyNSwgNTAsIDgwLCAyMjcsIDEzNCwgOTgsIAotICAgIDExNiwgNTAsIDc5LCAyNSwgNDksIDgwLCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDE1NywgMjUsIDIzNiwgMTA2LCAyMzcsIAotICAgIDQ5LCA5OCwgMTE2LCAxMTIsIDc5LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjI3LCAxMzQsIDk4LCAxMTYsIDEyMSwgNzksIDI1LCAKLSAgICAxMTIsIDIzNiwgMTA2LCAyMjcsIDEzNCwgOTgsIDExNiwgODAsIDc5LCAyNSwgMjM2LCAxMDYsIDIyNywgMTM0LCA5OCwgCi0gICAgMTE2LCA0OSwgMTEyLCA3OSwgMjUsIDUwLCAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgMTEyLCA3OSwgMjUsIDQ5LCAKLSAgICAxMjEsIDIyNywgMTM0LCA5OCwgMTE2LCA0OSwgMTIxLCA3OSwgMjUsIDUwLCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCA1MCwgCi0gICAgMTIxLCA3OSwgMjUsIDQ5LCAxMTIsIDIyNywgMTM0LCA5OCwgMTE2LCAxMjEsIDE1NywgMjUsIDExMiwgMjM2LCAxMDYsIAotICAgIDIzNywgNDksIDk4LCAxMTYsIDExMiwgMTU3LCAyNSwgMTIxLCAyMzYsIDEwNiwgMjM3LCA0OSwgOTgsIDExNiwgNTAsIDE1NywgCi0gICAgMjUsIDQ5LCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNDksIDE1NywgMjUsIDUwLCA4MCwgMjM3LCA0OSwgOTgsIDExNiwgNzksIAotICAgIDgwLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMzYsIDEwNSwgOTgsIDExNiwgNzksIDUyLCAKLSAgICAyNDQsIDE0NSwgMjM2LCAxMDUsIDk4LCAxMTYsIDE1NywgNTIsIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA3OSwgNTIsIAotICAgIDI0NCwgMTQ1LCAyMDYsIDM4LCA5OCwgMTE2LCA1MiwgMjM2LCAxMDUsIDk4LCAxMTYsIDUyLCAyMDYsIDM4LCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgNTAsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxMjEsIDIxMiwgMTIwLCAyNSwgNDksIDI0MiwgNzgsIDk4LCAKLSAgICAxMTYsIDEyMSwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMjcsIDIyMiwgOTgsIDExNiwgCi0gICAgMTEyLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgNTAsIDIxMiwgMTE5LCA5OCwgCi0gICAgMTE2LCA1MiwgMTEyLCAyNSwgMjE2LCAxNiwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCAxMTIsIDUyLCAyNSwgNDksIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIAotICAgIDgwLCAyMTIsIDEyMCwgMjUsIDUwLCAyNDIsIDc4LCA5OCwgMTE2LCA4MCwgNTIsIDI1LCA1MCwgMjEyLCAxMTksIDk4LCAKLSAgICAxMTYsIDUyLCA4MCwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDQ5LCAyNDIsIDc4LCA5OCwgCi0gICAgMTE2LCA4MCwgNTIsIDI1LCA0OSwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIyNywgMjIyLCA5OCwgMTE2LCAKLSAgICAxMjEsIDIxMiwgMTIwLCAyNSwgMjM2LCAxMDYsIDI0MiwgNzgsIDk4LCAxMTYsIDEyMSwgNTIsIDI1LCAyMzYsIDEwNiwgCi0gICAgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCAxMjEsIDI1LCAyMzYsIDEwNSwgOTgsIDExNiwgMTEyLCAyMTIsIDEyMCwgMjUsIAotICAgIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAxMTIsIDUyLCAyNSwgMjM2LCAxMDYsIDIxMiwgMTE5LCA5OCwgMTE2LCA1MiwgCi0gICAgMTEyLCAyNSwgMjM2LCAxMDUsIDk4LCAxMTYsIDgwLCAyMTIsIDEyMCwgMjUsIDIzNiwgMTA2LCAyNDIsIDc4LCA5OCwgMTE2LCAKLSAgICA4MCwgNTIsIDI1LCAyMzYsIDEwNiwgMjEyLCAxMTksIDk4LCAxMTYsIDUyLCA4MCwgMjUsIDIzNiwgMTA1LCA5OCwgMTE2LCAKLSAgICAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDI1MCwgMTI5LCAxMjEsIDI1LCAyMjcsIAotICAgIDIyMiwgOTgsIDExNiwgMTU3LCAyNTAsIDEyOSwgMTEyLCAyNSwgMjI3LCAyMjIsIDk4LCAxMTYsIDE1NywgMjUwLCAxMjksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDIwNiwgMjIxLCA1MCwgMjA4LCAxNzMsIDIyNiwgCi0gICAgMjUxLCAyMjcsIDIyMiwgOTgsIDExNiwgMTU3LCAyNDMsIDIyOCwgMjA2LCAyMjEsIDQ5LCAyMDgsIDE3MywgMjI2LCAyNTEsIAotICAgIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQzLCAyMjgsIDI0NSwgMTMwLCA5OCwgMTE2LCAxNTcsIDIyNywgMjIyLCA5OCwgCi0gICAgMTE2LCAxNTcsIDIwNiwgMjI0LCA5OCwgMTE2LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDE1NywgMjQyLCA3MCwgOTgsIAotICAgIDExNiwgNzksIDIyNywgMjIyLCA5OCwgMTE2LCA3OSwgMjA2LCAyMjQsIDk4LCAxMTYsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAKLSAgICA3OSwgMjQyLCA3MCwgOTgsIDExNiwgMTU3LCA0OSwgMjUsIDc5LCAyMTYsIDE2LCA5OCwgMTE2LCAxNTcsIDExMiwgMjUsIAotICAgIDc5LCAyNDIsIDcwLCA5OCwgMTE2LCA3OSwgNDksIDI1LCAxNTcsIDIxNiwgMTYsIDk4LCAxMTYsIDc5LCAxMTIsIDI1LCAKLSAgICAxNTcsIDI0MiwgNzAsIDIwNiwgMjIxLCAxNjIsIDI0OCwgMzMsIDIyNiwgMjUxLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAKLSAgICAyMjYsIDI1MSwgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCAyMjYsIDI1MSwgMTI2LCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAKLSAgICAyNTEsIDE2MiwgMjQ4LCAzMywgMjI2LCAyNTEsIDIzOSwgMjMzLCAyNDEsIDEzNywgMjQ4LCAzMywgMjI2LCAyNTEsIDEyNiwgCi0gICAgMjE3LCA1NCwgMjQ4LCAzMywgMjI2LCAyNTEsIDIxMywgMTEyLCAyNDEsIDEzNywgMjQ4LCAzMywgMjM5LCAxMDIsIDI0OCwgCi0gICAgMzMsIDQ5LCAyMTMsIDExMiwgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxMjYsIDIxNywgNTQsIDI0OCwgMzMsIDQ5LCAyMzksIAotICAgIDIzMywgMjQxLCAxMzcsIDI0OCwgMzMsIDQ5LCAxNjIsIDI0OCwgMzMsIDQ5LCAxMjYsIDI0MSwgMTM3LCAyNDgsIDMzLCA0OSwgCi0gICAgMTE4LCAyMTcsIDU2LCAyNDgsIDMzLCA0OSwgMTE4LCAyNDEsIDEzOSwgMjQ4LCAzMywgNTAsIDE2MiwgMjQ4LCAzMywgMTU3LCAKLSAgICAyMTMsIDc5LCAyMjUsIDEwLCAyMTMsIDc5LCAyNDQsIDE1MCwgMjEzLCA3OSwgMjA2LCAyMjEsIDExOCwgMjQxLCAxMzksIAotICAgIDI0OCwgMzMsIDUwLCAxMTgsIDI0MSwgMTM5LCAyNDgsIDMzLCAyMTcsIDYwLCAyMjYsIDI1MSwgMjI3LCAyMjIsIDIxNywgCi0gICAgNjAsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgMjI3LCAyMjIsIDIxNywgNjAsIDIwNiwgMjIxLCAKLSAgICA0OSwgMjUsIDIyNiwgMjUxLCA0OSwgMjUsIDIyNiwgMjUxLCAyMTYsIDE2LCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAKLSAgICAyMjYsIDI1MSwgMjE2LCAxNiwgMjE3LCA2MCwgMjA2LCAyMjEsIDQ5LCAyNSwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIAotICAgIDIyNywgMjIyLCAyMTcsIDYwLCAyMDYsIDIyMSwgNDksIDI1LCAyMDYsIDIyMSwgNTAsIDI1LCAyMjYsIDI1MSwgMjE2LCAxNiwgCi0gICAgMjE3LCA2MCwgMjA2LCAyMjEsIDIxNiwgMTYsIDIxNywgNjAsIDIwNiwgMjIxLCA1MCwgMjUsIDIyNiwgMjUxLCAyMjcsIAotICAgIDIyMiwgMjE3LCA2MCwgMjA2LCAyMjEsIDUwLCAyNSwgMjI2LCAyNTEsIDQ5LCAyNSwgMjI2LCAyNTEsIDIxNiwgMTYsIDYyLCAKLSAgICAyMTEsIDE3NywgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDMsIDIxNSwgMTg5LCAyNDUsIDE2NCwgNjEsIDUxLCAyNDUsIDE5NSwgCi0gICAgNjIsIDUsIDIxMSwgMTc3LCA1MSwgMywgMjM2LCAxMDYsIDI0MCwgOSwgNTEsIDMsIDgwLCAyNDAsIDksIDUxLCAzLCAyMTksIAotICAgIDIyOSwgMjQ1LCAxMjUsIDI0MCwgOSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjA4LCAxNzMsIDIyNiwgMjUxLCA1MCwgMjQwLCAKLSAgICA5LCA1MSwgMywgMjA2LCAyMjEsIDUwLCAyMDgsIDE3MywgMjI2LCAyNTEsIDQ5LCAyNDAsIDksIDUxLCAzLCAyNDMsIDIyOCwgCi0gICAgMjQ1LCAxMjUsIDI0MCwgOSwgNjIsIDUsIDIxMSwgMTc3LCA2MSwgNSwgMjExLCAxNzcsIDYyLCAyMTYsIDE0MywgNjEsIAotICAgIDIxNiwgMTQzLCA2MiwgODAsIDIxNiwgMTQzLCA2MSwgODAsIDIxNiwgMTQzLCA2MiwgMjE5LCA4MCwgNjEsIDIxOSwgODAsIAotICAgIDYyLCAyMDYsIDIyMywgMjA4LCA4NSwgNjEsIDIwNiwgMjIzLCAyMDgsIDg1LCA2MiwgMjA2LCAyMjMsIDUsIDIwOCwgODUsIAotICAgIDYxLCAyMDYsIDIyMywgNSwgMjA4LCA4NSwgNjIsIDIxNiwgMTEsIDIwOCwgODUsIDYxLCAyMTYsIDExLCAyMDgsIDg1LCA2MiwgCi0gICAgMjE2LCAxMSwgNSwgMjA4LCA4NSwgNjEsIDIxNiwgMTEsIDUsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMTgsIDYwLCA2MSwgCi0gICAgMjE2LCAxMSwgMjE4LCA2MCwgNjIsIDI0MiwgNjksIDIwOCwgODUsIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA2MiwgMjQyLCAKLSAgICA2OSwgNSwgMjA4LCA4NSwgNjEsIDI0MiwgNjksIDUsIDIwOCwgODUsIDYyLCAyMjcsIDIxNywgMjA4LCA4NSwgNjEsIDIyNywgCi0gICAgMjE3LCAyMDgsIDg1LCA2MiwgMjI3LCAyMTcsIDUsIDIwOCwgODUsIDYxLCAyMjcsIDIxNywgNSwgMjA4LCA4NSwgNjIsIAotICAgIDIyNywgMjE3LCAyMTgsIDYwLCA2MSwgMjI3LCAyMTcsIDIxOCwgNjAsIDYyLCAyNDMsIDIyMSwgNjEsIDI0MywgMjIxLCA2MSwgCi0gICAgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgNSwgMjQzLCAyMjEsIDIzOSwgMjQyLCAyMjYsIDI0NiwgNjEsIDI0NiwgNjEsIAotICAgIDI0MiwgODMsIDI0NiwgNjEsIDI0NiwgNjIsIDMsIDgwLCAyNDAsIDksIDI0NywgMTczLCA2MiwgMjQ2LCA2MSwgMjQ2LCA2MiwgCi0gICAgMywgNDksIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgNTAsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjI2LCAyNTEsIAotICAgIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIDE2MiwgMjQ4LCA0MywgMjQ2LCA2MiwgMywgMjA2LCAyMjEsIAotICAgIDUwLCAyMTcsIDYwLCAyNDgsIDQzLCAyNDYsIDYyLCAzLCAyNTEsIDE1LCAyNDcsIDE0OCwgMjA2LCAyMjEsIDQ5LCAyMTcsIAotICAgIDYwLCAyNDgsIDQzLCA0OSwgMTYyLCA2MiwgMjQ2LCA2MSwgNTAsIDE2MiwgNjIsIDI0NiwgNjEsIDIzMCwgMjQwLCAyNDcsIAotICAgIDE3NywgMjMwLCAyNDAsIDYxLCAyNDYsIDYxLCAyMDYsIDIyMSwgMTYyLCAyMzAsIDI0MCwgNjEsIDI0NiwgNjEsIDIyNiwgCi0gICAgMjUxLCAxNjIsIDIzMCwgMjQwLCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIAotICAgIDEyOCwgMjA2LCAyMjEsIDUwLCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDUwLCAyMTcsIDYwLCAKLSAgICAyNDYsIDU1LCAyNTAsIDEyOCwgMjI2LCAyNTEsIDQ5LCAyMTcsIDYwLCAyNDYsIDU1LCAyNTAsIDEyOCwgMjA2LCAyMjEsIAotICAgIDE2MiwgMjQ2LCA2MSwgMjI2LCAyNTEsIDE2MiwgMjQ2LCA2MSwgNjIsIDIyNiwgMjUxLCA1MCwgMjA4LCA4NSwgNjIsIDIyNiwgCi0gICAgMjUxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA0OSwgMjA4LCA4NSwgNjIsIDIwNiwgMjIxLCA1MCwgMjA4LCA4NSwgCi0gICAgNjEsIDI0NywgMTc3LCA1MSwgMywgNDksIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAKLSAgICAyMDYsIDIyMSwgNDksIDI0MywgMjI4LCAxNjIsIDI0OCwgNDMsIDUxLCAzLCAyMjYsIDI1MSwgNTAsIDI0MywgMjI4LCAxNjIsIAotICAgIDI0OCwgNDMsIDYxLCA1MSwgMywgODAsIDI0OCwgNTUsIDIyNywgMTE0LCA2MSwgMjA2LCAyMjMsIDIwOCwgODYsIDMsIDI0MywgCi0gICAgODUsIDIwNiwgMjIzLCAyMDgsIDg2LCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMDYsIDIyMywgMjA4LCA4NiwgMywgNTAsIAotICAgIDE2MiwgMjQ4LCA0MywgMjI4LCA4LCAyNDYsIDYxLCA2MSwgNTEsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDUxLCAKLSAgICAzLCAyMjYsIDI1MSwgNDksIDIxNywgNTksIDYxLCA1MSwgMywgMjI2LCAyNTEsIDUwLCAyMTcsIDU5LCA2MSwgNTEsIDMsIAotICAgIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgCi0gICAgNjIsIDMsIDIyNiwgMjUxLCA0OSwgMjE3LCA1OSwgNjEsIDI0NiwgNjIsIDMsIDIyNiwgMjUxLCA1MCwgMjE3LCA1OSwgNjEsIAotICAgIDI0NiwgNjIsIDMsIDIwNiwgMjIxLCA1MCwgMjE3LCA1OSwgMjA2LCAyMjEsIDQ5LCAyMDgsIDg1LCAyMDYsIDIyMSwgNTAsIAotICAgIDIwOCwgODUsIDIyNiwgMjUxLCA0OSwgMjA4LCA4NSwgNjEsIDIyNSwgMTAsIDIxMSwgMTc3LCA2MiwgMjI1LCAxMCwgMjExLCAKLSAgICAxNzcsIDYxLCAyMjUsIDEwLCA1LCAyMTEsIDE3NywgNjIsIDIyNSwgMTAsIDUsIDIxMSwgMTc3LCAyMjYsIDI1MSwgNTAsIAotICAgIDIwOCwgODUsIDYyLCAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDI0NiwgNywgMjA3LCAzLCAyMTIsIDE1LCAyNDUsIDIzNiwgCi0gICAgNjIsIDIxMSwgOTQsIDYxLCAyMTEsIDk0LCAyMjcsIDEzMSwgMjA5LCAxNywgMjEwLCAyMTQsIDI1MCwgNzgsIDIyMSwgMTg4LCAKLSAgICAyNDQsIDE5LCAyMjEsIDE4OCwgMjQ1LCAyMDQsIDIxOSwgMjUwLCA2MiwgMjA5LCAxNjEsIDYxLCAyMDksIDE2MSwgMjQ4LCAKLSAgICAyNDgsIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDI0NiwgMTY4LCAyNDgsIDI0OCwgOTgsIDMsIDIwMywgMTk2LCAyMTQsIAotICAgIDI1NCwgMjA3LCA0LCAzLCAyMTYsIDE5MSwgMjQyLCA0OCwgMjM2LCA0NywgMjQ4LCAxMDIsIDYxLCAyMTIsIDIzNywgMjE4LCAKLSAgICAxNTksIDYyLCAyMTIsIDIzNywgMjE4LCAxNTksIDIxMywgNjgsIDIxNiwgNzMsIDIxNSwgMTk4LCAyMzksIDIwMSwgMjM3LCAKLSAgICA1NiwgMjQ3LCAxNzcsIDYyLCA0OSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyMzEsIDM1LCA2MSwgNDksIAotICAgIDIxOCwgNTksIDIzMSwgMzUsIDYxLCAxMTIsIDIxOCwgNTksIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjMxLCAzNSwgCi0gICAgNjEsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgMjEyLCA2MywgMjUsIDI0NSwgMTI5LCAyNDcsIDExLCA1NCwgMjE2LCAyMDMsIAotICAgIDU0LCAyNDgsIDYyLCA1NCwgMjQ3LCA4MywgMjUwLCAyMDgsIDIxOSwgMjMwLCAyNDUsIDEzMCwgMjQ2LCAxNDMsIDIxNiwgCi0gICAgNTksIDI0NSwgMTMxLCA3NiwgMjI3LCA5LCAyNDUsIDEzMSwgNzYsIDIzMCwgMTUxLCAyMTEsIDk1LCAyNSwgMjQ1LCAxMzgsIAotICAgIDI0MCwgNzUsIDk3LCAyNTEsIDExNSwgMjEzLCA3MCwgMjM3LCAxMzEsIDI1LCAyMTIsIDE1OSwgMjE5LCAzMywgOTcsIDIwMywgCi0gICAgMSwgMjAzLCA3NiwgMjA4LCA3NSwgMzUsIDIzNywgNTEsIDIwOCwgNzUsIDM1LCAyMjgsIDMzLCAyMDgsIDc1LCAzNSwgMjM5LCAKLSAgICAyNDksIDIwOCwgNzUsIDM1LCAyMDksIDE4LCAyMDgsIDc1LCAzNSwgMjA0LCAxNiwgMjA4LCA3NSwgMzUsIDIwNCwgODAsIAotICAgIDIwOCwgNzUsIDM1LCAyMjQsIDEyLCAyMDgsIDc1LCAzNSwgMjQxLCAxNzksIDIwNCwgMzcsIDc2LCAyNDMsIDI0OSwgNjEsIAotICAgIDIzOSwgMTE0LCAyNDAsIDEwMiwgNjEsIDIxMiwgMzAsIDI0MCwgMTAyLCA2MiwgMjEyLCAzMCwgMjQwLCAxMDIsIDYxLCAKLSAgICAyMTAsIDIxNSwgMywgMjE2LCAxNjIsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDI5LCAyMjgsIDEsIDIxNywgNTYsIDIyNCwgCi0gICAgMjksIDIyNCwgMjM0LCAyNDAsIDQzLCA1NCwgMjQxLCAxNzksIDIyNSwgMTI3LCA1NCwgMjMwLCA2OSwgMjE0LCAyMTgsIAotICAgIDIwNiwgMjA1LCAyMjIsIDIyNCwgMjE4LCA3MywgMjUwLCAxMTQsIDIwOSwgMjA1LCAyMzgsIDE3OCwgMjQ3LCA1NywgMjI3LCAKLSAgICAxODQsIDIwNSwgMjAyLCAyMjcsIDE0NSwgMjE0LCAxODcsIDIxNSwgMjAsIDI0NywgNDMsIDI1MCwgMTQ1LCAyMTgsIDEwOCwgCi0gICAgNjEsIDI0NiwgMTUwLCAyMjksIDgxLCA2MSwgMjQ2LCAxNTAsIDIxNywgNDgsIDYxLCAyNDYsIDE1MCwgMjE1LCAyMDYsIDYxLCAKLSAgICAyNDYsIDE1MCwgMjQ4LCA1NCwgNjEsIDI0NiwgMTUwLCAyMjksIDMxLCA2MSwgMjQ2LCAxNTAsIDIxOSwgNDUsIDYyLCAyNDYsIAotICAgIDE1MCwgMjI5LCA4MSwgNjIsIDI0NiwgMTUwLCAyMTcsIDQ4LCA2MiwgMjQ2LCAxNTAsIDIxNSwgMjA2LCA2MiwgMjQ2LCAKLSAgICAxNTAsIDI0OCwgNTQsIDYyLCAyNDYsIDE1MCwgMjI5LCAzMSwgNjIsIDI0NiwgMTUwLCAyMTksIDQ1LCA2MiwgMjExLCAyMjYsIAotICAgIDIxMCwgMjI3LCA2MSwgMjM3LCA1NiwgMjEwLCAyMjcsIDYxLCAyNDMsIDIyMiwgMjEwLCAyMjcsIDYyLCAyNDYsIDUsIDIxMCwgCi0gICAgMjI3LCA2MSwgMjExLCAyMjYsIDIxMCwgMjI3LCA2MiwgMjM3LCA1NiwgMjEwLCAyMjcsIDYyLCAyNDMsIDIyMiwgMjEwLCAKLSAgICAyMjcsIDYxLCAyNDYsIDUsIDIxMCwgMjI3LCAyMzYsIDQ3LCAyMTEsIDE4MiwgMjE3LCA1NiwgMjIxLCAxNjAsIDI0MSwgCi0gICAgMTM5LCAyMjEsIDE2MCwgMjQ4LCAxNTgsIDI0MSwgMTM5LCAyMjEsIDE1NSwgMjQ4LCAxNTgsIDIxMiwgODEsIDIyMSwgMTU1LCAKLSAgICAyMjMsIDE5NSwgMjM5LCAyMTcsIDU0LCAyMjMsIDE5NSwgMjIzLCA2NiwgNTQsIDIyMywgMTk1LCAyMTMsIDU3LCA1NCwgCi0gICAgMjA0LCA0NiwgMjEwLCA4OSwgMjQ1LCAxMzAsIDI0MSwgMTc2LCAyMTAsIDg5LCAyNDUsIDEzMCwgMjA2LCAyMzMsIDIxNiwgCi0gICAgMTM5LCA5NywgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMjAsIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTE4LCAKLSAgICAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExNywgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMTUsIAotICAgIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIwNywgMTEzLCAyMTgsIDkwLCAyMTYsIDEzOSwgMTYsIDM1LCAyMDcsIDExMSwgCi0gICAgMjE4LCA5MCwgMjE2LCAxMzksIDE2LCAzNSwgMjA3LCAxMDksIDIxOCwgOTAsIDIxNiwgMTM5LCAxNiwgMzUsIDIzOCwgMTc2LCAKLSAgICAyMjUsIDcwLCA2MiwgMjA2LCAyMzMsIDIxNiwgMTM5LCA5NywgMjE2LCAxNDAsIDIxOSwgOTUsIDk3LCAyMTksIDY4LCAyMTksIAotICAgIDk1LCA5NywgMjE4LCAyMzgsIDIxOSwgOTUsIDU0LCAyMDQsIDM1LCA5NywgMjQzLCAyMTQsIDI0MCwgMTAxLCAyNDMsIDIxNCwgCi0gICAgMjQwLCAxMDAsIDI0MywgMjE0LCAyNDAsIDk5LCAyNDMsIDIxNCwgMjQwLCA5OCwgMjQzLCAyMTQsIDI0MCwgOTcsIDI0MywgCi0gICAgMjE0LCAyNDAsIDk2LCA2MSwgMjQ2LCA2MiwgMywgNzAsIDIxNiwgMTYsIDYxLCAyNDYsIDYyLCAzLCAxMjAsIDI0MywgODMsIAotICAgIDYyLCAyNDYsIDYyLCAzLCA2MSwgNzAsIDIxNiwgMTYsIDYyLCAyNDYsIDYyLCAzLCAxMjAsIDYxLCAyNDMsIDgzLCAyMjQsIAotICAgIDQ1LCAzNSwgMjAzLCA3NiwgMjI0LCA0NSwgMzUsIDIwMywgMCwgMjQzLCAxOTUsIDM1LCAyMzcsIDI0OCwgMjAzLCA3NiwgCi0gICAgMjQzLCAxOTUsIDM1LCAyMjcsIDE3NywgMjAzLCAwLCAyNDMsIDE5NSwgMzUsIDIyNywgMTc3LCAyMDMsIDc2LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgMjQ4LCAyMDMsIDAsIDYxLCAyMzksIDIyNSwgNjIsIDIzOSwgMjI1LCAyMzcsIDEzMSwgMjUsIDIxOCwgCi0gICAgMTYzLCAyNTAsIDIyOCwgMjQ1LCAxMjgsIDIxMCwgMTU0LCAyMTEsIDEwMywgNzYsIDI1MSwgOTIsIDIxNCwgMjAzLCAyNTEsIAotICAgIDI5LCAyMzksIDE5NywgMjM4LCAxODcsIDIxMSwgMTAzLCA3NiwgMjM3LCAyNiwgMjUwLCA0MiwgOTcsIDIzOSwgMjEzLCAKLSAgICAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDEyNiwgMjI3LCAxMDksIDI0NSwgMTgxLCAyMTYsIDE2LCAxMjYsIDIyNywgMTA5LCAKLSAgICAyNDUsIDE4MSwgMjI3LCAyMjIsIDIwNCwgOTEsIDU0LCAxMzgsIDIwNSwgMTc5LCA1NCwgMjQyLCA3NSwgMjQwLCA0MywgNTQsIAotICAgIDI0MiwgNzUsIDIyNSwgMTI3LCA1NCwgMjMwLCAyNTAsIDI0MCwgNDMsIDI1LCAyMjUsIDEyNywgNTQsIDIyNSwgMTI3LCAyNSwgCi0gICAgMjQwLCA0MywgNTQsIDIyNSwgMTI3LCAzLCAyMTEsIDMyLCA1NCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDI1LCAyMjUsIAotICAgIDEyNywgMjUsIDI0MCwgNDMsIDU0LCA4MCwgMjI1LCAxMjcsIDMsIDIxMSwgMzIsIDU0LCAyMzYsIDEwNiwgMjI1LCAxMjcsIAotICAgIDMsIDIxMSwgMzIsIDU0LCAyMjUsIDEwLCA2MSwgMjQ2LCA2MSwgMjI1LCAxMCwgNjIsIDI0NiwgNjEsIDIyNSwgMTAsIDUsIAotICAgIDYxLCAyNDYsIDYxLCAyMjUsIDg2LCA5NywgMjQzLCAxMzUsIDk3LCAyMDYsIDIzMCwgMjE5LCA2NywgOTcsIDI0NSwgMjQ3LCAKLSAgICAyMzksIDk3LCAyMDYsIDIwMSwgMjIyLCAyMTcsIDI0NiwgMjAzLCAyMTksIDEzNywgMjMwLCA3NSwgMjA1LCAyNDAsIDI0NiwgCi0gICAgMTIzLCA2MiwgMjI0LCAzMCwgMjI3LCAxMjgsIDIxMywgMTAxLCAyMTMsIDE0MCwgMjE3LCAzOCwgMjEzLCAxMjAsIDIxMiwgCi0gICAgMTAsIDI0OCwgMjUxLCAyNDgsIDIxNywgMTAzLCAyMjksIDE1MSwgNjEsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MSwgMjQyLCAKLSAgICA1OCwgMjI5LCA4MSwgNjIsIDI0MiwgNTgsIDIyNSwgMTIyLCA2MiwgMjQyLCA1OCwgMjI5LCA4MSwgMjEyLCAxNiwgMjA0LCAKLSAgICAzLCAyMTIsIDE5LCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgNywgMjE2LCAxOTAsIDYyLCAyMTIsIDE1LCAyMDksIDE5LCAKLSAgICAyNDYsIDgsIDI1LCAyMTYsIDE5MCwgMjA3LCAxNzQsIDYxLCAyMTIsIDIzNywgMjE4LCAxNTksIDIwNywgMTc0LCA2MiwgCi0gICAgMjEyLCAyMzcsIDIxOCwgMTU5LCA2MSwgMjQzLCAyMjIsIDIzMSwgNTAsIDIxMSwgMTc3LCAyNDUsIDEyNCwgMjI4LCAxNSwgCi0gICAgMjQzLCAxNjIsIDI0NywgMzksIDIxOSwgMjUzLCAyMTgsIDE2MywgMjQ3LCA0MCwgMjEyLCA0OCwgMjM3LCAzNiwgMywgNjEsIAotICAgIDI0NSwgMTMwLCA0MywgMjQ1LCAxMjQsIDIyOCwgMTUsIDI0NiwgMTk1LCAyMjEsIDE5MiwgMjQxLCA2MiwgMjUwLCAyNTUsIAotICAgIDIyMCwgMjYsIDQ5LCAyMDQsIDY2LCAyMDgsIDExMywgNjIsIDIwNywgMTMxLCA0OSwgMjA0LCA2NiwgMjA4LCAxMTMsIDYxLCAKLSAgICAyMDcsIDEzMSwgNDksIDIwNCwgNjYsIDIwOCwgMTEzLCA2MiwgNDksIDIyOCwgMTYsIDIyNCwgMjMzLCA2MSwgNDksIDIyOCwgCi0gICAgMTYsIDIyNCwgMjMzLCAyNDIsIDUzLCAyMTIsIDQwLCA1NCwgNzksIDYxLCAyNDIsIDY5LCAyMDgsIDg1LCA0OSwgMjQ2LCAKLSAgICAxNiwgMjQxLCA2MiwgMTAzLCAyMTQsIDI1NCwgMjQwLCA4NCwgMjQzLCAyMjgsIDIzMSwgNTAsIDYxLCAyNDYsIDYyLCAyMzEsIAotICAgIDUwLCA2MiwgMjExLCAxNzcsIDYyLCAyMDgsIDUwLCAyMTYsIDg0LCA0OSwgMjQxLCA2MSwgMjE2LCA4NCwgNDksIDI0MSwgCi0gICAgNjAsIDI1MCwgNTQsIDE2LCAzNSwgMjA2LCAyMDUsIDc5LCAyNDYsIDYyLCAzLCAyMTEsIDMyLCAyNSwgMTIwLCAxODcsIDU1LCAKLSAgICAyMTgsIDI1NCwgMjE2LCAxMywgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMjcsIDIxOSwgMjMwLCAyNTIsIDIxOCwgMjU0LCAyMzAsIAotICAgIDIzOSwgMjE4LCAyNTQsIDYyLCAyNDUsIDEzMSwgMjIwLCAzMiwgMjEzLCA4LCAyMTIsIDI1MiwgMjEyLCAyMDMsIDI0NiwgCi0gICAgOTAsIDI0NywgMTksIDIzNiwgMjMxLCAyMTIsIDg5LCAyMzgsIDE4OCwgMjA0LCAzLCAyMzYsIDIzLCAyMzgsIDE4OCwgMywgCi0gICAgMjM3LCAxMDEsIDIyNSwgMTA3LCAxNiwgMzUsIDIyNywgMTMzLCAyMjQsIDEyLCAyMDcsIDQsIDIyMCwgMzIsIDIzNywgMjM5LCAKLSAgICAyMzksIDE0OCwgMjM5LCAyMjYsIDIzMSwgNTAsIDIzNiwgMTI2LCAyNDAsIDM0LCAyMTUsIDE1LCA1MSwgMjM5LCAxNDcsIAotICAgIDI0NSwgMTY0LCAyMTIsIDY2LCAyMzUsIDE2MywgMjEyLCA2OSwgMjE4LCAyMzAsIDMsIDI0OCwgMjUxLCAyMDksIDE0NCwgCi0gICAgMjMwLCAxNjksIDI0OCwgMjM2LCA5NywgMjM3LCA1OSwgMjM3LCAyNTAsIDk3LCAyMzksIDEwNSwgMjE3LCAxODAsIDI0NSwgCi0gICAgMTAwLCAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDYxLCAyMzksIDIyNiwgMywgMjM2LCAxMDYsIDEwMSwgNjIsIDIxMSwgMzMsIAotICAgIDYyLCAyMTUsIDI1LCAyMTQsIDE5MCwgMjA2LCAyMjEsIDI0OCwgMzgsIDIxNCwgMTkwLCA2MiwgMjE0LCAxOTAsIDIyNiwgCi0gICAgMjUxLCAyNDgsIDM4LCAyMTQsIDE5MCwgNjEsIDIxNCwgMTkwLCA2MSwgNzksIDI0NiwgMTY5LCA4MiwgMjA5LCAxNjIsIAotICAgIDIyNywgNDcsIDU0LCAyMDksIDIyMSwgMjQyLCA1MiwgMjUxLCA1MiwgMjQxLCA1NywgMjE2LCAxODgsIDIzOSwgMjM4LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjAzLCAyMjAsIDIzNywgMTIzLCAyMjYsIDI1MSwgNTAsIAotICAgIDIxOSwgOCwgMjE5LCA4LCAyMDYsIDIyMSwgNTAsIDIxOSwgOCwgNjEsIDIyMiwgOTcsIDYyLCAyMjIsIDk3LCAyNDYsIDE2OSwgCi0gICAgODIsIDc5LCAyNDYsIDE2OSwgODIsIDIyMywgMjI0LCAyMDMsIDE5NiwgNzksIDIyMywgMjI0LCAyMDMsIDE5NiwgMjQ4LCAKLSAgICAyNDgsIDIwMywgMTk2LCA3OSwgMjQ4LCAyNDgsIDIwMywgMTk2LCAyMTksIDIwNywgMzAsIDI0NSwgMTMwLCA3OSwgMzAsIAotICAgIDI0NSwgMTMwLCAxNzEsIDI0NiwgMjE4LCAyNDUsIDEzMCwgNzksIDE3MSwgMjQ2LCAyMTgsIDI0NSwgMTMwLCA4LCAyNDUsIAotICAgIDEzMCwgMjEzLCA3NywgNjEsIDgsIDI0NSwgMTMwLCAyMTksIDIwNywgOCwgMjQ1LCAxMzAsIDIyNSwgMTI0LCAyNDUsIDEzMCwgCi0gICAgMjExLCA5NSwgNzYsIDI0NCwgMTM3LCAyMzksIDE0NywgMjA5LCAxODAsIDI1MCwgNTksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgCi0gICAgMjUwLCA1OSwgNzksIDIzOSwgMTQ3LCAyNDgsIDI0OSwgMjUwLCA1OSwgMjM5LCAxNDcsIDI0NiwgMywgMjUwLCA1OSwgNjIsIAotICAgIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTEsIDk0LCA2MSwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxMSwgOTQsIDIxMSwgMjIxLCAKLSAgICAyMTEsIDQyLCAyMTksIDIwNywgNjEsIDIxMSwgOTQsIDQzLCA2MSwgMjExLCA5NCwgMTcxLCAyNDYsIDIxOCwgNjIsIDIxMSwgCi0gICAgOTQsIDYyLCAyNDYsIDIxOCwgNjEsIDIxMSwgOTQsIDIxOSwgMjA3LCA2MiwgMjExLCA5NCwgNzksIDIxOSwgMjA3LCA2MiwgCi0gICAgMjExLCA5NCwgMjE4LCAxMTgsIDIxMSwgOTQsIDIxMywgNzcsIDYxLCAyMTEsIDk0LCA3OSwgMjUwLCA1OSwgMTcxLCAyNDYsIAotICAgIDIxOCwgMjUwLCA1OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgCi0gICAgOTQsIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIAotICAgIDI0MSwgMTQzLCAyMTgsIDYxLCAyMTYsIDE0MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIDE0MywgMjE4LCA2MSwgMjE2LCAKLSAgICAxNDEsIDYyLCAyMTEsIDk0LCAyMDcsIDE1NSwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODMsIDIxOCwgNjEsIDI1MCwgCi0gICAgNTksIDIwOSwgMTgwLCAyNTAsIDU5LCAxNzEsIDI0NiwgMjE4LCAyMDksIDE4MCwgMjUwLCA1OSwgNzksIDIwOSwgMTgwLCAKLSAgICAyNTAsIDU5LCAyMTIsIDg4LCAyMTgsIDIxOCwgNjIsIDI1LCA2MSwgMjM5LCAyMDAsIDYyLCAyMzksIDIwMCwgNjEsIDIzOSwgCi0gICAgMjAwLCAyNDEsIDE0MywgMjE4LCAyMTgsIDIxOSwgMjA3LCA2MiwgMjM5LCAyMDAsIDQzLCAxNzEsIDI0NiwgMjE4LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgMjExLCA5NCwgNzksIDIwOSwgMTgwLCAyMTgsIDExOCwgMjUwLCA1OSwgMjEyLCAxNywgMjA4LCAKLSAgICAyNDQsIDIwOCwgNzgsIDIxMiwgMTcsIDc5LCAyNDYsIDE0NiwgMjEyLCAxNywgMjExLCAyMjMsIDc5LCAyMTEsIDIyMywgCi0gICAgMjQ4LCAyNDksIDI1MCwgNTksIDI0MSwgMTQzLCAyMDksIDE4MCwgMjE3LCAyMTMsIDI1MCwgNTksIDc5LCAyNDEsIDE0MywgCi0gICAgMjA5LCAxODAsIDIxNywgMjEzLCAyNTAsIDU5LCAyNDUsIDEzMSwgODIsIDIxMywgNzcsIDYxLCAyNDYsIDYxLCAxODIsIAotICAgIDEwMywgMjQ1LCAxMzEsIDgyLCAyMjYsIDI1MSwgNTAsIDI0MiwgNTAsIDYxLCAyMTEsIDE3NywgMjA2LCAyMjEsIDUwLCAKLSAgICAyNDIsIDUwLCA2MSwgMjExLCAxNzcsIDIyNiwgMjUxLCA1MCwgMjEzLCA3NywgNjEsIDIxMSwgMTc3LCAyMDYsIDIyMSwgNTAsIAotICAgIDIxMywgNzcsIDYxLCAyMTEsIDE3NywgNjIsIDIxNywgNDcsIDEzMSwgMjE5LCAyMzMsIDYxLCAyMTcsIDQ3LCAxMzEsIDIxOSwgCi0gICAgMjMzLCA2MSwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDYyLCAyNDMsIDIyMiwgMjI0LCAxMDMsIDYxLCAyMDMsIDE5NiwgCi0gICAgNzksIDI0MCwgMjEyLCAxMzEsIDk3LCAxNTcsIDgwLCAxNDIsIDIyNSwgMTAsIDgwLCAxNDIsIDc5LCA4MCwgMTQyLCA3OSwgCi0gICAgMjEyLCAxMjAsIDIwNywgMTc0LCAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIxMiwgMTIwLCAyNDUsIAotICAgIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCA1MiwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAyMzMsIDc5LCAxMjQsIDIxMiwgMTIwLCAKLSAgICAyNDUsIDIzNCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDEyNCwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIAotICAgIDIxOSwgMjMzLCAyNDUsIDg2LCAyMTEsIDc4LCAyMTksIDg5LCAyLCAyMTksIDIzMywgNzksIDI0MCwgMjEyLCAxMzEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMjM3LCA1NiwgMjQwLCAyMTIsIDEzMSwgMjE5LCAyMzMsIDc5LCA2MiwgMjM3LCA1NSwgMjE1LCAxOTgsIDc5LCAKLSAgICA2MiwgMjM3LCA1NiwgMjQ3LCAxNzcsIDIzOSwgMjAxLCAyMzcsIDU1LCAyMTUsIDE5OCwgMjM5LCAyMDEsIDIzNywgNTYsIAotICAgIDI0NywgMTc3LCAyMjUsIDEwLCA0OSwgMjE5LCA3NywgMjE5LCAyMzMsIDIyNSwgMTAsIDUwLCAyMTksIDc3LCAyMTksIDIzMywgCi0gICAgMjI1LCAxMCwgMjM5LCAyMTQsIDQ5LCAyMTksIDc3LCAyMTksIDIzMywgMjI1LCAxMCwgMjM5LCAyMTQsIDUwLCAyMTksIDc3LCAKLSAgICAyMTksIDIzMywgMjI1LCAxMCwgMjI3LCAyMTcsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDIyNSwgMTAsIDIxNiwgCi0gICAgMTEsIDI1MCwgMjE4LCAyNDcsIDIyNywgMjE5LCAyMzMsIDc5LCAyMjcsIDIxNywgMjUwLCAyMTgsIDIxNywgMzEsIDEzMSwgCi0gICAgMjE5LCAyMzMsIDc5LCAyMTYsIDExLCAyNTAsIDIxOCwgMjE3LCAzMSwgMTMxLCAyMTksIDIzMywgNzksIDIyNywgMjE3LCAKLSAgICAyNTAsIDIxOCwgMjQ3LCAyMjcsIDIxOSwgMjMzLCA3OSwgMjE2LCAxMSwgMjUwLCAyMTgsIDI0NywgMjI3LCAyMTksIDIzMywgCi0gICAgMTU3LCA0OSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMTU3LCA1MCwgMjA4LCAxMzMsIDIxMywgCi0gICAgMzMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAxMCwgNDksIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjI1LCAKLSAgICAxMCwgNTAsIDI0NSwgOTMsIDI0NywgMjI3LCAyMTksIDIzMywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCAxNywgMTA4LCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE0NywgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAKLSAgICAxNDksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgMTcwLCAyNDMsIDE3NCwgMTgyLCA0MywgMTcsIDE5NSwgMjQzLCAxNzQsIAotICAgIDE4MiwgNDMsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDE3LCAxOTksIDI0MywgMTc0LCAxODIsIDQzLCAxNywgCi0gICAgMjIyLCA2MywgMjQzLCAxNzQsIDE4MiwgNDMsIDQyLCAyMDksIDE1MiwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDEwNSwgMjQzLCAKLSAgICAxNzQsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE0NywgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIAotICAgIDE0OSwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDQzLCA0MSwgMTcsIDE5NSwgMjQzLCAxNzQsIDQzLCAKLSAgICA0MSwgMTcsIDIxMywgMTExLCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMTk5LCAyNDMsIDE3NCwgNDMsIDQxLCAxNywgMjIyLCAKLSAgICA2MywgMjQzLCAxNzQsIDQzLCA0MSwgNDIsIDIwOSwgMTUyLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAxMDUsIDI0MywgCi0gICAgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDEwOCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgMTQ3LCAyNDMsIDE3NCwgMTgyLCAKLSAgICA0MywgNDEsIDE3LCAxNDksIDI0MywgMTc0LCAxODIsIDQzLCA0MSwgMTcsIDE3MCwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAKLSAgICAxNywgMTk1LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMTMsIDExMSwgMjQzLCAxNzQsIDE4MiwgNDMsIDQxLCAxNywgCi0gICAgMTk5LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMjIsIDYzLCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDQyLCAyMDksIAotICAgIDE1MiwgNzksIDIwNCwgMjYsIDg2LCA0NywgNzksIDkxLCA1NCwgNzksIDIyNCwgMTAzLCA1NCwgNzksIDI0MywgMTM3LCA1NCwgCi0gICAgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCA4NiwgNDcsIDc5LCAxNTMsIDI0MSwgMTc2LCA0NywgMjQyLCA2MywgCi0gICAgMjE4LCA2MywgODYsIDQ3LCA3OSwgMjE1LCAxOTAsIDg2LCA0NywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjA4LCA4NCwgODYsIAotICAgIDQ3LCAyNDQsIDE0MywgMjA4LCA4NCwgODYsIDQ3LCA3OSwgMjQ0LCAxNDMsIDIwOCwgODQsIDg2LCA0NywgNjIsIDg2LCA0NywgCi0gICAgMjA5LCAzMSwgMjA4LCAxNDMsIDg2LCAyNTAsIDk0LCAyMDksIDMxLCAyNDcsIDI0NiwgODYsIDI1MCwgOTQsIDYyLCA4NiwgCi0gICAgMjUwLCA5NCwgNzksIDYyLCAyNDUsIDg2LCAxODMsIDI1LCA4NiwgNDcsIDc5LCA2MiwgMjQ1LCA4NiwgMTc3LCAyNSwgODYsIAotICAgIDQ3LCAyMTEsIDE3NCwgNjIsIDg2LCA0NywgNzksIDI0NSwgMjE3LCA2MiwgODYsIDQ3LCAyMTYsIDEwLCA2MSwgODYsIDQ3LCAKLSAgICAyMjcsIDIxNiwgNjEsIDg2LCA0NywgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDg2LCA0NywgMjM5LCAxMTcsIDIxMywgNzcsIAotICAgIDYxLCA4NiwgNDcsIDc5LCAyMjYsIDI1MSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA3OSwgMjA2LCAyMjEsIDIxNiwgOSwgNjEsIAotICAgIDg2LCA0NywgMjIxLCAxNjIsIDIyNiwgMjUxLCAyMTYsIDksIDYxLCA4NiwgNDcsIDI0NSwgOTMsIDIyNywgMTQsIDIyMSwgCi0gICAgMTYyLCAyMDYsIDIyMSwgMjE2LCA5LCA2MSwgODYsIDQ3LCA0MywgNzksIDYxLCA4NiwgNDcsIDIwNCwgMzIsIDg2LCA0NywgCi0gICAgMjQ4LCA0MiwgMjExLCAyMzgsIDI0MSwgMTc2LCA0NywgMjQ4LCA0MiwgODYsIDQ3LCAyNDgsIDQyLCAxNTMsIDI0MSwgMTc2LCAKLSAgICA0NywgNzksIDI0OCwgNDIsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDcsIDc5LCAyNDgsIDQyLCA4NiwgNDcsIDc5LCAyNDgsIAotICAgIDQyLCAxNTMsIDI0MSwgMTc2LCA0NywgMjA5LCAxODIsIDg2LCA0NywgNzksIDIwOSwgMTgxLCA4NiwgNDcsIDIwNCwgNTYsIAotICAgIDg2LCA0NywgNzksIDIwNCwgNTYsIDg2LCA0NywgMjIwLCAzLCA4NiwgNDcsIDUyLCAyNDUsIDkzLCAyMjcsIDE0LCAxMjYsIAotICAgIDI0MywgMTg0LCAyNTAsIDIxNywgNjEsIDIwOCwgODYsIDI0NSwgMTk1LCA1LCA2MSwgMjA4LCA4NSwgMjE4LCAyMzMsIDE3MSwgCi0gICAgMjEwLCAyNDQsIDE3MSwgMjEwLCAxOTcsIDQ5LCAyMTUsIDkzLCAyNDksIDExLCAyNDQsIDQzLCA1MCwgMjE1LCA5MywgMjQ5LCAKLSAgICAxMSwgMjQ0LCA0MywgMjE5LCAyNDUsIDMsIDcwLCAyMzEsIDYsIDIxNiwgNzQsIDIxMiwgMSwgMjE3LCAyNDgsIDIxMCwgCi0gICAgMjQ0LCAyMTAsIDE5OCwgMjE3LCAyNDgsIDIxMiwgMCwgODAsIDI0OCwgMjMxLCAzLCAyMzYsIDEwNiwgOTUsIDEzLCAyMTUsIAotICAgIDI0NSwgMjQzLCAyMjcsIDE2MywgMjQzLCAxMzYsIDEzLCAyNDAsIDg0LCAyNDMsIDIyNywgMTAzLCAyMjcsIDM3LCAyNTAsIAotICAgIDIyNiwgMTAzLCAyMjcsIDM3LCAyMTksIDI0NCwgNjEsIDI0MywgMjIyLCAzLCAyNDYsIDIxNiwgMjQzLCA4NSwgMjUsIDMsIAotICAgIDI0MywgODUsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyMDYsIDIxMiwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMywgMjQzLCAKLSAgICA4NSwgMjA2LCAyMjEsIDQ5LCAyNDUsIDE2NiwgMywgMjQzLCA4NSwgNDksIDIxOSwgMjA5LCAyMzAsIDk5LCA1MCwgMjE5LCAKLSAgICAyMDksIDIzMCwgOTksIDIzOSwgMTAyLCAyMTksIDIwOSwgMjMwLCA5OSwgMjI4LCA4LCAxMTIsIDIxMCwgMywgMjI4LCA4LCAKLSAgICAxMjEsIDIxMCwgMywgNDksIDI1LCA1MCwgNTIsIDIwNywgMTczLCA0OSwgMjUsIDUwLCAyMTAsIDMsIDQ5LCAyMjMsIDIyOCwgCi0gICAgMTYzLCA1MCwgMjEwLCAzLCAxNjMsIDQ5LCAyMTAsIDMsIDExMiwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NSwgMjI2LCAyNDcsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgMjM2LCAxMDYsIDIxNSwgMTM1LCA2MSwgMjQ1LCAyMTYsIDI0MywgMjIxLCA2MSwgMjQ1LCAKLSAgICAyMTYsIDI0MywgMjIyLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCAyNDUsIDIxNiwgMjQzLCAyMjIsIDMsIDg2LCAyMDgsIDI1NCwgCi0gICAgNjEsIDUxLCAzLCA5NiwgMjA4LCAyNTQsIDYxLCA1MSwgMywgODYsIDIwOCwgMjU0LCAxMywgNDksIDYxLCA1MSwgMTU1LCAKLSAgICAxMywgNTAsIDYxLCA1MSwgMTU1LCAxMywgNDksIDI1MCwgMjE4LCAxNTUsIDEzLCA1MCwgMjUwLCAyMTgsIDE1NSwgMTMsIAotICAgIDQ5LCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgMTMsIDQ5LCA2MSwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgMTMsIDUwLCA2MSwgMjA4LCAxMzMsIDIxMywgMzMsIDE1NSwgMTMsIDQ5LCAyMzksIDIxNCwgMjE5LCAKLSAgICA3NiwgMTMsIDUwLCAyMzksIDIxNCwgMjE5LCA3NiwgMTc3LCAyMTcsIDU4LCA0NywgMTgzLCAyMTcsIDU4LCA0NywgMjUwLCAKLSAgICAxOTQsIDIzOCwgMjI2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjM4LCAyMjYsIDI0NiwgNjIsIDQ3LCA1MCwgNTMsIDMsIAotICAgIDQzLCAyMTgsIDc2LCAxNjMsIDk2LCA0NywgMTYzLCA4NiwgNDcsIDE2MywgNDksIDUwLCA0NywgMTYzLCA5NiwgNTIsIDQ3LCAKLSAgICAxNjMsIDg2LCA1MiwgNDcsIDE2MywgNDksIDUwLCA1MiwgNDcsIDE2MywgOTYsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIAotICAgIDg2LCA1MywgMjM5LCAxMjAsIDE0MiwgMTYzLCA5NiwgNTIsIDUzLCAyMzksIDEyMCwgMTQyLCAxNjMsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE2MywgODYsIDIxMSwgMTcxLCA0NywgNTgsIDU5LCAyNDgsIDM2LCA1OCwgNTksIDI0MywgODIsIAotICAgIDU4LCA1OSwgMjQyLCAyMTAsIDU4LCA1OSwgMjQzLCA4MSwgNTgsIDU5LCAyNDIsIDE0NiwgNTgsIDU5LCAyNDMsIDE3LCA1OCwgCi0gICAgNTksIDI0MiwgMjA5LCA1OCwgNTksIDI0MywgODAsIDU4LCA1OSwgMjQyLCAxMTQsIDU4LCA1OSwgMjQyLCAyNDEsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzcsIDU4LCA1OSwgMjQzLCA0OCwgNTgsIDU5LCAyNDIsIDE0NSwgNTgsIDU5LCAyNDMsIDE2LCA1OCwgNTksIAotICAgIDI0MiwgMjA4LCA1OCwgNTksIDI0MywgNzksIDU4LCA1OSwgMjQyLCA5OCwgNTgsIDU5LCAyNDIsIDIyNSwgNTgsIDU5LCAKLSAgICAyNDIsIDE2MSwgNTgsIDU5LCAyNDMsIDMyLCA1OCwgNTksIDI0MiwgMTI5LCA1OCwgNTksIDI0MywgMCwgNTgsIDU5LCAyNDIsIAotICAgIDE5MiwgNTgsIDU5LCAyNDMsIDYzLCA1OCwgNTksIDI0MiwgMTEzLCA1OCwgNTksIDI0MiwgMjQwLCA1OCwgNTksIDI0MiwgCi0gICAgMTc2LCA1OCwgNTksIDI0MywgNDcsIDU4LCA1OSwgMjQyLCAxNDQsIDU4LCA1OSwgMjQzLCAxNSwgNTgsIDU5LCAyNDIsIAotICAgIDIwNywgNTgsIDU5LCAyNDMsIDc4LCA1OCwgNTksIDI0MiwgOTAsIDU4LCA1OSwgMjQyLCAyMTcsIDU4LCA1OSwgMjQyLCAKLSAgICAxNTMsIDU4LCA1OSwgMjQzLCAyNCwgNTgsIDU5LCAyNDIsIDEyMSwgNTgsIDU5LCAyNDIsIDI0OCwgNTgsIDU5LCAyNDIsIAotICAgIDE4NCwgNTgsIDU5LCAyNDMsIDU1LCA1OCwgNTksIDI0MiwgMTA1LCA1OCwgNTksIDI0MiwgMjMyLCA1OCwgNTksIDI0MiwgCi0gICAgMTY4LCA1OCwgNTksIDI0MywgMzksIDU4LCA1OSwgMjQyLCAxMzYsIDU4LCA1OSwgMjQzLCA3LCA1OCwgNTksIDI0MiwgMTk5LCAKLSAgICA1OCwgNTksIDI0MywgNzAsIDU4LCA1OSwgMjQyLCA5NywgNTgsIDU5LCAyNDIsIDIyNCwgNTgsIDU5LCAyNDIsIDE2MCwgNTgsIAotICAgIDU5LCAyNDMsIDMxLCA1OCwgNTksIDI0MiwgMTI4LCA1OCwgNTksIDI0MiwgMjU1LCA1OCwgNTksIDI0MiwgMTkxLCA1OCwgCi0gICAgNTksIDI0MywgNjIsIDU4LCA1OSwgMjQyLCAxMTIsIDU4LCA1OSwgMjQyLCAyMzksIDU4LCA1OSwgMjQyLCAxNzUsIDU4LCAKLSAgICA1OSwgMjQzLCA0NiwgNTgsIDU5LCAyNDIsIDE0MywgNTgsIDU5LCAyNDMsIDE0LCA1OCwgNTksIDI0MiwgMjA2LCA1OCwgNTksIAotICAgIDI0MywgNzcsIDU4LCA1OSwgMjQyLCA4NiwgNTgsIDU5LCAyNDIsIDIxMywgNTgsIDU5LCAyNDIsIDE0OSwgNTgsIDU5LCAKLSAgICAyNDMsIDIwLCA1OCwgNTksIDI0MiwgMTE3LCA1OCwgNTksIDI0MiwgMjQ0LCA1OCwgNTksIDI0MiwgMTgwLCA1OCwgNTksIAotICAgIDI0MywgNTEsIDU4LCA1OSwgMjQyLCAxMDEsIDU4LCA1OSwgMjQyLCAyMjgsIDU4LCA1OSwgMjQyLCAxNjQsIDU4LCA1OSwgCi0gICAgMjQzLCAzNSwgNTgsIDU5LCAyNDIsIDEzMiwgNTgsIDU5LCAyNDMsIDMsIDU4LCA1OSwgMjQyLCAxOTUsIDU4LCA1OSwgMjQzLCAKLSAgICA2NiwgNTgsIDU5LCAyNDIsIDkzLCA1OCwgNTksIDI0MiwgMjIwLCA1OCwgNTksIDI0MiwgMTU2LCA1OCwgNTksIDI0MywgMjcsIAotICAgIDU4LCA1OSwgMjQyLCAxMjQsIDU4LCA1OSwgMjQyLCAyNTEsIDU4LCA1OSwgMjQyLCAxODcsIDU4LCA1OSwgMjQzLCA1OCwgCi0gICAgNTgsIDU5LCAyNDIsIDEwOCwgNTgsIDU5LCAyNDIsIDIzNSwgNTgsIDU5LCAyNDIsIDE3MSwgNTgsIDU5LCAyNDMsIDQyLCAKLSAgICA1OCwgNTksIDI0MiwgMTM5LCA1OCwgNTksIDI0MywgMTAsIDU4LCA1OSwgMjQyLCAyMDIsIDU4LCA1OSwgMjQzLCA3MywgNTgsIAotICAgIDU5LCAyNDIsIDg5LCA1OCwgNTksIDI0MiwgMjE2LCA1OCwgNTksIDI0MiwgMTUyLCA1OCwgNTksIDI0MywgMjMsIDU4LCA1OSwgCi0gICAgMjQyLCAxMjAsIDU4LCA1OSwgMjQyLCAyNDcsIDU4LCA1OSwgMjQyLCAxODMsIDU4LCA1OSwgMjQzLCA1NCwgNTgsIDU5LCAKLSAgICAyNDIsIDEwNCwgNTgsIDU5LCAyNDIsIDIzMSwgNTgsIDU5LCAyNDIsIDE2NywgNTgsIDU5LCAyNDMsIDM4LCA1OCwgNTksIAotICAgIDI0MiwgMTM1LCA1OCwgNTksIDI0MywgNiwgNTgsIDU5LCAyNDIsIDE5OCwgNTgsIDU5LCAyNDMsIDY5LCA1OCwgNTksIDI0MiwgCi0gICAgOTYsIDU4LCA1OSwgMjQyLCAyMjMsIDU4LCA1OSwgMjQyLCAxNTksIDU4LCA1OSwgMjQzLCAzMCwgNTgsIDU5LCAyNDIsIAotICAgIDEyNywgNTgsIDU5LCAyNDIsIDI1NCwgNTgsIDU5LCAyNDIsIDE5MCwgNTgsIDU5LCAyNDMsIDYxLCA1OCwgNTksIDI0MiwgCi0gICAgMTExLCA1OCwgNTksIDI0MiwgMjM4LCA1OCwgNTksIDI0MiwgMTc0LCA1OCwgNTksIDI0MywgNDUsIDU4LCA1OSwgMjQyLCAKLSAgICAxNDIsIDU4LCA1OSwgMjQzLCAxMywgNTgsIDU5LCAyNDIsIDIwNSwgNTgsIDU5LCAyNDMsIDc2LCA1OCwgNTksIDI0MiwgODQsIAotICAgIDU4LCA1OSwgMjQyLCAyMTEsIDU4LCA1OSwgMjQyLCAxNDcsIDU4LCA1OSwgMjQzLCAxOCwgNTgsIDU5LCAyNDIsIDExNSwgCi0gICAgNTgsIDU5LCAyNDIsIDI0MiwgNTgsIDU5LCAyNDIsIDE3OCwgNTgsIDU5LCAyNDMsIDQ5LCA1OCwgNTksIDI0MiwgOTksIDU4LCAKLSAgICA1OSwgMjQyLCAyMjYsIDU4LCA1OSwgMjQyLCAxNjIsIDU4LCA1OSwgMjQzLCAzMywgNTgsIDU5LCAyNDIsIDEzMCwgNTgsIAotICAgIDU5LCAyNDMsIDEsIDU4LCA1OSwgMjQyLCAxOTMsIDU4LCA1OSwgMjQzLCA2NCwgNTgsIDU5LCAyNDIsIDkxLCA1OCwgNTksIAotICAgIDI0MiwgMjE4LCA1OCwgNTksIDI0MiwgMTU0LCA1OCwgNTksIDI0MywgMjUsIDU4LCA1OSwgMjQyLCAxMjIsIDU4LCA1OSwgCi0gICAgMjQyLCAyNDksIDU4LCA1OSwgMjQyLCAxODUsIDU4LCA1OSwgMjQzLCA1NiwgNTgsIDU5LCAyNDIsIDEwNiwgNTgsIDU5LCAKLSAgICAyNDIsIDIzMywgNTgsIDU5LCAyNDIsIDE2OSwgNTgsIDU5LCAyNDMsIDQwLCA1OCwgNTksIDI0MiwgMTM3LCA1OCwgNTksIAotICAgIDI0MywgOCwgNTgsIDU5LCAyNDIsIDIwMCwgNTgsIDU5LCAyNDMsIDcxLCA1OCwgNTksIDI0MiwgODcsIDU4LCA1OSwgMjQyLCAKLSAgICAyMTQsIDU4LCA1OSwgMjQyLCAxNTAsIDU4LCA1OSwgMjQzLCAyMSwgNTgsIDU5LCAyNDIsIDExOCwgNTgsIDU5LCAyNDIsIAotICAgIDI0NSwgNTgsIDU5LCAyNDIsIDE4MSwgNTgsIDU5LCAyNDMsIDUyLCA1OCwgNTksIDI0MiwgMTAyLCA1OCwgNTksIDI0MiwgCi0gICAgMjI5LCA1OCwgNTksIDI0MiwgMTY1LCA1OCwgNTksIDI0MywgMzYsIDU4LCA1OSwgMjQyLCAxMzMsIDU4LCA1OSwgMjQzLCA0LCAKLSAgICA1OCwgNTksIDI0MiwgMTk2LCA1OCwgNTksIDI0MywgNjcsIDU4LCA1OSwgMjQyLCA5NCwgNTgsIDU5LCAyNDIsIDIyMSwgNTgsIAotICAgIDU5LCAyNDIsIDE1NywgNTgsIDU5LCAyNDMsIDI4LCA1OCwgNTksIDI0MiwgMTI1LCA1OCwgNTksIDI0MiwgMjUyLCA1OCwgCi0gICAgNTksIDI0MiwgMTg4LCA1OCwgNTksIDI0MywgNTksIDU4LCA1OSwgMjQyLCAxMDksIDU4LCA1OSwgMjQyLCAyMzYsIDU4LCAKLSAgICA1OSwgMjQyLCAxNzIsIDU4LCA1OSwgMjQzLCA0MywgNTgsIDU5LCAyNDIsIDE0MCwgNTgsIDU5LCAyNDMsIDExLCA1OCwgNTksIAotICAgIDI0MiwgMjAzLCA1OCwgNTksIDI0MywgNzQsIDU4LCA1OSwgMjQyLCA4NSwgNTgsIDU5LCAyNDIsIDIxMiwgNTgsIDU5LCAKLSAgICAyNDIsIDE0OCwgNTgsIDU5LCAyNDMsIDE5LCA1OCwgNTksIDI0MiwgMTE2LCA1OCwgNTksIDI0MiwgMjQzLCA1OCwgNTksIAotICAgIDI0MiwgMTc5LCA1OCwgNTksIDI0MywgNTAsIDU4LCA1OSwgMjQyLCAxMDAsIDU4LCA1OSwgMjQyLCAyMjcsIDU4LCA1OSwgCi0gICAgMjQyLCAxNjMsIDU4LCA1OSwgMjQzLCAzNCwgNTgsIDU5LCAyNDIsIDEzMSwgNTgsIDU5LCAyNDMsIDIsIDU4LCA1OSwgMjQyLCAKLSAgICAxOTQsIDU4LCA1OSwgMjQzLCA2NSwgNTgsIDU5LCAyNDIsIDkyLCA1OCwgNTksIDI0MiwgMjE5LCA1OCwgNTksIDI0MiwgCi0gICAgMTU1LCA1OCwgNTksIDI0MywgMjYsIDU4LCA1OSwgMjQyLCAxMjMsIDU4LCA1OSwgMjQyLCAyNTAsIDU4LCA1OSwgMjQyLCAKLSAgICAxODYsIDU4LCA1OSwgMjQzLCA1NywgNTgsIDU5LCAyNDIsIDEwNywgNTgsIDU5LCAyNDIsIDIzNCwgNTgsIDU5LCAyNDIsIAotICAgIDE3MCwgNTgsIDU5LCAyNDMsIDQxLCA1OCwgNTksIDI0MiwgMTM4LCA1OCwgNTksIDI0MywgOSwgNTgsIDU5LCAyNDIsIDIwMSwgCi0gICAgNTgsIDU5LCAyNDMsIDcyLCA1OCwgNTksIDI0MiwgODgsIDU4LCA1OSwgMjQyLCAyMTUsIDU4LCA1OSwgMjQyLCAxNTEsIDU4LCAKLSAgICA1OSwgMjQzLCAyMiwgNTgsIDU5LCAyNDIsIDExOSwgNTgsIDU5LCAyNDIsIDI0NiwgNTgsIDU5LCAyNDIsIDE4MiwgNTgsIAotICAgIDU5LCAyNDMsIDUzLCA1OCwgNTksIDI0MiwgMTAzLCA1OCwgNTksIDI0MiwgMjMwLCA1OCwgNTksIDI0MiwgMTY2LCA1OCwgCi0gICAgNTksIDI0MywgMzcsIDU4LCA1OSwgMjQyLCAxMzQsIDU4LCA1OSwgMjQzLCA1LCA1OCwgNTksIDI0MiwgMTk3LCA1OCwgNTksIAotICAgIDI0MywgNjgsIDU4LCA1OSwgMjQyLCA5NSwgNTgsIDU5LCAyNDIsIDIyMiwgNTgsIDU5LCAyNDIsIDE1OCwgNTgsIDU5LCAKLSAgICAyNDMsIDI5LCA1OCwgNTksIDI0MiwgMTI2LCA1OCwgNTksIDI0MiwgMjUzLCA1OCwgNTksIDI0MiwgMTg5LCA1OCwgNTksIAotICAgIDI0MywgNjAsIDU4LCA1OSwgMjQyLCAxMTAsIDU4LCA1OSwgMjQyLCAyMzcsIDU4LCA1OSwgMjQyLCAxNzMsIDU4LCA1OSwgCi0gICAgMjQzLCA0NCwgNTgsIDU5LCAyNDIsIDE0MSwgNTgsIDU5LCAyNDMsIDEyLCA1OCwgNTksIDI0MiwgMjA0LCA1OCwgNTksIAotICAgIDI0MywgNzUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgNTIsIDgwLCA5NSwgCi0gICAgOTYsIDUyLCA1MywgMywgODAsIDk1LCA4NiwgNTIsIDUzLCAzLCA4MCwgOTUsIDQ5LCA1MCwgNTIsIDUzLCAzLCA4MCwgOTUsIAotICAgIDg2LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAxNDIsIDk2LCA1MiwgNTMsIDIzOSwgMTIwLCAxNDIsIDg2LCA1MiwgNTMsIAotICAgIDIzOSwgMTIwLCAxNDIsIDE4MywgNTMsIDMsIDIzNiwgMTA2LCA5NSwgMTc3LCA1MywgMywgMjM2LCAxMDYsIDk1LCAxNzcsIAotICAgIDIwOCwgNzAsIDQ3LCAxODMsIDIwOCwgNzAsIDQ3LCA5NiwgNTIsIDI0NCwgMTQ1LCA0NywgODYsIDUyLCAyNDQsIDE0NSwgCi0gICAgNDcsIDk2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDgsIDcwLCAyNDQsIDE0NSwgNDcsIDg2LCAyMDcsIDEzNCwgCi0gICAgMjA4LCA3MCwgMjQ0LCAxNDUsIDQ3LCA4NiwgNTMsIDMsIDI0MiwgODMsIDIxMSwgNzcsIDE3NywgNTMsIDIwOCwgMTczLCAKLSAgICAxNDIsIDE4MywgNTMsIDIwOCwgMTczLCAxNDIsIDg2LCA1MywgMywgMjA5LCAyNDksIDMsIDgwLCA5NSwgODYsIDUzLCAzLCAKLSAgICAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgODYsIDIwNywgMTM0LCA1MywgMywgMjA5LCAyNDgsIDg2LCAyMDcsIDEzNCwgNTMsIAotICAgIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDg2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA1MiwgODAsIDk1LCA5NiwgCi0gICAgMjUwLCA5NiwgODYsIDI1MCwgOTYsIDk2LCA1MiwgMjUwLCA5NiwgODYsIDUyLCAyNTAsIDk2LCA5NiwgNTMsIDIwOCwgMTczLCAKLSAgICA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjA4LCAxNzMsIDYyLCAyNDMsIDIyMSwgOTYsIDUzLCAyMzksIDEyMCwgMjQ4LCAyMzEsIAotICAgIDIwOCwgMTczLCA2MiwgMjQzLCAyMjEsIDg2LCA1MywgMjM5LCAxMjAsIDI0OCwgMjMxLCAyMDgsIDE3MywgNjIsIDI0MywgCi0gICAgMjIxLCAxNTMsIDIwNCwgNDYsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCAyNSwgMjExLCAKLSAgICAyMzgsIDIwNCwgNDYsIDQ3LCAxNTMsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjQxLCAxNzYsIDUzLCAzLCAxMTMsIAotICAgIDIxMSwgMjM4LCAyNDEsIDE3NiwgNTMsIDMsIDExMywgMjExLCAyMzgsIDIwNCwgNDYsIDUzLCAzLCAxMTMsIDE1MywgMjA0LCAKLSAgICA0NiwgNTMsIDI1LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI1LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDUzLCAyNSwgMjExLCAyMzgsIDIwNCwgNDYsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgCi0gICAgNTMsIDI1LCAxNTMsIDIwNCwgNDYsIDQ3LCAyMTUsIDI0NSwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyNDAsIDg0LCAyNDMsIAotICAgIDIyNywgMjQwLCA4NCwgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTUsIDI0NSwgMjQzLCAyMjcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgCi0gICAgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMTUzLCAyNDEsIDE3NiwgNTMsIDI0NSwgMTI0LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDQ3LCAyNDAsIDg0LCAyNDMsIDIyOCwgMjQ1LCAxMjQsIDE1MywgMjQxLCAxNzYsIDQ3LCAyMTUsIDI0NSwgCi0gICAgMjQzLCAyMjgsIDI0NSwgMTI0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDQ3LCAxNTMsIDI0MSwgMTc2LCA1MywgMjQ1LCAxMjQsIAotICAgIDE1MywgMjA0LCA0NiwgNDcsIDE1MywgMjA0LCA0NiwgNTMsIDI0NSwgMTI0LCAxNTMsIDI0MSwgMTc2LCA0NywgMjA0LCA3NiwgCi0gICAgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMTYsIDE2LCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDIwNiwgCi0gICAgMjEyLCA1MywgMjE4LCA1OSwgODYsIDIwOSwgODQsIDI0NSwgODQsIDI0MiwgNjgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgCi0gICAgODQsIDI0NSwgODQsIDIyNywgMjEyLCA1MywgMjE4LCA1OSwgMTgzLCAyMDksIDg0LCAyNDUsIDg0LCAyMTYsIDUsIDIxNiwgCi0gICAgOCwgMjUwLCAxMjksIDI0NiwgMTgsIDQ3LCAyMjcsIDIxNSwgMjUwLCAxMjksIDI1MCwgMTk0LCA0NywgMjA4LCAxNDUsIAotICAgIDI1MCwgMTI5LCAyNTAsIDE5NCwgNDcsIDI0NywgMjQ4LCAyNTAsIDEyOSwgMjUwLCAxOTQsIDQ3LCAyMDgsIDE0NSwgMjUwLCAKLSAgICAxMjksIDI0NiwgMTgsIDUzLCAzLCAyMjQsIDEwMiwgMjA4LCAxNDUsIDI1MCwgMTI5LCAyNTAsIDE5NCwgNTMsIDMsIDIxOCwgCi0gICAgNzYsIDIyNiwgMjUxLCA1MCwgMjEzLCAxNDUsIDI0NiwgMTgsIDQ3LCAyMjYsIDI1MSwgNDksIDIxMywgMTQ1LCAyNTAsIAotICAgIDE5NCwgNDcsIDI1MCwgMTk0LCAyNDYsIDE2LCAyNDYsIDYyLCA0NywgMjQ2LCAxOCwgMjQ2LCAxNiwgMjQ2LCA2MiwgNDcsIAotICAgIDg2LCA1MywgODcsIDIxMiwgMjI4LCA5NiwgNDcsIDk2LCA1MywgODcsIDIxMiwgMjI4LCA4NiwgNDcsIDIxMiwgMjI4LCA4NiwgCi0gICAgNTMsIDg3LCA5NiwgNDcsIDg2LCA1MywgMywgOTEsIDU2LCA5NiwgNTMsIDMsIDkxLCA1NiwgODYsIDUzLCAyMDksIDI1LCAKLSAgICAyMDMsIDE5NiwgNDksIDUwLCA1MywgMjA5LCAyNSwgNSwgMjQ2LCA2MSwgMTc3LCAyMDcsIDEzNCwgNTMsIDIzOSwgMTIwLCAKLSAgICA1LCAyNDYsIDYxLCA0OSwgMTUwLCAxMTIsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgNDksIDE1MCwgMTIxLCA1MCwgMTUwLCAKLSAgICAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAxNTAsIDQ5LCAyMzcsIDg2LCAxMTIsIDE1MCwgNDksIDEyMSwgCi0gICAgMTUwLCA1MCwgMjM3LCA4NiwgNDksIDE1MCwgMTEyLCA1MCwgMTUwLCAxMTIsIDIzNywgODYsIDExMiwgMTUwLCA1MCwgMTIxLCAKLSAgICAxNTAsIDUwLCAyMzcsIDg2LCA0OSwgMTUwLCAxMjEsIDUwLCAxNTAsIDEyMSwgMjM3LCA4NiwgMTEyLCAxNTAsIDQ5LCAxMjEsIAotICAgIDE1MCwgNDksIDIzNywgODYsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjA4LCAxNzMsIDE0MiwgODYsIDIzNywgODcsIAotICAgIDMsIDE1MCwgMTEyLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIwOCwgMTczLCAxNDIsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA1MCwgMjA4LCAxNzMsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAyMDgsIDE3MywgCi0gICAgMTQyLCA4NiwgMjM3LCA4NywgMywgMTUwLCAxMjEsIDIwOCwgMTczLCAxNDIsIDE3NywgMjM3LCA4NywgMywgMTUwLCA0OSwgCi0gICAgMjA4LCAxNzMsIDE0MiwgMTgzLCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyMDgsIDE3MywgMTQyLCA5NiwgMjM3LCA4NywgMywgCi0gICAgMTUwLCAxMTIsIDIzOSwgMTIwLCAxNDIsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgMjM5LCAxMjAsIDE0MiwgMTc3LCAKLSAgICAyMzcsIDg3LCAzLCAxNTAsIDUwLCAyMzksIDEyMCwgMTQyLCAxODMsIDIzNywgODcsIDMsIDE1MCwgNTAsIDIzOSwgMTIwLCAKLSAgICAxNDIsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjM5LCAxMjAsIDE0MiwgODYsIDIzNywgODcsIDMsIDE1MCwgMTIxLCAKLSAgICAyMzksIDEyMCwgMTQyLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgNDksIDIzOSwgMTIwLCAxNDIsIDE4MywgMjM3LCA4NywgMywgCi0gICAgMTUwLCA0OSwgMjM5LCAxMjAsIDE0MiwgOTYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIDIzNywgODcsIDMsIAotICAgIDE1MCwgMjQyLCA3MCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIDQ5LCAyNDgsIDExMCwgMTc3LCAyMzcsIDg3LCAzLCAxNTAsIAotICAgIDIxNiwgMTYsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDI0MiwgNzAsIDE4MywgCi0gICAgMjM3LCA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCA5NiwgMjM3LCAKLSAgICA4NywgMywgMTUwLCAxMTIsIDg3LCA4NiwgMjM3LCA4NywgMywgMTUwLCAyMDYsIDIyNCwgOTYsIDIzNywgODcsIDMsIDE1MCwgCi0gICAgMTIxLCA4NywgODYsIDIzNywgODcsIDMsIDE1MCwgMjQyLCA3MCwgODYsIDIzNywgODcsIDMsIDE1MCwgMTEyLCA4NywgOTYsIAotICAgIDIzNywgODcsIDMsIDE1MCwgMjA2LCAyMjQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgODcsIDk2LCAyMzcsIDg3LCAzLCAKLSAgICAxNTAsIDI0MiwgNzAsIDk2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgMjQ0LCAxNDQsIDk2LCAyMzcsIDg3LCAKLSAgICAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDExMiwgODcsIDE2MywgCi0gICAgMjQ0LCAxNDQsIDg2LCAyMzcsIDg3LCAzLCAxNTAsIDEyMSwgMjQ4LCAxMjYsIDE2MywgMjQ0LCAxNDQsIDE3NywgMjM3LCAKLSAgICA4NywgMywgMTUwLCA0OSwgMjQ4LCAxMTAsIDE4MywgMjM3LCA4NywgMywgMTUwLCAyMTYsIDE2LCAxODMsIDIzNywgODcsIDMsIAotICAgIDE1MCwgNDksIDI0OCwgMTEwLCAxNzcsIDIzNywgODcsIDMsIDE1MCwgMjE2LCAxNiwgNTAsIDUyLCA1MywgMywgMjE1LCAKLSAgICAxODksIDIzNywgNjQsIDI0MSwgMzUsIDIsIDg3LCA4NiwgNDcsIDIwOCwgMjI4LCAyMTksIDI1NSwgODcsIDg2LCA0NywgOTYsIAotICAgIDUzLCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCA4NiwgNTMsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDg2LCA1MywgODcsIAotICAgIDI1MSwgNywgMTU2LCAxMzUsIDIyNywgMTc5LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDIwOSwgMjUsIDIyNywgMTc4LCAyMzcsIAotICAgIDI0NywgODcsIDg2LCA0NywgMjEwLCAyNDUsIDg3LCA4NiwgNDcsIDk2LCA1MywgMjA5LCAyNSwgMjEwLCAyNDQsIDIxMCwgCi0gICAgMTk4LCA4NywgOTYsIDQ3LCA0OSwgMjM5LCAyNDQsIDIwOSwgMjQ4LCA1MCwgMjM5LCAyNDQsIDIwOSwgMjQ4LCAxMTIsIAotICAgIDIzOSwgMjQ0LCAyMDksIDI0OCwgMTIxLCAyMzksIDI0NCwgMjA5LCAyNDgsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ0LCAKLSAgICA0MywgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTEsIDE4OCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMDcsIDEyMSwgMjQ1LCAyNDIsIAotICAgIDQ5LCA2MSwgMjQ1LCA5MywgMTU1LCA1MCwgNjEsIDI0NSwgOTMsIDE1NSwgNDksIDYxLCAyMTksIDc2LCA1MCwgNjEsIDIxOSwgCi0gICAgNzYsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNDksIDIzMSwgNjUsIDE1NSwgMjAyLCAxNjAsIDIyMSwgMTY0LCA1MCwgMjMxLCAKLSAgICA2NSwgMTU1LCAyMDIsIDE2MCwgMjIxLCAxNjQsIDQ5LCAyNDgsIDY1LCAxNTUsIDIwMiwgMTYwLCAyMjEsIDE2NCwgNTAsIAotICAgIDI0OCwgNjUsIDE1NSwgNDksIDUxLCAyNDcsIDIyNywgMywgMjA2LCAyNDYsIDUwLCA1MSwgMjQ3LCAyMjcsIDMsIDIwNiwgCi0gICAgMjQ2LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA1MCwgNTEsIAotICAgIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA0OSwgNTEsIDI0NywgMjI3LCAzLCAKLSAgICAyMDgsIDI1NSwgMjMxLCA1MCwgMjQ3LCAyNDgsIDI0NSwgMTY1LCA1MCwgNTEsIDI0NywgMjI3LCAzLCAyMDgsIDI1NSwgCi0gICAgMjMxLCA1MCwgMjA4LCAxNDUsIDI0NSwgMTY1LCA0OSwgMjUwLCAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA1MCwgMjUwLCAKLSAgICAyMTgsIDI0NywgMjI3LCAzLCAyNDMsIDg1LCA0OSwgMjUwLCAxMjksIDIyNywgMTc5LCAxNTUsIDUwLCAyNTAsIDEyOSwgCi0gICAgMjM3LCAyNDcsIDE1NSwgNTIsIDQ5LCAyNTAsIDEyOSwgMjM3LCAyNDcsIDE1NSwgNTIsIDUwLCAyNTAsIDEyOSwgMjI3LCAKLSAgICAxNzksIDE1NSwgNDksIDYyLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgNjIsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIAotICAgIDI0MiwgODMsIDI0MCwgNDAsIDgwLCAyMDIsIDMwLCAyMjcsIDExNCwgMjI1LCAxNywgMjUwLCAyMTgsIDIyMCwgMSwgMjI3LCAKLSAgICAyMjIsIDUwLCAyNTAsIDIxOCwgMjA2LCA2OSwgMywgMjExLCAxNzcsIDIyNSwgMTcsIDUwLCAyNTAsIDIxOCwgMywgMjQzLCAKLSAgICA4NSwgMjUwLCAyMTgsIDMsIDIxNSwgOTQsIDIzMSwgNiwgMjUxLCAxMjYsIDI1MCwgMjE3LCAyMTEsIDIwOCwgMjUwLCAyMTgsIAotICAgIDIyMCwgMSwgMjI3LCAyMjIsIDIxMSwgMjA4LCAyNTAsIDIxOCwgMjIwLCAxLCAyMDYsIDIyNCwgMjA3LCAxNzQsIDI1MCwgCi0gICAgMjE3LCAyMTYsIDczLCAyNTAsIDIxNywgMjUwLCAyMTgsIDMsIDIwNiwgMjQ2LCAyMTYsIDczLCAyNTAsIDIxOCwgMywgMjA2LCAKLSAgICAyNDYsIDIyMCwgODksIDI1MCwgMjE4LCAyMjAsIDEsIDIwNiwgMjI0LCAyMjAsIDg5LCAyNTAsIDIxOCwgMjIwLCAxLCAyNDIsIAotICAgIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIAotICAgIDExMiwgMjUsIDIxNiwgMTYsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCAKLSAgICA1MywgMjE4LCA1OSwgMTEyLCAyNSwgMjI3LCAyMjIsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIAotICAgIDgxLCAyMzEsIDUwLCA1MywgMjE4LCA1OSwgMTIxLCAyNSwgMjE2LCAxNiwgMjI1LCAxNywgMjUwLCAyMTgsIDMsIDE3MSwgCi0gICAgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCAxMjEsIDI1LCAyMjcsIDIyMiwgMjI1LCAxNywgMjUwLCAKLSAgICAyMTgsIDMsIDE3MSwgMjUwLCAxMDcsIDI0MSwgODEsIDIzMSwgNTAsIDUzLCAyMTgsIDU5LCA1MCwgMjUsIDIwNiwgMjI0LCAKLSAgICAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAKLSAgICAyNSwgMjA2LCAyMjQsIDIyNSwgMTcsIDI1MCwgMjE4LCAzLCAxNzEsIDI1MCwgMTA3LCAyNDEsIDgxLCAyMzEsIDUwLCA1MywgCi0gICAgMjE4LCA1OSwgNTAsIDI1LCAyNDIsIDcwLCAyMjUsIDE3LCAyNTAsIDIxOCwgMywgMTcxLCAyNTAsIDEwNywgMjQxLCA4MSwgCi0gICAgMjMxLCA1MCwgNTMsIDIxOCwgNTksIDQ5LCAyNSwgMjQyLCA3MCwgMjE2LCA3MywgMjQxLCA5NCwgMjEzLCAxMTcsIDI0MSwgCi0gICAgOTQsIDIxMywgMTE4LCAzLCAyMTksIDIwMywgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDUsIDI0NiwgNjIsIDU1LCAyNDEsIDk0LCAKLSAgICAyMTMsIDExOCwgMywgNTAsIDUzLCA1NSwgMjQxLCA5NCwgMjEzLCAxMTgsIDMsIDQ5LCA1MywgNTUsIDI0NiwgNjIsIDMsIAotICAgIDIzNiwgMTA2LCAxNDIsIDQzLCA4MCwgMTQyLCA0MywgMjE5LCA4MSwgNDMsIDIxNiwgNzQsIDIxMiwgMCwgNDMsIDIxOCwgCi0gICAgMjMzLCAyNDYsIDYyLCAyNDMsIDE0MiwgMjQ3LCAxMzcsIDIzNiwgMTA2LCAyNDgsIDIzMSwgMjUsIDIwOCwgMTQ1LCAxNjIsIAotICAgIDI0MywgMTQyLCAyNDcsIDEzNywgODAsIDE0MiwgMjQ2LCA2MiwgMywgMjEwLCAyMDAsIDIwMywgMTk2LCA0MywgMjUwLCAKLSAgICAxOTIsIDI0MywgMTM3LCA1NCwgMTEyLCA1MywgMjA5LCAyNSwgMjQ2LCA2MSwgNDMsIDYxLCAyNDcsIDE3NywgNDMsIDI0NywgCi0gICAgMTc3LCA0MywgMjI3LCAxNzgsIDQzLCAyMzcsIDI0NiwgMjQ2LCA2MiwgMywgNSwgMjQ2LCA2MiwgMjA4LCAxNzMsIDIwOSwgCi0gICAgOTMsIDIxNiwgMTYsIDI0NiwgNjIsIDMsIDEyMCwgMjM2LCAxMDYsIDIxMSwgMjAsIDIwOCwgMTczLCAyMDksIDkzLCAyMTYsIAotICAgIDE2LCAxMDMsIDIxNSwgMjQ1LCAyNDMsIDIyOCwgMjEyLCA1NywgMTAzLCAyNDAsIDg0LCAyNDMsIDIyOCwgMjEyLCA1NywgCi0gICAgMTAzLCAyNTAsIDU5LCAxMDMsIDUsIDI0NiwgNjEsIDEwMywgMjExLCAxNzcsIDEyMCwgMjMwLCA5OCwgMjExLCAxNzUsIAotICAgIDIwOCwgODYsIDMsIDcwLCA1NSwgMjA4LCA4NiwgMywgMjA2LCAyNDYsIDIxNSwgOTQsIDIzMSwgNTAsIDIwOCwgODUsIDIwOCwgCi0gICAgODYsIDMsIDIxMywgMTI0LCAyNTAsIDUwLCAyNDcsIDI0NywgNTAsIDIwOCwgODYsIDg3LCA0OSwgMjA4LCA4NSwgNDksIAotICAgIDIwOCwgODYsIDI0OCwgMTEwLCA4MCwgMTQyLCA4MCwgMjQ4LCAyMzEsIDI0OCwgMTEwLCA1MCwgMjA4LCA4NSwgMjQ3LCAKLSAgICAyMzUsIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0NywgMjM1LCAzLCA1MCwgMTYyLCAyNDgsIDQzLCA2MiwgMjQ3LCAyMzQsIAotICAgIDIzLCAzLCA0OSwgMTYyLCAyNDgsIDQzLCAyMywgMywgNTAsIDE2MiwgMjQ4LCA0MywgNjEsIDIzNiwgNDAsIDYyLCAyMzYsIAotICAgIDQwLCA0OSwgMjA0LCAyMSwgMjQwLCA0MCwgNTAsIDIwNCwgMjEsIDI0MCwgNDAsIDQ5LCA1MiwgMjA0LCAyMSwgMjQwLCA0MCwgCi0gICAgNTAsIDUyLCAyMDQsIDIxLCAyNDAsIDQwLCAyMzEsIDQyLCAyMzEsIDI3LCAyMDgsIDI1MSwgMTE1LCAyMzEsIDI3LCAyMzEsIAotICAgIDI4LCAyMjIsIDIzNCwgMywgODAsIDE0MiwgMjQyLCA3NywgMjIzLCAyMjgsIDUxLCAzLCAyNDUsIDE4NywgMjE5LCAyMDgsIAotICAgIDIzMSwgMzksIDI1MCwgODEsIDIxMiwgMTkzLCAyMTcsIDIyNCwgMjQxLCAzNSwgMiwgMjUsIDIxMiwgNTksIDIxOSwgODEsIAotICAgIDI0MSwgMzUsIDIsIDI1LCAyMTIsIDU5LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgNTUsIDIzNSwgMTU0LCAyMDgsIDE3MywgCi0gICAgMjUsIDIxMiwgNTksIDIxOSwgODEsIDIzOCwgNDgsIDIxMSwgOTMsIDIwOSwgODEsIDI0MiwgNjksIDIwOCwgODYsIDMsIDQ5LCAKLSAgICAxNjIsIDI0OCwgNDMsIDI0MiwgNjksIDIwOCwgODYsIDMsIDUwLCAxNjIsIDI0OCwgNDMsIDYyLCAyNDMsIDIyMiwgMywgCi0gICAgMTIxLCA0NywgNjIsIDIyNiwgMjQ2LCA2MSwgMjQ2LCA2MiwgMywgMTIxLCA0NywgNjIsIDI0NiwgNjIsIDMsIDEyMSwgNDcsIAotICAgIDI0MSwgMjAsIDYxLCAyMTEsIDE3NywgMjQxLCAyMCwgNjIsIDIxMSwgMTc3LCAyNDEsIDIwLCA2MSwgMjQzLCAyMjEsIDI0MSwgCi0gICAgMjAsIDYyLCAyNDMsIDIyMSwgMjQxLCAyMCwgNjEsIDI0NiwgNjEsIDI0MSwgMjAsIDYyLCAyNDYsIDYxLCAyMTUsIDEzNCwgCi0gICAgMjE2LCA3NCwgMjEyLCAxLCAyMTksIDI1NCwgMjEyLCAxLCAzLCAyMTksIDIwMywgMjE2LCA3NCwgMjEyLCAxLCAzLCAyMzYsIAotICAgIDEwNiwgOTUsIDI0OCwgNzMsIDIxMiwgMCwgMjQ4LCA3MywgMjE2LCA3NCwgMjEyLCAwLCA1MiwgMjE4LCA3NiwgMjA4LCA3MCwgCi0gICAgMjE4LCA3NiwgMjI3LCAyMTcsIDI0NSwgODYsIDI1MCwgMjE4LCAxNTUsIDIxNiwgMTEsIDI0NSwgODYsIDI1MCwgMjE4LCAKLSAgICAxNTUsIDIwOCwgMjEyLCAyMjQsIDEwMCwgMjIzLCAxNjIsIDQzLCA3MCwgMjE5LCAyNTQsIDIyMywgMTYyLCA0MywgOTEsIAotICAgIDIxOSwgMjU0LCAyMjMsIDE2MiwgNDMsIDIzLCAyMTksIDI1NCwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgCi0gICAgMjQzLCA4NSwgMjIzLCAxNjIsIDIwNiwgMjM4LCAyMTksIDI1NSwgMywgMjE4LCA3NiwgMjIzLCAxNjIsIDUxLCAyMzAsIAotICAgIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCA1MSwgMjA2LCAyMzgsIDIxOSwgMjU0LCAxMjAsIDIyNywgMzcsIDI1LCAyMTksIAotICAgIDI1NCwgMTIwLCAyMjcsIDM3LCAyMTksIDI0NSwgMjE5LCAyNTQsIDIyMywgMTYyLCAyMywgMjE5LCAyNTQsIDIyNCwgNTgsIAotICAgIDEyMCwgMjEwLCAyMjAsIDIxMCwgMjE4LCAzLCAyMzEsIDIsIDIxNywgNTgsIDIzMSwgMywgMjE5LCAyNTQsIDIzOSwgMjUyLCAKLSAgICAyMTksIDcxLCAyMzEsIDIsIDIzMSwgMywgMywgNTIsIDk1LCAyMzEsIDMsIDI1MCwgMTUsIDMsIDIxMiwgNTcsIDI0NiwgNTQsIAotICAgIDIzOSwgOTksIDI1MCwgMTk0LCAyMzEsIDAsIDIyNywgMTE1LCAyMzEsIDEsIDMsIDIxNiwgMTQyLCAyMTksIDUyLCAyNTAsIAotICAgIDEwNCwgMjE4LCA1MywgMjI3LCAxMTUsIDIzMSwgMSwgMywgMjEzLCAxNDUsIDIxOSwgNTIsIDI1MCwgMTA0LCAyMTgsIDUzLCAKLSAgICAyMjcsIDExNSwgMjMxLCAxLCAyMjEsIDE2NiwgMjMxLCA0NCwgMjA5LCA5MywgMjE4LCA1MywgMjMxLCAzLCAyNTAsIDEwNCwgCi0gICAgMzQsIDIxOCwgNjMsIDIxOSwgMjU0LCAyMTcsIDUyLCAyMzEsIDMsIDIxOSwgMjU0LCAyMzEsIDMsIDMsIDk2LCA1MywgMywgCi0gICAgMTEzLCAyMzEsIDMsIDMsIDIzLCA1NCwgMjMxLCAzLCAzLCAyMzAsIDI0NCwgMjMxLCAzLCAzLCAyMDYsIDIzNywgMjMxLCAzLCAKLSAgICAzLCAyMTksIDIwMywgMjMxLCAzLCAzLCAyMDYsIDI0NiwgMjMwLCA5OSwgMjI4LCA4LCA0OSwgMjA4LCA4NiwgMjE5LCAyNTQsIAotICAgIDIwMiwgMTYwLCAyMjEsIDE2NCwgMjE0LCAxOTgsIDI0NSwgMjIzLCAyMDIsIDE2MCwgMjIxLCAxNjQsIDIxNCwgMTk4LCAKLSAgICAyMTgsIDExNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTQsIDE5OCwgMjE3LCAyMTksIDkxLCAyLCAzLCA1LCAyNDYsIDYyLCAKLSAgICA1NSwgOTEsIDIsIDMsIDI0NiwgNTMsIDI1MSwgMTM5LCA1NSwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NSwgOTEsIDIsIDMsIAotICAgIDcwLCA1NiwgOTEsIDIsIDMsIDIwOCwgMjI4LCA1NiwgOTEsIDIsIDMsIDIxMCwgMjQ2LCAxMDgsIDkxLCAyLCAzLCA2MiwgCi0gICAgMjA4LCA4NSwgMjI0LCAxMDMsIDIsIDMsIDI0NSwgMjM0LCA1NSwgMjI0LCAxMDMsIDIsIDMsIDcwLCA1NiwgMjI0LCAxMDMsIAotICAgIDIsIDMsIDI0MCwgODQsIDI0MywgODMsIDIyNCwgMTAzLCAyLCAzLCAyMTUsIDI0NSwgMjQzLCA4MywgOTEsIDIsIDIzMSwgCi0gICAgNTAsIDQ5LCAxNjIsIDI0NiwgNjEsIDkxLCAyLCAyMzEsIDUwLCA1MCwgMTYyLCAyNDYsIDYxLCAyMDYsIDU0LCAyMTksIAotICAgIDI0NSwgMjQ1LCAxMzEsIDIxNywgMjI0LCAyMjMsIDIyNCwgMiwgMywgNzAsIDU1LCAyMjMsIDIyNCwgMiwgMywgMjA2LCAKLSAgICAyNDYsIDIxMywgMTQyLCAyMTcsIDIyNSwgMywgMjQ3LCAyNDgsIDI0NiwgMTUsIDIxMiwgMzQsIDIxNywgMjI0LCAyMjMsIAotICAgIDIyNCwgMiwgMjMxLCA1MCwgNDksIDE2MiwgMjQ2LCA2MSwgMjIzLCAyMjQsIDIsIDIzMSwgNTAsIDUwLCAxNjIsIDI0NiwgCi0gICAgNjEsIDQzLCAyMjMsIDIyNCwgMiwgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDIyMywgMjI0LCAyLCAyMzEsIDUwLCA1MiwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0MywgMTM3LCA1NCwgOTEsIDIsIDIzMSwgNTAsIDIwOCwgODUsIDIyNCwgMTAzLCAyLCAyMzEsIDUwLCAyMDgsIAotICAgIDg1LCAyMjMsIDIyNCwgMiwgMjMxLCA1MCwgMjA4LCA4NSwgMjMwLCAyNTMsIDIxNywgMjI0LCAyMTYsIDYsIDIzMCwgMjUzLCAKLSAgICAyMTcsIDIyNCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDExNiwgMjQ1LCAyMjMsIDI1MCwgMjQ1LCAyMTksIDI0NSwgCi0gICAgMjQ1LCAxNzEsIDIzMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMDYsIDIzOCwgMywgMjI0LCAxMDMsIDU0LCAyMDYsIDIzOCwgMywgCi0gICAgMjE5LCAyMDMsIDIzMCwgMjQ1LCAzLCAyMTksIDIwMywgMjMwLCAyNDUsIDMsIDIyNywgMzcsIDI1MCwgMjI2LCAyMDYsIAotICAgIDIzOCwgMywgMjI3LCAzNywgMjE5LCAyNDQsIDIwNiwgMjM4LCA4NywgMjMwLCAyNDQsIDIzMCwgMjQ1LCA4NywgMjA2LCAKLSAgICAyMzcsIDIwNiwgMjM4LCA4NywgMjQ4LCAyMzEsIDg3LCAyMzAsIDI0NCwgMjMwLCAyNDUsIDg3LCAyNDgsIDIzMSwgODcsIAotICAgIDIwNiwgMjM3LCAyMDYsIDIzOCwgMjQ4LCAxMTAsIDI1LCAyMzAsIDk4LCAzLCAyMDYsIDIzNywgMjMwLCAyNDUsIDI0OCwgCi0gICAgMTEwLCAyNSwgMjMwLCA5OCwgMywgMjMwLCAyNDQsIDI0NiwgMTYsIDIwNiwgMjM4LCAzLCAyMTMsIDEyMywgMjQ2LCAxNiwgCi0gICAgMjMwLCAyNDUsIDMsIDIxMywgMTIzLCA1MiwgNTEsIDIzMCwgMjQ0LCA1MiwgNTEsIDIwNiwgMjM3LCAyNDYsIDE2LCAyMDYsIAotICAgIDIzOCwgMywgMjEzLCAxMjQsIDI1LCAyMTIsIDM0LCAyMTcsIDIyNCwgMjI3LCAzNywgMjUsIDMsIDcwLCA1NSwgMjI3LCAzNywgCi0gICAgMjE5LCAyNDUsIDMsIDcwLCA1NSwgNTIsIDIyNywgMzcsIDI1MCwgMjI2LCA1MiwgMjI3LCAzNywgMjE5LCAyNDQsIDEyMCwgCi0gICAgMjMwLCAyNDYsIDIyNywgMzcsIDI1MCwgMjI2LCAxMjAsIDIzMCwgMjQ2LCAyMjcsIDM3LCAyMTksIDI0NCwgMjEyLCA0MywgCi0gICAgMjI4LCA4LCAyMTksIDI0NCwgMjEyLCA0MywgMjI4LCA4LCAyNTAsIDIyNiwgMjI3LCAzNywgMjE5LCAyNDUsIDIxOSwgMjAwLCAKLSAgICAyMjcsIDM3LCAyNTAsIDIyNiwgMjI3LCAzNywgMjUsIDMsIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDEwMSwgMjExLCA3NywgMjI3LCAzNywgMjUsIDMsIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjE5LCAyNDUsIDMsIAotICAgIDIzNiwgMTA2LCAyNDQsIDE0NCwgMjI3LCAzNywgMjUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjUsIDMsIDIwNiwgCi0gICAgMjQ2LCAyMjcsIDM3LCAyNSwgMywgNTIsIDIwNiwgMjQ2LCA1LCAyMDYsIDUxLCAzLCAyMDYsIDI0NiwgMjI3LCAzNywgMjE5LCAKLSAgICAyNDUsIDMsIDUyLCAyMTksIDIwMywgMjI3LCAzNywgMjE5LCAyNDUsIDMsIDUyLCAyMDYsIDI0NiwgMjAyLCAxNjAsIDIyMSwgCi0gICAgMTY0LCAyNDMsIDk0LCAyNTAsIDE4NCwgMjAyLCAxNjAsIDIyMSwgMTY0LCAyMTYsIDE3OSwgMjUwLCAxODQsIDI0MSwgMzUsIAotICAgIDIsIDMsIDcwLCA1NiwgMjM1LCAxNTQsIDMsIDcwLCA1NSwgMjA4LCA3MCwgMjM2LCAxMDYsIDI0OCwgMjMxLCAzLCA1MiwgCi0gICAgODAsIDk1LCAyMDgsIDcwLCAyMzYsIDEwNiwgMjQ4LCAyMzEsIDMsIDIwOCwgNzAsIDgwLCA5NSwgMjA4LCAyMjgsIDIxOSwgCi0gICAgMjU1LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAyMTksIDI1NSwgMywgMjE1LCAyNDUsIDI0MywgODMsIDIxMiwgMTI5LCAyMjQsIAotICAgIDEwMywgMjEyLCAxMjgsIDI0NSwgMjEwLCAzLCA3MCwgNTUsIDI0MSwgMzUsIDMsIDI1MCwgNTksIDI1MSwgNywgMTU2LCAKLSAgICAyMDgsIDE3MywgMywgMjQ2LCA1MywgMjUxLCAxMzgsIDI1MCwgMTUxLCAxNTYsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjQxLCAKLSAgICAzNSwgMiwgODcsIDkxLCA1NCwgOTEsIDIsIDg3LCAyNDEsIDM1LCA1NCwgMjQxLCAzNSwgMiwgODcsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgNTIsIDI0NSwgMjQzLCAyNDEsIDM2LCAxMjAsIDI0NSwgMjAzLCAyNDEsIDM1LCAyMTIsIDE0MywgMTI2LCAyNDUsIAotICAgIDIwMywgMjQxLCAzNSwgMjEyLCAxNDMsIDI0MSwgMzUsIDIsIDMsIDEyMCwgMTg3LCA4NywgMjUsIDEyMCwgMTg3LCA1NiwgCi0gICAgMjQxLCAzMCwgMywgMjM5LCAxNDcsIDE4NywgNTUsIDIyNywgMTc5LCAzLCAyNDYsIDYyLCAyMzEsIDYsIDIzNywgMjQ3LCAzLCAKLSAgICAyNDYsIDYyLCAyMzEsIDYsIDIyNywgMTc5LCAzLCAyMTcsIDQ3LCAxMzEsIDU1LCAyMzcsIDI0NywgMywgMjE3LCA0NywgCi0gICAgMTMxLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDEzNSwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyMTIsIAotICAgIDU5LCAxNTYsIDEzNSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgMjMxLCA2LCAKLSAgICAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDMsIDcwLCAyMzEsIDYsIDIyNywgMTc5LCAyMTksIAotICAgIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMzcsIDI0NywgMjE5LCAyNDUsIDIxMiwgNTksIDE1NiwgCi0gICAgMjA4LCAxNzMsIDMsIDcwLCA1NSwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyMTIsIDU5LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgCi0gICAgODcsIDIxNiwgMTYsIDIzNywgMjQ3LCAyMTksIDI0NSwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDg3LCAyMjcsIAotICAgIDIyMiwgMjI3LCAxNzksIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjM3LCAyNDcsIDIxOSwgMjQ1LCAyNTAsIDE1MiwgMjI3LCAKLSAgICAxNzksIDI1LCAyMTIsIDExOCwgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMzcsIDI0NywgMjUsIDIxMiwgMTE4LCAyMjEsIDE2NiwgCi0gICAgMTU2LCAxMzUsIDIyNywgMTc5LCAyNSwgMjIxLCAxNjYsIDI1MCwgMTUyLCAyMzcsIDI0NywgMjUsIDIyMSwgMTY2LCAyNTAsIAotICAgIDE1MiwgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAxNTYsIDg3LCAyMzcsIDI0NiwgMjM3LCAyNDcsIDg3LCAyNDIsIDc2LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDI0MSwgMzYsIDIzNywgMjQ3LCAKLSAgICA4NywgMjEyLCAxMjksIDIxOSwgMjQ1LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDYsIAotICAgIDIzNywgMjQ3LCA4NywgMjEyLCAxMjksIDg3LCAyMjcsIDE3OCwgMjI3LCAxNzksIDg3LCAyMzcsIDI0NywgODcsIDI0MiwgCi0gICAgNzYsIDI0MSwgMzYsIDIzNywgMjQ3LCA4NywgMjI3LCAxNzksIDg3LCAyNDIsIDc2LCAyNDEsIDM2LCAyMjcsIDE3OSwgODcsIAotICAgIDIxMiwgNTksIDE1NiwgODcsIDIzNywgMjQ3LCA4NywgMjEyLCA1OSwgMjQxLCAzNiwgMjM3LCAyNDcsIDg3LCAyMTIsIDU5LCAKLSAgICAxNTYsIDg3LCAyMjcsIDE3OSwgODcsIDIxMiwgNTksIDI0MSwgMzYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMjcsIDE3OCwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIDU5LCAxNTYsIAotICAgIDIwOCwgMTczLCAyMTksIDI0NSwgMjI3LCAxNzksIDMsIDcwLCAyMzEsIDYsIDIxMiwgNTksIDE1NiwgMjA4LCAxNzMsIDIxOSwgCi0gICAgMjQ1LCAyMzcsIDI0NywgMywgNzAsIDIzMSwgNiwgMjQyLCA3NiwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIyNywgMTc4LCAKLSAgICAyNDIsIDc2LCAxNTYsIDIwOCwgMTczLCAyMTksIDI0NSwgMjM3LCAyNDYsIDI0MiwgNzYsIDIxMiwgNTksIDE1NiwgMjA4LCAKLSAgICAxNzMsIDIxOSwgMjQ1LCAyMjcsIDE3OCwgMjQyLCA3NiwgMjEyLCA1OSwgMTU2LCAyMDgsIDE3MywgMjE5LCAyNDUsIDIzNywgCi0gICAgMjQ2LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIyNywgMTc4LCAyMTIsIDEyOSwgMjE5LCAyNDUsIDIzNywgMjQ2LCAyMTIsIAotICAgIDEyOSwgODcsIDIyNywgMTc5LCA4NywgMjQxLCAzNSwgNTQsIDIxMiwgMTI5LCA4NywgMjM3LCAyNDcsIDg3LCAyNDEsIDM1LCAKLSAgICA1NCwgNTIsIDIyMiwgMjIxLCAyMjcsIDE3OCwgNTIsIDIyMiwgMjIxLCAyMzcsIDI0NiwgNTIsIDIyMiwgMjIxLCAyMjcsIAotICAgIDE3OSwgMywgMjA2LCAyNDYsIDIzNywgMjQ3LCAyMTksIDIwMCwgMjI3LCAxNzgsIDIzNywgMjQ3LCAyNDgsIDExMCwgMjI3LCAKLSAgICAxNzgsIDIyNywgMTc5LCAyNDYsIDE2LCAyNDcsIDEzNywgMjQ1LCA4NywgMjM3LCAyNDcsIDI0NiwgMTYsIDI0NywgMTM3LCAKLSAgICAyNDUsIDg3LCAyMjcsIDE3OSwgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMzcsIAotICAgIDI0NywgMjQ2LCAxNiwgMjQ3LCAxMzcsIDI0NSwgODgsIDg3LCAyMTIsIDU5LCAyNDEsIDM2LCAyMTIsIDM1LCAyMDksIDk3LCAKLSAgICAyMjgsIDYsIDIwOSwgOTcsIDIxMiwgMzUsIDIwOSwgOTgsIDIxOSwgMjQ1LCAxNTYsIDEzNSwgMjI4LCA2LCAyMDksIDk4LCAKLSAgICAyMTksIDI0NSwgMTU2LCAxMzUsIDI0MSwgMzUsIDIsIDMsIDI0NywgMTcwLCA1NSwgMjE3LCAyNTAsIDg3LCAyMTIsIDExOCwgCi0gICAgMjQxLCAzNSwgNTQsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDI0MSwgMzUsIDU0LCAyMTcsIDI1MCwgODcsIDIxMiwgMTE4LCAKLSAgICAyMjEsIDE2NiwgMTU2LCAxMzUsIDIxMCwgMjM3LCA4NywgMjEyLCAxMTgsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjE3LCAyNTAsIAotICAgIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyMzcsIDg3LCAyNDEsIDM1LCA1NCwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMTU2LCAKLSAgICAxMzUsIDIxMCwgMjM3LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCAyMTcsIDI1MCwgODcsIDI1MSwgNywgMTU2LCAxMzUsIAotICAgIDIxMCwgMjM3LCA4NywgMjUxLCA3LCAxNTYsIDEzNSwgMjE3LCAyNTAsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgCi0gICAgMjEwLCAyMzcsIDg3LCAyMjEsIDE2NiwgMjUxLCA3LCAxNTYsIDEzNSwgNTIsIDIxNywgMjQ5LCA1MiwgMjEwLCAyMzYsIAotICAgIDIxMCwgMjQ1LCAzLCAyNDMsIDg1LCAyMTAsIDE5OCwgMywgMjQzLCA4NSwgMjEwLCAyNDUsIDMsIDkxLCAyLCA1NiwgMjEwLCAKLSAgICAxOTgsIDMsIDkxLCAyLCA1NiwgMjEwLCAyNDUsIDMsIDIyMywgMjI0LCAyLCA1NiwgMjEwLCAxOTgsIDMsIDIyMywgMjI0LCAKLSAgICAyLCA1NiwgMjEwLCAyNDUsIDc2LCAyMTksIDI0NSwgMTU2LCAyMDgsIDE3MywgMywgNzAsIDU1LCAyMTAsIDE5OCwgNzYsIAotICAgIDIxOSwgMjQ1LCAxNTYsIDIwOCwgMTczLCAzLCA3MCwgNTUsIDIxMCwgMjQ1LCA3NiwgODcsIDI0MSwgMzUsIDU0LCAyMTAsIAotICAgIDE5OCwgNzYsIDg3LCAyNDEsIDM1LCA1NCwgMjEwLCAyNDUsIDc2LCA4NywgMjA4LCAyMjgsIDIxOSwgMjU0LCAyMTAsIDE5OCwgCi0gICAgNzYsIDg3LCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIxMCwgMjQ1LCA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMTk4LCAKLSAgICA3NiwgODcsIDI1MSwgNywgMTU2LCAxMzUsIDIxMCwgMjQ1LCA3NiwgODcsIDIyMSwgMTY2LCAxNTYsIDEzNSwgMjEwLCAxOTgsIAotICAgIDc2LCA4NywgMjIxLCAxNjYsIDE1NiwgMTM1LCA1MSwgNDksIDE3MSwgOTgsIDIxOSwgMjU0LCA1MSwgNTAsIDE3MSwgOTgsIAotICAgIDIxOSwgMjU0LCAyNDYsIDE2LCAyMTAsIDI0NCwgMjQ2LCAxNiwgMjEwLCAxOTcsIDI0NiwgMTYsIDIxMCwgMjQ1LCAyMTksIAotICAgIDI0NSwgMTU2LCAxMzUsIDI0NiwgMTYsIDIxMCwgMTk4LCAyMTksIDI0NSwgMTU2LCAxMzUsIDIxMCwgMjQ1LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCA4NywgMjEwLCAyNDQsIDIxMCwgMjQ1LCA4NywgMjEwLCAyNDQsIDIxMCwgMTk4LCA4NywgMjEwLCAKLSAgICAxOTcsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjEwLCAyNDQsIDIxMCwgMTk4LCAyNDgsIDExMCwgMjUsIDIzMCwgOTgsIDI0NywgCi0gICAgMTM3LCAyNDQsIDE0NSwgMywgMjEwLCAyNDQsIDI0MSwgMTE1LCA3NiwgMjIwLCAxLCAyNDIsIDY4LCAyMTgsIDEwNCwgMywgCi0gICAgMjA5LCAxNzcsIDIwOCwgMTQ0LCAyMDgsIDEwMiwgMjMwLCAyNDQsIDIzOSwgMTYwLCAyMjEsIDE4MSwgMjEyLCAyMjgsIDQ5LCAKLSAgICAyMTAsIDMsIDIxMiwgMjI4LCAxMjEsIDIxMCwgMywgMjEyLCAyMjgsIDExMiwgMjEwLCAzLCAyMTgsIDIzNCwgMywgMTk0LCAKLSAgICA4MCwgMjQ4LCAyMzEsIDIwOCwgNzAsIDUwLCAyMDcsIDE3MywgNTIsIDgwLCAyNDgsIDIzMSwgNDksIDIwNywgMTczLCA4MCwgCi0gICAgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDUyLCA4MCwgMjQ4LCAyMzEsIDUyLCA0OSwgMjA3LCAxNzMsIDE2MywgMjQ0LCAKLSAgICAxNDUsIDIzOSwgMTIwLCA0OSwgMjI0LCAyNDUsIDc2LCA1MiwgMjA2LCAzOCwgMjEyLCAyMjgsIDEyMSwgMjEwLCA0LCAzLCAKLSAgICAyMTksIDIwMywgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCAzLCAyMDYsIDI0NiwgMjEyLCAyMjgsIDExMiwgMjEwLCA0LCA4NywgCi0gICAgMjEyLCAyMjgsIDEyMSwgMjEwLCAzLCA1MiwgMTIxLCAyMTAsIDMsIDUyLCAxMTIsIDIxMCwgMywgNTIsIDIxMSwgMzIsIAotICAgIDIyMSwgMTY2LCA1NCwgMjE2LCA3MywgNTIsIDIxMSwgMzIsIDIyMSwgMTY2LCA1NCwgMjQzLCAxMDQsIDIyMSwgMTY2LCAKLSAgICAyNDMsIDE0NCwgMywgMjE2LCA3MywgMjIyLCAyMzMsIDIxMiwgNTcsIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTUsIAotICAgIDgwLCAyMjcsIDExNSwgMywgMjQ2LCA2MiwgNTYsIDEyMSwgMjEwLCA0LCAzLCAyNDYsIDYyLCA1NiwgMjE5LCA4MiwgMywgCi0gICAgMjM2LCAxMDYsIDk1LCAyMTksIDgyLCAzLCAyMDgsIDIyOCwgMjE5LCAyNTQsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMjQ4LCAKLSAgICA2NywgMjE2LCAxMTcsIDIwOCwgNzAsIDgwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDk1LCAyMDgsIDcwLCAyNDUsIDI0MywgCi0gICAgMjE5LCAyNTQsIDIwOCwgNzAsIDIyMiwgMjIxLCAyMjcsIDE3OCwgMjA4LCA3MCwgMjIyLCAyMjEsIDIzNywgMjQ2LCAyNDIsIAotICAgIDc2LCAyMTIsIDU5LCAyMjcsIDE3OSwgMjE5LCAyNDUsIDE1NiwgMTM1LCAyNDIsIDc2LCAyMTIsIDU5LCAyMzcsIDI0NywgCi0gICAgMjE5LCAyNDUsIDE1NiwgMTM1LCAyMDgsIDcwLCAyMTIsIDEsIDI0OCwgNjcsIDIxNiwgMTE3LCAyMjgsIDgsIDIwOCwgNzAsIAotICAgIDgwLCAyNDgsIDIzMSwgMjE5LCAyNTQsIDUyLCAyMTIsIDEsIDIxOSwgMjU0LCA2MSwgODAsIDE0MiwgMjIzLCAxNjIsIDYxLCAKLSAgICA4MCwgMTQyLCAxNTMsIDI0MSwgMTc2LCA2MSwgNDcsIDE1MywgMjA0LCA0NiwgNjEsIDQ3LCAyMTEsIDIzOCwgMjQxLCAxNzYsIAotICAgIDYxLCA0NywgMjExLCAyMzgsIDIwNCwgNDYsIDYxLCA0NywgNDksIDUwLCA2MSwgNDcsIDk2LCA2MiwgNDcsIDE3NywgNjIsIAotICAgIDQ3LCAxODMsIDYyLCA0NywgMTUzLCAyNDEsIDE3NiwgNjIsIDQ3LCAxNTMsIDIwNCwgNDYsIDYyLCA0NywgMjExLCAyMzgsIAotICAgIDI0MSwgMTc2LCA2MiwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCA2MiwgNDcsIDQ5LCA1MCwgNjIsIDQ3LCAxMTIsIDEyMSwgCi0gICAgNjIsIDQ3LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyNDIsIDY4LCA4NiwgNTMsIDMsIDIwOCwgMjExLCAyMDYsIDIxMiwgOTYsIAotICAgIDUzLCAzLCAyMDgsIDIxMSwgMjQyLCA2OCwgOTYsIDUzLCAzLCAyMDgsIDIxMSwgMjA2LCAyMTIsIDUxLCAzLCAyMDgsIDE0NSwgCi0gICAgMTYyLCAyNDgsIDQzLCA1MSwgMywgMjQ3LCAyNDgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIwNiwgMjIxLCA1MCwgMjQzLCAKLSAgICAyMjgsIDE2MiwgMjQ4LCA0MywgNTEsIDMsIDIyNiwgMjUxLCA0OSwgMjQzLCAyMjgsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIAotICAgIDMsIDQ5LCAxNjIsIDI0OCwgNDMsIDI0MywgMjIyLCAzLCA1MCwgMTYyLCAyNDgsIDQzLCAyNDMsIDIyMiwgMywgMjA4LCAKLSAgICAxNDUsIDE2MiwgMjQ4LCA0MywgMjQzLCAyMjIsIDMsIDI0NywgMjQ4LCAxNjIsIDI0OCwgNDMsIDI0MiwgODMsIDIxMSwgCi0gICAgMTc3LCA2MiwgMjI4LCA4LCAyMTEsIDE3NywgNjEsIDIyOCwgOCwgMjExLCAxNzcsIDYyLCAyMDUsIDI0MiwgNSwgMjExLCAKLSAgICAxNzcsIDYxLCAyMDUsIDI0MiwgNSwgMjExLCAxNzcsIDYyLCAyMTgsIDI1NSwgNjEsIDIxOCwgMjU1LCA2MSwgMjM3LCAxNywgCi0gICAgNjIsIDIzNywgMTcsIDIzNiwgMTA2LCA2MiwgMjM3LCAxNywgNjIsIDIyOCwgOCwgMjQ2LCA2MSwgNjIsIDIyNSwgMTAsIAotICAgIDI0MywgMjIxLCA2MSwgMjI1LCAxMCwgMjQzLCAyMjEsIDYyLCAyMjUsIDEwLCAyMjYsIDI0NiwgNjEsIDIyNSwgMTAsIDIyNiwgCi0gICAgMjQ2LCA2MiwgNSwgMjQzLCAyMjEsIDYyLCA1LCAyMjYsIDI0NiwgNjEsIDUsIDIyNiwgMjQ2LCA2MiwgMjM2LCAxMDYsIAotICAgIDI0MSwgMTA5LCA2MSwgMjM2LCAxMDYsIDI0MSwgMTA5LCA2MiwgODAsIDI0MSwgMTA5LCA2MSwgODAsIDI0MSwgMTA5LCA0OSwgCi0gICAgNTMsIDMsIDUsIDI0NiwgNjEsIDEyNiwgOTYsIDI1MCwgOTEsIDQ5LCA1MywgMywgNDMsIDIxOCwgNzYsIDE2MywgOTYsIAotICAgIDIxMSwgMTcxLCA0NywgOTYsIDIwNywgMTM0LCA1MywgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCA1MiwgODAsIAotICAgIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAyMzksIDEyMCwgMTQyLCA5NiwgMjA3LCAxMzQsIDIwOCwgNzAsIDI0NCwgMTQ1LCA0NywgCi0gICAgOTYsIDUzLCAzLCAyNDIsIDgzLCAyMTEsIDc3LCA5NiwgNTMsIDMsIDIwOSwgMjQ5LCAzLCA4MCwgOTUsIDk2LCA1MywgMywgCi0gICAgMjA5LCAyNDksIDMsIDUyLCA4MCwgOTUsIDk2LCAyMDcsIDEzNCwgNTMsIDMsIDIwOSwgMjQ4LCA5NiwgMjA3LCAxMzQsIDUzLCAKLSAgICAzLCAyMDksIDI0OSwgMywgODAsIDk1LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDksIDI0OSwgMywgNTIsIDgwLCA5NSwgOTYsIAotICAgIDUzLCAyMDksIDI1LCAyMDMsIDE5NiwgMjA0LCA3NiwgNTMsIDIxOCwgNTksIDI0MywgMTY0LCAyMjcsIDIyMiwgMjQxLCAzNSwgCi0gICAgMiwgODcsIDk2LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgOTYsIDQ3LCA5NiwgNTMsIDg3LCAyMTYsIAotICAgIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCA4NiwgNTMsIDIwOSwgMjUsIDIzNywgMjQ2LCA4NiwgNTMsIDIwOSwgMjUsIDIxMCwgCi0gICAgMTk3LCA5NiwgMjE3LCA1OCwgNDcsIDg2LCAyMTcsIDU4LCA0NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU1LCA4NywgCi0gICAgODYsIDQ3LCA4NiwgNTMsIDg3LCAyMTYsIDc0LCAyNTEsIDcsIDE1NiwgMTM1LCAyMDgsIDIyOCwgMjE5LCAyNTUsIDg3LCAKLSAgICA5NiwgNDcsIDk2LCA1MywgODcsIDI1MSwgNywgMTU2LCAxMzUsIDk2LCA1MywgODcsIDIxNiwgNzQsIDIwOCwgMjI4LCAyMTksIAotICAgIDI1NCwgODYsIDUzLCA4NywgMjE2LCA3NCwgMjA4LCAyMjgsIDIxOSwgMjU0LCAxODMsIDIwOCwgODQsIDIwMiwgMzAsIDQ3LCAKLSAgICAyMTIsIDIyOCwgMjEyLCA1OSwgMTUzLCA0NywgMjEyLCAyMjgsIDI0OSwgMjIsIDIxMSwgMjM4LCA0NywgNjEsIDIyNSwgMTAsIAotICAgIDIxMSwgOTQsIDYyLCA1LCAyMTEsIDk0LCA2MSwgNSwgMjExLCA5NCwgNjIsIDIxNiwgMTEsIDIxOCwgMjU1LCA2MSwgMjE2LCAKLSAgICAxMSwgMjE4LCAyNTUsIDc5LCAyMjgsIDgsIDI0NiwgNjEsIDc5LCAyMTksIDIwNSwgMywgMjE5LCAyMDUsIDIzMSwgNiwgNzksIAotICAgIDI0NiwgNjIsIDMsIDI0NiwgNjIsIDIzMSwgNiwgNzksIDI0NiwgNjEsIDc5LCA0MywgMjE0LCAyNTQsIDIxMiwgNTksIDE1MywgCi0gICAgNTMsIDMsIDIzNiwgMTE1LCAyMzcsIDY0LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgMTE1LCAyMDksIDI0OCwgCi0gICAgMjEyLCA1OSwgMTUzLCA1MywgMywgMjM2LCAxMDYsIDIwOSwgMjQ4LCAyNDksIDIyLCAyMTEsIDIzOCwgNTMsIDMsIDIzNiwgCi0gICAgMTA2LCAyMDksIDI0OCwgMjQ4LCAxMTgsIDUzLCAyMTgsIDU5LCAxODMsIDIwOSwgODQsIDE1MywgMjQxLCAxNzUsIDIxMiwgCi0gICAgMjI4LCAyNDgsIDExOCwgNTMsIDIxOCwgNTksIDE4MywgMjA5LCA4NCwgMTUzLCAyNDEsIDE3NSwgOTYsIDIwOCwgODQsIDQ3LCAKLSAgICAxNzcsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNDcsIDE4MywgMjA4LCA4NCwgNDcsIDQ5LCA1MCwgMjA4LCA4NCwgNDcsIAotICAgIDExMiwgMTIxLCAyMDgsIDg0LCA0NywgMTUzLCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgMTUzLCAyNDEsIDE3NiwgMjA4LCA4NCwgCi0gICAgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA4LCA4NCwgNDcsIDIxMSwgMjM4LCAyMDQsIDQ2LCAyMDgsIDg0LCA0NywgOTYsIAotICAgIDIwOCwgODQsIDI0NCwgMTQzLCA0NywgMTc3LCAyMDgsIDg0LCAyNDQsIDE0MywgNDcsIDg2LCAyMDgsIDg0LCAyNDQsIDE0MywgCi0gICAgNDcsIDE4MywgMjA4LCA4NCwgMjQ0LCAxNDMsIDQ3LCAyNDYsIDE4LCAyMDgsIDg0LCAxNzEsIDI0NiwgNjIsIDQ3LCAyNTAsIAotICAgIDE5NCwgMjA4LCA4NCwgMTcxLCAyNDYsIDYyLCA0NywgOTYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAxNzcsIDIwOCwgCi0gICAgODQsIDUzLCAyMDgsIDE3MywgMTQyLCA4NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE4MywgMjA4LCA4NCwgNTMsIAotICAgIDIwOCwgMTczLCAxNDIsIDE1MywgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDE1MywgMjQxLCAxNzYsIAotICAgIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgMTQyLCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIwOCwgODQsIDUzLCAyMDgsIDE3MywgCi0gICAgMTQyLCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA4LCA4NCwgNTMsIDIwOCwgMTczLCAxNDIsIDk2LCAyMDgsIDg0LCA1MywgMywgCi0gICAgNTIsIDIzNiwgMTA2LCA5NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgNTIsIDIzNiwgMTA2LCA5NSwgODYsIDIwOCwgODQsIDUzLCAKLSAgICAzLCA1MiwgMjM2LCAxMDYsIDk1LCAxODMsIDIwOCwgODQsIDUzLCAzLCA1MiwgMjM2LCAxMDYsIDk1LCAyMzYsIDEwNiwgCi0gICAgMjEwLCAxMSwgMjI5LCAxNTEsIDgwLCAyMTAsIDExLCAyMjksIDE1MSwgOTYsIDIwOCwgODQsIDUzLCAxMTUsIDg2LCAyMDgsIAotICAgIDg0LCA0NywgMTc3LCAyMDgsIDg0LCA1MywgOTYsIDc2LCAxODMsIDIwOCwgODQsIDQ3LCA4NiwgMjA4LCA4NCwgNTMsIDExNSwgCi0gICAgOTYsIDIwOCwgODQsIDQ3LCAxODMsIDIwOCwgODQsIDUzLCA5NiwgNzYsIDE3NywgMjA4LCA4NCwgNDcsIDk2LCAyMDgsIDg0LCAKLSAgICAyMTksIDE0NiwgMjUwLCA5MSwgMTc3LCAyMDgsIDg0LCAyMTksIDE0NiwgMjUwLCA5MSwgODYsIDIwOCwgODQsIDIxOSwgCi0gICAgMTQ2LCAyNTAsIDkxLCAxODMsIDIwOCwgODQsIDIxOSwgMTQ2LCAyNTAsIDkxLCA5NiwgNjIsIDQzLCA2MSwgNDcsIDE3NywgCi0gICAgNjIsIDQzLCA2MSwgNDcsIDg2LCA2MiwgNDMsIDYxLCA0NywgMTgzLCA2MiwgNDMsIDYxLCA0NywgMjUwLCAxOTQsIDIwOCwgCi0gICAgODQsIDUwLCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDI0NywgMjQ4LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIAotICAgIDIwOCwgODQsIDQ5LCAyMDcsIDkyLCA0NywgMjUwLCAxOTQsIDIwOCwgODQsIDIwOCwgMTQ1LCAyMDcsIDkyLCA0NywgMjE2LCAKLSAgICA3OCwgMjI3LCAyMjIsIDIxNiwgNzgsIDIxNiwgMTYsIDIyMiwgMjEyLCAyMjcsIDIyMiwgMjIyLCAyMTIsIDIxNiwgMTYsIAotICAgIDIzOSwgMTQ3LCAyNDUsIDE2NiwgMjUwLCA5MiwgMjQ2LCA1NywgMjUwLCAxOTMsIDg2LCA2MiwgNDcsIDIwOSwgMzEsIDIwOCwgCi0gICAgMTQzLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgMjA5LCAzMSwgMjE2LCAxMiwgMTc3LCAyNDEsIDMxLCAyNTAsIDk0LCAyMDksIAotICAgIDMxLCAyMDgsIDE0MywgODYsIDI0MSwgMzEsIDI1MCwgOTQsIDIwOSwgMzEsIDIyNywgMjE4LCAxODMsIDI0MSwgMzEsIDI1MCwgCi0gICAgOTQsIDYyLCA5NiwgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDE3NywgMjQxLCAzMSwgMjUwLCA5NCwgNjIsIDg2LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA2MiwgMTgzLCAyNDEsIDMxLCAyNTAsIDk0LCAxODMsIDIwOCwgODQsIDUzLCAzLCAxNjMsIDIwOCwgMjExLCAKLSAgICAyMjcsIDIxMiwgMTgzLCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAxNzcsIDIwOCwgODQsIDUzLCAKLSAgICAzLCAxNjMsIDIwOCwgMjExLCAyMjcsIDIxMiwgMTc3LCAyMDgsIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjE2LCA1LCAKLSAgICA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDIwNiwgMjEyLCA4NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgCi0gICAgMjA4LCAyMTEsIDIwNiwgMjEyLCA5NiwgMjA4LCA4NCwgNTMsIDMsIDE2MywgMjA4LCAyMTEsIDI0MiwgNjgsIDg2LCAyMDgsIAotICAgIDg0LCA1MywgMywgMTYzLCAyMDgsIDIxMSwgMjQyLCA2OCwgNjIsIDI0NSwgODYsIDE4MywgMjUsIDk2LCA0NywgNjIsIDI0NSwgCi0gICAgODYsIDE4MywgMjUsIDg2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIDk2LCA0NywgNjIsIDI0NSwgODYsIDE3NywgMjUsIAotICAgIDg2LCA0NywgNjIsIDI0NSwgODYsIDk2LCAyNSwgMTc3LCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTc3LCA0NywgNjIsIAotICAgIDI0NSwgODYsIDk2LCAyNSwgMTgzLCA0NywgNjIsIDI0NSwgODYsIDg2LCAyNSwgMTgzLCA0NywgMjE2LCA1NSwgNTMsIDEyMSwgCi0gICAgMjI3LCAyMjIsIDIxNiwgNTUsIDUzLCAxMjEsIDIxNiwgMTYsIDIxNiwgNTUsIDUzLCAxMTIsIDIyNywgMjIyLCAyMTYsIDU1LCAKLSAgICA1MywgMTEyLCAyMTYsIDE2LCAyMTYsIDU1LCA1MywgNDksIDIwNiwgMjI0LCAyMTYsIDU1LCA1MywgNTAsIDIwNiwgMjI0LCAKLSAgICAyMTYsIDU1LCA1MywgNDksIDI0MiwgNzAsIDIxNiwgNTUsIDUzLCA1MCwgMjQyLCA3MCwgMTc3LCA2MSwgNTMsIDIzOSwgCi0gICAgMTIwLCAyNDgsIDIzMSwgMywgMjM2LCAxMDYsIDE0MiwgMTEyLCAyNTAsIDk1LCAyMzEsIDUwLCAzNCwgMjE2LCAxNDQsIAotICAgIDI0NywgMjMzLCAyNDgsIDI0OCwgOTgsIDMsIDE1NywgMjAzLCAxOTYsIDQzLCAyMDMsIDE5NiwgNDMsIDI2LCAyMDMsIDE5NiwgCi0gICAgNjIsIDUxLCAyNDYsIDIxNSwgNjIsIDI0MywgMjIyLCAyNDYsIDIxNSwgMjA3LCAxNzQsIDYyLCAyMTgsIDI1NSwgMjM2LCAKLSAgICAxMDYsIDYyLCAyMjAsIDgxLCA2MiwgMjIwLCA4MSwgNjIsIDIyNSwgMTAsIDIwNiwgMjIzLCAyMDgsIDg2LCAyNDYsIDIxNSwgCi0gICAgNjIsIDIyNSwgMTAsIDI0MiwgNjksIDIwOCwgODYsIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjI3LCAyMTcsIDIwOCwgODYsIAotICAgIDI0NiwgMjE1LCA2MiwgMjI1LCAxMCwgMjE2LCAxMSwgMjA4LCA4NiwgMjQ2LCAyMTUsIDIwOCwgMTQ1LCAxNjIsIDYyLCAKLSAgICAyNDYsIDYxLCAyNDcsIDI0OCwgMTYyLCA2MiwgMjQ2LCA2MSwgMTU3LCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDI0NSwgODIsIAotICAgIDIxNSwgMTk4LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCA2MiwgMjQ1LCA4MiwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAKLSAgICAyNDUsIDgyLCAyMTUsIDE5OCwgNjEsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyNDUsIDgyLCA1MSwgMjE4LCAzNCwgMjMxLCAzMSwgCi0gICAgMjA2LCAyNTAsIDU0LCA5NiwgMjA3LCAxMzQsIDUzLCAzLCAyMDgsIDg2LCAyNTAsIDkzLCAxNzcsIDIwNywgMTM0LCA1MywgCi0gICAgMywgMjA4LCA4NiwgMjUwLCA5MywgODYsIDIwNywgMTM0LCA1MywgMywgMjA4LCA4NiwgMjUwLCA5MywgMTgzLCAyMDcsIAotICAgIDEzNCwgNTMsIDMsIDIwOCwgODYsIDI1MCwgOTMsIDE4MCwgNiwgMSwgMjUwLCAwLCAxODAsIDYsIDEsIDI0NywgMTgxLCAKLSAgICAxODAsIDYsIDEsIDIwNiwgNTMsIDE4MCwgNiwgMSwgMjM4LCA1MCwgMTgwLCA2LCAxLCAyNDMsIDEwOCwgMTgwLCA2LCAxLCAKLSAgICAyMDMsIDI0LCAxODAsIDYsIDEsIDIwMiwgNjQsIDE4MCwgNiwgMSwgMjQxLCAyNTAsIDE4MCwgNiwgMSwgMjAyLCA4OSwgCi0gICAgMTgwLCA2LCAxLCAyMzAsIDE4OCwgMTgwLCA2LCAxLCA4MSwgMjMwLCAxODgsIDE4MCwgNiwgMSwgNzUsIDE4MCwgNiwgMSwgCi0gICAgMjQzLCAxMjgsIDE4MCwgNiwgMSwgMjMwLCAxMCwgMTgwLCA2LCAxLCAyMjcsIDc5LCAxODAsIDYsIDEsIDIyMywgMTY3LCAKLSAgICAxODAsIDYsIDEsIDIyMywgNjksIDE4MCwgNiwgMSwgMjIwLCAyMCwgMTgwLCA2LCAxLCAyMTgsIDU2LCAxODAsIDYsIDEsIAotICAgIDIxNSwgMjQ0LCAxODAsIDYsIDEsIDIxMiwgNDEsIDE4MCwgNiwgMSwgMjA3LCAxNjEsIDE4MCwgNiwgMSwgMjA3LCAxMCwgCi0gICAgMTgwLCA2LCAxLCAyMzksIDEyMywgMTgwLCA2LCAxLCAyMzcsIDIzLCAxODAsIDYsIDEsIDIxOSwgMjE3LCAxODAsIDYsIDEsIAotICAgIDIxOSwgMzQsIDE4MCwgNiwgMSwgMjEyLCAyMDIsIDE4MCwgNiwgMSwgMjA3LCAyNTUsIDE4MCwgNiwgMSwgMjQ2LCAxMDQsIAotICAgIDE4MCwgNiwgMSwgMjEzLCA5MCwgMTgwLCA2LCAxLCAyMDMsIDMwLCAxODAsIDYsIDEsIDIwMywgMzIsIDE4MCwgNiwgMSwgCi0gICAgMjAzLCA2NCwgMTgwLCA2LCAxLCAyMTEsIDIwNCwgMTUyLCAxODAsIDYsIDEsIDIwMiwgMjEzLCAxODAsIDYsIDEsIDUsIAotICAgIDIwMiwgMTgzLCAxODAsIDYsIDEsIDUsIDIwMiwgMTg0LCAzLCAyMDksIDI0OCwgMTgwLCA2LCAxLCAyMDIsIDI0NywgMTgwLCAKLSAgICA2LCAxLCAyMzAsIDIyOSwgNSwgMjAyLCAxODMsIDE4MCwgNiwgMSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNiwgMSwgCi0gICAgMjMwLCAyMjksIDI0OCwgNzMsIDIwMiwgMTgzLCAxODAsIDYsIDEsIDIzOSwgMjM1LCAxODAsIDYsIDEsIDIzMCwgMTg2LCAKLSAgICAxODAsIDYsIDEsIDIxMiwgMjAxLCAxODAsIDYsIDEsIDIwOCwgNjAsIDYzLCAxODAsIDYsIDEsIDIyNywgMjUyLCAyMjMsIAotICAgIDE2NywgMTgwLCA1LCAxLCAyNTAsIDAsIDE4MCwgNSwgMSwgMjQ3LCAxODEsIDE4MCwgNSwgMSwgMjA2LCA1MywgMTgwLCA1LCAKLSAgICAxLCAyMzgsIDUwLCAxODAsIDUsIDEsIDI0MywgMTA4LCAxODAsIDUsIDEsIDIwMywgMjQsIDE4MCwgNSwgMSwgMjAyLCA2NCwgCi0gICAgMTgwLCA1LCAxLCAyNDEsIDI1MCwgMTgwLCA1LCAxLCAyMDIsIDg5LCAxODAsIDUsIDEsIDIzMCwgMTg4LCAxODAsIDUsIDEsIAotICAgIDgxLCAyMzAsIDE4OCwgMTgwLCA1LCAxLCA3NSwgMTgwLCA1LCAxLCAyNDMsIDEyOCwgMTgwLCA1LCAxLCAyMzAsIDEwLCAKLSAgICAxODAsIDUsIDEsIDIyNywgNzksIDE4MCwgNSwgMSwgMjIzLCAxNjcsIDE4MCwgNSwgMSwgMjIzLCA2OSwgMTgwLCA1LCAxLCAKLSAgICAyMjAsIDIwLCAxODAsIDUsIDEsIDIxOCwgNTYsIDE4MCwgNSwgMSwgMjE1LCAyNDQsIDE4MCwgNSwgMSwgMjEyLCA0MSwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDE2MSwgMTgwLCA1LCAxLCAyMDcsIDEwLCAxODAsIDUsIDEsIDIzOSwgMTIzLCAxODAsIDUsIDEsIAotICAgIDIzNywgMjMsIDE4MCwgNSwgMSwgMjE5LCAyMTcsIDE4MCwgNSwgMSwgMjE5LCAzNCwgMTgwLCA1LCAxLCAyMTIsIDIwMiwgCi0gICAgMTgwLCA1LCAxLCAyMDcsIDI1NSwgMTgwLCA1LCAxLCAyNDYsIDEwNCwgMTgwLCA1LCAxLCAyMTMsIDkwLCAxODAsIDUsIDEsIAotICAgIDIwMywgMzAsIDE4MCwgNSwgMSwgMjAzLCAzMiwgMTgwLCA1LCAxLCAyMDMsIDY0LCAxODAsIDUsIDEsIDIxMSwgMjA0LCAKLSAgICAxNTIsIDE4MCwgNSwgMSwgMjAyLCAyMTMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODMsIDE4MCwgNSwgMSwgNSwgMjAyLCAxODQsIAotICAgIDMsIDIwOSwgMjQ4LCAxODAsIDUsIDEsIDIwMiwgMjQ3LCAxODAsIDUsIDEsIDIzMCwgMjI5LCA1LCAyMDIsIDE4MywgMTgwLCAKLSAgICA1LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMTgwLCA1LCAxLCAyMzAsIDIyOSwgMjQ4LCA3MywgMjAyLCAxODMsIDE4MCwgNSwgCi0gICAgMSwgMjM5LCAyMzUsIDE4MCwgNSwgMSwgMjMwLCAxODYsIDE4MCwgNSwgMSwgMjEyLCAyMDEsIDE4MCwgNSwgMSwgMjA4LCAKLSAgICA2MCwgNjMsIDE4MCwgNSwgMSwgMjI3LCAyNTIsIDIyMywgMTY3LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgNTIsIDE0MiwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxNDIsIDgsIDYsIDEsIDIyOCwgMTMxLCAzLCAxMDEsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NSwgMywgOTUsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA5LCAyNDgsIDgsIDUsIDEsIDM0LCAzLCA5NSwgOCwgNSwgCi0gICAgMSwgMjEwLCA3MCwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzcsIDE3MiwgMywgMjQ0LCAyMCwgOCwgNSwgMSwgMjM3LCAKLSAgICAxNzIsIDMsIDI0NCwgMjAsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0NCwgMjAsIDgsIDUsIDEsIDIzMCwgNTUsIDMsIDI0NCwgCi0gICAgMjAsIDgsIDYsIDEsIDIwMiwgMTYwLCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMDIsIDE2MCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjUxLCAyLCA4LCA2LCAxLCAyMjYsIDE4NiwgMywgMTEzLCA4LCA2LCAxLCAyMDcsIDE3NCwgNjMsIDgsIDYsIDEsIAotICAgIDIwNywgMTc0LCAyNTEsIDIsIDgsIDUsIDEsIDIwNiwgMTY1LCAzLCA1MCwgMTEzLCA4LCA2LCAxLCAyMDQsIDE0NSwgMywgCi0gICAgMTEzLCA4LCA1LCAxLCAyMDQsIDE0NSwgMywgMTEzLCA4LCA1LCAxLCAyMDYsIDE2NSwgMywgMjQ1LCA5NSwgOCwgNiwgMSwgCi0gICAgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMTYyLCAyMzcsIDE3MSwgOCwgNSwgMSwgMjA5LCAyNDYsIDIxOCwgMTkyLCA4LCA1LCAKLSAgICAxLCAxODgsIDMsIDIyMSwgMTYzLCA4LCA1LCAxLCAyMDcsIDE3NCwgMjE3LCAxLCAzLCAyMDksIDI0OCwgOCwgNSwgMSwgCi0gICAgMTU4LCAzLCAxMjQsIDIxNSwgMjUzLCAyMzEsIDYsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCA3NCwgOCwgMjEwLCAyNDYsIDUsIAotICAgIDEsIDIzMCwgMTg0LCA2NSwgMSwgNiwgMjA2LCAxNjQsIDgsIDYsIDEsIDIxNSwgOTQsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgCi0gICAgOCwgNiwgMSwgMjAyLCAxNjAsIDMsIDIxMCwgMTY5LCAyMDksIDI0OCwgODQsIDYsIDEsIDI1MSwgMjQsIDg0LCA1LCAxLCAKLSAgICAyNTEsIDI0LCA4NCwgNiwgMSwgMjA1LCAyMjcsIDg0LCA1LCAxLCAyMDUsIDIyNywgODQsIDYsIDEsIDIzOCwgMjM1LCA4NCwgCi0gICAgNSwgMSwgMjM4LCAyMzUsIDg0LCA2LCAxLCAyNDQsIDE4MCwgODQsIDUsIDEsIDI0NCwgMTgwLCA4NCwgNiwgMSwgMjQxLCAKLSAgICAxNDQsIDg0LCA1LCAxLCAyNDEsIDE0NCwgODQsIDYsIDEsIDIxMSwgMjQzLCA4NCwgNSwgMSwgMjExLCAyNDMsIDg0LCA2LCAKLSAgICAxLCAyMDIsIDk5LCA4NCwgNSwgMSwgMjAyLCA5OSwgODQsIDYsIDEsIDIzNywgODAsIDg0LCA1LCAxLCAyMzcsIDgwLCA4NCwgCi0gICAgNiwgMSwgMjA5LCA3MiwgODQsIDUsIDEsIDIwOSwgNzIsIDg0LCA2LCAxLCAyMzUsIDE2OCwgODQsIDUsIDEsIDIzNSwgMTY4LCAKLSAgICA4NCwgNiwgMSwgMjI5LCAyNTIsIDg0LCA1LCAxLCAyMjksIDI1MiwgODQsIDYsIDEsIDIyNywgMjQ4LCA4NCwgNSwgMSwgCi0gICAgMjI3LCAyNDgsIDg0LCA2LCAxLCAyMjQsIDE1NSwgODQsIDUsIDEsIDIyNCwgMTU1LCA4NCwgNiwgMSwgMjIyLCAxMDAsIDg0LCAKLSAgICA1LCAxLCAyMjIsIDEwMCwgODQsIDYsIDEsIDIyOCwgMjI1LCA4NCwgNSwgMSwgMjI4LCAyMjUsIDg0LCA2LCAxLCA3OCwgODQsIAotICAgIDUsIDEsIDc4LCA4NCwgNiwgMSwgMjE4LCAxNjcsIDg0LCA1LCAxLCAyMTgsIDE2NywgODQsIDYsIDEsIDIxNSwgMjI3LCA4NCwgCi0gICAgNSwgMSwgMjE1LCAyMjcsIDg0LCA2LCAxLCAyMTIsIDEzMiwgODQsIDUsIDEsIDIxMiwgMTMyLCA4NCwgNiwgMSwgMjA5LCAKLSAgICAyMDcsIDg0LCA1LCAxLCAyMDksIDIwNywgODQsIDYsIDEsIDIwNywgMzksIDg0LCA1LCAxLCAyMDcsIDM5LCA4NCwgNiwgMSwgCi0gICAgMjQwLCAyNiwgODQsIDUsIDEsIDI0MCwgMjYsIDg0LCA2LCAxLCAyMjksIDEyMiwgODQsIDUsIDEsIDIyOSwgMTIyLCA4NCwgCi0gICAgNiwgMSwgMjE3LCAyMDIsIDg0LCA1LCAxLCAyMTcsIDIwMiwgODQsIDYsIDEsIDIyMCwgMTIsIDg0LCA1LCAxLCAyMjAsIDEyLCAKLSAgICA4NCwgNiwgMSwgMjQzLCAyMjYsIDI1MSwgMzAsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjUxLCAzMCwgODQsIDYsIDEsIDM4LCAKLSAgICA4NCwgMjUxLCA1OSwgODQsIDUsIDEsIDM4LCA4NCwgMjUxLCA1OSwgODQsIDYsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIAotICAgIDUsIDEsIDI0NSwgMTEzLCAyNDEsIDE0NCwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjksIDI1MiwgODQsIDUsIDEsIDI0MywgCi0gICAgMjI2LCAyMjksIDI1MiwgODQsIDYsIDEsIDI0MywgMjI2LCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0MywgMjI2LCAyMjIsIAotICAgIDEwMCwgODQsIDYsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDUsIDEsIDI0NSwgMTEzLCAyMjIsIDEwMCwgODQsIDYsIAotICAgIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDUsIDEsIDM4LCA4NCwgMjIwLCAxMiwgODQsIDYsIDEsIDIxNCwgMjQ2LCA4NCwgNSwgCi0gICAgMSwgMjE0LCAyNDYsIDg0LCA2LCAxLCAyNDUsIDEyOCwgMjEzLCAzNSwgODQsIDUsIDEsIDI0NSwgMTI4LCAyMTMsIDM1LCAKLSAgICA4NCwgNiwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNSwgMSwgMzgsIDg0LCAyMTMsIDM1LCA4NCwgNiwgMSwgMzgsIDg0LCAKLSAgICAyNDEsIDcsIDg0LCA1LCAxLCAzOCwgODQsIDI0MSwgNywgODQsIDYsIDEsIDI1MSwgNDMsIDIyOSwgMTI3LCA4NCwgNSwgMSwgCi0gICAgMjUxLCA0MywgMjI5LCAxMjcsIDg0LCA2LCAxLCAyNDMsIDIyNiwgMjM2LCAxMDcsIDg0LCA1LCAxLCAyNDMsIDIyNiwgMjM2LCAKLSAgICAxMDcsIDg0LCA2LCAxLCAzOCwgODQsIDIzNiwgMTA3LCA4NCwgNSwgMSwgMzgsIDg0LCAyMzYsIDEwNywgODQsIDYsIDEsIAotICAgIDM4LCA4NCwgMTUyLCA4NCwgNSwgMSwgMzgsIDg0LCAxNTIsIDg0LCA2LCAxLCAyMjgsIDEzMCwgMTUyLCA4NCwgNSwgMSwgCi0gICAgMjI4LCAxMzAsIDE1MiwgODQsIDYsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA0MiwgODQsIAotICAgIDYsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDUsIDEsIDM4LCA4NCwgMjM3LCA4MywgODQsIDYsIDEsIDM4LCA4NCwgMjM4LCAKLSAgICAyMzAsIDg0LCA1LCAxLCAzOCwgODQsIDIzOCwgMjMwLCA4NCwgNiwgMSwgMzgsIDg0LCAyNDMsIDEzMSwgODQsIDUsIDEsIAotICAgIDM4LCA4NCwgMjQzLCAxMzEsIDg0LCA2LCAxLCAzOCwgODQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCA4NCwgMjEzLCAxLCA4NCwgCi0gICAgNiwgMSwgMzgsIDIyMSwgNTQsIDIxMywgMSwgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMTMsIDEsIDg0LCA2LCAxLCAzOCwgCi0gICAgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIyLCAxNTEsIDg0LCA2LCAxLCAzOCwgMjIxLCAKLSAgICA1NCwgMjIwLCAyNDgsIDg0LCA1LCAxLCAzOCwgMjIxLCA1NCwgMjIwLCAyNDgsIDg0LCA2LCAxLCAzOCwgMjIxLCA1NCwgCi0gICAgMjA0LCA3NywgODQsIDUsIDEsIDM4LCAyMjEsIDU0LCAyMDQsIDc3LCA4NCwgMTYsIDIzMCwgMTgsIDg0LCAxNiwgMjI0LCAKLSAgICAxNTYsIDIxNSwgMjI3LCA4NCwgMTYsIDIxOCwgMTY4LCAyMTUsIDIyNywgODQsIDE2LCAyMTEsIDg1LCA4NCwgMTYsIDIwOSwgCi0gICAgMjA4LCAyMTUsIDIyNywgODQsIDE2LCAyMjksIDEyMywgMjE1LCAyMjcsIDg0LCAxNiwgMjEzLCAyLCAyMTIsIDEzMiwgODQsIAotICAgIDYsIDEsIDI0NSwgMTEzLCAyMTMsIDM1LCA4NCwgNSwgMSwgMjQ1LCAxMTMsIDIxMywgMzUsIDg0LCA2LCAxLCAyNDUsIDExMywgCi0gICAgMjM4LCAyMzAsIDg0LCA1LCAxLCAyNDUsIDExMywgMjM4LCAyMzAsIDg0LCAzOSwgMjIyLCAxMDEsIDU1LCA4NCwgMzksIAotICAgIDIxMSwgMTk3LCAyNTAsIDY3LCA4NCwgMzksIDIxMSwgMTk3LCAyMjcsIDE4NiwgODQsIDYsIDEsIDI0OCwgMTYsIDIyOSwgCi0gICAgMTI3LCA4NCwgNSwgMSwgMjQ4LCAxNiwgMjI5LCAxMjcsIDg0LCAzOCwgMjIxLCA1NCwgMjM5LCAxMDIsIDIxMSwgNjEsIDg0LCAKLSAgICAzOCwgMjIxLCA1NCwgMjQzLCAxNjcsIDIxNywgNDcsIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIzMSwgMzAsIDIxNywgNDcsIAotICAgIDgyLCA4NCwgMzgsIDIyMSwgNTQsIDIwNiwgNDAsIDI0MywgMTQxLCA4NCwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDg0LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgODQsIDIyNCwgMjUsIDI0MywgMTQxLCAxMTQsIDUsIDEsIDI1MCwgMjMxLCAxMTQsIDUsIDEsIAotICAgIDI0OCwgMjQyLCAxMTQsIDUsIDEsIDIzOCwgMjM0LCAxMTQsIDUsIDEsIDI0MywgOTMsIDExNCwgNSwgMSwgMjQxLCA5MiwgCi0gICAgMTE0LCA1LCAxLCAyMDUsIDIxMywgMTE0LCA1LCAxLCAyMDIsIDg3LCAxMTQsIDUsIDEsIDIwOSwgMjMwLCAxMTQsIDUsIDEsIAotICAgIDIzMSwgNDksIDExNCwgNSwgMSwgMjMwLCA0LCAxMTQsIDUsIDEsIDIyOCwgMiwgMTE0LCA1LCAxLCAyMjUsIDEyMiwgMTE0LCAKLSAgICA1LCAxLCAyMjMsIDc0LCAxMTQsIDUsIDEsIDIyMCwgMzEsIDExNCwgNSwgMSwgMjE5LCA5MSwgMTE0LCA1LCAxLCAyMDIsIAotICAgIDc2LCAxMTQsIDUsIDEsIDIxNiwgMjAyLCAxMTQsIDUsIDEsIDIxNCwgMjQzLCAxMTQsIDUsIDEsIDIwOSwgMjE4LCAxMTQsIAotICAgIDUsIDEsIDIwNiwgMjU1LCAxMTQsIDUsIDEsIDIxOCwgMjAwLCAxMTQsIDUsIDEsIDIyOSwgMTMyLCAxMTQsIDUsIDEsIDIzOCwgCi0gICAgMTEwLCAxMTQsIDUsIDEsIDIxNywgMTExLCAxMTQsIDUsIDEsIDIxMiwgMjU1LCAxMTQsIDUsIDEsIDI0NiwgMTI5LCAxMTQsIAotICAgIDUsIDEsIDI0NywgNjEsIDExNCwgNSwgMSwgMjMwLCAxMzMsIDExNCwgNSwgMSwgMjQ2LCA2OCwgMTE0LCA1LCAxLCAyNDYsIAotICAgIDE4MywgMTE0LCA1LCAxLCAyMDMsIDE4MCwgMTE0LCA1LCAxLCAyMzAsIDE0NiwgMTE0LCA1LCAxLCAyMzcsIDE1NCwgMTE0LCAKLSAgICA1LCAxLCAyMzcsIDY3LCAxMTQsIDUsIDEsIDIzNiwgMjU0LCAxMTQsIDUsIDEsIDIwNCwgNjIsIDExNCwgNSwgMSwgMjM3LCAKLSAgICA5MiwgMTE0LCA1LCAxLCAyMzYsIDEzMiwgMTE0LCA1LCAxLCAyMDIsIDI0OSwgMTE0LCA1LCAxLCAyNTEsIDk4LCAyMDgsIAotICAgIDI0NywgMSwgMTk4LCAyMDgsIDI0NywgMSwgMjAzLCAxMDYsIDIwOCwgMjQ3LCAxLCAyMDMsIDEwNSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgOTUsIDIwOCwgMjQ3LCAxLCAyMDMsIDkzLCAyMDgsIDI0NywgMSwgMjQ4LCAxMTIsIDI1MSwgMTQwLCAyMDMsIDg4LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA4OCwgMjA4LCAyNDcsIDEsIDIwMywgMTAzLCAyMDgsIDI0NywgMSwgMjAzLCAxMDAsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDEwMiwgMjA4LCAyNDcsIDEsIDIwMywgMTAxLCAyMDgsIDI0NywgMSwgMjAzLCAxNSwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgOTcsIDIwOCwgMjQ3LCAxLCAyMDMsIDg2LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgODYsIDIwOCwgCi0gICAgMjQ3LCAxLCAyMDMsIDgzLCAyMDgsIDI0NywgMSwgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDI0OCwgMTEyLCAyNTEsIDE0MCwgCi0gICAgMjAzLCA5MSwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDkxLCAyMDgsIDI0NywgMSwgMjAzLCA5MCwgMjA4LCAyNDcsIAotICAgIDEsIDIwMywgMTEwLCAyMDgsIDI0NywgMSwgMjAzLCA4NCwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDg0LCAyMDgsIAotICAgIDI0NywgMSwgMjAzLCA3MywgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDczLCAyMDgsIDI0NywgMSwgMjAzLCAxMSwgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyNTEsIDcxLCAyMDMsIDU0LCAyMDgsIDI0NywgMSwgMjA3LCAKLSAgICAyMDAsIDIwMywgNTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDgyLCAyMDgsIDI0NywgMSwgMjAzLCA4MSwgMjA4LCAyNDcsIDEsIAotICAgIDIwMywgNzgsIDIwOCwgMjQ3LCAxLCAyMDcsIDIwMCwgMjAzLCA5MiwgMjA4LCAyNDcsIDEsIDIwNywgMjAwLCAyMDMsIDc2LCAKLSAgICAyMDgsIDI0NywgMSwgMjAzLCA3NCwgMjA4LCAyNDcsIDEsIDIwMiwgMjEzLCAyMDgsIDI0NywgMSwgMjAzLCA3MSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgNzAsIDIwOCwgMjQ3LCAxLCAyMDMsIDk0LCAyMDgsIDI0NywgMSwgMjA3LCAyMDAsIDIwMywgOTQsIAotICAgIDIwOCwgMjQ3LCAxLCAyNTAsIDQsIDIwMywgOTQsIDIwOCwgMjQ3LCAxLCAyMDMsIDY5LCAyMDgsIDI0NywgMSwgMjAzLCA2NywgCi0gICAgMjA4LCAyNDcsIDEsIDIwMywgNjgsIDIwOCwgMjQ3LCAxLCAyMDMsIDY2LCAyMDgsIDI0NywgMSwgMjAzLCA2NSwgMjA4LCAKLSAgICAyNDcsIDEsIDIwMywgMTA0LCAyMDgsIDI0NywgMSwgMjAzLCA2MywgMjA4LCAyNDcsIDEsIDIwMywgNjEsIDIwOCwgMjQ3LCAKLSAgICAxLCAyMDMsIDYwLCAyMDgsIDI0NywgMSwgMjAzLCA1OCwgMjA4LCAyNDcsIDEsIDIwMywgNTUsIDIwOCwgMjQ3LCAxLCAyMDksIAotICAgIDE5OSwgMjAzLCA1NSwgMjA4LCAyNDcsIDEsIDIwMywgNTMsIDIwOCwgMjQ3LCAxLCAyMDMsIDUyLCAyMDgsIDI0NywgMSwgCi0gICAgMjAyLCAyNDcsIDIwOCwgMjQ3LCA2NSwgMSwgMjI4LCAxMDMsIDgyLCAyMDgsIDI0NywgMjEzLCAxMzEsIDgyLCAyMDgsIAotICAgIDI0NywgMTA5LCAyMzAsIDk2LCAzMywgNCwgMjI3LCA0OCwgMzMsIDQsIDIyNCwgODEsIDMzLCA0LCAyMTUsIDIyNSwgMzMsIAotICAgIDQsIDIxMiwgMTIsIDMzLCA0LCAyMTIsIDI0MSwgMzMsIDQsIDI0OCwgMjIsIDMzLCA0LCAyMDgsIDE3MiwgMzMsIDQsIDI0NSwgCi0gICAgMjUzLCAzMywgNCwgMjIxLCAxODksIDMzLCA0LCAyMjAsIDIzMiwgMzMsIDQsIDIzOCwgNDUsIDIyMCwgOTcsIDMzLCA0LCAKLSAgICAyMDIsIDE2LCAzMywgNCwgMjQzLCAxMTEsIDMzLCA0LCAyNDQsIDg5LCAzMywgNCwgMjMwLCAxMDAsIDMzLCA0LCAyMDksIAotICAgIDQ2LCAzMywgNCwgMjQ2LCAxMTUsIDMzLCA0LCAyMTgsIDE3OSwgMzMsIDQsIDIxOCwgNjgsIDMzLCA0LCAyMzgsIDEyNSwgCi0gICAgMzMsIDQsIDIzOCwgMTIxLCAzMywgNCwgMjM4LCAxMjIsIDMzLCA0LCAyMzgsIDEyMywgMzMsIDQsIDIxMSwgMTY0LCAzMywgCi0gICAgNCwgMjExLCAxMTksIDMzLCA0LCAyMTEsIDEzMiwgMzMsIDQsIDIxMSwgMTYzLCAzMywgNCwgMjExLCAxMzcsIDMzLCA0LCAKLSAgICAyMTEsIDEzOCwgMzMsIDQsIDIxMSwgMTI0LCAzMywgNCwgMjQ3LCA1LCAzMywgNCwgMjQ2LCAyNDAsIDMzLCA0LCAyNDYsIAotICAgIDI0MiwgMzMsIDQsIDI0NywgNCwgMzMsIDQsIDI0NywgMiwgMzMsIDQsIDI0NywgMywgMzMsIDQsIDI0NiwgMjQxLCAzMywgNCwgCi0gICAgMjAxLCAyMzUsIDMzLCA0LCAyMDEsIDIxMywgMzMsIDQsIDIwMSwgMjI2LCAzMywgNCwgMjAxLCAyMzQsIDMzLCA0LCAyMDEsIAotICAgIDIyOSwgMzMsIDQsIDIwMSwgMjMwLCAzMywgNCwgMjAxLCAyMTgsIDMzLCA0LCAyNDcsIDAsIDMzLCA0LCAyNDYsIDI0MywgCi0gICAgMzMsIDQsIDI0NiwgMjQ1LCAzMywgNCwgMjQ2LCAyNTUsIDMzLCA0LCAyNDYsIDI1MywgMzMsIDQsIDI0NiwgMjU0LCAzMywgCi0gICAgNCwgMjQ2LCAyNDQsIDMzLCA0LCAyMTcsIDEzLCAzMywgNCwgMjE3LCAzLCAzMywgNCwgMjE3LCA5LCAzMywgNCwgMjE3LCAKLSAgICAxMiwgMzMsIDQsIDIxNywgMTAsIDMzLCA0LCAyMTcsIDExLCAzMywgNCwgMjE3LCA4LCAzMywgNCwgMjI4LCAxNDEsIDMzLCAKLSAgICA0LCAyMjgsIDEzMywgMzMsIDQsIDIyOCwgMTM2LCAzMywgNCwgMjI4LCAxNDAsIDMzLCA0LCAyMjgsIDEzNywgMzMsIDQsIAotICAgIDIyOCwgMTM4LCAzMywgNCwgMjI4LCAxMzQsIDMzLCA0LCAyMDMsIDE0MCwgMzMsIDQsIDIwMywgMTI3LCAzMywgNCwgMjAzLCAKLSAgICAxMzUsIDMzLCA0LCAyMDMsIDEzOSwgMzMsIDQsIDIwMywgMTM3LCAzMywgNCwgMjAzLCAxMzgsIDMzLCA0LCAyMDMsIDEzNCwgCi0gICAgMzMsIDQsIDIzNywgMTgzLCAzMywgNCwgMjM3LCAxNzMsIDMzLCA0LCAyMzcsIDE3NiwgMzMsIDQsIDIzNywgMTgyLCAzMywgCi0gICAgNCwgMjM3LCAxNzgsIDMzLCA0LCAyMzcsIDE3OSwgMzMsIDQsIDIzNywgMTc1LCAzOSwgMzYsIDEsIDI0OCwgMTYyLCAzOSwgCi0gICAgMzYsIDEsIDIwNiwgNTUsIDM5LCAzNiwgMSwgMjM4LCAxMDUsIDM5LCAzNiwgMSwgMjQ0LCA3NSwgMzksIDM2LCAxLCAyMDIsIAotICAgIDcxLCAzOSwgMzYsIDEsIDIwMiwgOTIsIDM5LCAzNiwgMSwgMTczLCAzOSwgMzYsIDEsIDI0MSwgMTIyLCAzOSwgMzYsIDEsIAotICAgIDI0MSwgMTAzLCAzOSwgMzYsIDEsIDI0MSwgOTIsIDM5LCAzNiwgMSwgNzgsIDM5LCAzNiwgMSwgMjE5LCAzNCwgMzksIDM2LCAKLSAgICAxLCAyNDEsIDI4LCAzOSwgMzYsIDEsIDI0MSwgMTcsIDM5LCAzNiwgMSwgMjA5LCAxODcsIDM5LCAzNiwgMSwgMTUyLCAzOSwgCi0gICAgMzYsIDEsIDIwOCwgMTQsIDM5LCAzNiwgMSwgMjQ2LCAxNzAsIDM5LCAzNiwgMSwgMjEzLCA5MCwgMzksIDM2LCAxLCAyMTMsIAotICAgIDQ2LCAzOSwgMzYsIDEsIDIzOSwgMjM1LCAzOSwgMzYsIDEsIDI0MSwgMTMsIDM5LCAzNiwgMSwgNjMsIDM5LCAzNiwgMSwgCi0gICAgMjMxLCAxMTAsIDM5LCAzNiwgMSwgMjQzLCAxMjksIDM5LCAzNiwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzksIDM2LCAxLCAKLSAgICAyMDMsIDY2LCAzOSwgMzYsIDEsIDIwMiwgMjEzLCAzOSwgMzYsIDEsIDIzMCwgMjI4LCA2MywgMzksIDM2LCAxLCAyMjcsIAotICAgIDg2LCAyMDIsIDE4MywgMzksIDM2LCAxLCAyNDgsIDczLCAyMDIsIDE4MywgMzksIDM2LCAxLCAyMzAsIDIyOCwgMjQ4LCA3MywgCi0gICAgMjAyLCAxODMsIDUwLCAyNTAsIDIxOCwgMjEwLCAyNDEsIDIyNSwgODgsIDUwLCAyNTAsIDIxOCwgMjQyLCA4MywgMjEwLCAKLSAgICAyNDEsIDIyNSwgODgsIDQ5LCAyMTAsIDI0MSwgMTU1LCA1MCwgMjEwLCAyNDEsIDE1NSwgNDksIDI0MiwgODMsIDIxMCwgCi0gICAgMjQxLCAxNTUsIDUwLCAyNDIsIDgzLCAyMTAsIDI0MSwgMTU1LCAyMTYsIDE4OCwgMjMwLCAyNDksIDIyNSwgODgsIDIxNiwgCi0gICAgMTg4LCAyNDIsIDgzLCAyMzAsIDI0OSwgMjI1LCA4OCwgMjQyLCA4MywgMjA4LCAxMDMsIDIyNSwgODgsIDQ5LCAyMDgsIAotICAgIDEwMywgMTU1LCA1MCwgMjA4LCAxMDMsIDE1NSwgMjE2LCAxODgsIDIxMSwgMTc3LCA0OSwgMjE2LCAxODgsIDIyMCwgMzMsIAotICAgIDE1NSwgNTAsIDIxNiwgMTg4LCAyMjAsIDMzLCAxNTUsIDI0MSwgMTYyLCAyNDUsIDE2MywgMjE5LCA4NywgMjM5LCAxNjEsIAotICAgIDIxOSwgODcsIDIxNiwgNzMsIDIzOSwgMTYxLCAyMTksIDg3LCAyMzUsIDIxNywgMjQyLCA4MywgMjIwLCA5MiwgMTgzLCAKLSAgICAyNTAsIDIyNywgMTc3LCAyNTAsIDIyNywgMjQyLCA4MywgMjE2LCAxMSwgMjUwLCAyMTcsIDUyLCAyMjAsIDg5LCAyMzUsIAotICAgIDIyMCwgMjMwLCAyMzksIDIzMCwgMjQ3LCAyMTksIDEzNSwgMjQ3LCAyMjMsIDIzNSwgMjIxLCAzLCAyNDMsIDIzMSwgMjA4LCAKLSAgICAyMjgsIDMsIDIxNSwgMjUzLCA1NSwgNDksIDEyNCwgMjE5LCA3OSwgMTU1LCA1MCwgMTI0LCAyMTksIDc5LCAxNTUsIDIwOCwgCi0gICAgMjI4LCAzLCA3MCwgNTUsIDIwOCwgMjI4LCAzLCA3MCwgNTYsIDQ5LCA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDUwLCAKLSAgICA4MCwgMjQ4LCAyMzEsIDMsIDIxNywgNDEsIDIwOCwgMTQ1LCA0OSwgMTYyLCAxNTUsIDIwOCwgMTQ1LCA1MCwgMTYyLCAxNTUsIAotICAgIDI0NywgMjQ4LCA0OSwgMTYyLCAxNTUsIDI0NywgMjQ4LCA1MCwgMTYyLCAxNTUsIDQ5LCAyMTIsIDE1NCwgMTA2LCAxNTUsIAotICAgIDUwLCAyMTIsIDE1NCwgMTA2LCAxNTUsIDQ5LCA1MiwgMjE5LCA3NiwgNTAsIDUyLCAyMTksIDc2LCAxMjAsIDE4NywgMTE1LCAKLSAgICAxMTgsIDcwLCAyMTcsIDE3OCwgMTE4LCA3MCwgMTE1LCAxMjAsIDE4NywgMjE3LCAxNzgsIDEwMywgMjM5LCAxNDcsIDcwLCAKLSAgICAyMTcsIDE3OCwgMjM5LCAyMzMsIDcwLCA4MiwgMjE2LCA3MywgMjE3LCA0NywgODIsIDgwLCAyMDgsIDIyNywgMjE1LCAyNTMsIAotICAgIDIxOCwgNjIsIDIwMywgMjM4LCAyMTMsIDEzMSwgMTAxLCAyNDMsIDg1LCAyMDcsIDE3NCwgMjQ1LCAyMzMsIDIxNiwgMTg4LCAKLSAgICAyNDMsIDg1LCAyMTYsIDE4OCwgMjQ1LCAyMzMsIDIwNywgMTc0LCAyMTMsIDE0MywgMjQ0LCAxOTYsIDMsIDQ5LCAyMzcsIAotICAgIDIyNCwgMjQ0LCAxOTYsIDMsIDUwLCAyMzcsIDIyNCwgMjA3LCAxNzQsIDI0NCwgMTk1LCAyMDgsIDE0NSwgMTYyLCAyMTQsIAotICAgIDE2OCwgNTQsIDIwNywgMTM1LCAyNDQsIDE0NCwgMjA5LCAzMCwgMjQ0LCAxNDQsIDIxMSwgNzYsIDIzOSwgMTAyLCAyMTEsIAotICAgIDYxLCA4MCwgMjEyLCA4OCwgMjQzLCA4MywgMjA0LCAyMSwgODAsIDIyNywgMTE0LCAyNDcsIDQ2LCA1MiwgMjM1LCAyMjAsIAotICAgIDIxNiwgNzMsIDI0NSwgMjMzLCA1MiwgMjI2LCAyNTIsIDIxNywgMzEsIDgyLCAxMiwgNDAsIDIxNiwgMTAwLCAxMiwgNDAsIAotICAgIDI0NiwgMjYsIDEyLCA0MCwgMjE0LCAxNzEsIDEwNSwgMTIsIDQwLCAyMTQsIDE3MSwgMTA4LCAxMiwgNDAsIDIxNCwgMTcxLCAKLSAgICAxNDcsIDEyLCA0MCwgMjE4LCAyMjksIDEyLCA0MCwgMjQ3LCAyMzMsIDEyLCA0MCwgMjEwLCA4LCAxMiwgNDAsIDIyOSwgMzQsIAotICAgIDEwNSwgMTIsIDQwLCAyMjksIDM0LCAxMDgsIDEyLCA0MCwgMjQzLCAxMzgsIDEyLCA0MCwgMjE0LCAxNzUsIDEyLCA0MCwgNSwgCi0gICAgMTA1LCAxMiwgNDAsIDUsIDEwOCwgMTIsIDQwLCAyMjgsIDIzLCAxMDUsIDEyLCA0MCwgMjI4LCAyMywgMTA4LCAxMiwgNDAsIAotICAgIDIyOCwgMjMsIDE0NywgMTIsIDQwLCAyMjgsIDIzLCAxNDksIDEyLCA0MCwgMjEyLCAyNCwgMTIsIDQwLCAyMDksIDMzLCAxMiwgCi0gICAgNDAsIDIxMiwgMjIsIDEwNSwgMTIsIDQwLCAyMTIsIDIyLCAxMDgsIDEyLCA0MCwgMjM3LCA1NiwgMTA1LCAxMiwgNDAsIAotICAgIDIzNywgNTYsIDEwOCwgMTIsIDQwLCAyMzcsIDEyMywgMTIsIDQwLCAyMTYsIDE3OCwgMTIsIDQwLCAyNDYsIDExMiwgMTIsIAotICAgIDQwLCAyMTAsIDIxNCwgMTIsIDQwLCAyMjQsIDI5LCAxMiwgNDAsIDI0NCwgNzMsIDEyLCA0MCwgMjI0LCAyMCwgMTIsIDQwLCAKLSAgICAyNDYsIDQ0LCAxMiwgNDAsIDIwNCwgODEsIDEwNSwgMTIsIDQwLCAyMDQsIDgxLCAxMDgsIDEyLCA0MCwgMjM5LCAyNDksIAotICAgIDEyLCA0MCwgMjE5LCA0NiwgMTA1LCAxMiwgNDAsIDIxOSwgNDYsIDEwOCwgMTIsIDQwLCAyMTIsIDEyNywgMTYyLCAyMDgsIAotICAgIDk2LCAyMDgsIDI1LCAxMiwgNDAsIDI0NSwgMTQ5LCAxMiwgNDAsIDI0MywgMTAyLCAxMiwgNDAsIDIzMCwgMTc2LCAxMiwgCi0gICAgNDAsIDI0OCwgMTUsIDc2LCAyNDYsIDEwLCAxMiwgNDAsIDI0MCwgMTkxLCAxMiwgNDAsIDIxMSwgMTk5LCAxMDUsIDEyLCAKLSAgICA0MCwgMjExLCAxOTksIDEwOCwgMTIsIDQwLCAyNDgsIDI0NCwgMTIsIDQwLCAyMTIsIDEzNCwgMTIsIDQwLCAyNDcsIDEyMiwgCi0gICAgMjEyLCAxMzQsIDEyLCA0MCwgMjIyLCAyMjAsIDEwNSwgMTIsIDQwLCAyMjIsIDIyMCwgMTA4LCAxMiwgNDAsIDIyMiwgMjIwLCAKLSAgICAxNDcsIDEyLCA0MCwgMjIyLCAyMjAsIDE0OSwgMTIsIDQwLCAyMjQsIDIyNywgMTIsIDQwLCAyMTMsIDM3LCAxMiwgNDAsIAotICAgIDIxNiwgMTg0LCAxMiwgNDAsIDI0MCwgMjE5LCAxMiwgNDAsIDIyMCwgNDUsIDEyLCA0MCwgMjQ3LCAyMDEsIDEwNSwgMTIsIAotICAgIDQwLCAyNDcsIDIwMSwgMTA4LCAxMiwgNDAsIDIyNSwgMTUsIDEyLCA0MCwgMjI0LCAyNCwgMTIsIDQwLCAyMzgsIDEsIDEwNSwgCi0gICAgMTIsIDQwLCAyMzgsIDEsIDEwOCwgMTIsIDQwLCAyMzgsIDEsIDE0NywgMTIsIDQwLCAyMDgsIDI0NSwgMTIsIDQwLCAyNDYsIAotICAgIDksIDEyLCA0MCwgMjA0LCA0NiwgMTA1LCAxMiwgNDAsIDIwNCwgNDYsIDEwOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjE0LCAKLSAgICAxNjUsIDEyLCA0MCwgMjEyLCAxMjcsIDIzNiwgNTMsIDEyLCA0MCwgMjM2LCA1MywgMTIsIDQwLCAyNDcsIDEyMiwgMjExLCAKLSAgICAyMTEsIDEyLCA0MCwgMjQ3LCAxMjIsIDIxMywgMzIsIDEyLCA0MCwgMjM5LCAxNzIsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0NywgCi0gICAgMjMsIDEyLCA0MCwgMjEyLCAxMjcsIDIwNCwgMTAxLCAxMiwgNDAsIDIwNCwgMTAyLCAxMDUsIDEyLCA0MCwgMjA0LCAxMDIsIAotICAgIDEwOCwgMTIsIDQwLCAyNDYsIDQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDMxLCAxMiwgNDAsIDE2MywgMTA1LCAxMiwgCi0gICAgNDAsIDE2MywgMTA4LCAxMiwgNDAsIDI0NywgMTIyLCAyMjcsIDI4LCAxMiwgNDAsIDI0NywgMTIyLCAyMzgsIDIxNiwgMTIsIAotICAgIDQwLCAyMjQsIDE2LCAxMDUsIDEyLCA0MCwgMjI0LCAxNiwgMTA4LCAxMiwgNDAsIDIxNiwgMTkwLCAxMiwgNDAsIDI0OCwgCi0gICAgMjUsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOSwgMjI0LCAyMjcsIDIyOCwgMTIsIDQwLCAyNDcsIDEyMiwgMjI3LCAyMjksIDEyLCAKLSAgICA0MCwgMjQ3LCAxMjIsIDIwNCwgMTYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIzOSwgMTkwLCAxMiwgNDAsIDI0MSwgMTczLCAxMDUsIAotICAgIDEyLCA0MCwgMjQxLCAxNzMsIDEwOCwgMTIsIDQwLCAyNDEsIDE3MywgMTQ3LCAxMiwgNDAsIDI0NywgMTIyLCAyNDEsIDE3MiwgCi0gICAgMTIsIDQwLCAyMzcsIDY0LCAxMiwgNDAsIDI0NywgMTIyLCAyMzYsIDQ5LCAxMiwgNDAsIDI0OCwgMTEsIDEyLCA0MCwgMjM4LCAKLSAgICA4OSwgMTIsIDQwLCAyNDcsIDEyMiwgMjM5LCAyNDMsIDEyLCA0MCwgMjQ3LCAxMjIsIDI0OCwgNjAsIDEyLCA0MCwgMjQ3LCAKLSAgICAxMjIsIDIxNSwgMSwgMTIsIDQwLCAyMTIsIDEyNywgMjA0LCAzOCwgMTIsIDQwLCAyMTIsIDEyNywgMjAzLCA0NCwgMTIsIAotICAgIDQwLCAyNDcsIDEyMiwgMjM5LCAxMjEsIDEyLCA0MCwgMjMwLCAxODMsIDI0MCwgMjI0LCAxMiwgNDAsIDI0NywgMTIyLCAKLSAgICAyNDAsIDIyNCwgMTIsIDQwLCAyMzAsIDE4MywgMjA4LCAxNDYsIDEyLCA0MCwgMjQ3LCAxMjIsIDIwOCwgMTQ2LCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyNDIsIDYxLCAxMiwgNDAsIDI0NywgMTIyLCAyNDIsIDYxLCAxMiwgNDAsIDIwNywgMTcxLCAxMiwgNDAsIAotICAgIDIzMCwgMTgzLCAyMDcsIDE3MSwgMTIsIDQwLCAyNDcsIDEyMiwgMjA3LCAxNzEsIDcxLCA0MCwgMTA1LCA3MSwgNDAsIDIyNywgCi0gICAgMTE0LCA3MSwgNDAsIDI0MywgODUsIDcxLCA0MCwgMjEyLCA1NywgNzEsIDQwLCAyMTQsIDE3MCwgNzEsIDQwLCAxMTMsIDcxLCAKLSAgICA0MCwgMTA4LCA3MSwgNDAsIDIyNywgMTQzLCA3MSwgNDAsIDIyNSwgMTIyLCA3MSwgNDAsIDIyNywgMjA3LCA3MSwgNDAsIAotICAgIDI0MSwgNjcsIDcxLCA0MCwgMTk5LCA3MSwgNDAsIDEyMSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjQ1LCAxNTEsIDcxLCA0MCwgCi0gICAgMjM1LCAxNjIsIDcxLCA0MCwgMjEwLCA4LCA3MSwgNDAsIDE3MSwgMjQ3LCAyMzMsIDcxLCA0MCwgMjI5LCAzMywgNzEsIDQwLCAKLSAgICAyMTgsIDE2LCA3MSwgNDAsIDIwMywgMjI4LCA3MSwgNDAsIDIxMSwgMTkwLCA3MSwgNDAsIDUwLCAxNzEsIDI0NywgMjMzLCAKLSAgICA3MSwgNDAsIDIzNiwgMjU1LCAyNDEsIDg3LCA3MSwgNDAsIDIwOSwgMTUyLCA3MSwgNDAsIDI0MywgMTM4LCA3MSwgNDAsIAotICAgIDIxNCwgMTc1LCA3MSwgNDAsIDI0NiwgMjYsIDcxLCA0MCwgMjE3LCAyMjYsIDcxLCA0MCwgMjUxLCA4MCwgNzEsIDQwLCAKLSAgICAyMjQsIDcsIDcxLCA0MCwgMjQxLCA4NywgNzEsIDQwLCAyNDEsIDE3OSwgNzEsIDQwLCAyMTQsIDE5NywgNzEsIDQwLCAyMzgsIAotICAgIDM5LCA3MSwgNDAsIDIzOCwgNDAsIDIxMiwgMzgsIDcxLCA0MCwgMjQwLCAyMjMsIDcxLCA0MCwgMjQ4LCA3MiwgNzEsIDQwLCAKLSAgICAyMDMsIDI1MCwgNzEsIDQwLCAyNDYsIDEzMywgNzEsIDQwLCAyMTUsIDIwNywgNzEsIDQwLCAyMzEsIDQ1LCA3MSwgNDAsIAotICAgIDIxMiwgMzYsIDcxLCA0MCwgMjI4LCAyMiwgNzEsIDQwLCAyNDUsIDE2MSwgNzEsIDQwLCAyMTEsIDE4MSwgNzEsIDQwLCAKLSAgICAyMjQsIDEyLCA3MSwgNDAsIDIxNSwgMjQxLCA3MSwgNDAsIDIwMywgMjM1LCA3MSwgNDAsIDIyMCwgMjUsIDcxLCA0MCwgCi0gICAgMjA3LCAxODAsIDcxLCA0MCwgMjQyLCA0NCwgNzEsIDQwLCAyMTIsIDIyOCwgMjA5LCAzMywgNzEsIDQwLCAyNDIsIDgzLCAKLSAgICAyNDYsIDI2LCA3MSwgNDAsIDE2MywgMjExLCAzOCwgNzEsIDQwLCAxMjAsIDIzNywgOTksIDcxLCA0MCwgMjEyLCAyMzQsIAotICAgIDcxLCA0MCwgMjQ3LCAyNDAsIDcxLCA0MCwgMjEyLCAyMSwgNzEsIDQwLCAyNDcsIDIwNSwgNzEsIDQwLCAyMTEsIDc1LCA3MSwgCi0gICAgNDAsIDIzNywgNTUsIDcxLCA0MCwgMjM3LCAxMzgsIDcxLCA0MCwgMjQzLCA4OCwgNzEsIDQwLCAyMzcsIDEyMywgNzEsIDQwLCAKLSAgICAyNDcsIDIyMywgNzEsIDQwLCAyMTYsIDE3OCwgNzEsIDQwLCAyMTQsIDE4MywgNzEsIDQwLCAyNDMsIDE2OSwgNzEsIDQwLCAKLSAgICAyNTAsIDksIDcxLCA0MCwgMjExLCAxNzcsIDcxLCA0MCwgMjIxLCAxNjUsIDcxLCA0MCwgMjEwLCAyMTQsIDcxLCA0MCwgCi0gICAgMjE0LCAyMDgsIDcxLCA0MCwgMjI0LCAyOSwgNzEsIDQwLCAyMDgsIDk1LCA3MSwgNDAsIDIyOCwgOTksIDcxLCA0MCwgMjExLCAKLSAgICA2MSwgNzEsIDQwLCAyNDQsIDczLCA3MSwgNDAsIDIwNCwgNjEsIDcxLCA0MCwgMjQzLCAxMTQsIDIyMSwgMTY1LCA3MSwgNDAsIAotICAgIDI0NSwgMjI5LCA3MSwgNDAsIDIzOSwgOTUsIDcxLCA0MCwgMjQ2LCAzOCwgNzEsIDQwLCAyMTEsIDgwLCA3MSwgNDAsIDIwNCwgCi0gICAgODAsIDcxLCA0MCwgMjM5LCAyNDksIDcxLCA0MCwgMjQ2LCAzNCwgNzEsIDQwLCAyNDAsIDY3LCA3MSwgNDAsIDUyLCAyMDMsIAotICAgIDE5NiwgNzEsIDQwLCAxNjIsIDIwOCwgOTYsIDIwOCwgMjUsIDcxLCA0MCwgMjEyLCA1MCwgNzEsIDQwLCAyNDAsIDc5LCA3MSwgCi0gICAgNDAsIDI0NSwgMTQ5LCA3MSwgNDAsIDI0MywgMTAyLCA3MSwgNDAsIDIxNywgMjIzLCA3MSwgNDAsIDIzMCwgMTc2LCA3MSwgCi0gICAgNDAsIDIyNCwgMjQ5LCA3MSwgNDAsIDIwOCwgMjI2LCA3MSwgNDAsIDIxMCwgMTY0LCA3MSwgNDAsIDIyNywgMTM3LCA3MSwgCi0gICAgNDAsIDIwNiwgMTkxLCA3MSwgNDAsIDI0MCwgMjQsIDcxLCA0MCwgMjQ4LCAxNSwgNzYsIDI0NiwgMTAsIDcxLCA0MCwgMjEyLCAKLSAgICAxNTgsIDcxLCA0MCwgMjQyLCA4MywgMjA5LCAxNDQsIDcxLCA0MCwgMjA0LCAzMywgNzEsIDQwLCAyMTIsIDY1LCA3MSwgNDAsIAotICAgIDI0MywgMTU2LCA3MSwgNDAsIDI0MCwgMTkxLCA3MSwgNDAsIDIxMSwgMjE0LCA3MSwgNDAsIDQ3LCA3MSwgNDAsIDIxMSwgCi0gICAgNjMsIDcxLCA0MCwgMjExLCAxOTgsIDcxLCA0MCwgMjA4LCAxMTgsIDcxLCA0MCwgMjM4LCAxMCwgNzEsIDQwLCAyNDcsIDEwLCAKLSAgICA3MSwgNDAsIDIxMSwgOTgsIDcxLCA0MCwgMjQ4LCAyNDQsIDcxLCA0MCwgMjE2LCA1MiwgNzEsIDQwLCAyMTIsIDEzNCwgNzEsIAotICAgIDQwLCAyMzAsIDE2OCwgNzEsIDQwLCAyMjIsIDIxOSwgNzEsIDQwLCAyMTMsIDM3LCA3MSwgNDAsIDI0MCwgNTUsIDcxLCA0MCwgCi0gICAgMjIwLCA0NSwgNzEsIDQwLCAyNTAsIDIyNiwgNzEsIDQwLCAyMTgsIDgzLCA3MSwgNDAsIDI0MSwgMTgzLCA3MSwgNDAsIAotICAgIDI0NywgMjAwLCA3MSwgNDAsIDIyNSwgMTUsIDcxLCA0MCwgMjI0LCAxMDQsIDcxLCA0MCwgMjEzLCAxNDksIDcxLCA0MCwgCi0gICAgMjUwLCA5OCwgNzEsIDQwLCAyMjQsIDI0LCA3MSwgNDAsIDIwOCwgMTUwLCA3MSwgNDAsIDIxOSwgMjUyLCA3MSwgNDAsIAotICAgIDI0OCwgMTksIDcxLCA0MCwgMjExLCA1OSwgNzEsIDQwLCAyNDUsIDI0MSwgNzEsIDQwLCAyMzgsIDAsIDcxLCA0MCwgMjA4LCAKLSAgICAyNDUsIDcxLCA0MCwgMjMxLCA5LCA3MSwgNDAsIDI0OCwgMzEsIDcxLCA0MCwgMjA0LCAxMDIsIDI0MSwgODcsIDcxLCA0MCwgCi0gICAgMjQ2LCA5LCA3MSwgNDAsIDIwNCwgNDUsIDcxLCA0MCwgMjE0LCAxNjUsIDcxLCA0MCwgMjM2LCA1MywgNzEsIDQwLCAyMTEsIAotICAgIDIxMSwgNzEsIDQwLCAyMDYsIDc5LCA3MSwgNDAsIDI0OCwgMTU3LCA3MSwgNDAsIDIxOCwgMTMxLCA3MSwgNDAsIDI0OSwgCi0gICAgMTMsIDcxLCA0MCwgMjEzLCAzMiwgNzEsIDQwLCAyMTYsIDEzNywgNzEsIDQwLCAyMTUsIDEyOCwgNzEsIDQwLCAyMzksIAotICAgIDE3MiwgNzEsIDQwLCAyNDgsIDE3LCA3MSwgNDAsIDI0NywgMjMsIDcxLCA0MCwgMjQ4LCA0OCwgNzEsIDQwLCAyMjQsIDI2LCAKLSAgICA3MSwgNDAsIDIwNCwgMTAxLCA3MSwgNDAsIDI0NiwgNDcsIDcxLCA0MCwgMjA0LCAxMiwgNzEsIDQwLCAyNDMsIDE0OSwgNzEsIAotICAgIDQwLCAyMDUsIDIxNCwgNzEsIDQwLCAyMzgsIDMxLCA3MSwgNDAsIDIyNywgMjgsIDcxLCA0MCwgMjM4LCAyMTYsIDcxLCA0MCwgCi0gICAgMjI0LCAxNSwgNzEsIDQwLCAyMTIsIDU2LCA3MSwgNDAsIDIxMiwgMjI4LCAyMDksIDI0NywgMjQ4LCA2MCwgNzEsIDQwLCAKLSAgICAyMTYsIDE5MCwgNzEsIDQwLCAyNDgsIDI1LCA3MSwgNDAsIDIwMywgMjE5LCA3MSwgNDAsIDI0MCwgMTAyLCA3MSwgNDAsIAotICAgIDIyNywgMjI4LCA3MSwgNDAsIDIwOSwgMjI0LCAyMjcsIDIyOCwgNzEsIDQwLCAyMjcsIDIyNCwgNzEsIDQwLCAyMTEsIDI0MCwgCi0gICAgNzEsIDQwLCAyMjcsIDIyOSwgNzEsIDQwLCAyMDQsIDE2LCA3MSwgNDAsIDIzOSwgMTkwLCA3MSwgNDAsIDI0MSwgMTcyLCAKLSAgICA3MSwgNDAsIDIzNywgNjQsIDcxLCA0MCwgMjM5LCAxMzYsIDcxLCA0MCwgMjM2LCA0OSwgNzEsIDQwLCAyNDgsIDExLCA3MSwgCi0gICAgNDAsIDIwOSwgMjMzLCA3MSwgNDAsIDIzNywgMTQ1LCA3MSwgNDAsIDI0MCwgMTcsIDcxLCA0MCwgMjE1LCAzMCwgMjA0LCAKLSAgICAxMiwgNzEsIDQwLCAyNDcsIDEyLCA3MSwgNDAsIDIzOCwgODksIDcxLCA0MCwgMjM5LCAyNDMsIDcxLCA0MCwgMjQ4LCA2MCwgCi0gICAgNzEsIDQwLCAyMTUsIDEsIDcxLCA0MCwgMjQ0LCA1OCwgNzEsIDQwLCAyMDQsIDM4LCA3MSwgNDAsIDIzNywgMzQsIDcxLCAKLSAgICA0MCwgMjAzLCA0NCwgNzEsIDQwLCAyMjQsIDExNSwgNzEsIDQwLCAyNDgsIDQzLCA3MSwgNDAsIDI0MSwgOTksIDcxLCA0MCwgCi0gICAgMjM5LCAxMjEsIDcxLCA0MCwgMjA4LCA2NywgNzEsIDQwLCAyNDIsIDQ2LCA3MSwgNDAsIDIxNiwgMTcyLCA3MSwgNDAsIAotICAgIDIyMSwgMTY3LCA3MSwgNDAsIDI0MCwgMjI0LCA3MSwgNDAsIDIwOCwgMTQ2LCA3MSwgNDAsIDI0MiwgNjEsIDcxLCA0MCwgCi0gICAgMjA3LCAxNzEsIDcxLCA0MCwgMjM5LCAxOTMsIDEzOSwgMjQ0LCAxOCwgMTY3LCA0OSwgMjA4LCAxNzMsIDIxNiwgMTYsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCA4NywgMjA4LCAxNzMsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgNDksIDIwOCwgMTczLCAKLSAgICAxMDEsIDI1LCAyMTYsIDE2LCAxMzksIDI0NCwgMTgsIDE2NywgODcsIDIwOCwgMTczLCAxMDEsIDI1LCA1NiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIzOSwgMTAyLCAyMTAsIDE4NiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgNTUsIAotICAgIDEzOSwgMjQ0LCAxOCwgMTY3LCAyMTAsIDE4NywgMjM5LCAxMjAsIDU2LCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIAotICAgIDIzOSwgMTIwLCAyMjcsIDIyMiwgMTM5LCAyNDQsIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjA2LCAyMjEsIDIyNywgCi0gICAgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjEwLCAxODcsIDIzOSwgMTIwLCAyMDYsIDIyMSwgMjE2LCAxNiwgMTM5LCAyNDQsIAotICAgIDE4LCAxNjcsIDIxMCwgMTg3LCAyMzksIDEyMCwgMjI2LCAyNTEsIDIyNywgMjIyLCAxMzksIDI0NCwgMTgsIDE2NywgMjE5LCAKLSAgICAyMDIsIDEzOSwgMjExLCAyMjgsIDEzOSwgMjQ1LCAyMzMsIDEzOSwgMjM5LCAxMDIsIDIxMSwgNjEsIDI0MywgMTQ2LCA4MiwgCi0gICAgMjMwLCAxNjksIDIzMSwgMjksIDIxMSwgOTcsIDk3LCAxMzksIDIzMCwgMTk5LCA4MiwgMTM5LCAyNDYsIDEyLCA4MiwgMTM5LCAKLSAgICA0MiwgMjAyLCA4NCwgNDksIDI1MCwgMjE4LCAxNTUsIDUwLCAyNTAsIDIxOCwgMTU1LCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDUwLCA1MiwgMjUwLCAyMTgsIDE1NSwgNDksIDI0NSwgMTY2LCAxNTUsIDUwLCAyNDUsIDE2NiwgMTU1LCA0OSwgNjEsIDI0NSwgCi0gICAgMTY2LCAxNTUsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgNDksIDYyLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjIsIDIyNywgMTg1LCAKLSAgICAxNTUsIDIxOCwgMjksIDgyLCAyMzgsIDE1OCwgODIsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1MCwgMjA4LCAxMzMsIAotICAgIDIxMywgMzMsIDE1NSwgNDksIDYxLCAyMjcsIDE4NSwgMTU1LCA1MCwgNjEsIDIyNywgMTg1LCAxNTUsIDQ5LCA2MSwgMjA4LCAKLSAgICAxMzMsIDIxMywgMzMsIDE1NSwgNTAsIDYxLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA0OSwgNjEsIDUxLCAxNTUsIDUwLCAKLSAgICA2MSwgNTEsIDE1NSwgMjA0LCA3NiwgMjQ0LCAxNDQsIDIxNiwgNzMsIDUyLCAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDUyLCAKLSAgICAyMTcsIDIzNywgMjE3LCAzMSwgODIsIDEyNCwgNTIsIDIxNywgMjM3LCAyMTcsIDMxLCA4MiwgMjE4LCAyOSwgMTMxLCAyNDAsIAotICAgIDEwMiwgMjM3LCA5NywgMjIxLCA0NCwgMTA1LCAyMzcsIDk3LCAyMjEsIDQ0LCAxMDgsIDIzNywgOTcsIDIyMSwgNDQsIDE0NywgCi0gICAgMjM3LCA5NywgMjIxLCA0NCwgMTQ5LCAyMzcsIDk3LCAyMjEsIDQ0LCAxNzAsIDIzNywgOTcsIDIyMSwgNDQsIDE5NSwgMjM3LCAKLSAgICA5NywgMjIxLCA0NCwgMjEzLCAxMTEsIDIzNywgOTcsIDIyMSwgNDQsIDE5OSwgMjM3LCA5NywgMjIxLCA0NCwgMjIyLCA2MywgCi0gICAgMTM5LCAyMjcsIDE2NywgMTQzLCA4MiwgMTM5LCAyMTUsIDI0NSwgMTQzLCA4MiwgMTM5LCAyNDQsIDI3LCAxNDMsIDgyLCAKLSAgICAxMzksIDI0MSwgNjYsIDE0MywgODIsIDI4LCAyMTIsIDEyMCwgNzAsIDE0MywgODIsIDI4LCA1MiwgNzAsIDE0MywgODIsIAotICAgIDIwNCwgNzIsIDI0NCwgMTQ0LCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgODIsIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAKLSAgICAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCA4MCwgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMDYsIDIyMSwgMjM3LCAxMzcsIAotICAgIDgwLCAyMzAsIDMsIDIxNiwgMTAxLCAzLCAyMDUsIDE4NiwgMjExLCAyNDEsIDEzMSwgMjA2LCAyMjEsIDIzNywgMTM3LCA4MCwgCi0gICAgMjMwLCAzLCAyMTYsIDEwMSwgMTMxLCAyMjYsIDI1MSwgMjM3LCAxMzcsIDQzLCAyMTgsIDI5LCA4MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMjI3LCAxMTUsIDI0MCwgNTIsIDIxMywgMTMxLCA5NywgMjM3LCA5NywgMjIxLCA0NCwgMjA5LCAxNTIsIDIzNywgCi0gICAgOTcsIDIyMSwgNDQsIDIwNywgMTUxLCAyMzcsIDk3LCAyMjEsIDQ0LCAyMDksIDUzLCA4MCwgMTM5LCAyMzAsIDE5OSwgODIsIAotICAgIDIyNSwgNzIsIDgyLCAyMTksIDcxLCAyNTAsIDI1MSwgODIsIDEzOSwgNTcsIDIzMSwgMzEsIDEzOSwgMTYyLCAyNDAsIDEwLCAKLSAgICAyMTEsIDIyOCwgMTcyLCAxLCA1LCA2MywgMTcyLCAxLCA2MywgMTcyLCAxLCA1LCA3NSwgMTcyLCAxLCA3NSwgMTcyLCAxLCAKLSAgICA1LCA2OCwgMTcyLCAxLCA2OCwgMTcyLCAxLCA1LCA3NCwgMTcyLCAxLCA3NCwgMTcyLCAxLCA1LCA3OCwgMTcyLCAxLCA3OCwgCi0gICAgMTcyLCAxLCAxNzMsIDE3MiwgMSwgMjM5LCA4LCAxNzIsIDEsIDIyOSwgMTAwLCAxNzIsIDEsIDIzOCwgODEsIDE3MiwgMSwgCi0gICAgMjI4LCAyMDksIDE3MiwgMSwgMjM3LCAyMzAsIDE3MiwgMSwgMjI5LCAyMDEsIDE3MiwgMSwgMjM4LCAxOTAsIDE3MiwgMSwgCi0gICAgMjI5LCAyNiwgMTcyLCAxLCAyMzgsIDM5LCAxNzIsIDEsIDIxNSwgMzYsIDE3MiwgMSwgMjAyLCAxMTYsIDE3MiwgMSwgMjEyLCAKLSAgICAxNjIsIDE3MiwgMSwgMjAyLCAzOSwgMTcyLCAxLCAyMTEsIDEwLCAxNzIsIDEsIDIwMiwgNiwgMTcyLCAxLCAyMTQsIDE3NywgCi0gICAgMTcyLCAxLCAyMDIsIDkyLCAxNzIsIDEsIDIxMiwgMTMsIDE3MiwgMSwgMjAyLCAxNywgMTcyLCAxLCAyMTAsIDIyLCAxNzIsIAotICAgIDEsIDI0NCwgMjEyLCAxNzIsIDEsIDIwOSwgMiwgMTcyLCAxLCAyNDMsIDIzMywgMTcyLCAxLCA1LCAyMDcsIDIwMywgMTcyLCAKLSAgICAxLCAyMDcsIDIwMywgMTcyLCAxLCAyNDIsIDQyLCAxNzIsIDEsIDIwOSwgMTg3LCAxNzIsIDEsIDI0NCwgNzUsIDE3MiwgMSwgCi0gICAgMTM1LCAxNzIsIDEsIDI0MywgMTEzLCAxNzIsIDEsIDIwMSwgMjAxLCAxNzIsIDEsIDIyMiwgMTAwLCAxNzIsIDEsIDIyMSwgCi0gICAgODQsIDE3MiwgMSwgMjIyLCAyNDAsIDE3MiwgMSwgMjIxLCAxOTEsIDE3MiwgMSwgMTUyLCAxNzIsIDEsIDI0OSwgMzIsIAotICAgIDE3MiwgMSwgMTg1LCAxNzIsIDEsIDIzNywgMywgMTcyLCAxLCAyNDgsIDg2LCAxNzIsIDEsIDIxOCwgMTY3LCAxNzIsIDEsIAotICAgIDIzNiwgMjYsIDE3MiwgMSwgMjQ3LCAxOTMsIDE3MiwgMSwgMjE3LCAxOTEsIDE3MiwgMSwgMjM3LCA2NywgMTcyLCAxLCAKLSAgICAyNDgsIDE2MiwgMTcyLCAxLCAyMTksIDM0LCAxNzIsIDEsIDIzNiwgMTM2LCAxNzIsIDEsIDI0OCwgMjMsIDE3MiwgMSwgCi0gICAgMjE4LCA2OSwgMTcyLCAxLCAxOTIsIDE3MiwgMSwgMjI0LCAxNTUsIDE3MiwgMSwgMjIzLCAyNDYsIDE3MiwgMSwgMjI1LCAKLSAgICAyMCwgMTcyLCAxLCAyMjQsIDgyLCAxNzIsIDEsIDUsIDE5OCwgMTcyLCAxLCAxOTgsIDE3MiwgMSwgNSwgMjAyLCAyMTMsIAotICAgIDE3MiwgMSwgMjAyLCAyMTMsIDE3MiwgMSwgNSwgMjAyLCAyNDcsIDE3MiwgMSwgMjAyLCAyNDcsIDE3MiwgMSwgMjE2LCAKLSAgICAyMjAsIDE3MiwgMSwgMjE2LCA1NywgMTcyLCAxLCAyMTUsIDE0NSwgMTcyLCAxLCAyMTYsIDE1OCwgMTcyLCAxLCAyMTUsIAotICAgIDIyNywgMTcyLCAxLCA1LCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDExMSwgMTcyLCAxLCAyMDQsIDMwLCAxNzIsIDEsIDIwNCwgCi0gICAgNjIsIDE3MiwgMSwgMjA0LCAwLCAxNzIsIDEsIDIyMywgMTYzLCAxNzIsIDEsIDIwNCwgMTYzLCAxNzIsIDEsIDUsIDE3MywgCi0gICAgMTcyLCAxLCA1LCAyMjksIDIwMSwgMzksIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAzOSwgMjI5LCAyMjUsIAotICAgIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDIyOSwgMjI1LCAyMDUsIDE4NiwgMjExLCAyNDEsIDgyLCAyMjksIDIyNSwgMjEzLCAKLSAgICAxNDgsIDIxMSwgMjQxLCA4MiwgMTcyLCAyMzAsIDE5OSwgODIsIDE3MiwgMjA1LCAxODYsIDIzMCwgMTk5LCA4MiwgMTcyLCAKLSAgICAyNDMsIDE5MiwgMjAyLCAyMjgsIDIyOSwgMjI1LCA1MiwgMjM1LCAyMjAsIDY3LCAxLCA1LCA2MywgNjcsIDEsIDYzLCA2NywgCi0gICAgMSwgNSwgNzUsIDY3LCAxLCA3NSwgNjcsIDEsIDUsIDY4LCA2NywgMSwgNjgsIDY3LCAxLCA1LCA3NCwgNjcsIDEsIDc0LCAKLSAgICA2NywgMSwgNSwgNzgsIDY3LCAxLCA3OCwgNjcsIDEsIDE3MywgNjcsIDEsIDIzOSwgOCwgNjcsIDEsIDIyOSwgMTAwLCA2NywgCi0gICAgMSwgMjM4LCA4MSwgNjcsIDEsIDIyOCwgMjA5LCA2NywgMSwgMjM3LCAyMzAsIDY3LCAxLCAyMjksIDIwMSwgNjcsIDEsIAotICAgIDIzOCwgMTkwLCA2NywgMSwgMjI5LCAyNiwgNjcsIDEsIDIzOCwgMzksIDY3LCAxLCAyMTUsIDM2LCA2NywgMSwgMjAyLCAKLSAgICAxMTYsIDY3LCAxLCAyMTIsIDE2MiwgNjcsIDEsIDIwMiwgMzksIDY3LCAxLCAyMTEsIDEwLCA2NywgMSwgMjAyLCA2LCA2NywgCi0gICAgMSwgMjE0LCAxNzcsIDY3LCAxLCAyMDIsIDkyLCA2NywgMSwgMjEyLCAxMywgNjcsIDEsIDIwMiwgMTcsIDY3LCAxLCAyMTAsIAotICAgIDIyLCA2NywgMSwgMjQ0LCAyMTIsIDY3LCAxLCAyMDksIDIsIDY3LCAxLCAyNDMsIDIzMywgNjcsIDEsIDUsIDIwNywgMjAzLCAKLSAgICA2NywgMSwgMjA3LCAyMDMsIDY3LCAxLCAyNDIsIDQyLCA2NywgMSwgMjA5LCAxODcsIDY3LCAxLCAyNDQsIDc1LCA2NywgMSwgCi0gICAgMTM1LCA2NywgMSwgMjQzLCAxMTMsIDY3LCAxLCAyMDEsIDIwMSwgNjcsIDEsIDIyMiwgMTAwLCA2NywgMSwgMjIxLCA4NCwgCi0gICAgNjcsIDEsIDIyMiwgMjQwLCA2NywgMSwgMjIxLCAxOTEsIDY3LCAxLCAxNTIsIDY3LCAxLCAyNDksIDMyLCA2NywgMSwgMTg1LCAKLSAgICA2NywgMSwgMjM3LCAzLCA2NywgMSwgMjQ4LCA4NiwgNjcsIDEsIDIxOCwgMTY3LCA2NywgMSwgMjM2LCAyNiwgNjcsIDEsIAotICAgIDI0NywgMTkzLCA2NywgMSwgMjE3LCAxOTEsIDY3LCAxLCAyMzcsIDY3LCA2NywgMSwgMjQ4LCAxNjIsIDY3LCAxLCAyMTksIAotICAgIDM0LCA2NywgMSwgMjM2LCAxMzYsIDY3LCAxLCAyNDgsIDIzLCA2NywgMSwgMjE4LCA2OSwgNjcsIDEsIDE5MiwgNjcsIDEsIAotICAgIDIyNCwgMTU1LCA2NywgMSwgMjIzLCAyNDYsIDY3LCAxLCAyMjUsIDIwLCA2NywgMSwgMjI0LCA4MiwgNjcsIDEsIDUsIDE5OCwgCi0gICAgNjcsIDEsIDE5OCwgNjcsIDEsIDUsIDIwMiwgMjEzLCA2NywgMSwgMjAyLCAyMTMsIDY3LCAxLCA1LCAyMDIsIDI0NywgNjcsIAotICAgIDEsIDIwMiwgMjQ3LCA2NywgMSwgMjE2LCAyMjAsIDY3LCAxLCAyMTYsIDU3LCA2NywgMSwgMjE1LCAxNDUsIDY3LCAxLCAKLSAgICAyMTYsIDE1OCwgNjcsIDEsIDIxNSwgMjI3LCA2NywgMSwgNSwgMjA0LCAxMTEsIDY3LCAxLCAyMDQsIDExMSwgNjcsIDEsIAotICAgIDIwNCwgMzAsIDY3LCAxLCAyMDQsIDYyLCA2NywgMSwgMjA0LCAwLCA2NywgMSwgMjIzLCAxNjMsIDY3LCAxLCAyMDQsIDE2MywgCi0gICAgNjcsIDEsIDUsIDE3MywgNjcsIDEsIDUsIDIyOSwgMjAxLCA2NywgMSwgMjA2LCA4NiwgNjcsIDEsIDIwNSwgMjMwLCA2NywgCi0gICAgMSwgMjA2LCA1NSwgNjcsIDEsIDIwNSwgMTg5LCA2NywgMTAxLCAyNDMsIDg1LCAyMjksIDIyNSwgMjE3LCAyMTUsIDIxMSwgCi0gICAgMjQxLCA4MiwgNjcsIDIzMCwgMTk5LCA4MiwgNjcsIDIwNSwgMTg2LCAyMzAsIDE5OSwgODIsIDY3LCAyNDMsIDE5MiwgMjI4LCAKLSAgICAyNDksIDI0OCwgMSwgMSwgMjQ5LCAyNTUsIDI0OCwgMSwgMSwgMjE5LCAxODQsIDI0OCwgMSwgMSwgMjI2LCAxODUsIDI0OCwgCi0gICAgMSwgMSwgMjQwLCAxNzQsIDI0OCwgMSwgMSwgMjQ1LCA1MSwgMjQ4LCAxLCAxLCAyMTAsIDY5LCAyNDgsIDEsIDEsIDIyMywgCi0gICAgMTYzLCAyNDgsIDEsIDEsIDE1OSwgMjQ4LCAxLCAxLCAyMzksIDc1LCAyNDgsIDEsIDEsIDIzMCwgNTQsIDI0OCwgMSwgMSwgCi0gICAgMjM3LCAxNzEsIDI0OCwgMSwgMSwgMjMwLCAxODQsIDI0OCwgMSwgMSwgMjE3LCAxMzQsIDI0OCwgMSwgMSwgMjAzLCAxOTYsIAotICAgIDI0OCwgMSwgMSwgMjAyLCA4MSwgMjQ4LCAxLCAxLCAyNDYsIDIwMCwgMjQ4LCAxLCAxLCAyMTMsIDkyLCAyNDgsIDEsIDEsIAotICAgIDE0NiwgMjQ4LCAxLCAxLCAyMDIsIDE1OSwgMjQ4LCAxLCAxLCAyNDcsIDEyNSwgMjQ4LCAxLCAxLCAxOTQsIDI0OCwgMSwgMSwgCi0gICAgNjMsIDI0OCwgMSwgMSwgNzgsIDI0OCwgMSwgMSwgNzQsIDI0OCwgMSwgMSwgMjQxLCAxNDcsIDI0OCwgMSwgMSwgMjUxLCAKLSAgICA2NCwgMjQ4LCAxLCAxLCAyNDEsIDE0NSwgMjQ4LCAxLCAxLCAyNTAsIDM0LCAyNDgsIDEsIDEsIDIxOSwgMjE2LCAyNDgsIDEsIAotICAgIDEsIDI1MCwgMjMxLCAyNDgsIDEsIDEsIDI0MSwgOTIsIDI0OCwgMSwgMSwgMjUwLCAyMjMsIDI0OCwgMSwgMSwgMjQxLCA3OCwgCi0gICAgMjQ4LCAxLCAxLCAyNDEsIDI4LCAyNDgsIDEsIDEsIDc1LCAyNDgsIDEsIDEsIDY4LCAyNDgsIDEsIDEsIDIzMCwgMTk3LCAKLSAgICAyNDgsIDEsIDEsIDIwNiwgMTY0LCAyNDgsIDEsIDEsIDIyMiwgMjA1LCAyNDgsIDEsIDEsIDIzOCwgNDMsIDI0OCwgMSwgMSwgCi0gICAgMjMxLCA4NCwgMjgsIDEsIDIyOSwgNTksIDI4LCAxLCAyMTEsIDE1NiwgMjgsIDEsIDIyOSwgNTIsIDI4LCAxLCAyMjIsIDkzLCAKLSAgICAyOCwgMSwgMjIyLCA5MSwgMjgsIDEsIDIyMiwgOTAsIDI4LCAxLCAyMDgsIDI0MCwgMjgsIDEsIDIxMSwgMTQ1LCAyOCwgMSwgCi0gICAgMjE2LCA0NywgMjgsIDEsIDIxNiwgNDIsIDI4LCAxLCAyMTYsIDM5LCAyOCwgMSwgMjE2LCAzMiwgMjgsIDEsIDIxNiwgMjcsIAotICAgIDI4LCAxLCAyMTYsIDIyLCAyOCwgMSwgMjE2LCAzMywgMjgsIDEsIDIxNiwgNDUsIDI4LCAxLCAyMjQsIDE0MSwgMjgsIDEsIAotICAgIDIxOCwgMTUzLCAyOCwgMSwgMjExLCAxNTMsIDI4LCAxLCAyMTgsIDE0MiwgMjgsIDEsIDIxMiwgMTExLCAyOCwgMSwgMjExLCAKLSAgICAxNTAsIDI4LCAxLCAyMzEsIDEwNiwgMjgsIDEsIDI0NiwgNzQsIDI4LCAxLCAyMTEsIDE2MCwgMjgsIDEsIDI0NiwgMTM4LCAKLSAgICAyOCwgMSwgMjI5LCAxMjAsIDI4LCAxLCAyMDksIDY2LCAyOCwgMSwgMjE4LCAxOTAsIDI4LCAxLCAyMzYsIDI1MSwgMjgsIDEsIAotICAgIDYzLCAyOCwgMSwgMjUxLCAxMDksIDI4LCAxLCAxOTgsIDI4LCAxLCAyMDMsIDk5LCAyOCwgMSwgMjQxLCA1NSwgMjgsIDEsIAotICAgIDc0LCAyOCwgMSwgMjAzLCAzOSwgMjgsIDEsIDIwMywgNTIsIDI4LCAxLCA3OCwgMjgsIDEsIDIwNCwgMTExLCAyOCwgMSwgCi0gICAgMjA0LCAxMDcsIDI4LCAxLCAyMjAsIDczLCAyOCwgMSwgMjAyLCAyNDcsIDI4LCAxLCA2OCwgMjgsIDEsIDIwNCwgNDgsIDI4LCAKLSAgICAxLCAyMDQsIDYyLCAyOCwgMSwgMjA0LCAzMCwgMjgsIDEsIDIwMiwgMjEzLCAyOCwgMSwgMjQwLCAyMzgsIDI4LCAxLCAyMDMsIAotICAgIDExLCAyOCwgMSwgNzUsIDI4LCAyNDAsIDcsIDI4LCAxLCAyMTEsIDE1NCwgMjgsIDEsIDIyMiwgODMsIDI4LCAxLCAyMjIsIAotICAgIDg1LCAyOCwgMSwgMjIyLCA4OCwgMjgsIDEsIDIxNiwgNDAsIDI4LCAxLCAyMTYsIDIxLCAyOCwgMSwgMjE2LCAyOSwgMjgsIAotICAgIDEsIDIxNiwgMzQsIDI4LCAxLCAyMTYsIDE5LCAyOCwgMSwgMjI0LCAxMzQsIDI4LCAxLCAyMjQsIDEzMSwgMjgsIDEsIDIyNCwgCi0gICAgMTM1LCAyOCwgMSwgMjI5LCAyNDYsIDI4LCAxLCAyMTgsIDE0OCwgMjgsIDEsIDIxOCwgMTM0LCAyOCwgMSwgMjE4LCAxNDAsIAotICAgIDI4LCAxLCAyMTgsIDEzNywgMjgsIDEsIDIxOCwgMTUxLCAyOCwgMSwgMjE4LCAxMzUsIDI4LCAxLCAyMjksIDI0NCwgMjgsIAotICAgIDEsIDIyOSwgMjQyLCAyOCwgMSwgMjEyLCAxMDQsIDI4LCAxLCAyMTIsIDEwMiwgMjgsIDEsIDIxMiwgOTQsIDI4LCAxLCAKLSAgICAyMTIsIDk5LCAyOCwgMSwgMjEyLCAxMDksIDI4LCAxLCAyMTksIDEwNywgMjgsIDEsIDIxMSwgMTU3LCAyOCwgMSwgMjAzLCAKLSAgICAyOSwgMjgsIDEsIDIwMywgMjUsIDI4LCAxLCAyMDMsIDI2LCAyOCwgMSwgMjI5LCAyNDUsIDI4LCAxLCAyMTEsIDE1OCwgMjgsIAotICAgIDEsIDIwMywgMzUsIDI4LCAxLCAyMDIsIDI0MSwgMjgsIDEsIDIwMiwgMjQwLCAyOCwgMSwgMjAyLCAyNDMsIDI4LCAxLCAKLSAgICAyMDIsIDIwNCwgMjgsIDEsIDIwMiwgMjA1LCAyOCwgMSwgMjAyLCAyMDgsIDI4LCAxLCAyNTAsIDEzNywgMjgsIDEsIDI1MCwgCi0gICAgMTMxLCAxMzksIDI1MCwgMjA1LCAyMjcsIDEwMywgODIsIDEzOSwgMjUwLCAyMDUsIDIxNiwgNzQsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAxMTgsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjAsIDgyLCAxMzksIDI1MCwgMjA1LCAxMjYsIDgyLCAxMzksIDI1MCwgCi0gICAgMjA1LCAyMzksIDE0NywgODIsIDEzOSwgMjUwLCAyMDUsIDIwOCwgMTQ1LCA4MiwgMTM5LCAyNTAsIDIwNSwgMTAxLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjQ3LCAyNDgsIDgyLCAxMzksIDI1MCwgMjA1LCAyMzksIDI0NSwgODIsIDEzOSwgMjUwLCAyMDUsIAotICAgIDIxNCwgMTcxLCA4MiwgMTM5LCAyNTAsIDIwNSwgMjA5LCA2MSwgODIsIDEzOSwgMjUwLCAyMDUsIDIzOSwgMTQwLCA4MiwgCi0gICAgMTM5LCAyNTAsIDIwNSwgMjM3LCA1MiwgODIsIDEzOSwgMjUwLCAyMDUsIDI0MSwgMTgwLCA4MiwgMTM5LCAyNTAsIDIwNSwgCi0gICAgMjI1LCAxMjMsIDgyLCAyNDgsIDEsIDEsIDI0NywgMTkzLCAyNDgsIDEsIDEsIDIwMiwgMzksIDI0OCwgMSwgMSwgMjMwLCAKLSAgICAxNDEsIDI0OCwgMSwgMSwgMjM3LCAyMzAsIDI0OCwgMSwgMSwgMjQxLCAxNjEsIDI0OCwgMSwgMSwgMjQxLCA3NSwgMjQ4LCAKLSAgICAxLCAxLCAyMjAsIDE4LCAyNDgsIDEsIDEsIDIyMCwgMjIsIDI0OCwgMSwgMSwgMjMwLCAyMjQsIDI0OCwgMSwgMSwgMjUwLCAKLSAgICAyMDcsIDI0OCwgMSwgMSwgMjMxLCAxNiwgMjQ4LCAxLCAxLCAyMDYsIDIyOSwgMjQ4LCAxLCAxLCAyMzEsIDY2LCAyNDgsIDEsIAotICAgIDEsIDIyMiwgMTgzLCAyNDgsIDEsIDEsIDI1MSwgNTgsIDI0OCwgMSwgMSwgMjUwLCAyOSwgMjQ4LCAxLCAxLCAyNTAsIDI0NywgCi0gICAgMjQ4LCAxLCAxLCAyMjAsIDM5LCAyNDgsIDEsIDEsIDIyMCwgMjQsIDI0OCwgMSwgMSwgMjMxLCAxMywgMjQ4LCAxLCA0NiwgCi0gICAgMSwgMjE5LCAxODQsIDI0OCwgMSwgNDYsIDEsIDIxMCwgNjksIDI0OCwgMSwgNDYsIDEsIDIzMCwgNTQsIDI0OCwgMSwgNDYsIAotICAgIDEsIDIzNywgMTcxLCAyNDgsIDEsIDEsIDIzOCwgMTIwLCAyNDgsIDEsIDEsIDIyNywgMTYyLCAyNDgsIDEsIDEsIDIwMSwgCi0gICAgMjQyLCAxMiwgMjExLCAzMiwgMjEwLCA2OSwgMTIsIDIxMSwgMzIsIDIwNCwgNDEsIDEyLCAyMTEsIDMyLCAyMDMsIDE3MSwgCi0gICAgMTIsIDIxMSwgMzIsIDI0NywgMTM4LCAxMiwgMjExLCAzMiwgMjEwLCAxNzMsIDEyLCAyMTEsIDMyLCAyMzUsIDIxMCwgMTIsIAotICAgIDIxMSwgMzIsIDIzNSwgMjE0LCAxMiwgMjExLCAzMiwgMjM2LCAzNSwgMTIsIDIxMSwgMzIsIDIzNSwgMjExLCAxMiwgMjExLCAKLSAgICAzMiwgMjEwLCA3MiwgMTIsIDIxMSwgMzIsIDIzNSwgMjEzLCAxMiwgMjExLCAzMiwgMjM1LCAyMDksIDEyLCAyMTEsIDMyLCAKLSAgICAyMzYsIDMzLCAxMiwgMjExLCAzMiwgMjM1LCAyMTIsIDEyLCAyMTEsIDMyLCAyMzUsIDIwOCwgMTIsIDIxMSwgMzIsIDIyMywgCi0gICAgMTYzLCAxMiwgMjExLCAzMiwgMjM3LCAxNzEsIDEyLCAyMTEsIDMyLCAxOTQsIDEyLCAyMTEsIDMyLCAyMTksIDE4NCwgMTIsIAotICAgIDIxMSwgMzIsIDIxMSwgMjMxLCAxMiwgMjExLCAzMiwgMjQ1LCA1MSwgMTIsIDIxMSwgMzIsIDIzNSwgMjE1LCAxMiwgMjExLCAKLSAgICAzMiwgMjM3LCAxMywgMTIsIDIxMSwgMzIsIDIxMCwgODEsIDEyLCAyMTEsIDMyLCAyMTAsIDE1MiwgMTIsIDIxMSwgMzIsIAotICAgIDIxMSwgMTA4LCAxMiwgMjExLCAzMiwgMjEzLCA5OCwgMTIsIDIxMSwgMzIsIDIxOSwgMzgsIDEyLCAyMTEsIDMyLCAyMTcsIAotICAgIDEzNiwgMTIsIDIxMSwgMzIsIDIwOCwgMTc0LCAxMiwgMjExLCAzMiwgMjEwLCA3MSwgMTIsIDIxMSwgMzIsIDIxMCwgMTYzLCAKLSAgICAxMiwgMjExLCAzMiwgMjM1LCAyMjMsIDEyLCAyMTEsIDMyLCAyMzUsIDIwNywgMTIsIDIxMSwgMzIsIDIxOCwgMjEwLCAxMiwgCi0gICAgMjExLCAzMiwgMjE3LCAxMzQsIDY3LCAxLCA1LCAyMjgsIDIwOSwgNjcsIDEsIDUsIDIxMiwgMTYyLCA2NywgMSwgNSwgMjExLCAKLSAgICAxMCwgNjcsIDEsIDUsIDEzNSwgNjcsIDEsIDUsIDIyMSwgODQsIDY3LCAxLCA1LCAxNTIsIDY3LCAxLCA1LCAyMzcsIDMsIAotICAgIDY3LCAxLCA1LCAyMzYsIDI2LCA2NywgMSwgNSwgMjM3LCA2NywgNjcsIDEsIDUsIDIzNiwgMTM2LCA2NywgMSwgNSwgMjIzLCAKLSAgICAyNDYsIDY3LCAxLCA1LCAyMTYsIDIyMCwgNjcsIDEsIDUsIDIxNiwgNTcsIDY3LCAxLCA1LCAyMTUsIDE0NSwgNjcsIDEsIDUsIAotICAgIDIxNiwgMTU4LCA2NywgMSwgNSwgMjE1LCAyMjcsIDEwMiwgMjgsIDIyOSwgNTksIDEwMiwgMjgsIDIyMiwgOTMsIDEwMiwgCi0gICAgMjgsIDIwOCwgMjQwLCAxMDIsIDI4LCAyMTYsIDQ3LCAxMDIsIDI4LCAyMjQsIDE0MSwgMTAyLCAyOCwgMjE4LCAxNTMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTExLCAxMDIsIDI4LCAyMzEsIDEwNiwgMTAyLCAyOCwgMjQ2LCA3NCwgMTAyLCAyOCwgMjQ2LCAKLSAgICAxMzgsIDEwMiwgMjgsIDIyOSwgMTIwLCAxMDIsIDI4LCAyMDksIDY2LCAxMDIsIDI4LCAyMTgsIDE5MCwgMTAyLCAyOCwgCi0gICAgMjM2LCAyNTEsIDEwMiwgMjgsIDIyOSwgNjAsIDYzLCAxMDIsIDI4LCAyMjIsIDk0LCA2MywgMTAyLCAyOCwgMjA4LCAyNDEsIAotICAgIDYzLCAxMDIsIDI4LCAyMTYsIDQ4LCA2MywgMTAyLCAyOCwgMjI0LCAxNDIsIDYzLCAxMDIsIDI4LCAyMTgsIDE1NCwgNjMsIAotICAgIDEwMiwgMjgsIDIxMiwgMTEyLCA2MywgMTAyLCAyOCwgMjMxLCAxMDcsIDYzLCAxMDIsIDI4LCAyNDYsIDc1LCA2MywgMTAyLCAKLSAgICAyOCwgMjQ2LCAxMzksIDYzLCAxMDIsIDI4LCAyMjksIDEyMSwgNjMsIDEwMiwgMjgsIDIwOSwgNjcsIDYzLCAxMDIsIDI4LCAKLSAgICAyMTgsIDE5MSwgNjMsIDEwMiwgMjgsIDIzNiwgMjUyLCA2MywgMTAyLCAyOCwgMjQ2LCA3NSwgNjgsIDEwMiwgMjI4LCAyNTMsIAotICAgIDE2NywgMjIwLCA1NCwgMTAyLCAyMjgsIDI1MywgMTY3LCAxNTgsIDIzNiwgMjYsIDEwMiwgMTg5LCAxMDUsIDEwMiwgMTg5LCAKLSAgICAxMDgsIDEwMiwgMTg5LCAxNDcsIDEwMiwgMTg5LCAxNDksIDEwMiwgMTg5LCAxNzAsIDEwMiwgMTg5LCAxOTUsIDEwMiwgCi0gICAgMTg5LCAyMTMsIDExMSwgMTAyLCAxODksIDE5OSwgMTAyLCAxODksIDIyMiwgNjMsIDEwMiwgMTg5LCAyMDksIDE1MiwgMTAyLCAKLSAgICAxODksIDIyNCwgMjksIDEwMiwgMTg5LCAyMzksIDI0OSwgMTAyLCAxODksIDIwNCwgODAsIDEwMiwgMTg5LCAyMDMsIDI0MywgCi0gICAgMTAyLCAxODksIDIyNCwgMjIwLCAxMDIsIDE4OSwgMjQxLCAxNzksIDEwMiwgMTg5LCAyMTAsIDIxNCwgMTAyLCAxODksIAotICAgIDIxMSwgNjQsIDEwMiwgMTg5LCAyMzcsIDc0LCAxMDIsIDE4OSwgMjEyLCA5LCAxMDIsIDE4OSwgMjIzLCA4NCwgMTAyLCAKLSAgICAxODksIDIxMSwgMjEzLCAxMDIsIDE4OSwgMjQwLCA0LCAxMDIsIDE4OSwgMjQ1LCAyMTEsIDEwMiwgMTg5LCAyMjgsIDEwMiwgCi0gICAgMTAyLCAxODksIDIxNiwgOTUsIDEwMiwgMTg5LCAyNDcsIDcxLCAxMDIsIDE4OSwgMjExLCAxNCwgMTAyLCAxODksIDIxMCwgCi0gICAgMTk2LCAxMDIsIDE4OSwgMjQxLCA2NSwgMTAyLCAxODksIDIxNiwgODcsIDEwMiwgMTg5LCAyNTEsIDEwLCAxMDIsIDE4OSwgCi0gICAgMjQwLCAzMywgMTAyLCAxODksIDIxNiwgODUsIDEwMiwgMTg5LCAyMTMsIDE0OSwgMTAyLCAxODksIDIxNiwgMTU3LCA0MywgCi0gICAgMTg5LCAyMTcsIDQ2LCA0MywgMTg5LCAyMjksIDgzLCA0MywgMTg5LCAyMTQsIDE5NSwgNDMsIDE4OSwgMjI4LCAyNDksIDQzLCAKLSAgICA0MiwgMjA5LCAxNTMsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMDcsIDE1MiwgMjIwLCAzMiwgNjIsIDIxMSwgCi0gICAgMTc3LCA0MywgNDIsIDIwOSwgNTQsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMzksIDE1NCwgMjIwLCAzMiwgCi0gICAgNjIsIDIxMSwgMTc3LCA0MywgNDIsIDI0MCwgMTksIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAyMTIsIDc1LCAKLSAgICAyMjAsIDMyLCA2MiwgMjExLCAxNzcsIDQzLCA0MiwgMjEzLCAxMDYsIDIyMCwgMzIsIDYyLCAyMTEsIDE3NywgNDMsIDQyLCAKLSAgICAyNDEsIDEzNSwgMjIwLCAzMiwgNjIsIDIxMSwgMTc3LCAyMTksIDY3LCA1NCwgNDMsIDQyLCAyMDcsIDE1MiwgMTA1LCA0MywgCi0gICAgNDIsIDIwNywgMTUyLCAxMDgsIDQzLCA0MiwgMjA3LCAxNTIsIDE0NywgNDMsIDQyLCAyMDcsIDE1MiwgMTQ5LCA0MywgNDIsIAotICAgIDIwNywgMTUyLCAxNzAsIDQzLCA0MiwgMjA3LCAxNTIsIDE5NSwgNDMsIDQyLCAyMDcsIDE1MiwgMjEzLCAxMTEsIDQzLCA0MiwgCi0gICAgMjA3LCAxNTIsIDE5OSwgNDMsIDQyLCAyMDcsIDE1MiwgMjIyLCA2MywgNDMsIDQyLCAyMDksIDUzLCA0MywgNDIsIDIwOSwgCi0gICAgNTQsIDEwNSwgNDMsIDQyLCAyMDksIDU0LCAxMDgsIDQzLCA0MiwgMjA5LCA1NCwgMTQ3LCA0MywgNDIsIDIwOSwgNTQsIAotICAgIDE0OSwgNDMsIDQyLCAyMDksIDU0LCAxNzAsIDQzLCAyOCwgMjI5LCA1OSwgNDMsIDI4LCAyMjIsIDkzLCA0MywgMjgsIDIwOCwgCi0gICAgMjQwLCA0MywgMjgsIDIxNiwgNDcsIDQzLCAyOCwgMjI0LCAxNDEsIDQzLCAyOCwgMjE4LCAxNTMsIDQzLCAyOCwgMjEyLCAKLSAgICAxMTEsIDQzLCAyOCwgMjMxLCAxMDYsIDQzLCAyOCwgMjQ2LCA3NCwgNDMsIDI4LCAyNDYsIDEzOCwgNDMsIDI4LCAyMjksIAotICAgIDEyMCwgNDMsIDI4LCAyMDksIDY2LCA0MywgMjgsIDIxOCwgMTkwLCA0MywgMjgsIDIzNiwgMjUxLCA0MywgMjgsIDIyOSwgCi0gICAgNjAsIDYzLCA0MywgMjgsIDIyMiwgOTQsIDYzLCA0MywgMjgsIDIwOCwgMjQxLCA2MywgNDMsIDI4LCAyMTYsIDQ4LCA2MywgCi0gICAgNDMsIDI4LCAyMjQsIDE0MiwgNjMsIDQzLCAyOCwgMjE4LCAxNTQsIDYzLCA0MywgMjgsIDIxMiwgMTEyLCA2MywgNDMsIDI4LCAKLSAgICAyMzEsIDEwNywgNjMsIDQzLCAyOCwgMjQ2LCA3NSwgNjMsIDQzLCAyOCwgMjQ2LCAxMzksIDYzLCA0MywgMjgsIDIyOSwgCi0gICAgMTIxLCA2MywgNDMsIDI4LCAyMDksIDY3LCA2MywgNDMsIDI4LCAyMTgsIDE5MSwgNjMsIDQzLCAyOCwgMjM2LCAyNTIsIDYzLCAKLSAgICA0MywgMjI4LCAyNTMsIDE2NywgMjQ2LCAxODksIDQzLCAyMjgsIDI1MywgMTY3LCAyMzAsIDc4LCA0MywgMjgsIDIzMSwgCi0gICAgMTA3LCA2OCwgMjI4LCAyNTMsIDIxMSwgOTcsIDk3LCA0MywgMTg5LCAxMDUsIDQzLCAxODksIDEwOCwgNDMsIDE4OSwgMTQ3LCAKLSAgICA0MywgMTg5LCAxNDksIDQzLCAxODksIDE3MCwgNDMsIDE4OSwgMTk1LCA0MywgMTg5LCAyMTMsIDExMSwgNDMsIDE4OSwgCi0gICAgMTk5LCA0MywgMTg5LCAyMjIsIDYzLCA0MywgMTg5LCAyMDksIDE1MiwgNDMsIDE4OSwgMjI0LCAyOSwgNDMsIDE4OSwgMjM5LCAKLSAgICAyNDksIDQzLCAxODksIDIwNCwgODAsIDQzLCAxODksIDIwMywgMjQzLCA0MywgMTg5LCAyMjQsIDIyMCwgNDMsIDE4OSwgCi0gICAgMjQxLCAxNzksIDQzLCAxODksIDIxMCwgMjE0LCA0MywgMTg5LCAyMTEsIDY0LCA0MywgMTg5LCAyMzcsIDc0LCA0MywgMTg5LCAKLSAgICAyMTIsIDksIDQzLCAxODksIDIyMywgODQsIDQzLCAxODksIDIxMSwgMjEzLCA0MywgMTg5LCAyNDAsIDQsIDQzLCAxODksIAotICAgIDI0NSwgMjExLCA0MywgMTg5LCAyMjgsIDEwMiwgNDMsIDE4OSwgMjE0LCAxNjksIDQzLCAxODksIDIyNSwgMTI2LCA0MywgCi0gICAgMTg5LCAyNDAsIDQyLCA0MywgMTg5LCAyMTAsIDIyNiwgNDMsIDE4OSwgMjQwLCAyMTYsIDQzLCAxODksIDIxNywgMjMzLCAKLSAgICA0MywgMTg5LCAyNTAsIDM4LCA0MywgMTg5LCAyMzAsIDIwMCwgNDMsIDE4OSwgMjE2LCA4NSwgNDMsIDE4OSwgMjQ1LCAxNzAsIAotICAgIDQzLCAxODksIDI0NSwgMTYwLCA0MywgMTg5LCAyMzYsIDI0NCwgNDMsIDE4OSwgMjQ2LCAyMTcsIDQzLCAxODksIDIyNywgMCwgCi0gICAgNDMsIDE4OSwgMjI3LCAyMjIsIDQzLCAxODksIDIxNiwgMTYsIDQzLCAxODksIDIyNSwgMTEsIDQzLCAxODksIDIxNiwgMTEyLCAKLSAgICA0MywgMTg5LCAyMTEsIDE0LCA0MywgMTg5LCAyMTAsIDE5NiwgNDMsIDE4OSwgMjQxLCA2NSwgNDMsIDE4OSwgMjE2LCA4NywgCi0gICAgNDMsIDE4OSwgMjUxLCAxMCwgNDMsIDE4OSwgMjIyLCA3OSwgNDMsIDQyLCAyMDksIDU0LCAxOTUsIDQzLCA0MiwgMjA5LCAKLSAgICA1NCwgMjEzLCAxMTEsIDQzLCA0MiwgMjA5LCA1NCwgMTk5LCA0MywgNDIsIDIwOSwgNTQsIDIyMiwgNjMsIDQzLCA0MiwgCi0gICAgMjM5LCAxNTMsIDQzLCA0MiwgMjM5LCAxNTQsIDEwNSwgNDMsIDQyLCAyMzksIDE1NCwgMTA4LCA0MywgNDIsIDIzOSwgMTU0LCAKLSAgICAxNDcsIDQzLCA0MiwgMjM5LCAxNTQsIDE0OSwgNDMsIDQyLCAyMzksIDE1NCwgMTcwLCA0MywgNDIsIDIzOSwgMTU0LCAxOTUsIAotICAgIDQzLCA0MiwgMjM5LCAxNTQsIDIxMywgMTExLCA0MywgNDIsIDIzOSwgMTU0LCAxOTksIDQzLCA0MiwgMjM5LCAxNTQsIDIyMiwgCi0gICAgNjMsIDQzLCA0MiwgMjQwLCAxOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDE3MSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDAsIDU0LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIyNSwgOTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAKLSAgICAxNTAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjI1LCA2MywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzAsIDc2LCAxMzksIAotICAgIDIwOSwgMTY0LCAxNiwgMzUsIDIzMCwgNzcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjUwLCAzMCwgMTM5LCAyMDksIDE2NCwgCi0gICAgMTYsIDM1LCAyMTMsIDEyOSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMjAsIDc5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIyMSwgMTUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgNzAsIDUxLCAyMzcsIDEzLCA1MSwgMjQxLCAyNCwgNTEsIAotICAgIDI0MCwgMjI2LCAyMjcsIDEyMCwgMjI3LCAxNDcsIDU0LCA0MywgNjcsIDYzLCA0MywgNjcsIDc1LCA0MywgNjcsIDY4LCA0MywgCi0gICAgNjcsIDc0LCA0MywgNjcsIDc4LCA0MywgNjcsIDE3MywgNDMsIDY3LCAyMjksIDEwMCwgNDMsIDY3LCAyMjgsIDIwOSwgNDMsIAotICAgIDY3LCAyMjksIDIwMSwgNDMsIDY3LCAyMjksIDI2LCA0MywgNjcsIDIxNSwgMzYsIDQzLCA2NywgMjEyLCAxNjIsIDQzLCA2NywgCi0gICAgMjExLCAxMCwgNDMsIDY3LCAyMTQsIDE3NywgNDMsIDY3LCAyMTIsIDEzLCA0MywgNjcsIDIxMCwgMjIsIDQzLCA2NywgMjA5LCAKLSAgICAyLCA0MywgNjcsIDIwNywgMjAzLCA0MywgNjcsIDIwOSwgMTg3LCA0MywgNjcsIDEzNSwgNDMsIDY3LCAyMDEsIDIwMSwgNDMsIAotICAgIDY3LCAyMjIsIDEwMCwgNDMsIDY3LCAyMjEsIDg0LCA0MywgNjcsIDIyMiwgMjQwLCA0MywgNjcsIDIyMSwgMTkxLCA0MywgCi0gICAgNjcsIDE1MiwgNDMsIDY3LCAyMzcsIDMsIDQzLCA2NywgMjM2LCAyNiwgNDMsIDY3LCAyMzcsIDY3LCA0MywgNjcsIDIzNiwgCi0gICAgMTM2LCA0MywgNjcsIDE5MiwgNDMsIDY3LCAyMjQsIDE1NSwgNDMsIDY3LCAyMjMsIDI0NiwgNDMsIDY3LCAyMjUsIDIwLCAKLSAgICA0MywgNjcsIDIyNCwgODIsIDQzLCA2NywgMTk4LCA0MywgNjcsIDIwMiwgMjEzLCA0MywgNjcsIDIwMiwgMjQ3LCA0MywgNjcsIAotICAgIDIxNiwgMjIwLCA0MywgNjcsIDIxNiwgNTcsIDQzLCA2NywgMjE1LCAxNDUsIDQzLCA2NywgMjE2LCAxNTgsIDQzLCA2NywgCi0gICAgMjE1LCAyMjcsIDQzLCA2NywgMjA0LCAxMTEsIDQzLCA2NywgMjA0LCAzMCwgNDMsIDY3LCAyMDQsIDYyLCA0MywgNjcsIAotICAgIDIwNCwgMCwgNTEsIDI1MCwgMTc0LCA1MSwgMjUwLCA4MywgNTEsIDI1MCwgMjAxLCA1MSwgMjUxLCAyMzksIDUxLCAyMzEsIAotICAgIDE4LCA1MSwgMjMwLCAyNDIsIDUxLCAyMDYsIDIyNywgNTEsIDI0MCwgMjUzLCA1MSwgMjQxLCAxNTgsIDUxLCAyMjAsIDIxLCAKLSAgICA1MSwgMjIwLCAxNCwgNTEsIDIzMCwgMTYsIDUxLCAyMjksIDIzOCwgNTEsIDIyOSwgMjM1LCA1MSwgMjM4LCAyMjAsIDUxLCAKLSAgICAyMzgsIDIyOSwgNTEsIDIzOCwgNzAsIDUxLCAyMzgsIDY2LCA1MSwgMjI4LCAxMzIsIDUxLCAyMzgsIDU4LCA1MSwgMjI5LCAKLSAgICA3NSwgNTEsIDIyOSwgNzQsIDUxLCAyMjksIDczLCA1MSwgMjI5LCA3MiwgNTEsIDIzNywgMjAwLCA1MSwgMjM3LCAxOTksIAotICAgIDUxLCAyMjgsIDE4MCwgNTEsIDIyOCwgMTgyLCA1MSwgMjI5LCAxOTQsIDUxLCAyMjgsIDI1MSwgNTEsIDIyOSwgMywgNTEsIAotICAgIDIxNSwgMTcsIDUxLCAyMTQsIDIzNiwgNTEsIDIxMiwgOTIsIDUxLCAyMTMsIDEzNCwgNTEsIDIxMywgMTMzLCA1MSwgMjQ0LCAKLSAgICAyMDksIDUxLCAyNDQsIDE0LCA1MSwgMjQzLCA4NiwgNTEsIDIwOCwgMTYzLCA1MSwgMjIzLCA3OSwgNTEsIDIyMSwgMTU0LCAKLSAgICA1MSwgMjM3LCAxNDIsIDUxLCAyMTksIDE2MywgNTEsIDIxOSwgMTYyLCA1MSwgMjQ5LCAyOSwgNTEsIDIxOCwgMTY0LCA1MSwgCi0gICAgMjE4LCAxMjcsIDUxLCAyMTgsIDEyOCwgNTEsIDI0OCwgNTcsIDUxLCAyMzYsIDI0LCA1MSwgMjM2LCAxOSwgNTEsIDI0NywgCi0gICAgMTUxLCA1MSwgMjM2LCA0LCA1MSwgMjM3LCAzOSwgNTEsIDIxOCwgMjIwLCA1MSwgMjE5LCA0LCA1MSwgMjM3LCAyMiwgNTEsIAotICAgIDIxOSwgMCwgNTEsIDIxOSwgMTgsIDUxLCAyNDgsIDE0NSwgNTEsIDIxOCwgNTgsIDUxLCAyNDcsIDI1MywgNTEsIDIzNiwgCi0gICAgMTIwLCA1MSwgMjE4LCA0NiwgNTEsIDIzNiwgMTExLCA1MSwgMjM2LCAxMTMsIDUxLCAyMjUsIDEzOCwgNTEsIDIyNSwgMTM0LCAKLSAgICA1MSwgMjI1LCAxNDMsIDUxLCAyMjUsIDgzLCA1MSwgMjI1LCAxMTAsIDUxLCAyMjQsIDEyMSwgNTEsIDIyNCwgOTcsIDUxLCAKLSAgICAyMjQsIDk2LCA1MSwgMjI1LCAwLCA1MSwgMjI0LCAyNTMsIDUxLCAyMjUsIDEsIDUxLCAyMDMsIDEwOSwgNTEsIDIwMywgCi0gICAgMTA3LCA1MSwgMjAyLCAyMDIsIDUxLCAyMTUsIDI0MywgNTEsIDIxNSwgMjQ3LCA1MSwgMjE1LCAxMTksIDUxLCAyMTUsIAotICAgIDExMywgNTEsIDIxNiwgMTA5LCA1MSwgMjE2LCAxMDYsIDUxLCAyMDQsIDc4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgCi0gICAgNDMsIDIwMiwgODQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMTA1LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDIzNiwgNDMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgCi0gICAgMjM2LCA0MywgMTQ5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDE3MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMTEsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMTk5LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIyMiwgNjMsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA5LCAxNTIsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxMTIsIAotICAgIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgCi0gICAgMjA5LCA1NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMzksIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDIzNiwgNDMsIDIxMiwgODIsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjM2LCA0MywgMjEzLCAxMDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjQxLCAxNDAsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjM2LCA0MywgMjIyLCA2MCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIAotICAgIDE1MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyMzYsIDQzLCAyMDcsIDE0MSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0MiwgMTM5LCAyMDksIAotICAgIDE2NCwgMTYsIDM1LCAyMzYsIDQzLCAyMDcsIDE0NywgNTEsIDIzNiwgMzQsIDUxLCAyNDQsIDIxMiwgNTEsIDI1MCwgMzQsIAotICAgIDUxLCAxNDIsIDUxLCAyMTksIDIwNiwgNTEsIDIxOSwgMzksIDUxLCAyNDMsIDExNSwgNTEsIDI0MywgMTE2LCAyMTEsIDE3NiwgCi0gICAgNTEsIDI0MywgMTE2LCAyNDUsIDEwNSwgNTEsIDIzMCwgMTk3LCA1MSwgMjQxLCAyNywgMjIzLCA4NSwgMjM3LCA0MCwgNTEsIAotICAgIDI0MSwgMjcsIDIyMywgODUsIDIxMCwgOTIsIDUxLCAyNDEsIDI3LCAyMjMsIDg1LCAyMDksIDI0NSwgNTEsIDI0MSwgMjcsIAotICAgIDIyMywgODUsIDIyNCwgMjUyLCA1MSwgMjQ1LCAxNjIsIDUxLCAyMTksIDE2OSwgMjUwLCAyMzMsIDUxLCAyMDEsIDIwMSwgCi0gICAgNTEsIDIyMywgMjQ3LCA2MywgNTEsIDE5MiwgNTEsIDE3MywgNTEsIDIyOSwgMjA0LCA1MSwgMjI1LCA1OSwgNTEsIDIzOCwgCi0gICAgMjA4LCA1MSwgMjQ3LCA3NiwgNTEsIDIyOSwgMjAzLCA1MSwgMjE4LCAyMTEsIDUxLCAyMjIsIDIwNywgNTEsIDIyMywgMjQ3LCAKLSAgICAyNDAsIDE3NCwgNTEsIDIyMywgMjQ3LCAyMzksIDc1LCA1MSwgMjI0LCAxOTYsIDUxLCAyMjksIDE0NiwgNTEsIDIzNSwgCi0gICAgMjE1LCA1MSwgMjI5LCAxMDIsIDUxLCAyMjQsIDE1NywgNTEsIDIzOCwgODMsIDUxLCAyMDksIDQsIDUxLCAyMjMsIDI0NywgCi0gICAgMTU5LCA1MSwgMjI0LCA5MCwgNTEsIDI0MywgMTI1LCA1MSwgMjI5LCA0MSwgNTEsIDIzOSwgMTg4LCA1MSwgMjIxLCAyMjksIAotICAgIDUxLCAyMjMsIDI0NywgMjI2LCAxODUsIDUxLCAyMjQsIDg3LCA1MSwgMjQ1LCAyNTUsIDUxLCAyMjksIDM1LCA1MSwgMjI0LCAKLSAgICA4OCwgMjExLCAxNzYsIDUxLCAyNDYsIDAsIDIxMSwgMTc2LCA1MSwgMjI2LCAxODYsIDIxMSwgMTc2LCA1MSwgMjI5LCAzNiwgCi0gICAgMjExLCAxNzYsIDUxLCAyMjQsIDg4LCAyNDUsIDEwNSwgNTEsIDI0NiwgMCwgMjQ1LCAxMDUsIDUxLCAyMjYsIDE4NiwgMjQ1LCAKLSAgICAxMDUsIDUxLCAyMjksIDM2LCAyNDUsIDEwNSwgNTEsIDIyNiwgMTg2LCAxMTUsIDE5NCwgNTEsIDIyNiwgMTg2LCAxMTUsIAotICAgIDIxNSwgOTQsIDIxMSwgMTc2LCA1MSwgMTg1LCA1MSwgMjI4LCAyNDQsIDUxLCAyMjMsIDI1MCwgNTEsIDIzOCwgMTUsIDUxLCAKLSAgICAyMTYsIDIwNywgNTEsIDIxNiwgMjA4LCAxMTUsIDE5NCwgNTEsIDIxNiwgMjA4LCAxMTUsIDIxNSwgOTQsIDIxMSwgMTc2LCAKLSAgICA1MSwgMjE3LCAyMDQsIDUxLCAyMjEsIDEyMiwgNTEsIDIyMywgMjQ3LCAxOTQsIDUxLCAyMjMsIDI0OCwgNTEsIDIxNywgCi0gICAgMTU0LCA1MSwgMjIxLCAyMiwgNTEsIDIyMywgMjQ3LCAyMDYsIDE2NCwgNTEsIDIyMywgMTg3LCA1MSwgMjI4LCAxNzAsIDUxLCAKLSAgICAyMjMsIDE4OCwgMjI1LCAwLCA1MSwgMjE3LCAxNTMsIDUxLCAyMjEsIDIxLCA1MSwgMjIzLCAyNDcsIDIwNCwgMTQ0LCA1MSwgCi0gICAgMjIzLCAxODEsIDUxLCAyMjgsIDE2OCwgNTEsIDIyMywgMTgyLCAyMjUsIDAsIDUxLCAyMzAsIDU1LCAyMjAsIDU4LCA1MSwgCi0gICAgMjI2LCAxODYsIDIyMCwgNTgsIDUxLCAyNTAsIDI0NywgNTEsIDI0NywgMjI5LCA1MSwgMjQ3LCA2LCA1MSwgMjQ2LCAyMzksIAotICAgIDUxLCAyNDcsIDEyNiwgMTE1LCAyMjksIDE0NiwgNTEsIDI0NSwgMjU0LCA1MSwgMjQ0LCAxMjksIDUxLCAyMzcsIDE4NCwgCi0gICAgNTEsIDE1MiwgNTEsIDIzNiwgMzUsIDUxLCAyMzEsIDQ5LCA1MSwgMjI5LCA0OCwgNTEsIDIyOSwgMzYsIDI0NywgNDcsIDUxLCAKLSAgICAyMjgsIDIxMSwgNTEsIDIyNywgNTIsIDUxLCAyMjcsIDUxLCA1MSwgMjI3LCAzOCwgNTEsIDIyNiwgMjAwLCA1MSwgMjI1LCAKLSAgICA2MCwgMjEyLCAzNiwgNTEsIDIyNCwgMTIwLCA1MSwgMjI0LCA1NiwgNTEsIDIxOCwgMjA5LCA1MSwgMjE4LCA3MiwgNTEsIAotICAgIDIxOCwgMTEsIDUxLCAyMTgsIDksIDUxLCAyMTEsIDE2OCwgNTEsIDIxMCwgMTc3LCA1MSwgMjA0LCA2NCwgNTEsIDIwNiwgCi0gICAgMTY1LCAxMTUsIDIyNiwgMTg1LCA1MSwgMzQsIDExNSwgMjI2LCAxODUsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAKLSAgICAxMzMsIDEwNSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMTA4LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAxNDcsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDE0OSwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMTcwLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTUsIDEzOSwgMjA5LCAxNjQsIAotICAgIDE2LCAzNSwgMjQ0LCAxMzMsIDIxMywgMTExLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAxOTksIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjMsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIAotICAgIDIwOSwgMTUyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyNDEsIDExMiwgMTM5LCAyMDksIDE2NCwgMTYsIAotICAgIDM1LCAyNDQsIDEzMywgMjA3LCAxNTQsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwOSwgNTUsIDEzOSwgCi0gICAgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIzOSwgMTQxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAKLSAgICAyNDAsIDIyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMTIsIDgyLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMTMsIDEwOCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjQxLCAxNDAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIyMiwgNjAsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgCi0gICAgMTUxLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NSwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAKLSAgICAyNDQsIDEzMywgMjA3LCAxNDEsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQyLCAxMzksIDIwOSwgCi0gICAgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDcsIDE0NywgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAKLSAgICAxNDgsIDEzOSwgMjA5LCAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIAotICAgIDI0NCwgMTMzLCAyMDcsIDE0NCwgMTM5LCAyMDksIDE2NCwgMTYsIDM1LCAyNDQsIDEzMywgMjA3LCAxNTAsIDEzOSwgMjA5LCAKLSAgICAxNjQsIDE2LCAzNSwgMjQ0LCAxMzMsIDIwNywgMTQ2LCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIAotICAgIDUzLCAxMzksIDIwOSwgMTY0LCAxNiwgMzUsIDI0NCwgMTMzLCAyMDksIDUyLCA1MSwgMjM4LCAyNDYsIDIzNywgMTYsIDM1LCAKLSAgICAyMDksIDkzLCAyNDUsIDE0MiwgMjM3LCA1MSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIxNiwgMTUxLCAyNDEsIDE3OSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MywgMjAzLCAyNTAsIDUwLCAyMDksIDkzLCAyNDgsIDE0MCwgMjM3LCAxNiwgMzUsIDIwMiwgMjI2LCAKLSAgICAyMzksIDE4MCwgMjM3LCAxNiwgMzUsIDIwNCwgMTAzLCAyMzcsIDE2LCAzNSwgMjQ1LCAyMTQsIDIzNywgMTYsIDM1LCAyMDksIAotICAgIDkzLCAyNTAsIDEwNSwgMjM3LCAxNiwgMzUsIDIzNiwgMTI3LCAyMDgsIDE2OSwgMjM3LCAxNiwgMzUsIDUsIDIwOSwgMjMxLCAKLSAgICAyMzcsIDE2LCAzNSwgMjA4LCA5NywgMjM3LCAxNiwgMzUsIDIxOSwgMzIsIDIzNywgMTYsIDM1LCAyMTEsIDk2LCAyMzcsIAotICAgIDE2LCAzNSwgMjQwLCA0NCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDMyLCAyMzcsIDE2LCAzNSwgMjI0LCA3NSwgCi0gICAgMjM3LCAxNiwgMzUsIDI0MSwgNjQsIDIzNywgMTYsIDM1LCAyMzksIDE4MSwgMjM3LCAxNiwgMzUsIDIwMywgMjM2LCAyMjAsIAotICAgIDMyLCAyMDksIDkzLCAyNDQsIDcxLCAyMzcsIDE2LCAzNSwgMjUwLCAxNTQsIDIzNywgMTYsIDM1LCAyNDUsIDE5MywgMjM3LCAKLSAgICAxNiwgMzUsIDI0OCwgNDksIDIwOSwgMjQsIDIzNywgMTYsIDM1LCAyMzgsIDEzLCAyMzcsIDE2LCAzNSwgMjExLCAxOTIsIAotICAgIDI1MCwgMTczLCAyMzcsIDE2LCAzNSwgMjE2LCA3NywgMjM3LCAxNiwgMzUsIDIzMSwgMTIsIDIzNywgMTYsIDM1LCAyMzcsIAotICAgIDI0OSwgMjA5LCAyMzEsIDIzNywgMTYsIDM1LCAyMjQsIDgsIDI0NSwgMTY0LCAyMzcsIDE2LCAzNSwgMjM3LCAyNDksIDIxNywgCi0gICAgMjQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjUxLCAxNDMsIDIwNCwgODAsIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyNDYsIAotICAgIDI0LCAyMzksIDI0OSwgMjM3LCAxNiwgMzUsIDIzMSwgMjYsIDIzNywgMTYsIDM1LCAyNDIsIDIwLCAyMzcsIDE2LCAzNSwgCi0gICAgMjE2LCA4MCwgMjM3LCAxNiwgMzUsIDIzNywgMjQ5LCAyMTgsIDE2LCAyMzcsIDE2LCAzNSwgMjE3LCAyMjEsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDE0OSwgNzYsIDIwOSwgOTMsIDIyNywgMTM0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQwLCA4MiwgMjM3LCAKLSAgICAxNiwgMzUsIDIxOSwgMjUwLCAyMzcsIDE2LCAzNSwgMjIwLCA4NSwgMjM3LCAxNiwgMzUsIDI0NCwgNDIsIDIzNywgMTYsIAotICAgIDM1LCAyNDQsIDYzLCAyMzcsIDE2LCAzNSwgMjMxLCA0MCwgMjM3LCAxNiwgMzUsIDI0NywgMjE3LCAyMzcsIDE2LCAzNSwgCi0gICAgMjQ1LCAyMzUsIDIwOCwgMTczLCAyMjUsIDMsIDIzNywgMTYsIDM1LCAyMzgsIDIxNSwgMjA4LCAxNjksIDIzNywgMTYsIDM1LCAKLSAgICAyMTcsIDE2MywgMjA2LCAyMTMsIDIzNywgMTYsIDM1LCAyMTksIDI0OSwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIwNCwgNTAsIAotICAgIDIzNywgMTYsIDM1LCAyMTYsIDY4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjQ3LCAxMiwgMjM3LCAxNiwgMzUsIDIwOSwgCi0gICAgOTMsIDI1MCwgMTAxLCAyMDksIDE4LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjI5LCAxOTUsIDIxMSwgNjgsIDIyNCwgMTIsIAotICAgIDIzNywgMTYsIDM1LCAyNDQsIDksIDIzNywgMTYsIDM1LCAyMDksIDkzLCAyMjUsIDg1LCAyMjUsIDEzOSwgMjM3LCAxNiwgCi0gICAgMzUsIDI1MSwgMTQ0LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjA0LCA5NiwgMjM3LCAxNiwgMzUsIDIwOSwgOTMsIDIzOCwgCi0gICAgMTczLCAyMDQsIDE2LCAyMzcsIDE2LCAzNSwgMjA5LCA5MywgMjMwLCA4NCwgMjI4LCAzMywgMjM3LCAxNiwgMzUsIDI0MywgCi0gICAgMTUzLCAyMzcsIDE2LCAzNSwgMjI3LCAxMjEsIDIzNywgMTYsIDM1LCAyMzEsIDE1LCAyMDgsIDI0LCAyMzcsIDE2LCAzNSwgCi0gICAgNSwgMjE3LCAyNDQsIDIzNywgMTYsIDM1LCAyNTEsIDgyLCAyNDUsIDIyNiwgMjM3LCAxNiwgMzUsIDI0OCwgMTQzLCAyNDUsIAotICAgIDIyNiwgMTEsIDQsIDIzMCwgMjAxLCAxMSwgNCwgMjMwLCAxOTMsIDExLCA0LCA3NSwgMTEsIDQsIDIzMCwgMjI3LCAxMSwgNCwgCi0gICAgMjMxLCAxMDgsIDExLCA0LCAyMzEsIDkxLCAxMSwgNCwgMjMxLCAxMTAsIDExLCA0LCAyMzEsIDEwOSwgMTEsIDQsIDI1MCwgCi0gICAgNDksIDExLCA0LCAyNTAsIDEwLCAxMSwgNCwgNjMsIDExLCA0LCAyNTAsIDE3NSwgMTEsIDQsIDIwNiwgMjI1LCAxMSwgNCwgCi0gICAgMjA2LCAyMjgsIDExLCA0LCAyMDYsIDIyNiwgMTEsIDQsIDIxOSwgMjI0LCAxMSwgNCwgMjE5LCAxOTMsIDExLCA0LCA3OCwgCi0gICAgMTEsIDQsIDIyMCwgOSwgMTEsIDQsIDI0MCwgMjE3LCAxMSwgNCwgNzQsIDExLCA0LCAyMDMsIDIxNywgMTEsIDQsIDI0OCwgCi0gICAgNTEsIDExLCA0LCAyNDgsIDQ3LCAxMSwgNCwgMjQ4LCA4NiwgMTEsIDQsIDI0OCwgNjEsIDExLCA0LCAyNDgsIDc1LCAxMSwgCi0gICAgNCwgMjQ4LCA3NCwgMTEsIDQsIDI0OCwgNzcsIDExLCA0LCAyNDgsIDc2LCAxMSwgNCwgMjQ4LCAyMDksIDExLCA0LCAyNDgsIAotICAgIDIwMSwgMTEsIDQsIDI0OSwgMzIsIDExLCA0LCAyNDgsIDIzMiwgMTEsIDQsIDI0NywgMTYzLCAxMSwgNCwgMjQ3LCAxNjcsIAotICAgIDExLCA0LCAyNDcsIDE2NCwgMTEsIDQsIDI0NywgMjUyLCAxMSwgNCwgMjQ3LCAyMzMsIDExLCA0LCAyNDgsIDIzLCAxMSwgNCwgCi0gICAgMjQ4LCAyLCAxMSwgNCwgMjQ4LCAxMDEsIDExLCA0LCAyNDgsIDE2MiwgMTEsIDQsIDI0OCwgMTEzLCAxMSwgNCwgMjQ3LCAKLSAgICAxNDcsIDExLCA0LCAyNDcsIDE0MywgMTEsIDQsIDI0NywgMTkzLCAxMSwgNCwgMjQ3LCAxNjIsIDExLCA0LCAyNDcsIDE1NSwgCi0gICAgMTEsIDQsIDI0NywgMTYwLCAxMSwgNCwgMjQ3LCAxMzEsIDExLCA0LCAyNDcsIDEyOSwgMTEsIDQsIDI0NywgMTM2LCAxMSwgCi0gICAgNCwgMjQ3LCAxMzQsIDExLCA0LCAyNDcsIDEzMiwgMTEsIDQsIDI0NywgMTMzLCAxMSwgNCwgMjE4LCAxMDUsIDExLCA0LCAKLSAgICAyMTgsIDEwMSwgMTEsIDQsIDIxOCwgMTY3LCAxMSwgNCwgMjE4LCAxMTcsIDExLCA0LCAyMTgsIDEzMywgMTEsIDQsIDIxOCwgCi0gICAgMTYwLCAxMSwgNCwgMjE4LCAxNTYsIDExLCA0LCAyMTksIDU1LCAxMSwgNCwgMjE5LCA0NCwgMTEsIDQsIDE4NSwgMTEsIDQsIAotICAgIDIxOSwgOTYsIDExLCA0LCAyMTcsIDE3MywgMTEsIDQsIDIxNywgMTc1LCAxMSwgNCwgMjE3LCAxNzQsIDExLCA0LCAyMTgsIAotICAgIDI1LCAxMSwgNCwgMjE4LCAxNCwgMTEsIDQsIDIxOCwgNjksIDExLCA0LCAyMTgsIDQxLCAxMSwgNCwgMjE3LCAxNTksIDExLCAKLSAgICA0LCAyMTcsIDE1NSwgMTEsIDQsIDIxNywgMTkxLCAxMSwgNCwgMjE3LCAxNzIsIDExLCA0LCAyMTcsIDE2NCwgMTEsIDQsIAotICAgIDIxNywgMTcwLCAxMSwgNCwgMjE3LCAxMzgsIDExLCA0LCAyMTcsIDEzNywgMTEsIDQsIDIxNywgMTQyLCAxMSwgNCwgMjE3LCAKLSAgICAxNDEsIDExLCA0LCAyMTcsIDEzOSwgMTEsIDQsIDIxNywgMTQwLCAxMSwgNCwgMjQ4LCAxODMsIDExLCA0LCAyNDgsIDE4MiwgCi0gICAgMTEsIDQsIDI0OCwgMTg5LCAxMSwgNCwgMjQ4LCAxODQsIDExLCA0LCAyNDgsIDE4NiwgMTEsIDQsIDI0OCwgMTg1LCAxMSwgCi0gICAgNCwgMjQ4LCAxODgsIDExLCA0LCAyNDgsIDE4NywgMTEsIDQsIDI0OCwgMTk1LCAxMSwgNCwgMjQ4LCAxOTQsIDExLCA0LCAKLSAgICAyNDgsIDE5OCwgMTEsIDQsIDI0OCwgMTk2LCAxMSwgNCwgMjQ4LCAxNzQsIDExLCA0LCAyNDgsIDE3NiwgMTEsIDQsIDI0OCwgCi0gICAgMTc1LCAxMSwgNCwgMjQ4LCAxNzksIDExLCA0LCAyNDgsIDE3OCwgMTEsIDQsIDI0OCwgMTgxLCAxMSwgNCwgMjQ4LCAxODAsIAotICAgIDExLCA0LCAyNDgsIDE5MCwgMTEsIDQsIDI0OCwgMTkzLCAxMSwgNCwgMjQ4LCAxOTEsIDExLCA0LCAyNDgsIDE3MCwgMTEsIAotICAgIDQsIDI0OCwgMTY5LCAxMSwgNCwgMjQ4LCAxNzcsIDExLCA0LCAyNDgsIDE3MywgMTEsIDQsIDI0OCwgMTcxLCAxMSwgNCwgCi0gICAgMjQ4LCAxNzIsIDExLCA0LCAyNDgsIDE2NiwgMTEsIDQsIDI0OCwgMTY1LCAxMSwgNCwgMjQ4LCAxNjgsIDExLCA0LCAyNDgsIAotICAgIDE2NywgMTEsIDQsIDIyMywgNDcsIDExLCA0LCAyMjMsIDQ2LCAxMSwgNCwgMjIzLCA1MiwgMTEsIDQsIDIyMywgNDgsIDExLCAKLSAgICA0LCAyMjMsIDQ5LCAxMSwgNCwgMjIzLCA1MSwgMTEsIDQsIDIyMywgNTAsIDExLCA0LCAyMjMsIDU1LCAxMSwgNCwgMjIzLCAKLSAgICA1NCwgMTEsIDQsIDIyMywgNTcsIDExLCA0LCAyMjMsIDU2LCAxMSwgNCwgMjIzLCA0MywgMTEsIDQsIDIyMywgNDIsIDExLCAKLSAgICA0LCAyMjMsIDQ1LCAxMSwgNCwgMjIzLCA0NCwgMTEsIDQsIDIyMywgMzYsIDExLCA0LCAyMjMsIDM1LCAxMSwgNCwgMjIzLCAKLSAgICA0MCwgMTEsIDQsIDIyMywgMzksIDExLCA0LCAyMjMsIDM3LCAxMSwgNCwgMjIzLCAzOCwgMTEsIDQsIDIyMywgMzAsIDExLCAKLSAgICA0LCAyMjMsIDI5LCAxMSwgNCwgMjIzLCAzNCwgMTEsIDQsIDIyMywgMzMsIDExLCA0LCAyMjMsIDMxLCAxMSwgNCwgMjIzLCAKLSAgICAzMiwgMTEsIDQsIDIzNiwgMTgwLCAxMSwgNCwgMjM2LCAxNzksIDExLCA0LCAyMzYsIDE4NSwgMTEsIDQsIDIzNiwgMTgxLCAKLSAgICAxMSwgNCwgMjM2LCAxODIsIDExLCA0LCAyMzYsIDE4NCwgMTEsIDQsIDIzNiwgMTgzLCAxMSwgNCwgMjM2LCAxODgsIDExLCAKLSAgICA0LCAyMzYsIDE4NywgMTEsIDQsIDIzNiwgMTkwLCAxMSwgNCwgMjM2LCAxODksIDExLCA0LCAyMzYsIDE3MSwgMTEsIDQsIAotICAgIDIzNiwgMTczLCAxMSwgNCwgMjM2LCAxNzIsIDExLCA0LCAyMzYsIDE3NiwgMTEsIDQsIDIzNiwgMTc1LCAxMSwgNCwgMjM2LCAKLSAgICAxNzgsIDExLCA0LCAyMzYsIDE3NywgMTEsIDQsIDIzNiwgMTY3LCAxMSwgNCwgMjM2LCAxNjYsIDExLCA0LCAyMzYsIDE3NCwgCi0gICAgMTEsIDQsIDIzNiwgMTcwLCAxMSwgNCwgMjM2LCAxNjgsIDExLCA0LCAyMzYsIDE2OSwgMTEsIDQsIDIzNiwgMTYxLCAxMSwgCi0gICAgNCwgMjM2LCAxNjUsIDExLCA0LCAyMzYsIDE2NCwgMTEsIDQsIDIzNiwgMTYyLCAxMSwgNCwgMjM2LCAxNjMsIDExLCA0LCAKLSAgICAyMjQsIDkzLCAxMSwgNCwgMjI0LCA5MiwgMTEsIDQsIDIyNCwgMTU1LCAxMSwgNCwgMjI0LCA5OSwgMTEsIDQsIDIyNCwgCi0gICAgMTI3LCAxMSwgNCwgMjI0LCAxNDUsIDExLCA0LCAyMjQsIDE0MywgMTEsIDQsIDIyNSwgNzEsIDExLCA0LCAyMjUsIDY2LCAKLSAgICAxMSwgNCwgMTkyLCAxMSwgNCwgMjI1LCAxMDYsIDExLCA0LCAyMjMsIDIxMywgMTEsIDQsIDIyMywgMjEyLCAxMSwgNCwgCi0gICAgMjIzLCAyMTYsIDExLCA0LCAyMjMsIDIxNCwgMTEsIDQsIDIyNCwgMjEsIDExLCA0LCAyMjMsIDI1MiwgMTEsIDQsIDIyNCwgCi0gICAgODIsIDExLCA0LCAyMjQsIDI3LCAxMSwgNCwgMjI0LCAyMDcsIDExLCA0LCAyMjUsIDIwLCAxMSwgNCwgMjIzLCAxOTMsIDExLCAKLSAgICA0LCAyMjMsIDE4OSwgMTEsIDQsIDIyMywgMjQ2LCAxMSwgNCwgMjIzLCAyMDksIDExLCA0LCAyMjMsIDIwMiwgMTEsIDQsIAotICAgIDIyMywgMjA3LCAxMSwgNCwgMjIzLCAxNjYsIDExLCA0LCAyMjMsIDE2NSwgMTEsIDQsIDIyMywgMTcxLCAxMSwgNCwgMjIzLCAKLSAgICAxNjgsIDExLCA0LCAyMzksIDIzNiwgMTEsIDQsIDIzOSwgMjMwLCAxMSwgNCwgMjQwLCAyNiwgMTEsIDQsIDIzOSwgMjUxLCAKLSAgICAxMSwgNCwgMjQwLCA3MywgMTEsIDQsIDI0MCwgNjQsIDExLCA0LCAyNDAsIDEwOCwgMTEsIDQsIDI0MCwgNzgsIDExLCA0LCAKLSAgICAyMzksIDEzOSwgMTEsIDQsIDIzOSwgMTg2LCAxMSwgNCwgMjM5LCAxNjcsIDExLCA0LCAyMzksIDkxLCAxMSwgNCwgMjM5LCAKLSAgICA5MCwgMTEsIDQsIDIzOSwgMTA4LCAxMSwgNCwgMjM5LCA5NiwgMTEsIDQsIDIzOSwgOTQsIDExLCA0LCAyMzksIDk1LCAxMSwgCi0gICAgNCwgMjM5LCA3OCwgMTEsIDQsIDIzOSwgNzcsIDExLCA0LCAyMzksIDgxLCAxMSwgNCwgMjM5LCA3OSwgMTEsIDQsIDIwNSwgCi0gICAgMTk2LCAxMSwgNCwgMjA1LCAxOTEsIDExLCA0LCAyMDUsIDIzMCwgMTEsIDQsIDIwNSwgMjA1LCAxMSwgNCwgMjA1LCAyMTksIAotICAgIDExLCA0LCAyMDUsIDIxNiwgMTEsIDQsIDIwNSwgMjIyLCAxMSwgNCwgMjA1LCAyMjEsIDExLCA0LCAyMDYsIDYzLCAxMSwgNCwgCi0gICAgMjA2LCA1OCwgMTEsIDQsIDIwNiwgODYsIDExLCA0LCAyMDYsIDc1LCAxMSwgNCwgMjA1LCAxNzIsIDExLCA0LCAyMDUsIAotICAgIDE2OCwgMTEsIDQsIDIwNSwgMTg5LCAxMSwgNCwgMjA1LCAxNzQsIDExLCA0LCAyMDUsIDIzMywgMTEsIDQsIDIwNiwgNDQsIAotICAgIDExLCA0LCAyMDQsIDE1NywgMTEsIDQsIDIwNCwgMTU1LCAxMSwgNCwgMjA0LCAxNjMsIDExLCA0LCAyMDQsIDE2MCwgMTEsIAotICAgIDQsIDIwNCwgMTU4LCAxMSwgNCwgMjA0LCAxNTksIDExLCA0LCAyMDQsIDE0OCwgMTEsIDQsIDIwNCwgMTQ3LCAxMSwgNCwgCi0gICAgMjA0LCAxNTIsIDExLCA0LCAyMDQsIDE1MSwgMTEsIDQsIDIwNCwgMTQ5LCAxMSwgNCwgMjA0LCAxNTAsIDExLCA0LCAyNDMsIAotICAgIDE0NywgMTEsIDQsIDI0MywgMTM0LCAxMSwgNCwgMjQzLCAyMzMsIDExLCA0LCAyNDMsIDE3MywgMTEsIDQsIDI0MywgMjA4LCAKLSAgICAxMSwgNCwgMjQzLCAyMTMsIDExLCA0LCAyNDMsIDIxMiwgMTEsIDQsIDI0NCwgMTQwLCAxMSwgNCwgMjQ0LCAxMzQsIDExLCAKLSAgICA0LCAyNDQsIDIxMiwgMTEsIDQsIDI0NCwgMTYwLCAxMSwgNCwgMjQyLCAyNSwgMTEsIDQsIDI0MiwgMjYsIDExLCA0LCAyNDMsIAotICAgIDg1LCAxMSwgNCwgMjQyLCA2NywgMTEsIDQsIDI0MywgMTEzLCAxMSwgNCwgMjQzLCA4NywgMTEsIDQsIDI0NCwgNywgMTEsIAotICAgIDQsIDI0NCwgNzUsIDExLCA0LCAyNDQsIDI4LCAxMSwgNCwgMjQyLCAxNiwgMTEsIDQsIDI0MiwgMTQsIDExLCA0LCAyNDIsIAotICAgIDQyLCAxMSwgNCwgMjQyLCAyNCwgMTEsIDQsIDI0MiwgMTksIDExLCA0LCAyNDIsIDIyLCAxMSwgNCwgMjA4LCAyMDAsIDExLCAKLSAgICA0LCAyMDgsIDE5MiwgMTEsIDQsIDIwOSwgMiwgMTEsIDQsIDIwOCwgMjEwLCAxMSwgNCwgMjA4LCAyNDgsIDExLCA0LCAyMDgsIAotICAgIDI1MCwgMTEsIDQsIDIwOCwgMjQ5LCAxMSwgNCwgMjA5LCAyMTIsIDExLCA0LCAyMDksIDE5OCwgMTEsIDQsIDIxMCwgMjIsIAotICAgIDExLCA0LCAyMDksIDIyMiwgMTEsIDQsIDIwNywgMTg1LCAxMSwgNCwgMjA3LCAxODQsIDExLCA0LCAyMDcsIDE4NywgMTEsIAotICAgIDQsIDIwNywgMTg2LCAxMSwgNCwgMjA4LCAxMzEsIDExLCA0LCAyMDgsIDEyMSwgMTEsIDQsIDEzNSwgMTEsIDQsIDIwOCwgCi0gICAgMTQ0LCAxMSwgNCwgMjA5LCAxMTQsIDExLCA0LCAyMDksIDE4NywgMTEsIDQsIDIwOSwgMTM5LCAxMSwgNCwgMjA3LCAxNjgsIAotICAgIDExLCA0LCAyMDcsIDE2MywgMTEsIDQsIDIwNywgMjAzLCAxMSwgNCwgMjA3LCAxODMsIDExLCA0LCAyMDcsIDE2OSwgMTEsIAotICAgIDQsIDIwNywgMTgxLCAxMSwgNCwgMjQ0LCA5MiwgMTEsIDQsIDI0NCwgOTEsIDExLCA0LCAyNDQsIDk3LCAxMSwgNCwgMjQ0LCAKLSAgICA5MywgMTEsIDQsIDI0NCwgOTQsIDExLCA0LCAyNDQsIDk2LCAxMSwgNCwgMjQ0LCA5NSwgMTEsIDQsIDI0NCwgMTEzLCAxMSwgCi0gICAgNCwgMjQ0LCAxMTIsIDExLCA0LCAyNDQsIDEyMCwgMTEsIDQsIDI0NCwgMTE0LCAxMSwgNCwgMjQ0LCA4MiwgMTEsIDQsIAotICAgIDI0NCwgODQsIDExLCA0LCAyNDQsIDgzLCAxMSwgNCwgMjQ0LCA4NywgMTEsIDQsIDI0NCwgODYsIDExLCA0LCAyNDQsIDkwLCAKLSAgICAxMSwgNCwgMjQ0LCA4OCwgMTEsIDQsIDI0NCwgMTA1LCAxMSwgNCwgMjQ0LCAxMDgsIDExLCA0LCAyNDQsIDEwNiwgMTEsIDQsIAotICAgIDI0NCwgNzgsIDExLCA0LCAyNDQsIDc3LCAxMSwgNCwgMjQ0LCA4NSwgMTEsIDQsIDI0NCwgODEsIDExLCA0LCAyNDQsIDc5LCAKLSAgICAxMSwgNCwgMjQ0LCA4MCwgMTEsIDQsIDIyMywgMywgMTEsIDQsIDIyMywgMiwgMTEsIDQsIDIyMywgMTAsIDExLCA0LCAyMjMsIAotICAgIDUsIDExLCA0LCAyMjMsIDYsIDExLCA0LCAyMjMsIDcsIDExLCA0LCAyMjMsIDE5LCAxMSwgNCwgMjIzLCAxOCwgMTEsIDQsIAotICAgIDIyMywgMjUsIDExLCA0LCAyMjMsIDIwLCAxMSwgNCwgMjIyLCAyNTEsIDExLCA0LCAyMjIsIDI1MCwgMTEsIDQsIDIyMywgMSwgCi0gICAgMTEsIDQsIDIyMiwgMjUyLCAxMSwgNCwgMjIzLCAxMSwgMTEsIDQsIDIyMywgMTcsIDExLCA0LCAyMjMsIDE1LCAxMSwgNCwgCi0gICAgMjIyLCAyNDMsIDExLCA0LCAyMjIsIDI0MiwgMTEsIDQsIDIyMiwgMjQ4LCAxMSwgNCwgMjIyLCAyNDYsIDExLCA0LCAyMjIsIAotICAgIDI0NCwgMTEsIDQsIDIyMiwgMjQ1LCAxMSwgNCwgMjM2LCAxNDYsIDExLCA0LCAyMzYsIDE0NSwgMTEsIDQsIDIzNiwgMTUyLCAKLSAgICAxMSwgNCwgMjM2LCAxNDcsIDExLCA0LCAyMzYsIDE0OSwgMTEsIDQsIDIzNiwgMTQ4LCAxMSwgNCwgMjM2LCAxNTEsIDExLCAKLSAgICA0LCAyMzYsIDE1MCwgMTEsIDQsIDIzNiwgMTU4LCAxMSwgNCwgMjM2LCAxNTYsIDExLCA0LCAyMzYsIDE2MCwgMTEsIDQsIAotICAgIDIzNiwgMTU5LCAxMSwgNCwgMjM2LCAxMzksIDExLCA0LCAyMzYsIDE0MCwgMTEsIDQsIDIzNiwgMTQzLCAxMSwgNCwgMjM2LCAKLSAgICAxNDIsIDExLCA0LCAyMzYsIDE0NCwgMTEsIDQsIDIzNiwgMTUzLCAxMSwgNCwgMjM2LCAxNTUsIDExLCA0LCAyMzYsIDE1NCwgCi0gICAgMTEsIDQsIDIzNiwgMTM4LCAxMSwgNCwgMjIyLCA1MiwgMTEsIDQsIDIyMiwgNTAsIDExLCA0LCAyMjIsIDEwMCwgMTEsIDQsIAotICAgIDIyMiwgNTUsIDExLCA0LCAyMjIsIDgyLCAxMSwgNCwgMjIyLCA5NiwgMTEsIDQsIDIyMiwgOTUsIDExLCA0LCAyMjMsIDYxLCAKLSAgICAxMSwgNCwgMjAxLCAyMDEsIDExLCA0LCAyMjMsIDc2LCAxMSwgNCwgMjIxLCAzMiwgMTEsIDQsIDIyMSwgMzQsIDExLCA0LCAKLSAgICAyMjEsIDMzLCAxMSwgNCwgMjIxLCAxNjUsIDExLCA0LCAyMjEsIDE1MCwgMTEsIDQsIDIyMSwgMTkxLCAxMSwgNCwgMjIxLCAKLSAgICAxNzYsIDExLCA0LCAyMjIsIDIwOSwgMTEsIDQsIDIyMiwgMjQwLCAxMSwgNCwgMjIyLCAyMjUsIDExLCA0LCAyMjEsIDI3LCAKLSAgICAxMSwgNCwgMjIxLCAyMywgMTEsIDQsIDIyMSwgODQsIDExLCA0LCAyMjEsIDMxLCAxMSwgNCwgMjIxLCAyOSwgMTEsIDQsIAotICAgIDIyMSwgMzAsIDExLCA0LCAyMzYsIDIxMSwgMTEsIDQsIDIzNiwgMjEwLCAxMSwgNCwgMjM2LCAyMTYsIDExLCA0LCAyMzYsIAotICAgIDIxMiwgMTEsIDQsIDIzNiwgMjEzLCAxMSwgNCwgMjM2LCAyMTUsIDExLCA0LCAyMzYsIDIxNCwgMTEsIDQsIDIzNiwgMjIyLCAKLSAgICAxMSwgNCwgMjM2LCAyMjAsIDExLCA0LCAyMzYsIDIyNCwgMTEsIDQsIDIzNiwgMjIzLCAxMSwgNCwgMjM2LCAyMDMsIDExLCAKLSAgICA0LCAyMzYsIDIwNSwgMTEsIDQsIDIzNiwgMjA0LCAxMSwgNCwgMjM2LCAyMDcsIDExLCA0LCAyMzYsIDIwOSwgMTEsIDQsIAotICAgIDIzNiwgMjA4LCAxMSwgNCwgMjM2LCAyMTcsIDExLCA0LCAyMzYsIDIxOSwgMTEsIDQsIDIzNiwgMjE4LCAxMSwgNCwgMjM2LCAKLSAgICAxOTksIDExLCA0LCAyMzYsIDE5OCwgMTEsIDQsIDIzNiwgMjA2LCAxMSwgNCwgMjM2LCAyMDIsIDExLCA0LCAyMzYsIDIwMCwgCi0gICAgMTEsIDQsIDIzNiwgMjAxLCAxMSwgNCwgMjM2LCAxOTMsIDExLCA0LCAyMzYsIDE5MiwgMTEsIDQsIDIzNiwgMTk3LCAxMSwgCi0gICAgNCwgMjM2LCAxOTYsIDExLCA0LCAyMzYsIDE5NCwgMTEsIDQsIDIzNiwgMTk1LCAxMSwgNCwgMjI3LCA5MCwgMTEsIDQsIAotICAgIDIyNywgODIsIDExLCA0LCAyMjcsIDE0OCwgMTEsIDQsIDIyNywgMTAwLCAxMSwgNCwgMjI3LCAxMzksIDExLCA0LCAyMjcsIAotICAgIDEzOCwgMTEsIDQsIDIyNywgMTQyLCAxMSwgNCwgMjI3LCAxNDAsIDExLCA0LCAyMjgsIDAsIDExLCA0LCAyMjcsIDI0NSwgCi0gICAgMTEsIDQsIDIyOCwgMTEzLCAxMSwgNCwgMjI4LCAxMSwgMTEsIDQsIDIyNiwgMjE3LCAxMSwgNCwgMjI2LCAyMTYsIDExLCA0LCAKLSAgICAyMjYsIDIxOSwgMTEsIDQsIDIyNiwgMjE4LCAxMSwgNCwgMjI3LCA2LCAxMSwgNCwgMjI2LCAyNDgsIDExLCA0LCAyMjcsIAotICAgIDQ5LCAxMSwgNCwgMjI3LCAxMSwgMTEsIDQsIDIyNywgMTY1LCAxMSwgNCwgMjI3LCAyMzQsIDExLCA0LCAyMjcsIDE4MiwgCi0gICAgMTEsIDQsIDIyNiwgMjExLCAxMSwgNCwgMjI2LCAyMDksIDExLCA0LCAyMjYsIDIzOSwgMTEsIDQsIDIyNiwgMjE1LCAxMSwgCi0gICAgNCwgMjI2LCAyMTMsIDExLCA0LCAyMjYsIDIxNCwgMTEsIDQsIDIyNiwgMTkwLCAxMSwgNCwgMjI2LCAxODksIDExLCA0LCAKLSAgICAyMjYsIDE5OSwgMTEsIDQsIDIyNiwgMTkzLCAxMSwgNCwgMjI2LCAxOTEsIDExLCA0LCAyMjYsIDE5MiwgMTEsIDQsIDIzOCwgCi0gICAgNTQsIDExLCA0LCAyMzgsIDUzLCAxMSwgNCwgMjM4LCA4MSwgMTEsIDQsIDIzOCwgNjUsIDExLCA0LCAyMzgsIDczLCAxMSwgCi0gICAgNCwgMjM4LCA3MiwgMTEsIDQsIDIzOCwgNzUsIDExLCA0LCAyMzgsIDc0LCAxMSwgNCwgMjM4LCAyMTcsIDExLCA0LCAyMzgsIAotICAgIDIxMiwgMTEsIDQsIDIzOSwgOCwgMTEsIDQsIDIzOCwgMjI3LCAxMSwgNCwgMjM3LCAyMDUsIDExLCA0LCAyMzcsIDIwNCwgCi0gICAgMTEsIDQsIDIzNywgMjA3LCAxMSwgNCwgMjM3LCAyMDYsIDExLCA0LCAyMzgsIDE4LCAxMSwgNCwgMjM4LCAxNiwgMTEsIDQsIAotICAgIDIzOCwgMzksIDExLCA0LCAyMzgsIDI2LCAxMSwgNCwgMjM4LCAxNTksIDExLCA0LCAyMzgsIDE1NywgMTEsIDQsIDIzOCwgCi0gICAgMTkwLCAxMSwgNCwgMjM4LCAxNzAsIDExLCA0LCAyMzcsIDE5NCwgMTEsIDQsIDIzNywgMTkzLCAxMSwgNCwgMjM3LCAyMzAsIAotICAgIDExLCA0LCAyMzcsIDIwMywgMTEsIDQsIDIzNywgMTk1LCAxMSwgNCwgMjM3LCAyMDIsIDExLCA0LCAyMjksIDY0LCAxMSwgNCwgCi0gICAgMjI5LCA2MSwgMTEsIDQsIDIyOSwgMTAwLCAxMSwgNCwgMjI5LCA3OCwgMTEsIDQsIDIyOSwgODksIDExLCA0LCAyMjksIDkzLCAKLSAgICAxMSwgNCwgMjI5LCA5MSwgMTEsIDQsIDIyOSwgMjI2LCAxMSwgNCwgMjI5LCAyMDksIDExLCA0LCAxNzMsIDExLCA0LCAyMjksIAotICAgIDI1MywgMTEsIDQsIDIyOCwgMTg3LCAxMSwgNCwgMjI4LCAxOTIsIDExLCA0LCAyMjgsIDE4OSwgMTEsIDQsIDIyOCwgMjUwLCAKLSAgICAxMSwgNCwgMjI4LCAyNDUsIDExLCA0LCAyMjksIDI2LCAxMSwgNCwgMjI5LCAxLCAxMSwgNCwgMjI5LCAxNzAsIDExLCA0LCAKLSAgICAyMjksIDE1MywgMTEsIDQsIDIyOSwgMjAxLCAxMSwgNCwgMjI5LCAxNzQsIDExLCA0LCAyMjgsIDE3NSwgMTEsIDQsIDIyOCwgCi0gICAgMTcxLCAxMSwgNCwgMjI4LCAyMDksIDExLCA0LCAyMjgsIDE4NiwgMTEsIDQsIDIyOCwgMTc5LCAxMSwgNCwgMjI4LCAxODMsIAotICAgIDExLCA0LCAyMzgsIDE0MSwgMTEsIDQsIDIzOCwgMTQwLCAxMSwgNCwgMjM4LCAxNDUsIDExLCA0LCAyMzgsIDE0MiwgMTEsIAotICAgIDQsIDIzOCwgMTQ0LCAxMSwgNCwgMjM4LCAxNDMsIDExLCA0LCAyMzgsIDE1MiwgMTEsIDQsIDIzOCwgMTUxLCAxMSwgNCwgCi0gICAgMjM4LCAxNTUsIDExLCA0LCAyMzgsIDE1MywgMTEsIDQsIDIzOCwgMTMyLCAxMSwgNCwgMjM4LCAxMzEsIDExLCA0LCAyMzgsIAotICAgIDEzNCwgMTEsIDQsIDIzOCwgMTMzLCAxMSwgNCwgMjM4LCAxMzcsIDExLCA0LCAyMzgsIDEzNiwgMTEsIDQsIDIzOCwgMTM5LCAKLSAgICAxMSwgNCwgMjM4LCAxMzgsIDExLCA0LCAyMzgsIDE0NywgMTEsIDQsIDIzOCwgMTQ2LCAxMSwgNCwgMjM4LCAxNTAsIDExLCAKLSAgICA0LCAyMzgsIDE0OCwgMTEsIDQsIDIzOCwgMTI3LCAxMSwgNCwgMjM4LCAxMjYsIDExLCA0LCAyMzgsIDEzNSwgMTEsIDQsIAotICAgIDIzOCwgMTMwLCAxMSwgNCwgMjM4LCAxMjgsIDExLCA0LCAyMzgsIDEyOSwgMTEsIDQsIDIyNCwgMTc0LCAxMSwgNCwgMjI0LCAKLSAgICAxNzUsIDExLCA0LCAyMjQsIDE5MywgMTEsIDQsIDIyNCwgMTkyLCAxMSwgNCwgMjI0LCAxOTUsIDExLCA0LCAyMjQsIDE5NCwgCi0gICAgMTEsIDQsIDIyNCwgMTY1LCAxMSwgNCwgMjI0LCAxNjcsIDExLCA0LCAyMjQsIDE2NiwgMTEsIDQsIDIyNCwgMTcwLCAxMSwgCi0gICAgNCwgMjI0LCAxNjksIDExLCA0LCAyMjQsIDE3MiwgMTEsIDQsIDIyNCwgMTcxLCAxMSwgNCwgMjI0LCAxNzYsIDExLCA0LCAKLSAgICAyMjQsIDE3OCwgMTEsIDQsIDIyNCwgMTc3LCAxMSwgNCwgMjI0LCAxNjEsIDExLCA0LCAyMjQsIDE2MCwgMTEsIDQsIDIyNCwgCi0gICAgMTY4LCAxMSwgNCwgMjI0LCAxNjQsIDExLCA0LCAyMjQsIDE2MiwgMTEsIDQsIDIyNCwgMTYzLCAxMSwgNCwgMjM1LCAyMzMsIAotICAgIDExLCA0LCAyMzUsIDIzMiwgMTEsIDQsIDIzNSwgMjM5LCAxMSwgNCwgMjM1LCAyMzQsIDExLCA0LCAyMzUsIDIzNiwgMTEsIAotICAgIDQsIDIzNSwgMjM1LCAxMSwgNCwgMjM1LCAyMzgsIDExLCA0LCAyMzUsIDIzNywgMTEsIDQsIDIzNSwgMjQ0LCAxMSwgNCwgCi0gICAgMjM1LCAyNDMsIDExLCA0LCAyMzUsIDI0NiwgMTEsIDQsIDIzNSwgMjQ1LCAxMSwgNCwgMjM1LCAyMjUsIDExLCA0LCAyMzUsIAotICAgIDIyNCwgMTEsIDQsIDIzNSwgMjI3LCAxMSwgNCwgMjM1LCAyMjYsIDExLCA0LCAyMzUsIDIyOSwgMTEsIDQsIDIzNSwgMjI4LCAKLSAgICAxMSwgNCwgMjM1LCAyMzEsIDExLCA0LCAyMzUsIDIzMCwgMTEsIDQsIDIzNSwgMjQwLCAxMSwgNCwgMjM1LCAyNDIsIDExLCAKLSAgICA0LCAyMzUsIDI0MSwgMTEsIDQsIDIyMiwgMTQ4LCAxMSwgNCwgMjIyLCAxNTAsIDExLCA0LCAyMjIsIDE0OSwgMTEsIDQsIAotICAgIDIyMiwgMTkzLCAxMSwgNCwgMjIyLCAxOTEsIDExLCA0LCAyMjIsIDIwMywgMTEsIDQsIDIyMiwgMTk2LCAxMSwgNCwgMjIyLCAKLSAgICAxMTAsIDExLCA0LCAyMjIsIDEwOSwgMTEsIDQsIDIyMiwgMTExLCAxMSwgNCwgMjIyLCAxMjAsIDExLCA0LCAyMjIsIDExNywgCi0gICAgMTEsIDQsIDIyMiwgMTI4LCAxMSwgNCwgMjIyLCAxMjIsIDExLCA0LCAyMjIsIDE4NCwgMTEsIDQsIDIyMiwgMTkwLCAxMSwgCi0gICAgNCwgMjIyLCAxODYsIDExLCA0LCAyMzYsIDIzMCwgMTEsIDQsIDIzNiwgMjQ1LCAxMSwgNCwgMjM2LCAyNTQsIDExLCA0LCAKLSAgICAyMzcsIDgzLCAxMSwgNCwgMjM3LCA3MiwgMTEsIDQsIDE1MiwgMTEsIDQsIDIzNywgOTQsIDExLCA0LCAyMzYsIDYsIDExLCAKLSAgICA0LCAyMzYsIDUsIDExLCA0LCAyMzYsIDgsIDExLCA0LCAyMzYsIDcsIDExLCA0LCAyMzYsIDQ2LCAxMSwgNCwgMjM2LCAzNywgCi0gICAgMTEsIDQsIDIzNiwgMTM2LCAxMSwgNCwgMjM2LCAxMDksIDExLCA0LCAyMzcsIDE4LCAxMSwgNCwgMjM3LCA2NywgMTEsIDQsIAotICAgIDIzNywgMzAsIDExLCA0LCAyMDQsIDgzLCAxMSwgNCwgMjA0LCA2OCwgMTEsIDQsIDIwNCwgMTExLCAxMSwgNCwgMjA0LCA5MywgCi0gICAgMTEsIDQsIDIwMywgMjA2LCAxMSwgNCwgMjAzLCAyMDgsIDExLCA0LCAyMDMsIDIwNywgMTEsIDQsIDIwMywgMjI5LCAxMSwgCi0gICAgNCwgMjA0LCAwLCAxMSwgNCwgMjAzLCAyMzksIDExLCA0LCAyMDQsIDQyLCAxMSwgNCwgMjA0LCA2MiwgMTEsIDQsIDIwNCwgCi0gICAgNDcsIDExLCA0LCAyMDIsIDI0LCAxMSwgNCwgMjAyLCAyMywgMTEsIDQsIDIwMiwgMzksIDExLCA0LCAyMDIsIDI3LCAxMSwgCi0gICAgNCwgMjAyLCAzMiwgMTEsIDQsIDIwMiwgMzQsIDExLCA0LCAyMDIsIDMzLCAxMSwgNCwgMjAyLCAxMDAsIDExLCA0LCAyMDIsIAotICAgIDk3LCAxMSwgNCwgMjAyLCAxMTYsIDExLCA0LCAyMDIsIDEwNCwgMTEsIDQsIDIwMSwgMjU1LCAxMSwgNCwgMjAyLCAxLCAxMSwgCi0gICAgNCwgMjAyLCAwLCAxMSwgNCwgMjAyLCAxMywgMTEsIDQsIDIwMiwgMTIsIDExLCA0LCAyMDIsIDE3LCAxMSwgNCwgMjAyLCAKLSAgICAxNCwgMTEsIDQsIDIwMiwgODIsIDExLCA0LCAyMDIsIDkyLCAxMSwgNCwgMjAyLCA4NiwgMTEsIDQsIDIwMSwgMjUxLCAxMSwgCi0gICAgNCwgMjAxLCAyNTAsIDExLCA0LCAyMDIsIDYsIDExLCA0LCAyMDEsIDI1NCwgMTEsIDQsIDIwMSwgMjUyLCAxMSwgNCwgMjAxLCAKLSAgICAyNTMsIDExLCA0LCAyMDEsIDIzNywgMTEsIDQsIDIwMSwgMjM2LCAxMSwgNCwgMjAxLCAyNDIsIDExLCA0LCAyMDEsIDI0MCwgCi0gICAgMTEsIDQsIDIwMSwgMjM4LCAxMSwgNCwgMjAxLCAyMzksIDExLCA0LCAyNDYsIDUwLCAxMSwgNCwgMjQ2LCA0MywgMTEsIDQsIAotICAgIDI0NiwgNzksIDExLCA0LCAyNDYsIDYzLCAxMSwgNCwgMjQ2LCA3NiwgMTEsIDQsIDI0NiwgNzAsIDExLCA0LCAyNDYsIDc4LCAKLSAgICAxMSwgNCwgMjQ2LCA3NywgMTEsIDQsIDI0NywgMTcsIDExLCA0LCAyNDcsIDksIDExLCA0LCAyNDcsIDkyLCAxMSwgNCwgCi0gICAgMjQ3LCA0OCwgMTEsIDQsIDI0NSwgMTAxLCAxMSwgNCwgMjQ1LCAxMDMsIDExLCA0LCAyNDUsIDEwMiwgMTEsIDQsIDI0NSwgCi0gICAgMTU4LCAxMSwgNCwgMjQ1LCAxNDgsIDExLCA0LCAyNDUsIDI1NCwgMTEsIDQsIDI0NSwgMTc1LCAxMSwgNCwgMjQ2LCAyMDIsIAotICAgIDExLCA0LCAyNDYsIDIzOCwgMTEsIDQsIDI0NiwgMjA3LCAxMSwgNCwgMjQ1LCA3NywgMTEsIDQsIDI0NSwgNzUsIDExLCA0LCAKLSAgICAyNDUsIDExMCwgMTEsIDQsIDI0NSwgOTksIDExLCA0LCAyNDUsIDgzLCAxMSwgNCwgMjQ1LCA5NiwgMTEsIDQsIDI0NSwgNTQsIAotICAgIDExLCA0LCAyNDUsIDUzLCAxMSwgNCwgMjQ1LCA2NiwgMTEsIDQsIDI0NSwgNjAsIDExLCA0LCAyNDUsIDU1LCAxMSwgNCwgCi0gICAgMjQ1LCA1NywgMTEsIDQsIDIwMSwgMjIwLCAxMSwgNCwgMjAxLCAyMTksIDExLCA0LCAyMDEsIDIyNiwgMTEsIDQsIDIwMSwgCi0gICAgMjIxLCAxMSwgNCwgMjAxLCAyMjMsIDExLCA0LCAyMDEsIDIyMiwgMTEsIDQsIDIwMSwgMjI1LCAxMSwgNCwgMjAxLCAyMjQsIAotICAgIDExLCA0LCAyMDEsIDIzMiwgMTEsIDQsIDIwMSwgMjMxLCAxMSwgNCwgMjAxLCAyMzUsIDExLCA0LCAyMDEsIDIzMywgMTEsIAotICAgIDQsIDIwMSwgMjE2LCAxMSwgNCwgMjAxLCAyMTgsIDExLCA0LCAyMDEsIDIxNywgMTEsIDQsIDIwMSwgMjI3LCAxMSwgNCwgCi0gICAgMjAxLCAyMzAsIDExLCA0LCAyMDEsIDIyOCwgMTEsIDQsIDIwMSwgMjA5LCAxMSwgNCwgMjAxLCAyMTMsIDExLCA0LCAyMDEsIAotICAgIDIxMiwgMTEsIDQsIDIwMSwgMjEwLCAxMSwgNCwgMjAxLCAyMTEsIDExLCA0LCAyMDEsIDIwMywgMTEsIDQsIDIwMSwgMjAyLCAKLSAgICAxMSwgNCwgMjAxLCAyMDgsIDExLCA0LCAyMDEsIDIwNiwgMTEsIDQsIDIwMSwgMjA0LCAxMSwgNCwgMjAxLCAyMDUsIDExLCAKLSAgICA0LCAyMjAsIDIwMSwgMTEsIDQsIDIyMCwgMjAwLCAxMSwgNCwgMjIwLCAyMDYsIDExLCA0LCAyMjAsIDIwMiwgMTEsIDQsIAotICAgIDIyMCwgMjAzLCAxMSwgNCwgMjIwLCAyMDUsIDExLCA0LCAyMjAsIDIwNCwgMTEsIDQsIDIyMCwgMjExLCAxMSwgNCwgMjIwLCAKLSAgICAyMTAsIDExLCA0LCAyMjAsIDIxNCwgMTEsIDQsIDIyMCwgMjEzLCAxMSwgNCwgMjIwLCAxOTQsIDExLCA0LCAyMjAsIDE5NSwgCi0gICAgMTEsIDQsIDIyMCwgMTk4LCAxMSwgNCwgMjIwLCAxOTksIDExLCA0LCAyMjAsIDIwNywgMTEsIDQsIDIyMCwgMjA5LCAxMSwgCi0gICAgNCwgMjIwLCAxODksIDExLCA0LCAyMjAsIDE5NywgMTEsIDQsIDIyMCwgMTkzLCAxMSwgNCwgMjIwLCAxOTAsIDExLCA0LCAKLSAgICAyMjAsIDE5MSwgMTEsIDQsIDIyMCwgMTg0LCAxMSwgNCwgMjIwLCAxODMsIDExLCA0LCAyMjAsIDE4OCwgMTEsIDQsIDIyMCwgCi0gICAgMTg3LCAxMSwgNCwgMjIwLCAxODUsIDExLCA0LCAyMjAsIDE4NiwgMTEsIDQsIDIxMiwgOTAsIDExLCA0LCAxOTUsIDExLCA0LCAKLSAgICAyMTIsIDE2MiwgMTEsIDQsIDIxMiwgOTMsIDExLCA0LCAyMTIsIDE1MCwgMTEsIDQsIDIxMiwgMTUzLCAxMSwgNCwgMjEyLCAKLSAgICAxNTEsIDExLCA0LCAyMTQsIDIyNSwgMTEsIDQsIDIxNCwgMjExLCAxMSwgNCwgMjE1LCAzNiwgMTEsIDQsIDIxNCwgMjMzLCAKLSAgICAxMSwgNCwgMjEwLCAyMDQsIDExLCA0LCAyMTAsIDIwNiwgMTEsIDQsIDIxMCwgMjA1LCAxMSwgNCwgMjExLCAyNDQsIDExLCAKLSAgICA0LCAyMTEsIDIzMywgMTEsIDQsIDIxMiwgMTMsIDExLCA0LCAyMTEsIDI0OCwgMTEsIDQsIDIxMywgMTAzLCAxMSwgNCwgCi0gICAgMjE0LCAxNzcsIDExLCA0LCAyMTMsIDEzMiwgMTEsIDQsIDIxMCwgMTgxLCAxMSwgNCwgMjEwLCAxNzgsIDExLCA0LCAyMTEsIAotICAgIDEwLCAxMSwgNCwgMjEwLCAyMDMsIDExLCA0LCAyMTAsIDE4NSwgMTEsIDQsIDIxMCwgMTkzLCAxMSwgNCwgMjEwLCA4MywgCi0gICAgMTEsIDQsIDIxMCwgODIsIDExLCA0LCAyMTAsIDE1MSwgMTEsIDQsIDIxMCwgOTEsIDExLCA0LCAyMTAsIDg1LCAxMSwgNCwgCi0gICAgMjEwLCA5MCwgMTEsIDQsIDIxMSwgMTI2LCAxMSwgNCwgMjExLCAxMjUsIDExLCA0LCAyMTEsIDEzMiwgMTEsIDQsIDIxMSwgCi0gICAgMTI3LCAxMSwgNCwgMjExLCAxMjksIDExLCA0LCAyMTEsIDEzMSwgMTEsIDQsIDIxMSwgMTMwLCAxMSwgNCwgMjExLCAxNDEsIAotICAgIDExLCA0LCAyMTEsIDEzOSwgMTEsIDQsIDIxMSwgMTY0LCAxMSwgNCwgMjExLCAxNDIsIDExLCA0LCAyMTEsIDEyMSwgMTEsIAotICAgIDQsIDIxMSwgMTIwLCAxMSwgNCwgMjExLCAxMjQsIDExLCA0LCAyMTEsIDEyMiwgMTEsIDQsIDIxMSwgMTM1LCAxMSwgNCwgCi0gICAgMjExLCAxMzgsIDExLCA0LCAyMTEsIDEzNiwgMTEsIDQsIDIxMSwgMTE3LCAxMSwgNCwgMjExLCAxMTUsIDExLCA0LCAyMTEsIAotICAgIDExOSwgMTEsIDQsIDIxMSwgMTE4LCAxMSwgNCwgMjExLCAxMTAsIDExLCA0LCAyMTEsIDEwOSwgMTEsIDQsIDIxMSwgMTE0LCAKLSAgICAxMSwgNCwgMjExLCAxMTMsIDExLCA0LCAyMTEsIDExMSwgMTEsIDQsIDIxMSwgMTEyLCAxMSwgNCwgMjAyLCA3NSwgMTEsIDQsIAotICAgIDIwMiwgNzQsIDExLCA0LCAyMDIsIDgwLCAxMSwgNCwgMjAyLCA3NywgMTEsIDQsIDIwMiwgNTQsIDExLCA0LCAyMDIsIDU2LCAKLSAgICAxMSwgNCwgMjAyLCA1NSwgMTEsIDQsIDIwMiwgNTksIDExLCA0LCAyMDIsIDU4LCAxMSwgNCwgMjAyLCA2MywgMTEsIDQsIAotICAgIDIwMiwgNjAsIDExLCA0LCAyMDIsIDY4LCAxMSwgNCwgMjAyLCA2NywgMTEsIDQsIDIwMiwgNzEsIDExLCA0LCAyMDIsIDY5LCAKLSAgICAxMSwgNCwgMjAyLCA1MCwgMTEsIDQsIDIwMiwgNDksIDExLCA0LCAyMDIsIDU3LCAxMSwgNCwgMjAyLCA1MywgMTEsIDQsIAotICAgIDIwMiwgNTEsIDExLCA0LCAyMDIsIDUyLCAxMSwgNCwgMjAyLCA0MiwgMTEsIDQsIDIwMiwgNDEsIDExLCA0LCAyMDIsIDQ2LCAKLSAgICAxMSwgNCwgMjAyLCA0NSwgMTEsIDQsIDIwMiwgNDMsIDExLCA0LCAyMDIsIDQ0LCAxMSwgNCwgMjQ2LCAxNzYsIDExLCA0LCAKLSAgICAyNDYsIDE3MiwgMTEsIDQsIDI0NiwgMTk5LCAxMSwgNCwgMjQ2LCAxODUsIDExLCA0LCAyNDYsIDk0LCAxMSwgNCwgMjQ2LCAKLSAgICA5MywgMTEsIDQsIDI0NiwgOTYsIDExLCA0LCAyNDYsIDk1LCAxMSwgNCwgMjQ2LCAxMDksIDExLCA0LCAyNDYsIDEwOCwgMTEsIAotICAgIDQsIDI0NiwgMTE2LCAxMSwgNCwgMjQ2LCAxMTEsIDExLCA0LCAyNDYsIDE0NywgMTEsIDQsIDI0NiwgMTQ1LCAxMSwgNCwgCi0gICAgMjQ2LCAxNzAsIDExLCA0LCAyNDYsIDE1NSwgMTEsIDQsIDI0NiwgODgsIDExLCA0LCAyNDYsIDk4LCAxMSwgNCwgMjQ2LCAKLSAgICA5MiwgMTEsIDQsIDI0NiwgODksIDExLCA0LCAyNDYsIDkxLCAxMSwgNCwgMjQ2LCA4MSwgMTEsIDQsIDI0NiwgODAsIDExLCAKLSAgICA0LCAyNDYsIDg1LCAxMSwgNCwgMjQ2LCA4NCwgMTEsIDQsIDI0NiwgODIsIDExLCA0LCAyNDYsIDgzLCAxMSwgNCwgMjE1LCAKLSAgICAxODEsIDExLCA0LCAyMTUsIDE4NSwgMTEsIDQsIDIxNSwgMTYzLCAxMSwgNCwgMjE1LCAxNjQsIDExLCA0LCAyMTUsIDE2OCwgCi0gICAgMTEsIDQsIDIxNSwgMTY3LCAxMSwgNCwgMjE1LCAxNzEsIDExLCA0LCAyMTUsIDE2OSwgMTEsIDQsIDIxNSwgMTc1LCAxMSwgCi0gICAgNCwgMjE1LCAxNzQsIDExLCA0LCAyMTUsIDE4MCwgMTEsIDQsIDIxNSwgMTc2LCAxMSwgNCwgMjE1LCAxNTksIDExLCA0LCAKLSAgICAyMTUsIDE1NywgMTEsIDQsIDIxNSwgMTY1LCAxMSwgNCwgMjE1LCAxNjIsIDExLCA0LCAyMTUsIDE2MCwgMTEsIDQsIDIxNSwgCi0gICAgMTYxLCAxMSwgNCwgMjE1LCAxNTIsIDExLCA0LCAyMTUsIDE1MSwgMTEsIDQsIDIxNSwgMTU2LCAxMSwgNCwgMjE1LCAxNTUsIAotICAgIDExLCA0LCAyMTUsIDE1MywgMTEsIDQsIDIxNSwgMTU0LCAxMSwgNCwgMjIxLCAxNDUsIDExLCA0LCAyMjEsIDE0NCwgMTEsIAotICAgIDQsIDIyMSwgMTQ3LCAxMSwgNCwgMjIxLCAxNDYsIDExLCA0LCAyMjEsIDEzNiwgMTEsIDQsIDIyMSwgMTM4LCAxMSwgNCwgCi0gICAgMjIxLCAxMzcsIDExLCA0LCAyMjEsIDE0MCwgMTEsIDQsIDIyMSwgMTM5LCAxMSwgNCwgMjIxLCAxNDMsIDExLCA0LCAyMjEsIAotICAgIDE0MiwgMTEsIDQsIDIyMSwgMTMwLCAxMSwgNCwgMjIxLCAxMjksIDExLCA0LCAyMjEsIDEzNSwgMTEsIDQsIDIyMSwgMTMzLCAKLSAgICAxMSwgNCwgMjIxLCAxMzEsIDExLCA0LCAyMjEsIDEzMiwgMTEsIDQsIDIyMSwgMTI0LCAxMSwgNCwgMjIxLCAxMjMsIDExLCAKLSAgICA0LCAyMjEsIDEyOCwgMTEsIDQsIDIyMSwgMTI3LCAxMSwgNCwgMjIxLCAxMjUsIDExLCA0LCAyMjEsIDEyNiwgMTEsIDQsIAotICAgIDIxMywgNTMsIDExLCA0LCAyMTMsIDQ4LCAxMSwgNCwgMjEzLCA5MCwgMTEsIDQsIDIxMywgNjQsIDExLCA0LCAyMTIsIDE4OCwgCi0gICAgMTEsIDQsIDIxMiwgMTkwLCAxMSwgNCwgMjEyLCAxODksIDExLCA0LCAyMTIsIDIxMiwgMTEsIDQsIDIxMiwgMjA4LCAxMSwgCi0gICAgNCwgMjEyLCAyNDIsIDExLCA0LCAyMTIsIDIzMiwgMTEsIDQsIDIxMywgMjEsIDExLCA0LCAyMTMsIDE0LCAxMSwgNCwgMjEzLCAKLSAgICA0MywgMTEsIDQsIDIxMywgMzAsIDExLCA0LCAyMTIsIDE4NCwgMTEsIDQsIDIxMiwgMTgxLCAxMSwgNCwgMjEyLCAxOTksIAotICAgIDExLCA0LCAyMTIsIDE4NywgMTEsIDQsIDIxMiwgMTg1LCAxMSwgNCwgMjEyLCAxODYsIDExLCA0LCAyMTIsIDE2NSwgMTEsIAotICAgIDQsIDIxMiwgMTY0LCAxMSwgNCwgMjEyLCAxNzEsIDExLCA0LCAyMTIsIDE2OCwgMTEsIDQsIDIxMiwgMTY2LCAxMSwgNCwgCi0gICAgMjEyLCAxNjcsIDExLCA0LCAyMTYsIDE3MiwgMTEsIDQsIDIxNiwgMTY2LCAxMSwgNCwgMjE2LCAyMjAsIDExLCA0LCAyMTYsIAotICAgIDE3OCwgMTEsIDQsIDIxNSwgMTIyLCAxMSwgNCwgMjE1LCAxMjQsIDExLCA0LCAyMTUsIDEyMywgMTEsIDQsIDIxNSwgMTk5LCAKLSAgICAxMSwgNCwgMjE1LCAxODcsIDExLCA0LCAyMTUsIDIyNywgMTEsIDQsIDIxNSwgMjAzLCAxMSwgNCwgMjE2LCA2NiwgMTEsIDQsIAotICAgIDIxNiwgMTU4LCAxMSwgNCwgMjE2LCAxMDUsIDExLCA0LCAyMTUsIDExNSwgMTEsIDQsIDIxNSwgMTEyLCAxMSwgNCwgMjE1LCAKLSAgICAxNDUsIDExLCA0LCAyMTUsIDEyMSwgMTEsIDQsIDIxNSwgMTE3LCAxMSwgNCwgMjE1LCAxMTgsIDExLCA0LCAyMTUsIDk3LCAKLSAgICAxMSwgNCwgMjE1LCA5NiwgMTEsIDQsIDIxNSwgMTAyLCAxMSwgNCwgMjE1LCAxMDAsIDExLCA0LCAyMTUsIDk4LCAxMSwgNCwgCi0gICAgMjE1LCA5OSwgMTEsIDQsIDIzMCwgMTMxLCAxMSwgNCwgMjMwLCAxMzAsIDExLCA0LCAyMzAsIDE0MSwgMTEsIDQsIDIzMCwgCi0gICAgMTMyLCAxMSwgNCwgMjMwLCAxMzcsIDExLCA0LCAyMzAsIDEzNiwgMTEsIDQsIDIzMCwgMTM5LCAxMSwgNCwgMjMwLCAxMzgsIAotICAgIDExLCA0LCAyMzAsIDcyLCAxMSwgNCwgMjMwLCA3MSwgMTEsIDQsIDIzMCwgNzQsIDExLCA0LCAyMzAsIDczLCAxMSwgNCwgCi0gICAgMjMwLCA4OCwgMTEsIDQsIDIzMCwgODYsIDExLCA0LCAyMzAsIDEwMSwgMTEsIDQsIDIzMCwgOTAsIDExLCA0LCAyMzAsIDY1LCAKLSAgICAxMSwgNCwgMjMwLCA2MywgMTEsIDQsIDIzMCwgODIsIDExLCA0LCAyMzAsIDcwLCAxMSwgNCwgMjMwLCA2NywgMTEsIDQsIAotICAgIDIzMCwgNjgsIDExLCA0LCAyMzAsIDU3LCAxMSwgNCwgMjMwLCA1NiwgMTEsIDQsIDIzMCwgNjEsIDExLCA0LCAyMzAsIDYwLCAKLSAgICAxMSwgNCwgMjMwLCA1OCwgMTEsIDQsIDIzMCwgNTksIDExLCA0LCAyMTcsIDgxLCAxMSwgNCwgMjE3LCA3OSwgMTEsIDQsIAotICAgIDIxNywgODgsIDExLCA0LCAyMTcsIDgyLCAxMSwgNCwgMjE3LCA4NSwgMTEsIDQsIDIxNywgODQsIDExLCA0LCAyMTcsIDg3LCAKLSAgICAxMSwgNCwgMjE3LCA4NiwgMTEsIDQsIDIxNywgMzIsIDExLCA0LCAyMTcsIDI5LCAxMSwgNCwgMjE3LCAzNCwgMTEsIDQsIAotICAgIDIxNywgMzMsIDExLCA0LCAyMTcsIDY4LCAxMSwgNCwgMjE3LCA2NywgMTEsIDQsIDIxNywgNzcsIDExLCA0LCAyMTcsIDcxLCAKLSAgICAxMSwgNCwgMjE3LCAyNCwgMTEsIDQsIDIxNywgMjAsIDExLCA0LCAyMTcsIDY1LCAxMSwgNCwgMjE3LCAyOCwgMTEsIDQsIAotICAgIDIxNywgMjYsIDExLCA0LCAyMTcsIDI3LCAxMSwgNCwgMjE3LCA0LCAxMSwgNCwgMjE3LCAyLCAxMSwgNCwgMjE3LCAxNCwgCi0gICAgMTEsIDQsIDIxNywgNywgMTEsIDQsIDIxNywgNSwgMTEsIDQsIDIxNywgNiwgMTEsIDQsIDIzMCwgMTIwLCAxMSwgNCwgMjMwLCAKLSAgICAxMTksIDExLCA0LCAyMzAsIDEyNiwgMTEsIDQsIDIzMCwgMTIxLCAxMSwgNCwgMjMwLCAxMjMsIDExLCA0LCAyMzAsIDEyMiwgCi0gICAgMTEsIDQsIDIzMCwgMTI1LCAxMSwgNCwgMjMwLCAxMjQsIDExLCA0LCAyMzAsIDExMSwgMTEsIDQsIDIzMCwgMTEzLCAxMSwgCi0gICAgNCwgMjMwLCAxMTIsIDExLCA0LCAyMzAsIDExNiwgMTEsIDQsIDIzMCwgMTE1LCAxMSwgNCwgMjMwLCAxMTgsIDExLCA0LCAKLSAgICAyMzAsIDExNywgMTEsIDQsIDIzMCwgMTA3LCAxMSwgNCwgMjMwLCAxMDYsIDExLCA0LCAyMzAsIDExNCwgMTEsIDQsIDIzMCwgCi0gICAgMTEwLCAxMSwgNCwgMjMwLCAxMDgsIDExLCA0LCAyMzAsIDEwOSwgMTEsIDQsIDIzMCwgMTAzLCAxMSwgNCwgMjMwLCAxMDIsIAotICAgIDExLCA0LCAyMzAsIDEwNSwgMTEsIDQsIDIzMCwgMTA0LCAxMSwgNCwgMjIyLCAyNSwgMTEsIDQsIDIyMiwgMjQsIDExLCA0LCAKLSAgICAyMjIsIDMyLCAxMSwgNCwgMjIyLCAyNiwgMTEsIDQsIDIyMiwgMjgsIDExLCA0LCAyMjIsIDI3LCAxMSwgNCwgMjIyLCAzMSwgCi0gICAgMTEsIDQsIDIyMiwgMjksIDExLCA0LCAyMjIsIDE0LCAxMSwgNCwgMjIyLCAxNSwgMTEsIDQsIDIyMiwgMjAsIDExLCA0LCAKLSAgICAyMjIsIDE5LCAxMSwgNCwgMjIyLCAyMywgMTEsIDQsIDIyMiwgMjEsIDExLCA0LCAyMjIsIDksIDExLCA0LCAyMjIsIDE4LCAKLSAgICAxMSwgNCwgMjIyLCAxMywgMTEsIDQsIDIyMiwgMTAsIDExLCA0LCAyMjIsIDExLCAxMSwgNCwgMjIyLCA0LCAxMSwgNCwgCi0gICAgMjIyLCAzLCAxMSwgNCwgMjIyLCA4LCAxMSwgNCwgMjIyLCA3LCAxMSwgNCwgMjIyLCA1LCAxMSwgNCwgMjIyLCA2LCAxMSwgCi0gICAgNCwgMjIwLCAyMzYsIDExLCA0LCAyMjAsIDIzNSwgMTEsIDQsIDIyMCwgMjQ4LCAxMSwgNCwgMjIwLCAyNDAsIDExLCA0LCAKLSAgICAyMjAsIDI0NSwgMTEsIDQsIDIyMCwgMjQ0LCAxMSwgNCwgMjIwLCAyNDcsIDExLCA0LCAyMjAsIDI0NiwgMTEsIDQsIDIyMCwgCi0gICAgMjIxLCAxMSwgNCwgMjIwLCAyMjMsIDExLCA0LCAyMjAsIDIyMiwgMTEsIDQsIDIyMCwgMjI4LCAxMSwgNCwgMjIwLCAyMjcsIAotICAgIDExLCA0LCAyMjAsIDIzMywgMTEsIDQsIDIyMCwgMjI5LCAxMSwgNCwgMjIwLCAyMTksIDExLCA0LCAyMjAsIDIxNywgMTEsIAotICAgIDQsIDIyMCwgMjI2LCAxMSwgNCwgMjIwLCAyMjAsIDExLCA0LCAyMDMsIDE2MiwgMTEsIDQsIDIwMywgMTYxLCAxMSwgNCwgCi0gICAgMjAzLCAxNzAsIDExLCA0LCAyMDMsIDE2NCwgMTEsIDQsIDIwMywgMTY2LCAxMSwgNCwgMjAzLCAxNjUsIDExLCA0LCAyMDMsIAotICAgIDE2OCwgMTEsIDQsIDIwMywgMTY3LCAxMSwgNCwgMjAzLCAxNTAsIDExLCA0LCAyMDMsIDE1MSwgMTEsIDQsIDIwMywgMTU1LCAKLSAgICAxMSwgNCwgMjAzLCAxNTQsIDExLCA0LCAyMDMsIDE2MCwgMTEsIDQsIDIwMywgMTU4LCAxMSwgNCwgMjAzLCAxMjgsIDExLCAKLSAgICA0LCAyMDMsIDEyNiwgMTEsIDQsIDIwMywgMTQxLCAxMSwgNCwgMjAzLCAxMzEsIDExLCA0LCAyMDMsIDEyOSwgMTEsIDQsIAotICAgIDIwMywgMTMwLCAxMSwgNCwgMjAyLCAyNTMsIDExLCA0LCAyMDIsIDI1MSwgMTEsIDQsIDIwMywgMTEsIDExLCA0LCAyMDIsIAotICAgIDI1NCwgMTEsIDQsIDIwMywgNSwgMTEsIDQsIDIwMywgNCwgMTEsIDQsIDIwMywgOCwgMTEsIDQsIDIwMywgNiwgMTEsIDQsIAotICAgIDIwMiwgMTkxLCAxMSwgNCwgMjAyLCAxOTAsIDExLCA0LCAyMDIsIDE5NCwgMTEsIDQsIDIwMiwgMTkyLCAxMSwgNCwgMjAyLCAKLSAgICAyMjcsIDExLCA0LCAyMDIsIDIyMywgMTEsIDQsIDIwMiwgMjQ3LCAxMSwgNCwgMjAyLCAyMzEsIDExLCA0LCAyMDIsIDE4MiwgCi0gICAgMTEsIDQsIDIwMiwgMTc4LCAxMSwgNCwgMjAyLCAyMTMsIDExLCA0LCAyMDIsIDE4OSwgMTEsIDQsIDIwMiwgMTg1LCAxMSwgCi0gICAgNCwgMjAyLCAxODYsIDExLCA0LCAyMDIsIDE2MiwgMTEsIDQsIDIwMiwgMTYxLCAxMSwgNCwgMjAyLCAxNjksIDExLCA0LCAKLSAgICAyMDIsIDE2NSwgMTEsIDQsIDIwMiwgMTYzLCAxMSwgNCwgMjAyLCAxNjQsIDExLCA0MCwgMjE3LCA2OCwgMTEsIDQwLCAyMjcsIAotICAgIDE0OCwgMTEsIDQwLCAyMjksIDY0LCAxMSwgNDAsIDIyMCwgMjQwLCAxMSwgNDAsIDI0NSwgNjAsIDExLCA0MCwgMjExLCAKLSAgICAxMzIsIDExLCA0MCwgMjM4LCAxMzgsIDExLCA0MCwgMjM4LCAxNzAsIDExLCA0MCwgMjI0LCAxNTUsIDExLCA0MCwgMjM1LCAKLSAgICAyMzMsIDExLCA0MCwgMjI2LCAxOTIsIDExLCA0MCwgMjQ4LCAxNzAsIDExLCA0MCwgMjI0LCAyNywgMTEsIDQwLCAyMDIsIAotICAgIDI0NywgMTEsIDQwLCAyMTcsIDE1OSwgMTEsIDQwLCAyMzUsIDIyNywgMTEsIDQwLCAyMDksIDIxMiwgMTEsIDQwLCAyMzksIAotICAgIDgsIDExLCA0MCwgMjAxLCAyNTQsIDExLCA0MCwgMjQ1LCA1NCwgMTEsIDQwLCAyNDQsIDgwLCAxMSwgNDAsIDI0NywgMTYwLCAKLSAgICAxMSwgNDAsIDIzOCwgMTM0LCAxMSwgNDAsIDIyMCwgMjI5LCAxMSwgNDAsIDIwNywgMjAzLCAxMSwgNDAsIDIyMCwgOSwgMTEsIAotICAgIDQwLCAyMzAsIDEwNywgMTEsIDQwLCAyMDIsIDEzLCAxMSwgNDAsIDIxNywgMTM4LCAxMSwgNDAsIDIzNiwgMTc4LCAxMSwgCi0gICAgNDAsIDIwMiwgMjUzLCAxMSwgNDAsIDIwNCwgMTU5LCAxMSwgNDAsIDIxMiwgMTcxLCAxMSwgNDAsIDIwNiwgNDQsIDExLCAKLSAgICA0MCwgMjAyLCAxMTYsIDExLCA0MCwgMjMwLCAxMDEsIDExLCA0MCwgMjIwLCAxOTMsIDExLCA0MCwgMjMwLCAxMDUsIDExLCAKLSAgICA0MCwgMjM4LCAxOCwgMTEsIDQwLCAyMzAsIDEyNSwgMTEsIDQwLCAyMDQsIDAsIDExLCA0MCwgMjQyLCA0MiwgMTEsIDQwLCAKLSAgICAyMTIsIDE4NiwgMTEsIDQwLCAyMjcsIDE0MiwgMTEsIDQwLCAyNDUsIDY2LCAxMSwgNDAsIDI0NSwgMTAyLCAxMSwgNDAsIAotICAgIDI0NiwgNjMsIDExLCA0MCwgMjM1LCAyMzAsIDExLCA0MCwgMjEzLCA1MywgMTEsIDQwLCAyMDEsIDI1MywgMTEsIDQwLCAKLSAgICAyMTIsIDIzMiwgMTEsIDQwLCAyNDYsIDE3MCwgMTEsIDQwLCAyMDEsIDIyMywgMTEsIDQwLCAyMjMsIDUxLCAxMSwgNDAsIAotICAgIDIyOSwgMjAxLCAyMjcsIDkxLCAxLCAyNDksIDMyLCAyMjcsIDkxLCAxLCAxODUsIDIyNywgOTEsIDEsIDIxOCwgMjA4LCAKLSAgICAyMjcsIDkxLCAxLCAyNDQsIDIxMiwgMjI3LCA5MSwgMSwgMjEwLCAyMiwgMjI3LCA5MSwgMSwgMjA5LCAxMDgsIDIyNywgOTEsIAotICAgIDEsIDIzOSwgOCwgMjI3LCA5MSwgMSwgMTczLCAyMjcsIDkxLCAxLCAyMjksIDE0NCwgMjI3LCA5MSwgMSwgMjMwLCAxODEsIAotICAgIDIyNywgOTEsIDEsIDI0NywgOTIsIDIyNywgOTEsIDEsIDI0NiwgMTk5LCAyMjcsIDkxLCAxLCAyNDEsIDI1NSwgMjI3LCA5MSwgCi0gICAgMSwgMjA4LCAyMCwgMjI3LCA5MSwgMSwgMjA4LCAxMCwgMjI3LCA5MSwgMSwgMTkyLCAyMjcsIDkxLCAxLCAyMDEsIDIwMSwgCi0gICAgMjI3LCA5MSwgMSwgMjI4LCAxMTMsIDIyNywgOTEsIDEsIDIxNSwgMzYsIDIyNywgOTEsIDEsIDIwMiwgODAsIDIyNywgOTEsIAotICAgIDEsIDIwMiwgMTE2LCAyMjcsIDkxLCAxLCAyMjIsIDIwMywgMjI3LCA5MSwgMSwgMTUyLCAyMjcsIDkxLCAxLCAyMDMsIDE4MiwgCi0gICAgMjI3LCA5MSwgMSwgMjM3LCAxMiwgMjI3LCA5MSwgMSwgMjQwLCAxMDgsIDIyNywgOTEsIDEsIDIwNCwgMTExLCAyMjcsIDkxLCAKLSAgICAxLCAyMTMsIDkwLCAyMjcsIDkxLCAxLCAxOTgsIDIyNywgOTEsIDEsIDIzOCwgMTE5LCAyMjcsIDkxLCAxLCA2MywgMjI3LCAKLSAgICA5MSwgMSwgMjUxLCAxMDksIDIyNywgOTEsIDEsIDc0LCAyMjcsIDkxLCAxLCAyNDAsIDIzOCwgMjI3LCA5MSwgMSwgNzUsIAotICAgIDIyNywgOTEsIDEsIDc4LCAyMjcsIDkxLCAxLCA2OCwgMjI3LCA5MSwgMSwgMjA3LCAyNCwgMjI3LCA5MSwgMSwgMjA3LCAxOCwgCi0gICAgMjI3LCA5MSwgMSwgMjIwLCA3MywgMjI3LCA5MSwgMSwgMTQzLCAyMjMsIDE3MCwgMjA5LCAyLCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTExLCAyMTgsIDY5LCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyNDUsIDY1LCAyMjcsIDkxLCAxLCAxNDMsIAotICAgIDIyMywgMTcwLCAyNDgsIDIzLCAyMjcsIDkxLCAxLCAxNDMsIDIyMywgMTcwLCAyMDEsIDIwMSwgMjI3LCA5MSwgMSwgMTQzLCAKLSAgICAyMjMsIDE3MCwgMjMwLCAxNTAsIDIyNywgOTEsIDIxNywgMTc5LCAyNDUsIDIzMywgMjI3LCA5MSwgMjE3LCAxNzksIDIzOSwgCi0gICAgMTAyLCAyMTEsIDYxLCA0OCwgNCwgMjQxLCAxNjEsIDQ4LCA0LCAyNDEsIDE1NywgNDgsIDQsIDIzNywgNDgsIDQ4LCA0LCAKLSAgICAyMDQsIDU1LCA0OCwgNCwgMjA0LCA1NCwgNDgsIDQsIDIxOSwgMjMsIDQ4LCA0LCAyNDgsIDkzLCA0OCwgNCwgMjQ4LCAxNTAsIAotICAgIDQ4LCA0LCAyMjUsIDQ2LCA0OCwgNCwgMjI4LCAyMzksIDQ4LCA0LCAyMjQsIDE4NywgNDgsIDQsIDIzOCwgMjAzLCA0OCwgNCwgCi0gICAgMjQwLCA1MywgNDgsIDQsIDIwNiwgNTAsIDQ4LCA0LCAyMDksIDE3NiwgNDgsIDQsIDIwOSwgOTAsIDQ4LCA0LCAyNDMsIAotICAgIDI0NywgNDgsIDQsIDI0MywgMjQ0LCA0OCwgNCwgMjI3LCAyMjYsIDQ4LCA0LCAyMTYsIDEzNSwgNDgsIDQsIDI0NCwgNjEsIAotICAgIDQ4LCA0LCAyMjMsIDE2LCA0OCwgNCwgMjE0LCAxNjUsIDQ4LCA0LCAyMTMsIDQxLCA0OCwgNCwgMjAyLCA5MCwgNDgsIDQsIAotICAgIDIwMiwgNzAsIDQ4LCA0LCAyNDYsIDIzMCwgNDgsIDQsIDIzMCwgMTU5LCA0OCwgNCwgMjIyLCAzOSwgNDgsIDQsIDIwMywgCi0gICAgNDksIDQ4LCA0LCAyMjksIDE5OCwgNDgsIDQsIDIyMiwgMTc2LCA0OCwgNCwgMjM4LCAxODIsIDQ4LCA0LCAyMjUsIDgsIDQ4LCAKLSAgICA0LCAyMjIsIDIzNSwgNDgsIDQsIDIyMSwgMCwgNDgsIDQsIDc1LCA0OCwgNCwgMjMxLCA0OSwgNDgsIDQsIDIzNywgMywgNDgsIAotICAgIDQsIDIzNiwgMjM4LCA0OCwgNCwgMjA0LCAzMCwgNDgsIDQsIDIwNCwgMTgsIDQ4LCA0LCAyMTgsIDE2NywgNDgsIDQsIDI0OCwgCi0gICAgOTEsIDQ4LCA0LCAyNDgsIDg2LCA0OCwgNCwgMjI1LCAzOSwgNDgsIDQsIDIyOCwgMjM2LCA0OCwgNCwgMjI0LCAxODQsIDQ4LCAKLSAgICA0LCAyMzgsIDE5OSwgNDgsIDQsIDI0MCwgMjYsIDQ4LCA0LCAyMDUsIDIzMCwgNDgsIDQsIDIwOSwgMiwgNDgsIDQsIDIwOSwgCi0gICAgNzAsIDQ4LCA0LCAyNDMsIDIzOSwgNDgsIDQsIDI0MywgMjQzLCA0OCwgNCwgMjI3LCAxNDgsIDQ4LCA0LCAyMTYsIDU3LCAKLSAgICA0OCwgNCwgMjQzLCAyMzMsIDQ4LCA0LCAyMjMsIDEwLCA0OCwgNCwgMjEyLCAxNjIsIDQ4LCA0LCAyMTMsIDExLCA0OCwgNCwgCi0gICAgMjAyLCAzOSwgNDgsIDQsIDIwMiwgNjYsIDQ4LCA0LCAyNDYsIDc5LCA0OCwgNCwgMjMwLCAxNDEsIDQ4LCA0LCAyMjIsIDMyLCAKLSAgICA0OCwgNCwgMjAzLCAxMSwgNDgsIDQsIDIyOSwgMTAwLCA0OCwgNCwgMjIyLCAxNjgsIDQ4LCA0LCAyMzgsIDgxLCA0OCwgNCwgCi0gICAgMjI0LCAxNTUsIDQ4LCA0LCAyMjIsIDEwMCwgNDgsIDQsIDIyMCwgMjQ4LCA0OCwgNCwgNjMsIDQ4LCA0LCAyNTAsIDIzMSwgCi0gICAgNDgsIDQsIDIyMiwgMTk4LCA0OCwgNCwgMTUyLCA0OCwgNCwgMjM3LCAxMjYsIDQ4LCA0LCAyMDQsIDExMSwgNDgsIDQsIAotICAgIDIwNCwgOTcsIDQ4LCA0LCAxODUsIDQ4LCA0LCAyNDgsIDk4LCA0OCwgNCwgMjQ5LCAzMiwgNDgsIDQsIDIyNSwgNTQsIDQ4LCAKLSAgICA0LCAyMjgsIDI0NCwgNDgsIDQsIDIyOCwgMjQyLCA0OCwgNCwgMjI0LCAxOTEsIDQ4LCA0LCAyMzgsIDIwNywgNDgsIDQsIAotICAgIDI0MCwgMTA4LCA0OCwgNCwgMjA2LCA4NiwgNDgsIDQsIDIxMCwgMjIsIDQ4LCA0LCAyMDksIDEwOCwgNDgsIDQsIDI0NCwgMSwgCi0gICAgNDgsIDQsIDI0MywgMjQ2LCA0OCwgNCwgMjI4LCAxMTMsIDQ4LCA0LCAyMTYsIDIyMCwgNDgsIDQsIDI0NCwgMjEyLCA0OCwgCi0gICAgNCwgMjIzLCAyNSwgNDgsIDQsIDIxNSwgMzYsIDQ4LCA0LCAyMTMsIDkwLCA0OCwgNCwgMjAyLCAxMTYsIDQ4LCA0LCAyMDIsIAotICAgIDgwLCA0OCwgNCwgMjQ3LCA5MiwgNDgsIDQsIDIzMCwgMTgxLCA0OCwgNCwgMjIyLCA0OCwgNDgsIDQsIDE5OCwgNDgsIDQsIAotICAgIDE3MywgNDgsIDQsIDIzMCwgNCwgNDgsIDQsIDIyMiwgMTgyLCA0OCwgNCwgMjM5LCA4LCA0OCwgNCwgMTkyLCA0OCwgNCwgCi0gICAgMjAxLCAyMDEsIDQ4LCA0LCAyMjEsIDExLCA0OCwgNCwgMjIwLCAxOCwgNDgsIDQsIDIyMCwgMTMsIDQ4LCA0LCAyMzYsIAotICAgIDExNywgNDgsIDQsIDIwMywgMjQ0LCA0OCwgNCwgMjAzLCAyNDAsIDQ4LCA0LCAyMTgsIDQ1LCA0OCwgNCwgMjQ4LCA4OSwgCi0gICAgNDgsIDQsIDI0OCwgMTAsIDQ4LCA0LCAyMjUsIDM0LCA0OCwgNCwgMjI4LCAyMzQsIDQ4LCA0LCAyMjQsIDE4MCwgNDgsIDQsIAotICAgIDIzOCwgMTk1LCA0OCwgNCwgMjM5LCAxNzUsIDQ4LCA0LCAyMDUsIDE3NiwgNDgsIDQsIDIwOCwgMTQ4LCA0OCwgNCwgMjA5LCAKLSAgICA0MiwgNDgsIDQsIDI0MywgMjM2LCA0OCwgNCwgMjQzLCAyNDEsIDQ4LCA0LCAyMjcsIDE4LCA0OCwgNCwgMjE1LCAyMDgsIAotICAgIDQ4LCA0LCAyNDMsIDkwLCA0OCwgNCwgMjIyLCAyNTMsIDQ4LCA0LCAyMTEsIDI1MCwgNDgsIDQsIDIxMiwgMjM2LCA0OCwgNCwgCi0gICAgMjAyLCAxNSwgNDgsIDQsIDIwMiwgNjEsIDQ4LCA0LCAyNDUsIDE4MCwgNDgsIDQsIDIzMCwgOTEsIDQ4LCA0LCAyMjIsIDIyLCAKLSAgICA0OCwgNCwgMjAyLCAyMzIsIDQ4LCA0LCAyMjksIDYsIDQ4LCA0LCAyMjIsIDE2NiwgNDgsIDQsIDIzOCwgMjgsIDQ4LCA0LCAKLSAgICAyMjQsIDM1LCA0OCwgNCwgMjIxLCAxODAsIDQ4LCA0LCAyMjAsIDIzMCwgNDgsIDQsIDY4LCA0OCwgNCwgMjA2LCAyNTUsIAotICAgIDQ4LCA0LCAyMzYsIDI2LCA0OCwgNCwgMjM2LCAxMywgNDgsIDQsIDIwMywgMjE3LCA0OCwgNCwgMjAzLCAyMTAsIDQ4LCA0LCAKLSAgICAyMTcsIDE5MSwgNDgsIDQsIDI0OCwgODgsIDQ4LCA0LCAyNDcsIDE5MywgNDgsIDQsIDIyNSwgMzMsIDQ4LCA0LCAyMjgsIAotICAgIDIzMiwgNDgsIDQsIDIyNCwgMTc5LCA0OCwgNCwgMjM4LCAxOTQsIDQ4LCA0LCAyMzksIDEwOCwgNDgsIDQsIDIwNCwgMTYzLCAKLSAgICA0OCwgNCwgMjA3LCAyMDMsIDQ4LCA0LCAyMDksIDIyLCA0OCwgNCwgMjQzLCAyMzQsIDQ4LCA0LCAyNDMsIDI0MCwgNDgsIDQsIAotICAgIDIyNiwgMjM5LCA0OCwgNCwgMjE1LCAxNDUsIDQ4LCA0LCAyNDIsIDQyLCA0OCwgNCwgMjIyLCAyNDgsIDQ4LCA0LCAyMTEsIAotICAgIDEwLCA0OCwgNCwgMjEyLCAxOTksIDQ4LCA0LCAyMDIsIDYsIDQ4LCA0LCAyMDIsIDU3LCA0OCwgNCwgMjQ1LCAxMTAsIDQ4LCAKLSAgICA0LCAyMzAsIDgyLCA0OCwgNCwgMjIyLCAxOCwgNDgsIDQsIDIwMiwgMjEzLCA0OCwgNCwgMjI4LCAyMDksIDQ4LCA0LCAyMjIsIAotICAgIDE2NSwgNDgsIDQsIDIzNywgMjMwLCA0OCwgNCwgMjIzLCAyNDYsIDQ4LCA0LCAyMjEsIDg0LCA0OCwgNCwgMjIwLCAyMjYsIAotICAgIDQ4LCA0LCA3OCwgNDgsIDQsIDIyMCwgMzEsIDQ4LCA0LCAyMjIsIDEyNCwgNDgsIDQsIDIzNiwgMTM2LCA0OCwgNCwgMjM2LCAKLSAgICAxMjAsIDQ4LCA0LCAyMDQsIDAsIDQ4LCA0LCAyMDMsIDI0NSwgNDgsIDQsIDIxOCwgNjksIDQ4LCA0LCAyNDgsIDkwLCA0OCwgCi0gICAgNCwgMjQ4LCAyMywgNDgsIDQsIDIyNSwgMzUsIDQ4LCA0LCAyMjgsIDIzNSwgNDgsIDQsIDIyNCwgMTgyLCA0OCwgNCwgMjM4LCAKLSAgICAxOTcsIDQ4LCA0LCAyMzgsIDE5NiwgNDgsIDQsIDIzOSwgMTg2LCA0OCwgNCwgMjA1LCAxODksIDQ4LCA0LCAxMzUsIDQ4LCAKLSAgICA0LCAyMDksIDQ3LCA0OCwgNCwgMjQzLCAyMzcsIDQ4LCA0LCAyNDMsIDI0MiwgNDgsIDQsIDIyNywgNDksIDQ4LCA0LCAyMTUsIAotICAgIDIyNywgNDgsIDQsIDI0MywgMTEzLCA0OCwgNCwgMjIzLCAxLCA0OCwgNCwgMjEyLCAxMywgNDgsIDQsIDIxMiwgMjQyLCA0OCwgCi0gICAgNCwgMjAyLCAxNywgNDgsIDQsIDIwMiwgNjMsIDQ4LCA0LCAyNDUsIDI1NCwgNDgsIDQsIDIzMCwgMTAxLCA0OCwgNCwgMjIyLCAKLSAgICAyMywgNDgsIDQsIDIwMiwgMjQ3LCA0OCwgNCwgMjI5LCAyNiwgNDgsIDQsIDIyMiwgMTY3LCA0OCwgNCwgMjM4LCAzOSwgNDgsIAotICAgIDQsIDIyNCwgODIsIDQ4LCA0LCAyMjEsIDE5MSwgNDgsIDQsIDIyMCwgMjMzLCA0OCwgNCwgNzQsIDQ4LCA0LCAyNDEsIDkyLCAKLSAgICA0OCwgNCwgMjIyLCAxODcsIDQ4LCA0LCAyMzcsIDY3LCA0OCwgNCwgMjM3LCAzMywgNDgsIDQsIDIwNCwgNjIsIDQ4LCA0LCAKLSAgICAyMDQsIDQ5LCA0OCwgNCwgMjE5LCAzNCwgNDgsIDQsIDI0OCwgOTQsIDQ4LCA0LCAyNDgsIDE2MiwgNDgsIDQsIDIyNSwgNDcsIAotICAgIDQ4LCA0LCAyMjgsIDI0MCwgNDgsIDQsIDIyOCwgMjM4LCA0OCwgNCwgMjI0LCAxODgsIDQ4LCA0LCAyMzgsIDIwNCwgNDgsIAotICAgIDQsIDIzOCwgMjAyLCA0OCwgNCwgMjQwLCA2MCwgNDgsIDQsIDIwNiwgNTUsIDQ4LCA0LCAyMDksIDE4NywgNDgsIDQsIDIwOSwgCi0gICAgOTIsIDQ4LCA0LCAyNDMsIDI0OCwgNDgsIDQsIDI0MywgMjQ1LCA0OCwgNCwgMjI3LCAyMzQsIDQ4LCA0LCAyMTYsIDE1OCwgCi0gICAgNDgsIDQsIDI0NCwgNzUsIDQ4LCA0LCAyMjMsIDE3LCA0OCwgNCwgMjE0LCAxNzcsIDQ4LCA0LCAyMTMsIDQzLCA0OCwgNCwgCi0gICAgMjAyLCA5MiwgNDgsIDQsIDIwMiwgNzEsIDQ4LCA0LCAyNDYsIDIzOCwgNDgsIDQsIDIzMCwgMTYxLCA0OCwgNCwgMjIyLCAKLSAgICA0MSwgNDgsIDQsIDIwMywgNTIsIDQ4LCA0LCAyMjksIDIwMSwgNDgsIDQsIDIyMiwgMTc3LCA0OCwgNCwgMjIyLCAxNzMsIAotICAgIDQ4LCA0LCAyMzgsIDE5MCwgNDgsIDQsIDIzOCwgMTc3LCA0OCwgNCwgMjI1LCAyMCwgNDgsIDQsIDIyMiwgMjQwLCA0OCwgNCwgCi0gICAgMjIxLCAxLCA0OCwgNCwgMjIyLCAyMDUsIDQ4LCA0LCAyMjcsIDE4OCwgNDgsIDI0NSwgMjMzLCA0OCwgMjM5LCAxMDIsIAotICAgIDIxMSwgNjEsIDQ4LCAyMTcsIDQ3LCA4MiwgNDgsIDQsIDIyMywgMCwgMjQwLCAxMDgsIDQ4LCA0LCAyMjMsIDAsIDE3MywgCi0gICAgNDgsIDQsIDIyMywgMCwgMjExLCAyNTAsIDQ4LCAxNiwgMjQwLCA0OSwgNDgsIDE2LCAyMjksIDE5NiwgNDgsIDE2LCAyMDgsIAotICAgIDIxNSwgNDgsIDE2LCAyMjIsIDc1LCA0OCwgMTYsIDI0OCwgMjM3LCA0OCwgMTYsIDI0MCwgMTA3LCA0OCwgMTYsIDIxMCwgCi0gICAgMTgsIDQ4LCAxNiwgMjQ0LCAxNjQsIDQ4LCAxNiwgMjQzLCA4OSwgNDgsIDE2LCAyMjgsIDE5MywgNDgsIDE2LCAyMDgsIAotICAgIDE1MiwgNDgsIDE2LCAyNDMsIDExMiwgNDgsIDE2LCAyMzAsIDkyLCA0OCwgMTcsIDIwMiwgODQsIDQ4LCAxNywgMTA1LCA0OCwgCi0gICAgMTcsIDEwOCwgNDgsIDE3LCAxNDcsIDQ4LCAxNywgMTQ5LCA0OCwgMTcsIDE3MCwgNDgsIDE3LCAxOTUsIDQ4LCAxNywgMjEzLCAKLSAgICAxMTEsIDQ4LCAxNywgMTk5LCA0OCwgMTcsIDIyMiwgNjMsIDQ4LCA0LCAyMjMsIDAsIDE5MiwgNDgsIDQsIDIyMywgMCwgCi0gICAgMjQzLCAxMTMsIDM2LCA2LCAxLCAyMDIsIDg4LCAzNiwgNSwgMSwgMjAyLCA4OCwgMzYsIDYsIDEsIDI0MSwgMjUwLCAzNiwgCi0gICAgNSwgMSwgMjQxLCAyNTAsIDM2LCA2LCAxLCAyMTYsIDczLCAyNDEsIDI1MiwgMzYsIDUsIDEsIDIxNiwgNzMsIDI0MSwgMjUyLCAKLSAgICAzNiwgNiwgMSwgMjMwLCAyMzAsIDM2LCA1LCAxLCAyMzAsIDIzMCwgMzYsIDYsIDEsIDI0MywgMTI5LCAzNiwgNSwgMSwgCi0gICAgMjQzLCAxMjksIDM2LCA2LCAxLCAyMjQsIDQzLCAyMDcsIDE0LCAzNiwgNSwgMSwgMjI0LCA0MywgMjA3LCAxNCwgMzYsIDYsIAotICAgIDEsIDI0NywgMjA0LCAyMjAsIDM2LCAzNiwgNSwgMSwgMjQ3LCAyMDQsIDIyMCwgMzYsIDM2LCA2LCAxLCAyMjIsIDIxNiwgCi0gICAgMjAzLCAzNCwgMzYsIDUsIDEsIDIyMiwgMjE2LCAyMDMsIDM0LCAzNiwgNiwgMSwgMjAzLCAzMSwgMywgMjQ5LCAyNiwgMjAzLCAKLSAgICAzNCwgMzYsIDUsIDEsIDIwMywgMzEsIDMsIDI0OSwgMjYsIDIwMywgMzQsIDM2LCA2LCAxLCAyMzAsIDIyOCwgMjAzLCA2NiwgCi0gICAgMzYsIDUsIDEsIDIzMCwgMjI4LCAyMDMsIDY2LCAzNiwgNiwgMSwgMjE2LCA3MywgMjAyLCAyMTMsIDM2LCA1LCAxLCAyMTYsIAotICAgIDczLCAyMDIsIDIxMywgMzYsIDYsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDUsIDEsIDIzMCwgMjI4LCA2MywgMzYsIDYsIDEsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjQ2LCAxNiwgMjI3LCA4NiwgMjAyLCAxODMsIDM2LCA2LCAKLSAgICAxLCAyNDgsIDM1LCAyMDIsIDE4MywgMzYsIDUsIDEsIDI0OCwgMzUsIDIwMiwgMTgzLCAzNiwgNiwgMSwgMjMwLCAyMjgsIAotICAgIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgMTgzLCAzNiwgNSwgMSwgMjMwLCAyMjgsIDI0NiwgMTYsIDIyNywgODYsIDIwMiwgCi0gICAgMTgzLCAzNiwgNiwgMSwgMjAyLCAyNDksIDM2LCA1LCAxLCAyMDIsIDI0OSwgMzYsIDYsIDEsIDIxNiwgNzMsIDIwOCwgMTQsIAotICAgIDM2LCA1LCAxLCAyMTYsIDczLCAyMDgsIDE0LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDQsIDc1LCAzNiwgNSwgMSwgMjEyLCA3LCAKLSAgICAyNDQsIDc1LCAzNiwgNiwgMSwgMjEyLCA3LCAyNDEsIDEyMiwgMzYsIDUsIDEsIDIxMiwgNywgMjQxLCAxMjIsIDM2LCA2LCAKLSAgICAxLCAyMTIsIDcsIDI0MSwgMTAzLCAzNiwgNSwgMSwgMjEyLCA3LCAyNDEsIDEwMywgMzYsIDYsIDEsIDIyNCwgNDcsIDc4LCAKLSAgICAzNiwgNSwgMSwgMjI0LCA0NywgNzgsIDM2LCA2LCAxLCAyNDgsIDYzLCA3OCwgMzYsIDUsIDEsIDI0OCwgNjMsIDc4LCAzNiwgCi0gICAgNiwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgNSwgMSwgNTIsIDIyNCwgNDcsIDc4LCAzNiwgMSwgMjIzLCAyMjcsIDc4LCAKLSAgICAzOSwgMzYsIDIwNCwgMTQ2LCAzOSwgMzYsIDIwOSwgMTUzLCAyMjQsIDExNCwgNTQsIDM5LCAzNiwgMjM2LCAxMiwgMjI0LCAKLSAgICAxMTQsIDU0LCAzOSwgMzYsIDIwOSwgMzcsIDIyNCwgMTE0LCA1NCwgMjEyLCA1NSwgMjUwLCA1OSwgMzksIDM2LCAxLCAyMDcsIAotICAgIDExLCAyMzEsIDExMCwgMzksIDM2LCAxLCA3NSwgMzksIDM2LCAxLCAyMDMsIDExLCAzOSwgMzYsIDEsIDY4LCAzOSwgMzYsIAotICAgIDEsIDIzNywgOTEsIDU0LCAzOSwgMzYsIDEsIDIwMywgMzAsIDM5LCAzNiwgMSwgMjEyLCA3LCA1NCwgMzksIDM2LCAxLCAKLSAgICAyMjAsIDM2LCAzOSwgMzYsIDIyOSwgMjEzLCAzOSwgMzYsIDIxOSwgNDEsIDM2LCAyMjksIDIxMywgMzYsIDIxOSwgNDEsIAotICAgIDM2LCA2LCAxLCAyNDIsIDksIDM2LCA1LCAxLCAyNDIsIDksIDM2LCA2LCAxLCAyNDEsIDI0MSwgMzYsIDUsIDEsIDI0MSwgCi0gICAgMjQxLCAzNiwgNiwgMSwgMjAyLCA0NywgMzYsIDUsIDEsIDIwMiwgNDcsIDM2LCA2LCAxLCAyNDYsIDI1NCwgMzYsIDUsIDEsIAotICAgIDI0NiwgMjU0LCAzNiwgNiwgMSwgMjQxLCAyMzgsIDM2LCA1LCAxLCAyNDEsIDIzOCwgMzYsIDYsIDEsIDIwOSwgMTg4LCAzLCAKLSAgICAxMDEsIDExMywgMzYsIDUsIDEsIDIwOSwgMTg4LCAzLCAxMDEsIDExMywgMzYsIDYsIDEsIDIwNywgMTU4LCAzNiwgNSwgMSwgCi0gICAgMjA3LCAxNTgsIDM2LCA2LCAxLCAyMDcsIDI0NSwgMzYsIDUsIDEsIDIwNywgMjQ1LCAzNiwgNiwgMSwgMjA3LCAyNTAsIDM2LCAKLSAgICA1LCAxLCAyMDcsIDI1MCwgMzYsIDYsIDEsIDIwOSwgMTkzLCAzNiwgNSwgMSwgMjA5LCAxOTMsIDM2LCA2LCAxLCAyMzUsIAotICAgIDI1MSwgMzYsIDUsIDEsIDIzNSwgMjUxLCAzNiwgNiwgMSwgMjEyLCAxNzcsIDM2LCA1LCAxLCAyMTIsIDE3NywgMzYsIDYsIAotICAgIDEsIDUyLCA3OCwgMzYsIDUsIDEsIDUyLCA3OCwgMzYsIDYsIDEsIDI0NSwgMTI4LCA3OCwgMzYsIDUsIDEsIDI0NSwgMTI4LCAKLSAgICA3OCwgNjUsIDEsIDM2LCAyMzcsIDkxLCA1NCwgNjUsIDEsIDM2LCAyMTIsIDcsIDU0LCAzOSwgMzYsIDEsIDI0MSwgMTU0LCAKLSAgICAzOSwgMzYsIDEsIDIzMCwgMjI4LCA3NCwgMjQsIDEsIDYzLCAyNCwgMSwgMTczLCAyNCwgMSwgNjgsIDI0LCAxLCAyMjgsIAotICAgIDIwOSwgMjQsIDEsIDI0MSwgMTYxLCAyNCwgMSwgMjE2LCAxMzUsIDI0LCAxLCAyMTAsIDEsIDI0LCAxLCA3OCwgMjQsIDEsIAotICAgIDIyMCwgMjQ4LCAyNCwgMSwgNzUsIDI0LCAxLCAyMjgsIDExMywgMjQsIDEsIDE4NSwgMjQsIDEsIDIxNiwgMywgMjQsIDEsIAotICAgIDIxNiwgNTAsIDI0LCAxLCAyMjcsIDIyNSwgMjQsIDEsIDIyNSwgNywgMjQsIDEsIDIxMCwgMTgsIDI0LCAxLCAyMjMsIDIzLCAKLSAgICAyNCwgMSwgMjIyLCA0NiwgMjQsIDEsIDIyNiwgMTg1LCAyNCwgMSwgMjEwLCAxNzksIDI0LCAxLCAyMjMsIDI0NiwgMjQsIDEsIAotICAgIDIxMywgNiwgMjQsIDEsIDIxMiwgMTYyLCAyNCwgMSwgMjEzLCAxNiwgMjQsIDEsIDIxMywgMTEzLCAyNCwgMSwgMjI4LCAKLSAgICAxMzcsIDI0LCAxLCAyMjksIDE3MCwgMjQsIDEsIDIyMSwgNTUsIDI0LCAxLCAyMjEsIDg0LCAyNCwgMSwgMjIyLCAxNywgMjQsIAotICAgIDEsIDIwMiwgMjI5LCAyNCwgMSwgMjEyLCAxOTksIDI0LCAxLCAyMDIsIDE4NywgMjQsIDEsIDE5OCwgMjQsIDEsIDIyMSwgCi0gICAgMTE4LCAyNCwgMSwgMjI5LCAxNTYsIDI0LCAxLCAyMTgsIDIxMiwgMjQsIDEsIDIyMiwgMzksIDI0LCAxLCAyMjEsIDk5LCAKLSAgICAyNCwgMSwgMjE3LCAxODMsIDI0LCAxLCAyMDMsIDIxNCwgMjQsIDEsIDIxOSwgMjMsIDI0LCAxLCAyNDAsIDUzLCAyNCwgMSwgCi0gICAgMjE1LCAxNDUsIDI0LCAxLCAyMjYsIDIzOSwgMjQsIDEsIDIyNCwgMTU1LCAyNCwgMSwgMjIyLCAxMDAsIDI0LCAxLCAyMTYsIAotICAgIDc1LCAyNCwgMSwgMjE2LCAyMDIsIDI0LCAxLCAyMjksIDE4MCwgMjQsIDEsIDIyMiwgMTMxLCAyNCwgMSwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMjIsIDIwMywgMjQsIDEsIDIxMiwgMjQyLCAyNCwgMSwgMjE3LCAxODgsIDI0LCAxLCAyMzksIDEwOCwgMjQsIAotICAgIDEsIDIzOSwgMTc5LCAyNCwgMSwgMjA0LCAxMTEsIDI0LCAxLCAyMDEsIDIwMSwgMjQsIDEsIDIyNywgMTQ4LCAyNCwgMSwgCi0gICAgMjE4LCAxNjcsIDI0LCAxLCAyMjcsIDEwLCAyNCwgMSwgMjI5LCAyNiwgMjQsIDEsIDIyNSwgNDQsIDI0LCAxLCAyMTYsIAotICAgIDEwNywgMjQsIDEsIDIyNCwgMjQwLCAyNCwgMSwgMTkyLCAyNCwgMSwgMjA5LCAyLCAyNCwgMSwgMjI5LCAxMDAsIDI0LCAxLCAKLSAgICAyMjQsIDgyLCAyNCwgMSwgMjI1LCA1MiwgMjQsIDEsIDIwOSwgMTMyLCAyNCwgMSwgMjI4LCAyNDQsIDI0LCAxLCAyMDksIAotICAgIDE1MiwgMjQsIDEsIDIyMSwgODYsIDI0LCAxLCAyMTQsIDI1MSwgMjQsIDEsIDI0MCwgMTA0LCAyNCwgMSwgMjI4LCAyNDYsIAotICAgIDI0LCAxLCAyMjksIDIxLCAyNCwgMzksIDEzMSwgMjI4LCAyNTUsIDI0LCAzOSwgMTMxLCAyMDcsIDE5NCwgMjQsIDIyMiwgCi0gICAgNDUsIDI0LCAyMzksIDEwMiwgMjExLCA2MSwgMjQsIDI0NSwgMjQyLCAyNCwgMjQ1LCAyMzMsIDI0LCAyMTMsIDE0MywgMjQsIAotICAgIDIxNywgNDcsIDgyLCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTgsIDExOSwgNjUsIDEsIDI0NiwgMTI4LCAKLSAgICAxNDMsIDIwMywgNzcsIDIxOCwgMTE5LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCAxLCAyMTMsIDY1LCA2NSwgMSwgCi0gICAgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjEzLCA2NSwgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgMSwgMjE3LCA2NSwgCi0gICAgNjUsIDEsIDI0NiwgMTI4LCAxNDMsIDIwMywgNzcsIDIxNywgNjUsIDY1LCAxLCAyNDYsIDEyOCwgMTQzLCAyMDMsIDEsIAotICAgIDIxNSwgMTQ1LCA2NSwgMSwgMjQ2LCAxMjgsIDE0MywgMjAzLCA3NywgMjE1LCAxNDUsIDY1LCAxLCAyNDAsIDE5OCwgMjQyLCAKLSAgICA4MywgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIDE0MywgMTQyLCA2NSwgMSwgMjI0LCAxNTAsIDI0MiwgODMsIAotICAgIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyNDIsIDgzLCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAxNDMsIAotICAgIDE0MiwgNjUsIDEsIDI0MCwgMTk4LCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAxMzgsIDI0MiwgODMsIAotICAgIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDIyNCwgMTUwLCAyNDIsIDgzLCAyMjcsIDIxNCwgMTQzLCAxNDIsIDY1LCAxLCAKLSAgICAxMjQsIDI0MiwgODMsIDIyNywgMjE0LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDIsIDgzLCAyMjcsIDIxNCwgCi0gICAgMTQzLCAxNDIsIDY1LCAxLCAyNDAsIDE5OCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTM4LCAyMjcsIDIxNCwgMTQzLCAKLSAgICAxNDIsIDY1LCAxLCAyMjQsIDE1MCwgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgMTI0LCAyMjcsIDIxNCwgMTQzLCAxNDIsIAotICAgIDY1LCAxLCAyNDAsIDE5NywgMjI3LCAyMTQsIDE0MywgMTQyLCA2NSwgMSwgNzAsIDgwLCAxNDIsIDY1LCAxLCA3MCwgMjEyLCAKLSAgICA1NywgNjUsIDEsIDcwLCAyMzYsIDEwNiwgMTQyLCA2NSwgMSwgMjI2LCAyNTEsIDUwLCAyNDUsIDE2NiwgMjUwLCAyMTcsIAotICAgIDY1LCAxLCAyMTYsIDE4OCwgMTEyLCA0NywgNjUsIDEsIDIxNiwgMTg4LCAxMjEsIDQ3LCA2NSwgMSwgMjE2LCAxODgsIDI0MCwgCi0gICAgMjEyLCA4MiwgNjUsIDEsIDIxNiwgMTg4LCAyMzAsIDIzOSwgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMTI0LCAyMzAsIDIzOSwgCi0gICAgMjQwLCAyMTIsIDgyLCA2NSwgMSwgMjExLCA0MiwgMjUsIDEzOCwgMjA4LCAxNjEsIDY1LCAxLCAyMTEsIDQyLCAyNSwgMTI0LCAKLSAgICAyMDgsIDE2MSwgOCwgNiwgMSwgMjQxLCAxNDksIDI1MSwgMzAsIDgsIDUsIDEsIDI0MSwgMTQ5LCAyNTEsIDMwLCA4LCA2LCAKLSAgICAxLCAyNDEsIDE0OSwgMjUxLCA1OSwgOCwgNSwgMSwgMjQxLCAxNDksIDI1MSwgNTksIDgsIDYsIDEsIDIzNywgMzEsIDgsIDUsIAotICAgIDEsIDIzNywgMzEsIDgsIDYsIDEsIDIwNywgMTA3LCA4LCA1LCAxLCAyMDcsIDEwNywgOCwgNiwgMSwgMjA4LCA4OSwgOCwgNSwgCi0gICAgMSwgMjA4LCA4OSwgOCwgNiwgMSwgMjQ1LCAxMDcsIDgsIDUsIDEsIDI0NSwgMTA3LCA4LCA2LCAxLCAyNDUsIDEwOCwgMywgCi0gICAgMjQ1LCAyMzMsIDgsIDUsIDEsIDI0NSwgMTA4LCAzLCAyNDUsIDIzMywgOCwgMSwgNSwgNiwgMjQwLCAxNzQsIDgsIDEsIDUsIAotICAgIDYsIDE5NCwgOCwgNiwgMSwgMjUyLCAyNSwgOCwgNSwgMSwgMjUyLCAyNSwgOCwgNiwgMSwgMjUwLCAxNzgsIDgsIDUsIDEsIAotICAgIDI1MCwgMTc4LCA4LCA2LCAxLCAyNTAsIDM0LCA4LCA1LCAxLCAyNTAsIDM0LCA4LCA2LCAxLCAyNTAsIDE4LCA4LCA1LCAxLCAKLSAgICAyNTAsIDE4LCA4LCA2LCAxLCAyNTAsIDE5LCAzLCAyMzYsIDEwNiwgMTQyLCA4LCA1LCAxLCAyNTAsIDE5LCAzLCAyMzYsIAotICAgIDEwNiwgMTQyLCA4LCA2LCAxLCAyNTAsIDgsIDgsIDUsIDEsIDI1MCwgOCwgOCwgNiwgMSwgMjE2LCA3MywgMjQ3LCAxMjYsIAotICAgIDMsIDI0MywgODUsIDgsIDUsIDEsIDIxNiwgNzMsIDI0NywgMTI2LCAzLCAyNDMsIDg1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAKLSAgICA5NSwgOCwgNSwgMSwgMjMwLCA1NSwgMywgOTUsIDgsIDYsIDEsIDIzMCwgNTUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCAKLSAgICA4LCA1LCAxLCAyMzAsIDU1LCAzLCAyMTEsIDMyLCAyNSwgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyNDcsIDIwMywgMTU5LCAKLSAgICA4LCA1LCAxLCAyNDcsIDIwMywgMTU5LCA4LCA2LCAxLCAyMjgsIDEzMSwgMywgMTM4LCA5NSwgOCwgNSwgMSwgMjI4LCAxMzEsIAotICAgIDMsIDEzOCwgOTUsIDgsIDYsIDEsIDE1OCwgMywgMTYzLCAyMTEsIDMyLCAyMTksIDE5OSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICAxNjMsIDIxMSwgMzIsIDIxOSwgMTk5LCA4LCA2LCAxLCAxNTgsIDMsIDIyNywgMTQsIDgsIDUsIDEsIDE1OCwgMywgMjI3LCAKLSAgICAxNCwgOCwgNiwgMSwgMjIwLCAxOCwgOCwgNSwgMSwgMjIwLCAxOCwgOCwgNiwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMzIsIAotICAgIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAKLSAgICAxLCAyMTksIDE4NSwgMywgMjM5LCAxOTksIDgsIDUsIDEsIDIxOSwgMTg1LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjE5LCAKLSAgICAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgNSwgMSwgMjE5LCAxODUsIDMsIDIxMSwgMTcwLCAyMDksIDI0OCwgOCwgCi0gICAgNiwgMSwgMjE3LCAxMzUsIDMsIDIxMSwgMzIsIDIwOSwgMjUsIDI0NCwgMjAsIDgsIDUsIDEsIDIxNywgMTM1LCAzLCAyMTEsIAotICAgIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMTcsIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA1LCAxLCAyMTcsIAotICAgIDEzNSwgMywgMjQzLCAyMjgsIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDIxNSwgMTkyLCA4LCA1LCAxLCAyMTcsIDEsIDIxNSwgCi0gICAgMTkyLCA4LCA2LCAxLCAyMTUsIDEzMiwgMjE1LCAxOTIsIDgsIDUsIDEsIDIxNSwgMTMyLCAyMTUsIDE5MiwgOCwgNiwgMSwgCi0gICAgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNSwgMSwgMjA2LCAxNjUsIDMsIDI0MywgMjI4LCA5NSwgOCwgNiwgMSwgCi0gICAgMjA0LCAxNTIsIDgsIDUsIDEsIDIwNCwgMTUyLCA4LCA2LCAxLCAyMDUsIDE5NywgMjAyLCAxNTksIDgsIDUsIDEsIDIwNSwgCi0gICAgMTk3LCAyMDIsIDE1OSwgOCwgNiwgMSwgMjA5LCA0MSwgMywgOTUsIDgsIDUsIDEsIDIwOSwgNDEsIDMsIDk1LCA4LCA2LCAxLCAKLSAgICAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIDI1LCAyNDQsIDIwLCA4LCA1LCAxLCAyMDksIDQxLCAzLCAyMTEsIDMyLCAyMDksIAotICAgIDI1LCAyNDQsIDIwLCA4LCA2LCAxLCAyMDYsIDQ1LCA4LCA1LCAxLCAyMDYsIDQ1LCA4LCA2LCAxLCAyNDAsIDI1MCwgOCwgNSwgCi0gICAgMSwgMjQwLCAyNTAsIDgsIDYsIDEsIDIzMCwgMjE1LCA4LCA1LCAxLCAyMzAsIDIxNSwgOCwgNiwgMSwgMjQ1LCAyMTgsIDgsIAotICAgIDUsIDEsIDI0NSwgMjE4LCA2NSwgMSwgMjA2LCAxOTMsIDgsIDUsIDEsIDI0MiwgMzIsIDgsIDUsIDEsIDIyNiwgMjIyLCA4LCAKLSAgICA1LCAxLCAyMjMsIDIyMCwgOCwgNSwgMSwgMjIxLCA0NywgOCwgNSwgMSwgMjE1LCAxMzEsIDgsIDEsIDUsIDYsIDIxNSwgCi0gICAgMTMxLCA4LCA1LCAxLCAyMDcsIDE5MSwgOCwgNSwgMSwgMjA3LCA2LCA4LCA2LCAxLCAyMzEsIDQsIDI0NSwgNTEsIDgsIDUsIAotICAgIDEsIDIzMSwgNCwgMjQ1LCA1MSwgOCwgNiwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgOCwgNSwgMSwgMjMxLCA0LCAyNDAsIDE3NCwgCi0gICAgOCwgNiwgMSwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA1LCAxLCAKLSAgICAyMDcsIDE3NCwgMjMxLCA0LCAyMzksIDc1LCA4LCA2LCAxLCAyMDcsIDE3NCwgMTU5LCA4LCA1LCAxLCAyMDcsIDE3NCwgCi0gICAgMTU5LCA4LCA2LCAxLCAyMzEsIDQsIDE0NiwgOCwgNSwgMSwgMjMxLCA0LCAxNDYsIDgsIDYsIDEsIDIzMSwgNCwgMTk0LCA4LCAKLSAgICA1LCAxLCAyMzEsIDQsIDE5NCwgOCwgNiwgMSwgMjMxLCA0LCAyMTAsIDY5LCA4LCA1LCAxLCAyMzEsIDQsIDIxMCwgNjksIAotICAgIDY1LCAxLCAxMjQsIDI0NiwgNTMsIDI1MSwgMTM4LCA2NSwgMSwgMjQ1LCAyNDIsIDY1LCAxLCAyMTIsIDIyOCwgMjQxLCAzNSwgCi0gICAgNTQsIDgsIDYsIDEsIDIxNCwgMjU1LCA4LCA1LCAxLCAyMTQsIDI1NSwgOCwgNiwgMSwgMjA3LCAxNzQsIDIzNywgMTcxLCA4LCAKLSAgICA1LCAxLCAyMjgsIDEzMSwgMywgMjE2LCA3OSwgMjM2LCAxMTYsIDI1LCAyNDgsIDEyNCwgOCwgMSwgMjEyLCAxMTQsIDI0MywgCi0gICAgODUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyNDQsIDIwLCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ0LCAyMCwgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIDE0MiwgOCwgNSwgMSwgMjQ3LCAxMjYsIDMsIAotICAgIDIxOSwgMTQyLCAxMTMsIDgsIDUsIDEsIDIzNywgMTcyLCAzLCAyMTksIDE0MiwgMTEzLCA4LCA2LCAxLCA2NiwgMywgMjM5LCAKLSAgICAxOTksIDgsIDUsIDEsIDY2LCAzLCAyMzksIDE5OSwgOCwgNiwgMSwgMjQwLCAxNzUsIDMsIDk1LCA4LCA1LCAxLCAyNDAsIAotICAgIDE3NSwgMywgOTUsIDgsIDYsIDEsIDIwNSwgMTgyLCAyNTEsIDEwOSwgOCwgNSwgMSwgMjA1LCAxODIsIDI1MSwgMTA5LCA4LCAKLSAgICA2LCAxLCAyMDUsIDE4MiwgMjIwLCA3MywgOCwgNSwgMSwgMjA1LCAxODIsIDIyMCwgNzMsIDgsIDYsIDEsIDIwNSwgMTgyLCAKLSAgICAyMDcsIDI0LCA4LCA1LCAxLCAyMDUsIDE4MiwgMjA3LCAyNCwgOCwgNiwgMSwgMjM5LCA3NiwgMywgMjIwLCA4OSwgOTUsIDgsIAotICAgIDUsIDEsIDIzOSwgNzYsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMzAsIDU1LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgCi0gICAgMjMwLCA1NSwgMywgMjIwLCA4OSwgOTUsIDgsIDYsIDEsIDIyMywgMTY0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjIzLCAKLSAgICAxNjQsIDMsIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTcsIDEsIDMsIDIyMCwgODksIDk1LCA4LCA1LCAxLCAyMTcsIDEsIDMsIAotICAgIDIyMCwgODksIDk1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCAyMjAsIDg5LCA5NSwgOCwgNSwgMSwgMjE1LCA5NCwgMywgMjIwLCAKLSAgICA4OSwgOTUsIDgsIDYsIDEsIDIzNywgMTcyLCAzLCAxMTMsIDgsIDYsIDEsIDIxNiwgNzMsIDE3MSwgNzQsIDgsIDYsIDEsIAotICAgIDEzMiwgMjM5LCA3NSwgOCwgNiwgMSwgMjI4LCAxMzEsIDMsIDI0OCwgMTI0LCA4LCA2LCAxLCAyMDcsIDE3NCwgMjMwLCA1NCwgCi0gICAgOCwgNiwgMSwgMjA3LCAxNzQsIDIxMCwgNjksIDgsIDYsIDEsIDIzMCwgMTg1LCAzLCAyNDUsIDEyNiwgOCwgNiwgMSwgMjQ2LCAKLSAgICAxNDIsIDgsIDYsIDEsIDI0OCwgMTA2LCA4LCA1LCAxLCAyNDgsIDEwNiwgOCwgNiwgMSwgMjIwLCAzNiwgOCwgNSwgMSwgCi0gICAgMjIwLCAzNiwgOCwgMjQxLCA0MCwgMSwgMjEyLCAxNTQsIDc1LCA2NSwgMSwgNiwgMjM3LCAxNzIsIDMsIDk1LCA2NSwgMSwgCi0gICAgNSwgMzIsIDIyMCwgNzMsIDgsIDEsIDUsIDYsIDIwNywgMTc0LCAyMjYsIDE4NSwgOCwgMjQxLCA0MCwgMSwgMjE2LCA3MywgCi0gICAgMjQwLCAxNzQsIDgsIDI0MSwgNDAsIDEsIDIxNiwgNzMsIDIxOSwgMTg0LCA4LCAyNDEsIDQwLCAxLCAyMzAsIDIzOSwgMjI2LCAKLSAgICAxODUsIDgsIDI0MSwgNDAsIDEsIDIzNSwgMjA2LCAyMjcsIDIwLCA4LCAyNDEsIDQwLCAxLCAyNTAsIDEyNiwgMjI2LCAxODUsIAotICAgIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCA2MywgMjEwLCAxNDksIDIyMywgOTQsIDEsIDc1LCAyMTAsIDE0OSwgMjIzLCA5NCwgMiwgCi0gICAgMjQyLCAxMSwgMjEwLCAxNDksIDIyMywgOTQsIDEsIDY4LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgNzQsIDIxMCwgMTQ5LCAKLSAgICAyMjMsIDk0LCAxLCA3OCwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDIzNywgODUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjksIAotICAgIDI2LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjI5LCAxMTUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMzgsIDM5LCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMSwgMjM4LCA5MSwgMjEwLCAxNDksIDIyMywgOTQsIDIsIDI1MCwgMTgwLCAyMTAsIDE0OSwgMjIzLCAKLSAgICA5NCwgMSwgMjQ1LCAyNTQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDYsIDExNiwgMjEwLCAxNDksIDIyMywgOTQsIDEsIAotICAgIDIzMCwgMTAxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjMwLCAxNDMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMDcsIDIxOCwgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIwNywgMjI0LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ0LCA5MCwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDI0NCwgOTksIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAxMzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAKLSAgICAyMDksIDQ3LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQzLCAxMTMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyNDMsIDIzNywgCi0gICAgMjEwLCAxNDksIDIyMywgOTQsIDEsIDIyMSwgMTkxLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE4LCA2OSwgMjEwLCAxNDksIAotICAgIDIyMywgOTQsIDEsIDIxOCwgMTgwLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjQ4LCAyMywgMjEwLCAxNDksIDIyMywgOTQsIAotICAgIDEsIDI0OCwgOTAsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjQsIDgyLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAKLSAgICAyMjcsIDIxMCwgMTQ5LCAyMjMsIDk0LCAxLCAyMjcsIDQ5LCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjE1LCAxNzEsIDIxMCwgCi0gICAgMTQ5LCAyMjMsIDk0LCAxLCAyMTIsIDEzLCAyMTAsIDE0OSwgMjIzLCA5NCwgMSwgMjM2LCAxMzYsIDIxMCwgMTQ5LCAyMjMsIAotICAgIDk0LCAyMiwgMiwgNjMsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzUsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgCi0gICAgNjgsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgNzQsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMiwgMiwgMjIwLCAxOCwgMjEwLCAKLSAgICAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgOTIsIDIxMCwgMTQ5LCAyMjMsIDk0LCAyMTgsIDY0LCAyMjUsIDkxLCAyMTAsIAotICAgIDE0OSwgMjIzLCA5NCwgMjE4LCA2NCwgMjI1LCA5MCwgMjEwLCAxNDksIDIyMywgOTQsIDIxOCwgNjQsIDIyNSwgODksIDE1MywgCi0gICAgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjE3LCA1NSwgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTE4LCAyMzcsIDEzNywgCi0gICAgMTUzLCAyMzEsIDMzLCAyMzksIDEzOCwgMTI2LCAyMTcsIDUzLCAxNTMsIDIzMSwgMzMsIDIzOSwgMTM4LCAxMTgsIDIxMiwgCi0gICAgODAsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDExOCwgMjQxLCAxMzgsIDE1MywgMjMxLCAzMywgMjM5LCAxMzgsIDEyNiwgCi0gICAgMjEyLCA3OSwgMTUzLCAyMzEsIDMzLCAyMTcsIDU2LCA4MiwgMTUzLCAyMzEsIDMzLCAyMTgsIDk2LCA4MiwgMTUzLCAyMzEsIAotICAgIDMzLCAyMTUsIDEyMCwgODIsIDE1MywgMjMxLCAzMywgMjE3LCA1NywgODIsIDIxOCwgMjA0LCAxLCAxNzMsIDIxOCwgMjA0LCAKLSAgICAxLCAyMjksIDE0NCwgMjE4LCAyMDQsIDEsIDIzOSwgOCwgMjE4LCAyMDQsIDEsIDIyMiwgMjAzLCAyMTgsIDIwNCwgMSwgCi0gICAgMjQ3LCA5MiwgMjE4LCAyMDQsIDEsIDI0NiwgMTk5LCAyMTgsIDIwNCwgMSwgMjMwLCAxODEsIDIxOCwgMjA0LCAxLCAyMjEsIAotICAgIDExLCAyMTgsIDIwNCwgMSwgMjEwLCAyMiwgMjE4LCAyMDQsIDEsIDIwOSwgMTA4LCAyMTgsIDIwNCwgMSwgMjQ0LCAyMTIsIAotICAgIDIxOCwgMjA0LCAxLCAyMDEsIDIwMSwgMjE4LCAyMDQsIDEsIDE4NSwgMjE4LCAyMDQsIDEsIDIxOCwgMjA4LCAyMTgsIDIwNCwgCi0gICAgMSwgMjQ5LCAzMiwgMjE4LCAyMDQsIDEsIDE5MiwgMjE4LCAyMDQsIDEsIDIwOCwgMjAsIDIxOCwgMjA0LCAxLCAyMDgsIDEwLCAKLSAgICAyMTgsIDIwNCwgMSwgMjQxLCAyNTUsIDIxOCwgMjA0LCAxLCAyMDQsIDExMSwgMjE4LCAyMDQsIDEsIDIwMiwgODAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDIsIDExNiwgMjE4LCAyMDQsIDEsIDUsIDYzLCAyMTgsIDIwNCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgMjE2LCAKLSAgICAyMjAsIDIxOCwgMjA0LCAxLCAyMjgsIDExMywgMjE4LCAyMDQsIDEsIDIxMywgOTAsIDIxOCwgMjA0LCAxLCAyMTUsIDM2LCAKLSAgICAyMTgsIDIwNCwgMSwgMTUyLCAyMTgsIDIwNCwgMSwgNjMsIDIxOCwgMjA0LCAxLCA3NSwgMjE4LCAyMDQsIDEsIDY4LCAyMTgsIAotICAgIDIwNCwgMSwgNzQsIDIxOCwgMjA0LCAxLCA3OCwgMjE4LCAyMDQsIDEsIDIxNywgMTI2LCAyMTgsIDIwNCwgMSwgMjAzLCAKLSAgICAxODIsIDIxOCwgMjA0LCAxLCAyNDAsIDEwOCwgMjE4LCAyMDQsIDEsIDIzOCwgMTU1LCAyMTgsIDIwNCwgMSwgMjQxLCAxNjEsIAotICAgIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMjA0LCAxMTEsIDIxOCwgMjA0LCAyMTAsIDI1NCwgMSwgMTk4LCAyMTgsIDIwNCwgMSwgCi0gICAgMjA3LCAyNDEsIDIxOCwgMjA0LCAxLCAyMDcsIDIyOSwgMjE4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMTgsIDIwNCwgMSwgMjIxLCAKLSAgICAyMjcsIDIxOCwgMjA0LCAxLCAyNTAsIDI1NSwgMTk4LCAyMTgsIDIwNCwgMSwgMjA1LCAxODUsIDIxMywgOTAsIDIxOCwgCi0gICAgMjA0LCAxLCAyMDUsIDE4NiwgMTUyLCAyMTgsIDIwNCwgMSwgMjUwLCA2NiwgMjQwLCAxMDgsIDIxOCwgMjA0LCAyMTAsIAotICAgIDI1NCwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAyMTAsIDIwMSwgMSwgMjE2LCAyMjAsIDIxOCwgMjA0LCAxLCAyNDcsIDUyLCAKLSAgICAyMTgsIDIwNCwgMjEyLCAxMjAsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgNTIsIDIzNywgNjUsIDgyLCAyMTgsIDIwNCwgCi0gICAgMTMxLCAyMTMsIDgyLCAyMTgsIDIwNCwgMTMxLCA1MiwgMjEzLCA4MiwgMjE0LCAyMTUsIDIsIDI1MCwgMTgwLCAyMTQsIAotICAgIDIxNSwgMiwgMjA1LCAxOTksIDIxNCwgMjE1LCAxLCA2MywgMjE0LCAyMTUsIDEsIDI1MiwgMjUsIDIxNCwgMjE1LCAxLCA3NSwgCi0gICAgMjE0LCAyMTUsIDEsIDIzMSwgODMsIDIxNCwgMjE1LCAxLCA2OCwgMjE0LCAyMTUsIDEsIDIwNiwgMTc4LCAyMTQsIDIxNSwgCi0gICAgMSwgMTI1LCAxNDYsIDIxNCwgMjE1LCAxLCAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMSwgMTI1LCAxNTksIDIxNCwgMjE1LCAKLSAgICAxLCAxMjUsIDIyNywgNzgsIDIxNCwgMjE1LCAxLCA3NCwgMjE0LCAyMTUsIDEsIDI0MSwgMTYxLCAyMTQsIDIxNSwgMSwgCi0gICAgMjUxLCA2NCwgMjE0LCAyMTUsIDEsIDc4LCAyMTQsIDIxNSwgMSwgMjIwLCAxOCwgMjE0LCAyMTUsIDEsIDI1MCwgMzQsIAotICAgIDIxNCwgMjE1LCAxLCAxNzMsIDIxNCwgMjE1LCAxLCAyMjksIDE0NCwgMjE0LCAyMTUsIDEsIDIzOSwgOCwgMjE0LCAyMTUsIAotICAgIDEsIDIzOCwgMTE5LCAyMTQsIDIxNSwgMSwgMjIyLCAyMDMsIDIxNCwgMjE1LCAxLCAyNDcsIDkyLCAyMTQsIDIxNSwgMSwgCi0gICAgMjQ2LCAxOTksIDIxNCwgMjE1LCAxLCAyMzAsIDE4MSwgMjE0LCAyMTUsIDEsIDIzMCwgMTQ5LCAyMTQsIDIxNSwgMSwgMjIxLCAKLSAgICAxMSwgMjE0LCAyMTUsIDEsIDIwNywgMjQxLCAyMTQsIDIxNSwgMSwgMjA3LCAyMjksIDIxNCwgMjE1LCAxLCAyNDQsIDEyMCwgCi0gICAgMjE0LCAyMTUsIDEsIDI0NCwgMTA0LCAyMTQsIDIxNSwgMSwgMjIxLCAyMjcsIDIxNCwgMjE1LCAxLCAyMTAsIDIyLCAyMTQsIAotICAgIDIxNSwgMSwgMjA5LCAxMDgsIDIxNCwgMjE1LCAxLCAyNDQsIDIxMiwgMjE0LCAyMTUsIDEsIDI0NCwgMSwgMjE0LCAyMTUsIAotICAgIDEsIDIwMSwgMjAxLCAyMTQsIDIxNSwgMSwgMTg1LCAyMTQsIDIxNSwgMSwgMjE4LCAyMDgsIDIxNCwgMjE1LCAxLCAyNDksIAotICAgIDMyLCAyMTQsIDIxNSwgMSwgMjQ4LCA5OCwgMjE0LCAyMTUsIDEsIDE5MiwgMjE0LCAyMTUsIDEsIDE5OCwgMjE0LCAyMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMTQsIDIxNSwgMSwgMjI4LCAxMTMsIDIxNCwgMjE1LCAxLCAyMDYsIDg2LCAyMTQsIDIxNSwgMSwgCi0gICAgMjEzLCA5MCwgMjE0LCAyMTUsIDEsIDIxMSwgMTY0LCAyMTQsIDIxNSwgMSwgMjE1LCAzNiwgMjE0LCAyMTUsIDEsIDE1MiwgCi0gICAgMjE0LCAyMTUsIDEsIDIyNywgNzcsIDIxNCwgMjE1LCAxMDksIDIsIDIzNywgMTU1LCAyMTQsIDIxNSwgMjIsIDIsIDI1MiwgCi0gICAgMjUsIDIxNCwgMjE1LCAyMiwgMiwgNzUsIDIxNCwgMjE1LCAyMiwgMiwgMjMxLCA4MywgMjE0LCAyMTUsIDIyLCAyLCA2OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCAyMDYsIDE3OCwgMjE0LCAyMTUsIDIyLCAyLCAxMjUsIDE0NiwgMjE0LCAyMTUsIDIyLCAyLCAKLSAgICAxMjUsIDIxNSwgMTg2LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMTU5LCAyMTQsIDIxNSwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgCi0gICAgMjE0LCAyMTUsIDIyLCAyLCA3NCwgMjE0LCAyMTUsIDIyLCAyLCAyNDEsIDE2MSwgMjE0LCAyMTUsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAyMTQsIDIxNSwgMjIsIDIsIDc4LCAyMTQsIDIxNSwgMjIsIDIsIDIyMCwgMTgsIDIxNCwgMjE1LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjE0LCAyMTUsIDIsIDIwNSwgMjA0LCAyMTQsIDIxNSwgMjQ0LCAxNjYsIDIxNCwgMjE1LCA1MiwgMjQ0LCAxNjYsIDIxNCwgCi0gICAgMjE1LCAxNywgMjAyLCA4NCwgMjE0LCAyMTUsIDE3LCAxMDUsIDIxNCwgMjE1LCAxNywgMTA4LCAyMTQsIDIxNSwgMTcsIAotICAgIDE0NywgMjE0LCAyMTUsIDE3LCAxNDksIDIxNCwgMjE1LCAxNywgMTcwLCAyMTQsIDIxNSwgMTcsIDE5NSwgMjE0LCAyMTUsIAotICAgIDE3LCAyMTMsIDExMSwgMjE0LCAyMTUsIDE3LCAxOTksIDIxNCwgMjE1LCAxNywgMjIyLCA2MywgMzksIDkyLCAxNywgMjAyLCAKLSAgICA4NCwgMzksIDkyLCAxNywgMTA1LCAzOSwgOTIsIDE3LCAxMDgsIDM5LCA5MiwgMTcsIDE0NywgMzksIDkyLCAxNywgMTQ5LCAKLSAgICAzOSwgOTIsIDE3LCAxNzAsIDM5LCA5MiwgMTcsIDE5NSwgMzksIDkyLCAxNywgMjEzLCAxMTEsIDM5LCA5MiwgMTcsIDE5OSwgCi0gICAgMzksIDkyLCAxNywgMjIyLCA2MywgMzksIDkyLCAxLCA2MywgMzksIDkyLCAxLCA2OCwgMzksIDkyLCAxLCAxNzMsIDM5LCAKLSAgICA5MiwgMSwgMjAxLCAyMDEsIDM5LCA5MiwgMSwgMTg1LCAzOSwgOTIsIDEsIDIxNiwgMjIwLCAzOSwgOTIsIDEsIDIwNSwgCi0gICAgMjMwLCAzOSwgOTIsIDIsIDI1MCwgMTcsIDkyLCAyLCAyMTEsIDIyNywgMjQ3LCA1MiwgOTIsIDIsIDI0NywgNTMsIDIwNSwgCi0gICAgMjA0LCA5MiwgMiwgNTIsIDI0NywgNTMsIDIwNSwgMjA0LCA5MiwgMiwgMjQ3LCA1MywgMTA4LCA5MiwgMiwgMjQ3LCA1MywgCi0gICAgMTQ3LCA5MiwgMiwgMjQ3LCA1MywgMjUwLCAxNywgOTIsIDIsIDIxNywgMTYyLCA5MiwgMjM4LCAyMjgsIDI0MCwgNywgOTIsIAotICAgIDI0NywgMzMsIDkyLCAyMzcsIDU4LCA5MiwgMiwgMjEyLCAxNTcsIDkyLCAyMzAsIDE3MywgMjIwLCAzOSwgMjI5LCAyMDcsIAotICAgIDIyNywgMTQ5LCAxNywgMjAyLCA4NCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTA1LCAyMjksIDIwNywgMjI3LCAxNDksIAotICAgIDE3LCAxMDgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE0NywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMTQ5LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDE3LCAxNzAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxNywgMjEzLCAxMTEsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMTcsIDE5OSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNywgMjIyLCAKLSAgICA2MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAxNzMsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjI5LCAxNDQsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjM5LCA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIyMiwgMjAzLCAyMjksIDIwNywgMjI3LCAKLSAgICAxNDksIDEsIDIxNSwgMzYsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjEzLCA5MCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDIsIDExNiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMjEsIDExLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIxMCwgMjIsIAotICAgIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjM2LCAzMCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAyMDEsIDIwMSwgMjI5LCAKLSAgICAyMDcsIDIyNywgMTQ5LCAxLCAxODUsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE4LCAyMDgsIDIyOSwgMjA3LCAyMjcsIAotICAgIDE0OSwgMSwgMTkyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NCwgMjEyLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0OSwgCi0gICAgMzIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMjE2LCAyMjAsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgMTk4LCAyMjksIAotICAgIDIwNywgMjI3LCAxNDksIDEsIDIyOCwgMTEzLCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDIwNCwgMTExLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDEsIDIwOSwgMTA4LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDE1MiwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCAKLSAgICAyMDYsIDg2LCAyMjksIDIwNywgMjI3LCAxNDksIDEsIDI0NywgOTIsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMSwgNjMsIDIyOSwgCi0gICAgMjA3LCAyMjcsIDE0OSwgMSwgMjIwLCA3MywgMjI5LCAyMDcsIDIyNywgMTQ5LCAxLCA3NSwgMjI5LCAyMDcsIDIyNywgMTQ5LCAKLSAgICAxLCAyMjAsIDE4LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCAyMDcsIDI0LCAyMjksIDIwNywgMjI3LCAxNDksIDIyLCA3NCwgCi0gICAgMjI5LCAyMDcsIDIyNywgMTQ5LCAyMiwgNjgsIDIyOSwgMjA3LCAyMjcsIDE0OSwgMjIsIDI0MSwgMTYxLCAyMjksIDIwNywgCi0gICAgMjI3LCAxNDksIDIyLCA3OCwgMjI5LCAyMDcsIDIyNywgMTQ5LCAxNDMsIDIxOCwgODQsIDIyOSwgMjA3LCAyMjcsIDE0OSwgCi0gICAgMTQzLCAyNDcsIDY4LCAyMjksIDIwNywgMjI3LCAxNDksIDE0MywgMjQ3LCA2OSwgMjE4LCA4NCwgMjI5LCAyMDcsIDIyNywgCi0gICAgMTQ5LCAyLCAyNDUsIDcwLCAyMjksIDIwNywgMjI3LCAxNDksIDIsIDIxMiwgMTcwLCAyMTYsIDExOSwgMSwgMTczLCAyMTYsIAotICAgIDExOSwgMSwgMjM5LCA4LCAyMTYsIDExOSwgMSwgMjIyLCAyMDMsIDIxNiwgMTE5LCAxLCAyMTAsIDIyLCAyMTYsIDExOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIxNiwgMTE5LCAxLCAyMDEsIDIwMSwgMjE2LCAxMTksIDEsIDE4NSwgMjE2LCAxMTksIDEsIDI0OSwgMzIsIAotICAgIDIxNiwgMTE5LCAxLCAxOTIsIDIxNiwgMTE5LCAxLCAyNDcsIDkyLCAyMTYsIDExOSwgMSwgMjMwLCAxODEsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjEsIDExLCAyMTYsIDExOSwgMSwgMjE1LCAzNiwgMjE2LCAxMTksIDEsIDIxNiwgMjIwLCAyMTYsIDExOSwgMSwgCi0gICAgMjI4LCAxMTMsIDIxNiwgMTE5LCAxLCAxOTgsIDIxNiwgMTE5LCAxLCAyMDQsIDExMSwgMjE2LCAxMTksIDEsIDE1MiwgMjE2LCAKLSAgICAxMTksIDEsIDIyNSwgNTQsIDIxNiwgMTE5LCAxLCAyMjIsIDE4MiwgMjE2LCAxMTksIDEsIDIyMywgMjUsIDIxNiwgMTE5LCAKLSAgICAxLCAyMjAsIDIzNCwgMjE2LCAxMTksIDEsIDYzLCAyMTYsIDExOSwgMjIsIDIsIDc1LCAyMTYsIDExOSwgMjIsIDIsIDY4LCAKLSAgICAyMTYsIDExOSwgMjIsIDIsIDc0LCAyMTYsIDExOSwgMjIsIDIsIDI1MSwgNjQsIDIxNiwgMTE5LCAyMiwgMiwgNzgsIDIxNiwgCi0gICAgMTE5LCAyMiwgMiwgMjUwLCAzNCwgMjE2LCAxMTksIDIyLCAyLCAyNDAsIDIzOCwgMjE2LCAxMTksIDIyLCAyLCAyNDEsIAotICAgIDE4OSwgMjE2LCAxMTksIDEwOSwgMiwgMjIyLCAyMDUsIDIxNiwgMTE5LCAxMDksIDIsIDIyMywgMTYzLCAyMTYsIDExOSwgCi0gICAgMTA5LCAyLCAxNDYsIDIxNiwgMTE5LCAxMDksIDIsIDIzNywgMTcxLCAyMTYsIDExOSwgMjA1LCAyMDQsIDIxNiwgMTE5LCAKLSAgICAyMTQsIDE2OCwgODIsIDI4LCAxMjMsIDIwOCwgMjM2LCAyOCwgMTIzLCAyMDgsIDIzNSwgMjgsIDEyMywgMjA4LCAyMzMsIAotICAgIDI4LCAxMjMsIDIwOCwgMjM4LCAyOCwgMTIzLCAyMTYsIDQyLCAyOCwgMTIzLCAyMTYsIDI2LCAyOCwgMTIzLCAyMTYsIDIxLCAKLSAgICAyOCwgMTIzLCAyMTYsIDIzLCAyOCwgMTIzLCAyMTYsIDM5LCAyOCwgMTIzLCAyMTYsIDMyLCAyOCwgMTIzLCAyMTYsIDI1LCAKLSAgICAyOCwgMTIzLCAyMTYsIDQ0LCAyOCwgMTIzLCAyMTYsIDI3LCAyOCwgMTIzLCAyMTYsIDQ2LCAyOCwgMTIzLCAyMTYsIDQzLCAKLSAgICAyOCwgMTIzLCAyMjQsIDEzNywgMjgsIDEyMywgMjI0LCAxMjgsIDI4LCAxMjMsIDIyNCwgMTMxLCAyOCwgMTIzLCAyMTgsIAotICAgIDEzOCwgMjgsIDEyMywgMjE4LCAxNDksIDI4LCAxMjMsIDIxOCwgMTUwLCAyOCwgMTIzLCAyMTEsIDE0OCwgMjgsIDEyMywgCi0gICAgMjMxLCA5NiwgMjgsIDEyMywgMjMxLCAxMDMsIDI4LCAxMjMsIDIxMSwgMTU5LCAyOCwgMTIzLCAyMTEsIDE0NiwgMjgsIAotICAgIDEyMywgMjE4LCAxODksIDI4LCAxMjMsIDIzNiwgMjQ2LCAyOCwgMTIzLCAyMTEsIDE0MywgMTkwLCAyLCAyMTksIDEwMiwgCi0gICAgMTkwLCAyLCAyNDYsIDIzNSwgMTkwLCAyLCAyMjcsIDI0MiwgMTkwLCAyLCAyMDQsIDIwLCAxOTAsIDEsIDYzLCAxOTAsIDEsIAotICAgIDIzNSwgMjA2LCAyMjksIDIxMSwgMTkwLCAxLCA3NSwgMTkwLCAxLCAyMzEsIDgzLCAxOTAsIDEsIDY4LCAxOTAsIDEsIDIxOSwgCi0gICAgMTY5LCAyNDYsIDIwNSwgMTkwLCAxLCAyMjIsIDIwNCwgMjI3LCAyMDEsIDE5MCwgMSwgMjIyLCAyMDQsIDIyNywgMjAyLCAKLSAgICAyMTYsIDE3MywgMTkwLCAxLCA3NCwgMTkwLCAxLCAyNTEsIDY0LCAxOTAsIDEsIDc4LCAxOTAsIDEsIDE3MywgMTkwLCAxLCAKLSAgICAyMzAsIDQ0LCAyMTQsIDIyNywgMTkwLCAxLCAyMzAsIDQ0LCAyMjMsIDIwNSwgMTkwLCAxLCAyMzksIDgsIDE5MCwgMSwgCi0gICAgMjM5LCA5LCAyMjMsIDIwNSwgMTkwLCAxLCAyMjIsIDIwMywgMTkwLCAxLCAyNDcsIDkyLCAxOTAsIDEsIDI0NywgOTMsIAotICAgIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgxLCAxOTAsIDEsIDIyMSwgMTIsIDIyMywgMjA1LCAxOTAsIDEsIDIzMCwgMTgyLCAKLSAgICAyMjUsIDE0NCwgMTkwLCAxLCAyMjEsIDExLCAxOTAsIDEsIDIwNywgMjQxLCAxOTAsIDEsIDIwNywgMjQyLCAyMjUsIDE0NCwgCi0gICAgMTkwLCAxLCAyNDQsIDEyMCwgMTkwLCAxLCAyNDQsIDEyMSwgMjI1LCAxNDQsIDE5MCwgMSwgMjIzLCAxMTEsIDIyMywgMjA1LCAKLSAgICAxOTAsIDEsIDIxMCwgMjIsIDE5MCwgMSwgMjEwLCAyMywgMjIzLCAyMDUsIDE5MCwgMSwgMjQ0LCAyMTIsIDE5MCwgMSwgCi0gICAgMjQ0LCAyMTMsIDIyNSwgMTQ0LCAxOTAsIDEsIDIwMSwgMjAxLCAxOTAsIDEsIDE4NSwgMTkwLCAxLCAyMTksIDE2OSwgMjIzLCAKLSAgICAyMDUsIDE5MCwgMSwgMjQ5LCAzMiwgMTkwLCAxLCAyNDksIDMzLCAyMjMsIDIwNSwgMTkwLCAxLCAxOTIsIDE5MCwgMSwgCi0gICAgMTk4LCAxOTAsIDEsIDIxNiwgMjIwLCAxOTAsIDEsIDIxNiwgMjIxLCAyNTEsIDc0LCAxOTAsIDEsIDIyOCwgMTEzLCAxOTAsIAotICAgIDEsIDIwNCwgMTExLCAxOTAsIDEsIDIxNSwgMzcsIDIyMywgMjA1LCAxOTAsIDEsIDIxNSwgMzcsIDIyNSwgMTQ0LCAxOTAsIAotICAgIDEsIDIxNSwgMzYsIDE5MCwgMSwgMTUyLCAxOTAsIDIsIDI0NiwgMjM2LCAyMDksIDE1NSwgMTkwLCAyMiwgMiwgMjA5LCAKLSAgICAyMTQsIDE5MCwgMjIsIDIsIDIwOCwgMTY2LCAxOTAsIDIyLCAyLCAyMDMsIDIxMSwgMTkwLCAyMiwgMiwgMjAzLCAyMTIsIAotICAgIDIyNCwgMjUxLCAxOTAsIDIyLCAyLCAyMTAsIDIyNCwgMTkwLCAyMiwgMiwgMjEwLCAyMjUsIDIyNCwgMjM5LCAxOTAsIDIyLCAKLSAgICAyLCAyMDksIDIzNSwgMTkwLCAyMiwgMiwgMjQzLCAxNjMsIDIyMywgMjA0LCAxOTAsIDIyLCAyLCAyMTgsIDI0OSwgMTkwLCAKLSAgICAxMDksIDIsIDIyOSwgMTczLCAxOTAsIDEwOSwgMiwgMjE5LCA2LCAxOTAsIDEwOSwgMiwgMjQ3LCA3NywgMTkwLCAyMTksIAotICAgIDExNSwgMTkwLCA0OSwgMjE2LCA5MywgMTkwLCA1MCwgMjE2LCA5MywgMTkwLCAyMTksIDE1OCwgMjUwLCAyMjUsIDE5MCwgCi0gICAgMjE5LCAxNTgsIDIyNSwgMTYyLCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyNiwgMTkwLCAyMTksIDE1OCwgMjA0LCAxNCwgMTkwLCAKLSAgICAyMTksIDE1OCwgMjE5LCAxMTYsIDE5MCwgMjE5LCAxNTgsIDIyNywgMTA2LCAxOTAsIDIxOSwgMTU4LCAyMjYsIDIyMCwgCi0gICAgMTkwLCAyMTksIDE1OCwgMjUxLCAxMTYsIDE5MCwgMjE5LCAxNTgsIDI1MSwgMTE3LCAyNTEsIDExNiwgMTkwLCAyMTksIAotICAgIDE1OCwgMjE4LCAxMDcsIDE5MCwgMjA3LCAxNzQsIDIxOSwgMTU4LCAyMTgsIDEwNywgMTkwLCAyMTksIDExMSwgMTkwLCAxNywgCi0gICAgMjAyLCA4NCwgMTkwLCAxNywgMTA1LCAxOTAsIDE3LCAxMDgsIDE5MCwgMTcsIDE0NywgMTkwLCAxNywgMTQ5LCAxOTAsIDE3LCAKLSAgICAxNzAsIDE5MCwgMTcsIDE5NSwgMTkwLCAxNywgMjEzLCAxMTEsIDE5MCwgMTcsIDE5OSwgMTkwLCAxNywgMjIyLCA2MywgCi0gICAgMTkwLCAyMTksIDE1OCwgMjA4LCAyMDIsIDIwNywgMTg5LCAxOTAsIDIxOSwgMTU4LCAyMzAsIDIxMSwgNjksIDEsIDIxMywgCi0gICAgNjcsIDIzOCwgMTE5LCA2OSwgMSwgMjEzLCA2NywgMjQ2LCAxOTksIDY5LCAxLCAyMTMsIDY3LCAyMzAsIDE0OSwgNjksIDEsIAotICAgIDIxMywgNjcsIDIyMSwgMjI3LCA2OSwgMSwgMjEzLCA2NywgMjQ4LCA5OCwgNjksIDIsIDIxMywgNjcsIDIxNCwgMjEzLCA2OSwgCi0gICAgNjUsIDEsIDIxMywgNjcsIDIxNiwgMTM2LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgMTEsIDY5LCAxLCA0NSwgMjI4LCAKLSAgICA4NSwgMjQwLCAxMDgsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjM5LCA4LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzOCwgMTE5LCAKLSAgICA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTgxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDIzMCwgMTQ5LCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDI0NCwgMTIwLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0NCwgMTA0LCA2OSwgMSwgNDUsIDIyOCwgODUsIDIyMSwgCi0gICAgMjI3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMDIsIDg0LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxMDUsIDY5LCA0NSwgMjI4LCAKLSAgICA4NSwgMTcsIDEwOCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTQ3LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAxNDksIDY5LCA0NSwgCi0gICAgMjI4LCA4NSwgMTcsIDE3MCwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk1LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMTMsIAotICAgIDExMSwgNjksIDQ1LCAyMjgsIDg1LCAxNywgMTk5LCA2OSwgNDUsIDIyOCwgODUsIDE3LCAyMjIsIDYzLCA2OSwgMSwgNDUsIAotICAgIDIyOCwgODUsIDIyNywgNzcsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAyMTIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ0LCAKLSAgICAxLCA2OSwgMSwgNDUsIDIyOCwgODUsIDI0OSwgMzIsIDY5LCAxLCA0NSwgMjI4LCA4NSwgMjQ4LCA5OCwgMjQ2LCAxOTIsIDEsIAotICAgIDYzLCAyNDYsIDE5MiwgMSwgNzUsIDI0NiwgMTkyLCAxLCA2OCwgMjQ2LCAxOTIsIDEsIDc0LCAyNDYsIDE5MiwgMSwgMjUxLCAKLSAgICA2NCwgMjQ2LCAxOTIsIDEsIDc4LCAyNDYsIDE5MiwgMSwgMTczLCAyNDYsIDE5MiwgMSwgMjI5LCAxNDQsIDI0NiwgMTkyLCAKLSAgICAxLCAyMzksIDgsIDI0NiwgMTkyLCAxLCAyMzgsIDExOSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTEyLCAyNDYsIDE5MiwgMSwgCi0gICAgMjIyLCAyMDMsIDI0NiwgMTkyLCAxLCAyNDYsIDE5OSwgMjQ2LCAxOTIsIDEsIDI0NiwgMTQ0LCAyNDYsIDE5MiwgMSwgMjMwLCAKLSAgICAxODEsIDI0NiwgMTkyLCAxLCAyMzAsIDE0OSwgMjQ2LCAxOTIsIDEsIDIyMiwgMTAyLCAyNDYsIDE5MiwgMSwgMjIyLCAxMDQsIAotICAgIDI0NiwgMTkyLCAxLCAyMjIsIDEwMywgMjQ2LCAxOTIsIDEsIDIxMCwgMjIsIDI0NiwgMTkyLCAxLCAyMDksIDEwOCwgMjQ2LCAKLSAgICAxOTIsIDEsIDI0NCwgMjEyLCAyNDYsIDE5MiwgMSwgMjQ0LCAxLCAyNDYsIDE5MiwgMSwgMjIxLCA1MywgMjQ2LCAxOTIsIDEsIAotICAgIDIwMSwgMjAxLCAyNDYsIDE5MiwgMSwgMjQ0LCAxMjAsIDI0NiwgMTkyLCAxLCAxODUsIDI0NiwgMTkyLCAxLCAyMTgsIDEyLCAKLSAgICAyNDYsIDE5MiwgMSwgMjE4LCAyMDgsIDI0NiwgMTkyLCAxLCAyNDksIDMyLCAyNDYsIDE5MiwgMSwgMjQ4LCA5OCwgMjQ2LCAKLSAgICAxOTIsIDEsIDIyMywgMjM4LCAyNDYsIDE5MiwgMSwgMTkyLCAyNDYsIDE5MiwgMSwgMjQ4LCAxOTgsIDI0NiwgMTkyLCAxLCAKLSAgICAxOTgsIDI0NiwgMTkyLCAxLCAyMTYsIDIyMCwgMjQ2LCAxOTIsIDEsIDIyOCwgMTEzLCAyNDYsIDE5MiwgMSwgMjA2LCA4NiwgCi0gICAgMjQ2LCAxOTIsIDEsIDIxMSwgMTY0LCAyNDYsIDE5MiwgMSwgMjE1LCAzNiwgMjQ2LCAxOTIsIDEsIDE1MiwgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCAyNTIsIDI1LCAyNDYsIDE5MiwgMjIsIDIsIDc1LCAyNDYsIDE5MiwgMjIsIDIsIDIzMSwgODMsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjQxLCAxNDUsIDI0NiwgMTkyLCAyMiwgMiwgNjgsIDI0NiwgMTkyLCAyMiwgMiwgMjIwLCA3MywgMjQ2LCAxOTIsIAotICAgIDIyLCAyLCA3OCwgMjQ2LCAxOTIsIDIyLCAyLCAyNTEsIDY0LCAyNDYsIDE5MiwgMjIsIDIsIDI1MCwgMzQsIDI0NiwgMTkyLCAKLSAgICAyMiwgMiwgMjA3LCAyNCwgMjQ2LCAxOTIsIDEwOSwgMiwgMTk4LCAyNDYsIDE5MiwgMTA5LCAyLCAyMTYsIDIyMCwgMjQ2LCAKLSAgICAxOTIsIDEwOSwgMiwgMjI4LCAxMTMsIDI0NiwgMTkyLCAxMDksIDIsIDIwNCwgMTExLCAyNDYsIDE5MiwgMSwgNDYsIDIzMCwgCi0gICAgNTQsIDI0NiwgMTkyLCAxLCA0NiwgMjM5LCA3NSwgMjQ2LCAxOTIsIDEsIDQ2LCAyMjIsIDIwNSwgMjQ2LCAxOTIsIDEwOSwgCi0gICAgMiwgNDYsIDIyMiwgMjA1LCAyNDYsIDE5MiwgMSwgNDYsIDI0NiwgMjAwLCAyNDYsIDE5MiwgMSwgNDYsIDIxMCwgNjksIAotICAgIDI0NiwgMTkyLCAxLCA0NiwgMjIzLCAxNjMsIDI0NiwgMTkyLCAxLCA0NiwgMjE5LCAxODQsIDI0NiwgMTkyLCAxLCA0NiwgCi0gICAgMjAzLCAxMjQsIDI0NiwgMTkyLCAxLCA0NiwgMTQ2LCAyNDYsIDE5MiwgMSwgNDYsIDE1OSwgMjQ2LCAxOTIsIDEsIDQ2LCAKLSAgICAyMTEsIDE2NywgMjQ2LCAxOTIsIDEwOSwgMiwgNDYsIDIyNiwgMTg1LCAyNDYsIDE5MiwgMTA5LCAyLCA0NiwgMjM3LCAxNzEsIAotICAgIDI0NiwgMTkyLCAxNywgMjAyLCA4NCwgMjQ2LCAxOTIsIDE3LCAxMDUsIDI0NiwgMTkyLCAxNywgMTA4LCAyNDYsIDE5MiwgCi0gICAgMTcsIDE0NywgMjQ2LCAxOTIsIDE3LCAxNDksIDI0NiwgMTkyLCAxNywgMTcwLCAyNDYsIDE5MiwgMTcsIDE5NSwgMjQ2LCAKLSAgICAxOTIsIDE3LCAyMTMsIDExMSwgMjQ2LCAxOTIsIDE3LCAxOTksIDI0NiwgMTkyLCAxNywgMjIyLCA2MywgMjQ2LCAxOTIsIAotICAgIDIxNywgMTc5LCAyMTEsIDIwMSwgMjQ2LCAxOTIsIDIxNywgMTc5LCAyNDQsIDE2NiwgMjQ2LCAxOTIsIDIxNywgMTc5LCA1MiwgCi0gICAgMjQ0LCAxNjYsIDI0NiwgMTkyLCAyMTcsIDE3OSwgMjA4LCA3MCwgMjQ0LCAxNjYsIDY5LCAxLCAyMjksIDEzNywgMjM5LCA4LCAKLSAgICA2OSwgMSwgMjI5LCAxMzcsIDI0NywgOTIsIDY5LCAxLCAyMjksIDEzNywgMjQ2LCAxOTksIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjMwLCAxODEsIDY5LCAxLCAyMjksIDEzNywgMjMwLCAxNDksIDY5LCAxLCAyMjksIDEzNywgMjIxLCAxMSwgNjksIDEsIAotICAgIDIyOSwgMTM3LCAyMDcsIDI0MSwgNjksIDEsIDIyOSwgMTM3LCAyMDcsIDIyOSwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEyMCwgCi0gICAgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEwNCwgNjksIDEsIDIyOSwgMTM3LCAyNDQsIDEsIDY5LCAxLCAyMjksIDEzNywgMjAxLCAKLSAgICAyMDEsIDY5LCAxLCAyMjksIDEzNywgMjE1LCAzNiwgNjksIDEsIDIyOSwgMTM3LCAxNTIsIDY5LCAxLCAyMjksIDEzNywgCi0gICAgMjM3LCAxMiwgNjksIDEsIDIyOSwgMTM3LCAyNDAsIDEwOCwgNjksIDY1LCAxLCAyMjksIDEzNywgMjE2LCAxMzYsIDY5LCAxLCAKLSAgICAyMjksIDEzNywgMjAzLCAxODIsIDY5LCAxLCAyMjksIDEzNywgMjAyLCAxMTYsIDY5LCAxLCAyMjksIDEzNywgMjE2LCAyMjAsIAotICAgIDY5LCAyMjcsIDM2LCAyMjksIDEzNywgMjIwLCA5NCwgNjksIDIyNywgMzYsIDIyOSwgMTM3LCAyMTcsIDc4LCA2OSwgMjI3LCAKLSAgICAzNiwgMjI5LCAxMzcsIDIzNiwgMTkxLCA2OSwgMTYsIDI1MSwgNTEsIDI0MCwgMjExLCA2OSwgMTYsIDI1MSwgNTEsIDEwNSwgCi0gICAgNjksIDE2LCAyNTEsIDUxLCAxMDgsIDY5LCAxLCAyNTEsIDUxLCAyMTYsIDIyMCwgNjksIDIsIDIxOSwgOTgsIDIyOSwgMjM3LCAKLSAgICAyMDgsIDE2MSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1OSwgNjksIDIsIDQ1LCAyMjgsIDg1LCAyMDgsIDE1NiwgNjksIAotICAgIDEsIDIxMiwgMTc4LCAyMTksIDEzOSwgMjQ2LCAxOTksIDY5LCAxLCAyMTIsIDE3OCwgMjE5LCAxMzksIDIxMywgOTAsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCAyMjksIDI2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAyNiwgNDUsIDIwNSwgMjIwLCAKLSAgICAxLCAxMjQsIDIyOSwgMTE1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjI5LCAxMTUsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAKLSAgICAyMjksIDEyNCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyOSwgMTI0LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjM4LCAzOSwgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOCwgMzksIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjIsIDEyOCwgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIyMiwgMTI4LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ1LCAyNTQsIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyNDUsIDI1NCwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDI0NiwgMTE2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjQ2LCAKLSAgICAxMTYsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTIsIDEzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjEyLCAxMywgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIyMCwgMjMzLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjIwLCAyMzMsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyNDMsIDExMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0MywgMTEzLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMTM1LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA5LCA0NywgNDUsIDIwNSwgCi0gICAgMjIwLCAxLCAxMzgsIDIwOSwgNDcsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMjEsIDE5MSwgNDUsIDIwNSwgMjIwLCAxLCAKLSAgICAxMzgsIDIyMSwgMTkxLCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjQ4LCAyMywgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDI0OCwgCi0gICAgMjMsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMTgsIDY5LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCA2OSwgNDUsIAotICAgIDIwNSwgMjIwLCAxLCAxMjQsIDIxOCwgMTgwLCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjE4LCAxODAsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMSwgMTI0LCAyMzksIDE4NiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIzOSwgMTg2LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgCi0gICAgMjI0LCA4MiwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIyNCwgODIsIDQ1LCAyMDUsIDIyMCwgMSwgMTI0LCAyMDIsIDI0NywgCi0gICAgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDIwMiwgMjQ3LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjE1LCAyMjcsIDQ1LCAyMDUsIAotICAgIDIyMCwgMSwgMTM4LCAyMTUsIDIyNywgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIyNywgNDksIDQ1LCAyMDUsIDIyMCwgMSwgCi0gICAgMTM4LCAyMjcsIDQ5LCA0NSwgMjA1LCAyMjAsIDEsIDEyNCwgMjA1LCAxODksIDQ1LCAyMDUsIDIyMCwgMSwgMTM4LCAyMDUsIAotICAgIDE4OSwgNDUsIDIwNSwgMjIwLCAxLCAxMjQsIDIzNiwgMTM2LCA0NSwgMjA1LCAyMjAsIDEsIDEzOCwgMjM2LCAxMzYsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMSwgMTI0LCA3OCwgNDUsIDIwNSwgMjIwLCAxLCAxMzgsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAKLSAgICAyMzAsIDAsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MiwgMjUsIDQ1LCAyMDUsIDIyMCwgMjIsIDc1LCA0NSwgMjA1LCAyMjAsIAotICAgIDIyLCAyMDcsIDI0LCA0NSwgMjA1LCAyMjAsIDIyLCA2OCwgNDUsIDIwNSwgMjIwLCAyMiwgNzQsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDc4LCA0NSwgMjA1LCAyMjAsIDIyNSwgMTQxLCAyMjksIDExOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjM1LCAxNzEsIDQ1LCAKLSAgICAyMDUsIDIyMCwgMjIsIDIwNywgMjMsIDQ1LCAyMDUsIDIyMCwgMjIsIDIwNywgMzksIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgCi0gICAgMzIsIDQ1LCAyMDUsIDIyMCwgMjIsIDI1MCwgOCwgNDUsIDIwNSwgMjIwLCAyMiwgMjUwLCAyMzEsIDQ1LCAyMDUsIDIyMCwgCi0gICAgMjIsIDI1MCwgMjQ3LCA0NSwgMjA1LCAyMjAsIDE0MywgMjI1LCAxNDEsIDI0MSwgMTI5LCA0NSwgMjA1LCAyMjAsIDE0MywgCi0gICAgMjI1LCAxNDEsIDIyMSwgNTIsIDQ1LCAyMDUsIDIyMCwgMTQzLCAyMjUsIDE0MSwgMjA5LCA0NywgNDUsIDIwNSwgMjIwLCAKLSAgICAxNDMsIDIyNSwgMTQxLCAyMTEsIDI1MiwgNDUsIDIwNSwgMjIwLCAxNiwgMjI5LCA5LCA0NSwgMjA1LCAyMjAsIDE2LCAyMjEsIAotICAgIDUyLCA0NSwgMjA1LCAyMjAsIDE2LCAyMTQsIDI1MywgNDUsIDIwNSwgMjIwLCAxNiwgMjM2LCAxMzcsIDIzNiwgMTMxLCA0NSwgCi0gICAgMjA1LCAyMjAsIDE2LCAyMjksIDE5LCAyMjksIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc0LCAyMjUsIDIsIDIyNSwgNjEsIAotICAgIDEsIDc4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI0NiwgMTk5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMSwgMTEsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMSwgMjA3LCAyNDEsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjA3LCAyMjksIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjQ0LCAxMjAsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQ0LCAxMDQsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjIxLCAyMjcsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjEzLCA5MCwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTEsIDE2NCwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMiwgMiwgMjMxLCA4MywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjA2LCAxNzgsIDIyNSwgMiwgMjI1LCA2MSwgCi0gICAgMjIsIDIsIDI1MSwgMjQ1LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAyNTAsIDM0LCAyMjUsIDIsIDIyNSwgNjEsIDIyLCAyLCAKLSAgICAyNTEsIDIzOCwgMjI1LCAyLCAyMjUsIDYxLCAyNDYsIDE1OSwgMjI1LCAyLCAyMjUsIDYxLCAyNTEsIDcwLCAyMjksIDEwNywgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAyNTAsIDIwOSwgMjI1LCAyLCAyMjUsIDYxLCA0LCAyMTYsIDk4LCA4MiwgMjI1LCAyLCAyMjUsIAotICAgIDYxLCAyMDMsIDIzOCwgMjE2LCA5OCwgODIsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwNSwgMTk5LCAyMjUsIDIsIDIyNSwgCi0gICAgNjEsIDIwNSwgMjA0LCAzMywgNCwgMjA3LCAyMjIsIDMzLCA0LCAyMDcsIDIyNSwgMzMsIDQsIDIwNywgMjI4LCAzMywgNCwgCi0gICAgMjA3LCAyMjYsIDMzLCA0LCAyMDcsIDIyNywgMzMsIDQsIDIwNywgMjI0LCAzMywgNCwgMjQ0LCA5OCwgMzMsIDQsIDI0NCwgCi0gICAgMTAwLCAzMywgNCwgMjQ0LCAxMDMsIDMzLCA0LCAyNDQsIDEwMSwgMzMsIDQsIDI0NCwgMTAyLCAzMywgNCwgMjQ0LCA5OSwgCi0gICAgMzMsIDQsIDI0MSwgMjQyLCAzMywgNCwgMjQxLCAyNDYsIDMzLCA0LCAyNDEsIDI1NCwgMzMsIDQsIDI0MSwgMjUxLCAzMywgCi0gICAgNCwgMjQxLCAyNTIsIDMzLCA0LCAyNDEsIDI0MywgMzMsIDQsIDI0NiwgMjUyLCAzMywgNCwgMjQ2LCAyNDYsIDMzLCA0LCAKLSAgICAyNDYsIDI0OCwgMzMsIDQsIDI0NiwgMjUxLCAzMywgNCwgMjQ2LCAyNDksIDMzLCA0LCAyNDYsIDI1MCwgMzMsIDQsIDI0NiwgCi0gICAgMjQ3LCAzMywgNCwgMjQ4LCAxOTgsIDMzLCA0LCAyNDgsIDE3NywgMzMsIDQsIDI0OCwgMTg5LCAzMywgNCwgMjQ4LCAxOTcsIAotICAgIDMzLCA0LCAyNDgsIDE5MiwgMzMsIDQsIDI0OCwgMTkzLCAzMywgNCwgMjQ4LCAxODEsIDgsIDUsIDEsIDI0OCwgMjI1LCAKLSAgICAyNTEsIDIsIDgsIDUsIDEsIDM0LCAyMTYsIDcxLCA4LCA1LCAxLCAyNDgsIDM5LCA3NCwgOCwgNSwgMSwgMjQ4LCAyMjUsIAotICAgIDc0LCA4LCA1LCAxLCAxODgsIDMsIDIzOSwgMTk5LCA4LCA1LCAxLCAyMjcsIDE4NywgMjQwLCAxNzQsIDgsIDUsIDEsIDEzMiwgCi0gICAgMjM5LCA3NiwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMzAsIDIzOSwgMjI3LCAyNDEsIDE5NCwgOCwgCi0gICAgNSwgMSwgMjI4LCAxMzEsIDMsIDUyLCAxMDEsIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjgsIDEzMSwgMywgMTAxLCAyMTUsIAotICAgIDI1MiwgOCwgNSwgMSwgMjI2LCAxODYsIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyMjMsIDE2NCwgMywgMjQ1LCAxMjYsIDgsIAotICAgIDUsIDEsIDI0MSwgNzksIDMsIDI0NSwgMTI2LCA4LCA1LCAxLCAyNDgsIDM5LCA3OCwgOCwgNSwgMSwgMjQ4LCAzOSwgMTU4LCAKLSAgICAzLCA5NSwgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDk1LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjIwLCA3MywgOCwgNSwgMSwgCi0gICAgMjA3LCAxNzQsIDIyMCwgNzQsIDMsIDk1LCA4LCA1LCAxLCAyMDcsIDE3NCwgMjIwLCA3NCwgMywgMjM2LCAxMDYsIDk1LCA4LCAKLSAgICA1LCAxLCAyMDcsIDE3NCwgMTU4LCAyMjAsIDQsIDgsIDUsIDEsIDIwNywgMTc0LCAxNTgsIDIyMCwgNSwgMywgOTUsIDgsIDUsIAotICAgIDEsIDIxMSwgNjYsIDE0NiwgOCwgMSwgNSwgNiwgMjE3LCAxLCAzLCA1MCwgMjI3LCAyMTAsIDgsIDUsIDEsIDIxNywgMSwgCi0gICAgMjA0LCAzLCAyMzcsIDEwMiwgOCwgNSwgMSwgNTIsIDE0NiwgOCwgNSwgMSwgMjE3LCAxLCAzLCAyNDUsIDEyNiwgOCwgNSwgCi0gICAgMSwgNTIsIDIxNywgMSwgMywgMjQ1LCAxMjYsIDgsIDUsIDEsIDEzMiwgMTQ2LCA4LCA1LCAxLCAxMzIsIDIxNywgMSwgMywgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDI0OCwgMjE2LCAyNDEsIDcsIDgsIDUsIDEsIDEwNiwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIAotICAgIDIxMCwgOCwgNSwgMSwgMTA2LCAyNDgsIDIzMSwgMywgMjEyLCAyMjgsIDUwLCAyMjcsIDIxMCwgOCwgNSwgMSwgMjA3LCAxNywgCi0gICAgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNywgMTcsIDgsIDUsIDEsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjQ2LCAxNDIsIAotICAgIDgsIDUsIDEsIDI0NiwgMTQzLCAzLCAxMjQsIDUwLCAyMTUsIDI1MiwgOCwgNSwgMSwgMjQ2LCAxNDMsIDMsIDEyNCwgNDksIAotICAgIDIxMywgMTI1LCA4LCA1LCAxLCAyMDMsIDE5NywgMywgMTI0LCA1MCwgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAKLSAgICAxNjMsIDQ5LCAyMjcsIDIxMCwgOCwgNSwgMSwgMjAzLCAxOTcsIDMsIDE2MywgNDksIDIyNywgMjExLCAyNSwgMTI0LCA1MCwgCi0gICAgMjE1LCAyNTIsIDgsIDUsIDEsIDIwMywgMTk3LCAzLCAxNjMsIDQ5LCAyMjcsIDIxMSwgMywgMjEzLCAxMjUsIDgsIDUsIDEsIAotICAgIDIwMywgMTI1LCAzLCAyMTIsIDIyOCwgNTAsIDIyNywgMjEwLCA2NSwgMjQ3LCAyMTUsIDMsIDIzMCwgMjM5LCAyNDcsIDIxNCwgCi0gICAgNjUsIDEsIDUsIDIzNywgMzEsIDY1LCAxLCA1LCAyMjgsIDEzMSwgMywgMjMwLCAyMzksIDIyNywgMjQxLCAxOTQsIDY1LCAxLCAKLSAgICA1LCAyMjgsIDEzMSwgMywgMTAxLCAyMDgsIDIyNywgNjUsIDEsIDUsIDEwNiwgMywgNDksIDExMywgOCwgNSwgMSwgMjE1LCAKLSAgICAxMSwgMjAzLCA2NiwgOCwgNSwgMSwgMjMwLCAyMjgsIDc0LCA4LCA1LCAxLCAxNzEsIDIyMCwgNzMsIDgsIDUsIDEsIDIwNiwgCi0gICAgMjI4LCA4LCA1LCAxLCAyMzAsIDIzOSwgMjUxLCAyLCAzMCwgMSwgNSwgNiwgMjIwLCAzNiwgOTAsIDUsIDEsIDYzLCA5MCwgCi0gICAgNSwgMSwgNzQsIDkwLCA1LCAxLCA3NSwgOTAsIDUsIDEsIDc4LCA5MCwgNSwgMSwgNjgsIDkwLCA1LCAxLCAyMDYsIDE2NCwgCi0gICAgOTAsIDUsIDEsIDIzOSwgOCwgOTAsIDUsIDEsIDE3MywgOTAsIDUsIDEsIDIzOCwgMTkwLCA5MCwgNSwgMSwgMjM4LCA4MSwgCi0gICAgOTAsIDUsIDEsIDIzOCwgMzksIDkwLCA1LCAxLCAyMzcsIDIzMCwgOTAsIDUsIDEsIDIzNywgMTkyLCA5MCwgNSwgMSwgMTUyLCAKLSAgICA5MCwgNSwgMSwgMjM3LCA2NywgOTAsIDUsIDEsIDIzNywgMywgOTAsIDUsIDEsIDIzNiwgMTM2LCA5MCwgNSwgMSwgMjM2LCAKLSAgICAyNiwgOTAsIDUsIDEsIDIzNSwgMjU1LCA5MCwgNSwgMSwgMjI4LCAxMTMsIDkwLCA1LCAxLCAyMjcsIDIzNCwgOTAsIDUsIDEsIAotICAgIDIyNywgMTQ4LCA5MCwgNSwgMSwgMjI3LCA0OSwgOTAsIDUsIDEsIDIyNiwgMjM5LCA5MCwgNSwgMSwgMjI2LCAyMDgsIDkwLCAKLSAgICA1LCAxLCAxOTIsIDkwLCA1LCAxLCAyMjUsIDIwLCA5MCwgNSwgMSwgMjI0LCAxNTUsIDkwLCA1LCAxLCAyMjQsIDgyLCA5MCwgCi0gICAgNSwgMSwgMjIzLCAyNDYsIDkwLCA1LCAxLCAyMDEsIDIwMSwgOTAsIDUsIDEsIDIzNiwgMTYwLCA5MCwgNSwgMSwgMjIzLCAKLSAgICA5MywgOTAsIDUsIDEsIDIyMiwgMjQwLCA5MCwgNSwgMSwgMjIyLCAxMDAsIDkwLCA1LCAxLCAyMjEsIDE5MSwgOTAsIDUsIDEsIAotICAgIDIyMSwgODQsIDkwLCA1LCAxLCAyMjEsIDIyLCA5MCwgNSwgMSwgMjE3LCA2NCwgOTAsIDUsIDEsIDIxNywgNTAsIDkwLCA1LCAKLSAgICAxLCAyMTcsIDQzLCA5MCwgNSwgMSwgMjE3LCAzNCwgOTAsIDUsIDEsIDIxNywgMjMsIDkwLCA1LCAxLCAyMTcsIDIxLCA5MCwgCi0gICAgNSwgMSwgMjE1LCAzNiwgOTAsIDUsIDEsIDE5NCwgOTAsIDUsIDEsIDIxNCwgMTc3LCA5MCwgNSwgMSwgMjEyLCAxNjIsIDkwLCAKLSAgICA1LCAxLCAyMTIsIDEzLCA5MCwgNSwgMSwgMjExLCAxMCwgOTAsIDUsIDEsIDIxMCwgMTc3LCA5MCwgNSwgMSwgMjQ0LCAyMTIsIAotICAgIDkwLCA1LCAxLCAyMTAsIDIyLCA5MCwgNSwgMSwgMjQ0LCA3NSwgOTAsIDUsIDEsIDIwOSwgMTg3LCA5MCwgNSwgMSwgMjQzLCAKLSAgICAyMzMsIDkwLCA1LCAxLCAyMDksIDIsIDkwLCA1LCAxLCAyNDMsIDExMywgOTAsIDUsIDEsIDI0MiwgNDIsIDkwLCA1LCAxLCAKLSAgICAyNDIsIDEzLCA5MCwgNSwgMSwgMjQzLCAxMjQsIDkwLCA1LCAxLCAyMDgsIDE5MCwgOTAsIDUsIDEsIDIwOCwgMTg5LCA5MCwgCi0gICAgNSwgMSwgMjA4LCAxNzgsIDkwLCA1LCAxLCAyMDgsIDE3NywgOTAsIDUsIDEsIDIwOCwgMTc2LCA5MCwgNSwgMSwgMjA4LCAKLSAgICAxNzUsIDkwLCA1LCAxLCAyMDgsIDIwLCA5MCwgNSwgMSwgMjA4LCAxNCwgOTAsIDUsIDEsIDIwNywgMjU1LCA5MCwgNSwgMSwgCi0gICAgMjA3LCAyNTMsIDkwLCA1LCAxLCAyMDcsIDI0OSwgOTAsIDUsIDEsIDIwNywgMjQ4LCA5MCwgNSwgMSwgMjA0LCAxMTEsIDkwLCAKLSAgICA1LCAxLCAyMDQsIDYyLCA5MCwgNSwgMSwgMjA0LCAzMCwgOTAsIDUsIDEsIDIwNCwgMCwgOTAsIDUsIDEsIDIwMywgMjE3LCAKLSAgICA5MCwgNSwgMSwgMjAzLCAyMDQsIDkwLCA1LCAxLCAxOTgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI5LCAxNiwgMjI1LCAyLCAKLSAgICAyMjUsIDYxLCAxLCAyMTQsIDI1MywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjgsIDg2LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyNCwgOTMsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMTg1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwMSwgMjAxLCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDI0NiwgMTM0LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOCwgMjI5LCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDIyOSwgMTEwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIyMiwgMTE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwOSwgMzksIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjA0LCAxMDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjAzLCA3NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAKLSAgICAyMzYsIDE4LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIwNiwgMjU1LCAyMjUsIDIsIDIyNSwgNjEsIDEsIDc1LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIxOCwgMjAyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDI1MCwgNDUsIDIyNSwgMiwgMjI1LCA2MSwgMSwgCi0gICAgMjM4LCAzMiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzAsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMTYsIDE5NywgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyNDksIDMyLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzMCwgMTMzLCAyMjUsIDIsIDIyNSwgNjEsIDEsIAotICAgIDI0MywgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDEsIDIzOCwgODgsIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjQzLCAyMzUsIDIyNSwgCi0gICAgMiwgMjI1LCA2MSwgMSwgMjQ4LCA5NiwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjksIDE3LCAyMjcsIDE5LCAyMjUsIDIsIAotICAgIDIyNSwgNjEsIDEsIDIyOCwgODcsIDIyNywgMTksIDIyNSwgMiwgMjI1LCA2MSwgMSwgMjI0LCA5NCwgMjI3LCAxOSwgMjI1LCAKLSAgICAyLCAyMjUsIDYxLCAxLCAyMTksIDE2OSwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjMsIDExMSwgMjI3LCAxOSwgCi0gICAgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMDgsIDIzMCwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMjIsIDExOSwgMjI3LCAKLSAgICAxOSwgMjI1LCAyLCAyMjUsIDYxLCAxLCAyMzUsIDIwNiwgMjI3LCAxOSwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjIwLCAKLSAgICAzMCwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjMxLCA0NywgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjUwLCAyMzAsIAotICAgIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIwMywgNDEsIDIyNSwgMiwgMjI1LCA2MSwgMjIsIDIsIDIxMSwgMjQyLCAyMjUsIAotICAgIDIsIDIyNSwgNjEsIDIyLCAyLCAyMDYsIDI1MiwgMjI1LCAyLCAyMjUsIDYxLCAyMiwgMiwgMjQ2LCAxNTcsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMjIsIDIsIDIyMSwgMzcsIDIyNSwgMiwgMjI1LCA2MSwgMjQ2LCAxNTgsIDIyNSwgMiwgMjI1LCA2MSwgMjI2LCAKLSAgICAyMjMsIDIzMCwgMTkwLCAyMjUsIDIsIDIyNSwgNjEsIDI1MCwgMTQ5LCAyMzAsIDE5MCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgCi0gICAgMjAyLCA4NCwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTA1LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxMDgsIDIyNSwgMiwgMjI1LCAKLSAgICA2MSwgMTcsIDE0NywgMjI1LCAyLCAyMjUsIDYxLCAxNywgMTQ5LCAyMjUsIDIsIDIyNSwgNjEsIDE3LCAxNzAsIDIyNSwgMiwgCi0gICAgMjI1LCA2MSwgMTcsIDE5NSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjEzLCAxMTEsIDIyNSwgMiwgMjI1LCA2MSwgMTcsIAotICAgIDE5OSwgMjI1LCAyLCAyMjUsIDYxLCAxNywgMjIyLCA2MywgMjgsIDE3NiwgMjIwLCAxNzQsIDI4LCAxNzYsIDIyMCwgMTc5LCAKLSAgICAyOCwgMTc2LCAyMDIsIDI0NiwgMjgsIDE3NiwgMjAyLCAyNDUsIDI4LCAxNzYsIDIwMiwgMjQ0LCAyOCwgMTc2LCAyMDcsIAotICAgIDg5LCAyOCwgMTc2LCAyMDcsIDkzLCAyOCwgMTc2LCAyMDIsIDIxMSwgMjgsIDE3NiwgMjAyLCAyMDcsIDI4LCAxNzYsIDI0MCwgCi0gICAgMjM3LCAyOCwgMTc2LCAyNDAsIDIzNSwgMjgsIDE3NiwgMjQwLCAyMzYsIDI4LCAxNzYsIDI0MCwgMjMzLCAyOCwgMTc2LCAKLSAgICAyMzUsIDE5NiwgMjgsIDE3NiwgMjM1LCAxOTUsIDI4LCAxNzYsIDIzNSwgMTkzLCAyOCwgMTc2LCAyMzUsIDE5NCwgMjgsIAotICAgIDE3NiwgMjM1LCAxOTksIDI4LCAxNzYsIDIzNSwgMTkyLCAyOCwgMTc2LCAyMzUsIDE5MSwgMjgsIDE3NiwgMjM1LCAyMDEsIAotICAgIDI4LCAxNzYsIDI1MCwgMTM2LCAyOCwgMTc2LCAyNTAsIDEzNSwgMjgsIDEwNywgMjIyLCA4NiwgMjgsIDEwNywgMjIyLCA5MiwgCi0gICAgMjgsIDEwNywgMjExLCAxNDUsIDI4LCAxMDcsIDIxMSwgMTQ0LCAyOCwgMTA3LCAyMDgsIDIzNSwgMjgsIDEwNywgMjA4LCAKLSAgICAyMzMsIDI4LCAxMDcsIDIwOCwgMjMyLCAyOCwgMTA3LCAyMDgsIDIzOCwgMjgsIDEwNywgMjA4LCAyMzksIDI4LCAxMDcsIAotICAgIDIwOCwgMjMxLCAyOCwgMTA3LCAyMTYsIDI2LCAyOCwgMTA3LCAyMTYsIDQxLCAyOCwgMTA3LCAyMTEsIDE1MSwgMjgsIDEwNywgCi0gICAgMjE2LCAzOCwgMjgsIDEwNywgMjE2LCAyOCwgMjgsIDEwNywgMjE2LCAzMCwgMjgsIDEwNywgMjE2LCAxNywgMjgsIDEwNywgCi0gICAgMjE2LCAxOCwgMjgsIDEwNywgMjI5LCAyNDMsIDI4LCAxMDcsIDIyNCwgMTM2LCAyOCwgMTA3LCAyMjQsIDEzMCwgMjgsIAotICAgIDEwNywgMjExLCAxNTUsIDI4LCAxMDcsIDIyNCwgMTMzLCAyOCwgMTA3LCAyMjQsIDEzOSwgMjgsIDEwNywgMjE4LCAxMzQsIAotICAgIDI4LCAxMDcsIDIxOCwgMTQzLCAyOCwgMTA3LCAyMTgsIDE0NywgMjgsIDEwNywgMjExLCAxNTMsIDI4LCAxMDcsIDIxOCwgCi0gICAgMTM3LCAyOCwgMTA3LCAyMTgsIDE1MSwgMjgsIDEwNywgMjE4LCAxNTIsIDI4LCAxMDcsIDIxMiwgMTAzLCAyOCwgMTA3LCAKLSAgICAyMTIsIDEwNiwgMjgsIDEwNywgMjExLCAxNDksIDI4LCAxMDcsIDIxMSwgMTQ3LCAyOCwgMTA3LCAyMTIsIDEwMSwgMjgsIAotICAgIDEwNywgMjEyLCAxMDksIDI4LCAxMDcsIDIxMiwgMTEwLCAyOCwgMTA3LCAyMTIsIDk1LCAyOCwgMTA3LCAyMTIsIDEwOCwgCi0gICAgMjgsIDEwNywgMjE5LCAxMDUsIDI4LCAxMDcsIDIxOSwgMTA2LCAyOCwgMTA3LCAyMDMsIDI3LCAyOCwgMTA3LCAyMDMsIDI4LCAKLSAgICAyOCwgMTA3LCAyNDYsIDcyLCAyOCwgMTA3LCAyNDYsIDcxLCAyOCwgMTA3LCAyMTEsIDE2MCwgMjgsIDEwNywgMjE4LCAxODcsIAotICAgIDI4LCAxMDcsIDIxOCwgMTg2LCAxMiwgMTUsIDIzMywgNzQsIDEyLCAxNSwgMjMzLCA3MywgMTIsIDE1LCAyMzMsIDcyLCAxMiwgCi0gICAgMTUsIDIzMywgNzEsIDEyLCAxNSwgMjMzLCA3MCwgMTIsIDE1LCAyMzMsIDY5LCAxMiwgMTUsIDIzMywgNjgsIDEyLCAxNSwgCi0gICAgMjMzLCA2NywgMTIsIDE1LCAyMzMsIDY2LCAxMiwgMTUsIDIzMywgNjUsIDEyLCAxNSwgMjMzLCA2NCwgMTIsIDE1LCAyMzMsIAotICAgIDYzLCAxMiwgMTUsIDIzMywgNjIsIDEyLCAxNSwgMjMzLCA2MSwgMTIsIDE1LCAyMzMsIDYwLCAxMiwgMTUsIDIzMywgNTksIAotICAgIDEyLCAxNSwgMjMzLCA1OCwgMTIsIDE1LCAyMzMsIDU3LCAxMiwgMTUsIDIzMywgNTYsIDEyLCAxNSwgMjMzLCA1NSwgMTIsIAotICAgIDE1LCAyMzMsIDU0LCAxMiwgMTUsIDIzMywgNTMsIDEyLCAxNSwgMjMzLCA1MiwgMTIsIDE1LCAyMzMsIDUxLCAxMiwgMTUsIAotICAgIDIzMywgNTAsIDEyLCAxNSwgMjMzLCA0OSwgMTIsIDE1LCAyMzMsIDQ4LCAxMiwgMTUsIDIzMywgNDcsIDEyLCAxNSwgMjMzLCAKLSAgICA0NiwgMTIsIDE1LCAyMzMsIDQ1LCAxMiwgMTUsIDIzMywgNDQsIDEyLCAxNSwgMjMzLCA0MywgMTIsIDE1LCAyMzMsIDQyLCAKLSAgICAxMiwgMTUsIDIzMywgNDEsIDEyLCAxNSwgMjMzLCA0MCwgMTIsIDE1LCAyMzMsIDM5LCAxMiwgMTUsIDIzMywgMzgsIDEyLCAKLSAgICAxNSwgMjMzLCAzNywgMTIsIDE1LCAyMzMsIDM2LCAxMiwgMTUsIDIzMywgMzUsIDEyLCAxNSwgMjMzLCAzNCwgMTIsIDE1LCAKLSAgICAyMzMsIDMzLCAxMiwgMTUsIDIzMywgMzIsIDEyLCAxNSwgMjMzLCAzMSwgMTIsIDE1LCAyMzMsIDMwLCAxMiwgMTUsIDIzMywgCi0gICAgMjksIDEyLCAxNSwgMjMzLCAyOCwgMTIsIDE1LCAyMzMsIDI3LCAxMiwgMTUsIDIzMywgMjYsIDEyLCAxNSwgMjMzLCAyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0LCAxMiwgMTUsIDIzMywgMjMsIDEyLCAxNSwgMjMzLCAyMiwgMTIsIDE1LCAyMzMsIDIxLCAxMiwgCi0gICAgMTUsIDIzMywgMjAsIDEyLCAxNSwgMjMzLCAxOSwgMTIsIDE1LCAyMzMsIDE4LCAxMiwgMTUsIDIzMywgMTcsIDEyLCAxNSwgCi0gICAgMjMzLCAxNiwgMTIsIDE1LCAyMzMsIDE1LCAxMiwgMTUsIDIzMywgMTQsIDEyLCAxNSwgMjMzLCAxMywgMTIsIDE1LCAyMzMsIAotICAgIDEyLCAxMiwgMTUsIDIzMywgMTEsIDEyLCAxNSwgMjMzLCAxMCwgMTIsIDE1LCAyMzMsIDksIDEyLCAxNSwgMjMzLCA4LCAxMiwgCi0gICAgMTUsIDIzMywgNywgMTIsIDE1LCAyMzMsIDYsIDEyLCAxNSwgMjMzLCA1LCAxMiwgMTUsIDIzMywgNCwgMTIsIDE1LCAyMzMsIAotICAgIDMsIDEyLCAxNSwgMjMzLCAyLCAxMiwgMTUsIDIzMywgMSwgMTIsIDE1LCAyMzMsIDAsIDEyLCAxNSwgMjMyLCAyNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTQsIDEyLCAxNSwgMjMyLCAyNTMsIDEyLCAxNSwgMjMyLCAyNTIsIDEyLCAxNSwgMjMyLCAyNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyNTAsIDEyLCAxNSwgMjMyLCAyNDksIDEyLCAxNSwgMjMyLCAyNDgsIDEyLCAxNSwgMjMyLCAyNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDYsIDEyLCAxNSwgMjMyLCAyNDUsIDEyLCAxNSwgMjMyLCAyNDQsIDEyLCAxNSwgMjMyLCAyNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyNDIsIDEyLCAxNSwgMjMyLCAyNDEsIDEyLCAxNSwgMjMyLCAyNDAsIDEyLCAxNSwgMjMyLCAyMzksIDEyLCAKLSAgICAxNSwgMjMyLCAyMzgsIDEyLCAxNSwgMjMyLCAyMzcsIDEyLCAxNSwgMjMyLCAyMzYsIDEyLCAxNSwgMjMyLCAyMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzQsIDEyLCAxNSwgMjMyLCAyMzMsIDEyLCAxNSwgMjMyLCAyMzIsIDEyLCAxNSwgMjMyLCAyMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMzAsIDEyLCAxNSwgMjMyLCAyMjksIDEyLCAxNSwgMjMyLCAyMjgsIDEyLCAxNSwgMjMyLCAyMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjYsIDEyLCAxNSwgMjMyLCAyMjUsIDEyLCAxNSwgMjMyLCAyMjQsIDEyLCAxNSwgMjMyLCAyMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMjIsIDEyLCAxNSwgMjMyLCAyMjEsIDEyLCAxNSwgMjMyLCAyMjAsIDEyLCAxNSwgMjMyLCAyMTksIDEyLCAKLSAgICAxNSwgMjMyLCAyMTgsIDEyLCAxNSwgMjMyLCAyMTcsIDEyLCAxNSwgMjMyLCAyMTYsIDEyLCAxNSwgMjMyLCAyMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTQsIDEyLCAxNSwgMjMyLCAyMTMsIDEyLCAxNSwgMjMyLCAyMTIsIDEyLCAxNSwgMjMyLCAyMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAyMTAsIDEyLCAxNSwgMjMyLCAyMDksIDEyLCAxNSwgMjMyLCAyMDgsIDEyLCAxNSwgMjMyLCAyMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDYsIDEyLCAxNSwgMjMyLCAyMDUsIDEyLCAxNSwgMjMyLCAyMDQsIDEyLCAxNSwgMjMyLCAyMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAyMDIsIDEyLCAxNSwgMjMyLCAyMDEsIDEyLCAxNSwgMjMyLCAyMDAsIDEyLCAxNSwgMjMyLCAxOTksIDEyLCAKLSAgICAxNSwgMjMyLCAxOTgsIDEyLCAxNSwgMjMyLCAxOTcsIDEyLCAxNSwgMjMyLCAxOTYsIDEyLCAxNSwgMjMyLCAxOTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTQsIDEyLCAxNSwgMjMyLCAxOTMsIDEyLCAxNSwgMjMyLCAxOTIsIDEyLCAxNSwgMjMyLCAxOTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxOTAsIDEyLCAxNSwgMjMyLCAxODksIDEyLCAxNSwgMjMyLCAxODgsIDEyLCAxNSwgMjMyLCAxODcsIDEyLCAKLSAgICAxNSwgMjMyLCAxODYsIDEyLCAxNSwgMjMyLCAxODUsIDEyLCAxNSwgMjMyLCAxODQsIDEyLCAxNSwgMjMyLCAxODMsIDEyLCAKLSAgICAxNSwgMjMyLCAxODIsIDEyLCAxNSwgMjMyLCAxODEsIDEyLCAxNSwgMjMyLCAxODAsIDEyLCAxNSwgMjMyLCAxNzksIDEyLCAKLSAgICAxNSwgMjMyLCAxNzgsIDEyLCAxNSwgMjMyLCAxNzcsIDEyLCAxNSwgMjMyLCAxNzYsIDEyLCAxNSwgMjMyLCAxNzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzQsIDEyLCAxNSwgMjMyLCAxNzMsIDEyLCAxNSwgMjMyLCAxNzIsIDEyLCAxNSwgMjMyLCAxNzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNzAsIDEyLCAxNSwgMjMyLCAxNjksIDEyLCAxNSwgMjMyLCAxNjgsIDEyLCAxNSwgMjMyLCAxNjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjYsIDEyLCAxNSwgMjMyLCAxNjUsIDEyLCAxNSwgMjMyLCAxNjQsIDEyLCAxNSwgMjMyLCAxNjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNjIsIDEyLCAxNSwgMjMyLCAxNjEsIDEyLCAxNSwgMjMyLCAxNjAsIDEyLCAxNSwgMjMyLCAxNTksIDEyLCAKLSAgICAxNSwgMjMyLCAxNTgsIDEyLCAxNSwgMjMyLCAxNTcsIDEyLCAxNSwgMjMyLCAxNTYsIDEyLCAxNSwgMjMyLCAxNTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTQsIDEyLCAxNSwgMjMyLCAxNTMsIDEyLCAxNSwgMjMyLCAxNTIsIDEyLCAxNSwgMjMyLCAxNTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxNTAsIDEyLCAxNSwgMjMyLCAxNDksIDEyLCAxNSwgMjMyLCAxNDgsIDEyLCAxNSwgMjMyLCAxNDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDYsIDEyLCAxNSwgMjMyLCAxNDUsIDEyLCAxNSwgMjMyLCAxNDQsIDEyLCAxNSwgMjMyLCAxNDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxNDIsIDEyLCAxNSwgMjMyLCAxNDEsIDEyLCAxNSwgMjMyLCAxNDAsIDEyLCAxNSwgMjMyLCAxMzksIDEyLCAKLSAgICAxNSwgMjMyLCAxMzgsIDEyLCAxNSwgMjMyLCAxMzcsIDEyLCAxNSwgMjMyLCAxMzYsIDEyLCAxNSwgMjMyLCAxMzUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzQsIDEyLCAxNSwgMjMyLCAxMzMsIDEyLCAxNSwgMjMyLCAxMzIsIDEyLCAxNSwgMjMyLCAxMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMzAsIDEyLCAxNSwgMjMyLCAxMjksIDEyLCAxNSwgMjMyLCAxMjgsIDEyLCAxNSwgMjMyLCAxMjcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjYsIDEyLCAxNSwgMjMyLCAxMjUsIDEyLCAxNSwgMjMyLCAxMjQsIDEyLCAxNSwgMjMyLCAxMjMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMjIsIDEyLCAxNSwgMjMyLCAxMjEsIDEyLCAxNSwgMjMyLCAxMjAsIDEyLCAxNSwgMjMyLCAxMTksIDEyLCAKLSAgICAxNSwgMjMyLCAxMTgsIDEyLCAxNSwgMjMyLCAxMTcsIDEyLCAxNSwgMjMyLCAxMTYsIDEyLCAxNSwgMjMyLCAxMTUsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTQsIDEyLCAxNSwgMjMyLCAxMTMsIDEyLCAxNSwgMjMyLCAxMTIsIDEyLCAxNSwgMjMyLCAxMTEsIDEyLCAKLSAgICAxNSwgMjMyLCAxMTAsIDEyLCAxNSwgMjMyLCAxMDksIDEyLCAxNSwgMjMyLCAxMDgsIDEyLCAxNSwgMjMyLCAxMDcsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDYsIDEyLCAxNSwgMjMyLCAxMDUsIDEyLCAxNSwgMjMyLCAxMDQsIDEyLCAxNSwgMjMyLCAxMDMsIDEyLCAKLSAgICAxNSwgMjMyLCAxMDIsIDEyLCAxNSwgMjMyLCAxMDEsIDEyLCAxNSwgMjMyLCAxMDAsIDEyLCAxNSwgMjMyLCA5OSwgMTIsIAotICAgIDE1LCAyMzIsIDk4LCAxMiwgMTUsIDIzMiwgOTcsIDEyLCAxNSwgMjMyLCA5NiwgMTIsIDE1LCAyMzIsIDk1LCAxMiwgMTUsIAotICAgIDIzMiwgOTQsIDEyLCAxNSwgMjMyLCA5MywgMTIsIDE1LCAyMzIsIDkyLCAxMiwgMTUsIDIzMiwgOTEsIDEyLCAxNSwgMjMyLCAKLSAgICA5MCwgMTIsIDE1LCAyMzIsIDg5LCAxMiwgMTUsIDIzMiwgODgsIDEyLCAxNSwgMjMyLCA4NywgMTIsIDE1LCAyMzIsIDg2LCAKLSAgICAxMiwgMTUsIDIzMiwgODUsIDEyLCAxNSwgMjMyLCA4NCwgMTIsIDE1LCAyMzIsIDgzLCAxMiwgMTUsIDIzMiwgODIsIDEyLCAKLSAgICAxNSwgMjMyLCA4MSwgMTIsIDE1LCAyMzIsIDgwLCAxMiwgMTUsIDIzMiwgNzksIDEyLCAxNSwgMjMyLCA3OCwgMTIsIDE1LCAKLSAgICAyMzIsIDc3LCAxMiwgMTUsIDIzMiwgNzYsIDEyLCAxNSwgMjMyLCA3NSwgMTIsIDE1LCAyMzIsIDc0LCAxMiwgMTUsIDIzMiwgCi0gICAgNzMsIDEyLCAxNSwgMjMyLCA3MiwgMTIsIDE1LCAyMzIsIDcxLCAxMiwgMTUsIDIzMiwgNzAsIDEyLCAxNSwgMjMyLCA2OSwgCi0gICAgMTIsIDE1LCAyMzIsIDY4LCAxMiwgMTUsIDIzMiwgNjcsIDEyLCAxNSwgMjMyLCA2NiwgMTIsIDE1LCAyMzIsIDY1LCAxMiwgCi0gICAgMTUsIDIzMiwgNjQsIDEyLCAxNSwgMjMyLCA2MywgMTIsIDE1LCAyMzIsIDYyLCAxMiwgMTUsIDIzMiwgNjEsIDEyLCAxNSwgCi0gICAgMjMyLCA2MCwgMTIsIDE1LCAyMzIsIDU5LCAxMiwgMTUsIDIzMiwgNTgsIDEyLCAxNSwgMjMyLCA1NywgMTIsIDE1LCAyMzIsIAotICAgIDU2LCAxMiwgMTUsIDIzMiwgNTUsIDEyLCAxNSwgMjMyLCA1NCwgMTIsIDE1LCAyMzIsIDUzLCAxMiwgMTUsIDIzMiwgNTIsIAotICAgIDEyLCAxNSwgMjMyLCA1MSwgMTIsIDE1LCAyMzIsIDUwLCAxMiwgMTUsIDIzMiwgNDksIDEyLCAxNSwgMjMyLCA0OCwgMTIsIAotICAgIDE1LCAyMzIsIDQ3LCAxMiwgMTUsIDIzMiwgNDYsIDEyLCAxNSwgMjMyLCA0NSwgMTIsIDE1LCAyMzIsIDQ0LCAxMiwgMTUsIAotICAgIDIzMiwgNDMsIDEyLCAxNSwgMjMyLCA0MiwgMTIsIDE1LCAyMzIsIDQxLCAxMiwgMTUsIDIzMiwgNDAsIDEyLCAxNSwgMjMyLCAKLSAgICAzOSwgMTIsIDE1LCAyMzIsIDM4LCAxMiwgMTUsIDIzMiwgMzcsIDEyLCAxNSwgMjMyLCAzNiwgMTIsIDE1LCAyMzIsIDM1LCAKLSAgICAxMiwgMTUsIDIzMiwgMzQsIDEyLCAxNSwgMjMyLCAzMywgMTIsIDE1LCAyMzIsIDMyLCAxMiwgMTUsIDIzMiwgMzEsIDEyLCAKLSAgICAxNSwgMjMyLCAzMCwgMTIsIDE1LCAyMzIsIDI5LCAxMiwgMTUsIDIzMiwgMjgsIDEyLCAxNSwgMjMyLCAyNywgMTIsIDE1LCAKLSAgICAyMzIsIDI2LCAxMiwgMTUsIDIzMiwgMjUsIDEyLCAxNSwgMjMyLCAyNCwgMTIsIDE1LCAyMzIsIDIzLCAxMiwgMTUsIDIzMiwgCi0gICAgMjIsIDEyLCAxNSwgMjMyLCAyMSwgMTIsIDE1LCAyMzIsIDIwLCAxMiwgMTUsIDIzMiwgMTksIDEyLCAxNSwgMjMyLCAxOCwgCi0gICAgMTIsIDE1LCAyMzIsIDE3LCAxMiwgMTUsIDIzMiwgMTYsIDEyLCAxNSwgMjMyLCAxNSwgMTIsIDE1LCAyMzIsIDE0LCAxMiwgCi0gICAgMTUsIDIzMiwgMTMsIDEyLCAxNSwgMjMyLCAxMiwgMTIsIDE1LCAyMzIsIDExLCAxMiwgMTUsIDIzMiwgMTAsIDEyLCAxNSwgCi0gICAgMjMyLCA5LCAxMiwgMTUsIDIzMiwgOCwgMTIsIDE1LCAyMzIsIDcsIDEyLCAxNSwgMjMyLCA2LCAxMiwgMTUsIDIzMiwgNSwgCi0gICAgMTIsIDE1LCAyMzIsIDQsIDEyLCAxNSwgMjMyLCAzLCAxMiwgMTUsIDIzMiwgMiwgMTIsIDE1LCAyMzIsIDEsIDEyLCAxNSwgCi0gICAgMjMyLCAwLCAxMiwgMTUsIDIzMSwgMjU1LCAxMiwgMTUsIDIzMSwgMjU0LCAxMiwgMTUsIDIzMSwgMjUzLCAxMiwgMTUsIAotICAgIDIzMSwgMjUyLCAxMiwgMTUsIDIzMSwgMjUxLCAxMiwgMTUsIDIzMSwgMjUwLCAxMiwgMTUsIDIzMSwgMjQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ4LCAxMiwgMTUsIDIzMSwgMjQ3LCAxMiwgMTUsIDIzMSwgMjQ2LCAxMiwgMTUsIDIzMSwgMjQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMjQ0LCAxMiwgMTUsIDIzMSwgMjQzLCAxMiwgMTUsIDIzMSwgMjQyLCAxMiwgMTUsIDIzMSwgMjQxLCAxMiwgMTUsIAotICAgIDIzMSwgMjQwLCAxMiwgMTUsIDIzMSwgMjM5LCAxMiwgMTUsIDIzMSwgMjM4LCAxMiwgMTUsIDIzMSwgMjM3LCAxMiwgMTUsIAotICAgIDIzMSwgMjM2LCAxMiwgMTUsIDIzMSwgMjM1LCAxMiwgMTUsIDIzMSwgMjM0LCAxMiwgMTUsIDIzMSwgMjMzLCAxMiwgMTUsIAotICAgIDIzMSwgMjMyLCAxMiwgMTUsIDIzMSwgMjMxLCAxMiwgMTUsIDIzMSwgMjMwLCAxMiwgMTUsIDIzMSwgMjI5LCAxMiwgMTUsIAotICAgIDIzMSwgMjI4LCAxMiwgMTUsIDIzMSwgMjI3LCAxMiwgMTUsIDIzMSwgMjI2LCAxMiwgMTUsIDIzMSwgMjI1LCAxMiwgMTUsIAotICAgIDIzMSwgMjI0LCAxMiwgMTUsIDIzMSwgMjIzLCAxMiwgMTUsIDIzMSwgMjIyLCAxMiwgMTUsIDIzMSwgMjIxLCAxMiwgMTUsIAotICAgIDIzMSwgMjIwLCAxMiwgMTUsIDIzMSwgMjE5LCAxMiwgMTUsIDIzMSwgMjE4LCAxMiwgMTUsIDIzMSwgMjE3LCAxMiwgMTUsIAotICAgIDIzMSwgMjE2LCAxMiwgMTUsIDIzMSwgMjE1LCAxMiwgMTUsIDIzMSwgMjE0LCAxMiwgMTUsIDIzMSwgMjEzLCAxMiwgMTUsIAotICAgIDIzMSwgMjEyLCAxMiwgMTUsIDIzMSwgMjExLCAxMiwgMTUsIDIzMSwgMjEwLCAxMiwgMTUsIDIzMSwgMjA5LCAxMiwgMTUsIAotICAgIDIzMSwgMjA4LCAxMiwgMTUsIDIzMSwgMjA3LCAxMiwgMTUsIDIzMSwgMjA2LCAxMiwgMTUsIDIzMSwgMjA1LCAxMiwgMTUsIAotICAgIDIzMSwgMjA0LCAxMiwgMTUsIDIzMSwgMjAzLCAxMiwgMTUsIDIzMSwgMjAyLCAxMiwgMTUsIDIzMSwgMjAxLCAxMiwgMTUsIAotICAgIDIzMSwgMjAwLCAxMiwgMTUsIDIzMSwgMTk5LCAxMiwgMTUsIDIzMSwgMTk4LCAxMiwgMTUsIDIzMSwgMTk3LCAxMiwgMTUsIAotICAgIDIzMSwgMTk2LCAxMiwgMTUsIDIzMSwgMTk1LCAxMiwgMTUsIDIzMSwgMTk0LCAxMiwgMTUsIDIzMSwgMTkzLCAxMiwgMTUsIAotICAgIDIzMSwgMTkyLCAxMiwgMTUsIDIzMSwgMTkxLCAxMiwgMTUsIDIzMSwgMTkwLCAxMiwgMTUsIDIzMSwgMTg5LCAxMiwgMTUsIAotICAgIDIzMSwgMTg4LCAxMiwgMTUsIDIzMSwgMTg3LCAxMiwgMTUsIDIzMSwgMTg2LCAxMiwgMTUsIDIzMSwgMTg1LCAxMiwgMTUsIAotICAgIDIzMSwgMTg0LCAxMiwgMTUsIDIzMSwgMTgzLCAxMiwgMTUsIDIzMSwgMTgyLCAxMiwgMTUsIDIzMSwgMTgxLCAxMiwgMTUsIAotICAgIDIzMSwgMTgwLCAxMiwgMTUsIDIzMSwgMTc5LCAxMiwgMTUsIDIzMSwgMTc4LCAxMiwgMTUsIDIzMSwgMTc3LCAxMiwgMTUsIAotICAgIDIzMSwgMTc2LCAxMiwgMTUsIDIzMSwgMTc1LCAxMiwgMTUsIDIzMSwgMTc0LCAxMiwgMTUsIDIzMSwgMTczLCAxMiwgMTUsIAotICAgIDIzMSwgMTcyLCAxMiwgMTUsIDIzMSwgMTcxLCAxMiwgMTUsIDIzMSwgMTcwLCAxMiwgMTUsIDIzMSwgMTY5LCAxMiwgMTUsIAotICAgIDIzMSwgMTY4LCAxMiwgMTUsIDIzMSwgMTY3LCAxMiwgMTUsIDIzMSwgMTY2LCAxMiwgMTUsIDIzMSwgMTY1LCAxMiwgMTUsIAotICAgIDIzMSwgMTY0LCAxMiwgMTUsIDIzMSwgMTYzLCAxMiwgMTUsIDIzMSwgMTYyLCAxMiwgMTUsIDIzMSwgMTYxLCAxMiwgMTUsIAotICAgIDIzMSwgMTYwLCAxMiwgMTUsIDIzMSwgMTU5LCAxMiwgMTUsIDIzMSwgMTU4LCAxMiwgMTUsIDIzMSwgMTU3LCAxMiwgMTUsIAotICAgIDIzMSwgMTU2LCAxMiwgMTUsIDIzMSwgMTU1LCAxMiwgMTUsIDIzMSwgMTU0LCAxMiwgMTUsIDIzMSwgMTUzLCAxMiwgMTUsIAotICAgIDIzMSwgMTUyLCAxMiwgMTUsIDIzMSwgMTUxLCAxMiwgMTUsIDIzMSwgMTUwLCAxMiwgMTUsIDIzMSwgMTQ5LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ4LCAxMiwgMTUsIDIzMSwgMTQ3LCAxMiwgMTUsIDIzMSwgMTQ2LCAxMiwgMTUsIDIzMSwgMTQ1LCAxMiwgMTUsIAotICAgIDIzMSwgMTQ0LCAxMiwgMTUsIDIzMSwgMTQzLCAxMiwgMTUsIDIzMSwgMTQyLCAxMiwgMTUsIDIzMSwgMTQxLCAxMiwgMTUsIAotICAgIDIzMSwgMTQwLCAxMiwgMTUsIDIzMSwgMTM5LCAxMiwgMTUsIDIzMSwgMTM4LCAxMiwgMTUsIDIzMSwgMTM3LCAxMiwgMTUsIAotICAgIDIzMSwgMTM2LCAxMiwgMTUsIDIzMSwgMTM1LCAxMiwgMTUsIDIzMSwgMTM0LCAxMiwgMTUsIDIzMSwgMTMzLCAxMiwgMTUsIAotICAgIDIzMSwgMTMyLCAxMiwgMTUsIDIzMSwgMTMxLCAxMiwgMTUsIDIzMSwgMTMwLCAxMiwgMTUsIDIzMSwgMTI5LCAxMiwgMTUsIAotICAgIDIzMSwgMTI4LCAxMiwgMTUsIDIzMSwgMTI3LCAxMiwgMTUsIDIzMSwgMTI2LCAxMiwgMTUsIDIzMSwgMTI1LCAxMiwgMTUsIAotICAgIDIzMSwgMTI0LCAxMiwgMTUsIDIzMSwgMTIzLCAxMiwgMTUsIDIzMSwgMTIyLCAxMiwgMTUsIDIzMSwgMTIxLCAxMiwgMTUsIAotICAgIDIzMSwgMTIwLCAxMiwgMTUsIDIzMSwgMTE5LCAxMiwgMTUsIDIzMSwgMTE4LCAxMiwgMTUsIDIzMSwgMTE3LCAxMiwgMTUsIAotICAgIDIzMSwgMTE2LCAxMiwgMTUsIDIzMSwgMTE1LCA4LCA1LCAzMiwgMjQwLCAzMCwgOCwgNSwgMzIsIDI0MCwgMjYsIDgsIDUsIAotICAgIDMyLCAyMzksIDIyOCwgOCwgNSwgMzIsIDI0MCwgMjksIDgsIDUsIDMyLCAyNDAsIDI4LCA4LCA1LCAzMiwgMTYzLCAyMTUsIAotICAgIDk0LCAyMTAsIDY5LCA4LCA1LCAzMiwgMjExLCAxMDgsIDE3OCwgNSwgMzIsIDIyNCwgMjQxLCAyMjEsIDE1MiwgMTc4LCA1LCAKLSAgICAzMiwgMjI0LCAyNDEsIDI0MSwgMTY3LCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjMxLCAxOSwgMTc4LCA1LCAzMiwgMjA1LCAKLSAgICAyMzUsIDIyMSwgMTUyLCAxNzgsIDUsIDMyLCAyMjQsIDI0MSwgMjAzLCAxNzQsIDExMCwgMSwgMjAyLCAyMzcsIDMsIDIzNiwgCi0gICAgMjMyLCAxMTAsIDIxOCwgNjMsIDIzMCwgODEsIDIwNiwgNjcsIDExMCwgMzIsIDIwMywgOSwgMjAyLCAyMzcsIDIwMiwgMjM3LCAKLSAgICAyMTksIDU0LCAxMTAsIDEsIDI1MCwgMjUwLCAyNTAsIDMsIDExMCwgMSwgMjA0LCAyNywgMjUxLCAzMCwgMTEwLCAxLCAyMDQsIAotICAgIDI3LCAyNDQsIDE3OCwgMTEwLCAxLCAyMDQsIDI3LCAyMzcsIDY3LCAxMTAsIDEsIDIwNCwgMjcsIDIzMCwgMjIsIDExMCwgMSwgCi0gICAgMjA0LCAyNywgMjI4LCAyMCwgMTEwLCAxLCAyMDQsIDI3LCA0NiwgMjI0LCAyNDcsIDExMCwgMSwgMjA0LCAyNywgMjE2LCAKLSAgICA5MSwgMTEwLCAxLCAyMDQsIDI3LCAyMDksIDIwMywgMTEwLCAxLCAyNTAsIDI1MCwgOTEsIDU0LCAxMTAsIDEsIDIxMywgMCwgCi0gICAgMywgMjEzLCAwLCAyNDMsIDg1LCAxMTAsIDEsIDIxMywgMCwgMywgMjEyLCAxMjQsIDI0MywgODUsIDExMCwgMSwgMjEzLCAwLCAKLSAgICAzLCAyNDQsIDE5OCwgMjUsIDIxMywgMCwgMjQzLCA4NSwgMTEwLCAxLCAyMTMsIDAsIDMsIDI0NCwgMTk4LCAyNSwgMjEyLCAKLSAgICAxMjQsIDI0MywgODUsIDExMCwgMSwgMTM3LCAzLCAyMTksIDU0LCAxMTAsIDEsIDEzNywgMywgMjE3LCAxMTQsIDExMCwgMSwgCi0gICAgMTM3LCAzLCAyMjUsIDEwNSwgMTEwLCAxLCAyNDgsIDEwOSwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjM4LCA2OCwgMywgMjQ0LCAKLSAgICAxOTcsIDExMCwgMSwgMjQ0LCAxNzksIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIzNywgNjgsIDMsIDIyNSwgMTA1LCAxMTAsIDEsIAotICAgIDIwNiwgNjAsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwMiwgOTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIwOSwgMTMzLCAzLCAKLSAgICAyNDQsIDE5NywgMTEwLCAxLCAyMDIsIDIzNywgMywgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIzMCwgMjMsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIzMCwgMjMsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIyOCwgMjEsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIAotICAgIDIyNCwgMjQ4LCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMjEsIDQxLCAzLCAyNDQsIDE5NywgMTEwLCAxLCAyMTQsIDI1MCwgMywgCi0gICAgMjQ0LCAxOTcsIDExMCwgMSwgNDYsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxOSwgMzUsIDMsIDI0NCwgMTk3LCAKLSAgICAxMTAsIDEsIDIwOCwgMTYsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNywgNzUsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxNiwgCi0gICAgOTIsIDMsIDI0NCwgMTk3LCAxMTAsIDEsIDIxMywgMCwgMywgMjQ0LCAxOTcsIDExMCwgMSwgMjA5LCAyMDQsIDMsIDI0NCwgCi0gICAgMTk3LCAxMTAsIDEsIDIwNiwgNjAsIDMsIDIzNiwgMTI4LCAxMTAsIDEsIDI0OCwgMTA5LCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAKLSAgICAyMzAsIDIzLCAzLCAyMTYsIDIwMCwgMTEwLCAxLCAyMTksIDM1LCAzLCAyMTYsIDIwMCwgMTEwLCAzMiwgMTM3LCAyMjgsIAotICAgIDIwLCAxMCwgMSwgMTM3LCAyMDQsIDg4LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDIwNCwgODgsIDQ2LCAxOCwgMTAsIDEsIDI0OCwgCi0gICAgMTQ5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDE0OSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxNDksIDgxLCAxOCwgMTAsIDEsIAotICAgIDI0OCwgMTQ5LCAxNzQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNjQsIDE4LCAxMCwgMSwgMjE5LCAxNywgNDYsIDE4LCAxMCwgMSwgCi0gICAgMjE5LCAxNywgODEsIDE4LCAxMCwgMSwgMjE5LCAxNywgMTc0LCAxOCwgMTAsIDEsIDI0OCwgMTM3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyNDgsIDEzNywgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzcsIDgxLCAxOCwgMTAsIDEsIDI0OCwgMTM3LCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA3LCAyMzIsIDY0LCAxOCwgMTAsIDEsIDIwNywgMjMyLCA0NiwgMTgsIDEwLCAxLCAyMDcsIDIzMiwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA3LCAyMzIsIDE3NCwgMTgsIDEwLCAxLCAyMDksIDE2OCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNjgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgMTY4LCA4MSwgMTgsIDEwLCAxLCAyMDksIDE2OCwgMTc0LCAxOCwgMTAsIDEsIDIwNywgMjM0LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDcsIDIzNCwgNDYsIDE4LCAxMCwgMSwgMjA3LCAyMzQsIDgxLCAxOCwgMTAsIDEsIDIwNywgCi0gICAgMjM0LCAxNzQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNjQsIDE4LCAxMCwgMSwgMjA2LCA0OSwgNDYsIDE4LCAxMCwgMSwgMjA2LCAKLSAgICA0OSwgODEsIDE4LCAxMCwgMSwgMjA2LCA0OSwgMTc0LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDY0LCAxOCwgMTAsIDEsIDIxOSwgCi0gICAgMTUsIDQ2LCAxOCwgMTAsIDEsIDIxOSwgMTUsIDgxLCAxOCwgMTAsIDEsIDIxOSwgMTUsIDE3NCwgMTgsIDEwLCAxLCAyNDIsIAotICAgIDYsIDY0LCAxOCwgMTAsIDEsIDI0MiwgNiwgNDYsIDE4LCAxMCwgMSwgMjQyLCA2LCA4MSwgMTgsIDEwLCAxLCAyNDIsIDYsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgNjQsIDE4LCAxMCwgMSwgMjIwLCAyNTUsIDQ2LCAxOCwgMTAsIDEsIDIyMCwgCi0gICAgMjU1LCA4MSwgMTgsIDEwLCAxLCAyMjAsIDI1NSwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgMTkyLCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDksIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxOTIsIDgxLCAxOCwgMTAsIDEsIDIwOSwgMTkyLCAxNzQsIDE4LCAxMCwgCi0gICAgMSwgMjA5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMDksIDE5MCwgODEsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAyNDQsIDExOCwgNjQsIDE4LCAxMCwgMSwgMjQ0LCAxMTgsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDI0NCwgMTkyLCA2NCwgMTgsIDEwLCAxLCAyNDQsIDE5MiwgNDYsIDE4LCAxMCwgMSwgMjQyLCAzNCwgNjQsIAotICAgIDE4LCAxMCwgMSwgMjQyLCAzNCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAxMTYsIDY0LCAxOCwgMTAsIDEsIDI0NCwgMTE2LCA0NiwgCi0gICAgMTgsIDEwLCAxLCAyMzAsIDE1NiwgNjQsIDE4LCAxMCwgMSwgMjMwLCAxNTYsIDQ2LCAxOCwgMTAsIDEsIDIxNSwgMTc4LCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMTUsIDE3OCwgNDYsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDY0LCAxOCwgMTAsIDEsIDIyOSwgCi0gICAgMTkwLCA0NiwgMTgsIDEwLCAxLCAyMjksIDE5MCwgODEsIDE4LCAxMCwgMSwgMjI5LCAxOTAsIDE3NCwgMTgsIDEwLCAxLCAKLSAgICAyMzgsIDI1MiwgNjQsIDE4LCAxMCwgMSwgMjM4LCAyNTIsIDQ2LCAxOCwgMTAsIDEsIDIzOCwgMjUyLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMzgsIDI1MiwgMTc0LCAxOCwgMTAsIDEsIDIzNywgMjE4LCA2NCwgMTgsIDEwLCAxLCAyMzcsIDIxOCwgNDYsIDE4LCAKLSAgICAxMCwgMSwgMjM3LCAyMTgsIDgxLCAxOCwgMTAsIDEsIDIzNywgMjE4LCAxNzQsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIyMiwgMTI3LCA0NiwgMTgsIDEwLCAxLCAyMjIsIDEyNywgODEsIDE4LCAxMCwgMSwgMjIyLCAxMjcsIAotICAgIDE3NCwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMjM4LCA4NiwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDIzOCwgODYsIDQ2LCAKLSAgICAxOCwgMTAsIDEsIDIxNSwgMjMxLCA2NCwgMTgsIDEwLCAxLCAyMTUsIDIzMSwgNDYsIDE4LCAxMCwgMSwgMjE1LCAyMzEsIAotICAgIDgxLCAxOCwgMTAsIDEsIDIxNSwgMjMxLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgMywgODksIDg3LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyMzcsIDQ0LCAzLCA4OSwgODcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIzNywgNDQsIDIzOCwgMzcsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDIzOCwgMzcsIDgxLCAxOCwgMTAsIDEsIDIzNywgCi0gICAgNDQsIDIzOCwgMzcsIDE3NCwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIDExMCwgNjQsIDE4LCAxMCwgMSwgMjM3LCA0NCwgCi0gICAgMjQzLCAxMTAsIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDI0MywgMTEwLCA4MSwgMTgsIDEwLCAxLCAyMzcsIDQ0LCAyNDMsIAotICAgIDExMCwgMTc0LCAxOCwgMTAsIDEsIDg5LCAyNDgsIDIyNCwgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCA0NiwgMTgsIAotICAgIDEwLCAxLCA4OSwgMjQ4LCAyMjQsIDMsIDIzNywgMTI4LCA4NywgNjQsIDE4LCAxMCwgMSwgODksIDI0OCwgMjI0LCAzLCAKLSAgICAyMzcsIDEyOCwgODcsIDQ2LCAxOCwgMTAsIDE2LCA3MCwgNTUsIDEwLCAxNiwgNzAsIDU2LCAxMCwgMTYsIDEyMCwgMTg3LCAKLSAgICA1NSwgMTAsIDE2LCAxMjAsIDE4NywgNTYsIDEwLCAxNiwgMTI2LCAxODcsIDU1LCAxMCwgMTYsIDEyNiwgMTg3LCA1NiwgMTAsIAotICAgIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NSwgMTAsIDE2LCAxMjYsIDE4NywgMjE4LCA1OSwgMTgzLCA1NiwgMTAsIAotICAgIDE2LCAyMzksIDE0NywgMTg3LCA1NSwgMTAsIDE2LCAyMzksIDE0NywgMTg3LCA1NiwgMTAsIDE2LCA1MiwgODAsIDI0OCwgCi0gICAgMjMxLCA1NiwgMTAsIDE2LCAxMjAsIDE4NywgMjA1LCAyNDQsIDU1LCAxMCwgMTYsIDEyMCwgMTg3LCAyMDUsIDI0NCwgNTYsIAotICAgIDEwLCAxNiwgMjE1LCAyNTIsIDEwLCAxNiwgNSwgMjA5LCAyNTIsIDU1LCAxMCwgMTYsIDUsIDIwOSwgMjUyLCA1NiwgMTAsIAotICAgIDEsIDIyMiwgMjA2LCA2NCwgMTgsIDEwLCAxLCAyMjIsIDIwNiwgNDYsIDE4LCAxMCwgMSwgMjIyLCAyMDYsIDgxLCAxOCwgCi0gICAgMTAsIDEsIDIyMiwgMjA2LCAxNzQsIDE4LCAxMCwgMSwgMTA2LCA2NCwgMTgsIDEwLCAxLCAxMDYsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAKLSAgICAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTA2LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIAotICAgIDY0LCAxOCwgMTAsIDEsIDIwNiwgNTYsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIyOSwgNzYsIDIyMCwgNzQsIDQ2LCAxOCwgMTAsIDEsIDIyOSwgNzYsIDIwMiwgMjE0LCA2NCwgMTgsIDEwLCAxLCAyMjksIAotICAgIDc2LCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMSwgMTg4LCA2NCwgMTgsIDEwLCAxLCAxODgsIDQ2LCAxOCwgMTAsIDEsIDE4OCwgCi0gICAgODEsIDE4LCAxMCwgMSwgMTg4LCAxNzQsIDE4LCAxMCwgMSwgMjA3LCAxNiwgMjI5LCAyMDUsIDIyOSwgNzYsIDEzNywgMjI1LCAKLSAgICAxMzAsIDgxLCAxOCwgMTAsIDEsIDIwNywgMTYsIDIyOSwgMjA1LCAyMjksIDc2LCAxMzcsIDIyNSwgMTMwLCAxNzQsIDE4LCAKLSAgICAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDI1MSwgMTEwLCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAxMTAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICAyMDQsIDcxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjA0LCA3MSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEwNiwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIyMCwgNzQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCAyMjAsIDc0LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjAyLCAKLSAgICAyMTQsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxNCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDE4OCwgODEsIDE4LCAxMCwgMzIsIDIwNywgMTYsIAotICAgIDIyOSwgNzYsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMDcsIDE2LCAKLSAgICAyMjksIDc2LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA3LCAxNiwgCi0gICAgMjI5LCA3NiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTM3LCAyMjUsIDEzMCwgODEsIDE4LCAxMCwgMSwgMjQwLCA3NSwgCi0gICAgODksIDY0LCAxOCwgMTAsIDEsIDI0MCwgNzUsIDg5LCA0NiwgMTgsIDEwLCAxLCAyNDAsIDc1LCA4OSwgODEsIDE4LCAxMCwgCi0gICAgMSwgMjQwLCA3NSwgODksIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIAotICAgIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDE4NCwgNjQsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgODksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgODksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAxODQsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxNTEsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMjksIDE0MSwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjE0LCAxNjIsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNCwgMTYyLCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgCi0gICAgMjksIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgCi0gICAgODMsIDY0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjAyLCAxMTEsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCA2NCwgMTgsIAotICAgIDEwLCAzMiwgMjUxLCA2MCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjM4LCAxMTUsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjQwLCAKLSAgICA0OCwgMywgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyNDAsIAotICAgIDQ4LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAKLSAgICAyNDAsIDQ4LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDIxNywgMTIwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDE4NCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIAotICAgIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMjI4LCAyOSwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIAotICAgIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIzMCwgCi0gICAgMjMsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTUxLCA2NCwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAKLSAgICA4MywgNjQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA2NCwgMTgsIAotICAgIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA2NCwgMTgsIDEwLCAzMiwgODMsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCA4MywgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjksIAotICAgIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgCi0gICAgMTg0LCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODMsIDY0LCAxOCwgMTAsIDMyLCAyMzcsIDQ0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCA4OSwgMywgMTg0LCA2NCwgCi0gICAgMTgsIDEwLCAzMiwgODksIDMsIDE1MSwgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIAotICAgIDg5LCAzLCA4MywgNjQsIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjA5LCAxMDEsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAxOCwgMTAsIDMyLCAyMTYsIDEyMywgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNjQsIDE4LCAxMCwgMzIsIDEzNywgMjI1LCAxMzAsIDMsIDIxMCwgMTk5LCAxMzcsIDY0LCAKLSAgICAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDIyOSwgMjI4LCAKLSAgICA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjQwLCA3MiwgNjQsIDE4LCAxMCwgMzIsIDIxMywgODEsIDMsIDI0NCwgCi0gICAgMTczLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA4MSwgMywgMjI5LCAyMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAKLSAgICAyMTAsIDE5OSwgMTM3LCA2NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjE2LCAxMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIAotICAgIDEyOCwgODcsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIxLCAxNzksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIAotICAgIDIzNywgMTI4LCA4NywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjAyLCAxMDgsIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyNDgsIDEzOSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgCi0gICAgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgODksIAotICAgIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDg5LCAzLCAKLSAgICAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDAsIDQ4LCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIAotICAgIDEyMCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNywgMTIwLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIzMCwgMjMsIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDIyOCwgMjksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMzAsIDIzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMzAsIDIzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAKLSAgICAyOSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIAotICAgIDMsIDEzNywgNDYsIDE4LCAxMCwgMzIsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMTYsIDEyMywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAyMjEsIDE3OSwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTM3LCAyMjUsIDEzMCwgCi0gICAgMywgMjEwLCAxOTksIDEzNywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAKLSAgICAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMjEsIDE3OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDg5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgCi0gICAgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDIzNywgCi0gICAgNDQsIDgxLCAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjQ4LCAxMzksIDMsIDE1MSwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIAotICAgIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjM3LCA0NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgCi0gICAgMTAsIDMyLCAyMTUsIDI5LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAKLSAgICAyNDQsIDIwOCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjQ0LCAyMDgsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIwMiwgCi0gICAgMTExLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDI0MCwgNDgsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyMTcsIDEyMCwgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMjMwLCAKLSAgICAyMywgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgMjMwLCAyMywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIAotICAgIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAxODQsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgCi0gICAgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAKLSAgICAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgCi0gICAgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjM3LCA0NCwgMywgMjEwLCAKLSAgICAxOTksIDEzNywgODEsIDE4LCAxMCwgMzIsIDg5LCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgODksIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgODksIAotICAgIDMsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDMyLCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMzcsIDQ0LCAxNzQsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCA4MywgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCAyNDgsIDEzOSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjA5LCA4OSwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgMTc0LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCAyMjgsIDI5LCAKLSAgICAxNzQsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAxNzQsIAotICAgIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMTc0LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMjM3LCA0NCwgMTc0LCAKLSAgICAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDE3NCwgMTgsIDEwLCAzMiwgODksIDMsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAzMiwgCi0gICAgMjEzLCA4MSwgMywgMjQwLCA3MiwgMTc0LCAxOCwgMTAsIDMyLCAyMTMsIDgxLCAzLCAyNDQsIDE3MywgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDgxLCAzLCAyMjksIDIzMCwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgMTM3LCAyMjUsIDEzMCwgCi0gICAgNjQsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDEzNywgMjI1LCAKLSAgICAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAKLSAgICAzLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4OSwgNjQsIDE4LCAxMCwgMzIsIDIyOSwgMTQxLCAzLCAxMzcsIAotICAgIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTM3LCAyMjUsIDEzMCwgNjQsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDg5LCA2NCwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIAotICAgIDMsIDEzNywgMjI1LCAxMzAsIDY0LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgODksIDY0LCAxOCwgMTAsIDMyLCAyMTMsIAotICAgIDQwLCAzLCAxODQsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAxNTEsIDY0LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCA2NCwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgCi0gICAgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjE2LCAxMjMsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDI5LCAKLSAgICAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMjUyLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjUxLCA2MCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDg5LCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjM4LCAxMTUsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTQsIDE2MiwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4OSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4OSwgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE1MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDg5LCA0NiwgMTgsIAotICAgIDEwLCAzMiwgMjI5LCAxNDEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjksIDE0MSwgMywgODksIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIDIwOCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAKLSAgICA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDIyOSwgMTQxLCA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgODMsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMTMsIDQwLCAzLCAyMTYsIDEyMywgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMTYsIDEyMywgNDYsIAotICAgIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDIxNiwgMTIzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIxNiwgMTIzLCAKLSAgICA0NiwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMjI5LCAxNDEsIDgxLCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIxNCwgMTYyLCAzLCAyMzcsIDQ0LCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMjM3LCA0NCwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAxODQsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIDMyLCAyMTQsIDE2MiwgMywgMjI5LCAxNDEsIDE3NCwgMTgsIAotICAgIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAxNzQsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMTc0LCAxOCwgMTAsIAotICAgIDMyLCAyMTMsIDQwLCAzLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDE3NCwgMTgsIDEwLCAKLSAgICAzMiwgMjAyLCAxMTEsIDMsIDgzLCAxNzQsIDE4LCAxMCwgMzIsIDEzNywgMywgMjQwLCA3MCwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDEzNywgMywgMjQwLCA3MCwgNjQsIDE4LCAyMTksIDIzMSwgNDksIDIxOSwgNzYsIDIxOSwgMjMxLCA1MCwgMjE5LCA3NiwgCi0gICAgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIAotICAgIDE4NCwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCAxNTEsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAKLSAgICAzLCAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgODMsIDMsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgCi0gICAgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCA4MywgMywgMTUxLCA4MSwgMTgsIDEwLCAzMiwgMTUxLCAzLCA4MywgMywgCi0gICAgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAKLSAgICAxNjIsIDMsIDE1MSwgMywgMTg0LCA4MSwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAKLSAgICA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjE0LCAxNjIsIDMsIDgzLCAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMTQsIAotICAgIDE2MiwgMywgODMsIDMsIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMTQsIDE2MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgMTUxLCAzLCAxNTEsIDQ2LCAKLSAgICAxOCwgMTAsIDMyLCAyMTUsIDI5LCAzLCAxNTEsIDMsIDE1MSwgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAzLCAKLSAgICA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMTMsIDQwLCAzLCAKLSAgICAxNTEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjEzLCA0MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgCi0gICAgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCAyMjksIDE0MSwgODEsIAotICAgIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDgzLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDI0NCwgMjA4LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjQ0LCAyMDgsIDMsIDIyOSwgMTQxLCAzLCA4MywgCi0gICAgODEsIDE4LCAxMCwgMzIsIDIwOSwgMjUyLCAzLCA4MywgMywgMTUxLCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCAyMDksIDI1MiwgMywgODMsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjA5LCAyNTIsIAotICAgIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI1MSwgNjAsIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyNTEsIDYwLCAzLCA4MywgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIAotICAgIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIzOCwgMTE1LCAzLCA4MywgMywgCi0gICAgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMzgsIDExNSwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjM4LCAxMTUsIDMsIAotICAgIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA0NiwgCi0gICAgMTgsIDEwLCAzMiwgMjQwLCA0OCwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjE3LCAxMjAsIDMsIDgzLCAKLSAgICAzLCAxNTEsIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTUxLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAKLSAgICAyMjgsIDI5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxODQsIDMsIAotICAgIDE4NCwgODEsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgMTg0LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMjI5LCAxNDEsIDMsIDgzLCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgMjI5LCAxNDEsIDMsIDgzLCA4MSwgMTgsIDEwLCAKLSAgICAzMiwgMjI4LCAyOSwgMywgODMsIDMsIDE1MSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDgzLCAzLCAxNTEsIDgxLCAKLSAgICAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTUxLCAzLCA4MywgODEsIAotICAgIDE4LCAxMCwgMzIsIDgzLCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgMTUxLCA4MSwgCi0gICAgMTgsIDEwLCAzMiwgODMsIDMsIDE4NCwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDE4NCwgCi0gICAgODEsIDE4LCAxMCwgMzIsIDgzLCAzLCAyMjksIDE0MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMTg0LCAzLCAKLSAgICAyMjksIDE0MSwgODEsIDE4LCAxMCwgMzIsIDIzNywgNDQsIDMsIDgzLCAzLCAxODQsIDgxLCAxOCwgMTAsIDMyLCAyMzcsIAotICAgIDQ0LCAzLCA4MywgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTUxLCAzLCA4MywgODEsIDE4LCAxMCwgCi0gICAgMzIsIDIyMSwgMTc5LCAzLCAxNTEsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCAxODQsIDMsIDgzLCA4MSwgMTgsIDEwLCAzMiwgMjIxLCAxNzksIAotICAgIDMsIDE4NCwgMywgMTM3LCAyMjUsIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDIyMSwgMTc5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAyMjEsIDE3OSwgMywgODMsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgODMsIDMsIAotICAgIDgzLCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDI0OCwgMTM5LCAzLCAyMjksIAotICAgIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgCi0gICAgMTcwLCAzLCAxODQsIDMsIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAyMDksIDE3MCwgMywgMjI5LCAxNDEsIDMsIAotICAgIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjA5LCAxNzAsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjA5LCAxNzAsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIwOSwgMTcwLCAzLCA4MywgMywgMTM3LCAyMjUsIAotICAgIDEzMCwgNDYsIDE4LCAxMCwgMzIsIDE4NCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMTg0LCAzLCAxNTEsIDMsIAotICAgIDEzNywgMjI1LCAxMzAsIDQ2LCAxOCwgMTAsIDMyLCAxODQsIDMsIDgzLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAKLSAgICAzMiwgMjE0LCAxNjIsIDMsIDIyOSwgMTQxLCAzLCAxMzcsIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAzMiwgMjE1LCAyOSwgMywgCi0gICAgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxMywgNDAsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyNDQsIAotICAgIDIwOCwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgMTAsIAotICAgIDMyLCAyMjgsIDI5LCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCA4OSwgMywgMTUxLCAzLCA4OSwgNDYsIDE4LCAxMCwgCi0gICAgMzIsIDg5LCAzLCAxODQsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgODksIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIAotICAgIDgzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgCi0gICAgMjIxLCAxNzksIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMTcsIDEyMCwgMywgODMsIDMsIDE1MSwgODEsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDE1MSwgMywgODMsIDgxLCAxOCwgMTAsIDMyLCAyNTEsIDYwLCAzLCA4MywgMywgODksIAotICAgIDQ2LCAxOCwgMTAsIDMyLCAyMzAsIDIzLCAzLCA4MywgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAKLSAgICAzLCAxNTEsIDgxLCAxOCwgMTAsIDMyLCA4MywgMywgMjI5LCAxNDEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgCi0gICAgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIzMCwgMjMsIDMsIDgzLCAzLCA4MywgNDYsIDE4LCAxMCwgMzIsIAotICAgIDIyOCwgMjksIDMsIDE4NCwgMywgODMsIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIDE3OSwgMywgMTg0LCAzLCAxNTEsIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCAxODQsIDMsIDE1MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAxNTEsIDMsIDE4NCwgMywgODksIDQ2LCAxOCwgCi0gICAgMTAsIDMyLCA4MywgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDI0MCwgNDgsIDMsIDgzLCAzLCA4OSwgNDYsIDE4LCAKLSAgICAxMCwgMzIsIDI0OCwgMTM5LCAzLCAxNTEsIDMsIDg5LCA0NiwgMTgsIDEwLCAzMiwgMjMwLCAyMywgMywgODMsIDMsIDgzLCAKLSAgICA4MSwgMTgsIDEwLCAzMiwgMjUxLCA2MCwgMywgMTg0LCAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNSwgMjksIDMsIDgzLCAKLSAgICAzLCA4MywgODEsIDE4LCAxMCwgMzIsIDIxNCwgMTYyLCAzLCAyMjksIDE0MSwgMywgODksIDQ2LCAxOCwgMTAsIDMyLCAyMjEsIAotICAgIDE3OSwgMywgMTg0LCAzLCA4OSwgNDYsIDE4LCAxMCwgMzIsIDIxNSwgNCwgMjA2LCAxODgsIDI1MCwgODIsIDIyOCwgMjU0LCAKLSAgICAyMTEsIDYyLCAyLCA2NCwgMTgsIDEwLCAzMiwgMjE3LCAxMTYsIDIwNiwgMTg4LCAyNTAsIDgyLCAyMjgsIDI1NCwgMjExLCAKLSAgICA2MiwgMiwgNjQsIDE4LCAxMCwgMzIsIDI1MSwgMTMsIDY0LCAxOCwgMTAsIDMyLCAyNTEsIDQ0LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI0LCA1NywgNjQsIDE4LCAxMCwgMzIsIDIxNSwgNSwgNjQsIDE4LCAxMCwgMzIsIDIxNiwgMTc0LCA2NCwgMTgsIDEwLCAKLSAgICAzMiwgMjUxLCAzMywgNjQsIDE4LCAxMCwgMzIsIDIwNCwgOTAsIDY0LCAxOCwgMTAsIDMyLCAyMTUsIDQsIDY0LCAxOCwgMTAsIAotICAgIDMyLCAyMTUsIDMsIDI1MSwgMzMsIDIwNCwgODksIDEwLCAzMiwgMjMwLCAxNzIsIDIxNiwgNTYsIDU0LCAxMCwgMzIsIDI0OCwgCi0gICAgNTMsIDI1MCwgMTQyLCAyNTAsIDE0MywgNTcsIDIxNCwgMTQ5LCA1NywgMjE0LCAzOCwgNTcsIDIxMywgMjI2LCA1NywgMjEzLCAKLSAgICAyMTUsIDU3LCAyMTMsIDIwNCwgNTcsIDIxMywgMTkzLCA1NywgMjEzLCAxODIsIDU3LCAyMTMsIDE3MSwgNTcsIDIxMywgCi0gICAgMTYwLCA1NywgMjE0LCAxNDgsIDU3LCAyMTQsIDEzNywgNTcsIDIxNCwgMTI2LCA1NywgMjE0LCAxMTUsIDU3LCAyMTQsIAotICAgIDEwNCwgNTcsIDIxNCwgOTMsIDU3LCAyMTQsIDgyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQ1LCAyMzMsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAxMzksIDI0NSwgMjMzLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMTM5LCAKLSAgICAyMzksIDEwMiwgMjExLCA2MSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDI0NSwgMjQyLCAyMTcsIDI0MSwgMjM5LCAKLSAgICAxNTksIDM1LCA4MCwgMjEzLCAxNDMsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyNDAsIDIxMiwgODIsIDIxNywgCi0gICAgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAyMTcsIDQ3LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjI3LCAxODUsIDI0NywgMjI1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjM2LCAxMDYsIDI0MSwgMTA4LCAzOSwgMzIsIDQ5LCAyMzcsIDEzNywgMzksIAotICAgIDMyLCA1MCwgMjM3LCAxMzcsIDM5LCA1MiwgMjA4LCAyMjgsIDQ5LCAyMzcsIDEzNywgMzksIDUyLCAyMDgsIDIyOCwgNTAsIAotICAgIDIzNywgMTM3LCAzOSwgMjI1LCAxNzEsIDQ5LCAyMzcsIDEzNywgMzksIDIyNSwgMTcxLCA1MCwgMjM3LCAxMzcsIDM5LCAKLSAgICAyNDUsIDIwNiwgMjI1LCAxNzAsIDM5LCAzMiwgNDksIDE2MiwgNTYsIDM5LCAzMiwgNTAsIDE2MiwgNTYsIDM5LCAyMDgsIAotICAgIDIyOCwgNDksIDE2MiwgNTYsIDM5LCAyMDgsIDIyOCwgNTAsIDE2MiwgNTYsIDM5LCAyMjUsIDE3MSwgNDksIDE2MiwgNTYsIAotICAgIDM5LCAyMjUsIDE3MSwgNTAsIDE2MiwgNTYsIDM5LCAyNDUsIDIwNiwgMjI1LCAxNzEsIDU2LCAzOSwgMzYsIDIwOCwgMTk4LCAKLSAgICA0OSwgMjM3LCAxMzcsIDM5LCAzNiwgMjA4LCAxOTgsIDUwLCAyMzcsIDEzNywgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIAotICAgIDEyMCwgNzAsIDIyNywgMjMyLCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCAxMDQsIDI0NCwgMTQ0LCAyMTcsIAotICAgIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjQxLCA5MywgMjQ0LCAxNDQsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCAKLSAgICAxMjQsIDIyNywgMTE0LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgMjA0LCA3MiwgMTI0LCAyMjcsIDExNCwgMjE3LCAKLSAgICAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMTksIDc2LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIxOSwgCi0gICAgNzYsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgMjQ1LCA5MywgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCAKLSAgICA4MCwgNTAsIDI0NSwgOTMsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCAyMDgsIDEzMywgMjEzLCAzMywgCi0gICAgMTU1LCAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDIxNywgMjQxLCAKLSAgICAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgCi0gICAgNjIsIDIyNywgMTg1LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA0OSwgNTIsIDI1MCwgMjE4LCAxNTUsIAotICAgIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIDgwLCA1MCwgNTIsIDI1MCwgMjE4LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgCi0gICAgMzUsIDgwLCA0OSwgMjUwLCAyMTgsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCAyNTAsIDIxOCwgMTU1LCAKLSAgICAyMTcsIDI0MSwgMjM5LCAxNTksIDM1LCA4MCwgNDksIDI0NSwgMTY2LCAxNTUsIDIxNywgMjQxLCAyMzksIDE1OSwgMzUsIAotICAgIDgwLCA1MCwgMjQ1LCAxNjYsIDE1NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA2MSwgMjQ1LCAxNjYsIDE1NSwgCi0gICAgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgMjQ1LCAxNjYsIDE1NSwgMjEzLCAxMjEsIDI0MywgODUsIDYxLCAKLSAgICAyMTMsIDEyMSwgMjQzLCA4NSwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDQ5LCA1MSwgMTU1LCAyMTcsIDI0MSwgCi0gICAgMjM5LCAxNTksIDM1LCA4MCwgNTAsIDUxLCAxNTUsIDI0NCwgMTQzLCAyMTksIDE5OCwgMjQ2LCAyMTQsIDIxOSwgMTk4LCAKLSAgICAyMDQsIDcyLCAyMTksIDE5OCwgNTIsIDIwNCwgNzIsIDIxOSwgMTk4LCAyNDQsIDE0MywgMTI0LCAyMjcsIDExNCwgMjQ2LCAKLSAgICAyMTQsIDEyNCwgMjI3LCAxMTQsIDIwNCwgNzIsIDEyNCwgMjI3LCAxMTQsIDUsIDI0NSwgMjMzLCA1LCAxMzksIDI0NSwgCi0gICAgMjMzLCA1LCAyMzksIDEwMiwgMjExLCA2MSwgNSwgMjEzLCAxNDMsIDUsIDI0NSwgMjQyLCA1LCAyMTcsIDQ3LCA4MiwgNSwgCi0gICAgMjQwLCAyMTIsIDgyLCA1LCAyNDEsIDEwNCwgMjQ0LCAxNDQsIDUsIDQ5LCAyMTksIDc2LCA1LCA1MCwgMjE5LCA3NiwgNSwgCi0gICAgNDksIDI0NSwgOTMsIDE1NSwgNSwgNTAsIDI0NSwgOTMsIDE1NSwgNSwgNDksIDIwOCwgMTMzLCAyMTMsIDMzLCAxNTUsIDUsIAotICAgIDUwLCAyMDgsIDEzMywgMjEzLCAzMywgMTU1LCA1LCA0MiwgNTQsIDUsIDI1MCwgMjM1LCA1LCAyNTAsIDU5LCA1LCA5MSwgCi0gICAgNTQsIDUsIDIzNSwgMjE5LCA1LCAyMjcsIDE3OSwgNTQsIDUsIDIzNywgMjQ3LCA1NCwgNSwgMjQxLCAzNSwgNTQsIDUsIAotICAgIDIxNiwgNzQsIDIxMiwgMCwgNSwgMjQzLCA5NywgNTQsIDUsIDIxOCwgMjQ2LCA1NCwgNSwgMjQ1LCAyMzEsIDI1MCwgNDksIAotICAgIDEwLCAyNDAsIDcwLCA2NCwgMTgsIDEwLCAyMDksIDIxMCwgMywgMjQwLCA3MCwgNTUsIDEwLCAyNDQsIDE3MSwgNjQsIDE4LCAKLSAgICAxMCwgMjA5LCAyNDksIDIzOSwgMTM3LCAxMCwgMjI5LCAyMjgsIDY0LCAxOCwgMTAsIDI0MCwgNzIsIDY0LCAxOCwgMTAsIAotICAgIDI0MCwgNzIsIDE3NCwgMTgsIDEwLCAyNDQsIDE3MywgNjQsIDE4LCAxMCwgMjQ0LCAxNzMsIDE3NCwgMTgsIDEwLCAyMjksIAotICAgIDIzMCwgNjQsIDE4LCAxMCwgMjI5LCAyMzAsIDE3NCwgMTgsIDEwLCAyMTMsIDgxLCA2NCwgMTgsIDEwLCAyMTMsIDgxLCAKLSAgICAxNzQsIDE4LCAxMCwgMjEwLCAyMjMsIDY0LCAxOCwgMTAsIDIxMCwgMjIzLCAxNzQsIDE4LCAxMCwgMSwgMjM3LCAxMjgsIAotICAgIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDEzNywgMywgMjM3LCAxMjgsIDg3LCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMDQsIDcxLCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDEsIDIwNCwgNzEsIDMsIDIzNywgCi0gICAgMTI4LCA4NywgNDYsIDE4LCAxMCwgMSwgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDY0LCAxOCwgMTAsIDEsIDEzNywgCi0gICAgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA2NCwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCA0NiwgMTgsIDEwLCAxLCA4OSwgMywgMjM3LCAxMjgsIDg3LCA4MSwgMTgsIDEwLCAxLCAKLSAgICA4OSwgMywgMjM3LCAxMjgsIDg3LCAxNzQsIDE4LCAxMCwgMSwgMTM3LCA2NCwgMTgsIDEwLCAxLCAxMzcsIDQ2LCAxOCwgMTAsIAotICAgIDEsIDI0OCwgMTM5LCA2NCwgMTgsIDEwLCAxLCAyNDgsIDEzOSwgNDYsIDE4LCAxMCwgMSwgMjQ4LCAxMzksIDgxLCAxOCwgCi0gICAgMTAsIDEsIDI0OCwgMTM5LCAxNzQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDIyNSwgOTksIDY0LCAxOCwgMTAsIDEsIDIwOSwgCi0gICAgMTcwLCAyMjUsIDk5LCA0NiwgMTgsIDEwLCAxLCAyMDksIDE3MCwgNjQsIDE4LCAxMCwgMSwgMjA5LCAxNzAsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIwOSwgMTcwLCA4MSwgMTgsIDEwLCAxLCAyMDksIDE3MCwgMTc0LCAxOCwgMTAsIDEsIDIwOSwgODksIDY0LCAKLSAgICAxOCwgMTAsIDEsIDIwOSwgODksIDQ2LCAxOCwgMTAsIDEsIDIwOSwgODksIDgxLCAxOCwgMTAsIDEsIDIwOSwgODksIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAxODQsIDY0LCAxOCwgMTAsIDEsIDE4NCwgNDYsIDE4LCAxMCwgMSwgMTg0LCA4MSwgMTgsIDEwLCAxLCAKLSAgICAxODQsIDE3NCwgMTgsIDEwLCAxLCAxNTEsIDY0LCAxOCwgMTAsIDEsIDE1MSwgNDYsIDE4LCAxMCwgMSwgMTUxLCA4MSwgMTgsIAotICAgIDEwLCAxLCAxNTEsIDE3NCwgMTgsIDEwLCAxLCAyMjksIDE0MSwgNjQsIDE4LCAxMCwgMSwgMjI5LCAxNDEsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIyOSwgMTQxLCA4MSwgMTgsIDEwLCAxLCAyMjksIDE0MSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMTg1LCA2NCwgCi0gICAgMTgsIDEwLCAxLCAyNDQsIDE4NSwgNDYsIDE4LCAxMCwgMSwgMjA5LCAxMDEsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMTAxLCAKLSAgICA0NiwgMTgsIDEwLCAxLCAyMTYsIDEyMywgNjQsIDE4LCAxMCwgMSwgMjE2LCAxMjMsIDQ2LCAxOCwgMTAsIDEsIDIwMiwgCi0gICAgMTA4LCA2NCwgMTgsIDEwLCAxLCAyMDIsIDEwOCwgNDYsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDY0LCAxOCwgMTAsIDEsIAotICAgIDIxNCwgMTYyLCA0NiwgMTgsIDEwLCAxLCAyMTQsIDE2MiwgODEsIDE4LCAxMCwgMSwgMjE0LCAxNjIsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCA2NCwgMTgsIDEwLCAxLCAyMTMsIDQwLCA0NiwgMTgsIDEwLCAxLCAyMTMsIDQwLCA4MSwgMTgsIDEwLCAKLSAgICAxLCAyMTMsIDQwLCAxNzQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNjQsIDE4LCAxMCwgMSwgMjE1LCAyOSwgNDYsIDE4LCAxMCwgCi0gICAgMSwgMjE1LCAyOSwgODEsIDE4LCAxMCwgMSwgMjE1LCAyOSwgMTc0LCAxOCwgMTAsIDEsIDI0NCwgMjA4LCA2NCwgMTgsIDEwLCAKLSAgICAxLCAyNDQsIDIwOCwgNDYsIDE4LCAxMCwgMSwgMjQ0LCAyMDgsIDgxLCAxOCwgMTAsIDEsIDI0NCwgMjA4LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgMjA5LCAyNTIsIDY0LCAxOCwgMTAsIDEsIDIwOSwgMjUyLCA0NiwgMTgsIDEwLCAxLCAyMDksIDI1MiwgODEsIAotICAgIDE4LCAxMCwgMSwgMjA5LCAyNTIsIDE3NCwgMTgsIDEwLCAxLCAyMDIsIDExMSwgNjQsIDE4LCAxMCwgMSwgMjAyLCAxMTEsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIwMiwgMTExLCA4MSwgMTgsIDEwLCAxLCAyMDIsIDExMSwgMTc0LCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDY0LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDQ2LCAxOCwgMTAsIDEsIDI1MSwgNjAsIDgxLCAxOCwgMTAsIDEsIDI1MSwgCi0gICAgNjAsIDE3NCwgMTgsIDEwLCAxLCAyMzgsIDExNSwgNjQsIDE4LCAxMCwgMSwgMjM4LCAxMTUsIDQ2LCAxOCwgMTAsIDEsIAotICAgIDIzOCwgMTE1LCA4MSwgMTgsIDEwLCAxLCAyMzgsIDExNSwgMTc0LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDY0LCAxOCwgMTAsIAotICAgIDEsIDI0MCwgNDgsIDQ2LCAxOCwgMTAsIDEsIDI0MCwgNDgsIDgxLCAxOCwgMTAsIDEsIDI0MCwgNDgsIDE3NCwgMTgsIDEwLCAKLSAgICAxLCAyMTcsIDEyMCwgNjQsIDE4LCAxMCwgMSwgMjE3LCAxMjAsIDQ2LCAxOCwgMTAsIDEsIDIxNywgMTIwLCA4MSwgMTgsIAotICAgIDEwLCAxLCAyMTcsIDEyMCwgMTc0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDY0LCAxOCwgMTAsIDEsIDIzMCwgMjMsIDQ2LCAxOCwgCi0gICAgMTAsIDEsIDIzMCwgMjMsIDgxLCAxOCwgMTAsIDEsIDIzMCwgMjMsIDE3NCwgMTgsIDEwLCAxLCAyMjgsIDI5LCA2NCwgMTgsIAotICAgIDEwLCAxLCAyMjgsIDI5LCA0NiwgMTgsIDEwLCAxLCAyMjgsIDI5LCA4MSwgMTgsIDEwLCAxLCAyMjgsIDI5LCAxNzQsIDE4LCAKLSAgICAxMCwgMSwgODMsIDY0LCAxOCwgMTAsIDEsIDgzLCA0NiwgMTgsIDEwLCAxLCA4MywgODEsIDE4LCAxMCwgMSwgODMsIDE3NCwgCi0gICAgMTgsIDEwLCAxLCAyMjEsIDE3OSwgNjQsIDE4LCAxMCwgMSwgMjIxLCAxNzksIDQ2LCAxOCwgMTAsIDEsIDIyMSwgMTc5LCAKLSAgICA4MSwgMTgsIDEwLCAxLCAyMjEsIDE3OSwgMTc0LCAxOCwgMTAsIDEsIDIzNywgNDQsIDY0LCAxOCwgMTAsIDEsIDIzNywgNDQsIAotICAgIDQ2LCAxOCwgMTAsIDEsIDIzNywgNDQsIDgxLCAxOCwgMTAsIDEsIDIzNywgNDQsIDE3NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCAKLSAgICA2NCwgMTgsIDEwLCAxLCAyMDQsIDcxLCA0NiwgMTgsIDEwLCAxLCAxMzcsIDIyNSwgMTMwLCA2NCwgMTgsIDEwLCAxLCAxMzcsIAotICAgIDIyNSwgMTMwLCA0NiwgMTgsIDEwLCAxLCA4OSwgNjQsIDE4LCAxMCwgMSwgODksIDQ2LCAxOCwgMTAsIDEsIDg5LCA4MSwgCi0gICAgMTgsIDEwLCAxLCA4OSwgMTc0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIyNSwgMTY2LCA4NywgNjQsIDE4LCAKLSAgICAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjI1LCAxNjYsIDg3LCA0NiwgMTgsIDEwLCAzMiwgMjI4LCAyOSwgMywgCi0gICAgMTM3LCAzLCAyMzcsIDEyOCwgODcsIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDMsIDIzNywgMTI4LCA4NywgCi0gICAgNDYsIDE4LCAxMCwgMzIsIDIyOCwgMjksIDMsIDEzNywgMywgMjM3LCAxMjgsIDI0OCwgMTI2LCA2NCwgMTgsIDEwLCAzMiwgCi0gICAgMjI4LCAyOSwgMywgMTM3LCAzLCAyMzcsIDEyOCwgMjQ4LCAxMjYsIDQ2LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIAotICAgIDY0LCAxOCwgMTAsIDMyLCAyMjgsIDI5LCAzLCAxMzcsIDQ2LCAxOCwgMjAyLCA4NSwgMjA0LCAyNCwgMjIxLCAxOTAsIDIxMSwgCi0gICAgMjI4LCAxNTQsIDI0MCwgMjEyLCA4MiwgMTU0LCAyMTcsIDMxLCA4MiwgMTU0LCA0MiwgNTQsIDE1NCwgMjQzLCA5NywgNTQsIAotICAgIDE1NCwgMjE4LCAyNDYsIDU0LCAxNTQsIDI1MCwgMjM1LCAxNTQsIDI1MCwgMTYwLCAxNTQsIDQ5LCAyMTksIDc2LCAxNTQsIAotICAgIDUwLCAyMTksIDc2LCAxNTQsIDI1MCwgNTksIDE1NCwgOTEsIDU0LCAxNTQsIDI0NSwgMjMzLCAxNTQsIDIzNSwgMjE5LCAKLSAgICAxNTQsIDIzOSwgMTAyLCAyMTEsIDYxLCAxNTQsIDIxMiwgMCwgMTU0LCAxNywgMjAyLCA4NCwgMTU0LCAxNywgMTA1LCAxNTQsIAotICAgIDE3LCAxMDgsIDE1NCwgMTcsIDE0NywgMTU0LCAxNywgMTQ5LCAxNTQsIDE3LCAxNzAsIDE1NCwgMTcsIDE5NSwgMTU0LCAxNywgCi0gICAgMjEzLCAxMTEsIDE1NCwgMTcsIDE5OSwgMTU0LCAxNywgMjIyLCA2MywgMTU0LCAyNDUsIDI0MiwgMTU0LCAyMTMsIDE0MywgCi0gICAgMTU0LCAyMjcsIDE3OSwgNTQsIDE1NCwgMjQxLCAzNSwgNTQsIDE1NCwgMjM3LCAyNDcsIDU0LCAxNTQsIDIxNywgNDcsIDgyLCAKLSAgICAxNTQsIDI0NSwgMjMxLCAyNTAsIDQ5LCAxNTQsIDgsIDYsIDEsIDYzLCAxNTQsIDgsIDYsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIAotICAgIDYsIDEsIDI0NywgMTI1LCAxNTQsIDgsIDYsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNiwgMSwgNzQsIDE1NCwgOCwgNiwgMSwgCi0gICAgMjQwLCAxNzQsIDE1NCwgOCwgNiwgMSwgMjM5LCA3NSwgMTU0LCA4LCA2LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA2LCAxLCAKLSAgICA3NSwgMTU0LCA4LCA2LCAxLCAyMzAsIDE4NCwgMTU0LCA4LCA2LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDYsIDEsIDE1OSwgCi0gICAgMTU0LCA4LCA2LCAxLCAyMjYsIDE4NSwgMTU0LCA4LCA2LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA2LCAxLCA3OCwgMTU0LCA4LCAKLSAgICA2LCAxLCAyMTksIDE4NCwgMTU0LCA4LCA2LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA2LCAxLCAxNDYsIDE1NCwgOCwgNiwgMSwgCi0gICAgMTk0LCAxNTQsIDgsIDYsIDEsIDIxMCwgNjksIDE1NCwgOCwgNiwgMSwgNjgsIDE1NCwgOCwgNiwgMSwgMjA2LCAxNjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjA0LCAxNDQsIDE1NCwgOCwgNiwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNiwgMSwgMjAzLCAxMjQsIAotICAgIDE1NCwgOCwgNiwgMSwgMjAyLCAxNTksIDE1NCwgNDksIDUxLCAxNTUsIDE1NCwgMjE2LCA3NCwgMjEyLCAwLCAxNTQsIDUwLCAKLSAgICA1MSwgMTU1LCAxNTQsIDI0NiwgNTMsIDI1MSwgMTM4LCAxNTQsIDEyNCwgMjI3LCAxMTQsIDE1NCwgMjM3LCAyNTQsIDI1MSwgCi0gICAgMTM4LCAxNTQsIDgsIDUsIDEsIDYzLCAxNTQsIDgsIDUsIDEsIDI0OSwgMjU1LCAxNTQsIDgsIDUsIDEsIDI0NywgMTI1LCAKLSAgICAxNTQsIDgsIDUsIDEsIDI0NSwgNTEsIDE1NCwgOCwgNSwgMSwgNzQsIDE1NCwgOCwgNSwgMSwgMjQwLCAxNzQsIDE1NCwgOCwgCi0gICAgNSwgMSwgMjM5LCA3NSwgMTU0LCA4LCA1LCAxLCAyMzcsIDE3MSwgMTU0LCA4LCA1LCAxLCA3NSwgMTU0LCA4LCA1LCAxLCAKLSAgICAyMzAsIDE4NCwgMTU0LCA4LCA1LCAxLCAyMzAsIDU0LCAxNTQsIDgsIDUsIDEsIDE1OSwgMTU0LCA4LCA1LCAxLCAyMjYsIAotICAgIDE4NSwgMTU0LCA4LCA1LCAxLCAyMjMsIDE2MywgMTU0LCA4LCA1LCAxLCA3OCwgMTU0LCA4LCA1LCAxLCAyMTksIDE4NCwgCi0gICAgMTU0LCA4LCA1LCAxLCAyMTcsIDEzNCwgMTU0LCA4LCA1LCAxLCAxNDYsIDE1NCwgOCwgNSwgMSwgMTk0LCAxNTQsIDgsIDUsIAotICAgIDEsIDIxMCwgNjksIDE1NCwgOCwgNSwgMSwgNjgsIDE1NCwgOCwgNSwgMSwgMjA2LCAxNjQsIDE1NCwgOCwgNSwgMSwgMjA0LCAKLSAgICAxNDQsIDE1NCwgOCwgNSwgMSwgMjAzLCAxOTYsIDE1NCwgOCwgNSwgMSwgMjAzLCAxMjQsIDE1NCwgOCwgNSwgMSwgMjAyLCAKLSAgICAxNTksIDE1NCwgNDksIDI0NSwgOTMsIDE1NSwgMTU0LCA4MCwgMjI3LCAxMTQsIDE1NCwgNTAsIDI0NSwgOTMsIDE1NSwgCi0gICAgMTU0LCAyMDgsIDIyNywgMTU0LCA0OSwgNjEsIDIxOSwgNzYsIDE1NCwgNTAsIDYxLCAyMTksIDc2LCAxMjcsIDEzOSwgMjM5LCAKLSAgICAxMDIsIDIxMSwgNjEsIDEyNywgNDksIDI0NSwgMTY2LCAxNTUsIDEyNywgNTAsIDI0NSwgMTY2LCAxNTUsIDEyNywgMTM5LCAKLSAgICAyNDUsIDIzMywgMTI3LCA2NywgMTAxLCAyNDMsIDg1LCAxMjcsIDY3LCAxLCAyMDQsIDAsIDEyNywgNjcsIDEsIDUsIDYzLCAKLSAgICAxMjcsIDY3LCAxLCA1LCA3NSwgMTI3LCA2NywgMSwgNSwgNjgsIDEyNywgNjcsIDEsIDUsIDc0LCAxMjcsIDY3LCAxLCA1LCAKLSAgICA3OCwgMTI3LCA2NywgMSwgNSwgMTk4LCAxMjcsIDY3LCAxLCA1LCAyMDIsIDIxMywgMTI3LCA2NywgMSwgNSwgMjAyLCAyNDcsIAotICAgIDEyNywgNjcsIDEsIDUsIDIwNywgMjAzLCAxMjcsIDIyOSwgMjI1LCAyMTcsIDIxNSwgMjExLCAyNDEsIDgyLCAxMjcsIDY3LCAKLSAgICAxLCA2MywgMTI3LCA2NywgMSwgNzUsIDEyNywgNjcsIDEsIDY4LCAxMjcsIDY3LCAxLCA3NCwgMTI3LCA2NywgMSwgNzgsIAotICAgIDEyNywgNjcsIDEsIDE3MywgMTI3LCA2NywgMSwgMjI5LCAxMDAsIDEyNywgNjcsIDEsIDIyOCwgMjA5LCAxMjcsIDY3LCAxLCAKLSAgICAyMjksIDIwMSwgMTI3LCA2NywgMSwgMjI5LCAyNiwgMTI3LCA2NywgMSwgMjE1LCAzNiwgMTI3LCA2NywgMSwgMjEyLCAxNjIsIAotICAgIDEyNywgNjcsIDEsIDIxMSwgMTAsIDEyNywgNjcsIDEsIDIxNCwgMTc3LCAxMjcsIDY3LCAxLCAyMTIsIDEzLCAxMjcsIDY3LCAKLSAgICAxLCAyMTAsIDIyLCAxMjcsIDY3LCAxLCAyMDksIDIsIDEyNywgNjcsIDEsIDIwNywgMjAzLCAxMjcsIDY3LCAxLCAyMDksIAotICAgIDE4NywgMTI3LCA2NywgMSwgMTM1LCAxMjcsIDY3LCAxLCAyMDEsIDIwMSwgMTI3LCA2NywgMSwgMjIyLCAxMDAsIDEyNywgCi0gICAgNjcsIDEsIDIyMSwgODQsIDEyNywgNjcsIDEsIDIyMiwgMjQwLCAxMjcsIDY3LCAxLCAyMjEsIDE5MSwgMTI3LCA2NywgMSwgCi0gICAgMTUyLCAxMjcsIDY3LCAxLCAyMzcsIDMsIDEyNywgNjcsIDEsIDIzNiwgMjYsIDEyNywgNjcsIDEsIDIzNywgNjcsIDEyNywgCi0gICAgNjcsIDEsIDIzNiwgMTM2LCAxMjcsIDY3LCAxLCAxOTIsIDEyNywgNjcsIDEsIDIyNCwgMTU1LCAxMjcsIDY3LCAxLCAyMjMsIAotICAgIDI0NiwgMTI3LCA2NywgMSwgMjI1LCAyMCwgMTI3LCA2NywgMSwgMjI0LCA4MiwgMTI3LCA2NywgMSwgMTk4LCAxMjcsIDY3LCAKLSAgICAxLCAyMDIsIDIxMywgMTI3LCA2NywgMSwgMjAyLCAyNDcsIDEyNywgNjcsIDEsIDIxNiwgMjIwLCAxMjcsIDY3LCAxLCAyMTYsIAotICAgIDU3LCAxMjcsIDY3LCAxLCAyMTUsIDE0NSwgMTI3LCA2NywgMSwgMjE2LCAxNTgsIDEyNywgNjcsIDEsIDIxNSwgMjI3LCAKLSAgICAxMjcsIDY3LCAxLCAyMDQsIDExMSwgMTI3LCA2NywgMSwgMjIzLCAxNjMsIDEyNywgNjcsIDIwNSwgMTg2LCAyMTEsIDI0MSwgCi0gICAgODIsIDEyNywgNjcsIDIxMywgMTQ4LCAyMTEsIDI0MSwgODIsIDEyNywgMjgsIDI0MCwgNywgMTI3LCAyOCwgMSwgMjI5LCAKLSAgICA1OSwgMTI3LCAyOCwgMSwgMjExLCAxNTYsIDEyNywgMjgsIDEsIDIyOSwgNTIsIDEyNywgMjgsIDEsIDIyMiwgOTMsIDEyNywgCi0gICAgMjgsIDEsIDIyMiwgOTEsIDEyNywgMjgsIDEsIDIyMiwgOTAsIDEyNywgMjgsIDEsIDIwOCwgMjQwLCAxMjcsIDI4LCAxLCAKLSAgICAyMTEsIDE0NSwgMTI3LCAyOCwgMSwgMjE2LCA0NywgMTI3LCAyOCwgMSwgMjE2LCA0MiwgMTI3LCAyOCwgMSwgMjE2LCAzOSwgCi0gICAgMTI3LCAyOCwgMSwgMjE2LCAzMiwgMTI3LCAyOCwgMSwgMjE2LCAyNywgMTI3LCAyOCwgMSwgMjE2LCAyMiwgMTI3LCAyOCwgCi0gICAgMSwgMjE2LCAzMywgMTI3LCAyOCwgMSwgMjE2LCA0NSwgMTI3LCAyOCwgMSwgMjI0LCAxNDEsIDEyNywgMjgsIDEsIDIxOCwgCi0gICAgMTUzLCAxMjcsIDI4LCAxLCAyMTEsIDE1MywgMTI3LCAyOCwgMSwgMjE4LCAxNDIsIDEyNywgMjgsIDEsIDIxMiwgMTExLCAKLSAgICAxMjcsIDI4LCAxLCAyMTEsIDE1MCwgMTI3LCAyOCwgMSwgMjMxLCAxMDYsIDEyNywgMjgsIDEsIDI0NiwgNzQsIDEyNywgMjgsIAotICAgIDEsIDIxMSwgMTYwLCAxMjcsIDI4LCAxLCAyNDYsIDEzOCwgMTI3LCAyOCwgMSwgMjI5LCAxMjAsIDEyNywgMjgsIDEsIDIwOSwgCi0gICAgNjYsIDEyNywgMjgsIDEsIDIxOCwgMTkwLCAxMjcsIDI4LCAxLCAyMzYsIDI1MSwgMTI3LCAyOCwgMSwgNjMsIDEyNywgMjgsIAotICAgIDEsIDI1MSwgMTA5LCAxMjcsIDI4LCAxLCAxOTgsIDEyNywgMjgsIDEsIDIwMywgOTksIDEyNywgMjgsIDEsIDI0MSwgNTUsIAotICAgIDEyNywgMjgsIDEsIDc0LCAxMjcsIDI4LCAxLCAyMDMsIDM5LCAxMjcsIDI4LCAxLCAyMDMsIDUyLCAxMjcsIDI4LCAxLCA3OCwgCi0gICAgMTI3LCAyOCwgMSwgMjA0LCAxMTEsIDEyNywgMjgsIDEsIDIwNCwgMTA3LCAxMjcsIDI4LCAxLCAyMjAsIDczLCAxMjcsIDI4LCAKLSAgICAxLCAyMDIsIDI0NywgMTI3LCAyOCwgMSwgNjgsIDEyNywgMjgsIDEsIDIwNCwgNDgsIDEyNywgMjgsIDEsIDIwNCwgNjIsIAotICAgIDEyNywgMjgsIDEsIDIwNCwgMzAsIDEyNywgMjgsIDEsIDIwMiwgMjEzLCAxMjcsIDI4LCAxLCAyNDAsIDIzOCwgMTI3LCAyOCwgCi0gICAgMSwgMjAzLCAxMSwgMTI3LCAyOCwgMSwgNzUsIDE1NCwgMjQ2LCAyMjAsIDU0LCAxNTQsIDIxOCwgMjAsIDU0LCAxNTQsIAotICAgIDIyMSwgMTY2LCA1NCwgMTU0LCAyMjUsIDE3MCwgMTU0LCAyNDcsIDIwMywgMTQyLCAxNTQsIDIwMywgNDMsIDU0LCAxNTQsIAotICAgIDIwMywgMjQ2LCA1NCwgMTI3LCAyMzksIDE1NiwgMTU3LCAyMDYsIDM4LCAxMjcsIDk2LCA0NywgMTI3LCAxNzcsIDQ3LCAKLSAgICAxMjcsIDg2LCA0NywgMTI3LCAxODMsIDQ3LCAxMjcsIDYyLCAyMTEsIDE3NywgMTI3LCA2MSwgMjQ2LCA2MSwgMjMwLCAyNTEsIAotICAgIDI1MCwgMjA1LCAyNTAsIDIyOCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAyMTMsIDEzMCwgMjMwLCAyNTEsIDI1MCwgMjA1LCAKLSAgICAyMDksIDEzOCwgMjIwLCA5MCwgMjE2LCA5NiwgMjQ2LCAxODIsIDIxNiwgOTYsIDI0NiwgMTgyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjM5LCA2MywgMjksIDY2LCA0LCAyNDksIDIwOCwgNzQsIDI5LCA2NiwgNCwgMjQ5LCAyMTcsIDc1LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMTg1LCA3OCwgMjksIDY2LCA0LCAyNDksIDIzNSwgNjgsIDI5LCA2NiwgNCwgMjQ5LCAyNTQsIDI0NCwgMjEyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjAxLCAyNDQsIDc1LCAyOSwgNjYsIDQsIDI0OSwgMjQxLCAyNDMsIDIzMywgMjksIDY2LCA0LCAyNDksIAotICAgIDIzMSwgMjQzLCAxMTMsIDI5LCA2NiwgNCwgMjQ5LCAxOTUsIDI0MiwgNDIsIDI5LCA2NiwgNCwgMjQ5LCAxODksIDIzMCwgCi0gICAgMTgxLCAyOSwgNjYsIDQsIDI0OSwgMjAwLCAyMzAsIDE2MSwgMjksIDY2LCA0LCAyNDksIDIxMCwgMjMwLCAxMDEsIDI5LCAKLSAgICA2NiwgNCwgMjQ5LCAxODEsIDIzMCwgODIsIDI5LCA2NiwgNCwgMjQ5LCAxNjksIDE3MywgMjksIDY2LCA0LCAyNDksIDIwMiwgCi0gICAgMjI5LCAyMDEsIDI5LCA2NiwgNCwgMjQ5LCAxNzksIDIyOSwgMTAwLCAyOSwgNjYsIDQsIDI0OSwgMTc2LCAyMjksIDI2LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMTY1LCAyMjgsIDIwOSwgMjksIDY2LCA0LCAyNDksIDE2NiwgMTkyLCAyOSwgNjYsIDQsIDI0OSwgCi0gICAgMjMyLCAyMjUsIDIwLCAyOSwgNjYsIDQsIDI0OSwgMTczLCAyMjQsIDE1NSwgMjksIDY2LCA0LCAyNDksIDIzMCwgMjI0LCAKLSAgICA4MiwgMjksIDY2LCA0LCAyNDksIDIyMiwgMjIzLCAyNDYsIDI5LCA2NiwgNCwgMjQ5LCAyNDMsIDIwMSwgMjAxLCAyOSwgNjYsIAotICAgIDQsIDI0OSwgMjIxLCAyMjIsIDI0MCwgMjksIDY2LCA0LCAyNDksIDIxNSwgMjIyLCAxMDAsIDI5LCA2NiwgNCwgMjQ5LCAKLSAgICAxOTQsIDIyMSwgMTkxLCAyOSwgNjYsIDQsIDI0OSwgMTkxLCAyMjEsIDg0LCAyOSwgNjYsIDQsIDI0OSwgMjUwLCAxODUsIAotICAgIDI5LCA2NiwgNCwgMjQ5LCAxNzQsIDIxOSwgMzQsIDI5LCA2NiwgNCwgMjQ5LCAyMDcsIDIxOCwgMTY3LCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjM0LCAyMTgsIDY5LCAyOSwgNjYsIDQsIDI0OSwgMTk2LCAyMTcsIDE5MSwgMjksIDY2LCA0LCAyNDksIDIyOSwgCi0gICAgMjE3LCAxMjYsIDI5LCA2NiwgNCwgMjQ5LCAxNjgsIDIxNywgMTA2LCAyOSwgNjYsIDQsIDI0OSwgMjI0LCAyMTcsIDg4LCAKLSAgICAyOSwgNjYsIDQsIDI0OSwgMjEzLCAyMTcsIDc3LCAyOSwgNjYsIDQsIDI0OSwgMTg2LCAyMTYsIDIyMCwgMjksIDY2LCA0LCAKLSAgICAyNDksIDIxOCwgMjE2LCAxNTgsIDI5LCA2NiwgNCwgMjQ5LCAxOTMsIDIxNiwgNTcsIDI5LCA2NiwgNCwgMjQ5LCAyNTIsIAotICAgIDIxNSwgMjI3LCAyOSwgNjYsIDQsIDI0OSwgMjE5LCAyMTUsIDE0NSwgMjksIDY2LCA0LCAyNDksIDIxNCwgMjE1LCAzNiwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIzNywgMjE0LCAxNzcsIDI5LCA2NiwgNCwgMjQ5LCAyMDUsIDIxMiwgMTYyLCAyOSwgNjYsIDQsIAotICAgIDI0OSwgMjMzLCAyMTIsIDEzLCAyOSwgNjYsIDQsIDI0OSwgMTg4LCAyMTEsIDEwLCAyOSwgNjYsIDQsIDI0OSwgMTg3LCAKLSAgICAyMTAsIDIyLCAyOSwgNjYsIDQsIDI0OSwgMjQ4LCAyMDksIDE4NywgMjksIDY2LCA0LCAyNDksIDIwOSwgMjA5LCAyLCAyOSwgCi0gICAgNjYsIDQsIDI0OSwgMjQ2LCAxMzUsIDI5LCA2NiwgNCwgMjQ5LCAxNzcsIDIwNywgMjAzLCAyOSwgNjYsIDQsIDI0OSwgMTkyLCAKLSAgICAyMDQsIDExMSwgMjksIDY2LCA0LCAyNDksIDE3MSwgMjA0LCA2MiwgMjksIDY2LCA0LCAyNDksIDIwNiwgMjA0LCAzMCwgMjksIAotICAgIDY2LCA0LCAyNDksIDIwNCwgMjA0LCAwLCAyOSwgNjYsIDQsIDI0OSwgMjI4LCAyMDIsIDExNiwgMjksIDY2LCA0LCAyNDksIAotICAgIDE3MiwgMjAyLCA5MiwgMjksIDY2LCA0LCAyNDksIDIyNSwgMjAyLCAxNywgMjksIDY2LCA0LCAyNDksIDIyMCwgMjU0LCAzNCwgCi0gICAgMjksIDY2LCA0LCAyNDksIDIwMywgMjUzLCAxNzgsIDI5LCA2NiwgNCwgMjQ5LCAxNjIsIDI1MCwgMzQsIDI5LCA2NiwgNCwgCi0gICAgMjQ5LCAxNzUsIDI0MiwgOSwgMjksIDY2LCA0LCAyNDksIDE1OCwgMjQyLCA4LCAyOSwgNjYsIDQsIDI0OSwgMTk4LCAyMjEsIAotICAgIDIwLCAyOSwgNjYsIDQsIDI0OSwgMjE2LCAyMTcsIDE4OSwgMjksIDY2LCA0LCAyNDksIDE4NCwgMjE3LCAxOTMsIDI5LCA2NiwgCi0gICAgNCwgMjQ5LCAxNzAsIDIxNiwgMjE4LCAyOSwgNjYsIDQsIDI0OSwgMjEyLCAyMTYsIDIxNywgMjksIDY2LCA0LCAyNDksIAotICAgIDE3OCwgMjE1LCAyMjYsIDI5LCA2NiwgNCwgMjQ5LCAxODAsIDIxMCwgMTksIDI5LCA2NiwgNCwgMjQ5LCAxNjAsIDIwNywgCi0gICAgMTU4LCAyOSwgNjYsIDQsIDI0OSwgMTU3LCAxMDgsIDI5LCA2NiwgMTYsIDI0OSwgMjI3LCAyOSwgNjYsIDE2LCAyNDksIAotICAgIDIyNiwgMjksIDY2LCAxNiwgMjQ5LCAyMjMsIDI5LCA2NiwgMTYsIDI0OSwgMjExLCAyOSwgNjYsIDE2LCAyNDksIDE5OSwgCi0gICAgMjksIDY2LCAxNiwgMjQ5LCAxOTcsIDI5LCA2NiwgMTYsIDI0OSwgMTkwLCAyOSwgNjYsIDE2LCAyNDksIDE4MywgMjksIDY2LCAKLSAgICAxNiwgMjQ5LCAxODIsIDI5LCA2NiwgMTYsIDI0OSwgMTY3LCAyOSwgNjYsIDE2LCAyNDksIDE2NCwgMjksIDY2LCAxNiwgCi0gICAgMjQ5LCAxNjMsIDI5LCA2NiwgMTYsIDI0OSwgMTYxLCAyOSwgNjYsIDE2LCAyNDksIDE1OSwgMjksIDY2LCAxMzMsIDI0OSwgCi0gICAgMTU2LCAyMjUsIDEyMiwgMjksIDY2LCAxMzMsIDI0OSwgMTU1LCAyMDMsIDI1MCwgMjksIDY2LCAxMzMsIDI0OSwgMTU0LCAKLSAgICAyNDQsIDU4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNTMsIDI0MSwgMzIsIDI5LCA2NiwgMTMzLCAyNDksIDE1MiwgMjI1LCA5MywgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTUxLCAyMTEsIDEwMSwgMjksIDY2LCAxMzMsIDI0OSwgMTUwLCAyNDAsIDIxOSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTQ5LCAyMTYsIDE4NCwgMjksIDY2LCAxMzMsIDI0OSwgMTQ4LCAyMTMsIDQyLCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxNDcsIDIzNywgNjYsIDI5LCA2NiwgMTMzLCAyNDksIDE0NiwgMjExLCAyMzUsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDE0NSwgMjQ4LCAyMSwgMjksIDY2LCAxMzMsIDI0OSwgMTQ0LCAyNDUsIDE0OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQzLCAKLSAgICAyNDcsIDE3OSwgMjksIDY2LCAxMzMsIDI0OSwgMTQyLCAyMDQsIDM4LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDEsIDI0OCwgCi0gICAgMjI3LCAyOSwgNjYsIDEzMywgMjQ5LCAxNDAsIDIyMCwgNDEsIDI5LCA2NiwgMTMzLCAyNDksIDEzOSwgMjExLCAyMDcsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEzOCwgMjQ1LCA1OSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzNywgMjI5LCAyNDksIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCAxMzYsIDIzMCwgMiwgMjksIDY2LCAxMzMsIDI0OSwgMTM1LCAyMjAsIDU1LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCAxMzQsIDIwNCwgMTIsIDI5LCA2NiwgMTMzLCAyNDksIDEzMywgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDEzMiwgMjUwLCAKLSAgICAxMTksIDI5LCA2NiwgMjI0LCA0NSwgMjQ5LCAxMzEsIDIyNCwgMjMyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMzAsIDI0NywgCi0gICAgMjAyLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjksIDIzOCwgMzEsIDI5LCA2NiwgMTMzLCAyNDksIDEyOCwgMjksIDY2LCAxMzMsIAotICAgIDI0OSwgMTI3LCAyMDMsIDI0MSwgMjksIDY2LCAxMzMsIDI0OSwgMTI2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMjUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDEyNCwgMjM2LCA1MywgMjksIDY2LCAxMzMsIDI0OSwgMTIzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMjIsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDEyMSwgMjksIDY2LCAyMjQsIDQ1LCAyNDksIDExOSwgMjA3LCAxNzIsIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDExOCwgMjksIDY2LCAxMzMsIDI0OSwgMTE3LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTYsIDI0NiwgMTAsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDExNSwgMjksIDY2LCAxMzMsIDI0OSwgMTE0LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTMsIDIzOCwgMjIxLCAyOSwgNjYsIAotICAgIDEzMywgMjQ5LCAxMTIsIDI1MCwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMTEsIDI5LCA2NiwgMTMzLCAyNDksIDExMCwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgMTA5LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDgsIDI5LCA2NiwgMTMzLCAyNDksIDEwNywgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTA2LCAyOSwgNjYsIDEzMywgMjQ5LCAxMDUsIDI5LCA2NiwgMTMzLCAyNDksIDEwNCwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgMTAzLCAyOSwgNjYsIDEzMywgMjQ5LCAxMDIsIDIyNCwgMzcsIDI5LCA2NiwgMTMzLCAyNDksIDEwMSwgMjksIAotICAgIDY2LCAxMzMsIDI0OSwgMTAwLCAyMDgsIDk1LCAyOSwgNjYsIDEzMywgMjQ5LCA5OSwgMjksIDY2LCAxMzMsIDI0OSwgOTgsIAotICAgIDI5LCA2NiwgMTMzLCAyNDksIDk3LCAyOSwgNjYsIDEzMywgMjQ5LCA5NiwgMjksIDY2LCAxMzMsIDI0OSwgOTUsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDk0LCAyOSwgNjYsIDEzMywgMjQ5LCA5MywgMjksIDY2LCAxMzMsIDI0OSwgOTIsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDkxLCAyOSwgNjYsIDEzMywgMjQ5LCA5MCwgMjksIDY2LCAxMzMsIDI0OSwgODksIDI5LCA2NiwgMTMzLCAyNDksIAotICAgIDg4LCAyMzcsIDM1LCAyOSwgNjYsIDEzMywgMjQ5LCA2NywgMjM5LCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDY0LCAyNDgsIAotICAgIDIwNCwgMjksIDY2LCAxMzMsIDI0OSwgNTksIDIxMSwgMjE0LCAyOSwgNjYsIDEzMywgMjQ5LCA1OCwgNDcsIDI5LCA2NiwgCi0gICAgMTMzLCAyNDksIDU3LCAyOSwgNjYsIDEzMywgMjQ5LCA1NiwgMjEwLCAxNTUsIDI5LCA2NiwgMTMzLCAyNDksIDU1LCAyOSwgCi0gICAgNjYsIDEzMywgMjQ5LCA1NCwgMjksIDY2LCAxMzMsIDI0OSwgNTMsIDIwNCwgMzQsIDI0NiwgMTc5LCAyOSwgNjYsIDEzMywgCi0gICAgMjQ5LCA1MiwgMjQ2LCAxNzksIDI5LCA2NiwgMTMzLCAyNDksIDUxLCAyNDYsIDE4MCwgMjM5LCAxMzQsIDI5LCA2NiwgMTMzLCAKLSAgICAyNDksIDUwLCAyMDQsIDM2LCAyOSwgNjYsIDEzMywgMjQ5LCA0OSwgMjksIDY2LCAxMzMsIDI0OSwgNDgsIDI5LCA2NiwgCi0gICAgMjI0LCA0NSwgMjQ5LCA0NywgMjQzLCAxNjgsIDI5LCA2NiwgMTMzLCAyNDksIDQ2LCAyOSwgNjYsIDEzMywgMjQ5LCA0NSwgCi0gICAgMjksIDY2LCAxMzMsIDI0OSwgNDMsIDI5LCA2NiwgMTMzLCAyNDksIDQyLCAyOSwgNjYsIDEzMywgMjQ5LCA0MSwgMjksIDY2LCAKLSAgICAxMzMsIDI0OSwgNDAsIDI0NCwgMTQ3LCAyOSwgNjYsIDEzMywgMjQ5LCAzOSwgMjksIDY2LCAxMzMsIDI0OSwgMzgsIDI5LCAKLSAgICA2NiwgMTMzLCAyNDksIDM3LCAyOSwgNjYsIDEzMywgMjQ5LCAzNiwgMjksIDY2LCAxMzMsIDI0OSwgMzUsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCAxMjAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4NywgMjksIDY2LCAxMzMsIAotICAgIDIwNSwgMjQxLCAyNDksIDg2LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODUsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgCi0gICAgMjQ5LCA4NCwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgODIsIAotICAgIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA4MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDgwLCAyOSwgNjYsIAotICAgIDEzMywgMjA1LCAyNDEsIDI0OSwgNzksIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3OCwgMjksIDY2LCAxMzMsIDIwNSwgCi0gICAgMjQxLCAyNDksIDc3LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAKLSAgICA3NSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDc0LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNzMsIDI5LCAKLSAgICA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA3MiwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDcxLCAyOSwgNjYsIDEzMywgCi0gICAgMjA1LCAyNDEsIDI0OSwgNzAsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2OSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAKLSAgICAyNDksIDY4LCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjYsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2NSwgCi0gICAgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYzLCAyOSwgNjYsIDEzMywgMjA1LCAyNDEsIDI0OSwgNjIsIDI5LCA2NiwgCi0gICAgMTMzLCAyMDUsIDI0MSwgMjQ5LCA2MSwgMjksIDY2LCAxMzMsIDIwNSwgMjQxLCAyNDksIDYwLCAyOSwgNjYsIDEzMywgMjA1LCAKLSAgICAyNDEsIDI0OSwgNDQsIDI5LCA2NiwgMTMzLCAyMDUsIDI0MSwgMjQ5LCAzNCwgMjUxLCAxMDIsIDIwMywgMjM4LCAyMTMsIAotICAgIDEzMSwgMjI3LCAxMTQsIDI1MSwgMTAyLCAyMDMsIDIzOCwgMjEzLCAxMzEsIDI0MywgODUsIDI1MSwgMTAyLCAyNDYsIDE2OSwgCi0gICAgODIsIDI1MSwgMTAyLCA0MiwgMTA1LCAyNTEsIDEwMiwgNDIsIDEwOCwgMjUxLCAxMDIsIDQyLCAxNDcsIDI1MSwgMTAyLCAKLSAgICA0MiwgMTQ5LCAyNTEsIDEwMiwgNDIsIDE3MCwgMjUxLCAxMDIsIDQyLCAxOTUsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTk5LCAyNTEsIDEwMiwgNDIsIDIyMiwgNjMsIDI1MSwgMTAyLCA0MiwgMjA5LCAxNTIsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjA3LCAxNTEsIDI1MSwgMTAyLCA0MiwgMjA5LCA1MywgMjUxLCAxMDIsIDQyLCAyMzksIDE1MywgMjUxLCAKLSAgICAxMDIsIDQyLCAyNDAsIDE4LCAyNTEsIDEwMiwgNDIsIDIxMiwgNzQsIDI1MSwgMTAyLCA0MiwgMjEzLCAxMDUsIDI1MSwgCi0gICAgMTAyLCA0MiwgMjQxLCAxMzQsIDI1MSwgMTAyLCA0MiwgMjIyLCA1OCwgMjUxLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIAotICAgIDI1MSwgMTAyLCA0MiwgMTIwLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDEyNiwgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAKLSAgICAyMzksIDE0NywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMzksIDIzMywgMjM2LCAxMSwgMjUxLCAxMDIsIDQyLCAyMTIsIAotICAgIDg4LCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIxMywgMTEyLCAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDI0MSwgMTQzLCAKLSAgICAyMzYsIDExLCAyNTEsIDEwMiwgNDIsIDIyMiwgNjQsIDIzNiwgMTEsIDI1MSwgMTAyLCA0MiwgMTE4LCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDEyMCwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAxMjYsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAKLSAgICAxNDcsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjM5LCAyMzMsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjEyLCA4OCwgCi0gICAgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTMsIDExMiwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyNDEsIDE0MywgMjA5LCAKLSAgICAzNiwgMjUxLCAxMDIsIDQyLCAyMjIsIDY0LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgMTUzLCAyMDksIDM2LCAyNTEsIAotICAgIDEwMiwgNDIsIDIwNywgMTUyLCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIwOSwgNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgCi0gICAgMjM5LCAxNTQsIDIwOSwgMzYsIDI1MSwgMTAyLCA0MiwgMjQwLCAxOSwgMjA5LCAzNiwgMjUxLCAxMDIsIDQyLCAyMTIsIDc1LCAKLSAgICAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDIxMywgMTA2LCAyMDksIDM2LCAyNTEsIDEwMiwgNDIsIDI0MSwgMTM1LCAyMDksIAotICAgIDM2LCAyNTEsIDEwMiwgNDIsIDIyMiwgNTksIDIwOSwgMzYsIDI1MSwgMTAyLCAyMDQsIDUxLCAyNDgsIDIxOSwgMjA2LCAKLSAgICAyMzUsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMzksIDI0NSwgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMTQsIDE3MSwgCi0gICAgMjEwLCAyNDAsIDI1MSwgMTAyLCAyMDQsIDUxLCAyMDksIDYxLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIwNCwgNTEsIDIzOSwgCi0gICAgMTQwLCAyMTAsIDI0MCwgMjUxLCAxMDIsIDI0MiwgNDUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIAotICAgIDIyNywgOTUsIDIyNSwgMTksIDIzOSwgMjQ1LCAyMTAsIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIxNCwgMTcxLCAyMTAsIAotICAgIDI0MCwgMjUxLCAxMDIsIDIyNSwgMTksIDIwOSwgNjEsIDIxMCwgMjQwLCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDExOCwgCi0gICAgMjE3LCA1NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNywgMTM3LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIAotICAgIDExOCwgMjQyLCA2NSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxNzAsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOCwgCi0gICAgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMSwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyNDAsIDE5LCAyMDksIDM2LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDIzOSwgMjMzLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMDksIDE1MywgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMzYsIAotICAgIDEyLCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAyMzcsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMDksIDIzNywgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAyMzksIAotICAgIDIzMywgMjA5LCAzNywgMjA5LCAyMzcsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjM5LCAyMzMsIDIxMSwgODgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjQwLCAxOSwgCi0gICAgMjExLCA4OCwgMzAsIDI1MSwgMTI5LCAyNTAsIDM2LCAxMTgsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAKLSAgICAzNiwgMjM5LCAyMzMsIDIzNiwgMTIsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMTE4LCAyMDksIDM3LCAyMTEsIAotICAgIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgMzYsIDIwOSwgMTUzLCAyMDksIDM3LCAyMTEsIDg4LCAzMCwgMjUxLCAxMjksIDI1MCwgCi0gICAgMzYsIDI0MCwgMTksIDIwOSwgMzcsIDIxMSwgODgsIDMwLCAyNTEsIDEyOSwgMjUwLCAzNiwgMjA5LCAxNTMsIDIyNCwgODUsIAotICAgIDMwLCAyNTEsIDEyOSwgMjM3LCAyOSwgMTE4LCAyMTgsIDg2LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDEwNSwgMzAsIDI1MSwgCi0gICAgMTI5LCAyMzcsIDI1LCAxMDUsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTA4LCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIAotICAgIDEwOCwgMzAsIDI1MSwgMTI5LCAyNDUsIDU2LCAxMjAsIDI0MiwgNjQsIDMwLCAyNTEsIDEyOSwgMjQxLCA0MSwgMTIwLCAKLSAgICAyNDIsIDY0LCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDE3MCwgMzAsIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MiwgMzAsIAotICAgIDI1MSwgMTI5LCAyMDgsIDYxLCAyMDksIDE1MywgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDIwOSwgCi0gICAgMTUyLCAzMCwgMjUxLCAxMjksIDIyNCwgMjIyLCAyMDksIDE1MiwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDE1MiwgCi0gICAgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAyMDksIDUzLCAzMCwgMjUxLCAxMjksIDIwOCwgNjEsIDI0MCwgMTgsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA4LCA2MSwgMjQwLCAxOSwgMjUwLCAyNTUsIDE4LCAzMCwgMjUxLCAxMjksIDIzNywgMjUsIDI0MCwgMTgsIDMwLCAKLSAgICAyNTEsIDEyOSwgMjA5LCA3NiwgMjQwLCAxOCwgMzAsIDI1MSwgMTI5LCAyMDksIDc2LCAxMTgsIDIzNiwgMTEsIDMwLCAyNTEsIAotICAgIDEyOSwgMjA5LCA3NiwgMTI2LCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0MSwgNDEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgCi0gICAgMjUxLCAxMjksIDIwOCwgNjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDIzOSwgMjMzLCAKLSAgICAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDI0NywgMjEsIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIyMywgNjAsIAotICAgIDIzOSwgMjMzLCAyMzYsIDExLCAzMCwgMjUxLCAxMjksIDIwOSwgNzYsIDExOCwgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAKLSAgICAyMDksIDc2LCAyMzksIDIzMywgMjA5LCAzNiwgMzAsIDI1MSwgMTI5LCAyNDQsIDQwLCAyMzksIDIzMywgMjI0LCA4NSwgMzAsIAotICAgIDI1MSwgMTI5LCAyMTEsIDQ5LCAyNDAsIDE5LCAyMjQsIDg1LCAzMCwgMTE4LCAxNjIsIDU0LCAzMCwgMTE4LCAxNjIsIDIsIAotICAgIDI1MCwgMjU1LCAxOCwgMzAsIDEyMCwgMjA5LCA1OCwgNTQsIDMwLCAxMjYsIDIxNywgNTQsIDU0LCAzMCwgMjAzLCA1MCwgCi0gICAgNTQsIDMwLCAyMDksIDIzOCwgNTQsIDMwLCAyNDIsIDY2LCA1NCwgMzAsIDIyMCwgODcsIDU0LCAzMCwgMTIwLCAyMjAsIDg2LCAKLSAgICA1NCwgMzAsIDEyNiwgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDE0NywgMjIwLCA4NiwgNTQsIDMwLCAyMzksIDIzMywgMjIwLCAKLSAgICA4NiwgNTQsIDMwLCAyMjQsIDIxNiwgNTQsIDMwLCAyMjgsIDEzOSwgMjQ4LCAyMTksIDU0LCAzMCwgMjI3LCA4OCwgNTQsIAotICAgIDMwLCAyMTksIDIxMywgNTQsIDMwLCAyMDMsIDE3MywgNTQsIDMwLCAyNTAsIDg3LCA1NCwgMzAsIDI1MCwgMTAyLCA1NCwgCi0gICAgMzAsIDIzOCwgNywgNTQsIDMwLCAyMDgsIDIzLCAyNDgsIDIxOSwgNTQsIDMwLCAyMDIsIDg1LCA1NCwgMzAsIDExOCwgMjE3LCAKLSAgICA1NiwgNTQsIDMwLCAyMTIsIDExMywgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMiwgNTQsIDIxNSwgMjEwLCAyMDYsIDI0OSwgNTQsIAotICAgIDIxNSwgMjEwLCAyMTMsIDEzNSwgNTQsIDIxNSwgMjEwLCAyMTMsIDEwMCwgNTQsIDIxNSwgMjEwLCAyNDMsIDE4MywgMjEzLCAKLSAgICAxMDAsIDU0LCAyMTUsIDIxMCwgMjEyLCAxMzUsIDU0LCAyMTUsIDIxMCwgMjQ0LCAzNiwgNTQsIDIxNSwgMjEwLCAyMTcsIAotICAgIDM5LCA1NCwgMjE1LCAyMTAsIDIxMywgMTE5LCA1NCwgMjE1LCAyMTAsIDI0MiwgMjMsIDU0LCAyMTUsIDIxMCwgMjUwLCA4MiwgCi0gICAgNTQsIDIxNSwgMjEwLCAyNDYsIDIxMywgNTQsIDMwLCAxNiwgMjA5LCAyMDgsIDIxNiwgNTksIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjE5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTgsIDc4LCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAKLSAgICAxNjAsIDIsIDIwOSwgMjExLCAyMzcsIDY0LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NywgNDIsIDIxOCwgMjAzLCAyNDMsIAotICAgIDE2MCwgMiwgMjQ2LCAxMzMsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjAzLCAyNTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjM3LCAzNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzgsIDIxMywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDksIDAsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgNDcsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjQ3LCAyNDAsIDIxOCwgMjAzLCAKLSAgICAyNDMsIDE2MCwgMiwgMjEzLCA4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0NiwgNCwgMjE4LCAyMDMsIDI0MywgMTYwLCAKLSAgICAyLCAyMjUsIDEyMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjUsIDY4LCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxNCwgCi0gICAgMjEzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIyNywgMTQzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgNSwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDI2LCAyMTgsIDkxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0MywgOTgsIDIxOCwgCi0gICAgMjAzLCAyNDMsIDE2MCwgMiwgMjQ1LCAyMzksIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjEyLCA0NiwgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyNDUsIDI0MCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDgsIDE0NywgMjE4LCAyMDMsIDI0MywgCi0gICAgMTYwLCAyLCAyMTIsIDI1MSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzYsIDUzLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIAotICAgIDIzNywgMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDcsIDE3NCwgMjI3LCAyMTAsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgCi0gICAgMjQ3LCAxNywgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTYsIDE4NCwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDEsIAotICAgIDE4NiwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyNDIsIDcxLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIwNywgMTg4LCAKLSAgICAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDI0OCwgMTUwLCAyMTgsIDIwMywgMjQzLCAxNjAsIDIsIDIxOCwgOTIsIDIwOCwgOTUsIAotICAgIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjA1LCAyMTEsIDIxOCwgMjAzLCAyNDMsIDE2MCwgMiwgMjE5LCA5MiwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMTUsIDIwMSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMjcsIDEyNywgMjE4LCAyMDMsIAotICAgIDI0MywgMTYwLCAyLCAyMTksIDE5NCwgMjQ5LCAyNSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMzksIDE5MywgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAyMzcsIDI1NSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMTEsIDUwLCAyMTgsIDIwMywgCi0gICAgMjQzLCAxNjAsIDIsIDUsIDI1MCwgOSwgMjE4LCAyMDMsIDI0MywgMTYwLCAyLCAyMDQsIDcyLCAyNDgsIDIzOCwgMjE4LCAKLSAgICAyMDMsIDI0MywgMTYwLCAyLCAzOSwgMjIwLCA4OSwgOTUsIDIyNiwgMTk3LCAxLCA2MywgMjI2LCAxOTcsIDEsIDc0LCAyMjYsIAotICAgIDE5NywgMSwgMjQ5LCAyNTUsIDIyNiwgMTk3LCAxLCAyNDgsIDk5LCAyMjYsIDE5NywgMSwgMjM5LCA3NSwgMjI2LCAxOTcsIAotICAgIDEsIDI0NSwgNTEsIDIyNiwgMTk3LCAxLCA3NSwgMjI2LCAxOTcsIDEsIDIwNCwgMTQ0LCAyMjYsIDE5NywgMSwgMjAyLCAKLSAgICAxNTksIDIyNiwgMTk3LCAxLCAyMDksIDExMCwgMjI2LCAxOTcsIDEsIDIzMCwgMTg0LCAyMjYsIDE5NywgMSwgMjMwLCA1NCwgCi0gICAgMjI2LCAxOTcsIDEsIDIxNywgMTM0LCAyMjYsIDE5NywgMSwgMTU5LCAyMjYsIDE5NywgMSwgMjI2LCAxODUsIDIyNiwgMTk3LCAKLSAgICAxLCAyMjMsIDE2MywgMjI2LCAxOTcsIDEsIDIyNCwgODcsIDIyNiwgMTk3LCAxLCAyMjEsIDIyOCwgMjI2LCAxOTcsIDEsIAotICAgIDY4LCAyMjYsIDE5NywgMSwgMjE5LCAxODQsIDIyNiwgMTk3LCAxLCAyMjksIDQ4LCAyMjYsIDE5NywgMSwgMTQ2LCAyMjYsIAotICAgIDE5NywgMSwgMTk0LCAyMjYsIDE5NywgMSwgMjEwLCA2OSwgMjI2LCAxOTcsIDEsIDIwNywgMjQ0LCAyMjYsIDE5NywgMSwgCi0gICAgMjUwLCAyMzEsIDIyNiwgMTk3LCAxLCAyNDEsIDkyLCAyMjYsIDE5NywgMSwgMjM3LCAxNzEsIDIyNiwgMTk3LCAxLCAyMDMsIAotICAgIDE5NiwgMjQ3LCAzMiwgMSwgNjMsIDI0NywgMzIsIDEsIDIxOSwgMTcwLCAyNDcsIDMyLCAxLCAyNDUsIDUxLCAyNDcsIDMyLCAKLSAgICAxLCAxNTksIDI0NywgMzIsIDEsIDIwNiwgMTc2LCAyNDcsIDMyLCAxLCAxNDYsIDI0NywgMzIsIDEsIDIyNywgMjM4LCAyNDcsIAotICAgIDMyLCAxLCAyNTQsIDM0LCAyNDcsIDMyLCAxLCAyMTcsIDEzNCwgMjQ3LCAzMiwgMSwgMjQ5LCAyNTUsIDI0NywgMzIsIDEsIAotICAgIDIyNiwgMTg1LCAyNDcsIDMyLCAxLCA3OCwgMjQ3LCAzMiwgMSwgMjQ0LCAyMTQsIDI0NywgMzIsIDEsIDIxMCwgNjksIDI0NywgCi0gICAgMzIsIDEsIDIxMywgOTIsIDI0NywgMzIsIDEsIDIxMywgOTEsIDI0NywgMzIsIDEsIDE5NCwgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjQsIDI0NywgMzIsIDEsIDY4LCAyNDcsIDMyLCAxLCAyMjEsIDIyOCwgMjQ3LCAzMiwgMSwgMjAzLCAxOTYsIDI0NywgMzIsIAotICAgIDEsIDIyMywgMTYzLCAyNDcsIDMyLCAxLCAyMDcsIDI0MywgMjQ3LCAzMiwgMSwgMjE5LCAxODQsIDI0NywgMzIsIDEsIDIxMSwgCi0gICAgMTY3LCAyNDcsIDMyLCAxLCA3NSwgMjQ3LCAzMiwgMSwgNzQsIDI0NywgMzIsIDEsIDIwNiwgMTczLCAyNDcsIDMyLCAxLCAKLSAgICAyMzAsIDU0LCAyNDcsIDMyLCAxLCAyMzAsIDQ1LCAyNDcsIDMyLCAxLCAyMjMsIDI3LCAyNDcsIDMyLCAxLCAyMDYsIDE3OCwgCi0gICAgMjQ3LCAzMiwgMSwgMjM5LCA3NSwgMjQ3LCAzMiwgMSwgMjM5LCAxMCwgMjQ3LCAzMiwgMSwgMjExLCAxMDgsIDI0NywgMzIsIAotICAgIDEsIDIxMSwgMTA3LCAyNDcsIDMyLCAxLCAyMjIsIDIwNSwgMjQ3LCAzMiwgMSwgMjMxLCA4MywgMjQ3LCAzMiwgMSwgMjQ3LCAKLSAgICAxMjMsIDI0NywgMzIsIDEsIDIwNywgMjQ0LCAyNDcsIDMyLCAxLCAyMDYsIDE3NSwgMjQ3LCAzMiwgMSwgMjE1LCAxODYsIAotICAgIDI0NywgMzIsIDEsIDIyNSwgNTksIDI0NywgMzIsIDEsIDIyNSwgNTgsIDI0NywgMzIsIDEsIDIyNSwgNTcsIDI0NywgMzIsIAotICAgIDEsIDIyNSwgNTYsIDI0NywgMzIsIDEsIDIyNywgMjM3LCAyNDcsIDMyLCAxLCAyNDEsIDE5MCwgMjQ3LCAzMiwgMSwgMjA2LCAKLSAgICAxNzQsIDg0LCAyNDEsIDQ0LCAyMDksIDM1LCA4MiwgODQsIDI0MSwgNDQsIDE3LCAxMDUsIDg0LCAyNDEsIDQ0LCAxNywgCi0gICAgMTA4LCA4NCwgMjQxLCA0NCwgMTcsIDE0NywgODQsIDI0MSwgNDQsIDE3LCAxNDksIDg0LCAyNDEsIDQ0LCAxNywgMTcwLCAKLSAgICA4NCwgMjQxLCA0NCwgMTcsIDE5NSwgODQsIDI0MSwgNDQsIDE3LCAyMTMsIDExMSwgODQsIDI0MSwgNDQsIDE3LCAxOTksIAotICAgIDg0LCAyNDEsIDQ0LCAxNywgMjIyLCA2MywgODQsIDI0MSwgNDQsIDQyLCAyMDksIDE1MiwgODQsIDI0MSwgNDQsIDQyLCAKLSAgICAyMDcsIDE1MSwgODQsIDI0MSwgNDQsIDQyLCAyMDksIDUzLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTUzLCA4NCwgMjQxLCAKLSAgICA0NCwgNDIsIDI0MCwgMTgsIDg0LCAyNDEsIDQ0LCA0MiwgMjEyLCA3NCwgODQsIDI0MSwgNDQsIDQyLCAyMTMsIDEwNSwgODQsIAotICAgIDI0MSwgNDQsIDQyLCAyNDEsIDEzNCwgODQsIDI0MSwgNDQsIDQyLCAyMjIsIDU4LCA4NCwgMjQxLCA0NCwgNDIsIDExOCwgCi0gICAgMjM2LCAxMSwgODQsIDI0MSwgNDQsIDQyLCAxMjAsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMTI2LCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCA4NCwgMjQxLCA0NCwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAKLSAgICA4NCwgMjQxLCA0NCwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIAotICAgIDg0LCAyNDEsIDQ0LCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDg0LCAyNDEsIDQ0LCA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgCi0gICAgMzgsIDM3LCAxLCA2MywgMzgsIDM3LCAxLCAyNDgsIDE2MiwgMzgsIDM3LCAxLCAyMjksIDIwMSwgMzgsIDM3LCAxLCAyNDQsIAotICAgIDc1LCAzOCwgMzcsIDEsIDc0LCAzOCwgMzcsIDEsIDIwNiwgNTUsIDM4LCAzNywgMSwgMjAyLCA5MiwgMzgsIDM3LCAxLCAKLSAgICAyMzcsIDY3LCAzOCwgMzcsIDEsIDIwOSwgOTIsIDM4LCAzNywgMSwgNzUsIDM4LCAzNywgMSwgMTczLCAzOCwgMzcsIDEsIAotICAgIDI0MSwgMTIyLCAzOCwgMzcsIDEsIDI0MSwgMTAzLCAzOCwgMzcsIDEsIDI0MSwgOTIsIDM4LCAzNywgMSwgMjQxLCA3LCAzOCwgCi0gICAgMzcsIDEsIDc4LCAzOCwgMzcsIDEsIDIxOSwgMzQsIDM4LCAzNywgMSwgMjEzLCA0MywgMzgsIDM3LCAxLCAyMjgsIDIwOSwgCi0gICAgMzgsIDM3LCAxLCAyNDEsIDI4LCAzOCwgMzcsIDEsIDI0MSwgMTcsIDM4LCAzNywgMSwgMjA5LCAxODcsIDM4LCAzNywgMSwgCi0gICAgNjgsIDM4LCAzNywgMSwgMjQxLCAxMjUsIDM4LCAzNywgMSwgMjE4LCAxOTUsIDM4LCAzNywgMSwgMjI5LCAxMjksIDM4LCAKLSAgICAzNywgMSwgMjQxLCAxNTQsIDM4LCAzNywgMSwgMjQxLCAxOSwgMzgsIDM3LCAxLCAyNDYsIDE3MCwgMzgsIDM3LCAxLCAyMzEsIAotICAgIDgzLCAzOCwgMzcsIDEsIDIwNiwgMTc4LCAzOCwgMzcsIDEsIDI0MSwgMCwgMzgsIDM3LCAyMjEsIDQ0LCAxMDUsIDM4LCAzNywgCi0gICAgMjIxLCA0NCwgMTcwLCAzOCwgMzcsIDIyMSwgNDQsIDIwOSwgMTUyLCAzOCwgMzcsIDIyMSwgNDQsIDI0MCwgMTgsIDIzOCwgCi0gICAgMTcsIDEsIDI1MSwgNjcsIDIzOCwgMTcsIDEsIDI0OCwgMjU1LCAyMzgsIDE3LCAxLCAyMzgsIDc4LCAyMzgsIDE3LCAxLCAKLSAgICAyNDQsIDE5NCwgMjM4LCAxNywgMSwgMjUxLCA2MywgMjM4LCAxNywgMSwgMjE3LCAxMTcsIDIzOCwgMTcsIDEsIDIzMCwgCi0gICAgMTk2LCAyMzgsIDE3LCAxLCAyMzcsIDE1MCwgMjM4LCAxNywgMSwgMjA5LCA0OSwgMjM4LCAxNywgMSwgMjQxLCAxMzMsIAotICAgIDIzOCwgMTcsIDEsIDIyOCwgMTc2LCAyMzgsIDE3LCAxLCAyMjgsIDkwLCAyMzgsIDE3LCAxLCAyMjUsIDExNCwgMjM4LCAxNywgCi0gICAgMSwgMjIzLCA2MiwgMjM4LCAxNywgMSwgMjMwLCAxNTQsIDIzOCwgMTcsIDEsIDIwNiwgMTk2LCAyMzgsIDE3LCAxLCAyMTksIAotICAgIDE0NSwgMjM4LCAxNywgMSwgMjIyLCA1OCwgMjM4LCAxNywgMSwgMjE2LCAxOTYsIDIzOCwgMTcsIDEsIDIxNCwgMjE2LCAKLSAgICAyMzgsIDE3LCAxLCAyMDksIDE2NiwgMjM4LCAxNywgMSwgMjA0LCAxMCwgMjM4LCAxNywgMSwgMjQwLCA4OCwgMjM4LCAxNywgCi0gICAgMSwgMjMxLCA4NywgMjM4LCAxNywgMSwgMjM1LCAyNTIsIDIzOCwgMTcsIDEsIDIxOSwgMjIzLCAyMzgsIDE3LCAxLCAyMjIsIAotICAgIDY0LCAyMzYsIDExLCAzOCwgMjE4LCAyMzcsIDEsIDI1MCwgMjMxLCAzOCwgMjE4LCAyMzcsIDEsIDI0NywgMTYwLCAzOCwgCi0gICAgMjE4LCAyMzcsIDEsIDIzOCwgMjQ4LCAzOCwgMjE4LCAyMzcsIDEsIDI0MywgMTAxLCAzOCwgMjE4LCAyMzcsIDEsIDc0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwMiwgNjIsIDM4LCAyMTgsIDIzNywgMSwgMjQxLCAyNDcsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCA5OSwgMzgsIDIxOCwgMjM3LCAxLCAyNDEsIDI0NSwgMzgsIDIxOCwgMjM3LCAxLCA3NSwgMzgsIDIxOCwgMjM3LCAxLCAKLSAgICAyMjksIDE1LCAzOCwgMjE4LCAyMzcsIDEsIDIyNywgMjA2LCAzOCwgMjE4LCAyMzcsIDEsIDIyNCwgMjM4LCAzOCwgMjE4LCAKLSAgICAyMzcsIDEsIDIyMiwgMjI4LCAzOCwgMjE4LCAyMzcsIDEsIDIwNSwgMTc1LCAzOCwgMjE4LCAyMzcsIDEsIDIxOSwgMjIsIAotICAgIDM4LCAyMTgsIDIzNywgMSwgMjE2LCAxMjEsIDM4LCAyMTgsIDIzNywgMSwgMjEyLCAxNDIsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjA5LCAyNTAsIDM4LCAyMTgsIDIzNywgMSwgNjgsIDM4LCAyMTgsIDIzNywgMSwgMjQ2LCAxNTEsIDM4LCAyMTgsIDIzNywgCi0gICAgMSwgMjEyLCAyMzUsIDM4LCAyMTgsIDIzNywgMSwgMjEzLCA0NSwgMzgsIDIxOCwgMjM3LCAxLCAyMDIsIDIxNSwgMzgsIAotICAgIDIxOCwgMjM3LCAxLCAyMDMsIDMwLCAzOCwgMjE4LCAyMzcsIDEsIDc4LCAzOCwgMjE4LCAyMzcsIDEsIDIyMCwgMTgsIDM4LCAKLSAgICAyMTgsIDIzNywgMSwgMjQxLCAxNTQsIDM4LCAyMTgsIDIzNywgMSwgMTUyLCAzOCwgMjE4LCAyMzcsIDEsIDIwNywgMjU0LCAKLSAgICAzOCwgMjE4LCAyMzcsIDEsIDIwNiwgNDMsIDM4LCAyMTgsIDIzNywgMSwgMjAzLCAzNCwgMzgsIDIxOCwgMjM3LCAxLCAyMDMsIAotICAgIDMyLCAzOCwgMjE4LCAyMzcsIDEsIDIwMywgNjYsIDM4LCAyMTgsIDIzNywgMSwgMjMxLCAxMTAsIDM4LCAyMTgsIDIzNywgMSwgCi0gICAgMjAyLCAyMTMsIDM4LCAyMTgsIDIzNywgMSwgMTk4LCAzOCwgMjE4LCAyMzcsIDEsIDIzNSwgMTcxLCAzOSwgMzgsIDIxOCwgCi0gICAgMjM3LCAxLCAyNTAsIDIzMSwgMzksIDM4LCAyMTgsIDIzNywgMSwgMjQzLCAxMDEsIDM5LCAzOCwgMjE4LCAyMzcsIDEsIAotICAgIDIwMiwgOTksIDM5LCAzOCwgMjE4LCAyMzcsIDEsIDIyMiwgMjI4LCAzOSwgMzgsIDIxOCwgMjM3LCAxLCAyMTIsIDE0MiwgCi0gICAgMjA3LCAxOSwgMSwgMjUxLCA2LCAyMDcsIDE5LCAxLCAyNDgsIDEwNiwgMjA3LCAxOSwgMSwgMjM4LCAyMzYsIDIwNywgMTksIAotICAgIDEsIDIyOSwgMTQ0LCAyMDcsIDE5LCAxLCAyNDQsIDM3LCAyMDcsIDE5LCAxLCAyMzYsIDEzNiwgMjA3LCAxOSwgMSwgMjA0LCAKLSAgICAwLCAyMDcsIDE5LCAxLCAyMDIsIDgzLCAyMDcsIDE5LCAxLCAyMzYsIDQ1LCAyMDcsIDE5LCAxLCAyMDksIDEzMiwgMjA3LCAKLSAgICAxOSwgMSwgMjAyLCAyMzYsIDIwNywgMTksIDEsIDIzMCwgMjIsIDIwNywgMTksIDEsIDIxMiwgMjU1LCAyMDcsIDE5LCAxLCAKLSAgICAyMjgsIDI0LCAyMDcsIDE5LCAxLCAyMjQsIDI0NywgMjA3LCAxOSwgMSwgMjQzLCAyNTMsIDIwNywgMTksIDEsIDIyMSwgNDAsIAotICAgIDIwNywgMTksIDEsIDIwMiwgNiwgMjA3LCAxOSwgMSwgMjE0LCAyNDgsIDIwNywgMTksIDEsIDI1MSwgNTksIDIwNywgMTksIAotICAgIDEsIDIxNywgMTkxLCAyMDcsIDE5LCAxLCAyMTUsIDI3LCAyMDcsIDE5LCAxLCAyMTcsIDcwLCAyMDcsIDE5LCAxLCAyMTYsIAotICAgIDE3NSwgMjA3LCAxOSwgMSwgMjA5LCA5NiwgMjA3LCAxOSwgMSwgMjM4LCAxMTQsIDIwNywgMTksIDEsIDEzNSwgMjA3LCAxOSwgCi0gICAgMSwgNzUsIDIwNywgMTksIDEsIDY4LCAyMDcsIDE5LCAxLCAyMTEsIDExOSwgMjA3LCAxOSwgMjAzLCAyMzgsIDI0MywgMTQxLCAKLSAgICAzOCwgMjE4LCAyMzEsIDIsIDYzLCAzOCwgMjE4LCAyMzEsIDIsIDc1LCAzOCwgMjE4LCAyMzEsIDIsIDY4LCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDE3MywgMzgsIDIxOCwgMjMxLCAyLCAyMjgsIDIwOSwgMzgsIDIxOCwgMjMxLCAyLCAyMzksIDgsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMjM3LCAyMzAsIDM4LCAyMTgsIDIzMSwgMiwgMjAzLCAxODIsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCA5MiwgCi0gICAgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE4MSwgMzgsIDIxOCwgMjMxLCAyLCAyMzAsIDE0MSwgMzgsIDIxOCwgMjMxLCAyLCAKLSAgICAyMTAsIDIyLCAzOCwgMjE4LCAyMzEsIDIsIDIwNywgMjAzLCAzOCwgMjE4LCAyMzEsIDIsIDI0NCwgMjEyLCAzOCwgMjE4LCAKLSAgICAyMzEsIDIsIDI0MywgMjMzLCAzOCwgMjE4LCAyMzEsIDIsIDI0MiwgNDIsIDM4LCAyMTgsIDIzMSwgMiwgMjA5LCAxMDgsIAotICAgIDM4LCAyMTgsIDIzMSwgMiwgMTg1LCAzOCwgMjE4LCAyMzEsIDIsIDI0OSwgMzIsIDM4LCAyMTgsIDIzMSwgMiwgMjQwLCAKLSAgICAxMDgsIDM4LCAyMTgsIDIzMSwgMiwgMjAxLCAyMDEsIDM4LCAyMTgsIDIzMSwgMiwgMjIxLCA4NCwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAxOTIsIDM4LCAyMTgsIDIzMSwgMiwgMjI0LCAxNTUsIDM4LCAyMTgsIDIzMSwgMiwgMjIzLCAyNDYsIDM4LCAyMTgsIAotICAgIDIzMSwgMiwgMTk4LCAzOCwgMjE4LCAyMzEsIDIsIDIwNiwgODYsIDM4LCAyMTgsIDIzMSwgMiwgMjA1LCAyMzAsIDM4LCAKLSAgICAyMTgsIDIzMSwgMiwgMjE2LCAyMjAsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAxNDUsIDM4LCAyMTgsIDIzMSwgMiwgMjI4LCAKLSAgICAxMTMsIDM4LCAyMTgsIDIzMSwgMiwgMjE1LCAzNiwgMzgsIDIxOCwgMjMxLCAyLCAyMDIsIDExNiwgMzgsIDIxOCwgMjMxLCAKLSAgICAyLCAyMTMsIDkwLCAzOCwgMjE4LCAyMzEsIDIsIDIxMSwgMTY0LCAzOCwgMjE4LCAyMzEsIDIsIDE1MiwgMzgsIDIxOCwgCi0gICAgMjMxLCAyLCAyNTAsIDI4LCAzOCwgMjE4LCAyMzEsIDIsIDI1MCwgMjcsIDM4LCAyMTgsIDIzMSwgMiwgMjUwLCAyNiwgMzgsIAotICAgIDIxOCwgMjMxLCAyLCAyMDMsIDE1MywgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIDE5MCwgMzgsIDIxOCwgMjMxLCAyLCAyNDQsIAotICAgIDE4OSwgMzgsIDIxOCwgMjMxLCAyLCAyNDksIDgsIDM4LCAyMTgsIDIzMSwgMiwgMjQ3LCAxNDQsIDM4LCAyMTgsIDIzMSwgCi0gICAgMjAzLCAyMzgsIDI0MywgMTQxLCAzOCwgMjE4LCAyMzEsIDQyLCAxMDUsIDM4LCAyMTgsIDIzMSwgNDIsIDEwOCwgMzgsIAotICAgIDIxOCwgMjMxLCA0MiwgMjA5LCAxNTIsIDM4LCAyMTgsIDIzMSwgNDIsIDIwNywgMTUxLCAzOCwgMjE4LCAyMzEsIDQyLCAKLSAgICAyMzYsIDExLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc1LCAyNDQsIDE3LCA2LCAxLCAxNjMsIDc0LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAxNjMsIDYzLCAyNDQsIDE3LCA2LCAxLCAxNjMsIDI1MSwgNzMsIDI0NCwgMTcsIDYsIDEsIDE2MywgNzgsIDI0NCwgMTcsIDYsIAotICAgIDEsIDE2MywgMjIwLCAxOCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDc1LCAyNDQsIDE3LCA2LCAxLCAyMTIsIDIyOCwgCi0gICAgNzQsIDI0NCwgMTcsIDYsIDEsIDIxMiwgMjI4LCA2MywgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDI1MSwgNzMsIDI0NCwgCi0gICAgMTcsIDYsIDEsIDIxMiwgMjI4LCA3OCwgMjQ0LCAxNywgNiwgMSwgMjEyLCAyMjgsIDIyMCwgMTgsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI1MCwgOCwgMjQ0LCAxNywgNiwgMSwgMjE5LCAxOTUsIDI0NCwgMTcsIDYsIDEsIDIwMywgMjE3LCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyMDMsIDQ5LCAyNDQsIDE3LCA2LCAxLCAyMzcsIDE3MSwgMjQ0LCAxNywgNiwgMSwgMjE5LCAyMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQ4LCAxNTAsIDI0NCwgMTcsIDYsIDEsIDIwOSwgMTc2LCAyNDQsIDE3LCA2LCAxLCAyNDQsIDYxLCAyNDQsIDE3LCA2LCAxLCAKLSAgICAyNDYsIDE2NiwgMjQ0LCAxNywgNiwgMSwgMjMwLCAxNTksIDI0NCwgMTcsIDYsIDEsIDIyOSwgMjA4LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMzgsIDIxMSwgMjQ0LCAxNywgNiwgMSwgMjQxLCAxNTQsIDI0NCwgMTcsIDYsIDEsIDIwNiwgNTAsIDI0NCwgMTcsIDYsIAotICAgIDEsIDI0MCwgMjQzLCAyNDQsIDE3LCA2LCAxLCAyMDksIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDE3LCAyNDQsIDE3LCA2LCAKLSAgICAxLCAyMDIsIDkwLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDcsIDI0NCwgMTcsIDYsIDEsIDIwMiwgNzAsIDI0NCwgMTcsIDYsIDEsIAotICAgIDI0MSwgMjgsIDI0NCwgMTcsIDYsIDEsIDI0MSwgMTIyLCAyNDQsIDE3LCA2LCAxLCAyNDEsIDEwMywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQxLCA5MiwgMjQ0LCAxNywgNiwgMSwgMjQxLCA3OCwgMjQ0LCAxNywgNiwgMSwgMjIwLCA1NywgMjQ0LCAxNywgNiwgMSwgCi0gICAgMjQwLCAyMjAsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzUsIDI0NCwgMTcsIDUsIDEsIDE2MywgNzQsIDI0NCwgMTcsIDUsIDEsIAotICAgIDE2MywgNjMsIDI0NCwgMTcsIDUsIDEsIDE2MywgMjUxLCA3MywgMjQ0LCAxNywgNSwgMSwgMTYzLCA3OCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMTYzLCAyMjAsIDE4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgNzUsIDI0NCwgMTcsIDUsIDEsIDIxMiwgMjI4LCAKLSAgICA3NCwgMjQ0LCAxNywgNSwgMSwgMjEyLCAyMjgsIDYzLCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjUxLCA3MywgMjQ0LCAKLSAgICAxNywgNSwgMSwgMjEyLCAyMjgsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMTIsIDIyOCwgMjIwLCAxOCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjUwLCA4LCAyNDQsIDE3LCA1LCAxLCAyMTksIDE5NSwgMjQ0LCAxNywgNSwgMSwgMjAzLCAyMTcsIDI0NCwgMTcsIDUsIDEsIAotICAgIDIwMywgNDksIDI0NCwgMTcsIDUsIDEsIDIzNywgMTcxLCAyNDQsIDE3LCA1LCAxLCAyMTksIDIzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDgsIDE1MCwgMjQ0LCAxNywgNSwgMSwgMjA5LCAxNzYsIDI0NCwgMTcsIDUsIDEsIDI0NCwgNjEsIDI0NCwgMTcsIDUsIDEsIAotICAgIDI0NiwgMTY2LCAyNDQsIDE3LCA1LCAxLCAyMzAsIDE1OSwgMjQ0LCAxNywgNSwgMSwgMjI5LCAyMDgsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIzOCwgMjExLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDE1NCwgMjQ0LCAxNywgNSwgMSwgMjA2LCA1MCwgMjQ0LCAxNywgNSwgCi0gICAgMSwgMjQwLCAyNDMsIDI0NCwgMTcsIDUsIDEsIDIwOSwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTcsIDI0NCwgMTcsIDUsIAotICAgIDEsIDIwMiwgOTAsIDI0NCwgMTcsIDUsIDEsIDI0MSwgNywgMjQ0LCAxNywgNSwgMSwgMjAyLCA3MCwgMjQ0LCAxNywgNSwgMSwgCi0gICAgMjQxLCAyOCwgMjQ0LCAxNywgNSwgMSwgMjQxLCAxMjIsIDI0NCwgMTcsIDUsIDEsIDI0MSwgMTAzLCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDEsIDkyLCAyNDQsIDE3LCA1LCAxLCAyNDEsIDc4LCAyNDQsIDE3LCA1LCAxLCAyMjAsIDU3LCAyNDQsIDE3LCA1LCAxLCAKLSAgICAyNDAsIDIyMCwgMjEzLCA1MCwgMSwgMjE5LCAyMCwgMjEzLCA1MCwgMSwgMjA4LCAxMzEsIDIxMywgNTAsIDEsIDIyOSwgOTYsIAotICAgIDIxMywgNTAsIDEsIDI0MCwgNTMsIDIxMywgNTAsIDEsIDIwOSwgNjUsIDIxMywgNTAsIDEsIDIxMiwgMTMsIDIxMywgNTAsIAotICAgIDEsIDIxMCwgMTkwLCAyMTMsIDUwLCAxLCAyNDYsIDkwLCAyMTMsIDUwLCAxLCAyMDMsIDUxLCAyMTMsIDUwLCAxLCAyMzYsIAotICAgIDksIDIxMywgNTAsIDEsIDI0OCwgODUsIDIxMywgNTAsIDEsIDI0NCwgNzQsIDIxMywgNTAsIDEsIDIzOCwgMjUwLCAyMTMsIAotICAgIDUwLCAxLCAyMDUsIDE3MCwgMjEzLCA1MCwgMSwgMjA5LCA3MSwgMjEzLCA1MCwgMSwgMjAyLCAxNSwgMjEzLCA1MCwgMSwgCi0gICAgMjI1LCAxOCwgMjEzLCA1MCwgMSwgMjMwLCA4MCwgMjEzLCA1MCwgMSwgMjAzLCAyNTQsIDIxMywgNTAsIDEsIDIzNywgMTU5LCAKLSAgICAyMTMsIDUwLCAxLCAyMjcsIDMzLCAyMTMsIDUwLCAxLCAyMjQsIDExMSwgMjEzLCA1MCwgMSwgMjMxLCA5MCwgMjEzLCA1MCwgCi0gICAgMSwgMjQxLCAxNTIsIDIxMywgNTAsIDEsIDI1MCwgNzUsIDIxMywgNTAsIDEsIDI1MSwgMTEzLCAyMTMsIDUwLCAxLCAyMjAsIAotICAgIDMxLCAyMTMsIDUwLCAxLCAyMDMsIDI0MSwgMjEzLCA1MCwgMSwgMjE5LCAyMTEsIDIxMywgNTAsIDEsIDI1MSwgNzMsIDIxMywgCi0gICAgNTAsIDEsIDIxNSwgMjI0LCAyMTMsIDUwLCAxLCAyMjEsIDQwLCAyMTMsIDUwLCAxLCAyNDEsIDE3MiwgMjEzLCA1MCwgMSwgCi0gICAgMjUxLCA3OCwgMjEzLCA1MCwgMSwgMjM1LCAxNjIsIDIxMywgNTAsIDEsIDIwNiwgMjI0LCAyMTMsIDUwLCAxLCAyMjAsIDk1LCAKLSAgICAyMTMsIDUwLCAxLCAyMjAsIDEwLCAyMTMsIDUwLCAxLCAyMjAsIDU1LCAyMTMsIDUwLCAxLCAyNTAsIDExLCAyMTMsIDUwLCAKLSAgICAxLCAyNTAsIDEyMSwgMjEzLCA1MCwgMSwgMjE5LCAyNDQsIDIxMywgNTAsIDEsIDI1MSwgNTQsIDIxMywgNTAsIDEsIDI0MSwgCi0gICAgMjEsIDIxMywgNTAsIDEsIDI1MCwgOTksIDIxMywgNTAsIDEsIDI0MSwgMTgzLCAyMTMsIDUwLCAxLCAyMzUsIDE3MCwgMjEzLCAKLSAgICA1MCwgMSwgMjAzLCAxNiwgMjE5LCAyMjUsIDEsIDI1MSwgMzAsIDIxOSwgMjI1LCAxLCAyNDksIDMyLCAyMTksIDIyNSwgMSwgCi0gICAgMjEwLCAyMiwgMjE5LCAyMjUsIDEsIDIzMCwgMTgxLCAyMTksIDIyNSwgMSwgMjAzLCAxODIsIDIxOSwgMjI1LCAxLCAyMjksIAotICAgIDE0NCwgMjE5LCAyMjUsIDEsIDI0NCwgNjAsIDIxOSwgMjI1LCAxLCAyMTYsIDIyMCwgMjE5LCAyMjUsIDEsIDIxNSwgMzYsIAotICAgIDIxOSwgMjI1LCAxLCAyMTMsIDUsIDIxOSwgMjI1LCAxLCAyNDQsIDEsIDIxOSwgMjI1LCAxLCAyNDcsIDcsIDIxOSwgMjI1LCAKLSAgICAxLCAyMzksIDgsIDIxOSwgMjI1LCAxLCAyNDAsIDEwOCwgMjE5LCAyMjUsIDEsIDIxNywgMTI0LCAyMTksIDIyNSwgMSwgCi0gICAgMjMwLCAzOCwgMjE5LCAyMjUsIDEsIDIyOCwgMTA4LCAyMTksIDIyNSwgMSwgMjI0LCAxMjQsIDIxOSwgMjI1LCAxLCAyMjEsIAotICAgIDI0LCAyMTksIDIyNSwgMSwgMjA0LCA3MCwgMjE5LCAyMjUsIDEsIDE1MiwgMjE5LCAyMjUsIDEsIDE5OCwgMjE5LCAyMjUsIAotICAgIDEsIDYzLCAyMTksIDIyNSwgMSwgNzQsIDIxOSwgMjI1LCAxLCA3NSwgMjE5LCAyMjUsIDEsIDc4LCAyMTksIDIyNSwgMSwgCi0gICAgNjgsIDIxOSwgMjI1LCAxLCAyNTIsIDI1LCAyMTksIDIyNSwgMSwgMjQxLCAxNjEsIDIxOSwgMjI1LCAxLCAyMjAsIDE4LCAKLSAgICAyMTksIDIyNSwgMTcsIDIwMiwgODQsIDIxOSwgMjI1LCAxNywgMTA1LCAyMTksIDIyNSwgMTcsIDEwOCwgMjE5LCAyMjUsIAotICAgIDE3LCAxNDcsIDIxOSwgMjI1LCAxNywgMTQ5LCAyMTksIDIyNSwgMTcsIDE3MCwgMjE5LCAyMjUsIDE3LCAxOTUsIDIxOSwgCi0gICAgMjI1LCAxNywgMjEzLCAxMTEsIDIxOSwgMjI1LCAxNywgMTk5LCAyMTksIDIyNSwgMTcsIDIyMiwgNjMsIDI0MSwgMTE4LCAxLCAKLSAgICA2MywgMjQxLCAxMTgsIDEsIDI0OCwgMTYyLCAyNDEsIDExOCwgMSwgMjQ2LCAyMzgsIDI0MSwgMTE4LCAxLCAyNDYsIDE3MCwgCi0gICAgMjQxLCAxMTgsIDEsIDI0NCwgNzUsIDI0MSwgMTE4LCAxLCAyMjMsIDE3LCAyNDEsIDExOCwgMSwgMjQzLCAyNDgsIDI0MSwgCi0gICAgMTE4LCAxLCAyNDEsIDE0NSwgMjQxLCAxMTgsIDEsIDc0LCAyNDEsIDExOCwgMSwgMjQwLCA2MCwgMjQxLCAxMTgsIDEsIAotICAgIDIzOCwgMTkwLCAyNDEsIDExOCwgMSwgMjM4LCA1MiwgMjQxLCAxMTgsIDEsIDIzNywgNjcsIDI0MSwgMTE4LCAxLCA3NSwgCi0gICAgMjQxLCAxMTgsIDEsIDIzMCwgMTYxLCAyNDEsIDExOCwgMSwgMjI5LCAyMDEsIDI0MSwgMTE4LCAxLCAyMjcsIDIzNCwgMjQxLCAKLSAgICAxMTgsIDEsIDIyNywgNzMsIDI0MSwgMTE4LCAxLCAyMjUsIDIwLCAyNDEsIDExOCwgMSwgMjIyLCAyNDAsIDI0MSwgMTE4LCAKLSAgICAxLCAyMDEsIDIwMSwgMjQxLCAxMTgsIDEsIDIyMiwgNDEsIDI0MSwgMTE4LCAxLCA3OCwgMjQxLCAxMTgsIDEsIDIxOSwgMzQsIAotICAgIDI0MSwgMTE4LCAxLCAyMTcsIDEwNiwgMjQxLCAxMTgsIDEsIDIxNiwgMTU4LCAyNDEsIDExOCwgMSwgMjE1LCAxODAsIDI0MSwgCi0gICAgMTE4LCAxLCAyMTQsIDE3NywgMjQxLCAxMTgsIDEsIDIxMywgNDMsIDI0MSwgMTE4LCAxLCAyMDksIDE4NywgMjQxLCAxMTgsIAotICAgIDEsIDIwOSwgOTIsIDI0MSwgMTE4LCAxLCA2OCwgMjQxLCAxMTgsIDEsIDIwNiwgNTUsIDI0MSwgMTE4LCAxLCAyMDMsIDE3NiwgCi0gICAgMjQxLCAxMTgsIDEsIDIwMywgMTI0LCAyNDEsIDExOCwgMSwgMjAyLCA5MiwgMjQxLCAxMTgsIDEsIDIwMiwgNzEsIDI0MSwgCi0gICAgMTE4LCAxLCAyMzgsIDEwNSwgMjQxLCAxMTgsIDEsIDIzOCwgMTExLCAyNDEsIDExOCwgMSwgMjI5LCAxMjksIDI0NywgMTQsIAotICAgIDI1MSwgMzEsIDEsIDI1MSwgMSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ4LCAxMDgsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIzOCwgNjksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NCwgMTQwLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDE3MSwgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjAyLCAxMDIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0MCwgMTgzLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAxLCAyMDIsIDY1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDksIDIxMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgCi0gICAgMjQ2LCAxOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMiwgMjI0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDIsIDgwLCAKLSAgICAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMzAsIDIyMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA5MCwgMjQ3LCAxNCwgCi0gICAgMjUxLCAzMSwgMSwgMjI4LCAxNywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjMwLCAyMzUsIDI0NywgMTQsIDI1MSwgMzEsIDEsIAotICAgIDIwMywgMTcyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDIsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDI0NywgMzksIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDI0MCwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjI2LCAxOTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzNywgMTQsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxNywgCi0gICAgMTA3LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNTAsIDE3NywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxMDcsIDI0NywgCi0gICAgMTQsIDI1MSwgMzEsIDEsIDI0NiwgMTQyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDUsIDYzLCAyNDcsIDE0LCAyNTEsIDMxLCAKLSAgICAxLCAyMjUsIDEwMywgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE3LCAxMTEsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMSwgCi0gICAgMTUxLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI0MCwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjEzLCA3MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjMwLCAxNjIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIyMCwgMzEsIDI0NywgMTQsIDI1MSwgMzEsIAotICAgIDEsIDIwNywgMTI1LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDAsIDgzLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDEsIDI1MywgCi0gICAgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjQ2LCAxNzYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOSwgOSwgMjQ3LCAxNCwgMjUxLCAKLSAgICAzMSwgMSwgMjM4LCA5NSwgMjQ3LCAxNCwgMjUxLCAzMSwgMSwgMjE2LCAxNzIsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxMywgCi0gICAgOTksIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwNSwgMjMyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMDgsIDE5MywgMjQ3LCAKLSAgICAxNCwgMjUxLCAzMSwgMSwgMjEyLCAyMDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIzMCwgMTk0LCAyNDcsIDE0LCAyNTEsIAotICAgIDMxLCAxLCAyNDUsIDY0LCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyNDcsIDcsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIwMywgCi0gICAgNTYsIDI0NywgMTQsIDI1MSwgMzEsIDEsIDIxOCwgMTAyLCAyNDcsIDE0LCAyNTEsIDMxLCAxLCAyMjksIDYyLCAyNDcsIDE0LCAKLSAgICAyNTEsIDMxLCAyNDYsIDQ5LCA4MiwgMjksIDM0LCAyLCAyNTEsIDIzMSwgMjksIDM0LCAyLCAyNTEsIDIzMCwgMjksIDM0LCAKLSAgICAyLCAyNTEsIDIyOSwgMjksIDM0LCAyLCAyNTEsIDIyOCwgMjksIDM0LCAyLCAyNTEsIDIyNywgMjksIDM0LCAyLCAyNTEsIAotICAgIDIyNiwgMjksIDM0LCAyLCAyNTEsIDIyNSwgMjksIDM0LCAyLCAyNTEsIDIyNCwgMjksIDM0LCAyLCAyNTEsIDIyMywgMjksIAotICAgIDM0LCAyLCAyNTEsIDIyMiwgMjksIDM0LCAyLCAyNTEsIDIyMSwgMjksIDM0LCAyLCAyNTEsIDIyMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxOSwgMjksIDM0LCAyLCAyNTEsIDIxOCwgMjksIDM0LCAyLCAyNTEsIDIxNywgMjksIDM0LCAyLCAyNTEsIDIxNiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIxNSwgMjksIDM0LCAyLCAyNTEsIDIxNCwgMjksIDM0LCAyLCAyNTEsIDIxMywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIxMiwgMjksIDM0LCAyLCAyNTEsIDIxMSwgMjksIDM0LCAyLCAyNTEsIDIxMCwgMjksIDM0LCAyLCAyNTEsIDIwOSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwOCwgMjksIDM0LCAyLCAyNTEsIDIwNywgMjksIDM0LCAyLCAyNTEsIDIwNiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDIwNSwgMjksIDM0LCAyLCAyNTQsIDIzOSwgMjksIDM0LCAyLCAyNTEsIDIwNCwgMjksIDM0LCAyLCAyNTEsIDIwMywgCi0gICAgMjksIDM0LCAyLCAyNTEsIDIwMiwgMjksIDM0LCAyLCAyNTEsIDIwMSwgMjksIDM0LCAyLCAyNTEsIDIwMCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5OSwgMjksIDM0LCAyLCAyNTEsIDE5OCwgMjksIDM0LCAyLCAyNTEsIDE5NywgMjksIDM0LCAyLCAyNTEsIDE5NiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE5NSwgMjksIDM0LCAyLCAyNTEsIDE5NCwgMjksIDM0LCAyLCAyNTEsIDE5MywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE5MiwgMjksIDM0LCAyLCAyNTEsIDE5MSwgMjksIDM0LCAyLCAyNTEsIDE5MCwgMjksIDM0LCAyLCAyNTEsIDE4OSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4OCwgMjksIDM0LCAyLCAyNTEsIDE4NywgMjksIDM0LCAyLCAyNTEsIDE4NiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE4NSwgMjksIDM0LCAyLCAyNTEsIDE4NCwgMjksIDM0LCAyLCAyNTEsIDE4MywgMjksIDM0LCAyLCAyNTEsIDE4MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE4MSwgMjksIDM0LCAyLCAyNTEsIDE4MCwgMjksIDM0LCAyLCAyNTEsIDE3OSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3OCwgMjksIDM0LCAyLCAyNTEsIDE3NywgMjksIDM0LCAyLCAyNTEsIDE3NiwgMjksIDM0LCAyLCAyNTEsIDE3NSwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE3NCwgMjksIDM0LCAyLCAyNTEsIDE3MywgMjksIDM0LCAyLCAyNTEsIDE3MiwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE3MSwgMjksIDM0LCAyLCAyNTEsIDE3MCwgMjksIDM0LCAyLCAyNTEsIDE2OSwgMjksIDM0LCAyLCAyNTEsIDE2OCwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2NywgMjksIDM0LCAyLCAyNTEsIDE2NiwgMjksIDM0LCAyLCAyNTEsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE2NCwgMjksIDM0LCAyLCAyNTEsIDE2MywgMjksIDM0LCAyLCAyNTEsIDE2MiwgMjksIDM0LCAyLCAyNTQsIDE1MiwgCi0gICAgMjksIDM0LCAyLCAyNTEsIDE2MSwgMjksIDM0LCAyLCAyNTEsIDE2MCwgMjksIDM0LCAyLCAyNTQsIDExNywgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1OSwgMjksIDM0LCAyLCAyNTEsIDE1OCwgMjksIDM0LCAyLCAyNTEsIDE1NywgMjksIDM0LCAyLCAyNTEsIDE1NiwgCi0gICAgMjksIDM0LCAyLCAyNTQsIDEwNCwgMjksIDM0LCAyLCAyNTEsIDE1NSwgMjksIDM0LCAyLCAyNTEsIDE1NCwgMjksIDM0LCAyLCAKLSAgICAyNTEsIDE1MywgMjksIDM0LCAyLCAyNTEsIDE1MiwgMjksIDM0LCAyLCAyNTEsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE3NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE3NSwgMjksIDM0LCAyLCAyNTMsIDE3NCwgMjksIDM0LCAyLCAyNTMsIDE3MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE3MiwgMjksIDM0LCAyLCAyNTMsIDE3MSwgMjksIDM0LCAyLCAyNTMsIDE3MCwgMjksIDM0LCAyLCAyNTMsIDE2OSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE2NywgMjksIDM0LCAyLCAyNTMsIDE2NiwgMjksIDM0LCAyLCAyNTMsIDE2NSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE2NCwgMjksIDM0LCAyLCAyNTMsIDE2MywgMjksIDM0LCAyLCAyNTMsIDE2MiwgMjksIDM0LCAyLCAyNTMsIDE2MCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1OSwgMjksIDM0LCAyLCAyNTMsIDE1OCwgMjksIDM0LCAyLCAyNTMsIDE1NywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE1NiwgMjksIDM0LCAyLCAyNTMsIDE1NSwgMjksIDM0LCAyLCAyNTMsIDE1NCwgMjksIDM0LCAyLCAyNTMsIDE1MywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE1MiwgMjksIDM0LCAyLCAyNTMsIDE1MSwgMjksIDM0LCAyLCAyNTMsIDE1MCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0OSwgMjksIDM0LCAyLCAyNTMsIDE0OCwgMjksIDM0LCAyLCAyNTMsIDE0NywgMjksIDM0LCAyLCAyNTMsIDE0NiwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDE0NSwgMjksIDM0LCAyLCAyNTMsIDE0NCwgMjksIDM0LCAyLCAyNTMsIDE0MywgMjksIDM0LCAyLCAKLSAgICAyNTMsIDE0MiwgMjksIDM0LCAyLCAyNTMsIDE0MCwgMjksIDM0LCAyLCAyNTMsIDEzOSwgMjksIDM0LCAyLCAyNTMsIDEzOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEzNCwgMjksIDM0LCAyLCAyNTMsIDEzMywgMjksIDM0LCAyLCAyNTMsIDEzMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEzMSwgMjksIDM0LCAyLCAyNTMsIDEyNywgMjksIDM0LCAyLCAyNTMsIDEyNiwgMjksIDM0LCAyLCAyNTMsIDEyNSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEyNCwgMjksIDM0LCAyLCAyNTMsIDEyMywgMjksIDM0LCAyLCAyNTMsIDEyMiwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEyMSwgMjksIDM0LCAyLCAyNTMsIDEyMCwgMjksIDM0LCAyLCAyNTMsIDExOSwgMjksIDM0LCAyLCAyNTMsIDExOCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExNywgMjksIDM0LCAyLCAyNTMsIDExNiwgMjksIDM0LCAyLCAyNTMsIDExNSwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDExNCwgMjksIDM0LCAyLCAyNTMsIDExMywgMjksIDM0LCAyLCAyNTMsIDExMiwgMjksIDM0LCAyLCAyNTMsIDExMSwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDExMCwgMjksIDM0LCAyLCAyNTMsIDEwOSwgMjksIDM0LCAyLCAyNTMsIDEwOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDEwNywgMjksIDM0LCAyLCAyNTMsIDEwNiwgMjksIDM0LCAyLCAyNTMsIDEwNSwgMjksIDM0LCAyLCAyNTMsIDEwMywgCi0gICAgMjksIDM0LCAyLCAyNTMsIDEwMiwgMjksIDM0LCAyLCAyNTMsIDEwMSwgMjksIDM0LCAyLCAyNTMsIDEwMCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDk5LCAyOSwgMzQsIDIsIDI1MywgOTcsIDI5LCAzNCwgMiwgMjUzLCA5NiwgMjksIDM0LCAyLCAyNTMsIDk1LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgOTQsIDI5LCAzNCwgMiwgMjUzLCA5MiwgMjksIDM0LCAyLCAyNTMsIDkxLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgOTAsIDI5LCAzNCwgMiwgMjUzLCA1NiwgMjksIDM0LCAyLCAyNTMsIDU0LCAyOSwgMzQsIDIsIDI1MywgNTIsIDI5LCAzNCwgCi0gICAgMiwgMjUzLCA1MCwgMjksIDM0LCAyLCAyNTMsIDQ4LCAyOSwgMzQsIDIsIDI1MywgNDYsIDI5LCAzNCwgMiwgMjUzLCA0NCwgCi0gICAgMjksIDM0LCAyLCAyNTMsIDQyLCAyOSwgMzQsIDIsIDI1MywgNDAsIDI5LCAzNCwgMiwgMjUzLCAzOCwgMjksIDM0LCAyLCAKLSAgICAyNTMsIDM2LCAyOSwgMzQsIDIsIDI1MywgMzMsIDI5LCAzNCwgMiwgMjUzLCAzMSwgMjksIDM0LCAyLCAyNTMsIDI5LCAyOSwgCi0gICAgMzQsIDIsIDI1MywgMjcsIDI5LCAzNCwgMiwgMjUzLCAyNSwgMjksIDM0LCAyLCAyNTMsIDIzLCAyOSwgMzQsIDIsIDI1MywgCi0gICAgMjEsIDI5LCAzNCwgMiwgMjUzLCAxOSwgMjksIDM0LCAyLCAyNTIsIDE5MywgMjksIDM0LCAyLCAyNTIsIDE5MiwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDE5MSwgMjksIDM0LCAyLCAyNTIsIDE5MCwgMjksIDM0LCAyLCAyNTIsIDE4OSwgMjksIDM0LCAyLCAyNTIsIAotICAgIDE4OCwgMjksIDM0LCAyLCAyNTIsIDE4NiwgMjksIDM0LCAyLCAyNTIsIDE4NSwgMjksIDM0LCAyLCAyNTIsIDE4NCwgMjksIAotICAgIDM0LCAyLCAyNTIsIDE4MywgMjksIDM0LCAyLCAyNTIsIDE4MiwgMjksIDM0LCAyLCAyNTIsIDE4MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE3OSwgMjksIDM0LCAyLCAyNTIsIDE3OCwgMjksIDM0LCAyLCAyNTIsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDE3MywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDE3MCwgMjksIDM0LCAyLCAyNTIsIDE2OSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2OCwgMjksIDM0LCAyLCAyNTIsIDE2NywgMjksIDM0LCAyLCAyNTIsIDE2NiwgMjksIDM0LCAyLCAyNTIsIDE2NSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE2NCwgMjksIDM0LCAyLCAyNTIsIDE2MywgMjksIDM0LCAyLCAyNTIsIDE2MiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE2MSwgMjksIDM0LCAyLCAyNTIsIDE2MCwgMjksIDM0LCAyLCAyNTIsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDE1OCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1NywgMjksIDM0LCAyLCAyNTIsIDE1NiwgMjksIDM0LCAyLCAyNTIsIDE1NSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE1NCwgMjksIDM0LCAyLCAyNTIsIDE1MywgMjksIDM0LCAyLCAyNTIsIDE1MiwgMjksIDM0LCAyLCAyNTIsIDE1MSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE1MCwgMjksIDM0LCAyLCAyNTIsIDE0OSwgMjksIDM0LCAyLCAyNTIsIDE0OCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0NywgMjksIDM0LCAyLCAyNTIsIDE0NiwgMjksIDM0LCAyLCAyNTIsIDE0NSwgMjksIDM0LCAyLCAyNTIsIDE0NCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDE0MywgMjksIDM0LCAyLCAyNTIsIDE0MiwgMjksIDM0LCAyLCAyNTIsIDE0MSwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDE0MCwgMjksIDM0LCAyLCAyNTIsIDEzOSwgMjksIDM0LCAyLCAyNTIsIDEzOCwgMjksIDM0LCAyLCAyNTIsIDEzNywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEzNiwgMjksIDM0LCAyLCAyNTIsIDEzNSwgMjksIDM0LCAyLCAyNTIsIDEzNCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEzMywgMjksIDM0LCAyLCAyNTIsIDEzMiwgMjksIDM0LCAyLCAyNTIsIDEzMSwgMjksIDM0LCAyLCAyNTIsIDEzMCwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyOSwgMjksIDM0LCAyLCAyNTIsIDEyOCwgMjksIDM0LCAyLCAyNTIsIDEyNywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEyNiwgMjksIDM0LCAyLCAyNTIsIDEyNSwgMjksIDM0LCAyLCAyNTIsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDEyMywgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEyMiwgMjksIDM0LCAyLCAyNTIsIDEyMSwgMjksIDM0LCAyLCAyNTIsIDEyMCwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExOSwgMjksIDM0LCAyLCAyNTIsIDExOCwgMjksIDM0LCAyLCAyNTIsIDExNywgMjksIDM0LCAyLCAyNTIsIDExNiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDExNSwgMjksIDM0LCAyLCAyNTIsIDExNCwgMjksIDM0LCAyLCAyNTIsIDExMywgMjksIDM0LCAyLCAKLSAgICAyNTIsIDExMiwgMjksIDM0LCAyLCAyNTIsIDExMSwgMjksIDM0LCAyLCAyNTIsIDExMCwgMjksIDM0LCAyLCAyNTIsIDEwOSwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwOCwgMjksIDM0LCAyLCAyNTIsIDEwNywgMjksIDM0LCAyLCAyNTIsIDEwNiwgMjksIDM0LCAyLCAKLSAgICAyNTIsIDEwNSwgMjksIDM0LCAyLCAyNTIsIDEwNCwgMjksIDM0LCAyLCAyNTIsIDEwMywgMjksIDM0LCAyLCAyNTIsIDEwMiwgCi0gICAgMjksIDM0LCAyLCAyNTIsIDEwMSwgMjksIDM0LCAyLCAyNTIsIDEwMCwgMjksIDM0LCAyLCAyNTIsIDk5LCAyOSwgMzQsIDIsIAotICAgIDI1MiwgOTgsIDI5LCAzNCwgMiwgMjUyLCA5NywgMjksIDM0LCAyLCAyNTIsIDk2LCAyOSwgMzQsIDIsIDI1MiwgOTUsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA5NCwgMjksIDM0LCAyLCAyNTIsIDkzLCAyOSwgMzQsIDIsIDI1MiwgOTIsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA5MSwgMjksIDM0LCAyLCAyNTIsIDkwLCAyOSwgMzQsIDIsIDI1MiwgODksIDI5LCAzNCwgMiwgMjUyLCA4OCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDg3LCAyOSwgMzQsIDIsIDI1MiwgODYsIDI5LCAzNCwgMiwgMjUyLCA4NSwgMjksIDM0LCAyLCAyNTIsIDg0LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgODMsIDI5LCAzNCwgMiwgMjUyLCA4MiwgMjksIDM0LCAyLCAyNTIsIDgxLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgODAsIDI5LCAzNCwgMiwgMjUyLCA3OSwgMjksIDM0LCAyLCAyNTIsIDc4LCAyOSwgMzQsIDIsIDI1MiwgNzcsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA3NiwgMjksIDM0LCAyLCAyNTIsIDc1LCAyOSwgMzQsIDIsIDI1MiwgNzQsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA3MywgMjksIDM0LCAyLCAyNTIsIDcyLCAyOSwgMzQsIDIsIDI1MiwgNzEsIDI5LCAzNCwgMiwgMjUyLCA3MCwgMjksIDM0LCAKLSAgICAyLCAyNTIsIDY5LCAyOSwgMzQsIDIsIDI1MiwgNjgsIDI5LCAzNCwgMiwgMjUyLCA2NywgMjksIDM0LCAyLCAyNTIsIDY2LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgNjUsIDI5LCAzNCwgMiwgMjUyLCA2NCwgMjksIDM0LCAyLCAyNTIsIDYzLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgNjIsIDI5LCAzNCwgMiwgMjUyLCA2MSwgMjksIDM0LCAyLCAyNTIsIDYwLCAyOSwgMzQsIDIsIDI1MiwgNTksIDI5LCAKLSAgICAzNCwgMiwgMjUyLCA1OCwgMjksIDM0LCAyLCAyNTIsIDU3LCAyOSwgMzQsIDIsIDI1MiwgNTYsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICA1NSwgNjMsIDI5LCAzNCwgMiwgMjUyLCA1NCwgMjQ5LCAyNTUsIDI5LCAzNCwgMiwgMjUyLCA1MywgMjQ1LCA1MSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDUyLCA3NCwgMjksIDM0LCAyLCAyNTIsIDUxLCAyNDAsIDE3NCwgMjksIDM0LCAyLCAyNTIsIDUwLCAKLSAgICAyMzcsIDE3MSwgMjksIDM0LCAyLCAyNTIsIDQ5LCAyMzAsIDE4NCwgMjksIDM0LCAyLCAyNTIsIDQ4LCAyMzAsIDU0LCAyOSwgCi0gICAgMzQsIDIsIDI1MiwgNDcsIDE1OSwgMjksIDM0LCAyLCAyNTIsIDQ2LCAyMjgsIDExOCwgMjksIDM0LCAyLCAyNTIsIDQ1LCAKLSAgICAyMjgsIDExNywgMjksIDM0LCAyLCAyNTIsIDQ0LCAyMjgsIDExNiwgMjksIDM0LCAyLCAyNTIsIDQzLCAyMjgsIDExNSwgMjksIAotICAgIDM0LCAyLCAyNTIsIDQyLCAyMDQsIDE0NCwgMjksIDM0LCAyLCAyNTIsIDQxLCAyMDMsIDE5NiwgMjksIDM0LCAyLCAyNTIsIAotICAgIDQwLCAyMDMsIDEyNCwgMjksIDM0LCAyLCAyNTIsIDM5LCAyMjAsIDM2LCAyOSwgMzQsIDIsIDI1MiwgMzgsIDI1MSwgMTQ3LCAKLSAgICAyOSwgMzQsIDIsIDI1MiwgMzcsIDI0OCwgMTk5LCAyOSwgMzQsIDIsIDI1MiwgMzYsIDI0NCwgMTIyLCAyOSwgMzQsIDIsIAotICAgIDI1MiwgMzUsIDI0MCwgMTgyLCAyOSwgMzQsIDIsIDI1MiwgMzQsIDIzMCwgMTYxLCAyOSwgMzQsIDIsIDI1MiwgMzMsIDI5LCAKLSAgICAzNCwgMiwgMjUyLCAzMiwgMjksIDM0LCAyLCAyNTIsIDMxLCAyOSwgMzQsIDIsIDI1MiwgMzAsIDI5LCAzNCwgMiwgMjUyLCAKLSAgICAyOSwgMjksIDM0LCAyLCAyNTIsIDI4LCAyOSwgMzQsIDIsIDI1MiwgMjcsIDI5LCAzNCwgMiwgMjUyLCAyNiwgMjQ1LCA1OCwgCi0gICAgNCwgNjMsIDI0NSwgNTgsIDQsIDc0LCAyNDUsIDU4LCA0LCA3NSwgMjQ1LCA1OCwgNCwgNzgsIDI0NSwgNTgsIDQsIDY4LCAKLSAgICAyNDUsIDU4LCA0LCAyMzAsIDE4MSwgMjQ1LCA1OCwgNCwgMjMwLCAxMDEsIDI0NSwgNTgsIDQsIDE3MywgMjQ1LCA1OCwgNCwgCi0gICAgMjI5LCAyMDEsIDI0NSwgNTgsIDQsIDIyOSwgMTAwLCAyNDUsIDU4LCA0LCAyMjksIDI2LCAyNDUsIDU4LCA0LCAyMjgsIAotICAgIDIwOSwgMjQ1LCA1OCwgNCwgMjI4LCAxMTMsIDI0NSwgNTgsIDQsIDIyNywgMjM0LCAyNDUsIDU4LCA0LCAyMjcsIDE0OCwgCi0gICAgMjQ1LCA1OCwgNCwgMjI3LCA0OSwgMjQ1LCA1OCwgNCwgMjI2LCAyMzksIDI0NSwgNTgsIDQsIDE5MiwgMjQ1LCA1OCwgNCwgCi0gICAgMjI1LCAyMCwgMjQ1LCA1OCwgNCwgMjI0LCAxNTUsIDI0NSwgNTgsIDQsIDIyNCwgODIsIDI0NSwgNTgsIDQsIDIyMywgMjQ2LCAKLSAgICAyNDUsIDU4LCA0LCAyMDEsIDIwMSwgMjQ1LCA1OCwgNCwgMjIyLCAyNDAsIDI0NSwgNTgsIDQsIDIyMiwgMTAwLCAyNDUsIAotICAgIDU4LCA0LCAyMjEsIDE5MSwgMjQ1LCA1OCwgNCwgMjIxLCA4NCwgMjQ1LCA1OCwgNCwgMTg1LCAyNDUsIDU4LCA0LCAyMTksIAotICAgIDM0LCAyNDUsIDU4LCA0LCAyMTgsIDE2NywgMjQ1LCA1OCwgNCwgMjE4LCA2OSwgMjQ1LCA1OCwgNCwgMjE3LCAxOTEsIDI0NSwgCi0gICAgNTgsIDQsIDIxNiwgMjIwLCAyNDUsIDU4LCA0LCAyMTYsIDE1OCwgMjQ1LCA1OCwgNCwgMjE2LCA1NywgMjQ1LCA1OCwgNCwgCi0gICAgMjE1LCAyMjcsIDI0NSwgNTgsIDQsIDIxNSwgMTQ1LCAyNDUsIDU4LCA0LCAyMTUsIDM2LCAyNDUsIDU4LCA0LCAyMTQsIAotICAgIDE3NywgMjQ1LCA1OCwgNCwgMjEyLCAxNjIsIDI0NSwgNTgsIDQsIDIxMiwgMTMsIDI0NSwgNTgsIDQsIDIxMSwgMTAsIDI0NSwgCi0gICAgNTgsIDQsIDIxMCwgMjIsIDI0NSwgNTgsIDQsIDIwOSwgMTg3LCAyNDUsIDU4LCA0LCAyMDksIDIsIDI0NSwgNTgsIDQsIAotICAgIDEzNSwgMjQ1LCA1OCwgNCwgMjA3LCAyMDMsIDI0NSwgNTgsIDQsIDIwNCwgMTExLCAyNDUsIDU4LCA0LCAyMDQsIDYyLCAKLSAgICAyNDUsIDU4LCA0LCAyMDQsIDMwLCAyNDUsIDU4LCA0LCAyMDQsIDAsIDI0NSwgNTgsIDQsIDIwMywgMTgyLCAyNDUsIDU4LCAKLSAgICA0LCAyMDMsIDE3NiwgMjQ1LCA1OCwgNCwgMjAyLCAxMTYsIDI0NSwgNTgsIDQsIDIwMiwgMTcsIDIzMSwgNTEsIDI1MCwgCi0gICAgMTMwLCAxLCAyNTEsIDI4LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ4LCAxMDUsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMzgsIDY3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjQ0LCAxNzcsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAyMzcsIDY3LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA0LCA3MCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIwMiwgOTUsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCAxLCAyMzcsIDE5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAxMjgsIDIzMSwgNTEsIDI1MCwgMTMwLCAKLSAgICAxLCAyMDIsIDIzNSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyOSwgMjUwLCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjI4LCAKLSAgICAxOSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIyNCwgMjQ3LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjIxLCA0MCwgMjMxLCAKLSAgICA1MSwgMjUwLCAxMzAsIDEsIDIxNCwgMjQ5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjUwLCAzLCAyMzEsIDUxLCAyNTAsIAotICAgIDEzMCwgMSwgMjE5LCAzNCwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxNSwgMjYsIDIzMSwgNTEsIDI1MCwgMTMwLCAxLCAKLSAgICAyMTcsIDY5LCAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjE2LCA5MSwgMjMxLCA1MSwgMjUwLCAxMzAsIDEsIDIxMiwgMjU1LCAKLSAgICAyMzEsIDUxLCAyNTAsIDEzMCwgMSwgMjA5LCAyMDEsIDIzMSwgNTEsIDI1MCwgMTMwLCAyMTQsIDE2OCwgNTQsIDIzMSwgNTEsIAotICAgIDI1MCwgMTMwLCA0MiwgMTA1LCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDEwOCwgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAKLSAgICAxNDcsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA5LCAxNTIsIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMjA3LCAxNTEsIAotICAgIDIzMSwgNTEsIDI1MCwgMTMwLCA0MiwgMTE4LCAyMzYsIDExLCAyMzEsIDUxLCAyNTAsIDEzMCwgNDIsIDExOCwgMjA5LCAzNiwgCi0gICAgMjMxLCA1MSwgMjUwLCAxMzAsIDQyLCAyMDksIDE1MywgMjA5LCAzNiwgMjE5LCAxMzQsIDEsIDI1MSwgMjgsIDIxOSwgMTM0LCAKLSAgICAxLCAyNDgsIDEwNSwgMjE5LCAxMzQsIDEsIDIzOCwgNjcsIDIxOSwgMTM0LCAxLCAyNDQsIDE3NywgMjE5LCAxMzQsIDEsIAotICAgIDIzNywgNjcsIDIxOSwgMTM0LCAxLCAyMDQsIDcwLCAyMTksIDEzNCwgMSwgMjAyLCA5NSwgMjE5LCAxMzQsIDEsIDIzNywgCi0gICAgMTksIDIxOSwgMTM0LCAxLCAyMDksIDEyOCwgMjE5LCAxMzQsIDEsIDIwMiwgMjM1LCAyMTksIDEzNCwgMSwgMjI5LCAyNTAsIAotICAgIDIxOSwgMTM0LCAxLCAyMjgsIDE5LCAyMTksIDEzNCwgMSwgMjI0LCAyNDcsIDIxOSwgMTM0LCAxLCA0NiwgMjIxLCA0MCwgCi0gICAgMjE5LCAxMzQsIDEsIDIyMSwgNDAsIDIxOSwgMTM0LCAxLCAyMTQsIDI0OSwgMjE5LCAxMzQsIDEsIDI1MCwgMywgMjE5LCAKLSAgICAxMzQsIDEsIDIxOSwgMzQsIDIxOSwgMTM0LCAxLCAyMTUsIDI2LCAyMTksIDEzNCwgMSwgMjE3LCA2OSwgMjE5LCAxMzQsIDEsIAotICAgIDIxNiwgOTEsIDIxOSwgMTM0LCAxLCAyMTIsIDI1NSwgMjE5LCAxMzQsIDEsIDIwOSwgMjAxLCAyMTksIDEzNCwgMjI3LCAKLSAgICAyMTcsIDIzOSwgMjEyLCAyMTksIDEzNCwgMjE2LCAxMSwgMjM5LCAyMTIsIDIxOSwgMTM0LCA0MiwgMTA1LCAyMTksIDEzNCwgCi0gICAgNDIsIDEwOCwgMjE5LCAxMzQsIDQyLCAxNDcsIDIxOSwgMTM0LCA0MiwgMTQ5LCAyMTksIDEzNCwgNDIsIDE3MCwgMjE5LCAKLSAgICAxMzQsIDQyLCAyMDksIDE1MiwgMjE5LCAxMzQsIDQyLCAyMDcsIDE1MSwgMjIzLCAxMDIsIDEsIDQ2LCAyNTEsIDI4LCAyMjMsIAotICAgIDEwMiwgMSwgMjUxLCAyOCwgMjIzLCAxMDIsIDEsIDQ2LCAyNDgsIDEwNSwgMjIzLCAxMDIsIDEsIDI0OCwgMTA1LCAyMjMsIAotICAgIDEwMiwgMSwgMjM4LCA2NywgMjIzLCAxMDIsIDEsIDI0NCwgMTc3LCAyMjMsIDEwMiwgMSwgNDYsIDIzNywgNjcsIDIyMywgCi0gICAgMTAyLCAxLCAyMzcsIDY3LCAyMjMsIDEwMiwgMSwgMjA0LCA3MCwgMjIzLCAxMDIsIDEsIDIwMiwgOTUsIDIyMywgMTAyLCAxLCAKLSAgICAyMzcsIDE5LCAyMjMsIDEwMiwgMSwgMjA5LCAxMjgsIDIyMywgMTAyLCAxLCA0NiwgMjAyLCAyMzUsIDIyMywgMTAyLCAxLCAKLSAgICAyMDIsIDIzNSwgMjIzLCAxMDIsIDEsIDQ2LCAyMjksIDI1MCwgMjIzLCAxMDIsIDEsIDIyOSwgMjUwLCAyMjMsIDEwMiwgMSwgCi0gICAgNDYsIDIyOCwgMTksIDIyMywgMTAyLCAxLCAyMjgsIDE5LCAyMjMsIDEwMiwgMSwgNDYsIDIyNCwgMjQ3LCAyMjMsIDEwMiwgCi0gICAgMSwgMjI0LCAyNDcsIDIyMywgMTAyLCAxLCA0NiwgMjIxLCA0MCwgMjIzLCAxMDIsIDEsIDIyMSwgNDAsIDIyMywgMTAyLCAxLCAKLSAgICAyMTQsIDI0OSwgMjIzLCAxMDIsIDEsIDI1MCwgMywgMjIzLCAxMDIsIDEsIDIxOSwgMzQsIDIyMywgMTAyLCAxLCAyMTUsIAotICAgIDI2LCAyMjMsIDEwMiwgMSwgMjE3LCA2OSwgMjIzLCAxMDIsIDEsIDIxNiwgOTEsIDIyMywgMTAyLCAxLCA0NiwgMjEyLCAKLSAgICAyNTUsIDIyMywgMTAyLCAxLCAyMTIsIDI1NSwgMjIzLCAxMDIsIDEsIDIwOSwgMjAxLCAyMjMsIDEwMiwgNDIsIDEwNSwgCi0gICAgMjIzLCAxMDIsIDQyLCAxMDgsIDIyMywgMTAyLCA0MiwgMTQ3LCAyMjMsIDEwMiwgNDIsIDE0OSwgMjIzLCAxMDIsIDI0NSwgCi0gICAgMTE2LCA0MiwgMTQ5LCAyMjMsIDEwMiwgNDIsIDE3MCwgMjIzLCAxMDIsIDQyLCAyMDksIDE1MiwgMjIzLCAxMDIsIDQyLCAKLSAgICAyMDcsIDE1MSwgMjIzLCAxMDIsIDQyLCAxMTgsIDIzNiwgMTEsIDIzNywgNzgsIDEsIDI1MSwgMjgsIDIzNywgNzgsIDEsIAotICAgIDI0OCwgMTA1LCAyMzcsIDc4LCAxLCAyMzgsIDY3LCAyMzcsIDc4LCAxLCAyNDQsIDE3NiwgMjM3LCA3OCwgMSwgMjM3LCA2NywgCi0gICAgMjM3LCA3OCwgMSwgMjA0LCA3MCwgMjM3LCA3OCwgMSwgMjAyLCA5NCwgMjM3LCA3OCwgMSwgMjM3LCAxOSwgMjM3LCA3OCwgCi0gICAgMSwgMjA5LCAxMjgsIDIzNywgNzgsIDEsIDIwMiwgMjM1LCAyMzcsIDc4LCAxLCAyMjksIDI1MCwgMjM3LCA3OCwgMSwgMjI4LCAKLSAgICAxOSwgMjM3LCA3OCwgMSwgMjI0LCAyNDcsIDIzNywgNzgsIDEsIDIyMSwgNDAsIDIzNywgNzgsIDEsIDIxNCwgMjQ5LCAyMzcsIAotICAgIDc4LCAxLCAyNTAsIDIsIDIzNywgNzgsIDEsIDIxOSwgMzQsIDIzNywgNzgsIDEsIDIxNSwgMjYsIDIzNywgNzgsIDEsIDIxNywgCi0gICAgNjksIDIzNywgNzgsIDEsIDIxMiwgMjU1LCAyMzcsIDc4LCAxLCAyMDksIDIwMSwgMjM3LCA3OCwgNDIsIDEwNSwgMjM3LCAKLSAgICA3OCwgNDIsIDE3MCwgMjM3LCA3OCwgNDIsIDIwOSwgMTUyLCAyMzcsIDc4LCA0MiwgMjA3LCAxNTEsIDIzNywgNzgsIDQyLCAKLSAgICAxMTgsIDIzNiwgMTEsIDIxOCwgMTc4LCAxLCAyNTEsIDI1LCAyMTgsIDE3OCwgMSwgMjQ4LCAxMDgsIDIxOCwgMTc4LCAxLCAKLSAgICAyMzgsIDIzNywgMjE4LCAxNzgsIDEsIDI0NCwgMzksIDIxOCwgMTc4LCAxLCAyMzcsIDY3LCAyMTgsIDE3OCwgMSwgMjA0LCAKLSAgICA3NywgMjE4LCAxNzgsIDEsIDIwMiwgMTA5LCAyMTgsIDE3OCwgMSwgMjM3LCAyMSwgMjE4LCAxNzgsIDEsIDIwOSwgMTMyLCAKLSAgICAyMTgsIDE3OCwgMSwgMjAyLCAyMzYsIDIxOCwgMTc4LCAxLCAyMzAsIDIyLCAyMTgsIDE3OCwgMSwgMjI4LCAyNSwgMjE4LCAKLSAgICAxNzgsIDEsIDIyNCwgMjQ3LCAyMTgsIDE3OCwgMSwgMjIxLCA0MCwgMjE4LCAxNzgsIDEsIDIxMywgMTM3LCAyMTgsIDE3OCwgCi0gICAgMSwgMjUxLCA1OSwgMjE4LCAxNzgsIDEsIDIxOSwgMzQsIDIxOCwgMTc4LCAxLCAyMTUsIDI3LCAyMTgsIDE3OCwgMSwgMjE3LCAKLSAgICA3NCwgMjE4LCAxNzgsIDEsIDIxNSwgMjAwLCAyMTgsIDE3OCwgMSwgMjEyLCAyNTUsIDIxOCwgMTc4LCAxLCAyMDksIDIwNywgCi0gICAgMjE4LCAxNzgsIDQyLCAxMDUsIDIxOCwgMTc4LCA0MiwgMjA5LCAxNTIsIDIxOCwgMTc4LCA0MiwgMjA3LCAxNTEsIDIxOCwgCi0gICAgMTc4LCA0MiwgMTE4LCAyMzYsIDExLCAyMTgsIDE3OCwgNDIsIDEwOCwgMjE4LCAxNzgsIDQyLCAxNDcsIDIxOCwgMTc4LCAKLSAgICAyMDMsIDIzOCwgMjEzLCAxMzAsIDIyNiwgMTk2LCAxLCA2MywgMjI2LCAxOTYsIDEsIDI0OSwgMjU1LCAyMjYsIDE5NiwgMSwgCi0gICAgMjM5LCA3NSwgMjI2LCAxOTYsIDEsIDI0NSwgNTEsIDIyNiwgMTk2LCAxLCA3NCwgMjI2LCAxOTYsIDEsIDIwNiwgMTY0LCAKLSAgICAyMjYsIDE5NiwgMSwgNzUsIDIyNiwgMTk2LCAxLCAyMDMsIDEyNCwgMjI2LCAxOTYsIDEsIDIzMCwgNTQsIDIyNiwgMTk2LCAKLSAgICAxLCAxNTksIDIyNiwgMTk2LCAxLCAyMjYsIDE4NSwgMjI2LCAxOTYsIDEsIDIyMywgMTYzLCAyMjYsIDE5NiwgMSwgNzgsIAotICAgIDIyNiwgMTk2LCAxLCAxNDYsIDIyNiwgMTk2LCAxLCAyMTEsIDE2NywgMjI2LCAxOTYsIDEsIDIxMCwgNjksIDIyNiwgMTk2LCAKLSAgICAxLCA2OCwgMjI2LCAxOTYsIDEsIDI0MCwgMTc0LCAyMjYsIDE5NiwgMSwgMjE3LCAxMzQsIDIyNiwgMTk2LCAxLCAxOTQsIAotICAgIDIyNiwgMTk2LCAxLCAyMDcsIDI0NCwgMjI2LCAxOTYsIDEsIDI1MCwgMjMxLCAyMjYsIDE5NiwgMSwgMjQxLCA5MiwgMjI2LCAKLSAgICAxOTYsIDEsIDIyNiwgMTk5LCAyMjYsIDE5NiwgMSwgMjIxLCAyMjgsIDIyNiwgMTk2LCAxLCAyNDcsIDEyNSwgMjI2LCAxOTYsIAotICAgIDIwOCwgODIsIDgyLCAxMjksIDIzNiwgMjUzLCAxLCA2MywgMTI5LCAyMzYsIDI1MywgMSwgNzQsIDEyOSwgMjM2LCAyNTMsIAotICAgIDEsIDc1LCAxMjksIDIzNiwgMjUzLCAxLCA3OCwgMTI5LCAyMzYsIDI1MywgMSwgMTk4LCAxMjksIDIzNiwgMjUzLCAxLCAKLSAgICAyMDQsIDExMSwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMiwgMTI5LCAyMzYsIDI1MywgMSwgMjQ5LCAzMSwgMTI5LCAyMzYsIAotICAgIDI1MywgMSwgMTg1LCAxMjksIDIzNiwgMjUzLCAxLCAxOTIsIDEyOSwgMjM2LCAyNTMsIDEsIDIwMSwgMjAxLCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMjMsIDExMCwgMTI5LCAyMzYsIDI1MywgMSwgMjIyLCAyNDAsIDEyOSwgMjM2LCAyNTMsIDEsIDIyMiwgMjM5LCAKLSAgICAxMjksIDIzNiwgMjUzLCAxLCAyMTYsIDIyMCwgMTI5LCAyMzYsIDI1MywgMSwgMjE2LCAyMTksIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIyOCwgMTEzLCAxMjksIDIzNiwgMjUzLCAxLCAyMjksIDE0NCwgMTI5LCAyMzYsIDI1MywgMSwgMjM3LCAxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMSwgMjE1LCAzNiwgMTI5LCAyMzYsIDI1MywgMSwgMjE1LCAzNSwgMTI5LCAyMzYsIDI1MywgMSwgMjE0LCAKLSAgICAxNzcsIDEyOSwgMjM2LCAyNTMsIDEsIDE3MywgMTI5LCAyMzYsIDI1MywgMSwgMjE3LCAxMjYsIDEyOSwgMjM2LCAyNTMsIDEsIAotICAgIDIxMCwgMjIsIDEyOSwgMjM2LCAyNTMsIDEsIDIxMCwgMjEsIDEyOSwgMjM2LCAyNTMsIDEsIDIwOSwgMTg3LCAxMjksIDIzNiwgCi0gICAgMjUzLCAxLCAyMDksIDE4NiwgMTI5LCAyMzYsIDI1MywgMSwgMTM1LCAxMjksIDIzNiwgMjUzLCAxLCAyNDQsIDIxMiwgMTI5LCAKLSAgICAyMzYsIDI1MywgMTYsIDIwNSwgMjI0LCAxMjksIDIzNiwgMjUzLCAxNiwgMjA1LCAyMjMsIDEyOSwgMTkxLCAxLCA2MywgCi0gICAgMTI5LCAxOTEsIDEsIDc0LCAxMjksIDE5MSwgMSwgNzUsIDEyOSwgMTkxLCAxLCA3OCwgMTI5LCAxOTEsIDEsIDE5OCwgMTI5LCAKLSAgICAxOTEsIDEsIDIwNCwgMTExLCAxMjksIDE5MSwgMSwgMjQ5LCAzMiwgMTI5LCAxOTEsIDEsIDE4NSwgMTI5LCAxOTEsIDEsIAotICAgIDE5MiwgMTI5LCAxOTEsIDEsIDIwMSwgMjAxLCAxMjksIDE5MSwgMSwgMjIyLCAyNDAsIDEyOSwgMTkxLCAxLCAyMTYsIDIyMCwgCi0gICAgMTI5LCAxOTEsIDEsIDIyOCwgMTEzLCAxMjksIDE5MSwgMSwgMjI5LCAxNDQsIDEyOSwgMTkxLCAxLCAyMzcsIDEyLCAxMjksIAotICAgIDE5MSwgMSwgMjE1LCAzNiwgMTI5LCAxOTEsIDEsIDI1MCwgMTI2LCAyMTUsIDM2LCAxMjksIDE5MSwgMSwgMjE0LCAxNzcsIAotICAgIDEyOSwgMTkxLCAxLCAxNzMsIDEyOSwgMTkxLCAxLCAyMTcsIDEyNiwgMTI5LCAxOTEsIDEsIDIxMCwgMjIsIDEyOSwgMTkxLCAKLSAgICAxLCAyMDksIDE4NywgMTI5LCAxOTEsIDEsIDEzNSwgMTI5LCAxOTEsIDEsIDI0NCwgMjEyLCAxMjksIDE5MSwgMjM5LCAxMzgsIAotICAgIDI0MSwgMTEzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMTgsIDIzNywgMTM3LCAxMjksIDE5MSwgMjI3LCAzNiwgCi0gICAgMjE1LCAyMzMsIDEyOSwgMTkxLCAyMjcsIDM2LCAyMzEsIDU2LCAxMjksIDE5MSwgNDIsIDEwNSwgMTI5LCAxOTEsIDQyLCAKLSAgICAxMDgsIDEyOSwgMTkxLCA0MiwgMTQ3LCAxMjksIDE5MSwgNDIsIDE0OSwgMTI5LCAxOTEsIDQyLCAxNzAsIDEyOSwgMTkxLCAKLSAgICA0MiwgMTk1LCAxMjksIDE5MSwgNDIsIDIxMywgMTExLCAxMjksIDE5MSwgNDIsIDE5OSwgMTI5LCAxOTEsIDQyLCAyMjIsIAotICAgIDYzLCAxMjksIDE5MSwgNDIsIDIwOSwgMTUyLCAxMjksIDE5MSwgNDIsIDIwNywgMTUxLCAxMjksIDE5MSwgNDIsIDIwOSwgCi0gICAgNTMsIDEyOSwgMTkxLCA0MiwgMjM5LCAxNTMsIDEyOSwgMTkxLCA0MiwgMjQwLCAxOCwgMTI5LCAxOTEsIDQyLCAyMTIsIDc0LCAKLSAgICAxMjksIDE5MSwgNDIsIDIxMywgMTA1LCAxMjksIDE5MSwgNDIsIDExOCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMjAsIAotICAgIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMTI2LCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIzOSwgMTQ3LCAyMzYsIDExLCAKLSAgICAxMjksIDE5MSwgNDIsIDIzOSwgMjMzLCAyMzYsIDExLCAxMjksIDE5MSwgNDIsIDIxMiwgODgsIDIzNiwgMTEsIDEyOSwgCi0gICAgMTkxLCA0MiwgMjEzLCAxMTIsIDIzNiwgMTEsIDEyOSwgMTkxLCA0MiwgMjQxLCAxNDMsIDIzNiwgMTEsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjIyLCA2NCwgMjM2LCAxMSwgMTI5LCAxOTEsIDQyLCAxMTgsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE0NywgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMzksIDIzMywgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMTIsIDg4LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIAotICAgIDIxMywgMTEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgCi0gICAgNjQsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCAxNTMsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA3LCAxNTIsIAotICAgIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjA5LCA1NCwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDE1NCwgMjA5LCAzNiwgCi0gICAgMTI5LCAxOTEsIDQyLCAyNDAsIDE5LCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMiwgNzUsIDIwOSwgMzYsIDEyOSwgMTkxLCAKLSAgICA0MiwgMjEzLCAxMDYsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMjQxLCAxMzUsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgCi0gICAgMjIyLCA1OSwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAxMTgsIDIzNiwgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCA0MiwgMTIwLCAKLSAgICAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDEyNiwgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIAotICAgIDE0NywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAxOTEsIDQyLCAyMzksIDIzMywgMjM2LCAxMiwgMjA5LCAzNiwgMTI5LCAKLSAgICAxOTEsIDQyLCAyMTIsIDg4LCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIxMywgMTEyLCAyMzYsIDEyLCAyMDksIAotICAgIDM2LCAxMjksIDE5MSwgNDIsIDI0MSwgMTQzLCAyMzYsIDEyLCAyMDksIDM2LCAxMjksIDE5MSwgNDIsIDIyMiwgNjQsIDIzNiwgCi0gICAgMTIsIDIwOSwgMzYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMTE4LCAyMDcsIDE1NywgMTI5LCAxOTEsIDIzOSwgMTM4LCAxMjAsIAotICAgIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDEyNiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAyMzksIDEzOCwgMjM5LCAKLSAgICAxNDcsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIzOSwgMjMzLCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgCi0gICAgMTM4LCAyMTIsIDg4LCAyMDcsIDE1NiwgMTI5LCAxOTEsIDIzOSwgMTM4LCAyMTMsIDExMiwgMjA3LCAxNTYsIDEyOSwgMTkxLCAKLSAgICAyMzksIDEzOCwgMjQxLCAxNDMsIDIwNywgMTU2LCAxMjksIDE5MSwgMjM5LCAxMzgsIDIyMiwgNjQsIDIwNywgMTU2LCAxMjksIAotICAgIDE5MSwgMjM5LCAxMzgsIDIwOSwgMTUzLCAyMDcsIDE1NiwgMjI5LCAxMzEsIDEsIDYzLCAyMjksIDEzMSwgMjIsIDIsIDc1LCAKLSAgICAyMjksIDEzMSwgMjIsIDIsIDY4LCAyMjksIDEzMSwgMjIsIDIsIDEyNSwgMTQ2LCAyMjksIDEzMSwgMjIsIDIsIDc0LCAyMjksIAotICAgIDEzMSwgMjIsIDIsIDc4LCAyMjksIDEzMSwgMjIsIDIyNywgMTk2LCA4MiwgMjI5LCAxMzEsIDIsIDUyLCAyMTUsIDI1MywgCi0gICAgNTYsIDIyOSwgMTMxLCAyLCAyNTAsIDE4MCwgMjI5LCAxMzEsIDIsIDIwNSwgMTk5LCAyMjksIDEzMSwgMSwgMTczLCAyMjksIAotICAgIDEzMSwgMSwgMjI5LCAxNDQsIDIyOSwgMTMxLCAxLCAyMzksIDgsIDIyOSwgMTMxLCAxLCAyMzgsIDExOSwgMjI5LCAxMzEsIAotICAgIDEsIDI0NywgOTIsIDIyOSwgMTMxLCAxLCAyNDYsIDE5OSwgMjI5LCAxMzEsIDEsIDIzMCwgMTgxLCAyMjksIDEzMSwgMSwgCi0gICAgMjIxLCAxMSwgMjI5LCAxMzEsIDEsIDIwNywgMjQxLCAyMjksIDEzMSwgMSwgMjA3LCAyMjksIDIyOSwgMTMxLCAxLCAyNDQsIAotICAgIDEyMCwgMjI5LCAxMzEsIDEsIDI0NCwgMTA0LCAyMjksIDEzMSwgMSwgMjIxLCAyMjcsIDIyOSwgMTMxLCAxLCAyMTAsIDIyLCAKLSAgICAyMjksIDEzMSwgMSwgMjA5LCAxMDgsIDIyOSwgMTMxLCAxLCAyNDQsIDIxMiwgMjI5LCAxMzEsIDEsIDI0NCwgMSwgMjI5LCAKLSAgICAxMzEsIDEsIDIwMSwgMjAxLCAyMjksIDEzMSwgMSwgMTg1LCAyMjksIDEzMSwgMSwgMjE4LCAyMDgsIDIyOSwgMTMxLCAxLCAKLSAgICAyNDksIDMyLCAyMjksIDEzMSwgMSwgMjQ4LCA5OCwgMjI5LCAxMzEsIDEsIDE5MiwgMjI5LCAxMzEsIDEsIDE5OCwgMjI5LCAKLSAgICAxMzEsIDEsIDIxNiwgMjIwLCAyMjksIDEzMSwgMSwgMjI4LCAxMTMsIDIyOSwgMTMxLCAxLCAyMDYsIDg2LCAyMjksIDEzMSwgCi0gICAgMSwgMjEzLCA5MCwgMjI5LCAxMzEsIDEsIDIxMSwgMTY0LCAyMjksIDEzMSwgMSwgMjE1LCAzNiwgMjI5LCAxMzEsIDEsIAotICAgIDIwMiwgMTE2LCAyMjksIDEzMSwgMSwgMTUyLCAyMjksIDEzMSwgMSwgMjI5LCA0NywgMjI5LCAxMzEsIDEsIDIwNywgMjA5LCAKLSAgICAyMjksIDEzMSwgMiwgMjQ4LCAyMzEsIDU1LCAyMjksIDEzMSwgMiwgMjQ3LCAxMywgMjI5LCAxMzEsIDIsIDcwLCA1NiwgCi0gICAgMjI5LCAxMzEsIDIwNSwgMjA0LCAyMjksIDEzMSwgMTcsIDEwNSwgMjI5LCAxMzEsIDE3LCAxMDgsIDIyOSwgMTMxLCAxNywgCi0gICAgMTQ3LCAyMjksIDEzMSwgMTcsIDE0OSwgMjI5LCAxMzEsIDQyLCAyMDksIDE1MiwgMjI5LCAxMzEsIDQyLCAyMDcsIDE1MSwgCi0gICAgMjI5LCAxMzEsIDQyLCAxMTgsIDIzNiwgMTEsIDIyOSwgMTMxLCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDEzMSwgMjE3LCAKLSAgICAxNzksIDI0MywgODUsIDIyOSwgMTMxLCAyMTcsIDE3OSwgNSwgMjQ2LCA2MSwgMjI5LCAxMzEsIDIxNywgMTc5LCAyNDYsIAotICAgIDYxLCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NSwgMTM5LCAxNDIsIDIyOSwgMTMxLCAyMTcsIDE3OSwgMjI1LCAxMTYsIDIyOSwgCi0gICAgMTMxLCAyMTcsIDE3OSwgMjI3LCA1LCAyMjksIDEzMSwgMjE3LCAxNzksIDI0NCwgMTY2LCAyMjksIDEzMSwgMjE3LCAxNzksIAotICAgIDUyLCAyNDQsIDE2NiwgMjI5LCAxMzEsIDIxNywgMTc5LCAyMjcsIDEwOCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCA2NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI4LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM3LCAxOSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI0LCAyNDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNywgNjksIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwNCwgNzAsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxMiwgMjU1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMTYsIDkxLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDgsIDEwNSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjA5LCAyMDEsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNCwgMjI1LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyMjksIDI1MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjIxLCA0MCwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgMjI5LCAxMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIxNSwgMjYsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIxNCwgMjQ5LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNDAsIDYwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNTEsIDMwLCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyNTAsIDIsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDI0MywgMjU0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMzgsIDY3LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDQsIDE3NywgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjM4LCAxMDcsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgMTI4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAKLSAgICAyMDIsIDk0LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxLCAyNDMsIDI1MSwgMzgsIDIxMSwgMjM4LCAyNTAsIDE0MSwgMSwgCi0gICAgMjAyLCAyMzUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIDIwOSwgOTQsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDEsIAotICAgIDIwOSwgNzMsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAxMDUsIDM4LCAyMTEsIDIzOCwgMjUwLCAxNDEsIDQyLCAKLSAgICAyNDAsIDE4LCAzOCwgMjExLCAyMzgsIDI1MCwgMTQxLCAxNDEsIDIzMSwgMzEsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzcsIAotICAgIDQzLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjI4LCAyOCwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIzNywgMTQ4LCAzOCwgCi0gICAgMTUzLCAyNTAsIDE0MSwgMSwgMjI1LCA1LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjE3LCAxMTksIDM4LCAxNTMsIDI1MCwgCi0gICAgMTQxLCAxLCAyMDQsIDcwLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQxLCAxNSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIAotICAgIDIxNiwgMTIyLCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQ4LCAxMzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIDE2OSwgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI0MSwgMTYsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzAsIDIyLCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjIxLCAxNzgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMjksIDE0MCwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDIxNSwgMjgsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNDEsIDE0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjQwLCA0NywgCi0gICAgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDI1MSwgMzAsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyNTEsIDU5LCAzOCwgMTUzLCAKLSAgICAyNTAsIDE0MSwgMSwgMjQ0LCAyMDcsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMzgsIDE4MSwgMzgsIDE1MywgMjUwLCAxNDEsIAotICAgIDEsIDI0NCwgMTg0LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjM4LCAxMTQsIDM4LCAxNTMsIDI1MCwgMTQxLCAxLCAyMDksIAotICAgIDI1MSwgMzgsIDE1MywgMjUwLCAxNDEsIDEsIDIwMiwgMTA3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCAxMDAsIDM4LCAKLSAgICAxNTMsIDI1MCwgMTQxLCAxLCAyMDMsIDQ3LCAzOCwgMTUzLCAyNTAsIDE0MSwgMSwgMjA5LCA4OCwgMzgsIDE1MywgMjUwLCAKLSAgICAxNDEsIDEsIDIwMiwgMTEwLCAzOCwgMTUzLCAyNTAsIDE0MSwgNDIsIDEwNSwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDksIAotICAgIDE1MiwgMzgsIDE1MywgMjUwLCAxNDEsIDQyLCAyMDcsIDE1MSwgMjI1LCAxMTUsIDEsIDI1MSwgMjgsIDIyNSwgMTE1LCAxLCAKLSAgICAyNDgsIDEwNSwgMjI1LCAxMTUsIDEsIDI0OCwgOTIsIDIyNSwgMTE1LCAxLCAyMzgsIDY3LCAyMjUsIDExNSwgMSwgMjM4LCAKLSAgICA5MiwgMjI1LCAxMTUsIDEsIDI0NCwgMTc3LCAyMjUsIDExNSwgMSwgMjM3LCA2NywgMjI1LCAxMTUsIDEsIDIwNCwgNzAsIAotICAgIDIyNSwgMTE1LCAyLCAyMDcsIDI5LCAyMjUsIDExNSwgMSwgMjAyLCA5NSwgMjI1LCAxMTUsIDEsIDIwMiwgNzMsIDIyNSwgCi0gICAgMTE1LCAxLCAyMzAsIDE2MywgMjI1LCAxMTUsIDEsIDIzMCwgMTQ1LCAyMjUsIDExNSwgMSwgMjM3LCAxOSwgMjI1LCAxMTUsIAotICAgIDEsIDIwOSwgMTI4LCAyMjUsIDExNSwgMSwgMjAyLCAyMzUsIDIyNSwgMTE1LCAxLCAyMjksIDI1MCwgMjI1LCAxMTUsIDEsIAotICAgIDIwMywgMTc5LCAyMjUsIDExNSwgMSwgMjI5LCAxMzMsIDIyNSwgMTE1LCAxLCAyMjgsIDE5LCAyMjUsIDExNSwgMSwgMjQzLCAKLSAgICAyNTAsIDIyNSwgMTE1LCAxLCAyMDksIDk5LCAyMjUsIDExNSwgMSwgMjI0LCAyNDcsIDIyNSwgMTE1LCAxLCAyMjEsIDQwLCAKLSAgICAyMjUsIDExNSwgMSwgMjE0LCAyNDksIDIyNSwgMTE1LCAxLCAyNTAsIDMsIDIyNSwgMTE1LCAxLCAyNTEsIDIzNCwgMjI1LCAKLSAgICAxMTUsIDEsIDIxOSwgMzQsIDIyNSwgMTE1LCAxLCAyNDAsIDYwLCAyMjUsIDExNSwgMSwgMjE1LCAyNiwgMjI1LCAxMTUsIDEsIAotICAgIDIxNywgNjksIDIyNSwgMTE1LCAxLCAyMDMsIDE1NywgMjI1LCAxMTUsIDEsIDIxNywgOTUsIDIyNSwgMTE1LCAxLCAyMTYsIAotICAgIDkxLCAyMjUsIDExNSwgMSwgMjEyLCAyNTUsIDIyNSwgMTE1LCAxLCAyMTEsIDEzMywgMjI1LCAxMTUsIDEsIDIwOSwgMjAxLCAKLSAgICAyMjUsIDExNSwgMjUxLCAxNDYsIDEzMSwgNTUsIDIyNSwgMTE1LCAyNTEsIDE0NiwgMTMxLCA1NiwgMjI1LCAxMTUsIDQyLCAKLSAgICAxMDUsIDIyNSwgMTE1LCA0MiwgMTcwLCAyMjUsIDExNSwgNDIsIDIwOSwgMTUyLCAyMjUsIDExNSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMjUsIDExNSwgNDIsIDExOCwgMjM2LCAxMSwgMjI1LCAxMTUsIDIxNywgMTc5LCAyMTEsIDk0LCAyMjUsIDExNSwgMjE3LCAKLSAgICAxNzksIDIzOSwgMjEyLCAyMjUsIDExNSwgMjE3LCAxNzksIDUyLCA3MCwgMjA0LCA1LCAyNDMsIDg1LCAyMjUsIDExNSwgCi0gICAgMjE3LCAxNzksIDcwLCAyMDQsIDUsIDI0MywgODUsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjQzLCA4NSwgMjI1LCAxMTUsIAotICAgIDIxNywgMTc5LCAxMjAsIDI0MywgODMsIDIyNSwgMTE1LCAyMTcsIDE3OSwgMjI3LCAxMTUsIDI0MCwgNywgMjUwLCAxNCwgMSwgCi0gICAgNjMsIDI1MCwgMTQsIDEsIDI1MiwgMjUsIDI1MCwgMTQsIDEsIDI1MCwgMTc4LCAyNTAsIDE0LCAxLCAyNTEsIDI0MCwgMjUwLCAKLSAgICAxNCwgMSwgMjUwLCAyMzEsIDI1MCwgMTQsIDEsIDI1MSwgMjQxLCAyNTAsIDE0LCAxLCAyNTEsIDEwOSwgMjUwLCAxNCwgMSwgCi0gICAgMjUxLCAxMDUsIDI1MCwgMTQsIDEsIDc0LCAyNTAsIDE0LCAxLCAyNDEsIDE2MSwgMjUwLCAxNCwgMSwgNzgsIDI1MCwgMTQsIAotICAgIDEsIDIyMCwgMTgsIDI1MCwgMTQsIDEsIDc1LCAyNTAsIDE0LCAxLCAyMzEsIDgzLCAyNTAsIDE0LCAxLCA2OCwgMjUwLCAxNCwgCi0gICAgMSwgMjA2LCAxNzgsIDI1MCwgMTQsIDEsIDIyOSwgMjAxLCAyNTAsIDE0LCAxLCAyMDMsIDE3NiwgMjUwLCAxNCwgMSwgMjAzLCAKLSAgICAxMzgsIDI1MCwgMTQsIDEsIDIwMywgMTQ4LCAyNTAsIDE0LCAxLCAyMzgsIDE5MCwgMjUwLCAxNCwgMSwgMjM4LCAxNTAsIAotICAgIDI1MCwgMTQsIDEsIDIzOCwgMTA1LCAyNTAsIDE0LCAxLCAyNDYsIDIzOCwgMjUwLCAxNCwgMSwgMjMwLCAxNjEsIDI1MCwgCi0gICAgMTQsIDEsIDIwOSwgMTg3LCAyNTAsIDE0LCAxLCAyMDksIDkyLCAyNTAsIDE0LCAxLCAyNDQsIDc1LCAyNTAsIDE0LCAxLCAKLSAgICAyNDMsIDI0OCwgMjUwLCAxNCwgMSwgMjA3LCAyMzYsIDI1MCwgMTQsIDEsIDIxOSwgMzQsIDI1MCwgMTQsIDEsIDI0MCwgNjAsIAotICAgIDI1MCwgMTQsIDEsIDI0OCwgMTYyLCAyNTAsIDE0LCAxLCAyNDgsIDk0LCAyNTAsIDE0LCAxLCAyMjIsIDE5MCwgMjUwLCAxNCwgCi0gICAgMSwgMjIyLCAxMDYsIDI1MCwgMTQsIDEsIDIyMiwgMTA3LCAyNTAsIDE0LCAxLCAyMjIsIDI0MCwgMjUwLCAxNCwgMSwgMjIxLCAKLSAgICAxLCAyNTAsIDE0LCAxLCAyMjEsIDIyMiwgMjUwLCAxNCwgMSwgMjI1LCAyMCwgMjUwLCAxNCwgMSwgMjM2LCAxODYsIDI1MCwgCi0gICAgMTQsIDEsIDIwMiwgMTY2LCAyNTAsIDE0LCAxLCAyMDMsIDUyLCAyNTAsIDE0LCAxLCAyMDYsIDU1LCAyNTAsIDE0LCAxLCAKLSAgICAyMTYsIDE1OCwgMjUwLCAxNCwgMSwgMjI3LCAyMzQsIDI1MCwgMTQsIDEsIDIxNCwgMTc3LCAyNTAsIDE0LCAxLCAyMDIsIAotICAgIDkyLCAyNTAsIDE0LCAxLCAyMTMsIDQzLCAyNTAsIDE0LCAxLCAyMDIsIDcxLCAyNTAsIDE0LCAxLCAyMTIsIDE2OSwgMjUwLCAKLSAgICAxNCwgMSwgMjExLCAxMzQsIDI1MCwgMTQsIDEsIDIzNywgNjcsIDI1MCwgMTQsIDI1MSwgMTQ2LCA4MiwgMjA4LCAyMTMsIAotICAgIDEyMCwgMTg3LCAxMTUsIDExOCwgNzAsIDIxNywgMTc4LCA1LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgCi0gICAgMjI4LCA4LCAxMjAsIDE4NywgMTE1LCAxMTgsIDcwLCAyMTcsIDE3OCwgMjI4LCA4LCAxMTgsIDcwLCAxMTUsIDEyMCwgMTg3LCAKLSAgICAyMTcsIDE3OCwgMjI4LCA4LCAxMjAsIDIxNSwgMjUwLCAxMTUsIDExOCwgMjE1LCAyNTMsIDIxNywgMTc4LCAyMjgsIDgsIAotICAgIDExOCwgMjE1LCAyNTMsIDExNSwgMTIwLCAyMTUsIDI1MCwgMjE3LCAxNzgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI1MSwgCi0gICAgMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDI0OCwgMTA1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAKLSAgICAyMTksIDcwLCAxLCAyNDQsIDE3NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCA2NywgMjMxLCAxMCwgMjE5LCA3MCwgMSwgCi0gICAgMjA0LCA3MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjAyLCA5NSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjM3LCAxOSwgMjMxLCAKLSAgICAxMCwgMjE5LCA3MCwgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIwMiwgMjM1LCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCAxLCAyMjksIDI1MCwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCA3MCwgMSwgMjI0LCAKLSAgICAyNDcsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIyMSwgNDAsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNCwgMjQ5LCAyMzEsIAotICAgIDEwLCAyMTksIDcwLCAxLCAyNTAsIDMsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxOSwgMzQsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNywgNjksIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxNiwgOTEsIAotICAgIDIzMSwgMTAsIDIxOSwgNzAsIDEsIDIxMiwgMjU1LCAyMzEsIDEwLCAyMTksIDcwLCAxLCAyMDksIDIwMSwgMjMxLCAxMCwgCi0gICAgMjE5LCA3MCwgNDIsIDEwNSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDEwOCwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0NywgCi0gICAgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCA3MCwgNDIsIDIwOSwgMTUyLCAyMzEsIDEwLCAyMTksIAotICAgIDcwLCA0MiwgMjA3LCAxNTEsIDIzMSwgMTAsIDIxOSwgNzAsIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgNzAsIAotICAgIDQyLCAxMTgsIDIwOSwgMzYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyNTEsIDI4LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgCi0gICAgMjQ4LCAxMDUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzgsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjQ0LCAxNzcsIAotICAgIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjA0LCA2OSwgMjMxLCAxMCwgCi0gICAgMjE5LCAxNDksIDEsIDIwMiwgOTUsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMzEsIDEwLCAyMTksIDE0OSwgCi0gICAgMSwgMjA5LCAxMjgsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAyMDIsIDIzNSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyOSwgCi0gICAgMjUwLCAyMzEsIDEwLCAyMTksIDE0OSwgMSwgMjI4LCAxOSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIyNCwgMjQ2LCAyMzEsIAotICAgIDEwLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNCwgMjQ5LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgMSwgMjE5LCAzNCwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIzMSwgMTAsIDIxOSwgMTQ5LCAxLCAKLSAgICAyMTIsIDI1NSwgMjMxLCAxMCwgMjE5LCAxNDksIDEsIDIwOSwgMjAxLCAyMzEsIDEwLCAyMTksIDE0OSwgNDIsIDEwNSwgCi0gICAgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMDgsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgMTQ3LCAyMzEsIDEwLCAyMTksIAotICAgIDE0OSwgNDIsIDE0OSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAKLSAgICAyMDcsIDE1MSwgMjMxLCAxMCwgMjE5LCAxNDksIDQyLCAxMTgsIDIzNiwgMTEsIDIzMSwgMTAsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTE4LCAyMDksIDM2LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDI1MSwgMjgsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjQ4LCAKLSAgICAxMDUsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjM4LCA2NywgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyNDQsIDE3NywgCi0gICAgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDY3LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIwNCwgNjksIDIxNywgMjAzLCAKLSAgICAyMTksIDE0OSwgMSwgMjAyLCA5NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMzcsIDE5LCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDEsIDIwMiwgMjM1LCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOSwgMjUwLCAyMTcsIDIwMywgMjE5LCAxNDksIDEsIDIyOCwgCi0gICAgMTksIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjI0LCAyNDYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjIxLCA0MCwgMjE3LCAKLSAgICAyMDMsIDIxOSwgMTQ5LCAxLCAyMTQsIDI0OSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAxLCAyMTksIDM0LCAyMTcsIDIwMywgCi0gICAgMjE5LCAxNDksIDEsIDIxNSwgMjYsIDIxNywgMjAzLCAyMTksIDE0OSwgMSwgMjEyLCAyNTUsIDIxNywgMjAzLCAyMTksIAotICAgIDE0OSwgMSwgMjA5LCAyMDEsIDIxNywgMjAzLCAyMTksIDE0OSwgMjE0LCAxNjgsIDgyLCAyMTcsIDIwMywgMjE5LCAxNDksIAotICAgIDIwNywgMTc0LCAyMTQsIDE2OCwgODIsIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQ1LCAxMzAsIAotICAgIDIxNywgMjAzLCAyMTksIDE0OSwgMjM5LCAxNDcsIDE4NywgMywgMjQzLCA4NSwgMjE3LCAyMDMsIDIxOSwgMTQ5LCA0MiwgCi0gICAgMTA1LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAxMDgsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDE0NywgMjE3LCAyMDMsIAotICAgIDIxOSwgMTQ5LCA0MiwgMTQ5LCAyMTcsIDIwMywgMjE5LCAxNDksIDQyLCAyMDksIDE1MiwgMjE3LCAyMDMsIDIxOSwgMTQ5LCAKLSAgICA0MiwgMjA3LCAxNTEsIDIxNywgMjAzLCAyMTksIDE0OSwgNDIsIDExOCwgMjM2LCAxMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgNjMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAKLSAgICAxMDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc1LCAzOCwgCi0gICAgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDc0LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCA3OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjIwLCA3MywgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyMjAsIDczLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTEsIDIzMiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDgsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgODEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCAxMDMsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgMTIyLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTEsIDEwNywgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQwLCAxODEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MCwgOCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDgsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI1MSwgOTAsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCA5MCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjUxLCAxMDEsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgNzEsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjIwLCA3MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCAzOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDM5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTEsIDEwMCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjQxLCAxMDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTAzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNTAsIDIzMSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTEsIDk4LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNDEsIDcwLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgNzAsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgODksIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjQxLCA4OSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjQxLCA1NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNDEsIDU2LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgMjIzLCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDc4LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MSwgOTcsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjE5LCAyMzUsIDI0MSwgNDYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIyMCwgOSwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjM1LCAxNjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDI0MSwgMTY5LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0OCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgCi0gICAgMjAzLCA0MCwgMjMwLCAyMjYsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIwMywgNDAsIDIxOSwgMjQ2LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgMjM1LCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMDMsIDQwLCAyNTAsIDE0NCwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NiwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA4MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIDIzNSwgMjUxLCA5NCwgMzgsIDIwNywgMTc4LCAxLCAKLSAgICAyMTksIDIzNSwgMjUwLCA3NSwgMzgsIDIwNywgMTc4LCAxLCAyMDMsIDQwLCAyNTAsIDc1LCAzOCwgMjA3LCAxNzgsIDEsIAotICAgIDIxOSwgMjM1LCAyNDEsIDcsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjQxLCA3LCAzOCwgMjA3LCAxNzgsIDEsIDIxOSwgCi0gICAgMjM1LCAyNTAsIDQ5LCAzOCwgMjA3LCAxNzgsIDEsIDIwMywgNDAsIDI1MCwgNDksIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAKLSAgICAyMzUsIDI1MSwgOTEsIDM4LCAyMDcsIDE3OCwgMSwgMjAzLCA0MCwgMjUxLCA5MSwgMzgsIDIwNywgMTc4LCAxLCAyMTksIAotICAgIDIzNSwgMjE5LCAyMjQsIDM4LCAyMDcsIDE3OCwgMSwgMjE5LCAyMzUsIDI0OCwgMjE1LCAzOCwgMTQ1LCA2LCAxLCA2MywgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjUyLCAyNSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDYsIDEsIDI1MCwgMjQyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNjYsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTY1LCAzOCwgMTQ1LCA2LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNiwgMSwgNzQsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0NiwgMTcsIDc0LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDI0MSwgMTUzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNiwgMSwgMjQxLCAKLSAgICAxNDcsIDM4LCAxNDUsIDYsIDEsIDc1LCAzOCwgMTQ1LCA2LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEzMiwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMjksIDM4LCAxNDUsIDYsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMjMyLCAKLSAgICAzOCwgMTQ1LCA2LCAxLCAyNDEsIDEyMiwgMzgsIDE0NSwgNiwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDYsIDEsIDI0MSwgCi0gICAgMTAzLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDkyLCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA2LCAxLCA3OCwgCi0gICAgMzgsIDE0NSwgNiwgMSwgMjIwLCAxOCwgMzgsIDE0NSwgNiwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNiwgMSwgCi0gICAgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIDYsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNDYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIDYsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDYsIDEsIDIxMiwgMjI4LCAyNDEsIAotICAgIDI4LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIDE3LCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNiwgMSwgMjQwLCAKLSAgICAyNTAsIDM4LCAxNDUsIDYsIDEsIDI0MSwgNzAsIDM4LCAxNDUsIDYsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA2LCAxLCAyNDEsIAotICAgIDE2NywgMzgsIDE0NSwgNiwgMSwgNjgsIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA2LCAxLCAyMjIsIDcxLCAKLSAgICAyMDcsIDI0LCAzOCwgMTQ1LCA2LCAxLCAyMTUsIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNiwgMSwgMjQwLCAyMjYsIDM4LCAKLSAgICAxNDUsIDYsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCA2LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNiwgMSwgMjQxLCA2OSwgNTQsIAotICAgIDM4LCAxNDUsIDYsIDEsIDIwNiwgMTkzLCAzOCwgMTQ1LCA1LCAxLCA2MywgMzgsIDE0NSwgNSwgMSwgMjUyLCAyNSwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjQxLCAxNzEsIDM4LCAxNDUsIDUsIDEsIDI1MCwgMjQyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2OSwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCA4OSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNjYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTY1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNTAsIDIyNiwgMzgsIDE0NSwgNSwgMSwgNzQsIDM4LCAxNDUsIDUsIDEsIDI0NiwgMTcsIDc0LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2MSwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNTQsIDM4LCAxNDUsIDUsIDEsIDI0MSwgCi0gICAgMTUzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE1MCwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxNDcsIDM4LCAxNDUsIDUsIDEsIDc1LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyMzEsIDgzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEzMiwgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMjksIAotICAgIDM4LCAxNDUsIDUsIDEsIDI1MSwgNDcsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMjMyLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDEyMiwgCi0gICAgMzgsIDE0NSwgNSwgMSwgMjQxLCAxMDUsIDM4LCAxNDUsIDUsIDEsIDI0MSwgMTAzLCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDkyLCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDEsIDU2LCAzOCwgMTQ1LCA1LCAxLCA3OCwgMzgsIDE0NSwgNSwgMSwgMjIwLCAxOCwgMzgsIAotICAgIDE0NSwgNSwgMSwgMjIyLCA3MSwgMjIwLCA3MywgMzgsIDE0NSwgNSwgMSwgMjE1LCAxNDEsIDIyMCwgNzMsIDM4LCAxNDUsIAotICAgIDUsIDEsIDIyMCwgNzIsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNDYsIDM4LCAxNDUsIDUsIDEsIDI0MSwgOTcsIDM4LCAxNDUsIAotICAgIDUsIDEsIDI0MSwgMjgsIDM4LCAxNDUsIDUsIDEsIDIxMiwgMjI4LCAyNDEsIDI4LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE3LCAKLSAgICAzOCwgMTQ1LCA1LCAxLCAyNDAsIDI1MiwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyNTAsIDM4LCAxNDUsIDUsIDEsIDI0MSwgNzAsIAotICAgIDM4LCAxNDUsIDUsIDEsIDI0MCwgMjM5LCAzOCwgMTQ1LCA1LCAxLCAyNDEsIDE2NywgMzgsIDE0NSwgNSwgMSwgNjgsIDM4LCAKLSAgICAxNDUsIDUsIDEsIDIwNiwgMTc4LCAzOCwgMTQ1LCA1LCAxLCAyMjIsIDcxLCAyMDcsIDI0LCAzOCwgMTQ1LCA1LCAxLCAyMTUsIAotICAgIDE0MSwgMjA3LCAyNCwgMzgsIDE0NSwgNSwgMSwgMjQwLCAyMjYsIDM4LCAxNDUsIDUsIDEsIDI0MCwgMTgxLCAzOCwgMTQ1LCAKLSAgICA1LCAxLCAyNDAsIDE3NiwgMzgsIDE0NSwgNSwgMSwgMjQxLCA2OSwgNTQsIDM4LCAxNDUsIDUsIDEsIDIwNiwgMTkzLCAzOCwgCi0gICAgMTQ1LCA0MiwgMTA1LCAzOCwgMTQ1LCA0MiwgMTcwLCAzOCwgMTQ1LCA0MiwgMjA5LCAxNTIsIDM4LCAxNDUsIDQyLCAyNDAsIAotICAgIDE4LCAzOCwgMTQ1LCA0MiwgMTE4LCAyMzYsIDExLCAzOCwgMTQ1LCA0MiwgMTE4LCAyMDksIDM2LCAyMTUsIDEyOSwgMTcsIAotICAgIDEwNSwgMjE1LCAxMjksIDE3LCAxMDgsIDIxNSwgMTI5LCAxNywgMTQ3LCAyMTUsIDEyOSwgMTcsIDE0OSwgMjE1LCAxMjksIAotICAgIDE3LCAxNzAsIDIxNSwgMTI5LCAxNywgMTk1LCAyMTUsIDEyOSwgMTcsIDIxMywgMTExLCAyMTUsIDEyOSwgMTcsIDE5OSwgCi0gICAgMjE1LCAxMjksIDE3LCAyMjIsIDYzLCAyMTUsIDEyOSwgNDIsIDIwOSwgMTUyLCAyMTUsIDEyOSwgNDIsIDIwNywgMTUxLCAKLSAgICAyMTUsIDEyOSwgNDIsIDIwOSwgNTMsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNTMsIDIxNSwgMTI5LCA0MiwgMjQwLCAxOCwgCi0gICAgMjE1LCAxMjksIDQyLCAyMTIsIDc0LCAyMTUsIDEyOSwgNDIsIDIxMywgMTA1LCAyMTUsIDEyOSwgNDIsIDI0MSwgMTM0LCAKLSAgICAyMTUsIDEyOSwgNDIsIDIyMiwgNTgsIDIxNSwgMTI5LCA0MiwgMTE4LCAyMzYsIDExLCAyMTUsIDEyOSwgNDIsIDEyMCwgCi0gICAgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAxMjYsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjM5LCAxNDcsIDIzNiwgMTEsIAotICAgIDIxNSwgMTI5LCA0MiwgMjM5LCAyMzMsIDIzNiwgMTEsIDIxNSwgMTI5LCA0MiwgMjEyLCA4OCwgMjM2LCAxMSwgMjE1LCAKLSAgICAxMjksIDQyLCAyMTMsIDExMiwgMjM2LCAxMSwgMjE1LCAxMjksIDQyLCAyNDEsIDE0MywgMjM2LCAxMSwgMjE1LCAxMjksIAotICAgIDQyLCAyMjIsIDY0LCAyMzYsIDExLCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjM3LCAxMzcsIDIxNSwgMTI5LCAyMzksIAotICAgIDEzOCwgMTE4LCAyMTcsIDU1LCAyMTUsIDEyOSwgMjM5LCAxMzgsIDExOCwgMjA5LCA2MCwgMjE1LCAxMjksIDIzOSwgMTM4LCAKLSAgICAxMjAsIDIwOSwgNTcsIDE0NCwgMiwgMjQ3LCA1MiwgMTQ0LCAyLCAyNTAsIDE4MCwgMTQ0LCAyLCAyMDUsIDE5OSwgMTQ0LCAKLSAgICAyLCAyMzAsIDEzNSwgMTQ0LCAyLCAyMDYsIDIyMiwgMTQ0LCAxLCA2MywgMTQ0LCAxLCAyNTIsIDI1LCAxNDQsIDEsIDc1LCAKLSAgICAxNDQsIDEsIDIzMSwgODMsIDE0NCwgMSwgNjgsIDE0NCwgMSwgMjA2LCAxNzgsIDE0NCwgMSwgMTI1LCAxNDYsIDE0NCwgMSwgCi0gICAgMTI1LCAyMTUsIDE4NiwgMTQ0LCAxLCAxMjUsIDE1OSwgMTQ0LCAxLCAxMjUsIDIyNywgNzgsIDE0NCwgMSwgNzQsIDE0NCwgCi0gICAgMSwgMjUxLCA2NCwgMTQ0LCAxLCA3OCwgMTQ0LCAxLCAyNTAsIDM0LCAxNDQsIDEsIDE3MywgMTQ0LCAxLCAyMjksIDE0NCwgCi0gICAgMTQ0LCAxLCAyMzksIDgsIDE0NCwgMSwgMjM4LCAxMTksIDE0NCwgMSwgMjIyLCAyMDMsIDE0NCwgMSwgMjQ3LCA5MiwgMTQ0LCAKLSAgICAxLCAyNDYsIDE5OSwgMTQ0LCAxLCAyMzAsIDE4MSwgMTQ0LCAxLCAyMzAsIDE0OSwgMTQ0LCAxLCAyMjEsIDExLCAxNDQsIDEsIAotICAgIDIwNywgMjQxLCAxNDQsIDEsIDIwNywgMjI5LCAxNDQsIDEsIDI0NCwgMTIwLCAxNDQsIDEsIDI0NCwgMTA0LCAxNDQsIDEsIAotICAgIDIyMSwgMjI3LCAxNDQsIDEsIDIxMCwgMjIsIDE0NCwgMSwgMjA5LCAxMDgsIDE0NCwgMSwgMjQ0LCAyMTIsIDE0NCwgMSwgCi0gICAgMjQ0LCAxLCAxNDQsIDEsIDIwMSwgMjAxLCAxNDQsIDEsIDE4NSwgMTQ0LCAxLCAyMTgsIDIwOCwgMTQ0LCAxLCAyNDksIDMyLCAKLSAgICAxNDQsIDEsIDI0OCwgOTgsIDE0NCwgMSwgMTkyLCAxNDQsIDEsIDE5OCwgMTQ0LCAxLCAyMTYsIDIyMCwgMTQ0LCAxLCAyMjgsIAotICAgIDExMywgMTQ0LCAxLCAyMDYsIDg2LCAxNDQsIDEsIDIxMywgOTAsIDE0NCwgMSwgMjExLCAxNjQsIDE0NCwgMSwgMjE1LCAzNiwgCi0gICAgMTQ0LCAxLCAxNTIsIDE0NCwgMSwgMjI3LCA3NywgMTQ0LCAxLCAzOCwgNDQsIDIyNywgNjgsIDE0NCwgMSwgMzgsIDQ0LCAKLSAgICAyMTUsIDE4NSwgMTQ0LCAxLCAzOCwgNDQsIDIyMSwgMjA5LCAxNDQsIDIyLCAyLCAyNTIsIDI1LCAxNDQsIDIyLCAyLCAyNDgsIAotICAgIDk1LCAyNTIsIDI1LCAxNDQsIDIyLCAyLCA3NSwgMTQ0LCAyMiwgMiwgMjMxLCA4MywgMTQ0LCAyMiwgMiwgNjgsIDE0NCwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAxNDQsIDIyLCAyLCAxMjUsIDE0NiwgMTQ0LCAyMiwgMiwgMTI1LCAyMTUsIDE4NiwgMTQ0LCAKLSAgICAyMiwgMiwgMTI1LCAxNTksIDE0NCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMTQ0LCAyMiwgMiwgNzQsIDE0NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDE0NCwgMjIsIDIsIDc4LCAxNDQsIDIyLCAyLCAyNTAsIDM0LCAxNDQsIDIwNSwgMjA0LCAxNDQsIDI0NCwgCi0gICAgMTY2LCAxNDQsIDUyLCAyNDQsIDE2NiwgMTQ0LCAyMTcsIDE3OSwgMjQzLCA4NSwgMTQ0LCAyMTcsIDE3OSwgNTIsIDI0MywgCi0gICAgODUsIDE0NCwgMjE3LCAxNzksIDIyNywgMTE0LCAxNDQsIDIxNywgMTc5LCAyNDUsIDEzOSwgMTQyLCAxNDQsIDIxNywgMTc5LCAKLSAgICAyMjcsIDUsIDE0NCwgNDIsIDEwNSwgMTQ0LCA0MiwgMTA4LCAxNDQsIDQyLCAxNDcsIDE0NCwgNDIsIDE0OSwgMTQ0LCA0MiwgCi0gICAgMTcwLCAxNDQsIDQyLCAxOTUsIDE0NCwgNDIsIDIxMywgMTExLCAxNDQsIDQyLCAxOTksIDE0NCwgNDIsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIwOSwgMTUyLCAxNDQsIDQyLCAyMDcsIDE1MSwgMTQ0LCA0MiwgMjA5LCA1MywgMTQ0LCA0MiwgMjM5LCAKLSAgICAxNTMsIDE0NCwgNDIsIDI0MCwgMTgsIDE0NCwgNDIsIDIxMiwgNzQsIDE0NCwgNDIsIDIxMywgMTA1LCAxNDQsIDQyLCAyNDEsIAotICAgIDEzNCwgMTQ0LCA0MiwgMjIyLCA1OCwgMTQ0LCA0MiwgMTE4LCAyMzYsIDExLCAxNDQsIDQyLCAxMTgsIDIwOSwgMzYsIDE0NCwgCi0gICAgMTcsIDIwMiwgODQsIDE0NCwgMTcsIDEwNSwgMTQ0LCAxNywgMTA4LCAxNDQsIDE3LCAxNDcsIDE0NCwgMTcsIDE0OSwgMTQ0LCAKLSAgICAxNywgMTcwLCAxNDQsIDE3LCAxOTUsIDE0NCwgMTcsIDIxMywgMTExLCAxNDQsIDE3LCAxOTksIDE0NCwgMTcsIDIyMiwgNjMsIAotICAgIDE0NCwgNDIsIDIzMCwgOTYsIDIzMCwgMTUsIDIsIDI0NywgNTIsIDIzMCwgMTUsIDIsIDI1MCwgMTgwLCAyMzAsIDE1LCAyLCAKLSAgICAyMDUsIDE5OSwgMjMwLCAxNSwgMSwgNjMsIDIzMCwgMTUsIDEsIDI1MiwgMjUsIDIzMCwgMTUsIDEsIDc1LCAyMzAsIDE1LCAKLSAgICAxLCAyMzEsIDgzLCAyMzAsIDE1LCAxLCA2OCwgMjMwLCAxNSwgMSwgMjA2LCAxNzgsIDIzMCwgMTUsIDEsIDc0LCAyMzAsIAotICAgIDE1LCAxLCAyNTEsIDY0LCAyMzAsIDE1LCAxLCA3OCwgMjMwLCAxNSwgMSwgMjUwLCAzNCwgMjMwLCAxNSwgMSwgMTczLCAKLSAgICAyMzAsIDE1LCAxLCAyMjksIDE0NCwgMjMwLCAxNSwgMSwgMjM5LCA4LCAyMzAsIDE1LCAxLCAyMzgsIDExOSwgMjMwLCAxNSwgCi0gICAgMSwgMjIyLCAyMDMsIDIzMCwgMTUsIDEsIDI0NywgOTIsIDIzMCwgMTUsIDEsIDI0NiwgMTk5LCAyMzAsIDE1LCAxLCAyMzAsIAotICAgIDE4MSwgMjMwLCAxNSwgMSwgMjMwLCAxNDksIDIzMCwgMTUsIDEsIDIyMSwgMTEsIDIzMCwgMTUsIDEsIDIwNywgMjQxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDcsIDIyOSwgMjMwLCAxNSwgMSwgMjQ0LCAxMjAsIDIzMCwgMTUsIDEsIDI0NCwgMTA5LCAyMzAsIAotICAgIDE1LCAxLCAyNDQsIDEwNCwgMjMwLCAxNSwgMSwgMjE2LCA2MSwgMjMwLCAxNSwgMSwgMjIxLCAyMjcsIDIzMCwgMTUsIDEsIAotICAgIDIxMCwgMjIsIDIzMCwgMTUsIDEsIDIwOSwgMTA4LCAyMzAsIDE1LCAxLCAyNDQsIDIxMiwgMjMwLCAxNSwgMSwgMjQ0LCAxLCAKLSAgICAyMzAsIDE1LCAxLCAyMDEsIDIwMSwgMjMwLCAxNSwgMSwgMTg1LCAyMzAsIDE1LCAxLCAyMTgsIDIwOCwgMjMwLCAxNSwgMSwgCi0gICAgMjQ5LCAzMiwgMjMwLCAxNSwgMSwgMjQ4LCA5OCwgMjMwLCAxNSwgMSwgMTkyLCAyMzAsIDE1LCAxLCAxOTgsIDIzMCwgMTUsIAotICAgIDEsIDIxNiwgMjIwLCAyMzAsIDE1LCAxLCAyMjgsIDExMywgMjMwLCAxNSwgMSwgMjA2LCA4NiwgMjMwLCAxNSwgMSwgMjEzLCAKLSAgICA5MCwgMjMwLCAxNSwgMSwgMjExLCAxNjQsIDIzMCwgMTUsIDEsIDIxNSwgMzYsIDIzMCwgMTUsIDEsIDE1MiwgMjMwLCAxNSwgCi0gICAgMjIsIDIsIDI1MiwgMjUsIDIzMCwgMTUsIDIyLCAyLCA3NSwgMjMwLCAxNSwgMjIsIDIsIDIzMSwgODMsIDIzMCwgMTUsIDIyLCAKLSAgICAyLCA2OCwgMjMwLCAxNSwgMjIsIDIsIDIwNiwgMTc4LCAyMzAsIDE1LCAyMiwgMiwgNzQsIDIzMCwgMTUsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAyMzAsIDE1LCAyMiwgMiwgNzgsIDIzMCwgMTUsIDIyLCAyLCAyNTAsIDM0LCAyMzAsIDE1LCAyLCAyMDUsIDIwNCwgCi0gICAgMjMwLCAxNSwgMiwgMjIxLCA1MSwgMjMwLCAxNSwgMjUxLCAxNDYsIDU0LCAyMzAsIDE1LCAyNDEsIDU5LCA1NCwgMjMwLCAKLSAgICAxNSwgNDIsIDU0LCAyMzAsIDE1LCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIDUyLCAyMTQsIDE2OCwgODIsIDIzMCwgMTUsIAotICAgIDI0NCwgMTY2LCAyMzAsIDE1LCA1MiwgMjQ0LCAxNjYsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjE1LCAxOSwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDksIDI1MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDksIDUsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQ3LCA4MSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyNDQsIDE5MywgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAKLSAgICAyMzgsIDI0OSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjUsIDE0OCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjIsIAotICAgIDIwMCwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMjgsIDg5LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMywgOTMsIDIxMSwgCi0gICAgMjQ2LCAyMTEsIDI1NCwgMSwgMjA2LCA4MiwgMjExLCAyNDYsIDIxMSwgMjU0LCAxLCAyMTksIDE1MCwgMjExLCAyNDYsIAotICAgIDIxMSwgMjU0LCAxLCAyMDMsIDkxLCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIxNiwgMTk5LCAyMTEsIDI0NiwgMjExLCAKLSAgICAyNTQsIDEsIDIzNywgMTQ4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIzMCwgMjAsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgCi0gICAgMjMwLCAxNzUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjIxLCA4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDI1MSwgNzMsIAotICAgIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjQxLCAxNTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjMxLCA4NCwgMjExLCAKLSAgICAyNDYsIDIxMSwgMjU0LCAxLCAyMDcsIDE4LCAyMTEsIDI0NiwgMjExLCAyNTQsIDEsIDIyMCwgNjAsIDIxMSwgMjQ2LCAyMTEsIAotICAgIDI1NCwgMSwgMjQxLCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMSwgMjI1LCAxNjEsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgCi0gICAgMTcsIDIwMiwgODQsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDEwNSwgMjExLCAyNDYsIDIxMSwgMjU0LCAxNywgMTA4LCAKLSAgICAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxNDcsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDE0OSwgMjExLCAyNDYsIDIxMSwgCi0gICAgMjU0LCAxNywgMTcwLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTUsIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIxMywgCi0gICAgMTExLCAyMTEsIDI0NiwgMjExLCAyNTQsIDE3LCAxOTksIDIxMSwgMjQ2LCAyMTEsIDI1NCwgMTcsIDIyMiwgNjMsIDI0NiwgCi0gICAgMTkzLCAyLCAyNDcsIDUyLCAyNDYsIDE5MywgMiwgMjUwLCAxODAsIDI0NiwgMTkzLCAyLCAyMDUsIDE5OSwgMjQ2LCAxOTMsIAotICAgIDEsIDI1MiwgMjUsIDI0NiwgMTkzLCAxLCA3NSwgMjQ2LCAxOTMsIDEsIDY4LCAyNDYsIDE5MywgMSwgNzQsIDI0NiwgMTkzLCAKLSAgICAxLCAyMzAsIDQxLCAyNDYsIDE5MywgMSwgMjI5LCAxNDMsIDI0NiwgMTkzLCAxLCAyMzksIDUsIDI0NiwgMTkzLCAxLCAyMzgsIAotICAgIDExOCwgMjQ2LCAxOTMsIDEsIDIyMiwgMjAyLCAyNDYsIDE5MywgMSwgMjQ3LCA5MSwgMjQ2LCAxOTMsIDEsIDI0NiwgMTk4LCAKLSAgICAyNDYsIDE5MywgMSwgMjMwLCAxODAsIDI0NiwgMTkzLCAxLCAyMzAsIDE0OCwgMjQ2LCAxOTMsIDEsIDIyMSwgMTAsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDcsIDI0MCwgMjQ2LCAxOTMsIDEsIDIwNywgMjI4LCAyNDYsIDE5MywgMSwgMjQ0LCAxMTksIDI0NiwgMTkzLCAKLSAgICAxLCAyNDQsIDEwMywgMjQ2LCAxOTMsIDEsIDIyMSwgMjI2LCAyNDYsIDE5MywgMSwgMjEwLCAxOCwgMjQ2LCAxOTMsIDEsIAotICAgIDIwOSwgMTA3LCAyNDYsIDE5MywgMSwgMjQ0LCAyMTEsIDI0NiwgMTkzLCAxLCAyNDQsIDAsIDI0NiwgMTkzLCAxLCAyMjMsIAotICAgIDEwNiwgMjQ2LCAxOTMsIDEsIDIxOSwgMTY4LCAyNDYsIDE5MywgMSwgMjE4LCAyMDcsIDI0NiwgMTkzLCAxLCAyNDksIDMwLCAKLSAgICAyNDYsIDE5MywgMSwgMjQ4LCA5NywgMjQ2LCAxOTMsIDEsIDIyNSwgMTc1LCAyNDYsIDE5MywgMSwgMjAyLCAxNjcsIDI0NiwgCi0gICAgMTkzLCAxLCAyMDMsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNiwgMjE2LCAyNDYsIDE5MywgMSwgMjI4LCAxMTIsIDI0NiwgMTkzLCAKLSAgICAxLCAyMDQsIDExMCwgMjQ2LCAxOTMsIDEsIDIxNSwgMzMsIDI0NiwgMTkzLCAxLCAyMzcsIDE1NywgMjQ2LCAxOTMsIDIyLCAKLSAgICAyLCA2MywgMjQ2LCAxOTMsIDIyLCAyLCA3NSwgMjQ2LCAxOTMsIDIyLCAyLCAyMzEsIDgzLCAyNDYsIDE5MywgMjIsIDIsIAotICAgIDY4LCAyNDYsIDE5MywgMjIsIDIsIDIwNiwgMTc4LCAyNDYsIDE5MywgMjIsIDIsIDc0LCAyNDYsIDE5MywgMjIsIDIsIDI1MSwgCi0gICAgNjQsIDI0NiwgMTkzLCAyMiwgMiwgNzgsIDI0NiwgMTkzLCAyMiwgMiwgMjUwLCAzNCwgMjQ2LCAxOTMsIDIyLCAyLCAyMjAsIAotICAgIDU3LCAyNDYsIDE5MywgMTU4LCA4MiwgMjQ2LCAxOTMsIDI1MCwgMzUsIDgyLCAyNDYsIDE5MywgMjA1LCAyMDQsIDI0NiwgCi0gICAgMTkzLCAyMjUsIDE3MywgMjQ2LCAxOTMsIDE3LCAyMDIsIDg0LCAyNDYsIDE5MywgMTcsIDEwNSwgMjQ2LCAxOTMsIDE3LCAKLSAgICAxMDgsIDI0NiwgMTkzLCAxNywgMTQ3LCAyNDYsIDE5MywgMTcsIDE0OSwgMjQ2LCAxOTMsIDE3LCAxNzAsIDI0NiwgMTkzLCAKLSAgICAxNywgMTk1LCAyNDYsIDE5MywgMTcsIDIxMywgMTExLCAyNDYsIDE5MywgMTcsIDE5OSwgMjQ2LCAxOTMsIDE3LCAyMjIsIAotICAgIDYzLCAyNDYsIDE5MywgMjE0LCAxNjgsIDgyLCAyNDYsIDE5MywgMjQ0LCAxNjYsIDI0NiwgMTkzLCA1MiwgMjQ0LCAxNjYsIAotICAgIDI0NiwgMTkzLCAyMTcsIDQ3LCA4MiwgMjI1LCAxNDYsIDEsIDYzLCAyMjUsIDE0NiwgMSwgNzUsIDIyNSwgMTQ2LCAxLCA2OCwgCi0gICAgMjI1LCAxNDYsIDEsIDc0LCAyMjUsIDE0NiwgMSwgNzgsIDIyNSwgMTQ2LCAxLCAxNzMsIDIyNSwgMTQ2LCAxLCAyMjksIAotICAgIDE0NCwgMjI1LCAxNDYsIDEsIDIzOSwgOCwgMjI1LCAxNDYsIDEsIDIzOCwgMTE5LCAyMjUsIDE0NiwgMSwgMjQ3LCA5MiwgCi0gICAgMjI1LCAxNDYsIDEsIDI0NiwgMTk5LCAyMjUsIDE0NiwgMSwgMjMwLCAxODEsIDIyNSwgMTQ2LCAxLCAyMzAsIDE0OSwgMjI1LCAKLSAgICAxNDYsIDEsIDIyMSwgMTEsIDIyNSwgMTQ2LCAxLCAyMDcsIDI0MSwgMjI1LCAxNDYsIDEsIDIwNywgMjI5LCAyMjUsIDE0NiwgCi0gICAgMSwgMjQ0LCAxMjAsIDIyNSwgMTQ2LCAxLCAyNDQsIDEwNCwgMjI1LCAxNDYsIDEsIDIyMSwgMjI3LCAyMjUsIDE0NiwgMSwgCi0gICAgMjEwLCAyMiwgMjI1LCAxNDYsIDEsIDIwOSwgMTA4LCAyMjUsIDE0NiwgMSwgMjQ0LCAyMTIsIDIyNSwgMTQ2LCAxLCAyNDQsIAotICAgIDEsIDIyNSwgMTQ2LCAxLCAyMDEsIDIwMSwgMjI1LCAxNDYsIDEsIDE4NSwgMjI1LCAxNDYsIDEsIDIxOCwgMjA4LCAyMjUsIAotICAgIDE0NiwgMSwgMjQ5LCAzMiwgMjI1LCAxNDYsIDEsIDI0OCwgOTgsIDIyNSwgMTQ2LCAxLCAxOTIsIDIyNSwgMTQ2LCAxLCAKLSAgICAyMTYsIDIyMCwgMjI1LCAxNDYsIDEsIDIyOCwgMTEzLCAyMjUsIDE0NiwgMSwgMjA2LCA4NiwgMjI1LCAxNDYsIDEsIDIxNSwgCi0gICAgMzYsIDIyNSwgMTQ2LCAxLCAxNTIsIDIyNSwgMTQ2LCAxLCAyMTUsIDE4NSwgMjI1LCAxNDYsIDIsIDIyMSwgNTEsIDIyNSwgCi0gICAgMTQ2LCAyNTEsIDE0NiwgNTQsIDIyNSwgMTQ2LCAyMTQsIDE2OCwgODIsIDIyNSwgMTQ2LCAzMiwgMjEyLCAyMDYsIDE4MSwgCi0gICAgMiwgMjQ3LCA1MiwgMTgxLCAyLCAyNTAsIDE4MCwgMTgxLCAyLCAyMDUsIDE5OSwgMTgxLCAxLCA2MywgMTgxLCAxLCAyNTIsIAotICAgIDI1LCAxODEsIDEsIDc1LCAxODEsIDEsIDIzMSwgODMsIDE4MSwgMSwgNjgsIDE4MSwgMSwgMjA2LCAxNzgsIDE4MSwgMSwgCi0gICAgMTI1LCAxNDYsIDE4MSwgMSwgMTI1LCAyMTUsIDE4NiwgMTgxLCAxLCAxMjUsIDE1OSwgMTgxLCAxLCAxMjUsIDIyNywgNzgsIAotICAgIDE4MSwgMSwgNzQsIDE4MSwgMSwgMjUxLCA2NCwgMTgxLCAxLCA3OCwgMTgxLCAxLCAyNTAsIDM0LCAxODEsIDEsIDE3MywgCi0gICAgMTgxLCAxLCAyMjksIDE0NCwgMTgxLCAxLCAyMzksIDgsIDE4MSwgMSwgMjM4LCAxMTksIDE4MSwgMSwgMjIyLCAyMDMsIAotICAgIDE4MSwgMSwgMjQ3LCA5MiwgMTgxLCAxLCAyNDYsIDE5OSwgMTgxLCAxLCAyMzAsIDE4MSwgMTgxLCAxLCAyMzAsIDE0OSwgCi0gICAgMTgxLCAxLCAyMjEsIDExLCAxODEsIDEsIDIwNywgMjQxLCAxODEsIDEsIDIwNywgMjI5LCAxODEsIDEsIDI0NCwgMTIwLCAKLSAgICAxODEsIDEsIDI0NCwgMTA0LCAxODEsIDEsIDIyMSwgMjI3LCAxODEsIDEsIDIxMCwgMjIsIDE4MSwgMSwgMjA5LCAxMDgsIAotICAgIDE4MSwgMSwgMjQ0LCAyMTIsIDE4MSwgMSwgMjQ0LCAxLCAxODEsIDEsIDIwMSwgMjAxLCAxODEsIDEsIDE4NSwgMTgxLCAxLCAKLSAgICAyMTgsIDIwOCwgMTgxLCAxLCAyNDksIDMyLCAxODEsIDEsIDI0OCwgOTgsIDE4MSwgMSwgMTkyLCAxODEsIDEsIDE5OCwgCi0gICAgMTgxLCAxLCAyMTYsIDIyMCwgMTgxLCAxLCAyMjgsIDExMywgMTgxLCAxLCAyMjcsIDc3LCAxODEsIDEsIDIwNiwgODYsIAotICAgIDE4MSwgMSwgMjEzLCA5MCwgMTgxLCAxLCAyMTEsIDE2NCwgMTgxLCAxLCAyMTUsIDM2LCAxODEsIDEsIDE1MiwgMTgxLCAyMiwgCi0gICAgMiwgMjUyLCAyNSwgMTgxLCAyMiwgMiwgNzUsIDE4MSwgMjIsIDIsIDIzMSwgODMsIDE4MSwgMjIsIDIsIDY4LCAxODEsIDIyLCAKLSAgICAyLCAyMDYsIDE3OCwgMTgxLCAyMiwgMiwgMTI1LCAxNDYsIDE4MSwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4MSwgMjIsIDIsIAotICAgIDEyNSwgMTU5LCAxODEsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDE4MSwgMjIsIDIsIDc0LCAxODEsIDIyLCAyLCAyNTEsIDY0LCAKLSAgICAxODEsIDIyLCAyLCA3OCwgMTgxLCAyMiwgMiwgMjUwLCAzNCwgMTgxLCAyLCAyMDUsIDIwNCwgMTgxLCAyLCAyNTAsIDE3LCAKLSAgICAxODEsIDIsIDIzMCwgMTM1LCAxODEsIDIsIDIwNiwgMjIyLCAxODEsIDIyMCwgMzksIDE4MSwgMjQ0LCAxNjYsIDE4MSwgNTIsIAotICAgIDI0NCwgMTY2LCAxODEsIDI1MSwgMTQ2LCA1NCwgMTgxLCAyMTMsIDEzMCwgMTgxLCAyMTQsIDIzOSwgODIsIDE4MSwgMiwgCi0gICAgMjIxLCA1MSwgMTgxLCAyMiwgNjUsIDgyLCAxODEsIDI0MCwgMTk5LCAyMTIsIDIyOCwgMjIsIDgyLCAxODEsIDIxMCwgMTgwLCAKLSAgICA4MiwgMTgxLCAxNywgMjAyLCA4NCwgMTgxLCAxNywgMTA1LCAxODEsIDE3LCAxMDgsIDE4MSwgMTcsIDE0NywgMTgxLCAxNywgCi0gICAgMTQ5LCAxODEsIDE3LCAxNzAsIDE4MSwgMTcsIDE5NSwgMTgxLCAxNywgMjEzLCAxMTEsIDE4MSwgMTcsIDE5OSwgMTgxLCAKLSAgICAxNywgMjIyLCA2MywgMTgxLCAyNDEsIDEyOCwgMTgxLCAyLCAyMTIsIDE1NywgMTgxLCAyMzcsIDU4LCAxODEsIDI0NSwgCi0gICAgMTkxLCA1NCwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MiwgMTgxLCAyMTQsIDE2OCwgMjI1LCA5MSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDEwNSwgMTQwLCAyNTAsIDEyNiwgMTcsIDEwOCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE0NywgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDE0OSwgMTQwLCAyNTAsIDEyNiwgMTcsIDE3MCwgMTQwLCAyNTAsIDEyNiwgMTcsIDE5NSwgMTQwLCAyNTAsIDEyNiwgCi0gICAgMTcsIDIxMywgMTExLCAxNDAsIDI1MCwgMTI2LCAxNywgMTk5LCAxNDAsIDI1MCwgMTI2LCAxNywgMjIyLCA2MywgMTQwLCAKLSAgICAyNTAsIDEyNiwgNDIsIDIwOSwgMTUyLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjA3LCAxNTEsIDE0MCwgMjUwLCAxMjYsIDQyLCAKLSAgICAyMDksIDUzLCAxNDAsIDI1MCwgMTI2LCA0MiwgMjM5LCAxNTMsIDE0MCwgMjUwLCAxMjYsIDQyLCAyNDAsIDE4LCAxNDAsIAotICAgIDI1MCwgMTI2LCA0MiwgMjEyLCA3NCwgMTQwLCAyNTAsIDEyNiwgNDIsIDIxMywgMTA1LCAxNDAsIDI1MCwgMTI2LCA0MiwgCi0gICAgMjQxLCAxMzQsIDE0MCwgMjUwLCAxMjYsIDQyLCAyMjIsIDU4LCAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMzYsIDExLCAKLSAgICAxNDAsIDI1MCwgMTI2LCA0MiwgMTE4LCAyMDksIDM2LCAyMjksIDExNCwgMSwgNjMsIDIyOSwgMTE0LCAxLCAyNTIsIDI1LCAKLSAgICAyMjksIDExNCwgMSwgNzUsIDIyOSwgMTE0LCAxLCA2OCwgMjI5LCAxMTQsIDEsIDc0LCAyMjksIDExNCwgMSwgMjUxLCA2NCwgCi0gICAgMjI5LCAxMTQsIDEsIDc4LCAyMjksIDExNCwgMSwgMjUwLCAzNCwgMjI5LCAxMTQsIDEsIDE3MywgMjI5LCAxMTQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMjksIDExNCwgMSwgMjM5LCA4LCAyMjksIDExNCwgMSwgMjM4LCAxNTUsIDIyOSwgMTE0LCAxLCAyMzgsIAotICAgIDExOSwgMjI5LCAxMTQsIDEsIDIyMiwgMjAzLCAyMjksIDExNCwgMSwgMjQ3LCA5MiwgMjI5LCAxMTQsIDEsIDI0NiwgMTk5LCAKLSAgICAyMjksIDExNCwgMSwgMjMwLCAxODEsIDIyOSwgMTE0LCAxLCAyMzAsIDEyOSwgMjI5LCAxMTQsIDEsIDIyMSwgMTEsIDIyOSwgCi0gICAgMTE0LCAxLCAyMDcsIDI0MSwgMjI5LCAxMTQsIDEsIDIwNywgMjI5LCAyMjksIDExNCwgMSwgMjQ0LCAxMjAsIDIyOSwgMTE0LCAKLSAgICAxLCAyNDQsIDEwNCwgMjI5LCAxMTQsIDEsIDIyMSwgMjI3LCAyMjksIDExNCwgMSwgMjEwLCAyMiwgMjI5LCAxMTQsIDEsIAotICAgIDIwOSwgMTA4LCAyMjksIDExNCwgMSwgMjQ0LCAyMTIsIDIyOSwgMTE0LCAxLCAyNDQsIDExMCwgMjI5LCAxMTQsIDEsIDI0NCwgCi0gICAgMSwgMjI5LCAxMTQsIDEsIDIwMSwgMjAxLCAyMjksIDExNCwgMSwgMTg1LCAyMjksIDExNCwgMSwgMjE4LCAyMDgsIDIyOSwgCi0gICAgMTE0LCAxLCAyNDksIDMyLCAyMjksIDExNCwgMSwgMjQ4LCAxOTgsIDIyOSwgMTE0LCAxLCAyNDgsIDk4LCAyMjksIDExNCwgCi0gICAgMSwgMTkyLCAyMjksIDExNCwgMSwgMTk4LCAyMjksIDExNCwgMSwgMjE2LCAyMjAsIDIyOSwgMTE0LCAxLCAyMjgsIDExMywgCi0gICAgMjI5LCAxMTQsIDEsIDIwNiwgODYsIDIyOSwgMTE0LCAxLCAyMTUsIDM2LCAyMjksIDExNCwgMSwgMTUyLCAyMjksIDExNCwgCi0gICAgMSwgMjI3LCA3NywgMjI5LCAxMTQsIDIyLCAyLCAyNTIsIDI1LCAyMjksIDExNCwgMjIsIDIsIDc1LCAyMjksIDExNCwgMjIsIAotICAgIDIsIDIzMSwgODMsIDIyOSwgMTE0LCAyMiwgMiwgNjgsIDIyOSwgMTE0LCAyMiwgMiwgNzQsIDIyOSwgMTE0LCAyMiwgMiwgCi0gICAgMjUxLCA2NCwgMjI5LCAxMTQsIDIyLCAyLCA3OCwgMjI5LCAxMTQsIDIyLCAyLCAyNTAsIDM0LCAyMjksIDExNCwgMiwgMjUwLCAKLSAgICAxODAsIDIyOSwgMTE0LCAyLCAyMDUsIDIwNCwgMjI5LCAxMTQsIDIsIDIyMSwgNTEsIDIyOSwgMTE0LCAyLCAyMTMsIDgwLCAKLSAgICAyMjksIDExNCwgMjQ0LCAxNjYsIDIyOSwgMTE0LCA1MiwgMjQ0LCAxNjYsIDIyOSwgMTE0LCAyMDMsIDIzOCwgMjEzLCAxMzAsIAotICAgIDIyOSwgMTE0LCAyMTQsIDE2OCwgODIsIDIyOSwgMTE0LCA1MiwgMjE0LCAxNjgsIDgyLCAyMjksIDExNCwgMjUxLCAxNDYsIAotICAgIDU0LCAyMjMsIDIzMCwgMSwgNjMsIDIyMywgMjMwLCAxLCA3NSwgMjIzLCAyMzAsIDEsIDY4LCAyMjMsIDIzMCwgMSwgNzQsIAotICAgIDIyMywgMjMwLCAxLCAxNzMsIDIyMywgMjMwLCAxLCAyMjksIDE0NCwgMjIzLCAyMzAsIDEsIDIzOSwgOCwgMjIzLCAyMzAsIAotICAgIDEsIDIzOCwgMTE5LCAyMjMsIDIzMCwgMSwgMjQ3LCA5MiwgMjIzLCAyMzAsIDEsIDI0NiwgMTk5LCAyMjMsIDIzMCwgMSwgCi0gICAgMjMwLCAxODEsIDIyMywgMjMwLCAxLCAyMzAsIDEyOSwgMjIzLCAyMzAsIDEsIDIyMSwgMTEsIDIyMywgMjMwLCAxLCAyMDcsIAotICAgIDI0MSwgMjIzLCAyMzAsIDEsIDIwNywgMjI5LCAyMjMsIDIzMCwgMSwgMjQ0LCAxMjAsIDIyMywgMjMwLCAxLCAyNDQsIDExMCwgCi0gICAgMjIzLCAyMzAsIDEsIDI0NCwgMTA0LCAyMjMsIDIzMCwgMSwgMjIxLCAyMjcsIDIyMywgMjMwLCAxLCAyMTAsIDIyLCAyMjMsIAotICAgIDIzMCwgMSwgMjA5LCAxMDgsIDIyMywgMjMwLCAxLCAyNDQsIDIxMiwgMjIzLCAyMzAsIDEsIDI0NCwgMSwgMjIzLCAyMzAsIAotICAgIDEsIDIwMSwgMjAxLCAyMjMsIDIzMCwgMSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE4LCAyMDgsIDIyMywgMjMwLCAxLCAyNDksIAotICAgIDMyLCAyMjMsIDIzMCwgMSwgMjQ4LCA5OCwgMjIzLCAyMzAsIDEsIDE5MiwgMjIzLCAyMzAsIDEsIDE5OCwgMjIzLCAyMzAsIAotICAgIDEsIDIxNiwgMjIwLCAyMjMsIDIzMCwgMSwgMjI4LCAxMTMsIDIyMywgMjMwLCAxLCAyMDYsIDg2LCAyMjMsIDIzMCwgMSwgCi0gICAgMjE1LCAzNiwgMjIzLCAyMzAsIDEsIDE1MiwgMjIzLCAyMzAsIDEsIDIxNSwgMTg1LCAyMjMsIDIzMCwgMSwgMjE2LCA2MSwgCi0gICAgMjIzLCAyMzAsIDIxNCwgMTY4LCA4MiwgMjI5LCAxMDYsIDEsIDYzLCAyMjksIDEwNiwgMSwgMjUyLCAyNSwgMjI5LCAxMDYsIAotICAgIDEsIDc1LCAyMjksIDEwNiwgMSwgMjMxLCA4MywgMjI5LCAxMDYsIDEsIDY4LCAyMjksIDEwNiwgMSwgMjA2LCAxNzgsIDIyOSwgCi0gICAgMTA2LCAxLCA3NCwgMjI5LCAxMDYsIDEsIDI1MSwgNjQsIDIyOSwgMTA2LCAxLCA3OCwgMjI5LCAxMDYsIDEsIDI1MCwgMzQsIAotICAgIDIyOSwgMTA2LCAxLCAxNzMsIDIyOSwgMTA2LCAxLCAyMjksIDE0NCwgMjI5LCAxMDYsIDEsIDIzOSwgOCwgMjI5LCAxMDYsIAotICAgIDEsIDIzOCwgMTU1LCAyMjksIDEwNiwgMSwgMjM4LCAxMTksIDIyOSwgMTA2LCAxLCAyMjIsIDIwMywgMjI5LCAxMDYsIDEsIAotICAgIDI0NywgOTIsIDIyOSwgMTA2LCAxLCAyNDYsIDE5OSwgMjI5LCAxMDYsIDEsIDIzMCwgMTgxLCAyMjksIDEwNiwgMSwgMjMwLCAKLSAgICAxMjksIDIyOSwgMTA2LCAxLCAyMzAsIDE0OSwgMjI5LCAxMDYsIDEsIDIyMSwgMTEsIDIyOSwgMTA2LCAxLCAyMDcsIDI0MSwgCi0gICAgMjI5LCAxMDYsIDEsIDIwNywgMjI5LCAyMjksIDEwNiwgMSwgMjQ0LCAxMjAsIDIyOSwgMTA2LCAxLCAyNDQsIDExMCwgMjI5LCAKLSAgICAxMDYsIDEsIDIxNSwgMTg1LCAyMjksIDEwNiwgMSwgMjQ0LCAxMDQsIDIyOSwgMTA2LCAxLCAyMjEsIDIyNywgMjI5LCAxMDYsIAotICAgIDEsIDIxMCwgMjIsIDIyOSwgMTA2LCAxLCAyMDksIDEwOCwgMjI5LCAxMDYsIDEsIDI0NCwgMjEyLCAyMjksIDEwNiwgMSwgCi0gICAgMjQ0LCAxLCAyMjksIDEwNiwgMSwgMjAxLCAyMDEsIDIyOSwgMTA2LCAxLCAxODUsIDIyOSwgMTA2LCAxLCAyMTgsIDIwOCwgCi0gICAgMjI5LCAxMDYsIDEsIDI0OSwgMzIsIDIyOSwgMTA2LCAxLCAyNDgsIDE5OCwgMjI5LCAxMDYsIDEsIDI0OCwgOTgsIDIyOSwgCi0gICAgMTA2LCAxLCAxOTIsIDIyOSwgMTA2LCAxLCAxOTgsIDIyOSwgMTA2LCAxLCAyMTYsIDIyMCwgMjI5LCAxMDYsIDEsIDIyOCwgCi0gICAgMTEzLCAyMjksIDEwNiwgMSwgMjA2LCA4NiwgMjI5LCAxMDYsIDEsIDIxMywgOTAsIDIyOSwgMTA2LCAxLCAyMTUsIDM2LCAKLSAgICAyMjksIDEwNiwgMSwgMTUyLCAyMjksIDEwNiwgMiwgMjUwLCAxODAsIDIyOSwgMTA2LCAyMiwgMiwgMjUyLCAyNSwgMjI5LCAKLSAgICAxMDYsIDIyLCAyLCA3NSwgMjI5LCAxMDYsIDIyLCAyLCAyMzEsIDgzLCAyMjksIDEwNiwgMjIsIDIsIDY4LCAyMjksIDEwNiwgCi0gICAgMjIsIDIsIDIwNiwgMTc4LCAyMjksIDEwNiwgMjIsIDIsIDc0LCAyMjksIDEwNiwgMjIsIDIsIDI1MSwgNjQsIDIyOSwgMTA2LCAKLSAgICAyMiwgMiwgNzgsIDIyOSwgMTA2LCAyMiwgMiwgMjUwLCAzNCwgMjI5LCAxMDYsIDIsIDIyMSwgNTEsIDIyOSwgMTA2LCAyLCAKLSAgICAyMDUsIDIwNCwgMjI5LCAxMDYsIDE3LCAyMDIsIDg0LCAyMjksIDEwNiwgMTcsIDEwNSwgMjI5LCAxMDYsIDE3LCAxMDgsIAotICAgIDIyOSwgMTA2LCAxNywgMTQ3LCAyMjksIDEwNiwgMTcsIDE0OSwgMjI5LCAxMDYsIDE3LCAxNzAsIDIyOSwgMTA2LCAxNywgCi0gICAgMTk1LCAyMjksIDEwNiwgMTcsIDIxMywgMTExLCAyMjksIDEwNiwgMTcsIDE5OSwgMjI5LCAxMDYsIDE3LCAyMjIsIDYzLCAKLSAgICAyMzgsIDYsIDIsIDM5LCAyNTAsIDE4MSwgNTUsIDIzOCwgNiwgMiwgMjQ3LCA1MiwgMjM4LCA2LCAyLCAyNTAsIDE4MCwgCi0gICAgMjM4LCA2LCAyLCAyMDUsIDE5OSwgMjM4LCA2LCAxLCA2MywgMjM4LCA2LCAxLCAyNTIsIDI1LCAyMzgsIDYsIDEsIDc1LCAKLSAgICAyMzgsIDYsIDEsIDIzMSwgODMsIDIzOCwgNiwgMSwgNjgsIDIzOCwgNiwgMSwgMjA2LCAxNzgsIDIzOCwgNiwgMSwgMTI1LCAKLSAgICAxNDYsIDIzOCwgNiwgMSwgMTI1LCAxNTksIDIzOCwgNiwgMSwgMjQxLCAxNjEsIDIzOCwgNiwgMSwgMjUxLCA2NCwgMjM4LCAKLSAgICA2LCAxLCAyMjAsIDE4LCAyMzgsIDYsIDEsIDI1MCwgMzQsIDIzOCwgNiwgMSwgMTczLCAyMzgsIDYsIDEsIDIyOSwgMTQ0LCAKLSAgICAyMzgsIDYsIDEsIDIzOSwgOCwgMjM4LCA2LCAxLCAyMzgsIDExOSwgMjM4LCA2LCAxLCAyMjIsIDIwMywgMjM4LCA2LCAxLCAKLSAgICAyNDcsIDkyLCAyMzgsIDYsIDEsIDI0NiwgMTk5LCAyMzgsIDYsIDEsIDIzMCwgMTgxLCAyMzgsIDYsIDEsIDIzMCwgMTQ5LCAKLSAgICAyMzgsIDYsIDEsIDIyMSwgMTEsIDIzOCwgNiwgMSwgMjA3LCAyNDEsIDIzOCwgNiwgMSwgMjA3LCAyMjksIDIzOCwgNiwgMSwgCi0gICAgMjQ0LCAxMjAsIDIzOCwgNiwgMSwgMjQ0LCAxMDQsIDIzOCwgNiwgMSwgMjIxLCAyMjcsIDIzOCwgNiwgMSwgMjEwLCAyMiwgCi0gICAgMjM4LCA2LCAxLCAyMDksIDEwOCwgMjM4LCA2LCAxLCAyNDQsIDIxMiwgMjM4LCA2LCAxLCAyNDQsIDEsIDIzOCwgNiwgMSwgCi0gICAgMjAxLCAyMDEsIDIzOCwgNiwgMSwgMTg1LCAyMzgsIDYsIDEsIDIxOCwgMjA4LCAyMzgsIDYsIDEsIDI0OSwgMzIsIDIzOCwgCi0gICAgNiwgMSwgMjQ4LCA5OCwgMjM4LCA2LCAxLCAxOTIsIDIzOCwgNiwgMSwgMTk4LCAyMzgsIDYsIDEsIDIxNiwgMjIwLCAyMzgsIAotICAgIDYsIDEsIDIyOCwgMTEzLCAyMzgsIDYsIDEsIDIyNywgNzcsIDIzOCwgNiwgMSwgMjA2LCA4NiwgMjM4LCA2LCAxLCAyMTMsIAotICAgIDkwLCAyMzgsIDYsIDEsIDIxMSwgMTY0LCAyMzgsIDYsIDEsIDIxNSwgMzYsIDIzOCwgNiwgMSwgMTUyLCAyMzgsIDYsIDIsIAotICAgIDIyMSwgNTEsIDIzOCwgNiwgMiwgMjUwLCAxNywgMjM4LCA2LCAyMiwgMiwgMjUyLCAyNSwgMjM4LCA2LCAyMiwgMiwgNzUsIAotICAgIDIzOCwgNiwgMjIsIDIsIDIzMSwgODMsIDIzOCwgNiwgMjIsIDIsIDY4LCAyMzgsIDYsIDIyLCAyLCAyMDYsIDE3OCwgMjM4LCAKLSAgICA2LCAyMiwgMiwgMTI1LCAxNDYsIDIzOCwgNiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMjIsIDIsIDI0MSwgCi0gICAgMTYxLCAyMzgsIDYsIDIyLCAyLCAyNTEsIDY0LCAyMzgsIDYsIDIyLCAyLCAyMjAsIDE4LCAyMzgsIDYsIDIyLCAyLCAyNTAsIAotICAgIDM0LCAyMzgsIDYsIDIsIDIwNSwgMjA0LCAyMzgsIDYsIDIyMCwgMzksIDIzOCwgNiwgMjUwLCAzNSwgMjI3LCAxOTYsIDgyLCAKLSAgICAyMzgsIDYsIDIsIDIxOCwgNzQsIDIzOCwgNiwgMSwgMjA2LCA1MiwgMjUwLCAxODAsIDIzOCwgNiwgMSwgMjA2LCA1MiwgNTIsIAotICAgIDI1MCwgMTgwLCAyMzgsIDYsIDEsIDEyNSwgMjE1LCAxODYsIDIzOCwgNiwgMSwgMTI1LCAyMjcsIDc4LCAyMzgsIDYsIDIyLCAKLSAgICAyLCAxMjUsIDE1OSwgMjM4LCA2LCAyMiwgMiwgMTI1LCAyMjcsIDc4LCAzOSwgMjM4LCA2LCAxNywgMjAyLCA4NCwgMzksIAotICAgIDIzOCwgNiwgMTcsIDEwNSwgMzksIDIzOCwgNiwgMTcsIDEwOCwgMzksIDIzOCwgNiwgMTcsIDE0NywgMzksIDIzOCwgNiwgCi0gICAgMTcsIDE0OSwgMzksIDIzOCwgNiwgMTcsIDE3MCwgMzksIDIzOCwgNiwgMTcsIDE5NSwgMzksIDIzOCwgNiwgMSwgNjMsIDM5LCAKLSAgICAyMzgsIDYsIDEsIDE3MywgMzksIDIzOCwgNiwgMSwgMjAxLCAyMDEsIDM5LCAyMzgsIDYsIDEsIDIwNSwgMjMwLCAzOSwgCi0gICAgMjM4LCA2LCAxLCAxODUsIDIwOCwgMjA0LCAyNTAsIDIwOSwgMjA4LCAyMDQsIDEsIDYzLCAyMDgsIDIwNCwgMSwgMjUyLCAKLSAgICAyNSwgMjA4LCAyMDQsIDEsIDc1LCAyMDgsIDIwNCwgMSwgMjMxLCA4MywgMjA4LCAyMDQsIDEsIDY4LCAyMDgsIDIwNCwgMSwgCi0gICAgMjA2LCAxNzgsIDIwOCwgMjA0LCAxLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDEsIDEyNSwgMjE1LCAxODYsIDIwOCwgMjA0LCAxLCAKLSAgICAxMjUsIDE1OSwgMjA4LCAyMDQsIDEsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIDEsIDc0LCAyMDgsIDIwNCwgMSwgMjUxLCAKLSAgICA2NCwgMjA4LCAyMDQsIDEsIDc4LCAyMDgsIDIwNCwgMSwgMjUwLCAzNCwgMjA4LCAyMDQsIDEsIDE3MywgMjA4LCAyMDQsIDEsIAotICAgIDIyOSwgMTQ0LCAyMDgsIDIwNCwgMSwgMjM5LCA4LCAyMDgsIDIwNCwgMSwgMjM4LCAxMTksIDIwOCwgMjA0LCAxLCAyMjIsIAotICAgIDIwMywgMjA4LCAyMDQsIDEsIDI0NywgOTIsIDIwOCwgMjA0LCAxLCAyNDYsIDE5OSwgMjA4LCAyMDQsIDEsIDIzMCwgMTgxLCAKLSAgICAyMDgsIDIwNCwgMSwgMjMwLCAxNDksIDIwOCwgMjA0LCAxLCAyMjEsIDExLCAyMDgsIDIwNCwgMSwgMjA3LCAyNDEsIDIwOCwgCi0gICAgMjA0LCAxLCAyMDcsIDIyOSwgMjA4LCAyMDQsIDEsIDI0NCwgMTIwLCAyMDgsIDIwNCwgMSwgMjQ0LCAxMDQsIDIwOCwgMjA0LCAKLSAgICAxLCAyMjEsIDIyNywgMjA4LCAyMDQsIDEsIDIxMCwgMjIsIDIwOCwgMjA0LCAxLCAyMDksIDEwOCwgMjA4LCAyMDQsIDEsIAotICAgIDI0NCwgMjEyLCAyMDgsIDIwNCwgMSwgMjQ0LCAxLCAyMDgsIDIwNCwgMSwgMjAxLCAyMDEsIDIwOCwgMjA0LCAxLCAxODUsIAotICAgIDIwOCwgMjA0LCAxLCAyMTgsIDIwOCwgMjA4LCAyMDQsIDEsIDI0OSwgMzIsIDIwOCwgMjA0LCAxLCAyNDgsIDk4LCAyMDgsIAotICAgIDIwNCwgMSwgMTkyLCAyMDgsIDIwNCwgMSwgMTk4LCAyMDgsIDIwNCwgMSwgMjE2LCAyMjAsIDIwOCwgMjA0LCAxLCAyMjgsIAotICAgIDExMywgMjA4LCAyMDQsIDEsIDIwNiwgODYsIDIwOCwgMjA0LCAxLCAyMTMsIDkwLCAyMDgsIDIwNCwgMSwgMjExLCAxNjQsIAotICAgIDIwOCwgMjA0LCAxLCAyMTUsIDM2LCAyMDgsIDIwNCwgMSwgMTUyLCAyMDgsIDIwNCwgMjIsIDIsIDI1MiwgMjUsIDIwOCwgCi0gICAgMjA0LCAyMiwgMiwgNzUsIDIwOCwgMjA0LCAyMiwgMiwgMjMxLCA4MywgMjA4LCAyMDQsIDIyLCAyLCA2OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCAyMDYsIDE3OCwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDE0NiwgMjA4LCAyMDQsIDIyLCAyLCAxMjUsIDIxNSwgCi0gICAgMTg2LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMTU5LCAyMDgsIDIwNCwgMjIsIDIsIDEyNSwgMjI3LCA3OCwgMjA4LCAyMDQsIAotICAgIDIyLCAyLCA3NCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzQsIDIwOCwgMjA0LCAyMiwgMiwgMjUxLCA2NCwgMjA4LCAKLSAgICAyMDQsIDIyLCAyLCA3OCwgMjA4LCAyMDQsIDIyLCAyLCAyMTIsIDIyOCwgNzgsIDIwOCwgMjA0LCAyMiwgMiwgMjUwLCAzNCwgCi0gICAgMjA4LCAyMDQsIDIsIDI0NywgNTIsIDIwOCwgMjA0LCAyLCAyNTAsIDE4MCwgMjA4LCAyMDQsIDIsIDIwNSwgMTk5LCAyMDgsIAotICAgIDIwNCwgMiwgMjA1LCAyMDQsIDIwOCwgMjA0LCAyLCAyMjEsIDUxLCAyMDgsIDIwNCwgMiwgMjUwLCAxNywgMjA4LCAyMDQsIAotICAgIDIzNywgMTkxLCAyMDgsIDIwNCwgMjUxLCAxNDYsIDU0LCAyMDgsIDIwNCwgMjIwLCAzOSwgMjA4LCAyMDQsIDE3LCAyMDIsIAotICAgIDg0LCAyMDgsIDIwNCwgMTcsIDEwNSwgMjA4LCAyMDQsIDE3LCAxMDgsIDIwOCwgMjA0LCAxNywgMTQ3LCAyMDgsIDIwNCwgCi0gICAgMTcsIDE0OSwgMjA4LCAyMDQsIDE3LCAxNzAsIDIwOCwgMjA0LCAxNywgMTk1LCAyMDgsIDIwNCwgMTcsIDIxMywgMTExLCAKLSAgICAyMDgsIDIwNCwgMTcsIDE5OSwgMjA4LCAyMDQsIDE3LCAyMjIsIDYzLCAxODYsIDEsIDYzLCAxODYsIDEsIDI1MiwgMjUsIAotICAgIDE4NiwgMSwgNzUsIDE4NiwgMSwgMjMxLCA4MywgMTg2LCAxLCA2OCwgMTg2LCAxLCAyMDYsIDE3OCwgMTg2LCAxLCAxMjUsIAotICAgIDE0NiwgMTg2LCAxLCAxMjUsIDIxNSwgMTg2LCAxODYsIDEsIDEyNSwgMTU5LCAxODYsIDEsIDEyNSwgMjI3LCA3OCwgMTg2LCAKLSAgICAxLCA3NCwgMTg2LCAxLCAyNTEsIDY0LCAxODYsIDEsIDc4LCAxODYsIDEsIDI1MCwgMzQsIDE4NiwgMSwgMTczLCAxODYsIDEsIAotICAgIDIyOSwgMTQ0LCAxODYsIDEsIDIzOSwgOCwgMTg2LCAxLCAyMzgsIDExOSwgMTg2LCAxLCAyMjIsIDIwMywgMTg2LCAxLCAKLSAgICAyNDcsIDkyLCAxODYsIDEsIDI0NiwgMTk5LCAxODYsIDEsIDIzMCwgMTgxLCAxODYsIDEsIDIzMCwgMTQ5LCAxODYsIDEsIAotICAgIDIyMSwgMTEsIDE4NiwgMSwgMjA3LCAyNDEsIDE4NiwgMSwgMjA3LCAyMjksIDE4NiwgMSwgMjQ0LCAxMjAsIDE4NiwgMSwgCi0gICAgMjQ0LCAxMDQsIDE4NiwgMSwgMjIxLCAyMjcsIDE4NiwgMSwgMjEwLCAyMiwgMTg2LCAxLCAyMDksIDEwOCwgMTg2LCAxLCAKLSAgICAyNDQsIDIxMiwgMTg2LCAxLCAyNDQsIDEsIDE4NiwgMSwgMjAxLCAyMDEsIDE4NiwgMSwgMTg1LCAxODYsIDEsIDIxOCwgCi0gICAgMjA4LCAxODYsIDEsIDI0OSwgMzIsIDE4NiwgMSwgMjQ4LCA5OCwgMTg2LCAxLCAxOTIsIDE4NiwgMSwgMTk4LCAxODYsIDEsIAotICAgIDIxNiwgMjIwLCAxODYsIDEsIDIyOCwgMTEzLCAxODYsIDEsIDIwNiwgODYsIDE4NiwgMSwgMjEzLCA5MCwgMTg2LCAxLCAKLSAgICAyMTEsIDE2NCwgMTg2LCAxLCAyMTUsIDM2LCAxODYsIDEsIDE1MiwgMTg2LCAyMiwgMiwgMjUyLCAyNSwgMTg2LCAyMiwgMiwgCi0gICAgNzUsIDE4NiwgMjIsIDIsIDIzMSwgODMsIDE4NiwgMjIsIDIsIDY4LCAxODYsIDIyLCAyLCAyMDYsIDE3OCwgMTg2LCAyMiwgCi0gICAgMiwgMTI1LCAxNDYsIDE4NiwgMjIsIDIsIDEyNSwgMjE1LCAxODYsIDE4NiwgMjIsIDIsIDc0LCAxODYsIDIyLCAyLCAyNTEsIAotICAgIDY0LCAxODYsIDIyLCAyLCA3OCwgMTg2LCAyMiwgMiwgMjUwLCAzNCwgMTg2LCAyLCAyNDcsIDUyLCAxODYsIDIsIDI1MCwgCi0gICAgMTgwLCAxODYsIDIsIDIwNSwgMTk5LCAxODYsIDIsIDIwNSwgMjA0LCAxODYsIDIsIDIyMSwgNTEsIDE4NiwgMiwgMjEyLCAKLSAgICAxNTcsIDE4NiwgMjQ0LCAxNjYsIDE4NiwgNTIsIDI0NCwgMTY2LCAxODYsIDIxMywgMTMxLCAyNDMsIDg1LCAxODYsIDIxMywgCi0gICAgMTMxLCAxNDIsIDE4NiwgMjE2LCA5OCwgMjI1LCA5MiwgMTg2LCAyMTYsIDk4LCAyMjUsIDkxLCAxODYsIDIxNiwgOTgsIAotICAgIDIyNSwgOTAsIDE4NiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEzLCA4MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyMDgsIDgwLCAKLSAgICAyNSwgMjA3LCA5MiwgMjE5LCAyMzIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA4MCwgMjUsIDI0MiwgODMsIDI0NSwgCi0gICAgMTM3LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDIxNiwgMTYzLCAyNSwgMjQyLCA4MywgMjQ1LCAxMzcsIDE4NiwgMjE0LCAKLSAgICAxNjgsIDEzMSwgMywgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgCi0gICAgMjE2LCAxNjMsIDI1LCAyNDIsIDgzLCAyMDgsIDcwLCAyNDUsIDEzNywgMTg2LCAyMTQsIDE2OCwgMTMxLCA1MiwgMjE1LCAKLSAgICAyNTIsIDE4NiwgMjE0LCAxNjgsIDEzMSwgNTIsIDIxNSwgMjUzLCAzLCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAKLSAgICAzLCA1MiwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjA4LCA3MCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIAotICAgIDEzMSwgMywgMjE3LCA1OCwgMjQ1LCAxMzcsIDE4NiwgMjE0LCAxNjgsIDEzMSwgMywgMjEzLCAxMjgsIDI0NSwgMTM3LCAKLSAgICAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMTYsIDE2MiwgMTg2LCAyMTQsIDE2OCwgMTMxLCAzLCAyNDYsIAotICAgIDU5LCAyNSwgMTIwLCAyNDEsIDg2LCAxODYsIDIxNCwgMTY4LCAxMzEsIDMsIDI0NiwgNTksIDI1LCAyMzksIDE0NywgMjQxLCAKLSAgICA4NiwgMTg2LCAxLCAyMDksIDMyLCAyNTAsIDI1NSwgNzUsIDE4NiwgMSwgMjA3LCAxMzYsIDI1MCwgMjU1LCA3NSwgMTg2LCAKLSAgICAxLCAyMDcsIDEzNiwgMjUwLCAyNTUsIDIzMSwgODMsIDE4NiwgMSwgMjUwLCAyNTUsIDY4LCAxODYsIDIyLCAyLCAyNTAsIAotICAgIDI1NSwgNjgsIDE4NiwgMjIsIDIsIDI1MCwgMjU1LCAyMDYsIDE3OCwgMjI0LCA3NCwgMSwgNjMsIDIyNCwgNzQsIDEsIDI1MiwgCi0gICAgMjUsIDIyNCwgNzQsIDEsIDc1LCAyMjQsIDc0LCAxLCAyMzEsIDgzLCAyMjQsIDc0LCAxLCA2OCwgMjI0LCA3NCwgMSwgMjA2LCAKLSAgICAxNzgsIDIyNCwgNzQsIDEsIDEyNSwgMTQ2LCAyMjQsIDc0LCAxLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAxLCAxMjUsIAotICAgIDE1OSwgMjI0LCA3NCwgMSwgMTI1LCAyMjcsIDc4LCAyMjQsIDc0LCAxLCA3NCwgMjI0LCA3NCwgMSwgMjUxLCA2NCwgMjI0LCAKLSAgICA3NCwgMSwgNzgsIDIyNCwgNzQsIDEsIDI1MCwgMzQsIDIyNCwgNzQsIDEsIDE3MywgMjI0LCA3NCwgMSwgMjI5LCAxNDQsIAotICAgIDIyNCwgNzQsIDEsIDIzOSwgOCwgMjI0LCA3NCwgMSwgMjM4LCAxMTksIDIyNCwgNzQsIDEsIDIyMiwgMjAzLCAyMjQsIDc0LCAKLSAgICAxLCAyNDcsIDkyLCAyMjQsIDc0LCAxLCAyNDYsIDE5OSwgMjI0LCA3NCwgMSwgMjMwLCAxODEsIDIyNCwgNzQsIDEsIDIzMCwgCi0gICAgMTQ5LCAyMjQsIDc0LCAxLCAyMjEsIDExLCAyMjQsIDc0LCAxLCAyMDcsIDI0MSwgMjI0LCA3NCwgMSwgMjA3LCAyMjksIAotICAgIDIyNCwgNzQsIDEsIDI0NCwgMTIwLCAyMjQsIDc0LCAxLCAyNDQsIDEwNCwgMjI0LCA3NCwgMSwgMjIxLCAyMjcsIDIyNCwgCi0gICAgNzQsIDEsIDIxMCwgMjIsIDIyNCwgNzQsIDEsIDIwOSwgMTA4LCAyMjQsIDc0LCAxLCAyNDQsIDIxMiwgMjI0LCA3NCwgMSwgCi0gICAgMjQ0LCAxLCAyMjQsIDc0LCAxLCAyMDEsIDIwMSwgMjI0LCA3NCwgMSwgMTg1LCAyMjQsIDc0LCAxLCAyMTgsIDIwOCwgMjI0LCAKLSAgICA3NCwgMSwgMjQ5LCAzMiwgMjI0LCA3NCwgMSwgMjQ4LCA5OCwgMjI0LCA3NCwgMSwgMTkyLCAyMjQsIDc0LCAxLCAxOTgsIAotICAgIDIyNCwgNzQsIDEsIDIxNiwgMjIwLCAyMjQsIDc0LCAxLCAyMjgsIDExMywgMjI0LCA3NCwgMSwgMjA2LCA4NiwgMjI0LCA3NCwgCi0gICAgMSwgMjEzLCA5MCwgMjI0LCA3NCwgMSwgMjExLCAxNjQsIDIyNCwgNzQsIDEsIDIxNSwgMzYsIDIyNCwgNzQsIDEsIDE1MiwgCi0gICAgMjI0LCA3NCwgMSwgMjI3LCA3NywgMjI0LCA3NCwgMjIsIDIsIDI1MiwgMjUsIDIyNCwgNzQsIDIyLCAyLCA3NSwgMjI0LCAKLSAgICA3NCwgMjIsIDIsIDIzMSwgODMsIDIyNCwgNzQsIDIyLCAyLCA2OCwgMjI0LCA3NCwgMjIsIDIsIDIwNiwgMTc4LCAyMjQsIAotICAgIDc0LCAyMiwgMiwgMTI1LCAxNDYsIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIxNSwgMTg2LCAyMjQsIDc0LCAyMiwgMiwgMTI1LCAKLSAgICAxNTksIDIyNCwgNzQsIDIyLCAyLCAxMjUsIDIyNywgNzgsIDIyNCwgNzQsIDIyLCAyLCA3NCwgMjI0LCA3NCwgMjIsIDIsIAotICAgIDI1MSwgNjQsIDIyNCwgNzQsIDIyLCAyLCA3OCwgMjI0LCA3NCwgMjIsIDIsIDI1MCwgMzQsIDIyNCwgNzQsIDIsIDI1MCwgCi0gICAgMTgwLCAyMjQsIDc0LCAyLCAyMDUsIDE5OSwgMjI0LCA3NCwgMiwgMjA1LCAyMDQsIDIyNCwgNzQsIDIsIDI1MCwgMTIzLCAKLSAgICAyMjQsIDc0LCAyNDQsIDE2NiwgMjI0LCA3NCwgNTIsIDI0NCwgMTY2LCAyMjQsIDc0LCAyNTEsIDE0NiwgNTQsIDIyNCwgNzQsIAotICAgIDIsIDIzNiwgMCwgMjI0LCA3NCwgMTcsIDIwMiwgODQsIDIyNCwgNzQsIDE3LCAxMDUsIDIyNCwgNzQsIDE3LCAxMDgsIDIyNCwgCi0gICAgNzQsIDE3LCAxNDcsIDIyNCwgNzQsIDE3LCAxNDksIDIyNCwgNzQsIDE3LCAxNzAsIDIyNCwgNzQsIDE3LCAxOTUsIDIyNCwgCi0gICAgNzQsIDE3LCAyMTMsIDExMSwgMjI0LCA3NCwgMTcsIDE5OSwgMjI0LCA3NCwgMTcsIDIyMiwgNjMsIDIwOSwgMjM5LCAxLCAKLSAgICA2MywgMjA5LCAyMzksIDEsIDI1MiwgMjUsIDIwOSwgMjM5LCAxLCA3NSwgMjA5LCAyMzksIDEsIDIzMSwgODMsIDIwOSwgCi0gICAgMjM5LCAxLCA2OCwgMjA5LCAyMzksIDEsIDIwNiwgMTc4LCAyMDksIDIzOSwgMSwgNzQsIDIwOSwgMjM5LCAxLCAyNTEsIDY0LCAKLSAgICAyMDksIDIzOSwgMSwgNzgsIDIwOSwgMjM5LCAxLCAyNTAsIDM0LCAyMDksIDIzOSwgMSwgMTczLCAyMDksIDIzOSwgMSwgCi0gICAgMjI5LCAxNDQsIDIwOSwgMjM5LCAxLCAyMzksIDgsIDIwOSwgMjM5LCAxLCAyMzgsIDExOSwgMjA5LCAyMzksIDEsIDIyMiwgCi0gICAgMjAzLCAyMDksIDIzOSwgMSwgMjQ3LCA5MiwgMjA5LCAyMzksIDEsIDI0NiwgMTk5LCAyMDksIDIzOSwgMSwgMjMwLCAxODEsIAotICAgIDIwOSwgMjM5LCAxLCAyMzAsIDE0OSwgMjA5LCAyMzksIDEsIDIyMSwgMTEsIDIwOSwgMjM5LCAxLCAyMDcsIDI0MSwgMjA5LCAKLSAgICAyMzksIDEsIDIwNywgMjI5LCAyMDksIDIzOSwgMSwgMjQ0LCAxMjAsIDIwOSwgMjM5LCAxLCAyNDQsIDEwNCwgMjA5LCAyMzksIAotICAgIDEsIDIyMSwgMjI3LCAyMDksIDIzOSwgMSwgMjEwLCAyMiwgMjA5LCAyMzksIDEsIDIwOSwgMTA4LCAyMDksIDIzOSwgMSwgCi0gICAgMjQ0LCAyMTIsIDIwOSwgMjM5LCAxLCAyNDQsIDEsIDIwOSwgMjM5LCAxLCAyMDEsIDIwMSwgMjA5LCAyMzksIDEsIDE4NSwgCi0gICAgMjA5LCAyMzksIDEsIDIxOCwgMjA4LCAyMDksIDIzOSwgMSwgMjQ5LCAzMiwgMjA5LCAyMzksIDEsIDI0OCwgOTgsIDIwOSwgCi0gICAgMjM5LCAxLCAxOTIsIDIwOSwgMjM5LCAxLCAxOTgsIDIwOSwgMjM5LCAxLCAyMTYsIDIyMCwgMjA5LCAyMzksIDEsIDIyOCwgCi0gICAgMTEzLCAyMDksIDIzOSwgMSwgMjA2LCA4NiwgMjA5LCAyMzksIDEsIDIxMywgOTAsIDIwOSwgMjM5LCAxLCAyMTUsIDM2LCAKLSAgICAyMDksIDIzOSwgMSwgMTUyLCAyMDksIDIzOSwgMSwgMjE1LCAxODUsIDIwOSwgMjM5LCAyLCAyNTAsIDE4MCwgMjA5LCAyMzksIAotICAgIDIsIDIwNSwgMTk5LCAyMDksIDIzOSwgMjIsIDIsIDI1MiwgMjUsIDIwOSwgMjM5LCAyMiwgMiwgNzUsIDIwOSwgMjM5LCAyMiwgCi0gICAgMiwgMjMxLCA4MywgMjA5LCAyMzksIDIyLCAyLCA2OCwgMjA5LCAyMzksIDIyLCAyLCAyMDYsIDE3OCwgMjA5LCAyMzksIDIyLCAKLSAgICAyLCA3NCwgMjA5LCAyMzksIDIyLCAyLCAyNTEsIDY0LCAyMDksIDIzOSwgMjIsIDIsIDc4LCAyMDksIDIzOSwgMjIsIDIsIAotICAgIDI1MCwgMzQsIDIwOSwgMjM5LCAyLCAyMDUsIDIwNCwgMjA5LCAyMzksIDIsIDIyMSwgNTEsIDIwOSwgMjM5LCAxNywgMjAyLCAKLSAgICA4NCwgMjA5LCAyMzksIDE3LCAxMDUsIDIwOSwgMjM5LCAxNywgMTA4LCAyMDksIDIzOSwgMTcsIDE0NywgMjA5LCAyMzksIAotICAgIDE3LCAxNDksIDIwOSwgMjM5LCAxNywgMTcwLCAyMDksIDIzOSwgMTcsIDE5NSwgMjA5LCAyMzksIDE3LCAyMTMsIDExMSwgCi0gICAgMjA5LCAyMzksIDE3LCAxOTksIDIwOSwgMjM5LCAxNywgMjIyLCA2MywgMjUxLCA2OCwgMSwgMTczLCAyNTEsIDY4LCAxLCAKLSAgICAyMjksIDE0NCwgMjUxLCA2OCwgMSwgMjIyLCAyMDMsIDI1MSwgNjgsIDEsIDIwMSwgMjAxLCAyNTEsIDY4LCAxLCAyMTAsIAotICAgIDIyLCAyNTEsIDY4LCAxLCAyNTAsIDI1NSwgMjEwLCAyMiwgMjUxLCA2OCwgMSwgMTg1LCAyNTEsIDY4LCAxLCAyMTgsIDIwOCwgCi0gICAgMjUxLCA2OCwgMSwgMjQ5LCAzMiwgMjUxLCA2OCwgMSwgMTkyLCAyNTEsIDY4LCAxLCAyMzAsIDE4MSwgMjUxLCA2OCwgMSwgCi0gICAgMjQ2LCAxOTksIDI1MSwgNjgsIDEsIDIwOSwgMTA4LCAyNTEsIDY4LCAxLCAyMTYsIDIyMCwgMjUxLCA2OCwgMSwgMjI4LCAKLSAgICAxMTMsIDI1MSwgNjgsIDEsIDIxNSwgMzYsIDI1MSwgNjgsIDEsIDIyMSwgMTEsIDI1MSwgNjgsIDEsIDE1MiwgMjUxLCA2OCwgCi0gICAgMSwgNjMsIDI1MSwgNjgsIDEsIDI0NCwgMjEyLCAyNTEsIDY4LCAxLCAyNDQsIDEsIDI1MSwgNjgsIDEsIDIzOSwgOCwgMjUxLCAKLSAgICA2OCwgMSwgMjUwLCAyNTUsIDIzOSwgOCwgMjUxLCA2OCwgMSwgMjM4LCAxMTksIDI1MSwgNjgsIDEsIDI0OCwgOTgsIDI1MSwgCi0gICAgNjgsIDEsIDIzMCwgMTQ5LCAyNTEsIDY4LCAxMDksIDIsIDE3NCwgMjI4LCAxMTMsIDI1MSwgNjgsIDEwOSwgMiwgMTc0LCAKLSAgICAyMTYsIDIyMCwgMjUxLCA2OCwgMTA5LCAyLCAxNzQsIDIyNywgMTM1LCAyMTYsIDIyMCwgMjUxLCA2OCwgMjIsIDIsIDYzLCAKLSAgICAyNTEsIDY4LCAyMiwgMiwgMjUyLCAyNSwgMjUxLCA2OCwgMjIsIDIsIDc1LCAyNTEsIDY4LCAyMiwgMiwgMjMxLCA4MywgCi0gICAgMjUxLCA2OCwgMjIsIDIsIDY4LCAyNTEsIDY4LCAyMiwgMiwgMjA2LCAxNzgsIDI1MSwgNjgsIDIyLCAyLCA3NCwgMjUxLCAKLSAgICA2OCwgMjIsIDIsIDI1MCwgMTMsIDI1MSwgNjgsIDIyLCAyLCA3OCwgMjUxLCA2OCwgMjIsIDIsIDI1MSwgNjQsIDI1MSwgNjgsIAotICAgIDIyLCAyLCAyNTAsIDI0NywgMjUxLCA2OCwgMiwgMjI5LCA4NiwgMjUxLCA2OCwgMTcsIDIwMiwgODQsIDI1MSwgNjgsIDE3LCAKLSAgICAxMDUsIDI1MSwgNjgsIDE3LCAxMDgsIDI1MSwgNjgsIDE3LCAxNDcsIDI1MSwgNjgsIDE3LCAxNDksIDI1MSwgNjgsIDE3LCAKLSAgICAxNzAsIDI1MSwgNjgsIDE3LCAxOTUsIDI1MSwgNjgsIDE3LCAyMTMsIDExMSwgMjUxLCA2OCwgMTcsIDE5OSwgMjUxLCA2OCwgCi0gICAgMTcsIDIyMiwgNjMsIDI1MSwgNjgsIDQyLCAyMDksIDE1MiwgMjUxLCA2OCwgNDIsIDIwNywgMTUxLCAyNTEsIDY4LCAyLCA1LCAKLSAgICAyMTQsIDE2NywgMjUxLCA2OCwgMiwgMjE0LCAxNjcsIDI1MSwgNjgsIDIsIDIxNSwgMTM2LCAyNTEsIDY4LCAxNiwgMjA1LCAKLSAgICAyMzAsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyMiwgMjAyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCA2MywgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNiwgMSwgMjA0LCAzMCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyMTMsIDIwNCwgOTIsIAotICAgIDI0NiwgNDgsIDYsIDEsIDE5OCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjAyLCAyNDcsIDIwNCwgOTIsIDI0NiwgNDgsIAotICAgIDYsIDEsIDIzMSwgODMsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwNiwgMTc4LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAKLSAgICA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjIzLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMzksIDgsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIyOSwgMjYsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDYsIDEsIDI0MSwgNTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIwMiwgMTk3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAKLSAgICAxLCAyMDcsIDMxLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDEsIDc1LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMjAsIAotICAgIDc2LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDcsIDIzNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjIxLCAzNywgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjQ0LCAyMTIsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgNDksIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDYsIDEsIDI1MCwgMjQ3LCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyNDcsIDE5MywgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNiwgMSwgMjE3LCAxOTEsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIDIzNiwgMjI4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA2LCAxLCAyMzYsIDEyNCwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjM2LCA1MSwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgCi0gICAgMSwgMjM3LCA5MiwgMjA0LCA5MiwgMjQ2LCA0OCwgNiwgMSwgMjExLCAxMTYsIDIwNCwgOTIsIDI0NiwgNDgsIDYsIDEsIAotICAgIDIxMiwgMTQyLCAyMDQsIDkyLCAyNDYsIDQ4LCA2LCAxLCAyMDUsIDE5MCwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjIyLCAKLSAgICAyMDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDYzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDQsIDMwLCAyMDQsIAotICAgIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMDIsIDIxMywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMTk4LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMDIsIDI0NywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjMxLCA4MywgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgCi0gICAgMSwgMjA2LCAxNzgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDc0LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCA3OCwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyMjMsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzOSwgOCwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjI5LCAyNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjQxLCA1NiwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgNSwgMSwgMjAyLCAxOTcsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgMzEsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIAotICAgIDEsIDI0MSwgNzUsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIyMCwgNzYsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIwNywgCi0gICAgMjM2LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMjEsIDM3LCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyNDQsIDIxMiwgCi0gICAgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCA0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjUwLCAyNDcsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDUsIDEsIDI0NywgMTkzLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMTcsIDE5MSwgMjA0LCA5MiwgCi0gICAgMjQ2LCA0OCwgNSwgMSwgMjM2LCAyMjgsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIDIzNiwgMTI0LCAyMDQsIDkyLCAyNDYsIAotICAgIDQ4LCA1LCAxLCAyMzYsIDUxLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAxLCAyMzcsIDkyLCAyMDQsIDkyLCAyNDYsIDQ4LCA1LCAKLSAgICAxLCAyMTEsIDExNiwgMjA0LCA5MiwgMjQ2LCA0OCwgNSwgMSwgMjEyLCAxNDIsIDIwNCwgOTIsIDI0NiwgNDgsIDUsIDEsIAotICAgIDIwNSwgMTkwLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjAyLCA4NCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDEwNSwgMjA0LCAKLSAgICA5MiwgMjQ2LCA0OCwgMTcsIDEwOCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE0NywgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIAotICAgIDE0OSwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE3MCwgMjA0LCA5MiwgMjQ2LCA0OCwgMTcsIDE5NSwgMjA0LCA5MiwgMjQ2LCAKLSAgICA0OCwgMTcsIDIxMywgMTExLCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMTk5LCAyMDQsIDkyLCAyNDYsIDQ4LCAxNywgMjIyLCAKLSAgICA2MywgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIDIwOSwgMTUyLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjA3LCAxNTEsIDIwNCwgCi0gICAgOTIsIDI0NiwgNDgsIDQyLCAyMDksIDUzLCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjM5LCAxNTMsIDIwNCwgOTIsIDI0NiwgCi0gICAgNDgsIDQyLCAyNDAsIDE4LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjEyLCA3NCwgMjA0LCA5MiwgMjQ2LCA0OCwgNDIsIAotICAgIDIxMywgMTA1LCAyMDQsIDkyLCAyNDYsIDQ4LCA0MiwgMjQxLCAxMzQsIDIwNCwgOTIsIDI0NiwgNDgsIDQyLCAyMjIsIDU4LCAKLSAgICAyMDQsIDkyLCAyNDYsIDQ4LCAyMjAsIDM5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAxODUsIDIxOSwgNDksIAotICAgIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE3MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjI4LCAxMTMsIDIxOSwgCi0gICAgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDE5MiwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjQ0LCAyMTIsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwMiwgMTE2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAKLSAgICAyMDYsIDg2LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMjIsIDIwMywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCAKLSAgICA3NywgMSwgMTUyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMzksIDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDIyOSwgMTQ0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTUsIDM2LCAyMTksIDQ5LCAyNDYsIDY2LCAKLSAgICAyMzcsIDc3LCAxLCAyNDksIDMyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyNDcsIDkyLCAyMTksIDQ5LCAyNDYsIAotICAgIDY2LCAyMzcsIDc3LCAxLCAyMTAsIDIyLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMDksIDEwOCwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMSwgMjAxLCAyMDEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIxOCwgMjA4LCAKLSAgICAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCAyMTYsIDIyMCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgMjQwLCAxMDgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDI0NiwgMTk5LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIAotICAgIDc3LCAxLCA2MywgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNzQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDEsIDc1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA3OCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgCi0gICAgNjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDIwNywgMzksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIAotICAgIDIzNSwgMTcxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjE5LCAxODQsIDIxOSwgNDksIDI0NiwgNjYsIAotICAgIDIzNywgNzcsIDEsIDQ2LCAyMzAsIDU0LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjEwLCA2OSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyNiwgMTg1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgCi0gICAgMjIzLCAxNjMsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDEsIDQ2LCAxNTksIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDEsIDQ2LCAyMDQsIDE0NCwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMSwgNDYsIDIyMiwgMjA1LCAyMTksIDQ5LCAKLSAgICAyNDYsIDY2LCAyMzcsIDc3LCAxLCA0NiwgMjAzLCAxMjQsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAKLSAgICAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNSwgMjQ1LCAyMDgsIDE2MSwgMjE5LCA0OSwgCi0gICAgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIxNSwgMjQ1LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMTUsIDI0NSwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAyMzgsIDQ1LCAyMTEsIDYyLCAyNDAsIDUsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDIyNywgMjgsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgCi0gICAgNzcsIDIxNCwgMjM5LCAyMDgsIDE2MSwgMjE5LCA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjE0LCAyMzksIDE0MywgMTYzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIxNCwgMjM5LCAxNDMsIDI0MCwgNSwgMjE5LCA0OSwgMjQ2LCAKLSAgICA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDIwOCwgMTYxLCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMzgsIDQ1LCAyMTEsIAotICAgIDYyLCAyMDYsIDY4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjQsIDE0OSwgMTQzLCAxNjMsIDI0MCwgNSwgMjE5LCAKLSAgICA0OSwgMjQ2LCA2NiwgMjM3LCA3NywgMjI0LCAxNDksIDE0MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAKLSAgICAyMjYsIDI1NCwgMTQzLCAyMjcsIDI4LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMjA4LCAxNjEsIAotICAgIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjEsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIAotICAgIDIyNiwgMjU0LCAxNDMsIDE2MywgMjQwLCA1LCAyMTksIDQ5LCAyNDYsIDY2LCAyMzcsIDc3LCAyMjYsIDI1NCwgMTQzLCAKLSAgICAyNDAsIDUsIDIxOSwgNDksIDI0NiwgNjYsIDIzNywgNzcsIDIzOCwgNDUsIDIxMSwgNjIsIDI0MCwgNSwgOSwgMiwgNjMsIDksIAotICAgIDIsIDM0LCAyMywgNjMsIDksIDIsIDM0LCAyMywgMjQ5LCAxNSwgOSwgMiwgMzQsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIAotICAgIDksIDIsIDM0LCAyMywgMTUyLCA5LCAyLCAzNCwgMjMsIDIzMSwgODUsIDksIDIsIDM0LCAyMywgMjI4LCA5MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDM0LCAyMywgMjIzLCAxOTksIDksIDIsIDM0LCAyMywgMjE1LCAyMiwgOSwgMiwgMjU0LCAzNCwgOSwgMiwgCi0gICAgMjUxLCAyMzIsIDksIDIsIDI1MSwgMjMzLCAyMywgMjUwLCA3MywgOSwgMiwgMjUxLCAyMzMsIDIzLCAyNDIsIDMwLCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDI0NiwgOSwgMiwgMjUxLCAyMzMsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDI1MSwgMjMzLCAyMywgMTUyLCA5LCAyLCAyNTEsIDIzMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyNTEsIDIzMywgMjMsIDIzMSwgNTksIDksIDIsIDI1MSwgMjMzLCAyMywgMjI4LCA5NCwgOSwgMiwgMjUxLCAyMzMsIAotICAgIDIzLCAyMTMsIDI3LCA5LCAyLCAyNTEsIDIzMywgMjMsIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyNTEsIDIzMywgCi0gICAgMjM3LCAyMDgsIDksIDIsIDI1MSwgMTQ5LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDI0OCwgMjUyLCA5LCAyLCAyNTEsIDE1MCwgCi0gICAgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjUxLCAxNTAsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMTMsIDg4LCA5LCAyLCAyNTEsIDE1MCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNTEsIDEyMiwgOSwgCi0gICAgMiwgMjUxLCA0NywgOSwgMiwgMjUxLCA0OCwgMjMsIDI0MSwgMjIsIDksIDIsIDI1MSwgNDgsIDIzLCAyMTIsIDI0NSwgOTEsIAotICAgIDIzOCwgNTUsIDksIDIsIDI1MSwgMzksIDksIDIsIDI1MSwgNDAsIDIzLCAyNTEsIDM5LCA5LCAyLCAyNTEsIDQwLCAyMywgCi0gICAgMjQzLCAxODYsIDksIDIsIDI1MSwgNDAsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNTEsIDQwLCAyMywgMTUyLCA5LCAyLCAyNTEsIAotICAgIDQwLCAyMywgMjMwLCAyNywgOSwgMiwgMjUxLCA0MCwgMjMsIDIyOSwgMTAwLCA5LCAyLCAyNTEsIDQwLCAyMywgMjEzLCA0MywgCi0gICAgOSwgMiwgMjUxLCA0MCwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyNTEsIDM2LCA5LCAyLCAyNTEsIDI4LCA5LCAyLCAyNTAsIAotICAgIDI0MywgOSwgMiwgMjUwLCAyNDQsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNTAsIDIzMSwgOSwgMiwgMjUwLCAyMzIsIDExNSwgCi0gICAgMjUwLCAyMzEsIDksIDIsIDI1MCwgMjMyLCAxMjYsIDIwOCwgMjE5LCA5LCAyLCAyNTAsIDIzMiwgOTEsIDIyMywgOTcsIAotICAgIDIxOSwgMjUxLCAyNTAsIDIzMiwgOTEsIDIyMywgOTYsIDksIDIsIDI1MCwgMjMyLCA5MSwgMjIzLCA5NywgMjExLCAxNzYsIAotICAgIDksIDIsIDI1MCwgMjAwLCA5LCAyLCAyNTAsIDE3MCwgOSwgMiwgMjUwLCAxMzgsIDksIDIsIDI1MCwgMTM5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDI1MCwgMTEwLCA5LCAyLCAyNTAsIDgwLCA5LCAyLCAyNTAsIDc1LCA5LCAyLCAyNTAsIDc2LCAyMDIsIAotICAgIDM1LCAyMDksIDE0MSwgOSwgMiwgMjUwLCA3NiwgMjMwLCAzMSwgMjA5LCAxNDEsIDksIDIsIDI1MCwgNzYsIDExNSwgMjUwLCAKLSAgICA3NiwgMjA3LCAxOTgsIDExNSwgMjA3LCAxOTgsIDIwNywgMTk4LCAxMTUsIDIwNywgMTk4LCAyMTksIDk2LCA5LCAyLCAyNTAsIAotICAgIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3NiwgMTE1LCAyNTAsIDc2LCAxMTUsIDI1MCwgCi0gICAgNzYsIDI0NSwgMTI0LCAyNTAsIDc2LCAxMTUsIDI1MCwgNzYsIDExNSwgMjUwLCA3NSwgOSwgMiwgMjUwLCA3MywgOSwgMiwgCi0gICAgMjUwLCA2OSwgOSwgMiwgMjQ5LCAzMiwgOSwgMiwgMjQ5LCAxNSwgOSwgMiwgMjQ5LCA5LCA5LCAyLCAyNDksIDMsIDksIDIsIAotICAgIDI0OCwgMjUzLCA5LCAyLCAyNDgsIDI1NCwgMTE1LCAyNDgsIDI1MywgOSwgMiwgMjQ4LCAyNTIsIDksIDIsIDE0MiwgOSwgMiwgCi0gICAgMjQ4LCAyMzAsIDksIDIsIDI0OCwgODYsIDksIDIsIDI0OCwgODcsIDIzLCA2MywgOSwgMiwgMjQ4LCA4NywgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyNDgsIDg3LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0NywgMTkzLCA5LCAyLCAyNDcsIAotICAgIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjUxLCAyMzIsIDksIDIsIDI0NywgMTk0LCAxMTUsIDI0NywgMTk0LCAyMDYsIDI1NSwgOSwgCi0gICAgMiwgMjQ3LCAxOTQsIDI0NSwgMTI0LCAyNDcsIDE5MywgOSwgMiwgMjQ3LCAxNzEsIDksIDIsIDI0NywgMTcyLCAxMTUsIAotICAgIDI0NywgMTcxLCA5LCAyLCAyNDcsIDE2MCwgOSwgMiwgMjQ3LCAxNTksIDksIDIsIDI0NCwgMjEyLCA5LCAyLCAyNDQsIDIwMywgCi0gICAgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAzNCwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjUwLCAyNDMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjQ4LCAyNTIsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzksIDgsIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjM5LCA5LCA5MSwgMjI1LCA3OSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjM3LCAKLSAgICAyMTksIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMTUyLCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgCi0gICAgMjI0LCA5LCAyLCAyNDQsIDIwNCwgMjI5LCA2OSwgMjMsIDIzMCwgMjI1LCA5MSwgMjI2LCAyMzksIDksIDIsIDI0NCwgMjA0LCAKLSAgICAyMjksIDY5LCAyMywgMjMwLCAxMiwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjgsIDExMywgOSwgMiwgMjQ0LCAKLSAgICAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQ0LCAyMDQsIDIyOSwgNjksIDIzLCAyMjYsIDI0MCwgOTEsIAotICAgIDIyNSwgNzgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjI2LCAyMjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjE5LCA5NywgOTEsIDIxOSwgOTYsIDksIDIsIAotICAgIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjEyLCAxNjIsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA5LCAyNDIsIAotICAgIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgMjA3LCA0MSwgOTEsIDIzOCwgNjMsIDksIDIsIDI0NCwgMjA0LCAyMjksIAotICAgIDY5LCAyMywgMjA2LCAxODYsIDksIDIsIDI0NCwgMTc1LCA5LCAyLCAyNDQsIDE1NCwgOSwgMiwgMjQ0LCAxNTMsIDksIDIsIAotICAgIDI0NCwgMTUyLCA5LCAyLCAyNDMsIDIzMywgOSwgMiwgMjQzLCAyMTUsIDksIDIsIDI0MywgMTg4LCA5LCAyLCAyNDMsIDE4OSwgCi0gICAgMjMsIDIxMywgNDMsIDksIDIsIDI0MywgMTg2LCA5LCAyLCAyNDMsIDE3NiwgOSwgMiwgMjQzLCAxNzcsIDIyOSwgMjMyLCAKLSAgICAxMDYsIDIzNywgMjA5LCAyNDMsIDE1NiwgOSwgMiwgMjQzLCAxNTYsIDksIDIsIDI0MiwgNDIsIDksIDIsIDI0MiwgNDMsIAotICAgIDExNSwgMjQyLCA0MiwgOSwgMiwgMjQyLCA0MywgMjM3LCAyMDgsIDksIDIsIDI0MiwgNDMsIDIxMywgMjQsIDksIDIsIDI0MiwgCi0gICAgNDAsIDksIDIsIDI0MiwgNDEsIDIzLCAyNDEsIDQsIDksIDIsIDI0MiwgMzksIDksIDIsIDI0MiwgMzcsIDksIDIsIDI0MiwgCi0gICAgMzYsIDksIDIsIDI0MiwgMzUsIDksIDIsIDI0MiwgMzEsIDksIDIsIDI0MiwgMjksIDksIDIsIDI0MiwgMzAsIDIzNywgMjA4LCAKLSAgICA5LCAyLCAyNDIsIDMwLCAyMzcsIDIwOSwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMjgsIDksIDIsIDI0MiwgMjEsIDksIDIsIAotICAgIDc0LCA5LCAyLCAxODgsIDIzLCAyMTksIDk2LCA5LCAyLCAxODgsIDExNSwgMTg4LCAyMjEsIDQxLCAxMTUsIDIyMSwgNDAsIAotICAgIDksIDIsIDI0MSwgMTkwLCA5LCAyLCAyNDEsIDE5MSwgMjMsIDM0LCA5MSwgMjM3LCAxNjAsIDkxLCAyNDQsIDIxMiwgOSwgMiwgCi0gICAgMjQxLCAxOTEsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjQxLCAxOTEsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQxLCAxOTEsIDIzLCAKLSAgICAyMTUsIDgsIDksIDIsIDI0MSwgMTkxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQxLCAxOTEsIDIzLCA2OCwgOSwgMiwgMjQxLCAKLSAgICAxNjMsIDksIDIsIDI0MSwgMTUxLCA5LCAyLCAyNDEsIDEyMiwgOSwgMiwgMjQxLCA5MiwgOSwgMiwgMjQxLCA5MywgMjMsIAotICAgIDIzOCwgMjMyLCA5LCAyLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyNDEsIDkzLCAyMywgMjI1LCAKLSAgICAyMCwgOSwgMiwgMjQxLCA5MywgMjQ1LCAxMjQsIDI0MSwgOTIsIDksIDIsIDI0MSwgOTMsIDIxOSwgMjUxLCAyNDEsIDkyLCAKLSAgICA5LCAyLCAyNDEsIDkzLCAyMTEsIDE3NiwgOSwgMiwgMjQxLCAyNSwgOSwgMiwgMjQxLCAyMiwgOSwgMiwgMjQxLCA0LCA5LCAKLSAgICAyLCAyNDAsIDE3OSwgOSwgMiwgMjQwLCAxODAsIDIzLCA2MywgOSwgMiwgMjQwLCAxODAsIDIzLCAzNCwgOTEsIDIyOCwgMzAsIAotICAgIDksIDIsIDI0MCwgMTgwLCAyMywgMzQsIDkxLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyNTAsIDIzMSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyNDksIDE1LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgCi0gICAgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAxNTIsIDksIDIsIDI0MCwgMTgwLCAyMywgMjM3LCAxNjAsIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIzMSwgODYsIAotICAgIDIzNywgMjA4LCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyNDAsIDE4MCwgMjMsIDIyOSwgMjMyLCAKLSAgICAyMTEsIDE3NiwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDExMywgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjgsIDMxLCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMjcsIDE0OCwgOSwgCi0gICAgMiwgMjQwLCAxODAsIDIzLCAyMjYsIDIzOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyNDAsIDE4MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIzOSwgOCwgOSwgMiwgMjM5LCA5LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA2LCA5LCAyLCAKLSAgICAyMzksIDcsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMzksIDcsIDIzLCAzNCwgOTEsIDE1MiwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMzQsIDkxLCAyMzEsIDg1LCA5LCAyLCAyMzksIDcsIDIzLCAyNTEsIDE1MCwgMjA5LCAxNDIsIDkxLCAKLSAgICAyMTAsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjUwLCA3NSwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjUwLCA3NCwgOTEsIDIzOCwgMjQ2LCA5LCAyLCAyMzksIDcsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzksIAotICAgIDcsIDIzLCAyNDgsIDIzMSwgOTEsIDIxNiwgMjIwLCA5LCAyLCAyMzksIDcsIDIzLCAyNDcsIDE2MCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjQ3LCAxNjEsIDkxLCAyMTYsIDIyMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ0LCAyMTIsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDI0MywgMjMzLCA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjMsIDIxMywgNDMsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgCi0gICAgNDAsIDksIDIsIDIzOSwgNywgMjMsIDI0MSwgMTIyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDEyMywgOTEsIDIyOCwgMTEzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkyLCA5LCAyLCAyMzksIDcsIDIzLCAyNDEsIDkzLCAyMywgMjM4LCAyMzMsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI0LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzgsIDgxLCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIDc5LCA5LCAyLCAyMzksIDcsIDIzLCAyMzgsIAotICAgIDgwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgNjQsIDkxLCAyMTEsIDEwLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyMzcsIDE2MCwgOTEsIDIyNiwgMjQwLCA5MSwgMjQxLCA0LCA5LCAyLCAyMzksIDcsIDIzLCAyMzcsIDE0MCwgOSwgMiwgCi0gICAgMjM5LCA3LCAyMywgMjM3LCAxNDEsIDkxLCAyMjgsIDExMywgOSwgMiwgMjM5LCA3LCAyMywgMjM3LCA0LCA5MSwgMjI3LCAKLSAgICAxNDgsIDksIDIsIDIzOSwgNywgMjMsIDIzNiwgMjEsIDksIDIsIDIzOSwgNywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMzksIDcsIDIzLCAyMzAsIDIxMCwgOTEsIDIzNiwgMjcsIDkxLCAyNTAsIDc1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzAsIAotICAgIDEyLCA5LCAyLCAyMzksIDcsIDIzLCAyMjksIDIzMSwgOSwgMiwgMjM5LCA3LCAyMywgMjI5LCA5NCwgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjI5LCA5NSwgOTEsIDIyOCwgMzAsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjA4LCA5MSwgMjUwLCAyMzEsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIyOCwgMTEzLCA5LCAyLCAyMzksIDcsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDAsIDksIDIsIDIzOSwgNywgMjMsIDIyMSwgNDEsIAotICAgIDExNSwgMjIxLCA0MCwgOSwgMiwgMjM5LCA3LCAyMywgMTg1LCA5LCAyLCAyMzksIDcsIDIzLCAyMTUsIDgsIDksIDIsIDIzOSwgCi0gICAgNywgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDQ0LCAKLSAgICA5MSwgMjA3LCAxODEsIDksIDIsIDIzOSwgNywgMjMsIDIxMywgOSwgOSwgMiwgMjM5LCA3LCAyMywgMjEwLCAyMjAsIDksIDIsIAotICAgIDIzOSwgNywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzksIDcsIDIzLCA2OCwgOSwgMiwgMjM5LCA3LCAyMywgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjM5LCA3LCAyMywgMjA3LCAzMCwgOTEsIDI0MiwgNDIsIDksIDIsIDIzOSwgNywgMTE1LCAyMzksIDYsIDksIDIsIAotICAgIDIzOSwgMSwgOSwgMiwgMjM5LCAyLCAyNDUsIDEyNCwgMjM5LCAxLCA5LCAyLCAyMzgsIDI1NSwgOSwgMiwgMjM5LCAwLCAKLSAgICAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ2LCA5LCAyLCAyMzgsIDI0NywgCi0gICAgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDIzOCwgMjQ1LCA5LCAyLCAyMzgsIAotICAgIDI0MywgOSwgMiwgMjM4LCAyMzQsIDksIDIsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIDIzOCwgCi0gICAgMjMzLCAxMTUsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIzMywgMjQ1LCAxMjQsIDIzOCwgMjMyLCA5LCAyLCAyMzgsIDIyNCwgCi0gICAgOSwgMiwgMjM4LCAyMjMsIDksIDIsIDIzOCwgMjE4LCA5LCAyLCAyMzgsIDE2MiwgOSwgMiwgMjM4LCAxNjMsIDIzLCAyMjgsIAotICAgIDE4MywgOSwgMiwgMjM4LCA4MSwgOSwgMiwgMjM4LCA4MiwgMjMsIDc0LCA5LCAyLCAyMzgsIDgyLCAyMywgNjgsIDksIDIsIAotICAgIDIzOCwgODIsIDI0NSwgMTI0LCAyMzgsIDgxLCA5LCAyLCAyMzgsIDc5LCA5LCAyLCAyMzgsIDgwLCAxMTUsIDIzOCwgNzksIAotICAgIDksIDIsIDIzOCwgODAsIDI0NSwgMTI0LCAyMzgsIDc5LCA5LCAyLCAyMzgsIDc2LCA5LCAyLCAyMzgsIDYzLCA5LCAyLCAKLSAgICAyMzgsIDY0LCAyMzcsIDIwOCwgOSwgMiwgMjM4LCA2MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDM0LCA5MSwgMjMxLCA4NSwgOSwgCi0gICAgMiwgMjM4LCA2MiwgMjMsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjM4LCA2MiwgMjMsIDIzMSwgODUsIDksIDIsIAotICAgIDIzOCwgNjIsIDIzLCAyMjYsIDI0MCwgOTEsIDIzMSwgODUsIDksIDIsIDIzOCwgNjIsIDIzLCAxODUsIDksIDIsIDIzOCwgCi0gICAgNTcsIDksIDIsIDIzOCwgNTUsIDksIDIsIDIzOCwgNTYsIDI0NSwgMTI0LCAyMzgsIDU1LCA5LCAyLCAyMzgsIDU2LCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjM4LCA1NiwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjM3LCAKLSAgICAyMzAsIDksIDIsIDIzNywgMjMxLCAyNDUsIDEyNCwgMjM3LCAyMzAsIDksIDIsIDIzNywgMjI4LCA5LCAyLCAyMzcsIDIyOSwgCi0gICAgMjMsIDIzMCwgMTIsIDksIDIsIDIzNywgMjI5LCAyMywgMjMwLCAxMywgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAyLCAKLSAgICAyMzcsIDIyOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIzNywgMjI5LCAyMywgMjE1LCA5LCA5MSwgMjA3LCAxOTcsIDksIDIsIAotICAgIDIzNywgMjI5LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAyMTksIDksIDIsIDIzNywgMjIwLCAyMywgMzQsIDkxLCAyMjgsIDE4MywgCi0gICAgOSwgMiwgMjM3LCAyMjAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM3LCAyMjAsIDExNSwgMjM3LCAyMjAsIDIyNiwgMjMwLCA5LCAKLSAgICAyLCAyMzcsIDIxMiwgOSwgMiwgMjM3LCAyMTAsIDksIDIsIDIzNywgMjExLCAyMywgMjEzLCA0MywgOSwgMiwgMjM3LCAyMDIsIAotICAgIDksIDIsIDIzNywgMjAxLCA5LCAyLCAyMzcsIDE5NywgOSwgMiwgMjM3LCAxOTYsIDksIDIsIDE1MiwgOSwgMiwgMjM3LCAKLSAgICAxNjAsIDIwOSwgMTQxLCA5LCAyLCAyMzcsIDE2MCwgMjM3LCAyMDgsIDksIDIsIDIzNywgMTQwLCA5LCAyLCAyMzcsIDMsIDksIAotICAgIDIsIDIzNywgNCwgMjMsIDI1MCwgNzUsIDksIDIsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIzNywgNCwgMjMsIDI0OSwgCi0gICAgMTUsIDksIDIsIDIzNywgNCwgMjMsIDI0MywgMTU2LCA5LCAyLCAyMzcsIDQsIDIzLCAyMzgsIDI1NSwgOSwgMiwgMjM3LCA0LCAKLSAgICAyMywgMjI5LCA4NCwgOSwgMiwgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjM3LCA0LCAyMywgMjEzLCA0MywgOSwgMiwgCi0gICAgMjM3LCA0LCAyMywgNjgsIDksIDIsIDIzNiwgMjYsIDksIDIsIDIzNiwgMjEsIDksIDIsIDIzNiwgMjIsIDIzLCAyNTAsIAotICAgIDIzMSwgOSwgMiwgMjM2LCAyMiwgMjMsIDIzNywgMTQwLCA5LCAyLCAyMzYsIDIyLCAyMywgMjI5LCAyMzEsIDksIDIsIDIzNiwgCi0gICAgMjIsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMzYsIDIyLCAyMywgMjA3LCAyOSwgOSwgMiwgMjM2LCAxNywgOSwgMiwgNzUsIDksIAotICAgIDIsIDIzNSwgMjA2LCA2MywgOSwgMiwgMjM1LCAxNjYsIDksIDIsIDIzMSwgMTEzLCA5LCAyLCAyMzEsIDExNCwgMTE1LCAKLSAgICAyMzEsIDExNCwgMjQ3LCAxNjAsIDksIDIsIDIzMSwgMTE0LCAxMTUsIDIzMSwgMTE0LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCAKLSAgICA4OCwgOSwgMiwgMjMxLCA4NSwgOSwgMiwgMjMxLCA4NiwgMjQzLCAyMTUsIDksIDIsIDIzMSwgODYsIDIxNiwgNTcsIDksIDIsIAotICAgIDIzMSwgODYsIDExNSwgMjMxLCA4NiwgMjEyLCAyNDksIDExNSwgMjEyLCAyNDksIDIwNywgMzAsIDExNSwgMjA3LCAyOSwgOSwgCi0gICAgMiwgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIzMSwgNzcsIDksIDIsIDIzMSwgNzgsIDIzLCAyMzgsIDIzMywgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIzMSwgNzYsIDksIDIsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIzLCAyMDksIDI0MiwgOSwgMiwgCi0gICAgMjMxLCA2NywgMjQ1LCAxMjQsIDIzMSwgNjYsIDksIDIsIDIzMSwgNjcsIDIxOSwgMjUxLCAyMzEsIDY2LCA5LCAyLCAyMzEsIAotICAgIDY3LCAyMTEsIDE3NiwgOSwgMiwgMjMxLCA1OSwgOSwgMiwgMjMxLCA0OSwgOSwgMiwgMjMwLCAyMjQsIDksIDIsIDIzMCwgCi0gICAgMjA5LCA5LCAyLCAxNzMsIDksIDIsIDIzMCwgNDQsIDIzLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MSwgMTIyLCA5LCAyLCAKLSAgICAyMzAsIDQ0LCAyMywgMjUxLCAxMjMsIDkxLCAyMjgsIDIwNywgOSwgMiwgMjMwLCA0NCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyNDksIDE1LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQ4LCAyNTIsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAxNDIsIDksIDIsIDIzMCwgNDQsIDIzLCAyNDgsIDg2LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjQxLCAyMiwgOSwgMiwgMjMwLCAKLSAgICA0NCwgMjMsIDI0MSwgNCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOSwgOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgMjQ2LCAKLSAgICA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCAyMjQsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMzgsIDIyNSwgOTEsIDIxMywgODksIDkxLCA2MywgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgODEsIAotICAgIDksIDIsIDIzMCwgNDQsIDIzLCAyMzgsIDYzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgOTEsIDIxNCwgMjMwLCA5LCAKLSAgICAyLCAyMzAsIDQ0LCAyMywgMjM4LCA1NiwgMjQ1LCAxMjQsIDIzOCwgNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIzMCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgMjAxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjMxLCA4NSwgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDIzMSwgNjYsIDksIDIsIDIzMCwgNDQsIDIzLCAyMzAsIDEyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI5LCAxMDAsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMjksIDk0LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI3LCAxNDgsIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMjYsIDIzOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjUsIDIxLCA5MSwgCi0gICAgMjQyLCA0MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyNSwgMjEsIDkxLCAyMzgsIDgxLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI1LCAKLSAgICAyMSwgOTEsIDIwOSwgMTg3LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjI0LCAxNTUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjQsIAotICAgIDE1NiwgOTEsIDIyMSwgMzUsIDksIDIsIDIzMCwgNDQsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjMwLCA0NCwgMjMsIDIyMSwgCi0gICAgNDAsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTgsIDE2NywgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNSwgMTQ1LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjE1LCAzNiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxNCwgMjMwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEzLCA5MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMywgNDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMTMsIDksIDksIDIsIDIzMCwgNDQsIDIzLCAKLSAgICAyMTIsIDE5OSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgMTQ5LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjEwLCAyMjksIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDksIDIxOCwgOSwgMiwgMjMwLCA0NCwgMjMsIDY4LCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjMwLCA0NCwgMjMsIDIwNywgMjksIDksIDIsIDIzMCwgNDQsIDIzLCAyMDcsIDIsIDIzLCAxODUsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIwMiwgMzksIDksIDIsIDIzMCwgNDIsIDksIDIsIAotICAgIDIzMCwgNDMsIDI0NSwgMTI0LCAyMzAsIDQyLCA5LCAyLCAyMzAsIDMyLCA5LCAyLCAyMzAsIDI5LCA5LCAyLCAyMzAsIDI3LCAKLSAgICA5LCAyLCAyMzAsIDI2LCA5LCAyLCAyMzAsIDI0LCA5LCAyLCAyMzAsIDI1LCAxMTUsIDIzMCwgMjQsIDksIDIsIDIzMCwgMTIsIAotICAgIDksIDIsIDIzMCwgMTMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjMwLCA4LCA5LCAyLCAyMzAsIDksIDIzLCAKLSAgICAyNDksIDE1LCA5LCAyLCAyMzAsIDksIDI0NSwgMTI0LCAyMzAsIDgsIDksIDIsIDIzMCwgNiwgOSwgMiwgMjMwLCA1LCA5LCAKLSAgICAyLCAyMjksIDIzMSwgOSwgMiwgMjI5LCAyMzIsIDIyOCwgOTUsIDIzLCAxMDYsIDExNSwgMjI4LCA5NSwgMjMsIDY4LCA5LCAKLSAgICAyLCAyMjksIDIzMiwgMTE1LCAyMjksIDIzMiwgMjI4LCA5NSwgMjMsIDEwNiwgMTE1LCAyMjgsIDk1LCAyMywgNjgsIDksIDIsIAotICAgIDIyOSwgMTcxLCA5LCAyLCAyMjksIDEwMCwgOSwgMiwgMjI5LCAxMDEsIDIzLCAyNDksIDE1LCA5LCAyLCAyMjksIDEwMSwgCi0gICAgMjMsIDY4LCA5LCAyLCAyMjksIDEwMSwgMjMsIDIwNywgMjksIDksIDIsIDIyOSwgOTQsIDksIDIsIDIyOSwgODQsIDksIDIsIAotICAgIDIyOSwgNzEsIDksIDIsIDIyOSwgNzAsIDksIDIsIDIyOSwgNjgsIDksIDIsIDIyOSwgNjksIDExNSwgMjI5LCA2OCwgOSwgMiwgCi0gICAgMjI4LCAyMDksIDksIDIsIDIyOCwgMjEwLCAxMTUsIDIzNywgNCwgMjMsIDI1MCwgNzQsIDIyOCwgMjEwLCAxMTUsIDIzNywgCi0gICAgNCwgMjMsIDI1MCwgNzMsIDksIDIsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDIwNSwgOSwgMiwgMjI4LCAyMDYsIDIwNiwgNjksIAotICAgIDE4LCA5LCAyLCAyMjgsIDIwNCwgOSwgMiwgMjI4LCAxOTYsIDksIDIsIDIyOCwgMTk3LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICAxOTUsIDksIDIsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE4NCwgMjE5LCAyNTEsIDIyOCwgMTgzLCA5LCAyLCAyMjgsIDE3NywgCi0gICAgOSwgMiwgMjI4LCAxNTUsIDksIDIsIDIyOCwgMTEzLCA5LCAyLCAyMjgsIDk0LCA5LCAyLCAyMjgsIDk1LCAyMywgNjMsIDksIAotICAgIDIsIDIyOCwgOTUsIDIzLCAzNCwgOTEsIDI0NCwgMjEzLCA5MSwgMTUyLCA5LCAyLCAyMjgsIDk1LCAyMywgMzQsIDkxLCAKLSAgICAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDM0LCA5MSwgMjI4LCAzMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MSwgMzksIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI1MCwgNzYsIDIwMiwgMzUsIDIwOSwgCi0gICAgMTQxLCA5LCAyLCAyMjgsIDk1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0OCwgODYsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyNDQsIDE1NCwgOSwgMiwgMjI4LCA5NSwgMjMsIDI0MSwgOTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDIyOCwgOTUsIDIzLCAyMzgsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzNywgMjE5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjM3LCAyMjAsIDkxLCAyMzcsIDIxOSwgOSwgMiwgMjI4LCA5NSwgMjMsIDE1MiwgOSwgMiwgMjI4LCA5NSwgMjMsIAotICAgIDIzNywgMTQwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjM3LCA0LCAyMywgMjIxLCA0MCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgCi0gICAgODYsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDk1LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIzMSwgNjcsIDkxLCAKLSAgICAxNTIsIDksIDIsIDIyOCwgOTUsIDIzLCAyMzEsIDY3LCA5MSwgMjI2LCAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjksIAotICAgIDEwMCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyOSwgODQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjgsIDIwNywgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIyOCwgMTk2LCA5LCAyLCAyMjgsIDk1LCAyMywgMjI4LCAxOTcsIDkxLCAyMzcsIDQsIDkxLCA2MywgOSwgMiwgCi0gICAgMjI4LCA5NSwgMjMsIDIyOCwgOTQsIDksIDIsIDIyOCwgOTUsIDIzLCAyMjcsIDkyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjI2LCAKLSAgICAyMzksIDksIDIsIDIyOCwgOTUsIDIzLCAyMjYsIDIyNCwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyNSwgMjAsIDksIDIsIDIyOCwgCi0gICAgOTUsIDIzLCAyMjUsIDIxLCA5MSwgMjQxLCA5MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIyMywgMTk5LCA5LCAyLCAyMjgsIDk1LCAKLSAgICAyMywgMjIyLCAyNDAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMTMsIDQ0LCA5MSwgMjEwLCAyMjAsIDksIDIsIDIyOCwgOTUsIAotICAgIDIzLCAyMTIsIDI0NSwgOTEsIDIzOCwgNTYsIDkxLCAyNDEsIDIyLCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAyNDUsIDkxLCAKLSAgICAyMzgsIDU2LCAyMDksIDE0MSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMjgsIDk1LCAyMywgMjEyLCAKLSAgICAxOTgsIDkxLCAyMTIsIDE5NywgOSwgMiwgMjI4LCA5NSwgMjMsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDk1LCAyMywgMjA5LCAKLSAgICAyNTUsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwOSwgMTg4LCA5MSwgMzQsIAotICAgIDkxLCAyMTEsIDExLCA5MSwgMjAxLCAyMDEsIDksIDIsIDIyOCwgOTUsIDIzLCA2OCwgOSwgMiwgMjI4LCA5NSwgMjMsIDEwNiwgCi0gICAgOTEsIDYzLCA5LCAyLCAyMjgsIDk1LCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgNjgsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDcsIAotICAgIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjI4LCA5NSwgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgOTUsIDIzLCAyMDYsIDE4NiwgCi0gICAgOSwgMiwgMjI4LCA5NSwgMjExLCAxNzYsIDksIDIsIDIyOCwgOTIsIDksIDIsIDIyOCwgOTMsIDIzLCAyMTMsIDQzLCA5LCAyLCAKLSAgICAyMjgsIDkzLCAyMywgMjEzLCA0NCwgOTEsIDIxMCwgMjIwLCA5LCAyLCAyMjgsIDkzLCAyMzcsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5MywgMjM3LCAyMDksIDExNSwgMjI4LCA5MywgMjM3LCAyMDksIDIxMywgNDMsIDksIDIsIDIyOCwgODgsIDksIDIsIDIyOCwgCi0gICAgMzAsIDksIDIsIDIyOCwgMzEsIDIzLCAyMjgsIDMwLCA5LCAyLCAyMjgsIDI4LCA5LCAyLCAyMjgsIDI5LCAyMywgMjI4LCAKLSAgICAxODMsIDksIDIsIDIyOCwgMjksIDIzLCAyMjgsIDE4NCwgOTEsIDIxNSwgMTQ1LCA5LCAyLCAyMjcsIDE0OCwgOSwgMiwgCi0gICAgMjI3LCAxMjksIDksIDIsIDIyNywgMTE3LCA5LCAyLCAyMjcsIDkyLCA5LCAyLCAyMjYsIDIzOSwgOSwgMiwgMjI2LCAyNDAsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMjYsIDIzNywgOSwgMiwgMjI2LCAyMzgsIDIzLCAyNTEsIDM5LCA5LCAyLCAyMjYsIDIzOCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQxLCA0LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDI0MSwgNSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIzNywgNCwgCi0gICAgMjMsIDI0OSwgMTUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMxLCA2NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMzAsIDI5LCA5LCAKLSAgICAyLCAyMjYsIDIzOCwgMjMsIDIzMCwgMjcsIDksIDIsIDIyNiwgMjM4LCAyMywgMjMwLCAyOCwgOTEsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjI5LCAxMDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI4LCAxMTQsIDkxLCAyNTAsIDc1LCA5LCAyLCAKLSAgICAyMjYsIDIzOCwgMjMsIDIyOCwgOTQsIDksIDIsIDIyNiwgMjM4LCAyMywgMjI1LCAyMSwgOTEsIDI0MSwgOTIsIDksIDIsIAotICAgIDIyNiwgMjM4LCAyMywgMjIyLCAyNDAsIDksIDIsIDIyNiwgMjM4LCAyMywgMjIxLCA4NCwgOSwgMiwgMjI2LCAyMzgsIDIzLCAKLSAgICAyMTIsIDE2MywgOTEsIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjEyLCAxNDEsIDkxLCAyNDcsIDE5MywgOSwgMiwgCi0gICAgMjI2LCAyMzgsIDIzLCAyMDcsIDE5NywgOSwgMiwgMjI2LCAyMzgsIDIwOSwgMTQxLCA5LCAyLCAyMjYsIDIzOCwgMjQ1LCAKLSAgICAxMjQsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjE5LCAyNTEsIDIyNiwgMjM3LCA5LCAyLCAyMjYsIDIzOCwgMjExLCAKLSAgICAxNzYsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI0LCA5LCAyLCAyMjYsIDIzNiwgOSwgMiwgMjI2LCAyMzAsIDksIDIsIDIyNiwgCi0gICAgMjMxLCAxMTUsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgMjE5LCAyNTEsIDIyNiwgMjMwLCA5LCAyLCAyMjYsIDIzMSwgCi0gICAgMjEzLCAyNCwgOSwgMiwgMjI2LCAyMjcsIDksIDIsIDIyNiwgMjI0LCA5LCAyLCAyMjYsIDIyMiwgOSwgMiwgMjI2LCAyMjMsIAotICAgIDExNSwgMjI2LCAyMjIsIDksIDIsIDIyNiwgMjIzLCAxMTUsIDIyNiwgMjIzLCAyMzgsIDIyNSwgMTE1LCAyMzgsIDIyNCwgOSwgCi0gICAgMiwgMTkyLCA5LCAyLCAyMjUsIDE3NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjUsIDE3NywgMjM3LCAyMDgsIDksIDIsIAotICAgIDIyNSwgMTc2LCA5LCAyLCAyMjUsIDE0OCwgOSwgMiwgMjI1LCAxMDAsIDksIDIsIDIyNSwgNzksIDksIDIsIDIyNSwgNzgsIAotICAgIDksIDIsIDIyNSwgMjAsIDksIDIsIDIyNCwgMjI4LCA5LCAyLCAyMjQsIDE1NSwgOSwgMiwgMjI0LCAxMTAsIDksIDIsIDIyMywgCi0gICAgMjQ2LCA5LCAyLCAyMjMsIDI0NywgMTE1LCAyMjMsIDI0NiwgOSwgMiwgMjIzLCAyMzUsIDksIDIsIDIyMywgMjM2LCAyMzcsIAotICAgIDIwOCwgOSwgMiwgMjIzLCAyMTcsIDksIDIsIDIyMywgMjAzLCA5LCAyLCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAyMDAsIDIzLCAKLSAgICA2MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMjgsIDE4MywgOSwgMiwgMjIzLCAyMDAsIDIzLCAyMDIsIDExNiwgOSwgMiwgCi0gICAgMjIzLCAyMDAsIDExNSwgMjIzLCAxOTksIDksIDIsIDIyMywgMjAwLCAxMTUsIDIyMywgMjAwLCAyMywgMzQsIDkxLCAyMDEsIAotICAgIDIwMSwgOSwgMiwgMjIzLCAyMDAsIDI0NSwgMTI0LCAyMjMsIDE5OSwgOSwgMiwgMjIzLCAxOTcsIDksIDIsIDIyMywgMTk4LCAKLSAgICAyMywgNjMsIDksIDIsIDIyMywgMTk4LCAyMywgMzQsIDkxLCAyNDMsIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzLCAyNDMsIAotICAgIDIzMywgOSwgMiwgMjIzLCAxOTgsIDIzNywgMjA4LCA5LCAyLCAyMDEsIDIwMSwgOSwgMiwgMjIzLCAxMDksIDksIDIsIDIyMywgCi0gICAgOTYsIDksIDIsIDIyMywgOTcsIDIzMCwgMjM4LCA5LCAyLCAyMjMsIDk3LCAyMywgMjEyLCAyMDAsIDIwOSwgMTQxLCA5LCAyLCAKLSAgICAyMjMsIDk3LCAyMTksIDI1MSwgMjIzLCA5NiwgOSwgMiwgMjIzLCA5NSwgOSwgMiwgMjIzLCA4OCwgMjIxLCAyNiwgOSwgMiwgCi0gICAgMjIzLCA4NywgOSwgMiwgMjIzLCA4NiwgOSwgMiwgMjIyLCAyNDAsIDksIDIsIDIyMiwgMjQxLCAyMywgNjMsIDksIDIsIAotICAgIDIyMiwgMjQxLCAyMywgMjA3LCAyOSwgOSwgMiwgMjIyLCAyNDEsIDIxMywgMjQsIDksIDIsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyMjIsIDEwMSwgMjMsIDc0LCA5LCAyLCAyMjIsIDk5LCA5LCAyLCAyMjIsIDY5LCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAKLSAgICAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMjIsIDcwLCAyMywgMjM4LCAyMjUsIDkxLCAyMzgsIDIzMywgMjA5LCAxNDEsIDksIDIsIAotICAgIDIyMiwgNjUsIDksIDIsIDIyMiwgNjYsIDIzLCAyNTAsIDIzMSwgOSwgMiwgMjIyLCA2NiwgMjMsIDI1MCwgNzUsIDksIDIsIAotICAgIDIyMiwgNjYsIDIzLCAyNTAsIDc2LCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjE5LCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI1LCAyMSwgOTEsIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIyMiwgCi0gICAgMjQwLCA5LCAyLCAyMjIsIDY2LCAyMywgMjIxLCA0MCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxMywgNDMsIDksIDIsIDIyMiwgCi0gICAgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMzQsIDI1MCwgMjMxLCA5LCAyLCAyMjIsIDY2LCAyMywgMjEzLCA0NCwgOTEsIDI1MCwgCi0gICAgNzUsIDksIDIsIDIyMiwgNjYsIDIzLCAyMTMsIDQ0LCA5MSwgMjUwLCA3NiwgOTEsIDI1MCwgNzUsIDksIDIsIDIyMiwgNjYsIAotICAgIDIzLCAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMjIsIDUzLCA5LCAKLSAgICAyLCAyMjEsIDg0LCA5LCAyLCAyMjEsIDU2LCA5LCAyLCAyMjEsIDQwLCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMjUsIDc5LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAKLSAgICAyMywgMjE1LCA4LCA5LCAyLCAyMjEsIDQxLCAyMjgsIDkzLCAyMywgMjE1LCA5LCAxMTUsIDIyMSwgNDEsIDIyOCwgOTMsIAotICAgIDIzLCAyMTUsIDgsIDksIDIsIDIyMSwgNDEsIDIyOCwgOTMsIDIzLCAyMDYsIDE4NiwgOSwgMiwgMjIxLCA0MSwgMjA5LCAKLSAgICAxNDEsIDksIDIsIDIyMSwgNDEsIDExNSwgMjIxLCA0MCwgOSwgMiwgMjIxLCA0MSwgMjQ1LCAxMjQsIDIyMSwgNDAsIDksIDIsIAotICAgIDIyMSwgNDEsIDI0NSwgMTI0LCAyMjEsIDQxLCAyMjgsIDkzLCAxMTUsIDIyOCwgOTIsIDksIDIsIDIyMSwgMzUsIDksIDIsIAotICAgIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyNDgsIDg2LCA5LCAKLSAgICAyLCAyMjEsIDM2LCAyNTEsIDE1MCwgMjMsIDI0MiwgMzcsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjM3LCAyMTksIAotICAgIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyMSwgMzYsIDI1MSwgMTUwLCAKLSAgICAyMywgMjMwLCAyNywgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMjgsIDExMywgOSwgMiwgMjIxLCAzNiwgMjUxLCAKLSAgICAxNTAsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjIxLCAzNiwgMjUxLCAxNTAsIDIzLCAyMTIsIDEzOCwgOSwgMiwgMjIxLCAzNiwgCi0gICAgMjUxLCAxNTAsIDIzLCAyMDcsIDQwLCA5LCAyLCAyMjEsIDM2LCAyMjksIDY5LCAyMywgMjQ4LCA4NiwgOSwgMiwgMjIxLCAKLSAgICAzNiwgMjI5LCA2OSwgMjMsIDI0OCwgODcsIDY4LCA5LCAyLCAxODUsIDksIDIsIDIxOSwgMTU5LCA5LCAyLCAyMTksIDEyMiwgCi0gICAgOSwgMiwgMjE5LCA5NiwgOSwgMiwgMjE4LCAyMjIsIDksIDIsIDIxOCwgMTY3LCA5LCAyLCAyMTgsIDE2OCwgMjMsIDYzLCA5LCAKLSAgICAyLCAyMTgsIDE2OCwgMjMsIDI1MSwgMjMyLCA5LCAyLCAyMTgsIDE2OCwgMjMsIDI0OCwgODYsIDksIDIsIDIxOCwgMTY4LCAKLSAgICAyMywgMjQ3LCAxOTMsIDksIDIsIDIxOCwgMTY4LCAyMywgNzQsIDksIDIsIDIxOCwgMTY4LCAyMywgNzUsIDksIDIsIDIxOCwgCi0gICAgMTY4LCAyMywgMjM1LCAxNjYsIDksIDIsIDIxOCwgMTY4LCAyMywgNjgsIDksIDIsIDIxOCwgMTY4LCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE4LCAxNjgsIDI0NSwgMTI0LCAyMTgsIDE2NywgOSwgMiwgMjE4LCAxMDksIDksIDIsIDIxOCwgMTEwLCAyMywgCi0gICAgMjMwLCA4LCA5LCAyLCAyMTgsIDExMCwgMjMsIDIwNywgMjksIDksIDIsIDIxOCwgMTEwLCAyMywgMjAyLCAxMTYsIDksIDIsIAotICAgIDIxOCwgMTEwLCAyMTksIDI1MSwgMjE4LCAxMDksIDksIDIsIDIxNiwgMjIwLCA5LCAyLCAyMTYsIDIxNCwgOSwgMiwgMjE2LCAKLSAgICA1NywgOSwgMiwgMjE1LCAxNDUsIDksIDIsIDIxNSwgMzYsIDksIDIsIDIxNSwgMjMsIDIyMSwgMjYsIDksIDIsIDIxNSwgMjIsIAotICAgIDksIDIsIDIxNSwgMjMsIDIzLCA2MywgOSwgMiwgMjE1LCAyMywgMjMsIDI0MiwgNDIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyNDIsIDQwLCA5LCAyLCAyMTUsIDIzLCAyMywgMTUyLCA5LCAyLCAyMTUsIDIzLCAyMywgMjMwLCAxMiwgOSwgMiwgMjE1LCAKLSAgICAyMywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMTUsIDIzLCAyMywgMjI2LCAyMjIsIDksIDIsIDIxNSwgMjMsIDIzLCAyMjQsIAotICAgIDE1NSwgOSwgMiwgMjE1LCAyMywgMjMsIDIyMSwgNDAsIDksIDIsIDIxNSwgMjMsIDIzLCAyMTUsIDgsIDksIDIsIDIxNSwgCi0gICAgMjMsIDIzLCAyMTMsIDksIDksIDIsIDIxNSwgMjMsIDIzLCAyMTAsIDEwLCA5LCAyLCAyMTUsIDIzLCAyMywgMjA3LCA0MCwgCi0gICAgOSwgMiwgMjE1LCAyMywgMjMsIDIwNywgMzUsIDksIDIsIDIxNSwgMjMsIDIzLCAyMDcsIDYsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMDYsIDIxMCwgOSwgMiwgMjE1LCAyMywgMjMsIDIwNiwgMTg2LCA5LCAyLCAyMTUsIDIzLCAxMTUsIDIxNSwgMjIsIDksIDIsIAotICAgIDIxNSwgMjMsIDIzNywgMjA4LCA5LCAyLCAyMTUsIDgsIDksIDIsIDIxNSwgOSwgMjI4LCA5NSwgMjMsIDI1MCwgNzMsIDksIAotICAgIDIsIDIxNCwgMjM4LCA5LCAyLCAyMTQsIDIzMCwgOSwgMiwgMjEzLCA5MCwgOSwgMiwgMjEzLCA4OCwgOSwgMiwgMjEzLCA4OSwgCi0gICAgMjMsIDYzLCA5LCAyLCAyMTMsIDg5LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjEzLCA4OSwgMjMsIDIzOCwgNTUsIDksIDIsIAotICAgIDIxMywgODksIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjEzLCA4OSwgMjMsIDIxMiwgMTk3LCA5LCAyLCAyMTMsIDg5LCAyMywgCi0gICAgMjA3LCAxODEsIDksIDIsIDIxMywgODksIDIzLCA2OCwgOSwgMiwgMjEzLCA4OSwgMjMsIDEwNiwgOTEsIDYzLCA5LCAyLCAKLSAgICAyMTMsIDg2LCA5LCAyLCAyMTMsIDg0LCA5LCAyLCAyMTMsIDU5LCA5LCAyLCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCAyMzYsIAotICAgIDI2LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIzOSwgMCwgMTE1LCAyMzksIDAsIDIzOCwgMjI1LCAxMTUsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMTMsIDQ0LCAxMTUsIDIxMywgNDQsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjM4LCAyMjUsIDExNSwgCi0gICAgMjM4LCAyMjQsIDksIDIsIDIxMywgMzYsIDksIDIsIDIxMywgMzEsIDksIDIsIDIxMywgMjcsIDksIDIsIDIxMywgMjYsIDksIAotICAgIDIsIDIxMywgMjMsIDksIDIsIDIxMywgOSwgOSwgMiwgMjEzLCAxMCwgMjMsIDYzLCA5LCAyLCAyMTMsIDEwLCAyMywgMjMxLCAKLSAgICA2NiwgOSwgMiwgMjEzLCAzLCA5LCAyLCAyMTMsIDQsIDIzLCA2MywgOSwgMiwgMjEzLCA0LCAyMywgMjQ4LCAyNTMsIDksIDIsIAotICAgIDIxMywgNCwgMjMsIDI0NywgMTcxLCA5LCAyLCAyMTMsIDQsIDIzLCAyNDMsIDE3NiwgOSwgMiwgMjEzLCA0LCAyMywgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODUsIDksIDIsIDIxMywgNCwgMjMsIDIzMSwgODYsIDIzNywgMjA4LCA5LCAKLSAgICAyLCAyMTMsIDQsIDIzLCAyMjgsIDE3NywgOSwgMiwgMjEzLCA0LCAyMywgMjI2LCAyMjQsIDksIDIsIDIxMywgNCwgMjMsIAotICAgIDIyMywgMjM1LCA5LCAyLCAyMTMsIDQsIDIzLCAyMTUsIDgsIDksIDIsIDIxMiwgMjUzLCA5LCAyLCAyMTIsIDI0OCwgOSwgMiwgCi0gICAgMjEyLCAyNDksIDIwOSwgMTQxLCA5LCAyLCAyMTIsIDI0OSwgMTE1LCAyMTIsIDI0OSwgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDksIDIsIDIxMiwgMjQ0LCA5LCAyLCAyMTIsIDE5OSwgOSwgMiwgMjEyLCAyMDAsIDExNSwgMjMwLCAyMzksIDIxMiwgCi0gICAgMTk5LCA5LCAyLCAyMTIsIDE5NywgOSwgMiwgMjEyLCAxOTYsIDksIDIsIDIxMiwgMTYyLCA5LCAyLCAyMTIsIDE2MywgMjM3LCAKLSAgICAyMDgsIDksIDIsIDIxMiwgMTQ5LCA5LCAyLCAyMTIsIDE0NywgOSwgMiwgMjEyLCAxNDgsIDExNSwgMjEyLCAxNDgsIDIxMiwgCi0gICAgMTk3LCA5LCAyLCAyMTIsIDE0MCwgOSwgMiwgMjEyLCAxMzgsIDksIDIsIDIxMSwgMTAsIDksIDIsIDIxMSwgMTEsIDExNSwgCi0gICAgMjExLCAxMCwgOSwgMiwgMjEwLCAyMzIsIDksIDIsIDIxMCwgMjMxLCA5LCAyLCAyMTAsIDIyOSwgOSwgMiwgMjEwLCAyMjAsIAotICAgIDksIDIsIDIxMCwgMjE5LCA5LCAyLCAyMTAsIDE5MywgOSwgMiwgMjEwLCAxOTIsIDksIDIsIDIxMCwgMjIsIDksIDIsIDIxMCwgCi0gICAgMjMsIDI1MCwgNTksIDksIDIsIDIxMCwgMjMsIDIzLCAyMzcsIDMsIDksIDIsIDIxMCwgMjMsIDIzLCAyMjQsIDE1NSwgOSwgCi0gICAgMiwgMjEwLCAyMywgMjM3LCAyMDgsIDksIDIsIDIxMCwgMTAsIDksIDIsIDIxMCwgMTEsIDExNSwgMjEwLCAxMSwgMjIyLCAKLSAgICAxMDEsIDExNSwgMjIyLCAxMDEsIDI0MywgMTU3LCAxMTUsIDI0MywgMTU2LCA5LCAyLCAyMTAsIDExLCAyMTEsIDE3NiwgOSwgCi0gICAgMiwgMjA5LCAyNTUsIDksIDIsIDE2MCwgMjMsIDI0OCwgODYsIDksIDIsIDE2MCwgMjMsIDIzNywgMjE5LCA5LCAyLCAxNjAsIAotICAgIDIzLCAyMTMsIDQzLCA5LCAyLCAxNjAsIDIzLCAyMTIsIDE5OSwgOSwgMiwgMTYwLCAyMywgMjA3LCAxOTcsIDksIDIsIDE2MCwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIwOSwgMjQyLCA5LCAyLCAyMDksIDIxOCwgOSwgMiwgMjA5LCAxODcsIDksIDIsIDIwOSwgCi0gICAgMTg4LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAyLCA5LCAyLCAyMDksIDMsIDIwOSwgMTQxLCA5LCAyLCAyMDgsIDIyOSwgOSwgCi0gICAgMiwgMjA4LCAyMDYsIDksIDIsIDIwOCwgMjA3LCAyMywgMjA5LCAyNDIsIDksIDIsIDIwOCwgMjA3LCAxMTUsIDIwOCwgMjA2LCAKLSAgICA5LCAyLCAyMDgsIDIwNywgMTE1LCAyMDgsIDIwNywgMjM5LCAwLCAxMTUsIDIzOSwgMCwgMjM4LCAyMjUsIDExNSwgMjM4LCAKLSAgICAyMjQsIDksIDIsIDIwNywgMjAzLCA5LCAyLCAyMDcsIDE5NywgOSwgMiwgMjA3LCAxOTUsIDksIDIsIDIwNywgMTkxLCA5LCAKLSAgICAyLCAyMDcsIDE4MSwgOSwgMiwgMjA3LCAxODIsIDExNSwgMjA3LCAxODIsIDIwMiwgMTE3LCAxMTUsIDIwMiwgMTE2LCA5LCAKLSAgICAyLCA2OCwgOSwgMiwgMTA2LCAyMzcsIDIxOSwgOSwgMiwgMTA2LCAxMDYsIDY4LCA5LCAyLCAxMDYsIDExNSwgMTA2LCAyMTksIAotICAgIDE2OSwgMTE1LCAyMTksIDE2OSwgMjM4LCAyMjUsIDExNSwgMjM4LCAyMjQsIDksIDIsIDEwNiwgMTE1LCAxMDYsIDIxMCwgCi0gICAgMTk0LCAxMTUsIDIxMCwgMTkzLCA5LCAyLCAxMDYsIDExNSwgMTA2LCAxMDYsIDIxNiwgNzMsIDExNSwgMTA2LCAyMTYsIDcyLCAKLSAgICA5LCAyLCAyMDcsIDQwLCA5LCAyLCAyMDcsIDM1LCA5LCAyLCAyMDcsIDI5LCA5LCAyLCAyMDcsIDMwLCAyMjgsIDE3NywgOSwgCi0gICAgMiwgMjA3LCAzMCwgMjMsIDI0OSwgMTUsIDksIDIsIDIwNywgMzAsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjA3LCAzMCwgMjMsIAotICAgIDEwNiwgOTEsIDEwNiwgOTEsIDY4LCA5LCAyLCAyMDcsIDMwLCAyMywgMTA2LCA5MSwgMTA2LCA5MSwgMTA2LCAyMzcsIDIwOCwgCi0gICAgOSwgMiwgMjA3LCAzMCwgMjM3LCAyMDgsIDksIDIsIDIwNywgMzAsIDIxMywgMjQsIDksIDIsIDIwNywgMzAsIDIxMywgMjUsIAotICAgIDIzLCAyNDksIDE1LCA5LCAyLCAyMDcsIDI1LCA5LCAyLCAyMDcsIDYsIDksIDIsIDIwNywgNywgMjMsIDIyOCwgOTQsIDksIAotICAgIDIsIDIwNywgNywgMjMsIDIyNSwgMjEsIDkxLCAyNDQsIDIxMiwgOSwgMiwgMjA3LCA3LCAyMywgMjEzLCA4OCwgOSwgMiwgCi0gICAgMjA3LCA3LCAyMywgNjgsIDksIDIsIDIwNywgNSwgOSwgMiwgMjA3LCAxLCA5LCAyLCAyMDcsIDIsIDIzLCAyMjksIDIzMSwgCi0gICAgOSwgMiwgMjA3LCAyLCAyMywgMTg1LCA5LCAyLCAyMDYsIDI1NSwgOSwgMiwgMjA3LCAwLCAyMzcsIDIwOCwgOSwgMiwgMjA2LCAKLSAgICAyMTAsIDksIDIsIDIwNiwgMjExLCAyNDUsIDEyNCwgMjA2LCAyMTAsIDksIDIsIDIwNiwgMjExLCAyMTMsIDI0LCA5LCAyLCAKLSAgICAyMDYsIDIwOCwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIDE1MiwgOSwgMiwgMjA2LCAyMDksIDIzLCAzNCwgOTEsIAotICAgIDIwMSwgMjAxLCA5LCAyLCAyMDYsIDIwOSwgMjMsIDI1MSwgMzksIDksIDIsIDIwNiwgMjA5LCAyMywgMTUyLCA5LCAyLCAKLSAgICAyMDYsIDIwOSwgMjMsIDIyMSwgNDAsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCA0MCwgOSwgMiwgMjA2LCAyMDksIDIzLCAKLSAgICAyMDcsIDQxLCA5MSwgMjUwLCA3NSwgOSwgMiwgMjA2LCAyMDksIDIzLCAyMDcsIDQxLCA5MSwgMjQ4LCA4NiwgOSwgMiwgCi0gICAgMjA2LCAyMDcsIDksIDIsIDIwNiwgMjA0LCA5LCAyLCAyMDYsIDIwMywgOSwgMiwgMjA2LCAxOTksIDksIDIsIDIwNiwgMjAwLCAKLSAgICAyMywgNjMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjUwLCA2OSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAxNDIsIDksIDIsIDIwNiwgCi0gICAgMjAwLCAyMywgMjQyLCAzMSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyMzksIDgsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAKLSAgICAyNDYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjM4LCAyMzMsIDIwOSwgMTQxLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzOCwgCi0gICAgMjI0LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzNywgMjMwLCA5LCAyLCAyMDYsIDIwMCwgMjMsIDE1MiwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMzEsIDg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIzMSwgNjYsIDksIDIsIDIwNiwgMjAwLCAyMywgMjMwLCAKLSAgICAyMDksIDksIDIsIDIwNiwgMjAwLCAyMywgMjI5LCAxMDAsIDksIDIsIDIwNiwgMjAwLCAyMywgMjI2LCAyMjIsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMjI0LCAxMTAsIDksIDIsIDIwNiwgMjAwLCAyMywgMTg1LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIxMywgCi0gICAgNDMsIDksIDIsIDIwNiwgMjAwLCAyMywgMjEyLCAxNDcsIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyMDMsIDksIDIsIAotICAgIDIwNiwgMjAwLCAyMywgMTA2LCA5MSwgMjM3LCAyMTksIDksIDIsIDIwNiwgMjAwLCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAKLSAgICAyMDAsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjA2LCAxOTcsIDksIDIsIDIwNiwgMTk4LCAyMywgNjgsIDksIDIsIDIwNiwgCi0gICAgMTg2LCA5LCAyLCAyMDYsIDE4NywgMjMsIDYzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIyOCwgMjA5LCA5LCAyLCAyMDYsIAotICAgIDE4NywgMjMsIDIyOCwgMTgzLCA5LCAyLCAyMDYsIDE4NywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMDYsIDE4MiwgOSwgMiwgCi0gICAgMjA2LCAxODUsIDksIDIsIDIwNiwgMTgzLCA5LCAyLCAyMDYsIDE3OSwgOSwgMiwgMjA2LCAxNjcsIDksIDIsIDIwNiwgMTY4LCAKLSAgICAyMywgMjI5LCAyMzEsIDksIDIsIDIwNiwgMTY2LCA5LCAyLCAyMDIsIDExNiwgOSwgMiwgMjAyLCAxMTcsIDIwOSwgMTQxLCAKLSAgICA5LCAyLCAyMDIsIDExNywgMTAzLCAyMywgMjI4LCAxODMsIDksIDIsIDIwMiwgMTEyLCA5LCAyLCAyMDIsIDEwNSwgOSwgMiwgCi0gICAgMjAyLCA5MSwgOSwgMiwgMjAyLCAzOSwgOSwgMiwgMjAyLCA0MCwgMTE1LCAyMDIsIDM5LCA5LCAyLCAyMDIsIDM4LCA5LCAyLCAKLSAgICAyMDIsIDM2LCA5LCAyLCAyMDIsIDM3LCAyMzAsIDMxLCAyMDksIDE0MSwgOSwgMiwgMjAyLCAzMSwgOSwgMiwgMjAyLCAyMiwgCi0gICAgOSwgMiwgMjAyLCA2LCA5LCAyLCAyMDIsIDQsIDksIDIsIDIwMiwgNSwgMjMsIDYzLCA5LCAyLCAyMDIsIDMsIDksIDIsIAotICAgIDIwMiwgMiwgOSwgMiwgMjI5LCAyNTQsIDI0MSwgMTE5LCA5LCAyLCAyNTEsIDIzMywgMjMsIDIyMSwgNDAsIDksIDIsIDI1MSwgCi0gICAgMTUwLCAyMywgNjMsIDksIDIsIDI1MCwgMjQ0LCAyMywgMjI4LCAxOTgsIDksIDIsIDI0NCwgMjA0LCAyMjksIDY5LCAyMywgCi0gICAgMjA3LCA0MSwgOTEsIDIyNSwgNzksIDksIDIsIDI0NCwgMjAyLCA5LCAyLCAyNDMsIDE1NywgOTEsIDIxMiwgMTk5LCA5LCAyLCAKLSAgICAyNDIsIDQxLCAyMywgMjEzLCA0MywgOSwgMiwgMjQwLCAxODAsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjQwLCAxODAsIDIzLCAKLSAgICAyMTMsIDQzLCA5LCAyLCAyMzksIDcsIDIzLCAyNTAsIDIzMiwgOTEsIDIzMCwgMTMsIDkxLCA2MywgOSwgMiwgMjM5LCA3LCAKLSAgICAyMywgMjUwLCA3MywgOSwgMiwgMjM4LCAxODksIDksIDIsIDIzOCwgNzEsIDksIDIsIDIzNiwgMywgOSwgMiwgMjMwLCA0NCwgCi0gICAgMjMsIDI1MCwgMjAwLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjUwLCA3MiwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzOCwgNTUsIDksIAotICAgIDIsIDIzMCwgNDQsIDIzLCAyMzcsIDIxOSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIzNywgNCwgMjMsIDI1MCwgNzMsIDksIDIsIAotICAgIDIzMCwgNDQsIDIzLCAyMjYsIDIyMiwgOSwgMiwgMjMwLCA0NCwgMjMsIDE4NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDIxMiwgCi0gICAgMTkyLCA5LCAyLCAyMzAsIDQ0LCAyMywgMjA3LCAyMDMsIDksIDIsIDIzMCwgNDQsIDIzLCAyMDYsIDIwOCwgOSwgMiwgMjI4LCAKLSAgICA5NSwgMjMsIDIzOCwgODEsIDksIDIsIDIyNiwgMjM4LCAyMTMsIDI1LCAyMywgMjQ5LCAxNSwgOSwgMiwgMjI2LCAyMzgsIAotICAgIDIzLCAyNDEsIDUsIDkxLCAyMjgsIDMwLCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIxMiwgMTk5LCA5LCAyLCAyMjQsIDIyNywgOSwgCi0gICAgMiwgMjIzLCAxOTgsIDIzLCAyMDIsIDExNiwgOSwgMiwgMjIzLCAxMDgsIDksIDIsIDIyMiwgNjgsIDksIDIsIDIyMiwgNjcsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAyNDgsIDI1MywgOSwgMiwgMjIyLCA2NiwgMjMsIDIzOCwgODEsIDksIDIsIDIyMSwgNTcsIAotICAgIDIxNSwgMTk4LCAyMjIsIDU5LCAyNDQsIDU0LCA5LCAyLCAyMTgsIDIyMywgMjUwLCA1OSwgOSwgMiwgMjE4LCAxMTMsIDksIAotICAgIDIsIDIxNSwgMjMsIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjA5LCAxLCA5LCAyLCAyMDcsIDcsIDIzLCAyMjUsIAotICAgIDIwLCA5LCAyLCAxMDYsIDY4LCA5LCAxNDEsIDIsIDEyMCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzUsIDksIAotICAgIDE0MSwgMiwgMjM5LCAxNDcsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI1MCwgNzUsIDksIDE0MSwgMiwgMjEyLCAKLSAgICA4OCwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjUwLCA3NSwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjUwLCA3NSwgCi0gICAgOSwgMTQxLCAyLCAyMjIsIDY0LCAyNTAsIDc1LCA5LCAxNDEsIDIsIDEyNiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAyMTIsIDg4LCAyNDMsIAotICAgIDE1NiwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDI0MywgMTU2LCA5LCAKLSAgICAxNDEsIDIsIDIyMiwgNjQsIDI0MywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCA2OCwgOSwgMTQxLCAyLCAyMzksIDIzMywgCi0gICAgNjgsIDksIDE0MSwgMiwgMjEyLCA4OCwgNjgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDY4LCA5LCAxNDEsIDIsIDI0MSwgMTQzLCAKLSAgICA2OCwgOSwgMTQxLCAyLCAyMjIsIDY0LCA2OCwgOSwgMTQxLCAyLCAxMTgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDEyMCwgCi0gICAgMjM4LCAxNjQsIDksIDE0MSwgMiwgMTI2LCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjM4LCAxNjQsIDksIAotICAgIDE0MSwgMiwgMjM5LCAyMzMsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMiwgODgsIDIzOCwgMTY0LCA5LCAxNDEsIDIsIDIxMywgCi0gICAgMTEyLCAyMzgsIDE2NCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMjM4LCAxNjQsIDksIDE0MSwgMiwgMjIyLCA2NCwgMjM4LCAKLSAgICAxNjQsIDksIDE0MSwgMiwgMTE4LCAyMzgsIDE2MSwgOSwgMTQxLCAyLCAxMjAsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDEyNiwgCi0gICAgMjM4LCAxNjEsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIzOCwgMTYxLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyMzgsIDE2MSwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTksIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA2MCwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTksIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTksIDksIDE0MSwgMiwgMjEyLCA4OCwgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjEzLCA1OSwgOSwgMTQxLCAyLCAKLSAgICAyNDEsIDE0MywgMjEzLCA1OSwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMTMsIDU5LCA5LCAxNDEsIDIsIDExOCwgMjEzLCA1NCwgCi0gICAgOSwgMTQxLCAyLCAxMjAsIDIxMywgNTQsIDksIDE0MSwgMiwgMTI2LCAyMTMsIDU0LCA5LCAxNDEsIDIsIDEyNiwgMjEzLCAKLSAgICA1NSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDIxMywgNTQsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDIxMywgCi0gICAgNTQsIDksIDE0MSwgMiwgMjEzLCA2MCwgMjMsIDIzOCwgMjQ3LCA5MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMjEzLCA2MCwgCi0gICAgMjMsIDIzOCwgMjQ3LCA5MSwgMjI0LCAxMTAsIDksIDE0MSwgMiwgMTE4LCAyNDcsIDE1NiwgOSwgMTQxLCAyLCAxMjAsIAotICAgIDI0NywgMTU2LCA5LCAxNDEsIDIsIDEyNiwgMjQ3LCAxNTYsIDksIDE0MSwgMiwgMTI2LCAyNDcsIDE1NywgMjA2LCA2OSwgCi0gICAgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0NywgMTU2LCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDcsIDE1NiwgOSwgMTQxLCAKLSAgICAyLCAxMjYsIDIwNiwgNjksIDIzOSwgMTU5LCAyNDEsIDYsIDksIDE0MSwgMiwgMTI2LCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgMjQxLCAzLCA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyMDYsIDY5LCAyMzksIDE1OSwgMjI3LCAxMTgsIDksIDE0MSwgMiwgMjM5LCAKLSAgICAxNDcsIDIwNiwgNjksIDIzOSwgMTU5LCAyMjcsIDExNiwgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIAotICAgIDIyNywgMTE5LCA2MywgOSwgMTQxLCAyLCAyMzksIDE0NywgMjA2LCA2OSwgMjM5LCAxNTksIDIyNywgMTE5LCAyNDksIDI1NSwgCi0gICAgOSwgMTQxLCAyLCAyMTIsIDg4LCAyMDYsIDY5LCAyMzksIDE1OSwgMjUwLCA3MSwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCAKLSAgICA2OSwgMjM5LCAxNTksIDIzMSwgNTgsIDksIDE0MSwgMiwgMjEzLCAxMTIsIDIwNiwgNjksIDIzOSwgMTU5LCAyMzEsIDYwLCAKLSAgICA2MywgOSwgMTQxLCAyLCAyMTMsIDExMiwgMjA2LCA2OSwgMjM5LCAxNTksIDIzMSwgNjAsIDI0OSwgMjU1LCA5LCAxNDEsIDIsIAotICAgIDI0MSwgMTQzLCAyMDYsIDY5LCAyMzksIDE1OSwgMjA2LCAxODEsIDksIDE0MSwgMiwgMjQxLCAxNDMsIDIwNiwgNjksIDIzOSwgCi0gICAgMTU5LCAyMDYsIDE4MCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NCwgOSwgMTQxLCAyLCAKLSAgICAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3MywgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIAotICAgIDE1OSwgMjMxLCA3MiwgOSwgMTQxLCAyLCAyMjIsIDY0LCAyMDYsIDY5LCAyMzksIDE1OSwgMjMxLCA3NSwgNjMsIDksIDE0MSwgCi0gICAgMiwgMTIwLCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAxMjYsIDI1MCwgNzYsIDIwOSwgMTQxLCA5LCAxNDEsIDIsIAotICAgIDIzOSwgMTQ3LCAyNTAsIDc2LCAyMDksIDE0MSwgOSwgMTQxLCAyLCAyMzksIDIzMywgMjUwLCA3NiwgMjA5LCAxNDEsIDksIAotICAgIDE0MSwgMiwgMjEyLCA4OCwgMjUwLCA3NiwgMjA5LCAxNDEsIDksIDE0MSwgMiwgMTE4LCAyNDgsIDI0MCwgOSwgMTQxLCAyLCAKLSAgICAxMjAsIDI0OCwgMjQwLCA5LCAxNDEsIDIsIDEyNiwgMjQ4LCAyNDAsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDI0OCwgMjQwLCAKLSAgICA5LCAxNDEsIDIsIDIzOSwgMTQ3LCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjM5LCAyMzMsIDI0OCwgCi0gICAgMjQwLCA5LCAxNDEsIDIsIDIzOSwgMjMzLCAyNDgsIDI0MSwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjIyLCA3NywgOSwgCi0gICAgMTQxLCAyLCAyMjIsIDc4LCA5LCAxNDEsIDIsIDExOCwgMjQxLCAyLCA5LCAxNDEsIDIsIDEyMCwgMjQxLCAyLCA5LCAxNDEsIAotICAgIDIsIDExOCwgMjA5LCA2MSwgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyNDMsIDE1NiwgOSwgMTQxLCAyLCAKLSAgICAyMzksIDIzMywgMjEyLCA3NywgMjQzLCAxNTYsIDksIDE0MSwgMiwgMTE4LCAyMDksIDYxLCAyMDYsIDY5LCAyMzksIDE1OSwgCi0gICAgNjMsIDksIDE0MSwgMiwgMTIwLCAyMDksIDU4LCAyMDYsIDY5LCAyMzksIDE1OSwgNjMsIDksIDE0MSwgMiwgMTE4LCAyNDEsIAotICAgIDEzOSwgMjUwLCA3NSwgOSwgMTQxLCAyLCAxMTgsIDIxNywgNTYsIDI1MCwgNzUsIDksIDE0MSwgMiwgMzgsIDI1MCwgNjIsIAotICAgIDExOCwgMjEyLCA3OCwgOSwgMTQxLCAyLCAzOCwgMjUwLCA2MiwgMTE4LCAyMTcsIDU1LCA5LCAxNDEsIDIsIDExOCwgMjE3LCAKLSAgICA1NiwgMjM3LCAyMDIsIDksIDE0MSwgMiwgMTE4LCAxNjIsIDIzNywgMjAyLCA5LCAxNDEsIDIsIDI0MSwgMTIwLCAxMTgsIAotICAgIDIwOSwgNjAsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDEyMCwgMjA5LCA1NywgOSwgMTQxLCAyLCAyNDEsIDEyMCwgMjM5LCAKLSAgICAxNTMsIDksIDE0MSwgMiwgMjQxLCAxMjAsIDI0MCwgMTgsIDksIDE0MSwgMiwgMjM5LCAxNDcsIDEwNiwgMjA2LCA2OSwgMTgsIAotICAgIDksIDE0MSwgMiwgMjM5LCAyMzMsIDEwNiwgMjA2LCA2OSwgMTgsIDksIDE0MSwgMiwgMjEyLCA4OCwgMTA2LCAyMDYsIDY5LCAKLSAgICAxOCwgOSwgMTQxLCAyLCAyMTMsIDExMiwgMTA2LCAyMDYsIDY5LCAxOCwgOSwgMTQxLCAyLCAyNDEsIDE0MywgMTA2LCAyMDYsIAotICAgIDY5LCAxOCwgOSwgMTQxLCAyLCAyMjIsIDY0LCAxMDYsIDIwNiwgNjksIDE4LCA5LCAyMTcsIDE3OSwgMiwgMzgsIDI1MCwgCi0gICAgNjIsIDIwMywgMjM4LCAyNDMsIDE0MSwgOSwgMjE3LCAxNzksIDIsIDgwLCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIAotICAgIDI0MywgMjI4LCAyNDUsIDI0MiwgOSwgMjE3LCAxNzksIDIsIDI0MywgMjI4LCAyMDgsIDgxLCA5LCAyMTcsIDE3OSwgMiwgCi0gICAgMjQzLCAyMjgsIDIxNywgNjEsIDksIDIsIDI1MSwgMjMzLCAyMywgMjIxLCA0MSwgMjA5LCAxNDEsIDksIDIsIDI1MSwgMjMzLCAKLSAgICAyMywgMjEyLCAxOTcsIDksIDIsIDI1MSwgMTIzLCAyMywgMjQxLCA0LCA5LCAyLCAyNDksIDE2LCAyMywgMjQzLCAxNTcsIAotICAgIDIwOSwgMTQxLCA5LCAyLCAyNDksIDQsIDIzLCAyNTEsIDE0OSwgOSwgMiwgMjQ5LCA0LCAyMywgMjIyLCAxMDAsIDksIDIsIAotICAgIDI0OSwgNCwgMjMsIDIwMiwgMTE2LCA5LCAyLCAyNDcsIDE5NCwgMTE1LCAyNDcsIDE5NCwgMjMsIDIyMywgMTA5LCA5LCAyLCAKLSAgICAyNDQsIDIxMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyNDQsIDIwNCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDMsIDE4OSwgMjMsIAotICAgIDIzMSwgODUsIDksIDIsIDI0MywgMTg5LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyNDMsIDE4NywgMjMsIDIwNywgMjksIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyNTAsIDIwMCwgOSwgMiwgMjQyLCAzOCwgMjMsIDI1MCwgNzUsIDksIDIsIDI0MiwgMzgsIAotICAgIDIzLCAyNTAsIDc2LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MywgMTc2LCA5LCAyLCAyNDIsIAotICAgIDM4LCAyMywgMjQyLCAzMSwgOSwgMiwgMjQyLCAzOCwgMjMsIDI0MSwgMjIsIDksIDIsIDI0MiwgMzgsIDIzLCAyMzksIDgsIAotICAgIDksIDIsIDI0MiwgMzgsIDIzLCAyMzgsIDgxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM4LCA2NCwgMjM3LCAyMDgsIDksIDIsIAotICAgIDI0MiwgMzgsIDIzLCAyMzgsIDU1LCA5LCAyLCAyNDIsIDM4LCAyMywgMTUyLCA5LCAyLCAyNDIsIDM4LCAyMywgMjM3LCAzLCAKLSAgICA5LCAyLCAyNDIsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjksIDIzMSwgOSwgMiwgCi0gICAgMjQyLCAzOCwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCAxNzcsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjgsIDE3OCwgOTEsIDIyOSwgMjMxLCA5LCAyLCAyNDIsIDM4LCAyMywgMjI4LCA4MiwgOSwgMiwgMjQyLCAzOCwgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjgsIDI5LCAyMywgMjI4LCAxODMsIDksIDIsIDI0MiwgMzgsIDIzLCAKLSAgICAyMjYsIDIyOCwgOTEsIDIzOCwgNTUsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjUsIDc5LCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjI0LCAyMjgsIDksIDIsIDI0MiwgMzgsIDIzLCAyMjQsIDE1NSwgOSwgMiwgMjQyLCAzOCwgMjMsIDIyMiwgMTAwLCA5LCAyLCAKLSAgICAyNDIsIDM4LCAyMywgMjE4LCAxNjcsIDksIDIsIDI0MiwgMzgsIDIzLCAyMTMsIDQzLCA5LCAyLCAyNDIsIDM4LCAyMywgCi0gICAgMjEyLCAxNjMsIDIzNywgMjA4LCA5LCAyLCAyNDEsIDE5MSwgMjMsIDIyOCwgMTgzLCA5LCAyLCAyNDEsIDE5MSwgMjMsIAotICAgIDIxOSwgOTYsIDksIDIsIDI0MSwgMjMsIDIwMywgMTk2LCA5LCAyLCAyNDEsIDUsIDI0NSwgMTI0LCAyNDEsIDQsIDksIDIsIAotICAgIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjUwLCA3NSwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIDIzLCAyMzcsIDMsIDksIAotICAgIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgCi0gICAgMjI4LCAxMTMsIDksIDIsIDI0MCwgMTgwLCAyMTMsIDI1LCAyMywgMjI4LCAzMCwgOSwgMiwgMjQwLCAxODAsIDIxMywgMjUsIAotICAgIDIzLCAyMjUsIDIwLCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAyNSwgMjMsIDIyNCwgMjI4LCA5LCAyLCAyNDAsIDE4MCwgMjEzLCAKLSAgICAyNSwgMjMsIDIxMSwgMTAsIDksIDIsIDI0MCwgMTgwLCAyMywgMjExLCAxMCwgOSwgMiwgMjM5LCA3LCAyMywgMjQ5LCAzLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyNDMsIDE4OSwgMjM3LCAyMDgsIDksIDIsIDIzOSwgNywgMjMsIDI0MiwgMzgsIDIzLCAyMzEsIAotICAgIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM5LCA3LCAyMywgMjQyLCAzOCwgMjMsIDIyOSwgMjMxLCA5LCAyLCAyMzksIDcsIDIzLCAKLSAgICAyNDEsIDI1LCA5LCAyLCAyMzksIDcsIDIzLCAyMzksIDgsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjQzLCAKLSAgICAyMzMsIDksIDIsIDIzOSwgNywgMjMsIDIzOCwgMjI1LCA5MSwgMjIyLCAyNDAsIDksIDIsIDIzOSwgNywgMjMsIDIzNywgCi0gICAgMTYwLCA5MSwgNjMsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMTc4LCA5MSwgMjI5LCAyMzEsIDksIDIsIDIzOSwgNywgMjMsIAotICAgIDIyOCwgMjgsIDksIDIsIDIzOSwgNywgMjMsIDIyOCwgMjksIDIzLCAyMjgsIDE4MywgOSwgMiwgMjM5LCA3LCAyMywgMjI2LCAKLSAgICAyMjcsIDksIDIsIDIzOSwgNywgMjMsIDIyMywgMTk5LCA5LCAyLCAyMzksIDcsIDIzLCAyMjIsIDI0MCwgOSwgMiwgMjM5LCAKLSAgICA3LCAyMywgMjIyLCAyNDEsIDkxLCAyNDEsIDE5MCwgOSwgMiwgMjM5LCA3LCAyMywgMjIyLCAyNDEsIDkxLCAyMzgsIDgxLCAKLSAgICA5LCAyLCAyMzksIDcsIDIzLCAyMTMsIDMsIDksIDIsIDIzOSwgNywgMjMsIDIwMiwgMjIsIDksIDIsIDIzOSwgMiwgMjE1LCAKLSAgICAxOTgsIDIyMiwgNTksIDI0NCwgNTQsIDksIDIsIDIzOCwgMTYzLCAyMywgNjgsIDksIDIsIDIzOCwgNTYsIDIzLCAyMzgsIAotICAgIDU2LCAyNDUsIDEyNCwgMjM4LCA1NSwgOSwgMiwgMjM3LCAyMjksIDIzLCAyMzEsIDg2LCAyMzcsIDIwOCwgOSwgMiwgMjM3LCAKLSAgICAyMjAsIDkxLCAyMzgsIDU2LCAyMywgMjA5LCAyNDIsIDksIDIsIDIzNywgMTYwLCAyMDksIDE0MiwgMjM3LCAyMDgsIDksIDIsIAotICAgIDIzNywgNCwgMjMsIDI1MCwgNzYsIDExNSwgMjM3LCA0LCAyMywgMjUwLCA3NSwgOSwgMiwgMjMwLCA0NCwgMjMsIDI0NywgCi0gICAgMTkzLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTczLCA5LCAyLCAyMzAsIDQ0LCAyMywgMTA2LCAxMDYsIDY4LCA5LCAyLCAyMzAsIAotICAgIDQ0LCAyMywgMjA2LCAyMTAsIDksIDIsIDIyOCwgOTUsIDIzLCAyMDIsIDcsIDExNSwgMjAyLCA2LCA5LCAyLCAyMjgsIDgzLCAKLSAgICA5LCAyLCAyMjgsIDgxLCA5LCAyLCAyMjgsIDgwLCA5LCAyLCAyMjgsIDc5LCA5LCAyLCAyMjgsIDc4LCA5LCAyLCAyMjgsIAotICAgIDc3LCA5LCAyLCAyMjgsIDc2LCA5LCAyLCAyMjgsIDc1LCAxMTUsIDIyOCwgNzUsIDIzNywgMjA4LCA5LCAyLCAyMjgsIDc0LCAKLSAgICA5LCAyLCAyMjgsIDczLCAxMTUsIDIyOCwgNzIsIDksIDIsIDIyOCwgNzEsIDksIDIsIDIyOCwgNzAsIDksIDIsIDIyOCwgNjksIAotICAgIDksIDIsIDIyOCwgNjgsIDksIDIsIDIyOCwgNjcsIDksIDIsIDIyOCwgNjYsIDksIDIsIDIyOCwgNjUsIDksIDIsIDIyOCwgCi0gICAgNjQsIDksIDIsIDIyOCwgNjMsIDksIDIsIDIyOCwgNjIsIDksIDIsIDIyOCwgNjEsIDksIDIsIDIyOCwgNjAsIDksIDIsIAotICAgIDIyOCwgNTksIDksIDIsIDIyOCwgNTgsIDksIDIsIDIyOCwgNTcsIDksIDIsIDIyOCwgNTYsIDksIDIsIDIyOCwgNTUsIDksIAotICAgIDIsIDIyOCwgNTQsIDksIDIsIDIyOCwgNTIsIDksIDIsIDIyOCwgNTMsIDIzLCAyMzcsIDIzMCwgOSwgMiwgMjI4LCA1MywgCi0gICAgMjMsIDIzMSwgODUsIDksIDIsIDIyOCwgNTMsIDIzLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgNTMsIDIzLCAKLSAgICAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIDIyNiwgMjM2LCA5LCAyLCAyMjgsIDUzLCAyMywgMjA3LCA0MSwgOTEsIDI0OSwgCi0gICAgMzIsIDksIDIsIDIyOCwgNTEsIDksIDIsIDIyOCwgNTAsIDksIDIsIDIyOCwgNDksIDksIDIsIDIyOCwgNDgsIDksIDIsIAotICAgIDIyOCwgNDcsIDksIDIsIDIyOCwgNDYsIDksIDIsIDIyOCwgNDUsIDksIDIsIDIyOCwgNDQsIDksIDIsIDIyOCwgNDMsIDksIAotICAgIDIsIDIyOCwgNDIsIDksIDIsIDIyOCwgNDAsIDksIDIsIDIyOCwgNDEsIDIzLCAyNTAsIDc1LCA5LCAyLCAyMjgsIDQxLCAyMywgCi0gICAgMjQ5LCAxNSwgOSwgMiwgMjI4LCA0MSwgMjMsIDI0MiwgMzAsIDIzNywgMjA5LCAyMzcsIDIwOCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIyOCwgMjA3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjI4LCAxMTMsIDksIDIsIDIyOCwgNDEsIDIzLCAyMDksIDIxOCwgCi0gICAgOSwgMiwgMjI4LCA0MSwgMjMsIDIwOSwgMTg3LCA5LCAyLCAyMjgsIDQxLCAyMywgMjA3LCA0MCwgOSwgMiwgMjI4LCA0MSwgCi0gICAgMjMsIDIwNywgMjksIDksIDIsIDIyOCwgNDEsIDIzLCAyMDYsIDE5NywgOSwgMiwgMjI4LCAzOSwgOSwgMiwgMjI4LCAzNywgCi0gICAgOSwgMiwgMjI4LCAzOCwgMjMsIDI0MiwgNDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMzksIDgsIDksIDIsIDIyOCwgMzgsIDIzLCAKLSAgICAyMzEsIDg1LCA5LCAyLCAyMjgsIDM4LCAyMywgMjMxLCA4NiwgMjM3LCAyMDgsIDksIDIsIDIyOCwgMzgsIDIzLCAyMjIsIAotICAgIDEwMCwgOSwgMiwgMjI4LCAzOCwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk3LCA5MSwgMjI2LCAyMzYsIDksIDIsIDIyOCwgCi0gICAgMzgsIDIzLCAyMTMsIDI4LCA5MSwgMjI5LCAxMDAsIDksIDIsIDIyOCwgMzgsIDIzLCAyMDcsIDI5LCA5LCAyLCAyMjgsIDM4LCAKLSAgICAyMywgMjA2LCAxOTcsIDksIDIsIDIyOCwgMzUsIDksIDIsIDIyOCwgMzQsIDksIDIsIDIyNiwgMjM4LCAyMzcsIDIwOSwgMjMsIAotICAgIDI1MCwgNzUsIDksIDIsIDIyNiwgMjM4LCAyMywgMjQzLCAxNTYsIDksIDIsIDIyNiwgMjM4LCAyMywgMjM3LCAxNDAsIDksIAotICAgIDIsIDIyNiwgMjM4LCAyMywgMjE5LCA5NiwgOSwgMiwgMjI2LCAyMzgsIDIzLCAyMTksIDk3LCA5MSwgMjE5LCA5NywgOTEsIAotICAgIDIyNiwgMjM2LCA5LCAyLCAyMjYsIDIzOCwgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMjQsIDE1NiwgOTEsIDIwMiwgMTE1LCA5LCAKLSAgICAyLCAyMjMsIDIwMCwgMTE1LCAyMjMsIDIwMCwgMjMsIDIzOSwgOCwgOSwgMiwgMjIzLCAyMDAsIDExNSwgMjIzLCAyMDAsIAotICAgIDIzLCAyMzAsIDEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjQzLCAxODksIDIzNywgMjA4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjM4LCA1NSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIzNywgMjEyLCA5LCAyLCAyMjIsIDY2LCAyMywgMjM3LCAzLCA5LCAyLCAKLSAgICAyMjIsIDY2LCAyMywgMjI5LCAxNzEsIDksIDIsIDIyMiwgNjYsIDIzLCAyMjgsIDc4LCA5LCAyLCAyMjIsIDY2LCAyMywgCi0gICAgMjI1LCA3OSwgOSwgMiwgMjIyLCA2NiwgMjMsIDIxOSwgOTcsIDkxLCAyMTksIDk2LCA5LCAyLCAyMjIsIDY2LCAyMywgNjgsIAotICAgIDksIDIsIDIyMiwgNjYsIDIzLCAxMDYsIDkxLCA2OCwgOSwgMiwgMjIyLCA2NiwgMjMsIDIwNiwgMTk3LCA5LCAyLCAyMTUsIAotICAgIDIzLCAyMzcsIDIwOSwgMjMsIDE1MiwgOSwgMiwgMjE1LCAyMywgMjMsIDI0MSwgOTIsIDksIDIsIDIxNSwgMjMsIDIzLCAKLSAgICAyMTMsIDQ0LCAyNTAsIDUwLCAyMjcsIDIyMiwgOSwgMiwgMjE1LCAyMywgMjMsIDIwOSwgMjQyLCA5LCAyLCAyMTMsIDg3LCAKLSAgICAyMDksIDE0MSwgOSwgMiwgMjEzLCA0NCwgMTE1LCAyMTMsIDQzLCA5LCAyLCAyMTMsIDQ0LCA5MSwgMjM2LCAyMSwgOSwgMiwgCi0gICAgMjEzLCA0NCwgOTEsIDIyMywgODYsIDksIDIsIDIxMywgNDQsIDkxLCAyMTQsIDIzMCwgOSwgMiwgMjEyLCAxOTgsIDkxLCAKLSAgICAyNDIsIDM4LCAyMywgMjIyLCAxMDAsIDksIDIsIDIxMiwgMTk4LCA5MSwgMjQxLCAxOTEsIDIzLCAyNTAsIDIzMSwgOSwgMiwgCi0gICAgMjEyLCAxNjMsIDIzLCAyMDksIDI0MiwgOSwgMiwgMjA5LCAyNDMsIDkxLCAyMTUsIDIyLCA5LCAyLCAyMDcsIDE5MiwgMjMsIAotICAgIDIzOCwgMjMzLCAyMDksIDE0MSwgOSwgMiwgMjA3LCAxOTIsIDIzLCAxMjYsIDI0MywgMTU2LCA5LCAyLCAyMDYsIDIwOSwgCi0gICAgMjMwLCAyMzgsIDksIDIsIDIwNiwgMjA5LCAyMywgMjA3LCAyOSwgOSwgMiwgMjA2LCAyMDAsIDIzLCAyNDQsIDE1MywgOSwgCi0gICAgMiwgMjA2LCAyMDAsIDIzLCAyMjgsIDM2LCA5LCAyLCAyMDYsIDIwMCwgMjMsIDIyNiwgMjM2LCA5LCAyLCAyMDIsIDExNSwgCi0gICAgOSwgMiwgMjAyLCA3LCAxMTUsIDIwMiwgNywgOTEsIDIxNCwgMjMwLCA5LCAyLCAyMDIsIDUsIDIzLCAxMjYsIDI0MywgMTU3LCAKLSAgICAyMDksIDE0MSwgMTQsIDcsIDI1NSwgMTgsIDE0LCA3LCAyNTUsIDE3LCAxNCwgNywgMjU1LCAxNiwgMTQsIDcsIDI1NSwgMTUsIAotICAgIDE0LCA3LCAyNTUsIDE0LCAxNCwgNywgMjU1LCAxMywgMTQsIDcsIDI1NSwgMTIsIDE0LCA3LCAyNTUsIDExLCAxNCwgNywgCi0gICAgMjU1LCAxMCwgMTQsIDcsIDI1NSwgOSwgMTQsIDcsIDI1NSwgOCwgMTQsIDcsIDI1NSwgNywgMTQsIDcsIDI1NSwgNiwgMTQsIAotICAgIDcsIDI1NSwgNCwgMTQsIDcsIDI1NSwgMywgMTQsIDcsIDI1NSwgMiwgMTQsIDcsIDI1NSwgMSwgMTQsIDcsIDI1NSwgMCwgCi0gICAgMTQsIDcsIDI1NCwgMjU1LCAxNCwgNywgMjU0LCAyNTQsIDE0LCA3LCAyNTQsIDI1MywgMTQsIDcsIDI1NCwgMjUyLCAxNCwgCi0gICAgNywgMjU0LCAyNTEsIDE0LCA3LCAyNTQsIDI1MCwgMTQsIDcsIDI1NCwgMjQ5LCAxNCwgNywgMjU0LCAyNDgsIDE0LCA3LCAKLSAgICAyNTQsIDI0NywgMTQsIDcsIDI1NCwgMjQ2LCAxNCwgNywgMjU0LCAyNDUsIDE0LCA3LCAyNTQsIDI0NCwgMTQsIDcsIDI1NCwgCi0gICAgMjQzLCAxNCwgNywgMjU0LCAyNDEsIDE0LCA3LCAyNTQsIDI0MCwgMTQsIDcsIDI1NCwgMjM4LCAxNCwgNywgMjU0LCAyMzcsIAotICAgIDE0LCA3LCAyNTQsIDIzNiwgMTQsIDcsIDI1NCwgMjM1LCAxNCwgNywgMjU0LCAyMzQsIDE0LCA3LCAyNTQsIDIzMywgMTQsIAotICAgIDcsIDI1NCwgMjMyLCAxNCwgNywgMjU0LCAyMzEsIDE0LCA3LCAyNTQsIDIzMCwgMTQsIDcsIDI1NCwgMjI5LCAxNCwgNywgCi0gICAgMjU0LCAyMjgsIDE0LCA3LCAyNTQsIDIyNywgMTQsIDcsIDI1NCwgMjI1LCAxNCwgNywgMjU0LCAyMjQsIDE0LCA3LCAyNTQsIAotICAgIDIyMywgMTQsIDcsIDI1NCwgMjIxLCAxNCwgNywgMjU0LCAyMjAsIDE0LCA3LCAyNTQsIDIxOSwgMTQsIDcsIDI1NCwgMjE4LCAKLSAgICAxNCwgNywgMjU0LCAyMTcsIDE0LCA3LCAyNTQsIDIxNiwgMTQsIDcsIDI1NCwgMjE1LCAxNCwgNywgMjU0LCAyMTQsIDE0LCAKLSAgICA3LCAyNTQsIDIxMSwgMTQsIDcsIDI1NCwgMjEwLCAxNCwgNywgMjU0LCAyMDksIDE0LCA3LCAyNTQsIDIwOCwgMTQsIDcsIAotICAgIDI1NCwgMjA3LCAxNCwgNywgMjU0LCAyMDYsIDE0LCA3LCAyNTQsIDIwNSwgMTQsIDcsIDI1NCwgMjA0LCAxNCwgNywgMjU0LCAKLSAgICAyMDMsIDE0LCA3LCAyNTQsIDIwMiwgMTQsIDcsIDI1NCwgMjAxLCAxNCwgNywgMjU0LCAyMDAsIDE0LCA3LCAyNTQsIDE5OSwgCi0gICAgMTQsIDcsIDI1NCwgMTk4LCAxNCwgNywgMjU0LCAxOTcsIDE0LCA3LCAyNTQsIDE5NiwgMTQsIDcsIDI1NCwgMTk1LCAxNCwgCi0gICAgNywgMjU0LCAxOTQsIDE0LCA3LCAyNTQsIDE5MywgMTQsIDcsIDI1NCwgMTkyLCAxNCwgNywgMjU0LCAxODgsIDE0LCA3LCAKLSAgICAyNTQsIDE4NywgMTQsIDcsIDI1NCwgMTg2LCAxNCwgNywgMjU0LCAxODUsIDE0LCA3LCAyNDksIDI1MywgMTQsIDcsIDI0OSwgCi0gICAgMjUxLCAxNCwgNywgMjQ5LCAyNDksIDE0LCA3LCAyNDksIDI0NywgMTQsIDcsIDI0OSwgMjQ1LCAxNCwgNywgMjQ5LCAyNDQsIAotICAgIDE0LCA3LCAyNDksIDI0MiwgMTQsIDcsIDI0OSwgMjQwLCAxNCwgNywgMjQ5LCAyMzgsIDE0LCA3LCAyNDksIDIzNiwgMTQsIAotICAgIDcsIDI0NywgMTIxLCAxNCwgNywgMjQ3LCAxMjAsIDE0LCA3LCAyNDcsIDExOSwgMTQsIDcsIDI0NywgMTE4LCAxNCwgNywgCi0gICAgMjQ3LCAxMTcsIDE0LCA3LCAyNDcsIDExNiwgMTQsIDcsIDI0NywgMTE1LCAxNCwgNywgMjQ3LCAxMTQsIDE0LCA3LCAyNDcsIAotICAgIDExMywgMTQsIDcsIDI0NywgMTEyLCAxNCwgNywgMjQ3LCAxMTEsIDE0LCA3LCAyNDcsIDExMCwgMTQsIDcsIDI0NywgMTA5LCAKLSAgICAxNCwgNywgMjQ3LCAxMDgsIDE0LCA3LCAyNDcsIDEwNywgMTQsIDcsIDI0NywgMTA2LCAxNCwgNywgMjQ3LCAxMDUsIDE0LCAKLSAgICA3LCAyNDcsIDEwNCwgMTQsIDcsIDI0NywgMTAzLCAxNCwgNywgMjQ3LCAxMDIsIDE0LCA3LCAyNDcsIDEwMSwgMTQsIDcsIAotICAgIDI0NywgMTAwLCAxNCwgNywgMjQ3LCA5OSwgMTQsIDcsIDI0NywgOTgsIDE0LCA3LCAyNDcsIDk3LCAxNCwgNywgMjQ3LCA5NiwgCi0gICAgMTQsIDcsIDI0NywgOTUsIDE0LCA3LCAyNDcsIDk0LCAxNCwgNywgMjQ1LCA1MCwgMTQsIDcsIDI0NSwgNDksIDE0LCA3LCAKLSAgICAyNDUsIDQ4LCAxNCwgNywgMjQ1LCA0NywgMTQsIDcsIDI0NSwgNDYsIDE0LCA3LCAyNDUsIDQ1LCAxNCwgNywgMjQ1LCA0NCwgCi0gICAgMTQsIDcsIDI0NSwgNDMsIDE0LCA3LCAyNDUsIDQyLCAxNCwgNywgMjQ1LCA0MSwgMTQsIDcsIDI0NSwgNDAsIDE0LCA3LCAKLSAgICAyNDUsIDM5LCAxNCwgNywgMjQ1LCAzOCwgMTQsIDcsIDI0NSwgMzcsIDE0LCA3LCAyNDUsIDM2LCAxNCwgNywgMjQ1LCAzNSwgCi0gICAgMTQsIDcsIDI0NSwgMzQsIDE0LCA3LCAyNDUsIDMzLCAxNCwgNywgMjQ1LCAzMiwgMTQsIDcsIDI0NSwgMzEsIDE0LCA3LCAKLSAgICAyNDUsIDMwLCAxNCwgNywgMjQ1LCAyOSwgMTQsIDcsIDI0NSwgMjgsIDE0LCA3LCAyNDUsIDI3LCAxNCwgNywgMjQ1LCAyNiwgCi0gICAgMTQsIDcsIDI0NSwgMjUsIDE0LCA3LCAyNDUsIDI0LCAxNCwgNywgMjQ1LCAyMywgMTQsIDcsIDI0NSwgMjIsIDE0LCA3LCAKLSAgICAyNDUsIDIxLCAxNCwgNywgMjQ1LCAyMCwgMTQsIDcsIDI0NSwgMTksIDE0LCA3LCAyNDUsIDE4LCAxNCwgNywgMjQ1LCAxNywgCi0gICAgMTQsIDcsIDI0NSwgMTYsIDE0LCA3LCAyNDUsIDE1LCAxNCwgNywgMjQ1LCAxNCwgMTQsIDcsIDI0NSwgMTMsIDE0LCA3LCAKLSAgICAyNDUsIDEyLCAxNCwgNywgMjQ1LCAxMSwgMTQsIDcsIDI0NSwgMTAsIDE0LCA3LCAyNDUsIDksIDE0LCA3LCAyNDUsIDgsIAotICAgIDE0LCA3LCAyNDUsIDcsIDE0LCA3LCAyNDUsIDYsIDE0LCA3LCAyNDUsIDUsIDE0LCA3LCAyNDUsIDQsIDE0LCA3LCAyNDUsIAotICAgIDMsIDE0LCA3LCAyNDUsIDIsIDE0LCA3LCAyNDUsIDEsIDE0LCA3LCAyNDUsIDAsIDE0LCA3LCAyNDQsIDI1NSwgMTQsIDcsIAotICAgIDI0NCwgMjU0LCAxNCwgNywgMjQ0LCAyNTMsIDE0LCA3LCAyNDQsIDI1MiwgMTQsIDcsIDI0NCwgMjUxLCAxNCwgNywgMjQ0LCAKLSAgICAyNTAsIDE0LCA3LCAyNDQsIDI0OSwgMTQsIDcsIDI0NCwgMjQ4LCAxNCwgNywgMjQ0LCAyNDcsIDE0LCA3LCAyNDQsIDI0NiwgCi0gICAgMTQsIDcsIDI0NCwgMjQ1LCAxNCwgNywgMjQ0LCAyNDQsIDE0LCA3LCAyNDQsIDI0MywgMTQsIDcsIDI0NCwgMjQyLCAxNCwgCi0gICAgNywgMjQ0LCAyNDEsIDE0LCA3LCAyNDQsIDI0MCwgMTQsIDcsIDI0NCwgMjM5LCAxNCwgNywgMjQ0LCAyMzgsIDE0LCA3LCAKLSAgICAyNDQsIDIzNywgMTQsIDcsIDI0NCwgMjM2LCAxNCwgNywgMjQ0LCAyMzUsIDE0LCA3LCAyNDQsIDIzNCwgMTQsIDcsIDI0NCwgCi0gICAgMjMzLCAxNCwgNywgMjQ0LCAyMzIsIDE0LCA3LCAyNDQsIDIzMSwgMTQsIDcsIDI0NCwgMjMwLCAxNCwgNywgMjQ0LCAyMjksIAotICAgIDE0LCA3LCAyNDQsIDIyOCwgMTQsIDcsIDI0NCwgMjI3LCAxNCwgNywgMjQ0LCAyMjYsIDE0LCA3LCAyNDQsIDIyNSwgMTQsIAotICAgIDcsIDI0NCwgMjI0LCAxNCwgNywgMjQ0LCAyMjMsIDE0LCA3LCAyNDQsIDIyMiwgMTQsIDcsIDI0NCwgMjIxLCAxNCwgNywgCi0gICAgMjQ0LCAyMjAsIDE0LCA3LCAyNDQsIDIxOSwgMTQsIDcsIDI0NCwgMjE4LCAxNCwgNywgMjQ0LCAyMTcsIDE0LCA3LCAyNDQsIAotICAgIDIxNiwgMTQsIDcsIDI0NCwgMjE1LCAxNCwgNywgMjQxLCAyMzUsIDE0LCA3LCAyNDEsIDIzNCwgMTQsIDcsIDI0MSwgMjMzLCAKLSAgICAxNCwgNywgMjQxLCAyMzIsIDE0LCA3LCAyNDEsIDIzMSwgMTQsIDcsIDI0MSwgMjMwLCAxNCwgNywgMjQxLCAyMjksIDE0LCAKLSAgICA3LCAyNDEsIDIyOCwgMTQsIDcsIDI0MSwgMjI3LCAxNCwgNywgMjQxLCAyMjYsIDE0LCA3LCAyNDEsIDIyNSwgMTQsIDcsIAotICAgIDI0MSwgMjI0LCAxNCwgNywgMjQxLCAyMjMsIDE0LCA3LCAyNDEsIDIyMiwgMTQsIDcsIDI0MSwgMjIxLCAxNCwgNywgMjQxLCAKLSAgICAyMjAsIDE0LCA3LCAyNDEsIDIxOSwgMTQsIDcsIDI0MSwgMjE4LCAxNCwgNywgMjQxLCAyMTcsIDE0LCA3LCAyNDEsIDIxNiwgCi0gICAgMTQsIDcsIDI0MSwgMjE1LCAxNCwgNywgMjQxLCAyMTQsIDE0LCA3LCAyNDEsIDIxMywgMTQsIDcsIDI0MSwgMjEyLCAxNCwgCi0gICAgNywgMjQxLCAyMTEsIDE0LCA3LCAyNDEsIDIxMCwgMTQsIDcsIDI0MSwgMjA5LCAxNCwgNywgMjQxLCAyMDgsIDE0LCA3LCAKLSAgICAyNDEsIDIwNywgMTQsIDcsIDI0MSwgMjA2LCAxNCwgNywgMjQxLCAyMDUsIDE0LCA3LCAyNDEsIDIwNCwgMTQsIDcsIDI0MSwgCi0gICAgMjAzLCAxNCwgNywgMjQxLCAyMDIsIDE0LCA3LCAyNDEsIDIwMSwgMTQsIDcsIDI0MSwgMjAwLCAxNCwgNywgMjQxLCAxOTksIAotICAgIDE0LCA3LCAyNDEsIDE5OCwgMTQsIDcsIDI0MSwgMTk3LCAxNCwgNywgMjQxLCAxOTYsIDE0LCA3LCAyNDEsIDE5NSwgMTQsIAotICAgIDcsIDI0MSwgMTk0LCAxNCwgNywgMjQxLCAxOTMsIDE0LCA3LCAyNDEsIDE5MiwgMTQsIDcsIDI0MCwgMTczLCAxNCwgNywgCi0gICAgMjQwLCAxNzIsIDE0LCA3LCAyNDAsIDE3MSwgMTQsIDcsIDI0MCwgMTcwLCAxNCwgNywgMjQwLCAxNjksIDE0LCA3LCAyNDAsIAotICAgIDE2OCwgMTQsIDcsIDI0MCwgMTY3LCAxNCwgNywgMjQwLCAxNjYsIDE0LCA3LCAyNDAsIDE2NSwgMTQsIDcsIDI0MCwgMTY0LCAKLSAgICAxNCwgNywgMjQwLCAxNjMsIDE0LCA3LCAyNDAsIDE2MiwgMTQsIDcsIDI0MCwgMTYxLCAxNCwgNywgMjQwLCAxNjAsIDE0LCAKLSAgICA3LCAyNDAsIDE1OSwgMTQsIDcsIDI0MCwgMTU4LCAxNCwgNywgMjQwLCAxNTcsIDE0LCA3LCAyNDAsIDE1NiwgMTQsIDcsIAotICAgIDI0MCwgMTU1LCAxNCwgNywgMjQwLCAxNTQsIDE0LCA3LCAyNDAsIDE1MywgMTQsIDcsIDI0MCwgMTUyLCAxNCwgNywgMjQwLCAKLSAgICAxNTEsIDE0LCA3LCAyNDAsIDE1MCwgMTQsIDcsIDI0MCwgMTQ5LCAxNCwgNywgMjQwLCAxNDgsIDE0LCA3LCAyNDAsIDE0NywgCi0gICAgMTQsIDcsIDI0MCwgMTQ2LCAxNCwgNywgMjQwLCAxNDUsIDE0LCA3LCAyNDAsIDE0NCwgMTQsIDcsIDI0MCwgMTQzLCAxNCwgCi0gICAgNywgMjQwLCAxNDIsIDE0LCA3LCAyNDAsIDE0MSwgMTQsIDcsIDI0MCwgMTQwLCAxNCwgNywgMjQwLCAxMzksIDE0LCA3LCAKLSAgICAyNDAsIDEzOCwgMTQsIDcsIDI0MCwgMTM3LCAxNCwgNywgMjQwLCAxMzYsIDE0LCA3LCAyNDAsIDEzNSwgMTQsIDcsIDI0MCwgCi0gICAgMTM0LCAxNCwgNywgMjQwLCAxMzMsIDE0LCA3LCAyNDAsIDEzMiwgMTQsIDcsIDI0MCwgMTMxLCAxNCwgNywgMjQwLCAxMzAsIAotICAgIDE0LCA3LCAyNDAsIDEyOSwgMTQsIDcsIDI0MCwgMTI4LCAxNCwgNywgMjQwLCAxMjcsIDE0LCA3LCAyNDAsIDEyNiwgMTQsIAotICAgIDcsIDI0MCwgMTI1LCAxNCwgNywgMjQwLCAxMjQsIDE0LCA3LCAyNDAsIDEyMywgMTQsIDcsIDI0MCwgMTIyLCAxNCwgNywgCi0gICAgMjQwLCAxMjEsIDE0LCA3LCAyNDAsIDEyMCwgMTQsIDcsIDI0MCwgMTE5LCAxNCwgNywgMjQwLCAxMTgsIDE0LCA3LCAyNDAsIAotICAgIDExNywgMTQsIDcsIDI0MCwgMTE2LCAxNCwgNywgMjQwLCAxMTUsIDE0LCA3LCAyNDAsIDExNCwgMTQsIDcsIDI0MCwgMTEzLCAKLSAgICAxNCwgNywgMjQwLCAxMTIsIDE0LCA3LCAyNDAsIDExMSwgMTQsIDcsIDI0MCwgMTEwLCAxNCwgNywgMjQwLCAxMDksIDE0LCAKLSAgICA3LCAyMzksIDc0LCAxNCwgNywgMjM5LCA3MywgMTQsIDcsIDIzOSwgNzIsIDE0LCA3LCAyMzksIDcxLCAxNCwgNywgMjM5LCAKLSAgICA3MCwgMTQsIDcsIDIzOSwgNjksIDE0LCA3LCAyMzksIDY4LCAxNCwgNywgMjM5LCA2NywgMTQsIDcsIDIzOSwgNjYsIDE0LCAKLSAgICA3LCAyMzksIDY1LCAxNCwgNywgMjM5LCA2NCwgMTQsIDcsIDIzOSwgNjMsIDE0LCA3LCAyMzksIDYyLCAxNCwgNywgMjM5LCAKLSAgICA2MSwgMTQsIDcsIDIzOSwgNjAsIDE0LCA3LCAyMzksIDU5LCAxNCwgNywgMjM5LCA1OCwgMTQsIDcsIDIzOSwgNTcsIDE0LCAKLSAgICA3LCAyMzksIDU2LCAxNCwgNywgMjM5LCA1NSwgMTQsIDcsIDIzOSwgNTQsIDE0LCA3LCAyMzksIDUzLCAxNCwgNywgMjM5LCAKLSAgICA1MiwgMTQsIDcsIDIzOSwgNTEsIDE0LCA3LCAyMzksIDUwLCAxNCwgNywgMjM5LCA0OSwgMTQsIDcsIDIzOSwgNDgsIDE0LCAKLSAgICA3LCAyMzksIDQ3LCAxNCwgNywgMjM5LCA0NiwgMTQsIDcsIDIzOSwgNDUsIDE0LCA3LCAyMzksIDQ0LCAxNCwgNywgMjM5LCAKLSAgICA0MywgMTQsIDcsIDIzOSwgNDIsIDE0LCA3LCAyMzksIDQxLCAxNCwgNywgMjM5LCA0MCwgMTQsIDcsIDIzOSwgMzksIDE0LCAKLSAgICA3LCAyMzksIDM4LCAxNCwgNywgMjM5LCAzNywgMTQsIDcsIDIzOSwgMzYsIDE0LCA3LCAyMzksIDM1LCAxNCwgNywgMjM5LCAKLSAgICAzNCwgMTQsIDcsIDIzOSwgMzMsIDE0LCA3LCAyMzksIDMyLCAxNCwgNywgMjM5LCAzMSwgMTQsIDcsIDIzOSwgMzAsIDE0LCAKLSAgICA3LCAyMzksIDI5LCAxNCwgNywgMjM5LCAyOCwgMTQsIDcsIDIzOSwgMjcsIDE0LCA3LCAyMzksIDI2LCAxNCwgNywgMjM5LCAKLSAgICAyNSwgMTQsIDcsIDIzOSwgMjQsIDE0LCA3LCAyMzksIDIzLCAxNCwgNywgMjM5LCAyMiwgMTQsIDcsIDIzOSwgMjEsIDE0LCAKLSAgICA3LCAyMzksIDIwLCAxNCwgNywgMjM5LCAxOSwgMTQsIDcsIDIzOSwgMTgsIDE0LCA3LCAyMzksIDE3LCAxNCwgNywgMjM5LCAKLSAgICAxNiwgMTQsIDcsIDIzOSwgMTUsIDE0LCA3LCAyMzksIDE0LCAxNCwgNywgMjM5LCAxMywgMTQsIDcsIDIzOSwgMTIsIDE0LCAKLSAgICA3LCAyMzksIDExLCAxNCwgNywgMjM3LCAxNjksIDE0LCA3LCAyMzcsIDE2OCwgMTQsIDcsIDIzNywgMTY3LCAxNCwgNywgCi0gICAgMjM3LCAxNjYsIDE0LCA3LCAyMzcsIDE2NSwgMTQsIDcsIDIzNywgMTY0LCAxNCwgNywgMjM3LCAxNjMsIDE0LCA3LCAyMzcsIAotICAgIDE2MiwgMTQsIDcsIDIzNywgMTYxLCAxNCwgNywgMjM1LCAxOTAsIDE0LCA3LCAyMzUsIDE4OSwgMTQsIDcsIDIzNSwgMTg4LCAKLSAgICAxNCwgNywgMjM1LCAxODcsIDE0LCA3LCAyMzUsIDE4NiwgMTQsIDcsIDIzNSwgMTg1LCAxNCwgNywgMjM1LCAxODQsIDE0LCAKLSAgICA3LCAyMzUsIDE4MywgMTQsIDcsIDIzNSwgMTgyLCAxNCwgNywgMjM1LCAxODEsIDE0LCA3LCAyMzUsIDE4MCwgMTQsIDcsIAotICAgIDIzNSwgMTc5LCAxNCwgNywgMjM1LCAxNzgsIDE0LCA3LCAyMzUsIDE3NywgMTQsIDcsIDIzNSwgMTc2LCAxNCwgNywgMjM1LCAKLSAgICAxNzUsIDE0LCA3LCAyMzUsIDE3NCwgMTQsIDcsIDIzNSwgMTczLCAxNCwgNywgMjM1LCAxNzIsIDE0LCA3LCAyMzAsIDUzLCAKLSAgICAxNCwgNywgMjMwLCA1MiwgMTQsIDcsIDIzMCwgNTEsIDE0LCA3LCAyMzAsIDUwLCAxNCwgNywgMjMwLCA0OSwgMTQsIDcsIAotICAgIDIzMCwgNDgsIDE0LCA3LCAyMzAsIDQ3LCAxNCwgNywgMjMwLCA0NiwgMTQsIDcsIDIyOCwgMTI4LCAxNCwgNywgMjI4LCAKLSAgICAxMjcsIDE0LCA3LCAyMjgsIDEyNiwgMTQsIDcsIDIyOCwgMTI1LCAxNCwgNywgMjI4LCAxMjQsIDE0LCA3LCAyMjgsIDEyMywgCi0gICAgMTQsIDcsIDIyOCwgMTIyLCAxNCwgNywgMjI4LCAxMjEsIDE0LCA3LCAyMjgsIDEyMCwgMTQsIDcsIDIyOCwgMTE5LCAxNCwgCi0gICAgNywgMjI2LCAxODMsIDE0LCA3LCAyMjYsIDE4MiwgMTQsIDcsIDIyNiwgMTgxLCAxNCwgNywgMjI2LCAxNzksIDE0LCA3LCAKLSAgICAyMjYsIDE3NywgMTQsIDcsIDIyNiwgMTc2LCAxNCwgNywgMjI2LCAxNzQsIDE0LCA3LCAyMjYsIDE3MiwgMTQsIDcsIDIyNiwgCi0gICAgMTcwLCAxNCwgNywgMjI2LCAxNjgsIDE0LCA3LCAyMjYsIDE2NiwgMTQsIDcsIDIyNiwgMTY0LCAxNCwgNywgMjI2LCAxNjIsIAotICAgIDE0LCA3LCAyMjYsIDE2MSwgMTQsIDcsIDIyNiwgMTU5LCAxNCwgNywgMjI2LCAxNTcsIDE0LCA3LCAyMjYsIDE1NiwgMTQsIAotICAgIDcsIDIyNiwgMTU1LCAxNCwgNywgMjI2LCAxNTQsIDE0LCA3LCAyMjYsIDE1MywgMTQsIDcsIDIyNiwgMTUyLCAxNCwgNywgCi0gICAgMjI2LCAxNTEsIDE0LCA3LCAyMjYsIDE1MCwgMTQsIDcsIDIyNiwgMTQ5LCAxNCwgNywgMjI2LCAxNDcsIDE0LCA3LCAyMjYsIAotICAgIDE0NSwgMTQsIDcsIDIyNiwgMTQzLCAxNCwgNywgMjI2LCAxNDIsIDE0LCA3LCAyMjYsIDE0MCwgMTQsIDcsIDIyNiwgMTM5LCAKLSAgICAxNCwgNywgMjI2LCAxMzcsIDE0LCA3LCAyMjYsIDEzNiwgMTQsIDcsIDIyNiwgMTM0LCAxNCwgNywgMjI2LCAxMzIsIDE0LCAKLSAgICA3LCAyMjYsIDEzMCwgMTQsIDcsIDIyNiwgMTI4LCAxNCwgNywgMjI2LCAxMjYsIDE0LCA3LCAyMjYsIDEyNSwgMTQsIDcsIAotICAgIDIyNiwgMTIzLCAxNCwgNywgMjI2LCAxMjEsIDE0LCA3LCAyMjYsIDEyMCwgMTQsIDcsIDIyNiwgMTE4LCAxNCwgNywgMjI2LCAKLSAgICAxMTYsIDE0LCA3LCAyMjYsIDExNCwgMTQsIDcsIDIyNiwgMTEyLCAxNCwgNywgMjI2LCAxMTEsIDE0LCA3LCAyMjYsIDEwOSwgCi0gICAgMTQsIDcsIDIyNiwgMTA3LCAxNCwgNywgMjI2LCAxMDUsIDE0LCA3LCAyMjYsIDEwNCwgMTQsIDcsIDIyNiwgMTAyLCAxNCwgCi0gICAgNywgMjI2LCAxMDAsIDE0LCA3LCAyMjYsIDk5LCAxNCwgNywgMjI2LCA5OCwgMTQsIDcsIDIyNiwgOTYsIDE0LCA3LCAyMjYsIAotICAgIDk0LCAxNCwgNywgMjI2LCA5MiwgMTQsIDcsIDIyNiwgOTAsIDE0LCA3LCAyMjYsIDg4LCAxNCwgNywgMjI2LCA4NiwgMTQsIAotICAgIDcsIDIyNiwgODQsIDE0LCA3LCAyMjYsIDgzLCAxNCwgNywgMjI2LCA4MSwgMTQsIDcsIDIyNiwgNzksIDE0LCA3LCAyMjYsIAotICAgIDc3LCAxNCwgNywgMjI2LCA3NSwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgMjIzLCAxNTksIDE0LCA3LCAyMjMsIDE1OCwgCi0gICAgMTQsIDcsIDIyMywgMTU3LCAxNCwgNywgMjIzLCAxNTYsIDE0LCA3LCAyMjMsIDE1NSwgMTQsIDcsIDIyMywgMTU0LCAxNCwgCi0gICAgNywgMjIzLCAxNTMsIDE0LCA3LCAyMjMsIDE1MiwgMTQsIDcsIDIyMywgMTUxLCAxNCwgNywgMjIzLCAxNTAsIDE0LCA3LCAKLSAgICAyMjMsIDE0OSwgMTQsIDcsIDIyMywgMTQ4LCAxNCwgNywgMjIzLCAxNDcsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgCi0gICAgMTQ1LCAxNCwgNywgMjIzLCAxNDQsIDE0LCA3LCAyMjMsIDE0MywgMTQsIDcsIDIyMywgMTQyLCAxNCwgNywgMjIzLCAxNDEsIAotICAgIDE0LCA3LCAyMjMsIDE0MCwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzgsIDE0LCA3LCAyMjMsIDEzNywgMTQsIAotICAgIDcsIDIyMywgMTM2LCAxNCwgNywgMjIzLCAxMzUsIDE0LCA3LCAyMjMsIDEzNCwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgCi0gICAgMjIzLCAxMzIsIDE0LCA3LCAyMjMsIDEzMSwgMTQsIDcsIDIyMywgMTMwLCAxNCwgNywgMjIzLCAxMjksIDE0LCA3LCAyMjMsIAotICAgIDEyOCwgMTQsIDcsIDIyMywgMTI3LCAxNCwgNywgMjIzLCAxMjYsIDE0LCA3LCAyMjMsIDEyNSwgMTQsIDcsIDIyMywgMTI0LCAKLSAgICAxNCwgNywgMjIzLCAxMjMsIDE0LCA3LCAyMjMsIDEyMiwgMTQsIDcsIDIyMywgMTIxLCAxNCwgNywgMjIzLCAxMjAsIDE0LCAKLSAgICA3LCAyMjMsIDExOSwgMTQsIDcsIDIyMywgMTE4LCAxNCwgNywgMjIzLCAxMTcsIDE0LCA3LCAyMjMsIDExNiwgMTQsIDcsIAotICAgIDIyMywgMTE1LCAxNCwgNywgMjIzLCAxMTQsIDE0LCA3LCAyMjMsIDExMywgMTQsIDcsIDIyMywgMTEyLCAxNCwgNywgMjIxLCAKLSAgICAyNTIsIDE0LCA3LCAyMjEsIDI1MSwgMTQsIDcsIDIyMSwgMjUwLCAxNCwgNywgMjIxLCAyNDksIDE0LCA3LCAyMjEsIDI0OCwgCi0gICAgMTQsIDcsIDIyMSwgMjQ3LCAxNCwgNywgMjIxLCAyNDYsIDE0LCA3LCAyMjEsIDI0NSwgMTQsIDcsIDIyMSwgMjQ0LCAxNCwgCi0gICAgNywgMjIxLCAyNDMsIDE0LCA3LCAyMjEsIDI0MiwgMTQsIDcsIDIyMSwgMjQxLCAxNCwgNywgMjIxLCAyNDAsIDE0LCA3LCAKLSAgICAyMjEsIDIzOSwgMTQsIDcsIDIyMSwgMjM4LCAxNCwgNywgMjIxLCAyMzcsIDE0LCA3LCAyMjEsIDIzNiwgMTQsIDcsIDIyMSwgCi0gICAgMjM1LCAxNCwgNywgMjIxLCAyMzQsIDE0LCA3LCAyMjEsIDIzMywgMTQsIDcsIDIyMSwgMjMyLCAxNCwgNywgMjIxLCAyMzEsIAotICAgIDE0LCA3LCAyMjEsIDgzLCAxNCwgNywgMjIxLCA4MiwgMTQsIDcsIDIyMSwgODEsIDE0LCA3LCAyMjEsIDgwLCAxNCwgNywgCi0gICAgMjIxLCA3OSwgMTQsIDcsIDIyMSwgNzgsIDE0LCA3LCAyMjEsIDc3LCAxNCwgNywgMjIxLCA3NiwgMTQsIDcsIDIyMSwgNzUsIAotICAgIDE0LCA3LCAyMjEsIDc0LCAxNCwgNywgMjIxLCA3MywgMTQsIDcsIDIyMSwgNzIsIDE0LCA3LCAyMjEsIDcxLCAxNCwgNywgCi0gICAgMjIxLCA3MCwgMTQsIDcsIDIyMSwgNjksIDE0LCA3LCAyMjEsIDY4LCAxNCwgNywgMjIxLCA2NywgMTQsIDcsIDIyMSwgNjYsIAotICAgIDE0LCA3LCAyMjEsIDY1LCAxNCwgNywgMjIxLCA2NCwgMTQsIDcsIDIyMSwgNjMsIDE0LCA3LCAyMjEsIDYyLCAxNCwgNywgCi0gICAgMjIxLCA2MSwgMTQsIDcsIDIyMSwgNjAsIDE0LCA3LCAyMjEsIDU5LCAxNCwgNywgMjIxLCA1OCwgMTQsIDcsIDIyMCwgMTczLCAKLSAgICAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCAKLSAgICA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIAotICAgIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCA3LCAyMjAsIDE2MiwgMTQsIDcsIDIyMCwgMTYxLCAxNCwgNywgMjIwLCAKLSAgICAxNjAsIDE0LCA3LCAyMjAsIDE1OSwgMTQsIDcsIDIyMCwgMTU4LCAxNCwgNywgMjIwLCAxNTcsIDE0LCA3LCAyMjAsIDE1NiwgCi0gICAgMTQsIDcsIDIyMCwgMTU1LCAxNCwgNywgMjIwLCAxNTQsIDE0LCA3LCAyMjAsIDE1MywgMTQsIDcsIDIyMCwgMTUyLCAxNCwgCi0gICAgNywgMjIwLCAxNTEsIDE0LCA3LCAyMjAsIDE1MCwgMTQsIDcsIDIyMCwgMTQ5LCAxNCwgNywgMjIwLCAxNDgsIDE0LCA3LCAKLSAgICAyMjAsIDE0NywgMTQsIDcsIDIyMCwgMTQ2LCAxNCwgNywgMjIwLCAxNDUsIDE0LCA3LCAyMjAsIDE0NCwgMTQsIDcsIDIyMCwgCi0gICAgMTQzLCAxNCwgNywgMjIwLCAxNDIsIDE0LCA3LCAyMjAsIDE0MSwgMTQsIDcsIDIyMCwgMTQwLCAxNCwgNywgMjIwLCAxMzksIAotICAgIDE0LCA3LCAyMjAsIDEzOCwgMTQsIDcsIDIyMCwgMTM3LCAxNCwgNywgMjIwLCAxMzYsIDE0LCA3LCAyMjAsIDEzNSwgMTQsIAotICAgIDcsIDIyMCwgMTM0LCAxNCwgNywgMjIwLCAxMzMsIDE0LCA3LCAyMjAsIDEzMiwgMTQsIDcsIDIyMCwgMTMxLCAxNCwgNywgCi0gICAgMjIwLCAxMzAsIDE0LCA3LCAyMjAsIDEyOSwgMTQsIDcsIDIyMCwgMTI4LCAxNCwgNywgMjIwLCAxMjcsIDE0LCA3LCAyMjAsIAotICAgIDEyNiwgMTQsIDcsIDIyMCwgMTI1LCAxNCwgNywgMjIwLCAxMjQsIDE0LCA3LCAyMjAsIDEyMywgMTQsIDcsIDIyMCwgMTIyLCAKLSAgICAxNCwgNywgMjIwLCAxMjEsIDE0LCA3LCAyMjAsIDEyMCwgMTQsIDcsIDIyMCwgMTE5LCAxNCwgNywgMjIwLCAxMTgsIDE0LCAKLSAgICA3LCAyMjAsIDExNywgMTQsIDcsIDIyMCwgMTE2LCAxNCwgNywgMjIwLCAxMTUsIDE0LCA3LCAyMjAsIDExNCwgMTQsIDcsIAotICAgIDIyMCwgMTEzLCAxNCwgNywgMjIwLCAxMTIsIDE0LCA3LCAyMjAsIDExMSwgMTQsIDcsIDIyMCwgMTEwLCAxNCwgNywgMjIwLCAKLSAgICAxMDksIDE0LCA3LCAyMjAsIDEwOCwgMTQsIDcsIDIyMCwgMTA3LCAxNCwgNywgMjIwLCAxMDYsIDE0LCA3LCAyMjAsIDEwNSwgCi0gICAgMTQsIDcsIDIyMCwgMTA0LCAxNCwgNywgMjIwLCAxMDMsIDE0LCA3LCAyMjAsIDEwMiwgMTQsIDcsIDIyMCwgMTAxLCAxNCwgCi0gICAgNywgMjIwLCAxMDAsIDE0LCA3LCAyMjAsIDk5LCAxNCwgNywgMjE5LCAxODMsIDE0LCA3LCAyMTksIDE4MiwgMTQsIDcsIAotICAgIDIxOSwgMTgxLCAxNCwgNywgMjE5LCAxODAsIDE0LCA3LCAyMTksIDE3OSwgMTQsIDcsIDIxOSwgMTc4LCAxNCwgNywgMjE5LCAKLSAgICAxNzcsIDE0LCA3LCAyMTksIDE3NiwgMTQsIDcsIDIxOSwgMTc1LCAxNCwgNywgMjE5LCAxNzQsIDE0LCA3LCAyMTksIDE3MywgCi0gICAgMTQsIDcsIDIxOSwgMTcyLCAxNCwgNywgMjE5LCAxNzEsIDE0LCA3LCAyMTcsIDEzMywgMTQsIDcsIDIxNywgMTMyLCAxNCwgCi0gICAgNywgMjE3LCAxMzEsIDE0LCA3LCAyMTcsIDEzMCwgMTQsIDcsIDIxNywgMTI5LCAxNCwgNywgMjE3LCAxMjgsIDE0LCA3LCAKLSAgICAyMTcsIDEyNywgMTQsIDcsIDIxNiwgMjU1LCAxNCwgNywgMjE2LCAyNTQsIDE0LCA3LCAyMTYsIDI1MywgMTQsIDcsIDIxNiwgCi0gICAgMjUyLCAxNCwgNywgMjE2LCAyNTEsIDE0LCA3LCAyMTYsIDI1MCwgMTQsIDcsIDIxNiwgMjQ5LCAxNCwgNywgMjE2LCAyNDgsIAotICAgIDE0LCA3LCAyMTYsIDI0NywgMTQsIDcsIDIxNiwgMjQ2LCAxNCwgNywgMjE2LCAyNDUsIDE0LCA3LCAyMTYsIDI0NCwgMTQsIAotICAgIDcsIDIxNiwgMjQzLCAxNCwgNywgMjE2LCAyNDIsIDE0LCA3LCAyMTYsIDI0MSwgMTQsIDcsIDIxNiwgMjQwLCAxNCwgNywgCi0gICAgMjE2LCAyMzksIDE0LCA3LCAyMTYsIDIzOCwgMTQsIDcsIDIxNiwgMjM3LCAxNCwgNywgMjE2LCAyMzYsIDE0LCA3LCAyMTYsIAotICAgIDIzNSwgMTQsIDcsIDIxNiwgMjM0LCAxNCwgNywgMjE2LCAyMzMsIDE0LCA3LCAyMTYsIDIzMiwgMTQsIDcsIDIxNiwgMjMxLCAKLSAgICAxNCwgNywgMjE2LCAyMzAsIDE0LCA3LCAyMTYsIDIyOSwgMTQsIDcsIDIxNiwgMjI4LCAxNCwgNywgMjE2LCAyMjcsIDE0LCAKLSAgICA3LCAyMTYsIDIyNiwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIAotICAgIDIxNiwgMjIyLCAxNCwgNywgMjE1LCA5MSwgMTQsIDcsIDIxNSwgOTAsIDE0LCA3LCAyMTUsIDg5LCAxNCwgNywgMjE1LCA4OCwgCi0gICAgMTQsIDcsIDIxNSwgODcsIDE0LCA3LCAyMTUsIDg2LCAxNCwgNywgMjE1LCA4NSwgMTQsIDcsIDIxNSwgODQsIDE0LCA3LCAKLSAgICAyMTUsIDgzLCAxNCwgNywgMjE1LCA4MiwgMTQsIDcsIDIxNSwgODEsIDE0LCA3LCAyMTUsIDgwLCAxNCwgNywgMjE1LCA3OSwgCi0gICAgMTQsIDcsIDIxNSwgNzgsIDE0LCA3LCAyMTUsIDc3LCAxNCwgNywgMjE1LCA3NiwgMTQsIDcsIDIxNSwgNzUsIDE0LCA3LCAKLSAgICAyMTUsIDc0LCAxNCwgNywgMjE1LCA3MywgMTQsIDcsIDIxNSwgNzIsIDE0LCA3LCAyMTUsIDcxLCAxNCwgNywgMjE1LCA3MCwgCi0gICAgMTQsIDcsIDIxNSwgNjksIDE0LCA3LCAyMTUsIDY4LCAxNCwgNywgMjE1LCA2NywgMTQsIDcsIDIxNSwgNjYsIDE0LCA3LCAKLSAgICAyMTUsIDY1LCAxNCwgNywgMjE1LCA2NCwgMTQsIDcsIDIxNSwgNjMsIDE0LCA3LCAyMTUsIDYyLCAxNCwgNywgMjE1LCA2MSwgCi0gICAgMTQsIDcsIDIxNSwgNjAsIDE0LCA3LCAyMTUsIDU5LCAxNCwgNywgMjE1LCA1OCwgMTQsIDcsIDIxNSwgNTcsIDE0LCA3LCAKLSAgICAyMTUsIDU2LCAxNCwgNywgMjE1LCA1NSwgMTQsIDcsIDIxNSwgNTQsIDE0LCA3LCAyMTUsIDUzLCAxNCwgNywgMjE1LCA1MiwgCi0gICAgMTQsIDcsIDIxNSwgNTEsIDE0LCA3LCAyMTUsIDUwLCAxNCwgNywgMjE1LCA0OSwgMTQsIDcsIDIxNSwgNDgsIDE0LCA3LCAKLSAgICAyMTUsIDQ3LCAxNCwgNywgMjE1LCA0NiwgMTQsIDcsIDIxNSwgNDUsIDE0LCA3LCAyMTUsIDQ0LCAxNCwgNywgMjE1LCA0MywgCi0gICAgMTQsIDcsIDIxNSwgNDIsIDE0LCA3LCAyMTUsIDQxLCAxNCwgNywgMjE1LCA0MCwgMTQsIDcsIDIxNSwgMzksIDE0LCA3LCAKLSAgICAyMTUsIDM4LCAxNCwgNywgMjEwLCA2NywgMTQsIDcsIDIxMCwgNjYsIDE0LCA3LCAyMTAsIDY1LCAxNCwgNywgMjEwLCA2NCwgCi0gICAgMTQsIDcsIDIxMCwgNjMsIDE0LCA3LCAyMTAsIDYyLCAxNCwgNywgMjEwLCA2MSwgMTQsIDcsIDIxMCwgNjAsIDE0LCA3LCAKLSAgICAyMTAsIDU5LCAxNCwgNywgMjEwLCA1OCwgMTQsIDcsIDIxMCwgNTcsIDE0LCA3LCAyMTAsIDU2LCAxNCwgNywgMjEwLCA1NSwgCi0gICAgMTQsIDcsIDIxMCwgNTQsIDE0LCA3LCAyMTAsIDUzLCAxNCwgNywgMjEwLCA1MiwgMTQsIDcsIDIxMCwgNTEsIDE0LCA3LCAKLSAgICAyMTAsIDUwLCAxNCwgNywgMjEwLCA0OSwgMTQsIDcsIDIxMCwgNDgsIDE0LCA3LCAyMTAsIDQ3LCAxNCwgNywgMjEwLCA0NiwgCi0gICAgMTQsIDcsIDIxMCwgNDUsIDE0LCA3LCAyMTAsIDQ0LCAxNCwgNywgMjEwLCA0MywgMTQsIDcsIDIxMCwgNDIsIDE0LCA3LCAKLSAgICAyMTAsIDQxLCAxNCwgNywgMjEwLCA0MCwgMTQsIDcsIDIxMCwgMzksIDE0LCA3LCAyMTAsIDM4LCAxNCwgNywgMjEwLCAzNywgCi0gICAgMTQsIDcsIDIxMCwgMzYsIDE0LCA3LCAyMTAsIDM1LCAxNCwgNywgMjEwLCAzNCwgMTQsIDcsIDIxMCwgMzMsIDE0LCA3LCAKLSAgICAyMTAsIDMyLCAxNCwgNywgMjEwLCAzMSwgMTQsIDcsIDIxMCwgMzAsIDE0LCA3LCAyMTAsIDI5LCAxNCwgNywgMjEwLCAyOCwgCi0gICAgMTQsIDcsIDIxMCwgMjcsIDE0LCA3LCAyMTAsIDI2LCAxNCwgNywgMjEwLCAyNSwgMTQsIDcsIDIxMCwgMjQsIDE0LCA3LCAKLSAgICAyMDcsIDg4LCAxNCwgNywgMjA3LCA4NywgMTQsIDcsIDIwNywgODYsIDE0LCA3LCAyMDcsIDg1LCAxNCwgNywgMjA3LCA4NCwgCi0gICAgMTQsIDcsIDIwNywgODMsIDE0LCA3LCAyMDcsIDgyLCAxNCwgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAKLSAgICAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgCi0gICAgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAKLSAgICAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgCi0gICAgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAKLSAgICAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgCi0gICAgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAKLSAgICAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgCi0gICAgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAKLSAgICAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNiwgMTYzLCAxNCwgNywgMjA2LCAxNjIsIDE0LCA3LCAyMDYsIAotICAgIDE2MSwgMTQsIDcsIDIwNiwgMTYwLCAxNCwgNywgMjA2LCAxNTksIDE0LCA3LCAyMDYsIDE1OCwgMTQsIDcsIDIwNiwgMTU3LCAKLSAgICAxNCwgNywgMjA2LCAxNTYsIDE0LCA3LCAyMDYsIDE1NSwgMTQsIDcsIDIwNiwgMTU0LCAxNCwgNywgMjA2LCAxNTMsIDE0LCAKLSAgICA3LCAyMDYsIDE1MiwgMTQsIDcsIDIwNiwgMTUxLCAxNCwgNywgMjA2LCAxNTAsIDE0LCA3LCAyMDYsIDE0OSwgMTQsIDcsIAotICAgIDIwNiwgMTQ4LCAxNCwgNywgMjA2LCAxNDcsIDE0LCA3LCAyMDYsIDE0NiwgMTQsIDcsIDIwNiwgMTQ1LCAxNCwgNywgMjA2LCAKLSAgICAxNDQsIDE0LCA3LCAyMDYsIDE0MywgMTQsIDcsIDIwNiwgMTQyLCAxNCwgNywgMjA2LCAxNDEsIDE0LCA3LCAyMDYsIDE0MCwgCi0gICAgMTQsIDcsIDIwNiwgMTM5LCAxNCwgNywgMjA2LCAxMzgsIDE0LCA3LCAyMDYsIDEzNywgMTQsIDcsIDIwNiwgMTM2LCAxNCwgCi0gICAgNywgMjA2LCAxMzUsIDE0LCA3LCAyMDYsIDEzNCwgMTQsIDcsIDIwNiwgMTMzLCAxNCwgNywgMjA2LCAxMzIsIDE0LCA3LCAKLSAgICAyMDYsIDEzMSwgMTQsIDcsIDIwNiwgMTMwLCAxNCwgNywgMjA2LCAxMjksIDE0LCA3LCAyMDYsIDEyOCwgMTQsIDcsIDIwNiwgCi0gICAgMTI3LCAxNCwgNywgMjA2LCAxMjYsIDE0LCA3LCAyMDYsIDEyNSwgMTQsIDcsIDIwNiwgMTI0LCAxNCwgNywgMjA2LCAxMjMsIAotICAgIDE0LCA3LCAyMDYsIDEyMiwgMTQsIDcsIDIwNiwgMTIxLCAxNCwgNywgMjA2LCAxMjAsIDE0LCA3LCAyMDYsIDExOSwgMTQsIAotICAgIDcsIDIwNiwgMTE4LCAxNCwgNywgMjA2LCAxMTcsIDE0LCA3LCAyMDYsIDExNiwgMTQsIDcsIDIwNiwgMTE1LCAxNCwgNywgCi0gICAgMjA2LCAxMTQsIDE0LCA3LCAyMDYsIDExMywgMTQsIDcsIDIwNiwgMTEyLCAxNCwgNywgMjA2LCAxMTEsIDE0LCA3LCAyMDYsIAotICAgIDExMCwgMTQsIDcsIDIwNiwgMTA5LCAxNCwgNywgMjA2LCAxMDgsIDE0LCA3LCAyMDYsIDEwNywgMTQsIDcsIDIwNiwgMTA2LCAKLSAgICAxNCwgNywgMjA2LCAxMDUsIDE0LCA3LCAyMDYsIDEwNCwgMTQsIDcsIDIwNiwgMTAzLCAxNCwgNywgMjA2LCAxMDIsIDE0LCAKLSAgICA3LCAyMDYsIDEwMSwgMTQsIDcsIDIwNiwgMTAwLCAxNCwgNywgMjA2LCA5OSwgMTQsIDcsIDIwNiwgOTgsIDE0LCA3LCAyMDYsIAotICAgIDk3LCAxNCwgNywgMjA2LCA5NiwgMTQsIDcsIDIwNiwgOTUsIDE0LCA3LCAyMDYsIDk0LCAxNCwgNywgMjA2LCA5MywgMTQsIAotICAgIDcsIDIwNiwgOTIsIDE0LCA3LCAyMDYsIDkxLCAxNCwgNywgMjA2LCA5MCwgMTQsIDcsIDIwNiwgODksIDE0LCA3LCAyMDYsIAotICAgIDg4LCAxNCwgNywgMjA2LCA4NywgMTQsIDcsIDIwNCwgMTQzLCAxNCwgNywgMjA0LCAxNDIsIDE0LCA3LCAyMDQsIDE0MSwgCi0gICAgMTQsIDcsIDIwNCwgMTQwLCAxNCwgNywgMjA0LCAxMzksIDE0LCA3LCAyMDQsIDEzOCwgMTQsIDcsIDIwNCwgMTM3LCAxNCwgCi0gICAgNywgMjA0LCAxMzYsIDE0LCA3LCAyMDQsIDEzNSwgMTQsIDcsIDIwNCwgMTM0LCAxNCwgNywgMjA0LCAxMzMsIDE0LCA3LCAKLSAgICAyMDQsIDEzMiwgMTQsIDcsIDIwNCwgMTMxLCAxNCwgNywgMjA0LCAxMzAsIDE0LCA3LCAyMDQsIDEyOSwgMTQsIDcsIDIwNCwgCi0gICAgMTI4LCAxNCwgNywgMjA0LCAxMjcsIDE0LCA3LCAyMDQsIDEyNiwgMTQsIDcsIDIwNCwgMTI1LCAxNCwgNywgMjA0LCAxMjQsIAotICAgIDE0LCA3LCAyMDQsIDEyMywgMTQsIDcsIDIwNCwgMTIyLCAxNCwgNywgMjA0LCAxMjEsIDE0LCA3LCAyMDQsIDEyMCwgMTQsIAotICAgIDcsIDIwNCwgMTE5LCAxNCwgNywgMjA0LCAxMTgsIDE0LCA3LCAyMDQsIDExNywgMTQsIDcsIDIwNCwgMTE2LCAxNCwgNywgCi0gICAgMjA0LCAxMTUsIDE0LCA3LCAyMDQsIDExNCwgMTQsIDcsIDIwNCwgMTEzLCAxNCwgNywgMjA0LCAxMTIsIDE0LCA3LCAyMDMsIAotICAgIDE5NCwgMTQsIDcsIDIwMywgMTkzLCAxNCwgNywgMjAzLCAxOTIsIDE0LCA3LCAyMDMsIDE5MSwgMTQsIDcsIDIwMywgMTkwLCAKLSAgICAxNCwgNywgMjAzLCAxODksIDE0LCA3LCAyMDMsIDE4OCwgMTQsIDcsIDIwMywgMTg3LCAxNCwgNywgMjAzLCAxODYsIDE0LCAKLSAgICA3LCAyMDMsIDE4NSwgMTQsIDcsIDIwMywgMTg0LCAxNCwgNywgMjAzLCAxODMsIDE0LCA3LCAyMDMsIDEyMiwgMTQsIDcsIAotICAgIDIwMywgMTIxLCAxNCwgNywgMjAzLCAxMjAsIDE0LCA3LCAyMDMsIDExOSwgMTQsIDcsIDIwMywgMTE4LCAxNCwgNywgMjAzLCAKLSAgICAxMTcsIDE0LCA3LCAyMDMsIDExNiwgMTQsIDcsIDIwMywgMTE1LCAxNCwgNywgMjAzLCAxMTQsIDE0LCA3LCAyMDIsIDE1OCwgCi0gICAgMTQsIDcsIDIwMiwgMTU3LCAxNCwgNywgMjAyLCAxNTYsIDE0LCA3LCAyMDIsIDE1NSwgMTQsIDcsIDIwMiwgMTU0LCAxNCwgCi0gICAgNywgMjAyLCAxNTMsIDE0LCA3LCAyMDIsIDE1MiwgMTQsIDcsIDIwMiwgMTUxLCAxNCwgNywgMjAyLCAxNTAsIDE0LCA3LCAKLSAgICAyMDIsIDE0OSwgMTQsIDcsIDIwMiwgMTQ4LCAxNCwgNywgMjAyLCAxNDcsIDE0LCA3LCAyMDIsIDE0NiwgMTQsIDcsIDIwMiwgCi0gICAgMTQ1LCAxNCwgNywgMjAyLCAxNDQsIDE0LCA3LCAyMDIsIDE0MywgMTQsIDcsIDIwMiwgMTQyLCAxNCwgNywgMjAyLCAxNDEsIAotICAgIDE0LCA3LCAyMDIsIDE0MCwgMTQsIDcsIDIwMiwgMTM5LCAxNCwgNywgMjAyLCAxMzgsIDE0LCA3LCAyMDIsIDEzNywgMTQsIAotICAgIDcsIDIwMiwgMTM2LCAxNCwgNywgMjAyLCAxMzUsIDE0LCA3LCAyMDIsIDEzNCwgMTQsIDcsIDIwMiwgMTMzLCAxNCwgNywgCi0gICAgMjAyLCAxMzIsIDE0LCA3LCAyMDIsIDEzMSwgMTQsIDcsIDIwMiwgMTMwLCAxNCwgNywgMjAyLCAxMjksIDE0LCA3LCAyMDIsIAotICAgIDEyOCwgMTQsIDcsIDIwMiwgMTI3LCAxNCwgNywgMjAyLCAxMjYsIDE0LCA3LCAyMDIsIDEyNSwgMTQsIDcsIDIwMiwgMTI0LCAKLSAgICAxNCwgNywgMjAyLCAxMjMsIDE0LCA3LCAyMDIsIDEyMiwgMTQsIDcsIDIwMiwgMTIxLCAxNCwgNywgMjAyLCAxMjAsIDE0LCAKLSAgICA3LCAyMDIsIDExOSwgMTQsIDcsIDIwMiwgMTE4LCAxNCwgNywgMjUyLCAyNCwgMTQsIDcsIDI1MiwgMjMsIDE0LCA3LCAyNTIsIAotICAgIDIyLCAxNCwgNywgMjUyLCAyMSwgMTQsIDcsIDI1MiwgMjAsIDE0LCA3LCAyNTIsIDE5LCAxNCwgNywgMjUyLCAxOCwgMTQsIAotICAgIDcsIDI1MiwgMTcsIDE0LCA3LCAyNTIsIDE2LCAxNCwgNywgMjUyLCAxNSwgMTQsIDcsIDI1MiwgMTQsIDE0LCA3LCAyNTIsIAotICAgIDEzLCAxNCwgNywgMjUyLCAxMiwgMTQsIDcsIDI1MiwgMTEsIDE0LCA3LCAyNTIsIDEwLCAxNCwgNywgMjUyLCA5LCAxNCwgNywgCi0gICAgMjUyLCA4LCAxNCwgNywgMjUyLCA3LCAxNCwgNywgMjUyLCA2LCAxNCwgNywgMjUyLCA1LCAxNCwgNywgMjUyLCA0LCAxNCwgCi0gICAgNywgMjUyLCAzLCAxNCwgNywgMjUyLCAyLCAxNCwgNywgMjUyLCAxLCAxNCwgNywgMjUyLCAwLCAxNCwgNywgMjUxLCAyNTUsIAotICAgIDE0LCA3LCAyNTEsIDI1NCwgMTQsIDcsIDI1MSwgMjUzLCAxNCwgNywgMjUxLCAyNTIsIDE0LCA3LCAyNTEsIDI1MSwgMTQsIAotICAgIDcsIDI1MSwgMjUwLCAxNCwgNywgMjUxLCAyNDksIDE0LCA3LCAyNTEsIDI0OCwgMTQsIDcsIDI1MSwgMjQ3LCAyNywgNywgCi0gICAgMjU1LCAxOCwgMjcsIDcsIDI1NSwgMTcsIDI3LCA3LCAyNTUsIDE2LCAyNywgNywgMjU1LCAxNSwgMjcsIDcsIDI1NSwgMTQsIAotICAgIDI3LCA3LCAyNTUsIDEyLCAyNywgNywgMjU1LCA5LCAyNywgNywgMjU1LCA4LCAyNywgNywgMjU1LCA3LCAyNywgNywgMjU1LCAKLSAgICA2LCAyNywgNywgMjU1LCA1LCAyNywgNywgMjU1LCA0LCAyNywgNywgMjU1LCAzLCAyNywgNywgMjU1LCAyLCAyNywgNywgCi0gICAgMjU1LCAxLCAyNywgNywgMjU0LCAyNTUsIDI3LCA3LCAyNTQsIDI1NCwgMjcsIDcsIDI1NCwgMjUzLCAyNywgNywgMjU0LCAKLSAgICAyNTEsIDI3LCA3LCAyNTQsIDI1MCwgMjcsIDcsIDI1NCwgMjQ5LCAyNywgNywgMjU0LCAyNDgsIDI3LCA3LCAyNTQsIDI0NywgCi0gICAgMjcsIDcsIDI1NCwgMjQ2LCAyNywgNywgMjU0LCAyNDUsIDI3LCA3LCAyNTQsIDI0NCwgMjcsIDcsIDI1NCwgMjQzLCAyNywgCi0gICAgNywgMjU0LCAyNDIsIDI3LCA3LCAyNTQsIDI0MSwgMjcsIDcsIDI1NCwgMjQwLCAyNywgNywgMjU0LCAyMzgsIDI3LCA3LCAKLSAgICAyNTQsIDIzNywgMjcsIDcsIDI1NCwgMjM2LCAyNywgNywgMjU0LCAyMzUsIDI3LCA3LCAyNTQsIDIzMywgMjcsIDcsIDI1NCwgCi0gICAgMjMyLCAyNywgNywgMjU0LCAyMzEsIDI3LCA3LCAyNTQsIDIzMCwgMjcsIDcsIDI1NCwgMjI5LCAyNywgNywgMjU0LCAyMjgsIAotICAgIDI3LCA3LCAyNTQsIDIyNywgMjcsIDcsIDI1NCwgMjI2LCAyNywgNywgMjU0LCAyMjUsIDI3LCA3LCAyNTQsIDIyMywgMjcsIAotICAgIDcsIDI1NCwgMjIyLCAyNywgNywgMjU0LCAyMjEsIDI3LCA3LCAyNTQsIDIxOSwgMjcsIDcsIDI1NCwgMjE3LCAyNywgNywgCi0gICAgMjU0LCAyMTYsIDI3LCA3LCAyNTQsIDIxNSwgMjcsIDcsIDI1NCwgMjE0LCAyNywgNywgMjU0LCAyMTMsIDI3LCA3LCAyNTQsIAotICAgIDIxMiwgMjcsIDcsIDI1NCwgMjExLCAyNywgNywgMjU0LCAyMTAsIDI3LCA3LCAyNTQsIDIwOSwgMjcsIDcsIDI1NCwgMjA4LCAKLSAgICAyNywgNywgMjU0LCAyMDcsIDI3LCA3LCAyNTQsIDIwNiwgMjcsIDcsIDI1NCwgMjA1LCAyNywgNywgMjU0LCAyMDQsIDI3LCAKLSAgICA3LCAyNTQsIDIwMywgMjcsIDcsIDI1NCwgMjAyLCAyNywgNywgMjU0LCAyMDEsIDI3LCA3LCAyNTQsIDIwMCwgMjcsIDcsIAotICAgIDI1NCwgMTk5LCAyNywgNywgMjU0LCAxOTgsIDI3LCA3LCAyNTQsIDE5NywgMjcsIDcsIDI1NCwgMTk2LCAyNywgNywgMjU0LCAKLSAgICAxOTUsIDI3LCA3LCAyNTQsIDE5NCwgMjcsIDcsIDI1NCwgMTkzLCAyNywgNywgMjU0LCAxOTIsIDI3LCA3LCAyNTQsIDE5MSwgCi0gICAgMjcsIDcsIDI1NCwgMTkwLCAyNywgNywgMjU0LCAxODksIDI3LCA3LCAyNTQsIDE4OCwgMjcsIDcsIDI1NCwgMTg3LCAyNywgCi0gICAgNywgMjU0LCAxODYsIDI3LCA3LCAyNTQsIDE4NSwgMjcsIDcsIDI1NCwgMTg0LCAyNywgNywgMjU0LCAxODMsIDI3LCA3LCAKLSAgICAyNTQsIDE4MiwgMjcsIDcsIDI1NCwgMTgxLCAyNywgNywgMjU0LCAxODAsIDI3LCA3LCAyNTQsIDE3OSwgMjcsIDcsIDI1NCwgCi0gICAgMTc4LCAyNywgNywgMjU0LCAxNzcsIDI3LCA3LCAyNTQsIDE3NiwgMjcsIDcsIDI1NCwgMTc1LCAyNywgNywgMjU0LCAxNzQsIAotICAgIDI3LCA3LCAyNTQsIDE3MywgMjcsIDcsIDI1NCwgMTcyLCAyNywgNywgMjU0LCAxNzEsIDI3LCA3LCAyNTQsIDE3MCwgMjcsIAotICAgIDcsIDI1NCwgMTY5LCAyNywgNywgMjU0LCAxNjgsIDI3LCA3LCAyNTQsIDE2NywgMjcsIDcsIDI1NCwgMTY2LCAyNywgNywgCi0gICAgMjU0LCAxNjUsIDI3LCA3LCAyNTQsIDE2NCwgMjcsIDcsIDI1NCwgMTYzLCAyNywgNywgMjU0LCAxNjIsIDI3LCA3LCAyNTQsIAotICAgIDE2MSwgMjcsIDcsIDI1NCwgMTYwLCAyNywgNywgMjU0LCAxNTksIDI3LCA3LCAyNTQsIDE1OCwgMjcsIDcsIDI1NCwgMTU3LCAKLSAgICAyNywgNywgMjU0LCAxNTYsIDI3LCA3LCAyNTQsIDE1NSwgMjcsIDcsIDI1NCwgMTU0LCAyNywgNywgMjU0LCAxNTMsIDI3LCAKLSAgICA3LCAyNTQsIDE1MSwgMjcsIDcsIDI1NCwgMTUwLCAyNywgNywgMjU0LCAxNDksIDI3LCA3LCAyNTQsIDE0OCwgMjcsIDcsIAotICAgIDI1NCwgMTQ3LCAyNywgNywgMjU0LCAxNDYsIDI3LCA3LCAyNTQsIDE0NSwgMjcsIDcsIDI1NCwgMTQ0LCAyNywgNywgMjU0LCAKLSAgICAxNDMsIDI3LCA3LCAyNTQsIDE0MiwgMjcsIDcsIDI1NCwgMTQxLCAyNywgNywgMjU0LCAxNDAsIDI3LCA3LCAyNTQsIDEzOSwgCi0gICAgMjcsIDcsIDI1NCwgMTM4LCAyNywgNywgMjU0LCAxMzcsIDI3LCA3LCAyNTQsIDEzNiwgMjcsIDcsIDI1NCwgMTM1LCAyNywgCi0gICAgNywgMjU0LCAxMzQsIDI3LCA3LCAyNTQsIDEzMywgMjcsIDcsIDI1NCwgMTMyLCAyNywgNywgMjU0LCAxMzEsIDI3LCA3LCAKLSAgICAyNTQsIDEzMCwgMjcsIDcsIDI1NCwgMTI5LCAyNywgNywgMjU0LCAxMjgsIDI3LCA3LCAyNTQsIDEyNywgMjcsIDcsIDI1NCwgCi0gICAgMTI2LCAyNywgNywgMjU0LCAxMjUsIDI3LCA3LCAyNTQsIDEyNCwgMjcsIDcsIDI1NCwgMTIzLCAyNywgNywgMjU0LCAxMjIsIAotICAgIDI3LCA3LCAyNTQsIDEyMSwgMjcsIDcsIDI1NCwgMTIwLCAyNywgNywgMjU0LCAxMTksIDI3LCA3LCAyNTQsIDExOCwgMjcsIAotICAgIDcsIDI1NCwgMTE2LCAyNywgNywgMjU0LCAxMTUsIDI3LCA3LCAyNTQsIDExNCwgMjcsIDcsIDI1NCwgMTEzLCAyNywgNywgCi0gICAgMjU0LCAxMTIsIDI3LCA3LCAyNTQsIDExMSwgMjcsIDcsIDI1NCwgMTEwLCAyNywgNywgMjU0LCAxMDksIDI3LCA3LCAyNTQsIAotICAgIDEwOCwgMjcsIDcsIDI1NCwgMTA3LCAyNywgNywgMjU0LCAxMDYsIDI3LCA3LCAyNTQsIDEwNSwgMjcsIDcsIDI1NCwgMTAzLCAKLSAgICAyNywgNywgMjU0LCAxMDIsIDI3LCA3LCAyNTQsIDEwMSwgMjcsIDcsIDI1NCwgMTAwLCAyNywgNywgMjU0LCA5OSwgMjcsIDcsIAotICAgIDI1NCwgOTgsIDI3LCA3LCAyNTQsIDk3LCAyNywgNywgMjU0LCA5NiwgMjcsIDcsIDI1NCwgOTUsIDI3LCA3LCAyNTQsIDk0LCAKLSAgICAyNywgNywgMjU0LCA5MywgMjcsIDcsIDI1NCwgOTIsIDI3LCA3LCAyNTQsIDkxLCAyNywgNywgMjU0LCA5MCwgMjcsIDcsIAotICAgIDI1NCwgODksIDI3LCA3LCAyNTQsIDg4LCAyNywgNywgMjU0LCA4NywgMjcsIDcsIDI1NCwgODYsIDI3LCA3LCAyNTQsIDg1LCAKLSAgICAyNywgNywgMjU0LCA4NCwgMjcsIDcsIDI1NCwgODMsIDI3LCA3LCAyNTQsIDgyLCAyNywgNywgMjU0LCA4MSwgMjcsIDcsIAotICAgIDI1NCwgODAsIDI3LCA3LCAyNTQsIDc5LCAyNywgNywgMjU0LCA3OCwgMjcsIDcsIDI1NCwgNzcsIDI3LCA3LCAyNTQsIDc2LCAKLSAgICAyNywgNywgMjU0LCA3NSwgMjcsIDcsIDI1NCwgNzQsIDI3LCA3LCAyNTQsIDczLCAyNywgNywgMjU0LCA3MiwgMjcsIDcsIAotICAgIDI1NCwgNzEsIDI3LCA3LCAyNTQsIDcwLCAyNywgNywgMjU0LCA2OSwgMjcsIDcsIDI1NCwgNjgsIDI3LCA3LCAyNTQsIDY3LCAKLSAgICAyNywgNywgMjU0LCA2NiwgMjcsIDcsIDI1NCwgNjUsIDI3LCA3LCAyNTQsIDY0LCAyNywgNywgMjU0LCA2MywgMjcsIDcsIAotICAgIDI1NCwgNjIsIDI3LCA3LCAyNTQsIDYxLCAyNywgNywgMjU0LCA2MCwgMjcsIDcsIDI1NCwgNTksIDI3LCA3LCAyNTQsIDU4LCAKLSAgICAyNywgNywgMjU0LCA1NywgMjcsIDcsIDI1NCwgNTYsIDI3LCA3LCAyNTQsIDU1LCAyNywgNywgMjU0LCA1NCwgMjcsIDcsIAotICAgIDI1NCwgNTMsIDI3LCA3LCAyNTQsIDUyLCAyNywgNywgMjU0LCA1MSwgMjcsIDcsIDI1NCwgNTAsIDI3LCA3LCAyNTQsIDQ5LCAKLSAgICAyNywgNywgMjU0LCA0OCwgMjcsIDcsIDI1NCwgNDcsIDI3LCA3LCAyNTQsIDQ2LCAyNywgNywgMjU0LCA0NSwgMjcsIDcsIAotICAgIDI1NCwgNDQsIDI3LCA3LCAyNTQsIDQzLCAyNywgNywgMjU0LCA0MiwgMjcsIDcsIDI1NCwgNDEsIDI3LCA3LCAyNTQsIDQwLCAKLSAgICAyNywgNywgMjU0LCAzOSwgMjcsIDcsIDI1NCwgMzgsIDI3LCA3LCAyNTQsIDM3LCAyNywgNywgMjU0LCAzNiwgMjcsIDcsIAotICAgIDI1NCwgMzUsIDI3LCA3LCAyNTQsIDMzLCAyNywgNywgMjU0LCAzMiwgMjcsIDcsIDI1NCwgMzEsIDI3LCA3LCAyNTQsIDMwLCAKLSAgICAyNywgNywgMjU0LCAyOSwgMjcsIDcsIDI1NCwgMjgsIDI3LCA3LCAyNTQsIDI3LCAyNywgNywgMjU0LCAyNiwgMjcsIDcsIAotICAgIDI1NCwgMjUsIDI3LCA3LCAyNTQsIDI0LCAyNywgNywgMjU0LCAyMywgMjcsIDcsIDI1NCwgMjIsIDI3LCA3LCAyNTQsIDIxLCAKLSAgICAyNywgNywgMjU0LCAyMCwgMjcsIDcsIDI1NCwgMTksIDI3LCA3LCAyNTQsIDE4LCAyNywgNywgMjU0LCAxNywgMjcsIDcsIAotICAgIDI1NCwgMTYsIDI3LCA3LCAyNTQsIDE1LCAyNywgNywgMjU0LCAxNCwgMjcsIDcsIDI1NCwgMTMsIDI3LCA3LCAyNTQsIDEyLCAKLSAgICAyNywgNywgMjU0LCAxMSwgMjcsIDcsIDI1NCwgMTAsIDI3LCA3LCAyNTQsIDksIDI3LCA3LCAyNTQsIDgsIDI3LCA3LCAyNTQsIAotICAgIDcsIDI3LCA3LCAyNTQsIDYsIDI3LCA3LCAyNTQsIDUsIDI3LCA3LCAyNTQsIDQsIDI3LCA3LCAyNTQsIDMsIDI3LCA3LCAKLSAgICAyNTQsIDIsIDI3LCA3LCAyNTQsIDEsIDI3LCA3LCAyNTQsIDAsIDI3LCA3LCAyNTMsIDI1NSwgMjcsIDcsIDI1MywgMjU0LCAKLSAgICAyNywgNywgMjUzLCAyNTMsIDI3LCA3LCAyNTMsIDI1MiwgMjcsIDcsIDI1MywgMjUxLCAyNywgNywgMjUzLCAyNTAsIDI3LCAKLSAgICA3LCAyNTMsIDI0OSwgMjcsIDcsIDI1MywgMjQ4LCAyNywgNywgMjUzLCAyNDcsIDI3LCA3LCAyNTMsIDI0NiwgMjcsIDcsIAotICAgIDI1MywgMjQ1LCAyNywgNywgMjUzLCAyNDQsIDI3LCA3LCAyNTMsIDI0MywgMjcsIDcsIDI1MywgMjQyLCAyNywgNywgMjUzLCAKLSAgICAyNDEsIDI3LCA3LCAyNTMsIDI0MCwgMjcsIDcsIDI1MywgMjM5LCAyNywgNywgMjUzLCAyMzgsIDI3LCA3LCAyNTMsIDIzNywgCi0gICAgMjcsIDcsIDI1MywgMjM2LCAyNywgNywgMjUzLCAyMzUsIDI3LCA3LCAyNTMsIDIzNCwgMjcsIDcsIDI1MywgMjMzLCAyNywgCi0gICAgNywgMjUzLCAyMzIsIDI3LCA3LCAyNTMsIDIzMSwgMjcsIDcsIDI1MywgMjMwLCAyNywgNywgMjUzLCAyMjksIDI3LCA3LCAKLSAgICAyNTMsIDIyOCwgMjcsIDcsIDI1MywgMjI3LCAyNywgNywgMjUzLCAyMjYsIDI3LCA3LCAyNTMsIDIyNSwgMjcsIDcsIDI1MywgCi0gICAgMjI0LCAyNywgNywgMjUzLCAyMjMsIDI3LCA3LCAyNTMsIDIyMiwgMjcsIDcsIDI1MywgMjIxLCAyNywgNywgMjUzLCAyMjAsIAotICAgIDI3LCA3LCAyNTMsIDIxOSwgMjcsIDcsIDI1MywgMjE4LCAyNywgNywgMjUzLCAyMTcsIDI3LCA3LCAyNTMsIDIxNiwgMjcsIAotICAgIDcsIDI1MywgMjE1LCAyNywgNywgMjUzLCAyMTQsIDI3LCA3LCAyNTMsIDIxMywgMjcsIDcsIDI1MywgMjEyLCAyNywgNywgCi0gICAgMjUzLCAyMTEsIDI3LCA3LCAyNTMsIDIxMCwgMjcsIDcsIDI1MywgMjA5LCAyNywgNywgMjUzLCAyMDgsIDI3LCA3LCAyNTMsIAotICAgIDIwNywgMjcsIDcsIDI1MywgMjA2LCAyNywgNywgMjUzLCAyMDUsIDI3LCA3LCAyNTMsIDIwNCwgMjcsIDcsIDI1MywgMjAzLCAKLSAgICAyNywgNywgMjUzLCAyMDIsIDI3LCA3LCAyNTMsIDIwMSwgMjcsIDcsIDI1MywgMjAwLCAyNywgNywgMjUzLCAxOTksIDI3LCAKLSAgICA3LCAyNTMsIDE5OCwgMjcsIDcsIDI1MywgMTk3LCAyNywgNywgMjUzLCAxOTYsIDI3LCA3LCAyNTMsIDE5NSwgMjcsIDcsIAotICAgIDI1MywgMTk0LCAyNywgNywgMjUzLCAxOTMsIDI3LCA3LCAyNTMsIDE5MiwgMjcsIDcsIDI1MywgMTkxLCAyNywgNywgMjUzLCAKLSAgICAxOTAsIDI3LCA3LCAyNTMsIDE4OSwgMjcsIDcsIDI1MywgMTg4LCAyNywgNywgMjUzLCAxODcsIDI3LCA3LCAyNTMsIDE4NiwgCi0gICAgMjcsIDcsIDI1MywgMTg1LCAyNywgNywgMjUzLCAxODQsIDI3LCA3LCAyNTMsIDE4MywgMjcsIDcsIDI1MywgMTgyLCAyNywgCi0gICAgNywgMjUzLCAxODEsIDI3LCA3LCAyNTMsIDE4MCwgMjcsIDcsIDI1MywgMTc5LCAyNywgNywgMjUzLCAxNzcsIDI3LCA3LCAKLSAgICAyNTMsIDE3NiwgMjcsIDcsIDI1MywgMTc1LCAyNywgNywgMjUzLCAxNzQsIDI3LCA3LCAyNTMsIDE3MywgMjcsIDcsIDI1MywgCi0gICAgMTcyLCAyNywgNywgMjUzLCAxNzEsIDI3LCA3LCAyNTMsIDE3MCwgMjcsIDcsIDI1MywgMTY5LCAyNywgNywgMjUzLCAxNjgsIAotICAgIDI3LCA3LCAyNTMsIDE2NywgMjcsIDcsIDI1MywgMTY0LCAyNywgNywgMjUzLCAxNjMsIDI3LCA3LCAyNTMsIDE2MiwgMjcsIAotICAgIDcsIDI1MywgMTYxLCAyNywgNywgMjUzLCAxNTcsIDI3LCA3LCAyNTMsIDE1NiwgMjcsIDcsIDI1MywgMTU1LCAyNywgNywgCi0gICAgMjUzLCAxNTQsIDI3LCA3LCAyNTMsIDE1MywgMjcsIDcsIDI1MywgMTUyLCAyNywgNywgMjUzLCAxNTEsIDI3LCA3LCAyNTMsIAotICAgIDE1MCwgMjcsIDcsIDI1MywgMTQ5LCAyNywgNywgMjUzLCAxNDgsIDI3LCA3LCAyNTMsIDE0NywgMjcsIDcsIDI1MywgMTQ2LCAKLSAgICAyNywgNywgMjUzLCAxNDUsIDI3LCA3LCAyNTMsIDE0NCwgMjcsIDcsIDI1MywgMTQzLCAyNywgNywgMjUzLCAxNDIsIDI3LCAKLSAgICA3LCAyNTMsIDE0MSwgMjcsIDcsIDI1MywgMTQwLCAyNywgNywgMjUzLCAxMzksIDI3LCA3LCAyNTMsIDEzNywgMjcsIDcsIAotICAgIDI1MywgMTM2LCAyNywgNywgMjUzLCAxMzUsIDI3LCA3LCAyNTMsIDEzNCwgMjcsIDcsIDI1MywgMTMzLCAyNywgNywgMjUzLCAKLSAgICAxMzIsIDI3LCA3LCAyNTMsIDEzMSwgMjcsIDcsIDI1MywgMTMwLCAyNywgNywgMjUzLCAxMjksIDI3LCA3LCAyNTMsIDEyOCwgCi0gICAgMjcsIDcsIDI1MywgMTI3LCAyNywgNywgMjUzLCAxMjYsIDI3LCA3LCAyNTMsIDEyNSwgMjcsIDcsIDI1MywgMTI0LCAyNywgCi0gICAgNywgMjUzLCAxMjMsIDI3LCA3LCAyNTMsIDEyMiwgMjcsIDcsIDI1MywgMTIxLCAyNywgNywgMjUzLCAxMjAsIDI3LCA3LCAKLSAgICAyNTMsIDExOSwgMjcsIDcsIDI1MywgMTE4LCAyNywgNywgMjUzLCAxMTcsIDI3LCA3LCAyNTMsIDExNiwgMjcsIDcsIDI1MywgCi0gICAgMTE1LCAyNywgNywgMjUzLCAxMTQsIDI3LCA3LCAyNTMsIDExMywgMjcsIDcsIDI1MywgMTEyLCAyNywgNywgMjUzLCAxMTEsIAotICAgIDI3LCA3LCAyNTMsIDExMCwgMjcsIDcsIDI1MywgMTA5LCAyNywgNywgMjUzLCAxMDgsIDI3LCA3LCAyNTMsIDEwNywgMjcsIAotICAgIDcsIDI1MywgMTA2LCAyNywgNywgMjUzLCAxMDUsIDI3LCA3LCAyNTMsIDEwNCwgMjcsIDcsIDI1MywgMTAzLCAyNywgNywgCi0gICAgMjUzLCAxMDIsIDI3LCA3LCAyNTMsIDEwMSwgMjcsIDcsIDI1MywgMTAwLCAyNywgNywgMjUzLCA5OSwgMjcsIDcsIDI1MywgCi0gICAgOTgsIDI3LCA3LCAyNTMsIDk3LCAyNywgNywgMjUzLCA5NiwgMjcsIDcsIDI1MywgOTUsIDI3LCA3LCAyNTMsIDk0LCAyNywgCi0gICAgNywgMjUzLCA5MywgMjcsIDcsIDI1MywgOTIsIDI3LCA3LCAyNTMsIDkxLCAyNywgNywgMjUzLCA5MCwgMjcsIDcsIDI1MywgCi0gICAgODksIDI3LCA3LCAyNTMsIDg4LCAyNywgNywgMjUzLCA4NywgMjcsIDcsIDI1MywgODYsIDI3LCA3LCAyNTMsIDg1LCAyNywgCi0gICAgNywgMjUzLCA4NCwgMjcsIDcsIDI1MywgODMsIDI3LCA3LCAyNTMsIDgyLCAyNywgNywgMjUzLCA4MSwgMjcsIDcsIDI1MywgCi0gICAgODAsIDI3LCA3LCAyNTMsIDc5LCAyNywgNywgMjUzLCA3OCwgMjcsIDcsIDI1MywgNzcsIDI3LCA3LCAyNTMsIDc2LCAyMTYsIAotICAgIDIyMSwgMjE5LCAyNDUsIDIxNiwgNTcsIDI3LCA3LCAyNTMsIDc1LCAyNywgNywgMjUzLCA3NCwgMjcsIDcsIDI1MywgNzMsIAotICAgIDI3LCA3LCAyNTMsIDcyLCAyNywgNywgMjUzLCA3MSwgMjcsIDcsIDI1MywgNzAsIDI3LCA3LCAyNTMsIDY5LCAyNywgNywgCi0gICAgMjUzLCA2OCwgMjcsIDcsIDI1MywgNjcsIDI3LCA3LCAyNTMsIDY2LCAyNywgNywgMjUzLCA2NSwgMjcsIDcsIDI1MywgNjQsIAotICAgIDE5OSwgMjcsIDcsIDI1MywgNjMsIDI3LCA3LCAyNTMsIDYyLCAyNywgNywgMjUzLCA2MSwgMjcsIDcsIDI1MywgNjAsIDI3LCAKLSAgICA3LCAyNTMsIDU5LCAyNywgNywgMjUzLCA1OCwgMjcsIDcsIDI1MywgNTcsIDI3LCA3LCAyNTMsIDU1LCAyNywgNywgMjUzLCAKLSAgICA1MywgMjcsIDcsIDI1MywgNTEsIDI3LCA3LCAyNTMsIDQ5LCAyNywgNywgMjUzLCA0NywgMjcsIDcsIDI1MywgNDUsIDI3LCAKLSAgICA3LCAyNTMsIDQzLCAyNywgNywgMjUzLCA0MSwgMjcsIDcsIDI1MywgMzksIDI3LCA3LCAyNTMsIDM3LCAyNDgsIDE0MiwgCi0gICAgMjI3LCAzNiwgODIsIDI3LCA3LCAyNTMsIDM1LCAyNDEsIDg0LCAyMjcsIDM2LCA4MiwgMjcsIDcsIDI1MywgMzQsIDI3LCA3LCAKLSAgICAyNTMsIDMyLCAyNywgNywgMjUzLCAzMCwgMjcsIDcsIDI1MywgMjgsIDI3LCA3LCAyNTMsIDI2LCAyNywgNywgMjUzLCAyNCwgCi0gICAgMjcsIDcsIDI1MywgMjIsIDI3LCA3LCAyNTMsIDIwLCAyNywgNywgMjUzLCAxOCwgMjcsIDcsIDI1MywgMTcsIDI3LCA3LCAKLSAgICAyNTMsIDE2LCAyNywgNywgMjUzLCAxNSwgMjcsIDcsIDI1MywgMTQsIDI3LCA3LCAyNTMsIDEzLCAyNywgNywgMjUzLCAxMiwgCi0gICAgMjcsIDcsIDI1MywgMTEsIDI3LCA3LCAyNTMsIDEwLCAyNywgNywgMjUzLCA5LCAyNywgNywgMjUzLCA4LCAyNywgNywgMjUzLCAKLSAgICA3LCAyNywgNywgMjUzLCA2LCAyNywgNywgMjUzLCA1LCAyNywgNywgMjUzLCA0LCAyNywgNywgMjUzLCAzLCAyNywgNywgCi0gICAgMjUzLCAyLCAyNywgNywgMjUzLCAxLCAyNywgNywgMjUzLCAwLCAyNywgNywgMjUyLCAyNTUsIDI3LCA3LCAyNTIsIDI1NCwgCi0gICAgMjcsIDcsIDI1MiwgMjUzLCAyNywgNywgMjUyLCAyNTIsIDI3LCA3LCAyNTIsIDI1MSwgMjcsIDcsIDI1MiwgMjUwLCAyNywgCi0gICAgNywgMjUyLCAyNDksIDI3LCA3LCAyNTIsIDI0OCwgMjcsIDcsIDI1MiwgMjQ3LCAyNywgNywgMjUyLCAyNDYsIDI3LCA3LCAKLSAgICAyNTIsIDI0NSwgMjcsIDcsIDI1MiwgMjQ0LCAyNywgNywgMjUyLCAyNDMsIDI3LCA3LCAyNTIsIDI0MiwgMjcsIDcsIDI1MiwgCi0gICAgMjQxLCAyNywgNywgMjUyLCAyNDAsIDI3LCA3LCAyNTIsIDIzOSwgMjcsIDcsIDI1MiwgMjM4LCAyNywgNywgMjUyLCAyMzcsIAotICAgIDI3LCA3LCAyNTIsIDIzNiwgMjcsIDcsIDI1MiwgMjM1LCAyNywgNywgMjUyLCAyMzQsIDI3LCA3LCAyNTIsIDIzMywgMjcsIAotICAgIDcsIDI1MiwgMjMyLCAyNywgNywgMjUyLCAyMzEsIDI3LCA3LCAyNTIsIDIzMCwgMjcsIDcsIDI1MiwgMjI5LCAyNywgNywgCi0gICAgMjUyLCAyMjgsIDI3LCA3LCAyNTIsIDIyNywgMjcsIDcsIDI1MiwgMjI2LCAyNywgNywgMjUyLCAyMjUsIDI3LCA3LCAyNTIsIAotICAgIDIyNCwgMjcsIDcsIDI1MiwgMjIzLCAyNywgNywgMjUyLCAyMjIsIDI3LCA3LCAyNTIsIDIyMSwgMjcsIDcsIDI1MiwgMjIwLCAKLSAgICAyNywgNywgMjUyLCAyMTksIDI3LCA3LCAyNTIsIDIxOCwgMjcsIDcsIDI1MiwgMjE3LCAyNywgNywgMjUyLCAyMTYsIDI3LCAKLSAgICA3LCAyNTIsIDIxNSwgMjcsIDcsIDI1MiwgMjE0LCAyNywgNywgMjUyLCAyMTMsIDI3LCA3LCAyNTIsIDIxMiwgMjcsIDcsIAotICAgIDI1MiwgMjExLCAyNywgNywgMjUyLCAyMTAsIDI3LCA3LCAyNTIsIDIwOSwgMjcsIDcsIDI1MiwgMjA4LCAyNywgNywgMjUyLCAKLSAgICAyMDcsIDI3LCA3LCAyNTIsIDIwNiwgMjcsIDcsIDI1MiwgMjA1LCAyNywgNywgMjUyLCAyMDQsIDI3LCA3LCAyNTIsIDIwMywgCi0gICAgMjcsIDcsIDI1MiwgMjAyLCAyNywgNywgMjUyLCAyMDEsIDI3LCA3LCAyNTIsIDIwMCwgMjcsIDcsIDI1MiwgMTk5LCAyNywgCi0gICAgNywgMjUyLCAxOTgsIDI3LCA3LCAyNTIsIDE5NywgMjcsIDcsIDI1MiwgMTk2LCAyNywgNywgMjUyLCAxOTUsIDI3LCA3LCAKLSAgICAyNTIsIDE5NCwgMjcsIDcsIDI1MiwgMTkzLCAyNywgNywgMjUyLCAxOTIsIDI3LCA3LCAyNTIsIDE5MSwgMjcsIDcsIDI1MiwgCi0gICAgMTkwLCAyNywgNywgMjUyLCAxODksIDI3LCA3LCAyNTIsIDE4OCwgMjcsIDcsIDI1MiwgMTg3LCAyNywgNywgMjUyLCAxODYsIAotICAgIDI3LCA3LCAyNTIsIDE4NSwgMjcsIDcsIDI1MiwgMTg0LCAyNywgNywgMjUyLCAxODMsIDI3LCA3LCAyNTIsIDE4MiwgMjcsIAotICAgIDcsIDI1MiwgMTgxLCAyNywgNywgMjUyLCAxODAsIDI3LCA3LCAyNTIsIDE3OSwgMjcsIDcsIDI1MiwgMTc4LCAyNywgNywgCi0gICAgMjUyLCAxNzcsIDI3LCA3LCAyNTIsIDE3NiwgMjcsIDcsIDI1MiwgMTc1LCAyNywgNywgMjUyLCAxNzQsIDI3LCA3LCAyNTIsIAotICAgIDE3MywgMjcsIDcsIDI1MiwgMTcyLCAyNywgNywgMjUyLCAxNzEsIDI3LCA3LCAyNTIsIDE3MCwgMjcsIDcsIDI1MiwgMTY5LCAKLSAgICAyNywgNywgMjUyLCAxNjgsIDI3LCA3LCAyNTIsIDE2NywgMjcsIDcsIDI1MiwgMTY2LCAyNywgNywgMjUyLCAxNjUsIDI3LCAKLSAgICA3LCAyNTIsIDE2NCwgMjQsIDEsIDIxOCwgMTk4LCAyMjIsIDEzNiwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjM4LCAKLSAgICAxOTgsIDIzOSwgMTc4LCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIyNCwgMTk4LCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMjQsIDE5OCwgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAxMDcsIDIyNCwgMTk3LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTk1LCAyNCwgMSwgMjE4LCAxOTgsIDIwOCwgMTk5LCAyMjQsIDE5NywgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMjAsIDIxNSwgMjI0LCAxOTcsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCAyNTQsIDIxOSwgMTY5LCAyMjIsIAotICAgIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgNDcsIDIxOSwgMTY5LCAyMjIsIDMzLCAyMTgsIDExNSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMTgsIDQ3LCAyMTksIDE2OSwgMjIyLCAzMywgMjE4LCAxMTYsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTYsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA3LCAyMDQsIDIyNSwgMTU3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMTk3LCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyNSwgMTUzLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTExLCAyNCwgMSwgMjE4LCAxOTgsIDIyMywgMTg2LCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIxMywgMTE0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgOTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNjMsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMCwgMTc5LCAyNCwgMSwgMjE4LCAxOTgsIAotICAgIDIyMiwgMTM1LCAyNCwgMSwgMjE4LCAxOTgsIDIyOCwgMTAsIDI0LCAxLCAyMTgsIDE5OCwgMjI3LCAxNzYsIDIyOCwgMTc1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAxLCAyMjQsIDIwNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE2MCwgMjQsIDEsIAotICAgIDIxOCwgMTk4LCAyMTksIDYyLCAyNCwgMSwgMjE4LCAxOTgsIDIzOCwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxOSwgMTI1LCAKLSAgICAyNCwgMSwgMjE4LCAxOTgsIDIyNCwgNTUsIDIyMiwgMTcwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMCwgMTk2LCAyMjQsIDIwOCwgCi0gICAgMjQsIDEsIDIxOCwgMTk4LCAxMDYsIDIwMiwgMTg4LCAyMjMsIDEwMCwgMjQsIDEsIDIxOCwgMTk4LCAyMzgsIDEwMSwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjEsIDEwMSwgMjIxLCAxMDIsIDI0LCAxLCAyMTgsIDE5OCwgMjEyLCA5MSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDE5MCwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDIxMSwgMjQsIDEsIDIxOCwgMTk4LCAyMjQsIDMxLCAyNCwgCi0gICAgMSwgMjE4LCAxOTgsIDIzMCwgMjEsIDI0LCAxLCAyMTgsIDE5OCwgMjE5LCAxNjksIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgMjYsIDIyNywgMjIzLCAyNCwgMSwgMjE4LCAxOTgsIDIxOCwgMjE5LCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgCi0gICAgMTU0LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNzQsIDI0LCAxLCAyMTgsIDE5OCwgMjE3LCAxNzIsIDI0LCAxLCAyMTgsIAotICAgIDE5OCwgMjA3LCAyMDEsIDI0LCAxLCAyMTgsIDE5OCwgMjI2LCAyMzUsIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNTEsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjA5LCAxMTcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxNTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI5LCAKLSAgICAxNzAsIDI0LCAxLCAyMTgsIDE5OCwgMjIzLCAyMiwgMjQsIDEsIDIxOCwgMTk4LCAyMjgsIDE4OCwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjQsIDMyLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMTkxLCAyNCwgMSwgMjE4LCAxOTgsIDIyNywgMjksIDI0LCAxLCAKLSAgICAyMTgsIDE5OCwgMjM5LCAyNDYsIDI0LCAxLCAyMTgsIDE5OCwgMjE1LCAyMTEsIDI0LCAxLCAyMTgsIDE5OCwgMjI4LCAyMzMsIAotICAgIDI0LCAxLCAyMTgsIDE5OCwgMjExLCAyNDcsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCAxMDcsIDIxOCwgMTU3LCAyNCwgMSwgCi0gICAgMjE4LCAxOTgsIDIxMiwgMjQ3LCAyNCwgMSwgMjE4LCAxOTgsIDIyMSwgMTAwLCAyNCwgMSwgMjE4LCAxOTgsIDIxMiwgMjMwLCAKLSAgICAyMjEsIDExMSwgMjAyLCAxOTYsIDI0LCAxLCAyMTgsIDE5OCwgMjIwLCAyMzcsIDIyNCwgNTEsIDI0LCAxLCAyMTgsIDE5OCwgCi0gICAgMjE5LCAxNjQsIDI0LCAxLCAyMTgsIDE5OCwgMjIyLCAyLCAyNCwgMSwgMjE4LCAxOTgsIDIwNiwgMjMxLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMiwgMTczLCAyNCwgMSwgMjE4LCAxOTgsIDIyNSwgMTUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgNDQsIDI0LCAKLSAgICAxLCAyMTgsIDE5OCwgMjI1LCA0OSwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI1MSwgMjQsIDEsIDIxOCwgMTk4LCAyMDksIAotICAgIDEyMSwgMjQsIDEsIDIxOCwgMTk4LCAyMTEsIDI0NCwgMjQsIDEsIDIxOCwgMTk4LCAyMTksIDE2NSwgMjQsIDEsIDIxOCwgCi0gICAgMTk4LCAyMjEsIDExNSwgMjQsIDEsIDIxOCwgMTk4LCAyMjUsIDE1OCwgMjQsIDEsIDIxOCwgMTk4LCAyMjAsIDI0OCwgMjQsIAotICAgIDEsIDIxOCwgMTk4LCAyMjksIDI0MSwgMjQsIDEsIDIxOCwgMTk4LCAyMjEsIDExOCwgMjQsIDEsIDIxOCwgMTk4LCAyMDYsIAotICAgIDUwLCAyNCwgMSwgMjE4LCAxOTgsIDIyNiwgMjM5LCAyNCwgMSwgMjE4LCAxOTgsIDIyMiwgMjMwLCAyNCwgMSwgMjE4LCAKLSAgICAxOTgsIDIyMywgNzUsIDI0LCAxLCAyMTgsIDE5OCwgMjI1LCA0OCwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDExMywgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMDcsIDIwNCwgMjI1LCAxNTUsIDI0LCAxLCAyMTgsIDE5NywgMjEyLCAxNTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEzLCAxMTgsIDIwNywgMjAzLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMzEsIDIyMSwgOTcsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCA1NSwgMjI1LCAxNTksIDI0LCAxLCAyMTgsIDE5NywgMjI5LCA5MiwgMjQsIDEsIDIxOCwgMTk3LCAyMDMsIDE4LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNTAsIDI0LCAxLCAyMTgsIDE5NywgMjMwLCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgCi0gICAgMTksIDI0LCAxLCAyMTgsIDE5NywgMjAzLCA5NiwgMjI3LCAyMjMsIDI0LCAxLCAyMTgsIDE5NywgMjI4LCAyOSwgMjIxLCAKLSAgICAxMTEsIDIyMSwgNiwgMjQsIDEsIDIxOCwgMTk3LCAyMjEsIDk0LCAyMTMsIDE3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgCi0gICAgMjQ5LCAyMjIsIDQ3LCAyNCwgMSwgMjE4LCAxOTcsIDIzOCwgOTgsIDI0LCAxLCAyMTgsIDE5NywgMjE4LCAxMDUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjA3LCAyMDQsIDIyMSwgMTA5LCAyNCwgMSwgMjE4LCAxOTcsIDIxMywgMjIsIDIyMiwgNDIsIDI0LCAxLCAKLSAgICAyMTgsIDE5NywgMjEzLCAxOCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDE5OCwgMjA5LCAxMjAsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjI1LCAzNywgMjI1LCA1MSwgMjQsIDEsIDIxOCwgMTk3LCAyMjAsIDI0OSwgMjIxLCA5NywgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyMjksIDE1OSwgMjQsIDEsIDIxOCwgMTk3LCAyMzgsIDk5LCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTU1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyOCwgMTA3LCAyNCwgMSwgMjE4LCAxOTcsIDIxOSwgNjUsIDI0LCAxLCAyMTgsIDE5NywgMjA1LCAyMzcsIAotICAgIDI0LCAxLCAyMTgsIDE5NywgMjIyLCAxMzcsIDIyMywgMTg0LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTcyLCAyMjUsIDMzLCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIwMywgMjE1LCAyNCwgMSwgMjE4LCAxOTcsIDIxNSwgMTIsIDI0LCAxLCAyMTgsIDE5NywgCi0gICAgMjEwLCAxNCwgMjQsIDEsIDIxOCwgMTk3LCAyMjQsIDIxMCwgMjQsIDEsIDIxOCwgMTk3LCAyMjIsIDE1NiwgMjQsIDEsIAotICAgIDIxOCwgMTk3LCAyMjIsIDE1NywgMjI4LCA3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNCwgMjAwLCAyNCwgMSwgMjE4LCAxOTcsIAotICAgIDIxMCwgMjMwLCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgNDEsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAzNiwgMjQsIDEsIDIxOCwgCi0gICAgMTk3LCAyMjEsIDksIDI0LCAxLCAyMTgsIDE5NywgMjE3LCAxNzYsIDI0LCAxLCAyMTgsIDE5NywgMjI0LCAyMDksIDIyMiwgCi0gICAgMTc0LCAyNCwgMSwgMjE4LCAxOTcsIDI0MCwgMzEsIDI0LCAxLCAyMTgsIDE5NywgMjI1LCAyOCwgMjQsIDEsIDIxOCwgMTk3LCAKLSAgICAyNDAsIDUzLCAyNCwgMSwgMjE4LCAxOTcsIDIyOSwgMTY3LCAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDM2LCAKLSAgICAyNCwgMSwgMjE4LCAxOTcsIDIyNSwgMTc3LCAyMjIsIDEyLCAyNCwgMSwgMjE4LCAxOTcsIDIyNywgMTc1LCAyNCwgMSwgCi0gICAgMjE4LCAxOTcsIDIyMiwgMTgwLCAyNCwgMSwgMjE4LCAxOTcsIDIyMSwgMTIwLCAyNCwgMSwgMjE4LCAxOTcsIDE5MiwgMjQsIAotICAgIDEsIDIxOCwgMTk3LCAyMjksIDc3LCAyNCwgMSwgMjE4LCAxOTcsIDIyMiwgMTI1LCAyNCwgMSwgMTY4LCAyMjIsIDEzNiwgCi0gICAgMjI1LCAxNTcsIDI0LCAxLCAxNjgsIDIyMCwgMjE0LCAyNCwgMSwgMTY4LCAyMDIsIDE5NiwgMjQsIDEsIDE2OCwgMjA0LCAKLSAgICA5NSwgMjQsIDEsIDE2OCwgMjIyLCAxNzMsIDI0LCAxLCAxNjgsIDIyMywgMTQsIDI0LCAxLCAxNjgsIDIyMiwgMTQzLCAyNCwgCi0gICAgMSwgMTY4LCAyMzgsIDEwOCwgMjQsIDEsIDE2OCwgMjI1LCA0NSwgMjQsIDEsIDE2OCwgMjM4LCAyMDUsIDI0LCAxLCAxNjgsIAotICAgIDIyMCwgMjM5LCAyMjQsIDkxLCAyMjQsIDIxMiwgMjQsIDEsIDE2OCwgMjIxLCA4OSwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MiwgMjQsIDEsIDE2OCwgMjE4LCAxMTEsIDI0LCAxLCAxNjgsIDIyMiwgMjU1LCAyNCwgMSwgMTY4LCAyMjUsIDUzLCAKLSAgICAyNDcsIDg4LCAyNCwgMSwgMTY4LCAyMjksIDE1NywgMjQsIDEsIDE2OCwgMjM4LCAxMDksIDI0LCAxLCAxNjgsIDIyOSwgCi0gICAgMTY0LCAyNCwgMSwgMTY4LCAyMDIsIDIxNCwgMjIzLCAyMTUsIDI0LCAxLCAxNjgsIDIyMCwgMjA4LCAyNCwgMSwgMTY4LCAKLSAgICAyMjUsIDMwLCAyNCwgMSwgMTY4LCAyMjEsIDExOSwgMjQsIDEsIDE2OCwgMjI1LCAzNiwgMjQsIDEsIDE2OCwgMjAzLCAxOSwgCi0gICAgMjQsIDEsIDE2OCwgMjI4LCAyNDEsIDI0LCAxLCAxNjgsIDIzMCwgNDEsIDI0LCAxLCAxNjgsIDIxMywgMTEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjMsIDgsIDI0LCAxLCAxNjgsIDIxMCwgMTIsIDI0LCAxLCAxNjgsIDIyMiwgMTYsIDI0LCAxLCAxNjgsIDIwOCwgCi0gICAgMTk5LCAyMDIsIDE5OSwgMjQsIDEsIDE2OCwgMjExLCA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MywgMjIxLCA2LCAyNCwgMSwgCi0gICAgMTY4LCAyMDUsIDIzNiwgMjQsIDEsIDE2OCwgMjIzLCA3OCwgMjQsIDEsIDE2OCwgMjI1LCAxNzcsIDIyOSwgMTY2LCAyNCwgCi0gICAgMSwgMTY4LCAyMjEsIDEwMiwgMjQsIDEsIDE2OCwgMjIyLCAxNTgsIDI0LCAxLCAxNjgsIDIyOCwgMTEsIDI0LCAxLCAxNjgsIAotICAgIDIyNSwgMzgsIDI0LCAxLCAxNjgsIDIyNCwgMTg5LCAyNCwgMSwgMTY4LCAyMjEsIDk2LCAyNCwgMSwgMTY4LCAyMDksIDExNiwgCi0gICAgMjQsIDEsIDE2OCwgMjIyLCAxNjAsIDI0LCAxLCAxNjgsIDIzOSwgMTA2LCAyNCwgMSwgMTY4LCAyMjMsIDEzLCAyNCwgMSwgCi0gICAgMTY4LCAyMjEsIDEyMSwgMjQsIDEsIDE2OCwgMjIxLCAxMTcsIDI0LCAxLCAxNjgsIDI0NywgMTY5LCAyNCwgMSwgMTY4LCAKLSAgICAyMDUsIDIzOCwgMjQsIDEsIDE2OCwgMjI1LCA0MywgMjQsIDEsIDE2OCwgMjE1LCAxNDUsIDI0LCAxLCAxNjgsIDIyMiwgNDYsIAotICAgIDI0LCAxLCAxNjgsIDIyOCwgMjgsIDI0LCAxLCAxNjgsIDIwOCwgMTk2LCAyNCwgMSwgMTY4LCAyMjEsIDEwMywgMjIyLCAKLSAgICAxMjUsIDI0LCAxLCAxNjgsIDIyMiwgMzgsIDI0LCAxLCAxNjgsIDIyOSwgMTcwLCAyNCwgMSwgMTY4LCAyMjIsIDE2NSwgMjQsIAotICAgIDEsIDE2OCwgMjI1LCAxNTAsIDI0LCAxLCAxNjgsIDIyNSwgMzEsIDI0LCAxLCAxNjgsIDIyNiwgMjM5LCAyNCwgMSwgMTY4LCAKLSAgICAyMjgsIDE3NSwgMjQsIDEsIDE2OCwgMjIyLCA0NCwgMjQsIDEsIDE2OCwgMjIyLCAxMjUsIDI0LCAxLCAxNjgsIDIwMywgCi0gICAgMjA1LCAyNCwgMSwgMTY4LCAyMjIsIDE2MSwgMjQsIDEsIDE2OCwgMjIxLCAxMDYsIDI0LCAxLCAxNjgsIDIyMSwgOTgsIDI0LCAKLSAgICAxLCAxNjgsIDIyOCwgMTkwLCAyMjIsIDIsIDI0LCAxLCAxNjgsIDIyMSwgMTA0LCAyNCwgMSwgMTY4LCAyMjMsIDIxLCAyNCwgCi0gICAgMSwgMTY4LCAyMjUsIDE3NywgMjIxLCAxMDksIDI0LCAxLCAxNjgsIDIwMywgMTEwLCAyNCwgMSwgMTY4LCAyMjMsIDIwLCAKLSAgICAyNCwgMSwgMTY4LCAyMTIsIDE5NCwgMjQsIDEsIDE2OCwgMjEzLCAxMTYsIDI0LCAxLCAxNjgsIDIyNSwgMzksIDI0LCAxLCAKLSAgICAxNjgsIDIyNSwgMTU3LCAyNCwgMSwgMTY4LCAyMjUsIDQ5LCAyNCwgMSwgMTY4LCAyMjksIDE1OCwgMjQsIDEsIDE2OCwgCi0gICAgMjI1LCA0MCwgMjQsIDEsIDE2OCwgMjI5LCAxNjIsIDI0LCAxLCAxNjgsIDIyNSwgNTMsIDIxOCwgMTYyLCAyNCwgMSwgMTY4LCAKLSAgICAyMDIsIDE3OSwgMjQsIDEsIDE2OCwgMjIyLCAzNCwgMjQsIDEsIDE2OCwgMjI0LCAxNDQsIDI0LCAxLCAxNjgsIDIyMywgCi0gICAgMjQ0LCAyNCwgMSwgMTY4LCAyMTIsIDI1MCwgMjQsIDEsIDE2OCwgMjI5LCAxODEsIDIyNywgMjQ2LCAyNCwgMSwgMTY4LCAKLSAgICAyMjksIDE4MSwgMjQwLCA2NiwgMjQsIDEsIDE2OCwgMjIyLCAxOTUsIDI0LCAxLCAxNjgsIDIyMywgNzUsIDI0LCAxLCAxNjgsIAotICAgIDIyNywgOTYsIDI0LCAxLCAxNjgsIDIxOCwgMTIzLCAyNCwgMSwgMTY4LCAyMTksIDksIDI0LCAxLCAxNjgsIDIwOSwgMTMyLCAKLSAgICAyNCwgMSwgMTM0LCAyMjUsIDI5LCAyNCwgMSwgMTM0LCAyMDQsIDkzLCAyNCwgMSwgMTM0LCAyMjIsIDMyLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDE5NywgMjQsIDEsIDEzNCwgMjIyLCAzMCwgMjQsIDEsIDEzNCwgMjI3LCAxNDEsIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMzUsIDI0LCAxLCAxMzQsIDIyMSwgMTE2LCAyNCwgMSwgMTM0LCAyMjIsIDE3OSwgMjQsIDEsIDEzNCwgMjIxLCA2LCAKLSAgICAyNCwgMSwgMTM0LCAyMDMsIDIxNiwgMjQsIDEsIDEzNCwgMjIyLCAxMzMsIDI0LCAxLCAxMzQsIDIxMywgNDEsIDI0LCAxLCAKLSAgICAxMzQsIDIyMiwgMTQ0LCAyNCwgMSwgMTM0LCAyMjksIDE2NSwgMjQsIDEsIDEzNCwgMjA5LCAxMTgsIDI0LCAxLCAxMzQsIAotICAgIDIxMywgMjAsIDI0LCAxLCAxMzQsIDIyMiwgNDMsIDI0LCAxLCAxMzQsIDIxMCwgMjMwLCAyNCwgMSwgMTM0LCAyMjksIDE3MCwgCi0gICAgMjQsIDEsIDEzNCwgMjAzLCA5OCwgMjQsIDEsIDEzNCwgMjI4LCAxOTEsIDI0LCAxLCAxMzQsIDIxNCwgMjMzLCAyNCwgMSwgCi0gICAgMTM0LCAyMjQsIDIwMiwgMjQsIDEsIDEzNCwgMjIzLCAxMiwgMjQsIDEsIDEzNCwgMjI1LCAxMjUsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjA4LCAyNCwgMSwgMTM0LCAyMTMsIDExNSwgMjQsIDEsIDEzNCwgMjAzLCA0MiwgMjQsIDEsIDEzNCwgMjIyLCAzNywgCi0gICAgMjQsIDEsIDEzNCwgMjI5LCAxNjEsIDIyNSwgMzIsIDI0LCAxLCAxMzQsIDIyMiwgMTQwLCAyNCwgMSwgMTM0LCAyMDcsIAotICAgIDIwMywgMjQsIDEsIDEzNCwgMjM4LCAxMTgsIDI0LCAxLCAxMzQsIDIyMiwgMTMwLCAyNCwgMSwgMTM0LCAyNDAsIDMyLCAyNCwgCi0gICAgMSwgMTM0LCAyMjMsIDE2LCAyNCwgMSwgMTM0LCAyMjQsIDE4MSwgMjQsIDEsIDEzNCwgMjI3LCAxNjksIDI0LCAxLCAxMzQsIAotICAgIDIyMiwgMjU0LCAyNCwgMSwgMTM0LCAyMjQsIDUwLCAyNCwgMSwgMTM0LCAyMjQsIDE4NSwgMjQsIDEsIDEzNCwgMjE3LCAKLSAgICAxNTYsIDI0LCAxLCAxMzQsIDIyNCwgMTgzLCAyNCwgMSwgMTM0LCAyMjQsIDE5OSwgMjQsIDEsIDEzNCwgMjI2LCAyMjIsIAotICAgIDI0LCAxLCAxMzQsIDIyMSwgMTA4LCAyNCwgMSwgMTM0LCAyMjUsIDUyLCAyNCwgMSwgMTM0LCAyMjgsIDE2NSwgMjQsIDEsIAotICAgIDEzNCwgMjIwLCAyNTEsIDI0LCAxLCAxMzQsIDIwOSwgMTIxLCAyNCwgMSwgMTM0LCAyMTEsIDI0NCwgMjQsIDEsIDEzNCwgCi0gICAgMjAyLCAxNzksIDI0LCAxLCAxMzQsIDIyOSwgMTYyLCAyNCwgMSwgMTM0LCAyMTYsIDIwMSwgMjQsIDEsIDEzNCwgMjA5LCAKLSAgICAxNzUsIDI0LCAxLCAxMzQsIDIyMiwgMTQxLCAyNCwgMSwgMTM0LCAyMjQsIDIwNCwgMjQsIDEsIDEzNCwgMjIxLCAxMDcsIAotICAgIDI0LCAxLCAxMzQsIDIyOSwgMTYwLCAyNCwgMSwgMTM0LCAyMTgsIDExNywgMjQsIDEsIDEzNCwgMjE4LCAyMTMsIDI0LCAxLCAKLSAgICAxMzQsIDIyMCwgMjI1LCAyNCwgMSwgMTM0LCAyMjcsIDE3NSwgMjQsIDEsIDEzNCwgMjIyLCAxODAsIDI0LCAxLCAxMzQsIAotICAgIDIyNCwgMjAxLCAyNCwgMSwgMTM0LCAyMjIsIDE1MywgMjQsIDEsIDEzNCwgMjAyLCAxOTMsIDI0LCAxLCAxMzQsIDIxOSwgCi0gICAgOTYsIDI0LCAxLCAxMzQsIDIwMiwgMTkyLCAyNCwgMSwgMTM0LCAyMjMsIDIxLCAyNCwgMSwgMTM0LCAyMjEsIDk3LCAyNCwgCi0gICAgMSwgMTM0LCAyMTEsIDcsIDI0LCAxLCAxMzQsIDIyOCwgMTk1LCAyNCwgMSwgMTM0LCAyMjIsIDE2OSwgMjQsIDEsIDEzNCwgCi0gICAgMjIyLCAxMzgsIDI0LCAxLCAxMzQsIDIwNywgMTg1LCAyNCwgMSwgMTM0LCAyMjQsIDIxMiwgMjQsIDEsIDEzNCwgMjI4LCAKLSAgICAxODUsIDI0LCAxLCAxMzQsIDIyMSwgMTA1LCAyNCwgMSwgMTM0LCAyMDksIDExOSwgMjQsIDEsIDEzNCwgMjI1LCAxNTIsIAotICAgIDI0LCAxLCAxMzQsIDIyMiwgMTc4LCAyNCwgMSwgMTM0LCAyMjcsIDE2OCwgMjQsIDEsIDEzNCwgMjIyLCAxNTksIDI0LCAxLCAKLSAgICAxMzQsIDIyMSwgMTEwLCAyNCwgMSwgMTM0LCAyMjIsIDE2LCAyNCwgMSwgMTM0LCAyMzgsIDEwMiwgMjQsIDEsIDEzNCwgCi0gICAgMjI4LCAyMDksIDI0LCAxLCAxMzQsIDIxNiwgMTA4LCAyMjAsIDQ1LCAyNCwgMSwgMTM0LCAyMTAsIDEsIDI0LCAxLCAxMzQsIAotICAgIDIwOCwgMTQxLCAyNCwgMSwgMTM0LCAyMjAsIDI0OCwgMjQsIDEsIDEzNCwgMjE2LCAzLCAyNCwgMSwgMTM0LCAyMjcsIDIyNSwgCi0gICAgMjQsIDEsIDEzNCwgMjI1LCA3LCAyNCwgMSwgMTM0LCAyMjYsIDE4NSwgMjQsIDEsIDEzNCwgMjEwLCAxNzksIDI0LCAxLCAKLSAgICAxMzQsIDIyMywgMjQ2LCAyNCwgMSwgMTM0LCAyMTMsIDYsIDI0LCAxLCAxMzQsIDIxMywgMTYsIDI0LCAxLCAxMzQsIDIyOCwgCi0gICAgMTM3LCAyNCwgMSwgMTM0LCAyMjEsIDg0LCAyNCwgMSwgMTM0LCAyMTIsIDE5OSwgMjQsIDEsIDEzNCwgMjIxLCA5OSwgMjQsIAotICAgIDEsIDEzNCwgMjE5LCAyMywgMjQsIDEsIDEzNCwgMjIyLCAxMDAsIDI0LCAxLCAxMzQsIDIxMiwgMjI5LCAyNCwgMSwgMTM0LCAKLSAgICAyMTcsIDE3MSwgMjQsIDEsIDEzNCwgMjIzLCAxODQsIDI0LCAxLCAxMzQsIDIyNywgMTAsIDI0LCAxLCAxMzQsIDIxNiwgCi0gICAgMTA4LCAyMjMsIDIzOSwgMjQsIDEsIDEzNCwgMjA5LCAyLCAyNCwgMSwgMTM0LCAyMjEsIDg2LCAyNCwgMSwgMTM0LCAyMjUsIAotICAgIDUzLCAyMTMsIDExMSwgMjQsIDEsIDEzNCwgMjE0LCAyMzEsIDI0LCAxLCAxMzQsIDI0MCwgMTA3LCAyNCwgMSwgOTMsIDIyMywgCi0gICAgMjAsIDI0LCAxLCA5MywgMjA4LCAxNDcsIDI0LCAxLCA5MywgMjI1LCA0MiwgMjQsIDEsIDkzLCAyMjgsIDExLCAyNCwgMSwgCi0gICAgOTMsIDIwNSwgMTc3LCAyNCwgMSwgOTMsIDIyNywgMTYsIDI0LCAxLCA5MywgMjE5LCAxNjgsIDI0LCAxLCA5MywgMjExLCAKLSAgICAyNTUsIDI0LCAxLCA5MywgMjE2LCAxNzYsIDI0LCAxLCA5MywgMjIxLCAxMTIsIDI0LCAxLCA5MywgMjIyLCAyNDcsIDI0LCAKLSAgICAxLCA5MywgMjE3LCAxODgsIDI0LCAxLCA5MywgMjA5LCAyMzIsIDI0LCAxLCA5MywgMjIyLCAxNDYsIDI0LCAxLCA5MywgCi0gICAgMjI4LCAyMzcsIDI0LCAxLCA5MywgMjAzLCAyMDgsIDI0LCAxLCA5MywgMjE0LCAxNjUsIDI0LCAxLCA5MywgMjIyLCAxNzAsIAotICAgIDI0LCAxLCA5MywgMjE5LCAxNjUsIDI0LCAxLCA5MywgMjA4LCAxNDgsIDI0LCAxLCA5MywgMjI4LCAxODksIDI0LCAxLCA5MywgCi0gICAgMjI3LCAzMCwgMjQsIDEsIDkzLCAyMjEsIDExNSwgMjQsIDEsIDkzLCAyMjIsIDEyMiwgMjQsIDEsIDkzLCAyMjUsIDE1OCwgCi0gICAgMjQsIDEsIDkzLCAyMjIsIDEzOSwgMjQsIDEsIDkzLCAyMjIsIDEyMSwgMjQsIDEsIDkzLCAyMjEsIDExNCwgMjQsIDEsIDkzLCAKLSAgICAyMTYsIDAsIDI0LCAxLCA5MywgMjIyLCAzNCwgMjQsIDEsIDkzLCAyMTksIDIxLCAyNCwgMSwgOTMsIDIxNSwgMzMsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNTQsIDI0LCAxLCA5MywgMjI0LCAxOTEsIDI0LCAxLCA5MywgMjM4LCA5NiwgMjQsIDEsIDkzLCAyMjIsIAotICAgIDE0MiwgMjQsIDEsIDkzLCAyMjIsIDQ1LCAyNCwgMSwgOTMsIDIyNSwgMTA2LCAyNCwgMSwgOTMsIDIyNywgMTIsIDI0LCAxLCAKLSAgICA5MywgMjIyLCAxNzUsIDI0LCAxLCA5MywgMjIzLCA0LCAyNCwgMSwgOTMsIDIxMCwgMCwgMjIxLCA5NywgMjQsIDEsIDkzLCAKLSAgICAyMTMsIDExNywgMjQsIDEsIDkzLCAyMTcsIDE4MSwgMjQsIDEsIDkzLCAyMjMsIDI0LCAyMTIsIDYsIDI0LCAxLCA5MywgCi0gICAgMjIyLCAxNjIsIDIyMSwgNiwgMjQsIDEsIDkzLCAyMDMsIDcsIDI0LCAxLCA5MywgMjM4LCA5NywgMjQsIDEsIDkzLCAyMDcsIAotICAgIDIwMiwgMjQsIDEsIDkzLCAyMDMsIDIyLCAyNCwgMSwgOTMsIDIxOCwgNjksIDI0LCAxLCA5MywgMjA3LCAxOTAsIDI0LCAxLCAKLSAgICA5MywgMjI5LCAxNjgsIDI0LCAxLCA5MywgMjExLCA2LCAyNCwgMSwgOTMsIDIwOSwgMTIwLCAyNCwgMSwgOTMsIDIwNSwgCi0gICAgMjM5LCAyNCwgMSwgOTMsIDIwNCwgNDMsIDI0LCAxLCA5MywgMjI4LCAxMTAsIDI0LCAxLCA5MywgMjE3LCAxOTEsIDI0LCAxLCAKLSAgICA5MywgMjEwLCAxMywgMjQsIDEsIDkzLCAyMzgsIDExNywgMjQsIDEsIDkzLCAyMjIsIDE4NSwgMjQsIDEsIDkzLCAyMTMsIAotICAgIDE5LCAyNCwgMSwgOTMsIDIyNCwgMTg2LCAyNCwgMSwgOTMsIDIyNSwgNDYsIDI0LCAxLCA5MywgMjIwLCAyMTIsIDI0LCAxLCAKLSAgICA5MywgMjIxLCAyNTQsIDI0LCAxLCA5MywgMjM4LCAyMDEsIDI0LCAxLCA5MywgMjA3LCAxOTEsIDI0LCAxLCA5MywgMjI4LCAKLSAgICAxOTksIDI0LCAxLCA5MywgMjAzLCA3NCwgMjQsIDEsIDkzLCAyMjAsIDI0OSwgMjQ2LCAzMiwgMjQsIDEsIDkzLCAyMDIsIAotICAgIDI1MywgMjQsIDEsIDkzLCAyMjQsIDIwMywgMjQsIDEsIDkzLCAyMjMsIDksIDI0LCAxLCA5MywgMjE4LCAxNTgsIDI0LCAxLCAKLSAgICA5MywgMjAyLCAxOTgsIDI0LCAxLCA5MywgMjI3LCAxNzAsIDI0LCAxLCA5MywgMjM5LCAxMDYsIDI0LCAxLCA5MywgMjM4LCAKLSAgICAyMDAsIDI0LCAxLCA5MywgMjIyLCAxMzIsIDI0LCAxLCA5MywgMjI5LCAxNzAsIDI0LCAxLCA5MywgMjI1LCAxNjEsIDI0LCAKLSAgICAxLCA5MywgMjIyLCAxNDUsIDI0LCAxLCA5MywgMjM4LCAxMDMsIDI0LCAxLCA5MywgMjQwLCAxMDgsIDI0LCAxLCA5MywgCi0gICAgMjIxLCA4NywgMjQsIDEsIDkzLCAyMTgsIDIxNCwgMjQsIDEsIDkzLCAyMDMsIDIwLCAyNCwgMSwgOTMsIDIyMiwgMTcxLCAKLSAgICAyNCwgMSwgOTMsIDIyMCwgMjQ5LCAyNDgsIDEwMywgMjQsIDEsIDkzLCAyMjAsIDE5MiwgMjQsIDEsIDkzLCAyMTgsIDQzLCAKLSAgICAyNCwgMSwgOTMsIDIyNCwgMTQ0LCAyNCwgMSwgOTMsIDIzOSwgMTA0LCAyNCwgMSwgOTMsIDIyMywgMTAwLCAyNCwgMSwgOTMsIAotICAgIDIyMywgMjQ0LCAyNCwgMSwgOTMsIDIzOCwgMTAyLCAyNCwgMSwgOTMsIDIzOSwgMTA5LCA3NSwgMjQsIDEsIDkzLCAyMjMsIAotICAgIDE4NSwgMjQsIDEsIDkzLCAyMTcsIDE4NywgMjQsIDEsIDkzLCAyMjIsIDEzNCwgMjQsIDEsIDkzLCAyMjgsIDE3NSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE1NSwgMjQsIDEsIDkzLCAyMjEsIDEwMCwgMjQsIDEsIDkzLCAyMDMsIDIxLCAyNCwgMSwgOTMsIDIyMiwgCi0gICAgMTU1LCAyNCwgMSwgOTMsIDIxOSwgMTY5LCAyMTgsIDI1MiwgMjQsIDEsIDkzLCAyMzksIDEwOSwgMjQ3LCA3MSwgMjQsIDEsIAotICAgIDkzLCAyMzksIDE3OSwgMjQsIDEsIDkzLCAyMjIsIDM5LCAyNCwgMSwgOTMsIDYzLCAyNCwgMSwgOTMsIDIwOCwgMTQxLCAyNCwgCi0gICAgMSwgOTMsIDc4LCAyNCwgMSwgOTMsIDc1LCAyNCwgMSwgOTMsIDIyOCwgOSwgMjQsIDEsIDkzLCAyMTksIDE2OSwgMjE4LCAKLSAgICA3NywgMjQsIDEsIDkzLCAyMTAsIDE4LCAyNCwgMSwgOTMsIDIwOSwgMjE5LCAyNCwgMSwgOTMsIDIyMywgMjQsIDIyMywgCi0gICAgMTcyLCAyMzYsIDM4LCAyNCwgMSwgOTMsIDIxMiwgMjUwLCAyNCwgMSwgOTMsIDIwMywgMTcsIDI0LCAxLCA5MywgMjIyLCAKLSAgICAxMTUsIDI0LCAxLCA5MywgMjAyLCAyMDMsIDI0LCAxLCA5MywgMjAyLCAyMzAsIDIxMCwgMTU5LCAyNCwgMSwgOTMsIDIwMiwgCi0gICAgMjMwLCAyNDUsIDE1MSwgMjQsIDEsIDkzLCAyMDIsIDE4NywgMjQsIDEsIDkzLCAyMDIsIDE5NSwgMjQsIDEsIDkzLCAyMjksIAotICAgIDE1NiwgMjQsIDEsIDkzLCAyMTgsIDIxMiwgMjQsIDEsIDkzLCAyMjIsIDQwLCAyNDEsIDM5LCAyNCwgMSwgOTMsIDIxNywgCi0gICAgMTgzLCAyNCwgMSwgOTMsIDIwMywgMjE0LCAyNCwgMSwgOTMsIDI0MCwgNTMsIDI0LCAxLCA5MywgMjA2LCA1MCwgMjQsIDEsIAotICAgIDkzLCAyMjYsIDIzOSwgMjQsIDEsIDkzLCAyMjQsIDE1NSwgMjQsIDEsIDkzLCAyMTYsIDc1LCAyNCwgMSwgOTMsIDIxNiwgCi0gICAgMjAyLCAyNCwgMSwgOTMsIDIyMiwgMTE0LCAyNCwgMSwgOTMsIDIyMiwgMjAzLCAyNCwgMSwgOTMsIDIxMiwgMjQyLCAyNCwgCi0gICAgMSwgOTMsIDIxMiwgMjI5LCAyNCwgMSwgOTMsIDIzOSwgMTA5LCAyMTYsIDExMSwgMjQsIDEsIDkzLCAyMDEsIDIwMSwgMjQsIAotICAgIDEsIDkzLCAyMTgsIDE2NywgMjQsIDEsIDkzLCAyMjcsIDEwLCAyNCwgMSwgOTMsIDIyOSwgMjYsIDI0LCAxLCA5MywgMjI0LCAKLSAgICAyNDAsIDI0LCAxLCA5MywgMTkyLCAyNCwgMSwgOTMsIDIyNSwgMTAzLCAyNCwgMSwgOTMsIDIwOSwgMTIyLCAyNCwgMSwgOTMsIAotICAgIDIyOSwgMTAwLCAyNCwgMSwgOTMsIDIyNCwgNTQsIDI0LCAxLCA5MywgMjA5LCAxNTIsIDI0LCAxLCA5MywgMjQwLCA3NywgCi0gICAgMjQsIDEsIDkzLCAyMzgsIDkwLCAyNCwgMSwgMjE4LCAxOTYsIDE3MywgMjQsIDEsIDIxOCwgMTk2LCA2OCwgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMjgsIDIwOSwgMjQsIDEsIDIxOCwgMTk2LCAyNDEsIDE2MSwgMjQsIDEsIDIxOCwgMTk2LCAyMTYsIDEzNSwgCi0gICAgMjQsIDEsIDIxOCwgMTk2LCAyMTAsIDEsIDI0LCAxLCAyMTgsIDE5NiwgMjIwLCAyNDgsIDI0LCAxLCAyMTgsIDE5NiwgMjI4LCAKLSAgICAxMTMsIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAzLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNTAsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjI1LCA3LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjIzLCAyMywgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjIsIDQ2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNiwgMTg1LCAyNCwgMSwgMjE4LCAxOTYsIDIxMCwgMTc5LCAyNCwgCi0gICAgMSwgMjE4LCAxOTYsIDIxMywgNiwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE2MiwgMjQsIDEsIDIxOCwgMTk2LCAyMTMsIAotICAgIDExMywgMjQsIDEsIDIxOCwgMTk2LCAyMjgsIDEzNywgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDE3MCwgMjQsIDEsIDIxOCwgCi0gICAgMTk2LCAyMjEsIDU1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMSwgODQsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxNywgMjQsIDEsIAotICAgIDIxOCwgMTk2LCAyMDIsIDIyOSwgMjQsIDEsIDIxOCwgMTk2LCAyMTIsIDE5OSwgMjQsIDEsIDIxOCwgMTk2LCAxOTgsIDI0LCAKLSAgICAxLCAyMTgsIDE5NiwgMjIxLCAxMTgsIDI0LCAxLCAyMTgsIDE5NiwgMjE4LCAyMTIsIDI0LCAxLCAyMTgsIDE5NiwgMjIxLCAKLSAgICA5OSwgMjQsIDEsIDIxOCwgMTk2LCAyMDMsIDIxNCwgMjQsIDEsIDIxOCwgMTk2LCAyMTksIDIzLCAyNCwgMSwgMjE4LCAxOTYsIAotICAgIDIxNSwgMTQ1LCAyNCwgMSwgMjE4LCAxOTYsIDIyMiwgMTAwLCAyNCwgMSwgMjE4LCAxOTYsIDIxNiwgNzUsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI5LCAxODAsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxMzEsIDI0LCAxLCAyMTgsIDE5NiwgMjIyLCAxODIsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjEyLCAyNDIsIDI0LCAxLCAyMTgsIDE5NiwgMjE3LCAxODgsIDI0LCAxLCAyMTgsIDE5NiwgCi0gICAgMjM5LCAxNzksIDI0LCAxLCAyMTgsIDE5NiwgMjA0LCAxMTEsIDI0LCAxLCAyMTgsIDE5NiwgMjI3LCAxNDgsIDI0LCAxLCAKLSAgICAyMTgsIDE5NiwgMjI3LCAxMCwgMjQsIDEsIDIxOCwgMTk2LCAyMjksIDI2LCAyNCwgMSwgMjE4LCAxOTYsIDIyNSwgNDQsIAotICAgIDI0LCAxLCAyMTgsIDE5NiwgMjE2LCAxMDcsIDI0LCAxLCAyMTgsIDE5NiwgMTkyLCAyNCwgMSwgMjE4LCAxOTYsIDIyNCwgCi0gICAgODIsIDI0LCAxLCAyMTgsIDE5NiwgMjI1LCA1MiwgMjQsIDEsIDIxOCwgMTk2LCAyMDksIDEzMiwgMjQsIDEsIDIxOCwgMTk2LCAKLSAgICAyMjgsIDI0NCwgMjQsIDEsIDIxOCwgMTk2LCAyMTQsIDI1MSwgMjQsIDEsIDIxOCwgMTk2LCAyMDQsIDE2MiwgMjIzLCAyNDksIAotICAgIDEsIDIxMCwgMjIsIDIyMywgMjQ5LCAxLCAyMjIsIDE1MSwgMjIzLCAyNDksIDEsIDIwMiwgMjQ3LCAyMjMsIDI0OSwgMSwgCi0gICAgMjI0LCAxMTIsIDIyMywgMjQ5LCAxLCAyNDksIDMyLCAyMjMsIDI0OSwgMSwgMjQ0LCAyMTIsIDIyMywgMjQ5LCAxLCA2MywgCi0gICAgMjIzLCAyNDksIDEsIDIxOCwgMTkyLCAyMjMsIDI0OSwgMSwgMjI5LCAxMzksIDIyMywgMjQ5LCAxLCAyMzcsIDk1LCAyMjMsIAotICAgIDI0OSwgMSwgMjQ0LCAxODgsIDIyMywgMjQ5LCAxLCAyNDYsIDk4LCAyMjMsIDI0OSwgMSwgMjI5LCAyMDAsIDIyMywgMjQ5LCAKLSAgICAxLCAyMjAsIDQ2LCAyMjMsIDI0OSwgMSwgMjI1LCAxNTgsIDIyMywgMjQ5LCAxLCAyMjIsIDY4LCAyMjMsIDI0OSwgMSwgCi0gICAgMTg1LCAyMjMsIDI0OSwgMSwgMjIwLCAxOCwgMjIzLCAyNDksIDEsIDc4LCAyMjMsIDI0OSwgMSwgMjE1LCAyMjcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMTMsIDExLCAyMjMsIDI0OSwgMSwgMjA5LCA5MSwgMjIzLCAyNDksIDEsIDI0MSwgMTg5LCAyMjMsIDI0OSwgCi0gICAgMSwgMjA0LCAxMTEsIDIyMywgMjQ5LCAxLCA3NCwgMjIzLCAyNDksIDEsIDIyOSwgMjYsIDIyMywgMjQ5LCAxLCAyMjgsIDE3LCAKLSAgICAyMjMsIDI0OSwgMSwgMjI4LCAxMTMsIDIyMywgMjQ5LCAxLCAyMzcsIDE0NywgMjIzLCAyNDksIDEsIDIxNiwgNTcsIDIyMywgCi0gICAgMjQ5LCAxLCAyMDksIDE2NSwgMjIzLCAyNDksIDE3LCAyMDIsIDg0LCAyMjMsIDI0OSwgMTcsIDEwNSwgMjIzLCAyNDksIDE3LCAKLSAgICAxMDgsIDIyMywgMjQ5LCAxNywgMTQ3LCAyMjMsIDI0OSwgMTcsIDE0OSwgMjIzLCAyNDksIDE3LCAxNzAsIDIyMywgMjQ5LCAKLSAgICAxNywgMTk1LCAyMjMsIDI0OSwgMTcsIDIxMywgMTExLCAyMjMsIDI0OSwgMTcsIDE5OSwgMjIzLCAyNDksIDE3LCAyMjIsIAotICAgIDYzLCAyMjMsIDI0OSwgMjQ0LCAxNjYsIDIyMywgMjQ5LCA1MiwgMjQ0LCAxNjYsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDEsIDc0LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMTczLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjE0LCAxNzcsIDI0OCwgCi0gICAgMjEyLCAyMDYsIDgzLCAxLCAyNDAsIDEwOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDIyNSwgNDcsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDMsIDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzgsIDI0OSwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0MywgCi0gICAgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjI4LCAyNDMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMzAsIDEwMSwgMjQ4LCAKLSAgICAyMTIsIDIwNiwgODMsIDEsIDIzNSwgMjUzLCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMTEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAxLCAyMDIsIDE3LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjM4LCAxOTQsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAKLSAgICAyNDMsIDExMywgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDI0NiwgMjM4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA2LCAxNzEsIAotICAgIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAxMzUsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyNDksIDMyLCAyNDgsIDIxMiwgMjA2LCAKLSAgICA4MywgMSwgMjA0LCAxNjMsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCAyMDMsIDQ2LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgCi0gICAgMTg1LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjA0LCAxMDgsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA2MywgMjQ4LCAyMTIsIAotICAgIDIwNiwgODMsIDEsIDc4LCAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjIwLCAxOCwgMjQ4LCAyMTIsIDIwNiwgODMsIDEsIDY4LCAKLSAgICAyNDgsIDIxMiwgMjA2LCA4MywgMSwgMjQxLCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAxLCA3NCwgMjQ4LCAyMTIsIDIwNiwgCi0gICAgODMsIDEsIDc1LCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDEzOCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIDgzLCAzOSwgCi0gICAgMTI0LCAyMDgsIDE2MSwgMjQ4LCAyMTIsIDIwNiwgODMsIDM5LCAyMjQsIDE1MCwgMjA4LCAxNjEsIDI0OCwgMjEyLCAyMDYsIAotICAgIDgzLCAzOSwgMjI2LCAyNTMsIDIwOCwgMTYxLCAyNDgsIDIxMiwgMjA2LCA4MywgMzksIDIzNiwgMjQyLCAyMDgsIDE2MSwgCi0gICAgMjQ4LCAyMTIsIDIwNiwgODMsIDIzOSwgMTAyLCAyMTEsIDYxLCAxMTksIDExNywgMjIsIDIyOSwgMTk3LCAxMTksIDExNywgCi0gICAgMjIsIDIyOSwgMTkzLCAxMTksIDExNywgMjIsIDIyOSwgOTcsIDExOSwgMTE3LCAyMiwgMjI5LCA2MywgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjksIDIxOCwgMTE5LCAxMTcsIDIyLCAyMjksIDIxNSwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMjgsIDE3MiwgMTE5LCAxMTcsIDIyLCAyMjksIDE5OSwgMTE5LCAxMTcsIDIyLCAyMjksIDE1NCwgMTE5LCAxMTcsIDIyLCAKLSAgICAyMzAsIDE3LCAxMTksIDExNywgMjIsIDIzMCwgMTQsIDExOSwgMTE3LCAyMiwgMjI5LCA1LCAxMTksIDExNywgMjIsIDIyOSwgCi0gICAgMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMiwgMTE5LCAxMTcsIDIyLCAyMjksIDIxMCwgMTE5LCAxMTcsIDIyLCAyMjgsIAotICAgIDIwMiwgMTE5LCAxMTcsIDIyLCAyMjgsIDIwMSwgMTE5LCAxMTcsIDIyLCAyMjksIDIzLCAxMTksIDExNywgMjIsIDIyOCwgCi0gICAgMjQ3LCAxMTksIDExNywgMjIsIDIyOSwgOTksIDExOSwgMTE3LCAyMiwgMjI5LCA5OCwgMTE5LCAxMTcsIDIyLCAyMzAsIDMyLCAKLSAgICAxMTksIDExNywgMjIsIDIyOSwgMjE0LCAxMTksIDExNywgMjIsIDIyOCwgMTYzLCAxMTksIDExNywgMjIsIDIyOCwgMTU0LCAKLSAgICAxMTksIDExNywgMjIsIDIzMCwgNDAsIDExOSwgMTE3LCAyMiwgMjMwLCAzMywgMTE5LCAxMTcsIDEwOSwgMjA2LCA2MSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIxLCA5MCwgMTE5LCAxMTcsIDEwOSwgMjI3LCAyNTEsIDExOSwgMTE3LCAxMDksIDIzNywgNzYsIAotICAgIDExOSwgMTE3LCAxMDksIDIyMSwgMjMwLCAxMTksIDExNywgMTA5LCAyMTYsIDE2NywgMTE5LCAxMTcsIDEwOSwgMjIyLCAxLCAKLSAgICAxMTksIDExNywgMTA5LCAyMTcsIDEwMCwgMTE5LCAxMTcsIDEwOSwgMjAzLCA2MiwgMTE5LCAxMTcsIDEwOSwgMjM2LCAyMjEsIAotICAgIDExOSwgMTE3LCAxMDksIDIyNSwgNjcsIDExOSwgMTE3LCAxMDksIDI0NiwgMTc0LCAxMTksIDExNywgMTA5LCAyMjMsIDI4LCAKLSAgICAxMTksIDExNywgMTA5LCAyMzYsIDE1NywgMTE5LCAxMTcsIDEwOSwgMjE4LCA4NSwgMTE5LCAxMTcsIDEwOSwgMjIxLCA5NSwgCi0gICAgMTE5LCAxMTcsIDEwOSwgMjIzLCA2NSwgMTE5LCAxMTcsIDEwOSwgMjUwLCAzNCwgMTE5LCAxMTcsIDEwOSwgMjAzLCAxNzgsIAotICAgIDExOSwgMTE3LCAxMDksIDI0NywgMTUsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwNywgMTk5LCAxMTksIDExNywgMTMxLCAKLSAgICAyNDYsIDY3LCAyMTIsIDEzLCAxMTksIDExNywgMTMxLCAyNDYsIDY3LCAyMjksIDE3MiwgMTE5LCAxMTcsIDEzMSwgMjQ2LCAKLSAgICA2NywgMjI5LCAxMzAsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIxMSwgNCwgMTE5LCAxMTcsIDEzMSwgMjQ2LCA2NywgCi0gICAgMjM2LCAxMjMsIDExOSwgMTE3LCAxMzEsIDI0NiwgNjcsIDIwOSwgMjA2LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgCi0gICAgNDQsIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjA4LCA5LCAyNDYsIDIyOSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NiwgCi0gICAgMTYzLCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIwOSwgNjksIDExOSwgMTE3LCAyLCAyMDUsIDE3MywgMjQwLCA1MCwgMTE5LCAKLSAgICAxMTcsIDIsIDIwMywgMTM2LCAyMjEsIDg1LCAxMTksIDExNywgMiwgMjAzLCAxMzYsIDIxNiwgNTksIDExOSwgMTE3LCAyLCAKLSAgICAyMDMsIDEzNiwgMjA4LCAxMjQsIDExOSwgMTE3LCAyLCAyMDMsIDEzNiwgMjQwLCA4OSwgMTE5LCAxMTcsIDIsIDIwNSwgCi0gICAgMTczLCAyMTQsIDE1OSwgMTE5LCAxMTcsIDIsIDIyNSwgNiwgMjExLCA4LCAxMTksIDExNywgMiwgMjA1LCAxNzMsIDIyMSwgCi0gICAgMTM0LCAxMTksIDExNywgMiwgMjM1LCAxNjcsIDIwMywgODEsIDExOSwgMTE3LCAyLCAyMDMsIDE3NywgMTE5LCAxMTcsIDIsIAotICAgIDI0NiwgNjcsIDIwNywgMjUyLCAyMTUsIDIxNiwgMTE5LCAxMTcsIDE3LCAyMDIsIDg0LCAxMTksIDExNywgMTcsIDEwNSwgCi0gICAgMTE5LCAxMTcsIDE3LCAxMDgsIDExOSwgMTE3LCAxNywgMTQ3LCAxMTksIDExNywgMTcsIDE0OSwgMTE5LCAxMTcsIDE3LCAKLSAgICAxNzAsIDExOSwgMTE3LCAxNywgMTk1LCAxMTksIDExNywgMTcsIDIxMywgMTExLCAxMTksIDExNywgMTcsIDE5OSwgMTE5LCAKLSAgICAxMTcsIDE3LCAyMjIsIDYzLCAxMTksIDExNywgNDIsIDIwOSwgMTQ3LCAxMTksIDExNywgNDIsIDIzNiwgMTAsIDExOSwgCi0gICAgMTE3LCA0MiwgMjA5LCAxNTMsIDIwOSwgMzQsIDExOSwgMTE3LCA0MiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjM2LCAKLSAgICAxMiwgMjI0LCAxMTMsIDExOSwgMTE3LCA0MiwgMjA5LCAxNTMsIDI0OCwgNjgsIDExOSwgMTE3LCA0MiwgMjA4LCA3MiwgCi0gICAgMTE5LCAxMTcsIDIsIDIwNSwgMTczLCAyMjYsIDIzNCwgMTE5LCAxMTcsIDIsIDIwMywgMTMzLCAxMTksIDExNywgMiwgMjM2LCAKLSAgICAyMTYsIDExOSwgMTE3LCAyLCAyMDksIDU5LCAyMzYsIDIxNiwgMTE5LCAxMTcsIDIsIDIwMSwgMjQ3LCAyMDksIDEwMiwgCi0gICAgMTE5LCAxMTcsIDIsIDIzNiwgMTQxLCAxMTksIDExNywgMiwgMjIxLCAxNDgsIDExOSwgMTE3LCAyLCAyMDMsIDE2OSwgMTE5LCAKLSAgICAxMTcsIDIsIDIyMSwgODgsIDExOSwgMTE3LCAyLCAyNTAsIDE4LCAxMTksIDExNywgMiwgMjA3LCAxMjksIDI0NiwgMjI4LCAKLSAgICAxMTksIDExNywgMiwgMjI1LCA2LCAyMDgsIDEyLCAxMTksIDExNywgMiwgMjA5LCAyMDcsIDExOSwgMTE3LCAyLCAyMjcsIDcsIAotICAgIDExOSwgMTE3LCAyLCAyMjMsIDIwMSwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIzNywgMTQzLCAyMjYsIDIxMiwgMjIxLCA5MywgCi0gICAgMjIxLCA5MiwgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDI0NSwgMTA5LCAyMDgsIDMsIDExOSwgMTE3LCAyLCAyNDYsIDY3LCAKLSAgICAyMDcsIDEyNywgMTE5LCAxMTcsIDIsIDI0NiwgNjcsIDIwNywgMTI4LCAyNDYsIDg2LCAxMTksIDExNywgMiwgMjQ2LCA2NywgCi0gICAgMjE3LCAxODYsIDI0NCwgMTM1LCAxMTksIDExNywgMiwgMjQ2LCA2NywgMjIxLCAxNDEsIDIwOCwgMTMyLCAxMTksIDExNywgCi0gICAgMjQ2LCAzOSwgMiwgMjA4LCA3LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjAzLCA0OCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIAotICAgIDIyNywgOTMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMjcsIDI1MCwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgMTMyLCAKLSAgICAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjI5LCA2LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCA3MywgMTE5LCAxMTcsIAotICAgIDI0NiwgMzksIDIsIDIyMywgMjQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjA5LCA0NSwgMTE5LCAxMTcsIDI0NiwgMzksIAotICAgIDIsIDIwOCwgMTcsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMTgsIDIwNSwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOSwgCi0gICAgMTQyLCAxMTksIDExNywgMjQ2LCAzOSwgMiwgMjM3LCAxMzMsIDExOSwgMTE3LCAyNDYsIDM5LCAyLCAyMDYsIDgwLCAxMTksIAotICAgIDExNywgMjQ2LCAzOSwgMiwgMjQwLCA4NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIwMywgODgsIDExOSwgMTE3LCAyNDYsIAotICAgIDM5LCAyLCAyMDcsIDI0NiwgMTE5LCAxMTcsIDI0NiwgMzksIDIsIDIyOCwgMTU4LCAxMTksIDExNywgMjQ2LCAzOSwgMiwgCi0gICAgMjA0LCAxNTMsIDExMSwgMSwgMTg1LCAxMTEsIDEsIDI0OSwgMzIsIDExMSwgMSwgMTEsIDE4NSwgMTExLCAxLCAyMTgsIDk4LCAKLSAgICAxMTEsIDEsIDE5MiwgMTExLCAxLCAyMjQsIDE1OCwgMTExLCAxLCAyNTAsIDEyNiwgMTkyLCAxMTEsIDEsIDI0MCwgMTA4LCAKLSAgICAxMTEsIDEsIDIwNiwgODYsIDExMSwgMSwgMjA1LCAyMzEsIDExMSwgMSwgMjEwLCAyMiwgMTExLCAxLCAyNDQsIDIxMiwgCi0gICAgMTExLCAxLCAxMSwgMjA3LCAyNDEsIDExMSwgMSwgMTEsIDIxMCwgMjIsIDExMSwgMSwgMjA3LCAyNDEsIDExMSwgMSwgMjQ0LCAKLSAgICAxMjAsIDExMSwgMSwgMjAxLCAyMDEsIDExMSwgMSwgMjIyLCAxMDQsIDExMSwgMSwgMTEsIDIyMSwgMjI3LCAxMTEsIDEsIAotICAgIDI1MCwgMTI2LCAyMDEsIDIwMSwgMTExLCAxLCAyMjEsIDIyNywgMTExLCAxLCAyMjEsIDIxMywgMTExLCAxLCAyMjgsIDExMywgCi0gICAgMTExLCAxLCAyMjYsIDE5OCwgMTExLCAxLCAyMjcsIDE2MSwgMTExLCAxLCAyMjcsIDE1MCwgMTExLCAxLCAyMDgsIDE4NywgCi0gICAgMTExLCAxLCAyNDMsIDEyMSwgMTExLCAxLCAyMDgsIDE3OSwgMTExLCAxLCAyNDMsIDEyMCwgMTExLCAxLCAxNzMsIDExMSwgCi0gICAgMSwgMjM5LCA4LCAxMTEsIDEsIDExLCAxNzMsIDExMSwgMSwgMjE3LCAxMjYsIDExMSwgMSwgMjE3LCAxMDMsIDExMSwgMSwgCi0gICAgMjIyLCAyMDMsIDExMSwgMSwgMjIyLCAxNTIsIDExMSwgMSwgMjUwLCAxMjYsIDIyMiwgMjAzLCAxMTEsIDEsIDE1MiwgMTExLCAKLSAgICAxLCAyMDMsIDE4MiwgMTExLCAxLCAyMzgsIDExOSwgMTExLCAxLCAyMzgsIDk0LCAxMTEsIDEsIDIwNywgMjUxLCAxMTEsIDEsIAotICAgIDI0MSwgMjM5LCAxMTEsIDEsIDIyMSwgMTEsIDExMSwgMSwgMjIwLCAyNTAsIDExMSwgMSwgMjA4LCAxMCwgMTExLCAxLCAKLSAgICAyNDEsIDI0OSwgMTExLCAxLCAxMSwgMjA4LCAxMCwgMTExLCAxLCAxMSwgMjQxLCAyNDksIDExMSwgMSwgMjE2LCAxMzMsIAotICAgIDIwOCwgMTAsIDExMSwgMSwgMjEzLCA5MCwgMTExLCAxLCAyMTEsIDE2NCwgMTExLCAxLCAyMDIsIDgwLCAxMTEsIDEsIDIwMiwgCi0gICAgOCwgMTExLCAxLCAyMDgsIDIwLCAxMTEsIDEsIDI0MSwgMjU1LCAxMTEsIDEsIDExLCAyMDgsIDIwLCAxMTEsIDEsIDIxNSwgCi0gICAgMzYsIDExMSwgMSwgMjAyLCAxMTYsIDExMSwgMSwgMjAyLCA5LCAxMTEsIDEsIDIwMSwgMjM1LCAxMTEsIDEsIDIwMSwgMjE1LCAKLSAgICAxMTEsIDEsIDI1MCwgMTI2LCAyMDEsIDIzNSwgMTExLCAxLCAyMDEsIDIwNywgMTExLCAxLCAyMDEsIDIxNCwgMTExLCAxLCAKLSAgICAyMDQsIDExMSwgMTExLCAxLCAyNTEsIDczLCAxMTEsIDEsIDIzNywgMTIsIDExMSwgMSwgMjIzLCA3MCwgMTExLCAyLCAyNTAsIAotICAgIDY1LCAxMTEsIDIsIDIxNiwgMTMzLCAyMDUsIDE4NCwgMTExLCAyLCAyMTYsIDEzMywgMjUwLCA2NSwgMTExLCAyMiwgMiwgCi0gICAgNjMsIDExMSwgMjIsIDIsIDI1MiwgMjUsIDExMSwgMjIsIDIsIDI1MSwgNjksIDExMSwgMjIsIDIsIDI1MCwgMjMxLCAxMTEsIAotICAgIDIyLCAyLCAyNTAsIDIyMywgMTExLCAyMiwgMiwgNzgsIDExMSwgMjIsIDIsIDIyMCwgMTgsIDExMSwgMjIsIDIsIDIwNCwgMCwgCi0gICAgMTExLCAyMiwgMiwgMjA0LCAxNDQsIDExMSwgMjIsIDIsIDc0LCAxMTEsIDIyLCAyLCAyNDEsIDkyLCAxMTEsIDIyLCAyLCAKLSAgICAyNDEsIDc4LCAxMTEsIDIyLCAyLCAyMjAsIDcwLCAxMTEsIDIyLCAyLCA3NSwgMTExLCAyMiwgMiwgMjM1LCAxNzEsIDExMSwgCi0gICAgMjIsIDIsIDIzNSwgMTcwLCAxMTEsIDIyLCAyLCAyMzUsIDE2OSwgMTExLCAyMiwgMiwgMjMwLCAyMzQsIDExMSwgMjIsIDIsIAotICAgIDIzMSwgMTEwLCAxMTEsIDIyLCAyLCAyMzEsIDgzLCAxMTEsIDIyLCAyLCAyMzAsIDE5NywgMTExLCAyMiwgMiwgMjMxLCAyNCwgCi0gICAgMTExLCAyMiwgMiwgNjgsIDExMSwgMjIsIDIsIDIwNywgMzksIDExMSwgMjIsIDIsIDIwNywgMzgsIDExMSwgMjIsIDIsIAotICAgIDIwNywgMzcsIDExMSwgMjIsIDIsIDIwNiwgMTc4LCAxMTEsIDIyLCAyLCAyMDcsIDIxLCAxMTEsIDIyLCAyLCAyMDYsIDI0MSwgCi0gICAgMTExLCAyMiwgMiwgMjAzLCAxMjQsIDExMSwgMjIsIDIsIDIwMywgMTEsIDExMSwgMjIsIDIsIDI1MSwgMTA5LCAxMTEsIDIyLCAKLSAgICAyLCAyNTEsIDEwNSwgMTExLCAyMiwgMiwgMjQxLCAyMSwgMTExLCAyMiwgMiwgMjE1LCAxODksIDI0MSwgMjEsIDExMSwgMjIsIAotICAgIDIsIDI0MSwgMjgsIDExMSwgMjIsIDIsIDIxNSwgMTg5LCAyNDEsIDI4LCAxMTEsIDIyLCAyLCAyNTEsIDY0LCAxMTEsIDIyLCAKLSAgICAyLCAyNDEsIDE0NSwgMTExLCAyMiwgMiwgMjUwLCAzNCwgMTExLCAyMiwgMiwgMjE5LCAyMTYsIDExMSwgMjIsIDIsIDIyMywgCi0gICAgMTYzLCAxMTEsIDIyLCAyLCAyMjIsIDIwNSwgMTExLCAxNDMsIDIxNiwgMTYsIDExMSwgMTQzLCAyMDgsIDE0NSwgMjE2LCAKLSAgICAxNiwgMTExLCAxNDMsIDU1LCAxMTEsIDE0MywgNTYsIDExMSwgMSwgMjA4LCAxNTksIDExMSwgMSwgMjA4LCAxNTgsIDExMSwgCi0gICAgMSwgMjA4LCAxNTcsIDExMSwgMSwgMjA4LCAxNTYsIDExMSwgMSwgMjA4LCAxNTUsIDExMSwgMSwgMjA4LCAxNTQsIDExMSwgCi0gICAgMSwgMjA4LCAxNTMsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTYwLCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIDE1OSwgMTExLCAKLSAgICAxLCAyMTYsIDEzMywgMjA4LCAxNTcsIDExMSwgMSwgMjE2LCAxMzMsIDIwOCwgMTU2LCAxMTEsIDEsIDIxNiwgMTMzLCAyMDgsIAotICAgIDE1NSwgMTExLCAxLCAyMTYsIDEzMywgMjA4LCAxNTMsIDY3LCAxLCAyNTAsIDEyNiwgNzQsIDE3MiwgMSwgMjUwLCAxMjYsIAotICAgIDIwMywgNTIsIDEwMCwgMSwgMjM3LCAxNzEsIDEwMCwgMSwgMjAzLCAxOTYsIDEwMCwgMSwgMjE5LCAxODQsIDEwMCwgMSwgCi0gICAgMjEwLCA2OSwgMTAwLCAxLCAyNDAsIDE3NCwgMTAwLCAxLCAyMzAsIDU0LCAxMDAsIDEsIDE1OSwgMTAwLCAxLCAyNDksIAotICAgIDI1NSwgMTAwLCAxLCAyNDUsIDUxLCAxMDAsIDEsIDIwNiwgMTY0LCAxMDAsIDEsIDIzOSwgNzUsIDEwMCwgMSwgMTQ2LCAKLSAgICAxMDAsIDEsIDIxOSwgMTg1LCAyMjMsIDE2MywgMTAwLCAxLCAyNDUsIDUyLCAxOTQsIDEwMCwgMSwgMjQwLCAxNzUsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIzMCwgNTUsIDIyNiwgMTg1LCAxMDAsIDEsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIwOSwgMTEwLCAKLSAgICAxMDAsIDEsIDIxMiwgNDUsIDI0NCwgMiwgMTAwLCAxLCAyNDQsIDIsIDEwMCwgMSwgMjI5LCA0OCwgMTAwLCAxLCAyMTIsIAotICAgIDQ1LCAyMzAsIDE4NCwgMTAwLCAxLCAyMzYsIDIyNSwgMTAwLCAxLCAyMjcsIDE2MiwgMTAwLCAxLCAyMTYsIDYyLCAxMDAsIAotICAgIDEsIDIyNiwgMTg1LCAxMDAsIDEsIDIyMywgMTYzLCAxMDAsIDEsIDIzMCwgMTg0LCAxMDAsIDEsIDE5NCwgMTAwLCAxLCAKLSAgICAyMjYsIDE4NiwgMjIzLCAxNjMsIDEwMCwgMSwgMjIzLCAxNjQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgMTg1LCAyMjYsIAotICAgIDE4NSwgMTAwLCAxLCAyMTUsIDk0LCAyMzAsIDE4NCwgMTAwLCAxLCAyMjYsIDE4NiwgMywgMjQzLCA4NSwgMTAwLCAxLCAKLSAgICAyMjMsIDE2NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMywgCi0gICAgMTg3LCAyMzEsIDcsIDI1LCA1NSwgMTAwLCAxLCAyMTUsIDk0LCAzLCAyNDMsIDg1LCAxMDAsIDEsIDIxNSwgOTQsIDMsIDcwLCAKLSAgICA1NiwgMTAwLCAxLCAyMjYsIDE4NiwgMTk0LCAxMDAsIDEsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDE5NCwgCi0gICAgMTAwLCAxLCAyMTUsIDk0LCAxOTQsIDEwMCwgMSwgMjI2LCAxODYsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjIzLCAxNjQsIAotICAgIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjMwLCAxODUsIDIyNiwgMTg2LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCAKLSAgICAxODUsIDE5NCwgMTAwLCAxLCAyMzAsIDE4NSwgMjE1LCA5NCwgMywgMjQzLCA4NSwgMTAwLCAxLCAyMzAsIDE4NSwgMjIzLCAKLSAgICAxNjMsIDEwMCwgMSwgMjMwLCAxODUsIDIyMywgMTY0LCAxOTQsIDEwMCwgMSwgMjE1LCA5NCwgMjEwLCA2OSwgMTAwLCAxLCAKLSAgICAyMTUsIDk0LCAyMTAsIDcwLCAxNDYsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAxODQsIDEwMCwgMSwgMjE1LCA5NCwgMjE5LCAKLSAgICAxODUsIDE0NiwgMTAwLCAxLCAyMTAsIDcwLCAxOTQsIDEwMCwgMSwgMjEwLCA3MCwgMjE3LCAxLCAxOTQsIDEwMCwgMSwgCi0gICAgMjA0LCAxNDQsIDEwMCwgMSwgMjA0LCA0MCwgMTAwLCAxLCAyMDQsIDE0NSwgMTQ2LCAxMDAsIDEsIDIxNSwgOTQsIDIyMywgCi0gICAgMTYzLCAxMDAsIDEsIDIxNSwgOTQsIDIyNiwgMTg1LCAxMDAsIDEsIDIzMCwgNTUsIDIxNywgMSwgMTk0LCAxMDAsIDEsIAotICAgIDIzOSwgNzYsIDIxNywgMSwgMTk0LCAxMDAsIDEsIDIxNSwgOTQsIDIzMCwgNTQsIDEwMCwgMSwgMjE1LCA5NCwgMjMwLCA1NSwgCi0gICAgMTQ2LCAxMDAsIDEsIDYzLCAxMDAsIDEsIDIxMiwgNDUsIDIxOSwgMTk1LCAxMDAsIDEsIDIyMCwgOTcsIDEwMCwgMSwgNzgsIAotICAgIDEwMCwgMSwgMjUwLCAxNzYsIDEwMCwgMSwgNzUsIDEwMCwgMSwgNzQsIDEwMCwgMSwgMjMxLCAxMTAsIDEwMCwgMSwgMjEyLCAKLSAgICAyMjgsIDc1LCAxMDAsIDEsIDIwNywgMTcsIDEwMCwgMSwgMjQxLCAxNjEsIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCAxNDcsIAotICAgIDEwMCwgMSwgMjE1LCAyMDksIDc1LCAxMDAsIDEsIDIxMiwgNDUsIDI0MSwgMTYxLCAxMDAsIDEsIDE2MywgNzUsIDEwMCwgMSwgCi0gICAgMjAzLCA1MiwgMTAwLCAxLCA2OCwgMTAwLCAxLCAyNDAsIDIzOCwgMTAwLCAxLCAyMDMsIDE0NywgMTAwLCAxLCAxMDYsIAotICAgIDIyMywgMTYzLCAxMDAsIDEsIDE2MywgNjgsIDEwMCwgMSwgMjE1LCAyMDksIDY4LCAxMDAsIDEsIDIwNywgMTgsIDEwMCwgMSwgCi0gICAgMjEyLCA0NSwgNjgsIDEwMCwgMSwgMjIwLCAxNSwgMTAwLCAxLCAyMTksIDE5NSwgMTAwLCAxLCAyMTksIDIxNiwgMTAwLCAxLCAKLSAgICAyMDQsIDExMSwgMTAwLCAxLCAyMDQsIDAsIDEwMCwgMSwgMjA0LCAzMCwgMTAwLCAxLCAyMDQsIDUzLCAxMDAsIDEsIDIwMywgCi0gICAgMjMwLCAxMDAsIDEsIDIyMywgNzIsIDY4LCAxMDAsIDEsIDIyMywgNzIsIDc4LCAxMDAsIDEsIDIyMywgNzIsIDc1LCAxMDAsIAotICAgIDEsIDIyMywgNzIsIDYzLCAxMDAsIDEsIDIxOCwgMjM1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTgsIDIzNSwgMjUwLCAyNDcsIAotICAgIDEwMCwgMSwgMjEyLCA0NSwgMjQxLCA5MiwgMTAwLCAxLCAyMTIsIDQ1LCAyNTAsIDIzMSwgMTAwLCAxLCAyMTIsIDQ1LCAKLSAgICAyMjAsIDMxLCAxMDAsIDEsIDEyNSwgMjI2LCAxODUsIDEwMCwgMjUxLCA4OCwgNDksIDIzNiwgMTA2LCAyMTQsIDE3MiwgCi0gICAgMTAwLCAyNTEsIDg4LCAyMjQsIDE1MCwgMjM2LCAxMDYsIDIxNCwgMTcyLCAxMDAsIDI1MSwgODgsIDUwLCAyMzYsIDEwNiwgCi0gICAgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMTI0LCA4MCwgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjI0LCAxNTAsIDgwLCAKLSAgICAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAxMzgsIDgwLCAyMTQsIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMTQsIAotICAgIDE3MiwgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMjcsIDIxMywgMjE0LCAxNzIsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgCi0gICAgMjA5LCAyMjYsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjA5LCAyNDgsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMTg4LCAKLSAgICAxMTMsIDEwMCwgMjUxLCA4OCwgMjUwLCA0MCwgMjM1LCAyMDYsIDExMywgMTAwLCAyNTEsIDg4LCAyNTAsIDQwLCAyMDksIAotICAgIDIyNywgMTEzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTY1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA4LCAyNDQsIDE2NSwgMTAwLCAKLSAgICAyNTEsIDg4LCAxMzgsIDIzNywgMjUzLCAxMDAsIDI1MSwgODgsIDEzOCwgMTYzLCAyMzcsIDI1MywgMTAwLCAyNTEsIDg4LCAKLSAgICAxMzgsIDI0MywgODUsIDEwMCwgMjUxLCA4OCwgMTM4LCAyNDYsIDYxLCAxMDAsIDI1MSwgODgsIDEzOCwgMjI3LCAxMTQsIAotICAgIDEwMCwgMjUxLCA4OCwgMTM4LCAyMDQsIDc1LCAxMDAsIDI1MSwgODgsIDEzOCwgMjA2LCAzOCwgMTAwLCAyNTEsIDg4LCAKLSAgICAxMjQsIDE2NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwOCwgMjQ0LCAxNjUsIDEwMCwgMjUxLCA4OCwgMTI0LCAyMzcsIDI1MywgCi0gICAgMTAwLCAyNTEsIDg4LCAxMjQsIDE2MywgMjM3LCAyNTMsIDEwMCwgMjUxLCA4OCwgMTI0LCAyNDMsIDg1LCAxMDAsIDI1MSwgCi0gICAgODgsIDEyNCwgMjQ2LCA2MSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIyNywgMTE0LCAxMDAsIDI1MSwgODgsIDEyNCwgMjA0LCAKLSAgICA3NSwgMTAwLCAyNTEsIDg4LCAxMjQsIDIwNiwgMzgsIDEwMCwgMjUxLCA4OCwgMTI0LCA0NywgMTAwLCAyLCAxNTgsIDMsIAotICAgIDI0NSwgMTMwLCAxMDAsIDIwOSwgNjgsIDEsIDIxNCwgMTUwLCAxMDAsIDUyLCA4MiwgMTAwLCAyMTcsIDE3OSwgMjQ2LCAKLSAgICAxMjYsIDIzOSwgMTAyLCAyMTEsIDYxLCAyMTIsIDIxNSwgMjM5LCAxNTgsIDEsIDIxOSwgMjAxLCAyMTIsIDIxNSwgMjM5LCAKLSAgICAxNTgsIDI0NSwgMTkwLCAyMTksIDIwMSwgMjEyLCAyMTUsIDIzOSwgMTU4LCAxMjEsIDIxMSwgNzUsIDIxMiwgMjE1LCAyMzksIAotICAgIDE1OCwgMTEyLCAyMTEsIDc1LCA2MCwgMzEsIDE2LCAyMTcsIDE5NSwgNjAsIDMxLCAxNiwgMjQ0LCAxNDYsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjM5LCA2MCwgMzEsIDE2LCAyMTksIDE5MiwgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIxOSwgMTkyLCAyNDMsIAotICAgIDE3MSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjQxLCAxMjYsIDYwLCAzMSwgMTYsIDIwNiwgNzMsIDI0MywgMTcxLCA2MCwgCi0gICAgMzEsIDE2LCAyMjksIDIyMSwgNjAsIDMxLCAxNiwgMjEwLCA4NiwgNjAsIDMxLCAxNiwgMjE5LCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjAyLCAyMTksIDYwLCAzMSwgMTYsIDIwMiwgMjIwLCAyNDMsIDE3MSwgNjAsIDMxLCAxNiwgMjI4LCAyMjYsIDYwLCAzMSwgCi0gICAgMTYsIDI1MCwgMTcxLCAyNDEsIDEyNiwgNjAsIDMxLCAxNiwgMjQwLCAyMDYsIDI0MSwgMTI2LCA2MCwgMzEsIDE2LCAyMDksIAotICAgIDE2MywgNjAsIDMxLCAxNiwgMjI5LCAxNzYsIDYwLCAzMSwgMTYsIDI1MCwgMTYxLCA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgCi0gICAgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDIxMCwgOTMsIDYwLCAzMSwgMTYsIDIwOSwgNTAsIDYwLCAzMSwgMTYsIDIyMCwgNDIsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzgsIDIzLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE3LCAxOTQsIDYwLCAzMSwgCi0gICAgMTYsIDI0NiwgMTkwLCA2MCwgMzEsIDE2LCAyMDYsIDYyLCA2MCwgMzEsIDE2LCAyMzAsIDIwNiwgMjUwLCAxMjQsIDYwLCAKLSAgICAzMSwgMTYsIDIyOSwgMTc4LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAKLSAgICAyMTQsIDIxMCwgNjAsIDMxLCAxNiwgMjE5LCA3MywgNjAsIDMxLCAxNiwgMjExLCA4NCwgMjUwLCAxNjQsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTkxLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA2LCA3MiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjUwLCAxNTksIDYwLCAzMSwgMTYsIDIyOSwgMzgsIDYwLCAzMSwgMTYsIDIxNiwgNjksIAotICAgIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjA4LCAyMTcsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMjI5LCA2MCwgMzEsIDE2LCAyMTQsIDE1MywgNjAsIDMxLCAxNiwgMjEwLCA5NywgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIxMCwgOTcsIDIyNCwgMjIxLCAyMTEsIDgyLCA2MCwgMzEsIDE2LCAyMTksIDE4NiwgMjUwLCAxMjQsIDYwLCAzMSwgMTYsIAotICAgIDIwOSwgODYsIDYwLCAzMSwgMTYsIDIyNywgMjAwLCA2MCwgMzEsIDE2LCAyNDIsIDIsIDYwLCAzMSwgMTYsIDIwOCwgODcsIAotICAgIDYwLCAzMSwgMTYsIDIwOSwgMTM0LCA2MCwgMzEsIDE2LCAyMjgsIDIyOSwgNjAsIDMxLCAxNiwgMjUwLCAxNzEsIDI0MCwgCi0gICAgMjA2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMzEsIDYyLCA2MCwgCi0gICAgMzEsIDE2LCAyMDgsIDU3LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI5LCAyMjQsIDIwOCwgNTYsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgMTEsIDYwLCAzMSwgMTYsIDIxNywgMTk5LCA2MCwgMzEsIDE2LCAyMjksIDcsIDYwLCAzMSwgMTYsIDI0NiwgMTEwLCAKLSAgICAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjE2LCAxNzcsIDYwLCAzMSwgMTYsIDIxOSwgODYsIDI1MCwgMTI0LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDg0LCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjM1LCAxNjAsIDYwLCAzMSwgMTYsIDIyMywgODIsIDYwLCAzMSwgCi0gICAgMTYsIDIxOCwgMjE3LCA2MCwgMzEsIDE2LCAyMjksIDgsIDI1MSwgOSwgNjAsIDMxLCAxNiwgMjA4LCA1NywgMjUxLCA5LCAKLSAgICA2MCwgMzEsIDE2LCAyMTEsIDU1LCA2MCwgMzEsIDE2LCAyMzcsIDI0MCwgNjAsIDMxLCAxNiwgMjMwLCAyMDYsIDIyMiwgCi0gICAgMjI2LCA2MCwgMzEsIDE2LCAyMjAsIDQyLCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE5LCAxOTIsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMTgsIDIxNiwgNjAsIDMxLCAxNiwgMjI4LCAyNDgsIDYwLCAzMSwgMTYsIDIxOCwgMjE1LCA2MCwgMzEsIDE2LCAKLSAgICAyMjgsIDIyOCwgNjAsIDMxLCAxNiwgMjE5LCAxMiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIyOSwgMTc3LCAyMjIsIDIyNywgCi0gICAgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIyOSwgMTc4LCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIwMiwgMjE3LCAKLSAgICA2MCwgMzEsIDE2LCAyNTAsIDE2MiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI1MCwgMTYzLCAyMTAsIDk0LCAyMjIsIDIyNiwgCi0gICAgNjAsIDMxLCAxNiwgMjAyLCAyMTgsIDYwLCAzMSwgMTYsIDIyOCwgMjI3LCA2MCwgMzEsIDE2LCAyNDEsIDEyMSwgNjAsIDMxLCAKLSAgICAxNiwgMjQ2LCAxOTEsIDYwLCAzMSwgMTYsIDIyNCwgMTIyLCAyMzAsIDIwNSwgNjAsIDMxLCAxNiwgMjA2LCA3MywgMjIyLCAKLSAgICAyMjYsIDYwLCAzMSwgMTYsIDIxOCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjE3LCAyMDAsIDIyMiwgMjI2LCA2MCwgCi0gICAgMzEsIDE2LCAyMjAsIDM4LCA2MCwgMzEsIDE2LCAyNTAsIDE4OSwgNjAsIDMxLCAxNiwgMjI2LCAxOTUsIDYwLCAzMSwgMTYsIAotICAgIDIxOSwgODQsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyMTksIDg2LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIAotICAgIDIxOSwgODUsIDYwLCAzMSwgMTYsIDIyOCwgMTM1LCA2MCwgMzEsIDE2LCAyNTAsIDE5MCwgNjAsIDMxLCAxNiwgMjA4LCA1NywgCi0gICAgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDI0MSwgMTI0LCA2MCwgMzEsIDE2LCAyMTAsIDk3LCAyMjIsIDIyNiwgNjAsIDMxLCAKLSAgICAxNiwgMjEwLCA4NywgNjAsIDMxLCAxNiwgMjQ2LCAxMTAsIDIyMiwgMjI2LCA2MCwgMzEsIDE2LCAyNDEsIDQzLCA2MCwgMzEsIAotICAgIDE2LCAyMTQsIDE1NCwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwMywgMTYzLCAyMjksIDM4LCA2MCwgMzEsIDE2LCAyMDgsIAotICAgIDU0LCA2MCwgMzEsIDE2LCAyMTcsIDIwMSwgNjAsIDMxLCAxNiwgMjA4LCA1OCwgNjAsIDMxLCAxNiwgMjA4LCA1NSwgNjAsIAotICAgIDMxLCAxNiwgMjE3LCAxOTgsIDYwLCAzMSwgMTYsIDIwOCwgNTMsIDYwLCAzMSwgMTYsIDIxNywgMTk3LCA2MCwgMzEsIDE2LCAKLSAgICAyMzgsIDIyLCA2MCwgMzEsIDE2LCAyNTAsIDExNiwgNjAsIDMxLCAxNiwgMjQwLCAyNDQsIDI1MCwgMTE2LCA2MCwgMzEsIAotICAgIDE2LCAyMTksIDE4NiwgMjIyLCAyMjYsIDYwLCAzMSwgMTYsIDIwOSwgODUsIDI0MSwgMSwgNjAsIDMxLCAxNiwgMjA5LCA4NSwgCi0gICAgMjQwLCAyMDUsIDYwLCAzMSwgMTYsIDIwOSwgODcsIDI1MCwgMTY2LCA2MCwgMzEsIDE2LCAyMDksIDc5LCAyMzAsIDE5LCAKLSAgICAyNTAsIDE1OCwgNjAsIDMxLCAxNiwgMjI5LCAyMjMsIDYwLCAzMSwgMTYsIDI0MSwgODAsIDYwLCAzMSwgMTYsIDIwMywgMTQsIAotICAgIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyMDMsIDE0LCAyNTAsIDIwMiwgNjAsIDMxLCAxNiwgMjExLCA4MywgNjAsIDMxLCAxNiwgCi0gICAgMjI5LCAzOSwgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDI0MywgMTcyLCAyNTAsIDEyNCwgNjAsIDMxLCAxNiwgMjI4LCAyMzAsIAotICAgIDI1MCwgMTI0LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjUxLCA5LCA2MCwgMzEsIDE2LCAyMjgsIDIzMCwgMjIyLCAyMjYsIAotICAgIDYwLCAzMSwgMTYsIDI1MCwgMTY1LCAyMjIsIDIyNiwgNjAsIDMxLCAxNiwgMjUwLCAxNjcsIDYwLCAzMSwgMTYsIDI0MywgCi0gICAgMTcxLCA2MCwgMzEsIDE2LCAyMDgsIDY4LCA2MCwgMzEsIDE2LCAyMDksIDEyNSwgNjAsIDMxLCAxNiwgMjI4LCAyNTIsIDYwLCAKLSAgICAzMSwgMTYsIDIyNywgMjA1LCAyNDEsIDczLCAyNDYsIDEwMCwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDI0MiwgMywgMjQ2LCAKLSAgICAxMDEsIDYwLCAzMSwgMTYsIDIyNywgMjA1LCAyMDgsIDcxLCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIwOSwgCi0gICAgMTM2LCAyNDYsIDEwMSwgNjAsIDMxLCAxNiwgMjI3LCAyMDUsIDIzMSwgNTcsIDI0NiwgMTAwLCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDIzLCAyMjIsIDIyNywgMjUwLCAyMDIsIDYwLCAzMSwgMTYsIDIzOCwgMjMsIDIxOSwgNzQsIDI1MCwgMTEyLCA2MCwgMzEsIAotICAgIDE2LCAyMzgsIDIzLCAyMTksIDc0LCAyNDQsIDYsIDYwLCAzMSwgMTYsIDI0MywgMTk2LCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgCi0gICAgMjE5LCA3NCwgMjUwLCAxMTMsIDIyOSwgMjIwLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjUwLCAxMTMsIAotICAgIDI1MCwgMjAyLCA2MCwgMzEsIDE2LCAyNDMsIDE5NywgMjE5LCA3NCwgMjQ0LCA2LCA2MCwgMzEsIDE2LCAyMDgsIDc2LCA2MCwgCi0gICAgMzEsIDE2LCAyNTAsIDExNywgNjAsIDMxLCAxNiwgMjMxLCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTksIDYwLCAzMSwgMTYsIAotICAgIDI1MSwgNzUsIDIxOCwgNTIsIDI1MCwgMTE4LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAyNTAsIDExNSwgNjAsIDMxLCAxNiwgCi0gICAgMjUxLCA3NSwgMjUwLCAxMTgsIDYwLCAzMSwgMTYsIDI1MSwgNzUsIDIyNCwgMjE1LCA2MCwgMzEsIDE2LCAyNTEsIDc1LCAKLSAgICAyMjQsIDIyNiwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjUxLCA3NSwgMjM4LCAyMSwgNjAsIAotICAgIDMxLCAxNiwgMjUxLCA3NSwgMjE4LCA1MiwgMjM4LCAyNCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgMjE3LCAyMDcsIDIzNSwgCi0gICAgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyNTEsIDExLCAyMTcsIDIwNywgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgCi0gICAgODQsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDI1MSwgMTEsIDI0NCwgNSwgMjM1LCAxNTgsIDYwLCAKLSAgICAzMSwgMTYsIDIyNSwgODQsIDIwOCwgNjMsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMjUsIDg0LCAyMDgsIDc3LCA2MCwgMzEsIAotICAgIDE2LCAyMjUsIDg0LCAyMDksIDEzMCwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIwOSwgMTMwLCAyMjcsIDIwOSwgCi0gICAgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIyNywgMjA5LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjE4LCA5NSwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIzMCwgMjEzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIAotICAgIDI1MCwgMTYzLCAyMDksIDE1NiwgMjM1LCAxNTksIDYwLCAzMSwgMTYsIDI0MCwgODAsIDIwOSwgMTI3LCA2MCwgMzEsIDE2LCAKLSAgICAyNDAsIDgwLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDgwLCAyNDMsIDIwMiwgNjAsIDMxLCAxNiwgMjI1LCA4NCwgCi0gICAgMjA2LCA2NiwgMjM1LCAxNTgsIDYwLCAzMSwgMTYsIDIyNSwgODQsIDIxNywgMjA2LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgCi0gICAgMjI1LCA4NCwgMjE4LCA5NSwgMjA5LCAxMzAsIDIzNSwgMTU4LCA2MCwgMzEsIDE2LCAyMzgsIDE5LCAyMjMsIDE2NCwgMjUwLCAKLSAgICAxNjYsIDYwLCAzMSwgMTYsIDIzOCwgMTksIDIyMywgMTY0LCAyNDMsIDE3MCwgNjAsIDMxLCAxNiwgMjQxLCA5MCwgMjMwLCAKLSAgICAxOSwgMjM5LCAxMTAsIDIwNSwgMTcxLCA2MCwgMzEsIDE2LCAyMzEsIDYzLCA2MCwgMzEsIDE2LCAyMzEsIDYxLCA2MCwgMzEsIAotICAgIDE2LCAyMzksIDExMCwgMjUwLCAxMjUsIDI0NCwgNCwgMjM1LCAxNTcsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyNDMsIDIxNywgCi0gICAgMTg1LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAyMTcsIDIyMywgODIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjMsIAotICAgIDc3LCAyMzUsIDE1OCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAKLSAgICAxMTAsIDIxMiwgNjQsIDI0MywgMjE2LCAyNDMsIDIzMywgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjksIAotICAgIDIwMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMDIsIDE3LCA2MCwgMzEsIDE2LCAyMzksIDExMCwgMjQzLCAKLSAgICAyMTcsIDIyMiwgMTAxLCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MywgMjE3LCAyMjIsIDEwMSwgMjUwLCAKLSAgICAyMDIsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMjUsIDEyOCwgMjQ2LCAxMDIsIDI0MywgMjAyLCA2MCwgMzEsIDE2LCAyMzksIAotICAgIDExMCwgMjI1LCAxMjgsIDI0NiwgMTAyLCAyMjQsIDQ2LCA2MCwgMzEsIDE2LCAyNDAsIDI3LCAyMTIsIDY0LCAyNDYsIDEwMiwgCi0gICAgMjA2LCA2NSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIxMiwgNjQsIDI0NiwgMTAyLCAyMTAsIDk4LCA2MCwgMzEsIDE2LCAKLSAgICAyMzksIDExMCwgMjIyLCAyMjksIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMDEsIDI0MSwgNjAsIDMxLCAxNiwgMjQ2LCAxMDMsIAotICAgIDIyOSwgMzcsIDYwLCAzMSwgMTYsIDI0NiwgMTAzLCAyMTEsIDIxOSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDIzNSwgMjA2LCAKLSAgICAyMDMsIDEzLCAyMDksIDEzMSwgNjAsIDMxLCAxNiwgMjM5LCAxMTAsIDI0MSwgOTEsIDI1MCwgMTkxLCA2MCwgMzEsIDE2LCAKLSAgICAyMDMsIDEzLCAyMDgsIDY0LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA2NCwgNjAsIDMxLCAxNiwgMjQzLCAyMTAsIAotICAgIDIwOSwgMTMxLCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjUwLCAxNjgsIDI0MiwgMywgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIAotICAgIDI0MywgMjEwLCAyMjQsIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDI0MywgMjEwLCAyNDMsIDE5MywgCi0gICAgMjQwLCAyMTgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyNDMsIDIxMCwgMjA4LCA3NCwgMjIwLCA0OCwgMjQzLCAxMDUsIDYwLCAKLSAgICAzMSwgMTYsIDIwMywgMTMsIDI1MCwgMTY4LCAyNDIsIDMsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMDMsIDEzLCAyMjQsIAotICAgIDQ0LCAyMDksIDEzNSwgMjQzLCAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDI0MywgMTkzLCAyNDAsIDIxOCwgMjQzLCAKLSAgICAxMDUsIDYwLCAzMSwgMTYsIDIwMywgMTMsIDIwOCwgNzQsIDIyMCwgNDgsIDI0MywgMTA1LCA2MCwgMzEsIDE2LCAyMzgsIAotICAgIDE3NSwgMjQzLCAyMDksIDYwLCAzMSwgMTYsIDIzOCwgMTc1LCAyMDMsIDEyLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAKLSAgICAxNjgsIDIyNCwgMTIzLCA2MCwgMzEsIDE2LCAyNDMsIDIxOCwgMjUwLCAxNjgsIDIyNCwgMjU1LCA2MCwgMzEsIDE2LCAyNDMsIAotICAgIDIxOCwgMjQzLCAxNzEsIDYwLCAzMSwgMTYsIDI0MywgMjE4LCAyMDksIDc3LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3NywgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIDEzMCwgMjA5LCAKLSAgICA3OCwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDIwOSwgNzgsIDIwOSwgMTIzLCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OCwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDI0MywgMTU1LCA2MCwgMzEsIDE2LCAyMTIsIAotICAgIDEzMCwgMjUwLCA4OSwgMjA4LCA2NSwgNjAsIDMxLCAxNiwgMjEyLCAxMzAsIDI1MCwgODksIDIwOSwgMTIzLCA2MCwgMzEsIAotICAgIDE2LCAyNDMsIDE5NCwgMjM4LCAxNTYsIDYwLCAzMSwgMTYsIDI0MywgMjAxLCAyMTksIDIxNiwgNjAsIDMxLCAxNiwgMjExLCAKLSAgICA3MSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDE4NSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwNSwgMTcxLCA2MCwgMzEsIAotICAgIDE2LCAyNTAsIDEwOSwgMjM5LCA4LCA2MCwgMzEsIDE2LCAyNTAsIDEwOSwgMjQzLCAyMzMsIDYwLCAzMSwgMTYsIDI1MCwgCi0gICAgMTA5LCAyMjksIDIwMSwgNjAsIDMxLCAxNiwgMjUwLCAxMDksIDIwMiwgMTcsIDYwLCAzMSwgMTYsIDI1MCwgMTA5LCAyMjIsIAotICAgIDEwMCwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzgsIDIyMiwgCi0gICAgMjI3LCAyMjQsIDIyNSwgNjAsIDMxLCAxNiwgMjI5LCAxNzcsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAKLSAgICAxNzgsIDIyMiwgMjI3LCAyMjksIDIyMCwgNjAsIDMxLCAxNiwgMjI5LCAzOSwgMjI5LCAyMjAsIDYwLCAzMSwgMTYsIDIzOCwgCi0gICAgMjMsIDIyMiwgMjI3LCAyMjksIDIyMCwgMzEsIDE2LCAyMTIsIDEyMCwgMjQ4LCAyMjYsIDMxLCAxNiwgNTIsIDI0OCwgMjI2LCAKLSAgICAzMSwgMTYsIDQ2LCAyNDgsIDIyNiwgMzEsIDE2LCAyMTYsIDc0LCA0NiwgMjQ4LCAyMjYsIDMxLCAxNiwgMjQ0LCAxNDMsIAotICAgIDI0OCwgMjI2LCAzMSwgMTYsIDIxMiwgMjI4LCAyNDgsIDIyNiwgMzEsIDE2LCA0OSwgMjE2LCAxMDEsIDU0LCAzMSwgMTYsIAotICAgIDUwLCAyMTYsIDEwMSwgNTQsIDMxLCAxNiwgMjE2LCAxMDEsIDI0MywgODMsIDMxLCAxNiwgMjQ0LCAxODUsIDIxNCwgMTU3LCAKLSAgICAzMSwgMTYsIDI0NCwgMjEzLCAyNDcsIDQ1LCAzMSwgMTYsIDIxNCwgMTU3LCAzMSwgMTYsIDI0NSwgMjUwLCAzMSwgMTYsIAotICAgIDIxNiwgOTksIDI0MCwgMTUsIDMxLCAxNiwgMjE2LCA5OSwgMjQwLCAxNCwgMzEsIDE2LCAyMTYsIDk5LCAyNDAsIDEzLCAzMSwgCi0gICAgMTYsIDI0MCwgMzYsIDMxLCAxNiwgMjQwLCAzNywgNTYsIDMxLCAxNiwgMjQ3LCAyMTYsIDgyLCAzMSwgMTYsIDI0NywgODIsIAotICAgIDMxLCAxNiwgMjQ3LCAyMjgsIDMxLCAxNiwgMTU1LCAzMSwgMTYsIDIyMCwgMjgsIDIxMSwgMTAyLCAzMSwgMTYsIDIwNywgCi0gICAgMTMzLCAyMTEsIDEwMiwgMzEsIDE2LCAyMDksIDI5LCAyMTEsIDEwMiwgMzEsIDE2LCAyMzksIDE0NiwgMjExLCAxMDIsIDMxLCAKLSAgICAxNiwgMjM5LCAyMzIsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODcsIDIxMSwgMTAyLCAzMSwgMTYsIDIxMiwgODUsIDIzOSwgCi0gICAgMTI3LCAzMSwgMTYsIDIzOSwgMTQ0LCAyMzksIDEyNywgMzEsIDE2LCAyMzksIDc2LCAyNDYsIDMwLCAzMSwgMTYsIDIzOSwgCi0gICAgNzYsIDI0NiwgMzEsIDIxOSwgMjE4LCAyNTEsIDAsIDMxLCAxNiwgMjM5LCA3NiwgMjQ2LCAzMSwgMjE5LCAyMTgsIDI0OCwgCi0gICAgMjExLCAzMSwgMTYsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMwLCAzMSwgMTYsIDI0MCwgCi0gICAgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjUxLCAwLCAzMSwgMTYsIDI0MCwgMTc1LCAyNDYsIDMxLCAyMTksIDIxOCwgMjQ4LCAKLSAgICAyMTEsIDMxLCAxNiwgMjQyLCA0NywgMjQ2LCAyOSwgMzEsIDE2LCAyNDIsIDQ3LCAyNDYsIDI4LCAzMSwgMTYsIDIyMywgCi0gICAgMjI2LCAyMjUsIDE5LCAyMTYsIDg1LCAzMSwgMTYsIDUyLCAyMTMsIDU2LCAzMSwgMTYsIDUyLCAyMzksIDIxNiwgMzEsIDE2LCAKLSAgICAyMzksIDIxNywgMjA2LCAyMjQsIDMxLCAxNiwgMjM5LCAyMTcsIDI0MiwgNzAsIDMxLCAxNiwgMjIzLCA2NiwgMjA2LCAyMjQsIAotICAgIDMxLCAxNiwgMjIzLCA2NiwgMjQyLCA3MCwgMzEsIDE2LCAyMTMsIDU3LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTMsIDU3LCAKLSAgICAyNDIsIDcwLCAzMSwgMTYsIDIxNywgNTYsIDE0MywgMjEzLCA1NiwgMzEsIDE2LCAyMTcsIDU2LCAxNDMsIDIzOSwgMjE2LCAKLSAgICAzMSwgMTYsIDI0NSwgMjMwLCAyMDgsIDIyMSwgMzEsIDE2LCAyNDUsIDc4LCAyMDgsIDIyMSwgMzEsIDE2LCAyMTksIDIxOCwgCi0gICAgMjUxLCAwLCAzMSwgMTYsIDIxOSwgMjE4LCAyNDgsIDIxMSwgMzEsIDE2LCAyMTcsIDM3LCAyNTEsIDAsIDMxLCAxNiwgMjE3LCAKLSAgICAzNywgMjQ4LCAyMTEsIDMxLCAxNiwgMjIzLCAyMjksIDIxNiwgODUsIDMxLCAxNiwgMjA0LCAzMSwgMjE2LCA4NSwgMzEsIAotICAgIDE2LCAxNjIsIDIxNiwgODUsIDMxLCAxNiwgMjE3LCA1NiwgMjE2LCA4NSwgMzEsIDE2LCAyNDEsIDEzOSwgMjE2LCA4NSwgCi0gICAgMzEsIDE2LCAyMTIsIDgxLCAyMTYsIDg1LCAzMSwgMTYsIDIwOSwgNTEsIDIxNiwgODUsIDMxLCAxNiwgMjEyLCA3MywgMjE2LCAKLSAgICA4NSwgMzEsIDE2LCAxMTgsIDIzNiwgMTIsIDIwNywgMTQ5LCAyMTYsIDg1LCAzMSwgMTYsIDIwMywgMTk3LCAyMjEsIDE1NiwgCi0gICAgMzEsIDE2LCA5MSwgMjIxLCAxNTYsIDMxLCAxNiwgMjQ2LCA2MiwgMjAzLCAxOTcsIDIyMSwgMTU2LCAzMSwgMTYsIDUxLCAKLSAgICAyMjEsIDE1NywgMjA0LCAzMywgMzEsIDE2LCA1MSwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAKLSAgICAxNTcsIDExMiwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTEyLCAyNDgsIDQzLCAzMSwgMTYsIDIwOCwgCi0gICAgODYsIDIyMSwgMTU3LCA0OSwgMjA0LCAzMywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgNDksIDI0OCwgNDMsIDMxLCAKLSAgICAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDUwLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCA1MCwgMjQ4LCAKLSAgICA0MywgMzEsIDE2LCAyMDgsIDg2LCAyMjEsIDE1NywgMTIxLCAyMDQsIDMzLCAzMSwgMTYsIDIwOCwgODYsIDIyMSwgMTU3LCAKLSAgICAxMjEsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDIwNCwgMzMsIDMxLCAxNiwgMjA4LCAKLSAgICA4NiwgMjIxLCAxNTcsIDExMiwgNTAsIDI0OCwgNDMsIDMxLCAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDIwNCwgMzMsIDMxLCAKLSAgICAxNiwgMjI0LCAzMCwgMjIxLCAxNTcsIDI0OCwgNDMsIDMxLCAxNiwgMjA4LCA4MywgMjIxLCAxNTcsIDEyMSwgMjA0LCAzMywgCi0gICAgMzEsIDE2LCAyMDgsIDgzLCAyMjEsIDE1NywgMTIxLCAyNDgsIDQzLCAzMSwgMTYsIDIxOSwgNzcsIDIyMSwgMTU2LCAzMSwgCi0gICAgMTYsIDIwNSwgMTgzLCAyMjEsIDE1NiwgMzEsIDE2LCAyMjEsIDE1NywgMjQ4LCA0MywgMzEsIDE2LCAyMjEsIDQ5LCAyMjEsIAotICAgIDE1NiwgMzEsIDE2LCAyNDYsIDEsIDIyMSwgMTU3LCAyMDQsIDMzLCAzMSwgMTYsIDI0NiwgMSwgMjIxLCAxNTcsIDI0OCwgCi0gICAgNDMsIDMxLCAxNiwgMjQ3LCAyMTQsIDMxLCAxNiwgMjA0LCAzMSwgMjIxLCAxNjAsIDMxLCAxNiwgMTYyLCAyMjEsIDE2MCwgCi0gICAgMzEsIDE2LCAyMTcsIDU2LCAyMjEsIDE2MCwgMzEsIDE2LCAyNDEsIDEzOSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA4MSwgCi0gICAgMjIxLCAxNjAsIDMxLCAxNiwgMjA5LCA1MSwgMjIxLCAxNjAsIDMxLCAxNiwgMjEyLCA3MywgMjIxLCAxNjAsIDMxLCAxNiwgCi0gICAgMTE4LCAyMzYsIDEyLCAyMDcsIDE0OSwgMjIxLCAxNjAsIDMxLCAxNiwgMzksIDIxMSwgNzcsIDMxLCAxNiwgMzksIDIxMSwgCi0gICAgMTg0LCAyMTEsIDc3LCAzMSwgMTYsIDM5LCAyMDgsIDk0LCAzMSwgMTYsIDM5LCAyMDgsIDkzLCAzMSwgMTYsIDM5LCAyMDgsIAotICAgIDkyLCAzMSwgMTYsIDI0MCwgMCwgMjA4LCA5NCwgMzEsIDE2LCAyNDAsIDAsIDIwOCwgOTMsIDMxLCAxNiwgMjQwLCAwLCAKLSAgICAyMDgsIDkyLCAzMSwgMTYsIDM5LCAyNTAsIDMxLCAyNDMsIDg1LCAzMSwgMTYsIDM5LCAyMzksIDIyNCwgMzEsIDE2LCAzOSwgCi0gICAgMjM5LCAyMjMsIDMxLCAxNiwgMzksIDIzOSwgMjIyLCAzMSwgMTYsIDM5LCAyMzksIDIyMSwgMzEsIDE2LCAzOSwgMjM5LCAKLSAgICAyMjAsIDMxLCAxNiwgMjQ4LCAxNDIsIDI0OCwgMTU5LCAzMSwgMTYsIDI0MSwgODQsIDI0OCwgMTU5LCAzMSwgMTYsIDI0OCwgCi0gICAgMTQyLCAyMDgsIDI1MCwgMzEsIDE2LCAyNDEsIDg0LCAyMDgsIDI1MCwgMzEsIDE2LCAyNDgsIDE0MiwgMjEyLCAzNywgMzEsIAotICAgIDE2LCAyNDEsIDg0LCAyMTIsIDM3LCAzMSwgMTYsIDI0OCwgMTQyLCAyMTgsIDE3NCwgMzEsIDE2LCAyNDEsIDg0LCAyMTgsIAotICAgIDE3NCwgMzEsIDE2LCAzOSwgMjUxLCAxMzgsIDMxLCAxNiwgMzksIDIxMSwgMTA1LCAzMSwgMTYsIDM5LCAyMDksIDE0MCwgCi0gICAgMzEsIDE2LCAzOSwgMjExLCAxMDYsIDMxLCAxNiwgMzksIDIyNSwgOTYsIDMxLCAxNiwgMzksIDIyNSwgOTUsIDMxLCAxNiwgCi0gICAgMzksIDI1MSwgMTM3LCAzMSwgMTYsIDM5LCAyMjcsIDIsIDMxLCAxNiwgMjUwLCAxMDAsIDIwNiwgMjI0LCAzMSwgMTYsIAotICAgIDI1MCwgMTAwLCAyNDIsIDcwLCAzMSwgMTYsIDM5LCAyNDMsIDEwMCwgMzEsIDE2LCAzOSwgMjE1LCAyNDksIDMxLCAxNiwgCi0gICAgMzksIDIzOSwgMjA2LCAzMSwgMTYsIDM5LCAyMTIsIDMzLCAzMSwgMTYsIDM5LCAyNDgsIDEyMCwgMzEsIDE2LCAzOSwgNTIsIAotICAgIDIwOCwgMTUwLCAzMSwgMTYsIDM5LCAyMDgsIDcwLCAyMDgsIDE1MCwgMzEsIDE2LCAyMTUsIDI1NCwgMzEsIDE2LCAyMTEsIAotICAgIDAsIDMxLCAxNiwgMjAyLCAxNTksIDMxLCAxNiwgMjE4LCAxNjYsIDMxLCAxNiwgMjI0LCAyMDYsIDMxLCAxNiwgMjM5LCAKLSAgICAxNTUsIDMxLCAxNiwgMjQ1LCAxNDAsIDMxLCAxNiwgMjQ0LCA2MiwgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjEyLCAKLSAgICA1NywgMzEsIDE2LCAyMzgsIDE0LCAyMjEsIDE2MSwgMjIxLCAxOTIsIDIxMiwgNTcsIDMxLCAxNiwgMjA4LCAxMjAsIDMxLCAKLSAgICAxNiwgMjA3LCAxNzUsIDMxLCAxNiwgMjMwLCAyMzksIDIwNywgMTc1LCAzMSwgMTYsIDIwNywgMTc2LCAyMTIsIDU3LCAzMSwgCi0gICAgMTYsIDIwNywgMTc2LCAyMDYsIDIyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAzMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAyOCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNywgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNiwgMzEsIDE2LCAyMTksIAotICAgIDIzNCwgMjExLCAyNSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyNCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMywgMzEsIAotICAgIDE2LCAyMTksIDIzNCwgMjExLCAyMiwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyMSwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAKLSAgICAzMCwgMzEsIDE2LCAyMTksIDIzNCwgMjExLCAyOSwgMzEsIDE2LCAyMzcsIDc1LCAzMSwgMTYsIDIyMiwgMjM4LCAzMSwgMTYsIAotICAgIDI0MSwgODQsIDc2LCAyMTEsIDY3LCAzMSwgMTYsIDI0NCwgNTUsIDIxMiwgNTcsIDMxLCAxNiwgMzksIDEyMSwgMjQ3LCAKLSAgICAyNDAsIDMxLCAxNiwgMzksIDExMiwgMjQ3LCAyNDAsIDMxLCAxNiwgMzksIDIzNywgODgsIDMxLCAxNiwgMzksIDIxMiwgMjMsIAotICAgIDIxOCwgOTksIDMxLCAxNiwgMjE5LCAyOCwgODIsIDMxLCAxNiwgMjE5LCAyOCwgMTEyLCA4MiwgMzEsIDE2LCAxNjIsIDIxOSwgCi0gICAgMjgsIDgyLCAzMSwgMTYsIDIzOCwgNDcsIDIwNiwgMjI0LCAzMSwgMTYsIDIzOCwgNDcsIDI0MiwgNzAsIDMxLCAxNiwgMywgCi0gICAgMjM5LCAyNTUsIDMxLCAxNiwgMjQ0LCAxNjgsIDMxLCAxNiwgMjQ0LCAxNjksIDI1MSwgMTQsIDMxLCAxNiwgMjI1LCA2NSwgCi0gICAgMzEsIDE2LCAyMjcsIDIwLCAzMSwgMTYsIDI0NywgMjExLCAzMSwgMTYsIDIxMywgMTQ3LCAyMDQsIDMzLCAzMSwgMTYsIAotICAgIDIxMywgMTQ3LCAyNDgsIDQzLCAzMSwgMTYsIDIyNCwgMTA2LCAzMSwgMTYsIDIyNCwgMTA3LCAyNDgsIDQzLCAzMSwgMTYsIAotICAgIDIxMywgMTQxLCAyMDQsIDMzLCAzMSwgMTYsIDIxMywgMTQxLCAyNDgsIDQzLCAzMSwgMTYsIDIzOSwgOTMsIDIwNCwgMzMsIAotICAgIDMxLCAxNiwgMjM5LCA5MywgMjQ4LCA0MywgMzEsIDE2LCAyMjcsIDIxLCAyMTgsIDI0NCwgMjE2LCA4NSwgMzEsIDE2LCAKLSAgICAyMjcsIDIxLCAyMzEsIDU0LCAyMTYsIDg1LCAzMSwgMTYsIDI0NywgMjEyLCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQ3LCAKLSAgICAyMTYsIDg1LCAzMSwgMTYsIDIyNCwgMTA3LCAyMTYsIDg1LCAzMSwgMTYsIDIxMywgMTQxLCAyMTYsIDg1LCAzMSwgMTYsIAotICAgIDIwOSwgMTU0LCAyMTgsIDI0MiwgMjQ1LCAxMDQsIDIxNywgMjE2LCAyMTgsIDI0MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAKLSAgICAyNDIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1MywgMzEsIDE2LCAyMDksIDE1NCwgMjE4LCAyNDIsIDI0NSwgMTA0LCAKLSAgICAyMTcsIDIxNiwgMjE4LCAyNDQsIDI0MywgMTgxLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAKLSAgICAyMTYsIDIxOCwgMjQzLCAzMSwgMTYsIDIwOSwgMTU0LCAyMzEsIDUyLCAyNDUsIDEwNCwgMjE3LCAyMTYsIDIzMSwgNTMsIAotICAgIDMxLCAxNiwgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODEsIDMxLCAxNiwgCi0gICAgMjA5LCAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxODAsIDMxLCAxNiwgMjA5LCAKLSAgICAxNTQsIDIzMSwgNTIsIDI0NSwgMTA0LCAyMTcsIDIxNiwgMjMxLCA1NCwgMjQzLCAxNzksIDMxLCAxNiwgMjQ1LCAxMzMsIAotICAgIDMxLCAxNiwgMjM3LCAyNDMsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgMTYsIDIzNywgMjQzLCAyNDAsIDE3NSwgMjQ2LCAzMCwgCi0gICAgMzEsIDE2LCA1MSwgMjQ5LCAyNTUsIDMxLCAxNiwgMjA1LCAyMDMsIDMxLCAxNiwgMjE4LCA2NiwgMzEsIDE2LCAyNDYsIDIxLCAKLSAgICAzMSwgMTYsIDIxNCwgMjAwLCAzMSwgMTYsIDI0NiwgMjUsIDMxLCAxNiwgMjA4LCAxMzgsIDMxLCAxNiwgMjE4LCAzNiwgMzEsIAotICAgIDE2LCAyMTgsIDM3LCAyMzksIDIwOSwgMzEsIDE2LCAyMTQsIDIwMSwgMjM5LCAyMDksIDMxLCAxNiwgMjA4LCAxMzksIDIxNiwgCi0gICAgODIsIDMxLCAxNiwgMjE4LCAyMjUsIDIxMCwgMjQ3LCAzMSwgMTYsIDIyOSwgOTAsIDI0NywgMTI2LCAyNDYsIDMwLCAzMSwgCi0gICAgMTYsIDIyOSwgOTAsIDI0MSwgODQsIDc2LCAyMTgsIDE1OSwgMzEsIDE2LCAyMjksIDkwLCA0NiwgMjIxLCAxNjAsIDMxLCAKLSAgICAxNiwgMjI5LCA5MCwgMjE2LCAxNTAsIDgyLCAzMSwgMTYsIDIyOSwgOTAsIDIwNCwgMzEsIDIyMSwgMTYwLCAzMSwgMTYsIAotICAgIDIyOSwgOTAsIDE2MiwgMjIxLCAxNjAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDI0MiwgCi0gICAgNzAsIDMxLCAxNiwgMjI5LCA5MCwgMjE3LCA1NiwgMjIxLCAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgCi0gICAgOTAsIDI0MSwgMTM5LCAyMjEsIDE2MSwgMjExLCA3OCwgMjQyLCA3MCwgMzEsIDE2LCAyMjksIDkwLCAyNDEsIDEzOSwgMjIxLCAKLSAgICAxNjEsIDIxMSwgNzgsIDIwNiwgMjI0LCAzMSwgMTYsIDIyOSwgOTAsIDIzOSwgMjE3LCA1NCwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTM3LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEyNywgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMjAsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTEyLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwNiwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDUsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEwMywgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDcsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQ2LCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxNDQsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTQzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDE0MiwgMzAsIDIwNSwgMTg4LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxNDEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTQwLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTM2LCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzNSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMzQsIAotICAgIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTMzLCAzMCwgMjA1LCAxODgsIDIyMSwgMTY0LCAyMTAsIDEzMiwgMzAsIAotICAgIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMTEsIDMwLCAyMDUsIDE4OCwgMjIxLCAxNjQsIDIxMCwgMTEwLCAzMCwgMjA1LCAKLSAgICAxODgsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIwNSwgMTg4LCAyMjEsIDE2NCwgMjEwLCAxMDgsIDMwLCAyMDUsIDE4OCwgCi0gICAgMjIxLCAxNjQsIDIxMCwgMTA3LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAKLSAgICAyMTAsIDEzNywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIwLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTIsIAotICAgIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwNSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA0LCAzMCwgMjMxLCAKLSAgICA1LCAyMjEsIDE2NCwgMjEwLCAxNDYsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDE0NSwgMzAsIDIzMSwgNSwgMjIxLCAKLSAgICAxNjQsIDIxMCwgMTQ0LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxNDMsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIAotICAgIDE0MCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTM5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMzgsIDMwLCAKLSAgICAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTMyLCAzMCwgMjMxLCA1LCAKLSAgICAyMjEsIDE2NCwgMjEwLCAxMzEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEzMCwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIAotICAgIDIxMCwgMTI5LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjgsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEyNiwgCi0gICAgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTI1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMjQsIDMwLCAyMzEsIAotICAgIDUsIDIyMSwgMTY0LCAyMTAsIDEyMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTIyLCAzMCwgMjMxLCA1LCAyMjEsIAotICAgIDE2NCwgMjEwLCAxMjEsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgCi0gICAgMTE4LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTcsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDExNiwgMzAsIAotICAgIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTE1LCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMTQsIDMwLCAyMzEsIDUsIAotICAgIDIyMSwgMTY0LCAyMTAsIDExMywgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTExLCAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgCi0gICAgMjEwLCAxMTAsIDMwLCAyMzEsIDUsIDIyMSwgMTY0LCAyMTAsIDEwOSwgMzAsIDIzMSwgNSwgMjIxLCAxNjQsIDIxMCwgMTA4LCAKLSAgICAzMCwgMjMxLCA1LCAyMjEsIDE2NCwgMjEwLCAxMDcsIDM5LCAzMCwgMzEsIDIwOCwgNjYsIDM5LCAzMCwgMzEsIDIwOSwgCi0gICAgMTI0LCAzOSwgMzAsIDMxLCAyMTgsIDI1MywgMzAsIDMxLCAyMjcsIDIwNCwgMjI0LCA0NSwgMzUsIDI0MSwgMTc5LCAyNDMsIAotICAgIDE5NSwgMzUsIDIzNywgNTAsIDI0MSwgMTc5LCAyNDMsIDE5NSwgMzUsIDIzNiwgMTYsIDI0MSwgMTc5LCAyNDMsIDE5NSwgCi0gICAgMzUsIDI0MSwgMTc4LCAyMzcsIDUxLCAyNDMsIDE5NSwgMzUsIDI0MSwgMTc4LCAyMzYsIDE1LCAyNDMsIDE5NSwgMzUsIAotICAgIDI0MSwgMTc5LCAyMDksIDEyNiwgMzUsIDI0NiwgMjE3LCAyMDksIDEyNiwgMzUsIDIzOSwgMTAyLCAyNDYsIDYxLCAyMDksIAotICAgIDEyNiwgMzUsIDIyNCwgOTgsIDIwOSwgMTI2LCAzNSwgMjQ4LCAyMjEsIDIwOSwgMTI2LCAzNSwgMjI5LCAxOTUsIDIxMiwgCi0gICAgMzYsIDIwOSwgMTI2LCAzNSwgMjQ1LCAxODUsIDIwOSwgMTI2LCAzNSwgMjUwLCA3NywgMjA5LCAxMjYsIDM1LCAyMTksIAotICAgIDI1MCwgMjA5LCAxMjYsIDM1LCAyNDcsIDIyMSwgMjE5LCAyMTEsIDIwOSwgMTI2LCAzNSwgMjQ0LCA1NywgMjE5LCAyNDUsIAotICAgIDI0MywgMTQ4LCAyMDksIDEyNiwgMzUsIDI0MywgMTQ1LCAyMDksIDEyNiwgMzUsIDIwMiwgMjI1LCAyMDksIDEyNiwgMzUsIAotICAgIDIzMSwgNDAsIDIwOSwgMTI2LCAzNSwgMjE5LCA3LCAyMDksIDEyNiwgMzUsIDIxNiwgMTU3LCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMTk3LCAyMDksIDEyNiwgMzUsIDIzNiwgMTI3LCAyNDksIDI1LCAyMDksIDEyNiwgMzUsIDIwNCwgMTAzLCAyMDksIDEyNiwgCi0gICAgMzUsIDIzOSwgMTgxLCAyMDksIDEyNiwgMzUsIDI1MSwgMTEyLCAyMDksIDEyNiwgMzUsIDIxNiwgMTE0LCAyMDksIDEyNiwgCi0gICAgMzUsIDIxNiwgODksIDIwOSwgMTI2LCAzNSwgMjQxLCAxNzcsIDIwOSwgMTI2LCAzNSwgMjMwLCA4NSwgMjA5LCAxMjYsIDM1LCAKLSAgICAyNDUsIDE5MiwgMjA5LCAxMjYsIDM1LCAyNDEsIDgzLCAyMDksIDEyNiwgMzUsIDI0MiwgMTUsIDIwOSwgMTI2LCAzNSwgCi0gICAgMjQ2LCAxODYsIDIwOSwgMTI2LCAzNSwgMjQ0LCA2NywgMjA5LCAxMjYsIDM1LCAyNiwgMjE2LCA4OCwgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTksIDE2MCwgMjA5LCAxMjYsIDM1LCAyMjcsIDIwOCwgMjA5LCAxMjYsIDM1LCAyNDYsIDE0LCAyMDksIDEyNiwgMzUsIAotICAgIDIyOSwgODAsIDIwOSwgMTI2LCAzNSwgMjM4LCAyMTQsIDIwOSwgMTI2LCAzNSwgMjExLCA0MywgMjA5LCAxMjYsIDM1LCAKLSAgICAyMTcsIDE2OCwgMjA5LCAxMjYsIDM1LCAyMzksIDEwMSwgMjA5LCAxMjYsIDM1LCAyMTYsIDkwLCAyMDksIDEyNiwgMzUsIAotICAgIDIyNywgMjQ3LCAyMTksIDI0NSwgMjI0LCA3OCwgMjA5LCAxMjYsIDM1LCAyMTYsIDg2LCAyMDksIDEyNiwgMzUsIDIzOCwgCi0gICAgMzMsIDIwOCwgMTczLCAyMjUsIDMsIDIwOSwgMTI2LCAzNSwgMjQxLCA4NSwgMjA5LCAxMjYsIDM1LCAyMTEsIDU2LCAyMDksIAotICAgIDEyNiwgMzUsIDIzNywgMjQ1LCAyMDksIDEyNiwgMzUsIDI0MSwgNzYsIDIwOSwgMTI2LCAzNSwgMjE5LCA1MCwgMjA5LCAKLSAgICAxMjYsIDM1LCAyMTUsIDI0MiwgMjA5LCAxMjYsIDM1LCAyMzksIDIwNywgMjA5LCAxMjYsIDM1LCAyMDYsIDY0LCAyMTksIAotICAgIDI0NSwgMjA0LCA4NCwgMjA5LCAxMjYsIDM1LCAyNDUsIDIwMiwgMjA5LCAxMjYsIDM1LCAyMjUsIDE4LCAyMDksIDEyNiwgCi0gICAgMzUsIDI0MCwgMjQ1LCAyMDksIDEyNiwgMzUsIDIwNiwgMjM0LCAyMDksIDEyNiwgMzUsIDI0MywgMTgyLCAyMDksIDEyNiwgCi0gICAgMzUsIDI0NiwgMTYsIDIyNCwgNywgMjA5LCAxMjYsIDM1LCAyMzcsIDIyMiwgMjA5LCAxMjYsIDM1LCAyMzgsIDIxNSwgMjMxLCAKLSAgICA0OSwgMjA5LCAxMjYsIDM1LCAyMjUsIDczLCAyMDksIDEyNiwgMzUsIDI1MSwgMTMzLCAyMDksIDEyNiwgMzUsIDI0MSwgCi0gICAgMTAxLCAyMDksIDEyNiwgMzUsIDI0MiwgNzQsIDIwOSwgMTI2LCAzNSwgMjA0LCA4MiwgMjA5LCAxMjYsIDM1LCAyMTIsIAotICAgIDExNSwgMjA5LCAxMjYsIDM1LCAyMzEsIDE0LCAyMDksIDEyNiwgMzUsIDI0NCwgMjUsIDIwOSwgMTI2LCAzNSwgMjQ0LCAKLSAgICAxNDgsIDIwOSwgMTI2LCAzNSwgMjQzLCAxNzgsIDIwOSwgMTI2LCAzNSwgMjQwLCAyMDksIDIwOSwgMTI2LCAzNSwgMjEzLCAKLSAgICAxMDQsIDIwOSwgMTI2LCAzNSwgMjExLCA2MCwgMjA5LCAxMjYsIDM1LCAyMzcsIDkwLCAyMDksIDEyNiwgMzUsIDI0NSwgCi0gICAgMjI2LCAyMDksIDEyNiwgMzUsIDI0NiwgMTEsIDIwOSwgMTI2LCAzNSwgMjQwLCA4NywgMjA5LCAxMjYsIDM1LCAyNTEsIDc2LCAKLSAgICAyMDksIDEyNiwgMzUsIDI0NSwgMjI1LCAyMDksIDEyNiwgMzUsIDIyMCwgMzIsIDIwOSwgOTMsIDIwNiwgNDEsIDIwOSwgCi0gICAgMTI2LCAzNSwgMjQzLCAyMDQsIDIwOSwgMTI2LCAzNSwgMjI4LCAxMDEsIDIwOSwgMTI2LCAzNSwgMjM5LCAxNTAsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxMDgsIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAKLSAgICAxNDksIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIAotICAgIDE3LCAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA2LCAyMzYsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAKLSAgICAyMDYsIDIzNiwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDYsIDIzNiwgMTcsIDIyMiwgNjMsIDI0NSwgMTUzLCAKLSAgICAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxMDgsIDI0NSwgCi0gICAgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDcsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNDksIAotICAgIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAxNzAsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAKLSAgICAxOTUsIDI0NSwgMTUzLCAyMTUsIDIxNywgMjA5LCAxNDgsIDE3LCAyMTMsIDExMSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIAotICAgIDE0OCwgMTcsIDE5OSwgMjQ1LCAxNTMsIDIxNSwgMjE3LCAyMDksIDE0OCwgMTcsIDIyMiwgNjMsIDEzLCAyNiwgNiwgNjMsIAotICAgIDEzLCAyNiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCAyNiwgNiwgMjQ1LCA1MSwgMTMsIDI2LCA2LCAKLSAgICA3NCwgMTMsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDI2LCA2LCAyMzksIDc1LCAxMywgMjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIAotICAgIDYsIDc1LCAxMywgMjYsIDYsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgNiwgMTU5LCAxMywgMjYsIAotICAgIDYsIDIyNiwgMTg1LCAxMywgMjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDYsIDc4LCAxMywgMjYsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDYsIDE0NiwgMTMsIDI2LCA2LCAxOTQsIDEzLCAyNiwgNiwgMjEwLCA2OSwgMTMsIAotICAgIDI2LCA2LCA2OCwgMTMsIDI2LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCA2LCAyMDMsIDE5NiwgCi0gICAgMTMsIDI2LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCA1LCA2MywgMTMsIDI2LCA1LCAyNDksIAotICAgIDI1NSwgMTMsIDI2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCA1LCAyNDUsIDUxLCAxMywgMjYsIDUsIDc0LCAxMywgMjYsIDUsIAotICAgIDI0MCwgMTc0LCAxMywgMjYsIDUsIDIzOSwgNzUsIDEzLCAyNiwgNSwgMjM3LCAxNzEsIDEzLCAyNiwgNSwgNzUsIDEzLCAyNiwgCi0gICAgNSwgMjMwLCAxODQsIDEzLCAyNiwgNSwgMjMwLCA1NCwgMTMsIDI2LCA1LCAxNTksIDEzLCAyNiwgNSwgMjI2LCAxODUsIDEzLCAKLSAgICAyNiwgNSwgMjIzLCAxNjMsIDEzLCAyNiwgNSwgNzgsIDEzLCAyNiwgNSwgMjE5LCAxODQsIDEzLCAyNiwgNSwgMjE3LCAxMzQsIAotICAgIDEzLCAyNiwgNSwgMTQ2LCAxMywgMjYsIDUsIDE5NCwgMTMsIDI2LCA1LCAyMTAsIDY5LCAxMywgMjYsIDUsIDY4LCAxMywgCi0gICAgMjYsIDUsIDIwNiwgMTY0LCAxMywgMjYsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMjYsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDYsIDYzLCAxMywgMzcsIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMzcsIDYsIDI0NywgMTI1LCAxMywgMzcsIDYsIDI0NSwgNTEsIDEzLCAzNywgNiwgNzQsIDEzLCAzNywgNiwgMjQwLCAxNzQsIAotICAgIDEzLCAzNywgNiwgMjM5LCA3NSwgMTMsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDM3LCA2LCA3NSwgMTMsIDM3LCA2LCAyMzAsIAotICAgIDE4NCwgMTMsIDM3LCA2LCAyMzAsIDU0LCAxMywgMzcsIDYsIDE1OSwgMTMsIDM3LCA2LCAyMjYsIDE4NSwgMTMsIDM3LCA2LCAKLSAgICAyMjMsIDE2MywgMTMsIDM3LCA2LCA3OCwgMTMsIDM3LCA2LCAyMTksIDE4NCwgMTMsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIAotICAgIDM3LCA2LCAxNDYsIDEzLCAzNywgNiwgMTk0LCAxMywgMzcsIDYsIDIxMCwgNjksIDEzLCAzNywgNiwgNjgsIDEzLCAzNywgNiwgCi0gICAgMjA2LCAxNjQsIDEzLCAzNywgNiwgMjA0LCAxNDQsIDEzLCAzNywgNiwgMjAzLCAxOTYsIDEzLCAzNywgNiwgMjAzLCAxMjQsIAotICAgIDEzLCAzNywgNiwgMjAyLCAxNTksIDEzLCAzNywgNSwgNjMsIDEzLCAzNywgNSwgMjQ5LCAyNTUsIDEzLCAzNywgNSwgMjQ3LCAKLSAgICAxMjUsIDEzLCAzNywgNSwgMjQ1LCA1MSwgMTMsIDM3LCA1LCA3NCwgMTMsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzksIDc1LCAxMywgMzcsIDUsIDc1LCAxMywgMzcsIDUsIDIzMCwgMTg0LCAxMywgMzcsIDUsIDIzMCwgNTQsIDEzLCAzNywgCi0gICAgNSwgMTU5LCAxMywgMzcsIDUsIDIyNiwgMTg1LCAxMywgMzcsIDUsIDIyMywgMTYzLCAxMywgMzcsIDUsIDc4LCAxMywgMzcsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMzcsIDUsIDIxNywgMTM0LCAxMywgMzcsIDUsIDE0NiwgMTMsIDM3LCA1LCAxOTQsIDEzLCAzNywgCi0gICAgNSwgMjEwLCA2OSwgMTMsIDM3LCA1LCA2OCwgMTMsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDM3LCA1LCAyMDQsIDE0NCwgMTMsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDM3LCA1LCAyMDMsIDEyNCwgMTMsIDM3LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAzNywgNiwgCi0gICAgNjMsIDEzLCAyNiwgMzcsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAzNywgNiwgMjQ1LCAKLSAgICA1MSwgMTMsIDI2LCAzNywgNiwgNzQsIDEzLCAyNiwgMzcsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDM3LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMjYsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAzNywgNiwgNzUsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMzAsIDU0LCAxMywgMjYsIDM3LCA2LCAxNTksIDEzLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgMjYsIAotICAgIDM3LCA2LCAyMjMsIDE2MywgMTMsIDI2LCAzNywgNiwgNzgsIDEzLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDEzNCwgMTMsIDI2LCAzNywgNiwgMTQ2LCAxMywgMjYsIDM3LCA2LCAxOTQsIDEzLCAyNiwgMzcsIDYsIDIxMCwgCi0gICAgNjksIDEzLCAyNiwgMzcsIDYsIDY4LCAxMywgMjYsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDI2LCAzNywgNiwgMjA0LCAxNDQsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIwMywgMTk2LCAxMywgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDI2LCAzNywgNiwgMjAyLCAKLSAgICAxNTksIDEzLCAyNiwgMzcsIDUsIDYzLCAxMywgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDI2LCAzNywgNSwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMzcsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMzcsIDUsIDc0LCAxMywgMjYsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDI2LCAzNywgNSwgMjM5LCA3NSwgMTMsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCAyNiwgMzcsIDUsIDc1LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDI2LCAzNywgNSwgMTU5LCAxMywgMjYsIDM3LCAKLSAgICA1LCAyMjYsIDE4NSwgMTMsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCAyNiwgMzcsIDUsIDc4LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAzNywgNSwgMjE3LCAxMzQsIDEzLCAyNiwgMzcsIDUsIDE0NiwgMTMsIDI2LCAzNywgNSwgCi0gICAgMTk0LCAxMywgMjYsIDM3LCA1LCAyMTAsIDY5LCAxMywgMjYsIDM3LCA1LCA2OCwgMTMsIDI2LCAzNywgNSwgMjA2LCAxNjQsIAotICAgIDEzLCAyNiwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgMjYsIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAzNywgNSwgMjAzLCAKLSAgICAxMjQsIDEzLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMTMyLCA2LCA2MywgMTMsIDEzMiwgNiwgMjQ3LCAxMjUsIDEzLCAKLSAgICAxMzIsIDYsIDI0NSwgNTEsIDEzLCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAxMzIsIDYsIDIzMCwgMTg0LCAxMywgMTMyLCA2LCAKLSAgICAyMzAsIDU0LCAxMywgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDEzMiwgNiwgNzgsIDEzLCAxMzIsIDYsIDIxOSwgMTg0LCAxMywgCi0gICAgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDEzMiwgNiwgMTk0LCAxMywgMTMyLCA2LCAyMTAsIDY5LCAxMywgMTMyLCA2LCA2OCwgCi0gICAgMTMsIDEzMiwgNiwgMjA2LCAxNjQsIDEzLCAxMzIsIDYsIDIwNCwgMTQ0LCAxMywgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDEzMiwgNiwgMjAzLCAxMjQsIDEzLCAxMzIsIDYsIDIwMiwgMTU5LCAxMywgMTMyLCA1LCA2MywgMTMsIDEzMiwgNSwgMjQ5LCAKLSAgICAyNTUsIDEzLCAxMzIsIDUsIDI0NywgMTI1LCAxMywgMTMyLCA1LCAyNDUsIDUxLCAxMywgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIAotICAgIDEzMiwgNSwgMjM3LCAxNzEsIDEzLCAxMzIsIDUsIDc1LCAxMywgMTMyLCA1LCAyMzAsIDE4NCwgMTMsIDEzMiwgNSwgMjMwLCAKLSAgICA1NCwgMTMsIDEzMiwgNSwgMTU5LCAxMywgMTMyLCA1LCAyMjYsIDE4NSwgMTMsIDEzMiwgNSwgMjIzLCAxNjMsIDEzLCAxMzIsIAotICAgIDUsIDIxOSwgMTg0LCAxMywgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDEzMiwgNSwgMTQ2LCAxMywgMTMyLCA1LCAxOTQsIDEzLCAKLSAgICAxMzIsIDUsIDIxMCwgNjksIDEzLCAxMzIsIDUsIDY4LCAxMywgMTMyLCA1LCAyMDYsIDE2NCwgMTMsIDEzMiwgNSwgMjA0LCAKLSAgICAxNDQsIDEzLCAxMzIsIDUsIDIwMywgMTk2LCAxMywgMTMyLCA1LCAyMDMsIDEyNCwgMTMsIDEzMiwgNSwgMjAyLCAxNTksIAotICAgIDEzLCAyNiwgMTMyLCA2LCA2MywgMTMsIDI2LCAxMzIsIDYsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNiwgMjQ3LCAxMjUsIAotICAgIDEzLCAyNiwgMTMyLCA2LCAyNDUsIDUxLCAxMywgMjYsIDEzMiwgNiwgNzQsIDEzLCAyNiwgMTMyLCA2LCAyNDAsIDE3NCwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDIzOSwgNzUsIDEzLCAyNiwgMTMyLCA2LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDYsIDc1LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjMwLCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNiwgMTU5LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjI2LCAxODUsIDEzLCAyNiwgMTMyLCA2LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDYsIDc4LCAKLSAgICAxMywgMjYsIDEzMiwgNiwgMjE5LCAxODQsIDEzLCAyNiwgMTMyLCA2LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDYsIDE0NiwgCi0gICAgMTMsIDI2LCAxMzIsIDYsIDE5NCwgMTMsIDI2LCAxMzIsIDYsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA2LCA2OCwgMTMsIDI2LCAKLSAgICAxMzIsIDYsIDIwNiwgMTY0LCAxMywgMjYsIDEzMiwgNiwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA2LCAyMDMsIDE5NiwgMTMsIAotICAgIDI2LCAxMzIsIDYsIDIwMywgMTI0LCAxMywgMjYsIDEzMiwgNiwgMjAyLCAxNTksIDEzLCAyNiwgMTMyLCA1LCA2MywgMTMsIAotICAgIDI2LCAxMzIsIDUsIDI0OSwgMjU1LCAxMywgMjYsIDEzMiwgNSwgMjQ3LCAxMjUsIDEzLCAyNiwgMTMyLCA1LCAyNDUsIDUxLCAKLSAgICAxMywgMjYsIDEzMiwgNSwgNzQsIDEzLCAyNiwgMTMyLCA1LCAyNDAsIDE3NCwgMTMsIDI2LCAxMzIsIDUsIDIzOSwgNzUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzcsIDE3MSwgMTMsIDI2LCAxMzIsIDUsIDc1LCAxMywgMjYsIDEzMiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMzAsIDU0LCAxMywgMjYsIDEzMiwgNSwgMTU5LCAxMywgMjYsIDEzMiwgNSwgMjI2LCAxODUsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMjMsIDE2MywgMTMsIDI2LCAxMzIsIDUsIDc4LCAxMywgMjYsIDEzMiwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAyNiwgMTMyLCA1LCAyMTcsIDEzNCwgMTMsIDI2LCAxMzIsIDUsIDE0NiwgMTMsIDI2LCAxMzIsIDUsIDE5NCwgMTMsIAotICAgIDI2LCAxMzIsIDUsIDIxMCwgNjksIDEzLCAyNiwgMTMyLCA1LCA2OCwgMTMsIDI2LCAxMzIsIDUsIDIwNiwgMTY0LCAxMywgCi0gICAgMjYsIDEzMiwgNSwgMjA0LCAxNDQsIDEzLCAyNiwgMTMyLCA1LCAyMDMsIDE5NiwgMTMsIDI2LCAxMzIsIDUsIDIwMywgMTI0LCAKLSAgICAxMywgMjYsIDEzMiwgNSwgMjAyLCAxNTksIDEzLCAxNjYsIDYsIDYzLCAxMywgMTY2LCA2LCAyNDksIDI1NSwgMTMsIDE2NiwgCi0gICAgNiwgMjQ1LCA1MSwgMTMsIDE2NiwgNiwgNzQsIDEzLCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMTY2LCA2LCAyMzksIDc1LCAKLSAgICAxMywgMTY2LCA2LCAyMzAsIDE4NCwgMTMsIDE2NiwgNiwgMjMwLCA1NCwgMTMsIDE2NiwgNiwgMTU5LCAxMywgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDE2NiwgNiwgMjIzLCAxNjMsIDEzLCAxNjYsIDYsIDc4LCAxMywgMTY2LCA2LCAyMTksIDE4NCwgMTMsIAotICAgIDE2NiwgNiwgMjE3LCAxMzQsIDEzLCAxNjYsIDYsIDE5NCwgMTMsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDE2NiwgNiwgNjgsIAotICAgIDEzLCAxNjYsIDYsIDIwNiwgMTY0LCAxMywgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDE2NiwgNiwgMjAzLCAxOTYsIDEzLCAKLSAgICAxNjYsIDYsIDIwMywgMTI0LCAxMywgMTY2LCA1LCA2MywgMTMsIDE2NiwgNSwgMjQ5LCAyNTUsIDEzLCAxNjYsIDUsIDI0NywgCi0gICAgMTI1LCAxMywgMTY2LCA1LCAyNDUsIDUxLCAxMywgMTY2LCA1LCA3NCwgMTMsIDE2NiwgNSwgMjQwLCAxNzQsIDEzLCAxNjYsIAotICAgIDUsIDIzOSwgNzUsIDEzLCAxNjYsIDUsIDIzNywgMTcxLCAxMywgMTY2LCA1LCA3NSwgMTMsIDE2NiwgNSwgMjMwLCAxODQsIAotICAgIDEzLCAxNjYsIDUsIDIzMCwgNTQsIDEzLCAxNjYsIDUsIDE1OSwgMTMsIDE2NiwgNSwgMjI2LCAxODUsIDEzLCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMTY2LCA1LCA3OCwgMTMsIDE2NiwgNSwgMjE5LCAxODQsIDEzLCAxNjYsIDUsIDIxNywgMTM0LCAxMywgCi0gICAgMTY2LCA1LCAxNDYsIDEzLCAxNjYsIDUsIDE5NCwgMTMsIDE2NiwgNSwgMjEwLCA2OSwgMTMsIDE2NiwgNSwgNjgsIDEzLCAKLSAgICAxNjYsIDUsIDIwNiwgMTY0LCAxMywgMTY2LCA1LCAyMDQsIDE0NCwgMTMsIDE2NiwgNSwgMjAzLCAxOTYsIDEzLCAxNjYsIDUsIAotICAgIDIwMywgMTI0LCAxMywgMTY2LCA1LCAyMDIsIDE1OSwgMTMsIDE2OSwgNiwgNjMsIDEzLCAxNjksIDYsIDI0OSwgMjU1LCAxMywgCi0gICAgMTY5LCA2LCAyNDUsIDUxLCAxMywgMTY5LCA2LCA3NCwgMTMsIDE2OSwgNiwgMjQwLCAxNzQsIDEzLCAxNjksIDYsIDIzOSwgCi0gICAgNzUsIDEzLCAxNjksIDYsIDc1LCAxMywgMTY5LCA2LCAyMzAsIDE4NCwgMTMsIDE2OSwgNiwgMjMwLCA1NCwgMTMsIDE2OSwgCi0gICAgNiwgMTU5LCAxMywgMTY5LCA2LCAyMjYsIDE4NSwgMTMsIDE2OSwgNiwgNzgsIDEzLCAxNjksIDYsIDE5NCwgMTMsIDE2OSwgCi0gICAgNiwgMjEwLCA2OSwgMTMsIDE2OSwgNiwgNjgsIDEzLCAxNjksIDYsIDIwNiwgMTY0LCAxMywgMTY5LCA2LCAyMDQsIDE0NCwgCi0gICAgMTMsIDE2OSwgNiwgMjAzLCAxOTYsIDEzLCAxNjksIDYsIDIwMywgMTI0LCAxMywgMTY5LCA1LCA2MywgMTMsIDE2OSwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAxNjksIDUsIDI0NywgMTI1LCAxMywgMTY5LCA1LCAyNDUsIDUxLCAxMywgMTY5LCA1LCA3NCwgMTMsIAotICAgIDE2OSwgNSwgMjQwLCAxNzQsIDEzLCAxNjksIDUsIDIzOSwgNzUsIDEzLCAxNjksIDUsIDIzNywgMTcxLCAxMywgMTY5LCA1LCAKLSAgICA3NSwgMTMsIDE2OSwgNSwgMjMwLCAxODQsIDEzLCAxNjksIDUsIDIzMCwgNTQsIDEzLCAxNjksIDUsIDE1OSwgMTMsIDE2OSwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCAxNjksIDUsIDIyMywgMTYzLCAxMywgMTY5LCA1LCA3OCwgMTMsIDE2OSwgNSwgMjE5LCAxODQsIAotICAgIDEzLCAxNjksIDUsIDIxNywgMTM0LCAxMywgMTY5LCA1LCAxNDYsIDEzLCAxNjksIDUsIDE5NCwgMTMsIDE2OSwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDE2OSwgNSwgNjgsIDEzLCAxNjksIDUsIDIwNiwgMTY0LCAxMywgMTY5LCA1LCAyMDQsIDE0NCwgMTMsIDE2OSwgCi0gICAgNSwgMjAzLCAxOTYsIDEzLCAxNjksIDUsIDIwMywgMTI0LCAxMywgMTY5LCA1LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDYzLCAxMywgMjYsIDE2NiwgNiwgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA2LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDYsIAotICAgIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCA2LCA3NCwgMTMsIDI2LCAxNjYsIDYsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDYsIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNiwgNzUsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA2LCAxNTksIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDYsIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNiwgNzgsIDEzLCAyNiwgMTY2LCA2LCAKLSAgICAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDYsIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNiwgMTQ2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMTk0LCAxMywgMjYsIDE2NiwgNiwgMjEwLCA2OSwgMTMsIDI2LCAxNjYsIDYsIDY4LCAxMywgMjYsIDE2NiwgNiwgMjA2LCAKLSAgICAxNjQsIDEzLCAyNiwgMTY2LCA2LCAyMDQsIDE0NCwgMTMsIDI2LCAxNjYsIDYsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNiwgCi0gICAgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA2LCAyMDIsIDE1OSwgMTMsIDI2LCAxNjYsIDUsIDYzLCAxMywgMjYsIDE2NiwgNSwgCi0gICAgMjQ5LCAyNTUsIDEzLCAyNiwgMTY2LCA1LCAyNDcsIDEyNSwgMTMsIDI2LCAxNjYsIDUsIDI0NSwgNTEsIDEzLCAyNiwgMTY2LCAKLSAgICA1LCA3NCwgMTMsIDI2LCAxNjYsIDUsIDI0MCwgMTc0LCAxMywgMjYsIDE2NiwgNSwgMjM5LCA3NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzNywgMTcxLCAxMywgMjYsIDE2NiwgNSwgNzUsIDEzLCAyNiwgMTY2LCA1LCAyMzAsIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIzMCwgNTQsIDEzLCAyNiwgMTY2LCA1LCAxNTksIDEzLCAyNiwgMTY2LCA1LCAyMjYsIDE4NSwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIyMywgMTYzLCAxMywgMjYsIDE2NiwgNSwgNzgsIDEzLCAyNiwgMTY2LCA1LCAyMTksIDE4NCwgMTMsIDI2LCAxNjYsIDUsIAotICAgIDIxNywgMTM0LCAxMywgMjYsIDE2NiwgNSwgMTQ2LCAxMywgMjYsIDE2NiwgNSwgMTk0LCAxMywgMjYsIDE2NiwgNSwgMjEwLCAKLSAgICA2OSwgMTMsIDI2LCAxNjYsIDUsIDY4LCAxMywgMjYsIDE2NiwgNSwgMjA2LCAxNjQsIDEzLCAyNiwgMTY2LCA1LCAyMDQsIAotICAgIDE0NCwgMTMsIDI2LCAxNjYsIDUsIDIwMywgMTk2LCAxMywgMjYsIDE2NiwgNSwgMjAzLCAxMjQsIDEzLCAyNiwgMTY2LCA1LCAKLSAgICAyMDIsIDE1OSwgMTMsIDQxLCA2LCA2MywgMTMsIDQxLCA2LCAyNDksIDI1NSwgMTMsIDQxLCA2LCAyNDcsIDEyNSwgMTMsIAotICAgIDQxLCA2LCAyNDUsIDUxLCAxMywgNDEsIDYsIDc0LCAxMywgNDEsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDYsIDIzOSwgNzUsIAotICAgIDEzLCA0MSwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgNiwgNzUsIDEzLCA0MSwgNiwgMjMwLCAxODQsIDEzLCA0MSwgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCA2LCAxNTksIDEzLCA0MSwgNiwgMjI2LCAxODUsIDEzLCA0MSwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgNiwgCi0gICAgNzgsIDEzLCA0MSwgNiwgMjE5LCAxODQsIDEzLCA0MSwgNiwgMjE3LCAxMzQsIDEzLCA0MSwgNiwgMTQ2LCAxMywgNDEsIDYsIAotICAgIDE5NCwgMTMsIDQxLCA2LCAyMTAsIDY5LCAxMywgNDEsIDYsIDY4LCAxMywgNDEsIDYsIDIwNiwgMTY0LCAxMywgNDEsIDYsIAotICAgIDIwNCwgMTQ0LCAxMywgNDEsIDYsIDIwMywgMTk2LCAxMywgNDEsIDYsIDIwMywgMTI0LCAxMywgNDEsIDYsIDIwMiwgMTU5LCAKLSAgICAxMywgNDEsIDUsIDYzLCAxMywgNDEsIDUsIDI0OSwgMjU1LCAxMywgNDEsIDUsIDI0NywgMTI1LCAxMywgNDEsIDUsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgNSwgNzQsIDEzLCA0MSwgNSwgMjQwLCAxNzQsIDEzLCA0MSwgNSwgMjM5LCA3NSwgMTMsIDQxLCA1LCAKLSAgICAyMzcsIDE3MSwgMTMsIDQxLCA1LCA3NSwgMTMsIDQxLCA1LCAyMzAsIDE4NCwgMTMsIDQxLCA1LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDUsIDE1OSwgMTMsIDQxLCA1LCAyMjYsIDE4NSwgMTMsIDQxLCA1LCAyMjMsIDE2MywgMTMsIDQxLCA1LCA3OCwgMTMsIDQxLCAKLSAgICA1LCAyMTksIDE4NCwgMTMsIDQxLCA1LCAyMTcsIDEzNCwgMTMsIDQxLCA1LCAxNDYsIDEzLCA0MSwgNSwgMTk0LCAxMywgNDEsIAotICAgIDUsIDIxMCwgNjksIDEzLCA0MSwgNSwgNjgsIDEzLCA0MSwgNSwgMjA2LCAxNjQsIDEzLCA0MSwgNSwgMjA0LCAxNDQsIDEzLCAKLSAgICA0MSwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgNSwgMjAzLCAxMjQsIDEzLCA0MSwgNSwgMjAyLCAxNTksIDEzLCA0MSwgMjYsIDYsIAotICAgIDYzLCAxMywgNDEsIDI2LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgNiwgMjQ3LCAxMjUsIDEzLCA0MSwgMjYsIDYsIDI0NSwgCi0gICAgNTEsIDEzLCA0MSwgMjYsIDYsIDc0LCAxMywgNDEsIDI2LCA2LCAyNDAsIDE3NCwgMTMsIDQxLCAyNiwgNiwgMjM5LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgNiwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDYsIDc1LCAxMywgNDEsIDI2LCA2LCAyMzAsIDE4NCwgMTMsIAotICAgIDQxLCAyNiwgNiwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgNiwgMTU5LCAxMywgNDEsIDI2LCA2LCAyMjYsIDE4NSwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDYsIDc4LCAxMywgNDEsIDI2LCA2LCAyMTksIDE4NCwgMTMsIDQxLCAyNiwgCi0gICAgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDYsIDE0NiwgMTMsIDQxLCAyNiwgNiwgMTk0LCAxMywgNDEsIDI2LCA2LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCA2LCA2OCwgMTMsIDQxLCAyNiwgNiwgMjA2LCAxNjQsIDEzLCA0MSwgMjYsIDYsIDIwNCwgMTQ0LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMDMsIDE5NiwgMTMsIDQxLCAyNiwgNiwgMjAzLCAxMjQsIDEzLCA0MSwgMjYsIDYsIDIwMiwgCi0gICAgMTU5LCAxMywgNDEsIDI2LCA1LCA2MywgMTMsIDQxLCAyNiwgNSwgMjQ5LCAyNTUsIDEzLCA0MSwgMjYsIDUsIDI0NywgMTI1LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDUsIDUxLCAxMywgNDEsIDI2LCA1LCA3NCwgMTMsIDQxLCAyNiwgNSwgMjQwLCAxNzQsIDEzLCAKLSAgICA0MSwgMjYsIDUsIDIzOSwgNzUsIDEzLCA0MSwgMjYsIDUsIDIzNywgMTcxLCAxMywgNDEsIDI2LCA1LCA3NSwgMTMsIDQxLCAKLSAgICAyNiwgNSwgMjMwLCAxODQsIDEzLCA0MSwgMjYsIDUsIDIzMCwgNTQsIDEzLCA0MSwgMjYsIDUsIDE1OSwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjI2LCAxODUsIDEzLCA0MSwgMjYsIDUsIDIyMywgMTYzLCAxMywgNDEsIDI2LCA1LCA3OCwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE5LCAxODQsIDEzLCA0MSwgMjYsIDUsIDIxNywgMTM0LCAxMywgNDEsIDI2LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDUsIAotICAgIDE5NCwgMTMsIDQxLCAyNiwgNSwgMjEwLCA2OSwgMTMsIDQxLCAyNiwgNSwgNjgsIDEzLCA0MSwgMjYsIDUsIDIwNiwgMTY0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDQsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDUsIDIwMywgCi0gICAgMTI0LCAxMywgNDEsIDI2LCA1LCAyMDIsIDE1OSwgMTMsIDQxLCAzNywgNiwgNjMsIDEzLCA0MSwgMzcsIDYsIDI0OSwgMjU1LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyNDcsIDEyNSwgMTMsIDQxLCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAzNywgNiwgNzQsIDEzLCAKLSAgICA0MSwgMzcsIDYsIDI0MCwgMTc0LCAxMywgNDEsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDM3LCA2LCAyMzcsIDE3MSwgMTMsIAotICAgIDQxLCAzNywgNiwgNzUsIDEzLCA0MSwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMzAsIDU0LCAxMywgNDEsIAotICAgIDM3LCA2LCAxNTksIDEzLCA0MSwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDM3LCA2LCAyMjMsIDE2MywgMTMsIDQxLCAzNywgCi0gICAgNiwgNzgsIDEzLCA0MSwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIDM3LCA2LCAyMTcsIDEzNCwgMTMsIDQxLCAzNywgNiwgCi0gICAgMTQ2LCAxMywgNDEsIDM3LCA2LCAxOTQsIDEzLCA0MSwgMzcsIDYsIDIxMCwgNjksIDEzLCA0MSwgMzcsIDYsIDY4LCAxMywgCi0gICAgNDEsIDM3LCA2LCAyMDYsIDE2NCwgMTMsIDQxLCAzNywgNiwgMjA0LCAxNDQsIDEzLCA0MSwgMzcsIDYsIDIwMywgMTk2LCAKLSAgICAxMywgNDEsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAzNywgNiwgMjAyLCAxNTksIDEzLCA0MSwgMzcsIDUsIDYzLCAxMywgCi0gICAgNDEsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAzNywgNSwgMjQ3LCAxMjUsIDEzLCA0MSwgMzcsIDUsIDI0NSwgNTEsIDEzLCAKLSAgICA0MSwgMzcsIDUsIDc0LCAxMywgNDEsIDM3LCA1LCAyNDAsIDE3NCwgMTMsIDQxLCAzNywgNSwgMjM5LCA3NSwgMTMsIDQxLCAKLSAgICAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMzcsIDUsIDc1LCAxMywgNDEsIDM3LCA1LCAyMzAsIDE4NCwgMTMsIDQxLCAzNywgCi0gICAgNSwgMjMwLCA1NCwgMTMsIDQxLCAzNywgNSwgMTU5LCAxMywgNDEsIDM3LCA1LCAyMjYsIDE4NSwgMTMsIDQxLCAzNywgNSwgCi0gICAgMjIzLCAxNjMsIDEzLCA0MSwgMzcsIDUsIDc4LCAxMywgNDEsIDM3LCA1LCAyMTksIDE4NCwgMTMsIDQxLCAzNywgNSwgMjE3LCAKLSAgICAxMzQsIDEzLCA0MSwgMzcsIDUsIDE0NiwgMTMsIDQxLCAzNywgNSwgMTk0LCAxMywgNDEsIDM3LCA1LCAyMTAsIDY5LCAxMywgCi0gICAgNDEsIDM3LCA1LCA2OCwgMTMsIDQxLCAzNywgNSwgMjA2LCAxNjQsIDEzLCA0MSwgMzcsIDUsIDIwNCwgMTQ0LCAxMywgNDEsIAotICAgIDM3LCA1LCAyMDMsIDE5NiwgMTMsIDQxLCAzNywgNSwgMjAzLCAxMjQsIDEzLCA0MSwgMzcsIDUsIDIwMiwgMTU5LCAxMywgCi0gICAgNDEsIDI2LCAzNywgNiwgNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDI0NywgCi0gICAgMTI1LCAxMywgNDEsIDI2LCAzNywgNiwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDYsIDc0LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjQwLCAxNzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNiwgMjM3LCAxNzEsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCA3NSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNiwgMjMwLCAKLSAgICA1NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNiwgMjIzLCAxNjMsIDEzLCA0MSwgMjYsIDM3LCA2LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOSwgMTg0LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjE3LCAxMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA2LCAxOTQsIDEzLCAKLSAgICA0MSwgMjYsIDM3LCA2LCAyMTAsIDY5LCAxMywgNDEsIDI2LCAzNywgNiwgNjgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIAotICAgIDE2NCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjAzLCAxOTYsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA2LCAyMDMsIDEyNCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIwMiwgMTU5LCAxMywgNDEsIDI2LCAzNywgNSwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDksIDI1NSwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0NywgMTI1LCAxMywgNDEsIDI2LCAzNywgCi0gICAgNSwgMjQ1LCA1MSwgMTMsIDQxLCAyNiwgMzcsIDUsIDc0LCAxMywgNDEsIDI2LCAzNywgNSwgMjQwLCAxNzQsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCAyMzksIDc1LCAxMywgNDEsIDI2LCAzNywgNSwgMjM3LCAxNzEsIDEzLCA0MSwgMjYsIDM3LCA1LCA3NSwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIzMCwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjMwLCA1NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDE1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyNiwgMTg1LCAxMywgNDEsIDI2LCAzNywgNSwgMjIzLCAxNjMsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCA1LCA3OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOSwgMTg0LCAxMywgNDEsIDI2LCAzNywgNSwgMjE3LCAxMzQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAxNDYsIDEzLCA0MSwgMjYsIDM3LCA1LCAxOTQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTAsIAotICAgIDY5LCAxMywgNDEsIDI2LCAzNywgNSwgNjgsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDYsIDE2NCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIwNCwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjAzLCAxOTYsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMDMsIDEyNCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNiwgNjMsIDEzLCAyMjQsIDQxLCA2LCAyNDksIAotICAgIDI1NSwgMTMsIDIyNCwgNDEsIDYsIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNiwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDc0LCAxMywgMjI0LCA0MSwgNiwgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA2LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCA2LCA3NSwgMTMsIDIyNCwgNDEsIDYsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDYsIDE1OSwgMTMsIDIyNCwgNDEsIDYsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA2LCA3OCwgMTMsIDIyNCwgNDEsIDYsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNiwgCi0gICAgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA2LCAxNDYsIDEzLCAyMjQsIDQxLCA2LCAxOTQsIDEzLCAyMjQsIDQxLCA2LCAyMTAsIAotICAgIDY5LCAxMywgMjI0LCA0MSwgNiwgNjgsIDEzLCAyMjQsIDQxLCA2LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDYsIDIwNCwgCi0gICAgMTQ0LCAxMywgMjI0LCA0MSwgNiwgMjAzLCAxOTYsIDEzLCAyMjQsIDQxLCA2LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDYsIAotICAgIDIwMiwgMTU5LCAxMywgMjI0LCA0MSwgNSwgNjMsIDEzLCAyMjQsIDQxLCA1LCAyNDksIDI1NSwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDI0NywgMTI1LCAxMywgMjI0LCA0MSwgNSwgMjQ1LCA1MSwgMTMsIDIyNCwgNDEsIDUsIDc0LCAxMywgMjI0LCA0MSwgNSwgCi0gICAgMjQwLCAxNzQsIDEzLCAyMjQsIDQxLCA1LCAyMzksIDc1LCAxMywgMjI0LCA0MSwgNSwgMjM3LCAxNzEsIDEzLCAyMjQsIDQxLCAKLSAgICA1LCA3NSwgMTMsIDIyNCwgNDEsIDUsIDIzMCwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjMwLCA1NCwgMTMsIDIyNCwgNDEsIDUsIAotICAgIDE1OSwgMTMsIDIyNCwgNDEsIDUsIDIyNiwgMTg1LCAxMywgMjI0LCA0MSwgNSwgMjIzLCAxNjMsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICA3OCwgMTMsIDIyNCwgNDEsIDUsIDIxOSwgMTg0LCAxMywgMjI0LCA0MSwgNSwgMjE3LCAxMzQsIDEzLCAyMjQsIDQxLCA1LCAKLSAgICAxNDYsIDEzLCAyMjQsIDQxLCA1LCAxOTQsIDEzLCAyMjQsIDQxLCA1LCAyMTAsIDY5LCAxMywgMjI0LCA0MSwgNSwgNjgsIAotICAgIDEzLCAyMjQsIDQxLCA1LCAyMDYsIDE2NCwgMTMsIDIyNCwgNDEsIDUsIDIwNCwgMTQ0LCAxMywgMjI0LCA0MSwgNSwgMjAzLCAKLSAgICAxOTYsIDEzLCAyMjQsIDQxLCA1LCAyMDMsIDEyNCwgMTMsIDIyNCwgNDEsIDUsIDIwMiwgMTU5LCAxMywgMzcsIDUsIDI0MywgCi0gICAgODQsIDc1LCAxMywgMzcsIDUsIDI0MywgODQsIDIzMCwgMTg0LCAxMywgMjYsIDYsIDI1MSwgMiwgMTMsIDI2LCA2LCAyNDgsIAotICAgIDEwNiwgMTMsIDI2LCA2LCAyMzgsIDIzNSwgMTMsIDI2LCA2LCAyNDQsIDM3LCAxMywgMjYsIDYsIDI0MSwgMzcsIDEzLCAyNiwgCi0gICAgNiwgMjAyLCA4MywgMTMsIDI2LCA2LCAyNDAsIDI0OCwgMTMsIDI2LCA2LCAyMDksIDc0LCAxMywgMjYsIDYsIDIzMCwgMjMwLCAKLSAgICAxMywgMjYsIDYsIDIyOSwgMjQ3LCAxMywgMjYsIDYsIDIyOCwgMjQsIDEzLCAyNiwgNiwgMjIzLCAyNDYsIDEzLCAyNiwgNiwgCi0gICAgMjIxLCA4NCwgMTMsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDI2LCA2LCAyMjAsIDM0LCAxMywgMjYsIDYsIDIxOCwgMTY3LCAKLSAgICAxMywgMjYsIDYsIDIxNiwgNTksIDEzLCAyNiwgNiwgMjA5LCA3NSwgOTcsIDEzLCAyNiwgNiwgMjEyLCAxNDQsIDEzLCAyNiwgCi0gICAgNiwgMjA5LCAyMDcsIDEzLCAyNiwgNiwgMjA2LCAyMTYsIDEzLCAyNiwgNiwgMjE4LCAxOTIsIDEzLCAyNiwgNiwgMjQ2LCAKLSAgICAxNDIsIDEzLCAyNiwgNiwgMjE3LCAyMDIsIDEzLCAyNiwgNiwgMjIwLCAzNiwgMTMsIDI2LCAyMjMsIDEwMSwgMTMsIDI2LCAKLSAgICA1LCAyNTEsIDIsIDEzLCAyNiwgNSwgMjQ4LCAxMDYsIDEzLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCAyNiwgNSwgMjQ0LCAzNywgCi0gICAgMTMsIDI2LCA1LCAyNDEsIDM3LCAxMywgMjYsIDUsIDIwMiwgODMsIDEzLCAyNiwgNSwgMjQwLCAyNDgsIDEzLCAyNiwgNSwgCi0gICAgMjA5LCA3NCwgMTMsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDI2LCA1LCAyMjksIDI0NywgMTMsIDI2LCA1LCAyMjgsIDI0LCAKLSAgICAxMywgMjYsIDUsIDIyMywgMjQ2LCAxMywgMjYsIDUsIDIyMSwgODQsIDEzLCAyNiwgNSwgMjAzLCAxNzAsIDEzLCAyNiwgNSwgCi0gICAgMjIwLCAzNCwgMTMsIDI2LCA1LCAyMTgsIDE2NywgMTMsIDI2LCA1LCAyMTYsIDU5LCAxMywgMjYsIDUsIDQ2LCAyMTIsIAotICAgIDE0NCwgMTMsIDI2LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCA1LCAyMDksIDIwNywgMTMsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIAotICAgIDI2LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCA1LCAyNDYsIDE0MiwgMTMsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDI2LCA1LCAKLSAgICAyMjAsIDM2LCAxMywgMjYsIDIxOSwgNjksIDI0MywgMjA1LCAxMywgMjYsIDI0MSwgMzgsIDk3LCAxMywgMjYsIDIwOSwgNzUsIAotICAgIDk3LCAxMywgMjYsIDIyOSwgMjQ4LCA5NywgMTMsIDI2LCAyMTgsIDE5MywgOTcsIDEzLCAyNiwgMjE2LCA2MCwgOTcsIDEzLCAKLSAgICAyNiwgMjE4LCAxNjgsIDk3LCAxMywgMzcsIDYsIDI1MSwgMiwgMTMsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDM3LCA2LCAyMzgsIAotICAgIDIzNSwgMTMsIDM3LCA2LCAyNDQsIDM3LCAxMywgMzcsIDYsIDI0MSwgMzcsIDEzLCAzNywgNiwgMjAyLCA4MywgMTMsIDM3LCAKLSAgICA2LCAyNDAsIDI0OCwgMTMsIDM3LCA2LCAyMDksIDc0LCAxMywgMzcsIDYsIDIzMCwgMjMwLCAxMywgMzcsIDYsIDIyOSwgCi0gICAgMjQ3LCAxMywgMzcsIDYsIDIyOCwgMjQsIDEzLCAzNywgNiwgMjIzLCAyNDYsIDEzLCAzNywgNiwgMjIxLCA4NCwgMTMsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDM3LCA2LCAyMjAsIDM0LCAxMywgMzcsIDYsIDIxOCwgMTY3LCAxMywgMzcsIDYsIDIxNiwgNTksIAotICAgIDEzLCAzNywgNiwgMjA5LCA3NSwgOTcsIDEzLCAzNywgNiwgMjEyLCAxNDQsIDEzLCAzNywgNiwgMjA5LCAyMDcsIDEzLCAzNywgCi0gICAgNiwgMjA2LCAyMTYsIDEzLCAzNywgNiwgMjE4LCAxOTIsIDEzLCAzNywgNiwgMjQ2LCAxNDIsIDEzLCAzNywgNiwgMjE3LCAKLSAgICAyMDIsIDEzLCAzNywgNiwgMjIwLCAzNiwgMTMsIDM3LCAyMjMsIDEwMSwgMTMsIDM3LCA1LCAyNTEsIDIsIDEzLCAzNywgNSwgCi0gICAgMjQ4LCAxMDYsIDEzLCAzNywgNSwgMjM4LCAyMzUsIDEzLCAzNywgNSwgMjQ0LCAzNywgMTMsIDM3LCA1LCAyNDEsIDM3LCAKLSAgICAxMywgMzcsIDUsIDIwMiwgODMsIDEzLCAzNywgNSwgMjQwLCAyNDgsIDEzLCAzNywgNSwgMjA5LCA3NCwgMTMsIDM3LCA1LCAKLSAgICAyMzAsIDIzMCwgMTMsIDM3LCA1LCAyMjksIDI0NywgMTMsIDM3LCA1LCAyMjgsIDI0LCAxMywgMzcsIDUsIDIyMywgMjQ2LCAKLSAgICAxMywgMzcsIDUsIDIyMSwgODQsIDEzLCAzNywgNSwgMjAzLCAxNzAsIDEzLCAzNywgNSwgMjIwLCAzNCwgMTMsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDM3LCA1LCAyMTYsIDU5LCAxMywgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDM3LCA1LCAyMTIsIAotICAgIDE0NCwgMTMsIDM3LCA1LCAyMDksIDIwNywgMTMsIDM3LCA1LCAyMDYsIDIxNiwgMTMsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIAotICAgIDM3LCA1LCAyNDYsIDE0MiwgMTMsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDM3LCA1LCAyMjAsIDM2LCAxMywgMzcsIDIxOSwgCi0gICAgNjksIDI0MywgMjA1LCAxMywgMzcsIDI0MSwgMzgsIDk3LCAxMywgMzcsIDIwOSwgNzUsIDk3LCAxMywgMzcsIDIyOSwgMjQ4LCAKLSAgICA5NywgMTMsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCAzNywgMjE2LCA2MCwgOTcsIDEzLCAzNywgMjE4LCAxNjgsIDk3LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyNTEsIDIsIDEzLCAyNiwgMzcsIDYsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA2LCAyMzgsIDIzNSwgMTMsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDI2LCAzNywgNiwgMjQxLCAzNywgMTMsIDI2LCAzNywgNiwgMjAyLCA4MywgMTMsIAotICAgIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDYsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDYsIDIzMCwgMjMwLCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDI2LCAzNywgNiwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNiwgMjIzLCAyNDYsIDEzLCAKLSAgICAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCAyNiwgMzcsIDYsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA2LCAyMjAsIDM0LCAxMywgCi0gICAgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIDI2LCAzNywgNiwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNiwgMjA5LCA3NSwgOTcsIAotICAgIDEzLCAyNiwgMzcsIDYsIDIxMiwgMTQ0LCAxMywgMjYsIDM3LCA2LCAyMDksIDIwNywgMTMsIDI2LCAzNywgNiwgMjA2LCAKLSAgICAyMTYsIDEzLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgMjYsIDM3LCA2LCAyNDYsIDE0MiwgMTMsIDI2LCAzNywgNiwgCi0gICAgMjE3LCAyMDIsIDEzLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCAyNiwgMzcsIDIyMywgMTAxLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyNTEsIDIsIDEzLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgMjYsIDM3LCA1LCAyMzgsIDIzNSwgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQ0LCAzNywgMTMsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDI2LCAzNywgNSwgMjAyLCA4MywgMTMsIDI2LCAzNywgNSwgCi0gICAgMjQwLCAyNDgsIDEzLCAyNiwgMzcsIDUsIDIwOSwgNzQsIDEzLCAyNiwgMzcsIDUsIDIzMCwgMjMwLCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMjksIDI0NywgMTMsIDI2LCAzNywgNSwgMjI4LCAyNCwgMTMsIDI2LCAzNywgNSwgMjIzLCAyNDYsIDEzLCAyNiwgMzcsIDUsIAotICAgIDIyMSwgODQsIDEzLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgMjYsIDM3LCA1LCAyMjAsIDM0LCAxMywgMjYsIDM3LCA1LCAKLSAgICAyMTgsIDE2NywgMTMsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDI2LCAzNywgNSwgNDYsIDIxMiwgMTQ0LCAxMywgMjYsIAotICAgIDM3LCA1LCAyMTIsIDE0NCwgMTMsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCAyNiwgMzcsIDUsIDIwNiwgMjE2LCAxMywgCi0gICAgMjYsIDM3LCA1LCAyMTgsIDE5MiwgMTMsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIDEzLCAyNiwgMzcsIDUsIDIxNywgMjAyLCAKLSAgICAxMywgMjYsIDM3LCA1LCAyMjAsIDM2LCAxMywgMjYsIDM3LCAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDI2LCAzNywgMjQxLCAKLSAgICAzOCwgOTcsIDEzLCAyNiwgMzcsIDIwOSwgNzUsIDk3LCAxMywgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCAyNiwgMzcsIAotICAgIDIxOCwgMTkzLCA5NywgMTMsIDI2LCAzNywgMjE2LCA2MCwgOTcsIDEzLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjUxLCAyLCAxMywgNDEsIDI2LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNiwgMjM4LCAyMzUsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0NCwgMzcsIDEzLCA0MSwgMjYsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDYsIDIwMiwgODMsIDEzLCA0MSwgCi0gICAgMjYsIDYsIDI0MCwgMjQ4LCAxMywgNDEsIDI2LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCA2LCAyMzAsIDIzMCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjI5LCAyNDcsIDEzLCA0MSwgMjYsIDYsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDYsIDIyMywgMjQ2LCAxMywgNDEsIAotICAgIDI2LCA2LCAyMjEsIDg0LCAxMywgNDEsIDI2LCA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNiwgMjIwLCAzNCwgMTMsIDQxLCAKLSAgICAyNiwgNiwgMjE4LCAxNjcsIDEzLCA0MSwgMjYsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDYsIDIwOSwgNzUsIDk3LCAxMywgCi0gICAgNDEsIDI2LCA2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDYsIDIwNiwgMjE2LCAKLSAgICAxMywgNDEsIDI2LCA2LCAyMTgsIDE5MiwgMTMsIDQxLCAyNiwgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDYsIDIxNywgCi0gICAgMjAyLCAxMywgNDEsIDI2LCA2LCAyMjAsIDM2LCAxMywgNDEsIDI2LCAyMjMsIDEwMSwgMTMsIDQxLCAyNiwgNSwgMjUxLCAyLCAKLSAgICAxMywgNDEsIDI2LCA1LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgNSwgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDUsIDI0NCwgMzcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDUsIDI0MCwgMjQ4LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDksIDc0LCAxMywgNDEsIDI2LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgNSwgMjI5LCAyNDcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIyOCwgMjQsIDEzLCA0MSwgMjYsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCA1LCAyMjEsIDg0LCAKLSAgICAxMywgNDEsIDI2LCA1LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgNSwgMjE4LCAxNjcsIAotICAgIDEzLCA0MSwgMjYsIDUsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDUsIDQ2LCAyMTIsIDE0NCwgMTMsIDQxLCAyNiwgNSwgMjEyLCAKLSAgICAxNDQsIDEzLCA0MSwgMjYsIDUsIDIwOSwgMjA3LCAxMywgNDEsIDI2LCA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgNSwgCi0gICAgMjE4LCAxOTIsIDEzLCA0MSwgMjYsIDUsIDI0NiwgMTQyLCAxMywgNDEsIDI2LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgCi0gICAgNSwgMjIwLCAzNiwgMTMsIDQxLCAyNiwgMjE5LCA2OSwgMjQzLCAyMDUsIDEzLCA0MSwgMjYsIDI0MSwgMzgsIDk3LCAxMywgCi0gICAgNDEsIDI2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMjI5LCAyNDgsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE5MywgOTcsIAotICAgIDEzLCA0MSwgMjYsIDIxNiwgNjAsIDk3LCAxMywgNDEsIDI2LCAyMTgsIDE2OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCA2LCAKLSAgICAyNTEsIDIsIDEzLCA0MSwgMjYsIDM3LCA2LCAyNDgsIDEwNiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIzOCwgMjM1LCAxMywgNDEsIAotICAgIDI2LCAzNywgNiwgMjQ0LCAzNywgMTMsIDQxLCAyNiwgMzcsIDYsIDI0MSwgMzcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDIsIAotICAgIDgzLCAxMywgNDEsIDI2LCAzNywgNiwgMjQwLCAyNDgsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc0LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNiwgMjMwLCAyMzAsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjksIDI0NywgMTMsIDQxLCAyNiwgMzcsIDYsIDIyOCwgMjQsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA2LCAyMjMsIDI0NiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMSwgODQsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMDMsIDE3MCwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzQsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMTgsIDE2NywgMTMsIAotICAgIDQxLCAyNiwgMzcsIDYsIDIxNiwgNTksIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDksIDc1LCA5NywgMTMsIDQxLCAyNiwgMzcsIAotICAgIDYsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNiwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCA2LCAyMDYsIDIxNiwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDYsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNiwgMjQ2LCAxNDIsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA2LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDYsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAyMjMsIDEwMSwgMTMsIAotICAgIDQxLCAyNiwgMzcsIDUsIDI1MSwgMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDI0OCwgMTA2LCAxMywgNDEsIDI2LCAzNywgNSwgCi0gICAgMjM4LCAyMzUsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDQsIDM3LCAxMywgNDEsIDI2LCAzNywgNSwgMjQxLCAzNywgMTMsIDQxLCAKLSAgICAyNiwgMzcsIDUsIDIwMiwgODMsIDEzLCA0MSwgMjYsIDM3LCA1LCAyNDAsIDI0OCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIwOSwgCi0gICAgNzQsIDEzLCA0MSwgMjYsIDM3LCA1LCAyMzAsIDIzMCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyOSwgMjQ3LCAxMywgNDEsIDI2LCAKLSAgICAzNywgNSwgMjI4LCAyNCwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMywgMjQ2LCAxMywgNDEsIDI2LCAzNywgNSwgMjIxLCA4NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIwMywgMTcwLCAxMywgNDEsIDI2LCAzNywgNSwgMjIwLCAzNCwgMTMsIDQxLCAyNiwgMzcsIAotICAgIDUsIDIxOCwgMTY3LCAxMywgNDEsIDI2LCAzNywgNSwgMjE2LCA1OSwgMTMsIDQxLCAyNiwgMzcsIDUsIDQ2LCAyMTIsIDE0NCwgCi0gICAgMTMsIDQxLCAyNiwgMzcsIDUsIDIxMiwgMTQ0LCAxMywgNDEsIDI2LCAzNywgNSwgMjA5LCAyMDcsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICA1LCAyMDYsIDIxNiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIxOCwgMTkyLCAxMywgNDEsIDI2LCAzNywgNSwgMjQ2LCAxNDIsIAotICAgIDEzLCA0MSwgMjYsIDM3LCA1LCAyMTcsIDIwMiwgMTMsIDQxLCAyNiwgMzcsIDUsIDIyMCwgMzYsIDEzLCA0MSwgMjYsIDM3LCAKLSAgICAyMTksIDY5LCAyNDMsIDIwNSwgMTMsIDQxLCAyNiwgMzcsIDI0MSwgMzgsIDk3LCAxMywgNDEsIDI2LCAzNywgMjA5LCA3NSwgCi0gICAgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMjksIDI0OCwgOTcsIDEzLCA0MSwgMjYsIDM3LCAyMTgsIDE5MywgOTcsIDEzLCA0MSwgCi0gICAgMjYsIDM3LCAyMTYsIDYwLCA5NywgMTMsIDQxLCAyNiwgMzcsIDIxOCwgMTY4LCA5NywgMTMsIDI2LCA2LCAyNDMsIDE5OSwgCi0gICAgMTMsIDI2LCA1LCAyNDMsIDE5OSwgMTMsIDI2LCAxNywgMjAyLCA4NCwgMTMsIDI2LCAxNywgMTA1LCAxMywgMjYsIDE3LCAKLSAgICAxMDgsIDEzLCAyNiwgMTcsIDE0NywgMTMsIDI2LCAxNywgMTQ5LCAxMywgMjYsIDE3LCAxNzAsIDEzLCAyNiwgMTcsIDE5NSwgCi0gICAgMTMsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCAyNiwgMTcsIDE5OSwgMTMsIDI2LCAxNywgMjIyLCA2MywgMTMsIDE2OSwgMTcsIAotICAgIDIwMiwgODQsIDEzLCAxNjksIDE3LCAxMDUsIDEzLCAxNjksIDE3LCAxMDgsIDEzLCAxNjksIDE3LCAxNDcsIDEzLCAxNjksIAotICAgIDE3LCAxNDksIDEzLCAxNjksIDE3LCAxNzAsIDEzLCAxNjksIDE3LCAxOTUsIDEzLCAxNjksIDE3LCAyMTMsIDExMSwgMTMsIAotICAgIDE2OSwgMTcsIDE5OSwgMTMsIDE2OSwgMTcsIDIyMiwgNjMsIDEzLCA0MSwgMTcsIDIwMiwgODQsIDEzLCA0MSwgMTcsIDEwNSwgCi0gICAgMTMsIDQxLCAxNywgMTA4LCAxMywgNDEsIDE3LCAxNDcsIDEzLCA0MSwgMTcsIDE0OSwgMTMsIDQxLCAxNywgMTcwLCAxMywgCi0gICAgNDEsIDE3LCAxOTUsIDEzLCA0MSwgMTcsIDIxMywgMTExLCAxMywgNDEsIDE3LCAxOTksIDEzLCA0MSwgMTcsIDIyMiwgNjMsIAotICAgIDEzLCA0MSwgMjYsIDE3LCAyMDIsIDg0LCAxMywgNDEsIDI2LCAxNywgMTA1LCAxMywgNDEsIDI2LCAxNywgMTA4LCAxMywgCi0gICAgNDEsIDI2LCAxNywgMTQ3LCAxMywgNDEsIDI2LCAxNywgMTQ5LCAxMywgNDEsIDI2LCAxNywgMTcwLCAxMywgNDEsIDI2LCAKLSAgICAxNywgMTk1LCAxMywgNDEsIDI2LCAxNywgMjEzLCAxMTEsIDEzLCA0MSwgMjYsIDE3LCAxOTksIDEzLCA0MSwgMjYsIDE3LCAKLSAgICAyMjIsIDYzLCAxMywgMjI0LCA0MSwgMTcsIDIwMiwgODQsIDEzLCAyMjQsIDQxLCAxNywgMTA1LCAxMywgMjI0LCA0MSwgMTcsIAotICAgIDEwOCwgMTMsIDIyNCwgNDEsIDE3LCAxNDcsIDEzLCAyMjQsIDQxLCAxNywgMTQ5LCAxMywgMjI0LCA0MSwgMTcsIDE3MCwgCi0gICAgMTMsIDIyNCwgNDEsIDE3LCAxOTUsIDEzLCAyMjQsIDQxLCAxNywgMjEzLCAxMTEsIDEzLCAyMjQsIDQxLCAxNywgMTk5LCAKLSAgICAxMywgMjI0LCA0MSwgMTcsIDIyMiwgNjMsIDIxLCAxMjgsIDIzMSwgMzUsIDIxLCAyMzcsIDEyMCwgMjMxLCAzNSwgMjEsIAotICAgIDIzNywgMTE2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMDUsIDIzMSwgMzUsIDIxLCAyMzcsIDEwOSwgMjMxLCAzNSwgMjEsIDIzNywgCi0gICAgMTIyLCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDE0OCwgMjA2LCAyNDgsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMjE2LCAxODgsIDIyOSwgMjksIDIxLCAKLSAgICAxMjgsIDEyMiwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAyMzYsIDIzNiwgMjI3LCAKLSAgICAwLCAyMSwgMjM3LCAxMjAsIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMjI0LCAxNDgsIDIxLCAyMzcsIDEyMCwgCi0gICAgMTIyLCAyMjQsIDE0OCwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjE2LCAxODgsIAotICAgIDIyOSwgMjgsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzUsIAotICAgIDIxLCAxMjgsIDEyMiwgMjM2LCAyMzYsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwNywgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxMjIsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAyMDgsIDEwMSwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMjQ1LCA5NywgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgCi0gICAgMjA4LCAyMzYsIDIzNSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMTI3LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAyNDUsIAotICAgIDEyNywgMjEsIDEyOCwgMTAxLCAyNDgsIDExOCwgMTE1LCAyMzEsIDM1LCAyMSwgMTI4LCAxMjIsIDI0OCwgMTE4LCAxMTUsIAotICAgIDIyNCwgMTQ4LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjA5LCAyMSwgMjEsIDIzNywgMTIwLCAxMjIsIDEwMSwgMjA5LCAyMSwgCi0gICAgMjEsIDEyOCwgMTIyLCAxMDEsIDIxMSwgNTMsIDE0OCwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDgsIDExOCwgCi0gICAgMTQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIzNiwgCi0gICAgMjM2LCAyMTEsIDE4NiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMTIsIDEwMSwgMjM2LCAyMzYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAxMjgsIDEyMiwgMTEyLCAxMDEsIDIzNiwgMjM2LCAxNDgsIDI0NSwgMjA3LCAyMSwgMTI4LCAxMjIsIDIzNiwgCi0gICAgMjM2LCAxMDEsIDExMiwgMTQ4LCAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDExMiwgMjExLCAxODYsIDE0OCwgMjM5LCAKLSAgICAxNTEsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NSwgOTcsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI0NiwgNjAsIAotICAgIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDIzNiwgMTE0LCAyMSwgMTI4LCAxMjIsIDEwMSwgMTQ4LCAyMzYsIDIzNSwgMjEsIAotICAgIDEyOCwgMTQ4LCAyNDgsIDEwNCwgMTIyLCAxMDEsIDIxMSwgNTIsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDIwOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDEyOCwgMTAxLCAxNDgsIDIzNiwgMTE1LCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjM2LCAxMTUsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgCi0gICAgMTAxLCAyNDUsIDIwOCwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyNDUsIDEyOCwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDEyOCwgMTIyLCAxMDEsIDI0NSwgMjA4LCAxNDgsIDIzOSwgMTUxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjQ1LCAyMDgsIDI0NSwgOTgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNDUsIDk4LCAxMjIsIDIwNiwgCi0gICAgMjI0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA5OCwgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTAxLCAxNDgsIDQzLCAKLSAgICAxMjIsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDE0OCwgNDMsIDEyMiwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNTAsIDIxNiwgMjE5LCAyMTIsIDEwMSwgMjA2LCAyMjQsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyNTAsIDIxNiwgMjMxLCA1MCwgCi0gICAgMTAxLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDQzLCAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMTQ4LCAyNDUsIDIwOCwgMjM2LCAyMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAxNDgsIDI1MCwgMjE2LCAyMTksIDIxMSwgMjEsIAotICAgIDEyOCwgMTIyLCAxMDEsIDE0OCwgMjUwLCAyMTUsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgCi0gICAgMjA2LCAyMjQsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMjE5LCAyMTIsIDEyMiwgMjQ1LCAxMjcsIDIxLCAxMjgsIAotICAgIDEwMSwgMTQ4LCAyNTAsIDIxNiwgMTIyLCAyMDYsIDIyNCwgMjEsIDEyOCwgMTIyLCAxNDgsIDIzNiwgMTE1LCAxMDEsIDIzNiwgCi0gICAgMjM1LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1MywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMTQ3LCAyMzksIDI1NCwgMjM2LCAyMzUsIDIxLCAyMzcsIDExMSwgMjM5LCAKLSAgICAxNDcsIDIzOSwgMjU0LCAyNDUsIDIwNywgMjEsIDIzNywgMTExLCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA4LCAyMTEsIAotICAgIDE5MywgMjEsIDIzNywgMTE4LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMzksIDE0NywgMjM5LCAKLSAgICAyNTQsIDI0NSwgMjA4LCAyNDgsIDExNywgMjEsIDIzNywgMTA5LCAyMzksIDE0NywgMjM5LCAyNTQsIDI0NSwgMjA3LCAyMSwgCi0gICAgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIAotICAgIDIzOSwgMjU0LCAyMTEsIDE4NSwgMjEsIDIzNywgMTExLCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMzksIDE0NywgCi0gICAgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMjM3LCA0NiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM5LCAxNDcsIAotICAgIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAKLSAgICAxMTEsIDIzNywgNDYsIDIzOSwgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDI0OCwgMTE3LCAyMSwgMjM3LCAxMTEsIDIzOSwgCi0gICAgMjMzLCAyMzksIDI1NCwgMjExLCAxODYsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMjM5LCAyMzMsIDIzOSwgMjU0LCAKLSAgICAyMTEsIDE4NSwgMjEsIDIzNywgMTE2LCAyMzksIDIzMywgMjM5LCAyNTQsIDIxMSwgMTg2LCAyMjAsIDgsIDIxLCAyMzcsIAotICAgIDEwOSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjIwLCA4LCAyMSwgMjM3LCAxMDUsIDIzOSwgMjMzLCAyMzksIAotICAgIDI1NCwgMjExLCAxODUsIDIxLCAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzUsIDIxLCAKLSAgICAyMzcsIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIAotICAgIDExMSwgMjM5LCAyMzMsIDIzOSwgMjU0LCAyMTEsIDE4NiwgMjM2LCAyMzYsIDIyMSwgMTkyLCAyMDksIDIxLCAyMSwgMjM3LCAKLSAgICAxMTAsIDIxLCAyMzcsIDExMSwgMjQ4LCAxMDQsIDIxOSwgMTM1LCAyNDAsIDk0LCAyMSwgMjM3LCAxMTEsIDIzNywgNDUsIAotICAgIDIxLCAyMzcsIDExMSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTExLCAyMzcsIDQ2LCAxNDgsIDIxMiwgMTU1LCAyMSwgCi0gICAgMjM3LCAxMTEsIDE0OCwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExMSwgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTExLCAyMTEsIAotICAgIDE5NCwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTEsIDIxMSwgMTk0LCAyNDYsIDIxNywgMjEsIDIzNywgMTExLCAKLSAgICAyMTEsIDE5NCwgMjQ2LCAyMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExMSwgMjExLCAxOTQsIDI0NiwgMjE4LCAxNDgsIAotICAgIDIxMiwgMTU2LCAyNDgsIDExNywgMjEsIDIzNywgMTExLCAyMTEsIDE5NCwgMjI3LCA4NSwgMjEsIDIzNywgMTE3LCAyMSwgCi0gICAgMjM3LCAxMTgsIDE0OCwgMjEyLCAxNTUsIDIxLCAyMzcsIDExOCwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDExOCwgCi0gICAgMTQ4LCAyMzksIDE1MSwgMjEsIDIzNywgMTA3LCAyNDUsIDk0LCAyMSwgMjM3LCAxMDYsIDIxLCAyMzcsIDExNiwgMjIwLCA4LCAKLSAgICAyMSwgMjM3LCAxMTUsIDIxLCAyMzcsIDExNiwgMTcxLCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMTYsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDExNiwgMTcxLCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTE2LCAyMjEsIDE5MiwgMjA5LCAKLSAgICAyMSwgMjEsIDIzNywgMTE2LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIDExNiwgMTQ4LCAyMzksIDE1MSwgMjEsIAotICAgIDIzNywgMTE0LCAyMjAsIDgsIDIxLCAyMzcsIDExMywgMjEsIDIzNywgMTE5LCAyMSwgMjM3LCAxMDQsIDIxLCAyMzcsIDEwNSwgCi0gICAgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgMTA1LCAyMjEsIDE5MiwgMjA5LCAyMSwgMjEsIDIzNywgMTA1LCAxNDgsIDIzOSwgCi0gICAgMTUxLCAyMSwgMjM3LCAxMDksIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxNzEsIDE0OCwgMjM5LCAxNTEsIDIxLCAyMzcsIAotICAgIDEwOCwgMjEsIDIzNywgMTA5LCAyMTIsIDM2LCAyMSwgMjM3LCAxMDksIDE3MSwgMTQ4LCAyMTIsIDE1NSwgMjEsIDIzNywgCi0gICAgMTA5LCAxNDgsIDIxMiwgMTU1LCAyMSwgMjM3LCAxMDksIDE3MSwgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjIxLCAxOTIsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgMTQ4LCAyMTIsIDE1NiwgMjA4LCAxMjcsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEwOSwgMTQ4LCAyNDgsIDEwNCwgMTAxLCAyMTUsIDI1MiwgMjEsIDIzNywgMTIxLCAyMSwgMTI4LCAxMjIsIDEwMSwgCi0gICAgMjE1LCAyNTIsIDIxLCAyMzcsIDEyMCwgMTIyLCAxMDEsIDIxNSwgMjUyLCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMTUsIAotICAgIDI1MiwgMjEsIDIzNywgMTIyLCAxMjIsIDEwMSwgMjE1LCAyNTIsIDIxLCAyMzcsIDEwOSwgMjI3LCA4NSwgMjEsIDEyOCwgCi0gICAgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDgsIDExNywgMjEsIDEyOCwgMTIyLCAxMDEsIDIxNSwgMjUzLCAyNDUsIDIwNywgMjEsIAotICAgIDIzNywgMTA5LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDI0NSwgMjA3LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDIsIDcwLCAyMSwgCi0gICAgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAyMTEsIDUyLCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxNSwgMjQ4LCAKLSAgICAyNDUsIDg1LCAyMSwgMTI4LCAyMjcsIDg2LCAxMjEsIDIxOSwgMjIwLCAyNDYsIDYwLCAyMSwgMTI4LCAyMjcsIDg2LCAyMDYsIAotICAgIDIyNCwgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMCwgMjI3LCA4NiwgCi0gICAgMjA2LCAyMjQsIDIxLCAyMzcsIDEwNSwgMjI3LCA4NiwgMjA2LCAyMjQsIDIxLCAyMzcsIDEyMiwgMjI3LCA4NiwgMjA2LCAKLSAgICAyMjQsIDIxLCAxMjgsIDIyNywgODYsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAyMjcsIDg2LCAyNDgsIDExNywgMjEsIAotICAgIDEyOCwgMjI3LCA4NiwgMjA4LCAxMjgsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIwOSwgMjEsIDIxLCAyMzcsIDEwOSwgCi0gICAgMjI3LCA4NiwgMjA5LCAyMSwgMjEsIDEyOCwgMjI3LCA4NiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMDksIDIyNywgODYsIAotICAgIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTIyLCAyMjcsIDg2LCAxMjIsIDE0OCwgMTIyLCAxNDgsIDIxOSwgMjExLCAyMSwgCi0gICAgMjM3LCAxMjIsIDIyNywgODYsIDEyMiwgMTQ4LCAxMjIsIDIwOSwgMjEsIDIxLCAxMjgsIDIyNywgODYsIDIzMSwgMzUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMjI3LCA4NiwgMjMxLCAzNSwgMjEsIDIzNywgMTA5LCAyMjcsIDg2LCAyMzEsIDM1LCAyMSwgMjM3LCAxMjIsIAotICAgIDIyNywgODYsIDIzMSwgMzUsIDIxLCAxMjgsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjAsIDEyMiwgMTAxLCAKLSAgICAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMjM3LCAxMDksIDIxNSwgMjUyLCAyMSwgCi0gICAgMjM3LCAxMjIsIDEyMiwgMTAxLCAyMjcsIDg1LCAyMSwgMTI4LCAxMjIsIDEwMSwgMjQ1LCAxMzEsIDIyNywgODUsIDIxLCAKLSAgICAyMzcsIDEyMCwgMTIyLCAxMDEsIDI0NSwgMTMxLCAyMjcsIDg1LCAyMSwgMTI4LCAyMTUsIDI1MywgMjQyLCA3MCwgMjEsIAotICAgIDIzNywgMTA5LCAyMTUsIDI1MywgMTIxLCAxMjIsIDE0OCwgMjM2LCAxMTYsIDIyNCwgMTQ4LCAyMSwgMjM3LCAxMjIsIDIxNSwgCi0gICAgMjUzLCAxMjEsIDEwMSwgMTQ4LCAxMjIsIDI0NSwgMTMwLCAyMSwgMTI4LCAyMTUsIDI1MywgMjA2LCAyMjQsIDIxLCAxMjgsIAotICAgIDIxNSwgMjUzLCAyMTYsIDE4OCwgMjI5LCAyOSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgCi0gICAgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwNSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMiwgMjE1LCAKLSAgICAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDIxNSwgMjUzLCAyMjQsIDE0OCwgMjEsIDEyOCwgMjE1LCAyNTMsIDEwMSwgMjQ1LCAKLSAgICAyMDcsIDIxLCAxMjgsIDIxNSwgMjUzLCAxMDEsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgMTI4LCAyMTUsIDI1MywgMjMxLCAKLSAgICAzNSwgMjEsIDEyOCwgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAyMzcsIDEwNywgMjE1LCAyNTMsIDIwOSwgMjEsIDIxLCAxMjgsIAotICAgIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTIyLCAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgCi0gICAgMTE0LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgCi0gICAgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMDcsIDEyMiwgMjE1LCAyNTMsIDIyNywgODYsIDIzMSwgNDksIDIxLCAyMzcsIAotICAgIDEwNywgMTIyLCAyMTUsIDI1MywgMjI3LCA4NiwgMjA2LCAyNDcsIDIxLCAyMzcsIDExNiwgMTIyLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NSwgMjEsIDIzNywgMTA5LCAxMjIsIDIxNSwgMjUzLCAyMjcsIDg1LCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIAotICAgIDIyNywgODYsIDIxOSwgMjExLCAyMSwgMjM3LCAxMjIsIDEyMiwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgCi0gICAgMjQyLCA3MCwgMjEsIDIzNywgMTA5LCAyMjQsIDE0OCwgMjEsIDEyOCwgMTAxLCAyMDYsIDIyNCwgMjEsIDIzNywgMTIwLCAKLSAgICAxMDEsIDIwNiwgMjI0LCAyMSwgMTI4LCAxMDEsIDIxNiwgMTg4LCAyMjksIDI5LCAyMSwgMTI4LCAxMDEsIDExMiwgMTQ4LCAKLSAgICAyMTIsIDE1NSwgMjEsIDIzNywgMTA3LCAxMDEsIDIwOSwgMjEsIDIxLCAxMjgsIDEwMSwgMTQ4LCAyMjcsIDg1LCAyMSwgCi0gICAgMTI4LCAxMDEsIDIyNywgODUsIDIxLCAxMjgsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEyMCwgMTAxLCAKLSAgICAyMTUsIDI1MywgMjI3LCA4NSwgMjEsIDIzNywgMTE0LCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMjAsIDMxLCAyMSwgCi0gICAgMjM3LCAxMTYsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIDEwOSwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NSwgCi0gICAgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyMTksIDIxMSwgMjEsIDIzNywgMTIyLCAxMDEsIDIxNSwgCi0gICAgMjUzLCAyMjcsIDg2LCAyMzEsIDQ5LCAyMSwgMjM3LCAxMjIsIDEwMSwgMjE1LCAyNTMsIDIyNywgODUsIDIxLCAyMzcsIAotICAgIDEyMCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ4LCAxMTcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCAKLSAgICA4NiwgMjQ1LCAyMDcsIDIxLCAyMzcsIDExOCwgMTAxLCAyMTUsIDI1MywgMjI3LCA4NiwgMjQ1LCAyMDgsIDIxMiwgMTU1LCAKLSAgICAyMSwgMjM3LCAxMDcsIDEwMSwgMjE1LCAyNTMsIDIyNywgODYsIDI0NSwgMjA4LCAyMTksIDIxMSwgMjEsIDIzNywgMTA3LCAKLSAgICAxMDEsIDIxNSwgMjUzLCAyMjcsIDg2LCAyNDUsIDIwOCwgMjMxLCA0OSwgMjEsIDIzNywgMTA3LCAxMDEsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg2LCAyNDUsIDIwNywgMjEsIDIzNywgMTA5LCAxMjIsIDIzNiwgMjM1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAKLSAgICAxNTUsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIxMiwgMTU1LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDE0OCwgCi0gICAgMjQzLCAyMjcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMTQ4LCAyNDUsIDIwNywgMjEsIDEyOCwgMTIyLCAxNDgsIAotICAgIDIxMiwgMTU2LCAxNDgsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIDEyMiwgMjQ4LCAxMTcsIDIxLCAKLSAgICAxMjgsIDEyMiwgMTQ4LCAyMTIsIDE1NiwgMjQ3LCAyNTEsIDI0OCwgMTE3LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjEyLCAxNTYsIAotICAgIDEyMiwgMjM2LCAyMzcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAyMzksIDE1MiwgMTIyLCAyMTEsIDUyLCAyMSwgMTI4LCAxMjIsIAotICAgIDE0OCwgMjM5LCAxNTIsIDEyMiwgMjQ4LCAxMTcsIDIxLCAxMjgsIDEyMiwgMTQ4LCAxMTMsIDIxLCAxMjgsIDEyMiwgMTQ4LCAKLSAgICAyNDUsIDk0LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMzEsIDYsIDIxLCAyMzcsIDExOCwgMTIyLCAxNDgsIAotICAgIDI0NSwgODgsIDE0OCwgMjMxLCA2LCAyMSwgMTI4LCAxMjIsIDE0OCwgMjQ1LCA4OCwgMTQ4LCAyMDYsIDI0NywgMjEsIDEyOCwgCi0gICAgMTIyLCAxNDgsIDI0NiwgNjEsIDIxLCAyMzcsIDExNiwgMTIyLCAyMDksIDIxLCAyMSwgMjM3LCAxMTYsIDEyMiwgMTQ4LCAKLSAgICAyMjAsIDgsIDIxLCAyMzcsIDEwOSwgMTIyLCAxNDgsIDIyMCwgOCwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjI4LCA3LCAKLSAgICAyMSwgMjM3LCAxMDksIDEyMiwgMjA5LCAyMSwgMjEsIDIzNywgMTA5LCAxMjIsIDE0OCwgMjEyLCAzNiwgMjEsIDIzNywgCi0gICAgMTIyLCAxMjIsIDE0OCwgMjE5LCAyMTEsIDIxLCAyMzcsIDEyMiwgMTIyLCAxNDgsIDIzMSwgNDksIDIxLCAyMzcsIDEyMiwgCi0gICAgMTIyLCAyMDksIDIxLCAyMSwgMTI4LCAyMDksIDIxLCAyMSwgMTI4LCAxNDgsIDIzNywgNDUsIDIxLCAxMjgsIDE0OCwgMjEyLCAKLSAgICAxNTYsIDI0MywgMjI3LCAyMSwgMTI4LCAxNDgsIDIxMiwgMTU2LCAyNDUsIDIwNywgMjEsIDEyOCwgMTQ4LCAyMTIsIDE1NiwgCi0gICAgMjQ4LCAxMTcsIDIxLCAxMjgsIDE0OCwgMjM5LCAxNTEsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEyMiwgMjI0LCAxNDgsIAotICAgIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDEwMSwgMjE1LCAyNTIsIDIxLCAxMjgsIDE0OCwgMjQ4LCAxMDQsIDIxNSwgMjUzLCAKLSAgICAyMjcsIDg1LCAyMSwgMTI4LCAxNDgsIDIwNiwgMjQ4LCAxMjAsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMTIwLCAKLSAgICAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgMTI2LCAyMzksIDI1MywgMjEsIDEyOCwgMTQ4LCAyMDYsIDI0OCwgCi0gICAgMjM5LCAxNDcsIDIzOSwgMjUzLCAyMSwgMTI4LCAxNDgsIDExNSwgMjM5LCAxNDcsIDIxNiwgMTg4LCAyMjksIDI4LCAyMSwgCi0gICAgMjM3LCAxMTIsIDIxLCAxMjgsIDIzNywgNDUsIDIxLCAyMDgsIDEyOSwgMjEyLCAxMTksIDIxLCAyMDgsIDEyOSwgMjIzLCAKLSAgICAyMjUsIDIxLCAyMDgsIDEyOSwgMjQ4LCAxMDMsIDIxLCAyMzgsIDIsIDIxMiwgMTE5LCAyMSwgMjM4LCAyLCAyMjMsIDIyNSwgCi0gICAgMjEsIDIzOCwgMiwgMjQ4LCAxMDMsIDIxLCAyMTEsIDM3LCAyMTIsIDExOSwgMjEsIDIxMSwgMzcsIDIyMywgMjI1LCAyMSwgCi0gICAgMjExLCAzNywgMjQ4LCAxMDMsIDIxLCAyNDcsIDIwMSwgMjEyLCAxMTksIDIxLCAyNDcsIDIwMSwgMjIzLCAyMjUsIDIxLCAKLSAgICAyNDcsIDIwMSwgMjQ4LCAxMDMsIDIxLCAyMTUsIDE0MywgMjEyLCAxMTksIDIxLCAyMTUsIDE0MywgMjIzLCAyMjUsIDIxLCAKLSAgICAyMTUsIDE0MywgMjQ4LCAxMDMsIDIxLCAyMTAsIDE4OSwgMjEwLCAxMDIsIDIxLCAyMTAsIDE4OSwgMjQ4LCAxMDMsIDIxLCAKLSAgICAyMTEsIDE3MywgMjI4LCA4LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCA1LCAyMTIsIDExOSwgMjEsIDIxMSwgMTczLCAyMjgsIAotICAgIDgsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDUsIDIyMywgMjI1LCAyMSwgMjExLCAxNzMsIDIxMywgMTI2LCAyMSwgMjM5LCAKLSAgICAyMDgsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgNSwgMjEyLCAxMTksIDIxLCAyMzksIDIwOCwgMjI4LCA4LCAKLSAgICAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCA1LCAyMjMsIDIyNSwgMjEsIDIzOSwgMjA4LCAyMTMsIDEyNiwgMjEsIDIxMSwgCi0gICAgMTczLCAyMzksIDIwOCwgMjUwLCAyNTIsIDIxLCAyMjQsIDAsIDExMiwgMTIxLCAyMjgsIDcsIDIxLCAyMjQsIDAsIDExMiwgCi0gICAgMTIxLCAyMTIsIDM2LCAyMSwgMjI0LCAwLCAxMTIsIDIxMywgMTI2LCAyMSwgMjI0LCAwLCAxMjEsIDIxMywgMTI2LCAyMSwgCi0gICAgMjI0LCAwLCAxMTIsIDEyMSwgMjUwLCAyNTMsIDIyOCwgNywgMjEsIDIyNCwgMCwgMTEyLCAxMjEsIDI1MCwgMjUzLCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAwLCAyMTIsIDE1NiwgMjA4LCAxNzMsIDIxMiwgMTU2LCAyMTQsIDE5MCwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjI0LCAxLCAyNDAsIDMsIDI0NSwgMTk3LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAKLSAgICAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgCi0gICAgMjEyLCAxMjAsIDIxMSwgNTMsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA1LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIxMiwgMTIwLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgNTIsIDIxMSwgNTIsIDIxLCAKLSAgICAyMjMsIDI1NSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyMywgMjU1LCA1MiwgMjUwLCAyNTIsIDIxLCAyMjMsIAotICAgIDI1NSwgNTIsIDI1MCwgMjUzLCAyMDMsIDIyMSwgMjM5LCAyMTEsIDIxLCAyMjMsIDI1NSwgMjQ1LCAxMzAsIDIxLCAyMjMsIAotICAgIDI1NSwgMjA4LCA3MCwgMjExLCA1MywgMjI0LCAzLCAyMSwgMjIzLCAyNTUsIDIwOCwgNzAsIDIwMywgMjIxLCAyMzksIDIxMSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MiwgMjEsIDIyMywgMjU1LCAyMDgsIDcwLCAyNTAsIDI1MywgMjAzLCAKLSAgICAyMjEsIDIzOSwgMjExLCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDI0OCwgMTIxLCAKLSAgICAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ4LCAxMjEsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDE2NiwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCAxNjYsIDIxNSwgMTk2LCAyMSwgMjIzLCAyNTUsIDI0NiwgMTY5LCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NiwgMTY5LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjQ2LCAxNjksIDIyOCwgNywgMjEsIDIyMywgMjU1LCA5OCwgMjEyLCAKLSAgICAzNiwgMjEsIDIyMywgMjU1LCA5OCwgMjI1LCA5LCAyMSwgMjIzLCAyNTUsIDk4LCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgCi0gICAgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMDIsIDMwLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjAyLCAzMCwgCi0gICAgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjE5LCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIxOSwgMzAsIDIyOCwgNywgMjEsIDIwOCwgOTksIDIxNSwgMTk0LCAyMTIsIDExOSwgMjEsIDIwOCwgCi0gICAgOTksIDIxNSwgMTk0LCAyNDIsIDc4LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTQsIDI1MCwgMjUyLCAyMSwgMjA4LCA5OSwgMjE1LCAKLSAgICAxOTUsIDIxMiwgMTE5LCAyMSwgMjA4LCA5OSwgMjE1LCAxOTUsIDI0MiwgNzgsIDIxLCAyMDgsIDk5LCAyMTUsIDE5NSwgCi0gICAgMjUwLCAyNTIsIDIxLCAyMDgsIDk5LCAyMTMsIDcxLCAyMSwgMjA4LCA5OSwgMjUwLCAxMDcsIDIxMSwgMjAyLCAyMTIsIAotICAgIDExOSwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAyMTEsIDIwMiwgMjQyLCA3OCwgMjEsIDIwOCwgOTksIDI1MCwgMTA3LCAKLSAgICAyMTEsIDIwMiwgMjA4LCA2OSwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgMjEyLCAzNiwgMjEsIDIyNCwgMiwgMjUwLCAxMiwgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNTAsIDEyLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDI1MCwgMTIsIDIyOCwgNSwgMjEsIAotICAgIDIyNCwgMiwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjUsIDksIDIxLCAyMjQsIDIsIDIwOCwgCi0gICAgMTIzLCAyMjgsIDcsIDIxLCAyMjQsIDIsIDIwOCwgMTIzLCAyMjgsIDUsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyNTAsIDEyLCAKLSAgICAyMTIsIDM2LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI1LCA5LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgCi0gICAgMjUwLCAxMiwgMjI4LCA3LCAyMSwgMjI0LCAyLCAyNDgsIDEwNCwgMjUwLCAxMiwgMjI4LCA1LCAyMSwgMjI0LCAyLCAyNDgsIAotICAgIDEwNCwgMjA4LCAxMjMsIDIxMiwgMzYsIDIxLCAyMjQsIDIsIDI0OCwgMTA0LCAyMDgsIDEyMywgMjI1LCA5LCAyMSwgMjI0LCAKLSAgICAyLCAyNDgsIDEwNCwgMjA4LCAxMjMsIDIyOCwgNywgMjEsIDIyNCwgMiwgMjQ4LCAxMDQsIDIwOCwgMTIzLCAyMjgsIDUsIAotICAgIDIxLCAyMjQsIDEsIDIxMiwgMTIwLCAyMTEsIDUzLCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgCi0gICAgMjI1LCA5LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCA1MywgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjExLCAKLSAgICA1MywgMjI4LCA1LCAyMSwgMjI0LCAxLCAyMTIsIDEyMCwgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCA1MiwgCi0gICAgMjExLCA1MiwgMjEsIDIyNCwgMSwgNTIsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgNTIsIDI1MCwgMjUyLCAKLSAgICAyMSwgMjI0LCAxLCA1MiwgMjUwLCAyNTMsIDIwMywgMjIxLCAyMzksIDIxMSwgMjEsIDIyNCwgMSwgMjQ1LCAxMzAsIDIxLCAKLSAgICAyMjQsIDEsIDIwOCwgNzAsIDIxMSwgNTMsIDIyNCwgMywgMjEsIDIyNCwgMSwgMjA4LCA3MCwgMjAzLCAyMjEsIDIzOSwgCi0gICAgMjExLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIDI1MywgMjI0LCAzLCAyMSwgMjI0LCAxLCAyMDgsIDcwLCAyNTAsIAotICAgIDI1MywgMjAzLCAyMjEsIDIzOSwgMjExLCAyMSwgMjI0LCAxLCAyNDgsIDEyMCwgMjEsIDIyNCwgMSwgMjQ1LCAxNjYsIDIxMiwgCi0gICAgMzYsIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjUsIDksIDIxLCAyMjQsIDEsIDI0NSwgMTY2LCAyMjgsIDcsIDIxLCAyMjQsIAotICAgIDEsIDI0NiwgMTY4LCAyMSwgMjI0LCAxLCA5OCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgOTgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgCi0gICAgOTgsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjAyLCAzMCwgMjI1LCA5LCAKLSAgICAyMSwgMjI0LCAxLCAyMDIsIDMwLCAyMjgsIDcsIDIxLCAyMjQsIDEsIDIxOSwgMzAsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIAotICAgIDIxOSwgMzAsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjE5LCAzMCwgMjI4LCA3LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk1LCAKLSAgICAyMTIsIDExOSwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIwOCwgMTAwLCAyMTUsIDE5NSwgMjUwLCAKLSAgICAyNTIsIDIxLCAyMDgsIDEwMCwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNDIsIDc4LCAKLSAgICAyMSwgMjA4LCAxMDAsIDIxNSwgMTk0LCAyNTAsIDI1MiwgMjEsIDIwOCwgMTAwLCAyMTMsIDcxLCAyMSwgMjIzLCAyNTUsIAotICAgIDI0NSwgODgsIDIxNywgNTYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjE3LCA1NiwgMjI1LCA5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDI0NSwgODgsIDIxNywgNTYsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMTcsIDU2LCAyMjgsIAotICAgIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAxMzYsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjM3LCAKLSAgICAxMzYsIDIyNSwgOSwgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMzcsIDEzNiwgMjI4LCA3LCAyMSwgMjIzLCAyNTUsIDI0NSwgCi0gICAgODgsIDIzNywgMTM2LCAyMjgsIDUsIDIxLCAyMjMsIDI1NSwgMjQ1LCA4OCwgMjA5LCAyNywgMjQ2LCA2MiwgMjEyLCAzNiwgCi0gICAgMjEsIDIyMywgMjU1LCAyNDUsIDg4LCAyMDksIDI3LCAyNDYsIDYyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgCi0gICAgMjEyLCAzNiwgMjEsIDIyMywgMjU1LCAyMzYsIDE0LCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjI4LCA3LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIxMiwgMzYsIDIxLCAyMjMsIDI1NSwgMjI3LCAxNSwgMjI1LCA5LCAyMSwgMjIzLCAKLSAgICAyNTUsIDIyNywgMTUsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCA1LCAyNDIsIDc4LCAyMSwgMjIzLCAyNTUsIAotICAgIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDUyLCAyMjUsIAotICAgIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQ1LCA4OCwgNTIsIDIyOCwgNywgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAKLSAgICAyNDUsIDg4LCAyMDgsIDcwLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0NSwgODgsIDIwOCwgNzAsIDIyNSwgCi0gICAgOSwgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyNDUsIDg4LCAyMDgsIDcwLCAyMjgsIDcsIDIxLCAyMjMsIDI1NSwgMjQ1LCAKLSAgICA4OCwgMjA5LCA4NCwgMjExLCA1MiwgMjEsIDIyMywgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjEyLCAzNiwgMjEsIDIyMywgCi0gICAgMjU1LCAyNDUsIDg2LCAyNDUsIDEzMSwgMjI1LCA5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTE5LCAyMSwgMjE1LCAxOTQsIAotICAgIDI0MiwgNzgsIDIxLCAyMTUsIDE5NCwgMjUwLCAyNTQsIDIxLCAyMjMsIDI1NSwgMjEzLCA3MSwgMjEsIDIyMywgMjU1LCAKLSAgICAyNDUsIDg4LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIDI1NSwgMjM2LCAxNCwgMjM2LCAyMjksIAotICAgIDIzOSwgMTE5LCAyMDQsIDk5LCAyMSwgMjIzLCAyNTUsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgCi0gICAgMjEsIDIyMywgMjU1LCAyMDQsIDc2LCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMTUsIDE5NCwgMjEyLCAKLSAgICAxMjAsIDIzNiwgMjI5LCAyMzksIDExOSwgMjA0LCA5OSwgMjEsIDIxNSwgMTk0LCA1MiwgMjM2LCAyMjksIDIzOSwgMTE5LCAKLSAgICAyMDQsIDk5LCAyMSwgMjE1LCAxOTQsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAxMTksIDIwNCwgOTksIDIxLCAyMjMsIAotICAgIDI1NSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjIzLCAyNTUsIDIzNiwgMTQsIDIzNiwgMjI5LCAyNDYsIAotICAgIDE0OSwgMjEsIDIyMywgMjU1LCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgCi0gICAgMjM2LCAyMjksIDI0NiwgMTQ5LCAyMSwgMjE1LCAxOTQsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAxNDksIDIxLCAyMTUsIAotICAgIDE5NCwgNTIsIDIzNiwgMjI5LCAyNDYsIDE0OSwgMjEsIDIxNSwgMTk0LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMTQ5LCAKLSAgICAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIDI0MywgMjI4LCAyMTksIDUyLCAyMTIsIDM2LCAyMSwgMjIzLCAyNTUsIDIwNCwgNzYsIAotICAgIDI0MywgMjI4LCAyMTksIDUyLCAyMjUsIDksIDIxLCAyMjMsIDI1NSwgMjA0LCA3NiwgMjQzLCAyMjgsIDIxOSwgNTIsIDIyOCwgCi0gICAgNywgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyNDUsIDg4LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgNywgMjEsIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAKLSAgICAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjQyLCA3OCwgMjEsIAotICAgIDIyNCwgMSwgMjM2LCAxNCwgMjM2LCAyMjksIDI0NiwgMjI3LCA1LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAKLSAgICAyMzYsIDIyOSwgMjQ2LCAyMjcsIDIyOCwgOCwgMjA4LCA2OSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgCi0gICAgMjI3LCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgMjM2LCAyMjksIDI0NiwgMjI3LCAyMjgsIDgsIDIxMiwgCi0gICAgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjQ2LCAyMjcsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIyNywgMTUsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMzYsIAotICAgIDIyOSwgMjQ2LCAyMjcsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyNDYsIDIyNywgMjI4LCA3LCAKLSAgICAyMSwgMjE1LCAxOTUsIDIxMiwgMTIwLCAyMzYsIDIyOSwgMjQ2LCAyMjYsIDIxLCAyMTUsIDE5NSwgNTIsIDIzNiwgMjI5LCAKLSAgICAyNDYsIDIyNiwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MywgMjM2LCAyMjksIDI0NiwgMjI2LCAyMSwgMjI0LCAxLCAyNDUsIAotICAgIDg4LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIxMiwgMzYsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIzNiwgMjI5LCAyMzksIDIwNSwgCi0gICAgMjI4LCA3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIAotICAgIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIDIwNSwgMjI4LCA4LCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMzYsIAotICAgIDIyOSwgMjM5LCAyMDUsIDIwOCwgNzAsIDUsIDIwOCwgNjksIDIxLCAyMjQsIDEsIDIzNiwgMTQsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjA4LCA3MCwgMjI4LCA4LCAyMDgsIDY5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIAotICAgIDUsIDIxMiwgMTE5LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMzYsIDIyOSwgMjM5LCAyMDUsIDIyOCwgOCwgMjEyLCAxMTksIAotICAgIDIxLCAyMjQsIDEsIDIyNywgMTUsIDIzNiwgMjI5LCAyMzksIDIwNSwgNSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjI3LCAxNSwgCi0gICAgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDgsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDIwNCwgNzYsIDIzNiwgMjI5LCAyMzksIAotICAgIDIwNSwgMjEyLCAzNiwgMjEsIDIyNCwgMSwgMjA0LCA3NiwgMjM2LCAyMjksIDIzOSwgMjA1LCAyMjgsIDcsIDIxLCAyMTUsIAotICAgIDE5NSwgMjEyLCAxMjAsIDIzNiwgMjI5LCAyMzksIDIwNCwgMjEsIDIxNSwgMTk1LCA1MiwgMjM2LCAyMjksIDIzOSwgMjA0LCAKLSAgICAyMSwgMjE1LCAxOTUsIDI1MCwgMjUzLCAyMzYsIDIyOSwgMjM5LCAyMDQsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIxMiwgMzYsIAotICAgIDIxLCAyMjQsIDEsIDI0NSwgODgsIDIyNSwgOSwgMjEsIDIyNCwgMSwgMjQ1LCA4OCwgMjI4LCA3LCAyMSwgMjI0LCAxLCAKLSAgICAyNDUsIDg4LCAyMjgsIDUsIDIxLCAyMjQsIDEsIDI0NSwgODgsIDI0NSwgMjM3LCAyMSwgMjI0LCAxLCAyMzYsIDE0LCAyMTIsIAotICAgIDM2LCAyMSwgMjI0LCAxLCAyMjcsIDE1LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMTIsIDI0LCAyMSwgMjI0LCAKLSAgICAxLCAyMDQsIDc2LCAyMTIsIDM2LCAyMSwgMjI0LCAxLCAyMDQsIDc2LCAyMjgsIDcsIDIxLCAyMTUsIDE5NSwgMjEyLCAxMTksIAotICAgIDIxLCAyMTUsIDE5NSwgMjQyLCA3OCwgMjEsIDIxNSwgMTk1LCAyNTAsIDI1MiwgMjEsIDIyNCwgMSwgMjEzLCA3MiwgMjE5LCAKLSAgICA4MSwgMjEsIDIyMywgMjU1LCAyNTAsIDEwNywgMjQ2LCA2MiwgNSwgMjEyLCAxMTksIDIxLCAyMjMsIDI1NSwgMjUwLCAxMDcsIAotICAgIDI0NiwgNjIsIDIyNSwgMTAsIDIxMiwgMTE5LCAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCA1LCAyNDIsIDc4LCAKLSAgICAyMSwgMjIzLCAyNTUsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMjUsIDEwLCAyNDIsIDc4LCAyMSwgMjI0LCAxLCAyNTAsIDEwNywgCi0gICAgMjQ2LCA2MiwgMjM2LCAyMjksIDIwNCwgMTAwLCA1LCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjUwLCAxMDcsIDI0NiwgNjIsIAotICAgIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjI1LCAxMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDIyOCwgOCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIAotICAgIDIyOSwgMjA0LCAxMDAsIDUsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAKLSAgICAxMDAsIDIyNSwgMTAsIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI1MCwgMTA3LCAyNDYsIDYyLCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDIyOCwgOCwgMjQyLCA3OCwgMjEsIDIyMywgMjU1LCAyMDMsIDIyMSwgMjQ2LCA2MiwgMjM5LCAxMTksIDIxMiwgMTE5LCAyMSwgCi0gICAgMjIzLCAyNTUsIDIwMywgMjIxLCAyNDYsIDYyLCAyMzksIDExOSwgMjQyLCA3OCwgMjEsIDIyNCwgMSwgMjAzLCAyMjEsIAotICAgIDI0NiwgNjIsIDIzNiwgMjI5LCAyMDQsIDEwMCwgMjEyLCAxMTksIDIxLCAyMjQsIDEsIDIwMywgMjIxLCAyNDYsIDYyLCAKLSAgICAyMzYsIDIyOSwgMjA0LCAxMDAsIDI0MiwgNzgsIDIxLCAyMjMsIDI1NSwgMjQwLCAzLCAyNDYsIDU5LCAyMTIsIDExOSwgMjEsIAotICAgIDIyMywgMjU1LCAyNDAsIDMsIDI0NiwgNTksIDI0MiwgNzgsIDIxLCAyMjQsIDEsIDI0MCwgMywgMjQ2LCA1OSwgMjM2LCAKLSAgICAyMjksIDIwNCwgMTAwLCAyMTIsIDExOSwgMjEsIDIyNCwgMSwgMjQwLCAzLCAyNDYsIDU5LCAyMzYsIDIyOSwgMjA0LCAxMDAsIAotICAgIDI0MiwgNzgsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIxMiwgMzYsIDIxLCAyNDIsIDQsIDI1MCwgOTUsIDIyOCwgNywgMjEsIAotICAgIDI0MiwgNCwgMjQwLCA3NCwgMjEsIDI0MiwgNCwgMjEyLCAzOSwgMjEsIDI0MiwgNCwgMjA5LCAxNDUsIDIxLCAyNDIsIDQsIAotICAgIDIxNiwgMTE1LCAyMSwgMjQyLCA0LCAyMTIsIDEyNSwgMjEsIDI0MiwgNCwgMjEyLCAxMjYsIDI1MCwgMjUyLCAyMSwgMjQyLCAKLSAgICA0LCAyNDAsIDIyMSwgMjE5LCAyMjEsIDIwOCwgMjIxLCAyMSwgMjQyLCA0LCAyMzgsIDEyLCAyMSwgMjM3LCA2NCwgMjEsIAotICAgIDIzNywgNjUsIDIxNiwgMSwgMjEsIDIzNywgNjUsIDIyMywgMjU1LCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIAotICAgIDIwOCwgMjI0LCAyMSwgMjM3LCA2NSwgMjI0LCAxLCAyMTEsIDUyLCAyMSwgMjM3LCA2NSwgMjIzLCAyNTUsIDI0NSwgODcsIAotICAgIDIxLCAyMzcsIDY1LCAyMjQsIDEsIDI0NSwgODcsIDIxLCAyMzcsIDY1LCAyMjQsIDQsIDI0NiwgNjEsIDIxLCAyNDAsIDEwMywgCi0gICAgMjQzLCAxNjYsIDIxOCwgMzQsIDIyMSwgMTY4LCAyMzksIDE1MiwgMjA4LCAyMjIsIDIxLCAyNDAsIDEwMywgMjQzLCAxNjYsIAotICAgIDIxOCwgMzQsIDIyMSwgMTY4LCAxMTIsIDIxOSwgMjQ1LCAyNDIsIDcwLCAyMSwgMjQwLCAxMDMsIDI0MywgMTY2LCAyMTgsIAotICAgIDM0LCAyMjEsIDE2OCwgMTEyLCAyMTksIDI0NSwgMTIxLCAyMDgsIDIyMiwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMDYsIAotICAgIDIyNCwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyMjIsIDIxNSwgMjEsIDI0MCwgMTkwLCAyMTEsIDUzLCAyNDIsIDcwLCAyMSwgCi0gICAgMjQyLCA1NywgMjQwLCAxOTAsIDIyMiwgMjE2LCAyNDIsIDcwLCAyMSwgMjQyLCA1NywgMjQwLCAxOTAsIDEyMSwgMjIyLCAKLSAgICAyMTUsIDIxLCAyNDIsIDU3LCAyNDAsIDE5MCwgMTEyLCAyMjIsIDIxNSwgMjEsIDI0MiwgNTcsIDI0MCwgMTkwLCAyMjIsIAotICAgIDIxNiwgMjA2LCAyMjQsIDIxLCAyMzksIDE2NCwgMjIyLCAyMTUsIDIxLCAyMzksIDE2NCwgMjQ1LCAxOTcsIDIxLCAyMzksIAotICAgIDE2NCwgMjAzLCAyMjQsIDIxLCAyNDAsIDE4NSwgMjIwLCA4LCAyMSwgMjQwLCAxODUsIDIxMSwgMTcyLCAyMSwgMjQwLCAKLSAgICAxODUsIDI0NiwgMTUsIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgMjEyLCAxMTksIDIxLCAyNDAsIDE5MiwgMjQ4LCAzNCwgCi0gICAgMjIzLCAyMjUsIDIxLCAyNDAsIDE4NSwgMTYyLCAyMjAsIDgsIDIxLCAyNDAsIDE4NSwgMjA0LCAyNywgMjIwLCA4LCAyMSwgCi0gICAgMjQwLCAxODUsIDE2MiwgMjQ2LCAxNSwgMjEsIDI0MCwgMTg1LCAyMDQsIDI1LCAyMjQsIDMsIDIxLCAyNDAsIDE5MiwgMjA0LCAKLSAgICA5LCAyMSwgMjQwLCAxODYsIDIwNiwgMjI0LCAyMSwgMjQwLCAxODYsIDI0MiwgNzAsIDIxLCAyNDAsIDE4NiwgMjM5LCAxOTEsIAotICAgIDIxLCAyNDAsIDE4OCwgMjExLCA1MiwgMjEsIDI0MCwgMTg4LCAyMTEsIDUzLCAyNDIsIDc4LCAyMSwgMjQwLCAxODgsIDIxMSwgCi0gICAgNTMsIDI1MCwgMjUyLCAyMSwgMjQwLCAxODksIDIxMSwgNTIsIDIxLCAyNDAsIDE4OSwgMjExLCA1MywgMjQyLCA3OCwgMjEsIAotICAgIDI0MCwgMTg5LCAyMTEsIDUzLCAyNTAsIDI1MiwgMjEsIDI0MCwgMTg4LCAyNDUsIDg1LCAyMSwgMjQwLCAxODksIDI0NSwgCi0gICAgODUsIDIxLCAyNDAsIDE4OCwgMjQ2LCA1NiwgMjEsIDI0NiwgMTY0LCAyMTcsIDE4MiwgMjEsIDI0NiwgMTY0LCAyMjIsIAotICAgIDIxNSwgMjEsIDI0NiwgMTY0LCAyMTAsIDIzNCwgMjEsIDIwOSwgMTQ2LCAyNDYsIDE2NCwgMjM2LCAyNDQsIDIxLCAyMDksIAotICAgIDE0NiwgMjQ2LCAxNjQsIDIyNCwgMTQ4LCAyMSwgMjA5LCAxNDYsIDI0NiwgMTY0LCAyMjcsIDAsIDIxLCAyNDEsIDE4MSwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMjIsIDIxNSwgMjEsIDIyMSwgMTY4LCAyNDUsIDE5NywgMjEsIDIyMSwgMTY4LCAyMDMsIDIyMiwgCi0gICAgMjEsIDIyMSwgMTY4LCAyMDQsIDIyLCAyMSwgMjUxLCA1NSwgMjQ4LCAyNywgMjE5LCAyMTEsIDIxLCAyNTEsIDU1LCAyMTAsIAotICAgIDIzMywgMjMxLCA0OSwgMjEsIDI1MSwgNTUsIDI0OCwgMjksIDUsIDIxNSwgMTkzLCAyMSwgMjUxLCA1NSwgMjEwLCAyMzUsIAotICAgIDUsIDIxNSwgMTkzLCAyMSwgMjQ3LCAyMTYsIDIzMSwgMjIsIDIxLCAyNDcsIDIxNiwgMjQwLCAyMTAsIDIxLCAyMjQsIDgsIAotICAgIDI0NiwgMTYsIDIyMiwgMjE1LCAyMSwgMjI0LCA4LCAyNDYsIDE2LCAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMjQ2LCAxNiwgCi0gICAgMjQ1LCAxOTcsIDIxLCAyMjQsIDgsIDIxMiwgMzEsIDIxLCAyMjQsIDgsIDIxMiwgMzIsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAKLSAgICAyMTIsIDMyLCAyMjAsIDgsIDIxLCAyMjQsIDgsIDIzOSwgMTE1LCAyMSwgMjI0LCA4LCAyMzksIDExNiwgMjAzLCAyMjQsIAotICAgIDIxLCAyMjQsIDgsIDIzOSwgMTE2LCAyMjAsIDgsIDIxLCAyMjQsIDgsIDE3MSwgMjQ2LCA2MSwgMjEsIDIyNCwgOCwgMTcxLCAKLSAgICAyMzksIDE1MSwgMjEsIDIyNCwgOCwgMTcxLCAyMDMsIDIyNCwgMjEsIDIyNCwgOCwgMTcxLCAyMTksIDIwNCwgMjEsIDIyNCwgCi0gICAgOCwgMTcxLCAyMTksIDIwNSwgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDE3MSwgMjE5LCAyMDUsIDIwMywgNTksIDIxLCAyMjQsIAotICAgIDgsIDE3MSwgMjE2LCAxNDMsIDIxLCAyMjQsIDgsIDE3MSwgMjE2LCAxNDQsIDIwMywgMjI0LCAyMSwgMjI0LCA4LCAxNzEsIAotICAgIDIxNiwgMTQ0LCAyMDMsIDU5LCAyMSwgMjI0LCA4LCAyMjksIDY2LCAyMSwgMjI0LCA4LCAyMjksIDY3LCAyMzksIDE1MSwgCi0gICAgMjEsIDIyNCwgOCwgMjI5LCA2NywgMjAzLCAyMjQsIDIxLCAyMjQsIDgsIDIwOSwgMTQ1LCAyMSwgMjI0LCA4LCAyMDksIAotICAgIDE0NiwgMjM5LCAxNTEsIDIxLCAyMjQsIDgsIDIwOSwgMTQ2LCAyMTAsIDIzNCwgMjEsIDIyNywgOTksIDIxNywgMjM5LCAKLSAgICAyMDgsIDE2OSwgMjEsIDIyNywgMTAxLCAyMjYsIDI1MSwgMTE1LCAyMDYsIDIyMCwgMjEsIDIyNywgMTAxLCAyMDYsIDIyMSwgCi0gICAgMTE1LCAyMjYsIDI1MCwgMjEsIDIyNCwgOCwgMjQ1LCAxNjQsIDIxLCAyMjQsIDgsIDIwMywgMjIzLCAyMTIsIDExOSwgMjEsIAotICAgIDIyNCwgOCwgMjAzLCAyMjMsIDI0MiwgNzgsIDIxLCAyMDgsIDE1MSwgMjExLCA3MiwgMjE5LCAyMTIsIDI0MCwgNzYsIDIxLCAKLSAgICAyMDgsIDE1MSwgMjI3LCAxNDQsIDIyNywgOTgsIDIxLCAyMDgsIDE1MSwgMjA4LCAyMTEsIDI0OCwgMTA0LCAyMjcsIDk4LCAKLSAgICAyMSwgMjA4LCAxNTEsIDIwOCwgMjExLCAyMDgsIDEyNywgMjMxLCA3LCAyMjQsIDcsIDIxLCAyMDgsIDE1MSwgMjMxLCA3LCAKLSAgICAyMjQsIDgsIDIxNiwgMTE1LCAyMSwgMjA4LCAxNTEsIDIyMywgMjU0LCAyNTEsIDc5LCAyNDYsIDE2NSwgMjEsIDIwOCwgCi0gICAgMTUxLCAyNDYsIDIxOCwgMjExLCA3MiwgMjE5LCAyMTEsIDIxLCAyMDgsIDE1MSwgMjQ2LCAyMTgsIDIzMSwgNywgMjI0LCA3LCAKLSAgICAyMSwgMjA5LCAxNzIsIDIxLCAyMDksIDE3MywgMjI0LCAzLCAyMSwgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUwLCAyMSwgCi0gICAgMjA5LCAxNzMsIDIyMCwgMzIsIDIwOCwgMTUxLCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjIwLCAzMiwgMjI3LCA5OCwgMjEsIAotICAgIDIwOSwgMTczLCAyMjAsIDMyLCAyMjcsIDk5LCAyMjQsIDMsIDIxLCAyMDksIDE3MywgMjQ4LCA1MCwgMjI3LCA5OCwgMjEsIAotICAgIDIyMywgMjU1LCAyMzAsIDE2NSwgMjEsIDIyNCwgMSwgMjMwLCAxNjUsIDIxLCAyMjIsIDIzNywgMjEsIDIzNywgMTQ1LCAyMSwgCi0gICAgMjQwLCAyMTMsIDIxLCAyMTIsIDIxMSwgMjM2LCAyMzQsIDIxMSwgMjAzLCAyMSwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMTgsIAotICAgIDMzLCAyMSwgMjA0LCA5OCwgMjEyLCAyMTEsIDIzNiwgMjM0LCAyMjQsIDYsIDIxLCAyMzksIDIwMywgMjEyLCAyMTEsIDIzNiwgCi0gICAgMjM0LCAyMjQsIDYsIDIxLCAyMTIsIDIxMSwgMjA4LCAyMjMsIDIzOSwgMTIwLCAyMDQsIDEwNCwgMjEsIDIwOCwgMTM0LCAKLSAgICAyMTEsIDUzLCAyMTEsIDQxLCAyMSwgMjA4LCAxMzQsIDI0NSwgODYsIDI0OCwgMTIwLCAyMSwgMjA4LCAxMzUsIDIwNywgCi0gICAgMTM3LCAyMSwgMjA2LCAyMjEsIDI0OCwgMTgsIDIwOCwgMjIzLCAyMzksIDEyMCwgMjM2LCAyMzQsIDIzMCwgOTUsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjQ1LCAyMzgsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTUsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTQsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTMsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTIsIDIxLCAyMjcsIDEyNiwgMjI3LCAxOTEsIDIxLCAKLSAgICAyMjcsIDEyNiwgMjI3LCAxOTAsIDIxLCAyMjcsIDEyNiwgMjI3LCAxODksIDIxLCAyNDAsIDIsIDIxLCAyMjcsIDQ1LCAyMTEsIAotICAgIDIyOCwgMjEsIDIyNywgNDYsIDIxMSwgMjI4LCAyMSwgMjI3LCA0NywgMjM3LCA0MSwgMjEsIDIyNywgNDcsIDIwNCwgMjMsIAotICAgIDIxLCAyMjcsIDQ3LCAyNDQsIDI0LCAyMSwgMjI3LCA0NywgMjM3LCA2NSwgMjIyLCAyMzcsIDIxLCAyMjcsIDQ3LCAyMDgsIAotICAgIDEzNiwgMjEsIDIyNywgNDcsIDIyNywgMTI1LCAyNDMsIDE5OCwgMjEsIDI0NSwgMjMzLCAyMSwgMjM5LCAxMDIsIDIxMSwgCi0gICAgNjEsIDIxLCAyMTMsIDE0MywgMjEsIDI0NSwgMjQyLCAyMSwgMjE5LCA3NiwgMjEsIDI0MCwgMTAsIDIyNCwgNjYsIDIxLCAKLSAgICAyNDAsIDEwLCAyMjQsIDY1LCAyMSwgMjQwLCAxMCwgMjI0LCA2NCwgMjEsIDI0MCwgMTAsIDIyNCwgNjMsIDIxLCAyNDAsIAotICAgIDEwLCAyMjQsIDYyLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjYsIDIxLCAyMTUsIDE5NywgMjI0LCA2NSwgMjEsIDIxNSwgMTk3LCAKLSAgICAyMjQsIDY0LCAyMSwgMjE1LCAxOTcsIDIyNCwgNjMsIDIxLCAyMTUsIDE5NywgMjI0LCA2MiwgMjEsIDIxNSwgMTk3LCAyMjQsIAotICAgIDYxLCAyMSwgMjE1LCAxOTcsIDIyNCwgNjAsIDIxLCAyMTUsIDE5NywgMjI0LCA1OSwgMjEsIDIxNSwgMTk3LCAyMjQsIDczLCAKLSAgICAyMSwgMjE1LCAxOTcsIDIyNCwgNzIsIDIxLCAyMTUsIDE5NywgMjI0LCA3MSwgMjEsIDIxNSwgMTk3LCAyMjQsIDcwLCAyMSwgCi0gICAgMjE1LCAxOTcsIDIyNCwgNjksIDIxLCAyMTUsIDE5NywgMjI0LCA2OCwgMjEsIDIxNSwgMTk3LCAyMjQsIDY3LCA3MywgNzIsIAotICAgIDQsIDIyNiwgMTg0LCAyMjksIDEwMCwgNzMsIDcyLCA0LCAyMjYsIDE4MCwgMTczLCA3MywgNzIsIDQsIDIyNiwgMTc4LCAKLSAgICAyMjgsIDIwOSwgNzMsIDcyLCA0LCAyMjYsIDU0LCAyMjksIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDI0LCAyMjksIDIwMSwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDQzLCAyMjksIDYsIDczLCA3MiwgNCwgMjI2LCA3MSwgMjI5LCAyNiwgNzMsIDcyLCA0LCAyMjUsIDE5NiwgCi0gICAgMjI4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxNzUsIDIwNCwgMzAsIDczLCA3MiwgNCwgMjI2LCAxNzMsIDIwNCwgMTExLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTcxLCAyMDMsIDIxNywgNzMsIDcyLCA0LCAyMjUsIDI0OSwgMjA0LCA1NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDEsIDIwNCwgNjIsIDczLCA3MiwgNCwgMjI2LCA1LCAyMDMsIDI0NCwgNzMsIDcyLCA0LCAyMjYsIDc0LCAyMDQsIDAsIAotICAgIDczLCA3MiwgNCwgMjI1LCAxODEsIDIwMywgMjEzLCA3MywgNzIsIDQsIDIyNSwgMjMyLCAyMDQsIDUzLCA3MywgNzIsIDQsIAotICAgIDIyNiwgNTgsIDIwMywgMjAxLCA3MywgNzIsIDQsIDIyNiwgNzAsIDIwMywgMjAzLCA3MywgNzIsIDQsIDIyNSwgMjM2LCAKLSAgICAyMDMsIDIwMiwgNzMsIDcyLCA0LCAyMjYsIDE2OSwgMjI0LCAxMTAsIDczLCA3MiwgNCwgMjI2LCAxNjcsIDIyNSwgMTIyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTY1LCAyMjMsIDIxOSwgNzMsIDcyLCA0LCAyMjYsIDYwLCAyMjQsIDI0MCwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDI1LCAyMjQsIDU0LCA3MywgNzIsIDQsIDIyNSwgMjIxLCAyMjMsIDI0MywgNzMsIDcyLCA0LCAyMjUsIDE4NiwgCi0gICAgMjIzLCAyMzcsIDczLCA3MiwgNCwgMjI2LCAxNjMsIDI0OCwgODYsIDczLCA3MiwgNCwgMjI2LCAxNjAsIDI0OSwgMzIsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNTgsIDI0NywgMTkzLCA3MywgNzIsIDQsIDIyNSwgMjI1LCAyNDgsIDE1MCwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDIyLCAyNDgsIDE2MiwgNzMsIDcyLCA0LCAyMjYsIDE2LCAyNDgsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjM3LCAyNDgsIDIzLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgMTQ4LCA3NSwgNzMsIDcyLCA0LCAyMjYsIDE0NiwgNjMsIDczLCA3MiwgNCwgMjI2LCAxNDQsIAotICAgIDY4LCA3MywgNzIsIDQsIDIyNSwgMjEyLCAyNDEsIDE2MSwgNzMsIDcyLCA0LCAyMjYsIDE5LCA3NCwgNzMsIDcyLCA0LCAKLSAgICAyMjUsIDIxMCwgMjIwLCAxOCwgNzMsIDcyLCA0LCAyMjUsIDIyOCwgNzgsIDczLCA3MiwgNCwgMjI1LCAyMzgsIDI0MSwgCi0gICAgMTQ1LCA3MywgNzIsIDQsIDIyNSwgMjQ0LCAyMzEsIDQ5LCA3MywgNzIsIDQsIDIyNSwgMjQwLCAyMzEsIDQ5LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTgwLCAyNTAsIDIzMSwgNzMsIDcyLCA0LCAyMjUsIDE5NywgMjQxLCA5MiwgNzMsIDcyLCA0LCAyMjYsIDEzMywgCi0gICAgMjEyLCAxNjIsIDczLCA3MiwgNCwgMjI2LCAxMzEsIDIxNSwgMzYsIDczLCA3MiwgNCwgMjI2LCAxMjksIDIxMSwgMTAsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTMsIDIxNCwgMTY1LCA3MywgNzIsIDQsIDIyNiwgMywgMjE0LCAxNzcsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMzksIDIxMSwgMjUwLCA3MywgNzIsIDQsIDIyNiwgNDAsIDIxMiwgMTMsIDczLCA3MiwgNCwgMjI1LCAxNzksIDIxMiwgCi0gICAgMTYxLCA3MywgNzIsIDQsIDIyNiwgMTE5LCAyMjcsIDE0OCwgNzMsIDcyLCA0LCAyMjYsIDExNywgMjI4LCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMTUsIDIyNiwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMzUsIDIyNywgMjI2LCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDYsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgNjUsIDIyNywgMTgsIDczLCA3MiwgNCwgMjI1LCAyMjIsIDIyNywgNDksIAotICAgIDczLCA3MiwgNCwgMjI2LCA5LCAxNjMsIDIyNywgMjM0LCA3MywgNzIsIDQsIDIyNiwgMTQxLCAyNDMsIDIzMywgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDEzOCwgMjQ0LCAyMTIsIDczLCA3MiwgNCwgMjI2LCAxMzUsIDI0MiwgNDIsIDczLCA3MiwgNCwgMjI2LCAzMCwgCi0gICAgMjQ0LCA2MSwgNzMsIDcyLCA0LCAyMjUsIDE5NSwgMjQzLCA5MCwgNzMsIDcyLCA0LCAyMjUsIDE5NCwgMjQzLCAxMTMsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxMjcsIDIwOSwgMiwgNzMsIDcyLCA0LCAyMjYsIDEyNCwgMjEwLCAyMiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDEyMiwgMjA3LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAyOCwgMjA5LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA2NCwgMjA5LCAKLSAgICAxODcsIDczLCA3MiwgNCwgMjI2LCAxNSwgMjA4LCAxNDgsIDczLCA3MiwgNCwgMjI2LCA1MCwgMTM1LCA3MywgNzIsIDQsIAotICAgIDIyNiwgMTEzLCAyMzAsIDE0MSwgNzMsIDcyLCA0LCAyMjYsIDExMCwgMjMwLCAxODEsIDczLCA3MiwgNCwgMjI2LCAxMDgsIAotICAgIDIzMCwgODIsIDczLCA3MiwgNCwgMjI1LCAyMTgsIDIzMCwgMTU5LCA3MywgNzIsIDQsIDIyNiwgNiwgMjMwLCAxNjEsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyMTUsIDIzMCwgOTEsIDczLCA3MiwgNCwgMjI2LCA1NiwgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI1LCAKLSAgICAyMDAsIDE2MywgMjMwLCAxMDEsIDczLCA3MiwgNCwgMjI2LCAxMDYsIDIwMywgMTEsIDczLCA3MiwgNCwgMjI2LCAxMDMsIAotICAgIDE5OCwgNzMsIDcyLCA0LCAyMjYsIDEwMSwgMjAyLCAyMTMsIDczLCA3MiwgNCwgMjI2LCAxMCwgMjAzLCA0OSwgNzMsIDcyLCAKLSAgICA0LCAyMjYsIDM5LCAyMDMsIDUyLCA3MywgNzIsIDQsIDIyNSwgMjM0LCAyMDIsIDIzMiwgNzMsIDcyLCA0LCAyMjUsIDI1NCwgCi0gICAgMjAyLCAyNDcsIDczLCA3MiwgNCwgMjI2LCA5NywgMjQwLCAyNiwgNzMsIDcyLCA0LCAyMjYsIDk1LCAyNDAsIDEwOCwgNzMsIAotICAgIDcyLCA0LCAyMjYsIDkzLCAyMzksIDEwOCwgNzMsIDcyLCA0LCAyMjYsIDQxLCAyNDAsIDUzLCA3MywgNzIsIDQsIDIyNiwgCi0gICAgNDQsIDI0MCwgNjAsIDczLCA3MiwgNCwgMjI1LCAyNDIsIDIzOSwgMTc1LCA3MywgNzIsIDQsIDIyNiwgMzEsIDIzOSwgMTg2LCAKLSAgICA3MywgNzIsIDQsIDIyNSwgMTc4LCAyMzksIDEwNywgNzMsIDcyLCA0LCAyMjYsIDE4LCAyNDAsIDgxLCA3MywgNzIsIDQsIAotICAgIDIyNiwgOTEsIDIyMiwgNjgsIDczLCA3MiwgNCwgMjI2LCA4OSwgMjIzLCA4MywgNzMsIDcyLCA0LCAyMjYsIDg3LCAyMjEsIAotICAgIDQwLCA3MywgNzIsIDQsIDIyNiwgMiwgMjIyLCAyMzAsIDczLCA3MiwgNCwgMjI1LCAyMDYsIDIyMSwgMTg1LCA3MywgNzIsIAotICAgIDQsIDIyNSwgMTk5LCAyMzcsIDMsIDczLCA3MiwgNCwgMjI2LCA4MiwgMTUyLCA3MywgNzIsIDQsIDIyNSwgMTg5LCAyMzYsIAotICAgIDI2LCA3MywgNzIsIDQsIDIyNiwgODUsIDIzNywgNDgsIDczLCA3MiwgNCwgMjI2LCAyMywgMjM3LCA2NywgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDgwLCAyMzYsIDExNywgNzMsIDcyLCA0LCAyMjUsIDIzNSwgMjM2LCAxMzYsIDczLCA3MiwgNCwgMjI2LCAzNiwgCi0gICAgMjM3LCA0NywgNzMsIDcyLCA0LCAyMjUsIDI0NywgMjM2LCAxMTAsIDczLCA3MiwgNCwgMjI2LCA2NiwgMjM2LCAyMzgsIDczLCAKLSAgICA3MiwgNCwgMjI1LCAyNDUsIDIzNywgMTI2LCA3MywgNzIsIDQsIDIyNiwgMzIsIDIzNiwgMTMsIDczLCA3MiwgNCwgMjI2LCAKLSAgICA2NywgMjM3LCAzMywgNzMsIDcyLCA0LCAyMjUsIDE4MiwgMjM2LCAxMjAsIDczLCA3MiwgNCwgMjI2LCA3MywgMjM2LCAyNSwgCi0gICAgNzMsIDcyLCA0LCAyMjYsIDI5LCAyMjIsIDE2OCwgNzMsIDcyLCA0LCAyMjYsIDc4LCAyMjIsIDE4MiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDM3LCAyMjIsIDE2NSwgNzMsIDcyLCA0LCAyMjYsIDQsIDIyMiwgMTc2LCA3MywgNzIsIDQsIDIyNSwgMjI5LCAyMjIsIAotICAgIDE3NywgNzMsIDcyLCA0LCAyMjUsIDIxOSwgMjIyLCAxNjYsIDczLCA3MiwgNCwgMjI1LCAyNTUsIDIyMiwgMTY3LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjE2LCAyMjIsIDE4MSwgNzMsIDcyLCA0LCAyMjUsIDI0OCwgMjIyLCAxNjQsIDczLCA3MiwgNCwgMjI2LCAKLSAgICAzMywgMTYzLCAyMjIsIDE3NywgNzMsIDcyLCA0LCAyMjYsIDEzLCAxNjMsIDIyMiwgMTY2LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMTkyLCAxNjMsIDIyMiwgMTY3LCA3MywgNzIsIDQsIDIyNSwgMjIwLCAyMzgsIDgxLCA3MywgNzIsIDQsIDIyNiwgOCwgMjM5LCAKLSAgICA4LCA3MywgNzIsIDQsIDIyNSwgMjA3LCAyMzcsIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE4NSwgMjM4LCAxODIsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDksIDIzNywgMjE2LCA3MywgNzIsIDQsIDIyNSwgMjA4LCAyMzcsIDIyNiwgNzMsIDcyLCA0LCAyMjUsIAotICAgIDE5MSwgMjIyLCAxODcsIDczLCA3MiwgNCwgMjI2LCA2MiwgMjIyLCAxMjQsIDczLCA3MiwgNCwgMjI1LCAxOTgsIDIyMiwgCi0gICAgMTEzLCA3MywgNzIsIDQsIDIyNiwgNTEsIDIxOCwgMTY3LCA3MywgNzIsIDQsIDIyNiwgMjAsIDE4NSwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDY5LCAyMTcsIDE5MSwgNzMsIDcyLCA0LCAyMjYsIDM4LCAyMTksIDIzLCA3MywgNzIsIDQsIDIyNiwgNjgsIDIxOSwgCi0gICAgMzQsIDczLCA3MiwgNCwgMjI2LCAxNywgMjE4LCA0NSwgNzMsIDcyLCA0LCAyMjYsIDUzLCAyMTgsIDY5LCA3MywgNzIsIDQsIAotICAgIDIyNSwgMjMwLCAyMjUsIDM5LCA3MywgNzIsIDQsIDIyNiwgNTcsIDIyNSwgNTQsIDczLCA3MiwgNCwgMjI1LCAyNTMsIDIyNSwgCi0gICAgMzMsIDczLCA3MiwgNCwgMjI2LCA3MiwgMjI1LCA0NiwgNzMsIDcyLCA0LCAyMjUsIDE4NywgMjI1LCA0NiwgNzMsIDcyLCA0LCAKLSAgICAyMjYsIDQ3LCAyMjUsIDQ3LCA3MywgNzIsIDQsIDIyNSwgMjAzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjAxLCAyMjUsIAotICAgIDM1LCA3MywgNzIsIDQsIDIyNSwgMTg4LCAyMjUsIDI3LCA3MywgNzIsIDQsIDIyNSwgMjE0LCAxNjMsIDIyNSwgNDcsIDczLCAKLSAgICA3MiwgNCwgMjI2LCAxNCwgMTYzLCAyMjUsIDM0LCA3MywgNzIsIDQsIDIyNSwgMjMzLCAxNjMsIDIyNSwgMzUsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyNDMsIDIyOCwgMjM2LCA3MywgNzIsIDQsIDIyNiwgMjcsIDIyOCwgMjQ0LCA3MywgNzIsIDQsIDIyNiwgNDUsIAotICAgIDIyOCwgMjMyLCA3MywgNzIsIDQsIDIyNiwgNzYsIDIyOCwgMjM5LCA3MywgNzIsIDQsIDIyNiwgMTEsIDIyOCwgMjQwLCA3MywgCi0gICAgNzIsIDQsIDIyNiwgNywgMjI4LCAyMzQsIDczLCA3MiwgNCwgMjI1LCAyMTcsIDIyOCwgMjM1LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjUxLCAyMzgsIDE5OSwgNzMsIDcyLCA0LCAyMjYsIDYzLCAyMzgsIDIwNywgNzMsIDcyLCA0LCAyMjUsIDIyNywgMjM4LCAKLSAgICAxOTQsIDczLCA3MiwgNCwgMjI2LCAyNiwgMjM4LCAyMDMsIDczLCA3MiwgNCwgMjI2LCAxMiwgMjM4LCAyMDQsIDczLCA3MiwgCi0gICAgNCwgMjI2LCA0OCwgMjM4LCAxOTUsIDczLCA3MiwgNCwgMjI2LCA0OSwgMjM4LCAxOTcsIDczLCA3MiwgNCwgMjI1LCAyMDQsIAotICAgIDIxNiwgMjIwLCA3MywgNzIsIDQsIDIyNSwgMjUyLCAyMjMsIDEwLCA3MywgNzIsIDQsIDIyNSwgMjQ2LCAyMjMsIDI1LCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjUwLCAyMjIsIDI0OCwgNzMsIDcyLCA0LCAyMjUsIDE4NCwgMjIzLCAxNiwgNzMsIDcyLCA0LCAyMjYsIAotICAgIDAsIDIyMywgMTcsIDczLCA3MiwgNCwgMjI2LCA1MiwgMjIyLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1NSwgMjIzLCAxLCA3MywgCi0gICAgNzIsIDQsIDIyNSwgMjIzLCAyMjIsIDQ4LCA3MywgNzIsIDQsIDIyNSwgMTgzLCAyMjIsIDE4LCA3MywgNzIsIDQsIDIyNSwgCi0gICAgMjI2LCAyMjIsIDM5LCA3MywgNzIsIDQsIDIyNSwgMjQxLCAyMjIsIDIyLCA3MywgNzIsIDQsIDIyNSwgMTkzLCAyMDUsIAotICAgIDIzMCwgNzMsIDcyLCA0LCAyMjUsIDE5MCwgMjA2LCA4NiwgNzMsIDcyLCA0LCAyMjUsIDIyNCwgMjA0LCAxNjMsIDczLCA3MiwgCi0gICAgNCwgMjI1LCAyMDIsIDIwNiwgNTAsIDczLCA3MiwgNCwgMjI2LCAzNCwgMjA2LCA1NSwgNzMsIDcyLCA0LCAyMjUsIDIzMSwgCi0gICAgMjA1LCAxNzYsIDczLCA3MiwgNCwgMjI2LCA0MiwgMjA1LCAxODksIDczLCA3MiwgNCwgMjI1LCAyMTEsIDIyMCwgMjQyLCAKLSAgICA3MywgNzIsIDQsIDIyNiwgNjEsIDIyMSwgNSwgNzMsIDcyLCA0LCAyMjUsIDIwNSwgMjIwLCAyMjQsIDczLCA3MiwgNCwgCi0gICAgMjI2LCAyMSwgMjIwLCAyNTMsIDczLCA3MiwgNCwgMjI2LCA1OSwgMjIwLCAyMzEsIDczLCA3MiwgMTcsIDEwNSwgNzMsIDcyLCAKLSAgICAxNywgMTA4LCA3MywgNzIsIDE3LCAxNDcsIDczLCA3MiwgMTcsIDE0OSwgNzMsIDcyLCAxNywgMTcwLCA3MywgNzIsIDE3LCAKLSAgICAxOTUsIDczLCA3MiwgMTcsIDIxMywgMTExLCA3MywgNzIsIDE3LCAxOTksIDczLCA3MiwgMTcsIDIyMiwgNjMsIDczLCA3MiwgCi0gICAgMzksIDQyLCAyMDksIDE3NCwgNzMsIDcyLCAzOSwgNDIsIDIwOSwgMTQ3LCA3MywgNzIsIDM5LCA0MiwgMjM2LCAxMCwgNzMsIAotICAgIDcyLCAzOSwgNDIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMDksIDE1MywgMjA5LCAzNCwgNzMsIDcyLCAzOSwgNDIsIAotICAgIDIzNiwgMTIsIDIwOSwgMzQsIDczLCA3MiwgMzksIDQyLCAyMjQsIDExMywgMTAsIDEzLCAyNTEsIDMwLCAxMCwgMTMsIDI0OCwgCi0gICAgMTM4LCAxMCwgMTMsIDIzMCwgMTU4LCAxMCwgMTMsIDI0NCwgMTg0LCAxMCwgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjAyLCAKLSAgICAxMDcsIDEwLCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjAzLCA0NywgMTAsIDEzLCAyMzAsIAotICAgIDIyLCAxMCwgMTMsIDIyOCwgMjgsIDEwLCAxMywgMjI1LCA1LCAxMCwgMTMsIDIyMSwgMTc4LCAxMCwgMTMsIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDI1MSwgNTksIDEwLCAxMywgMjQwLCA0NywgMTAsIDEzLCAyMTUsIDI4LCAxMCwgMTMsIDIxNywgMTE5LCAxMCwgCi0gICAgMTMsIDIxNiwgMTIyLCAxMCwgMTMsIDIxMywgMzksIDEwLCAxMywgMjA5LCAxNjksIDEwLCAxMywgMjA5LCA4OCwgMTAsIDEzLCAKLSAgICAyMjksIDE0MCwgMTAsIDEzLCAyMDksIDEwMCwgMTAsIDEzLCAyNDQsIDIwNywgMTAsIDEzLCAyMDIsIDExMCwgMTAsIDEzLCAKLSAgICAyMzgsIDExNCwgMTAsIDEzLCAyNDMsIDg0LCAyNDgsIDEzOCwgMTAsIDEzLCAyNDMsIDg0LCAyMjEsIDE3OCwgMTAsIDEzLCAKLSAgICAyNDMsIDg0LCAyNDAsIDQ3LCAxMCwgMTMsIDI0MywgODQsIDIxNywgMTE5LCAxMCwgMTMsIDgxLCAyNDgsIDEzOCwgMTAsIAotICAgIDEzLCA4MSwgMjMwLCAxNTgsIDEwLCAxMywgODEsIDIzNywgNDMsIDEwLCAxMywgODEsIDIzNywgMTQ4LCAxMCwgMTMsIDgxLCAKLSAgICAyMDMsIDQ3LCAxMCwgMTMsIDgxLCAyMzAsIDIyLCAxMCwgMTMsIDgxLCAyMjgsIDI4LCAxMCwgMTMsIDgxLCAyMjUsIDUsIAotICAgIDEwLCAxMywgODEsIDIyMSwgMTc4LCAxMCwgMTMsIDgxLCAyMTQsIDE2MSwgMTAsIDEzLCA4MSwgMjUxLCA1OSwgMTAsIDEzLCAKLSAgICA4MSwgMjQwLCA0NywgMTAsIDEzLCA4MSwgMjE1LCAyOCwgMTAsIDEzLCA4MSwgMjE3LCAxMTksIDEwLCAxMywgODEsIDIxMywgCi0gICAgMzksIDEwLCAxMywgODEsIDIwOSwgMTY5LCAxMCwgMTMsIDgxLCAyMDksIDg4LCAxMCwgMTMsIDgxLCAyMjksIDE0MCwgMTAsIAotICAgIDEzLCA4MSwgMjQ0LCAyMDcsIDEwLCAxMywgODEsIDIzOCwgMTE0LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMzAsIDE1OCwgMTAsIAotICAgIDEzLCAyMDksIDI0NywgMjM3LCAxNDgsIDEwLCAxMywgMjA5LCAyNDcsIDIwMywgNDcsIDEwLCAxMywgMjA5LCAyNDcsIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMjA5LCAyNDcsIDIyMSwgMTc4LCAxMCwgMTMsIDIwOSwgMjQ3LCAyMTQsIDE2MSwgMTAsIDEzLCAyMDksIAotICAgIDI0NywgMjUxLCA1OSwgMTAsIDEzLCAyMDksIDI0NywgMjE1LCAyOCwgMTAsIDEzLCAyMDksIDI0NywgMjE3LCAxMTksIDEwLCAKLSAgICAxMywgMjA5LCAyNDcsIDIxMywgMzksIDEwLCAxMywgMjA5LCAyNDcsIDIyOSwgMTQwLCAxMCwgMTMsIDIwOSwgMjQ3LCAyNDQsIAotICAgIDIwNywgMTAsIDEzLCAyMDksIDI0NywgMjM4LCAxMTQsIDEwLCAxMywgMjA5LCAyNDcsIDI0MywgODQsIDIyMSwgMTc4LCAxMCwgCi0gICAgMTMsIDIwOSwgMjQ3LCAyNDMsIDg0LCAyMTcsIDExOSwgMTAsIDEzLCAyMTEsIDQwLCAyNDgsIDEzOCwgMTAsIDEzLCAyMTEsIAotICAgIDQwLCAyMzAsIDE1OCwgMTAsIDEzLCAyMTEsIDQwLCAyMzcsIDQzLCAxMCwgMTMsIDIxMSwgNDAsIDIzNywgMTQ4LCAxMCwgCi0gICAgMTMsIDIxMSwgNDAsIDIwOSwgMjUxLCAxMCwgMTMsIDIxMSwgNDAsIDIwMywgNDcsIDEwLCAxMywgMjExLCA0MCwgMjMwLCAKLSAgICAyMiwgMTAsIDEzLCAyMTEsIDQwLCAyMjUsIDUsIDEwLCAxMywgMjExLCA0MCwgMjIxLCAxNzgsIDEwLCAxMywgMjExLCA0MCwgCi0gICAgMjE0LCAxNjEsIDEwLCAxMywgMjExLCA0MCwgMjUxLCA1OSwgMTAsIDEzLCAyMTEsIDQwLCAyNDAsIDQ3LCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIxNSwgMjgsIDEwLCAxMywgMjExLCA0MCwgMjE3LCAxMTksIDEwLCAxMywgMjExLCA0MCwgMjEzLCAzOSwgCi0gICAgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDE2OSwgMTAsIDEzLCAyMTEsIDQwLCAyMDksIDg4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDIyOSwgMTQwLCAxMCwgMTMsIDIxMSwgNDAsIDI0NCwgMjA3LCAxMCwgMTMsIDIxMSwgNDAsIDIwMiwgMTEwLCAxMCwgMTMsIAotICAgIDIxMSwgNDAsIDIzOCwgMTE0LCAxMCwgMTMsIDIxMSwgNDAsIDI0MywgODQsIDI0OCwgMTM4LCAxMCwgMTMsIDIxMSwgNDAsIAotICAgIDI0MywgODQsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjUxLCAzMCwgMTAsIDEzLCAyMjcsIDEzLCAyNDgsIDEzOCwgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMzAsIDE1OCwgMTAsIDEzLCAyMjcsIDEzLCAyNDQsIDE4NCwgMTAsIDEzLCAyMjcsIDEzLCAKLSAgICAyMzcsIDQzLCAxMCwgMTMsIDIyNywgMTMsIDIwNCwgNzAsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMDcsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM3LCAxNDgsIDEwLCAxMywgMjI3LCAxMywgMjA5LCAyNTEsIDEwLCAxMywgMjI3LCAxMywgMjAzLCA0NywgCi0gICAgMTAsIDEzLCAyMjcsIDEzLCAyMjgsIDI4LCAxMCwgMTMsIDIyNywgMTMsIDIyNSwgNSwgMTAsIDEzLCAyMjcsIDEzLCAyMjEsIAotICAgIDE3OCwgMTAsIDEzLCAyMjcsIDEzLCAyMTQsIDE2MSwgMTAsIDEzLCAyMjcsIDEzLCAyNTEsIDU5LCAxMCwgMTMsIDIyNywgCi0gICAgMTMsIDI0MCwgNDcsIDEwLCAxMywgMjI3LCAxMywgMjE1LCAyOCwgMTAsIDEzLCAyMjcsIDEzLCAyMTcsIDExOSwgMTAsIDEzLCAKLSAgICAyMjcsIDEzLCAyMTYsIDEyMiwgMTAsIDEzLCAyMjcsIDEzLCAyMTMsIDM5LCAxMCwgMTMsIDIyNywgMTMsIDIwOSwgMTY5LCAKLSAgICAxMCwgMTMsIDIyNywgMTMsIDIwOSwgODgsIDEwLCAxMywgMjI3LCAxMywgMjI5LCAxNDAsIDEwLCAxMywgMjI3LCAxMywgCi0gICAgMjA5LCAxMDAsIDEwLCAxMywgMjI3LCAxMywgMjQ0LCAyMDcsIDEwLCAxMywgMjI3LCAxMywgMjAyLCAxMTAsIDEwLCAxMywgCi0gICAgMjI3LCAxMywgMjM4LCAxMTQsIDEwLCAxMywgMTY5LCAyNDgsIDEzOCwgMTAsIDEzLCAxNjksIDIzMCwgMTU4LCAxMCwgMTMsIAotICAgIDE2OSwgMjQ0LCAxODQsIDEwLCAxMywgMTY5LCAyMDQsIDcwLCAxMCwgMTMsIDE2OSwgMjAyLCAxMDcsIDEwLCAxMywgMTY5LCAKLSAgICAyMzcsIDE0OCwgMTAsIDEzLCAxNjksIDIwOSwgMjUxLCAxMCwgMTMsIDE2OSwgMjAzLCA0NywgMTAsIDEzLCAxNjksIDIyOCwgCi0gICAgMjgsIDEwLCAxMywgMTY5LCAyMjUsIDUsIDEwLCAxMywgMTY5LCAyMjEsIDE3OCwgMTAsIDEzLCAxNjksIDIxNCwgMTYxLCAKLSAgICAxMCwgMTMsIDE2OSwgMjUxLCA1OSwgMTAsIDEzLCAxNjksIDI0MCwgNDcsIDEwLCAxMywgMTY5LCAyMTUsIDI4LCAxMCwgMTMsIAotICAgIDE2OSwgMjE3LCAxMTksIDEwLCAxMywgMTY5LCAyMTYsIDEyMiwgMTAsIDEzLCAxNjksIDIxMywgMzksIDEwLCAxMywgMTY5LCAKLSAgICAyMDksIDE2OSwgMTAsIDEzLCAxNjksIDIwOSwgODgsIDEwLCAxMywgMTY5LCAyMjksIDE0MCwgMTAsIDEzLCAxNjksIDIwOSwgCi0gICAgMTAwLCAxMCwgMTMsIDE2OSwgMjQ0LCAyMDcsIDEwLCAxMywgMTY5LCAyMDIsIDExMCwgMTAsIDEzLCAxNjksIDIzOCwgMTE0LCAKLSAgICAxMCwgMTMsIDIxOSwgMjU1LCA4MywgMywgMTUxLCAzLCAyMDksIDIwOSwgMTAsIDEzLCAyMTksIDI1NSwgMTUxLCAzLCAyNDQsIAotICAgIDE4NCwgMjI1LCAxNDIsIDk5LCAyNDEsIDE3NiwgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAyMTEsIDIzOCwgMjA0LCAxNiwgCi0gICAgMjI1LCAxNDIsIDk5LCAyMDQsIDQ2LCAyMDQsIDE2LCAyMjUsIDE0MiwgOTksIDE1MywgMjA0LCAxNiwgMjI1LCAxNDIsIDk5LCAKLSAgICAyMTYsIDEzOCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAyMzcsIDI0NCwgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCA2MSwgCi0gICAgMjQyLCA2MSwgMjI1LCAxNDIsIDk5LCAxMTgsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjAsIDc2LCAyNDYsIAotICAgIDE4MSwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMzksIDE0NywgNzYsIDI0NiwgCi0gICAgMTgxLCAyMjUsIDE0MiwgOTksIDIzOSwgMjMzLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIAotICAgIDI0NiwgMTgxLCAyMjUsIDE0MiwgOTksIDIxMywgMTEyLCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMjQxLCAxNDMsIAotICAgIDc2LCAyNDYsIDE4MSwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCAxODEsIDIyNSwgMTQyLCA5OSwgMTE4LCA3NiwgCi0gICAgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMTI2LCA3NiwgMjQ4LCAKLSAgICAyNDMsIDIyNSwgMTQyLCA5OSwgMjM5LCAxNDcsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIAotICAgIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDIxMiwgODgsIDc2LCAyNDgsIDI0MywgMjI1LCAxNDIsIDk5LCAyMTMsIDExMiwgCi0gICAgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ4LCAyNDMsIDIyNSwgMTQyLCA5OSwgMjIyLCAKLSAgICA2NCwgNzYsIDI0OCwgMjQzLCAyMjUsIDE0MiwgOTksIDExOCwgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMTIwLCA3NiwgCi0gICAgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAxMjYsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDIzOSwgMTQ3LCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMzksIDIzMywgNzYsIDI0NiwgNTgsIDIyNSwgMTQyLCA5OSwgMjEyLCA4OCwgNzYsIDI0NiwgCi0gICAgNTgsIDIyNSwgMTQyLCA5OSwgMjEzLCAxMTIsIDc2LCAyNDYsIDU4LCAyMjUsIDE0MiwgOTksIDI0MSwgMTQzLCA3NiwgMjQ2LCAKLSAgICA1OCwgMjI1LCAxNDIsIDk5LCAyMjIsIDY0LCA3NiwgMjQ2LCA1OCwgMjI1LCAxNDIsIDk5LCAyMTgsIDc5LCAyMjUsIDE0MiwgCi0gICAgOTksIDIxOSwgMjQyLCAyMjUsIDE0MiwgOTksIDI0OCwgMjQ0LCAyMjUsIDE0MiwgOTksIDI0NiwgOTksIDIyNSwgMTQyLCAKLSAgICA5OSwgMjExLCAxODMsIDIyNSwgMTQyLCA5OSwgMjEwLCAyMTYsIDIyNSwgMTQyLCA5OSwgMjUwLCAyMSwgMjI1LCAxNDIsIAotICAgIDk5LCAyMDQsIDcsIDIyNSwgMTQyLCA5OSwgMjMwLCA5NCwgMjI1LCAxNDIsIDk5LCAyNDksIDI1LCAxNjEsIDk5LCAyMzYsIAotICAgIDEwNiwgMjQ5LCAyNSwgMTYxLCA5OSwgMjM2LCAxMDQsIDE2MSwgOTksIDIzNiwgMTAzLCAxNjEsIDk5LCAyMzYsIDEwMiwgCi0gICAgMTYxLCA5OSwgMjM2LCAxMDEsIDE2MSwgOTksIDIzNiwgMTAwLCAxNjEsIDk5LCAyMzYsIDk5LCAxNjEsIDk5LCAyMzYsIDk4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDk3LCAxNjEsIDk5LCAyMzYsIDk2LCAxNjEsIDk5LCAyMzYsIDk1LCAxNjEsIDk5LCAyMzYsIDk0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDkzLCAxNjEsIDk5LCAyMzYsIDkyLCAxNjEsIDk5LCAyMzYsIDkxLCAxNjEsIDk5LCAyMzYsIDkwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDg5LCAxNjEsIDk5LCAyMzYsIDg4LCAxNjEsIDk5LCAyMzYsIDg3LCAxNjEsIDk5LCAyMzYsIDg2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDg1LCAxNjEsIDk5LCAyMzYsIDg0LCAxNjEsIDk5LCAyMzYsIDgzLCAxNjEsIDk5LCAyMzYsIDgyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDgxLCAxNjEsIDk5LCAyMzYsIDgwLCAxNjEsIDk5LCAyMzYsIDc5LCAxNjEsIDk5LCAyMzYsIDc4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDc3LCAxNjEsIDk5LCAyMzYsIDc2LCAxNjEsIDk5LCAyMzYsIDc1LCAxNjEsIDk5LCAyMzYsIDc0LCAKLSAgICAxNjEsIDk5LCAyMzYsIDczLCAxNjEsIDk5LCAyMzYsIDcyLCAxNjEsIDk5LCAyMzYsIDcxLCAxNjEsIDk5LCAyMzYsIDcwLCAKLSAgICAxNjEsIDk5LCAyMzYsIDY5LCAxNjEsIDk5LCAyMzYsIDY4LCAxNjEsIDk5LCAyMzYsIDY3LCAxNjEsIDk5LCAyMzYsIDY2LCAKLSAgICAxNjEsIDk5LCAyMzYsIDY1LCAxNjEsIDk5LCAyMzYsIDY0LCAxNjEsIDk5LCAyMzYsIDYzLCAxNjEsIDk5LCAyMzYsIDYyLCAKLSAgICAxNjEsIDk5LCAyMzYsIDYxLCAxNjEsIDk5LCAyMzYsIDYwLCAxNjEsIDk5LCAyMzYsIDU5LCAxNjEsIDk5LCAyMzYsIDU4LCAKLSAgICAxNjEsIDk5LCAyMzYsIDU3LCAxNjEsIDk5LCAyMzYsIDU2LCAxNjEsIDk5LCA4MCwgMjQ5LCAyNSwgMTYxLCA5OSwgMjA2LCAKLSAgICAzNywgMTYxLCA5OSwgMjA2LCAzNiwgMTYxLCA5OSwgMjA2LCAzNSwgMTYxLCA5OSwgMjA2LCAzNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAzMywgMTYxLCA5OSwgMjA2LCAzMiwgMTYxLCA5OSwgMjA2LCAzMSwgMTYxLCA5OSwgMjA2LCAzMCwgMTYxLCA5OSwgMjA2LCAKLSAgICAyOSwgMTYxLCA5OSwgMjA2LCAyOCwgMTYxLCA5OSwgMjA2LCAyNywgMTYxLCA5OSwgMjA2LCAyNiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyNSwgMTYxLCA5OSwgMjA2LCAyNCwgMTYxLCA5OSwgMjA2LCAyMywgMTYxLCA5OSwgMjA2LCAyMiwgMTYxLCA5OSwgMjA2LCAKLSAgICAyMSwgMTYxLCA5OSwgMjA2LCAyMCwgMTYxLCA5OSwgMjA2LCAxOSwgMTYxLCA5OSwgMjA2LCAxOCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxNywgMTYxLCA5OSwgMjA2LCAxNiwgMTYxLCA5OSwgMjA2LCAxNSwgMTYxLCA5OSwgMjA2LCAxNCwgMTYxLCA5OSwgMjA2LCAKLSAgICAxMywgMTYxLCA5OSwgMjA2LCAxMiwgMTYxLCA5OSwgMjA2LCAxMSwgMTYxLCA5OSwgMjA2LCAxMCwgMTYxLCA5OSwgMjA2LCAKLSAgICA5LCAxNjEsIDk5LCAyMDYsIDgsIDE2MSwgOTksIDIwNiwgNywgMTYxLCA5OSwgMjA2LCA2LCAxNjEsIDk5LCAyMDYsIDUsIAotICAgIDE2MSwgOTksIDIwNiwgNCwgMTYxLCA5OSwgMjA2LCAzLCAxNjEsIDk5LCAyMDYsIDIsIDE2MSwgOTksIDIwNiwgMSwgMTYxLCAKLSAgICA5OSwgMjA2LCAwLCAxNjEsIDk5LCAyMDUsIDI1NSwgMTYxLCA5OSwgMjA1LCAyNTQsIDE2MSwgOTksIDIwNSwgMjUzLCAxNjEsIAotICAgIDk5LCAyMDUsIDI1MiwgMTYxLCA5OSwgMjA1LCAyNTEsIDE2MSwgOTksIDIwNSwgMjUwLCAxNjEsIDk5LCAyMDUsIDI0OSwgCi0gICAgMTYxLCA5OSwgMjA1LCAyNDgsIDE2MSwgOTksIDIwNSwgMjQ3LCAxNjEsIDk5LCAyMDUsIDI0NiwgMTYxLCA5OSwgMjA1LCAKLSAgICAyNDUsIDIxOCwgODgsIDI0NywgMzgsIDI0OSwgMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDEyMCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAxMjYsIDc2LCAyMTEsIDIyNSwgCi0gICAgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAyMzMsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjEyLCA4OCwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIAotICAgIDExMiwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyNDEsIDE0MywgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMjIsIDY0LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjExLCAyMjUsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzMCwgMTc5LCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgMzIsIDc2LCAKLSAgICAyMTEsIDIyNSwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIxMSwgMjI1LCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIAotICAgIDgyLCA3NiwgMjExLCAyMjUsIDIxOCwgODgsIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMTIwLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMTI2LCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAKLSAgICAzOCwgMjM5LCAxNDcsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDIzMywgNzYsIDIzNywgNTMsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDIxMiwgODgsIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDIzNywgCi0gICAgNTMsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgMjIyLCA2NCwgCi0gICAgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIwOSwgMTUzLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjMwLCAxNzksIDc2LCAyMzcsIDUzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMjksIDMyLCA3NiwgMjM3LCA1MywgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDIzNywgNTMsIDIxOCwgODgsIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyMzcsIDUzLCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMTYsIDEzOCwgMjMwLCA5NCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjUxLCAxMzIsIDc2LCAyNDMsIAotICAgIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMTIwLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0MywgCi0gICAgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIDE0NywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzksIAotICAgIDIzMywgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgCi0gICAgMzgsIDIxMywgMTEyLCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIDI0NywgMzgsIDI0MSwgMTQzLCA3NiwgMjQzLCAyMjAsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjA5LCAxNTMsIDc2LCAKLSAgICAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgMjMwLCAxNzksIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgCi0gICAgMjI5LCAzMiwgNzYsIDI0MywgMjIwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTcsIDQ5LCA3NiwgMjQzLCAyMjAsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIyOSwgODIsIDc2LCAyNDMsIDIyMCwgMjE4LCA4OCwgMjQ3LCAzOCwgNjIsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDI1MSwgMTMyLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAxMjAsIDc2LCAyNDYsIDIsIDIxOCwgCi0gICAgODgsIDI0NywgMzgsIDEyNiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjM5LCAxNDcsIDc2LCAyNDYsIDIsIAotICAgIDIxOCwgODgsIDI0NywgMzgsIDIzOSwgMjMzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTIsIDg4LCA3NiwgCi0gICAgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMTMsIDExMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjQxLCAKLSAgICAxNDMsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIDIyMiwgNjQsIDc2LCAyNDYsIDIsIDIxOCwgODgsIDI0NywgMzgsIAotICAgIDIwOSwgMTUzLCA3NiwgMjQ2LCAyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMzAsIDE3OSwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgCi0gICAgMjQ3LCAzOCwgMjI5LCAzMiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgMjE3LCA0OSwgNzYsIDI0NiwgMiwgMjE4LCAKLSAgICA4OCwgMjQ3LCAzOCwgMjI5LCA4MiwgNzYsIDI0NiwgMiwgMjE4LCA4OCwgMjQ3LCAzOCwgNjEsIDIzMCwgOTQsIDIxOCwgODgsIAotICAgIDI0NywgMzgsIDIzOSwgMTczLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMzLCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDMyLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDMwLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDI5LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDI4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ3LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ2LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQ1LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDQ0LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQzLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQyLCAyMTgsIDg4LCAKLSAgICAyNDcsIDM4LCAyMDgsIDQxLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDQwLCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM5LCAKLSAgICAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM4LCAyMTgsIDg4LCAyNDcsIDM4LCAyMDgsIDM2LCAyMTgsIDg4LCAyNDcsIDM4LCAKLSAgICAyMDgsIDM1LCAxNywgMjAyLCA4NSwgMjM5LCAxMDIsIDIxMSwgNjEsIDE3LCAyMDIsIDg1LCAyNDUsIDIzMywgMTcsIDExOCwgCi0gICAgMjQ1LCAyMzMsIDE3LCAxMjAsIDI0NSwgMjMzLCAxNywgMTI2LCAyNDUsIDIzMywgMTcsIDIzOSwgMTQ3LCAyNDUsIDIzMywgCi0gICAgMTcsIDIzOSwgMjMzLCAyNDUsIDIzMywgMTcsIDIxMiwgODgsIDI0NSwgMjMzLCAxNywgMjEzLCAxMTIsIDI0NSwgMjMzLCAKLSAgICAxNywgMjQxLCAxNDMsIDI0NSwgMjMzLCAxNywgMjIyLCA2NCwgMjQ1LCAyMzMsIDI0MywgMTc0LCA0MywgNDEsIDE3LCAyMDIsIAotICAgIDg0LCAyNDMsIDE3NCwgMTgyLCA0MywgNDEsIDE3LCAyMDIsIDg0LCAxMDIsIDgsIDYsIDEsIDYzLCAxMDIsIDgsIDYsIDEsIAotICAgIDI0OSwgMjU1LCAxMDIsIDgsIDYsIDEsIDI0NywgMTI1LCAxMDIsIDgsIDYsIDEsIDI0NSwgNTEsIDEwMiwgOCwgNiwgMSwgCi0gICAgNzQsIDEwMiwgOCwgNiwgMSwgMjQwLCAxNzQsIDEwMiwgOCwgNiwgMSwgMjM5LCA3NSwgMTAyLCA4LCA2LCAxLCAyMzcsIAotICAgIDE3MSwgMTAyLCA4LCA2LCAxLCA3NSwgMTAyLCA4LCA2LCAxLCAyMzAsIDE4NCwgMTAyLCA4LCA2LCAxLCAyMzAsIDU0LCAKLSAgICAxMDIsIDgsIDYsIDEsIDE1OSwgMTAyLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTAyLCA4LCA2LCAxLCAyMjMsIDE2MywgMTAyLCAKLSAgICA4LCA2LCAxLCA3OCwgMTAyLCA4LCA2LCAxLCAyMTksIDE4NCwgMTAyLCA4LCA2LCAxLCAyMTcsIDEzNCwgMTAyLCA4LCA2LCAKLSAgICAxLCAxNDYsIDEwMiwgOCwgNiwgMSwgMTk0LCAxMDIsIDgsIDYsIDEsIDIxMCwgNjksIDEwMiwgOCwgNiwgMSwgNjgsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjA2LCAxNjQsIDEwMiwgOCwgNiwgMSwgMjA0LCAxNDQsIDEwMiwgOCwgNiwgMSwgMjAzLCAxOTYsIDEwMiwgCi0gICAgOCwgNiwgMSwgMjAzLCAxMjQsIDEwMiwgOCwgNiwgMSwgMjAyLCAxNTksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgCi0gICAgOCwgNiwgMSwgMTk0LCA0MywgMzcsIDgsIDYsIDEsIDI0NywgMTI1LCA0MywgMzcsIDgsIDYsIDEsIDE0NiwgNDMsIDI0NiwgCi0gICAgMjM5LCA0MywgMjAzLCAxOTgsIDEwMywgOCwgNiwgMSwgNjMsIDEwMywgOCwgNiwgMSwgMjQ5LCAyNTUsIDEwMywgOCwgNiwgCi0gICAgMSwgMjQ3LCAxMjUsIDEwMywgOCwgNiwgMSwgMjQ1LCA1MSwgMTAzLCA4LCA2LCAxLCA3NCwgMTAzLCA4LCA2LCAxLCAyNDAsIAotICAgIDE3NCwgMTAzLCA4LCA2LCAxLCAyMzksIDc1LCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxMDMsIDgsIDYsIDEsIDc1LCAKLSAgICAxMDMsIDgsIDYsIDEsIDIzMCwgMTg0LCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDEwMywgOCwgNiwgMSwgMTU5LCAxMDMsIDgsIAotICAgIDYsIDEsIDIyNiwgMTg1LCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxMDMsIDgsIDYsIDEsIDc4LCAxMDMsIDgsIDYsIDEsIAotICAgIDIxOSwgMTg0LCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxMDMsIDgsIDYsIDEsIDE0NiwgMTAzLCA4LCA2LCAxLCAxOTQsIAotICAgIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTAzLCA4LCA2LCAxLCA2OCwgMTAzLCA4LCA2LCAxLCAyMDYsIDE2NCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDQsIDE0NCwgMTAzLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTAzLCA4LCA2LCAxLCAyMDMsIDEyNCwgMTAzLCA4LCAKLSAgICA2LCAxLCAyMDIsIDE1OSwgMTAzLCAyMzUsIDI1NSwgMTAzLCAyMjMsIDE4NywgMTAzLCAyMTQsIDE3OSwgMTAzLCAyMTEsIAotICAgIDE2NywgMTAzLCAyMTgsIDEwLCAxMDMsIDIwNCwgNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDYzLCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyNDksIDI1NSwgMTgyLCA0MywgOCwgNiwgMSwgMjQ3LCAxMjUsIDE4MiwgNDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgNDMsIAotICAgIDgsIDYsIDEsIDc0LCAxODIsIDQzLCA4LCA2LCAxLCAyNDAsIDE3NCwgMTgyLCA0MywgOCwgNiwgMSwgMjM5LCA3NSwgMTgyLCAKLSAgICA0MywgOCwgNiwgMSwgMjM3LCAxNzEsIDE4MiwgNDMsIDgsIDYsIDEsIDc1LCAxODIsIDQzLCA4LCA2LCAxLCAyMzAsIDE4NCwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjMwLCA1NCwgMTgyLCA0MywgOCwgNiwgMSwgMTU5LCAxODIsIDQzLCA4LCA2LCAxLCAyMjYsIAotICAgIDE4NSwgMTgyLCA0MywgOCwgNiwgMSwgMjIzLCAxNjMsIDE4MiwgNDMsIDgsIDYsIDEsIDc4LCAxODIsIDQzLCA4LCA2LCAxLCAKLSAgICAyMTksIDE4NCwgMTgyLCA0MywgOCwgNiwgMSwgMjE3LCAxMzQsIDE4MiwgNDMsIDgsIDYsIDEsIDE0NiwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMTk0LCAxODIsIDQzLCA4LCA2LCAxLCAyMTAsIDY5LCAxODIsIDQzLCA4LCA2LCAxLCA2OCwgMTgyLCA0MywgOCwgCi0gICAgNiwgMSwgMjA2LCAxNjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwNCwgMTQ0LCAxODIsIDQzLCA4LCA2LCAxLCAyMDMsIDE5NiwgCi0gICAgMTgyLCA0MywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgNDMsIDgsIDYsIDEsIDIwMiwgMTU5LCAyMTYsIDE4OCwgMjI1LCAKLSAgICAyNiwgNTQsIDIxNiwgMTg4LCAyMjUsIDIzLCA1NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgMjQ5LCAyNTUsIDE4MiwgMTAzLCA4LCA2LCAxLCAyNDcsIDEyNSwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0NSwgNTEsIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCA3NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDI0MCwgMTc0LCAxODIsIDEwMywgOCwgNiwgMSwgMjM5LCAKLSAgICA3NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzNywgMTcxLCAxODIsIDEwMywgOCwgNiwgMSwgNzUsIDE4MiwgMTAzLCA4LCA2LCAKLSAgICAxLCAyMzAsIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIzMCwgNTQsIDE4MiwgMTAzLCA4LCA2LCAxLCAxNTksIDE4MiwgCi0gICAgMTAzLCA4LCA2LCAxLCAyMjYsIDE4NSwgMTgyLCAxMDMsIDgsIDYsIDEsIDIyMywgMTYzLCAxODIsIDEwMywgOCwgNiwgMSwgCi0gICAgNzgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIxNywgMTM0LCAxODIsIDEwMywgCi0gICAgOCwgNiwgMSwgMTQ2LCAxODIsIDEwMywgOCwgNiwgMSwgMTk0LCAxODIsIDEwMywgOCwgNiwgMSwgMjEwLCA2OSwgMTgyLCAKLSAgICAxMDMsIDgsIDYsIDEsIDY4LCAxODIsIDEwMywgOCwgNiwgMSwgMjA2LCAxNjQsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMDQsIAotICAgIDE0NCwgMTgyLCAxMDMsIDgsIDYsIDEsIDIwMywgMTk2LCAxODIsIDEwMywgOCwgNiwgMSwgMjAzLCAxMjQsIDE4MiwgMTAzLCAKLSAgICA4LCA2LCAxLCAyMDIsIDE1OSwgMjQ1LCAxMjgsIDE4MiwgMTAzLCA4LCA2LCAxLCAyMTksIDE4NCwgMTgyLCAxMDMsIDIzNSwgCi0gICAgMTY0LCAxODIsIDEwMywgMTg1LCAxODIsIDEwMywgMjE1LCAzNiwgMTgyLCAxMDMsIDI1MSwgMjMyLCAxODIsIDEwMywgMjA0LCAKLSAgICA2MywgNTEsIDI0MywgMTMyLCAxMDMsIDI0NiwgNDIsIDEwMywgMjQ1LCAxNzYsIDEwMywgMjM5LCAxMjksIDEwMywgMjM1LCAKLSAgICAxNTUsIDEwMywgMjIyLCAyMTMsIDEwMywgMjIyLCAyMDUsIDEwMywgMjIwLCA1MSwgMTAzLCAyMTEsIDI0NSwgMTAzLCAxMTIsIAotICAgIDMsIDI0MCwgMjEyLCA4MiwgMTAzLCAyMDUsIDE2NiwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCA2MywgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDksIDI1NSwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyNDcsIDEyNSwgMjE2LCAxMzAsIAotICAgIDIzMSwgMzIsIDE2LCAxLCAyNDUsIDUxLCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgCi0gICAgMTYsIDEsIDI0MCwgMTc0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIzOSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAKLSAgICAxNiwgMSwgMjM3LCAxNzEsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgCi0gICAgMjMwLCAxODQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjMwLCA1NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAKLSAgICAxNTksIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjI2LCAxODUsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjIzLCAKLSAgICAxNjMsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgNzgsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE5LCAxODQsIAotICAgIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMjE3LCAxMzQsIDIxNiwgMTMwLCAyMzEsIDMyLCAxNiwgMSwgMTQ2LCAyMTYsIAotICAgIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDE5NCwgMjE2LCAxMzAsIDIzMSwgMzIsIDE2LCAxLCAyMTAsIDY5LCAyMTYsIDEzMCwgCi0gICAgMjMxLCAzMiwgMTYsIDEsIDY4LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwNiwgMTY0LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwNCwgMTQ0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMywgMTk2LCAyMTYsIDEzMCwgMjMxLCAKLSAgICAzMiwgMTYsIDEsIDIwMywgMTI0LCAyMTYsIDEzMCwgMjMxLCAzMiwgMTYsIDEsIDIwMiwgMTU5LCA1MSwgMTcyLCAyMzYsIAotICAgIDEzMCwgMTAzLCA2NywgMjI5LCAxNCwgMTAzLCA2NywgMjE1LCAzNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTAwLCAKLSAgICAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMiwgMTAzLCA2NywgMjQ0LCAKLSAgICA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDYsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDc4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDUsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDExOCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTIsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg1LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCA5NCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTE1LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICAxMDEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExNywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTMsIDEwMywgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDExNiwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgNzksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDg0LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NywgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgMTA3LCAxMDMsIDEyLCAKLSAgICAyMDYsIDIzOSwgMjMzLCAxMDksIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg3LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OCwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTYsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEyMiwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgMTIxLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA3NSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgCi0gICAgMTAyLCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMjAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDExMSwgMTAzLCAxMiwgCi0gICAgMjA2LCAyMzksIDIzMywgOTcsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDc2LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCAKLSAgICA5OSwgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgODEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgwLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTAsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDg4LCAxMDMsIDEyLCAyMDYsIDIzOSwgMjMzLCA5MCwgCi0gICAgMTAzLCAxMiwgMjA2LCAyMzksIDIzMywgOTEsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDgzLCAxMDMsIDEyLCAyMDYsIAotICAgIDIzOSwgMjMzLCAxMTQsIDEwMywgMTIsIDIwNiwgMjM5LCAyMzMsIDEwOCwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAKLSAgICAxMiwgMjA2LCAyMzksIDIzMywgODksIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIAotICAgIDEyMSwgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgMTE5LCAyMDgsIDEzMywgMjEzLCAKLSAgICAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCAxMDMsIDIwOCwgMTMzLCAyMTMsIDMzLCAyNDcsIDIyNiwgMTIsIAotICAgIDIwNiwgMjM5LCAyMzMsIDg2LCAyMDgsIDEzMywgMjEzLCAzMywgMjQ3LCAyMjYsIDEyLCAyMDYsIDIzOSwgMjMzLCA5OSwgCi0gICAgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAyMzksIDIzMywgODIsIDIwOCwgMTMzLCAyMTMsIDMzLCAKLSAgICAyNDcsIDIyNiwgMTIsIDIwNiwgMjM5LCAyMzMsIDExMywgMjA4LCAxMzMsIDIxMywgMzMsIDI0NywgMjI2LCAxMiwgMjA2LCAKLSAgICAyMzksIDIzMywgOTUsIDQzLCAxODksIDI1MSwgMTExLCA0MywgMTg5LCAyNTEsIDEzNiwgMjQ1LCA2MiwgMjM5LCAxODQsIAotICAgIDI0NiwgMTYsIDIwNywgMywgMjIyLCA4MCwgMywgMjExLCA5MSwgMjEwLCAyMDksIDExNSwgMjI0LCAxMSwgMjEwLCAyMDgsIAotICAgIDI0NiwgNDYsIDI1MCwgNTAsIDI0MiwgMTcsIDIxMCwgMjA3LCAxMTUsIDI0NywgMTgyLCAyMTYsIDE4OSwgMjQ3LCAyMDgsIAotICAgIDI1MCwgNTAsIDIyMiwgNzksIDIwNCwgODEsIDIwNCwgNzUsIDIwNSwgMTgxLCAyMjQsIDExOCwgMjA0LCA2NSwgMjQxLCAKLSAgICAxODAsIDIzOCwgNDYsIDI0MCwgMjI4LCAyNDEsIDE4MCwgMjM4LCA0NiwgMjUwLCAyMzgsIDI0MSwgMTgwLCAyMzgsIDQ2LCAKLSAgICAyNTAsIDY4LCAyMzgsIDQ2LCAzLCAyMjQsIDIzMSwgMjIyLCAyMTQsIDIyNCwgMzAsIDk3LCAyMDQsIDY3LCAyNDUsIDEzOSwgCi0gICAgMjI0LCAzMCwgOTcsIDIzOSwgMjQ1LCAyMTcsIDU2LCAyMjQsIDMwLCA5NywgMjA0LCA2NywgMjM4LCA3NywgMjI0LCAzMCwgCi0gICAgOTcsIDIzOSwgMTAyLCAyMjQsIDMwLCA5NywgMjA0LCA5NCwgMjM4LCA3NywgMjI0LCAzMCwgOTcsIDIyOCwgMSwgMjE3LCAKLSAgICA1NiwgMjI0LCAzMCwgOTcsIDIwNCwgOTQsIDI0NSwgMTM5LCAyMjQsIDMwLCA5NywgMjQ1LCAxMzksIDIyNCwgMjksIDIyMiwgCi0gICAgMjE0LCAyMjQsIDMwLCAzLCAyNDAsIDEwMiwgMjM5LCAyNDUsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMjgsIAotICAgIDEsIDIxNywgNTYsIDIyNCwgMzAsIDMsIDI0MCwgMTAyLCAyMzksIDEwMiwgMjI0LCAzMCwgMywgMjQwLCAxMDIsIDIxMCwgCi0gICAgMjE1LCAzLCAyNDAsIDEwMiwgMjM4LCA0NCwgMjExLCA5NCwgMjEyLCAyMzMsIDIxMSwgOTQsIDIwOSwgODAsIDYyLCAyNDIsIAotICAgIDQ5LCA2MSwgMjEwLCAyMTQsIDYxLCAyMTAsIDIxNSwgMywgNSwgMjQ2LCA3LCA2MSwgMjEwLCAyMTUsIDI0OCwgMTM1LCAKLSAgICAyNDYsIDcsIDYxLCAyMTAsIDIxNSwgMjQ4LCAxMzUsIDI0NiwgOCwgMywgMjE2LCAxOTAsIDI0NiwgOCwgMywgMjE2LCAxOTAsIAotICAgIDI0NiwgOCwgMywgMjEyLCAxOSwgMjQ2LCA4LCAzLCAyMjcsIDEzMSwgMjQ2LCA4LCAzLCAyMDgsIDEzNywgMjM5LCAxODUsIAotICAgIDIwNCwgMTcsIDI0OCwgMjcsIDI0MCwgMTAyLCAyMzYsIDQ3LCAyNDMsIDEwMiwgMjEwLCAyLCAyNDcsIDE1OCwgMjQ2LCAKLSAgICAxNDgsIDIxNCwgMTYzLCAyNDAsIDIyMiwgMjA4LCA5NSwgMjQ0LCA2OSwgMjA4LCA5NSwgMjE5LCAxMzUsIDIwOCwgOTUsIAotICAgIDI0NywgODUsIDIzNiwgNDcsIDIxOCwgMjQ4LCAyMDcsIDE5MywgMjQ2LCAxNTIsIDI0OCwgMzAsIDIxNSwgMjAyLCAyMzcsIAotICAgIDIsIDIxMCwgMjEyLCAyNDgsIDMwLCAyNDEsIDE4NCwgNzYsIDIyNSwgMTMxLCAyNDEsIDE4NCwgNzYsIDIxNiwgNTIsIDIzNywgCi0gICAgMjgsIDIzOSwgMTQ3LCAyMjcsIDIzMCwgMjQ2LCA2LCAyMjUsIDEwNCwgMjI3LCAyMjksIDI0MCwgODUsIDIyNywgMjI5LCAKLSAgICAyMjcsIDIzMCwgMjM5LCAxOTIsIDIzMSwgNTAsIDIwNCwgMTYsIDIyMywgMTk2LCAyMDgsIDE2NSwgMjUwLCAzMywgMjM4LCAKLSAgICA1LCAyMjQsIDI0OSwgMjA0LCA3OSwgMjA5LCAyMjUsIDIyNywgMTk5LCAyNDgsIDIzOSwgMjE4LCAxMjAsIDIxNiwgMTM4LCAKLSAgICAyNTAsIDE1NywgMjM3LCAyNDQsIDI1MCwgMTU3LCAyMTksIDI5LCAyMTksIDMxLCAyNDYsIDE1MywgMjExLCA0NSwgMjM3LCAKLSAgICAxMzIsIDIxMiwgNTEsIDc2LCAyMTgsIDEwMCwgMjI1LCAxNiwgMjIwLCAzMiwgMjQ4LCAxMSwgMjE4LCAyMSwgMjI3LCAyMTAsIAotICAgIDIxNiwgNTMsIDI0NSwgMTQ1LCAyMTYsIDUzLCAyNDgsIDI1MSwgMjQ1LCAxNzksIDIxNiwgNTIsIDI0NSwgODksIDI1LCAKLSAgICAyMTYsIDUyLCAyMTEsIDc5LCAyNDcsIDIzNywgMjExLCAyMjQsIDI0NywgMjE5LCAyMzksIDEyOCwgMjM5LCAxMjQsIDIxNSwgCi0gICAgMjIzLCAyMTAsIDE2NSwgMjE4LCAyMywgMjQ0LCAxNjMsIDIyMCwgNzUsIDIxMCwgMTgzLCAyMzksIDEyNSwgMjEyLCAyMDQsIAotICAgIDIzOSwgMjQ0LCAyNDcsIDc5LCAzLCAyMTAsIDE1OCwgMjQ0LCAxMywgMjEyLCA3LCAyMzUsIDE2MywgMjQ1LCAxNDMsIDIxMywgCi0gICAgNTEsIDIzNSwgMTYyLCAyMzUsIDE2MywgMjQ1LCAxNDMsIDI0MiwgNzMsIDI0NSwgMTc4LCAyNDYsIDExNCwgMTQyLCAyNDcsIAotICAgIDUxLCAyMjcsIDMyLCAyNDUsIDgxLCAyMzYsIDExOSwgMjE4LCAyNSwgMjEyLCAyMTcsIDI0OCwgMTE2LCAyNDcsIDIzMywgCi0gICAgMjE4LCAyNiwgNzYsIDIzOSwgMTc0LCAyNDUsIDE3NywgMjM5LCAxNjMsIDI1LCAyMjksIDMzLCAyMDksIDE4NCwgMjA0LCAzLCAKLSAgICAyMzcsIDEwMiwgMjE1LCAxMywgMjQ3LCAyNTAsIDI1LCAyNDUsIDk5LCAyMDQsIDEzLCAyMzgsIDQ5LCAyNDUsIDI1MSwgCi0gICAgMjM4LCA0OSwgMjA4LCA1MSwgMjQyLCA1NCwgMjQ4LCAxNDYsIDIyMywgMjM1LCAyNDYsIDIzLCAyNDgsIDE0NiwgMjIzLCAKLSAgICAyMzQsIDI0OSwgMjgsIDI0NywgMjQ5LCAyMzksIDE2MywgMjUsIDIyOSwgMzQsIDMsIDIxOCwgODksIDI0NywgMjUwLCAzLCAKLSAgICAyMTgsIDM4LCAyNDUsIDE2NywgMjE4LCA0MCwgMjE2LCA1NCwgMjAzLCAyMjcsIDIxNywgMjQyLCAyNDgsIDU4LCAyNDcsIAotICAgIDc4LCAyMzAsIDE3OCwgMjQ2LCAxMDYsIDIwOCwgOTUsIDI0MCwgNjgsIDI0NiwgMTA1LCAyMzksIDI0NywgMjM5LCAyNDgsIAotICAgIDIxMSwgMjIyLCAyNDgsIDI1MCwgMjE5LCA2NiwgMjE4LCAzOSwgMjQ1LCAyMTUsIDI0OCwgMjUxLCAyMDksIDIyOSwgMjA4LCAKLSAgICA5NSwgMjQ1LCAxMjgsIDIzOSwgMjE5LCAyMTgsIDEyMSwgMjQ0LCA2NiwgMjMwLCAxNjksIDI0MywgOTYsIDI0NywgMjcsIAotICAgIDIxMSwgNDQsIDIwNCwgMTcsIDI0NiwgMTMwLCAyMjQsIDMwLCAyMDUsIDIxNywgMjQ2LCAyMDQsIDIxNCwgMTk2LCAyMTQsIAotICAgIDIyMywgMjM4LCAxMSwgMjQ3LCA0OCwgMjM3LCA1NiwgMywgMjA4LCAyMTEsIDIyMCwgMzIsIDIwOSwgOTMsIDIyNywgMjIyLCAKLSAgICAyNDcsIDI0MywgNzYsIDIzOSwgMTk2LCAyMjQsIDExOSwgMjI1LCAxMywgMjE2LCAxMTAsIDIxNiwgNTQsIDMxLCAyMjksIAotICAgIDE1MCwgMywgMjMwLCAxNzcsIDIxMSwgMTUsIDIyNCwgMTUyLCAyMjcsIDE2NywgMjEyLCA0OSwgMjQ1LCAxODQsIDIyOSwgCi0gICAgMzAsIDI0OCwgMTU4LCAyNTAsIDc4LCAzMSwgMjIxLCAxNTUsIDI0OCwgMTU4LCAyNDQsIDE5LCAzMSwgMjIxLCAxNTUsIAotICAgIDI0MCwgNiwgMjM5LCAxMzMsIDI1MSwgMTE0LCAyMDgsIDI1MiwgMjQ3LCAyOCwgMjM2LCA0OSwgMjQwLCAzNSwgMjA0LCAzNiwgCi0gICAgMjE1LCAyMTMsIDI0NSwgMjUyLCAyMzksIDIzOSwgMjE4LCA1NCwgMjUsIDIzOSwgMjQzLCAyMjQsIDE1MiwgMjIzLCAyNTMsIAotICAgIDI0NywgNjUsIDI0NiwgNjUsIDIzNywgNjAsIDI1MCwgODUsIDIxOSwgMTM4LCAyMDgsIDE0NSwgMjM3LCA4MywgMjQ2LCA1MSwgCi0gICAgMjA5LCAxNDQsIDIwOCwgMjUzLCAyNDYsIDM3LCAyNDgsIDIwLCAyMTgsIDI0MSwgMjUwLCA4NCwgMjA1LCAyMjYsIDIzOCwgCi0gICAgMjM4LCAyNDMsIDE2NywgMjM2LCAyMzAsIDIxMiwgNDIsIDIyNSwgMTcyLCAyNDgsIDY5LCAyMzgsIDIzOSwgMjQzLCAyMTMsIAotICAgIDI0NywgMjM2LCAyMzksIDE5OCwgMjE4LCA4OCwgMjQ3LCAzNiwgMzEsIDIyMSwgMTYwLCAyMjMsIDIyNiwgMzEsIDIyMSwgCi0gICAgMTU1LCAyMTQsIDIwOSwgMjM3LCAyMTQsIDMxLCAyMjksIDE0OSwgMjA4LCAyNywgMjA1LCAyMDYsIDMxLCAyMTQsIDE4OSwgCi0gICAgMjE1LCAxMjYsIDIxMiwgMjQ2LCAzLCAyMTQsIDIyNiwgMjA5LCAxNDksIDIxNiwgMjA5LCAyNSwgMjQ4LCAyNTEsIDIxMiwgCi0gICAgNjcsIDI1LCAyMTIsIDY3LCAyNDgsIDQsIDI0OCwgMjEzLCAyNSwgMjM2LCAxMTIsIDI0NiwgMTU0LCAyMzksIDIyNSwgMjEyLCAKLSAgICAxOCwgMjE1LCAxMjcsIDIxMCwgMTg4LCAyMTEsIDE4OSwgMjI1LCAxMywgMjA4LCA1MiwgMjM2LCA1MCwgMjE2LCAyMTAsIAotICAgIDI1MCwgMjM5LCAyMzksIDE3MSwgMjE1LCAxMzksIDIzOSwgMTcxLCAyMTAsIDE2MCwgMjA0LCA1MSwgMjI3LCAxMzYsIDIzOCwgCi0gICAgMzAsIDIxNiwgMjExLCAyMjQsIDE4LCAyMTYsIDIxMSwgMjQ3LCAzOSwgMjQ1LCAxMzYsIDI0OCwgMjEwLCAyNSwgMjQ4LCAKLSAgICAyNTEsIDIwNSwgMTgwLCAyNDAsIDI1LCAyMzYsIDEzMywgMjExLCA3MywgMjUsIDI0OCwgMjUxLCAyMzUsIDE2MywgMjM2LCAKLSAgICAxMzMsIDIxMSwgNzMsIDI1LCAyMTcsIDE4NCwgMjEwLCA5LCAyMDksIDE0OSwgMjE5LCAxNTYsIDI1LCAyNDgsIDI1MSwgCi0gICAgMjEyLCAyMCwgMjQ3LCA0NCwgMjI0LCAxMiwgMjQ3LCA2MywgMjQ4LCAxNjEsIDMsIDIwNywgMywgMjQ3LCAxODQsIDI0NSwgCi0gICAgMTk4LCAyMzYsIDM5LCAyNDcsIDE4MiwgMjQ2LCA0NSwgMjQ0LCAyMywgMjM2LCAzOSwgMjQ3LCAxODMsIDI0NiwgMzUsIAotICAgIDI0NywgMTgzLCAyNDQsIDE1LCAyNDQsIDE2LCAyMzAsIDIwOCwgMjIzLCA2NywgMjE5LCA3MiwgMjExLCAxMDQsIDIzNiwgCi0gICAgMzksIDI0NywgMTgzLCAyMzYsIDM5LCAzLCAyMzgsIDIyMiwgMjIwLCA2NywgMjQ3LCAxODMsIDIzMCwgMTY5LCAyMTgsIDMxLCAKLSAgICAyMjAsIDY2LCAyNDAsIDIyNywgMjE4LCAzMSwgMjIwLCA2NiwgMjM2LCA0OCwgMjQ4LCAyMzUsIDI1MCwgMjMsIDIwOSwgCi0gICAgMTU3LCAyMjUsIDE3MiwgMjM2LCA0NCwgMjI3LCAxLCAyMzYsIDQ0LCAyNDUsIDE4MiwgMjExLCA1NywgMjE0LCAxOTUsIAotICAgIDI0NCwgMjYsIDIxMSwgNTcsIDI0MCwgOTEsIDIzMCwgMTg5LCAyMjgsIDEzLCAyMzAsIDE2OSwgMjQ3LCAxOSwgMjQwLCAKLSAgICAyMjcsIDI0NywgMTksIDYxLCAyMTksIDMsIDYyLCAyMTksIDMsIDIwNCwgNzMsIDYxLCAyMzksIDIyNSwgMjA0LCA3MywgNjIsIAotICAgIDIzOSwgMjI1LCAyMTUsIDIwMSwgNjIsIDIxNSwgMjAxLCAyMjgsIDEwNSwgMjQ5LCAxMiwgMjE2LCAyMDksIDI1LCAyMTIsIAotICAgIDE4MywgMjQ3LCAyNDEsIDI1LCA0NywgMjUwLCAyMzQsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTksIDI0MSwgCi0gICAgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTYsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTQsIDI0MSwgOTgsIDY1LCAKLSAgICAyMzksIDIzNCwgMjA3LCAxMTIsIDI0MSwgOTgsIDY1LCAyMzksIDIzNCwgMjA3LCAxMTAsIDIxNiwgMTcyLCAyMjQsIDksIAotICAgIDIxOSwgMTkzLCAyMDQsIDgxLCAyNDcsIDE4OCwgMjQ1LCAxNDksIDIwOCwgMjQ1LCAyMjcsIDE4MywgMjE2LCAyMTIsIDI0NywgCi0gICAgMTcsIDI0MiwgNjEsIDI0NSwgMTM1LCAyMDQsIDM5LCAyMTIsIDI2LCAyMTIsIDI0LCAyMzYsIDQ5LCAyMTYsIDE4NCwgMjM4LCAKLSAgICAzNSwgMjEzLCAzNywgMjI0LCA0OCwgMjE1LCAyMDUsIDI0NiwgMTQwLCAyNDMsIDEwMiwgMjE4LCAxMzEsIDI0OCwgMjEsIAotICAgIDI0MSwgMTE0LCAyMjAsIDc4LCAyMTEsIDIwMiwgMjEzLCAzMiwgMjQ3LCAxODcsIDI1MCwgMTk4LCAyMzYsIDExOCwgMjI4LCAKLSAgICA5OCwgMjQ4LCAxNDQsIDIzOSwgMjQzLCAyMDgsIDUxLCAyMzksIDI0MywgMjQ4LCAyOCwgMjA3LCAxNzEsIDIzNywgODEsIAotICAgIDI0NiwgMTQxLCAyNDksIDI4LCAyNDYsIDE0MSwgMjM5LCAxMTgsIDI0OSwgMjgsIDI0NiwgMTQxLCAyNDgsIDYwLCAyMTksIAotICAgIDUsIDIyOSwgMjQsIDIxOCwgNDQsIDI0MiwgNTEsIDI0NywgNjcsIDI0OSwgMTcsIDI0NywgNjcsIDI0MywgOTUsIDIyNCwgCi0gICAgMTAsIDI0MCwgMTAyLCAyNDUsIDE1MCwgMjQwLCAxMDIsIDIwOCwgMjQ2LCAyNDAsIDEwMiwgMjE2LCAyMTMsIDI0MCwgMTAyLCAKLSAgICAyNDcsIDE4LCAyNDAsIDEwMiwgMjQyLCA2MiwgMjQwLCAxMDIsIDIxMSwgMTg3LCAyMDQsIDM5LCAyMzYsIDUwLCAyNDAsIAotICAgIDEwMiwgMjI0LCA0OSwgMjQwLCAxMDIsIDI0MywgMTAzLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDI0MCwgMTAyLCAyMzksIDEyMiwgCi0gICAgMjQwLCAxMDIsIDIzNywgMTI5LCAyNDAsIDEwMiwgMjAzLCAyNTMsIDI0MCwgMTAyLCAyNDgsIDE1NiwgMjQwLCAxMDIsIAotICAgIDIxOSwgMTIwLCAyNDAsIDEwMiwgMjE4LCAxMzIsIDIyMSwgMTY3LCAyMTksIDQ2LCAyMTcsIDIzMCwgMjQ2LCAxMjUsIDI0MCwgCi0gICAgMTg0LCAyNDAsIDE5MSwgMjQxLCAxODMsIDIyMSwgMTY3LCAyMjQsIDcsIDIwOCwgMTUwLCA2MSwgMTEyLCAyMTgsIDU5LCAKLSAgICAyNDksIDIzLCAyMzEsIDM1LCA2MSwgMTIxLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDI0OSwgMjMsIDIzMSwgMzUsIDYxLCA1MCwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjM5LCAyMzcsIDIzNywgMTI0LCAKLSAgICA1NCwgMjA0LCA3MywgMjM3LCAxMjQsIDU0LCAyMjAsIDUyLCAyMzcsIDEyNCwgNTQsIDIwOSwgMjAsIDExMiwgNTQsIDIwOSwgCi0gICAgMjAsIDEyMSwgNTQsIDI0NiwgMzYsIDIzNywgMTAwLCA1NCwgMTcxLCAyMzcsIDEwMCwgNTQsIDI0NSwgMTIyLCAyMDMsIAotICAgIDI0OSwgMjM3LCA4MywgMjQwLCAxODcsIDIyMiwgMjM2LCAyMTAsIDY4LCAyMzAsIDE2MCwgMjQyLCA1NiwgMjI5LCA4NSwgCi0gICAgMjQ4LCA3MSwgMjAzLCAyNDksIDI0NiwgOSwgMjE3LCAxNjUsIDIzNywgMTAzLCAyMTgsIDIyLCAyMjUsIDExMiwgMjEyLCAKLSAgICAyMzksIDI1MCwgNDYsIDIxMiwgMjM5LCAyMzYsIDI0MywgMjEyLCAyMzksIDIwMywgMjQ5LCAyMTQsIDI0MCwgMjAzLCAyNDksIAotICAgIDI0OCwgMywgMjM5LCAxNjksIDI0NywgMTUwLCAyMzEsIDUwLCAyMTIsIDEzNiwgMjQ3LCAxNDksIDIzMSwgNTAsIDIxMiwgCi0gICAgMTM2LCAyNDcsIDIzMiwgMjM4LCA2MCwgMjI1LCAxMjIsIDIwMywgMjUwLCAyNDAsIDgyLCAyMjUsIDEyMywgMjUsIDIwMywgCi0gICAgMjUxLCAyMzYsIDEyNywgMjM3LCA5OSwgMTIwLCAyMjQsIDI0MSwgMjM2LCAxMjcsIDIzNywgOTksIDEyMCwgMjAzLCAyNDgsIAotICAgIDIzNiwgMTI3LCAyMzcsIDk5LCAyMTgsIDUxLCAyMjAsIDY1LCAyMDMsIDI1MSwgMywgMjQ3LCAxNjgsIDI0MSwgMTgxLCAKLSAgICAyNDcsIDIwOSwgMywgMjA2LCA0NiwgMjE4LCAyMzAsIDMsIDI0OCwgMzIsIDIzNywgMTQ1LCAyMjUsIDEyMywgMywgMjM3LCAKLSAgICAyMjcsIDIxOCwgMTY4LCAyMjUsIDEwOCwgMjI1LCAxMjMsIDMsIDIwNywgMTgwLCAyMjAsIDQ0LCAyMjUsIDEyMiwgMjIwLCAKLSAgICA0NCwgMjAzLCAyNTAsIDI0OSwgMjcsIDI0NSwgMTk5LCAyMDMsIDIzNCwgMjE3LCAyMzUsIDIzMCwgMTY5LCAyMjAsIDYxLCAKLSAgICAyMzAsIDE2OSwgMjM4LCAzNCwgMjM4LCA4OSwgMjQ5LCAyOCwgMjUwLCAyMjEsIDI0MCwgMTk2LCAyNTEsIDIwLCAyNTEsIAotICAgIDIxLCAyMjQsIDM5LCAyMzEsIDU1LCAyMTIsIDYyLCAyMzEsIDI1LCAyNDQsIDEyLCAyMTgsIDIyOSwgMjM3LCAyMjEsIDI0NCwgCi0gICAgMTY3LCAyMjcsIDk3LCAyMjMsIDkxLCAyMTgsIDUwLCAyNDAsIDEwMywgMjI1LCA3NCwgMjM3LCAxNDQsIDI0OCwgMjI5LCAKLSAgICAyMTgsIDUzLCAyMTAsIDg4LCAyMTgsIDEyNCwgMjI5LCA2NywgODIsIDIyNywgMSwgMjI3LCAxNzQsIDIxNSwgMjUyLCAyMzgsIAotICAgIDE4MCwgMjExLCA2MywgMjI5LCA2NiwgMjQ3LCAyNDIsIDI0NSwgMTUyLCAzLCAyMzcsIDU1LCAyMDQsIDU4LCAyNDgsIDE1NCwgCi0gICAgMjM3LCA1NSwgMjQ3LCAyMDMsIDIzNywgNTUsIDEyMCwgMjM3LCA1MywgMjExLCAyMjAsIDIzNywgNTUsIDIzNywgMjM3LCAKLSAgICAyMzcsIDU1LCAyMzcsIDU2LCAzLCA0NywgMjQ4LCAyNiwgMjM3LCA1NSwgMjM3LCAyNDQsIDIzNywgNTUsIDIwMywgNDUsIAotICAgIDIzNywgNTUsIDIxNywgMTY2LCAyMzcsIDU1LCAyMzcsIDU2LCAzLCAyMTYsIDU0LCAyMTYsIDY3LCAyMzcsIDUzLCAyMzcsIAotICAgIDU2LCAyNDQsIDY2LCAyNDMsIDIyMiwgMjEzLCA2MywgMywgMzQsIDcwLCAyMzEsIDYsIDI0MSwgMTE3LCAxNTcsIDI0NywgCi0gICAgMTgwLCAyNTAsIDIyMCwgOTcsIDI0OCwgMTIsIDIxMiwgNTQsIDk3LCAyNDUsIDI0NCwgOTcsIDIxMSwgMTk2LCAyMTAsIAotICAgIDE2NywgOTcsIDI0MiwgNDksIDI0NCwgMTQ1LCA5NywgMjE4LCAxMjUsIDc2LCAyMTgsIDQ1LCAyMzksIDIxMCwgMjQ4LCA4MywgCi0gICAgMjQzLCAxMzMsIDk3LCAyMTEsIDIxMiwgMjQ4LCAyNTAsIDIwOSwgMzgsIDI0OCwgMjUwLCA2MSwgMjM5LCAxOTcsIDIzNiwgCi0gICAgMTIsIDIxOCwgNTcsIDk3LCAyMjQsIDUzLCAyNDksIDEwLCAyNDUsIDkyLCAyNDAsIDIxNCwgNzksIDI0MywgOTcsIDU0LCAKLSAgICAyNDUsIDE0MSwgMjQ3LCAzNywgMjQ4LCAyMzQsIDMsIDIwMywgNDMsIDU0LCAyNDgsIDIzNCwgMywgMjQzLCA5NywgNTQsIAotICAgIDI0OCwgMjM0LCAzLCAyNDAsIDIzMCwgNTQsIDI0OCwgMjM0LCAzLCAyMTgsIDIwLCA1NCwgMjI0LCA1MywgMywgMjA0LCAxMSwgCi0gICAgMjQ2LCAxNzgsIDMsIDE3NywgMjA4LCA5MSwgMjUsIDIwMywgNDMsIDU0LCAyMTQsIDE3NCwgMjE4LCAyMjgsIDI0NSwgMjIwLCAKLSAgICAyNDcsIDIwNywgMjI0LCAxMDgsIDIzOSwgMjAyLCAyNDMsIDE1NCwgMjE5LCAyNDgsIDI0MywgMTU5LCAyNDIsIDEyLCAyNDAsIAotICAgIDExLCAyMzksIDE4MiwgMTcxLCAyNDAsIDExLCAyMzksIDE4MiwgMjE5LCAxNTQsIDMsIDI0NSwgOTUsIDIxOSwgMTU0LCAKLSAgICAyNDAsIDk1LCAyMDYsIDIyNCwgMjQ3LCA3MiwgMjA5LCAxODMsIDI0NywgNzIsIDI0NywgMzgsIDIzMSwgMzUsIDI0NiwgCi0gICAgMTc4LCAzLCAxNzcsIDIwOCwgOTAsIDI0NiwgMTc4LCAzLCAxODMsIDIwOCwgOTAsIDI0OCwgMjMxLCAyNDYsIDE3NywgMjQ2LCAKLSAgICAyMiwgMjE3LCAxNjEsIDIxNSwgMTkxLCAyMTcsIDE2MSwgMjE5LCA5NCwgMjExLCA1MywgMjE1LCAxMzMsIDIwOCwgODIsIAotICAgIDIxNSwgMTMzLCAyNDgsIDgsIDIxMCwgNywgMjI3LCAyMjcsIDIyMSwgMTU4LCAyMjEsIDE1OSwgMywgMjQ0LCA2NSwgMjQ1LCAKLSAgICAxNTEsIDI0NiwgMTYsIDI0OCwgOSwgMTcxLCAyNDgsIDksIDIzNywgMjQ0LCAyNDgsIDksIDI0OCwgMjYsIDI0OCwgOSwgCi0gICAgMjE5LCAyNDMsIDI0OCwgOSwgMjQ4LCA2LCAyMjMsIDg1LCAyNDksIDE0LCAyMTQsIDE4MiwgMjI0LCAyNDIsIDIwOSwgMTYyLCAKLSAgICAyMTYsIDE1MiwgMjE5LCAxNTIsIDI0MCwgNjUsIDIyNSwgMTcyLCAyMTQsIDIyMiwgMjUwLCAxOTUsIDIxNywgMTg1LCAyNTEsIAotICAgIDExOSwgMjI3LCAzLCAyNDYsIDE2MiwgMjI0LCAyNTQsIDIxOSwgMjEwLCAyMDgsIDk4LCAyMzEsIDQ2LCAyMDgsIDk4LCAKLSAgICAyMTksIDE2MSwgMjQxLCAyMzYsIDk3LCAyMzEsIDQzLCAyNDEsIDU3LCAyNDEsIDU4LCAzLCAxODMsIDUzLCA1NSwgMjQ2LCAKLSAgICAxNiwgMjI1LCAxMzcsIDMsIDIyNiwgMjQ5LCAyMzksIDIyNSwgMjQ2LCAxNiwgMjI1LCAxMzcsIDMsIDIxNiwgMTg4LCAyMzksIAotICAgIDIyNSwgMTcxLCAyMjUsIDEzNywgMywgMjE2LCAxODgsIDIzOSwgMjI1LCAxNzEsIDIyNSwgMTM3LCAzLCAyMjYsIDI0OSwgCi0gICAgMjM5LCAyMjUsIDIxOCwgMjgsIDIxOCwgMjksIDIzNiwgNTMsIDIyMiwgMjEwLCAyMjQsIDgwLCAyMTgsIDE3NiwgMjI0LCAKLSAgICA4MCwgMjE4LCAxNzcsIDMsIDg2LCA1MywgMjUwLCA1MCwgMjI3LCAyMjIsIDIwNSwgMjI5LCAyMjQsIDc5LCAyMjQsIDgwLCAKLSAgICAyMTgsIDE3NywgMjIwLCA2OCwgMjIxLCAxOTIsIDIyNCwgODAsIDIxOCwgMTc1LCAyNTAsIDE5NiwgMywgMjQ4LCAyMjAsIAotICAgIDI0NywgNjUsIDI0NywgNjYsIDMsIDIzOSwgMjE4LCAyMDUsIDIyNiwgMjQ3LCA2NSwgMjA5LCAxNTksIDIxNiwgMjA0LCAKLSAgICAyMDUsIDIyNSwgMjQwLCA2LCAyMTcsIDIxNywgMjE4LCAzNSwgMjExLCA3NCwgMjE3LCAyNTQsIDI0OCwgMTYwLCAyMDcsIAotICAgIDEzOCwgODYsIDI1MCwgOTEsIDI0NiwgMTgsIDg2LCAyNSwgOTYsIDE3MSwgMjQ2LCA2MiwgMjUwLCA5MSwgMjQ2LCAxOCwgCi0gICAgODYsIDI1LCA5NiwgMTcxLCAyNDYsIDYyLCAyNTAsIDkyLCAzLCA0MywgMTE4LCAyMTksIDE5OSwgMjQ2LCAxOCwgMTgzLCAKLSAgICAyNSwgMTc3LCAxNzEsIDI0NiwgNjIsIDI1MCwgOTEsIDI1MCwgMTk0LCAxODMsIDI1LCAxNzcsIDE3MSwgMjQ2LCA2MiwgCi0gICAgMjUwLCA5MSwgMTI0LCAyNDcsIDIwNiwgOTcsIDEzOCwgMjQ3LCAyMDYsIDk3LCAyMTEsIDIxNywgMywgMjQ3LCA1OCwgOTUsIAotICAgIDIxMSwgMjE2LCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgMjExLCAyMTcsIDMsIDEyNiwgMjExLCAKLSAgICAyNDEsIDIwNCwgNzQsIDI0OCwgMjAzLCAyNDEsIDExNywgMjE4LCA4MSwgMjI3LCAyMTcsIDIyNSwgMTQ5LCAyMzgsIDQ5LCAKLSAgICAyMTYsIDExLCAyMjUsIDE0OSwgMjM4LCA0OSwgMjI3LCA0MywgMywgMjMxLCAxNywgMjE5LCA5LCAyNDYsIDE2LCAyMjcsIAotICAgIDQzLCAzLCAyMjksIDE1MSwgMjI5LCAxNTEsIDIyNywgNDIsIDE3MSwgMjI3LCA0MiwgMjQ4LCAxMjgsIDI0OCwgMTI5LCAzLCAKLSAgICAyNDcsIDU4LCA5NSwgMjQ4LCA3LCAyMjcsIDEwNSwgOTcsIDIxNiwgMjA1LCAyNDcsIDE0NSwgMjQ5LCAyNiwgMywgOTYsIAotICAgIDUzLCA1NSwgMjQxLCA4NCwgMywgOTYsIDUzLCA1NSwgMjIwLCAzMiwgMywgMjQwLCAyMTIsIDEzMSwgMywgNDksIDUwLCA1MywgCi0gICAgNTUsIDIxMSwgMjQ5LCAzLCA4NiwgNTMsIDU1LCAyMDgsIDE0NSwgMywgMTc3LCA1MywgNTUsIDIyMSwgMTkyLCAxMTgsIAotICAgIDIwNiwgMjQ4LCAyNDEsIDE0MSwgOTcsIDIyOSwgMTQ4LCAyMDksIDE1MiwgMjMxLCAxMSwgMTYsIDM1LCA4LCA2LCAyMjcsIAotICAgIDE3MywgMjMxLCAxMSwgMTYsIDM1LCA4LCA1LCAyMjcsIDE3MywgMjMxLCAxMSwgMTYsIDM1LCAyMjEsIDQ1LCAyMzEsIDExLCAKLSAgICAxNiwgMzUsIDIxMCwgMTAyLCAyMzEsIDExLCAxNiwgMzUsIDgsIDIyNywgMTczLCAyMzksIDI0OSwgMjQxLCAxMTcsIDIwOCwgCi0gICAgMTQwLCAyMDMsIDIyNSwgMjM3LCAxMzAsIDIyMSwgMjgsIDI1LCAyNDgsIDE0LCAyMzYsIDEzNCwgMjE4LCAxMDYsIDIyNCwgCi0gICAgMTUxLCAyMDksIDE2MCwgMjQ1LCAxMTIsIDI0OCwgMjUxLCAyMTIsIDg4LCAyMTgsIDYxLCAyMTEsIDk1LCAzLCAxMDEsIAotICAgIDI0MywgODUsIDIzMCwgMTY5LCAxNiwgMzUsIDI0OCwgMTQxLCAyMDgsIDgwLCAyNDEsIDEwMCwgNjIsIDUxLCAyNDcsIDE0NSwgCi0gICAgNjEsIDUxLCAyNDcsIDE0NSwgMjI4LCA4LCAyMTYsIDEzOCwgMjQ2LCA2MSwgMjI4LCA4LCAyNDgsIDI2LCAyNDYsIDYxLCAKLSAgICAyMjgsIDgsIDIxOSwgMjQzLCAyNDMsIDIyMSwgMjI4LCA4LCAyNDgsIDI2LCAyNDMsIDIyMSwgNSwgMjE5LCAyNDMsIDI0MywgCi0gICAgMjIxLCA1LCAyNDgsIDI2LCAyNDMsIDIyMSwgMjA2LCAyMjMsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCAyMTYsIAotICAgIDEzOCwgMjA4LCA4NSwgMjA2LCAyMjMsIDUsIDIxNiwgMTM4LCAyMDgsIDg1LCAyNDIsIDY5LCA1LCAyMTYsIDEzOCwgMjA4LCAKLSAgICA4NSwgMjI2LCAyNTEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCA2MSwgMjA2LCAyMjEsIDUwLCAyMTMsIDc3LCA2MSwgMjQ2LCAKLSAgICA2MSwgNDMsIDI0NSwgMTMxLCAyMTgsIDQ4LCAyNDUsIDEzMSwgMjE4LCA0OSwgMywgMjM3LCAxMzYsIDU2LCAyNDUsIDEzMSwgCi0gICAgMjE4LCA0OCwgMjIxLCAxNjIsIDQ5LCAyMTMsIDE0NiwgMywgMTI2LCAyNDMsIDgzLCAyMjEsIDE2MiwgNTAsIDIxMywgMTQ2LCAKLSAgICAzLCAxMjYsIDI0MywgODMsIDE2LCAzNSwgMjI1LCA4NywgMjQ2LCAxODQsIDYxLCA4LCAyNDUsIDEzMCwgNzksIDgsIDI0NSwgCi0gICAgMTMwLCAyNDYsIDIyMiwgMjQ1LCAxMzAsIDIyMCwgNDAsIDk3LCAyNDIsIDcyLCA3NiwgMjE5LCAzMiwgMjMwLCAzOSwgMjI0LCAKLSAgICAyMiwgMjEwLCA5NiwgMjI0LCAyMzcsIDMsIDIyMiwgNjQsIDI0NywgMjIyLCAyNDcsIDIzOCwgNzYsIDIzNSwgMjIyLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMTE4LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMTIwLCAyMjAsIDgzLCAyNDYsIDIwLCAKLSAgICAyNDAsIDEwMywgMTI2LCAyMjAsIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjM5LCAxNDcsIDIyMCwgODMsIDI0NiwgMjAsIAotICAgIDI0MCwgMTAzLCAyMzksIDIzMywgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMiwgODgsIDIyMCwgODMsIDI0NiwgCi0gICAgMjAsIDI0MCwgMTAzLCAyMTMsIDExMiwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDI0MSwgMTQzLCAyMjAsIDgzLCAKLSAgICAyNDYsIDIwLCAyNDAsIDEwMywgMjIyLCA2NCwgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwOSwgMTUzLCAyMjAsIAotICAgIDgzLCAyNDYsIDIwLCAyNDAsIDEwMywgMjQxLCAxMTMsIDIyMCwgODMsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDE1NSwgCi0gICAgMjIwLCA4MywgMjQ2LCAyMCwgMjQwLCAxMDMsIDIyMCwgMjcsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMDcsIDEzMiwgMjQ2LCAKLSAgICAyMCwgMjQwLCAxMDMsIDIwOSwgMjYsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMzksIDE0MywgMjQ2LCAyMCwgMjQwLCAxMDMsIAotICAgIDIzOSwgMjMxLCAyNDYsIDIwLCAyNDAsIDEwMywgMjEyLCA4NCwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIxMywgMTEwLCAyNDYsIAotICAgIDIwLCAyNDAsIDEwMywgMjQxLCAxNDIsIDI0NiwgMjAsIDI0MCwgMTAzLCAyMjIsIDYyLCAyNDYsIDIwLCAyNDAsIDEwMywgCi0gICAgMjA5LCAxNTEsIDI0NiwgMjAsIDI0MCwgMTAzLCAyNDEsIDExMSwgMjQ2LCAyMCwgMjQwLCAxMDMsIDIwNywgMTUzLCA1MCwgCi0gICAgMjExLCAyMTYsIDUwLCAyMTEsIDIxNywgMywgMTE4LCAyMTEsIDI0MSwgMjA0LCA3NSwgNTAsIDIxMSwgMjE3LCAzLCAxMjYsIAotICAgIDIxMSwgMjQxLCAyMDQsIDc0LCAyNDcsIDE3NSwgMjQ3LCAxNzYsIDMsIDIxMSwgMjQxLCAyMDQsIDc0LCAyMTUsIDI1MSwgCi0gICAgMjQ4LCAxMjgsIDI0OCwgOSwgMjQ3LCA1NiwgMjI1LCAxMDksIDI0NiwgMTksIDYyLCAyMTIsIDYzLCAyNSwgMjQ1LCAxMjksIAotICAgIDIyMSwgMTkyLCAyMTgsIDExMiwgMjM2LCAxMjYsIDIyNSwgMTIzLCAyMzEsIDUwLCAyNDcsIDE1MiwgMjEwLCAyMjgsIDIyNywgCi0gICAgMTY2LCAyMTIsIDUyLCAyMTksIDI0NSwgMjExLCAxNzgsIDI0NCwgMTUwLCAyMTAsIDIxMCwgMjExLCAyMDUsIDIxMSwgMjA2LCAKLSAgICAyMDQsIDU5LCAyMzAsIDgzLCA0OSwgMjM3LCAxMjQsIDIwOSwgMTYyLCAyMTYsIDE1MiwgMjA5LCAxNjIsIDIxNiwgMTUzLCAKLSAgICAzLCAyMTksIDE1MywgNTAsIDIzNywgMTI0LCAyMDksIDE2MiwgMjE2LCAxNTIsIDYxLCAyMDgsIDEyNiwgMjA5LCAxNjEsIAotICAgIDYyLCAyMDgsIDEyNiwgMjA5LCAxNjEsIDIwOSwgMTYyLCAyMjAsIDMyLCAyMDgsIDE0NSwgNzYsIDIyNCwgNzYsIDI0NiwgCi0gICAgNDAsIDIyNCwgODAsIDIxOCwgMTc2LCAyNDksIDI2LCA3NiwgMjQxLCA1NywgMjExLCAxMDAsIDI0MSwgNTcsIDI0MSwgNTgsIAotICAgIDMsIDIyNywgMTMxLCAyMzksIDE4OSwgMjQxLCA1NywgMjE5LCAxMCwgMTE1LCAyMTEsIDEwMCwgMjQxLCA1NywgMjI3LCAKLSAgICAxMDQsIDIxOSwgOTMsIDYyLCAyMTcsIDE2MSwgMjI2LCAyNTEsIDQ5LCAyMTksIDgsIDIyNiwgMjUxLCA0OSwgMjQ4LCAyNDYsIAotICAgIDIxOSwgOSwgMjI2LCAyNTEsIDQ5LCAyMzksIDE0OSwgMjE5LCA5LCAyMjYsIDI1MSwgNDksIDIxOSwgMTQ3LCAyMjYsIDI1MSwgCi0gICAgNDksIDI0NSwgMTQ0LCA0OSwgMjAzLCAyMjAsIDIzNywgMTIzLCAyMDcsIDE3NCwgMjIwLCA1MiwgMjM3LCAxMjQsIDU0LCAKLSAgICAyMTYsIDE4OCwgMjM3LCAxMjQsIDMsIDIzOSwgMjU0LCAyMTEsIDE5NSwgMjE2LCA3MywgMjE2LCAxODgsIDIzNywgMTI0LCAKLSAgICAzLCAyMzksIDI1NCwgMjExLCAxOTUsIDIxNiwgNzMsIDIwOSwgMjAsIDExMiwgNTQsIDIxNiwgNzMsIDIwOSwgMjAsIDEyMSwgCi0gICAgNTQsIDIxNiwgNzMsIDIwNSwgMjI4LCAyMzcsIDEyMywgMjE2LCA3MywgMjM3LCAxMjQsIDMsIDEwMSwgMjQwLCAzLCAyNDAsIAotICAgIDIwMSwgMjE2LCAxODgsIDIzNywgMTI0LCAzLCAyMTksIDcxLCAyNDgsIDEwNCwgMTAxLCAyNSwgMjE1LCAyNTMsIDIzOSwgCi0gICAgMjUzLCA2MSwgMTIxLCAyMTgsIDU5LCA0OSwgMjM3LCAxMjQsIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MSwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNDksIDIxOCwgNTksIAotICAgIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgNTAsIDIxOCwgNTksIDIzMSwgMzUsIDYyLCA0OSwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDUwLCAyMTgsIDU5LCAyNDksIDIzLCAyMzEsIDM1LCAyMTIsIDE1NCwgNjEsIDExMiwgMjE4LCA1OSwgCi0gICAgMjMxLCAzNSwgMjEyLCAxNTQsIDYxLCAxMjEsIDIxOCwgNTksIDIzMSwgMzUsIDIxMiwgMTU0LCA2MiwgMTEyLCAyMTgsIDU5LCAKLSAgICAyMzEsIDM1LCAyMTIsIDE1NCwgNjIsIDEyMSwgMjE4LCA1OSwgMjMxLCAzNSwgNjIsIDExMiwgMjE4LCA1OSwgMjQ5LCAyMywgCi0gICAgMjMxLCAzNSwgNjIsIDEyMSwgMjE4LCA1OSwgMjQ5LCAyMywgMjMxLCAzNSwgMjQ0LCAxMSwgMjQ1LCAyMjAsIDIyOSwgMTUwLCAKLSAgICAyNSwgMjI0LCA5LCAxMjYsIDIyMiwgMjE4LCAyNDUsIDIxOSwgMjE3LCAyMzEsIDIxOCwgNjcsIDI0NywgNzQsIDYyLCAyMzcsIAotICAgIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAxNTQsIDYxLCAyMzcsIDkxLCAyMTMsIDMzLCAyMzksIDIwMiwgMjQzLCAKLSAgICAxNTQsIDIxMiwgNywgMjEzLCAzMywgMjM5LCAyMDIsIDI0MywgMTU0LCAyMDksIDIyMSwgMjQ3LCAyMiwgMjA0LCA2LCAyMjksIAotICAgIDE0OSwgMTE4LCAyNDcsIDE0NiwgMjI0LCA5LCAxMjAsIDI0NywgMTQ2LCAyMjQsIDksIDEyNiwgMjQ3LCAxNDYsIDIyNCwgOSwgCi0gICAgMjA4LCAxMTcsIDM4LCAyMTgsIDIyOCwgMjQ1LCAyMjAsIDIzNywgOTEsIDI0MywgMTU0LCAyMTQsIDE4NCwgMjE3LCAyMzIsIAotICAgIDIzNSwgMTU2LCAyNDAsIDY1LCAyMzUsIDE1NiwgMjE5LCAyNDgsIDI0MywgMTYwLCAyMzUsIDE1NiwgMjQzLCAxMDcsIDMsIAotICAgIDIwOSwgMTEyLCAyNDMsIDEwNywgMywgMjA5LCAxMTMsIDI1LCAyMTgsIDE2MSwgMjQzLCAxMDcsIDMsIDIxOCwgMTYxLCAKLSAgICAyMzksIDEzNSwgMywgMjE4LCAxNjEsIDIzOSwgMTM1LCAzLCAyMDgsIDIyNSwgMjM5LCAxMzUsIDMsIDI1MCwgMjMyLCAyMDMsIAotICAgIDE5NiwgNjIsIDIzOSwgMTgyLCAyMzksIDE4MiwgMTcxLCAyMzksIDE4MiwgMjQ3LCAzOCwgMTIyLCAyNDMsIDE0MCwgMjQ3LCAKLSAgICAzOCwgMjQwLCAxMSwgMjQ3LCAyMzMsIDI0MCwgMTEsIDI0NywgODcsIDI0MSwgOTQsIDIyMSwgMTYwLCAyNDEsIDk0LCAyMjEsIAotICAgIDE2MSwgMjE5LCAxNTMsIDI0MSwgOTQsIDIyMSwgMTYxLCAyMTksIDE1OSwgMjIxLCAxNjAsIDIyMSwgMTYxLCAyMTksIDE1MywgCi0gICAgMjIxLCAxNjEsIDIxOSwgMTU5LCAyNDEsIDk0LCAyNDMsIDEwNiwgMjQxLCA5NCwgMjE5LCAxNTMsIDI0MSwgOTQsIDIxOSwgCi0gICAgMTUxLCAyNDMsIDEwNiwgMjE5LCAxNTMsIDIxOSwgMTUxLCAyMDQsIDg1LCAyMTEsIDIwMiwgMjIxLCAxNjEsIDIxOSwgMTU5LCAKLSAgICAyMTEsIDIwMiwgMjQ3LCA3MywgMjE5LCAxNTksIDI0NCwgMTEsIDIwNCwgMTUsIDIyNCwgMTA1LCAyMjUsIDY0LCAyMTksIAotICAgIDIwMSwgMjQ2LCAxOCwgNTAsIDI1LCA0OSwgMjEzLCAxNDYsIDI1MCwgOTEsIDI0NywgNTgsIDIwMywgMTk2LCAyMzEsIDQxLCAKLSAgICAyMzksIDE3NiwgMjEyLCA3MiwgOTcsIDI0NCwgNjQsIDIzOSwgMTc2LCAyMTIsIDcyLCA5NywgMjQ1LCAyMjEsIDM4LCAyMjksIAotICAgIDE1MSwgMjE1LCAyMTQsIDIyMiwgMjEwLCAyMTksIDE1NCwgMywgNDMsIDIwOSwgMTEyLCAyMTEsIDY1LCAyNDYsIDE3NywgCi0gICAgMjQ0LCAxOTYsIDIyOSwgMzMsIDIyNywgOTgsIDIxMSwgMjE1LCAyMzcsIDY1LCAyMzEsIDUwLCAyMTIsIDEzNiwgMTI2LCAKLSAgICAyMTYsIDE2MywgNTUsIDEyNiwgMjE2LCAxNjMsIDU2LCAxMjYsIDIxNiwgMTYzLCAyMjcsIDIyMiwgMTI2LCAyMTYsIDE2MywgCi0gICAgMjE2LCAxNiwgNDksIDIxMSwgMjEyLCAyNDcsIDE5MiwgNTAsIDIxMSwgMjEyLCAyNDcsIDE5MiwgMTIwLCAyMTEsIDIxMiwgCi0gICAgMjQ3LCAxOTEsIDEyNiwgMjExLCAyMTIsIDI0NywgMTkxLCA0OSwgMjA5LCAzOCwgMjQ3LCAxOTIsIDUwLCAyMDksIDM4LCAKLSAgICAyNDcsIDE5MiwgNDksIDI1MCwgMjIwLCAyNDcsIDE5MiwgNTAsIDI1MCwgMjIwLCAyNDcsIDE5MiwgMjI0LCAzNCwgMjQ3LCAKLSAgICAxOTIsIDIyNywgMTMyLCAyMjQsIDM0LCAyNDcsIDE5MiwgMjI3LCAxMzIsIDIyNCwgMzMsIDI0OCwgMjQ4LCA5OCwgMywgCi0gICAgMjQ4LCAyNDcsIDI0OCwgMjQ4LCAxMzIsIDIwMywgMTk2LCAyNDgsIDI0OCwgOTgsIDMsIDEzMiwgMjAzLCAxOTYsIDI0OCwgCi0gICAgMjQ4LCAyNiwgMTMyLCAyMDMsIDE5NiwgMjQ4LCAyNDgsIDk4LCAzLCAyNiwgMTMyLCAyMDMsIDE5NiwgMTU3LCAyNDYsIAotICAgIDE2OSwgODIsIDI0OCwgMjQ4LCA5OCwgMywgMjYsIDI0NiwgMTY4LCAyMDMsIDIzMywgMjI1LCAxMDYsIDIyNCwgMTQsIDIzOSwgCi0gICAgMTAzLCAyMDgsIDE2NywgMjA4LCAxMjIsIDIxMSwgODYsIDc2LCAyMjcsIDE0NiwgMjEyLCAxMzcsIDc2LCAyMzAsIDE3MCwgCi0gICAgMjIzLCAyNTEsIDIzNywgMjQxLCAyNDAsIDEwMiwgMjM3LCAyNDEsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAyNDAsIDE4NCwgCi0gICAgMjQwLCAxMDMsIDMsIDIwOSwgMTc5LCA3NiwgMjMwLCA4NSwgMjEyLCAzMCwgMjQwLCAxMDMsIDMsIDE3MSwgMjI0LCA3LCAKLSAgICAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAyMjQsIDgsIDI1LCAyMTIsIDMwLCAyNDAsIDE4NCwgMjEyLCAzMCwgMjQwLCAKLSAgICAxMDMsIDMsIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyMTIsIDMwLCAyNDAsIDEwMywgMywgMTcxLCAKLSAgICAyMjQsIDgsIDI1LCAyMDgsIDI0MywgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMzcsIDEzNSwgMjEyLCAzMCwgCi0gICAgMjQwLCAxMDMsIDMsIDIzNiwgNTIsIDIwNCwgOCwgMjQwLCAxMDIsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTIsIDMwLCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDIxNCwgMjE0LCAyNDQsIDQ1LCAyMzksIDE3NCwgMjE2LCAxMTMsIDI0MCwgMTAyLCAyMTIsIAotICAgIDMwLCAyNDAsIDEwMywgMywgMjM3LCA1NCwgMjQwLCAxODQsIDIxMiwgMzAsIDI0MCwgMTAzLCAzLCAyMTAsIDIxMCwgMjEyLCAKLSAgICAyOSwgMjQwLCAxMDIsIDIyMiwgMjE2LCAyNDAsIDEwMiwgMjQwLCAyMDMsIDI0MCwgMTAyLCAyMDYsIDI1MywgMjQwLCAxMDIsIAotICAgIDI0MCwgMTAzLCAzLCAyNDUsIDI0NiwgMjEwLCAxNjYsIDIxOSwgMSwgMjQwLCAxMDIsIDI0NSwgMjEyLCAyNDAsIDEwMiwgCi0gICAgMjQ1LCAyMTMsIDI0MCwgMTAyLCAyMjksIDY1LCAyNDAsIDEwMiwgMjQwLCAxMDMsIDIwOSwgMjMsIDM0LCAyMjksIDY2LCAKLSAgICAyMjksIDY1LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDIyOSwgNjUsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAKLSAgICAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIxMSwgMTYsIDIwOCwgMTUwLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIAotICAgIDI1LCAyMDQsIDgsIDI0MCwgMTkxLCAyNDAsIDEwMywgMywgMjExLCAxNiwgMjA4LCAxNTEsIDI1LCAyMDgsIDI0MywgMjQwLCAKLSAgICAxODQsIDI0MywgMTYxLCAyNDAsIDEwMiwgMjAzLCAyMzIsIDI0MCwgMTAyLCAyNTAsIDIxNCwgMjQwLCAxMDIsIDIxOCwgMTksIAotICAgIDI0MCwgMTAyLCAyNDUsIDExNCwgMjQwLCAxMDIsIDIxOCwgMjMyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIDIyNywgMTcsIAotICAgIDc2LCAyMDgsIDYyLCAyNDMsIDE2MSwgMjQ3LCAxNDgsIDIxNiwgMTEzLCAyNDAsIDEwMiwgMjM5LCAxMTQsIDI0MCwgMTAzLCAKLSAgICAzLCAxNzEsIDIyNCwgNywgMjUwLCAyMTIsIDI0MCwgMTAyLCAyNDAsIDU4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNTMsIDI0MCwgMTAyLCAyMDgsIDIwNSwgMjQwLCAxMDIsIDIzNywgMjQyLCAyNDAsIDEwMiwgMjI3LCA0LCAyNDUsIAotICAgIDExNCwgMjQwLCAxMDIsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjM2LCAyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDE3MSwgMjI0LCA4LCAyNSwgMjQ1LCAyNDYsIDIxMCwgMTY2LCAyNDAsIDEwMywgMjE0LCAxODYsIDIzMSwgNTAsIDI0MCwgCi0gICAgNTksIDI1MCwgNTYsIDI0MCwgMTAyLCAyMzksIDE5NCwgMjQwLCAxMDIsIDIxMiwgNTQsIDI0MCwgMTAyLCAyNDMsIDEzMywgCi0gICAgMjQwLCAxMDIsIDI0MCwgMTAzLCAyMDQsIDMsIDIyNCwgNywgMjQwLCAxMDMsIDMsIDIyNSwgMTIsIDIyNSwgNzYsIDIzNywgCi0gICAgMjQxLCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjEyLCAzMCwgMjQwLCAxODQsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyMDksIAotICAgIDE3OSwgNzYsIDIzMCwgODUsIDIxMiwgMzAsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAxNzEsIDIyNCwgNywgMjEyLCAzMCwgCi0gICAgMjQ3LCAxOCwgMjQwLCAxMDMsIDMsIDIzNywgNTQsIDI0MCwgMTg0LCAyNDcsIDE4LCAyNDAsIDEwMywgMywgMjAzLCAyMTgsIAotICAgIDIxMiwgMzEsIDIyOSwgNjUsIDI0NywgMTgsIDI0MCwgMTAzLCAzLCAyNDYsIDE2LCAyNDAsIDE4NCwgMjE4LCAxOSwgMjQ3LCAKLSAgICAxOCwgMjQwLCAxMDIsIDI0NSwgMTE0LCAyNDcsIDE4LCAyNDAsIDEwMiwgMjA0LCA2MCwgMjQ3LCAxOCwgMjQwLCAxMDIsIAotICAgIDIxMiwgNDcsIDIzOSwgMTE0LCAyNDAsIDEwMiwgMjEyLCA0NywgMjEyLCAzMCwgMjQwLCAxMDIsIDIwNiwgMjE4LCAyNDAsIAotICAgIDEwMiwgMjQwLCAxMDMsIDMsIDIxNSwgMjEyLCAyNDAsIDE4NCwgMjQwLCAxMDMsIDMsIDIyMSwgMTkyLCAyMzgsIDI3LCAKLSAgICAyMzgsIDE2MCwgMjQwLCAxMDMsIDMsIDIyMCwgNTIsIDIzOCwgMTYwLCAyMTgsIDIzMCwgMjQ3LCAyMzksIDI0NCwgNTksIAotICAgIDIxNCwgMTY0LCAyMjQsIDQ4LCAyMzcsIDU3LCAyMjQsIDQ4LCAyMTEsIDIxOCwgMjI0LCA0OCwgMjM3LCA5MywgMjE4LCAKLSAgICAyMzAsIDIxNiwgMTg3LCAxMTgsIDIzNywgMTIzLCAyMTgsIDIzMCwgMjE2LCAxODcsIDI0NywgMjUxLCAyMzcsIDEwMCwgCi0gICAgMjMxLCA1MCwgMjQ2LCAyMjQsIDIxOCwgMjMwLCAyMzksIDExMywgMjE4LCAyMzAsIDMsIDIxOCwgMTksIDI0MCwgMTAyLCAKLSAgICAyMTgsIDIzMCwgMywgMjM5LCAxODMsIDIzNywgOTksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIxMSwgCi0gICAgMjM4LCAyNDEsIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgCi0gICAgMjI5LCAyMDcsIDE3NCwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIyNywgMjI5LCAyMDcsIDE3NCwgMTUzLCAyNDEsIAotICAgIDE3NiwgMjE4LCA1OSwgMjI3LCAyMjksIDIwNywgMTc0LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDIxOCwgNTksIDIyNywgMjI5LCAKLSAgICAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIAotICAgIDIwNSwgMjEyLCAyMjcsIDIyOSwgMTUzLCAyNDEsIDE3NiwgMjE4LCA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAyMTEsIDIzOCwgCi0gICAgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDE1MywgMjA0LCA0NiwgMjE4LCA1OSwgMjA1LCAKLSAgICAyMTIsIDIyNywgMjI5LCA3OSwgMjExLCAyMzgsIDIwNCwgNDYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIAotICAgIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDIwNSwgMjEyLCAyMjcsIDIyOSwgNzksIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjE4LCAKLSAgICA1OSwgMjA1LCAyMTIsIDIyNywgMjI5LCAxNTMsIDIwNCwgNDYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjA0LCAKLSAgICA0NiwgMjE4LCA1OSwgMjQ3LCAxODksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAyMTEsIDIzOCwgMjQxLCAKLSAgICAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCA3OSwgMTUzLCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDIxMSwgCi0gICAgMjM4LCAyMDQsIDQ2LCAyMTgsIDU5LCAyNDcsIDE4OSwgNzksIDE1MywgMjQxLCAxNzYsIDIxOCwgNTksIDI0NywgMTg5LCAKLSAgICA3OSwgMjExLCAyMzgsIDI0MSwgMTc2LCAyMTgsIDU5LCAyNDcsIDE4OSwgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIAotICAgIDIzMywgMjM2LCAxMjUsIDIxNywgNDAsIDUxLCAyMTksIDIzNCwgMjMxLCA1MCwgNjIsIDIxMSwgMTc3LCAyMTIsIDIsIDIxNywgCi0gICAgNDAsIDUxLCAyMTksIDIzMywgMjEyLCAyLCAyMTcsIDQwLCA1MSwgMjE5LCAyMzQsIDIzMSwgNTAsIDYyLCAyMTEsIDE3NywgCi0gICAgOTYsIDIxNSwgMjE4LCAxNzcsIDIxNSwgMjE4LCA4NiwgMjE1LCAyMTgsIDE4MywgMjE1LCAyMTgsIDEzMiwgMzIsIDI0MCwgCi0gICAgMjUxLCAyMTksIDIzMywgNzksIDEzMiwgMzIsIDI0MCwgMjUxLCAyMTksIDIzMywgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgCi0gICAgMjMzLCA3OSwgMzIsIDE3MSwgMjQwLCAyNTEsIDIxOSwgMjMzLCA3OSwgMjUwLCAyMzYsIDIxOSwgMjMzLCAyMTAsIDE2OSwgCi0gICAgMjUwLCAyMzYsIDIxOSwgMjMzLCA0MSwgNzksIDUyLCAyMDcsIDE3NCwgMjQ1LCAyMzQsIDIxNywgMzEsIDEzMSwgMjE5LCAKLSAgICAyMzMsIDQxLCA3OSwgNTIsIDI0NSwgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA0MSwgNzksIDEyNCwgNTIsIDI0NSwgCi0gICAgMjM0LCAyMTcsIDMxLCAxMzEsIDIxOSwgMjMzLCA3OSwgMjMwLCAyNDgsIDIxOSwgMjMzLCA0MSwgMjMwLCAyNDgsIDIxOSwgCi0gICAgMjMzLCA3OSwgNDEsIDIzMCwgMjQ4LCAyMTksIDIzMywgMjA1LCAyNDIsIDc5LCAyMTIsIDAsIDIwNSwgMjQyLCA3OSwgMjE2LCAKLSAgICA3NCwgMjEyLCAwLCAyNDYsIDE2NywgMjQ4LCAyMCwgMjE2LCA3NCwgMjQ2LCAxNjcsIDI0OCwgMjAsIDIxNSwgMjE4LCAyMzcsIAotICAgIDM4LCAyMTEsIDgxLCAyMjcsIDQwLCAyMTYsIDE5MywgMjQ3LCAzOSwgMjM2LCAyNDAsIDIwOCwgMTEwLCAyMzYsIDI0MCwgCi0gICAgMjA4LCAxMTEsIDMsIDI0NywgMTc4LCAyMjEsIDE2NywgMjA4LCAxMTAsIDIyNCwgMjEzLCAxNTcsIDIxNiwgMTk0LCAyMTEsIAotICAgIDg3LCAyMDgsIDEwOCwgMjA4LCAxMDksIDI0NywgMzksIDI0NywgMTUzLCAyMjAsIDI5LCAyNDcsIDE1MywgMjA4LCA1OSwgCi0gICAgMjQ3LCAxNTQsIDIxMSwgNjEsIDIyNCwgMTA5LCAyNTAsIDI0MCwgMjM5LCAyNTAsIDI0MSwgNzcsIDIxOCwgNTEsIDI0NywgCi0gICAgMzksIDIyMCwgMjksIDIxOCwgNTEsIDI0NywgMzksIDIwOSwgMTk3LCAyMjAsIDI5LCAyMDksIDE5NywgMjUwLCAyMiwgMjIwLCAKLSAgICAyOSwgMjUwLCAyMiwgMjE2LCAxNDUsIDIwNiwgNDcsIDI0NCwgNDEsIDIwOCwgNTAsIDI1MCwgODYsIDIyNywgOCwgMjA4LCAKLSAgICAxMTYsIDIyNCwgNDIsIDIyNCwgMTMsIDIxNiwgMTkyLCAyMTAsIDE4MiwgMjE2LCAxOTIsIDIyNCwgMTMsIDI0NywgODYsIAotICAgIDI1MSwgOTUsIDIwOCwgMTA3LCAyMTIsIDI1MSwgMjE1LCAxODgsIDIxMSwgMjEwLCAyMzYsIDEwNiwgMjA4LCAxMTQsIDIyNywgCi0gICAgMTM0LCA4MCwgMjA4LCAxMTQsIDIyNywgMTM0LCAyNDUsIDE5OSwgNTQsIDIxOCwgNTEsIDI0NywgMjQsIDIxNiwgNjcsIAotICAgIDIyNywgMTM0LCAyMDgsIDgyLCAyMzksIDIyNiwgMjIwLCAzMiwgMjE4LCAzMCwgMjQzLCA4OCwgMjIxLCAxOTIsIDI0MSwgCi0gICAgNjMsIDU0LCAyMTIsIDI4LCA5NywgMjIxLCAxOTIsIDIxMiwgMjgsIDk3LCAyMTcsIDE2MCwgMjI3LCA4NywgMjMxLCA1MCwgCi0gICAgMjMwLCAxOTgsIDIxOCwgOTcsIDk3LCAyNDMsIDExNCwgMjIxLCAxNjYsIDIyNywgODcsIDk3LCAyMTgsIDI0LCAyMDQsIDgxLCAKLSAgICA5NywgMjIxLCAxODIsIDIwNCwgODEsIDk3LCAyNDgsIDgyLCAyMjEsIDE5MiwgMjQ4LCA4MSwgMjQ4LCA4MCwgMjI0LCAxMywgCi0gICAgMjQ4LCA4MCwgMjE5LCAyNSwgMjIxLCAxOTIsIDIxOSwgMjQsIDI0NiwgMTMyLCAyNDUsIDEyMywgMjI0LCAyMzYsIDk3LCAKLSAgICAyMDMsIDI0NywgOTcsIDIxNiwgODMsIDI0OSwgMjgsIDk3LCAyMDgsIDE2OCwgMjA0LCA4MSwgMjQ2LCAxMywgMjEyLCAyMDksIAotICAgIDI0OCwgMjA2LCAyNDgsIDIwNCwgMjE5LCA1NywgMjQ1LCAxODMsIDI0NSwgNzksIDI0OSwgNywgMjQ2LCA0MSwgNDksIDIyNiwgCi0gICAgMjI5LCAyMDgsIDg2LCAzLCAyMTUsIDE4OSwgMjQ1LCAxNjQsIDIxNywgMjIwLCA1NCwgNDMsIDIzMSwgMjUsIDIxMSwgMjM5LCAKLSAgICAyNDcsIDIzMSwgOTcsIDIzOCwgNTksIDk3LCAyNDUsIDE1NywgMjUsIDIyOCwgMTgsIDIxMiwgNTQsIDI1MSwgMTM1LCAyMTIsIAotICAgIDIzMSwgMjQ5LCA2LCAyNDgsIDEyNywgMjQ4LCAxMjgsIDI0OCwgMTUxLCAyMTgsIDk3LCA3NiwgMjAzLCAyMzEsIDIzNywgCi0gICAgMTMxLCAyNSwgMjAzLCAyMjUsIDIxMywgOCwgMjIwLCA1NiwgMjQyLCA0NiwgMjI0LCAxNywgMjE2LCAxOTMsIDIwOCwgMTE4LCAKLSAgICAyMjQsIDE5LCAyNDgsIDE5LCAyMDYsIDIyMywgMjI0LCAxMTksIDI1MSwgNTIsIDIwNiwgMjIzLCAyNTEsIDUyLCAyMDYsIAotICAgIDIyMywgNSwgMjUxLCA1MiwgNSwgMjUxLCA1MiwgMjIxLCAxNzEsIDI1MSwgNTIsIDI1MSwgNTMsIDI0NCwgMjUsIDI1MSwgCi0gICAgNTMsIDI1MCwgOTcsIDIxNCwgMjIxLCAyMjAsIDI5LCAyMzksIDI1MCwgMjQxLCA3NywgMjQzLCAyMTEsIDIyNywgNDAsIAotICAgIDIxOSwgNjAsIDIxMiwgMjUxLCAxMzYsIDE2LCAzNSwgMjE3LCAzNiwgMTM2LCAxNiwgMzUsIDI1MSwgNTQsIDEzNiwgMTYsIAotICAgIDM1LCAyMzksIDI0OSwgMTM2LCAxNiwgMzUsIDI0MSwgMTc5LCAxMzYsIDE2LCAzNSwgMjA0LCA4MCwgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgMTQ2LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgMTMyLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIxNiwgCi0gICAgMTMxLCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk1LCAxMzYsIDE2LCAzNSwgMjUwLCAxNDcsIDIwNSwgMTk0LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMDksIDEzNiwgMTYsIDM1LCAyMDUsIDIwOCwgMTM2LCAxNiwgMzUsIDIwNSwgMjA3LCAxMzYsIAotICAgIDE2LCAzNSwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCAyMTgsIDE4NCwgMjEwLCAyMjEsIDEzNiwgMTYsIDM1LCA2MiwgMjEwLCAKLSAgICAyMjEsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTIsIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTEsIAotICAgIDEzNiwgMTYsIDM1LCAyMjQsIDIzNSwgMjEwLCAyNTAsIDEzNiwgMTYsIDM1LCAyNDYsIDY0LCAxMzYsIDE2LCAzNSwgMjE1LCAKLSAgICAxLCAxMzYsIDE2LCAzNSwgMjIyLCA1MSwgMTM2LCAxNiwgMzUsIDIwNSwgMTkzLCAxMzYsIDE2LCAzNSwgMjA1LCAxOTIsIAotICAgIDEzNiwgMTYsIDM1LCAyMTUsIDIxOSwgMjE1LCAxLCAxMzYsIDE2LCAzNSwgMjE1LCAyMTksIDIxNSwgMCwgMTM2LCAxNiwgCi0gICAgMzUsIDIzOCwgMzEsIDEzNiwgMTYsIDM1LCAyMTIsIDEzMywgMTM2LCAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOSwgMTM2LCAKLSAgICAxNiwgMzUsIDIzMCwgMjIxLCAyMTksIDIzOCwgMTM2LCAxNiwgMzUsIDI0NSwgMTM0LCA3NiwgMjMwLCAyMjAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTYsIDEyOCwgNzYsIDIzMCwgMjIwLCAxMzYsIDE2LCAzNSwgMjQ1LCAxNzQsIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgCi0gICAgMjMwLCAyMTksIDIxOSwgMjM5LCAxMzYsIDE2LCAzNSwgMjEwLCAyNTMsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIAotICAgIDI0NSwgMTM0LCA3NiwgMjQ1LCAxNzMsIDEzNiwgMTYsIDM1LCAyNDUsIDEzNCwgNzYsIDI0NSwgMTcyLCAxMzYsIDE2LCAzNSwgCi0gICAgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAzNSwgMjE1LCAyLCA3NiwgMjQ1LCAxNzQsIDI1MCwgMTg4LCAxMzYsIDE2LCAKLSAgICAzNSwgMjEwLCAyNTMsIDc2LCAyMTUsIDIsIDc2LCAyNDUsIDE3MywgMTM2LCAxNiwgMzUsIDIwNiwgNDIsIDEzNiwgMTYsIAotICAgIDM1LCAyMDgsIDIxOCwgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMjcsIDIzMywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAKLSAgICAyNTAsIDE4NywgMjE5LCAyMzksIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDI1MCwgMTg2LCAxMzYsIDE2LCAzNSwgCi0gICAgMjE1LCAyLCA3NiwgMjUwLCAxODYsIDEzNiwgMTYsIDM1LCAyMTAsIDI1MywgNzYsIDIxNSwgMiwgNzYsIDI1MCwgMTg2LCAKLSAgICAxMzYsIDE2LCAzNSwgMjA1LCAyMTAsIDc2LCAyNTAsIDE4NiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI4LCA3NiwgMjUwLCAxODYsIAotICAgIDEzNiwgMTYsIDM1LCAyMTYsIDEyOCwgNzYsIDI1MCwgMTg1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjcsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDEyNiwgMTM2LCAxNiwgMzUsIDIxNiwgMTI1LCAxMzYsIDE2LCAzNSwgMjE2LCAxMjQsIDEzNiwgMTYsIDM1LCAyNTEsIAotICAgIDE3LCAxMzYsIDE2LCAzNSwgMjUxLCAxNiwgMTM2LCAxNiwgMzUsIDIyNSwgOTcsIDEzNiwgMTYsIDM1LCAyMTUsIDcsIDEzNiwgCi0gICAgMTYsIDM1LCAyNTAsIDkwLCAxMzYsIDE2LCAzNSwgMjE2LCAxNTUsIDEzNiwgMTYsIDM1LCAyMTYsIDE1NCwgMTM2LCAxNiwgCi0gICAgMzUsIDI1MCwgMjUsIDEzNiwgMTYsIDM1LCAyNDgsIDUyLCAyMTksIDIzOSwgMTM2LCAxNiwgMzUsIDIwOSwgMjE2LCAxMzYsIAotICAgIDE2LCAzNSwgMjA5LCAyMTUsIDEzNiwgMTYsIDM1LCAyMTcsIDQyLCAyMjcsIDEyMywgMTM2LCAxNiwgMzUsIDI0OCwgMCwgCi0gICAgMTM2LCAxNiwgMzUsIDI0NywgMjU1LCAxMzYsIDE2LCAzNSwgMjQ3LCAyNTQsIDEzNiwgMTYsIDM1LCAyNTAsIDI0OSwgMTM2LCAKLSAgICAxNiwgMzUsIDIyMCwgNTUsIDEzNiwgMTYsIDM1LCAyMTEsIDE5OCwgMTM2LCAxNiwgMzUsIDIwOCwgMjE2LCAxMzYsIDE2LCAKLSAgICAzNSwgMjM3LCAyMTAsIDEzNiwgMTYsIDM1LCAyMDQsIDY4LCAxMzYsIDE2LCAzNSwgMjE4LCAxOCwgMTM2LCAxNiwgMzUsIAotICAgIDI0NywgNzAsIDEzNiwgMTYsIDM1LCAyMDcsIDE2NiwgMTM2LCAxNiwgMzUsIDI0NywgNDEsIDIyNCwgMjMsIDEzNiwgMTYsIAotICAgIDM1LCAyMTQsIDE5OSwgNzYsIDIzMCwgODcsIDEzNiwgMTYsIDM1LCAyNDcsIDgzLCAxMzYsIDE2LCAzNSwgMjA4LCA3OSwgCi0gICAgMTM2LCAxNiwgMzUsIDIxMSwgOTIsIDIwOCwgNzksIDEzNiwgMTYsIDM1LCAyMjcsIDM5LCAxMzYsIDE2LCAzNSwgMjEyLCAKLSAgICAxMSwgMTM2LCAxNiwgMzUsIDIwNiwgMjAyLCAxMzYsIDE2LCAzNSwgMjM2LCA1MCwgMjQyLCAyNywgMTM2LCAxNiwgMzUsIAotICAgIDI1MCwgNzAsIDEzNiwgMTYsIDM1LCAyMTgsIDI2LCAyNTAsIDcwLCAxMzYsIDE2LCAzNSwgMjQ3LCAyMTAsIDEzNiwgMTYsIAotICAgIDM1LCAyMTgsIDE3LCAyNDcsIDIxMCwgMTM2LCAxNiwgMzUsIDI1MCwgMjQ2LCAxMzYsIDE2LCAzNSwgMjExLCA0OCwgMjEwLCAKLSAgICAyMDIsIDIxMSwgNDcsIDEzNiwgMTYsIDM1LCAyMTEsIDQ4LCAyMTAsIDIwMiwgMjExLCA0NiwgMTM2LCAxNiwgMzUsIDIxMCwgCi0gICAgMjQ5LCAxMzYsIDE2LCAzNSwgMjE3LCAyNDcsIDEzNiwgMTYsIDM1LCAyNDMsIDE1MCwgMTM2LCAxNiwgMzUsIDI0MywgMTUyLCAKLSAgICAxMzYsIDE2LCAzNSwgMjQzLCAxNTEsIDEzNiwgMTYsIDM1LCAyMTcsIDE2OSwgMTM2LCAxNiwgMzUsIDIxNywgMTU4LCAxMzYsIAotICAgIDE2LCAzNSwgMjQ1LCAxMjEsIDEzNiwgMTYsIDM1LCAyNDUsIDEyMCwgMTM2LCAxNiwgMzUsIDI0NSwgMTE5LCAxMzYsIDE2LCAKLSAgICAzNSwgMjQ1LCAxMTgsIDEzNiwgMTYsIDM1LCAyNDUsIDExNywgMTM2LCAxNiwgMzUsIDI1MSwgMjksIDEzNiwgMTYsIDM1LCAKLSAgICAyNDgsIDIwNywgNzYsIDIyNSwgODEsIDEzNiwgMTYsIDM1LCAyNDgsIDIwNywgNzYsIDIwNiwgNzQsIDEzNiwgMTYsIDM1LCAKLSAgICAyMTYsIDgxLCAxMzYsIDE2LCAzNSwgMjM2LCA0MiwgMTM2LCAxNiwgMzUsIDIyMiwgNzksIDEzNiwgMTYsIDM1LCAyNDQsIAotICAgIDEzMiwgMTM2LCAxNiwgMzUsIDIyNCwgMzcsIDEzNiwgMTYsIDM1LCAxNjIsIDI0MiwgNTksIDEzNiwgMTYsIDM1LCAxNjIsIAotICAgIDIxOSwgMjE0LCA2MiwgMjI3LCAyMTcsIDIzMCwgMjA0LCA1MCwgMjA4LCA4NSwgNjIsIDIwNiwgMjIzLCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTYsIDExLCAyMzAsIDIwNCwgNTAsIDIwOCwgODUsIDYyLCAyNDIsIDY5LCAyMzAsIDIwNCwgCi0gICAgNTAsIDIwOCwgODUsIDYyLCAyMTIsIDQ3LCA1LCAyNDYsIDYxLCAyMjUsIDEwLCAyNiwgNjEsIDI0NiwgNjEsIDI2LCA2MSwgCi0gICAgMjQ2LCA2MSwgNzksIDYxLCAyNDYsIDYxLCAyMDUsIDI0MiwgNzksIDYxLCAyNDYsIDYxLCAyNDAsIDE5NSwgNzksIDYxLCAKLSAgICAyNDYsIDYxLCA2MSwgMjQ2LCA2MiwgMjQ1LCAxOTUsIDYyLCA1LCAyNDYsIDYxLCAyMTUsIDE5MSwgMjA5LCAyMTcsIDYyLCAKLSAgICAyMDgsIDIxMywgMjExLCAxNzcsIDYyLCAyMTIsIDQ3LCA1LCAyMTEsIDE3NywgMTU3LCA2MSwgMjExLCAxNzcsIDIyNSwgMTAsIAotICAgIDYxLCAyMTEsIDE3NywgMjYsIDYxLCAyMTEsIDE3NywgNzksIDYxLCAyMTEsIDE3NywgMjA1LCAyNDIsIDc5LCA2MSwgMjExLCAKLSAgICAxNzcsIDI0MCwgMTk1LCA3OSwgNjEsIDIxMSwgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDIxMSwgCi0gICAgMTc3LCA2MSwgNTEsIDI0NSwgMTk1LCA2MiwgMjI1LCAxMCwgMjExLCAxNzcsIDUxLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAKLSAgICAyNDMsIDIyMSwgNjIsIDIwNSwgMjQyLCA1LCAyNDMsIDIyMSwgNjIsIDIyNSwgMTAsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAKLSAgICAyMjIsIDI0NSwgMTk1LCA2MiwgMjA1LCAyNDIsIDUsIDI0MywgMjIxLCA2MSwgMjQzLCAyMjIsIDI0NSwgMTk1LCA2MiwgCi0gICAgMjI1LCAxMCwgMjQzLCAyMjEsIDI0MywgMjIyLCAyMDksIDIxNywgNjIsIDIwOCwgMjEzLCAyMjYsIDI0NiwgNjIsIDIwNSwgCi0gICAgMjQyLCA1LCAyMjYsIDI0NiwgNjIsIDIyNSwgMTAsIDUsIDIyNiwgMjQ2LCA2MSwgMjI2LCAyNDcsIDI0NSwgMTk1LCA2MiwgCi0gICAgNSwgMjI2LCAyNDYsIDIwOSwgNjMsIDMwLCAyNDUsIDEzMCwgMTU3LCAzMCwgMjQ1LCAxMzAsIDIyNSwgMTAsIDMwLCAyNDUsIAotICAgIDEzMCwgMjYsIDMwLCAyNDUsIDEzMCwgMjA1LCAyNDIsIDI2LCAzMCwgMjQ1LCAxMzAsIDIwNSwgMjQyLCA3OSwgMzAsIDI0NSwgCi0gICAgMTMwLCAyNDAsIDE5NSwgNzksIDMwLCAyNDUsIDEzMCwgMjA5LCA2MywgMjE0LCAyNTQsIDE1NywgMjE0LCAyNTQsIDIyNSwgCi0gICAgMTAsIDIxNCwgMjU0LCAyNiwgMjE0LCAyNTQsIDc5LCAyMTQsIDI1NCwgMjA1LCAyNDIsIDc5LCAyMTQsIDI1NCwgMjQwLCAKLSAgICAxOTUsIDc5LCAyMTQsIDI1NCwgMTU3LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDIyNSwgMTAsIDIzOSwgMjMzLCAKLSAgICAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIzOSwgMjMzLCAyMTEsIDE5MSwgMjUwLCA1OSwgNzksIDIzOSwgMjMzLCAyMTEsIAotICAgIDE5MSwgMjUwLCA1OSwgMjA1LCAyNDIsIDc5LCAyMzksIDIzMywgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCA3OSwgCi0gICAgMjM5LCAyMzMsIDIxMSwgMTkxLCAyNTAsIDU5LCAxNTcsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIDEwLCAKLSAgICAyMTIsIDg4LCAyMTEsIDE5MSwgMjUwLCA1OSwgMjYsIDIxMiwgODgsIDIxMSwgMTkxLCAyNTAsIDU5LCA3OSwgMjEyLCA4OCwgCi0gICAgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDI0MCwgMTk1LCAKLSAgICA3OSwgMjEyLCA4OCwgMjExLCAxOTEsIDI1MCwgNTksIDE1NywgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAyMjUsIAotICAgIDEwLCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDI2LCAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDc5LCAKLSAgICAyNDEsIDE0MywgMjExLCAxOTEsIDI1MCwgNTksIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxMSwgMTkxLCAyNTAsIDU5LCAKLSAgICAxNTcsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDEyNiwgCi0gICAgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDEyNiwgMjE4LCA2MSwgMjE4LCAxMTgsIDIxMSwgOTQsIDE1NywgMjM5LCAKLSAgICAxNDcsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAyMjUsIDEwLCAyMzksIDE0NywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIzOSwgCi0gICAgMTQ3LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgMjI1LCAxMCwgMjM5LCAxNDcsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAKLSAgICAyMTYsIDc0LCAxNTcsIDIzOSwgMTQ3LCAyMTgsIDYxLCAyMTgsIDExOCwgMjExLCA5NCwgMTU3LCAyMzksIDIzMywgMjE4LCAKLSAgICA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyMzksIDIzMywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIyNSwgMTAsIDIxMiwgODgsIAotICAgIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCA3OSwgMjEyLCA4OCwgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIxMiwgODgsIDIxOCwgCi0gICAgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAyMjUsIDEwLCAyNDEsIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDc5LCAyNDEsIAotICAgIDE0MywgMjE4LCA2MSwgNjIsIDIxMSwgOTQsIDIwNSwgMjQyLCA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDYyLCAyMTEsIDk0LCAKLSAgICA3OSwgMjQxLCAxNDMsIDIxOCwgNjEsIDIxOCwgMTE4LCAyMTEsIDk0LCAxNTcsIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgCi0gICAgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCA2MiwgMjExLCA5NCwgNzksIDIwNywgMTU1LCAyMTgsIDYxLCAyMTgsIAotICAgIDExOCwgMjExLCA5NCwgOTYsIDUzLCAzLCA1LCAyMDgsIDg2LCAyNTAsIDk0LCAxNzcsIDUzLCAzLCA1LCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA4NiwgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDUsIDIwOCwgODYsIDI1MCwgOTQsIAotICAgIDk2LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI1LCAxMCwgMjA4LCA4NiwgMjUwLCAKLSAgICA5NCwgODYsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAyNTAsIDk0LCAxODMsIDUzLCAzLCAyMjUsIDEwLCAyMDgsIDg2LCAKLSAgICAyNTAsIDk0LCA5NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTc3LCA1MywgMywgMjI4LCA4LCAyMDgsIAotICAgIDg2LCAyNTAsIDk0LCA4NiwgNTMsIDMsIDIyOCwgOCwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA1MywgMywgMjI4LCA4LCAKLSAgICAyMDgsIDg2LCAyNTAsIDk0LCA5NiwgNTMsIDMsIDUsIDI0MSwgMzEsIDI1MCwgOTQsIDE3NywgNTMsIDMsIDUsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDg2LCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgMTgzLCA1MywgMywgNSwgMjQxLCAzMSwgMjUwLCA5NCwgCi0gICAgOTYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA4NiwgNTMsIDMsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDE4MywgNTMsIDMsIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCA5NiwgNTMsIDMsIDI0MSwgMzEsIAotICAgIDI1MCwgOTQsIDc5LCAxNzcsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyNDEsIDMxLCAyNTAsIAotICAgIDk0LCA3OSwgMTgzLCA1MywgMywgMjQxLCAzMSwgMjUwLCA5NCwgNzksIDk2LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAKLSAgICAyNTAsIDk0LCA3OSwgMTc3LCA1MywgMywgMjI4LCA4LCAyNDEsIDMxLCAyNTAsIDk0LCA3OSwgODYsIDUzLCAzLCAyMjgsIDgsIAotICAgIDI0MSwgMzEsIDI1MCwgOTQsIDc5LCAxODMsIDUzLCAzLCAyMjgsIDgsIDI0MSwgMzEsIDI1MCwgOTQsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjIzLCA3MywgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMjMsIDczLCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIDE3NywgMjA4LCA4NCwgNTMsIDMsIDIyNSwgMTAsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgMjI1LCAxMCwgMjEzLCAKLSAgICA3NSwgOTYsIDIwOCwgODQsIDUzLCAzLCAyNiwgMjEzLCA3NSwgMTc3LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjYsIDIxMywgNzUsIDE4MywgMjA4LCA4NCwgNTMsIDMsIDI2LCAyMTMsIDc1LCA5NiwgCi0gICAgMjA4LCA4NCwgNTMsIDMsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgODYsIDIwOCwgCi0gICAgODQsIDUzLCAzLCA3OSwgMjEzLCA3NSwgMTgzLCAyMDgsIDg0LCA1MywgMywgNzksIDIxMywgNzUsIDk2LCAyMDgsIDg0LCAKLSAgICA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxNzcsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgNzksIDIxMywgNzUsIAotICAgIDg2LCAyMDgsIDg0LCA1MywgMywgMjA1LCAyNDIsIDc5LCAyMTMsIDc1LCAxODMsIDIwOCwgODQsIDUzLCAzLCAyMDUsIDI0MiwgCi0gICAgNzksIDIxMywgNzUsIDk2LCAyNDAsIDEsIDQ3LCAxNzcsIDI0MCwgMSwgNDcsIDg2LCAyNDAsIDEsIDQ3LCAxODMsIDI0MCwgCi0gICAgMSwgNDcsIDk2LCAxMDMsIDQ3LCAxNzcsIDEwMywgNDcsIDg2LCAxMDMsIDQ3LCAxODMsIDEwMywgNDcsIDk2LCAyNDUsIAotICAgIDIyMiwgNDcsIDE3NywgMjQ1LCAyMjIsIDQ3LCA4NiwgMjQ1LCAyMjIsIDQ3LCAxODMsIDI0NSwgMjIyLCA0NywgOTYsIDc5LCAKLSAgICAyNDUsIDIyMiwgNDcsIDE3NywgNzksIDI0NSwgMjIyLCA0NywgODYsIDc5LCAyNDUsIDIyMiwgNDcsIDE4MywgNzksIDI0NSwgCi0gICAgMjIyLCA0NywgOTYsIDc5LCA0NywgMTc3LCA3OSwgNDcsIDg2LCA3OSwgNDcsIDE4MywgNzksIDQ3LCA5NiwgNDEsIDQ3LCAKLSAgICAxNzcsIDQxLCA0NywgODYsIDQxLCA0NywgMTgzLCA0MSwgNDcsIDE1MywgMjA0LCA0NiwgNDEsIDQ3LCAxNTMsIDI0MSwgCi0gICAgMTc2LCA0MSwgNDcsIDIxMSwgMjM4LCAyNDEsIDE3NiwgNDEsIDQ3LCAyMTEsIDIzOCwgMjA0LCA0NiwgNDEsIDQ3LCA0OSwgCi0gICAgNTAsIDQxLCA0NywgMTEyLCAxMjEsIDQxLCA0NywgMjA0LCAyNiwgOTYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDg2LCAxNTcsIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTU3LCAxNTAsIDQ3LCAyMDQsIAotICAgIDI2LCAxNTMsIDIwNCwgNDYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyNDEsIDE3NiwgMTU3LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIAotICAgIDE1NywgMTUwLCA0NywgMjA0LCAyNiwgOTYsIDE1MCwgNDcsIDIwNCwgMjYsIDE3NywgMTUwLCA0NywgMjA0LCAyNiwgODYsIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE4MywgMTUwLCA0NywgMjA0LCAyNiwgMTUzLCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCAKLSAgICAxNTMsIDI0MSwgMTc2LCAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjQxLCAxNzYsIDE1MCwgNDcsIDIwNCwgMjYsIAotICAgIDIxMSwgMjM4LCAyMDQsIDQ2LCAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTc3LCAKLSAgICAyMjUsIDEwLCAxNTAsIDQ3LCAyMDQsIDI2LCA4NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMjUsIDEwLCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjQxLCAxNzYsIAotICAgIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjI1LCAxMCwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMjExLCAyMzgsIDIwNCwgNDYsIDIyNSwgMTAsIDE1MCwgNDcsIDIwNCwgMjYsIDk2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgCi0gICAgMTc3LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgODYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxODMsIDc5LCAxNTAsIDQ3LCAKLSAgICAyMDQsIDI2LCAxNTMsIDIwNCwgNDYsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgCi0gICAgMjA0LCAyNiwgMjExLCAyMzgsIDI0MSwgMTc2LCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMjExLCAyMzgsIDIwNCwgNDYsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCA5NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNzcsIDIwNSwgMjQyLCA3OSwgCi0gICAgMTUwLCA0NywgMjA0LCAyNiwgODYsIDIwNSwgMjQyLCA3OSwgMTUwLCA0NywgMjA0LCAyNiwgMTgzLCAyMDUsIDI0MiwgNzksIAotICAgIDE1MCwgNDcsIDIwNCwgMjYsIDE1MywgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCAyMDQsIDI2LCAxNTMsIDI0MSwgCi0gICAgMTc2LCAyMDUsIDI0MiwgNzksIDE1MCwgNDcsIDIwNCwgMjYsIDIxMSwgMjM4LCAyNDEsIDE3NiwgMjA1LCAyNDIsIDc5LCAKLSAgICAxNTAsIDQ3LCAyMDQsIDI2LCAyMTEsIDIzOCwgMjA0LCA0NiwgMjA1LCAyNDIsIDc5LCAxNTAsIDQ3LCA5NiwgMjA4LCA4NiwgCi0gICAgMjUwLCA5NCwgMTc3LCAyMDgsIDg2LCAyNTAsIDk0LCA4NiwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCAyMDgsIDg2LCAyNTAsIAotICAgIDk0LCA5NiwgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIDI1MCwgOTQsIDE3NywgNjEsIDUzLCAyMDQsIDUsIDIwOCwgODYsIAotICAgIDI1MCwgOTQsIDg2LCA2MSwgNTMsIDIwNCwgNSwgMjA4LCA4NiwgMjUwLCA5NCwgMTgzLCA2MSwgNTMsIDIwNCwgNSwgMjA4LCAKLSAgICA4NiwgMjUwLCA5NCwgOTYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE3NywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIAotICAgIDI0OCwgODYsIDUzLCAzLCAyMjEsIDE2MiwgMjA5LCAyNDgsIDE4MywgNTMsIDMsIDIyMSwgMTYyLCAyMDksIDI0OCwgNzksIAotICAgIDUzLCAyMTMsIDc2LCAyMDQsIDI0LCAxMDUsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTIwLCAyMDksIDU3LCA3OSwgCi0gICAgNTMsIDIxMywgNzYsIDIwNCwgMjQsIDExOCwgMjM3LCAxMzcsIDc5LCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTE4LCAyMDksIAotICAgIDYwLCA5NiwgMjQ3LCAyNDUsIDYxLCA0NywgODYsIDI0NywgMjQ4LCAyMTMsIDc4LCA2MSwgNDcsIDk2LCAyMDgsIDE0NSwgCi0gICAgMjEzLCA3OCwgNjEsIDQ3LCA4NiwgMjA4LCAxNDUsIDIxMywgNzgsIDYxLCA0NywgOTYsIDIyNywgMjE2LCA2MSwgNDcsIDg2LCAKLSAgICAyMTYsIDEwLCA2MSwgNDcsIDk2LCAyMTYsIDEwLCA2MSwgNDcsIDg2LCAyMjcsIDIxNiwgNjEsIDQ3LCA5NiwgMjQ5LCAyNCwgCi0gICAgMjEzLCA3NywgNjEsIDQ3LCA4NiwgMjQ5LCAyNCwgMjEzLCA3NywgNjEsIDQ3LCA5NiwgMjM5LCAxMTcsIDIxMywgNzcsIDYxLCAKLSAgICA0NywgODYsIDIzOSwgMTE3LCAyMTMsIDc3LCA2MSwgNDcsIDYxLCA1MywgMjEzLCA3NiwgMjA0LCAyNCwgMTA1LCA2MSwgNTMsIAotICAgIDIxMywgNzYsIDIwNCwgMjQsIDEyMCwgMjA5LCA1NywgMjAyLCAyNiwgMjQwLCAxMDIsIDIyNCwgNTIsIDI0MCwgMTAyLCAKLSAgICAyNDAsIDEwMywgMywgMjA5LCA4MCwgMjIyLCAyMjIsIDI0MCwgMTAyLCAyMDksIDYyLCAyNDAsIDEwMiwgMjQwLCAxMDMsIDMsIAotICAgIDIzNywgNjMsIDIxNSwgMjIxLCAyNDAsIDEwMiwgMjM2LCAyMCwgMjQwLCAxMDIsIDIsIDc2LCAyMDksIDkzLCAyMzYsIDUyLCAKLSAgICAyNDUsIDE0NiwgMjI3LCAxMDIsIDI0MCwgMTAyLCAyMTQsIDE4OCwgMjA3LCAxNzksIDIwNiwgMjQwLCAyNDAsIDEwMiwgCi0gICAgMjQ2LCAxNjEsIDIwNCwgNTcsIDEyLCAxNSwgMjM1LCAxNTIsIDEyLCAxNSwgMjM1LCAxNTEsIDEyLCAxNSwgMjM1LCAxNTAsIAotICAgIDEyLCAxNSwgMjM1LCAxNDksIDEyLCAxNSwgMjM1LCAxNDgsIDEyLCAxNSwgMjM1LCAxNDcsIDEyLCAxNSwgMjM1LCAxNDYsIAotICAgIDEyLCAxNSwgMjM1LCAxNDUsIDEyLCAxNSwgMjM1LCAxNDQsIDEyLCAxNSwgMjM1LCAxNDMsIDEyLCAxNSwgMjM1LCAxNDIsIAotICAgIDEyLCAxNSwgMjM1LCAxNDEsIDEyLCAxNSwgMjM1LCAxNDAsIDEyLCAxNSwgMjM1LCAxMzksIDEyLCAxNSwgMjM1LCAxMzgsIAotICAgIDEyLCAxNSwgMjM1LCAxMzcsIDEyLCAxNSwgMjM1LCAxMzYsIDEyLCAxNSwgMjM1LCAxMzUsIDEyLCAxNSwgMjM1LCAxMzQsIAotICAgIDEyLCAxNSwgMjM1LCAxMzMsIDEyLCAxNSwgMjM1LCAxMzIsIDEyLCAxNSwgMjM1LCAxMzEsIDEyLCAxNSwgMjM1LCAxMzAsIAotICAgIDEyLCAxNSwgMjM1LCAxMjksIDEyLCAxNSwgMjM1LCAxMjgsIDEyLCAxNSwgMjM1LCAxMjcsIDEyLCAxNSwgMjM1LCAxMjYsIAotICAgIDEyLCAxNSwgMjM1LCAxMjUsIDEyLCAxNSwgMjM1LCAxMjQsIDEyLCAxNSwgMjM1LCAxMjMsIDEyLCAxNSwgMjM1LCAxMjIsIAotICAgIDEyLCAxNSwgMjM1LCAxMjEsIDEyLCAxNSwgMjM1LCAxMjAsIDEyLCAxNSwgMjM1LCAxMTksIDEyLCAxNSwgMjM1LCAxMTgsIAotICAgIDEyLCAxNSwgMjM1LCAxMTcsIDEyLCAxNSwgMjM1LCAxMTYsIDEyLCAxNSwgMjM1LCAxMTUsIDEyLCAxNSwgMjM1LCAxMTQsIAotICAgIDEyLCAxNSwgMjM1LCAxMTMsIDEyLCAxNSwgMjM1LCAxMTIsIDEyLCAxNSwgMjM1LCAxMTEsIDEyLCAxNSwgMjM1LCAxMTAsIAotICAgIDEyLCAxNSwgMjM1LCAxMDksIDEyLCAxNSwgMjM1LCAxMDgsIDEyLCAxNSwgMjM1LCAxMDcsIDEyLCAxNSwgMjM1LCAxMDYsIAotICAgIDEyLCAxNSwgMjM1LCAxMDUsIDEyLCAxNSwgMjM1LCAxMDQsIDEyLCAxNSwgMjM1LCAxMDMsIDEyLCAxNSwgMjM1LCAxMDIsIAotICAgIDEyLCAxNSwgMjM1LCAxMDEsIDEyLCAxNSwgMjM1LCAxMDAsIDEyLCAxNSwgMjM1LCA5OSwgMTIsIDE1LCAyMzUsIDk4LCAxMiwgCi0gICAgMTUsIDIzNSwgOTcsIDEyLCAxNSwgMjM1LCA5NiwgMTIsIDE1LCAyMzUsIDk1LCAxMiwgMTUsIDIzNSwgOTQsIDEyLCAxNSwgCi0gICAgMjM1LCA5MywgMTIsIDE1LCAyMzUsIDkyLCAxMiwgMTUsIDIzNSwgOTEsIDEyLCAxNSwgMjM1LCA5MCwgMTIsIDE1LCAyMzUsIAotICAgIDg5LCAxMiwgMTUsIDIzNSwgODgsIDEyLCAxNSwgMjM1LCA4NywgMTIsIDE1LCAyMzUsIDg2LCAxMiwgMTUsIDIzNSwgODUsIAotICAgIDEyLCAxNSwgMjM1LCA4NCwgMTIsIDE1LCAyMzUsIDgzLCAxMiwgMTUsIDIzNSwgODIsIDEyLCAxNSwgMjM1LCA4MSwgMTIsIAotICAgIDE1LCAyMzUsIDgwLCAxMiwgMTUsIDIzNSwgNzksIDEyLCAxNSwgMjM1LCA3OCwgMTIsIDE1LCAyMzUsIDc3LCAxMiwgMTUsIAotICAgIDIzNSwgNzYsIDEyLCAxNSwgMjM1LCA3NSwgMTIsIDE1LCAyMzUsIDc0LCAxMiwgMTUsIDIzNSwgNzMsIDEyLCAxNSwgMjM1LCAKLSAgICA3MiwgMTIsIDE1LCAyMzUsIDcxLCAxMiwgMTUsIDIzNSwgNzAsIDEyLCAxNSwgMjM1LCA2OSwgMTIsIDE1LCAyMzUsIDY4LCAKLSAgICAxMiwgMTUsIDIzNSwgNjcsIDEyLCAxNSwgMjM1LCA2NiwgMTIsIDE1LCAyMzUsIDY1LCAxMiwgMTUsIDIzNSwgNjQsIDEyLCAKLSAgICAxNSwgMjM1LCA2MywgMTIsIDE1LCAyMzUsIDYyLCAxMiwgMTUsIDIzNSwgNjEsIDEyLCAxNSwgMjM1LCA2MCwgMTIsIDE1LCAKLSAgICAyMzUsIDU5LCAxMiwgMTUsIDIzNSwgNTgsIDEyLCAxNSwgMjM1LCA1NywgMTIsIDE1LCAyMzUsIDU2LCAxMiwgMTUsIDIzNSwgCi0gICAgNTUsIDEyLCAxNSwgMjM1LCA1NCwgMTIsIDE1LCAyMzUsIDUzLCAxMiwgMTUsIDIzNSwgNTIsIDEyLCAxNSwgMjM1LCA1MSwgCi0gICAgMTIsIDE1LCAyMzUsIDUwLCAxMiwgMTUsIDIzNSwgNDksIDEyLCAxNSwgMjM1LCA0OCwgMTIsIDE1LCAyMzUsIDQ3LCAxMiwgCi0gICAgMTUsIDIzNSwgNDYsIDEyLCAxNSwgMjM1LCA0NSwgMTIsIDE1LCAyMzUsIDQ0LCAxMiwgMTUsIDIzNSwgNDMsIDEyLCAxNSwgCi0gICAgMjM1LCA0MiwgMTIsIDE1LCAyMzUsIDQxLCAxMiwgMTUsIDIzNSwgNDAsIDEyLCAxNSwgMjM1LCAzOSwgMTIsIDE1LCAyMzUsIAotICAgIDM4LCAxMiwgMTUsIDIzNSwgMzcsIDEyLCAxNSwgMjM1LCAzNiwgMTIsIDE1LCAyMzUsIDM1LCAxMiwgMTUsIDIzNSwgMzQsIAotICAgIDEyLCAxNSwgMjM1LCAzMywgMTIsIDE1LCAyMzUsIDMyLCAxMiwgMTUsIDIzNSwgMzEsIDEyLCAxNSwgMjM1LCAzMCwgMTIsIAotICAgIDE1LCAyMzUsIDI5LCAxMiwgMTUsIDIzNSwgMjgsIDEyLCAxNSwgMjM1LCAyNywgMTIsIDE1LCAyMzUsIDI2LCAxMiwgMTUsIAotICAgIDIzNSwgMjUsIDEyLCAxNSwgMjM1LCAyNCwgMTIsIDE1LCAyMzUsIDIzLCAxMiwgMTUsIDIzNSwgMjIsIDEyLCAxNSwgMjM1LCAKLSAgICAyMSwgMTIsIDE1LCAyMzUsIDIwLCAxMiwgMTUsIDIzNSwgMTksIDEyLCAxNSwgMjM1LCAxOCwgMTIsIDE1LCAyMzUsIDE3LCAKLSAgICAxMiwgMTUsIDIzNSwgMTYsIDEyLCAxNSwgMjM1LCAxNSwgMTIsIDE1LCAyMzUsIDE0LCAxMiwgMTUsIDIzNSwgMTMsIDEyLCAKLSAgICAxNSwgMjM1LCAxMiwgMTIsIDE1LCAyMzUsIDExLCAxMiwgMTUsIDIzNSwgMTAsIDEyLCAxNSwgMjM1LCA5LCAxMiwgMTUsIAotICAgIDIzNSwgOCwgMTIsIDE1LCAyMzUsIDcsIDEyLCAxNSwgMjM1LCA2LCAxMiwgMTUsIDIzNSwgNSwgMTIsIDE1LCAyMzUsIDQsIAotICAgIDEyLCAxNSwgMjM1LCAzLCAxMiwgMTUsIDIzNSwgMiwgMTIsIDE1LCAyMzUsIDEsIDEyLCAxNSwgMjM1LCAwLCAxMiwgMTUsIAotICAgIDIzNCwgMjU1LCAxMiwgMTUsIDIzNCwgMjU0LCAxMiwgMTUsIDIzNCwgMjUzLCAxMiwgMTUsIDIzNCwgMjUyLCAxMiwgMTUsIAotICAgIDIzNCwgMjUxLCAxMiwgMTUsIDIzNCwgMjUwLCAxMiwgMTUsIDIzNCwgMjQ5LCAxMiwgMTUsIDIzNCwgMjQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMjQ3LCAxMiwgMTUsIDIzNCwgMjQ2LCAxMiwgMTUsIDIzNCwgMjQ1LCAxMiwgMTUsIDIzNCwgMjQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMjQzLCAxMiwgMTUsIDIzNCwgMjQyLCAxMiwgMTUsIDIzNCwgMjQxLCAxMiwgMTUsIDIzNCwgMjQwLCAxMiwgMTUsIAotICAgIDIzNCwgMjM5LCAxMiwgMTUsIDIzNCwgMjM4LCAxMiwgMTUsIDIzNCwgMjM3LCAxMiwgMTUsIDIzNCwgMjM2LCAxMiwgMTUsIAotICAgIDIzNCwgMjM1LCAxMiwgMTUsIDIzNCwgMjM0LCAxMiwgMTUsIDIzNCwgMjMzLCAxMiwgMTUsIDIzNCwgMjMyLCAxMiwgMTUsIAotICAgIDIzNCwgMjMxLCAxMiwgMTUsIDIzNCwgMjMwLCAxMiwgMTUsIDIzNCwgMjI5LCAxMiwgMTUsIDIzNCwgMjI4LCAxMiwgMTUsIAotICAgIDIzNCwgMjI3LCAxMiwgMTUsIDIzNCwgMjI2LCAxMiwgMTUsIDIzNCwgMjI1LCAxMiwgMTUsIDIzNCwgMjI0LCAxMiwgMTUsIAotICAgIDIzNCwgMjIzLCAxMiwgMTUsIDIzNCwgMjIyLCAxMiwgMTUsIDIzNCwgMjIxLCAxMiwgMTUsIDIzNCwgMjIwLCAxMiwgMTUsIAotICAgIDIzNCwgMjE5LCAxMiwgMTUsIDIzNCwgMjE4LCAxMiwgMTUsIDIzNCwgMjE3LCAxMiwgMTUsIDIzNCwgMjE2LCAxMiwgMTUsIAotICAgIDIzNCwgMjE1LCAxMiwgMTUsIDIzNCwgMjE0LCAxMiwgMTUsIDIzNCwgMjEzLCAxMiwgMTUsIDIzNCwgMjEyLCAxMiwgMTUsIAotICAgIDIzNCwgMjExLCAxMiwgMTUsIDIzNCwgMjEwLCAxMiwgMTUsIDIzNCwgMjA5LCAxMiwgMTUsIDIzNCwgMjA4LCAxMiwgMTUsIAotICAgIDIzNCwgMjA3LCAxMiwgMTUsIDIzNCwgMjA2LCAxMiwgMTUsIDIzNCwgMjA1LCAxMiwgMTUsIDIzNCwgMjA0LCAxMiwgMTUsIAotICAgIDIzNCwgMjAzLCAxMiwgMTUsIDIzNCwgMjAyLCAxMiwgMTUsIDIzNCwgMjAxLCAxMiwgMTUsIDIzNCwgMjAwLCAxMiwgMTUsIAotICAgIDIzNCwgMTk5LCAxMiwgMTUsIDIzNCwgMTk4LCAxMiwgMTUsIDIzNCwgMTk3LCAxMiwgMTUsIDIzNCwgMTk2LCAxMiwgMTUsIAotICAgIDIzNCwgMTk1LCAxMiwgMTUsIDIzNCwgMTk0LCAxMiwgMTUsIDIzNCwgMTkzLCAxMiwgMTUsIDIzNCwgMTkyLCAxMiwgMTUsIAotICAgIDIzNCwgMTkxLCAxMiwgMTUsIDIzNCwgMTkwLCAxMiwgMTUsIDIzNCwgMTg5LCAxMiwgMTUsIDIzNCwgMTg4LCAxMiwgMTUsIAotICAgIDIzNCwgMTg3LCAxMiwgMTUsIDIzNCwgMTg2LCAxMiwgMTUsIDIzNCwgMTg1LCAxMiwgMTUsIDIzNCwgMTg0LCAxMiwgMTUsIAotICAgIDIzNCwgMTgzLCAxMiwgMTUsIDIzNCwgMTgyLCAxMiwgMTUsIDIzNCwgMTgxLCAxMiwgMTUsIDIzNCwgMTgwLCAxMiwgMTUsIAotICAgIDIzNCwgMTc5LCAxMiwgMTUsIDIzNCwgMTc4LCAxMiwgMTUsIDIzNCwgMTc3LCAxMiwgMTUsIDIzNCwgMTc2LCAxMiwgMTUsIAotICAgIDIzNCwgMTc1LCAxMiwgMTUsIDIzNCwgMTc0LCAxMiwgMTUsIDIzNCwgMTczLCAxMiwgMTUsIDIzNCwgMTcyLCAxMiwgMTUsIAotICAgIDIzNCwgMTcxLCAxMiwgMTUsIDIzNCwgMTcwLCAxMiwgMTUsIDIzNCwgMTY5LCAxMiwgMTUsIDIzNCwgMTY4LCAxMiwgMTUsIAotICAgIDIzNCwgMTY3LCAxMiwgMTUsIDIzNCwgMTY2LCAxMiwgMTUsIDIzNCwgMTY1LCAxMiwgMTUsIDIzNCwgMTY0LCAxMiwgMTUsIAotICAgIDIzNCwgMTYzLCAxMiwgMTUsIDIzNCwgMTYyLCAxMiwgMTUsIDIzNCwgMTYxLCAxMiwgMTUsIDIzNCwgMTYwLCAxMiwgMTUsIAotICAgIDIzNCwgMTU5LCAxMiwgMTUsIDIzNCwgMTU4LCAxMiwgMTUsIDIzNCwgMTU3LCAxMiwgMTUsIDIzNCwgMTU2LCAxMiwgMTUsIAotICAgIDIzNCwgMTU1LCAxMiwgMTUsIDIzNCwgMTU0LCAxMiwgMTUsIDIzNCwgMTUzLCAxMiwgMTUsIDIzNCwgMTUyLCAxMiwgMTUsIAotICAgIDIzNCwgMTUxLCAxMiwgMTUsIDIzNCwgMTUwLCAxMiwgMTUsIDIzNCwgMTQ5LCAxMiwgMTUsIDIzNCwgMTQ4LCAxMiwgMTUsIAotICAgIDIzNCwgMTQ3LCAxMiwgMTUsIDIzNCwgMTQ2LCAxMiwgMTUsIDIzNCwgMTQ1LCAxMiwgMTUsIDIzNCwgMTQ0LCAxMiwgMTUsIAotICAgIDIzNCwgMTQzLCAxMiwgMTUsIDIzNCwgMTQyLCAxMiwgMTUsIDIzNCwgMTQxLCAxMiwgMTUsIDIzNCwgMTQwLCAxMiwgMTUsIAotICAgIDIzNCwgMTM5LCAxMiwgMTUsIDIzNCwgMTM4LCAxMiwgMTUsIDIzNCwgMTM3LCAxMiwgMTUsIDIzNCwgMTM2LCAxMiwgMTUsIAotICAgIDIzNCwgMTM1LCAxMiwgMTUsIDIzNCwgMTM0LCAxMiwgMTUsIDIzNCwgMTMzLCAxMiwgMTUsIDIzNCwgMTMyLCAxMiwgMTUsIAotICAgIDIzNCwgMTMxLCAxMiwgMTUsIDIzNCwgMTMwLCAxMiwgMTUsIDIzNCwgMTI5LCAxMiwgMTUsIDIzNCwgMTI4LCAxMiwgMTUsIAotICAgIDIzNCwgMTI3LCAxMiwgMTUsIDIzNCwgMTI2LCAxMiwgMTUsIDIzNCwgMTI1LCAxMiwgMTUsIDIzNCwgMTI0LCAxMiwgMTUsIAotICAgIDIzNCwgMTIzLCAxMiwgMTUsIDIzNCwgMTIyLCAxMiwgMTUsIDIzNCwgMTIxLCAxMiwgMTUsIDIzNCwgMTIwLCAxMiwgMTUsIAotICAgIDIzNCwgMTE5LCAxMiwgMTUsIDIzNCwgMTE4LCAxMiwgMTUsIDIzNCwgMTE3LCAxMiwgMTUsIDIzNCwgMTE2LCAxMiwgMTUsIAotICAgIDIzNCwgMTE1LCAxMiwgMTUsIDIzNCwgMTE0LCAxMiwgMTUsIDIzNCwgMTEzLCAxMiwgMTUsIDIzNCwgMTEyLCAxMiwgMTUsIAotICAgIDIzNCwgMTExLCAxMiwgMTUsIDIzNCwgMTEwLCAxMiwgMTUsIDIzNCwgMTA5LCAxMiwgMTUsIDIzNCwgMTA4LCAxMiwgMTUsIAotICAgIDIzNCwgMTA3LCAxMiwgMTUsIDIzNCwgMTA2LCAxMiwgMTUsIDIzNCwgMTA1LCAxMiwgMTUsIDIzNCwgMTA0LCAxMiwgMTUsIAotICAgIDIzNCwgMTAzLCAxMiwgMTUsIDIzNCwgMTAyLCAxMiwgMTUsIDIzNCwgMTAxLCAxMiwgMTUsIDIzNCwgMTAwLCAxMiwgMTUsIAotICAgIDIzNCwgOTksIDEyLCAxNSwgMjM0LCA5OCwgMTIsIDE1LCAyMzQsIDk3LCAxMiwgMTUsIDIzNCwgOTYsIDEyLCAxNSwgMjM0LCAKLSAgICA5NSwgMTIsIDE1LCAyMzQsIDk0LCAxMiwgMTUsIDIzNCwgOTMsIDEyLCAxNSwgMjM0LCA5MiwgMTIsIDE1LCAyMzQsIDkxLCAKLSAgICAxMiwgMTUsIDIzNCwgOTAsIDEyLCAxNSwgMjM0LCA4OSwgMTIsIDE1LCAyMzQsIDg4LCAxMiwgMTUsIDIzNCwgODcsIDEyLCAKLSAgICAxNSwgMjM0LCA4NiwgMTIsIDE1LCAyMzQsIDg1LCAxMiwgMTUsIDIzNCwgODQsIDEyLCAxNSwgMjM0LCA4MywgMTIsIDE1LCAKLSAgICAyMzQsIDgyLCAxMiwgMTUsIDIzNCwgODEsIDEyLCAxNSwgMjM0LCA4MCwgMTIsIDE1LCAyMzQsIDc5LCAxMiwgMTUsIDIzNCwgCi0gICAgNzgsIDEyLCAxNSwgMjM0LCA3NywgMTIsIDE1LCAyMzQsIDc2LCAxMiwgMTUsIDIzNCwgNzUsIDEyLCAxNSwgMjM0LCA3NCwgCi0gICAgMTIsIDE1LCAyMzQsIDczLCAxMiwgMTUsIDIzNCwgNzIsIDEyLCAxNSwgMjM0LCA3MSwgMTIsIDE1LCAyMzQsIDcwLCAxMiwgCi0gICAgMTUsIDIzNCwgNjksIDEyLCAxNSwgMjM0LCA2OCwgMTIsIDE1LCAyMzQsIDY3LCAxMiwgMTUsIDIzNCwgNjYsIDEyLCAxNSwgCi0gICAgMjM0LCA2NSwgMTIsIDE1LCAyMzQsIDY0LCAxMiwgMTUsIDIzNCwgNjMsIDEyLCAxNSwgMjM0LCA2MiwgMTIsIDE1LCAyMzQsIAotICAgIDYxLCAxMiwgMTUsIDIzNCwgNjAsIDEyLCAxNSwgMjM0LCA1OSwgMTIsIDE1LCAyMzQsIDU4LCAxMiwgMTUsIDIzNCwgNTcsIAotICAgIDEyLCAxNSwgMjM0LCA1NiwgMTIsIDE1LCAyMzQsIDU1LCAxMiwgMTUsIDIzNCwgNTQsIDEyLCAxNSwgMjM0LCA1MywgMTIsIAotICAgIDE1LCAyMzQsIDUyLCAxMiwgMTUsIDIzNCwgNTEsIDEyLCAxNSwgMjM0LCA1MCwgMTIsIDE1LCAyMzQsIDQ5LCAxMiwgMTUsIAotICAgIDIzNCwgNDgsIDEyLCAxNSwgMjM0LCA0NywgMTIsIDE1LCAyMzQsIDQ2LCAxMiwgMTUsIDIzNCwgNDUsIDEyLCAxNSwgMjM0LCAKLSAgICA0NCwgMTIsIDE1LCAyMzQsIDQzLCAxMiwgMTUsIDIzNCwgNDIsIDEyLCAxNSwgMjM0LCA0MSwgMTIsIDE1LCAyMzQsIDQwLCAKLSAgICAxMiwgMTUsIDIzNCwgMzksIDEyLCAxNSwgMjM0LCAzOCwgMTIsIDE1LCAyMzQsIDM3LCAxMiwgMTUsIDIzNCwgMzYsIDEyLCAKLSAgICAxNSwgMjM0LCAzNSwgMTIsIDE1LCAyMzQsIDM0LCAxMiwgMTUsIDIzNCwgMzMsIDEyLCAxNSwgMjM0LCAzMiwgMTIsIDE1LCAKLSAgICAyMzQsIDMxLCAxMiwgMTUsIDIzNCwgMzAsIDEyLCAxNSwgMjM0LCAyOSwgMTIsIDE1LCAyMzQsIDI4LCAxMiwgMTUsIDIzNCwgCi0gICAgMjcsIDEyLCAxNSwgMjM0LCAyNiwgMTIsIDE1LCAyMzQsIDI1LCAxMiwgMTUsIDIzNCwgMjQsIDEyLCAxNSwgMjM0LCAyMywgCi0gICAgMTIsIDE1LCAyMzQsIDIyLCAxMiwgMTUsIDIzNCwgMjEsIDEyLCAxNSwgMjM0LCAyMCwgMTIsIDE1LCAyMzQsIDE5LCAxMiwgCi0gICAgMTUsIDIzNCwgMTgsIDEyLCAxNSwgMjM0LCAxNywgMTIsIDE1LCAyMzQsIDE2LCAxMiwgMTUsIDIzNCwgMTUsIDEyLCAxNSwgCi0gICAgMjM0LCAxNCwgMTIsIDE1LCAyMzQsIDEzLCAxMiwgMTUsIDIzNCwgMTIsIDEyLCAxNSwgMjM0LCAxMSwgMTIsIDE1LCAyMzQsIAotICAgIDEwLCAxMiwgMTUsIDIzNCwgOSwgMTIsIDE1LCAyMzQsIDgsIDEyLCAxNSwgMjM0LCA3LCAxMiwgMTUsIDIzNCwgNiwgMTIsIAotICAgIDE1LCAyMzQsIDUsIDEyLCAxNSwgMjM0LCA0LCAxMiwgMTUsIDIzNCwgMywgMTIsIDE1LCAyMzQsIDIsIDEyLCAxNSwgMjM0LCAKLSAgICAxLCAxMiwgMTUsIDIzNCwgMCwgMTIsIDE1LCAyMzMsIDI1NSwgMTIsIDE1LCAyMzMsIDI1NCwgMTIsIDE1LCAyMzMsIDI1MywgCi0gICAgMTIsIDE1LCAyMzMsIDI1MiwgMTIsIDE1LCAyMzMsIDI1MSwgMTIsIDE1LCAyMzMsIDI1MCwgMTIsIDE1LCAyMzMsIDI0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0OCwgMTIsIDE1LCAyMzMsIDI0NywgMTIsIDE1LCAyMzMsIDI0NiwgMTIsIDE1LCAyMzMsIDI0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0NCwgMTIsIDE1LCAyMzMsIDI0MywgMTIsIDE1LCAyMzMsIDI0MiwgMTIsIDE1LCAyMzMsIDI0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDI0MCwgMTIsIDE1LCAyMzMsIDIzOSwgMTIsIDE1LCAyMzMsIDIzOCwgMTIsIDE1LCAyMzMsIDIzNywgCi0gICAgMTIsIDE1LCAyMzMsIDIzNiwgMTIsIDE1LCAyMzMsIDIzNSwgMTIsIDE1LCAyMzMsIDIzNCwgMTIsIDE1LCAyMzMsIDIzMywgCi0gICAgMTIsIDE1LCAyMzMsIDIzMiwgMTIsIDE1LCAyMzMsIDIzMSwgMTIsIDE1LCAyMzMsIDIzMCwgMTIsIDE1LCAyMzMsIDIyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyOCwgMTIsIDE1LCAyMzMsIDIyNywgMTIsIDE1LCAyMzMsIDIyNiwgMTIsIDE1LCAyMzMsIDIyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyNCwgMTIsIDE1LCAyMzMsIDIyMywgMTIsIDE1LCAyMzMsIDIyMiwgMTIsIDE1LCAyMzMsIDIyMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIyMCwgMTIsIDE1LCAyMzMsIDIxOSwgMTIsIDE1LCAyMzMsIDIxOCwgMTIsIDE1LCAyMzMsIDIxNywgCi0gICAgMTIsIDE1LCAyMzMsIDIxNiwgMTIsIDE1LCAyMzMsIDIxNSwgMTIsIDE1LCAyMzMsIDIxNCwgMTIsIDE1LCAyMzMsIDIxMywgCi0gICAgMTIsIDE1LCAyMzMsIDIxMiwgMTIsIDE1LCAyMzMsIDIxMSwgMTIsIDE1LCAyMzMsIDIxMCwgMTIsIDE1LCAyMzMsIDIwOSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwOCwgMTIsIDE1LCAyMzMsIDIwNywgMTIsIDE1LCAyMzMsIDIwNiwgMTIsIDE1LCAyMzMsIDIwNSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwNCwgMTIsIDE1LCAyMzMsIDIwMywgMTIsIDE1LCAyMzMsIDIwMiwgMTIsIDE1LCAyMzMsIDIwMSwgCi0gICAgMTIsIDE1LCAyMzMsIDIwMCwgMTIsIDE1LCAyMzMsIDE5OSwgMTIsIDE1LCAyMzMsIDE5OCwgMTIsIDE1LCAyMzMsIDE5NywgCi0gICAgMTIsIDE1LCAyMzMsIDE5NiwgMTIsIDE1LCAyMzMsIDE5NSwgMTIsIDE1LCAyMzMsIDE5NCwgMTIsIDE1LCAyMzMsIDE5MywgCi0gICAgMTIsIDE1LCAyMzMsIDE5MiwgMTIsIDE1LCAyMzMsIDE5MSwgMTIsIDE1LCAyMzMsIDE5MCwgMTIsIDE1LCAyMzMsIDE4OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4OCwgMTIsIDE1LCAyMzMsIDE4NywgMTIsIDE1LCAyMzMsIDE4NiwgMTIsIDE1LCAyMzMsIDE4NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4NCwgMTIsIDE1LCAyMzMsIDE4MywgMTIsIDE1LCAyMzMsIDE4MiwgMTIsIDE1LCAyMzMsIDE4MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE4MCwgMTIsIDE1LCAyMzMsIDE3OSwgMTIsIDE1LCAyMzMsIDE3OCwgMTIsIDE1LCAyMzMsIDE3NywgCi0gICAgMTIsIDE1LCAyMzMsIDE3NiwgMTIsIDE1LCAyMzMsIDE3NSwgMTIsIDE1LCAyMzMsIDE3NCwgMTIsIDE1LCAyMzMsIDE3MywgCi0gICAgMTIsIDE1LCAyMzMsIDE3MiwgMTIsIDE1LCAyMzMsIDE3MSwgMTIsIDE1LCAyMzMsIDE3MCwgMTIsIDE1LCAyMzMsIDE2OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2OCwgMTIsIDE1LCAyMzMsIDE2NywgMTIsIDE1LCAyMzMsIDE2NiwgMTIsIDE1LCAyMzMsIDE2NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2NCwgMTIsIDE1LCAyMzMsIDE2MywgMTIsIDE1LCAyMzMsIDE2MiwgMTIsIDE1LCAyMzMsIDE2MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE2MCwgMTIsIDE1LCAyMzMsIDE1OSwgMTIsIDE1LCAyMzMsIDE1OCwgMTIsIDE1LCAyMzMsIDE1NywgCi0gICAgMTIsIDE1LCAyMzMsIDE1NiwgMTIsIDE1LCAyMzMsIDE1NSwgMTIsIDE1LCAyMzMsIDE1NCwgMTIsIDE1LCAyMzMsIDE1MywgCi0gICAgMTIsIDE1LCAyMzMsIDE1MiwgMTIsIDE1LCAyMzMsIDE1MSwgMTIsIDE1LCAyMzMsIDE1MCwgMTIsIDE1LCAyMzMsIDE0OSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0OCwgMTIsIDE1LCAyMzMsIDE0NywgMTIsIDE1LCAyMzMsIDE0NiwgMTIsIDE1LCAyMzMsIDE0NSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0NCwgMTIsIDE1LCAyMzMsIDE0MywgMTIsIDE1LCAyMzMsIDE0MiwgMTIsIDE1LCAyMzMsIDE0MSwgCi0gICAgMTIsIDE1LCAyMzMsIDE0MCwgMTIsIDE1LCAyMzMsIDEzOSwgMTIsIDE1LCAyMzMsIDEzOCwgMTIsIDE1LCAyMzMsIDEzNywgCi0gICAgMTIsIDE1LCAyMzMsIDEzNiwgMTIsIDE1LCAyMzMsIDEzNSwgMTIsIDE1LCAyMzMsIDEzNCwgMTIsIDE1LCAyMzMsIDEzMywgCi0gICAgMTIsIDE1LCAyMzMsIDEzMiwgMTIsIDE1LCAyMzMsIDEzMSwgMTIsIDE1LCAyMzMsIDEzMCwgMTIsIDE1LCAyMzMsIDEyOSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyOCwgMTIsIDE1LCAyMzMsIDEyNywgMTIsIDE1LCAyMzMsIDEyNiwgMTIsIDE1LCAyMzMsIDEyNSwgCi0gICAgMTIsIDE1LCAyMzMsIDEyNCwgMTIsIDE1LCAyMzMsIDEyMywgMjI4LCAxNCwgMjA5LCAyNTUsIDE2MCwgMjExLCAyMjgsIAotICAgIDE2MCwgMjQwLCAyMTIsIDgyLCAxNjAsIDIxNywgMzEsIDgyLCAxNjAsIDQyLCA1NCwgMTYwLCAyNDMsIDk3LCA1NCwgMTYwLCAKLSAgICAyMTgsIDI0NiwgNTQsIDE2MCwgMjUwLCAyMzUsIDE2MCwgMjUwLCAxNjAsIDE2MCwgNDksIDIxOSwgNzYsIDE2MCwgNTAsIAotICAgIDIxOSwgNzYsIDE2MCwgMjUwLCA1OSwgMTYwLCA5MSwgNTQsIDE2MCwgMjQ1LCAyMzMsIDE2MCwgMjM1LCAyMTksIDE2MCwgCi0gICAgMjM5LCAxMDIsIDIxMSwgNjEsIDE2MCwgMjEyLCAwLCAxNjAsIDE3LCAyMDIsIDg0LCAxNjAsIDE3LCAxMDUsIDE2MCwgMTcsIAotICAgIDEwOCwgMTYwLCAxNywgMTQ3LCAxNjAsIDE3LCAxNDksIDE2MCwgMTcsIDE3MCwgMTYwLCAxNywgMTk1LCAxNjAsIDE3LCAKLSAgICAyMTMsIDExMSwgMTYwLCAxNywgMTk5LCAxNjAsIDE3LCAyMjIsIDYzLCAxNjAsIDI0NSwgMjQyLCAxNjAsIDIxMywgMTQzLCAKLSAgICAxNjAsIDIyNywgMTc5LCA1NCwgMTYwLCAyNDEsIDM1LCA1NCwgMTYwLCAyMzcsIDI0NywgNTQsIDE2MCwgMjE3LCA0NywgODIsIAotICAgIDE2MCwgMjQ1LCAyMzEsIDI1MCwgNDksIDE2MCwgOCwgNiwgMSwgNjMsIDE2MCwgOCwgNiwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgCi0gICAgNiwgMSwgMjQ3LCAxMjUsIDE2MCwgOCwgNiwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA2LCAxLCA3NCwgMTYwLCA4LCA2LCAxLCAKLSAgICAyNDAsIDE3NCwgMTYwLCA4LCA2LCAxLCAyMzksIDc1LCAxNjAsIDgsIDYsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDYsIDEsIAotICAgIDc1LCAxNjAsIDgsIDYsIDEsIDIzMCwgMTg0LCAxNjAsIDgsIDYsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNiwgMSwgMTU5LCAKLSAgICAxNjAsIDgsIDYsIDEsIDIyNiwgMTg1LCAxNjAsIDgsIDYsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDYsIDEsIDc4LCAxNjAsIDgsIAotICAgIDYsIDEsIDIxOSwgMTg0LCAxNjAsIDgsIDYsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDYsIDEsIDE0NiwgMTYwLCA4LCA2LCAxLCAKLSAgICAxOTQsIDE2MCwgOCwgNiwgMSwgMjEwLCA2OSwgMTYwLCA4LCA2LCAxLCA2OCwgMTYwLCA4LCA2LCAxLCAyMDYsIDE2NCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDQsIDE0NCwgMTYwLCA4LCA2LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA2LCAxLCAyMDMsIDEyNCwgCi0gICAgMTYwLCA4LCA2LCAxLCAyMDIsIDE1OSwgMTYwLCA0OSwgNTEsIDE1NSwgMTYwLCAyMTYsIDc0LCAyMTIsIDAsIDE2MCwgNTAsIAotICAgIDUxLCAxNTUsIDE2MCwgMjQ2LCA1MywgMjUxLCAxMzgsIDE2MCwgMTI0LCAyMjcsIDExNCwgMTYwLCAyMzcsIDI1NCwgMjUxLCAKLSAgICAxMzgsIDE2MCwgOCwgNSwgMSwgNjMsIDE2MCwgOCwgNSwgMSwgMjQ5LCAyNTUsIDE2MCwgOCwgNSwgMSwgMjQ3LCAxMjUsIAotICAgIDE2MCwgOCwgNSwgMSwgMjQ1LCA1MSwgMTYwLCA4LCA1LCAxLCA3NCwgMTYwLCA4LCA1LCAxLCAyNDAsIDE3NCwgMTYwLCA4LCAKLSAgICA1LCAxLCAyMzksIDc1LCAxNjAsIDgsIDUsIDEsIDIzNywgMTcxLCAxNjAsIDgsIDUsIDEsIDc1LCAxNjAsIDgsIDUsIDEsIAotICAgIDIzMCwgMTg0LCAxNjAsIDgsIDUsIDEsIDIzMCwgNTQsIDE2MCwgOCwgNSwgMSwgMTU5LCAxNjAsIDgsIDUsIDEsIDIyNiwgCi0gICAgMTg1LCAxNjAsIDgsIDUsIDEsIDIyMywgMTYzLCAxNjAsIDgsIDUsIDEsIDc4LCAxNjAsIDgsIDUsIDEsIDIxOSwgMTg0LCAKLSAgICAxNjAsIDgsIDUsIDEsIDIxNywgMTM0LCAxNjAsIDgsIDUsIDEsIDE0NiwgMTYwLCA4LCA1LCAxLCAxOTQsIDE2MCwgOCwgNSwgCi0gICAgMSwgMjEwLCA2OSwgMTYwLCA4LCA1LCAxLCA2OCwgMTYwLCA4LCA1LCAxLCAyMDYsIDE2NCwgMTYwLCA4LCA1LCAxLCAyMDQsIAotICAgIDE0NCwgMTYwLCA4LCA1LCAxLCAyMDMsIDE5NiwgMTYwLCA4LCA1LCAxLCAyMDMsIDEyNCwgMTYwLCA4LCA1LCAxLCAyMDIsIAotICAgIDE1OSwgMTYwLCA0OSwgMjQ1LCA5MywgMTU1LCAxNjAsIDgwLCAyMjcsIDExNCwgMTYwLCA1MCwgMjQ1LCA5MywgMTU1LCAKLSAgICAxNjAsIDIwOCwgMjI3LCAyNDcsIDYwLCAyMDksIDI1NSwgNTcsIDIxNCwgNzEsIDU3LCAyMTQsIDYwLCA1NywgMjE0LCA0OSwgCi0gICAgNTcsIDIxNCwgMzcsIDU3LCAyMTQsIDI2LCA1NywgMjE0LCAxNSwgNTcsIDIxNCwgNCwgNTcsIDIxMywgMjQ5LCA1NywgMjEzLCAKLSAgICAyMzgsIDU3LCAyMTMsIDIzMCwgNTcsIDIxMywgMjI5LCA1NywgMjEzLCAyMjgsIDU3LCAyMTMsIDIyNywgNTcsIDIxMywgCi0gICAgMjI1LCA1NywgMjEzLCAyMjQsIDU3LCAyMTMsIDIyMywgNTcsIDIxMywgMjIyLCA1NywgMjEzLCAyMjEsIDU3LCAyMTMsIAotICAgIDIyMCwgNTcsIDIxMywgMjE5LCA1NywgMjEzLCAyMTgsIDU3LCAyMTMsIDIxNywgNTcsIDIxMywgMjE2LCA1NywgMjEzLCAKLSAgICAyMTQsIDU3LCAyMTMsIDIxMywgNTcsIDIxMywgMjEyLCA1NywgMjEzLCAyMTEsIDU3LCAyMTMsIDIxMCwgNTcsIDIxMywgCi0gICAgMjA5LCA1NywgMjEzLCAyMDgsIDU3LCAyMTMsIDIwNywgNTcsIDIxMywgMjA2LCA1NywgMjEzLCAyMDUsIDU3LCAyMTMsIAotICAgIDIwMywgNTcsIDIxMywgMjAyLCA1NywgMjEzLCAyMDEsIDU3LCAyMTMsIDIwMCwgNTcsIDIxMywgMTk5LCA1NywgMjEzLCAKLSAgICAxOTgsIDU3LCAyMTMsIDE5NywgNTcsIDIxMywgMTk2LCA1NywgMjEzLCAxOTUsIDU3LCAyMTMsIDE5NCwgNTcsIDIxMywgCi0gICAgMTkyLCA1NywgMjEzLCAxOTEsIDU3LCAyMTMsIDE5MCwgNTcsIDIxMywgMTg5LCA1NywgMjEzLCAxODgsIDU3LCAyMTMsIAotICAgIDE4NywgNTcsIDIxMywgMTg2LCA1NywgMjEzLCAxODUsIDU3LCAyMTMsIDE4NCwgNTcsIDIxMywgMTgzLCA1NywgMjEzLCAKLSAgICAxODEsIDU3LCAyMTMsIDE4MCwgNTcsIDIxMywgMTc5LCA1NywgMjEzLCAxNzgsIDU3LCAyMTMsIDE3NywgNTcsIDIxMywgCi0gICAgMTc2LCA1NywgMjEzLCAxNzUsIDU3LCAyMTMsIDE3NCwgNTcsIDIxMywgMTczLCA1NywgMjEzLCAxNzIsIDU3LCAyMTMsIAotICAgIDE3MCwgNTcsIDIxMywgMTY5LCA1NywgMjEzLCAxNjgsIDU3LCAyMTMsIDE2NywgNTcsIDIxMywgMTY2LCA1NywgMjEzLCAKLSAgICAxNjUsIDU3LCAyMTMsIDE2NCwgNTcsIDIxMywgMTYzLCA1NywgMjEzLCAxNjIsIDU3LCAyMTMsIDE2MSwgNTcsIDIxMywgCi0gICAgMTU5LCA1NywgMjEzLCAxNTgsIDU3LCAyMTMsIDE1NywgNTcsIDIxMywgMTU2LCA1NywgMjEzLCAxNTUsIDU3LCAyMTMsIAotICAgIDE1NCwgNTcsIDIxMywgMTUzLCA1NywgMjEzLCAxNTIsIDU3LCAyMTMsIDE1MSwgNTcsIDIxMywgMTUwLCA1NywgMjE0LCAKLSAgICAxNDcsIDU3LCAyMTQsIDE0NiwgNTcsIDIxNCwgMTQ1LCA1NywgMjE0LCAxNDQsIDU3LCAyMTQsIDE0MywgNTcsIDIxNCwgCi0gICAgMTQyLCA1NywgMjE0LCAxNDEsIDU3LCAyMTQsIDE0MCwgNTcsIDIxNCwgMTM5LCA1NywgMjE0LCAxMzgsIDU3LCAyMTQsIAotICAgIDEzNiwgNTcsIDIxNCwgMTM1LCA1NywgMjE0LCAxMzQsIDU3LCAyMTQsIDEzMywgNTcsIDIxNCwgMTMyLCA1NywgMjE0LCAKLSAgICAxMzEsIDU3LCAyMTQsIDEzMCwgNTcsIDIxNCwgMTI5LCA1NywgMjE0LCAxMjgsIDU3LCAyMTQsIDEyNywgNTcsIDIxNCwgCi0gICAgMTI1LCA1NywgMjE0LCAxMjQsIDU3LCAyMTQsIDEyMywgNTcsIDIxNCwgMTIyLCA1NywgMjE0LCAxMjEsIDU3LCAyMTQsIAotICAgIDEyMCwgNTcsIDIxNCwgMTE5LCA1NywgMjE0LCAxMTgsIDU3LCAyMTQsIDExNywgNTcsIDIxNCwgMTE2LCA1NywgMjE0LCAKLSAgICAxMTQsIDU3LCAyMTQsIDExMywgNTcsIDIxNCwgMTEyLCA1NywgMjE0LCAxMTEsIDU3LCAyMTQsIDExMCwgNTcsIDIxNCwgCi0gICAgMTA5LCA1NywgMjE0LCAxMDgsIDU3LCAyMTQsIDEwNywgNTcsIDIxNCwgMTA2LCA1NywgMjE0LCAxMDUsIDU3LCAyMTQsIAotICAgIDEwMywgNTcsIDIxNCwgMTAyLCA1NywgMjE0LCAxMDEsIDU3LCAyMTQsIDEwMCwgNTcsIDIxNCwgOTksIDU3LCAyMTQsIDk4LCAKLSAgICA1NywgMjE0LCA5NywgNTcsIDIxNCwgOTYsIDU3LCAyMTQsIDk1LCA1NywgMjE0LCA5NCwgNTcsIDIxNCwgOTIsIDU3LCAyMTQsIAotICAgIDkxLCA1NywgMjE0LCA5MCwgNTcsIDIxNCwgODksIDU3LCAyMTQsIDg4LCA1NywgMjE0LCA4NywgNTcsIDIxNCwgODYsIDU3LCAKLSAgICAyMTQsIDg1LCA1NywgMjE0LCA4NCwgNTcsIDIxNCwgODMsIDU3LCAyMTQsIDgxLCA1NywgMjE0LCA4MCwgNTcsIDIxNCwgNzksIAotICAgIDU3LCAyMTQsIDc4LCA1NywgMjE0LCA3NywgNTcsIDIxNCwgNzYsIDU3LCAyMTQsIDc1LCA1NywgMjE0LCA3NCwgNTcsIDIxNCwgCi0gICAgNzMsIDU3LCAyMTQsIDcyLCA1NywgMjE0LCA3MCwgNTcsIDIxNCwgNjksIDU3LCAyMTQsIDY4LCA1NywgMjE0LCA2NywgNTcsIAotICAgIDIxNCwgNjYsIDU3LCAyMTQsIDY1LCA1NywgMjE0LCA2NCwgNTcsIDIxNCwgNjMsIDU3LCAyMTQsIDYyLCA1NywgMjE0LCA2MSwgCi0gICAgNTcsIDIxNCwgNTksIDU3LCAyMTQsIDU4LCA1NywgMjE0LCA1NywgNTcsIDIxNCwgNTYsIDU3LCAyMTQsIDU1LCA1NywgMjE0LCAKLSAgICA1NCwgNTcsIDIxNCwgNTMsIDU3LCAyMTQsIDUyLCA1NywgMjE0LCA1MSwgNTcsIDIxNCwgNTAsIDU3LCAyMTQsIDQ4LCA1NywgCi0gICAgMjE0LCA0NywgNTcsIDIxNCwgNDYsIDU3LCAyMTQsIDQ1LCA1NywgMjE0LCA0NCwgNTcsIDIxNCwgNDMsIDU3LCAyMTQsIDQyLCAKLSAgICA1NywgMjE0LCA0MSwgNTcsIDIxNCwgNDAsIDU3LCAyMTQsIDM5LCA1NywgMjE0LCAzNiwgNTcsIDIxNCwgMzUsIDU3LCAyMTQsIAotICAgIDM0LCA1NywgMjE0LCAzMywgNTcsIDIxNCwgMzIsIDU3LCAyMTQsIDMxLCA1NywgMjE0LCAzMCwgNTcsIDIxNCwgMjksIDU3LCAKLSAgICAyMTQsIDI4LCA1NywgMjE0LCAyNywgNTcsIDIxNCwgMjUsIDU3LCAyMTQsIDI0LCA1NywgMjE0LCAyMywgNTcsIDIxNCwgMjIsIAotICAgIDU3LCAyMTQsIDIxLCA1NywgMjE0LCAyMCwgNTcsIDIxNCwgMTksIDU3LCAyMTQsIDE4LCA1NywgMjE0LCAxNywgNTcsIDIxNCwgCi0gICAgMTYsIDU3LCAyMTQsIDE0LCA1NywgMjE0LCAxMywgNTcsIDIxNCwgMTIsIDU3LCAyMTQsIDExLCA1NywgMjE0LCAxMCwgNTcsIAotICAgIDIxNCwgOSwgNTcsIDIxNCwgOCwgNTcsIDIxNCwgNywgNTcsIDIxNCwgNiwgNTcsIDIxNCwgNSwgNTcsIDIxNCwgMywgNTcsIAotICAgIDIxNCwgMiwgNTcsIDIxNCwgMSwgNTcsIDIxNCwgMCwgNTcsIDIxMywgMjU1LCA1NywgMjEzLCAyNTQsIDU3LCAyMTMsIDI1MywgCi0gICAgNTcsIDIxMywgMjUyLCA1NywgMjEzLCAyNTEsIDU3LCAyMTMsIDI1MCwgNTcsIDIxMywgMjQ4LCA1NywgMjEzLCAyNDcsIDU3LCAKLSAgICAyMTMsIDI0NiwgNTcsIDIxMywgMjQ1LCA1NywgMjEzLCAyNDQsIDU3LCAyMTMsIDI0MywgNTcsIDIxMywgMjQyLCA1NywgCi0gICAgMjEzLCAyNDEsIDU3LCAyMTMsIDI0MCwgNTcsIDIxMywgMjM5LCA1NywgMjEzLCAyMzcsIDU3LCAyMTMsIDIzNiwgNTcsIAotICAgIDIxMywgMjM1LCA1NywgMjEzLCAyMzQsIDU3LCAyMTMsIDIzMywgNTcsIDIxMywgMjMyLCA1NywgMjEzLCAyMzEsIDIyMSwgCi0gICAgNDgsIDIyMSwgNTAsIDIxMSwgOTAsIDc2LCAyMzcsIDYxLCAyMTIsIDMsIDIxMSwgOTAsIDc2LCAyMDksIDExMiwgMjExLCAKLSAgICAxMiwgMjQxLCA4NCwgNzYsIDIwOSwgMTEyLCAyNDAsIDI0MCwgMjQxLCA4NCwgNzYsIDIwOCwgMTA1LCAyNDEsIDQ3LCAyNDEsIAotICAgIDcxLCAyNDEsIDcyLCAyNTEsIDEzMCwgMjUxLCAxMzEsIDI1MSwgMjcsIDI0OCwgMTMxLCAyNDksIDE5LCAyNDcsIDE5OSwgCi0gICAgMTY3LCAyMTAsIDUsIDIzNiwgMTA2LCAyMTAsIDUsIDIzNiwgMzEsIDIxMCwgMTAsIDIyNywgMTE1LCAyNDAsIDUxLCAyMjIsIAotICAgIDIxNCwgMjI3LCAxMTQsIDI0MSwgODQsIDc2LCAyMjcsIDExNCwgMjI3LCAxNjMsIDIyMSwgMjUzLCAyNDEsIDUwLCAyMjcsIAotICAgIDExNSwgMjEwLCA1LCA4MCwgMjEwLCA1LCAyMDQsIDE2NSwgMjM5LCAxNTksIDI0MCwgNTEsIDI0MCwgMzAsIDI0NywgMjUsIAotICAgIDIxNiwgNzcsIDI0NSwgMTQ3LCAyMTMsIDcsIDIxOSwgMjExLCAyMjcsIDQxLCAxMDUsIDIxMiwgMTMsIDIxMywgNywgMjMxLCAKLSAgICA0OSwgMjI3LCA0MSwgMjAyLCA4NCwgMjEyLCAxNjIsIDI0NCwgMTM5LCAyMjcsIDEwNSwgMjQxLCA5LCAyNDMsIDEyMywgCi0gICAgMjQ0LCA4LCAyNDUsIDE4NCwgMTA1LCAyNDQsIDEyOCwgMjQ0LCA4LCAyNDUsIDE4NCwgMTA4LCAyNDQsIDEyNywgMjQ0LCA4LCAKLSAgICAyNDUsIDE4NCwgMTQ3LCAyNDQsIDEyNiwgMjQ0LCA4LCAyNDUsIDE4NCwgMTQ5LCAyNDQsIDEyNSwgMTgyLCAyNTEsIDEzMCwgCi0gICAgMjIzLCA4OSwgMjEwLCA5NSwgMjMxLCAxMTIsIDIxMCwgOTksIDI0MSwgODQsIDc2LCAyMDgsIDEwNiwgMjQ4LCAzMywgMjQwLCAKLSAgICAyNDcsIDI0NywgNTksIDI0NywgNjEsIDI0MSwgODQsIDc2LCAyMjUsIDksIDI0MSwgNDgsIDIxMCwgMjQyLCAyMTEsIDMsIAotICAgIDI0MSwgOSwgMjQxLCAxMCwgMjMxLCAyNSwgMjEzLCAxMzEsIDE0OSwgMjQwLCAxMSwgMjEzLCAxMzAsIDIzOSwgMTEyLCAKLSAgICAyMzEsIDI1LCAyMTMsIDEzMSwgMTQ3LCAyMzcsIDIzOCwgMjEzLCAxMzAsIDIzNywgMjM1LCAyMzEsIDI1LCAyMTMsIDEzMSwgCi0gICAgMTA4LCAyMTYsIDE0OSwgMjEzLCAxMzAsIDIxNSwgMTUwLCAyMzEsIDI1LCAyMTMsIDEzMSwgMTA1LCAyMDYsIDIzNiwgMjEzLCAKLSAgICAxMzAsIDIwNiwgMTkzLCAyMTEsIDIzMSwgMjQ0LCA0NiwgMjQ0LCA0OCwgMjE5LCAxNTcsIDI0NiwgMTgyLCAyMTksIDE1OSwgCi0gICAgMTM4LCAyMjAsIDgwLCAyMTcsIDI0MCwgMjM2LCAxMDksIDI0NywgMjE4LCAyMTgsIDIzNiwgMjM3LCAyNywgMjQ3LCAyMzAsIAotICAgIDIyMSwgMTkyLCAyNDcsIDIxOCwgMjM3LCAyNywgMjIzLCA1MywgMjMxLCAzNSwgMjMxLCAzNywgMjIyLCAyMDgsIDIyNywgCi0gICAgMTE0LCAyMjIsIDIzMSwgMjExLCA5MCwgNzYsIDIxNCwgMTUyLCAyNTAsIDEyMCwgMjExLCAxNjQsIDI0MSwgODQsIDc2LCAKLSAgICAyMTQsIDE1MiwgMjUwLCAxMjAsIDI0MSwgMTIsIDE2NywgMjEwLCA2LCAyMTMsIDExNywgMjM2LCAxMDYsIDIxMCwgNiwgCi0gICAgMjEzLCAxMTcsIDIzNiwgMjgsIDE2NywgMjEwLCA2LCAzLCAyMzAsIDY2LCAyMzYsIDEwNiwgMjEwLCA2LCAzLCAyMzAsIDY2LCAKLSAgICAyMzYsIDI5LCAyMjcsIDExNSwgMjEwLCA2LCAyMTMsIDExNywgODAsIDIxMCwgNiwgMjEzLCAxMTcsIDIwNCwgMTY0LCAyMTksIAotICAgIDY5LCAyMjcsIDExNSwgMjM5LCAxNTEsIDIxOSwgNjksIDIyNywgMTE1LCAyNDIsIDcwLCAyMTgsIDg3LCAyMTksIDY5LCAKLSAgICAyMjcsIDExNSwgMjQ5LCAxOCwgMjE5LCA2OSwgMjI3LCAxMTUsIDIwNiwgMjI0LCAyMTgsIDgyLCAyMTYsIDc0LCAyMjcsIAotICAgIDExNSwgMjQwLCA1MSwgMjE2LCA3NCwgMjMxLCAzNSwgMjE2LCA1NywgMjEyLCAxMjAsIDIxMywgNywgMTA4LCAyMTIsIDExNywgCi0gICAgMjExLCAxNjYsIDIxMiwgMTIwLCAyMTMsIDcsIDE0NywgMjEyLCAxMTYsIDIxMSwgMTY1LCAyNDQsIDgsIDI0NSwgMTg0LCAKLSAgICAyMTEsIDM0LCAyNDQsIDEyMywgMjE3LCAyMjcsIDIwNiwgMTkyLCAxMDUsIDIxNywgMjI3LCAyMDYsIDE5MCwgMjE3LCAxOTAsIAotICAgIDIxNywgMjI3LCAyMDYsIDE5MiwgMTA4LCAyMTcsIDIyNywgMjA2LCAxODksIDIxNywgMTg5LCAyMTMsIDExOCwgMjA4LCAKLSAgICAxMDQsIDIxMSwgODksIDIxMSwgMTcsIDI0NywgNjAsIDI0NiwgMTgyLCAyNDcsIDEsIDIyNCwgMjI0LCAyMDQsIDEwMywgCi0gICAgMjIzLCAxODEsIDIxMSwgOTAsIDc2LCAyMzcsIDIyMywgMjUwLCAxMjAsIDIxMSwgOTAsIDc2LCAyMTcsIDIwOCwgMjUwLCAKLSAgICAxMjAsIDIxMSwgMjMwLCAyNDEsIDg0LCA3NiwgMjM3LCAyMjMsIDI1MCwgMTIwLCAyNDEsIDg0LCA3NiwgMjE3LCAyMDgsIAotICAgIDI1MCwgMTIwLCAyNDEsIDQ1LCAyMTEsIDkwLCA3NiwgMjExLCAzNCwgMjExLCAyNDUsIDIxMiwgMTIwLCAyMzgsIDMsIDE2NywgCi0gICAgMjMwLCAyNDEsIDIxMywgOTUsIDIxMiwgMTIwLCAxNjcsIDIzMCwgMjQxLCAyMTQsIDE5MSwgMjQ1LCAxODQsIDIxMywgMTI3LCAKLSAgICAyMzAsIDI0MSwgMjQ1LCAxMTEsIDIxMSwgMzUsIDIwOSwgMTM4LCAyMTEsIDEwOCwgMjIwLCAwLCAyMTAsIDg0LCAyNDUsIAotICAgIDIzMiwgMjE5LCAyMjYsIDIxNywgMjI4LCAyMjQsIDIyMywgMjE4LCA3MiwgMjUwLCAxNTYsIDIxNywgMjIyLCAyNDUsIDIzMiwgCi0gICAgMjUwLCAxNzIsIDIyMywgNDEsIDIxMiwgMTcxLCA4LCA2LCAxLCAyMzgsIDExOSwgOCwgNSwgMSwgMjM4LCAxMTksIDI0NiwgCi0gICAgMjAxLCAyNTEsIDgsIDIxMCwgODksIDIxMCwgMjQ4LCAyNDUsIDI0MywgMjEyLCA2OCwgMjI3LCAyMjIsIDIwMCwgMSwgMjI3LCAKLSAgICA2OCwgMjI4LCAxMiwgMSwgMjM5LCAxODcsIDIzOSwgMTc4LCAyMjgsIDEyLCAxLCAyMzksIDE4NywgMjQwLCA2MywgMjI4LCAKLSAgICAxMiwgMSwgMjE1LCAyMjcsIDIyOCwgMTIsIDEsIDIyNywgNDksIDc3LCAxMzEsIDI0OCwgNDUsIDIxMiwgMjM4LCAyMzgsIAotICAgIDgyLCAyMjQsIDE3MywgMjE2LCA2NCwgMjM5LCA4OSwgMjM5LCA4OCwgMjM5LCA4NywgMjIzLCAxODMsIDIwMSwgMjQzLCAKLSAgICAyMDEsIDI0NCwgMjAxLCAyNDYsIDIyNiwgMjQzLCAyMTUsIDIzNSwgMjI2LCAyNDUsIDIxNSwgMjM3LCAyMTksIDM3LCAyMjYsIAotICAgIDI0MiwgMjE1LCAyMzQsIDIyMSwgMjIzLCAyMjQsIDg2LCAyMDQsIDIsIDIyNiwgMjQ0LCAyMTUsIDIzNiwgMjM5LCAxMTEsIAotICAgIDIxOSwgMzYsIDIwNCwgNTIsIDI0MSwgMTA3LCAyMzksIDk5LCAyMjQsIDE1NCwgMjIwLCAzMiwgMjA2LCAxOTQsIDk3LCAKLSAgICAyMjQsIDE1NCwgMjQ0LCAxNDUsIDk3LCA5NiwgMjA4LCA4NCwgNTMsIDMsIDUyLCA4MCwgOTUsIDg2LCAyMDgsIDg0LCA1MywgCi0gICAgMywgNTIsIDgwLCA5NSwgMTEsIDQsIDIzMCwgMTk5LCA4MiwgMjE3LCAyNDEsIDIzOSwgMTU5LCAzNSwgODAsIDUwLCA2MSwgCi0gICAgMjI3LCAxODUsIDE1NSwgMjA1LCAxNjUsIDIwNSwgNTQsIDIwNCwgMjQyLCAyMDQsIDIzMSwgMjA0LCAyMjAsIDIwNCwgMjA5LCAKLSAgICAyMDQsIDE5OCwgMjA0LCAxODcsIDIwNCwgMTc2LCAyMDUsIDE2NCwgMjA1LCAxNTMsIDIwNSwgMTQyLCAyMDUsIDEzMSwgCi0gICAgMjA1LCAxMjAsIDIwNSwgMTA5LCAyMDUsIDk4LCAyNDcsIDEzMCwgMjE5LCAyNDEsIDgyLCAyNDgsIDEzLCAyMDEsIDI0NSwgCi0gICAgOSwgMiwgMjIxLCA1NywgMjA5LCAxNDEsIDksIDIsIDIyMSwgNTcsIDExNSwgMjIxLCA1NywgMjQ3LCAxNjEsIDExNSwgMjQ3LCAKLSAgICAxNjAsIDYwLCAzMSwgMTYsIDIzOSwgMTEwLCAyMTIsIDY0LCAyNDYsIDEwMiwgMjA2LCA2NSwgMjA1LCA4NywgMjA1LCA3NiwgCi0gICAgMjA1LCA2NSwgMjA1LCA1MywgMjA1LCA0MiwgMjA1LCAzMSwgMjA1LCAyMCwgMjA1LCA5LCAyMDQsIDI1NCwgMjA0LCAyNDYsIAotICAgIDIwNCwgMjQ1LCAyMDQsIDI0NCwgMjA0LCAyNDMsIDIwNCwgMjQxLCAyMDQsIDI0MCwgMjA0LCAyMzksIDIwNCwgMjM4LCAKLSAgICAyMDQsIDIzNywgMjA0LCAyMzYsIDIwNCwgMjM1LCAyMDQsIDIzNCwgMjA0LCAyMzMsIDIwNCwgMjMyLCAyMDQsIDIzMCwgCi0gICAgMjA0LCAyMjksIDIwNCwgMjI4LCAyMDQsIDIyNywgMjA0LCAyMjYsIDIwNCwgMjI1LCAyMDQsIDIyNCwgMjA0LCAyMjMsIAotICAgIDIwNCwgMjIyLCAyMDQsIDIyMSwgMjA0LCAyMTksIDIwNCwgMjE4LCAyMDQsIDIxNywgMjA0LCAyMTYsIDIwNCwgMjE1LCAKLSAgICAyMDQsIDIxNCwgMjA0LCAyMTMsIDIwNCwgMjEyLCAyMDQsIDIxMSwgMjA0LCAyMTAsIDIwNCwgMjA4LCAyMDQsIDIwNywgCi0gICAgMjA0LCAyMDYsIDIwNCwgMjA1LCAyMDQsIDIwNCwgMjA0LCAyMDMsIDIwNCwgMjAyLCAyMDQsIDIwMSwgMjA0LCAyMDAsIAotICAgIDIwNCwgMTk5LCAyMDQsIDE5NywgMjA0LCAxOTYsIDIwNCwgMTk1LCAyMDQsIDE5NCwgMjA0LCAxOTMsIDIwNCwgMTkyLCAKLSAgICAyMDQsIDE5MSwgMjA0LCAxOTAsIDIwNCwgMTg5LCAyMDQsIDE4OCwgMjA0LCAxODYsIDIwNCwgMTg1LCAyMDQsIDE4NCwgCi0gICAgMjA0LCAxODMsIDIwNCwgMTgyLCAyMDQsIDE4MSwgMjA0LCAxODAsIDIwNCwgMTc5LCAyMDQsIDE3OCwgMjA0LCAxNzcsIAotICAgIDIwNCwgMTc1LCAyMDQsIDE3NCwgMjA0LCAxNzMsIDIwNCwgMTcyLCAyMDQsIDE3MSwgMjA0LCAxNzAsIDIwNCwgMTY5LCAKLSAgICAyMDQsIDE2OCwgMjA0LCAxNjcsIDIwNCwgMTY2LCAyMDUsIDE2MywgMjA1LCAxNjIsIDIwNSwgMTYxLCAyMDUsIDE2MCwgCi0gICAgMjA1LCAxNTksIDIwNSwgMTU4LCAyMDUsIDE1NywgMjA1LCAxNTYsIDIwNSwgMTU1LCAyMDUsIDE1NCwgMjA1LCAxNTIsIAotICAgIDIwNSwgMTUxLCAyMDUsIDE1MCwgMjA1LCAxNDksIDIwNSwgMTQ4LCAyMDUsIDE0NywgMjA1LCAxNDYsIDIwNSwgMTQ1LCAKLSAgICAyMDUsIDE0NCwgMjA1LCAxNDMsIDIwNSwgMTQxLCAyMDUsIDE0MCwgMjA1LCAxMzksIDIwNSwgMTM4LCAyMDUsIDEzNywgCi0gICAgMjA1LCAxMzYsIDIwNSwgMTM1LCAyMDUsIDEzNCwgMjA1LCAxMzMsIDIwNSwgMTMyLCAyMDUsIDEzMCwgMjA1LCAxMjksIAotICAgIDIwNSwgMTI4LCAyMDUsIDEyNywgMjA1LCAxMjYsIDIwNSwgMTI1LCAyMDUsIDEyNCwgMjA1LCAxMjMsIDIwNSwgMTIyLCAKLSAgICAyMDUsIDEyMSwgMjA1LCAxMTksIDIwNSwgMTE4LCAyMDUsIDExNywgMjA1LCAxMTYsIDIwNSwgMTE1LCAyMDUsIDExNCwgCi0gICAgMjA1LCAxMTMsIDIwNSwgMTEyLCAyMDUsIDExMSwgMjA1LCAxMTAsIDIwNSwgMTA4LCAyMDUsIDEwNywgMjA1LCAxMDYsIAotICAgIDIwNSwgMTA1LCAyMDUsIDEwNCwgMjA1LCAxMDMsIDIwNSwgMTAyLCAyMDUsIDEwMSwgMjA1LCAxMDAsIDIwNSwgOTksIDIwNSwgCi0gICAgOTcsIDIwNSwgOTYsIDIwNSwgOTUsIDIwNSwgOTQsIDIwNSwgOTMsIDIwNSwgOTIsIDIwNSwgOTEsIDIwNSwgOTAsIDIwNSwgCi0gICAgODksIDIwNSwgODgsIDIwNSwgODYsIDIwNSwgODUsIDIwNSwgODQsIDIwNSwgODMsIDIwNSwgODIsIDIwNSwgODEsIDIwNSwgCi0gICAgODAsIDIwNSwgNzksIDIwNSwgNzgsIDIwNSwgNzcsIDIwNSwgNzUsIDIwNSwgNzQsIDIwNSwgNzMsIDIwNSwgNzIsIDIwNSwgCi0gICAgNzEsIDIwNSwgNzAsIDIwNSwgNjksIDIwNSwgNjgsIDIwNSwgNjcsIDIwNSwgNjYsIDIwNSwgNjQsIDIwNSwgNjMsIDIwNSwgCi0gICAgNjIsIDIwNSwgNjEsIDIwNSwgNjAsIDIwNSwgNTksIDIwNSwgNTgsIDIwNSwgNTcsIDIwNSwgNTYsIDIwNSwgNTUsIDIwNSwgCi0gICAgNTIsIDIwNSwgNTEsIDIwNSwgNTAsIDIwNSwgNDksIDIwNSwgNDgsIDIwNSwgNDcsIDIwNSwgNDYsIDIwNSwgNDUsIDIwNSwgCi0gICAgNDQsIDIwNSwgNDMsIDIwNSwgNDEsIDIwNSwgNDAsIDIwNSwgMzksIDIwNSwgMzgsIDIwNSwgMzcsIDIwNSwgMzYsIDIwNSwgCi0gICAgMzUsIDIwNSwgMzQsIDIwNSwgMzMsIDIwNSwgMzIsIDIwNSwgMzAsIDIwNSwgMjksIDIwNSwgMjgsIDIwNSwgMjcsIDIwNSwgCi0gICAgMjYsIDIwNSwgMjUsIDIwNSwgMjQsIDIwNSwgMjMsIDIwNSwgMjIsIDIwNSwgMjEsIDIwNSwgMTksIDIwNSwgMTgsIDIwNSwgCi0gICAgMTcsIDIwNSwgMTYsIDIwNSwgMTUsIDIwNSwgMTQsIDIwNSwgMTMsIDIwNSwgMTIsIDIwNSwgMTEsIDIwNSwgMTAsIDIwNSwgCi0gICAgOCwgMjA1LCA3LCAyMDUsIDYsIDIwNSwgNSwgMjA1LCA0LCAyMDUsIDMsIDIwNSwgMiwgMjA1LCAxLCAyMDUsIDAsIDIwNCwgCi0gICAgMjU1LCAyMDQsIDI1MywgMjA0LCAyNTIsIDIwNCwgMjUxLCAyMDQsIDI1MCwgMjA0LCAyNDksIDIwNCwgMjQ4LCAyMDQsIAotICAgIDI0NywgOCwgNiwgMSwgMzQsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDM0LCAzLCAyMjUsIDE3MSwgCi0gICAgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAyMjcsIDExNSwgNTYsIDgsIDUsIDEsIDE4OCwgMywgODAsIAotICAgIDIyNywgMTE1LCA1NiwgOCwgNiwgMSwgMTg4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAyNTMsIDgsIAotICAgIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDIzNywgMjUzLCA4LCA2LCAxLCAxODgsIDMsIDgwLCAKLSAgICAyMjcsIDExNSwgMjQ4LCAxMjYsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIAotICAgIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAyNDYsIDUzLCAyNSwgMjI1LCAxNzAsIDgsIDUsIDEsIDE4OCwgMywgMjQ2LCA1MywgCi0gICAgMjUsIDIyNSwgMTcwLCA4LCA2LCAxLCAxODgsIDMsIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA1LCAxLCAxODgsIDMsIAotICAgIDI0NiwgNTMsIDI1LCAyNDcsIDI5LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNSwgCi0gICAgMSwgMjM1LCAyMDYsIDMsIDIyNSwgMTcxLCAyNSwgMjM3LCAyNTMsIDgsIDUsIDEsIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAKLSAgICAxNjUsIDgsIDUsIDEsIDIyMiwgMjA2LCAzLCAyMDgsIDIyOCwgNTUsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAKLSAgICA1NiwgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxNTgsIDMsIDgwLCAyMjcsIDExNSwgCi0gICAgMjQ4LCAxMjYsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMTU4LCAzLCA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMjM3LCAKLSAgICAyNTMsIDgsIDYsIDEsIDE1OCwgMywgODAsIDIyNywgMTE1LCAyNDgsIDEyNiwgMjUsIDE2NSwgOCwgNSwgMSwgMTU4LCAzLCAKLSAgICA4MCwgMjI3LCAxMTUsIDI0OCwgMTI2LCAyNSwgMTY1LCA4LCA2LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCAKLSAgICA4LCA1LCAxLCAyMTUsIDk0LCAzLCA4MCwgMjI3LCAxMTUsIDU2LCA4LCA2LCAxLCAxMDYsIDMsIDIyNSwgMTcxLCAyNSwgCi0gICAgMjM3LCAyNTMsIDgsIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMzcsIDI1MywgOCwgNiwgMSwgMzQsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDM0LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAzNCwgMywgMjIwLCA2MywgCi0gICAgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAzNCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAxODgsIDMsIAotICAgIDIyMCwgNjMsIDI1LCAxNjUsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNiwgMSwgMTg4LCAzLCAKLSAgICAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgMjIwLCA2MywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAKLSAgICAxODgsIDMsIDcwLCA4NywgMjUsIDE2NSwgOCwgNSwgMSwgMTg4LCAzLCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDE4OCwgCi0gICAgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIDE4OCwgMywgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDUsIDEsIAotICAgIDIzNSwgMjA2LCAzLCA3MCwgODcsIDI1LCAyMzcsIDI1MywgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDcwLCA4NywgMjUsIDIwOCwgCi0gICAgMjI3LCA4LCA2LCAxLCAyMzUsIDIwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgMjM1LCAyMDYsIDMsIDIyMCwgCi0gICAgNjMsIDI1LCA3MCwgODcsIDI1LCAxNjUsIDgsIDYsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIAotICAgIDUsIDEsIDIzNSwgMjA2LCAzLCAyMjAsIDYzLCAyNSwgNzAsIDg3LCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDIzMCwgMTg1LCAKLSAgICAzLCAyMDgsIDIyNywgOCwgNSwgMSwgMjMwLCAxODUsIDMsIDcwLCA4NywgMjUsIDIwOCwgMjI3LCA4LCA2LCAxLCAyMjgsIAotICAgIDEzMSwgMywgMjA4LCAyMjcsIDgsIDUsIDEsIDIyOCwgMTMxLCAzLCAyMDgsIDIyNywgOCwgNiwgMSwgMjI2LCAxODYsIDMsIAotICAgIDIwOCwgMjI3LCA4LCA1LCAxLCAyMjYsIDE4NiwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIAotICAgIDgsIDUsIDEsIDIxNywgMSwgMywgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjIwLCA2MywgMjUsIDE2NSwgOCwgNSwgMSwgCi0gICAgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMTY1LCA4LCA2LCAxLCAxMDYsIDMsIDIyMCwgNjMsIDI1LCAyMDgsIDIyNywgOCwgNSwgCi0gICAgMSwgMTA2LCAzLCAyMjAsIDYzLCAyNSwgMjA4LCAyMjcsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIAotICAgIDUsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAxNjUsIDgsIDYsIDEsIDEwNiwgMywgMjI1LCAxNzEsIDI1LCAyMDgsIDIyNywgCi0gICAgOCwgNSwgMSwgMTA2LCAzLCAyMjUsIDE3MSwgMjUsIDIwOCwgMjI3LCA4LCA1LCAxLCAyNTEsIDExMCwgMywgMjM3LCAyNTMsIAotICAgIDgsIDUsIDEsIDE3MSwgMTU4LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMTcxLCAxNTgsIDMsIDE2NSwgOCwgNSwgMSwgMjA3LCAKLSAgICAxNzQsIDIwNiwgMTY1LCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjA3LCAxNzQsIDIwNiwgMTY1LCAzLCAxNjUsIDgsIDUsIDEsIAotICAgIDIxNCwgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjE0LCAxOTMsIDMsIDE2NSwgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgCi0gICAgMTkzLCAzLCAyMzcsIDI1MywgOCwgNSwgMSwgMjM2LCAxMTUsIDIxNCwgMTkzLCAzLCAxNjUsIDEwLCAyMTMsIDEyNywgODksIAotICAgIDMsIDIzNywgMTI4LCA4NywgMywgMjUxLCAzMCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDQsIAotICAgIDcwLCAxMCwgMjEzLCAxMjcsIDg5LCAzLCAyMzcsIDEyOCwgODcsIDMsIDEzNywgMjI1LCAxMjksIDEwLCAyMTMsIDEyNywgCi0gICAgODksIDMsIDIzNywgMTI4LCA4NywgMywgMjIwLCA3MywgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAKLSAgICA2OCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyMDIsIDIxMywgMTAsIDIxMywgMTI3LCA4OSwgMywgCi0gICAgMjM3LCAxMjgsIDg3LCAzLCA3NCwgMTAsIDIxMywgMTI3LCA4OSwgMywgMjM3LCAxMjgsIDg3LCAzLCAyNTEsIDEwOSwgMTAsIAotICAgIDIxMywgMTI3LCAyMjEsIDE3OSwgMywgMjI5LCAxODksIDE3OSwgMSwgMjI5LCAxMTksIDQ0LCAxMDksIDIzMCwgNTQsIDQ0LCAKLSAgICAxMDksIDIyMiwgMjA1LCA0NCwgMTA5LCAyNDcsIDEyNSwgNDQsIDEwOSwgMjIxLCAxMywgNDQsIDEwOSwgMjA3LCAyNDQsIAotICAgIDQ0LCAxMDksIDIyMSwgMjI4LCA0NCwgMTA5LCAyMTAsIDY5LCA0NCwgMTA5LCAyMjMsIDE2MywgNDQsIDEwOSwgMjE5LCAKLSAgICAxODQsIDQ0LCAxMDksIDIyNiwgMTg1LCA0NCwgMTA5LCAyMDMsIDEyNCwgNDQsIDEwOSwgMTQ2LCA0NCwgMTA5LCAxNTksIAotICAgIDQ0LCAxMDksIDIwNiwgMTY0LCA0NCwgMTA5LCAyMjcsIDY5LCA0NCwgMTA5LCAyMjcsIDc4LCA0NCwgMTA5LCAyMTUsIDE4NiwgCi0gICAgNDQsIDEwOSwgMjIxLCAyMTAsIDQ0LCAxMDksIDIzMCwgMTg0LCA0NCwgMTA5LCAyMTMsIDkyLCA0NCwgMTA5LCAyMTEsIAotICAgIDE2NywgNDQsIDEwOSwgMTk0LCA0NCwgMTA5LCAyMzcsIDE3MSwgNDQsIDEwOSwgMjI4LCAyMjQsIDQ0LCA0LCAyMzAsIDQxLCAKLSAgICA0NCwgNCwgMjI5LCAxMDAsIDQ0LCA0LCAyMjksIDg3LCA0NCwgNCwgMjI4LCAyMDksIDQ0LCA0LCAyMjgsIDE3NCwgNDQsIDQsIAotICAgIDIyOSwgMjAxLCA0NCwgNCwgMjI5LCAxOTgsIDQ0LCA0LCAyMzAsIDE4LCA0NCwgNCwgMjI5LCAyNiwgNDQsIDQsIDIyOSwgNiwgCi0gICAgNDQsIDQsIDIyOSwgMjE5LCA0NCwgNCwgMjIyLCAyMDIsIDQ0LCA0LCAyMjIsIDE1MSwgNDQsIDQsIDIyMiwgMTQ3LCA0NCwgCi0gICAgNCwgMjIyLCAxMTYsIDQ0LCA0LCAyMjIsIDEwOCwgNDQsIDQsIDIyMiwgMTkwLCA0NCwgNCwgMjIyLCAxODgsIDQ0LCA0LCAKLSAgICAyMjIsIDE5OSwgNDQsIDQsIDIyMiwgMTI4LCA0NCwgNCwgMjIyLCAxMjMsIDQ0LCA0LCAyMjIsIDE5MiwgNDQsIDQsIDI0NywgCi0gICAgOTEsIDQ0LCA0LCAyNDYsIDc5LCA0NCwgNCwgMjQ2LCA2OSwgNDQsIDQsIDI0NSwgMTEwLCA0NCwgNCwgMjQ1LCA3NiwgNDQsIAotICAgIDQsIDI0NiwgMjM4LCA0NCwgNCwgMjQ2LCAyMzAsIDQ0LCA0LCAyNDcsIDgwLCA0NCwgNCwgMjQ1LCAyNTQsIDQ0LCA0LCAKLSAgICAyNDUsIDE4MCwgNDQsIDQsIDI0NywgMTUsIDQ0LCA0LCAyMjEsIDEwLCA0NCwgNCwgMjIwLCAyNDgsIDQ0LCA0LCAyMjAsIAotICAgIDI0MywgNDQsIDQsIDIyMCwgMjI2LCA0NCwgNCwgMjIwLCAyMTgsIDQ0LCA0LCAyMjEsIDEsIDQ0LCA0LCAyMjEsIDAsIDQ0LCAKLSAgICA0LCAyMjEsIDcsIDQ0LCA0LCAyMjAsIDIzMywgNDQsIDQsIDIyMCwgMjMwLCA0NCwgNCwgMjIxLCA0LCA0NCwgNCwgMjA3LCAKLSAgICAyNDAsIDQ0LCA0LCAyMDcsIDIyMCwgNDQsIDQsIDIwNywgMjE5LCA0NCwgNCwgMjA3LCAyMDgsIDQ0LCA0LCAyMDcsIDIwNSwgCi0gICAgNDQsIDQsIDIwNywgMjM2LCA0NCwgNCwgMjA3LCAyMzUsIDQ0LCA0LCAyMDcsIDIzOSwgNDQsIDQsIDIwNywgMjE4LCA0NCwgCi0gICAgNCwgMjA3LCAyMTcsIDQ0LCA0LCAyMDcsIDIzOCwgNDQsIDQsIDIyMSwgMjI2LCA0NCwgNCwgMjIxLCAyMTIsIDQ0LCA0LCAKLSAgICAyMjEsIDIxMSwgNDQsIDQsIDIyMSwgMTk1LCA0NCwgNCwgMjIxLCAxOTQsIDQ0LCA0LCAyMjEsIDIyMiwgNDQsIDQsIDIyMSwgCi0gICAgMjIxLCA0NCwgNCwgMjIxLCAyMjUsIDQ0LCA0LCAyMjEsIDE5NywgNDQsIDQsIDIyMSwgMTk2LCA0NCwgNCwgMjIxLCAyMjQsIAotICAgIDQ0LCA0LCAyMTAsIDE4LCA0NCwgNCwgMjA5LCAyLCA0NCwgNCwgMjA4LCAyNDIsIDQ0LCA0LCAyMDcsIDIwMywgNDQsIDQsIAotICAgIDIwNywgMTY1LCA0NCwgNCwgMjA5LCAxODcsIDQ0LCA0LCAyMDksIDE3NiwgNDQsIDQsIDIwOSwgMjUwLCA0NCwgNCwgMTM1LCAKLSAgICA0NCwgNCwgMjA4LCAxNDgsIDQ0LCA0LCAyMDksIDIwNywgNDQsIDQsIDIyMywgMTA2LCA0NCwgNCwgMjIyLCAxMDAsIDQ0LCAKLSAgICA0LCAyMjIsIDc1LCA0NCwgNCwgMjIxLCA4NCwgNDQsIDQsIDIyMSwgMjUsIDQ0LCA0LCAyMjIsIDI0MCwgNDQsIDQsIDIyMiwgCi0gICAgMjM1LCA0NCwgNCwgMjIzLCA5MiwgNDQsIDQsIDIyMSwgMTkxLCA0NCwgNCwgMjIxLCAxODAsIDQ0LCA0LCAyMjMsIDY1LCAKLSAgICA0NCwgNCwgMjE5LCAxNjgsIDQ0LCA0LCAyMTgsIDE2NywgNDQsIDQsIDIxOCwgMTI5LCA0NCwgNCwgMjE3LCAxOTEsIDQ0LCAKLSAgICA0LCAyMTcsIDE1NywgNDQsIDQsIDIxOSwgMzQsIDQ0LCA0LCAyMTksIDIzLCA0NCwgNCwgMjE5LCAxNDgsIDQ0LCA0LCAyMTgsIAotICAgIDY5LCA0NCwgNCwgMjE4LCA0NSwgNDQsIDQsIDIxOSwgNDgsIDQ0LCA0LCAyMjUsIDE3NSwgNDQsIDQsIDIyNCwgMTU1LCA0NCwgCi0gICAgNCwgMjI0LCAxMjUsIDQ0LCA0LCAyMjMsIDI0NiwgNDQsIDQsIDIyMywgMTkyLCA0NCwgNCwgMjI1LCAyMCwgNDQsIDQsIAotICAgIDIyNSwgOCwgNDQsIDQsIDIyNSwgMTQwLCA0NCwgNCwgMjI0LCA4MiwgNDQsIDQsIDIyNCwgMzUsIDQ0LCA0LCAyMjUsIDY3LCAKLSAgICA0NCwgNCwgMjAzLCAxMTAsIDQ0LCA0LCAyMDMsIDExLCA0NCwgNCwgMjAzLCAyLCA0NCwgNCwgMjAyLCAyMTMsIDQ0LCA0LCAKLSAgICAyMDIsIDE4MSwgNDQsIDQsIDIwMywgNTIsIDQ0LCA0LCAyMDMsIDQ5LCA0NCwgNCwgMjAzLCA4OSwgNDQsIDQsIDIwMiwgCi0gICAgMjQ3LCA0NCwgNCwgMjAyLCAyMzIsIDQ0LCA0LCAyMDMsIDYyLCA0NCwgNCwgMjE2LCAyMTYsIDQ0LCA0LCAyMTYsIDU3LCAKLSAgICA0NCwgNCwgMjE2LCAzLCA0NCwgNCwgMjE1LCAxNDUsIDQ0LCA0LCAyMTUsIDExNCwgNDQsIDQsIDIxNiwgMTU4LCA0NCwgNCwgCi0gICAgMjE2LCAxMzUsIDQ0LCA0LCAyMTYsIDE5NywgNDQsIDQsIDIxNSwgMjI3LCA0NCwgNCwgMjE1LCAyMDgsIDQ0LCA0LCAyMTYsIAotICAgIDE2NywgNDQsIDQsIDIyOCwgMTEyLCA0NCwgNCwgMjI3LCAxNDgsIDQ0LCA0LCAyMjcsIDEzMCwgNDQsIDQsIDIyNiwgMjM5LCAKLSAgICA0NCwgNCwgMjI2LCAyMTAsIDQ0LCA0LCAyMjcsIDIzNCwgNDQsIDQsIDIyNywgMjI2LCA0NCwgNCwgMjI4LCA4NiwgNDQsIDQsIAotICAgIDIyNywgNDksIDQ0LCA0LCAyMjcsIDE4LCA0NCwgNCwgMjI3LCAyNTEsIDQ0LCA0LCAyMDYsIDg1LCA0NCwgNCwgMjA1LCAKLSAgICAyMzAsIDQ0LCA0LCAyMDUsIDIxNSwgNDQsIDQsIDIwNCwgMTYzLCA0NCwgNCwgMjA0LCAxNTYsIDQ0LCA0LCAyMDYsIDU1LCAKLSAgICA0NCwgNCwgMjA2LCA1MCwgNDQsIDQsIDIwNiwgODEsIDQ0LCA0LCAyMDUsIDE4OSwgNDQsIDQsIDIwNSwgMTc2LCA0NCwgNCwgCi0gICAgMjA2LCA2MSwgNDQsIDQsIDIyNywgNjcsIDQ0LCA0LCAyMjcsIDYyLCA0NCwgNCwgMjI3LCA2MSwgNDQsIDQsIDIyNywgNTgsIAotICAgIDQ0LCA0LCAyMjcsIDU3LCA0NCwgNCwgMjI3LCA2NCwgNDQsIDQsIDIyNywgNjMsIDQ0LCA0LCAyMjcsIDY2LCA0NCwgNCwgCi0gICAgMjI3LCA2MCwgNDQsIDQsIDIyNywgNTksIDQ0LCA0LCAyMjcsIDY1LCA0NCwgNCwgMjI3LCA3NiwgNDQsIDQsIDIyNywgNzEsIAotICAgIDQ0LCA0LCAyMjcsIDcwLCA0NCwgNCwgMjI3LCA1NCwgNDQsIDQsIDIyNywgNTMsIDQ0LCA0LCAyMjcsIDczLCA0NCwgNCwgCi0gICAgMjI3LCA3MiwgNDQsIDQsIDIyNywgNzUsIDQ0LCA0LCAyMjcsIDU2LCA0NCwgNCwgMjI3LCA1NSwgNDQsIDQsIDIyNywgNzQsIAotICAgIDQ0LCA0LCAyMTUsIDE4NCwgNDQsIDQsIDIxNSwgMTczLCA0NCwgNCwgMjE1LCAxNzIsIDQ0LCA0LCAyMTUsIDE2NSwgNDQsIAotICAgIDQsIDIxNSwgMTU4LCA0NCwgNCwgMjE1LCAxODAsIDQ0LCA0LCAyMTUsIDE3OSwgNDQsIDQsIDIxNSwgMTgzLCA0NCwgNCwgCi0gICAgMjE1LCAxNzEsIDQ0LCA0LCAyMTUsIDE3MCwgNDQsIDQsIDIxNSwgMTgyLCA0NCwgNCwgMjIxLCAyMDgsIDQ0LCA0LCAyMjEsIAotICAgIDIwMywgNDQsIDQsIDIyMSwgMjAyLCA0NCwgNCwgMjIxLCAxOTksIDQ0LCA0LCAyMjEsIDE5OCwgNDQsIDQsIDIyMSwgMjA1LCAKLSAgICA0NCwgNCwgMjIxLCAyMDQsIDQ0LCA0LCAyMjEsIDIwNywgNDQsIDQsIDIyMSwgMjAxLCA0NCwgNCwgMjIxLCAyMDAsIDQ0LCAKLSAgICA0LCAyMjEsIDIwNiwgNDQsIDQsIDIzMCwgMTgwLCA0NCwgNCwgMjMwLCAxNDEsIDQ0LCA0LCAyMzAsIDEzNCwgNDQsIDQsIAotICAgIDIzMCwgODIsIDQ0LCA0LCAyMzAsIDY0LCA0NCwgNCwgMjMwLCAxNjEsIDQ0LCA0LCAyMzAsIDE1OSwgNDQsIDQsIDIzMCwgCi0gICAgMTc0LCA0NCwgNCwgMjMwLCAxMDEsIDQ0LCA0LCAyMzAsIDkxLCA0NCwgNCwgMjMwLCAxNjcsIDQ0LCA0LCAyMTMsIDg1LCAKLSAgICA0NCwgNCwgMjEzLCAxMSwgNDQsIDQsIDIxMywgNiwgNDQsIDQsIDIxMiwgMTk5LCA0NCwgNCwgMjEyLCAxODIsIDQ0LCA0LCAKLSAgICAyMTMsIDQzLCA0NCwgNCwgMjEzLCA0MSwgNDQsIDQsIDIxMywgNzQsIDQ0LCA0LCAyMTIsIDI0MiwgNDQsIDQsIDIxMiwgCi0gICAgMjM2LCA0NCwgNCwgMjEzLCA1MiwgNDQsIDQsIDIxMSwgMTYzLCA0NCwgNCwgMjExLCAxMzIsIDQ0LCA0LCAyMTEsIDEyOCwgCi0gICAgNDQsIDQsIDIxMSwgMTE5LCA0NCwgNCwgMjExLCAxMTYsIDQ0LCA0LCAyMTEsIDEzOCwgNDQsIDQsIDIxMSwgMTM3LCA0NCwgCi0gICAgNCwgMjExLCAxNjIsIDQ0LCA0LCAyMTEsIDEyNCwgNDQsIDQsIDIxMSwgMTIzLCA0NCwgNCwgMjExLCAxNDAsIDQ0LCA0LCAKLSAgICAyMTUsIDMzLCA0NCwgNCwgMjEyLCAxNjIsIDQ0LCA0LCAyMTIsIDE0MiwgNDQsIDQsIDIxMSwgMTAsIDQ0LCA0LCAyMTAsIAotICAgIDE3OSwgNDQsIDQsIDIxNCwgMTc3LCA0NCwgNCwgMjE0LCAxNjUsIDQ0LCA0LCAyMTUsIDE4LCA0NCwgNCwgMjEyLCAxMywgCi0gICAgNDQsIDQsIDIxMSwgMjUwLCA0NCwgNCwgMjE0LCAyMTcsIDQ0LCA0LCAyMzcsIDE1NywgNDQsIDQsIDIzNywgMywgNDQsIDQsIAotICAgIDIzNiwgMjM5LCA0NCwgNCwgMjM2LCAyNiwgNDQsIDQsIDIzNiwgMSwgNDQsIDQsIDIzNywgNjcsIDQ0LCA0LCAyMzcsIDQ4LCAKLSAgICA0NCwgNCwgMjM3LCAxNDcsIDQ0LCA0LCAyMzYsIDEzNiwgNDQsIDQsIDIzNiwgMTE3LCA0NCwgNCwgMjM3LCA3NiwgNDQsIDQsIAotICAgIDIyOCwgMjIzLCA0NCwgNCwgMjI4LCAyMjIsIDQ0LCA0LCAyMjgsIDIxNywgNDQsIDQsIDIyOCwgMjE2LCA0NCwgNCwgMjI4LCAKLSAgICAyMTMsIDQ0LCA0LCAyMjgsIDIxMiwgNDQsIDQsIDIyOCwgMjE5LCA0NCwgNCwgMjI4LCAyMTgsIDQ0LCA0LCAyMjgsIDIyMSwgCi0gICAgNDQsIDQsIDIyOCwgMjE1LCA0NCwgNCwgMjI4LCAyMTQsIDQ0LCA0LCAyMjgsIDIyMCwgNDQsIDQsIDIxMiwgMjA1LCAxNDAsIAotICAgIDEwOSwgMiwgMjAzLCA3NSwgMTQwLCAxMDksIDIsIDIxNiwgMTg2LCAxNDAsIDEwOSwgMiwgMjE2LCAxMDIsIDExNCwgMSwgCi0gICAgMjA3LCA5NSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDE3MywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTQ0LCA4NSwgCi0gICAgMTA5LCAyLCAyNDUsIDI0OSwgMjI5LCAyNiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyOSwgMTE1LCA4NSwgMTA5LCAyLCAKLSAgICAyNDUsIDI0OSwgMjIyLCAxMjgsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDcsIDkyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgCi0gICAgMjQ2LCAxOTksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDUsIDI1NCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDI0NiwgMTE2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjIwLCAyMzMsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyNDQsIDIxMiwgODUsIDEwOSwgCi0gICAgMiwgMjQ1LCAyNDksIDIwNywgMjI5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjQzLCAxMTMsIDg1LCAxMDksIDIsIDI0NSwgCi0gICAgMjQ5LCAyMDcsIDIyNCwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwMSwgMjAxLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjEwLCAKLSAgICAyMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIwOSwgMTA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTM1LCA4NSwgMTA5LCAKLSAgICAyLCAyNDUsIDI0OSwgMjA5LCA0NywgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIyMSwgMTkxLCA4NSwgMTA5LCAyLCAyNDUsIAotICAgIDI0OSwgMjQ5LCAzMiwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMjA4LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE4LCAKLSAgICA2OSwgODUsIDEwOSwgMiwgMjQ1LCAyNDksIDIxOCwgMTgwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI0LCA4MiwgODUsIAotICAgIDEwOSwgMiwgMjQ1LCAyNDksIDIwMiwgMjQ3LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjE1LCAyMjcsIDg1LCAxMDksIDIsIAotICAgIDI0NSwgMjQ5LCAyMjcsIDQ5LCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjA1LCAxODksIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAKLSAgICAyMTMsIDkwLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjExLCAxNjQsIDg1LCAxMDksIDIsIDI0NSwgMjQ5LCAyMTUsIDM2LCAKLSAgICA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMTUyLCA4NSwgMTA5LCAyLCAyNDUsIDI0OSwgMjI4LCAxMTMsIDg1LCAyMiwgMiwgCi0gICAgMjQ1LCAyNDksIDIxNywgMTI2LCA4NSwgMjMxLCAzNiwgMjIsIDIsIDI0NSwgMjQ5LCAyMTcsIDY1LCA4NSwgMjMxLCAzNiwgCi0gICAgMjIsIDIsIDI0NSwgMjQ5LCAyMTUsIDEwMiwgODUsIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE1LCA5NSwgODUsIAotICAgIDIzMSwgMzYsIDIyLCAyLCAyNDUsIDI0OSwgMjE3LCAxMDYsIDg1LCAyMiwgMiwgMjIwLCAzOSwgODUsIDIyLCAyLCAyNTEsIAotICAgIDI0MiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDIwMywgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE1MSwgMTcyLCAxLCAyNDgsIAotICAgIDc5LCAyMjIsIDExNiwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDE5MCwgMTcyLCAxLCAyNDgsIDc5LCAyMjIsIDEyOCwgNjcsIAotICAgIDEsIDI0OCwgNzksIDIyMiwgMjAzLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxNTEsIDY3LCAxLCAyNDgsIDc5LCAyMjIsIDExNiwgCi0gICAgNjcsIDEsIDI0OCwgNzksIDIyMiwgMTkwLCA2NywgMSwgMjQ4LCA3OSwgMjIyLCAxMjgsIDY3LCAxLCAyNTEsIDU3LCAyNDYsIAotICAgIDIzOCwgNjcsIDEsIDI1MSwgNTcsIDIwNywgMjAzLCA2NywgMSwgMjUxLCA1NywgMTM1LCA2NywgMSwgMjUxLCA1NywgMjE5LCAKLSAgICAxODQsIDY1LCAxLCAyNDAsIDE5OCwgMjQwLCAxOTcsIDI0NSwgMTg4LCAxNDMsIDE0MiwgNjUsIDEsIDI0MCwgMTk3LCAyNDAsIAotICAgIDE5OCwgMjQ1LCAxODgsIDE0MywgMTQyLCAKKyAgICAwLCAyMDgsIDI0NCwgMjM4LCA0MywgODEsIDIxNCwgNjMsIDgxLCA0MSwgNTQsIDI0MCwgMTk0LCA1NCwgMjE2LCAyNywgNTQsIAorICAgIDI1MSwgODksIDI1MSwgMTMsIDQ5LCAyMTYsIDExNSwgNTEsIDIxNiwgMTE1LCAyNTAsIDE2NSwgOTMsIDU0LCAyNDYsIDcwLCAKKyAgICAyMzMsIDMyLCAyMzYsIDE4MywgMjA4LCA3NiwgMjA5LCAxNiwgMTcsIDE5OSwgODEsIDE3LCAxMDIsIDE3LCAxMDUsIDE3LCAKKyAgICAxNDcsIDE3LCAxNDksIDE3LCAxNjQsIDE3LCAxODcsIDE3LCAyMTAsIDEzNSwgMTcsIDE5MiwgMTcsIDIxOSwgMTEzLCAyNDYsIAorICAgIDc5LCAyMTAsIDE2NywgMjI0LCAyNDEsIDU0LCAyMzgsIDEyMiwgNTQsIDIzNSwgNjcsIDU0LCAyMTQsIDc5LCA4MSwgMjQ2LCAKKyAgICA2OCwgMjUwLCAxNTUsIDgsIDYsIDEsIDYyLCA4LCA2LCAxLCAyNTAsIDEwMywgOCwgNiwgMSwgMjQ3LCAyMjMsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCA4LCA2LCAxLCA3MiwgOCwgNiwgMSwgMjM4LCA1LCA4LCA2LCAxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjM0LCAKKyAgICAyNDcsIDgsIDYsIDEsIDcwLCA4LCA2LCAxLCAyMjcsIDI1MSwgOCwgNiwgMSwgMjI3LCAxMTgsIDgsIDYsIDEsIDE1NiwgOCwgCisgICAgNiwgMSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE0LCA4LCA2LCAxLCA3NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDgsIDYsIAorICAgIDEsIDIxNCwgMTY3LCA4LCA2LCAxLCAxNDYsIDgsIDYsIDEsIDIxMiwgMTIyLCA4LCA2LCAxLCAyMDcsIDgzLCA4LCA2LCAxLCAKKyAgICA2NiwgOCwgNiwgMSwgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMSwgMTQ3LCA4LCA2LCAxLCAyMDAsIDE5NSwgOCwgNiwgMSwgCisgICAgMjAwLCAxMjMsIDgsIDYsIDEsIDE5OSwgMTU3LCA0OSwgNTIsIDE1OSwgMjEzLCAxMDYsIDIwOSwgMTYsIDUxLCA1MiwgMTU5LCAKKyAgICAyNDYsIDE0NywgMjUxLCAyNTEsIDEyOCwgMjI0LCAxNzYsIDIzNSwgNzQsIDI1MSwgMjUxLCA4LCA0LCAxLCA2MiwgOCwgNCwgCisgICAgMSwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NywgMjIzLCA4LCA0LCAxLCAyNDIsIDE1MywgOCwgNCwgMSwgNzIsIDgsIDQsIDEsIAorICAgIDIzOCwgNSwgOCwgNCwgMSwgMjM2LCAxNTYsIDgsIDQsIDEsIDIzNCwgMjQ3LCA4LCA0LCAxLCA3MCwgOCwgNCwgMSwgMjI3LCAKKyAgICAyNTEsIDgsIDQsIDEsIDIyNywgMTE4LCA4LCA0LCAxLCAxNTYsIDgsIDQsIDEsIDIyMywgMjQzLCA4LCA0LCAxLCAyMjAsIAorICAgIDIxNCwgOCwgNCwgMSwgNzQsIDgsIDQsIDEsIDIxNiwgMjI2LCA4LCA0LCAxLCAyMTQsIDE2NywgOCwgNCwgMSwgMTQ2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMiwgOCwgNCwgMSwgMjA3LCA4MywgOCwgNCwgMSwgNjYsIDgsIDQsIDEsIDIwMywgMTY4LCA4LCA0LCAKKyAgICAxLCAyMDEsIDE0NywgOCwgNCwgMSwgMjAwLCAxOTUsIDgsIDQsIDEsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIDE1NywgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDgzLCAyMjQsIDE3NiwgNTEsIDI0MiwgMTk2LCAxNTksIDIwNSwgMjQwLCAyMTgsIDI0MCwgMjA4LCAKKyAgICAyNDQsIDIyOCwgNTAsIDIzOCwgNDMsIDgxLCAyNDcsIDU4LCA1NCwgMjE1LCA1NiwgNTQsIDI0MiwgMTk1LCA1NCwgMjAwLCAKKyAgICA0MiwgNTQsIDI0OCwgNDYsIDE0OCwgMjExLCAxOTMsIDU0LCAyNDEsIDc0LCAyNDMsIDE5LCA1NCwgMjM3LCAxMjgsIDIxNywgCisgICAgMjksIDIyOCwgOTksIDIyNSwgMjMsIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjE4LCAyMTUsIDU0LCAyMDksIDIzLCAKKyAgICAyMzMsIDMzLCAyMTMsIDE2MSwgNTQsIDIyMiwgMjI4LCAyNDEsIDE1NSwgNTQsIDIxNSwgMTEyLCA1NCwgMjA3LCAyMTMsIAorICAgIDEwNSwgMjA3LCAyMTMsIDE0NywgMjUxLCAyMzksIDI1MSwgMjUxLCAyMjEsIDIwOSwgNTQsIDIxNSwgMTYzLCA1NCwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMjQ3LCA2OSwgMjA3LCAyMTMsIDEwMiwgMjIyLCAxMzYsIDIxNywgMjksIDIyOCwgOTksIDIxMywgNDEsIAorICAgIDUzLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDIwMSwgMTY0LCAKKyAgICAyMzYsIDIxOSwgMTEyLCAyMzQsIDIxMywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIyOCwgNTAsIDIxNCwgCisgICAgNzksIDgxLCA4LCA2LCAxLCAzNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDE2OSwgOCwgNiwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAzNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAzNSwgCisgICAgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDI1MSwgMjIxLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCA2OSwgOCwgNiwgCisgICAgMSwgMTk3LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMTk3LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAxNjksIDgsIDYsIDEsIDIzMywgMTksIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc0LCA4LCA2LCAKKyAgICAxLCAyMzgsIDc0LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjM1LCA3MywgOCwgCisgICAgNiwgMSwgMTYzLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgMjIxLCAxOSwgNTQsIDgsIDYsIDEsIDE2MywgMywgOTcsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjM1LCA3MywgOCwgNiwgMSwgMTA4LCAzLCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDEwOCwgMywgMjQxLCA3NCwgOCwgNiwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNiwgMSwgMjA2LCA1NCwgOCwgNCwgMSwgCisgICAgMjEwLCA3OSwgMjEyLCAxMjIsIDgsIDQsIDEsIDM1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAzNSwgMywgMTY5LCA4LCA0LCAxLCAKKyAgICAzNSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDM1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIDI0MSwgNzQsIDgsIDQsIAorICAgIDEsIDM1LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMjUxLCAyMjEsIDgsIDQsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA0LCAxLCAxOTcsIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDE5NywgMywgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgCisgICAgMTQ2LCA4LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIAorICAgIDIzMywgMTksIDMsIDE2OSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIzMywgMTksIDMsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDIzOCwgNzQsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTYzLCAKKyAgICAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAyNDAsIDIzNSwgNTQsIDgsIDQsIDEsIDE2MywgMywgOTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMTA4LCAzLCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjQ2LCAKKyAgICAxNDYsIDgsIDQsIDEsIDEwOCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDE2OSwgOCwgNCwgMSwgMjA2LCAKKyAgICA1NCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIAorICAgIDM1LCAzLCAyMTcsIDExMCwgOCwgNCwgMSwgMzUsIDMsIDIxNywgMTEwLCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCAKKyAgICA0LCAxLCAyNDcsIDIyNCwgMywgMTY5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQ3LCAyMjQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAxMjUsIDgsIDYsIAorICAgIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyNDIsIAorICAgIDE1NCwgMywgOTcsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCA5NywgOCwgNiwgMSwgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMTk3LCAzLCAyMjIsIDIyOCwgOCwgNiwgMSwgMTk3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0OCwgNTcsIDgsIAorICAgIDYsIDEsIDE5NywgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMCwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMCwgOCwgNiwgMSwgMTk3LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyNDcsIDEyNSwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ2LCAxNDYsIAorICAgIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzYsIDE1NywgMywgMjQ4LCA1NywgOCwgNiwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMjQ2LCAxNDYsIAorICAgIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDYsIDE0NiwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIDk3LCA4LCA0LCAxLCAyMzQsIAorICAgIDI0OCwgMywgOTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMDUsIDI0MCwgCisgICAgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDgsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAKKyAgICAyMTcsIDExMCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMjQwLCAxODEsIDcwLCA4LCA2LCAzMywgMjI4LCAxNDksIDgsIDQsIDMzLCAyMjgsIDE0OSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTIsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAKKyAgICAyNDcsIDY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCA2OSwgOCwgNCwgMSwgMjI2LCAzNywgOCwgNiwgMSwgMjI1LCAKKyAgICAxOTMsIDMsIDE2OSwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDE2OSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NywgNjksIDgsIAorICAgIDQsIDEsIDIyNSwgMTkzLCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEwMSwgMjQwLCAxODIsIDgsIDQsIDEsIDIyNSwgMTkzLCAKKyAgICAzLCAxMDEsIDI0MCwgMTgyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgOTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA5NywgOCwgCisgICAgNiwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDE2OSwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDI0NywgNjksIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgMjQ3LCAxMjUsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjIwLCAyMTUsIDIxNSwgMzAsIDI0NywgMjM1LCAKKyAgICAyNTEsIDEzLCA4LCA2LCAxLCAyMzgsIDE2NSwgOCwgNCwgMSwgMjM4LCAxNjUsIDgsIDYsIDEsIDE2MywgMywgMjIyLCAyMjgsIAorICAgIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjQ4LCA1NywgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyNDgsIDU3LCA4LCA2LCAxLCAxNjMsIDMsIDUzLCAxNjksIDgsIDQsIDEsIDE2MywgMywgNTMsIDE2OSwgOCwgNiwgMzMsIAorICAgIDIxNywgMTIxLCA4LCA0LCAzMywgMjE3LCAxMjEsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDE2OSwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMTY5LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyNDcsIDY5LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjE0LCAzMywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIxMiwgCisgICAgMTIzLCAzLCAxNjksIDgsIDQsIDEsIDIxMiwgMTIzLCAzLCAxNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDYsIDE0NiwgCisgICAgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgMTQ2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjQ3LCA2OSwgOCwgNCwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI0NywgNjksIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjEyLCAxMjMsIAorICAgIDMsIDI0NywgMTI1LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDY5LCAKKyAgICA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIAorICAgIDIwNywgODQsIDMsIDk3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCA5NywgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNCwgCisgICAgMSwgMTA4LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDgsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDI0OCwgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjEzLCAyNywgNTYsIDgsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgOCwgCisgICAgNCwgMSwgMTA4LCAzLCA1MywgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTEwLCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgCisgICAgMTEwLCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgMjQ2LCAxNDYsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDYsIDE0NiwgOCwgCisgICAgNiwgMSwgMjAwLCAxMjQsIDMsIDI0NiwgMTQ2LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjQ2LCAxNDYsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCAyNDEsIDc0LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgMTY5LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgCisgICAgMTY5LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAxOTksIDE1OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMTY4LCAyMTIsIAorICAgIDEyMiwgOCwgNCwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCA2OCwgMywgMTE3LCA4LCA2LCAxLCA2OCwgMywgMjA1LCAxNTUsIAorICAgIDgsIDQsIDEsIDY4LCAzLCAyMDUsIDE1NSwgOCwgNiwgMSwgMTUwLCAxODcsIDgsIDQsIDEsIDE1MCwgMTg3LCA4LCA2LCAxLCAKKyAgICAxNzYsIDc0LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTE3LCA4LCA2LCAxLCAKKyAgICAyNTEsIDE5NiwgMjQyLCAxNTMsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAxMTcsIDgsIDYsIDEsIDI0MiwgMTU0LCAzLCAyMDUsIAorICAgIDE1NSwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNSwgMTU1LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjQxLCAxMzYsIDgsIDYsIAorICAgIDEsIDIxMywgMTA1LCA3MiwgOCwgNiwgMSwgMjExLCAyMTgsIDgsIDYsIDEsIDE3NiwgNzIsIDgsIDYsIDEsIDIzOCwgNiwgMywgCisgICAgMTE3LCA4LCA0LCAxLCAyMzgsIDYsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDExNywgOCwgNiwgMSwgMjM2LCAKKyAgICA2MCwgOCwgNCwgMSwgMjMzLCA2OSwgOCwgNiwgMSwgMjI4LCA0MSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDYsIDEsIAorICAgIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAxMTcsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAxNDgsIAorICAgIDgsIDQsIDEsIDIyNSwgODksIDMsIDk3LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDYsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTY4LCA1MSwgMjI1LCAxNiwgOCwgNiwgMSwgMTYzLCAzLCAxMDEsIAorICAgIDIwNSwgMjQwLCA4LCA2LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI0LCA4LCA2LCAxLCAKKyAgICAyMTcsIDEwNSwgOCwgNCwgMSwgMjE3LCAxMDUsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAxMTcsIDgsIDQsIDEsIDIxNiwgCisgICAgMjI3LCAzLCAxMTcsIDgsIDEsIDE5OSwgMjE0LCA4LCA2LCAxLCAxNTAsIDEwNSwgOCwgNCwgMSwgMTUwLCAxMDUsIDgsIDYsIAorICAgIDEsIDIzOCwgOTQsIDgsIDEsIDIxMywgMTA1LCAyMzgsIDk1LCAyMjQsIDc0LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyMTYsIAorICAgIDE4NCwgMTE3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAxMTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIDExNywgOCwgNiwgMSwgCisgICAgMjA3LCA4NCwgMywgMjEzLCAxMTEsIDExNywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDEyNCwgOCwgNCwgMSwgMTA4LCAzLCAKKyAgICAyMzMsIDEyNCwgOCwgNiwgMSwgMjAzLCAyMjAsIDgsIDYsIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDYsIDEsIDIwMCwgCisgICAgMTI0LCAzLCAxMTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAxMTcsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMTk5LCAxNTgsIDMsIDk3LCA4LCA2LCAxLCAyMzgsIDgsIDgsIDYsIDEsIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIAorICAgIDIzOCwgOSwgMjEzLCAxMDQsIDgsIDQsIDEsIDIzOCwgOSwgMywgMjA3LCA2LCA4LCAxLCAxMjAsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAxNTAsIDE2NCwgOCwgNCwgMSwgMTUwLCAxNjQsIDgsIDEsIDIyOCwgNTAsIDIzNSwgMTIzLCAyMDgsIDc3LCAzLCA5NywgOCwgCisgICAgMSwgMjAwLCAxOTgsIDgsIDEsIDI0MSwgMTI5LCAyNDYsIDEyMSwgOCwgMSwgMjI1LCA2MSwgMjQ2LCAxMjEsIDgsIDEsIAorICAgIDI1MSwgMTAyLCAyNDYsIDEyMSwgOCwgMSwgMjEzLCAxMTEsIDI0NiwgMTIxLCA4LCA2LCAxLCAyMzksIDk1LCAzLCAyNDcsIAorICAgIDEyNSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDQsIDEsIDE5OSwgMTU4LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjM5LCA5NSwgCisgICAgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNCwgMSwgMjI3LCAyNTEsIDgsIAorICAgIDQsIDEsIDIyNCwgMTQyLCA4LCA2LCAxLCAyMTksIDk5LCA4LCA2LCAxLCAyMjAsIDIxNSwgMywgNCwgMSwgMjI3LCAyNTEsIAorICAgIDgsIDQsIDEsIDIxOSwgOTksIDgsIDYsIDEsIDM1LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMzUsIDMsIDI0NywgMTI1LCA4LCAKKyAgICA2LCAxLCAyMzMsIDE5LCAzLCAyNDcsIDEyNSwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgCisgICAgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDE2MywgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAKKyAgICAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA0LCAKKyAgICAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgMjQxLCA3NSwgMjYsIDI0NywgMTI1LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDI0MSwgNzUsIDI2LCAyNDcsIDEyNSwgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCAKKyAgICA3MywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjA0LCAxODUsIDcyLCA4LCA2LCAKKyAgICAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCA4LCA0LCAxLCAzNSwgMywgMjQxLCA3NSwgMjYsIDIyMiwgMjI4LCAKKyAgICA4LCA2LCAxLCAzNSwgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDM1LCAzLCA3MywgODgsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNiwgMSwgMjUxLCAyMjIsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyNTEsIDIyMiwgMywgMjIyLCAyMjgsIDgsIAorICAgIDYsIDEsIDIzNiwgMTU3LCAzLCA5NywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIDk3LCA4LCA2LCAxLCAyMzYsIDE1NywgMywgCisgICAgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjI3LCAxMTksIDMsIDI0NywgMTI1LCAKKyAgICA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTAsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjE3LCAxMTAsIDgsIDYsIDEsIDE2MywgMywgMjE3LCAxMTEsIDI2LCAyMjIsIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAKKyAgICAyMTcsIDExMSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzgsIDksIDMsIDI0NywgMTI1LCA4LCA0LCAxLCAyMzgsIDksIDMsIAorICAgIDI0NywgMTI1LCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgMjQ3LCAxMjUsIDgsIDYsIDEsIDIzOSwgOTQsIDgsIDYsIDEsIDI0MiwgCisgICAgMTU0LCAzLCA0LCAxLCAxOTksIDE1NywgOCwgNCwgMSwgMjM5LCA5NCwgOCwgNiwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgCisgICAgNCwgMSwgMjM2LCAxNTcsIDMsIDE2OSwgOCwgNiwgMSwgMjMzLCA2NiwgOCwgNiwgMSwgMjAwLCAxOTgsIDgsIDYsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIxMywgCisgICAgMjcsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgODgsIDI2LCAxNjksIDgsIDYsIDEsIDI1MSwgMjIyLCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDI1MSwgMjIyLCAzLCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjA4LCA0NywgMjYsIDE2OSwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyMDgsIDQ3LCAyNiwgMTY5LCA4LCA2LCAxLCAzNSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA1MywgMjM1LCA3MywgOCwgNiwgMSwgMzUsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDM1LCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDUzLCAyMzUsIDczLCAKKyAgICA4LCA2LCAxLCAxOTcsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgCisgICAgNiwgMSwgMjMzLCAxOSwgMywgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCAKKyAgICA2LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxNjMsIDMsIAorICAgIDIyOCwgNTAsIDI0OCwgNTcsIDgsIDQsIDEsIDE2MywgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjE0LCAzMywgMywgCisgICAgNTMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjgsIAorICAgIDUwLCAyNDgsIDU3LCA4LCA0LCAxLCAyMTQsIDMzLCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA4LCA2LCAxLCAxMDgsIDMsIDUzLCAKKyAgICAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDUzLCAyMzUsIDczLCA4LCA2LCAxLCAxMDgsIDMsIDIyOCwgNTAsIDI0OCwgNTcsIAorICAgIDgsIDQsIDEsIDEwOCwgMywgMjI4LCA1MCwgMjQ4LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDI0NiwgNzEsIDU3LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgMjQ2LCA3MSwgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0NiwgNzEsIDU3LCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyNDYsIDcxLCA1NywgOCwgNiwgMSwgMTk5LCAyMzIsIDgsIDQsIDEsIDE5OSwgMjMyLCA4LCA2LCAKKyAgICAxLCAyMzQsIDI0OCwgMywgMjQ3LCAxMjUsIDgsIDQsIDEsIDIzNCwgMjQ4LCAzLCAyNDcsIDEyNSwgOCwgNiwgMSwgMjIwLCAKKyAgICAyMTUsIDMsIDE2OCwgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDIsIDE5OCwgOCwgNiwgMSwgMjE3LCAKKyAgICAzLCA4LCA0LCAxLCAyMTcsIDMsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIDgsIDQsIDEsIDE5OSwgMTU4LCAzLCAxMTcsIAorICAgIDgsIDYsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDQsIDEsIDM1LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjQ3LCA2OSwgCisgICAgOCwgNCwgMSwgMTk3LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAxNjMsIDMsIDI0MSwgNzUsIDI2LCAyMjIsIDIyOCwgOCwgNCwgCisgICAgMSwgMTYzLCAzLCAyNDEsIDc1LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyMjIsIAorICAgIDIyOCwgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAxNjMsIDMsIDczLCA1NiwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCA3MywgNTYsIDgsIDYsIDEsIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIAorICAgIDE2MywgMywgNzMsIDg4LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjQsIDMsIDIyMiwgMjI4LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIyMCwgMjE1LCAKKyAgICAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDI0MCwgMTgxLCAyMjcsIDI1MSwgCisgICAgOCwgNCwgMSwgMjQxLCAyMzAsIDI0MSwgMzQsIDgsIDQsIDEsIDIxNCwgOTgsIDI0MSwgMzQsIDgsIDYsIDEsIDM1LCAzLCAKKyAgICA5NywgOCwgNiwgMSwgMjQ3LCAyMjQsIDMsIDk3LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgOTcsIDgsIDYsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxNDgsIDgsIDYsIDEsIDIwNywgODQsIDMsIDI0MSwgNzEsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDgsIDYsIDEsIDIzNSwgMTIzLCAKKyAgICAyMDgsIDc2LCA4LCA0LCAxLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgNiwgMSwgNjgsIDMsIDk3LCA4LCA2LCAxLCAxMDgsIAorICAgIDE0OCwgOCwgNiwgMSwgMjA0LCAxODUsIDIwMywgMTY4LCA4LCA2LCAxLCAxOTcsIDMsIDk3LCA4LCA0LCAxLCAxOTcsIDMsIAorICAgIDk3LCA4LCA2LCAxLCAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIyNywgMjUyLCAzLCA5NywgOCwgNiwgMSwgNCwgMjE0LCAKKyAgICAxNjgsIDMsIDIzMywgMTg3LCAyMDcsIDYsIDgsIDQsIDEsIDIxNCwgMTY4LCAzLCAyMzMsIDE4NywgMjA3LCA2LCA4LCA2LCAKKyAgICAxLCAyMTQsIDMzLCAzLCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgOTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA5NywgOCwgCisgICAgNCwgMSwgMjAwLCAxMjQsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgNjIsIDgsIDQsIDEsIDI1MSwgMTEyLCA4LCA0LCAxLCAKKyAgICAyMDQsIDE4NSwgMjUxLCAxMTIsIDgsIDQsIDEsIDY4LCAzLCAxMTcsIDgsIDQsIDEsIDE3NiwgNzQsIDgsIDQsIDEsIDI0NywgCisgICAgMjI0LCAzLCAyNDIsIDE5OCwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDExNywgOCwgNCwgMSwgMjEzLCAxMDUsIDcyLCA4LCA0LCAxLCAyMTEsIDIxOCwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDExNywgCisgICAgOCwgNCwgMSwgMTc2LCA3MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDIxMywgMTA1LCAxNzYsIAorICAgIDE5NywgMywgMTE3LCA4LCA0LCAxLCAyNDYsIDExMCwgMjEzLCAxMDUsIDE3NiwgNzIsIDgsIDQsIDEsIDI0MCwgMTgxLCAKKyAgICAyMjcsIDI1MiwgMywgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAxMTcsIDgsIDQsIDEsIDEzNSwgMjM2LCAxNTYsIDgsIDEsIAorICAgIDQsIDYsIDIzNiwgMTU2LCA4LCA0LCAxLCAyMzYsIDYwLCA4LCA0LCAxLCAyMTMsIDIxNCwgMjMzLCAxMjQsIDgsIDQsIDEsIAorICAgIDIwNCwgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDExNywgOCwgNCwgMSwgMjM0LCAxMDQsIDMsIDExNywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgOTcsIDgsIDQsIDEsIDIyOCwgNDEsIDgsIDEsIDQsIDYsIDcwLCA4LCA0LCAxLCAyMjUsIAorICAgIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0OCwgMjI2LCA4LCA0LCAxLCAyMjUsIDE5MywgCisgICAgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjI0LCAyMjYsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMjMsIDI0MywgOCwgNCwgCisgICAgMSwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAxMTcsIDgsIDQsIAorICAgIDEsIDIyMCwgMjE1LCAzLCA0OSwgMTE3LCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMjEzLCAxMTEsIDExNywgOCwgMSwgNCwgNiwgCisgICAgMjIwLCAyMTQsIDgsIDQsIDEsIDI0OSwgNzEsIDc0LCA4LCAxLCA0LCA2LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjQ2LCAxMTAsIAorICAgIDIxNywgODMsIDgsIDQsIDEsIDIxNSwgMjI5LCA4LCA0LCAxLCAyMDQsIDE4NSwgMTQ2LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE0LCAzMywgMywgMTY4LCAyMjUsIDE2LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE0LCAzMywgMywgMTE3LCA4LCA0LCAxLCAKKyAgICAyMTQsIDMzLCAzLCAxNjgsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNywgNiwgOCwgNCwgMSwgMjE0LCAzMywgCisgICAgMywgMjM3LCA2OCwgOCwgNCwgMSwgMjEzLCAxMDUsIDIxNCwgMzMsIDMsIDIzNywgNjgsIDgsIDEsIDQsIDYsIDE0NiwgOCwgCisgICAgMSwgNCwgNiwgMjI4LCA1MCwgMTQ2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTE3LCA4LCA0LCAxLCAyMzgsIDk0LCA4LCA0LCAKKyAgICAxLCAyNDAsIDE4MSwgMjI3LCAyNTIsIDMsIDIwOCwgNDcsIDI2LCAxMTcsIDgsIDQsIDEsIDIwOCwgMTkwLCAyMTMsIDEwNSwgCisgICAgMjM4LCA5NCwgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDcsIDgzLCA4LCA0LCAKKyAgICAxLCAyMDcsIDg0LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAxMDgsIDE0OCwgOCwgNCwgMSwgMjAzLCAyMjAsIDgsIDQsIAorICAgIDEsIDIwMywgMTY5LCAzLCAxMTcsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMDMsIDE2OCwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMSwgCisgICAgMTQ3LCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAwLCAxMjMsIDgsIDEsIDQsIDYsIDIwMCwgMTIzLCA4LCA0LCAxLCAxOTksIAorICAgIDE1OCwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDI0MiwgMTk4LCA4LCA0LCAxLCAyMzgsIDgsIAorICAgIDgsIDQsIDEsIDIzOCwgOSwgMywgMjQyLCAxOTgsIDgsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA4LCAxLCAyMTUsIDIzNiwgCisgICAgMjAyLCAxODksIDIzNiwgMjA3LCA4LCAxLCAyMjgsIDUwLCAyMzUsIDEyMywgMjA4LCA3NiwgOCwgMSwgMjA4LCA1NSwgMjQ3LCAKKyAgICAyMjMsIDgsIDEsIDI0OCwgMTcyLCAyNDYsIDEyMSwgOCwgMSwgNCwgNiwgMjUwLCAxMDMsIDgsIDQsIDEsIDI0NiwgMTEwLCAKKyAgICAxNzYsIDcyLCA4LCAxLCA0LCA2LCAyMzYsIDE1NywgMywgMTE3LCA4LCAxLCA0LCA2LCAyMzQsIDI0NywgOCwgNCwgMSwgCisgICAgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjI3LCAxMTgsIDgsIDEsIDQsIDYsIDE1NiwgOCwgCisgICAgNCwgMSwgMjE0LCAxNjgsIDMsIDExNywgOCwgMSwgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCAxLCAyMTMsIDEwNSwgCisgICAgMjM1LCAxMjMsIDIwOCwgNzcsIDMsIDk3LCA4LCA0LCAxLCAyMzksIDk1LCAyNDEsIDM0LCA4LCA0LCAxLCAyNDEsIDEwMiwgCisgICAgMjQxLCAzNCwgOCwgNCwgMSwgMjM5LCA5NSwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIDgsIDQsIDEsIDIwNSwgMzQsIDI0MSwgCisgICAgMzQsIDgsIDQsIDEsIDIwNiwgMTUxLCAyNDEsIDM0LCA4LCA0LCAxLCAyMDYsIDIwOCwgMjQxLCAzNSwgMywgMjQyLCAxOTgsIAorICAgIDgsIDQsIDEsIDIzNywgMTI1LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjQsIDQ0LCAyNDEsIDM0LCA4LCA0LCAxLCAyMjMsIDI0NSwgCisgICAgMjQxLCAzNCwgOCwgMSwgMjQ4LCAxNzIsIDIxNiwgMjYsIDgsIDEsIDI0OCwgMTgwLCAyMTYsIDI2LCA4LCA0LCAxLCAyMDQsIAorICAgIDE4NSwgMjM0LCAyNDgsIDMsIDIzNywgNjgsIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzQsIDI0OCwgMywgMjM3LCA2OSwgMjYsIAorICAgIDIwNywgNiwgNjcsIDEsIDQsIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjM0LCAyNDgsIDMsIDExNywgNjcsIDEsIDQsIDIyNywgCisgICAgMjUxLCA2NywgMSwgNCwgMTQ2LCA2NywgMSwgNCwgMjA0LCAxODUsIDE0NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMTQsIDMzLCAKKyAgICAzLCAxMTcsIDY3LCAxLCA0LCA2LCAyMjgsIDUwLCAxNDYsIDY3LCAxLCA0LCAyMDEsIDE0NywgNjcsIDEsIDQsIDIwMCwgCisgICAgMTIzLCA2NywgMSwgMjE1LCAxNCwgNjcsIDEsIDUzLCAyMTUsIDE0LCA2NywgMSwgMjA0LCAxODUsIDI0NiwgNzAsIDY3LCAxLCAKKyAgICAyNTEsIDEzLCA2NywgMSwgMjEzLCAxMDUsIDI0NiwgNzAsIDY3LCAxLCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgNDksIAorICAgIDE2NywgMjEzLCAyNiwgNjcsIDEsIDIzNSwgMTIzLCAyMDgsIDc2LCA2NywgMSwgMjEzLCAxMDUsIDIzNSwgMTIzLCAyMDgsIAorICAgIDc2LCA2NywgMSwgNDksIDI1MCwgMjAyLCA2NywgMSwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTE1LCAyNTAsIDIwMiwgNjcsIAorICAgIDEsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAyNDYsIDE0NywgMjUxLCAyNTEsIDI0NywgMTI1LCA2NywgMSwgODMsIDIyNCwgCisgICAgMTc2LCA2NywgMSwgMjIyLCAyMjgsIDY3LCAxLCAyNTEsIDIzOSwgMjUxLCAyNTEsIDY3LCAxLCAyMzUsIDc0LCAyNTEsIAorICAgIDI1MSwgNjcsIDEsIDEyOCwgODMsIDIyNCwgMTc2LCA2NywgMSwgMTI4LCAyMjIsIDIyOCwgNjcsIDEsIDEyOCwgMjM1LCA3NCwgCisgICAgMjUxLCAyNTEsIDY3LCAxLCAxMjgsIDI1MSwgMjM5LCAyNTEsIDI1MSwgNjcsIDEsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAKKyAgICAxNjcsIDIwNSwgOTUsIDI0NiwgNzksIDY3LCAxLCAyNDcsIDU0LCA1MSwgMTY3LCAyMTMsIDI2LCA2NywgMSwgMjQ3LCA1NCwgCisgICAgNDksIDE2NywgMjEzLCAyNiwgNjcsIDEsIDExNSwgMjA3LCAxNywgNjcsIDEsIDEyNywgMjA3LCAxNywgNjcsIDEsIDkzLCAKKyAgICA1NCwgNjcsIDEsIDIyMSwgMTU3LCA1NCwgMjQ4LCA1NywgNzMsIDU2LCAyMTMsIDI3LCA1NiwgMjE3LCAxMTAsIDQsIDIwNSwgCisgICAgMjQwLCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCA2NywgMSwgMjEzLCA4OSwgMTE3LCA2NywgMSwgMjQyLCAyMzUsIDI1MSwgCisgICAgMjUxLCA2NywgMSwgNCwgMjM2LCA2MCwgNjcsIDEsIDQsIDE1NiwgNjcsIDEsIDQsIDIxMiwgMTIyLCA2NywgMSwgNCwgMjAwLCAKKyAgICAxOTUsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMjM1LCAxMjMsIDIwOCwgNzYsIDY3LCAxLCAyMzgsIDI5LCAxNTAsIDE0OCwgNjcsIAorICAgIDEsIDEyMiwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIDE1MCwgMTQ4LCA2NywgMSwgCisgICAgMjM4LCAyOCwgMTUwLCAxNDgsIDY3LCAxLCAxOTksIDI1NSwgMjQxLCAxMjYsIDE1MCwgODEsIDY3LCAxLCAyMDAsIDc2LCAKKyAgICAyNDEsIDEyNiwgMTUwLCA4MSwgNjcsIDEsIDIwMiwgMTg3LCA2NywgMSwgMjA0LCAxLCA2NywgMSwgNTMsIDI1MSwgMTMsIAorICAgIDY3LCAxLCAxMjgsIDEyNywgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDExNSwgMjUwLCAyMDIsIDY3LCAxLCAxMjgsIDQ5LCAKKyAgICAyNTAsIDIwMiwgNjcsIDEsIDEyOCwgNTEsIDI1MCwgMjAyLCA2NywgMSwgMTI4LCAyMTMsIDI2LCA2NywgMSwgMTAxLCAyMzUsIAorICAgIDc0LCAyNTEsIDI1MSwgNjcsIDEsIDEwMSwgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCA2NywgMSwgMTAxLCA1MywgMjUxLCAKKyAgICAyMzksIDI1MSwgMjUxLCA2NywgMSwgMTI4LCAyMDUsIDI0MCwgNjcsIDEsIDIxMywgMjIwLCAyNDYsIDc5LCA2NywgMSwgCisgICAgMjQ4LCAyNDQsIDEyMiwgMjA1LCAxNzQsIDY3LCAxLCAyMzgsIDE3MSwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDI0OCwgMjQ0LCAKKyAgICAxMjgsIDIwNSwgMTc0LCA2NywgMSwgMjM4LCAxNzEsIDEyOCwgMjA1LCAxNzQsIDY3LCAxLCAyMTAsIDU2LCA2NywgMSwgCisgICAgMTc2LCAyMTAsIDU2LCA2NywgMSwgMTI4LCA0OSwgNDgsIDM4LCAyMzUsIDc0LCAyNTEsIDI1MSwgMzgsIDI1MSwgMjM5LCAKKyAgICAyNTEsIDI1MSwgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMzgsIDIwNSwgMjQwLCAzOCwgMjIyLCAyMjgsIDM4LCAyMTYsIAorICAgIDI0MSwgMzgsIDI0OCwgNTcsIDM4LCA3MywgNTYsIDM4LCAyNDEsIDc0LCAzOCwgMjMzLCAxODcsIDU2LCAzOCwgMjEzLCAyNywgCisgICAgNTYsIDM4LCA1MywgMjUxLCAyMzksIDI1MSwgMjUxLCAzOCwgMjQ3LCAxMjUsIDM4LCA4MywgMjI0LCAxNzcsIDU2LCAzOCwgCisgICAgNTMsIDgzLCAyMjQsIDE3NywgNTYsIDM4LCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIDM4LCAyNDcsIDE0OSwgMzgsIDIyOCwgCisgICAgNTAsIDI0OCwgNTcsIDM4LCAyMDQsIDE4NSwgMjQ2LCA3MSwgNTYsIDM4LCAyNDYsIDcxLCA1NiwgMzgsIDIxMywgMTA1LCAKKyAgICAyNDYsIDcxLCA1NiwgMzgsIDI0NiwgNzEsIDg4LCAyMTMsIDQ2LCAzOCwgMjM1LCA3NCwgMjUxLCAyNTIsIDU3LCAzOCwgCisgICAgMjUxLCAyMzksIDI1MSwgMjUyLCA1NywgMzgsIDQ5LCAyMDcsIDE4LCA1NywgMzgsIDUxLCAyMDcsIDE4LCA1NywgMzgsIDQ5LCAKKyAgICAyNTEsIDcxLCA1NiwgMzgsIDIzMywgMTI0LCAzOCwgNDksIDE2NywgMjEzLCAyNywgNTcsIDM4LCAxMTUsIDIwNywgMTgsIAorICAgIDU3LCAzOCwgMTI3LCAyMDcsIDE4LCA1NywgMzgsIDkzLCAyLCA1NywgMzgsIDIyMSwgMTU3LCAyLCA1NywgMzgsIDIxNiwgCisgICAgMTgyLCAyMzMsIDE4NywgNTcsIDM4LCAyMTMsIDExMSwgMjMzLCAxODcsIDU3LCAzOCwgNzMsIDU3LCAzOCwgMjQxLCA3NSwgCisgICAgNTcsIDM4LCAyMTMsIDI3LCA1NywgMzgsIDI0NiwgNzEsIDU3LCAzOCwgMjQ3LCA2OSwgMzgsIDIxNywgMTEwLCAzOCwgODMsIAorICAgIDIyNCwgMTc3LCA1NywgMzgsIDI0OCwgNTEsIDU3LCAzOCwgMjI4LCA1MCwgNTMsIDI1MCwgMjM1LCA1NywgMzgsIDI0NywgCisgICAgMTI2LCA1NywgMzgsIDI0NiwgMTQ3LCAyNTEsIDI1MiwgNTcsIDM4LCAyNDgsIDU4LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgCisgICAgNTgsIDU3LCAzOCwgMjA1LCAyNDEsIDU3LCAzOCwgMjIyLCAyMjksIDU3LCAzOCwgMTI4LCAyMjQsIDE3NiwgMzgsIDUzLCAKKyAgICAxMjgsIDIyNCwgMTc2LCAzOCwgMjA1LCAyNDEsIDIxNiwgMjQyLCAzOCwgMjA5LCAyNTAsIDIwOCwgNDcsIDIxNiwgMjQyLCAKKyAgICAzOCwgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgMzgsIDIwOSwgMjUwLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDE2OCwgCisgICAgMjA5LCAxNywgMjE2LCAyNDIsIDM4LCA1MSwgMTY3LCAyMTMsIDI3LCA1NywgMzgsIDIyOCwgNTAsIDI0OCwgNTEsIDU3LCAKKyAgICAzOCwgNTIsIDU3LCAzOCwgMjExLCAyMDEsIDU3LCAzOCwgMjAwLCAxOTYsIDU2LCAzOCwgODMsIDIwNSwgMjQwLCAzOCwgNTMsIAorICAgIDIxNiwgMjQxLCAzOCwgMjM1LCA3NCwgMTUwLCA4MSwgMzgsIDI1MSwgMjM5LCAxNTAsIDgxLCAzOCwgMzEsIDIxNiwgMjAsIAorICAgIDM4LCAzMSwgMjI2LCA1OCwgMzgsIDMxLCAyNDEsIDY4LCAyMDUsIDE2MiwgMzgsIDMxLCAxOTksIDIxOSwgMzgsIDI0OCwgCisgICAgNTEsIDU2LCAzOCwgMjM4LCAxMjIsIDIsIDU3LCAzOCwgNTMsIDgzLCAyMjQsIDE3NywgNTcsIDM4LCA0OSwgMjUxLCA3MSwgCisgICAgNTcsIDM4LCAyMTgsIDIxNSwgMjA1LCAyNDEsIDU2LCAzOCwgMjMzLCAxOTMsIDU2LCAzOCwgMjUxLCAxMTcsIDE2MCwgMjA1LCAKKyAgICAxODYsIDU2LCAzOCwgNDksIDUxLCA1NSwgNTcsIDM4LCAxODIsIDU1LCA1NywgMzgsIDIzNSwgODAsIDIyNywgMTYxLCAzOCwgCisgICAgNTEsIDI1MCwgMjAzLCA1NiwgMzgsIDQ5LCAxNjcsIDIxMywgMjcsIDU2LCAzOCwgMjM3LCAxMjIsIDM4LCAyMDAsIDE5NiwgCisgICAgNTcsIDM4LCA0OSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDI1MCwgMjAzLCA1NywgMzgsIDUxLCAyNTAsIDIwMywgMjYsIAorICAgIDExNSwgMjUwLCAyMDMsIDU3LCAzOCwgNTEsIDE2NywgMjEzLCAyNywgNTYsIDM4LCA3MywgODgsIDIxMywgNDYsIDM4LCAKKyAgICAyNTAsIDE2NiwgNTcsIDM4LCA1MywgMjEzLCAyNywgNTcsIDM4LCAxOTksIDI3LCA1NiwgMzgsIDUzLCAyNDgsIDU4LCA1NywgCisgICAgMzgsIDUzLCAyNDgsIDU3LCAzOCwgNTMsIDIyMiwgMjI4LCAzOCwgNTMsIDIyMiwgMjI5LCA1NywgMzgsIDUzLCAyMDUsIAorICAgIDI0MCwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU3LCAzOCwgNTMsIDg3LCA1NSwgNTcsIDM4LCA4LCA0LCAxLCA2MiwgMzgsIAorICAgIDgsIDQsIDEsIDcyLCAzOCwgOCwgNCwgMSwgNzAsIDM4LCA4LCA0LCAxLCA3NCwgMzgsIDgsIDQsIDEsIDY2LCAzOCwgOCwgNCwgCisgICAgMSwgMjQ3LCAyMjMsIDM4LCA4LCA0LCAxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzNCwgMjQ3LCAzOCwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDMsIDM4LCA4LCA0LCAxLCAxNDYsIDM4LCA4LCA0LCAxLCAyMDcsIDgzLCAzOCwgOCwgNCwgMSwgMjAzLCAxNjgsIAorICAgIDM4LCA4LCA0LCAxLCAyMDAsIDE5NSwgMzEsIDYsIDEsIDIzNCwgOTIsIDMxLCA0LCAxLCAyMzQsIDkyLCAzMSwgNiwgMSwgCisgICAgMjUwLCAyMzQsIDIxMiwgMTYsIDMxLCA0LCAxLCAyNTAsIDIzNCwgMjEyLCAxNiwgMzEsIDIxOCwgOTMsIDU0LCAzMSwgMjI0LCAKKyAgICA1NCwgMjE4LCA5MywgNTQsIDMxLCA2LCAxLCAyMTYsIDE2NywgMjQxLCA0MiwgMzEsIDQsIDEsIDIxNiwgMTY3LCAyNDEsIAorICAgIDQyLCAzMSwgMTk5LCAyMTksIDMxLCA0LCAyMTMsIDEwNSwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNCwgMjM5LCAKKyAgICAxODAsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDQsIDIxMywgMTA1LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIAorICAgIDk5LCAzMSwgMjE0LCA3OSwgODEsIDMxLCA2LCAxLCAxOTksIDIyNSwgMzEsIDIwNSwgMTYyLCAzMSwgMjQxLCA2OCwgMjA1LCAKKyAgICAxNjIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjA1LCAxNjIsIDMxLCAyNTEsIDU2LCAyMDYsIDE3NywgMzEsIDYsIDEsIAorICAgIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjI4LCA0MiwgCisgICAgMywgMjA1LCAxNjIsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMDUsIDE2MiwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMDUsIAorICAgIDE2MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCA2OCwgMjYsIAorICAgIDIwNSwgMTYyLCAzMSwgNiwgMSwgMjUxLCAxMTIsIDMxLCA2LCAxLCAyNDgsIDIwOCwgMzEsIDYsIDEsIDIzNiwgNjAsIDMxLCAKKyAgICA2LCAxLCAyNDEsIDEzNiwgMzEsIDYsIDEsIDIzOCwgMTI0LCAzMSwgNiwgMSwgMTk5LCA4MCwgMzEsIDYsIDEsIDIzOCwgNzksIAorICAgIDMxLCA2LCAxLCAyMDYsIDg4LCAzMSwgNiwgMSwgMjI4LCA0MSwgMzEsIDYsIDEsIDIyNywgNTQsIDMxLCA2LCAxLCAyMjUsIAorICAgIDg3LCAzMSwgNiwgMSwgMjIxLCA0MSwgMzEsIDYsIDEsIDIxOCwgMTMzLCAzMSwgNiwgMSwgMjAwLCAxNjksIDMxLCA2LCAxLCAKKyAgICAyMTcsIDgxLCAzMSwgNiwgMSwgMjE1LCAyMDQsIDMxLCA2LCAxLCAyMTMsIDkwLCAzMSwgNiwgMSwgMjA5LCAxNjMsIDMxLCAKKyAgICA2LCAxLCAyMDYsIDIyMSwgMzEsIDYsIDEsIDIwMywgMjIwLCAzMSwgNiwgMSwgMjE1LCAyMjksIDMxLCA2LCAxLCAyNDYsIAorICAgIDIzNiwgMzEsIDYsIDEsIDIxNCwgMjM1LCAzMSwgNiwgMSwgMjE3LCA4MywgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgCisgICAgNjcsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMDUsIDE2MiwgMzEsIAorICAgIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDUsIDE2MiwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgMjA1LCAxNjIsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2OCwgMjYsIDIwNSwgMTYyLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTIsIDMxLCA0LCAxLCAyNDgsIDIwOCwgMzEsIDQsIDEsIDIzNiwgNjAsIDMxLCA0LCAxLCAyNDEsIAorICAgIDEzNiwgMzEsIDQsIDEsIDIzOCwgMTI0LCAzMSwgNCwgMSwgMTk5LCA4MCwgMzEsIDQsIDEsIDIzOCwgNzksIDMxLCA0LCAxLCAKKyAgICAyMDYsIDg4LCAzMSwgNCwgMSwgMjI4LCA0MSwgMzEsIDQsIDEsIDIyNywgNTQsIDMxLCA0LCAxLCAyMjUsIDg3LCAzMSwgNCwgCisgICAgMSwgMjIxLCA0MSwgMzEsIDQsIDEsIDIxOCwgMTMzLCAzMSwgNCwgMSwgMjAwLCAxNjksIDMxLCA0LCAxLCAyMTcsIDgxLCAKKyAgICAzMSwgNCwgMSwgMjE1LCAyMDQsIDMxLCA0LCAxLCAyMTMsIDkwLCAzMSwgNCwgMSwgNDcsIDIwOSwgMTYzLCAzMSwgNCwgMSwgCisgICAgMjA5LCAxNjMsIDMxLCA0LCAxLCAyMDYsIDIyMSwgMzEsIDQsIDEsIDIwMywgMjIwLCAzMSwgNCwgMSwgMjE1LCAyMjksIDMxLCAKKyAgICA0LCAxLCAyNDYsIDIzNiwgMzEsIDQsIDEsIDIxNCwgMjM1LCAzMSwgNCwgMSwgMjE3LCA4MywgMzEsIDQsIDEsIDIyOCwgNDIsIAorICAgIDMsIDI0MSwgNjcsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCA2NywgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIwNSwgCisgICAgMTYyLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwNSwgMTYyLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjA1LCAxNjIsIDMxLCAKKyAgICA2LCAyMjcsIDgzLCA5OSwgMzEsIDI0OCwgMjA5LCA5OSwgMzEsIDIwNiwgODksIDk5LCAzMSwgMjAzLCAyMjEsIDMsIDIzMywgCisgICAgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAyNTEsIDIzOSwgMjYsIDIzMywgMTg3LCA5OSwgMzEsIDIwMywgMjIxLCAzLCAKKyAgICAyNDEsIDc1LCAyNiwgMjMzLCAxODcsIDk5LCAzMSwgMjE1LCAyMzAsIDk5LCAzMSwgMjE1LCAyMDUsIDk5LCAzMSwgMjI3LCAKKyAgICA4MywgOTksIDMxLCAxLCAyNTAsIDIzNCwgMjI2LCA2MiwgMzEsIDQsIDEsIDI1MCwgMjM0LCAyMjYsIDYyLCAzMSwgMSwgCisgICAgMjA4LCA4NiwgMzEsIDQsIDEsIDIwOCwgODYsIDMxLCAxLCAyNDEsIDQyLCAzMSwgNCwgMSwgMjQxLCA0MiwgMzEsIDEsIAorICAgIDIyNiwgNjIsIDMxLCA0LCAxLCAyMjYsIDYyLCAzMSwgMSwgMjEyLCAxNiwgMzEsIDQsIDEsIDIxMiwgMTYsIDg1LCA2LCAxLCAKKyAgICAyMTAsIDU3LCA4NSwgNCwgMSwgMjEwLCA1NywgODUsIDYsIDEsIDIzNywgMTMyLCA4NSwgNCwgMSwgMjM3LCAxMzIsIDg1LCAKKyAgICA2LCAxLCAyMjYsIDE5MCwgODUsIDQsIDEsIDIyNiwgMTkwLCA4NSwgNiwgMSwgMjMzLCAxNzgsIDg1LCA0LCAxLCAyMzMsIAorICAgIDE3OCwgODUsIDYsIDEsIDIzNiwgNTUsIDg1LCA0LCAxLCAyMzYsIDU1LCA4NSwgNiwgMSwgMjEwLCAyMywgODUsIDQsIDEsIAorICAgIDIxMCwgMjMsIDg1LCA2LCAxLCAyNDEsIDE1MiwgODUsIDQsIDEsIDI0MSwgMTUyLCAzMSwgMjI3LCA1NSwgOTksIDMxLCAKKyAgICAyMTMsIDkxLCA5OSwgMzEsIDIyNCwgMjQsIDIwOSwgMTY0LCA5OSwgMzEsIDEsIDE5OSwgMjI1LCAzMSwgNiwgMjA2LCA4OSwgCisgICAgOTksIDMxLCAyMjQsIDI0LCAyMzgsIDEyNSwgOTksIDMxLCAyMTMsIDEwNSwgMjI0LCAyNCwgMjM4LCAxMjUsIDk5LCAzMSwgCisgICAgNiwgMSwgMjEwLCA4LCAzMSwgNCwgMSwgMjEwLCA4LCAzMSwgNiwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgMSwgCisgICAgMjEyLCAxMywgMzEsIDQsIDEsIDIxMiwgMTMsIDMxLCAyMTMsIDkxLCAzLCAyMDgsIDQ3LCA5OSwgMzEsIDYsIDIxMywgMTA1LCAKKyAgICAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDMxLCA2LCAyMzksIDE4MCwgMjI0LCAyNCwgMjA5LCAxNjQsIDk5LCAzMSwgNiwgCisgICAgMjEzLCAxMDUsIDIzOSwgMTgwLCAyMjQsIDI0LCAyMDksIDE2NCwgOTksIDM3LCA2LCAxLCAyMjgsIDE3OSwgMywgMjM1LCAKKyAgICA3MywgMzcsIDYsIDEsIDIyOCwgNDUsIDM3LCA2LCAxLCAyNDAsIDIyOCwgMzcsIDYsIDEsIDIzNSwgMTMyLCAzNywgNiwgMSwgCisgICAgMjA0LCAxNywgMjI4LCAxNzgsIDM3LCA2LCAxLCAyMzksIDkwLCAzNywgNiwgMSwgMjQ3LCAyMzMsIDcwLCAzNywgNiwgMSwgCisgICAgMjAwLCA5LCAzNywgNiwgMSwgMjI3LCAyMjcsIDM3LCA2LCAxLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIxOSwgOTEsIDM3LCA2LCAKKyAgICAxLCAyMDUsIDIwLCAzNywgNiwgMSwgMjI2LCAxMTEsIDM3LCA2LCAxLCAyMzMsIDE5LCAzLCAyMzUsIDczLCAzNywgNiwgMSwgCisgICAgMjA5LCAyNTAsIDY2LCAzNywgNiwgMSwgMjM5LCA4NiwgMzcsIDYsIDEsIDYyLCAzNywgNiwgMSwgMjQ5LCA4LCAzNywgNiwgCisgICAgMSwgMjAzLCA1OSwgMzcsIDYsIDEsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMjgsIDE3OCwgCisgICAgMzcsIDYsIDEsIDE5OSwgNjgsIDM3LCA2LCAxLCAxOTksIDg5LCAzNywgNiwgMSwgNzAsIDM3LCA2LCAxLCAyMDksIDI1MCwgCisgICAgNzAsIDM3LCA2LCAxLCAxNjEsIDM3LCA2LCAxLCAyMzgsIDIwOSwgMzcsIDYsIDEsIDIzOCwgMTkwLCAzNywgNiwgMSwgMjM4LCAKKyAgICAxNzksIDM3LCA2LCAxLCA3NCwgMzcsIDYsIDEsIDIxNiwgNzMsIDM3LCA2LCAxLCAyMzgsIDExNSwgMzcsIDYsIDEsIDIzOCwgCisgICAgMTA0LCAzNywgNiwgMSwgMjA2LCAyMDEsIDM3LCA2LCAxLCA2NiwgMzcsIDYsIDEsIDIzOCwgMjQ4LCAzNywgNiwgMSwgMTQ0LCAKKyAgICAzNywgNiwgMSwgMjA1LCAyNiwgMzcsIDYsIDEsIDI0NywgOCwgMzcsIDYsIDEsIDIxMCwgMTE0LCAzNywgNiwgMSwgMjEwLCAKKyAgICA2OCwgMzcsIDYsIDEsIDIzNCwgMTY1LCA1NCwgMzcsIDYsIDEsIDIwMCwgMjksIDM3LCA2LCAxLCAyMDksIDIzLCA1NCwgMzcsIAorICAgIDYsIDEsIDcyLCAzNywgNiwgMSwgMTk5LCAyMTEsIDM3LCA2LCAxLCAxODMsIDM3LCA0LCAxLCA2MiwgMzcsIDQsIDEsIDI0OSwgCisgICAgOCwgMzcsIDQsIDEsIDIwMywgNTksIDM3LCA0LCAxLCAyMzUsIDE4NSwgMzcsIDQsIDEsIDI0MSwgMTc1LCAzNywgNCwgMSwgCisgICAgMjI4LCAxNzgsIDM3LCA0LCAxLCAxOTksIDY4LCAzNywgNCwgMSwgMTk5LCA4OSwgMzcsIDQsIDEsIDcwLCAzNywgNCwgMSwgCisgICAgMjA5LCAyNTAsIDcwLCAzNywgNCwgMSwgMTYxLCAzNywgNCwgMSwgMjM4LCAyMDksIDM3LCA0LCAxLCAyMzgsIDE5MCwgMzcsIAorICAgIDQsIDEsIDIzOCwgMTc5LCAzNywgNCwgMSwgNzQsIDM3LCA0LCAxLCAyMTYsIDczLCAzNywgNCwgMSwgMjM4LCAxMTUsIDM3LCAKKyAgICA0LCAxLCAyMzgsIDEwNCwgMzcsIDQsIDEsIDIwNiwgMjAxLCAzNywgNCwgMSwgNjYsIDM3LCA0LCAxLCAyMzgsIDI0OCwgMzcsIAorICAgIDQsIDEsIDE0NCwgMzcsIDQsIDEsIDIwNSwgMjYsIDM3LCA0LCAxLCAyNDcsIDgsIDM3LCA0LCAxLCAyMTAsIDExNCwgMzcsIAorICAgIDQsIDEsIDIxMCwgNjgsIDM3LCA0LCAxLCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDAsIDI5LCAzNywgNCwgMSwgMjA5LCAKKyAgICAyMywgNTQsIDM3LCA0LCAxLCA3MiwgMzcsIDQsIDEsIDE5OSwgMjExLCAzNywgNCwgMSwgMTgzLCAzNywgNCwgMSwgMjI4LCAKKyAgICAxNzksIDMsIDIzNSwgNzMsIDM3LCA0LCAxLCAyMjgsIDQ1LCAzNywgNCwgMSwgMjQwLCAyMjgsIDM3LCA0LCAxLCAyMzUsIAorICAgIDEzMiwgMzcsIDQsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzNywgNCwgMSwgMjM5LCA5MCwgMzcsIDQsIDEsIDI0NywgMjMzLCAKKyAgICA3MCwgMzcsIDQsIDEsIDIwMCwgOSwgMzcsIDQsIDEsIDIyNywgMjI3LCAzNywgNCwgMSwgMjI0LCAxNDEsIDM3LCA0LCAxLCAKKyAgICAyMTksIDkxLCAzNywgNCwgMSwgMjA1LCAyMCwgMzcsIDQsIDEsIDIyNiwgMTExLCAzNywgNCwgMSwgMjMzLCAxOSwgMywgCisgICAgMjM1LCA3MywgMzcsIDQsIDEsIDIwOSwgMjUwLCA2NiwgMzcsIDQsIDEsIDIzOSwgODYsIDM3LCA2LCAxLCAyMTcsIDgzLCAKKyAgICAzNywgNCwgMSwgMjE3LCA4MywgMzcsIDYsIDEsIDIwMCwgNjUsIDM3LCA0LCAxLCAyMDAsIDY1LCAzNywgNiwgMSwgMjI4LCAKKyAgICAzOSwgNzIsIDM3LCA0LCAxLCAyMjgsIDM5LCA3MiwgMzcsIDYsIDEsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIAorICAgIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgCisgICAgMzksIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDI0OCwgMTc1LCAKKyAgICAxOTksIDE4MSwgMzcsIDYsIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0OCwgCisgICAgMTc1LCAxOTksIDE4MSwgMzcsIDYsIDEsIDIyNiwgMzEsIDM3LCA0LCAxLCAyMjYsIDMxLCAzNywgNiwgMSwgMjE0LCAyMzUsIAorICAgIDM3LCA0LCAxLCAyMTQsIDIzNSwgMzcsIDYsIDEsIDIzNywgNjMsIDM3LCA0LCAxLCAyMzcsIDYzLCAzNywgNiwgMSwgMjI3LCAKKyAgICAyNTMsIDM3LCA0LCAxLCAyMjcsIDI1MywgMzcsIDYsIDEsIDIyNywgMjU0LCAzLCA1MywgMjM1LCA3NCwgMjUxLCAyNTEsIAorICAgIDM3LCA0LCAxLCAyMjcsIDI1NCwgMywgNTMsIDIzNSwgNzQsIDI1MSwgMjUxLCAzNywgNiwgMSwgMjA0LCAyMCwgMzcsIDQsIAorICAgIDEsIDIwNCwgMjAsIDM3LCA2LCAxLCAyMTIsIDIyMSwgMjE3LCA4MywgMzcsIDQsIDEsIDIxMiwgMjIxLCAyMTcsIDgzLCAzNywgCisgICAgNiwgMSwgMjE3LCA4NCwgMywgMjA1LCAyMTAsIDM3LCA0LCAxLCAyMTcsIDg0LCAzLCAyMDUsIDIxMCwgMzcsIDYsIDEsIAorICAgIDIxNywgMTEsIDM3LCA0LCAxLCAyMTcsIDExLCAzNywgNiwgMSwgMjI2LCA2MiwgMzcsIDQsIDEsIDIyNiwgNjIsIDM3LCAKKyAgICAyMDYsIDQ5LCA1NCwgMzgsIDM3LCAyMDUsIDIxMCwgMzgsIDM3LCAyMTYsIDE4MywgMzgsIDM3LCAyNDEsIDI0MiwgMjE1LCAKKyAgICAxMDgsIDM4LCAzNywgMjE0LCAyMjksIDIxNSwgMTA4LCAzOCwgMzcsIDIxNSwgOTIsIDM4LCAzNywgMjMzLCA4MywgMjA2LCAKKyAgICA0OSwgNTQsIDM4LCAzNywgMjIxLCAxNjgsIDU0LCAzNywgNiwgMSwgMjA5LCAyNTAsIDIzMywgMTksIDMsIDIwNywgNiwgMzcsIAorICAgIDQsIDEsIDIwOSwgMjUwLCAyMzMsIDE5LCAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMTAsIDE2MywgNTQsIDM3LCA0LCAxLCAKKyAgICAyMTAsIDE2MywgNTQsIDM3LCA2LCAxLCAyMzgsIDExNiwgMywgMjA2LCAxMSwgMzcsIDQsIDEsIDIzOCwgMTE2LCAzLCAyMDYsIAorICAgIDExLCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDIwMywgMjE5LCAzNywgCisgICAgNiwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDk3LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDEwMSwgMTE3LCAzNywgNCwgMSwgMjM1LCAxODYsIDMsIDEwMSwgMTE3LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDE5OSwgOTAsIDMsIDI0MSwgMTE5LCAzNywgCisgICAgNCwgMSwgMTk5LCA5MCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAKKyAgICAyMjcsIDEwOCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMjcsIDEwOCwgMywgODMsIDk3LCAzNywgNCwgMSwgMjI3LCAxMDgsIAorICAgIDMsIDgzLCA5NywgMzcsIDYsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCA5NywgMzcsIDYsIAorICAgIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDQsIDEsIDI0OSwgNjAsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAyNDEsIDExOSwgMzcsIDYsIDMzLCAyMzgsIDE4MCwgMjM1LCAxODUsIDM3LCA0LCAKKyAgICAzMywgMjM4LCAxODAsIDIzNSwgMTg1LCAzNywgNiwgMSwgMjE2LCA3NCwgMywgMTAxLCAxMTcsIDM3LCA0LCAxLCAyMTYsIAorICAgIDc0LCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDI1MiwgMiwgMTQ0LCAzNywgNCwgMSwgMjUyLCAyLCAxNDQsIDM3LCA2LCAxLCAKKyAgICAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzgsIDEwNSwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDYsIAorICAgIDIwMiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMDYsIDIwMiwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMDgsIDY4LCA2NiwgCisgICAgMzcsIDQsIDEsIDIwOCwgNjgsIDY2LCAzNywgNiwgMSwgMjA4LCA2OCwgMTA4LCAzLCA5NywgMzcsIDQsIDEsIDIwOCwgNjgsIAorICAgIDEwOCwgMywgOTcsIDM3LCA2LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMjQxLCAKKyAgICAxMTksIDM3LCA2LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA0LCAzMywgMjA2LCAyMDIsIDIwNSwgMjYsIDM3LCA2LCAKKyAgICAxLCAyNDcsIDksIDMsIDI0MSwgMTE5LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDI0NywgOSwgCisgICAgMywgODMsIDk3LCAzNywgNCwgMSwgMjQ3LCA5LCAzLCA4MywgOTcsIDM3LCA2LCAxLCAyMTAsIDM0LCAzNywgNCwgMSwgMjEwLCAKKyAgICAzNCwgMzcsIDYsIDEsIDI1MiwgMiwgMjQ3LCA4LCAzNywgNCwgMSwgMjUyLCAyLCAyNDcsIDgsIDM3LCA2LCAxLCAyNTIsIDIsIAorICAgIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCA0LCAxLCAyNTIsIDIsIDI0NywgOSwgMywgMjQxLCAxMTksIDM3LCAxLCAyMTYsIAorICAgIDE3NCwgMzcsIDYsIDEsIDE5OSwgNjksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAxOTksIDY5LCAzLCAyNDgsIDU3LCAzNywgNiwgCisgICAgMSwgMjI3LCAxMDgsIDMsIDExNywgMzcsIDQsIDEsIDIyNywgMTA4LCAzLCAxMTcsIDM3LCA2LCAxLCAyMzgsIDIxMCwgMywgCisgICAgMjA3LCA2LCAzNywgNCwgMSwgMjM4LCAyMTAsIDMsIDIwNywgNiwgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMTcsIDM3LCA0LCAKKyAgICAxLCAyMzgsIDE4MCwgMywgMTE3LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDIwNywgNiwgMzcsIDQsIDEsIDIzOCwgMTgwLCAKKyAgICAzLCAyMDcsIDYsIDM3LCA2LCAxLCAyMjYsIDIwMSwgMjQ3LCA4LCAzNywgNCwgMSwgMjI2LCAyMDEsIDI0NywgOCwgMzcsIDYsIAorICAgIDEsIDIzOCwgMTkxLCAzLCAyMDcsIDYsIDM3LCA0LCAxLCAyMzgsIDE5MSwgMywgMjA3LCA2LCAzNywgNCwgMSwgMjE2LCAKKyAgICAxNzQsIDM3LCA2LCAxLCAzNSwgMywgMjQ4LCA1NywgMzcsIDQsIDEsIDM1LCAzLCAyNDgsIDU3LCAzNywgNiwgMSwgMzUsIDMsIAorICAgIDI0MSwgNzQsIDM3LCA0LCAxLCAzNSwgMywgMjQxLCA3NCwgMzcsIDYsIDMzLCAzNSwgMjI4LCAxNzgsIDM3LCA0LCAzMywgCisgICAgMzUsIDIyOCwgMTc4LCAzNywgNiwgMSwgMjI4LCAxNzksIDMsIDI0OCwgNTcsIDM3LCA0LCAxLCAyMjgsIDE3OSwgMywgMjQ4LCAKKyAgICA1NywgMzcsIDYsIDEsIDIxMSwgMjE4LCAzNywgNCwgMSwgMjExLCAyMTgsIDM3LCA2LCAxLCAyMTEsIDIxOSwgMywgMjQxLCAKKyAgICA3NCwgMzcsIDQsIDEsIDIxMSwgMjE5LCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMTk5LCA2OSwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDE5OSwgNjksIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxOTksIDkwLCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMTk5LCA5MCwgCisgICAgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDQsIDEsIDI1MiwgMiwgMjM5LCA5MCwgMzcsIDYsIAorICAgIDEsIDIzMywgMTksIDMsIDIyMiwgMjI4LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjIyLCAyMjgsIDM3LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyNDEsIDc0LCAzNywgNCwgMSwgMjMzLCAxOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDE2MywgMywgMjQxLCA3NCwgCisgICAgMzcsIDQsIDEsIDE2MywgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDI0OSwgNzEsIDc0LCAzNywgNCwgMSwgMjQ5LCA3MSwgNzQsIAorICAgIDM3LCA2LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyNDksIDcxLCAxNjMsIDMsIDI0MSwgNzQsIAorICAgIDM3LCA2LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAxOTcsIDMsIDI0MSwgNzQsIDM3LCA2LCAxLCAxMDgsIDMsIAorICAgIDIyMiwgMjI4LCAzNywgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOCwgMzcsIDYsIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDQsIAorICAgIDEsIDEwOCwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIDEwOCwgMywgNTMsIDE2OSwgMzcsIDQsIDEsIDEwOCwgMywgNTMsIDE2OSwgCisgICAgMzcsIDYsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDQsIDEsIDI0NywgOSwgMywgMjQxLCA3NCwgMzcsIDYsIDEsIAorICAgIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzNSwgMTg2LCAzLCAyNDEsIDExOSwgMzcsIDYsIDEsIDIwMCwgCisgICAgMzAsIDMsIDI0MSwgNzQsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDEsIDc0LCAzNywgNiwgMSwgMjM1LCAxODYsIDMsIAorICAgIDIwOCwgNDcsIDI2LCAxMTcsIDM3LCA0LCAxLCAyMzUsIDE4NiwgMywgMjA4LCA0NywgMjYsIDExNywgMzcsIDYsIDEsIDIzNCwgCisgICAgMjM2LCAzLCAxMTcsIDM3LCA0LCAxLCAyMzQsIDIzNiwgMywgMTE3LCAzNywgNiwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgCisgICAgNCwgMSwgMjM0LCAyMzYsIDMsIDk3LCAzNywgNiwgMSwgMjI2LCA3MiwgMjQxLCAxNzUsIDM3LCA0LCAxLCAyMjYsIDcyLCAKKyAgICAyNDEsIDE3NSwgMzcsIDYsIDEsIDIyNiwgNzIsIDI0MCwgMjI4LCAzNywgNCwgMSwgMjI2LCA3MiwgMjQwLCAyMjgsIDM3LCAKKyAgICA2LCAxLCAyMjYsIDcyLCAxOTksIDE4LCAzNywgNCwgMSwgMjI2LCA3MiwgMTk5LCAxOCwgMzcsIDYsIDEsIDIyNiwgNzIsIAorICAgIDIzOSwgODIsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMzksIDgyLCAzNywgNiwgMSwgMjI2LCA3MiwgMjI0LCAxNDEsIDM3LCA0LCAKKyAgICAxLCAyMjYsIDcyLCAyMjQsIDE0MSwgMzcsIDYsIDEsIDIyNiwgNzIsIDIxOSwgOTEsIDM3LCA0LCAxLCAyMjYsIDcyLCAyMTksIAorICAgIDkxLCAzNywgNiwgMSwgMjI2LCA3MiwgMjA5LCA4OSwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwOSwgODksIDM3LCA2LCAxLCAKKyAgICAyMjYsIDcyLCAyMDUsIDIwNCwgMzcsIDQsIDEsIDIyNiwgNzIsIDIwNSwgMjA0LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgCisgICAgODksIDM3LCA0LCAxLCAyMTMsIDEwNSwgMTk5LCA4OSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMTcsIDM3LCA0LCAxLCAKKyAgICAyMzgsIDIxMCwgMywgMTE3LCAzNywgNiwgMSwgMjI0LCAyMjMsIDM3LCA0LCAxLCAyMjQsIDIyMywgMzcsIDYsIDEsIDIxMywgCisgICAgOTMsIDM3LCA0LCAxLCAyMTMsIDkzLCAzNywgNiwgMSwgMjAwLCA5OCwgMzcsIDQsIDEsIDIwMCwgOTgsIDM3LCA2LCAxLCAKKyAgICAyMTQsIDE1OSwgMzcsIDQsIDEsIDIxNCwgMTU5LCAzNywgNiwgMSwgMjAxLCA2NCwgMzcsIDQsIDEsIDIwMSwgNjQsIDM3LCAKKyAgICA2LCAxLCAyNTEsIDEzOCwgMTYxLCAzNywgNCwgMSwgMjUxLCAxMzgsIDE2MSwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIAorICAgIDExNywgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgCisgICAgMzcsIDQsIDEsIDIzOCwgMTgwLCAzLCAxMDEsIDExNywgMzcsIDYsIDEsIDIxNiwgNzQsIDMsIDI0MSwgMTE5LCAzNywgNCwgCisgICAgMSwgMjE2LCA3NCwgMywgMjQxLCAxMTksIDM3LCA2LCAxLCAyMTAsIDM1LCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIxMCwgCisgICAgMzUsIDMsIDI0MSwgMTE5LCAzNywgNiwgMSwgMjM4LCAxODAsIDMsIDQ5LCAxMTcsIDM3LCA0LCAxLCAyMzgsIDE4MCwgMywgCisgICAgNDksIDExNywgMzcsIDYsIDEsIDIzOSwgNzUsIDM3LCA0LCAxLCAyMzksIDc1LCAzNywgNiwgMSwgMjQxLCAyMjQsIDM3LCA0LCAKKyAgICAxLCAyNDEsIDIyNCwgMzcsIDYsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIDExOSwgMzcsIDQsIDEsIDIzOCwgMjEwLCAzLCAyNDEsIAorICAgIDExOSwgMTg0LCA2LCAxLCAyNTAsIDEwOSwgMTg0LCA2LCAxLCAyNDgsIDIyNCwgMTg0LCA2LCAxLCAyMzUsIDE0OSwgMTg0LCAKKyAgICA2LCAxLCAyNDIsIDU4LCAxODQsIDYsIDEsIDIzOSwgNSwgMTg0LCA2LCAxLCAxOTksIDExNCwgMTg0LCA2LCAxLCAyMzgsIAorICAgIDI0MSwgMTg0LCA2LCAxLCAyMzgsIDgxLCAxODQsIDYsIDEsIDEzOCwgMTg0LCA2LCAxLCAxOTksIDY4LCAxODQsIDYsIDEsIAorICAgIDIyOCwgODYsIDE4NCwgNiwgMSwgMjI0LCAxNDUsIDE4NCwgNiwgMSwgMjAwLCAxNzMsIDE4NCwgNiwgMSwgMjQ3LCAxOTAsIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNDMsIDE4NCwgNiwgMSwgMjMzLCAyMDcsIDE4NCwgNiwgMSwgMjI3LCAyNDgsIDE4NCwgNiwgMSwgCisgICAgMjM1LCAxOTYsIDE4NCwgNiwgMSwgMjQ2LCAyNTQsIDE4NCwgNiwgMSwgMjIyLCA0MCwgMTg0LCA2LCAxLCAyMDAsIDksIAorICAgIDE4NCwgNiwgMSwgMjE4LCAyMDEsIDE4NCwgNiwgMSwgMjEwLCAxMTQsIDE4NCwgNiwgMSwgMjAyLCAxOTMsIDE4NCwgNiwgMSwgCisgICAgMjQ3LCAzNywgMTg0LCA2LCAxLCAyMTYsIDU0LCAxODQsIDYsIDEsIDIyNywgMjEwLCAxODQsIDYsIDEsIDIxMywgMjUyLCAKKyAgICAxODQsIDYsIDEsIDIxMSwgMTgwLCAxODQsIDYsIDEsIDIwMiwgMjM4LCAxODQsIDYsIDEsIDIwNSwgMjA3LCAxODQsIDYsIDEsIAorICAgIDIxMywgMTU0LCAxODQsIDYsIDEsIDI0NiwgOTEsIDE4NCwgNiwgMSwgMTk5LCAyNTAsIDE4NCwgNiwgMSwgMjE1LCAxMzksIAorICAgIDE4NCwgNiwgMSwgMjI2LCAyNTQsIDE4NCwgNiwgMSwgMjE3LCAxMDgsIDE4NCwgNiwgMSwgMjM3LCAxMzQsIDE4NCwgNjcsIAorICAgIDEsIDQ5LCAxNjcsIDIxMywgMjYsIDE4NCwgMjUxLCAxMywgMTg0LCAyMzgsIDE4MywgODEsIDE4NCwgMjM4LCA0MywgODEsIAorICAgIDE4NCwgMjQ2LCA3MCwgMTg0LCAyMTQsIDc5LCA4MSwgMTg0LCAyNTIsIDMsIDgxLCAxODQsIDQsIDEsIDI1MCwgMTA5LCAKKyAgICAxODQsIDQsIDEsIDI0OCwgMjI0LCAxODQsIDQsIDEsIDIzNSwgMTQ5LCAxODQsIDQsIDEsIDI0MiwgNTgsIDE4NCwgNCwgMSwgCisgICAgMjM5LCA1LCAxODQsIDQsIDEsIDE5OSwgMTE0LCAxODQsIDQsIDEsIDIzOCwgMjQxLCAxODQsIDQsIDEsIDIzOCwgODEsIAorICAgIDE4NCwgNCwgMSwgMTM4LCAxODQsIDQsIDEsIDE5OSwgNjgsIDE4NCwgNCwgMSwgMjI4LCA4NiwgMTg0LCA0LCAxLCAyMjQsIAorICAgIDE0NSwgMTg0LCA0LCAxLCAyMDAsIDE3MywgMTg0LCA0LCAxLCAyNDcsIDE5MCwgMTg0LCA0LCAxLCAyMjYsIDI0MywgMTg0LCAKKyAgICA0LCAxLCAyMzMsIDIwNywgMTg0LCA0LCAxLCAyMjcsIDI0OCwgMTg0LCA0LCAxLCAyMzUsIDE5NiwgMTg0LCA0LCAxLCAyNDYsIAorICAgIDI1NCwgMTg0LCA0LCAxLCAyMjIsIDQwLCAxODQsIDQsIDEsIDIwMCwgOSwgMTg0LCA0LCAxLCAyMTgsIDIwMSwgMTg0LCA0LCAKKyAgICAxLCAyMTAsIDExNCwgMTg0LCA0LCAxLCAyMDIsIDE5MywgMTg0LCA0LCAxLCAyNDcsIDM3LCAxODQsIDQsIDEsIDIxNiwgNTQsIAorICAgIDE4NCwgNCwgMSwgMjI3LCAyMTAsIDE4NCwgNCwgMSwgMjEzLCAyNTIsIDE4NCwgNCwgMSwgMjExLCAxODAsIDE4NCwgNCwgMSwgCisgICAgMjAyLCAyMzgsIDE4NCwgNCwgMSwgMjA1LCAyMDcsIDE4NCwgNCwgMSwgMjEzLCAxNTQsIDE4NCwgNCwgMSwgMjQ2LCA5MSwgCisgICAgMTg0LCA0LCAxLCAxOTksIDI1MCwgMTg0LCA0LCAxLCAyMTUsIDEzOSwgMTg0LCA0LCAxLCAyMjYsIDI1NCwgMTg0LCA0LCAxLCAKKyAgICAyMTcsIDEwOCwgMTg0LCA0LCAxLCAyMzcsIDEzNCwgMTg0LCA0LCAzMywgMjM5LCA2LCAxOTksIDI1MCwgMTg0LCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgMTg0LCAyMzMsIDMzLCAyMTMsIDQ1LCAxODQsIDIzOCwgNzcsIDU0LCAyMjUsIDI3LCAxODQsIDIzOCwgCisgICAgNzcsIDU0LCAxODQsIDIzOSwgMTU3LCA1NCwgMTEzLCAyNTEsIDI1MiwgMjM4LCA3MiwgMTEzLCAyNTEsIDI1MiwgMjExLCAKKyAgICAxODEsIDExMywgMjUxLCAyNTIsIDIxMCwgOTIsIDExMywgMjUxLCAyNTIsIDE5OSwgMTAwLCAyMTQsIDE0MiwgMTEzLCAyNTEsIAorICAgIDI1MiwgMTk5LCAxMDAsIDIzNiwgNzksIDExMywgMjUxLCAyNTIsIDIwNSwgMjIyLCAxMTMsIDI1MSwgMjUyLCAyMTMsIDEwMiwgCisgICAgMTEzLCAyNTEsIDI1MiwgMTk5LCA5OCwgMTEzLCAyNTEsIDI1MiwgMjE2LCAxMDAsIDExMywgMjUxLCAyNTIsIDIwMCwgMjIsIAorICAgIDExMywgMjUxLCAyNTIsIDIwNiwgMTI5LCAxMTMsIDI1MSwgMjUyLCAyMzUsIDI0NywgMTEzLCAyNTEsIDI1MiwgMjM1LCAKKyAgICAyNDgsIDIyMSwgMywgMTEzLCAyNTEsIDI1MiwgMjM1LCAyNDUsIDExMywgMjUxLCAyNTIsIDIxNCwgMTQzLCAyMTYsIDEyOSwgCisgICAgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIzNiwgOCwgMTEzLCAyNTEsIDI1MiwgMjE2LCA3OSwgMTEzLCAyNTEsIDI1MiwgCisgICAgMjUwLCAxNDgsIDIzNCwgMjI4LCAxMTMsIDI1MSwgMjUyLCAyMjEsIDEzLCAxMTMsIDI1MSwgMjUyLCAyMjIsIDIwMywgMTEzLCAKKyAgICAyNTEsIDI1MiwgMjIyLCAyOSwgMTEzLCAyNTEsIDI1MiwgMjIyLCAzMCwgMjI2LCAyNTUsIDExMywgMjUxLCAyNTIsIDI0MSwgCisgICAgMjUxLCAxMTMsIDI1MSwgMjUyLCAyMTQsIDE1NCwgMTEzLCAyNTEsIDI1MiwgMjA2LCAxNzIsIDIxNCwgMTM3LCAxMTMsIAorICAgIDI1MSwgMjUyLCAyMDAsIDMyLCAyNDgsIDIyNSwgMTk5LCAyMzEsIDExMywgMjUxLCAyNTIsIDIxNywgOTAsIDExMywgMjUxLCAKKyAgICAyNTIsIDIyOCwgMTM3LCAxMTMsIDI1MSwgMjUyLCAyNDEsIDE1MywgMTEzLCAyNTEsIDI1MiwgMTk5LCAyNSwgMTEzLCAxMzQsIAorICAgIDIyMiwgMTMxLCAyNDYsIDE1NSwgMTEzLCAyMTUsIDEwMCwgMjEwLCAzNywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxMSwgCisgICAgMTgxLCAxMTMsIDIxNSwgMTAwLCAyMzQsIDE1NiwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjM0LCAxNTYsIDIxNCwgMTQ3LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzQsIDQ3LCAxMTMsIDIxNSwgMTAwLCAyMDUsIDIzLCAxMTMsIDIxNSwgMTAwLCAyMTEsIDE4MSwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjE2LCA5MywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDcsIDExMywgMjE1LCAxMDAsIDIzMywgMTk5LCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyMzMsIDIwMCwgMjM0LCAxNTgsIDM2LCAyMDMsIDYzLCAxMTMsIDIxNSwgMTAwLCAyMTQsIDgzLCAKKyAgICAxMTMsIDIxNSwgMTAwLCAyNDIsIDQzLCAyMTcsIDM0LCAyMjIsIDE2MywgMTEzLCAyMTUsIDEwMCwgMjIyLCAxOSwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjIyLCAxNjAsIDExMywgMjE1LCAxMDAsIDIxMywgMjMyLCAxMTMsIDIxNCwgMjEyLCAyMTYsIDEwMiwgCisgICAgMTEzLCAyMTUsIDEwMCwgMjEwLCAyMiwgMjQwLCAxODIsIDExMywgMjE1LCAxMDAsIDIwOSwgMTQzLCAyNDAsIDE4MiwgMTEzLCAKKyAgICAyMTQsIDIxMiwgMjA5LCAyNCwgMjE2LCA5NSwgMTEzLCAxMzQsIDIwMywgMjI1LCAyNDAsIDE4MiwgMTEzLCAxMzQsIDIyNCwgCisgICAgNTQsIDI0MCwgMTgyLCAxMTMsIDIxNCwgMjEyLCAyMTgsIDkwLCAyMzQsIDIyNywgMTEzLCAyMTUsIDEwMCwgMjE0LCAxNDgsIAorICAgIDIxNCwgMTQyLCAxMTMsIDEsIDI1MSwgMTQyLCAxMTMsIDEsIDI0OCwgMjEwLCAxMTMsIDEsIDIzNSwgMTQ3LCAxMTMsIDEsIAorICAgIDI0MiwgMjMsIDExMywgMSwgMjM0LCAxMzksIDExMywgMSwgMjAzLCA2MywgMTEzLCAxLCAxOTksIDkyLCAxMTMsIDEsIDIzNCwgCisgICAgOTMsIDExMywgMSwgMjA2LCAxNDYsIDExMywgMSwgMTk5LCAyMzQsIDExMywgMSwgNDcsIDIyNywgODYsIDExMywgMSwgMjI3LCAKKyAgICA4NiwgMTEzLCAxLCAyMjUsIDgzLCAxMTMsIDEsIDQ3LCAyMjIsIDQ3LCAxMTMsIDEsIDIyMiwgNDcsIDExMywgMSwgNDcsIAorICAgIDIxOCwgODksIDExMywgMSwgMjE4LCA4OSwgMTEzLCAxLCAyMTIsIDE5LCAxMTMsIDEsIDI1MCwgMTA3LCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDczLCAxMTMsIDEsIDIxNiwgNzMsIDExMywgMSwgNDcsIDIwNSwgMjcsIDExMywgMSwgMjA1LCAyNywgMTEzLCAxLCAKKyAgICAyMTQsIDEwNiwgMTEzLCAxLCAyMTMsIDEyMywgMTEzLCAxLCAyMTAsIDIxLCAxMTMsIDEsIDIwNiwgMjE3LCAxMTMsIDMzLCAKKyAgICAyMDAsIDcsIDUzLCAyMDMsIDYzLCAxMTMsIDMzLCAyMDAsIDcsIDIwMywgNjQsIDE5OSwgMjM0LCAxMTMsIDMzLCAyMDAsIDcsIAorICAgIDUzLCAxOTksIDIzNCwgMTEzLCAyMTQsIDIxMiwgMjM1LCAyNDcsIDExMywgMjE0LCAyMTIsIDIzNSwgMjQ1LCA5LCA0MSwgCisgICAgNTQsIDksIDIsIDIxMiwgMTIsIDksIDIzNiwgMjUzLCAyMjIsIDE0NSwgOSwgMiwgMjEyLCA1MiwgOSwgMiwgMjEyLCAxNSwgCisgICAgOSwgNDEsIDEzNCwgNTYsIDI1MCwgMjQ4LCAyNDIsIDIxMCwgMjEyLCAyMzQsIDI1MCwgMjQ4LCAyMzYsIDIyMiwgMjEyLCAKKyAgICAyMzQsIDksIDIxMywgMTk3LCAyNTAsIDI0OCwgMjE2LCAyOCwgMjIxLCAxNzAsIDU0LCAyNTAsIDI0OCwgMjE2LCAyOCwgCisgICAgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyNTEsIDE5OCwgNTQsIDksIDI0NiwgNzAsIDksIDI0MSwgMjM4LCAyMTAsIDE1NCwgCisgICAgOSwgMjE1LCAxMDIsIDIwMywgNDQsIDU0LCA5LCAyLCAyMjEsIDE0OSwgOSwgMiwgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgCisgICAgODgsIDksIDIsIDI1MSwgMTQ1LCAyNTAsIDE3MCwgOSwgMiwgMjEzLCAyMzAsIDI1MSwgMTQ0LCA5LCAyLCAyMTMsIDIzOCwgCisgICAgMjUxLCAxMjIsIDI1MSwgNjMsIDksIDIsIDIwNiwgMjU0LCA5LCA0LCAxMjIsIDIwNywgOSwgOSwgNCwgMTIyLCAzMywgMTQwLCAKKyAgICAzLCAyMjUsIDkyLCAzLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDE5OSwgMTA1LCA5LCA0LCAyMzcsIDE1OCwgOSwgNCwgMjQyLCAKKyAgICAxNywgOSwgNCwgMjI3LCAzNiwgOSwgMjEwLCAxNjcsIDksIDEsIDgxLCA5LCAyMDUsIDgzLCA3MywgMjE0LCAyMTIsIDgxLCAKKyAgICA5LCAyMTQsIDc5LCA4MSwgOSwgMSwgMjI3LCA0MCwgMjAwLCA0NiwgOSwgMSwgMjM0LCAyMDMsIDksIDEsIDE0MCwgMywgCisgICAgMjIyLCAyMjQsIDU2LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDU2LCAKKyAgICA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCA1NywgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0OCwgMjQwLCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTYsIDksIDEsIDIwNiwgMTgzLCA5LCAxLCAyMDYsIDEwMiwgOSwgCisgICAgMSwgMjI3LCAyMjQsIDksIDEsIDIzNCwgMjI0LCA5LCAxLCAyMjYsIDIwMywgOSwgMSwgMjQyLCAyOSwgOSwgMSwgMjA2LCAKKyAgICAxMTQsIDksIDEsIDIxMywgMTU0LCA5LCAxLCAxOTksIDEwNSwgOSwgMSwgMjExLCAxODYsIDksIDEsIDIxMCwgNjEsIDksIDEsIAorICAgIDIxMiwgNTYsIDksIDEsIDI0MiwgNTIsIDksIDEsIDIwNywgOSwgOSwgMSwgMTk5LCAxMDgsIDksIDEsIDI1MSwgMTcxLCA5LCAKKyAgICAxLCAyMzUsIDE5NCwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgMjI2LCAyNTMsIDMsIDEyNiwgCisgICAgMTkwLCA1NywgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMjgsIDUwLCAyMDMsIDE2OCwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMTI2LCAxOTAsIDU2LCA5LCAyMDYsIDIyMywgOSwgMSwgCisgICAgMjM3LCAxMzQsIDksIDEsIDIxNCwgMTUyLCA5LCAxLCAyMjcsIDg2LCA5LCAxLCAyMjUsIDkxLCA5LCAxLCAyMjIsIDYxLCA5LCAKKyAgICAxLCAyMTgsIDIyNywgOSwgMSwgMjM0LCAxMTUsIDksIDEsIDIwMSwgNzIsIDksIDEsIDE0MCwgMjIyLCAxODcsIDksIDEsIAorICAgIDIwMCwgNDYsIDksIDIzNywgMTU2LCA5LCAyNDIsIDE1LCA5LCAyMjcsIDM0LCA5LCAyMzcsIDE1OCwgOSwgMjQyLCAxNywgOSwgCisgICAgMjI3LCAzNiwgOSwgMjEwLCAxMDQsIDksIDIwNywgMjM2LCA5LCAyMjIsIDIyMiwgNTYsIDksIDIzNCwgMjA0LCA1NiwgOSwgCisgICAgMjM0LCAyMDQsIDU3LCA5LCAyMDgsIDQsIDI1MSwgMTQyLCA5LCAyMjgsIDUwLCAyNDIsIDE3LCA5LCAxMzQsIDIxOCwgMjI4LCAKKyAgICAyMzUsIDE2NSwgOSwgMTk4LCAyNDUsIDksIDIyLCAyLCA0LCAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCAyMjgsIDUwLCA0LCAKKyAgICAyMDMsIDE2OSwgNTYsIDksIDIyLCAyLCA3MywgNTcsIDksIDIxMywgMTA1LCAyNDIsIDE3LCA5LCAyMzcsIDE1OSwgMywgCisgICAgMTIwLCAyNDAsIDE4MCwgOSwgMjAxLCA3NCwgMjM0LCAyMDQsIDU3LCAyNTAsIDI0OCwgMTcsIDE5OSwgODEsIDI1MCwgMjQ4LCAKKyAgICAxNywgMTAyLCAyNTAsIDI0OCwgMTcsIDEwNSwgMjUwLCAyNDgsIDE3LCAxNDcsIDI1MCwgMjQ4LCAxNywgMTQ5LCAyNTAsIAorICAgIDI0OCwgMTcsIDE2NCwgMjUwLCAyNDgsIDE3LCAxODcsIDI1MCwgMjQ4LCAxNywgMjEwLCAxMzUsIDI1MCwgMjQ4LCAxNywgCisgICAgMTkyLCAyNTAsIDI0OCwgMTcsIDIxOSwgMTEzLCA5LCAyMTYsIDI3LCA1NCwgOSwgMjQxLCAxNjgsIDIxMCwgMTU0LCA5LCAKKyAgICAyMDYsIDQ5LCAyMTAsIDE1NCwgOSwgMjM3LCA2MSwgMjE1LCA5OCwgMjA4LCAxMDksIDksIDEsIDI0MCwgMTgxLCAyNDgsIAorICAgIDI0MCwgOSwgMSwgMjQwLCAxODEsIDIxNCwgMTUyLCA5LCAxLCAyMDcsIDIxMywgMjUxLCAxNDIsIDksIDEsIDE0MCwgMjAxLCAKKyAgICA4OSwgOSwgMSwgMTQwLCAzLCAyMDEsIDc0LCAyMzQsIDIwNCwgNTYsIDksIDEsIDE0MCwgMywgMjAxLCA3NCwgMjM0LCAyMDQsIAorICAgIDU3LCA5LCAxLCAxMjIsIDIzNCwgMjAzLCA5LCAxLCAxMjIsIDIzNCwgMjA0LCAyNTEsIDE0MiwgOSwgMSwgMTIyLCAyMzQsIAorICAgIDIwNCwgMjAxLCA3MiwgOSwgMSwgMTA4LCAzLCAyMzQsIDIwNCwgNTYsIDksIDEsIDEyMiwgMjM0LCAyMDQsIDIwMCwgNDYsIAorICAgIDksIDEsIDIwNCwgMjQ1LCA5LCAxLCAyMDQsIDI0MywgOSwgMSwgMjQ4LCAyNTAsIDksIDEsIDIwNiwgMTg0LCAzLCAyMTMsIAorICAgIDI2LCA5LCAxLCAyMDYsIDE4NCwgMywgMTI2LCAxOTAsIDg4LCAyMzksIDE2NSwgOSwgMSwgMjE2LCA1NCwgOSwgMSwgMjA2LCAKKyAgICAxODEsIDksIDEsIDI0OCwgMjM4LCA5LCAxLCAxNTUsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMTU1LCAzLCAxMjAsIDE5MCwgCisgICAgODMsIDU2LCA5LCAxLCAyMTgsIDQ3LCA5LCAxLCAyMzksIDk5LCA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA2LCAyMDUsIDksIDEsIDIwNiwgMjAzLCA5LCAxLCAyNDEsIDIxNSwgOSwgMSwgMjQyLCAzMCwgMywgMjEzLCAyNiwgOSwgCisgICAgMSwgMjQyLCAzMCwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCA0LCAyMDcsIDksIDksIAorICAgIDEsIDI0MiwgMzYsIDksIDEsIDI0MSwgMjE3LCA5LCAxLCAyMzksIDEyNywgOSwgMSwgMjQyLCAzMCwgMywgMTI2LCAxOTAsIAorICAgIDg4LCAyMzksIDE2NSwgOSwgMSwgMjQyLCAzMCwgMywgMjM2LCAyMjksIDE5MCwgNTYsIDksIDEsIDIxMiwgMjA3LCA5LCAxLCAKKyAgICAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTMsIDE1NSwgMywgCisgICAgNzMsIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgMjAzLCAxNjksIDU3LCA5LCAxLCAyMTMsIDE1NSwgMywgNzMsIDI0OCwgCisgICAgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMjcsIDIyMSwgOSwgMSwgCisgICAgMjEzLCAxNTUsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIAorICAgIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTEsIDE4NywgMywgMTI2LCAxOTAsIDI0OCwgCisgICAgMjI4LCAyNiwgMTI2LCAxOTAsIDU2LCA5LCAxLCAyMTIsIDU3LCAzLCAxMjAsIDE5MCwgNTcsIDksIDEsIDIxMiwgNTcsIDMsIAorICAgIDEyNiwgMTkwLCA1NiwgOSwgMSwgMjA3LCAxMCwgMywgMTI2LCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAKKyAgICAxOTAsIDU2LCA5LCAxLCAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEsIDIzNywgMTM1LCAzLCA3MywgMjIxLCA1NiwgNTcsIDksIAorICAgIDEsIDIzNywgMTM1LCAzLCA3MywgNTcsIDksIDEsIDIwMywgNTIsIDksIDEsIDIzNywgMTM1LCAzLCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDEsIDIxNiwgNTIsIDksIDEsIDIxNCwgMTUzLCAzLCA3MywgNTYsIDksIDEsIDIxNCwgMTUzLCAzLCAxMjYsIDE5MCwgCisgICAgNTYsIDksIDEsIDIyNiwgMjUyLCA5LCAxLCAyMDcsIDE4MywgMjI3LCA4NiwgOSwgMSwgMjI3LCA4NywgMywgMjEzLCAyNiwgCisgICAgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU2LCA5LCAxLCAyMTksIDI1NSwgOSwgMSwgMjI3LCA4NywgMywgMTI2LCAxOTAsIDU3LCAKKyAgICA5LCAxLCAyMzYsIDc2LCA5LCAxLCAyMzYsIDc3LCAzLCAyMTMsIDI2LCA5LCAxLCAyMTksIDE3NiwgOSwgMSwgMjM2LCA3NywgCisgICAgMywgMTIwLCAxOTAsIDU3LCA5LCAxLCAyMzUsIDM3LCA5LCAxLCAyMzYsIDc3LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIAorICAgIDIyNSwgOTIsIDMsIDQsIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCA3MywgNTYsIDksIDEsIDIyNSwgOTIsIDMsIDEyNiwgCisgICAgMTkwLCA1NiwgOSwgMSwgMjI1LCA5MiwgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMTgsIDIyOCwgMywgNzMsIDU3LCA5LCAxLCAKKyAgICAyMTgsIDIyOCwgMjM1LCAxNjUsIDksIDEsIDIxMywgNCwgOSwgMSwgMjE4LCAyMjgsIDMsIDIxMywgMjYsIDksIDEsIDIxOCwgCisgICAgMjI4LCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwNywgOSwgMSwgMjA2LCAyMDYsIDMsIDczLCAKKyAgICA1NiwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA1NiwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTEzLCA5LCAxLCAyMzQsIDExNiwgCisgICAgMjM1LCAxMTQsIDMsIDIzNCwgMjA0LCA1NiwgOSwgMSwgMjA2LCAxODQsIDIyMiwgMTU3LCAyMzUsIDExMywgOSwgMSwgMjAxLCAKKyAgICA3MywgMywgMjEzLCAyNiwgOSwgMSwgMjI2LCAxMzksIDIxNywgMTIxLCA5LCAxLCAyMTcsIDEyMSwgOSwgMSwgNjYsIDksIDEsIAorICAgIDE5OSwgMjExLCA5LCAxLCAyMjYsIDEzOSwgMTk5LCAyMTEsIDksIDEsIDIwMSwgNzMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjAzLCA1OSwgOSwgMSwgMjM3LCAxNjIsIDIwMCwgNDYsIDksIDEsIDkwLCAzLCAyMDcsIDYsIDksIDEsIDkwLCAzLCA0LCAKKyAgICAyMDMsIDE2OCwgOSwgMSwgMjAxLCA3MywgMywgNzMsIDU2LCA5LCAxLCA3MiwgOSwgMSwgOTAsIDMsIDEyNiwgMTkwLCA1NywgCisgICAgOSwgMSwgOTAsIDI0OSwgNjksIDksIDEsIDkwLCAyNDksIDcwLCAzLCAyMzQsIDIwNCwgNTYsIDksIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA5LCAxLCAyNTEsIDIyMSwgOSwgNCwgMTIyLCAzMywgMjEyLCA1NywgMywgMjI1LCA5MiwgMywgMTQwLCAyMjIsIDE4NywgCisgICAgOSwgNCwgMTIyLCAzMywgMjE0LCAxNTMsIDMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODcsIDksIDQsIDEyMiwgODQsIDgyLCAKKyAgICAxOSwgOSwgNCwgMTIyLCAyMjUsIDkyLCAyNTEsIDE0MiwgOSwgNCwgMTIyLCAyMjcsIDIyNCwgOSwgNCwgMTIyLCAxMjYsIAorICAgIDI0MCwgMTgwLCA5LCA0LCAxMjIsIDIxMSwgMTg2LCA5LCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDgsIDEwNSwgCisgICAgNzYsIDIxMiwgMTczLCAyMzgsIDIxMCwgMjM0LCA0MiwgOSwgNCwgMTIyLCAyMTIsIDIxOSwgMTk5LCA4MSwgOSwgNCwgMTIyLCAKKyAgICAyMDMsIDIyMywgMjEzLCAxNzQsIDE5OSwgODEsIDksIDQsIDEyMiwgMjQwLCAxODEsIDIzNCwgMTM3LCA3NiwgMjI2LCAyMDMsIAorICAgIDksIDQsIDEyMiwgODQsIDY1LCAxOSwgOSwgNCwgMTI4LCAyMTEsIDE4NiwgOSwgNCwgMTIyLCAyMjIsIDIyMywgOSwgNCwgCisgICAgMjAxLCA3MiwgOSwgNCwgMjAwLCA0NiwgOSwgNCwgMTIyLCAyMDAsIDQ2LCA5LCA0LCAxMjIsIDIxOCwgMjI3LCA5LCAyMTUsIAorICAgIDEzNCwgNzYsIDIxMiwgNDIsIDksIDIzOCwgMTgxLCAyNDcsIDU2LCAxMjgsIDIwOCwgNzYsIDksIDIzOCwgMTgxLCAyNDcsIAorICAgIDU2LCAxMjIsIDIwOCwgNzYsIDksIDIxMiwgMjE5LCAxMjIsIDIwOCwgNzcsIDMsIDIzNywgOTQsIDI0NywgNTUsIDksIDQsIAorICAgIDEyOCwgMjIyLCA2MSwgOSwgMSwgMjQyLCAzMCwgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIxMywgMTU1LCAzLCAKKyAgICAyMjgsIDUwLCAyMDMsIDE2OCwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxOTksIDgxLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIAorICAgIDEwMiwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMDUsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTQ3LCAyMzgsIDMzLCAKKyAgICAyNTAsIDI0OCwgMTcsIDE0OSwgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxNjQsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgCisgICAgMTg3LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIxMCwgMTM1LCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDE5MiwgMjM4LCAKKyAgICAzMywgMjUwLCAyNDgsIDE3LCAyMTksIDExMywgOSwgMSwgMjEwLCA2MiwgMywgNzMsIDU3LCA5LCAxLCAyNDIsIDUzLCAzLCAKKyAgICA3MywgNTcsIDksIDEsIDIzNSwgMTk1LCAzLCA3MywgNTcsIDksIDIsIDIwOSwgMTQyLCAyNTEsIDg5LCA5LCAyLCAyMDksIAorICAgIDE0MiwgMjE1LCA2MywgMjIyLCA0MCwgOSwgMSwgMjM0LCAxMTYsIDMsIDIyOCwgNTAsIDIwMywgMTY4LCAyMDcsIDEwMywgCisgICAgMjM4LCAxNzEsIDc2LCAyMTYsIDEyNywgMjA3LCAxMDMsIDIwNywgMjA5LCAyMzYsIDE4MywgMjA4LCA3NiwgMjA3LCAxMDMsIAorICAgIDIwOCwgNiwgMjM2LCAxODMsIDIwOCwgNzYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA3OSwgMjA3LCAxMDMsIDIwOCwgNiwgCisgICAgMjQ2LCA3OSwgMjA3LCAxMDMsIDIzMywgMTc3LCAyNDYsIDc5LCAyMDcsIDEwMywgMjQ2LCA4MCwgMjA5LCA4NiwgMjI1LCAKKyAgICAyOCwgMjA3LCAxMDMsIDI0NiwgODAsIDIwOSwgODYsIDIxMywgNDYsIDIwNywgMTAzLCAyMDcsIDIwOSwgMjQ2LCA4MCwgCisgICAgMjA5LCA4NiwgMjI1LCAyOCwgMjA3LCAxMDMsIDIwOCwgNiwgMjQ2LCA4MCwgMjA5LCA4NiwgMjEzLCA0NiwgMjA3LCAxMDMsIAorICAgIDI0MywgMzYsIDIwNywgMTAzLCAyMzQsIDE2MywgMjE3LCAxNDAsIDIwNywgMTAzLCAyMzQsIDE2MywgMjIyLCAxNywgMjA3LCAKKyAgICAxMDMsIDIzNCwgMTYzLCAyNTAsIDE2NywgMjA3LCAxMDMsIDI1MiwgMywgODEsIDIwNywgMTAzLCAxLCAyNTEsIDE0NywgCisgICAgMjA3LCAxMDMsIDEsIDIwNywgMjEzLCAyNTEsIDE0NywgMjA3LCAxMDMsIDEsIDI0OCwgMjA3LCAyMDcsIDEwMywgMSwgMjM2LCAKKyAgICA2NiwgMjA3LCAxMDMsIDEsIDIzNiwgNjcsIDIzNiwgNDQsIDIwNywgMTAzLCAxLCAyNDIsIDI2LCAyMDcsIDEwMywgMSwgCisgICAgMjQwLCAxODEsIDI0MiwgMjcsIDIxMywgMjAsIDIwNywgMTAzLCAxLCAyMzQsIDEzOSwgMjA3LCAxMDMsIDEsIDIwMSwgNzIsIAorICAgIDIwNywgMTAzLCAxLCAxOTksIDEwNSwgMjA3LCAxMDMsIDEsIDIzNCwgOTEsIDIwNywgMTAzLCAxLCAyMDYsIDE0MiwgMjA3LCAKKyAgICAxMDMsIDEsIDIwNiwgMTQzLCAyMzYsIDQ0LCAyMDcsIDEwMywgMSwgMTk5LCAxOTgsIDIwNywgMTAzLCAxLCAxOTksIDE5OSwgCisgICAgMjM0LCAxMzksIDIwNywgMTAzLCAxLCAyMjcsIDU3LCAyMDcsIDEwMywgMSwgMjI1LCA5MCwgMjA3LCAxMDMsIDEsIDIyMSwgCisgICAgMTY2LCAyMDcsIDEwMywgMSwgMjE4LCA4OSwgMjA3LCAxMDMsIDEsIDIxMCwgMTYwLCAyMDcsIDEwMywgMSwgNDcsIDIxMCwgCisgICAgMTYwLCAyMDcsIDEwMywgMSwgNzIsIDIwNywgMTAzLCAxLCAyMTYsIDczLCAyMDcsIDEwMywgMSwgMjEzLCAxMDUsIDIxNiwgCisgICAgNzMsIDIwNywgMTAzLCAxLCAyMTIsIDU0LCAyMDcsIDEwMywgMSwgMjE0LCAxNDYsIDIwNywgMTAzLCAxLCAyMTMsIDIwLCAKKyAgICAyMDcsIDEwMywgMSwgMjEwLCAyMSwgMjA3LCAxMDMsIDEsIDIwNiwgMjE1LCAyMDcsIDEwMywgMSwgMjE2LCAxMiwgMjQ4LCAKKyAgICAxOTQsIDIwNywgMTAzLCAxLCAyMTYsIDEyLCAyMzUsIDE5MiwgMjA3LCAxMDMsIDEsIDIxNiwgMTIsIDI0MSwgOTUsIDIwNywgCisgICAgMTAzLCAyMTQsIDIyNSwgNTYsIDIwNywgMTAzLCAyMTQsIDIyNSwgNTcsIDIwNywgMTAzLCAyMTQsIDIyNSwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAxOTksIDgsIDU2LCAyMDcsIDEwMywgMTk5LCA4LCA1NywgMjA3LCAxMDMsIDE5OSwgOCwgMjM5LCAxNzksIAorICAgIDIwNywgMTAzLCAyMTMsIDE5MywgNTYsIDIwNywgMTAzLCAyMTMsIDE5MywgNTcsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAKKyAgICAxNSwgMjMzLCAxNzYsIDIwNywgMTAzLCAyMzksIDE4MCwgMTk5LCAxNSwgMjUxLCA2NCwgMjA3LCAxMDMsIDIzNCwgMTQ0LCAKKyAgICA1NiwgMjA3LCAxMDMsIDIzNCwgMTQ0LCA1NywgMjA3LCAxMDMsIDIzNCwgMTQzLCAyMzksIDE3OSwgMjA3LCAxMDMsIDIzOCwgCisgICAgOTgsIDU2LCAyMDcsIDEwMywgMjM4LCA5OCwgNTcsIDIwNywgMTAzLCAyMTIsIDEzOCwgMjA3LCAxMDMsIDIzNywgMTI4LCAKKyAgICAyNDAsIDE4MiwgMjA3LCAxMDMsIDIxNCwgNTcsIDIwNywgMTAzLCAyMTIsIDE2NywgMjA3LCAxMDMsIDEyMCwgODMsIDE5MCwgCisgICAgNTYsIDIwNywgMTAzLCAxMjAsIDgzLCAxOTAsIDU3LCAyMDcsIDEwMywgMTI2LCAxOTAsIDU2LCAyMDcsIDEwMywgMTI2LCAKKyAgICAxOTAsIDU3LCAyMDcsIDEwMywgMjE3LCAxMzgsIDIyNCwgMTc3LCA1NiwgMjA3LCAxMDMsIDIxNywgMTM4LCAyMjQsIDE3NywgCisgICAgNTcsIDIwNywgMTAzLCAyMjAsIDI0NSwgMjA3LCAxMDMsIDI0OSwgNjgsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAxOTksIDc1LCAKKyAgICAyMDcsIDEwMywgMSwgMjA5LCAyMCwgMjI2LCAxOTYsIDIwNywgMTAzLCAxLCAyMDksIDIwLCAyMzcsIDE0NywgOSwgMSwgCisgICAgMjQ4LCAyNDEsIDMsIDEyNiwgMTkwLCAyMzMsIDEyNiwgNTcsIDksIDEsIDI0OCwgMjQxLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAKKyAgICAxMjYsIDE5MCwgNTYsIDksIDEsIDI0OCwgMjQxLCAzLCAxMjYsIDE5MCwgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgMjQ4LCAKKyAgICAyNDEsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDI0OCwgMjI4LCAyNiwgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNDgsIAorICAgIDI0MSwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyNDgsIDI0MSwgMywgMjI4LCA1MCwgNCwgCisgICAgMjAzLCAxNjksIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjgsIDksIDEsIDE1NSwgMywgMTIwLCAxOTAsIDU2LCAKKyAgICA5LCAxLCAxNTUsIDMsIDEyNiwgMTkwLCAyMTUsIDk2LCAxODIsIDU3LCA5LCAxLCAyNDIsIDMwLCAzLCAxMjAsIDE5MCwgCisgICAgMjAyLCAyNDgsIDI0OCwgMjI4LCAyNiwgNCwgMjA3LCA5LCA5LCAxLCAyNDIsIDMwLCAzLCAyMjgsIDUwLCA0LCAyMDMsIAorICAgIDE2OSwgNTcsIDksIDEsIDIxMywgMTU1LCAzLCA5NywgOSwgMSwgMjExLCAxODcsIDMsIDIzNiwgMjI5LCAxOTAsIDU2LCA5LCAKKyAgICAxLCAyNTEsIDE3MiwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyNTEsIDE3MiwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE5MSwgCisgICAgNTYsIDksIDEsIDI1MSwgMTcyLCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgMTIwLCAKKyAgICAxOTAsIDU3LCA5LCAxLCAyMzcsIDEzNSwgMywgMTI2LCAxOTAsIDIxNSwgOTYsIDE4MiwgNTcsIDksIDEsIDIyNiwgMjUzLCAKKyAgICAzLCA3MywgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgNTYsIDksIDEsIDIyNiwgMjUzLCAzLCAxMjYsIDE5MCwgCisgICAgMjE1LCA5NiwgMTgyLCA1NywgOSwgMSwgODQsIDMsIDczLCA1NiwgOSwgMSwgODQsIDMsIDczLCA1NywgOSwgMSwgMjE4LCAKKyAgICAyMjgsIDMsIDEyMCwgMTkwLCA1NywgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIDIwNywgOSwgOSwgMSwgMjE4LCAyMjgsIDMsIDQsIAorICAgIDIwMywgMTY4LCA5LCAxLCAyMjUsIDkyLCAzLCAxNDgsIDksIDEsIDIxMywgMTU1LCAzLCAxMjAsIDE5MCwgMjAyLCAyNDgsIAorICAgIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMTIwLCAxOTAsIDIwMiwgCisgICAgMjQ4LCA1NiwgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIDEwLCA1NywgOSwgMSwgMTU1LCAzLCA0LCA5LCAxLCAyMDcsIAorICAgIDEwLCAyNiwgMTIwLCAyNDAsIDE4MCwgOSwgMSwgMjExLCAxODcsIDMsIDQsIDksIDEsIDIwNywgMTAsIDI2LCAxMjAsIDI0MCwgCisgICAgMTgwLCA5LCAxLCAyMTMsIDE1NSwgMywgNCwgOSwgMSwgMjA3LCAxMCwgMjYsIDEyMCwgMjQwLCAxODAsIDksIDEsIDE1NSwgCisgICAgMywgNCwgOSwgMSwgMjA3LCAxMCwgNTYsIDksIDEsIDE0MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAxMjAsIDU2LCA5LCAKKyAgICAxLCAxNDAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMjM3LCAxNjIsIDkwLCAzLCAyMzgsIAorICAgIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIzNywgMTYyLCA5MCwgMywgMjM4LCAzMywgMjUwLCAyNDgsIDE3LCAKKyAgICAxMjYsIDU2LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMjM2LCAyMjksIDU3LCA5LCAKKyAgICAxLCAyMDEsIDczLCAzLCAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDEyMCwgNTYsIDksIDEsIDIwMSwgNzMsIDMsIDIzOCwgMzMsIAorICAgIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTIwLCAKKyAgICA1NiwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzOCwgMzMsIDI1MCwgMjQ4LCAxNywgMTI2LCA1NiwgOSwgMSwgMTU1LCAzLCAKKyAgICAyMzgsIDMzLCAyNTAsIDI0OCwgMTcsIDIzNiwgMjI5LCA1NywgOSwgMSwgMjExLCAxODcsIDMsIDIzOCwgMzMsIDI1MCwgCisgICAgMjQ4LCAxNywgMjM2LCAyMjksIDU2LCA5LCAxLCAyMTEsIDE4NywgMywgMjI4LCA1MCwgMjAzLCAxNjgsIDksIDEsIDIyNywgCisgICAgODcsIDMsIDEyMCwgMTkwLCA1NiwgMjA2LCAxMTksIDEsIDIzNCwgMjMzLCAyMDYsIDExOSwgMSwgMjEwLCA3MSwgMjA2LCAKKyAgICAxMTksIDEsIDIxOCwgMjI2LCAyMDYsIDExOSwgMSwgMjEzLCAyNDgsIDIwNiwgMTE5LCAxLCAyNDksIDEzNCwgMjA2LCAxMTksIAorICAgIDEsIDIyNCwgMjIwLCAyMDYsIDExOSwgMSwgMjI3LCAxMDEsIDIwNiwgMTE5LCAxLCAyNTEsIDEyOSwgMjA2LCAxMTksIDEsIAorICAgIDIwMywgODgsIDIwNiwgMTE5LCAxLCAyMjIsIDYwLCAyMDYsIDExOSwgMSwgMjM3LCAxOTMsIDIwNiwgMTE5LCAxLCAyNDEsIAorICAgIDk4LCAyMDYsIDExOSwgMSwgMjA2LCAxMjEsIDIwNiwgMTE5LCAxLCAyMjUsIDE3MiwgMjA2LCAxMTksIDEsIDIzNiwgODUsIAorICAgIDIwNiwgMTE5LCAxLCAyMzUsIDExOSwgMjA2LCAxMTksIDEsIDIxMSwgMTg1LCAyMDYsIDExOSwgMSwgMjQxLCAyMzYsIDIwNiwgCisgICAgMTE5LCAxLCAxOTksIDk1LCAyMDYsIDExOSwgMSwgMjA2LCAyMTYsIDIwNiwgMTE5LCAxLCAyMDAsIDEwOSwgMjA2LCAxMTksIAorICAgIDEsIDIxNiwgODYsIDIwNiwgMTE5LCAxLCAyMjcsIDIzMiwgMjA2LCAxMTksIDEsIDI0NywgMTEsIDIwNiwgMTE5LCAxLCAKKyAgICAyMDQsIDI1MiwgMjA2LCAxMTksIDEsIDIzNCwgODMsIDIwNiwgMTE5LCAxLCAyMjYsIDIwNiwgMjA2LCAxMTksIDEsIDIwNiwgCisgICAgMTIwLCAyMDYsIDExOSwgMSwgMTk5LCAxMTIsIDIwNiwgMTE5LCAxLCAyMTAsIDYwLCAyMDYsIDExOSwgMSwgMjEyLCA2MCwgCisgICAgMjA2LCAxMTksIDEsIDI0MiwgNTYsIDIwNiwgMTE5LCAxLCAxMzgsIDIwNiwgMTE5LCAxLCAxOTksIDE0LCAyMDYsIDExOSwgCisgICAgMSwgMjUxLCAxNjgsIDIwNiwgMTE5LCAxLCAyMzUsIDE5MywgMjA2LCAxMTksIDEsIDIxNCwgMTU2LCAyMDYsIDExOSwgMSwgCisgICAgMjAxLCAxMTIsIDIwNiwgMTE5LCAyNTIsIDUsIDIwNiwgMTE5LCAyNTIsIDEwMywgMjA2LCAxMTksIDIzMiwgMjM0LCAyMDYsIAorICAgIDExOSwgMjM4LCAyNTQsIDIwNiwgMTE5LCAyMDQsIDM5LCAyMDYsIDExOSwgMjE3LCA2MiwgMjA2LCAxMTksIDIzOSwgOCwgCisgICAgMjA2LCAxMTksIDIzOCwgMjQsIDIwNiwgMTE5LCAyMTcsIDEzNywgMjA2LCAxMTksIDIxNywgMTQ1LCAyMDYsIDExOSwgMjA3LCAKKyAgICAyMzYsIDIwNiwgMTE5LCAxLCAyMjAsIDE1NywgMjE5LCA0OSwgMTcsIDE5OSwgODEsIDIxOSwgNDksIDE3LCAxMDIsIDIxOSwgCisgICAgNDksIDE3LCAxMDUsIDIxOSwgNDksIDE3LCAxNDcsIDIxOSwgNDksIDE3LCAxNDksIDIxOSwgNDksIDE3LCAxNjQsIDIxOSwgCisgICAgNDksIDE3LCAxODcsIDIxOSwgNDksIDE3LCAyMTAsIDEzNSwgMjE5LCA0OSwgMTcsIDE5MiwgMjE5LCA0OSwgMTcsIDIxOSwgCisgICAgMTEzLCAyMTksIDQ5LCAxLCA2MiwgMjE5LCA0OSwgMSwgMjM4LCAyNTUsIDIxOSwgNDksIDEsIDcwLCAyMTksIDQ5LCAxLCAKKyAgICA3MiwgMjE5LCA0OSwgMSwgNjYsIDIxOSwgNDksIDEsIDIxNywgNjMsIDIxOSwgNDksIDEsIDc0LCAyMTksIDQ5LCAxLCAyNDIsIAorICAgIDQ0LCAyMTksIDQ5LCAxLCAyMjAsIDIxNCwgMjE5LCA0OSwgMSwgMjQ5LCAxMzYsIDIxOSwgNDksIDEsIDE3MiwgMjE5LCA0OSwgCisgICAgMSwgMjA3LCAzNiwgMjE5LCA0OSwgMSwgMjI3LCAyNDgsIDIxOSwgNDksIDEsIDI0NywgMzcsIDIxOSwgNDksIDEsIDI0MiwgCisgICAgNTgsIDIxOSwgNDksIDEsIDIxMywgMjUyLCAyMTksIDQ5LCAxLCAyMTIsIDIxNSwgMjE5LCA0OSwgMSwgMjEyLCA2NCwgMjE5LCAKKyAgICA0OSwgMSwgMjM2LCAzMiwgMjE5LCA0OSwgMSwgMjM3LCAxOTUsIDIxOSwgNDksIDEsIDE2MSwgMjE5LCA0OSwgMSwgMTk0LCAKKyAgICAyMTksIDQ5LCAxLCAyMjAsIDE2MiwgMjAwLCAyNTIsIDIxOSwgNDksIDEsIDE3OCwgMjE5LCA0OSwgMSwgMjE4LCA2MCwgCisgICAgMjE5LCA0OSwgMSwgMTg4LCAyMTksIDQ5LCAxLCAxNDQsIDIxOSwgNDksIDEsIDIwMSwgMTE0LCAyMTksIDQ5LCAxLCAxODMsIAorICAgIDIxOSwgNDksIDEsIDIxOCwgNjEsIDIwMCwgMjUyLCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjI3LCAyNDgsIDIxOSwgNDksIAorICAgIDEsIDIyNywgMTU4LCAyNDcsIDM3LCAyMTksIDQ5LCAxLCAyMjcsIDE1OCwgMjEzLCAyNTIsIDIxOSwgNDksIDM4LCAyMDksIAorICAgIDI1MCwgMTIyLCAyMDUsIDE3NCwgMjE5LCA0OSwgMzgsIDIwOSwgMjUwLCAxMjgsIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgCisgICAgMjA5LCAyNTAsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMTY4LCAyNDEsIDExOCwgMjA1LCAxNzQsIDIxOSwgCisgICAgNDksIDM4LCAxNjgsIDEyMiwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAxNjgsIDEyOCwgMjA1LCAxNzQsIDIxOSwgNDksIDM4LCAKKyAgICAxNjgsIDIxMywgMTksIDIwNSwgMTc0LCAyMTksIDQ5LCAzOCwgMjIwLCAxMjIsIDgxLCAyMTksIDQ5LCAzOCwgNTMsIDczLCAKKyAgICA1NiwgMjE5LCA0OSwgMTIyLCAxNTAsIDI1MSwgMTMsIDIxOSwgNDksIDEyOCwgMTUwLCAyNTEsIDEzLCAyMTksIDQ5LCAxNiwgCisgICAgMjE3LCA2NCwgMjQxLCAxMzIsIDIxOSwgNDksIDE2LCAyMzYsIDMxLCAyMTksIDQ5LCAyNDYsIDcwLCAyMTksIDQ5LCAyMzgsIAorICAgIDQzLCA4MSwgMjE5LCA0OSwgMjI1LCAxNDcsIDIxMiwgMjIsIDEsIDI1MSwgMTQ5LCAyMTIsIDIyLCAxLCAyNDgsIDE1MiwgCisgICAgMjEyLCAyMiwgMSwgMjM2LCA2NSwgMjEyLCAyMiwgMSwgMjQyLCAyOCwgMjEyLCAyMiwgMSwgMjI4LCAzLCAyMTIsIDIyLCAxLCAKKyAgICAyNDksIDEzNCwgMjEyLCAyMiwgMSwgMTk5LCA4NCwgMjEyLCAyMiwgMSwgMjI4LCAxMiwgMjEyLCAyMiwgMSwgMjA1LCAyMTMsIAorICAgIDIxMiwgMjIsIDEsIDE5OSwgMTgwLCAyMTIsIDIyLCAxLCAyMjcsIDEwMiwgMjEyLCAyMiwgMSwgMjI1LCAxNjksIDIxMiwgCisgICAgMjIsIDEsIDIyMSwgMTY2LCAyMTIsIDIyLCAxLCAyMTgsIDg5LCAyMTIsIDIyLCAxLCAyMDksIDE0MCwgMjEyLCAyMiwgMSwgCisgICAgMjI4LCAxMTcsIDIxMiwgMjIsIDEsIDIzNywgMTEyLCAyMTIsIDIyLCAxLCAyMDUsIDMwLCAyMTIsIDIyLCAxLCAyMTQsIDc2LCAKKyAgICAyMTIsIDIyLCAxLCAyMTMsIDIwLCAyMTIsIDIyLCAxLCAyMTAsIDg5LCAyMTIsIDIyLCAxLCAyMDcsIDMxLCAyMTIsIDIyLCAKKyAgICAxMzQsIDIyOCwgMTE3LCAyMTIsIDIyLCAxMzQsIDIyOCwgMTE2LCAyMTIsIDIyLCAxMzQsIDIxNywgMTMzLCAyMTIsIDIyLCAKKyAgICAxMzQsIDI0MiwgNDIsIDIxMiwgMjIsIDY3LCAxLCAyMzgsIDEyOSwgMTk5LCAxODAsIDIxMiwgMjIsIDEzNCwgMjM4LCAxMjksIAorICAgIDE5OSwgMTgwLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA3MiwgMjEyLCAyMiwgMjIsIDIsIDcyLCAyMTIsIDIyLCAyMiwgMiwgCisgICAgMjE2LCAyNDAsIDI1MiwgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMTY4LCAyNTIsIDEzOCwgMjEyLCAyMiwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTIsIDIyLCAyMiwgMiwgMjE2LCAyNDAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMTY4LCA2MiwgMjEyLCAyMiwgMjIsIAorICAgIDIsIDYyLCAyMTIsIDIyLCA2NywgMSwgMjA5LCAyNTAsIDYyLCAyMTIsIDIyLCAyMiwgMiwgMjA5LCAyNTAsIDYyLCAyMTIsIAorICAgIDIyLCAyMiwgMiwgMTY4LCA2NiwgMjEyLCAyMiwgMjIsIDIsIDY2LCAyMTIsIDIyLCA2NywgMSwgNzAsIDIxMiwgMjIsIDIyLCAKKyAgICAyLCAxNjgsIDcwLCAyMTIsIDIyLCAyMiwgMiwgNzAsIDIxMiwgMjIsIDIyLCAyLCA3NCwgMjEyLCAyMiwgMjIsIDIsIDIwNywgCisgICAgMjM2LCAyMTIsIDIyLCAxMzQsIDIyMCwgMTcsIDIxMiwgMjIsIDIxNCwgMjEyLCAyMjAsIDE3LCAyMTIsIDIyLCAyMTQsIAorICAgIDIxMiwgMjUxLCAxOTUsIDIxMiwgMjIsIDIxNCwgMjEyLCAyNTEsIDc1LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjQ5LCA0OCwgCisgICAgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MCwgMTQ5LCAyMTIsIDIyLCAyMTQsIDIxMiwgMjEwLCA5LCAyMTIsIDIyLCAyNTIsIDMsIAorICAgIDgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjIyLCA1MCwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDIyLCAKKyAgICAyMTIsIDIyLCAyMTQsIDIxMiwgMjE0LCAxMTIsIDIxMiwgMjIsIDIxNCwgMjEyLCAxOTksIDExMSwgMjEyLCAyMiwgMjE0LCAKKyAgICAyMTIsIDIwNCwgMTgxLCAyMTIsIDIyLCAyMTQsIDIxMiwgMjUwLCAyMTksIDIxMiwgMjIsIDIxNCwgMjEyLCAyMDksIDI0LCAKKyAgICAyMjIsIDEzMywgMjEyLCAyMiwgMjE0LCAyMTIsIDI1MSwgNTksIDIyMiwgMTc2LCAxLCAyMzQsIDIxMCwgMjIyLCAxNzYsIDEsIAorICAgIDI1MiwgODksIDIyMiwgMTc2LCAxLCAyNTEsIDE5MywgMjIyLCAxNzYsIDEsIDI1MSwgMjM1LCAyMjIsIDE3NiwgMSwgMjUxLCAKKyAgICAxODUsIDIyMiwgMTc2LCAxLCAyMDMsIDE4OCwgMjIyLCAxNzYsIDEsIDI1MCwgMTA1LCAyMjIsIDE3NiwgMSwgMjI4LCAxMiwgCisgICAgMjIyLCAxNzYsIDEsIDI1MCwgMTQ2LCAyMjIsIDE3NiwgMSwgMjUxLCAxNTQsIDIyMiwgMTc2LCAxLCAyNTEsIDE1OSwgMjIyLCAKKyAgICAxNzYsIDEsIDI1MSwgMTUxLCAyMjIsIDE3NiwgMSwgMjUxLCAxMDEsIDIyMiwgMTc2LCAxLCAyNTEsIDg1LCAyMjIsIDE3NiwgCisgICAgMSwgMjUwLCAxODgsIDIyMiwgMTc2LCAxLCAyMjgsIDExNywgMjIyLCAxNzYsIDEsIDI1MSwgMjgsIDIyMiwgMTc2LCAxLCAKKyAgICAyNTAsIDE1NywgMjIyLCAxNzYsIDEsIDI1MSwgMSwgMjIyLCAxNzYsIDEsIDI1MCwgMjUzLCAyMjIsIDE3NiwgMSwgMjUwLCAKKyAgICAxODEsIDIyMiwgMTc2LCAxLCAyNTAsIDE1NSwgMjIyLCAxNzYsIDEsIDIzOSwgMTEyLCAyMjIsIDE3NiwgMSwgMjI3LCA5NCwgCisgICAgMjIyLCAxNzYsIDEsIDI1MSwgMTcxLCAyMjIsIDE3NiwgMjUxLCAxOTksIDgxLCAyMjIsIDE3NiwgMjAyLCAxOTEsIDgxLCAKKyAgICAyMjIsIDE3NiwgMjM2LCAzLCA4MSwgMjIyLCAxNzYsIDIxNCwgMjExLCA5LCAxLCAyNDgsIDI0MSwgMywgNCwgMjAzLCAxNjksIAorICAgIDU3LCA5LCAxLCAyNDgsIDI0MSwgMywgMjM0LCAyMDQsIDU2LCA5LCAxLCAxOTMsIDMsIDEyMCwgMTkwLCA1NiwgOSwgMSwgCisgICAgMjA3LCAxMCwgMywgMTIwLCAxOTAsIDU2LCA5LCAxLCAyMzcsIDEzNSwgMywgNzMsIDI0OCwgMjI4LCAyNiwgMTI2LCAxOTAsIAorICAgIDU2LCA5LCAxLCAyMTQsIDE1MywgMywgNzMsIDU3LCA5LCAxLCAyMjUsIDkyLCAzLCA1MywgMTQ4LCA5LCAxLCA4NCwgMywgCisgICAgMTI2LCAxOTAsIDU2LCA5LCAxLCA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgMjM0LCAyMDQsIDU2LCA5LCAxLCAKKyAgICA5MCwgMywgMTIwLCAxOTAsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA5LCAxLCAyMTMsIDE1NSwgMywgMjI0LCA3NCwgOSwgMSwgCisgICAgMjAxLCA3MywgMywgNzMsIDIwMSwgNCwgOSwgMSwgMjEyLCAyNDUsIDIwMCwgNDYsIDksIDEsIDEyOCwgMjUxLCAxNDIsIDksIAorICAgIDEsIDI0MiwgMzAsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjEyLCA1NywgMywgMTI2LCAxOTAsIDU3LCA5LCAxLCAyMzYsIAorICAgIDc3LCAzLCAyMjgsIDUwLCA5NywgOSwgMSwgMjA4LCA2OCwgMjAxLCA3MiwgOSwgMSwgMTk5LCAxMDYsIDMsIDIyOCwgNTAsIAorICAgIDIwMywgMTY5LCA1NiwgOSwgMSwgMjUxLCAxNzIsIDMsIDEyNiwgMTkwLCA1NywgOSwgMSwgMjI3LCA4NywgMywgNzMsIDU3LCAKKyAgICA5LCAxLCAyNDgsIDI0MSwgMywgNCwgODQsIDU2LCA5LCAxLCAyMTYsIDU1LCAzLCA0LCA4NCwgNTYsIDksIDEsIDIwNiwgCisgICAgMTg0LCAzLCA0LCAyMDYsIDE4NCwgNTYsIDksIDEsIDIxMywgMTU1LCAzLCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDkwLCAzLCAKKyAgICAxMjAsIDE5MCwgMjQ4LCAyMjgsIDI2LCA0LCAyMTgsIDIyOCwgNTYsIDksIDEsIDI1MSwgMTk2LCAyMzcsIDEzNCwgOSwgMSwgCisgICAgMjUxLCAxOTYsIDIxNCwgMTUyLCA5LCAxLCAyNTEsIDE5NiwgMjE4LCAyMjcsIDksIDQsIDEyMiwgMjAwLCAyMzgsIDI1MCwgCisgICAgMjUwLCA5LCA0LCAxMjIsIDIxMiwgNTYsIDksIDQsIDEyMiwgMjUxLCAxNzEsIDksIDQsIDEyMiwgMjE0LCAxNTIsIDksIDQsIAorICAgIDEyMiwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyOCwgMjE4LCAyMjgsIDMsIDIyNywgMzYsIDksIDQsIDEyMiwgCisgICAgMjAwLCAyMzgsIDI1MCwgMTU0LCA5LCA0LCAxMjIsIDIwMCwgMjM4LCAyNTAsIDE4NywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgCisgICAgMjUxLCA4NCwgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjEyLCAzNywgOSwgNCwgMTIyLCAyMDAsIDIzOCwgMjE0LCAxMTYsIDksIAorICAgIDQsIDEyMiwgMjAwLCAyMzgsIDIwMSwgOTUsIDksIDQsIDEyMiwgMjM2LCAyNTMsIDIyMiwgMTQ1LCA5LCA0LCAxMjIsIDIsIAorICAgIDIxMiwgNTIsIDksIDI0MCwgMjUxLCAyMzgsIDE3MSwgNzYsIDI1MCwgMTExLCA5LCAyMDQsIDE4NSwgMjQyLCAxOCwgNTcsIAorICAgIDksIDI0MiwgMTk2LCAyMzcsIDE1OCwgOSwgMjQyLCAxOTYsIDI0MiwgMTcsIDksIDI0MiwgMTk2LCAyMjcsIDM2LCA5LCAKKyAgICAyNDIsIDE5NiwgMjM3LCAxNTYsIDksIDI0MiwgMTk2LCAyNDIsIDE1LCA5LCAyNDIsIDE5NiwgMjI3LCAzNCwgOSwgMTUwLCAKKyAgICAxMTIsIDczLCA1NiwgOSwgMTUwLCAxMjAsIDE5MCwgNTYsIDksIDE1MCwgMjI0LCA3NSwgNTYsIDksIDE1MCwgMTEyLCA3MywgCisgICAgNTcsIDksIDE1MCwgMTIwLCAxOTAsIDU3LCA5LCAxNTAsIDIyNCwgNzUsIDU3LCA5LCAxNzYsIDIzNywgMTU2LCA5LCAxNzYsIAorICAgIDI0MiwgMTUsIDksIDE3NiwgMjI3LCAzNCwgOSwgNCwgMTIyLCAyMDEsIDcyLCA5LCAyMzcsIDE1OSwgMywgMjEzLCAyNiwgOSwgCisgICAgMjM3LCAxNTksIDMsIDczLCA1NiwgOSwgMjI3LCAzNywgMywgNzMsIDU3LCA5LCA0OSwgMjUwLCAyMDMsIDU2LCA5LCA1MSwgCisgICAgMjUwLCAyMDMsIDU2LCA5LCA0OSwgMjUwLCAyMDMsIDU3LCA5LCA1MSwgMjUwLCAyMDMsIDU3LCA5LCA1MywgNTEsIDI1MCwgCisgICAgMjAzLCA1NiwgOSwgNTMsIDUxLCAyNTAsIDIwMywgODgsIDMsIDI0MCwgMTgyLCA5LCA1MSwgMjUwLCAyMDMsIDg4LCAzLCAKKyAgICAyNDAsIDE4MiwgOSwgMjQyLCAxOCwgMywgMjQwLCAxODIsIDksIDEzNCwgMjA5LCAxNzMsIDIxOCwgMjI4LCAyMzUsIDE2NSwgCisgICAgOTQsIDIsIDIyOCwgNTAsIDI0NywgMTQ5LCA5NCwgMiwgMjQ3LCAxNDksIDk0LCAyLCAyNTEsIDMzLCA5NCwgMiwgMjAyLCAKKyAgICAyMDMsIDk0LCAxLCAyMDksIDI1MCwgNjIsIDk0LCAxLCA2MiwgOTQsIDEsIDI1MiwgMTM4LCA5NCwgMSwgNzAsIDk0LCAxLCAKKyAgICAyMjgsIDE1MSwgOTQsIDEsIDY2LCA5NCwgMSwgMjAzLCAxODIsIDk0LCAxLCAxMDksIDE0NiwgOTQsIDEsIDEwOSwgMTU2LCAKKyAgICA5NCwgMSwgMjQ3LCAxNTIsIDcyLCA5NCwgMSwgMjA5LCAyNTAsIDcyLCA5NCwgMSwgNzIsIDk0LCAxLCAyNTEsIDE3NiwgOTQsIAorICAgIDEsIDI0NywgMTUyLCA3NCwgOTQsIDEsIDIwOSwgMjUwLCA3NCwgOTQsIDEsIDc0LCA5NCwgMSwgMjUwLCAxMzksIDk0LCAxLCAKKyAgICAxNjEsIDk0LCAxLCAyMjYsIDIwNywgOTQsIDEsIDIzNiwgODksIDk0LCAxLCAyMzUsIDE5OSwgOTQsIDEsIDIxOSwgMjUzLCAKKyAgICA5NCwgMSwgMjQ3LCAxOTAsIDk0LCAxLCAyNDcsIDM3LCA5NCwgMSwgMjI3LCAyNDgsIDk0LCAxLCAyMjcsIDIxNSwgOTQsIDEsIAorICAgIDIxOCwgNjAsIDk0LCAxLCAyMDQsIDI1MywgOTQsIDEsIDIwNCwgMjQxLCA5NCwgMSwgMjQxLCAyMjAsIDk0LCAxLCAyNDEsIAorICAgIDIwNCwgOTQsIDEsIDIxOSwgMjEsIDk0LCAxLCAyMDcsIDM2LCA5NCwgMSwgMjA2LCAxMjIsIDk0LCAxLCAyNDIsIDU4LCA5NCwgCisgICAgMSwgMjQxLCAxMDAsIDk0LCAxLCAxODgsIDk0LCAxLCAyMTksIDMsIDk0LCAxLCAxNzIsIDk0LCAxLCAyMTUsIDI0NSwgOTQsIAorICAgIDEsIDI0OSwgMTM2LCA5NCwgMSwgMjQ4LCAyMDAsIDk0LCAxLCAxNzgsIDk0LCAxLCAxODMsIDk0LCAxLCAyMTMsIDI1MiwgCisgICAgOTQsIDEsIDIxMiwgMjE1LCA5NCwgMSwgMTk0LCA5NCwgMSwgMjI0LCAxMzgsIDk0LCAxLCAyMjQsIDEyOSwgOTQsIDEsIAorICAgIDIwMywgOTAsIDk0LCAxLCAyMTAsIDExNCwgOTQsIDEsIDIwOCwgMTc5LCA5NCwgMSwgMjEyLCA2NCwgOTQsIDEsIDE0NCwgCisgICAgOTQsIDIyLCAyLCAyMTcsIDEyMSwgOTQsIDIyLCAyLCAyMTcsIDYxLCA5NCwgMiwgMjE4LCAxMDAsIDk0LCAyLCAyNTAsIAorICAgIDEyMiwgOTQsIDIyLCAyLCAyNTIsIDEzOCwgOTQsIDIyLCAyLCA3MCwgOTQsIDIyLCAyLCAyMjgsIDE1MSwgOTQsIDIyLCAyLCAKKyAgICA2NiwgOTQsIDIyLCAyLCAyMDMsIDE4MiwgOTQsIDIyLCAyLCAxMDksIDE0NiwgOTQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAKKyAgICA5NCwgMjIsIDIsIDI0NywgMTUyLCA3MiwgOTQsIDIyLCAyLCAyMDksIDI1MCwgNzIsIDk0LCAyMiwgMiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDk0LCAyMiwgMiwgMjQ3LCAxNTIsIDc0LCA5NCwgMjIsIDIsIDIwOSwgMjUwLCA3NCwgOTQsIDIyLCAyLCAKKyAgICA3NCwgOTQsIDIyLCAyLCAyNTAsIDEzOSwgOTQsIDIsIDIwMiwgMjA4LCA5NCwgMjIsIDIsIDIxNSwgNiwgNzIsIDk0LCAyMiwgCisgICAgMiwgMjUwLCAxMTcsIDk0LCAyMTcsIDg2LCA5NCwgMjA4LCA1NywgMiwgMjA0LCAzMywgOTQsIDIwOCwgNTcsIDIsIDI1MSwgCisgICAgMzUsIDk0LCAyMzUsIDc0LCAyNTEsIDI1MSwgOTQsIDI1MSwgMjM5LCAyNTEsIDI1MSwgOTQsIDIyLCAyLCAyNDcsIDE1MiwgCisgICAgMTY4LCA3MiwgOTQsIDIyLCAyLCAyMDQsIDMxLCA5NCwgMjIsIDIsIDIwMywgMTgxLCA5NCwgMSwgMjE0LCAxNTksIDk0LCAxLCAKKyAgICAyMjYsIDE4OCwgOTQsIDEsIDIzNSwgMTc0LCA5NCwgMSwgMTk5LCAxMTQsIDk0LCAxLCAyNDEsIDIwOSwgOTQsIDEsIDIxMywgCisgICAgOTMsIDk0LCAxLCAyMzcsIDE5NSwgOTQsIDEsIDE5OSwgMTY2LCA5NCwgMSwgMTA5LCAyMTIsIDIxNiwgOTQsIDEsIDEwOSwgCisgICAgMjI0LCAxMzksIDk0LCAyMiwgMiwgMTA5LCAxNTYsIDk0LCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgOTQsIDI0MiwgMTAsIDk0LCAKKyAgICA1MywgMjQyLCAxMCwgOTQsIDE3LCAxOTksIDgxLCA5NCwgMTcsIDEwMiwgOTQsIDE3LCAxMDUsIDk0LCAxNywgMTQ3LCA5NCwgCisgICAgMTcsIDE0OSwgOTQsIDE3LCAxNjQsIDk0LCAxNywgMTg3LCA5NCwgMTcsIDIxMCwgMTM1LCA5NCwgMTcsIDE5MiwgOTQsIDE3LCAKKyAgICAyMTksIDExMywgOTQsIDI1MiwgMywgNTQsIDk0LCAyLCAxMjIsIDIwOCwgMjQzLCAyNDAsIDE4MiwgOTQsIDEsIDI0NywgCisgICAgMTUyLCA2MiwgOTQsIDEsIDIxNywgMTIxLCA5NCwgMSwgMjE3LCA2MSwgOTQsIDEsIDI1MCwgMTE3LCA5NCwgMSwgMjA0LCAKKyAgICAzMSwgOTQsIDEsIDIwMywgMTgxLCA5NCwgMSwgMjIyLCAxMzgsIDI0MSwgMjIwLCA5NCwgMSwgMTk5LCA3NywgOTQsIDEsIAorICAgIDgwLCAxODMsIDk0LCAxLCAyMzUsIDIzNSwgOTQsIDEsIDIyNywgMTk0LCA5NCwgMSwgMjM1LCAxMjMsIDIwOCwgNzYsIDk0LCAKKyAgICAxLCAyNDEsIDIxMCwgOTQsIDEsIDI0OSwgNDQsIDE4NSwgMjUxLCA2MiwgMTg1LCAyLCAyNDcsIDE0OSwgMTg1LCAyLCAyNTEsIAorICAgIDMzLCAxODUsIDIsIDIwMiwgMjAzLCAxODUsIDEsIDYyLCAxODUsIDEsIDI1MiwgMTM4LCAxODUsIDEsIDcwLCAxODUsIDEsIAorICAgIDIyOCwgMTUxLCAxODUsIDEsIDY2LCAxODUsIDEsIDIwMywgMTgyLCAxODUsIDEsIDEwOSwgMTQ2LCAxODUsIDEsIDEwOSwgCisgICAgMTU2LCAxODUsIDEsIDcyLCAxODUsIDEsIDI1MSwgMTc2LCAxODUsIDEsIDc0LCAxODUsIDEsIDI1MCwgMTM5LCAxODUsIDEsIAorICAgIDE2MSwgMTg1LCAxLCAyMjYsIDIwNywgMTg1LCAxLCAyMzYsIDg5LCAxODUsIDEsIDIzNSwgMTk5LCAxODUsIDEsIDIxOSwgCisgICAgMjUzLCAxODUsIDEsIDI0NywgMTkwLCAxODUsIDEsIDI0NywgMzcsIDE4NSwgMSwgMjI3LCAyNDgsIDE4NSwgMSwgMjI3LCAKKyAgICAyMTUsIDE4NSwgMSwgMjE4LCA2MCwgMTg1LCAxLCAyMDQsIDI1MywgMTg1LCAxLCAyMDQsIDI0MSwgMTg1LCAxLCAyNDEsIAorICAgIDIyMCwgMTg1LCAxLCAyNDEsIDIwNCwgMTg1LCAxLCAyMTksIDIxLCAxODUsIDEsIDIwNywgMzYsIDE4NSwgMSwgMjA2LCAKKyAgICAxMjIsIDE4NSwgMSwgMjQyLCA1OCwgMTg1LCAxLCAyNDEsIDEwMCwgMTg1LCAxLCAxODgsIDE4NSwgMSwgMTcyLCAxODUsIDEsIAorICAgIDIxNSwgMjQ1LCAxODUsIDEsIDI0OSwgMTM2LCAxODUsIDEsIDI0OCwgMjAwLCAxODUsIDEsIDE3OCwgMTg1LCAxLCAxODMsIAorICAgIDE4NSwgMSwgMjEzLCAyNTIsIDE4NSwgMSwgMTk0LCAxODUsIDEsIDIxMCwgMTE0LCAxODUsIDEsIDIwOCwgMTc5LCAxODUsIAorICAgIDEsIDIxMiwgNjQsIDE4NSwgMSwgMTQ0LCAxODUsIDIsIDIxOCwgMTAwLCAxODUsIDIsIDI1MCwgMTIyLCAxODUsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMTg1LCAyMiwgMiwgNzAsIDE4NSwgMjIsIDIsIDIyOCwgMTUxLCAxODUsIDIyLCAyLCA2NiwgMTg1LCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDE4NSwgMjIsIDIsIDEwOSwgMTQ2LCAxODUsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAxODUsIDIyLCAyLCAKKyAgICA3MiwgMTg1LCAyMiwgMiwgMjUxLCAxNzYsIDE4NSwgMjIsIDIsIDc0LCAxODUsIDIyLCAyLCAyNTAsIDEzOSwgMTg1LCAyLCAKKyAgICAyMDIsIDIwOCwgMTg1LCAxLCAyMjYsIDE5OCwgMjA3LCAzNiwgMTg1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTg1LCAxLCAKKyAgICAyMTIsIDIxNSwgMTg1LCAxLCAyMTMsIDkzLCAxODUsIDEsIDE5OSwgMTY2LCAxODUsIDEsIDEwOSwgMjEyLCAyMTYsIDE4NSwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTg1LCAyMiwgMiwgMTA5LCAxNTYsIDE4NSwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4NSwgCisgICAgMTcsIDE5OSwgODEsIDE4NSwgMTcsIDEwMiwgMTg1LCAxNywgMTA1LCAxODUsIDE3LCAxNDcsIDE4NSwgMTcsIDE0OSwgMTg1LCAKKyAgICAxNywgMTY0LCAxODUsIDE3LCAxODcsIDE4NSwgMTcsIDIxMCwgMTM1LCAxODUsIDE3LCAxOTIsIDE4NSwgMTcsIDIxOSwgCisgICAgMTEzLCAxODUsIDEsIDIxMywgMjUzLCAzLCAxMDEsIDI0MSwgNzAsIDE4NSwgMSwgMjEzLCAyNTMsIDMsIDIyNCwgNTQsIAorICAgIDI0MSwgNzAsIDE4NSwgMjEyLCAxNDksIDgxLCAxODUsIDIxMiwgMTQ5LCA1NCwgMTg1LCAyNDIsIDE5NSwgMjE4LCA5MiwgCisgICAgMTAyLCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMDUsIDE4NSwgMjQyLCAxOTUsIDIxOCwgOTIsIDE0NywgMTg1LCAyNDIsIAorICAgIDE5NSwgMjE4LCA5MiwgMTQ5LCAxODUsIDI0MiwgMTk1LCAyMTgsIDkyLCAxMTIsIDIyNCwgMjQyLCAyMDYsIDExMiwgMjA2LCAKKyAgICAxMDcsIDI0MSwgMTMwLCAxODUsIDI0MiwgMTk1LCAyNDEsIDEzMSwgMjA5LCAxMDAsIDE4NSwgMjI4LCAxMywgMTg1LCAyMzYsIAorICAgIDU2LCA4MSwgMjM1LCAxOCwgMiwgMjUxLCAyMzQsIDI0OCwgMTY4LCAyMzUsIDE4LCAyLCAyNDgsIDE2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAyLCAyMDMsIDIzNSwgMTgsIDEsIDYyLCAyMzUsIDE4LCAxLCAyNTIsIDEzOCwgMjM1LCAxOCwgMSwgNzAsIDIzNSwgMTgsIAorICAgIDEsIDIyOCwgMTUxLCAyMzUsIDE4LCAxLCA2NiwgMjM1LCAxOCwgMSwgMjAzLCAxODIsIDIzNSwgMTgsIDEsIDIzOCwgMjU1LCAKKyAgICAyMzUsIDE4LCAxLCAyNTEsIDE3NiwgMjM1LCAxOCwgMSwgMjE3LCA2MywgMjM1LCAxOCwgMSwgMjUwLCAxMzksIDIzNSwgMTgsIAorICAgIDEsIDE2MSwgMjM1LCAxOCwgMSwgMjI2LCAyMDcsIDIzNSwgMTgsIDEsIDIzNiwgODksIDIzNSwgMTgsIDEsIDIzNSwgMTk5LCAKKyAgICAyMzUsIDE4LCAxLCAyMTksIDI1MywgMjM1LCAxOCwgMSwgMjQ3LCAxOTAsIDIzNSwgMTgsIDEsIDI0NywgMzcsIDIzNSwgMTgsIAorICAgIDEsIDIyNywgMjQ4LCAyMzUsIDE4LCAxLCAyMjcsIDIxNSwgMjM1LCAxOCwgMSwgMjE4LCA2MCwgMjM1LCAxOCwgMSwgMjA0LCAKKyAgICAyNTMsIDIzNSwgMTgsIDEsIDIwNCwgMjQxLCAyMzUsIDE4LCAxLCAyNDEsIDIyMCwgMjM1LCAxOCwgMSwgMjQxLCAyMDQsIAorICAgIDIzNSwgMTgsIDEsIDIxOSwgMjEsIDIzNSwgMTgsIDEsIDIwNywgMzYsIDIzNSwgMTgsIDEsIDIwNiwgMTIyLCAyMzUsIDE4LCAKKyAgICAxLCAyNDIsIDU4LCAyMzUsIDE4LCAxLCAyNDEsIDEwMCwgMjM1LCAxOCwgMSwgMTg4LCAyMzUsIDE4LCAxLCAxNzIsIDIzNSwgCisgICAgMTgsIDEsIDIxNSwgMjQ1LCAyMzUsIDE4LCAxLCAyNDksIDEzNiwgMjM1LCAxOCwgMSwgMjQ4LCAyMDAsIDIzNSwgMTgsIDEsIAorICAgIDE3OCwgMjM1LCAxOCwgMSwgMTgzLCAyMzUsIDE4LCAxLCAyMTMsIDI1MiwgMjM1LCAxOCwgMSwgMTk0LCAyMzUsIDE4LCAxLCAKKyAgICAyMjQsIDEzOCwgMjM1LCAxOCwgMSwgMjAzLCA5MCwgMjM1LCAxOCwgMSwgMjEwLCAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgNjQsIAorICAgIDIzNSwgMTgsIDEsIDE0NCwgMjM1LCAxOCwgMiwgMjE4LCAxMDAsIDIzNSwgMTgsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDcwLCAyMzUsIDE4LCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMTgsIDIyLCAyLCA2NiwgMjM1LCAxOCwgMjIsIDIsIAorICAgIDIwMywgMTgyLCAyMzUsIDE4LCAyMiwgMiwgMjM4LCAyNTUsIDIzNSwgMTgsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAxOCwgCisgICAgMjIsIDIsIDIxNywgNjMsIDIzNSwgMTgsIDIyLCAyLCAyNTAsIDEzOSwgMjM1LCAxOCwgMiwgMjAyLCAyMDgsIDIzNSwgMTgsIAorICAgIDIsIDIwNCwgMzUsIDIzNSwgMTgsIDEsIDIyNiwgMTg4LCAyMzUsIDE4LCAxLCAyMzUsIDE3NCwgMjM1LCAxOCwgMSwgMTk5LCAKKyAgICAxMTQsIDIzNSwgMTgsIDEsIDIxMiwgMjE1LCAyMzUsIDE4LCAxLCAyMzcsIDE5NSwgMjM1LCAxOCwgMTcsIDE5OSwgODEsIAorICAgIDIzNSwgMTgsIDE3LCAxMDIsIDIzNSwgMTgsIDE3LCAxMDUsIDIzNSwgMTgsIDE3LCAxNDcsIDIzNSwgMTgsIDE3LCAxNDksIAorICAgIDIzNSwgMTgsIDE3LCAxNjQsIDIzNSwgMTgsIDE3LCAxODcsIDIzNSwgMTgsIDE3LCAyMTAsIDEzNSwgMjM1LCAxOCwgMTcsIAorICAgIDE5MiwgMjM1LCAxOCwgMTcsIDIxOSwgMTEzLCAyMzUsIDE4LCAyMDUsIDIyMSwgMjM1LCAxOCwgMjUxLCAyMzMsIDIzNSwgCisgICAgMTgsIDIyOCwgMzMsIDIzNSwgMTgsIDIwMywgMjEwLCAyMzUsIDE4LCAyMzgsIDIxNywgMjE3LCA2OCwgMjM1LCAxOCwgMiwgCisgICAgMjAwLCA4NCwgMjM1LCAzMywgMiwgMjQ3LCAxNDksIDIzNSwgMzMsIDIsIDI1MSwgMzMsIDIzNSwgMzMsIDIsIDIwMiwgMjAzLCAKKyAgICAyMzUsIDMzLCAxLCA2MiwgMjM1LCAzMywgMSwgMjUyLCAxMzgsIDIzNSwgMzMsIDEsIDcwLCAyMzUsIDMzLCAxLCAyMjgsIAorICAgIDE1MSwgMjM1LCAzMywgMSwgNjYsIDIzNSwgMzMsIDEsIDIwMywgMTgyLCAyMzUsIDMzLCAxLCAxMDksIDE0NiwgMjM1LCAzMywgCisgICAgMSwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyNDcsIDE1MiwgNzIsIDIzNSwgMzMsIDEsIDcyLCAyMzUsIDMzLCAxLCAyNTEsIAorICAgIDE3NiwgMjM1LCAzMywgMjIsIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMSwgNzQsIDIzNSwgMzMsIDEsIDI1MCwgMTM5LCAKKyAgICAyMzUsIDMzLCAxLCAxNjEsIDIzNSwgMzMsIDEsIDIyNiwgMjA3LCAyMzUsIDMzLCAxLCAyMzYsIDg5LCAyMzUsIDMzLCAxLCAKKyAgICAyMzUsIDE5OSwgMjM1LCAzMywgMSwgMjE5LCAyNTMsIDIzNSwgMzMsIDEsIDI0NywgMTkwLCAyMzUsIDMzLCAxLCAyNDcsIAorICAgIDM3LCAyMzUsIDMzLCAxLCAyMjcsIDI0OCwgMjM1LCAzMywgMSwgMjI3LCAyMTUsIDIzNSwgMzMsIDEsIDIxOCwgNjAsIDIzNSwgCisgICAgMzMsIDEsIDIwNCwgMjUzLCAyMzUsIDMzLCAxLCAyMDQsIDI0MSwgMjM1LCAzMywgMSwgMjQxLCAyMjAsIDIzNSwgMzMsIDEsIAorICAgIDI0MSwgMjA0LCAyMzUsIDMzLCAxLCAyMTksIDIxLCAyMzUsIDMzLCAxLCAyMDcsIDM2LCAyMzUsIDMzLCAxLCAyMDYsIDEyMiwgCisgICAgMjM1LCAzMywgMSwgMjQyLCA1OCwgMjM1LCAzMywgMSwgMjQxLCAxMDAsIDIzNSwgMzMsIDEsIDE4OCwgMjM1LCAzMywgMSwgCisgICAgMTcyLCAyMzUsIDMzLCAxLCAyMTUsIDI0NSwgMjM1LCAzMywgMSwgMjQ5LCAxMzYsIDIzNSwgMzMsIDEsIDI0OCwgMjAwLCAKKyAgICAyMzUsIDMzLCAxLCAxNzgsIDIzNSwgMzMsIDEsIDE4MywgMjM1LCAzMywgMSwgMjEzLCAyNTIsIDIzNSwgMzMsIDEsIDE5NCwgCisgICAgMjM1LCAzMywgMSwgMjI0LCAxMzgsIDIzNSwgMzMsIDEsIDIwMywgOTAsIDIzNSwgMzMsIDEsIDIxMCwgMTE0LCAyMzUsIDMzLCAKKyAgICAxLCAyMDgsIDE3OSwgMjM1LCAzMywgMSwgMjEyLCA2NCwgMjM1LCAzMywgMSwgMTQ0LCAyMzUsIDMzLCAyLCAyMTgsIDEwMCwgCisgICAgMjM1LCAzMywgMiwgMjUwLCAxMjIsIDIzNSwgMzMsIDIyLCAyLCAyNTIsIDEzOCwgMjM1LCAzMywgMjIsIDIsIDcwLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMjI4LCAxNTEsIDIzNSwgMzMsIDIyLCAyLCA2NiwgMjM1LCAzMywgMjIsIDIsIDIwMywgMTgyLCAyMzUsIAorICAgIDMzLCAyMiwgMiwgMTA5LCAxNDYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAyMiwgMiwgMjQ3LCAKKyAgICAxNTIsIDcyLCAyMzUsIDMzLCAyMiwgMiwgNzIsIDIzNSwgMzMsIDIyLCAyLCAyNTEsIDE3NiwgMjM1LCAzMywgMjIsIDIsIAorICAgIDI0NywgMTUyLCA3NCwgMjM1LCAzMywgMjIsIDIsIDc0LCAyMzUsIDMzLCAyMiwgMiwgMjUwLCAxMzksIDIzNSwgMzMsIDIsIAorICAgIDIwMiwgMjA4LCAyMzUsIDMzLCAyMTcsIDg2LCAyMzUsIDMzLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDMzLCAxLCAxMDksIAorICAgIDIyNCwgMTM5LCAyMzUsIDMzLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgMzMsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMzUsIAorICAgIDMzLCAxNywgMTk5LCA4MSwgMjM1LCAzMywgMTcsIDEwMiwgMjM1LCAzMywgMTcsIDEwNSwgMjM1LCAzMywgMTcsIDE0NywgCisgICAgMjM1LCAzMywgMTcsIDE0OSwgMjM1LCAzMywgMTcsIDE2NCwgMjM1LCAzMywgMTcsIDE4NywgMjM1LCAzMywgMTcsIDIxMCwgCisgICAgMTM1LCAyMzUsIDMzLCAxNywgMTkyLCAyMzUsIDMzLCAxNywgMjE5LCAxMTMsIDIzNSwgMzMsIDI1MiwgMywgNTQsIDIzNSwgCisgICAgMzMsIDIxMiwgMTQ5LCA1NCwgMjM1LCAzMywgMSwgMTk5LCA3NywgMjE3LCAyNCwgMiwgMjQ3LCAxNDksIDIxNywgMjQsIDIsIAorICAgIDI1MSwgMzMsIDIxNywgMjQsIDIsIDIwMiwgMjAzLCAyMTcsIDI0LCAxLCA2MiwgMjE3LCAyNCwgMSwgMjUyLCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDcwLCAyMTcsIDI0LCAxLCAyMjgsIDE1MSwgMjE3LCAyNCwgMSwgNjYsIDIxNywgMjQsIDEsIDIwMywgMTgyLCAKKyAgICAyMTcsIDI0LCAxLCAxMDksIDE0NiwgMjE3LCAyNCwgMSwgMTA5LCAxNTYsIDIxNywgMjQsIDEsIDcyLCAyMTcsIDI0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAyNCwgMSwgNzQsIDIxNywgMjQsIDEsIDI1MCwgMTM5LCAyMTcsIDI0LCAxLCAxNjEsIDIxNywgMjQsIAorICAgIDEsIDIyNiwgMjA3LCAyMTcsIDI0LCAxLCAyMzYsIDg5LCAyMTcsIDI0LCAxLCAyMzUsIDE5OSwgMjE3LCAyNCwgMSwgMjE5LCAKKyAgICAyNTMsIDIxNywgMjQsIDEsIDI0NywgMTkwLCAyMTcsIDI0LCAxLCAyNDcsIDM3LCAyMTcsIDI0LCAxLCAyMjcsIDI0OCwgCisgICAgMjE3LCAyNCwgMSwgMjI3LCAyMTUsIDIxNywgMjQsIDEsIDIxOCwgNjAsIDIxNywgMjQsIDEsIDIwNCwgMjUzLCAyMTcsIDI0LCAKKyAgICAxLCAyMDQsIDI0MSwgMjE3LCAyNCwgMSwgMjQxLCAyMjAsIDIxNywgMjQsIDEsIDI0MSwgMjA0LCAyMTcsIDI0LCAxLCAyMTksIAorICAgIDIxLCAyMTcsIDI0LCAxLCAyMDcsIDM2LCAyMTcsIDI0LCAxLCAyMDYsIDEyMiwgMjE3LCAyNCwgMSwgMjQyLCA1OCwgMjE3LCAKKyAgICAyNCwgMSwgMjQxLCAxMDAsIDIxNywgMjQsIDEsIDE4OCwgMjE3LCAyNCwgMSwgMTcyLCAyMTcsIDI0LCAxLCAyMTUsIDI0NSwgCisgICAgMjE3LCAyNCwgMSwgMjQ5LCAxMzYsIDIxNywgMjQsIDEsIDI0OCwgMjAwLCAyMTcsIDI0LCAxLCAxNzgsIDIxNywgMjQsIDEsIAorICAgIDE4MywgMjE3LCAyNCwgMSwgMjEzLCAyNTIsIDIxNywgMjQsIDEsIDE5NCwgMjE3LCAyNCwgMSwgMjI0LCAxMzgsIDIxNywgCisgICAgMjQsIDEsIDIwMywgOTAsIDIxNywgMjQsIDEsIDIxMCwgMTE0LCAyMTcsIDI0LCAxLCAyMDgsIDE3OSwgMjE3LCAyNCwgMSwgCisgICAgMjEyLCA2NCwgMjE3LCAyNCwgMSwgMTQ0LCAyMTcsIDI0LCAyLCAyMTgsIDEwMCwgMjE3LCAyNCwgMiwgMjUwLCAxMjIsIAorICAgIDIxNywgMjQsIDIyLCAyLCAyNTIsIDEzOCwgMjE3LCAyNCwgMjIsIDIsIDcwLCAyMTcsIDI0LCAyMiwgMiwgMjI4LCAxNTEsIAorICAgIDIxNywgMjQsIDIyLCAyLCA2NiwgMjE3LCAyNCwgMjIsIDIsIDIwMywgMTgyLCAyMTcsIDI0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDIxNywgMjQsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMTcsIDI0LCAyMiwgMiwgNzIsIDIxNywgMjQsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjE3LCAyNCwgMjIsIDIsIDc0LCAyMTcsIDI0LCAyMiwgMiwgMjUwLCAxMzksIDIxNywgMjQsIDIsIDIwMiwgMjA4LCAKKyAgICAyMTcsIDI0LCAyNTEsIDE3NywgMjI1LCAyLCA4MSwgMjE3LCAyNCwgMjUwLCAxNDAsIDIyNSwgMiwgODEsIDIxNywgMjQsIDEsIAorICAgIDIxMiwgMjE1LCAyMTcsIDI0LCAxLCAyMTMsIDkzLCAyMTcsIDI0LCAxLCAxOTksIDE2NiwgMjE3LCAyNCwgMSwgMTA5LCAKKyAgICAyMTIsIDIxNiwgMjE3LCAyNCwgMSwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMjIsIDIsIDEwOSwgMTU2LCAyMTcsIDI0LCAKKyAgICAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgMjE3LCAyNCwgMTcsIDE5OSwgODEsIDIxNywgMjQsIDE3LCAxMDIsIDIxNywgMjQsIAorICAgIDE3LCAxMDUsIDIxNywgMjQsIDE3LCAxNDcsIDIxNywgMjQsIDE3LCAxNDksIDIxNywgMjQsIDE3LCAxNjQsIDIxNywgMjQsIAorICAgIDE3LCAxODcsIDIxNywgMjQsIDE3LCAyMTAsIDEzNSwgMjE3LCAyNCwgMTcsIDE5MiwgMjE3LCAyNCwgMTcsIDIxOSwgMTEzLCAKKyAgICAyMTcsIDI0LCAyMjgsIDEzLCAyMTcsIDI0LCAxLCAyMDEsIDExNCwgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgCisgICAgMjE3LCAyNCwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDIxNywgMjQsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDIxNywgCisgICAgMjQsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIDIxNywgMjQsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAyMTcsIDI0LCAKKyAgICAyMzYsIDIxOSwgMTI2LCAyMDksIDk3LCA0NSwgMiwgMjUxLCAzMywgNDUsIDIsIDIwMiwgMjAzLCA0NSwgMSwgNjIsIDQ1LCAKKyAgICAxLCAyNTIsIDEzOCwgNDUsIDEsIDcwLCA0NSwgMSwgMjI4LCAxNTEsIDQ1LCAxLCA2NiwgNDUsIDEsIDIwMywgMTgyLCA0NSwgCisgICAgMSwgNzIsIDQ1LCAxLCAyMzgsIDI1NSwgNDUsIDEsIDI1MSwgMTc2LCA0NSwgMSwgNzQsIDQ1LCAxLCAyMTcsIDYzLCA0NSwgCisgICAgMSwgMjUwLCAxMzksIDQ1LCAxLCAxNjEsIDQ1LCAxLCAyMTksIDI1MywgNDUsIDEsIDI0NywgMTkwLCA0NSwgMSwgMjI3LCAKKyAgICAyNDgsIDQ1LCAxLCAyMTgsIDYwLCA0NSwgMSwgMjA0LCAyNTMsIDQ1LCAxLCAyMTksIDIxLCA0NSwgMSwgMjA3LCAzNiwgNDUsIAorICAgIDEsIDE4OCwgNDUsIDEsIDIxOSwgMywgNDUsIDEsIDE3MiwgNDUsIDEsIDE3OCwgNDUsIDEsIDE4MywgNDUsIDEsIDIxMywgCisgICAgMjUyLCA0NSwgMSwgMjEyLCAyMTUsIDQ1LCAxLCAxOTQsIDQ1LCAxLCAyMjQsIDEzOCwgNDUsIDEsIDIyNCwgMTI5LCA0NSwgCisgICAgMSwgMjAzLCA5MCwgNDUsIDEsIDIxMCwgMTE0LCA0NSwgMSwgMjA4LCAxNzksIDQ1LCAxLCAyMTIsIDY0LCA0NSwgMSwgMTQ0LCAKKyAgICA0NSwgMjIsIDIsIDI1MiwgMTM4LCA0NSwgMjIsIDIsIDcwLCA0NSwgMjIsIDIsIDIyOCwgMTUxLCA0NSwgMjIsIDIsIDY2LCAKKyAgICA0NSwgMjIsIDIsIDIwMywgMTgyLCA0NSwgMjIsIDIsIDcyLCA0NSwgMjIsIDIsIDIzOCwgMjU1LCA0NSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCA0NSwgMjIsIDIsIDc0LCA0NSwgMjIsIDIsIDIxNywgNjMsIDQ1LCAyMiwgMiwgMjUwLCAxMzksIDQ1LCAyLCAyMDIsIAorICAgIDIwOCwgNDUsIDIxNywgODYsIDQ1LCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgNDUsIDE3LCAxOTksIDgxLCA0NSwgMTcsIDEwMiwgCisgICAgNDUsIDE3LCAxMDUsIDQ1LCAxNywgMTQ3LCA0NSwgMTcsIDE0OSwgNDUsIDE3LCAxNjQsIDQ1LCAxNywgMTg3LCA0NSwgMTcsIAorICAgIDIxMCwgMTM1LCA0NSwgMTcsIDE5MiwgNDUsIDE3LCAyMTksIDExMywgNDUsIDQxLCAyMDYsIDE2NiwgNDUsIDQxLCAxMTIsIAorICAgIDIzMywgODIsIDQ1LCA0MSwgMTEyLCAyMDYsIDUwLCA0NSwgMjQxLCAyMzMsIDU0LCA0NSwgMjIxLCA5MCwgNTQsIDQ1LCAKKyAgICAyMDAsIDQ5LCA1NCwgNDUsIDI0MSwgMTcyLCA1NCwgNDUsIDI0MiwgMjQ2LCA1NCwgNDUsIDI1MCwgMTg5LCA4OCwgNTQsIAorICAgIDQ1LCAyMTIsIDE0OSwgNTQsIDQ1LCA0MSwgNTQsIDE4MCwgMiwgMzgsIDI0NywgMTUwLCA1NiwgMTgwLCAyLCAyNDcsIDE0OSwgCisgICAgMTgwLCAyLCAyNTEsIDMzLCAxODAsIDIsIDIwMiwgMjAzLCAxODAsIDEsIDYyLCAxODAsIDEsIDI1MiwgMTM4LCAxODAsIDEsIAorICAgIDcwLCAxODAsIDEsIDIyOCwgMTUxLCAxODAsIDEsIDY2LCAxODAsIDEsIDIwMywgMTgyLCAxODAsIDEsIDEwOSwgMTQ2LCAKKyAgICAxODAsIDEsIDEwOSwgMTU2LCAxODAsIDEsIDcyLCAxODAsIDEsIDIzOCwgMjU1LCAxODAsIDEsIDI1MSwgMTc2LCAxODAsIDEsIAorICAgIDc0LCAxODAsIDEsIDIxNywgNjMsIDE4MCwgMSwgMjUwLCAxMzksIDE4MCwgMSwgMTYxLCAxODAsIDEsIDIyNiwgMjA3LCAKKyAgICAxODAsIDEsIDIzNiwgODksIDE4MCwgMSwgMjM1LCAxOTksIDE4MCwgMSwgMjE5LCAyNTMsIDE4MCwgMSwgMjQ3LCAxOTAsIAorICAgIDE4MCwgMSwgMjQ3LCAzNywgMTgwLCAxLCAyMjcsIDI0OCwgMTgwLCAxLCAyMjcsIDIxNSwgMTgwLCAxLCAyMTgsIDYwLCAKKyAgICAxODAsIDEsIDIwNCwgMjUzLCAxODAsIDEsIDIwNCwgMjQxLCAxODAsIDEsIDI0MSwgMjIwLCAxODAsIDEsIDI0MSwgMjA0LCAKKyAgICAxODAsIDEsIDIxOSwgMjEsIDE4MCwgMSwgMjA3LCAzNiwgMTgwLCAxLCAyMDYsIDEyMiwgMTgwLCAxLCAyNDIsIDU4LCAxODAsIAorICAgIDEsIDI0MSwgMTAwLCAxODAsIDEsIDE4OCwgMTgwLCAxLCAxNzIsIDE4MCwgMSwgMjE1LCAyNDUsIDE4MCwgMSwgMjQ5LCAKKyAgICAxMzYsIDE4MCwgMSwgMjQ4LCAyMDAsIDE4MCwgMSwgMTc4LCAxODAsIDEsIDE4MywgMTgwLCAxLCAyMTMsIDI1MiwgMTgwLCAKKyAgICAxLCAyMTIsIDIxNSwgMTgwLCAxLCAxOTQsIDE4MCwgMSwgMjI0LCAxMzgsIDE4MCwgMSwgMjI0LCAxMjksIDE4MCwgMSwgCisgICAgMjAzLCA5MCwgMTgwLCAxLCAyMTAsIDExNCwgMTgwLCAxLCAyMDgsIDE3OSwgMTgwLCAxLCAyMTIsIDY0LCAxODAsIDEsIAorICAgIDE0NCwgMTgwLCAyLCAyNTAsIDEyMiwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDE4MCwgMjIsIDIsIDcwLCAxODAsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTgwLCAyMiwgMiwgNjYsIDE4MCwgMjIsIDIsIDIwMywgMTgyLCAxODAsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTgwLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTgwLCAyMiwgMiwgNzIsIDE4MCwgMjIsIDIsIDIzOCwgMjU1LCAxODAsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTgwLCAyMiwgMiwgNzQsIDE4MCwgMjIsIDIsIDIxNywgNjMsIDE4MCwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxODAsIDIsIDIwMiwgMjA4LCAxODAsIDIyNSwgMiwgODEsIDE4MCwgMjUxLCAxNzcsIDIyNSwgMiwgODEsIDE4MCwgMSwgCisgICAgMjA1LCAzMiwgMTgwLCAxLCAyMzksIDkzLCAxODAsIDEsIDIxMiwgMTk2LCAxODAsIDEsIDEwOSwgMjEyLCAyMTYsIDE4MCwgCisgICAgMSwgMTA5LCAyMjQsIDEzOSwgMTgwLCAyMiwgMiwgMTA5LCAxNTYsIDE4MCwgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDE4MCwgCisgICAgMTcsIDE5OSwgODEsIDE4MCwgMTcsIDEwMiwgMTgwLCAxNywgMTA1LCAxODAsIDE3LCAxNDcsIDE4MCwgMTcsIDE0OSwgMTgwLCAKKyAgICAxNywgMTY0LCAxODAsIDE3LCAxODcsIDE4MCwgMTcsIDIxMCwgMTM1LCAxODAsIDE3LCAxOTIsIDE4MCwgMTcsIDIxOSwgCisgICAgMTEzLCAxODAsIDIzNiwgMjE5LCAxNywgMTk5LCA4MiwgMzYsIDIxNywgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIAorICAgIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjE3LCAxMjUsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAyMTksIDE3LCAKKyAgICAxMjAsIDM2LCAyMTcsIDEyNSwgMjE1LCA1MCwgNzYsIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyNiwgMzYsIDIxNywgCisgICAgMTI1LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIzNiwgMjE5LCAxNywgMTEyLCAzNiwgMjM4LCA1NiwgMjE1LCA1MCwgNzYsIAorICAgIDE0OSwgMTgwLCAyMzYsIDIxOSwgMTcsIDEyMCwgMzYsIDIzOCwgNTYsIDIxNSwgNTAsIDc2LCAxNDksIDE4MCwgMjM2LCAKKyAgICAyMTksIDE3LCAxMjYsIDM2LCAyMzgsIDU2LCAyMTUsIDUwLCA3NiwgMTQ5LCAxODAsIDIsIDIwNCwgMTc1LCAyMjcsIDYzLCAKKyAgICAyLCAyMDgsIDI0MywgMjQ3LCAxNDksIDIyNywgNjMsIDIsIDI0NywgMTQ5LCAyMjcsIDYzLCAyLCAyNTEsIDMzLCAyMjcsIAorICAgIDYzLCAyLCAyMDIsIDIwMywgMjI3LCA2MywgMSwgNjIsIDIyNywgNjMsIDEsIDI1MiwgMTM4LCAyMjcsIDYzLCAxLCA3MCwgCisgICAgMjI3LCA2MywgMSwgMjI4LCAxNTEsIDIyNywgNjMsIDEsIDY2LCAyMjcsIDYzLCAxLCAyMDMsIDE4MiwgMjI3LCA2MywgMSwgCisgICAgMTA5LCAxNDYsIDIyNywgNjMsIDEsIDEwOSwgMTU2LCAyMjcsIDYzLCAxLCA3MiwgMjI3LCA2MywgMSwgMjM4LCAyNTUsIAorICAgIDIyNywgNjMsIDEsIDI1MSwgMTc2LCAyMjcsIDYzLCAxLCA3NCwgMjI3LCA2MywgMSwgMjE3LCA2MywgMjI3LCA2MywgMSwgCisgICAgMjUwLCAxMzksIDIyNywgNjMsIDEsIDE2MSwgMjI3LCA2MywgMSwgMjI2LCAyMDcsIDIyNywgNjMsIDEsIDIzNiwgODksIAorICAgIDIyNywgNjMsIDEsIDIzNSwgMTk5LCAyMjcsIDYzLCAxLCAyMTksIDI1MywgMjI3LCA2MywgMSwgMjQ3LCAxOTAsIDIyNywgCisgICAgNjMsIDEsIDI0NywgMzcsIDIyNywgNjMsIDEsIDIyNywgMjQ4LCAyMjcsIDYzLCAxLCAyMjcsIDIxNSwgMjI3LCA2MywgMSwgCisgICAgMjE4LCA2MCwgMjI3LCA2MywgMSwgMjA0LCAyNTMsIDIyNywgNjMsIDEsIDIwNCwgMjQxLCAyMjcsIDYzLCAxLCAyNDEsIAorICAgIDIyMCwgMjI3LCA2MywgMSwgMjQxLCAyMDQsIDIyNywgNjMsIDEsIDIxOSwgMjEsIDIyNywgNjMsIDEsIDIwNywgMzYsIDIyNywgCisgICAgNjMsIDEsIDIwNiwgMTIyLCAyMjcsIDYzLCAxLCAyNDIsIDU4LCAyMjcsIDYzLCAxLCAyNDEsIDEwMCwgMjI3LCA2MywgMSwgCisgICAgMTg4LCAyMjcsIDYzLCAxLCAxNzIsIDIyNywgNjMsIDEsIDIxNSwgMjQ1LCAyMjcsIDYzLCAxLCAyNDksIDEzNiwgMjI3LCAKKyAgICA2MywgMSwgMjQ4LCAyMDAsIDIyNywgNjMsIDEsIDE3OCwgMjI3LCA2MywgMSwgMTgzLCAyMjcsIDYzLCAxLCAyMTMsIDI1MiwgCisgICAgMjI3LCA2MywgMSwgMjEyLCAyMTUsIDIyNywgNjMsIDEsIDE5NCwgMjI3LCA2MywgMSwgMjI0LCAxMzgsIDIyNywgNjMsIDEsIAorICAgIDIwMywgOTAsIDIyNywgNjMsIDEsIDIxMCwgMTE0LCAyMjcsIDYzLCAxLCAyMDgsIDE3OSwgMjI3LCA2MywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCA2MywgMSwgMTQ0LCAyMjcsIDYzLCAyLCAyMTgsIDEwMCwgMjI3LCA2MywgMiwgMjUwLCAxMjIsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAyNTIsIDEzOCwgMjI3LCA2MywgMjIsIDIsIDcwLCAyMjcsIDYzLCAyMiwgMiwgMjI4LCAxNTEsIDIyNywgNjMsIDIyLCAKKyAgICAyLCA2NiwgMjI3LCA2MywgMjIsIDIsIDIwMywgMTgyLCAyMjcsIDYzLCAyMiwgMiwgMTA5LCAxNDYsIDIyNywgNjMsIDIyLCAKKyAgICAyLCAxMDksIDIxMiwgMjE2LCAyMjcsIDYzLCAyMiwgMiwgNzIsIDIyNywgNjMsIDIyLCAyLCAyMzgsIDI1NSwgMjI3LCA2MywgCisgICAgMjIsIDIsIDI1MSwgMTc2LCAyMjcsIDYzLCAyMiwgMiwgNzQsIDIyNywgNjMsIDIyLCAyLCAyMTcsIDYzLCAyMjcsIDYzLCAKKyAgICAyMiwgMiwgMjUwLCAxMzksIDIyNywgNjMsIDIsIDIwMiwgMjA4LCAyMjcsIDYzLCAyMjUsIDIsIDgxLCAyMjcsIDYzLCAyNTEsIAorICAgIDE3NywgMjI1LCAyLCA4MSwgMjI3LCA2MywgMSwgMjM3LCAxOTUsIDIyNywgNjMsIDEsIDEwOSwgMjEyLCAyMTYsIDIyNywgCisgICAgNjMsIDEsIDEwOSwgMjI0LCAxMzksIDIyNywgNjMsIDIyLCAyLCAxMDksIDE1NiwgMjI3LCA2MywgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDIyNywgNjMsIDE3LCAxOTksIDgxLCAyMjcsIDYzLCAxNywgMTAyLCAyMjcsIDYzLCAxNywgMTA1LCAyMjcsIDYzLCAKKyAgICAxNywgMTQ3LCAyMjcsIDYzLCAxNywgMTQ5LCAyMjcsIDYzLCAxNywgMTY0LCAyMjcsIDYzLCAxNywgMTg3LCAyMjcsIDYzLCAKKyAgICAxNywgMjEwLCAxMzUsIDIyNywgNjMsIDE3LCAxOTIsIDIyNywgNjMsIDE3LCAyMTksIDExMywgMjI3LCA2MywgMiwgMjI3LCAKKyAgICAyMDEsIDIyNywgNjMsIDIsIDIwMywgMjI2LCAxNDIsIDIsIDI0NywgMTQ5LCAxNDIsIDIsIDI1MSwgMzMsIDE0MiwgMiwgCisgICAgMjAyLCAyMDMsIDE0MiwgMSwgNjIsIDE0MiwgMSwgMjUyLCAxMzgsIDE0MiwgMSwgNzAsIDE0MiwgMSwgMjI4LCAxNTEsIAorICAgIDE0MiwgMSwgNjYsIDE0MiwgMSwgMjAzLCAxODIsIDE0MiwgMSwgMTA5LCAxNDYsIDE0MiwgMSwgMTA5LCAxNTYsIDE0MiwgMSwgCisgICAgNzIsIDE0MiwgMSwgMjM4LCAyNTUsIDE0MiwgMSwgMjUxLCAxNzYsIDE0MiwgMSwgNzQsIDE0MiwgMSwgMjE3LCA2MywgMTQyLCAKKyAgICAxLCAyNTAsIDEzOSwgMTQyLCAxLCAxNjEsIDE0MiwgMSwgMjI2LCAyMDcsIDE0MiwgMSwgMjM2LCA4OSwgMTQyLCAxLCAyMzUsIAorICAgIDE5OSwgMTQyLCAxLCAyMTksIDI1MywgMTQyLCAxLCAyNDcsIDE5MCwgMTQyLCAxLCAyNDcsIDM3LCAxNDIsIDEsIDIyNywgCisgICAgMjQ4LCAxNDIsIDEsIDIyNywgMjE1LCAxNDIsIDEsIDIxOCwgNjAsIDE0MiwgMSwgMjA0LCAyNTMsIDE0MiwgMSwgMjA0LCAKKyAgICAyNDEsIDE0MiwgMSwgMjQxLCAyMjAsIDE0MiwgMSwgMjQxLCAyMDQsIDE0MiwgMSwgMjE5LCAyMSwgMTQyLCAxLCAyMDcsIAorICAgIDM2LCAxNDIsIDEsIDIwNiwgMTIyLCAxNDIsIDEsIDI0MiwgNTgsIDE0MiwgMSwgMjQxLCAxMDAsIDE0MiwgMSwgMTg4LCAKKyAgICAxNDIsIDEsIDIxOSwgMywgMTQyLCAxLCAxNzIsIDE0MiwgMSwgMjE1LCAyNDUsIDE0MiwgMSwgMjQ5LCAxMzYsIDE0MiwgMSwgCisgICAgMjQ4LCAyMDAsIDE0MiwgMSwgMTc4LCAxNDIsIDEsIDE4MywgMTQyLCAxLCAyMTMsIDI1MiwgMTQyLCAxLCAyMTIsIDIxNSwgCisgICAgMTQyLCAxLCAxOTQsIDE0MiwgMSwgMjI0LCAxMzgsIDE0MiwgMSwgMjI0LCAxMjksIDE0MiwgMSwgMjAzLCA5MCwgMTQyLCAxLCAKKyAgICAyMTAsIDExNCwgMTQyLCAxLCAyMDgsIDE3OSwgMTQyLCAxLCAyMTIsIDY0LCAxNDIsIDEsIDE0NCwgMTQyLCAxLCAyMDQsIAorICAgIDIyMiwgMTQyLCAyLCAyNTAsIDEyMiwgMTQyLCAyMiwgMiwgMjUyLCAxMzgsIDE0MiwgMjIsIDIsIDcwLCAxNDIsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTQyLCAyMiwgMiwgNjYsIDE0MiwgMjIsIDIsIDIwMywgMTgyLCAxNDIsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTQyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTQyLCAyMiwgMiwgNzIsIDE0MiwgMjIsIDIsIDIzOCwgMjU1LCAxNDIsIDIyLCAKKyAgICAyLCAyNTEsIDE3NiwgMTQyLCAyMiwgMiwgNzQsIDE0MiwgMjIsIDIsIDIxNywgNjMsIDE0MiwgMjIsIDIsIDI1MCwgMTM5LCAKKyAgICAxNDIsIDIsIDIwMiwgMjA4LCAxNDIsIDEsIDczLCAyMTMsIDEyOSwgMTQyLCAyLCAyMTYsIDEyOSwgMTQyLCAxLCAyNDYsIAorICAgIDIyNSwgMjIzLCAyNDMsIDE0MiwgMSwgMjQ2LCAyMjUsIDIwMCwgMTIzLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjQsIDEzMCwgCisgICAgMTQyLCAyNTAsIDE0MCwgMjI1LCAyLCA4MSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMTcsIDc0LCAxNDIsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIzNiwgMjM3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIzOCwgMjI0LCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNCwgCisgICAgMTYyLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIwNiwgMTU3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwNCwgMTYxLCAxNDIsIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNywgMTA3LCAxNDIsIDEsIDI1MCwgMjM0LCAyMjgsIDE1MSwgMTQyLCAxLCAxMDksIDIxMiwgCisgICAgMjE2LCAxNDIsIDEsIDEwOSwgMjI0LCAxMzksIDE0MiwgMjIsIDIsIDEwOSwgMTU2LCAxNDIsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCAxNDIsIDE3LCAxOTksIDgxLCAxNDIsIDE3LCAxMDIsIDE0MiwgMTcsIDEwNSwgMTQyLCAxNywgMTQ3LCAxNDIsIDE3LCAKKyAgICAxNDksIDE0MiwgMTcsIDE2NCwgMTQyLCAxNywgMTg3LCAxNDIsIDE3LCAyMTAsIDEzNSwgMTQyLCAxNywgMTkyLCAxNDIsIAorICAgIDE3LCAyMTksIDExMywgMTQyLCA0MSwgMjA2LCAxNjYsIDE0MiwgNDEsIDExMiwgMjMzLCA4MiwgMTQyLCA0MSwgMTEyLCAKKyAgICAyMDYsIDUwLCAxNDIsIDIzNiwgMjE5LCAxMTIsIDIxNCwgODcsIDE0MiwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE0MiwgCisgICAgMjM2LCAyMTksIDEyNiwgMjE0LCA4NSwgMTQyLCAyMzYsIDIxOSwgMTEyLCAyMDksIDk4LCAxNDIsIDIzNiwgMjE5LCAxMTIsIAorICAgIDIzOCwgMjI3LCAxNDIsIDIzNiwgMjE5LCAxMjYsIDIwOSwgOTcsIDE0MiwgMjQxLCAyMzgsIDgxLCAxNDIsIDEsIDI0NiwgCisgICAgMjI1LCAyMTksIDIyLCAxNDIsIDEsIDI0NiwgMjI1LCAyMjAsIDIxNCwgMTQyLCAxLCAyNDYsIDIyNSwgMjEyLCAyMTYsIAorICAgIDE0MiwgMSwgMjQ2LCAyMjUsIDE1NiwgMTQyLCAxLCAyNDYsIDIyNSwgMjI0LCAxMzksIDE0MiwgMSwgMjQ2LCAyMjUsIDIyNywgCisgICAgMTE4LCAxNDMsIDIsIDI1MSwgMzIsIDE0MywgMiwgMjAyLCAyMDIsIDE0MywgMSwgMjUwLCAxMTAsIDE0MywgMSwgMjUyLCAKKyAgICA5MiwgMTQzLCAxLCAyNTEsIDIwMSwgMTQzLCAxLCAyNTEsIDIxNiwgMTQzLCAxLCAyMjgsIDIsIDE0MywgMSwgMjI4LCAxNTAsIAorICAgIDE0MywgMSwgMjAzLCAxNzMsIDE0MywgMSwgMjAzLCAxNzYsIDE0MywgMSwgMjI4LCAyOCwgMTQzLCAxLCAyMjgsIDI5LCAKKyAgICAxNDMsIDEsIDIyOCwgMTM2LCAxNDMsIDEsIDIyOCwgMTM4LCAxNDMsIDEsIDIzOCwgMjUsIDE0MywgMSwgMjM4LCAyNTAsIAorICAgIDE0MywgMSwgMjUxLCAxNjEsIDE0MywgMSwgMjE2LCAyMjksIDE0MywgMSwgMjE3LCA1NiwgMTQzLCAxLCAyNTAsIDEyNSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAxMywgMTQzLCAxLCAyMjIsIDIwNSwgMjI3LCAxMywgMTQzLCAxLCAyNTEsIDExNSwgCisgICAgMjM2LCAzNSwgMTQzLCAxLCAyMjIsIDIwNSwgMjM2LCAzNSwgMTQzLCAxLCAyMjcsIDYyLCAyMjAsIDE1NCwgMTQzLCAxLCAKKyAgICAyMTIsIDUsIDIzNiwgMzUsIDE0MywgMSwgMjUxLCAxMTUsIDI0NywgMTAyLCAxNDMsIDEsIDIyMiwgMjA1LCAyNDcsIDEwMiwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjI3LCAyMzAsIDE0MywgMSwgMjIyLCAyMDUsIDIyNywgMjMwLCAxNDMsIDEsIDIwNywgMjksIAorICAgIDIyMCwgMTU0LCAxNDMsIDEsIDIwNywgMjksIDIxMiwgNCwgMjIwLCAxNTUsIDE0MywgMSwgMjEyLCA1LCAyMjcsIDIzMCwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjA0LCAyNDksIDE0MywgMSwgMjIyLCAyMDUsIDIwNCwgMjQ5LCAxNDMsIDEsIDI1MSwgMTE1LCAKKyAgICAyNDEsIDIxMSwgMTQzLCAxLCAyMjIsIDIwNSwgMjQxLCAyMTEsIDE0MywgMSwgMjIwLCAyNDIsIDIyMCwgMTA4LCAxNDMsIDEsIAorICAgIDIxMiwgNSwgMjQxLCAyMTEsIDE0MywgMSwgMjUxLCAxMTUsIDIwNiwgMjA5LCAxNDMsIDEsIDIyMiwgMjA1LCAyMDYsIDIwOSwgCisgICAgMTQzLCAxLCAyNTEsIDExNSwgMjQxLCAyMzEsIDE0MywgMSwgMjIyLCAyMDUsIDI0MSwgMjMxLCAxNDMsIDEsIDI0MiwgNiwgCisgICAgMjIwLCAxMDgsIDE0MywgMSwgMjEyLCA1LCAyNDEsIDIzMSwgMTQzLCAxLCAyNTEsIDExNSwgMjE2LCA4MSwgMTQzLCAxLCAKKyAgICAyMjIsIDIwNSwgMjE2LCA4MSwgMTQzLCAxLCAyNTEsIDExNSwgMjQ5LCA0NiwgMTQzLCAxLCAyMjIsIDIwNSwgMjQ5LCA0NiwgCisgICAgMTQzLCAxLCAyMjIsIDExOCwgMTQzLCAxLCAyNTEsIDk1LCAyNDksIDQ2LCAxNDMsIDEsIDIwMCwgNTYsIDE0MywgMSwgMjEzLCAKKyAgICAxOTYsIDE0MywgMSwgMjQyLCA2LCAyMjUsIDQ5LCAxNDMsIDEsIDIwMywgNjEsIDE0MywgMSwgMjA3LCAyOSwgMjExLCAyMzMsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIxMSwgMjMzLCAxNDMsIDEsIDI0MiwgNiwgMjExLCAyMzMsIDE0MywgMSwgMjM0LCAxNDUsIAorICAgIDE0MywgMSwgMjIwLCAyNDIsIDIyNSwgNDksIDE0MywgMSwgMjM3LCAxNDksIDE0MywgMiwgMjUxLCAxNTAsIDE0MywgMjIsIAorICAgIDIsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjUxLCAyMTgsIDE0MywgMjIsIDIsIDI0MSwgNDMsIDI1MSwgCisgICAgMjE4LCAxNDMsIDIyLCAyLCAyMjYsIDIzMiwgMjI4LCAyNSwgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI4LCAyNSwgMTQzLCAKKyAgICAyMiwgMiwgMjI2LCAyMzIsIDIxNiwgMjA5LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMTYsIDIwOSwgMTQzLCAyMiwgMiwgCisgICAgMjM2LCA3OCwgMTQzLCAyMiwgMiwgMjI2LCA3MywgMTQzLCAyMiwgMiwgMjQxLCA0MywgMjI2LCA3MywgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NSwgMjQxLCAxNTAsIDE0MywgMjIsIDIsIDIyNiwgNzQsIDIzNCwgMjM0LCAyNTEsIDIxMSwgMTQzLCAyMiwgMiwgCisgICAgMjI2LCA3NCwgMjM0LCAyMzQsIDI0MSwgNDMsIDI1MSwgMjExLCAxNDMsIDIyLCAyLCAyMjYsIDc0LCAyMzQsIDIzNCwgMjM2LCAKKyAgICAzNCwgMTQzLCAyMiwgMiwgMjM2LCAzNCwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5OSwgODEsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxMDIsIDE0MywgMjI0LCAxNTEsIDE3LCAxMDUsIDE0MywgMjI0LCAxNTEsIDE3LCAxNDcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAxNDksIDE0MywgMjI0LCAxNTEsIDE3LCAxNjQsIDE0MywgMjI0LCAxNTEsIDE3LCAxODcsIDE0MywgMjI0LCAxNTEsIDE3LCAKKyAgICAyMTAsIDEzNSwgMTQzLCAyMjQsIDE1MSwgMTcsIDE5MiwgMTQzLCAyMjQsIDE1MSwgMTcsIDIxOSwgMTEzLCAxNDMsIDIyLCAKKyAgICAyLCAyNDEsIDQzLCAyMzYsIDc4LCAxNDMsIDIyLCAyLCAyNDEsIDQzLCAyMzYsIDM0LCAxNDMsIDIxNCwgMjEyLCAyMjYsIDAsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyNiwgODksIDIyNywgODIsIDIwNiwgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDIwMiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzksIDIyNiwgMTcxLCAyMDYsIDExNywgMTcxLCAyMjYsIDE3OSwgMjI2LCAxNjYsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyNiwgMTc5LCAyMjYsIDE3NSwgMjA2LCAxMTcsIDE3MSwgMjI2LCAxNzksIDIxMywgMjE3LCAyMDYsIAorICAgIDExNywgMTcxLCAyMTksIDE3OSwgMjE5LCAxNjYsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI2LCAyMDYsIDExNywgCisgICAgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMjEsIDIwNiwgMTE3LCAxNzEsIDI0NiwgMjExLCAyNDcsIDI1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMDksIDMwLCAyMDksIDI5LCAyMDYsIDExNywgMTcxLCAyNDYsIDIxMSwgMjQ2LCAyMDcsIDIwNiwgMTE3LCAxNzEsIDE5OSwgCisgICAgMjQ2LCAxOTksIDI1MywgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0NywgMzQsIDIwNiwgMTE3LCAxNzEsIDIwNSwgMTg2LCAKKyAgICAyMTYsIDkyLCAyMDYsIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDExMSwgMjA2LCAxMTcsIDE3MSwgMjA2LCA2MiwgMjIwLCAKKyAgICAxMzEsIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIxNSwgMjA3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjIwLCAyNCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjQwLCAyMTIsIDI0MSwgMTUxLCAyMDYsIDExNywgMTcxLCAyMDUsIDE4NiwgMjA2LCAyMzcsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMjksIDIwNiwgMTE3LCAxNzEsIDIwNiwgNjIsIDIwNiwgMTE4LCAyMDYsIAorICAgIDExNywgMTcxLCAyMDYsIDYyLCAyMDYsIDU3LCAyMDYsIDExNywgMTcxLCAyMTgsIDI0MiwgMjE4LCAxMzMsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDI0OCwgMTI1LCAyNDksIDEwMiwgMjA2LCAxMTcsIDE3MSwgMjE1LCAxMDcsIDIxNSwgMTM1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMTUsIDIxOCwgMjE1LCAyMDksIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTk1LCAyMDYsIDExNywgMTcxLCAKKyAgICAyMTUsIDIxOCwgMjE1LCAyMzgsIDIwNiwgMTE3LCAxNzEsIDIzNywgMTQsIDIzNywgMTY4LCAyMDYsIDExNywgMTcxLCAyMTUsIAorICAgIDIxOCwgMjEyLCAxNywgMjA2LCAxMTcsIDE3MSwgMjIxLCAxMzcsIDE3OCwgMjA2LCAxMTcsIDE3MSwgMTk5LCAyNDYsIDIwMCwgCisgICAgODUsIDIwNiwgMTE3LCAxNzEsIDIxMywgMiwgMjEyLCAxNzQsIDIwNiwgMTE3LCAxNzEsIDIxMiwgMTc1LCAyMDYsIDExNywgCisgICAgMTcxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIwNiwgMTE3LCAxNzEsIDIyNCwgNDIsIDIwNiwgMTE3LCAxNzEsIDIwMSwgMSwgCisgICAgMjAxLCAxMDksIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgMzMsIDIwNiwgMTE3LCAxNzEsIDIwOSwgMzAsIDIxMiwgCisgICAgMTQ1LCAyMDYsIDExNywgMTcxLCAyMDksIDMwLCAyMDgsIDIzLCAyMDYsIDExNywgMTcxLCAyMzMsIDIwOCwgMjM0LCA0OCwgCisgICAgMjA2LCAxMTcsIDE3MSwgMjI0LCAxMTEsIDI0NiwgMTkxLCAyMDYsIDExNywgMTcxLCAxNjMsIDI1MSwgNzYsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIzMywgMjA4LCAyMTgsIDIzNywgMjA2LCAxMTcsIDE3MSwgMjE2LCAxODYsIDIwNiwgMTE3LCAxNzEsIDIxMSwgCisgICAgMjU1LCA2MiwgMjA2LCAxMTcsIDE3MSwgMjIyLCAxOTksIDIzNCwgMjAxLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUyLCAKKyAgICAxMzgsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyNTEsIDEwMSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcwLCAyMDYsIAorICAgIDExNywgMTcxLCAyMTEsIDI1NSwgMjI4LCAxNTEsIDIwNiwgMTE3LCAxNzEsIDIxMSwgMjU1LCAyMDQsIDMxLCAyMDYsIDExNywgCisgICAgMTcxLCAyMTEsIDI1NSwgMjA0LCAyOSwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDY2LCAyMDYsIDExNywgMTcxLCAyMTEsIAorICAgIDI1NSwgMjAzLCAxODIsIDIwNiwgMTE3LCAxNzEsIDIxNSwgMjIwLCAyMDYsIDExNywgMjQyLCAxOTUsIDE2LCAyNDksIDEwMywgCisgICAgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDcyLCAyMDYsIDExNywgMTcxLCAyMTEsIDI1NSwgMjUxLCAyMjEsIDIwNiwgMTE3LCAKKyAgICAxNzEsIDIxMSwgMjU1LCA3NCwgMjA2LCAxMTcsIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5MywgMjA2LCAxMTcsIAorICAgIDE3MSwgMjExLCAyNTUsIDI1MSwgMTc3LCAyMjIsIDE5NCwgMjA2LCAxMTcsIDE3MSwgMjI1LCA5NSwgMjA2LCAxMTcsIDE3MSwgCisgICAgMjIyLCAxOTAsIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTkxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjM4LCAyMTYsIAorICAgIDIwNiwgMTE3LCAxNzEsIDIyMiwgMTk5LCAyMDYsIDYxLCAyMDYsIDExNywgMTcxLCAyMjIsIDE5OSwgMjA1LCAxMDEsIDIwNiwgCisgICAgMTE3LCAxNzEsIDIyMiwgMTk5LCAyNDcsIDEzLCAyMDYsIDExNywgMTcxLCAyMDYsIDEwOSwgMjA2LCAxMTcsIDE3MSwgMjE5LCAKKyAgICAxMjIsIDIwNiwgMTE3LCAxNzEsIDIwMCwgNzksIDIwNiwgMTE3LCAxNzEsIDIzNywgNCwgMjA2LCAxMTcsIDE3LCAxOTksIAorICAgIDgxLCAyMDYsIDExNywgMTcsIDEwMiwgMjA2LCAxMTcsIDE3LCAxMDUsIDIwNiwgMTE3LCAxNywgMTQ3LCAyMDYsIDExNywgCisgICAgMTcsIDE0OSwgMjA2LCAxMTcsIDE3LCAxNjQsIDIwNiwgMTE3LCAxNywgMTg3LCAyMDYsIDExNywgMTcsIDIxMCwgMTM1LCAKKyAgICAyMDYsIDExNywgMTcsIDE5MiwgMjA2LCAxMTcsIDE3LCAyMTksIDExMywgMjA2LCAxMTcsIDE3MSwgMjUxLCA3MiwgMjA2LCAKKyAgICAxMTcsIDE3MSwgMjI2LCAxNzYsIDIyNSwgNzUsIDEsIDIyNiwgODgsIDIyNSwgNzUsIDEsIDIyNiwgMTc5LCAyMDcsIDIyNSwgCisgICAgMjI1LCA3NSwgMSwgMjI2LCAxNzksIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMTksIDE3OCwgMjI1LCA3NSwgMSwgMjQ2LCAKKyAgICA5MSwgMjI1LCA3NSwgMSwgMjA5LCAzMCwgMjA2LCAyNDYsIDIyNSwgNzUsIDEsIDIxOCwgMjYsIDIyNSwgNzUsIDEsIDI0MCwgCisgICAgMjExLCAyMjUsIDc1LCAxLCAxMzgsIDIyNSwgNzUsIDEsIDIwNiwgNjIsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMDYsIDYyLCAKKyAgICAyMDYsIDI0NiwgMjI1LCA3NSwgMSwgMjE4LCAyNDEsIDIyNSwgNzUsIDEsIDI0OCwgMTI0LCAyMjUsIDc1LCAxLCAyMTUsIAorICAgIDEwNiwgMjI1LCA3NSwgMSwgMjE1LCAyMTgsIDIwNywgMjI1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDYsIDI0NiwgMjI1LCAKKyAgICA3NSwgMSwgMjE1LCAyMTgsIDIwNiwgMjQ2LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMDcsIDIyNSwgMjI1LCA3NSwgMSwgCisgICAgMjIxLCAxMzYsIDIyNSwgNzUsIDEsIDE5OSwgMjQ1LCAyMjUsIDc1LCAxLCAyMjQsIDExMSwgMjI0LCAxNjksIDIyNSwgNzUsIAorICAgIDEsIDIyNCwgMTExLCAyMjQsIDcyLCAyMjUsIDc1LCAxLCAyMDEsIDAsIDIyNSwgNzUsIDEsIDIwOSwgMzAsIDIwNywgMjI1LCAKKyAgICAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgMjA3LCAyMjUsIDIyNSwgNzUsIDEsIDc0LCAyMjUsIDc1LCAxLCAyMzMsIDIwOCwgCisgICAgMjA2LCAyNDYsIDIyNSwgNzUsIDIzOCwgMTk1LCAyMjUsIDc1LCAyMiwgMiwgNjIsIDIyNSwgNzUsIDIyLCAyLCAyMjIsIAorICAgIDE5OSwgMjI3LCA2OCwgMjI1LCA3NSwgMjIsIDIsIDI1MiwgMTM4LCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxMDEsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3MCwgMjI1LCA3NSwgMjIsIDIsIDIyOCwgMTUxLCAyMjUsIDc1LCAyMiwgMiwgMjAwLCAxMjMsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAxOTksIDE2NywgMjI1LCA3NSwgMjIsIDIsIDY2LCAyMjUsIDc1LCAyMiwgMiwgMjAzLCAxODIsIDIyNSwgCisgICAgNzUsIDIyLCAyLCAyMjIsIDE5OSwgMjI2LCA3MSwgMjI1LCA3NSwgMjEwLCAxNjIsIDIsIDIyNCwgMTEwLCAyMjUsIDc1LCAKKyAgICAyMTAsIDE2MiwgMiwgMjE4LCAyNiwgMjI1LCA3NSwgMjIsIDIsIDcyLCAyMjUsIDc1LCAyMiwgMiwgMjM4LCAyMzQsIDIyNSwgCisgICAgNzUsIDIyLCAyLCA3NCwgMjI1LCA3NSwgMjIsIDIsIDI1MCwgMTEyLCAyMjUsIDc1LCAyMiwgMiwgMjUxLCAxNzYsIDIyNSwgCisgICAgNzUsIDIyNiwgODksIDE5NCwgMjI1LCA3NSwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDIyNSwgNzUsIDE1MCwgMjIyLCAKKyAgICAxOTksIDIwNiwgNjEsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIDIwNiwgMTUsIDIyNSwgNzUsIDE1MCwgMjIyLCAxOTksIAorICAgIDI0NywgMTEwLCAyMjUsIDc1LCAyNDcsIDE1NSwgODEsIDIyNSwgNzUsIDIxOSwgMTMxLCAyMjUsIDc1LCAxNywgMTk5LCA4MSwgCisgICAgMjI1LCA3NSwgMTcsIDEwMiwgMjI1LCA3NSwgMTcsIDEwNSwgMjI1LCA3NSwgMTcsIDE0NywgMjI1LCA3NSwgMTcsIDE0OSwgCisgICAgMjI1LCA3NSwgMTcsIDE2NCwgMjI1LCA3NSwgMTcsIDE4NywgMjI1LCA3NSwgMTcsIDIxMCwgMTM1LCAyMjUsIDc1LCAxNywgCisgICAgMTkyLCAyMjUsIDc1LCAxNywgMjE5LCAxMTMsIDIyNSwgNzUsIDIzMywgMjA4LCAyMTgsIDI0MSwgMjI1LCA3NSwgMjMzLCAKKyAgICAyMDgsIDIyMSwgMTM2LCAyMjUsIDc1LCAxLCAyMjYsIDE4MCwgMjM1LCAxMTYsIDIyNSwgNzUsIDEsIDIyNiwgMTgwLCAyMTgsIAorICAgIDI2LCA3OSwgNSwgMjE3LCA4NiwgNzksIDEzNCwgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAzOCwgNjIsIDc5LCAKKyAgICAxMzQsIDIzNSwgNTIsIDIwMCwgMSwgMjIxLCAyMjksIDI1NSwgMTM1LCAyMTMsIDYsIDI0OSwgMTAsIDE3OCwgNzksIDEzNCwgCisgICAgMjM1LCA1MiwgMjAwLCAxLCAyMjEsIDIyOSwgMjU1LCAxMzUsIDIzNSwgNTIsIDIwNSwgMTgsIDE3OCwgNzksIDEzNCwgODIsIAorICAgIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAxMDYsIDIwMCwgMSwgMjIxLCAyMjksIDIxMCwgCisgICAgMTIxLCAxNzgsIDc5LCAxMzQsIDI0NywgMTMwLCAyMDAsIDEsIDIyMSwgMjI5LCAyMTUsIDIwOCwgMjEwLCAxMDcsIDE3OCwgCisgICAgNzksIDEzNCwgMjAwLCAxLCAyMjEsIDIyOSwgMjA1LCAxOCwgMjEwLCAxMDcsIDE3OCwgNzksIDEzNCwgMjExLCAyMzEsIAorICAgIDIxMCwgMTA2LCA3OSwgMTM0LCAyNDgsIDM5LCAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyNDgsIDE0NiwgMjEwLCA0LCAKKyAgICAyMDAsIDEsIDIyMSwgMjI4LCA3OSwgMTM0LCAyMjgsIDU0LCAyMDUsIDE3LCA3OSwgMTM0LCAyNDEsIDE0MywgMjA1LCAxOCwgCisgICAgMjQ4LCAzOCwgNzksIDEzNCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxOCwgMzEsIDIxMCwgMTA2LCA3OSwgMTM0LCAyMDUsIDE4LCAKKyAgICAyMTAsIDEwNiwgNzksIDEzNCwgMjE4LCAzMSwgMjA1LCAxOCwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgMjksIDI0NiwgCisgICAgMjUwLCAyMDgsIDE5NiwgMjEwLCAxMDYsIDc5LCAxMzQsIDIxMywgOTcsIDIzNSwgODUsIDIxMCwgMTA2LCA3OSwgMTM0LCAKKyAgICAyNDcsIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyMjIsIDc3LCAxNjgsIDI0NywgMTU4LCA3OSwgMTM0LCAyMzUsIDUyLCAKKyAgICAyMDUsIDE3LCA3OSwgMjI0LCA5NiwgMiwgMjQ3LCAzNSwgMjEyLCAxNzgsIDc5LCAyMjQsIDk2LCAyLCAyMjQsIDIyMSwgCisgICAgMjEyLCAxNzgsIDc5LCAyNTAsIDE2MSwgMiwgMjEwLCAxMTcsIDIzNiwgMTgsIDI1NSwgMTQwLCAyMTIsIDE3OCwgNzksIAorICAgIDI1MCwgMTYxLCAyLCAyNTUsIDEzNywgMTcyLCA3OSwgMjUwLCAxNjEsIDIsIDIxMSwgMjAzLCAyMDUsIDEyLCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzYsIDE3LCA3OSwgMiwgMjEzLCAxOTIsIDI0MCwgMjI1LCAyMzUsIDExOCwgNzksIDIsIAorICAgIDIxMywgMTkyLCAyNDAsIDIyNSwgMjM1LCA1MywgNzksIDIsIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM2LCAxNywgNzksIDIsIAorICAgIDIxMywgMTkyLCAyMjAsIDE1MCwgMjM1LCAxMTgsIDc5LCAyLCAyMTMsIDE5MiwgMjQwLCAyMjUsIDIxMywgMTkyLCAyMjAsIAorICAgIDE0OSwgNzksIDE3LCAxOTksIDgxLCA3OSwgMTcsIDEwMiwgNzksIDE3LCAxMDUsIDc5LCAxNywgMTQ3LCA3OSwgMTcsIDE0OSwgCisgICAgNzksIDE3LCAxNjQsIDc5LCAxNywgMTg3LCA3OSwgMTcsIDIxMCwgMTM1LCA3OSwgMTcsIDE5MiwgNzksIDE3LCAyMTksIAorICAgIDExMywgNzksIDE3LCAxNjcsIDEwMiwgNzksIDE3LCAxNjcsIDEwNSwgNzksIDE3LCAxNjcsIDE0NywgNzksIDE3LCAxNjcsIAorICAgIDE0OSwgNzksIDE3LCAxNjcsIDE2NCwgNzksIDE3LCAxNjcsIDE4NywgNzksIDE3LCAxNjcsIDIxMCwgMTM1LCA3OSwgMTcsIAorICAgIDE2NywgMTkyLCA3OSwgMTcsIDE2NywgMjE5LCAxMTMsIDc5LCAxNywgMTY3LCAxOTksIDgxLCA3OSwgMTM0LCAyNDgsIDQxLCAKKyAgICAyMTIsIDE3OCwgNzksIDEzNCwgMjE5LCAyNDQsIDI0NywgMjI1LCAyMTgsIDQyLCAxOTksIDE2LCA3OSwgMTM0LCAyNDcsIAorICAgIDEzMCwgMjU1LCAxMzksIDIxMiwgMTc5LCAyNDcsIDIyNiwgMjIxLCAxODIsIDI0NywgMTU4LCA3OSwgMTM0LCAyMTksIDI0NCwgCisgICAgMjQ3LCAyMjUsIDIxMCwgMTE4LCAyMTIsIDE3OCwgNzksIDEzNCwgMjQ3LCA5LCAyMjEsIDIyOCwgNzksIDEzNCwgMjA1LCAKKyAgICAzMywgMjU1LCAxMzYsIDc5LCAxMzQsIDIzNSwgMzUsIDIxMiwgMTc5LCAyMzQsIDI1MCwgNzksIDEzNCwgMjM1LCAzNSwgCisgICAgMjEyLCAxNzksIDIzNSwgMCwgNzksIDEzNCwgMjUxLCA3NywgMjI2LCAxOTcsIDIzNCwgMjUwLCA3OSwgMTM0LCAyNTEsIDc3LCAKKyAgICAyMjYsIDE5NywgMjM1LCAwLCA3OSwgMiwgMjAwLCA3MSwgMjA1LCAxNiwgNzksIDIsIDIyMiwgMTU5LCAyMDUsIDE2LCA3OSwgCisgICAgMSwgMTYxLCA3OSwgMSwgMjI2LCAyMDcsIDc5LCAxLCAyMzYsIDg5LCA3OSwgMSwgMjM1LCAxOTksIDc5LCAxLCAyMTksIAorICAgIDI1MywgNzksIDEsIDI0NywgMTkwLCA3OSwgMSwgMjQ3LCAzNywgNzksIDEsIDIyNywgMjQ4LCA3OSwgMSwgMjE4LCA2MCwgCisgICAgNzksIDEsIDIwNCwgMjUzLCA3OSwgMSwgMjA0LCAyNDEsIDc5LCAxLCAyNDEsIDIyMCwgNzksIDEsIDI0MSwgMjA0LCA3OSwgCisgICAgMSwgMjE5LCAyMSwgNzksIDEsIDIwNywgMzYsIDc5LCAxLCAyMDYsIDEyMiwgNzksIDEsIDI0MiwgNTgsIDc5LCAxLCAyNDEsIAorICAgIDEwMCwgNzksIDEsIDE4OCwgNzksIDEsIDE3MiwgNzksIDEsIDIxNSwgMjQ1LCA3OSwgMSwgMjQ5LCAxMzYsIDc5LCAxLCAKKyAgICAyNDgsIDIwMCwgNzksIDEsIDE3OCwgNzksIDEsIDIwNSwgMzIsIDc5LCAxLCAyMDUsIDIyLCA3OSwgMSwgMjM5LCA5MywgNzksIAorICAgIDEsIDIzOSwgODcsIDc5LCAxLCAyMDEsIDExNCwgNzksIDEsIDE5OSwgNzcsIDc5LCAxLCAxOTksIDExNCwgNzksIDEsIDI1NSwgCisgICAgMTQyLCA3OSwgMSwgMTgzLCA3OSwgMSwgMjEzLCAyNTIsIDc5LCAxLCAxOTQsIDc5LCAxLCAyMTAsIDExNCwgNzksIDEsIAorICAgIDIwOCwgMTc5LCA3OSwgMSwgMjEyLCA2NCwgNzksIDEsIDE0NCwgNzksIDEsIDYyLCA3OSwgMSwgMjI2LCAyOSwgNzksIDEsIAorICAgIDIzNywgNTcsIDIxMywgMjUyLCA3OSwgMSwgMjI2LCAxMDksIDc5LCAxLCAyMTIsIDIxNSwgNzksIDIyLCAyLCAyNTIsIDEzOCwgCisgICAgNzksIDIyLCAyLCA3MCwgNzksIDIyLCAyLCAyMjgsIDE1MSwgNzksIDIyLCAyLCA2NiwgNzksIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgNzksIDIyLCAyLCAxMDksIDE0NiwgNzksIDIyLCAyLCAxMDksIDIxMiwgMjE2LCA3OSwgMjIsIDIsIDEwOSwgMTU2LCA3OSwgCisgICAgMjIsIDIsIDEwOSwgMjI0LCAxMzksIDc5LCAyMiwgMiwgNzIsIDc5LCAyMiwgMiwgMjM4LCAyNTUsIDc5LCAyMiwgMiwgNzQsIAorICAgIDc5LCAyMiwgMiwgMjE3LCA2MywgNzksIDIsIDIxMywgMTIsIDIwOCwgMjUsIDIxOSwgMjU0LCAyMTMsIDEsIDc5LCAyLCAKKyAgICAyMTMsIDYsIDI0OSwgOSwgNzksIDIyLCAyLCAyMTMsIDEwNSwgNzAsIDc5LCAyMiwgMiwgMjEzLCAxMDUsIDIyOCwgMTUxLCAKKyAgICA3OSwgMiwgMjE4LCA0MiwgMTk5LCAxNywgMjIwLCAxNTgsIDI0MiwgNTgsIDc5LCAyLCAyMDksIDQ0LCAyMjUsIDQyLCA3OSwgCisgICAgMTM0LCAyMzQsIDIxNSwgNzksIDEzNCwgMjE2LCAxNzMsIDc5LCAyLCAyMjUsIDQ1LCAyMTIsIDE3OCwgNzksIDIsIDIwMCwgCisgICAgNzYsIDIxMiwgMTc4LCA3OSwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAxNTgsIDc5LCAyLCAyMjIsIDgwLCAyNDcsIAorICAgIDE1OCwgNzksIDIsIDIzNSwgNTYsIDI0NywgMTU5LCAyMTMsIDk1LCA3OSwgMiwgMjM1LCA1NiwgMjIyLCA3MCwgMjEzLCA5NSwgCisgICAgNzksIDIsIDIyOCwgNTAsIDIyMiwgODAsIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMiwgMjI1LCA0NiwgMjA1LCAzMywgMjQ3LCAKKyAgICAxNTgsIDc5LCAyMDgsIDEyLCAyLCAyMjIsIDgwLCAyNDcsIDE1OCwgNzksIDIwOCwgMTIsIDIsIDIyOCwgNTAsIDIyMiwgODAsIAorICAgIDI0NywgMTU4LCA3OSwgMjA4LCAxMiwgMSwgMTYxLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMzYsIDg5LCA3OSwgMjA4LCAxMiwgMSwgMjM1LCAxOTksIDc5LCAyMDgsIDEyLCAxLCAyMTksIDI1MywgNzksIDIwOCwgMTIsIAorICAgIDEsIDI0NywgMTkwLCA3OSwgMjA4LCAxMiwgMSwgMjQ3LCAzNywgNzksIDIwOCwgMTIsIDEsIDIyNywgMjQ4LCA3OSwgMjA4LCAKKyAgICAxMiwgMSwgMjE4LCA2MCwgNzksIDIwOCwgMTIsIDEsIDIwNCwgMjUzLCA3OSwgMjA4LCAxMiwgMSwgMjA0LCAyNDEsIDc5LCAKKyAgICAyMDgsIDEyLCAxLCAyNDEsIDIyMCwgNzksIDIwOCwgMTIsIDEsIDI0MSwgMjA0LCA3OSwgMjA4LCAxMiwgMSwgMjE5LCAyMSwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIwNywgMzYsIDc5LCAyMDgsIDEyLCAxLCAyMDYsIDEyMiwgNzksIDIwOCwgMTIsIDEsIDI0MiwgCisgICAgNTgsIDc5LCAyMDgsIDEyLCAxLCAyNDEsIDEwMCwgNzksIDIwOCwgMTIsIDEsIDE4OCwgNzksIDIwOCwgMTIsIDEsIDE3MiwgCisgICAgNzksIDIwOCwgMTIsIDEsIDIxNSwgMjQ1LCA3OSwgMjA4LCAxMiwgMSwgMjQ5LCAxMzYsIDc5LCAyMDgsIDEyLCAxLCAyNDgsIAorICAgIDIwMCwgNzksIDIwOCwgMTIsIDEsIDE3OCwgNzksIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDc5LCAyMDgsIDEyLCAxLCAyMDUsIAorICAgIDIyLCA3OSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgNzksIDIwOCwgMTIsIDEsIDIzOSwgODcsIDc5LCAyMDgsIDEyLCAxLCAKKyAgICAyMDEsIDExNCwgNzksIDIwOCwgMTIsIDEsIDE5OSwgNzcsIDc5LCAyMDgsIDEyLCAxLCAxOTksIDExNCwgNzksIDIwOCwgMTIsIAorICAgIDEsIDI1NSwgMTQyLCA3OSwgMjA4LCAxMiwgMSwgMTgzLCA3OSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDc5LCAyMDgsIDEyLCAKKyAgICAxLCAxOTQsIDc5LCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgNzksIDIwOCwgMTIsIDEsIDIwOCwgMTc5LCA3OSwgMjA4LCAxMiwgCisgICAgMSwgMjEyLCA2NCwgNzksIDIwOCwgMTIsIDEsIDE0NCwgNzksIDIwOCwgMTIsIDEsIDYyLCA3OSwgMjA4LCAxMiwgMSwgMjI2LCAKKyAgICAyOSwgNzksIDIwOCwgMTIsIDEsIDIzNywgNTcsIDIwMSwgMTE0LCA3OSwgMjA4LCAxMiwgMSwgMjM3LCA1NywgMTgzLCA3OSwgCisgICAgMjA4LCAxMiwgMSwgMjM3LCA1NywgMjEzLCAyNTIsIDc5LCAyMjYsIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDcsIDc5LCAyMjYsIAorICAgIDE2LCAyMTIsIDE3NiwgMjI2LCAyMDgsIDI0NywgMjI2LCAyMjEsIDE4MiwgMjQ3LCAxNTgsIDc5LCAyNDcsIDE0NSwgMiwgCisgICAgODAsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAxNjIsIDI0OSwgMSwgNzksIDI0NywgMTQ1LCAyLCAyNDcsIDE0NywgMjA2LCAKKyAgICAxOTksIDc5LCAyNDcsIDE0NSwgMiwgMjExLCAyMzAsIDI1NSwgMTQxLCA3OSwgMTYsIDIzOSwgMTUyLCAyNDgsIDM2LCA3OSwgCisgICAgMTYsIDIxMywgMTkxLCAyMTMsIDEzLCA3OSwgMTYsIDIxNiwgMTk3LCAyMzYsIDE2LCA3OSwgMTYsIDIxMywgMTkxLCAyMTMsIAorICAgIDE0LCAyMTMsIDk3LCAyMzUsIDg0LCA3OSwgMTYsIDIxNSwgMjA4LCAxNzIsIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzYsIAorICAgIDc5LCAxNiwgMjE4LCAyMjQsIDI0OCwgMzcsIDIxOCwgMzEsIDI1NSwgMTM4LCA3OSwgMTYsIDIxOCwgMjI0LCAyNDgsIDM3LCAKKyAgICAyMzUsIDU0LCAyNTUsIDEzOCwgNzksIDE2LCAyMTgsIDIyNCwgMjQ4LCAzNywgMjQ3LCAyMjYsIDI1NSwgMTM4LCA3OSwgMiwgCisgICAgMjEzLCAxOTIsIDIyMCwgMTUwLCAyMTMsIDE5MiwgMjQwLCAyMjQsIDc5LCAyLCAyMTMsIDE5MiwgMjIwLCAxNTAsIDIzNSwgCisgICAgNTMsIDc5LCAxMzQsIDI0OCwgNDAsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCA3OSwgMTM0LCAyMjEsIAorICAgIDEzOCwgMjAwLCAxLCAyMzUsIDE2MiwgMjIxLCAyMjksIDIxMywgOTYsIDc5LCAxMzQsIDIxOCwgMzEsIDIwNSwgMTcsIDc5LCAKKyAgICAxMzQsIDgyLCAyNDgsIDYzLCAyMTMsIDMsIDIwMCwgMSwgMjIxLCAyMjksIDIyMiwgNzgsIDE3OCwgNzksIDEzNCwgMjQ2LCAKKyAgICAxMDYsIDI0OCwgNjMsIDIxMywgMywgMjAwLCAxLCAyMjEsIDIyOSwgMjEwLCAxMjEsIDE3OCwgMjEzLCA0NSwgMjA3LCAxODgsIAorICAgIDU0LCAyMjUsIDI3LCAyMDcsIDE4OCwgNTQsIDIxMywgNDUsIDIwNywgMTg4LCAyLCAzLCAyNDAsIDE4MCwgMjI1LCAyNywgCisgICAgMjA3LCAxODgsIDIsIDMsIDI0MCwgMTgwLCA3OSwgMTM0LCAyMjUsIDM3LCAyMjIsIDgxLCAyMTIsIDE3OCwgNzksIDEzNCwgCisgICAgMjA1LCAxMjUsIDIyMiwgODEsIDIxMiwgMTc4LCA3MSwgMSwgMTYxLCA3MSwgMSwgMjI2LCAyMDcsIDcxLCAxLCAyMzYsIDg5LCAKKyAgICA3MSwgMSwgMjM1LCAxOTksIDcxLCAxLCAyMTksIDI1MywgNzEsIDEsIDI0NywgMTkwLCA3MSwgMSwgMjQ3LCAzNywgNzEsIDEsIAorICAgIDIyNywgMjQ4LCA3MSwgMSwgMjI3LCAyMTUsIDcxLCAxLCAyMTgsIDYwLCA3MSwgMSwgMjE4LCAyNDMsIDcxLCAxLCAyMDQsIAorICAgIDI1MywgNzEsIDEsIDIwNCwgMjQxLCA3MSwgMSwgMjQxLCAyMjAsIDcxLCAxLCAyNDEsIDIwNCwgNzEsIDEsIDIxOSwgMjEsIAorICAgIDcxLCAxLCAyMDcsIDM2LCA3MSwgMSwgMjA2LCAxMjIsIDcxLCAxLCAyNDIsIDU4LCA3MSwgMSwgMjQxLCAxMDAsIDcxLCAxLCAKKyAgICAxODgsIDcxLCAxLCAxNzIsIDcxLCAxLCAyMTUsIDI0NSwgNzEsIDEsIDI0OSwgMTM2LCA3MSwgMSwgMjQ4LCAyMDAsIDcxLCAKKyAgICAxLCAxNzgsIDcxLCAxLCAxODMsIDcxLCAxLCAyMTMsIDI1MiwgNzEsIDEsIDE5NCwgNzEsIDEsIDIwMSwgMTE0LCA3MSwgMSwgCisgICAgMjEyLCA2NCwgNzEsIDEsIDE0NCwgNzEsIDEsIDIyNCwgMTM4LCA3MSwgMSwgNjIsIDcxLCAxLCAyMTAsIDkwLCA2MiwgNzEsIAorICAgIDEsIDcwLCA3MSwgMSwgMjI4LCAxNTEsIDcxLCAxLCA2NiwgNzEsIDEsIDIwMywgMTgyLCA3MSwgMSwgNzIsIDcxLCAxLCAKKyAgICAyMjEsIDEwNywgNzIsIDcxLCAxLCA3NCwgNzEsIDEsIDI1MCwgMTM5LCA3MSwgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgCisgICAgNzEsIDIyLCAyLCAyNTIsIDEzOCwgNzEsIDIyLCAyLCA3MCwgNzEsIDIyLCAyLCAyMjgsIDE1MSwgNzEsIDIyLCAyLCA2NiwgCisgICAgNzEsIDIyLCAyLCAyMDMsIDE4MiwgNzEsIDIyLCAyLCA3MiwgNzEsIDIyLCAyLCAyNTEsIDE3NiwgNzEsIDIyLCAyLCAyMjEsIAorICAgIDEwNywgMjI4LCAxNTEsIDcxLCAyMiwgMiwgMjIxLCAxMDcsIDc0LCA3MSwgMjIsIDIsIDE5NywgNTYsIDcxLCAyLCAyNTEsIAorICAgIDMzLCA3MSwgMiwgNzMsIDU3LCA3MSwgMiwgMjAyLCAyMDMsIDcxLCAyLCAyMDIsIDIwOCwgNzEsIDIsIDI1MCwgMTg1LCA3MSwgCisgICAgMTExLCAyLCAxNzksIDE4MywgNzEsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNzEsIDExMSwgMiwgMTc5LCAyMDEsIDExNCwgCisgICAgNzEsIDExMSwgMiwgMTc5LCAxNDQsIDcxLCAxLCAyMzUsIDY5LCAyMTIsIDY0LCA3MSwgMTcsIDE5OSwgODEsIDcxLCAxNywgCisgICAgMTAyLCA3MSwgMTcsIDEwNSwgNzEsIDE3LCAxNDcsIDcxLCAxNywgMTQ5LCA3MSwgMTcsIDE2NCwgNzEsIDE3LCAxODcsIDcxLCAKKyAgICAxNywgMjEwLCAxMzUsIDcxLCAxNywgMTkyLCA3MSwgMTcsIDIxOSwgMTEzLCA3MSwgMiwgMjI0LCAxNDgsIDIxMSwgMTkyLCAKKyAgICA3MSwgMiwgMjExLCAxOTIsIDcxLCAxNiwgMjI0LCAxMDUsIDcxLCAxNiwgMjQ2LCA2NCwgNzEsIDE2LCAyNTEsIDE5NywgNzEsIAorICAgIDE2LCAyMzUsIDI1NCwgNzEsIDEsIDIxMCwgMTE0LCA3MSwgMSwgMjA4LCAxNzksIDcxLCAxLCAxMDksIDE0NiwgNzEsIDEsIAorICAgIDEwOSwgMjEyLCAyMTYsIDcxLCAxLCAxMDksIDE1NiwgNzEsIDEsIDEwOSwgMjI0LCAxMzksIDcxLCAyMiwgMiwgMTA5LCAKKyAgICAxNDYsIDcxLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgNzEsIDIyLCAyLCAxMDksIDE1NiwgNzEsIDIyLCAyLCAxMDksIDIyNCwgCisgICAgMTM5LCA3MSwgMSwgMjIxLCAxMDcsIDIxOSwgMjUzLCA3MSwgMSwgMjIxLCAxMDcsIDIyNywgMjE1LCA3MSwgMSwgMjIxLCAKKyAgICAxMDcsIDI0OSwgNDQsIDcxLCAxLCAyMjEsIDEwNywgMjQ5LCAzOSwgNzEsIDExMSwgMiwgMjIxLCAxMDcsIDE3OSwgMTg4LCAKKyAgICA3MSwgMTExLCAyLCAyMjEsIDEwNywgMTc5LCAxNzgsIDcxLCAxMTEsIDIsIDIyMSwgMTA3LCAxNzksIDE5NCwgNzEsIDEsIAorICAgIDIxMCwgMTIwLCAyMjcsIDQ0LCAyMTAsIDExNCwgNzEsIDIyLCAyLCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM4LCA2OSwgNzEsIAorICAgIDE1MCwgMTM0LCAyMTAsIDEyMCwgMjI3LCA0NCwgMjM0LCAxNTMsIDcxLCAxNTAsIDEzNCwgMjEwLCAxMjAsIDIyNywgNDQsIAorICAgIDIyNywgOSwgMjE1LCAyMTcsIDcxLCAxLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA2LCAxMjIsIDcxLCAxLCAKKyAgICAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE0LCAxODUsIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgCisgICAgNDQsIDIzOCwgNjksIDcxLCAyMiwgMiwgMjAxLCA0NSwgMjE0LCAxNzksIDIyNywgNDQsIDIwNCwgMzEsIDcxLCAyLCAyMDEsIAorICAgIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzMsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAKKyAgICAxNzIsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzEsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIAorICAgIDE3OSwgMjI3LCA0NCwgMjA1LCAxNzAsIDcxLCAyLCAyMDEsIDQ1LCAyMTQsIDE3OSwgMjI3LCA0NCwgMjA1LCAxNjksIDcxLCAKKyAgICAxLCAyMzksIDEyLCAyMTQsIDE3OSwgMjI3LCA0NCwgMjE5LCAyMSwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIAorICAgIDQ0LCAxOTksIDE3NCwgNzEsIDEsIDIzOSwgMTIsIDIxNCwgMTc5LCAyMjcsIDQ0LCAyMzUsIDE2NCwgNzEsIDIyLCAyLCAKKyAgICAyMzYsIDExLCAyMjcsIDQ0LCA3MCwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMTcsIDEyMSwgNzEsIDIyLCAyLCAyMjcsIDE0LCAKKyAgICA2NiwgNzEsIDIyLCAyLCAyMjcsIDE0LCAyMzgsIDI1NSwgNzEsIDEsIDIxMCwgOTAsIDE2MSwgNzEsIDEsIDIxMCwgOTAsIAorICAgIDIyNiwgMjA3LCA3MSwgMSwgMjEwLCA5MCwgMjM2LCA4OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMTkwLCA3MSwgMSwgMjEwLCAKKyAgICA5MCwgMTk5LCAxMTQsIDcxLCAxLCAyMTAsIDkwLCAyMTgsIDYwLCA3MSwgMSwgMjEwLCA5MCwgMjQyLCA1OCwgNzEsIDEsIAorICAgIDIxMCwgOTAsIDE4OCwgNzEsIDEsIDIxMCwgOTAsIDIxNSwgMjQ1LCA3MSwgMSwgMjEwLCA5MCwgMjM3LCAxOTUsIDcxLCAxLCAKKyAgICAyMTAsIDkwLCAyNDksIDEzNiwgNzEsIDEsIDIxMCwgOTAsIDIwNiwgMTIyLCA3MSwgMSwgMjEwLCA5MCwgMTQ0LCA3MSwgCisgICAgMTExLCAyLCAyMTAsIDkwLCAxNzksIDIwMSwgMTE0LCA3MSwgMjIsIDIsIDIxMCwgOTAsIDI1MiwgMTM4LCA3MSwgMjIsIDIsIAorICAgIDIxMCwgOTAsIDcyLCA3MSwgMjIsIDIsIDIxMCwgOTAsIDE5NywgNTYsIDcxLCAyMiwgMiwgMjEwLCA5MCwgNDcsIDIwMCwgCisgICAgMTIzLCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNzIsIDcxLCAyLCAyMTAsIDkwLCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIAorICAgIDIwNSwgMTY5LCA3MSwgMiwgMjEwLCA5MCwgMjA1LCAxNjgsIDcxLCAyLCAyMTAsIDkwLCAyNDMsIDYsIDIwNSwgMTcyLCA3MSwgCisgICAgMiwgMjEwLCA5MCwgMjQzLCA2LCAyMDUsIDE3MSwgNzEsIDIsIDIxMCwgOTAsIDI0MywgNiwgMjM4LCAxODIsIDIwNSwgMTc0LCAKKyAgICA3MSwgMSwgMjEyLCAxNjAsIDIxNiwgMTgxLCAyMzcsIDE5NSwgNzEsIDIsIDIxMiwgMTYwLCAyMTYsIDE4MSwgMjA1LCAxNjksIAorICAgIDcxLCAyMTAsIDkwLCAxNywgMTk5LCA4MSwgNzEsIDIxMCwgOTAsIDE3LCAxMDIsIDcxLCAyMTAsIDkwLCAxNywgMTA1LCA3MSwgCisgICAgMjEwLCA5MCwgMTcsIDE0NywgNzEsIDIxMCwgOTAsIDE3LCAxNDksIDcxLCAyMTAsIDkwLCAxNywgMTY0LCA3MSwgMjEwLCAKKyAgICA5MCwgMTcsIDE4NywgNzEsIDIxMCwgOTAsIDE3LCAyMTAsIDEzNSwgNzEsIDIxMCwgOTAsIDE3LCAxOTIsIDcxLCAyMTAsIAorICAgIDkwLCAxNywgMjE5LCAxMTMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzMsIDcxLCAyLCAyMjYsIDIwMCwgMjA1LCAxNzEsIAorICAgIDcxLCAyMiwgMiwgMjUxLCAxNjMsIDYyLCA3MSwgMjIsIDIsIDI1MSwgMTYzLCAyNTEsIDE3NiwgNzEsIDE2LCAyMTAsIDkwLCAKKyAgICAxMDIsIDcxLCAxNiwgMjEwLCA5MCwgMjM4LCA0MiwgMTE4LCA2LCAxLCAyNTEsIDg1LCAxMTgsIDYsIDEsIDI0OSwgODgsIAorICAgIDExOCwgNiwgMSwgMjM2LCA1OSwgMTE4LCA2LCAxLCAyNDAsIDE5MCwgMTE4LCA2LCAxLCAyMzgsIDE3OSwgMTE4LCA2LCAxLCAKKyAgICAyMDIsIDIxNywgMTE4LCA2LCAxLCAxOTksIDg0LCAxMTgsIDYsIDEsIDIwNiwgMjQ0LCAxMTgsIDYsIDEsIDIyOCwgMTE3LCAKKyAgICAxMTgsIDYsIDEsIDIyNywgNjgsIDExOCwgNiwgMSwgMjI1LCA2NSwgMTE4LCA2LCAxLCAyMjIsIDE4MCwgMTE4LCA2LCAxLCAKKyAgICAyMjAsIDEyNSwgMTE4LCA2LCAxLCAyMTcsIDc4LCAxMTgsIDYsIDEsIDIxNiwgMTMwLCAxMTgsIDYsIDEsIDE5OSwgNzMsIAorICAgIDExOCwgNiwgMSwgMjEzLCAyMzQsIDExOCwgNiwgMSwgMjEyLCAxMywgMTE4LCA2LCAxLCAyMDYsIDIzMiwgMTE4LCA2LCAxLCAKKyAgICAyMDQsIDUsIDExOCwgNiwgMSwgMjE1LCAyMzcsIDExOCwgNiwgMSwgMjI2LCAxOTUsIDExOCwgNiwgMSwgMjM1LCAxOTAsIAorICAgIDExOCwgNiwgMSwgMjE0LCAxNDQsIDExOCwgNiwgMSwgMjEwLCAyMSwgMTE4LCA2LCAxLCAyNDYsIDIyMywgMTE4LCA2LCAxLCAKKyAgICAyNDcsIDE1OCwgMTE4LCA2LCAxLCAyMjcsIDE5OCwgMTE4LCA2LCAxLCAyNDYsIDE2MiwgMTE4LCA2LCAxLCAyNDcsIDIxLCAKKyAgICAxMTgsIDYsIDEsIDIwMCwgMTc5LCAxMTgsIDYsIDEsIDIyNywgMjEyLCAxMTgsIDYsIDEsIDIzNCwgMjMwLCAxMTgsIDYsIDEsIAorICAgIDIzNCwgMTM5LCAxMTgsIDYsIDEsIDIzNCwgNjksIDExOCwgNiwgMSwgMjAxLCA2NCwgMTE4LCA2LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCA2LCAxLCAyMzMsIDIwMywgMTE4LCA2LCAxLCAxOTksIDI0NywgMTE4LCA2LCAxLCAyNTEsIDIxMCwgMTE4LCAxLCAKKyAgICAyNTEsIDg1LCAxMTgsIDEsIDI0OSwgODgsIDExOCwgMSwgMjM2LCA1OSwgMTE4LCAxLCAyNDAsIDE5MCwgMTE4LCAxLCAyMzgsIAorICAgIDE3OSwgMTE4LCAxLCAyMDIsIDIxNywgMTE4LCAxLCAxOTksIDg0LCAxMTgsIDEsIDIwNiwgMjQ0LCAxMTgsIDEsIDIyOCwgCisgICAgMTE3LCAxMTgsIDEsIDIyNywgNjgsIDExOCwgMSwgMjI1LCA2NSwgMTE4LCAxLCAyMjIsIDE4MCwgMTE4LCAxLCAyMjAsIAorICAgIDEyNSwgMTE4LCAxLCAyMTcsIDc4LCAxMTgsIDEsIDIxNiwgMTMwLCAxMTgsIDEsIDE5OSwgNzMsIDExOCwgMSwgMjEzLCAKKyAgICAyMzQsIDExOCwgMSwgMjEyLCAxMywgMTE4LCAxLCAyMDYsIDIzMiwgMTE4LCAxLCAyMDQsIDUsIDExOCwgMSwgMjE1LCAyMzcsIAorICAgIDExOCwgMSwgMjI2LCAxOTUsIDExOCwgMSwgMjM1LCAxOTAsIDExOCwgMSwgMjE0LCAxNDQsIDExOCwgMSwgMjEwLCAyMSwgCisgICAgMTE4LCAxLCAyNDYsIDIyMywgMTE4LCAxLCAyNDcsIDE1OCwgMTE4LCAxLCAyMjcsIDE5OCwgMTE4LCAxLCAyNDYsIDE2MiwgCisgICAgMTE4LCAxLCAyNDcsIDIxLCAxMTgsIDEsIDIwMCwgMTc5LCAxMTgsIDEsIDIyNywgMjEyLCAxMTgsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDEsIDIzNCwgMTM5LCAxMTgsIDEsIDIzNCwgNjksIDExOCwgMSwgMjAxLCA2NCwgMTE4LCAxLCAyMzQsIDE2NiwgCisgICAgMTE4LCAxLCAyMzMsIDIwMywgMTE4LCAxLCAyMzcsIDExMiwgMTE4LCAxLCAxOTksIDI0NywgMTE4LCAxLCAyMzgsIDE5NywgCisgICAgMTE4LCAxLCAyMDQsIDE4NSwgMjM2LCA1OSwgMTE4LCAxLCAyNTEsIDE3MSwgMTE4LCAyMTYsIDEyOCwgMjEwLCAxNTQsIDY3LCAKKyAgICAxLCAxMTgsIDIyMCwgMTI1LCAxMTgsIDEsIDI1MSwgMjEwLCAxMTgsIDEsIDIzNCwgMTY1LCA1NCwgMTE4LCAxLCAyMjUsIAorICAgIDE2NywgNTQsIDI5LCAxMjksIDIyNiwgMTIxLCAyOSwgMTI5LCAyMDgsIDE3MSwgMjksIDEyOSwgMjE5LCAxNDMsIDI5LCAKKyAgICAxMjksIDIwNSwgMjUzLCAyOSwgMTI5LCAyMDgsIDE2MCwgMjksIDEyOSwgMjEzLCA3OCwgMjksIDEyOSwgMjIxLCAxOTcsIAorICAgIDI5LCAxMjksIDIxNSwgMTkwLCAyOSwgMTI5LCAyMDgsIDE2OCwgMjksIDEyOSwgMjA5LCAxMjksIDI5LCAxMjksIDIwOCwgCisgICAgMTY1LCAyOSwgMTI5LCAyMjgsIDE3NCwgMjksIDEyOSwgMjQ2LCAxNjgsIDI5LCAxMjksIDIwOCwgMTc1LCAyOSwgMTI5LCAKKyAgICAyNDYsIDIzMiwgMjksIDEyOSwgMjI2LCAxODMsIDI5LCAxMjksIDIwNiwgODAsIDI5LCAxMjksIDIxNSwgMjI3LCAyOSwgCisgICAgMTI5LCAyMzQsIDY2LCAyOSwgMTI5LCAyMTksIDEzOSwgMjksIDEyOSwgMjA4LCAxNjksIDI5LCAxMjksIDIxOSwgMTMzLCAKKyAgICAyOSwgMTI5LCAyMTksIDEzNywgMjksIDEyOSwgMjA1LCAyNTAsIDI5LCAxMjksIDIxMywgNjYsIDI5LCAxMjksIDIwOCwgCisgICAgMTY3LCAyOSwgMTI5LCAyMTMsIDc2LCAyOSwgMTI5LCAyMjcsIDUwLCAyOSwgMTI5LCAyMjEsIDE5MCwgMjksIDEyOSwgMjI3LCAKKyAgICA1MywgMjksIDEyOSwgMjE1LCAxODUsIDI5LCAxMjksIDIxNSwgMTgzLCAyOSwgMTI5LCAyMTUsIDE3MSwgMjksIDEyOSwgCisgICAgMjE1LCAxNzksIDI5LCAxMjksIDIxNSwgMTc3LCAyOSwgMTI5LCAyMTUsIDE3NCwgMjksIDEyOSwgMjE1LCAxNzYsIDI5LCAKKyAgICAxMjksIDIxNSwgMTczLCAyOSwgMTI5LCAyMTUsIDE3OCwgMjksIDEyOSwgMjE1LCAxODgsIDI5LCAxMjksIDIxNSwgMTg5LCAKKyAgICAyOSwgMTI5LCAyMTUsIDE3MiwgMjksIDEyOSwgMjE1LCAxODIsIDI5LCAxMjksIDIyNywgNTEsIDI5LCAxMjksIDIyNywgNDksIAorICAgIDI5LCAxMjksIDIwOSwgMTIyLCAyOSwgMTI5LCAyMDksIDEyMCwgMjksIDEyOSwgMjA5LCAxMTIsIDI5LCAxMjksIDIwOSwgCisgICAgMTE1LCAyOSwgMTI5LCAyMDksIDEyMSwgMjksIDEyOSwgMjA5LCAxMTcsIDI5LCAxMjksIDIwOSwgMTE2LCAyOSwgMTI5LCAKKyAgICAyMDksIDExNCwgMjksIDEyOSwgMjA5LCAxMjUsIDI5LCAxMjksIDIwOSwgMTI3LCAyOSwgMTI5LCAyMDksIDEyOCwgMjksIAorICAgIDEyOSwgMjA5LCAxMjMsIDI5LCAxMjksIDIwOSwgMTEzLCAyOSwgMTI5LCAyMDksIDExOCwgMjksIDEyOSwgMjA5LCAxMjYsIAorICAgIDI5LCAxMjksIDI0NiwgMjE0LCAyOSwgMTI5LCAyNDYsIDIxMiwgMjksIDEyOSwgMjQ3LCA0OCwgMjksIDEyOSwgMjQ3LCA0NiwgCisgICAgMjksIDEyOSwgMjE2LCAxNDYsIDI5LCAxMjksIDIyOCwgMTY5LCAyOSwgMTI5LCAyMjgsIDE2MCwgMjksIDEyOSwgMjI4LCAKKyAgICAxNjgsIDI5LCAxMjksIDIyOCwgMTY1LCAyOSwgMTI5LCAyMjgsIDE2MywgMjksIDEyOSwgMjI4LCAxNjcsIDI5LCAxMjksIAorICAgIDIwOCwgMTcyLCAyOSwgMTI5LCAyMjgsIDE3MiwgMjksIDEyOSwgMjI4LCAxNzMsIDI5LCAxMjksIDIyOCwgMTYxLCAyOSwgCisgICAgMTI5LCAyMjgsIDE2NiwgMjksIDEyOSwgMjAwLCAyOCwgMjksIDEyOSwgMjQ2LCAxNjcsIDI5LCAxMjksIDI0NiwgMjE1LCAKKyAgICAyOSwgMTI5LCAyNDYsIDIxMywgMjksIDEyOSwgMjQ3LCA0OSwgMjksIDEyOSwgMjQ3LCA0NywgMjksIDEyOSwgMjQ2LCAyMzAsIAorICAgIDI5LCAxMjksIDI0NiwgMjMxLCAyOSwgMTI5LCAyNDYsIDIxNiwgMjksIDEyOSwgMjQ3LCA1MCwgMjksIDEyOSwgMjE1LCAKKyAgICAyMjUsIDI5LCAxMjksIDIyNywgNTIsIDI5LCAxMjksIDIwOCwgMTczLCAyOSwgMTI5LCAyMDAsIDM0LCAyOSwgMTI5LCAyMjYsIAorICAgIDExMiwgMjksIDEyOSwgMjE5LCAxMzUsIDI5LCAxMjksIDIxOSwgMTQxLCAyOSwgMTI5LCAyMTksIDE0MCwgMjksIDEyOSwgCisgICAgMjA1LCAyNDcsIDI5LCAxMjksIDIzNywgOTMsIDI5LCAxODEsIDIzNywgOTMsIDI5LCAxODEsIDYyLCAyOSwgMTgxLCAyNTEsIAorICAgIDIyMSwgMjksIDE4MSwgMTgzLCAyOSwgMTgxLCAyMDAsIDk4LCAyOSwgMTgxLCAyMzgsIDE0MiwgMjksIDE4MSwgNzIsIDI5LCAKKyAgICAxODEsIDIwMCwgMzgsIDI5LCAxODEsIDIwMCwgNTEsIDI5LCAxODEsIDc0LCAyOSwgMTgxLCAyMDEsIDExNCwgMjksIDE4MSwgCisgICAgMjAxLCAxMTAsIDI5LCAxODEsIDIxNywgMTIxLCAyOSwgMTgxLCAxOTksIDI0NSwgMjksIDE4MSwgNjYsIDI5LCAxODEsIAorICAgIDIwMSwgNTAsIDI5LCAxODEsIDIwMSwgNjQsIDI5LCAxODEsIDIwMSwgMzEsIDI5LCAxODEsIDE5OSwgMjExLCAyOSwgMTgxLCAKKyAgICAyMzgsIDY5LCAyOSwgMTgxLCAyMDAsIDksIDI5LCAxODEsIDcwLCAyOSwgMTgxLCAyNTUsIDEzMywgMjksIDE4MSwgMjU1LCAKKyAgICAxMzIsIDI5LCAxODEsIDIwMCwgMTEyLCAyOSwgMTgxLCAyMDAsIDExMCwgMjksIDE4MSwgMjM4LCAxNDAsIDI5LCAxODEsIAorICAgIDIzOCwgMTM5LCAyOSwgMTgxLCAyMzgsIDE0MSwgMjksIDE4MSwgMjAwLCAzNywgMjksIDE4MSwgMjAwLCAzNiwgMjksIDE4MSwgCisgICAgMjE3LCAyMzAsIDI5LCAxODEsIDIxNywgMjMxLCAyOSwgMTgxLCAyMTcsIDIyNCwgMjksIDE4MSwgMjE3LCAyMjksIDI5LCAKKyAgICAxODEsIDIxNywgMjI3LCAyOSwgMTgxLCAxOTksIDIzOSwgMjksIDE4MSwgMTk5LCAyMzgsIDI5LCAxODEsIDE5OSwgMjM3LCAKKyAgICAyOSwgMTgxLCAxOTksIDI0MCwgMjksIDE4MSwgMTk5LCAyNDEsIDI5LCAxODEsIDIwNCwgMTA0LCAyOSwgMTgxLCAyMDQsIAorICAgIDEwMywgMjksIDE4MSwgMjA0LCAxMDEsIDI5LCAxODEsIDIwNCwgOTcsIDI5LCAxODEsIDIwNCwgOTgsIDI5LCAxODEsIDE5OSwgCisgICAgMjEwLCAyOSwgMTgxLCAxOTksIDIwNywgMjksIDE4MSwgMTk5LCAyMDgsIDI5LCAxODEsIDE5OSwgMjAyLCAyOSwgMTgxLCAKKyAgICAxOTksIDIwMywgMjksIDE4MSwgMTk5LCAyMDQsIDI5LCAxODEsIDE5OSwgMjA2LCAyOSwgMTgxLCAyMzgsIDYzLCAyOSwgCisgICAgMTgxLCAyMzgsIDY1LCAyOSwgMTgxLCAyMDAsIDgsIDI5LCAxODEsIDIzMywgMTgsIDI5LCAxODEsIDIzMywgMTAsIDI5LCAKKyAgICAxODEsIDIzMywgMTMsIDI5LCAxODEsIDIzMywgMTEsIDI5LCAxODEsIDIzMywgMTUsIDI5LCAxODEsIDIzMywgMTcsIDI5LCAKKyAgICAxODEsIDI1MCwgMjQ1LCAyOSwgMTgxLCAyNTAsIDI0MiwgMjksIDE4MSwgMjUwLCAyNDAsIDI5LCAxODEsIDI1MCwgMjQxLCAKKyAgICAyOSwgMTgxLCAyMDgsIDE3NiwgMjksIDE4MSwgMjU1LCAxMzQsIDI5LCAxODEsIDIwMCwgMTExLCAyOSwgMTgxLCAyMDAsIAorICAgIDM1LCAyOSwgMTgxLCAyMTcsIDIyNiwgMjksIDE4MSwgMjE3LCAyMjUsIDI5LCAxMTAsIDIyNiwgMTIxLCAyOSwgMTEwLCAKKyAgICAyMDgsIDE3MSwgMjksIDExMCwgMjI2LCAxMTQsIDI5LCAxMTAsIDIxOSwgMTQzLCAyOSwgMTEwLCAyMTksIDE0MSwgMjksIAorICAgIDExMCwgMjE5LCAxNDAsIDI5LCAxMTAsIDIwNSwgMjUzLCAyOSwgMTEwLCAyMTMsIDc4LCAyOSwgMTEwLCAyMTMsIDczLCAyOSwgCisgICAgMTEwLCAyMTMsIDcwLCAyOSwgMTEwLCAyMTMsIDYzLCAyOSwgMTEwLCAyMTMsIDU4LCAyOSwgMTEwLCAyMTMsIDUzLCAyOSwgCisgICAgMTEwLCAyMTMsIDY0LCAyOSwgMTEwLCAyMTMsIDc2LCAyOSwgMTEwLCAyMjEsIDE5NywgMjksIDExMCwgMjE1LCAxOTAsIDI5LCAKKyAgICAxMTAsIDIxNSwgMTc5LCAyOSwgMTEwLCAyMDksIDEyOSwgMjksIDExMCwgMjA4LCAxNjUsIDI5LCAxMTAsIDIyOCwgMTc0LCAKKyAgICAyOSwgMTEwLCAyNDYsIDE2OCwgMjksIDExMCwgMjQ2LCAyMzIsIDI5LCAxMTAsIDIyNiwgMTgzLCAyOSwgMTEwLCAyMDYsIAorICAgIDgwLCAyOSwgMTEwLCAyMTUsIDIyNywgMjksIDExMCwgMjM0LCA2NiwgMjksIDExMCwgMjI2LCAxMTUsIDI5LCAxMTAsIDIyNiwgCisgICAgMTEzLCAyOSwgMTEwLCAyMTksIDEzOSwgMjksIDExMCwgMjE5LCAxMzMsIDI5LCAxMTAsIDIxOSwgMTM1LCAyOSwgMTEwLCAKKyAgICAyMTksIDEzOCwgMjksIDExMCwgMjE5LCAxMzQsIDI5LCAxMTAsIDIwNSwgMjUwLCAyOSwgMTEwLCAyMDUsIDI0NywgMjksIAorICAgIDExMCwgMjEzLCA3MSwgMjksIDExMCwgMjEzLCA2NiwgMjksIDExMCwgMjEzLCA1MiwgMjksIDExMCwgMjEzLCA1MSwgMjksIAorICAgIDExMCwgMjA4LCAxNjcsIDI5LCAxMTAsIDIxMywgNjgsIDI5LCAxMTAsIDIxMywgNjcsIDI5LCAxMTAsIDIxMywgNjAsIDI5LCAKKyAgICAxMTAsIDIxMywgNjIsIDI5LCAxMTAsIDIxMywgNzUsIDI5LCAxMTAsIDIxMywgNTUsIDI5LCAxMTAsIDIxMywgNjUsIDI5LCAKKyAgICAxMTAsIDIxMywgNzQsIDI5LCAxMTAsIDIxMywgNTAsIDI5LCAxMTAsIDIyMSwgMTkzLCAyOSwgMTEwLCAyMjEsIDE4OCwgMjksIAorICAgIDExMCwgMjIxLCAxOTAsIDI5LCAxMTAsIDIyMSwgMTg3LCAyOSwgMTEwLCAyMjEsIDE4NSwgMjksIDExMCwgMjIxLCAxOTEsIAorICAgIDI5LCAxMTAsIDIyMSwgMTk2LCAyOSwgMTEwLCAyMjEsIDE5NCwgMjksIDExMCwgMjI3LCA1MywgMjksIDExMCwgMjE1LCAKKyAgICAxODEsIDI5LCAxMTAsIDIxNSwgMTgyLCAyOSwgMTEwLCAyMTUsIDE4NywgMjksIDExMCwgMjI3LCA1MSwgMjksIDExMCwgCisgICAgMjA5LCAxMjIsIDI5LCAxMTAsIDIwOSwgMTEyLCAyOSwgMTEwLCAyMDksIDExNSwgMjksIDExMCwgMjA5LCAxMTcsIDI5LCAKKyAgICAxMTAsIDIxNiwgMTQ2LCAyOSwgMTEwLCAyMjgsIDE2OSwgMjksIDExMCwgMjI4LCAxNjIsIDI5LCAxMTAsIDIwOCwgMTcyLCAKKyAgICAyOSwgMTEwLCAyMjgsIDE3MCwgMjksIDExMCwgMjAwLCAyOCwgMjksIDExMCwgMjAwLCAyNCwgMjksIDExMCwgMjAwLCAyNSwgCisgICAgMjksIDExMCwgMjE1LCAyMjUsIDI5LCAxMTAsIDIyNywgNTIsIDI5LCAxMTAsIDIzNCwgNjQsIDI5LCAxMTAsIDIzNCwgNjIsIAorICAgIDI5LCAxMTAsIDIzNCwgNjUsIDI5LCAxMTAsIDIzNCwgNjMsIDI5LCAxMTAsIDIwMCwgMzQsIDI5LCAxMTAsIDIyNiwgMTE3LCAKKyAgICAyOSwgMTEwLCAyMjYsIDExNiwgMjksIDExMCwgMjI2LCAxMjAsIDI5LCAxMTAsIDIyNiwgMTE4LCAyOSwgMTEwLCAyMjYsIAorICAgIDExOSwgMjksIDExMCwgMjA4LCAxNjksIDM0LCA1LCAxNDQsIDM0LCA1LCAyMzMsIDk3LCAzNCwgNSwgMjM0LCA3NSwgMzQsIAorICAgIDUsIDIzNCwgMjMzLCAzNCwgNSwgMjM0LCAxMjAsIDM0LCA1LCAyMzQsIDEzOSwgMzQsIDUsIDIzMywgMjA3LCAzNCwgNSwgCisgICAgMjMzLCAyMDYsIDM0LCA1LCAxOTQsIDM0LCA1LCAyMjQsIDQyLCAzNCwgNSwgMjI0LCAyMTAsIDM0LCA1LCAyMjUsIDE3NSwgCisgICAgMzQsIDUsIDIyNSwgMzIsIDM0LCA1LCAyMjUsIDQwLCAzNCwgNSwgMjI0LCAxMTAsIDM0LCA1LCAyMjQsIDEwLCAzNCwgNSwgCisgICAgMjM0LCA4NCwgMzQsIDUsIDIzNCwgNzgsIDM0LCA1LCAyMzQsIDgwLCAzNCwgNSwgMjM0LCA4MywgMzQsIDUsIDIzNCwgODEsIAorICAgIDM0LCA1LCAyMzQsIDgyLCAzNCwgNSwgMjM0LCA3OSwgMzQsIDUsIDIzNCwgNzcsIDM0LCA1LCAxNzgsIDM0LCA1LCAyMjEsIAorICAgIDQxLCAzNCwgNSwgMjIxLCAyMTEsIDM0LCA1LCAyMjIsIDIzMywgMzQsIDUsIDIyMiwgNjQsIDM0LCA1LCAyMjIsIDc2LCAzNCwgCisgICAgNSwgMjIxLCAxMzYsIDM0LCA1LCAyMjAsIDIzMSwgMzQsIDUsIDIwNywgOTQsIDM0LCA1LCAyMDcsIDg4LCAzNCwgNSwgMjA3LCAKKyAgICA5MCwgMzQsIDUsIDIwNywgOTMsIDM0LCA1LCAyMDcsIDkxLCAzNCwgNSwgMjA3LCA5MiwgMzQsIDUsIDIwNywgODksIDM0LCAKKyAgICA1LCAyMDcsIDg3LCAzNCwgNSwgMjEzLCAyNTIsIDM0LCA1LCAyMTIsIDE3NSwgMzQsIDUsIDIxMywgODgsIDM0LCA1LCAyMTMsIAorICAgIDI0OCwgMzQsIDUsIDIxMywgMTY3LCAzNCwgNSwgMjEzLCAxOTAsIDM0LCA1LCAyMTMsIDEsIDM0LCA1LCAyMTIsIDE0MCwgCisgICAgMzQsIDUsIDIxMiwgNjQsIDM0LCA1LCAyMDgsIDI0LCAzNCwgNSwgMjA5LCAxODIsIDM0LCA1LCAyMTIsIDYxLCAzNCwgNSwgCisgICAgMjExLCAxOTAsIDM0LCA1LCAyMTEsIDIwMiwgMzQsIDUsIDIwOSwgMjksIDM0LCA1LCAyMDcsIDE4NiwgMzQsIDUsIDIxMCwgCisgICAgMTE0LCAzNCwgNSwgMjA5LCAyMjAsIDM0LCA1LCAyMTAsIDMzLCAzNCwgNSwgMjEwLCAxMDksIDM0LCA1LCAyMTAsIDYzLCAKKyAgICAzNCwgNSwgMjEwLCA2NSwgMzQsIDUsIDIxMCwgOCwgMzQsIDUsIDIwOSwgMjAwLCAzNCwgNSwgMjE0LCAxNTksIDM0LCA1LCAKKyAgICAyMTQsIDk3LCAzNCwgNSwgMjE0LCAxMjEsIDM0LCA1LCAyMTQsIDE1OCwgMzQsIDUsIDIxNCwgMTM4LCAzNCwgNSwgMjE0LCAKKyAgICAxMzksIDM0LCA1LCAyMTQsIDEwOSwgMzQsIDUsIDIxNCwgMTA4LCAzNCwgNSwgMjE0LCA1MSwgMzQsIDUsIDIxNCwgNDcsIAorICAgIDM0LCA1LCAyMTQsIDUwLCAzNCwgNSwgMjE0LCA0OCwgMzQsIDUsIDIxNCwgNDksIDM0LCA1LCAyMTQsIDEzNSwgMzQsIDUsIAorICAgIDIxNCwgMTI3LCAzNCwgNSwgMjE0LCAxMzAsIDM0LCA1LCAyMTQsIDEzNCwgMzQsIDUsIDIxNCwgMTMxLCAzNCwgNSwgMjE0LCAKKyAgICAxMzIsIDM0LCA1LCAyMTQsIDEyOSwgMzQsIDUsIDIxNCwgMTI2LCAzNCwgNSwgMjE0LCAxMjIsIDM0LCA1LCAyMTQsIDEyNSwgCisgICAgMzQsIDUsIDIxNCwgMTIzLCAzNCwgNSwgMjE0LCAxMjQsIDM0LCA1LCAyNDksIDEzNiwgMzQsIDUsIDI0OCwgMzYsIDM0LCA1LCAKKyAgICAyNDgsIDE4OCwgMzQsIDUsIDI0OSwgMTM0LCAzNCwgNSwgMjQ4LCAyNTIsIDM0LCA1LCAyNDksIDgsIDM0LCA1LCAyNDgsIAorICAgIDEyNCwgMzQsIDUsIDI0NywgMjQwLCAzNCwgNSwgMjAzLCA5MCwgMzQsIDUsIDIwMSwgMTY2LCAzNCwgNSwgMjAyLCAyMzQsIAorICAgIDM0LCA1LCAyMDMsIDg5LCAzNCwgNSwgMjAzLCA1NCwgMzQsIDUsIDIwMywgNTksIDM0LCA1LCAyMDIsIDE5MywgMzQsIDUsIAorICAgIDIwMSwgMTU3LCAzNCwgNSwgMjA3LCAzNiwgMzQsIDUsIDIwNCwgMjE1LCAzNCwgNSwgMjA2LCAxNSwgMzQsIDUsIDIwNywgCisgICAgMzIsIDM0LCA1LCAyMDYsIDE5MCwgMzQsIDUsIDIwNiwgMjAxLCAzNCwgNSwgMTM4LCAzNCwgNSwgMjA0LCAxNzAsIDM0LCA1LCAKKyAgICAyNDcsIDE5MCwgMzQsIDUsIDI0MiwgMjE0LCAzNCwgNSwgMjQ2LCAxNzMsIDM0LCA1LCAyNDcsIDE4OSwgMzQsIDUsIDI0NywgCisgICAgNjgsIDM0LCA1LCAyNDcsIDc2LCAzNCwgNSwgMjQ2LCA5MSwgMzQsIDUsIDI0MiwgMTc2LCAzNCwgNSwgMjAwLCAxODEsIDM0LCAKKyAgICA1LCAyMDAsIDE1MSwgMzQsIDUsIDIwMCwgMTY5LCAzNCwgNSwgMjAwLCAxODAsIDM0LCA1LCAyMDAsIDE3NCwgMzQsIDUsIAorICAgIDIwMCwgMTc1LCAzNCwgNSwgMjAwLCAxNTksIDM0LCA1LCAyMDAsIDE1OCwgMzQsIDUsIDIwMCwgMTQ1LCAzNCwgNSwgMjAwLCAKKyAgICAxNDEsIDM0LCA1LCAyMDAsIDE0NCwgMzQsIDUsIDIwMCwgMTQyLCAzNCwgNSwgMjAwLCAxNDMsIDM0LCA1LCAxODgsIDM0LCAKKyAgICA1LCAyMTgsIDEzMywgMzQsIDUsIDIxOSwgMTUwLCAzNCwgNSwgMjIwLCAxNTcsIDM0LCA1LCAyMjAsIDI5LCAzNCwgNSwgCisgICAgMjIwLCAzNCwgMzQsIDUsIDIxOCwgMjQxLCAzNCwgNSwgMjE4LCA2OSwgMzQsIDUsIDIxOCwgNjAsIDM0LCA1LCAyMTgsIDE5LCAKKyAgICAzNCwgNSwgMjE4LCA0MSwgMzQsIDUsIDIxOCwgNTksIDM0LCA1LCAyMTgsIDQ5LCAzNCwgNSwgMjE4LCA1MCwgMzQsIDUsIAorICAgIDIxOCwgMjYsIDM0LCA1LCAyMTgsIDksIDM0LCA1LCAyMzUsIDEyMywgNjIsIDM0LCA1LCAyMzUsIDEyMywgNjYsIDM0LCA1LCAKKyAgICAyMzUsIDEyMywgNzAsIDM0LCA1LCAyMzUsIDEyMywgMjUyLCAxMzgsIDM0LCA1LCAyMzUsIDEyMywgMjM4LCAyNTUsIDM0LCAKKyAgICA1LCAyMzUsIDEyMywgNzIsIDM0LCA1LCAyMzUsIDEyMywgNzQsIDM0LCA1LCAyMzUsIDEyMywgMjAxLCAxMTQsIDM0LCA1LCAKKyAgICAxNjEsIDM0LCA1LCAyMjYsIDE1LCAzNCwgNSwgMjI2LCAxNjMsIDM0LCA1LCAyMjcsIDEwNSwgMzQsIDUsIDIyNywgNSwgMzQsIAorICAgIDUsIDIyNywgOCwgMzQsIDUsIDIyNiwgODgsIDM0LCA1LCAyMjYsIDg3LCAzNCwgNSwgMjI1LCAyMjksIDM0LCA1LCAyMjUsIAorICAgIDIyMiwgMzQsIDUsIDIyNSwgMjI4LCAzNCwgNSwgMjI1LCAyMjMsIDM0LCA1LCAyMjUsIDIyNCwgMzQsIDUsIDIyNSwgMjE1LCAKKyAgICAzNCwgNSwgMjI1LCAyMDksIDM0LCA1LCAyMjUsIDIxMSwgMzQsIDUsIDIyNSwgMjE0LCAzNCwgNSwgMjI1LCAyMTIsIDM0LCAKKyAgICA1LCAyMjUsIDIxMywgMzQsIDUsIDIyNSwgMjEwLCAzNCwgNSwgMjI1LCAyMDgsIDM0LCA1LCAyMjUsIDIwNCwgMzQsIDUsIAorICAgIDIyNSwgMjA3LCAzNCwgNSwgMjI1LCAyMDUsIDM0LCA1LCAyMjUsIDIwNiwgMzQsIDUsIDIwMSwgMTE0LCAzNCwgNSwgMjAwLCAKKyAgICAyMTYsIDM0LCA1LCAyMDEsIDMxLCAzNCwgNSwgMjAxLCAxMTMsIDM0LCA1LCAyMDEsIDU3LCAzNCwgNSwgMjAxLCA2NCwgMzQsIAorICAgIDUsIDIwMSwgMCwgMzQsIDUsIDIwMCwgMjU1LCAzNCwgNSwgMjE1LCAyMzYsIDYyLCAzNCwgNSwgMjE1LCAyMzYsIDY2LCAzNCwgCisgICAgNSwgMjE1LCAyMzYsIDcwLCAzNCwgNSwgMjE1LCAyMzYsIDI1MiwgMTM4LCAzNCwgNSwgMjE1LCAyMzYsIDIzOCwgMjU1LCAKKyAgICAzNCwgNSwgMjE1LCAyMzYsIDcyLCAzNCwgNSwgMjE1LCAyMzYsIDc0LCAzNCwgNSwgMTk5LCAxMTQsIDM0LCA1LCAxOTksIDMsIAorICAgIDM0LCA1LCAxOTksIDM2LCAzNCwgNSwgMTk5LCAxMTIsIDM0LCA1LCAxOTksIDg3LCAzNCwgNSwgMTk5LCA4OSwgMzQsIDUsIAorICAgIDE5OSwgMTQsIDM0LCA1LCAxOTgsIDI0NiwgMzQsIDUsIDE5OSwgNzcsIDM0LCA1LCAxOTksIDU0LCAzNCwgNSwgMTk5LCA2MywgCisgICAgMzQsIDUsIDE5OSwgNzYsIDM0LCA1LCAxOTksIDY3LCAzNCwgNSwgMTk5LCA2OCwgMzQsIDUsIDE5OSwgNjAsIDM0LCA1LCAKKyAgICAxOTksIDQ1LCAzNCwgNSwgMTgzLCAzNCwgNSwgMTk5LCAyMTEsIDM0LCA1LCAyMDAsIDksIDM0LCA1LCAyMDAsIDEwOSwgMzQsIAorICAgIDUsIDIwMCwgNDgsIDM0LCA1LCAyMDAsIDUxLCAzNCwgNSwgMTk5LCAyNDUsIDM0LCA1LCAxOTksIDIzNiwgMzQsIDUsIDI0MiwgCisgICAgNTgsIDM0LCA1LCAyMzksIDEzNywgMzQsIDUsIDI0MSwgNzYsIDM0LCA1LCAyNDIsIDU3LCAzNCwgNSwgMjQxLCAxNjEsIDM0LCAKKyAgICA1LCAyNDEsIDE3NSwgMzQsIDUsIDI0MCwgMjExLCAzNCwgNSwgMjM5LCAxMDQsIDM0LCA1LCAyNDEsIDIyMCwgMzQsIDUsIAorICAgIDI0MSwgMTg1LCAzNCwgNSwgMjQxLCAxOTcsIDM0LCA1LCAyNDEsIDIxOSwgMzQsIDUsIDI0MSwgMjA3LCAzNCwgNSwgMjQxLCAKKyAgICAyMDgsIDM0LCA1LCAyNDEsIDE5MCwgMzQsIDUsIDI0MSwgMTc2LCAzNCwgNSwgMjI3LCAyNDgsIDM0LCA1LCAyMjcsIDE0NywgCisgICAgMzQsIDUsIDIyNywgMjA3LCAzNCwgNSwgMjI3LCAyNDcsIDM0LCA1LCAyMjcsIDIyNSwgMzQsIDUsIDIyNywgMjI3LCAzNCwgCisgICAgNSwgMjI3LCAxNjYsIDM0LCA1LCAyMjcsIDEyNiwgMzQsIDUsIDIzNiwgODksIDM0LCA1LCAyMzUsIDUwLCAzNCwgNSwgMjM1LCAKKyAgICAxNjEsIDM0LCA1LCAyMzYsIDg2LCAzNCwgNSwgMjM2LCA3LCAzNCwgNSwgMjM2LCAxNSwgMzQsIDUsIDIzNSwgMTE2LCAzNCwgCisgICAgNSwgMjM1LCAxMTUsIDM0LCA1LCAyMzUsIDEwLCAzNCwgNSwgMjM1LCA2LCAzNCwgNSwgMjM1LCA5LCAzNCwgNSwgMjM1LCA3LCAKKyAgICAzNCwgNSwgMjM1LCA4LCAzNCwgNSwgMjM1LCAyMzUsIDM0LCA1LCAyMzUsIDIxNSwgMzQsIDUsIDIzNSwgMjI1LCAzNCwgNSwgCisgICAgMjM1LCAyMzQsIDM0LCA1LCAyMzUsIDIyOSwgMzQsIDUsIDIzNSwgMjMwLCAzNCwgNSwgMjM1LCAyMTksIDM0LCA1LCAyMzUsIAorICAgIDIwNCwgMzQsIDUsIDIwNiwgMTIyLCAzNCwgNSwgMjA2LCAzNSwgMzQsIDUsIDIwNiwgODQsIDM0LCA1LCAyMDYsIDEyMSwgCisgICAgMzQsIDUsIDIwNiwgMTA0LCAzNCwgNSwgMjA2LCAxMDYsIDM0LCA1LCAyMDYsIDYxLCAzNCwgNSwgMjA2LCAyNiwgMzQsIDUsIAorICAgIDI0NywgMzcsIDM0LCA1LCAyNDYsIDE5MiwgMzQsIDUsIDI0NiwgMjM2LCAzNCwgNSwgMjQ3LCAzNiwgMzQsIDUsIDI0NywgNCwgCisgICAgMzQsIDUsIDI0NywgOCwgMzQsIDUsIDI0NiwgMjEwLCAzNCwgNSwgMjQ2LCAxODEsIDM0LCA1LCAyMTUsIDI0NSwgMzQsIDUsIAorICAgIDIxNSwgMjEwLCAzNCwgNSwgMjE1LCAyMjksIDM0LCA1LCAyMTUsIDI0NCwgMzQsIDUsIDIxNSwgMjMxLCAzNCwgNSwgMjE1LCAKKyAgICAyMzIsIDM0LCA1LCAyMTUsIDIxNywgMzQsIDUsIDIxNSwgMjA2LCAzNCwgNSwgMjA1LCAzMiwgMzQsIDUsIDIwNSwgNSwgMzQsIAorICAgIDUsIDIwNSwgMTEsIDM0LCA1LCAyMDUsIDMxLCAzNCwgNSwgMjA1LCAyNSwgMzQsIDUsIDIwNSwgMjYsIDM0LCA1LCAyMDUsIAorICAgIDksIDM0LCA1LCAyMDUsIDMsIDM0LCA1LCAyMDQsIDExMywgMzQsIDUsIDIwNCwgMTA1LCAzNCwgNSwgMjA0LCAxMDksIDM0LCAKKyAgICA1LCAyMDQsIDExMiwgMzQsIDUsIDIwNCwgMTEwLCAzNCwgNSwgMjA0LCAxMTEsIDM0LCA1LCAyMDQsIDEwNywgMzQsIDUsIAorICAgIDIwNCwgMTA2LCAzNCwgNSwgMjM3LCAxOTUsIDM0LCA1LCAyMzYsIDE4OSwgMzQsIDUsIDIzNywgMTEyLCAzNCwgNSwgMjM3LCAKKyAgICAxOTQsIDM0LCA1LCAyMzcsIDE0MCwgMzQsIDUsIDIzNywgMTQ3LCAzNCwgNSwgMjM3LCAxMywgMzQsIDUsIDIzNiwgMTY3LCAKKyAgICAzNCwgNSwgMTcyLCAzNCwgNSwgMjE0LCAyMjQsIDM0LCA1LCAyMTUsIDIwNCwgMzQsIDUsIDIxNiwgMjEwLCAzNCwgNSwgCisgICAgMjE2LCA2MSwgMzQsIDUsIDIxNiwgNzMsIDM0LCA1LCAyMTUsIDEwNiwgMzQsIDUsIDIxNCwgMTg1LCAzNCwgNSwgMjEyLCAKKyAgICAxMzAsIDM0LCA1LCAyMjAsIDIyMCwgMzQsIDUsIDIzNiwgMTYxLCAzNCwgMzgsIDIzNiwgMywgMjYsIDIyLCAyMjUsIDIsIAorICAgIDgxLCAzNCwgMzgsIDIyLCAyMjUsIDIsIDgxLCAzNCwgMzgsIDIzNiwgMywgODEsIDM0LCAyMTEsIDE5MywgODEsIDM0LCAKKyAgICAyMDAsIDIzNywgMzQsIDIzNiwgMTgzLCAyMDgsIDc2LCAzNCwgMjQ2LCA3MCwgMzQsIDIxMCwgMTY3LCAzNCwgMjQ2LCA3OSwgCisgICAgMzQsIDIxNSwgMjUsIDI0NiwgNzksIDM0LCAyMTQsIDc5LCA4MSwgMzQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgMzQsIDE3LCAKKyAgICAxMDIsIDM0LCAxNywgMTA1LCAzNCwgMTcsIDE0NywgMzQsIDE3LCAxNDksIDM0LCAxNywgMTY0LCAzNCwgMTcsIDE4NywgMzQsIAorICAgIDE3LCAyMTAsIDEzNSwgMzQsIDE3LCAxOTIsIDM0LCAxNywgMjE5LCAxMTMsIDM0LCA0MSwgMjA2LCAxNjYsIDM0LCA0MSwgCisgICAgMjA0LCAxNTksIDM0LCA0MSwgMjA2LCA2NywgMzQsIDQxLCAyMzYsIDIzNSwgMzQsIDQxLCAyMzcsIDEwNCwgMzQsIDQxLCAKKyAgICAyMDksIDkyLCAzNCwgNDEsIDIxMCwgMTI5LCAzNCwgNDEsIDIzOCwgMjIyLCAzNCwgNDEsIDIxOSwgMTA4LCAzNCwgNDEsIAorICAgIDIzMywgODIsIDM0LCA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDM0LCA1LCAyMTEsIDE5OCwgMjIwLCAyMzEsIDM0LCA1LCAKKyAgICAyMjAsIDIyNywgMzQsIDUsIDIyMCwgMjI4LCAzNCwgNSwgMjIwLCAyMjksIDM0LCA1LCAyMTEsIDE5OCwgMjQ3LCAyNDAsIAorICAgIDM0LCA1LCAyNDcsIDIzNywgMzQsIDUsIDI0NywgMjM4LCAzNCwgNSwgMjQ3LCAyMzksIDM0LCA1LCAyMTEsIDE5OCwgMjM2LCAKKyAgICAxNjcsIDM0LCA1LCAyMzYsIDE2MywgMzQsIDUsIDIzNiwgMTY0LCAzNCwgNSwgMjM2LCAxNjUsIDM0LCA1LCAyMTEsIDE5OCwgCisgICAgMjE0LCAxODUsIDM0LCA1LCAyMTQsIDE4MSwgMzQsIDUsIDIxNCwgMTgyLCAzNCwgNSwgMjE0LCAxODMsIDM0LCAyMDUsIAorICAgIDE3NSwgMTM0LCAxOTksIDI0OCwgMzQsIDIwNSwgMTc1LCAxMzQsIDI0MSwgMTIxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjEzLCAKKyAgICAzMiwgMzQsIDIwNSwgMTc1LCAxMzQsIDIwOSwgMjUwLCAyMTMsIDMyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCA1MCwgMzQsIAorICAgIDIwNSwgMTc1LCAxMzQsIDIyNiwgMjQyLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQ2LCAyMTgsIDM0LCAyMDUsIDE3NSwgMTM0LCAKKyAgICAyMzQsIDcxLCAzNCwgMjA1LCAxNzUsIDEzNCwgMjQxLCAxMjAsIDM0LCAyMDUsIDE3NSwgMTM0LCAyMjUsIDI0MywgOTEsIDEsIAorICAgIDYyLCA5MSwgMSwgNzIsIDkxLCAxLCA3MCwgOTEsIDEsIDc0LCA5MSwgMSwgNjYsIDkxLCAxLCAyMDMsIDE2OCwgOTEsIDEsIAorICAgIDIzNiwgODksIDkxLCAxLCAxNjEsIDkxLCAxLCAyMzYsIDE1LCA5MSwgMSwgMjM1LCAxNjEsIDkxLCAxLCAyMzUsIDExNiwgCisgICAgOTEsIDEsIDIzNSwgNTAsIDkxLCAxLCAyMzUsIDEyLCA5MSwgMSwgMTQ0LCA5MSwgMSwgMjM0LCAxMzksIDkxLCAxLCAyMzQsIAorICAgIDc1LCA5MSwgMSwgMjMzLCAyMDcsIDkxLCAxLCAyMzMsIDk3LCA5MSwgMSwgMjMzLCA2OSwgOTEsIDEsIDE5NCwgOTEsIDEsIAorICAgIDIyNSwgNDAsIDkxLCAxLCAyMjQsIDIxMCwgOTEsIDEsIDIyNCwgMTEwLCA5MSwgMSwgMjI0LCA0MiwgOTEsIDEsIDIyNCwgCisgICAgMTEsIDkxLCAxLCAxNzgsIDkxLCAxLCAyMjIsIDc2LCA5MSwgMSwgMjIxLCAyMTEsIDkxLCAxLCAyMjEsIDEzNiwgOTEsIDEsIAorICAgIDIyMSwgNDEsIDkxLCAxLCAxODgsIDkxLCAxLCAyMzMsIDIzMSwgOTEsIDEsIDIyMCwgMTQ0LCA5MSwgMSwgMjIwLCAzNCwgCisgICAgOTEsIDEsIDIxOSwgMTUwLCA5MSwgMSwgMjE4LCAyNDEsIDkxLCAxLCAyMTgsIDEzMywgOTEsIDEsIDIxOCwgNzEsIDkxLCAxLCAKKyAgICAyMTQsIDk2LCA5MSwgMSwgMjE0LCA4MiwgOTEsIDEsIDIxNCwgNzUsIDkxLCAxLCAyMTQsIDY2LCA5MSwgMSwgMjE0LCA1NSwgCisgICAgOTEsIDEsIDIxNCwgNTMsIDkxLCAxLCAyMTIsIDY0LCA5MSwgMSwgMjEyLCAxMjIsIDkxLCAxLCAyMTEsIDIwMiwgOTEsIDEsIAorICAgIDIwOSwgMTgyLCA5MSwgMSwgMjA5LCAyOSwgOTEsIDEsIDIwOCwgMjQsIDkxLCAxLCAyMDcsIDE5MSwgOTEsIDEsIDI0MiwgCisgICAgNTgsIDkxLCAxLCAyMDcsIDM2LCA5MSwgMSwgMjQxLCAxNzUsIDkxLCAxLCAyMDYsIDIwMSwgOTEsIDEsIDI0MSwgNzYsIDkxLCAKKyAgICAxLCAyMDYsIDE1LCA5MSwgMSwgMjQwLCAyMTEsIDkxLCAxLCAyMzksIDEzNywgOTEsIDEsIDIzOSwgMTA3LCA5MSwgMSwgCisgICAgMjQwLCAyMjIsIDkxLCAxLCAyMDUsIDIwMywgOTEsIDEsIDIwNSwgMjAyLCA5MSwgMSwgMjA1LCAxOTEsIDkxLCAxLCAyMDUsIAorICAgIDE5MCwgOTEsIDEsIDIwNSwgMTg5LCA5MSwgMSwgMjA1LCAxODgsIDkxLCAxLCAyMDUsIDMyLCA5MSwgMSwgMjA1LCAyNiwgCisgICAgOTEsIDEsIDIwNSwgMTEsIDkxLCAxLCAyMDUsIDksIDkxLCAxLCAyMDUsIDUsIDkxLCAxLCAyMDUsIDQsIDkxLCAxLCAyMDEsIAorICAgIDExNCwgOTEsIDEsIDIwMSwgNjQsIDkxLCAxLCAyMDEsIDMxLCA5MSwgMSwgMjAxLCAwLCA5MSwgMSwgMjAwLCAyMTYsIDkxLCAKKyAgICAxLCAyMDAsIDIwMywgOTEsIDEsIDE4MywgOTEsIDEsIDIwMCwgNTEsIDkxLCAxLCAyMDAsIDksIDkxLCAxLCAxOTksIDI0NSwgCisgICAgOTEsIDEsIDE5OSwgMjExLCA5MSwgMSwgMTk5LCAxNzUsIDkxLCAxLCAyMjAsIDIzOCwgOTEsIDQsIDEsIDIwMCwgNTEsIDkxLCAKKyAgICA0LCAxLCAyMDAsIDksIDkxLCA0LCAxLCAxOTksIDI0NSwgOTEsIDQsIDEsIDE5OSwgMjExLCA5MSwgNCwgMSwgMTk5LCAxNzUsIAorICAgIDkxLCA0LCAxLCAyMjAsIDIzOCwgMjAsIDIxLCAyMzMsIDMzLCAyMCwgMjEsIDcyLCAyMCwgMjEsIDI1MiwgMTAyLCAyMCwgCisgICAgMjEsIDcwLCAyMCwgMjEsIDIyOCwgMTUxLCAyMCwgMjEsIDc0LCAyMCwgMjEsIDIxNywgNjMsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNywgNjMsIDIwLCAyMSwgODksIDIzOCwgMjU1LCAyMCwgMjEsIDg5LCA3MCwgMjAsIDIxLCA2MiwgMjAsIDIxLCAyNTIsIAorICAgIDEzOCwgMjAsIDIxLCAyMDEsIDY0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMSwgNjQsIDIwLCAyMSwgMjAxLCAzMSwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMDEsIDMxLCAyMCwgMjEsIDIwMSwgMjAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAyMCwgMjAsIDIxLCAyMDEsIAorICAgIDAsIDIwLCAyMSwgMjAxLCA0NiwgMjAxLCAwLCAyMCwgMjEsIDIwMCwgMjQ0LCAyMCwgMjEsIDIwMSwgNDYsIDIwMCwgMjQ0LCAKKyAgICAyMCwgMjEsIDIyMCwgMTE5LCAyMDAsIDI0NCwgMjAsIDIxLCAyMDEsIDExNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExNCwgCisgICAgMjAsIDIxLCAyMDEsIDExMywgMjAsIDIxLCAyMDEsIDQ2LCAyMDEsIDExMywgMjAsIDIxLCAyMjAsIDExOSwgMjAxLCAxMTMsIAorICAgIDIwLCAyMSwgMjUxLCAxNzYsIDIwLCAyMSwgMjAwLCAxMjIsIDIwMSwgMTQ3LCAyMCwgMjEsIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMCwgMjEsIDQ3LCAxNjksIDIwLCAyMSwgNDcsIDIzNSwgNzMsIDIwLCAyMSwgNDcsIDI0OCwgOTMsIDE2NywgMjEzLCAyNiwgCisgICAgMjAsIDIxLCA0NywgMjA1LCAxNTgsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTEsIDE2NywgMjEzLCAyNiwgMjAsIDIxLCAKKyAgICA0NywgMjEzLCAyNiwgMjAsIDIxLCA0NywgNTMsIDE2OSwgMjAsIDIxLCA0NywgNTMsIDIwOSwgMjUwLCA4MywgMjA4LCAzNCwgCisgICAgMjAsIDIxLCA0NywgMTAxLCAyNDAsIDE4MiwgMjAsIDIxLCA0NywgMjA5LCAyNTAsIDIzMywgMTc3LCA5NywgMjAsIDIxLCAKKyAgICA0NywgMjE1LCAxMTMsIDIwLCAyMSwgNDcsIDEyNywgMjA3LCAxNywgMjAsIDIxLCAyMzgsIDE3OSwgMjAsIDIxLCAyMjgsIAorICAgIDExNywgMjAsIDIxLCAyMTcsIDc4LCAyMCwgMjEsIDI1MSwgODUsIDIwLCAyMSwgMjE2LCA3MywgMjAsIDIxLCAyMTYsIDIwOCwgCisgICAgMjAsIDIxLCAyMTUsIDIwNCwgMjAsIDIxLCAyMTUsIDE2NiwgMjAsIDIxLCAyMTUsIDEwNiwgMjAsIDIxLCAyMTUsIDgxLCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMTUsIDgxLCAyMCwgMjEsIDg5LCAyMzQsIDEyMCwgMjAsIDIxLCA4OSwgMjM0LCA3NSwgMjAsIAorICAgIDIxLCAxNzIsIDIwLCAyMSwgMjE2LCAyMTAsIDIwLCAyMSwgMjE0LCAxODMsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODMsIAorICAgIDIwLCAyMSwgMjE0LCAxODEsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODEsIDIwLCAyMSwgMjE0LCAxODAsIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjE0LCAxODAsIDIwLCAyMSwgMjE0LCAxNzgsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzgsIDIwLCAyMSwgCisgICAgMjE0LCAxNzcsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxNzcsIDIwLCAyMSwgMjE0LCAxODUsIDIwLCAyMSwgMjAxLCA0NiwgCisgICAgMjE0LCAxODUsIDIwLCAyMSwgMjE0LCAxODQsIDIwLCAyMSwgMjAxLCA0NiwgMjE0LCAxODQsIDIwLCAyMSwgMjAwLCAxMjIsIAorICAgIDIxNCwgMTg0LCAyMCwgMjEsIDIxNiwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIxNiwgMjI2LCAyMCwgMjEsIDg5LCAyMzQsIAorICAgIDI0NywgMjAsIDIxLCAyMDYsIDIwMSwgMjAsIDIxLCAyMDcsIDMwLCAyMCwgMjEsIDIwNiwgMTUsIDIwLCAyMSwgMjA1LCAKKyAgICAyNTUsIDIwLCAyMSwgMTM4LCAyMCwgMjEsIDIwNSwgMTYxLCAyMCwgMjEsIDIwMCwgMTIyLCAyMDUsIDE2MSwgMjAsIDIxLCAKKyAgICA4OSwgMjQxLCAxNjEsIDIwLCAyMSwgODksIDI0MSwgNzYsIDIwLCAyMSwgMjA3LCAzNiwgMjAsIDIxLCAyMDcsIDMyLCAyMCwgCisgICAgMjEsIDIwNCwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTY4LCAyMCwgMjEsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwNCwgMTQ3LCAyMCwgMjEsIDIwNCwgMTQ2LCAyMCwgMjEsIDIwMSwgNDYsIDIwNCwgMTQ2LCAyMCwgMjEsIDEwNSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAxMDUsIDIwLCAyMSwgMjA0LCAxMzcsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxMzcsIDIwLCAKKyAgICAyMSwgMjA0LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA0LCAxNzAsIDIwLCAyMSwgMjA0LCAxNjksIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA0LCAxNjksIDIwLCAyMSwgMjIwLCAxMTksIDIwNCwgMTY5LCAyMCwgMjEsIDIwNywgODMsIDIwLCAyMSwgMjA0LCAKKyAgICAyNDgsIDIwLCAyMSwgMjA0LCAyMzIsIDIwLCAyMSwgMjA0LCAyMzAsIDIwLCAyMSwgMjA0LCAyNTMsIDIwLCAyMSwgMjI3LCAKKyAgICA4LCAyMCwgMjEsIDIyNywgMTAwLCAyMCwgMjEsIDIyNiwgMTYzLCAyMCwgMjEsIDIyNiwgMTUwLCAyMCwgMjEsIDIyNiwgODgsIAorICAgIDIwLCAyMSwgMjI2LCA2OCwgMjAsIDIxLCAyMDAsIDEyMiwgMjI2LCA2OCwgMjAsIDIxLCAxNjEsIDIwLCAyMSwgMjI3LCAKKyAgICAxMDUsIDIwLCAyMSwgMjI1LCAyMjQsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjQsIDIwLCAyMSwgMjI1LCAyMjIsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjI1LCAyMjIsIDIwLCAyMSwgMjI1LCAyMjEsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjEsIDIwLCAKKyAgICAyMSwgMjI1LCAyMTksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMTksIDIwLCAyMSwgMjI1LCAyMTgsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjI1LCAyMTgsIDIwLCAyMSwgMjI1LCAyMjksIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjksIDIwLCAyMSwgMjI1LCAKKyAgICAyMjgsIDIwLCAyMSwgMjAxLCA0NiwgMjI1LCAyMjgsIDIwLCAyMSwgMjIwLCAxMTksIDIyNSwgMjI4LCAyMCwgMjEsIDIyNywgCisgICAgMTE4LCAyMCwgMjEsIDIyNSwgMjMwLCAyMCwgMjEsIDIwOCwgMjUzLCAyMjYsIDI1NCwgMjAsIDIxLCAyMDgsIDI1MywgMjI2LCAKKyAgICAxNTEsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNiwgODIsIDIwLCAyMSwgMjA4LCAyNTMsIDIyNywgODQsIDIwLCAyMSwgMjQ3LCAKKyAgICA3NiwgMjAsIDIxLCAyNDcsIDE4OCwgMjAsIDIxLCAyNDYsIDE3MywgMjAsIDIxLCAyNDYsIDE2MywgMjAsIDIxLCAyNDYsIAorICAgIDkxLCAyMCwgMjEsIDI0MywgMzAsIDIwLCAyMSwgMjAwLCAxMjIsIDI0MywgMzAsIDIwLCAyMSwgMjQ3LCAxOTAsIDIwLCAyMSwgCisgICAgMjQ3LCAxODksIDIwLCAyMSwgMjQyLCAxNzQsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzQsIDIwLCAyMSwgMjQyLCAxNzIsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzIsIDIwLCAyMSwgMjQyLCAxNzEsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzEsIAorICAgIDIwLCAyMSwgMjQyLCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzAsIDIwLCAyMSwgMjQyLCAxNjksIDIwLCAyMSwgCisgICAgMjAxLCA0NiwgMjQyLCAxNjksIDIwLCAyMSwgMjQyLCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzYsIDIwLCAyMSwgCisgICAgMjQyLCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjQyLCAxNzUsIDIwLCAyMSwgMjIwLCAxMTksIDI0MiwgMTc1LCAyMCwgMjEsIAorICAgIDI0NywgMjIzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMDYsIDEyNCwgMjAsIDIxLCAyMjIsIDc2LCAyMCwgMjEsIDIyMiwgMjMyLCAKKyAgICAyMCwgMjEsIDIyMSwgMjExLCAyMCwgMjEsIDIyMSwgMTgxLCAyMCwgMjEsIDIyMSwgMTM2LCAyMCwgMjEsIDIyMSwgODcsIAorICAgIDIwLCAyMSwgMjAwLCAxMjIsIDIyMSwgODcsIDIwLCAyMSwgMTc4LCAyMCwgMjEsIDIyMiwgMjMzLCAyMCwgMjEsIDIyMCwgCisgICAgMjI5LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI5LCAyMCwgMjEsIDIyMCwgMjI3LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgCisgICAgMjI3LCAyMCwgMjEsIDIyMCwgMjI2LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI2LCAyMCwgMjEsIDIyMCwgMjI1LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIyMCwgMjI1LCAyMCwgMjEsIDIyMCwgMjI0LCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjI0LCAyMCwgCisgICAgMjEsIDIyMCwgMjMxLCAyMCwgMjEsIDIwMSwgNDYsIDIyMCwgMjMxLCAyMCwgMjEsIDIyMCwgMjMwLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIyMCwgMjMwLCAyMCwgMjEsIDIyMCwgMTE5LCAyMjAsIDIzMCwgMjAsIDIxLCAyMjMsIDI0MywgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjMsIDI0MywgMjAsIDIxLCAyMjEsIDIxNSwgMjAsIDIxLCAyNTAsIDE1MywgMjIzLCAyNDMsIDIwLCAyMSwgMjExLCAKKyAgICAyMzIsIDIyMywgMjQzLCAyMCwgMjEsIDIyMCwgMzQsIDIwLCAyMSwgMjIwLCAxNTYsIDIwLCAyMSwgMjE5LCAxNTAsIDIwLCAKKyAgICAyMSwgMjE5LCAxMjUsIDIwLCAyMSwgMjE4LCAyNDEsIDIwLCAyMSwgMjE4LCAyMjksIDIwLCAyMSwgMjAwLCAxMjIsIDIxOCwgCisgICAgMjI5LCAyMCwgMjEsIDE4OCwgMjAsIDIxLCAyMjAsIDE1NywgMjAsIDIxLCAyMTgsIDY3LCAyMCwgMjEsIDIwMSwgNDYsIAorICAgIDIxOCwgNjcsIDIwLCAyMSwgMjE4LCA2OSwgMjAsIDIxLCAyMDEsIDQ2LCAyMTgsIDY5LCAyMCwgMjEsIDIxOCwgNjgsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDExOSwgMjE4LCA2OCwgMjAsIDIxLCAyMjAsIDIxNCwgMjAsIAorICAgIDIxLCA4OSwgMjE5LCAyNTUsIDIwLCAyMSwgMjE5LCAxNTUsIDIwLCAyMSwgMjI1LCA0MCwgMjAsIDIxLCAyMjUsIDE3NCwgCisgICAgMjAsIDIxLCAyMjQsIDIxMCwgMjAsIDIxLCAyMjQsIDE5MiwgMjAsIDIxLCAyMjQsIDExMCwgMjAsIDIxLCAyMjQsIDc4LCAKKyAgICAyMCwgMjEsIDIwMCwgMTIyLCAyMjQsIDc4LCAyMCwgMjEsIDE5NCwgMjAsIDIxLCAyMjUsIDE3NSwgMjAsIDIxLCAyMjQsIDgsIAorICAgIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA4LCAyMCwgMjEsIDIyNCwgNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDcsIDIwLCAyMSwgCisgICAgMjI0LCA2LCAyMCwgMjEsIDIwMSwgNDYsIDIyNCwgNiwgMjAsIDIxLCAyMjQsIDUsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCA1LCAKKyAgICAyMCwgMjEsIDIyNCwgNCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDQsIDIwLCAyMSwgMjI0LCAxMCwgMjAsIDIxLCAyMDEsIAorICAgIDQ2LCAyMjQsIDEwLCAyMCwgMjEsIDIyNCwgOSwgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDksIDIwLCAyMSwgMTU2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE1NiwgMjAsIDIxLCAxNzksIDE1NiwgMjAsIDIxLCAyMTEsIDIwMiwgMjAsIDIxLCAyMTIsIDU5LCAKKyAgICAyMCwgMjEsIDIwOSwgMTgyLCAyMCwgMjEsIDIwOSwgMTYxLCAyMCwgMjEsIDIwOSwgMjksIDIwLCAyMSwgMjA5LCAxMCwgMjAsIAorICAgIDIxLCAyMDAsIDEyMiwgMjA5LCAxMCwgMjAsIDIxLCAyMTIsIDY0LCAyMCwgMjEsIDIxMiwgNjEsIDIwLCAyMSwgMjA3LCAKKyAgICAxODIsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODIsIDIwLCAyMSwgMjA3LCAxNzYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAKKyAgICAxNzYsIDIwLCAyMSwgMjA3LCAxNzUsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzUsIDIwLCAyMSwgMjA3LCAxNzEsIDIwLCAKKyAgICAyMSwgMjAxLCA0NiwgMjA3LCAxNzEsIDIwLCAyMSwgMjA3LCAxNzAsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxNzAsIDIwLCAKKyAgICAyMSwgMjA3LCAxODYsIDIwLCAyMSwgMjAxLCA0NiwgMjA3LCAxODYsIDIwLCAyMSwgMjA3LCAxODUsIDIwLCAyMSwgMjAxLCAKKyAgICA0NiwgMjA3LCAxODUsIDIwLCAyMSwgMjIwLCAxMTksIDIwNywgMTg1LCAyMCwgMjEsIDIxMiwgMTIyLCAyMCwgMjEsIDI1MCwgCisgICAgMTUzLCAyMTIsIDEyMiwgMjAsIDIxLCAyMDcsIDE4NywgMjAsIDIxLCAyNDgsIDE0MSwgMjEyLCAxMjIsIDIwLCAyMSwgMjIxLCAKKyAgICA4MCwgMjA5LCA4OCwgMjAsIDIxLCAyMjAsIDExOSwgMjA5LCA3OSwgMjAsIDIxLCAyMjAsIDExOSwgMjEyLCAxMjAsIDIwLCAKKyAgICAyMSwgMjIwLCAxMTksIDIwOCwgMTk1LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDgsIDI3LCAyMCwgMjEsIDIyMCwgMTE5LCAyMDksIAorICAgIDc4LCAyMCwgMjEsIDIyMCwgMTE5LCAyMTEsIDIwNSwgMjAsIDIxLCAyMTAsIDY1LCAyMCwgMjEsIDIxMCwgMzMsIDIwLCAyMSwgCisgICAgMjEwLCAyOCwgMjAsIDIxLCAyMTAsIDgsIDIwLCAyMSwgMjEwLCAyLCAyMCwgMjEsIDIxMCwgMTE0LCAyMCwgMjEsIDIxMCwgCisgICAgMTA5LCAyMCwgMjEsIDIwOSwgMTk3LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk3LCAyMCwgMjEsIDIwOSwgMTk2LCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDIwOSwgMTk2LCAyMCwgMjEsIDIwOSwgMTk1LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk1LCAyMCwgCisgICAgMjEsIDIwOSwgMTk0LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk0LCAyMCwgMjEsIDIwOSwgMTkzLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDIwOSwgMTkzLCAyMCwgMjEsIDIwOSwgMjAwLCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMjAwLCAyMCwgMjEsIDIwOSwgCisgICAgMTk5LCAyMCwgMjEsIDIwMSwgNDYsIDIwOSwgMTk5LCAyMCwgMjEsIDIxMCwgMTE2LCAyMCwgMjEsIDIwMCwgNTEsIDIwLCAKKyAgICAyMSwgMjAwLCAxMDcsIDIwLCAyMSwgMjAwLCA5LCAyMCwgMjEsIDIwMCwgMCwgMjAsIDIxLCAxOTksIDI0NSwgMjAsIDIxLCAKKyAgICAxOTksIDIzMCwgMjAsIDIxLCAyMDAsIDEyMiwgMTk5LCAyMzAsIDIwLCAyMSwgMTgzLCAyMCwgMjEsIDIwMCwgMTA5LCAyMCwgCisgICAgMjEsIDE5OSwgMTcyLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcyLCAyMCwgMjEsIDE5OSwgMTcxLCAyMCwgMjEsIDIwMSwgCisgICAgNDYsIDE5OSwgMTcxLCAyMCwgMjEsIDE5OSwgMTcwLCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTcwLCAyMCwgMjEsIDE5OSwgCisgICAgMTY5LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTY5LCAyMCwgMjEsIDE5OSwgMTY4LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgCisgICAgMTY4LCAyMCwgMjEsIDE5OSwgMTc0LCAyMCwgMjEsIDIwMSwgNDYsIDE5OSwgMTc0LCAyMCwgMjEsIDE5OSwgMTczLCAyMCwgCisgICAgMjEsIDIwMSwgNDYsIDE5OSwgMTczLCAyMCwgMjEsIDIyMCwgMTE5LCAxOTksIDE3MywgMjAsIDIxLCAyMDAsIDEyMywgMjAsIAorICAgIDIxLCAyNDgsIDE4NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjAxLCA0NiwgMjAwLCAxMjMsIDIwLCAyMSwgMjExLCAyMzIsIDIwMCwgCisgICAgOSwgMjAsIDIxLCAyMTMsIDE5MCwgMjAsIDIxLCAyMTQsIDMyLCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMjUsIDQwLCAKKyAgICAyMCwgMjEsIDIxMywgMjQ3LCAyMCwgMjEsIDIxMywgODgsIDIwLCAyMSwgMjEzLCAzMywgMjAsIDIxLCAyMTMsIDEsIDIwLCAKKyAgICAyMSwgMjEyLCAyMzgsIDIwLCAyMSwgMjAxLCA0NiwgMjI0LCAxMTAsIDIwLCAyMSwgMjEzLCAyNTIsIDIwLCAyMSwgMjEzLCAKKyAgICAyNDgsIDIwLCAyMSwgMjAxLCA0NiwgMTk0LCAyMCwgMjEsIDIxMiwgMTM5LCAyMCwgMjEsIDIwMSwgNDYsIDIxMiwgMTM5LCAKKyAgICAyMCwgMjEsIDE0NiwgMjAsIDIxLCAyMDEsIDQ2LCAxNDYsIDIwLCAyMSwgMTc5LCAxNDYsIDIwLCAyMSwgMjM3LCAxNDcsIAorICAgIDIwLCAyMSwgMjM3LCAxOTIsIDIwLCAyMSwgMjM3LCAxMTIsIDIwLCAyMSwgMjM3LCA5OCwgMjAsIDIxLCAyMzcsIDEzLCAyMCwgCisgICAgMjEsIDIzNywgMiwgMjAsIDIxLCAyMzcsIDE5NSwgMjAsIDIxLCAyMzcsIDE5NCwgMjAsIDIxLCAyMzYsIDE2NiwgMjAsIDIxLCAKKyAgICAyMDEsIDQ2LCAyMzYsIDE2NiwgMjAsIDIxLCAyMzgsIDUsIDIwLCAyMSwgMjA2LCAxMDYsIDIwLCAyMSwgMjIwLCAyMTIsIAorICAgIDIwNiwgMTA2LCAyMCwgMjEsIDIwNiwgODQsIDIwLCAyMSwgMjIwLCAyMTIsIDIwNiwgODQsIDIwLCAyMSwgMjA2LCA3OCwgCisgICAgMjAsIDIxLCAyMjAsIDIxMiwgMjA2LCA3OCwgMjAsIDIxLCAyMDYsIDYxLCAyMCwgMjEsIDIwNiwgNTYsIDIwLCAyMSwgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjEsIDIwLCAyMSwgMjA2LCAyNSwgMjAsIDIxLCAyMDEsIDQ2LCAyMDYsIDI1LCAyMCwgMjEsIAorICAgIDIwNiwgMTI0LCAyMCwgMjEsIDIwNCwgMjM5LCAyMCwgMjEsIDIwNCwgMjM3LCAyMCwgMjEsIDIwNCwgMjM2LCAyMCwgMjEsIAorICAgIDIwNCwgMjQxLCAyMCwgMjEsIDIwNCwgMjQyLCAyMCwgMjEsIDIwNCwgMTMxLCAyMCwgMjEsIDIwNCwgMTMwLCAyMCwgMjEsIAorICAgIDIwNCwgMTI5LCAyMCwgMjEsIDIwNCwgMTMzLCAyMCwgMjEsIDIxOCwgODgsIDIzNCwgMTM5LCAyMCwgMjEsIDIxOCwgODgsIAorICAgIDIzNCwgNzUsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCA1NCwgMjAsIDIxLCAyMTgsIDg4LCAyMzMsIDIwNywgMjAsIDIxLCAKKyAgICAyMTgsIDg4LCAyMzMsIDE4OCwgMjAsIDIxLCAyMTgsIDg4LCAxNDQsIDIwLCAyMSwgMjE4LCA4OCwgMjM0LCAyMzMsIDIwLCAKKyAgICAyMSwgMjE4LCA4OCwgMjM0LCAyNDcsIDIwLCAyMSwgMjE4LCA4NywgMjM0LCAyNDcsIDIwLCAyMSwgMjM0LCA0MSwgMjAsIAorICAgIDIxLCAyMTQsIDE1NSwgMjAsIDIxLCAyMTQsIDEyMSwgMjAsIDIxLCAyMTQsIDExNSwgMjAsIDIxLCAyMTQsIDEwOSwgMjAsIAorICAgIDIxLCAyMTQsIDEwNCwgMjAsIDIxLCAyMTQsIDE1OSwgMjAsIDIxLCAyMTQsIDE1OCwgMjAsIDIxLCAyMTQsIDE2NywgMjAsIAorICAgIDIxLCAyMDUsIDE5OSwgMjAsIDIxLCAyMDUsIDE5NywgMjAsIDIxLCAyMDUsIDE5NiwgMjAsIDIxLCAyMDUsIDIwMCwgMjAsIAorICAgIDIxLCAyMDEsIDQ2LCAyMTMsIDE5MCwgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDg4LCAyMCwgMjEsIDIwMSwgNDYsIDIxMywgMSwgCisgICAgMjAsIDIxLCAyMDEsIDQ2LCAyMTMsIDI1MiwgMjAsIDIxLCAyMTksIDI1MSwgMjAsIDIxLCAyMTksIDIwMSwgMjAsIDIxLCAKKyAgICAyMTksIDE5NywgMjAsIDIxLCAyMTksIDE3OCwgMjAsIDIxLCAyMTksIDE3MywgMjAsIDIxLCAyMTksIDI1MywgMjAsIDIxLCAKKyAgICAyMTksIDI1MiwgMjAsIDIxLCAyMTksIDI1NSwgMjAsIDIxLCAyMTksIDE0LCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDY1LCAKKyAgICAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDMzLCAyMCwgMjEsIDIxMSwgMjMyLCAyMTAsIDgsIDIwLCAyMSwgMjExLCAyMzIsIAorICAgIDIxMCwgMTE0LCAyMCwgMjEsIDIwMCwgMjQyLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCA2MSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAxMjIsIDIwLCAyMSwgMjAwLCAyNDIsIDIwNiwgCisgICAgMTI0LCAyMCwgMjEsIDIyNCwgMjE3LCAyMCwgMjEsIDIyNCwgMjE2LCAyMCwgMjEsIDIyNCwgMjE1LCAyMCwgMjEsIDIyNCwgCisgICAgMjE0LCAyMCwgMjEsIDIyNCwgMjIzLCAyMCwgMjEsIDIyNCwgMjIyLCAyMCwgMjEsIDIyNCwgMjI0LCAyMCwgMjEsIDIwNiwgCisgICAgMTIzLCAyMDYsIDEwNiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA4NCwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA3OCwgMjAsIAorICAgIDIxLCAyMDYsIDEyMywgMjA2LCA2MSwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCA1NiwgMjAsIDIxLCAyMDYsIDEyMywgMjA2LCAKKyAgICAxMjIsIDIwLCAyMSwgMjA2LCAxMjMsIDIwNiwgMTIxLCAyMCwgMjEsIDIwNiwgMTIzLCAyMDYsIDEyNCwgMjAsIDIxLCAyNTEsIAorICAgIDE2MiwgMjUwLCAxMDMsIDIwLCAyMSwgMjQ4LCAxNDEsIDcyLCAyMCwgMjEsIDI0OCwgMTQxLCA3MCwgMjAsIDIxLCAyNDgsIAorICAgIDE0MSwgNzQsIDIwLCAyMSwgMjQ4LCAxNDEsIDYyLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDY0LCAyMCwgMjEsIDI0OCwgCisgICAgMTQxLCAyMDEsIDMxLCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDAsIDIwLCAyMSwgMjQ4LCAxNDEsIDIwMSwgMTE0LCAyMCwgCisgICAgMjEsIDI0OCwgMTQxLCAyMjAsIDM0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMTksIDE1MCwgMjAsIDIxLCAyNDgsIDE0MSwgMjE4LCAKKyAgICAyNDEsIDIwLCAyMSwgMjQ4LCAxNDEsIDE4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMjI3LCA4LCAyMCwgMjEsIDI0OCwgMTQxLCAKKyAgICAyMjYsIDE2MywgMjAsIDIxLCAyNDgsIDE0MSwgMjI2LCA4OCwgMjAsIDIxLCAyNDgsIDE0MSwgMTYxLCAyMCwgMjEsIDIxMSwgCisgICAgMjMyLCAyMzQsIDEzOSwgMjAsIDIxLCAyMTEsIDIzMiwgMjM0LCA3NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAyMDcsIDIwLCAKKyAgICAyMSwgMjExLCAyMzIsIDE0NCwgMjAsIDIxLCA4OSwgMjM1LCAxNjcsIDIwLCAyMSwgODksIDIzNSwgMTcxLCAyMCwgMjEsIAorICAgIDg5LCAyMzUsIDE4NSwgMjAsIDIxLCA4OSwgMjM1LCAxODQsIDIwLCAyMSwgODksIDIzNSwgMTczLCAyMCwgMjEsIDg5LCAKKyAgICAyMzUsIDE5OSwgMjAsIDIxLCA4OSwgMjEyLCAxNzUsIDIwLCAyMSwgODksIDIxMywgMSwgMjAsIDIxLCA4OSwgMjEzLCAxOTAsIAorICAgIDIwLCAyMSwgODksIDIxMywgMTY3LCAyMCwgMjEsIDg5LCAyMTMsIDg4LCAyMCwgMjEsIDg5LCAyMTMsIDI1MiwgMjAsIDIxLCAKKyAgICA4OSwgMjAwLCAyMTYsIDIwLCAyMSwgODksIDIwMSwgMCwgMjAsIDIxLCA4OSwgMjAxLCA2NCwgMjAsIDIxLCA4OSwgMjAxLCAKKyAgICA1NywgMjAsIDIxLCA4OSwgMjAxLCAzMSwgMjAsIDIxLCA4OSwgMjAxLCAxMTQsIDIwLCAyMSwgODksIDIzMywgNjEsIDIwLCAKKyAgICAyMSwgODksIDIzMywgNjIsIDIwLCAyMSwgODksIDIzMywgNjUsIDIwLCAyMSwgODksIDIzMywgNjQsIDIwLCAyMSwgODksIAorICAgIDIzMywgNjMsIDIwLCAyMSwgODksIDIzMywgNjgsIDIwLCAyMSwgODksIDIwNiwgMzUsIDIwLCAyMSwgODksIDIwNiwgNjEsIAorICAgIDIwLCAyMSwgODksIDIwNiwgMTA2LCAyMCwgMjEsIDg5LCAyMDYsIDEwNCwgMjAsIDIxLCA4OSwgMjA2LCA4NCwgMjAsIDIxLCAKKyAgICA4OSwgMjA2LCAxMjIsIDIwLCAyMSwgODksIDIwNCwgMjIwLCAyMCwgMjEsIDg5LCAyMDQsIDIzMCwgMjAsIDIxLCA4OSwgCisgICAgMjA0LCAyNDgsIDIwLCAyMSwgODksIDIwNCwgMjQ3LCAyMCwgMjEsIDg5LCAyMDQsIDIzMiwgMjAsIDIxLCA4OSwgMjA0LCAKKyAgICAyNTMsIDIwLCAyMSwgODksIDIxNCwgMjI0LCAyMCwgMjEsIDg5LCAyMTUsIDEwNiwgMjAsIDIxLCA4OSwgMjE2LCA3MywgMjAsIAorICAgIDIxLCA4OSwgMjE2LCA2MSwgMjAsIDIxLCA4OSwgMjE1LCAyMDQsIDIwLCAyMSwgODksIDE3MiwgMjAsIDIxLCA4OSwgMjE2LCAKKyAgICAyMjYsIDIwLCAyMSwgODksIDIzNSwgNTAsIDIwLCAyMSwgODksIDIzNSwgMTE2LCAyMCwgMjEsIDg5LCAyMzYsIDE1LCAyMCwgCisgICAgMjEsIDg5LCAyMzYsIDcsIDIwLCAyMSwgODksIDIzNSwgMTYxLCAyMCwgMjEsIDg5LCAyMzYsIDg5LCAyMCwgMjEsIDg5LCAKKyAgICAyMjYsIDE3MiwgMjAsIDIxLCA4OSwgMjI2LCAxNzgsIDIwLCAyMSwgODksIDIyNiwgMTkyLCAyMCwgMjEsIDg5LCAyMjYsIAorICAgIDE5MSwgMjAsIDIxLCA4OSwgMjI2LCAxODUsIDIwLCAyMSwgODksIDIyNiwgMjA3LCAyMCwgMjEsIDg5LCAyMjYsIDEwNCwgCisgICAgMjAsIDIxLCA4OSwgMjI2LCAxMDUsIDIwLCAyMSwgODksIDIyNiwgMTA4LCAyMCwgMjEsIDg5LCAyMjYsIDEwNywgMjAsIDIxLCAKKyAgICA4OSwgMjI2LCAxMDYsIDIwLCAyMSwgODksIDIyNiwgMTA5LCAyMCwgMjEsIDg5LCAyMjYsIDExMCwgMjAsIDIxLCA4OSwgCisgICAgMjE4LCAxMzMsIDIwLCAyMSwgODksIDIxOCwgMjQxLCAyMCwgMjEsIDg5LCAyMjAsIDM0LCAyMCwgMjEsIDg5LCAyMjAsIDI5LCAKKyAgICAyMCwgMjEsIDg5LCAyMTksIDE1MCwgMjAsIDIxLCA4OSwgMTg4LCAyMCwgMjEsIDg5LCAyMjEsIDQxLCAyMCwgMjEsIDg5LCAKKyAgICAyMjEsIDEzNiwgMjAsIDIxLCA4OSwgMjIyLCA3NiwgMjAsIDIxLCA4OSwgMjIyLCA2NCwgMjAsIDIxLCA4OSwgMjIxLCAyMTEsIAorICAgIDIwLCAyMSwgODksIDE3OCwgMjAsIDIxLCA4OSwgMTk5LCAyMTEsIDIwLCAyMSwgODksIDE5OSwgMjQ1LCAyMCwgMjEsIDg5LCAKKyAgICAyMDAsIDUxLCAyMCwgMjEsIDg5LCAyMDAsIDQ4LCAyMCwgMjEsIDg5LCAyMDAsIDksIDIwLCAyMSwgODksIDE4MywgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAxNDcsIDIwLCAyMSwgMjExLCAyMzIsIDIyNywgMTQ3LCAyMCwgMjEsIDg5LCAyMjcsIDE2NiwgMjAsIAorICAgIDIxLCA4OSwgMjI3LCAyMjcsIDIwLCAyMSwgODksIDIyNywgMjI1LCAyMCwgMjEsIDg5LCAyMjcsIDIwNywgMjAsIDIxLCAKKyAgICAyMTEsIDIzMiwgMjI3LCAyMDcsIDIwLCAyMSwgODksIDIyNywgMjQ4LCAyMCwgMjEsIDg5LCAyMjcsIDE3OSwgMjAsIDIxLCAKKyAgICA4OSwgMjI3LCAxODMsIDIwLCAyMSwgODksIDIyNywgMTkzLCAyMCwgMjEsIDg5LCAyMjcsIDE5MiwgMjAsIDIxLCA4OSwgCisgICAgMjI3LCAxOTEsIDIwLCAyMSwgODksIDIyNywgMTk0LCAyMCwgMjEsIDg5LCAyMjQsIDQyLCAyMCwgMjEsIDg5LCAyMjQsIAorICAgIDExMCwgMjAsIDIxLCA4OSwgMjI1LCA0MCwgMjAsIDIxLCA4OSwgMjI1LCAzMiwgMjAsIDIxLCA4OSwgMjI0LCAyMTAsIDIwLCAKKyAgICAyMSwgODksIDE5NCwgMjAsIDIxLCA4OSwgMjQwLCAyMTUsIDIwLCAyMSwgODksIDI0MCwgMjE2LCAyMCwgMjEsIDg5LCAyNDAsIAorICAgIDIyMSwgMjAsIDIxLCA4OSwgMjQwLCAyMjAsIDIwLCAyMSwgODksIDI0MCwgMjE3LCAyMCwgMjEsIDg5LCAyNDAsIDIyMiwgCisgICAgMjAsIDIxLCA4OSwgMjI0LCAyMTMsIDIwLCAyMSwgODksIDIyNCwgMjE1LCAyMCwgMjEsIDg5LCAyMjQsIDIxOSwgMjAsIDIxLCAKKyAgICA4OSwgMjI0LCAyMTgsIDIwLCAyMSwgODksIDIyNCwgMjE3LCAyMCwgMjEsIDg5LCAyMjQsIDIyMywgMjAsIDIxLCA4OSwgCisgICAgMjA1LCAxOTQsIDIwLCAyMSwgODksIDIwNSwgMTk2LCAyMCwgMjEsIDg5LCAyMDUsIDE5OSwgMjAsIDIxLCA4OSwgMjA1LCAKKyAgICAxOTgsIDIwLCAyMSwgODksIDIwNSwgMTk3LCAyMCwgMjEsIDg5LCAyMDUsIDIwMCwgMjAsIDIxLCA4OSwgMjA1LCAxODksIAorICAgIDIwLCAyMSwgODksIDIwNSwgMTkwLCAyMCwgMjEsIDg5LCAyMDUsIDIwMiwgMjAsIDIxLCA4OSwgMjA1LCAyMDEsIDIwLCAyMSwgCisgICAgODksIDIwNSwgMTkxLCAyMCwgMjEsIDg5LCAyMDUsIDIwMywgMjAsIDIxLCA4OSwgMTk5LCAzLCAyMCwgMjEsIDg5LCAxOTksIAorICAgIDE0LCAyMCwgMjEsIDg5LCAxOTksIDg5LCAyMCwgMjEsIDg5LCAxOTksIDg3LCAyMCwgMjEsIDg5LCAxOTksIDM2LCAyMCwgCisgICAgMjEsIDg5LCAxOTksIDExNCwgMjAsIDIxLCA4OSwgMTk5LCAxNTcsIDIwLCAyMSwgODksIDgyLCAxOTksIDE1NywgMjAsIDIxLCAKKyAgICA4OSwgMjM5LCA4MCwgMjAsIDIxLCA4OSwgMjM5LCA4MSwgMjAsIDIxLCA4OSwgMjM5LCA5MCwgMjAsIDIxLCA4OSwgMjM5LCAKKyAgICA4OSwgMjAsIDIxLCA4OSwgMjM5LCA4NCwgMjAsIDIxLCA4OSwgMjM5LCA5MywgMjAsIDIxLCA4OSwgMjA4LCAyNCwgMjAsIAorICAgIDIxLCA4OSwgMjA5LCAyOSwgMjAsIDIxLCA4OSwgMjExLCAyMDIsIDIwLCAyMSwgODksIDIxMSwgMTkwLCAyMCwgMjEsIDg5LCAKKyAgICAyMDksIDE4MiwgMjAsIDIxLCA4OSwgMjEyLCA2NCwgMjAsIDIxLCA4OSwgMjA5LCAyMjAsIDIwLCAyMSwgODksIDIxMCwgOCwgCisgICAgMjAsIDIxLCA4OSwgMjEwLCA2NSwgMjAsIDIxLCA4OSwgMjEwLCA2MywgMjAsIDIxLCA4OSwgMjEwLCAzMywgMjAsIDIxLCAKKyAgICA4OSwgMjEwLCAxMTQsIDIwLCAyMSwgODksIDIxMCwgMTE2LCAyMCwgMjEsIDg5LCAyMDUsIDUsIDIwLCAyMSwgODksIDIwNSwgCisgICAgOSwgMjAsIDIxLCA4OSwgMjA1LCAyNiwgMjAsIDIxLCA4OSwgMjA1LCAyNSwgMjAsIDIxLCA4OSwgMjA1LCAxMSwgMjAsIDIxLCAKKyAgICA4OSwgMjA1LCAzMiwgMjAsIDIxLCA4OSwgMjQ2LCAxOTIsIDIwLCAyMSwgODksIDI0NiwgMjEwLCAyMCwgMjEsIDg5LCAyNDcsIAorICAgIDgsIDIwLCAyMSwgODksIDI0NywgNCwgMjAsIDIxLCA4OSwgMjQ2LCAyMzYsIDIwLCAyMSwgODksIDI0NywgMzcsIDIwLCAyMSwgCisgICAgODksIDIwNCwgMjIzLCAyMCwgMjEsIDg5LCAyMDQsIDIyNCwgMjAsIDIxLCA4OSwgMjA0LCAyMjcsIDIwLCAyMSwgODksIAorICAgIDIwNCwgMjI2LCAyMCwgMjEsIDg5LCAyMDQsIDIyNSwgMjAsIDIxLCA4OSwgMjA0LCAyMjgsIDIwLCAyMSwgMjQ2LCAyMzcsIAorICAgIDU0LCAyMCwgMjEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMCwgMjEsIDIxNCwgMTUxLCAyMCwgMjEsIDIxOSwgMjQ5LCAyMCwgCisgICAgMjEsIDIxOSwgMTEsIDIwLCAyMSwgMjE5LCAxMCwgMjAsIDIxLCAyMTksIDksIDIwLCAyMSwgMjE5LCA4LCAyMCwgMjEsIAorICAgIDIxOSwgMTMsIDIwLCAyMSwgMjE5LCAxMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMywgMjAsIDIxLCAyMDAsIDI0MiwgCisgICAgMjA2LCAyMiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyMCwgMjAsIDIxLCAKKyAgICAyMDAsIDI0MiwgMjA2LCAxOSwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNiwgMjAsIDIxLCAyMDAsIDI0MiwgMjA2LCAyNSwgCisgICAgMjAsIDIxLCAyMDAsIDI0MiwgNDcsIDIwNiwgMTI0LCAyMCwgMjEsIDI0OCwgMTQxLCAyMDEsIDE0NywgMjE3LCAxMTIsIAorICAgIDIwOCwgMjQ1LCA4MSwgMjE3LCAxMTIsIDEsIDI0OCwgMjM0LCAyMTcsIDExMiwgMSwgMjI0LCAyOCwgMjE3LCAxMTIsIDEsIAorICAgIDIzNywgMTQ0LCAyMTcsIDExMiwgMSwgMjEyLCA0NCwgMjE3LCAxMTIsIDEsIDIxOSwgMTA2LCAyMTcsIDExMiwgMSwgMjA0LCAKKyAgICA0MywgMjE3LCAxMTIsIDEsIDI0MiwgMzEsIDIxNywgMTEyLCAxLCAyMDUsIDIyNywgMjE3LCAxMTIsIDEsIDI0NiwgODIsIAorICAgIDIxNywgMTEyLCAxLCAyNDcsIDYzLCAyMTcsIDExMiwgMSwgMjIxLCAyOCwgMjE3LCAxMTIsIDEsIDIzNSwgOTYsIDIxNywgCisgICAgMTEyLCAxLCAyMTksIDIzOSwgMjE3LCAxMTIsIDEsIDIwOCwgNjksIDIxNywgMTEyLCAxLCAyMTIsIDE2OCwgMjE3LCAxMTIsIAorICAgIDEsIDI1MSwgMTczLCAyMTcsIDExMiwgMSwgMjE3LCA2NywgMjE3LCAxMTIsIDEsIDIwMywgMjE0LCAyMTcsIDExMiwgMSwgCisgICAgMjM5LCAyNSwgMjE3LCAxMTIsIDEsIDIyOCwgNDQsIDIxNywgMTEyLCAxLCAyMzksIDI2LCAyMTcsIDExMiwgMSwgMjE3LCAKKyAgICAzMywgMjE3LCAxMTIsIDEsIDIwNCwgMjEsIDIxNywgMTEyLCAxLCAyMjgsIDE1NywgMjE3LCAxMTIsIDEsIDIzOSwgMjMsIAorICAgIDIxNywgMTEyLCAxLCAyMTYsIDUxLCAyMTcsIDExMiwgMjM3LCAxNDMsIDgxLCAyMTcsIDExMiwgMjEzLCAxMDUsIDIzNywgCisgICAgMTQzLCA4MSwgMjEyLCAxNTcsIDEsIDIzNywgMTMzLCAyMzcsIDEyNCwgMjM3LCAxNDgsIDIzOCwgNSwgMjEyLCAxNTcsIDEsIAorICAgIDIwMywgMTY4LCAyMTIsIDE1NywgMSwgMjAzLCAxOTksIDIwMywgMjE1LCA2NiwgMjEyLCAxNTcsIDEsIDE5OSwgMjE0LCAKKyAgICAyMTIsIDE1NywgMSwgMjAwLCAxMjMsIDIxMiwgMTU3LCAxLCAyMDEsIDE0NywgMjEyLCAxNTcsIDEsIDIwNiwgMjgsIDIwNiwgCisgICAgMjcsIDIwNiwgNTQsIDIxMiwgMTU3LCAxLCAyMzgsIDc0LCAyMTIsIDE1NywgMSwgMjUxLCA1MiwgNjIsIDIxMiwgMTU3LCAxLCAKKyAgICAyMTcsIDE2LCA3NCwgMjEyLCAxNTcsIDEsIDI1MSwgMjU1LCA2MiwgMjEyLCAxNTcsIDEsIDI1MSwgMjA1LCAyMTIsIDE1NywgCisgICAgMSwgMjI0LCA4NSwgNzQsIDIxMiwgMTU3LCAxLCAyMDksIDI0MywgNzQsIDIxMiwgMTU3LCAxLCA3NCwgMjEyLCAxNTcsIDEsIAorICAgIDIxNywgMTIxLCAyMTIsIDE1NywgMSwgMjE3LCA3OCwgMjEyLCAxNTcsIDEsIDIxMywgMjI3LCAyMTMsIDI0MCwgMjEzLCAKKyAgICAxNTIsIDE0NiwgMjEyLCAxNTcsIDEsIDIyNywgMjMsIDIxMiwgMTU3LCAxLCAyNDcsIDU5LCAyMTIsIDE1NywgMSwgMjI3LCAKKyAgICAyNCwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMzYsIDE1NiwgMjEyLCAxNTcsIDEsIDIzOCwgMTY1LCAyMTIsIDE1NywgMSwgCisgICAgMjM2LCAxMCwgMjM0LCAyNTMsIDIzNiwgMTU2LCAyMTIsIDE1NywgMSwgMjM2LCA0OSwgMjEyLCAxNTcsIDEsIDIwMCwgMjA4LCAKKyAgICAyMDAsIDE5OSwgMjAxLCAxNDcsIDIxMiwgMTU3LCAxLCAyMzQsIDIyNSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMzQsIAorICAgIDIyOSwgMjM0LCAyNDcsIDIxMiwgMTU3LCAxLCAyMjQsIDg3LCAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIwOSwgMjQ2LCAKKyAgICAyMzQsIDI0NywgMjEyLCAxNTcsIDEsIDIyMCwgMTE0LCAyMTgsIDUxLCAyMjAsIDExNSwgMjIwLCAyMTQsIDIxMiwgMTU3LCAKKyAgICAxLCAyMDksIDI0NCwgMjIwLCAyMTQsIDIxMiwgMTU3LCAxLCAyMzksIDE3NywgMjEyLCAxNTcsIDEsIDIyOCwgMjMsIDIyOCwgCisgICAgMjcsIDIyOCwgMTQsIDcwLCAyMTIsIDE1NywgMSwgNzIsIDIxMiwgMTU3LCAxLCAyMjcsIDIxOCwgMjI3LCAyNTEsIDIxMiwgCisgICAgMTU3LCAxLCAyMzUsIDI0OSwgMjEyLCAxNTcsIDEsIDIyNCwgODgsIDI1MSwgMjIxLCAyMTIsIDE1NywgMSwgMjA5LCAyNDgsIAorICAgIDYyLCAyMTIsIDE1NywgMSwgMjI4LCA2LCAyMzgsIDEzOCwgMjEyLCAxNTcsIDEsIDIxNiwgNywgMjE2LCAzMiwgMjE2LCAKKyAgICAyMjYsIDIxMiwgMTU3LCAxLCAyNTEsIDEzNSwgMjM4LCAxMzYsIDIxMiwgMTU3LCAxLCAyMDgsIDI1MCwgMjEyLCAxMjIsIAorICAgIDIxMiwgMTU3LCAxLCAyMDksIDE2NSwgMjI0LCA4NCwgMjEyLCAxMjIsIDIxMiwgMTU3LCAxLCAyMDksIDI0MiwgMjEyLCAKKyAgICAxMjIsIDIxMiwgMTU3LCAxLCAyNDcsIDIyMywgMjEyLCAxNTcsIDEsIDE5OSwgMTU3LCAyMTIsIDE1NywgMSwgMjA1LCAyMDgsIAorICAgIDIwNSwgMjIwLCAyMDQsIDExNSwgMjA3LCA4MywgMjEyLCAxNTcsIDEsIDIwOSwgMjQxLCAyMDcsIDgzLCAyMTIsIDE1NywgMSwgCisgICAgMjQyLCAxNTMsIDIxMiwgMTU3LCAxLCAyNDgsIDIxMywgMjQ4LCAyMTYsIDI0OCwgMTQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIAorICAgIDEsIDIwOSwgMjQ3LCAyNTAsIDEwMywgMjEyLCAxNTcsIDEsIDIzOSwgMTc2LCAyMTIsIDE1NywgMSwgMjE3LCA0NywgMjEyLCAKKyAgICAxNTcsIDEsIDIzOCwgMjM1LCAyMzgsIDI0MiwgNzIsIDIxMiwgMTU3LCAxLCAyMjIsIDE3MSwgMjIyLCAxODEsIDIyMywgCisgICAgMjQzLCAyMTIsIDE1NywgMSwgMjI0LCA4NiwgMjIzLCAyNDMsIDIxMiwgMTU3LCAxLCAyMDksIDI0NSwgMjIzLCAyNDMsIAorICAgIDIxMiwgMTU3LCAxLCAyMjUsIDU1LCAyMjUsIDE1NCwgMjI0LCA5NSwgMTU2LCAyMTIsIDE1NywgMSwgMjM5LCAxNzgsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDkwLCAyMTIsIDE1NywgMSwgMjI4LCA5MSwgMjEyLCAxNTcsIDEsIDI0MiwgNDUsIDI0MiwgNTEsIAorICAgIDI0MiwgMTUzLCAyMTIsIDE1NywgMSwgMjE3LCA5LCAyMzgsIDczLCA3NCwgMjEyLCAxNTcsIDEsIDIzOSwgMjEsIDIxMiwgCisgICAgMTU3LCAxLCAyMjgsIDQzLCAyMTIsIDE1NywgMSwgMjQyLCAxNzMsIDIxMiwgMTU3LCAxLCAyNDcsIDE3MywgMjEyLCAxNTcsIAorICAgIDEsIDI0NywgNzUsIDIxMiwgMTU3LCAxLCAyMDgsIDExNCwgMjEyLCAxNTcsIDEsIDIyNCwgODMsIDIxMiwgMTU3LCAxLCAKKyAgICAyMDksIDI0MCwgMjEyLCAxNTcsIDEsIDIzMiwgMjMwLCAyMTIsIDE1NywgMSwgMjE0LCAxNjcsIDIxMiwgMTU3LCAxLCAyMDAsIAorICAgIDE5NSwgMjEyLCAxNTcsIDIwOSwgMTM5LCAyMTQsIDIxMSwgMjEyLCAxNTcsIDIyMSwgMjEsIDIxNCwgMjExLCAyMTIsIDE1NywgCisgICAgMjQyLCAyMzUsIDIxNCwgMjExLCAyMTIsIDE1NywgMjUwLCAyMTYsIDk5LCAyMTIsIDE1NywgMjA0LCAxNzIsIDk5LCAyMTIsIAorICAgIDE1NywgMjQ4LCAyMzIsIDk5LCAyMTIsIDE1NywgMSwgMjI3LCAxMTgsIDIxMiwgMTU3LCAxLCAyMTAsIDExNiwgMjEyLCAKKyAgICAxNTcsIDEsIDIxNywgNjMsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIxNywgMTUsIDIxMiwgMTU3LCAxLCAKKyAgICAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIyOCwgMjYsIDIxMiwgMTU3LCAxLCAyMzYsIDIxMiwgMjQ3LCAxMTQsIDIzOCwgMjQxLCAKKyAgICAyMTIsIDE1NywgMSwgMjM2LCAyMTIsIDI0NywgMTE0LCAyNTEsIDI1NCwgMjEyLCAxNTcsIDEsIDIzNiwgMjEyLCAyNDcsIAorICAgIDExNCwgMjUxLCAyMDUsIDIwNywgMTIsIDEsIDYyLCAyMDcsIDEyLCAxLCA3MCwgMjA3LCAxMiwgMSwgNjYsIDIwNywgMTIsIAorICAgIDEsIDE2MSwgMjA3LCAxMiwgMSwgMjM2LCA4OSwgMjA3LCAxMiwgMSwgMjE5LCAyNTMsIDIwNywgMTIsIDEsIDIwNywgMzYsIAorICAgIDIwNywgMTIsIDEsIDI0MiwgNTgsIDIwNywgMTIsIDEsIDE4OCwgMjA3LCAxMiwgMSwgMTcyLCAyMDcsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjA3LCAxMiwgMSwgMTc4LCAyMDcsIDEyLCAxLCAxODMsIDIwNywgMTIsIDEsIDE5NCwgMjA3LCAxMiwgMSwgMjAxLCAKKyAgICAxMTQsIDIwNywgMTIsIDEsIDIxMiwgNjQsIDIwNywgMTIsIDEsIDE0NCwgMjA3LCAxMiwgMjIsIDIsIDcwLCAyMDcsIDEyLCAKKyAgICAyMiwgMiwgNjYsIDIwNywgMTIsIDIsIDIwMiwgMjA4LCAyMzQsIDE3MCwgMSwgNjIsIDIzNCwgMTcwLCAxLCA3MCwgMjM0LCAKKyAgICAxNzAsIDEsIDY2LCAyMzQsIDE3MCwgMSwgMTYxLCAyMzQsIDE3MCwgMSwgMjM2LCA4OSwgMjM0LCAxNzAsIDEsIDIxOSwgCisgICAgMjUzLCAyMzQsIDE3MCwgMSwgMjA3LCAzNiwgMjM0LCAxNzAsIDEsIDI0MiwgNTgsIDIzNCwgMTcwLCAxLCAxODgsIDIzNCwgCisgICAgMTcwLCAxLCAxNzIsIDIzNCwgMTcwLCAxLCAyNDksIDEzNiwgMjM0LCAxNzAsIDEsIDE3OCwgMjM0LCAxNzAsIDEsIDE4MywgCisgICAgMjM0LCAxNzAsIDEsIDIxMywgMjUyLCAyMzQsIDE3MCwgMSwgMTk0LCAyMzQsIDE3MCwgMSwgMjAxLCAxMTQsIDIzNCwgMTcwLCAKKyAgICAxLCAyMTIsIDY0LCAyMzQsIDE3MCwgMSwgMTQ0LCAyMzQsIDE3MCwgMjIsIDIsIDcwLCAyMzQsIDE3MCwgMjIsIDIsIDY2LCAKKyAgICAyMzQsIDE3MCwgMiwgMjE2LCAxNjUsIDIxNSwgMjIyLCAyMDksIDEzOSwgMjE0LCAyMTEsIDIxNSwgMjIyLCA1MywgMjE0LCAKKyAgICAyMTEsIDI0OCwgMjgsIDEsIDYyLCAyNDgsIDI4LCAxLCA3MCwgMjQ4LCAyOCwgMSwgNjYsIDI0OCwgMjgsIDEsIDE2MSwgCisgICAgMjQ4LCAyOCwgMSwgMjM2LCA4OSwgMjQ4LCAyOCwgMSwgMjE5LCAyNTMsIDI0OCwgMjgsIDEsIDIwNywgMzYsIDI0OCwgMjgsIAorICAgIDEsIDI0MiwgNTgsIDI0OCwgMjgsIDEsIDE4OCwgMjQ4LCAyOCwgMSwgMTcyLCAyNDgsIDI4LCAxLCAyNDksIDEzNiwgMjQ4LCAKKyAgICAyOCwgMSwgMTc4LCAyNDgsIDI4LCAxLCAxODMsIDI0OCwgMjgsIDEsIDIxMywgMjUyLCAyNDgsIDI4LCAxLCAxOTQsIDI0OCwgCisgICAgMjgsIDEsIDIwMSwgMTE0LCAyNDgsIDI4LCAxLCAyMTIsIDY0LCAyNDgsIDI4LCAxLCAxNDQsIDI0OCwgMjgsIDIyLCAyLCAKKyAgICA3MCwgMjQ4LCAyOCwgMjIsIDIsIDY2LCAyMDcsIDExLCAxLCA2MiwgMjA3LCAxMSwgMSwgNzAsIDIwNywgMTEsIDEsIDY2LCAKKyAgICAyMDcsIDExLCAxLCAxNjEsIDIwNywgMTEsIDEsIDIzNiwgODksIDIwNywgMTEsIDEsIDIxOSwgMjUzLCAyMDcsIDExLCAxLCAKKyAgICAyMDcsIDM2LCAyMDcsIDExLCAxLCAyNDIsIDU4LCAyMDcsIDExLCAxLCAxODgsIDIwNywgMTEsIDEsIDE3MiwgMjA3LCAxMSwgCisgICAgMSwgMjQ5LCAxMzYsIDIwNywgMTEsIDEsIDE3OCwgMjA3LCAxMSwgMSwgMTgzLCAyMDcsIDExLCAxLCAxOTQsIDIwNywgMTEsIAorICAgIDEsIDIwMSwgMTE0LCAyMDcsIDExLCAxLCAyMTIsIDY0LCAyMDcsIDExLCAyMiwgMiwgNzAsIDIwNywgMTEsIDIyLCAyLCA2NiwgCisgICAgODYsIDEsIDE2MSwgODYsIDEsIDIyNiwgMjA3LCA4NiwgMSwgMjI2LCA4OCwgODYsIDEsIDIyNiwgMTc4LCA4NiwgMSwgMjE5LCAKKyAgICAxNzgsIDg2LCAxLCAyNDcsIDE5MCwgODYsIDEsIDI0NywgMzcsIDg2LCAxLCAyNDYsIDkxLCA4NiwgMSwgMjQ2LCAyMTAsIAorICAgIDg2LCAxLCAyMTgsIDI2LCA4NiwgMSwgMjQyLCA1OCwgODYsIDEsIDIwNCwgMjQxLCA4NiwgMSwgMjQwLCAyMTEsIDg2LCAxLCAKKyAgICAyMDQsIDIzNiwgODYsIDEsIDIxOCwgMjQ3LCA4NiwgMSwgMjA3LCAzNiwgODYsIDEsIDIwNiwgMTIyLCA4NiwgMSwgMTM4LCAKKyAgICA4NiwgMSwgMjA2LCA2MSwgODYsIDEsIDIxOCwgMjQxLCA4NiwgMSwgMjQ5LCAxMzYsIDg2LCAxLCAyMTUsIDI0NSwgODYsIDEsIAorICAgIDIxNSwgMTA2LCA4NiwgMSwgMjE1LCAyMTcsIDg2LCAxLCAyMjEsIDEzNiwgODYsIDEsIDE5OSwgMjQ1LCA4NiwgMSwgMjEzLCAKKyAgICAxLCA4NiwgMSwgMjI0LCAxMTAsIDg2LCAxLCAyMDIsIDE5MywgODYsIDEsIDIxMCwgMTE0LCA4NiwgMSwgMjA4LCAxMzksIAorICAgIDg2LCAxLCAyMTIsIDY0LCA4NiwgMSwgMTQ0LCA4NiwgMSwgMTk0LCA4NiwgMSwgMjE0LCAxNTksIDg2LCAyMjgsIDEwNCwgCisgICAgMjIsIDIxNCwgMTQ1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE1OCwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMjEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIxNCwgMTE1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDk3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIAorICAgIDY3LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDU0LCA4NiwgMjI4LCAxMDQsIAorICAgIDIyLCAyMTIsIDEzMSwgODYsIDIyOCwgMTA0LCAyMiwgMjEyLCAxMjQsIDg2LCAyMjgsIDEwNCwgMjIsIDIyNCwgMiwgODYsIAorICAgIDIyOCwgMTA0LCAyMiwgMjIzLCAyNDYsIDg2LCAyMjgsIDEwNCwgMjIsIDIxNCwgMTM5LCA4NiwgMjI4LCAxMDQsIDIyLCAKKyAgICAyMTQsIDE1MSwgODYsIDIyOCwgMTA0LCAyMiwgMjE0LCAxMDUsIDIwNCwgMTI4LCAxMDIsIDg2LCAyMjgsIDEwNCwgMjIsIAorICAgIDIxNCwgMTA1LCAyMDQsIDEyOCwgMTA1LCA4NiwgMjI4LCAxMDQsIDIyLCAyMTQsIDE0MSwgODYsIDIyLCAyMjgsIDg4LCAKKyAgICAyNTEsIDEsIDg2LCAyMiwgMjI4LCA4OCwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgMjUyLCAxMzgsIDg2LCAyMiwgMiwgNzAsIAorICAgIDg2LCAyMiwgMiwgMjI4LCAxNTEsIDg2LCAyMiwgMiwgMjAwLCAxMjMsIDg2LCAyMiwgMiwgMTk5LCAxNjcsIDg2LCAyMiwgMiwgCisgICAgNjYsIDg2LCAyMiwgMiwgMjAzLCAxODIsIDg2LCAyMiwgMiwgMjA0LCA0NiwgODYsIDIyLCAyLCAyMTcsIDEyMSwgODYsIDIyLCAKKyAgICAyLCAxODMsIDg2LCAyMiwgMiwgMjI4LCAxNzgsIDg2LCAyMiwgMiwgNzIsIDg2LCAyMiwgMiwgMjUxLCAyMjEsIDg2LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDg2LCAyMiwgMiwgMjE3LCA2MywgODYsIDIyLCAyLCAyNTAsIDEzOSwgODYsIDIsIDIxOSwgMTIzLCAKKyAgICA4NiwgMiwgMjEzLCAxODgsIDg2LCAyLCAxOTksIDE3OCwgODYsIDIsIDIyMCwgMjQxLCA4NiwgMiwgMjA1LCA4NiwgODYsIDIsIAorICAgIDI0OSwgNzksIDg2LCAyLCAyMTIsIDI1MiwgODYsIDIsIDIwNSwgMTg0LCA4NiwgMiwgMjI3LCA3NSwgODYsIDIsIDI1MSwgCisgICAgMTc4LCA4NiwgMiwgMjEyLCAxNCwgMjEyLCA3LCA4NiwgMiwgMjAyLCAyMDUsIDg2LCAyLCAyNDYsIDg1LCA4NiwgMiwgMjQ5LCAKKyAgICA1MSwgODYsIDIsIDIyNiwgMTk5LCA4NiwgMiwgMjQ5LCA3NCwgODYsIDIsIDI0NywgMTYxLCAyMTUsIDE2NywgMjI1LCAyMzUsIAorICAgIDg2LCAyLCAyMjUsIDksIDIwNSwgMTYxLCA4NiwgMiwgMjQ4LCAyMDIsIDg2LCAyLCAyMTUsIDIxOSwgMjIxLCAzOCwgODYsIAorICAgIDIsIDIyNiwgNjYsIDg2LCAyNDIsIDE5NSwgMTYsIDIxMywgODAsIDg2LCAyLCAyNTAsIDEyMSwgODYsIDIsIDI1MCwgMTQyLCAKKyAgICA4NiwgMTcsIDE5OSwgODEsIDg2LCAxNywgMTAyLCA4NiwgMTcsIDEwNSwgODYsIDE3LCAxNDcsIDg2LCAxNywgMTQ5LCA4NiwgCisgICAgMTcsIDE2NCwgODYsIDE3LCAxODcsIDg2LCAxNywgMjEwLCAxMzUsIDg2LCAxNywgMTkyLCA4NiwgMTcsIDIxOSwgMTEzLCAKKyAgICA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIwOSwgMTMsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjIxLCA1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMTY2LCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgMjM1LCA4NiwgCisgICAgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDI0OCwgOCwgODYsIDE2LCAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQyLCA4NiwgMTYsIAorICAgIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzYsIDg2LCAxNiwgMjI1LCA5LCAyNTAsIDE0NCwgMjE1LCAzNCwgODYsIDE2LCAKKyAgICAyMjUsIDksIDI1MCwgMTQ0LCAyMTUsIDQwLCA4NiwgMTYsIDIyNSwgOSwgMjUwLCAxNDQsIDIxNSwgMzgsIDkyLCAyNDgsIAorICAgIDE2MCwgOTIsIDIzOCwgMTk1LCA5MiwgMjQ2LCA3MCwgOTIsIDIzNiwgMTgzLCAyMDgsIDc2LCA5MiwgMjQ2LCA3OSwgOTIsIAorICAgIDIzNiwgMjI5LCAyNDAsIDE4MCwgOTIsIDIwNSwgMTgzLCAyMDksIDIzLCAyMzMsIDMzLCA5MiwgMjA5LCAxODAsIDUsIDI0OCwgCisgICAgODksIDIyMiwgMTQ1LCA5MiwgMjIyLCAxNzcsIDI0NiwgNzAsIDkyLCAyMjIsIDE3NywgMjM2LCAxODMsIDIwOCwgNzYsIDkyLCAKKyAgICAyMTksIDEwNCwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDEwMiwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIAorICAgIDEwNSwgOTIsIDIzNiwgMjExLCA1OCwgMjExLCAxNzYsIDE0NywgOTIsIDIyLCAyMTAsIDE1NCwgOTIsIDE3LCAxOTksIDgxLCAKKyAgICA5MiwgMTcsIDEwMiwgOTIsIDE3LCAxMDUsIDkyLCAxNywgMTQ3LCA5MiwgMTcsIDE0OSwgOTIsIDE3LCAxNjQsIDkyLCAxNywgCisgICAgMTg3LCA5MiwgMTcsIDIxMCwgMTM1LCA5MiwgMTcsIDE5MiwgOTIsIDE3LCAyMTksIDExMywgOTIsIDEsIDYyLCA5MiwgMSwgCisgICAgNzIsIDkyLCAxLCA3MCwgOTIsIDEsIDc0LCA5MiwgMSwgNjYsIDkyLCAxLCAyMTcsIDEyMSwgOTIsIDEsIDIwNCwgMzEsIDkyLCAKKyAgICAxLCAyMzgsIDI1NSwgOTIsIDEsIDE4OCwgOTIsIDEsIDI1MSwgNzYsIDkyLCAxLCAyNDksIDEzNiwgOTIsIDEsIDE3MiwgOTIsIAorICAgIDEsIDIxNCwgMTU5LCA5MiwgMSwgMjM2LCA4OSwgOTIsIDEsIDE3OCwgOTIsIDEsIDE5NCwgOTIsIDEsIDIxMiwgNjQsIDkyLCAKKyAgICAxLCAyMTAsIDExNCwgOTIsIDEsIDIwNywgMzYsIDkyLCAxLCAyNDIsIDU4LCA5MiwgMSwgMjQ3LCAzNywgOTIsIDEsIDIyNywgCisgICAgMjQ4LCA5MiwgMSwgMTgzLCA5MiwgMSwgMjEzLCAyNTIsIDkyLCAxLCAyMDEsIDExNCwgOTIsIDEsIDIzNywgMTk1LCA5MiwgCisgICAgMSwgMTYxLCA5MiwgMSwgMjI2LCAyMDcsIDkyLCAxLCAyMDUsIDMyLCA5MiwgMSwgMTk5LCAxMTQsIDkyLCAxLCAyMzQsIAorICAgIDIzMywgOTIsIDEsIDE5OSwgNywgOTIsIDEsIDIyNCwgMjIzLCA5MiwgMSwgMTk5LCA2MywgOTIsIDEsIDI0NiwgMjM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDE2OCwgMjIsIDU0LCA5MiwgMSwgMjA1LCAxODMsIDcyLCA5MiwgMSwgMjA1LCAxODMsIDcwLCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDc0LCA5MiwgMSwgMjA1LCAxODMsIDY2LCA5MiwgMSwgMjA1LCAxODMsIDIxNywgMTIxLCA5MiwgMSwgCisgICAgMjA1LCAxODMsIDIwNCwgMzEsIDkyLCAxLCAyMDUsIDE4MywgMjUxLCA3NiwgOTIsIDEsIDIwNSwgMTgzLCAyNDksIDEzNiwgCisgICAgOTIsIDEsIDIwNSwgMTgzLCAxNzIsIDkyLCAxLCAyMDUsIDE4MywgMjE0LCAxNTksIDkyLCAxLCAyMDUsIDE4MywgMjM2LCAKKyAgICA4OSwgOTIsIDEsIDIwNSwgMTgzLCAxNzgsIDkyLCAxLCAyMDUsIDE4MywgMjA3LCAzNiwgOTIsIDEsIDIwNSwgMTgzLCAyNDIsIAorICAgIDU4LCA5MiwgMSwgMjA1LCAxODMsIDI0NywgMzcsIDkyLCAxLCAyMDUsIDE4MywgMjI3LCAyNDgsIDkyLCAxLCAyMDUsIDE4MywgCisgICAgMjA1LCAzMiwgOTIsIDEsIDIwNSwgMTgzLCAxODMsIDkyLCAxLCAyMDUsIDE4MywgMjAxLCAxMTQsIDkyLCAxLCAyMDUsIAorICAgIDE4MywgMTYxLCA5MiwgMSwgMjA1LCAxODMsIDIzNiwgODYsIDkyLCAxLCAyMDUsIDE4MywgMjM0LCAyMzMsIDkyLCAxLCAKKyAgICAyMDUsIDE4MywgMjI3LCAyMDYsIDkyLCAxLCAyMDUsIDE4MywgMjE5LCAxNDgsIDkyLCAxLCAyMDUsIDE4MywgMjM5LCA5MywgCisgICAgOTIsIDEsIDIwOSwgMTgwLCA3MiwgOTIsIDEsIDIwOSwgMTgwLCA3MCwgOTIsIDEsIDIwOSwgMTgwLCAyMjgsIDMsIDkyLCAxLCAKKyAgICAyMDksIDE4MCwgMjA0LCAzMSwgOTIsIDEsIDIwOSwgMTgwLCA2NiwgOTIsIDEsIDIwOSwgMTgwLCAyNTEsIDc2LCA5MiwgMSwgCisgICAgMjA5LCAxODAsIDE2MSwgOTIsIDEsIDIwOSwgMTgwLCAyMzYsIDg5LCA5MiwgMSwgMjA5LCAxODAsIDE0NCwgOTIsIDEsIAorICAgIDIwOSwgMTgwLCAxNzIsIDkyLCAxLCAyMDksIDE4MCwgMjEwLCAxMTQsIDkyLCAxLCAyMDksIDE4MCwgMjA3LCAzNiwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDIsIDU4LCA5MiwgMSwgMjA5LCAxODAsIDIyNywgMjQ4LCA5MiwgMSwgMjA5LCAxODAsIDIzNywgCisgICAgMTk1LCA5MiwgMSwgMjA5LCAxODAsIDIzNiwgODYsIDkyLCAxLCAyMDksIDE4MCwgMjM0LCAyMzMsIDkyLCAxLCAyMDksIAorICAgIDE4MCwgMjA1LCAzMiwgOTIsIDEsIDIwOSwgMTgwLCAxOTksIDExNCwgOTIsIDEsIDIwOSwgMTgwLCAyMTMsIDI0OCwgOTIsIAorICAgIDEsIDIwOSwgMTgwLCAyNDcsIDM3LCA5MiwgMSwgMjA5LCAxODAsIDE5OSwgNzcsIDkyLCAxLCAyMjIsIDE3NywgNzAsIDkyLCAKKyAgICAxLCAyMjIsIDE3NywgMTYxLCA5MiwgMSwgMjIyLCAxNzcsIDIxMywgMjUyLCA5MiwgMSwgMjIyLCAxNzcsIDIzNywgMTk1LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDE5OSwgNzcsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjUxLCAzNCwgMTAyLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwMiwgMjA0LCAxMDIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQyLCAxOSwgOTIsIAorICAgIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDQsIDQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIyOCwgNTAsIDIwNCwgCisgICAgNDEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjQ5LCA5MSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxMjYsIAorICAgIDI0OSwgOTEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNjIsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgNzAsIDkyLCAKKyAgICAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMTYxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjUzLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIwNCwgMjQxLCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjIwLCA5MiwgMSwgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDIxOSwgMjEsIDkyLCAxLCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA3LCAzNiwgOTIsIDEsIAorICAgIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDIsIDU4LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE3MiwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAyMTUsIDI0NSwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDgsIDE3OSwgOTIsIDEsIDI1MSwgCisgICAgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIDE5OSwgMTE0LCA5MiwgMSwgMjUxLCAKKyAgICAxMzQsIDIzNiwgNjksIDI1MSwgMTg1LCA5MiwgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCA5MiwgCisgICAgMSwgMjA1LCAxODMsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIAorICAgIDY5LCAyMzUsIDE5OSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjE5LCAyNTMsIDkyLCAxLCAyMjIsIAorICAgIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0NywgMTkwLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAyMjcsIDIxNSwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgMjM2LCA2OSwgMjA0LCAyNTMsIDkyLCAxLCAyMjIsIDE3NywgCisgICAgMjUxLCAxMzQsIDIzNiwgNjksIDI0MSwgMjA0LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMDcsIDM2LCAKKyAgICA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDEsIDEwMCwgOTIsIDEsIDIyMiwgMTc3LCAyNTEsIDEzNCwgCisgICAgMjM2LCA2OSwgMjA4LCAxNzksIDkyLCAxLCAyMjIsIDE3NywgMjUxLCAxMzQsIDIzNiwgNjksIDI0MiwgMTY3LCA5MiwgMSwgCisgICAgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAxOTksIDc3LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAKKyAgICAxOTksIDExNCwgOTIsIDEsIDI1MSwgMTM0LCAyMzYsIDY5LCAxNjcsIDY2LCA5MiwgMSwgMjUxLCAxMzQsIDIzNiwgNjksIAorICAgIDE2NywgMTgzLCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyNDgsIDIwMCwgOTIsIDEsIDI1MSwgMTM0LCAKKyAgICAyMzYsIDY5LCAyNDIsIDQ2LCA5MiwgMSwgMjIyLCAxNzcsIDI1MSwgMTM0LCAyMzYsIDY5LCAyMjQsIDIyMywgMjAsIDIxLCAKKyAgICAyMTYsIDIzMCwgMjAsIDIxLCAyNTAsIDExMiwgMjAsIDIxLCAyNTIsIDkzLCAyMCwgMjEsIDIwMSwgNjcsIDIwLCAyMSwgCisgICAgMjE1LCA0OCwgMjAsIDIxLCAyMTYsIDgyLCAyMCwgMjEsIDIxNCwgMTc2LCAyMCwgMjEsIDIwNiwgMjEwLCAyMCwgMjEsIAorICAgIDIyNywgMTUsIDIwLCAyMSwgMjI1LCAyMjYsIDIwLCAyMSwgMjIyLCAxMTksIDIwLCAyMSwgMjE4LCAxOTgsIDIwLCAyMSwgCisgICAgMjIwLCAxMDksIDIwLCAyMSwgMjI1LCA1MCwgMjAsIDIxLCAyMDgsIDI0OCwgMjAsIDIxLCAyMTEsIDIzNCwgMjAsIDIxLCAKKyAgICAyMDksIDIyOSwgMjAsIDIxLCAyMTAsIDY5LCAyMCwgMjEsIDIwOSwgMTkyLCAyMCwgMjEsIDE5OSwgMjIwLCAyMCwgMjEsIAorICAgIDIwMCwgNTcsIDIwLCAyMSwgMjEzLCAxOTcsIDIwLCAyMSwgMjE4LCA2NiwgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2NiwgCisgICAgMjAsIDIxLCAyMTgsIDY1LCAyMCwgMjEsIDIxNywgMTAwLCAyMTgsIDY1LCAyMCwgMjEsIDIxOCwgNjQsIDIwLCAyMSwgMjE3LCAKKyAgICAxMDAsIDIxOCwgNjQsIDIwLCAyMSwgMjE4LCA2MywgMjAsIDIxLCAyMTcsIDEwMCwgMjE4LCA2MywgMjAsIDIxLCAyMTIsIAorICAgIDEzNiwgMjAsIDIxLCAyMTIsIDEzNSwgMjAsIDIxLCAyMTIsIDEzNCwgMjAsIDIxLCAyMTIsIDEzMywgMjAsIDIxLCAyMTIsIAorICAgIDEzMiwgMjAsIDIxLCAyMTIsIDE0MCwgMjAsIDIxLCAyMTcsIDEwMCwgMjE2LCAyMjYsIDIwLCAyMSwgMjE3LCAxMDAsIDIwNywgCisgICAgODMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyNywgMTE4LCAyMCwgMjEsIDIxNywgMTAwLCAyNDcsIDIyMywgMjAsIDIxLCAyMTcsIAorICAgIDEwMCwgMjIzLCAyNDMsIDIwLCAyMSwgMjE3LCAxMDAsIDIyMCwgMjE0LCAyMCwgMjEsIDIxNywgMTAwLCAyMTIsIDEyMiwgCisgICAgMjAsIDIxLCAyMTcsIDEwMCwgMjEwLCAxMTYsIDIwLCAyMSwgMjM5LCAxMiwgMjAxLCAxNDcsIDIwLCAyMSwgMjAxLCA0NSwgCisgICAgMjAxLCAxNDcsIDIwLCAyMSwgNDcsIDQsIDIxMywgMjYsIDIwLCAyMSwgNDcsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjAsIDIxLCAKKyAgICAyMTQsIDMyLCAyMTIsIDEzNywgMjAsIDIxLCAyMDEsIDQ2LCAyMjQsIDc4LCAyMCwgMjEsIDIwMSwgNDYsIDIyNSwgMTc1LCAKKyAgICAyMCwgMjEsIDIwNiwgMjQsIDIwLCAyMSwgMjA2LCAyNiwgMjAsIDIxLCAyMDQsIDIzMywgMjAsIDIxLCAyMDQsIDIzNSwgMjAsIAorICAgIDIxLCAyMDQsIDI0MCwgMjAsIDIxLCAyMDUsIDE5MywgMjAsIDIxLCAyMDUsIDE5NSwgMjAsIDIxLCAyMTEsIDIzMiwgMjA5LCAKKyAgICAxOTcsIDIwLCAyMSwgMjExLCAyMzIsIDIxMCwgMiwgMjAsIDIxLCAyMTEsIDIzMiwgMjMzLCAxODgsIDIwLCAyMSwgODksIAorICAgIDIzNSwgNSwgMjAsIDIxLCA4OSwgMjQxLCAxMzQsIDIzNiwgNywgMjAsIDIxLCA4OSwgMjM2LCA4NiwgMjAsIDIxLCA4OSwgCisgICAgMjM1LCAxMCwgMjAsIDIxLCAyMTEsIDIzMiwgMjI3LCAxMjgsIDIwLCAyMSwgODksIDIyNywgMTI2LCAyMCwgMjEsIDI0OCwgCisgICAgMjU1LCAyNDEsIDEzNCwgMTU2LCAyMCwgMjEsIDI0OCwgMjU1LCAyNDEsIDEzNCwgMTQ2LCAyMCwgMjEsIDg5LCAyNDEsIAorICAgIDEyOSwgMjEyLCAxMjIsIDIyNCwgMTg2LCAyMDIsIDE3MiwgMjI0LCAyMzYsIDIyNCwgMTg2LCAxLCAxNjEsIDIyNCwgMTg2LCAKKyAgICAxLCAyMjYsIDIwNywgMjI0LCAxODYsIDEsIDIzNiwgODksIDIyNCwgMTg2LCAxLCAyMzUsIDE5OSwgMjI0LCAxODYsIDEsIAorICAgIDIxOSwgMjUzLCAyMjQsIDE4NiwgMSwgMjQ3LCAxOTAsIDIyNCwgMTg2LCAxLCAyNDcsIDM3LCAyMjQsIDE4NiwgMSwgMjI3LCAKKyAgICAyNDgsIDIyNCwgMTg2LCAxLCAyMjcsIDIxNSwgMjI0LCAxODYsIDEsIDIwMCwgNzcsIDIyNCwgMTg2LCAxLCAyMDcsIDM2LCAKKyAgICAyMjQsIDE4NiwgMSwgMjA2LCAxMjIsIDIyNCwgMTg2LCAxLCAyNDIsIDU4LCAyMjQsIDE4NiwgMSwgMjQxLCAxMDAsIDIyNCwgCisgICAgMTg2LCAxLCAxODgsIDIyNCwgMTg2LCAxLCAxNzIsIDIyNCwgMTg2LCAxLCAyMTUsIDI0NSwgMjI0LCAxODYsIDEsIDI0OSwgCisgICAgMTM2LCAyMjQsIDE4NiwgMSwgMjQ4LCAyMDAsIDIyNCwgMTg2LCAxLCAxNzgsIDIyNCwgMTg2LCAxLCAxODMsIDIyNCwgMTg2LCAKKyAgICAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDEsIDE5NCwgMjI0LCAxODYsIDEsIDIwMSwgMTE0LCAyMjQsIDE4NiwgMSwgMjEwLCAKKyAgICAxMTQsIDIyNCwgMTg2LCAxLCAyMDgsIDE3OSwgMjI0LCAxODYsIDEsIDIxMiwgNjQsIDIyNCwgMTg2LCAxLCAxNDQsIDIyNCwgCisgICAgMTg2LCAxLCAyMzUsIDEsIDIyNCwgMTg2LCAxLCAyMDUsIDEzMiwgMjI0LCAxODYsIDIyLCAyLCA2MiwgMjI0LCAxODYsIDIyLCAKKyAgICAyLCA3MCwgMjI0LCAxODYsIDIyLCAyLCA2NiwgMjI0LCAxODYsIDIyLCAyLCAyMzgsIDI1NSwgMjI0LCAxODYsIDIyLCAyLCAKKyAgICAyNTEsIDE3NiwgMjI0LCAxODYsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDE4NiwgMjIsIDIsIDI1MCwgMTM5LCAyMjQsIDE4NiwgCisgICAgMjIsIDIsIDcyLCAyMjQsIDE4NiwgMjIsIDIsIDc0LCAyMjQsIDE4NiwgMjA4LCAxMiwgMSwgMTgzLCAyMjQsIDE4NiwgMjA4LCAKKyAgICAxMiwgMSwgMjEzLCAyNTIsIDIyNCwgMTg2LCAyMDgsIDEyLCAxLCAyMDEsIDExNCwgMjI0LCAxODYsIDQsIDEsIDE2MSwgCisgICAgMjI0LCAxODYsIDQsIDEsIDIxOSwgMjUzLCAyMjQsIDE4NiwgNCwgMSwgMjUxLCAzMywgMjI0LCAxODYsIDQsIDEsIDIwNywgCisgICAgMzYsIDIyNCwgMTg2LCA0LCAxLCAxODgsIDIyNCwgMTg2LCA0LCAxLCAxNzIsIDIyNCwgMTg2LCA0LCAxLCAxNzgsIDIyNCwgCisgICAgMTg2LCA0LCAxLCAyMTMsIDI1MiwgMjI0LCAxODYsIDQsIDEsIDE5NCwgMjI0LCAxODYsIDIsIDIyMSwgMjYsIDIyNCwgMTg2LCAKKyAgICAyLCAyMjYsIDI0OSwgMjI0LCAxODYsIDIsIDIxMiwgNjIsIDIyNCwgMTg2LCAyLCAyMjQsIDc4LCAyMjQsIDE4NiwgMjM4LCAKKyAgICA0MywgODEsIDIyNCwgMTg2LCAyMTQsIDc5LCA4MSwgMjI0LCAxODYsIDE3LCAxOTksIDgxLCAyMjQsIDE4NiwgMTcsIDEwMiwgCisgICAgMjI0LCAxODYsIDE3LCAxMDUsIDIyNCwgMTg2LCAxNywgMTQ3LCAyMjQsIDE4NiwgMTcsIDE0OSwgMjI0LCAxODYsIDE3LCAKKyAgICAxNjQsIDIyNCwgMTg2LCAxNywgMTg3LCAyMjQsIDE4NiwgMTcsIDIxMCwgMTM1LCAyMjQsIDE4NiwgMTcsIDE5MiwgMjI0LCAKKyAgICAxODYsIDE3LCAyMTksIDExMywgNDYsIDIyNSwgNDEsIDEsIDE2MSwgNDYsIDIyNSwgNDEsIDEsIDIwMCwgMTgxLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMjE5LCAyNTMsIDQ2LCAyMjUsIDQxLCAxLCAyMDUsIDMyLCA0NiwgMjI1LCA0MSwgMSwgMjEyLCA2NCwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE4MywgNDYsIDIyNSwgNDEsIDEsIDIwNywgMzYsIDQ2LCAyMjUsIDQxLCAxLCAyMDYsIDEyMiwgCisgICAgNDYsIDIyNSwgNDEsIDEsIDE5NCwgNDYsIDIyNSwgNDEsIDEsIDE3MiwgNDYsIDIyNSwgNDEsIDEsIDIxNSwgMjQ1LCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTc4LCA0NiwgMjI1LCA0MSwgMSwgMjM3LCAxOTUsIDQ2LCAyMjUsIDQxLCAxLCAyMDMsIDkwLCA0NiwgCisgICAgMjI1LCA0MSwgMSwgMTQ0LCA0NiwgMjI1LCA0MSwgMSwgMjE0LCAxNTksIDQ2LCAyMjUsIDQxLCAxLCAyMjYsIDIwNywgNDYsIAorICAgIDIyNSwgNDEsIDEsIDIwNSwgMjIsIDQ2LCAyMjUsIDQxLCAxLCAxODgsIDQ2LCAyMjUsIDQxLCAxLCA2MiwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDcwLCA0NiwgMjI1LCA0MSwgMSwgMjM4LCAyNTUsIDQ2LCAyMjUsIDQxLCAxLCAyMzgsIDI0MSwgNDYsIDIyNSwgCisgICAgNDEsIDEsIDY2LCA0NiwgMjI1LCA0MSwgMSwgMjE3LCA2MywgNDYsIDIyNSwgNDEsIDEsIDc0LCA0NiwgMjI1LCA0MSwgMSwgCisgICAgMjA0LCAzMSwgNDYsIDIyNSwgNDEsIDEsIDcyLCA0NiwgMjI1LCA0MSwgMSwgMjUwLCAxMzcsIDQ2LCAyMjUsIDQxLCAxLCAKKyAgICAyNTEsIDE3NiwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTcyLCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNzEsIDQ2LCAyMjUsIAorICAgIDQxLCAxLCAyMDUsIDE3MCwgNDYsIDIyNSwgNDEsIDEsIDIwNSwgMTY5LCA0NiwgMjI1LCA0MSwgMSwgMjA1LCAxNjgsIDIyMCwgCisgICAgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjE0LCAxNTksIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE0LCAxNTksIAorICAgIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTYxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwMCwgMTgxLCAKKyAgICAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIxOSwgMjUzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDE2MSwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDAsIDE4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMTksIAorICAgIDI1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAyMDUsIDMyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIAorICAgIDIxMiwgNjQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTgzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIAorICAgIDIwNSwgMzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjEyLCA2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxODMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTIyLCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMjA3LCAzNiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyMDYsIDEyMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMSwgMTI4LCAxODgsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTcyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIxNSwgMjQ1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE3OCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTI4LCAxNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjE1LCAyNDUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIAorICAgIDEyOCwgMTc4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjIsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDEyMiwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAKKyAgICAxMjgsIDIzNywgMTk1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIwMywgOTAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIAorICAgIDEsIDEyOCwgMTk0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgCisgICAgMTIyLCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDE0NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgMTI4LCAyNDIsIDU4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAKKyAgICAxLCAxMjgsIDI0OSwgMTM2LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCAxMjIsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjgsIDIyNSwgMjMxLCAyMjAsIDgsIDQ2LCAKKyAgICAyMjQsIDM2LCAxLCAxMjgsIDIwMCwgMTQ4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCAxMjIsIDIwOCwgMjMsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDEyOCwgMjA4LCAyMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIyLCAyMDksIDIzOCwgCisgICAgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDI1MiwgMTM4LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCA2NiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDIwMywgCisgICAgMTgyLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgNzIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTEsIAorICAgIDIyMSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMjIsIDIsIDc0LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjE3LCAKKyAgICAxNDYsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMDQsIDMxLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgCisgICAgMjUwLCAxMTIsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyNTIsIDkzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgCisgICAgMiwgMjAzLCAxNzQsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIyLCAyLCAyMTYsIDIzMCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMjIsIDIsIDIxNywgMTQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAyMiwgMiwgMjA0LCAyNywgMjIwLCA4LCA0NiwgMjI0LCAKKyAgICAzNiwgMjIsIDIsIDIyOCwgMywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDIwMywgMTY4LCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxLCA0NywgMjE5LCAyNTUsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyMjAsIDIxNCwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMSwgNDcsIDIyMywgMjQzLCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxLCA0NywgMjI3LCAxMTgsIDIyMCwgOCwgCisgICAgNDYsIDIyNCwgMzYsIDEsIDQ3LCAyNDIsIDE1MywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMSwgNDcsIDI1MCwgMTAzLCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ5LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNTAsIDIyMiwgMTQ4LCAyMjAsIAorICAgIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTk5LCA4MSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDEwMiwgMjIwLCA4LCA0NiwgCisgICAgMjI0LCAzNiwgMTcsIDEwNSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE0NywgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIAorICAgIDE0OSwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE2NCwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgMTcsIDE4NywgMjIwLCA4LCAKKyAgICA0NiwgMjI0LCAzNiwgMTcsIDIxMCwgMTM1LCAyMjAsIDgsIDQ2LCAyMjQsIDM2LCAxNywgMTkyLCAyMjAsIDgsIDQ2LCAyMjQsIAorICAgIDM2LCAxNywgMjE5LCAxMTMsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDEwNywgMTcsIDEwMiwgMjIwLCA4LCA0NiwgMjI0LCAzNiwgCisgICAgMiwgMjI1LCAxNjAsIDIyMCwgOCwgNDYsIDIyNCwgMzYsIDIsIDIyNSwgMTU5LCA4NiwgMTYsIDIxNiwgOTAsIDg2LCAxNiwgCisgICAgMjIxLCA2LCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMTY3LCAyMjYsIDg0LCA4NiwgMTYsIDI0OCwgMjM2LCAyMjYsIDg0LCAKKyAgICA4NiwgMTYsIDI0OCwgOSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQzLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzcsIDIyNiwgCisgICAgODQsIDg2LCAxNiwgMjE1LCAzNSwgMjI2LCA4NCwgODYsIDE2LCAyMTUsIDQxLCAyMjYsIDg0LCA4NiwgMTYsIDIxNSwgMzksIAorICAgIDIyNiwgODQsIDg2LCAxNiwgMjQyLCA1LCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMSwgMjI2LCA4NCwgODYsIDE2LCAyNDIsIAorICAgIDAsIDIyNiwgODQsIDg2LCAxNiwgMjQyLCAzLCAyMjYsIDg0LCA4NiwgMTYsIDI0MiwgMiwgMjI2LCA4NCwgODYsIDE2LCAKKyAgICAyNDEsIDI1NSwgMjI2LCA4NCwgODYsIDE2LCAyMDQsIDE3OCwgODYsIDE2LCAyMjEsIDYsIDIxMiwgMjUwLCA4NiwgMTYsIAorICAgIDIxNSwgMTY3LCAyMTIsIDI1MCwgODYsIDE2LCAyNDgsIDIzNiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQ4LCA5LCAyMTIsIDI1MCwgCisgICAgODYsIDE2LCAyMTUsIDQzLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM3LCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM1LCAKKyAgICAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDQxLCAyMTIsIDI1MCwgODYsIDE2LCAyMTUsIDM5LCAyMTIsIDI1MCwgODYsIDE2LCAKKyAgICAyNDIsIDUsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMSwgMjEyLCAyNTAsIDg2LCAxNiwgMjQyLCAwLCAyMTIsIDI1MCwgODYsIAorICAgIDE2LCAyNDIsIDMsIDIxMiwgMjUwLCA4NiwgMTYsIDI0MiwgMiwgMjEyLCAyNTAsIDg2LCAxNiwgMjQxLCAyNTUsIDIxMiwgCisgICAgMjUwLCAyNDgsIDI5LCAxLCAxNjEsIDI0OCwgMjksIDEsIDIzNiwgODksIDI0OCwgMjksIDEsIDIxOSwgMjUzLCAyNDgsIDI5LCAKKyAgICAxLCAyMTksIDE5NiwgMjQ4LCAyOSwgMSwgMTcyLCAyNDgsIDI5LCAxLCAyNDksIDEzNiwgMjQ4LCAyOSwgMSwgMTc4LCAyNDgsIAorICAgIDI5LCAxLCAyMjEsIDQ1LCAyNDgsIDI5LCAxLCAyMDcsIDM2LCAyNDgsIDI5LCAxLCAyNDIsIDU4LCAyNDgsIDI5LCAxLCAKKyAgICAxODgsIDI0OCwgMjksIDEsIDIxOCwgMTk2LCAyNDgsIDI5LCAxLCAyNDcsIDE5MCwgMjQ4LCAyOSwgMSwgMjI3LCAyNDgsIAorICAgIDI0OCwgMjksIDEsIDIxOCwgNjAsIDI0OCwgMjksIDEsIDIxOCwgNTIsIDI0OCwgMjksIDEsIDE4MywgMjQ4LCAyOSwgMSwgCisgICAgMjEzLCAyNTIsIDI0OCwgMjksIDEsIDE5NCwgMjQ4LCAyOSwgMSwgMjAzLCA5MCwgMjQ4LCAyOSwgMSwgMjEyLCA2NCwgMjQ4LCAKKyAgICAyOSwgMSwgNjIsIDI0OCwgMjksIDEsIDE0NCwgMjQ4LCAyOSwgMjIsIDIsIDcwLCAyNDgsIDI5LCAyMiwgMiwgNjYsIDI0OCwgCisgICAgMjksIDIyLCAyLCA3MiwgMjQ4LCAyOSwgMjIsIDIsIDc0LCAyNDgsIDI5LCAyMiwgMiwgMjUxLCAyMjEsIDI0OCwgMjksIAorICAgIDIxNiwgMTc4LCAyNDgsIDI5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTkyLCA0NiwgMTA3LCAxLCAxMjIsIDE2MSwgNDYsIDEwNywgCisgICAgMSwgMTIyLCAyMjYsIDIwNywgNDYsIDEwNywgMSwgMTIyLCAyMjUsIDIxNSwgNDYsIDEwNywgMSwgMTI4LCAxNjEsIDQ2LCAKKyAgICAxMDcsIDEsIDEyOCwgMjI1LCAyMTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjI2LCAyMDcsIDQ2LCAxMDcsIDEsIDIxOSwgMjUzLCAKKyAgICA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMTkwLCA0NiwgMTA3LCAxLCAxMjIsIDI0NywgMzcsIDQ2LCAxMDcsIDEsIDEyOCwgCisgICAgMjQ3LCAxOTAsIDQ2LCAxMDcsIDEsIDEyOCwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTI4LCAyNDcsIDM3LCA0NiwgMTA3LCAxLCAKKyAgICAyMTgsIDYwLCA0NiwgMTA3LCAxLCAyMTMsIDIwMywgNDYsIDEwNywgMSwgMTIyLCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgCisgICAgMjQyLCA1OCwgNDYsIDEwNywgMSwgMTI4LCAyMTMsIDIwMSwgNDYsIDEwNywgMSwgMjEzLCAyMTIsIDQ2LCAxMDcsIDEsIAorICAgIDEyMiwgMjA3LCAzNiwgNDYsIDEwNywgMSwgMTIyLCAyMDYsIDEyMiwgNDYsIDEwNywgMSwgMTI4LCAyMDcsIDM2LCA0NiwgCisgICAgMTA3LCAxLCAxMjgsIDIwNiwgMTIyLCA0NiwgMTA3LCAxLCAxODgsIDQ2LCAxMDcsIDEsIDI0OSwgMTM2LCA0NiwgMTA3LCAxLCAKKyAgICAxMjIsIDE3MiwgNDYsIDEwNywgMSwgMTIyLCAyMTUsIDI0NSwgNDYsIDEwNywgMSwgMTIyLCAyMzcsIDE5NSwgNDYsIDEwNywgCisgICAgMSwgMTI4LCAxNzIsIDQ2LCAxMDcsIDEsIDEyOCwgMjM3LCAxOTUsIDQ2LCAxMDcsIDEsIDEyOCwgMjE1LCAyNDUsIDQ2LCAKKyAgICAxMDcsIDEsIDE3OCwgNDYsIDEwNywgMSwgMTI4LCAxODMsIDQ2LCAxMDcsIDEsIDEyMiwgMTgzLCA0NiwgMTA3LCAxLCAyMTMsIAorICAgIDI1MiwgNDYsIDEwNywgMSwgMjEyLCAxNzAsIDQ2LCAxMDcsIDEsIDE5NCwgNDYsIDEwNywgMSwgMjI0LCAzNSwgNDYsIDEwNywgCisgICAgMSwgMjAxLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjEwLCAxMTQsIDQ2LCAxMDcsIDEsIDEyMiwgMjA4LCAxNzksIDQ2LCAKKyAgICAxMDcsIDEsIDEyMiwgMjEyLCA2NCwgNDYsIDEwNywgMSwgMTIyLCAxNDQsIDQ2LCAxMDcsIDEsIDIyNCwgMTM4LCA0NiwgCisgICAgMTA3LCAxLCA2MiwgNDYsIDEwNywgMSwgMTI4LCAxNDQsIDQ2LCAxMDcsIDEsIDcwLCA0NiwgMTA3LCAxLCAyMjgsIDE1MSwgCisgICAgNDYsIDEwNywgMSwgNjYsIDQ2LCAxMDcsIDEsIDIwMywgMTgyLCA0NiwgMTA3LCAxLCAyMzgsIDI1NSwgNDYsIDEwNywgMSwgCisgICAgMjE3LCA2MywgNDYsIDEwNywgMSwgMjI1LCAxNjAsIDQ2LCAxMDcsIDEsIDIzNSwgNjksIDIxMiwgNjQsIDQ2LCAxMDcsIAorICAgIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgNDYsIDEwNywgMTExLCAyLCAxNzksIDE5NCwgNDYsIDEwNywgMTExLCAyLCAyMjUsIAorICAgIDE3NiwgMjA2LCAyNDIsIDIyNSwgMTQ5LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjI3LCA2NSwgMjI1LCAxNDksIDQ2LCAKKyAgICAxMDcsIDExMSwgMiwgNDcsIDIxOSwgMjUzLCA0NiwgMTA3LCAxMTEsIDIsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIAorICAgIDEyMiwgMjEzLCAyMDIsIDIxNywgMzQsIDEyOCwgMTcyLCA0NiwgMTA3LCAxMTEsIDIsIDE3OCwgNDYsIDEwNywgMTExLCAyLCAKKyAgICAyNDksIDEzNiwgNDYsIDEwNywgMTExLCAyLCAyMTIsIDY0LCA0NiwgMTA3LCAyLCAyMTIsIDM4LCA0NiwgMTA3LCAyMiwgMiwgCisgICAgNjIsIDQ2LCAxMDcsIDIyLCAyLCAyMjIsIDE5OSwgMjExLCAyNTEsIDQ2LCAxMDcsIDIyLCAyLCAyNTIsIDEzOCwgNDYsIAorICAgIDEwNywgMjIsIDIsIDIwNiwgMjQ4LCAyNTIsIDEzOCwgNDYsIDEwNywgMjIsIDIsIDcwLCA0NiwgMTA3LCAyMiwgMiwgMjI4LCAKKyAgICAxNTEsIDQ2LCAxMDcsIDIyLCAyLCAyMDQsIDMxLCA0NiwgMTA3LCAyMiwgMiwgMjAzLCAxODEsIDQ2LCAxMDcsIDIyLCAyLCAKKyAgICA2NiwgNDYsIDEwNywgMjIsIDIsIDIwMywgMTgyLCA0NiwgMTA3LCAyMiwgMiwgNzQsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIAorICAgIDE0NywgNTcsIDQ2LCAxMDcsIDIyLCAyLCAyMTYsIDIzMCwgNDYsIDEwNywgMjIsIDIsIDcyLCA0NiwgMTA3LCAyMiwgMiwgCisgICAgMjUxLCAyMjEsIDQ2LCAxMDcsIDIyLCAyLCAyMTcsIDYzLCA0NiwgMTA3LCAyMiwgMiwgMjUxLCAxNzYsIDQ2LCAxMDcsIDIyLCAKKyAgICAyLCAxMDcsIDI1MSwgMTc2LCA0NiwgMTA3LCAyMiwgMiwgMjE3LCAxNDcsIDU2LCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgCisgICAgMjI3LCA2NCwgNDYsIDEwNywgMiwgMjA1LCAxNzMsIDQ2LCAxMDcsIDIsIDIwNSwgMTcyLCA0NiwgMTA3LCAyLCAyMjYsIAorICAgIDE2OCwgMjA1LCAxNzEsIDQ2LCAxMDcsIDIsIDIyNiwgMTY4LCAyMDUsIDE3MCwgNDYsIDEwNywgMiwgMjI2LCAxNjgsIDIwNSwgCisgICAgMTY5LCA0NiwgMTA3LCAyLCAyMTMsIDI1MywgMjM0LCAyMzIsIDQ2LCAxMDcsIDIsIDIyMiwgMTk5LCAyMTIsIDIzLCA0NiwgCisgICAgMTA3LCAyLCAyMjYsIDE2NywgMjI3LCA0NiwgNDYsIDEwNywgMzgsIDI0MiwgMjE3LCAyNDAsIDE4MiwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxOTksIDgxLCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDEwMiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAxMDUsIAorICAgIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTQ3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE0OSwgNDYsIDEwNywgMjMzLCAKKyAgICAxNzksIDE3LCAxNjQsIDQ2LCAxMDcsIDIzMywgMTc5LCAxNywgMTg3LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDIxMCwgCisgICAgMTM1LCA0NiwgMTA3LCAyMzMsIDE3OSwgMTcsIDE5MiwgNDYsIDEwNywgMjMzLCAxNzksIDE3LCAyMTksIDExMywgNDYsIAorICAgIDEwNywgMTA3LCAxNywgMTk5LCA4MSwgNDYsIDEwNywgMTA3LCAxNywgMTAyLCA0NiwgMTA3LCAxMDcsIDE3LCAxMDUsIDQ2LCAKKyAgICAxMDcsIDEwNywgMTcsIDE0NywgNDYsIDEwNywgMTA3LCAxNywgMTQ5LCA0NiwgMTA3LCAxMDcsIDE3LCAxNjQsIDQ2LCAxMDcsIAorICAgIDEwNywgMTcsIDE4NywgNDYsIDEwNywgMTA3LCAxNywgMjEwLCAxMzUsIDQ2LCAxMDcsIDEwNywgMTcsIDE5MiwgNDYsIDEwNywgCisgICAgMTA3LCAxNywgMjE5LCAxMTMsIDQ2LCAxMDcsIDIsIDIwMSwgMzAsIDQ2LCAxMDcsIDIsIDIwMSwgMjksIDQ2LCAxMDcsIDIsIAorICAgIDIxMSwgMjM4LCA0NiwgMTA3LCAyLCAyMjYsIDIzOCwgNDYsIDEwNywgMiwgMjMzLCAxMDcsIDQ2LCAxMDcsIDIsIDI0MCwgCisgICAgMTk2LCA0NiwgMTA3LCAyLCAyMTMsIDEwNSwgMjEyLCAyMjgsIDIxMywgMjEyLCA0NiwgMTA3LCAyLCAyMjIsIDE5OSwgMjAwLCAKKyAgICA3OCwgNDYsIDEwNywgMiwgMjI3LCA5OSwgNDYsIDEwNywgMiwgMjI3LCA5OCwgNDYsIDEwNywgMiwgMjExLCAyNDYsIDQ2LCAKKyAgICAxMDcsIDIsIDIxMSwgMjQ1LCA0NiwgMTA3LCAyLCAyMzQsIDE3MiwgNDYsIDEwNywgMiwgMjQ3LCAxODcsIDM4LCAyMzksIAorICAgIDE3MiwgMjQ2LCAxNDcsIDI1MSwgMjUxLCAzOCwgMjQxLCA3MywgMzgsIDIyOCwgOTQsIDM4LCAxOTEsIDQ4LCAzOCwgMjA1LCAKKyAgICA4MywgMjQwLCAxODIsIDM4LCAyMDAsIDE5NCwgNTcsIDM4LCAyMDEsIDIyLCAyMjQsIDE3NywgNTcsIDM4LCAxNzYsIDEzNCwgCisgICAgNTcsIDM4LCA1MywgMTc2LCAxMzQsIDU3LCAzOCwgMTYyLCAyNDcsIDU3LCAyMDgsIDQ3LCA1NywgMzgsIDIwOCwgMzMsIAorICAgIDI0NywgNTcsIDIwOCwgNDcsIDU3LCAzOCwgMjE2LCAxMTcsIDU2LCAzOCwgNTMsIDIxNiwgMTE3LCA1NiwgMzgsIDIxNiwgCisgICAgMTE3LCA1NywgMzgsIDIxNiwgMTE3LCAyMTYsIDI0MiwgMTMzLCAyLCAyMDQsIDE1LCAyMTMsIDgyLCAxMzMsIDIsIDIwNCwgCisgICAgMTUsIDI0NywgMTUxLCAxMzMsIDIsIDI0NywgNzIsIDEzMywgMiwgMjA3LCAyMDUsIDEzMywgMiwgMjQ4LCAxNTcsIDEzMywgCisgICAgMSwgMjUxLCAxNTcsIDEzMywgMSwgMjUxLCAxNTgsIDIwNiwgMTkyLCAxMzMsIDEsIDIyOCwgMTQ3LCAxMzMsIDEsIDIyOCwgCisgICAgMTQ4LCAyMDYsIDE5MiwgMTMzLCAxLCAyMDQsIDE4LCAxMzMsIDEsIDIwNCwgMTksIDIwNiwgMTkyLCAxMzMsIDEsIDIxMywgCisgICAgMjUzLCAyMTMsIDEzNSwgMTMzLCAxLCAyMTMsIDI1MywgMjEzLCAxMzYsIDIwNiwgMTkyLCAxMzMsIDEsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMSwgMjI1LCAxNzYsIDIyNSwgNCwgMjA2LCAxOTIsIDEzMywgMSwgMjM4LCAyMTQsIDEzMywgMSwgCisgICAgMjUxLCAxNzQsIDEzMywgMSwgMjE3LCA5NiwgMTMzLCAxLCAyMTcsIDk3LCAyMDYsIDE5MiwgMTMzLCAxLCAxNjEsIDEzMywgCisgICAgMSwgMjI3LCAxMDgsIDIyMiwgMjAyLCAxMzMsIDEsIDIzNiwgODksIDEzMywgMSwgMjM2LCA5MCwgMjM1LCAxMDIsIDEzMywgCisgICAgMSwgMjE5LCAyNTMsIDEzMywgMSwgMjQ3LCAxOTAsIDEzMywgMSwgMjQ3LCAxOTEsIDIyNSwgMTYzLCAxMzMsIDEsIDIyNywgCisgICAgMjQ4LCAxMzMsIDEsIDIyNywgMjQ5LCAyMjcsIDIxOSwgMTMzLCAxLCAyMTgsIDYwLCAxMzMsIDEsIDIwNywgMzcsIDIyNSwgCisgICAgNjAsIDEzMywgMSwgMjA3LCAzNywgMjIxLCAxLCAyMjIsIDIwMiwgMTMzLCAxLCAyNDIsIDU5LCAyMjEsIDEsIDI1MSwgMTE0LCAKKyAgICAxMzMsIDEsIDI0MiwgNTksIDIyMSwgMSwgMjIyLCAyMDIsIDEzMywgMSwgMjIwLCAxNjIsIDIxMywgMjE1LCAxMzMsIDEsIAorICAgIDIwNywgMzYsIDEzMywgMSwgMjA3LCAzNywgMjA2LCAyMTQsIDEzMywgMSwgMjQyLCA1OCwgMTMzLCAxLCAyNDIsIDU5LCAKKyAgICAyMjIsIDIyMSwgMTMzLCAxLCAxODgsIDEzMywgMSwgMTcyLCAxMzMsIDEsIDIxNiwgMjExLCAyMjcsIDU4LCAxMzMsIDEsIAorICAgIDI0OSwgMTM2LCAxMzMsIDEsIDI0OSwgMTM3LCAyMjYsIDI1MCwgMTMzLCAxLCAxNzgsIDEzMywgMSwgMTgzLCAxMzMsIDEsIAorICAgIDIxMywgMjUyLCAxMzMsIDEsIDE5NCwgMTMzLCAxLCAyMDEsIDExNCwgMTMzLCAxLCAyMTIsIDY1LCAyMTIsIDQ5LCAxMzMsIAorICAgIDEsIDIxMiwgNjUsIDIxMiwgMiwgMTMzLCAxLCAyMTIsIDY0LCAxMzMsIDEsIDE0NCwgMTMzLCAyLCAyMTMsIDEyNiwgMTMzLCAKKyAgICAyMiwgMiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIwNCwgMTQsIDEzMywgMjIsIDIsIDIwNCwgMTUsIDIxMSwgMjU0LCAxMzMsIAorICAgIDIyLCAyLCAyMDcsIDIzOCwgMTMzLCAyMiwgMiwgMjA3LCAyMzksIDIyOCwgMTM5LCAxMzMsIDIyLCAyLCAyMTMsIDI1MywgCisgICAgMjEzLCAxMzUsIDEzMywgMjIsIDIsIDIxMywgMjUzLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAKKyAgICAyMjUsIDMsIDEzMywgMjIsIDIsIDIyNSwgMTc2LCAyMjUsIDQsIDIwNiwgMTkyLCAxMzMsIDIyLCAyLCAyMDYsIDI0OSwgCisgICAgMTMzLCAyMiwgMiwgMjA2LCAyNTAsIDIxMywgMTM1LCAxMzMsIDIyLCAyLCAyMDYsIDI1MCwgMjA2LCAxOTIsIDEzMywgMjIsIAorICAgIDIsIDIwNiwgMjUwLCAyMTMsIDEzNiwgMjA2LCAxOTIsIDEzMywgMjIsIDIsIDIxNiwgMzAsIDEzMywgMjIsIDIsIDIxNiwgCisgICAgMzEsIDIwNiwgMTkyLCAxMzMsIDI1MSwgMjMwLCAyNTEsIDIyOSwgMTMzLCAxLCAyMjcsIDg3LCAyMTEsIDI1MywgMTMzLCAxLCAKKyAgICAyMjYsIDE3NCwgMjExLCAyNTMsIDEzMywgMSwgMjA0LCAxMDgsIDIxMSwgMjUzLCAxMzMsIDEsIDIzOCwgMjQ5LCAyMTEsIAorICAgIDI1MywgMTMzLCAxLCAyMDMsIDYwLCAyMTEsIDI1MywgMTMzLCAxLCAxOTksIDEwNCwgMjExLCAyNTMsIDEzMywgMSwgMjUwLCAKKyAgICAxNTgsIDIxMSwgMjUzLCAxMzMsIDE3LCAxOTksIDgxLCAxMzMsIDE3LCAxMDIsIDEzMywgMTcsIDEwNSwgMTMzLCAxNywgCisgICAgMTQ3LCAxMzMsIDE3LCAxNDksIDEzMywgMTcsIDE2NCwgMTMzLCAxNywgMTg3LCAxMzMsIDE3LCAyMTAsIDEzNSwgMTMzLCAKKyAgICAxNywgMTkyLCAxMzMsIDE3LCAyMTksIDExMywgMTMzLCAyMTYsIDE0MywgMTMzLCAyMTYsIDE3MSwgMTMzLCAyMDEsIDE0LCAKKyAgICAxMzMsIDI0NywgMTI3LCAyMTYsIDE2NCwgMTMzLCAyNDcsIDEyNywgMjA5LCAxNTgsIDEzMywgMjQ3LCAxMjcsIDIxNiwgCisgICAgMTE0LCAxMzMsIDIxNiwgMTcwLCAxMzMsIDMyLCAxNiwgMjQwLCAxODgsIDEzMywgMzIsIDE2LCAyNDEsIDEzMywgMTMzLCAKKyAgICAzMiwgMTYsIDIzOSwgMTIxLCAxMzMsIDMyLCAxNiwgMjQyLCA4LCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMDcsIDIwNSwgCisgICAgMTMzLCAzMiwgMTYsIDI0MSwgMTgsIDEzMywgMzIsIDE2LCAyNDIsIDUwLCAxMzMsIDMyLCAxNiwgMjQxLCAxMDksIDEzMywgCisgICAgMzIsIDE2LCAyNDIsIDMyLCAxMzMsIDMyLCAxNiwgMjQyLCA5LCAyMzYsIDksIDEzMywgMzIsIDE2LCAzOCwgMjA2LCAxODUsIAorICAgIDEzMywgMzIsIDE2LCAzOCwgMjM4LCAxNjksIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDUsIDEzMywgMzIsIDE2LCAzOCwgCisgICAgMjI2LCAyNDcsIDEzMywgMzIsIDE2LCAzOCwgMjI3LCAyMjMsIDEzMywgMzIsIDE2LCAzOCwgMjI2LCAyNDYsIDMsIDIyNywgCisgICAgMjIzLCAxMzMsIDMyLCAxNiwgMzgsIDIyNiwgMjQ4LCAzLCAyMjcsIDIyMywgMTMzLCAzMiwgMTYsIDM4LCAyNDgsIDIyMSwgCisgICAgMTMzLCAzMiwgMTYsIDM4LCAyMzUsIDEwNiwgMTMzLCAzMiwgMTYsIDIxMywgNDQsIDE3NiwgMjM5LCAxMzEsIDEzMywgMzIsIAorICAgIDE2LCAyMTMsIDQ0LCAxNzYsIDI0MiwgNDgsIDEzMywgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA0LCAyMDcsIDEzMywgCisgICAgMzIsIDE2LCAyMTMsIDQ0LCAyNDYsIDExMCwgMjA3LCAyLCAxMzMsIDMyLCAxNiwgMjI1LCAyNiwgMTc2LCAyMTYsIDE1NywgCisgICAgMTMzLCAzMiwgMTYsIDIyNSwgMjYsIDE3NiwgMjE0LCAyMTAsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAKKyAgICAxMzEsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAyNDYsIDExMCwgMjE1LCAxMTcsIDEzMywgMzIsIDE2LCAyMjUsIDI2LCAxNzYsIAorICAgIDIxNSwgMTU2LCAyMDcsIDIyNywgMiwgMjE2LCAxNDAsIDIwNywgMjI3LCAyLCAyMTYsIDE1MywgMjA3LCAyMjcsIDIsIDIxNiwgCisgICAgMTQ5LCAyMDcsIDIyNywgMSwgNjIsIDIwNywgMjI3LCAxLCA3MCwgMjA3LCAyMjcsIDEsIDY2LCAyMDcsIDIyNywgMSwgMjUxLCAKKyAgICAyMjEsIDIwNywgMjI3LCAxLCA3NCwgMjA3LCAyMjcsIDEsIDcyLCAyMDcsIDIyNywgMSwgMjM4LCA2OSwgMjA3LCAyMjcsIDEsIAorICAgIDE2MSwgMjA3LCAyMjcsIDEsIDIxNCwgMTU5LCAyMDcsIDIyNywgMSwgMjM2LCA4OSwgMjA3LCAyMjcsIDEsIDIxOSwgMjUzLCAKKyAgICAyMDcsIDIyNywgMSwgMjQ3LCAxOTAsIDIwNywgMjI3LCAxLCAyMjcsIDI0OCwgMjA3LCAyMjcsIDEsIDE5OSwgMTE0LCAyMDcsIAorICAgIDIyNywgMSwgMjE4LCA2MCwgMjA3LCAyMjcsIDEsIDIwNywgMzYsIDIwNywgMjI3LCAxLCAyNDIsIDU4LCAyMDcsIDIyNywgMSwgCisgICAgMTg4LCAyMDcsIDIyNywgMSwgMTcyLCAyMDcsIDIyNywgMSwgMjM3LCAxOTUsIDIwNywgMjI3LCAxLCAyMDMsIDkwLCAyMDcsIAorICAgIDIyNywgMSwgMjQ5LCAxMzYsIDIwNywgMjI3LCAxLCAxNzgsIDIwNywgMjI3LCAxLCAxODMsIDIwNywgMjI3LCAxLCAyMTMsIAorICAgIDI1MiwgMjA3LCAyMjcsIDEsIDE5NCwgMjA3LCAyMjcsIDEsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjEyLCA2NCwgMjA3LCAKKyAgICAyMjcsIDEsIDIwMCwgMTgxLCAyMDcsIDIyNywgMSwgMTQ0LCAyMDcsIDIyNywgMTExLCAyLCAyMTYsIDE2OCwgMjA3LCAyMjcsIAorICAgIDExMSwgMiwgMjE2LCAxNDIsIDIwNywgMjI3LCAxMTEsIDIsIDIxNiwgMTM5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU2LCAKKyAgICAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTM4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTYxLCAyMDcsIDIyNywgMjIsIDIsIAorICAgIDIxNiwgMTQ4LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTY5LCAyMDcsIDIyNywgMjIsIDIsIDIxNiwgMTU4LCAyMDcsIDIyNywgCisgICAgMiwgMjE2LCAxNzIsIDIwNywgMjI3LCAyLCAyMDIsIDIwOCwgMjA3LCAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDE3OCwgMjA3LCAKKyAgICAyMjcsIDExMSwgMiwgMjE2LCAxMDMsIDIwMSwgMTE0LCAyMDcsIDIyNywgMSwgMjI2LCAyMDcsIDIwNywgMjI3LCAxLCAyMDcsIAorICAgIDE2NCwgMjA3LCAyMjcsIDE3LCAxOTksIDgxLCAyMDcsIDIyNywgMTcsIDEwMiwgMjA3LCAyMjcsIDE3LCAxMDUsIDIwNywgCisgICAgMjI3LCAxNywgMTQ3LCAyMDcsIDIyNywgMTcsIDE0OSwgMjA3LCAyMjcsIDE3LCAxNjQsIDIwNywgMjI3LCAxNywgMTg3LCAKKyAgICAyMDcsIDIyNywgMTcsIDIxMCwgMTM1LCAyMDcsIDIyNywgMTcsIDE5MiwgMjA3LCAyMjcsIDE3LCAyMTksIDExMywgMjA3LCAKKyAgICAyMjcsIDI1MCwgMTIyLCAyMDcsIDIyNywgMSwgMjEzLCAxMDgsIDIwNywgMjI3LCAxLCAyMjQsIDIzMywgMjA3LCAyMjcsIDEsIAorICAgIDI0OCwgMjAwLCAyMDcsIDIyNywgMSwgNDcsIDIyNywgMTE4LCAyMDcsIDIyNywgMSwgNDcsIDIyMywgMjQzLCAyNDksIDU0LCAKKyAgICAxLCA2MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDYyLCAyNDksIDU0LCAxLCAxNDQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAKKyAgICAxNDQsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxNDQsIDI0OSwgNTQsIDEsIDI0OSwgMTM2LCAyNDksIDU0LCAxLCAyMjcsIAorICAgIDQzLCAyNDksIDEzNiwgMjQ5LCA1NCwgMSwgMTcyLCAyNDksIDU0LCAxLCAyMDksIDE1MCwgMTcyLCAyNDksIDU0LCAxLCAKKyAgICAxODgsIDI0OSwgNTQsIDEsIDIyMiwgMTc1LCAxODgsIDI0OSwgNTQsIDEsIDIwMSwgMTE0LCAyNDksIDU0LCAxLCAyMDksIAorICAgIDE1MCwgMjAxLCAxMTQsIDI0OSwgNTQsIDEsIDIxNiwgMTg1LCAyMDEsIDExNCwgMjQ5LCA1NCwgMSwgMjM2LCA4OSwgMjQ5LCAKKyAgICA1NCwgMSwgMjA5LCAxNTAsIDIzNiwgODksIDI0OSwgNTQsIDEsIDIyNywgMjQ4LCAyNDksIDU0LCAxLCAyNDIsIDU4LCAyNDksIAorICAgIDU0LCAxLCAyMTMsIDI1MiwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMywgMjUyLCAyNDksIDU0LCAxLCAxNzgsIDI0OSwgCisgICAgNTQsIDEsIDIwOSwgMTUwLCAxNzgsIDI0OSwgNTQsIDEsIDIwOCwgMjUyLCAyMDcsIDM2LCAyNDksIDU0LCAxLCAyMTgsIAorICAgIDIxOSwgMjA3LCAzNiwgMjQ5LCA1NCwgMSwgMjEyLCA2NCwgMjQ5LCA1NCwgMSwgMjA5LCAxNTAsIDIxMiwgNjQsIDI0OSwgCisgICAgNTQsIDEsIDIyMiwgMTc1LCAyMTIsIDY0LCAyNDksIDU0LCAxLCAxODMsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxODMsIAorICAgIDI0OSwgNTQsIDEsIDIxOSwgMjUzLCAyNDksIDU0LCAxLCAxOTQsIDI0OSwgNTQsIDEsIDIwOSwgMTUwLCAxOTQsIDI0OSwgCisgICAgNTQsIDEsIDIxOCwgNjAsIDI0OSwgNTQsIDEsIDI0NywgMTkwLCAyNDksIDU0LCAxLCAyMjAsIDc1LCAyNDksIDU0LCAxLCAKKyAgICAyMjIsIDExMCwgMjQ5LCA1NCwgMSwgNzAsIDI0OSwgNTQsIDEsIDY2LCAyNDksIDU0LCAyLCAyMDUsIDE3NywgMjQ5LCA1NCwgCisgICAgMjIsIDIsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjE2LCAxODUsIDcyLCAyNDksIDU0LCAyMiwgMiwgMjM4LCAyNTUsIDI0OSwgCisgICAgNTQsIDIyLCAyLCA3MCwgMjQ5LCA1NCwgMjIsIDIsIDIyNywgNDMsIDcwLCAyNDksIDU0LCAyMiwgMiwgNzQsIDI0OSwgNTQsIAorICAgIDIyLCAyLCAyMjcsIDQzLCA3NCwgMjQ5LCA1NCwgMjIsIDIsIDY2LCAyNDksIDU0LCAyMiwgMiwgMTA4LCAzNiwgMjA5LCAKKyAgICAxNTAsIDIxMiwgNjQsIDI0OSwgNTQsIDExMSwgMiwgMjE5LCAyNTUsIDI0OSwgNTQsIDExMSwgMiwgMjM0LCAyNDcsIDI0OSwgCisgICAgNTQsIDIxNiwgMTUxLCAyNDksIDU0LCAyMTYsIDE0NywgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjAsIDE2MiwgMjIyLCAKKyAgICAxOCwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTUsIDE1OSwgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMjcsIDE0NCwgCisgICAgMjQ5LCA1NCwgMTYsIDI0OCwgMTY2LCAyMTYsIDE1MSwgMjI0LCAyNDMsIDEsIDE2MSwgMjI0LCAyNDMsIDEsIDIyNiwgMTAyLCAKKyAgICAyMjQsIDI0MywgMSwgMjI2LCAyMDcsIDIyNCwgMjQzLCAxLCAyMzYsIDg5LCAyMjQsIDI0MywgMSwgMjM1LCAxMzEsIDIyNCwgCisgICAgMjQzLCAxLCAyMTksIDI1MywgMjI0LCAyNDMsIDEsIDI0NywgMTkwLCAyMjQsIDI0MywgMSwgMjQ3LCAzNywgMjI0LCAyNDMsIAorICAgIDEsIDIyNywgMjQ4LCAyMjQsIDI0MywgMSwgMjE4LCA2MCwgMjI0LCAyNDMsIDEsIDIwNywgMzYsIDIyNCwgMjQzLCAxLCAKKyAgICAyMDYsIDEyMiwgMjI0LCAyNDMsIDEsIDI0MiwgNTgsIDIyNCwgMjQzLCAxLCAxODgsIDIyNCwgMjQzLCAxLCAxNzIsIDIyNCwgCisgICAgMjQzLCAxLCAyMTUsIDEzNSwgMjI0LCAyNDMsIDEsIDIxNSwgMjQ1LCAyMjQsIDI0MywgMSwgMjM3LCAxOTUsIDIyNCwgMjQzLCAKKyAgICAxLCAyMzcsIDU1LCAyMjQsIDI0MywgMSwgMjQ5LCAxMzYsIDIyNCwgMjQzLCAxLCAyNDgsIDE0NSwgMjI0LCAyNDMsIDEsIAorICAgIDE3OCwgMjI0LCAyNDMsIDEsIDIyMSwgMTQzLCAyMjQsIDI0MywgMSwgMjA1LCAzMiwgMjI0LCAyNDMsIDEsIDIwNSwgMjIsIAorICAgIDIyNCwgMjQzLCAxLCAyMzksIDkzLCAyMjQsIDI0MywgMSwgMTgzLCAyMjQsIDI0MywgMSwgMjEzLCAyNTIsIDIyNCwgMjQzLCAKKyAgICAxLCAxOTQsIDIyNCwgMjQzLCAxLCAxNDQsIDIyNCwgMjQzLCAxLCAyMzQsIDM5LCAyMjQsIDI0MywgMSwgMjAzLCA5MCwgCisgICAgMjI0LCAyNDMsIDEsIDIxMiwgNjQsIDIyNCwgMjQzLCAxLCAyMTAsIDExNCwgMjI0LCAyNDMsIDEsIDIwMSwgMTE0LCAyMjQsIAorICAgIDI0MywgMSwgNjIsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAxODMsIDIyNCwgMjQzLCAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgCisgICAgMjI0LCAyNDMsIDIyLCAyLCAyNTIsIDEzOCwgMjI0LCAyNDMsIDIyLCAyLCA3MCwgMjI0LCAyNDMsIDIyLCAyLCA3NCwgMjI0LCAKKyAgICAyNDMsIDIyLCAyLCAyMTcsIDYzLCAyMjQsIDI0MywgMjIsIDIsIDY2LCAyMjQsIDI0MywgMjIsIDIsIDIwMywgMTgyLCAyMjQsIAorICAgIDI0MywgMjIsIDIsIDcyLCAyMjQsIDI0MywgMTExLCAyLCAyMjcsIDExOCwgMjI0LCAyNDMsIDExMSwgMiwgMjIzLCAyNDMsIAorICAgIDIyNCwgMjQzLCAxMTEsIDIsIDE1NiwgMjI0LCAyNDMsIDExMSwgMiwgMjIwLCAyMTQsIDIyNCwgMjQzLCAxMTEsIDIsIDIxNiwgCisgICAgMjI2LCAyMjQsIDI0MywgMTExLCAyLCAxNDYsIDIyNCwgMjQzLCAxMTEsIDIsIDIwNywgODMsIDIyNCwgMjQzLCAxMTEsIDIsIAorICAgIDIxOCwgMzQsIDIyNCwgMjQzLCAxMTEsIDIsIDIyNywgNjQsIDIyNCwgMjQzLCAyLCAyMTMsIDIxMywgMjI0LCAyNDMsIDIsIAorICAgIDIxOCwgMTAwLCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNywgMzQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjE4LCA0NSwgMjA2LCAKKyAgICAxOCwgMjA3LCAzNCwgMjI0LCAyNDMsIDIxNCwgMjEyLCAyNDcsIDQ0LCAyMjQsIDI0MywgMjE0LCAyMTIsIDIwNSwgMTQsIAorICAgIDI0NywgNDQsIDIyNCwgMjQzLCAyMTQsIDIxMiwgMjA1LCAxMywgMjI0LCAyNDMsIDE3LCAxOTksIDgxLCAyMjQsIDI0MywgCisgICAgMTcsIDEwMiwgMjI0LCAyNDMsIDE3LCAxMDUsIDIyNCwgMjQzLCAxNywgMTQ3LCAyMjQsIDI0MywgMTcsIDE0OSwgMjI0LCAKKyAgICAyNDMsIDE3LCAxNjQsIDIyNCwgMjQzLCAxNywgMTg3LCAyMjQsIDI0MywgMTcsIDIxMCwgMTM1LCAyMjQsIDI0MywgMTcsIAorICAgIDE5MiwgMjI0LCAyNDMsIDE3LCAyMTksIDExMywgMjI0LCAyNDMsIDEsIDIwNCwgMjUzLCAyMjQsIDI0MywgMSwgMjA0LCAKKyAgICAyNDEsIDIyNCwgMjQzLCAxLCAyNDEsIDIyMCwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxOTksIDgxLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMTcsIDEwMiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxMDUsIDIxNywgOTQsIDI0NiwgMjI5LCAxNywgMTQ3LCAKKyAgICAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDE0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAxNjQsIDIxNywgOTQsIDI0NiwgCisgICAgMjI5LCAxNywgMTg3LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIDIxMCwgMTM1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMTcsIAorICAgIDE5MiwgMjE3LCA5NCwgMjQ2LCAyMjksIDE3LCAyMTksIDExMywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDE5NCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDI1MCwgMTU1LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxOTMsIDIxNywgOTQsIDI0NiwgMjI5LCAKKyAgICAxLCAyNTEsIDc2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUxLCAxNTEsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjUsIAorICAgIDE3NSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDI1MiwgMTAwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCAxMDEsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyNTIsIDk5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjUyLCA5NCwgMjE3LCA5NCwgMjQ2LCAKKyAgICAyMjksIDEsIDIyNCwgMjEwLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCAyNiwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIAorICAgIDIyOCwgMTUyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI4LCA0NywgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyOCwgMzUsIAorICAgIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMjQsIDQyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjA0LCAzOCwgMjE3LCA5NCwgCisgICAgMjQ2LCAyMjksIDEsIDIwNCwgMzYsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAyMDMsIDIzMywgMjE3LCA5NCwgMjQ2LCAyMjksIAorICAgIDEsIDIwMywgMTc0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjI1LCA0MCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIzOCwgCisgICAgMTMzLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM5LCAyLCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjM4LCAxNzksIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAxLCAyMzgsIDEwOCwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIyNCwgMTEwLCAyMTcsIDk0LCAyNDYsIAorICAgIDIyOSwgMSwgMjE3LCA2LCAyMTcsIDk0LCAyNDYsIDIyOSwgMSwgMjE3LCAxNDIsIDIxNywgOTQsIDI0NiwgMjI5LCAxLCAKKyAgICAyMTYsIDI0OSwgMjE3LCA5NCwgMjQ2LCAyMjksIDEsIDIxNywgMTA4LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjIxLCA0MiwgCisgICAgMjA0LCAyMTgsIDIxNywgOTQsIDI0NiwgMjI5LCAyMzYsIDg0LCAyMDQsIDIxOSwgMjE3LCA5NCwgMjQ2LCAyMjksIDIyMSwgCisgICAgNDAsIDIwNCwgMjE5LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjEzLCAxNTAsIDIxNywgOTQsIDI0NiwgMjI5LCAyMTUsIDI0MywgCisgICAgMjE3LCA5NCwgMjQ2LCAyMjksIDI1MSwgMTg0LCAyMTcsIDk0LCAyNDYsIDIyOSwgMjE0LCAyMTIsIDIyMSwgMzYsIDIxNywgCisgICAgOTQsIDI0NiwgMjI5LCAyMTQsIDIxMiwgNTMsIDIyMSwgMzYsIDM3LCA0LCAxLCAyMTIsIDIxOSwgMjAzLCA1OSwgMzcsIDQsIAorICAgIDEsIDIyNCwgODIsIDI0MSwgMTc1LCAzNywgNCwgMSwgMjIwLCAxMjQsIDc0LCAzNywgNCwgMSwgMjAxLCAyOCwgMjM4LCAKKyAgICAxMDQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjA2LCAyMDEsIDM3LCA0LCAxLCAyMDYsIDQzLCAyMDYsIDIwMSwgMzcsIDQsIDEsIAorICAgIDIwNiwgMjQ4LCAyMzQsIDE2NSwgNTQsIDM3LCA0LCAxLCAyMDYsIDI0OCwgMjAwLCA2NSwgMzcsIDQsIDEsIDIwNCwgMCwgCisgICAgMjA0LCAyMCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjA3LCAxOTgsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAKKyAgICAxNjYsIDIxNiwgMTUyLCAyMDcsIDIyNywgMjE0LCAyMTIsIDI0OCwgMTY2LCAyMTQsIDIwMCwgMjA3LCAyMjcsIDIxNCwgCisgICAgMjEyLCAyNDgsIDE2NiwgMjQ3LCAxNzUsIDIwNywgMjI3LCAyMTQsIDIxMiwgMjQ4LCAxNjYsIDIyNCwgMjM0LCAyMTEsIAorICAgIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjI3LCAxMDgsIDIxMSwgMjUwLCAyMDcsIDIyNywgMjE0LCAKKyAgICAyMTIsIDI0OCwgMTY2LCAyNDIsIDU5LCAyMTEsIDI1MCwgMjA3LCAyMjcsIDIxNCwgMjEyLCAyNDgsIDE2NiwgMjQ5LCAxMzcsIAorICAgIDIxMSwgMjUwLCAyMDMsIDU2LCAxNTAsIDIyNywgNDEsIDIwMywgNTYsIDE1MCwgMjEwLCA4MSwgMjAzLCA1NiwgMTUwLCAKKyAgICAyMTUsIDIzLCAyMDMsIDU2LCAyLCAyMTksIDEyNiwgMjAzLCA1NiwgMiwgMjAwLCA4NiwgMjIxLCAyMDIsIDIwNywgMTg5LCAKKyAgICAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDI1MSwgMTg5LCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjAwLCAKKyAgICA4NiwgMjI4LCAxMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAxNTAsIDIwMCwgODYsIDIyNywgMjksIDIyOCwgMTA0LCAyMDcsIAorICAgIDE4OSwgMjAzLCA1NiwgMTUwLCAyNDcsIDE1MiwgNTcsIDIwMywgNTYsIDE1MCwgMjAwLCA4NiwgMjI3LCAyOSwgMjI4LCAKKyAgICAxMDQsIDIwNywgMTkwLCAyMTEsIDIyMCwgMjAzLCA1NiwgMTUwLCA1MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjA1LCAKKyAgICA4MywgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjI3LCAyOSwgMjUxLCAzNSwgMjAzLCA1NiwgMTUwLCA3MywgNTcsIDIwMywgCisgICAgNTYsIDE1MCwgMTIwLCAxOTAsIDU3LCAyMDMsIDU2LCAxNTAsIDEyNiwgMTkwLCA1NywgMjAzLCA1NiwgMTUwLCAyMTMsIDM0LCAKKyAgICAyMjcsIDQwLCAyMjgsIDEwNCwgMjA3LCAxODksIDIwMywgNTYsIDE1MCwgMjUwLCAxNTIsIDIyOCwgMTA0LCAyMDcsIDE4OSwgCisgICAgMjAzLCA1NiwgMiwgMjAyLCAyMDQsIDIwNywgMTg5LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzMywgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyMDQsIDMzLCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNSwgMjAzLCA1NiwgCisgICAgMiwgMjEzLCAxMDUsIDIwMiwgMjA0LCAyNTEsIDM1LCAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjA0LCAzNCwgMywgMjA3LCA2LCAKKyAgICAyMDMsIDU2LCAyLCAyMDIsIDIwNCwgMjUxLCAzNiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNTEsIDUwLCAKKyAgICAyMDMsIDU2LCAyLCAyNTEsIDM0LCAyNDksIDEwNCwgMjAzLCA1NiwgMiwgMjUxLCAzNCwgMjAzLCA4MSwgMjAzLCA1NiwgMiwgCisgICAgMjUxLCAzNCwgMjAzLCA4MiwgMywgMjA3LCA2LCAyMDMsIDU2LCAyLCAyMDUsIDIxNCwgMjAzLCA1NiwgMiwgMjM0LCA4NywgCisgICAgMTY4LCAyNTEsIDMzLCAyMDMsIDU2LCAyLCAxNjgsIDI1MSwgMzMsIDIwMywgNTYsIDIsIDIxMiwgMTc3LCAxNjgsIDI1MSwgCisgICAgMzMsIDIwMywgNTYsIDIsIDI1MSwgMzQsIDIwNCwgNDAsIDIyMSwgMjcsIDIwMywgNTYsIDIsIDI1MCwgMjMwLCAyMDMsIDU2LCAKKyAgICAyLCAyMTIsIDIyOCwgMjUwLCAyMzAsIDIwMywgNTYsIDE1MCwgMjQ3LCAxNTIsIDU2LCAyMDMsIDU2LCAyLCAyMjcsIDIwMSwgCisgICAgMjAzLCA1NiwgMiwgMjAzLCAyMjYsIDIwMywgNTYsIDE1MCwgMjEzLCAyNywgNTYsIDIwMywgNTYsIDE1MCwgNTMsIDIxMywgCisgICAgMjcsIDU2LCA4LCAxLCA0LCA2LCA2MiwgOCwgMSwgNCwgNiwgMjUxLCAyMjEsIDgsIDQsIDEsIDIwNCwgMTg1LCAyNTEsIAorICAgIDIyMSwgOCwgMSwgNCwgNiwgMjQ5LCA3MSwgMjUwLCAxMDMsIDgsIDEsIDQsIDYsIDI0NywgMjIzLCA4LCAxLCA0LCA2LCAKKyAgICAyNDIsIDE1MywgOCwgMSwgNCwgNiwgMjM4LCA3NCwgOCwgMSwgNCwgNiwgNzIsIDgsIDQsIDEsIDIwNCwgMTg1LCAxNzYsIAorICAgIDcyLCA4LCA0LCAxLCAyMDQsIDE4NSwgNzAsIDgsIDEsIDQsIDYsIDIyNywgMjUxLCA4LCAxLCA0LCA2LCAyMjcsIDExOCwgOCwgCisgICAgMSwgNCwgNiwgMjI1LCAxOTMsIDMsIDk3LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjEzLCAxMDUsIAorICAgIDIyMCwgMjE0LCA4LCAxLCA0LCA2LCA3NCwgOCwgMSwgNCwgNiwgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDc0LCA4LCAKKyAgICA0LCAxLCAyMDksIDE3MywgMTc2LCA3NCwgOCwgNCwgMSwgMjA5LCAxNzMsIDE2MywgMywgOTcsIDgsIDQsIDEsIDIwNCwgCisgICAgMTg1LCAyMTcsIDEyMSwgOCwgMSwgNCwgNiwgMjE3LCAzLCA4LCA0LCAxLCAyMDUsIDE1OCwgMTY3LCA3NCwgOCwgNCwgMSwgCisgICAgMjQ4LCA5MywgMTY3LCA3NCwgOCwgMSwgNCwgNiwgMjE2LCAyMjYsIDgsIDEsIDQsIDYsIDIxMywgMTA1LCAxNDYsIDgsIDEsIAorICAgIDQsIDYsIDIwNCwgMTg1LCAxNDYsIDgsIDEsIDQsIDYsIDIwNywgODMsIDgsIDEsIDQsIDYsIDY2LCA4LCA0LCAxLCAyMDksIAorICAgIDE3MywgNjYsIDgsIDQsIDEsIDIwOSwgMTczLCAyNDEsIDcyLCA2NiwgOCwgNCwgMSwgMjA5LCAxNzMsIDIwNCwgMTg1LCAKKyAgICAyMjMsIDI0MywgOCwgMSwgNCwgNiwgMjAzLCAxNjgsIDgsIDEsIDQsIDYsIDIwMSwgMTQ3LCA4LCAxLCA0LCA2LCAxOTksIAorICAgIDE1NywgOCwgMSwgNCwgNiwgMjM4LCA4LCA4LCAxLCAyMDIsIDE4OSwgMjI1LCA2NiwgMjA4LCAyMTYsIDgsIDEsIDI1MSwgCisgICAgMTcxLCAzMSwgMSwgNCwgNiwgMjM2LCA2MCwgMzEsIDEsIDQsIDYsIDIyNSwgODcsIDMxLCAxLCA0LCA2LCAyMTUsIDIwNCwgCisgICAgMzEsIDEsIDQsIDYsIDIxMywgOTAsIDMxLCAxLCA0LCA2LCAyMTQsIDIzNSwgMzcsIDEsIDQsIDYsIDIzOCwgMjA5LCA2NywgCisgICAgMSwgNiwgNjIsIDY3LCAxLCA2LCAyNTEsIDIyMSwgNjcsIDEsIDYsIDI1MCwgMTAzLCA2NywgMSwgNiwgMjQ5LCA3MSwgMjUwLCAKKyAgICAxMDMsIDY3LCAxLCA2LCAyNDIsIDE1MywgNjcsIDEsIDYsIDcyLCA2NywgMSwgNiwgMjEzLCAxMDUsIDcyLCA2NywgMSwgNiwgCisgICAgMjM2LCAxNTYsIDY3LCAxLCA2LCAyMzQsIDI0NywgNjcsIDEsIDYsIDcwLCA2NywgMSwgNiwgMjI3LCAyNTEsIDY3LCAxLCA2LCAKKyAgICAyMjcsIDExOCwgNjcsIDEsIDYsIDE1NiwgNjcsIDEsIDYsIDIyMywgMjQzLCA2NywgMSwgNiwgMjIwLCAyMTQsIDY3LCAxLCAKKyAgICA2LCAyMTMsIDEwNSwgMjIwLCAyMTQsIDY3LCAxLCA2LCA3NCwgNjcsIDEsIDYsIDIxNywgMywgNjcsIDEsIDYsIDIxNiwgCisgICAgMjI2LCA2NywgMSwgNiwgMTQ2LCA2NywgMSwgNiwgMjA3LCA4MywgNjcsIDEsIDYsIDY2LCA2NywgMSwgNiwgMjAxLCAxNDcsIAorICAgIDY3LCAxLCA0LCA2MiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA2MiwgNjcsIDEsIDQsIDI1MSwgMTEyLCA2NywgMSwgNCwgMjA0LCAKKyAgICAxODUsIDI1MSwgMjIxLCA2NywgMSwgNCwgMjUwLCAxMDMsIDY3LCAxLCA0LCAyNDIsIDE1MywgNjcsIDEsIDQsIDcyLCA2NywgCisgICAgMSwgNCwgMjExLCAyMTgsIDY3LCAxLCA0LCAxNzYsIDcyLCA2NywgMSwgNCwgMjA0LCAxODUsIDE3NiwgNzIsIDY3LCAxLCA0LCAKKyAgICAyMzYsIDE1NiwgNjcsIDEsIDQsIDIwNCwgMTg1LCA3MCwgNjcsIDEsIDQsIDIyNywgMTE4LCA2NywgMSwgNCwgMjIzLCAyNDMsIAorICAgIDY3LCAxLCA0LCAyMzgsIDE2NSwgNjcsIDEsIDQsIDc0LCA2NywgMSwgNCwgMTc2LCA3NCwgNjcsIDEsIDQsIDIwNSwgMTU4LCAKKyAgICAxNjcsIDc0LCA2NywgMSwgNCwgMjQ4LCA5MywgMTY3LCA3NCwgNjcsIDEsIDQsIDIxNiwgMjI2LCA2NywgMSwgNCwgMjA3LCAKKyAgICA4MywgNjcsIDEsIDQsIDY2LCA2NywgMSwgNCwgMjA5LCAxNzMsIDY2LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQzLCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjgsIDY3LCAxLCA0LCAyNTEsIDE3MSwgNjcsIDEsIDQsIDI0OCwgMjA4LCA2NywgMSwgNCwgMzEsIAorICAgIDIzNiwgNjAsIDY3LCAxLCA0LCAyNDEsIDEzNiwgNjcsIDEsIDQsIDMxLCAyMTUsIDIyOSwgNjcsIDEsIDQsIDI0NiwgMjM2LCAKKyAgICA4LCAyMDgsIDQsIDQsIDEsIDcwLCA4LCAyMDgsIDQsIDQsIDEsIDE0NiwgOCwgMjA4LCA0LCA0LCAxLCA2NiwgOCwgMjA4LCAKKyAgICA0LCA0LCAxLCAyMDMsIDE2OCwgMzEsIDIwOCwgNCwgNCwgMSwgMjQ4LCAyMDgsIDMxLCAyMDgsIDQsIDQsIDEsIDIzNiwgNjAsIAorICAgIDMxLCAyMDgsIDQsIDQsIDEsIDIxMywgOTAsIDMxLCAyMDgsIDQsIDQsIDEsIDIxNSwgMjI5LCAzMSwgMjA4LCA0LCA0LCAxLCAKKyAgICAyNDYsIDIzNiwgOCwgNCwgMSwgMjA0LCAzMSwgOCwgNCwgMSwgNjgsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDI0MiwgCisgICAgMTU0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMzgsIDYsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgCisgICAgMjQ0LCAzLCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjAsIDIxNSwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjE2LCAKKyAgICAyMjcsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDEwMSwgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgCisgICAgMzMsIDMsIDIzNywgNjksIDI2LCAxMDEsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMTAxLCAyMDUsIDI0MCwgCisgICAgOCwgNCwgMSwgMjA3LCA4NCwgMywgMTAxLCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDEwMSwgMjA1LCAyNDAsIAorICAgIDgsIDQsIDEsIDIwNCwgMTg1LCAyMzYsIDE1NiwgNjcsIDEsIDM3LCAyMzgsIDE3OSwgOCwgNCwgMSwgMjI4LCA3MSwgMjM2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDIwNiwgMTI1LCAzLCAyMDgsIDUxLCA4LCA0LCA2LCAxLCAyMzMsIDE5LCAzLCA5NywgOCwgNCwgMSwgCisgICAgMjI4LCA0MiwgMywgOTcsIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCA5NywgOCwgNCwgNiwgMSwgMTA4LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDk3LCA4LCA0LCAxLCA2OCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgNiwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM2LCAxNTcsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIzOCwgOTUsIDMsIAorICAgIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyMTYsIDE4NCwgMTE3LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgCisgICAgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDQsIDEsIDM1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA4LCA0LCAxLCAyNTEsIDExMywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIzMywgCisgICAgMTg3LCAyNiwgMjA3LCA2LCA4LCA0LCAxLCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIDE3NiwgMTk3LCAzLCAKKyAgICAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMTMsIDEwNSwgMTc2LCAxOTcsIDMsIDIxMywgMTExLCAxMTcsIDgsIDQsIDEsIAorICAgIDIxMSwgMjE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAKKyAgICAxNzYsIDE2MywgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgMjM4LCA5NSwgMywgMjEzLCAxMTEsIDExNywgOCwgNCwgMSwgCisgICAgMTA4LCAzLCAyMTMsIDExMSwgMTE3LCA4LCA0LCAxLCAyMzgsIDksIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAyMDQsIAorICAgIDE4NSwgMjUxLCAxMTIsIDY3LCAxLCA0LCAyNDcsIDIyMywgNjcsIDEsIDQsIDI0NywgMjI0LCAzLCAyNDIsIDE5OCwgNjcsIAorICAgIDEsIDQsIDIzOCwgNzQsIDY3LCAxLCA0LCAyMTMsIDEwNSwgMTc2LCA3MiwgNjcsIDEsIDQsIDIzOCwgNSwgNjcsIDEsIDQsIAorICAgIDI0MCwgMTgxLCAyMjcsIDI1MiwgMywgOTcsIDY3LCAxLCA0LCAxMzUsIDIzNiwgMTU2LCA2NywgMSwgNCwgMjA0LCAxODUsIAorICAgIDIzNCwgMjQ3LCA2NywgMSwgNCwgMjMzLCAxOSwgMywgOTcsIDY3LCAxLCA0LCAyMjgsIDQxLCA2NywgMSwgNCwgNiwgNzAsIAorICAgIDY3LCAxLCA0LCA2LCAyMzMsIDE5LCAzLCA5NywgNjcsIDEsIDQsIDIyNywgMjUyLCAzLCAyNDIsIDIzMCwgNjcsIDEsIDQsIAorICAgIDIyNSwgMTkzLCAzLCAyMTMsIDExMSwgMTE3LCA2NywgMSwgNCwgMjI1LCAxOTMsIDMsIDIxNiwgMTg0LCAxMTcsIDY3LCAxLCAKKyAgICA0LCA2LCAxNTYsIDY3LCAxLCA0LCAyMjMsIDI0NCwgMywgMTE3LCA2NywgMSwgNCwgMjA0LCAxODUsIDIyMywgMjQ0LCAzLCAKKyAgICAxNjgsIDIyNSwgMTYsIDY3LCAxLCA0LCAyMjAsIDIxNSwgMywgNDksIDExNywgNjcsIDEsIDQsIDIyMCwgMjE1LCAzLCAyMTMsIAorICAgIDExMSwgMTE3LCA2NywgMSwgNCwgNiwgMjIwLCAyMTQsIDY3LCAxLCA0LCAyNDksIDcxLCA3NCwgNjcsIDEsIDQsIDIxNSwgCisgICAgMjI5LCA2NywgMSwgNCwgMjEyLCAxMjMsIDMsIDExNywgNjcsIDEsIDQsIDIzOCwgOTQsIDY3LCAxLCA0LCAyMDcsIDg0LCAzLCAKKyAgICAyMTYsIDE4NCwgMTE3LCA2NywgMSwgNCwgMTA4LCAxNDgsIDY3LCAxLCA0LCAyMDMsIDIyMCwgNjcsIDEsIDQsIDYsIDY2LCAKKyAgICA2NywgMSwgNCwgMjAzLCAxNjksIDMsIDExNywgNjcsIDEsIDQsIDIwNCwgMTg1LCAyMDMsIDE2OCwgNjcsIDEsIDQsIDE5OSwgCisgICAgMTU3LCA2NywgMSwgNCwgMTk5LCAxNTgsIDMsIDIxMywgMTExLCAxMTcsIDY3LCAxLCA0LCAxOTksIDE1OCwgMywgMjQyLCAKKyAgICAxOTgsIDY3LCAxLCA0LCAyMzgsIDgsIDY3LCAxLCA0LCAyMDYsIDg4LCAzOCwgMjM5LCAxODAsIDIzNSwgNzQsIDI1MSwgCisgICAgMjUxLCAzOCwgMjM5LCAxODAsIDI1MSwgMjM5LCAyNTEsIDI1MSwgMzgsIDIwOSwgNDIsIDU3LCAzOCwgMjA3LCAxOTYsIDgxLCAKKyAgICAzOCwgMjIyLCAyMjcsIDM4LCAyMzUsIDcxLCAzOCwgMjIyLCAyMjUsIDM4LCAyNTEsIDIzNywgMzgsIDIzNSwgNzIsIDM4LCAKKyAgICAyNTEsIDIzOCwgMzgsIDgsIDQsIDEsIDIxNCwgMzMsIDU3LCAzOCwgMjQ4LCA1NiwgMzgsIDIyMiwgMjI2LCAzOCwgNTMsIAorICAgIDI0NiwgMTQ3LCA1NiwgMzgsIDIxNywgMTExLCA1NiwgMzgsIDE5OSwgMjcsIDU3LCAzOCwgMjI4LCAyNywgNTcsIDM4LCAKKyAgICAyMDMsIDIxNSwgNTYsIDM4LCAyMDMsIDE5OCwgNTYsIDM4LCA4LCA0LCAxLCAyMzcsIDQxLCAxNzYsIDM1LCA1NiwgMzgsIDgsIAorICAgIDQsIDEsIDI1MSwgMjIxLCAzOCwgOCwgNCwgMSwgMjUxLCAzMSwgMzgsIDgsIDQsIDEsIDI1MCwgMTIzLCAzOCwgOCwgNCwgMSwgCisgICAgMjQ3LCAyMjQsIDI0NywgNjksIDM4LCA4LCA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgMzgsIDgsIDQsIDEsIDIzOCwgNzQsIAorICAgIDM4LCA4LCA0LCAxLCAyMzYsIDE1NiwgMzgsIDgsIDEsIDQsIDYsIDIzNiwgMTU2LCAzOCwgOCwgNCwgMSwgMjI3LCAxMTgsIAorICAgIDM4LCA4LCA0LCAxLCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAxNTYsIDM4LCA4LCAxLCA0LCA2LCAyMjMsIDI0MywgMzgsIDgsIAorICAgIDQsIDEsIDIyMCwgMjE0LCAzOCwgOCwgMSwgNCwgNiwgMjIwLCAyMTQsIDM4LCA4LCAxLCA0LCA2LCAxNDYsIDM4LCA4LCA0LCAKKyAgICAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgMzgsIDgsIDQsIDEsIDIxMiwgMTIyLCAzOCwgOCwgNCwgMSwgMTY4LCAyMTIsIDEyMiwgCisgICAgMzgsIDgsIDQsIDEsIDE5OSwgMTU3LCAzOCwgOCwgNCwgMSwgMjUxLCAxMTIsIDM4LCA4LCA0LCAxLCAyNTAsIDEwMywgMzgsIAorICAgIDgsIDQsIDEsIDI0OCwgMjA4LCAzOCwgOCwgNCwgMSwgMjExLCAyMTgsIDM4LCA4LCA0LCAxLCAyMzgsIDUsIDM4LCA4LCA0LCAKKyAgICAxLCAyMjUsIDE5MywgMywgNTMsIDEwMSwgMjA1LCAyNDAsIDM4LCA4LCA0LCAxLCAxNjMsIDMsIDE2MiwgMjQ3LCA1NywgOTcsIAorICAgIDM4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMzgsIDgsIDQsIDEsIDIzOCwgOTQsIDM4LCA4LCA0LCAxLCAxMDgsIDMsIDE2MiwgCisgICAgMjQ3LCA1NywgOTcsIDM4LCA4LCA0LCAxLCAyMDEsIDE0NywgMzgsIDgsIDQsIDEsIDM1LCAzLCAyNDEsIDc0LCAzOCwgOCwgCisgICAgNCwgMSwgMTYzLCAzLCAyNDEsIDc0LCAzOCwgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc0LCAzOCwgMTE1LCAyMDcsIDE4LCAKKyAgICA1NiwgMzgsIDI0MSwgMTQ1LCA4MSwgMzgsIDUzLCAyMjgsIDUwLCAyNDgsIDU4LCA1NywgMzgsIDI1MSwgMTE3LCAxNjAsIAorICAgIDIwNSwgMTg2LCA1NywgMzgsIDQ5LCAyNTAsIDIwMywgNTYsIDM4LCA1MSwgMjUwLCAyMDMsIDI2LCAxMjcsIDI1MCwgMjAzLCAKKyAgICA1NywgOCwgNiwgMSwgMzUsIDMsIDIxMywgMjcsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjEzLCAyNywgNTcsIDgsIDYsIDEsIAorICAgIDY4LCAzLCA3MywgNTYsIDgsIDQsIDEsIDY4LCAzLCA3MywgNTYsIDgsIDYsIDEsIDY4LCAzLCA3MywgNTcsIDgsIDQsIDEsIAorICAgIDY4LCAzLCA3MywgNTcsIDgsIDYsIDEsIDY4LCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDY4LCAzLCAyMjQsIDE3NywgCisgICAgNTcsIDgsIDYsIDEsIDI0NywgMjI0LCAzLCAyNDcsIDcwLCAyNiwgMTY5LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMjQ3LCAKKyAgICA3MCwgMjYsIDE2OSwgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NiwgCisgICAgOCwgNiwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDczLCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjQyLCAxNTQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjQyLCAKKyAgICAxNTQsIDMsIDI0NywgNjksIDgsIDQsIDEsIDI0MiwgMTU0LCAzLCAyNDcsIDY5LCA4LCA2LCAxLCAyNDIsIDE1NCwgMywgCisgICAgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAyNDIsIDE1NCwgMywgMjQ2LCAxNDcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIyMiwgCisgICAgMjI5LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTk3LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDE5NywgCisgICAgMywgMjQ2LCAxNDcsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTk3LCAzLCAyMDUsIAorICAgIDI0MSwgNTcsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAKKyAgICAyNDgsIDU3LCA4LCA0LCAxLCAxOTcsIDMsIDI0NywgNzAsIDI2LCAyNDgsIDU3LCA4LCA2LCAxLCAyMzgsIDYsIDMsIDczLCAKKyAgICA1NiwgOCwgNCwgMSwgMjM4LCA2LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMjIsIDIyOCwgOCwgNCwgMSwgCisgICAgMjM2LCAxNTcsIDMsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMzQsIDI0OCwgCisgICAgMywgNzMsIDU2LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAyMzQsIDI0OCwgMywgMjQxLCA3NCwgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIzNCwgCisgICAgMjQ4LCAzLCAyNDcsIDY5LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ3LCA2OSwgOCwgNiwgMSwgMjM0LCAyNDgsIDMsIAorICAgIDI0OCwgNTgsIDU3LCA4LCA0LCAxLCAyMzQsIDI0OCwgMywgMjQ4LCA1OCwgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIwNSwgCisgICAgMjQxLCA1NywgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAyMzMsIDE5LCAzLCAyNDEsIDc1LCAyNiwgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgCisgICAgMTY5LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMTY5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA0LCAxLCAKKyAgICAyMjcsIDExOSwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMjcsIAorICAgIDExOSwgMywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDU3LCA4LCA0LCAxLCAyMjUsIDE5MywgMywgCisgICAgNzMsIDU3LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCA3MywgMjQ4LCAyMjgsIDI2LCAyMjIsIDIyOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNCwgMSwgCisgICAgMjIzLCAyNDQsIDMsIDE2OSwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNCwgMSwgMjIzLCAyNDQsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIAorICAgIDczLCA1NywgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDczLCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgCisgICAgOCwgNCwgMSwgMjIwLCAyMTUsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgCisgICAgOCwgNCwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDE2OSwgOCwgNiwgMSwgMTYzLCAzLCAyMDUsIDI0MSwgMjYsIDI0MSwgCisgICAgNzQsIDgsIDQsIDEsIDE2MywgMywgMjA1LCAyNDEsIDI2LCAyNDEsIDc0LCA4LCA2LCAxLCAxNjMsIDMsIDIyMiwgMjI5LCAKKyAgICAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMTYzLCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjIyLCAyMjksIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjIyLCAyMjksIDI2LCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAKKyAgICAzLCAxNjksIDgsIDQsIDEsIDIxNiwgMjI3LCAzLCAxNjksIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDQsIDEsIAorICAgIDIxNiwgMjI3LCAzLCA3MywgNTYsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjE0LCAzMywgMywgCisgICAgNzMsIDU2LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCA1NywgOCwgNiwgCisgICAgMSwgMjE0LCAzMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgMjIyLCAyMjgsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDczLCAyNDgsIAorICAgIDIyOCwgMjYsIDIyMiwgMjI4LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMjQsIDE3NywgNTcsIDgsIDQsIDEsIDIxNCwgMzMsIAorICAgIDMsIDIyNCwgMTc3LCA1NywgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCAKKyAgICA1NiwgOCwgNiwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDczLCA1NywgOCwgNiwgMSwgCisgICAgMjEyLCAxMjMsIDMsIDI1MSwgMjM5LCAyNiwgNzMsIDU2LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjUxLCAyMzksIDI2LCAKKyAgICA3MywgNTYsIDgsIDYsIDEsIDIxMiwgMTIzLCAzLCAyNDcsIDEyNiwgMjYsIDczLCA1NiwgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIAorICAgIDI0NywgMTI2LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCAKKyAgICA0LCAxLCAyMTIsIDEyMywgMywgNzMsIDI0OCwgMjI4LCAyNiwgNzMsIDU2LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCA3MywgNTYsIAorICAgIDgsIDQsIDEsIDIwNywgODQsIDMsIDczLCA1NiwgOCwgNiwgMSwgMjA3LCA4NCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDcsIAorICAgIDg0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwNywgODQsIDMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgCisgICAgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAyMDcsIDg0LCAzLCAyNDYsIDE0NywgNTcsIDgsIDQsIDEsIDIwNywgODQsIDMsIAorICAgIDI0NiwgMTQ3LCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDEsIDc1LCA1NywgCisgICAgOCwgNiwgMSwgMTA4LCAzLCAyMDUsIDI0MSwgNTcsIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDU3LCA4LCA2LCAxLCAKKyAgICAxMDgsIDMsIDI0NiwgMTQ3LCA1NywgOCwgNCwgMSwgMTA4LCAzLCAyNDYsIDE0NywgNTcsIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDQsIDEsIDEwOCwgMywgMjA1LCAyNDEsIDI2LCAxNjksIDgsIDYsIDEsIDEwOCwgMywgCisgICAgMjIyLCAyMjksIDI2LCAyNDEsIDc0LCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjQxLCA3NCwgOCwgNiwgMSwgCisgICAgMjAzLCAxNjksIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMDMsIDE2OSwgMywgMjA1LCAyNDAsIDgsIDYsIDEsIDIwMywgMTY5LCAKKyAgICAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMSwgMTQ4LCAzLCAyMzUsIDczLCAKKyAgICA4LCA0LCAxLCAyMDEsIDE0OCwgMywgMjM1LCA3MywgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDE2OSwgOCwgNCwgMSwgMjAxLCAKKyAgICAxNDgsIDMsIDE2OSwgOCwgNiwgMSwgMjAxLCAxNDgsIDMsIDI0MSwgNzQsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAyNDEsIAorICAgIDc0LCA4LCA2LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU2LCA4LCA2LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAyMDEsIDE0OCwgMywgNzMsIDU3LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgCisgICAgNzMsIDU2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgNzMsIDU2LCA4LCA2LCAxLCAyMDAsIDE5NiwgMywgMjQxLCA3NCwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTYsIDMsIDI0MSwgNzQsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTYsIDgsIDQsIDEsIDIwMCwgCisgICAgMTI0LCAzLCA3MywgNTYsIDgsIDYsIDEsIDE5OSwgMTU4LCAzLCAyNDYsIDE0NiwgOCwgNCwgMSwgMTk5LCAxNTgsIDMsIAorICAgIDI0NiwgMTQ2LCA4LCA2LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgNzMsIDU3LCA4LCAKKyAgICA2LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxOTksIDE1OCwgMywgMjI0LCAxNzcsIDU3LCA4LCAKKyAgICA0LCAxLCAyMzQsIDI0OCwgMywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAyMDcsIDg0LCAzLCAyNDEsIDc0LCA4LCA0LCAxLCAKKyAgICAyMDEsIDE0OCwgMywgMjEzLCAyNywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMTMsIDI3LCA1NiwgOCwgNCwgMSwgMzUsIAorICAgIDMsIDUxLCAxNjcsIDIxMywgMjYsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDczLCA1NiwgOCwgNCwgMSwgMTY4LCAKKyAgICAyMTIsIDEyMywgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDE2OCwgMjEyLCAxMjMsIDMsIDEyMiwgOTcsIDgsIDYsIDEsIAorICAgIDIxMCwgNzksIDIxMiwgMTIyLCA4LCA0LCAxLCAyNDEsIDEzNiwgOCwgNiwgMSwgMzUsIDMsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDczLCA1NywgOCwgNiwgMSwgMzUsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDIzMywgMTg3LCAKKyAgICA1NiwgOCwgNiwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAxNjksIAorICAgIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzNSwgCisgICAgNzMsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMzUsIDMsIDI0NiwgMTQ3LCAKKyAgICAyNiwgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAzNSwgMywgMjQ2LCAxNDcsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMzUsIDMsIAorICAgIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDYsIDE0NywgMjYsIDczLCA1NywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0NiwgMTQ3LCAyNiwgNzMsIDU3LCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDE2OSwgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAxNjksIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgCisgICAgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDIzMywgMTg3LCA1NiwgCisgICAgOCwgNCwgMSwgMzUsIDMsIDI0OCwgNTgsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgCisgICAgMjA1LCAyNDAsIDgsIDQsIDEsIDM1LCAzLCAyNDgsIDU4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDM1LCAzLCAyNDgsIDU4LCAKKyAgICAyNiwgNzMsIDU3LCA4LCA0LCAxLCAzNSwgMywgMjQ4LCA1OCwgMjYsIDczLCA1NywgOCwgNiwgMSwgMTk3LCAzLCA3MywgNTcsIAorICAgIDgsIDQsIDEsIDE5NywgMywgNzMsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDE5NywgMywgMjA1LCAyNDAsIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgCisgICAgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIAorICAgIDMsIDI0NiwgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIAorICAgIDEsIDE5NywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgCisgICAgMSwgMjMzLCAxOSwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAyMzMsIDE5LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIzMywgCisgICAgMTksIDMsIDczLCA1NywgOCwgNiwgMSwgMTYzLCAzLCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgNzMsIDU3LCA4LCA2LCAxLCAKKyAgICAxNjMsIDMsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDQsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgCisgICAgMjQ2LCAxNDcsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgMTQ3LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgCisgICAgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAyNDYsIDE0NywgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDI0NiwgCisgICAgMTQ3LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE2MywgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMjQ2LCAxNDcsIDI2LCA3MywgNTcsIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCAxNjksIDgsIDYsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCAyMzUsIDczLCA4LCA0LCAKKyAgICAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgOCwgNiwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgCisgICAgMTg3LCA1NiwgOCwgNCwgMSwgMTYzLCAzLCAyMzMsIDEyNSwgMjYsIDIzMywgMTg3LCA1NiwgOCwgNiwgMSwgMTYzLCAzLCAKKyAgICAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxNjMsIDMsIDIzMywgMTI1LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIAorICAgIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIDQsIDEsIDE2MywgMywgMjMzLCAxMjUsIDI2LCA3MywgNTcsIDgsIAorICAgIDYsIDEsIDEwOCwgMywgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDczLCA1NywgOCwgNiwgMSwgMTA4LCAzLCAyMzMsIDE4NywgCisgICAgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxODcsIDU2LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCAKKyAgICA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDEwOCwgMywgMjMzLCAxMjUsIDI2LCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDEwOCwgCisgICAgMywgMjMzLCAxMjUsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTA4LCAzLCAyMzMsIDEyNSwgMjYsIDIwNSwgMjQwLCA4LCA2LCAKKyAgICAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCA4LCA0LCAxLCAxMDgsIDMsIDIzMywgMTI1LCAyNiwgNzMsIDU3LCAKKyAgICA4LCA2LCAxLCAyMDAsIDEyNCwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIzNSwgNzMsIDgsIDYsIDEsIAorICAgIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCA3MywgNTcsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMzMsIDE4NywgNTYsIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMzMsIDE4NywgNTYsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAKKyAgICAyMDUsIDI0MCwgOCwgNCwgMSwgMjAwLCAxMjQsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAyMjEsIDIwMywgMjI0LCAxMzksIDgsIAorICAgIDQsIDEsIDIyMSwgMjAzLCAyMjQsIDEzOSwgOCwgNiwgMSwgMjIxLCAyMDMsIDIwMywgMTY4LCA4LCA0LCAxLCAyMjEsIDIwMywgCisgICAgMjAzLCAxNjgsIDgsIDYsIDEsIDIwMCwgMTI0LCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAyMDAsIDEyNCwgMywgMjI0LCA3NCwgCisgICAgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MSwgMzEsIDQsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzQsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAKKyAgICAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTQsIDIyOSwgMjYsIAorICAgIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNiwgMSwgMjUxLCAKKyAgICAxMTMsIDMsIDIxNCwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIxNCwgMjI5LCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCAKKyAgICA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIAorICAgIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIAorICAgIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjgsIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjQxLCAyNDEsIAorICAgIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCAxMjUsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgMTI1LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNiwgCisgICAgMSwgMjM4LCAxMjUsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQxLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgNCwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAKKyAgICAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjI4LCA0MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIyOCwgNDIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMjgsIAorICAgIDQyLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgCisgICAgMjAsIDMxLCA0LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgCisgICAgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgCisgICAgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA2LCAxLCAyMTcsIDgyLCAzLCAyMTQsIDIyOCwgMzEsIDYsIDEsIAorICAgIDIxNywgODIsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNiwgCisgICAgMSwgMjE3LCA4MiwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4MiwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIAorICAgIDIyMSwgMywgMjE0LCAyMjgsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NCwgMzEsIAorICAgIDQsIDEsIDIwMywgMjIxLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIwLCAzMSwgNCwgCisgICAgMSwgMjAzLCAyMjEsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MSwgCisgICAgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIDMxLCA2LCAxLCAyMDMsIDIyMSwgMywgMjQxLCAKKyAgICAyNDIsIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA0LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNCwgMSwgMjE3LCAKKyAgICA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCAKKyAgICA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOCwgCisgICAgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc0LCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzEsIDMxLCAKKyAgICA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjAsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIAorICAgIDIzMSwgMzEsIDQsIDEsIDIzOCwgMTI1LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgMjM4LCAxMjUsIDMsIDIxNiwgMjMxLCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjI4LCAKKyAgICA0MiwgMywgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjE3LCA4MiwgMywgCisgICAgMjAzLCA3NCwgMzEsIDQsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIwMywgNzQsIAorICAgIDMxLCA0LCAxLCAyMDMsIDIyMSwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc0LCAzMSwgNCwgMSwgCisgICAgMjE3LCA4NCwgMywgMjE2LCAyMzEsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAxOTksIDIxOSwgMzEsIAorICAgIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCAKKyAgICA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAKKyAgICAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyNTEsIDExMywgCisgICAgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIAorICAgIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIxNCwgMjI5LCAyNiwgCisgICAgMjE2LCAyMzIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDI1MSwgMTEzLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAKKyAgICAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIAorICAgIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjQxLCAyNDIsIDI2LCAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA0LCAxLCAKKyAgICAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDE5OSwgMjE5LCAzMSwgCisgICAgNCwgMSwgMjM4LCA4MCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgCisgICAgMjYsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIAorICAgIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAKKyAgICAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgCisgICAgMjQyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyMTQsIDIyOSwgMjYsIDIwMywgNzUsIDI2LCAyMTQsIAorICAgIDI0MiwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDI0MSwgMjQyLCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgCisgICAgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgCisgICAgMjQxLCAyNDIsIDI2LCAyMTYsIDIzMiwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjM4LCA4MCwgMywgMjE0LCAyMjksIDI2LCAKKyAgICAyMTYsIDIxLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjEsIDI2LCAKKyAgICAyMTQsIDI0MiwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE0LCAyMjksIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIAorICAgIDEsIDIxNywgODQsIDMsIDI0MSwgMjQyLCAyNiwgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIAorICAgIDMsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIAorICAgIDI2LCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNCwgMjQyLCAKKyAgICAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNCwgCisgICAgMjI5LCAyNiwgMjAzLCA3NSwgMjYsIDIxNCwgMjQyLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjQxLCAyNDIsIDI2LCAyMDMsIAorICAgIDc1LCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAKKyAgICAyNDIsIDMxLCA2LCAxLCAyMTcsIDg0LCAzLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMyLCAyNiwgMjE0LCAyNDIsIDMxLCA2LCAKKyAgICAxLCAyMTcsIDg0LCAzLCAyMTQsIDIyOSwgMjYsIDIxNiwgMjEsIDI2LCAyMTQsIDI0MiwgMzEsIDYsIDEsIDIxNywgODQsIDMsIAorICAgIDI0MSwgMjQyLCAyNiwgMjE2LCAyMSwgMjYsIDIxNCwgMjQyLCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgCisgICAgNCwgMSwgMjUxLCAxMTMsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzUsIDI2LCAxOTksIAorICAgIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAxOTksIDIxOSwgMzEsIDQsIDEsIDI1MSwgMTEzLCAzLCAyMTYsIDIzMiwgCisgICAgMjYsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjUxLCAxMTMsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIAorICAgIDIyMiwgMjI4LCAzMSwgNiwgMSwgMjUxLCAxMTMsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE2LCAKKyAgICAyMzEsIDMxLCA2LCAxLCAyNTEsIDExMywgMywgMjE0LCAyNDIsIDMxLCAyMjYsIDU4LCAzMSwgMjE0LCAyNDIsIDMxLCAyMTQsIAorICAgIDIyOCwgMzEsIDIxNiwgMjAsIDMxLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIwMywgCisgICAgNzUsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDE5OSwgMjE5LCAzMSwgNCwgMSwgMjM4LCA4MCwgMywgCisgICAgMjE2LCAyMzIsIDI2LCAxOTksIDIxOSwgMzEsIDQsIDEsIDIzOCwgODAsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMzgsIDgwLCAKKyAgICAzLCAyMTYsIDIxLCAyNiwgMTk5LCAyMTksIDMxLCA2LCAxLCAyMzgsIDEyNSwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIzOCwgCisgICAgMTI1LCAzLCAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIwMywgNzQsIDMxLCA2LCAxLCAyMzgsIDgwLCAzLCAKKyAgICAyMTYsIDIzMSwgMzEsIDYsIDEsIDIzOCwgODAsIDMsIDIxNCwgMjQyLCAzMSwgMjE0LCAyMjksIDI2LCAyMDMsIDc0LCAzMSwgCisgICAgMjE0LCAyMjksIDI2LCAyMTYsIDIzMSwgMzEsIDIxNCwgMjI5LCAyNiwgMjE2LCAyMCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIAorICAgIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAKKyAgICAyNiwgMjAzLCA3NCwgMzEsIDQsIDEsIDIyOCwgNDIsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDQsIDEsIDIyOCwgCisgICAgNDIsIDMsIDIxNiwgMjAsIDMxLCA0LCAxLCAyMjgsIDQyLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIDEsIAorICAgIDIyOCwgNDIsIDMsIDIwMiwgMTcwLCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjIyLCAyMjgsIDMxLCA2LCAxLCAyMjgsIDQyLCAKKyAgICAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjI4LCA0MiwgMywgMjE2LCAyMzEsIDMxLCAyNDEsIDI0MiwgMjYsIDIwMywgNzQsIAorICAgIDMxLCAyNDEsIDI0MiwgMjYsIDIxNiwgMjMxLCAzMSwgMjQxLCAyNDIsIDI2LCAyMTYsIDIwLCAzMSwgNCwgMSwgMjAzLCAKKyAgICAyMjEsIDMsIDIwMiwgMTcwLCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDIyMiwgMjI4LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIAorICAgIDI0MSwgNjgsIDI2LCAyMDMsIDc0LCAzMSwgNCwgMSwgMjAzLCAyMjEsIDMsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIAorICAgIDQsIDEsIDIxMywgOTEsIDMsIDIxNCwgMjI4LCAzMSwgNCwgMSwgMjEzLCA5MSwgMywgMjQxLCAyNDEsIDMxLCA0LCAxLCAKKyAgICAyMDMsIDIyMSwgMywgMjE2LCAyMCwgMzEsIDQsIDEsIDIwMywgMjIxLCAzLCAyNDEsIDY4LCAyNiwgMjE2LCAyMCwgMzEsIDYsIAorICAgIDEsIDIwMywgMjIxLCAzLCAyMDIsIDE3MCwgMzEsIDYsIDEsIDIwMywgMjIxLCAzLCAyMjIsIDIyOCwgMzEsIDYsIDEsIDIwMywgCisgICAgMjIxLCAzLCAyMDMsIDc0LCAzMSwgNiwgMSwgMjAzLCAyMjEsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjEzLCA5MSwgMywgCisgICAgMjQxLCAyNDEsIDMxLCAyNDEsIDY4LCAyNiwgMjAzLCA3NCwgMzEsIDI0MSwgNjgsIDI2LCAyMTYsIDIzMSwgMzEsIDIwMywgCisgICAgNzQsIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAyMDMsIDc1LCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIDg0LCAzLCAKKyAgICAxOTksIDIxOSwgMzEsIDQsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMyLCAyNiwgMTk5LCAyMTksIDMxLCA0LCAxLCAyMTcsIAorICAgIDg0LCAzLCAyMTYsIDIwLCAzMSwgNCwgMSwgMjE3LCA4NCwgMywgMjE2LCAyMSwgMjYsIDE5OSwgMjE5LCAzMSwgNiwgMSwgCisgICAgMjE3LCA4MiwgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODIsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgCisgICAgMywgMjAzLCA3NCwgMzEsIDYsIDEsIDIxNywgODQsIDMsIDIxNiwgMjMxLCAzMSwgNiwgMSwgMjE3LCA4NCwgMywgMjE0LCAKKyAgICAyNDIsIDMxLCAyMTYsIDIzMSwgMzEsIDI0MSwgMjQxLCAyMzgsIDE4MCwgMjE0LCA5NCwgMjM4LCAxOTEsIDIxNCwgOTQsIAorICAgIDIzOCwgMTgwLCAyMDgsIDI0NCwgMjM4LCAxOTEsIDIwOCwgMjQ0LCAyMDYsIDQxLCAyMDgsIDI0NCwgMjM2LCAyMjcsIDIwOCwgCisgICAgMjQ0LCAyMDksIDEwNCwgMjA4LCAyNDQsIDIzNywgMTAyLCAyMDgsIDI0NCwgMjE0LCAyMTIsIDIwOCwgMjQ0LCAyMDYsIDc3LCAKKyAgICAyMDgsIDI0NCwgMjM0LCAyMjIsIDIwOCwgMjQ0LCAxOTksIDgyLCAyMDEsIDI1LCAyMDgsIDI0NCwgMTk5LCA4MiwgMjAxLCAKKyAgICAyNSwgMjE4LCAyMzIsIDE5OSwgODIsIDIwMSwgMjUsIDIyNywgMTYxLCAyMjUsIDE5LCA4MSwgMjEzLCAzNywgODEsIDIzMywgCisgICAgMzMsIDIxOCwgMjMzLCAyMzMsIDMzLCAyMzcsIDEwMiwgMjQxLCAyNDQsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjM4LCAxOTEsIAorICAgIDI0MSwgMjQ0LCAyMzMsIDE3NywgMTQ4LCA1MywgODMsIDIyNCwgMTc2LCA1MywgMTI4LCAyMjQsIDE3NiwgNDksIDIwOSwgCisgICAgMTM5LCAyMTQsIDYzLCA4MSwgNTEsIDIwOSwgMTM5LCAyMTQsIDYzLCA4MSwgMjA5LCAxMzksIDIyNCwgNTgsIDIxNCwgNjMsIAorICAgIDgxLCAyMDksIDEzOSwgMjM0LCA1NiwgMjE0LCA2MywgODEsIDQ5LCA1MywgMjE0LCA2MywgODEsIDUxLCA1MywgMjE0LCA2MywgCisgICAgODEsIDUzLCAyMjQsIDU4LCAyMTQsIDYzLCA4MSwgNTMsIDIzNCwgNTYsIDIxNCwgNjMsIDgxLCAyNDIsIDQwLCA1MywgMjQyLCAKKyAgICA0MCwgMjQ4LCAyMCwgMjA1LCA5NSwgMjQ4LCAyMCwgMTEyLCA3MywgMjI1LCAzOCwgMTIwLCA3MywgMjI1LCAzOCwgMjMzLCAKKyAgICAxNzcsIDIzOCwgMTk1LCAyMzMsIDMxLCAyMTUsIDk5LCAyMjQsIDE3NywgMjEwLCAxNTQsIDIxNiwgMTI4LCAyMTAsIDE1NCwgCisgICAgMjI1LCAxOSwgMjM4LCAxODksIDIxMywgMzcsIDIzOCwgMTg5LCAyMTUsIDc4LCAyNDEsIDgsIDIzNiwgMjQwLCAyMjUsIDE5LCAKKyAgICAyMTYsIDIzOSwgMjEzLCAzNywgMjE2LCAyMzksIDIyMCwgMTI0LCAyMTgsIDI0MCwgMjA4LCAyNDQsIDIxNiwgMjgsIDIyMSwgCisgICAgMTcwLCA1NCwgMjE2LCAyOCwgMjA2LCAxNjcsIDIwNiwgNTEsIDU0LCAyMTUsIDE0LCA1MywgMjE1LCAxNCwgMjA1LCA4MywgCisgICAgMjE1LCAxNCwgMjEzLCAxMDUsIDIxNSwgMTQsIDIxMywgMTA1LCA1MywgMjE1LCAxNCwgMjEzLCAxMDUsIDIwNSwgODMsIAorICAgIDIxNSwgMTQsIDI0NywgMTI5LCAyMDksIDEzOSwgMjI1LCAyMywgMjUxLCA3MSwgMjE0LCA2MywgODEsIDIwOSwgMTM5LCAKKyAgICAyMTMsIDQxLCAyNTEsIDcxLCAyMTQsIDYzLCA4MSwgMjEzLCAxNjYsIDgxLCA1MywgMjM4LCA0MywgODEsIDIyOCwgNTgsIAorICAgIDIxNiwgMjQxLCAyMDMsIDI0OCwgMTcxLCAyMDYsIDcsIDI0NywgMTMwLCAyMjgsIDc1LCAyMTUsIDk5LCAyNTAsIDE2MywgCisgICAgMjMzLCAzNCwgMjQ4LCAyMCwgMjM2LCAyMTksIDIwOSwgNzUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjE0LCA3MywgNTEsIDUyLCAKKyAgICAyNDgsIDcwLCAzLCAyMTQsIDczLCA1MywgMjE0LCA3OSwgODEsIDIxNCwgNzksIDIzOCwgNDMsIDgxLCAyMzgsIDQzLCAyMTQsIAorICAgIDc5LCA4MSwgMjA1LCAyMTYsIDIsIDIzOCwgODEsIDIxMywgMTA1LCAyMTUsIDE2MywgNTQsIDYzLCA5OCwgMjQ4LCAyMCwgCisgICAgNjMsIDg3LCAyNDgsIDIwLCAxMjgsIDI1MCwgMTY1LCAyMTMsIDEwNSwgMjEwLCAxNjcsIDI0NiwgMTExLCAyMDMsIDIyOCwgCisgICAgMTIwLCAyNTAsIDE2NCwgMjUxLCAxMjgsIDIwMiwgMjQ3LCAyNDYsIDY4LCAyMjEsIDE1NywgNTQsIDIwNywgMTY3LCAyNDEsIAorICAgIDI0NCwgMjI4LCA1MCwgMjAzLCAyNDgsIDIzNywgMjUsIDIxNCwgMjEyLCA4MSwgMTI2LCA3MywgMjE0LCAyMTEsIDIxNCwgCisgICAgOTAsIDIxNSwgMTQsIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCAyMTQsIDIxMSwgMTIwLCA3MywgMjE0LCAKKyAgICAyMTEsIDIzNiwgMjI5LCA3MywgODEsIDIzOSwgMTgwLCAyNDIsIDIzNCwgMjA1LCA5NCwgODMsIDIzNiwgMjI5LCAyNDAsIAorICAgIDE4MCwgMjIyLCA2NiwgMTMsIDIwOCwgMjQ0LCAyMDAsIDIzOCwgMjI3LCAxNjEsIDIzNiwgMTgxLCAyNTEsIDgsIDIyOCwgCisgICAgNDgsIDIwNSwgMjMyLCAyMjgsIDQ4LCAyMTAsIDE1NCwgMjI4LCA0OCwgMjE1LCAxMTMsIDIyNSwgMTksIDIyOCwgMTgsIAorICAgIDIxMywgMzcsIDIyOCwgMTgsIDIzNywgNzMsIDIwOCwgMzMsIDIyOCwgMTgsIDIxNSwgNzgsIDI0MSwgOCwgMjI4LCAxOCwgCisgICAgMjI4LCA4NywgMjA3LCAxMTUsIDIwNywgMTg0LCAyNTEsIDI0MSwgMjA3LCAxMTUsIDIwNywgMTg0LCAyMjgsIDg3LCA5LCAKKyAgICAyMzYsIDI0MiwgMjEwLCA4NCwgMjUxLCAyNDEsIDksIDIzNiwgMjQyLCAyMTAsIDg0LCAyMjAsIDExOCwgMTcsIDIxMCwgODUsIAorICAgIDIxOCwgMjM2LCAxNywgMjEwLCA4NSwgMjA3LCAyMTMsIDE5OSwgODEsIDIwNywgMjEzLCA4LCA0LCAxLCA3MCwgMjA3LCAKKyAgICAyMTMsIDE0OSwgMjA3LCAyMTMsIDE2NCwgMjA3LCAyMTMsIDE4NywgMjA3LCAyMTMsIDIxMCwgMTM1LCAyMDcsIDIxMywgCisgICAgMTkyLCAyMDcsIDIxMywgMjE5LCAxMTMsIDIwNywgMjEzLCA5MywgNTQsIDIwNywgMjEzLCAyMjEsIDE1NiwgMjA3LCAyMTMsIAorICAgIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTMsIDQ5LCAyMTYsIDExNSwgMjA3LCAyMTMsIDUxLCAyMTYsIDExNSwgMjA3LCAyMTMsIAorICAgIDgsIDQsIDEsIDIyMCwgMjE0LCAyMDgsIDQsIDE5OSwgODEsIDIwOCwgNCwgMTAyLCAyMDgsIDQsIDEwNSwgMjA4LCA0LCAKKyAgICAxNDcsIDIwOCwgNCwgMTQ5LCAyMDgsIDQsIDE2NCwgMjA4LCA0LCAxODcsIDIwOCwgNCwgMjEwLCAxMzUsIDIwOCwgNCwgCisgICAgMTkyLCAyMDgsIDQsIDIxOSwgMTEzLCAyMDgsIDQsIDkzLCA1NCwgMjA4LCA0LCAyMjEsIDE1NiwgMjA4LCA0LCAyMzgsIAorICAgIDEyMiwgNTQsIDIwOCwgNCwgNDksIDIxNiwgMTE1LCAyMDgsIDQsIDUxLCAyMTYsIDExNSwgOCwgMjA4LCA0LCA0LCAxLCA2MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCA3MiwgOCwgMjA4LCA0LCA0LCAxLCA3NCwgOCwgMjA4LCA0LCA0LCAxLCAyMDAsIDE5NSwgOCwgCisgICAgMjA4LCA0LCA0LCAxLCAyMTEsIDIxOCwgOCwgMjA4LCA0LCA0LCAxLCAyMzQsIDI0NywgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIAorICAgIDExOCwgOCwgMjA4LCA0LCA0LCAxLCAxNTYsIDgsIDIwOCwgNCwgNCwgMSwgMjIzLCAyNDMsIDgsIDIwOCwgNCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDgsIDIwOCwgNCwgNCwgMSwgMjE2LCAyMjYsIDgsIDIwOCwgNCwgNCwgMSwgMjEyLCAxMjIsIDgsIDIwOCwgCisgICAgNCwgNCwgMSwgMjA3LCA4MywgMjM4LCA2MCwgNTQsIDI0NiwgODAsIDU0LCAyNDIsIDIxOSwgNTQsIDIzNiwgMjA5LCAyMzYsIAorICAgIDIxMywgNTQsIDIyNCwgMTU2LCA1NCwgMjIxLCAxNzEsIDU0LCAyMjAsIDE0MSwgNTQsIDIxNiwgNSwgNTQsIDIxMiwgMTQ5LCAKKyAgICA1NCwgMjAwLCAyNDYsIDU0LCAyMjAsIDgsIDIxMCwgNTEsIDU0LCAyNDAsIDE4OSwgNTQsIDIzOCwgNjEsIDU0LCAyMjYsIAorICAgIDE0MiwgNTQsIDIwNCwgMjA4LCA1NCwgMjM5LCAxNjMsIDU0LCAyMzUsIDI0NiwgMjE2LCA0MCwgNTQsIDIxNiwgMiwgNTQsIAorICAgIDIzNSwgNDUsIDU0LCAyNTAsIDEyOSwgNTQsIDIzMywgMTAzLCA1NCwgMjQ3LCA3MSwgNTQsIDIyNCwgMTQ2LCAyMDUsIDEzOCwgCisgICAgNTQsIDIwOCwgMjI1LCA1NCwgMjA2LCAxNjQsIDU0LCAyMjgsIDEwMiwgMjEyLCAxNDksIDU0LCAyMDQsIDE4OCwgMjI0LCAKKyAgICAxNTYsIDU0LCAyMTgsIDIyMiwgMTM0LCA1NCwgMjIyLCAxNzgsIDU0LCAyMTIsIDE3MiwgNTQsIDIyNSwgNjcsIDU0LCAzOCwgCisgICAgNDksIDIzNCwgMTYxLCA1NiwgMzgsIDUxLCAyMzQsIDE2MSwgNTYsIDM4LCAxNjgsIDgzLCAyMjQsIDE3NywgMjE2LCAyNDIsIAorICAgIDM4LCAyMDksIDI1MCwgODMsIDIyNCwgMTc3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNDcsIDU1LCA1NiwgMzgsIDI0NiwgMTEyLCAKKyAgICA1NSwgNTYsIDM4LCA0OSwgNTUsIDU2LCAzOCwgNTEsIDU1LCA1NiwgMzgsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjQ2LCAKKyAgICAxMTIsIDIxMywgMjcsIDIxNiwgMjQyLCAzOCwgMjUxLCA0NywgMjEzLCAyNywgMjE2LCAyNDIsIDM4LCAxMjYsIDE5MCwgNTYsIAorICAgIDM4LCAyMzYsIDIyOSwgMTkwLCA1NiwgMzgsIDIzOCwgMTc1LCAyNDYsIDE1NSwgMzgsIDIzOCwgMTc1LCAyMDgsIDE5MywgCisgICAgMzgsIDIzOCwgMTc1LCAyNDEsIDY0LCAzOCwgMjM4LCAxNzUsIDI0NiwgMTU2LCAyNDksIDEyNCwgMzgsIDQ5LCA1MSwgNTUsIAorICAgIDU2LCAzOCwgMjM4LCAxNzUsIDIxMSwgMjA5LCAzOCwgMjM4LCAxNzUsIDIyNiwgMjEwLCAzOCwgMjM4LCAxNzUsIDIwMywgCisgICAgMjE4LCAyMTUsIDk2LCAyMDUsIDk4LCAzOCwgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNiwgMjQyLCAzOCwgNTMsIDgzLCAyMDgsIAorICAgIDQ3LCAyMTYsIDI0MiwgMzgsIDI1MSwgNTcsIDk5LCAzOCwgMjA1LCA4MywgMjAzLCAyNTAsIDM4LCAyMDEsIDI4LCAyNDgsIAorICAgIDUxLCA1NiwgMzgsIDk4LCA1NSwgMjE2LCAyNDIsIDM4LCAxNjgsIDUzLCAyMDksIDE3LCAyMTYsIDI0MiwgMzgsIDg3LCAKKyAgICAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMzksIDE2NSwgMzgsIDQ5LCAKKyAgICA1NSwgNTcsIDM4LCA1MSwgNTUsIDU3LCAzOCwgMjUwLCAxNjYsIDU2LCAyNTEsIDI0NywgMjE3LCAxMTcsIDI1MSwgMjMxLCAKKyAgICAyMDUsIDE4NiwgMjA2LCAxMDcsIDIwOCwgMTMsIDE3NSwgNiwgMjQ3LCAyMjMsIDI0MSwgMTU1LCAyNDcsIDYxLCAyNDcsIAorICAgIDU2LCAyMjQsIDE3NywgOTksIDI0NywgMTMxLCAyMTcsIDExNywgMjQ3LCAxODIsIDIwNCwgNCwgMjM4LCA2MiwgMjQzLCA1MCwgCisgICAgMjExLCAyMDYsIDI0MSwgMTU1LCAyMzcsIDE3NywgMTM1LCA0LCAyMzYsIDE1NiwgMTM1LCA2LCAyMzQsIDI0NywgMjQ4LCAKKyAgICAxNDIsIDYsIDIzNCwgMjQ3LCAxNzUsIDYsIDIzNCwgMjQ3LCAyMTUsIDEzMCwgMjQzLCA1MCwgMjE1LCAxMzAsIDI0MywgNTEsIAorICAgIDExOSwgMTIwLCAyMTUsIDIwNCwgMTM1LCA2LCA3MCwgMjQ4LCAxNDIsIDYsIDcwLCAxMzUsIDYsIDE1NiwgMTM1LCA0LCAKKyAgICAxNTYsIDIyNSwgMTkzLCA2OCwgMjQ5LCA3NywgOTksIDE3NSwgNiwgMjIwLCAyMTQsIDIxOCwgOTEsIDU0LCAyMDksIDEsIAorICAgIDIxMywgMTc4LCAyNDMsIDE4LCAxMzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNiwgMjI2LCAxNzUsIDYsIDIxNCwgMTY3LCAKKyAgICAxMzUsIDYsIDE0NiwgMjQ4LCAxNDIsIDYsIDE0NiwgMTc1LCA2LCAxNDYsIDIxNSwgMjEsIDIwNiwgMjU1LCAyMTMsIDExOCwgCisgICAgMjEwLCAxNDYsIDgxLCAyMDYsIDE3NiwgNTQsIDIwNSwgMTI4LCAxMzQsIDU0LCAyMDMsIDQzLCAxNzUsIDYsIDE5OSwgMTU3LCAKKyAgICAyMTcsIDIsIDU0LCAyMTcsIDEwNywgNTQsIDIyOCwgNTAsIDIxNywgMTA3LCA1NCwgMjQ4LCAxNDIsIDYsIDE5OSwgMTU3LCAKKyAgICAyMDQsIDE4NSwgMzEsIDQsIDEsIDIyOCwgNDEsIDIyNiwgMjUxLCA1NCwgMjUxLCA2NiwgNTQsIDEzNSwgNiwgMjUwLCAxMDMsIAorICAgIDI0OCwgMTQyLCA2LCAyNDcsIDIyMywgMjM4LCA4NiwgOTksIDEzNSwgNCwgNzIsIDEzNSwgNiwgNzIsIDEzNSwgNiwgMjM4LCAKKyAgICA1LCAyMDQsIDE4NSwgNiwgMjM4LCA1LCAxMzUsIDYsIDIyMywgMjQzLCAxMzUsIDQsIDc0LCAxNDAsIDk5LCAyNDgsIDIxMSwgCisgICAgOTksIDIzNSwgMTQ4LCA5OSwgMjQyLCAyNCwgOTksIDIyOCwgOTIsIDIwOCwgMjU1LCAyMTIsIDIyOCwgNiwgMjE0LCAxNjcsIAorICAgIDIzNywgMTgwLCA1NCwgMTc1LCA0LCAyMTUsIDIwNCwgMTc1LCA0LCAyMzYsIDYwLCAxNzUsIDYsIDIzNiwgNjAsIDE3NSwgNiwgCisgICAgMjE1LCAyMDQsIDE3NSwgMjIwLCAyMTMsIDIwNywgMjMxLCAyMDQsIDE4NSwgNDMsIDYsIDIzNiwgMTU2LCAyMDQsIDE4NSwgCisgICAgNDMsIDYsIDE1NiwgMjEzLCAxMDUsIDQzLCA2LCAxNTYsIDIwNCwgMTg1LCA0MywgNiwgMjAwLCAxMjMsIDE3NSwgMzksIDYsIAorICAgIDI0MiwgMTUzLCAxNzUsIDM5LCA0LCAyNDIsIDE1MywgMTc1LCAzOSwgNCwgNzIsIDE3NSwgMzksIDQsIDcwLCAxNzUsIDM5LCAKKyAgICA0LCAyMjcsIDI1MSwgMjE0LCAyNDUsIDIyNCwgMTc2LCAyMDQsIDE4NSwgMjUxLCA4OSwgMjE2LCAyOCwgNTQsIDI1MSwgCisgICAgMTUzLCAyMDQsIDE4NSwgNCwgMjM4LCA1LCAxNiwgMzYsIDIxMiwgMjIsIDIwOCwgMjU1LCAyMDEsIDE2NCwgMjM2LCAyMTksIAorICAgIDExMiwgMjEwLCAxMzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMTksIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAKKyAgICAxMTIsIDIwNiwgMTU3LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA2LCA3NCwgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIAorICAgIDIwNiwgNzEsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTEyLCAyMzcsIDEwNywgMjAxLCAxNjQsIDIzNiwgMjE5LCAxMjAsIDIzNywgCisgICAgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDEyNiwgMjM3LCAxMDYsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMjM2LCAyMjksIAorICAgIDIzNywgMTA2LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjA5LCA5NiwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAKKyAgICAyMDksIDk0LCAyMDEsIDE2NCwgMjM2LCAyMTksIDExMiwgMjM4LCAyMjcsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTI2LCAyMzgsIAorICAgIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMzcsIDYxLCAyMzgsIDIyNSwgMjAxLCAxNjQsIDIzNiwgMjE5LCAyMTAsIDEzNiwgCisgICAgMjM4LCAyMjUsIDIzNiwgMjE5LCAyMTgsIDkyLCAxMDIsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMDIsIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxMDUsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDcsIDIxMiwgMjQwLCAyMTgsIDkzLCAxNDksIDIxMiwgMjQwLCAyMTgsIAorICAgIDkzLCAxNjQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxODcsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMTAsIDEzNSwgMjEyLCAyNDAsIAorICAgIDIxOCwgOTMsIDE5MiwgMjEyLCAyNDAsIDIxOCwgOTMsIDIxOSwgMTEzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA2LCAxNjYsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzgsIDE5OSwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNCwgMTY0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMjM3LCAxMDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODIsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMzcsIAorICAgIDYxLCAyMzMsIDgyLCAyMTIsIDI0MCwgMjE4LCA5MywgMTEyLCAyMDYsIDUwLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTAyLCAKKyAgICA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTA1LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTQ3LCA0LCAyMTIsIDI0MCwgMjE4LCAKKyAgICA5MywgMTQ5LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTY0LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMTg3LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMjEwLCAxMzUsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAxOTIsIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAKKyAgICAyMTksIDExMywgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIwNiwgMTY2LCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM4LCAxOTksIAorICAgIDQsIDIxMiwgMjQwLCAyMTgsIDkzLCAyMDQsIDE2NCwgNCwgMjEyLCAyNDAsIDIxOCwgOTMsIDIzNywgMTA0LCA0LCAyMTIsIAorICAgIDI0MCwgMjE4LCA5MywgMTEyLCAyMzMsIDgyLCA0LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjMzLCA4MiwgNCwgCisgICAgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIDExMiwgMjA2LCA1MSwgMjQ3LCAKKyAgICAyMjQsIDI0MiwgMTUzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCA2MSwgMjA2LCA1MCwgMjEyLCAyNDAsIDIxOCwgOTMsIAorICAgIDIwNiwgMTY3LCAyMDYsIDUwLCAyMTIsIDI0MCwgMjE4LCA5MywgMjEzLCAxMDUsIDExMiwgMjMzLCA4MiwgOCwgNCwgMSwgCisgICAgMjEzLCAxMDUsIDI0NywgMjIzLCAyMTIsIDI0MCwgMjE4LCA5MywgMjA5LCAxMDYsIDIyNSwgNjIsIDE5LCAyMTIsIDI0MCwgCisgICAgMjE4LCA5MywgMjM3LCAxMDUsIDIzOSwgMjAsIDE5LCAyMTIsIDI0MCwgMjE4LCA5MywgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDIxMiwgMjQwLCAyMTgsIDkzLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDIwMSwgMTY0LCAyMzYsIDIxOSwgMTk5LCA4MiwgCisgICAgMjA2LCA3MSwgMjA0LCAxODUsIDE3LCAxMDUsIDIwNCwgMTg1LCAxNywgMTQ3LCA5OCwgNDgsIDE4MiwgNDgsIDg3LCA0OCwgCisgICAgMTkxLCA0OCwgNDksIDUxLCA0OCwgMTE1LCAxMjcsIDQ4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIzOSwgMTQsIDQ4LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA0OCwgOTgsIDU1LCAzLCA5NywgODcsIDU1LCAzLCAKKyAgICA5NywgOTgsIDIwMSwgNzgsIDQ4LCA4NywgMjAxLCA3OCwgNDgsIDk4LCAxMjAsIDIzNCwgMTM0LCA0OCwgMTgyLCAxMjAsIAorICAgIDIzNCwgMTM0LCA0OCwgODcsIDEyMCwgMjM0LCAxMzQsIDQ4LCAxOTEsIDEyMCwgMjM0LCAxMzQsIDQ4LCA5OCwgNTUsIDMsIAorICAgIDIwNywgNiwgODcsIDU1LCAzLCAyMDcsIDYsIDk4LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTgyLCA1NSwgMjM2LCAyMDEsIDE0OCwgCisgICAgODcsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxMTUsIDEyNywgNTUsIDMsIDI0OSwgNjQsIAorICAgIDk4LCA1NSwgMywgMTE3LCA4NywgNTUsIDMsIDExNywgOTgsIDU1LCAzLCAyMjQsIDc0LCA4NywgNTUsIDMsIDIyNCwgNzQsIAorICAgIDQ5LCA1MSwgMjAxLCA3OCwgNDgsIDQ5LCA1MSwgNTUsIDMsIDk3LCAxOTEsIDE5OSwgMjcsIDQ4LCAxODIsIDU1LCAzLCAKKyAgICAyMDUsIDIyNCwgMjI1LCAxOCwgMTgyLCA1NSwgMywgMjA1LCAyMjQsIDIxMywgMzUsIDE5MSwgNTUsIDMsIDIwNSwgMjI0LCAKKyAgICAyMjUsIDE4LCAxOTEsIDU1LCAzLCAyMDUsIDIyNCwgMjEzLCAzNSwgODcsIDU1LCAzLCAyNDMsIDE2LCAyMzksIDE2NSwgCisgICAgMTkxLCA1NSwgMywgMjQzLCAxNiwgMjI1LCAxOCwgMjUxLCA0NywgMjA1LCAxNTgsIDIxMCwgMTcwLCA0OCwgMjQ2LCAxMTIsIAorICAgIDIwNSwgMTU4LCAyMTAsIDE3MCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIDIwNSwgMTg2LCAxNjgsIDE0OCwgOTgsIDU1LCAKKyAgICAyMDUsIDE4NiwgMjQ5LCA3NywgMTE5LCA4NywgNTUsIDIwNSwgMTg2LCAxNDgsIDI1MSwgNDcsIDE3NiwgMjQ2LCAxNTYsIAorICAgIDQ4LCAyNDYsIDExMiwgMTc2LCAyNDYsIDE1NiwgNDgsIDk4LCAyMzQsIDE2MSwgMywgMTU0LCAyMDMsIDIxNiwgOTgsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDIzOSwgMTY1LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDIxMywgMzUsIDE4MiwgMjM0LCAxNjEsIDMsIAorICAgIDE1NCwgMjI1LCAxOCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjE2LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMjM5LCAKKyAgICAxNjUsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCAzNSwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMjUsIDE4LCA4NywgCisgICAgNTUsIDExOSwgOTgsIDQ4LCAxODIsIDU1LCA5OCwgNzYsIDE5MSwgNDgsIDk4LCA1NSwgMTE5LCA4NywgNDgsIDk4LCAyMTYsIAorICAgIDE4OCwgMjUwLCAxOTksIDE4MiwgMjE2LCAxODgsIDI1MCwgMTk5LCA4NywgMjE2LCAxODgsIDI1MCwgMTk5LCAxOTEsIDIxNiwgCisgICAgMTg4LCAyNTAsIDE5OSwgOTgsIDIzNCwgMTYxLCAxMTksIDg3LCAyMzQsIDE2MCwgODcsIDIzNCwgMTYxLCAxMTksIDk4LCAKKyAgICAyMzQsIDE2MCwgOTgsIDUzLCA1NSwgMywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA5NywgODcsIDUzLCA1NSwgMywgOTcsIAorICAgIDk4LCA1MywgNDgsIDE4MiwgNTMsIDQ4LCA4NywgNTMsIDQ4LCAxOTEsIDUzLCA0OCwgNDksIDUxLCA1MywgNDgsIDExNSwgCisgICAgMTI3LCA1MywgNDgsIDE1NywgMjAxLCA0OCwgNTMsIDQ4LCAxNTcsIDIzOSwgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIzOSwgCisgICAgMTQsIDUzLCA0OCwgMjA4LCAyNTQsIDIwMSwgNDgsIDUzLCA0OCwgOTgsIDIwNSwgODMsIDQ4LCA4NywgMjA1LCA4MywgNDgsIAorICAgIDk4LCAyMDgsIDE4NiwgNDgsIDg3LCAyMDgsIDE4NiwgNDgsIDE4MiwgNTUsIDMsIDUzLCA5NywgMTkxLCA1NSwgMywgNTMsIAorICAgIDk3LCA5OCwgMjQxLCAyNDMsIDQ4LCAxODIsIDI0MSwgMjQzLCA0OCwgODcsIDI0MSwgMjQzLCA0OCwgMTkxLCAyNDEsIDI0MywgCisgICAgNDgsIDk4LCA1NSwgMjA1LCAxODYsIDE0OCwgODcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgNjQsIDQ4LCAxODIsIDY0LCAKKyAgICA0OCwgODcsIDY0LCA0OCwgMTkxLCA2NCwgNDgsIDE4MiwgNjQsIDU1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDY0LCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgMTgyLCA2NCwgNTUsIDIxNywgNzksIDIxNiwgNjUsIDMsIDIzMywgMTc3LCAxNDgsIDE4MiwgCisgICAgNjQsIDU1LCAyMTcsIDc5LCAyMTYsIDY1LCAzLCA4MywgMTQ4LCAxODIsIDY0LCA1MywgNDgsIDE4MiwgNjQsIDUzLCA1NSwgCisgICAgMjE3LCA3OSwgMjE2LCA2NCwgODcsIDY0LCA1NSwgMjM2LCAyMDEsIDIwMSwgMTAyLCAxNTcsIDIwMSwgNDgsIDU1LCAyMDUsIAorICAgIDE4NiwgMjQzLCAxNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDU1LCAyMDUsIDE4NiwgMjQzLCAxNSwgMTE1LCAxMjcsIDY0LCA0OCwgCisgICAgNTEsIDU1LCAzLCA0LCAyNDYsIDE1NSwgMTkxLCA1NSwgOTgsIDc2LCAxODIsIDQ4LCAxMjYsIDg3LCAyNTAsIDE5OSwgOTgsIAorICAgIDU1LCAzLCA4MywgOTcsIDg3LCA1NSwgMywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA4MywgOTcsIDk4LCA1NSwgMywgNTMsIAorICAgIDgzLCA5NywgODcsIDU1LCAzLCA1MywgODMsIDk3LCA0OSwgNTEsIDU1LCAzLCA1MywgODMsIDk3LCA5OCwgMjE3LCA1MSwgCisgICAgNDgsIDg3LCAyMTcsIDUxLCA0OCwgNDksIDUxLCAyMTcsIDUxLCA0OCwgMzYsIDI1MSwgMTI0LCAyNDYsIDY1LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMjA2LCA5NywgMjM4LCAzOCwgMjA2LCA5NywgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzgsIDM5LCAKKyAgICAyMzgsIDE4MSwgMjEwLCAxNDEsIDIyOCwgMTA2LCAyMjAsIDE1MiwgMjM4LCAyMDIsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMjUxLCA4NiwgMjM4LCAyMDIsIDIxNywgMTE3LCA0LCAyMzgsIDIwMiwgMjE3LCAxMTcsIDI0MywgNDQsIDI1MCwgMTg5LCAKKyAgICAyMjIsIDQ0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDI0MywgNDYsIDI1MCwgMTg5LCAyMjIsIDQ0LCA0LCAyNDMsIDQ0LCAyNTAsIAorICAgIDE4OSwgMjIyLCA0NCwgMjM4LCAxNzEsIDc2LCAyMTQsIDI0NywgMjIwLCAyMTMsIDIxNSwgMSwgMjIwLCAyMTMsIDI0MywgCisgICAgMjEsIDIyMCwgMjEzLCAyMDcsIDIzMSwgMjIxLCAxNTcsIDU0LCAyMjEsIDE1NSwgNTQsIDczLCAyMTUsIDExMywgMjQwLCAKKyAgICAyMzUsIDIwOSwgNzUsIDIxMCwgMTQyLCAyMjEsIDE1NiwgMjUwLCAxNjYsIDIxNywgNDMsIDIxMywgMjcsIDIxNywgNDMsIAorICAgIDI0OCwgMjEsIDIxNywgNDMsIDUyLCAyMTIsIDIzNCwgMjQyLCAyMTAsIDIxMiwgMjM0LCAyMzYsIDIyMiwgMjEyLCAyMzQsIAorICAgIDIxNCwgMjQzLCAxMzgsIDIyOCwgOTQsIDUxLCAyNTEsIDcwLCAyNTEsIDcwLCAyMjIsIDczLCAyNTEsIDcwLCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MCwgMjQwLCAyMzcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDEsIDIxNiwgMTIxLCAxMzgsIDIxOCwgMjE1LCAKKyAgICAyMTYsIDEyMSwgMTM4LCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyMTcsIDMzLCAyMjgsIDU1LCAyMDMsIDI0MSwgCisgICAgMjI4LCA2OSwgNTMsIDIyOCwgNjksIDIwNSwgODMsIDIyOCwgNjksIDI0MywgMzgsIDIyOCwgNjksIDIwNywgMjAzLCAyMjgsIAorICAgIDY5LCAyMDIsIDE4MSwgMjI4LCA2OSwgMjQ2LCAxMTIsIDIyOCwgNjksIDI0NiwgMTEyLCAyNDMsIDM4LCAyMjgsIDY5LCAKKyAgICAyNTEsIDQ3LCAyNDMsIDM4LCAyMjgsIDY5LCAyMDYsIDk2LCAyNDgsIDI1NCwgMjEzLCAyMDAsIDIxNCwgMjQ0LCA3MywgCisgICAgMjIxLCAxNTYsIDIzOCwgNDYsIDIzNSwgMjUyLCAyMTQsIDI0NCwgMjMzLCAxOTIsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMTMsIAorICAgIDEwNSwgMjA1LCAyNDAsIDIyOCwgNTAsIDIyNSwgNDcsIDIxMiwgMTIyLCAyMDksIDE0MSwgMjAxLCA3NywgMjAwLCAyMjYsIAorICAgIDIxNSwgMSwgMjE4LCAyMTUsIDIwNSwgMjQwLCAyMjEsIDE1NywgMjA1LCAyNDAsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjE4LCAKKyAgICAyMTUsIDI1MCwgMTU5LCAxNjAsIDEzOCwgMjUxLCA0LCAxNjAsIDEzOCwgMjUxLCA0LCAyNDcsIDI0NywgMjE4LCAyMTUsIAorICAgIDI1MSwgMjQwLCAxNjAsIDEzOCwgMjIwLCAyNiwgMjUxLCA0LCAyMTgsIDIyNCwgMjUxLCAyNDAsIDE2MCwgMTM4LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDIxOCwgMjE1LCAyNTEsIDExNywgMTYwLCAxMzgsIDI1MSwgMTE3LCAxNjAsIDIxNywgMzQsIDE2MCwgCisgICAgMTM4LCAyMDUsIDgzLCAyMDUsIDI0MCwgMjUxLCAxMjUsIDE2MCwgMTM4LCAyMzgsIDExNywgMTM4LCAyMzUsIDI1MSwgMjM4LCAKKyAgICAxMTcsIDEzOCwgMjQxLCA0OSwgMjQ4LCAyMDUsIDI1MSwgNiwgMjA2LCAxMDcsIDIyNCwgMTg0LCAyMzUsIDI1MSwgMTYwLCAKKyAgICAxMzgsIDI1MSwgNCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjA2LCAxMDcsIDIyOCwgMTMzLCAyMTcsIDExNywgMjI4LCAKKyAgICAxMzMsIDc2LCAyMTcsIDM0LCAyNTEsIDQsIDE2MCwgMTM4LCAyNDYsIDgwLCAyMzgsIDEyMSwgMjM4LCAxMjIsIDI0NiwgNzksIAorICAgIDIxMywgMjcsIDIyOCwgMTE4LCAxNjAsIDEzOCwgMjEzLCAyNywgMTYwLCAxMzgsIDI0MywgOSwgMTM4LCAyMzgsIDg1LCAKKyAgICAyMzgsIDEyMCwgMTM4LCAyMDgsIDExMCwgMjM4LCAxMjEsIDI0MSwgMTM3LCAxNjAsIDEzOCwgMTYwLCAyMDUsIDE4NiwgCisgICAgMjQ3LCAyMzUsIDI0MSwgMTU2LCAyMjIsIDczLCAyNDcsIDIzNCwgMjE0LCA3NywgMTYwLCAxMzgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjMyLCAyMjMsIDEzOCwgMjE4LCAyMTUsIDIzMiwgMjIzLCAxMzgsIDIwOCwgNTQsIDIzOCwgMTE3LCAxMzgsIDIyNCwgCisgICAgMjQxLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIyNCwgMjQxLCAxMTksIDE2MCwgCisgICAgMTM4LCAyMzUsIDY3LCAxMTksIDE2MCwgMTM4LCAyMjQsIDI0MSwgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjM1LCAKKyAgICA2NywgMjQ3LCAyNDcsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAzNSwgMjI0LCAyNDAsIDIyMSwgMzUsIDIzNSwgNjYsIAorICAgIDI0OCwgMjA1LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjE4LCAyMTUsIDIyNCwgMjQwLCAyMTgsIDIxNSwgMjM1LCA2NiwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjIwLCAyNiwgMjM1LCA2NywgMjE4LCAyMjQsIDE2MCwgCisgICAgMTM4LCAyMjQsIDI0MSwgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjM4LCAxMTcsIDEzOCwgCisgICAgMjIwLCAyNiwgMjI0LCAyNDEsIDIxOCwgMjI0LCAyMzgsIDExNywgMTM4LCAyMjAsIDI2LCAyMzUsIDY3LCAyMTgsIDIyNCwgCisgICAgMjM4LCAxMTcsIDEzOCwgMjI0LCAyNDEsIDIxNywgMzQsIDIzNSwgNjYsIDIzNSwgNjcsIDIxNywgMzQsIDIyNCwgMjQwLCAKKyAgICAyMjAsIDI2LCAyMjQsIDI0MSwgMjE4LCAyMjQsIDIzNSwgNjYsIDIyMCwgMjYsIDIzNSwgNjcsIDIxOCwgMjI0LCAyMjQsIAorICAgIDI0MCwgMjE1LCAyOCwgMjA3LCAyNTAsIDIxNSwgMjksIDIxNywgMzQsIDE2MCwgMTM4LCAyMDcsIDI1MSwgMjE3LCAzNCwgCisgICAgMTYwLCAxMzgsIDIxNSwgMjksIDIxNywgMzQsIDIzOCwgMTE3LCAxMzgsIDIwNywgMjUxLCAyMTcsIDM0LCAyMzgsIDExNywgCisgICAgMTM4LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzEsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjA3LCAyNTIsIDIwOCwgMywgCisgICAgMjE3LCAxMTcsIDIwNywgMjEyLCAyMTcsIDExNywgMjE4LCAyMTUsIDM1LCAyMDgsIDMsIDIxNywgMTE3LCAyMTgsIDIxNSwgCisgICAgMzUsIDIwNywgMjEyLCAyMTcsIDExNywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgMjE3LCAKKyAgICAzNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAyMDgsIDMsIDc2LCAyMTgsIDIyNCwgMTYwLCAxMzgsIDIyMCwgMjYsIDM1LCAKKyAgICAyMDcsIDIxMiwgNzYsIDIxOCwgMjI0LCAxNjAsIDEzOCwgMjA4LCAzLCA3NiwgMywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIAorICAgIDIxMiwgNzYsIDMsIDIxOCwgMjE1LCAxNjAsIDEzOCwgMjIxLCAxNiwgMjIxLCAxNywgMjIxLCAxOCwgMjIxLCAxNywgMjAzLCAKKyAgICAyNDEsIDUyLCAyMjgsIDEzMywgMjE3LCAxMTcsIDUyLCAyMTcsIDI1LCAyMTcsIDExNywgNTIsIDIyOCwgMTMzLCA3NiwgCisgICAgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyMTcsIDI1LCA3NiwgMjE3LCAzNCwgMTYwLCAxMzgsIDUyLCAyNDcsIDE0NCwgNTIsIAorICAgIDI0MiwgMjAyLCA0NCwgMjE1LCAxMTMsIDQ0LCAyMjEsIDE1NiwgNDQsIDIwNSwgMjMyLCA0NCwgMjQwLCAyMzUsIDIwOSwgCisgICAgNzUsIDQ0LCA3MywgMjE3LCA0MywgNDQsIDIxMywgMjcsIDIxNywgNDMsIDQ0LCAyNTAsIDE2NiwgMjE3LCA0MywgNDQsIAorICAgIDIzOCwgMTIxLCA0NCwgMjQxLCAyNDQsIDk1LCAyMTUsIDExMywgOTUsIDIyMSwgMTU2LCA5NSwgMjA1LCAyMzIsIDk1LCA3MywgCisgICAgMjE3LCA0MywgNTEsIDIwNywgMTcsIDQ5LCAyMDcsIDE3LCAxMjcsIDIwNywgMTcsIDExNSwgMjA3LCAxNywgMjUwLCAxNjksIAorICAgIDIyMSwgMTMxLCAyMDUsIDYxLCAyMzYsIDI0OCwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDUxLCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNTEsIDIwNCwgMTg0LCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNCwgMjM4LCAyMTgsIDIxNSwgMjA1LCAKKyAgICA2MSwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyMzYsIDI0OSwgMjIwLCAyOCwgNTMsIDgzLCAyNDksIDc3LCA1MywgNTEsIDIwNCwgCisgICAgMTg0LCAyMTUsIDI5LCAyMDMsIDI1MywgMjEzLCAxNDksIDIwNywgMjUxLCAyMDMsIDI1MywgMjEzLCAxNDksIDIxOCwgMjIxLCAKKyAgICAyMDgsIDE2LCAyMTcsIDExNywgMjQzLCA0NCwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIDIyMSwgMjA4LCAKKyAgICAxNiwgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyNDMsIDQ0LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIAorICAgIDE2MCwgMTM4LCAyMTcsIDI1LCAyMTcsIDExNywgMjI4LCAxMzMsIDIxNywgMTE3LCAyMjEsIDIzLCAyMzQsIDk2LCAyNDMsIAorICAgIDU1LCAyMjIsIDEyNSwgMjI4LCA2NiwgMjAwLCAxNTUsIDIyMCwgMTMyLCAyMTgsIDIyMywgNTEsIDI1MSwgNzEsIDMsIDI1MCwgCisgICAgMjM2LCA1MSwgMjA1LCA5OCwgMjIwLCAyMTMsIDIyNCwgOTgsIDI1MSwgNzksIDIyMCwgMjEzLCAyMjQsIDk4LCAyMTcsIDMzLCAKKyAgICAyMjAsIDIxMywgMjI4LCA1NSwgMjIwLCAyMTMsIDIwMywgMjQxLCAyNDEsIDY1LCAyMTcsIDQzLCA3MywgMjE3LCA0MywgCisgICAgMjA4LCAxMTAsIDIxNywgNDMsIDI0MCwgMjM1LCAyMDUsIDIzMiwgMjQ4LCA3OSwgNDksIDIxOCwgMjIxLCAyMzcsIDE3OSwgCisgICAgMjEwLCAxNjYsIDIxNSwgMSwgNTEsIDIxOCwgMjIxLCAyMzcsIDE3OSwgMjEwLCAxNjYsIDIxNSwgMSwgNDksIDIxMCwgMTY2LCAKKyAgICAyMTUsIDEsIDUxLCAyMTAsIDE2NiwgMjE1LCAxLCAyMTMsIDEwNSwgMjA1LCAyNDEsIDIzOCwgMTIxLCAyNDIsIDE5NiwgCisgICAgMjI0LCA5OCwgMjE3LCAzMywgMjQyLCAxOTYsIDIyNCwgOTgsIDI1MSwgNzksIDUzLCAyMDgsIDIsIDUzLCAyMDcsIDIxMSwgCisgICAgNTMsIDIyOCwgNTUsIDUzLCAyMDMsIDI0MSwgMjE1LCAxNDAsIDE2MCwgMjYsIDIxNiwgMTIxLCAxMzgsIDIyNCwgMjQxLCAzLCAKKyAgICAyNDAsIDE4MiwgMjM1LCA2NywgMywgMjQwLCAxODIsIDIwMiwgMjQ2LCAyMjEsIDM1LCAyMjQsIDI0MCwgMjAyLCAyNDYsIAorICAgIDIyMSwgMzUsIDIzNSwgNjYsIDIyNCwgMjQxLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMzUsIDY3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MCwgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDE2MCwgCisgICAgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjYsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIxNSwgMjgsIDE2MCwgMjA1LCAKKyAgICAxODYsIDIxNywgMzQsIDIwNywgMjUwLCAyNDAsIDIwMiwgMjE4LCAyMTUsIDIxNSwgMzIsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyNDAsIDIwMiwgMjE4LCAyMTUsIDIwNywgMjUzLCAyMTcsIDM0LCAyMzgsIDEyMywgMjE4LCAyMTUsIDUyLCAyMjgsIDEzMywgCisgICAgNzYsIDIxNywgMzQsIDE2MCwgMTM4LCAyMTgsIDIxNSwgNTIsIDIxNywgMjUsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgNTIsIAorICAgIDIyOCwgMTMzLCA3NiwgMjE3LCAzNCwgMjE4LCAyMTUsIDE2MCwgMTM4LCA1MiwgMjE3LCAyNSwgNzYsIDIxNywgMzQsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjI0LCAyNDEsIDI0NywgMjQ3LCAyMTgsIDIxNSwgMjM4LCAxMTcsIDEzOCwgMjM1LCA2NywgMjQ3LCAKKyAgICAyNDcsIDIxOCwgMjE1LCAyMzgsIDExNywgMTM4LCAyMTUsIDI5LCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIAorICAgIDIwNywgMjUxLCAyNDcsIDI0NywgMjE4LCAyMTUsIDIzOCwgMTE3LCAxMzgsIDIxOCwgMjE1LCAyMTgsIDIyMSwgMjA4LCAxNiwgCisgICAgMjE3LCAxMTcsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQzLCA0NiwgMjUwLCAxODksIDIxOCwgMjIxLCAyMDgsIDE1LCAyMTgsIAorICAgIDIxNSwgMjE4LCAyMjEsIDIwOCwgMTYsIDc2LCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQwLCAyMDIsIDIxOCwgMjE1LCAyNDMsIAorICAgIDQ2LCAyNTAsIDE4OSwgMjE4LCAyMjEsIDIwOCwgMTYsIDIxNywgMzQsIDIzOCwgMTIzLCA4MywgMjM4LCAxOTUsIDIyMSwgCisgICAgMjAyLCAyMzMsIDE3NywgMjM4LCAxOTUsIDExNSwgNTEsIDI0MSwgNzEsIDIzOCwgMTk1LCAxMjcsIDUxLCAyNDEsIDcxLCAKKyAgICAyMzgsIDE5NSwgMjM4LCAyMDIsIDc2LCAzLCAxNjgsIDIzMywgMTc3LCA5NywgMjM4LCAyMDIsIDc2LCAzLCA4MywgMjQ5LCAKKyAgICA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDgzLCAyNDksIAorICAgIDc3LCAyNTAsIDE1NiwgMjM4LCAxNzEsIDc2LCAyMzMsIDE3NywgOTcsIDIzOCwgMjAyLCA3NiwgMywgNzMsIDU2LCAyMzgsIAorICAgIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCA0LCAyMzgsIDIwMiwgNzYsIDMsIDIxNiwgMjQ2LCAyMzgsIDIwMiwgNzYsIDMsIDIwMywgCisgICAgMjUxLCAyMzgsIDIwMiwgNzYsIDMsIDEyMCwgMjMzLCAxNzcsIDIwOCwgMzQsIDI0MywgNDQsIDMsIDE2OCwgMjMzLCAxNzcsIAorICAgIDk3LCAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCA0LCAKKyAgICAyNDMsIDQ0LCAzLCA4MywgMjQ5LCA3NywgMjUwLCAxNTYsIDIzOCwgMTcxLCA3NiwgMjMzLCAxNzcsIDk3LCAyNDMsIDQ0LCAKKyAgICAzLCAyMTYsIDI0NiwgNCwgMjQzLCA0NCwgMywgMjE2LCAyNDYsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjQ5LCAxMTQsIDIyMiwgCisgICAgNDMsIDI0MSwgNjYsIDU0LCAyMzgsIDIwNCwgNDgsIDIzMywgMTA5LCAxMTUsIDI1MCwgMjAyLCAxMjcsIDI1MCwgMjAyLCAKKyAgICAyMTQsIDI1MSwgMjE2LCA4LCAyMDEsIDc0LCAyMjQsIDE3NiwgNDksIDI0NywgNjQsIDUxLCAyNDcsIDY0LCA0OSwgMjM3LCAKKyAgICAzMSwgNTEsIDIzNywgMzEsIDI0OCwgOTMsIDUxLCAyNDIsIDIzNiwgMjQ4LCA5MywgNDksIDI0MiwgMjM2LCAyMDUsIDE1OCwgCisgICAgNTEsIDI0MiwgMjM2LCAyMDUsIDE1OCwgNDksIDI0MiwgMjM2LCAyMTMsIDEwNSwgMjE4LCAyMTUsIDU0LCA1MiwgMjI0LCAKKyAgICA0OSwgMjUwLCAyMzYsIDIxMSwgMTgzLCAyMTEsIDE5MSwgMjA2LCAxNzYsIDIxMywgMTc5LCAyMTUsIDcwLCAyMjgsIDk5LCAKKyAgICAyMDIsIDIyMiwgMjA4LCAxOTMsIDIxNSwgMTM0LCA3NiwgMjI4LCA2NSwgNTQsIDIwNCwgMTg1LCAyMTgsIDIxNSwgNTQsIAorICAgIDIwMSwgODQsIDIzMywgMTExLCAyMDUsIDE1OCwgNDksIDI0MywgMTUsIDIwNSwgMTU4LCA1MSwgMjQzLCAxNSwgMjQ4LCA5MywgCisgICAgNDksIDI0MywgMTUsIDI0OCwgOTMsIDUxLCAyNDMsIDE1LCAyMDUsIDE1OCwgMTY3LCAyMjgsIDY5LCAyNDgsIDkzLCAxNjcsIAorICAgIDIyOCwgNjksIDIzNiwgMTk2LCAyMDksIDQ4LCAxMTUsIDI1MCwgMjAzLCAyNDgsIDIwNiwgMTIwLCAyMzMsIDE3NywgMjQ5LCAKKyAgICA2NiwgMjE3LCAzNiwgMjI2LCAyMTQsIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgNDYsIDIwMCwgMTk2LCAKKyAgICAyMjgsIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyMjYsIDIxMiwgMjI1LCAyMywgMjUxLCA3MSwgMTU5LCAyMTMsIAorICAgIDQxLCAyNTEsIDcxLCAxNTksIDIzOCwgMTEzLCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIyNSwgMjgsIDI0OCwgMjE3LCAyMTMsIAorICAgIDI2LCAyNDIsIDE2MywgMjUxLCAxMjUsIDI1MCwgMjExLCAyMDcsIDExNCwgMjA1LCAxNDMsIDIxMiwgMTU0LCAyNDEsIDI4LCAKKyAgICAyMTcsIDI2LCAyNDMsIDU5LCAyMDYsIDIzNCwgMjA5LCA2MSwgMjQzLCA1LCAyNDMsIDQsIDI1MSwgMjIsIDIzNiwgMTc5LCAKKyAgICAxNiwgMjMzLCAxNiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMDgsIDE4NCwgMjE0LCA5NCwgMjUxLCAyMiwgMjM2LCAxNzksIAorICAgIDE2LCAyMTQsIDk1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDAsIDI0MSwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyNDEsIDY0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNywgMTUzLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgMTU1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgCisgICAgMTU2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyMjcsIDE1MywgMjUxLCAyMiwgMjM2LCAKKyAgICAxNzksIDE2LCAyMDksIDc2LCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ5LCAxMjUsIDE0OCwgMjUxLCAyMiwgCisgICAgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMDksIDc1LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0OSwgMTI0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDIyNCwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIAorICAgIDIzNSwgNjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgOTgsIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgODcsIAorICAgIDIwMywgODAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NSwgOTgsIDQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDg3LCA0OCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDE1NiwgMjQ5LCAxMjQsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMTI3LCAyMDcsIDE4LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDEsIDEzNywgMjA4LCAKKyAgICA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMjcsIDI0NywgMTI5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDI0MSwgMTM2LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjA3LCAxOCwgMjI3LCAxNTMsIDI1MSwgCisgICAgMjIsIDIzNiwgMTc5LCAxNiwgMTgyLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDE4MiwgNDgsIAorICAgIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMDcsIDE4LCAyMTYsIDI0NiwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAKKyAgICAyNDEsIDE0OSwgMjA4LCA4NCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAxMTUsIDI0NywgMTI5LCAyNTEsIAorICAgIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0MSwgMTQ4LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDExNSwgMjA3LCAxOCwgCisgICAgMjI3LCAxNTMsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTkxLCAyMDMsIDgwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDIxNCwgOTUsIDE5MSwgNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA2MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjQxLCAxMzcsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgNjUsIDIwMywgMjUxLCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIAorICAgIDE1NiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAyMTAsIDYsIDIyNywgMTUzLCAyNTEsIDIyLCAKKyAgICAyMzYsIDE3OSwgMTYsIDIxNCwgNjIsIDIxNCwgOTQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQ2LCAxNTYsIDIwOCwgCisgICAgMTA5LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIxNCwgOTUsIDI0NiwgNzksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMTE1LCAKKyAgICAyMDcsIDE4LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0MSwgMTQ5LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIAorICAgIDE3OSwgMTYsIDIwOCwgMTEwLCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyNywgMTU0LCAyNDEsIDc0LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDI0NiwgMTU2LCAyNDEsIDc0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgCisgICAgMjEwLCA2LCAyMDgsIDg0LCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDQ5LCAyMTAsIDYsIDIwOCwgODQsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjA1LCAyNDEsIDI0MSwgNzQsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjM1LCA2NywgMjQxLCA3NCwgCisgICAgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyNDYsIDcxLCAxNDgsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjQxLCAxNDksIAorICAgIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDE5OSwgMjYsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjA4LCA4NSwgCisgICAgMjA1LCAyNDAsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjEwLCAxNjgsIDIwMywgMjUxLCAyNTEsIDIyLCAyMzYsIDE3OSwgCisgICAgMTYsIDIxNCwgOTUsIDIxOCwgMjE1LCAyMzgsIDEyMywgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTQsIDk1LCAyMTQsIDc4LCAKKyAgICAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDEyNywgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDExNSwgMjQ3LCAxMzAsIDIwNSwgMjQwLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIDIyOCwgNDEsIDI1MSwgMjIsIDIzNiwgCisgICAgMTc5LCAxNiwgMjEzLCA5MCwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMTcsIDgzLCAyNTEsIDIyLCAyMzYsIDE3OSwgMTYsIAorICAgIDI1MSwgMTEzLCAyMDMsIDI1MSwgMjUxLCAyMiwgMjM2LCAxNzksIDE2LCAyMzgsIDEyNSwgMjAzLCAyNTEsIDI1MSwgMjIsIAorICAgIDIzNiwgMTc5LCAxNiwgMjI4LCA0MiwgMjAzLCAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE3LCA4NCwgMjAzLCAKKyAgICAyNTEsIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjUxLCAxMTIsIDIxOCwgMjE1LCAyNDcsIDcsIDgxLCA1MSwgMjUxLCA3MSwgCisgICAgMywgMTkxLCAxOTksIDI3LCA0OCwgMjA5LCAyMzIsIDE3NiwgMjQ4LCA3OCwgMjQ4LCAyMzEsIDk5LCA4MywgMjI0LCAxNzcsIAorICAgIDMsIDEwMSwgMjQwLCAxODIsIDIyOCwgNzUsIDk5LCAyNDMsIDM5LCAyMDMsIDI0OSwgOTksIDI0MSwgMSwgMjAzLCAyNDksIAorICAgIDk5LCAyMzgsIDE4MywgOTksIDI0MywgNzQsIDk5LCA2NCwgNTIsIDMsIDI0NywgNTYsIDgzLCAyMjQsIDE3NiwgMjM4LCAKKyAgICAxNTUsIDk5LCAyNTEsIDEwNCwgMjI2LCAyMTUsIDk5LCAyMzQsIDEwOSwgOTksIDQ0LCAyMzMsIDE3NywgMjQ5LCA3NywgMywgCisgICAgMjE4LCAyMTIsIDQ0LCAyMDUsIDk5LCAyMzksIDE2NywgMjQ4LCA0NiwgMjQ2LCAxNTYsIDMsIDIxOCwgMjE4LCA0OCwgMjAzLCAKKyAgICAyNDcsIDk5LCAyMjEsIDkyLCA5OSwgMjMzLCAyOSwgOTksIDIxNywgNTIsIDIzNCwgMjQ2LCA5OSwgMjE3LCA1MiwgMjI1LCAKKyAgICAxOTEsIDk5LCAyMTYsIDk4LCA5OSwgMjE2LCA5NywgOTksIDI0MSwgMTAsIDI0MiwgMTk0LCAxNiwgMjM2LCAyNDIsIDEwNSwgCisgICAgMjA5LCAyMSwgOTksIDI1MSwgMjIsIDIzNiwgMTc5LCAxNiwgMjE0LCA5NCwgMjQxLCAxNjgsIDIxMCwgMTU1LCAyMjYsIAorICAgIDIxNSwgOTksIDIxNSwgMTYsIDIxNiwgMTk1LCAyMjAsIDIsIDIxNiwgMTk1LCAyMTUsIDExLCAyMTEsIDIxMCwgOTksIDI0NiwgCisgICAgMTI3LCAyMTEsIDIxMCwgOTksIDQ5LCAyMTYsIDExNiwgMjAzLCAyMjUsIDExNywgNDksIDIxNiwgMTE2LCAyMzgsIDMxLCAKKyAgICA0OSwgMjE2LCAxMTYsIDIyNCwgNTQsIDExNywgNTEsIDIxNiwgMTE2LCAyMDMsIDIyNSwgMTE3LCA1MSwgMjE2LCAxMTYsIAorICAgIDIzOCwgMzEsIDUxLCAyMTYsIDExNiwgMjI0LCA1NCwgMTE3LCA0OSwgNTIsIDI0OCwgNzAsIDIwMywgMjI1LCAyNDMsIDE1LCAKKyAgICA0OSwgNTIsIDI0OCwgNzAsIDIzOCwgMzEsIDQ5LCA1MiwgMjQ4LCA3MCwgMjI0LCA1NCwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIAorICAgIDcwLCAyMDMsIDIyNSwgMjQzLCAxNSwgNTEsIDUyLCAyNDgsIDcwLCAyMzgsIDMxLCA1MSwgNTIsIDI0OCwgNzAsIDIyNCwgCisgICAgNTQsIDI0MywgMTUsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNDksIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA0OSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjQyLCAxOTYsIDI0OCwgNzAsIAorICAgIDIzOCwgMzEsIDUxLCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjAzLCAyMjUsIDExNywgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAKKyAgICAxMDEsIDIxNSwgMTk2LCA1MSwgMjQyLCAxOTYsIDI0OCwgNzAsIDIyNCwgNTQsIDExNywgMjI4LCA3MCwgMjM4LCAzMSwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMDMsIDIyNSwgNDksIDIxNywgMzQsIDIyNCwgNTQsIDUxLCAyNDIsIAorICAgIDE5NiwgMjQ4LCA3MCwgMjExLCAxOTIsIDIwMywgMjI1LCA1MSwgMjE3LCAzNCwgMjI0LCA1NCwgNDksIDI0MiwgMTk2LCAKKyAgICAyNDgsIDcwLCAyMTEsIDE5MiwgMjA3LCAyMzIsIDIwNSwgMTU3LCAyMDcsIDIzMiwgMjQ4LCA5MiwgMjA1LCAxNTgsIDUyLCAKKyAgICAxNTksIDI0OCwgOTMsIDUyLCAxNTksIDI0OCwgOTMsIDUyLCAyNDgsIDcwLCAxMTksIDIwNSwgMTU4LCA1MiwgMTU5LCA0MiwgCisgICAgMTYsIDI0OCwgOTIsIDQ5LCA4MywgMTAwLCAyMjQsIDE3NiwgNTEsIDgzLCAxMDAsIDIyNCwgMTc2LCAyMzMsIDE3NywgMjExLCAKKyAgICAyMjgsIDIyNCwgMTc1LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTc0LCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgCisgICAgMTczLCAyMzMsIDE3NywgMjExLCAyMjgsIDIyNCwgMTcyLCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgCisgICAgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjEzLCA0NiwgMjQxLCAxMjgsIDE2LCAxNjIsIAorICAgIDgzLCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAKKyAgICAxMjgsIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc3LCAzLCAyNDYsIDE1NSwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAzLCAKKyAgICAyMDUsIDk4LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTI3LCAyNiwgMjMzLCAxNzcsIDMsIDIwNSwgOTgsIDI0MSwgMTI4LCAxNiwgCisgICAgMTYyLCAxMTUsIDI2LCAyMzMsIDE3NywgMywgMjA1LCA5OCwgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjAxLCA3NywgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDEyNywgMjYsIDIzMywgMTc3LCAzLCAyMDEsIDc3LCAyNDEsIDEyOCwgMTYsIDE2MiwgMTE1LCAKKyAgICAyNiwgMjMzLCAxNzcsIDMsIDIwMSwgNzcsIDI0MSwgMTI4LCAxNiwgMTYyLCAxMjcsIDI2LCAyMzMsIDE3NiwgMjQxLCAxMjgsIAorICAgIDE2LCAxNjIsIDExNSwgMjYsIDIzMywgMTc2LCAyNDEsIDEyOCwgMTYsIDE2MiwgODMsIDI2LCAyMDUsIDE1OCwgMjI1LCAyOCwgCisgICAgMjQxLCAxMjgsIDE2LCAxNjIsIDgzLCAyNiwgMjQ4LCA5MywgMjI1LCAyOCwgNTIsIDIzNiwgMjU1LCAyMTMsIDExMCwgOTksIAorICAgIDIzOCwgMjE4LCA5OSwgODMsIDIyNCwgMTc3LCAyMzgsIDMxLCAyMjIsIDE0LCAyNDgsIDU3LCAyMjIsIDE0LCAxNjgsIDExOSwgCisgICAgMjA5LCAyNDksIDIyMiwgMTQsIDIwOSwgMjUwLCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDE2OCwgMTE5LCAxMjAsIDIwOSwgCisgICAgMjM1LCAyMjIsIDE0LCAxMjAsIDIwOSwgMjM2LCAxMTksIDIyNCwgODksIDIyMiwgMTQsIDEyMCwgMjA5LCAyMzYsIDIyNywgCisgICAgMTYyLCAyMjIsIDE0LCAyMDUsIDc5LCAyMjIsIDE0LCAyMDYsIDEzOCwgMjIyLCAxNCwgMjE2LCAzNSwgMjM5LCAxOCwgMjM1LCAKKyAgICA1OSwgMjM2LCAxNzMsIDIwNSwgMTU4LCAyMTYsIDExNSwgMjQ4LCA5MywgMjE2LCAxMTUsIDIwNSwgMTU4LCAyNDIsIDE5NiwgCisgICAgMTU5LCAyNDgsIDkzLCAyNDIsIDE5NiwgMTU5LCAyMDUsIDE1OCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjQ4LCA5MywgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNjQsIDIwNSwgMTE0LCAyNDgsIDIxNywgMjEzLCAyNywgMywgMjQ2LCAxNTUsIAorICAgIDIwOCwgNjYsIDIzNywgNDIsIDI1MSwgMjU1LCAyNDIsIDE5MywgMjM4LCAyMDMsIDIyOCwgNTUsIDI0MSwgMTY4LCAyMzgsIAorICAgIDM1LCA5OSwgNjMsIDIxMywgNDEsIDUzLCAyMDUsIDk4LCA2MywgMjI1LCAyMywgNTMsIDIwNSwgOTgsIDYzLCAyMDMsIDIyNywgCisgICAgNTMsIDIwNSwgOTgsIDYzLCAyMzksIDE2NiwgNTMsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCA1MywgMjA1LCA5OSwgMywgODMsIAorICAgIDE0OCwgNjMsIDIyNSwgMjMsIDUzLCAyMDUsIDk5LCAzLCA4MywgMTQ4LCA2MywgMjEzLCA0MSwgMjA1LCA5OSwgMywgNTMsIAorICAgIDgzLCAxNDgsIDI1MSwgMTQ2LCAyNDYsIDExMywgMjA4LCA3MywgMjA1LCAyMzMsIDI0NiwgMTEzLCAyMzMsIDExMiwgMywgCisgICAgMjM3LCAyMiwgMjEyLCAxMSwgNjMsIDIyMiwgNjYsIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMTMsIDQxLCAKKyAgICAyMDUsIDk4LCA2MywgMjIyLCA2NiwgMjAzLCAyMjcsIDIwNSwgOTgsIDYzLCAyMjIsIDY2LCAyMzksIDE2NiwgMjA1LCA5OCwgCisgICAgNTMsIDgzLCAxNDgsIDYzLCA1MiwgMzYsIDIwOCwgNzYsIDYzLCAyNDYsIDE1NiwgMzYsIDIxMywgMTgwLCAyMTUsIDUyLCAKKyAgICA5OSwgMjE1LCA1MiwgMjE3LCA3NywgOTksIDIxNSwgNTIsIDIxNywgNzksIDk5LCAyMTUsIDUyLCAyMDksIDcyLCA5OSwgMTYsIAorICAgIDM2LCAyMTgsIDk3LCAxNiwgMzYsIDIwOCwgMTA1LCA3NiwgMjM0LCAxMzMsIDE2LCAzNiwgMjA4LCAxMDUsIDc2LCAyMDYsIAorICAgIDEyNiwgMTYsIDM2LCAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAxNiwgMzYsIDIzOCwgMTcxLCA3NiwgMjA1LCAxMTgsIDE2LCAKKyAgICAzNiwgMjM4LCAxNTgsIDE2LCAzNiwgMjUxLCAyNDMsIDE2LCAzNiwgMjQ4LCAyMzAsIDE2LCAzNiwgMjQ5LCAxMjMsIDE2LCAKKyAgICAzNiwgMjMzLCAxNzcsIDIwNywgMTksIDE2LCAzNiwgMjI0LCAxNzcsIDIzNywgMTM4LCAxNiwgMzYsIDgzLCAyMDcsIDE5LCAKKyAgICAxNiwgMzYsIDIzNiwgMjQyLCAyMzcsIDEzOCwgMTYsIDM2LCAyNDcsIDEyMSwgMjEzLCAxMDksIDE2LCAzNiwgMjEwLCAyOSwgCisgICAgMjE2LCAyNTQsIDE2LCAzNiwgMjEwLCAyOSwgMjI4LCAxMTcsIDE2LCAzNiwgMjQxLCAyMzksIDIyNCwgMTY3LCAyMzgsIDk2LCAKKyAgICAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDE2LCAzNiwgMjQxLCAxMDcsIDI0MywgMzQsIDEwNSwgMTYsIDM2LCAKKyAgICAyNDEsIDEwNywgMjQzLCAzNCwgMTQ3LCAxNiwgMzYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDE2LCAzNiwgMTg5LCAyNTEsIAorICAgIDI0MywgMTYsIDM2LCAyMDcsIDEwOSwgMjI4LCAxODAsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMDUsIDExOSwgMjQ4LCAKKyAgICAxMzQsIDE2LCAzNiwgMjQ3LCAxNTYsIDE2LCAzNiwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAxNiwgMzYsIDIwOCwgMCwgMTYsIAorICAgIDM2LCAyMzgsIDk2LCAxNiwgMzYsIDIzNywgOTcsIDIxMCwgMTU0LCAxNiwgMzYsIDIzNSwgNTgsIDIxMCwgMTU0LCAxNiwgCisgICAgMzYsIDIxMywgMTgxLCAyMTAsIDE1NCwgMTYsIDM2LCAyMDMsIDI0MCwgMjEwLCAxNTQsIDE2LCAzNiwgMjA4LCAyNDQsIDE2LCAKKyAgICAzNiwgMjQxLCAxNDYsIDI0OCwgMTM4LCA5OSwgMTc2LCAyNDgsIDc4LCAxNiwgMzYsIDIyMCwgNSwgMTYsIDM2LCAyNDEsIAorICAgIDE0NywgMjM2LCAyNDIsIDEwNSwgMTYsIDM2LCAyMDgsIDEsIDIzNiwgMjQyLCAxMDUsIDIxNywgMTMxLCAxMTcsIDIxNywgCisgICAgMTMxLCAyNDcsIDMyLCAyMTcsIDEzMSwgMjM2LCAyNDUsIDIxNywgMTMxLCAyMjgsIDUwLCAyMzYsIDI0NSwgMjE3LCAxMzEsIAorICAgIDI0OCwgMjI3LCAyNDgsIDMzLCAyMTcsIDEzMSwgMjQ4LCA4NiwgMjA2LCA3LCAyMTcsIDEzMSwgMjQ4LCA2NywgMjQ5LCA4MiwgCisgICAgMjMyLCAyMjIsIDIxNywgMTMxLCAyNTEsIDkxLCA3NiwgMjQ3LCA2LCAyMTcsIDEzMSwgMjQxLCAyNDQsIDIxNywgMTMxLCAKKyAgICAyNDIsIDE4MiwgMjUxLCAyNDcsIDIxOCwgOTUsIDIxNywgMTMxLCA1MywgMjQ5LCAxMjQsIDQ0LCAxNywgMTAyLCA0NCwgMTcsIAorICAgIDEwNSwgNDQsIDE3LCAxNDcsIDQ0LCAxNywgMTQ5LCA0NCwgMTcsIDE2NCwgNDQsIDE3LCAxODcsIDQ0LCAxNywgMjEwLCAKKyAgICAxMzUsIDQ0LCAxNywgMTkyLCA0NCwgMTcsIDIxOSwgMTEzLCA0NCwgNDEsIDIwNiwgMTY2LCA0NCwgNDEsIDIzOCwgMTk5LCAKKyAgICA0NCwgNDEsIDIwNCwgMTY0LCA0NCwgNDEsIDIwNiwgNjksIDQ0LCA0MSwgMjM2LCAyMjMsIDQ0LCA0MSwgMjM3LCAxMDgsIAorICAgIDQ0LCA0MSwgMjA5LCAxMDAsIDQ0LCA0MSwgMjEwLCAxMzIsIDQ0LCA0MSwgMjM4LCAyMjksIDQ0LCA0MSwgMjE5LCAxMTAsIAorICAgIDQ0LCA0MSwgMjA0LCAxNTksIDEwNiwgMTcsIDEwMiwgMTA2LCAxNywgMTA1LCAxMDYsIDE3LCAxNDcsIDEwNiwgMTcsIDE0OSwgCisgICAgMTA2LCAxNywgMTY0LCAxMDYsIDE3LCAxODcsIDEwNiwgMTcsIDIxMCwgMTM1LCAxMDYsIDE3LCAxOTIsIDEwNiwgMTcsIAorICAgIDIxOSwgMTEzLCAxMDYsIDQxLCAyMDYsIDE2NiwgMTA2LCA0MSwgMjM4LCAxOTksIDEwNiwgNDEsIDIwNCwgMTY0LCAxMDYsIAorICAgIDQxLCAyMDYsIDY5LCAxMDYsIDQxLCAyMzYsIDIyMywgMTA2LCA0MSwgMjM3LCAxMDgsIDEwNiwgNDEsIDIwOSwgMTAwLCAKKyAgICAxMDYsIDQxLCAyMTAsIDEzMiwgMTA2LCA0MSwgMjM4LCAyMjksIDEwNiwgNDEsIDIxOSwgMTEwLCAxMDYsIDQxLCAyMDQsIAorICAgIDE1OSwgMTcsIDExMiwgMjM2LCAxODMsIDIwOCwgNzYsIDE3LCAxMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMTI2LCAKKyAgICAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNiwgMjI5LCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDIzNywgNjEsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAxNywgMjA5LCAxMDYsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjEwLCAxMzYsIDIzNiwgMTgzLCAKKyAgICAyMDgsIDc2LCAxNywgMjM4LCAyMzIsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNywgMjE5LCAxMTQsIDIzNiwgMTgzLCAyMDgsIAorICAgIDc2LCA0MSwgMjA2LCAxNjcsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjM4LCAyMDAsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgCisgICAgMjA0LCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCA0MSwgMjA2LCA3MCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzYsIAorICAgIDIyNCwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzcsIDEwOSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDksIDEwMSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMTAsIDEzMywgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMzgsIDIzMCwgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDQxLCAyMTksIDExMSwgMjM2LCAxODMsIDIwOCwgNzYsIDQxLCAyMDQsIDE2MCwgMjM2LCAxODMsIAorICAgIDIwOCwgNzYsIDEwNiwgOCwgNCwgMSwgNjIsIDEwNiwgOCwgNCwgMSwgMjUwLCAxMDMsIDEwNiwgOCwgNCwgMSwgMjQ3LCAKKyAgICAyMjMsIDEwNiwgOCwgNCwgMSwgMjQyLCAxNTMsIDEwNiwgOCwgNCwgMSwgNzIsIDEwNiwgOCwgNCwgMSwgMjM4LCA1LCAxMDYsIAorICAgIDgsIDQsIDEsIDIzNiwgMTU2LCAxMDYsIDgsIDQsIDEsIDIzNCwgMjQ3LCAxMDYsIDgsIDQsIDEsIDcwLCAxMDYsIDgsIDQsIAorICAgIDEsIDIyNywgMjUxLCAxMDYsIDgsIDQsIDEsIDIyNywgMTE4LCAxMDYsIDgsIDQsIDEsIDE1NiwgMTA2LCA4LCA0LCAxLCAKKyAgICAyMjMsIDI0MywgMTA2LCA4LCA0LCAxLCAyMjAsIDIxNCwgMTA2LCA4LCA0LCAxLCA3NCwgMTA2LCA4LCA0LCAxLCAyMTYsIAorICAgIDIyNiwgMTA2LCA4LCA0LCAxLCAyMTQsIDE2NywgMTA2LCA4LCA0LCAxLCAxNDYsIDEwNiwgOCwgNCwgMSwgMjEyLCAxMjIsIAorICAgIDEwNiwgOCwgNCwgMSwgMjA3LCA4MywgMTA2LCA4LCA0LCAxLCA2NiwgMTA2LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTA2LCA4LCAKKyAgICA0LCAxLCAyMDEsIDE0NywgMTA2LCA4LCA0LCAxLCAyMDAsIDE5NSwgMTA2LCA4LCA0LCAxLCAyMDAsIDEyMywgMTA2LCA4LCAKKyAgICA0LCAxLCAxOTksIDE1NywgNDQsIDgsIDYsIDEsIDYyLCA0NCwgOCwgNiwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA2LCAxLCAyNDcsIAorICAgIDIyMywgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCA0NCwgOCwgNiwgMSwgNzIsIDQ0LCA4LCA2LCAxLCAyMzgsIDUsIDQ0LCA4LCAKKyAgICA2LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDYsIDEsIDIzNCwgMjQ3LCA0NCwgOCwgNiwgMSwgNzAsIDQ0LCA4LCA2LCAxLCAyMjcsIAorICAgIDI1MSwgNDQsIDgsIDYsIDEsIDIyNywgMTE4LCA0NCwgOCwgNiwgMSwgMTU2LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDQ0LCAKKyAgICA4LCA2LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDYsIDEsIDc0LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA2LCAxLCAKKyAgICAyMTQsIDE2NywgNDQsIDgsIDYsIDEsIDE0NiwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNiwgMSwgMjA3LCA4MywgCisgICAgNDQsIDgsIDYsIDEsIDY2LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDQ0LCA4LCA2LCAxLCAyMDEsIDE0NywgNDQsIDgsIDYsIAorICAgIDEsIDIwMCwgMTk1LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDQ0LCA4LCA2LCAxLCAxOTksIDE1NywgNDQsIDgsIDQsIDEsIAorICAgIDYyLCA0NCwgOCwgNCwgMSwgMjUwLCAxMDMsIDQ0LCA4LCA0LCAxLCAyNDcsIDIyMywgNDQsIDgsIDQsIDEsIDI0MiwgMTUzLCAKKyAgICA0NCwgOCwgNCwgMSwgNzIsIDQ0LCA4LCA0LCAxLCAyMzgsIDUsIDQ0LCA4LCA0LCAxLCAyMzYsIDE1NiwgNDQsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCA0NCwgOCwgNCwgMSwgNzAsIDQ0LCA4LCA0LCAxLCAyMjcsIDI1MSwgNDQsIDgsIDQsIDEsIDIyNywgMTE4LCAKKyAgICA0NCwgOCwgNCwgMSwgMTU2LCA0NCwgOCwgNCwgMSwgMjIzLCAyNDMsIDQ0LCA4LCA0LCAxLCAyMjAsIDIxNCwgNDQsIDgsIDQsIAorICAgIDEsIDc0LCA0NCwgOCwgNCwgMSwgMjE2LCAyMjYsIDQ0LCA4LCA0LCAxLCAyMTQsIDE2NywgNDQsIDgsIDQsIDEsIDE0NiwgCisgICAgNDQsIDgsIDQsIDEsIDIxMiwgMTIyLCA0NCwgOCwgNCwgMSwgMjA3LCA4MywgNDQsIDgsIDQsIDEsIDY2LCA0NCwgOCwgNCwgCisgICAgMSwgMjAzLCAxNjgsIDQ0LCA4LCA0LCAxLCAyMDEsIDE0NywgNDQsIDgsIDQsIDEsIDIwMCwgMTk1LCA0NCwgOCwgNCwgMSwgCisgICAgMjAwLCAxMjMsIDQ0LCA4LCA0LCAxLCAxOTksIDE1NywgNDQsIDE3LCAxOTksIDgxLCAxODksIDQ0LCA0MSwgMjM4LCAxOTksIAorICAgIDE4OSwgNDQsIDQxLCAyMDQsIDE2NCwgMTg5LCA0NCwgNDEsIDIwNiwgNjksIDE4OSwgNDQsIDQxLCAyMzYsIDIyMywgMTg5LCAKKyAgICA0NCwgNDEsIDIzNywgMTA4LCAxODksIDQ0LCA0MSwgMjA5LCAxMDAsIDE4OSwgNDQsIDQxLCAyMTAsIDEzMiwgMTg5LCA0NCwgCisgICAgNDEsIDIzOCwgMjI5LCAxODksIDQ0LCA0MSwgMjE5LCAxMTAsIDE4OSwgNDQsIDQxLCAyMDQsIDE1OSwgNTMsIDQ0LCAxNywgCisgICAgMTAyLCA1MywgNDQsIDE3LCAxMDUsIDUzLCA0NCwgMTcsIDE0NywgNTMsIDQ0LCAxNywgMTQ5LCA1MywgNDQsIDE3LCAxNjQsIAorICAgIDUzLCA0NCwgMTcsIDE4NywgNTMsIDQ0LCAxNywgMjEwLCAxMzUsIDUzLCA0NCwgMTcsIDE5MiwgNTMsIDQ0LCAxNywgMjE5LCAKKyAgICAxMTMsIDUzLCA0NCwgNDEsIDIwNiwgMTY2LCAxODksIDQ0LCAxNywgMTk5LCA4MSwgMTAwLCAxMjEsIDE2MiwgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA4MCwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgMjAzLCA0MiwgCisgICAgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIzMywgMTc2LCAxMDAsIDEyMSwgODAsIDIwNSwgODMsIDI0MSwgCisgICAgMjQ1LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA4MCwgCisgICAgMjA1LCA4MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMzMsIDE3NiwgCisgICAgMTAwLCAxMjEsIDgwLCAyMTQsIDkwLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDIxNCwgOTAsIDI0MSwgCisgICAgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgODAsIDIxNCwgOTAsIDI0MSwgMjQ1LCAyMDMsIDQyLCAxMDAsIDEyMSwgMTYyLCAKKyAgICAxMjcsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTI3LCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMjcsIAorICAgIDgwLCAyNiwgNTEsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODAsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDEyNywgCisgICAgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDEyNywgODAsIDI2LCAKKyAgICA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MCwgMTI3LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgCisgICAgMjEzLCA0NiwgMTAwLCAxMjEsIDExNSwgMTYyLCAyNiwgNTEsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDUxLCAKKyAgICAyMjQsIDE5NiwgMTAwLCAxMjEsIDgwLCAxMTUsIDI2LCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCAyMjUsIAorICAgIDI4LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgMjEzLCA0NiwgMTAwLCAKKyAgICAxMjEsIDgzLCAxNjIsIDI2LCA1MSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNTEsIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgODAsIDI2LCA1MSwgMjI0LCAKKyAgICAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAKKyAgICA1MSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDgzLCAyNiwgCisgICAgMjI1LCAyOCwgMTAwLCAxMjEsIDgzLCAxNjIsIDI2LCA0OSwgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgNDksIAorICAgIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDgwLCAyNiwgNDksIDExNSwgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgCisgICAgODAsIDI2LCA0OSwgMjI0LCAxOTYsIDEwMCwgMTIxLCAxMjcsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgMTE1LCAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIyNSwgMjgsIDEwMCwgCisgICAgMTIxLCAxNjIsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDEyNywgMjI0LCAxOTYsIAorICAgIDEwMCwgMTIxLCA1MSwgODAsIDI2LCA0OSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMjMzLCAKKyAgICAxNzcsIDIzNCwgMTIxLCAxMDAsIDEyMSwgMTI3LCA4MCwgMjYsIDIzMywgMTc3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAKKyAgICAxNjIsIDI2LCA0OSwgMTI3LCAyMzQsIDEyMSwgMTAwLCAxMjEsIDQ5LCAxNjIsIDI2LCA1MSwgMTI3LCAyMzQsIDEyMSwgCisgICAgMTAwLCAxMjEsIDgwLCAxMjcsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgMTE1LCAyNiwgMjMzLCAxNzYsIDEwMCwgCisgICAgMTIxLCA0OSwgODAsIDI2LCA1MSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCA4MCwgMjYsIDQ5LCAxMTUsIDIyNCwgCisgICAgMTk2LCAxMDAsIDEyMSwgMTE1LCAxNjIsIDI2LCAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDgwLCAyNiwgCisgICAgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgCisgICAgNDksIDE2MiwgMjYsIDUxLCAxMTUsIDIzNCwgMTIxLCAxMDAsIDEyMSwgODAsIDExNSwgMjYsIDIzMywgMTc2LCAxMDAsIAorICAgIDEyMSwgMTYyLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgNDksIDgwLCAyNiwgNTEsIDgzLCAyMjQsIDE5NiwgMTAwLCAKKyAgICAxMjEsIDUxLCA4MCwgMjYsIDQ5LCA4MywgMjI0LCAxOTYsIDEwMCwgMTIxLCA4MywgMTYyLCAyNiwgMjMzLCAxNzcsIDIzNCwgCisgICAgMTIxLCAxMDAsIDEyMSwgMTE1LCA4MCwgMjYsIDEyNywgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgMTI3LCA4MCwgCisgICAgMjYsIDExNSwgMjMzLCAxNzcsIDIyNCwgMTk2LCAxMDAsIDEyMSwgODMsIDgwLCAyNiwgMjMzLCAxNzcsIDIyNCwgMTk2LCAKKyAgICAxMDAsIDEyMSwgNDksIDExNSwgODAsIDI2LCA1MSwgMTI3LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDUxLCAxMTUsIDgwLCAyNiwgCisgICAgNDksIDEyNywgMjI0LCAxOTYsIDEwMCwgMTIxLCA0OSwgMTI3LCA4MCwgMjYsIDUxLCAxMTUsIDIyNCwgMTk2LCAxMDAsIAorICAgIDEyMSwgNTEsIDEyNywgODAsIDI2LCA0OSwgMTE1LCAyMjQsIDE5NiwgMTAwLCAxMjEsIDEyNywgMTYyLCAyNiwgMTE1LCAKKyAgICAyMzMsIDE3NywgMjM0LCAxMjEsIDEwMCwgMTIxLCAxMTUsIDE2MiwgMjYsIDEyNywgMjMzLCAxNzcsIDIzNCwgMTIxLCAxMDAsIAorICAgIDEyMSwgNTEsIDE2MiwgMjYsIDQ5LCA4MywgMjM0LCAxMjEsIDEwMCwgMTIxLCA0OSwgMTYyLCAyNiwgNTEsIDgzLCAyMzQsIAorICAgIDEyMSwgMTAwLCAxMjEsIDgwLCA4MywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTYyLCA1MywgMjQxLCAyNDUsIDIzMywgCisgICAgMTc2LCAxMDAsIDEyMSwgODAsIDUzLCAyNDEsIDI0NSwgMjMzLCAxNzYsIDEwMCwgMTIxLCAxNjIsIDUzLCAyNDEsIDI0NSwgCisgICAgMjAzLCA0MiwgMTAwLCAxMjEsIDgwLCA1MywgMjQxLCAyNDUsIDIwMywgNDIsIDEwMCwgMTIxLCA1MywgMjMzLCAxNzYsIAorICAgIDEwMCwgMTIxLCA1MywgMjAzLCA0MiwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCA1MSwgMjM5LCAxNzUsIDEwMCwgCisgICAgMTIxLCAxMjcsIDUzLCAyNiwgNTEsIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAKKyAgICAxMjcsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgMTI3LCA1MywgMjYsIDQ5LCAyMDksIDEzOCwgCisgICAgMTAwLCAxMjEsIDUzLCAxMjcsIDI2LCAyMjUsIDI4LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDUxLCAyMzksIAorICAgIDE3NSwgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjEzLCA0NiwgCisgICAgMTAwLCAxMjEsIDExNSwgMjA5LCAxMzksIDI2LCA0OSwgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMTUsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDExNSwgMjYsIDIyNSwgMjgsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCA1MSwgCisgICAgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIDI2LCA1MSwgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMTMsIAorICAgIDQ2LCAxMDAsIDEyMSwgODMsIDIwOSwgMTM5LCAyNiwgNDksIDIzOSwgMTc1LCAxMDAsIDEyMSwgODMsIDUzLCAyNiwgNDksIAorICAgIDIwOSwgMTM4LCAxMDAsIDEyMSwgNTMsIDgzLCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDEyNywgMjA5LCAxMzksIDI2LCAKKyAgICAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCAxMjcsIDUzLCAyNiwgMjMzLCAxNzcsIDIwOSwgMTM4LCAxMDAsIDEyMSwgCisgICAgNTMsIDEyNywgMjYsIDIzMywgMTc2LCAxMDAsIDEyMSwgMTE1LCAyMDksIDEzOSwgMjYsIDIzMywgMTc3LCAyMzksIDE3NSwgCisgICAgMTAwLCAxMjEsIDExNSwgNTMsIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgMTE1LCAyNiwgMjMzLCAKKyAgICAxNzYsIDEwMCwgMTIxLCA4MywgMjA5LCAxMzksIDI2LCAyMzMsIDE3NywgMjM5LCAxNzUsIDEwMCwgMTIxLCA4MywgNTMsIAorICAgIDI2LCAyMzMsIDE3NywgMjA5LCAxMzgsIDEwMCwgMTIxLCA1MywgODMsIDI2LCAyMzMsIDE3NiwgMTAwLCAxMjEsIDE2MiwgCisgICAgMjUwLCAyMzcsIDEyNywgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI1MCwgMjM3LCAxMjcsIDI2LCAyMjUsIDI4LCAKKyAgICAxMDAsIDEyMSwgMTYyLCAyNTAsIDIzNywgMTE1LCAyNiwgMjI1LCAyOCwgMTAwLCAxMjEsIDE2MiwgMjUwLCAyMzcsIDExNSwgCisgICAgMjYsIDIxMywgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIAorICAgIDIyNSwgMjgsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDIwMywgMjI1LCA0OSwgMjA1LCAxODYsIDIyNCwgNTQsIDIxMywgCisgICAgNDYsIDEwMCwgMTIxLCAxNjIsIDI0MSwgNzEsIDI0MiwgMjM0LCAxMDAsIDEyMSwgMTYyLCAyMjUsIDI4LCAxMDAsIDEyMSwgCisgICAgMTYyLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDE2MiwgMjEzLCA0NiwgMTAwLCAxMjEsIDE2MiwgMjM5LCAxNjcsIDEwMCwgMTIxLCAKKyAgICA4MCwgMjI1LCAyOCwgMTAwLCAxMjEsIDgwLCAyMDMsIDIyOCwgMTAwLCAxMjEsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgODAsIAorICAgIDIzOSwgMTY3LCAxMDAsIDEyMSwgMTYyLCA0OSwgMjYsIDgwLCAyMTMsIDQ2LCAxMDAsIDEyMSwgMTYyLCAxMTUsIDI2LCA4MCwgCisgICAgMjM5LCAxNjcsIDEwMCwgMTIxLCA4MCwgNDksIDI2LCAxNjIsIDIxMywgNDYsIDEwMCwgMTIxLCA4MCwgMTE1LCAyNiwgMTYyLCAKKyAgICAyMzksIDE2NywgMjAzLCAyMjUsIDE2NywgMjQ4LCAxMzQsIDIyNCwgNTQsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMjQsIAorICAgIDU0LCAxMTIsIDIxNCwgODgsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgMjI0LCA1NCwgCisgICAgMTY3LCAyNDgsIDEzNCwgMjI0LCA1NCwgMjM3LCA2MSwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMjQsIDU0LCAxMjYsIDIxNCwgCisgICAgODYsIDI0OCwgMTM0LCAyMjQsIDU0LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCAyMzYsIDE4MywgMjQ4LCAxMzQsIAorICAgIDQ5LCAyMTAsIDEzNiwgMjM4LCAyMjYsIDI0OCwgMTM0LCA0OSwgMTI2LCAyMTQsIDg2LCAyNDgsIDEzNCwgNDksIDIzNywgCisgICAgNjEsIDIzOCwgMjI2LCAyNDgsIDEzNCwgNDksIDE2NywgMjQ4LCAxMzQsIDQ5LCAxMjYsIDIzOCwgMjI2LCAyNDgsIDEzNCwgCisgICAgNDksIDExMiwgMjE0LCA4OCwgMjQ4LCAxMzQsIDQ5LCAxMTIsIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDE2NywgMjQ4LCAKKyAgICAxMzQsIDE2MiwgMjEwLCAxMDMsIDIyMiwgNjYsIDIxMCwgMTAzLCAyNDEsIDI1MCwgMjEwLCAxMDMsIDIwMywgMjI1LCAxMTIsIAorICAgIDIzOCwgMjI4LCAyNDgsIDEzNCwgNTEsIDExMiwgMjM4LCAyMjgsIDI0OCwgMTM0LCAyMTQsIDkyLCAyMjQsIDU0LCAyMjUsIAorICAgIDI4LCAyMTQsIDkyLCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjI1LCAyOCwgMjE0LCA5MiwgMjAzLCAKKyAgICAyMjUsIDQ5LCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIAorICAgIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIAorICAgIDU0LCAyMjUsIDI4LCAyMTQsIDkyLCAyMDMsIDIyNSwgNDksIDI2LCAyMDMsIDIyNSwgNTEsIDI2LCAyMjQsIDU0LCAyMTMsIAorICAgIDQ2LCAyMTQsIDkyLCAyMDMsIDIyNSwgMjEzLCA0NiwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgMjI1LCAKKyAgICAyOCwgMjE0LCA5MiwgMjAzLCAyMjUsIDUxLCAyNiwgMjI0LCA1NCwgNDksIDI2LCAyMjQsIDU0LCAyMTMsIDQ2LCA2MywgCisgICAgMjA4LCAxOTMsIDY0LCAyMDgsIDE5MywgNjQsIDUyLCAzLCAyMTIsIDIxOSwgMjQzLCAxNCwgNjQsIDUyLCAyNDMsIDQ1LCAKKyAgICA2MywgNCwgMjA4LCAxOTMsIDUyLCAzLCAyMzMsIDE3NywgMjM3LCA5NSwgNTIsIDMsIDgzLCAyMzcsIDk1LCA1MiwgMywgCisgICAgMjE3LCAxNywgMjQyLCAyMjksIDIzNywgOTUsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDIwNSwgMTg2LCAyMjQsIDU0LCA1MSwgCisgICAgMjM3LCA5NSwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjA1LCAxODYsIDIyNCwgNTQsIDQ5LCAyMzcsIDk1LCA1MiwgMywgMjQxLCAKKyAgICA3MSwgMjQyLCAyMjksIDIzNywgOTUsIDYzLCA0LCAyMDgsIDE5MywgNjQsIDQsIDIwOCwgMTkzLCA2MywgMjEzLCAxNzUsIAorICAgIDY0LCAyMTMsIDE3NSwgNjMsIDgzLCAyMTMsIDE3NSwgNjQsIDgzLCAyMTMsIDE3NSwgNjMsIDIxNiwgMTE5LCA2NCwgMjE2LCAKKyAgICAxMTksIDYzLCAyMDMsIDIyNywgMjA1LCA5OCwgNjQsIDIwMywgMjI3LCAyMDUsIDk4LCA2MywgMjAzLCAyMjcsIDQsIDIwNSwgCisgICAgOTgsIDY0LCAyMDMsIDIyNywgNCwgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIwNSwgOTgsIDY0LCAyMTMsIDQxLCAyMDUsIDk4LCAKKyAgICA2MywgMjEzLCA0MSwgNCwgMjA1LCA5OCwgNjQsIDIxMywgNDEsIDQsIDIwNSwgOTgsIDYzLCAyMTMsIDQxLCAyMTUsIDk3LCAKKyAgICA2NCwgMjEzLCA0MSwgMjE1LCA5NywgNjMsIDIzOSwgMTY2LCAyMDUsIDk4LCA2NCwgMjM5LCAxNjYsIDIwNSwgOTgsIDYzLCAKKyAgICAyMzksIDE2NiwgNCwgMjA1LCA5OCwgNjQsIDIzOSwgMTY2LCA0LCAyMDUsIDk4LCA2MywgMjI1LCAyMywgMjA1LCA5OCwgNjQsIAorICAgIDIyNSwgMjMsIDIwNSwgOTgsIDYzLCAyMjUsIDIzLCA0LCAyMDUsIDk4LCA2NCwgMjI1LCAyMywgNCwgMjA1LCA5OCwgNjMsIAorICAgIDIyNSwgMjMsIDIxNSwgOTcsIDY0LCAyMjUsIDIzLCAyMTUsIDk3LCA2MywgMjQxLCA2NCwgNjQsIDI0MSwgNjQsIDY0LCAKKyAgICAyNDEsIDY1LCAyNDMsIDQ1LCA2MywgNCwgMjQxLCA2NCwgMjM3LCA3MCwgMjI0LCA0OSwgNjQsIDI0NiwgMTU1LCAyMzksIAorICAgIDE4MCwgMjQ2LCAxNTUsIDI0NiwgMTU2LCAzLCA4MywgMjM3LCA5NSwgMjQ4LCAxNiwgNjMsIDI0NiwgMTU1LCAyNDYsIDE1NiwgCisgICAgMywgNDksIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIDIyNCwgCisgICAgNTQsIDE2NywgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgMTY3LCAyNDgsIDE0NCwgMjQ2LCAxNTYsIDMsIAorICAgIDIwMywgMjI1LCA1MSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDI0NiwgMTU2LCAzLCAyNTEsIDEyNSwgMjQ3LCAyNDcsIDIwMywgCisgICAgMjI1LCA0OSwgMjE0LCA5MiwgMjQ4LCAxNDQsIDQ5LCAxNjcsIDYzLCAyNDYsIDE1NSwgNTEsIDE2NywgNjMsIDI0NiwgMTU1LCAKKyAgICAyMjgsIDUxLCAyNDgsIDIwLCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCAxNjcsIDIyOCwgNTEsIDY0LCAyNDYsIAorICAgIDE1NSwgMjI0LCA1NCwgMTY3LCAyMjgsIDUxLCA2NCwgMjQ2LCAxNTUsIDIwMywgMjI1LCA0OSwgMjE0LCA5MiwgMjQ2LCAKKyAgICAxNDksIDI1MCwgMjM2LCAyMDMsIDIyNSwgNTEsIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNTEsIAorICAgIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgMjI0LCA1NCwgNDksIDIxNCwgOTIsIDI0NiwgMTQ5LCAyNTAsIDIzNiwgCisgICAgMjAzLCAyMjUsIDE2NywgMjQ2LCAxNTUsIDIyNCwgNTQsIDE2NywgMjQ2LCAxNTUsIDYzLCAyMjQsIDU0LCA1MSwgMjA1LCAKKyAgICA5OCwgNjMsIDIyNCwgNTQsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIDQ5LCAyMDUsIDk4LCA2MywgMjAzLCAyMjUsIAorICAgIDUxLCAyMDUsIDk4LCA2NCwgMjQ4LCAyMCwgNTIsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgNTEsIDE2NywgMjQ4LCAKKyAgICAxNDQsIDUyLCAzLCAyMDMsIDIyNSwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAyMjQsIDU0LCA1MSwgCisgICAgMjQxLCA3MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDUyLCAzLCA4MywgMjQ4LCAxNTYsIDIyNCwgMTc2LCA2NCwgMjAzLCAyMjcsIAorICAgIDIwNSwgOTksIDMsIDI0MCwgMTgyLCAyMDMsIDIyNywgMjA1LCA5OSwgMywgNDksIDE2NywgMjQ4LCAxNDQsIDIwMywgMjI3LCAKKyAgICAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjI1LCA3MSwgMjQ2LCAxNTUsIDY0LCA1MiwgMywgMjAzLCAyMjUsIAorICAgIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDQ5LCAyMTQsIDkxLCA2NCwgNTIsIDMsIDIyNCwgNTQsIDUxLCAKKyAgICAyMTQsIDkxLCA2NCwgNTIsIDMsIDIwMywgMjI1LCA1MSwgMjE0LCA5MSwgNjQsIDI0NiwgMTU2LCAzLCAyMDMsIDIyNSwgNDksIAorICAgIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgNDksIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjI0LCA1NCwgCisgICAgNTEsIDIxNCwgOTEsIDY0LCAyNDYsIDE1NiwgMywgMjAzLCAyMjUsIDUxLCAyMTQsIDkxLCAyMDMsIDIyNSwgNDksIDIwNSwgCisgICAgOTgsIDIwMywgMjI1LCA1MSwgMjA1LCA5OCwgMjI0LCA1NCwgNDksIDIwNSwgOTgsIDY0LCAyMjIsIDY2LCAyMDgsIDE5MywgCisgICAgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA2NCwgMjIyLCA2NiwgNCwgMjA4LCAxOTMsIDYzLCAyMjIsIDY2LCA0LCAyMDgsIAorICAgIDE5MywgMjI0LCA1NCwgNTEsIDIwNSwgOTgsIDYzLCAyMDcsIDIyOSwgMywgMjEzLCAxOTQsIDI0NiwgMTAxLCAyMDQsIDksIAorICAgIDIwOSwgMzEsIDI0NiwgNzMsIDYzLCAyMDgsIDEwOSwgNjQsIDIwOCwgMTA5LCAyMjQsIDE5MywgMjA2LCAzMCwgMjA3LCAKKyAgICAyMjgsIDI1MCwgMTg0LCAyMTgsIDIzOCwgMjQxLCAxMTgsIDIxOCwgMjM4LCAyNDMsIDU0LCAyMTcsIDM5LCA2MywgMjA2LCAKKyAgICAxNzUsIDY0LCAyMDYsIDE3NSwgMjQ5LCA5NCwgMjQ4LCA3OCwgMjQ5LCA5NCwgMTAwLCAzLCAyNDcsIDYsIDI0OSwgOTQsIAorICAgIDEwMCwgMywgMjAwLCAxOTUsIDIxMiwgMjQsIDIwNCwgMTAsIDMsIDIxMywgMjIzLCAyMzksIDE0NCwgMjMzLCAxMTgsIDI0OCwgCisgICAgMjA0LCA2NCwgMjEwLCAzLCAyMTUsIDE5NiwgNjMsIDIxMCwgMywgMjE1LCAxOTYsIDIxMCwgOTEsIDIxMywgMTA1LCAyMTIsIAorICAgIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgMjAsIDYzLCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCAKKyAgICA5NiwgMjI4LCAxMDMsIDY0LCA0OSwgMjE1LCA5NiwgMjI4LCAxMDMsIDY0LCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgCisgICAgNTEsIDIxNSwgOTYsIDIyOCwgMTAzLCA2NCwgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCA4MSwgMjYsIDI0MiwgMjMzLCAKKyAgICAyNDcsIDEwNSwgNTQsIDIxMywgMjM1LCA1NCwgMjQ4LCAxNjQsIDU0LCAyNDcsIDE4MSwgMjUxLCA2MSwgMjE3LCAxOCwgCisgICAgMjQyLCAyMzQsIDI0NiwgMjM3LCAyMTMsIDkwLCAyNDIsIDIzNSwgNzYsIDIyNCwgNjksIDI0MiwgMjM1LCA3NiwgMjI3LCAKKyAgICAyMTcsIDIwOCwgMTEwLCAyNiwgMjQyLCAyNDMsIDIzNywgMTYyLCA5OSwgMjUxLCAyMjgsIDIxMCwgOTQsIDIzNCwgMjA3LCAKKyAgICAyNiwgMjA5LCAxNzksIDIxNiwgNzIsIDk5LCAxOTksIDI1NSwgMjAwLCA3NSwgMjA1LCA4OCwgMzYsIDIzNCwgMTIzLCAyMDUsIAorICAgIDg4LCAzNiwgMjI1LCA5NiwgMjA1LCA4OCwgMzYsIDIzNywgNzcsIDIwNSwgODgsIDM2LCAyMDYsIDMxLCAyMDUsIDg4LCAzNiwgCisgICAgMjAxLCAxNiwgMjA1LCA4OCwgMzYsIDIwMSwgODIsIDIwNSwgODgsIDM2LCAyMjEsIDYzLCAyMDUsIDg4LCAzNiwgMjM5LCAKKyAgICAxNywgMjAxLCAzOCwgNzYsIDI0MSwgOTIsIDY0LCAyMzYsIDE5NSwgMjM3LCAxODksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgCisgICAgNjMsIDIwOSwgNDcsIDIzNywgMTg5LCA2NCwgMjA3LCAyMjksIDMsIDIxMywgMTk0LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIAorICAgIDgxLCAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgxLCAyMjIsIDM0LCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcsIDIyMiwgMTg1LCAKKyAgICA1NCwgMjI3LCAxMzMsIDIxMSwgMjQ0LCAyMDMsIDIwOSwgMjIwLCAxOCwgMjE1LCAxMTAsIDI1MCwgMjIyLCAyMDYsIDIxOSwgCisgICAgMjM2LCAyLCAyNDcsIDE1NCwgMjI0LCAyNDYsIDIwMiwgMjA2LCAyMjQsIDIwNywgMjExLCAyMTIsIDIxMiwgNDgsIDI0NywgCisgICAgMTM5LCAyNTAsIDI1NCwgMjE1LCAxNDUsIDY0LCAyNDYsIDI0NCwgMjI2LCAxNDQsIDY0LCAyNDYsIDI0NCwgMjE0LCA4MCwgCisgICAgNjQsIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjQsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjQsIDI0NiwgMjQ0LCAyMjYsIDkzLCAKKyAgICA2NCwgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyNDYsIDI0NCwgMjI2LCAxNDQsIDYzLCAyNDYsIDI0NCwgMjE0LCA4MCwgNjMsIAorICAgIDI0NiwgMjQ0LCAyMTIsIDIzNiwgNjMsIDI0NiwgMjQ0LCAyNDgsIDE1NSwgNjMsIDI0NiwgMjQ0LCAyMjYsIDkzLCA2MywgCisgICAgMjQ2LCAyNDQsIDIxNiwgODQsIDYzLCAyMDgsIDI0MiwgMjA3LCAyNDEsIDY0LCAyMzQsIDEyOCwgMjA3LCAyNDEsIDY0LCAKKyAgICAyNDEsIDY1LCAyMDcsIDI0MSwgNjMsIDI0NiwgOTgsIDIwNywgMjQxLCA2NCwgMjA4LCAyNDIsIDIwNywgMjQxLCA2MywgCisgICAgMjM0LCAxMjgsIDIwNywgMjQxLCA2MywgMjQxLCA2NSwgMjA3LCAyNDEsIDY0LCAyNDYsIDk4LCAyMDcsIDI0MSwgMjMzLCAKKyAgICAxMTgsIDIwOCwgMTk4LCAyMTQsIDg4LCAyMTgsIDIwOSwgMjM4LCAyMjgsIDIxOCwgMjA5LCAyNDksIDQsIDIzOCwgMjI4LCAKKyAgICAyMTgsIDIwNCwgMjQ5LCA0LCAyMDksIDk5LCAyMTgsIDIwNCwgMjIwLCAyNDYsIDIzNywgNDUsIDU0LCAyMjAsIDI0NiwgCisgICAgMjIwLCAxMTcsIDU0LCAyMjAsIDI0NiwgMjEwLCA3OSwgNTQsIDIwMSwgNDgsIDIwNywgMTAzLCAyNDIsIDIzNCwgMjM5LCAKKyAgICAxNCwgMjA3LCAxMDMsIDI0MiwgMjM0LCAyMDMsIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIAorICAgIDEyNywgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIwNCwgMTI1LCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgCisgICAgMjA0LCAxMjQsIDIxNSwgMTI3LCAyMTMsIDE3MSwgMTYsIDM2LCAyMDQsIDEyMiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgCisgICAgMzYsIDIwNCwgMTIwLCAyMTUsIDEyNywgMjEzLCAxNzEsIDE2LCAzNiwgMjA0LCAxMTgsIDIxNSwgMTI3LCAyMTMsIDE3MSwgCisgICAgMTYsIDM2LCAyMDQsIDExNiwgMjE1LCAxMjcsIDIxMywgMTcxLCAxNiwgMzYsIDIzNiwgMCwgMjIyLCAxMjYsIDYzLCAyMDMsIAorICAgIDIzNywgMjEzLCAxNzEsIDk5LCAyMTMsIDE3MiwgMjE2LCAxMzQsIDk5LCAyMTYsIDEwNywgMjE2LCAxMzQsIDk5LCAyMTYsIAorICAgIDE5LCAyMTYsIDEzNCwgNTQsIDIwMSwgMzYsIDk5LCAyNDEsIDU3LCAyMzcsIDE4OCwgMjQxLCA1NywgMjM3LCAxODcsIDI0MSwgCisgICAgNTcsIDIzNywgMTg2LCAyNDEsIDU3LCAyMzcsIDE4NSwgMjQxLCA1NywgMjM3LCAxODQsIDI0MSwgNTcsIDIzNywgMTgzLCAKKyAgICA2NCwgMjQ2LCAxNTYsIDMsIDczLCAyMTMsIDQ2LCA2NCwgMjQ2LCAxNTYsIDMsIDEyMCwgMjQwLCAxODAsIDYzLCAyNDYsIAorICAgIDE1NiwgMywgNjQsIDczLCAyMTMsIDQ2LCA2MywgMjQ2LCAxNTYsIDMsIDEyMCwgNjQsIDI0MCwgMTgwLCAyMjEsIDk3LCAzNiwgCisgICAgMjAwLCA3NSwgMjIxLCA5NywgMzYsIDE5OSwgMjU0LCAyNDEsIDM4LCAzNiwgMjM1LCA2OCwgMjAwLCA3NSwgMjQxLCAzOCwgCisgICAgMzYsIDIyNCwgMjM5LCAxOTksIDI1NCwgMjQxLCAzOCwgMzYsIDIyNCwgMjM5LCAyMDAsIDc1LCAyNDEsIDM4LCAzNiwgMjM1LCAKKyAgICA2OCwgMTk5LCAyNTQsIDY0LCAyMzcsIDUzLCA2MywgMjM3LCA1MywgMjM0LCAyMDcsIDI2LCAyMTUsIDIwMCwgMjUxLCA4MSwgCisgICAgMjQyLCAyMzIsIDIwNywgMTY4LCAyMDgsIDExOCwgNzYsIDI1MSwgMjA0LCAyMTEsIDIyOSwgMjUxLCAxNDEsIDIzNywgMjQsIAorICAgIDIzNiwgMTIsIDIwOCwgMTE4LCA3NiwgMjM0LCA5OCwgMjUwLCAxNDcsIDk5LCAyMzcsIDQwLCAyMTYsIDI1MCwgNjQsIDIwOCwgCisgICAgMTA5LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMTMsIDQ2LCAxMjYsIDIyNCwgMTcxLCAyNDMsIDMxLCAyMjUsIDI4LCAKKyAgICAyMDEsIDkzLCA1NCwgMTIyLCAyMDIsIDE4MiwgNTQsIDIzOSwgMTcyLCAyMzcsIDEzMCwgNTQsIDIzOSwgMTcyLCAyMjIsIAorICAgIDE4NSwgNTQsIDIyOCwgNjEsIDIzNywgMTMwLCAyNiwgMjIyLCAxODUsIDU0LCAyMjIsIDE4NSwgMjYsIDIzNywgMTMwLCA1NCwgCisgICAgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMjIsIDE4NSwgMywgMjA4LCA0NywgMjYsIDIyMiwgMTg1LCAyNiwgMjM3LCAKKyAgICAxMzAsIDU0LCA4MywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIDU0LCAyMzMsIDE3NywgMjIyLCAxODUsIDMsIDIwOCwgNDcsIAorICAgIDU0LCAyMjIsIDY2LCA2NCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDYzLCAyNDYsIDE1NSwgMjIyLCA2NiwgNCwgNjQsIDI0NiwgCisgICAgMTU1LCAyMjIsIDE0MywgOTksIDI0MCwgMjMzLCA5OSwgMjAzLCAyMzQsIDIxNiwgMTA2LCA5OSwgMjQ2LCA4NCwgMjM2LCAKKyAgICAxNzgsIDIwMywgMjA1LCAyMjAsIDExLCAyNDcsIDQxLCAyMTYsIDE3OSwgMjI3LCAxMzksIDIwMiwgMjQ0LCAyNDYsIDIxNywgCisgICAgNjMsIDIyMSwgODIsIDIyNCwgMTkwLCAyMTAsIDEyNSwgMjEwLCAxNjQsIDIxNCwgNzAsIDIxMCwgMTQ0LCAyMDksIDI2LCAKKyAgICAyNDksIDk3LCAyNDksIDYzLCA5NSwgMjI2LCAyMTQsIDY0LCAyMzksIDE1NSwgMjIyLCAxODAsIDY0LCAyMzksIDE1NSwgCisgICAgMjI2LCAxNDQsIDYzLCAyMzksIDE1NSwgMjIyLCAxODAsIDYzLCAyMzksIDE1NSwgMjI2LCAxNDQsIDIwOSwgMzIsIDIwMSwgCisgICAgMywgMjA5LCAzNSwgMjA3LCAyMjksIDI0OCwgMjM3LCAyNDYsIDEwMSwgMjEzLCAyMjIsIDYzLCAyMDksIDMxLCAyMDYsIDMyLCAKKyAgICAyNDYsIDEwMiwgMjYsIDIxMywgMjIyLCAyMDQsIDE4NSwgNjQsIDIxMCwgMywgMjE1LCAxOTYsIDIwNCwgMTg1LCA2MywgCisgICAgMjEwLCAzLCAyMTUsIDE5NiwgNjQsIDI0MSwgNjUsIDIyOCwgMTE4LCAyMDgsIDE5MywgMjQyLCAyMjgsIDIyNSwgNzgsIAorICAgIDI0MSwgNSwgMjQ3LCAxMzUsIDIxNywgNDIsIDIxNSwgMjAwLCAyNDcsIDEzNiwgMjA5LCA2NSwgMjM0LCAxMDgsIDMsIDY0LCAKKyAgICAyNDIsIDIzNCwgNDQsIDI0MiwgMjI4LCAyMjUsIDc4LCAyNDcsIDMzLCAyMTgsIDI0MiwgMjM4LCAxNDksIDI1MSwgMTA5LCAKKyAgICAyMTcsIDcxLCA0OSwgMjAxLCA2OCwgMjA1LCAxMjYsIDYzLCAyMDQsIDEzOCwgNDksIDIwMSwgNjgsIDIwNSwgMTI2LCA2NCwgCisgICAgMjA0LCAxMzgsIDQ5LCAyMDEsIDY4LCAyMDUsIDEyNiwgNjMsIDQ5LCAyMjUsIDc5LCAyMjIsIDMzLCA2NCwgNDksIDIyNSwgCisgICAgNzksIDIyMiwgMzMsIDIzOSwgMTUwLCAyMDksIDU3LCA1NCwgODAsIDY0LCAyMzksIDE2NiwgMjA1LCA5OCwgNDksIDI0NiwgCisgICAgMTEwLCAyMzgsIDE0OSwgOTUsIDIxMiwgMjQsIDIzNywgMTcxLCAyNDEsIDcxLCAyMjgsIDExOCwgNjQsIDI0NiwgMTU2LCAKKyAgICAyMjgsIDExOCwgNjMsIDIwOCwgMTkzLCA2MywgMjA1LCA2MiwgMjEzLCAxMTYsIDQ5LCAyMzgsIDE0OCwgMjEzLCAxMTYsIAorICAgIDQ5LCAyMzgsIDE0NywgMjUwLCAxNjAsIDE2LCAzNiwgMjAzLCAyMDksIDgwLCAyNDYsIDE1NiwgMywgMjA4LCA0NywgMjYsIAorICAgIDEyMCwgMTkwLCA1NiwgMjE2LCAzNiwgMjEzLCA0MywgMjI4LCA2MywgMjE2LCAzNiwgMjI1LCAyNSwgMjI4LCA2MywgMjE2LCAKKyAgICAzNiwgMjI4LCA1MCwgMjE2LCAzNiwgNjMsIDI0MiwgMjM1LCAyMTcsIDc5LCAyMTAsIDMwLCAyMTAsIDE4LCAyMDksIDIyNSwgCisgICAgMjQ2LCAxODQsIDI0NywgMTEzLCAyMzQsIDQ2LCAyMDksIDEwNywgMjM2LCAxMywgMjAxLCAzLCAyMzMsIDk0LCAyMzYsIDEzLCAKKyAgICAzLCAyMzQsIDE3NiwgMjIyLCAxNjUsIDE2LCAzNiwgMjI0LCAxOTUsIDIyMSwgNjMsIDIwNCwgMTAsIDIxNywgNzksIDIzNSwgCisgICAgNTksIDIzNiwgMjMwLCAyMzcsIDU0LCAyMjgsIDExOCwgMjMzLCAxOTcsIDIzNywgMTIwLCAyMTIsIDQzLCA1MiwgMjM2LCAKKyAgICAyMjksIDI0MywgMTQsIDIwOSwgODQsIDIzMiwgMjMyLCAyMDksIDg3LCAyMTYsIDExLCAzLCAyNDksIDk3LCAyMDYsIDE1OCwgCisgICAgMjI3LCAyMzYsIDI0OSwgODIsIDk5LCAyMzQsIDEzMSwgMjM1LCA3MCwgOTksIDIzNiwgMTg2LCAyMTQsIDIxMywgMjQyLCAKKyAgICAyMDMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNjQsIDIzNywgNTQsIDMsIDIzMywgMTc3LCAxMDEsIDYzLCAyMDgsIDQ4LCAKKyAgICA2MywgMjEyLCA1MywgMjExLCAyMTYsIDIwMywgMjI1LCAyNDgsIDEzOSwgMjExLCAyMTYsIDYzLCAyMTEsIDIxNiwgMjI0LCAKKyAgICA1NCwgMjQ4LCAxMzksIDIxMSwgMjE2LCA2NCwgMjExLCAyMTYsIDY0LCA4MCwgMjQ3LCA3LCA4MSwgMjA2LCAxNzYsIDIyNCwgCisgICAgMTA4LCA1NCwgMjA2LCAyMzUsIDIzOSwgMTQ5LCAyNTEsIDE2NCwgMjM4LCAxNDQsIDIxMywgMjIwLCAyMzcsIDY2LCAyMTMsIAorICAgIDIyMCwgMjM0LCAxOTksIDIwMiwgMjMyLCAyMzQsIDE5OSwgMjAwLCAyMTksIDIzNCwgMTk5LCAyMjQsIDU0LCA1MSwgMjE2LCAKKyAgICA0NiwgMjE2LCA0NiwgMjAzLCAyMjUsIDUxLCAyMTYsIDQ2LCA2NCwgMjE5LCAxNDcsIDYzLCAyMTksIDE0NywgMjQ3LCA3LCAKKyAgICA4MSwgODAsIDI0NywgNywgODEsIDIyMSwgMTksIDIwMCwgMTk1LCA4MCwgMjIxLCAxOSwgMjAwLCAxOTUsIDI0OSwgOTQsIAorICAgIDIwMCwgMTk1LCA4MCwgMjQ5LCA5NCwgMjAwLCAxOTUsIDIxNiwgMjUwLCAzMSwgMjQyLCAyMzQsIDgwLCAzMSwgMjQyLCAKKyAgICAyMzQsIDE3NiwgMjQ3LCA1NiwgMjQyLCAyMzQsIDgwLCAxNzYsIDI0NywgNTYsIDI0MiwgMjM0LCA4LCAyNDIsIDIzNCwgCisgICAgMjEwLCAxMDEsIDY0LCA4LCAyNDIsIDIzNCwgMjE2LCAyNTAsIDgsIDI0MiwgMjM0LCAyMjIsIDE4MiwgMjQyLCAyMzQsIAorICAgIDIwOCwgMTEwLCA3NiwgMjQxLCAyMzcsIDIzNiwgMjI5LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDIzNiwgMjI5LCAyNDksIDk1LCAKKyAgICAyNTAsIDE2NSwgODAsIDIzNiwgMjI5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM2LCAyMjksIDI0NiwgOTYsIDI1MCwgMTY1LCAKKyAgICA2MywgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCA2NCwgMjM2LCAyMjksIDIxNSwgOTgsIDIwOCwgMTA5LCAyMDgsIAorICAgIDIzNywgMjA4LCA1NywgMjE2LCAyNTAsIDY0LCAyMDgsIDEwOSwgNDQsIDY0LCAyMDgsIDEwOSwgMTc2LCAyNDcsIDU2LCA2MywgCisgICAgMjA4LCAxMDksIDYzLCAyNDcsIDU2LCA2NCwgMjA4LCAxMDksIDIxNiwgMjUwLCA2MywgMjA4LCAxMDksIDgwLCAyMTYsIAorICAgIDI1MCwgNjMsIDIwOCwgMTA5LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMCwgMTAxLCA2NCwgMjA4LCAxMDksIDgwLCAyNTAsIAorICAgIDE2NSwgMTc2LCAyNDcsIDU2LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgCisgICAgOTgsIDYzLCAyMDgsIDEwOSwgMjM4LCAyMzIsIDIxNSwgOTgsIDIxMywgMTczLCA2MywgMjA4LCAxMDksIDgwLCAyMzgsIAorICAgIDIzMiwgMjE1LCA5OCwgMjEzLCAxNzMsIDYzLCAyMDgsIDEwOSwgMjA0LCAxNjUsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgCisgICAgMjA5LCAxMDEsIDIxNSwgOTgsIDI1MCwgMTY1LCAyMDYsIDE5NCwgMjUwLCAxNjUsIDE3NiwgMjQ3LCA1NiwgMjA2LCAxOTQsIAorICAgIDI1MCwgMTY1LCA4MCwgMjA2LCAxOTQsIDI1MCwgMTY1LCAyMDksIDEwNiwgMjE1LCAyNTUsIDYzLCAyNiwgNjQsIDIzNywgCisgICAgMjcsIDYzLCAyMzcsIDI3LCA2NCwgMjM3LCAyNywgMjM4LCAyMzIsIDIxNSwgMjU1LCAyMTYsIDI1MCwgNjMsIDIzNywgMjcsIAorICAgIDQ0LCAxNzYsIDI0NywgNTYsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMDgsIDEwOSwgODAsIDIwNiwgMTk0LCAyMTUsIDE1NSwgCisgICAgMjUwLCAxNjUsIDIwOSwgMzMsIDIwNiwgMSwgMjA1LCA5MSwgMjA5LCAzMywgODAsIDI0NiwgMjQwLCAyMDksIDMzLCAyMDgsIAorICAgIDIzOSwgODAsIDIwOCwgMjM5LCAyNDksIDk1LCAyNTAsIDE2NSwgMjM4LCAyMzIsIDIwNiwgMTk0LCAyMTQsIDI0NiwgMjUwLCAKKyAgICAxNjUsIDgwLCAyMzgsIDIzMiwgMjA2LCAxOTQsIDIxNCwgMjQ2LCAyNTAsIDE2NSwgMjQyLCAyMzUsIDgxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAxODksIDk1LCAyNDIsIDIzNSwgODEsIDIyNCwgNTQsIDUxLCAyMzksIDE0NiwgNjQsIDIwOCwgMTkzLCAKKyAgICAyMDMsIDIyNSwgNTEsIDIzOSwgMTQ2LCA2NCwgMjA4LCAxOTMsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgNjQsIDIwOCwgCisgICAgMTkzLCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjA4LCAxOTMsIDYzLCAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAKKyAgICAyMTQsIDc5LCAxMzQsIDIxNywgMjEsIDY0LCAyMzgsIDQzLCAxMzQsIDIxNywgMjEsIDYzLCAyNDEsIDY1LCAyMjEsIDE1NywgCisgICAgNjQsIDIwMCwgMTk1LCA4MCwgMjM4LCA0MywgMTM0LCA5OSwgMTYyLCA4MywgMTQ4LCAyMjIsIDY2LCA4MywgMTQ4LCA4MCwgCisgICAgODMsIDE0OCwgODAsIDIwOSwgMTM5LCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjA5LCAKKyAgICAxMzksIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgCisgICAgMTM0LCAyMTcsIDIxLCA4MCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgMjA5LCAxMzksIAorICAgIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDEyOCwgNTMsIDI0NiwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAKKyAgICAyMSwgMjQyLCAxODgsIDIwOCwgOTMsIDIxNiwgMTI4LCAyLCAyMTcsIDIxLCA4MCwgMjM4LCA0MywgMTM0LCAyMTcsIDIxLCAKKyAgICA4MCwgMjM0LCAxMjgsIDIzOCwgNDMsIDEzNCwgMjE3LCAyMSwgODAsIDYzLCAyMzQsIDEyNywgMjEyLCAyMjgsIDgwLCA2MywgCisgICAgMjM0LCAxMjgsIDI0OCwgMjAsIDIzNywgMjgsIDIzNCwgMTI3LCAyMTIsIDIyOCwgMjM3LCAyOCwgMjM0LCAxMjgsIDI0OCwgCisgICAgMjAsIDIyMiwgNjYsIDQ5LCAyMTYsIDExNiwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDIxNiwgMTE2LCAyMTcsIDIxLCAyMjIsIAorICAgIDY2LCAyMzcsIDQxLCA0OSwgMjE2LCAxMTYsIDIxNywgMjEsIDIyMiwgNjYsIDIzNywgNDEsIDUxLCAyMTYsIDExNiwgMjE3LCAKKyAgICAyMSwgMjIyLCA2NiwgMjI1LCAyMywgMjUxLCA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgMjEzLCA0MSwgMjUxLCAKKyAgICA3MSwgMjQ4LCA3MCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIAorICAgIDIxMywgNDEsIDI1MSwgNzEsIDIxNCwgNjMsIDEzNCwgMjE3LCAyMSwgODAsIDIyNSwgMjMsIDI1MSwgNzEsIDI0OCwgNzAsIAorICAgIDIxNywgMjEsIDgwLCAyMTMsIDQxLCAyNTEsIDcxLCAyNDgsIDcwLCAyMTcsIDIxLCAxNjIsIDQ5LCAyMDUsIDE0NiwgMjEwLCAKKyAgICA1NSwgMjQ4LCA3MCwgMjE3LCAyMSwgMTYyLCA1MSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNzAsIDIxNywgMjEsIDIyMiwgCisgICAgNjYsIDQ5LCAyNDIsIDE5NiwgMjQ4LCA3MCwgMjE3LCAyMSwgMjIyLCA2NiwgNTEsIDI0MiwgMTk2LCAyNDgsIDcwLCAyMTcsIAorICAgIDIxLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTA1LCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCAxNywgMTQ3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMTY0LCAyNDEsIAorICAgIDE3LCAxODksIDQ0LCAxNywgMTg3LCAyNDEsIDE3LCAxODksIDQ0LCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIDE4OSwgNDQsIAorICAgIDE3LCAxOTIsIDI0MSwgMTcsIDE4OSwgNDQsIDE3LCAyMTksIDExMywgMjQxLCAxNywgMTg5LCA0NCwgNDEsIDIwNiwgMTY2LCAKKyAgICAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxMDIsIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgCisgICAgMTQ3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAxNDksIDI0MSwgMTcsIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAxNywgNDQsIDQzLCAKKyAgICAxNywgMTg3LCAyNDEsIDE3LCA0NCwgNDMsIDE3LCAyMTAsIDEzNSwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTkyLCAyNDEsIAorICAgIDE3LCA0NCwgNDMsIDE3LCAyMTksIDExMywgMjQxLCAxNywgNDQsIDQzLCA0MSwgMjA2LCAxNjYsIDI0MSwgMTcsIDE4OSwgCisgICAgNDQsIDQzLCAxNywgMTAyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDEwNSwgMjQxLCAxNywgMTg5LCA0NCwgNDMsIDE3LCAKKyAgICAxNDcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMTQ5LCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDE2NCwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxODcsIDI0MSwgMTcsIDE4OSwgNDQsIDQzLCAxNywgMjEwLCAxMzUsIDI0MSwgMTcsIAorICAgIDE4OSwgNDQsIDQzLCAxNywgMTkyLCAyNDEsIDE3LCAxODksIDQ0LCA0MywgMTcsIDIxOSwgMTEzLCAyNDEsIDE3LCAxODksIAorICAgIDQ0LCA0MywgNDEsIDIwNiwgMTY2LCA4MCwgMjAxLCAyNywgODcsIDQ4LCA4MCwgOTMsIDU0LCA4MCwgMjIxLCAxNTcsIDU0LCAKKyAgICA4MCwgMjQwLCAyMzUsIDU0LCA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCA4MCwgODcsIDQ4LCA4MCwgMTU3LCAyMzksIAorICAgIDE0LCA0OCwgMjM5LCAxNjAsIDIxNSwgMTAwLCA4NywgNDgsIDgwLCAyMTIsIDIyMCwgODcsIDQ4LCAyMDUsIDk3LCA4NywgCisgICAgNDgsIDgwLCAyMDUsIDk3LCA4NywgNDgsIDI0MSwgMjQzLCAyMDUsIDk3LCA4NywgNDgsIDgwLCAyNDEsIDI0MywgMjA1LCAKKyAgICA5NywgODcsIDQ4LCA2MywgODcsIDQ4LCAyMDYsIDQ1LCAyMDUsIDE1NiwgODcsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyNDgsIAorICAgIDkxLCA4NywgMjUwLCAyMDIsIDYzLCA4NywgMjUwLCAyMDIsIDgwLCA2MywgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgCisgICAgODAsIDYzLCAyNDIsIDE4OCwgMTgyLCAyNiwgODcsIDQ4LCAyMDgsIDE5MCwgNjMsIDg3LCA0OCwgODAsIDI0MywgNjcsIDYzLCAKKyAgICA4NywgNDgsIDIxMywgNDAsIDY0LCA4NywgNDgsIDIyNSwgMjIsIDY0LCA4NywgNDgsIDI0OSwgMTI4LCAyMTAsIDEwMSwgNjQsIAorICAgIDg3LCA0OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgODcsIDQ4LCA4MCwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgCisgICAgODAsIDIwMywgMjI1LCAyMTMsIDM5LCA2NCwgODcsIDQ4LCAyMTgsIDIxMSwgMjI0LCA1NCwgMjEzLCAzOSwgNjQsIDg3LCAKKyAgICA0OCwgMjQyLCAxOTYsIDIyNCwgNzQsIDIxOCwgMjExLCAyMDMsIDIyNSwgMjEzLCAzOSwgNjQsIDg3LCA0OCwgNDQsIDgwLCAKKyAgICA2NCwgODcsIDQ4LCAyMDEsIDMzLCA4NywgNDgsIDI0OCwgMTQzLCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDI0OCwgMTQzLCAKKyAgICA4NywgNDgsIDI0OCwgMTQzLCAxNTcsIDIzOSwgMTQsIDQ4LCA4MCwgMjQ4LCAxNDMsIDIwOCwgMjU0LCAyMzksIDE0LCA0OCwgCisgICAgODAsIDI0OCwgMTQzLCA4NywgNDgsIDgwLCAyNDgsIDE0MywgMTU3LCAyMzksIDE0LCA0OCwgMjA2LCAxOTYsIDg3LCA0OCwgCisgICAgODAsIDIwNiwgMTk1LCA4NywgNDgsIDIwMSwgNTgsIDg3LCA0OCwgODAsIDIwMSwgNTgsIDg3LCA0OCwgMjE3LCA0OCwgODcsIAorICAgIDQ4LCA1MywgMjQyLCAxOTYsIDIyNCwgNzQsIDEyNiwgMjQxLCAyNywgMjUxLCA3MCwgNjQsIDIwNSwgOTksIDI0MywgNDUsIAorICAgIDQsIDY0LCAyMDUsIDk4LCAyMTYsIDE0LCAxNzYsIDIwOCwgMiwgMTc2LCAyMDcsIDIxMSwgNDksIDIxMiwgMTIxLCAyNDksIAorICAgIDExNCwgMjQxLCAxNDIsIDUxLCAyMTIsIDEyMSwgMjQ5LCAxMTQsIDI0MSwgMTQyLCAyMTcsIDM0LCAzLCA3MywgMjI4LCA3MywgCisgICAgMjEzLCAxMDYsIDIwOSwgMTcsIDIxNSwgMjcsIDIwOCwgMiwgMjA3LCAyMTIsIDIxNSwgMjcsIDIwOSwgMTYsIDgzLCAyNDksIAorICAgIDc3LCAzLCAyMzMsIDE3NywgOTcsIDEzLCAyMTMsIDE5LCAyNDEsIDcwLCAxNjgsIDI0MCwgMjM0LCAxMywgMjM3LCAxNzEsIAorICAgIDI0MSwgNzAsIDk1LCAyMjQsIDk4LCAyNTEsIDc5LCA5NSwgMjI0LCA5OCwgMjE3LCAzMywgNjQsIDI0MSwgNjUsIDMsIDI0NywgCisgICAgNTQsIDI0MCwgMTgyLCAyNiwgMywgMjQwLCAxODIsIDIzOCwgMjAyLCA3NiwgMjE3LCA0NiwgMjAzLCAyMTYsIDIyNCwgNTQsIAorICAgIDUxLCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgMjAzLCAyMjUsIDQ5LCAyNDMsIDE2LCAzLCAyNDAsIDE4MiwgNDksIDIxNiwgCisgICAgMjUyLCAyMjcsIDE2NCwgNTEsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjM2LCAxODMsIDIxNiwgMjUyLCAyMjcsIDE2NCwgMjI1LCAKKyAgICA3MSwgMTE1LCAyMDcsIDE3LCAyMjUsIDcxLCAxMjcsIDIwNywgMTcsIDQ5LCAyNiwgNTEsIDUzLCAyMDQsIDE4NCwgNDksIAorICAgIDI2LCA1MSwgMjA3LCAxNywgNDksIDIyMSwgMjMsIDE2OCwgNTEsIDIwNywgMTcsIDE2OCwgNDksIDIwNywgMTcsIDExNSwgCisgICAgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU2LCAyMjQsIDUwLCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyMTIsIAorICAgIDE2NSwgNjQsIDI0MywgNjYsIDI0MSwgNjQsIDY0LCAyNDMsIDY2LCAyNDEsIDY1LCAzLCA5OCwgMjA2LCAxMSwgNjQsIDI0MywgCisgICAgNjYsIDI0MSwgNjUsIDMsIDg3LCAyMDYsIDExLCA2NCwgNTIsIDMsIDk4LCAyMDYsIDExLCA2NCwgNTIsIDMsIDg3LCAyMDYsIAorICAgIDExLCAxMywgNDksIDY0LCA1MiwgMTU5LCAxMywgNTEsIDY0LCA1MiwgMTU5LCAxMywgNDksIDI1MSwgNzEsIDE1OSwgMTMsIAorICAgIDUxLCAyNTEsIDcxLCAxNTksIDEzLCA0OSwgNTMsIDI1MSwgNzEsIDE1OSwgMTMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAxMywgCisgICAgNDksIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgNTEsIDY0LCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAxMywgCisgICAgNDksIDIzNywgNDEsIDIxNiwgMTE1LCAxMywgNTEsIDIzNywgNDEsIDIxNiwgMTE1LCAxODIsIDIxNCwgOTAsIDQ4LCAxOTEsIAorICAgIDIxNCwgOTAsIDQ4LCAyNTEsIDQ3LCAyMzYsIDUxLCAyNDYsIDE1NiwgNDgsIDI0NiwgMTEyLCAyMzYsIDUxLCAyNDYsIDE1NiwgCisgICAgNDgsIDUxLCA1NSwgMywgNDQsIDIxNSwgMTEzLCAxNjgsIDk4LCA0OCwgMTY4LCA4NywgNDgsIDE2OCwgNDksIDUxLCA0OCwgCisgICAgMTY4LCA5OCwgNTMsIDQ4LCAxNjgsIDg3LCA1MywgNDgsIDE2OCwgNDksIDUxLCA1MywgNDgsIDE2OCwgOTgsIDU1LCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxNjgsIDg3LCA1NSwgMjM2LCAyMDEsIDE0OCwgMTY4LCA5OCwgNTMsIDU1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICAxNjgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE2OCwgODcsIDIwOCwgMTg2LCA0OCwgNTksIDYwLCAyNDgsIDEzNywgCisgICAgNTksIDYwLCAyNDAsIDE3OSwgNTksIDYwLCAyNDAsIDUxLCA1OSwgNjAsIDI0MCwgMTc4LCA1OSwgNjAsIDIzOSwgMjQzLCAKKyAgICA1OSwgNjAsIDI0MCwgMTE0LCA1OSwgNjAsIDI0MCwgNTAsIDU5LCA2MCwgMjQwLCAxNzcsIDU5LCA2MCwgMjM5LCAyMTEsIAorICAgIDU5LCA2MCwgMjQwLCA4MiwgNTksIDYwLCAyNDAsIDE4LCA1OSwgNjAsIDI0MCwgMTQ1LCA1OSwgNjAsIDIzOSwgMjQyLCA1OSwgCisgICAgNjAsIDI0MCwgMTEzLCA1OSwgNjAsIDI0MCwgNDksIDU5LCA2MCwgMjQwLCAxNzYsIDU5LCA2MCwgMjM5LCAxOTUsIDU5LCAKKyAgICA2MCwgMjQwLCA2NiwgNTksIDYwLCAyNDAsIDIsIDU5LCA2MCwgMjQwLCAxMjksIDU5LCA2MCwgMjM5LCAyMjYsIDU5LCA2MCwgCisgICAgMjQwLCA5NywgNTksIDYwLCAyNDAsIDMzLCA1OSwgNjAsIDI0MCwgMTYwLCA1OSwgNjAsIDIzOSwgMjEwLCA1OSwgNjAsIAorICAgIDI0MCwgODEsIDU5LCA2MCwgMjQwLCAxNywgNTksIDYwLCAyNDAsIDE0NCwgNTksIDYwLCAyMzksIDI0MSwgNTksIDYwLCAKKyAgICAyNDAsIDExMiwgNTksIDYwLCAyNDAsIDQ4LCA1OSwgNjAsIDI0MCwgMTc1LCA1OSwgNjAsIDIzOSwgMTg3LCA1OSwgNjAsIAorICAgIDI0MCwgNTgsIDU5LCA2MCwgMjM5LCAyNTAsIDU5LCA2MCwgMjQwLCAxMjEsIDU5LCA2MCwgMjM5LCAyMTgsIDU5LCA2MCwgCisgICAgMjQwLCA4OSwgNTksIDYwLCAyNDAsIDI1LCA1OSwgNjAsIDI0MCwgMTUyLCA1OSwgNjAsIDIzOSwgMjAyLCA1OSwgNjAsIAorICAgIDI0MCwgNzMsIDU5LCA2MCwgMjQwLCA5LCA1OSwgNjAsIDI0MCwgMTM2LCA1OSwgNjAsIDIzOSwgMjMzLCA1OSwgNjAsIDI0MCwgCisgICAgMTA0LCA1OSwgNjAsIDI0MCwgNDAsIDU5LCA2MCwgMjQwLCAxNjcsIDU5LCA2MCwgMjM5LCAxOTQsIDU5LCA2MCwgMjQwLCAKKyAgICA2NSwgNTksIDYwLCAyNDAsIDEsIDU5LCA2MCwgMjQwLCAxMjgsIDU5LCA2MCwgMjM5LCAyMjUsIDU5LCA2MCwgMjQwLCA5NiwgCisgICAgNTksIDYwLCAyNDAsIDMyLCA1OSwgNjAsIDI0MCwgMTU5LCA1OSwgNjAsIDIzOSwgMjA5LCA1OSwgNjAsIDI0MCwgODAsIDU5LCAKKyAgICA2MCwgMjQwLCAxNiwgNTksIDYwLCAyNDAsIDE0MywgNTksIDYwLCAyMzksIDI0MCwgNTksIDYwLCAyNDAsIDExMSwgNTksIAorICAgIDYwLCAyNDAsIDQ3LCA1OSwgNjAsIDI0MCwgMTc0LCA1OSwgNjAsIDIzOSwgMTgzLCA1OSwgNjAsIDI0MCwgNTQsIDU5LCA2MCwgCisgICAgMjM5LCAyNDYsIDU5LCA2MCwgMjQwLCAxMTcsIDU5LCA2MCwgMjM5LCAyMTQsIDU5LCA2MCwgMjQwLCA4NSwgNTksIDYwLCAKKyAgICAyNDAsIDIxLCA1OSwgNjAsIDI0MCwgMTQ4LCA1OSwgNjAsIDIzOSwgMTk4LCA1OSwgNjAsIDI0MCwgNjksIDU5LCA2MCwgCisgICAgMjQwLCA1LCA1OSwgNjAsIDI0MCwgMTMyLCA1OSwgNjAsIDIzOSwgMjI5LCA1OSwgNjAsIDI0MCwgMTAwLCA1OSwgNjAsIAorICAgIDI0MCwgMzYsIDU5LCA2MCwgMjQwLCAxNjMsIDU5LCA2MCwgMjM5LCAxOTAsIDU5LCA2MCwgMjQwLCA2MSwgNTksIDYwLCAKKyAgICAyMzksIDI1MywgNTksIDYwLCAyNDAsIDEyNCwgNTksIDYwLCAyMzksIDIyMSwgNTksIDYwLCAyNDAsIDkyLCA1OSwgNjAsIAorICAgIDI0MCwgMjgsIDU5LCA2MCwgMjQwLCAxNTUsIDU5LCA2MCwgMjM5LCAyMDUsIDU5LCA2MCwgMjQwLCA3NiwgNTksIDYwLCAKKyAgICAyNDAsIDEyLCA1OSwgNjAsIDI0MCwgMTM5LCA1OSwgNjAsIDIzOSwgMjM2LCA1OSwgNjAsIDI0MCwgMTA3LCA1OSwgNjAsIAorICAgIDI0MCwgNDMsIDU5LCA2MCwgMjQwLCAxNzAsIDU5LCA2MCwgMjM5LCAxODYsIDU5LCA2MCwgMjQwLCA1NywgNTksIDYwLCAKKyAgICAyMzksIDI0OSwgNTksIDYwLCAyNDAsIDEyMCwgNTksIDYwLCAyMzksIDIxNywgNTksIDYwLCAyNDAsIDg4LCA1OSwgNjAsIAorICAgIDI0MCwgMjQsIDU5LCA2MCwgMjQwLCAxNTEsIDU5LCA2MCwgMjM5LCAyMDEsIDU5LCA2MCwgMjQwLCA3MiwgNTksIDYwLCAKKyAgICAyNDAsIDgsIDU5LCA2MCwgMjQwLCAxMzUsIDU5LCA2MCwgMjM5LCAyMzIsIDU5LCA2MCwgMjQwLCAxMDMsIDU5LCA2MCwgCisgICAgMjQwLCAzOSwgNTksIDYwLCAyNDAsIDE2NiwgNTksIDYwLCAyMzksIDE5MywgNTksIDYwLCAyNDAsIDY0LCA1OSwgNjAsIAorICAgIDI0MCwgMCwgNTksIDYwLCAyNDAsIDEyNywgNTksIDYwLCAyMzksIDIyNCwgNTksIDYwLCAyNDAsIDk1LCA1OSwgNjAsIDI0MCwgCisgICAgMzEsIDU5LCA2MCwgMjQwLCAxNTgsIDU5LCA2MCwgMjM5LCAyMDgsIDU5LCA2MCwgMjQwLCA3OSwgNTksIDYwLCAyNDAsIDE1LCAKKyAgICA1OSwgNjAsIDI0MCwgMTQyLCA1OSwgNjAsIDIzOSwgMjM5LCA1OSwgNjAsIDI0MCwgMTEwLCA1OSwgNjAsIDI0MCwgNDYsIAorICAgIDU5LCA2MCwgMjQwLCAxNzMsIDU5LCA2MCwgMjM5LCAxODEsIDU5LCA2MCwgMjQwLCA1MiwgNTksIDYwLCAyMzksIDI0NCwgCisgICAgNTksIDYwLCAyNDAsIDExNSwgNTksIDYwLCAyMzksIDIxMiwgNTksIDYwLCAyNDAsIDgzLCA1OSwgNjAsIDI0MCwgMTksIDU5LCAKKyAgICA2MCwgMjQwLCAxNDYsIDU5LCA2MCwgMjM5LCAxOTYsIDU5LCA2MCwgMjQwLCA2NywgNTksIDYwLCAyNDAsIDMsIDU5LCA2MCwgCisgICAgMjQwLCAxMzAsIDU5LCA2MCwgMjM5LCAyMjcsIDU5LCA2MCwgMjQwLCA5OCwgNTksIDYwLCAyNDAsIDM0LCA1OSwgNjAsIAorICAgIDI0MCwgMTYxLCA1OSwgNjAsIDIzOSwgMTg4LCA1OSwgNjAsIDI0MCwgNTksIDU5LCA2MCwgMjM5LCAyNTEsIDU5LCA2MCwgCisgICAgMjQwLCAxMjIsIDU5LCA2MCwgMjM5LCAyMTksIDU5LCA2MCwgMjQwLCA5MCwgNTksIDYwLCAyNDAsIDI2LCA1OSwgNjAsIAorICAgIDI0MCwgMTUzLCA1OSwgNjAsIDIzOSwgMjAzLCA1OSwgNjAsIDI0MCwgNzQsIDU5LCA2MCwgMjQwLCAxMCwgNTksIDYwLCAKKyAgICAyNDAsIDEzNywgNTksIDYwLCAyMzksIDIzNCwgNTksIDYwLCAyNDAsIDEwNSwgNTksIDYwLCAyNDAsIDQxLCA1OSwgNjAsIAorICAgIDI0MCwgMTY4LCA1OSwgNjAsIDIzOSwgMTg0LCA1OSwgNjAsIDI0MCwgNTUsIDU5LCA2MCwgMjM5LCAyNDcsIDU5LCA2MCwgCisgICAgMjQwLCAxMTgsIDU5LCA2MCwgMjM5LCAyMTUsIDU5LCA2MCwgMjQwLCA4NiwgNTksIDYwLCAyNDAsIDIyLCA1OSwgNjAsIAorICAgIDI0MCwgMTQ5LCA1OSwgNjAsIDIzOSwgMTk5LCA1OSwgNjAsIDI0MCwgNzAsIDU5LCA2MCwgMjQwLCA2LCA1OSwgNjAsIDI0MCwgCisgICAgMTMzLCA1OSwgNjAsIDIzOSwgMjMwLCA1OSwgNjAsIDI0MCwgMTAxLCA1OSwgNjAsIDI0MCwgMzcsIDU5LCA2MCwgMjQwLCAKKyAgICAxNjQsIDU5LCA2MCwgMjM5LCAxOTEsIDU5LCA2MCwgMjQwLCA2MiwgNTksIDYwLCAyMzksIDI1NCwgNTksIDYwLCAyNDAsIAorICAgIDEyNSwgNTksIDYwLCAyMzksIDIyMiwgNTksIDYwLCAyNDAsIDkzLCA1OSwgNjAsIDI0MCwgMjksIDU5LCA2MCwgMjQwLCAKKyAgICAxNTYsIDU5LCA2MCwgMjM5LCAyMDYsIDU5LCA2MCwgMjQwLCA3NywgNTksIDYwLCAyNDAsIDEzLCA1OSwgNjAsIDI0MCwgCisgICAgMTQwLCA1OSwgNjAsIDIzOSwgMjM3LCA1OSwgNjAsIDI0MCwgMTA4LCA1OSwgNjAsIDI0MCwgNDQsIDU5LCA2MCwgMjQwLCAKKyAgICAxNzEsIDU5LCA2MCwgMjM5LCAxODIsIDU5LCA2MCwgMjQwLCA1MywgNTksIDYwLCAyMzksIDI0NSwgNTksIDYwLCAyNDAsIAorICAgIDExNiwgNTksIDYwLCAyMzksIDIxMywgNTksIDYwLCAyNDAsIDg0LCA1OSwgNjAsIDI0MCwgMjAsIDU5LCA2MCwgMjQwLCAKKyAgICAxNDcsIDU5LCA2MCwgMjM5LCAxOTcsIDU5LCA2MCwgMjQwLCA2OCwgNTksIDYwLCAyNDAsIDQsIDU5LCA2MCwgMjQwLCAxMzEsIAorICAgIDU5LCA2MCwgMjM5LCAyMjgsIDU5LCA2MCwgMjQwLCA5OSwgNTksIDYwLCAyNDAsIDM1LCA1OSwgNjAsIDI0MCwgMTYyLCA1OSwgCisgICAgNjAsIDIzOSwgMTg5LCA1OSwgNjAsIDI0MCwgNjAsIDU5LCA2MCwgMjM5LCAyNTIsIDU5LCA2MCwgMjQwLCAxMjMsIDU5LCAKKyAgICA2MCwgMjM5LCAyMjAsIDU5LCA2MCwgMjQwLCA5MSwgNTksIDYwLCAyNDAsIDI3LCA1OSwgNjAsIDI0MCwgMTU0LCA1OSwgNjAsIAorICAgIDIzOSwgMjA0LCA1OSwgNjAsIDI0MCwgNzUsIDU5LCA2MCwgMjQwLCAxMSwgNTksIDYwLCAyNDAsIDEzOCwgNTksIDYwLCAKKyAgICAyMzksIDIzNSwgNTksIDYwLCAyNDAsIDEwNiwgNTksIDYwLCAyNDAsIDQyLCA1OSwgNjAsIDI0MCwgMTY5LCA1OSwgNjAsIAorICAgIDIzOSwgMTg1LCA1OSwgNjAsIDI0MCwgNTYsIDU5LCA2MCwgMjM5LCAyNDgsIDU5LCA2MCwgMjQwLCAxMTksIDU5LCA2MCwgCisgICAgMjM5LCAyMTYsIDU5LCA2MCwgMjQwLCA4NywgNTksIDYwLCAyNDAsIDIzLCA1OSwgNjAsIDI0MCwgMTUwLCA1OSwgNjAsIAorICAgIDIzOSwgMjAwLCA1OSwgNjAsIDI0MCwgNzEsIDU5LCA2MCwgMjQwLCA3LCA1OSwgNjAsIDI0MCwgMTM0LCA1OSwgNjAsIDIzOSwgCisgICAgMjMxLCA1OSwgNjAsIDI0MCwgMTAyLCA1OSwgNjAsIDI0MCwgMzgsIDU5LCA2MCwgMjQwLCAxNjUsIDU5LCA2MCwgMjM5LCAKKyAgICAxOTIsIDU5LCA2MCwgMjQwLCA2MywgNTksIDYwLCAyMzksIDI1NSwgNTksIDYwLCAyNDAsIDEyNiwgNTksIDYwLCAyMzksIAorICAgIDIyMywgNTksIDYwLCAyNDAsIDk0LCA1OSwgNjAsIDI0MCwgMzAsIDU5LCA2MCwgMjQwLCAxNTcsIDU5LCA2MCwgMjM5LCAKKyAgICAyMDcsIDU5LCA2MCwgMjQwLCA3OCwgNTksIDYwLCAyNDAsIDE0LCA1OSwgNjAsIDI0MCwgMTQxLCA1OSwgNjAsIDIzOSwgCisgICAgMjM4LCA1OSwgNjAsIDI0MCwgMTA5LCA1OSwgNjAsIDI0MCwgNDUsIDU5LCA2MCwgMjQwLCAxNzIsIDg3LCAyMDQsIDE0MSwgCisgICAgNTUsIDMsIDgzLCA5NywgODcsIDIwNCwgMTQxLCA1NSwgMywgNTMsIDgzLCA5NywgOTgsIDUzLCA1NSwgMywgODMsIDk3LCAKKyAgICA4NywgNTMsIDU1LCAzLCA4MywgOTcsIDQ5LCA1MSwgNTMsIDU1LCAzLCA4MywgOTcsIDg3LCAyMDQsIDE0MSwgNTUsIDIzNiwgCisgICAgMjAxLCAxNDgsIDk4LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDg3LCA1MywgNTUsIDIzNiwgMjAxLCAxNDgsIDE5MSwgNTUsIAorICAgIDMsIDIzMywgMTc3LCA5NywgMTgyLCA1NSwgMywgMjMzLCAxNzcsIDk3LCAxODIsIDIwNSwgODMsIDQ4LCAxOTEsIDIwNSwgCisgICAgODMsIDQ4LCA5OCwgNTMsIDI0MSwgMjQ1LCA0OCwgODcsIDUzLCAyNDEsIDI0NSwgNDgsIDk4LCAyMDUsIDgzLCAyNDEsIAorICAgIDI0NSwgNDgsIDg3LCAyMDUsIDgzLCAyNDEsIDI0NSwgNDgsIDg3LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCAKKyAgICA4NywgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCAxODIsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA4NywgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgODcsIAorICAgIDIwNCwgMTQxLCA1NSwgMywgMjA3LCA2LCA4NywgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgODcsIDIwNCwgCisgICAgMTQxLCA1NSwgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgMjUwLCAyMDQsIDg3LCAyNTAsIDIwNCwgOTgsIDUzLCAKKyAgICAyNTAsIDIwNCwgODcsIDUzLCAyNTAsIDIwNCwgOTgsIDU1LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCA1NSwgMjA1LCAKKyAgICAxODYsIDYzLCAyNDEsIDY0LCA5OCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAyMDUsIDE4NiwgNjMsIDI0MSwgNjQsIDg3LCAKKyAgICA1NSwgMjM2LCAyMDEsIDI0OSwgNzcsIDIwNSwgMTg2LCA2MywgMjQxLCA2NCwgMTU3LCAyMDEsIDQ4LCAyNiwgMjA4LCAyNTQsIAorICAgIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgMTQsIDI2LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDgsIDE1NywgMjAxLCA0OCwgNTUsIAorICAgIDMsIDExNywgMTU3LCAyMzksIDE0LCA1NSwgMywgMTE3LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDMsIDExNywgMjA4LCAKKyAgICAyNTQsIDIwMSwgNDgsIDU1LCAzLCAxMTcsIDE1NywgMjAxLCA0OCwgNTUsIDI2LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIAorICAgIDIzOSwgMTQsIDU1LCAyNiwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI2LCAyMDgsIAorICAgIDI1NCwgMjAxLCA0OCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCA1NSwgMjYsIDE1NywgMjAxLCA0OCwgNDgsIDIxMywgMTksIAorICAgIDI0MSwgNzEsIDI0MiwgMjI4LCAyMzcsIDE3MSwgMjQxLCA3MCwgMjM3LCAxNzEsIDI0MSwgNzEsIDI0MiwgMjI4LCAyMTMsIAorICAgIDE5LCAyNDEsIDcwLCAyMDgsIDI1NCwgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIzOSwgMTQsIDQ4LCAxNTcsIDIzOSwgCisgICAgMTQsIDU1LCAyNDIsIDIyOCwgMjA4LCAyNTQsIDIzOSwgMTQsIDQ4LCAyMzcsIDE3MSwgMjQxLCA3MSwgMjQyLCAyMjgsIAorICAgIDE1NywgMjM5LCAxNCwgNDgsIDIxMywgMTksIDI0MSwgNzEsIDI0MiwgMjI4LCAyMDgsIDI1NCwgMjM5LCAxNCwgNDgsIDE1NywgCisgICAgMjM5LCAxNCwgNTUsIDI0MiwgMjI4LCAxNTcsIDIwMSwgNDgsIDQ4LCAxNTcsIDIwMSwgNDgsIDU1LCAyNDIsIDIyOCwgMTU3LCAKKyAgICAyMzksIDE0LCA0OCwgMjAxLCA3OCwgNTUsIDIxNSwgOTYsIDI0MSwgNywgMjEzLCA0NiwgNTUsIDIxNSwgOTYsIDg3LCAyMDYsIAorICAgIDk4LCAyNDIsIDE4NiwgMjAzLCAyMTYsIDU1LCAyMTUsIDk2LCA4NywgMjA2LCA5OCwgMjQyLCAxODYsIDIzOSwgMTY1LCA1NSwgCisgICAgMjE1LCA5NiwgMTkxLCAyMDYsIDk4LCAyNDIsIDE4NiwgMjI1LCAxOCwgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMjQyLCAKKyAgICAxODYsIDIxMywgMzUsIDIxMywgMzgsIDI1MCwgMjM3LCAyNDYsIDExMiwgNDgsIDIyNSwgMjEsIDI1MCwgMjM3LCAyNTEsIAorICAgIDQ3LCA0OCwgMjA1LCAxNTgsIDI1MCwgMjM3LCAyNTEsIDQ3LCA0OCwgMjQ4LCA5MywgMjUwLCAyMzcsIDI1MSwgNDcsIDQ4LCAKKyAgICAyMDUsIDE1OCwgMjUwLCAyMzcsIDI0NiwgMTEyLCA1NSwgMywgMjIxLCAxNTYsIDIwNSwgMTU4LCAyNTAsIDIzNywgMjUxLCAKKyAgICA0NywgNTUsIDMsIDIxNSwgMTEzLCAyMjQsIDU0LCA1MSwgMjEwLCAxNjksIDI0NiwgMTEyLCA0OCwgMjI0LCA1NCwgNDksIAorICAgIDIxMCwgMTY5LCAyNTEsIDQ3LCA0OCwgMjUxLCA0NywgMjQ2LCAxMTAsIDI0NiwgMTU2LCA0OCwgMjQ2LCAxMTIsIDI0NiwgCisgICAgMTEwLCAyNDYsIDE1NiwgNDgsIDg3LCA1NSwgODgsIDIwOSwgMjUwLCA5OCwgNDgsIDk4LCA1NSwgODgsIDIwOSwgMjUwLCAKKyAgICA4NywgNDgsIDIwOSwgMjUwLCA4NywgNTUsIDg4LCA5OCwgNDgsIDg3LCA1NSwgMywgOTMsIDU3LCA5OCwgNTUsIDMsIDkzLCAKKyAgICA1NywgODcsIDU1LCAyMDYsIDM4LCAyMDAsIDE5NSwgNDksIDUxLCA1NSwgMjA2LCAzOCwgNCwgMjQ2LCAxNTUsIDE4MiwgCisgICAgMjA0LCAxNDEsIDU1LCAyMzYsIDIwMSwgNCwgMjQ2LCAxNTUsIDQ5LCAxNTQsIDExNSwgNTEsIDE1NCwgMTI3LCAyMzQsIAorICAgIDE2MCwgNDksIDE1NCwgMTI3LCA1MSwgMTU0LCAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA0OSwgCisgICAgMjM0LCAxNjAsIDExNSwgMTU0LCA0OSwgMTI3LCAxNTQsIDUxLCAyMzQsIDE2MCwgNDksIDE1NCwgMTE1LCA1MSwgMTU0LCAKKyAgICAxMTUsIDIzNCwgMTYwLCAxMTUsIDE1NCwgNTEsIDEyNywgMTU0LCA1MSwgMjM0LCAxNjAsIDQ5LCAxNTQsIDEyNywgNTEsIAorICAgIDE1NCwgMTI3LCAyMzQsIDE2MCwgMTE1LCAxNTQsIDQ5LCAxMjcsIDE1NCwgNDksIDIzNCwgMTYwLCA5OCwgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMDUsIDE4NiwgMTQ4LCAKKyAgICAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMDUsIAorICAgIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMDUsIDE4NiwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCAxOTEsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIAorICAgIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDUxLCAyMzYsIDIwMSwgMTQ4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgCisgICAgMTI3LCAyMzYsIDIwMSwgMTQ4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyMzYsIDIwMSwgMTQ4LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIDQ5LCAyMzYsIDIwMSwgMTQ4LCAKKyAgICA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxODIsIDIzNCwgCisgICAgMTYxLCAzLCAxNTQsIDQ5LCAyNDgsIDIxMiwgMTgyLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA4NywgMjM0LCAxNjEsIAorICAgIDMsIDE1NCwgMTE1LCA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCAxOTEsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDQ5LCAyNDgsIDIxMiwgMTkxLCAyMzQsIDE2MSwgMywgMTU0LCAyMTMsIDQ2LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCAKKyAgICA4OCwgODcsIDIzNCwgMTYxLCAzLCAxNTQsIDIwMywgMjI4LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgODcsIAorICAgIDIzNCwgMTYxLCAzLCAxNTQsIDIzOSwgMTY3LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgOTgsIDIzNCwgMTYxLCAKKyAgICAzLCAxNTQsIDIwMywgMjI4LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCA4OCwgOTgsIDIzNCwgMTYxLCAzLCAxNTQsIAorICAgIDIzOSwgMTY3LCA5OCwgMjM0LCAxNjEsIDMsIDE1NCwgMTE1LCA4OCwgMTY4LCAyNDEsIDI0NCwgOTgsIDIzNCwgMTYxLCAzLCAKKyAgICAxNTQsIDEyNywgMjQ4LCAyMjgsIDE2OCwgMjQxLCAyNDQsIDg3LCAyMzQsIDE2MSwgMywgMTU0LCAxMTUsIDg4LCAxNjgsIAorICAgIDI0MSwgMjQ0LCA4NywgMjM0LCAxNjEsIDMsIDE1NCwgMTI3LCAyNDgsIDIyOCwgMTY4LCAyNDEsIDI0NCwgMTgyLCAyMzQsIAorICAgIDE2MSwgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE5MSwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgMTkxLCAyMzQsIDE2MSwgCisgICAgMywgMTU0LCA0OSwgMjQ4LCAyMTIsIDE4MiwgMjM0LCAxNjEsIDMsIDE1NCwgMjEzLCA0NiwgNTEsIDUzLCA1NSwgMywgMjEyLCAKKyAgICAyMTksIDIzNCwgMTM2LCAyMzgsIDEyMiwgMiwgODgsIDg3LCA0OCwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIAorICAgIDk4LCA1NSwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCA4NywgNTUsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgCisgICAgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMjQsIDI0MSwgODgsIDk4LCA0OCwgOTgsIDU1LCAyMDYsIDM4LCAyMjQsIDI0MCwgMjM1LCAKKyAgICA2NywgODgsIDg3LCA0OCwgMjA4LCAzLCA4OCwgODcsIDQ4LCA5OCwgNTUsIDIwNiwgMzgsIDIwOCwgMiwgMjA3LCAyMTIsIAorICAgIDg4LCA5OCwgNDgsIDQ5LCAyMzcsIDcyLCAyMDcsIDYsIDUxLCAyMzcsIDcyLCAyMDcsIDYsIDExNSwgMjM3LCA3MiwgMjA3LCAKKyAgICA2LCAxMjcsIDIzNywgNzIsIDIwNywgNiwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDI0MSwgMTQyLCAxOTksIDE1OCwgMjE4LCAKKyAgICAyMTMsIDIwOCwgMjA0LCAxOTksIDE1OCwgMjE4LCAyMTMsIDIwNCwgMTI4LCAyNDYsIDc5LCA0OSwgNjQsIDI0MiwgMTk2LCAKKyAgICAxNTksIDUxLCA2NCwgMjQyLCAxOTYsIDE1OSwgNDksIDY0LCAyMTYsIDExNSwgNTEsIDY0LCAyMTYsIDExNSwgMTk5LCAxNTgsIAorICAgIDIxOCwgMjEzLCA0OSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjI4LCAxMzMsIDE1OSwgMTk5LCAKKyAgICAxNTgsIDIxOCwgMjEzLCA0OSwgMjQ4LCAxNjcsIDE1OSwgMTk5LCAxNTgsIDIxOCwgMjEzLCA1MSwgMjQ4LCAxNjcsIDE1OSwgCisgICAgNDksIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNTEsIDUyLCAyNDgsIDcwLCAzLCAyMDMsIDI1MSwgNDksIDUyLCAyNDgsIAorICAgIDcwLCAzLCAyMDYsIDEyLCAyMjgsIDExOCwgMjA1LCAxNTgsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgCisgICAgMjI4LCAxMTgsIDI0OCwgOTMsIDI0MywgMTUsIDQ5LCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDI0OCwgCisgICAgOTMsIDI0MywgMTUsIDUxLCA1MiwgMjQ4LCA3MCwgMywgMjA2LCAxMiwgMjI4LCAxMTgsIDIwNSwgMTU4LCAyNDMsIDE1LCAKKyAgICA0OSwgMjUxLCA3MSwgMjQ4LCA3MCwgMywgMjQwLCAxODIsIDUxLCAyNTEsIDcxLCAyNDgsIDcwLCAzLCAyNDAsIDE4MiwgNDksIAorICAgIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA1MSwgMjUwLCAyMzcsIDIzNSwgNjcsIDE1OSwgNTMsIDQ5LCAyNTAsIDIzNywgCisgICAgMjM1LCA2NywgMTU5LCA1MywgNTEsIDI1MCwgMjM3LCAyMjQsIDI0MSwgMTU5LCA0OSwgNjMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAxNTksIDUxLCA2MywgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgMjM5LCAxODAsIDIzNywgMTI3LCA4MywgMTk5LCAyNywgCisgICAgMjI0LCAxNzYsIDIyMiwgNzMsIDI1MSwgNzEsIDIxNywgNDYsIDIyNSwgMjgsIDUxLCAyNTEsIDcxLCAyMDMsIDczLCAzLCAKKyAgICAyMDgsIDE5MywgMjIyLCA3MywgNTEsIDI1MSwgNzEsIDMsIDI0MCwgMTgyLCAyNTEsIDcxLCAzLCAyMTIsIDEyMywgMjI4LCAKKyAgICA3MywgMjUxLCAyMzksIDI1MSwgNzAsIDIwOCwgMjI0LCAyNTEsIDcxLCAyMTcsIDQ2LCAyMjUsIDI4LCAyMDgsIDIyNCwgCisgICAgMjUxLCA3MSwgMjE3LCA0NiwgMjAzLCAyMjgsIDIwNCwgMTg1LCAyNTEsIDcwLCAyMTMsIDEwNSwgMjUxLCA3MCwgMjUxLCAKKyAgICA3MSwgMywgMjAzLCAyNTEsIDIxMywgMTA1LCAyNTEsIDcxLCAzLCAyMDMsIDI1MSwgMjE3LCAxMzgsIDI1MSwgNzEsIDIxNywgCisgICAgNDYsIDIwMywgMjI4LCAyMTcsIDEzOCwgMjUxLCA3MSwgMjE3LCA0NiwgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIDIxMywgNDYsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDExNSwgMjYsIAorICAgIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgCisgICAgOTYsIDEyNywgMjYsIDIxMywgNDYsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIAorICAgIDExOCwgNTUsIDIxNSwgOTYsIDEyNywgMjYsIDIyNSwgMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIAorICAgIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgMjAzLCAyMjgsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIAorICAgIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDQ5LCAyNiwgMjAzLCAyMjgsIDIyMiwgCisgICAgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIDIxNSwgOTYsIDUxLCAyNiwgCisgICAgMjM5LCAxNjcsIDIyMiwgNzMsIDI1MSwgNzEsIDMsIDE3NiwgMjUwLCAyMTUsIDIzOCwgMTY4LCAyMjgsIDExOCwgNTUsIAorICAgIDIxNSwgOTYsIDQ5LCAyNiwgMjM5LCAxNjcsIDIxMywgMTA1LCAyMzgsIDE4MSwgMjEwLCAxNDEsIDIzOCwgMTgxLCAyMTAsIAorICAgIDE0MiwgMywgMjE2LCAyNDYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNCwgMjQ2LCAxNTYsIDU2LCAyMzgsIDE4MSwgMjEwLCAKKyAgICAxNDIsIDMsIDUxLCA1NSwgNTYsIDIzOCwgMTgxLCAyMTAsIDE0MiwgMywgNDksIDU1LCA1NiwgMjQ2LCAxNTYsIDMsIDIzMywgCisgICAgMTc3LCAxNDgsIDQ0LCA4MywgMTQ4LCA0NCwgMjE2LCAxMjAsIDQ0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNDQsIDIxNiwgMTQsIAorICAgIDI0NiwgMTU2LCAyNDAsIDI0MCwgMjQ3LCAyMzUsIDIzMywgMTc3LCAyNDksIDc3LCAyNiwgMjA1LCAxNTgsIDE2NywgMjQwLCAKKyAgICAyNDAsIDI0NywgMjM1LCA4MywgMTQ4LCAyNDYsIDE1NiwgMywgMjA3LCAyMTQsIDIwMCwgMTk1LCA0NCwgMjUxLCA0NSwgCisgICAgMjQwLCAyMzUsIDU0LCAxMTUsIDU1LCAyMDYsIDM4LCAyNDYsIDE1NSwgNDQsIDY0LCAyNDgsIDIwLCA0NCwgMjQ4LCAyMCwgCisgICAgNDQsIDIyNCwgMjQwLCA0NCwgMjM1LCA2NiwgMjQ2LCAxNTYsIDMsIDQsIDI0NiwgMTU2LCAyMDUsIDE4NiwgMjA2LCAxMDcsIAorICAgIDIxMywgNDYsIDI0NiwgMTU2LCAzLCAxMjAsIDIzMywgMTc3LCAyMDgsIDM1LCAyMDUsIDE4NiwgMjA2LCAxMDcsIDIxMywgCisgICAgNDYsIDk1LCAyMTMsIDE5LCAyNDEsIDcxLCAyMDksIDc1LCA5NSwgMjM3LCAxNzEsIDI0MSwgNzEsIDIwOSwgNzUsIDk1LCAKKyAgICAyNTAsIDE2NSwgOTUsIDQsIDI0NiwgMTU1LCA5NSwgMjA4LCAxOTMsIDEyMCwgMjI3LCAxNjMsIDIwOCwgMTkxLCAyMDUsIAorICAgIDk5LCAzLCA3MywgNTYsIDIwNSwgOTksIDMsIDIwMywgMjUxLCAyMTIsIDEyMywgMjI4LCAxMTgsIDIwNSwgOTgsIDIwNSwgCisgICAgOTksIDMsIDIxMCwgMTQ4LCAyNTAsIDE1NiwgMjQ4LCA5MiwgNTEsIDIwNSwgOTksIDg4LCA0OSwgMjA1LCA5OCwgNDksIAorICAgIDIwNSwgOTksIDI0OCwgMjEyLCA4MywgMTQ4LCA4MywgMjQ5LCA3NywgMjQ4LCAyMTIsIDUxLCAyMDUsIDk4LCAyNDgsIDgwLCAKKyAgICAzLCA0OSwgMTY3LCAyNDgsIDE0NCwgMjQ4LCA4MCwgMywgNTEsIDE2NywgMjQ4LCAxNDQsIDYzLCAyNDgsIDc5LCAyNCwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDI0LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjQsIDIzMywgMTExLCA2MywgMjMzLCAxMTEsIAorICAgIDQ5LCAyMDEsIDIyLCAyMzcsIDEyNywgNTEsIDIwMSwgMjIsIDIzNywgMTI3LCA0OSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAKKyAgICA1MSwgNTMsIDIwMSwgMjIsIDIzNywgMTI3LCAyMjgsIDExMCwgMjI4LCA5NCwgMjA2LCA4LCAxMTksIDIyOCwgOTQsIDIyOCwgCisgICAgOTUsIDIyMCwgMjgsIDMsIDgzLCAxNDgsIDIzOSwgMTc0LCAyMjEsIDIzLCA1MiwgMywgMjQzLCAzNywgMjE2LCAyNTEsIAorICAgIDIyOCwgMTA3LCAyNTAsIDE4OCwgMjA5LCAyMTQsIDIxNSwgMSwgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgCisgICAgMjM4LCAxMjIsIDIsIDI2LCAyMDksIDc3LCAyMTYsIDEyMSwgMywgMjA1LCAyNDEsIDU2LCAyMzIsIDIyMywgMjA1LCAxODYsIAorICAgIDI2LCAyMDksIDc3LCAyMTYsIDEyMCwgMjM1LCAxMjYsIDIwOCwgMTA4LCAyMDYsIDk1LCAyMzksIDE2NiwgMjA1LCA5OSwgMywgCisgICAgNDksIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTY2LCAyMDUsIDk5LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgNjMsIDI0MSwgNjUsIAorICAgIDMsIDEyNywgNDgsIDYzLCAyMjQsIDQ5LCA2NCwgMjQ2LCAxNTYsIDMsIDEyNywgNDgsIDYzLCAyNDYsIDE1NiwgMywgMTI3LCAKKyAgICA0OCwgMjM4LCAxMDcsIDY0LCAyMDgsIDE5MywgMjM4LCAxMDcsIDYzLCAyMDgsIDE5MywgMjM4LCAxMDcsIDY0LCAyNDEsIAorICAgIDY0LCAyMzgsIDEwNywgNjMsIDI0MSwgNjQsIDIzOCwgMTA3LCA2NCwgMjQ2LCAxNTUsIDIzOCwgMTA3LCA2MywgMjQ2LCAKKyAgICAxNTUsIDIxMiwgMTY0LCAyMTMsIDEwNiwgMjA5LCAxNywgMjE3LCA0MywgMjA5LCAxNywgMywgMjE2LCAyNDYsIDIxMywgCisgICAgMTA2LCAyMDksIDE3LCAzLCAyMzMsIDE3NywgOTcsIDI0OCwgMTc1LCAyMDksIDE2LCAyNDgsIDE3NSwgMjEzLCAxMDYsIAorICAgIDIwOSwgMTYsIDUzLCAyMTUsIDExMywgMjA1LCA4MywgMjE1LCAxMTMsIDIyNSwgMjMsIDI0MiwgMTg4LCAyNTEsIDcxLCAKKyAgICAxNTksIDIxMywgNDEsIDI0MiwgMTg4LCAyNTEsIDcxLCAxNTksIDIwNSwgMjI1LCAyMjEsIDE1NCwgMjIwLCAyMTMsIDQ0LCAKKyAgICA3MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCA5MywgMjE3LCA0MywgMjIwLCAyMTMsIDQ0LCAyNCwgMjE3LCA0MywgMjIwLCAKKyAgICAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyNDAsIDE4MiwgMjIwLCAyMTMsIDIwMywgMjQyLCAyMTcsIDQ0LCAzLCAyMTUsIAorICAgIDExMywgMjIwLCAyMTMsIDUyLCAyMjgsIDU2LCAyMTcsIDQzLCAyMjAsIDIxMywgNTIsIDIwMywgMjQyLCAyMTcsIDQzLCAKKyAgICAxMjAsIDIyNCwgOTgsIDI2LCAyMTcsIDQzLCAxMjAsIDIyNCwgOTgsIDIxNywgMzQsIDIxNywgNDMsIDIyMCwgMjEzLCAyNCwgCisgICAgMjE3LCA0MywgMjIxLCAxMTAsIDEyMCwgMjA3LCAyMzQsIDIwNywgMjMyLCAzLCAyMjgsIDY5LCAyMTQsIDkwLCAyMjgsIDcwLCAKKyAgICAyMTcsIDQzLCAyMzcsIDgwLCAyMTYsIDExMCwgMjI4LCA2OSwgMjI4LCA3MCwgMywgNTMsIDk3LCAyMjgsIDcwLCAyNTAsIAorICAgIDEyMCwgMywgMjA5LCA3NSwgMjQ2LCAxNDgsIDIzNiwgMTgwLCAyNTEsIDQ3LCAyMjgsIDY3LCAyMjQsIDE3NywgMjI4LCA2OCwgCisgICAgMywgMjEzLCAxNzQsIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMywgMjEwLCAxNjksIAorICAgIDIxNiwgOTEsIDI1MCwgMjEyLCAyMTUsIDkwLCAyMjQsIDE3NywgMjI4LCA2OCwgMjE4LCAyMTUsIDIyOCwgMTEyLCAyMDYsIAorICAgIDEwNywgMjE1LCA5MCwgMjI4LCA3MCwgMjUwLCAyMTIsIDM1LCAyMTUsIDEwMCwgMjE3LCA0MywgMjE0LCA4NCwgMjI4LCA3MCwgCisgICAgMjE3LCA0MywgMjI4LCA3MCwgMywgOTgsIDU1LCAzLCAxMTcsIDIyOCwgNzAsIDMsIDI0LCA1NCwgMjI4LCA3MCwgMywgMjI4LCAKKyAgICA1NSwgMjI4LCA3MCwgMywgMjAzLCAyNDEsIDIyOCwgNzAsIDMsIDIxNiwgMjQ2LCAyMjgsIDcwLCAzLCAyMDMsIDI1MSwgCisgICAgMjI3LCAxNjQsIDIyNSwgNzEsIDQ5LCAyMDUsIDk5LCAyMTcsIDQzLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAKKyAgICAyNDMsIDczLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMSwgMjI0LCAyMTUsIDE1MSwgMTk5LCAxNTgsIDIxOCwgMjEzLCAyMTEsIAorICAgIDIyNCwgMjE0LCAyNTIsIDkzLCAyLCAzLCA0LCAyNDYsIDE1NiwgNTYsIDkzLCAyLCAzLCAyNDYsIDE0NywgMjUxLCAyNTIsIAorICAgIDU2LCA5MywgMiwgMywgMjA1LCAyNDEsIDU2LCA5MywgMiwgMywgNzMsIDU3LCA5MywgMiwgMywgMjA1LCAyNDEsIDU3LCA5MywgCisgICAgMiwgMywgMjA4LCA0LCAxMDUsIDkzLCAyLCAzLCA2MywgMjA1LCA5OCwgMjIxLCAxNTcsIDIsIDMsIDI0NiwgNzEsIDU2LCAKKyAgICAyMjEsIDE1NywgMiwgMywgNzMsIDU3LCAyMjEsIDE1NywgMiwgMywgMjM3LCAxNzEsIDI0MCwgMTgwLCAyMjEsIDE1NywgMiwgCisgICAgMywgMjEzLCAxOSwgMjQwLCAxODAsIDkzLCAyLCAyMjgsIDExOCwgNDksIDE2NywgMjQ2LCAxNTUsIDkzLCAyLCAyMjgsIAorICAgIDExOCwgNTEsIDE2NywgMjQ2LCAxNTUsIDIwMywgNTgsIDIxNywgMzQsIDI0MiwgMjM1LCAyMTUsIDEsIDIyMSwgMTksIDIsIAorICAgIDMsIDczLCA1NiwgMjIxLCAxOSwgMiwgMywgMjAzLCAyNTEsIDIxMCwgMTY2LCAyMTUsIDIsIDMsIDI0OCwgOTMsIDI0NiwgCisgICAgMTA5LCAyMDksIDUxLCAyMTUsIDEsIDIyMSwgMTksIDIsIDIyOCwgMTE4LCA0OSwgMTY3LCAyNDYsIDE1NSwgMjIxLCAxOSwgCisgICAgMiwgMjI4LCAxMTgsIDUxLCAxNjcsIDI0NiwgMTU1LCA0NCwgMjIxLCAxOSwgMiwgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAKKyAgICAyMjEsIDE5LCAyLCAyMjgsIDExOCwgNTMsIDI0NiwgMTU1LCA0NCwgMjQwLCAyMzUsIDU0LCA5MywgMiwgMjI4LCAxMTgsIAorICAgIDIwNSwgOTgsIDIyMSwgMTU3LCAyLCAyMjgsIDExOCwgMjA1LCA5OCwgMjIxLCAxOSwgMiwgMjI4LCAxMTgsIDIwNSwgOTgsIAorICAgIDIyOCwgNjQsIDIxNSwgMSwgMjEzLCAzNiwgMjI4LCA2NCwgMjE1LCAxLCAxOTksIDE1OCwgMjE4LCAyMTMsIDIxMywgMTQ4LCAKKyAgICAyNDMsIDczLCAyNTEsIDk5LCAyMTcsIDM0LCAyNDMsIDIxLCAyMjgsIDU2LCAzLCAyNDAsIDE4MiwgMjAzLCAyNDIsIDMsIAorICAgIDIyMSwgMTU3LCA1NCwgMjAzLCAyNDIsIDMsIDIxNiwgMjQ2LCAyMjgsIDU2LCAzLCAyMTYsIDI0NiwgMjI4LCA1NiwgMywgCisgICAgMjI0LCA5OCwgMjUxLCA3OSwgMjAzLCAyNDIsIDMsIDIyNCwgOTgsIDIxNywgMzMsIDIwMywgMjQyLCA4OCwgMjI4LCA1NSwgCisgICAgMjI4LCA1NiwgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgODgsIDI0OSwgNzcsIDg4LCAyMjgsIDU1LCAyMjgsIDU2LCA4OCwgCisgICAgMjQ5LCA3NywgODgsIDIwMywgMjQxLCAyMDMsIDI0MiwgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMywgMjAzLCAyNDEsIAorICAgIDIyOCwgNTYsIDI0OCwgMjEyLCAyNiwgMjI3LCAxNjMsIDMsIDIyOCwgNTUsIDI0NiwgMTEwLCAyMDMsIDI0MiwgMywgMjEwLCAKKyAgICAxNDcsIDI0NiwgMTEwLCAyMjgsIDU2LCAzLCAyMTAsIDE0NywgNTMsIDUyLCAyMjgsIDU1LCA1MywgNTIsIDIwMywgMjQxLCAKKyAgICAyNDYsIDExMCwgMjAzLCAyNDIsIDMsIDIxMCwgMTQ4LCAyNiwgMjA5LCA1MSwgMjE1LCAxLCAyMjQsIDk4LCAyNiwgMywgNzMsIAorICAgIDU2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA3MywgNTYsIDUzLCAyMjQsIDk4LCAyNTEsIDc5LCA1MywgMjI0LCA5OCwgMjE3LCAKKyAgICAzMywgMTIwLCAyMjgsIDU3LCAyMjQsIDk4LCAyNTEsIDc5LCAxMjAsIDIyOCwgNTcsIDIyNCwgOTgsIDIxNywgMzMsIDIwOSwgCisgICAgNjAsIDIyNSwgNzEsIDIxNywgMzMsIDIwOSwgNjAsIDIyNSwgNzEsIDI1MSwgNzksIDIyNCwgOTgsIDIxNywgMzQsIDIxNiwgCisgICAgMjQzLCAyMjQsIDk4LCAyNTEsIDc5LCAyMjQsIDk4LCAyNiwgMywgMTAxLCAyMDgsIDkyLCAyMjQsIDk4LCAyMTcsIDM0LCAzLCAKKyAgICAxMDEsIDIwOCwgOTIsIDIyNCwgOTgsIDI2LCAzLCAyMzMsIDE3NywgMjQxLCAyNDQsIDIyNCwgOTgsIDIxNywgMzQsIDMsIAorICAgIDIzMywgMTc3LCAyNDEsIDI0NCwgMjI0LCA5OCwgMjYsIDMsIDUzLCAyMTYsIDI0NiwgMjI0LCA5OCwgMjYsIDMsIDIwMywgCisgICAgMjUxLCAyMjQsIDk4LCAyNiwgMywgNTMsIDIwMywgMjUxLCA0LCAyMDMsIDU1LCAzLCAyMDMsIDI1MSwgMjI0LCA5OCwgMjE3LCAKKyAgICAzNCwgMywgNTMsIDIxNiwgMjQ2LCAyMjQsIDk4LCAyMTcsIDM0LCAzLCA1MywgMjAzLCAyNTEsIDE5OSwgMTU4LCAyMTgsIAorICAgIDIxMywgMjQwLCAxOTEsIDI1MSwgMzcsIDE5OSwgMTU4LCAyMTgsIDIxMywgMjEzLCAyMTEsIDI1MSwgMzcsIDIzOCwgMTIyLCAKKyAgICAyLCAzLCA3MywgNTcsIDIzMiwgMjIzLCAzLCA3MywgNTYsIDIwNSwgODMsIDIzMywgMTc3LCAyNDksIDc3LCAzLCA1MywgODMsIAorICAgIDk3LCAyMDUsIDgzLCAyMzMsIDE3NywgMjQ5LCA3NywgMywgMjA1LCA4MywgODMsIDk3LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgCisgICAgNzMsIDU2LCAyMDUsIDI0MSwgMjE3LCA0NCwgMywgMjEzLCAxOSwgMjQwLCAxODAsIDIwOSwgMTQ4LCAyMjEsIDE1NywgMjA5LCAKKyAgICAxNDcsIDI0MywgNjAsIDMsIDczLCA1NiwgMjM4LCAxMjIsIDMsIDI1MCwgMTY1LCAyNTEsIDExNywgMTYwLCAyMDUsIDE4NiwgCisgICAgMywgMjQ2LCAxNDcsIDI1MSwgMjUxLCAyNTEsIDQsIDE2MCwgMjE3LCAzNCwgMTYwLCAxMzgsIDIzOCwgMTIyLCAyLCA4OCwgCisgICAgOTMsIDU0LCA5MywgMiwgODgsIDIzOCwgMTIyLCA1NCwgMjM4LCAxMjIsIDIsIDg4LCAyMDUsIDI0MSwgMjE3LCA0MywgNTMsIAorICAgIDI0NiwgODAsIDIzOCwgMTIzLCAxMjAsIDI0MywgNTMsIDIzOCwgMTIyLCAyMDksIDE2MiwgMTI2LCAyNDMsIDUzLCAyMzgsIAorICAgIDEyMiwgMjA5LCAxNjIsIDIzOCwgMTIyLCAyLCAzLCAxMjAsIDE5MCwgODgsIDI2LCAxMjAsIDE5MCwgNTcsIDIzOCwgMTE3LCAKKyAgICAzLCAyMzYsIDIyOSwgMTkwLCA1NiwgMjI0LCAyNDEsIDMsIDI0NiwgMTU2LCAyMjgsIDczLCAyMzUsIDY3LCAzLCAyNDYsIAorICAgIDE1NiwgMjI4LCA3MywgMjI0LCAyNDEsIDMsIDIxNCwgNzksIDEzNCwgNTYsIDIzNSwgNjcsIDMsIDIxNCwgNzksIDEzNCwgCisgICAgNTYsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDEzOCwgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAKKyAgICAxMzgsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgMjI4LCA3MywgMjM1LCA2NywgCisgICAgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDIyOCwgNzMsIDIyNCwgMjQxLCAyMTcsIDM0LCAyMDksIAorICAgIDc3LCAxNjAsIDIwNSwgMTg2LCAzLCA3MywgNTYsIDIzNSwgNjcsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIAorICAgIDMsIDczLCA1NiwgMjI0LCAyNDEsIDIxNywgMzQsIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA4OCwgMjEzLCA0NiwgCisgICAgMjM1LCA2NywgMjE3LCAzNCwgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMywgNzMsIDg4LCAyMjUsIDI4LCAyMjQsIDI0MSwgCisgICAgMjE3LCAzNCwgMjUxLCA1LCAyMzUsIDY3LCAyMTcsIDM0LCAyNTEsIDUsIDIyNCwgMjQxLCAyNiwgMjA5LCAxMzcsIDIxOCwgCisgICAgMjE1LCAxNjAsIDEzOCwgMjM1LCA2NywgMjYsIDIwOSwgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIyNCwgMjQxLCAyNiwgCisgICAgMjE4LCAyMTUsIDI1MSwgNSwgMjM1LCA2NywgMjYsIDIxOCwgMjE1LCAyNTEsIDUsIDIyNCwgMjQxLCA4OCwgMjM5LCAxNzMsIAorICAgIDE2MCwgODgsIDIzNSwgNjYsIDIzNSwgNjcsIDg4LCAyMzksIDE3MywgMTYwLCA4OCwgMjI0LCAyNDAsIDIyNCwgMjQxLCA4OCwgCisgICAgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAyMzUsIDY3LCA4OCwgMjA5LCAxNDgsIDIxNywgMzQsIDIzOCwgMTIzLCAKKyAgICAyMjQsIDI0MSwgODgsIDIwOSwgMTQ4LCA4OCwgMjM1LCA2NiwgMjM1LCA2NywgODgsIDIwOSwgMTQ4LCA4OCwgMjI0LCAyNDAsIAorICAgIDIyNCwgMjQxLCA4OCwgMjM1LCA2NywgODgsIDIzOSwgMTczLCAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIyNCwgMjQxLCA4OCwgCisgICAgMjM5LCAxNzMsIDIzOCwgMTIzLCAyMjQsIDI0MSwgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIzNSwgNjcsIDg4LCAyMDksIDc3LCAKKyAgICAyMzgsIDEyMywgMjM1LCA2NywgODgsIDIwOSwgNzcsIDE2MCwgODgsIDIyNCwgMjQxLCA4OCwgMjA5LCA3NywgMjM4LCAxMjMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIyNCwgMjQwLCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIAorICAgIDM0LCAyMzUsIDY2LCAyMDksIDc3LCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMjQsIDI0MSwgMywgNzMsIDIyOCwgNzMsIAorICAgIDIwOSwgNzcsIDE2MCwgMjA1LCAxODYsIDIxNywgMzQsIDIzNSwgNjcsIDMsIDczLCAyMjgsIDczLCAyMzksIDE3MywgMTYwLCAKKyAgICAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAKKyAgICAyMzksIDE3MywgMjA5LCA3NywgMTYwLCAyMDUsIDE4NiwgMjE3LCAzNCwgMjI0LCAyNDAsIDIzOSwgMTczLCAyMDksIDc3LCAKKyAgICAxNjAsIDIwNSwgMTg2LCAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgMjE3LCAzNCwgMjI0LCAyNDAsIDIwOSwgMTQ4LCAKKyAgICAyMTcsIDM0LCAyMzUsIDY2LCAyMDksIDE0OCwgODgsIDIyNCwgMjQxLCA4OCwgMjM4LCAxMjIsIDU0LCAyMDksIDE0OCwgODgsIAorICAgIDIzNSwgNjcsIDg4LCAyMzgsIDEyMiwgNTQsIDUzLCAyMjAsIDE1LCAyMjQsIDI0MCwgNTMsIDIyMCwgMTUsIDIzNSwgNjYsIAorICAgIDUzLCAyMjAsIDE1LCAyMjQsIDI0MSwgMywgMjAzLCAyNTEsIDIzNSwgNjcsIDIxNiwgMjQzLCAyMjQsIDI0MCwgMjM1LCA2NywgCisgICAgMjQ4LCAyMTIsIDIyNCwgMjQwLCAyMjQsIDI0MSwgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjM1LCA2NywgMjQ2LCAKKyAgICAxMTAsIDI0NywgMjM1LCAyNDIsIDE4OSwgMjI0LCAyNDEsIDI0NiwgMTEwLCAyNDcsIDIzNSwgMjQyLCAxOTAsIDg4LCAyMDksIAorICAgIDc3LCAyMzgsIDEyMywgMjM1LCA2NywgMjQ2LCAxMTAsIDI0NywgMjM1LCAyNDIsIDE5MCwgODgsIDIwOSwgNzcsIDIzOCwgCisgICAgMTIzLCAyMDksIDUyLCAyMDYsIDExMSwgMjI1LCA2OSwgMjA2LCAxMTEsIDIwOSwgNTIsIDIwNiwgMTEyLCAyMTcsIDM0LCAKKyAgICAxNjAsIDEzOCwgMjI1LCA2OSwgMjA2LCAxMTIsIDIxNywgMzQsIDE2MCwgMTM4LCAyMzgsIDEyMiwgMiwgMywgMjQ4LCAxMywgCisgICAgNTYsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjM4LCAxMjIsIDU0LCAyMDcsIDI1MSwgODgsIDIwOSwgMTM3LCAyMzgsIAorICAgIDEyMiwgNTQsIDIxNSwgMjksIDg4LCAyMDksIDEzNywgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIwOSwgCisgICAgMTM3LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIxNSwgMjksIDg4LCAyMzgsIDEyMiwgNTQsIDIwNywgMjUxLCA4OCwgMjM4LCAKKyAgICAxMjIsIDU0LCAyMTUsIDI5LCA4OCwgMjE4LCAyMTUsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAxNjAsIAorICAgIDEzOCwgMjE1LCAyOSwgODgsIDI1MSwgMTE3LCAxNjAsIDEzOCwgMjA3LCAyNTEsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDIxNSwgMjksIDg4LCAyMTgsIDIxNSwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDI1MSwgODgsIDIxOCwgMjE1LCAyNTEsIAorICAgIDExNywgMTYwLCAxMzgsIDUzLCAyMTUsIDI4LCA1MywgMjA3LCAyNTAsIDIwOCwgMywgMywgMjQwLCAxODIsIDIwNywgMjEyLCAKKyAgICAzLCAyNDAsIDE4MiwgMjA4LCAzLCAzLCA5MywgMiwgNTcsIDIwNywgMjEyLCAzLCA5MywgMiwgNTcsIDIwOCwgMywgMywgCisgICAgMjIxLCAxOSwgMiwgNTcsIDIwNywgMjEyLCAzLCAyMjEsIDE5LCAyLCA1NywgMjA4LCAzLCA3NiwgMjE3LCAzNCwgMTYwLCAKKyAgICAyMDUsIDE4NiwgMywgNzMsIDU2LCAyMDcsIDIxMiwgNzYsIDIxNywgMzQsIDE2MCwgMjA1LCAxODYsIDMsIDczLCA1NiwgCisgICAgMjA4LCAzLCA3NiwgODgsIDIzOCwgMTIyLCA1NCwgMjA3LCAyMTIsIDc2LCA4OCwgMjM4LCAxMjIsIDU0LCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjA1LCAyNDEsIDIxNywgNDMsIDIwNywgMjEyLCA3NiwgODgsIDIwNSwgMjQxLCAyMTcsIDQzLCAyMDgsIDMsIDc2LCAKKyAgICA4OCwgMjUxLCAxMTcsIDE2MCwgMTM4LCAyMDcsIDIxMiwgNzYsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIDIwOCwgMywgNzYsIAorICAgIDg4LCAyMTgsIDIxNSwgMTYwLCAxMzgsIDIwNywgMjEyLCA3NiwgODgsIDIxOCwgMjE1LCAxNjAsIDEzOCwgNTIsIDQ5LCAKKyAgICAxNzYsIDEwMCwgMjE3LCA0MywgNTIsIDUxLCAxNzYsIDEwMCwgMjE3LCA0MywgMjQ2LCAxMTAsIDIwOCwgMiwgMjQ2LCAxMTAsIAorICAgIDIwNywgMjExLCAyNDYsIDExMCwgMjA4LCAzLCAyMTcsIDM0LCAxNjAsIDEzOCwgMjQ2LCAxMTAsIDIwNywgMjEyLCAyMTcsIAorICAgIDM0LCAxNjAsIDEzOCwgMjA4LCAzLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCA4OCwgMjA4LCAyLCAyMDgsIDMsIDg4LCAKKyAgICAyMDgsIDIsIDIwNywgMjEyLCA4OCwgMjA3LCAyMTEsIDIwNywgMjEyLCAyNDgsIDIxMiwgMjA4LCAyLCAyMDcsIDIxMiwgCisgICAgMjQ4LCAyMTIsIDI2LCAyMjcsIDE2MywgMjQ3LCAyMzUsIDI0MSwgMjQ1LCAzLCAyMDgsIDIsIDIzOCwgMjAyLCA3NiwgMjE3LCAKKyAgICA0NiwgMjM5LCAxNjUsIDIxNSwgMTQxLCAzLCAyMDYsIDE5MSwgMjA1LCAxNTcsIDIwNSwgMTE1LCAyMjgsIDU1LCAyMzYsIAorICAgIDI0MywgMjE4LCAyMzAsIDIwOSwgMjUwLCA0OSwgMjA3LCAxNywgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgMjA5LCAyNTAsIAorICAgIDExNSwgMjA3LCAxNywgMjE2LCAxNSwgMywgMjEyLCAxMjIsIDgzLCAyNDksIDc3LCAyMDUsIDgzLCA1MSwgMjA0LCAxODQsIAorICAgIDUzLCA4MywgMjQ5LCA3NywgNDksIDIwNCwgMTg0LCA4MywgMjQ5LCA3NywgNTMsIDQ5LCAyMDQsIDE4NCwgNTMsIDgzLCAKKyAgICAyNDksIDc3LCA1MywgNDksIDIwNCwgMTg0LCAxNjgsIDI0MSwgMjQ1LCAyMzYsIDIwMSwgNDksIDIyMiwgNDUsIDc2LCA1MywgCisgICAgMjAzLCA0MiwgMjA5LCAyNTAsIDEyNywgMjA3LCAxOCwgMywgMjE2LCAyNDYsIDIwOSwgMjUwLCAxMTUsIDIwNywgMTgsIDMsIAorICAgIDIwMywgMjUxLCAyMDksIDI1MCwgMTE1LCAyMDcsIDE4LCA4OCwgMjA5LCAyNTAsIDEyNywgMjA3LCAxNywgNTMsIDEyNywgCisgICAgMjA3LCAxNywgNTMsIDExNSwgMjA3LCAxNywgNTMsIDIwOCwgNDcsIDIxOCwgMjE1LCA1NCwgMjEzLCAxMDUsIDUzLCAyMDgsIAorICAgIDQ3LCAyMTgsIDIxNSwgNTQsIDI0MCwgMjAyLCAyMTgsIDIxNSwgMjQwLCAyNDIsIDMsIDIxMywgMTA1LCAyMjAsIDI3LCAKKyAgICAyMDksIDc1LCA4MywgMjI0LCAxNzcsIDMsIDI0NiwgMTU2LCA1NiwgODMsIDIyNCwgMTc3LCAzLCAyNDYsIDE1NiwgNTcsIAorICAgIDEyNywgMjA3LCAxOCwgMywgMjQ2LCAxNTYsIDU3LCAyMTYsIDEyMSwgMywgMjMzLCAxNzcsIDk3LCAyMTYsIDEyMSwgMywgCisgICAgMjA1LCAyNDEsIDIxNywgNDMsIDIwNSwgODMsIDgzLCAyNDksIDc3LCAyNDgsIDE2OSwgMjEzLCAxNDksIDIwNSwgODMsIDgzLCAKKyAgICAyNDksIDc3LCAzLCAyMzMsIDE3NywgOTcsIDIwNSwgODMsIDI0NiwgODAsIDIxNywgNDMsIDIwNSwgODMsIDIyMCwgMTUsIAorICAgIDIyNCwgMjQwLCAyMDUsIDgzLCAyMjAsIDE1LCAyMzUsIDY2LCAyMzksIDE3MywgMjA5LCA3NywgMjI0LCAyNDEsIDIxNywgCisgICAgMzQsIDE2MCwgMTM4LCAyMzksIDE3MywgMjA5LCA3NywgMjM1LCA2NywgMjE3LCAzNCwgMTYwLCAxMzgsIDIwNSwgODMsIAorICAgIDIwOSwgMTcsIDI0OCwgMTY5LCAyMTMsIDE0OSwgMjI1LCA3MSwgMjA1LCA4MywgODMsIDI0OSwgNzcsIDIxNywgNDMsIDUzLCAKKyAgICAyMDksIDE3LCAyMTcsIDQzLCA2NCwgODMsIDE0OCwgMjIwLCAyMTMsIDY0LCA4MywgMTQ4LCAxNTcsIDIzOSwgMTQsIDY0LCAKKyAgICA0OCwgMTU3LCAyMDEsIDQ4LCA2NCwgNDgsIDIwOCwgMjU0LCAyMzksIDE0LCA2NCwgNDgsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICA2NCwgNDgsIDQ5LCA1MSwgNjQsIDQ4LCA5OCwgNjMsIDQ4LCAxODIsIDYzLCA0OCwgMTkxLCA2MywgNDgsIDE1NywgMjM5LCAKKyAgICAxNCwgNjMsIDQ4LCAxNTcsIDIwMSwgNDgsIDYzLCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIDYzLCA0OCwgMjA4LCAyNTQsIAorICAgIDIwMSwgNDgsIDYzLCA0OCwgNDksIDUxLCA2MywgNDgsIDExNSwgMTI3LCA2MywgNDgsIDg3LCA1NSwgMywgMjA1LCAyMjQsIAorICAgIDIzOSwgMTY1LCA4NywgNTUsIDMsIDIwNSwgMjI0LCAyMDMsIDIxNiwgOTgsIDU1LCAzLCAyMDUsIDIyNCwgMjM5LCAxNjUsIAorICAgIDk4LCA1NSwgMywgMjA1LCAyMjQsIDIwMywgMjE2LCA1MiwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDUyLCAzLCAKKyAgICAyNDgsIDkzLCAxNjcsIDI0OCwgMTQ0LCA1MiwgMywgMjAzLCAyMjUsIDUxLCAyNDEsIDcxLCAxNjcsIDI0OCwgMTQ0LCA1MiwgCisgICAgMywgMjI0LCA1NCwgNDksIDI0MSwgNzEsIDE2NywgMjQ4LCAxNDQsIDI0MSwgNjUsIDMsIDQ5LCAxNjcsIDI0OCwgMTQ0LCAKKyAgICAyNDEsIDY1LCAzLCA1MSwgMTY3LCAyNDgsIDE0NCwgMjQxLCA2NSwgMywgMjA1LCAxNTgsIDE2NywgMjQ4LCAxNDQsIDI0MSwgCisgICAgNjUsIDMsIDI0OCwgOTMsIDE2NywgMjQ4LCAxNDQsIDIzOSwgMTgwLCAyMDgsIDE5MywgNjMsIDIyNSwgNzEsIDIwOCwgMTkzLCAKKyAgICA2NCwgMjI1LCA3MSwgMjA4LCAxOTMsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAxOTMsIDY0LCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDYzLCAyMTYsIDM3LCA2NCwgMjE2LCAzNywgNjQsIDIzNCwgODksIDYzLCAyMzQsIDg5LCAyMzMsIDE3NywgNjMsIAorICAgIDIzNCwgODksIDYzLCAyMjUsIDcxLCAyNDYsIDE1NSwgNjMsIDIyMiwgNjYsIDI0MSwgNjQsIDY0LCAyMjIsIDY2LCAyNDEsIAorICAgIDY0LCA2MywgMjIyLCA2NiwgMjI0LCA0OSwgNjQsIDIyMiwgNjYsIDIyNCwgNDksIDYzLCA0LCAyNDEsIDY0LCA2MywgNCwgCisgICAgMjI0LCA0OSwgNjQsIDQsIDIyNCwgNDksIDYzLCAyMzMsIDE3NywgMjM4LCAxOTYsIDY0LCAyMzMsIDE3NywgMjM4LCAxOTYsIAorICAgIDYzLCA4MywgMjM4LCAxOTYsIDY0LCA4MywgMjM4LCAxOTYsIDQ5LCA1NSwgMywgNCwgMjQ2LCAxNTUsIDEyNiwgOTgsIDI1MCwgCisgICAgMTk5LCA0OSwgNTUsIDMsIDQ0LCAyMTUsIDExMywgMTY4LCA5OCwgMjA4LCAxODYsIDQ4LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAKKyAgICA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDUzLCA4MywgOTcsIDk4LCAyMDQsIDE0MSwgNTUsIDIzNiwgMjAxLCAxNDgsIAorICAgIDk4LCAyMDQsIDE0MSwgMjA1LCA4MywgMjQxLCAyNDUsIDQ4LCA5OCwgNTUsIDMsIDIzOSwgMTgwLCAyMDgsIDkyLCA5OCwgCisgICAgNTUsIDMsIDIwNywgNywgMywgODMsIDk3LCA5OCwgNTUsIDMsIDIwNywgNywgMywgNTMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCAKKyAgICA1NSwgMywgMjA3LCA2LCA5OCwgMjA0LCAxNDEsIDU1LCAzLCAyMDcsIDcsIDMsIDgzLCA5NywgOTgsIDIwNCwgMTQxLCA1NSwgCisgICAgMywgMjA3LCA3LCAzLCA1MywgODMsIDk3LCA5OCwgNTUsIDIwNiwgMzgsIDIwMCwgMTk1LCAyMDEsIDc4LCA1NSwgMjE1LCAKKyAgICA5NiwgMjQxLCA3LCAyMjUsIDI4LCAyMzgsIDEyMiwgMiwgODgsIDk4LCA0OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAyMTcsIAorICAgIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyMTMsIDEwNiwgMjUxLCAxMTcsIDE2MCwgMTM4LCA4NywgNTUsIDIwNiwgCisgICAgMzgsIDIzNSwgNjYsIDg3LCA1NSwgMjA2LCAzOCwgMjA3LCAyMTEsIDk4LCAyMTQsIDkwLCA0OCwgODcsIDIxNCwgOTAsIDQ4LCAKKyAgICAyMTMsIDEwNiwgMjA1LCAyNDEsIDIxNywgNDQsIDg4LCA4NywgNDgsIDg3LCA1NSwgODgsIDIxMywgMTA2LCAyNTEsIDExNywgCisgICAgMTYwLCAxMzgsIDIwNSwgMjQxLCAyMTcsIDQ0LCA4OCwgOTgsIDQ4LCA5OCwgNTUsIDg4LCAyNTEsIDExNywgMTYwLCAxMzgsIAorICAgIDk4LCA1NSwgODgsIDIxMywgMTA2LCAyMDUsIDI0MSwgMjE3LCA0MywgODcsIDU1LCA4OCwgMjEzLCAxMDYsIDIwNSwgMjQxLCAKKyAgICAyMTcsIDQzLCAxOTEsIDIwNSwgOTcsIDE5OSwgMjcsIDQ4LCAyMDksIDI1MCwgMjA5LCA3NywgMTU3LCA0OCwgMjA5LCAyNTAsIAorICAgIDI0OSwgMTI2LCAyMDgsIDI1NCwgNDgsIDY0LCAyMjIsIDY2LCAyMDgsIDEwOSwgNjMsIDQsIDIwOCwgMTA5LCA2NCwgNCwgCisgICAgMjA4LCAxMDksIDYzLCAyMTMsIDQxLCAyMTYsIDM3LCA2NCwgMjEzLCA0MSwgMjE2LCAzNywgODAsIDIyNSwgNzEsIDI0NiwgCisgICAgMTU1LCA4MCwgMjE2LCAyNDgsIDMsIDIxNiwgMjQ4LCAyMjgsIDczLCA4MCwgMjQ2LCAxNTYsIDMsIDI0NiwgMTU2LCAyMjgsIAorICAgIDczLCA4MCwgMjQ2LCAxNTUsIDgwLCA0NCwgMjEyLCAyNCwgMjA5LCA3NywgMTU3LCA1NSwgMywgMjMzLCAxODYsIDIzNCwgCisgICAgMTM2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE4NiwgMjA3LCA2LCAyMDksIDc3LCAxNTcsIDU1LCAzLCAKKyAgICAyMzMsIDE3NywgMjA3LCA2LCAyNDksIDEyNiwgMjA4LCAyNTQsIDU1LCAzLCAyMzMsIDE3NywgMjA3LCA2LCAyNDgsIDIyMCwgCisgICAgNTUsIDIxNSwgOTYsIDE5MSwgMjA2LCA5OCwgMTU3LCAyMzksIDEzLCAyMDksIDI1MCwgMjQ4LCAyMjAsIDU1LCAyMTUsIDk2LCAKKyAgICAxOTEsIDIwNiwgOTgsIDE1NywgMjM5LCAxMywgOTgsIDIwNSwgOTcsIDQ4LCAxODIsIDIwNSwgOTcsIDQ4LCA4NywgMjA1LCAKKyAgICA5NywgNDgsIDE5MSwgMjA1LCA5NywgNDgsIDQ5LCA1MSwgMjA1LCA5NywgNDgsIDExNSwgMTI3LCAyMDUsIDk3LCA0OCwgCisgICAgMTU3LCAyMDEsIDQ4LCAyMDUsIDk3LCA0OCwgMTU3LCAyMzksIDE0LCAyMDUsIDk3LCA0OCwgMjA4LCAyNTQsIDIzOSwgMTQsIAorICAgIDIwNSwgOTcsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjA1LCA5NywgNDgsIDk4LCAyMDUsIDk3LCAyNDEsIDI0MywgNDgsIAorICAgIDE4MiwgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCA4NywgMjA1LCA5NywgMjQxLCAyNDMsIDQ4LCAxOTEsIDIwNSwgOTcsIDI0MSwgCisgICAgMjQzLCA0OCwgMjQ2LCAxMTIsIDIwNSwgOTcsIDE3NiwgMjQ2LCAxNTYsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCAxNzYsIAorICAgIDI0NiwgMTU2LCA0OCwgOTgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCAxODIsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgCisgICAgMTQ4LCA4NywgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE5MSwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIAorICAgIDE1NywgMjAxLCA0OCwgMjA1LCA5NywgNTUsIDIwNSwgMTg2LCAxNDgsIDE1NywgMjM5LCAxNCwgMjA1LCA5NywgNTUsIDIwNSwgCisgICAgMTg2LCAxNDgsIDIwOCwgMjU0LCAyMzksIDE0LCAyMDUsIDk3LCA1NSwgMjA1LCAxODYsIDE0OCwgMjA4LCAyNTQsIDIwMSwgCisgICAgNDgsIDIwNSwgOTcsIDU1LCAyMDUsIDE4NiwgMTQ4LCA5OCwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIAorICAgIDE4MiwgMjA1LCA5NywgNTUsIDMsIDUzLCAyMzMsIDE3NywgOTcsIDg3LCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCAKKyAgICA5NywgMTkxLCAyMDUsIDk3LCA1NSwgMywgNTMsIDIzMywgMTc3LCA5NywgMjMzLCAxNzcsIDIwNywgMjUsIDIyNiwgMjE0LCAKKyAgICA4MywgMjA3LCAyNSwgMjI2LCAyMTQsIDk4LCAyMDUsIDk3LCA1NSwgMTE5LCA4NywgMjA1LCA5NywgNDgsIDE4MiwgMjA1LCAKKyAgICA5NywgNTUsIDk4LCA3NiwgMTkxLCAyMDUsIDk3LCA0OCwgODcsIDIwNSwgOTcsIDU1LCAxMTksIDk4LCAyMDUsIDk3LCA0OCwgCisgICAgMTkxLCAyMDUsIDk3LCA1NSwgOTgsIDc2LCAxODIsIDIwNSwgOTcsIDQ4LCA5OCwgMjA1LCA5NywgMjE2LCAxODgsIDI1MCwgCisgICAgMTk5LCAxODIsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgODcsIDIwNSwgOTcsIDIxNiwgMTg4LCAyNTAsIDE5OSwgCisgICAgMTkxLCAyMDUsIDk3LCAyMTYsIDE4OCwgMjUwLCAxOTksIDk4LCA2MywgNDQsIDY0LCA0OCwgMTgyLCA2MywgNDQsIDY0LCAKKyAgICA0OCwgODcsIDYzLCA0NCwgNjQsIDQ4LCAxOTEsIDYzLCA0NCwgNjQsIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA1MSwgMjA0LCAKKyAgICA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDI0OCwgOTMsIDIwNCwgOTksIDQ4LCAyNTEsIDQ3LCAyMDUsIDk3LCA0OSwgCisgICAgMjA0LCA5OSwgNDgsIDI1MSwgNDcsIDIwNSwgOTcsIDIwNSwgMTU4LCAyMDQsIDk5LCA0OCwgMjEzLCAxMTAsIDIyNSwgMjgsIAorICAgIDIxMywgMTEwLCAyMTMsIDQ2LCAyMjAsIDYsIDIyNSwgMjgsIDIyMCwgNiwgMjEzLCA0NiwgMjM2LCAyMjksIDI0MywgMTYsIAorICAgIDI1MCwgMjAwLCAyNDYsIDE1MSwgMjUxLCA0NiwgODcsIDYzLCA0OCwgMjA2LCA0NSwgMjA1LCAxNTYsIDk4LCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDIwNiwgNDUsIDIxMywgNDIsIDE4MiwgMjM4LCAxMTgsIDI1MCwgMjAyLCAyMDYsIDQ1LCAyMDUsIDE1NiwgCisgICAgODcsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMjA2LCA0NSwgMjI1LCAyNCwgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCAKKyAgICA5OCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA2MywgMTgyLCAyMzgsIDExOCwgMjUwLCAyMDIsIDYzLCA4NywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA2MywgMTkxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAKKyAgICAyMjQsIDIyNSwgMTgsIDE5MSwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgMzUsIDE4MiwgMjA1LCA5NywgCisgICAgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIyNSwgMTgsIDE4MiwgMjA1LCA5NywgNTUsIDMsIDE2OCwgMjA1LCAyMjQsIDIxMywgCisgICAgMzUsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjAzLCAyMTYsIDg3LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAKKyAgICAyMDUsIDIyNCwgMjAzLCAyMTYsIDk4LCAyMDUsIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDg3LCAyMDUsIAorICAgIDk3LCA1NSwgMywgMTY4LCAyMDUsIDIyNCwgMjM5LCAxNjUsIDYzLCAyNDIsIDE4OCwgMTkxLCAyNiwgOTgsIDQ4LCA2MywgCisgICAgMjQyLCAxODgsIDE5MSwgMjYsIDg3LCA0OCwgNjMsIDI0MiwgMTg4LCAxODIsIDI2LCA5OCwgNDgsIDYzLCAyNDIsIDE4OCwgCisgICAgMTgyLCAyNiwgODcsIDQ4LCA2MywgMjQyLCAxODgsIDk4LCAyNiwgMTgyLCA0OCwgNjMsIDI0MiwgMTg4LCA4NywgMjYsIAorICAgIDE4MiwgNDgsIDYzLCAyNDIsIDE4OCwgOTgsIDI2LCAxOTEsIDQ4LCA2MywgMjQyLCAxODgsIDg3LCAyNiwgMTkxLCA0OCwgCisgICAgMjEzLCA4NiwgNTUsIDEyNywgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDEyNywgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDExNSwgCisgICAgMjI1LCAyOCwgMjEzLCA4NiwgNTUsIDExNSwgMjEzLCA0NiwgMjEzLCA4NiwgNTUsIDQ5LCAyMDMsIDIyOCwgMjEzLCA4NiwgCisgICAgNTUsIDUxLCAyMDMsIDIyOCwgMjEzLCA4NiwgNTUsIDQ5LCAyMzksIDE2NywgMjEzLCA4NiwgNTUsIDUxLCAyMzksIDE2NywgCisgICAgMTgyLCA2NCwgNTUsIDIzNiwgMjAxLCAyNDksIDc3LCAzLCAyMzMsIDE3NywgMTQ4LCAxMTUsIDI1MCwgMjAzLCAyMjgsIAorICAgIDExOCwgMzUsIDIxMywgMTc2LCAyNDgsIDc4LCAyNDksIDk0LCAxMDAsIDMsIDE2MiwgMjAwLCAxOTUsIDQ0LCAyMDAsIDE5NSwgCisgICAgNDQsIDI3LCAyMDAsIDE5NSwgNjMsIDUyLCAyNDcsIDUzLCA2MywgMjQxLCA2NSwgMjQ3LCA1MywgMjA0LCAxODUsIDYzLCAKKyAgICAyMTYsIDM3LCAyMzMsIDE3NywgNjMsIDIxNywgMTMwLCA2MywgMjE3LCAxMzAsIDYzLCAyMjIsIDY2LCAyMDMsIDIyNywgCisgICAgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIzOSwgMTY2LCAyMDUsIDk5LCAyNDcsIDUzLCA2MywgMjIyLCA2NiwgCisgICAgMjI1LCAyMywgMjA1LCA5OSwgMjQ3LCA1MywgNjMsIDIyMiwgNjYsIDIxMywgNDEsIDIwNSwgOTksIDI0NywgNTMsIDIwNSwgCisgICAgMTU4LCAxNjcsIDYzLCAyNDYsIDE1NSwgMjQ4LCA5MywgMTY3LCA2MywgMjQ2LCAxNTUsIDE2MiwgMjM2LCAyMjksIDIxNSwgCisgICAgOTgsIDYzLCAyNDIsIDE4NCwgMjEyLCAyMjgsIDE2MiwgMjM2LCAyMjksIDIxNSwgOTgsIDYzLCAyNDIsIDE4NCwgNjQsIAorICAgIDIzNiwgMjI5LCAyMTUsIDk4LCAyNDIsIDE4NCwgMjEyLCAyMjgsIDY0LCAyMzYsIDIyOSwgMjE1LCA5OCwgMjQyLCAxODQsIAorICAgIDUyLCAyMTUsIDcwLCAyMjgsIDk5LCAyMDMsIDI1NSwgNTQsIDk4LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgOTksIDI1MCwgCisgICAgMjAxLCAxODIsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDg3LCAyMDQsIDE0MSwgNTUsIDMsIDIwNSwgCisgICAgOTksIDI1MCwgMjAxLCAxOTEsIDIwNCwgMTQxLCA1NSwgMywgMjA1LCA5OSwgMjUwLCAyMDEsIDExNiwgNiwgMSwgMjUwLCAKKyAgICAxMDQsIDExNiwgNiwgMSwgMjQ4LCAyNCwgMTE2LCA2LCAxLCAyMDMsIDU3LCAxMTYsIDYsIDEsIDIzNSwgMTMwLCAxMTYsIDYsIAorICAgIDEsIDI0MCwgMjA2LCAxMTYsIDYsIDEsIDIwMCwgMjMsIDExNiwgNiwgMSwgMTk5LCA2MSwgMTE2LCA2LCAxLCAyMzksIDg4LCAKKyAgICAxMTYsIDYsIDEsIDE5OSwgODYsIDExNiwgNiwgMSwgMjI3LCAyNTUsIDExNiwgNiwgMSwgODIsIDIyNywgMjU1LCAxMTYsIDYsIAorICAgIDEsIDcwLCAxMTYsIDYsIDEsIDI0MCwgMjI2LCAxMTYsIDYsIDEsIDIyNywgNzQsIDExNiwgNiwgMSwgMjI0LCAxNDAsIDExNiwgCisgICAgNiwgMSwgMjIwLCAyMTgsIDExNiwgNiwgMSwgMjIwLCAxMjAsIDExNiwgNiwgMSwgMjE3LCA2NSwgMTE2LCA2LCAxLCAyMTUsIAorICAgIDkzLCAxMTYsIDYsIDEsIDIxMywgMTgsIDExNiwgNiwgMSwgMjA5LCA1OCwgMTE2LCA2LCAxLCAyMDQsIDE3MSwgMTE2LCA2LCAKKyAgICAxLCAyMDQsIDE2LCAxMTYsIDYsIDEsIDIzNiwgMjA0LCAxMTYsIDYsIDEsIDIzNCwgOTUsIDExNiwgNiwgMSwgMjE3LCA0LCAKKyAgICAxMTYsIDYsIDEsIDIxNiwgNzMsIDExNiwgNiwgMSwgMjA5LCAyMjMsIDExNiwgNiwgMSwgMjA1LCAxMSwgMTE2LCA2LCAxLCAKKyAgICAyNDYsIDE5OCwgMTE2LCA2LCAxLCAyMTAsIDExNCwgMTE2LCA2LCAxLCAyMDAsIDI5LCAxMTYsIDYsIDEsIDIwMCwgMzEsIAorICAgIDExNiwgNiwgMSwgMjAwLCA2MywgMTE2LCA2LCAxLCAyMDgsIDIyMCwgMTQ0LCAxMTYsIDYsIDEsIDE5OSwgMjExLCAxMTYsIAorICAgIDYsIDEsIDQsIDE5OSwgMTgxLCAxMTYsIDYsIDEsIDQsIDE5OSwgMTgyLCAzLCAyMDcsIDYsIDExNiwgNiwgMSwgMTk5LCAKKyAgICAyNDUsIDExNiwgNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDExNiwgNiwgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAxMTYsIAorICAgIDYsIDEsIDIyOCwgNDAsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA2LCAxLCAyMzcsIDYzLCAxMTYsIDYsIDEsIDIyNywgCisgICAgMjUzLCAxMTYsIDYsIDEsIDIwOSwgMjIyLCAxMTYsIDYsIDEsIDIwNSwgNzMsIDYyLCAxMTYsIDYsIDEsIDIyNSwgNTksIAorICAgIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDI1MCwgMTA0LCAxMTYsIDQsIDEsIDI0OCwgMjQsIDExNiwgNCwgMSwgMjAzLCA1NywgCisgICAgMTE2LCA0LCAxLCAyMzUsIDEzMCwgMTE2LCA0LCAxLCAyNDAsIDIwNiwgMTE2LCA0LCAxLCAyMDAsIDIzLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjEsIDExNiwgNCwgMSwgMjM5LCA4OCwgMTE2LCA0LCAxLCAxOTksIDg2LCAxMTYsIDQsIDEsIDIyNywgMjU1LCAKKyAgICAxMTYsIDQsIDEsIDgyLCAyMjcsIDI1NSwgMTE2LCA0LCAxLCA3MCwgMTE2LCA0LCAxLCAyNDAsIDIyNiwgMTE2LCA0LCAxLCAKKyAgICAyMjcsIDc0LCAxMTYsIDQsIDEsIDIyNCwgMTQwLCAxMTYsIDQsIDEsIDIyMCwgMjE4LCAxMTYsIDQsIDEsIDIyMCwgMTIwLCAKKyAgICAxMTYsIDQsIDEsIDIxNywgNjUsIDExNiwgNCwgMSwgMjE1LCA5MywgMTE2LCA0LCAxLCAyMTMsIDE4LCAxMTYsIDQsIDEsIAorICAgIDIwOSwgNTgsIDExNiwgNCwgMSwgMjA0LCAxNzEsIDExNiwgNCwgMSwgMjA0LCAxNiwgMTE2LCA0LCAxLCAyMzYsIDIwNCwgCisgICAgMTE2LCA0LCAxLCAyMzQsIDk1LCAxMTYsIDQsIDEsIDIxNywgNCwgMTE2LCA0LCAxLCAyMTYsIDczLCAxMTYsIDQsIDEsIAorICAgIDIwOSwgMjIzLCAxMTYsIDQsIDEsIDIwNSwgMTEsIDExNiwgNCwgMSwgMjQ2LCAxOTgsIDExNiwgNCwgMSwgMjEwLCAxMTQsIAorICAgIDExNiwgNCwgMSwgMjAwLCAyOSwgMTE2LCA0LCAxLCAyMDAsIDMxLCAxMTYsIDQsIDEsIDIwMCwgNjMsIDExNiwgNCwgMSwgCisgICAgMjA4LCAyMjAsIDE0NCwgMTE2LCA0LCAxLCAxOTksIDIxMSwgMTE2LCA0LCAxLCA0LCAxOTksIDE4MSwgMTE2LCA0LCAxLCA0LCAKKyAgICAxOTksIDE4MiwgMywgMjA3LCA2LCAxMTYsIDQsIDEsIDE5OSwgMjQ1LCAxMTYsIDQsIDEsIDIyOCwgNDAsIDQsIDE5OSwgCisgICAgMTgxLCAxMTYsIDQsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMTE2LCA0LCAxLCAyMjgsIDQwLCAyNDgsIDE3NSwgMTk5LCAKKyAgICAxODEsIDExNiwgNCwgMSwgMjM3LCA2MywgMTE2LCA0LCAxLCAyMjcsIDI1MywgMTE2LCA0LCAxLCAyMDksIDIyMiwgMTE2LCAKKyAgICA0LCAxLCAyMDUsIDczLCA2MiwgMTE2LCA0LCAxLCAyMjUsIDU5LCAyMjAsIDIxOCwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDUzLCAxNDgsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCA1MywgMTQ4LCA4LCA2LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMjE2LCAyMjcsIDMsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAzLCAyMDcsIDYsIDgsIDQsIDEsIDM1LCAKKyAgICAzLCA5NywgOCwgNCwgMSwgMjA3LCA4NCwgMywgMjQxLCA3MSwgOTcsIDgsIDYsIDEsIDIzNCwgMjQ4LCAzLCAyNDEsIDExOSwgCisgICAgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjQxLCAxMTksIDgsIDQsIDEsIAorICAgIDIyNywgMTE5LCAzLCAyNDEsIDExOSwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDI0MSwgMTE5LCA4LCA0LCAxLCAxOTksIDE1OCwgCisgICAgMywgMjQxLCAxMTksIDgsIDYsIDEsIDI1MSwgMTEyLCA4LCA2LCAxLCAyMjMsIDI0NCwgMywgMTE3LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgNjIsIDgsIDYsIDEsIDIwNCwgMTg1LCAyNTEsIDExMiwgOCwgNCwgMSwgMjAzLCAxNjksIDMsIDUxLCAxMTcsIDgsIAorICAgIDYsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMSwgMTQ4LCAzLCAxMTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAKKyAgICAyNDIsIDE5OCwgOCwgNiwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMTY3LCAyMzQsIDI0NywgOCwgNCwgMSwgMjA3LCAKKyAgICA0LCAyMTUsIDIyOSwgOCwgNCwgMSwgMTk3LCAzLCAyMTgsIDIxMiwgOCwgNCwgMSwgMjA0LCAxODUsIDIxNCwgMzMsIDMsIAorICAgIDIwNywgNiwgOCwgNCwgMSwgMTYzLCAzLCAxMjgsIDIxMywgMjcsIDIyOCwgNzMsIDgsIDEsIDQsIDYsIDIwNCwgMTg1LCA3MiwgCisgICAgOCwgMjA4LCA0LCA0LCAxLCAyMjcsIDI1MSwgNjcsIDEsIDYsIDIwMywgMTY4LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjA3LCAKKyAgICAxODMsIDIwNywgNiwgOCwgNiwgMSwgMTk5LCAxNTgsIDMsIDIwNywgMTgzLCAyMDcsIDYsIDg1LCA2LCAxLCAyNTEsIDEzNiwgCisgICAgODUsIDQsIDEsIDI1MSwgMTM2LCA4NSwgNiwgMSwgMjAyLCAyMzEsIDg1LCA0LCAxLCAyMDIsIDIzMSwgODUsIDYsIDEsIAorICAgIDIzNiwgNjAsIDg1LCA0LCAxLCAyMzYsIDYwLCA4NSwgNiwgMSwgMjQyLCAyNSwgODUsIDQsIDEsIDI0MiwgMjUsIDg1LCA2LCAKKyAgICAxLCAyMzgsIDIzMywgODUsIDQsIDEsIDIzOCwgMjMzLCA4NSwgNiwgMSwgMjA5LCAzLCA4NSwgNCwgMSwgMjA5LCAzLCA4NSwgCisgICAgNiwgMSwgMTk5LCA5NiwgODUsIDQsIDEsIDE5OSwgOTYsIDg1LCA2LCAxLCAyMzQsIDE1NCwgODUsIDQsIDEsIDIzNCwgMTU0LCAKKyAgICA4NSwgNiwgMSwgMjA2LCA4NiwgODUsIDQsIDEsIDIwNiwgODYsIDg1LCA2LCAxLCAyMzIsIDIzNywgODUsIDQsIDEsIDIzMiwgCisgICAgMjM3LCA4NSwgNiwgMSwgMjI3LCA1OSwgODUsIDQsIDEsIDIyNywgNTksIDg1LCA2LCAxLCAyMjUsIDU0LCA4NSwgNCwgMSwgCisgICAgMjI1LCA1NCwgODUsIDYsIDEsIDIyMSwgMjExLCA4NSwgNCwgMSwgMjIxLCAyMTEsIDg1LCA2LCAxLCAyMTksIDE1MCwgODUsIAorICAgIDQsIDEsIDIxOSwgMTUwLCA4NSwgNiwgMSwgMjI2LCAzMSwgODUsIDQsIDEsIDIyNiwgMzEsIDg1LCA2LCAxLCA3NCwgODUsIAorICAgIDQsIDEsIDc0LCA4NSwgNiwgMSwgMjE1LCAyMDQsIDg1LCA0LCAxLCAyMTUsIDIwNCwgODUsIDYsIDEsIDIxMywgMSwgODUsIAorICAgIDQsIDEsIDIxMywgMSwgODUsIDYsIDEsIDIwOSwgMTUxLCA4NSwgNCwgMSwgMjA5LCAxNTEsIDg1LCA2LCAxLCAyMDYsIDIyMSwgCisgICAgODUsIDQsIDEsIDIwNiwgMjIxLCA4NSwgNiwgMSwgMjA0LCA0NiwgODUsIDQsIDEsIDIwNCwgNDYsIDg1LCA2LCAxLCAyMzcsIAorICAgIDExMiwgODUsIDQsIDEsIDIzNywgMTEyLCA4NSwgNiwgMSwgMjI2LCAxODUsIDg1LCA0LCAxLCAyMjYsIDE4NSwgODUsIDYsIAorICAgIDEsIDIxNCwgMjM1LCA4NSwgNCwgMSwgMjE0LCAyMzUsIDg1LCA2LCAxLCAyMTcsIDU3LCA4NSwgNCwgMSwgMjE3LCA1NywgCisgICAgODUsIDYsIDEsIDI0MSwgNjksIDI1MSwgMTQyLCA4NSwgNCwgMSwgMjQxLCA2OSwgMjUxLCAxNDIsIDg1LCA2LCAxLCA0MCwgCisgICAgODUsIDI1MSwgMTcxLCA4NSwgNCwgMSwgNDAsIDg1LCAyNTEsIDE3MSwgODUsIDYsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgCisgICAgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzgsIDIzMywgODUsIDYsIDEsIDI0MSwgNjksIDIyNywgNTksIDg1LCA0LCAxLCAyNDEsIAorICAgIDY5LCAyMjcsIDU5LCA4NSwgNiwgMSwgMjQxLCA2OSwgMjE5LCAxNTAsIDg1LCA0LCAxLCAyNDEsIDY5LCAyMTksIDE1MCwgCisgICAgODUsIDYsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMTksIDE1MCwgODUsIDYsIDEsIDQwLCAKKyAgICA4NSwgMjE3LCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjE3LCA1NywgODUsIDYsIDEsIDIxMiwgMTYsIDg1LCA0LCAxLCAyMTIsIAorICAgIDE2LCA4NSwgNiwgMSwgMjQyLCAyMzIsIDIxMCwgNTcsIDg1LCA0LCAxLCAyNDIsIDIzMiwgMjEwLCA1NywgODUsIDYsIDEsIAorICAgIDQwLCA4NSwgMjEwLCA1NywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCA1NywgODUsIDYsIDEsIDQwLCA4NSwgMjM4LCA5NCwgCisgICAgODUsIDQsIDEsIDQwLCA4NSwgMjM4LCA5NCwgODUsIDYsIDEsIDI1MSwgMTU1LCAyMjYsIDE5MCwgODUsIDQsIDEsIDI1MSwgCisgICAgMTU1LCAyMjYsIDE5MCwgODUsIDYsIDEsIDI0MSwgNjksIDIzMywgMTc4LCA4NSwgNCwgMSwgMjQxLCA2OSwgMjMzLCAxNzgsIAorICAgIDg1LCA2LCAxLCA0MCwgODUsIDIzMywgMTc4LCA4NSwgNCwgMSwgNDAsIDg1LCAyMzMsIDE3OCwgODUsIDYsIDEsIDQwLCA4NSwgCisgICAgMTQ0LCA4NSwgNCwgMSwgNDAsIDg1LCAxNDQsIDg1LCA2LCAxLCAyMjUsIDE5MiwgMTQ0LCA4NSwgNCwgMSwgMjI1LCAxOTIsIAorICAgIDE0NCwgODUsIDYsIDEsIDQwLCA4NSwgMjM0LCAxMTQsIDg1LCA0LCAxLCA0MCwgODUsIDIzNCwgMTE0LCA4NSwgNiwgMSwgCisgICAgNDAsIDg1LCAyMzQsIDE1NywgODUsIDQsIDEsIDQwLCA4NSwgMjM0LCAxNTcsIDg1LCA2LCAxLCA0MCwgODUsIDIzNiwgNTUsIAorICAgIDg1LCA0LCAxLCA0MCwgODUsIDIzNiwgNTUsIDg1LCA2LCAxLCA0MCwgODUsIDI0MCwgMjI5LCA4NSwgNCwgMSwgNDAsIDg1LCAKKyAgICAyNDAsIDIyOSwgODUsIDYsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDQsIDEsIDQwLCA4NSwgMjEwLCAyMywgODUsIDYsIDEsIAorICAgIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDQsIDEsIDQwLCAyMTgsIDEwMywgMjEwLCAyMywgODUsIDYsIDEsIDQwLCAKKyAgICAyMTgsIDEwMywgMjE5LCAyMDEsIDg1LCA0LCAxLCA0MCwgMjE4LCAxMDMsIDIxOSwgMjAxLCA4NSwgNiwgMSwgNDAsIDIxOCwgCisgICAgMTAzLCAyMTgsIDQxLCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMTgsIDQxLCA4NSwgNiwgMSwgNDAsIDIxOCwgMTAzLCAKKyAgICAyMDEsIDc5LCA4NSwgNCwgMSwgNDAsIDIxOCwgMTAzLCAyMDEsIDc5LCA4NSwgMTYsIDIyNywgODIsIDg1LCAxNiwgMjIxLCAKKyAgICAyMTIsIDIxMywgMSwgODUsIDE2LCAyMTUsIDIwNSwgMjEzLCAxLCA4NSwgMTYsIDIwOCwgMTAwLCA4NSwgMTYsIDIwNiwgCisgICAgMjIyLCAyMTMsIDEsIDg1LCAxNiwgMjI2LCAxODYsIDIxMywgMSwgODUsIDE2LCAyMTAsIDI0LCAyMDksIDE1MSwgODUsIDYsIAorICAgIDEsIDI0MiwgMjE3LCAyMTAsIDU3LCA4NSwgNCwgMSwgMjQyLCAyMTcsIDIxMCwgNTcsIDg1LCA2LCAxLCAyNDIsIDIxNywgCisgICAgMjM2LCA1NSwgODUsIDQsIDEsIDI0MiwgMjE3LCAyMzYsIDU1LCA4NSwgMzgsIDIxOSwgMTUxLCA1NiwgODUsIDM4LCAyMDgsIAorICAgIDIxMywgMjUwLCAxNzMsIDg1LCAzOCwgMjA4LCAyMTMsIDIyNCwgMjQ4LCA4NSwgNiwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCAKKyAgICA4NSwgNCwgMSwgMjQ4LCAxMTcsIDIyNiwgMTkwLCA4NSwgNDAsIDIxOCwgMTAzLCAyMzYsIDE4MywgMjA4LCA3NiwgODUsIAorICAgIDQwLCAyMTgsIDEwMywgMjQxLCAxMCwgMjE0LCA3OSwgODEsIDg1LCA0MCwgMjE4LCAxMDMsIDIyOCwgOTcsIDIxNCwgNzksIAorICAgIDgxLCA4NSwgNDAsIDIxOCwgMTAzLCAyMDMsIDQ0LCAyNDAsIDIzOSwgODUsIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCA4NSwgCisgICAgMjM2LCAxODMsIDIwOCwgNzYsIDg1LCAyMjEsIDc3LCAyNDAsIDIzOSwgMTE4LCA0LCAxLCAyNTEsIDg1LCAxMTgsIDQsIDEsIAorICAgIDI0OSwgODgsIDExOCwgNCwgMSwgMjM2LCA1OSwgMTE4LCA0LCAxLCAyNDAsIDE5MCwgMTE4LCA0LCAxLCAyMzgsIDE3OSwgCisgICAgMTE4LCA0LCAxLCAyMDIsIDIxNywgMTE4LCA0LCAxLCAxOTksIDg0LCAxMTgsIDQsIDEsIDIwNiwgMjQ0LCAxMTgsIDQsIDEsIAorICAgIDIyOCwgMTE3LCAxMTgsIDQsIDEsIDIyNywgNjgsIDExOCwgNCwgMSwgMjI1LCA2NSwgMTE4LCA0LCAxLCAyMjIsIDE4MCwgCisgICAgMTE4LCA0LCAxLCAyMjAsIDEyNSwgMTE4LCA0LCAxLCAyMTcsIDc4LCAxMTgsIDQsIDEsIDIxNiwgMTMwLCAxMTgsIDQsIDEsIAorICAgIDE5OSwgNzMsIDExOCwgNCwgMSwgMjEzLCAyMzQsIDExOCwgNCwgMSwgMjEyLCAxMywgMTE4LCA0LCAxLCAyMDYsIDIzMiwgCisgICAgMTE4LCA0LCAxLCAyMDQsIDUsIDExOCwgNCwgMSwgMjE1LCAyMzcsIDExOCwgNCwgMSwgMjI2LCAxOTUsIDExOCwgNCwgMSwgCisgICAgMjM1LCAxOTAsIDExOCwgNCwgMSwgMjE0LCAxNDQsIDExOCwgNCwgMSwgMjEwLCAyMSwgMTE4LCA0LCAxLCAyNDYsIDIyMywgCisgICAgMTE4LCA0LCAxLCAyNDcsIDE1OCwgMTE4LCA0LCAxLCAyMjcsIDE5OCwgMTE4LCA0LCAxLCAyNDYsIDE2MiwgMTE4LCA0LCAxLCAKKyAgICAyNDcsIDIxLCAxMTgsIDQsIDEsIDIwMCwgMTc5LCAxMTgsIDQsIDEsIDIyNywgMjEyLCAxMTgsIDQsIDEsIDIzNCwgMjMwLCAKKyAgICAxMTgsIDQsIDEsIDIzNCwgMTM5LCAxMTgsIDQsIDEsIDIzNCwgNjksIDExOCwgNCwgMSwgMjAxLCA2NCwgMTE4LCA0LCAxLCAKKyAgICAyMzQsIDE2NiwgMTE4LCA0LCAxLCAyMzMsIDIwMywgMTE4LCA0LCAxLCAxOTksIDI0NywgMTE4LCA0LCAxLCAyNTEsIDIxMCwgCisgICAgMjA2LCA0LCAxLCAxODMsIDIwNiwgNCwgMSwgMjAwLCAxMDUsIDIwNiwgNCwgMSwgMjAwLCAxMDQsIDIwNiwgNCwgMSwgMjAwLCAKKyAgICA5NCwgMjA2LCA0LCAxLCAyMDAsIDkyLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA4NywgMjA2LCA0LCAKKyAgICAxLCAyMDAsIDg3LCAyMDYsIDQsIDEsIDIwMCwgMTAyLCAyMDYsIDQsIDEsIDIwMCwgOTksIDIwNiwgNCwgMSwgMjAwLCAxMDEsIAorICAgIDIwNiwgNCwgMSwgMjAwLCAxMDAsIDIwNiwgNCwgMSwgMjAwLCAxNCwgMjA2LCA0LCAxLCAyMDAsIDk2LCAyMDYsIDQsIDEsIAorICAgIDIwMCwgODUsIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODUsIDIwNiwgNCwgMSwgMjAwLCA4MiwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDkwLCAyMDYsIDQsIDEsIDI0OCwgMjE0LCAyNTEsIDI1MywgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA5MCwgMjA2LCA0LCAxLCAyMDAsIDg5LCAyMDYsIDQsIDEsIDIwMCwgMTA5LCAyMDYsIDQsIDEsIDIwMCwgODMsIAorICAgIDIwNiwgNCwgMSwgMjA0LCAyMTIsIDIwMCwgODMsIDIwNiwgNCwgMSwgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3MiwgMjA2LCA0LCAxLCAyMDAsIDksIDIwNiwgNCwgMSwgMjAwLCA1MywgMjA2LCA0LCAxLCAyNTEsIDE4MywgMjAwLCAKKyAgICA1MywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA1MywgMjA2LCA0LCAxLCAyMDAsIDgxLCAyMDYsIDQsIDEsIDIwMCwgODAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA3NywgMjA2LCA0LCAxLCAyMDQsIDIxMiwgMjAwLCA5MSwgMjA2LCA0LCAxLCAyMDQsIDIxMiwgCisgICAgMjAwLCA3NSwgMjA2LCA0LCAxLCAyMDAsIDczLCAyMDYsIDQsIDEsIDE5OSwgMjExLCAyMDYsIDQsIDEsIDIwMCwgNzAsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA2OSwgMjA2LCA0LCAxLCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwNCwgMjEyLCAyMDAsIDkzLCAKKyAgICAyMDYsIDQsIDEsIDI1MCwgMTA4LCAyMDAsIDkzLCAyMDYsIDQsIDEsIDIwMCwgNjgsIDIwNiwgNCwgMSwgMjAwLCA2NiwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDY3LCAyMDYsIDQsIDEsIDIwMCwgNjUsIDIwNiwgNCwgMSwgMjAwLCA2NCwgMjA2LCA0LCAxLCAKKyAgICAyMDAsIDEwMywgMjA2LCA0LCAxLCAyMDAsIDYyLCAyMDYsIDQsIDEsIDIwMCwgNjAsIDIwNiwgNCwgMSwgMjAwLCA1OSwgCisgICAgMjA2LCA0LCAxLCAyMDAsIDU3LCAyMDYsIDQsIDEsIDIwMCwgNTQsIDIwNiwgNCwgMSwgMjA2LCAyMTMsIDIwMCwgNTQsIAorICAgIDIwNiwgNCwgMSwgMjAwLCA1MiwgMjA2LCA0LCAxLCAyMDAsIDUxLCAyMDYsIDQsIDEsIDE5OSwgMjQ1LCAyMDYsIDQsIDY3LCAKKyAgICAxLCAyMjUsIDE2NiwgODEsIDIwNiwgNCwgMjEwLCAxNTUsIDgxLCAyMDYsIDQsIDExMSwgMjI3LCAxNjEsIDM0LCA1LCAyMjQsIAorICAgIDEwOSwgMzQsIDUsIDIyMSwgMTM1LCAzNCwgNSwgMjEyLCAyNTUsIDM0LCA1LCAyMDksIDI4LCAzNCwgNSwgMjEwLCA3LCAzNCwgCisgICAgNSwgMjQ4LCAxMjMsIDM0LCA1LCAyMDUsIDE4NSwgMzQsIDUsIDI0NiwgOTAsIDM0LCA1LCAyMTgsIDIzOSwgMzQsIDUsIAorICAgIDIxOCwgMjUsIDM0LCA1LCAyMzUsIDEyMywgMjE3LCAxNDYsIDM0LCA1LCAxOTksIDEzLCAzNCwgNSwgMjQwLCAyMDksIDM0LCAKKyAgICA1LCAyNDEsIDE4OSwgMzQsIDUsIDIyNywgMTY1LCAzNCwgNSwgMjA2LCA2MCwgMzQsIDUsIDI0NiwgMjA5LCAzNCwgNSwgCisgICAgMjE1LCAyMTYsIDM0LCA1LCAyMTUsIDEwNSwgMzQsIDUsIDIzNSwgMjA1LCAzNCwgNSwgMjM1LCAyMDEsIDM0LCA1LCAyMzUsIAorICAgIDIwMiwgMzQsIDUsIDIzNSwgMjAzLCAzNCwgNSwgMjA4LCAxNzksIDM0LCA1LCAyMDgsIDEzNCwgMzQsIDUsIDIwOCwgMTQ3LCAKKyAgICAzNCwgNSwgMjA4LCAxNzgsIDM0LCA1LCAyMDgsIDE1MiwgMzQsIDUsIDIwOCwgMTUzLCAzNCwgNSwgMjA4LCAxMzksIDM0LCAKKyAgICA1LCAyNDcsIDk5LCAzNCwgNSwgMjQ3LCA3OCwgMzQsIDUsIDI0NywgODAsIDM0LCA1LCAyNDcsIDk4LCAzNCwgNSwgMjQ3LCAKKyAgICA5NiwgMzQsIDUsIDI0NywgOTcsIDM0LCA1LCAyNDcsIDc5LCAzNCwgNSwgMTk4LCAyMzIsIDM0LCA1LCAxOTgsIDIxMCwgMzQsIAorICAgIDUsIDE5OCwgMjIzLCAzNCwgNSwgMTk4LCAyMzEsIDM0LCA1LCAxOTgsIDIyNiwgMzQsIDUsIDE5OCwgMjI3LCAzNCwgNSwgCisgICAgMTk4LCAyMTUsIDM0LCA1LCAyNDcsIDk0LCAzNCwgNSwgMjQ3LCA4MSwgMzQsIDUsIDI0NywgODMsIDM0LCA1LCAyNDcsIDkzLCAKKyAgICAzNCwgNSwgMjQ3LCA5MSwgMzQsIDUsIDI0NywgOTIsIDM0LCA1LCAyNDcsIDgyLCAzNCwgNSwgMjE0LCA0NSwgMzQsIDUsIAorICAgIDIxNCwgMzUsIDM0LCA1LCAyMTQsIDQxLCAzNCwgNSwgMjE0LCA0NCwgMzQsIDUsIDIxNCwgNDIsIDM0LCA1LCAyMTQsIDQzLCAKKyAgICAzNCwgNSwgMjE0LCA0MCwgMzQsIDUsIDIyNSwgMjAzLCAzNCwgNSwgMjI1LCAxOTUsIDM0LCA1LCAyMjUsIDE5OCwgMzQsIDUsIAorICAgIDIyNSwgMjAyLCAzNCwgNSwgMjI1LCAxOTksIDM0LCA1LCAyMjUsIDIwMCwgMzQsIDUsIDIyNSwgMTk2LCAzNCwgNSwgMjAwLCAKKyAgICAxMzksIDM0LCA1LCAyMDAsIDEyNiwgMzQsIDUsIDIwMCwgMTM0LCAzNCwgNSwgMjAwLCAxMzgsIDM0LCA1LCAyMDAsIDEzNiwgCisgICAgMzQsIDUsIDIwMCwgMTM3LCAzNCwgNSwgMjAwLCAxMzMsIDM0LCA1LCAyMzUsIDMsIDM0LCA1LCAyMzQsIDI0OSwgMzQsIDUsIAorICAgIDIzNCwgMjUyLCAzNCwgNSwgMjM1LCAyLCAzNCwgNSwgMjM0LCAyNTQsIDM0LCA1LCAyMzQsIDI1NSwgMzQsIDUsIDIzNCwgCisgICAgMjUxLCAzOCwgMzcsIDEsIDI0OSwgOCwgMzgsIDM3LCAxLCAyMDMsIDU5LCAzOCwgMzcsIDEsIDIzNSwgMTg1LCAzOCwgMzcsIAorICAgIDEsIDI0MSwgMTc1LCAzOCwgMzcsIDEsIDE5OSwgNjgsIDM4LCAzNywgMSwgMTk5LCA4OSwgMzgsIDM3LCAxLCAxNjEsIDM4LCAKKyAgICAzNywgMSwgMjM4LCAyMDksIDM4LCAzNywgMSwgMjM4LCAxOTAsIDM4LCAzNywgMSwgMjM4LCAxNzksIDM4LCAzNywgMSwgNzQsIAorICAgIDM4LCAzNywgMSwgMjE2LCA3MywgMzgsIDM3LCAxLCAyMzgsIDExNSwgMzgsIDM3LCAxLCAyMzgsIDEwNCwgMzgsIDM3LCAxLCAKKyAgICAyMDYsIDIwMSwgMzgsIDM3LCAxLCAxNDQsIDM4LCAzNywgMSwgMjA1LCAyNiwgMzgsIDM3LCAxLCAyNDcsIDgsIDM4LCAzNywgCisgICAgMSwgMjEwLCAxMTQsIDM4LCAzNywgMSwgMjEwLCA2OCwgMzgsIDM3LCAxLCAyMzcsIDYzLCAzOCwgMzcsIDEsIDIzOCwgMTAwLCAKKyAgICAzOCwgMzcsIDEsIDYyLCAzOCwgMzcsIDEsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDI0MCwgMjI3LCAzOCwgMzcsIDEsIDIyMSwgCisgICAgOTUsIDIwNCwgMjAsIDM4LCAzNywgMSwgMjAwLCA2NSwgMzgsIDM3LCAxLCAxOTksIDIxMSwgMzgsIDM3LCAxLCAyMjgsIDM5LCAKKyAgICA2MiwgMzgsIDM3LCAxLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM4LCAzNywgMSwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgMzcsIAorICAgIDEsIDIyOCwgMzksIDI0OCwgMTc1LCAxOTksIDE4MSwgNTEsIDI1MSwgNzEsIDIwNywgMjU1LCAyMjIsIDE0NSwgNTEsIDI1MSwgCisgICAgNzEsIDIzOSwgMTgwLCAyMDcsIDI1NSwgMjIyLCAxNDUsIDQ5LCAyMDcsIDI1NSwgMTU5LCA1MSwgMjA3LCAyNTUsIDE1OSwgCisgICAgNDksIDIzOSwgMTgwLCAyMDcsIDI1NSwgMTU5LCA1MSwgMjM5LCAxODAsIDIwNywgMjU1LCAxNTksIDIxMywgMjIwLCAyMjgsIAorICAgIDYwLCAyMjIsIDE0NSwgMjEzLCAyMjAsIDIzOSwgMTgwLCAyMjgsIDYwLCAyMjIsIDE0NSwgMjM5LCAxODAsIDIwNSwgMTE2LCAKKyAgICAyMjIsIDE0NSwgNDksIDIwNSwgMTE2LCAxNTksIDUxLCAyMDUsIDExNiwgMTU5LCAyMTMsIDIyMCwgMjA4LCAxOTMsIDQ5LCAKKyAgICAyMTMsIDIyMCwgMjE3LCA4MCwgMTU5LCA1MSwgMjEzLCAyMjAsIDIxNywgODAsIDE1OSwgMjM5LCAwLCAyNDMsIDEzLCAyMTYsIAorICAgIDEyNiwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMTMsIDEwNSwgMjM2LCAyNDQsIDIxNiwgMTI2LCAyMzMsIDMwLCAyMzksIDE4MCwgCisgICAgMjE3LCAxNDEsIDE5MSwgMjUxLCA4MCwgMTgyLCAyNTEsIDgwLCAyMzksIDE4MCwgMjEzLCA0MSwgMjUxLCA3MCwgNTMsIAorICAgIDIxNywgMTM4LCAyMzMsIDMzLCAyMjgsIDUwLCAyMjgsIDU4LCAyMTYsIDE3NywgMjQ4LCA2NiwgMjMzLCAzNCwgMywgMjQxLCAKKyAgICA3NCwgMjA1LCAyNDEsIDMsIDIxMywgMjcsIDU2LCA0OSwgMTI4LCAyMTYsIDExOCwgMTU5LCA1MSwgMTI4LCAyMTYsIDExOCwgCisgICAgMTU5LCAyMDUsIDI0MSwgMywgNzMsIDU2LCAyMDUsIDI0MSwgMywgNzMsIDU3LCA0OSwgODMsIDI0OSwgNzcsIDMsIDIxNCwgCisgICAgNzMsIDUxLCA4MywgMjQ5LCA3NywgMywgMjE0LCA3MywgMjA1LCAxNTgsIDQ5LCAxNjcsIDE1OSwgMjA1LCAxNTgsIDUxLCAKKyAgICAxNjcsIDE1OSwgMjQ4LCA5MywgNDksIDE2NywgMTU5LCAyNDgsIDkzLCA1MSwgMTY3LCAxNTksIDQ5LCAyMDksIDE3MywgCisgICAgMTA4LCAxNTksIDUxLCAyMDksIDE3MywgMTA4LCAxNTksIDQ5LCA1MywgMjE2LCAxMTUsIDUxLCA1MywgMjE2LCAxMTUsIAorICAgIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAxMTIsIDczLCAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgOTUsIAorICAgIDIzNiwgMjI5LCA3MywgMjE0LCAyMTEsIDIzNywgNjEsIDczLCA4MSwgMjEzLCAxMDUsIDIxNCwgNzksIDgxLCA4MywgMjA1LCAKKyAgICAyNDAsIDIxMywgMjcsIDIxNSwgOTksIDIwMCwgMjM4LCAyMTAsIDE1NSwgMTAxLCAyNDAsIDE4MiwgMjA0LCAxODUsIDI0NiwgCisgICAgNzAsIDIxMywgMjIwLCAyNDAsIDE4MiwgMjEzLCAyMjAsIDI0NiwgNzAsIDIwNCwgMTg1LCAyMTAsIDE2NywgMjQyLCA0MSwgCisgICAgMywgNDksIDIzNSwgNDQsIDI0MiwgNDEsIDMsIDUxLCAyMzUsIDQ0LCAyMDQsIDE4NSwgMjQyLCA0MCwgMjA1LCAxNTgsIAorICAgIDE2NywgMjExLCAxOTMsIDU0LCAyMDQsIDE0MiwgMjQxLCAyNDQsIDIwNiwgNDQsIDI0MSwgMjQ0LCAyMDgsIDkxLCAyMzYsIAorICAgIDE4MywgMjA4LCA3NiwgODMsIDIwOSwgMTA2LCAyNDAsIDE4MCwgMjAxLCAyMiwgODMsIDIyNCwgMTc2LCAyNDcsIDE0MiwgCisgICAgNTMsIDIzMywgMzMsIDIxMywgMTA1LCAyNDYsIDcwLCA1MywgMjI0LCA1NSwgMjE0LCA2MywgODEsIDI0MSwgMjQ1LCAzLCAKKyAgICA0OSwgMjAzLCAyMTksIDUzLCAyMDcsIDE5NiwgODEsIDEyLCA0MiwgMjEzLCAxMzIsIDEyLCA0MiwgMjQ2LCAxMjAsIDEyLCAKKyAgICA0MiwgMjExLCAxOTYsIDEwMiwgMTIsIDQyLCAyMTEsIDE5NiwgMTA1LCAxMiwgNDIsIDIxMSwgMTk2LCAxNDcsIDEyLCA0MiwgCisgICAgMjE2LCAxMCwgMTIsIDQyLCAyNDgsIDc4LCAxMiwgNDIsIDIwNywgMjIsIDEyLCA0MiwgMjI2LCA5NiwgMTAyLCAxMiwgNDIsIAorICAgIDIyNiwgOTYsIDEwNSwgMTIsIDQyLCAyNDAsIDIzNiwgMTIsIDQyLCAyMTEsIDIwMCwgMTIsIDQyLCA0LCAxMDIsIDEyLCA0MiwgCisgICAgNCwgMTA1LCAxMiwgNDIsIDIyNSwgODYsIDEwMiwgMTIsIDQyLCAyMjUsIDg2LCAxMDUsIDEyLCA0MiwgMjI1LCA4NiwgMTQ3LCAKKyAgICAxMiwgNDIsIDIyNSwgODYsIDE0OSwgMTIsIDQyLCAyMDksIDQxLCAxMiwgNDIsIDIwNiwgNDcsIDEyLCA0MiwgMjA5LCAzOCwgCisgICAgMTAyLCAxMiwgNDIsIDIwOSwgMzgsIDEwNSwgMTIsIDQyLCAyMzQsIDEyOCwgMTAyLCAxMiwgNDIsIDIzNCwgMTI4LCAxMDUsIAorICAgIDEyLCA0MiwgMjM0LCAxOTksIDEyLCA0MiwgMjEzLCAyMTAsIDEyLCA0MiwgMjQ2LCAyMDYsIDEyLCA0MiwgMjA3LCAyMjgsIAorICAgIDEyLCA0MiwgMjIxLCA4MSwgMTIsIDQyLCAyNDEsIDE3MywgMTIsIDQyLCAyMjEsIDcxLCAxMiwgNDIsIDI0NiwgMTM4LCAxMiwgCisgICAgNDIsIDIwMSwgODMsIDEwMiwgMTIsIDQyLCAyMDEsIDgzLCAxMDUsIDEyLCA0MiwgMjM3LCA3NywgMTIsIDQyLCAyMTYsIDg1LCAKKyAgICAxMDIsIDEyLCA0MiwgMjE2LCA4NSwgMTA1LCAxMiwgNDIsIDIwOSwgMTQ2LCAxNjcsIDIwNSwgMTA5LCAyMDUsIDM3LCAxMiwgCisgICAgNDIsIDI0MiwgMjU1LCAxMiwgNDIsIDI0MCwgMjAwLCAxMiwgNDIsIDIyNywgMjQzLCAxMiwgNDIsIDI0OCwgMTE2LCA3NiwgCisgICAgMjQ2LCAxMDQsIDEyLCA0MiwgMjM4LCAyMiwgMTIsIDQyLCAyMDgsIDIxNSwgMTAyLCAxMiwgNDIsIDIwOCwgMjE1LCAxMDUsIAorICAgIDEyLCA0MiwgMjQ5LCA5MCwgMTIsIDQyLCAyMDksIDE1MywgMTIsIDQyLCAyNDcsIDIyMCwgMjA5LCAxNTMsIDEyLCA0MiwgCisgICAgMjIwLCAxNCwgMTAyLCAxMiwgNDIsIDIyMCwgMTQsIDEwNSwgMTIsIDQyLCAyMjAsIDE0LCAxNDcsIDEyLCA0MiwgMjIwLCAKKyAgICAxNCwgMTQ5LCAxMiwgNDIsIDIyMiwgMjcsIDEyLCA0MiwgMjEwLCA1OSwgMTIsIDQyLCAyMTMsIDIxNiwgMTIsIDQyLCAyMzgsIAorICAgIDUwLCAxMiwgNDIsIDIxNywgOTIsIDEyLCA0MiwgMjQ4LCA0NCwgMTAyLCAxMiwgNDIsIDI0OCwgNDQsIDEwNSwgMTIsIDQyLCAKKyAgICAyMjIsIDcxLCAxMiwgNDIsIDIyMSwgNzYsIDEyLCA0MiwgMjM1LCA3NywgMTAyLCAxMiwgNDIsIDIzNSwgNzcsIDEwNSwgMTIsIAorICAgIDQyLCAyMzUsIDc3LCAxNDcsIDEyLCA0MiwgMjA2LCAyLCAxMiwgNDIsIDI0NiwgMTAzLCAxMiwgNDIsIDIwMSwgNDgsIDEwMiwgCisgICAgMTIsIDQyLCAyMDEsIDQ4LCAxMDUsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMSwgMTkwLCAxMiwgNDIsIDIwOSwgMTQ2LCAyMzMsIAorICAgIDEyNCwgMTIsIDQyLCAyMzMsIDEyNCwgMTIsIDQyLCAyNDcsIDIyMCwgMjA4LCAyMjcsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMCwgCisgICAgNTQsIDEyLCA0MiwgMjM2LCAyNTUsIDEyLCA0MiwgMjQ3LCAyMjAsIDI0NywgMTE4LCAxMiwgNDIsIDIwOSwgMTQ2LCAyMDEsIAorICAgIDEwNCwgMTIsIDQyLCAyMDEsIDEwNSwgMTAyLCAxMiwgNDIsIDIwMSwgMTA1LCAxMDUsIDEyLCA0MiwgMjQ2LCAxNDEsIDEyLCAKKyAgICA0MiwgMjQ3LCAyMjAsIDIzNSwgMTA4LCAxMiwgNDIsIDE2OCwgMTAyLCAxMiwgNDIsIDE2OCwgMTA1LCAxMiwgNDIsIDI0NywgCisgICAgMjIwLCAyMjQsIDg5LCAxMiwgNDIsIDI0NywgMjIwLCAyMzYsIDQxLCAxMiwgNDIsIDIyMSwgNjcsIDEwMiwgMTIsIDQyLCAKKyAgICAyMjEsIDY3LCAxMDUsIDEyLCA0MiwgMjEzLCAyMjIsIDEyLCA0MiwgMjQ4LCAxMjYsIDEyLCA0MiwgMjQ3LCAyMjAsIDIwNiwgCisgICAgMjM4LCAyMjUsIDM0LCAxMiwgNDIsIDI0NywgMjIwLCAyMjUsIDM1LCAxMiwgNDIsIDI0NywgMjIwLCAyMDEsIDE2LCAxMiwgCisgICAgNDIsIDI0NywgMjIwLCAyMzcsIDE3LCAxMiwgNDIsIDIzOSwgMTEsIDEwMiwgMTIsIDQyLCAyMzksIDExLCAxMDUsIDEyLCAKKyAgICA0MiwgMjM5LCAxMSwgMTQ3LCAxMiwgNDIsIDI0NywgMjIwLCAyMzksIDEwLCAxMiwgNDIsIDIzNCwgMTM2LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzMsIDEyMCwgMTIsIDQyLCAyNDgsIDExMiwgMTIsIDQyLCAyMzUsIDE2OSwgMTIsIDQyLCAyNDcsIDIyMCwgCisgICAgMjM3LCA3MSwgMTIsIDQyLCAyNDcsIDIyMCwgMjQ4LCAxNjIsIDEyLCA0MiwgMjQ3LCAyMjAsIDIxMiwgMjcsIDEyLCA0MiwgCisgICAgMjA5LCAxNDYsIDIwMSwgMzksIDEyLCA0MiwgMjA5LCAxNDYsIDIwMCwgNDMsIDEyLCA0MiwgMjQ3LCAyMjAsIDIzNiwgMjAyLCAKKyAgICAxMiwgNDIsIDIyNywgMjUwLCAyMzgsIDU1LCAxMiwgNDIsIDI0NywgMjIwLCAyMzgsIDU1LCAxMiwgNDIsIDIyNywgMjUwLCAKKyAgICAyMDUsIDE1OSwgMTIsIDQyLCAyNDcsIDIyMCwgMjA1LCAxNTksIDEyLCA0MiwgMjI3LCAyNTAsIDIzOSwgMTU4LCAxMiwgNDIsIAorICAgIDI0NywgMjIwLCAyMzksIDE1OCwgMTIsIDQyLCAyMDQsIDE4MiwgMTIsIDQyLCAyMjcsIDI1MCwgMjA0LCAxODIsIDEyLCA0MiwgCisgICAgMjQ3LCAyMjAsIDIwNCwgMTgyLCA3NSwgNDIsIDEwMiwgNzUsIDQyLCAyMjQsIDE3NiwgNzUsIDQyLCAyNDAsIDE4MiwgNzUsIAorICAgIDQyLCAyMDksIDc1LCA3NSwgNDIsIDIxMSwgMTk1LCA3NSwgNDIsIDExNywgNzUsIDQyLCAxMDUsIDc1LCA0MiwgMjI0LCAKKyAgICAyMDUsIDc1LCA0MiwgMjIyLCAxODAsIDc1LCA0MiwgMjI1LCAxMywgNzUsIDQyLCAyMzgsIDE1NCwgNzUsIDQyLCAxOTIsIAorICAgIDc1LCA0MiwgMTI3LCAyNDgsIDc4LCA3NSwgNDIsIDI0MywgMSwgNzUsIDQyLCAyMzIsIDIzMSwgNzUsIDQyLCAyMDcsIDIyLCAKKyAgICA3NSwgNDIsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMjYsIDk1LCA3NSwgNDIsIDIxNSwgNTEsIDc1LCA0MiwgMjAwLCAyMjgsIAorICAgIDc1LCA0MiwgMjA4LCAyMDYsIDc1LCA0MiwgNTEsIDE3NiwgMjQ4LCA3OCwgNzUsIDQyLCAyMzQsIDcwLCAyMzgsIDE3NCwgCisgICAgNzUsIDQyLCAyMDYsIDE2NiwgNzUsIDQyLCAyNDAsIDIzNiwgNzUsIDQyLCAyMTEsIDIwMCwgNzUsIDQyLCAyNDYsIDEyMCwgCisgICAgNzUsIDQyLCAyMTUsIDMsIDc1LCA0MiwgMjUxLCAxOTIsIDc1LCA0MiwgMjIxLCA1OCwgNzUsIDQyLCAyMzgsIDE3NCwgNzUsIAorICAgIDQyLCAyMzksIDE3LCA3NSwgNDIsIDIxMSwgMjIzLCA3NSwgNDIsIDIzNSwgMTE2LCA3NSwgNDIsIDIzNSwgMTE3LCAyMDksIAorICAgIDU1LCA3NSwgNDIsIDIzOCwgNTQsIDc1LCA0MiwgMjQ4LCAxNzQsIDc1LCA0MiwgMjAwLCAyNTAsIDc1LCA0MiwgMjQ2LCAKKyAgICAyMjcsIDc1LCA0MiwgMjEyLCAyMzcsIDc1LCA0MiwgMjI4LCAxMTMsIDc1LCA0MiwgMjA5LCA1MywgNzUsIDQyLCAyMjUsIAorICAgIDg1LCA3NSwgNDIsIDI0MywgMTEsIDc1LCA0MiwgMjA4LCAxOTcsIDc1LCA0MiwgMjIxLCA2MywgNzUsIDQyLCAyMTMsIDE1LCAKKyAgICA3NSwgNDIsIDIwMCwgMjM1LCA3NSwgNDIsIDIxNywgNzAsIDc1LCA0MiwgMjA0LCAxOTEsIDc1LCA0MiwgMjM5LCAxMzksIAorICAgIDc1LCA0MiwgMjA5LCAyNTAsIDIwNiwgNDcsIDc1LCA0MiwgMjM5LCAxODAsIDI0NiwgMTIwLCA3NSwgNDIsIDE2OCwgMjA4LCAKKyAgICA1MywgNzUsIDQyLCAxMjAsIDIzNCwgMTc0LCA3NSwgNDIsIDIxMCwgMCwgNzUsIDQyLCAyNDgsIDg1LCA3NSwgNDIsIDIwOSwgCisgICAgMzcsIDc1LCA0MiwgMjQ4LCA0OCwgNzUsIDQyLCAyMDgsIDkwLCA3NSwgNDIsIDIzNCwgMTI3LCA3NSwgNDIsIDIzNCwgMjE0LCAKKyAgICA3NSwgNDIsIDI0MCwgMTg1LCA3NSwgNDIsIDIzNCwgMTk5LCA3NSwgNDIsIDI0OCwgNjYsIDc1LCA0MiwgMjEzLCAyMTAsIAorICAgIDc1LCA0MiwgMjExLCAyMDgsIDc1LCA0MiwgMjQxLCAxMiwgNzUsIDQyLCAyNTAsIDExMywgNzUsIDQyLCAyMDgsIDE5MywgCisgICAgNzUsIDQyLCAyMTgsIDIxNCwgNzUsIDQyLCAyMDcsIDIyOCwgNzUsIDQyLCAyMTEsIDIzNCwgNzUsIDQyLCAyMjEsIDgxLCAKKyAgICA3NSwgNDIsIDIwNSwgMTA4LCA3NSwgNDIsIDIyNSwgMTYyLCA3NSwgNDIsIDIwOCwgNzYsIDc1LCA0MiwgMjQxLCAxNzMsIAorICAgIDc1LCA0MiwgMjAxLCA2MywgNzUsIDQyLCAyNDAsIDIxMiwgMjE4LCAyMTQsIDc1LCA0MiwgMjQ2LCA2NiwgNzUsIDQyLCAKKyAgICAyMzYsIDE3NiwgNzUsIDQyLCAyNDYsIDEzMiwgNzUsIDQyLCAyMDgsIDk1LCA3NSwgNDIsIDIwMSwgODIsIDc1LCA0MiwgCisgICAgMjM3LCA3NywgNzUsIDQyLCAyNDYsIDEyOCwgNzUsIDQyLCAyMzcsIDE1NCwgNzUsIDQyLCA1MywgMjAwLCAxOTUsIDc1LCAKKyAgICA0MiwgMTY3LCAyMDUsIDEwOSwgMjA1LCAzNywgNzUsIDQyLCAyMDksIDY3LCA3NSwgNDIsIDIzNywgMTY2LCA3NSwgNDIsIAorICAgIDI0MiwgMjU1LCA3NSwgNDIsIDI0MCwgMjAwLCA3NSwgNDIsIDIxNSwgMCwgNzUsIDQyLCAyMjcsIDI0MywgNzUsIDQyLCAKKyAgICAyMjIsIDQ5LCA3NSwgNDIsIDIwNSwgMjM5LCA3NSwgNDIsIDIwNywgMTc4LCA3NSwgNDIsIDIyNCwgMTk5LCA3NSwgNDIsIAorICAgIDIwMywgMTk1LCA3NSwgNDIsIDIzNywgMTEwLCA3NSwgNDIsIDI0OCwgMTE2LCA3NiwgMjQ2LCAxMDQsIDc1LCA0MiwgMjA5LCAKKyAgICAxNzgsIDc1LCA0MiwgMjM5LCAxODAsIDIwNiwgMTU4LCA3NSwgNDIsIDIwMSwgMzQsIDc1LCA0MiwgMjA5LCA4MywgNzUsIAorICAgIDQyLCAyNDAsIDI1NSwgNzUsIDQyLCAyMzgsIDIyLCA3NSwgNDIsIDIwOCwgMjMwLCA3NSwgNDIsIDQ4LCA3NSwgNDIsIDIwOCwgCisgICAgNzgsIDc1LCA0MiwgMjA4LCAyMTQsIDc1LCA0MiwgMjA1LCAxMzEsIDc1LCA0MiwgMjM1LCA4NiwgNzUsIDQyLCAyNDcsIAorICAgIDEwNCwgNzUsIDQyLCAyMDgsIDExMywgNzUsIDQyLCAyNDksIDkwLCA3NSwgNDIsIDIxMywgODMsIDc1LCA0MiwgMjA5LCAKKyAgICAxNTMsIDc1LCA0MiwgMjI3LCAyMzUsIDc1LCA0MiwgMjIwLCAxMywgNzUsIDQyLCAyMTAsIDU5LCA3NSwgNDIsIDIzNywgCisgICAgMTQyLCA3NSwgNDIsIDIxNywgOTIsIDc1LCA0MiwgMjUxLCA3OSwgNzUsIDQyLCAyMTUsIDEyMCwgNzUsIDQyLCAyMzksIDIxLCAKKyAgICA3NSwgNDIsIDI0OCwgNDMsIDc1LCA0MiwgMjIyLCA3MSwgNzUsIDQyLCAyMjEsIDE1OCwgNzUsIDQyLCAyMTAsIDE3NCwgNzUsIAorICAgIDQyLCAyNTAsIDIwNiwgNzUsIDQyLCAyMjEsIDc2LCA3NSwgNDIsIDIwNSwgMTYzLCA3NSwgNDIsIDIxNywgNDEsIDc1LCA0MiwgCisgICAgMjQ4LCAxMjAsIDc1LCA0MiwgMjA4LCA3NCwgNzUsIDQyLCAyNDYsIDc4LCA3NSwgNDIsIDIzNSwgNzYsIDc1LCA0MiwgMjA2LCAKKyAgICAyLCA3NSwgNDIsIDIyOCwgNzYsIDc1LCA0MiwgMjQ4LCAxMzIsIDc1LCA0MiwgMjAxLCAxMDUsIDIzOCwgMTc0LCA3NSwgNDIsIAorICAgIDI0NiwgMTAzLCA3NSwgNDIsIDIwMSwgNDcsIDc1LCA0MiwgMjExLCAxOTAsIDc1LCA0MiwgMjMzLCAxMjQsIDc1LCA0MiwgCisgICAgMjA4LCAyMjcsIDc1LCA0MiwgMjAzLCA4MywgNzUsIDQyLCAyNDksIDMsIDc1LCA0MiwgMjE1LCAxNjgsIDc1LCA0MiwgMjQ5LCAKKyAgICAxMTYsIDc1LCA0MiwgMjEwLCA1NCwgNzUsIDQyLCAyMTMsIDE2OSwgNzUsIDQyLCAyMTIsIDE1OCwgNzUsIDQyLCAyMzYsIAorICAgIDI1NSwgNzUsIDQyLCAyNDgsIDExOCwgNzUsIDQyLCAyNDcsIDExOCwgNzUsIDQyLCAyNDgsIDE0OSwgNzUsIDQyLCAyMjEsIAorICAgIDc4LCA3NSwgNDIsIDIwMSwgMTA0LCA3NSwgNDIsIDI0NiwgMTQxLCA3NSwgNDIsIDIwMSwgMTIsIDc1LCA0MiwgMjQwLCAKKyAgICAyNDcsIDc1LCA0MiwgMjAyLCAyMTgsIDc1LCA0MiwgMjM1LCAxMDgsIDc1LCA0MiwgMjI0LCA4OSwgNzUsIDQyLCAyMzYsIAorICAgIDQxLCA3NSwgNDIsIDIyMSwgNjYsIDc1LCA0MiwgMjA5LCA3NCwgNzUsIDQyLCAyMDksIDI1MCwgMjA3LCA1LCAyNDgsIDE2MiwgCisgICAgNzUsIDQyLCAyMTMsIDIyMiwgNzUsIDQyLCAyNDgsIDEyNiwgNzUsIDQyLCAyMDAsIDIxOCwgNzUsIDQyLCAyMzcsIDE4OSwgCisgICAgNzUsIDQyLCAyMjUsIDM0LCA3NSwgNDIsIDIwNiwgMjM4LCAyMjUsIDM0LCA3NSwgNDIsIDIyNSwgMzAsIDc1LCA0MiwgMjA5LCAKKyAgICAwLCA3NSwgNDIsIDIyNSwgMzUsIDc1LCA0MiwgMjAxLCAxNiwgNzUsIDQyLCAyMzcsIDE3LCA3NSwgNDIsIDIzOSwgMTAsIAorICAgIDc1LCA0MiwgMjM0LCAxMzYsIDc1LCA0MiwgMjM2LCAyMTcsIDc1LCA0MiwgMjMzLCAxMjAsIDc1LCA0MiwgMjQ4LCAxMTIsIAorICAgIDc1LCA0MiwgMjA2LCAyNDcsIDc1LCA0MiwgMjM0LCAyMjEsIDc1LCA0MiwgMjM3LCAxMDMsIDc1LCA0MiwgMjEyLCA1OCwgCisgICAgMjAxLCAxMiwgNzUsIDQyLCAyNDcsIDEwNiwgNzUsIDQyLCAyMzUsIDE2OSwgNzUsIDQyLCAyMzcsIDcxLCA3NSwgNDIsIAorICAgIDI0OCwgMTYyLCA3NSwgNDIsIDIxMiwgMjcsIDc1LCA0MiwgMjQxLCAxNTgsIDc1LCA0MiwgMjAxLCAzOSwgNzUsIDQyLCAKKyAgICAyMzQsIDEwNiwgNzUsIDQyLCAyMDAsIDQzLCA3NSwgNDIsIDIyMSwgMTY5LCA3NSwgNDIsIDI0OCwgMTQ0LCA3NSwgNDIsIAorICAgIDIzOCwgMTg2LCA3NSwgNDIsIDIzNiwgMjAyLCA3NSwgNDIsIDIwNSwgODAsIDc1LCA0MiwgMjM5LCAxNDIsIDc1LCA0MiwgCisgICAgMjEzLCAyMDQsIDc1LCA0MiwgMjE4LCAyMTYsIDc1LCA0MiwgMjM4LCA1NSwgNzUsIDQyLCAyMDUsIDE1OSwgNzUsIDQyLCAKKyAgICAyMzksIDE1OCwgNzUsIDQyLCAyMDQsIDE4MiwgNzUsIDQyLCAyMzcsIDIwLCAxNDEsIDI0MSwgMTE3LCAxNzEsIDQ5LCAyMDUsIAorICAgIDE4NiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIAorICAgIDQ5LCAyMDUsIDE4NiwgMTAxLCAyNiwgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCA4OCwgMjA1LCAxODYsIDEwMSwgCisgICAgMjYsIDU3LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIzNiwgMTgzLCAyMDcsIDIwMCwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIAorICAgIDIwMSwgMjM2LCAyMDEsIDU2LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIDIwMSwgNTcsIDE0MSwgMjQxLCAKKyAgICAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMjUsIDI4LCAxNDEsIDI0MSwgMTE3LCAxNzEsIDIwNywgMjAxLCAyMzYsIAorICAgIDIwMSwgMjAzLCAyMjUsIDIyNSwgMjgsIDE0MSwgMjQxLCAxMTcsIDE3MSwgMjA3LCAyMDEsIDIzNiwgMjAxLCAyMDMsIDIyNSwgCisgICAgMjEzLCA0NiwgMTQxLCAyNDEsIDExNywgMTcxLCAyMDcsIDIwMSwgMjM2LCAyMDEsIDIyNCwgNTQsIDIyNSwgMjgsIDE0MSwgCisgICAgMjQxLCAxMTcsIDE3MSwgMjE2LCAyNDUsIDE0MSwgMjA4LCAyNDQsIDE0MSwgMjQ2LCA3MCwgMTQxLCAyMzYsIDE4MywgMjA4LCAKKyAgICA3NiwgMjQwLCAyNDQsIDgxLCAyMjcsIDIzNiwgMjI4LCA5NiwgMjA4LCAxMTIsIDk5LCAxNDEsIDIyOCwgMTAsIDgxLCAxNDEsIAorICAgIDI0NiwgMTA2LCA4MSwgMTQxLCA0MSwgMTk5LCA4MSwgNDksIDI1MSwgNzEsIDE1OSwgNTEsIDI1MSwgNzEsIDE1OSwgNDksIAorICAgIDUzLCAyNTEsIDcxLCAxNTksIDUxLCA1MywgMjUxLCA3MSwgMTU5LCA0OSwgMjQzLCAxNiwgMTU5LCA1MSwgMjQzLCAxNiwgCisgICAgMTU5LCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDQ5LCA2MywgMjI0LCAyNDcsIDE1OSwgCisgICAgNTEsIDYzLCAyMjQsIDI0NywgMTU5LCAyMTUsIDY1LCA4MSwgMjM1LCAyMzgsIDgxLCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIAorICAgIDE1OSwgNTEsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDQ5LCA2NCwgMjI0LCAyNDcsIDE1OSwgNTEsIDY0LCAyMjQsIDI0NywgCisgICAgMTU5LCA0OSwgNjQsIDIwNSwgMTQ2LCAyMTAsIDU1LCAxNTksIDUxLCA2NCwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNDksIAorICAgIDY0LCA1MiwgMTU5LCA1MSwgNjQsIDUyLCAxNTksIDIwMSwgNzgsIDI0MSwgMjQ0LCAyMTMsIDEwNSwgNTMsIDIxNSwgMTUsIAorICAgIDIxNCwgNjMsIDgxLCA1MywgMjE1LCAxNSwgMjE0LCA2MywgODEsIDEyOCwgNTMsIDIxNSwgMTUsIDIxNCwgNjMsIDgxLCAKKyAgICAyMTUsIDY1LCAxMzQsIDIzNywgMTg5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTAyLCAyMzQsIDE3MSwgMjE4LCA5MywgMTA1LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTQ3LCAyMzQsIDE3MSwgMjE4LCA5MywgMTQ5LCAyMzQsIDE3MSwgMjE4LCA5MywgMTY0LCAKKyAgICAyMzQsIDE3MSwgMjE4LCA5MywgMTg3LCAyMzQsIDE3MSwgMjE4LCA5MywgMjEwLCAxMzUsIDIzNCwgMTcxLCAyMTgsIDkzLCAKKyAgICAxOTIsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMTksIDExMywgMTQxLCAyMjQsIDIyOSwgMTUwLCA4MSwgMTQxLCAyMTMsIDE5LCAKKyAgICAxNTAsIDgxLCAxNDEsIDI0MSwgMTI2LCAxNTAsIDgxLCAxNDEsIDIzOCwgMTUzLCAxNTAsIDgxLCAyOSwgMjA5LCAxMzksIAorICAgIDczLCAxNTAsIDgxLCAyOSwgNTMsIDczLCAxNTAsIDgxLCAyMDEsIDc0LCAyNDEsIDI0NCwgODMsIDIyNywgNjcsIDIxMywgCisgICAgMTMzLCA4MSwgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgMjA5LCAxLCA4MSwgODMsIDIyNywgNjcsIAorICAgIDIxMywgMTMzLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAzLCAyMDIsIDE4OSwgCisgICAgMjA5LCAxLCAxMzQsIDIwMywgMjI1LCAyMzQsIDIxMywgODMsIDIyNywgNjcsIDIxMywgMTMzLCAxMzQsIDIyNCwgNTQsIAorICAgIDIzNCwgMjEzLCA0NCwgMjE1LCA2NSwgODEsIDE0MSwgMjA2LCAxNzgsIDIyNCwgMTc3LCAyMzcsIDEzOSwgMjEwLCAxNTUsIAorICAgIDk5LCAyMzQsIDE3MSwgMjE4LCA5MywgMjA2LCAxNjYsIDIzNCwgMTcxLCAyMTgsIDkzLCAyMDQsIDE1OSwgMjM0LCAxNzEsIAorICAgIDIxOCwgOTMsIDIwNiwgNjcsIDgzLCAxNDEsIDIyOCwgMTAsIDgxLCAyMjIsIDEyOCwgODEsIDIxNiwgMTEwLCAyNTEsIDEwNSwgCisgICAgODEsIDE0MSwgNTgsIDIyOCwgOTksIDE0MSwgMTY3LCAyMzcsIDk2LCAyMDgsIDI0NCwgMTc3LCAxLCA0LCA2MiwgMTc3LCAxLCAKKyAgICA2MiwgMTc3LCAxLCA0LCA3MCwgMTc3LCAxLCA3MCwgMTc3LCAxLCA0LCA2NiwgMTc3LCAxLCA2NiwgMTc3LCAxLCA0LCA3MiwgCisgICAgMTc3LCAxLCA3MiwgMTc3LCAxLCA0LCA3NCwgMTc3LCAxLCA3NCwgMTc3LCAxLCAxNjEsIDE3NywgMSwgMjM2LCA4OSwgMTc3LCAKKyAgICAxLCAyMjYsIDE2MywgMTc3LCAxLCAyMzUsIDE2MSwgMTc3LCAxLCAyMjYsIDE1LCAxNzcsIDEsIDIzNSwgNTAsIDE3NywgMSwgCisgICAgMjI3LCA4LCAxNzcsIDEsIDIzNiwgMTUsIDE3NywgMSwgMjI2LCA4OCwgMTc3LCAxLCAyMzUsIDExNiwgMTc3LCAxLCAyMTIsIAorICAgIDY0LCAxNzcsIDEsIDE5OSwgMTE0LCAxNzcsIDEsIDIwOSwgMTgyLCAxNzcsIDEsIDE5OSwgMzYsIDE3NywgMSwgMjA4LCAyNCwgCisgICAgMTc3LCAxLCAxOTksIDMsIDE3NywgMSwgMjExLCAyMDIsIDE3NywgMSwgMTk5LCA4OSwgMTc3LCAxLCAyMDksIDI5LCAxNzcsIAorICAgIDEsIDE5OSwgMTQsIDE3NywgMSwgMjA3LCAzNiwgMTc3LCAxLCAyNDIsIDU4LCAxNzcsIDEsIDIwNiwgMTUsIDE3NywgMSwgCisgICAgMjQxLCA3NiwgMTc3LCAxLCA0LCAyMDQsIDIxNSwgMTc3LCAxLCAyMDQsIDIxNSwgMTc3LCAxLCAyMzksIDEzNywgMTc3LCAxLCAKKyAgICAyMDYsIDIwMSwgMTc3LCAxLCAyNDEsIDE3NSwgMTc3LCAxLCAxMzgsIDE3NywgMSwgMjQwLCAyMTEsIDE3NywgMSwgMTg4LCAKKyAgICAxNzcsIDEsIDIxOSwgMTUwLCAxNzcsIDEsIDIxOCwgMTMzLCAxNzcsIDEsIDIyMCwgMzQsIDE3NywgMSwgMjE4LCAyNDEsIAorICAgIDE3NywgMSwgMTQ0LCAxNzcsIDEsIDI0OSwgMTM2LCAxNzcsIDEsIDE3MiwgMTc3LCAxLCAyMzQsIDc1LCAxNzcsIDEsIDI0OCwgCisgICAgMTg4LCAxNzcsIDEsIDIxNSwgMjA0LCAxNzcsIDEsIDIzMywgOTcsIDE3NywgMSwgMjQ4LCAzNiwgMTc3LCAxLCAyMTQsIAorICAgIDIyNCwgMTc3LCAxLCAyMzQsIDEzOSwgMTc3LCAxLCAyNDksIDgsIDE3NywgMSwgMjE2LCA3MywgMTc3LCAxLCAyMzMsIDIwNywgCisgICAgMTc3LCAxLCAyNDgsIDEyNCwgMTc3LCAxLCAyMTUsIDEwNiwgMTc3LCAxLCAxNzgsIDE3NywgMSwgMjIxLCAyMTEsIDE3NywgCisgICAgMSwgMjIxLCA0MSwgMTc3LCAxLCAyMjIsIDc2LCAxNzcsIDEsIDIyMSwgMTM2LCAxNzcsIDEsIDQsIDE4MywgMTc3LCAxLCAKKyAgICAxODMsIDE3NywgMSwgNCwgMTk5LCAyMTEsIDE3NywgMSwgMTk5LCAyMTEsIDE3NywgMSwgNCwgMTk5LCAyNDUsIDE3NywgMSwgCisgICAgMTk5LCAyNDUsIDE3NywgMSwgMjEzLCAyNTIsIDE3NywgMSwgMjEzLCA4OCwgMTc3LCAxLCAyMTIsIDE3NSwgMTc3LCAxLCAKKyAgICAyMTMsIDE5MCwgMTc3LCAxLCAyMTMsIDEsIDE3NywgMSwgNCwgMjAxLCAxMTQsIDE3NywgMSwgMjAxLCAxMTQsIDE3NywgMSwgCisgICAgMjAxLCAzMSwgMTc3LCAxLCAyMDEsIDY0LCAxNzcsIDEsIDIwMSwgMCwgMTc3LCAxLCAyMjAsIDIxNCwgMTc3LCAxLCAyMDEsIAorICAgIDE2NiwgMTc3LCAxLCA0LCAxNjEsIDE3NywgMSwgNCwgMjI3LCA4LCAzOCwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgCisgICAgODEsIDM4LCAyMjcsIDMyLCAyMTAsIDE3MiwgMjA5LCAxLCA4MSwgMjI3LCAzMiwgMjAyLCAxODksIDIwOSwgMSwgODEsIAorICAgIDIyNywgMzIsIDIxMCwgMTcyLCAyMDksIDEsIDgxLCAxNzcsIDIyOCwgMTAsIDgxLCAxNzcsIDIwMiwgMTg5LCAyMjgsIDEwLCAKKyAgICA4MSwgMTc3LCAyNDEsIDM1LCAxOTksIDIyNiwgMjI3LCAzMiwgNTMsIDIzMywgMzMsIDY5LCAxLCA0LCA2MiwgNjksIDEsIAorICAgIDYyLCA2OSwgMSwgNCwgNzAsIDY5LCAxLCA3MCwgNjksIDEsIDQsIDY2LCA2OSwgMSwgNjYsIDY5LCAxLCA0LCA3MiwgNjksIAorICAgIDEsIDcyLCA2OSwgMSwgNCwgNzQsIDY5LCAxLCA3NCwgNjksIDEsIDE2MSwgNjksIDEsIDIzNiwgODksIDY5LCAxLCAyMjYsIAorICAgIDE2MywgNjksIDEsIDIzNSwgMTYxLCA2OSwgMSwgMjI2LCAxNSwgNjksIDEsIDIzNSwgNTAsIDY5LCAxLCAyMjcsIDgsIDY5LCAKKyAgICAxLCAyMzYsIDE1LCA2OSwgMSwgMjI2LCA4OCwgNjksIDEsIDIzNSwgMTE2LCA2OSwgMSwgMjEyLCA2NCwgNjksIDEsIDE5OSwgCisgICAgMTE0LCA2OSwgMSwgMjA5LCAxODIsIDY5LCAxLCAxOTksIDM2LCA2OSwgMSwgMjA4LCAyNCwgNjksIDEsIDE5OSwgMywgNjksIAorICAgIDEsIDIxMSwgMjAyLCA2OSwgMSwgMTk5LCA4OSwgNjksIDEsIDIwOSwgMjksIDY5LCAxLCAxOTksIDE0LCA2OSwgMSwgMjA3LCAKKyAgICAzNiwgNjksIDEsIDI0MiwgNTgsIDY5LCAxLCAyMDYsIDE1LCA2OSwgMSwgMjQxLCA3NiwgNjksIDEsIDQsIDIwNCwgMjE1LCAKKyAgICA2OSwgMSwgMjA0LCAyMTUsIDY5LCAxLCAyMzksIDEzNywgNjksIDEsIDIwNiwgMjAxLCA2OSwgMSwgMjQxLCAxNzUsIDY5LCAKKyAgICAxLCAxMzgsIDY5LCAxLCAyNDAsIDIxMSwgNjksIDEsIDE4OCwgNjksIDEsIDIxOSwgMTUwLCA2OSwgMSwgMjE4LCAxMzMsIAorICAgIDY5LCAxLCAyMjAsIDM0LCA2OSwgMSwgMjE4LCAyNDEsIDY5LCAxLCAxNDQsIDY5LCAxLCAyNDksIDEzNiwgNjksIDEsIDE3MiwgCisgICAgNjksIDEsIDIzNCwgNzUsIDY5LCAxLCAyNDgsIDE4OCwgNjksIDEsIDIxNSwgMjA0LCA2OSwgMSwgMjMzLCA5NywgNjksIDEsIAorICAgIDI0OCwgMzYsIDY5LCAxLCAyMTQsIDIyNCwgNjksIDEsIDIzNCwgMTM5LCA2OSwgMSwgMjQ5LCA4LCA2OSwgMSwgMjE2LCA3MywgCisgICAgNjksIDEsIDIzMywgMjA3LCA2OSwgMSwgMjQ4LCAxMjQsIDY5LCAxLCAyMTUsIDEwNiwgNjksIDEsIDE3OCwgNjksIDEsIAorICAgIDIyMSwgMjExLCA2OSwgMSwgMjIxLCA0MSwgNjksIDEsIDIyMiwgNzYsIDY5LCAxLCAyMjEsIDEzNiwgNjksIDEsIDQsIDE4MywgCisgICAgNjksIDEsIDE4MywgNjksIDEsIDQsIDE5OSwgMjExLCA2OSwgMSwgMTk5LCAyMTEsIDY5LCAxLCA0LCAxOTksIDI0NSwgNjksIAorICAgIDEsIDE5OSwgMjQ1LCA2OSwgMSwgMjEzLCAyNTIsIDY5LCAxLCAyMTMsIDg4LCA2OSwgMSwgMjEyLCAxNzUsIDY5LCAxLCAKKyAgICAyMTMsIDE5MCwgNjksIDEsIDIxMywgMSwgNjksIDEsIDQsIDIwMSwgMTE0LCA2OSwgMSwgMjAxLCAxMTQsIDY5LCAxLCAyMDEsIAorICAgIDMxLCA2OSwgMSwgMjAxLCA2NCwgNjksIDEsIDIwMSwgMCwgNjksIDEsIDIyMCwgMjE0LCA2OSwgMSwgMjAxLCAxNjYsIDY5LCAKKyAgICAxLCA0LCAxNjEsIDY5LCAxLCA0LCAyMjcsIDgsIDY5LCAxLCAyMDMsIDkwLCA2OSwgMSwgMjAyLCAyMzQsIDY5LCAxLCAyMDMsIAorICAgIDU5LCA2OSwgMSwgMjAyLCAxOTMsIDY5LCAxMDEsIDI0MCwgMTgyLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgCisgICAgNjksIDIyOCwgMTAsIDgxLCA2OSwgMjAyLCAxODksIDIyOCwgMTAsIDgxLCA2OSwgMjQxLCAzNSwgMjI2LCA1NSwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTAzLCAyNDgsIDEwMiwgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCAxLCAyMjMsIDI0MywgMjQ4LCAxMDIsIAorICAgIDEsIDIzOCwgNSwgMjQ4LCAxMDIsIDEsIDI0MiwgMTUzLCAyNDgsIDEwMiwgMSwgMjA3LCA4MywgMjQ4LCAxMDIsIDEsIDIyMCwgCisgICAgMjE0LCAyNDgsIDEwMiwgMSwgMTU2LCAyNDgsIDEwMiwgMSwgMjM2LCAxNTYsIDI0OCwgMTAyLCAxLCAyMjcsIDExOCwgMjQ4LCAKKyAgICAxMDIsIDEsIDIzNCwgMjQ3LCAyNDgsIDEwMiwgMSwgMjI3LCAyNTEsIDI0OCwgMTAyLCAxLCAyMTQsIDE2NywgMjQ4LCAxMDIsIAorICAgIDEsIDIwMCwgMTk1LCAyNDgsIDEwMiwgMSwgMTk5LCA3OCwgMjQ4LCAxMDIsIDEsIDI0NywgMzgsIDI0OCwgMTAyLCAxLCAKKyAgICAyMTAsIDExNiwgMjQ4LCAxMDIsIDEsIDE0NiwgMjQ4LCAxMDIsIDEsIDE5OSwgMTU3LCAyNDgsIDEwMiwgMSwgMjQ3LCAyMjMsIAorICAgIDI0OCwgMTAyLCAxLCAyMTIsIDEyMiwgMjQ4LCAxMDIsIDEsIDYyLCAyNDgsIDEwMiwgMSwgNzQsIDI0OCwgMTAyLCAxLCA3MiwgCisgICAgMjQ4LCAxMDIsIDEsIDIzOCwgMjQxLCAyNDgsIDEwMiwgMSwgMjUxLCAxNzYsIDI0OCwgMTAyLCAxLCAyMzgsIDIzNCwgMjQ4LCAKKyAgICAxMDIsIDEsIDI1MCwgMTM5LCAyNDgsIDEwMiwgMSwgMjE3LCAzLCAyNDgsIDEwMiwgMSwgMjUxLCA4NSwgMjQ4LCAxMDIsIDEsIAorICAgIDIzOCwgMTc5LCAyNDgsIDEwMiwgMSwgMjUxLCA3NiwgMjQ4LCAxMDIsIDEsIDIzOCwgMTY1LCAyNDgsIDEwMiwgMSwgMjM4LCAKKyAgICAxMTUsIDI0OCwgMTAyLCAxLCA3MCwgMjQ4LCAxMDIsIDEsIDY2LCAyNDgsIDEwMiwgMSwgMjI4LCA4LCAyNDgsIDEwMiwgMSwgCisgICAgMjAzLCAxNjgsIDI0OCwgMTAyLCAxLCAyMTksIDI1NSwgMjQ4LCAxMDIsIDEsIDIzNSwgMTIwLCAyNDgsIDEwMiwgMSwgMjI4LCAKKyAgICAxNTIsIDI5LCAxLCAyMjYsIDEyMSwgMjksIDEsIDIwOCwgMTcxLCAyOSwgMSwgMjI2LCAxMTQsIDI5LCAxLCAyMTksIDE0MywgCisgICAgMjksIDEsIDIxOSwgMTQxLCAyOSwgMSwgMjE5LCAxNDAsIDI5LCAxLCAyMDUsIDI1MywgMjksIDEsIDIwOCwgMTYwLCAyOSwgCisgICAgMSwgMjEzLCA3OCwgMjksIDEsIDIxMywgNzMsIDI5LCAxLCAyMTMsIDcwLCAyOSwgMSwgMjEzLCA2MywgMjksIDEsIDIxMywgCisgICAgNTgsIDI5LCAxLCAyMTMsIDUzLCAyOSwgMSwgMjEzLCA2NCwgMjksIDEsIDIxMywgNzYsIDI5LCAxLCAyMjEsIDE5NywgMjksIAorICAgIDEsIDIxNSwgMTkwLCAyOSwgMSwgMjA4LCAxNjgsIDI5LCAxLCAyMTUsIDE3OSwgMjksIDEsIDIwOSwgMTI5LCAyOSwgMSwgCisgICAgMjA4LCAxNjUsIDI5LCAxLCAyMjgsIDE3NCwgMjksIDEsIDI0NiwgMTY4LCAyOSwgMSwgMjA4LCAxNzUsIDI5LCAxLCAyNDYsIAorICAgIDIzMiwgMjksIDEsIDIyNiwgMTgzLCAyOSwgMSwgMjA2LCA4MCwgMjksIDEsIDIxNSwgMjI3LCAyOSwgMSwgMjM0LCA2NiwgCisgICAgMjksIDEsIDYyLCAyOSwgMSwgMjUxLCAyMjEsIDI5LCAxLCAxODMsIDI5LCAxLCAyMDAsIDk4LCAyOSwgMSwgMjM4LCAxNDIsIAorICAgIDI5LCAxLCA3MiwgMjksIDEsIDIwMCwgMzgsIDI5LCAxLCAyMDAsIDUxLCAyOSwgMSwgNzQsIDI5LCAxLCAyMDEsIDExNCwgCisgICAgMjksIDEsIDIwMSwgMTEwLCAyOSwgMSwgMjE3LCAxMjEsIDI5LCAxLCAxOTksIDI0NSwgMjksIDEsIDY2LCAyOSwgMSwgMjAxLCAKKyAgICA1MCwgMjksIDEsIDIwMSwgNjQsIDI5LCAxLCAyMDEsIDMxLCAyOSwgMSwgMTk5LCAyMTEsIDI5LCAxLCAyMzgsIDY5LCAyOSwgCisgICAgMSwgMjAwLCA5LCAyOSwgMSwgNzAsIDI5LCAyMzcsIDkzLCAyOSwgMSwgMjA4LCAxNjksIDI5LCAxLCAyMTksIDEzMywgMjksIAorICAgIDEsIDIxOSwgMTM1LCAyOSwgMSwgMjE5LCAxMzgsIDI5LCAxLCAyMTMsIDcxLCAyOSwgMSwgMjEzLCA1MiwgMjksIDEsIDIxMywgCisgICAgNjAsIDI5LCAxLCAyMTMsIDY1LCAyOSwgMSwgMjEzLCA1MCwgMjksIDEsIDIyMSwgMTkwLCAyOSwgMSwgMjIxLCAxODcsIDI5LCAKKyAgICAxLCAyMjEsIDE5MSwgMjksIDEsIDIyNywgNTMsIDI5LCAxLCAyMTUsIDE4NSwgMjksIDEsIDIxNSwgMTcxLCAyOSwgMSwgCisgICAgMjE1LCAxNzcsIDI5LCAxLCAyMTUsIDE3NCwgMjksIDEsIDIxNSwgMTg4LCAyOSwgMSwgMjE1LCAxNzIsIDI5LCAxLCAyMjcsIAorICAgIDUxLCAyOSwgMSwgMjI3LCA0OSwgMjksIDEsIDIwOSwgMTIyLCAyOSwgMSwgMjA5LCAxMjAsIDI5LCAxLCAyMDksIDExMiwgCisgICAgMjksIDEsIDIwOSwgMTE3LCAyOSwgMSwgMjA5LCAxMjcsIDI5LCAxLCAyMTYsIDE0NiwgMjksIDEsIDIwOCwgMTcyLCAyOSwgCisgICAgMSwgMjAwLCAyOCwgMjksIDEsIDIwMCwgMjQsIDI5LCAxLCAyMDAsIDI1LCAyOSwgMSwgMjI3LCA1MiwgMjksIDEsIDIwOCwgCisgICAgMTczLCAyOSwgMSwgMjAwLCAzNCwgMjksIDEsIDE5OSwgMjM5LCAyOSwgMSwgMTk5LCAyMzgsIDI5LCAxLCAxOTksIDI0MSwgCisgICAgMjksIDEsIDE5OSwgMjAyLCAyOSwgMSwgMTk5LCAyMDMsIDI5LCAxLCAxOTksIDIwNiwgMjksIDEsIDI1MCwgMjQ1LCAyOSwgCisgICAgMSwgMjUwLCAyMzksIDE0MSwgMjUxLCA1OCwgMjI0LCAxNjUsIDgxLCAxNDEsIDI1MSwgNTgsIDIxMywgMTA2LCA4MSwgMTQxLCAKKyAgICAyNTEsIDU4LCAxMTIsIDgxLCAxNDEsIDI1MSwgNTgsIDEyMCwgODEsIDE0MSwgMjUxLCA1OCwgMTI2LCA4MSwgMTQxLCAyNTEsIAorICAgIDU4LCAyMzYsIDIyOSwgODEsIDE0MSwgMjUxLCA1OCwgMjA1LCAxNTgsIDgxLCAxNDEsIDI1MSwgNTgsIDEwMSwgODEsIDE0MSwgCisgICAgMjUxLCA1OCwgMjQ4LCA5MywgODEsIDE0MSwgMjUxLCA1OCwgMjM3LCA3MywgODEsIDE0MSwgMjUxLCA1OCwgMjExLCAxOTYsIAorICAgIDgxLCAxNDEsIDI1MSwgNTgsIDIwNiwgNzUsIDgxLCAxNDEsIDI1MSwgNTgsIDIzNiwgMjIyLCA4MSwgMTQxLCAyNTEsIDU4LCAKKyAgICAyMzQsIDEyNCwgODEsIDE0MSwgMjUxLCA1OCwgMjM5LCAxOCwgODEsIDE0MSwgMjUxLCA1OCwgMjIyLCAxODEsIDgxLCAyNDgsIAorICAgIDEwMiwgMSwgMjQ4LCAzNiwgMjQ4LCAxMDIsIDEsIDE5OSwgMzYsIDI0OCwgMTAyLCAxLCAyMjcsIDIwNywgMjQ4LCAxMDIsIAorICAgIDEsIDIzNSwgNTAsIDI0OCwgMTAyLCAxLCAyMzgsIDI1NSwgMjQ4LCAxMDIsIDEsIDIzOCwgMTYyLCAyNDgsIDEwMiwgMSwgCisgICAgMjE3LCA2MywgMjQ4LCAxMDIsIDEsIDIxNywgNjcsIDI0OCwgMTAyLCAxLCAyMjgsIDM1LCAyNDgsIDEwMiwgMSwgMjUxLCAKKyAgICA2MCwgMjQ4LCAxMDIsIDEsIDIyOCwgODMsIDI0OCwgMTAyLCAxLCAyMDMsIDIzMywgMjQ4LCAxMDIsIDEsIDIyOCwgMTM0LCAKKyAgICAyNDgsIDEwMiwgMSwgMjE5LCAyMzMsIDI0OCwgMTAyLCAxLCAyNTEsIDE3MCwgMjQ4LCAxMDIsIDEsIDI1MCwgMTM0LCAyNDgsIAorICAgIDEwMiwgMSwgMjUxLCAxMDEsIDI0OCwgMTAyLCAxLCAyMTcsIDg2LCAyNDgsIDEwMiwgMSwgMjE3LCA2OSwgMjQ4LCAxMDIsIAorICAgIDEsIDIyOCwgODAsIDI0OCwgMTAyLCA0NywgMSwgMjE2LCAyMjYsIDI0OCwgMTAyLCA0NywgMSwgMjA3LCA4MywgMjQ4LCAKKyAgICAxMDIsIDQ3LCAxLCAyMjcsIDExOCwgMjQ4LCAxMDIsIDQ3LCAxLCAyMzQsIDI0NywgMjQ4LCAxMDIsIDEsIDIzNSwgMjAwLCAKKyAgICAyNDgsIDEwMiwgMSwgMjI0LCAyMjQsIDI0OCwgMTAyLCAxLCAxOTgsIDIzOSwgMTIsIDIwOCwgNDcsIDIwNywgODMsIDEyLCAKKyAgICAyMDgsIDQ3LCAyMDEsIDQyLCAxMiwgMjA4LCA0NywgMjAwLCAxNzAsIDEyLCAyMDgsIDQ3LCAyNDcsIDIzNiwgMTIsIDIwOCwgCisgICAgNDcsIDIwNywgMTg3LCAxMiwgMjA4LCA0NywgMjMzLCAyMywgMTIsIDIwOCwgNDcsIDIzMywgMjcsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMzMsIDEwNiwgMTIsIDIwOCwgNDcsIDIzMywgMjQsIDEyLCAyMDgsIDQ3LCAyMDcsIDg2LCAxMiwgMjA4LCA0NywgMjMzLCAKKyAgICAyNiwgMTIsIDIwOCwgNDcsIDIzMywgMjIsIDEyLCAyMDgsIDQ3LCAyMzMsIDEwNCwgMTIsIDIwOCwgNDcsIDIzMywgMjUsIAorICAgIDEyLCAyMDgsIDQ3LCAyMzMsIDIxLCAxMiwgMjA4LCA0NywgMjIwLCAyMTQsIDEyLCAyMDgsIDQ3LCAyMzQsIDI0NywgMTIsIAorICAgIDIwOCwgNDcsIDIxMiwgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCAyMjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDI0NywgMTIsIDIwOCwgCisgICAgNDcsIDI0MiwgMTUzLCAxMiwgMjA4LCA0NywgMjMzLCAyOCwgMTIsIDIwOCwgNDcsIDIzNCwgODUsIDEyLCAyMDgsIDQ3LCAKKyAgICAyMDcsIDk1LCAxMiwgMjA4LCA0NywgMjA3LCAxNjYsIDEyLCAyMDgsIDQ3LCAyMDgsIDEyMywgMTIsIDIwOCwgNDcsIDIxMCwgCisgICAgMTIyLCAxMiwgMjA4LCA0NywgMjE2LCA3NywgMTIsIDIwOCwgNDcsIDIxNCwgMTY5LCAxMiwgMjA4LCA0NywgMjA1LCAxODcsIAorICAgIDEyLCAyMDgsIDQ3LCAyMDcsIDg1LCAxMiwgMjA4LCA0NywgMjA3LCAxNzcsIDEyLCAyMDgsIDQ3LCAyMzMsIDM3LCAxMiwgCisgICAgMjA4LCA0NywgMjMzLCAyMCwgMTIsIDIwOCwgNDcsIDIxNSwgMjQ3LCAxMiwgMjA4LCA0NywgMjE0LCAxNjcsIDY5LCAxLCA0LCAKKyAgICAyMjYsIDE1LCA2OSwgMSwgNCwgMjA5LCAxODIsIDY5LCAxLCA0LCAyMDgsIDI0LCA2OSwgMSwgNCwgMTM4LCA2OSwgMSwgNCwgCisgICAgMjE4LCAxMzMsIDY5LCAxLCA0LCAxNDQsIDY5LCAxLCA0LCAyMzQsIDc1LCA2OSwgMSwgNCwgMjMzLCA5NywgNjksIDEsIDQsIAorICAgIDIzNCwgMTM5LCA2OSwgMSwgNCwgMjMzLCAyMDcsIDY5LCAxLCA0LCAyMjEsIDQxLCA2OSwgMSwgNCwgMjEzLCAyNTIsIDY5LCAKKyAgICAxLCA0LCAyMTMsIDg4LCA2OSwgMSwgNCwgMjEyLCAxNzUsIDY5LCAxLCA0LCAyMTMsIDE5MCwgNjksIDEsIDQsIDIxMywgMSwgCisgICAgMTA2LCAyOSwgMjI2LCAxMjEsIDEwNiwgMjksIDIxOSwgMTQzLCAxMDYsIDI5LCAyMDUsIDI1MywgMTA2LCAyOSwgMjEzLCAKKyAgICA3OCwgMTA2LCAyOSwgMjIxLCAxOTcsIDEwNiwgMjksIDIxNSwgMTkwLCAxMDYsIDI5LCAyMDksIDEyOSwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzQsIDEwNiwgMjksIDI0NiwgMTY4LCAxMDYsIDI5LCAyNDYsIDIzMiwgMTA2LCAyOSwgMjI2LCAxODMsIDEwNiwgCisgICAgMjksIDIwNiwgODAsIDEwNiwgMjksIDIxNSwgMjI3LCAxMDYsIDI5LCAyMzQsIDY2LCAxMDYsIDI5LCAyMjYsIDEyMiwgNjIsIAorICAgIDEwNiwgMjksIDIxOSwgMTQ0LCA2MiwgMTA2LCAyOSwgMjA1LCAyNTQsIDYyLCAxMDYsIDI5LCAyMTMsIDc5LCA2MiwgMTA2LCAKKyAgICAyOSwgMjIxLCAxOTgsIDYyLCAxMDYsIDI5LCAyMTUsIDE5MSwgNjIsIDEwNiwgMjksIDIwOSwgMTMwLCA2MiwgMTA2LCAyOSwgCisgICAgMjI4LCAxNzUsIDYyLCAxMDYsIDI5LCAyNDYsIDE2OSwgNjIsIDEwNiwgMjksIDI0NiwgMjMzLCA2MiwgMTA2LCAyOSwgMjI2LCAKKyAgICAxODQsIDYyLCAxMDYsIDI5LCAyMDYsIDgxLCA2MiwgMTA2LCAyOSwgMjE1LCAyMjgsIDYyLCAxMDYsIDI5LCAyMzQsIDY3LCAKKyAgICA2MiwgMTA2LCAyOSwgMjQ2LCAxNjksIDY2LCAxMDYsIDIyNiwgNTksIDE3MSwgMjE3LCAxMDEsIDEwNiwgMjI2LCA1OSwgCisgICAgMTcxLCAxNjMsIDIzMywgOTcsIDEwNiwgMTk4LCAxOTgsIDEwMiwgMTA2LCAxOTgsIDE5OCwgMTA1LCAxMDYsIDE5OCwgMTk4LCAKKyAgICAxNDcsIDEwNiwgMTk4LCAxOTgsIDE0OSwgMTA2LCAxOTgsIDE5OCwgMTY0LCAxMDYsIDE5OCwgMTk4LCAxODcsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIxMCwgMTM1LCAxMDYsIDE5OCwgMTk4LCAxOTIsIDEwNiwgMTk4LCAxOTgsIDIxOSwgMTEzLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMDYsIDE2NiwgMTA2LCAxOTgsIDE5OCwgMjIxLCA4MSwgMTA2LCAxOTgsIDE5OCwgMjM3LCA3NywgMTA2LCAKKyAgICAxOTgsIDE5OCwgMjAxLCA4MiwgMTA2LCAxOTgsIDE5OCwgMjAwLCAyNDMsIDEwNiwgMTk4LCAxOTgsIDIyMiwgMjAsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIzOSwgMTcsIDEwNiwgMTk4LCAxOTgsIDIwNywgMjI4LCAxMDYsIDE5OCwgMTk4LCAyMDgsIDc5LCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMzQsIDE0OCwgMTA2LCAxOTgsIDE5OCwgMjA5LCAyNSwgMTA2LCAxOTgsIDE5OCwgMjIwLCAxMzUsIDEwNiwgCisgICAgMTk4LCAxOTgsIDIwOCwgMjI5LCAxMDYsIDE5OCwgMTk4LCAyMzcsIDg4LCAxMDYsIDE5OCwgMTk4LCAyNDMsIDYxLCAxMDYsIAorICAgIDE5OCwgMTk4LCAyMjUsIDE2NSwgMTA2LCAxOTgsIDE5OCwgMjEzLCAxMjcsIDEwNiwgMTk4LCAxOTgsIDI0NywgMTY4LCAKKyAgICAxMDYsIDE5OCwgMTk4LCAyMDgsIDI5LCAxMDYsIDE5OCwgMTk4LCAyMDcsIDIxMCwgMTA2LCAxOTgsIDE5OCwgMjM4LCAxNTIsIAorICAgIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE5LCAxMDYsIDE5OCwgMTk4LCAyNTEsIDEyMCwgMTA2LCAxOTgsIDE5OCwgMjM3LCAKKyAgICAxMTksIDEwNiwgMTk4LCAxOTgsIDIxMywgMTE3LCAxMDYsIDE5OCwgMTk4LCAyMTAsIDE3NCwgMTA2LCAxOTgsIDE5OCwgCisgICAgMjEzLCAxODksIDQ0LCAxOTgsIDE5OCwgMjE0LCA3OCwgNDQsIDE5OCwgMTk4LCAyMjYsIDE0NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMTEsIDIyMSwgNDQsIDE5OCwgMTk4LCAyMjYsIDU1LCA0NCwgNDEsIDIwNiwgMTY3LCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIAorICAgIDQ0LCA0MSwgMjA0LCAxNjAsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMDYsIDY4LCAyMTcsIDc5LCA2MywgCisgICAgMjA4LCAxOTMsIDQ0LCA0MSwgMjM2LCAyMzYsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMzcsIDEwNSwgMjE3LCAKKyAgICA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIwOSwgOTMsIDIxNywgNzksIDYzLCAyMDgsIDE5MywgNDQsIDQxLCAyMTAsIAorICAgIDEzMCwgMjE3LCA3OSwgNjMsIDIwOCwgMTkzLCA0NCwgNDEsIDIzOCwgMjIzLCAyMTcsIDc5LCA2MywgMjA4LCAxOTMsIDIxNiwgCisgICAgMTA2LCA1NCwgNDQsIDQxLCAyMDQsIDE2MCwgMTAyLCA0NCwgNDEsIDIwNCwgMTYwLCAxMDUsIDQ0LCA0MSwgMjA0LCAxNjAsIAorICAgIDE0NywgNDQsIDQxLCAyMDQsIDE2MCwgMTQ5LCA0NCwgNDEsIDIwNCwgMTYwLCAxNjQsIDQ0LCA0MSwgMjA0LCAxNjAsIDE4NywgCisgICAgNDQsIDQxLCAyMDQsIDE2MCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA0LCAxNjAsIDE5MiwgNDQsIDQxLCAyMDQsIDE2MCwgMjE5LCAKKyAgICAxMTMsIDQ0LCA0MSwgMjA2LCA2NywgNDQsIDQxLCAyMDYsIDY4LCAxMDIsIDQ0LCA0MSwgMjA2LCA2OCwgMTA1LCA0NCwgNDEsIAorICAgIDIwNiwgNjgsIDE0NywgNDQsIDQxLCAyMDYsIDY4LCAxNDksIDQ0LCA0MSwgMjA2LCA2OCwgMTY0LCA0NCwgMjksIDIyNiwgCisgICAgMTIxLCA0NCwgMjksIDIxOSwgMTQzLCA0NCwgMjksIDIwNSwgMjUzLCA0NCwgMjksIDIxMywgNzgsIDQ0LCAyOSwgMjIxLCAKKyAgICAxOTcsIDQ0LCAyOSwgMjE1LCAxOTAsIDQ0LCAyOSwgMjA5LCAxMjksIDQ0LCAyOSwgMjI4LCAxNzQsIDQ0LCAyOSwgMjQ2LCAKKyAgICAxNjgsIDQ0LCAyOSwgMjQ2LCAyMzIsIDQ0LCAyOSwgMjI2LCAxODMsIDQ0LCAyOSwgMjA2LCA4MCwgNDQsIDI5LCAyMTUsIAorICAgIDIyNywgNDQsIDI5LCAyMzQsIDY2LCA0NCwgMjksIDIyNiwgMTIyLCA2MiwgNDQsIDI5LCAyMTksIDE0NCwgNjIsIDQ0LCAyOSwgCisgICAgMjA1LCAyNTQsIDYyLCA0NCwgMjksIDIxMywgNzksIDYyLCA0NCwgMjksIDIyMSwgMTk4LCA2MiwgNDQsIDI5LCAyMTUsIAorICAgIDE5MSwgNjIsIDQ0LCAyOSwgMjA5LCAxMzAsIDYyLCA0NCwgMjksIDIyOCwgMTc1LCA2MiwgNDQsIDI5LCAyNDYsIDE2OSwgCisgICAgNjIsIDQ0LCAyOSwgMjQ2LCAyMzMsIDYyLCA0NCwgMjksIDIyNiwgMTg0LCA2MiwgNDQsIDI5LCAyMDYsIDgxLCA2MiwgNDQsIAorICAgIDI5LCAyMTUsIDIyOCwgNjIsIDQ0LCAyOSwgMjM0LCA2NywgNjIsIDQ0LCAyMjYsIDU5LCAxNzEsIDI0NywgMjcsIDQ0LCAKKyAgICAyMjYsIDU5LCAxNzEsIDIyNywgMTQzLCA0NCwgMjksIDIyOCwgMTc1LCA2NiwgMjI2LCA1OSwgMjA4LCAxMTIsIDk5LCA0NCwgCisgICAgMTk4LCAxOTgsIDEwMiwgNDQsIDE5OCwgMTk4LCAxMDUsIDQ0LCAxOTgsIDE5OCwgMTQ3LCA0NCwgMTk4LCAxOTgsIDE0OSwgCisgICAgNDQsIDE5OCwgMTk4LCAxNjQsIDQ0LCAxOTgsIDE5OCwgMTg3LCA0NCwgMTk4LCAxOTgsIDIxMCwgMTM1LCA0NCwgMTk4LCAKKyAgICAxOTgsIDE5MiwgNDQsIDE5OCwgMTk4LCAyMTksIDExMywgNDQsIDE5OCwgMTk4LCAyMDYsIDE2NiwgNDQsIDE5OCwgMTk4LCAKKyAgICAyMjEsIDgxLCA0NCwgMTk4LCAxOTgsIDIzNywgNzcsIDQ0LCAxOTgsIDE5OCwgMjAxLCA4MiwgNDQsIDE5OCwgMTk4LCAyMDAsIAorICAgIDI0MywgNDQsIDE5OCwgMTk4LCAyMjIsIDIwLCA0NCwgMTk4LCAxOTgsIDIzOSwgMTcsIDQ0LCAxOTgsIDE5OCwgMjA3LCAKKyAgICAyMjgsIDQ0LCAxOTgsIDE5OCwgMjA4LCA3OSwgNDQsIDE5OCwgMTk4LCAyMzQsIDE0OCwgNDQsIDE5OCwgMTk4LCAyMDksIAorICAgIDI1LCA0NCwgMTk4LCAxOTgsIDIyMCwgMTM1LCA0NCwgMTk4LCAxOTgsIDIwOCwgMjI5LCA0NCwgMTk4LCAxOTgsIDIzNywgCisgICAgODgsIDQ0LCAxOTgsIDE5OCwgMjQzLCA2MSwgNDQsIDE5OCwgMTk4LCAyMjUsIDE2NSwgNDQsIDE5OCwgMTk4LCAyMTEsIAorICAgIDE5NCwgNDQsIDE5OCwgMTk4LCAyMjIsIDE4NCwgNDQsIDE5OCwgMTk4LCAyMzcsIDEyOSwgNDQsIDE5OCwgMTk4LCAyMDcsIAorICAgIDI0MCwgNDQsIDE5OCwgMTk4LCAyMzgsIDQ3LCA0NCwgMTk4LCAxOTgsIDIxNSwgMTAsIDQ0LCAxOTgsIDE5OCwgMjUwLCAKKyAgICAxNDMsIDQ0LCAxOTgsIDE5OCwgMjI4LCAxMSwgNDQsIDE5OCwgMTk4LCAyMTMsIDExNywgNDQsIDE5OCwgMTk4LCAyNDMsIAorICAgIDIwLCA0NCwgMTk4LCAxOTgsIDI0MywgMTAsIDQ0LCAxOTgsIDE5OCwgMjM0LCA1OSwgNDQsIDE5OCwgMTk4LCAyNDcsIDU1LCAKKyAgICA0NCwgMTk4LCAxOTgsIDIyNCwgNTksIDQ0LCAxOTgsIDE5OCwgMjI1LCAyOCwgNDQsIDE5OCwgMTk4LCAyMTMsIDQ2LCA0NCwgCisgICAgMTk4LCAxOTgsIDIyMiwgNjcsIDQ0LCAxOTgsIDE5OCwgMjEzLCAxNDQsIDQ0LCAxOTgsIDE5OCwgMjA4LCAyOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyMDcsIDIxMCwgNDQsIDE5OCwgMTk4LCAyMzgsIDE1MiwgNDQsIDE5OCwgMTk4LCAyMTMsIDExOSwgNDQsIAorICAgIDE5OCwgMTk4LCAyNTEsIDEyMCwgNDQsIDE5OCwgMTk4LCAyMTksIDEyOSwgNDQsIDQxLCAyMDYsIDY4LCAxODcsIDQ0LCA0MSwgCisgICAgMjA2LCA2OCwgMjEwLCAxMzUsIDQ0LCA0MSwgMjA2LCA2OCwgMTkyLCA0NCwgNDEsIDIwNiwgNjgsIDIxOSwgMTEzLCA0NCwgCisgICAgNDEsIDIzNiwgMjM1LCA0NCwgNDEsIDIzNiwgMjM2LCAxMDIsIDQ0LCA0MSwgMjM2LCAyMzYsIDEwNSwgNDQsIDQxLCAyMzYsIAorICAgIDIzNiwgMTQ3LCA0NCwgNDEsIDIzNiwgMjM2LCAxNDksIDQ0LCA0MSwgMjM2LCAyMzYsIDE2NCwgNDQsIDQxLCAyMzYsIDIzNiwgCisgICAgMTg3LCA0NCwgNDEsIDIzNiwgMjM2LCAyMTAsIDEzNSwgNDQsIDQxLCAyMzYsIDIzNiwgMTkyLCA0NCwgNDEsIDIzNiwgMjM2LCAKKyAgICAyMTksIDExMywgNDQsIDQxLCAyMzcsIDEwNCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjcsIDIzOCwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyMzcsIDE0MSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMjIsIDE1MiwgMTQxLCAyMDYsIDE3OCwgCisgICAgMTYsIDM2LCAyNTEsIDMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjIyLCAxMTksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjI3LCAxNDAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjI3LCAxNDEsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjUwLCAKKyAgICAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjEwLCAxNTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE3LCAxMjcsIAorICAgIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjE4LCAyMDIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAxNzAsIDUyLCAKKyAgICAyMzQsIDg1LCA1MiwgMjM4LCAxMTEsIDUyLCAyMzgsIDU3LCAyMjQsIDE4MiwgMjI0LCAyMDksIDU0LCA0NCwgNjksIDYyLCAKKyAgICA0NCwgNjksIDcwLCA0NCwgNjksIDY2LCA0NCwgNjksIDcyLCA0NCwgNjksIDc0LCA0NCwgNjksIDE2MSwgNDQsIDY5LCAyMjYsIAorICAgIDE2MywgNDQsIDY5LCAyMjYsIDE1LCA0NCwgNjksIDIyNywgOCwgNDQsIDY5LCAyMjYsIDg4LCA0NCwgNjksIDIxMiwgNjQsIAorICAgIDQ0LCA2OSwgMjA5LCAxODIsIDQ0LCA2OSwgMjA4LCAyNCwgNDQsIDY5LCAyMTEsIDIwMiwgNDQsIDY5LCAyMDksIDI5LCA0NCwgCisgICAgNjksIDIwNywgMzYsIDQ0LCA2OSwgMjA2LCAxNSwgNDQsIDY5LCAyMDQsIDIxNSwgNDQsIDY5LCAyMDYsIDIwMSwgNDQsIDY5LCAKKyAgICAxMzgsIDQ0LCA2OSwgMTg4LCA0NCwgNjksIDIxOSwgMTUwLCA0NCwgNjksIDIxOCwgMTMzLCA0NCwgNjksIDIyMCwgMzQsIAorICAgIDQ0LCA2OSwgMjE4LCAyNDEsIDQ0LCA2OSwgMTQ0LCA0NCwgNjksIDIzNCwgNzUsIDQ0LCA2OSwgMjMzLCA5NywgNDQsIDY5LCAKKyAgICAyMzQsIDEzOSwgNDQsIDY5LCAyMzMsIDIwNywgNDQsIDY5LCAxNzgsIDQ0LCA2OSwgMjIxLCAyMTEsIDQ0LCA2OSwgMjIxLCAKKyAgICA0MSwgNDQsIDY5LCAyMjIsIDc2LCA0NCwgNjksIDIyMSwgMTM2LCA0NCwgNjksIDE4MywgNDQsIDY5LCAxOTksIDIxMSwgNDQsIAorICAgIDY5LCAxOTksIDI0NSwgNDQsIDY5LCAyMTMsIDI1MiwgNDQsIDY5LCAyMTMsIDg4LCA0NCwgNjksIDIxMiwgMTc1LCA0NCwgCisgICAgNjksIDIxMywgMTkwLCA0NCwgNjksIDIxMywgMSwgNDQsIDY5LCAyMDEsIDExNCwgNDQsIDY5LCAyMDEsIDMxLCA0NCwgNjksIAorICAgIDIwMSwgNjQsIDQ0LCA2OSwgMjAxLCAwLCA1MiwgMjUxLCAyNywgNTIsIDI1MCwgMTkwLCA1MiwgMjUxLCA1NCwgNTIsIDI1MiwgCisgICAgOTYsIDUyLCAyMjgsIDg1LCA1MiwgMjI4LCA1MywgNTIsIDIwMywgMjMxLCA1MiwgMjM4LCA4NCwgNTIsIDIzOCwgMjUyLCAKKyAgICA1MiwgMjE3LCA2NiwgNTIsIDIxNywgNTksIDUyLCAyMjcsIDgwLCA1MiwgMjI3LCA0NSwgNTIsIDIyNywgNDIsIDUyLCAyMzYsIAorICAgIDQ1LCA1MiwgMjM2LCA1NCwgNTIsIDIzNSwgMTUwLCA1MiwgMjM1LCAxNDYsIDUyLCAyMjUsIDE5NCwgNTIsIDIzNSwgMTM4LCAKKyAgICA1MiwgMjI2LCAxMzgsIDUyLCAyMjYsIDEzNywgNTIsIDIyNiwgMTM2LCA1MiwgMjI2LCAxMzUsIDUyLCAyMzUsIDIwLCA1MiwgCisgICAgMjM1LCAxOSwgNTIsIDIyNSwgMjQyLCA1MiwgMjI1LCAyNDQsIDUyLCAyMjcsIDEsIDUyLCAyMjYsIDU3LCA1MiwgMjI2LCAKKyAgICA2NSwgNTIsIDIxMiwgNDUsIDUyLCAyMTIsIDYsIDUyLCAyMDksIDExMCwgNTIsIDIxMCwgMTU4LCA1MiwgMjEwLCAxNTcsIAorICAgIDUyLCAyNDIsIDU0LCA1MiwgMjQxLCAxMTMsIDUyLCAyNDAsIDE4MywgNTIsIDIwNSwgMTc2LCA1MiwgMjIwLCAxMzAsIDUyLCAKKyAgICAyMTgsIDIwMywgNTIsIDIzNCwgMjE4LCA1MiwgMjE2LCAyMDUsIDUyLCAyMTYsIDIwNCwgNTIsIDI0OSwgMTMzLCA1MiwgCisgICAgMjE1LCAyMDEsIDUyLCAyMTUsIDE2NCwgNTIsIDIxNSwgMTY1LCA1MiwgMjQ4LCAxNTgsIDUyLCAyMzMsIDk1LCA1MiwgMjMzLCAKKyAgICA5MCwgNTIsIDI0NywgMjUwLCA1MiwgMjMzLCA3NCwgNTIsIDIzNCwgMTExLCA1MiwgMjE2LCAxLCA1MiwgMjE2LCA0MiwgNTIsIAorICAgIDIzNCwgOTQsIDUyLCAyMTYsIDM4LCA1MiwgMjE2LCA1NiwgNTIsIDI0OCwgMjQ3LCA1MiwgMjE1LCA5NSwgNTIsIDI0OCwgCisgICAgOTgsIDUyLCAyMzMsIDE5MSwgNTIsIDIxNSwgODIsIDUyLCAyMzMsIDE4MiwgNTIsIDIzMywgMTg0LCA1MiwgMjIyLCAxOTYsIAorICAgIDUyLCAyMjIsIDE5MiwgNTIsIDIyMiwgMjAxLCA1MiwgMjIyLCAxMzksIDUyLCAyMjIsIDE2OCwgNTIsIDIyMSwgMTc2LCA1MiwgCisgICAgMjIxLCAxNTEsIDUyLCAyMjEsIDE1MCwgNTIsIDIyMiwgNTYsIDUyLCAyMjIsIDUzLCA1MiwgMjIyLCA1NywgNTIsIDIwMCwgCisgICAgMTA4LCA1MiwgMjAwLCAxMDYsIDUyLCAxOTksIDIwMCwgNTIsIDIxMywgMTcsIDUyLCAyMTMsIDIxLCA1MiwgMjEyLCAxNDgsIAorICAgIDUyLCAyMTIsIDE0MiwgNTIsIDIxMywgMTQxLCA1MiwgMjEzLCAxMzgsIDUyLCAyMDEsIDgwLCAxNDEsIDIwNiwgMTc4LCAxNiwgCisgICAgMzYsIDIzMywgMTE0LCAxOTksIDgxLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxMDIsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDEwNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTQ3LCAxNDEsIAorICAgIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAxNDksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDE2NCwgCisgICAgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTg3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAKKyAgICAyMTAsIDEzNSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMTkyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCAxNjYsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMTk5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE2NCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA2LCA2OSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyMzMsIDExNCwgMjM2LCAyMjMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzNywgMTA4LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDksIDEwMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjEwLCAKKyAgICAxMzIsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIzOCwgMjI5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDIzMywgMTE0LCAyMTksIDExMCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTksIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjMzLCAxMTQsIDIwNCwgMTUzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDIzMywgMTE0LCAyMDQsIAorICAgIDE0OCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyMzMsIDExNCwgMjA0LCAxNTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjMzLCAxMTQsIDIwNCwgMTU1LCA1MiwgMjMzLCAxMDUsIDUyLCAyNDIsIDU4LCA1MiwgMjUwLCAxMzksIDUyLCAxNDgsIDUyLCAKKyAgICAyMTYsIDI0OSwgNTIsIDIxNiwgNzgsIDUyLCAyNDAsIDIxMywgNTIsIDI0MCwgMjE0LCAyMDgsIDE5MiwgNTIsIDI0MCwgCisgICAgMjE0LCAyNDIsIDIwOSwgNTIsIDIyOCwgOCwgNTIsIDIzOCwgMTE0LCAyMjAsIDEzNiwgMjM0LCAxMTIsIDUyLCAyMzgsIAorICAgIDExNCwgMjIwLCAxMzYsIDIwNywgMTA2LCA1MiwgMjM4LCAxMTQsIDIyMCwgMTM2LCAyMDcsIDMsIDUyLCAyMzgsIDExNCwgCisgICAgMjIwLCAxMzYsIDIyMiwgNTIsIDUyLCAyNDMsIDEyLCA1MiwgMjE2LCAyMTEsIDI1MSwgODcsIDUyLCAxODgsIDUyLCAyMjEsIAorICAgIDQyLCA2MiwgNTIsIDE3OCwgNTIsIDE2MSwgNTIsIDIyNywgMTEsIDUyLCAyMjIsIDExNSwgNTIsIDIzNiwgMzMsIDUyLCAKKyAgICAyNDcsIDE3NCwgNTIsIDIyNywgMTAsIDUyLCAyMTUsIDI0OCwgNTIsIDIyMCwgMSwgNTIsIDIyMSwgNDIsIDIzOCwgNSwgNTIsIAorICAgIDIyMSwgNDIsIDIzNiwgMTU2LCA1MiwgMjIxLCAyNTIsIDUyLCAyMjYsIDIwOSwgNTIsIDIzMywgMjgsIDUyLCAyMjYsIDE2NSwgCisgICAgNTIsIDIyMSwgMjEzLCA1MiwgMjM1LCAxNjMsIDUyLCAyMDYsIDE3LCA1MiwgMjIxLCA0MiwgMTU2LCA1MiwgMjIxLCAxNDQsIAorICAgIDUyLCAyNDAsIDIyMywgNTIsIDIyNiwgMTAzLCA1MiwgMjM3LCAxNSwgNTIsIDIxOSwgMjMsIDUyLCAyMjEsIDQyLCAyMjMsIAorICAgIDI0MywgNTIsIDIyMSwgMTQxLCA1MiwgMjQ2LCA5MiwgNTIsIDIyNiwgOTcsIDUyLCAyMjEsIDE0MiwgMjA4LCAxOTIsIDUyLCAKKyAgICAyNDYsIDkzLCAyMDgsIDE5MiwgNTIsIDIyMywgMjQ0LCAyMDgsIDE5MiwgNTIsIDIyNiwgOTgsIDIwOCwgMTkyLCA1MiwgCisgICAgMjIxLCAxNDIsIDI0MiwgMjA5LCA1MiwgMjQ2LCA5MywgMjQyLCAyMDksIDUyLCAyMjMsIDI0NCwgMjQyLCAyMDksIDUyLCAKKyAgICAyMjYsIDk4LCAyNDIsIDIwOSwgNTIsIDIyMywgMjQ0LCAxMTksIDIxMiwgMTIyLCA1MiwgMjIzLCAyNDQsIDExOSwgMjEyLCAKKyAgICAxMjMsIDIwOCwgMTkyLCA1MiwgMTcyLCA1MiwgMjI2LCA1MCwgNTIsIDIyMSwgNDUsIDUyLCAyMzUsIDkxLCA1MiwgMjEzLCAKKyAgICAyMzksIDUyLCAyMTMsIDI0MCwgMTE5LCAyMTIsIDEyMiwgNTIsIDIxMywgMjQwLCAxMTksIDIxMiwgMTIzLCAyMDgsIDE5MiwgCisgICAgNTIsIDIxNCwgMjM3LCA1MiwgMjE4LCAxNzEsIDUyLCAyMjEsIDQyLCAyMTIsIDEyMiwgNTIsIDIyMSwgNDMsIDUyLCAyMTQsIAorICAgIDE4NywgNTIsIDIxOCwgNzEsIDUyLCAyMjEsIDQyLCAyMDMsIDE2OCwgNTIsIDIyMCwgMjM4LCA1MiwgMjI1LCAyMzIsIDUyLCAKKyAgICAyMjAsIDIzOSwgMjIyLCA1NiwgNTIsIDIxNCwgMTg2LCA1MiwgMjE4LCA3MCwgNTIsIDIyMSwgNDIsIDIwMSwgMTQ3LCA1MiwgCisgICAgMjIwLCAyMzIsIDUyLCAyMjUsIDIzMCwgNTIsIDIyMCwgMjMzLCAyMjIsIDU2LCA1MiwgMjI3LCAxMTksIDIxNywgMTA2LCAKKyAgICA1MiwgMjIzLCAyNDQsIDIxNywgMTA2LCA1MiwgMjUxLCAxMDEsIDUyLCAyNDgsIDczLCA1MiwgMjQ3LCAxMDAsIDUyLCAyNDcsIAorICAgIDc3LCA1MiwgMjQ3LCAyMjQsIDExOSwgMjI2LCAyMDksIDUyLCAyNDYsIDkxLCA1MiwgMjQxLCAyMjksIDUyLCAyMzUsIDQsIAorICAgIDUyLCAxNDQsIDUyLCAyMzMsIDEwNiwgNTIsIDIyOCwgMTE3LCA1MiwgMjI2LCAxMTAsIDUyLCAyMjYsIDk4LCAyNDcsIDE0MywgCisgICAgNTIsIDIyNiwgMTcsIDUyLCAyMjQsIDExMywgNTIsIDIyNCwgMTEyLCA1MiwgMjI0LCA5OSwgNTIsIDIyNCwgMywgNTIsIAorICAgIDIyMiwgMTE2LCAyMDksIDUzLCA1MiwgMjIxLCAxNzUsIDUyLCAyMjEsIDEwOCwgNTIsIDIxNSwgMjQ2LCA1MiwgMjE1LCAKKyAgICAxMDksIDUyLCAyMTUsIDQ2LCA1MiwgMjE1LCA0NCwgNTIsIDIwOCwgMTgzLCA1MiwgMjA3LCAxOTEsIDUyLCAyMDEsIDY2LCAKKyAgICA1MiwgMjAzLCAxNjksIDExOSwgMjIzLCAyNDMsIDUyLCAzNSwgMTE5LCAyMjMsIDI0MywgMTQxLCAyMDYsIDE3OCwgMTYsIAorICAgIDM2LCAyNDEsIDIzMywgMTAyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxMDUsIDE0MSwgMjA2LCAxNzgsIAorICAgIDE2LCAzNiwgMjQxLCAyMzMsIDE0NywgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMTQ5LCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDE4NywgMTQxLCAKKyAgICAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjEwLCAxMzUsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIAorICAgIDE5MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTMsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNiwgMTY2LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIDE5OSwgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNjQsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNiwgCisgICAgNjksIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIzNiwgMjIzLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMzcsIDEwOCwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA5LCAxMDAsIDE0MSwgMjA2LCAKKyAgICAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIxMCwgMTMyLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMzgsIAorICAgIDIyOSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjE5LCAxMTAsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgCisgICAgMjQxLCAyMzMsIDIwNCwgMTU5LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MywgMTQxLCAyMDYsIAorICAgIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAxNDgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgCisgICAgMTUwLCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1NSwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAKKyAgICAyNDEsIDIzMywgMjA0LCAxNTYsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTUxLCAxNDEsIDIwNiwgCisgICAgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDQsIDE1MiwgMTQxLCAyMDYsIDE3OCwgMTYsIDM2LCAyNDEsIDIzMywgMjA0LCAKKyAgICAxNTgsIDE0MSwgMjA2LCAxNzgsIDE2LCAzNiwgMjQxLCAyMzMsIDIwNCwgMTU0LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIAorICAgIDI0MSwgMjMzLCAyMDYsIDY3LCAxNDEsIDIwNiwgMTc4LCAxNiwgMzYsIDI0MSwgMjMzLCAyMDYsIDY2LCA1MiwgMjM2LCA3MSwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNDIsIDI0NywgMjM0LCAxMjMsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjEzLCAKKyAgICAxODMsIDIzOSwgMTcsIDIzNCwgODgsIDM2LCAyNDEsIDQ2LCAyNTAsIDE1NiwgMjA2LCAxMDcsIDI0OCwgMjQyLCAyMzQsIAorICAgIDg4LCAzNiwgMTk5LCAyMjQsIDIzNywgNywgMjM0LCA4OCwgMzYsIDIwMSwgMTA2LCAyMzQsIDg4LCAzNiwgMjQzLCA2NCwgCisgICAgMjM0LCA4OCwgMzYsIDIwNiwgMTA3LCAyNTAsIDIxMywgMjM0LCA4OCwgMzYsIDIzMywgMTk4LCAyMDUsIDE4MiwgMjM0LCAKKyAgICA4OCwgMzYsIDQsIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjA1LCAxMTAsIDIzNCwgODgsIDM2LCAyMTYsIDcxLCAyMzQsIAorICAgIDg4LCAzNiwgMjA4LCAxMTEsIDIzNCwgODgsIDM2LCAyMzcsIDEzMSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIxNSwgNjgsIAorICAgIDIzNCwgODgsIDM2LCAyMjEsIDEyOCwgMjM0LCA4OCwgMzYsIDIzOCwgMTUxLCAyMzQsIDg4LCAzNiwgMjM3LCA4LCAyMzQsIAorICAgIDg4LCAzNiwgMjAwLCAyMzYsIDIxNywgNzksIDIwNiwgMTA3LCAyNDEsIDE3MSwgMjM0LCA4OCwgMzYsIDI1MSwgNywgMjM0LCAKKyAgICA4OCwgMzYsIDI0MywgNDMsIDIzNCwgODgsIDM2LCAyNDgsIDE1MCwgMjA2LCAzNywgMjM0LCA4OCwgMzYsIDIzNSwgODksIAorICAgIDIzNCwgODgsIDM2LCAyMDgsIDIwOCwgMjUxLCAyNiwgMjM0LCA4OCwgMzYsIDIxMywgMTA5LCAyMzQsIDg4LCAzNiwgMjI4LCAKKyAgICA3OSwgMjM0LCA4OCwgMzYsIDIzNSwgNjksIDIwNiwgMjQ1LCAyMzQsIDg4LCAzNiwgMjIxLCA1OSwgMjQzLCAxNCwgMjM0LCAKKyAgICA4OCwgMzYsIDIzNSwgNjksIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUyLCAwLCAyMDEsIDgyLCAyMzQsIAorICAgIDg4LCAzNiwgMjA2LCAxMDcsIDI0NiwgMTE4LCAyMzcsIDc3LCAyMzQsIDg4LCAzNiwgMjI4LCA5MywgMjM0LCA4OCwgMzYsIAorICAgIDIzOSwgMTE0LCAyMzQsIDg4LCAzNiwgMjEzLCAxMTIsIDIzNCwgODgsIDM2LCAyMzUsIDY5LCAyMTUsIDUxLCAyMzQsIDg4LCAKKyAgICAzNiwgMjE0LCAyNTQsIDIzNCwgODgsIDM2LCAyNDEsIDI0OSwgNzYsIDIwNiwgMTA3LCAyMjQsIDE5NiwgMjM0LCA4OCwgMzYsIAorICAgIDIwNiwgMTA3LCAyMzcsIDE2OSwgMjM0LCA4OCwgMzYsIDIxNywgMzksIDIzNCwgODgsIDM2LCAyMTcsIDEzNCwgMjM0LCA4OCwgCisgICAgMzYsIDI0MSwgMTQxLCAyMzQsIDg4LCAzNiwgMjQxLCAxNjMsIDIzNCwgODgsIDM2LCAyMjgsIDEwOCwgMjM0LCA4OCwgMzYsIAorICAgIDI0OCwgNjAsIDIzNCwgODgsIDM2LCAyNDYsIDcyLCAyMDUsIDE4NiwgMjIyLCA1OSwgMjM0LCA4OCwgMzYsIDIzNiwgNDAsIAorICAgIDIwNSwgMTgyLCAyMzQsIDg4LCAzNiwgMjE0LCAxOTYsIDIwMywgMjE3LCAyMzQsIDg4LCAzNiwgMjE3LCAzOCwgMjM0LCA4OCwgCisgICAgMzYsIDIwNiwgMTA3LCAyMDEsIDUyLCAyMzQsIDg4LCAzNiwgMjEzLCAxMDAsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjQ3LCAKKyAgICAxMDYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjUwLCAyMDksIDIwNiwgMzEsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjI3LCAyLCAyMDgsIDgzLCAyMjEsIDYzLCAyMzQsIDg4LCAzNiwgMjQxLCAxMDgsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgCisgICAgMjIyLCAxNDIsIDIyMiwgMTk3LCAyMzQsIDg4LCAzNiwgMjUyLCAxLCAyMzQsIDg4LCAzNiwgMjA2LCAxMDcsIDIwMSwgOTksIAorICAgIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjM1LCAyNTMsIDIwMSwgMTYsIDIzNCwgODgsIDM2LCAyMDYsIDEwNywgMjI3LCAKKyAgICAxNDksIDIyNSwgOTYsIDIzNCwgODgsIDM2LCAyNDAsIDI1MiwgMjM0LCA4OCwgMzYsIDIyNCwgMTgzLCAyMzQsIDg4LCAzNiwgCisgICAgMjI4LCA4MiwgMjA1LCAzNiwgMjM0LCA4OCwgMzYsIDQsIDIxNSwgMjIsIDIzNCwgODgsIDM2LCAyNTEsIDE5NCwgMjQ2LCAKKyAgICA2MywgMjM0LCA4OCwgMzYsIDI0OCwgMjQ1LCAyNDYsIDYzLCAxMSwgNSwgMjI4LCAxMiwgMTEsIDUsIDIyOCwgNCwgMTEsIDUsIAorICAgIDcwLCAxMSwgNSwgMjI4LCAzOCwgMTEsIDUsIDIyOCwgMTc2LCAxMSwgNSwgMjI4LCAxNTksIDExLCA1LCAyMjgsIDE3OCwgCisgICAgMTEsIDUsIDIyOCwgMTc3LCAxMSwgNSwgMjUwLCAxNTUsIDExLCA1LCAyNTAsIDExNCwgMTEsIDUsIDYyLCAxMSwgNSwgMjUxLCAKKyAgICAyOCwgMTEsIDUsIDIwMywgMjI5LCAxMSwgNSwgMjAzLCAyMzIsIDExLCA1LCAyMDMsIDIzMCwgMTEsIDUsIDIxNywgMTEsIAorICAgIDExLCA1LCAyMTYsIDIzNSwgMTEsIDUsIDc0LCAxMSwgNSwgMjE3LCA1NCwgMTEsIDUsIDIzOCwgNDgsIDExLCA1LCA3MiwgCisgICAgMTEsIDUsIDIwMCwgMjE2LCAxMSwgNSwgMjQ4LCAxNTIsIDExLCA1LCAyNDgsIDE0OCwgMTEsIDUsIDI0OCwgMTg4LCAxMSwgCisgICAgNSwgMjQ4LCAxNjMsIDExLCA1LCAyNDgsIDE3NywgMTEsIDUsIDI0OCwgMTc2LCAxMSwgNSwgMjQ4LCAxNzksIDExLCA1LCAKKyAgICAyNDgsIDE3OCwgMTEsIDUsIDI0OSwgNTUsIDExLCA1LCAyNDksIDQ3LCAxMSwgNSwgMjQ5LCAxMzYsIDExLCA1LCAyNDksIAorICAgIDc4LCAxMSwgNSwgMjQ4LCA2LCAxMSwgNSwgMjQ4LCAxMCwgMTEsIDUsIDI0OCwgNywgMTEsIDUsIDI0OCwgOTcsIDExLCA1LCAKKyAgICAyNDgsIDc4LCAxMSwgNSwgMjQ4LCAxMjQsIDExLCA1LCAyNDgsIDEwMywgMTEsIDUsIDI0OCwgMjAzLCAxMSwgNSwgMjQ5LCAKKyAgICA4LCAxMSwgNSwgMjQ4LCAyMTUsIDExLCA1LCAyNDcsIDI0NiwgMTEsIDUsIDI0NywgMjQxLCAxMSwgNSwgMjQ4LCAzNiwgMTEsIAorICAgIDUsIDI0OCwgNSwgMTEsIDUsIDI0NywgMjU0LCAxMSwgNSwgMjQ4LCAzLCAxMSwgNSwgMjQ3LCAyMjksIDExLCA1LCAyNDcsIAorICAgIDIyNywgMTEsIDUsIDI0NywgMjM0LCAxMSwgNSwgMjQ3LCAyMzIsIDExLCA1LCAyNDcsIDIzMCwgMTEsIDUsIDI0NywgMjMxLCAKKyAgICAxMSwgNSwgMjE1LCAxNDIsIDExLCA1LCAyMTUsIDEzOCwgMTEsIDUsIDIxNSwgMjA0LCAxMSwgNSwgMjE1LCAxNTQsIDExLCAKKyAgICA1LCAyMTUsIDE3MCwgMTEsIDUsIDIxNSwgMTk3LCAxMSwgNSwgMjE1LCAxOTMsIDExLCA1LCAyMTYsIDk0LCAxMSwgNSwgCisgICAgMjE2LCA4MywgMTEsIDUsIDE3MiwgMTEsIDUsIDIxNiwgMTM1LCAxMSwgNSwgMjE0LCAyMDYsIDExLCA1LCAyMTQsIDIwOCwgCisgICAgMTEsIDUsIDIxNCwgMjA3LCAxMSwgNSwgMjE1LCA2MSwgMTEsIDUsIDIxNSwgNDksIDExLCA1LCAyMTUsIDEwNiwgMTEsIDUsIAorICAgIDIxNSwgNzcsIDExLCA1LCAyMTQsIDE5MiwgMTEsIDUsIDIxNCwgMTg4LCAxMSwgNSwgMjE0LCAyMjQsIDExLCA1LCAyMTQsIAorICAgIDIwNSwgMTEsIDUsIDIxNCwgMTk3LCAxMSwgNSwgMjE0LCAyMDMsIDExLCA1LCAyMTQsIDE3MSwgMTEsIDUsIDIxNCwgMTcwLCAKKyAgICAxMSwgNSwgMjE0LCAxNzUsIDExLCA1LCAyMTQsIDE3NCwgMTEsIDUsIDIxNCwgMTcyLCAxMSwgNSwgMjE0LCAxNzMsIDExLCAKKyAgICA1LCAyNDksIDI5LCAxMSwgNSwgMjQ5LCAyOCwgMTEsIDUsIDI0OSwgMzUsIDExLCA1LCAyNDksIDMwLCAxMSwgNSwgMjQ5LCAKKyAgICAzMiwgMTEsIDUsIDI0OSwgMzEsIDExLCA1LCAyNDksIDM0LCAxMSwgNSwgMjQ5LCAzMywgMTEsIDUsIDI0OSwgNDEsIDExLCAKKyAgICA1LCAyNDksIDQwLCAxMSwgNSwgMjQ5LCA0NCwgMTEsIDUsIDI0OSwgNDIsIDExLCA1LCAyNDksIDIwLCAxMSwgNSwgMjQ5LCAKKyAgICAyMiwgMTEsIDUsIDI0OSwgMjEsIDExLCA1LCAyNDksIDI1LCAxMSwgNSwgMjQ5LCAyNCwgMTEsIDUsIDI0OSwgMjcsIDExLCAKKyAgICA1LCAyNDksIDI2LCAxMSwgNSwgMjQ5LCAzNiwgMTEsIDUsIDI0OSwgMzksIDExLCA1LCAyNDksIDM3LCAxMSwgNSwgMjQ5LCAKKyAgICAxNiwgMTEsIDUsIDI0OSwgMTUsIDExLCA1LCAyNDksIDIzLCAxMSwgNSwgMjQ5LCAxOSwgMTEsIDUsIDI0OSwgMTcsIDExLCAKKyAgICA1LCAyNDksIDE4LCAxMSwgNSwgMjQ5LCAxMiwgMTEsIDUsIDI0OSwgMTEsIDExLCA1LCAyNDksIDE0LCAxMSwgNSwgMjQ5LCAKKyAgICAxMywgMTEsIDUsIDIyMCwgOTcsIDExLCA1LCAyMjAsIDk2LCAxMSwgNSwgMjIwLCAxMDIsIDExLCA1LCAyMjAsIDk4LCAxMSwgCisgICAgNSwgMjIwLCA5OSwgMTEsIDUsIDIyMCwgMTAxLCAxMSwgNSwgMjIwLCAxMDAsIDExLCA1LCAyMjAsIDEwNSwgMTEsIDUsIAorICAgIDIyMCwgMTA0LCAxMSwgNSwgMjIwLCAxMDcsIDExLCA1LCAyMjAsIDEwNiwgMTEsIDUsIDIyMCwgOTMsIDExLCA1LCAyMjAsIAorICAgIDkyLCAxMSwgNSwgMjIwLCA5NSwgMTEsIDUsIDIyMCwgOTQsIDExLCA1LCAyMjAsIDg2LCAxMSwgNSwgMjIwLCA4NSwgMTEsIAorICAgIDUsIDIyMCwgOTAsIDExLCA1LCAyMjAsIDg5LCAxMSwgNSwgMjIwLCA4NywgMTEsIDUsIDIyMCwgODgsIDExLCA1LCAyMjAsIAorICAgIDgwLCAxMSwgNSwgMjIwLCA3OSwgMTEsIDUsIDIyMCwgODQsIDExLCA1LCAyMjAsIDgzLCAxMSwgNSwgMjIwLCA4MSwgMTEsIAorICAgIDUsIDIyMCwgODIsIDExLCA1LCAyMzMsIDI1MSwgMTEsIDUsIDIzMywgMjUwLCAxMSwgNSwgMjM0LCAwLCAxMSwgNSwgMjMzLCAKKyAgICAyNTIsIDExLCA1LCAyMzMsIDI1MywgMTEsIDUsIDIzMywgMjU1LCAxMSwgNSwgMjMzLCAyNTQsIDExLCA1LCAyMzQsIDMsIAorICAgIDExLCA1LCAyMzQsIDIsIDExLCA1LCAyMzQsIDUsIDExLCA1LCAyMzQsIDQsIDExLCA1LCAyMzMsIDI0MiwgMTEsIDUsIDIzMywgCisgICAgMjQ0LCAxMSwgNSwgMjMzLCAyNDMsIDExLCA1LCAyMzMsIDI0NywgMTEsIDUsIDIzMywgMjQ2LCAxMSwgNSwgMjMzLCAyNDksIAorICAgIDExLCA1LCAyMzMsIDI0OCwgMTEsIDUsIDIzMywgMjM4LCAxMSwgNSwgMjMzLCAyMzcsIDExLCA1LCAyMzMsIDI0NSwgMTEsIAorICAgIDUsIDIzMywgMjQxLCAxMSwgNSwgMjMzLCAyMzksIDExLCA1LCAyMzMsIDI0MCwgMTEsIDUsIDIzMywgMjMyLCAxMSwgNSwgCisgICAgMjMzLCAyMzYsIDExLCA1LCAyMzMsIDIzNSwgMTEsIDUsIDIzMywgMjMzLCAxMSwgNSwgMjMzLCAyMzQsIDExLCA1LCAyMjEsIAorICAgIDE0NywgMTEsIDUsIDIyMSwgMTQ2LCAxMSwgNSwgMjIxLCAyMTEsIDExLCA1LCAyMjEsIDE1MywgMTEsIDUsIDIyMSwgMTgzLCAKKyAgICAxMSwgNSwgMjIxLCAyMDEsIDExLCA1LCAyMjEsIDE5OSwgMTEsIDUsIDIyMiwgMTI3LCAxMSwgNSwgMjIyLCAxMjIsIDExLCAKKyAgICA1LCAxNzgsIDExLCA1LCAyMjIsIDE2NCwgMTEsIDUsIDIyMSwgOCwgMTEsIDUsIDIyMSwgNywgMTEsIDUsIDIyMSwgMTEsIAorICAgIDExLCA1LCAyMjEsIDksIDExLCA1LCAyMjEsIDczLCAxMSwgNSwgMjIxLCA0NywgMTEsIDUsIDIyMSwgMTM2LCAxMSwgNSwgCisgICAgMjIxLCA3OSwgMTEsIDUsIDIyMiwgNywgMTEsIDUsIDIyMiwgNzYsIDExLCA1LCAyMjAsIDI0NCwgMTEsIDUsIDIyMCwgMjQwLCAKKyAgICAxMSwgNSwgMjIxLCA0MSwgMTEsIDUsIDIyMSwgNCwgMTEsIDUsIDIyMCwgMjUzLCAxMSwgNSwgMjIxLCAyLCAxMSwgNSwgCisgICAgMjIwLCAyMTcsIDExLCA1LCAyMjAsIDIxNiwgMTEsIDUsIDIyMCwgMjIyLCAxMSwgNSwgMjIwLCAyMTksIDExLCA1LCAyMzcsIAorICAgIDY0LCAxMSwgNSwgMjM3LCA1OCwgMTEsIDUsIDIzNywgMTEyLCAxMSwgNSwgMjM3LCA3OSwgMTEsIDUsIDIzNywgMTYwLCAxMSwgCisgICAgNSwgMjM3LCAxNTEsIDExLCA1LCAyMzcsIDE5NSwgMTEsIDUsIDIzNywgMTY1LCAxMSwgNSwgMjM2LCAyMjAsIDExLCA1LCAKKyAgICAyMzcsIDEzLCAxMSwgNSwgMjM2LCAyNTAsIDExLCA1LCAyMzYsIDE3MiwgMTEsIDUsIDIzNiwgMTcxLCAxMSwgNSwgMjM2LCAKKyAgICAxODksIDExLCA1LCAyMzYsIDE3NywgMTEsIDUsIDIzNiwgMTc1LCAxMSwgNSwgMjM2LCAxNzYsIDExLCA1LCAyMzYsIDE1OSwgCisgICAgMTEsIDUsIDIzNiwgMTU4LCAxMSwgNSwgMjM2LCAxNjIsIDExLCA1LCAyMzYsIDE2MCwgMTEsIDUsIDIwMiwgMjAwLCAxMSwgCisgICAgNSwgMjAyLCAxOTUsIDExLCA1LCAyMDIsIDIzNCwgMTEsIDUsIDIwMiwgMjA5LCAxMSwgNSwgMjAyLCAyMjMsIDExLCA1LCAKKyAgICAyMDIsIDIyMCwgMTEsIDUsIDIwMiwgMjI2LCAxMSwgNSwgMjAyLCAyMjUsIDExLCA1LCAyMDMsIDY3LCAxMSwgNSwgMjAzLCAKKyAgICA2MiwgMTEsIDUsIDIwMywgOTAsIDExLCA1LCAyMDMsIDc5LCAxMSwgNSwgMjAyLCAxNzUsIDExLCA1LCAyMDIsIDE3MSwgMTEsIAorICAgIDUsIDIwMiwgMTkzLCAxMSwgNSwgMjAyLCAxNzcsIDExLCA1LCAyMDIsIDIzNywgMTEsIDUsIDIwMywgNDgsIDExLCA1LCAKKyAgICAyMDEsIDE2MCwgMTEsIDUsIDIwMSwgMTU4LCAxMSwgNSwgMjAxLCAxNjYsIDExLCA1LCAyMDEsIDE2MywgMTEsIDUsIDIwMSwgCisgICAgMTYxLCAxMSwgNSwgMjAxLCAxNjIsIDExLCA1LCAyMDEsIDE1MSwgMTEsIDUsIDIwMSwgMTUwLCAxMSwgNSwgMjAxLCAxNTUsIAorICAgIDExLCA1LCAyMDEsIDE1NCwgMTEsIDUsIDIwMSwgMTUyLCAxMSwgNSwgMjAxLCAxNTMsIDExLCA1LCAyNDAsIDI0NSwgMTEsIAorICAgIDUsIDI0MCwgMjMyLCAxMSwgNSwgMjQxLCA3NiwgMTEsIDUsIDI0MSwgMTYsIDExLCA1LCAyNDEsIDUxLCAxMSwgNSwgMjQxLCAKKyAgICA1NiwgMTEsIDUsIDI0MSwgNTUsIDExLCA1LCAyNDEsIDI0MCwgMTEsIDUsIDI0MSwgMjM0LCAxMSwgNSwgMjQyLCA1OCwgMTEsIAorICAgIDUsIDI0MiwgNCwgMTEsIDUsIDIzOSwgMTE5LCAxMSwgNSwgMjM5LCAxMjAsIDExLCA1LCAyNDAsIDE4MiwgMTEsIDUsIDIzOSwgCisgICAgMTY0LCAxMSwgNSwgMjQwLCAyMTEsIDExLCA1LCAyNDAsIDE4NCwgMTEsIDUsIDI0MSwgMTA2LCAxMSwgNSwgMjQxLCAxNzUsIAorICAgIDExLCA1LCAyNDEsIDEyNywgMTEsIDUsIDIzOSwgMTEwLCAxMSwgNSwgMjM5LCAxMDgsIDExLCA1LCAyMzksIDEzNywgMTEsIAorICAgIDUsIDIzOSwgMTE4LCAxMSwgNSwgMjM5LCAxMTMsIDExLCA1LCAyMzksIDExNiwgMTEsIDUsIDIwNSwgMjEzLCAxMSwgNSwgCisgICAgMjA1LCAyMDUsIDExLCA1LCAyMDYsIDE1LCAxMSwgNSwgMjA1LCAyMjMsIDExLCA1LCAyMDYsIDUsIDExLCA1LCAyMDYsIDcsIAorICAgIDExLCA1LCAyMDYsIDYsIDExLCA1LCAyMDYsIDIyNiwgMTEsIDUsIDIwNiwgMjEyLCAxMSwgNSwgMjA3LCAzNiwgMTEsIDUsIAorICAgIDIwNiwgMjM2LCAxMSwgNSwgMjA0LCAxOTYsIDExLCA1LCAyMDQsIDE5NSwgMTEsIDUsIDIwNCwgMTk4LCAxMSwgNSwgMjA0LCAKKyAgICAxOTcsIDExLCA1LCAyMDUsIDE0NCwgMTEsIDUsIDIwNSwgMTM0LCAxMSwgNSwgMTM4LCAxMSwgNSwgMjA1LCAxNTcsIDExLCAKKyAgICA1LCAyMDYsIDEyOCwgMTEsIDUsIDIwNiwgMjAxLCAxMSwgNSwgMjA2LCAxNTMsIDExLCA1LCAyMDQsIDE3OSwgMTEsIDUsIAorICAgIDIwNCwgMTc0LCAxMSwgNSwgMjA0LCAyMTUsIDExLCA1LCAyMDQsIDE5NCwgMTEsIDUsIDIwNCwgMTgwLCAxMSwgNSwgMjA0LCAKKyAgICAxOTIsIDExLCA1LCAyNDEsIDE5MiwgMTEsIDUsIDI0MSwgMTkxLCAxMSwgNSwgMjQxLCAxOTcsIDExLCA1LCAyNDEsIDE5MywgCisgICAgMTEsIDUsIDI0MSwgMTk0LCAxMSwgNSwgMjQxLCAxOTYsIDExLCA1LCAyNDEsIDE5NSwgMTEsIDUsIDI0MSwgMjEzLCAxMSwgCisgICAgNSwgMjQxLCAyMTIsIDExLCA1LCAyNDEsIDIyMCwgMTEsIDUsIDI0MSwgMjE0LCAxMSwgNSwgMjQxLCAxODIsIDExLCA1LCAKKyAgICAyNDEsIDE4NCwgMTEsIDUsIDI0MSwgMTgzLCAxMSwgNSwgMjQxLCAxODcsIDExLCA1LCAyNDEsIDE4NiwgMTEsIDUsIDI0MSwgCisgICAgMTkwLCAxMSwgNSwgMjQxLCAxODgsIDExLCA1LCAyNDEsIDIwNSwgMTEsIDUsIDI0MSwgMjA4LCAxMSwgNSwgMjQxLCAyMDYsIAorICAgIDExLCA1LCAyNDEsIDE3OCwgMTEsIDUsIDI0MSwgMTc3LCAxMSwgNSwgMjQxLCAxODUsIDExLCA1LCAyNDEsIDE4MSwgMTEsIAorICAgIDUsIDI0MSwgMTc5LCAxMSwgNSwgMjQxLCAxODAsIDExLCA1LCAyMjAsIDUzLCAxMSwgNSwgMjIwLCA1MiwgMTEsIDUsIDIyMCwgCisgICAgNjAsIDExLCA1LCAyMjAsIDU1LCAxMSwgNSwgMjIwLCA1NiwgMTEsIDUsIDIyMCwgNTcsIDExLCA1LCAyMjAsIDY5LCAxMSwgCisgICAgNSwgMjIwLCA2OCwgMTEsIDUsIDIyMCwgNzUsIDExLCA1LCAyMjAsIDcwLCAxMSwgNSwgMjIwLCA0NSwgMTEsIDUsIDIyMCwgCisgICAgNDQsIDExLCA1LCAyMjAsIDUxLCAxMSwgNSwgMjIwLCA0NiwgMTEsIDUsIDIyMCwgNjEsIDExLCA1LCAyMjAsIDY3LCAxMSwgCisgICAgNSwgMjIwLCA2NSwgMTEsIDUsIDIyMCwgMzcsIDExLCA1LCAyMjAsIDM2LCAxMSwgNSwgMjIwLCA0MiwgMTEsIDUsIDIyMCwgCisgICAgNDAsIDExLCA1LCAyMjAsIDM4LCAxMSwgNSwgMjIwLCAzOSwgMTEsIDUsIDIzMywgMjE3LCAxMSwgNSwgMjMzLCAyMTYsIDExLCAKKyAgICA1LCAyMzMsIDIyMywgMTEsIDUsIDIzMywgMjE4LCAxMSwgNSwgMjMzLCAyMjAsIDExLCA1LCAyMzMsIDIxOSwgMTEsIDUsIAorICAgIDIzMywgMjIyLCAxMSwgNSwgMjMzLCAyMjEsIDExLCA1LCAyMzMsIDIyOSwgMTEsIDUsIDIzMywgMjI3LCAxMSwgNSwgMjMzLCAKKyAgICAyMzEsIDExLCA1LCAyMzMsIDIzMCwgMTEsIDUsIDIzMywgMjEwLCAxMSwgNSwgMjMzLCAyMTEsIDExLCA1LCAyMzMsIDIxNCwgCisgICAgMTEsIDUsIDIzMywgMjEzLCAxMSwgNSwgMjMzLCAyMTUsIDExLCA1LCAyMzMsIDIyNCwgMTEsIDUsIDIzMywgMjI2LCAxMSwgCisgICAgNSwgMjMzLCAyMjUsIDExLCA1LCAyMzMsIDIwOSwgMTEsIDUsIDIxOSwgMTAyLCAxMSwgNSwgMjE5LCAxMDAsIDExLCA1LCAKKyAgICAyMTksIDE1MCwgMTEsIDUsIDIxOSwgMTA1LCAxMSwgNSwgMjE5LCAxMzIsIDExLCA1LCAyMTksIDE0NiwgMTEsIDUsIDIxOSwgCisgICAgMTQ1LCAxMSwgNSwgMjIwLCAxMTEsIDExLCA1LCAxODgsIDExLCA1LCAyMjAsIDEyNywgMTEsIDUsIDIxOCwgODEsIDExLCA1LCAKKyAgICAyMTgsIDgzLCAxMSwgNSwgMjE4LCA4MiwgMTEsIDUsIDIxOCwgMjE0LCAxMSwgNSwgMjE4LCAxOTksIDExLCA1LCAyMTgsIAorICAgIDI0MSwgMTEsIDUsIDIxOCwgMjI1LCAxMSwgNSwgMjIwLCAzLCAxMSwgNSwgMjIwLCAzNCwgMTEsIDUsIDIyMCwgMTksIDExLCAKKyAgICA1LCAyMTgsIDc2LCAxMSwgNSwgMjE4LCA3MiwgMTEsIDUsIDIxOCwgMTMzLCAxMSwgNSwgMjE4LCA4MCwgMTEsIDUsIDIxOCwgCisgICAgNzgsIDExLCA1LCAyMTgsIDc5LCAxMSwgNSwgMjM0LCAyNiwgMTEsIDUsIDIzNCwgMjUsIDExLCA1LCAyMzQsIDMxLCAxMSwgCisgICAgNSwgMjM0LCAyNywgMTEsIDUsIDIzNCwgMjgsIDExLCA1LCAyMzQsIDMwLCAxMSwgNSwgMjM0LCAyOSwgMTEsIDUsIDIzNCwgCisgICAgMzcsIDExLCA1LCAyMzQsIDM1LCAxMSwgNSwgMjM0LCAzOSwgMTEsIDUsIDIzNCwgMzgsIDExLCA1LCAyMzQsIDE4LCAxMSwgCisgICAgNSwgMjM0LCAyMCwgMTEsIDUsIDIzNCwgMTksIDExLCA1LCAyMzQsIDIyLCAxMSwgNSwgMjM0LCAyNCwgMTEsIDUsIDIzNCwgCisgICAgMjMsIDExLCA1LCAyMzQsIDMyLCAxMSwgNSwgMjM0LCAzNCwgMTEsIDUsIDIzNCwgMzMsIDExLCA1LCAyMzQsIDE0LCAxMSwgCisgICAgNSwgMjM0LCAxMywgMTEsIDUsIDIzNCwgMjEsIDExLCA1LCAyMzQsIDE3LCAxMSwgNSwgMjM0LCAxNSwgMTEsIDUsIDIzNCwgCisgICAgMTYsIDExLCA1LCAyMzQsIDgsIDExLCA1LCAyMzQsIDcsIDExLCA1LCAyMzQsIDEyLCAxMSwgNSwgMjM0LCAxMSwgMTEsIDUsIAorICAgIDIzNCwgOSwgMTEsIDUsIDIzNCwgMTAsIDExLCA1LCAyMjQsIDE1MiwgMTEsIDUsIDIyNCwgMTQ0LCAxMSwgNSwgMjI0LCAKKyAgICAyMTAsIDExLCA1LCAyMjQsIDE2MiwgMTEsIDUsIDIyNCwgMjAxLCAxMSwgNSwgMjI0LCAyMDAsIDExLCA1LCAyMjQsIDIwNCwgCisgICAgMTEsIDUsIDIyNCwgMjAyLCAxMSwgNSwgMjI1LCA2MywgMTEsIDUsIDIyNSwgNTEsIDExLCA1LCAxOTQsIDExLCA1LCAyMjUsIAorICAgIDc0LCAxMSwgNSwgMjI0LCAyMCwgMTEsIDUsIDIyNCwgMTksIDExLCA1LCAyMjQsIDIyLCAxMSwgNSwgMjI0LCAyMSwgMTEsIAorICAgIDUsIDIyNCwgNjUsIDExLCA1LCAyMjQsIDUxLCAxMSwgNSwgMjI0LCAxMTAsIDExLCA1LCAyMjQsIDcxLCAxMSwgNSwgMjI0LCAKKyAgICAyMjcsIDExLCA1LCAyMjUsIDQwLCAxMSwgNSwgMjI0LCAyNDQsIDExLCA1LCAyMjQsIDE0LCAxMSwgNSwgMjI0LCAxMiwgMTEsIAorICAgIDUsIDIyNCwgNDIsIDExLCA1LCAyMjQsIDE4LCAxMSwgNSwgMjI0LCAxNiwgMTEsIDUsIDIyNCwgMTcsIDExLCA1LCAyMjMsIAorICAgIDI0OCwgMTEsIDUsIDIyMywgMjQ3LCAxMSwgNSwgMjI0LCAyLCAxMSwgNSwgMjIzLCAyNTEsIDExLCA1LCAyMjMsIDI0OSwgCisgICAgMTEsIDUsIDIyMywgMjUwLCAxMSwgNSwgMjM1LCAxMzQsIDExLCA1LCAyMzUsIDEzMywgMTEsIDUsIDIzNSwgMTYxLCAxMSwgCisgICAgNSwgMjM1LCAxNDUsIDExLCA1LCAyMzUsIDE1MywgMTEsIDUsIDIzNSwgMTUyLCAxMSwgNSwgMjM1LCAxNTUsIDExLCA1LCAKKyAgICAyMzUsIDE1NCwgMTEsIDUsIDIzNiwgNDIsIDExLCA1LCAyMzYsIDM3LCAxMSwgNSwgMjM2LCA4OSwgMTEsIDUsIDIzNiwgNTIsIAorICAgIDExLCA1LCAyMzUsIDI1LCAxMSwgNSwgMjM1LCAyNCwgMTEsIDUsIDIzNSwgMjcsIDExLCA1LCAyMzUsIDI2LCAxMSwgNSwgCisgICAgMjM1LCA5NCwgMTEsIDUsIDIzNSwgOTIsIDExLCA1LCAyMzUsIDExNiwgMTEsIDUsIDIzNSwgMTAzLCAxMSwgNSwgMjM1LCAKKyAgICAyMzksIDExLCA1LCAyMzUsIDIzNywgMTEsIDUsIDIzNiwgMTUsIDExLCA1LCAyMzUsIDI1MCwgMTEsIDUsIDIzNSwgMTQsIAorICAgIDExLCA1LCAyMzUsIDEzLCAxMSwgNSwgMjM1LCA1MCwgMTEsIDUsIDIzNSwgMjMsIDExLCA1LCAyMzUsIDE1LCAxMSwgNSwgCisgICAgMjM1LCAyMiwgMTEsIDUsIDIyNiwgMTI3LCAxMSwgNSwgMjI2LCAxMjMsIDExLCA1LCAyMjYsIDE2MywgMTEsIDUsIDIyNiwgCisgICAgMTQxLCAxMSwgNSwgMjI2LCAxNTIsIDExLCA1LCAyMjYsIDE1NiwgMTEsIDUsIDIyNiwgMTU0LCAxMSwgNSwgMjI3LCAzMywgCisgICAgMTEsIDUsIDIyNywgMTYsIDExLCA1LCAxNjEsIDExLCA1LCAyMjcsIDYwLCAxMSwgNSwgMjI1LCAyNDksIDExLCA1LCAyMjUsIAorICAgIDI1NCwgMTEsIDUsIDIyNSwgMjUxLCAxMSwgNSwgMjI2LCA1NiwgMTEsIDUsIDIyNiwgNTEsIDExLCA1LCAyMjYsIDg4LCAxMSwgCisgICAgNSwgMjI2LCA2MywgMTEsIDUsIDIyNiwgMjMzLCAxMSwgNSwgMjI2LCAyMTYsIDExLCA1LCAyMjcsIDgsIDExLCA1LCAyMjYsIAorICAgIDIzNywgMTEsIDUsIDIyNSwgMjM3LCAxMSwgNSwgMjI1LCAyMzMsIDExLCA1LCAyMjYsIDE1LCAxMSwgNSwgMjI1LCAyNDgsIAorICAgIDExLCA1LCAyMjUsIDI0MSwgMTEsIDUsIDIyNSwgMjQ1LCAxMSwgNSwgMjM1LCAyMjEsIDExLCA1LCAyMzUsIDIyMCwgMTEsIAorICAgIDUsIDIzNSwgMjI1LCAxMSwgNSwgMjM1LCAyMjIsIDExLCA1LCAyMzUsIDIyNCwgMTEsIDUsIDIzNSwgMjIzLCAxMSwgNSwgCisgICAgMjM1LCAyMzIsIDExLCA1LCAyMzUsIDIzMSwgMTEsIDUsIDIzNSwgMjM1LCAxMSwgNSwgMjM1LCAyMzMsIDExLCA1LCAyMzUsIAorICAgIDIxMiwgMTEsIDUsIDIzNSwgMjExLCAxMSwgNSwgMjM1LCAyMTQsIDExLCA1LCAyMzUsIDIxMywgMTEsIDUsIDIzNSwgMjE3LCAKKyAgICAxMSwgNSwgMjM1LCAyMTYsIDExLCA1LCAyMzUsIDIxOSwgMTEsIDUsIDIzNSwgMjE4LCAxMSwgNSwgMjM1LCAyMjcsIDExLCAKKyAgICA1LCAyMzUsIDIyNiwgMTEsIDUsIDIzNSwgMjMwLCAxMSwgNSwgMjM1LCAyMjgsIDExLCA1LCAyMzUsIDIwNywgMTEsIDUsIAorICAgIDIzNSwgMjA2LCAxMSwgNSwgMjM1LCAyMTUsIDExLCA1LCAyMzUsIDIxMCwgMTEsIDUsIDIzNSwgMjA4LCAxMSwgNSwgMjM1LCAKKyAgICAyMDksIDExLCA1LCAyMjEsIDIzMCwgMTEsIDUsIDIyMSwgMjMxLCAxMSwgNSwgMjIxLCAyNDksIDExLCA1LCAyMjEsIDI0OCwgCisgICAgMTEsIDUsIDIyMSwgMjUxLCAxMSwgNSwgMjIxLCAyNTAsIDExLCA1LCAyMjEsIDIyMSwgMTEsIDUsIDIyMSwgMjIzLCAxMSwgCisgICAgNSwgMjIxLCAyMjIsIDExLCA1LCAyMjEsIDIyNiwgMTEsIDUsIDIyMSwgMjI1LCAxMSwgNSwgMjIxLCAyMjgsIDExLCA1LCAKKyAgICAyMjEsIDIyNywgMTEsIDUsIDIyMSwgMjMyLCAxMSwgNSwgMjIxLCAyMzQsIDExLCA1LCAyMjEsIDIzMywgMTEsIDUsIDIyMSwgCisgICAgMjE3LCAxMSwgNSwgMjIxLCAyMTYsIDExLCA1LCAyMjEsIDIyNCwgMTEsIDUsIDIyMSwgMjIwLCAxMSwgNSwgMjIxLCAyMTgsIAorICAgIDExLCA1LCAyMjEsIDIxOSwgMTEsIDUsIDIzMywgNDcsIDExLCA1LCAyMzMsIDQ2LCAxMSwgNSwgMjMzLCA1MywgMTEsIDUsIAorICAgIDIzMywgNDgsIDExLCA1LCAyMzMsIDUwLCAxMSwgNSwgMjMzLCA0OSwgMTEsIDUsIDIzMywgNTIsIDExLCA1LCAyMzMsIDUxLCAKKyAgICAxMSwgNSwgMjMzLCA1OCwgMTEsIDUsIDIzMywgNTcsIDExLCA1LCAyMzMsIDYwLCAxMSwgNSwgMjMzLCA1OSwgMTEsIDUsIAorICAgIDIzMywgMzksIDExLCA1LCAyMzMsIDM4LCAxMSwgNSwgMjMzLCA0MSwgMTEsIDUsIDIzMywgNDAsIDExLCA1LCAyMzMsIDQzLCAKKyAgICAxMSwgNSwgMjMzLCA0MiwgMTEsIDUsIDIzMywgNDUsIDExLCA1LCAyMzMsIDQ0LCAxMSwgNSwgMjMzLCA1NCwgMTEsIDUsIAorICAgIDIzMywgNTYsIDExLCA1LCAyMzMsIDU1LCAxMSwgNSwgMjE5LCAxOTgsIDExLCA1LCAyMTksIDIwMCwgMTEsIDUsIDIxOSwgCisgICAgMTk5LCAxMSwgNSwgMjE5LCAyNDMsIDExLCA1LCAyMTksIDI0MSwgMTEsIDUsIDIxOSwgMjUzLCAxMSwgNSwgMjE5LCAyNDYsIAorICAgIDExLCA1LCAyMTksIDE2MCwgMTEsIDUsIDIxOSwgMTU5LCAxMSwgNSwgMjE5LCAxNjEsIDExLCA1LCAyMTksIDE3MCwgMTEsIAorICAgIDUsIDIxOSwgMTY3LCAxMSwgNSwgMjE5LCAxNzgsIDExLCA1LCAyMTksIDE3MiwgMTEsIDUsIDIxOSwgMjM0LCAxMSwgNSwgCisgICAgMjE5LCAyNDAsIDExLCA1LCAyMTksIDIzNiwgMTEsIDUsIDIzNCwgNDUsIDExLCA1LCAyMzQsIDYwLCAxMSwgNSwgMjM0LCAKKyAgICA2OSwgMTEsIDUsIDIzNCwgMTU3LCAxMSwgNSwgMjM0LCAxNDYsIDExLCA1LCAxNDQsIDExLCA1LCAyMzQsIDE2OCwgMTEsIDUsIAorICAgIDIzMywgNzYsIDExLCA1LCAyMzMsIDc1LCAxMSwgNSwgMjMzLCA3OCwgMTEsIDUsIDIzMywgNzcsIDExLCA1LCAyMzMsIDExNywgCisgICAgMTEsIDUsIDIzMywgMTA4LCAxMSwgNSwgMjMzLCAyMDcsIDExLCA1LCAyMzMsIDE4MCwgMTEsIDUsIDIzNCwgOTAsIDExLCA1LCAKKyAgICAyMzQsIDEzOSwgMTEsIDUsIDIzNCwgMTAyLCAxMSwgNSwgMjAxLCA4NSwgMTEsIDUsIDIwMSwgNzAsIDExLCA1LCAyMDEsIAorICAgIDExNCwgMTEsIDUsIDIwMSwgOTYsIDExLCA1LCAyMDAsIDIwNSwgMTEsIDUsIDIwMCwgMjA3LCAxMSwgNSwgMjAwLCAyMDYsIAorICAgIDExLCA1LCAyMDAsIDIyOSwgMTEsIDUsIDIwMSwgMCwgMTEsIDUsIDIwMCwgMjM5LCAxMSwgNSwgMjAxLCA0MywgMTEsIDUsIAorICAgIDIwMSwgNjQsIDExLCA1LCAyMDEsIDQ5LCAxMSwgNSwgMTk5LCAyMSwgMTEsIDUsIDE5OSwgMjAsIDExLCA1LCAxOTksIDM2LCAKKyAgICAxMSwgNSwgMTk5LCAyNCwgMTEsIDUsIDE5OSwgMjksIDExLCA1LCAxOTksIDMxLCAxMSwgNSwgMTk5LCAzMCwgMTEsIDUsIAorICAgIDE5OSwgOTcsIDExLCA1LCAxOTksIDk0LCAxMSwgNSwgMTk5LCAxMTQsIDExLCA1LCAxOTksIDEwMSwgMTEsIDUsIDE5OCwgCisgICAgMjUyLCAxMSwgNSwgMTk4LCAyNTQsIDExLCA1LCAxOTgsIDI1MywgMTEsIDUsIDE5OSwgMTAsIDExLCA1LCAxOTksIDksIDExLCAKKyAgICA1LCAxOTksIDE0LCAxMSwgNSwgMTk5LCAxMSwgMTEsIDUsIDE5OSwgNzksIDExLCA1LCAxOTksIDg5LCAxMSwgNSwgMTk5LCAKKyAgICA4MywgMTEsIDUsIDE5OCwgMjQ4LCAxMSwgNSwgMTk4LCAyNDcsIDExLCA1LCAxOTksIDMsIDExLCA1LCAxOTgsIDI1MSwgMTEsIAorICAgIDUsIDE5OCwgMjQ5LCAxMSwgNSwgMTk4LCAyNTAsIDExLCA1LCAxOTgsIDIzNCwgMTEsIDUsIDE5OCwgMjMzLCAxMSwgNSwgCisgICAgMTk4LCAyMzksIDExLCA1LCAxOTgsIDIzNywgMTEsIDUsIDE5OCwgMjM1LCAxMSwgNSwgMTk4LCAyMzYsIDExLCA1LCAyNDYsIAorICAgIDE0NCwgMTEsIDUsIDI0NiwgMTM3LCAxMSwgNSwgMjQ2LCAxNzMsIDExLCA1LCAyNDYsIDE1NywgMTEsIDUsIDI0NiwgMTcwLCAKKyAgICAxMSwgNSwgMjQ2LCAxNjQsIDExLCA1LCAyNDYsIDE3MiwgMTEsIDUsIDI0NiwgMTcxLCAxMSwgNSwgMjQ3LCAxMTEsIDExLCAKKyAgICA1LCAyNDcsIDEwMywgMTEsIDUsIDI0NywgMTkwLCAxMSwgNSwgMjQ3LCAxNDQsIDExLCA1LCAyNDIsIDIwNCwgMTEsIDUsIAorICAgIDI0MiwgMjA2LCAxMSwgNSwgMjQyLCAyMDUsIDExLCA1LCAyNDMsIDgsIDExLCA1LCAyNDIsIDI1MywgMTEsIDUsIDI0NiwgCisgICAgOTEsIDExLCA1LCAyNDMsIDI1LCAxMSwgNSwgMjQ3LCA0MCwgMTEsIDUsIDI0NywgNzYsIDExLCA1LCAyNDcsIDQ1LCAxMSwgCisgICAgNSwgMjQyLCAxNzksIDExLCA1LCAyNDIsIDE3NywgMTEsIDUsIDI0MiwgMjE0LCAxMSwgNSwgMjQyLCAyMDIsIDExLCA1LCAKKyAgICAyNDIsIDE4NSwgMTEsIDUsIDI0MiwgMTk5LCAxMSwgNSwgMjQyLCAxNTYsIDExLCA1LCAyNDIsIDE1NSwgMTEsIDUsIDI0MiwgCisgICAgMTY4LCAxMSwgNSwgMjQyLCAxNjIsIDExLCA1LCAyNDIsIDE1NywgMTEsIDUsIDI0MiwgMTU5LCAxMSwgNSwgMTk4LCAyMTcsIAorICAgIDExLCA1LCAxOTgsIDIxNiwgMTEsIDUsIDE5OCwgMjIzLCAxMSwgNSwgMTk4LCAyMTgsIDExLCA1LCAxOTgsIDIyMCwgMTEsIAorICAgIDUsIDE5OCwgMjE5LCAxMSwgNSwgMTk4LCAyMjIsIDExLCA1LCAxOTgsIDIyMSwgMTEsIDUsIDE5OCwgMjI5LCAxMSwgNSwgCisgICAgMTk4LCAyMjgsIDExLCA1LCAxOTgsIDIzMiwgMTEsIDUsIDE5OCwgMjMwLCAxMSwgNSwgMTk4LCAyMTMsIDExLCA1LCAxOTgsIAorICAgIDIxNSwgMTEsIDUsIDE5OCwgMjE0LCAxMSwgNSwgMTk4LCAyMjQsIDExLCA1LCAxOTgsIDIyNywgMTEsIDUsIDE5OCwgMjI1LCAKKyAgICAxMSwgNSwgMTk4LCAyMDYsIDExLCA1LCAxOTgsIDIxMCwgMTEsIDUsIDE5OCwgMjA5LCAxMSwgNSwgMTk4LCAyMDcsIDExLCAKKyAgICA1LCAxOTgsIDIwOCwgMTEsIDUsIDE5OCwgMjAwLCAxMSwgNSwgMTk4LCAxOTksIDExLCA1LCAxOTgsIDIwNSwgMTEsIDUsIAorICAgIDE5OCwgMjAzLCAxMSwgNSwgMTk4LCAyMDEsIDExLCA1LCAxOTgsIDIwMiwgMTEsIDUsIDIxNywgMjUwLCAxMSwgNSwgMjE3LCAKKyAgICAyNDksIDExLCA1LCAyMTcsIDI1NSwgMTEsIDUsIDIxNywgMjUxLCAxMSwgNSwgMjE3LCAyNTIsIDExLCA1LCAyMTcsIDI1NCwgCisgICAgMTEsIDUsIDIxNywgMjUzLCAxMSwgNSwgMjE4LCA0LCAxMSwgNSwgMjE4LCAzLCAxMSwgNSwgMjE4LCA3LCAxMSwgNSwgMjE4LCAKKyAgICA2LCAxMSwgNSwgMjE3LCAyNDMsIDExLCA1LCAyMTcsIDI0NCwgMTEsIDUsIDIxNywgMjQ3LCAxMSwgNSwgMjE3LCAyNDgsIAorICAgIDExLCA1LCAyMTgsIDAsIDExLCA1LCAyMTgsIDIsIDExLCA1LCAyMTcsIDIzOCwgMTEsIDUsIDIxNywgMjQ2LCAxMSwgNSwgCisgICAgMjE3LCAyNDIsIDExLCA1LCAyMTcsIDIzOSwgMTEsIDUsIDIxNywgMjQwLCAxMSwgNSwgMjE3LCAyMzMsIDExLCA1LCAyMTcsIAorICAgIDIzMiwgMTEsIDUsIDIxNywgMjM3LCAxMSwgNSwgMjE3LCAyMzYsIDExLCA1LCAyMTcsIDIzNCwgMTEsIDUsIDIxNywgMjM1LCAKKyAgICAxMSwgNSwgMjA5LCAxMDgsIDExLCA1LCAxODcsIDExLCA1LCAyMDksIDE4MiwgMTEsIDUsIDIwOSwgMTExLCAxMSwgNSwgCisgICAgMjA5LCAxNjksIDExLCA1LCAyMDksIDE3MiwgMTEsIDUsIDIwOSwgMTcwLCAxMSwgNSwgMjExLCAyNTEsIDExLCA1LCAyMTEsIAorICAgIDIzNywgMTEsIDUsIDIxMiwgNjQsIDExLCA1LCAyMTIsIDMsIDExLCA1LCAyMDcsIDIxOCwgMTEsIDUsIDIwNywgMjIwLCAxMSwgCisgICAgNSwgMjA3LCAyMTksIDExLCA1LCAyMDksIDQsIDExLCA1LCAyMDgsIDI0OSwgMTEsIDUsIDIwOSwgMjksIDExLCA1LCAyMDksIAorICAgIDgsIDExLCA1LCAyMTAsIDEyNywgMTEsIDUsIDIxMSwgMjAyLCAxMSwgNSwgMjEwLCAxNTYsIDExLCA1LCAyMDcsIDE5NSwgCisgICAgMTEsIDUsIDIwNywgMTkyLCAxMSwgNSwgMjA4LCAyNCwgMTEsIDUsIDIwNywgMjE3LCAxMSwgNSwgMjA3LCAxOTksIDExLCA1LCAKKyAgICAyMDcsIDIwNywgMTEsIDUsIDIwNywgOTcsIDExLCA1LCAyMDcsIDk2LCAxMSwgNSwgMjA3LCAxNjUsIDExLCA1LCAyMDcsIAorICAgIDEwNSwgMTEsIDUsIDIwNywgOTksIDExLCA1LCAyMDcsIDEwNCwgMTEsIDUsIDIwOCwgMTQxLCAxMSwgNSwgMjA4LCAxNDAsIAorICAgIDExLCA1LCAyMDgsIDE0NywgMTEsIDUsIDIwOCwgMTQyLCAxMSwgNSwgMjA4LCAxNDQsIDExLCA1LCAyMDgsIDE0NiwgMTEsIAorICAgIDUsIDIwOCwgMTQ1LCAxMSwgNSwgMjA4LCAxNTYsIDExLCA1LCAyMDgsIDE1NCwgMTEsIDUsIDIwOCwgMTc5LCAxMSwgNSwgCisgICAgMjA4LCAxNTcsIDExLCA1LCAyMDgsIDEzNiwgMTEsIDUsIDIwOCwgMTM1LCAxMSwgNSwgMjA4LCAxMzksIDExLCA1LCAyMDgsIAorICAgIDEzNywgMTEsIDUsIDIwOCwgMTUwLCAxMSwgNSwgMjA4LCAxNTMsIDExLCA1LCAyMDgsIDE1MSwgMTEsIDUsIDIwOCwgMTMyLCAKKyAgICAxMSwgNSwgMjA4LCAxMzAsIDExLCA1LCAyMDgsIDEzNCwgMTEsIDUsIDIwOCwgMTMzLCAxMSwgNSwgMjA4LCAxMjUsIDExLCAKKyAgICA1LCAyMDgsIDEyNCwgMTEsIDUsIDIwOCwgMTI5LCAxMSwgNSwgMjA4LCAxMjgsIDExLCA1LCAyMDgsIDEyNiwgMTEsIDUsIAorICAgIDIwOCwgMTI3LCAxMSwgNSwgMTk5LCA3MiwgMTEsIDUsIDE5OSwgNzEsIDExLCA1LCAxOTksIDc3LCAxMSwgNSwgMTk5LCA3NCwgCisgICAgMTEsIDUsIDE5OSwgNTEsIDExLCA1LCAxOTksIDUzLCAxMSwgNSwgMTk5LCA1MiwgMTEsIDUsIDE5OSwgNTYsIDExLCA1LCAKKyAgICAxOTksIDU1LCAxMSwgNSwgMTk5LCA2MCwgMTEsIDUsIDE5OSwgNTcsIDExLCA1LCAxOTksIDY1LCAxMSwgNSwgMTk5LCA2NCwgCisgICAgMTEsIDUsIDE5OSwgNjgsIDExLCA1LCAxOTksIDY2LCAxMSwgNSwgMTk5LCA0NywgMTEsIDUsIDE5OSwgNDYsIDExLCA1LCAKKyAgICAxOTksIDU0LCAxMSwgNSwgMTk5LCA1MCwgMTEsIDUsIDE5OSwgNDgsIDExLCA1LCAxOTksIDQ5LCAxMSwgNSwgMTk5LCAzOSwgCisgICAgMTEsIDUsIDE5OSwgMzgsIDExLCA1LCAxOTksIDQzLCAxMSwgNSwgMTk5LCA0MiwgMTEsIDUsIDE5OSwgNDAsIDExLCA1LCAKKyAgICAxOTksIDQxLCAxMSwgNSwgMjQ3LCAxNCwgMTEsIDUsIDI0NywgMTAsIDExLCA1LCAyNDcsIDM3LCAxMSwgNSwgMjQ3LCAyMywgCisgICAgMTEsIDUsIDI0NiwgMTg4LCAxMSwgNSwgMjQ2LCAxODcsIDExLCA1LCAyNDYsIDE5MCwgMTEsIDUsIDI0NiwgMTg5LCAxMSwgCisgICAgNSwgMjQ2LCAyMDMsIDExLCA1LCAyNDYsIDIwMiwgMTEsIDUsIDI0NiwgMjEwLCAxMSwgNSwgMjQ2LCAyMDUsIDExLCA1LCAKKyAgICAyNDYsIDI0MSwgMTEsIDUsIDI0NiwgMjM5LCAxMSwgNSwgMjQ3LCA4LCAxMSwgNSwgMjQ2LCAyNDksIDExLCA1LCAyNDYsIAorICAgIDE4MiwgMTEsIDUsIDI0NiwgMTkyLCAxMSwgNSwgMjQ2LCAxODYsIDExLCA1LCAyNDYsIDE4MywgMTEsIDUsIDI0NiwgMTg1LCAKKyAgICAxMSwgNSwgMjQ2LCAxNzUsIDExLCA1LCAyNDYsIDE3NCwgMTEsIDUsIDI0NiwgMTc5LCAxMSwgNSwgMjQ2LCAxNzgsIDExLCAKKyAgICA1LCAyNDYsIDE3NiwgMTEsIDUsIDI0NiwgMTc3LCAxMSwgNSwgMjEyLCAyMTEsIDExLCA1LCAyMTIsIDIxNSwgMTEsIDUsIAorICAgIDIxMiwgMTkzLCAxMSwgNSwgMjEyLCAxOTQsIDExLCA1LCAyMTIsIDE5OCwgMTEsIDUsIDIxMiwgMTk3LCAxMSwgNSwgMjEyLCAKKyAgICAyMDEsIDExLCA1LCAyMTIsIDE5OSwgMTEsIDUsIDIxMiwgMjA1LCAxMSwgNSwgMjEyLCAyMDQsIDExLCA1LCAyMTIsIDIxMCwgCisgICAgMTEsIDUsIDIxMiwgMjA2LCAxMSwgNSwgMjEyLCAxODksIDExLCA1LCAyMTIsIDE4NywgMTEsIDUsIDIxMiwgMTk1LCAxMSwgCisgICAgNSwgMjEyLCAxOTIsIDExLCA1LCAyMTIsIDE5MCwgMTEsIDUsIDIxMiwgMTkxLCAxMSwgNSwgMjEyLCAxODIsIDExLCA1LCAKKyAgICAyMTIsIDE4MSwgMTEsIDUsIDIxMiwgMTg2LCAxMSwgNSwgMjEyLCAxODUsIDExLCA1LCAyMTIsIDE4MywgMTEsIDUsIDIxMiwgCisgICAgMTg0LCAxMSwgNSwgMjE4LCAxOTQsIDExLCA1LCAyMTgsIDE5MywgMTEsIDUsIDIxOCwgMTk2LCAxMSwgNSwgMjE4LCAxOTUsIAorICAgIDExLCA1LCAyMTgsIDE4NSwgMTEsIDUsIDIxOCwgMTg3LCAxMSwgNSwgMjE4LCAxODYsIDExLCA1LCAyMTgsIDE4OSwgMTEsIAorICAgIDUsIDIxOCwgMTg4LCAxMSwgNSwgMjE4LCAxOTIsIDExLCA1LCAyMTgsIDE5MSwgMTEsIDUsIDIxOCwgMTc5LCAxMSwgNSwgCisgICAgMjE4LCAxNzgsIDExLCA1LCAyMTgsIDE4NCwgMTEsIDUsIDIxOCwgMTgyLCAxMSwgNSwgMjE4LCAxODAsIDExLCA1LCAyMTgsIAorICAgIDE4MSwgMTEsIDUsIDIxOCwgMTczLCAxMSwgNSwgMjE4LCAxNzIsIDExLCA1LCAyMTgsIDE3NywgMTEsIDUsIDIxOCwgMTc2LCAKKyAgICAxMSwgNSwgMjE4LCAxNzQsIDExLCA1LCAyMTgsIDE3NSwgMTEsIDUsIDIxMCwgNzUsIDExLCA1LCAyMTAsIDcwLCAxMSwgNSwgCisgICAgMjEwLCAxMTQsIDExLCA1LCAyMTAsIDg3LCAxMSwgNSwgMjA5LCAyMDksIDExLCA1LCAyMDksIDIxMSwgMTEsIDUsIDIwOSwgCisgICAgMjEwLCAxMSwgNSwgMjA5LCAyMzQsIDExLCA1LCAyMDksIDIzMCwgMTEsIDUsIDIxMCwgOCwgMTEsIDUsIDIwOSwgMjU0LCAKKyAgICAxMSwgNSwgMjEwLCA0MywgMTEsIDUsIDIxMCwgMzYsIDExLCA1LCAyMTAsIDY1LCAxMSwgNSwgMjEwLCA1MiwgMTEsIDUsIAorICAgIDIwOSwgMjA1LCAxMSwgNSwgMjA5LCAyMDIsIDExLCA1LCAyMDksIDIyMCwgMTEsIDUsIDIwOSwgMjA4LCAxMSwgNSwgMjA5LCAKKyAgICAyMDYsIDExLCA1LCAyMDksIDIwNywgMTEsIDUsIDIwOSwgMTg1LCAxMSwgNSwgMjA5LCAxODQsIDExLCA1LCAyMDksIDE5MSwgCisgICAgMTEsIDUsIDIwOSwgMTg4LCAxMSwgNSwgMjA5LCAxODYsIDExLCA1LCAyMDksIDE4NywgMTEsIDUsIDIxMywgMjA0LCAxMSwgCisgICAgNSwgMjEzLCAxOTgsIDExLCA1LCAyMTMsIDI1MiwgMTEsIDUsIDIxMywgMjEwLCAxMSwgNSwgMjEyLCAxNTEsIDExLCA1LCAKKyAgICAyMTIsIDE1MywgMTEsIDUsIDIxMiwgMTUyLCAxMSwgNSwgMjEyLCAyMjksIDExLCA1LCAyMTIsIDIxNywgMTEsIDUsIDIxMywgCisgICAgMSwgMTEsIDUsIDIxMiwgMjMzLCAxMSwgNSwgMjEzLCA5OCwgMTEsIDUsIDIxMywgMTkwLCAxMSwgNSwgMjEzLCAxMzcsIDExLCAKKyAgICA1LCAyMTIsIDE0NCwgMTEsIDUsIDIxMiwgMTQxLCAxMSwgNSwgMjEyLCAxNzUsIDExLCA1LCAyMTIsIDE1MCwgMTEsIDUsIAorICAgIDIxMiwgMTQ2LCAxMSwgNSwgMjEyLCAxNDcsIDExLCA1LCAyMTIsIDEyNiwgMTEsIDUsIDIxMiwgMTI1LCAxMSwgNSwgMjEyLCAKKyAgICAxMzEsIDExLCA1LCAyMTIsIDEyOSwgMTEsIDUsIDIxMiwgMTI3LCAxMSwgNSwgMjEyLCAxMjgsIDExLCA1LCAyMjcsIDE5NiwgCisgICAgMTEsIDUsIDIyNywgMTk1LCAxMSwgNSwgMjI3LCAyMDcsIDExLCA1LCAyMjcsIDE5NywgMTEsIDUsIDIyNywgMjAzLCAxMSwgCisgICAgNSwgMjI3LCAyMDIsIDExLCA1LCAyMjcsIDIwNSwgMTEsIDUsIDIyNywgMjA0LCAxMSwgNSwgMjI3LCAxMzYsIDExLCA1LCAKKyAgICAyMjcsIDEzNSwgMTEsIDUsIDIyNywgMTM4LCAxMSwgNSwgMjI3LCAxMzcsIDExLCA1LCAyMjcsIDE1MywgMTEsIDUsIDIyNywgCisgICAgMTUxLCAxMSwgNSwgMjI3LCAxNjYsIDExLCA1LCAyMjcsIDE1NSwgMTEsIDUsIDIyNywgMTI5LCAxMSwgNSwgMjI3LCAxMjcsIAorICAgIDExLCA1LCAyMjcsIDE0NywgMTEsIDUsIDIyNywgMTM0LCAxMSwgNSwgMjI3LCAxMzEsIDExLCA1LCAyMjcsIDEzMiwgMTEsIAorICAgIDUsIDIyNywgMTIxLCAxMSwgNSwgMjI3LCAxMjAsIDExLCA1LCAyMjcsIDEyNSwgMTEsIDUsIDIyNywgMTI0LCAxMSwgNSwgCisgICAgMjI3LCAxMjIsIDExLCA1LCAyMjcsIDEyMywgMTEsIDUsIDIxNCwgMTEzLCAxMSwgNSwgMjE0LCAxMTEsIDExLCA1LCAyMTQsIAorICAgIDEyMSwgMTEsIDUsIDIxNCwgMTE0LCAxMSwgNSwgMjE0LCAxMTgsIDExLCA1LCAyMTQsIDExNywgMTEsIDUsIDIxNCwgMTIwLCAKKyAgICAxMSwgNSwgMjE0LCAxMTksIDExLCA1LCAyMTQsIDY0LCAxMSwgNSwgMjE0LCA2MSwgMTEsIDUsIDIxNCwgNjYsIDExLCA1LCAKKyAgICAyMTQsIDY1LCAxMSwgNSwgMjE0LCAxMDAsIDExLCA1LCAyMTQsIDk5LCAxMSwgNSwgMjE0LCAxMDksIDExLCA1LCAyMTQsIAorICAgIDEwMywgMTEsIDUsIDIxNCwgNTYsIDExLCA1LCAyMTQsIDUyLCAxMSwgNSwgMjE0LCA5NywgMTEsIDUsIDIxNCwgNjAsIDExLCAKKyAgICA1LCAyMTQsIDU4LCAxMSwgNSwgMjE0LCA1OSwgMTEsIDUsIDIxNCwgMzYsIDExLCA1LCAyMTQsIDM0LCAxMSwgNSwgMjE0LCAKKyAgICA0NiwgMTEsIDUsIDIxNCwgMzksIDExLCA1LCAyMTQsIDM3LCAxMSwgNSwgMjE0LCAzOCwgMTEsIDUsIDIyNywgMTg1LCAxMSwgCisgICAgNSwgMjI3LCAxODQsIDExLCA1LCAyMjcsIDE5MSwgMTEsIDUsIDIyNywgMTg2LCAxMSwgNSwgMjI3LCAxODgsIDExLCA1LCAKKyAgICAyMjcsIDE4NywgMTEsIDUsIDIyNywgMTkwLCAxMSwgNSwgMjI3LCAxODksIDExLCA1LCAyMjcsIDE3NiwgMTEsIDUsIDIyNywgCisgICAgMTc4LCAxMSwgNSwgMjI3LCAxNzcsIDExLCA1LCAyMjcsIDE4MSwgMTEsIDUsIDIyNywgMTgwLCAxMSwgNSwgMjI3LCAxODMsIAorICAgIDExLCA1LCAyMjcsIDE4MiwgMTEsIDUsIDIyNywgMTcyLCAxMSwgNSwgMjI3LCAxNzEsIDExLCA1LCAyMjcsIDE3OSwgMTEsIAorICAgIDUsIDIyNywgMTc1LCAxMSwgNSwgMjI3LCAxNzMsIDExLCA1LCAyMjcsIDE3NCwgMTEsIDUsIDIyNywgMTY4LCAxMSwgNSwgCisgICAgMjI3LCAxNjcsIDExLCA1LCAyMjcsIDE3MCwgMTEsIDUsIDIyNywgMTY5LCAxMSwgNSwgMjE5LCA3NSwgMTEsIDUsIDIxOSwgCisgICAgNzQsIDExLCA1LCAyMTksIDgyLCAxMSwgNSwgMjE5LCA3NiwgMTEsIDUsIDIxOSwgNzgsIDExLCA1LCAyMTksIDc3LCAxMSwgCisgICAgNSwgMjE5LCA4MSwgMTEsIDUsIDIxOSwgNzksIDExLCA1LCAyMTksIDY0LCAxMSwgNSwgMjE5LCA2NSwgMTEsIDUsIDIxOSwgCisgICAgNzAsIDExLCA1LCAyMTksIDY5LCAxMSwgNSwgMjE5LCA3MywgMTEsIDUsIDIxOSwgNzEsIDExLCA1LCAyMTksIDU5LCAxMSwgCisgICAgNSwgMjE5LCA2OCwgMTEsIDUsIDIxOSwgNjMsIDExLCA1LCAyMTksIDYwLCAxMSwgNSwgMjE5LCA2MSwgMTEsIDUsIDIxOSwgCisgICAgNTQsIDExLCA1LCAyMTksIDUzLCAxMSwgNSwgMjE5LCA1OCwgMTEsIDUsIDIxOSwgNTcsIDExLCA1LCAyMTksIDU1LCAxMSwgCisgICAgNSwgMjE5LCA1NiwgMTEsIDUsIDIxOCwgMjksIDExLCA1LCAyMTgsIDI4LCAxMSwgNSwgMjE4LCA0MSwgMTEsIDUsIDIxOCwgCisgICAgMzMsIDExLCA1LCAyMTgsIDM4LCAxMSwgNSwgMjE4LCAzNywgMTEsIDUsIDIxOCwgNDAsIDExLCA1LCAyMTgsIDM5LCAxMSwgCisgICAgNSwgMjE4LCAxNCwgMTEsIDUsIDIxOCwgMTYsIDExLCA1LCAyMTgsIDE1LCAxMSwgNSwgMjE4LCAyMSwgMTEsIDUsIDIxOCwgCisgICAgMjAsIDExLCA1LCAyMTgsIDI2LCAxMSwgNSwgMjE4LCAyMiwgMTEsIDUsIDIxOCwgMTIsIDExLCA1LCAyMTgsIDEwLCAxMSwgCisgICAgNSwgMjE4LCAxOSwgMTEsIDUsIDIxOCwgMTMsIDExLCA1LCAyMDAsIDE2MSwgMTEsIDUsIDIwMCwgMTYwLCAxMSwgNSwgMjAwLCAKKyAgICAxNjksIDExLCA1LCAyMDAsIDE2MywgMTEsIDUsIDIwMCwgMTY1LCAxMSwgNSwgMjAwLCAxNjQsIDExLCA1LCAyMDAsIDE2NywgCisgICAgMTEsIDUsIDIwMCwgMTY2LCAxMSwgNSwgMjAwLCAxNDksIDExLCA1LCAyMDAsIDE1MCwgMTEsIDUsIDIwMCwgMTU0LCAxMSwgCisgICAgNSwgMjAwLCAxNTMsIDExLCA1LCAyMDAsIDE1OSwgMTEsIDUsIDIwMCwgMTU3LCAxMSwgNSwgMjAwLCAxMjcsIDExLCA1LCAKKyAgICAyMDAsIDEyNSwgMTEsIDUsIDIwMCwgMTQwLCAxMSwgNSwgMjAwLCAxMzAsIDExLCA1LCAyMDAsIDEyOCwgMTEsIDUsIDIwMCwgCisgICAgMTI5LCAxMSwgNSwgMTk5LCAyNTEsIDExLCA1LCAxOTksIDI0OSwgMTEsIDUsIDIwMCwgOSwgMTEsIDUsIDE5OSwgMjUyLCAKKyAgICAxMSwgNSwgMjAwLCAzLCAxMSwgNSwgMjAwLCAyLCAxMSwgNSwgMjAwLCA2LCAxMSwgNSwgMjAwLCA0LCAxMSwgNSwgMTk5LCAKKyAgICAxODksIDExLCA1LCAxOTksIDE4OCwgMTEsIDUsIDE5OSwgMTkyLCAxMSwgNSwgMTk5LCAxOTAsIDExLCA1LCAxOTksIDIyNSwgCisgICAgMTEsIDUsIDE5OSwgMjIxLCAxMSwgNSwgMTk5LCAyNDUsIDExLCA1LCAxOTksIDIyOSwgMTEsIDUsIDE5OSwgMTgwLCAxMSwgCisgICAgNSwgMTk5LCAxNzYsIDExLCA1LCAxOTksIDIxMSwgMTEsIDUsIDE5OSwgMTg3LCAxMSwgNSwgMTk5LCAxODMsIDExLCA1LCAKKyAgICAxOTksIDE4NCwgMTEsIDUsIDE5OSwgMTYwLCAxMSwgNSwgMTk5LCAxNTksIDExLCA1LCAxOTksIDE2NywgMTEsIDUsIDE5OSwgCisgICAgMTYzLCAxMSwgNSwgMTk5LCAxNjEsIDExLCA1LCAxOTksIDE2MiwgMTEsIDQyLCAyMTQsIDEwMCwgMTEsIDQyLCAyMjQsIAorICAgIDIxMCwgMTEsIDQyLCAyMjYsIDEyNywgMTEsIDQyLCAyMTgsIDMzLCAxMSwgNDIsIDI0MiwgMTYyLCAxMSwgNDIsIDIwOCwgCisgICAgMTQ3LCAxMSwgNDIsIDIzNSwgMjE4LCAxMSwgNDIsIDIzNSwgMjUwLCAxMSwgNDIsIDIyMSwgMjExLCAxMSwgNDIsIDIzMywgCisgICAgNDcsIDExLCA0MiwgMjIzLCAyNTAsIDExLCA0MiwgMjQ5LCAxNiwgMTEsIDQyLCAyMjEsIDc5LCAxMSwgNDIsIDE5OSwgMjQ1LCAKKyAgICAxMSwgNDIsIDIxNCwgMTkyLCAxMSwgNDIsIDIzMywgNDEsIDExLCA0MiwgMjA2LCAyMjYsIDExLCA0MiwgMjM2LCA4OSwgMTEsIAorICAgIDQyLCAxOTgsIDI1MSwgMTEsIDQyLCAyNDIsIDE1NiwgMTEsIDQyLCAyNDEsIDE4MCwgMTEsIDQyLCAyNDgsIDMsIDExLCA0MiwgCisgICAgMjM1LCAyMTQsIDExLCA0MiwgMjE4LCAyMiwgMTEsIDQyLCAyMDQsIDIxNSwgMTEsIDQyLCAyMTcsIDU0LCAxMSwgNDIsIAorICAgIDIyNywgMTcyLCAxMSwgNDIsIDE5OSwgMTAsIDExLCA0MiwgMjE0LCAxNzEsIDExLCA0MiwgMjMzLCAyNDksIDExLCA0MiwgCisgICAgMTk5LCAyNTEsIDExLCA0MiwgMjAxLCAxNjIsIDExLCA0MiwgMjA5LCAxOTEsIDExLCA0MiwgMjAzLCA0OCwgMTEsIDQyLCAKKyAgICAxOTksIDExNCwgMTEsIDQyLCAyMjcsIDE2NiwgMTEsIDQyLCAyMTcsIDI0MiwgMTEsIDQyLCAyMjcsIDE3MCwgMTEsIDQyLCAKKyAgICAyMzUsIDk0LCAxMSwgNDIsIDIyNywgMTkwLCAxMSwgNDIsIDIwMSwgMCwgMTEsIDQyLCAyMzksIDEzNywgMTEsIDQyLCAyMDksIAorICAgIDIwNywgMTEsIDQyLCAyMjQsIDIwNCwgMTEsIDQyLCAyNDIsIDE2OCwgMTEsIDQyLCAyNDIsIDIwNSwgMTEsIDQyLCAyNDYsIAorICAgIDE1NywgMTEsIDQyLCAyMzMsIDQ0LCAxMSwgNDIsIDIxMCwgNzUsIDExLCA0MiwgMTk4LCAyNTAsIDExLCA0MiwgMjA5LCAKKyAgICAyNTQsIDExLCA0MiwgMjQ3LCA4LCAxMSwgNDIsIDE5OCwgMjIwLCAxMSwgNDIsIDIyMCwgMTAxLCAxMSwgNDIsIDIyNywgOCwgCisgICAgMjI0LCAxNTMsIDEsIDI0OSwgMTM2LCAyMjQsIDE1MywgMSwgMTcyLCAyMjQsIDE1MywgMSwgMjE1LCAyNDUsIDIyNCwgMTUzLCAKKyAgICAxLCAyNDIsIDU4LCAyMjQsIDE1MywgMSwgMjA3LCAzNiwgMjI0LCAxNTMsIDEsIDIwNiwgMTIyLCAyMjQsIDE1MywgMSwgCisgICAgMjM2LCA4OSwgMjI0LCAxNTMsIDEsIDE2MSwgMjI0LCAxNTMsIDEsIDIyNiwgMjA3LCAyMjQsIDE1MywgMSwgMjI3LCAyNDgsIAorICAgIDIyNCwgMTUzLCAxLCAyNDcsIDE5MCwgMjI0LCAxNTMsIDEsIDI0NywgMzcsIDIyNCwgMTUzLCAxLCAyMzksIDkzLCAyMjQsIAorICAgIDE1MywgMSwgMjA1LCAzMiwgMjI0LCAxNTMsIDEsIDIwNSwgMjIsIDIyNCwgMTUzLCAxLCAxNzgsIDIyNCwgMTUzLCAxLCAKKyAgICAxODgsIDIyNCwgMTUzLCAxLCAxOTQsIDIyNCwgMTUzLCAxLCAyMTIsIDY0LCAyMjQsIDE1MywgMSwgMTk5LCA3NywgMjI0LCAKKyAgICAxNTMsIDEsIDE5OSwgMTE0LCAyMjQsIDE1MywgMSwgMjE5LCAyNTMsIDIyNCwgMTUzLCAxLCAxNDQsIDIyNCwgMTUzLCAxLCAKKyAgICAyMDAsIDE4MSwgMjI0LCAxNTMsIDEsIDIzNCwgODQsIDIyNCwgMTUzLCAxLCAyMzcsIDE5NSwgMjI0LCAxNTMsIDEsIDIwMSwgCisgICAgMTE0LCAyMjQsIDE1MywgMSwgMjEwLCAxMTQsIDIyNCwgMTUzLCAxLCAxODMsIDIyNCwgMTUzLCAxLCAyMzUsIDE5OSwgMjI0LCAKKyAgICAxNTMsIDEsIDYyLCAyMjQsIDE1MywgMSwgMjUxLCAyMjEsIDIyNCwgMTUzLCAxLCA3MiwgMjI0LCAxNTMsIDEsIDIzOCwgNjksIAorICAgIDIyNCwgMTUzLCAxLCA3MCwgMjI0LCAxNTMsIDEsIDc0LCAyMjQsIDE1MywgMSwgNjYsIDIyNCwgMTUzLCAxLCAyMDQsIDMxLCAKKyAgICAyMjQsIDE1MywgMSwgMjA0LCAyNSwgMjI0LCAxNTMsIDEsIDIxNywgMTIxLCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIDIyMSwgCisgICAgMjA2LCAxNSwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAxNjIsIDIxNSwgMTA2LCAyMjQsIDE1MywgMSwgMTUwLCAyMjAsIAorICAgIDIyMSwgMjQyLCAxNjcsIDIyNCwgMTUzLCAxLCAxNTAsIDIyMCwgMjIxLCAyNDgsIDEyNCwgMjI0LCAxNTMsIDEsIDE1MCwgCisgICAgMjIwLCAyMjEsIDE4OCwgMjI0LCAxNTMsIDEsIDE1MCwgMjIwLCAyMjEsIDIyNywgMjE2LCAyMjQsIDE1MywgMjE0LCAyMTIsIAorICAgIDI0NiwgNzAsIDIyNCwgMTUzLCAyMTQsIDIxMiwgMjM2LCAxODMsIDIwOCwgNzYsIDUwLCA1LCAyMzgsIDI1NSwgNTAsIDUsIAorICAgIDIzOCwgMjUxLCA1MCwgNSwgMjM0LCAxMjAsIDUwLCA1LCAyMDEsIDU3LCA1MCwgNSwgMjAxLCA1NiwgNTAsIDUsIDIxNiwgCisgICAgNjEsIDUwLCA1LCAyNDgsIDE5NSwgNTAsIDUsIDI0OCwgMjUyLCA1MCwgNSwgMjIyLCAxMDIsIDUwLCA1LCAyMjYsIDQ1LCAKKyAgICA1MCwgNSwgMjIxLCAyNDMsIDUwLCA1LCAyMzYsIDI4LCA1MCwgNSwgMjM3LCAxNDAsIDUwLCA1LCAyMDMsIDU0LCA1MCwgNSwgCisgICAgMjA2LCAxOTAsIDUwLCA1LCAyMDYsIDEwNCwgNTAsIDUsIDI0MSwgOTAsIDUwLCA1LCAyNDEsIDg3LCA1MCwgNSwgMjI1LCAKKyAgICAzMiwgNTAsIDUsIDIxMywgMTY3LCA1MCwgNSwgMjQxLCAxNjEsIDUwLCA1LCAyMjAsIDY2LCA1MCwgNSwgMjExLCAxOTAsIAorICAgIDUwLCA1LCAyMTAsIDYzLCA1MCwgNSwgMTk5LCA4NywgNTAsIDUsIDE5OSwgNjcsIDUwLCA1LCAyNDcsIDY4LCA1MCwgNSwgCisgICAgMjI3LCAyMjUsIDUwLCA1LCAyMTksIDg5LCA1MCwgNSwgMjAwLCA0OCwgNTAsIDUsIDIyNywgNSwgNTAsIDUsIDIxOSwgMjI2LCAKKyAgICA1MCwgNSwgMjM2LCA3LCA1MCwgNSwgMjIyLCA2NCwgNTAsIDUsIDIyMCwgMjksIDUwLCA1LCAyMTgsIDQ5LCA1MCwgNSwgNzAsIAorICAgIDUwLCA1LCAyMjgsIDExNywgNTAsIDUsIDIzNCwgNzUsIDUwLCA1LCAyMzQsIDUzLCA1MCwgNSwgMjAxLCAzMSwgNTAsIDUsIAorICAgIDIwMSwgMTgsIDUwLCA1LCAyMTUsIDIwNCwgNTAsIDUsIDI0OCwgMTkzLCA1MCwgNSwgMjQ4LCAxODgsIDUwLCA1LCAyMjIsIAorICAgIDk1LCA1MCwgNSwgMjI2LCA0MiwgNTAsIDUsIDIyMSwgMjQwLCA1MCwgNSwgMjM2LCAyNCwgNTAsIDUsIDIzNywgMTEyLCA1MCwgCisgICAgNSwgMjAyLCAyMzQsIDUwLCA1LCAyMDYsIDE1LCA1MCwgNSwgMjA2LCA4NCwgNTAsIDUsIDI0MSwgODIsIDUwLCA1LCAyNDEsIAorICAgIDg2LCA1MCwgNSwgMjI0LCAyMTAsIDUwLCA1LCAyMTMsIDg4LCA1MCwgNSwgMjQxLCA3NiwgNTAsIDUsIDIyMCwgNjAsIDUwLCAKKyAgICA1LCAyMDksIDE4MiwgNTAsIDUsIDIxMCwgMzMsIDUwLCA1LCAxOTksIDM2LCA1MCwgNSwgMTk5LCA2MywgNTAsIDUsIDI0NiwgCisgICAgMTczLCA1MCwgNSwgMjI3LCAyMDcsIDUwLCA1LCAyMTksIDgyLCA1MCwgNSwgMjAwLCA5LCA1MCwgNSwgMjI2LCAxNjMsIDUwLCAKKyAgICA1LCAyMTksIDIxOCwgNTAsIDUsIDIzNSwgMTYxLCA1MCwgNSwgMjIxLCAyMTEsIDUwLCA1LCAyMTksIDE1MCwgNTAsIDUsIAorICAgIDIxOCwgNDEsIDUwLCA1LCA2MiwgNTAsIDUsIDI1MSwgODUsIDUwLCA1LCAyMTksIDI0OCwgNTAsIDUsIDE0NCwgNTAsIDUsIAorICAgIDIzNCwgMjAyLCA1MCwgNSwgMjAxLCAxMTQsIDUwLCA1LCAyMDEsIDEwMCwgNTAsIDUsIDE3MiwgNTAsIDUsIDI0OCwgMjAwLCAKKyAgICA1MCwgNSwgMjQ5LCAxMzYsIDUwLCA1LCAyMjIsIDExMCwgNTAsIDUsIDIyNiwgNTAsIDUwLCA1LCAyMjYsIDQ4LCA1MCwgNSwgCisgICAgMjIxLCAyNDcsIDUwLCA1LCAyMzYsIDMyLCA1MCwgNSwgMjM3LCAxOTUsIDUwLCA1LCAyMDMsIDkwLCA1MCwgNSwgMjA3LCAKKyAgICAzNiwgNTAsIDUsIDIwNiwgMTIyLCA1MCwgNSwgMjQxLCAxMDAsIDUwLCA1LCAyNDEsIDg5LCA1MCwgNSwgMTk0LCA1MCwgNSwgCisgICAgMjEzLCAyNTIsIDUwLCA1LCAyNDIsIDU4LCA1MCwgNSwgMjIwLCA3NSwgNTAsIDUsIDIxMiwgNjQsIDUwLCA1LCAyMTAsIAorICAgIDExNCwgNTAsIDUsIDE5OSwgMTE0LCA1MCwgNSwgMTk5LCA3NywgNTAsIDUsIDI0NywgMTkwLCA1MCwgNSwgMjI3LCAyNDgsIAorICAgIDUwLCA1LCAyMTksIDk4LCA1MCwgNSwgMTgzLCA1MCwgNSwgMTYxLCA1MCwgNSwgMjI3LCA2OCwgNTAsIDUsIDIxOSwgMjMyLCAKKyAgICA1MCwgNSwgMjM2LCA4OSwgNTAsIDUsIDE3OCwgNTAsIDUsIDE4OCwgNTAsIDUsIDIxOCwgNjAsIDUwLCA1LCAyMTcsIDYzLCAKKyAgICA1MCwgNSwgMjE3LCA1OCwgNTAsIDUsIDIzMywgMTg4LCA1MCwgNSwgMjAwLCAyNDQsIDUwLCA1LCAyMDAsIDI0MCwgNTAsIDUsIAorICAgIDIxNSwgODEsIDUwLCA1LCAyNDgsIDE5MSwgNTAsIDUsIDI0OCwgMTExLCA1MCwgNSwgMjIyLCA5MCwgNTAsIDUsIDIyNiwgCisgICAgNDAsIDUwLCA1LCAyMjEsIDIzNiwgNTAsIDUsIDIzNiwgMjAsIDUwLCA1LCAyMzcsIDIsIDUwLCA1LCAyMDIsIDE3OSwgNTAsIAorICAgIDUsIDIwNSwgMTYxLCA1MCwgNSwgMjA2LCA1NiwgNTAsIDUsIDI0MSwgNzksIDUwLCA1LCAyNDEsIDg0LCA1MCwgNSwgMjI0LCAKKyAgICA3OCwgNTAsIDUsIDIxMiwgMjM4LCA1MCwgNSwgMjQwLCAxODcsIDUwLCA1LCAyMjAsIDQ3LCA1MCwgNSwgMjA5LCAxMCwgNTAsIAorICAgIDUsIDIxMCwgMiwgNTAsIDUsIDE5OSwgMTIsIDUwLCA1LCAxOTksIDU4LCA1MCwgNSwgMjQzLCAzMCwgNTAsIDUsIDIyNywgCisgICAgMTU2LCA1MCwgNSwgMjE5LCA3MiwgNTAsIDUsIDE5OSwgMjMwLCA1MCwgNSwgMjI2LCA2OCwgNTAsIDUsIDIxOSwgMjE2LCAKKyAgICA1MCwgNSwgMjM1LCAxMDUsIDUwLCA1LCAyMjEsIDg3LCA1MCwgNSwgMjE4LCAyMjksIDUwLCA1LCAyMTgsIDIzLCA1MCwgNSwgCisgICAgNjYsIDUwLCA1LCAyMDQsIDUsIDUwLCA1LCAyMzMsIDk3LCA1MCwgNSwgMjMzLCA4NCwgNTAsIDUsIDIwMCwgMjE2LCA1MCwgCisgICAgNSwgMjAwLCAyMDksIDUwLCA1LCAyMTQsIDIyNCwgNTAsIDUsIDI0OCwgMTkwLCA1MCwgNSwgMjQ4LCAzNiwgNTAsIDUsIAorICAgIDIyMiwgODksIDUwLCA1LCAyMjYsIDM4LCA1MCwgNSwgMjIxLCAyMzUsIDUwLCA1LCAyMzYsIDE5LCA1MCwgNSwgMjM2LCAKKyAgICAxODksIDUwLCA1LCAyMDEsIDE2NiwgNTAsIDUsIDIwNCwgMjE1LCA1MCwgNSwgMjA2LCAzNSwgNTAsIDUsIDI0MSwgNzcsIAorICAgIDUwLCA1LCAyNDEsIDgzLCA1MCwgNSwgMjI0LCA0MiwgNTAsIDUsIDIxMiwgMTc1LCA1MCwgNSwgMjM5LCAxMzcsIDUwLCA1LCAKKyAgICAyMjAsIDQyLCA1MCwgNSwgMjA4LCAyNCwgNTAsIDUsIDIwOSwgMjIwLCA1MCwgNSwgMTk5LCAzLCA1MCwgNSwgMTk5LCA1NCwgCisgICAgNTAsIDUsIDI0MiwgMjE0LCA1MCwgNSwgMjI3LCAxNDcsIDUwLCA1LCAyMTksIDY4LCA1MCwgNSwgMTk5LCAyMTEsIDUwLCA1LCAKKyAgICAyMjYsIDE1LCA1MCwgNSwgMjE5LCAyMTUsIDUwLCA1LCAyMzUsIDUwLCA1MCwgNSwgMjIxLCA0MSwgNTAsIDUsIDIxOCwgCisgICAgMTMzLCA1MCwgNSwgMjE4LCAxOSwgNTAsIDUsIDc0LCA1MCwgNSwgMjE3LCA3OCwgNTAsIDUsIDIxOSwgMTc0LCA1MCwgNSwgCisgICAgMjMzLCAyMDcsIDUwLCA1LCAyMzMsIDE5MSwgNTAsIDUsIDIwMSwgMCwgNTAsIDUsIDIwMCwgMjQ1LCA1MCwgNSwgMjE1LCAKKyAgICAxMDYsIDUwLCA1LCAyNDgsIDE5MiwgNTAsIDUsIDI0OCwgMTI0LCA1MCwgNSwgMjIyLCA5MSwgNTAsIDUsIDIyNiwgNDEsIAorICAgIDUwLCA1LCAyMjEsIDIzOCwgNTAsIDUsIDIzNiwgMjIsIDUwLCA1LCAyMzYsIDIxLCA1MCwgNSwgMjM3LCAxMywgNTAsIDUsIAorICAgIDIwMiwgMTkzLCA1MCwgNSwgMTM4LCA1MCwgNSwgMjA2LCA2MSwgNTAsIDUsIDI0MSwgODAsIDUwLCA1LCAyNDEsIDg1LCA1MCwgCisgICAgNSwgMjI0LCAxMTAsIDUwLCA1LCAyMTMsIDEsIDUwLCA1LCAyNDAsIDIxMSwgNTAsIDUsIDIyMCwgNTEsIDUwLCA1LCAyMDksIAorICAgIDI5LCA1MCwgNSwgMjEwLCA4LCA1MCwgNSwgMTk5LCAxNCwgNTAsIDUsIDE5OSwgNjAsIDUwLCA1LCAyNDYsIDkxLCA1MCwgNSwgCisgICAgMjI3LCAxNjYsIDUwLCA1LCAyMTksIDczLCA1MCwgNSwgMTk5LCAyNDUsIDUwLCA1LCAyMjYsIDg4LCA1MCwgNSwgMjE5LCAKKyAgICAyMTcsIDUwLCA1LCAyMzUsIDExNiwgNTAsIDUsIDIyMSwgMTM2LCA1MCwgNSwgMjE4LCAyNDEsIDUwLCA1LCAyMTgsIDI2LCAKKyAgICA1MCwgNSwgNzIsIDUwLCA1LCAyMzgsIDE3OSwgNTAsIDUsIDIxOSwgMjM3LCA1MCwgNSwgMjM0LCAxMzksIDUwLCA1LCAyMzQsIAorICAgIDEwNSwgNTAsIDUsIDIwMSwgNjQsIDUwLCA1LCAyMDEsIDUxLCA1MCwgNSwgMjE2LCA3MywgNTAsIDUsIDI0OCwgMTk2LCA1MCwgCisgICAgNSwgMjQ5LCA4LCA1MCwgNSwgMjIyLCAxMDMsIDUwLCA1LCAyMjYsIDQ2LCA1MCwgNSwgMjI2LCA0NCwgNTAsIDUsIDIyMSwgCisgICAgMjQ0LCA1MCwgNSwgMjM2LCAyOSwgNTAsIDUsIDIzNiwgMjcsIDUwLCA1LCAyMzcsIDE0NywgNTAsIDUsIDIwMywgNTksIDUwLCAKKyAgICA1LCAyMDYsIDIwMSwgNTAsIDUsIDIwNiwgMTA2LCA1MCwgNSwgMjQxLCA5MSwgNTAsIDUsIDI0MSwgODgsIDUwLCA1LCAyMjUsIAorICAgIDQwLCA1MCwgNSwgMjEzLCAxOTAsIDUwLCA1LCAyNDEsIDE3NSwgNTAsIDUsIDIyMCwgNjcsIDUwLCA1LCAyMTEsIDIwMiwgCisgICAgNTAsIDUsIDIxMCwgNjUsIDUwLCA1LCAxOTksIDg5LCA1MCwgNSwgMTk5LCA2OCwgNTAsIDUsIDI0NywgNzYsIDUwLCA1LCAKKyAgICAyMjcsIDIyNywgNTAsIDUsIDIxOSwgOTEsIDUwLCA1LCAyMDAsIDUxLCA1MCwgNSwgMjI3LCA4LCA1MCwgNSwgMjE5LCAyMjcsIAorICAgIDUwLCA1LCAyMTksIDIyMywgNTAsIDUsIDIzNiwgMTUsIDUwLCA1LCAyMzYsIDEsIDUwLCA1LCAyMjIsIDc2LCA1MCwgNSwgCisgICAgMjIwLCAzNCwgNTAsIDUsIDIxOCwgNTAsIDUwLCA1LCAyMTksIDI1NSwgNTAsIDUsIDIyNCwgMjUwLCA1MCwgMjQ2LCA3MCwgCisgICAgNTAsIDIzNiwgMTgzLCAyMDgsIDc2LCA1MCwgMjE0LCA3OSwgODEsIDUwLCA1LCAyMjAsIDUwLCAyMzcsIDE5NSwgNTAsIDUsIAorICAgIDIyMCwgNTAsIDE2MSwgNTAsIDUsIDIyMCwgNTAsIDIwOSwgMTAsIDUwLCAxNiwgMjM3LCAxMzYsIDUwLCAxNiwgMjI3LCAzLCAKKyAgICA1MCwgMTYsIDIwNSwgMjI4LCA1MCwgMTYsIDIxOSwgMTI1LCA1MCwgMTYsIDI0OSwgODMsIDUwLCAxNiwgMjM3LCAxOTQsIAorICAgIDUwLCAxNiwgMjA3LCAzMiwgNTAsIDE2LCAyNDIsIDgsIDUwLCAxNiwgMjQwLCAxODYsIDUwLCAxNiwgMjI1LCAyNTUsIDUwLCAKKyAgICAxNiwgMjA1LCAxNjUsIDUwLCAxNiwgMjQwLCAyMTAsIDUwLCAxNiwgMjI3LCAxNTcsIDUwLCAxNywgMTk5LCA4MSwgNTAsIAorICAgIDE3LCAxMDIsIDUwLCAxNywgMTA1LCA1MCwgMTcsIDE0NywgNTAsIDE3LCAxNDksIDUwLCAxNywgMTY0LCA1MCwgMTcsIDE4NywgCisgICAgNTAsIDE3LCAyMTAsIDEzNSwgNTAsIDE3LCAxOTIsIDUwLCAxNywgMjE5LCAxMTMsIDUwLCA1LCAyMjAsIDUwLCAxNzgsIDUwLCAKKyAgICA1LCAyMjAsIDUwLCAyNDAsIDIxMSwgMzcsIDYsIDEsIDE5OSwgODUsIDM3LCA0LCAxLCAxOTksIDg1LCAzNywgNiwgMSwgCisgICAgMjM5LCA4OCwgMzcsIDQsIDEsIDIzOSwgODgsIDM3LCA2LCAxLCAyMTMsIDEwNSwgMjM5LCA5MCwgMzcsIDQsIDEsIDIxMywgCisgICAgMTA1LCAyMzksIDkwLCAzNywgNiwgMSwgMjI4LCA0MSwgMzcsIDQsIDEsIDIyOCwgNDEsIDM3LCA2LCAxLCAyNDAsIDIyNywgCisgICAgMzcsIDQsIDEsIDI0MCwgMjI3LCAzNywgNiwgMSwgMjIxLCA5NSwgMjA0LCAyMCwgMzcsIDQsIDEsIDIyMSwgOTUsIDIwNCwgCisgICAgMjAsIDM3LCA2LCAxLCAyNDgsIDQ3LCAyMTcsIDgzLCAzNywgNCwgMSwgMjQ4LCA0NywgMjE3LCA4MywgMzcsIDYsIDEsIAorICAgIDIyMCwgMTAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMjAsIDEwLCAyMDAsIDMzLCAzNywgNiwgMSwgMjAwLCAzMCwgMywgMjQ5LCAKKyAgICAxMzAsIDIwMCwgMzMsIDM3LCA0LCAxLCAyMDAsIDMwLCAzLCAyNDksIDEzMCwgMjAwLCAzMywgMzcsIDYsIDEsIDIyOCwgMzksIAorICAgIDIwMCwgNjUsIDM3LCA0LCAxLCAyMjgsIDM5LCAyMDAsIDY1LCAzNywgNiwgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNCwgCisgICAgMSwgMjEzLCAxMDUsIDE5OSwgMjExLCAzNywgNiwgMSwgMjI4LCAzOSwgNjIsIDM3LCA0LCAxLCAyMjgsIDM5LCA2MiwgMzcsIAorICAgIDYsIDEsIDI0NiwgMTEwLCAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA0LCAxLCAyNDYsIDExMCwgMjI0LCAxNDgsIDE5OSwgCisgICAgMTgxLCAzNywgNiwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNCwgMSwgMjQ4LCAxMzYsIDE5OSwgMTgxLCAzNywgNiwgCisgICAgMSwgMjI4LCAzOSwgMjQ2LCAxMTAsIDIyNCwgMTQ4LCAxOTksIDE4MSwgMzcsIDQsIDEsIDIyOCwgMzksIDI0NiwgMTEwLCAKKyAgICAyMjQsIDE0OCwgMTk5LCAxODEsIDM3LCA2LCAxLCAxOTksIDI0NywgMzcsIDQsIDEsIDE5OSwgMjQ3LCAzNywgNiwgMSwgCisgICAgMjEzLCAxMDUsIDIwNSwgMjYsIDM3LCA0LCAxLCAyMTMsIDEwNSwgMjA1LCAyNiwgMzcsIDYsIDEsIDIwOSwgMjMsIDI0MSwgCisgICAgMTc1LCAzNywgNCwgMSwgMjA5LCAyMywgMjQxLCAxNzUsIDM3LCA2LCAxLCAyMDksIDIzLCAyMzgsIDIwOSwgMzcsIDQsIDEsIAorICAgIDIwOSwgMjMsIDIzOCwgMjA5LCAzNywgNiwgMSwgMjA5LCAyMywgMjM4LCAxOTAsIDM3LCA0LCAxLCAyMDksIDIzLCAyMzgsIAorICAgIDE5MCwgMzcsIDYsIDEsIDIyMSwgOTksIDc0LCAzNywgNCwgMSwgMjIxLCA5OSwgNzQsIDM3LCA2LCAxLCAyNDgsIDE2NSwgCisgICAgNzQsIDM3LCA0LCAxLCAyNDgsIDE2NSwgNzQsIDM3LCA2LCAxLCA1MywgMjIxLCA5OSwgNzQsIDM3LCA0LCAxLCA1MywgMjIxLCAKKyAgICA5OSwgNzQsIDM3LCAxLCAyMjEsIDIyLCA3NCwgMzgsIDM3LCAyMDEsIDE0OSwgMzgsIDM3LCAyMDYsIDE2NywgMjIxLCAxNjgsIAorICAgIDU0LCAzOCwgMzcsIDIzMywgODMsIDIyMSwgMTY4LCA1NCwgMzgsIDM3LCAyMDYsIDUxLCAyMjEsIDE2OCwgNTQsIDIwOSwgCisgICAgNzMsIDI1MCwgMTY1LCAzOCwgMzcsIDEsIDIwNCwgMTcsIDIyOCwgMTc4LCAzOCwgMzcsIDEsIDcwLCAzOCwgMzcsIDEsIAorICAgIDIwMCwgOSwgMzgsIDM3LCAxLCA2NiwgMzgsIDM3LCAxLCAyMzQsIDE2NSwgNTQsIDM4LCAzNywgMSwgMjAwLCAyOSwgMzgsIAorICAgIDM3LCAxLCAyMDksIDIzLCA1NCwgMzgsIDM3LCAxLCAyMTcsIDgzLCAzOCwgMzcsIDIyNywgMjAsIDM4LCAzNywgMjE2LCA4MCwgCisgICAgMzcsIDIyNywgMjAsIDM3LCAyMTYsIDgwLCAzNywgNiwgMSwgMjM5LCAxMDMsIDM3LCA0LCAxLCAyMzksIDEwMywgMzcsIDYsIAorICAgIDEsIDIzOSwgNzksIDM3LCA0LCAxLCAyMzksIDc5LCAzNywgNiwgMSwgMTk5LCA0NCwgMzcsIDQsIDEsIDE5OSwgNDQsIDM3LCAKKyAgICA2LCAxLCAyNDcsIDkyLCAzNywgNCwgMSwgMjQ3LCA5MiwgMzcsIDYsIDEsIDIzOSwgNzYsIDM3LCA0LCAxLCAyMzksIDc2LCAKKyAgICAzNywgNiwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNCwgMSwgMjA2LCAyMDIsIDMsIDEwMSwgMTE3LCAzNywgNiwgCisgICAgMSwgMjA0LCAxNjgsIDM3LCA0LCAxLCAyMDQsIDE2OCwgMzcsIDYsIDEsIDIwNSwgMSwgMzcsIDQsIDEsIDIwNSwgMSwgMzcsIAorICAgIDYsIDEsIDIwNSwgNiwgMzcsIDQsIDEsIDIwNSwgNiwgMzcsIDYsIDEsIDIwNiwgMjA3LCAzNywgNCwgMSwgMjA2LCAyMDcsIAorICAgIDM3LCA2LCAxLCAyMzMsIDY1LCAzNywgNCwgMSwgMjMzLCA2NSwgMzcsIDYsIDEsIDIwOSwgMTk3LCAzNywgNCwgMSwgMjA5LCAKKyAgICAxOTcsIDM3LCA2LCAxLCA1MywgNzQsIDM3LCA0LCAxLCA1MywgNzQsIDM3LCA2LCAxLCAyNDIsIDIzMiwgNzQsIDM3LCA0LCAKKyAgICAxLCAyNDIsIDIzMiwgNzQsIDY3LCAxLCAzNywgMjM0LCAxNjUsIDU0LCA2NywgMSwgMzcsIDIwOSwgMjMsIDU0LCAzOCwgMzcsIAorICAgIDEsIDIzOCwgMjQ4LCAzOCwgMzcsIDEsIDIyOCwgMzksIDcyLCAyNSwgMSwgNjIsIDI1LCAxLCAxNjEsIDI1LCAxLCA2NiwgCisgICAgMjUsIDEsIDIyNiwgMTUsIDI1LCAxLCAyMzgsIDI1NSwgMjUsIDEsIDIxMywgMTY3LCAyNSwgMSwgMjA3LCAxNSwgMjUsIDEsIAorICAgIDc0LCAyNSwgMSwgMjE4LCA0MSwgMjUsIDEsIDcwLCAyNSwgMSwgMTk0LCAyNSwgMSwgMTcyLCAyNSwgMSwgMjEzLCAzMywgCisgICAgMjUsIDEsIDIxMywgODEsIDI1LCAxLCAyMjUsIDMxLCAyNSwgMSwgMjIyLCA2MywgMjUsIDEsIDIwNywgMzIsIDI1LCAxLCAKKyAgICAyMjAsIDczLCAyNSwgMSwgMjE5LCA5NiwgMjUsIDEsIDIyMywgMjQzLCAyNSwgMSwgMjA3LCAxOTMsIDI1LCAxLCAyMjEsIAorICAgIDQxLCAyNSwgMSwgMjEwLCAyOCwgMjUsIDEsIDIwOSwgMTgyLCAyNSwgMSwgMjEwLCAzOCwgMjUsIDEsIDIxMCwgMTM3LCAyNSwgCisgICAgMSwgMjI1LCAxOTksIDI1LCAxLCAyMjYsIDIzMywgMjUsIDEsIDIxOCwgMTA0LCAyNSwgMSwgMjE4LCAxMzMsIDI1LCAxLCAKKyAgICAyMTksIDY3LCAyNSwgMSwgMTk5LCAyMjcsIDI1LCAxLCAyMDksIDIyMCwgMjUsIDEsIDE5OSwgMTg1LCAyNSwgMSwgMTgzLCAKKyAgICAyNSwgMSwgMjE4LCAxNjcsIDI1LCAxLCAyMjYsIDIxOSwgMjUsIDEsIDIxNSwgMjQ5LCAyNSwgMSwgMjE5LCA4OSwgMjUsIDEsIAorICAgIDIxOCwgMTQ4LCAyNSwgMSwgMjE0LCAyMTYsIDI1LCAxLCAyMDAsIDIxMywgMjUsIDEsIDIxNiwgNjEsIDI1LCAxLCAyMzcsIAorICAgIDE0MCwgMjUsIDEsIDIxMiwgMTc1LCAyNSwgMSwgMjI0LCA0MiwgMjUsIDEsIDIyMSwgMjExLCAyNSwgMSwgMjE5LCAxNTAsIAorICAgIDI1LCAxLCAyMTMsIDEwNywgMjUsIDEsIDIxMywgMjM0LCAyNSwgMSwgMjI2LCAyNDMsIDI1LCAxLCAyMTksIDE4MSwgMjUsIAorICAgIDEsIDIxOSwgMjMyLCAyNSwgMSwgMjE5LCAyNTMsIDI1LCAxLCAyMTAsIDgsIDI1LCAxLCAyMTQsIDIyMSwgMjUsIDEsIDIzNiwgCisgICAgMTg5LCAyNSwgMSwgMjM3LCA2LCAyNSwgMSwgMjAxLCAxMTQsIDI1LCAxLCAxODgsIDI1LCAxLCAyMjQsIDIxMCwgMjUsIDEsIAorICAgIDIxNSwgMjA0LCAyNSwgMSwgMjI0LCA3MCwgMjUsIDEsIDIyNiwgODgsIDI1LCAxLCAyMjIsIDEwMCwgMjUsIDEsIDIxMywgCisgICAgMTM5LCAyNSwgMSwgMjIyLCA0MCwgMjUsIDEsIDE3OCwgMjUsIDEsIDIwNiwgMTUsIDI1LCAxLCAyMjYsIDE2MywgMjUsIDEsIAorICAgIDIyMSwgMTM2LCAyNSwgMSwgMjIyLCAxMDgsIDI1LCAxLCAyMDYsIDE0NiwgMjUsIDEsIDIyNiwgNTAsIDI1LCAxLCAyMDYsIAorICAgIDE2NiwgMjUsIDEsIDIxOCwgMTM1LCAyNSwgMSwgMjEyLCAyMSwgMjUsIDEsIDIzNywgMTkxLCAyNSwgMSwgMjI2LCA1MiwgCisgICAgMjUsIDEsIDIyNiwgODMsIDI1LCAzOCwgMTM0LCAyMjYsIDYxLCAyNSwgMzgsIDEzNCwgMjA0LCAyMDYsIDI1LCAyMTksIDk1LCAKKyAgICAyNSwgMjM2LCAxODMsIDIwOCwgNzYsIDI1LCAyNDYsIDc5LCAyNSwgMjQ2LCA3MCwgMjUsIDIxMCwgMTY3LCAyNSwgMjE0LCAKKyAgICA3OSwgODEsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAxOTksIDI1NSwgMjE1LCAxNTYsIDY3LCAxLCAyNDYsIDIyMiwgMTUwLCAKKyAgICAyMDAsIDc2LCAyMTUsIDE1NiwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTAsIDg4LCA2NywgMSwgMjQ2LCAKKyAgICAyMjIsIDE1MCwgMjAwLCA3NiwgMjEwLCA4OCwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTQsIDk3LCA2NywgCisgICAgMSwgMjQ2LCAyMjIsIDE1MCwgMjAwLCA3NiwgMjE0LCA5NywgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDE5OSwgMjU1LCAyMTIsIAorICAgIDE3NSwgNjcsIDEsIDI0NiwgMjIyLCAxNTAsIDIwMCwgNzYsIDIxMiwgMTc1LCA2NywgMSwgMjM4LCAyOSwgMjM5LCAxODAsIAorICAgIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMjEsIDIwNiwgMjM5LCAxODAsIDE1MCwgCisgICAgMTQ4LCA2NywgMSwgMTI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIDI4LCAyMzksIDE4MCwgMTUwLCAxNDgsIAorICAgIDY3LCAxLCAyMzgsIDI5LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjIsIDIzOSwgMTgwLCAyMjUsIAorICAgIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIyMSwgMjA2LCAyMzksIDE4MCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAxMjgsIAorICAgIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDIzOCwgMjgsIDIzOSwgMTgwLCAyMjUsIDIwLCAxNTAsIDE0OCwgCisgICAgNjcsIDEsIDIzOCwgMjksIDIyNSwgMjAsIDE1MCwgMTQ4LCA2NywgMSwgMTIyLCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIAorICAgIDIyMSwgMjA2LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDEyOCwgMjI1LCAyMCwgMTUwLCAxNDgsIDY3LCAxLCAyMzgsIAorICAgIDI4LCAyMjUsIDIwLCAxNTAsIDE0OCwgNjcsIDEsIDczLCA4MywgMTQ4LCA2NywgMSwgNzMsIDIwOSwgNzUsIDY3LCAxLCA3MywgCisgICAgMjMzLCAxNzcsIDE0OCwgNjcsIDEsIDIyNCwgNTQsIDUxLCAyNDMsIDE2LCAyNTEsIDcwLCA2NywgMSwgMjEzLCAyMjAsIAorICAgIDExNSwgNDgsIDY3LCAxLCAyMTMsIDIyMCwgMTI3LCA0OCwgNjcsIDEsIDIxMywgMjIwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIAorICAgIDIxMywgMjIwLCAyMjgsIDUwLCAyMzgsIDQzLCA4MSwgNjcsIDEsIDEyOCwgMjI4LCA1MCwgMjM4LCA0MywgODEsIDY3LCAxLCAKKyAgICAyMDgsIDU3LCAyNiwgMTIyLCAyMDUsIDE3NCwgNjcsIDEsIDIwOCwgNTcsIDI2LCAxMjgsIDIwNSwgMTc0LCA4LCA2LCAxLCAKKyAgICAyMzgsIDI0MywgMjUxLCAxNDIsIDgsIDQsIDEsIDIzOCwgMjQzLCAyNTEsIDE0MiwgOCwgNiwgMSwgMjM4LCAyNDMsIDI1MSwgCisgICAgMTcxLCA4LCA0LCAxLCAyMzgsIDI0MywgMjUxLCAxNzEsIDgsIDYsIDEsIDIzNCwgMTAzLCA4LCA0LCAxLCAyMzQsIDEwMywgCisgICAgOCwgNiwgMSwgMjA0LCAxMTQsIDgsIDQsIDEsIDIwNCwgMTE0LCA4LCA2LCAxLCAyMDUsIDEwMiwgOCwgNCwgMSwgMjA1LCAKKyAgICAxMDIsIDgsIDYsIDEsIDI0MiwgMjExLCA4LCA0LCAxLCAyNDIsIDIxMSwgOCwgNiwgMSwgMjQyLCAyMTIsIDMsIDI0NiwgNzAsIAorICAgIDgsIDQsIDEsIDI0MiwgMjEyLCAzLCAyNDYsIDcwLCA4LCAxLCA0LCA2LCAyMzgsIDUsIDgsIDEsIDQsIDYsIDIxMiwgMTIyLCAKKyAgICA4LCA2LCAxLCAyNTIsIDEzOCwgOCwgNCwgMSwgMjUyLCAxMzgsIDgsIDYsIDEsIDI1MSwgMzEsIDgsIDQsIDEsIDI1MSwgMzEsIAorICAgIDgsIDYsIDEsIDI1MCwgMTM5LCA4LCA0LCAxLCAyNTAsIDEzOSwgOCwgNiwgMSwgMjUwLCAxMjMsIDgsIDQsIDEsIDI1MCwgCisgICAgMTIzLCA4LCA2LCAxLCAyNTAsIDEyNCwgMywgMjMzLCAxNzcsIDE0OCwgOCwgNCwgMSwgMjUwLCAxMjQsIDMsIDIzMywgMTc3LCAKKyAgICAxNDgsIDgsIDYsIDEsIDI1MCwgMTEyLCA4LCA0LCAxLCAyNTAsIDExMiwgOCwgNiwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAKKyAgICAzLCAyNDAsIDE4MiwgOCwgNCwgMSwgMjEzLCAxMDUsIDI0NywgMjI0LCAzLCAyNDAsIDE4MiwgOCwgNiwgMSwgMjI3LCAxMTksIAorICAgIDMsIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgCisgICAgMSwgMjI3LCAxMTksIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIAorICAgIDk3LCA4LCA0LCAxLCAyMjcsIDExOSwgMywgMjA4LCA0NywgMjYsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyNDgsIDQ2LCAKKyAgICAxNTYsIDgsIDQsIDEsIDI0OCwgNDYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIDEyMiwgOTcsIDgsIDQsIDEsIDIyNSwgCisgICAgMTkzLCAzLCAxMjIsIDk3LCA4LCA2LCAxLCAxNjMsIDMsIDE2OCwgMjA4LCA0NywgMjE2LCAyNDIsIDgsIDQsIDEsIDE2MywgCisgICAgMywgMTY4LCAyMDgsIDQ3LCAyMTYsIDI0MiwgOCwgNiwgMSwgMTYzLCAzLCAyMjQsIDc0LCA4LCA0LCAxLCAxNjMsIDMsIAorICAgIDIyNCwgNzQsIDgsIDYsIDEsIDIxNywgNjMsIDgsIDQsIDEsIDIxNywgNjMsIDgsIDYsIDEsIDIxNiwgMjI3LCAzLCAyMDgsIAorICAgIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCAKKyAgICA4LCA2LCAxLCAyMTYsIDIyNywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjE2LCAyMjcsIDMsIDIzNywgMjYsIDgsIDYsIDEsIAorICAgIDIxNiwgMjI3LCAzLCAyMDgsIDE4NSwgMjA3LCA2LCA4LCA0LCAxLCAyMTYsIDIyNywgMywgMjA4LCAxODUsIDIwNywgNiwgOCwgCisgICAgNiwgMSwgMjE0LCAxNjgsIDMsIDIwOCwgNDcsIDIwNiwgMzgsIDI0MSwgMTE5LCA4LCA0LCAxLCAyMTQsIDE2OCwgMywgMjA4LCAKKyAgICA0NywgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIxNCwgMTY4LCAzLCAyNDEsIDcxLCA5NywgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjgsIDMsIDI0MSwgNzEsIDk3LCA4LCA2LCAxLCAyMTQsIDMzLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjE0LCAzMywgMjEyLCAKKyAgICAyMjIsIDgsIDYsIDEsIDIxMiwgMTYyLCAyMTIsIDIyMiwgOCwgNCwgMSwgMjEyLCAxNjIsIDIxMiwgMjIyLCA4LCA2LCAxLCAKKyAgICAyMDMsIDE2OSwgMywgMjQxLCA3MSwgOTcsIDgsIDQsIDEsIDIwMywgMTY5LCAzLCAyNDEsIDcxLCA5NywgOCwgNiwgMSwgCisgICAgMjAxLCAxNTUsIDgsIDQsIDEsIDIwMSwgMTU1LCA4LCA2LCAxLCAyMDIsIDIwMSwgMTk5LCAxNTcsIDgsIDQsIDEsIDIwMiwgCisgICAgMjAxLCAxOTksIDE1NywgOCwgNiwgMSwgMjA2LCA1NSwgMywgOTcsIDgsIDQsIDEsIDIwNiwgNTUsIDMsIDk3LCA4LCA2LCAxLCAKKyAgICAyMDYsIDU1LCAzLCAyMDgsIDQ3LCAyMDYsIDM4LCAyNDEsIDExOSwgOCwgNCwgMSwgMjA2LCA1NSwgMywgMjA4LCA0NywgCisgICAgMjA2LCAzOCwgMjQxLCAxMTksIDgsIDYsIDEsIDIwMywgNDksIDgsIDQsIDEsIDIwMywgNDksIDgsIDYsIDEsIDIzOCwgODEsIAorICAgIDgsIDQsIDEsIDIzOCwgODEsIDgsIDYsIDEsIDIyOCwgMjYsIDgsIDQsIDEsIDIyOCwgMjYsIDgsIDYsIDEsIDI0MywgNjgsIAorICAgIDgsIDQsIDEsIDI0MywgNjgsIDY3LCAxLCAyMDMsIDE5NywgOCwgNCwgMSwgMjM5LCAxMjYsIDgsIDQsIDEsIDIyNCwgMjUsIAorICAgIDgsIDQsIDEsIDIyMSwgMTUsIDgsIDQsIDEsIDIxOCwgOTYsIDgsIDQsIDEsIDIxMiwgMTYxLCA4LCAxLCA0LCA2LCAyMTIsIAorICAgIDE2MSwgOCwgNCwgMSwgMjA0LCAyMDMsIDgsIDQsIDEsIDIwNCwgMTIsIDgsIDYsIDEsIDIyOCwgNzEsIDI0MiwgMTUzLCA4LCAKKyAgICA0LCAxLCAyMjgsIDcxLCAyNDIsIDE1MywgOCwgNiwgMSwgMjI4LCA3MSwgMjM4LCA1LCA4LCA0LCAxLCAyMjgsIDcxLCAyMzgsIAorICAgIDUsIDgsIDYsIDEsIDIyOCwgNzEsIDIzNiwgMTU2LCA4LCA2LCAxLCAyMDQsIDE4NSwgMjI4LCA3MSwgMjM2LCAxNTYsIDgsIAorICAgIDQsIDEsIDIwNCwgMTg1LCAyMjgsIDcxLCAyMzYsIDE1NiwgOCwgNiwgMSwgMjA0LCAxODUsIDE1NiwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE1NiwgOCwgNiwgMSwgMjI4LCA3MSwgMTQ2LCA4LCA0LCAxLCAyMjgsIDcxLCAxNDYsIDgsIDYsIDEsIDIyOCwgNzEsIAorICAgIDIxMiwgMTIyLCA4LCA0LCAxLCAyMjgsIDcxLCAyMTIsIDEyMiwgOCwgNiwgMSwgMjI4LCA3MSwgMjA3LCA4MywgOCwgNCwgMSwgCisgICAgMjI4LCA3MSwgMjA3LCA4MywgNjcsIDEsIDEyOCwgMjQ2LCAxNDcsIDI1MSwgMjUxLCA2NywgMSwgMjQ2LCA3OSwgNjcsIDEsIAorICAgIDIwOSwgMjUwLCAyMzgsIDEyMiwgNTQsIDgsIDYsIDEsIDIxMiwgMjUsIDgsIDQsIDEsIDIxMiwgMjUsIDgsIDYsIDEsIDIwNCwgCisgICAgMTg1LCAyMzQsIDI0NywgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIxMywgMTExLCAyMzMsIDE4NywgMjYsIDI0OCwgMjI2LCA4LCAKKyAgICAxLCAyMDksIDEzMiwgMjQwLCAxODIsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyNDEsIDExOSwgOCwgNCwgMSwgMjIwLCAyMTUsIAorICAgIDMsIDI0MSwgMTE5LCA4LCA2LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAxLCAyNDcsIDIyNCwgMywgMTQ4LCA4LCA0LCAKKyAgICAxLCAyNDcsIDIyNCwgMywgMjE2LCAxODQsIDExNywgOCwgNCwgMSwgMjM0LCAyNDgsIDMsIDIxNiwgMTg0LCAxMTcsIDgsIDYsIAorICAgIDEsIDY4LCAzLCAyMzcsIDI2LCA4LCA0LCAxLCA2OCwgMywgMjM3LCAyNiwgOCwgNiwgMSwgMjM4LCA2LCAzLCA5NywgOCwgNCwgCisgICAgMSwgMjM4LCA2LCAzLCA5NywgOCwgNiwgMSwgMjAyLCAxODUsIDI1MSwgMjIxLCA4LCA0LCAxLCAyMDIsIDE4NSwgMjUxLCAKKyAgICAyMjEsIDgsIDYsIDEsIDIwMiwgMTg1LCAyMTcsIDEyMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIxNywgMTIxLCA4LCA2LCAxLCAKKyAgICAyMDIsIDE4NSwgMjA0LCAzMSwgOCwgNCwgMSwgMjAyLCAxODUsIDIwNCwgMzEsIDgsIDYsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIzNiwgMTU3LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyNywgMTE5LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyNywgMTE5LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIAorICAgIDEzOCwgOTcsIDgsIDQsIDEsIDIyMCwgMjE1LCAzLCAyMTcsIDEzOCwgOTcsIDgsIDYsIDEsIDIxNCwgMzMsIDMsIDIxNywgCisgICAgMTM4LCA5NywgOCwgNCwgMSwgMjE0LCAzMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMTIsIDEyMywgMywgMjE3LCAKKyAgICAxMzgsIDk3LCA4LCA0LCAxLCAyMTIsIDEyMywgMywgMjE3LCAxMzgsIDk3LCA4LCA2LCAxLCAyMzQsIDI0OCwgMywgMTE3LCAKKyAgICA4LCA2LCAxLCAyMTMsIDEwNSwgMTc2LCA3MiwgOCwgNiwgMSwgMTM1LCAyMzYsIDE1NiwgOCwgNiwgMSwgMjI1LCAxOTMsIDMsIAorICAgIDI0OCwgMjI2LCA4LCA2LCAxLCA0LCA2LCA3MCwgOCwgNiwgMSwgMjA0LCAxODUsIDIyNywgMTE4LCA4LCA2LCAxLCAyMDQsIAorICAgIDE4NSwgMjA3LCA4MywgOCwgNiwgMSwgMjI3LCAyNTIsIDMsIDI0MiwgMjMwLCA4LCA2LCAxLCAyNDYsIDIzNiwgOCwgNiwgMSwgCisgICAgMjQ4LCAyMDgsIDgsIDQsIDEsIDI0OCwgMjA4LCA4LCA2LCAxLCAyMTcsIDgzLCA4LCA0LCAxLCAyMTcsIDgzLCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjA5LCAxNzMsIDcwLCA2NywgMSwgNiwgMjM0LCAyNDgsIDMsIDk3LCA2NywgMSwgNCwgMzMsIDIxNywgMTIxLCAKKyAgICA4LCAxLCA0LCA2LCAyMDQsIDE4NSwgMjIzLCAyNDMsIDgsIDIzOCwgMTI3LCAxLCAyMTMsIDEwNSwgMjM4LCA1LCA4LCAyMzgsIAorICAgIDEyNywgMSwgMjEzLCAxMDUsIDIxNiwgMjI2LCA4LCAyMzgsIDEyNywgMSwgMjI4LCA1MCwgMjIzLCAyNDMsIDgsIDIzOCwgCisgICAgMTI3LCAxLCAyMzMsIDE5LCAyMjQsIDgwLCA4LCAyMzgsIDEyNywgMSwgMjUwLCAyMzQsIDIyMywgMjQzLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDYyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzOSwgCisgICAgMTA1LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDcyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDc0LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIsIDIzNCwgMTU5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNiwgCisgICAgODgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjI2LCAxNzgsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxMTYsIAorICAgIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjM1LCAxNzEsIDIwNywgMTYzLCAyMjAsIDE0NSwgMiwgMjUxLCAzMywgMjA3LCAKKyAgICAxNjMsIDIyMCwgMTQ1LCAxLCAyNDYsIDkxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0NiwgMjEwLCAyMDcsIDE2MywgCisgICAgMjIwLCAxNDUsIDEsIDIyNywgMTY2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNywgMjA5LCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDEsIDIwNCwgMjMwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwNCwgMjM2LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIAorICAgIDI0MSwgMTkwLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgMTk5LCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDEzOCwgCisgICAgMjA3LCAxNjMsIDIyMCwgMTQ1LCAxLCAyMDYsIDYxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDI0MCwgMjExLCAyMDcsIAorICAgIDE2MywgMjIwLCAxNDUsIDEsIDI0MSwgODAsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE4LCAyNDEsIDIwNywgMTYzLCAKKyAgICAyMjAsIDE0NSwgMSwgMjE1LCAxMDYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjE1LCAyMTcsIDIwNywgMTYzLCAyMjAsIAorICAgIDE0NSwgMSwgMjQ4LCAxMjQsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjQ4LCAxOTIsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgCisgICAgMjIxLCAxMzYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMSwgMjEzLCAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIyNCwgMTEwLCAKKyAgICAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIxMiwgMjAxLCAyMDcsIDE2MywgMjIwLCAxNDUsIDEsIDIwOSwgMjksIDIwNywgCisgICAgMTYzLCAyMjAsIDE0NSwgMSwgMjMzLCAyMDcsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIDYyLCAyMDcsIDE2MywgMjIwLCAKKyAgICAxNDUsIDIyLCAyLCA3MCwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMiwgMiwgNjYsIDIwNywgMTYzLCAyMjAsIDE0NSwgMjIsIDIsIAorICAgIDcyLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIyLCAyLCAyMTcsIDYzLCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAKKyAgICAyMjIsIDE0OSwgMjA3LCAxNjMsIDIyMCwgMTQ1LCAyMTUsIDEwMSwgMjIyLCAxNDgsIDIwNywgMTYzLCAyMjAsIDE0NSwgCisgICAgMjE1LCAxMDEsIDIyMiwgMTQ3LCAyMDcsIDE2MywgMjIwLCAxNDUsIDIxNSwgMTAxLCAyMjIsIDE0NiwgMTU3LCAyMjgsIAorICAgIDEwMSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMTU3LCAyMjgsIDEwMSwgMjM2LCAyMTksIDExMiwgMjM0LCAyMTMsIDE1NywgCisgICAgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMjYsIDIxNCwgODUsIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIwOSwgOTgsIAorICAgIDE1NywgMjI4LCAxMDEsIDIzNiwgMjE5LCAxMTIsIDIzOCwgMjI3LCAxNTcsIDIyOCwgMTAxLCAyMzYsIDIxOSwgMTI2LCAKKyAgICAyMDksIDk3LCAxNTcsIDIyOCwgMTAxLCAyMTQsIDg4LCA4MSwgMTU3LCAyMjgsIDEwMSwgMjE1LCAxMzMsIDgxLCAxNTcsIAorICAgIDIyOCwgMTAxLCAyMTIsIDE0OSwgODEsIDE1NywgMjI4LCAxMDEsIDIxNCwgODksIDgxLCAyMTUsIDI0MSwgMSwgMTYxLCAKKyAgICAyMTUsIDI0MSwgMSwgMjI2LCAyMDcsIDIxNSwgMjQxLCAxLCAyMzYsIDg5LCAyMTUsIDI0MSwgMSwgMjE5LCAyNTMsIDIxNSwgCisgICAgMjQxLCAxLCAyNDcsIDE5MCwgMjE1LCAyNDEsIDEsIDI0NywgMzcsIDIxNSwgMjQxLCAxLCAyMjcsIDI0OCwgMjE1LCAyNDEsIAorICAgIDEsIDIxOCwgNjAsIDIxNSwgMjQxLCAxLCAyMDcsIDM2LCAyMTUsIDI0MSwgMSwgMjA2LCAxMjIsIDIxNSwgMjQxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTUsIDI0MSwgMSwgMTg4LCAyMTUsIDI0MSwgMSwgMTcyLCAyMTUsIDI0MSwgMSwgMjE1LCAyNDUsIDIxNSwgCisgICAgMjQxLCAxLCAyNDksIDEzNiwgMjE1LCAyNDEsIDEsIDE3OCwgMjE1LCAyNDEsIDEsIDIwNSwgMzIsIDIxNSwgMjQxLCAxLCAKKyAgICAyMDUsIDIyLCAyMTUsIDI0MSwgMSwgMjM5LCA5MywgMjE1LCAyNDEsIDEsIDIwMSwgMTE0LCAyMTUsIDI0MSwgMSwgMTk5LCAKKyAgICA3NywgMjE1LCAyNDEsIDEsIDE5OSwgMTE0LCAyMTUsIDI0MSwgMSwgNCwgNjIsIDIxNSwgMjQxLCAxLCAxODMsIDIxNSwgCisgICAgMjQxLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDE5NCwgMjE1LCAyNDEsIDEsIDIxMCwgMTE0LCAyMTUsIDI0MSwgMSwgCisgICAgMjEyLCA2NCwgMjE1LCAyNDEsIDEsIDE0NCwgMjE1LCAyNDEsIDEsIDYyLCAyMTUsIDI0MSwgMSwgNzAsIDIxNSwgMjQxLCAxLCAKKyAgICA2NiwgMjE1LCAyNDEsIDEsIDcyLCAyMTUsIDI0MSwgMSwgNzQsIDIxNSwgMjQxLCAxLCAyMTQsIDE1OSwgMjE1LCAyNDEsIDEsIAorICAgIDIwMCwgMTgxLCAyMTUsIDI0MSwgMSwgMjM3LCAxOTUsIDIxNSwgMjQxLCAxLCAyMzUsIDIzNSwgMjE1LCAyNDEsIDEsIDIzOCwgCisgICAgMjU1LCAyMTUsIDI0MSwgMjA4LCAxMiwgMSwgMjAxLCAxMTQsIDIxNSwgMjQxLCAyMDgsIDEyLCAxLCAxODMsIDIxNSwgMjQxLCAKKyAgICAxLCAyMDQsIDI1MywgMjE1LCAyNDEsIDEsIDIwNCwgMjQxLCAyMTUsIDI0MSwgMSwgMjQxLCAyMjAsIDIxNSwgMjQxLCAxLCAKKyAgICAyMTksIDIxLCAyMTUsIDI0MSwgMSwgMjUxLCAxMDksIDE4MywgMjE1LCAyNDEsIDEsIDIwMiwgMTg4LCAyMTAsIDExNCwgCisgICAgMjE1LCAyNDEsIDEsIDIwMiwgMTg5LCAxNDQsIDIxNSwgMjQxLCAxLCAyNTAsIDE3MiwgMjM3LCAxOTUsIDIxNSwgMjQxLCAKKyAgICAyMDgsIDEyLCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDIwNywgMjE1LCAxLCAyMTMsIDI1MiwgMjE1LCAyNDEsIDEsIDI0NywgCisgICAgMTQ5LCAyMTUsIDI0MSwgMjA5LCAxMzksIDIzNCwgMTM3LCA4MSwgMjE1LCAyNDEsIDUzLCAyMzQsIDEzNywgODEsIDIxNSwgCisgICAgMjQxLCAxMzQsIDIxMCwgMTA2LCAyMTUsIDI0MSwgMTM0LCA1MywgMjEwLCAxMDYsIDIxMSwgMjQxLCAyLCAyNTEsIDMzLCAKKyAgICAyMTEsIDI0MSwgMiwgMjAyLCAyMDMsIDIxMSwgMjQxLCAxLCA2MiwgMjExLCAyNDEsIDEsIDI1MiwgMTM4LCAyMTEsIDI0MSwgCisgICAgMSwgNzAsIDIxMSwgMjQxLCAxLCAyMjgsIDE1MSwgMjExLCAyNDEsIDEsIDY2LCAyMTEsIDI0MSwgMSwgMjAzLCAxODIsIAorICAgIDIxMSwgMjQxLCAxLCAxMDksIDE0NiwgMjExLCAyNDEsIDEsIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAxLCAxMDksIDE1NiwgCisgICAgMjExLCAyNDEsIDEsIDEwOSwgMjI0LCAxMzksIDIxMSwgMjQxLCAxLCA3MiwgMjExLCAyNDEsIDEsIDIzOCwgMjU1LCAyMTEsIAorICAgIDI0MSwgMSwgMjUxLCAxNzYsIDIxMSwgMjQxLCAxLCA3NCwgMjExLCAyNDEsIDEsIDIxNywgNjMsIDIxMSwgMjQxLCAxLCAKKyAgICAyNTAsIDEzOSwgMjExLCAyNDEsIDEsIDE2MSwgMjExLCAyNDEsIDEsIDIyNiwgMjA3LCAyMTEsIDI0MSwgMSwgMjM2LCA4OSwgCisgICAgMjExLCAyNDEsIDEsIDIzNSwgMTk5LCAyMTEsIDI0MSwgMSwgMjE5LCAyNTMsIDIxMSwgMjQxLCAxLCAyNDcsIDE5MCwgMjExLCAKKyAgICAyNDEsIDEsIDI0NywgMzcsIDIxMSwgMjQxLCAxLCAyMjcsIDI0OCwgMjExLCAyNDEsIDEsIDIyNywgMjE1LCAyMTEsIDI0MSwgCisgICAgMSwgMjE4LCA2MCwgMjExLCAyNDEsIDEsIDIwNCwgMjUzLCAyMTEsIDI0MSwgMSwgMjA0LCAyNDEsIDIxMSwgMjQxLCAxLCAKKyAgICAyNDEsIDIyMCwgMjExLCAyNDEsIDEsIDI0MSwgMjA0LCAyMTEsIDI0MSwgMSwgMjE5LCAyMSwgMjExLCAyNDEsIDEsIDIwNywgCisgICAgMzYsIDIxMSwgMjQxLCAxLCAyMDYsIDEyMiwgMjExLCAyNDEsIDEsIDI0MiwgNTgsIDIxMSwgMjQxLCAxLCAyNDEsIDEwMCwgCisgICAgMjExLCAyNDEsIDEsIDE4OCwgMjExLCAyNDEsIDEsIDE3MiwgMjExLCAyNDEsIDEsIDIxNSwgMjQ1LCAyMTEsIDI0MSwgMSwgCisgICAgMjQ5LCAxMzYsIDIxMSwgMjQxLCAxLCAyNDgsIDIwMCwgMjExLCAyNDEsIDEsIDE3OCwgMjExLCAyNDEsIDEsIDE4MywgMjExLCAKKyAgICAyNDEsIDEsIDIxMywgMjUyLCAyMTEsIDI0MSwgMSwgMTk0LCAyMTEsIDI0MSwgMSwgMjAzLCA5MCwgMjExLCAyNDEsIDEsIAorICAgIDIxMCwgMTE0LCAyMTEsIDI0MSwgMSwgMjA4LCAxNzksIDIxMSwgMjQxLCAxLCAyMTIsIDY0LCAyMTEsIDI0MSwgMSwgMTQ0LCAKKyAgICAyMTEsIDI0MSwgMSwgMjI0LCAxMzgsIDIxMSwgMjQxLCAxMTEsIDIsIDIzNCwgMjMxLCAyMTEsIDI0MSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMTEsIDI0MSwgMjIsIDIsIDcwLCAyMTEsIDI0MSwgMjIsIDIsIDIyOCwgMTUxLCAyMTEsIDI0MSwgMjIsIDIsIDY2LCAKKyAgICAyMTEsIDI0MSwgMjIsIDIsIDIwMywgMTgyLCAyMTEsIDI0MSwgMjIsIDIsIDEwOSwgMTQ2LCAyMTEsIDI0MSwgMjIsIDIsIAorICAgIDEwOSwgMjEyLCAyMTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAxNTYsIDIxMSwgMjQxLCAyMiwgMiwgMTA5LCAyMjQsIDEzOSwgCisgICAgMjExLCAyNDEsIDIyLCAyLCA3MiwgMjExLCAyNDEsIDIyLCAyLCAyMzgsIDI1NSwgMjExLCAyNDEsIDIyLCAyLCAyNTEsIAorICAgIDE3NiwgMjExLCAyNDEsIDIyLCAyLCA3NCwgMjExLCAyNDEsIDIyLCAyLCAyMTcsIDYzLCAyMTEsIDI0MSwgMjIsIDIsIDI1MCwgCisgICAgMTM5LCAyMTEsIDI0MSwgMiwgMjAyLCAyMDgsIDIxMSwgMjQxLCAyLCAyNDcsIDE0OSwgMjExLCAyNDEsIDI0MiwgMTAsIAorICAgIDIxMSwgMjQxLCA1MywgMjQyLCAxMCwgMjExLCAyNDEsIDE3LCAxOTksIDgxLCAyMTEsIDI0MSwgMTcsIDEwMiwgMjExLCAKKyAgICAyNDEsIDE3LCAxMDUsIDIxMSwgMjQxLCAxNywgMTQ3LCAyMTEsIDI0MSwgMTcsIDE0OSwgMjExLCAyNDEsIDE3LCAxNjQsIAorICAgIDIxMSwgMjQxLCAxNywgMTg3LCAyMTEsIDI0MSwgMTcsIDIxMCwgMTM1LCAyMTEsIDI0MSwgMTcsIDE5MiwgMjExLCAyNDEsIAorICAgIDE3LCAyMTksIDExMywgMzgsIDk0LCAxNywgMTk5LCA4MSwgMzgsIDk0LCAxNywgMTAyLCAzOCwgOTQsIDE3LCAxMDUsIDM4LCAKKyAgICA5NCwgMTcsIDE0NywgMzgsIDk0LCAxNywgMTQ5LCAzOCwgOTQsIDE3LCAxNjQsIDM4LCA5NCwgMTcsIDE4NywgMzgsIDk0LCAKKyAgICAxNywgMjEwLCAxMzUsIDM4LCA5NCwgMTcsIDE5MiwgMzgsIDk0LCAxNywgMjE5LCAxMTMsIDM4LCA5NCwgMSwgNjIsIDM4LCAKKyAgICA5NCwgMSwgNjYsIDM4LCA5NCwgMSwgMTYxLCAzOCwgOTQsIDEsIDE4OCwgMzgsIDk0LCAxLCAxNzIsIDM4LCA5NCwgMSwgCisgICAgMjEzLCAyNTIsIDM4LCA5NCwgMSwgMjAyLCAyMzQsIDM4LCA5NCwgMiwgMjUwLCAxMjIsIDk0LCAyLCAyMDgsIDI0MywgMjQ3LCAKKyAgICAxNDksIDk0LCAyLCAyNDcsIDE1MCwgMjAyLCAyMDgsIDk0LCAyLCA1MywgMjQ3LCAxNTAsIDIwMiwgMjA4LCA5NCwgMiwgCisgICAgMjQ3LCAxNTAsIDEwNSwgOTQsIDIsIDI0NywgMTUwLCAxNDcsIDk0LCAyLCAyNDcsIDE1MCwgMjUwLCAxMjIsIDk0LCAyLCAKKyAgICAyMTQsIDE5NSwgOTQsIDIzNiwgNTMsIDIzNywgOTMsIDk0LCAyNDcsIDEyOSwgOTQsIDIzNCwgMTMwLCA5NCwgMiwgMjA5LCAKKyAgICAxNzcsIDk0LCAyMjcsIDI0MCwgMjE3LCA4NiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxOTksIDgxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMTcsIDEwMiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxMDUsIDIyNywgMTQsIDIyNCwgMjExLCAxNywgMTQ3LCAKKyAgICAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDE0OSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAxNjQsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAxNywgMTg3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIDIxMCwgMTM1LCAyMjcsIDE0LCAyMjQsIDIxMSwgMTcsIAorICAgIDE5MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDE3LCAyMTksIDExMywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE2MSwgMjI3LCAxNCwgCisgICAgMjI0LCAyMTEsIDEsIDIyNiwgMjA3LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjM2LCA4OSwgMjI3LCAxNCwgMjI0LCAyMTEsIAorICAgIDEsIDIxOSwgMjUzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjEyLCA2NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIxMCwgCisgICAgMTE0LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTk5LCAxMTQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTgsIDYwLCAyMjcsIAorICAgIDE0LCAyMjQsIDIxMSwgMSwgMjA3LCAzNiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIzMywgMTAxLCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMTg4LCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMTcyLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjE1LCAyNDUsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNzgsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyNDIsIDU4LCAyMjcsIDE0LCAyMjQsIAorICAgIDIxMSwgMSwgMjQ5LCAxMzYsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAyMTMsIDI1MiwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIAorICAgIDE4MywgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDE5NCwgMjI3LCAxNCwgMjI0LCAyMTEsIDEsIDIwMSwgMTE0LCAyMjcsIDE0LCAKKyAgICAyMjQsIDIxMSwgMSwgMjA2LCAxMjIsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAxNDQsIDIyNywgMTQsIDIyNCwgMjExLCAxLCAKKyAgICAyMDMsIDkwLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgMjQ3LCAxOTAsIDIyNywgMTQsIDIyNCwgMjExLCAxLCA2MiwgMjI3LCAKKyAgICAxNCwgMjI0LCAyMTEsIDEsIDIxNywgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMSwgNzAsIDIyNywgMTQsIDIyNCwgMjExLCAKKyAgICAxLCAyMTcsIDYzLCAyMjcsIDE0LCAyMjQsIDIxMSwgMjIsIDIwNCwgMzEsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNzIsIAorICAgIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgNjYsIDIyNywgMTQsIDIyNCwgMjExLCAyMiwgMjM4LCAyNTUsIDIyNywgMTQsIDIyNCwgCisgICAgMjExLCAyMiwgNzQsIDIyNywgMTQsIDIyNCwgMjExLCAxNTAsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgMTUwLCAKKyAgICAyNDcsIDE2NSwgMjI3LCAxNCwgMjI0LCAyMTEsIDE1MCwgMjQ3LCAxNjYsIDIxNSwgMTIxLCAyMjcsIDE0LCAyMjQsIDIxMSwgCisgICAgMiwgMjQyLCAxNzIsIDIyNywgMTQsIDIyNCwgMjExLCAyLCAyMDksIDE5MCwgMjEzLCAxNTEsIDEsIDE2MSwgMjEzLCAxNTEsIAorICAgIDEsIDIzNiwgODksIDIxMywgMTUxLCAxLCAyMTksIDI1MywgMjEzLCAxNTEsIDEsIDIwNywgMzYsIDIxMywgMTUxLCAxLCAKKyAgICAyNDIsIDU4LCAyMTMsIDE1MSwgMSwgMTg4LCAyMTMsIDE1MSwgMSwgMTcyLCAyMTMsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxMywgCisgICAgMTUxLCAxLCAxNzgsIDIxMywgMTUxLCAxLCAyNDcsIDE5MCwgMjEzLCAxNTEsIDEsIDIyNywgMjQ4LCAyMTMsIDE1MSwgMSwgCisgICAgMjE4LCA2MCwgMjEzLCAxNTEsIDEsIDIxMiwgNjQsIDIxMywgMTUxLCAxLCAyMTMsIDI1MiwgMjEzLCAxNTEsIDEsIDE5NCwgCisgICAgMjEzLCAxNTEsIDEsIDE4MywgMjEzLCAxNTEsIDEsIDIwMSwgMTE0LCAyMTMsIDE1MSwgMSwgMTQ0LCAyMTMsIDE1MSwgMSwgCisgICAgMjIyLCAxMTAsIDIxMywgMTUxLCAxLCAyMTksIDIzMiwgMjEzLCAxNTEsIDEsIDIyMCwgNzUsIDIxMywgMTUxLCAxLCAyMTgsIAorICAgIDI3LCAyMTMsIDE1MSwgMSwgNjIsIDIxMywgMTUxLCAyMiwgMiwgNzAsIDIxMywgMTUxLCAyMiwgMiwgNjYsIDIxMywgMTUxLCAKKyAgICAyMiwgMiwgNzIsIDIxMywgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDIxMywgMTUxLCAyMiwgMiwgNzQsIDIxMywgMTUxLCAyMiwgCisgICAgMiwgMjUwLCAxMzksIDIxMywgMTUxLCAyMiwgMiwgMjM4LCA2OSwgMjEzLCAxNTEsIDIyLCAyLCAyMzksIDI3LCAyMTMsIAorICAgIDE1MSwgMTExLCAyLCAyMTksIDI1NSwgMjEzLCAxNTEsIDExMSwgMiwgMjIwLCAyMTQsIDIxMywgMTUxLCAxMTEsIDIsIDE0NiwgCisgICAgMjEzLCAxNTEsIDExMSwgMiwgMjM0LCAyNDcsIDIxMywgMTUxLCAyMDIsIDIwOCwgMjEzLCAxNTEsIDIxMSwgMTkzLCA4MSwgCisgICAgMjksIDEyOSwgMjA1LCAyNDksIDI5LCAxMjksIDIwNSwgMjQ4LCAyOSwgMTI5LCAyMDUsIDI0NiwgMjksIDEyOSwgMjA1LCAKKyAgICAyNTEsIDI5LCAxMjksIDIxMywgNzMsIDI5LCAxMjksIDIxMywgNTcsIDI5LCAxMjksIDIxMywgNTIsIDI5LCAxMjksIDIxMywgCisgICAgNTQsIDI5LCAxMjksIDIxMywgNzAsIDI5LCAxMjksIDIxMywgNjMsIDI5LCAxMjksIDIxMywgNTYsIDI5LCAxMjksIDIxMywgCisgICAgNzUsIDI5LCAxMjksIDIxMywgNTgsIDI5LCAxMjksIDIxMywgNzcsIDI5LCAxMjksIDIxMywgNzQsIDI5LCAxMjksIDIyMSwgCisgICAgMTkzLCAyOSwgMTI5LCAyMjEsIDE4NCwgMjksIDEyOSwgMjIxLCAxODcsIDI5LCAxMjksIDIxNSwgMTc1LCAyOSwgMTI5LCAKKyAgICAyMTUsIDE4NiwgMjksIDEyOSwgMjE1LCAxODcsIDI5LCAxMjksIDIwOCwgMTYzLCAyOSwgMTI5LCAyMjgsIDE2NCwgMjksIAorICAgIDEyOSwgMjI4LCAxNzEsIDI5LCAxMjksIDIwOCwgMTc0LCAyOSwgMTI5LCAyMDgsIDE2MSwgMjksIDEyOSwgMjE1LCAyMjYsIAorICAgIDI5LCAxMjksIDIzNCwgNjEsIDI5LCAxMjksIDIwOCwgMTU4LCAyMjcsIDIzMywgMiwgMjE2LCAxNDEsIDIyNywgMjMzLCAyLCAKKyAgICAyNDcsIDczLCAyMjcsIDIzMywgMiwgMjI1LCA0OCwgMjI3LCAyMzMsIDIsIDIwMSwgMjEsIDIyNywgMjMzLCAxLCA2MiwgCisgICAgMjI3LCAyMzMsIDEsIDIzMywgMTksIDIyNywgMTgsIDIyNywgMjMzLCAxLCA3MCwgMjI3LCAyMzMsIDEsIDIyOCwgMTUxLCAKKyAgICAyMjcsIDIzMywgMSwgNjYsIDIyNywgMjMzLCAxLCAyMTYsIDIxMSwgMjQ3LCA0MywgMjI3LCAyMzMsIDEsIDIxOSwgMjU0LCAKKyAgICAyMjUsIDcsIDIyNywgMjMzLCAxLCAyMTksIDI1NCwgMjI1LCA4LCAyMTMsIDIwNSwgMjI3LCAyMzMsIDEsIDcyLCAyMjcsIAorICAgIDIzMywgMSwgMjUxLCAxNzYsIDIyNywgMjMzLCAxLCA3NCwgMjI3LCAyMzMsIDEsIDE2MSwgMjI3LCAyMzMsIDEsIDIyNywgCisgICAgMTA4LCAyMTEsIDI1MywgMjI3LCAyMzMsIDEsIDIyNywgMTA4LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMzYsIDg5LCAyMjcsIAorICAgIDIzMywgMSwgMjM2LCA5MCwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjE5LCAyNTMsIDIyNywgMjMzLCAxLCAyNDcsIDE5MCwgCisgICAgMjI3LCAyMzMsIDEsIDI0NywgMTkxLCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyMjcsIDI0OCwgMjI3LCAyMzMsIDEsIDIxOCwgCisgICAgNjEsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIyNywgMjQ5LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDIxOCwgNjAsIDIyNywgCisgICAgMjMzLCAxLCAyMDQsIDI1MywgMjI3LCAyMzMsIDEsIDIwNCwgMjU0LCAyMjIsIDIwMiwgMjI3LCAyMzMsIDEsIDI0MSwgMjIwLCAKKyAgICAyMjcsIDIzMywgMSwgMjQxLCAyMjEsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjIwLCAxNjIsIDIyMSwgMCwgMjI3LCAyMzMsIAorICAgIDEsIDIwNywgMzYsIDIyNywgMjMzLCAxLCAyMDcsIDM3LCAyMjEsIDAsIDIyNywgMjMzLCAxLCAyNDIsIDU4LCAyMjcsIDIzMywgCisgICAgMSwgMjQyLCA1OSwgMjIyLCAyMDIsIDIyNywgMjMzLCAxLCAxODgsIDIyNywgMjMzLCAxLCAxNzIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTYsIDIxMSwgMjIxLCAwLCAyMjcsIDIzMywgMSwgMjQ5LCAxMzYsIDIyNywgMjMzLCAxLCAyNDksIDEzNywgMjIxLCAwLCAKKyAgICAyMjcsIDIzMywgMSwgMTc4LCAyMjcsIDIzMywgMSwgMTgzLCAyMjcsIDIzMywgMSwgMjEzLCAyNTIsIDIyNywgMjMzLCAxLCAKKyAgICAyMTMsIDI1MywgMjUxLCAxODYsIDIyNywgMjMzLCAxLCAxOTQsIDIyNywgMjMzLCAxLCAyMDEsIDExNCwgMjI3LCAyMzMsIDEsIAorICAgIDIxMiwgNjUsIDIyMSwgMCwgMjI3LCAyMzMsIDEsIDIxMiwgNjUsIDIyMiwgMjAyLCAyMjcsIDIzMywgMSwgMjEyLCA2NCwgCisgICAgMjI3LCAyMzMsIDEsIDE0NCwgMjI3LCAyMzMsIDIsIDI0NywgNzQsIDIwNiwgMTY5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgCisgICAgMjI4LCAyMjcsIDIzMywgMjIsIDIsIDIwNSwgMTc5LCAyMjcsIDIzMywgMjIsIDIsIDIwMCwgMjEwLCAyMjcsIDIzMywgMjIsIAorICAgIDIsIDIwMCwgMjExLCAyMjIsIDUxLCAyMjcsIDIzMywgMjIsIDIsIDIwNywgMjM4LCAyMjcsIDIzMywgMjIsIDIsIDIwNywgCisgICAgMjM5LCAyMjIsIDM5LCAyMjcsIDIzMywgMjIsIDIsIDIwNiwgMjQ5LCAyMjcsIDIzMywgMjIsIDIsIDI0MSwgNiwgMjIwLCAKKyAgICAyNTUsIDIyNywgMjMzLCAyMiwgMiwgMjE2LCAzMCwgMjI3LCAyMzMsIDExMSwgMiwgMjI2LCAyMzYsIDIyNywgMjMzLCAxMTEsIAorICAgIDIsIDIxNiwgNDQsIDIyNywgMjMzLCAxMTEsIDIsIDI0NywgMTc1LCAyMjcsIDIzMywgMjE2LCAxNTQsIDIyNywgMjMzLCA0OSwgCisgICAgMjEzLCAxMjUsIDIyNywgMjMzLCA1MSwgMjEzLCAxMjUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjUxLCA3OCwgMjI3LCAyMzMsIAorICAgIDIxNiwgMjAwLCAyMjIsIDIyMCwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyMjQsIDI5LCAyMjcsIDIzMywgMjE2LCAyMDAsIDIwMSwgCisgICAgMTQsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE2LCAxNTUsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjI0LCAxNjgsIDIyNywgMjMzLCAKKyAgICAyMTYsIDIwMCwgMjI0LCAyMywgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIDIyOSwgMjI3LCAyMzMsIDIxNiwgMjAwLCAyNTEsIAorICAgIDIzMCwgMjUxLCAyMjksIDIyNywgMjMzLCAyMTYsIDIwMCwgMjE1LCAxNDQsIDIyNywgMjMzLCAyMDQsIDE4NSwgMjE2LCAKKyAgICAyMDAsIDIxNSwgMTQ0LCAyMjcsIDIzMywgMjE2LCAxNTAsIDIyNywgMjMzLCAxNywgMTk5LCA4MSwgMjI3LCAyMzMsIDE3LCAKKyAgICAxMDIsIDIyNywgMjMzLCAxNywgMTA1LCAyMjcsIDIzMywgMTcsIDE0NywgMjI3LCAyMzMsIDE3LCAxNDksIDIyNywgMjMzLCAKKyAgICAxNywgMTY0LCAyMjcsIDIzMywgMTcsIDE4NywgMjI3LCAyMzMsIDE3LCAyMTAsIDEzNSwgMjI3LCAyMzMsIDE3LCAxOTIsIAorICAgIDIyNywgMjMzLCAxNywgMjE5LCAxMTMsIDIyNywgMjMzLCAyMTYsIDIwMCwgMjA1LCAyMTUsIDIwNCwgMjAwLCAyMjcsIDIzMywgCisgICAgMjE2LCAyMDAsIDIyOCwgMjIsIDcxLCAxLCAyMTAsIDkwLCAyMzUsIDE5OSwgNzEsIDEsIDIxMCwgOTAsIDI0NywgMzcsIDcxLCAKKyAgICAxLCAyMTAsIDkwLCAyMjcsIDIxNSwgNzEsIDEsIDIxMCwgOTAsIDIxOSwgMjEsIDcxLCAxLCAyMTAsIDkwLCAyNDgsIDIwMCwgCisgICAgNzEsIDIsIDIxMCwgOTAsIDIxMSwgMjM5LCA3MSwgNjcsIDEsIDIxMCwgOTAsIDIxMywgMTY4LCA3MSwgMSwgNDYsIDIyNSwgCisgICAgMTQ4LCAyMTgsIDYwLCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMzcsIDE5NSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM2LCAKKyAgICA4OSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjM1LCAxOTksIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNywgMjQ4LCA3MSwgMSwgCisgICAgNDYsIDIyNSwgMTQ4LCAyMjcsIDIxNSwgNzEsIDEsIDQ2LCAyMjUsIDE0OCwgMjQxLCAyMjAsIDcxLCAxLCA0NiwgMjI1LCAKKyAgICAxNDgsIDI0MSwgMjA0LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyMTksIDIxLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMTk5LCAKKyAgICA4MSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwMiwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDEwNSwgNzEsIDQ2LCAyMjUsIAorICAgIDE0OCwgMTcsIDE0NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE0OSwgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDE2NCwgNzEsIAorICAgIDQ2LCAyMjUsIDE0OCwgMTcsIDE4NywgNzEsIDQ2LCAyMjUsIDE0OCwgMTcsIDIxMCwgMTM1LCA3MSwgNDYsIDIyNSwgMTQ4LCAKKyAgICAxNywgMTkyLCA3MSwgNDYsIDIyNSwgMTQ4LCAxNywgMjE5LCAxMTMsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDIyNCwgMTM4LCAKKyAgICA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDIsIDU4LCA3MSwgMSwgNDYsIDIyNSwgMTQ4LCAyNDEsIDEwMCwgNzEsIDEsIDQ2LCAKKyAgICAyMjUsIDE0OCwgMjQ5LCAxMzYsIDcxLCAxLCA0NiwgMjI1LCAxNDgsIDI0OCwgMjAwLCAyNDcsIDMwLCAxLCA2MiwgMjQ3LCAKKyAgICAzMCwgMSwgNzAsIDI0NywgMzAsIDEsIDY2LCAyNDcsIDMwLCAxLCA3MiwgMjQ3LCAzMCwgMSwgMjUxLCAxNzYsIDI0NywgMzAsIAorICAgIDEsIDc0LCAyNDcsIDMwLCAxLCAxNjEsIDI0NywgMzAsIDEsIDIyNiwgMjA3LCAyNDcsIDMwLCAxLCAyMzYsIDg5LCAyNDcsIAorICAgIDMwLCAxLCAyMzUsIDE5OSwgMjQ3LCAzMCwgMSwgMjE5LCAxNjIsIDI0NywgMzAsIDEsIDIxOSwgMjUzLCAyNDcsIDMwLCAxLCAKKyAgICAyNDcsIDM3LCAyNDcsIDMwLCAxLCAyNDYsIDIzOCwgMjQ3LCAzMCwgMSwgMjI3LCAyNDgsIDI0NywgMzAsIDEsIDIyNywgCisgICAgMjE1LCAyNDcsIDMwLCAxLCAyMTksIDE1MiwgMjQ3LCAzMCwgMSwgMjE5LCAxNTQsIDI0NywgMzAsIDEsIDIxOSwgMTUzLCAKKyAgICAyNDcsIDMwLCAxLCAyMDcsIDM2LCAyNDcsIDMwLCAxLCAyMDYsIDEyMiwgMjQ3LCAzMCwgMSwgMjQyLCA1OCwgMjQ3LCAzMCwgCisgICAgMSwgMjQxLCAxMDAsIDI0NywgMzAsIDEsIDIxOCwgMTAyLCAyNDcsIDMwLCAxLCAxODgsIDI0NywgMzAsIDEsIDI0MSwgMjIwLCAKKyAgICAyNDcsIDMwLCAxLCAxNzIsIDI0NywgMzAsIDEsIDIxNSwgNDcsIDI0NywgMzAsIDEsIDIxNSwgMjQ1LCAyNDcsIDMwLCAxLCAKKyAgICAyNDksIDEzNiwgMjQ3LCAzMCwgMSwgMjQ4LCAyMDAsIDI0NywgMzAsIDEsIDIyMSwgMzMsIDI0NywgMzAsIDEsIDE3OCwgCisgICAgMjQ3LCAzMCwgMSwgMjQ5LCA0NCwgMjQ3LCAzMCwgMSwgMTgzLCAyNDcsIDMwLCAxLCAyMTMsIDI1MiwgMjQ3LCAzMCwgMSwgCisgICAgMTk0LCAyNDcsIDMwLCAxLCAyMDMsIDkwLCAyNDcsIDMwLCAxLCAyMDgsIDE3OSwgMjQ3LCAzMCwgMSwgMjEyLCA2NCwgMjQ3LCAKKyAgICAzMCwgMSwgMTQ0LCAyNDcsIDMwLCAyMiwgMiwgMjUyLCAxMzgsIDI0NywgMzAsIDIyLCAyLCA3MCwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIyOCwgMTUxLCAyNDcsIDMwLCAyMiwgMiwgMjM4LCAyMzQsIDI0NywgMzAsIDIyLCAyLCA2NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDIxNywgMTIxLCAyNDcsIDMwLCAyMiwgMiwgNzQsIDI0NywgMzAsIDIyLCAyLCAyNTEsIDE3NiwgMjQ3LCAzMCwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAyNDcsIDMwLCAyMiwgMiwgMjA0LCAzMSwgMjQ3LCAzMCwgMTExLCAyLCAxODMsIDI0NywgMzAsIDExMSwgMiwgCisgICAgMjEzLCAyNTIsIDI0NywgMzAsIDExMSwgMiwgMTk0LCAyNDcsIDMwLCAxMTEsIDIsIDIwMSwgMTE0LCAyNDcsIDMwLCAxLCAKKyAgICA0NywgMjI3LCAxMTgsIDI0NywgMzAsIDEsIDQ3LCAyMzYsIDE1NiwgMjQ3LCAzMCwgMSwgNDcsIDIxOSwgMjU1LCAyNDcsIAorICAgIDMwLCAxMTEsIDIsIDQ3LCAyMTksIDI1NSwgMjQ3LCAzMCwgMSwgNDcsIDI0NywgMzgsIDI0NywgMzAsIDEsIDQ3LCAyMDcsIAorICAgIDgzLCAyNDcsIDMwLCAxLCA0NywgMjIwLCAyMTQsIDI0NywgMzAsIDEsIDQ3LCAyMTYsIDIyNiwgMjQ3LCAzMCwgMSwgNDcsIAorICAgIDIwMCwgMTIzLCAyNDcsIDMwLCAxLCA0NywgMTQ2LCAyNDcsIDMwLCAxLCA0NywgMTU2LCAyNDcsIDMwLCAxLCA0NywgMjA4LCAKKyAgICAxODIsIDI0NywgMzAsIDExMSwgMiwgNDcsIDIyMywgMjQzLCAyNDcsIDMwLCAxMTEsIDIsIDQ3LCAyMzQsIDI0NywgMjQ3LCAKKyAgICAzMCwgMTcsIDE5OSwgODEsIDI0NywgMzAsIDE3LCAxMDIsIDI0NywgMzAsIDE3LCAxMDUsIDI0NywgMzAsIDE3LCAxNDcsIAorICAgIDI0NywgMzAsIDE3LCAxNDksIDI0NywgMzAsIDE3LCAxNjQsIDI0NywgMzAsIDE3LCAxODcsIDI0NywgMzAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQ3LCAzMCwgMTcsIDE5MiwgMjQ3LCAzMCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMwLCAyMTQsIDIxMiwgMjA4LCAKKyAgICAyMTcsIDI0NywgMzAsIDIxNCwgMjEyLCAyNDIsIDEwLCAyNDcsIDMwLCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDI0NywgMzAsIAorICAgIDIxNCwgMjEyLCAyMDUsIDgzLCAyNDIsIDEwLCA3MSwgMSwgMjI2LCAyMDAsIDIzNiwgODksIDcxLCAxLCAyMjYsIDIwMCwgCisgICAgMjQ3LCAxOTAsIDcxLCAxLCAyMjYsIDIwMCwgMjQ3LCAzNywgNzEsIDEsIDIyNiwgMjAwLCAyMjcsIDI0OCwgNzEsIDEsIAorICAgIDIyNiwgMjAwLCAyMjcsIDIxNSwgNzEsIDEsIDIyNiwgMjAwLCAyMTgsIDYwLCA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjUzLCAKKyAgICA3MSwgMSwgMjI2LCAyMDAsIDIwNCwgMjQxLCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMjIwLCA3MSwgMSwgMjI2LCAyMDAsIAorICAgIDI0MSwgMjA0LCA3MSwgMSwgMjI2LCAyMDAsIDI0MSwgMTAwLCA3MSwgMSwgMjI2LCAyMDAsIDE4OCwgNzEsIDEsIDIyNiwgCisgICAgMjAwLCAyMTIsIDY0LCA3MSwgMSwgMjI2LCAyMDAsIDE0NCwgNzEsIDEsIDIyNiwgMjAwLCAyMzQsIDg0LCA3MSwgMSwgMjI2LCAKKyAgICAyMDAsIDIzNywgMTk1LCA3MSwgNjcsIDEsIDIyNiwgMjAwLCAyMTMsIDE2OCwgNzEsIDEsIDIyNiwgMjAwLCAyMDAsIDE4MSwgCisgICAgNzEsIDEsIDIyNiwgMjAwLCAxOTksIDExNCwgNzEsIDEsIDIyNiwgMjAwLCAyMTMsIDI1MiwgNzEsIDIyNCwgOTcsIDIyNiwgCisgICAgMjAwLCAyMTcsIDE0MywgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAyMTQsIDExMCwgNzEsIDIyNCwgOTcsIDIyNiwgMjAwLCAKKyAgICAyMzQsIDYsIDcxLCAxNiwgMjUxLCAxNjMsIDIzOCwgNDIsIDcxLCAxNiwgMjUxLCAxNjMsIDEwMiwgNzEsIDE2LCAyNTEsIAorICAgIDE2MywgMTA1LCA3MSwgMSwgMjUxLCAxNjMsIDIxMywgMjUyLCA3MSwgMiwgMjE2LCAxMzcsIDIyNywgNDQsIDIwNSwgMTc0LCAKKyAgICA3MSwgMiwgNDYsIDIyNSwgMTQ4LCAyMDUsIDE3MiwgNzEsIDIsIDQ2LCAyMjUsIDE0OCwgMjA1LCAxNjksIDcxLCAxLCAyMDksIAorICAgIDE5OCwgMjE2LCAxODEsIDI0NywgMzcsIDcxLCAxLCAyMDksIDE5OCwgMjE2LCAxODEsIDIxMCwgMTE0LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgMjI2LCA4OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgODgsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMjYsIDE3OCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIyNiwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI2LCAKKyAgICAxODcsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMjYsIDE4NywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIzNSwgMTE2LCA0NiwgCisgICAgMjAyLCAyMjQsIDEsIDEyMiwgMjM1LCAxMTYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMTksIDE3OCwgNDYsIDIwMiwgMjI0LCAKKyAgICAxLCAxMjIsIDIxOSwgMTc4LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjQ2LCA5MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIAorICAgIDI0NiwgOTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDYsIDIxMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0NiwgMjEwLCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjA5LCAyOSwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIwOSwgMjksIDQ2LCAyMDIsIAorICAgIDIyNCwgMSwgMTI4LCAyMTgsIDI2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE4LCAyNiwgNDYsIDIwMiwgMjI0LCAxLCAKKyAgICAxMjgsIDI0MCwgMjExLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjQwLCAyMTEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxMzgsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMDYsIDYxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIxOCwgMjQxLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgCisgICAgMjE4LCAyNDEsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyNDgsIDEyNCwgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDI0OCwgMTI0LCAKKyAgICA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjE1LCAxMDYsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAyMTUsIDEwNiwgNDYsIDIwMiwgCisgICAgMjI0LCAxLCAxMjgsIDIxNSwgMjE3LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjE1LCAyMTcsIDQ2LCAyMDIsIDIyNCwgMSwgCisgICAgMTI4LCAyMzcsIDEzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjM3LCAxMywgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIyMSwgCisgICAgMTM2LCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjIxLCAxMzYsIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAxOTksIDI0NSwgNDYsIAorICAgIDIwMiwgMjI0LCAxLCAxMjIsIDE5OSwgMjQ1LCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIAorICAgIDEsIDEyMiwgMjEzLCAxLCA0NiwgMjAyLCAyMjQsIDEsIDEyOCwgMjI0LCAxMTAsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCAKKyAgICAyMjQsIDExMCwgNDYsIDIwMiwgMjI0LCAxLCAxMjgsIDIwMiwgMTkzLCA0NiwgMjAyLCAyMjQsIDEsIDEyMiwgMjAyLCAxOTMsIAorICAgIDQ2LCAyMDIsIDIyNCwgMSwgMTI4LCAyMzMsIDIwNywgNDYsIDIwMiwgMjI0LCAxLCAxMjIsIDIzMywgMjA3LCA0NiwgMjAyLCAKKyAgICAyMjQsIDEsIDEyOCwgNzQsIDQ2LCAyMDIsIDIyNCwgMSwgMTIyLCA3NCwgNDYsIDIwMiwgMjI0LCAyMjIsIDE5OSwgMjI3LCAKKyAgICA2NCwgNDYsIDIwMiwgMjI0LCAyMiwgMjUyLCAxMzgsIDQ2LCAyMDIsIDIyNCwgMjIsIDcwLCA0NiwgMjAyLCAyMjQsIDIyLCAKKyAgICAyMDQsIDMxLCA0NiwgMjAyLCAyMjQsIDIyLCA2NiwgNDYsIDIwMiwgMjI0LCAyMiwgNzIsIDQ2LCAyMDIsIDIyNCwgMjIsIAorICAgIDc0LCA0NiwgMjAyLCAyMjQsIDIyMiwgMTk5LCAyMjYsIDE4MSwgNDYsIDIwMiwgMjI0LCAyMiwgMjMyLCAyNDAsIDQ2LCAKKyAgICAyMDIsIDIyNCwgMjIsIDIwNCwgMzAsIDQ2LCAyMDIsIDIyNCwgMjIsIDIwNCwgNDYsIDQ2LCAyMDIsIDIyNCwgMjIsIDI1MCwgCisgICAgMTM3LCA0NiwgMjAyLCAyMjQsIDIyLCAyNTAsIDExMiwgNDYsIDIwMiwgMjI0LCAyMiwgMjUxLCA4NSwgNDYsIDIwMiwgMjI0LCAKKyAgICAyMiwgMjUxLCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjM4LCAyMTYsIDQ2LCAyMDIsIDIyNCwgMTUwLCAKKyAgICAyMjIsIDE5OSwgMjE4LCAxMDEsIDQ2LCAyMDIsIDIyNCwgMTUwLCAyMjIsIDE5OSwgMjA2LCA2MSwgNDYsIDIwMiwgMjI0LCAKKyAgICAxNTAsIDIyMiwgMTk5LCAyMDksIDEyLCA0NiwgMjAyLCAyMjQsIDE2LCAyMjYsIDcxLCA0NiwgMjAyLCAyMjQsIDE2LCAyMTgsIAorICAgIDEwMSwgNDYsIDIwMiwgMjI0LCAxNiwgMjEyLCAyMywgNDYsIDIwMiwgMjI0LCAxNiwgMjMzLCAyMDgsIDIzMywgMjAyLCA0NiwgCisgICAgMjAyLCAyMjQsIDE2LCAyMjYsIDgxLCAyMjYsIDgwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCA3NCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0NywgMzcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTgsIDYwLCAKKyAgICAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjA0LCAyNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDQsIDI0MSwgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDEsIDI0MSwgMjIwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjQxLCAyMDQsIDIyMiwgNTgsIDIyMiwgMTE3LCAKKyAgICAxLCAyMTksIDIxLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEwLCAxMTQsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDgsIAorICAgIDE3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMjgsIDE1MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDEwMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTAsIAorICAgIDEzOSwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyNTIsIDk1LCAyMjIsIDU4LCAyMjIsIDExNywgMjQ2LCAyNTMsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAyNTEsIDE4MiwgMjI2LCAxNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAyNTEsIDYyLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgNSwgMjEzLCAxMzAsIDgxLCAyMjIsIDU4LCAyMjIsIDExNywgMjAwLCAyMzgsIDIxMywgMTMwLCA4MSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDIsIDIwMywgMjIyLCA1OCwgMjIyLCAxMTcsIDIwMiwgMjA4LCAzNCwgNSwgCisgICAgMjA0LCAyMzQsIDM0LCA1LCAyMDQsIDIzNywgMzQsIDUsIDIwNCwgMjQwLCAzNCwgNSwgMjA0LCAyMzgsIDM0LCA1LCAyMDQsIAorICAgIDIzOSwgMzQsIDUsIDIwNCwgMjM2LCAzNCwgNSwgMjQxLCAxOTgsIDM0LCA1LCAyNDEsIDIwMCwgMzQsIDUsIDI0MSwgMjAzLCAKKyAgICAzNCwgNSwgMjQxLCAyMDEsIDM0LCA1LCAyNDEsIDIwMiwgMzQsIDUsIDI0MSwgMTk5LCAzNCwgNSwgMjM5LCA4MCwgMzQsIDUsIAorICAgIDIzOSwgODQsIDM0LCA1LCAyMzksIDkyLCAzNCwgNSwgMjM5LCA4OSwgMzQsIDUsIDIzOSwgOTAsIDM0LCA1LCAyMzksIDgxLCAKKyAgICAzNCwgNSwgMjQ3LCA5MCwgMzQsIDUsIDI0NywgODQsIDM0LCA1LCAyNDcsIDg2LCAzNCwgNSwgMjQ3LCA4OSwgMzQsIDUsIAorICAgIDI0NywgODcsIDM0LCA1LCAyNDcsIDg4LCAzNCwgNSwgMjQ3LCA4NSwgMzQsIDUsIDI0OSwgNDQsIDM0LCA1LCAyNDksIDIzLCAKKyAgICAzNCwgNSwgMjQ5LCAzNSwgMzQsIDUsIDI0OSwgNDMsIDM0LCA1LCAyNDksIDM4LCAzNCwgNSwgMjQ5LCAzOSwgMzQsIDUsIAorICAgIDI0OSwgMjcsIDgsIDQsIDEsIDI0OSwgNzEsIDI1MSwgMTEyLCA4LCA0LCAxLCAzNSwgMjEzLCAxMDMsIDgsIDQsIDEsIDI0OCwgCisgICAgMTQwLCA3MiwgOCwgNCwgMSwgMjQ5LCA3MSwgNzIsIDgsIDQsIDEsIDE5NywgMywgMjM3LCAyNiwgOCwgNCwgMSwgMjI0LCAKKyAgICAyNDksIDIzOCwgNSwgOCwgNCwgMSwgMTM1LCAyMzYsIDE1NywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDIyNSwgMTkzLCAzLCAKKyAgICAyMjgsIDUwLCAyMjUsIDQ3LCAyMTIsIDEyMiwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDUzLCAxMDEsIDIwNSwgMjQwLCA4LCAKKyAgICA0LCAxLCAyMjUsIDE5MywgMywgMTAxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMjMsIDI0NCwgMywgMjQyLCAyMzAsIDgsIDQsIDEsIAorICAgIDIyMCwgMjE1LCAzLCAyNDIsIDIzMCwgOCwgNCwgMSwgMjM4LCAxNjYsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCAyNDgsIDE0MCwgCisgICAgNzQsIDgsIDQsIDEsIDI0OCwgMTQwLCAxNjMsIDMsIDk3LCA4LCA0LCAxLCAxNzYsIDE2MywgMywgOTcsIDgsIDQsIDEsIAorICAgIDIyOCwgNTAsIDIxNywgMTIxLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjE3LCAxMjIsIDMsIDk3LCA4LCA0LCAxLCAyMDQsIDE4NSwgCisgICAgMjE3LCAxMjIsIDMsIDIzMywgMTc3LCA5NywgOCwgNCwgMSwgMjA0LCAxODUsIDE2MywgMjE3LCA0OSwgOCwgNCwgMSwgMjA0LCAKKyAgICAxODUsIDE2MywgMjE3LCA1MCwgMywgOTcsIDgsIDQsIDEsIDIwOCwgODEsIDE0NiwgOCwgMSwgNCwgNiwgMjE0LCAzMywgMywgCisgICAgNTEsIDIyNSwgMTYsIDgsIDQsIDEsIDIxNCwgMzMsIDIwMSwgMywgMjM0LCAxNzcsIDgsIDQsIDEsIDUzLCAxNDYsIDgsIDQsIAorICAgIDEsIDIxNCwgMzMsIDMsIDI0MiwgMjMwLCA4LCA0LCAxLCA1MywgMjE0LCAzMywgMywgMjQyLCAyMzAsIDgsIDQsIDEsIDEzNSwgCisgICAgMTQ2LCA4LCA0LCAxLCAxMzUsIDIxNCwgMzMsIDMsIDIxMywgMjYsIDgsIDQsIDEsIDI0OSwgNjIsIDIzOCwgOTQsIDgsIDQsIAorICAgIDEsIDEwOCwgMywgMjA5LCAyNTAsIDUxLCAyMjUsIDE2LCA4LCA0LCAxLCAxMDgsIDI0OSwgNzcsIDMsIDIwOSwgMjUwLCA1MSwgCisgICAgMjI1LCAxNiwgOCwgNCwgMSwgMjA0LCAyMywgOCwgNCwgMSwgMjA0LCAxODUsIDIwNCwgMjMsIDgsIDQsIDEsIDEwOCwgMywgCisgICAgNDksIDExNywgOCwgNCwgMSwgMjQ2LCAyMzYsIDgsIDQsIDEsIDI0NiwgMjM3LCAzLCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAKKyAgICAxLCAyNDYsIDIzNywgMywgMTI4LCA0OSwgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTk2LCAzLCAxMjgsIDUxLCAyMTMsIAorICAgIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAxNiwgOCwgNCwgMSwgMjAwLCAxOTYsIDMsIDE2OCwgCisgICAgNDksIDIyNSwgMTcsIDI2LCAxMjgsIDUxLCAyMTMsIDI2LCA4LCA0LCAxLCAyMDAsIDE5NiwgMywgMTY4LCA0OSwgMjI1LCAKKyAgICAxNywgMywgMjEwLCAxNDksIDgsIDQsIDEsIDIwMCwgMTI0LCAzLCAyMDksIDI1MCwgNTEsIDIyNSwgMTYsIDY3LCAyNDgsIAorICAgIDU4LCAzLCAyMjgsIDUwLCAyNDgsIDU3LCA2NywgMSwgNCwgMjM0LCAxMDMsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMjI4LCAKKyAgICA1MCwgMjI1LCA0NywgMjEyLCAxMjIsIDY3LCAxLCA0LCAyMjUsIDE5MywgMywgMTAxLCAyMDUsIDI0MCwgNjcsIDEsIDQsIAorICAgIDEwOCwgMywgNDksIDExNywgOCwgNCwgMSwgMjEyLCAzOSwgMjAwLCA2NSwgOCwgNCwgMSwgMjI4LCAzOSwgNzIsIDgsIDQsIAorICAgIDEsIDE3NiwgMjE3LCAxMjEsIDgsIDQsIDEsIDIwMywgMjMyLCA4LCA0LCAxLCAyMjgsIDUwLCAyNTEsIDExMiwgMzEsIDEsIAorICAgIDQsIDYsIDIxNywgODMsIDkxLCA0LCAxLCA2MiwgOTEsIDQsIDEsIDcyLCA5MSwgNCwgMSwgNzAsIDkxLCA0LCAxLCA3NCwgCisgICAgOTEsIDQsIDEsIDY2LCA5MSwgNCwgMSwgMjAzLCAxNjgsIDkxLCA0LCAxLCAyMzYsIDg5LCA5MSwgNCwgMSwgMTYxLCA5MSwgCisgICAgNCwgMSwgMjM2LCAxNSwgOTEsIDQsIDEsIDIzNSwgMTYxLCA5MSwgNCwgMSwgMjM1LCAxMTYsIDkxLCA0LCAxLCAyMzUsIDUwLCAKKyAgICA5MSwgNCwgMSwgMjM1LCAxMiwgOTEsIDQsIDEsIDE0NCwgOTEsIDQsIDEsIDIzNCwgMTM5LCA5MSwgNCwgMSwgMjM0LCA3NSwgCisgICAgOTEsIDQsIDEsIDIzMywgMjA3LCA5MSwgNCwgMSwgMjMzLCA5NywgOTEsIDQsIDEsIDIzMywgNjksIDkxLCA0LCAxLCAxOTQsIAorICAgIDkxLCA0LCAxLCAyMjUsIDQwLCA5MSwgNCwgMSwgMjI0LCAyMTAsIDkxLCA0LCAxLCAyMjQsIDExMCwgOTEsIDQsIDEsIDIyNCwgCisgICAgNDIsIDkxLCA0LCAxLCAyMjQsIDExLCA5MSwgNCwgMSwgMTc4LCA5MSwgNCwgMSwgMjIyLCA3NiwgOTEsIDQsIDEsIDIyMSwgCisgICAgMjExLCA5MSwgNCwgMSwgMjIxLCAxMzYsIDkxLCA0LCAxLCAyMjEsIDQxLCA5MSwgNCwgMSwgMTg4LCA5MSwgNCwgMSwgMjMzLCAKKyAgICAyMzEsIDkxLCA0LCAxLCAyMjAsIDE0NCwgOTEsIDQsIDEsIDIyMCwgMzQsIDkxLCA0LCAxLCAyMTksIDE1MCwgOTEsIDQsIDEsIAorICAgIDIxOCwgMjQxLCA5MSwgNCwgMSwgMjE4LCAxMzMsIDkxLCA0LCAxLCAyMTgsIDcxLCA5MSwgNCwgMSwgMjE0LCA5NiwgOTEsIAorICAgIDQsIDEsIDIxNCwgODIsIDkxLCA0LCAxLCAyMTQsIDc1LCA5MSwgNCwgMSwgMjE0LCA2NiwgOTEsIDQsIDEsIDIxNCwgNTUsIAorICAgIDkxLCA0LCAxLCAyMTQsIDUzLCA5MSwgNCwgMSwgMjEyLCA2NCwgOTEsIDQsIDEsIDIxMiwgMTIyLCA5MSwgNCwgMSwgMjExLCAKKyAgICAyMDIsIDkxLCA0LCAxLCAyMDksIDE4MiwgOTEsIDQsIDEsIDIwOSwgMjksIDkxLCA0LCAxLCAyMDgsIDI0LCA5MSwgNCwgMSwgCisgICAgMjA3LCAxOTEsIDkxLCA0LCAxLCAyNDIsIDU4LCA5MSwgNCwgMSwgMjA3LCAzNiwgOTEsIDQsIDEsIDI0MSwgMTc1LCA5MSwgCisgICAgNCwgMSwgMjA2LCAyMDEsIDkxLCA0LCAxLCAyNDEsIDc2LCA5MSwgNCwgMSwgMjA2LCAxNSwgOTEsIDQsIDEsIDI0MCwgMjExLCAKKyAgICA5MSwgNCwgMSwgMjM5LCAxMzcsIDkxLCA0LCAxLCAyMzksIDEwNywgOTEsIDQsIDEsIDI0MCwgMjIyLCA5MSwgNCwgMSwgCisgICAgMjA1LCAyMDMsIDkxLCA0LCAxLCAyMDUsIDIwMiwgOTEsIDQsIDEsIDIwNSwgMTkxLCA5MSwgNCwgMSwgMjA1LCAxOTAsIDkxLCAKKyAgICA0LCAxLCAyMDUsIDE4OSwgOTEsIDQsIDEsIDIwNSwgMTg4LCA5MSwgNCwgMSwgMjA1LCAzMiwgOTEsIDQsIDEsIDIwNSwgMjYsIAorICAgIDkxLCA0LCAxLCAyMDUsIDExLCA5MSwgNCwgMSwgMjA1LCA5LCA5MSwgNCwgMSwgMjA1LCA1LCA5MSwgNCwgMSwgMjA1LCA0LCAKKyAgICA5MSwgNCwgMSwgMjAxLCAxMTQsIDkxLCA0LCAxLCAyMDEsIDY0LCA5MSwgNCwgMSwgMjAxLCAzMSwgOTEsIDQsIDEsIDIwMSwgCisgICAgMCwgOTEsIDQsIDEsIDIwMCwgMjE2LCA5MSwgNCwgMSwgMjAwLCAyMDMsIDkxLCA0LCAxLCAxODMsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAxLCAyMjYsIDc4LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjEyLCAyMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIAorICAgIDIyNSwgMTQ5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjIxLCAxNDcsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAxNzIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAxODgsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyNDYsIDIyOCwgMjIyLCA1OCwgMjIyLCAxMTcsIAorICAgIDEsIDIwNSwgMjQyLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjI2LCAxNzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTksIAorICAgIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNiwgNTMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMDEsIDEwOCwgMjIyLCAKKyAgICA1OCwgMjIyLCAxMTcsIDEsIDIwMCwgNzUsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDg5LCAyMjIsIDU4LCAyMjIsIAorICAgIDExNywgMSwgMjA0LCA1LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgNzAsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMTUsIDIzOSwgCisgICAgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI1MCwgMTUwLCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjM1LCAxMDksIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAxLCAyMjcsIDIxMywgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIxMywgMjI5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjQ5LCAxMzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjcsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgCisgICAgMzMsIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzUsIDE2OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDI0MSwgNzgsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyNDgsIDE5OCwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyNiwgNzksIDIyNCwgNzksIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxLCAyMjUsIDE1MCwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIyMSwgMTQ4LCAyMjQsIAorICAgIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgMSwgMjE2LCAyMTEsIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMjAsIAorICAgIDE2MiwgMjI0LCA3OSwgMjIyLCA1OCwgMjIyLCAxMTcsIDEsIDIwNSwgMjQzLCAyMjQsIDc5LCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMSwgMjE5LCAxNjksIDIyNCwgNzksIDIyMiwgNTgsIDIyMiwgMTE3LCAxLCAyMzMsIDE5LCAyMjQsIDc5LCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIxNywgNzYsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjI4LCAxMTUsIDIyMiwgNTgsIAorICAgIDIyMiwgMTE3LCAyMiwgMiwgMjUxLCA4MywgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDAsIDQwLCAyMjIsIDU4LCAKKyAgICAyMjIsIDExNywgMjIsIDIsIDIwOSwgMiwgMjIyLCA1OCwgMjIyLCAxMTcsIDIyLCAyLCAyMDQsIDIsIDIyMiwgNTgsIDIyMiwgCisgICAgMTE3LCAyMiwgMiwgMjQ2LCAyNTEsIDIyMiwgNTgsIDIyMiwgMTE3LCAyMiwgMiwgMjE4LCA4NiwgMjIyLCA1OCwgMjIyLCAKKyAgICAxMTcsIDI0NiwgMjUyLCAyMjIsIDU4LCAyMjIsIDExNywgMjI0LCAyNiwgMjI4LCAxLCAyMjIsIDU4LCAyMjIsIDExNywgCisgICAgMjUxLCAyLCAyMjgsIDEsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTk5LCA4MSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAKKyAgICAxMDIsIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTA1LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIDE0NywgMjIyLCA1OCwgCisgICAgMjIyLCAxMTcsIDE3LCAxNDksIDIyMiwgNTgsIDIyMiwgMTE3LCAxNywgMTY0LCAyMjIsIDU4LCAyMjIsIDExNywgMTcsIAorICAgIDE4NywgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAyMTAsIDEzNSwgMjIyLCA1OCwgMjIyLCAxMTcsIDE3LCAxOTIsIDIyMiwgCisgICAgNTgsIDIyMiwgMTE3LCAxNywgMjE5LCAxMTMsIDI5LCAxODEsIDIxNywgMjIzLCAyOSwgMTgxLCAyMTcsIDIyOCwgMjksIAorICAgIDE4MSwgMTk5LCAyNDQsIDI5LCAxODEsIDE5OSwgMjQzLCAyOSwgMTgxLCAxOTksIDI0MiwgMjksIDE4MSwgMjA0LCA5NiwgCisgICAgMjksIDE4MSwgMjA0LCAxMDAsIDI5LCAxODEsIDE5OSwgMjA5LCAyOSwgMTgxLCAxOTksIDIwNSwgMjksIDE4MSwgMjM4LCAKKyAgICA2OCwgMjksIDE4MSwgMjM4LCA2NiwgMjksIDE4MSwgMjM4LCA2NywgMjksIDE4MSwgMjM4LCA2NCwgMjksIDE4MSwgMjMzLCAKKyAgICA5LCAyOSwgMTgxLCAyMzMsIDgsIDI5LCAxODEsIDIzMywgNiwgMjksIDE4MSwgMjMzLCA3LCAyOSwgMTgxLCAyMzMsIDEyLCAKKyAgICAyOSwgMTgxLCAyMzMsIDUsIDI5LCAxODEsIDIzMywgNCwgMjksIDE4MSwgMjMzLCAxNCwgMjksIDE4MSwgMjUwLCAyNDQsIAorICAgIDI5LCAxODEsIDI1MCwgMjQzLCAyOSwgMTEwLCAyMTksIDEzNiwgMjksIDExMCwgMjE5LCAxNDIsIDI5LCAxMTAsIDIwOCwgCisgICAgMTYwLCAyOSwgMTEwLCAyMDgsIDE1OSwgMjksIDExMCwgMjA1LCAyNDgsIDI5LCAxMTAsIDIwNSwgMjQ2LCAyOSwgMTEwLCAKKyAgICAyMDUsIDI0NSwgMjksIDExMCwgMjA1LCAyNTEsIDI5LCAxMTAsIDIwNSwgMjUyLCAyOSwgMTEwLCAyMDUsIDI0NCwgMjksIAorICAgIDExMCwgMjEzLCA1NywgMjksIDExMCwgMjEzLCA3MiwgMjksIDExMCwgMjA4LCAxNjYsIDI5LCAxMTAsIDIxMywgNjksIDI5LCAKKyAgICAxMTAsIDIxMywgNTksIDI5LCAxMTAsIDIxMywgNjEsIDI5LCAxMTAsIDIxMywgNDgsIDI5LCAxMTAsIDIxMywgNDksIDI5LCAKKyAgICAxMTAsIDIyNywgNTAsIDI5LCAxMTAsIDIyMSwgMTkyLCAyOSwgMTEwLCAyMjEsIDE4NiwgMjksIDExMCwgMjA4LCAxNzAsIAorICAgIDI5LCAxMTAsIDIyMSwgMTg5LCAyOSwgMTEwLCAyMjEsIDE5NSwgMjksIDExMCwgMjE1LCAxNzEsIDI5LCAxMTAsIDIxNSwgCisgICAgMTgwLCAyOSwgMTEwLCAyMTUsIDE4NCwgMjksIDExMCwgMjA4LCAxNjgsIDI5LCAxMTAsIDIxNSwgMTc0LCAyOSwgMTEwLCAKKyAgICAyMTUsIDE4OCwgMjksIDExMCwgMjE1LCAxODksIDI5LCAxMTAsIDIwOSwgMTIxLCAyOSwgMTEwLCAyMDksIDEyNCwgMjksIAorICAgIDExMCwgMjA4LCAxNjQsIDI5LCAxMTAsIDIwOCwgMTYyLCAyOSwgMTEwLCAyMDksIDExOSwgMjksIDExMCwgMjA5LCAxMjcsIAorICAgIDI5LCAxMTAsIDIwOSwgMTI4LCAyOSwgMTEwLCAyMDksIDExMywgMjksIDExMCwgMjA5LCAxMjYsIDI5LCAxMTAsIDIxNiwgCisgICAgMTQ0LCAyOSwgMTEwLCAyMTYsIDE0NSwgMjksIDExMCwgMjAwLCAyNiwgMjksIDExMCwgMjAwLCAyNywgMjksIDExMCwgMjQ2LCAKKyAgICAxNjYsIDI5LCAxMTAsIDI0NiwgMTY1LCAyOSwgMTEwLCAyMDgsIDE3NSwgMjksIDExMCwgMjE1LCAyMjQsIDI5LCAxMTAsIAorICAgIDIxNSwgMjIzLCAxMiwgMTUsIDIzMCwgMTQyLCAxMiwgMTUsIDIzMCwgMTQxLCAxMiwgMTUsIDIzMCwgMTQwLCAxMiwgMTUsIAorICAgIDIzMCwgMTM5LCAxMiwgMTUsIDIzMCwgMTM4LCAxMiwgMTUsIDIzMCwgMTM3LCAxMiwgMTUsIDIzMCwgMTM2LCAxMiwgMTUsIAorICAgIDIzMCwgMTM1LCAxMiwgMTUsIDIzMCwgMTM0LCAxMiwgMTUsIDIzMCwgMTMzLCAxMiwgMTUsIDIzMCwgMTMyLCAxMiwgMTUsIAorICAgIDIzMCwgMTMxLCAxMiwgMTUsIDIzMCwgMTMwLCAxMiwgMTUsIDIzMCwgMTI5LCAxMiwgMTUsIDIzMCwgMTI4LCAxMiwgMTUsIAorICAgIDIzMCwgMTI3LCAxMiwgMTUsIDIzMCwgMTI2LCAxMiwgMTUsIDIzMCwgMTI1LCAxMiwgMTUsIDIzMCwgMTI0LCAxMiwgMTUsIAorICAgIDIzMCwgMTIzLCAxMiwgMTUsIDIzMCwgMTIyLCAxMiwgMTUsIDIzMCwgMTIxLCAxMiwgMTUsIDIzMCwgMTIwLCAxMiwgMTUsIAorICAgIDIzMCwgMTE5LCAxMiwgMTUsIDIzMCwgMTE4LCAxMiwgMTUsIDIzMCwgMTE3LCAxMiwgMTUsIDIzMCwgMTE2LCAxMiwgMTUsIAorICAgIDIzMCwgMTE1LCAxMiwgMTUsIDIzMCwgMTE0LCAxMiwgMTUsIDIzMCwgMTEzLCAxMiwgMTUsIDIzMCwgMTEyLCAxMiwgMTUsIAorICAgIDIzMCwgMTExLCAxMiwgMTUsIDIzMCwgMTEwLCAxMiwgMTUsIDIzMCwgMTA5LCAxMiwgMTUsIDIzMCwgMTA4LCAxMiwgMTUsIAorICAgIDIzMCwgMTA3LCAxMiwgMTUsIDIzMCwgMTA2LCAxMiwgMTUsIDIzMCwgMTA1LCAxMiwgMTUsIDIzMCwgMTA0LCAxMiwgMTUsIAorICAgIDIzMCwgMTAzLCAxMiwgMTUsIDIzMCwgMTAyLCAxMiwgMTUsIDIzMCwgMTAxLCAxMiwgMTUsIDIzMCwgMTAwLCAxMiwgMTUsIAorICAgIDIzMCwgOTksIDEyLCAxNSwgMjMwLCA5OCwgMTIsIDE1LCAyMzAsIDk3LCAxMiwgMTUsIDIzMCwgOTYsIDEyLCAxNSwgMjMwLCAKKyAgICA5NSwgMTIsIDE1LCAyMzAsIDk0LCAxMiwgMTUsIDIzMCwgOTMsIDEyLCAxNSwgMjMwLCA5MiwgMTIsIDE1LCAyMzAsIDkxLCAKKyAgICAxMiwgMTUsIDIzMCwgOTAsIDEyLCAxNSwgMjMwLCA4OSwgMTIsIDE1LCAyMzAsIDg4LCAxMiwgMTUsIDIzMCwgODcsIDEyLCAKKyAgICAxNSwgMjMwLCA4NiwgMTIsIDE1LCAyMzAsIDg1LCAxMiwgMTUsIDIzMCwgODQsIDEyLCAxNSwgMjMwLCA4MywgMTIsIDE1LCAKKyAgICAyMzAsIDgyLCAxMiwgMTUsIDIzMCwgODEsIDEyLCAxNSwgMjMwLCA4MCwgMTIsIDE1LCAyMzAsIDc5LCAxMiwgMTUsIDIzMCwgCisgICAgNzgsIDEyLCAxNSwgMjMwLCA3NywgMTIsIDE1LCAyMzAsIDc2LCAxMiwgMTUsIDIzMCwgNzUsIDEyLCAxNSwgMjMwLCA3NCwgCisgICAgMTIsIDE1LCAyMzAsIDczLCAxMiwgMTUsIDIzMCwgNzIsIDEyLCAxNSwgMjMwLCA3MSwgMTIsIDE1LCAyMzAsIDcwLCAxMiwgCisgICAgMTUsIDIzMCwgNjksIDEyLCAxNSwgMjMwLCA2OCwgMTIsIDE1LCAyMzAsIDY3LCAxMiwgMTUsIDIzMCwgNjYsIDEyLCAxNSwgCisgICAgMjMwLCA2NSwgMTIsIDE1LCAyMzAsIDY0LCAxMiwgMTUsIDIzMCwgNjMsIDEyLCAxNSwgMjMwLCA2MiwgMTIsIDE1LCAyMzAsIAorICAgIDYxLCAxMiwgMTUsIDIzMCwgNjAsIDEyLCAxNSwgMjMwLCA1OSwgMTIsIDE1LCAyMzAsIDU4LCAxMiwgMTUsIDIzMCwgNTcsIAorICAgIDEyLCAxNSwgMjMwLCA1NiwgMTIsIDE1LCAyMzAsIDU1LCAxMiwgMTUsIDIzMCwgNTQsIDEyLCAxNSwgMjMwLCA1MywgMTIsIAorICAgIDE1LCAyMzAsIDUyLCAxMiwgMTUsIDIzMCwgNTEsIDEyLCAxNSwgMjMwLCA1MCwgMTIsIDE1LCAyMzAsIDQ5LCAxMiwgMTUsIAorICAgIDIzMCwgNDgsIDEyLCAxNSwgMjMwLCA0NywgMTIsIDE1LCAyMzAsIDQ2LCAxMiwgMTUsIDIzMCwgNDUsIDEyLCAxNSwgMjMwLCAKKyAgICA0NCwgMTIsIDE1LCAyMzAsIDQzLCAxMiwgMTUsIDIzMCwgNDIsIDEyLCAxNSwgMjMwLCA0MSwgMTIsIDE1LCAyMzAsIDQwLCAKKyAgICAxMiwgMTUsIDIzMCwgMzksIDEyLCAxNSwgMjMwLCAzOCwgMTIsIDE1LCAyMzAsIDM3LCAxMiwgMTUsIDIzMCwgMzYsIDEyLCAKKyAgICAxNSwgMjMwLCAzNSwgMTIsIDE1LCAyMzAsIDM0LCAxMiwgMTUsIDIzMCwgMzMsIDEyLCAxNSwgMjMwLCAzMiwgMTIsIDE1LCAKKyAgICAyMzAsIDMxLCAxMiwgMTUsIDIzMCwgMzAsIDEyLCAxNSwgMjMwLCAyOSwgMTIsIDE1LCAyMzAsIDI4LCAxMiwgMTUsIDIzMCwgCisgICAgMjcsIDEyLCAxNSwgMjMwLCAyNiwgMTIsIDE1LCAyMzAsIDI1LCAxMiwgMTUsIDIzMCwgMjQsIDEyLCAxNSwgMjMwLCAyMywgCisgICAgMTIsIDE1LCAyMzAsIDIyLCAxMiwgMTUsIDIzMCwgMjEsIDEyLCAxNSwgMjMwLCAyMCwgMTIsIDE1LCAyMzAsIDE5LCAxMiwgCisgICAgMTUsIDIzMCwgMTgsIDEyLCAxNSwgMjMwLCAxNywgMTIsIDE1LCAyMzAsIDE2LCAxMiwgMTUsIDIzMCwgMTUsIDEyLCAxNSwgCisgICAgMjMwLCAxNCwgMTIsIDE1LCAyMzAsIDEzLCAxMiwgMTUsIDIzMCwgMTIsIDEyLCAxNSwgMjMwLCAxMSwgMTIsIDE1LCAyMzAsIAorICAgIDEwLCAxMiwgMTUsIDIzMCwgOSwgMTIsIDE1LCAyMzAsIDgsIDEyLCAxNSwgMjMwLCA3LCAxMiwgMTUsIDIzMCwgNiwgMTIsIAorICAgIDE1LCAyMzAsIDUsIDEyLCAxNSwgMjMwLCA0LCAxMiwgMTUsIDIzMCwgMywgMTIsIDE1LCAyMzAsIDIsIDEyLCAxNSwgMjMwLCAKKyAgICAxLCAxMiwgMTUsIDIzMCwgMCwgMTIsIDE1LCAyMjksIDI1NSwgMTIsIDE1LCAyMjksIDI1NCwgMTIsIDE1LCAyMjksIDI1MywgCisgICAgMTIsIDE1LCAyMjksIDI1MiwgMTIsIDE1LCAyMjksIDI1MSwgMTIsIDE1LCAyMjksIDI1MCwgMTIsIDE1LCAyMjksIDI0OSwgCisgICAgMTIsIDE1LCAyMjksIDI0OCwgMTIsIDE1LCAyMjksIDI0NywgMTIsIDE1LCAyMjksIDI0NiwgMTIsIDE1LCAyMjksIDI0NSwgCisgICAgMTIsIDE1LCAyMjksIDI0NCwgMTIsIDE1LCAyMjksIDI0MywgMTIsIDE1LCAyMjksIDI0MiwgMTIsIDE1LCAyMjksIDI0MSwgCisgICAgMTIsIDE1LCAyMjksIDI0MCwgMTIsIDE1LCAyMjksIDIzOSwgMTIsIDE1LCAyMjksIDIzOCwgMTIsIDE1LCAyMjksIDIzNywgCisgICAgMTIsIDE1LCAyMjksIDIzNiwgMTIsIDE1LCAyMjksIDIzNSwgMTIsIDE1LCAyMjksIDIzNCwgMTIsIDE1LCAyMjksIDIzMywgCisgICAgMTIsIDE1LCAyMjksIDIzMiwgMTIsIDE1LCAyMjksIDIzMSwgMTIsIDE1LCAyMjksIDIzMCwgMTIsIDE1LCAyMjksIDIyOSwgCisgICAgMTIsIDE1LCAyMjksIDIyOCwgMTIsIDE1LCAyMjksIDIyNywgMTIsIDE1LCAyMjksIDIyNiwgMTIsIDE1LCAyMjksIDIyNSwgCisgICAgMTIsIDE1LCAyMjksIDIyNCwgMTIsIDE1LCAyMjksIDIyMywgMTIsIDE1LCAyMjksIDIyMiwgMTIsIDE1LCAyMjksIDIyMSwgCisgICAgMTIsIDE1LCAyMjksIDIyMCwgMTIsIDE1LCAyMjksIDIxOSwgMTIsIDE1LCAyMjksIDIxOCwgMTIsIDE1LCAyMjksIDIxNywgCisgICAgMTIsIDE1LCAyMjksIDIxNiwgMTIsIDE1LCAyMjksIDIxNSwgMTIsIDE1LCAyMjksIDIxNCwgMTIsIDE1LCAyMjksIDIxMywgCisgICAgMTIsIDE1LCAyMjksIDIxMiwgMTIsIDE1LCAyMjksIDIxMSwgMTIsIDE1LCAyMjksIDIxMCwgMTIsIDE1LCAyMjksIDIwOSwgCisgICAgMTIsIDE1LCAyMjksIDIwOCwgMTIsIDE1LCAyMjksIDIwNywgMTIsIDE1LCAyMjksIDIwNiwgMTIsIDE1LCAyMjksIDIwNSwgCisgICAgMTIsIDE1LCAyMjksIDIwNCwgMTIsIDE1LCAyMjksIDIwMywgMTIsIDE1LCAyMjksIDIwMiwgMTIsIDE1LCAyMjksIDIwMSwgCisgICAgMTIsIDE1LCAyMjksIDIwMCwgMTIsIDE1LCAyMjksIDE5OSwgMTIsIDE1LCAyMjksIDE5OCwgMTIsIDE1LCAyMjksIDE5NywgCisgICAgMTIsIDE1LCAyMjksIDE5NiwgMTIsIDE1LCAyMjksIDE5NSwgMTIsIDE1LCAyMjksIDE5NCwgMTIsIDE1LCAyMjksIDE5MywgCisgICAgMTIsIDE1LCAyMjksIDE5MiwgMTIsIDE1LCAyMjksIDE5MSwgMTIsIDE1LCAyMjksIDE5MCwgMTIsIDE1LCAyMjksIDE4OSwgCisgICAgMTIsIDE1LCAyMjksIDE4OCwgMTIsIDE1LCAyMjksIDE4NywgMTIsIDE1LCAyMjksIDE4NiwgMTIsIDE1LCAyMjksIDE4NSwgCisgICAgMTIsIDE1LCAyMjksIDE4NCwgMTIsIDE1LCAyMjksIDE4MywgMTIsIDE1LCAyMjksIDE4MiwgMTIsIDE1LCAyMjksIDE4MSwgCisgICAgMTIsIDE1LCAyMjksIDE4MCwgMTIsIDE1LCAyMjksIDE3OSwgMTIsIDE1LCAyMjksIDE3OCwgMTIsIDE1LCAyMjksIDE3NywgCisgICAgMTIsIDE1LCAyMjksIDE3NiwgMTIsIDE1LCAyMjksIDE3NSwgMTIsIDE1LCAyMjksIDE3NCwgMTIsIDE1LCAyMjksIDE3MywgCisgICAgMTIsIDE1LCAyMjksIDE3MiwgMTIsIDE1LCAyMjksIDE3MSwgMTIsIDE1LCAyMjksIDE3MCwgMTIsIDE1LCAyMjksIDE2OSwgCisgICAgMTIsIDE1LCAyMjksIDE2OCwgMTIsIDE1LCAyMjksIDE2NywgMTIsIDE1LCAyMjksIDE2NiwgMTIsIDE1LCAyMjksIDE2NSwgCisgICAgMTIsIDE1LCAyMjksIDE2NCwgMTIsIDE1LCAyMjksIDE2MywgMTIsIDE1LCAyMjksIDE2MiwgMTIsIDE1LCAyMjksIDE2MSwgCisgICAgMTIsIDE1LCAyMjksIDE2MCwgMTIsIDE1LCAyMjksIDE1OSwgMTIsIDE1LCAyMjksIDE1OCwgMTIsIDE1LCAyMjksIDE1NywgCisgICAgMTIsIDE1LCAyMjksIDE1NiwgMTIsIDE1LCAyMjksIDE1NSwgMTIsIDE1LCAyMjksIDE1NCwgMTIsIDE1LCAyMjksIDE1MywgCisgICAgMTIsIDE1LCAyMjksIDE1MiwgMTIsIDE1LCAyMjksIDE1MSwgMTIsIDE1LCAyMjksIDE1MCwgMTIsIDE1LCAyMjksIDE0OSwgCisgICAgMTIsIDE1LCAyMjksIDE0OCwgMTIsIDE1LCAyMjksIDE0NywgMTIsIDE1LCAyMjksIDE0NiwgMTIsIDE1LCAyMjksIDE0NSwgCisgICAgMTIsIDE1LCAyMjksIDE0NCwgMTIsIDE1LCAyMjksIDE0MywgMTIsIDE1LCAyMjksIDE0MiwgMTIsIDE1LCAyMjksIDE0MSwgCisgICAgMTIsIDE1LCAyMjksIDE0MCwgMTIsIDE1LCAyMjksIDEzOSwgMTIsIDE1LCAyMjksIDEzOCwgMTIsIDE1LCAyMjksIDEzNywgCisgICAgMTIsIDE1LCAyMjksIDEzNiwgMTIsIDE1LCAyMjksIDEzNSwgMTIsIDE1LCAyMjksIDEzNCwgMTIsIDE1LCAyMjksIDEzMywgCisgICAgMTIsIDE1LCAyMjksIDEzMiwgMTIsIDE1LCAyMjksIDEzMSwgMTIsIDE1LCAyMjksIDEzMCwgMTIsIDE1LCAyMjksIDEyOSwgCisgICAgMTIsIDE1LCAyMjksIDEyOCwgMTIsIDE1LCAyMjksIDEyNywgMTIsIDE1LCAyMjksIDEyNiwgMTIsIDE1LCAyMjksIDEyNSwgCisgICAgMTIsIDE1LCAyMjksIDEyNCwgMTIsIDE1LCAyMjksIDEyMywgMTIsIDE1LCAyMjksIDEyMiwgMTIsIDE1LCAyMjksIDEyMSwgCisgICAgMTIsIDE1LCAyMjksIDEyMCwgMTIsIDE1LCAyMjksIDExOSwgMTIsIDE1LCAyMjksIDExOCwgMTIsIDE1LCAyMjksIDExNywgCisgICAgMTIsIDE1LCAyMjksIDExNiwgMTIsIDE1LCAyMjksIDExNSwgMTIsIDE1LCAyMjksIDExNCwgMTIsIDE1LCAyMjksIDExMywgCisgICAgMTIsIDE1LCAyMjksIDExMiwgMTIsIDE1LCAyMjksIDExMSwgMTIsIDE1LCAyMjksIDExMCwgMTIsIDE1LCAyMjksIDEwOSwgCisgICAgMTIsIDE1LCAyMjksIDEwOCwgMTIsIDE1LCAyMjksIDEwNywgMTIsIDE1LCAyMjksIDEwNiwgMTIsIDE1LCAyMjksIDEwNSwgCisgICAgMTIsIDE1LCAyMjksIDEwNCwgMTIsIDE1LCAyMjksIDEwMywgMTIsIDE1LCAyMjksIDEwMiwgMTIsIDE1LCAyMjksIDEwMSwgCisgICAgMTIsIDE1LCAyMjksIDEwMCwgMTIsIDE1LCAyMjksIDk5LCAxMiwgMTUsIDIyOSwgOTgsIDEyLCAxNSwgMjI5LCA5NywgMTIsIAorICAgIDE1LCAyMjksIDk2LCAxMiwgMTUsIDIyOSwgOTUsIDEyLCAxNSwgMjI5LCA5NCwgMTIsIDE1LCAyMjksIDkzLCAxMiwgMTUsIAorICAgIDIyOSwgOTIsIDEyLCAxNSwgMjI5LCA5MSwgMTIsIDE1LCAyMjksIDkwLCAxMiwgMTUsIDIyOSwgODksIDEyLCAxNSwgMjI5LCAKKyAgICA4OCwgMTIsIDE1LCAyMjksIDg3LCAxMiwgMTUsIDIyOSwgODYsIDEyLCAxNSwgMjI5LCA4NSwgMTIsIDE1LCAyMjksIDg0LCAKKyAgICAxMiwgMTUsIDIyOSwgODMsIDEyLCAxNSwgMjI5LCA4MiwgMTIsIDE1LCAyMjksIDgxLCAxMiwgMTUsIDIyOSwgODAsIDEyLCAKKyAgICAxNSwgMjI5LCA3OSwgMTIsIDE1LCAyMjksIDc4LCAxMiwgMTUsIDIyOSwgNzcsIDEyLCAxNSwgMjI5LCA3NiwgMTIsIDE1LCAKKyAgICAyMjksIDc1LCAxMiwgMTUsIDIyOSwgNzQsIDEyLCAxNSwgMjI5LCA3MywgMTIsIDE1LCAyMjksIDcyLCAxMiwgMTUsIDIyOSwgCisgICAgNzEsIDEyLCAxNSwgMjI5LCA3MCwgMTIsIDE1LCAyMjksIDY5LCAxMiwgMTUsIDIyOSwgNjgsIDEyLCAxNSwgMjI5LCA2NywgCisgICAgMTIsIDE1LCAyMjksIDY2LCAxMiwgMTUsIDIyOSwgNjUsIDEyLCAxNSwgMjI5LCA2NCwgMTIsIDE1LCAyMjksIDYzLCAxMiwgCisgICAgMTUsIDIyOSwgNjIsIDEyLCAxNSwgMjI5LCA2MSwgMTIsIDE1LCAyMjksIDYwLCAxMiwgMTUsIDIyOSwgNTksIDEyLCAxNSwgCisgICAgMjI5LCA1OCwgMTIsIDE1LCAyMjksIDU3LCAxMiwgMTUsIDIyOSwgNTYsIDEyLCAxNSwgMjI5LCA1NSwgMTIsIDE1LCAyMjksIAorICAgIDU0LCAxMiwgMTUsIDIyOSwgNTMsIDEyLCAxNSwgMjI5LCA1MiwgMTIsIDE1LCAyMjksIDUxLCAxMiwgMTUsIDIyOSwgNTAsIAorICAgIDEyLCAxNSwgMjI5LCA0OSwgMTIsIDE1LCAyMjksIDQ4LCAxMiwgMTUsIDIyOSwgNDcsIDEyLCAxNSwgMjI5LCA0NiwgMTIsIAorICAgIDE1LCAyMjksIDQ1LCAxMiwgMTUsIDIyOSwgNDQsIDEyLCAxNSwgMjI5LCA0MywgMTIsIDE1LCAyMjksIDQyLCAxMiwgMTUsIAorICAgIDIyOSwgNDEsIDEyLCAxNSwgMjI5LCA0MCwgMTIsIDE1LCAyMjksIDM5LCAxMiwgMTUsIDIyOSwgMzgsIDEyLCAxNSwgMjI5LCAKKyAgICAzNywgMTIsIDE1LCAyMjksIDM2LCAxMiwgMTUsIDIyOSwgMzUsIDEyLCAxNSwgMjI5LCAzNCwgMTIsIDE1LCAyMjksIDMzLCAKKyAgICAxMiwgMTUsIDIyOSwgMzIsIDEyLCAxNSwgMjI5LCAzMSwgMTIsIDE1LCAyMjksIDMwLCAxMiwgMTUsIDIyOSwgMjksIDEyLCAKKyAgICAxNSwgMjI5LCAyOCwgMTIsIDE1LCAyMjksIDI3LCAxMiwgMTUsIDIyOSwgMjYsIDEyLCAxNSwgMjI5LCAyNSwgMTIsIDE1LCAKKyAgICAyMjksIDI0LCAxMiwgMTUsIDIyOSwgMjMsIDEyLCAxNSwgMjI5LCAyMiwgMTIsIDE1LCAyMjksIDIxLCAxMiwgMTUsIDIyOSwgCisgICAgMjAsIDEyLCAxNSwgMjI5LCAxOSwgMTIsIDE1LCAyMjksIDE4LCAxMiwgMTUsIDIyOSwgMTcsIDEyLCAxNSwgMjI5LCAxNiwgCisgICAgMTIsIDE1LCAyMjksIDE1LCAxMiwgMTUsIDIyOSwgMTQsIDEyLCAxNSwgMjI5LCAxMywgMTIsIDE1LCAyMjksIDEyLCAxMiwgCisgICAgMTUsIDIyOSwgMTEsIDEyLCAxNSwgMjI5LCAxMCwgMTIsIDE1LCAyMjksIDksIDEyLCAxNSwgMjI5LCA4LCAxMiwgMTUsIAorICAgIDIyOSwgNywgMTIsIDE1LCAyMjksIDYsIDEyLCAxNSwgMjI5LCA1LCAxMiwgMTUsIDIyOSwgNCwgMTIsIDE1LCAyMjksIDMsIAorICAgIDEyLCAxNSwgMjI5LCAyLCAxMiwgMTUsIDIyOSwgMSwgMTIsIDE1LCAyMjksIDAsIDEyLCAxNSwgMjI4LCAyNTUsIDEyLCAxNSwgCisgICAgMjI4LCAyNTQsIDEyLCAxNSwgMjI4LCAyNTMsIDEyLCAxNSwgMjI4LCAyNTIsIDEyLCAxNSwgMjI4LCAyNTEsIDEyLCAxNSwgCisgICAgMjI4LCAyNTAsIDEyLCAxNSwgMjI4LCAyNDksIDEyLCAxNSwgMjI4LCAyNDgsIDEyLCAxNSwgMjI4LCAyNDcsIDEyLCAxNSwgCisgICAgMjI4LCAyNDYsIDEyLCAxNSwgMjI4LCAyNDUsIDEyLCAxNSwgMjI4LCAyNDQsIDEyLCAxNSwgMjI4LCAyNDMsIDEyLCAxNSwgCisgICAgMjI4LCAyNDIsIDEyLCAxNSwgMjI4LCAyNDEsIDEyLCAxNSwgMjI4LCAyNDAsIDEyLCAxNSwgMjI4LCAyMzksIDEyLCAxNSwgCisgICAgMjI4LCAyMzgsIDEyLCAxNSwgMjI4LCAyMzcsIDEyLCAxNSwgMjI4LCAyMzYsIDEyLCAxNSwgMjI4LCAyMzUsIDEyLCAxNSwgCisgICAgMjI4LCAyMzQsIDEyLCAxNSwgMjI4LCAyMzMsIDEyLCAxNSwgMjI4LCAyMzIsIDEyLCAxNSwgMjI4LCAyMzEsIDEyLCAxNSwgCisgICAgMjI4LCAyMzAsIDEyLCAxNSwgMjI4LCAyMjksIDEyLCAxNSwgMjI4LCAyMjgsIDEyLCAxNSwgMjI4LCAyMjcsIDEyLCAxNSwgCisgICAgMjI4LCAyMjYsIDEyLCAxNSwgMjI4LCAyMjUsIDEyLCAxNSwgMjI4LCAyMjQsIDEyLCAxNSwgMjI4LCAyMjMsIDEyLCAxNSwgCisgICAgMjI4LCAyMjIsIDEyLCAxNSwgMjI4LCAyMjEsIDEyLCAxNSwgMjI4LCAyMjAsIDEyLCAxNSwgMjI4LCAyMTksIDEyLCAxNSwgCisgICAgMjI4LCAyMTgsIDEyLCAxNSwgMjI4LCAyMTcsIDEyLCAxNSwgMjI4LCAyMTYsIDEyLCAxNSwgMjI4LCAyMTUsIDEyLCAxNSwgCisgICAgMjI4LCAyMTQsIDEyLCAxNSwgMjI4LCAyMTMsIDEyLCAxNSwgMjI4LCAyMTIsIDEyLCAxNSwgMjI4LCAyMTEsIDEyLCAxNSwgCisgICAgMjI4LCAyMTAsIDEyLCAxNSwgMjI4LCAyMDksIDEyLCAxNSwgMjI4LCAyMDgsIDEyLCAxNSwgMjI4LCAyMDcsIDEyLCAxNSwgCisgICAgMjI4LCAyMDYsIDEyLCAxNSwgMjI4LCAyMDUsIDEyLCAxNSwgMjI4LCAyMDQsIDEyLCAxNSwgMjI4LCAyMDMsIDEyLCAxNSwgCisgICAgMjI4LCAyMDIsIDEyLCAxNSwgMjI4LCAyMDEsIDEyLCAxNSwgMjI4LCAyMDAsIDEyLCAxNSwgMjI4LCAxOTksIDEyLCAxNSwgCisgICAgMjI4LCAxOTgsIDEyLCAxNSwgMjI4LCAxOTcsIDEyLCAxNSwgMjI4LCAxOTYsIDEyLCAxNSwgMjI4LCAxOTUsIDEyLCAxNSwgCisgICAgMjI4LCAxOTQsIDEyLCAxNSwgMjI4LCAxOTMsIDEyLCAxNSwgMjI4LCAxOTIsIDEyLCAxNSwgMjI4LCAxOTEsIDEyLCAxNSwgCisgICAgMjI4LCAxOTAsIDEyLCAxNSwgMjI4LCAxODksIDEyLCAxNSwgMjI4LCAxODgsIDEyLCAxNSwgMjI4LCAxODcsIDEyLCAxNSwgCisgICAgMjI4LCAxODYsIDEyLCAxNSwgMjI4LCAxODUsIDEyLCAxNSwgMjI4LCAxODQsIDEyLCAxNSwgMjI4LCAxODMsIDgsIDQsIDMzLCAKKyAgICAyMzcsIDExNiwgOCwgNCwgMzMsIDIzNywgMTEyLCA4LCA0LCAzMywgMjM3LCA1NiwgOCwgNCwgMzMsIDIzNywgMTE1LCA4LCAKKyAgICA0LCAzMywgMjM3LCAxMTQsIDgsIDQsIDMzLCAxNjgsIDIxMiwgMTIzLCAyMDcsIDgzLCA4LCA0LCAzMywgMjA4LCAxMjMsIAorICAgIDE4NCwgNCwgMzMsIDIyMiwgNDEsIDIxOCwgMjAxLCAxODQsIDQsIDMzLCAyMjIsIDQxLCAyMzksIDUsIDE4NCwgNCwgMzMsIAorICAgIDIyMiwgNDEsIDIyOCwgODYsIDE4NCwgNCwgMzMsIDIwMiwgMjM5LCAyMTgsIDIwMSwgMTg0LCA0LCAzMywgMjIyLCA0MSwgCisgICAgMjAwLCAxNzMsIDExMywgMSwgMTk5LCAyMzUsIDMsIDIzNCwgNDcsIDExMywgMjE1LCAxMDAsIDIyNywgMTQ2LCAyMDMsIDcxLCAKKyAgICAxMTMsIDMzLCAyMDAsIDcsIDE5OSwgMjM1LCAxOTksIDIzNSwgMjE2LCA5MywgMTEzLCAxLCAyNTEsIDEwNCwgMjUwLCAxMDcsIAorICAgIDExMywgMSwgMjAxLCAyOCwgMjUxLCAxNDIsIDExMywgMSwgMjAxLCAyOCwgMjQyLCAyMywgMTEzLCAxLCAyMDEsIDI4LCAKKyAgICAyMzQsIDEzOSwgMTEzLCAxLCAyMDEsIDI4LCAyMjcsIDg2LCAxMTMsIDEsIDIwMSwgMjgsIDIyNSwgODMsIDExMywgMSwgCisgICAgMjAxLCAyOCwgNDcsIDIyMiwgNDcsIDExMywgMSwgMjAxLCAyOCwgMjEzLCAxMjMsIDExMywgMSwgMjAxLCAyOCwgMjA2LCAKKyAgICAyMTcsIDExMywgMSwgMjUxLCAxMDQsIDkzLCA1NCwgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMTAsIDIyLCAyNDAsIDE4MiwgCisgICAgMTEzLCAxLCAyMTAsIDIyLCAzLCAyMDksIDE0MywgMjQwLCAxODIsIDExMywgMSwgMjEwLCAyMiwgMywgMjQyLCA0MywgMjYsIAorICAgIDIxMCwgMjIsIDI0MCwgMTgyLCAxMTMsIDEsIDIxMCwgMjIsIDMsIDI0MiwgNDMsIDI2LCAyMDksIDE0MywgMjQwLCAxODIsIAorICAgIDExMywgMSwgMTQwLCAzLCAyMTYsIDkzLCAxMTMsIDEsIDE0MCwgMywgMjE0LCAxNDcsIDExMywgMSwgMTQwLCAzLCAyMjIsIAorICAgIDE2MywgMTEzLCAxLCAyNDgsIDIxMSwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMzUsIDE0OCwgMywgMjQyLCA0MiwgMTEzLCAxLCAKKyAgICAyNDIsIDI0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIzNCwgMTQwLCAzLCAyMjIsIDE2MywgMTEzLCAxLCAyMDMsIDY0LCAzLCAKKyAgICAyNDIsIDQyLCAxMTMsIDEsIDE5OSwgOTMsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA2LCAxNDcsIDMsIDI0MiwgNDIsIDExMywgCisgICAgMSwgMTk5LCAyMzUsIDMsIDI0MiwgNDIsIDExMywgMSwgNDcsIDIyNywgODcsIDMsIDI0MiwgNDIsIDExMywgMSwgMjI3LCAKKyAgICA4NywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMjUsIDg0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIyMiwgNDgsIDMsIDI0MiwgNDIsIAorICAgIDExMywgMSwgMjE4LCA5MCwgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTIsIDIwLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDQ3LCAKKyAgICAyMTYsIDc0LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIxNiwgNzQsIDMsIDI0MiwgNDIsIDExMywgMSwgMjA1LCAyOCwgMywgCisgICAgMjQyLCA0MiwgMTEzLCAxLCAyMTQsIDEwNywgMywgMjQyLCA0MiwgMTEzLCAxLCAyMTMsIDEyNCwgMywgMjQyLCA0MiwgMTEzLCAKKyAgICAxLCAyMTAsIDIyLCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwNiwgMjE4LCAzLCAyNDIsIDQyLCAxMTMsIDEsIDIwMywgNjQsIDMsIAorICAgIDIzMywgMTk5LCAxMTMsIDEsIDI0OCwgMjExLCAzLCAyMTMsIDIzMiwgMTEzLCAxLCAyMjcsIDg3LCAzLCAyMTMsIDIzMiwgCisgICAgMTEzLCAxLCAyMTYsIDc0LCAzLCAyMTMsIDIzMiwgMTEzLCAzMywgMTQwLCAyMjUsIDgzLCA5LCAxLCAxNDAsIDIwMSwgOTAsIAorICAgIDY1LCAxOSwgOSwgMSwgMTQwLCAyMDEsIDkwLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA2NSwgMTksIDksIDEsIDI0OCwgCisgICAgMjUxLCA0NywgMTksIDksIDEsIDI0OCwgMjUxLCA4MiwgMTksIDksIDEsIDI0OCwgMjUxLCAxNzksIDE5LCA5LCAxLCAyMTYsIAorICAgIDU1LCA2NSwgMTksIDksIDEsIDIxNiwgNTUsIDQ3LCAxOSwgOSwgMSwgMjE2LCA1NSwgODIsIDE5LCA5LCAxLCAyMTYsIDU1LCAKKyAgICAxNzksIDE5LCA5LCAxLCAyNDgsIDIzOSwgNjUsIDE5LCA5LCAxLCAyNDgsIDIzOSwgNDcsIDE5LCA5LCAxLCAyNDgsIDIzOSwgCisgICAgODIsIDE5LCA5LCAxLCAyNDgsIDIzOSwgMTc5LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDY1LCAxOSwgOSwgMSwgMjA0LCAyNDQsIAorICAgIDQ3LCAxOSwgOSwgMSwgMjA0LCAyNDQsIDgyLCAxOSwgOSwgMSwgMjA0LCAyNDQsIDE3OSwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICA2NSwgMTksIDksIDEsIDIwNiwgMTgyLCA0NywgMTksIDksIDEsIDIwNiwgMTgyLCA4MiwgMTksIDksIDEsIDIwNiwgMTgyLCAKKyAgICAxNzksIDE5LCA5LCAxLCAyMDQsIDI0NiwgNjUsIDE5LCA5LCAxLCAyMDQsIDI0NiwgNDcsIDE5LCA5LCAxLCAyMDQsIDI0NiwgCisgICAgODIsIDE5LCA5LCAxLCAyMDQsIDI0NiwgMTc5LCAxOSwgOSwgMSwgMjAzLCA1MywgNjUsIDE5LCA5LCAxLCAyMDMsIDUzLCAKKyAgICA0NywgMTksIDksIDEsIDIwMywgNTMsIDgyLCAxOSwgOSwgMSwgMjAzLCA1MywgMTc5LCAxOSwgOSwgMSwgMjE2LCA1MywgNjUsIAorICAgIDE5LCA5LCAxLCAyMTYsIDUzLCA0NywgMTksIDksIDEsIDIxNiwgNTMsIDgyLCAxOSwgOSwgMSwgMjE2LCA1MywgMTc5LCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDY1LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDQ3LCAxOSwgOSwgMSwgMjM5LCAxMDAsIDgyLCAxOSwgCisgICAgOSwgMSwgMjM5LCAxMDAsIDE3OSwgMTksIDksIDEsIDIxOCwgNDgsIDY1LCAxOSwgOSwgMSwgMjE4LCA0OCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMTgsIDQ4LCA4MiwgMTksIDksIDEsIDIxOCwgNDgsIDE3OSwgMTksIDksIDEsIDIwNiwgMjA2LCA2NSwgMTksIDksIDEsIAorICAgIDIwNiwgMjA2LCA0NywgMTksIDksIDEsIDIwNiwgMjA2LCA4MiwgMTksIDksIDEsIDIwNiwgMjA2LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgNjUsIDE5LCA5LCAxLCAyMDYsIDIwNCwgNDcsIDE5LCA5LCAxLCAyMDYsIDIwNCwgODIsIDE5LCA5LCAxLCAKKyAgICAyMDYsIDIwNCwgMTc5LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDY1LCAxOSwgOSwgMSwgMjQxLCAyMTgsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjQyLCAzNywgNjUsIDE5LCA5LCAxLCAyNDIsIDM3LCA0NywgMTksIDksIDEsIDIzOSwgMTI4LCA2NSwgMTksIDksIDEsIAorICAgIDIzOSwgMTI4LCA0NywgMTksIDksIDEsIDI0MSwgMjE2LCA2NSwgMTksIDksIDEsIDI0MSwgMjE2LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgMjIyLCA2NSwgMTksIDksIDEsIDIyNywgMjIyLCA0NywgMTksIDksIDEsIDIxMiwgMjA4LCA2NSwgMTksIDksIDEsIAorICAgIDIxMiwgMjA4LCA0NywgMTksIDksIDEsIDIyNiwgMjUzLCA2NSwgMTksIDksIDEsIDIyNiwgMjUzLCA0NywgMTksIDksIDEsIAorICAgIDIyNiwgMjUzLCA4MiwgMTksIDksIDEsIDIyNiwgMjUzLCAxNzksIDE5LCA5LCAxLCAyMzYsIDc3LCA2NSwgMTksIDksIDEsIAorICAgIDIzNiwgNzcsIDQ3LCAxOSwgOSwgMSwgMjM2LCA3NywgODIsIDE5LCA5LCAxLCAyMzYsIDc3LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMzUsIDM4LCA2NSwgMTksIDksIDEsIDIzNSwgMzgsIDQ3LCAxOSwgOSwgMSwgMjM1LCAzOCwgODIsIDE5LCA5LCAxLCAyMzUsIAorICAgIDM4LCAxNzksIDE5LCA5LCAxLCAyMTksIDE3NywgNjUsIDE5LCA5LCAxLCAyMTksIDE3NywgNDcsIDE5LCA5LCAxLCAyMTksIAorICAgIDE3NywgODIsIDE5LCA5LCAxLCAyMTksIDE3NywgMTc5LCAxOSwgOSwgMSwgMjE4LCAyMjgsIDIzNSwgMTY2LCA2NSwgMTksIAorICAgIDksIDEsIDIxOCwgMjI4LCAyMzUsIDE2NiwgNDcsIDE5LCA5LCAxLCAyMTMsIDUsIDY1LCAxOSwgOSwgMSwgMjEzLCA1LCA0NywgCisgICAgMTksIDksIDEsIDIxMywgNSwgODIsIDE5LCA5LCAxLCAyMTMsIDUsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAzLCA5MCwgCisgICAgODgsIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDMsIDkwLCA4OCwgNDcsIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIAorICAgIDY1LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDIzNSwgMTE0LCA0NywgMTksIDksIDEsIDIzNCwgMTE2LCAyMzUsIDExNCwgODIsIAorICAgIDE5LCA5LCAxLCAyMzQsIDExNiwgMjM1LCAxMTQsIDE3OSwgMTksIDksIDEsIDIzNCwgMTE2LCAyNDAsIDIwOCwgNjUsIDE5LCAKKyAgICA5LCAxLCAyMzQsIDExNiwgMjQwLCAyMDgsIDQ3LCAxOSwgOSwgMSwgMjM0LCAxMTYsIDI0MCwgMjA4LCA4MiwgMTksIDksIDEsIAorICAgIDIzNCwgMTE2LCAyNDAsIDIwOCwgMTc5LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDY1LCAxOSwgOSwgMSwgOTAsIDI0OSwgCisgICAgNzAsIDQ3LCAxOSwgOSwgMSwgOTAsIDI0OSwgNzAsIDMsIDIzNCwgMjA0LCA4OCwgNjUsIDE5LCA5LCAxLCA5MCwgMjQ5LCAKKyAgICA3MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDE2LCA3MywgNTYsIDksIDE2LCA3MywgNTcsIDksIDE2LCAxMjAsIAorICAgIDE5MCwgNTYsIDksIDE2LCAxMjAsIDE5MCwgNTcsIDksIDE2LCAxMjYsIDE5MCwgNTYsIDksIDE2LCAxMjYsIDE5MCwgNTcsIAorICAgIDksIDE2LCAxMjYsIDE5MCwgMjE1LCA5NiwgMTkxLCA1NiwgOSwgMTYsIDEyNiwgMTkwLCAyMTUsIDk2LCAxOTEsIDU3LCA5LCAKKyAgICAxNiwgMjM2LCAyMjksIDE5MCwgNTYsIDksIDE2LCAyMzYsIDIyOSwgMTkwLCA1NywgOSwgMTYsIDUzLCA4MywgMjQ5LCA3NywgCisgICAgNTcsIDksIDE2LCAxMjAsIDE5MCwgMjAyLCAyNDgsIDU2LCA5LCAxNiwgMTIwLCAxOTAsIDIwMiwgMjQ4LCA1NywgOSwgMTYsIAorICAgIDIxMywgMjYsIDksIDE2LCA0LCAyMDcsIDEwLCA1NiwgOSwgMTYsIDQsIDIwNywgMTAsIDU3LCA5LCAxLCAyMjAsIDAsIDY1LCAKKyAgICAxOSwgOSwgMSwgMjIwLCAwLCA0NywgMTksIDksIDEsIDIyMCwgMCwgODIsIDE5LCA5LCAxLCAyMjAsIDAsIDE3OSwgMTksIDksIAorICAgIDEsIDEwOCwgNjUsIDE5LCA5LCAxLCAxMDgsIDQ3LCAxOSwgOSwgMSwgMjE3LCAxMjIsIDY1LCAxOSwgOSwgMSwgMjE3LCAKKyAgICAxMjIsIDQ3LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMSwgMTk5LCAyMTIsIDQ3LCAxOSwgOSwgMSwgMTA4LCAKKyAgICAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgMSwgMjAzLCA2MCwgNjUsIDE5LCA5LCAxLCAyMDMsIDYwLCA0NywgMTksIDksIAorICAgIDEsIDIyNiwgMTM5LCAyMTcsIDEyMiwgNjUsIDE5LCA5LCAxLCAyMjYsIDEzOSwgMjE3LCAxMjIsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjI2LCAxMzksIDE5OSwgMjEyLCA2NSwgMTksIDksIDEsIDIyNiwgMTM5LCAxOTksIDIxMiwgNDcsIDE5LCA5LCAxLCAxOTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMTk3LCA0NywgMTksIDksIDEsIDE5NywgODIsIDE5LCA5LCAxLCAxOTcsIDE3OSwgMTksIDksIDEsIAorICAgIDIwNCwgMjIsIDIyNywgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCA4MiwgMTksIDksIDEsIDIwNCwgMjIsIDIyNywgCisgICAgMTIsIDIyNiwgMTM5LCAxNDAsIDIyMiwgMTg4LCAxNzksIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAKKyAgICA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDI1MSwgMjIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDIyMiwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIAorICAgIDIzNCwgMjA0LCA4OCwgMywgMjAxLCA3MywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTA4LCA2NSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxMDgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDIxNywgMTIyLCA2NSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyMTcsIDEyMiwgNDcsIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTk5LCAyMTIsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgCisgICAgODgsIDMsIDE5OSwgMjEyLCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTcsIDY1LCAxOSwgOSwgCisgICAgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5NywgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTk3LCA4MiwgMTksIDksIDMzLCAyMDQsIDIyLCAyMjYsIDEzOSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTQwLCAyMjIsIAorICAgIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA0LCAyMiwgMjI2LCAxMzksIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNCwgMjIsIDIyNiwgMTM5LCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgNjUsIDE5LCA5LCAxLCAyMzcsIDE2MiwgOTAsIDQ3LCAxOSwgOSwgCisgICAgMSwgMjM3LCAxNjIsIDkwLCA4MiwgMTksIDksIDEsIDIzNywgMTYyLCA5MCwgMTc5LCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIAorICAgIDIwNCwgODgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTU1LCA2NSwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgCisgICAgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDI0OCwgCisgICAgMjQxLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyNDgsIAorICAgIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAyMDYsIDE4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDE4NCwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjA2LCAKKyAgICAxODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjA2LCAxMDMsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMDYsIAorICAgIDEwMywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMTU1LCAzLCAxOTMsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIyNiwgMjA0LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjExLCAKKyAgICAxODcsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE5MywgNjUsIDE5LCA5LCAKKyAgICAzMywgMjQyLCA1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjQyLCA1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjA3LCAxMCwgCisgICAgMywgODQsIDY1LCAxOSwgOSwgMzMsIDE5OSwgMTA5LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDE5MywgCisgICAgNjUsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTkzLCA2NSwgMTksIAorICAgIDksIDMzLCAyMzUsIDE5NSwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNywgMTM1LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgCisgICAgMjM3LCAxMzUsIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjM3LCAxMzUsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTQsIDE1MywgMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTQsIAorICAgIDE1MywgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTQsIDE1MywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgCisgICAgMywgMTkzLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNiwgCisgICAgMjA0LCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCA2NSwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgCisgICAgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCA2NSwgMTksIAorICAgIDksIDMzLCAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDkwLCA2NSwgMTksIDksIAorICAgIDMzLCA4NCwgMywgMTkzLCA2NSwgMTksIDksIDMzLCA4NCwgMywgMTU1LCA2NSwgMTksIDksIDMzLCA4NCwgMywgMjI2LCAKKyAgICAyMDQsIDY1LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAKKyAgICAxOSwgOSwgMzMsIDg0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgCisgICAgMjE4LCAyMjgsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCAKKyAgICAyMTgsIDIyOCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIAorICAgIDMzLCAyMTgsIDIyOCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIzNCwgCisgICAgMTE2LCAzLCA4NCwgNjUsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDE1NSwgCisgICAgNjUsIDE5LCA5LCAzMywgOTAsIDMsIDIyNiwgMjA0LCA2NSwgMTksIDksIDMzLCA5MCwgMywgODQsIDY1LCAxOSwgOSwgMzMsIAorICAgIDkwLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgMTksIDksIDMzLCA5MCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIwNiwgMTE1LCAKKyAgICAzLCAyMDcsIDIxMywgMTQwLCA2NSwgMTksIDksIDMzLCAyMTMsIDE1NSwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMTQwLCAyMjIsIDE4OCwgMywgMjA3LCAyMTMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDI0MiwgMTYsIAorICAgIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM1LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjM3LCAKKyAgICAxNTksIDY1LCAxOSwgOSwgMzMsIDIxMCwgMTA1LCAzLCAyNDIsIDE4LCA2NSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgCisgICAgMjI3LCAzNywgNjUsIDE5LCA5LCAzMywgMjEwLCAxMDUsIDMsIDIwNywgMjEzLCAxNDAsIDY1LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxOTksIAorICAgIDEwNiwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIAorICAgIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAKKyAgICAyNDEsIDMsIDIxMywgMTU1LCA0NywgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMTk5LCAxMDYsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0OCwgMjQxLCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIxOCwgMjI4LCA0NywgMTksIDksIDMzLCAKKyAgICAyNDgsIDI0MSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDkwLCA0NywgMTksIDksIAorICAgIDMzLCAyMDYsIDE4NCwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTksIDEwNiwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjA2LCAxMDMsIDMsIDE5OSwgMTA2LCA0NywgCisgICAgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCAyMTgsIDIyOCwgNDcsIDE5LCAKKyAgICA5LCAzMywgMjA2LCAxMDMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTAzLCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIzNywgMTM1LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCAKKyAgICA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAyMjUsIDkyLCAKKyAgICA0NywgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMTQwLCAyMjIsIDE4OCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA0NywgMTksIDksIAorICAgIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE0MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgCisgICAgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTksIDEwNiwgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIAorICAgIDMsIDg0LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjE4LCAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDMsIDIwNywgMjEzLCAxNDAsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTMsIDE1NSwgNDcsIDE5LCA5LCAzMywgOTAsIAorICAgIDMsIDE5OSwgMTA2LCA0NywgMTksIDksIDMzLCA5MCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCAyMTgsIDIyOCwgCisgICAgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDkwLCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCA5MCwgCisgICAgMywgMjM0LCAyMDQsIDg4LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIAorICAgIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDgyLCAxOSwgCisgICAgOSwgMzMsIDI0OCwgMjQxLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjA2LCAxODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIwNiwgMTAzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE5MywgMywgODQsIAorICAgIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAKKyAgICAyMjYsIDIwNCwgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAKKyAgICAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAxNTUsIAorICAgIDgyLCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNTUsIDgyLCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyNDIsIDUzLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgCisgICAgMjA3LCAxMCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAxOTksIDEwOSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAKKyAgICAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDE5MywgCisgICAgODIsIDE5LCA5LCAzMywgMjM1LCAxOTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMTkzLCA4MiwgMTksIAorICAgIDksIDMzLCAyMzcsIDEzNSwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMzcsIDEzNSwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjE0LCAxNTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjE0LCAKKyAgICAxNTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjcsIDg3LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDIyNSwgCisgICAgOTIsIDgyLCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxOTMsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIyNSwgOTIsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAyMzQsIDExNiwgODIsIDE5LCA5LCAKKyAgICAzMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIzNCwgMTE2LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjM0LCAKKyAgICAxMTYsIDMsIDIwNywgMjEzLCAxNDAsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAKKyAgICAxNTUsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCA5MCwgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDg0LCAxNzksIDE5LCAKKyAgICA5LCAzMywgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyNDgsIDI0MSwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMDYsIDEwMywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIAorICAgIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgCisgICAgMTc5LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCAxNzksIDE5LCA5LCAzMywgMjI3LCA4NywgMywgMjI1LCAKKyAgICA5MiwgMTc5LCAxOSwgOSwgMzMsIDIyNywgODcsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDE3OSwgCisgICAgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgODQsIDE3OSwgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMjM0LCAxMTYsIDE3OSwgCisgICAgMTksIDksIDMzLCA5MCwgMywgODQsIDE3OSwgMTksIDksIDMzLCA5MCwgMywgMjM0LCAxMTYsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDEwNSwgMywgMjM3LCAxNTksIDE3OSwgMTksIDksIDMzLCAyMTAsIDEwNSwgMywgMjQyLCAxOCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIxMCwgMTA1LCAzLCAyMjcsIDM3LCAxNzksIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgMTQwLCAyMjIsIDE4OCwgNjUsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxNDAsIDIyMiwgMTg4LCA2NSwgCisgICAgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCAxNDAsIDIyMiwgMTg4LCAKKyAgICA2NSwgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAxNDAsIDIyMiwgCisgICAgMTg4LCA2NSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE0MCwgMjIyLCAKKyAgICAxODgsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIAorICAgIDY1LCAxOSwgOSwgMzMsIDE1NSwgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDE5MywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCAKKyAgICA5LCAzMywgMTkzLCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjI2LCAyMDQsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNiwgMjA0LCAzLCA5MCwgNjUsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTQwLCAyMjIsIDE4OCwgNjUsIDE5LCA5LCAKKyAgICAzMywgMjEyLCA1NywgMywgOTAsIDY1LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDI0MiwgNTMsIDMsIDkwLCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDY1LCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDY1LCAxOSwgOSwgMzMsIDIxMCwgNjIsIAorICAgIDMsIDg0LCA2NSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIAorICAgIDIxMywgMTU1LCA2NSwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCAyMTMsIDE1NSwgNjUsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgCisgICAgMjEzLCAxNTUsIDY1LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNywgCisgICAgMTAsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjUxLCAKKyAgICAxNzIsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMzUsIDE5NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgCisgICAgMjM1LCAxOTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAyMTAsIDYyLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAKKyAgICAxNTUsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDE5MywgMywgCisgICAgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNiwgMjA0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMjYsIDIwNCwgCisgICAgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAKKyAgICAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMTkzLCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIyNiwgMjA0LCA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjEwLCA2MiwgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMTMsIDE1NSwgCisgICAgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDI0MiwgNTMsIDMsIDIxMywgMTU1LCAKKyAgICA0NywgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgODIsIDE5LCAKKyAgICA5LCAzMywgMjEwLCA2MiwgMywgMjI2LCAyMDQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCA4MiwgMTksIDksIAorICAgIDMzLCAyMTEsIDE4NywgMywgMjM0LCAxMTYsIDgyLCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDIzNCwgMTE2LCA4MiwgMTksIAorICAgIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMTc5LCAxOSwgOSwgMzMsIAorICAgIDIxMSwgMTg3LCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMjI2LCAyMDQsIDE3OSwgMTksIDksIDMzLCAKKyAgICAyMTAsIDYyLCAzLCAxOTMsIDE3OSwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCAxNTUsIDE3OSwgMTksIDksIDMzLCAyMTAsIAorICAgIDYyLCAzLCAyMjYsIDIwNCwgMTc5LCAxOSwgOSwgMzMsIDIwNywgMTAsIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTk5LCAKKyAgICAxMDksIDMsIDg0LCAxNzksIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIDE1NywgNDcsIDE5LCA5LCAzMywgMTQwLCAzLCAyMzcsIAorICAgIDE1NywgNjUsIDE5LCAyMTcsIDE5LCA0OSwgMjE2LCAxMTUsIDIxNywgMTksIDUxLCAyMTYsIDExNSwgOSwgMzMsIDIwNiwgCisgICAgMTg0LCAzLCAxOTMsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgMTU1LCAzLCAxOTMsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAxNTUsIDMsIDE5MywgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE1NSwgMywgODQsIDgyLCAKKyAgICAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCA4NCwgCisgICAgMywgMTkzLCA4MiwgMTksIDksIDMzLCAyMDYsIDE4NCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA2LCAxODQsIAorICAgIDMsIDg0LCAzLCAyMjYsIDIwNCwgODIsIDE5LCA5LCAzMywgMTkzLCAzLCA4NCwgMywgMTU1LCA0NywgMTksIDksIDMzLCAKKyAgICAxOTMsIDMsIDg0LCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDE1NSwgMywgODQsIDMsIDkwLCA0NywgMTksIDksIDMzLCAxNTUsIAorICAgIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTEsIDE4NywgMywgMTU1LCAzLCAxOTMsIDgyLCAxOSwgCisgICAgOSwgMzMsIDIxMSwgMTg3LCAzLCAxOTMsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDE5MywgMywgMTQwLCAKKyAgICAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgCisgICAgMTg3LCAzLCA4NCwgMywgMTU1LCA4MiwgMTksIDksIDMzLCAyMTEsIDE4NywgMywgODQsIDMsIDE5MywgODIsIDE5LCA5LCAKKyAgICAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjExLCAxODcsIDMsIDg0LCAzLCA4NCwgODIsIAorICAgIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxMiwgNTcsIDMsIDE1NSwgMywgCisgICAgMTU1LCA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIAorICAgIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDE1NSwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMCwgCisgICAgNjIsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCAyMjYsIDIwNCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgODQsIDMsIDIyNiwgMjA0LCA4MiwgMTksIDksIDMzLCAyMTAsIDYyLCAzLCA4NCwgMywgODQsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIxMCwgNjIsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCAKKyAgICAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyNDIsIDUzLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDI0MiwgNTMsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgNDcsIAorICAgIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjA3LCAxMCwgMywgODQsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMDcsIDEwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIAorICAgIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDg0LCA0NywgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgCisgICAgODQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyNTEsIDE3MiwgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIzNSwgMTk1LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIAorICAgIDIyNiwgMjA0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjM3LCAxMzUsIDMsIDIyNiwgMjA0LCAzLCA4NCwgODIsIDE5LCA5LCAKKyAgICAzMywgMjE0LCAxNTMsIDMsIDg0LCAzLCAxNTUsIDQ3LCAxOSwgOSwgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgODQsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgOTAsIAorICAgIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE1NSwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgCisgICAgMywgMTkzLCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgMTkzLCA0NywgMTksIDksIDMzLCAKKyAgICAyMjUsIDkyLCAzLCAyMjYsIDIwNCwgMywgODQsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDIyNiwgMjA0LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDE1NSwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIAorICAgIDE1NSwgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgMTkzLCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTU1LCAzLCA4NCwgCisgICAgODIsIDE5LCA5LCAzMywgODQsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCAxOTMsIDMsIDE1NSwgODIsIAorICAgIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAyMjYsIDIwNCwgMywgMTkzLCA4MiwgCisgICAgMTksIDksIDMzLCA4NCwgMywgMjI2LCAyMDQsIDMsIDg0LCA4MiwgMTksIDksIDMzLCA4NCwgMywgMTkzLCAzLCAyMjYsIAorICAgIDIwNCwgODIsIDE5LCA5LCAzMywgMjM0LCAxMTYsIDMsIDg0LCAzLCAxOTMsIDgyLCAxOSwgOSwgMzMsIDIzNCwgMTE2LCAzLCAKKyAgICA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDg0LCA4MiwgMTksIDksIDMzLCAyMTgsIAorICAgIDIyOCwgMywgMTU1LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCA4NCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIAorICAgIDIxOCwgMjI4LCAzLCA4NCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgNDcsIAorICAgIDE5LCA5LCAzMywgOTAsIDMsIDg0LCAzLCA4NCwgODIsIDE5LCA5LCAzMywgMjQ4LCAyNDEsIDMsIDIyNiwgMjA0LCAzLCA5MCwgCisgICAgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAxOTMsIAorICAgIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIwNiwgMTg0LCAzLCAyMjYsIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIAorICAgIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjA2LCAxODQsIDMsIDg0LCAzLCAxNDAsIDIyMiwgMTg4LCA0NywgMTksIDksIAorICAgIDMzLCAxOTMsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMTkzLCAzLCAxNTUsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDE5MywgMywgODQsIDMsIDE0MCwgMjIyLCAxODgsIDQ3LCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAzMywgMjEyLCA1NywgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjEwLCA2MiwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjQyLCA1MywgMywgMTU1LCAzLCA5MCwgNDcsIAorICAgIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgODQsIDMsIDkwLCAKKyAgICA0NywgMTksIDksIDMzLCA5MCwgMywgMTU1LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgOTAsIDMsIDE5MywgMywgOTAsIDQ3LCAKKyAgICAxOSwgOSwgMzMsIDkwLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDg0LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIxNCwgMTUzLCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMTQsIDE1MywgMywgODQsIDMsIDE1NSwgODIsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTU1LCAzLCAKKyAgICA4NCwgODIsIDE5LCA5LCAzMywgMjUxLCAxNzIsIDMsIDg0LCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgMjI3LCA4NywgMywgODQsIAorICAgIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTgsIDIyOCwgMywgMTkzLCAzLCAxNTUsIDgyLCAxOSwgOSwgMzMsIDg0LCAzLCAKKyAgICAyMjYsIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE5MywgMywgODQsIDgyLCAxOSwgOSwgMzMsIAorICAgIDIyNywgODcsIDMsIDg0LCAzLCA4NCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTkzLCAzLCA4NCwgNDcsIDE5LCA5LCAKKyAgICAzMywgMjE4LCAyMjgsIDMsIDE5MywgMywgMTU1LCA0NywgMTksIDksIDMzLCAxOTMsIDMsIDE1NSwgMywgOTAsIDQ3LCAxOSwgCisgICAgOSwgMzMsIDE1NSwgMywgMTkzLCAzLCA5MCwgNDcsIDE5LCA5LCAzMywgODQsIDMsIDE5MywgMywgOTAsIDQ3LCAxOSwgOSwgCisgICAgMzMsIDIzNywgMTM1LCAzLCA4NCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDI0OCwgMjQxLCAzLCAxNTUsIDMsIDkwLCA0NywgCisgICAgMTksIDksIDMzLCAyMjcsIDg3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDI1MSwgMTcyLCAzLCAxOTMsIDMsIDg0LCAKKyAgICA4MiwgMTksIDksIDMzLCAyMTIsIDU3LCAzLCA4NCwgMywgODQsIDgyLCAxOSwgOSwgMzMsIDIxMSwgMTg3LCAzLCAyMjYsIAorICAgIDIwNCwgMywgOTAsIDQ3LCAxOSwgOSwgMzMsIDIxOCwgMjI4LCAzLCAxOTMsIDMsIDkwLCA0NywgMTksIDksIDMzLCAyMTIsIAorICAgIDMwLCAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDIxNCwgMTQ5LCAKKyAgICAyMDMsIDE5MiwgMjUwLCAxODksIDIyNiwgNjAsIDIwOCwgNzcsIDIsIDY1LCAxOSwgOSwgMzMsIDI1MSwgMTIzLCA2NSwgMTksIAorICAgIDksIDMzLCAyNTEsIDE1NiwgNjUsIDE5LCA5LCAzMywgMjIxLCAxMDksIDY1LCAxOSwgOSwgMzMsIDIxMiwgMzEsIDY1LCAxOSwgCisgICAgOSwgMzMsIDIxMywgMjA2LCA2NSwgMTksIDksIDMzLCAyNTEsIDE0NSwgNjUsIDE5LCA5LCAzMywgMjAxLCA5MiwgNjUsIDE5LCAKKyAgICA5LCAzMywgMjEyLCAzMCwgNjUsIDE5LCA5LCAzMywgMjEyLCAyOSwgMjUxLCAxNDUsIDIwMSwgOTEsIDksIDMzLCAyMjcsIAorICAgIDIzOSwgMjEzLCA4NywgNTQsIDksIDMzLCAyNDgsIDE1NCwgMjUwLCAyNTEsIDI1MCwgMjUyLCA1OCwgMjExLCAxNzQsIDU4LCAKKyAgICAyMTEsIDYzLCA1OCwgMjEwLCAyNTEsIDU4LCAyMTAsIDI0MCwgNTgsIDIxMCwgMjI5LCA1OCwgMjEwLCAyMTgsIDU4LCAyMTAsIAorICAgIDIwNywgNTgsIDIxMCwgMTk2LCA1OCwgMjEwLCAxODUsIDU4LCAyMTEsIDE3MywgNTgsIDIxMSwgMTYyLCA1OCwgMjExLCAKKyAgICAxNTEsIDU4LCAyMTEsIDE0MCwgNTgsIDIxMSwgMTI5LCA1OCwgMjExLCAxMTgsIDU4LCAyMTEsIDEwNywgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgMjQ2LCA3MCwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMTQxLCAyNDYsIDcwLCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAxNDEsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAKKyAgICAyNDYsIDc5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMTAsIDE2NywgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgCisgICAgMjM4LCA0MywgODEsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIxNCwgNzksIDgxLCAyMTUsIDE5LCAyMzYsIDI0MiwgCisgICAgMzYsIDgzLCA0OSwgNjQsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAKKyAgICAyNDcsIDI0OCwgNjgsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzMywgMTc3LCAyMzgsIDE5NSwgMzgsIDMzLCA0OSwgCisgICAgMjM0LCAyMTMsIDM4LCAzMywgNTEsIDIzNCwgMjEzLCAzOCwgNTMsIDIwNSwgMjQxLCA0OSwgMjM0LCAyMTMsIDM4LCA1MywgCisgICAgMjA1LCAyNDEsIDUxLCAyMzQsIDIxMywgMzgsIDIyMiwgMjI5LCA0OSwgMjM0LCAyMTMsIDM4LCAyMjIsIDIyOSwgNTEsIAorICAgIDIzNCwgMjEzLCAzOCwgMjQzLCA1NiwgMjIyLCAyMjgsIDM4LCAzMywgNDksIDE2NywgNTcsIDM4LCAzMywgNTEsIDE2NywgCisgICAgNTcsIDM4LCAyMDUsIDI0MSwgNDksIDE2NywgNTcsIDM4LCAyMDUsIDI0MSwgNTEsIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgCisgICAgNDksIDE2NywgNTcsIDM4LCAyMjIsIDIyOSwgNTEsIDE2NywgNTcsIDM4LCAyNDMsIDU2LCAyMjIsIDIyOSwgNTcsIDM4LCAKKyAgICAzNywgMjA1LCAyMTEsIDQ5LCAyMzQsIDIxMywgMzgsIDM3LCAyMDUsIDIxMSwgNTEsIDIzNCwgMjEzLCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCAxMjAsIDczLCAyMjUsIDM4LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCAyMzgsIDE5MSwgMjQxLCAKKyAgICAyNDQsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDIzOCwgMTgwLCAyNDEsIDI0NCwgMjE1LCAxOSwgMjM2LCAyNDIsIAorICAgIDM2LCA4MywgMTI4LCAyMjQsIDE3NiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgCisgICAgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIxNiwgMTE1LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjE2LCAxMTUsIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDQ5LCAyNDIsIDE5NiwgMTU5LCAyMTUsIDE5LCAyMzYsIAorICAgIDI0MiwgMzYsIDgzLCA1MSwgMjQyLCAxOTYsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDIwNSwgMTQ2LCAKKyAgICAyMTAsIDU1LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjMsIDIyNCwgMjQ3LCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIAorICAgIDUxLCA2MywgMjI0LCAyNDcsIDE1OSwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUzLCAyNTEsIDcxLCAxNTksIAorICAgIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA1MywgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIAorICAgIDgzLCA0OSwgMjUxLCA3MSwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgMjUxLCA3MSwgMTU5LCAyMTUsIAorICAgIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA1MSwgCisgICAgMjQzLCAxNiwgMTU5LCAyMTUsIDE5LCAyMzYsIDI0MiwgMzYsIDgzLCA0OSwgNjQsIDI0MywgMTYsIDE1OSwgMjE1LCAxOSwgCisgICAgMjM2LCAyNDIsIDM2LCA4MywgNTEsIDY0LCAyNDMsIDE2LCAxNTksIDIxMCwgMTQ1LCAyNDAsIDE4MiwgNjQsIDIxMCwgMTQ1LCAKKyAgICAyNDAsIDE4MiwgMjE1LCAxOSwgMjM2LCAyNDIsIDM2LCA4MywgNDksIDUyLCAxNTksIDIxNSwgMTksIDIzNiwgMjQyLCAzNiwgCisgICAgODMsIDUxLCA1MiwgMTU5LCAyNDEsIDI0MywgMjE2LCAyNDEsIDI0NywgNTIsIDIxNiwgMjQxLCAyMDEsIDc0LCAyMTYsIAorICAgIDI0MSwgNTMsIDIwMSwgNzQsIDIxNiwgMjQxLCAyNDEsIDI0MywgMTI4LCAyMjQsIDE3NiwgMjQ3LCA1MiwgMTI4LCAyMjQsIAorICAgIDE3NiwgMjAxLCA3NCwgMTI4LCAyMjQsIDE3NiwgNCwgMjQ2LCA3MCwgNCwgMTQxLCAyNDYsIDcwLCA0LCAyMzYsIDE4MywgCisgICAgMjA4LCA3NiwgNCwgMjEwLCAxNjcsIDQsIDI0NiwgNzksIDQsIDIxNCwgNzksIDgxLCA0LCAyMzgsIDQzLCA4MSwgNCwgMjM4LCAKKyAgICAxOTEsIDI0MSwgMjQ0LCA0LCA0OSwgMjE2LCAxMTUsIDQsIDUxLCAyMTYsIDExNSwgNCwgNDksIDI0MiwgMTk2LCAxNTksIDQsIAorICAgIDUxLCAyNDIsIDE5NiwgMTU5LCA0LCA0OSwgMjA1LCAxNDYsIDIxMCwgNTUsIDE1OSwgNCwgNTEsIDIwNSwgMTQ2LCAyMTAsIAorICAgIDU1LCAxNTksIDQsIDQxLCA1NCwgNCwgMjUxLCA4OSwgNCwgMjUwLCAxNjUsIDQsIDkzLCA1NCwgNCwgMjMzLCAzMiwgNCwgCisgICAgMjI0LCAyNDEsIDU0LCA0LCAyMzUsIDY3LCA1NCwgNCwgMjM4LCAxMjIsIDU0LCA0LCAyMTMsIDEwNiwgMjA5LCAxNiwgNCwgCisgICAgMjQwLCAxOTQsIDU0LCA0LCAyMTYsIDI3LCA1NCwgNCwgMjQ2LCA2OCwgMjUwLCAxNTUsIDksIDIzNywgMTU3LCA2NSwgMTksIAorICAgIDksIDIwNiwgMjI0LCAzLCAyMzcsIDE1NywgNTYsIDksIDI0MiwgMTYsIDY1LCAxOSwgOSwgMjA3LCA3LCAyMzYsIDIxOCwgOSwgCisgICAgMjI3LCAzNSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgNjUsIDE5LCA5LCAyMzcsIDE1OSwgMTc5LCAxOSwgOSwgMjQyLCAxOCwgCisgICAgNjUsIDE5LCA5LCAyNDIsIDE4LCAxNzksIDE5LCA5LCAyMjcsIDM3LCA2NSwgMTksIDksIDIyNywgMzcsIDE3OSwgMTksIDksIAorICAgIDIxMCwgMTA1LCA2NSwgMTksIDksIDIxMCwgMTA1LCAxNzksIDE5LCA5LCAyMDcsIDIzNywgNjUsIDE5LCA5LCAyMDcsIDIzNywgCisgICAgMTc5LCAxOSwgOSwgMSwgMjM0LCAyMDQsIDY1LCAxOSwgOSwgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMjIsIDIyNCwgODgsIDQ3LCAxOSwgOSwgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMSwgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgMjAxLCA3MywgMywgMjM0LCAyMDQsIDg4LCA2NSwgMTksIAorICAgIDksIDEsIDIwMSwgNzMsIDMsIDIzNCwgMjA0LCA4OCwgNDcsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgCisgICAgNjUsIDE5LCA5LCAxLCAxNDAsIDMsIDIzNCwgMjA0LCAyNDgsIDIyOCwgNDcsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIAorICAgIDg4LCA2NSwgMTksIDksIDEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDQ3LCAxOSwgOSwgMSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgCisgICAgODIsIDE5LCA5LCAxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAxNzksIDE5LCA5LCAxLCAxNDAsIDY1LCAxOSwgOSwgMSwgMTQwLCAKKyAgICA0NywgMTksIDksIDEsIDI0OCwgMjQxLCA2NSwgMTksIDksIDEsIDI0OCwgMjQxLCA0NywgMTksIDksIDEsIDI0OCwgMjQxLCAKKyAgICA4MiwgMTksIDksIDEsIDI0OCwgMjQxLCAxNzksIDE5LCA5LCAxLCAyMDYsIDE4NCwgMjIyLCAxNTcsIDY1LCAxOSwgOSwgMSwgCisgICAgMjA2LCAxODQsIDIyMiwgMTU3LCA0NywgMTksIDksIDEsIDIwNiwgMTg0LCA2NSwgMTksIDksIDEsIDIwNiwgMTg0LCA0NywgCisgICAgMTksIDksIDEsIDIwNiwgMTg0LCA4MiwgMTksIDksIDEsIDIwNiwgMTg0LCAxNzksIDE5LCA5LCAxLCAyMDYsIDEwMywgNjUsIAorICAgIDE5LCA5LCAxLCAyMDYsIDEwMywgNDcsIDE5LCA5LCAxLCAyMDYsIDEwMywgODIsIDE5LCA5LCAxLCAyMDYsIDEwMywgMTc5LCAKKyAgICAxOSwgOSwgMSwgMTkzLCA2NSwgMTksIDksIDEsIDE5MywgNDcsIDE5LCA5LCAxLCAxOTMsIDgyLCAxOSwgOSwgMSwgMTkzLCAKKyAgICAxNzksIDE5LCA5LCAxLCAxNTUsIDY1LCAxOSwgOSwgMSwgMTU1LCA0NywgMTksIDksIDEsIDE1NSwgODIsIDE5LCA5LCAxLCAKKyAgICAxNTUsIDE3OSwgMTksIDksIDEsIDIyNiwgMjA0LCA2NSwgMTksIDksIDEsIDIyNiwgMjA0LCA0NywgMTksIDksIDEsIDIyNiwgCisgICAgMjA0LCA4MiwgMTksIDksIDEsIDIyNiwgMjA0LCAxNzksIDE5LCA5LCAxLCAyNDIsIDMwLCA2NSwgMTksIDksIDEsIDI0MiwgCisgICAgMzAsIDQ3LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDY1LCAxOSwgOSwgMSwgMjA2LCAxMTUsIDQ3LCAxOSwgOSwgMSwgMjEzLCAKKyAgICAxNTUsIDY1LCAxOSwgOSwgMSwgMjEzLCAxNTUsIDQ3LCAxOSwgOSwgMSwgMTk5LCAxMDYsIDY1LCAxOSwgOSwgMSwgMTk5LCAKKyAgICAxMDYsIDQ3LCAxOSwgOSwgMSwgMjExLCAxODcsIDY1LCAxOSwgOSwgMSwgMjExLCAxODcsIDQ3LCAxOSwgOSwgMSwgMjExLCAKKyAgICAxODcsIDgyLCAxOSwgOSwgMSwgMjExLCAxODcsIDE3OSwgMTksIDksIDEsIDIxMCwgNjIsIDY1LCAxOSwgOSwgMSwgMjEwLCAKKyAgICA2MiwgNDcsIDE5LCA5LCAxLCAyMTAsIDYyLCA4MiwgMTksIDksIDEsIDIxMCwgNjIsIDE3OSwgMTksIDksIDEsIDIxMiwgNTcsIAorICAgIDY1LCAxOSwgOSwgMSwgMjEyLCA1NywgNDcsIDE5LCA5LCAxLCAyMTIsIDU3LCA4MiwgMTksIDksIDEsIDIxMiwgNTcsIDE3OSwgCisgICAgMTksIDksIDEsIDI0MiwgNTMsIDY1LCAxOSwgOSwgMSwgMjQyLCA1MywgNDcsIDE5LCA5LCAxLCAyNDIsIDUzLCA4MiwgMTksIAorICAgIDksIDEsIDI0MiwgNTMsIDE3OSwgMTksIDksIDEsIDIwNywgMTAsIDY1LCAxOSwgOSwgMSwgMjA3LCAxMCwgNDcsIDE5LCA5LCAKKyAgICAxLCAyMDcsIDEwLCA4MiwgMTksIDksIDEsIDIwNywgMTAsIDE3OSwgMTksIDksIDEsIDE5OSwgMTA5LCA2NSwgMTksIDksIDEsIAorICAgIDE5OSwgMTA5LCA0NywgMTksIDksIDEsIDE5OSwgMTA5LCA4MiwgMTksIDksIDEsIDE5OSwgMTA5LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgNjUsIDE5LCA5LCAxLCAyNTEsIDE3MiwgNDcsIDE5LCA5LCAxLCAyNTEsIDE3MiwgODIsIDE5LCA5LCAxLCAKKyAgICAyNTEsIDE3MiwgMTc5LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDY1LCAxOSwgOSwgMSwgMjM1LCAxOTUsIDQ3LCAxOSwgOSwgMSwgCisgICAgMjM1LCAxOTUsIDgyLCAxOSwgOSwgMSwgMjM1LCAxOTUsIDE3OSwgMTksIDksIDEsIDIzNywgMTM1LCA2NSwgMTksIDksIDEsIAorICAgIDIzNywgMTM1LCA0NywgMTksIDksIDEsIDIzNywgMTM1LCA4MiwgMTksIDksIDEsIDIzNywgMTM1LCAxNzksIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgNjUsIDE5LCA5LCAxLCAyMTQsIDE1MywgNDcsIDE5LCA5LCAxLCAyMTQsIDE1MywgODIsIDE5LCA5LCAxLCAKKyAgICAyMTQsIDE1MywgMTc5LCAxOSwgOSwgMSwgMjI3LCA4NywgNjUsIDE5LCA5LCAxLCAyMjcsIDg3LCA0NywgMTksIDksIDEsIAorICAgIDIyNywgODcsIDgyLCAxOSwgOSwgMSwgMjI3LCA4NywgMTc5LCAxOSwgOSwgMSwgMjI1LCA5MiwgNjUsIDE5LCA5LCAxLCAKKyAgICAyMjUsIDkyLCA0NywgMTksIDksIDEsIDIyNSwgOTIsIDgyLCAxOSwgOSwgMSwgMjI1LCA5MiwgMTc5LCAxOSwgOSwgMSwgODQsIAorICAgIDY1LCAxOSwgOSwgMSwgODQsIDQ3LCAxOSwgOSwgMSwgODQsIDgyLCAxOSwgOSwgMSwgODQsIDE3OSwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCA2NSwgMTksIDksIDEsIDIxOCwgMjI4LCA0NywgMTksIDksIDEsIDIxOCwgMjI4LCA4MiwgMTksIDksIDEsIDIxOCwgCisgICAgMjI4LCAxNzksIDE5LCA5LCAxLCAyMzQsIDExNiwgNjUsIDE5LCA5LCAxLCAyMzQsIDExNiwgNDcsIDE5LCA5LCAxLCAyMzQsIAorICAgIDExNiwgODIsIDE5LCA5LCAxLCAyMzQsIDExNiwgMTc5LCAxOSwgOSwgMSwgMjAxLCA3MywgNjUsIDE5LCA5LCAxLCAyMDEsIAorICAgIDczLCA0NywgMTksIDksIDEsIDE0MCwgMjIyLCAxODgsIDY1LCAxOSwgOSwgMSwgMTQwLCAyMjIsIDE4OCwgNDcsIDE5LCA5LCAKKyAgICAxLCA5MCwgNjUsIDE5LCA5LCAxLCA5MCwgNDcsIDE5LCA5LCAxLCA5MCwgODIsIDE5LCA5LCAxLCA5MCwgMTc5LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjIyLCAyMjQsIDg4LCA2NSwgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIyMiwgMjI0LCA4OCwgNDcsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgODgsIDY1LCAxOSwgOSwgCisgICAgMzMsIDIyNSwgOTIsIDMsIDE0MCwgMywgMjM0LCAyMDQsIDg4LCA0NywgMTksIDksIDMzLCAyMjUsIDkyLCAzLCAxNDAsIDMsIAorICAgIDIzNCwgMjA0LCAyNDgsIDIyOCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCAzLCAyMzQsIDIwNCwgMjQ4LCAKKyAgICAyMjgsIDQ3LCAxOSwgOSwgMzMsIDIyNSwgOTIsIDMsIDE0MCwgNjUsIDE5LCA5LCAzMywgMjI1LCA5MiwgMywgMTQwLCA0NywgCisgICAgMTksIDE5OSwgODIsIDIwMSwgMjUsIDIxOCwgMjQwLCAyMDgsIDI0NCwgMTU4LCAyMzgsIDQzLCA4MSwgMTU4LCAyMTQsIDYzLCAKKyAgICA4MSwgMTU4LCA0MSwgNTQsIDE1OCwgMjQwLCAxOTQsIDU0LCAxNTgsIDIxNiwgMjcsIDU0LCAxNTgsIDI1MSwgODksIDE1OCwgCisgICAgMjUxLCAxMywgMTU4LCA0OSwgMjE2LCAxMTUsIDE1OCwgNTEsIDIxNiwgMTE1LCAxNTgsIDI1MCwgMTY1LCAxNTgsIDkzLCAKKyAgICA1NCwgMTU4LCAyNDYsIDcwLCAxNTgsIDIzMywgMzIsIDE1OCwgMjM2LCAxODMsIDIwOCwgNzYsIDE1OCwgMjA5LCAxNiwgCisgICAgMTU4LCAxNywgMTk5LCA4MSwgMTU4LCAxNywgMTAyLCAxNTgsIDE3LCAxMDUsIDE1OCwgMTcsIDE0NywgMTU4LCAxNywgMTQ5LCAKKyAgICAxNTgsIDE3LCAxNjQsIDE1OCwgMTcsIDE4NywgMTU4LCAxNywgMjEwLCAxMzUsIDE1OCwgMTcsIDE5MiwgMTU4LCAxNywgCisgICAgMjE5LCAxMTMsIDE1OCwgMjQ2LCA3OSwgMTU4LCAyMTAsIDE2NywgMTU4LCAyMjQsIDI0MSwgNTQsIDE1OCwgMjM4LCAxMjIsIAorICAgIDU0LCAxNTgsIDIzNSwgNjcsIDU0LCAxNTgsIDIxNCwgNzksIDgxLCAxNTgsIDI0NiwgNjgsIDI1MCwgMTU1LCAxNTgsIDgsIAorICAgIDYsIDEsIDYyLCAxNTgsIDgsIDYsIDEsIDI1MCwgMTAzLCAxNTgsIDgsIDYsIDEsIDI0NywgMjIzLCAxNTgsIDgsIDYsIDEsIAorICAgIDI0MiwgMTUzLCAxNTgsIDgsIDYsIDEsIDcyLCAxNTgsIDgsIDYsIDEsIDIzOCwgNSwgMTU4LCA4LCA2LCAxLCAyMzYsIDE1NiwgCisgICAgMTU4LCA4LCA2LCAxLCAyMzQsIDI0NywgMTU4LCA4LCA2LCAxLCA3MCwgMTU4LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTU4LCA4LCAKKyAgICA2LCAxLCAyMjcsIDExOCwgMTU4LCA4LCA2LCAxLCAxNTYsIDE1OCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE1OCwgOCwgNiwgMSwgCisgICAgMjIwLCAyMTQsIDE1OCwgOCwgNiwgMSwgNzQsIDE1OCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE1OCwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE1OCwgOCwgNiwgMSwgMTQ2LCAxNTgsIDgsIDYsIDEsIDIxMiwgMTIyLCAxNTgsIDgsIDYsIDEsIDIwNywgODMsIAorICAgIDE1OCwgOCwgNiwgMSwgNjYsIDE1OCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE1OCwgOCwgNiwgMSwgMjAxLCAxNDcsIDE1OCwgOCwgCisgICAgNiwgMSwgMjAwLCAxOTUsIDE1OCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE1OCwgOCwgNiwgMSwgMTk5LCAxNTcsIDE1OCwgNDksIAorICAgIDUyLCAxNTksIDE1OCwgMjEzLCAxMDYsIDIwOSwgMTYsIDE1OCwgNTEsIDUyLCAxNTksIDE1OCwgMjQ2LCAxNDcsIDI1MSwgCisgICAgMjUxLCAxNTgsIDEyOCwgMjI0LCAxNzYsIDE1OCwgMjM1LCA3NCwgMjUxLCAyNTEsIDE1OCwgOCwgNCwgMSwgNjIsIDE1OCwgCisgICAgOCwgNCwgMSwgMjUwLCAxMDMsIDE1OCwgOCwgNCwgMSwgMjQ3LCAyMjMsIDE1OCwgOCwgNCwgMSwgMjQyLCAxNTMsIDE1OCwgCisgICAgOCwgNCwgMSwgNzIsIDE1OCwgOCwgNCwgMSwgMjM4LCA1LCAxNTgsIDgsIDQsIDEsIDIzNiwgMTU2LCAxNTgsIDgsIDQsIDEsIAorICAgIDIzNCwgMjQ3LCAxNTgsIDgsIDQsIDEsIDcwLCAxNTgsIDgsIDQsIDEsIDIyNywgMjUxLCAxNTgsIDgsIDQsIDEsIDIyNywgCisgICAgMTE4LCAxNTgsIDgsIDQsIDEsIDE1NiwgMTU4LCA4LCA0LCAxLCAyMjMsIDI0MywgMTU4LCA4LCA0LCAxLCAyMjAsIDIxNCwgCisgICAgMTU4LCA4LCA0LCAxLCA3NCwgMTU4LCA4LCA0LCAxLCAyMTYsIDIyNiwgMTU4LCA4LCA0LCAxLCAyMTQsIDE2NywgMTU4LCA4LCAKKyAgICA0LCAxLCAxNDYsIDE1OCwgOCwgNCwgMSwgMjEyLCAxMjIsIDE1OCwgOCwgNCwgMSwgMjA3LCA4MywgMTU4LCA4LCA0LCAxLCAKKyAgICA2NiwgMTU4LCA4LCA0LCAxLCAyMDMsIDE2OCwgMTU4LCA4LCA0LCAxLCAyMDEsIDE0NywgMTU4LCA4LCA0LCAxLCAyMDAsIAorICAgIDE5NSwgMTU4LCA4LCA0LCAxLCAyMDAsIDEyMywgMTU4LCA4LCA0LCAxLCAxOTksIDE1NywgMTU4LCA0OSwgMjQyLCAxOTYsIAorICAgIDE1OSwgMTU4LCA4MywgMjI0LCAxNzYsIDE1OCwgNTEsIDI0MiwgMTk2LCAxNTksIDE1OCwgMjA1LCAyNDAsIDE1OCwgNDksIAorICAgIDY0LCAyMTYsIDExNSwgMTU4LCA1MSwgNjQsIDIxNiwgMTE1LCAxMzAsIDE0MSwgMjM2LCAxODMsIDIwOCwgNzYsIDEzMCwgCisgICAgNDksIDI0MywgMTYsIDE1OSwgMTMwLCA1MSwgMjQzLCAxNiwgMTU5LCAxMzAsIDE0MSwgMjQ2LCA3MCwgMTMwLCA2OSwgMTAxLCAKKyAgICAyNDAsIDE4MiwgMTMwLCA2OSwgMSwgMjAxLCAwLCAxMzAsIDY5LCAxLCA0LCA2MiwgMTMwLCA2OSwgMSwgNCwgNzAsIDEzMCwgCisgICAgNjksIDEsIDQsIDY2LCAxMzAsIDY5LCAxLCA0LCA3MiwgMTMwLCA2OSwgMSwgNCwgNzQsIDEzMCwgNjksIDEsIDQsIDE4MywgCisgICAgMTMwLCA2OSwgMSwgNCwgMTk5LCAyMTEsIDEzMCwgNjksIDEsIDQsIDE5OSwgMjQ1LCAxMzAsIDY5LCAxLCA0LCAyMDQsIAorICAgIDIxNSwgMTMwLCAyMjcsIDMyLCAyMTQsIDI0OCwgMjA5LCAxLCA4MSwgMTMwLCA2OSwgMSwgNjIsIDEzMCwgNjksIDEsIDcwLCAKKyAgICAxMzAsIDY5LCAxLCA2NiwgMTMwLCA2OSwgMSwgNzIsIDEzMCwgNjksIDEsIDc0LCAxMzAsIDY5LCAxLCAxNjEsIDEzMCwgNjksIAorICAgIDEsIDIyNiwgMTYzLCAxMzAsIDY5LCAxLCAyMjYsIDE1LCAxMzAsIDY5LCAxLCAyMjcsIDgsIDEzMCwgNjksIDEsIDIyNiwgCisgICAgODgsIDEzMCwgNjksIDEsIDIxMiwgNjQsIDEzMCwgNjksIDEsIDIwOSwgMTgyLCAxMzAsIDY5LCAxLCAyMDgsIDI0LCAxMzAsIAorICAgIDY5LCAxLCAyMTEsIDIwMiwgMTMwLCA2OSwgMSwgMjA5LCAyOSwgMTMwLCA2OSwgMSwgMjA3LCAzNiwgMTMwLCA2OSwgMSwgCisgICAgMjA2LCAxNSwgMTMwLCA2OSwgMSwgMjA0LCAyMTUsIDEzMCwgNjksIDEsIDIwNiwgMjAxLCAxMzAsIDY5LCAxLCAxMzgsIAorICAgIDEzMCwgNjksIDEsIDE4OCwgMTMwLCA2OSwgMSwgMjE5LCAxNTAsIDEzMCwgNjksIDEsIDIxOCwgMTMzLCAxMzAsIDY5LCAxLCAKKyAgICAyMjAsIDM0LCAxMzAsIDY5LCAxLCAyMTgsIDI0MSwgMTMwLCA2OSwgMSwgMTQ0LCAxMzAsIDY5LCAxLCAyMzQsIDc1LCAxMzAsIAorICAgIDY5LCAxLCAyMzMsIDk3LCAxMzAsIDY5LCAxLCAyMzQsIDEzOSwgMTMwLCA2OSwgMSwgMjMzLCAyMDcsIDEzMCwgNjksIDEsIAorICAgIDE3OCwgMTMwLCA2OSwgMSwgMjIxLCAyMTEsIDEzMCwgNjksIDEsIDIyMSwgNDEsIDEzMCwgNjksIDEsIDIyMiwgNzYsIDEzMCwgCisgICAgNjksIDEsIDIyMSwgMTM2LCAxMzAsIDY5LCAxLCAxODMsIDEzMCwgNjksIDEsIDE5OSwgMjExLCAxMzAsIDY5LCAxLCAxOTksIAorICAgIDI0NSwgMTMwLCA2OSwgMSwgMjEzLCAyNTIsIDEzMCwgNjksIDEsIDIxMywgODgsIDEzMCwgNjksIDEsIDIxMiwgMTc1LCAKKyAgICAxMzAsIDY5LCAxLCAyMTMsIDE5MCwgMTMwLCA2OSwgMSwgMjEzLCAxLCAxMzAsIDY5LCAxLCAyMDEsIDExNCwgMTMwLCA2OSwgCisgICAgMSwgMjIwLCAyMTQsIDEzMCwgNjksIDIwMiwgMTg5LCAyMDksIDEsIDgxLCAxMzAsIDY5LCAyMTAsIDE3MiwgMjA5LCAxLCAKKyAgICA4MSwgMTMwLCAyOSwgMjM3LCA5MywgMTMwLCAyOSwgMSwgMjI2LCAxMjEsIDEzMCwgMjksIDEsIDIwOCwgMTcxLCAxMzAsIAorICAgIDI5LCAxLCAyMjYsIDExNCwgMTMwLCAyOSwgMSwgMjE5LCAxNDMsIDEzMCwgMjksIDEsIDIxOSwgMTQxLCAxMzAsIDI5LCAxLCAKKyAgICAyMTksIDE0MCwgMTMwLCAyOSwgMSwgMjA1LCAyNTMsIDEzMCwgMjksIDEsIDIwOCwgMTYwLCAxMzAsIDI5LCAxLCAyMTMsIAorICAgIDc4LCAxMzAsIDI5LCAxLCAyMTMsIDczLCAxMzAsIDI5LCAxLCAyMTMsIDcwLCAxMzAsIDI5LCAxLCAyMTMsIDYzLCAxMzAsIAorICAgIDI5LCAxLCAyMTMsIDU4LCAxMzAsIDI5LCAxLCAyMTMsIDUzLCAxMzAsIDI5LCAxLCAyMTMsIDY0LCAxMzAsIDI5LCAxLCAKKyAgICAyMTMsIDc2LCAxMzAsIDI5LCAxLCAyMjEsIDE5NywgMTMwLCAyOSwgMSwgMjE1LCAxOTAsIDEzMCwgMjksIDEsIDIwOCwgCisgICAgMTY4LCAxMzAsIDI5LCAxLCAyMTUsIDE3OSwgMTMwLCAyOSwgMSwgMjA5LCAxMjksIDEzMCwgMjksIDEsIDIwOCwgMTY1LCAKKyAgICAxMzAsIDI5LCAxLCAyMjgsIDE3NCwgMTMwLCAyOSwgMSwgMjQ2LCAxNjgsIDEzMCwgMjksIDEsIDIwOCwgMTc1LCAxMzAsIAorICAgIDI5LCAxLCAyNDYsIDIzMiwgMTMwLCAyOSwgMSwgMjI2LCAxODMsIDEzMCwgMjksIDEsIDIwNiwgODAsIDEzMCwgMjksIDEsIAorICAgIDIxNSwgMjI3LCAxMzAsIDI5LCAxLCAyMzQsIDY2LCAxMzAsIDI5LCAxLCA2MiwgMTMwLCAyOSwgMSwgMjUxLCAyMjEsIDEzMCwgCisgICAgMjksIDEsIDE4MywgMTMwLCAyOSwgMSwgMjAwLCA5OCwgMTMwLCAyOSwgMSwgMjM4LCAxNDIsIDEzMCwgMjksIDEsIDcyLCAKKyAgICAxMzAsIDI5LCAxLCAyMDAsIDM4LCAxMzAsIDI5LCAxLCAyMDAsIDUxLCAxMzAsIDI5LCAxLCA3NCwgMTMwLCAyOSwgMSwgCisgICAgMjAxLCAxMTQsIDEzMCwgMjksIDEsIDIwMSwgMTEwLCAxMzAsIDI5LCAxLCAyMTcsIDEyMSwgMTMwLCAyOSwgMSwgMTk5LCAKKyAgICAyNDUsIDEzMCwgMjksIDEsIDY2LCAxMzAsIDI5LCAxLCAyMDEsIDUwLCAxMzAsIDI5LCAxLCAyMDEsIDY0LCAxMzAsIDI5LCAKKyAgICAxLCAyMDEsIDMxLCAxMzAsIDI5LCAxLCAxOTksIDIxMSwgMTMwLCAyOSwgMSwgMjM4LCA2OSwgMTMwLCAyOSwgMSwgMjAwLCAKKyAgICA5LCAxMzAsIDI5LCAxLCA3MCwgMTU4LCAyNDcsIDU4LCA1NCwgMTU4LCAyMTUsIDU2LCA1NCwgMTU4LCAyMTgsIDIxNSwgNTQsIAorICAgIDE1OCwgMjIyLCAyMjgsIDE1OCwgMjQ4LCA0NiwgMTQ4LCAxNTgsIDIwMCwgNDIsIDU0LCAxNTgsIDIwMCwgMjQ2LCA1NCwgCisgICAgMTMwLCAyMzYsIDIzOSwgMTYyLCAyMDMsIDQyLCAxMzAsIDk4LCA0OCwgMTMwLCAxODIsIDQ4LCAxMzAsIDg3LCA0OCwgMTMwLCAKKyAgICAxOTEsIDQ4LCAxMzAsIDYzLCAyMDgsIDE5MywgMTMwLCA2NCwgMjQ2LCAxNTUsIDIyOCwgNjIsIDI1MSwgNTgsIDI1MSwgODEsIAorICAgIDIyOCwgNjIsIDI1MSwgNTgsIDIxMCwgMTU0LCAyMjgsIDYyLCAyNTEsIDU4LCAyMDYsIDE1MiwgMjE3LCAxMzksIDIxMywgCisgICAgMTI4LCAyNDcsIDIwLCAyMTMsIDEyOCwgMjQ3LCAyMCwgMzAsIDY4LCA1LCAyNTAsIDg3LCA2MiwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDU2LCA3MiwgMzAsIDY4LCA1LCAyNTAsIDY1LCA3MCwgMzAsIDY4LCA1LCAyNTAsIDMzLCA3NCwgMzAsIDY4LCA1LCAyNTAsIAorICAgIDgzLCA2NiwgMzAsIDY4LCA1LCAyNTAsIDEwMiwgMjQyLCA1OCwgMzAsIDY4LCA1LCAyNTAsIDQ5LCAyNDEsIDE3NSwgMzAsIAorICAgIDY4LCA1LCAyNTAsIDg5LCAyNDEsIDc2LCAzMCwgNjgsIDUsIDI1MCwgNzksIDI0MCwgMjExLCAzMCwgNjgsIDUsIDI1MCwgCisgICAgNDMsIDIzOSwgMTM3LCAzMCwgNjgsIDUsIDI1MCwgMzcsIDIyNywgMjQ4LCAzMCwgNjgsIDUsIDI1MCwgNDgsIDIyNywgMjI3LCAKKyAgICAzMCwgNjgsIDUsIDI1MCwgNTgsIDIyNywgMTY2LCAzMCwgNjgsIDUsIDI1MCwgMjksIDIyNywgMTQ3LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgMTcsIDE2MSwgMzAsIDY4LCA1LCAyNTAsIDUwLCAyMjcsIDgsIDMwLCA2OCwgNSwgMjUwLCAyNywgMjI2LCAxNjMsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNCwgMjI2LCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEzLCAyMjYsIDE1LCAzMCwgNjgsIDUsIDI1MCwgCisgICAgMTQsIDE3OCwgMzAsIDY4LCA1LCAyNTAsIDgwLCAyMjIsIDc2LCAzMCwgNjgsIDUsIDI1MCwgMjEsIDIyMSwgMjExLCAzMCwgCisgICAgNjgsIDUsIDI1MCwgNzgsIDIyMSwgMTM2LCAzMCwgNjgsIDUsIDI1MCwgNzAsIDIyMSwgNDEsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5MSwgMTg4LCAzMCwgNjgsIDUsIDI1MCwgNjksIDIyMCwgMzQsIDMwLCA2OCwgNSwgMjUwLCA2MywgMjE5LCAxNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA0MiwgMjE4LCAyNDEsIDMwLCA2OCwgNSwgMjUwLCAzOSwgMjE4LCAxMzMsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA5OCwgMTcyLCAzMCwgNjgsIDUsIDI1MCwgMjIsIDIxNiwgNzMsIDMwLCA2OCwgNSwgMjUwLCA1NSwgMjE1LCAyMDQsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA4MiwgMjE1LCAxMDYsIDMwLCA2OCwgNSwgMjUwLCA0NCwgMjE0LCAyMjQsIDMwLCA2OCwgNSwgMjUwLCAKKyAgICA3NywgMjE0LCAxNTksIDMwLCA2OCwgNSwgMjUwLCAxNiwgMjE0LCAxMzksIDMwLCA2OCwgNSwgMjUwLCA3MiwgMjE0LCAxMjEsIAorICAgIDMwLCA2OCwgNSwgMjUwLCA2MSwgMjE0LCAxMDksIDMwLCA2OCwgNSwgMjUwLCAzNCwgMjEzLCAyNTIsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA2NiwgMjEzLCAxOTAsIDMwLCA2OCwgNSwgMjUwLCA0MSwgMjEzLCA4OCwgMzAsIDY4LCA1LCAyNTAsIDEwMCwgMjEzLCAKKyAgICAxLCAzMCwgNjgsIDUsIDI1MCwgNjcsIDIxMiwgMTc1LCAzMCwgNjgsIDUsIDI1MCwgNjIsIDIxMiwgNjQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA4NSwgMjExLCAyMDIsIDMwLCA2OCwgNSwgMjUwLCA1MywgMjA5LCAxODIsIDMwLCA2OCwgNSwgMjUwLCA4MSwgMjA5LCAKKyAgICAyOSwgMzAsIDY4LCA1LCAyNTAsIDM2LCAyMDgsIDI0LCAzMCwgNjgsIDUsIDI1MCwgMzUsIDIwNywgMzYsIDMwLCA2OCwgNSwgCisgICAgMjUwLCA5NiwgMjA2LCAyMDEsIDMwLCA2OCwgNSwgMjUwLCA1NywgMjA2LCAxNSwgMzAsIDY4LCA1LCAyNTAsIDk0LCAxMzgsIAorICAgIDMwLCA2OCwgNSwgMjUwLCAyNSwgMjA0LCAyMTUsIDMwLCA2OCwgNSwgMjUwLCA0MCwgMjAxLCAxMTQsIDMwLCA2OCwgNSwgCisgICAgMjUwLCAxOSwgMjAxLCA2NCwgMzAsIDY4LCA1LCAyNTAsIDU0LCAyMDEsIDMxLCAzMCwgNjgsIDUsIDI1MCwgNTIsIDIwMSwgCisgICAgMCwgMzAsIDY4LCA1LCAyNTAsIDc2LCAxOTksIDExNCwgMzAsIDY4LCA1LCAyNTAsIDIwLCAxOTksIDg5LCAzMCwgNjgsIDUsIAorICAgIDI1MCwgNzMsIDE5OSwgMTQsIDMwLCA2OCwgNSwgMjUwLCA2OCwgMjU0LCAxNDcsIDMwLCA2OCwgNSwgMjUwLCA1MSwgMjU0LCAKKyAgICAzNSwgMzAsIDY4LCA1LCAyNTAsIDEwLCAyNTAsIDEzOSwgMzAsIDY4LCA1LCAyNTAsIDIzLCAyMzksIDEwMywgMzAsIDY4LCAKKyAgICA1LCAyNTAsIDYsIDIzOSwgMTAyLCAzMCwgNjgsIDUsIDI1MCwgNDYsIDIxOCwgNjksIDMwLCA2OCwgNSwgMjUwLCA2NCwgCisgICAgMjE0LCAyMjIsIDMwLCA2OCwgNSwgMjUwLCAzMiwgMjE0LCAyMjYsIDMwLCA2OCwgNSwgMjUwLCAxOCwgMjEzLCAyNTAsIDMwLCAKKyAgICA2OCwgNSwgMjUwLCA2MCwgMjEzLCAyNDksIDMwLCA2OCwgNSwgMjUwLCAyNiwgMjEzLCAwLCAzMCwgNjgsIDUsIDI1MCwgMjgsIAorICAgIDIwNywgMzMsIDMwLCA2OCwgNSwgMjUwLCA4LCAyMDQsIDE2OCwgMzAsIDY4LCA1LCAyNTAsIDUsIDEwNSwgMzAsIDY4LCAxNiwgCisgICAgMjUwLCA3NSwgMzAsIDY4LCAxNiwgMjUwLCA3NCwgMzAsIDY4LCAxNiwgMjUwLCA3MSwgMzAsIDY4LCAxNiwgMjUwLCA1OSwgCisgICAgMzAsIDY4LCAxNiwgMjUwLCA0NywgMzAsIDY4LCAxNiwgMjUwLCA0NSwgMzAsIDY4LCAxNiwgMjUwLCAzOCwgMzAsIDY4LCAKKyAgICAxNiwgMjUwLCAzMSwgMzAsIDY4LCAxNiwgMjUwLCAzMCwgMzAsIDY4LCAxNiwgMjUwLCAxNSwgMzAsIDY4LCAxNiwgMjUwLCAKKyAgICAxMiwgMzAsIDY4LCAxNiwgMjUwLCAxMSwgMzAsIDY4LCAxNiwgMjUwLCA5LCAzMCwgNjgsIDE2LCAyNTAsIDcsIDMwLCA2OCwgCisgICAgMTM2LCAyNTAsIDQsIDIyMiwgMTgwLCAzMCwgNjgsIDEzNiwgMjUwLCAzLCAyMDAsIDI1MCwgMzAsIDY4LCAxMzYsIDI1MCwgCisgICAgMiwgMjQxLCAxNTgsIDMwLCA2OCwgMTM2LCAyNTAsIDEsIDIzOCwgMTE5LCAzMCwgNjgsIDEzNiwgMjUwLCAwLCAyMjIsIAorICAgIDE1MCwgMzAsIDY4LCAxMzYsIDI0OSwgMjU1LCAyMDgsIDExNiwgMzAsIDY4LCAxMzYsIDI0OSwgMjU0LCAyMzgsIDUwLCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAyNTMsIDIxMywgMjE2LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNTIsIDIxMCwgNjQsIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDI1MSwgMjM0LCAxMzgsIDMwLCA2OCwgMTM2LCAyNDksIDI1MCwgMjA4LCAyNTEsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDI0OSwgMjQ4LCAxMjIsIDMwLCA2OCwgMTM2LCAyNDksIDI0OCwgMjQyLCAyNTUsIDMwLCA2OCwgMTM2LCAyNDksIDI0NywgCisgICAgMjQ4LCAyMiwgMzAsIDY4LCAxMzYsIDI0OSwgMjQ2LCAyMDEsIDM5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyNDUsIDI0OSwgNzMsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDI0NCwgMjE3LCA4OCwgMzAsIDY4LCAxMzYsIDI0OSwgMjQzLCAyMDgsIDIyMywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjQyLCAyNDIsIDE2MSwgMzAsIDY4LCAyMjEsIDk3LCAyNDksIDI0MSwgMjI3LCA1NiwgMzAsIDY4LCAyMjEsIAorICAgIDk3LCAyNDksIDI0MCwgMjI3LCA2NiwgMzAsIDY4LCAxMzYsIDI0OSwgMjM5LCAyMTcsIDEwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjM4LCAyMDEsIDEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzcsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMzYsIDI1MCwgMjI3LCAKKyAgICAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMjM1LCAyMjIsIDMyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMzQsIDI0OCwgNDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIzMywgMjM1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIzMiwgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjMxLCAyMDAsIDI0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMjMwLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMjksIDMwLCA2OCwgMTM2LCAKKyAgICAyNDksIDIyOCwgMjMzLCAxMjQsIDMwLCA2OCwgMTM2LCAyNDksIDIyNywgMzAsIDY4LCAxMzYsIDI0OSwgMjI2LCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAyMjUsIDMwLCA2OCwgMjIxLCA5NywgMjQ5LCAyMjMsIDIwNCwgMTgzLCAzMCwgNjgsIDEzNiwgMjQ5LCAKKyAgICAyMjIsIDMwLCA2OCwgMTM2LCAyNDksIDIyMSwgMzAsIDY4LCAxMzYsIDI0OSwgMjIwLCAyNDYsIDEwNCwgMzAsIDY4LCAxMzYsIAorICAgIDI0OSwgMjE5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTgsIDMwLCA2OCwgMTM2LCAyNDksIDIxNywgMjM2LCA0NiwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMjE2LCAyNTAsIDIxNCwgMzAsIDY4LCAxMzYsIDI0OSwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTQsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDIxMywgMzAsIDY4LCAxMzYsIDI0OSwgMjEyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMTEsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIxMCwgMzAsIDY4LCAxMzYsIDI0OSwgMjA5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDgsIDMwLCA2OCwgCisgICAgMTM2LCAyNDksIDIwNywgMzAsIDY4LCAxMzYsIDI0OSwgMjA2LCAyMjEsIDg5LCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDUsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDIwNCwgMjA1LCAxMDgsIDMwLCA2OCwgMTM2LCAyNDksIDIwMywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMjAyLCAzMCwgNjgsIDEzNiwgMjQ5LCAyMDEsIDMwLCA2OCwgMTM2LCAyNDksIDIwMCwgMzAsIDY4LCAxMzYsIDI0OSwgMTk5LCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxOTgsIDMwLCA2OCwgMTM2LCAyNDksIDE5NywgMzAsIDY4LCAxMzYsIDI0OSwgMTk2LCAzMCwgCisgICAgNjgsIDEzNiwgMjQ5LCAxOTUsIDMwLCA2OCwgMTM2LCAyNDksIDE5NCwgMzAsIDY4LCAxMzYsIDI0OSwgMTkzLCAzMCwgNjgsIAorICAgIDEzNiwgMjQ5LCAxOTIsIDIzNCwgMTA3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNzEsIDIzNiwgMjUxLCAzMCwgNjgsIDEzNiwgCisgICAgMjQ5LCAxNjgsIDI0OSwgNTAsIDMwLCA2OCwgMTM2LCAyNDksIDE2MywgMjA4LCAyMzAsIDMwLCA2OCwgMTM2LCAyNDksIAorICAgIDE2MiwgNDgsIDMwLCA2OCwgMTM2LCAyNDksIDE2MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTYwLCAyMDcsIDE2OSwgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTU5LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTgsIDMwLCA2OCwgMTM2LCAyNDksIDE1NywgMjAxLCAzNSwgCisgICAgMjQ3LCAxNywgMzAsIDY4LCAxMzYsIDI0OSwgMTU2LCAyNDcsIDE3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTUsIDI0NywgMTgsIAorICAgIDIzNiwgMjE1LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTQsIDIwMSwgMzcsIDMwLCA2OCwgMTM2LCAyNDksIDE1MywgMzAsIDY4LCAKKyAgICAxMzYsIDI0OSwgMTUyLCAzMCwgNjgsIDIyMSwgOTcsIDI0OSwgMTUxLCAyNDEsIDExLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNTAsIAorICAgIDMwLCA2OCwgMTM2LCAyNDksIDE0OSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ3LCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDYsIDMwLCAKKyAgICA2OCwgMTM2LCAyNDksIDE0NSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQ0LCAyNDEsIDI0NywgMzAsIDY4LCAxMzYsIDI0OSwgCisgICAgMTQzLCAzMCwgNjgsIDEzNiwgMjQ5LCAxNDIsIDMwLCA2OCwgMTM2LCAyNDksIDE0MSwgMzAsIDY4LCAxMzYsIDI0OSwgMTQwLCAKKyAgICAzMCwgNjgsIDEzNiwgMjQ5LCAxMzksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAyMjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxOTEsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxOTAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxODksIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxODcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODUsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODMsIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODIsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxODEsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxODAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzksIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNzgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgCisgICAgMjQ5LCAxNzYsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAKKyAgICAxNzQsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzMsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzIsIAorICAgIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNzAsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjksIDMwLCA2OCwgCisgICAgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjcsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjYsIDMwLCA2OCwgMTM2LCAKKyAgICAyMDIsIDI0NSwgMjQ5LCAxNjUsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxNjQsIDMwLCA2OCwgMTM2LCAyMDIsIAorICAgIDI0NSwgMjQ5LCAxNDgsIDMwLCA2OCwgMTM2LCAyMDIsIDI0NSwgMjQ5LCAxMzgsIDI1MSwgMjE0LCAyMDAsIDIzOCwgMjEwLCAKKyAgICAxNTUsIDIyNCwgMTc2LCAyNTEsIDIxNCwgMjAwLCAyMzgsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMjUxLCAyMTQsIDI0NywgNywgCisgICAgODEsIDI1MSwgMjE0LCA0MSwgMTAyLCAyNTEsIDIxNCwgNDEsIDEwNSwgMjUxLCAyMTQsIDQxLCAxNDcsIDI1MSwgMjE0LCAKKyAgICA0MSwgMTQ5LCAyNTEsIDIxNCwgNDEsIDE2NCwgMjUxLCAyMTQsIDQxLCAxODcsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzUsIAorICAgIDI1MSwgMjE0LCA0MSwgMTkyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTEzLCAyNTEsIDIxNCwgNDEsIDIwNiwgMTY2LCAyNTEsIAorICAgIDIxNCwgNDEsIDIwNCwgMTU5LCAyNTEsIDIxNCwgNDEsIDIwNiwgNjcsIDI1MSwgMjE0LCA0MSwgMjM2LCAyMzUsIDI1MSwgCisgICAgMjE0LCA0MSwgMjM3LCAxMDQsIDI1MSwgMjE0LCA0MSwgMjA5LCA5MiwgMjUxLCAyMTQsIDQxLCAyMTAsIDEyOSwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzgsIDIyMiwgMjUxLCAyMTQsIDQxLCAyMTksIDEwOCwgMjUxLCAyMTQsIDQxLCAxMTIsIDIzMywgODIsIAorICAgIDI1MSwgMjE0LCA0MSwgMTIwLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDEyNiwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAKKyAgICAyMzYsIDIyOSwgMjMzLCA4MiwgMjUxLCAyMTQsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIwOSwgCisgICAgMTA2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTM2LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTE0LCAyMzMsIDgyLCAyNTEsIDIxNCwgNDEsIDExMiwgMjA2LCA1MCwgCisgICAgMjUxLCAyMTQsIDQxLCAxMjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMTI2LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIAorICAgIDIzNiwgMjI5LCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzNywgNjEsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA5LCAKKyAgICAxMDYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjEwLCAxMzYsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjM4LCAyMzIsIAorICAgIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjE5LCAxMTQsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCAxNjcsIDIwNiwgCisgICAgNTAsIDI1MSwgMjE0LCA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDI1MSwgMjE0LCA0MSwgMjA2LCA2OCwgMjA2LCA1MCwgMjUxLCAKKyAgICAyMTQsIDQxLCAyMzYsIDIzNiwgMjA2LCA1MCwgMjUxLCAyMTQsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMjUxLCAyMTQsIAorICAgIDQxLCAyMDksIDkzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxMCwgMTMwLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIzOCwgCisgICAgMjIzLCAyMDYsIDUwLCAyNTEsIDIxNCwgNDEsIDIxOSwgMTA5LCAyMDYsIDUwLCAyNTEsIDIxNCwgMjAxLCA1MywgMjQ5LCAKKyAgICA2NSwgMjAzLCAyMzksIDI1MSwgMjE0LCAyMDEsIDUzLCAyMzcsIDczLCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIAorICAgIDIxMSwgMTk2LCAyMDcsIDI1NCwgMjUxLCAyMTQsIDIwMSwgNTMsIDIwNiwgNzUsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjAxLCAKKyAgICA1MywgMjM2LCAyMjIsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjM5LCAxNDAsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAKKyAgICAyNTEsIDIxNCwgMjI0LCAxNTcsIDIyMiwgNzUsIDIzNywgNzMsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjExLCAKKyAgICAxOTYsIDIwNywgMjU0LCAyNTEsIDIxNCwgMjIyLCA3NSwgMjA2LCA3NSwgMjA3LCAyNTQsIDMxLCAyNTEsIDI0MiwgMjUwLCAKKyAgICAxNDEsIDExMiwgMjE0LCA4NywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTEyLCAyMzQsIDIxMywgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzksIDE2MiwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMTY0LCAzMSwgMjUxLCAyNDIsIDI1MCwgCisgICAgMTQxLCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMjM3LCA2MSwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCAxMDUsIDIwNiwgNTAsIAorICAgIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIAorICAgIDE2NywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyNTAsIDE0MSwgMTEyLCAyMzMsIDgzLCAyMDYsIDI1MSwgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjM3LCA2MSwgMjMzLCAKKyAgICA4MywgMjA2LCAyNTEsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjA2LCA1MSwgMjA2LCAyNTEsIDMxLCAyNTEsIAorICAgIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIwNiwgNTEsIDIwNiwgMjUxLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMzcsIAorICAgIDYxLCAyMDgsIDEwMywgMzEsIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAyMzcsIDEwNSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDExMiwgMjMzLCA4MywgMjA4LCAKKyAgICAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgNjEsIDIzMywgODMsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIAorICAgIDI1MCwgMTQxLCAxMTIsIDIwNiwgNTEsIDIwOCwgMTAzLCAzMSwgMjUxLCAyNDIsIDI1MCwgMTQxLCAyMDYsIDE2NywgMjA2LCAKKyAgICA1MSwgMjA4LCAxMDMsIDMxLCAyNTEsIDI0MiwgMjUwLCAxNDEsIDIzNywgMTA1LCAyMDYsIDUxLCAyMDgsIDEwMywgMzEsIAorICAgIDI1MSwgMjQyLCAyNTAsIDE0MSwgMjA2LCAxNjcsIDIyMSwgMTM5LCAzMSwgMjUxLCAyNDIsIDIzNCwgMTAxLCAxMTIsIDIxNSwgCisgICAgMTIzLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDEwMiwgMzEsIDI1MSwgMjQyLCAyMzQsIDk3LCAxMDIsIDMxLCAyNTEsIAorICAgIDI0MiwgMjM4LCAxMjgsIDEwNSwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAxMDUsIDMxLCAyNTEsIDI0MiwgMjQyLCAxNTgsIAorICAgIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDEyMCwgMjM5LCAxNjEsIDMxLCAyNTEsIDI0MiwgMjA1LCAKKyAgICA3NCwgMTY0LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgMTY2LCAzMSwgMjUxLCAyNDIsIDIwNSwgNzQsIDIwNiwgCisgICAgMTY3LCAyNTEsIDEwOSwgMTksIDMxLCAyNTEsIDI0MiwgMjM0LCA5NywgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjIyLCAKKyAgICAyMiwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgMjA2LCAxNjYsIDMxLCAyNTEsIDI0MiwgMjA2LCA5MCwgCisgICAgMjA2LCA2NywgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIDEwNCwgMzEsIDI1MSwgMjQyLCAyMDUsIDc0LCAyMzcsIAorICAgIDEwNSwgMjUxLCAxMDksIDE5LCAzMSwgMjUxLCAyNDIsIDIzNCwgOTcsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgCisgICAgOTAsIDIzNywgMTA0LCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAKKyAgICAxMjYsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgMjM4LCAxMjgsIDIzNywgNjEsIDIzMywgODIsIDMxLCAyNTEsIDI0MiwgCisgICAgMjA1LCA3NCwgMjM3LCA2MSwgMjMzLCA4MiwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgCisgICAgMjUxLCAyNDIsIDI0NywgMTE1LCAyMzcsIDYxLCAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIyMCwgMTEwLCAyMzcsIDYxLCAKKyAgICAyMzMsIDgyLCAzMSwgMjUxLCAyNDIsIDIwNiwgOTAsIDExMiwgMjA2LCA1MCwgMzEsIDI1MSwgMjQyLCAyMDYsIDkwLCAyMzcsIAorICAgIDYxLCAyMDYsIDUwLCAzMSwgMjUxLCAyNDIsIDI0MSwgMTM5LCAyMzcsIDYxLCAyMjEsIDEzOSwgMzEsIDI1MSwgMjQyLCAKKyAgICAyMDgsIDY0LCAyMzcsIDEwNSwgMjIxLCAxMzksIDMxLCAxMTIsIDE2NywgNTQsIDMxLCAxMTIsIDE2NywgMiwgMjUxLCAxMDksIAorICAgIDE5LCAzMSwgMTIwLCAyMDYsIDcyLCA1NCwgMzEsIDEyNiwgMjE0LCA4NiwgNTQsIDMxLCAyMDAsIDQ5LCA1NCwgMzEsIDIwNiwgCisgICAgMjUyLCA1NCwgMzEsIDIzOSwgMTYzLCA1NCwgMzEsIDIxNywgMTM2LCA1NCwgMzEsIDEyMCwgMjE3LCAxMzUsIDU0LCAzMSwgCisgICAgMTI2LCAyMTcsIDEzNSwgNTQsIDMxLCAyMzYsIDIyOSwgMjE3LCAxMzUsIDU0LCAzMSwgMjM3LCA2MSwgMjE3LCAxMzUsIDU0LCAKKyAgICAzMSwgMjIyLCAxNiwgNTQsIDMxLCAyMjUsIDIwMSwgMjQ5LCA2NSwgNTQsIDMxLCAyMjQsIDE1MCwgNTQsIDMxLCAyMTcsIDAsIAorICAgIDU0LCAzMSwgMjAwLCAxNzIsIDU0LCAzMSwgMjUwLCAxOTUsIDU0LCAzMSwgMjUwLCAyMTAsIDU0LCAzMSwgMjM1LCA4MywgCisgICAgNTQsIDMxLCAyMDUsIDM1LCAyNDksIDY1LCA1NCwgMzEsIDE5OSwgODIsIDU0LCAzMSwgMTEyLCAyMTQsIDg4LCA1NCwgMzEsIAorICAgIDIwOSwgMTMxLCA1NCwgMzEsIDIyOCwgOTgsIDU0LCAyMTgsIDIzNSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNiwgNTQsIDIxMiwgCisgICAgMjQwLCAyMDMsIDI1NCwgNTQsIDIxMiwgMjQwLCAyMTAsIDE1OSwgNTQsIDIxMiwgMjQwLCAyMTAsIDEyNCwgNTQsIDIxMiwgCisgICAgMjQwLCAyNDEsIDI2LCAyMTAsIDEyNCwgNTQsIDIxMiwgMjQwLCAyMDksIDE1NCwgNTQsIDIxMiwgMjQwLCAyNDEsIDEzNSwgCisgICAgNTQsIDIxMiwgMjQwLCAyMTQsIDcxLCA1NCwgMjEyLCAyNDAsIDIxMCwgMTQzLCA1NCwgMjEyLCAyNDAsIDIzOSwgMTE3LCAKKyAgICA1NCwgMjEyLCAyNDAsIDI1MCwgMTg5LCA1NCwgMjEyLCAyNDAsIDI0NywgNTEsIDU0LCAzMSwgMTYsIDIwNiwgMjIyLCAyMTMsIAorICAgIDkwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDYzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDExNSwgMjM0LCAKKyAgICAxMzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwNiwgMjI1LCAyMzQsIDEzNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAKKyAgICAxMzgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0NiwgMjI3LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDAsIDI1MCwgMjE1LCAKKyAgICAyNDAsIDI0MSwgMywgMiwgMjM0LCAxMDcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNiwgMzgsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDIwNiwgMTMsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQ4LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDgsIDg1LCAyMTUsIAorICAgIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDMwLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyNDYsIDk3LCAyMTUsIDI0MCwgMjQxLCAzLCAKKyAgICAyLCAyMjIsIDE3OSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjIyLCAxMjQsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIxMSwgCisgICAgMjM5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMjQsIDIwNSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ4LCAxMDYsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NywgMTIyLCAyMTUsIDEyOCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQwLCAxOTUsIDIxNSwgCisgICAgMjQwLCAyNDEsIDMsIDIsIDI0NiwgNzYsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwOSwgNjMsIDIxNSwgMjQwLCAyNDEsIDMsIAorICAgIDIsIDI0NiwgNzcsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjQ5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTAsIDE3LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzMsIDEyNCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjM0LCA3MiwgMjE1LCAyNDAsIAorICAgIDI0MSwgMywgMiwgMjQ4LCAxNywgMjI1LCAxNiwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjQ3LCAxMTEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIxMywgMjE2LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMzksIDI0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAKKyAgICAyMzksIDE2OCwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjA0LCAxOTksIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDI0OCwgMjUyLCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTUsIDEyOSwgMjA1LCAxMDgsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIwMiwgMjE1LCAKKyAgICAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDEzMSwgMjE1LCAyNDAsIDI0MSwgMywgMiwgMjEyLCAyMzEsIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIyNCwgMTg5LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMTYsIDIzNiwgMjQ5LCAxMjksIDIxNSwgMjQwLCAKKyAgICAyNDEsIDMsIDIsIDIzNywgMjAsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDIzNSwgNzUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIAorICAgIDIwOCwgNjUsIDIxNSwgMjQwLCAyNDEsIDMsIDIsIDQsIDI1MCwgMTEzLCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAyMDEsIDc0LCAKKyAgICAyNDksIDg0LCAyMTUsIDI0MCwgMjQxLCAzLCAyLCAzOCwgMjE3LCAxMzgsIDk3LCAyMjQsIDAsIDEsIDYyLCAyMjQsIDAsIDEsIAorICAgIDcyLCAyMjQsIDAsIDEsIDI1MCwgMTAzLCAyMjQsIDAsIDEsIDI0OCwgMjAxLCAyMjQsIDAsIDEsIDIzNiwgMTU2LCAyMjQsIAorICAgIDAsIDEsIDI0MiwgMTUzLCAyMjQsIDAsIDEsIDcwLCAyMjQsIDAsIDEsIDIwMSwgMTQ3LCAyMjQsIDAsIDEsIDE5OSwgMTU3LCAKKyAgICAyMjQsIDAsIDEsIDIwNiwgMTI0LCAyMjQsIDAsIDEsIDIyNywgMjUxLCAyMjQsIDAsIDEsIDIyNywgMTE4LCAyMjQsIDAsIDEsIAorICAgIDIxNCwgMTY3LCAyMjQsIDAsIDEsIDE1NiwgMjI0LCAwLCAxLCAyMjMsIDI0MywgMjI0LCAwLCAxLCAyMjAsIDIxNCwgMjI0LCAKKyAgICAwLCAxLCAyMjEsIDE0MSwgMjI0LCAwLCAxLCAyMTksIDIyLCAyMjQsIDAsIDEsIDY2LCAyMjQsIDAsIDEsIDIxNiwgMjI2LCAKKyAgICAyMjQsIDAsIDEsIDIyNiwgMTEwLCAyMjQsIDAsIDEsIDE0NiwgMjI0LCAwLCAxLCAyMTIsIDEyMiwgMjI0LCAwLCAxLCAyMDcsIAorICAgIDgzLCAyMjQsIDAsIDEsIDIwNSwgMCwgMjI0LCAwLCAxLCAyNTEsIDg1LCAyMjQsIDAsIDEsIDIzOCwgMTc5LCAyMjQsIDAsIAorICAgIDEsIDIzNCwgMjQ3LCAyMjQsIDAsIDEsIDIwMCwgMTk1LCAyNDcsIDEyOCwgMSwgNjIsIDI0NywgMTI4LCAxLCAyMTYsIDIxMiwgCisgICAgMjQ3LCAxMjgsIDEsIDI0MiwgMTUzLCAyNDcsIDEyOCwgMSwgMTU2LCAyNDcsIDEyOCwgMSwgMjAzLCAxODAsIDI0NywgMTI4LCAKKyAgICAxLCAxNDYsIDI0NywgMTI4LCAxLCAyMjUsIDQ0LCAyNDcsIDEyOCwgMSwgMjU0LCAxNDcsIDI0NywgMTI4LCAxLCAyMTQsIAorICAgIDE2NywgMjQ3LCAxMjgsIDEsIDI1MCwgMTAzLCAyNDcsIDEyOCwgMSwgMjIzLCAyNDMsIDI0NywgMTI4LCAxLCA3NCwgMjQ3LCAKKyAgICAxMjgsIDEsIDI0MiwgNjAsIDI0NywgMTI4LCAxLCAyMDcsIDgzLCAyNDcsIDEyOCwgMSwgMjEwLCAxMTYsIDI0NywgMTI4LCAKKyAgICAxLCAyMTAsIDExNSwgMjQ3LCAxMjgsIDEsIDIxMiwgMTIyLCAyNDcsIDEyOCwgMSwgMjQ3LCAyMjIsIDI0NywgMTI4LCAxLCAKKyAgICA2NiwgMjQ3LCAxMjgsIDEsIDIxOSwgMjIsIDI0NywgMTI4LCAxLCAyMDAsIDE5NSwgMjQ3LCAxMjgsIDEsIDIyMCwgMjE0LCAKKyAgICAyNDcsIDEyOCwgMSwgMjA0LCAyNTUsIDI0NywgMTI4LCAxLCAyMTYsIDIyNiwgMjQ3LCAxMjgsIDEsIDIwOCwgMTgyLCAyNDcsIAorICAgIDEyOCwgMSwgNzAsIDI0NywgMTI4LCAxLCA3MiwgMjQ3LCAxMjgsIDEsIDIwMywgMTc3LCAyNDcsIDEyOCwgMSwgMjI3LCAKKyAgICAxMTgsIDI0NywgMTI4LCAxLCAyMjcsIDEwOSwgMjQ3LCAxMjgsIDEsIDIyMCwgNzcsIDI0NywgMTI4LCAxLCAyMDMsIDE4MiwgCisgICAgMjQ3LCAxMjgsIDEsIDIzNiwgMTU2LCAyNDcsIDEyOCwgMSwgMjM2LCA5MSwgMjQ3LCAxMjgsIDEsIDIwOCwgMTIzLCAyNDcsIAorICAgIDEyOCwgMSwgMjA4LCAxMjIsIDI0NywgMTI4LCAxLCAyMTksIDI1NSwgMjQ3LCAxMjgsIDEsIDIyOCwgMTUxLCAyNDcsIDEyOCwgCisgICAgMSwgMjQ3LCAyMjEsIDI0NywgMTI4LCAxLCAyMDUsIDAsIDI0NywgMTI4LCAxLCAyMDMsIDE3OSwgMjQ3LCAxMjgsIDEsIAorICAgIDIxMiwgMjE2LCAyNDcsIDEyOCwgMSwgMjIyLCAxMTUsIDI0NywgMTI4LCAxLCAyMjIsIDExNCwgMjQ3LCAxMjgsIDEsIDIyMiwgCisgICAgMTEzLCAyNDcsIDEyOCwgMSwgMjIyLCAxMTIsIDI0NywgMTI4LCAxLCAyMjUsIDQzLCAyNDcsIDEyOCwgMSwgMjM5LCAyOCwgCisgICAgMjQ3LCAxMjgsIDEsIDIwMywgMTc4LCA4NSwgMjM4LCAxMzEsIDIwNiwgNDksIDgxLCA4NSwgMjM4LCAxMzEsIDE3LCAxMDIsIAorICAgIDg1LCAyMzgsIDEzMSwgMTcsIDEwNSwgODUsIDIzOCwgMTMxLCAxNywgMTQ3LCA4NSwgMjM4LCAxMzEsIDE3LCAxNDksIDg1LCAKKyAgICAyMzgsIDEzMSwgMTcsIDE2NCwgODUsIDIzOCwgMTMxLCAxNywgMTg3LCA4NSwgMjM4LCAxMzEsIDE3LCAyMTAsIDEzNSwgODUsIAorICAgIDIzOCwgMTMxLCAxNywgMTkyLCA4NSwgMjM4LCAxMzEsIDE3LCAyMTksIDExMywgODUsIDIzOCwgMTMxLCA0MSwgMjA2LCAKKyAgICAxNjYsIDg1LCAyMzgsIDEzMSwgNDEsIDIwNCwgMTU5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMDYsIDY3LCA4NSwgMjM4LCAxMzEsIAorICAgIDQxLCAyMzYsIDIzNSwgODUsIDIzOCwgMTMxLCA0MSwgMjM3LCAxMDQsIDg1LCAyMzgsIDEzMSwgNDEsIDIwOSwgOTIsIDg1LCAKKyAgICAyMzgsIDEzMSwgNDEsIDIxMCwgMTI5LCA4NSwgMjM4LCAxMzEsIDQxLCAyMzgsIDIyMiwgODUsIDIzOCwgMTMxLCA0MSwgCisgICAgMjE5LCAxMDgsIDg1LCAyMzgsIDEzMSwgNDEsIDExMiwgMjMzLCA4MiwgODUsIDIzOCwgMTMxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICA4NSwgMjM4LCAxMzEsIDQxLCAxMjYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzNiwgMjI5LCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCA4NSwgMjM4LCAxMzEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgODUsIAorICAgIDIzOCwgMTMxLCA0MSwgMjEwLCAxMzYsIDIzMywgODIsIDg1LCAyMzgsIDEzMSwgNDEsIDIzOCwgMjMyLCAyMzMsIDgyLCA4NSwgCisgICAgMjM4LCAxMzEsIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgNDAsIDM5LCAxLCA2MiwgNDAsIDM5LCAxLCAyNDksIDgsIDQwLCAKKyAgICAzOSwgMSwgMjI3LCA4LCA0MCwgMzksIDEsIDI0MSwgMTc1LCA0MCwgMzksIDEsIDcyLCA0MCwgMzksIDEsIDIwMywgNTksIAorICAgIDQwLCAzOSwgMSwgMTk5LCA4OSwgNDAsIDM5LCAxLCAyMzQsIDEzOSwgNDAsIDM5LCAxLCAyMDYsIDEwNiwgNDAsIDM5LCAxLCAKKyAgICA3MCwgNDAsIDM5LCAxLCAxNjEsIDQwLCAzOSwgMSwgMjM4LCAyMDksIDQwLCAzOSwgMSwgMjM4LCAxOTAsIDQwLCAzOSwgMSwgCisgICAgMjM4LCAxNzksIDQwLCAzOSwgMSwgMjM4LCA5NCwgNDAsIDM5LCAxLCA3NCwgNDAsIDM5LCAxLCAyMTYsIDczLCA0MCwgMzksIAorICAgIDEsIDIxMCwgNjUsIDQwLCAzOSwgMSwgMjI2LCAxNSwgNDAsIDM5LCAxLCAyMzgsIDExNSwgNDAsIDM5LCAxLCAyMzgsIDEwNCwgCisgICAgNDAsIDM5LCAxLCAyMDYsIDIwMSwgNDAsIDM5LCAxLCA2NiwgNDAsIDM5LCAxLCAyMzgsIDIxMiwgNDAsIDM5LCAxLCAyMTUsIAorICAgIDIzMiwgNDAsIDM5LCAxLCAyMjYsIDE5MiwgNDAsIDM5LCAxLCAyMzgsIDI0OCwgNDAsIDM5LCAxLCAyMzgsIDEwNiwgNDAsIAorICAgIDM5LCAxLCAyNDcsIDgsIDQwLCAzOSwgMSwgMjI4LCAxNTEsIDQwLCAzOSwgMSwgMjAzLCAxODIsIDQwLCAzOSwgMSwgMjM4LCAKKyAgICA4NywgNDAsIDM5LCAyMTgsIDkzLCAxMDIsIDQwLCAzOSwgMjE4LCA5MywgMTY0LCA0MCwgMzksIDIxOCwgOTMsIDIwNiwgCisgICAgMTY2LCA0MCwgMzksIDIxOCwgOTMsIDIzNywgMTA0LCAyMzUsIDkzLCAxLCAyNTEsIDE3OSwgMjM1LCA5MywgMSwgMjQ5LCAKKyAgICAxMDEsIDIzNSwgOTMsIDEsIDIzNSwgMTU4LCAyMzUsIDkzLCAxLCAyNDIsIDM5LCAyMzUsIDkzLCAxLCAyNTEsIDE3NSwgCisgICAgMjM1LCA5MywgMSwgMjE0LCAxNTAsIDIzNSwgOTMsIDEsIDIyOCwgNywgMjM1LCA5MywgMSwgMjM0LCAyMjYsIDIzNSwgOTMsIAorICAgIDEsIDIwNiwgNjMsIDIzNSwgOTMsIDEsIDIzOCwgMjIwLCAyMzUsIDkzLCAxLCAyMjUsIDIzOCwgMjM1LCA5MywgMSwgMjI1LCAKKyAgICAxNTMsIDIzNSwgOTMsIDEsIDIyMiwgMTcyLCAyMzUsIDkzLCAxLCAyMjAsIDExMiwgMjM1LCA5MywgMSwgMjI3LCAyMjAsIAorICAgIDIzNSwgOTMsIDEsIDIwMywgMjAwLCAyMzUsIDkzLCAxLCAyMTYsIDE4NywgMjM1LCA5MywgMSwgMjE5LCAxMDgsIDIzNSwgCisgICAgOTMsIDEsIDIxMywgMjI4LCAyMzUsIDkzLCAxLCAyMTEsIDI0MiwgMjM1LCA5MywgMSwgMjA2LCAxODAsIDIzNSwgOTMsIDEsIAorICAgIDIwMSwgMTAsIDIzNSwgOTMsIDEsIDIzNywgMTc1LCAyMzUsIDkzLCAxLCAyMjgsIDE1NSwgMjM1LCA5MywgMSwgMjMzLCA2NiwgCisgICAgMjM1LCA5MywgMSwgMjE3LCAxMCwgMjM1LCA5MywgMSwgMjE5LCAxMTQsIDIzMywgODIsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIAorICAgIDg1LCA0MCwgMjE2LCAxOCwgMSwgMjQ4LCAzLCA0MCwgMjE2LCAxOCwgMSwgMjM2LCA3MywgNDAsIDIxNiwgMTgsIDEsIDI0MCwgCisgICAgMTk5LCA0MCwgMjE2LCAxOCwgMSwgNzIsIDQwLCAyMTYsIDE4LCAxLCAxOTksIDU5LCA0MCwgMjE2LCAxOCwgMSwgMjM5LCAKKyAgICA4NSwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDQwLCAyMTYsIDE4LCAxLCAyMzksIDgzLCA0MCwgMjE2LCAxOCwgMSwgNzAsIAorICAgIDQwLCAyMTYsIDE4LCAxLCAyMjYsIDc3LCA0MCwgMjE2LCAxOCwgMSwgMjI1LCAxMiwgNDAsIDIxNiwgMTgsIDEsIDIyMiwgCisgICAgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMjAsIDIyLCA0MCwgMjE2LCAxOCwgMSwgMjAyLCAxNzgsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTYsIDYwLCA0MCwgMjE2LCAxOCwgMSwgMjEzLCAxNTMsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgNDAsIDIxNiwgMTgsIAorICAgIDEsIDIwNywgOCwgNDAsIDIxNiwgMTgsIDEsIDY2LCA0MCwgMjE2LCAxOCwgMSwgMjQ2LCAyNDUsIDQwLCAyMTYsIDE4LCAxLCAKKyAgICAyMTAsIDEsIDQwLCAyMTYsIDE4LCAxLCAyMTAsIDY3LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTMsIDQwLCAyMTYsIDE4LCAKKyAgICAxLCAyMDAsIDI5LCA0MCwgMjE2LCAxOCwgMSwgNzQsIDQwLCAyMTYsIDE4LCAxLCAyMTcsIDYzLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjM4LCAyNDgsIDQwLCAyMTYsIDE4LCAxLCAxNDQsIDQwLCAyMTYsIDE4LCAxLCAyMDUsIDEwLCA0MCwgMjE2LCAxOCwgMSwgCisgICAgMjAzLCA0NywgNDAsIDIxNiwgMTgsIDEsIDIwMCwgMzMsIDQwLCAyMTYsIDE4LCAxLCAyMDAsIDMxLCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjAwLCA2NSwgNDAsIDIxNiwgMTgsIDEsIDIyOCwgMTc4LCA0MCwgMjE2LCAxOCwgMSwgMTk5LCAyMTEsIDQwLCAyMTYsIAorICAgIDE4LCAxLCAxODMsIDQwLCAyMTYsIDE4LCAxLCAyMzIsIDI0MCwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyNTEsIDg1LCAzOCwgCisgICAgNDAsIDIxNiwgMTgsIDEsIDI0MCwgMTk5LCAzOCwgNDAsIDIxNiwgMTgsIDEsIDE5OSwgOTYsIDM4LCA0MCwgMjE2LCAxOCwgCisgICAgMSwgMjIwLCAyMiwgMzgsIDQwLCAyMTYsIDE4LCAxLCAyMDksIDE2MSwgMjA0LCAyNiwgMSwgMjUxLCAxMTYsIDIwNCwgMjYsIAorICAgIDEsIDI0OCwgMjA4LCAyMDQsIDI2LCAxLCAyMzYsIDYxLCAyMDQsIDI2LCAxLCAyMjYsIDIwNywgMjA0LCAyNiwgMSwgMjQxLCAKKyAgICAxMzYsIDIwNCwgMjYsIDEsIDIzMywgMjA3LCAyMDQsIDI2LCAxLCAyMDEsIDAsIDIwNCwgMjYsIDEsIDE5OSwgODAsIDIwNCwgCisgICAgMjYsIDEsIDIzMywgMTE2LCAyMDQsIDI2LCAxLCAyMDYsIDE0NiwgMjA0LCAyNiwgMSwgMTk5LCAyMzQsIDIwNCwgMjYsIDEsIAorICAgIDIyNywgODYsIDIwNCwgMjYsIDEsIDIxMCwgMjEsIDIwNCwgMjYsIDEsIDIyNSwgODcsIDIwNCwgMjYsIDEsIDIyMiwgNDcsIAorICAgIDIwNCwgMjYsIDEsIDI0MSwgOTYsIDIwNCwgMjYsIDEsIDIxOCwgODksIDIwNCwgMjYsIDEsIDE5OSwgMywgMjA0LCAyNiwgMSwgCisgICAgMjEyLCAxOCwgMjA0LCAyNiwgMSwgMjUxLCAxNzEsIDIwNCwgMjYsIDEsIDIxNCwgMjI0LCAyMDQsIDI2LCAxLCAyMTIsIDU1LCAKKyAgICAyMDQsIDI2LCAxLCAyMTQsIDEwMiwgMjA0LCAyNiwgMSwgMjEzLCAyMDcsIDIwNCwgMjYsIDEsIDIwNiwgMTEwLCAyMDQsIAorICAgIDI2LCAxLCAyMzUsIDE5NCwgMjA0LCAyNiwgMSwgMTM4LCAyMDQsIDI2LCAxLCA3MCwgMjA0LCAyNiwgMSwgNjYsIDIwNCwgCisgICAgMjYsIDEsIDIwOCwgMTM0LCAyMDQsIDI2LCAyMDAsIDIzOCwgMjQwLCAyMzksIDQwLCAyMTYsIDEyLCAyLCA2MiwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDcwLCA0MCwgMjE2LCAxMiwgMiwgNjYsIDQwLCAyMTYsIDEyLCAyLCAxNjEsIDQwLCAyMTYsIDEyLCAyLCAKKyAgICAyMjYsIDE1LCA0MCwgMjE2LCAxMiwgMiwgMjM2LCA4OSwgNDAsIDIxNiwgMTIsIDIsIDIzNSwgNTAsIDQwLCAyMTYsIDEyLCAKKyAgICAyLCAyMDAsIDE4MSwgNDAsIDIxNiwgMTIsIDIsIDI0NywgMTkwLCA0MCwgMjE2LCAxMiwgMiwgMjI3LCAyNDgsIDQwLCAyMTYsIAorICAgIDEyLCAyLCAyMjcsIDIwNywgNDAsIDIxNiwgMTIsIDIsIDIwNywgMzYsIDQwLCAyMTYsIDEyLCAyLCAyMDQsIDIxNSwgNDAsIAorICAgIDIxNiwgMTIsIDIsIDI0MiwgNTgsIDQwLCAyMTYsIDEyLCAyLCAyNDEsIDc2LCA0MCwgMjE2LCAxMiwgMiwgMjM5LCAxMzcsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMDYsIDEyMiwgNDAsIDIxNiwgMTIsIDIsIDE3MiwgNDAsIDIxNiwgMTIsIDIsIDI0OSwgMTM2LCAKKyAgICA0MCwgMjE2LCAxMiwgMiwgMjM3LCAxOTUsIDQwLCAyMTYsIDEyLCAyLCAxODgsIDQwLCAyMTYsIDEyLCAyLCAyMTgsIDEzMywgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE3OCwgNDAsIDIxNiwgMTIsIDIsIDIyMSwgMjExLCA0MCwgMjE2LCAxMiwgMiwgMjIxLCA0MSwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDE4MywgNDAsIDIxNiwgMTIsIDIsIDIwMywgOTAsIDQwLCAyMTYsIDEyLCAyLCAyMDIsIDIzNCwgCisgICAgNDAsIDIxNiwgMTIsIDIsIDIxMywgMjUyLCA0MCwgMjE2LCAxMiwgMiwgMjEyLCAxNzUsIDQwLCAyMTYsIDEyLCAyLCAxOTQsIAorICAgIDQwLCAyMTYsIDEyLCAyLCAyMTIsIDY0LCA0MCwgMjE2LCAxMiwgMiwgMTk5LCAxMTQsIDQwLCAyMTYsIDEyLCAyLCAyMTAsIAorICAgIDExNCwgNDAsIDIxNiwgMTIsIDIsIDIwOCwgMTc5LCA0MCwgMjE2LCAxMiwgMiwgMTQ0LCA0MCwgMjE2LCAxMiwgMiwgMjUwLCAKKyAgICAxMzMsIDQwLCAyMTYsIDEyLCAyLCAyNTAsIDEzMiwgNDAsIDIxNiwgMTIsIDIsIDI1MCwgMTMxLCA0MCwgMjE2LCAxMiwgMiwgCisgICAgMjAwLCAxNTIsIDQwLCAyMTYsIDEyLCAyLCAyNDIsIDM1LCA0MCwgMjE2LCAxMiwgMiwgMjQyLCAzNCwgNDAsIDIxNiwgMTIsIAorICAgIDIsIDI0OSwgMTExLCA0MCwgMjE2LCAxMiwgMiwgMjQ3LCAyNDIsIDQwLCAyMTYsIDEyLCAyMDAsIDIzOCwgMjQwLCAyMzksIAorICAgIDQwLCAyMTYsIDEyLCA0MSwgMTAyLCA0MCwgMjE2LCAxMiwgNDEsIDEwNSwgNDAsIDIxNiwgMTIsIDQxLCAyMDYsIDE2NiwgCisgICAgNDAsIDIxNiwgMTIsIDQxLCAyMDQsIDE1OSwgNDAsIDIxNiwgMTIsIDQxLCAyMzMsIDgyLCAyNDEsIDExNiwgNiwgMSwgMTY4LCAKKyAgICA3MCwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNiwgMSwgCisgICAgMTY4LCAyNTEsIDE4NSwgMjQxLCAxMTYsIDYsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAxNjgsIDIxNywgNjMsIAorICAgIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA2LCAKKyAgICAxLCAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA2LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA2LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDYsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA2LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDYsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA2LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDYsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA2LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNiwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA2LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA2LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDYsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA2LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA2LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNiwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDYsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNiwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA2LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNiwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDYsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNiwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDYsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNiwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA2LCAxLCAyMzgsIDUxLCAyNDEsIDExNiwgNCwgMSwgMTY4LCA3MCwgCisgICAgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDYyLCAyNDEsIDExNiwgNCwgMSwgMTY4LCAKKyAgICAyNTEsIDE4NSwgMjQxLCAxMTYsIDQsIDEsIDE2OCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAxNjgsIDIxNywgNjMsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzAsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgNzIsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyMDksIDI1MCwgNjIsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjUxLCAxODUsIDI0MSwgMTE2LCA0LCAxLCAyMDksIAorICAgIDI1MCwgNzQsIDI0MSwgMTE2LCA0LCAxLCAyMDksIDI1MCwgMjE3LCA2MywgMjQxLCAxMTYsIDQsIDEsIDI1MCwgMTEyLCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjE2LCAyMzgsIDI0MSwgMTE2LCA0LCAxLCAyMDAsIDIxNiwgMjQxLCAxMTYsIDQsIDEsIDIwMCwgCisgICAgNDgsIDI0MSwgMTE2LCA0LCAxLCAyMzQsIDI0NywgMjQxLCAxMTYsIDQsIDEsIDIxNiwgNjEsIDI0MSwgMTE2LCA0LCAxLCAKKyAgICAyNDgsIDI1MiwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTkwLCAyNDEsIDExNiwgNCwgMSwgMjQxLCAxNjEsIDI0MSwgMTE2LCAKKyAgICA0LCAxLCAyNDcsIDQsIDI0MSwgMTE2LCA0LCAxLCAyMjcsIDIyNSwgMjQxLCAxMTYsIDQsIDEsIDIyNywgMTUsIDI0MSwgCisgICAgMTE2LCA0LCAxLCAyMzYsIDM2LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAyNDgsIDI0MSwgMTE2LCA0LCAxLCAyMDMsIDU0LCAKKyAgICAyNDEsIDExNiwgNCwgMSwgMjM4LCA3NCwgMjQxLCAxMTYsIDQsIDEsIDIwNiwgMTA0LCAyNDEsIDExNiwgNCwgMSwgMjM4LCAKKyAgICAxMDQsIDI0MSwgMTE2LCA0LCAxLCAxOTksIDg3LCAyNDEsIDExNiwgNCwgMSwgMjM4LCA5NCwgMjQxLCAxMTYsIDQsIDEsIAorICAgIDE5OSwgNjcsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDExNSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMjA5LCAyNDEsIDExNiwgNCwgCisgICAgMSwgMjM4LCAxOTAsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDE3OSwgMjQxLCAxMTYsIDQsIDEsIDIzOCwgMTY1LCAyNDEsIAorICAgIDExNiwgNCwgMSwgMjE3LCAxMDUsIDI0MSwgMTE2LCA0LCAxLCAyMzgsIDUxLCAyMTAsIDcyLCAxLCAyMTYsIDU4LCAyMTAsIAorICAgIDcyLCAxLCAyMDUsIDE0NCwgMjEwLCA3MiwgMSwgMjI2LCAxNTksIDIxMCwgNzIsIDEsIDIzNywgMTQwLCAyMTAsIDcyLCAxLCAKKyAgICAyMDYsIDc5LCAyMTAsIDcyLCAxLCAyMDksIDI5LCAyMTAsIDcyLCAxLCAyMDcsIDIwNCwgMjEwLCA3MiwgMSwgMjQ2LCAxODQsIAorICAgIDIxMCwgNzIsIDEsIDIwMCwgNTAsIDIxMCwgNzIsIDEsIDIzMywgNzksIDIxMCwgNzIsIDEsIDI0OCwgMTg3LCAyMTAsIDcyLCAKKyAgICAxLCAyNDEsIDE3NCwgMjEwLCA3MiwgMSwgMjM2LCA3NSwgMjEwLCA3MiwgMSwgMjAyLCAxNzMsIDIxMCwgNzIsIDEsIDIwNiwgCisgICAgODUsIDIxMCwgNzIsIDEsIDE5OSwgMTIsIDIxMCwgNzIsIDEsIDIyMiwgNzQsIDIxMCwgNzIsIDEsIDIyNywgMTQ1LCAyMTAsIAorICAgIDcyLCAxLCAyMDAsIDI1NCwgMjEwLCA3MiwgMSwgMjM0LCAyMzUsIDIxMCwgNzIsIDEsIDIyNCwgOTQsIDIxMCwgNzIsIDEsIAorICAgIDIyMSwgMTY1LCAyMTAsIDcyLCAxLCAyMjgsIDE1OCwgMjEwLCA3MiwgMSwgMjM4LCAyNDYsIDIxMCwgNzIsIDEsIDI1MCwgCisgICAgMTgxLCAyMTAsIDcyLCAxLCAyNTEsIDIyNSwgMjEwLCA3MiwgMSwgMjE3LCA3OCwgMjEwLCA3MiwgMSwgMjAwLCAyNDEsIAorICAgIDIxMCwgNzIsIDEsIDIxNiwgMjU0LCAyMTAsIDcyLCAxLCAyNTEsIDE4NSwgMjEwLCA3MiwgMSwgMjEyLCAyNTQsIDIxMCwgCisgICAgNzIsIDEsIDIxOCwgODksIDIxMCwgNzIsIDEsIDIzOSwgMTAsIDIxMCwgNzIsIDEsIDI1MSwgMTkwLCAyMTAsIDcyLCAxLCAKKyAgICAyMzIsIDIzMSwgMjEwLCA3MiwgMSwgMjAzLCAyMjgsIDIxMCwgNzIsIDEsIDIxNywgMTQ0LCAyMTAsIDcyLCAxLCAyMTcsIAorICAgIDU1LCAyMTAsIDcyLCAxLCAyMTcsIDEwMywgMjEwLCA3MiwgMSwgMjUwLCAxMTUsIDIxMCwgNzIsIDEsIDI1MCwgMjI5LCAKKyAgICAyMTAsIDcyLCAxLCAyMTcsIDMzLCAyMTAsIDcyLCAxLCAyNTEsIDE2NiwgMjEwLCA3MiwgMSwgMjM4LCAxMDgsIDIxMCwgNzIsIAorICAgIDEsIDI1MCwgMjA3LCAyMTAsIDcyLCAxLCAyMzksIDIxLCAyMTAsIDcyLCAxLCAyMzIsIDIzOSwgMjEwLCA3MiwgMSwgMjAwLCAKKyAgICAxNSwgMjE3LCAxMiwgMSwgMjUxLCAxNDIsIDIxNywgMTIsIDEsIDI0OSwgMTM2LCAyMTcsIDEyLCAxLCAyMDcsIDM2LCAyMTcsIAorICAgIDEyLCAxLCAyMjcsIDI0OCwgMjE3LCAxMiwgMSwgMjAwLCAxODEsIDIxNywgMTIsIDEsIDIyNiwgMjA3LCAyMTcsIDEyLCAxLCAKKyAgICAyNDEsIDE2MCwgMjE3LCAxMiwgMSwgMjEzLCAyNTIsIDIxNywgMTIsIDEsIDIxMiwgNjQsIDIxNywgMTIsIDEsIDIxMCwgMjcsIAorICAgIDIxNywgMTIsIDEsIDI0MSwgMTAwLCAyMTcsIDEyLCAxLCAyNDcsIDEwMSwgMjE3LCAxMiwgMSwgMjM2LCA4OSwgMjE3LCAxMiwgCisgICAgMSwgMjM3LCAxOTUsIDIxNywgMTIsIDEsIDIxNCwgMTU3LCAyMTcsIDEyLCAxLCAyMjcsIDEwMiwgMjE3LCAxMiwgMSwgMjI1LCAKKyAgICAxNzEsIDIxNywgMTIsIDEsIDIyMSwgMTc5LCAyMTcsIDEyLCAxLCAyMTgsIDczLCAyMTcsIDEyLCAxLCAyMDEsIDcyLCAyMTcsIAorICAgIDEyLCAxLCAxNDQsIDIxNywgMTIsIDEsIDE4MywgMjE3LCAxMiwgMSwgNjIsIDIxNywgMTIsIDEsIDcyLCAyMTcsIDEyLCAxLCAKKyAgICA3MCwgMjE3LCAxMiwgMSwgNzQsIDIxNywgMTIsIDEsIDY2LCAyMTcsIDEyLCAxLCAyNTIsIDEzOCwgMjE3LCAxMiwgMSwgCisgICAgMjM4LCAyNTUsIDIxNywgMTIsIDEsIDIxNywgNjMsIDIxNywgMTIsIDE3LCAxOTksIDgxLCAyMTcsIDEyLCAxNywgMTAyLCAKKyAgICAyMTcsIDEyLCAxNywgMTA1LCAyMTcsIDEyLCAxNywgMTQ3LCAyMTcsIDEyLCAxNywgMTQ5LCAyMTcsIDEyLCAxNywgMTY0LCAKKyAgICAyMTcsIDEyLCAxNywgMTg3LCAyMTcsIDEyLCAxNywgMjEwLCAxMzUsIDIxNywgMTIsIDE3LCAxOTIsIDIxNywgMTIsIDE3LCAKKyAgICAyMTksIDExMywgMjE3LCAxNCwgNiwgMSwgNjIsIDIxNywgMTQsIDYsIDEsIDI1MSwgMTc2LCAyMTcsIDE0LCA2LCAxLCAyNTEsIAorICAgIDE3MSwgMjE3LCAxNCwgNiwgMSwgMjUxLCAxODUsIDIxNywgMTQsIDYsIDEsIDI0OCwgNzIsIDIxNywgMTQsIDYsIDEsIDI0NywgCisgICAgMzcsIDIxNywgMTQsIDYsIDEsIDIzOCwgMjQwLCAyMTcsIDE0LCA2LCAxLCA3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMjEsIAorICAgIDIxNywgMTQsIDYsIDEsIDE0NCwgMjE3LCAxNCwgNiwgMSwgMjMzLCAzNiwgMjE3LCAxNCwgNiwgMSwgNzAsIDIxNywgMTQsIAorICAgIDYsIDEsIDE2MSwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzksIDIxNywgMTQsIDYsIDEsIDIyNSwgMjAzLCAyMTcsIDE0LCA2LCAKKyAgICAxLCAxOTQsIDIxNywgMTQsIDYsIDEsIDE3OCwgMjE3LCAxNCwgNiwgMSwgMTg4LCAyMTcsIDE0LCA2LCAxLCA3NCwgMjE3LCAKKyAgICAxNCwgNiwgMSwgMjE3LCAxMDIsIDIxNywgMTQsIDYsIDEsIDE3MiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzgsIDIxNywgMTQsIAorICAgIDYsIDEsIDIxMiwgNjQsIDIxNywgMTQsIDYsIDEsIDIxMCwgMTE0LCAyMTcsIDE0LCA2LCAxLCAyMDcsIDM2LCAyMTcsIDE0LCAKKyAgICA2LCAxLCAyMzgsIDIzNywgMjE3LCAxNCwgNiwgMSwgMjA1LCAzMiwgMjE3LCAxNCwgNiwgMSwgMjM4LCAyMzYsIDIxNywgMTQsIAorICAgIDYsIDEsIDIwNSwgMjIsIDIxNywgMTQsIDYsIDEsIDI0MSwgMTAwLCAyMTcsIDE0LCA2LCAxLCA2NiwgMjE3LCAxNCwgNiwgMSwgCisgICAgMjAxLCAxMTQsIDIxNywgMTQsIDYsIDEsIDIyNiwgMjA3LCAyMTcsIDE0LCA2LCAxLCAyMzUsIDE5OSwgMjE3LCAxNCwgNiwgCisgICAgMSwgMTk5LCAxMTQsIDIxNywgMTQsIDYsIDEsIDE5OSwgNzcsIDIxNywgMTQsIDQsIDEsIDYyLCAyMTcsIDE0LCA0LCAxLCAKKyAgICAyNTEsIDE3NiwgMjE3LCAxNCwgNCwgMSwgMjUxLCAxNzEsIDIxNywgMTQsIDQsIDEsIDI1MSwgMTg1LCAyMTcsIDE0LCA0LCAKKyAgICAxLCAyNDgsIDcyLCAyMTcsIDE0LCA0LCAxLCAyNDcsIDM3LCAyMTcsIDE0LCA0LCAxLCAyMzgsIDI0MCwgMjE3LCAxNCwgNCwgCisgICAgMSwgNzIsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjIxLCAyMTcsIDE0LCA0LCAxLCAxNDQsIDIxNywgMTQsIDQsIDEsIDIzMywgCisgICAgMzYsIDIxNywgMTQsIDQsIDEsIDcwLCAyMTcsIDE0LCA0LCAxLCAxNjEsIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM5LCAyMTcsIAorICAgIDE0LCA0LCAxLCAyMjUsIDIwMywgMjE3LCAxNCwgNCwgMSwgMTk0LCAyMTcsIDE0LCA0LCAxLCAxNzgsIDIxNywgMTQsIDQsIAorICAgIDEsIDE4OCwgMjE3LCAxNCwgNCwgMSwgNzQsIDIxNywgMTQsIDQsIDEsIDIxNywgMTAyLCAyMTcsIDE0LCA0LCAxLCAxNzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM4LCAyMTcsIDE0LCA0LCAxLCAyMTIsIDY0LCAyMTcsIDE0LCA0LCAxLCAyMTAsIDExNCwgCisgICAgMjE3LCAxNCwgNCwgMSwgMjA3LCAzNiwgMjE3LCAxNCwgNCwgMSwgMjM4LCAyMzcsIDIxNywgMTQsIDQsIDEsIDIwNSwgMzIsIAorICAgIDIxNywgMTQsIDQsIDEsIDIzOCwgMjM2LCAyMTcsIDE0LCA0LCAxLCAyMDUsIDIyLCAyMTcsIDE0LCA0LCAxLCAyNDEsIDEwMCwgCisgICAgMjE3LCAxNCwgNCwgMSwgNjYsIDIxNywgMTQsIDQsIDEsIDIwMSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAyMjYsIDIwNywgMjE3LCAKKyAgICAxNCwgNCwgMSwgMjM1LCAxOTksIDIxNywgMTQsIDQsIDEsIDE5OSwgMTE0LCAyMTcsIDE0LCA0LCAxLCAxOTksIDc3LCAyMzgsIAorICAgIDIwNSwgMSwgNjIsIDIzOCwgMjA1LCAxLCAyNDksIDgsIDIzOCwgMjA1LCAxLCAyNDcsIDc2LCAyMzgsIDIwNSwgMSwgMjQ3LCAKKyAgICA4LCAyMzgsIDIwNSwgMSwgMjQxLCAxNzUsIDIzOCwgMjA1LCAxLCAyMjAsIDY3LCAyMzgsIDIwNSwgMSwgMjQxLCA5MSwgCisgICAgMjM4LCAyMDUsIDEsIDIzOCwgMjM0LCAyMzgsIDIwNSwgMSwgNzIsIDIzOCwgMjA1LCAxLCAyMzcsIDE0NywgMjM4LCAyMDUsIAorICAgIDEsIDIzNiwgMTUsIDIzOCwgMjA1LCAxLCAyMzUsIDEzMiwgMjM4LCAyMDUsIDEsIDIzNCwgMTM5LCAyMzgsIDIwNSwgMSwgCisgICAgNzAsIDIzOCwgMjA1LCAxLCAyMjcsIDIyNywgMjM4LCAyMDUsIDEsIDIyNywgOCwgMjM4LCAyMDUsIDEsIDIyNSwgNDAsIAorICAgIDIzOCwgMjA1LCAxLCAyMjQsIDEzNCwgMjM4LCAyMDUsIDEsIDIyMiwgNzYsIDIzOCwgMjA1LCAxLCAyMjAsIDM0LCAyMzgsIAorICAgIDIwNSwgMSwgMTg4LCAyMzgsIDIwNSwgMSwgMjE5LCA5MSwgMjM4LCAyMDUsIDEsIDc0LCAyMzgsIDIwNSwgMSwgMjE2LCA3MywgCisgICAgMjM4LCAyMDUsIDEsIDIxNCwgMTM5LCAyMzgsIDIwNSwgMSwgMjEzLCAxOTAsIDIzOCwgMjA1LCAxLCAyMTIsIDIxMCwgMjM4LCAKKyAgICAyMDUsIDEsIDIxMSwgMjAyLCAyMzgsIDIwNSwgMSwgMjEwLCA2NSwgMjM4LCAyMDUsIDEsIDIwNiwgMjAxLCAyMzgsIDIwNSwgCisgICAgMSwgMjA2LCAxMDYsIDIzOCwgMjA1LCAxLCA2NiwgMjM4LCAyMDUsIDEsIDIwMywgNTksIDIzOCwgMjA1LCAxLCAyMDAsIAorICAgIDE3NSwgMjM4LCAyMDUsIDEsIDIwMCwgMTIzLCAyMzgsIDIwNSwgMSwgMTk5LCA4OSwgMjM4LCAyMDUsIDEsIDE5OSwgNjgsIAorICAgIDIzOCwgMjA1LCAxLCAyMzUsIDE4NSwgMjM4LCAyMDUsIDEsIDIzNSwgMTkxLCAyMzgsIDIwNSwgMSwgMjI2LCAxOTIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjUxLCAxMTEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQ4LCAyMTAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjM1LCAxNDksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQxLCAyNDAsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjM5LCA5LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDE5OSwgOTksIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjM4LCAxNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAxOTksIDYyLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIwNiwgMjI3LCAKKyAgICAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMzcsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCAyMjIsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMTk5LCA3NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDM0LCAyNDcsIDEwOCwgMjUxLCAKKyAgICAxNDMsIDEsIDIxMCwgMTE0LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyNSwgODAsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjI4LCA0NiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDAsIDE3MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIAorICAgIDEwMSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDcsIDEzNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDIwOCwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjcsIDQ3LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIyMywgMjUyLCAyNDcsIAorICAgIDEwOCwgMjUxLCAxNDMsIDEsIDIzNCwgODYsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE0LCAxNDAsIDI0NywgMTA4LCAKKyAgICAyNTEsIDE0MywgMSwgMjUxLCAzMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDYsIDIwMSwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyNDYsIDIzNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyNDIsIDE2NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMjIsIDE2MSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTQsIDE0NCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTgsIAorICAgIDIwMCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzksIDc4LCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDIxMCwgOTcsIDI0NywgCisgICAgMTA4LCAyNTEsIDE0MywgMSwgMjI3LCAyMjgsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjE3LCA3OCwgMjQ3LCAxMDgsIAorICAgIDI1MSwgMTQzLCAxLCAyMDQsIDEzMiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzcsIDE3MCwgMjQ3LCAxMDgsIDI1MSwgCisgICAgMTQzLCAxLCAyMzksIDkxLCAyNDcsIDEwOCwgMjUxLCAxNDMsIDEsIDI0NywgMTQsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgCisgICAgMjE2LCA0NywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMzUsIDE3NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTMsIAorICAgIDIwNCwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMTAsIDEyMywgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDIsIDIzNiwgCisgICAgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDUsIDIwNiwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMDksIDIyOSwgMjQ3LCAKKyAgICAxMDgsIDI1MSwgMTQzLCAxLCAyMjgsIDUsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjQyLCAxNjYsIDI0NywgMTA4LCAyNTEsIAorICAgIDE0MywgMSwgMjQ3LCAxMDEsIDI0NywgMTA4LCAyNTEsIDE0MywgMSwgMjAwLCA1NSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAKKyAgICAyMTUsIDEzOSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAxLCAyMjYsIDEyNSwgMjQ3LCAxMDgsIDI1MSwgMTQzLCAyNDYsIDE0MywgCisgICAgODEsIDMwLCAzNSwgMiwgMjUyLCA4OCwgMzAsIDM1LCAyLCAyNTIsIDg3LCAzMCwgMzUsIDIsIDI1MiwgODYsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA4NSwgMzAsIDM1LCAyLCAyNTIsIDg0LCAzMCwgMzUsIDIsIDI1MiwgODMsIDMwLCAzNSwgMiwgMjUyLCA4MiwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDgxLCAzMCwgMzUsIDIsIDI1MiwgODAsIDMwLCAzNSwgMiwgMjUyLCA3OSwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDc4LCAzMCwgMzUsIDIsIDI1MiwgNzcsIDMwLCAzNSwgMiwgMjUyLCA3NiwgMzAsIDM1LCAyLCAyNTIsIDc1LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNzQsIDMwLCAzNSwgMiwgMjUyLCA3MywgMzAsIDM1LCAyLCAyNTIsIDcyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNzEsIDMwLCAzNSwgMiwgMjUyLCA3MCwgMzAsIDM1LCAyLCAyNTIsIDY5LCAzMCwgMzUsIDIsIDI1MiwgNjgsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA2NywgMzAsIDM1LCAyLCAyNTIsIDY2LCAzMCwgMzUsIDIsIDI1MiwgNjUsIDMwLCAzNSwgMiwgMjUyLCA2NCwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDYzLCAzMCwgMzUsIDIsIDI1MiwgNjIsIDMwLCAzNSwgMiwgMjU1LCA5NiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDYxLCAzMCwgMzUsIDIsIDI1MiwgNjAsIDMwLCAzNSwgMiwgMjUyLCA1OSwgMzAsIDM1LCAyLCAyNTIsIDU4LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgNTcsIDMwLCAzNSwgMiwgMjUyLCA1NiwgMzAsIDM1LCAyLCAyNTIsIDU1LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgNTQsIDMwLCAzNSwgMiwgMjUyLCA1MywgMzAsIDM1LCAyLCAyNTIsIDUyLCAzMCwgMzUsIDIsIDI1MiwgNTEsIDMwLCAzNSwgCisgICAgMiwgMjUyLCA1MCwgMzAsIDM1LCAyLCAyNTIsIDQ5LCAzMCwgMzUsIDIsIDI1MiwgNDgsIDMwLCAzNSwgMiwgMjUyLCA0NywgCisgICAgMzAsIDM1LCAyLCAyNTIsIDQ2LCAzMCwgMzUsIDIsIDI1MiwgNDUsIDMwLCAzNSwgMiwgMjUyLCA0NCwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDQzLCAzMCwgMzUsIDIsIDI1MiwgNDIsIDMwLCAzNSwgMiwgMjUyLCA0MSwgMzAsIDM1LCAyLCAyNTIsIDQwLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMzksIDMwLCAzNSwgMiwgMjUyLCAzOCwgMzAsIDM1LCAyLCAyNTIsIDM3LCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMzYsIDMwLCAzNSwgMiwgMjUyLCAzNSwgMzAsIDM1LCAyLCAyNTIsIDM0LCAzMCwgMzUsIDIsIDI1MiwgMzMsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAzMiwgMzAsIDM1LCAyLCAyNTIsIDMxLCAzMCwgMzUsIDIsIDI1MiwgMzAsIDMwLCAzNSwgMiwgMjUyLCAyOSwgCisgICAgMzAsIDM1LCAyLCAyNTIsIDI4LCAzMCwgMzUsIDIsIDI1MiwgMjcsIDMwLCAzNSwgMiwgMjUyLCAyNiwgMzAsIDM1LCAyLCAKKyAgICAyNTIsIDI1LCAzMCwgMzUsIDIsIDI1MiwgMjQsIDMwLCAzNSwgMiwgMjUyLCAyMywgMzAsIDM1LCAyLCAyNTIsIDIyLCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMjEsIDMwLCAzNSwgMiwgMjUyLCAyMCwgMzAsIDM1LCAyLCAyNTIsIDE5LCAzMCwgMzUsIDIsIDI1NSwgCisgICAgOSwgMzAsIDM1LCAyLCAyNTIsIDE4LCAzMCwgMzUsIDIsIDI1MiwgMTcsIDMwLCAzNSwgMiwgMjU0LCAyMzAsIDMwLCAzNSwgCisgICAgMiwgMjUyLCAxNiwgMzAsIDM1LCAyLCAyNTIsIDE1LCAzMCwgMzUsIDIsIDI1MiwgMTQsIDMwLCAzNSwgMiwgMjUyLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTQsIDIxNywgMzAsIDM1LCAyLCAyNTIsIDEyLCAzMCwgMzUsIDIsIDI1MiwgMTEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxMCwgMzAsIDM1LCAyLCAyNTIsIDksIDMwLCAzNSwgMiwgMjUyLCA4LCAzMCwgMzUsIDIsIDI1NCwgMzMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAzMiwgMzAsIDM1LCAyLCAyNTQsIDMxLCAzMCwgMzUsIDIsIDI1NCwgMzAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICAyOSwgMzAsIDM1LCAyLCAyNTQsIDI4LCAzMCwgMzUsIDIsIDI1NCwgMjcsIDMwLCAzNSwgMiwgMjU0LCAyNiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDI0LCAzMCwgMzUsIDIsIDI1NCwgMjMsIDMwLCAzNSwgMiwgMjU0LCAyMiwgMzAsIDM1LCAyLCAyNTQsIDIxLCAKKyAgICAzMCwgMzUsIDIsIDI1NCwgMjAsIDMwLCAzNSwgMiwgMjU0LCAxOSwgMzAsIDM1LCAyLCAyNTQsIDE3LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgMTYsIDMwLCAzNSwgMiwgMjU0LCAxNSwgMzAsIDM1LCAyLCAyNTQsIDE0LCAzMCwgMzUsIDIsIDI1NCwgMTMsIDMwLCAKKyAgICAzNSwgMiwgMjU0LCAxMiwgMzAsIDM1LCAyLCAyNTQsIDExLCAzMCwgMzUsIDIsIDI1NCwgMTAsIDMwLCAzNSwgMiwgMjU0LCAKKyAgICA5LCAzMCwgMzUsIDIsIDI1NCwgOCwgMzAsIDM1LCAyLCAyNTQsIDcsIDMwLCAzNSwgMiwgMjU0LCA2LCAzMCwgMzUsIDIsIAorICAgIDI1NCwgNSwgMzAsIDM1LCAyLCAyNTQsIDQsIDMwLCAzNSwgMiwgMjU0LCAzLCAzMCwgMzUsIDIsIDI1NCwgMiwgMzAsIDM1LCAKKyAgICAyLCAyNTQsIDEsIDMwLCAzNSwgMiwgMjU0LCAwLCAzMCwgMzUsIDIsIDI1MywgMjU1LCAzMCwgMzUsIDIsIDI1MywgMjUzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjUyLCAzMCwgMzUsIDIsIDI1MywgMjUxLCAzMCwgMzUsIDIsIDI1MywgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjQ2LCAzMCwgMzUsIDIsIDI1MywgMjQ1LCAzMCwgMzUsIDIsIDI1MywgMjQ0LCAzMCwgMzUsIDIsIDI1MywgMjQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjM5LCAzMCwgMzUsIDIsIDI1MywgMjM4LCAzMCwgMzUsIDIsIDI1MywgMjM3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjM2LCAzMCwgMzUsIDIsIDI1MywgMjM1LCAzMCwgMzUsIDIsIDI1MywgMjM0LCAzMCwgMzUsIDIsIDI1MywgMjMzLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjMyLCAzMCwgMzUsIDIsIDI1MywgMjMxLCAzMCwgMzUsIDIsIDI1MywgMjMwLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjI5LCAzMCwgMzUsIDIsIDI1MywgMjI4LCAzMCwgMzUsIDIsIDI1MywgMjI3LCAzMCwgMzUsIDIsIDI1MywgMjI2LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjI1LCAzMCwgMzUsIDIsIDI1MywgMjI0LCAzMCwgMzUsIDIsIDI1MywgMjIzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjIyLCAzMCwgMzUsIDIsIDI1MywgMjIxLCAzMCwgMzUsIDIsIDI1MywgMjIwLCAzMCwgMzUsIDIsIDI1MywgMjE5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjE4LCAzMCwgMzUsIDIsIDI1MywgMjE2LCAzMCwgMzUsIDIsIDI1MywgMjE1LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjE0LCAzMCwgMzUsIDIsIDI1MywgMjEzLCAzMCwgMzUsIDIsIDI1MywgMjEyLCAzMCwgMzUsIDIsIDI1MywgMjEwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMjA5LCAzMCwgMzUsIDIsIDI1MywgMjA4LCAzMCwgMzUsIDIsIDI1MywgMjA3LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMjA1LCAzMCwgMzUsIDIsIDI1MywgMjA0LCAzMCwgMzUsIDIsIDI1MywgMjAzLCAzMCwgMzUsIDIsIDI1MywgMTY5LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTY3LCAzMCwgMzUsIDIsIDI1MywgMTY1LCAzMCwgMzUsIDIsIDI1MywgMTYzLCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTYxLCAzMCwgMzUsIDIsIDI1MywgMTU5LCAzMCwgMzUsIDIsIDI1MywgMTU3LCAzMCwgMzUsIDIsIDI1MywgMTU1LCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTUzLCAzMCwgMzUsIDIsIDI1MywgMTUxLCAzMCwgMzUsIDIsIDI1MywgMTQ5LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTQ2LCAzMCwgMzUsIDIsIDI1MywgMTQ0LCAzMCwgMzUsIDIsIDI1MywgMTQyLCAzMCwgMzUsIDIsIDI1MywgMTQwLCAKKyAgICAzMCwgMzUsIDIsIDI1MywgMTM4LCAzMCwgMzUsIDIsIDI1MywgMTM2LCAzMCwgMzUsIDIsIDI1MywgMTM0LCAzMCwgMzUsIDIsIAorICAgIDI1MywgMTMyLCAzMCwgMzUsIDIsIDI1MywgNTAsIDMwLCAzNSwgMiwgMjUzLCA0OSwgMzAsIDM1LCAyLCAyNTMsIDQ4LCAzMCwgCisgICAgMzUsIDIsIDI1MywgNDcsIDMwLCAzNSwgMiwgMjUzLCA0NiwgMzAsIDM1LCAyLCAyNTMsIDQ1LCAzMCwgMzUsIDIsIDI1MywgCisgICAgNDMsIDMwLCAzNSwgMiwgMjUzLCA0MiwgMzAsIDM1LCAyLCAyNTMsIDQxLCAzMCwgMzUsIDIsIDI1MywgNDAsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAzOSwgMzAsIDM1LCAyLCAyNTMsIDM4LCAzMCwgMzUsIDIsIDI1MywgMzYsIDMwLCAzNSwgMiwgMjUzLCAzNSwgCisgICAgMzAsIDM1LCAyLCAyNTMsIDMxLCAzMCwgMzUsIDIsIDI1MywgMzAsIDMwLCAzNSwgMiwgMjUzLCAyOCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDI3LCAzMCwgMzUsIDIsIDI1MywgMjYsIDMwLCAzNSwgMiwgMjUzLCAyNSwgMzAsIDM1LCAyLCAyNTMsIDI0LCAzMCwgCisgICAgMzUsIDIsIDI1MywgMjMsIDMwLCAzNSwgMiwgMjUzLCAyMiwgMzAsIDM1LCAyLCAyNTMsIDIxLCAzMCwgMzUsIDIsIDI1MywgCisgICAgMjAsIDMwLCAzNSwgMiwgMjUzLCAxOSwgMzAsIDM1LCAyLCAyNTMsIDE4LCAzMCwgMzUsIDIsIDI1MywgMTcsIDMwLCAzNSwgCisgICAgMiwgMjUzLCAxNiwgMzAsIDM1LCAyLCAyNTMsIDE1LCAzMCwgMzUsIDIsIDI1MywgMTQsIDMwLCAzNSwgMiwgMjUzLCAxMywgCisgICAgMzAsIDM1LCAyLCAyNTMsIDEyLCAzMCwgMzUsIDIsIDI1MywgMTEsIDMwLCAzNSwgMiwgMjUzLCAxMCwgMzAsIDM1LCAyLCAKKyAgICAyNTMsIDksIDMwLCAzNSwgMiwgMjUzLCA4LCAzMCwgMzUsIDIsIDI1MywgNywgMzAsIDM1LCAyLCAyNTMsIDYsIDMwLCAzNSwgCisgICAgMiwgMjUzLCA1LCAzMCwgMzUsIDIsIDI1MywgNCwgMzAsIDM1LCAyLCAyNTMsIDMsIDMwLCAzNSwgMiwgMjUzLCAyLCAzMCwgCisgICAgMzUsIDIsIDI1MywgMSwgMzAsIDM1LCAyLCAyNTMsIDAsIDMwLCAzNSwgMiwgMjUyLCAyNTUsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAyNTQsIDMwLCAzNSwgMiwgMjUyLCAyNTMsIDMwLCAzNSwgMiwgMjUyLCAyNTIsIDMwLCAzNSwgMiwgMjUyLCAyNTEsIDMwLCAKKyAgICAzNSwgMiwgMjUyLCAyNTAsIDMwLCAzNSwgMiwgMjUyLCAyNDksIDMwLCAzNSwgMiwgMjUyLCAyNDgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDcsIDMwLCAzNSwgMiwgMjUyLCAyNDYsIDMwLCAzNSwgMiwgMjUyLCAyNDUsIDMwLCAzNSwgMiwgMjUyLCAyNDQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyNDMsIDMwLCAzNSwgMiwgMjUyLCAyNDIsIDMwLCAzNSwgMiwgMjUyLCAyNDEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyNDAsIDMwLCAzNSwgMiwgMjUyLCAyMzksIDMwLCAzNSwgMiwgMjUyLCAyMzgsIDMwLCAzNSwgMiwgMjUyLCAyMzcsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMzYsIDMwLCAzNSwgMiwgMjUyLCAyMzUsIDMwLCAzNSwgMiwgMjUyLCAyMzQsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMzMsIDMwLCAzNSwgMiwgMjUyLCAyMzIsIDMwLCAzNSwgMiwgMjUyLCAyMzEsIDMwLCAzNSwgMiwgMjUyLCAyMzAsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjksIDMwLCAzNSwgMiwgMjUyLCAyMjgsIDMwLCAzNSwgMiwgMjUyLCAyMjcsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMjYsIDMwLCAzNSwgMiwgMjUyLCAyMjUsIDMwLCAzNSwgMiwgMjUyLCAyMjQsIDMwLCAzNSwgMiwgMjUyLCAyMjMsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAyMjEsIDMwLCAzNSwgMiwgMjUyLCAyMjAsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTksIDMwLCAzNSwgMiwgMjUyLCAyMTgsIDMwLCAzNSwgMiwgMjUyLCAyMTcsIDMwLCAzNSwgMiwgMjUyLCAyMTYsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMTUsIDMwLCAzNSwgMiwgMjUyLCAyMTQsIDMwLCAzNSwgMiwgMjUyLCAyMTMsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMTIsIDMwLCAzNSwgMiwgMjUyLCAyMTEsIDMwLCAzNSwgMiwgMjUyLCAyMTAsIDMwLCAzNSwgMiwgMjUyLCAyMDksIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDgsIDMwLCAzNSwgMiwgMjUyLCAyMDcsIDMwLCAzNSwgMiwgMjUyLCAyMDYsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAyMDUsIDMwLCAzNSwgMiwgMjUyLCAyMDQsIDMwLCAzNSwgMiwgMjUyLCAyMDMsIDMwLCAzNSwgMiwgMjUyLCAyMDIsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAyMDEsIDMwLCAzNSwgMiwgMjUyLCAyMDAsIDMwLCAzNSwgMiwgMjUyLCAxOTksIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTgsIDMwLCAzNSwgMiwgMjUyLCAxOTcsIDMwLCAzNSwgMiwgMjUyLCAxOTYsIDMwLCAzNSwgMiwgMjUyLCAxOTUsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxOTQsIDMwLCAzNSwgMiwgMjUyLCAxOTMsIDMwLCAzNSwgMiwgMjUyLCAxOTIsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxOTEsIDMwLCAzNSwgMiwgMjUyLCAxOTAsIDMwLCAzNSwgMiwgMjUyLCAxODksIDMwLCAzNSwgMiwgMjUyLCAxODgsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODcsIDMwLCAzNSwgMiwgMjUyLCAxODYsIDMwLCAzNSwgMiwgMjUyLCAxODUsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxODQsIDMwLCAzNSwgMiwgMjUyLCAxODMsIDMwLCAzNSwgMiwgMjUyLCAxODIsIDMwLCAzNSwgMiwgMjUyLCAxODEsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNzksIDMwLCAzNSwgMiwgMjUyLCAxNzgsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAxNzYsIDMwLCAzNSwgMiwgMjUyLCAxNzUsIDMwLCAzNSwgMiwgMjUyLCAxNzQsIAorICAgIDMwLCAzNSwgMiwgMjUyLCAxNzMsIDMwLCAzNSwgMiwgMjUyLCAxNzIsIDMwLCAzNSwgMiwgMjUyLCAxNzEsIDMwLCAzNSwgMiwgCisgICAgMjUyLCAxNzAsIDMwLCAzNSwgMiwgMjUyLCAxNjksIDMwLCAzNSwgMiwgMjUyLCAxNjgsIDYyLCAzMCwgMzUsIDIsIDI1MiwgCisgICAgMTY3LCAyNTAsIDEwMywgMzAsIDM1LCAyLCAyNTIsIDE2NiwgMjQyLCAxNTMsIDMwLCAzNSwgMiwgMjUyLCAxNjUsIDcyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTY0LCAyMzgsIDUsIDMwLCAzNSwgMiwgMjUyLCAxNjMsIDIzNCwgMjQ3LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTYyLCAyMjcsIDI1MSwgMzAsIDM1LCAyLCAyNTIsIDE2MSwgMjI3LCAxMTgsIDMwLCAzNSwgMiwgMjUyLCAxNjAsIAorICAgIDE1NiwgMzAsIDM1LCAyLCAyNTIsIDE1OSwgMjI1LCAxODAsIDMwLCAzNSwgMiwgMjUyLCAxNTgsIDIyNSwgMTc5LCAzMCwgCisgICAgMzUsIDIsIDI1MiwgMTU3LCAyMjUsIDE3OCwgMzAsIDM1LCAyLCAyNTIsIDE1NiwgMjI1LCAxNzcsIDMwLCAzNSwgMiwgMjUyLCAKKyAgICAxNTUsIDIwMSwgMTQ3LCAzMCwgMzUsIDIsIDI1MiwgMTU0LCAyMDAsIDE5NSwgMzAsIDM1LCAyLCAyNTIsIDE1MywgMjAwLCAKKyAgICAxMjMsIDMwLCAzNSwgMiwgMjUyLCAxNTIsIDIxNywgODMsIDMwLCAzNSwgMiwgMjUyLCAxNTEsIDI1MiwgNCwgMzAsIDM1LCAKKyAgICAyLCAyNTIsIDE1MCwgMjQ5LCA0NSwgMzAsIDM1LCAyLCAyNTIsIDE0OSwgMjQxLCAyMjIsIDMwLCAzNSwgMiwgMjUyLCAxNDgsIAorICAgIDIzOCwgMTMsIDMwLCAzNSwgMiwgMjUyLCAxNDcsIDIyNywgMjI3LCAzMCwgMzUsIDIsIDI1MiwgMTQ2LCAzMCwgMzUsIDIsIAorICAgIDI1MiwgMTQ1LCAzMCwgMzUsIDIsIDI1MiwgMTQ0LCAzMCwgMzUsIDIsIDI1MiwgMTQzLCAzMCwgMzUsIDIsIDI1MiwgMTQyLCAKKyAgICAzMCwgMzUsIDIsIDI1MiwgMTQxLCAzMCwgMzUsIDIsIDI1MiwgMTQwLCAzMCwgMzUsIDIsIDI1MiwgMTM5LCAyNDIsIDE2MCwgCisgICAgNSwgNjIsIDI0MiwgMTYwLCA1LCA3MiwgMjQyLCAxNjAsIDUsIDcwLCAyNDIsIDE2MCwgNSwgNzQsIDI0MiwgMTYwLCA1LCAKKyAgICA2NiwgMjQyLCAxNjAsIDUsIDIyNywgMjQ4LCAyNDIsIDE2MCwgNSwgMjI3LCAxNjYsIDI0MiwgMTYwLCA1LCAxNjEsIDI0MiwgCisgICAgMTYwLCA1LCAyMjcsIDgsIDI0MiwgMTYwLCA1LCAyMjYsIDE2MywgMjQyLCAxNjAsIDUsIDIyNiwgODgsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjYsIDE1LCAyNDIsIDE2MCwgNSwgMTk0LCAyNDIsIDE2MCwgNSwgMjI1LCA0MCwgMjQyLCAxNjAsIDUsIDIyNCwgMjEwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjI0LCAxMTAsIDI0MiwgMTYwLCA1LCAyMjQsIDQyLCAyNDIsIDE2MCwgNSwgMTc4LCAyNDIsIDE2MCwgCisgICAgNSwgMjIyLCA3NiwgMjQyLCAxNjAsIDUsIDIyMSwgMjExLCAyNDIsIDE2MCwgNSwgMjIxLCAxMzYsIDI0MiwgMTYwLCA1LCAKKyAgICAyMjEsIDQxLCAyNDIsIDE2MCwgNSwgMTg4LCAyNDIsIDE2MCwgNSwgMjIwLCAzNCwgMjQyLCAxNjAsIDUsIDIxOSwgMTUwLCAKKyAgICAyNDIsIDE2MCwgNSwgMjE4LCAyNDEsIDI0MiwgMTYwLCA1LCAyMTgsIDEzMywgMjQyLCAxNjAsIDUsIDE3MiwgMjQyLCAxNjAsIAorICAgIDUsIDIxNiwgNzMsIDI0MiwgMTYwLCA1LCAyMTUsIDIwNCwgMjQyLCAxNjAsIDUsIDIxNSwgMTA2LCAyNDIsIDE2MCwgNSwgCisgICAgMjE0LCAyMjQsIDI0MiwgMTYwLCA1LCAyMTMsIDI1MiwgMjQyLCAxNjAsIDUsIDIxMywgMTkwLCAyNDIsIDE2MCwgNSwgMjEzLCAKKyAgICA4OCwgMjQyLCAxNjAsIDUsIDIxMywgMSwgMjQyLCAxNjAsIDUsIDIxMiwgMTc1LCAyNDIsIDE2MCwgNSwgMjEyLCA2NCwgCisgICAgMjQyLCAxNjAsIDUsIDIxMSwgMjAyLCAyNDIsIDE2MCwgNSwgMjA5LCAxODIsIDI0MiwgMTYwLCA1LCAyMDksIDI5LCAyNDIsIAorICAgIDE2MCwgNSwgMjA4LCAyNCwgMjQyLCAxNjAsIDUsIDIwNywgMzYsIDI0MiwgMTYwLCA1LCAyMDYsIDIwMSwgMjQyLCAxNjAsIAorICAgIDUsIDIwNiwgMTUsIDI0MiwgMTYwLCA1LCAxMzgsIDI0MiwgMTYwLCA1LCAyMDQsIDIxNSwgMjQyLCAxNjAsIDUsIDIwMSwgCisgICAgMTE0LCAyNDIsIDE2MCwgNSwgMjAxLCA2NCwgMjQyLCAxNjAsIDUsIDIwMSwgMzEsIDI0MiwgMTYwLCA1LCAyMDEsIDAsIAorICAgIDI0MiwgMTYwLCA1LCAyMDAsIDE4MSwgMjQyLCAxNjAsIDUsIDIwMCwgMTc1LCAyNDIsIDE2MCwgNSwgMTk5LCAxMTQsIDI0MiwgCisgICAgMTYwLCA1LCAxOTksIDE0LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI1MSwgMTQwLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIAorICAgIDI0OCwgMjA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNSwgMTQ3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDI0MiwgCisgICAgMjIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjM0LCAxMzksIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjAxLCA3MiwgMjI4LCAKKyAgICAxMTksIDI1MCwgMjM4LCAxLCAxOTksIDkyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIzNCwgOTEsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjA2LCAxNDIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMTk5LCAyMzMsIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgCisgICAgMjI3LCA1NywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMjUsIDgyLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIyMiwgNDcsIAorICAgIDIyOCwgMTE5LCAyNTAsIDIzOCwgMSwgMjE4LCA4OSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTIsIDE5LCAyMjgsIDExOSwgCisgICAgMjUwLCAyMzgsIDEsIDI1MCwgMTA3LCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIxNiwgNzMsIDIyOCwgMTE5LCAyNTAsIAorICAgIDIzOCwgMSwgMjEyLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTQsIDEwMSwgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAKKyAgICAyMTMsIDEyMywgMjI4LCAxMTksIDI1MCwgMjM4LCAxLCAyMTAsIDIxLCAyMjgsIDExOSwgMjUwLCAyMzgsIDEsIDIwNiwgCisgICAgMjE1LCAyMjgsIDExOSwgMjUwLCAyMzgsIDIxMSwgMTkzLCA1NCwgMjI4LCAxMTksIDI1MCwgMjM4LCA0MSwgMTAyLCAyMjgsIAorICAgIDExOSwgMjUwLCAyMzgsIDQxLCAxMDUsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDE0NywgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjYsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDIwNCwgMTU5LCAyMjgsIDExOSwgMjUwLCAyMzgsIDQxLCAKKyAgICAxMTIsIDIzMywgODIsIDIyOCwgMTE5LCAyNTAsIDIzOCwgNDEsIDExMiwgMjA2LCA1MCwgMjI4LCAxMTksIDI1MCwgMjM4LCAKKyAgICA0MSwgMjA2LCAxNjcsIDIwNiwgNTAsIDIxNiwgMTc1LCAxLCAyNTEsIDE0MCwgMjE2LCAxNzUsIDEsIDI0OCwgMjA3LCAyMTYsIAorICAgIDE3NSwgMSwgMjM1LCAxNDcsIDIxNiwgMTc1LCAxLCAyNDIsIDIyLCAyMTYsIDE3NSwgMSwgMjM0LCAxMzksIDIxNiwgMTc1LCAKKyAgICAxLCAyMDEsIDcyLCAyMTYsIDE3NSwgMSwgMTk5LCA5MiwgMjE2LCAxNzUsIDEsIDIzNCwgOTEsIDIxNiwgMTc1LCAxLCAyMDYsIAorICAgIDE0MiwgMjE2LCAxNzUsIDEsIDE5OSwgMjMzLCAyMTYsIDE3NSwgMSwgMjI3LCA1NywgMjE2LCAxNzUsIDEsIDIyNSwgODIsIAorICAgIDIxNiwgMTc1LCAxLCAyMjIsIDQ3LCAyMTYsIDE3NSwgMSwgNDcsIDIxOCwgODksIDIxNiwgMTc1LCAxLCAyMTgsIDg5LCAKKyAgICAyMTYsIDE3NSwgMSwgMjEyLCAxOSwgMjE2LCAxNzUsIDEsIDI1MCwgMTA3LCAyMTYsIDE3NSwgMSwgMjE2LCA3MywgMjE2LCAKKyAgICAxNzUsIDEsIDIxMiwgNTQsIDIxNiwgMTc1LCAxLCAyMTQsIDEwMSwgMjE2LCAxNzUsIDEsIDIxMywgMTIzLCAyMTYsIDE3NSwgCisgICAgMSwgMjEwLCAyMSwgMjE2LCAxNzUsIDEsIDIwNiwgMjE1LCAyMTYsIDE3NSwgMjI1LCAyMywgMjM3LCAzOSwgMjE2LCAxNzUsIAorICAgIDIxMywgNDEsIDIzNywgMzksIDIxNiwgMTc1LCA0MSwgMTAyLCAyMTYsIDE3NSwgNDEsIDEwNSwgMjE2LCAxNzUsIDQxLCAKKyAgICAxNDcsIDIxNiwgMTc1LCA0MSwgMTQ5LCAyMTYsIDE3NSwgNDEsIDE2NCwgMjE2LCAxNzUsIDQxLCAyMDYsIDE2NiwgMjE2LCAKKyAgICAxNzUsIDQxLCAyMDQsIDE1OSwgMjIwLCAxNTMsIDEsIDQ3LCAyNTEsIDE0MCwgMjIwLCAxNTMsIDEsIDI1MSwgMTQwLCAyMjAsIAorICAgIDE1MywgMSwgNDcsIDI0OCwgMjA3LCAyMjAsIDE1MywgMSwgMjQ4LCAyMDcsIDIyMCwgMTUzLCAxLCAyMzUsIDE0NywgMjIwLCAKKyAgICAxNTMsIDEsIDI0MiwgMjIsIDIyMCwgMTUzLCAxLCA0NywgMjM0LCAxMzksIDIyMCwgMTUzLCAxLCAyMzQsIDEzOSwgMjIwLCAKKyAgICAxNTMsIDEsIDIwMSwgNzIsIDIyMCwgMTUzLCAxLCAxOTksIDkyLCAyMjAsIDE1MywgMSwgMjM0LCA5MSwgMjIwLCAxNTMsIDEsIAorICAgIDIwNiwgMTQyLCAyMjAsIDE1MywgMSwgNDcsIDE5OSwgMjMzLCAyMjAsIDE1MywgMSwgMTk5LCAyMzMsIDIyMCwgMTUzLCAxLCAKKyAgICA0NywgMjI3LCA1NywgMjIwLCAxNTMsIDEsIDIyNywgNTcsIDIyMCwgMTUzLCAxLCA0NywgMjI1LCA4MiwgMjIwLCAxNTMsIDEsIAorICAgIDIyNSwgODIsIDIyMCwgMTUzLCAxLCA0NywgMjIyLCA0NywgMjIwLCAxNTMsIDEsIDIyMiwgNDcsIDIyMCwgMTUzLCAxLCA0NywgCisgICAgMjE4LCA4OSwgMjIwLCAxNTMsIDEsIDIxOCwgODksIDIyMCwgMTUzLCAxLCAyMTIsIDE5LCAyMjAsIDE1MywgMSwgMjUwLCAKKyAgICAxMDcsIDIyMCwgMTUzLCAxLCAyMTYsIDczLCAyMjAsIDE1MywgMSwgMjEyLCA1NCwgMjIwLCAxNTMsIDEsIDIxNCwgMTAxLCAKKyAgICAyMjAsIDE1MywgMSwgMjEzLCAxMjMsIDIyMCwgMTUzLCAxLCA0NywgMjEwLCAyMSwgMjIwLCAxNTMsIDEsIDIxMCwgMjEsIAorICAgIDIyMCwgMTUzLCAxLCAyMDYsIDIxNSwgMjIwLCAxNTMsIDQxLCAxMDIsIDIyMCwgMTUzLCA0MSwgMTA1LCAyMjAsIDE1MywgCisgICAgNDEsIDE0NywgMjIwLCAxNTMsIDQxLCAxNDksIDIyMCwgMTUzLCAyNDIsIDIyMCwgNDEsIDE0OSwgMjIwLCAxNTMsIDQxLCAKKyAgICAxNjQsIDIyMCwgMTUzLCA0MSwgMjA2LCAxNjYsIDIyMCwgMTUzLCA0MSwgMjA0LCAxNTksIDIyMCwgMTUzLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMzQsIDE1MiwgMSwgMjUxLCAxNDAsIDIzNCwgMTUyLCAxLCAyNDgsIDIwNywgMjM0LCAxNTIsIDEsIDIzNSwgCisgICAgMTQ3LCAyMzQsIDE1MiwgMSwgMjQyLCAyMSwgMjM0LCAxNTIsIDEsIDIzNCwgMTM5LCAyMzQsIDE1MiwgMSwgMjAxLCA3MiwgCisgICAgMjM0LCAxNTIsIDEsIDE5OSwgOTEsIDIzNCwgMTUyLCAxLCAyMzQsIDkxLCAyMzQsIDE1MiwgMSwgMjA2LCAxNDIsIDIzNCwgCisgICAgMTUyLCAxLCAxOTksIDIzMywgMjM0LCAxNTIsIDEsIDIyNywgNTcsIDIzNCwgMTUyLCAxLCAyMjUsIDgyLCAyMzQsIDE1MiwgCisgICAgMSwgMjIyLCA0NywgMjM0LCAxNTIsIDEsIDIxOCwgODksIDIzNCwgMTUyLCAxLCAyMTIsIDE5LCAyMzQsIDE1MiwgMSwgMjUwLCAKKyAgICAxMDYsIDIzNCwgMTUyLCAxLCAyMTYsIDczLCAyMzQsIDE1MiwgMSwgMjEyLCA1NCwgMjM0LCAxNTIsIDEsIDIxNCwgMTAxLCAKKyAgICAyMzQsIDE1MiwgMSwgMjEwLCAyMSwgMjM0LCAxNTIsIDEsIDIwNiwgMjE1LCAyMzQsIDE1MiwgNDEsIDEwMiwgMjM0LCAxNTIsIAorICAgIDQxLCAxNjQsIDIzNCwgMTUyLCA0MSwgMjA2LCAxNjYsIDIzNCwgMTUyLCA0MSwgMjA0LCAxNTksIDIzNCwgMTUyLCA0MSwgCisgICAgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgMSwgMjUxLCAxMzcsIDIxNSwgMjE1LCAxLCAyNDgsIDIxMCwgMjE1LCAyMTUsIDEsIAorICAgIDIzNiwgNjIsIDIxNSwgMjE1LCAxLCAyNDEsIDEzOCwgMjE1LCAyMTUsIDEsIDIzNCwgMTM5LCAyMTUsIDIxNSwgMSwgMjAxLCAKKyAgICA3OSwgMjE1LCAyMTUsIDEsIDE5OSwgMTA3LCAyMTUsIDIxNSwgMSwgMjM0LCA5MywgMjE1LCAyMTUsIDEsIDIwNiwgMTQ2LCAKKyAgICAyMTUsIDIxNSwgMSwgMTk5LCAyMzQsIDIxNSwgMjE1LCAxLCAyMjcsIDg2LCAyMTUsIDIxNSwgMSwgMjI1LCA4OCwgMjE1LCAKKyAgICAyMTUsIDEsIDIyMiwgNDcsIDIxNSwgMjE1LCAxLCAyMTgsIDg5LCAyMTUsIDIxNSwgMSwgMjEwLCAxNjEsIDIxNSwgMjE1LCAKKyAgICAxLCAyNTEsIDE3MSwgMjE1LCAyMTUsIDEsIDIxNiwgNzMsIDIxNSwgMjE1LCAxLCAyMTIsIDU1LCAyMTUsIDIxNSwgMSwgCisgICAgMjE0LCAxMDYsIDIxNSwgMjE1LCAxLCAyMTIsIDIzMCwgMjE1LCAyMTUsIDEsIDIxMCwgMjEsIDIxNSwgMjE1LCAxLCAyMDYsIAorICAgIDIyMSwgMjE1LCAyMTUsIDQxLCAxMDIsIDIxNSwgMjE1LCA0MSwgMjA2LCAxNjYsIDIxNSwgMjE1LCA0MSwgMjA0LCAxNTksIAorICAgIDIxNSwgMjE1LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTUsIDIxNSwgNDEsIDEwNSwgMjE1LCAyMTUsIDQxLCAxNDcsIDIxNSwgCisgICAgMjE1LCAyMDAsIDIzOCwgMjEwLCAxNTQsIDIyMywgMjU1LCAxLCA2MiwgMjIzLCAyNTUsIDEsIDI1MCwgMTAzLCAyMjMsIAorICAgIDI1NSwgMSwgMjM2LCAxNTYsIDIyMywgMjU1LCAxLCAyNDIsIDE1MywgMjIzLCAyNTUsIDEsIDcyLCAyMjMsIDI1NSwgMSwgCisgICAgMjAzLCAxNjgsIDIyMywgMjU1LCAxLCA3MCwgMjIzLCAyNTUsIDEsIDIwMCwgMTIzLCAyMjMsIDI1NSwgMSwgMjI3LCAxMTgsIAorICAgIDIyMywgMjU1LCAxLCAxNTYsIDIyMywgMjU1LCAxLCAyMjMsIDI0MywgMjIzLCAyNTUsIDEsIDIyMCwgMjE0LCAyMjMsIDI1NSwgCisgICAgMSwgNzQsIDIyMywgMjU1LCAxLCAxNDYsIDIyMywgMjU1LCAxLCAyMDgsIDE4MiwgMjIzLCAyNTUsIDEsIDIwNywgODMsIAorICAgIDIyMywgMjU1LCAxLCA2NiwgMjIzLCAyNTUsIDEsIDIzOCwgNSwgMjIzLCAyNTUsIDEsIDIxNCwgMTY3LCAyMjMsIDI1NSwgMSwgCisgICAgMjEyLCAxMjIsIDIyMywgMjU1LCAxLCAyMDUsIDAsIDIyMywgMjU1LCAxLCAyNTEsIDg1LCAyMjMsIDI1NSwgMSwgMjM4LCAKKyAgICAxNzksIDIyMywgMjU1LCAxLCAyMjQsIDIsIDIyMywgMjU1LCAxLCAyMTksIDIyLCAyMjMsIDI1NSwgMSwgMjQ3LCAyMjMsIAorICAgIDIyMywgMjU1LCAyMDUsIDk1LCA4MSwgMTMyLCAyMzQsIDY4LCAxLCA2MiwgMTMyLCAyMzQsIDY4LCAxLCA3MiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCA3MCwgMTMyLCAyMzQsIDY4LCAxLCA3NCwgMTMyLCAyMzQsIDY4LCAxLCAxODMsIDEzMiwgMjM0LCA2OCwgCisgICAgMSwgMjAxLCAxMTQsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzYsIDEzMiwgMjM0LCA2OCwgMSwgMjQ5LCAxMzUsIDEzMiwgCisgICAgMjM0LCA2OCwgMSwgMTcyLCAxMzIsIDIzNCwgNjgsIDEsIDE3OCwgMTMyLCAyMzQsIDY4LCAxLCAxODgsIDEzMiwgMjM0LCAKKyAgICA2OCwgMSwgMjIwLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjIwLCAzNCwgMTMyLCAyMzQsIDY4LCAxLCAyMjAsIDMzLCAxMzIsIAorICAgIDIzNCwgNjgsIDEsIDIxMywgMjUyLCAxMzIsIDIzNCwgNjgsIDEsIDIxMywgMjUxLCAxMzIsIDIzNCwgNjgsIDEsIDE5NCwgCisgICAgMTMyLCAyMzQsIDY4LCAxLCAyMjYsIDIwNywgMTMyLCAyMzQsIDY4LCAxLCAyMzQsIDg0LCAxMzIsIDIzNCwgNjgsIDEsIAorICAgIDIxMiwgNjQsIDEzMiwgMjM0LCA2OCwgMSwgMjEyLCA2MywgMTMyLCAyMzQsIDY4LCAxLCAyMTEsIDIwMiwgMTMyLCAyMzQsIAorICAgIDY4LCAxLCAxNjEsIDEzMiwgMjM0LCA2OCwgMSwgMjE0LCAxNTksIDEzMiwgMjM0LCA2OCwgMSwgMjA3LCAzNiwgMTMyLCAKKyAgICAyMzQsIDY4LCAxLCAyMDcsIDM1LCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgMjAxLCAxMzIsIDIzNCwgNjgsIDEsIDIwNiwgCisgICAgMjAwLCAxMzIsIDIzNCwgNjgsIDEsIDEzOCwgMTMyLCAyMzQsIDY4LCAxLCAyNDIsIDU4LCAxMzIsIDIzNCwgNjgsIDE2LCAKKyAgICAyMDIsIDIyOCwgMTMyLCAyMzQsIDY4LCAxNiwgMjAyLCAyMjcsIDEzMiwgMjQyLCAxOTEsIDEsIDYyLCAxMzIsIDI0MiwgCisgICAgMTkxLCAxLCA3MiwgMTMyLCAyNDIsIDE5MSwgMSwgNzAsIDEzMiwgMjQyLCAxOTEsIDEsIDc0LCAxMzIsIDI0MiwgMTkxLCAxLCAKKyAgICAxODMsIDEzMiwgMjQyLCAxOTEsIDEsIDIwMSwgMTE0LCAxMzIsIDI0MiwgMTkxLCAxLCAyNDksIDEzNiwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMTcyLCAxMzIsIDI0MiwgMTkxLCAxLCAxNzgsIDEzMiwgMjQyLCAxOTEsIDEsIDE4OCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMSwgMjIwLCAzNCwgMTMyLCAyNDIsIDE5MSwgMSwgMjEzLCAyNTIsIDEzMiwgMjQyLCAxOTEsIDEsIDE5NCwgMTMyLCAyNDIsIAorICAgIDE5MSwgMSwgMjI2LCAyMDcsIDEzMiwgMjQyLCAxOTEsIDEsIDIzNCwgODQsIDEzMiwgMjQyLCAxOTEsIDEsIDIxMiwgNjQsIAorICAgIDEzMiwgMjQyLCAxOTEsIDEsIDI1MCwgMjM0LCAyMTIsIDY0LCAxMzIsIDI0MiwgMTkxLCAxLCAyMTEsIDIwMiwgMTMyLCAKKyAgICAyNDIsIDE5MSwgMSwgMTYxLCAxMzIsIDI0MiwgMTkxLCAxLCAyMTQsIDE1OSwgMTMyLCAyNDIsIDE5MSwgMSwgMjA3LCAzNiwgCisgICAgMTMyLCAyNDIsIDE5MSwgMSwgMjA2LCAyMDEsIDEzMiwgMjQyLCAxOTEsIDEsIDEzOCwgMTMyLCAyNDIsIDE5MSwgMSwgMjQyLCAKKyAgICA1OCwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzOCwgMjAwLCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIAorICAgIDExMiwgMjM0LCAyMTMsIDEzMiwgMjQyLCAxOTEsIDIyNCwgOTcsIDIxMywgNywgMTMyLCAyNDIsIDE5MSwgMjI0LCA5NywgCisgICAgMjI4LCAxMjQsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMDUsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxNDcsIDEzMiwgMjQyLCAxOTEsIDQxLCAxNDksIDEzMiwgMjQyLCAxOTEsIDQxLCAxNjQsIDEzMiwgMjQyLCAxOTEsIAorICAgIDQxLCAxODcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNSwgMTMyLCAyNDIsIDE5MSwgNDEsIDE5MiwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIxOSwgMTEzLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA2LCAxNjYsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDQsIAorICAgIDE1OSwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgNjcsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIzNSwgMTMyLCAyNDIsIAorICAgIDE5MSwgNDEsIDIzNywgMTA0LCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCA5MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTI5LCAxMzIsIDI0MiwgMTkxLCA0MSwgMTEyLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMTIwLCAyMzMsIDgyLCAKKyAgICAxMzIsIDI0MiwgMTkxLCA0MSwgMTI2LCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM2LCAyMjksIDIzMywgODIsIAorICAgIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDYxLCAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjA5LCAxMDYsIDIzMywgCisgICAgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjMyLCAKKyAgICAyMzMsIDgyLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMTQsIDIzMywgODIsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzYsIDIyOSwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIxMCwgCisgICAgMTM2LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAKKyAgICAyMTksIDExNCwgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIwNiwgMTY3LCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCAKKyAgICA0MSwgMjA0LCAxNjAsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDYsIDY4LCAyMDYsIDUwLCAxMzIsIDI0MiwgCisgICAgMTkxLCA0MSwgMjM2LCAyMzYsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMzcsIDEwNSwgMjA2LCA1MCwgMTMyLCAKKyAgICAyNDIsIDE5MSwgNDEsIDIwOSwgOTMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTAsIDEzMCwgMjA2LCA1MCwgCisgICAgMTMyLCAyNDIsIDE5MSwgNDEsIDIzOCwgMjIzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjE5LCAxMDksIDIwNiwgCisgICAgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMTIsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjAsIAorICAgIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAxMjYsIDIzMywgODMsIDIwNiwgNTAsIDEzMiwgMjQyLCAKKyAgICAxOTEsIDQxLCAyMzYsIDIyOSwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgNDEsIDIzNywgNjEsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMDksIDEwNiwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgNDEsIDIxMCwgMTM2LCAyMzMsIDgzLCAyMDYsIDUwLCAxMzIsIDI0MiwgMTkxLCA0MSwgMjM4LCAyMzIsIDIzMywgODMsIAorICAgIDIwNiwgNTAsIDEzMiwgMjQyLCAxOTEsIDQxLCAyMTksIDExNCwgMjMzLCA4MywgMjA2LCA1MCwgMTMyLCAyNDIsIDE5MSwgCisgICAgMjM2LCAyMTksIDExMiwgMjA0LCAxNjcsIDEzMiwgMjQyLCAxOTEsIDIzNiwgMjE5LCAxMjAsIDIwNCwgMTY2LCAxMzIsIAorICAgIDI0MiwgMTkxLCAyMzYsIDIxOSwgMTI2LCAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNiwgMjI5LCAKKyAgICAyMDQsIDE2NiwgMTMyLCAyNDIsIDE5MSwgMjM2LCAyMTksIDIzNywgNjEsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIAorICAgIDIxOSwgMjA5LCAxMDYsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjEwLCAxMzYsIDIwNCwgMTY2LCAKKyAgICAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjM4LCAyMzIsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgCisgICAgMjE5LCAxMTQsIDIwNCwgMTY2LCAxMzIsIDI0MiwgMTkxLCAyMzYsIDIxOSwgMjA2LCAxNjcsIDIwNCwgMTY2LCAyMjYsIAorICAgIDE5NCwgMSwgNjIsIDIyNiwgMTk0LCAyMiwgMiwgNzAsIDIyNiwgMTk0LCAyMiwgMiwgNjYsIDIyNiwgMTk0LCAyMiwgMiwgCisgICAgMTA5LCAxNDYsIDIyNiwgMTk0LCAyMiwgMiwgNzIsIDIyNiwgMTk0LCAyMiwgMiwgNzQsIDIyNiwgMTk0LCAyMiwgMjI1LCAyLCAKKyAgICA4MSwgMjI2LCAxOTQsIDIsIDUzLCAyMTMsIDI3LCA1NywgMjI2LCAxOTQsIDIsIDI1MSwgMzMsIDIyNiwgMTk0LCAyLCAyMDIsIAorICAgIDIwMywgMjI2LCAxOTQsIDEsIDE2MSwgMjI2LCAxOTQsIDEsIDIyNiwgMjA3LCAyMjYsIDE5NCwgMSwgMjM2LCA4OSwgMjI2LCAKKyAgICAxOTQsIDEsIDIzNSwgMTk5LCAyMjYsIDE5NCwgMSwgMjQ3LCAxOTAsIDIyNiwgMTk0LCAxLCAyNDcsIDM3LCAyMjYsIDE5NCwgCisgICAgMSwgMjI3LCAyNDgsIDIyNiwgMTk0LCAxLCAyMTgsIDYwLCAyMjYsIDE5NCwgMSwgMjA0LCAyNTMsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxOTQsIDEsIDI0MSwgMjIwLCAyMjYsIDE5NCwgMSwgMjQxLCAyMDQsIDIyNiwgMTk0LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE5NCwgMSwgMjA3LCAzNiwgMjI2LCAxOTQsIDEsIDIwNiwgMTIyLCAyMjYsIDE5NCwgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxOTQsIDEsIDI0MSwgMTAwLCAyMjYsIDE5NCwgMSwgMTg4LCAyMjYsIDE5NCwgMSwgMTcyLCAyMjYsIDE5NCwgMSwgCisgICAgMjE1LCAyNDUsIDIyNiwgMTk0LCAxLCAyNDksIDEzNiwgMjI2LCAxOTQsIDEsIDI0OCwgMjAwLCAyMjYsIDE5NCwgMSwgMTc4LCAKKyAgICAyMjYsIDE5NCwgMSwgMTgzLCAyMjYsIDE5NCwgMSwgMjEzLCAyNTIsIDIyNiwgMTk0LCAxLCAxOTQsIDIyNiwgMTk0LCAxLCAKKyAgICAyMDMsIDkwLCAyMjYsIDE5NCwgMSwgMjEwLCAxMTQsIDIyNiwgMTk0LCAxLCAyMDgsIDE3OSwgMjI2LCAxOTQsIDEsIDIxMiwgCisgICAgNjQsIDIyNiwgMTk0LCAxLCAxOTksIDExNCwgMjI2LCAxOTQsIDEsIDE0NCwgMjI2LCAxOTQsIDEsIDIyNiwgMTA5LCAyMjYsIAorICAgIDE5NCwgMSwgMjA0LCAyMjEsIDIyNiwgMTk0LCAyLCAyNDksIDc3LCA1NiwgMjI2LCAxOTQsIDIsIDI0NywgMTA3LCAyMjYsIAorICAgIDE5NCwgMiwgNzMsIDU3LCAyMjYsIDE5NCwgMjAyLCAyMDgsIDIyNiwgMTk0LCAxNywgMTAyLCAyMjYsIDE5NCwgMTcsIDEwNSwgCisgICAgMjI2LCAxOTQsIDE3LCAxNDcsIDIyNiwgMTk0LCAxNywgMTQ5LCAyMjYsIDE5NCwgNDEsIDIwNiwgMTY2LCAyMjYsIDE5NCwgCisgICAgNDEsIDIwNCwgMTU5LCAyMjYsIDE5NCwgNDEsIDExMiwgMjMzLCA4MiwgMjI2LCAxOTQsIDQxLCAxMTIsIDIwNiwgNTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQwLCAxODIsIDIyNiwgMTk0LCAyMTQsIDIxMiwgNCwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAKKyAgICAyMTQsIDIxMiwgMjQ2LCAxNTUsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMjI2LCAxOTQsIDIxNCwgCisgICAgMjEyLCAyMjIsIDE3NCwgMjI2LCAxOTQsIDIxNCwgMjEyLCAyMjQsIDY0LCAyMjYsIDE5NCwgMjE0LCAyMTIsIDI0MiwgMTAsIAorICAgIDIyNiwgMTk0LCAyMTQsIDIxMiwgNTMsIDI0MiwgMTAsIDIyNiwgMTk0LCAyMTQsIDIxMiwgMjI0LCAxNzAsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIzNCwgMTM5LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjUsIDgyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzQsIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMjIsIDQ3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTQsIDEwMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjAxLCA3MiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjEwLCAyMSwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjEzLCAxMjMsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI0OCwgMjA3LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMDYsIDIxNSwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjExLCAyNTEsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNywgNTcsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIxOCwgODksIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIyNiwgMTg5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDU0LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyMTIsIDE5LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzcsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjUxLCAxNDIsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDI1MCwgMTA2LCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk3LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAyMzUsIDE0NywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjQyLCAyMiwgNDAsIDIwOCwgCisgICAgMjU0LCAyNTAsIDI0OSwgMSwgMjM1LCAxODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgMTQyLCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDkxLCA0MCwgMjA4LCAyNTQsIDI1MCwgMjQ5LCAxLCAyNDEsIDk0LCA0MCwgMjA4LCAKKyAgICAyNTQsIDI1MCwgMjQ5LCAxLCAxOTksIDIzMywgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMSwgMjA2LCAxMDgsIDQwLCAyMDgsIAorICAgIDI1NCwgMjUwLCAyNDksIDEsIDIwNiwgODcsIDQwLCAyMDgsIDI1NCwgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAyMDgsIDI1NCwgCisgICAgMjUwLCAyNDksIDQxLCAyMzcsIDEwNCwgNDAsIDIwOCwgMjU0LCAyNTAsIDI0OSwgMTQ1LCAyMjgsIDk5LCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM0LCAxMTUsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjUsIDkxLCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjM0LCAyMjQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMjIsIDYxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjE0LCAKKyAgICAxNTIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDEsIDcyLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjM4LCAxMDIsIDQwLCAKKyAgICAxNTcsIDI1MCwgMjQ5LCAxLCAyMTMsIDE1NCwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0OCwgMjQwLCA0MCwgMTU3LCAyNTAsIAorICAgIDI0OSwgMSwgMjA2LCAxODMsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzgsIDEwMywgNDAsIDE1NywgMjUwLCAyNDksIDEsIAorICAgIDIyNywgODYsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMTgsIDIyNywgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIyNiwgMjAzLCAKKyAgICA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjEyLCA1NiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzOCwgMTAxLCA0MCwgMTU3LCAKKyAgICAyNTAsIDI0OSwgMSwgMjM3LCAxMzQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyNTEsIDE0MiwgNDAsIDE1NywgMjUwLCAyNDksIAorICAgIDEsIDI1MSwgMTcxLCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjQyLCA1MiwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDIzNiwgNiwgCisgICAgNDAsIDE1NywgMjUwLCAyNDksIDEsIDI0MiwgMjksIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMzUsIDE5NCwgNDAsIDE1NywgCisgICAgMjUwLCAyNDksIDEsIDIwNywgOSwgNDAsIDE1NywgMjUwLCAyNDksIDEsIDE5OSwgMTA1LCA0MCwgMTU3LCAyNTAsIDI0OSwgCisgICAgMSwgMjA2LCAxMTQsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAyMDAsIDQ2LCA0MCwgMTU3LCAyNTAsIDI0OSwgMSwgMjA2LCAKKyAgICAxMDIsIDQwLCAxNTcsIDI1MCwgMjQ5LCAxLCAxOTksIDEwOCwgNDAsIDE1NywgMjUwLCAyNDksIDQxLCAxMDIsIDQwLCAxNTcsIAorICAgIDI1MCwgMjQ5LCA0MSwgMjA2LCAxNjYsIDQwLCAxNTcsIDI1MCwgMjQ5LCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCAxLCAKKyAgICAyNTEsIDE0MCwgMjIyLCAxNzMsIDEsIDI0OCwgMjA3LCAyMjIsIDE3MywgMSwgMjQ4LCAxOTQsIDIyMiwgMTczLCAxLCAyMzUsIAorICAgIDE0NywgMjIyLCAxNzMsIDEsIDIzNSwgMTcyLCAyMjIsIDE3MywgMSwgMjQyLCAyMiwgMjIyLCAxNzMsIDEsIDIzNCwgMTM5LCAKKyAgICAyMjIsIDE3MywgMSwgMjAxLCA3MiwgMjIyLCAxNzMsIDIsIDIwNCwgMzYsIDIyMiwgMTczLCAxLCAxOTksIDkyLCAyMjIsIAorICAgIDE3MywgMSwgMTk5LCA3MCwgMjIyLCAxNzMsIDEsIDIyNywgMjI5LCAyMjIsIDE3MywgMSwgMjI3LCAyMTEsIDIyMiwgMTczLCAKKyAgICAxLCAyMzQsIDkxLCAyMjIsIDE3MywgMSwgMjA2LCAxNDIsIDIyMiwgMTczLCAxLCAxOTksIDIzMywgMjIyLCAxNzMsIDEsIAorICAgIDIyNywgNTcsIDIyMiwgMTczLCAxLCAyMDAsIDE3OCwgMjIyLCAxNzMsIDEsIDIyNiwgMTk2LCAyMjIsIDE3MywgMSwgMjI1LCAKKyAgICA4MiwgMjIyLCAxNzMsIDEsIDI0MSwgOTMsIDIyMiwgMTczLCAxLCAyMDYsIDExMywgMjIyLCAxNzMsIDEsIDIyMiwgNDcsIAorICAgIDIyMiwgMTczLCAxLCAyMTgsIDg5LCAyMjIsIDE3MywgMSwgMjEyLCAxOSwgMjIyLCAxNzMsIDEsIDI1MCwgMTA3LCAyMjIsIAorICAgIDE3MywgMSwgMjUyLCA5MSwgMjIyLCAxNzMsIDEsIDIxNiwgNzMsIDIyMiwgMTczLCAxLCAyMzcsIDE0NywgMjIyLCAxNzMsIAorICAgIDEsIDIxMiwgNTQsIDIyMiwgMTczLCAxLCAyMTQsIDEwMSwgMjIyLCAxNzMsIDEsIDIwMCwgMTU2LCAyMjIsIDE3MywgMSwgCisgICAgMjE0LCAxMjgsIDIyMiwgMTczLCAxLCAyMTMsIDEyMywgMjIyLCAxNzMsIDEsIDIxMCwgMjEsIDIyMiwgMTczLCAxLCAyMDgsIAorICAgIDE0OCwgMjIyLCAxNzMsIDEsIDIwNiwgMjE1LCAyMjIsIDE3MywgMjUyLCAzLCAxMzQsIDU2LCAyMjIsIDE3MywgMjUyLCAzLCAKKyAgICAxMzQsIDU3LCAyMjIsIDE3MywgNDEsIDEwMiwgMjIyLCAxNzMsIDQxLCAxNjQsIDIyMiwgMTczLCA0MSwgMjA2LCAxNjYsIAorICAgIDIyMiwgMTczLCA0MSwgMjA0LCAxNTksIDIyMiwgMTczLCA0MSwgMTEyLCAyMzMsIDgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIAorICAgIDIwOCwgMTA5LCAyMjIsIDE3MywgMjE0LCAyMTIsIDIzNywgMzksIDIyMiwgMTczLCAyMTQsIDIxMiwgNTMsIDczLCAyMDEsIAorICAgIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDczLCAyMDEsIDUsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAKKyAgICAyMTIsIDI0MCwgMTgyLCAyMjIsIDE3MywgMjE0LCAyMTIsIDEyMCwgMjQwLCAxODAsIDIyMiwgMTczLCAyMTQsIDIxMiwgCisgICAgMjI0LCAxNzcsIDIzNywgOTMsIDI1MCwgMTE5LCAxLCA2MiwgMjUwLCAxMTksIDEsIDI1MiwgMTM4LCAyNTAsIDExOSwgMSwgCisgICAgMjUxLCAzMSwgMjUwLCAxMTksIDEsIDI1MiwgOTcsIDI1MCwgMTE5LCAxLCAyNTEsIDg1LCAyNTAsIDExOSwgMSwgMjUyLCAKKyAgICA5OCwgMjUwLCAxMTksIDEsIDI1MSwgMjIxLCAyNTAsIDExOSwgMSwgMjUxLCAyMTcsIDI1MCwgMTE5LCAxLCA3MiwgMjUwLCAKKyAgICAxMTksIDEsIDIzOCwgMjU1LCAyNTAsIDExOSwgMSwgNzQsIDI1MCwgMTE5LCAxLCAyMTcsIDYzLCAyNTAsIDExOSwgMSwgNzAsIAorICAgIDI1MCwgMTE5LCAxLCAyMjgsIDE1MSwgMjUwLCAxMTksIDEsIDY2LCAyNTAsIDExOSwgMSwgMjAzLCAxODIsIDI1MCwgMTE5LCAKKyAgICAxLCAyMjcsIDgsIDI1MCwgMTE5LCAxLCAyMDAsIDE3NSwgMjUwLCAxMTksIDEsIDIwMCwgMTM3LCAyNTAsIDExOSwgMSwgCisgICAgMjAwLCAxNDcsIDI1MCwgMTE5LCAxLCAyMzYsIDE1LCAyNTAsIDExOSwgMSwgMjM1LCAyMzAsIDI1MCwgMTE5LCAxLCAyMzUsIAorICAgIDE4NSwgMjUwLCAxMTksIDEsIDI0NywgNzYsIDI1MCwgMTE5LCAxLCAyMjcsIDIyNywgMjUwLCAxMTksIDEsIDIwNiwgMjAxLCAKKyAgICAyNTAsIDExOSwgMSwgMjA2LCAxMDYsIDI1MCwgMTE5LCAxLCAyNDEsIDE3NSwgMjUwLCAxMTksIDEsIDI0MSwgOTEsIDI1MCwgCisgICAgMTE5LCAxLCAyMDQsIDI0OCwgMjUwLCAxMTksIDEsIDIxNiwgNzMsIDI1MCwgMTE5LCAxLCAyMzcsIDE0NywgMjUwLCAxMTksIAorICAgIDEsIDI0OSwgOCwgMjUwLCAxMTksIDEsIDI0OCwgMTk2LCAyNTAsIDExOSwgMSwgMjE5LCAyNDAsIDI1MCwgMTE5LCAxLCAKKyAgICAyMTksIDE1NiwgMjUwLCAxMTksIDEsIDIxOSwgMTU3LCAyNTAsIDExOSwgMSwgMjIwLCAzNCwgMjUwLCAxMTksIDEsIDIxOCwgCisgICAgNTAsIDI1MCwgMTE5LCAxLCAyMTksIDE2LCAyNTAsIDExOSwgMSwgMjIyLCA3NiwgMjUwLCAxMTksIDEsIDIzNCwgMSwgMjUwLCAKKyAgICAxMTksIDEsIDE5OSwgMTY0LCAyNTAsIDExOSwgMSwgMjAwLCA1MSwgMjUwLCAxMTksIDEsIDIwMywgNTksIDI1MCwgMTE5LCAKKyAgICAxLCAyMTMsIDE5MCwgMjUwLCAxMTksIDEsIDIyNSwgNDAsIDI1MCwgMTE5LCAxLCAyMTEsIDIwMiwgMjUwLCAxMTksIDEsIAorICAgIDE5OSwgODksIDI1MCwgMTE5LCAxLCAyMTAsIDY1LCAyNTAsIDExOSwgMSwgMTk5LCA2OCwgMjUwLCAxMTksIDEsIDIwOSwgCisgICAgMTg5LCAyNTAsIDExOSwgMSwgMjA4LCAxNDksIDI1MCwgMTE5LCAxLCAyMzQsIDEzOSwgMjUwLCAxMTksIDI1MiwgMywgODEsIAorICAgIDIwNSwgMjI2LCAxMjAsIDE5MCwgMTE5LCAxMTIsIDczLCAyMTQsIDIxMSwgNCwgMTIwLCAxOTAsIDExOSwgMTEyLCA3MywgCisgICAgMjE0LCAyMTEsIDIyNSwgNzEsIDEyMCwgMTkwLCAxMTksIDExMiwgNzMsIDIxNCwgMjExLCAyMjUsIDcxLCAxMTIsIDczLCAKKyAgICAxMTksIDEyMCwgMTkwLCAyMTQsIDIxMSwgMjI1LCA3MSwgMTIwLCAyMTMsIDI0LCAxMTksIDExMiwgMjEzLCAyNywgMjE0LCAKKyAgICAyMTEsIDIyNSwgNzEsIDExMiwgMjEzLCAyNywgMTE5LCAxMjAsIDIxMywgMjQsIDIxNCwgMjExLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgMSwgMjUxLCAxNDAsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyNDgsIDIwNywgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIzNSwgMTQ3LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjQyLCAyMiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIzNCwgMTM5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjAxLCA3MiwgMjI4LCA3NywgMjE2LCAxMDksIDEsIDE5OSwgOTIsIDIyOCwgNzcsIAorICAgIDIxNiwgMTA5LCAxLCAyMzQsIDkxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAxNDIsIDIyOCwgNzcsIDIxNiwgMTA5LCAKKyAgICAxLCAxOTksIDIzMywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIyNywgNTcsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMjUsIAorICAgIDgyLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjIyLCA0NywgMjI4LCA3NywgMjE2LCAxMDksIDEsIDIxOCwgODksIDIyOCwgCisgICAgNzcsIDIxNiwgMTA5LCAxLCAyMTIsIDE5LCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjUwLCAxMDcsIDIyOCwgNzcsIDIxNiwgCisgICAgMTA5LCAxLCAyMTYsIDczLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxMDksIDEsIAorICAgIDIxNCwgMTAxLCAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjEzLCAxMjMsIDIyOCwgNzcsIDIxNiwgMTA5LCAxLCAyMTAsIDIxLCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgMSwgMjA2LCAyMTUsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTAyLCAyMjgsIDc3LCAyMTYsIAorICAgIDEwOSwgNDEsIDEwNSwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxNDcsIDIyOCwgNzcsIDIxNiwgMTA5LCA0MSwgMTQ5LCAKKyAgICAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNiwgMTY2LCAyMjgsIDc3LCAyMTYsIDEwOSwgNDEsIDIwNCwgMTU5LCAyMjgsIAorICAgIDc3LCAyMTYsIDEwOSwgNDEsIDExMiwgMjMzLCA4MiwgMjI4LCA3NywgMjE2LCAxMDksIDQxLCAxMTIsIDIwNiwgNTAsIDIyOCwgCisgICAgNzcsIDIxNiwgMTkxLCAxLCAyNTEsIDE0MCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDI0OCwgMjA3LCAyMjgsIDc3LCAyMTYsIAorICAgIDE5MSwgMSwgMjM1LCAxNDcsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgCisgICAgMjM0LCAxMzksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDEsIDcxLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIzNCwgOTEsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMDYsIDE0MiwgMjI4LCA3NywgCisgICAgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjI3LCA1NywgMjI4LCA3NywgMjE2LCAxOTEsIAorICAgIDEsIDIyNSwgODIsIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAyMjgsIDc3LCAyMTYsIDE5MSwgMSwgMjE4LCA4OSwgCisgICAgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMiwgMTksIDIyOCwgNzcsIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMjgsIDc3LCAKKyAgICAyMTYsIDE5MSwgMSwgMjEyLCA1NCwgMjI4LCA3NywgMjE2LCAxOTEsIDEsIDIxMCwgMjEsIDIyOCwgNzcsIDIxNiwgMTkxLCAKKyAgICAxLCAyMDYsIDIxNSwgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxMDIsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTA1LCAyMjgsIAorICAgIDc3LCAyMTYsIDE5MSwgNDEsIDE0NywgMjI4LCA3NywgMjE2LCAxOTEsIDQxLCAxNDksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgCisgICAgMjA2LCAxNjYsIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIyOCwgNzcsIDIxNiwgMTkxLCA0MSwgMTEyLCAKKyAgICAyMzMsIDgyLCAyMjgsIDc3LCAyMTYsIDE5MSwgNDEsIDExMiwgMjA2LCA1MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNTEsIAorICAgIDE0MCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDgsIDIwNywgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMzUsIDE0NywgCisgICAgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyNDIsIDIyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIzNCwgMTM5LCAyMTQsIAorICAgIDIzNiwgMjE2LCAxOTEsIDEsIDIwMSwgNzEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMTk5LCA5MiwgMjE0LCAyMzYsIDIxNiwgCisgICAgMTkxLCAxLCAyMzQsIDkxLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDE5OSwgMjMzLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIAorICAgIDIyNywgNTcsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjI1LCA4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMjIsIDQ2LCAKKyAgICAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxOCwgODksIDIxNCwgMjM2LCAyMTYsIDE5MSwgMSwgMjEyLCAxOSwgMjE0LCAyMzYsIAorICAgIDIxNiwgMTkxLCAxLCAyMTYsIDczLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDEsIDIxMiwgNTQsIDIxNCwgMjM2LCAyMTYsIDE5MSwgCisgICAgMSwgMjEwLCAyMSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAxLCAyMDYsIDIxNSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMTEsIAorICAgIDE5MywgODEsIDIxNCwgMjM2LCAyMTYsIDE5MSwgMjA0LCAxODUsIDIxMSwgMTkzLCA4MSwgMjE0LCAyMzYsIDIxNiwgMTkxLCAKKyAgICAyMzYsIDIyOSwgMTkwLCAzLCAyNDIsIDIzNCwgMjE0LCAyMzYsIDIxNiwgMTkxLCAyMzYsIDIyOSwgMTkwLCAzLCAyNDAsIAorICAgIDE4MiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTAyLCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAxMDUsIDIxNCwgMjM2LCAKKyAgICAyMTYsIDE5MSwgNDEsIDE0NywgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMTQ5LCAyMTQsIDIzNiwgMjE2LCAxOTEsIDQxLCAKKyAgICAyMDYsIDE2NiwgMjE0LCAyMzYsIDIxNiwgMTkxLCA0MSwgMjA0LCAxNTksIDIxNCwgMjM2LCAyMTYsIDE5MSwgNDEsIDExMiwgCisgICAgMjMzLCA4MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA2MiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA2MiwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCA3MCwgNDAsIDIwNCwgCisgICAgMTg5LCAxLCAyMDAsIDM5LCA3MCwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCA3MiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIAorICAgIDIzLCA3NCwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyMTcsIDEyMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTIsIDg5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIAorICAgIDI1MiwgODksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMjAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAxOTMsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMTUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCAyMzUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAyMTksIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxMiwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzgsIDEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjAyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMjEzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIxNywgMTE5LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMTUxLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDI1MSwgMjEyLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgMTkzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOCwgMTkwLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgODUsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjUxLCAyMTAsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNTcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNzYsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgCisgICAgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCAxNDMsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgCisgICAgMjUxLCA3NiwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDE2NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAKKyAgICAyNTEsIDIwOSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMzgsIDEzMywgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAKKyAgICAyMTcsIDU0LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzMiwgMjMzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIAorICAgIDIzOSwgNywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMzksIDcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjUxLCAKKyAgICAxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MSwgMSwgNDAsIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMjgsIDM3LCAKKyAgICA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDIyOCwgMzcsIDQwLCAyMDQsIDE4OSwgMSwgMjE3LCAyMywgMjE3LCAzNSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyMTcsIDM1LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMjUzLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMjUzLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA4LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTg4LCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MSwgMjA2LCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDI1MCwgMTgxLCA0MCwgMjA0LCAxODksIDEsIDIwMCwgMzksIDI1MCwgMTgxLCA0MCwgCisgICAgMjA0LCAxODksIDEsIDIxNywgMjMsIDIzOCwgOTQsIDQwLCAyMDQsIDE4OSwgMSwgMjAwLCAzOSwgMjM4LCA5NCwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTAsIDE1NSwgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTAsIDE1NSwgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyNTEsIDIwMywgNDAsIDIwNCwgMTg5LCAxLCAyMDAsIDM5LCAyNTEsIDIwMywgNDAsIAorICAgIDIwNCwgMTg5LCAxLCAyMTcsIDIzLCAyMTcsIDExLCA0MCwgMjA0LCAxODksIDEsIDIxNywgMjMsIDI0OSwgNjEsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDYyLCA0MCwgMTUyLCA2LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNiwgMSwgMjM5LCA5LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyNTEsIDk2LCA0MCwgMTUyLCA2LCAxLCAyMzksIDcsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCAKKyAgICA2LCAxLCAyMzksIDQsIDQwLCAxNTIsIDYsIDEsIDIzOSwgMywgNDAsIDE1MiwgNiwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNiwgCisgICAgMSwgNzIsIDQwLCAxNTIsIDYsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjQ4LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNiwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMjQxLCA0MCwgMTUyLCA2LCAxLCA3MCwgNDAsIDE1MiwgNiwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDYsIAorICAgIDEsIDIzOCwgMjE5LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNiwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIAorICAgIDYsIDEsIDIwMywgMjM2LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxOTIsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxNDMsIAorICAgIDQwLCAxNTIsIDYsIDEsIDc0LCA0MCwgMTUyLCA2LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA2LCAxLCAyMTksIDEyMSwgMjE3LCAKKyAgICAxMjEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNiwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIAorICAgIDYsIDEsIDIzOCwgMTMzLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMTUsIDQwLCAKKyAgICAxNTIsIDYsIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNiwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDYsIDEsIAorICAgIDIzOCwgODMsIDQwLCAxNTIsIDYsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA2LCAxLCAKKyAgICAyMzgsIDcwLCA0MCwgMTUyLCA2LCAxLCAyMzksIDUsIDQwLCAxNTIsIDYsIDEsIDY2LCA0MCwgMTUyLCA2LCAxLCAyMDMsIAorICAgIDE4MiwgNDAsIDE1MiwgNiwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDYsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCAKKyAgICA0MCwgMTUyLCA2LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA2LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA2LCAxLCAyMzgsIDcsIAorICAgIDQwLCAxNTIsIDYsIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNiwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQsIDEsIDYyLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyNTIsIDEzOCwgNDAsIDE1MiwgNCwgMSwgMjM5LCA5LCA0MCwgMTUyLCA0LCAxLCAyNTEsIDk2LCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDcsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTc2LCA0MCwgMTUyLCA0LCAxLCAyMzksIDQsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOSwgMywgNDAsIDE1MiwgNCwgMSwgMjUxLCA3OSwgNDAsIDE1MiwgNCwgMSwgNzIsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDI0NiwgMTExLCA3MiwgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNTUsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjQ4LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDI0NywgNDAsIDE1MiwgNCwgMSwgMjM4LCAyNDQsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMjQxLCA0MCwgMTUyLCA0LCAxLCA3MCwgNDAsIDE1MiwgNCwgMSwgMjI4LCAxNTEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgCisgICAgMjE5LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIxNiwgNDAsIDE1MiwgNCwgMSwgMjUxLCAxNTksIDQwLCAxNTIsIDQsIDEsIAorICAgIDIwMywgMjM2LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDIwOSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxOTIsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTkwLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE3OSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxNDMsIDQwLCAxNTIsIAorICAgIDQsIDEsIDc0LCA0MCwgMTUyLCA0LCAxLCAyMTcsIDYzLCA0MCwgMTUyLCA0LCAxLCAyMTksIDEyMSwgMjE3LCAxMjEsIDQwLCAKKyAgICAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMTcsIDEyMSwgNDAsIDE1MiwgNCwgMSwgMjE3LCAxMjAsIDQwLCAxNTIsIDQsIDEsIAorICAgIDIzOCwgMTMzLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDE4NCwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMTUsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIwOSwgMjUwLCAyMzgsIDExNSwgNDAsIDE1MiwgNCwgMSwgMjM4LCAxMDQsIDQwLCAxNTIsIDQsIDEsIDIzOCwgODMsIAorICAgIDQwLCAxNTIsIDQsIDEsIDIzOCwgODEsIDQwLCAxNTIsIDQsIDEsIDIzOCwgMTU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcwLCAKKyAgICA0MCwgMTUyLCA0LCAxLCAyMzksIDUsIDQwLCAxNTIsIDQsIDEsIDY2LCA0MCwgMTUyLCA0LCAxLCAyMDMsIDE4MiwgNDAsIAorICAgIDE1MiwgNCwgMSwgMjE5LCAxMjEsIDIwNCwgMzEsIDQwLCAxNTIsIDQsIDEsIDIxMiwgMTcxLCAyMDQsIDMxLCA0MCwgMTUyLCAKKyAgICA0LCAxLCAyMzgsIDU3LCA0MCwgMTUyLCA0LCAxLCAyMzgsIDEyLCA0MCwgMTUyLCA0LCAxLCAyMzgsIDcsIDQwLCAxNTIsIDQsIAorICAgIDEsIDIzOCwgMTU2LCA1NCwgNDAsIDE1MiwgNCwgMSwgMjAzLCAxOTcsIDQwLCAxNTIsIDQxLCAxMDIsIDQwLCAxNTIsIDQxLCAKKyAgICAxNjQsIDQwLCAxNTIsIDQxLCAyMDYsIDE2NiwgNDAsIDE1MiwgNDEsIDIzNywgMTA0LCA0MCwgMTUyLCA0MSwgMTEyLCAyMzMsIAorICAgIDgyLCA0MCwgMTUyLCA0MSwgMTEyLCAyMDYsIDUwLCAyMTIsIDE1OSwgMTcsIDEwMiwgMjEyLCAxNTksIDE3LCAxMDUsIDIxMiwgCisgICAgMTU5LCAxNywgMTQ3LCAyMTIsIDE1OSwgMTcsIDE0OSwgMjEyLCAxNTksIDE3LCAxNjQsIDIxMiwgMTU5LCAxNywgMTg3LCAKKyAgICAyMTIsIDE1OSwgMTcsIDIxMCwgMTM1LCAyMTIsIDE1OSwgMTcsIDE5MiwgMjEyLCAxNTksIDE3LCAyMTksIDExMywgMjEyLCAKKyAgICAxNTksIDQxLCAyMDYsIDE2NiwgMjEyLCAxNTksIDQxLCAyMDQsIDE1OSwgMjEyLCAxNTksIDQxLCAyMDYsIDY3LCAyMTIsIAorICAgIDE1OSwgNDEsIDIzNiwgMjM1LCAyMTIsIDE1OSwgNDEsIDIzNywgMTA0LCAyMTIsIDE1OSwgNDEsIDIwOSwgOTIsIDIxMiwgCisgICAgMTU5LCA0MSwgMjEwLCAxMjksIDIxMiwgMTU5LCA0MSwgMjM4LCAyMjIsIDIxMiwgMTU5LCA0MSwgMjE5LCAxMDgsIDIxMiwgCisgICAgMTU5LCA0MSwgMTEyLCAyMzMsIDgyLCAyMTIsIDE1OSwgNDEsIDEyMCwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAxMjYsIAorICAgIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM2LCAyMjksIDIzMywgODIsIDIxMiwgMTU5LCA0MSwgMjM3LCA2MSwgMjMzLCA4MiwgCisgICAgMjEyLCAxNTksIDQxLCAyMDksIDEwNiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTAsIDEzNiwgMjMzLCA4MiwgMjEyLCAKKyAgICAxNTksIDQxLCAyMzgsIDIzMiwgMjMzLCA4MiwgMjEyLCAxNTksIDQxLCAyMTksIDExNCwgMjMzLCA4MiwgMjEyLCAxNTksIAorICAgIDIzNiwgMjE5LCAxMTIsIDIzNCwgMjEzLCAyMTIsIDE1OSwgMjM2LCAyMTksIDExMiwgMjE0LCA4NywgMjEyLCAxNTksIDIzNiwgCisgICAgMjE5LCAxMTIsIDIwNiwgNzQsIDIxMiwgMTU5LCAyMzYsIDIxOSwgMTIwLCAyMDYsIDcxLCAxNTEsIDIsIDI0NywgMTQ5LCAKKyAgICAxNTEsIDIsIDI1MSwgMzMsIDE1MSwgMiwgMjAyLCAyMDMsIDE1MSwgMiwgMjI3LCAyMDEsIDE1MSwgMiwgMjAzLCAyMjYsIAorICAgIDE1MSwgMSwgNjIsIDE1MSwgMSwgMjUyLCAxMzgsIDE1MSwgMSwgNzAsIDE1MSwgMSwgMjI4LCAxNTEsIDE1MSwgMSwgNjYsIAorICAgIDE1MSwgMSwgMjAzLCAxODIsIDE1MSwgMSwgMTA5LCAxNDYsIDE1MSwgMSwgMTA5LCAyMTIsIDIxNiwgMTUxLCAxLCAxMDksIAorICAgIDE1NiwgMTUxLCAxLCAxMDksIDIyNCwgMTM5LCAxNTEsIDEsIDcyLCAxNTEsIDEsIDI1MSwgMTc2LCAxNTEsIDEsIDc0LCAKKyAgICAxNTEsIDEsIDI1MCwgMTM5LCAxNTEsIDEsIDE2MSwgMTUxLCAxLCAyMjYsIDIwNywgMTUxLCAxLCAyMzYsIDg5LCAxNTEsIDEsIAorICAgIDIzNSwgMTk5LCAxNTEsIDEsIDIxOSwgMjUzLCAxNTEsIDEsIDI0NywgMTkwLCAxNTEsIDEsIDI0NywgMzcsIDE1MSwgMSwgCisgICAgMjI3LCAyNDgsIDE1MSwgMSwgMjI3LCAyMTUsIDE1MSwgMSwgMjE4LCA2MCwgMTUxLCAxLCAyMDQsIDI1MywgMTUxLCAxLCAKKyAgICAyMDQsIDI0MSwgMTUxLCAxLCAyNDEsIDIyMCwgMTUxLCAxLCAyNDEsIDIwNCwgMTUxLCAxLCAyMTksIDIxLCAxNTEsIDEsIAorICAgIDIwNywgMzYsIDE1MSwgMSwgMjA2LCAxMjIsIDE1MSwgMSwgMjQyLCA1OCwgMTUxLCAxLCAyNDEsIDEwMCwgMTUxLCAxLCAKKyAgICAxODgsIDE1MSwgMSwgMTcyLCAxNTEsIDEsIDIxNSwgMjQ1LCAxNTEsIDEsIDI0OSwgMTM2LCAxNTEsIDEsIDI0OCwgMjAwLCAKKyAgICAxNTEsIDEsIDE3OCwgMTUxLCAxLCAxODMsIDE1MSwgMSwgMjEzLCAyNTIsIDE1MSwgMSwgMTk0LCAxNTEsIDEsIDIwMywgOTAsIAorICAgIDE1MSwgMSwgMjEwLCAxMTQsIDE1MSwgMSwgMjA4LCAxNzksIDE1MSwgMSwgMjEyLCA2NCwgMTUxLCAxLCAxNDQsIDE1MSwgMSwgCisgICAgMjI0LCAxMzgsIDE1MSwgMSwgNDAsIDQ1LCAyMjQsIDEyOSwgMTUxLCAxLCA0MCwgNDUsIDIxMiwgMjE1LCAxNTEsIDEsIDQwLCAKKyAgICA0NSwgMjE5LCAzLCAxNTEsIDIyLCAyLCAyNTIsIDEzOCwgMTUxLCAyMiwgMiwgMjQ4LCAxOTcsIDI1MiwgMTM4LCAxNTEsIAorICAgIDIyLCAyLCA3MCwgMTUxLCAyMiwgMiwgMjI4LCAxNTEsIDE1MSwgMjIsIDIsIDY2LCAxNTEsIDIyLCAyLCAyMDMsIDE4MiwgCisgICAgMTUxLCAyMiwgMiwgMTA5LCAxNDYsIDE1MSwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE1MSwgMjIsIDIsIDEwOSwgMTU2LCAKKyAgICAxNTEsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxNTEsIDIyLCAyLCA3MiwgMTUxLCAyMiwgMiwgMjUxLCAxNzYsIDE1MSwgMjIsIAorICAgIDIsIDc0LCAxNTEsIDIyLCAyLCAyNTAsIDEzOSwgMTUxLCAyMDIsIDIwOCwgMTUxLCAyNDIsIDEwLCAxNTEsIDUzLCAyNDIsIAorICAgIDEwLCAxNTEsIDIxNCwgMjEyLCAyNDAsIDE4MiwgMTUxLCAyMTQsIDIxMiwgNTMsIDI0MCwgMTgyLCAxNTEsIDIxNCwgMjEyLCAKKyAgICAyMjQsIDE3NiwgMTUxLCAyMTQsIDIxMiwgMjQyLCAyNDQsIDE0OCwgMTUxLCAyMTQsIDIxMiwgMjI0LCA2NCwgMTUxLCA0MSwgCisgICAgMTAyLCAxNTEsIDQxLCAxMDUsIDE1MSwgNDEsIDE0NywgMTUxLCA0MSwgMTQ5LCAxNTEsIDQxLCAxNjQsIDE1MSwgNDEsIAorICAgIDE4NywgMTUxLCA0MSwgMjEwLCAxMzUsIDE1MSwgNDEsIDE5MiwgMTUxLCA0MSwgMjE5LCAxMTMsIDE1MSwgNDEsIDIwNiwgCisgICAgMTY2LCAxNTEsIDQxLCAyMDQsIDE1OSwgMTUxLCA0MSwgMjA2LCA2NywgMTUxLCA0MSwgMjM2LCAyMzUsIDE1MSwgNDEsIAorICAgIDIzNywgMTA0LCAxNTEsIDQxLCAyMDksIDkyLCAxNTEsIDQxLCAyMTAsIDEyOSwgMTUxLCA0MSwgMjM4LCAyMjIsIDE1MSwgCisgICAgNDEsIDIxOSwgMTA4LCAxNTEsIDQxLCAxMTIsIDIzMywgODIsIDE1MSwgNDEsIDExMiwgMjA2LCA1MCwgMTUxLCAxNywgMTk5LCAKKyAgICA4MSwgMTUxLCAxNywgMTAyLCAxNTEsIDE3LCAxMDUsIDE1MSwgMTcsIDE0NywgMTUxLCAxNywgMTQ5LCAxNTEsIDE3LCAxNjQsIAorICAgIDE1MSwgMTcsIDE4NywgMTUxLCAxNywgMjEwLCAxMzUsIDE1MSwgMTcsIDE5MiwgMTUxLCAxNywgMjE5LCAxMTMsIDE1MSwgCisgICAgNDEsIDIyNywgMTYxLCAyMjcsIDc5LCAyLCAyNDcsIDE0OSwgMjI3LCA3OSwgMiwgMjUxLCAzMywgMjI3LCA3OSwgMiwgMjAyLCAKKyAgICAyMDMsIDIyNywgNzksIDEsIDYyLCAyMjcsIDc5LCAxLCAyNTIsIDEzOCwgMjI3LCA3OSwgMSwgNzAsIDIyNywgNzksIDEsIAorICAgIDIyOCwgMTUxLCAyMjcsIDc5LCAxLCA2NiwgMjI3LCA3OSwgMSwgMjAzLCAxODIsIDIyNywgNzksIDEsIDcyLCAyMjcsIDc5LCAKKyAgICAxLCAyNTEsIDE3NiwgMjI3LCA3OSwgMSwgNzQsIDIyNywgNzksIDEsIDI1MCwgMTM5LCAyMjcsIDc5LCAxLCAxNjEsIDIyNywgCisgICAgNzksIDEsIDIyNiwgMjA3LCAyMjcsIDc5LCAxLCAyMzYsIDg5LCAyMjcsIDc5LCAxLCAyMzUsIDE5OSwgMjI3LCA3OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNywgNzksIDEsIDI0NywgMTkwLCAyMjcsIDc5LCAxLCAyNDcsIDM3LCAyMjcsIDc5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI3LCA3OSwgMSwgMjI3LCAyMTUsIDIyNywgNzksIDEsIDIxOCwgNjAsIDIyNywgNzksIDEsIDIwNCwgMjUzLCAKKyAgICAyMjcsIDc5LCAxLCAyMDQsIDI0MSwgMjI3LCA3OSwgMSwgMjQxLCAyMjAsIDIyNywgNzksIDEsIDI0MSwgMjA5LCAyMjcsIAorICAgIDc5LCAxLCAyNDEsIDIwNCwgMjI3LCA3OSwgMSwgMjEzLCA5MywgMjI3LCA3OSwgMSwgMjE5LCAyMSwgMjI3LCA3OSwgMSwgCisgICAgMjA3LCAzNiwgMjI3LCA3OSwgMSwgMjA2LCAxMjIsIDIyNywgNzksIDEsIDI0MiwgNTgsIDIyNywgNzksIDEsIDI0MSwgMTAwLCAKKyAgICAyMjcsIDc5LCAxLCAxODgsIDIyNywgNzksIDEsIDE3MiwgMjI3LCA3OSwgMSwgMjE1LCAyNDUsIDIyNywgNzksIDEsIDI0OSwgCisgICAgMTM2LCAyMjcsIDc5LCAxLCAyNDgsIDIwMCwgMjI3LCA3OSwgMSwgMTc4LCAyMjcsIDc5LCAxLCAxODMsIDIyNywgNzksIDEsIAorICAgIDIxMywgMjUyLCAyMjcsIDc5LCAxLCAxOTQsIDIyNywgNzksIDEsIDIwMywgOTAsIDIyNywgNzksIDEsIDIxMCwgMTE0LCAKKyAgICAyMjcsIDc5LCAxLCAyMDgsIDE3OSwgMjI3LCA3OSwgMSwgMjEyLCA2NCwgMjI3LCA3OSwgMSwgMTQ0LCAyMjcsIDc5LCAyMiwgCisgICAgMiwgMjUyLCAxMzgsIDIyNywgNzksIDIyLCAyLCA3MCwgMjI3LCA3OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjcsIDc5LCAyMiwgCisgICAgMiwgNjYsIDIyNywgNzksIDIyLCAyLCAyMDMsIDE4MiwgMjI3LCA3OSwgMjIsIDIsIDcyLCAyMjcsIDc5LCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDIyNywgNzksIDIyLCAyLCA3NCwgMjI3LCA3OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjcsIDc5LCAyLCAyMDIsIDIwOCwgCisgICAgMjI3LCA3OSwgMiwgMjE4LCAxMDAsIDIyNywgNzksIDI1MiwgMywgNTQsIDIyNywgNzksIDIzOCwgMTQ2LCA1NCwgMjI3LCAKKyAgICA3OSwgNDEsIDU0LCAyMjcsIDc5LCAyMTEsIDE5MywgODEsIDIyNywgNzksIDUzLCAyMTEsIDE5MywgODEsIDIyNywgNzksIAorICAgIDI0MiwgMTAsIDIyNywgNzksIDUzLCAyNDIsIDEwLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIxMiwgNDcsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjA3LCA5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0OSwgMTA3LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0NywgCisgICAgMTc5LCAyMDksIDYsIDIwOSwgMTQsIDEsIDI0MiwgMzgsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM2LCA3NCwgMjA5LCA2LCAKKyAgICAyMDksIDE0LCAxLCAyMjIsIDIwNiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTksIDI1MCwgMjA5LCA2LCAyMDksIDE0LCAxLCAKKyAgICAyMjUsIDE1MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMjAsIDE0NCwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMDMsIDg2LCAyMDksIAorICAgIDYsIDIwOSwgMTQsIDEsIDIxNiwgMTkyLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIwMCwgOTAsIDIwOSwgNiwgMjA5LCAxNCwgMSwgCisgICAgMjEzLCAyMzEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjM0LCAyMjQsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjI3LCA4NCwgMjA5LCAKKyAgICA2LCAyMDksIDE0LCAxLCAyMjcsIDI0MiwgMjA5LCA2LCAyMDksIDE0LCAxLCAyMTgsIDU3LCAyMDksIDYsIDIwOSwgMTQsIDEsIAorICAgIDI1MSwgMTg1LCAyMDksIDYsIDIwOSwgMTQsIDEsIDIzOCwgMjUzLCAyMDksIDYsIDIwOSwgMTQsIDEsIDIyOCwgMTUyLCAKKyAgICAyMDksIDYsIDIwOSwgMTQsIDEsIDIwNCwgMjUsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjE3LCAxMDgsIDIwOSwgNiwgMjA5LCAKKyAgICAxNCwgMSwgMjM4LCAyNDEsIDIwOSwgNiwgMjA5LCAxNCwgMSwgMjIyLCAyMTksIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE5OSwgCisgICAgODEsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDEwMiwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTA1LCAyMDksIDYsIDIwOSwgMTQsIAorICAgIDE3LCAxNDcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDE0OSwgMjA5LCA2LCAyMDksIDE0LCAxNywgMTY0LCAyMDksIDYsIDIwOSwgCisgICAgMTQsIDE3LCAxODcsIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxMCwgMTM1LCAyMDksIDYsIDIwOSwgMTQsIDE3LCAxOTIsIAorICAgIDIwOSwgNiwgMjA5LCAxNCwgMTcsIDIxOSwgMTEzLCAyNDcsIDMxLCAyLCAyNDcsIDE0OSwgMjQ3LCAzMSwgMiwgMjUxLCAzMywgCisgICAgMjQ3LCAzMSwgMiwgMjAyLCAyMDMsIDI0NywgMzEsIDEsIDI1MiwgMTM4LCAyNDcsIDMxLCAxLCA3MCwgMjQ3LCAzMSwgMSwgCisgICAgNjYsIDI0NywgMzEsIDEsIDcyLCAyNDcsIDMxLCAxLCAyMjcsIDEwNSwgMjQ3LCAzMSwgMSwgMjI2LCAyMDYsIDI0NywgMzEsIAorICAgIDEsIDIzNiwgODYsIDI0NywgMzEsIDEsIDIzNSwgMTk4LCAyNDcsIDMxLCAxLCAyMTksIDI1MiwgMjQ3LCAzMSwgMSwgMjQ3LCAKKyAgICAxODksIDI0NywgMzEsIDEsIDI0NywgMzYsIDI0NywgMzEsIDEsIDIyNywgMjQ3LCAyNDcsIDMxLCAxLCAyMjcsIDIxNCwgCisgICAgMjQ3LCAzMSwgMSwgMjE4LCA1OSwgMjQ3LCAzMSwgMSwgMjA0LCAyNTIsIDI0NywgMzEsIDEsIDIwNCwgMjQwLCAyNDcsIDMxLCAKKyAgICAxLCAyNDEsIDIxOSwgMjQ3LCAzMSwgMSwgMjQxLCAyMDMsIDI0NywgMzEsIDEsIDIxOSwgMjAsIDI0NywgMzEsIDEsIDIwNywgCisgICAgMzIsIDI0NywgMzEsIDEsIDIwNiwgMTIxLCAyNDcsIDMxLCAxLCAyNDIsIDU3LCAyNDcsIDMxLCAxLCAyNDEsIDk5LCAyNDcsIAorICAgIDMxLCAxLCAyMjAsIDE1NywgMjQ3LCAzMSwgMSwgMjE2LCAyMTAsIDI0NywgMzEsIDEsIDIxNSwgMjQ0LCAyNDcsIDMxLCAxLCAKKyAgICAyNDksIDEzNCwgMjQ3LCAzMSwgMSwgMjQ4LCAxOTksIDI0NywgMzEsIDEsIDIyMiwgMjMzLCAyNDcsIDMxLCAxLCAxOTksIAorICAgIDE2NSwgMjQ3LCAzMSwgMSwgMjAwLCAxMDksIDI0NywgMzEsIDEsIDIxMywgMjQ4LCAyNDcsIDMxLCAxLCAyMjUsIDE3NSwgCisgICAgMjQ3LCAzMSwgMSwgMjAxLCAxMTMsIDI0NywgMzEsIDEsIDIxMiwgNjEsIDI0NywgMzEsIDEsIDIzNCwgMjMzLCAyNDcsIDMxLCAKKyAgICAyMiwgMiwgNjIsIDI0NywgMzEsIDIyLCAyLCA3MCwgMjQ3LCAzMSwgMjIsIDIsIDIyOCwgMTUxLCAyNDcsIDMxLCAyMiwgMiwgCisgICAgNjYsIDI0NywgMzEsIDIyLCAyLCAyMDMsIDE4MiwgMjQ3LCAzMSwgMjIsIDIsIDcyLCAyNDcsIDMxLCAyMiwgMiwgMjUxLCAKKyAgICAxNzYsIDI0NywgMzEsIDIyLCAyLCA3NCwgMjQ3LCAzMSwgMjIsIDIsIDI1MCwgMTM5LCAyNDcsIDMxLCAyMiwgMiwgMjE3LCAKKyAgICAxMDUsIDI0NywgMzEsIDE2MywgODEsIDI0NywgMzEsIDI1MCwgMTQwLCA4MSwgMjQ3LCAzMSwgMjAyLCAyMDgsIDI0NywgMzEsIAorICAgIDIyMiwgMjMxLCAyNDcsIDMxLCAxNywgMTk5LCA4MSwgMjQ3LCAzMSwgMTcsIDEwMiwgMjQ3LCAzMSwgMTcsIDEwNSwgMjQ3LCAKKyAgICAzMSwgMTcsIDE0NywgMjQ3LCAzMSwgMTcsIDE0OSwgMjQ3LCAzMSwgMTcsIDE2NCwgMjQ3LCAzMSwgMTcsIDE4NywgMjQ3LCAKKyAgICAzMSwgMTcsIDIxMCwgMTM1LCAyNDcsIDMxLCAxNywgMTkyLCAyNDcsIDMxLCAxNywgMjE5LCAxMTMsIDI0NywgMzEsIDIxMSwgCisgICAgMTkzLCA4MSwgMjQ3LCAzMSwgMjQyLCAxMCwgMjQ3LCAzMSwgNTMsIDI0MiwgMTAsIDI0NywgMzEsIDIxNCwgNzksIDgxLCAKKyAgICAyMjIsIDIwNCwgMSwgNjIsIDIyMiwgMjA0LCAxLCA3MCwgMjIyLCAyMDQsIDEsIDY2LCAyMjIsIDIwNCwgMSwgNzIsIDIyMiwgCisgICAgMjA0LCAxLCA3NCwgMjIyLCAyMDQsIDEsIDE2MSwgMjIyLCAyMDQsIDEsIDIyNiwgMjA3LCAyMjIsIDIwNCwgMSwgMjM2LCAKKyAgICA4OSwgMjIyLCAyMDQsIDEsIDIzNSwgMTk5LCAyMjIsIDIwNCwgMSwgMjQ3LCAxOTAsIDIyMiwgMjA0LCAxLCAyNDcsIDM3LCAKKyAgICAyMjIsIDIwNCwgMSwgMjI3LCAyNDgsIDIyMiwgMjA0LCAxLCAyMjcsIDIxNSwgMjIyLCAyMDQsIDEsIDIxOCwgNjAsIDIyMiwgCisgICAgMjA0LCAxLCAyMDQsIDI1MywgMjIyLCAyMDQsIDEsIDIwNCwgMjQxLCAyMjIsIDIwNCwgMSwgMjQxLCAyMjAsIDIyMiwgMjA0LCAKKyAgICAxLCAyNDEsIDIwNCwgMjIyLCAyMDQsIDEsIDIxOSwgMjEsIDIyMiwgMjA0LCAxLCAyMDcsIDM2LCAyMjIsIDIwNCwgMSwgCisgICAgMjA2LCAxMjIsIDIyMiwgMjA0LCAxLCAyNDIsIDU4LCAyMjIsIDIwNCwgMSwgMjQxLCAxMDAsIDIyMiwgMjA0LCAxLCAxODgsIAorICAgIDIyMiwgMjA0LCAxLCAxNzIsIDIyMiwgMjA0LCAxLCAyMTUsIDI0NSwgMjIyLCAyMDQsIDEsIDI0OSwgMTM2LCAyMjIsIDIwNCwgCisgICAgMSwgMjQ4LCAyMDAsIDIyMiwgMjA0LCAxLCAxNzgsIDIyMiwgMjA0LCAxLCAyMTMsIDI1MiwgMjIyLCAyMDQsIDEsIDE5NCwgCisgICAgMjIyLCAyMDQsIDEsIDIwMywgOTAsIDIyMiwgMjA0LCAxLCAyMTIsIDY0LCAyMjIsIDIwNCwgMSwgMTQ0LCAyMjIsIDIwNCwgCisgICAgMSwgMjEyLCAyMTUsIDIyMiwgMjA0LCAyLCAyMTgsIDEwMCwgMjIyLCAyMDQsIDI1MiwgMywgNTQsIDIyMiwgMjA0LCAyMTEsIAorICAgIDE5MywgODEsIDIyMiwgMjA0LCAzMywgMjA5LCAyMjgsIDE4NiwgMiwgMjQ3LCAxNDksIDE4NiwgMiwgMjUxLCAzMywgMTg2LCAKKyAgICAyLCAyMDIsIDIwMywgMTg2LCAxLCA2MiwgMTg2LCAxLCAyNTIsIDEzOCwgMTg2LCAxLCA3MCwgMTg2LCAxLCAyMjgsIDE1MSwgCisgICAgMTg2LCAxLCA2NiwgMTg2LCAxLCAyMDMsIDE4MiwgMTg2LCAxLCAxMDksIDE0NiwgMTg2LCAxLCAxMDksIDIxMiwgMjE2LCAKKyAgICAxODYsIDEsIDEwOSwgMTU2LCAxODYsIDEsIDEwOSwgMjI0LCAxMzksIDE4NiwgMSwgNzIsIDE4NiwgMSwgMjUxLCAxNzYsIAorICAgIDE4NiwgMSwgNzQsIDE4NiwgMSwgMjUwLCAxMzksIDE4NiwgMSwgMTYxLCAxODYsIDEsIDIyNiwgMjA3LCAxODYsIDEsIDIzNiwgCisgICAgODksIDE4NiwgMSwgMjM1LCAxOTksIDE4NiwgMSwgMjE5LCAyNTMsIDE4NiwgMSwgMjQ3LCAxOTAsIDE4NiwgMSwgMjQ3LCAKKyAgICAzNywgMTg2LCAxLCAyMjcsIDI0OCwgMTg2LCAxLCAyMjcsIDIxNSwgMTg2LCAxLCAyMTgsIDYwLCAxODYsIDEsIDIwNCwgCisgICAgMjUzLCAxODYsIDEsIDIwNCwgMjQxLCAxODYsIDEsIDI0MSwgMjIwLCAxODYsIDEsIDI0MSwgMjA0LCAxODYsIDEsIDIxOSwgCisgICAgMjEsIDE4NiwgMSwgMjA3LCAzNiwgMTg2LCAxLCAyMDYsIDEyMiwgMTg2LCAxLCAyNDIsIDU4LCAxODYsIDEsIDI0MSwgMTAwLCAKKyAgICAxODYsIDEsIDE4OCwgMTg2LCAxLCAxNzIsIDE4NiwgMSwgMjE1LCAyNDUsIDE4NiwgMSwgMjQ5LCAxMzYsIDE4NiwgMSwgCisgICAgMjQ4LCAyMDAsIDE4NiwgMSwgMTc4LCAxODYsIDEsIDE4MywgMTg2LCAxLCAyMTMsIDI1MiwgMTg2LCAxLCAxOTQsIDE4NiwgCisgICAgMSwgMjI0LCAxMzgsIDE4NiwgMSwgMjAzLCA5MCwgMTg2LCAxLCAyMTAsIDExNCwgMTg2LCAxLCAyMDgsIDE3OSwgMTg2LCAxLCAKKyAgICAyMTIsIDY0LCAxODYsIDEsIDE0NCwgMTg2LCAyMiwgMiwgMjUyLCAxMzgsIDE4NiwgMjIsIDIsIDcwLCAxODYsIDIyLCAyLCAKKyAgICAyMjgsIDE1MSwgMTg2LCAyMiwgMiwgNjYsIDE4NiwgMjIsIDIsIDIwMywgMTgyLCAxODYsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMTg2LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMTg2LCAyMiwgMiwgMTA5LCAxNTYsIDE4NiwgMjIsIDIsIDEwOSwgMjI0LCAKKyAgICAxMzksIDE4NiwgMjIsIDIsIDcyLCAxODYsIDIyLCAyLCAyNTEsIDE3NiwgMTg2LCAyMiwgMiwgNzQsIDE4NiwgMjIsIDIsIAorICAgIDI1MCwgMTM5LCAxODYsIDIsIDIwMiwgMjA4LCAxODYsIDIsIDI1MCwgMTIyLCAxODYsIDIsIDIyNywgMjAxLCAxODYsIDIsIAorICAgIDIwMywgMjI2LCAxODYsIDIxNywgODYsIDE4NiwgMjQyLCAxMCwgMTg2LCA1MywgMjQyLCAxMCwgMTg2LCAyNTIsIDMsIDU0LCAKKyAgICAxODYsIDIxMCwgMTU0LCAxODYsIDIxMiwgOSwgODEsIDE4NiwgMiwgMjE4LCAxMDAsIDE4NiwgMjIsIDY3LCA4MSwgMTg2LCAKKyAgICAyMzgsIDMwLCAyMDksIDI1MCwgMjIsIDgxLCAxODYsIDIwNywgMTk0LCA4MSwgMTg2LCAxNywgMTk5LCA4MSwgMTg2LCAxNywgCisgICAgMTAyLCAxODYsIDE3LCAxMDUsIDE4NiwgMTcsIDE0NywgMTg2LCAxNywgMTQ5LCAxODYsIDE3LCAxNjQsIDE4NiwgMTcsIAorICAgIDE4NywgMTg2LCAxNywgMjEwLCAxMzUsIDE4NiwgMTcsIDE5MiwgMTg2LCAxNywgMjE5LCAxMTMsIDE4NiwgMjM4LCAyMTUsIAorICAgIDE4NiwgMiwgMjA5LCAxNzcsIDE4NiwgMjM0LCAxMzAsIDE4NiwgMjQzLCA0MSwgNTQsIDE4NiwgMjExLCAxOTMsIDIyMiwgCisgICAgMTQ5LCAxODYsIDIxMSwgMTkzLCAyMjIsIDE0OCwgMTQzLCAyNTAsIDIzNCwgMTcsIDEwMiwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDEwNSwgMTQzLCAyNTAsIDIzNCwgMTcsIDE0NywgMTQzLCAyNTAsIDIzNCwgMTcsIDE0OSwgMTQzLCAyNTAsIDIzNCwgMTcsIAorICAgIDE2NCwgMTQzLCAyNTAsIDIzNCwgMTcsIDE4NywgMTQzLCAyNTAsIDIzNCwgMTcsIDIxMCwgMTM1LCAxNDMsIDI1MCwgMjM0LCAKKyAgICAxNywgMTkyLCAxNDMsIDI1MCwgMjM0LCAxNywgMjE5LCAxMTMsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDYsIDE2NiwgMTQzLCAKKyAgICAyNTAsIDIzNCwgNDEsIDIwNCwgMTU5LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjA2LCA2NywgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIzNiwgMjM1LCAxNDMsIDI1MCwgMjM0LCA0MSwgMjM3LCAxMDQsIDE0MywgMjUwLCAyMzQsIDQxLCAyMDksIDkyLCAxNDMsIAorICAgIDI1MCwgMjM0LCA0MSwgMjEwLCAxMjksIDE0MywgMjUwLCAyMzQsIDQxLCAyMzgsIDIyMiwgMTQzLCAyNTAsIDIzNCwgNDEsIAorICAgIDIxOSwgMTA4LCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMzMsIDgyLCAxNDMsIDI1MCwgMjM0LCA0MSwgMTEyLCAyMDYsIAorICAgIDUwLCAyMjYsIDE3NywgMSwgNjIsIDIyNiwgMTc3LCAxLCAyNTIsIDEzOCwgMjI2LCAxNzcsIDEsIDcwLCAyMjYsIDE3NywgMSwgCisgICAgNjYsIDIyNiwgMTc3LCAxLCA3MiwgMjI2LCAxNzcsIDEsIDI1MSwgMTc2LCAyMjYsIDE3NywgMSwgNzQsIDIyNiwgMTc3LCAxLCAKKyAgICAyNTAsIDEzOSwgMjI2LCAxNzcsIDEsIDE2MSwgMjI2LCAxNzcsIDEsIDIyNiwgMjA3LCAyMjYsIDE3NywgMSwgMjM2LCA4OSwgCisgICAgMjI2LCAxNzcsIDEsIDIzNSwgMjM1LCAyMjYsIDE3NywgMSwgMjM1LCAxOTksIDIyNiwgMTc3LCAxLCAyMTksIDI1MywgMjI2LCAKKyAgICAxNzcsIDEsIDI0NywgMTkwLCAyMjYsIDE3NywgMSwgMjQ3LCAzNywgMjI2LCAxNzcsIDEsIDIyNywgMjQ4LCAyMjYsIDE3NywgCisgICAgMSwgMjI3LCAxOTQsIDIyNiwgMTc3LCAxLCAyMTgsIDYwLCAyMjYsIDE3NywgMSwgMjA0LCAyNTMsIDIyNiwgMTc3LCAxLCAKKyAgICAyMDQsIDI0MSwgMjI2LCAxNzcsIDEsIDI0MSwgMjIwLCAyMjYsIDE3NywgMSwgMjQxLCAyMDQsIDIyNiwgMTc3LCAxLCAyMTksIAorICAgIDIxLCAyMjYsIDE3NywgMSwgMjA3LCAzNiwgMjI2LCAxNzcsIDEsIDIwNiwgMTIyLCAyMjYsIDE3NywgMSwgMjQyLCA1OCwgCisgICAgMjI2LCAxNzcsIDEsIDI0MSwgMjEwLCAyMjYsIDE3NywgMSwgMjQxLCAxMDAsIDIyNiwgMTc3LCAxLCAxODgsIDIyNiwgMTc3LCAKKyAgICAxLCAxNzIsIDIyNiwgMTc3LCAxLCAyMTUsIDI0NSwgMjI2LCAxNzcsIDEsIDI0OSwgMTM2LCAyMjYsIDE3NywgMSwgMjQ5LCAKKyAgICA0NCwgMjI2LCAxNzcsIDEsIDI0OCwgMjAwLCAyMjYsIDE3NywgMSwgMTc4LCAyMjYsIDE3NywgMSwgMTgzLCAyMjYsIDE3NywgCisgICAgMSwgMjEzLCAyNTIsIDIyNiwgMTc3LCAxLCAxOTQsIDIyNiwgMTc3LCAxLCAyMDMsIDkwLCAyMjYsIDE3NywgMSwgMjEyLCAKKyAgICA2NCwgMjI2LCAxNzcsIDEsIDE0NCwgMjI2LCAxNzcsIDEsIDIyNCwgMTM4LCAyMjYsIDE3NywgMjIsIDIsIDI1MiwgMTM4LCAKKyAgICAyMjYsIDE3NywgMjIsIDIsIDcwLCAyMjYsIDE3NywgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE3NywgMjIsIDIsIDY2LCAyMjYsIAorICAgIDE3NywgMjIsIDIsIDcyLCAyMjYsIDE3NywgMjIsIDIsIDI1MSwgMTc2LCAyMjYsIDE3NywgMjIsIDIsIDc0LCAyMjYsIDE3NywgCisgICAgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE3NywgMiwgMjUxLCAzMywgMjI2LCAxNzcsIDIsIDIwMiwgMjA4LCAyMjYsIDE3NywgCisgICAgMiwgMjE4LCAxMDAsIDIyNiwgMTc3LCAyLCAyMTAsIDEwNCwgMjI2LCAxNzcsIDI0MiwgMTAsIDIyNiwgMTc3LCA1MywgMjQyLCAKKyAgICAxMCwgMjI2LCAxNzcsIDIwMCwgMjM4LCAyMTAsIDE1NCwgMjI2LCAxNzcsIDIxMSwgMTkzLCA4MSwgMjI2LCAxNzcsIDUzLCAKKyAgICAyMTEsIDE5MywgODEsIDIyNiwgMTc3LCAyNTIsIDMsIDU0LCAyMjYsIDE3NywgMiwgMjA3LCAyMzYsIDIyMSwgMjUsIDEsIAorICAgIDYyLCAyMjEsIDI1LCAxLCA3MCwgMjIxLCAyNSwgMSwgNjYsIDIyMSwgMjUsIDEsIDcyLCAyMjEsIDI1LCAxLCAxNjEsIDIyMSwgCisgICAgMjUsIDEsIDIyNiwgMjA3LCAyMjEsIDI1LCAxLCAyMzYsIDg5LCAyMjEsIDI1LCAxLCAyMzUsIDE5OSwgMjIxLCAyNSwgMSwgCisgICAgMjQ3LCAxOTAsIDIyMSwgMjUsIDEsIDI0NywgMzcsIDIyMSwgMjUsIDEsIDIyNywgMjQ4LCAyMjEsIDI1LCAxLCAyMjcsIAorICAgIDE5NCwgMjIxLCAyNSwgMSwgMjE4LCA2MCwgMjIxLCAyNSwgMSwgMjA0LCAyNTMsIDIyMSwgMjUsIDEsIDIwNCwgMjQxLCAKKyAgICAyMjEsIDI1LCAxLCAyNDEsIDIyMCwgMjIxLCAyNSwgMSwgMjQxLCAyMTAsIDIyMSwgMjUsIDEsIDI0MSwgMjA0LCAyMjEsIAorICAgIDI1LCAxLCAyMTksIDIxLCAyMjEsIDI1LCAxLCAyMDcsIDM2LCAyMjEsIDI1LCAxLCAyMDYsIDEyMiwgMjIxLCAyNSwgMSwgCisgICAgMjQyLCA1OCwgMjIxLCAyNSwgMSwgMjQxLCAxMDAsIDIyMSwgMjUsIDEsIDE4OCwgMjIxLCAyNSwgMSwgMTcyLCAyMjEsIDI1LCAKKyAgICAxLCAyMTUsIDI0NSwgMjIxLCAyNSwgMSwgMjQ5LCAxMzYsIDIyMSwgMjUsIDEsIDI0OCwgMjAwLCAyMjEsIDI1LCAxLCAxNzgsIAorICAgIDIyMSwgMjUsIDEsIDE4MywgMjIxLCAyNSwgMSwgMjEzLCAyNTIsIDIyMSwgMjUsIDEsIDE5NCwgMjIxLCAyNSwgMSwgMjAzLCAKKyAgICA5MCwgMjIxLCAyNSwgMSwgMjEyLCA2NCwgMjIxLCAyNSwgMSwgMTQ0LCAyMjEsIDI1LCAxLCAyMTIsIDIxNSwgMjIxLCAyNSwgCisgICAgMSwgMjEzLCA5MywgMjIxLCAyNSwgMjExLCAxOTMsIDgxLCAyMjYsIDE2OSwgMSwgNjIsIDIyNiwgMTY5LCAxLCAyNTIsIAorICAgIDEzOCwgMjI2LCAxNjksIDEsIDcwLCAyMjYsIDE2OSwgMSwgMjI4LCAxNTEsIDIyNiwgMTY5LCAxLCA2NiwgMjI2LCAxNjksIAorICAgIDEsIDIwMywgMTgyLCAyMjYsIDE2OSwgMSwgNzIsIDIyNiwgMTY5LCAxLCAyNTEsIDE3NiwgMjI2LCAxNjksIDEsIDc0LCAKKyAgICAyMjYsIDE2OSwgMSwgMjUwLCAxMzksIDIyNiwgMTY5LCAxLCAxNjEsIDIyNiwgMTY5LCAxLCAyMjYsIDIwNywgMjI2LCAxNjksIAorICAgIDEsIDIzNiwgODksIDIyNiwgMTY5LCAxLCAyMzUsIDIzNSwgMjI2LCAxNjksIDEsIDIzNSwgMTk5LCAyMjYsIDE2OSwgMSwgCisgICAgMjE5LCAyNTMsIDIyNiwgMTY5LCAxLCAyNDcsIDE5MCwgMjI2LCAxNjksIDEsIDI0NywgMzcsIDIyNiwgMTY5LCAxLCAyMjcsIAorICAgIDI0OCwgMjI2LCAxNjksIDEsIDIyNywgMTk0LCAyMjYsIDE2OSwgMSwgMjI3LCAyMTUsIDIyNiwgMTY5LCAxLCAyMTgsIDYwLCAKKyAgICAyMjYsIDE2OSwgMSwgMjA0LCAyNTMsIDIyNiwgMTY5LCAxLCAyMDQsIDI0MSwgMjI2LCAxNjksIDEsIDI0MSwgMjIwLCAyMjYsIAorICAgIDE2OSwgMSwgMjQxLCAyMTAsIDIyNiwgMTY5LCAxLCAyMTIsIDIxNSwgMjI2LCAxNjksIDEsIDI0MSwgMjA0LCAyMjYsIDE2OSwgCisgICAgMSwgMjE5LCAyMSwgMjI2LCAxNjksIDEsIDIwNywgMzYsIDIyNiwgMTY5LCAxLCAyMDYsIDEyMiwgMjI2LCAxNjksIDEsIAorICAgIDI0MiwgNTgsIDIyNiwgMTY5LCAxLCAyNDEsIDEwMCwgMjI2LCAxNjksIDEsIDE4OCwgMjI2LCAxNjksIDEsIDE3MiwgMjI2LCAKKyAgICAxNjksIDEsIDIxNSwgMjQ1LCAyMjYsIDE2OSwgMSwgMjQ5LCAxMzYsIDIyNiwgMTY5LCAxLCAyNDksIDQ0LCAyMjYsIDE2OSwgCisgICAgMSwgMjQ4LCAyMDAsIDIyNiwgMTY5LCAxLCAxNzgsIDIyNiwgMTY5LCAxLCAxODMsIDIyNiwgMTY5LCAxLCAyMTMsIDI1MiwgCisgICAgMjI2LCAxNjksIDEsIDE5NCwgMjI2LCAxNjksIDEsIDIwMywgOTAsIDIyNiwgMTY5LCAxLCAyMTAsIDExNCwgMjI2LCAxNjksIAorICAgIDEsIDIxMiwgNjQsIDIyNiwgMTY5LCAxLCAxNDQsIDIyNiwgMTY5LCAyLCAyNTEsIDMzLCAyMjYsIDE2OSwgMjIsIDIsIDI1MiwgCisgICAgMTM4LCAyMjYsIDE2OSwgMjIsIDIsIDcwLCAyMjYsIDE2OSwgMjIsIDIsIDIyOCwgMTUxLCAyMjYsIDE2OSwgMjIsIDIsIDY2LCAKKyAgICAyMjYsIDE2OSwgMjIsIDIsIDIwMywgMTgyLCAyMjYsIDE2OSwgMjIsIDIsIDcyLCAyMjYsIDE2OSwgMjIsIDIsIDI1MSwgCisgICAgMTc2LCAyMjYsIDE2OSwgMjIsIDIsIDc0LCAyMjYsIDE2OSwgMjIsIDIsIDI1MCwgMTM5LCAyMjYsIDE2OSwgMiwgMjE4LCAKKyAgICAxMDAsIDIyNiwgMTY5LCAyLCAyMDIsIDIwOCwgMjI2LCAxNjksIDE3LCAxOTksIDgxLCAyMjYsIDE2OSwgMTcsIDEwMiwgCisgICAgMjI2LCAxNjksIDE3LCAxMDUsIDIyNiwgMTY5LCAxNywgMTQ3LCAyMjYsIDE2OSwgMTcsIDE0OSwgMjI2LCAxNjksIDE3LCAKKyAgICAxNjQsIDIyNiwgMTY5LCAxNywgMTg3LCAyMjYsIDE2OSwgMTcsIDIxMCwgMTM1LCAyMjYsIDE2OSwgMTcsIDE5MiwgMjI2LCAKKyAgICAxNjksIDE3LCAyMTksIDExMywgMjM1LCA4MiwgMiwgMzgsIDI1MSwgMzQsIDU2LCAyMzUsIDgyLCAyLCAyNDcsIDE0OSwgCisgICAgMjM1LCA4MiwgMiwgMjUxLCAzMywgMjM1LCA4MiwgMiwgMjAyLCAyMDMsIDIzNSwgODIsIDEsIDYyLCAyMzUsIDgyLCAxLCAKKyAgICAyNTIsIDEzOCwgMjM1LCA4MiwgMSwgNzAsIDIzNSwgODIsIDEsIDIyOCwgMTUxLCAyMzUsIDgyLCAxLCA2NiwgMjM1LCA4MiwgCisgICAgMSwgMjAzLCAxODIsIDIzNSwgODIsIDEsIDEwOSwgMTQ2LCAyMzUsIDgyLCAxLCAxMDksIDE1NiwgMjM1LCA4MiwgMSwgMjM4LCAKKyAgICAyNTUsIDIzNSwgODIsIDEsIDI1MSwgMTc2LCAyMzUsIDgyLCAxLCAyMTcsIDYzLCAyMzUsIDgyLCAxLCAyNTAsIDEzOSwgCisgICAgMjM1LCA4MiwgMSwgMTYxLCAyMzUsIDgyLCAxLCAyMjYsIDIwNywgMjM1LCA4MiwgMSwgMjM2LCA4OSwgMjM1LCA4MiwgMSwgCisgICAgMjM1LCAxOTksIDIzNSwgODIsIDEsIDIxOSwgMjUzLCAyMzUsIDgyLCAxLCAyNDcsIDE5MCwgMjM1LCA4MiwgMSwgMjQ3LCAKKyAgICAzNywgMjM1LCA4MiwgMSwgMjI3LCAyNDgsIDIzNSwgODIsIDEsIDIyNywgMjE1LCAyMzUsIDgyLCAxLCAyMTgsIDYwLCAyMzUsIAorICAgIDgyLCAxLCAyMDQsIDI1MywgMjM1LCA4MiwgMSwgMjA0LCAyNDEsIDIzNSwgODIsIDEsIDI0MSwgMjIwLCAyMzUsIDgyLCAxLCAKKyAgICAyNDEsIDIwNCwgMjM1LCA4MiwgMSwgMjE5LCAyMSwgMjM1LCA4MiwgMSwgMjA3LCAzNiwgMjM1LCA4MiwgMSwgMjA2LCAxMjIsIAorICAgIDIzNSwgODIsIDEsIDI0MiwgNTgsIDIzNSwgODIsIDEsIDI0MSwgMTAwLCAyMzUsIDgyLCAxLCAxODgsIDIzNSwgODIsIDEsIAorICAgIDE3MiwgMjM1LCA4MiwgMSwgMjE1LCAyNDUsIDIzNSwgODIsIDEsIDI0OSwgMTM2LCAyMzUsIDgyLCAxLCAyNDgsIDIwMCwgCisgICAgMjM1LCA4MiwgMSwgMTc4LCAyMzUsIDgyLCAxLCAxODMsIDIzNSwgODIsIDEsIDIxMywgMjUyLCAyMzUsIDgyLCAxLCAxOTQsIAorICAgIDIzNSwgODIsIDEsIDIyNCwgMTM4LCAyMzUsIDgyLCAxLCAyMDMsIDkwLCAyMzUsIDgyLCAxLCAyMTAsIDExNCwgMjM1LCA4MiwgCisgICAgMSwgMjA4LCAxNzksIDIzNSwgODIsIDEsIDIxMiwgNjQsIDIzNSwgODIsIDEsIDE0NCwgMjM1LCA4MiwgMiwgMjE4LCAxMDAsIAorICAgIDIzNSwgODIsIDIsIDI1MCwgMTIyLCAyMzUsIDgyLCAyMiwgMiwgMjUyLCAxMzgsIDIzNSwgODIsIDIyLCAyLCA3MCwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDIyOCwgMTUxLCAyMzUsIDgyLCAyMiwgMiwgNjYsIDIzNSwgODIsIDIyLCAyLCAyMDMsIDE4MiwgMjM1LCAKKyAgICA4MiwgMjIsIDIsIDEwOSwgMTQ2LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjM1LCA4MiwgMjIsIDIsIDIzOCwgCisgICAgMjU1LCAyMzUsIDgyLCAyMiwgMiwgMjUxLCAxNzYsIDIzNSwgODIsIDIyLCAyLCAyMTcsIDYzLCAyMzUsIDgyLCAyMiwgMiwgCisgICAgMjUwLCAxMzksIDIzNSwgODIsIDIsIDIwMiwgMjA4LCAyMzUsIDgyLCAyMTcsIDg2LCAyMzUsIDgyLCAyNTAsIDE0MCwgMjI1LCAKKyAgICAyLCA4MSwgMjM1LCA4MiwgMiwgMjE1LCAxMTEsIDIzNSwgODIsIDEsIDIwMywgNTYsIDI1MSwgMzMsIDIzNSwgODIsIDEsIAorICAgIDIwMywgNTYsIDUzLCAyNTEsIDMzLCAyMzUsIDgyLCAxLCAxMDksIDIxMiwgMjE2LCAyMzUsIDgyLCAxLCAxMDksIDIyNCwgCisgICAgMTM5LCAyMzUsIDgyLCAyMiwgMiwgMTA5LCAxNTYsIDIzNSwgODIsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAzOCwgMjM1LCAKKyAgICA4MiwgMTcsIDE5OSwgODEsIDM4LCAyMzUsIDgyLCAxNywgMTAyLCAzOCwgMjM1LCA4MiwgMTcsIDEwNSwgMzgsIDIzNSwgODIsIAorICAgIDE3LCAxNDcsIDM4LCAyMzUsIDgyLCAxNywgMTQ5LCAzOCwgMjM1LCA4MiwgMTcsIDE2NCwgMzgsIDIzNSwgODIsIDE3LCAKKyAgICAxODcsIDM4LCAyMzUsIDgyLCAxLCA2MiwgMzgsIDIzNSwgODIsIDEsIDE2MSwgMzgsIDIzNSwgODIsIDEsIDE4OCwgMzgsIAorICAgIDIzNSwgODIsIDEsIDIwMiwgMjM0LCAzOCwgMjM1LCA4MiwgMSwgMTcyLCAxOTUsIDEsIDYyLCAxOTUsIDEsIDI1MiwgMTM4LCAKKyAgICAxOTUsIDEsIDcwLCAxOTUsIDEsIDIyOCwgMTUxLCAxOTUsIDEsIDY2LCAxOTUsIDEsIDIwMywgMTgyLCAxOTUsIDEsIDEwOSwgCisgICAgMTQ2LCAxOTUsIDEsIDEwOSwgMjEyLCAyMTYsIDE5NSwgMSwgMTA5LCAxNTYsIDE5NSwgMSwgMTA5LCAyMjQsIDEzOSwgMTk1LCAKKyAgICAxLCA3MiwgMTk1LCAxLCAyNTEsIDE3NiwgMTk1LCAxLCA3NCwgMTk1LCAxLCAyNTAsIDEzOSwgMTk1LCAxLCAxNjEsIDE5NSwgCisgICAgMSwgMjI2LCAyMDcsIDE5NSwgMSwgMjM2LCA4OSwgMTk1LCAxLCAyMzUsIDE5OSwgMTk1LCAxLCAyMTksIDI1MywgMTk1LCAxLCAKKyAgICAyMTksIDIwMiwgMTk1LCAxLCAyNDcsIDE5MCwgMTk1LCAxLCAyNDcsIDM3LCAxOTUsIDEsIDIyNywgMjQ4LCAxOTUsIDEsIAorICAgIDIyNywgMjE1LCAxOTUsIDEsIDIxOCwgNjAsIDE5NSwgMSwgMjE4LCA0MywgMTk1LCAxLCAyMDQsIDI1MywgMTk1LCAxLCAKKyAgICAyMDQsIDI0MSwgMTk1LCAxLCAyNDEsIDIyMCwgMTk1LCAxLCAyNDEsIDIwNCwgMTk1LCAxLCAyMTksIDIxLCAxOTUsIDEsIAorICAgIDIwNywgMzYsIDE5NSwgMSwgMjA2LCAxMjIsIDE5NSwgMSwgMjQyLCA1OCwgMTk1LCAxLCAyNDEsIDEwMCwgMTk1LCAxLCAKKyAgICAxODgsIDE5NSwgMSwgMjE5LCAxNTQsIDE5NSwgMSwgMTcyLCAxOTUsIDEsIDIxNSwgMjQ1LCAxOTUsIDEsIDI0OSwgMTM2LCAKKyAgICAxOTUsIDEsIDI0OCwgMjAwLCAxOTUsIDEsIDE3OCwgMTk1LCAxLCAyMjEsIDIxNCwgMTk1LCAxLCAxODMsIDE5NSwgMSwgCisgICAgMjEzLCAyNTIsIDE5NSwgMSwgMjEzLCA5MywgMTk1LCAxLCAxOTQsIDE5NSwgMSwgMjI0LCAyMjMsIDE5NSwgMSwgMjAxLCAKKyAgICAxMTQsIDE5NSwgMSwgMjEwLCAxMTQsIDE5NSwgMSwgMjA4LCAxNzksIDE5NSwgMSwgMjEyLCA2NCwgMTk1LCAxLCAxNDQsIAorICAgIDE5NSwgMjIsIDIsIDI1MiwgMTM4LCAxOTUsIDIyLCAyLCA3MCwgMTk1LCAyMiwgMiwgMjI4LCAxNTEsIDE5NSwgMjIsIDIsIAorICAgIDY2LCAxOTUsIDIyLCAyLCAyMDMsIDE4MiwgMTk1LCAyMiwgMiwgMTA5LCAxNDYsIDE5NSwgMjIsIDIsIDEwOSwgMjEyLCAKKyAgICAyMTYsIDE5NSwgMjIsIDIsIDEwOSwgMTU2LCAxOTUsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAxOTUsIDIyLCAyLCA3MiwgCisgICAgMTk1LCAyMiwgMiwgMjUxLCAxNzYsIDE5NSwgMjIsIDIsIDc0LCAxOTUsIDIyLCAyLCAyNTAsIDEzOSwgMTk1LCAyLCAyMDIsIAorICAgIDIwOCwgMTk1LCAyLCAyNDcsIDE0OSwgMTk1LCAyLCAyNTEsIDMzLCAxOTUsIDIsIDIwMiwgMjAzLCAxOTUsIDIsIDIxOCwgCisgICAgMTAwLCAxOTUsIDIsIDI1MCwgMTIyLCAxOTUsIDIsIDQ3LCAyNTEsIDMzLCAxOTUsIDIxNywgODYsIDE5NSwgMjA5LCAxNzYsIAorICAgIDE5NSwgMjQyLCAxMCwgMTk1LCA1MywgMjQyLCAxMCwgMTk1LCAyNDYsIDcwLCAxOTUsIDIzNiwgNTMsIDIzNywgOTMsIDE5NSwgCisgICAgMjUyLCAzLCA1NCwgMTk1LCAxNywgMTk5LCA4MSwgMTk1LCAxNywgMTAyLCAxOTUsIDE3LCAxMDUsIDE5NSwgMTcsIDE0NywgCisgICAgMTk1LCAxNywgMTQ5LCAxOTUsIDE3LCAxNjQsIDE5NSwgMTcsIDE4NywgMTk1LCAxNywgMjEwLCAxMzUsIDE5NSwgMTcsIAorICAgIDE5MiwgMTk1LCAxNywgMjE5LCAxMTMsIDE5NSwgMjE1LCAxMzMsIDgxLCAxOTUsIDIyOCwgNzUsIDU0LCAyMDUsIDIxNywgCisgICAgMjUxLCA2MiwgMjA1LCAyMTcsIDEsIDYyLCAyMDUsIDIxNywgMSwgMjUyLCAxMzgsIDIwNSwgMjE3LCAxLCA3MCwgMjA1LCAKKyAgICAyMTcsIDEsIDIyOCwgMTUxLCAyMDUsIDIxNywgMSwgNjYsIDIwNSwgMjE3LCAxLCAyMDMsIDE4MiwgMjA1LCAyMTcsIDEsIAorICAgIDEwOSwgMTQ2LCAyMDUsIDIxNywgMSwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDEsIDEwOSwgMTU2LCAyMDUsIDIxNywgMSwgCisgICAgMTA5LCAyMjQsIDEzOSwgMjA1LCAyMTcsIDEsIDcyLCAyMDUsIDIxNywgMSwgMjUxLCAxNzYsIDIwNSwgMjE3LCAxLCA3NCwgCisgICAgMjA1LCAyMTcsIDEsIDI1MCwgMTM5LCAyMDUsIDIxNywgMSwgMTYxLCAyMDUsIDIxNywgMSwgMjI2LCAyMDcsIDIwNSwgMjE3LCAKKyAgICAxLCAyMzYsIDg5LCAyMDUsIDIxNywgMSwgMjM1LCAxOTksIDIwNSwgMjE3LCAxLCAyMTksIDI1MywgMjA1LCAyMTcsIDEsIAorICAgIDI0NywgMTkwLCAyMDUsIDIxNywgMSwgMjQ3LCAzNywgMjA1LCAyMTcsIDEsIDIyNywgMjQ4LCAyMDUsIDIxNywgMSwgMjI3LCAKKyAgICAyMTUsIDIwNSwgMjE3LCAxLCAyMTgsIDYwLCAyMDUsIDIxNywgMSwgMjA0LCAyNTMsIDIwNSwgMjE3LCAxLCAyMDQsIDI0MSwgCisgICAgMjA1LCAyMTcsIDEsIDI0MSwgMjIwLCAyMDUsIDIxNywgMSwgMjQxLCAyMDQsIDIwNSwgMjE3LCAxLCAyMTksIDIxLCAyMDUsIAorICAgIDIxNywgMSwgMjA3LCAzNiwgMjA1LCAyMTcsIDEsIDIwNiwgMTIyLCAyMDUsIDIxNywgMSwgMjQyLCA1OCwgMjA1LCAyMTcsIAorICAgIDEsIDI0MSwgMTAwLCAyMDUsIDIxNywgMSwgMTg4LCAyMDUsIDIxNywgMSwgMTcyLCAyMDUsIDIxNywgMSwgMjE1LCAyNDUsIAorICAgIDIwNSwgMjE3LCAxLCAyNDksIDEzNiwgMjA1LCAyMTcsIDEsIDI0OCwgMjAwLCAyMDUsIDIxNywgMSwgMTc4LCAyMDUsIDIxNywgCisgICAgMSwgMTgzLCAyMDUsIDIxNywgMSwgMjEzLCAyNTIsIDIwNSwgMjE3LCAxLCAxOTQsIDIwNSwgMjE3LCAxLCAyMDMsIDkwLCAKKyAgICAyMDUsIDIxNywgMSwgMjEwLCAxMTQsIDIwNSwgMjE3LCAxLCAyMDgsIDE3OSwgMjA1LCAyMTcsIDEsIDIxMiwgNjQsIDIwNSwgCisgICAgMjE3LCAxLCAxNDQsIDIwNSwgMjE3LCAyMiwgMiwgMjUyLCAxMzgsIDIwNSwgMjE3LCAyMiwgMiwgNzAsIDIwNSwgMjE3LCAKKyAgICAyMiwgMiwgMjI4LCAxNTEsIDIwNSwgMjE3LCAyMiwgMiwgNjYsIDIwNSwgMjE3LCAyMiwgMiwgMjAzLCAxODIsIDIwNSwgCisgICAgMjE3LCAyMiwgMiwgMTA5LCAxNDYsIDIwNSwgMjE3LCAyMiwgMiwgMTA5LCAyMTIsIDIxNiwgMjA1LCAyMTcsIDIyLCAyLCAKKyAgICAxMDksIDE1NiwgMjA1LCAyMTcsIDIyLCAyLCAxMDksIDIyNCwgMTM5LCAyMDUsIDIxNywgMjIsIDIsIDcyLCAyMDUsIDIxNywgCisgICAgMjIsIDIsIDIwOSwgMjUwLCA3MiwgMjA1LCAyMTcsIDIyLCAyLCAyNTEsIDE3NiwgMjA1LCAyMTcsIDIyLCAyLCA3NCwgMjA1LCAKKyAgICAyMTcsIDIyLCAyLCAyMDksIDI1MCwgNzQsIDIwNSwgMjE3LCAyMiwgMiwgMjUwLCAxMzksIDIwNSwgMjE3LCAyLCAyNDcsIAorICAgIDE0OSwgMjA1LCAyMTcsIDIsIDI1MSwgMzMsIDIwNSwgMjE3LCAyLCAyMDIsIDIwMywgMjA1LCAyMTcsIDIsIDIwMiwgMjA4LCAKKyAgICAyMDUsIDIxNywgMiwgMjE4LCAxMDAsIDIwNSwgMjE3LCAyLCAyNTAsIDEyMiwgMjA1LCAyMTcsIDIzNSwgMTEsIDIwNSwgCisgICAgMjE3LCAyNTIsIDMsIDU0LCAyMDUsIDIxNywgMjE3LCA4NiwgMjA1LCAyMTcsIDE3LCAxOTksIDgxLCAyMDUsIDIxNywgMTcsIAorICAgIDEwMiwgMjA1LCAyMTcsIDE3LCAxMDUsIDIwNSwgMjE3LCAxNywgMTQ3LCAyMDUsIDIxNywgMTcsIDE0OSwgMjA1LCAyMTcsIAorICAgIDE3LCAxNjQsIDIwNSwgMjE3LCAxNywgMTg3LCAyMDUsIDIxNywgMTcsIDIxMCwgMTM1LCAyMDUsIDIxNywgMTcsIDE5MiwgCisgICAgMjA1LCAyMTcsIDE3LCAyMTksIDExMywgMTk2LCAxLCA2MiwgMTk2LCAxLCAyNTIsIDEzOCwgMTk2LCAxLCA3MCwgMTk2LCAxLCAKKyAgICAyMjgsIDE1MSwgMTk2LCAxLCA2NiwgMTk2LCAxLCAyMDMsIDE4MiwgMTk2LCAxLCAxMDksIDE0NiwgMTk2LCAxLCAxMDksIAorICAgIDIxMiwgMjE2LCAxOTYsIDEsIDEwOSwgMTU2LCAxOTYsIDEsIDEwOSwgMjI0LCAxMzksIDE5NiwgMSwgNzIsIDE5NiwgMSwgCisgICAgMjUxLCAxNzYsIDE5NiwgMSwgNzQsIDE5NiwgMSwgMjUwLCAxMzksIDE5NiwgMSwgMTYxLCAxOTYsIDEsIDIyNiwgMjA3LCAKKyAgICAxOTYsIDEsIDIzNiwgODksIDE5NiwgMSwgMjM1LCAxOTksIDE5NiwgMSwgMjE5LCAyNTMsIDE5NiwgMSwgMjQ3LCAxOTAsIAorICAgIDE5NiwgMSwgMjQ3LCAzNywgMTk2LCAxLCAyMjcsIDI0OCwgMTk2LCAxLCAyMjcsIDIxNSwgMTk2LCAxLCAyMTgsIDYwLCAKKyAgICAxOTYsIDEsIDIwNCwgMjUzLCAxOTYsIDEsIDIwNCwgMjQxLCAxOTYsIDEsIDI0MSwgMjIwLCAxOTYsIDEsIDI0MSwgMjA0LCAKKyAgICAxOTYsIDEsIDIxOSwgMjEsIDE5NiwgMSwgMjA3LCAzNiwgMTk2LCAxLCAyMDYsIDEyMiwgMTk2LCAxLCAyNDIsIDU4LCAxOTYsIAorICAgIDEsIDI0MSwgMTAwLCAxOTYsIDEsIDE4OCwgMTk2LCAxLCAxNzIsIDE5NiwgMSwgMjE1LCAyNDUsIDE5NiwgMSwgMjQ5LCAKKyAgICAxMzYsIDE5NiwgMSwgMjQ4LCAyMDAsIDE5NiwgMSwgMTc4LCAxOTYsIDEsIDE4MywgMTk2LCAxLCAyMTMsIDI1MiwgMTk2LCAKKyAgICAxLCAxOTQsIDE5NiwgMSwgMjAzLCA5MCwgMTk2LCAxLCAyMTAsIDExNCwgMTk2LCAxLCAyMDgsIDE3OSwgMTk2LCAxLCAyMTIsIAorICAgIDY0LCAxOTYsIDEsIDE0NCwgMTk2LCAyMiwgMiwgMjUyLCAxMzgsIDE5NiwgMjIsIDIsIDcwLCAxOTYsIDIyLCAyLCAyMjgsIAorICAgIDE1MSwgMTk2LCAyMiwgMiwgNjYsIDE5NiwgMjIsIDIsIDIwMywgMTgyLCAxOTYsIDIyLCAyLCAxMDksIDE0NiwgMTk2LCAyMiwgCisgICAgMiwgMTA5LCAyMTIsIDIxNiwgMTk2LCAyMiwgMiwgNzIsIDE5NiwgMjIsIDIsIDI1MSwgMTc2LCAxOTYsIDIyLCAyLCA3NCwgCisgICAgMTk2LCAyMiwgMiwgMjUwLCAxMzksIDE5NiwgMiwgMjQ3LCAxNDksIDE5NiwgMiwgMjUxLCAzMywgMTk2LCAyLCAyMDIsIAorICAgIDIwMywgMTk2LCAyLCAyMDIsIDIwOCwgMTk2LCAyLCAyMTgsIDEwMCwgMTk2LCAyLCAyMDksIDE3NywgMTk2LCAyNDIsIDEwLCAKKyAgICAxOTYsIDUzLCAyNDIsIDEwLCAxOTYsIDIxMCwgMTU1LCAyNDAsIDE4MiwgMTk2LCAyMTAsIDE1NSwgMTQ4LCAxOTYsIDIxMywgCisgICAgMTMwLCAyMjIsIDE0OSwgMTk2LCAyMTMsIDEzMCwgMjIyLCAxNDgsIDE5NiwgMjEzLCAxMzAsIDIyMiwgMTQ3LCAxOTYsIAorICAgIDIzOCwgMTcxLCA3NiwgMjA2LCAxMjcsIDgxLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMDQsIDk5LCAKKyAgICAyMTcsIDIwLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIwNSwgOTMsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgCisgICAgMjExLCAxOTMsIDEzNCwgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgCisgICAgMywgMjEzLCAxOTUsIDI2LCAyMzksIDE4MCwgNTMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDIxMywgMTk1LCAKKyAgICAyNiwgMjM5LCAxODAsIDIwNSwgODMsIDI0MiwgMjQyLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI2LCAxOTYsIAorICAgIDIxMSwgMTkzLCAxMzQsIDUzLCAyMTMsIDI3LCAzLCAyMTMsIDE5NCwgMTk2LCAyMTEsIDE5MywgMTM0LCAzLCA1MywgMjQyLCAKKyAgICAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjA1LCA4MywgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgCisgICAgMjE0LCA5MCwgMjQyLCAyNDIsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjEwLCAxNTIsIDI0MiwgMjQyLCAxOTYsIDIxMSwgCisgICAgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjEzLCAxOTQsIDE5NiwgMjExLCAxOTMsIDEzNCwgMywgMjQ2LCAxNTMsIDI2LCAKKyAgICAxMjAsIDIzOCwgMTczLCAxOTYsIDIxMSwgMTkzLCAxMzQsIDMsIDI0NiwgMTUzLCAyNiwgMjM2LCAyMjksIDIzOCwgMTczLCAKKyAgICAxOTYsIDEsIDIwNiwgNDYsIDI1MSwgMTA5LCA3MCwgMTk2LCAxLCAyMDQsIDE0MywgMjUxLCAxMDksIDcwLCAxOTYsIDEsIAorICAgIDIwNCwgMTQzLCAyNTEsIDEwOSwgMjI4LCAxNTEsIDE5NiwgMSwgMjUxLCAxMDksIDY2LCAxOTYsIDIyLCAyLCAyNTEsIDEwOSwgCisgICAgNjYsIDE5NiwgMjIsIDIsIDI1MSwgMTA5LCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDYyLCAyMjEsIDEyNywgMSwgMjUyLCAKKyAgICAxMzgsIDIyMSwgMTI3LCAxLCA3MCwgMjIxLCAxMjcsIDEsIDIyOCwgMTUxLCAyMjEsIDEyNywgMSwgNjYsIDIyMSwgMTI3LCAKKyAgICAxLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDEsIDEwOSwgMTQ2LCAyMjEsIDEyNywgMSwgMTA5LCAyMTIsIDIxNiwgMjIxLCAxMjcsIAorICAgIDEsIDEwOSwgMTU2LCAyMjEsIDEyNywgMSwgMTA5LCAyMjQsIDEzOSwgMjIxLCAxMjcsIDEsIDcyLCAyMjEsIDEyNywgMSwgCisgICAgMjUxLCAxNzYsIDIyMSwgMTI3LCAxLCA3NCwgMjIxLCAxMjcsIDEsIDI1MCwgMTM5LCAyMjEsIDEyNywgMSwgMTYxLCAyMjEsIAorICAgIDEyNywgMSwgMjI2LCAyMDcsIDIyMSwgMTI3LCAxLCAyMzYsIDg5LCAyMjEsIDEyNywgMSwgMjM1LCAxOTksIDIyMSwgMTI3LCAKKyAgICAxLCAyMTksIDI1MywgMjIxLCAxMjcsIDEsIDI0NywgMTkwLCAyMjEsIDEyNywgMSwgMjQ3LCAzNywgMjIxLCAxMjcsIDEsIAorICAgIDIyNywgMjQ4LCAyMjEsIDEyNywgMSwgMjI3LCAyMTUsIDIyMSwgMTI3LCAxLCAyMTgsIDYwLCAyMjEsIDEyNywgMSwgMjA0LCAKKyAgICAyNTMsIDIyMSwgMTI3LCAxLCAyMDQsIDI0MSwgMjIxLCAxMjcsIDEsIDI0MSwgMjIwLCAyMjEsIDEyNywgMSwgMjQxLCAyMDQsIAorICAgIDIyMSwgMTI3LCAxLCAyMTksIDIxLCAyMjEsIDEyNywgMSwgMjA3LCAzNiwgMjIxLCAxMjcsIDEsIDIwNiwgMTIyLCAyMjEsIAorICAgIDEyNywgMSwgMjQyLCA1OCwgMjIxLCAxMjcsIDEsIDI0MSwgMTAwLCAyMjEsIDEyNywgMSwgMTg4LCAyMjEsIDEyNywgMSwgCisgICAgMTcyLCAyMjEsIDEyNywgMSwgMjE1LCAyNDUsIDIyMSwgMTI3LCAxLCAyNDksIDEzNiwgMjIxLCAxMjcsIDEsIDI0OCwgMjAwLCAKKyAgICAyMjEsIDEyNywgMSwgMTc4LCAyMjEsIDEyNywgMSwgMTgzLCAyMjEsIDEyNywgMSwgMjEzLCAyNTIsIDIyMSwgMTI3LCAxLCAKKyAgICAxOTQsIDIyMSwgMTI3LCAxLCAyMDMsIDkwLCAyMjEsIDEyNywgMSwgMjEwLCAxMTQsIDIyMSwgMTI3LCAxLCAyMDgsIDE3OSwgCisgICAgMjIxLCAxMjcsIDEsIDIxMiwgNjQsIDIyMSwgMTI3LCAxLCAxNDQsIDIyMSwgMTI3LCAxLCAyMjQsIDEzOCwgMjIxLCAxMjcsIAorICAgIDIyLCAyLCAyNTIsIDEzOCwgMjIxLCAxMjcsIDIyLCAyLCA3MCwgMjIxLCAxMjcsIDIyLCAyLCAyMjgsIDE1MSwgMjIxLCAKKyAgICAxMjcsIDIyLCAyLCA2NiwgMjIxLCAxMjcsIDIyLCAyLCAyMDMsIDE4MiwgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDE0NiwgCisgICAgMjIxLCAxMjcsIDIyLCAyLCAxMDksIDIxMiwgMjE2LCAyMjEsIDEyNywgMjIsIDIsIDEwOSwgMTU2LCAyMjEsIDEyNywgMjIsIAorICAgIDIsIDEwOSwgMjI0LCAxMzksIDIyMSwgMTI3LCAyMiwgMiwgNzIsIDIyMSwgMTI3LCAyMiwgMiwgMjUxLCAxNzYsIDIyMSwgCisgICAgMTI3LCAyMiwgMiwgNzQsIDIyMSwgMTI3LCAyMiwgMiwgMjUwLCAxMzksIDIyMSwgMTI3LCAyLCAyNTEsIDMzLCAyMjEsIAorICAgIDEyNywgMiwgMjAyLCAyMDMsIDIyMSwgMTI3LCAyLCAyMDIsIDIwOCwgMjIxLCAxMjcsIDIsIDI1MCwgMjMxLCAyMjEsIDEyNywgCisgICAgMjQyLCAxMCwgMjIxLCAxMjcsIDUzLCAyNDIsIDEwLCAyMjEsIDEyNywgMjUyLCAzLCA1NCwgMjIxLCAxMjcsIDIsIDIzMywgCisgICAgNzAsIDIyMSwgMTI3LCAxNywgMTk5LCA4MSwgMjIxLCAxMjcsIDE3LCAxMDIsIDIyMSwgMTI3LCAxNywgMTA1LCAyMjEsIAorICAgIDEyNywgMTcsIDE0NywgMjIxLCAxMjcsIDE3LCAxNDksIDIyMSwgMTI3LCAxNywgMTY0LCAyMjEsIDEyNywgMTcsIDE4NywgCisgICAgMjIxLCAxMjcsIDE3LCAyMTAsIDEzNSwgMjIxLCAxMjcsIDE3LCAxOTIsIDIyMSwgMTI3LCAxNywgMjE5LCAxMTMsIDkyLCAKKyAgICAyNDgsIDE2MSwgMywgMjE3LCAyMSwgOTIsIDIxMiwgMjI4LCAyNDgsIDE2MCwgOTIsIDUzLCAyNDgsIDE2MSwgMywgMjE3LCAKKyAgICAyMSwgOTIsIDIwNSwgODMsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgCisgICAgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjEyLCAyMjgsIDI0OCwgMTYxLCAzLCA1MywgMjE3LCAyMSwgCisgICAgOTIsIDIyOCwgNTAsIDI0OCwgMTYwLCA5MiwgMjI4LCA1MCwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCA5MiwgMjA3LCAKKyAgICAxNzIsIDI0OCwgMTYwLCA5MiwgMjA3LCAxNzIsIDI0OCwgMTYxLCAzLCAyMTcsIDIxLCA5MiwgMjA3LCAxNzIsIDI0OCwgCisgICAgMTYxLCAzLCA1MywgMjE3LCAyMSwgOTIsIDIwNCwgMTg1LCAyMDcsIDE3MiwgMjQ4LCAxNjEsIDMsIDUzLCAyMTcsIDIxLCAKKyAgICAyMDYsIDI1MywgMSwgNjIsIDIwNiwgMjUzLCAxLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDEsIDcwLCAyMDYsIDI1MywgMSwgCisgICAgMjI4LCAxNTEsIDIwNiwgMjUzLCAxLCA2NiwgMjA2LCAyNTMsIDEsIDIwMywgMTgyLCAyMDYsIDI1MywgMSwgNzIsIDIwNiwgCisgICAgMjUzLCAxLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDEsIDc0LCAyMDYsIDI1MywgMSwgMjUwLCAxMzksIDIwNiwgMjUzLCAxLCAKKyAgICAxNjEsIDIwNiwgMjUzLCAxLCAyMjYsIDIwNywgMjA2LCAyNTMsIDEsIDIzNiwgODksIDIwNiwgMjUzLCAxLCAyMzUsIDE5OSwgCisgICAgMjA2LCAyNTMsIDEsIDIxOSwgMjUzLCAyMDYsIDI1MywgMSwgMjQ3LCAxOTAsIDIwNiwgMjUzLCAxLCAyNDcsIDM3LCAyMDYsIAorICAgIDI1MywgMSwgMjI3LCAyNDgsIDIwNiwgMjUzLCAxLCAyMjcsIDIxNSwgMjA2LCAyNTMsIDEsIDIxOCwgNjAsIDIwNiwgMjUzLCAKKyAgICAxLCAyMDQsIDI1MywgMjA2LCAyNTMsIDEsIDIwNCwgMjQxLCAyMDYsIDI1MywgMSwgMjQxLCAyMjAsIDIwNiwgMjUzLCAxLCAKKyAgICAyNDEsIDIwNCwgMjA2LCAyNTMsIDEsIDIxOSwgMjEsIDIwNiwgMjUzLCAxLCAyMDcsIDM2LCAyMDYsIDI1MywgMSwgMjA2LCAKKyAgICAxMjIsIDIwNiwgMjUzLCAxLCAyNDIsIDU4LCAyMDYsIDI1MywgMSwgMjQxLCAxMDAsIDIwNiwgMjUzLCAxLCAxODgsIDIwNiwgCisgICAgMjUzLCAxLCAxNzIsIDIwNiwgMjUzLCAxLCAyMTUsIDI0NSwgMjA2LCAyNTMsIDEsIDI0OSwgMTM2LCAyMDYsIDI1MywgMSwgCisgICAgMjQ4LCAyMDAsIDIwNiwgMjUzLCAxLCAxNzgsIDIwNiwgMjUzLCAxLCAxODMsIDIwNiwgMjUzLCAxLCAyMTMsIDI1MiwgMjA2LCAKKyAgICAyNTMsIDEsIDE5NCwgMjA2LCAyNTMsIDEsIDIwMywgOTAsIDIwNiwgMjUzLCAxLCAyMTAsIDExNCwgMjA2LCAyNTMsIDEsIAorICAgIDIxMiwgNjQsIDIwNiwgMjUzLCAxLCAxNDQsIDIwNiwgMjUzLCAxLCAyMTIsIDIxNSwgMjA2LCAyNTMsIDIsIDI1MSwgMzMsIAorICAgIDIwNiwgMjUzLCAyLCAyMDIsIDIwMywgMjA2LCAyNTMsIDIyLCAyLCAyNTIsIDEzOCwgMjA2LCAyNTMsIDIyLCAyLCA3MCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyMjgsIDE1MSwgMjA2LCAyNTMsIDIyLCAyLCA2NiwgMjA2LCAyNTMsIDIyLCAyLCAyMDMsIAorICAgIDE4MiwgMjA2LCAyNTMsIDIyLCAyLCA3MiwgMjA2LCAyNTMsIDIyLCAyLCAyNTEsIDE3NiwgMjA2LCAyNTMsIDIyLCAyLCA3NCwgCisgICAgMjA2LCAyNTMsIDIyLCAyLCAyNTAsIDEzOSwgMjA2LCAyNTMsIDIsIDIwMiwgMjA4LCAyMDYsIDI1MywgMiwgMjE4LCAxMDAsIAorICAgIDIwNiwgMjUzLCAxNywgMTk5LCA4MSwgMjA2LCAyNTMsIDE3LCAxMDIsIDIwNiwgMjUzLCAxNywgMTA1LCAyMDYsIDI1MywgCisgICAgMTcsIDE0NywgMjA2LCAyNTMsIDE3LCAxNDksIDIwNiwgMjUzLCAxNywgMTY0LCAyMDYsIDI1MywgMTcsIDE4NywgMjA2LCAKKyAgICAyNTMsIDE3LCAyMTAsIDEzNSwgMjA2LCAyNTMsIDE3LCAxOTIsIDIwNiwgMjUzLCAxNywgMjE5LCAxMTMsIDI1MSwgMTgwLCAKKyAgICAxLCAxNjEsIDI1MSwgMTgwLCAxLCAyMjYsIDIwNywgMjUxLCAxODAsIDEsIDIxOSwgMjUzLCAyNTEsIDE4MCwgMSwgMTg4LCAKKyAgICAyNTEsIDE4MCwgMSwgMjA3LCAzNiwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMDcsIDM2LCAyNTEsIDE4MCwgMSwgMTcyLCAKKyAgICAyNTEsIDE4MCwgMSwgMjE1LCAyNDUsIDI1MSwgMTgwLCAxLCAyNDksIDEzNiwgMjUxLCAxODAsIDEsIDE3OCwgMjUxLCAxODAsIAorICAgIDEsIDIyNywgMjQ4LCAyNTEsIDE4MCwgMSwgMjQ3LCAzNywgMjUxLCAxODAsIDEsIDIwNiwgMTIyLCAyNTEsIDE4MCwgMSwgCisgICAgMjEzLCAyNTIsIDI1MSwgMTgwLCAxLCAxOTQsIDI1MSwgMTgwLCAxLCAyMTIsIDY0LCAyNTEsIDE4MCwgMSwgMjE4LCA2MCwgCisgICAgMjUxLCAxODAsIDEsIDE0NCwgMjUxLCAxODAsIDEsIDYyLCAyNTEsIDE4MCwgMSwgMjQyLCA1OCwgMjUxLCAxODAsIDEsIAorICAgIDI0MSwgMTAwLCAyNTEsIDE4MCwgMSwgMjM2LCA4OSwgMjUxLCAxODAsIDEsIDI1MSwgMTA5LCAyMzYsIDg5LCAyNTEsIDE4MCwgCisgICAgMSwgMjM1LCAxOTksIDI1MSwgMTgwLCAxLCAyNDgsIDIwMCwgMjUxLCAxODAsIDEsIDIyNywgMjE1LCAyNTEsIDE4MCwgMTExLCAKKyAgICAyLCAxNzksIDE5NCwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMTMsIDI1MiwgMjUxLCAxODAsIDExMSwgMiwgMTc5LCAyMjQsIAorICAgIDE5NywgMjEzLCAyNTIsIDI1MSwgMTgwLCAyMiwgMiwgNjIsIDI1MSwgMTgwLCAyMiwgMiwgMjUyLCAxMzgsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzAsIDI1MSwgMTgwLCAyMiwgMiwgMjI4LCAxNTEsIDI1MSwgMTgwLCAyMiwgMiwgNjYsIDI1MSwgMTgwLCAyMiwgCisgICAgMiwgMjAzLCAxODIsIDI1MSwgMTgwLCAyMiwgMiwgNzIsIDI1MSwgMTgwLCAyMiwgMiwgMjUwLCAxMTcsIDI1MSwgMTgwLCAKKyAgICAyMiwgMiwgNzQsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxNzYsIDI1MSwgMTgwLCAyMiwgMiwgMjUxLCAxMDEsIDI1MSwgCisgICAgMTgwLCAyLCAyMjYsIDE0OSwgMjUxLCAxODAsIDE3LCAxOTksIDgxLCAyNTEsIDE4MCwgMTcsIDEwMiwgMjUxLCAxODAsIDE3LCAKKyAgICAxMDUsIDI1MSwgMTgwLCAxNywgMTQ3LCAyNTEsIDE4MCwgMTcsIDE0OSwgMjUxLCAxODAsIDE3LCAxNjQsIDI1MSwgMTgwLCAKKyAgICAxNywgMTg3LCAyNTEsIDE4MCwgMTcsIDIxMCwgMTM1LCAyNTEsIDE4MCwgMTcsIDE5MiwgMjUxLCAxODAsIDE3LCAyMTksIAorICAgIDExMywgMjUxLCAxODAsIDQxLCAyMDYsIDE2NiwgMjUxLCAxODAsIDQxLCAyMDQsIDE1OSwgMjUxLCAxODAsIDIsIDQsIDIxMSwgCisgICAgMTkyLCAyNTEsIDE4MCwgMiwgMjExLCAxOTIsIDI1MSwgMTgwLCAyLCAyMTIsIDE2NiwgMjUxLCAxODAsIDE2LCAyMDIsIAorICAgIDIzNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxOSwgMjUyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgNjIsIDIwMSwgCisgICAgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDEsIDMxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMTk5LCAyMTEsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAxODMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDI0NSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDIyOCwgMTUxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjAzLCAxODIsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCA3MiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDc0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAKKyAgICA3NiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNiwgODksIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMjYsIDg4LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjM4LCAxNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAxOTksIDE5NSwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIwNCwgMzgsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMzgsIDE2MiwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIxNywgMTI0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjA0LCAyNDgsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCA2LCAxLCAyMTgsIDg2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjQyLCA1OCwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDYsIDEsIDI1MCwgMTU1LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjUxLCAxMDEsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA2LCAxLCAyNDgsIDM2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjE0LCAyMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCAKKyAgICA2LCAxLCAyMzQsIDQzLCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgMjMzLCAxOTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAKKyAgICAxLCAyMzMsIDEyMiwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIDIzNCwgMTY2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNiwgMSwgCisgICAgMjA4LCAxMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA2LCAxLCAyMDksIDE2MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDYsIDEsIAorICAgIDIwMiwgMTk0LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE5LCAyNTIsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCA2MiwgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwMSwgMzEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAxOTksIDIxMSwgMjAxLCAKKyAgICA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE4MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMjQ1LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjI4LCAxNTEsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDMsIDE4MiwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDcyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgNzQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIAorICAgIDc2LCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM2LCA4OSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIyNiwgODgsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzgsIDE0MywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDE5OSwgMTk1LCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjA0LCAzOCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIzOCwgMTYyLCAyMDEsIAorICAgIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjE3LCAxMjQsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMDQsIDI0OCwgMjAxLCA5NCwgCisgICAgMjQ2LCAxNDIsIDQsIDEsIDIxOCwgODYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNDIsIDU4LCAyMDEsIDk0LCAyNDYsIAorICAgIDE0MiwgNCwgMSwgMjUwLCAxNTUsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyNTEsIDEwMSwgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDQsIDEsIDI0OCwgMzYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMTQsIDIyNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIAorICAgIDQsIDEsIDIzNCwgNDMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAyMzMsIDE5NSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIAorICAgIDEsIDIzMywgMTIyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgMjM0LCAxNjYsIDIwMSwgOTQsIDI0NiwgMTQyLCA0LCAxLCAKKyAgICAyMDgsIDEzMSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQsIDEsIDIwOSwgMTYxLCAyMDEsIDk0LCAyNDYsIDE0MiwgNCwgMSwgCisgICAgMjAyLCAxOTQsIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTk5LCA4MSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxMDIsIAorICAgIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTA1LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE0NywgMjAxLCA5NCwgMjQ2LCAKKyAgICAxNDIsIDE3LCAxNDksIDIwMSwgOTQsIDI0NiwgMTQyLCAxNywgMTY0LCAyMDEsIDk0LCAyNDYsIDE0MiwgMTcsIDE4NywgCisgICAgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAyMTAsIDEzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDE3LCAxOTIsIDIwMSwgOTQsIAorICAgIDI0NiwgMTQyLCAxNywgMjE5LCAxMTMsIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCAxNjYsIDIwMSwgOTQsIDI0NiwgCisgICAgMTQyLCA0MSwgMjA0LCAxNTksIDIwMSwgOTQsIDI0NiwgMTQyLCA0MSwgMjA2LCA2NywgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAKKyAgICAyMzYsIDIzNSwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMzcsIDEwNCwgMjAxLCA5NCwgMjQ2LCAxNDIsIDQxLCAyMDksIAorICAgIDkyLCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxMCwgMTI5LCAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIzOCwgMjIyLCAKKyAgICAyMDEsIDk0LCAyNDYsIDE0MiwgNDEsIDIxOSwgMTA4LCAyMDEsIDk0LCAyNDYsIDE0MiwgMjE3LCA4NiwgMjE2LCA4OCwgCisgICAgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMTYxLCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE5NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxNzgsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQyLCA1OCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAxOTksIDExNCwgCisgICAgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDMsIDkwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIAorICAgIDIxOSwgMjUzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDE0NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAyMzYsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIyNiwgMjA3LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDEsIDIxMiwgNjQsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ5LCAxMzYsIDIxNiwgCisgICAgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAxOTAsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjA3LCAKKyAgICAzNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDYsIDEyMiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgCisgICAgMTUxLCAxLCAxODgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjE1LCAyNDUsIDIxNiwgODgsIDI0NiwgMTYwLCAKKyAgICAyMzQsIDE1MSwgMSwgMjEzLCAyNTIsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjM3LCAxOTUsIDIxNiwgODgsIAorICAgIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgMjQ3LCAzNywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2MiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MiwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3MCwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA2NiwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCAyMDQsIDQ2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDIzMiwgCisgICAgMjQwLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMTYsIDIyNiwgMjE2LCA4OCwgMjQ2LCAxNjAsIAorICAgIDIzNCwgMTUxLCAxLCA0NywgMjI3LCAxMTgsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwNywgODMsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIyMywgMjQzLCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAKKyAgICAxNTEsIDEsIDQ3LCAyMjAsIDIxNCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgMTU2LCAyMTYsIDg4LCAKKyAgICAyNDYsIDE2MCwgMjM0LCAxNTEsIDEsIDQ3LCAyMDEsIDE0NywgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAxLCA0NywgCisgICAgMjE5LCAyNTUsIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMSwgNDcsIDIwMCwgMTIzLCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjI0LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTMsIAorICAgIDE5LCAyMDUsIDE3NCwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIDksIDIzNSwgMTIzLCAyMDgsIDc2LCAKKyAgICAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIAorICAgIDE2MCwgMjM0LCAxNTEsIDIxMywgMTksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMTIsIAorICAgIDksIDIzNSwgMTIzLCAyMDgsIDc3LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMTUwLCAKKyAgICAyMjQsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIxMiwgOSwgMjA1LCAxNzQsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjEyLCA5LCAxNTAsIDE2OCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAKKyAgICAyMTIsIDksIDE1MCwgMjM3LCA4OSwgMjE2LCA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMjEsIDIwNSwgMjA1LCAxNzQsIAorICAgIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjM1LCAxMjMsIDIwOCwgNzcsIDIwMywgNzIsIDIxNiwgODgsIDI0NiwgCisgICAgMTYwLCAyMzQsIDE1MSwgMjIxLCAyMDUsIDE1MCwgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIAorICAgIDIyMSwgMjA1LCAxNTAsIDIzNywgODksIDIxNiwgODgsIDI0NiwgMTYwLCAyMzQsIDE1MSwgMjI0LCA1NywgMTUwLCAyMjQsIAorICAgIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDIwNSwgMTc0LCAyMTYsIDg4LCAyNDYsIDE2MCwgCisgICAgMjM0LCAxNTEsIDIzNSwgMTIzLCAyMDgsIDc2LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgCisgICAgMTY4LCAyMzcsIDg5LCAyMTYsIDg4LCAyNDYsIDE2MCwgMjM0LCAxNTEsIDIyNCwgNTcsIDE1MCwgMjM3LCA4OSwgMjE2LCAKKyAgICA4OCwgMjQ2LCAxNjAsIDIzNCwgMTUxLCAyMzUsIDEyMywgMjA4LCA3NywgMjM3LCA4OSwgMTc0LCAxLCA2MiwgMTc0LCAxLCAKKyAgICAyNTIsIDEzOCwgMTc0LCAxLCA3MCwgMTc0LCAxLCAyMjgsIDE1MSwgMTc0LCAxLCA2NiwgMTc0LCAxLCAyMDMsIDE4MiwgCisgICAgMTc0LCAxLCAxMDksIDE0NiwgMTc0LCAxLCAxMDksIDIxMiwgMjE2LCAxNzQsIDEsIDEwOSwgMTU2LCAxNzQsIDEsIDcyLCAKKyAgICAxNzQsIDEsIDI1MSwgMTc2LCAxNzQsIDEsIDc0LCAxNzQsIDEsIDI1MCwgMTM5LCAxNzQsIDEsIDE2MSwgMTc0LCAxLCAyMjYsIAorICAgIDIwNywgMTc0LCAxLCAyMzYsIDg5LCAxNzQsIDEsIDIzNSwgMTk5LCAxNzQsIDEsIDIxOSwgMjUzLCAxNzQsIDEsIDI0NywgCisgICAgMTkwLCAxNzQsIDEsIDI0NywgMzcsIDE3NCwgMSwgMjI3LCAyNDgsIDE3NCwgMSwgMjI3LCAyMTUsIDE3NCwgMSwgMjE4LCAKKyAgICA2MCwgMTc0LCAxLCAyMDQsIDI1MywgMTc0LCAxLCAyMDQsIDI0MSwgMTc0LCAxLCAyNDEsIDIyMCwgMTc0LCAxLCAyNDEsIAorICAgIDIwNCwgMTc0LCAxLCAyMTksIDIxLCAxNzQsIDEsIDIwNywgMzYsIDE3NCwgMSwgMjA2LCAxMjIsIDE3NCwgMSwgMjQyLCA1OCwgCisgICAgMTc0LCAxLCAyNDEsIDEwMCwgMTc0LCAxLCAxODgsIDE3NCwgMSwgMTcyLCAxNzQsIDEsIDIxNSwgMjQ1LCAxNzQsIDEsIAorICAgIDI0OSwgMTM2LCAxNzQsIDEsIDI0OCwgMjAwLCAxNzQsIDEsIDE3OCwgMTc0LCAxLCAxODMsIDE3NCwgMSwgMjEzLCAyNTIsIAorICAgIDE3NCwgMSwgMTk0LCAxNzQsIDEsIDIwMywgOTAsIDE3NCwgMSwgMjEwLCAxMTQsIDE3NCwgMSwgMjA4LCAxNzksIDE3NCwgMSwgCisgICAgMjEyLCA2NCwgMTc0LCAxLCAxNDQsIDE3NCwgMjIsIDIsIDI1MiwgMTM4LCAxNzQsIDIyLCAyLCA3MCwgMTc0LCAyMiwgMiwgCisgICAgMjI4LCAxNTEsIDE3NCwgMjIsIDIsIDY2LCAxNzQsIDIyLCAyLCAyMDMsIDE4MiwgMTc0LCAyMiwgMiwgMTA5LCAxNDYsIAorICAgIDE3NCwgMjIsIDIsIDEwOSwgMjEyLCAyMTYsIDE3NCwgMjIsIDIsIDEwOSwgMTU2LCAxNzQsIDIyLCAyLCA3MiwgMTc0LCAyMiwgCisgICAgMiwgMjUxLCAxNzYsIDE3NCwgMjIsIDIsIDc0LCAxNzQsIDIyLCAyLCAyNTAsIDEzOSwgMTc0LCAyLCAyNDcsIDE0OSwgMTc0LCAKKyAgICAyLCAyNTEsIDMzLCAxNzQsIDIsIDIwMiwgMjAzLCAxNzQsIDIsIDIwMiwgMjA4LCAxNzQsIDIsIDI1MCwgMTIyLCAxNzQsIAorICAgIDI0MiwgMTAsIDE3NCwgNTMsIDI0MiwgMTAsIDE3NCwgMjAwLCAyMzgsIDIxMCwgMTU0LCAxNzQsIDIzNiwgNTMsIDIzNywgCisgICAgOTIsIDE3NCwgMjM2LCA1MywgMjM3LCA5MSwgMTc0LCAxNywgMTk5LCA4MSwgMTc0LCAxNywgMTAyLCAxNzQsIDE3LCAxMDUsIAorICAgIDE3NCwgMTcsIDE0NywgMTc0LCAxNywgMTQ5LCAxNzQsIDE3LCAxNjQsIDE3NCwgMTcsIDE4NywgMTc0LCAxNywgMjEwLCAKKyAgICAxMzUsIDE3NCwgMTcsIDE5MiwgMTc0LCAxNywgMjE5LCAxMTMsIDE3NCwgNDEsIDEwMiwgMTc0LCA0MSwgMTA1LCAxNzQsIAorICAgIDQxLCAxNDcsIDE3NCwgNDEsIDE0OSwgMTc0LCA0MSwgMTY0LCAxNzQsIDQxLCAxODcsIDE3NCwgNDEsIDIxMCwgMTM1LCAKKyAgICAxNzQsIDQxLCAxOTIsIDE3NCwgNDEsIDIxOSwgMTEzLCAxNzQsIDQxLCAyMDYsIDE2NiwgMTc0LCA0MSwgMjA0LCAxNTksIAorICAgIDE3NCwgNDEsIDIwNiwgNjcsIDE3NCwgNDEsIDIzNiwgMjM1LCAxNzQsIDQxLCAyMzcsIDEwNCwgMTc0LCA0MSwgMjA5LCA5MiwgCisgICAgMTc0LCA0MSwgMjEwLCAxMjksIDE3NCwgNDEsIDIzOCwgMjIyLCAxNzQsIDQxLCAyMTksIDEwOCwgMTc0LCAyMzMsIDgxLCAKKyAgICAyMDMsIDI0MCwgODEsIDIyMiwgMTUxLCAyMzQsIDEzNywgODEsIDIyMiwgMTUxLCAxMzQsIDIxMCwgMTA2LCAyMjIsIDE1MSwgCisgICAgMSwgMTYxLCAyMjIsIDE1MSwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAxLCAyMzYsIDg5LCAyMjIsIDE1MSwgMSwgMjE5LCAKKyAgICAyNTMsIDIyMiwgMTUxLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAxLCAyMjcsIDI0OCwgCisgICAgMjIyLCAxNTEsIDEsIDIxOCwgNjAsIDIyMiwgMTUxLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMSwgMjA2LCAxMjIsIDIyMiwgCisgICAgMTUxLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMSwgMTg4LCAyMjIsIDE1MSwgMSwgMTcyLCAyMjIsIDE1MSwgMSwgMjE1LCAKKyAgICAyNDUsIDIyMiwgMTUxLCAxLCAyNDksIDEzNiwgMjIyLCAxNTEsIDEsIDE3OCwgMjIyLCAxNTEsIDEsIDIwNSwgMzIsIDIyMiwgCisgICAgMTUxLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDEsIDIwMSwgMTE0LCAyMjIsIDE1MSwgCisgICAgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDEsIDE5OSwgMTE0LCAyMjIsIDE1MSwgMSwgMjU1LCAxNDIsIDIyMiwgMTUxLCAxLCAKKyAgICAxODMsIDIyMiwgMTUxLCAxLCAyMTMsIDI1MiwgMjIyLCAxNTEsIDEsIDE5NCwgMjIyLCAxNTEsIDEsIDIxMCwgMTE0LCAyMjIsIAorICAgIDE1MSwgMSwgMjEyLCA2NCwgMjIyLCAxNTEsIDEsIDE0NCwgMjIyLCAxNTEsIDEsIDYyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgCisgICAgMTYxLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjI2LCAyMDcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMzYsIDg5LCAyMjIsIAorICAgIDE1MSwgMjA4LCAxMiwgMSwgMjE5LCAyNTMsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDcsIDE5MCwgMjIyLCAxNTEsIDIwOCwgCisgICAgMTIsIDEsIDI0NywgMzcsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMjcsIDI0OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIxOCwgNjAsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMDcsIDM2LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjA2LCAxMjIsIAorICAgIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDIsIDU4LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTg4LCAyMjIsIDE1MSwgMjA4LCAKKyAgICAxMiwgMSwgMTcyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjE1LCAyNDUsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyNDksIAorICAgIDEzNiwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE3OCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIwNSwgMzIsIDIyMiwgMTUxLCAKKyAgICAyMDgsIDEyLCAxLCAyMDUsIDIyLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjM5LCA5MywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIAorICAgIDIwMSwgMTE0LCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTk5LCA3NywgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDE5OSwgMTE0LCAKKyAgICAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMTgzLCAyMjIsIDE1MSwgMjA4LCAxMiwgMSwgMjEzLCAyNTIsIDIyMiwgMTUxLCAyMDgsIAorICAgIDEyLCAxLCAxOTQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAyMTAsIDExNCwgMjIyLCAxNTEsIDIwOCwgMTIsIDEsIDIxMiwgCisgICAgNjQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCAxNDQsIDIyMiwgMTUxLCAyMDgsIDEyLCAxLCA2MiwgMjIyLCAxNTEsIDIyLCAyLCAKKyAgICAyNTIsIDEzOCwgMjIyLCAxNTEsIDIyLCAyLCA3MCwgMjIyLCAxNTEsIDIyLCAyLCA2NiwgMjIyLCAxNTEsIDIyLCAyLCA3MiwgCisgICAgMjIyLCAxNTEsIDIyLCAyLCA3NCwgMjIyLCAxNTEsIDIsIDI1MSwgMzMsIDIyMiwgMTUxLCAyLCAyNDcsIDE0OSwgMTAsIDIsIAorICAgIDYyLCAxMCwgMiwgMzUsIDI0LCA2MiwgMTAsIDIsIDM1LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAzNSwgMjQsIDIzNiwgNTgsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMzUsIDI0LCAxNDQsIDEwLCAyLCAzNSwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMzUsIDI0LCAKKyAgICAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDM1LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAzNSwgMjQsIDIxMiwgNTAsIDEwLCAKKyAgICAyLCAyNTQsIDE0NywgMTAsIDIsIDI1MiwgODksIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyNTIsIAorICAgIDkwLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjM2LCA3MSwgMTAsIDIsIDI1MiwgOTAsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxNDQsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI4LCAxMjcsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjI1LCAxNTcsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjEwLCA0OSwgMTAsIDIsIDI1MiwgOTAsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgCisgICAgMTAsIDIsIDI1MiwgOTAsIDIzNSwgMjgsIDEwLCAyLCAyNTIsIDYsIDEwLCAyLCAyNTIsIDcsIDI0LCAyNDksIDk4LCAxMCwgCisgICAgMiwgMjUyLCA3LCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDcsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyNTIsIDcsIDI0LCAyMTAsIDExMiwgMTAsIDIsIDI1MiwgNywgMjQsIDIwNywgMCwgMTAsIDIsIDI1MSwgCisgICAgMjM1LCAxMCwgMiwgMjUxLCAxNTksIDEwLCAyLCAyNTEsIDE2MCwgMjQsIDIzOCwgMTA5LCAxMCwgMiwgMjUxLCAxNjAsIDI0LCAKKyAgICAyMTAsIDExLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAyNTEsIDE1MSwgMTAsIDIsIDI1MSwgMTUyLCAyNCwgMjUxLCAxNTEsIAorICAgIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDI0MSwgMjksIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjUxLCAKKyAgICAxNTIsIDI0LCAxNDQsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNywgOTEsIDEwLCAyLCAyNTEsIDE1MiwgMjQsIDIyNiwgCisgICAgMTYzLCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjUxLCAxNTIsIDI0LCAyMDMsIDE5MCwgMTAsIDIsIAorICAgIDI1MSwgMTQ4LCAxMCwgMiwgMjUxLCAxNDAsIDEwLCAyLCAyNTEsIDk3LCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIxMCwgNjUsIAorICAgIDEwLCAyLCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTE5LCAyNTEsIDg1LCAxMCwgMiwgMjUxLCA4NiwgMTI2LCAyMDUsIAorICAgIDIzMiwgMTAsIDIsIDI1MSwgODYsIDkzLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjUxLCA4NiwgOTMsIDIyMCwgMTQ3LCAxMCwgMiwgCisgICAgMjUxLCA4NiwgOTMsIDIyMCwgMTQ4LCAyMDgsIDE5MiwgMTAsIDIsIDI1MSwgNTMsIDEwLCAyLCAyNTEsIDIzLCAxMCwgMiwgCisgICAgMjUwLCAyNDYsIDEwLCAyLCAyNTAsIDI0NywgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjUwLCAyMTgsIDEwLCAyLCAyNTAsIAorICAgIDE4NiwgMTAsIDIsIDI1MCwgMTgxLCAxMCwgMiwgMjUwLCAxODIsIDE5OSwgMzIsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAKKyAgICAxODIsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDIwNCwgMjEwLCAxMTksIAorICAgIDIwNCwgMjEwLCAyMDQsIDIxMCwgMTE5LCAyMDQsIDIxMCwgMjE2LCAxMzUsIDEwLCAyLCAyNTAsIDE4MiwgMTE5LCAyNTAsIAorICAgIDE4MiwgMTE5LCAyNTAsIDE4MSwgMTAsIDIsIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAxMTksIDI1MCwgMTgyLCAyNDIsIAorICAgIDIyOCwgMjUwLCAxODIsIDExOSwgMjUwLCAxODIsIDExOSwgMjUwLCAxODEsIDEwLCAyLCAyNTAsIDE3OSwgMTAsIDIsIDI1MCwgCisgICAgMTc1LCAxMCwgMiwgMjQ5LCAxMzYsIDEwLCAyLCAyNDksIDExOCwgMTAsIDIsIDI0OSwgMTEyLCAxMCwgMiwgMjQ5LCAxMDUsIAorICAgIDEwLCAyLCAyNDksIDk5LCAxMCwgMiwgMjQ5LCAxMDAsIDExOSwgMjQ5LCA5OSwgMTAsIDIsIDI0OSwgOTgsIDEwLCAyLCAKKyAgICAxNDgsIDEwLCAyLCAyNDksIDc2LCAxMCwgMiwgMjQ4LCAxODgsIDEwLCAyLCAyNDgsIDE4OSwgMjQsIDYyLCAxMCwgMiwgCisgICAgMjQ4LCAxODksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjQ4LCAxODksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDI0OCwgMzYsIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgMzcsIDI1MiwgODksIDEwLCAyLCAyNDgsIDM3LCAxMTksIDI0OCwgCisgICAgMzcsIDIwNCwgNSwgMTAsIDIsIDI0OCwgMzcsIDI0MiwgMjI4LCAyNDgsIDM2LCAxMCwgMiwgMjQ4LCAxNCwgMTAsIDIsIAorICAgIDI0OCwgMTUsIDExOSwgMjQ4LCAxNCwgMTAsIDIsIDI0OCwgMywgMTAsIDIsIDI0OCwgMiwgMTAsIDIsIDI0MiwgNTgsIDEwLCAKKyAgICAyLCAyNDIsIDQ4LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAzNSwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCAKKyAgICA0OSwgMjI2LCAxMzIsIDI0LCAyNTEsIDk3LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDksIDk4LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA4OSwgCisgICAgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM2LCA5MCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjM1LCAxNDMsIDEwLCAyLCAyNDIsIAorICAgIDQ5LCAyMjYsIDEzMiwgMjQsIDIzNSwgMzksIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDE0NCwgMTAsIDIsIDI0MiwgCisgICAgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNSwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI4LCAzNiwgOTMsIAorICAgIDIyNCwgNDIsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIyNywgNzYsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgCisgICAgMjQsIDE5NCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAKKyAgICAyNCwgMjI0LCA0MywgOTMsIDIyMiwgMTM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjQsIDI1LCAxMCwgMiwgCisgICAgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMTYsIDEzNiwgCisgICAgOTMsIDIxNiwgMTM1LCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDksIDE4MiwgMTAsIDIsIDI0MiwgNDksIAorICAgIDIyNiwgMTMyLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjI2LCAxMzIsIDI0LCAyMDQsIDQ4LCA5MywgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyNDIsIDQ5LCAyMjYsIDEzMiwgMjQsIDIwMywgMTkwLCAxMCwgMiwgMjQyLCAyMCwgMTAsIDIsIDI0MSwgCisgICAgMjU0LCAxMCwgMiwgMjQxLCAyNTMsIDEwLCAyLCAyNDEsIDI1MiwgMTAsIDIsIDI0MSwgNzYsIDEwLCAyLCAyNDEsIDU4LCAKKyAgICAxMCwgMiwgMjQxLCAzMSwgMTAsIDIsIDI0MSwgMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjQxLCAyOSwgMTAsIDIsIDI0MSwgCisgICAgMTksIDEwLCAyLCAyNDEsIDIwLCAyMjcsIDM5LCAxMDgsIDIzNSwgMjksIDI0MCwgMjU1LCAxMCwgMiwgMjQwLCAyNTUsIDEwLCAKKyAgICAyLCAyMzksIDEzNywgMTAsIDIsIDIzOSwgMTM4LCAxMTksIDIzOSwgMTM3LCAxMCwgMiwgMjM5LCAxMzgsIDIzNSwgMjgsIAorICAgIDEwLCAyLCAyMzksIDEzOCwgMjEwLCA0NiwgMTAsIDIsIDIzOSwgMTM1LCAxMCwgMiwgMjM5LCAxMzYsIDI0LCAyMzgsIDkxLCAKKyAgICAxMCwgMiwgMjM5LCAxMzQsIDEwLCAyLCAyMzksIDEzMSwgMTAsIDIsIDIzOSwgMTMwLCAxMCwgMiwgMjM5LCAxMjksIDEwLCAKKyAgICAyLCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTIzLCAxMCwgMiwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzksIDEyNCwgCisgICAgMjM1LCAyOSwgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTIyLCAxMCwgMiwgMjM5LCAxMTUsIDEwLCAyLCA3MiwgMTAsIDIsIAorICAgIDE5NywgMjQsIDIxNiwgMTM1LCAxMCwgMiwgMTk3LCAxMTksIDE5NywgMjE4LCA5MCwgMTE5LCAyMTgsIDg5LCAxMCwgMiwgCisgICAgMjM5LCAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAzNSwgOTMsIDIzNCwgMjM2LCA5MywgMjQyLCA1OCwgMTAsIDIsIDIzOSwgCisgICAgMjksIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIyMSwgMjExLCAxMCwgMiwgMjM5LCAyOSwgMjQsIDIxMiwgCisgICAgMzUsIDEwLCAyLCAyMzksIDI5LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzOSwgMjksIDI0LCA2NiwgMTAsIDIsIDIzOSwgMSwgCisgICAgMTAsIDIsIDIzOCwgMjQ1LCAxMCwgMiwgMjM4LCAyMDksIDEwLCAyLCAyMzgsIDE3OSwgMTAsIDIsIDIzOCwgMTgwLCAyNCwgCisgICAgMjM2LCA1NywgMTAsIDIsIDIzOCwgMTgwLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMzgsIDE4MCwgMjQsIAorICAgIDIyMiwgNzYsIDEwLCAyLCAyMzgsIDE4MCwgMjQyLCAyMjgsIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIxNywgNDAsIAorICAgIDIzOCwgMTc5LCAxMCwgMiwgMjM4LCAxODAsIDIwOCwgMTkyLCAxMCwgMiwgMjM4LCAxMTIsIDEwLCAyLCAyMzgsIDEwOSwgCisgICAgMTAsIDIsIDIzOCwgOTEsIDEwLCAyLCAyMzgsIDEwLCAxMCwgMiwgMjM4LCAxMSwgMjQsIDYyLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjQsIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIzOCwgMTEsIDI0LCAzNSwgOTMsIDIyNSwgOTQsIDI0LCAyMjUsIDkzLCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjM5LCAxMjQsIDIzNSwgMjksIDIzNSwgCisgICAgMjgsIDEwLCAyLCAyMzgsIDExLCAyNCwgMTQ0LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNCwgMjM2LCAyMzUsIDI4LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzgsIDExLCAyNCwgMjI3LCAzOSwgMjA4LCAxOTIsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI2LCAxMywgMTAsIDIsIDIzOCwgCisgICAgMTEsIDI0LCAxOTQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAKKyAgICAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjI0LCA0MiwgMTAsIDIsIDIzOCwgMTEsIDI0LCAyMDQsIDQ3LCAKKyAgICAxMCwgMiwgMjM4LCAxMSwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg5LCAxMCwgMiwgMjM2LCA5MCwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIzNiwgODcsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMzUsIDkzLCAyNDIsIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDM1LCA5MywgMTQ0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjUyLCA3LCAyMDYsIDE1NiwgOTMsIDIwNywgMjQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTAsIDE4MCwgOTMsIDIzNiwgNzEsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjQ5LCA3NywgOTMsIDIxMywgMjUyLCAxMCwgMiwgCisgICAgMjM2LCA4OCwgMjQsIDI0OCwgMywgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDgsIDQsIDkzLCAyMTMsIDI1MiwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDIsIDU4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjQxLCAzMiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgCisgICAgMjM4LCAyMDksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAyMTAsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAKKyAgICAxNzksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM4LCAxODAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIAorICAgIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIzNSwgMTYxLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTU5LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNSwgMTYwLCA5MywgCisgICAgNjIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM1LCAxNDQsIDkzLCAyMDgsIDI0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNCwgCisgICAgMjM2LCA5MywgMjI0LCA0MywgOTMsIDIzOCwgOTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzYsIAorICAgIDg4LCAyNCwgMjM0LCAyMTcsIDkzLCAxOTQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM0LCA3NiwgOTMsIDIyNCwgMjEwLCAxMCwgCisgICAgMiwgMjM2LCA4OCwgMjQsIDIzMywgOTIsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI4LCAyMSwgOTMsIDIzMywgOTgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjcsIAorICAgIDc2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjI2LCAxNTcsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI2LCAxNTgsIDkzLCAyMjUsIDkzLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyNiwgMTQsIDkzLCAyNTEsIAorICAgIDg1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDE5NCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIAorICAgIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjIxLCAyMTEsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNiwgCisgICAgODgsIDI0LCAyMTgsIDkwLCAxMTksIDIxOCwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMTcyLCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIxMiwgMzUsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjEyLCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgNjUsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjEwLCA2NiwgOTMsIDIwNCwgMTkyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIxMCwgMzEsIDEwLCAKKyAgICAyLCAyMzYsIDg4LCAyNCwgMjA3LCAyMzQsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDY2LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjA0LCAzNywgOTMsIDIzOSwgCisgICAgMTM3LCAxMCwgMiwgMjM2LCA4OCwgMTE5LCAyMzYsIDg3LCAxMCwgMiwgMjM2LCA4MiwgMTAsIDIsIDIzNiwgODMsIDI0MiwgCisgICAgMjI4LCAyMzYsIDgyLCAxMCwgMiwgMjM2LCA4MCwgMTAsIDIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAKKyAgICAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MSwgMTAsIDIsIDIzNiwgNzIsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgCisgICAgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA3MCwgMTAsIDIsIDIzNiwgNjgsIDEwLCAyLCAyMzYsIDU5LCAxMCwgMiwgMjM2LCAKKyAgICA1NywgMTAsIDIsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM2LCA1OCwgMTE5LCAyMzYsIDU3LCAxMCwgMiwgMjM2LCAKKyAgICA1OCwgMjQyLCAyMjgsIDIzNiwgNTcsIDEwLCAyLCAyMzYsIDQ5LCAxMCwgMiwgMjM2LCA0OCwgMTAsIDIsIDIzNiwgNDMsIAorICAgIDEwLCAyLCAyMzUsIDI0MiwgMTAsIDIsIDIzNSwgMjQzLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAyMzUsIDE2MSwgMTAsIDIsIAorICAgIDIzNSwgMTYyLCAyNCwgNzIsIDEwLCAyLCAyMzUsIDE2MiwgMjQsIDY2LCAxMCwgMiwgMjM1LCAxNjIsIDI0MiwgMjI4LCAKKyAgICAyMzUsIDE2MSwgMTAsIDIsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNjAsIDExOSwgMjM1LCAxNTksIDEwLCAyLCAyMzUsIAorICAgIDE2MCwgMjQyLCAyMjgsIDIzNSwgMTU5LCAxMCwgMiwgMjM1LCAxNTYsIDEwLCAyLCAyMzUsIDE0MywgMTAsIDIsIDIzNSwgCisgICAgMTQ0LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAxNDEsIDEwLCAyLCAyMzUsIDE0MiwgMjQsIDM1LCA5MywgMjI4LCAxNTMsIDEwLCAKKyAgICAyLCAyMzUsIDE0MiwgMjQsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAyMjgsIDE1MywgMTAsIDIsIAorICAgIDIzNSwgMTQyLCAyNCwgMjI0LCA0MywgOTMsIDIyOCwgMTUzLCAxMCwgMiwgMjM1LCAxNDIsIDI0LCAxNzIsIDEwLCAyLCAKKyAgICAyMzUsIDEzNywgMTAsIDIsIDIzNSwgMTM1LCAxMCwgMiwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIAorICAgIDIzNSwgMTM2LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIDIsIDIzNSwgMTM2LCAKKyAgICAyMDYsIDE1NSwgMTAsIDIsIDIzNSwgNTAsIDEwLCAyLCAyMzUsIDUxLCAyNDIsIDIyOCwgMjM1LCA1MCwgMTAsIDIsIDIzNSwgCisgICAgNDgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMjcsIDc3LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzUsIDQ5LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIzNSwgNDksIDI0LCAyMTIsIDM2LCAKKyAgICA5MywgMjA0LCAyMDksIDEwLCAyLCAyMzUsIDQ5LCAyMzUsIDI4LCAxMCwgMiwgMjM1LCAzOSwgMTAsIDIsIDIzNSwgNDAsIAorICAgIDI0LCAzNSwgOTMsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM1LCA0MCwgMTE5LCAKKyAgICAyMzUsIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjM1LCAzMiwgMTAsIDIsIDIzNSwgMzAsIDEwLCAyLCAyMzUsIDMxLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNSwgMjIsIDEwLCAyLCAyMzUsIDIxLCAxMCwgMiwgMjM1LCAxNywgMTAsIDIsIDIzNSwgMTYsIAorICAgIDEwLCAyLCAxNDQsIDEwLCAyLCAyMzQsIDIzNiwgMjA2LCAxNTUsIDEwLCAyLCAyMzQsIDIzNiwgMjM1LCAyOCwgMTAsIDIsIAorICAgIDIzNCwgMjE2LCAxMCwgMiwgMjM0LCA3NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzNCwgNzYsIAorICAgIDI0LCAyNTAsIDE3OSwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNDAsIDI1NSwgCisgICAgMTAsIDIsIDIzNCwgNzYsIDI0LCAyMzYsIDgwLCAxMCwgMiwgMjM0LCA3NiwgMjQsIDIyNiwgMTQ3LCAxMCwgMiwgMjM0LCAKKyAgICA3NiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMzQsIDc2LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIzNCwgNzYsIDI0LCA2NiwgMTAsIAorICAgIDIsIDIzMywgOTcsIDEwLCAyLCAyMzMsIDkyLCAxMCwgMiwgMjMzLCA5MywgMjQsIDI1MSwgODUsIDEwLCAyLCAyMzMsIDkzLCAKKyAgICAyNCwgMjM0LCAyMTYsIDEwLCAyLCAyMzMsIDkzLCAyNCwgMjI3LCAzOCwgMTAsIDIsIDIzMywgOTMsIDI0LCAyMjQsIDE1NCwgCisgICAgMTAsIDIsIDIzMywgOTMsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjMzLCA4OCwgMTAsIDIsIDcwLCAxMCwgMiwgMjMzLCAxOSwgCisgICAgNjIsIDEwLCAyLCAyMzIsIDIzNSwgMTAsIDIsIDIyOCwgMTgxLCAxMCwgMiwgMjI4LCAxODIsIDExOSwgMjI4LCAxODIsIAorICAgIDI0OCwgMywgMTAsIDIsIDIyOCwgMTgyLCAxMTksIDIyOCwgMTgyLCAyMDgsIDE5MiwgMTAsIDIsIDIyOCwgMTU2LCAxMCwgMiwgCisgICAgMjI4LCAxNTMsIDEwLCAyLCAyMjgsIDE1NCwgMjQxLCA1OCwgMTAsIDIsIDIyOCwgMTU0LCAyMTMsIDg4LCAxMCwgMiwgMjI4LCAKKyAgICAxNTQsIDExOSwgMjI4LCAxNTQsIDIxMCwgMTUsIDExOSwgMjEwLCAxNSwgMjA0LCAzNywgMTE5LCAyMDQsIDM2LCAxMCwgMiwgCisgICAgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjgsIDE0NSwgMTAsIDIsIDIyOCwgMTQ2LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjgsIDE0NCwgMTAsIDIsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDI0LCAyMDcsIDAsIDEwLCAKKyAgICAyLCAyMjgsIDEzNSwgMjQyLCAyMjgsIDIyOCwgMTM0LCAxMCwgMiwgMjI4LCAxMzUsIDIxNywgNDAsIDIyOCwgMTM0LCAxMCwgCisgICAgMiwgMjI4LCAxMzUsIDIwOCwgMTkyLCAxMCwgMiwgMjI4LCAxMjcsIDEwLCAyLCAyMjgsIDExNywgMTAsIDIsIDIyOCwgMzUsIAorICAgIDEwLCAyLCAyMjgsIDIwLCAxMCwgMiwgMTYxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCA2MiwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjUxLCAyMzUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI1MSwgMjM2LCA5MywgMjI2LCAxMywgMTAsIDIsIDIyNywgMTA4LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyNDksIAorICAgIDk4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxNDgsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMzgsIDEwOSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM4LCA5MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgCisgICAgMjM2LCA4OSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM2LCA1OCwgMjA2LCAKKyAgICAxNTUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNiwgNTAsIDkzLCAyMTAsIAorICAgIDExMywgOTMsIDYyLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDE2MSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjM1LCAKKyAgICAxNDMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIzNSwgMTM2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIAorICAgIDEzNiwgMjQyLCAyMjgsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDUwLCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMzUsIDIxLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI4LCAKKyAgICAxMzQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNywgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNiwgMTYzLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjYsIDE1NywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjI0LCAyMTAsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMiwgNzcsIAorICAgIDkzLCAyMzksIDEzNywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjIyLCA3NywgOTMsIDIzNSwgMTYxLCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMjIsIDc3LCA5MywgMjA2LCAyMDEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMSwgMjExLCAxMCwgMiwgCisgICAgMjI3LCAxMDgsIDI0LCAyMjEsIDIxMiwgOTMsIDIxOCwgODQsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAKKyAgICAyMjcsIDEwOCwgMjQsIDIxOCwgODksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIxNSwgMjA0LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMTIsIDE3NSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCA2NCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEyLCAwLCAKKyAgICAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMTAsIDExNCwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIyNywgCisgICAgMTA4LCAyNCwgMjEwLCAzMSwgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwOSwgMTY4LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDcsIDI0MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjA2LCAyMzIsIAorICAgIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjI3LCAxMDgsIAorICAgIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIAorICAgIDIwMywgMTkwLCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAxOTksIDM2LCAxMCwgMiwgMjI3LCAxMDYsIDEwLCAyLCAyMjcsIDEwNywgCisgICAgMjQyLCAyMjgsIDIyNywgMTA2LCAxMCwgMiwgMjI3LCA5NiwgMTAsIDIsIDIyNywgOTMsIDEwLCAyLCAyMjcsIDkxLCAxMCwgCisgICAgMiwgMjI3LCA5MCwgMTAsIDIsIDIyNywgODgsIDEwLCAyLCAyMjcsIDg5LCAxMTksIDIyNywgODgsIDEwLCAyLCAyMjcsIDc2LCAKKyAgICAxMCwgMiwgMjI3LCA3NywgMjQsIDIyOCwgMTU0LCAyMzUsIDI4LCAxMCwgMiwgMjI3LCA3MiwgMTAsIDIsIDIyNywgNzMsIAorICAgIDI0LCAyNDksIDExOCwgMTAsIDIsIDIyNywgNzMsIDI0MiwgMjI4LCAyMjcsIDcyLCAxMCwgMiwgMjI3LCA3MCwgMTAsIDIsIAorICAgIDIyNywgNjksIDEwLCAyLCAyMjcsIDM4LCAxMCwgMiwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNywgMzksIDExOSwgMjI3LCAzOSwgMjI1LCAxNTgsIDI0LCAxMDgsIDExOSwgMjI1LCAKKyAgICAxNTgsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMjM0LCAxMCwgMiwgMjI2LCAxNjMsIDEwLCAyLCAyMjYsIDE2NCwgMjQsIDI0OSwgCisgICAgMTE4LCAxMCwgMiwgMjI2LCAxNjQsIDI0LCA2NiwgMTAsIDIsIDIyNiwgMTY0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNiwgCisgICAgMTU3LCAxMCwgMiwgMjI2LCAxNDcsIDEwLCAyLCAyMjYsIDEzNCwgMTAsIDIsIDIyNiwgMTMzLCAxMCwgMiwgMjI2LCAxMzEsIAorICAgIDEwLCAyLCAyMjYsIDEzMiwgMTE5LCAyMjYsIDEzMSwgMTAsIDIsIDIyNiwgMTUsIDEwLCAyLCAyMjYsIDE2LCAxMTksIDIzNCwgCisgICAgNzYsIDI0LCAyNTAsIDE4MCwgMjI2LCAxNiwgMTE5LCAyMzQsIDc2LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjYsIDEzLCAKKyAgICAxMCwgMiwgMjI2LCAxMSwgMTAsIDIsIDIyNiwgMTIsIDIwMywgNzMsIDE5LCAxMCwgMiwgMjI2LCAxMCwgMTAsIDIsIDIyNiwgCisgICAgMiwgMTAsIDIsIDIyNiwgMywgMjM1LCAyOCwgMTAsIDIsIDIyNiwgMSwgMTAsIDIsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAKKyAgICAyNDYsIDIxNywgNDAsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCAyMzksIDEwLCAyLCAyMjUsIDIxNywgMTAsIDIsIDE5NCwgMTAsIAorICAgIDIsIDIyNSwgMTU3LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCA2MiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMzUsIDkzLCAyNDIsIAorICAgIDU5LCA5MywgMTQ0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAzNSwgOTMsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDM1LCA5MywgMjI1LCA5MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjUxLCAxNTEsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MSwgCisgICAgODUsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI1MCwgMTgyLCAxOTksIDMyLCAyMDYsIDE1NSwgMTAsIDIsIDIyNSwgMTU4LCAKKyAgICAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDI0OCwgMTg4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyNDEsIAorICAgIDI1NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNiwgODksIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIzNSwgNDAsIDkzLCAyMzUsIDM5LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAxNDQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIzNCwgCisgICAgMjE2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMzQsIDc2LCAyNCwgMjE4LCA4OSwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyOCwgMTM0LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjgsIAorICAgIDEzNSwgOTMsIDE0NCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI4LCAxMzUsIDkzLCAyMjQsIDQyLCAxMCwgMiwgMjI1LCAKKyAgICAxNTgsIDI0LCAyMjYsIDE2MywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAxNDcsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIAorICAgIDIyNiwgMTMsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNiwgMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI2LCAzLCA5MywgCisgICAgMjM0LCA3NiwgOTMsIDYyLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjI0LCAKKyAgICAxNTQsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgNDIsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyNCwgMjcsIDEwLCAyLCAKKyAgICAyMjUsIDE1OCwgMjQsIDIyMiwgNzYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMiwgNzcsIDkzLCAyMzgsIDE3OSwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMjIwLCAyNTAsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIyMCwgMzQsIDEwLCAyLCAyMjUsIDE1OCwgCisgICAgMjQsIDIxMCwgNjYsIDkzLCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjEwLCAxMSwgOTMsIDIzNSwgMTM2LCAKKyAgICA5MywgMjM4LCAxMDksIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDIxMCwgMTEsIDkzLCAyMzUsIDEzNiwgMjA2LCAxNTUsIDEwLCAKKyAgICAyLCAyMjUsIDE1OCwgMjQsIDIwOSwgMjE4LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDksIDIxOSwgOTMsIDIwOSwgMjE4LCAKKyAgICAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDcsIDIzNCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA3LCAxMywgMTAsIDIsIDIyNSwgCisgICAgMTU4LCAyNCwgMjA3LCAwLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDYsIDIwMiwgOTMsIDM1LCA5MywgMjA4LCAyNSwgOTMsIAorICAgIDE4OCwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgNjYsIDEwLCAyLCAyMjUsIDE1OCwgMjQsIDEwOCwgOTMsIDYyLCAxMCwgMiwgCisgICAgMjI1LCAxNTgsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjA0LCA0OCwgOTMsIAorICAgIDI1MCwgMTgxLCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjI1LCAxNTgsIDI0LCAyMDMsIDE5MCwgCisgICAgMTAsIDIsIDIyNSwgMTU4LCAyMDgsIDE5MiwgMTAsIDIsIDIyNSwgMTU1LCAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY1LCAKKyAgICAxMCwgMiwgMjI1LCAxNTYsIDI0LCAyMTAsIDY2LCA5MywgMjA3LCAyMzQsIDEwLCAyLCAyMjUsIDE1NiwgMjM1LCAyOCwgMTAsIAorICAgIDIsIDIyNSwgMTU2LCAyMzUsIDI5LCAxMTksIDIyNSwgMTU2LCAyMzUsIDI5LCAyMTAsIDY1LCAxMCwgMiwgMjI1LCAxNTEsIAorICAgIDEwLCAyLCAyMjUsIDkzLCAxMCwgMiwgMjI1LCA5NCwgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMjUsIDkxLCAxMCwgMiwgMjI1LCAKKyAgICA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjI1LCA5MiwgMjQsIDIyNSwgMjQ2LCA5MywgMjEyLCAxNzUsIDEwLCAyLCAyMjQsIAorICAgIDIxMCwgMTAsIDIsIDIyNCwgMTkxLCAxMCwgMiwgMjI0LCAxNzksIDEwLCAyLCAyMjQsIDE1NCwgMTAsIDIsIDIyNCwgNDIsIAorICAgIDEwLCAyLCAyMjQsIDQzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI1MSwgCisgICAgMTUxLCAxMCwgMiwgMjI0LCA0MSwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIzOCwgOTEsIDEwLCAyLCAKKyAgICAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgMjA2LCAxNTUsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM2LCA1OCwgMjA2LCAxNTUsIAorICAgIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM0LCA3NiwgMjQsIDI0OSwgMTE4LCAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyOCwgMTM0LCAKKyAgICAxMCwgMiwgMjI0LCA0MSwgMjQsIDIyNywgOTMsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI3LCA5MSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjcsIDkyLCA5MywgMjUwLCAxODEsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjI2LCAxNjMsIDEwLCAyLCAyMjQsIDQxLCAKKyAgICAyNCwgMjI1LCAxNzYsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMjUsIDE1NywgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMjIsIDc3LCA5MywgMjM4LCAxNzksIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjIwLCAzNCwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDI0LCAyMTgsIDEzMywgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDksIDE4MywgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjI0LCA0MSwgCisgICAgMjQsIDIwOSwgMTYwLCA5MywgMjQ4LCAzNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMDQsIDIwOSwgMTAsIDIsIDIyNCwgNDEsIAorICAgIDIwNiwgMTU1LCAxMCwgMiwgMjI0LCA0MSwgMjQyLCAyMjgsIDIyNCwgNDAsIDEwLCAyLCAyMjQsIDQxLCAyMTcsIDQwLCAKKyAgICAyMjQsIDQwLCAxMCwgMiwgMjI0LCA0MSwgMjA4LCAxOTIsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIDQ2LCAxMCwgMiwgMjI0LCAKKyAgICAzOSwgMTAsIDIsIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAxMTksIDIyNCwgMzMsIDEwLCAyLCAyMjQsIDM0LCAyMTcsIAorICAgIDQwLCAyMjQsIDMzLCAxMCwgMiwgMjI0LCAzNCwgMjEwLCA0NiwgMTAsIDIsIDIyNCwgMzAsIDEwLCAyLCAyMjQsIDI3LCAxMCwgCisgICAgMiwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNSwgMTAsIDIsIDIyNCwgMjYsIDExOSwgMjI0LCAyNiwgCisgICAgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTc4LCAxMCwgMiwgMjIyLCAyMzUsIDI0LCAyMDcsIDAsIDEwLCAyLCAKKyAgICAyMjIsIDIzNSwgMjM1LCAyOCwgMTAsIDIsIDIyMiwgMjM0LCAxMCwgMiwgMjIyLCAyMDYsIDEwLCAyLCAyMjIsIDE1OCwgMTAsIAorICAgIDIsIDIyMiwgMTM1LCAxMCwgMiwgMjIyLCAxMzQsIDEwLCAyLCAyMjIsIDc2LCAxMCwgMiwgMjIyLCAyOCwgMTAsIDIsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjIxLCAxNjQsIDEwLCAyLCAyMjEsIDQxLCAxMCwgMiwgMjIxLCA0MiwgMTE5LCAyMjEsIDQxLCAxMCwgCisgICAgMiwgMjIxLCAzMCwgMTAsIDIsIDIyMSwgMzEsIDIzNSwgMjgsIDEwLCAyLCAyMjEsIDEyLCAxMCwgMiwgMjIwLCAyNTQsIDEwLCAKKyAgICAyLCAyMjAsIDI1MCwgMTAsIDIsIDIyMCwgMjUxLCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI1MSwgMjQsIDIyNSwgMjQ1LCAxMCwgCisgICAgMiwgMjIwLCAyNTEsIDI0LCAxOTksIDExNCwgMTAsIDIsIDIyMCwgMjUxLCAxMTksIDIyMCwgMjUwLCAxMCwgMiwgMjIwLCAKKyAgICAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAzNSwgOTMsIDE4OCwgMTAsIDIsIDIyMCwgMjUxLCAyNDIsIDIyOCwgMjIwLCAyNTAsIAorICAgIDEwLCAyLCAyMjAsIDI0OCwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDI0OSwgMjQsIDM1LCA5MywgCisgICAgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyNCwgMjQxLCA3NiwgMTAsIDIsIDIyMCwgMjQ5LCAyMzUsIDI4LCAxMCwgMiwgCisgICAgMTg4LCAxMCwgMiwgMjIwLCAxNjAsIDEwLCAyLCAyMjAsIDE0NywgMTAsIDIsIDIyMCwgMTQ4LCAyMjgsIDQ5LCAxMCwgMiwgCisgICAgMjIwLCAxNDgsIDI0LCAyMDksIDIyMSwgMjA2LCAxNTUsIDEwLCAyLCAyMjAsIDE0OCwgMjE3LCA0MCwgMjIwLCAxNDcsIDEwLCAKKyAgICAyLCAyMjAsIDE0NiwgMTAsIDIsIDIyMCwgMTM5LCAyMTgsIDc1LCAxMCwgMiwgMjIwLCAxMzgsIDEwLCAyLCAyMjAsIDEzNywgCisgICAgMTAsIDIsIDIyMCwgMzQsIDEwLCAyLCAyMjAsIDM1LCAyNCwgNjIsIDEwLCAyLCAyMjAsIDM1LCAyNCwgMjA0LCAzNiwgMTAsIAorICAgIDIsIDIyMCwgMzUsIDIxMCwgNDYsIDEwLCAyLCAyMTksIDE1MCwgMTAsIDIsIDIxOSwgMTUxLCAyNCwgNzIsIDEwLCAyLCAKKyAgICAyMTksIDE0OSwgMTAsIDIsIDIxOSwgMTE5LCAxMCwgMiwgMjE5LCAxMjAsIDI0LCAyMzYsIDU4LCAyMDYsIDE1NSwgMTAsIDIsIAorICAgIDIxOSwgMTIwLCAyNCwgMjM2LCA1MCwgOTMsIDIzNiwgNTgsIDIwNiwgMTU1LCAxMCwgMiwgMjE5LCAxMTUsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDI1MSwgODUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIAorICAgIDI0LCAyNTAsIDE4MiwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyMjIsIDc3LCA5MywgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyMCwgMzQsIAorICAgIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTksIDExNiwgMjQsIDIxMCwgNjUsIDEwLCAyLCAyMTksIAorICAgIDExNiwgMjQsIDIxMCwgNjYsIDkzLCAzNSwgMjUxLCA4NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjEwLCA2NiwgOTMsIDI1MCwgCisgICAgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMTAsIDY2LCA5MywgMjUwLCAxODIsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjA0LCA0OCwgOTMsIDI1MCwgMTgxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDE5MCwgMTAsIAorICAgIDIsIDIxOSwgMTAzLCAxMCwgMiwgMjE4LCAxMzMsIDEwLCAyLCAyMTgsIDEwNSwgMTAsIDIsIDIxOCwgODksIDEwLCAyLCAKKyAgICAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMTgsIDkwLCAyMjUsIDE1NiwgMjQsIDIyMiwgMTM1LCAKKyAgICAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIDM1LCAxMCwgMiwgMjE4LCA5MCwgMjI1LCAxNTYsIDI0LCAyMTIsIAorICAgIDM2LCAxMTksIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxOCwgOTAsIDIyNSwgMTU2LCAyNCwgCisgICAgMjAzLCAxOTAsIDEwLCAyLCAyMTgsIDkwLCAyMDYsIDE1NSwgMTAsIDIsIDIxOCwgOTAsIDExOSwgMjE4LCA4OSwgMTAsIDIsIAorICAgIDIxOCwgOTAsIDI0MiwgMjI4LCAyMTgsIDg5LCAxMCwgMiwgMjE4LCA5MCwgMjQyLCAyMjgsIDIxOCwgOTAsIDIyNSwgMTU2LCAKKyAgICAxMTksIDIyNSwgMTU1LCAxMCwgMiwgMjE4LCA4NCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDI1MCwgMTc1LCAxMCwgCisgICAgMiwgMjE4LCA4NSwgMjUyLCA3LCAyNCwgMjQ4LCAxODgsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMzksIDEzMSwgCisgICAgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIzNSwgMzksIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIxOCwgODUsIDI1MiwgNywgMjQsIDIyNywgOTEsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIAorICAgIDcsIDI0LCAxOTQsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjE4LCA4NSwgMjUyLCA3LCAKKyAgICAyNCwgMjA5LCAxNTcsIDEwLCAyLCAyMTgsIDg1LCAyNTIsIDcsIDI0LCAyMDQsIDQ3LCAxMCwgMiwgMjE4LCA4NSwgMjI2LCAKKyAgICAxMzIsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxOCwgODUsIDIyNiwgMTMyLCAyNCwgMjQ4LCAxODksIDY2LCAxMCwgMiwgCisgICAgMTcyLCAxMCwgMiwgMjE2LCAyMDEsIDEwLCAyLCAyMTYsIDE2MiwgMTAsIDIsIDIxNiwgMTM1LCAxMCwgMiwgMjE2LCAzLCAKKyAgICAxMCwgMiwgMjE1LCAyMDQsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDYyLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNTIsIDg5LCAKKyAgICAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyNDgsIDE4OCwgMTAsIDIsIDIxNSwgMjA1LCAyNCwgMjQ4LCAzNiwgMTAsIDIsIDIxNSwgCisgICAgMjA1LCAyNCwgNzIsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDcwLCAxMCwgMiwgMjE1LCAyMDUsIDI0LCAyMzIsIDIzNSwgMTAsIAorICAgIDIsIDIxNSwgMjA1LCAyNCwgNjYsIDEwLCAyLCAyMTUsIDIwNSwgMjQsIDIwNCwgNDcsIDEwLCAyLCAyMTUsIDIwNSwgMjQyLCAKKyAgICAyMjgsIDIxNSwgMjA0LCAxMCwgMiwgMjE1LCAxNDYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDIyNywgNzIsIDEwLCAyLCAyMTUsIAorICAgIDE0NywgMjQsIDIwNCwgMzYsIDEwLCAyLCAyMTUsIDE0NywgMjQsIDE5OSwgMTE0LCAxMCwgMiwgMjE1LCAxNDcsIDIxNywgCisgICAgNDAsIDIxNSwgMTQ2LCAxMCwgMiwgMjEzLCAyNTIsIDEwLCAyLCAyMTMsIDI0NiwgMTAsIDIsIDIxMywgODgsIDEwLCAyLCAKKyAgICAyMTIsIDE3NSwgMTAsIDIsIDIxMiwgNjQsIDEwLCAyLCAyMTIsIDUxLCAyMTgsIDc1LCAxMCwgMiwgMjEyLCA1MCwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCA2MiwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIDEzNywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMzksIAorICAgIDEzNSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjI3LCA3NiwgMTAsIDIsIDIxMiwgCisgICAgNTEsIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjQsIDI1LCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIyMSwgCisgICAgMjExLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIxOCwgODksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEyLCAzNSwgMTAsIDIsIAorICAgIDIxMiwgNTEsIDI0LCAyMTAsIDMxLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNywgMjQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgCisgICAgMjA0LCA0NywgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMDQsIDQyLCAxMCwgMiwgMjEyLCA1MSwgMjQsIDIwNCwgMTIsIDEwLCAyLCAKKyAgICAyMTIsIDUxLCAyNCwgMjAzLCAyMTQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjAzLCAxOTAsIDEwLCAyLCAyMTIsIDUxLCAxMTksIAorICAgIDIxMiwgNTAsIDEwLCAyLCAyMTIsIDUxLCAyMzUsIDI4LCAxMCwgMiwgMjEyLCAzNSwgMTAsIDIsIDIxMiwgMzYsIDIyNSwgCisgICAgMTU4LCAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMTIsIDgsIDEwLCAyLCAyMTIsIDAsIDEwLCAyLCAyMTAsIDExNCwgMTAsIDIsIAorICAgIDIxMCwgMTEyLCAxMCwgMiwgMjEwLCAxMTMsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAKKyAgICAyMTAsIDExMywgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjEwLCAxMTMsIDI0LCAyMjAsIDM0LCAxMCwgMiwgMjEwLCAxMTMsIAorICAgIDI0LCAyMDksIDIxOCwgMTAsIDIsIDIxMCwgMTEzLCAyNCwgMjA0LCAxOTIsIDEwLCAyLCAyMTAsIDExMywgMjQsIDY2LCAxMCwgCisgICAgMiwgMjEwLCAxMTMsIDI0LCAxMDgsIDkzLCA2MiwgMTAsIDIsIDIxMCwgMTEwLCAxMCwgMiwgMjEwLCAxMDgsIDEwLCAyLCAKKyAgICAyMTAsIDgyLCAxMCwgMiwgMjEwLCA2NSwgMTAsIDIsIDIxMCwgNjYsIDIzMywgOTcsIDEwLCAyLCAyMTAsIDY2LCAxMTksIAorICAgIDIxMCwgNjYsIDIzNiwgODEsIDExOSwgMjM2LCA4MSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMjEwLCA2NiwgCisgICAgMTE5LCAyMTAsIDY2LCAyMDcsIDI1LCAxMTksIDIwNywgMjUsIDIzNiwgNTAsIDExOSwgMjM2LCA0OSwgMTAsIDIsIDIxMCwgCisgICAgNTgsIDEwLCAyLCAyMTAsIDUzLCAxMCwgMiwgMjEwLCA0OSwgMTAsIDIsIDIxMCwgNDgsIDEwLCAyLCAyMTAsIDQ1LCAxMCwgCisgICAgMiwgMjEwLCAzMSwgMTAsIDIsIDIxMCwgMzIsIDI0LCA2MiwgMTAsIDIsIDIxMCwgMzIsIDI0LCAyMjgsIDEzNCwgMTAsIDIsIAorICAgIDIxMCwgMjUsIDEwLCAyLCAyMTAsIDI2LCAyNCwgNjIsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjQ5LCA5OSwgMTAsIDIsIDIxMCwgCisgICAgMjYsIDI0LCAyNDgsIDE0LCAxMCwgMiwgMjEwLCAyNiwgMjQsIDI0MSwgMTksIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjM2LCAKKyAgICA0OSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1MywgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgCisgICAgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIxMCwgMjYsIDI0LCAyMjQsIDI3LCAxMCwgMiwgMjEwLCAKKyAgICAyNiwgMjQsIDIyMSwgMzAsIDEwLCAyLCAyMTAsIDI2LCAyNCwgMjEyLCAzNSwgMTAsIDIsIDIxMCwgMTksIDEwLCAyLCAyMTAsIAorICAgIDE0LCAxMCwgMiwgMjEwLCAxNSwgMjA2LCAxNTUsIDEwLCAyLCAyMTAsIDE1LCAxMTksIDIxMCwgMTUsIDI0OCwgNCwgMTE5LCAKKyAgICAyNDgsIDMsIDEwLCAyLCAyMTAsIDEwLCAxMCwgMiwgMjA5LCAyMjAsIDEwLCAyLCAyMDksIDIyMSwgMTE5LCAyMjgsIDUwLCAKKyAgICAyMDksIDIyMCwgMTAsIDIsIDIwOSwgMjE4LCAxMCwgMiwgMjA5LCAyMTcsIDEwLCAyLCAyMDksIDE4MiwgMTAsIDIsIDIwOSwgCisgICAgMTgzLCAyMzUsIDI4LCAxMCwgMiwgMjA5LCAxNjgsIDEwLCAyLCAyMDksIDE2NiwgMTAsIDIsIDIwOSwgMTY3LCAxMTksIAorICAgIDIwOSwgMTY3LCAyMDksIDIxOCwgMTAsIDIsIDIwOSwgMTU5LCAxMCwgMiwgMjA5LCAxNTcsIDEwLCAyLCAyMDgsIDI0LCAxMCwgCisgICAgMiwgMjA4LCAyNSwgMTE5LCAyMDgsIDI0LCAxMCwgMiwgMjA3LCAyNDYsIDEwLCAyLCAyMDcsIDI0NSwgMTAsIDIsIDIwNywgCisgICAgMjQzLCAxMCwgMiwgMjA3LCAyMzQsIDEwLCAyLCAyMDcsIDIzMywgMTAsIDIsIDIwNywgMjA3LCAxMCwgMiwgMjA3LCAyMDYsIAorICAgIDEwLCAyLCAyMDcsIDM2LCAxMCwgMiwgMjA3LCAzNywgMjUwLCAxNjUsIDEwLCAyLCAyMDcsIDM3LCAyNCwgMjM0LCA3NSwgCisgICAgMTAsIDIsIDIwNywgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNywgMzcsIDIzNSwgMjgsIDEwLCAyLCAyMDcsIDI0LCAKKyAgICAxMCwgMiwgMjA3LCAyNSwgMTE5LCAyMDcsIDI1LCAyMTksIDE1MSwgMTE5LCAyMTksIDE1MSwgMjQxLCAwLCAxMTksIDI0MCwgCisgICAgMjU1LCAxMCwgMiwgMjA3LCAyNSwgMjA4LCAxOTIsIDEwLCAyLCAyMDcsIDEzLCAxMCwgMiwgMTY1LCAyNCwgMjQ4LCAxODgsIAorICAgIDEwLCAyLCAxNjUsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMTY1LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDE2NSwgMjQsIDIwOSwgCisgICAgMjIwLCAxMCwgMiwgMTY1LCAyNCwgMjA0LCAyMDksIDEwLCAyLCAxNjUsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjA3LCAwLCAKKyAgICAxMCwgMiwgMjA2LCAyMzIsIDEwLCAyLCAyMDYsIDIwMSwgMTAsIDIsIDIwNiwgMjAyLCAyMzUsIDI4LCAxMCwgMiwgMjA2LCAKKyAgICAxNSwgMTAsIDIsIDIwNiwgMTYsIDIwNiwgMTU1LCAxMCwgMiwgMjA1LCAyNDIsIDEwLCAyLCAyMDUsIDIxOSwgMTAsIDIsIAorICAgIDIwNSwgMjIwLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA1LCAyMjAsIDExOSwgMjA1LCAyMTksIDEwLCAyLCAyMDUsIDIyMCwgCisgICAgMTE5LCAyMDUsIDIyMCwgMjM2LCA4MSwgMTE5LCAyMzYsIDgxLCAyMzYsIDUwLCAxMTksIDIzNiwgNDksIDEwLCAyLCAyMDQsIAorICAgIDIxNSwgMTAsIDIsIDIwNCwgMjA5LCAxMCwgMiwgMjA0LCAyMDcsIDEwLCAyLCAyMDQsIDIwMywgMTAsIDIsIDIwNCwgMTkyLCAKKyAgICAxMCwgMiwgMjA0LCAxOTMsIDExOSwgMjA0LCAxOTMsIDE5OSwgMTE1LCAxMTksIDE5OSwgMTE0LCAxMCwgMiwgNjYsIDEwLCAKKyAgICAyLCAxMDgsIDIzNSwgMzksIDEwLCAyLCAxMDgsIDEwOCwgNjYsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAyMTYsIDIxMSwgCisgICAgMTE5LCAyMTYsIDIxMSwgMjM2LCA1MCwgMTE5LCAyMzYsIDQ5LCAxMCwgMiwgMTA4LCAxMTksIDEwOCwgMjA3LCAyMDgsIAorICAgIDExOSwgMjA3LCAyMDcsIDEwLCAyLCAxMDgsIDExOSwgMTA4LCAxMDgsIDIxMywgMTA1LCAxMTksIDEwOCwgMjEzLCAxMDQsIAorICAgIDEwLCAyLCAyMDQsIDQ3LCAxMCwgMiwgMjA0LCA0MiwgMTAsIDIsIDIwNCwgMzYsIDEwLCAyLCAyMDQsIDM3LCAyMjUsIDIzOSwgCisgICAgMTAsIDIsIDIwNCwgMzcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzcsIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCA2NiwgMTAsIDIsIDIwNCwgMzcsIDI0LCAxMDgsIDkzLCAxMDgsIDkzLCAxMDgsIAorICAgIDIzNSwgMjgsIDEwLCAyLCAyMDQsIDM3LCAyMzUsIDI4LCAxMCwgMiwgMjA0LCAzNywgMjEwLCA0NiwgMTAsIDIsIDIwNCwgCisgICAgMzcsIDIxMCwgNDcsIDI0LCAyNDksIDExOCwgMTAsIDIsIDIwNCwgMzIsIDEwLCAyLCAyMDQsIDEyLCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIyNSwgMTU3LCAxMCwgMiwgMjA0LCAxMywgMjQsIDIyMiwgNzcsIDkzLCAyNDIsIDU4LCAxMCwgMiwgMjA0LCAKKyAgICAxMywgMjQsIDIxMCwgMTEyLCAxMCwgMiwgMjA0LCAxMywgMjQsIDY2LCAxMCwgMiwgMjA0LCAxMSwgMTAsIDIsIDIwNCwgNywgCisgICAgMTAsIDIsIDIwNCwgOCwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMDQsIDgsIDI0LCAxNzIsIDEwLCAyLCAyMDQsIDUsIDEwLCAyLCAKKyAgICAyMDQsIDYsIDIzNSwgMjgsIDEwLCAyLCAyMDMsIDIxNCwgMTAsIDIsIDIwMywgMjE1LCAyNDIsIDIyOCwgMjAzLCAyMTQsIAorICAgIDEwLCAyLCAyMDMsIDIxNSwgMjEwLCA0NiwgMTAsIDIsIDIwMywgMjEyLCAxMCwgMiwgMjAzLCAyMTMsIDI0LCAzNSwgOTMsIAorICAgIDE0NCwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMzUsIDkzLCAxODgsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDI1MSwgMTUxLCAxMCwgCisgICAgMiwgMjAzLCAyMTMsIDI0LCAxNDQsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIxOCwgODksIDEwLCAyLCAyMDMsIDIxMywgMjQsIAorICAgIDIwNCwgNDcsIDEwLCAyLCAyMDMsIDIxMywgMjQsIDIwNCwgNDgsIDkzLCAyNTAsIDE4MSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgCisgICAgMjA0LCA0OCwgOTMsIDI0OCwgMTg4LCAxMCwgMiwgMjAzLCAyMTEsIDEwLCAyLCAyMDMsIDIwOCwgMTAsIDIsIDIwMywgMjA3LCAKKyAgICAxMCwgMiwgMjAzLCAyMDMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDYyLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyNTAsIDE3NSwgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMTQ4LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIwMywgMjA0LCAKKyAgICAyNCwgMjM2LCA4OSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA3MSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjM2LCA1OCwgCisgICAgMjA2LCAxNTUsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNiwgNDksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIzNSwgNTAsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDE0NCwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIAorICAgIDIyOCwgMTM0LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjgsIDIwLCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMjYsIDE2MywgCisgICAgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjI0LCAyNSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjIxLCAxNjQsIDEwLCAyLCAyMDMsIAorICAgIDIwNCwgMjQsIDE3MiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjEwLCA2NSwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjA5LCAKKyAgICAxNjYsIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAxMDgsIDkzLCAyMzUsIAorICAgIDM5LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjAzLCAyMDQsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIAorICAgIDIwMywgMjAxLCAxMCwgMiwgMjAzLCAyMDIsIDI0LCA2NiwgMTAsIDIsIDIwMywgMTkwLCAxMCwgMiwgMjAzLCAxOTEsIDI0LCAKKyAgICA2MiwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI2LCAxNSwgMTAsIDIsIDIwMywgMTkxLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMDMsIDE5MSwgMjQsIDIwNywgMCwgMTAsIDIsIDIwMywgMTg2LCAxMCwgMiwgMjAzLCAxODksIDEwLCAyLCAyMDMsIDE4NywgCisgICAgMTAsIDIsIDIwMywgMTgzLCAxMCwgMiwgMjAzLCAxNzEsIDEwLCAyLCAyMDMsIDE3MiwgMjQsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMDMsIDE3MCwgMTAsIDIsIDE5OSwgMTE0LCAxMCwgMiwgMTk5LCAxMTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAxMTUsIAorICAgIDk1LCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAxOTksIDExMCwgMTAsIDIsIDE5OSwgMTAyLCAxMCwgMiwgMTk5LCA4OCwgMTAsIAorICAgIDIsIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM3LCAxMTksIDE5OSwgMzYsIDEwLCAyLCAxOTksIDM1LCAxMCwgMiwgMTk5LCAzMywgCisgICAgMTAsIDIsIDE5OSwgMzQsIDIyNywgOTUsIDIwNiwgMTU1LCAxMCwgMiwgMTk5LCAyOCwgMTAsIDIsIDE5OSwgMTksIDEwLCAyLCAKKyAgICAxOTksIDMsIDEwLCAyLCAxOTksIDEsIDEwLCAyLCAxOTksIDIsIDI0LCA2MiwgMTAsIDIsIDE5OSwgMCwgMTAsIDIsIDE5OCwgCisgICAgMjU1LCAxMCwgMiwgMjI3LCA2MSwgMjM4LCAyMDYsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA4OSwgMTAsIDIsIDI1MiwgCisgICAgNywgMjQsIDYyLCAxMCwgMiwgMjUxLCA5OCwgMjQsIDIyNiwgNCwgMTAsIDIsIDI0MiwgNDksIDIyNiwgMTMyLCAyNCwgMjA0LCAKKyAgICA0OCwgOTMsIDIyMiwgMTM1LCAxMCwgMiwgMjQyLCA0NywgMTAsIDIsIDI0MSwgMCwgOTMsIDIwOSwgMjIwLCAxMCwgMiwgCisgICAgMjM5LCAxMzYsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM4LCAxMSwgMjQsIDIzNSwgMzksIDEwLCAyLCAyMzgsIDExLCAyNCwgCisgICAgMjEwLCA2NSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNTEsIDg2LCA5MywgMjI3LCA3NywgOTMsIDYyLCAxMCwgMiwgMjM2LCAKKyAgICA4OCwgMjQsIDI1MCwgMTc5LCAxMCwgMiwgMjM2LCAxNCwgMTAsIDIsIDIzNSwgMTUxLCAxMCwgMiwgMjMzLCA3MywgMTAsIDIsIAorICAgIDIyNywgMTA4LCAyNCwgMjUxLCA1MywgMTAsIDIsIDIyNywgMTA4LCAyNCwgMjUwLCAxNzgsIDEwLCAyLCAyMjcsIDEwOCwgCisgICAgMjQsIDIzNSwgMTM1LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzUsIDM5LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMzQsIDc2LCAKKyAgICAyNCwgMjUwLCAxNzksIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIyNCwgMjUsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE3MiwgMTAsIAorICAgIDIsIDIyNywgMTA4LCAyNCwgMjA5LCAyMTMsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDIwNCwgMjE1LCAxMCwgMiwgMjI3LCAKKyAgICAxMDgsIDI0LCAyMDMsIDIxMiwgMTAsIDIsIDIyNSwgMTU4LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMjQsIDQxLCAyMTAsIAorICAgIDQ3LCAyNCwgMjQ5LCAxMTgsIDEwLCAyLCAyMjQsIDQxLCAyNCwgMjM4LCA5MiwgOTMsIDIyNSwgOTMsIDEwLCAyLCAyMjQsIAorICAgIDQxLCAyNCwgMjA5LCAyMjAsIDEwLCAyLCAyMjIsIDI3LCAxMCwgMiwgMjIwLCAyNDksIDI0LCAxOTksIDExNCwgMTAsIDIsIAorICAgIDIyMCwgMTU5LCAxMCwgMiwgMjE5LCAxMTgsIDEwLCAyLCAyMTksIDExNywgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjQ5LCA5OSwgCisgICAgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM1LCAxNjEsIDEwLCAyLCAyMTgsIDEwNiwgMjEyLCAyMjgsIDIxOSwgMTA5LCAyNDEsIAorICAgIDE1NCwgMTAsIDIsIDIxNiwgNCwgMjUwLCAxNjUsIDEwLCAyLCAyMTUsIDE1MCwgMTAsIDIsIDIxMiwgNTEsIDI0LCAyMjgsIAorICAgIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIwNiwgMTQsIDEwLCAyLCAyMDQsIDEzLCAyNCwgMjIyLCA3NiwgMTAsIDIsIDEwOCwgCisgICAgNjYsIDEwLCAxNDUsIDIsIDEyMCwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDEyNiwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjUwLCAxODEsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAKKyAgICAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjUwLCAxODEsIAorICAgIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyNTAsIDE4MSwgMTAsIDE0NSwgMiwgMTI2LCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzcsIDYxLCAyNDAsIDI1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIAorICAgIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyNDAsIDI1NSwgCisgICAgMTAsIDE0NSwgMiwgMjE5LCAxMTQsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgNjYsIDEwLCAxNDUsIDIsIAorICAgIDIzNywgNjEsIDY2LCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgNjYsIDEwLCAxNDUsIDIsIDIxMCwgMTM2LCA2NiwgMTAsIDE0NSwgCisgICAgMiwgMjM4LCAyMzIsIDY2LCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgNjYsIDEwLCAxNDUsIDIsIDExMiwgMjM1LCAyNDQsIDEwLCAKKyAgICAxNDUsIDIsIDEyMCwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDEyNiwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAKKyAgICAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjM1LCAyNDQsIDEwLCAxNDUsIDIsIDIwOSwgMTA2LCAyMzUsIDI0NCwgCisgICAgMTAsIDE0NSwgMiwgMjEwLCAxMzYsIDIzNSwgMjQ0LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMjM1LCAyNDQsIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTE0LCAyMzUsIDI0NCwgMTAsIDE0NSwgMiwgMTEyLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMzUsIAorICAgIDI0MSwgMTAsIDE0NSwgMiwgMTI2LCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIzNSwgMjQxLCAxMCwgMTQ1LCAKKyAgICAyLCAyMzcsIDYxLCAyMzUsIDI0MSwgMTAsIDE0NSwgMiwgMTIwLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAxMjYsIDIxMCwgODIsIAorICAgIDEwLCAxNDUsIDIsIDEyNiwgMjEwLCA4MywgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyMTAsIDgyLCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgMjEwLCA4MiwgMTAsIDE0NSwgMiwgMjEwLCAKKyAgICAxMzYsIDIxMCwgODIsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMTAsIDgyLCAxMCwgMTQ1LCAyLCAyMTksIDExNCwgMjEwLCAKKyAgICA4MiwgMTAsIDE0NSwgMiwgMTEyLCAyMTAsIDc2LCAxMCwgMTQ1LCAyLCAxMjAsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDEyNiwgCisgICAgMjEwLCA3NiwgMTAsIDE0NSwgMiwgMTI2LCAyMTAsIDc3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIAorICAgIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIxMCwgNzYsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCAKKyAgICA5MywgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIxMCwgODMsIDI0LCAyMzYsIDcyLCA5MywgMjIxLCAxNjQsIDEwLCAxNDUsIDIsIAorICAgIDExMiwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjQ3LCAyNTUsIDEwLCAxNDUsIDIsIDEyNiwgMjQ3LCAyNTUsIDEwLCAKKyAgICAxNDUsIDIsIDEyNiwgMjQ4LCAwLCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDI0NywgMjU1LCAxMCwgCisgICAgMTQ1LCAyLCAyMzcsIDYxLCAyNDcsIDI1NSwgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MywgCisgICAgMTAsIDE0NSwgMiwgMTI2LCAyMDMsIDczLCAyMzYsIDI0MiwgMjM4LCA5MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgCisgICAgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIAorICAgIDE3OCwgMTAsIDE0NSwgMiwgMjM2LCAyMjksIDIwMywgNzMsIDIzNiwgMjQyLCAyMjQsIDE4MSwgNjIsIDEwLCAxNDUsIDIsIAorICAgIDIzNiwgMjI5LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI0LCAxODEsIDI1MCwgMTAzLCAxMCwgMTQ1LCAyLCAyMDksIDEwNiwgCisgICAgMjAzLCA3MywgMjM2LCAyNDIsIDI1MCwgMTc3LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIAorICAgIDIyOCwgMTI2LCAxMCwgMTQ1LCAyLCAyMTAsIDEzNiwgMjAzLCA3MywgMjM2LCAyNDIsIDIyOCwgMTI4LCA2MiwgMTAsIDE0NSwgCisgICAgMiwgMjEwLCAxMzYsIDIwMywgNzMsIDIzNiwgMjQyLCAyMjgsIDEyOCwgMjUwLCAxMDMsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAKKyAgICAyMDMsIDczLCAyMzYsIDI0MiwgMjAzLCAxODUsIDEwLCAxNDUsIDIsIDIzOCwgMjMyLCAyMDMsIDczLCAyMzYsIDI0MiwgCisgICAgMjAzLCAxODQsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDIsIDEwLCAxNDUsIDIsIAorICAgIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDEsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAKKyAgICAyMzYsIDI0MiwgMjI4LCAxNDAsIDEwLCAxNDUsIDIsIDIxOSwgMTE0LCAyMDMsIDczLCAyMzYsIDI0MiwgMjI4LCAxNDMsIAorICAgIDYyLCAxMCwgMTQ1LCAyLCAxMjAsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTI2LCAyNTAsIDE4MiwgMjA2LCAKKyAgICAxNTUsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNTAsIDE4MiwgMjA2LCAxNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDI1MCwgCisgICAgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDI1MCwgMTgyLCAyMDYsIDE1NSwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAyNDksIDg2LCAxMCwgMTQ1LCAyLCAxMjAsIDI0OSwgODYsIDEwLCAxNDUsIDIsIDEyNiwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgCisgICAgMjM2LCAyMjksIDI0OSwgODYsIDEwLCAxNDUsIDIsIDIzNiwgMjI5LCAyNDksIDg3LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjM3LCA2MSwgMjQ5LCA4NiwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMjQ5LCA4NywgMjAzLCA3MywgMTksIDEwLCAxNDUsIAorICAgIDIsIDIxOSwgMTI3LCAxMCwgMTQ1LCAyLCAyMTksIDEyOCwgMTAsIDE0NSwgMiwgMTEyLCAyMzgsIDg5LCAxMCwgMTQ1LCAyLCAKKyAgICAxMjAsIDIzOCwgODksIDEwLCAxNDUsIDIsIDExMiwgMjA2LCA3NSwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDEyMCwgMjA2LCAKKyAgICA3MiwgMjQwLCAyNTUsIDEwLCAxNDUsIDIsIDIzNywgNjEsIDIwOSwgOTUsIDI0MCwgMjU1LCAxMCwgMTQ1LCAyLCAxMTIsIAorICAgIDIwNiwgNzUsIDIwMywgNzMsIDIzNiwgMjQyLCA2MiwgMTAsIDE0NSwgMiwgMTIwLCAyMDYsIDcyLCAyMDMsIDczLCAyMzYsIAorICAgIDI0MiwgNjIsIDEwLCAxNDUsIDIsIDExMiwgMjM4LCAyMjgsIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCAxMTIsIDIxNCwgODgsIAorICAgIDI1MCwgMTgxLCAxMCwgMTQ1LCAyLCA0MCwgMjUwLCAxNjgsIDExMiwgMjA5LCA5NiwgMTAsIDE0NSwgMiwgNDAsIDI1MCwgCisgICAgMTY4LCAxMTIsIDIxNCwgODcsIDEwLCAxNDUsIDIsIDExMiwgMjE0LCA4OCwgMjM1LCAyMiwgMTAsIDE0NSwgMiwgMTEyLCAKKyAgICAxNjcsIDIzNSwgMjIsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAxMTIsIDIwNiwgNzQsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAKKyAgICAxMjAsIDIwNiwgNzEsIDEwLCAxNDUsIDIsIDIzOCwgMjA3LCAyMzYsIDIzNSwgMTAsIDE0NSwgMiwgMjM4LCAyMDcsIDIzNywgCisgICAgMTA0LCAxMCwgMTQ1LCAyLCAyMzYsIDIyOSwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjM3LCA2MSwgMTA4LCAKKyAgICAyMDMsIDczLCAxOSwgMTAsIDE0NSwgMiwgMjA5LCAxMDYsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAxNDUsIDIsIDIxMCwgCisgICAgMTM2LCAxMDgsIDIwMywgNzMsIDE5LCAxMCwgMTQ1LCAyLCAyMzgsIDIzMiwgMTA4LCAyMDMsIDczLCAxOSwgMTAsIDE0NSwgCisgICAgMiwgMjE5LCAxMTQsIDEwOCwgMjAzLCA3MywgMTksIDEwLCAyMTQsIDIxMiwgMiwgNDAsIDI1MCwgMTY4LCAyMDAsIDIzOCwgCisgICAgMjQwLCAyMzksIDEwLCAyMTQsIDIxMiwgMiwgODMsIDI0NiwgNzksIDEwLCAyMTQsIDIxMiwgMiwgMjQxLCA3MSwgMjQ2LCAKKyAgICA3OSwgMTAsIDIxNCwgMjEyLCAyLCAyNDEsIDcxLCAyMDUsIDk0LCAxMCwgMjE0LCAyMTIsIDIsIDI0MSwgNzEsIDIxNCwgOTMsIAorICAgIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjE4LCA5MCwgMjA2LCAxNTUsIDEwLCAyLCAyNTIsIDkwLCAyNCwgMjA5LCAyMTgsIDEwLCAKKyAgICAyLCAyNTEsIDIzNiwgMjQsIDIzOCwgOTEsIDEwLCAyLCAyNDksIDExOSwgMjQsIDI0MSwgMCwgMjA2LCAxNTUsIDEwLCAyLCAKKyAgICAyNDksIDEwNiwgMjQsIDI1MiwgNiwgMTAsIDIsIDI0OSwgMTA2LCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyNDksIDEwNiwgMjQsIAorICAgIDE5OSwgMTE0LCAxMCwgMiwgMjQ4LCAzNywgMTE5LCAyNDgsIDM3LCAyNCwgMjIwLCAxNjAsIDEwLCAyLCAyNDIsIDU5LCAyNCwgCisgICAgMjA3LCAwLCAxMCwgMiwgMjQyLCA0OSwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjQxLCAzMiwgMjQsIDIyOCwgMTUzLCAxMCwgCisgICAgMiwgMjQxLCAzMiwgMjQsIDEwOCwgMTA4LCA2NiwgMTAsIDIsIDI0MSwgMzAsIDI0LCAyMDQsIDM2LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyNTEsIDUzLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjUwLCAxODIsIDI1MCwgMTU2LCAyMjUsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyNDEsIDE5LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMzksIDEyNSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM4LCAxMDksIDEwLCAyLCAyMzksIDEzMiwgMjQsIAorICAgIDIzNiwgODksIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIzNSwgMTYxLCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMzUsIDE0NCwgCisgICAgMjM1LCAyOCwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjM1LCAxMzUsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDE0NCwgMTAsIDIsIAorICAgIDIzOSwgMTMyLCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyNywgMzgsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjUsIDIzOSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCAyNDAsIDkzLCAyMjcsIDM4LCAxMCwgMiwgMjM5LCAKKyAgICAxMzIsIDI0LCAyMjUsIDE0NSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgCisgICAgMjI1LCA5MiwgMjQsIDIyNSwgMjQ1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjQsIDMxLCA5MywgMjM1LCAxMzUsIDEwLCAyLCAKKyAgICAyMzksIDEzMiwgMjQsIDIyMiwgMTM1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM5LCAxMzIsIAorICAgIDI0LCAyMjEsIDIxMSwgMTAsIDIsIDIzOSwgMTMyLCAyNCwgMjE5LCAxNTAsIDEwLCAyLCAyMzksIDEzMiwgMjQsIDIxNSwgCisgICAgMjA0LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMTAsIDY1LCAxMCwgMiwgMjM5LCAxMzIsIDI0LCAyMDksIDE4MywgMjM1LCAKKyAgICAyOCwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMjUsIDI0NSwgMTAsIDIsIDIzOSwgMjksIDI0LCAyMTYsIDEzNSwgMTAsIDIsIAorICAgIDIzOCwgMTEwLCAyMDAsIDE5NSwgMTAsIDIsIDIzOCwgOTIsIDI0MiwgMjI4LCAyMzgsIDkxLCAxMCwgMiwgMjM4LCAxMSwgCisgICAgMjEwLCA0NywgMjQsIDI1MCwgMTgxLCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIzNCwgNzUsIDEwLCAyLCAyMzgsIAorICAgIDExLCAyMTAsIDQ3LCAyNCwgMjI4LCAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMTk0LCAxMCwgCisgICAgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIyNSwgOTMsIDEwLCAyLCAyMzgsIDExLCAyMTAsIDQ3LCAyNCwgMjIyLCA3NiwgCisgICAgMTAsIDIsIDIzOCwgMTEsIDIxMCwgNDcsIDI0LCAyMjIsIDI4LCAxMCwgMiwgMjM4LCAxMSwgMjEwLCA0NywgMjQsIDIwOCwgCisgICAgMjQsIDEwLCAyLCAyMzgsIDExLCAyNCwgMjA4LCAyNCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyNDksIDEwNSwgMTAsIDIsIAorICAgIDIzNiwgODgsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzOSwgMTMyLCAyNCwgMjI4LCAKKyAgICAxNTQsIDIzNSwgMjgsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM5LCAxMzIsIDI0LCAyMjcsIDM4LCAxMCwgMiwgMjM2LCA4OCwgCisgICAgMjQsIDIzOCwgMTEyLCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIzNiwgODksIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgCisgICAgOTMsIDI0MSwgNzYsIDEwLCAyLCAyMzYsIDg4LCAyNCwgMjM2LCA1MCwgOTMsIDIyMCwgMzQsIDEwLCAyLCAyMzYsIDg4LCAKKyAgICAyNCwgMjM0LCAyMzYsIDkzLCA2MiwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDI0MCwgOTMsIDIyNywgMzgsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI1LCA5MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjUsIDkyLCAyNCwgMjI1LCAyNDUsIDEwLCAyLCAKKyAgICAyMzYsIDg4LCAyNCwgMjI0LCAzMCwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMjAsIDI1MCwgMTAsIDIsIDIzNiwgODgsIDI0LCAKKyAgICAyMjAsIDM0LCAxMCwgMiwgMjM2LCA4OCwgMjQsIDIyMCwgMzUsIDkzLCAyMzksIDI4LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDIyMCwgMzUsIDkzLCAyMzUsIDE2MSwgMTAsIDIsIDIzNiwgODgsIDI0LCAyMTAsIDI1LCAxMCwgMiwgMjM2LCA4OCwgMjQsIAorICAgIDE5OSwgMTksIDEwLCAyLCAyMzYsIDgzLCAyMTIsIDIyOCwgMjE5LCAxMDksIDI0MSwgMTU0LCAxMCwgMiwgMjM1LCAyNDMsIAorICAgIDI0LCA2NiwgMTAsIDIsIDIzNSwgMTM2LCAyNCwgMjM1LCAxMzYsIDI0MiwgMjI4LCAyMzUsIDEzNSwgMTAsIDIsIDIzNSwgCisgICAgNDksIDI0LCAyMjgsIDE1NCwgMjM1LCAyOCwgMTAsIDIsIDIzNSwgNDAsIDkzLCAyMzUsIDEzNiwgMjQsIDIwNywgMCwgMTAsIAorICAgIDIsIDIzNCwgMjM2LCAyMDYsIDE1NiwgMjM1LCAyOCwgMTAsIDIsIDIzNCwgNzYsIDI0LCAyNTAsIDE4MiwgMTE5LCAyMzQsIAorICAgIDc2LCAyNCwgMjUwLCAxODEsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDI0OCwgMzYsIDEwLCAyLCAyMjcsIDEwOCwgMjQsIDE2MSwgCisgICAgMTAsIDIsIDIyNywgMTA4LCAyNCwgMTA4LCAxMDgsIDY2LCAxMCwgMiwgMjI3LCAxMDgsIDI0LCAyMDMsIDIxNCwgMTAsIDIsIAorICAgIDIyNSwgMTU4LCAyNCwgMTk5LCA0LCAxMTksIDE5OSwgMywgMTAsIDIsIDIyNSwgMTQ2LCAxMCwgMiwgMjI1LCAxNDQsIDEwLCAKKyAgICAyLCAyMjUsIDE0MywgMTAsIDIsIDIyNSwgMTQyLCAxMCwgMiwgMjI1LCAxNDEsIDEwLCAyLCAyMjUsIDE0MCwgMTAsIDIsIAorICAgIDIyNSwgMTM5LCAxMCwgMiwgMjI1LCAxMzgsIDExOSwgMjI1LCAxMzgsIDIzNSwgMjgsIDEwLCAyLCAyMjUsIDEzNywgMTAsIAorICAgIDIsIDIyNSwgMTM2LCAxMTksIDIyNSwgMTM1LCAxMCwgMiwgMjI1LCAxMzQsIDEwLCAyLCAyMjUsIDEzMywgMTAsIDIsIDIyNSwgCisgICAgMTMyLCAxMCwgMiwgMjI1LCAxMzEsIDEwLCAyLCAyMjUsIDEzMCwgMTAsIDIsIDIyNSwgMTI5LCAxMCwgMiwgMjI1LCAxMjgsIAorICAgIDEwLCAyLCAyMjUsIDEyNywgMTAsIDIsIDIyNSwgMTI2LCAxMCwgMiwgMjI1LCAxMjUsIDEwLCAyLCAyMjUsIDEyNCwgMTAsIAorICAgIDIsIDIyNSwgMTIzLCAxMCwgMiwgMjI1LCAxMjIsIDEwLCAyLCAyMjUsIDEyMSwgMTAsIDIsIDIyNSwgMTIwLCAxMCwgMiwgCisgICAgMjI1LCAxMTksIDEwLCAyLCAyMjUsIDExOCwgMTAsIDIsIDIyNSwgMTE3LCAxMCwgMiwgMjI1LCAxMTUsIDEwLCAyLCAyMjUsIAorICAgIDExNiwgMjQsIDIzNSwgNTAsIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIyOCwgMTUzLCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDExNiwgMjQsIDIxNiwgMTM2LCA5MywgMjE2LCAxMzYsIDkzLCAKKyAgICAyMjQsIDM5LCAxMCwgMiwgMjI1LCAxMTYsIDI0LCAyMDQsIDQ4LCA5MywgMjQ5LCAxMzYsIDEwLCAyLCAyMjUsIDExNCwgMTAsIAorICAgIDIsIDIyNSwgMTEzLCAxMCwgMiwgMjI1LCAxMTIsIDEwLCAyLCAyMjUsIDExMSwgMTAsIDIsIDIyNSwgMTEwLCAxMCwgMiwgCisgICAgMjI1LCAxMDksIDEwLCAyLCAyMjUsIDEwOCwgMTAsIDIsIDIyNSwgMTA3LCAxMCwgMiwgMjI1LCAxMDYsIDEwLCAyLCAyMjUsIAorICAgIDEwNSwgMTAsIDIsIDIyNSwgMTAzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgCisgICAgMjQ5LCAxMTgsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIzOSwgMTI0LCAyMzUsIDI5LCAyMzUsIDI4LCAxMCwgMiwgMjI1LCAKKyAgICAxMDQsIDI0LCAyMjYsIDEzLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAxOTQsIDEwLCAyLCAyMjUsIDEwNCwgMjQsIDIwNiwgCisgICAgMjMyLCAxMCwgMiwgMjI1LCAxMDQsIDI0LCAyMDYsIDIwMSwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjA0LCA0NywgMTAsIDIsIAorICAgIDIyNSwgMTA0LCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTA0LCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDEwMiwgCisgICAgMTAsIDIsIDIyNSwgMTAwLCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMzksIDEzNSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjM2LCAKKyAgICA4OSwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjI4LCAxNTMsIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIyOCwgMTU0LCAyMzUsIAorICAgIDI4LCAxMCwgMiwgMjI1LCAxMDEsIDI0LCAyMTksIDE1MCwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjE2LCAxMzYsIDkzLCAKKyAgICAyMTYsIDEzNiwgOTMsIDIyNCwgMzksIDEwLCAyLCAyMjUsIDEwMSwgMjQsIDIxMCwgNTAsIDkzLCAyMjYsIDE2MywgMTAsIDIsIAorICAgIDIyNSwgMTAxLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIyNSwgMTAxLCAyNCwgMjAzLCAyMDEsIDEwLCAyLCAyMjUsIDk4LCAxMCwgCisgICAgMiwgMjI1LCA5NywgMTAsIDIsIDIyNCwgNDEsIDIzNSwgMjksIDI0LCAyNTAsIDE4MSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyNDAsIDI1NSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMzQsIDIxNiwgMTAsIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNSwgMTAsIAorICAgIDIsIDIyNCwgNDEsIDI0LCAyMTYsIDEzNiwgOTMsIDIxNiwgMTM2LCA5MywgMjI0LCAzOSwgMTAsIDIsIDIyNCwgNDEsIDI0LCAKKyAgICAyMDcsIDAsIDEwLCAyLCAyMjEsIDIxMiwgOTMsIDE5OSwgMTEzLCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIAorICAgIDI0LCAyMzYsIDg5LCAxMCwgMiwgMjIwLCAyNTEsIDExOSwgMjIwLCAyNTEsIDI0LCAyMjcsIDc2LCAxMCwgMiwgMjE5LCAKKyAgICAxMTYsIDI0LCAyNDEsIDMyLCAyMzUsIDI4LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMzUsIDEzNSwgMTAsIDIsIDIxOSwgCisgICAgMTE2LCAyNCwgMjM1LCAzMiwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjM0LCA3NSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgMjI2LCAKKyAgICAyMzQsIDEwLCAyLCAyMTksIDExNiwgMjQsIDIyNSwgMTQxLCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMjIsIDEzNSwgMTAsIDIsIAorICAgIDIxOSwgMTE2LCAyNCwgMjE2LCAxMzYsIDkzLCAyMTYsIDEzNSwgMTAsIDIsIDIxOSwgMTE2LCAyNCwgNjYsIDEwLCAyLCAKKyAgICAyMTksIDExNiwgMjQsIDEwOCwgOTMsIDY2LCAxMCwgMiwgMjE5LCAxMTYsIDI0LCAyMDMsIDIwMSwgMTAsIDIsIDIxMiwgNTEsIAorICAgIDIzNSwgMjksIDI0LCAxNDQsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjM4LCAxNzksIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjEwLCAKKyAgICA2NiwgMjUwLCAxNTYsIDIyNSwgMjgsIDEwLCAyLCAyMTIsIDUxLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjEwLCAxMTEsIDIwNiwgCisgICAgMTU1LCAxMCwgMiwgMjEwLCA2NiwgMTE5LCAyMTAsIDY1LCAxMCwgMiwgMjEwLCA2NiwgOTMsIDIzMywgOTIsIDEwLCAyLCAKKyAgICAyMTAsIDY2LCA5MywgMjIwLCAxMzcsIDEwLCAyLCAyMTAsIDY2LCA5MywgMjEyLCAwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAKKyAgICAyMzksIDEzMiwgMjQsIDIxOSwgMTUwLCAxMCwgMiwgMjA5LCAyMTksIDkzLCAyMzksIDI5LCAyNCwgMjUxLCA4NSwgMTAsIDIsIAorICAgIDIwOSwgMTgzLCAyNCwgMjA3LCAwLCAxMCwgMiwgMjA3LCAxLCA5MywgMjEyLCA1MCwgMTAsIDIsIDIwNCwgMjA0LCAyNCwgCisgICAgMjM2LCA1OCwgMjA2LCAxNTUsIDEwLCAyLCAyMDQsIDIwNCwgMjQsIDEyNiwgMjQwLCAyNTUsIDEwLCAyLCAyMDMsIDIxMywgCisgICAgMjI4LCA0OSwgMTAsIDIsIDIwMywgMjEzLCAyNCwgMjA0LCAzNiwgMTAsIDIsIDIwMywgMjA0LCAyNCwgMjQxLCAyNTMsIDEwLCAKKyAgICAyLCAyMDMsIDIwNCwgMjQsIDIyNSwgOTksIDEwLCAyLCAyMDMsIDIwNCwgMjQsIDIyNCwgMzksIDEwLCAyLCAxOTksIDExMywgCisgICAgMTAsIDIsIDE5OSwgNCwgMTE5LCAxOTksIDQsIDkzLCAyMTIsIDAsIDEwLCAyLCAxOTksIDIsIDI0LCAxMjYsIDI0MSwgMCwgCisgICAgMjA2LCAxNTUsIDE0LCA3LCAyNTUsIDEzMSwgMTQsIDcsIDI1NSwgMTMwLCAxNCwgNywgMjU1LCAxMjksIDE0LCA3LCAyNTUsIAorICAgIDEyOCwgMTQsIDcsIDI1NSwgMTI3LCAxNCwgNywgMjU1LCAxMjYsIDE0LCA3LCAyNTUsIDEyNSwgMTQsIDcsIDI1NSwgMTI0LCAKKyAgICAxNCwgNywgMjU1LCAxMjMsIDE0LCA3LCAyNTUsIDEyMiwgMTQsIDcsIDI1NSwgMTIxLCAxNCwgNywgMjU1LCAxMjAsIDE0LCAKKyAgICA3LCAyNTUsIDExOSwgMTQsIDcsIDI1NSwgMTE3LCAxNCwgNywgMjU1LCAxMTYsIDE0LCA3LCAyNTUsIDExNSwgMTQsIDcsIAorICAgIDI1NSwgMTE0LCAxNCwgNywgMjU1LCAxMTMsIDE0LCA3LCAyNTUsIDExMiwgMTQsIDcsIDI1NSwgMTExLCAxNCwgNywgMjU1LCAKKyAgICAxMTAsIDE0LCA3LCAyNTUsIDEwOSwgMTQsIDcsIDI1NSwgMTA4LCAxNCwgNywgMjU1LCAxMDcsIDE0LCA3LCAyNTUsIDEwNiwgCisgICAgMTQsIDcsIDI1NSwgMTA1LCAxNCwgNywgMjU1LCAxMDQsIDE0LCA3LCAyNTUsIDEwMywgMTQsIDcsIDI1NSwgMTAyLCAxNCwgCisgICAgNywgMjU1LCAxMDEsIDE0LCA3LCAyNTUsIDEwMCwgMTQsIDcsIDI1NSwgOTgsIDE0LCA3LCAyNTUsIDk3LCAxNCwgNywgMjU1LCAKKyAgICA5NSwgMTQsIDcsIDI1NSwgOTQsIDE0LCA3LCAyNTUsIDkzLCAxNCwgNywgMjU1LCA5MiwgMTQsIDcsIDI1NSwgOTEsIDE0LCAKKyAgICA3LCAyNTUsIDkwLCAxNCwgNywgMjU1LCA4OSwgMTQsIDcsIDI1NSwgODgsIDE0LCA3LCAyNTUsIDg3LCAxNCwgNywgMjU1LCAKKyAgICA4NiwgMTQsIDcsIDI1NSwgODUsIDE0LCA3LCAyNTUsIDg0LCAxNCwgNywgMjU1LCA4MiwgMTQsIDcsIDI1NSwgODEsIDE0LCAKKyAgICA3LCAyNTUsIDgwLCAxNCwgNywgMjU1LCA3OCwgMTQsIDcsIDI1NSwgNzcsIDE0LCA3LCAyNTUsIDc2LCAxNCwgNywgMjU1LCAKKyAgICA3NSwgMTQsIDcsIDI1NSwgNzQsIDE0LCA3LCAyNTUsIDczLCAxNCwgNywgMjU1LCA3MiwgMTQsIDcsIDI1NSwgNzEsIDE0LCAKKyAgICA3LCAyNTUsIDY4LCAxNCwgNywgMjU1LCA2NywgMTQsIDcsIDI1NSwgNjYsIDE0LCA3LCAyNTUsIDY1LCAxNCwgNywgMjU1LCAKKyAgICA2NCwgMTQsIDcsIDI1NSwgNjMsIDE0LCA3LCAyNTUsIDYyLCAxNCwgNywgMjU1LCA2MSwgMTQsIDcsIDI1NSwgNjAsIDE0LCAKKyAgICA3LCAyNTUsIDU5LCAxNCwgNywgMjU1LCA1OCwgMTQsIDcsIDI1NSwgNTcsIDE0LCA3LCAyNTUsIDU2LCAxNCwgNywgMjU1LCAKKyAgICA1NSwgMTQsIDcsIDI1NSwgNTQsIDE0LCA3LCAyNTUsIDUzLCAxNCwgNywgMjU1LCA1MiwgMTQsIDcsIDI1NSwgNTEsIDE0LCAKKyAgICA3LCAyNTUsIDUwLCAxNCwgNywgMjU1LCA0OSwgMTQsIDcsIDI1NSwgNDUsIDE0LCA3LCAyNTUsIDQ0LCAxNCwgNywgMjU1LCAKKyAgICA0MywgMTQsIDcsIDI1NSwgNDIsIDE0LCA3LCAyNTAsIDEwMSwgMTQsIDcsIDI1MCwgOTksIDE0LCA3LCAyNTAsIDk3LCAxNCwgCisgICAgNywgMjUwLCA5NSwgMTQsIDcsIDI1MCwgOTMsIDE0LCA3LCAyNTAsIDkyLCAxNCwgNywgMjUwLCA5MCwgMTQsIDcsIDI1MCwgCisgICAgODgsIDE0LCA3LCAyNTAsIDg2LCAxNCwgNywgMjUwLCA4NCwgMTQsIDcsIDI0NywgMjE5LCAxNCwgNywgMjQ3LCAyMTgsIDE0LCAKKyAgICA3LCAyNDcsIDIxNywgMTQsIDcsIDI0NywgMjE2LCAxNCwgNywgMjQ3LCAyMTUsIDE0LCA3LCAyNDcsIDIxNCwgMTQsIDcsIAorICAgIDI0NywgMjEzLCAxNCwgNywgMjQ3LCAyMTIsIDE0LCA3LCAyNDcsIDIxMSwgMTQsIDcsIDI0NywgMjEwLCAxNCwgNywgMjQ3LCAKKyAgICAyMDksIDE0LCA3LCAyNDcsIDIwOCwgMTQsIDcsIDI0NywgMjA3LCAxNCwgNywgMjQ3LCAyMDYsIDE0LCA3LCAyNDcsIDIwNSwgCisgICAgMTQsIDcsIDI0NywgMjA0LCAxNCwgNywgMjQ3LCAyMDMsIDE0LCA3LCAyNDcsIDIwMiwgMTQsIDcsIDI0NywgMjAxLCAxNCwgCisgICAgNywgMjQ3LCAyMDAsIDE0LCA3LCAyNDcsIDE5OSwgMTQsIDcsIDI0NywgMTk4LCAxNCwgNywgMjQ3LCAxOTcsIDE0LCA3LCAKKyAgICAyNDcsIDE5NiwgMTQsIDcsIDI0NywgMTk1LCAxNCwgNywgMjQ3LCAxOTQsIDE0LCA3LCAyNDcsIDE5MywgMTQsIDcsIDI0NywgCisgICAgMTkyLCAxNCwgNywgMjQyLCAxNTIsIDE0LCA3LCAyNDIsIDE1MSwgMTQsIDcsIDI0MiwgMTUwLCAxNCwgNywgMjQyLCAxNDksIAorICAgIDE0LCA3LCAyNDIsIDE0OCwgMTQsIDcsIDI0MiwgMTQ3LCAxNCwgNywgMjQyLCAxNDYsIDE0LCA3LCAyNDIsIDE0NSwgMTQsIAorICAgIDcsIDI0MiwgMTQ0LCAxNCwgNywgMjQyLCAxNDMsIDE0LCA3LCAyNDIsIDE0MiwgMTQsIDcsIDI0MiwgMTQxLCAxNCwgNywgCisgICAgMjQyLCAxNDAsIDE0LCA3LCAyNDIsIDEzOSwgMTQsIDcsIDI0MiwgMTM4LCAxNCwgNywgMjQyLCAxMzcsIDE0LCA3LCAyNDIsIAorICAgIDEzNiwgMTQsIDcsIDI0MiwgMTM1LCAxNCwgNywgMjQyLCAxMzQsIDE0LCA3LCAyNDIsIDEzMywgMTQsIDcsIDI0MiwgMTMyLCAKKyAgICAxNCwgNywgMjQyLCAxMzEsIDE0LCA3LCAyNDIsIDEzMCwgMTQsIDcsIDI0MiwgMTI5LCAxNCwgNywgMjQyLCAxMjgsIDE0LCAKKyAgICA3LCAyNDIsIDEyNywgMTQsIDcsIDI0MiwgMTI2LCAxNCwgNywgMjQyLCAxMjUsIDE0LCA3LCAyNDIsIDEyNCwgMTQsIDcsIAorICAgIDI0MiwgMTIzLCAxNCwgNywgMjQyLCAxMjIsIDE0LCA3LCAyNDIsIDEyMSwgMTQsIDcsIDI0MiwgMTIwLCAxNCwgNywgMjQyLCAKKyAgICAxMTksIDE0LCA3LCAyNDIsIDExOCwgMTQsIDcsIDI0MiwgMTE3LCAxNCwgNywgMjQyLCAxMTYsIDE0LCA3LCAyNDIsIDExNSwgCisgICAgMTQsIDcsIDI0MiwgMTE0LCAxNCwgNywgMjQyLCAxMTMsIDE0LCA3LCAyNDIsIDExMiwgMTQsIDcsIDI0MiwgMTExLCAxNCwgCisgICAgNywgMjQyLCAxMTAsIDE0LCA3LCAyNDIsIDEwOSwgMTQsIDcsIDI0MiwgMTA4LCAxNCwgNywgMjQyLCAxMDcsIDE0LCA3LCAKKyAgICAyNDIsIDEwNiwgMTQsIDcsIDI0MiwgMTA1LCAxNCwgNywgMjQyLCAxMDQsIDE0LCA3LCAyNDIsIDEwMywgMTQsIDcsIDI0MiwgCisgICAgMTAyLCAxNCwgNywgMjQyLCAxMDEsIDE0LCA3LCAyNDIsIDEwMCwgMTQsIDcsIDI0MiwgOTksIDE0LCA3LCAyNDIsIDk4LCAKKyAgICAxNCwgNywgMjQyLCA5NywgMTQsIDcsIDI0MiwgOTYsIDE0LCA3LCAyNDIsIDk1LCAxNCwgNywgMjQyLCA5NCwgMTQsIDcsIAorICAgIDI0MiwgOTMsIDE0LCA3LCAyNDIsIDkyLCAxNCwgNywgMjQyLCA5MSwgMTQsIDcsIDI0MiwgOTAsIDE0LCA3LCAyNDIsIDg5LCAKKyAgICAxNCwgNywgMjQyLCA4OCwgMTQsIDcsIDI0MiwgODcsIDE0LCA3LCAyNDIsIDg2LCAxNCwgNywgMjQyLCA4NSwgMTQsIDcsIAorICAgIDI0MiwgODQsIDE0LCA3LCAyNDIsIDgzLCAxNCwgNywgMjQyLCA4MiwgMTQsIDcsIDI0MiwgODEsIDE0LCA3LCAyNDIsIDgwLCAKKyAgICAxNCwgNywgMjQyLCA3OSwgMTQsIDcsIDI0MiwgNzgsIDE0LCA3LCAyNDIsIDc3LCAxNCwgNywgMjQyLCA3NiwgMTQsIDcsIAorICAgIDI0MiwgNzUsIDE0LCA3LCAyNDIsIDc0LCAxNCwgNywgMjQyLCA3MywgMTQsIDcsIDI0MiwgNzIsIDE0LCA3LCAyNDIsIDcxLCAKKyAgICAxNCwgNywgMjQyLCA3MCwgMTQsIDcsIDI0MiwgNjksIDE0LCA3LCAyNDIsIDY4LCAxNCwgNywgMjQyLCA2NywgMTQsIDcsIAorICAgIDI0MiwgNjYsIDE0LCA3LCAyNDIsIDY1LCAxNCwgNywgMjQyLCA2NCwgMTQsIDcsIDI0MiwgNjMsIDE0LCA3LCAyNDIsIDYyLCAKKyAgICAxNCwgNywgMjQyLCA2MSwgMTQsIDcsIDIzOSwgNzMsIDE0LCA3LCAyMzksIDcyLCAxNCwgNywgMjM5LCA3MSwgMTQsIDcsIAorICAgIDIzOSwgNzAsIDE0LCA3LCAyMzksIDY5LCAxNCwgNywgMjM5LCA2OCwgMTQsIDcsIDIzOSwgNjcsIDE0LCA3LCAyMzksIDY2LCAKKyAgICAxNCwgNywgMjM5LCA2NSwgMTQsIDcsIDIzOSwgNjQsIDE0LCA3LCAyMzksIDYzLCAxNCwgNywgMjM5LCA2MiwgMTQsIDcsIAorICAgIDIzOSwgNjEsIDE0LCA3LCAyMzksIDYwLCAxNCwgNywgMjM5LCA1OSwgMTQsIDcsIDIzOSwgNTgsIDE0LCA3LCAyMzksIDU3LCAKKyAgICAxNCwgNywgMjM5LCA1NiwgMTQsIDcsIDIzOSwgNTUsIDE0LCA3LCAyMzksIDU0LCAxNCwgNywgMjM5LCA1MywgMTQsIDcsIAorICAgIDIzOSwgNTIsIDE0LCA3LCAyMzksIDUxLCAxNCwgNywgMjM5LCA1MCwgMTQsIDcsIDIzOSwgNDksIDE0LCA3LCAyMzksIDQ4LCAKKyAgICAxNCwgNywgMjM5LCA0NywgMTQsIDcsIDIzOSwgNDYsIDE0LCA3LCAyMzksIDQ1LCAxNCwgNywgMjM5LCA0NCwgMTQsIDcsIAorICAgIDIzOSwgNDMsIDE0LCA3LCAyMzksIDQyLCAxNCwgNywgMjM5LCA0MSwgMTQsIDcsIDIzOSwgNDAsIDE0LCA3LCAyMzksIDM5LCAKKyAgICAxNCwgNywgMjM5LCAzOCwgMTQsIDcsIDIzOSwgMzcsIDE0LCA3LCAyMzksIDM2LCAxNCwgNywgMjM5LCAzNSwgMTQsIDcsIAorICAgIDIzOSwgMzQsIDE0LCA3LCAyMzksIDMzLCAxNCwgNywgMjM5LCAzMiwgMTQsIDcsIDIzOSwgMzEsIDE0LCA3LCAyMzksIDMwLCAKKyAgICAxNCwgNywgMjM4LCA0LCAxNCwgNywgMjM4LCAzLCAxNCwgNywgMjM4LCAyLCAxNCwgNywgMjM4LCAxLCAxNCwgNywgMjM4LCAKKyAgICAwLCAxNCwgNywgMjM3LCAyNTUsIDE0LCA3LCAyMzcsIDI1NCwgMTQsIDcsIDIzNywgMjUzLCAxNCwgNywgMjM3LCAyNTIsIAorICAgIDE0LCA3LCAyMzcsIDI1MSwgMTQsIDcsIDIzNywgMjUwLCAxNCwgNywgMjM3LCAyNDksIDE0LCA3LCAyMzcsIDI0OCwgMTQsIAorICAgIDcsIDIzNywgMjQ3LCAxNCwgNywgMjM3LCAyNDYsIDE0LCA3LCAyMzcsIDI0NSwgMTQsIDcsIDIzNywgMjQ0LCAxNCwgNywgCisgICAgMjM3LCAyNDMsIDE0LCA3LCAyMzcsIDI0MiwgMTQsIDcsIDIzNywgMjQxLCAxNCwgNywgMjM3LCAyNDAsIDE0LCA3LCAyMzcsIAorICAgIDIzOSwgMTQsIDcsIDIzNywgMjM4LCAxNCwgNywgMjM3LCAyMzcsIDE0LCA3LCAyMzcsIDIzNiwgMTQsIDcsIDIzNywgMjM1LCAKKyAgICAxNCwgNywgMjM3LCAyMzQsIDE0LCA3LCAyMzcsIDIzMywgMTQsIDcsIDIzNywgMjMyLCAxNCwgNywgMjM3LCAyMzEsIDE0LCAKKyAgICA3LCAyMzcsIDIzMCwgMTQsIDcsIDIzNywgMjI5LCAxNCwgNywgMjM3LCAyMjgsIDE0LCA3LCAyMzcsIDIyNywgMTQsIDcsIAorICAgIDIzNywgMjI2LCAxNCwgNywgMjM3LCAyMjUsIDE0LCA3LCAyMzcsIDIyNCwgMTQsIDcsIDIzNywgMjIzLCAxNCwgNywgMjM3LCAKKyAgICAyMjIsIDE0LCA3LCAyMzcsIDIyMSwgMTQsIDcsIDIzNywgMjIwLCAxNCwgNywgMjM3LCAyMTksIDE0LCA3LCAyMzcsIDIxOCwgCisgICAgMTQsIDcsIDIzNywgMjE3LCAxNCwgNywgMjM3LCAyMTYsIDE0LCA3LCAyMzcsIDIxNSwgMTQsIDcsIDIzNywgMjE0LCAxNCwgCisgICAgNywgMjM3LCAyMTMsIDE0LCA3LCAyMzcsIDIxMiwgMTQsIDcsIDIzNywgMjExLCAxNCwgNywgMjM3LCAyMTAsIDE0LCA3LCAKKyAgICAyMzcsIDIwOSwgMTQsIDcsIDIzNywgMjA4LCAxNCwgNywgMjM3LCAyMDcsIDE0LCA3LCAyMzcsIDIwNiwgMTQsIDcsIDIzNywgCisgICAgMjA1LCAxNCwgNywgMjM3LCAyMDQsIDE0LCA3LCAyMzcsIDIwMywgMTQsIDcsIDIzNywgMjAyLCAxNCwgNywgMjM3LCAyMDEsIAorICAgIDE0LCA3LCAyMzcsIDIwMCwgMTQsIDcsIDIzNywgMTk5LCAxNCwgNywgMjM3LCAxOTgsIDE0LCA3LCAyMzcsIDE5NywgMTQsIAorICAgIDcsIDIzNywgMTk2LCAxNCwgNywgMjM2LCAxNTUsIDE0LCA3LCAyMzYsIDE1NCwgMTQsIDcsIDIzNiwgMTUzLCAxNCwgNywgCisgICAgMjM2LCAxNTIsIDE0LCA3LCAyMzYsIDE1MSwgMTQsIDcsIDIzNiwgMTUwLCAxNCwgNywgMjM2LCAxNDksIDE0LCA3LCAyMzYsIAorICAgIDE0OCwgMTQsIDcsIDIzNiwgMTQ3LCAxNCwgNywgMjM2LCAxNDYsIDE0LCA3LCAyMzYsIDE0NSwgMTQsIDcsIDIzNiwgMTQ0LCAKKyAgICAxNCwgNywgMjM2LCAxNDMsIDE0LCA3LCAyMzYsIDE0MiwgMTQsIDcsIDIzNiwgMTQxLCAxNCwgNywgMjM2LCAxNDAsIDE0LCAKKyAgICA3LCAyMzYsIDEzOSwgMTQsIDcsIDIzNiwgMTM4LCAxNCwgNywgMjM2LCAxMzcsIDE0LCA3LCAyMzYsIDEzNiwgMTQsIDcsIAorICAgIDIzNiwgMTM1LCAxNCwgNywgMjM2LCAxMzQsIDE0LCA3LCAyMzYsIDEzMywgMTQsIDcsIDIzNiwgMTMyLCAxNCwgNywgMjM2LCAKKyAgICAxMzEsIDE0LCA3LCAyMzYsIDEzMCwgMTQsIDcsIDIzNiwgMTI5LCAxNCwgNywgMjM2LCAxMjgsIDE0LCA3LCAyMzYsIDEyNywgCisgICAgMTQsIDcsIDIzNiwgMTI2LCAxNCwgNywgMjM2LCAxMjUsIDE0LCA3LCAyMzYsIDEyNCwgMTQsIDcsIDIzNiwgMTIzLCAxNCwgCisgICAgNywgMjM2LCAxMjIsIDE0LCA3LCAyMzYsIDEyMSwgMTQsIDcsIDIzNiwgMTIwLCAxNCwgNywgMjM2LCAxMTksIDE0LCA3LCAKKyAgICAyMzYsIDExOCwgMTQsIDcsIDIzNiwgMTE3LCAxNCwgNywgMjM2LCAxMTYsIDE0LCA3LCAyMzYsIDExNSwgMTQsIDcsIDIzNiwgCisgICAgMTE0LCAxNCwgNywgMjM2LCAxMTMsIDE0LCA3LCAyMzYsIDExMiwgMTQsIDcsIDIzNiwgMTExLCAxNCwgNywgMjM2LCAxMTAsIAorICAgIDE0LCA3LCAyMzYsIDEwOSwgMTQsIDcsIDIzNiwgMTA4LCAxNCwgNywgMjM2LCAxMDcsIDE0LCA3LCAyMzYsIDEwNiwgMTQsIAorICAgIDcsIDIzNiwgMTA1LCAxNCwgNywgMjM2LCAxMDQsIDE0LCA3LCAyMzYsIDEwMywgMTQsIDcsIDIzNiwgMTAyLCAxNCwgNywgCisgICAgMjM2LCAxMDEsIDE0LCA3LCAyMzYsIDEwMCwgMTQsIDcsIDIzNiwgOTksIDE0LCA3LCAyMzYsIDk4LCAxNCwgNywgMjM2LCAKKyAgICA5NywgMTQsIDcsIDIzNiwgOTYsIDE0LCA3LCAyMzYsIDk1LCAxNCwgNywgMjM2LCA5NCwgMTQsIDcsIDIzNiwgOTMsIDE0LCAKKyAgICA3LCAyMzYsIDkyLCAxNCwgNywgMjM0LCAyNDUsIDE0LCA3LCAyMzQsIDI0NCwgMTQsIDcsIDIzNCwgMjQzLCAxNCwgNywgCisgICAgMjM0LCAyNDIsIDE0LCA3LCAyMzQsIDI0MSwgMTQsIDcsIDIzNCwgMjQwLCAxNCwgNywgMjM0LCAyMzksIDE0LCA3LCAyMzQsIAorICAgIDIzOCwgMTQsIDcsIDIzNCwgMjM3LCAxNCwgNywgMjMzLCAzLCAxNCwgNywgMjMzLCAyLCAxNCwgNywgMjMzLCAxLCAxNCwgNywgCisgICAgMjMzLCAwLCAxNCwgNywgMjMyLCAyNTUsIDE0LCA3LCAyMzIsIDI1NCwgMTQsIDcsIDIzMiwgMjUzLCAxNCwgNywgMjMyLCAKKyAgICAyNTIsIDE0LCA3LCAyMzIsIDI1MSwgMTQsIDcsIDIzMiwgMjUwLCAxNCwgNywgMjMyLCAyNDksIDE0LCA3LCAyMzIsIDI0OCwgCisgICAgMTQsIDcsIDIzMiwgMjQ3LCAxNCwgNywgMjMyLCAyNDYsIDE0LCA3LCAyMzIsIDI0NSwgMTQsIDcsIDIzMiwgMjQ0LCAxNCwgCisgICAgNywgMjMyLCAyNDMsIDE0LCA3LCAyMzIsIDI0MiwgMTQsIDcsIDIzMiwgMjQxLCAxNCwgNywgMjI3LCAxMTcsIDE0LCA3LCAKKyAgICAyMjcsIDExNiwgMTQsIDcsIDIyNywgMTE1LCAxNCwgNywgMjI3LCAxMTQsIDE0LCA3LCAyMjcsIDExMywgMTQsIDcsIDIyNywgCisgICAgMTEyLCAxNCwgNywgMjI3LCAxMTEsIDE0LCA3LCAyMjcsIDExMCwgMTQsIDcsIDIyNSwgMTkwLCAxNCwgNywgMjI1LCAxODksIAorICAgIDE0LCA3LCAyMjUsIDE4OCwgMTQsIDcsIDIyNSwgMTg3LCAxNCwgNywgMjI1LCAxODYsIDE0LCA3LCAyMjUsIDE4NSwgMTQsIAorICAgIDcsIDIyNSwgMTg0LCAxNCwgNywgMjI1LCAxODMsIDE0LCA3LCAyMjUsIDE4MiwgMTQsIDcsIDIyNSwgMTgxLCAxNCwgNywgCisgICAgMjIzLCAyNDEsIDE0LCA3LCAyMjMsIDI0MCwgMTQsIDcsIDIyMywgMjM5LCAxNCwgNywgMjIzLCAyMzcsIDE0LCA3LCAyMjMsIAorICAgIDIzNSwgMTQsIDcsIDIyMywgMjM0LCAxNCwgNywgMjIzLCAyMzIsIDE0LCA3LCAyMjMsIDIzMCwgMTQsIDcsIDIyMywgMjI4LCAKKyAgICAxNCwgNywgMjIzLCAyMjYsIDE0LCA3LCAyMjMsIDIyNCwgMTQsIDcsIDIyMywgMjIyLCAxNCwgNywgMjIzLCAyMjAsIDE0LCAKKyAgICA3LCAyMjMsIDIxOSwgMTQsIDcsIDIyMywgMjE3LCAxNCwgNywgMjIzLCAyMTUsIDE0LCA3LCAyMjMsIDIxNCwgMTQsIDcsIAorICAgIDIyMywgMjEzLCAxNCwgNywgMjIzLCAyMTIsIDE0LCA3LCAyMjMsIDIxMSwgMTQsIDcsIDIyMywgMjEwLCAxNCwgNywgMjIzLCAKKyAgICAyMDksIDE0LCA3LCAyMjMsIDIwOCwgMTQsIDcsIDIyMywgMjA3LCAxNCwgNywgMjIzLCAyMDUsIDE0LCA3LCAyMjMsIDIwMywgCisgICAgMTQsIDcsIDIyMywgMjAxLCAxNCwgNywgMjIzLCAyMDAsIDE0LCA3LCAyMjMsIDE5OCwgMTQsIDcsIDIyMywgMTk3LCAxNCwgCisgICAgNywgMjIzLCAxOTUsIDE0LCA3LCAyMjMsIDE5NCwgMTQsIDcsIDIyMywgMTkyLCAxNCwgNywgMjIzLCAxOTAsIDE0LCA3LCAKKyAgICAyMjMsIDE4OCwgMTQsIDcsIDIyMywgMTg2LCAxNCwgNywgMjIzLCAxODQsIDE0LCA3LCAyMjMsIDE4MywgMTQsIDcsIDIyMywgCisgICAgMTgxLCAxNCwgNywgMjIzLCAxNzksIDE0LCA3LCAyMjMsIDE3OCwgMTQsIDcsIDIyMywgMTc2LCAxNCwgNywgMjIzLCAxNzQsIAorICAgIDE0LCA3LCAyMjMsIDE3MiwgMTQsIDcsIDIyMywgMTcwLCAxNCwgNywgMjIzLCAxNjksIDE0LCA3LCAyMjMsIDE2NywgMTQsIAorICAgIDcsIDIyMywgMTY1LCAxNCwgNywgMjIzLCAxNjMsIDE0LCA3LCAyMjMsIDE2MiwgMTQsIDcsIDIyMywgMTYwLCAxNCwgNywgCisgICAgMjIzLCAxNTgsIDE0LCA3LCAyMjMsIDE1NywgMTQsIDcsIDIyMywgMTU2LCAxNCwgNywgMjIzLCAxNTQsIDE0LCA3LCAyMjMsIAorICAgIDE1MiwgMTQsIDcsIDIyMywgMTUwLCAxNCwgNywgMjIzLCAxNDgsIDE0LCA3LCAyMjMsIDE0NiwgMTQsIDcsIDIyMywgMTQ0LCAKKyAgICAxNCwgNywgMjIzLCAxNDIsIDE0LCA3LCAyMjMsIDE0MSwgMTQsIDcsIDIyMywgMTM5LCAxNCwgNywgMjIzLCAxMzcsIDE0LCAKKyAgICA3LCAyMjMsIDEzNSwgMTQsIDcsIDIyMywgMTMzLCAxNCwgNywgMjIwLCAyMTEsIDE0LCA3LCAyMjAsIDIxMCwgMTQsIDcsIAorICAgIDIyMCwgMjA5LCAxNCwgNywgMjIwLCAyMDgsIDE0LCA3LCAyMjAsIDIwNywgMTQsIDcsIDIyMCwgMjA2LCAxNCwgNywgMjIwLCAKKyAgICAyMDUsIDE0LCA3LCAyMjAsIDIwNCwgMTQsIDcsIDIyMCwgMjAzLCAxNCwgNywgMjIwLCAyMDIsIDE0LCA3LCAyMjAsIDIwMSwgCisgICAgMTQsIDcsIDIyMCwgMjAwLCAxNCwgNywgMjIwLCAxOTksIDE0LCA3LCAyMjAsIDE5OCwgMTQsIDcsIDIyMCwgMTk3LCAxNCwgCisgICAgNywgMjIwLCAxOTYsIDE0LCA3LCAyMjAsIDE5NSwgMTQsIDcsIDIyMCwgMTk0LCAxNCwgNywgMjIwLCAxOTMsIDE0LCA3LCAKKyAgICAyMjAsIDE5MiwgMTQsIDcsIDIyMCwgMTkxLCAxNCwgNywgMjIwLCAxOTAsIDE0LCA3LCAyMjAsIDE4OSwgMTQsIDcsIDIyMCwgCisgICAgMTg4LCAxNCwgNywgMjIwLCAxODcsIDE0LCA3LCAyMjAsIDE4NiwgMTQsIDcsIDIyMCwgMTg1LCAxNCwgNywgMjIwLCAxODQsIAorICAgIDE0LCA3LCAyMjAsIDE4MywgMTQsIDcsIDIyMCwgMTgyLCAxNCwgNywgMjIwLCAxODEsIDE0LCA3LCAyMjAsIDE4MCwgMTQsIAorICAgIDcsIDIyMCwgMTc5LCAxNCwgNywgMjIwLCAxNzgsIDE0LCA3LCAyMjAsIDE3NywgMTQsIDcsIDIyMCwgMTc2LCAxNCwgNywgCisgICAgMjIwLCAxNzUsIDE0LCA3LCAyMjAsIDE3NCwgMTQsIDcsIDIyMCwgMTczLCAxNCwgNywgMjIwLCAxNzIsIDE0LCA3LCAyMjAsIAorICAgIDE3MSwgMTQsIDcsIDIyMCwgMTcwLCAxNCwgNywgMjIwLCAxNjksIDE0LCA3LCAyMjAsIDE2OCwgMTQsIDcsIDIyMCwgMTY3LCAKKyAgICAxNCwgNywgMjIwLCAxNjYsIDE0LCA3LCAyMjAsIDE2NSwgMTQsIDcsIDIyMCwgMTY0LCAxNCwgNywgMjIwLCAxNjMsIDE0LCAKKyAgICA3LCAyMTksIDQ2LCAxNCwgNywgMjE5LCA0NSwgMTQsIDcsIDIxOSwgNDQsIDE0LCA3LCAyMTksIDQzLCAxNCwgNywgMjE5LCAKKyAgICA0MiwgMTQsIDcsIDIxOSwgNDEsIDE0LCA3LCAyMTksIDQwLCAxNCwgNywgMjE5LCAzOSwgMTQsIDcsIDIxOSwgMzgsIDE0LCAKKyAgICA3LCAyMTksIDM3LCAxNCwgNywgMjE5LCAzNiwgMTQsIDcsIDIxOSwgMzUsIDE0LCA3LCAyMTksIDM0LCAxNCwgNywgMjE5LCAKKyAgICAzMywgMTQsIDcsIDIxOSwgMzIsIDE0LCA3LCAyMTksIDMxLCAxNCwgNywgMjE5LCAzMCwgMTQsIDcsIDIxOSwgMjksIDE0LCAKKyAgICA3LCAyMTksIDI4LCAxNCwgNywgMjE5LCAyNywgMTQsIDcsIDIxOSwgMjYsIDE0LCA3LCAyMTksIDI1LCAxNCwgNywgMjE4LCAKKyAgICAxMzIsIDE0LCA3LCAyMTgsIDEzMSwgMTQsIDcsIDIxOCwgMTMwLCAxNCwgNywgMjE4LCAxMjksIDE0LCA3LCAyMTgsIDEyOCwgCisgICAgMTQsIDcsIDIxOCwgMTI3LCAxNCwgNywgMjE4LCAxMjYsIDE0LCA3LCAyMTgsIDEyNSwgMTQsIDcsIDIxOCwgMTI0LCAxNCwgCisgICAgNywgMjE4LCAxMjMsIDE0LCA3LCAyMTgsIDEyMiwgMTQsIDcsIDIxOCwgMTIxLCAxNCwgNywgMjE4LCAxMjAsIDE0LCA3LCAKKyAgICAyMTgsIDExOSwgMTQsIDcsIDIxOCwgMTE4LCAxNCwgNywgMjE4LCAxMTcsIDE0LCA3LCAyMTgsIDExNiwgMTQsIDcsIDIxOCwgCisgICAgMTE1LCAxNCwgNywgMjE4LCAxMTQsIDE0LCA3LCAyMTgsIDExMywgMTQsIDcsIDIxOCwgMTEyLCAxNCwgNywgMjE4LCAxMTEsIAorICAgIDE0LCA3LCAyMTgsIDExMCwgMTQsIDcsIDIxOCwgMTA5LCAxNCwgNywgMjE4LCAxMDgsIDE0LCA3LCAyMTgsIDEwNywgMTQsIAorICAgIDcsIDIxNywgMjIyLCAxNCwgNywgMjE3LCAyMjEsIDE0LCA3LCAyMTcsIDIyMCwgMTQsIDcsIDIxNywgMjE5LCAxNCwgNywgCisgICAgMjE3LCAyMTgsIDE0LCA3LCAyMTcsIDIxNywgMTQsIDcsIDIxNywgMjE2LCAxNCwgNywgMjE3LCAyMTUsIDE0LCA3LCAyMTcsIAorICAgIDIxNCwgMTQsIDcsIDIxNywgMjEzLCAxNCwgNywgMjE3LCAyMTIsIDE0LCA3LCAyMTcsIDIxMSwgMTQsIDcsIDIxNywgMjEwLCAKKyAgICAxNCwgNywgMjE3LCAyMDksIDE0LCA3LCAyMTcsIDIwOCwgMTQsIDcsIDIxNywgMjA3LCAxNCwgNywgMjE3LCAyMDYsIDE0LCAKKyAgICA3LCAyMTcsIDIwNSwgMTQsIDcsIDIxNywgMjA0LCAxNCwgNywgMjE3LCAyMDMsIDE0LCA3LCAyMTcsIDIwMiwgMTQsIDcsIAorICAgIDIxNywgMjAxLCAxNCwgNywgMjE3LCAyMDAsIDE0LCA3LCAyMTcsIDE5OSwgMTQsIDcsIDIxNywgMTk4LCAxNCwgNywgMjE3LCAKKyAgICAxOTcsIDE0LCA3LCAyMTcsIDE5NiwgMTQsIDcsIDIxNywgMTk1LCAxNCwgNywgMjE3LCAxOTQsIDE0LCA3LCAyMTcsIDE5MywgCisgICAgMTQsIDcsIDIxNywgMTkyLCAxNCwgNywgMjE3LCAxOTEsIDE0LCA3LCAyMTcsIDE5MCwgMTQsIDcsIDIxNywgMTg5LCAxNCwgCisgICAgNywgMjE3LCAxODgsIDE0LCA3LCAyMTcsIDE4NywgMTQsIDcsIDIxNywgMTg2LCAxNCwgNywgMjE3LCAxODUsIDE0LCA3LCAKKyAgICAyMTcsIDE4NCwgMTQsIDcsIDIxNywgMTgzLCAxNCwgNywgMjE3LCAxODIsIDE0LCA3LCAyMTcsIDE4MSwgMTQsIDcsIDIxNywgCisgICAgMTgwLCAxNCwgNywgMjE3LCAxNzksIDE0LCA3LCAyMTcsIDE3OCwgMTQsIDcsIDIxNywgMTc3LCAxNCwgNywgMjE3LCAxNzYsIAorICAgIDE0LCA3LCAyMTcsIDE3NSwgMTQsIDcsIDIxNywgMTc0LCAxNCwgNywgMjE3LCAxNzMsIDE0LCA3LCAyMTcsIDE3MiwgMTQsIAorICAgIDcsIDIxNywgMTcxLCAxNCwgNywgMjE3LCAxNzAsIDE0LCA3LCAyMTcsIDE2OSwgMTQsIDcsIDIxNywgMTY4LCAxNCwgNywgCisgICAgMjE3LCAxNjcsIDE0LCA3LCAyMTcsIDE2NiwgMTQsIDcsIDIxNywgMTY1LCAxNCwgNywgMjE3LCAxNjQsIDE0LCA3LCAyMTcsIAorICAgIDE2MywgMTQsIDcsIDIxNywgMTYyLCAxNCwgNywgMjE3LCAxNjEsIDE0LCA3LCAyMTcsIDE2MCwgMTQsIDcsIDIxNywgMTU5LCAKKyAgICAxNCwgNywgMjE3LCAxNTgsIDE0LCA3LCAyMTcsIDE1NywgMTQsIDcsIDIxNywgMTU2LCAxNCwgNywgMjE3LCAxNTUsIDE0LCAKKyAgICA3LCAyMTcsIDE1NCwgMTQsIDcsIDIxNywgMTUzLCAxNCwgNywgMjE3LCAxNTIsIDE0LCA3LCAyMTcsIDE1MSwgMTQsIDcsIAorICAgIDIxNywgMTUwLCAxNCwgNywgMjE3LCAxNDksIDE0LCA3LCAyMTcsIDE0OCwgMTQsIDcsIDIxNiwgMjI1LCAxNCwgNywgMjE2LCAKKyAgICAyMjQsIDE0LCA3LCAyMTYsIDIyMywgMTQsIDcsIDIxNiwgMjIyLCAxNCwgNywgMjE2LCAyMjEsIDE0LCA3LCAyMTYsIDIyMCwgCisgICAgMTQsIDcsIDIxNiwgMjE5LCAxNCwgNywgMjE2LCAyMTgsIDE0LCA3LCAyMTYsIDIxNywgMTQsIDcsIDIxNiwgMjE2LCAxNCwgCisgICAgNywgMjE2LCAyMTUsIDE0LCA3LCAyMTYsIDIxNCwgMTQsIDcsIDIxNiwgMjEzLCAxNCwgNywgMjE0LCAxNjYsIDE0LCA3LCAKKyAgICAyMTQsIDE2NSwgMTQsIDcsIDIxNCwgMTY0LCAxNCwgNywgMjE0LCAxNjMsIDE0LCA3LCAyMTQsIDE2MiwgMTQsIDcsIDIxNCwgCisgICAgMTYxLCAxNCwgNywgMjE0LCAxNjAsIDE0LCA3LCAyMTQsIDMxLCAxNCwgNywgMjE0LCAzMCwgMTQsIDcsIDIxNCwgMjksIDE0LCAKKyAgICA3LCAyMTQsIDI4LCAxNCwgNywgMjE0LCAyNywgMTQsIDcsIDIxNCwgMjYsIDE0LCA3LCAyMTQsIDI1LCAxNCwgNywgMjE0LCAKKyAgICAyNCwgMTQsIDcsIDIxNCwgMjMsIDE0LCA3LCAyMTQsIDIyLCAxNCwgNywgMjE0LCAyMSwgMTQsIDcsIDIxNCwgMjAsIDE0LCAKKyAgICA3LCAyMTQsIDE5LCAxNCwgNywgMjE0LCAxOCwgMTQsIDcsIDIxNCwgMTcsIDE0LCA3LCAyMTQsIDE2LCAxNCwgNywgMjE0LCAKKyAgICAxNSwgMTQsIDcsIDIxNCwgMTQsIDE0LCA3LCAyMTQsIDEzLCAxNCwgNywgMjE0LCAxMiwgMTQsIDcsIDIxNCwgMTEsIDE0LCAKKyAgICA3LCAyMTQsIDEwLCAxNCwgNywgMjE0LCA5LCAxNCwgNywgMjE0LCA4LCAxNCwgNywgMjE0LCA3LCAxNCwgNywgMjE0LCA2LCAKKyAgICAxNCwgNywgMjE0LCA1LCAxNCwgNywgMjE0LCA0LCAxNCwgNywgMjE0LCAzLCAxNCwgNywgMjE0LCAyLCAxNCwgNywgMjE0LCAKKyAgICAxLCAxNCwgNywgMjE0LCAwLCAxNCwgNywgMjEzLCAyNTUsIDE0LCA3LCAyMTMsIDI1NCwgMTQsIDcsIDIxMiwgMTE5LCAxNCwgCisgICAgNywgMjEyLCAxMTgsIDE0LCA3LCAyMTIsIDExNywgMTQsIDcsIDIxMiwgMTE2LCAxNCwgNywgMjEyLCAxMTUsIDE0LCA3LCAKKyAgICAyMTIsIDExNCwgMTQsIDcsIDIxMiwgMTEzLCAxNCwgNywgMjEyLCAxMTIsIDE0LCA3LCAyMTIsIDExMSwgMTQsIDcsIDIxMiwgCisgICAgMTEwLCAxNCwgNywgMjEyLCAxMDksIDE0LCA3LCAyMTIsIDEwOCwgMTQsIDcsIDIxMiwgMTA3LCAxNCwgNywgMjEyLCAxMDYsIAorICAgIDE0LCA3LCAyMTIsIDEwNSwgMTQsIDcsIDIxMiwgMTA0LCAxNCwgNywgMjEyLCAxMDMsIDE0LCA3LCAyMTIsIDEwMiwgMTQsIAorICAgIDcsIDIxMiwgMTAxLCAxNCwgNywgMjEyLCAxMDAsIDE0LCA3LCAyMTIsIDk5LCAxNCwgNywgMjEyLCA5OCwgMTQsIDcsIDIxMiwgCisgICAgOTcsIDE0LCA3LCAyMTIsIDk2LCAxNCwgNywgMjEyLCA5NSwgMTQsIDcsIDIxMiwgOTQsIDE0LCA3LCAyMTIsIDkzLCAxNCwgCisgICAgNywgMjEyLCA5MiwgMTQsIDcsIDIxMiwgOTEsIDE0LCA3LCAyMTIsIDkwLCAxNCwgNywgMjEyLCA4OSwgMTQsIDcsIDIxMiwgCisgICAgODgsIDE0LCA3LCAyMTIsIDg3LCAxNCwgNywgMjEyLCA4NiwgMTQsIDcsIDIxMiwgODUsIDE0LCA3LCAyMTIsIDg0LCAxNCwgCisgICAgNywgMjEyLCA4MywgMTQsIDcsIDIxMiwgODIsIDE0LCA3LCAyMTIsIDgxLCAxNCwgNywgMjEyLCA4MCwgMTQsIDcsIDIxMiwgCisgICAgNzksIDE0LCA3LCAyMTIsIDc4LCAxNCwgNywgMjEyLCA3NywgMTQsIDcsIDIxMiwgNzYsIDE0LCA3LCAyMTIsIDc1LCAxNCwgCisgICAgNywgMjEyLCA3NCwgMTQsIDcsIDIxMiwgNzMsIDE0LCA3LCAyMTIsIDcyLCAxNCwgNywgMjEyLCA3MSwgMTQsIDcsIDIxMiwgCisgICAgNzAsIDE0LCA3LCAyMTIsIDY5LCAxNCwgNywgMjEyLCA2OCwgMTQsIDcsIDIxMiwgNjcsIDE0LCA3LCAyMTIsIDY2LCAxNCwgCisgICAgNywgMjA3LCA4MSwgMTQsIDcsIDIwNywgODAsIDE0LCA3LCAyMDcsIDc5LCAxNCwgNywgMjA3LCA3OCwgMTQsIDcsIDIwNywgCisgICAgNzcsIDE0LCA3LCAyMDcsIDc2LCAxNCwgNywgMjA3LCA3NSwgMTQsIDcsIDIwNywgNzQsIDE0LCA3LCAyMDcsIDczLCAxNCwgCisgICAgNywgMjA3LCA3MiwgMTQsIDcsIDIwNywgNzEsIDE0LCA3LCAyMDcsIDcwLCAxNCwgNywgMjA3LCA2OSwgMTQsIDcsIDIwNywgCisgICAgNjgsIDE0LCA3LCAyMDcsIDY3LCAxNCwgNywgMjA3LCA2NiwgMTQsIDcsIDIwNywgNjUsIDE0LCA3LCAyMDcsIDY0LCAxNCwgCisgICAgNywgMjA3LCA2MywgMTQsIDcsIDIwNywgNjIsIDE0LCA3LCAyMDcsIDYxLCAxNCwgNywgMjA3LCA2MCwgMTQsIDcsIDIwNywgCisgICAgNTksIDE0LCA3LCAyMDcsIDU4LCAxNCwgNywgMjA3LCA1NywgMTQsIDcsIDIwNywgNTYsIDE0LCA3LCAyMDcsIDU1LCAxNCwgCisgICAgNywgMjA3LCA1NCwgMTQsIDcsIDIwNywgNTMsIDE0LCA3LCAyMDcsIDUyLCAxNCwgNywgMjA3LCA1MSwgMTQsIDcsIDIwNywgCisgICAgNTAsIDE0LCA3LCAyMDcsIDQ5LCAxNCwgNywgMjA3LCA0OCwgMTQsIDcsIDIwNywgNDcsIDE0LCA3LCAyMDcsIDQ2LCAxNCwgCisgICAgNywgMjA3LCA0NSwgMTQsIDcsIDIwNywgNDQsIDE0LCA3LCAyMDcsIDQzLCAxNCwgNywgMjA3LCA0MiwgMTQsIDcsIDIwNywgCisgICAgNDEsIDE0LCA3LCAyMDcsIDQwLCAxNCwgNywgMjA3LCAzOSwgMTQsIDcsIDIwNywgMzgsIDE0LCA3LCAyMDQsIDk1LCAxNCwgCisgICAgNywgMjA0LCA5NCwgMTQsIDcsIDIwNCwgOTMsIDE0LCA3LCAyMDQsIDkyLCAxNCwgNywgMjA0LCA5MSwgMTQsIDcsIDIwNCwgCisgICAgOTAsIDE0LCA3LCAyMDQsIDg5LCAxNCwgNywgMjA0LCA4OCwgMTQsIDcsIDIwNCwgODcsIDE0LCA3LCAyMDQsIDg2LCAxNCwgCisgICAgNywgMjA0LCA4NSwgMTQsIDcsIDIwNCwgODQsIDE0LCA3LCAyMDQsIDgzLCAxNCwgNywgMjA0LCA4MiwgMTQsIDcsIDIwNCwgCisgICAgODEsIDE0LCA3LCAyMDQsIDgwLCAxNCwgNywgMjA0LCA3OSwgMTQsIDcsIDIwNCwgNzgsIDE0LCA3LCAyMDQsIDc3LCAxNCwgCisgICAgNywgMjA0LCA3NiwgMTQsIDcsIDIwNCwgNzUsIDE0LCA3LCAyMDQsIDc0LCAxNCwgNywgMjA0LCA3MywgMTQsIDcsIDIwNCwgCisgICAgNzIsIDE0LCA3LCAyMDQsIDcxLCAxNCwgNywgMjA0LCA3MCwgMTQsIDcsIDIwNCwgNjksIDE0LCA3LCAyMDQsIDY4LCAxNCwgCisgICAgNywgMjA0LCA2NywgMTQsIDcsIDIwNCwgNjYsIDE0LCA3LCAyMDQsIDY1LCAxNCwgNywgMjA0LCA2NCwgMTQsIDcsIDIwNCwgCisgICAgNjMsIDE0LCA3LCAyMDQsIDYyLCAxNCwgNywgMjA0LCA2MSwgMTQsIDcsIDIwNCwgNjAsIDE0LCA3LCAyMDQsIDU5LCAxNCwgCisgICAgNywgMjA0LCA1OCwgMTQsIDcsIDIwNCwgNTcsIDE0LCA3LCAyMDQsIDU2LCAxNCwgNywgMjA0LCA1NSwgMTQsIDcsIDIwNCwgCisgICAgNTQsIDE0LCA3LCAyMDQsIDUzLCAxNCwgNywgMjA0LCA1MiwgMTQsIDcsIDIwNCwgNTEsIDE0LCA3LCAyMDQsIDUwLCAxNCwgCisgICAgNywgMjA0LCA0OSwgMTQsIDcsIDIwMywgMTY3LCAxNCwgNywgMjAzLCAxNjYsIDE0LCA3LCAyMDMsIDE2NSwgMTQsIDcsIAorICAgIDIwMywgMTY0LCAxNCwgNywgMjAzLCAxNjMsIDE0LCA3LCAyMDMsIDE2MiwgMTQsIDcsIDIwMywgMTYxLCAxNCwgNywgMjAzLCAKKyAgICAxNjAsIDE0LCA3LCAyMDMsIDE1OSwgMTQsIDcsIDIwMywgMTU4LCAxNCwgNywgMjAzLCAxNTcsIDE0LCA3LCAyMDMsIDE1NiwgCisgICAgMTQsIDcsIDIwMywgMTU1LCAxNCwgNywgMjAzLCAxNTQsIDE0LCA3LCAyMDMsIDE1MywgMTQsIDcsIDIwMywgMTUyLCAxNCwgCisgICAgNywgMjAzLCAxNTEsIDE0LCA3LCAyMDMsIDE1MCwgMTQsIDcsIDIwMywgMTQ5LCAxNCwgNywgMjAzLCAxNDgsIDE0LCA3LCAKKyAgICAyMDMsIDE0NywgMTQsIDcsIDIwMywgMTQ2LCAxNCwgNywgMjAzLCAxNDUsIDE0LCA3LCAyMDMsIDE0NCwgMTQsIDcsIDIwMywgCisgICAgMTQzLCAxNCwgNywgMjAzLCAxNDIsIDE0LCA3LCAyMDMsIDE0MSwgMTQsIDcsIDIwMywgMTQwLCAxNCwgNywgMjAzLCAxMzksIAorICAgIDE0LCA3LCAyMDMsIDEzOCwgMTQsIDcsIDIwMywgMTM3LCAxNCwgNywgMjAzLCAxMzYsIDE0LCA3LCAyMDMsIDEzNSwgMTQsIAorICAgIDcsIDIwMywgMTM0LCAxNCwgNywgMjAzLCAxMzMsIDE0LCA3LCAyMDMsIDEzMiwgMTQsIDcsIDIwMywgMTMxLCAxNCwgNywgCisgICAgMjAzLCAxMzAsIDE0LCA3LCAyMDMsIDEyOSwgMTQsIDcsIDIwMywgMTI4LCAxNCwgNywgMjAzLCAxMjcsIDE0LCA3LCAyMDMsIAorICAgIDEyNiwgMTQsIDcsIDIwMywgMTI1LCAxNCwgNywgMjAzLCAxMjQsIDE0LCA3LCAyMDMsIDEyMywgMTQsIDcsIDIwMywgMTIyLCAKKyAgICAxNCwgNywgMjAzLCAxMjEsIDE0LCA3LCAyMDMsIDEyMCwgMTQsIDcsIDIwMywgMTE5LCAxNCwgNywgMjAzLCAxMTgsIDE0LCAKKyAgICA3LCAyMDMsIDExNywgMTQsIDcsIDIwMywgMTE2LCAxNCwgNywgMjAzLCAxMTUsIDE0LCA3LCAyMDMsIDExNCwgMTQsIDcsIAorICAgIDIwMywgMTEzLCAxNCwgNywgMjAzLCAxMTIsIDE0LCA3LCAyMDMsIDExMSwgMTQsIDcsIDIwMywgMTEwLCAxNCwgNywgMjAzLCAKKyAgICAxMDksIDE0LCA3LCAyMDMsIDEwOCwgMTQsIDcsIDIwMywgMTA3LCAxNCwgNywgMjAzLCAxMDYsIDE0LCA3LCAyMDMsIDEwNSwgCisgICAgMTQsIDcsIDIwMywgMTA0LCAxNCwgNywgMjAzLCAxMDMsIDE0LCA3LCAyMDMsIDEwMiwgMTQsIDcsIDIwMywgMTAxLCAxNCwgCisgICAgNywgMjAzLCAxMDAsIDE0LCA3LCAyMDMsIDk5LCAxNCwgNywgMjAzLCA5OCwgMTQsIDcsIDIwMywgOTcsIDE0LCA3LCAyMDMsIAorICAgIDk2LCAxNCwgNywgMjAzLCA5NSwgMTQsIDcsIDIwMywgOTQsIDE0LCA3LCAyMDMsIDkzLCAxNCwgNywgMjAzLCA5MiwgMTQsIAorICAgIDcsIDIwMywgOTEsIDE0LCA3LCAyMDEsIDE0NiwgMTQsIDcsIDIwMSwgMTQ1LCAxNCwgNywgMjAxLCAxNDQsIDE0LCA3LCAKKyAgICAyMDEsIDE0MywgMTQsIDcsIDIwMSwgMTQyLCAxNCwgNywgMjAxLCAxNDEsIDE0LCA3LCAyMDEsIDE0MCwgMTQsIDcsIDIwMSwgCisgICAgMTM5LCAxNCwgNywgMjAxLCAxMzgsIDE0LCA3LCAyMDEsIDEzNywgMTQsIDcsIDIwMSwgMTM2LCAxNCwgNywgMjAxLCAxMzUsIAorICAgIDE0LCA3LCAyMDEsIDEzNCwgMTQsIDcsIDIwMSwgMTMzLCAxNCwgNywgMjAxLCAxMzIsIDE0LCA3LCAyMDEsIDEzMSwgMTQsIAorICAgIDcsIDIwMSwgMTMwLCAxNCwgNywgMjAxLCAxMjksIDE0LCA3LCAyMDEsIDEyOCwgMTQsIDcsIDIwMSwgMTI3LCAxNCwgNywgCisgICAgMjAxLCAxMjYsIDE0LCA3LCAyMDEsIDEyNSwgMTQsIDcsIDIwMSwgMTI0LCAxNCwgNywgMjAxLCAxMjMsIDE0LCA3LCAyMDEsIAorICAgIDEyMiwgMTQsIDcsIDIwMSwgMTIxLCAxNCwgNywgMjAxLCAxMjAsIDE0LCA3LCAyMDEsIDExOSwgMTQsIDcsIDIwMSwgMTE4LCAKKyAgICAxNCwgNywgMjAxLCAxMTcsIDE0LCA3LCAyMDEsIDExNiwgMTQsIDcsIDIwMSwgMTE1LCAxNCwgNywgMjAwLCAxOTMsIDE0LCAKKyAgICA3LCAyMDAsIDE5MiwgMTQsIDcsIDIwMCwgMTkxLCAxNCwgNywgMjAwLCAxOTAsIDE0LCA3LCAyMDAsIDE4OSwgMTQsIDcsIAorICAgIDIwMCwgMTg4LCAxNCwgNywgMjAwLCAxODcsIDE0LCA3LCAyMDAsIDE4NiwgMTQsIDcsIDIwMCwgMTg1LCAxNCwgNywgMjAwLCAKKyAgICAxODQsIDE0LCA3LCAyMDAsIDE4MywgMTQsIDcsIDIwMCwgMTgyLCAxNCwgNywgMjAwLCAxMjEsIDE0LCA3LCAyMDAsIDEyMCwgCisgICAgMTQsIDcsIDIwMCwgMTE5LCAxNCwgNywgMjAwLCAxMTgsIDE0LCA3LCAyMDAsIDExNywgMTQsIDcsIDIwMCwgMTE2LCAxNCwgCisgICAgNywgMjAwLCAxMTUsIDE0LCA3LCAyMDAsIDExNCwgMTQsIDcsIDIwMCwgMTEzLCAxNCwgNywgMTk5LCAxNTYsIDE0LCA3LCAKKyAgICAxOTksIDE1NSwgMTQsIDcsIDE5OSwgMTU0LCAxNCwgNywgMTk5LCAxNTMsIDE0LCA3LCAxOTksIDE1MiwgMTQsIDcsIDE5OSwgCisgICAgMTUxLCAxNCwgNywgMTk5LCAxNTAsIDE0LCA3LCAxOTksIDE0OSwgMTQsIDcsIDE5OSwgMTQ4LCAxNCwgNywgMTk5LCAxNDcsIAorICAgIDE0LCA3LCAxOTksIDE0NiwgMTQsIDcsIDE5OSwgMTQ1LCAxNCwgNywgMTk5LCAxNDQsIDE0LCA3LCAxOTksIDE0MywgMTQsIAorICAgIDcsIDE5OSwgMTQyLCAxNCwgNywgMTk5LCAxNDEsIDE0LCA3LCAxOTksIDE0MCwgMTQsIDcsIDE5OSwgMTM5LCAxNCwgNywgCisgICAgMTk5LCAxMzgsIDE0LCA3LCAxOTksIDEzNywgMTQsIDcsIDE5OSwgMTM2LCAxNCwgNywgMTk5LCAxMzUsIDE0LCA3LCAxOTksIAorICAgIDEzNCwgMTQsIDcsIDE5OSwgMTMzLCAxNCwgNywgMTk5LCAxMzIsIDE0LCA3LCAxOTksIDEzMSwgMTQsIDcsIDE5OSwgMTMwLCAKKyAgICAxNCwgNywgMTk5LCAxMjksIDE0LCA3LCAxOTksIDEyOCwgMTQsIDcsIDE5OSwgMTI3LCAxNCwgNywgMTk5LCAxMjYsIDE0LCAKKyAgICA3LCAxOTksIDEyNSwgMTQsIDcsIDE5OSwgMTI0LCAxNCwgNywgMTk5LCAxMjMsIDE0LCA3LCAxOTksIDEyMiwgMTQsIDcsIAorICAgIDE5OSwgMTIxLCAxNCwgNywgMTk5LCAxMjAsIDE0LCA3LCAxOTksIDExOSwgMTQsIDcsIDE5OSwgMTE4LCAxNCwgNywgMTk5LCAKKyAgICAxMTcsIDE0LCA3LCAxOTksIDExNiwgMTQsIDcsIDI1MiwgMTM3LCAxNCwgNywgMjUyLCAxMzYsIDE0LCA3LCAyNTIsIDEzNSwgCisgICAgMTQsIDcsIDI1MiwgMTM0LCAxNCwgNywgMjUyLCAxMzMsIDE0LCA3LCAyNTIsIDEzMiwgMTQsIDcsIDI1MiwgMTMxLCAxNCwgCisgICAgNywgMjUyLCAxMzAsIDE0LCA3LCAyNTIsIDEyOSwgMTQsIDcsIDI1MiwgMTI4LCAxNCwgNywgMjUyLCAxMjcsIDE0LCA3LCAKKyAgICAyNTIsIDEyNiwgMTQsIDcsIDI1MiwgMTI1LCAxNCwgNywgMjUyLCAxMjQsIDE0LCA3LCAyNTIsIDEyMywgMTQsIDcsIDI1MiwgCisgICAgMTIyLCAxNCwgNywgMjUyLCAxMjEsIDE0LCA3LCAyNTIsIDEyMCwgMTQsIDcsIDI1MiwgMTE5LCAxNCwgNywgMjUyLCAxMTgsIAorICAgIDE0LCA3LCAyNTIsIDExNywgMTQsIDcsIDI1MiwgMTE2LCAxNCwgNywgMjUyLCAxMTUsIDE0LCA3LCAyNTIsIDExNCwgMTQsIAorICAgIDcsIDI1MiwgMTEzLCAxNCwgNywgMjUyLCAxMTIsIDE0LCA3LCAyNTIsIDExMSwgMTQsIDcsIDI1MiwgMTEwLCAxNCwgNywgCisgICAgMjUyLCAxMDksIDE0LCA3LCAyNTIsIDEwOCwgMTQsIDcsIDI1MiwgMTA3LCAxNCwgNywgMjUyLCAxMDYsIDE0LCA3LCAyNTIsIAorICAgIDEwNSwgMTQsIDcsIDI1MiwgMTA0LCAyOCwgNywgMjU1LCAxMzEsIDI4LCA3LCAyNTUsIDEzMCwgMjgsIDcsIDI1NSwgMTI5LCAKKyAgICAyOCwgNywgMjU1LCAxMjgsIDI4LCA3LCAyNTUsIDEyNywgMjgsIDcsIDI1NSwgMTI1LCAyOCwgNywgMjU1LCAxMjIsIDI4LCAKKyAgICA3LCAyNTUsIDEyMSwgMjgsIDcsIDI1NSwgMTIwLCAyOCwgNywgMjU1LCAxMTksIDI4LCA3LCAyNTUsIDExOCwgMjgsIDcsIAorICAgIDI1NSwgMTE3LCAyOCwgNywgMjU1LCAxMTYsIDI4LCA3LCAyNTUsIDExNSwgMjgsIDcsIDI1NSwgMTE0LCAyOCwgNywgMjU1LCAKKyAgICAxMTIsIDI4LCA3LCAyNTUsIDExMSwgMjgsIDcsIDI1NSwgMTEwLCAyOCwgNywgMjU1LCAxMDgsIDI4LCA3LCAyNTUsIDEwNywgCisgICAgMjgsIDcsIDI1NSwgMTA2LCAyOCwgNywgMjU1LCAxMDUsIDI4LCA3LCAyNTUsIDEwNCwgMjgsIDcsIDI1NSwgMTAzLCAyOCwgCisgICAgNywgMjU1LCAxMDIsIDI4LCA3LCAyNTUsIDEwMSwgMjgsIDcsIDI1NSwgMTAwLCAyOCwgNywgMjU1LCA5OSwgMjgsIDcsIAorICAgIDI1NSwgOTgsIDI4LCA3LCAyNTUsIDk3LCAyOCwgNywgMjU1LCA5NSwgMjgsIDcsIDI1NSwgOTQsIDI4LCA3LCAyNTUsIDkzLCAKKyAgICAyOCwgNywgMjU1LCA5MiwgMjgsIDcsIDI1NSwgOTAsIDI4LCA3LCAyNTUsIDg5LCAyOCwgNywgMjU1LCA4OCwgMjgsIDcsIAorICAgIDI1NSwgODcsIDI4LCA3LCAyNTUsIDg2LCAyOCwgNywgMjU1LCA4NSwgMjgsIDcsIDI1NSwgODQsIDI4LCA3LCAyNTUsIDgzLCAKKyAgICAyOCwgNywgMjU1LCA4MiwgMjgsIDcsIDI1NSwgODAsIDI4LCA3LCAyNTUsIDc5LCAyOCwgNywgMjU1LCA3OCwgMjgsIDcsIAorICAgIDI1NSwgNzYsIDI4LCA3LCAyNTUsIDc0LCAyOCwgNywgMjU1LCA3MywgMjgsIDcsIDI1NSwgNzIsIDI4LCA3LCAyNTUsIDcxLCAKKyAgICAyOCwgNywgMjU1LCA3MCwgMjgsIDcsIDI1NSwgNjksIDI4LCA3LCAyNTUsIDY4LCAyOCwgNywgMjU1LCA2NywgMjgsIDcsIAorICAgIDI1NSwgNjYsIDI4LCA3LCAyNTUsIDY1LCAyOCwgNywgMjU1LCA2NCwgMjgsIDcsIDI1NSwgNjMsIDI4LCA3LCAyNTUsIDYyLCAKKyAgICAyOCwgNywgMjU1LCA2MSwgMjgsIDcsIDI1NSwgNjAsIDI4LCA3LCAyNTUsIDU5LCAyOCwgNywgMjU1LCA1OCwgMjgsIDcsIAorICAgIDI1NSwgNTcsIDI4LCA3LCAyNTUsIDU2LCAyOCwgNywgMjU1LCA1NSwgMjgsIDcsIDI1NSwgNTQsIDI4LCA3LCAyNTUsIDUzLCAKKyAgICAyOCwgNywgMjU1LCA1MiwgMjgsIDcsIDI1NSwgNTEsIDI4LCA3LCAyNTUsIDUwLCAyOCwgNywgMjU1LCA0OSwgMjgsIDcsIAorICAgIDI1NSwgNDgsIDI4LCA3LCAyNTUsIDQ3LCAyOCwgNywgMjU1LCA0NiwgMjgsIDcsIDI1NSwgNDUsIDI4LCA3LCAyNTUsIDQ0LCAKKyAgICAyOCwgNywgMjU1LCA0MywgMjgsIDcsIDI1NSwgNDIsIDI4LCA3LCAyNTUsIDQxLCAyOCwgNywgMjU1LCA0MCwgMjgsIDcsIAorICAgIDI1NSwgMzksIDI4LCA3LCAyNTUsIDM4LCAyOCwgNywgMjU1LCAzNywgMjgsIDcsIDI1NSwgMzYsIDI4LCA3LCAyNTUsIDM1LCAKKyAgICAyOCwgNywgMjU1LCAzNCwgMjgsIDcsIDI1NSwgMzMsIDI4LCA3LCAyNTUsIDMyLCAyOCwgNywgMjU1LCAzMSwgMjgsIDcsIAorICAgIDI1NSwgMzAsIDI4LCA3LCAyNTUsIDI5LCAyOCwgNywgMjU1LCAyOCwgMjgsIDcsIDI1NSwgMjcsIDI4LCA3LCAyNTUsIDI2LCAKKyAgICAyOCwgNywgMjU1LCAyNSwgMjgsIDcsIDI1NSwgMjQsIDI4LCA3LCAyNTUsIDIzLCAyOCwgNywgMjU1LCAyMiwgMjgsIDcsIAorICAgIDI1NSwgMjEsIDI4LCA3LCAyNTUsIDIwLCAyOCwgNywgMjU1LCAxOSwgMjgsIDcsIDI1NSwgMTgsIDI4LCA3LCAyNTUsIDE3LCAKKyAgICAyOCwgNywgMjU1LCAxNiwgMjgsIDcsIDI1NSwgMTUsIDI4LCA3LCAyNTUsIDE0LCAyOCwgNywgMjU1LCAxMywgMjgsIDcsIAorICAgIDI1NSwgMTIsIDI4LCA3LCAyNTUsIDExLCAyOCwgNywgMjU1LCAxMCwgMjgsIDcsIDI1NSwgOCwgMjgsIDcsIDI1NSwgNywgCisgICAgMjgsIDcsIDI1NSwgNiwgMjgsIDcsIDI1NSwgNSwgMjgsIDcsIDI1NSwgNCwgMjgsIDcsIDI1NSwgMywgMjgsIDcsIDI1NSwgCisgICAgMiwgMjgsIDcsIDI1NSwgMSwgMjgsIDcsIDI1NSwgMCwgMjgsIDcsIDI1NCwgMjU1LCAyOCwgNywgMjU0LCAyNTQsIDI4LCA3LCAKKyAgICAyNTQsIDI1MywgMjgsIDcsIDI1NCwgMjUyLCAyOCwgNywgMjU0LCAyNTEsIDI4LCA3LCAyNTQsIDI1MCwgMjgsIDcsIDI1NCwgCisgICAgMjQ5LCAyOCwgNywgMjU0LCAyNDgsIDI4LCA3LCAyNTQsIDI0NywgMjgsIDcsIDI1NCwgMjQ2LCAyOCwgNywgMjU0LCAyNDUsIAorICAgIDI4LCA3LCAyNTQsIDI0NCwgMjgsIDcsIDI1NCwgMjQzLCAyOCwgNywgMjU0LCAyNDIsIDI4LCA3LCAyNTQsIDI0MSwgMjgsIAorICAgIDcsIDI1NCwgMjQwLCAyOCwgNywgMjU0LCAyMzksIDI4LCA3LCAyNTQsIDIzOCwgMjgsIDcsIDI1NCwgMjM3LCAyOCwgNywgCisgICAgMjU0LCAyMzYsIDI4LCA3LCAyNTQsIDIzNSwgMjgsIDcsIDI1NCwgMjM0LCAyOCwgNywgMjU0LCAyMzMsIDI4LCA3LCAyNTQsIAorICAgIDIzMiwgMjgsIDcsIDI1NCwgMjMxLCAyOCwgNywgMjU0LCAyMjksIDI4LCA3LCAyNTQsIDIyOCwgMjgsIDcsIDI1NCwgMjI3LCAKKyAgICAyOCwgNywgMjU0LCAyMjYsIDI4LCA3LCAyNTQsIDIyNSwgMjgsIDcsIDI1NCwgMjI0LCAyOCwgNywgMjU0LCAyMjMsIDI4LCAKKyAgICA3LCAyNTQsIDIyMiwgMjgsIDcsIDI1NCwgMjIxLCAyOCwgNywgMjU0LCAyMjAsIDI4LCA3LCAyNTQsIDIxOSwgMjgsIDcsIAorICAgIDI1NCwgMjE4LCAyOCwgNywgMjU0LCAyMTYsIDI4LCA3LCAyNTQsIDIxNSwgMjgsIDcsIDI1NCwgMjE0LCAyOCwgNywgMjU0LCAKKyAgICAyMTMsIDI4LCA3LCAyNTQsIDIxMiwgMjgsIDcsIDI1NCwgMjExLCAyOCwgNywgMjU0LCAyMTAsIDI4LCA3LCAyNTQsIDIwOSwgCisgICAgMjgsIDcsIDI1NCwgMjA4LCAyOCwgNywgMjU0LCAyMDcsIDI4LCA3LCAyNTQsIDIwNiwgMjgsIDcsIDI1NCwgMjA1LCAyOCwgCisgICAgNywgMjU0LCAyMDQsIDI4LCA3LCAyNTQsIDIwMywgMjgsIDcsIDI1NCwgMjAyLCAyOCwgNywgMjU0LCAyMDEsIDI4LCA3LCAKKyAgICAyNTQsIDIwMCwgMjgsIDcsIDI1NCwgMTk5LCAyOCwgNywgMjU0LCAxOTgsIDI4LCA3LCAyNTQsIDE5NywgMjgsIDcsIDI1NCwgCisgICAgMTk2LCAyOCwgNywgMjU0LCAxOTUsIDI4LCA3LCAyNTQsIDE5NCwgMjgsIDcsIDI1NCwgMTkzLCAyOCwgNywgMjU0LCAxOTIsIAorICAgIDI4LCA3LCAyNTQsIDE5MSwgMjgsIDcsIDI1NCwgMTkwLCAyOCwgNywgMjU0LCAxODksIDI4LCA3LCAyNTQsIDE4OCwgMjgsIAorICAgIDcsIDI1NCwgMTg3LCAyOCwgNywgMjU0LCAxODYsIDI4LCA3LCAyNTQsIDE4NSwgMjgsIDcsIDI1NCwgMTg0LCAyOCwgNywgCisgICAgMjU0LCAxODMsIDI4LCA3LCAyNTQsIDE4MiwgMjgsIDcsIDI1NCwgMTgxLCAyOCwgNywgMjU0LCAxODAsIDI4LCA3LCAyNTQsIAorICAgIDE3OSwgMjgsIDcsIDI1NCwgMTc4LCAyOCwgNywgMjU0LCAxNzcsIDI4LCA3LCAyNTQsIDE3NiwgMjgsIDcsIDI1NCwgMTc1LCAKKyAgICAyOCwgNywgMjU0LCAxNzQsIDI4LCA3LCAyNTQsIDE3MywgMjgsIDcsIDI1NCwgMTcyLCAyOCwgNywgMjU0LCAxNzEsIDI4LCAKKyAgICA3LCAyNTQsIDE3MCwgMjgsIDcsIDI1NCwgMTY5LCAyOCwgNywgMjU0LCAxNjgsIDI4LCA3LCAyNTQsIDE2NywgMjgsIDcsIAorICAgIDI1NCwgMTY2LCAyOCwgNywgMjU0LCAxNjUsIDI4LCA3LCAyNTQsIDE2NCwgMjgsIDcsIDI1NCwgMTYzLCAyOCwgNywgMjU0LCAKKyAgICAxNjIsIDI4LCA3LCAyNTQsIDE2MSwgMjgsIDcsIDI1NCwgMTYwLCAyOCwgNywgMjU0LCAxNTksIDI4LCA3LCAyNTQsIDE1OCwgCisgICAgMjgsIDcsIDI1NCwgMTU3LCAyOCwgNywgMjU0LCAxNTYsIDI4LCA3LCAyNTQsIDE1NSwgMjgsIDcsIDI1NCwgMTU0LCAyOCwgCisgICAgNywgMjU0LCAxNTMsIDI4LCA3LCAyNTQsIDE1MiwgMjgsIDcsIDI1NCwgMTUxLCAyOCwgNywgMjU0LCAxNTAsIDI4LCA3LCAKKyAgICAyNTQsIDE0OSwgMjgsIDcsIDI1NCwgMTQ4LCAyOCwgNywgMjU0LCAxNDYsIDI4LCA3LCAyNTQsIDE0NSwgMjgsIDcsIDI1NCwgCisgICAgMTQ0LCAyOCwgNywgMjU0LCAxNDMsIDI4LCA3LCAyNTQsIDE0MiwgMjgsIDcsIDI1NCwgMTQxLCAyOCwgNywgMjU0LCAxNDAsIAorICAgIDI4LCA3LCAyNTQsIDEzOSwgMjgsIDcsIDI1NCwgMTM4LCAyOCwgNywgMjU0LCAxMzcsIDI4LCA3LCAyNTQsIDEzNiwgMjgsIAorICAgIDcsIDI1NCwgMTM1LCAyOCwgNywgMjU0LCAxMzQsIDI4LCA3LCAyNTQsIDEzMywgMjgsIDcsIDI1NCwgMTMyLCAyOCwgNywgCisgICAgMjU0LCAxMzEsIDI4LCA3LCAyNTQsIDEzMCwgMjgsIDcsIDI1NCwgMTI5LCAyOCwgNywgMjU0LCAxMjgsIDI4LCA3LCAyNTQsIAorICAgIDEyNywgMjgsIDcsIDI1NCwgMTI2LCAyOCwgNywgMjU0LCAxMjUsIDI4LCA3LCAyNTQsIDEyNCwgMjgsIDcsIDI1NCwgMTIzLCAKKyAgICAyOCwgNywgMjU0LCAxMjIsIDI4LCA3LCAyNTQsIDEyMSwgMjgsIDcsIDI1NCwgMTIwLCAyOCwgNywgMjU0LCAxMTksIDI4LCAKKyAgICA3LCAyNTQsIDExOCwgMjgsIDcsIDI1NCwgMTE3LCAyOCwgNywgMjU0LCAxMTYsIDI4LCA3LCAyNTQsIDExNSwgMjgsIDcsIAorICAgIDI1NCwgMTE0LCAyOCwgNywgMjU0LCAxMTMsIDI4LCA3LCAyNTQsIDExMiwgMjgsIDcsIDI1NCwgMTExLCAyOCwgNywgMjU0LCAKKyAgICAxMTAsIDI4LCA3LCAyNTQsIDEwOSwgMjgsIDcsIDI1NCwgMTA4LCAyOCwgNywgMjU0LCAxMDcsIDI4LCA3LCAyNTQsIDEwNiwgCisgICAgMjgsIDcsIDI1NCwgMTA1LCAyOCwgNywgMjU0LCAxMDQsIDI4LCA3LCAyNTQsIDEwMywgMjgsIDcsIDI1NCwgMTAyLCAyOCwgCisgICAgNywgMjU0LCAxMDEsIDI4LCA3LCAyNTQsIDEwMCwgMjgsIDcsIDI1NCwgOTksIDI4LCA3LCAyNTQsIDk4LCAyOCwgNywgMjU0LCAKKyAgICA5NywgMjgsIDcsIDI1NCwgOTYsIDI4LCA3LCAyNTQsIDk1LCAyOCwgNywgMjU0LCA5NCwgMjgsIDcsIDI1NCwgOTMsIDI4LCAKKyAgICA3LCAyNTQsIDkyLCAyOCwgNywgMjU0LCA5MSwgMjgsIDcsIDI1NCwgOTAsIDI4LCA3LCAyNTQsIDg5LCAyOCwgNywgMjU0LCAKKyAgICA4OCwgMjgsIDcsIDI1NCwgODcsIDI4LCA3LCAyNTQsIDg2LCAyOCwgNywgMjU0LCA4NSwgMjgsIDcsIDI1NCwgODQsIDI4LCAKKyAgICA3LCAyNTQsIDgzLCAyOCwgNywgMjU0LCA4MiwgMjgsIDcsIDI1NCwgODEsIDI4LCA3LCAyNTQsIDgwLCAyOCwgNywgMjU0LCAKKyAgICA3OSwgMjgsIDcsIDI1NCwgNzgsIDI4LCA3LCAyNTQsIDc3LCAyOCwgNywgMjU0LCA3NiwgMjgsIDcsIDI1NCwgNzUsIDI4LCAKKyAgICA3LCAyNTQsIDc0LCAyOCwgNywgMjU0LCA3MywgMjgsIDcsIDI1NCwgNzIsIDI4LCA3LCAyNTQsIDcxLCAyOCwgNywgMjU0LCAKKyAgICA3MCwgMjgsIDcsIDI1NCwgNjksIDI4LCA3LCAyNTQsIDY4LCAyOCwgNywgMjU0LCA2NywgMjgsIDcsIDI1NCwgNjYsIDI4LCAKKyAgICA3LCAyNTQsIDY1LCAyOCwgNywgMjU0LCA2NCwgMjgsIDcsIDI1NCwgNjMsIDI4LCA3LCAyNTQsIDYyLCAyOCwgNywgMjU0LCAKKyAgICA2MSwgMjgsIDcsIDI1NCwgNjAsIDI4LCA3LCAyNTQsIDU5LCAyOCwgNywgMjU0LCA1OCwgMjgsIDcsIDI1NCwgNTcsIDI4LCAKKyAgICA3LCAyNTQsIDU2LCAyOCwgNywgMjU0LCA1NSwgMjgsIDcsIDI1NCwgNTQsIDI4LCA3LCAyNTQsIDUzLCAyOCwgNywgMjU0LCAKKyAgICA1MiwgMjgsIDcsIDI1NCwgNTEsIDI4LCA3LCAyNTQsIDUwLCAyOCwgNywgMjU0LCA0OSwgMjgsIDcsIDI1NCwgNDgsIDI4LCAKKyAgICA3LCAyNTQsIDQ3LCAyOCwgNywgMjU0LCA0NiwgMjgsIDcsIDI1NCwgNDUsIDI4LCA3LCAyNTQsIDQ0LCAyOCwgNywgMjU0LCAKKyAgICA0MywgMjgsIDcsIDI1NCwgNDIsIDI4LCA3LCAyNTQsIDQxLCAyOCwgNywgMjU0LCA0MCwgMjgsIDcsIDI1NCwgMzksIDI4LCAKKyAgICA3LCAyNTQsIDM4LCAyOCwgNywgMjU0LCAzNywgMjgsIDcsIDI1NCwgMzYsIDI4LCA3LCAyNTQsIDM0LCAyOCwgNywgMjU0LCAKKyAgICAzMywgMjgsIDcsIDI1NCwgMzIsIDI4LCA3LCAyNTQsIDMxLCAyOCwgNywgMjU0LCAzMCwgMjgsIDcsIDI1NCwgMjksIDI4LCAKKyAgICA3LCAyNTQsIDI4LCAyOCwgNywgMjU0LCAyNywgMjgsIDcsIDI1NCwgMjYsIDI4LCA3LCAyNTQsIDI1LCAyOCwgNywgMjU0LCAKKyAgICAyNCwgMjgsIDcsIDI1NCwgMjEsIDI4LCA3LCAyNTQsIDIwLCAyOCwgNywgMjU0LCAxOSwgMjgsIDcsIDI1NCwgMTgsIDI4LCAKKyAgICA3LCAyNTQsIDE0LCAyOCwgNywgMjU0LCAxMywgMjgsIDcsIDI1NCwgMTIsIDI4LCA3LCAyNTQsIDExLCAyOCwgNywgMjU0LCAKKyAgICAxMCwgMjgsIDcsIDI1NCwgOSwgMjgsIDcsIDI1NCwgOCwgMjgsIDcsIDI1NCwgNywgMjgsIDcsIDI1NCwgNiwgMjgsIDcsIAorICAgIDI1NCwgNSwgMjgsIDcsIDI1NCwgNCwgMjgsIDcsIDI1NCwgMywgMjgsIDcsIDI1NCwgMiwgMjgsIDcsIDI1NCwgMSwgMjgsIAorICAgIDcsIDI1NCwgMCwgMjgsIDcsIDI1MywgMjU1LCAyOCwgNywgMjUzLCAyNTQsIDI4LCA3LCAyNTMsIDI1MywgMjgsIDcsIDI1MywgCisgICAgMjUyLCAyOCwgNywgMjUzLCAyNTAsIDI4LCA3LCAyNTMsIDI0OSwgMjgsIDcsIDI1MywgMjQ4LCAyOCwgNywgMjUzLCAyNDcsIAorICAgIDI4LCA3LCAyNTMsIDI0NiwgMjgsIDcsIDI1MywgMjQ1LCAyOCwgNywgMjUzLCAyNDQsIDI4LCA3LCAyNTMsIDI0MywgMjgsIAorICAgIDcsIDI1MywgMjQyLCAyOCwgNywgMjUzLCAyNDEsIDI4LCA3LCAyNTMsIDI0MCwgMjgsIDcsIDI1MywgMjM5LCAyOCwgNywgCisgICAgMjUzLCAyMzgsIDI4LCA3LCAyNTMsIDIzNywgMjgsIDcsIDI1MywgMjM2LCAyOCwgNywgMjUzLCAyMzUsIDI4LCA3LCAyNTMsIAorICAgIDIzNCwgMjgsIDcsIDI1MywgMjMzLCAyOCwgNywgMjUzLCAyMzIsIDI4LCA3LCAyNTMsIDIzMSwgMjgsIDcsIDI1MywgMjMwLCAKKyAgICAyOCwgNywgMjUzLCAyMjksIDI4LCA3LCAyNTMsIDIyOCwgMjgsIDcsIDI1MywgMjI3LCAyOCwgNywgMjUzLCAyMjYsIDI4LCAKKyAgICA3LCAyNTMsIDIyNSwgMjgsIDcsIDI1MywgMjI0LCAyOCwgNywgMjUzLCAyMjMsIDI4LCA3LCAyNTMsIDIyMiwgMjgsIDcsIAorICAgIDI1MywgMjIxLCAyOCwgNywgMjUzLCAyMjAsIDI4LCA3LCAyNTMsIDIxOSwgMjgsIDcsIDI1MywgMjE4LCAyOCwgNywgMjUzLCAKKyAgICAyMTcsIDI4LCA3LCAyNTMsIDIxNiwgMjgsIDcsIDI1MywgMjE1LCAyOCwgNywgMjUzLCAyMTQsIDI4LCA3LCAyNTMsIDIxMywgCisgICAgMjgsIDcsIDI1MywgMjEyLCAyOCwgNywgMjUzLCAyMTEsIDI4LCA3LCAyNTMsIDIxMCwgMjgsIDcsIDI1MywgMjA5LCAyOCwgCisgICAgNywgMjUzLCAyMDgsIDI4LCA3LCAyNTMsIDIwNywgMjgsIDcsIDI1MywgMjA2LCAyOCwgNywgMjUzLCAyMDUsIDI4LCA3LCAKKyAgICAyNTMsIDIwNCwgMjgsIDcsIDI1MywgMjAzLCAyOCwgNywgMjUzLCAyMDIsIDI4LCA3LCAyNTMsIDIwMSwgMjgsIDcsIDI1MywgCisgICAgMjAwLCAyOCwgNywgMjUzLCAxOTksIDI4LCA3LCAyNTMsIDE5OCwgMjgsIDcsIDI1MywgMTk3LCAyOCwgNywgMjUzLCAxOTYsIAorICAgIDI4LCA3LCAyNTMsIDE5NSwgMjgsIDcsIDI1MywgMTk0LCAyOCwgNywgMjUzLCAxOTMsIDI4LCA3LCAyNTMsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTkxLCAyOCwgNywgMjUzLCAxOTAsIDI4LCA3LCAyNTMsIDE4OSwgMjEzLCAyNTMsIDIxNywgMzQsIDIxMywgCisgICAgODgsIDI4LCA3LCAyNTMsIDE4OCwgMjgsIDcsIDI1MywgMTg3LCAyOCwgNywgMjUzLCAxODYsIDI4LCA3LCAyNTMsIDE4NSwgCisgICAgMjgsIDcsIDI1MywgMTg0LCAyOCwgNywgMjUzLCAxODMsIDI4LCA3LCAyNTMsIDE4MiwgMjgsIDcsIDI1MywgMTgxLCAyOCwgCisgICAgNywgMjUzLCAxODAsIDI4LCA3LCAyNTMsIDE3OSwgMjgsIDcsIDI1MywgMTc4LCAyOCwgNywgMjUzLCAxNzcsIDE5MiwgMjgsIAorICAgIDcsIDI1MywgMTc2LCAyOCwgNywgMjUzLCAxNzUsIDI4LCA3LCAyNTMsIDE3NCwgMjgsIDcsIDI1MywgMTczLCAyOCwgNywgCisgICAgMjUzLCAxNzIsIDI4LCA3LCAyNTMsIDE3MSwgMjgsIDcsIDI1MywgMTcwLCAyOCwgNywgMjUzLCAxNjgsIDI4LCA3LCAyNTMsIAorICAgIDE2NiwgMjgsIDcsIDI1MywgMTY0LCAyOCwgNywgMjUzLCAxNjIsIDI4LCA3LCAyNTMsIDE2MCwgMjgsIDcsIDI1MywgMTU4LCAKKyAgICAyOCwgNywgMjUzLCAxNTYsIDI4LCA3LCAyNTMsIDE1NCwgMjgsIDcsIDI1MywgMTUyLCAyOCwgNywgMjUzLCAxNTAsIDI0OCwgCisgICAgMjQ0LCAyMjQsIDk3LCA4MSwgMjgsIDcsIDI1MywgMTQ4LCAyMzgsIDE3MSwgMjI0LCA5NywgODEsIDI4LCA3LCAyNTMsIAorICAgIDE0NywgMjgsIDcsIDI1MywgMTQ1LCAyOCwgNywgMjUzLCAxNDMsIDI4LCA3LCAyNTMsIDE0MSwgMjgsIDcsIDI1MywgMTM5LCAKKyAgICAyOCwgNywgMjUzLCAxMzcsIDI4LCA3LCAyNTMsIDEzNSwgMjgsIDcsIDI1MywgMTMzLCAyOCwgNywgMjUzLCAxMzEsIDI4LCAKKyAgICA3LCAyNTMsIDEzMCwgMjgsIDcsIDI1MywgMTI5LCAyOCwgNywgMjUzLCAxMjgsIDI4LCA3LCAyNTMsIDEyNywgMjgsIDcsIAorICAgIDI1MywgMTI2LCAyOCwgNywgMjUzLCAxMjUsIDI4LCA3LCAyNTMsIDEyNCwgMjgsIDcsIDI1MywgMTIzLCAyOCwgNywgMjUzLCAKKyAgICAxMjIsIDI4LCA3LCAyNTMsIDEyMSwgMjgsIDcsIDI1MywgMTIwLCAyOCwgNywgMjUzLCAxMTksIDI4LCA3LCAyNTMsIDExOCwgCisgICAgMjgsIDcsIDI1MywgMTE3LCAyOCwgNywgMjUzLCAxMTYsIDI4LCA3LCAyNTMsIDExNSwgMjgsIDcsIDI1MywgMTE0LCAyOCwgCisgICAgNywgMjUzLCAxMTMsIDI4LCA3LCAyNTMsIDExMiwgMjgsIDcsIDI1MywgMTExLCAyOCwgNywgMjUzLCAxMTAsIDI4LCA3LCAKKyAgICAyNTMsIDEwOSwgMjgsIDcsIDI1MywgMTA4LCAyOCwgNywgMjUzLCAxMDcsIDI4LCA3LCAyNTMsIDEwNiwgMjgsIDcsIDI1MywgCisgICAgMTA1LCAyOCwgNywgMjUzLCAxMDQsIDI4LCA3LCAyNTMsIDEwMywgMjgsIDcsIDI1MywgMTAyLCAyOCwgNywgMjUzLCAxMDEsIAorICAgIDI4LCA3LCAyNTMsIDEwMCwgMjgsIDcsIDI1MywgOTksIDI4LCA3LCAyNTMsIDk4LCAyOCwgNywgMjUzLCA5NywgMjgsIDcsIAorICAgIDI1MywgOTYsIDI4LCA3LCAyNTMsIDk1LCAyOCwgNywgMjUzLCA5NCwgMjgsIDcsIDI1MywgOTMsIDI4LCA3LCAyNTMsIDkyLCAKKyAgICAyOCwgNywgMjUzLCA5MSwgMjgsIDcsIDI1MywgOTAsIDI4LCA3LCAyNTMsIDg5LCAyOCwgNywgMjUzLCA4OCwgMjgsIDcsIAorICAgIDI1MywgODcsIDI4LCA3LCAyNTMsIDg2LCAyOCwgNywgMjUzLCA4NSwgMjgsIDcsIDI1MywgODQsIDI4LCA3LCAyNTMsIDgzLCAKKyAgICAyOCwgNywgMjUzLCA4MiwgMjgsIDcsIDI1MywgODEsIDI4LCA3LCAyNTMsIDgwLCAyOCwgNywgMjUzLCA3OSwgMjgsIDcsIAorICAgIDI1MywgNzgsIDI4LCA3LCAyNTMsIDc3LCAyOCwgNywgMjUzLCA3NiwgMjgsIDcsIDI1MywgNzUsIDI4LCA3LCAyNTMsIDc0LCAKKyAgICAyOCwgNywgMjUzLCA3MywgMjgsIDcsIDI1MywgNzIsIDI4LCA3LCAyNTMsIDcxLCAyOCwgNywgMjUzLCA3MCwgMjgsIDcsIAorICAgIDI1MywgNjksIDI4LCA3LCAyNTMsIDY4LCAyOCwgNywgMjUzLCA2NywgMjgsIDcsIDI1MywgNjYsIDI4LCA3LCAyNTMsIDY1LCAKKyAgICAyOCwgNywgMjUzLCA2NCwgMjgsIDcsIDI1MywgNjMsIDI4LCA3LCAyNTMsIDYyLCAyOCwgNywgMjUzLCA2MSwgMjgsIDcsIAorICAgIDI1MywgNjAsIDI4LCA3LCAyNTMsIDU5LCAyOCwgNywgMjUzLCA1OCwgMjgsIDcsIDI1MywgNTcsIDI4LCA3LCAyNTMsIDU2LCAKKyAgICAyOCwgNywgMjUzLCA1NSwgMjgsIDcsIDI1MywgNTQsIDI4LCA3LCAyNTMsIDUzLCAyOCwgNywgMjUzLCA1MiwgMjgsIDcsIAorICAgIDI1MywgNTEsIDI4LCA3LCAyNTMsIDUwLCAyOCwgNywgMjUzLCA0OSwgMjgsIDcsIDI1MywgNDgsIDI4LCA3LCAyNTMsIDQ3LCAKKyAgICAyOCwgNywgMjUzLCA0NiwgMjgsIDcsIDI1MywgNDUsIDI4LCA3LCAyNTMsIDQ0LCAyOCwgNywgMjUzLCA0MywgMjgsIDcsIAorICAgIDI1MywgNDIsIDI4LCA3LCAyNTMsIDQxLCAyOCwgNywgMjUzLCA0MCwgMjgsIDcsIDI1MywgMzksIDI4LCA3LCAyNTMsIDM4LCAKKyAgICAyOCwgNywgMjUzLCAzNywgMjgsIDcsIDI1MywgMzYsIDI4LCA3LCAyNTMsIDM1LCAyOCwgNywgMjUzLCAzNCwgMjgsIDcsIAorICAgIDI1MywgMzMsIDI4LCA3LCAyNTMsIDMyLCAyOCwgNywgMjUzLCAzMSwgMjgsIDcsIDI1MywgMzAsIDI4LCA3LCAyNTMsIDI5LCAKKyAgICAyOCwgNywgMjUzLCAyOCwgMjgsIDcsIDI1MywgMjcsIDI4LCA3LCAyNTMsIDI2LCAyOCwgNywgMjUzLCAyNSwgMjgsIDcsIAorICAgIDI1MywgMjQsIDI4LCA3LCAyNTMsIDIzLCAyOCwgNywgMjUzLCAyMiwgMjgsIDcsIDI1MywgMjEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE5LCAxODYsIDIyMSwgMjUzLCAyNSwgMSwgMjE1LCAyMzUsIDIzNiwgMjMsIDIzNywgNSwgMjUsIDEsIDIxNSwgMjM1LCAKKyAgICAyMTUsIDgzLCAyMjEsIDI1NCwgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjIxLCAyNTQsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgMTU4LCAyMjEsIDI1MywgMjUsIDEsIDIxNSwgMjM1LCAyMDksIDIxNiwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMDUsIDIxMiwgMjIxLCAyNTMsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCA4LCAyMjEsIDI1MywgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTAsIDIwLCAyMTYsIDIxMSwgMjE5LCA4MiwgMjUsIDEsIDIxNSwgMjM1LCAyMTUsIDgzLCAyMTYsIAorICAgIDIxMSwgMjE5LCA4MywgMjE1LCAxNTIsIDI1LCAxLCAyMTUsIDIzNSwgMjE1LCA4MywgMjE2LCAyMTEsIDIxOSwgODMsIDIxNSwgCisgICAgMTUzLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE0LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjE2LCAyMjIsIDIxNSwgMjUsIAorICAgIDEsIDIxNSwgMjM1LCAyMTksIDI0NywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDE2OSwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDIzNywgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzOCwgMjUsIDEsIDIxNSwgCisgICAgMjM1LCAyMTgsIDE0MCwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDUwLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwNywgMTkzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTg1LCAyNSwgMSwgMjE1LCAyMzUsIDIyNSwgCisgICAgNzMsIDI1LCAxLCAyMTUsIDIzNSwgMjI0LCAyMzgsIDIyNSwgMjM3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTUwLCAyMjIsIAorICAgIDUsIDI1LCAxLCAyMTUsIDIzNSwgMjIyLCAyMTgsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxMDEsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjM1LCAxODAsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAxNjYsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCAxMDcsIDIxOSwgMjIwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIxNywgMjQ1LCAyMjIsIDgsIDI1LCAxLCAyMTUsIDIzNSwgMTA4LCAxOTksIDE4NiwgMjIwLCAKKyAgICAxNTEsIDI1LCAxLCAyMTUsIDIzNSwgMjM1LCAxODEsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAxNTAsIDIxOCwgMTUxLCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIwOSwgMTA5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgMjQ2LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgCisgICAgMTEsIDI1LCAxLCAyMTUsIDIzNSwgMjIxLCA4MywgMjUsIDEsIDIxNSwgMjM1LCAyMjcsIDg1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxNiwgMjExLCAyMjUsIDI5LCAyNSwgMSwgMjE1LCAyMzUsIDIyMCwgNzYsIDIyNSwgMjksIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjE2LCAwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjEyLCAyNSwgMSwgMjE1LCAyMzUsIDIxOSwgMTI0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNCwgMjA1LCAyNSwgMSwgMjE1LCAyMzUsIDIwNCwgMjEzLCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgMzgsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjA5LCAxMSwgMjUsIDEsIDIxNSwgMjM1LCAyMDYsIDEzMSwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIAorICAgIDIwOSwgMjUsIDEsIDIxNSwgMjM1LCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDcyLCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIyNSwgMjUwLCAyNSwgMSwgMjE1LCAyMzUsIDIyMSwgODQsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCAyMTIsIDI1LCAKKyAgICAxLCAyMTUsIDIzNSwgMjI0LCA5MCwgMjUsIDEsIDIxNSwgMjM1LCAyMzcsIDc0LCAyNSwgMSwgMjE1LCAyMzUsIDIxMiwgCisgICAgMjQxLCAyNSwgMSwgMjE1LCAyMzUsIDIyNiwgMzksIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA3LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIyMiwgMTY1LCAyMTUsIDE5NCwgMjUsIDEsIDIxNSwgMjM1LCAyMTAsIDEzLCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTQ5LCAKKyAgICAyNSwgMSwgMjE1LCAyMzUsIDIwOSwgMjUyLCAyMTgsIDE2MCwgMTk5LCAxOTQsIDI1LCAxLCAyMTUsIDIzNSwgMjE4LCAzMCwgCisgICAgMjIxLCAxMDMsIDI1LCAxLCAyMTUsIDIzNSwgMjE2LCAyMDYsIDI1LCAxLCAyMTUsIDIzNSwgMjE5LCA1MiwgMjUsIDEsIAorICAgIDIxNSwgMjM1LCAyMDMsIDIzNSwgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDIyMywgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDIwOCwgCisgICAgMjUsIDEsIDIxNSwgMjM1LCAyMTksIDk0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMTA1LCAyNSwgMSwgMjE1LCAyMzUsIAorICAgIDIxOCwgNDQsIDI1LCAxLCAyMTUsIDIzNSwgMjA2LCAxMzUsIDI1LCAxLCAyMTUsIDIzNSwgMjA5LCA0LCAyNSwgMSwgMjE1LCAKKyAgICAyMzUsIDIxNiwgMjA3LCAyNSwgMSwgMjE1LCAyMzUsIDIxOCwgMTY0LCAyNSwgMSwgMjE1LCAyMzUsIDIyMiwgMjE2LCAyNSwgCisgICAgMSwgMjE1LCAyMzUsIDIxOCwgNDEsIDI1LCAxLCAyMTUsIDIzNSwgMjI3LCA0OCwgMjUsIDEsIDIxNSwgMjM1LCAyMTgsIAorICAgIDE2NywgMjUsIDEsIDIxNSwgMjM1LCAyMDMsIDU0LCAyNSwgMSwgMjE1LCAyMzUsIDIyNCwgNDIsIDI1LCAxLCAyMTUsIDIzNSwgCisgICAgMjIwLCAyNCwgMjUsIDEsIDIxNSwgMjM1LCAyMjAsIDEyNiwgMjUsIDEsIDIxNSwgMjM1LCAyMjIsIDEwNCwgMjUsIDEsIAorICAgIDIxNSwgMjM0LCAyMTgsIDE2MiwgMjUsIDEsIDIxNSwgMjM0LCAyMDQsIDIxNiwgMjIyLCAyMTMsIDI1LCAxLCAyMTUsIDIzNCwgCisgICAgMjA5LCAxNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCAxNDIsIDIwNCwgMjE1LCAyNSwgMSwgMjE1LCAyMzQsIDIyNCwgOTIsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTExLCAyMjIsIDIxNywgMjUsIDEsIDIxNSwgMjM0LCAyMjYsIDE1NSwgCisgICAgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgMTA2LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyNywgNzEsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCA1NywgMjUsIDEsIDIxNSwgMjM0LCAyMDAsIDk1LCAyMjUsIDI5LCAyNSwgCisgICAgMSwgMjE1LCAyMzQsIDIyNSwgOTIsIDIxOCwgMTYwLCAyMTgsIDU1LCAyNSwgMSwgMjE1LCAyMzQsIDIxOCwgMTQzLCAyMTAsIAorICAgIDM5LCAyNSwgMSwgMjE1LCAyMzQsIDIyMCwgNDMsIDIxOSwgOTcsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzgsIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjE1LCAxNDIsIDI1LCAxLCAyMTUsIDIzNCwgMjA0LCAyMTYsIDIxOCwgMTU4LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMCwgNDQsIDIxOSwgOTIsIDI1LCAxLCAyMTUsIDIzNCwgMjEwLCA0MCwgMjUsIDEsIDIxNSwgMjM0LCAyMjEsIDI1NCwgCisgICAgMjA2LCAxMzQsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCA5MywgMjIyLCAxMDcsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA0MiwgCisgICAgMjE4LCAxNDYsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMjIsIDI1LCAxLCAyMTUsIDIzNCwgMjM1LCAxNzksIDI1LCAxLCAKKyAgICAyMTUsIDIzNCwgMjI2LCAyMTgsIDI1LCAxLCAyMTUsIDIzNCwgMjI1LCAxNzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE2LCAxMDQsIAorICAgIDI1LCAxLCAyMTUsIDIzNCwgMjAyLCAyNDEsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAxODcsIDIyMCwgMjM1LCAyNSwgMSwgCisgICAgMjE1LCAyMzQsIDIxOSwgMjIyLCAyMjIsIDg5LCAyNSwgMSwgMjE1LCAyMzQsIDIwMCwgMjE0LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIxMiwgNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjA3LCAyOCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDEwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzQsIDIxOSwgMjA2LCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMjA3LCAyMjUsIDcwLCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgMCwgMjUsIDEsIDIxNSwgMjM0LCAyMDcsIDI0NCwgMjUsIDEsIDIxNSwgMjM0LCAyMjIsIDk3LCAyNSwgMSwgMjE1LCAyMzQsIAorICAgIDIyMSwgODgsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCA1OCwgMjUsIDEsIDIxNSwgMjM0LCAyMTQsIDIwOSwgMjUsIDEsIDIxNSwgCisgICAgMjM0LCAyMjIsIDksIDIxOSwgMjI0LCAyNSwgMSwgMjE1LCAyMzQsIDIzNywgMTE3LCAyNSwgMSwgMjE1LCAyMzQsIDIyMiwgCisgICAgODQsIDI1LCAxLCAyMTUsIDIzNCwgMjM3LCAxNDAsIDI1LCAxLCAyMTUsIDIzNCwgMjI2LCAyMzAsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjIyLCAyMzUsIDIxOSwgODYsIDI1LCAxLCAyMTUsIDIzNCwgMjIyLCAyMzUsIDIxOSwgNjIsIDI1LCAxLCAyMTUsIAorICAgIDIzNCwgMjI0LCAyMzcsIDI1LCAxLCAyMTUsIDIzNCwgMjE5LCAyMzAsIDI1LCAxLCAyMTUsIDIzNCwgMjE4LCAxNjksIDI1LCAKKyAgICAxLCAyMTUsIDIzNCwgMTc4LCAyNSwgMSwgMjE1LCAyMzQsIDIyNiwgMTQwLCAyNSwgMSwgMjE1LCAyMzQsIDIxOSwgMTc1LCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDE4NiwgMjIyLCAyMTUsIDI1LCAxLCAxNzMsIDIxOCwgNywgMjUsIDEsIDE3MywgMTk5LCAxOTQsIAorICAgIDI1LCAxLCAxNzMsIDIwMSwgOTgsIDI1LCAxLCAxNzMsIDIxOSwgMjIzLCAyNSwgMSwgMTczLCAyMjAsIDY0LCAyNSwgMSwgCisgICAgMTczLCAyMTksIDE5MywgMjUsIDEsIDE3MywgMjM1LCAxODgsIDI1LCAxLCAxNzMsIDIyMiwgMTAxLCAyNSwgMSwgMTczLCAKKyAgICAyMzYsIDMwLCAyNSwgMSwgMTczLCAyMTgsIDMyLCAyMjEsIDE0NSwgMjIyLCAxMiwgMjUsIDEsIDE3MywgMjE4LCAxMzgsIAorICAgIDIyMiwgOTIsIDI1LCAxLCAxNzMsIDIyMiwgOTgsIDI1LCAxLCAxNzMsIDIxNSwgMTQ4LCAyNSwgMSwgMTczLCAyMjAsIDQ5LCAKKyAgICAyNSwgMSwgMTczLCAyMjIsIDEwOSwgMjQ3LCAxODYsIDI1LCAxLCAxNzMsIDIyNiwgMjIwLCAyNSwgMSwgMTczLCAyMzUsIAorICAgIDE4OSwgMjUsIDEsIDE3MywgMjI2LCAyMjcsIDI1LCAxLCAxNzMsIDE5OSwgMjEyLCAyMjEsIDEwLCAyNSwgMSwgMTczLCAKKyAgICAyMTgsIDEsIDI1LCAxLCAxNzMsIDIyMiwgODYsIDI1LCAxLCAxNzMsIDIxOCwgMTY4LCAyNSwgMSwgMTczLCAyMjIsIDkyLCAKKyAgICAyNSwgMSwgMTczLCAyMDAsIDE4LCAyNSwgMSwgMTczLCAyMjYsIDQ3LCAyNSwgMSwgMTczLCAyMjcsIDEwNSwgMjUsIDEsIAorICAgIDE3MywgMjEwLCAxMzcsIDI1LCAxLCAxNzMsIDIyMCwgNTgsIDI1LCAxLCAxNzMsIDIwNywgMjYsIDI1LCAxLCAxNzMsIDIxOSwgCisgICAgNjYsIDI1LCAxLCAxNzMsIDIwNSwgMjEyLCAxOTksIDE5NywgMjUsIDEsIDE3MywgMjA4LCAxOSwgMjUsIDEsIDE3MywgMjE5LCAKKyAgICAyMTMsIDIxOCwgNTUsIDI1LCAxLCAxNzMsIDIwMiwgMjQwLCAyNSwgMSwgMTczLCAyMjAsIDEyOSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAyMzUsIDIyNiwgMjI5LCAyNSwgMSwgMTczLCAyMTgsIDE1MSwgMjUsIDEsIDE3MywgMjE5LCAyMDgsIDI1LCAxLCAKKyAgICAxNzMsIDIyNSwgNzQsIDI1LCAxLCAxNzMsIDIyMiwgOTQsIDI1LCAxLCAxNzMsIDIyMSwgMjQ1LCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE0NSwgMjUsIDEsIDE3MywgMjA2LCAxMzAsIDI1LCAxLCAxNzMsIDIxOSwgMjEwLCAyNSwgMSwgMTczLCAyMzYsIDE4NywgCisgICAgMjUsIDEsIDE3MywgMjIwLCA2MywgMjUsIDEsIDE3MywgMjE4LCAxNzAsIDI1LCAxLCAxNzMsIDIxOCwgMTY2LCAyNSwgMSwgCisgICAgMTczLCAyNDgsIDEyLCAyNSwgMSwgMTczLCAyMDIsIDI0MiwgMjUsIDEsIDE3MywgMjIyLCA5OSwgMjUsIDEsIDE3MywgMjEyLCAKKyAgICAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgOTYsIDI1LCAxLCAxNzMsIDIyNSwgOTEsIDI1LCAxLCAxNzMsIDIwNSwgMjA5LCAyNSwgCisgICAgMSwgMTczLCAyMTgsIDE1MiwgMjE5LCAxNzUsIDI1LCAxLCAxNzMsIDIxOSwgODgsIDI1LCAxLCAxNzMsIDIyNiwgMjMzLCAKKyAgICAyNSwgMSwgMTczLCAyMTksIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAyMDgsIDI1LCAxLCAxNzMsIDIyMiwgODcsIDI1LCAxLCAKKyAgICAxNzMsIDIyNCwgNDIsIDI1LCAxLCAxNzMsIDIyNSwgMjM3LCAyNSwgMSwgMTczLCAyMTksIDk0LCAyNSwgMSwgMTczLCAyMTksIAorICAgIDE3NSwgMjUsIDEsIDE3MywgMjAwLCAyMDQsIDI1LCAxLCAxNzMsIDIxOSwgMjExLCAyNSwgMSwgMTczLCAyMTgsIDE1NSwgCisgICAgMjUsIDEsIDE3MywgMjE4LCAxNDcsIDI1LCAxLCAxNzMsIDIyNSwgMjUyLCAyMTksIDUyLCAyNSwgMSwgMTczLCAyMTgsIAorICAgIDE1MywgMjUsIDEsIDE3MywgMjIwLCA3MSwgMjUsIDEsIDE3MywgMjIyLCAyMzUsIDIxOCwgMTU4LCAyNSwgMSwgMTczLCAKKyAgICAyMDAsIDEwOSwgMjUsIDEsIDE3MywgMjIwLCA3MCwgMjUsIDEsIDE3MywgMjA5LCAyMTUsIDI1LCAxLCAxNzMsIDIxMCwgCisgICAgMTQwLCAyNSwgMSwgMTczLCAyMjIsIDk1LCAyNSwgMSwgMTczLCAyMjIsIDIxNSwgMjUsIDEsIDE3MywgMjIyLCAxMDUsIDI1LCAKKyAgICAxLCAxNzMsIDIyNiwgMjIxLCAyNSwgMSwgMTczLCAyMjIsIDk2LCAyNSwgMSwgMTczLCAyMjYsIDIyNSwgMjUsIDEsIDE3MywgCisgICAgMjIyLCAxMDksIDIxNSwgMTk5LCAyNSwgMSwgMTczLCAxOTksIDE3NywgMjUsIDEsIDE3MywgMjE5LCA4NCwgMjUsIDEsIAorICAgIDE3MywgMjIxLCAyMDAsIDI1LCAxLCAxNzMsIDIyMSwgMzksIDI1LCAxLCAxNzMsIDIxMCwgMTYsIDI1LCAxLCAxNzMsIDIyNiwgCisgICAgMjQ0LCAyMjUsIDUyLCAyNSwgMSwgMTczLCAyMjYsIDI0NCwgMjM3LCAxNTMsIDI1LCAxLCAxNzMsIDIxOSwgMjQ1LCAyNSwgCisgICAgMSwgMTczLCAyMjAsIDEyNiwgMjUsIDEsIDE3MywgMjI0LCAxNTgsIDI1LCAxLCAxNzMsIDIxNSwgMTYwLCAyNSwgMSwgMTczLCAKKyAgICAyMTYsIDQ3LCAyNSwgMSwgMTczLCAyMDYsIDE0NiwgMjUsIDEsIDEzNywgMjIyLCA4NSwgMjUsIDEsIDEzNywgMjAxLCA5NiwgCisgICAgMjUsIDEsIDEzNywgMjE5LCA4MiwgMjUsIDEsIDEzNywgMjIxLCAyNTMsIDI1LCAxLCAxMzcsIDIxOSwgODAsIDI1LCAxLCAKKyAgICAxMzcsIDIyNCwgMjAzLCAyNSwgMSwgMTM3LCAyMTksIDg1LCAyNSwgMSwgMTM3LCAyMTgsIDE2NSwgMjUsIDEsIDEzNywgCisgICAgMjE5LCAyMjksIDI1LCAxLCAxMzcsIDIxOCwgNTUsIDI1LCAxLCAxMzcsIDIwMCwgMjE1LCAyNSwgMSwgMTM3LCAyMTksIAorICAgIDE4MywgMjUsIDEsIDEzNywgMjEwLCA2MywgMjUsIDEsIDEzNywgMjE5LCAxOTQsIDI1LCAxLCAxMzcsIDIyNiwgMjI4LCAyNSwgCisgICAgMSwgMTM3LCAyMDYsIDEzMiwgMjUsIDEsIDEzNywgMjEwLCA0MiwgMjUsIDEsIDEzNywgMjE5LCA5MywgMjUsIDEsIDEzNywgCisgICAgMjA3LCAyNDQsIDI1LCAxLCAxMzcsIDIyNiwgMjMzLCAyNSwgMSwgMTM3LCAyMDAsIDk3LCAyNSwgMSwgMTM3LCAyMjUsIAorICAgIDI1MywgMjUsIDEsIDEzNywgMjEyLCAzLCAyNSwgMSwgMTM3LCAyMjIsIDIsIDI1LCAxLCAxMzcsIDIyMCwgNjIsIDI1LCAxLCAKKyAgICAxMzcsIDIyMiwgMTgzLCAyNSwgMSwgMTM3LCAyMjIsIDgsIDI1LCAxLCAxMzcsIDIxMCwgMTM5LCAyNSwgMSwgMTM3LCAyMDAsIAorICAgIDQxLCAyNSwgMSwgMTM3LCAyMTksIDg3LCAyNSwgMSwgMTM3LCAyMjYsIDIyNCwgMjIyLCA4OCwgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAxOTAsIDI1LCAxLCAxMzcsIDIwNCwgMjE1LCAyNSwgMSwgMTM3LCAyMzUsIDE5OCwgMjUsIDEsIDEzNywgMjE5LCAxODAsIAorICAgIDI1LCAxLCAxMzcsIDIzNywgMTE4LCAyNSwgMSwgMTM3LCAyMjAsIDY2LCAyNSwgMSwgMTM3LCAyMjEsIDIzNywgMjUsIDEsIAorICAgIDEzNywgMjI0LCAyMzEsIDI1LCAxLCAxMzcsIDIyMCwgNDgsIDI1LCAxLCAxMzcsIDIyMSwgMTAyLCAyNSwgMSwgMTM3LCAKKyAgICAyMjEsIDI0MSwgMjUsIDEsIDEzNywgMjE0LCAxODksIDI1LCAxLCAxMzcsIDIyMSwgMjM5LCAyNSwgMSwgMTM3LCAyMjEsIAorICAgIDI1NSwgMjUsIDEsIDEzNywgMjI0LCAyNSwgMjUsIDEsIDEzNywgMjE4LCAxNTcsIDI1LCAxLCAxMzcsIDIyMiwgMTA4LCAyNSwgCisgICAgMSwgMTM3LCAyMjUsIDIyNywgMjUsIDEsIDEzNywgMjE4LCA0NCwgMjUsIDEsIDEzNywgMjA2LCAxMzUsIDI1LCAxLCAxMzcsIAorICAgIDIwOSwgNCwgMjUsIDEsIDEzNywgMTk5LCAxNzcsIDI1LCAxLCAxMzcsIDIyNiwgMjI1LCAyNSwgMSwgMTM3LCAyMTMsIDIzMywgCisgICAgMjUsIDEsIDEzNywgMjA2LCAxODksIDI1LCAxLCAxMzcsIDIxOSwgMTkxLCAyNSwgMSwgMTM3LCAyMjIsIDQsIDI1LCAxLCAKKyAgICAxMzcsIDIxOCwgMTU2LCAyNSwgMSwgMTM3LCAyMjYsIDIyMywgMjUsIDEsIDEzNywgMjE1LCAxNTQsIDI1LCAxLCAxMzcsIAorICAgIDIxNSwgMjUwLCAyNSwgMSwgMTM3LCAyMTgsIDE4LCAyNSwgMSwgMTM3LCAyMjQsIDIzNywgMjUsIDEsIDEzNywgMjE5LCAKKyAgICAyMzAsIDI1LCAxLCAxMzcsIDIyMiwgMSwgMjUsIDEsIDEzNywgMjE5LCAyMDMsIDI1LCAxLCAxMzcsIDE5OSwgMTkxLCAyNSwgCisgICAgMSwgMTM3LCAyMTYsIDEzNSwgMjUsIDEsIDEzNywgMTk5LCAxOTAsIDI1LCAxLCAxMzcsIDIyMCwgNzEsIDI1LCAxLCAxMzcsIAorICAgIDIxOCwgMTQ2LCAyNSwgMSwgMTM3LCAyMDgsIDIxLCAyNSwgMSwgMTM3LCAyMjYsIDEsIDI1LCAxLCAxMzcsIDIxOSwgMjE5LCAKKyAgICAyNSwgMSwgMTM3LCAyMTksIDE4OCwgMjUsIDEsIDEzNywgMjA0LCAxOTYsIDI1LCAxLCAxMzcsIDIyMiwgMTIsIDI1LCAxLCAKKyAgICAxMzcsIDIyNSwgMjQ3LCAyNSwgMSwgMTM3LCAyMTgsIDE1NCwgMjUsIDEsIDEzNywgMjA2LCAxMzMsIDI1LCAxLCAxMzcsIAorICAgIDIyMiwgMjEwLCAyNSwgMSwgMTM3LCAyMTksIDIyOCwgMjUsIDEsIDEzNywgMjI0LCAyMzAsIDI1LCAxLCAxMzcsIDIxOSwgCisgICAgMjA5LCAyNSwgMSwgMTM3LCAyMTgsIDE1OSwgMjUsIDEsIDEzNywgMjE5LCA2NiwgMjUsIDEsIDEzNywgMjM1LCAxODIsIDI1LCAKKyAgICAxLCAxMzcsIDIyNiwgMTUsIDI1LCAxLCAxMzcsIDIxMywgMTQwLCAyMTcsIDkyLCAyNSwgMSwgMTM3LCAyMDcsIDE1LCAyNSwgCisgICAgMSwgMTM3LCAyMDUsIDE1NCwgMjUsIDEsIDEzNywgMjE4LCA0MSwgMjUsIDEsIDEzNywgMjEzLCAzMywgMjUsIDEsIDEzNywgCisgICAgMjI1LCAzMSwgMjUsIDEsIDEzNywgMjIyLCA2MywgMjUsIDEsIDEzNywgMjIzLCAyNDMsIDI1LCAxLCAxMzcsIDIwNywgMTkzLCAKKyAgICAyNSwgMSwgMTM3LCAyMjEsIDQxLCAyNSwgMSwgMTM3LCAyMTAsIDI4LCAyNSwgMSwgMTM3LCAyMTAsIDM4LCAyNSwgMSwgCisgICAgMTM3LCAyMjUsIDE5OSwgMjUsIDEsIDEzNywgMjE4LCAxMzMsIDI1LCAxLCAxMzcsIDIwOSwgMjIwLCAyNSwgMSwgMTM3LCAKKyAgICAyMTgsIDE0OCwgMjUsIDEsIDEzNywgMjE2LCA2MSwgMjUsIDEsIDEzNywgMjE5LCAxNTAsIDI1LCAxLCAxMzcsIDIwOSwgCisgICAgMjUxLCAyNSwgMSwgMTM3LCAyMTQsIDIwNCwgMjUsIDEsIDEzNywgMjIwLCAyMzUsIDI1LCAxLCAxMzcsIDIyNCwgNzAsIDI1LCAKKyAgICAxLCAxMzcsIDIxMywgMTQwLCAyMjEsIDM0LCAyNSwgMSwgMTM3LCAyMDYsIDE1LCAyNSwgMSwgMTM3LCAyMTgsIDEzNSwgMjUsIAorICAgIDEsIDEzNywgMjIyLCAxMDksIDIxMCwgMTM1LCAyNSwgMSwgMTM3LCAyMTIsIDEsIDI1LCAxLCAxMzcsIDIzNywgMTk0LCAyNSwgCisgICAgMSwgOTYsIDIyMCwgNzAsIDI1LCAxLCA5NiwgMjA1LCAxNjAsIDI1LCAxLCA5NiwgMjIyLCA5OCwgMjUsIDEsIDk2LCAyMjUsIAorICAgIDc0LCAyNSwgMSwgOTYsIDIwMiwgMTgwLCAyNSwgMSwgOTYsIDIyNCwgNzYsIDI1LCAxLCA5NiwgMjE2LCAyMTAsIDI1LCAxLCAKKyAgICA5NiwgMjA5LCAxNSwgMjUsIDEsIDk2LCAyMTMsIDIwOCwgMjUsIDEsIDk2LCAyMTgsIDE2MSwgMjUsIDEsIDk2LCAyMjAsIAorICAgIDQxLCAyNSwgMSwgOTYsIDIxNCwgMjIxLCAyNSwgMSwgOTYsIDIwNiwgMjQ2LCAyNSwgMSwgOTYsIDIxOSwgMTk2LCAyNSwgMSwgCisgICAgOTYsIDIyNiwgNDMsIDI1LCAxLCA5NiwgMjAwLCAyMDcsIDI1LCAxLCA5NiwgMjExLCAxOTAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMjAsIDI1LCAxLCA5NiwgMjE2LCAyMDcsIDI1LCAxLCA5NiwgMjA1LCAxNjEsIDI1LCAxLCA5NiwgMjI1LCAyNTEsIDI1LCAKKyAgICAxLCA5NiwgMjI0LCA5MSwgMjUsIDEsIDk2LCAyMTgsIDE2NCwgMjUsIDEsIDk2LCAyMTksIDE3MiwgMjUsIDEsIDk2LCAyMjIsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMTksIDE4OSwgMjUsIDEsIDk2LCAyMTksIDE3MSwgMjUsIDEsIDk2LCAyMTgsIDE2MywgMjUsIAorICAgIDEsIDk2LCAyMTMsIDMwLCAyNSwgMSwgOTYsIDIxOSwgODQsIDI1LCAxLCA5NiwgMjE2LCA1OSwgMjUsIDEsIDk2LCAyMTIsIAorICAgIDYxLCAyNSwgMSwgOTYsIDIxOSwgMjA0LCAyNSwgMSwgOTYsIDIyMSwgMjQ3LCAyNSwgMSwgOTYsIDIzNSwgMTc2LCAyNSwgMSwgCisgICAgOTYsIDIxOSwgMTkyLCAyNSwgMSwgOTYsIDIxOSwgOTUsIDI1LCAxLCA5NiwgMjIyLCAxNjQsIDI1LCAxLCA5NiwgMjI0LCAKKyAgICA3MiwgMjUsIDEsIDk2LCAyMTksIDIyNSwgMjUsIDEsIDk2LCAyMjAsIDU0LCAyNSwgMSwgOTYsIDIwNywgMTQsIDIxOCwgCisgICAgMTQ2LCAyNSwgMSwgOTYsIDIxMCwgMTQxLCAyNSwgMSwgOTYsIDIxNCwgMjE0LCAyNSwgMSwgOTYsIDIyMCwgNzQsIDIwOSwgCisgICAgMjIsIDI1LCAxLCA5NiwgMjE5LCAyMTIsIDIxOCwgNTUsIDI1LCAxLCA5NiwgMjAwLCA1LCAyNSwgMSwgOTYsIDIzNSwgMTc3LCAKKyAgICAyNSwgMSwgOTYsIDIwNCwgMjE0LCAyNSwgMSwgOTYsIDIwMCwgMjEsIDI1LCAxLCA5NiwgMjE1LCAxMDYsIDI1LCAxLCA5NiwgCisgICAgMjA0LCAyMDIsIDI1LCAxLCA5NiwgMjI2LCAyMzEsIDI1LCAxLCA5NiwgMjA4LCAyMCwgMjUsIDEsIDk2LCAyMDYsIDEzNCwgCisgICAgMjUsIDEsIDk2LCAyMDIsIDI0MywgMjUsIDEsIDk2LCAyMDEsIDQ0LCAyNSwgMSwgOTYsIDIyNSwgMTczLCAyNSwgMSwgOTYsIAorICAgIDIxNCwgMjI0LCAyNSwgMSwgOTYsIDIwNywgMjcsIDI1LCAxLCA5NiwgMjM1LCAxOTcsIDI1LCAxLCA5NiwgMjE5LCAyMzUsIAorICAgIDI1LCAxLCA5NiwgMjEwLCA0MSwgMjUsIDEsIDk2LCAyMjEsIDI0MiwgMjUsIDEsIDk2LCAyMjIsIDEwMiwgMjUsIDEsIDk2LCAKKyAgICAyMTgsIDUsIDI1LCAxLCA5NiwgMjE5LCA0OCwgMjUsIDEsIDk2LCAyMzYsIDI2LCAyNSwgMSwgOTYsIDIwNCwgMjAzLCAyNSwgCisgICAgMSwgOTYsIDIyNiwgNSwgMjUsIDEsIDk2LCAyMDAsIDczLCAyNSwgMSwgOTYsIDIxOCwgNDIsIDI0NiwgMTI2LCAyNSwgMSwgCisgICAgOTYsIDE5OSwgMjUxLCAyNSwgMSwgOTYsIDIyMiwgMywgMjUsIDEsIDk2LCAyMjAsIDU5LCAyNSwgMSwgOTYsIDIxNSwgMTk1LCAKKyAgICAyNSwgMSwgOTYsIDE5OSwgMTk2LCAyNSwgMSwgOTYsIDIyNCwgMjMyLCAyNSwgMSwgOTYsIDIzNiwgMTg3LCAyNSwgMSwgOTYsIAorICAgIDIzNiwgMjUsIDI1LCAxLCA5NiwgMjE5LCAxODIsIDI1LCAxLCA5NiwgMjI2LCAyMzMsIDI1LCAxLCA5NiwgMjIyLCAyMTksIAorICAgIDI1LCAxLCA5NiwgMjE5LCAxOTUsIDI1LCAxLCA5NiwgMjM1LCAxODMsIDI1LCAxLCA5NiwgMjM3LCAxOTUsIDI1LCAxLCA5NiwgCisgICAgMjE4LCAxMzYsIDI1LCAxLCA5NiwgMjE1LCAyNTEsIDI1LCAxLCA5NiwgMjAwLCAxOSwgMjUsIDEsIDk2LCAyMTksIDIyMSwgCisgICAgMjUsIDEsIDk2LCAyMTgsIDQyLCAyNDgsIDIwNSwgMjUsIDEsIDk2LCAyMTcsIDI0MSwgMjUsIDEsIDk2LCAyMTUsIDc5LCAKKyAgICAyNSwgMSwgOTYsIDIyMSwgMjAwLCAyNSwgMSwgOTYsIDIzNiwgMTg1LCAyNSwgMSwgOTYsIDIyMCwgMTUxLCAyNSwgMSwgOTYsIAorICAgIDIyMSwgMzksIDI1LCAxLCA5NiwgMjM1LCAxODIsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDcwLCAyNSwgMSwgOTYsIDIyMCwgCisgICAgMjM2LCAyNSwgMSwgOTYsIDIxNCwgMjIwLCAyNSwgMSwgOTYsIDIxOSwgMTg0LCAyNSwgMSwgOTYsIDIyNSwgMjM3LCAyNSwgCisgICAgMSwgOTYsIDIxNSwgMTkyLCAyNSwgMSwgOTYsIDIxOCwgMTQ5LCAyNSwgMSwgOTYsIDIwMCwgMjAsIDI1LCAxLCA5NiwgMjE5LCAKKyAgICAyMDUsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNiwgMzMsIDI1LCAxLCA5NiwgMjM2LCAxOTAsIDI0NywgMTY4LCAyNSwgMSwgCisgICAgOTYsIDIzNywgNiwgMjUsIDEsIDk2LCAyMTksIDg5LCAyNSwgMSwgOTYsIDYyLCAyNSwgMSwgOTYsIDIwNSwgMTU0LCAyNSwgCisgICAgMSwgOTYsIDc0LCAyNSwgMSwgOTYsIDcwLCAyNSwgMSwgOTYsIDIyNSwgNzIsIDI1LCAxLCA5NiwgMjE2LCAyMTEsIDIxNSwgCisgICAgMTE0LCAyNSwgMSwgOTYsIDIwNywgMzIsIDI1LCAxLCA5NiwgMjA2LCAyMzMsIDI1LCAxLCA5NiwgMjIwLCA3NCwgMjIwLCAKKyAgICAyMjMsIDIzMywgMTA5LCAyNSwgMSwgOTYsIDIxMCwgMTYsIDI1LCAxLCA5NiwgMjAwLCAxNiwgMjUsIDEsIDk2LCAyMTksIAorICAgIDE2NSwgMjUsIDEsIDk2LCAxOTksIDIwMSwgMjUsIDEsIDk2LCAxOTksIDIyOCwgMjA3LCAxNzMsIDI1LCAxLCA5NiwgMTk5LCAKKyAgICAyMjgsIDI0MywgMSwgMjUsIDEsIDk2LCAxOTksIDE4NSwgMjUsIDEsIDk2LCAxOTksIDE5MywgMjUsIDEsIDk2LCAyMjYsIAorICAgIDIxOSwgMjUsIDEsIDk2LCAyMTUsIDI0OSwgMjUsIDEsIDk2LCAyMTksIDkwLCAyMzgsIDEyNiwgMjUsIDEsIDk2LCAyMTQsIAorICAgIDIxNiwgMjUsIDEsIDk2LCAyMDAsIDIxMywgMjUsIDEsIDk2LCAyMzcsIDE0MCwgMjUsIDEsIDk2LCAyMDMsIDU0LCAyNSwgMSwgCisgICAgOTYsIDIyNCwgNDIsIDI1LCAxLCA5NiwgMjIxLCAyMTEsIDI1LCAxLCA5NiwgMjEzLCAxMDcsIDI1LCAxLCA5NiwgMjEzLCAKKyAgICAyMzQsIDI1LCAxLCA5NiwgMjE5LCAxNjQsIDI1LCAxLCA5NiwgMjE5LCAyNTMsIDI1LCAxLCA5NiwgMjEwLCA4LCAyNSwgMSwgCisgICAgOTYsIDIwOSwgMjUxLCAyNSwgMSwgOTYsIDIzNiwgMTkwLCAyMTMsIDE0MywgMjUsIDEsIDk2LCAxODgsIDI1LCAxLCA5NiwgCisgICAgMjE1LCAyMDQsIDI1LCAxLCA5NiwgMjI0LCA3MCwgMjUsIDEsIDk2LCAyMjYsIDg4LCAyNSwgMSwgOTYsIDIyMiwgNDAsIDI1LCAKKyAgICAxLCA5NiwgMTc4LCAyNSwgMSwgOTYsIDIyMiwgMTYxLCAyNSwgMSwgOTYsIDIwNiwgMTM2LCAyNSwgMSwgOTYsIDIyNiwgCisgICAgMTYzLCAyNSwgMSwgOTYsIDIyMSwgMTA2LCAyNSwgMSwgOTYsIDIwNiwgMTY2LCAyNSwgMSwgOTYsIDIzNywgMTY0LCAyNSwgCisgICAgMSwgOTYsIDIzNSwgMTcwLCAyNSwgMSwgMjE1LCAyMzMsIDE2MSwgMjUsIDEsIDIxNSwgMjMzLCA2NiwgMjUsIDEsIDIxNSwgCisgICAgMjMzLCAyMjYsIDE1LCAyNSwgMSwgMjE1LCAyMzMsIDIzOCwgMjU1LCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTY3LCAyNSwgCisgICAgMSwgMjE1LCAyMzMsIDIwNywgMTUsIDI1LCAxLCAyMTUsIDIzMywgMjE4LCA0MSwgMjUsIDEsIDIxNSwgMjMzLCAxOTQsIDI1LCAKKyAgICAxLCAyMTUsIDIzMywgMjEzLCAzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTMsIDgxLCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgNjMsIAorICAgIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAzMiwgMjUsIDEsIDIxNSwgMjMzLCAyMjAsIDczLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgCisgICAgOTYsIDI1LCAxLCAyMTUsIDIzMywgMjIzLCAyNDMsIDI1LCAxLCAyMTUsIDIzMywgMjA3LCAxOTMsIDI1LCAxLCAyMTUsIAorICAgIDIzMywgMjEwLCAyOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDksIDE4MiwgMjUsIDEsIDIxNSwgMjMzLCAyMTAsIDEzNywgMjUsIAorICAgIDEsIDIxNSwgMjMzLCAyMjUsIDE5OSwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDIzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIAorICAgIDEwNCwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDEzMywgMjUsIDEsIDIxNSwgMjMzLCAyMTksIDY3LCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDE5OSwgMjI3LCAyNSwgMSwgMjE1LCAyMzMsIDIwOSwgMjIwLCAyNSwgMSwgMjE1LCAyMzMsIDE4MywgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMTgsIDE2NywgMjUsIDEsIDIxNSwgMjMzLCAyMTUsIDI0OSwgMjUsIDEsIDIxNSwgMjMzLCAyMTgsIDE0OCwgCisgICAgMjUsIDEsIDIxNSwgMjMzLCAyMDAsIDIxMywgMjUsIDEsIDIxNSwgMjMzLCAyMTYsIDYxLCAyNSwgMSwgMjE1LCAyMzMsIAorICAgIDIxMiwgMTc1LCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTUwLCAyNSwgMSwgMjE1LCAyMzMsIDIxMywgMTA3LCAyNSwgMSwgCisgICAgMjE1LCAyMzMsIDIyNiwgMjQzLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMTgxLCAyNSwgMSwgMjE1LCAyMzMsIDIxOSwgMjMyLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMCwgOCwgMjUsIDEsIDIxNSwgMjMzLCAyMTQsIDIyMSwgMjUsIDEsIDIxNSwgMjMzLCAyMzcsIAorICAgIDYsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxMTQsIDI1LCAxLCAyMTUsIDIzMywgMjI0LCAyMTAsIDI1LCAxLCAyMTUsIDIzMywgCisgICAgMjI0LCA3MCwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDg4LCAyNSwgMSwgMjE1LCAyMzMsIDIyMiwgMTAwLCAyNSwgMSwgMjE1LCAKKyAgICAyMzMsIDIxMywgMTM5LCAyNSwgMSwgMjE1LCAyMzMsIDE3OCwgMjUsIDEsIDIxNSwgMjMzLCAyMjEsIDEzNiwgMjUsIDEsIAorICAgIDIxNSwgMjMzLCAyMjIsIDEwOCwgMjUsIDEsIDIxNSwgMjMzLCAyMDYsIDE0NiwgMjUsIDEsIDIxNSwgMjMzLCAyMjYsIDUwLCAKKyAgICAyNSwgMSwgMjE1LCAyMzMsIDIxMiwgMjEsIDI1LCAxLCAyMTUsIDIzMywgMjAxLCAxNjUsIDIyMSwgNDQsIDEsIDIwNywgMzYsIAorICAgIDIyMSwgNDQsIDEsIDIxOSwgMjAxLCAyMjEsIDQ0LCAxLCAxOTksIDI0NSwgMjIxLCA0NCwgMSwgMjIxLCAxNjYsIDIyMSwgCisgICAgNDQsIDEsIDI0OSwgMTM2LCAyMjEsIDQ0LCAxLCAyNDIsIDU4LCAyMjEsIDQ0LCAxLCA2MiwgMjIxLCA0NCwgMSwgMjE1LCAKKyAgICAyMjksIDIyMSwgNDQsIDEsIDIyNiwgMjAyLCAyMjEsIDQ0LCAxLCAyMzQsIDE2OSwgMjIxLCA0NCwgMSwgMjQyLCAzMywgCisgICAgMjIxLCA0NCwgMSwgMjQ2LCAxOTIsIDIyMSwgNDQsIDEsIDIyNywgNywgMjIxLCA0NCwgMSwgMjE3LCA5MywgMjIxLCA0NCwgCisgICAgMSwgMjIyLCAyMTYsIDIyMSwgNDQsIDEsIDIxOSwgMTE4LCAyMjEsIDQ0LCAxLCAxNzIsIDIyMSwgNDQsIDEsIDIxNywgNjMsIAorICAgIDIyMSwgNDQsIDEsIDc0LCAyMjEsIDQ0LCAxLCAyMTMsIDEsIDIyMSwgNDQsIDEsIDIxMCwgMzMsIDIyMSwgNDQsIDEsIDIwNiwgCisgICAgMTA1LCAyMjEsIDQ0LCAxLCAyMzksIDI3LCAyMjEsIDQ0LCAxLCAyMDEsIDExNCwgMjIxLCA0NCwgMSwgNzIsIDIyMSwgNDQsIAorICAgIDEsIDIyNiwgODgsIDIyMSwgNDQsIDEsIDIyNSwgODAsIDIyMSwgNDQsIDEsIDE5NCwgMjIxLCA0NCwgMSwgMjM0LCAyMjMsIAorICAgIDIyMSwgNDQsIDEsIDIxMywgODgsIDIyMSwgNDQsIDEsIDIwNiwgMTc5LCAyMjEsIDQ0LCAxNywgMTk5LCA4MSwgMjIxLCA0NCwgCisgICAgMTcsIDEwMiwgMjIxLCA0NCwgMTcsIDEwNSwgMjIxLCA0NCwgMTcsIDE0NywgMjIxLCA0NCwgMTcsIDE0OSwgMjIxLCA0NCwgCisgICAgMTcsIDE2NCwgMjIxLCA0NCwgMTcsIDE4NywgMjIxLCA0NCwgMTcsIDIxMCwgMTM1LCAyMjEsIDQ0LCAxNywgMTkyLCAyMjEsIAorICAgIDQ0LCAxNywgMjE5LCAxMTMsIDIyMSwgNDQsIDI0MiwgMTAsIDIyMSwgNDQsIDUzLCAyNDIsIDEwLCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMzgsIDE2MSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTYxLCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTEsIDIwMiwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM3LCAxOTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyMiwgMTAzLCAyNDksIDU4LCAKKyAgICAyMDMsIDg3LCAxLCAyMDAsIDYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIzNiwgNzQsIDI0OSwgNTgsIDIwMywgODcsIDEsIAorICAgIDI0MSwgODEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNiwgNDksIDI0OSwgNTgsIDIwMywgODcsIDEsIDIyNywgMTY2LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMzMsIDY3LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExNCwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMTk5LCAxNCwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjM2LCAxOSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgCisgICAgMjQwLCAyMTEsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0NywgNzYsIDI0OSwgNTgsIDIwMywgODcsIDEsIDIwMywgMTc1LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAxMzgsIDI0OSwgNTgsIDIwMywgODcsIDEsIDI0OSwgMTM2LCAyNDksIDU4LCAyMDMsIAorICAgIDg3LCAxLCAyMDEsIDE2NiwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMjAwLCA0NSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgMTcyLCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMDEsIDExMSwgMjQ5LCA1OCwgMjAzLCA4NywgMSwgNjIsIDI0OSwgNTgsIDIwMywgODcsIAorICAgIDEsIDc0LCAyNDksIDU4LCAyMDMsIDg3LCAxLCAyMTcsIDYzLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA2NiwgMjQ5LCA1OCwgCisgICAgMjAzLCA4NywgMSwgMjM4LCAyNTUsIDI0OSwgNTgsIDIwMywgODcsIDEsIDcyLCAyNDksIDU4LCAyMDMsIDg3LCAxLCA3MCwgCisgICAgMjQ5LCA1OCwgMjAzLCA4NywgMzgsIDEyMiwgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAxMjgsIDIwNSwgMTc0LCAKKyAgICAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjIxLCAyMDYsIDIwNSwgMTc0LCAyNDksIDU4LCAyMDMsIDg3LCAzOCwgMjI0LCA1NiwgCisgICAgMjA1LCAxNzQsIDI0OSwgNTgsIDIwMywgODcsIDM4LCAyMzQsIDU3LCAyMDUsIDE3NCwgMjQ5LCA1OCwgMjAzLCA4NywgMjM2LCAKKyAgICAxODMsIDIwOCwgNzYsIDEyNSwgMTIzLCAyMiwgMjI3LCA0LCAxMjUsIDEyMywgMjIsIDIyNywgMCwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MCwgMTI1LCAxMjMsIDIyLCAyMjYsIDEyNiwgMTI1LCAxMjMsIDIyLCAyMjcsIDI1LCAxMjUsIDEyMywgMjIsIAorICAgIDIyNywgMjIsIDEyNSwgMTIzLCAyMiwgMjI2LCA2LCAxMjUsIDEyMywgMjIsIDIyNSwgMjM0LCAxMjUsIDEyMywgMjIsIDIyNywgCisgICAgNiwgMTI1LCAxMjMsIDIyLCAyMjYsIDIxNywgMTI1LCAxMjMsIDIyLCAyMjcsIDgxLCAxMjUsIDEyMywgMjIsIDIyNywgNzgsIAorICAgIDEyNSwgMTIzLCAyMiwgMjI2LCA2NywgMTI1LCAxMjMsIDIyLCAyMjYsIDY0LCAxMjUsIDEyMywgMjIsIDIyNywgMTksIDEyNSwgCisgICAgMTIzLCAyMiwgMjI3LCAxNywgMTI1LCAxMjMsIDIyLCAyMjYsIDgsIDEyNSwgMTIzLCAyMiwgMjI2LCA3LCAxMjUsIDEyMywgCisgICAgMjIsIDIyNiwgODUsIDEyNSwgMTIzLCAyMiwgMjI2LCA1MywgMTI1LCAxMjMsIDIyLCAyMjYsIDE2MiwgMTI1LCAxMjMsIDIyLCAKKyAgICAyMjYsIDE2MSwgMTI1LCAxMjMsIDIyLCAyMjcsIDk2LCAxMjUsIDEyMywgMjIsIDIyNywgMjEsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI1LCAyMjUsIDEyNSwgMTIzLCAyMiwgMjI1LCAyMTYsIDEyNSwgMTIzLCAyMiwgMjI3LCAxMDQsIDEyNSwgMTIzLCAyMiwgCisgICAgMjI3LCA5NywgMTI1LCAxMjMsIDExMSwgMjAzLCA2NSwgMTI1LCAxMjMsIDExMSwgMjE4LCAxMzksIDEyNSwgMTIzLCAxMTEsIAorICAgIDIyNSwgNTgsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMTUwLCAxMjUsIDEyMywgMTExLCAyMTksIDI0LCAxMjUsIDEyMywgMTExLCAKKyAgICAyMTMsIDE5OSwgMTI1LCAxMjMsIDExMSwgMjE5LCA1MSwgMTI1LCAxMjMsIDExMSwgMjE0LCAxMzMsIDEyNSwgMTIzLCAxMTEsIAorICAgIDIwMCwgNjEsIDEyNSwgMTIzLCAxMTEsIDIzNCwgMzYsIDEyNSwgMTIzLCAxMTEsIDIyMiwgMTIzLCAxMjUsIDEyMywgMTExLCAKKyAgICAyNDcsIDEyLCAxMjUsIDEyMywgMTExLCAyMjAsIDc4LCAxMjUsIDEyMywgMTExLCAyMzMsIDIyOCwgMTI1LCAxMjMsIDExMSwgCisgICAgMjE1LCAxMjIsIDEyNSwgMTIzLCAxMTEsIDIxOCwgMTQ0LCAxMjUsIDEyMywgMTExLCAyMjAsIDExNiwgMTI1LCAxMjMsIAorICAgIDExMSwgMjUwLCAxMzksIDEyNSwgMTIzLCAxMTEsIDIwMCwgMTc3LCAxMjUsIDEyMywgMTExLCAyNDcsIDEwOSwgMTI1LCAKKyAgICAxMjMsIDEzNCwgMjQ2LCAxNjEsIDIwNCwgMjExLCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjA5LCAyOSwgMTI1LCAxMjMsIAorICAgIDEzNCwgMjQ2LCAxNjEsIDIyNiwgMjM1LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjI2LCAxOTMsIDEyNSwgMTIzLCAKKyAgICAxMzQsIDI0NiwgMTYxLCAyMDgsIDE4LCAxMjUsIDEyMywgMTM0LCAyNDYsIDE2MSwgMjMzLCAxOTQsIDEyNSwgMTIzLCAxMzQsIAorICAgIDI0NiwgMTYxLCAyMDYsIDIyMCwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMDYsIDU4LCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNSwgMjEsIDI0NywgNjcsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjQ3LCAxLCAxMjUsIDEyMywgMiwgMjAyLCAKKyAgICAxNzYsIDIwNiwgODMsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjM3LCAxMzcsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgCisgICAgMjE4LCAxMzQsIDEyNSwgMTIzLCAyLCAyMDAsIDEzNSwgMjEzLCA5MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMDUsIAorICAgIDEzNywgMTI1LCAxMjMsIDIsIDIwMCwgMTM1LCAyMzcsIDE3NiwgMTI1LCAxMjMsIDIsIDIwMiwgMTc2LCAyMTEsIDE4NCwgCisgICAgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIDIwOCwgMjIsIDEyNSwgMTIzLCAyLCAyMDIsIDE3NiwgMjE4LCAxODMsIDEyNSwgMTIzLCAKKyAgICAyLCAyMzIsIDIzNiwgMjAwLCA4MCwgMTI1LCAxMjMsIDIsIDIwMCwgMTc2LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNSwgCisgICAgOCwgMjEyLCAyNDYsIDEyNSwgMTIzLCAxNywgMTk5LCA4MSwgMTI1LCAxMjMsIDE3LCAxMDIsIDEyNSwgMTIzLCAxNywgMTA1LCAKKyAgICAxMjUsIDEyMywgMTcsIDE0NywgMTI1LCAxMjMsIDE3LCAxNDksIDEyNSwgMTIzLCAxNywgMTY0LCAxMjUsIDEyMywgMTcsIAorICAgIDE4NywgMTI1LCAxMjMsIDE3LCAyMTAsIDEzNSwgMTI1LCAxMjMsIDE3LCAxOTIsIDEyNSwgMTIzLCAxNywgMjE5LCAxMTMsIAorICAgIDEyNSwgMTIzLCA0MSwgMjA2LCAxNjEsIDEyNSwgMTIzLCA0MSwgMjMzLCA4MCwgMTI1LCAxMjMsIDQxLCAyMDYsIDE2NywgCisgICAgMjA2LCA0OCwgMTI1LCAxMjMsIDQxLCAyMjEsIDE2NywgMTI1LCAxMjMsIDQxLCAyMzMsIDgzLCAyMjEsIDE2NywgMTI1LCAKKyAgICAxMjMsIDQxLCAyMDYsIDE2NywgMjQ4LCAxNzAsIDEyNSwgMTIzLCA0MSwgMjA1LCA4NSwgMTI1LCAxMjMsIDIsIDIwMiwgCisgICAgMTc2LCAyMjQsIDM3LCAxMjUsIDEyMywgMiwgMjAwLCAxMzIsIDEyNSwgMTIzLCAyLCAyMzQsIDMxLCAxMjUsIDEyMywgMiwgCisgICAgMjA2LCA3MywgMjM0LCAzMSwgMTI1LCAxMjMsIDIsIDE5OCwgMjQ0LCAyMDYsIDExNiwgMTI1LCAxMjMsIDIsIDIzMywgMjEyLCAKKyAgICAxMjUsIDEyMywgMiwgMjE4LCAxOTcsIDEyNSwgMTIzLCAyLCAyMDAsIDE2OCwgMTI1LCAxMjMsIDIsIDIxOCwgMTM3LCAxMjUsIAorICAgIDEyMywgMiwgMjUwLCAxMjMsIDEyNSwgMTIzLCAyLCAyMDQsIDEzNiwgMjQ3LCA2NiwgMTI1LCAxMjMsIDIsIDIyMiwgNjIsIAorICAgIDIwNSwgMjQsIDEyNSwgMTIzLCAyLCAyMDYsIDIyMSwgMTI1LCAxMjMsIDIsIDIyNCwgNjcsIDEyNSwgMTIzLCAyLCAyMjAsIAorICAgIDI1MiwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMzQsIDIxOSwgMjI0LCAxNSwgMjE4LCAxNDIsIDIxOCwgMTQxLCAxMjUsIAorICAgIDEyMywgMiwgMjQ2LCAxNjEsIDI0MiwgMjEzLCAyMDUsIDE1LCAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM0LCAKKyAgICAxMjUsIDEyMywgMiwgMjQ2LCAxNjEsIDIwNCwgMTM1LCAyNDYsIDE4MCwgMTI1LCAxMjMsIDIsIDI0NiwgMTYxLCAyMTQsIAorICAgIDIxOSwgMjQxLCAyMzUsIDEyNSwgMTIzLCAyLCAyNDYsIDE2MSwgMjE4LCAxOTAsIDIwNSwgMTQ1LCAxMjUsIDEyMywgMjQ2LCAKKyAgICAxMzMsIDIsIDIwNSwgMTksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjAwLCA0NywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAKKyAgICAyMjQsIDE1NSwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDU2LCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwMCwgCisgICAgMTMxLCAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIyNiwgNjgsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAxNDcsIAorICAgIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjIxLCAzNywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDYsIDU5LCAxMjUsIDEyMywgCisgICAgMjQ2LCAxMzMsIDIsIDIwNSwgMjksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjE1LCAyNDIsIDEyNSwgMTIzLCAyNDYsIAorICAgIDEzMywgMiwgMjI2LCAyMDUsIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgMjM0LCAyMDksIDEyNSwgMTIzLCAyNDYsIDEzMywgMiwgCisgICAgMjAzLCA4NCwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMzcsIDE3MywgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMDAsIDg3LCAKKyAgICAxMjUsIDEyMywgMjQ2LCAxMzMsIDIsIDIwNSwgMiwgMTI1LCAxMjMsIDI0NiwgMTMzLCAyLCAyMjUsIDIyMCwgMTI1LCAxMjMsIAorICAgIDI0NiwgMTMzLCAyLCAyMDEsIDE1NiwgMTE0LCAxLCAxNzIsIDExNCwgMSwgMjQ5LCAxMzYsIDExNCwgMSwgMTEsIDE3MiwgCisgICAgMTE0LCAxLCAyMTUsIDEzNSwgMTE0LCAxLCAxNzgsIDExNCwgMSwgMjIxLCAyMTQsIDExNCwgMSwgMjUwLCAyMzQsIDE3OCwgCisgICAgMTE0LCAxLCAyMzcsIDE5NSwgMTE0LCAxLCAyMDMsIDkwLCAxMTQsIDEsIDIwMiwgMjM1LCAxMTQsIDEsIDIwNywgMzYsIAorICAgIDExNCwgMSwgMjQyLCA1OCwgMTE0LCAxLCAxMSwgMjA0LCAyNTMsIDExNCwgMSwgMTEsIDIwNywgMzYsIDExNCwgMSwgMjA0LCAKKyAgICAyNTMsIDExNCwgMSwgMjQxLCAyMjAsIDExNCwgMSwgMTg4LCAxMTQsIDEsIDIxOSwgMTU0LCAxMTQsIDEsIDExLCAyMTksIAorICAgIDIxLCAxMTQsIDEsIDI1MCwgMjM0LCAxODgsIDExNCwgMSwgMjE5LCAyMSwgMTE0LCAxLCAyMTksIDcsIDExNCwgMSwgMTk0LCAKKyAgICAxMTQsIDEsIDIyNCwgMSwgMTE0LCAxLCAyMjQsIDIyMywgMTE0LCAxLCAyMjQsIDIxMiwgMTE0LCAxLCAyMDUsIDIwMCwgCisgICAgMTE0LCAxLCAyNDAsIDIxOSwgMTE0LCAxLCAyMDUsIDE5MiwgMTE0LCAxLCAyNDAsIDIxOCwgMTE0LCAxLCAxNjEsIDExNCwgCisgICAgMSwgMjM2LCA4OSwgMTE0LCAxLCAxMSwgMTYxLCAxMTQsIDEsIDIxNCwgMTU5LCAxMTQsIDEsIDIxNCwgMTM2LCAxMTQsIDEsIAorICAgIDIxOSwgMjUzLCAxMTQsIDEsIDIxOSwgMjAyLCAxMTQsIDEsIDI1MCwgMjM0LCAyMTksIDI1MywgMTE0LCAxLCAxNDQsIDExNCwgCisgICAgMSwgMjAwLCAxODEsIDExNCwgMSwgMjM1LCAxOTksIDExNCwgMSwgMjM1LCAxNzQsIDExNCwgMSwgMjA1LCA3LCAxMTQsIDEsIAorICAgIDIzOSwgNzcsIDExNCwgMSwgMjE4LCA2MCwgMTE0LCAxLCAyMTgsIDQzLCAxMTQsIDEsIDIwNSwgMjIsIDExNCwgMSwgMjM5LCAKKyAgICA4NywgMTE0LCAxLCAxMSwgMjA1LCAyMiwgMTE0LCAxLCAxMSwgMjM5LCA4NywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAyMiwgCisgICAgMTE0LCAxLCAyMTAsIDExNCwgMTE0LCAxLCAyMDgsIDE3OSwgMTE0LCAxLCAxOTksIDc3LCAxMTQsIDEsIDE5OSwgNSwgMTE0LCAKKyAgICAxLCAyMDUsIDMyLCAxMTQsIDEsIDIzOSwgOTMsIDExNCwgMSwgMTEsIDIwNSwgMzIsIDExNCwgMSwgMjEyLCA2NCwgMTE0LCAKKyAgICAxLCAxOTksIDExNCwgMTE0LCAxLCAxOTksIDYsIDExNCwgMSwgMTk4LCAyMzIsIDExNCwgMSwgMTk4LCAyMTIsIDExNCwgMSwgCisgICAgMjUwLCAyMzQsIDE5OCwgMjMyLCAxMTQsIDEsIDE5OCwgMjA0LCAxMTQsIDEsIDE5OCwgMjExLCAxMTQsIDEsIDIwMSwgMTE0LCAKKyAgICAxMTQsIDEsIDI1MSwgMTg1LCAxMTQsIDEsIDIzNCwgODQsIDExNCwgMSwgMjIwLCAxMjEsIDExNCwgMiwgMjUwLCAxNzEsIAorICAgIDExNCwgMiwgMjEzLCAxNjUsIDIwMiwgMTg3LCAxMTQsIDIsIDIxMywgMTY1LCAyNTAsIDE3MSwgMTE0LCAyMiwgMiwgNjIsIAorICAgIDExNCwgMjIsIDIsIDI1MiwgMTM4LCAxMTQsIDIyLCAyLCAyNTEsIDE4MSwgMTE0LCAyMiwgMiwgMjUxLCA4NSwgMTE0LCAyMiwgCisgICAgMiwgMjUxLCA3NiwgMTE0LCAyMiwgMiwgNzQsIDExNCwgMjIsIDIsIDIxNywgNjMsIDExNCwgMjIsIDIsIDIwMSwgMCwgMTE0LCAKKyAgICAyMiwgMiwgMjAxLCAxNDcsIDExNCwgMjIsIDIsIDcyLCAxMTQsIDIyLCAyLCAyMzgsIDE3OSwgMTE0LCAyMiwgMiwgMjM4LCAKKyAgICAxNjUsIDExNCwgMjIsIDIsIDIxNywgMTE4LCAxMTQsIDIyLCAyLCA3MCwgMTE0LCAyMiwgMiwgMjMyLCAyNDAsIDExNCwgMjIsIAorICAgIDIsIDIzMiwgMjM5LCAxMTQsIDIyLCAyLCAyMzIsIDIzOCwgMTE0LCAyMiwgMiwgMjI4LCA0NSwgMTE0LCAyMiwgMiwgMjI4LCAKKyAgICAxNzgsIDExNCwgMjIsIDIsIDIyOCwgMTUxLCAxMTQsIDIyLCAyLCAyMjgsIDgsIDExNCwgMjIsIDIsIDIyOCwgOTEsIDExNCwgCisgICAgMjIsIDIsIDY2LCAxMTQsIDIyLCAyLCAyMDQsIDQ2LCAxMTQsIDIyLCAyLCAyMDQsIDQ1LCAxMTQsIDIyLCAyLCAyMDQsIDQ0LCAKKyAgICAxMTQsIDIyLCAyLCAyMDMsIDE4MiwgMTE0LCAyMiwgMiwgMjA0LCAyOCwgMTE0LCAyMiwgMiwgMjAzLCAyNDYsIDExNCwgMjIsIAorICAgIDIsIDIwMCwgMTIzLCAxMTQsIDIyLCAyLCAyMDAsIDksIDExNCwgMjIsIDIsIDI1MSwgMjIxLCAxMTQsIDIyLCAyLCAyNTEsIAorICAgIDIxNywgMTE0LCAyMiwgMiwgMjM4LCAxMDgsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDEwOCwgMTE0LCAyMiwgMiwgCisgICAgMjM4LCAxMTUsIDExNCwgMjIsIDIsIDIxMiwgMjE5LCAyMzgsIDExNSwgMTE0LCAyMiwgMiwgMjUxLCAxNzYsIDExNCwgMjIsIAorICAgIDIsIDIzOCwgMjM0LCAxMTQsIDIyLCAyLCAyNTAsIDEzOSwgMTE0LCAyMiwgMiwgMjE3LCAzLCAxMTQsIDIyLCAyLCAyMjAsIAorICAgIDIxNCwgMTE0LCAyMiwgMiwgMjE5LCAyNTUsIDExNCwgMTUwLCAyMTMsIDQ2LCAxMTQsIDE1MCwgMjA1LCAxNTgsIDIxMywgCisgICAgNDYsIDExNCwgMTUwLCA1NiwgMTE0LCAxNTAsIDU3LCAxMTQsIDEsIDIwNSwgMTcyLCAxMTQsIDEsIDIwNSwgMTcxLCAxMTQsIAorICAgIDEsIDIwNSwgMTcwLCAxMTQsIDEsIDIwNSwgMTY5LCAxMTQsIDEsIDIwNSwgMTY4LCAxMTQsIDEsIDIwNSwgMTY3LCAxMTQsIAorICAgIDEsIDIwNSwgMTY2LCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE3MywgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAxNzIsIDExNCwgCisgICAgMSwgMjEzLCAxNjUsIDIwNSwgMTcwLCAxMTQsIDEsIDIxMywgMTY1LCAyMDUsIDE2OSwgMTE0LCAxLCAyMTMsIDE2NSwgMjA1LCAKKyAgICAxNjgsIDExNCwgMSwgMjEzLCAxNjUsIDIwNSwgMTY2LCAxOCwgMjI4LCAxMCwgODEsIDE4LCAyNDYsIDYxLCAxOCwgMjQ2LCAKKyAgICA2MCwgMTgsIDI0NiwgNTksIDE4LCAyNDYsIDU4LCAxOCwgMjQ2LCA1NywgMTgsIDI0NiwgNTYsIDE4LCAyNDYsIDU1LCAxOCwgCisgICAgMjQ2LCA1NCwgMTgsIDI0NiwgNTMsIDE4LCAyNDYsIDUyLCAxOCwgMjQ2LCA1MSwgMTgsIDI0NiwgNTAsIDE4LCAyNDYsIDQ5LCAKKyAgICAxOCwgMjQ2LCA0OCwgMTgsIDI0NiwgNDcsIDE4LCAyNDYsIDQ2LCAxOCwgMjQ2LCA0NSwgMTgsIDI0NiwgNDQsIDE4LCAyNDYsIAorICAgIDQzLCAxOCwgMjQ2LCA0MiwgMTgsIDI0NiwgNDEsIDE4LCAyNDYsIDQwLCAxOCwgMjQ2LCAzOSwgMTgsIDI0NiwgMzgsIDE4LCAKKyAgICAyNDYsIDM3LCAxOCwgMjQ2LCAzNiwgMTgsIDI0NiwgMzUsIDE4LCAyNDYsIDM0LCAxOCwgMjQ2LCAzMywgMTgsIDI0NiwgMzIsIAorICAgIDE4LCAyNDYsIDMxLCAxOCwgMjQ2LCAzMCwgMTgsIDI0NiwgMjksIDE4LCAyNDYsIDI4LCAxOCwgMjQ2LCAyNywgMTgsIDI0NiwgCisgICAgMjYsIDE4LCAyNDYsIDI1LCAxOCwgMjQ2LCAyNCwgMTgsIDI0NiwgMjMsIDE4LCAyNDYsIDIyLCAxOCwgMjQ2LCAyMSwgMTgsIAorICAgIDI0NiwgMjAsIDE4LCAyNDYsIDE5LCAxOCwgMjQ2LCAxOCwgMTgsIDI0NiwgMTcsIDE4LCAyNDYsIDE2LCAxOCwgMjQ2LCAxNSwgCisgICAgMTgsIDI0NiwgMTQsIDE4LCAyNDYsIDEzLCAxOCwgMjQ2LCAxMiwgMTgsIDI0NiwgMTEsIDE4LCAyNDYsIDEwLCAxOCwgMjQ2LCAKKyAgICA5LCAxOCwgMjQ2LCA4LCAxOCwgMjQ2LCA3LCAxOCwgMjQ2LCA2LCAxOCwgMjQ2LCA1LCAxOCwgMjQ2LCA0LCAxOCwgMjQ2LCAKKyAgICAzLCAxOCwgMjQ2LCAyLCAxOCwgMjQ2LCAxLCAxOCwgMjQ2LCAwLCAxOCwgMjQ1LCAyNTUsIDE4LCAyNDUsIDI1NCwgMTgsIAorICAgIDI0NSwgMjUzLCAxOCwgMjQ1LCAyNTIsIDE4LCAyNDUsIDI1MSwgMTgsIDI0NSwgMjUwLCAxOCwgMjQ1LCAyNDksIDE4LCAKKyAgICAyNDUsIDI0OCwgMTgsIDI0NSwgMjQ3LCAxOCwgMjQ1LCAyNDYsIDE4LCAyNDUsIDI0NSwgMTgsIDI0NSwgMjQ0LCAxOCwgCisgICAgMjQ1LCAyNDMsIDE4LCAyNDUsIDI0MiwgMTgsIDI0NSwgMjQxLCAxOCwgMjQ1LCAyNDAsIDE4LCAyNDUsIDIzOSwgMTgsIAorICAgIDI0NSwgMjM4LCAxOCwgMjQ1LCAyMzcsIDE4LCAyNDUsIDIzNiwgMTgsIDI0NSwgMjM1LCAxOCwgMjQ1LCAyMzQsIDE4LCAKKyAgICAyNDUsIDIzMywgMTgsIDI0NSwgMjMyLCAxOCwgMjQ1LCAyMzEsIDE4LCAyNDUsIDIzMCwgMTgsIDI0NSwgMjI5LCAxOCwgCisgICAgMjQ1LCAyMjgsIDE4LCAyNDUsIDIyNywgMTgsIDI0NSwgMjI2LCAxOCwgMjQ1LCAyMjUsIDE4LCAyNDUsIDIyNCwgMTgsIAorICAgIDI0NSwgMjIzLCAxOCwgMjQ1LCAyMjIsIDE4LCAyNDUsIDIyMSwgMTgsIDI0NSwgMjIwLCAxOCwgMjQ1LCAyMTksIDE4LCAKKyAgICAyNDUsIDIxOCwgMTgsIDI0NSwgMjE3LCAxOCwgMjQ1LCAyMTYsIDE4LCAyNDUsIDIxNSwgMTgsIDI0NSwgMjE0LCAxOCwgCisgICAgMjQ1LCAyMTMsIDE4LCAyNDUsIDIxMiwgMTgsIDI0NSwgMjExLCAxOCwgMjQ1LCAyMTAsIDE4LCAyNDUsIDIwOSwgMTgsIAorICAgIDI0NSwgMjA4LCAxOCwgMjQ1LCAyMDcsIDE4LCAyNDUsIDIwNiwgMTgsIDI0NSwgMjA1LCAxOCwgMjQ1LCAyMDQsIDE4LCAKKyAgICAyNDUsIDIwMywgMTgsIDI0NSwgMjAyLCAxOCwgMjQ1LCAyMDEsIDE4LCAyNDUsIDIwMCwgMTgsIDI0NSwgMTk5LCAxOCwgCisgICAgMjQ1LCAxOTgsIDE4LCAyNDUsIDE5NywgMTgsIDI0NSwgMTk2LCAxOCwgMjQ1LCAxOTUsIDE4LCAyNDUsIDE5NCwgMTgsIAorICAgIDI0NSwgMTkzLCAxOCwgMjQ1LCAxOTIsIDE4LCAyNDUsIDE5MSwgMTgsIDI0NSwgMTkwLCAxOCwgMjQ1LCAxODksIDE4LCAKKyAgICAyNDUsIDE4OCwgMTgsIDI0NSwgMTg3LCAxOCwgMjQ1LCAxODYsIDE4LCAyNDUsIDE4NSwgMTgsIDI0NSwgMTg0LCAxOCwgCisgICAgMjQ1LCAxODMsIDE4LCAyNDUsIDE4MiwgMTgsIDI0NSwgMTgxLCAxOCwgMjQ1LCAxODAsIDE4LCAyNDUsIDE3OSwgMTgsIAorICAgIDI0NSwgMTc4LCAxOCwgMjQ1LCAxNzcsIDE4LCAyNDUsIDE3NiwgMTgsIDI0NSwgMTc1LCAxOCwgMjQ1LCAxNzQsIDE4LCAKKyAgICAyNDUsIDE3MywgMTgsIDI0NSwgMTcyLCAxOCwgMjQ1LCAxNzEsIDE4LCAyNDUsIDE3MCwgMTgsIDI0NSwgMTY5LCAxOCwgCisgICAgMjQ1LCAxNjgsIDE4LCAyNDUsIDE2NywgMTgsIDI0NSwgMTY2LCAxOCwgMjQ1LCAxNjUsIDE4LCAyNDUsIDE2NCwgMTgsIAorICAgIDI0NSwgMTYzLCAxOCwgMjQ1LCAxNjIsIDE4LCAyNDUsIDE2MSwgMTgsIDI0NSwgMTYwLCAxOCwgMjQ1LCAxNTksIDE4LCAKKyAgICAyNDUsIDE1OCwgMTgsIDI0NSwgMTU3LCAxOCwgMjQ1LCAxNTYsIDE4LCAyNDUsIDE1NSwgMTgsIDI0NSwgMTU0LCAxOCwgCisgICAgMjQ1LCAxNTMsIDE4LCAyNDUsIDE1MiwgMTgsIDI0NSwgMTUxLCAxOCwgMjQ1LCAxNTAsIDE4LCAyNDUsIDE0OSwgMTgsIAorICAgIDI0NSwgMTQ4LCAxOCwgMjQ1LCAxNDcsIDE4LCAyNDUsIDE0NiwgMTgsIDI0NSwgMTQ1LCAxOCwgMjQ1LCAxNDQsIDE4LCAKKyAgICAyNDUsIDE0MywgMTgsIDI0NSwgMTQyLCAxOCwgMjQ1LCAxNDEsIDE4LCAyNDUsIDE0MCwgMTgsIDI0NSwgMTM5LCAxOCwgCisgICAgMjQ1LCAxMzgsIDE4LCAyNDUsIDEzNywgMTgsIDI0NSwgMTM2LCAxOCwgMjQ1LCAxMzUsIDE4LCAyNDUsIDEzNCwgMTgsIAorICAgIDI0NSwgMTMzLCAxOCwgMjQ1LCAxMzIsIDE4LCAyNDUsIDEzMSwgMTgsIDI0NSwgMTMwLCAxOCwgMjQ1LCAxMjksIDE4LCAKKyAgICAyNDUsIDEyOCwgMTgsIDI0NSwgMTI3LCAxOCwgMjQ1LCAxMjYsIDE4LCAyNDUsIDEyNSwgMTgsIDI0NSwgMTI0LCAxOCwgCisgICAgMjQ1LCAxMjMsIDE4LCAyNDUsIDEyMiwgMTgsIDI0NSwgMTIxLCAxOCwgMjQ1LCAxMjAsIDE4LCAyNDUsIDExOSwgMTgsIAorICAgIDI0NSwgMTE4LCAxOCwgMjQ1LCAxMTcsIDE4LCAyNDUsIDExNiwgMTgsIDI0NSwgMTE1LCAxOCwgMjQ1LCAxMTQsIDE4LCAKKyAgICAyNDUsIDExMywgMTgsIDI0NSwgMTEyLCAxOCwgMjQ1LCAxMTEsIDE4LCAyNDUsIDExMCwgMTgsIDI0NSwgMTA5LCAxOCwgCisgICAgMjQ1LCAxMDgsIDE4LCAyNDUsIDEwNywgMTgsIDI0NSwgMTA2LCAxOCwgMjQ1LCAxMDUsIDE4LCAyNDUsIDEwNCwgMTgsIAorICAgIDI0NSwgMTAzLCAxOCwgMjQ1LCAxMDIsIDE4LCAyNDUsIDEwMSwgMTgsIDI0NSwgMTAwLCAxOCwgMjQ1LCA5OSwgMTgsIDI0NSwgCisgICAgOTgsIDE4LCAyNDUsIDk3LCAxOCwgMjQ1LCA5NiwgMTgsIDI0NSwgOTUsIDE4LCAyNDUsIDk0LCAxOCwgMjQ1LCA5MywgMTgsIAorICAgIDI0NSwgOTIsIDE4LCAyNDUsIDkxLCAxOCwgMjQ1LCA5MCwgMTgsIDI0NSwgODksIDE4LCAyNDUsIDg4LCAxOCwgMjQ1LCA4NywgCisgICAgMTgsIDI0NSwgODYsIDE4LCAyNDUsIDg1LCAxOCwgMjQ1LCA4NCwgMTgsIDI0NSwgODMsIDE4LCAyNDUsIDgyLCAxOCwgMjQ1LCAKKyAgICA4MSwgMTgsIDI0NSwgODAsIDE4LCAyNDUsIDc5LCAxOCwgMjQ1LCA3OCwgMTgsIDI0NSwgNzcsIDE4LCAyNDUsIDc2LCAxOCwgCisgICAgMjQ1LCA3NSwgMTgsIDI0NSwgNzQsIDE4LCAyNDUsIDczLCAxOCwgMjQ1LCA3MiwgMTgsIDI0NSwgNzEsIDE4LCAyNDUsIDcwLCAKKyAgICAxOCwgMjQ1LCA2OSwgMTgsIDI0NSwgNjgsIDE4LCAyNDUsIDY3LCAxOCwgMjQ1LCA2NiwgMTgsIDI0NSwgNjUsIDE4LCAyNDUsIAorICAgIDY0LCAxOCwgMjQ1LCA2MywgMTgsIDI0NSwgNjIsIDE4LCAyNDUsIDYxLCAxOCwgMjQ1LCA2MCwgMTgsIDI0NSwgNTksIDE4LCAKKyAgICAyNDUsIDU4LCAxOCwgMjQ1LCA1NywgMTgsIDI0NSwgNTYsIDE4LCAyNDUsIDU1LCAxOCwgMjQ1LCA1NCwgMTgsIDI0NSwgNTMsIAorICAgIDE4LCAyNDUsIDUyLCAxOCwgMjQ1LCA1MSwgMTgsIDI0NSwgNTAsIDE4LCAyNDUsIDQ5LCAxOCwgMjQ1LCA0OCwgMTgsIDI0NSwgCisgICAgNDcsIDE4LCAyNDUsIDQ2LCAxOCwgMjQ1LCA0NSwgMTgsIDI0NSwgNDQsIDE4LCAyNDUsIDQzLCAxOCwgMjQ1LCA0MiwgMTgsIAorICAgIDI0NSwgNDEsIDE4LCAyNDUsIDQwLCAxOCwgMjQ1LCAzOSwgMTgsIDI0NSwgMzgsIDE4LCAyNDUsIDM3LCAxOCwgMjQ1LCAzNiwgCisgICAgMTgsIDI0NSwgMzUsIDE4LCAyNDUsIDM0LCAxOCwgMjQ1LCAzMywgMTgsIDI0NSwgMzIsIDE4LCAyNDUsIDMxLCAxOCwgMjQ1LCAKKyAgICAzMCwgMTgsIDI0NSwgMjksIDE4LCAyNDUsIDI4LCAxOCwgMjQ1LCAyNywgMTgsIDI0NSwgMjYsIDE4LCAyNDUsIDI1LCAxOCwgCisgICAgMjQ1LCAyNCwgMTgsIDI0NSwgMjMsIDE4LCAyNDUsIDIyLCAxOCwgMjQ1LCAyMSwgMTgsIDI0NSwgMjAsIDE4LCAyNDUsIDE5LCAKKyAgICAxOCwgMjQ1LCAxOCwgMTgsIDI0NSwgMTcsIDE4LCAyNDUsIDE2LCAxOCwgMjQ1LCAxNSwgMTgsIDI0NSwgMTQsIDE4LCAyNDUsIAorICAgIDEzLCAxOCwgMjQ1LCAxMiwgMTgsIDI0NSwgMTEsIDE4LCAyNDUsIDEwLCAxOCwgMjQ1LCA5LCAxOCwgMjQ1LCA4LCAxOCwgCisgICAgMjQ1LCA3LCAxOCwgMjQ1LCA2LCAxOCwgMjQ1LCA1LCAxOCwgMjQ1LCA0LCAxOCwgMjQ1LCAzLCAxOCwgMjQ1LCAyLCAxOCwgCisgICAgMjQ1LCAxLCAxOCwgMjQ1LCAwLCAxOCwgMjQ0LCAyNTUsIDE4LCAyNDQsIDI1NCwgMTgsIDI0NCwgMjUzLCAxOCwgMjQ0LCAKKyAgICAyNTIsIDE4LCAyNDQsIDI1MSwgMTgsIDI0NCwgMjUwLCAxOCwgMjQ0LCAyNDksIDE4LCAyNDQsIDI0OCwgMTgsIDI0NCwgCisgICAgMjQ3LCAxOCwgMjQ0LCAyNDYsIDE4LCAyNDQsIDI0NSwgMTgsIDI0NCwgMjQ0LCAxOCwgMjQ0LCAyNDMsIDE4LCAyNDQsIAorICAgIDI0MiwgMTgsIDI0NCwgMjQxLCAxOCwgMjQ0LCAyNDAsIDE4LCAyNDQsIDIzOSwgMTgsIDI0NCwgMjM4LCAxOCwgMjQ0LCAKKyAgICAyMzcsIDE4LCAyNDQsIDIzNiwgMTgsIDI0NCwgMjM1LCAxOCwgMjQ0LCAyMzQsIDE4LCAyNDQsIDIzMywgMTgsIDI0NCwgCisgICAgMjMyLCAxOCwgMjQ0LCAyMzEsIDE4LCAyNDQsIDIzMCwgMTgsIDI0NCwgMjI5LCAxOCwgMjQ0LCAyMjgsIDE4LCAyNDQsIAorICAgIDIyNywgMTgsIDI0NCwgMjI2LCAxOCwgMjQ0LCAyMjUsIDE4LCAyNDQsIDIyNCwgMTgsIDI0NCwgMjIzLCAxOCwgMjQ0LCAKKyAgICAyMjIsIDE4LCAyNDQsIDIyMSwgMTgsIDI0NCwgMjIwLCAxOCwgMjQ0LCAyMTksIDE4LCAyNDQsIDIxOCwgMTgsIDI0NCwgCisgICAgMjE3LCAxOCwgMjQ0LCAyMTYsIDE4LCAyNDQsIDIxNSwgMTgsIDI0NCwgMjE0LCAxOCwgMjQ0LCAyMTMsIDE4LCAyNDQsIAorICAgIDIxMiwgMTgsIDI0NCwgMjExLCAxOCwgMjQ0LCAyMTAsIDE4LCAyNDQsIDIwOSwgMTgsIDI0NCwgMjA4LCAxOCwgMjQ0LCAKKyAgICAyMDcsIDE4LCAyNDQsIDIwNiwgMTgsIDI0NCwgMjA1LCAxOCwgMjQ0LCAyMDQsIDE4LCAyNDQsIDIwMywgMTgsIDI0NCwgCisgICAgMjAyLCAxOCwgMjQ0LCAyMDEsIDE4LCAyNDQsIDIwMCwgMTgsIDI0NCwgMTk5LCAxOCwgMjQ0LCAxOTgsIDE4LCAyNDQsIAorICAgIDE5NywgMTgsIDI0NCwgMTk2LCAxOCwgMjQ0LCAxOTUsIDE4LCAyNDQsIDE5NCwgMTgsIDI0NCwgMTkzLCAxOCwgMjQ0LCAKKyAgICAxOTIsIDE4LCAyNDQsIDE5MSwgMTgsIDI0NCwgMTkwLCAxOCwgMjQ0LCAxODksIDE4LCAyNDQsIDE4OCwgMTgsIDI0NCwgCisgICAgMTg3LCAxOCwgMjQ0LCAxODYsIDE4LCAyNDQsIDE4NSwgMTgsIDI0NCwgMTg0LCAxOCwgMjQ0LCAxODMsIDE4LCAyNDQsIAorICAgIDE4MiwgMTgsIDI0NCwgMTgxLCAxOCwgMjQ0LCAxODAsIDE4LCAyNDQsIDE3OSwgMTgsIDI0NCwgMTc4LCAxOCwgMjQ0LCAKKyAgICAxNzcsIDE4LCAyNDQsIDE3NiwgMTgsIDI0NCwgMTc1LCAxOCwgMjQ0LCAxNzQsIDE4LCAyNDQsIDE3MywgMTgsIDI0NCwgCisgICAgMTcyLCAxOCwgMjQ0LCAxNzEsIDE4LCAyNDQsIDE3MCwgMTgsIDI0NCwgMTY5LCAxOCwgMjQ0LCAxNjgsIDE4LCAyNDQsIAorICAgIDE2NywgMTgsIDI0NCwgMTY2LCAxOCwgMjQ0LCAxNjUsIDE4LCAyNDQsIDE2NCwgMTgsIDI0NCwgMTYzLCAxOCwgMjQ0LCAKKyAgICAxNjIsIDE4LCAyNDQsIDE2MSwgMTgsIDI0NCwgMTYwLCAxOCwgMjQ0LCAxNTksIDE4LCAyNDQsIDE1OCwgMTgsIDI0NCwgCisgICAgMTU3LCAxOCwgMjQ0LCAxNTYsIDE4LCAyNDQsIDE1NSwgMTgsIDI0NCwgMTU0LCAxOCwgMjQ0LCAxNTMsIDE4LCAyNDQsIAorICAgIDE1MiwgMTgsIDI0NCwgMTUxLCAxOCwgMjQ0LCAxNTAsIDE4LCAyNDQsIDE0OSwgMTgsIDI0NCwgMTQ4LCAxOCwgMjQ0LCAKKyAgICAxNDcsIDE4LCAyNDQsIDE0NiwgMTgsIDI0NCwgMTQ1LCAxOCwgMjQ0LCAxNDQsIDE4LCAyNDQsIDE0MywgMTgsIDI0NCwgCisgICAgMTQyLCAxOCwgMjQ0LCAxNDEsIDE4LCAyNDQsIDE0MCwgMTgsIDI0NCwgMTM5LCAxOCwgMjQ0LCAxMzgsIDE4LCAyNDQsIAorICAgIDEzNywgMTgsIDI0NCwgMTM2LCAxOCwgMjQ0LCAxMzUsIDE4LCAyNDQsIDEzNCwgMTgsIDI0NCwgMTMzLCAxOCwgMjQ0LCAKKyAgICAxMzIsIDE4LCAyNDQsIDEzMSwgMTgsIDI0NCwgMTMwLCAxOCwgMjQ0LCAxMjksIDE4LCAyNDQsIDEyOCwgMTgsIDI0NCwgCisgICAgMTI3LCAxOCwgMjQ0LCAxMjYsIDE4LCAyNDQsIDEyNSwgMTgsIDI0NCwgMTI0LCAxOCwgMjQ0LCAxMjMsIDE4LCAyNDQsIAorICAgIDEyMiwgMTgsIDI0NCwgMTIxLCAxOCwgMjQ0LCAxMjAsIDE4LCAyNDQsIDExOSwgMTgsIDI0NCwgMTE4LCAxOCwgMjQ0LCAKKyAgICAxMTcsIDE4LCAyNDQsIDExNiwgMTgsIDI0NCwgMTE1LCAxOCwgMjQ0LCAxMTQsIDE4LCAyNDQsIDExMywgMTgsIDI0NCwgCisgICAgMTEyLCAxOCwgMjQ0LCAxMTEsIDE4LCAyNDQsIDExMCwgMTgsIDI0NCwgMTA5LCAxOCwgMjQ0LCAxMDgsIDE4LCAyNDQsIAorICAgIDEwNywgMTgsIDI0NCwgMTA2LCAxOCwgMjQ0LCAxMDUsIDE4LCAyNDQsIDEwNCwgMTgsIDI0NCwgMTAzLCAxOCwgMjQ0LCAKKyAgICAxMDIsIDE4LCAyNDQsIDEwMSwgMTgsIDI0NCwgMTAwLCAxOCwgMjQ0LCA5OSwgMTgsIDI0NCwgOTgsIDE4LCAyNDQsIDk3LCAKKyAgICAxOCwgMjQ0LCA5NiwgMTgsIDI0NCwgOTUsIDE4LCAyNDQsIDk0LCAxOCwgMjQ0LCA5MywgMTgsIDI0NCwgOTIsIDE4LCAyNDQsIAorICAgIDkxLCAxOCwgMjQ0LCA5MCwgMTgsIDI0NCwgODksIDE4LCAyNDQsIDg4LCAxOCwgMjQ0LCA4NywgMTgsIDI0NCwgODYsIDE4LCAKKyAgICAyNDQsIDg1LCAxOCwgMjQ0LCA4NCwgMTgsIDI0NCwgODMsIDE4LCAyNDQsIDgyLCAxOCwgMjQ0LCA4MSwgMTgsIDI0NCwgODAsIAorICAgIDE4LCAyNDQsIDc5LCAxOCwgMjQ0LCA3OCwgMTgsIDI0NCwgNzcsIDE4LCAyNDQsIDc2LCAxOCwgMjQ0LCA3NSwgMTgsIDI0NCwgCisgICAgNzQsIDE4LCAyNDQsIDczLCAxOCwgMjQ0LCA3MiwgMTgsIDI0NCwgNzEsIDE4LCAyNDQsIDcwLCAxOCwgMjQ0LCA2OSwgMTgsIAorICAgIDI0NCwgNjgsIDE4LCAyNDQsIDY3LCAxOCwgMjQ0LCA2NiwgMTgsIDI0NCwgNjUsIDE4LCAyNDQsIDY0LCAxOCwgMjQ0LCA2MywgCisgICAgMTgsIDI0NCwgNjIsIDE4LCAyNDQsIDYxLCAxOCwgMjQ0LCA2MCwgMTgsIDI0NCwgNTksIDE4LCAyNDQsIDU4LCAxOCwgMjQ0LCAKKyAgICA1NywgMTgsIDI0NCwgNTYsIDE4LCAyNDQsIDU1LCAxOCwgMjQ0LCA1NCwgMTgsIDI0NCwgNTMsIDE4LCAyNDQsIDUyLCAxOCwgCisgICAgMjQ0LCA1MSwgMTgsIDI0NCwgNTAsIDE4LCAyNDQsIDQ5LCAxOCwgMjQ0LCA0OCwgMTgsIDI0NCwgNDcsIDE4LCAyNDQsIDQ2LCAKKyAgICAxOCwgMjQ0LCA0NSwgMTgsIDI0NCwgNDQsIDE4LCAyNDQsIDQzLCAxOCwgMjQ0LCA0MiwgMTgsIDI0NCwgNDEsIDE4LCAyNDQsIAorICAgIDQwLCAxOCwgMjQ0LCAzOSwgMTgsIDI0NCwgMzgsIDE4LCAyNDQsIDM3LCAxOCwgMjQ0LCAzNiwgMTgsIDI0NCwgMzUsIDE4LCAKKyAgICAyNDQsIDM0LCAxOCwgMjQ0LCAzMywgMTgsIDI0NCwgMzIsIDE4LCAyNDQsIDMxLCAxOCwgMjQ0LCAzMCwgMTgsIDI0NCwgMjksIAorICAgIDE4LCAyNDQsIDI4LCAxOCwgMjQ0LCAyNywgMTgsIDI0NCwgMjYsIDE4LCAyNDQsIDI1LCAxOCwgMjQ0LCAyNCwgMTgsIDI0NCwgCisgICAgMjMsIDE4LCAyNDQsIDIyLCAxOCwgMjQ0LCAyMSwgMTgsIDI0NCwgMjAsIDE4LCAyNDQsIDE5LCAxOCwgMjQ0LCAxOCwgMTgsIAorICAgIDI0NCwgMTcsIDE4LCAyNDQsIDE2LCAxOCwgMjQ0LCAxNSwgMTgsIDI0NCwgMTQsIDE4LCAyNDQsIDEzLCAxOCwgMjQ0LCAxMiwgCisgICAgMTgsIDI0NCwgMTEsIDE4LCAyNDQsIDEwLCAxOCwgMjQ0LCA5LCAxOCwgMjQ0LCA4LCAxOCwgMjQ0LCA3LCAxOCwgMjQ0LCA2LCAKKyAgICAxOCwgMjQ0LCA1LCAxOCwgMjQ0LCA0LCAxOCwgMjQ0LCAzLCAxOCwgMjQ0LCAyLCAxOCwgMjQ0LCAxLCAxOCwgMjQ0LCAwLCAKKyAgICAxOCwgMjQzLCAyNTUsIDE4LCAyNDMsIDI1NCwgMTgsIDI0MywgMjUzLCAxOCwgMjQzLCAyNTIsIDE4LCAyNDMsIDI1MSwgMTgsIAorICAgIDI0MywgMjUwLCAxOCwgMjQzLCAyNDksIDE4LCAyNDMsIDI0OCwgMTgsIDI0MywgMjQ3LCAxOCwgMjQzLCAyNDYsIDE4LCAKKyAgICAyNDMsIDI0NSwgMTgsIDI0MywgMjQ0LCAxOCwgMjQzLCAyNDMsIDE4LCAyNDMsIDI0MiwgMTgsIDI0MywgMjQxLCAxOCwgCisgICAgMjQzLCAyNDAsIDE4LCAyNDMsIDIzOSwgMTgsIDI0MywgMjM4LCAxOCwgMjQzLCAyMzcsIDE4LCAyNDMsIDIzNiwgMTgsIAorICAgIDI0MywgMjM1LCAxOCwgMjQzLCAyMzQsIDE4LCAyNDMsIDIzMywgMTgsIDI0MywgMjMyLCAxOCwgMjQzLCAyMzEsIDE4LCAKKyAgICAyNDMsIDIzMCwgMTgsIDI0MywgMjI5LCAxOCwgMjQzLCAyMjgsIDE4LCAyNDMsIDIyNywgMTgsIDI0MywgMjI2LCAxOCwgCisgICAgMjQzLCAyMjUsIDE4LCAyNDMsIDIyNCwgMTgsIDI0MywgMjIzLCAxOCwgMjQzLCAyMjIsIDE4LCAyNDMsIDIyMSwgMTgsIAorICAgIDI0MywgMjIwLCAxOCwgMjQzLCAyMTksIDE4LCAyNDMsIDIxOCwgMTgsIDI0MywgMjE3LCAxOCwgMjQzLCAyMTYsIDE4LCAKKyAgICAyNDMsIDIxNSwgMTgsIDI0MywgMjE0LCAxOCwgMjQzLCAyMTMsIDE4LCAyNDMsIDIxMiwgMTgsIDI0MywgMjExLCAxOCwgCisgICAgMjQzLCAyMTAsIDE4LCAyNDMsIDIwOSwgMTgsIDI0MywgMjA4LCAxOCwgMjQzLCAyMDcsIDE4LCAyNDMsIDIwNiwgMTgsIAorICAgIDI0MywgMjA1LCAxOCwgMjQzLCAyMDQsIDE4LCAyNDMsIDIwMywgMTgsIDI0MywgMjAyLCAxOCwgMjQzLCAyMDEsIDE4LCAKKyAgICAyNDMsIDIwMCwgMTgsIDI0MywgMTk5LCAxOCwgMjQzLCAxOTgsIDE4LCAyNDMsIDE5NywgMTgsIDI0MywgMTk2LCAxOCwgCisgICAgMjQzLCAxOTUsIDE4LCAyNDMsIDE5NCwgMTgsIDI0MywgMTkzLCAxOCwgMjQzLCAxOTIsIDE4LCAyNDMsIDE5MSwgMTgsIAorICAgIDI0MywgMTkwLCAxOCwgMjQzLCAxODksIDE4LCAyNDMsIDE4OCwgMTgsIDI0MywgMTg3LCAxOCwgMjQzLCAxODYsIDE4LCAKKyAgICAyNDMsIDE4NSwgMTgsIDI0MywgMTg0LCAxOCwgMjQzLCAxODMsIDE4LCAyNDMsIDE4MiwgMTgsIDI0MywgMTgxLCAxOCwgCisgICAgMjQzLCAxODAsIDE4LCAyNDMsIDE3OSwgMTgsIDI0MywgMTc4LCAxOCwgMjQzLCAxNzcsIDE4LCAyNDMsIDE3NiwgMTgsIAorICAgIDI0MywgMTc1LCAxOCwgMjQzLCAxNzQsIDE4LCAyNDMsIDE3MywgMTgsIDI0MywgMTcyLCAxOCwgMjQzLCAxNzEsIDE4LCAKKyAgICAyNDMsIDE3MCwgMTgsIDI0MywgMTY5LCAxOCwgMjQzLCAxNjgsIDE4LCAyNDMsIDE2NywgMTgsIDI0MywgMTY2LCAxOCwgCisgICAgMjQzLCAxNjUsIDE4LCAyNDMsIDE2NCwgMTgsIDI0MywgMTYzLCAxOCwgMjQzLCAxNjIsIDE4LCAyNDMsIDE2MSwgMTgsIAorICAgIDI0MywgMTYwLCAxOCwgMjQzLCAxNTksIDE4LCAyNDMsIDE1OCwgMTgsIDI0MywgMTU3LCAxOCwgMjQzLCAxNTYsIDE4LCAKKyAgICAyNDMsIDE1NSwgMTgsIDI0MywgMTU0LCAxOCwgMjQzLCAxNTMsIDE4LCAyNDMsIDE1MiwgMTgsIDI0MywgMTUxLCAxOCwgCisgICAgMjQzLCAxNTAsIDE4LCAyNDMsIDE0OSwgMTgsIDI0MywgMTQ4LCAxOCwgMjQzLCAxNDcsIDE4LCAyNDMsIDE0NiwgMTgsIAorICAgIDI0MywgMTQ1LCAxOCwgMjQzLCAxNDQsIDE4LCAyNDMsIDE0MywgMTgsIDI0MywgMTQyLCAxOCwgMjQzLCAxNDEsIDE4LCAKKyAgICAyNDMsIDE0MCwgMTgsIDI0MywgMTM5LCAxOCwgMjQzLCAxMzgsIDE4LCAyNDMsIDEzNywgMTgsIDI0MywgMTM2LCAxOCwgCisgICAgMjQzLCAxMzUsIDE4LCAyNDMsIDEzNCwgMTgsIDI0MywgMTMzLCAxOCwgMjQzLCAxMzIsIDE4LCAyNDMsIDEzMSwgMTgsIAorICAgIDI0MywgMTMwLCAxOCwgMjQzLCAxMjksIDE4LCAyNDMsIDEyOCwgMTgsIDI0MywgMTI3LCAxOCwgMjQzLCAxMjYsIDE4LCAKKyAgICAyNDMsIDEyNSwgMTgsIDI0MywgMTI0LCAxOCwgMjQzLCAxMjMsIDE4LCAyNDMsIDEyMiwgMTgsIDI0MywgMTIxLCAxOCwgCisgICAgMjQzLCAxMjAsIDE4LCAyNDMsIDExOSwgMTgsIDI0MywgMTE4LCAxOCwgMjQzLCAxMTcsIDE4LCAyNDMsIDExNiwgMTgsIAorICAgIDI0MywgMTE1LCAxOCwgMjQzLCAxMTQsIDE4LCAyNDMsIDExMywgMTgsIDI0MywgMTEyLCAxOCwgMjQzLCAxMTEsIDE4LCAKKyAgICAyNDMsIDExMCwgMTgsIDI0MywgMTA5LCAxOCwgMjQzLCAxMDgsIDE4LCAyNDMsIDEwNywgMTgsIDI0MywgMTA2LCAxOCwgCisgICAgMjQzLCAxMDUsIDE4LCAyNDMsIDEwNCwgMTgsIDI0MywgMTAzLCAxOCwgMjQzLCAxMDIsIDE4LCAyNDMsIDEwMSwgMTgsIAorICAgIDI0MywgMTAwLCAxOCwgMjQzLCA5OSwgMTgsIDI0MywgOTgsIDE4LCAyNDMsIDk3LCAxOCwgMjQzLCA5NiwgMTgsIDI0MywgCisgICAgOTUsIDE4LCAyNDMsIDk0LCAxOCwgMjQzLCA5MywgMTgsIDI0MywgOTIsIDE4LCAyNDMsIDkxLCAxOCwgMjQzLCA5MCwgMTgsIAorICAgIDI0MywgODksIDE4LCAyNDMsIDg4LCAxOCwgMjQzLCA4NywgMTgsIDI0MywgODYsIDE4LCAyNDMsIDg1LCAxOCwgMjQzLCA4NCwgCisgICAgMTgsIDI0MywgODMsIDE4LCAyNDMsIDgyLCAxOCwgMjQzLCA4MSwgMTgsIDI0MywgODAsIDE4LCAyNDMsIDc5LCAxOCwgMjQzLCAKKyAgICA3OCwgMTgsIDI0MywgNzcsIDE4LCAyNDMsIDc2LCAxOCwgMjQzLCA3NSwgNjksIDEsIDI1MCwgMjM0LCA3MiwgMTc3LCAxLCAKKyAgICAyNTAsIDIzNCwgMjAwLCA1MSwgMTA0LCAxLCAyMzQsIDI0NywgMTA0LCAxLCAyMDAsIDE5NSwgMTA0LCAxLCAyMTYsIDIyNiwgCisgICAgMTA0LCAxLCAyMDcsIDgzLCAxMDQsIDEsIDIzOCwgNSwgMTA0LCAxLCAyMjcsIDExOCwgMTA0LCAxLCAxNTYsIDEwNCwgMSwgCisgICAgMjUwLCAxMDMsIDEwNCwgMSwgMjQyLCAxNTMsIDEwNCwgMSwgMjAzLCAxNjgsIDEwNCwgMSwgMjM2LCAxNTYsIDEwNCwgMSwgCisgICAgMTQ2LCAxMDQsIDEsIDIxNiwgMjI3LCAyMjAsIDIxNCwgMTA0LCAxLCAyNDIsIDE1NCwgMjEyLCAxMjIsIDEwNCwgMSwgMjM4LCAKKyAgICA2LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjcsIDExOSwgMjIzLCAyNDMsIDEwNCwgMSwgMjE0LCAzMywgMjEyLCAxMjIsIDEwNCwgCisgICAgMSwgMjA2LCAxMjQsIDEwNCwgMSwgMjA5LCA2MiwgMjQxLCAxMDEsIDEwNCwgMSwgMjQxLCAxMDEsIDEwNCwgMSwgMjI2LCAKKyAgICAxMTAsIDEwNCwgMSwgMjA5LCA2MiwgMjI3LCAyNTEsIDEwNCwgMSwgMjM0LCA0MCwgMTA0LCAxLCAyMjQsIDIyNCwgMTA0LCAKKyAgICAxLCAyMTMsIDk0LCAxMDQsIDEsIDIyMywgMjQzLCAxMDQsIDEsIDIyMCwgMjE0LCAxMDQsIDEsIDIyNywgMjUxLCAxMDQsIDEsIAorICAgIDIxMiwgMTIyLCAxMDQsIDEsIDIyMywgMjQ0LCAyMjAsIDIxNCwgMTA0LCAxLCAyMjAsIDIxNSwgMjIzLCAyNDMsIDEwNCwgMSwgCisgICAgMjI3LCAyNTIsIDIyMywgMjQzLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MSwgMTA0LCAxLCAyMjMsIDI0NCwgMywgMjQwLCAKKyAgICAxODIsIDEwNCwgMSwgMjIwLCAyMTUsIDMsIDI0MCwgMTgyLCAxMDQsIDEsIDIyNywgMjUyLCAzLCAyNDAsIDE4MiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMywgMTkwLCAyMjgsIDc0LCAyNiwgNTYsIDEwNCwgMSwgMjEyLCAxMjMsIDMsIDI0MCwgMTgyLCAxMDQsIAorICAgIDEsIDIxMiwgMTIzLCAzLCA3MywgNTcsIDEwNCwgMSwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIyMCwgMjE1LCAKKyAgICAyMTIsIDEyMiwgMTA0LCAxLCAyMjcsIDI1MiwgMjEyLCAxMjIsIDEwNCwgMSwgMjEyLCAxMjMsIDIxMiwgMTIyLCAxMDQsIDEsIAorICAgIDIyMywgMjQ0LCAyMjAsIDIxNSwgMjEyLCAxMjIsIDEwNCwgMSwgMjIwLCAyMTUsIDIyMywgMjQ0LCAyMTIsIDEyMiwgMTA0LCAKKyAgICAxLCAyMjcsIDI1MiwgMjIzLCAyNDQsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIDI1MiwgMjEyLCAxMjIsIAorICAgIDEwNCwgMSwgMjI3LCAyNTIsIDIxMiwgMTIzLCAzLCAyNDAsIDE4MiwgMTA0LCAxLCAyMjcsIDI1MiwgMjIwLCAyMTQsIDEwNCwgCisgICAgMSwgMjI3LCAyNTIsIDIyMCwgMjE1LCAyMTIsIDEyMiwgMTA0LCAxLCAyMTIsIDEyMywgMjA3LCA4MywgMTA0LCAxLCAyMTIsIAorICAgIDEyMywgMjA3LCA4NCwgMTQ2LCAxMDQsIDEsIDIxMiwgMTIzLCAyMTYsIDIyNiwgMTA0LCAxLCAyMTIsIDEyMywgMjE2LCAKKyAgICAyMjcsIDE0NiwgMTA0LCAxLCAyMDcsIDg0LCAyMTIsIDEyMiwgMTA0LCAxLCAyMDcsIDg0LCAyMTQsIDMzLCAyMTIsIDEyMiwgCisgICAgMTA0LCAxLCAyMDEsIDE0NywgMTA0LCAxLCAyMDEsIDQxLCAxMDQsIDEsIDIwMSwgMTQ4LCAxNDYsIDEwNCwgMSwgMjEyLCAKKyAgICAxMjMsIDIyMCwgMjE0LCAxMDQsIDEsIDIxMiwgMTIzLCAyMjMsIDI0MywgMTA0LCAxLCAyMjcsIDExOSwgMjE0LCAzMywgCisgICAgMjEyLCAxMjIsIDEwNCwgMSwgMjM2LCAxNTcsIDIxNCwgMzMsIDIxMiwgMTIyLCAxMDQsIDEsIDIxMiwgMTIzLCAyMjcsIAorICAgIDExOCwgMTA0LCAxLCAyMTIsIDEyMywgMjI3LCAxMTksIDE0NiwgMTA0LCAxLCA2MiwgMTA0LCAxLCAyMDksIDYyLCAyMTYsIAorICAgIDIzOCwgMTA0LCAxLCAyMTcsIDE0NiwgMTA0LCAxLCA3NCwgMTA0LCAxLCAyNTEsIDI5LCAxMDQsIDEsIDcwLCAxMDQsIDEsIAorICAgIDcyLCAxMDQsIDEsIDIyOCwgMTc4LCAxMDQsIDEsIDIwOSwgMjUwLCA3MCwgMTA0LCAxLCAyMDQsIDIzLCAxMDQsIDEsIDIzOCwgCisgICAgMjU1LCAxMDQsIDEsIDIwOSwgNjIsIDIzOCwgMjQxLCAxMDQsIDEsIDIxMiwgMjM5LCA3MCwgMTA0LCAxLCAyMDksIDYyLCAKKyAgICAyMzgsIDI1NSwgMTA0LCAxLCAxNjgsIDcwLCAxMDQsIDEsIDIwMCwgNTEsIDEwNCwgMSwgNjYsIDEwNCwgMSwgMjM4LCA2OSwgCisgICAgMTA0LCAxLCAyMDAsIDE0NiwgMTA0LCAxLCAxMDgsIDIyMCwgMjE0LCAxMDQsIDEsIDE2OCwgNjYsIDEwNCwgMSwgMjEyLCAKKyAgICAyMzksIDY2LCAxMDQsIDEsIDIwNCwgMjUsIDEwNCwgMSwgMjA5LCA2MiwgNjYsIDEwNCwgMSwgMjE3LCA2MCwgMTA0LCAxLCAKKyAgICAyMTYsIDIzOCwgMTA0LCAxLCAyMTcsIDMsIDEwNCwgMSwgMjAxLCAxMTQsIDEwNCwgMSwgMjAxLCAwLCAxMDQsIDEsIDIwMSwgCisgICAgMzEsIDEwNCwgMSwgMjAxLCA1NSwgMTA0LCAxLCAyMDAsIDIzMCwgMTA0LCAxLCAyMjAsIDEyMywgNjYsIDEwNCwgMSwgMjIwLCAKKyAgICAxMjMsIDc0LCAxMDQsIDEsIDIyMCwgMTIzLCA3MCwgMTA0LCAxLCAyMjAsIDEyMywgNjIsIDEwNCwgMSwgMjE2LCAxNiwgCisgICAgMjUxLCA4NSwgMTA0LCAxLCAyMTYsIDE2LCAyNTEsIDEwMSwgMTA0LCAxLCAyMDksIDYyLCAyMzgsIDE3OSwgMTA0LCAxLCAKKyAgICAyMDksIDYyLCAyNTEsIDg1LCAxMDQsIDEsIDIwOSwgNjIsIDIxNywgNzgsIDEwNCwgMSwgMTA5LCAyMjMsIDI0MywgMTA0LCAKKyAgICAyNTEsIDIwMCwgNDksIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjIxLCAyMDYsIDIzMywgMTc3LCAyMTEsIAorICAgIDE5NywgMTA0LCAyNTEsIDIwMCwgNTEsIDIzMywgMTc3LCAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMTI4LCA4MywgMjExLCAKKyAgICAxOTcsIDEwNCwgMjUxLCAyMDAsIDIyMSwgMjA2LCA4MywgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDEyMiwgODMsIDIxMSwgCisgICAgMTk3LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMjExLCAxOTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMjUsIDE5LCAKKyAgICAyMTEsIDE5NywgMTA0LCAyNTEsIDIwMCwgMjUwLCAxNDUsIDIwNiwgMjQwLCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgCisgICAgMjA3LCA2LCAxMDQsIDI1MSwgMjAwLCAyNTAsIDE0NSwgMTk3LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMzMsIAorICAgIDE5LCAxMTcsIDEwNCwgMjUxLCAyMDAsIDI1MCwgMTQ1LCAyMDYsIDI0MSwgMTE3LCAxMDQsIDI1MSwgMjAwLCAxMjIsIDE2OSwgCisgICAgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDYsIDEsIDE2OSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMzUsIDczLCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjIsIDE2OCwgMjM1LCA3MywgMTA0LCAyNTEsIDIwMCwgMTIyLCAyNDAsIDE4MiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAKKyAgICAyNDYsIDE1NSwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMjQsIDE3NiwgMTA0LCAyNTEsIDIwMCwgMTIyLCAyMDEsIDc3LCAxMDQsIAorICAgIDI1MSwgMjAwLCAxMjIsIDIwMywgNDIsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwNiwgCisgICAgMSwgMTY5LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIzNSwgNzMsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMTY4LCAyMzUsIDczLCAKKyAgICAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0MCwgMTgyLCAxMDQsIDI1MSwgMjAwLCAxMjgsIDI0NiwgMTU1LCAxMDQsIDI1MSwgCisgICAgMjAwLCAxMjgsIDIyNCwgMTc2LCAxMDQsIDI1MSwgMjAwLCAxMjgsIDIwMSwgNzcsIDEwNCwgMjUxLCAyMDAsIDEyOCwgMjAzLCAKKyAgICA0MiwgMTA0LCAyNTEsIDIwMCwgMTI4LCA0OCwgMTA0LCAyLCAxNjMsIDMsIDI0MiwgMjM0LCAxMDQsIDIwNiwgODIsIDEsIAorICAgIDIxMSwgMTc1LCAxMDQsIDUzLCA4MSwgMTA0LCAyMTQsIDIxMiwgMjQ2LCAyMjAsIDIzNiwgMTgzLCAyMDgsIDc2LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEsIDIxNiwgMjQ0LCAyMDksIDIzNywgMjM2LCAyNDEsIDI0MywgNDAsIDIxNiwgMjQ0LCAyMDksIAorICAgIDIzNywgMjM2LCAyNDEsIDEyNywgMjA4LCA5MCwgMjA5LCAyMzcsIDIzNiwgMjQxLCAxMTUsIDIwOCwgOTAsIDYxLCAzMiwgCisgICAgMTYsIDIxNCwgMjI4LCA2MSwgMzIsIDE2LCAyNDEsIDI0NiwgNjEsIDMyLCAxNiwgMjE2LCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAKKyAgICAyMzQsIDIzOCwgMjEzLCA2MSwgMzIsIDE2LCAyMTYsIDIzNCwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjAzLCA3NywgMjM4LCAKKyAgICAyMTMsIDYxLCAzMiwgMTYsIDIwMywgNzcsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDIyNywgMjgsIDYxLCAzMiwgMTYsIDIwNywgCisgICAgMTAwLCA2MSwgMzIsIDE2LCAyMTYsIDEyMiwgNjEsIDMyLCAxNiwgMTk5LCAyMTcsIDYxLCAzMiwgMTYsIDE5OSwgMjE4LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMjYsIDMyLCA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDIxMywgNjEsIDMyLCAxNiwgCisgICAgMjM4LCAzNywgMjM4LCAyMTMsIDYxLCAzMiwgMTYsIDIwNiwgMTc3LCA2MSwgMzIsIDE2LCAyMjYsIDIzOSwgNjEsIDMyLCAKKyAgICAxNiwgMjUxLCAxNCwgNjEsIDMyLCAxNiwgMjUxLCAxNSwgMjQxLCAxNCwgNjEsIDMyLCAxNiwgMjA3LCAxMDcsIDYxLCAzMiwgCisgICAgMTYsIDIwNiwgNjQsIDYxLCAzMiwgMTYsIDIxNywgODksIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzUsIDEwMCwgMjUwLCAKKyAgICAyMzIsIDYxLCAzMiwgMTYsIDIxNCwgMjI3LCA2MSwgMzIsIDE2LCAyNDcsIDI4LCA2MSwgMzIsIDE2LCAyMDMsIDY2LCA2MSwgCisgICAgMzIsIDE2LCAyMjgsIDE3LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI2LCAyNDEsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAKKyAgICAyMjYsIDI0MCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIxMSwgMjM2LCA2MSwgMzIsIDE2LCAyMTYsIDExMiwgNjEsIDMyLCAKKyAgICAxNiwgMjA4LCA5OSwgMjUxLCAxNywgNjEsIDMyLCAxNiwgMjE2LCAyMzMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc2LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjUxLCAxOCwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDI1MSwgMTIsIDYxLCAzMiwgCisgICAgMTYsIDIyNiwgMTAwLCA2MSwgMzIsIDE2LCAyMTMsIDEwMSwgNjEsIDMyLCAxNiwgMjE1LCAyMDIsIDI1MCwgMjMyLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDIzMCwgNjEsIDMyLCAxNiwgMjUxLCA4MiwgNjEsIDMyLCAxNiwgMjExLCAxNzgsIDYxLCAzMiwgMTYsIAorICAgIDIwNywgMTExLCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA3LCAxMTEsIDIyMiwgMjEsIDIwOCwgOTcsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjI4LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjA2LCAxMDAsIDYxLCAzMiwgMTYsIDIyNSwgNiwgNjEsIDMyLCAxNiwgCisgICAgMjM5LCA5NiwgNjEsIDMyLCAxNiwgMjA1LCAxMDAsIDYxLCAzMiwgMTYsIDIwNiwgMTQ4LCA2MSwgMzIsIDE2LCAyMjYsIDM1LCAKKyAgICA2MSwgMzIsIDE2LCAyNTEsIDI0LCAyMzgsIDM3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjUwLCAyMzIsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTMwLCA2MSwgMzIsIDE2LCAyMDUsIDY5LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjI3LCAzMSwgCisgICAgMjA1LCA2OCwgNjEsIDMyLCAxNiwgMjE2LCA0OSwgNjEsIDMyLCAxNiwgMjE0LCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgNjksIAorICAgIDYxLCAzMiwgMTYsIDI0NiwgMjA0LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjEzLCAyMDksIDYxLCAzMiwgMTYsIDIxNiwgCisgICAgMTI1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgMjE2LCAxMjMsIDI1MCwgMjMyLCA2MSwgMzIsIDE2LCAyMzIsIDIyOSwgNjEsIAorICAgIDMyLCAxNiwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIxNSwgMjU0LCA2MSwgMzIsIDE2LCAyMjYsIDcwLCAyNTEsIDExOSwgCisgICAgNjEsIDMyLCAxNiwgMjA1LCA2OSwgMjUxLCAxMTksIDYxLCAzMiwgMTYsIDIwOCwgNzAsIDYxLCAzMiwgMTYsIDIzNSwgNjAsIAorICAgIDYxLCAzMiwgMTYsIDIyOCwgMTcsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIxNywgODksIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIxNiwgMjM0LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDI1MywgNjEsIDMyLCAxNiwgMjI2LCA1NCwgNjEsIDMyLCAxNiwgCisgICAgMjE1LCAyNTIsIDYxLCAzMiwgMTYsIDIyNiwgMzQsIDYxLCAzMiwgMTYsIDIxNiwgNTAsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIyNiwgMjQwLCAyMjAsIDIxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MSwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIAorICAgIDMyLCAxNiwgMTk5LCAyMTUsIDYxLCAzMiwgMTYsIDI1MSwgMTUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDI1MSwgMTYsIDIwNywgCisgICAgMTA4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAxOTksIDIxNiwgNjEsIDMyLCAxNiwgMjI2LCAzMywgNjEsIDMyLCAxNiwgMjM4LCAKKyAgICAyMDgsIDYxLCAzMiwgMTYsIDI0NywgMjksIDYxLCAzMiwgMTYsIDIyMSwgMTc3LCAyMjgsIDE2LCA2MSwgMzIsIDE2LCAyMDMsIAorICAgIDc3LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMTUsIDIwMiwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE0LCAyMzMsIDIyMCwgCisgICAgMjAsIDYxLCAzMiwgMTYsIDIxNywgODUsIDYxLCAzMiwgMTYsIDI1MSwgNDIsIDYxLCAzMiwgMTYsIDIyMywgMjU0LCA2MSwgCisgICAgMzIsIDE2LCAyMTYsIDEyMywgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjE2LCAxMjUsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIAorICAgIDIzOCwgNzUsIDIxNiwgMTI0LCA2MSwgMzIsIDE2LCAyMjUsIDE5NywgNjEsIDMyLCAxNiwgMjUxLCA0MywgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjM4LCAyMTEsIDYxLCAzMiwgMTYsIDIwNywgMTExLCAyMjAsIDIwLCAKKyAgICA2MSwgMzIsIDE2LCAyMDcsIDEwMSwgNjEsIDMyLCAxNiwgMjQ2LCAyMDQsIDIyMCwgMjAsIDYxLCAzMiwgMTYsIDIzOCwgCisgICAgMTMwLCA2MSwgMzIsIDE2LCAyMTEsIDE3OSwgMjIwLCAyMCwgNjEsIDMyLCAxNiwgMjAwLCAxNjIsIDIyNiwgMTAwLCA2MSwgCisgICAgMzIsIDE2LCAyMDUsIDY2LCA2MSwgMzIsIDE2LCAyMTQsIDIzNCwgNjEsIDMyLCAxNiwgMjA1LCA3MCwgNjEsIDMyLCAxNiwgCisgICAgMjA1LCA2NywgNjEsIDMyLCAxNiwgMjE0LCAyMzEsIDYxLCAzMiwgMTYsIDIwNSwgNjUsIDYxLCAzMiwgMTYsIDIxNCwgMjMwLCAKKyAgICA2MSwgMzIsIDE2LCAyMzUsIDk5LCA2MSwgMzIsIDE2LCAyNTAsIDIyNCwgNjEsIDMyLCAxNiwgMjM4LCA3NSwgMjUwLCAyMjQsIAorICAgIDYxLCAzMiwgMTYsIDIxNiwgMjI4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyMDYsIDk5LCAyMzgsIDg4LCA2MSwgMzIsIDE2LCAKKyAgICAyMDYsIDk5LCAyMzgsIDM2LCA2MSwgMzIsIDE2LCAyMDYsIDEwMSwgMjUxLCAxOSwgNjEsIDMyLCAxNiwgMjA2LCA5MywgCisgICAgMjI3LCA4MywgMjUxLCAxMSwgNjEsIDMyLCAxNiwgMjI3LCAzMCwgNjEsIDMyLCAxNiwgMjM4LCAxNjcsIDYxLCAzMiwgMTYsIAorICAgIDIwMCwgMTMsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIwMCwgMTMsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDIwOCwgOTgsIDYxLCAKKyAgICAzMiwgMTYsIDIyNiwgMTAxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyNDEsIDE1LCAyNTAsIDIzMiwgNjEsIDMyLCAxNiwgCisgICAgMjI2LCAzNiwgMjUwLCAyMzIsIDYxLCAzMiwgMTYsIDIyNiwgMzYsIDI1MSwgMTE5LCA2MSwgMzIsIDE2LCAyMjYsIDM2LCAKKyAgICAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDE4LCAyMjAsIDIwLCA2MSwgMzIsIDE2LCAyNTEsIDIwLCA2MSwgMzIsIDE2LCAKKyAgICAyNDEsIDE0LCA2MSwgMzIsIDE2LCAyMDUsIDgxLCA2MSwgMzIsIDE2LCAyMDYsIDEzOSwgNjEsIDMyLCAxNiwgMjI2LCA1OCwgCisgICAgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjM4LCAxNjAsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAyMjUsIDExLCAyMzksIDk3LCAKKyAgICAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjA1LCA4NCwgMjQ2LCAxOTUsIDYxLCAzMiwgMTYsIDIyNSwgMTEsIAorICAgIDIwNiwgMTUwLCAyNDYsIDE5NSwgNjEsIDMyLCAxNiwgMjI1LCAxMSwgMjI4LCAxMjUsIDI0NiwgMTk0LCA2MSwgMzIsIDE2LCAKKyAgICAyMzUsIDEwMCwgMjIwLCAyMSwgMjUxLCA1NSwgNjEsIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNTAsIDIyMCwgNjEsIAorICAgIDMyLCAxNiwgMjM1LCAxMDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjQxLCAzOSwgNjEsIDMyLCAxNiwgCisgICAgMjQxLCA0MCwgMjE2LCAxMTMsIDI1MCwgMjIxLCAyMjcsIDI3LCA2MSwgMzIsIDE2LCAyNDEsIDQwLCAyMTYsIDExMywgMjUwLCAKKyAgICAyMjEsIDI1MSwgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNDAsIDIxNiwgMTEzLCAyNDEsIDEwNSwgNjEsIDMyLCAxNiwgMjA1LCAKKyAgICA4OSwgNjEsIDMyLCAxNiwgMjUwLCAyMjUsIDYxLCAzMiwgMTYsIDIyOCwgMTMyLCA2MSwgMzIsIDE2LCAyNDEsIDYyLCA2MSwgCisgICAgMzIsIDE2LCAyNTEsIDE4NywgMjE1LCA4OSwgMjUwLCAyMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyNTAsIDIyMywgNjEsIAorICAgIDMyLCAxNiwgMjUxLCAxODcsIDI1MCwgMjI2LCA2MSwgMzIsIDE2LCAyNTEsIDE4NywgMjIyLCAxNSwgNjEsIDMyLCAxNiwgCisgICAgMjUxLCAxODcsIDIyMiwgMjYsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjUxLCAxODcsIAorICAgIDIzNSwgOTgsIDYxLCAzMiwgMTYsIDI1MSwgMTg3LCAyMTUsIDg5LCAyMzUsIDEwMSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIAorICAgIDIxNCwgMjQwLCAyMzIsIDIyNywgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDI1MSwgMTIxLCAyMTQsIDI0MCwgMjMyLCAyMjcsIAorICAgIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNDEsIDEwNCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyNTEsIDEyMSwgCisgICAgMjQxLCAxMDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA1LCA3NiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIAorICAgIDIyMiwgMTQwLCAyMDUsIDkwLCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjA2LCAxNDQsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAKKyAgICAyMjIsIDE0MCwgMjA2LCAxNDQsIDIyNSwgMTUsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjI1LCAxNSwgCisgICAgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyMiwgMTQwLCAyMTUsIDEzMiwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIyOCwgMjQsIAorICAgIDIwNiwgMTcwLCAyMzIsIDIyOCwgNjEsIDMyLCAxNiwgMjUxLCAxNiwgMjA2LCAxNzAsIDIzMiwgMjI4LCA2MSwgMzIsIDE2LCAKKyAgICAyMzcsIDE2NywgMjA2LCAxNDEsIDYxLCAzMiwgMTYsIDIzNywgMTY3LCAyMjEsIDk4LCA2MSwgMzIsIDE2LCAyMzcsIDE2NywgCisgICAgMjQxLCA0NSwgNjEsIDMyLCAxNiwgMjIyLCAxNDAsIDIwMywgNzAsIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgCisgICAgMjE0LCAyMzksIDIzMiwgMjI3LCA2MSwgMzIsIDE2LCAyMjIsIDE0MCwgMjE1LCAxMzIsIDIwNiwgMTQ0LCAyMzIsIDIyNywgCisgICAgNjEsIDMyLCAxNiwgMjM1LCA5NSwgMjIwLCAyMTUsIDI1MSwgMTksIDYxLCAzMiwgMTYsIDIzNSwgOTUsIDIyMCwgMjE1LCAKKyAgICAyNDEsIDEzLCA2MSwgMzIsIDE2LCAyMzgsIDE3NywgMjI3LCA4MywgMjM2LCAxOTEsIDIwMiwgMTc0LCA2MSwgMzIsIDE2LCAKKyAgICAyMjgsIDEzMSwgNjEsIDMyLCAxNiwgMjI4LCAxMjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNTAsIDIzMywgMjQxLCAxMDMsIAorICAgIDIzMiwgMjI2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCA2MCwgMTcyLCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjQxLCAKKyAgICA2MCwgMjIwLCAxMzMsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDEyOCwgMjMyLCAyMjcsIDYxLCAzMiwgMTYsIDIzNiwgCisgICAgMTkxLCAyNDEsIDYwLCAyNDEsIDc2LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjA5LCA4MiwgMjQxLCA1OSwgMjQxLCA3NiwgCisgICAgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDI0MSwgNjAsIAorICAgIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyNDEsIDYwLCAyMTksIDE1MSwgMjI3LCAyNywgNjEsIDMyLCAxNiwgCisgICAgMjM2LCAxOTEsIDI0MSwgNjAsIDIxOSwgMTUxLCAyNTEsIDU1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIAorICAgIDI0NiwgMTk2LCAyNDEsIDQ1LCA2MSwgMzIsIDE2LCAyMzYsIDE5MSwgMjIyLCAxODYsIDI0NiwgMTk2LCAyMjEsIDk4LCA2MSwgCisgICAgMzIsIDE2LCAyMzcsIDExMywgMjA5LCA4MiwgMjQ2LCAxOTYsIDIwMywgNjksIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMDksIAorICAgIDgyLCAyNDYsIDE5NiwgMjA3LCAxMTIsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMjAsIDIzLCA2MSwgMzIsIDE2LCAyNDYsIAorICAgIDE5NywgMTk4LCAyMzgsIDYxLCAzMiwgMTYsIDI0NiwgMTk3LCAyMjYsIDk5LCA2MSwgMzIsIDE2LCAyNDYsIDE5NywgMjA4LCAKKyAgICAyMzUsIDYxLCAzMiwgMTYsIDIzNiwgMTkxLCAyMzMsIDE5LCAyMDAsIDEyLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjM2LCAKKyAgICAxOTEsIDIzOCwgMTc4LCAyNTEsIDQ0LCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIAorICAgIDUzLCAyMDUsIDc3LCA2MSwgMzIsIDE2LCAyNDEsIDUzLCAyMDYsIDE0NSwgNjEsIDMyLCAxNiwgMjQxLCA1MywgMjUxLCAyMSwgCisgICAgMjM5LCA5NywgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIyMSwgOTYsIDIwNiwgMTQ5LCAyNDAsIDIwMywgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA1MywgMjQxLCAzNiwgMjM4LCA0OSwgMjQwLCAyMDMsIDYxLCAzMiwgMTYsIDI0MSwgNTMsIDIwNSwgCisgICAgODcsIDIxNywgOTUsIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAyNTEsIDIxLCAyMzksIDk3LCAyNDAsIDIwMywgCisgICAgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjIxLCA5NiwgMjA2LCAxNDksIDI0MCwgMjAzLCA2MSwgMzIsIDE2LCAyMDAsIDEyLCAKKyAgICAyNDEsIDM2LCAyMzgsIDQ5LCAyNDAsIDIwMywgNjEsIDMyLCAxNiwgMjAwLCAxMiwgMjA1LCA4NywgMjE3LCA5NSwgMjQwLCAKKyAgICAyMDMsIDYxLCAzMiwgMTYsIDIzNSwgMjU1LCAyNDEsIDUyLCA2MSwgMzIsIDE2LCAyMzUsIDI1NSwgMjAwLCAxMSwgNjEsIAorICAgIDMyLCAxNiwgMjQxLCA2MSwgMjUxLCAyMSwgMjIxLCAxNzgsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI1MSwgMjEsIDIyMiwgCisgICAgNTUsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDI0MSwgMTQsIDYxLCAzMiwgMTYsIDI0MSwgNjEsIDIwNiwgOTEsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkxLCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjQwLCAyNTQsIDYxLCAzMiwgCisgICAgMTYsIDIwOSwgMTQ5LCAyMDYsIDkyLCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjA2LCA5MiwgMjA2LCAxMzcsIAorICAgIDYxLCAzMiwgMTYsIDIwOSwgMTQ5LCAyNTAsIDE5NiwgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyNDAsIDI1NCwgCisgICAgNjEsIDMyLCAxNiwgMjA5LCAxNDksIDI1MCwgMTk3LCAyMDUsIDc4LCA2MSwgMzIsIDE2LCAyMDksIDE0OSwgMjUwLCAxOTcsIAorICAgIDIwNiwgMTM3LCA2MSwgMzIsIDE2LCAyNDEsIDM3LCAyMzUsIDIzNiwgNjEsIDMyLCAxNiwgMjQxLCA0NCwgMjE3LCAzLCA2MSwgCisgICAgMzIsIDE2LCAyMDgsIDg2LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMTcyLCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjAyLCAKKyAgICAxNzQsIDYxLCAzMiwgMTYsIDI1MCwgMjE3LCAyMzYsIDg5LCA2MSwgMzIsIDE2LCAyNTAsIDIxNywgMjQxLCA3NiwgNjEsIAorICAgIDMyLCAxNiwgMjUwLCAyMTcsIDIyNywgOCwgNjEsIDMyLCAxNiwgMjUwLCAyMTcsIDE5OSwgMTQsIDYxLCAzMiwgMTYsIDI1MCwgCisgICAgMjE3LCAyMTksIDE1MCwgNjEsIDMyLCAxNiwgMjI2LCAyNDAsIDIyMCwgMjEsIDIyMiwgMjUsIDYxLCAzMiwgMTYsIDIyNiwgCisgICAgMjQxLCAyMjAsIDIxLCAyMjIsIDI1LCA2MSwgMzIsIDE2LCAyMjYsIDI0MCwgMjIwLCAyMSwgMjI3LCAyNywgNjEsIDMyLCAKKyAgICAxNiwgMjI2LCAyNDEsIDIyMCwgMjEsIDIyNywgMjcsIDYxLCAzMiwgMTYsIDIyNiwgMTAxLCAyMjcsIDI3LCA2MSwgMzIsIAorICAgIDE2LCAyMzUsIDEwMCwgMjIwLCAyMSwgMjI3LCAyNywgMzIsIDE2LCAyMDksIDEzOSwgMjQ5LCA3MiwgMzIsIDE2LCA1MywgCisgICAgMjQ5LCA3MiwgMzIsIDE2LCA0NywgMjQ5LCA3MiwgMzIsIDE2LCAyMTMsIDEwNiwgNDcsIDI0OSwgNzIsIDMyLCAxNiwgMjQxLCAKKyAgICAyNDMsIDI0OSwgNzIsIDMyLCAxNiwgMjA5LCAyNTAsIDI0OSwgNzIsIDMyLCAxNiwgNDksIDIxMywgMTMzLCA1NCwgMzIsIAorICAgIDE2LCA1MSwgMjEzLCAxMzMsIDU0LCAzMiwgMTYsIDIxMywgMTMzLCAyNDAsIDE4MCwgMzIsIDE2LCAyNDIsIDMwLCAyMTEsIAorICAgIDE4MiwgMzIsIDE2LCAyNDIsIDU5LCAyNDcsIDE0MSwgMzIsIDE2LCAyMTEsIDE4MiwgMzIsIDE2LCAyNDYsIDg3LCAzMiwgCisgICAgMTYsIDIxMywgMTMxLCAyMzcsIDEwMSwgMzIsIDE2LCAyMTMsIDEzMSwgMjM3LCAxMDAsIDMyLCAxNiwgMjEzLCAxMzEsIAorICAgIDIzNywgOTksIDMyLCAxNiwgMjM3LCAxMjIsIDMyLCAxNiwgMjM3LCAxMjMsIDU3LCAzMiwgMTYsIDI0OCwgNTksIDgxLCAzMiwgCisgICAgMTYsIDI0NywgMTgwLCAzMiwgMTYsIDI0OCwgNzEsIDMyLCAxNiwgMTU5LCAzMiwgMTYsIDIxNywgNzMsIDIwOCwgMTE3LCAKKyAgICAzMiwgMTYsIDIwNCwgMTQwLCAyMDgsIDExNywgMzIsIDE2LCAyMDYsIDQyLCAyMDgsIDExNywgMzIsIDE2LCAyMzYsIDIyOCwgCisgICAgMjA4LCAxMTcsIDMyLCAxNiwgMjM3LCA2MCwgMjA4LCAxMTcsIDMyLCAxNiwgMjA5LCAxMDUsIDIwOCwgMTE3LCAzMiwgMTYsIAorICAgIDIwOSwgMTAzLCAyMzYsIDIwOCwgMzIsIDE2LCAyMzYsIDIyNiwgMjM2LCAyMDgsIDMyLCAxNiwgMjM2LCAxNTcsIDI0NiwgCisgICAgMTI0LCAzMiwgMTYsIDIzNiwgMTU3LCAyNDYsIDEyNSwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMzYsIDE1NywgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyNDcsIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjM4LCA2LCAyNDYsIAorICAgIDEyNCwgMzIsIDE2LCAyMzgsIDYsIDI0NiwgMTI1LCAyMTcsIDUsIDI1MSwgMTEwLCAzMiwgMTYsIDIzOCwgNiwgMjQ2LCAKKyAgICAxMjUsIDIxNywgNSwgMjQ5LCA1NywgMzIsIDE2LCAyMzksIDE0MywgMjQ2LCAxMjMsIDMyLCAxNiwgMjM5LCAxNDMsIDI0NiwgCisgICAgMTIyLCAzMiwgMTYsIDIyMSwgMjEsIDIyMiwgNzUsIDIxMywgMTE3LCAzMiwgMTYsIDUzLCAyMTAsIDc4LCAzMiwgMTYsIDUzLCAKKyAgICAyMzcsIDQ0LCAzMiwgMTYsIDIzNywgNDUsIDIwMywgMjI4LCAzMiwgMTYsIDIzNywgNDUsIDIzOSwgMTY3LCAzMiwgMTYsIAorICAgIDIyMCwgMTE3LCAyMDMsIDIyOCwgMzIsIDE2LCAyMjAsIDExNywgMjM5LCAxNjcsIDMyLCAxNiwgMjEwLCA3OSwgMjAzLCAKKyAgICAyMjgsIDMyLCAxNiwgMjEwLCA3OSwgMjM5LCAxNjcsIDMyLCAxNiwgMjE0LCA4OCwgMTUwLCAyMTAsIDc4LCAzMiwgMTYsIAorICAgIDIxNCwgODgsIDE1MCwgMjM3LCA0NCwgMzIsIDE2LCAyNDYsIDY3LCAyMDUsIDIzNCwgMzIsIDE2LCAyNDIsIDE4MCwgMjA1LCAKKyAgICAyMzQsIDMyLCAxNiwgMjE3LCA1LCAyNTEsIDExMCwgMzIsIDE2LCAyMTcsIDUsIDI0OSwgNTcsIDMyLCAxNiwgMjE0LCA2OSwgCisgICAgMjUxLCAxMTAsIDMyLCAxNiwgMjE0LCA2OSwgMjQ5LCA1NywgMzIsIDE2LCAyMjEsIDI0LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMDEsIDMyLCAyMTMsIDExNywgMzIsIDE2LCAxNjcsIDIxMywgMTE3LCAzMiwgMTYsIDIxNCwgODgsIDIxMywgMTE3LCAzMiwgCisgICAgMTYsIDIzOCwgMjI4LCAyMTMsIDExNywgMzIsIDE2LCAyMDksIDk5LCAyMTMsIDExNywgMzIsIDE2LCAyMDYsIDY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDksIDkxLCAyMTMsIDExNywgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTMsIDExNywgCisgICAgMzIsIDE2LCAyMDAsIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgOTMsIDIxOCwgMjA1LCAzMiwgMTYsIDI0NiwgMTU2LCAyMDAsIAorICAgIDE5NiwgMjE4LCAyMDUsIDMyLCAxNiwgNTIsIDIxOCwgMjA2LCAyMDEsIDM0LCAzMiwgMTYsIDUyLCAyMTgsIDIwNiwgMjQ4LCAKKyAgICAxNDQsIDMyLCAxNiwgMjA1LCA5OSwgMjE4LCAyMDYsIDExNSwgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgCisgICAgMTE1LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNDksIDIwMSwgMzQsIDMyLCAxNiwgMjA1LCA5OSwgCisgICAgMjE4LCAyMDYsIDQ5LCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgNTEsIDIwMSwgMzQsIDMyLCAxNiwgCisgICAgMjA1LCA5OSwgMjE4LCAyMDYsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMDUsIDk5LCAyMTgsIDIwNiwgMTI3LCAyMDEsIDM0LCAKKyAgICAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMjcsIDI0OCwgMTQ0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIAorICAgIDUxLCAyMDEsIDM0LCAzMiwgMTYsIDIwNSwgOTksIDIxOCwgMjA2LCAxMTUsIDUxLCAyNDgsIDE0NCwgMzIsIDE2LCAyMjEsIAorICAgIDgyLCAyMTgsIDIwNiwgMjAxLCAzNCwgMzIsIDE2LCAyMjEsIDgyLCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjA1LCAKKyAgICA5NiwgMjE4LCAyMDYsIDEyNywgMjAxLCAzNCwgMzIsIDE2LCAyMDUsIDk2LCAyMTgsIDIwNiwgMTI3LCAyNDgsIDE0NCwgMzIsIAorICAgIDE2LCAyMTYsIDExNiwgMjE4LCAyMDUsIDMyLCAxNiwgMjAyLCAxODYsIDIxOCwgMjA1LCAzMiwgMTYsIDIxOCwgMjA2LCAKKyAgICAyNDgsIDE0NCwgMzIsIDE2LCAyMTgsIDk4LCAyMTgsIDIwNSwgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjAxLCAzNCwgCisgICAgMzIsIDE2LCAyNDYsIDk0LCAyMTgsIDIwNiwgMjQ4LCAxNDQsIDMyLCAxNiwgMjQ4LCA1NywgMzIsIDE2LCAyMDEsIDMyLCAKKyAgICAyMTgsIDIwOSwgMzIsIDE2LCAxNjcsIDIxOCwgMjA5LCAzMiwgMTYsIDIxNCwgODgsIDIxOCwgMjA5LCAzMiwgMTYsIDIzOCwgCisgICAgMjI4LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDksIDk5LCAyMTgsIDIwOSwgMzIsIDE2LCAyMDYsIDY1LCAyMTgsIDIwOSwgMzIsIAorICAgIDE2LCAyMDksIDkxLCAyMTgsIDIwOSwgMzIsIDE2LCAxMTIsIDIzMywgODMsIDIwNCwgMTU3LCAyMTgsIDIwOSwgMzIsIDE2LCAKKyAgICAzOCwgMjA4LCA5MiwgMzIsIDE2LCAzOCwgMjA4LCAyMDAsIDIwOCwgOTIsIDMyLCAxNiwgMzgsIDIwNSwgMTA3LCAzMiwgMTYsIAorICAgIDM4LCAyMDUsIDEwNiwgMzIsIDE2LCAzOCwgMjA1LCAxMDUsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDcsIDMyLCAxNiwgCisgICAgMjM3LCA4NCwgMjA1LCAxMDYsIDMyLCAxNiwgMjM3LCA4NCwgMjA1LCAxMDUsIDMyLCAxNiwgMzgsIDI1MCwgMTM2LCAyNDAsIAorICAgIDE4MiwgMzIsIDE2LCAzOCwgMjM3LCA1MiwgMzIsIDE2LCAzOCwgMjM3LCA1MSwgMzIsIDE2LCAzOCwgMjM3LCA1MCwgMzIsIAorICAgIDE2LCAzOCwgMjM3LCA0OSwgMzIsIDE2LCAzOCwgMjM3LCA0OCwgMzIsIDE2LCAyNDgsIDI0NCwgMjQ5LCA1LCAzMiwgMTYsIAorICAgIDIzOCwgMTcxLCAyNDksIDUsIDMyLCAxNiwgMjQ4LCAyNDQsIDIwNiwgNywgMzIsIDE2LCAyMzgsIDE3MSwgMjA2LCA3LCAzMiwgCisgICAgMTYsIDI0OCwgMjQ0LCAyMDksIDU0LCAzMiwgMTYsIDIzOCwgMTcxLCAyMDksIDU0LCAzMiwgMTYsIDI0OCwgMjQ0LCAyMTUsIAorICAgIDIxMSwgMzIsIDE2LCAyMzgsIDE3MSwgMjE1LCAyMTEsIDMyLCAxNiwgMzgsIDI1MSwgMjUxLCAzMiwgMTYsIDM4LCAyMDgsIAorICAgIDEyMCwgMzIsIDE2LCAzOCwgMjA2LCAxNTQsIDMyLCAxNiwgMzgsIDIwOCwgMTIxLCAzMiwgMTYsIDM4LCAyMjIsIDE1NCwgCisgICAgMzIsIDE2LCAzOCwgMjIyLCAxNTMsIDMyLCAxNiwgMzgsIDI1MSwgMjUwLCAzMiwgMTYsIDM4LCAyMjQsIDYxLCAzMiwgMTYsIAorICAgIDI1MCwgMjA4LCAyMDMsIDIyOCwgMzIsIDE2LCAyNTAsIDIwOCwgMjM5LCAxNjcsIDMyLCAxNiwgMzgsIDI0MCwgMTk3LCAzMiwgCisgICAgMTYsIDM4LCAyMTMsIDIzLCAzMiwgMTYsIDM4LCAyMzcsIDMzLCAzMiwgMTYsIDM4LCAyMDksIDUwLCAzMiwgMTYsIDM4LCAKKyAgICAyNDgsIDIyMiwgMzIsIDE2LCAzOCwgNTMsIDIwNSwgMTYzLCAzMiwgMTYsIDM4LCAyMDUsIDgzLCAyMDUsIDE2MywgMzIsIAorICAgIDE2LCAyMTMsIDI4LCAzMiwgMTYsIDIwOCwgMTQsIDMyLCAxNiwgMTk5LCAxNTcsIDMyLCAxNiwgMjE1LCAyMDMsIDMyLCAxNiwgCisgICAgMjIyLCA2LCAzMiwgMTYsIDIzNiwgMjM4LCAzMiwgMTYsIDI0MiwgMjQ1LCAzMiwgMTYsIDI0MSwgMTYyLCAzMiwgMTYsIAorICAgIDIzNSwgOTAsIDIxOCwgMjEwLCAyMDksIDc1LCAzMiwgMTYsIDIzNSwgOTAsIDIxOCwgMjEwLCAyMTgsIDI0MiwgMjA5LCA3NSwgCisgICAgMzIsIDE2LCAyMDUsIDEzMywgMzIsIDE2LCAyMDQsIDE4NiwgMzIsIDE2LCAyMjgsIDUwLCAyMDQsIDE4NiwgMzIsIDE2LCAKKyAgICAyMDQsIDE4NywgMjA5LCA3NSwgMzIsIDE2LCAyMDQsIDE4NywgMjAzLCAyMjgsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCA0NiwgCisgICAgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQzLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgNDIsIDMyLCAxNiwgMjE3LCAyMiwgMjA4LCAKKyAgICA0MSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQwLCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzksIDMyLCAxNiwgMjE3LCAyMiwgCisgICAgMjA4LCAzOCwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDM3LCAzMiwgMTYsIDIxNywgMjIsIDIwOCwgMzYsIDMyLCAxNiwgMjE3LCAKKyAgICAyMiwgMjA4LCA0NSwgMzIsIDE2LCAyMTcsIDIyLCAyMDgsIDQ0LCAzMiwgMTYsIDIzNCwgMTQ5LCAzMiwgMTYsIDIyMCwgMzIsIAorICAgIDMyLCAxNiwgMjM4LCAxNzEsIDc2LCAyMDgsIDgyLCAzMiwgMTYsIDI0MSwgMTU1LCAyMDksIDc1LCAzMiwgMTYsIDM4LCAKKyAgICAxMjcsIDI0OCwgODUsIDMyLCAxNiwgMzgsIDExNSwgMjQ4LCA4NSwgMzIsIDE2LCAzOCwgMjM0LCAxNjIsIDMyLCAxNiwgMzgsIAorICAgIDIwOSwgNDAsIDIxNSwgMTM2LCAzMiwgMTYsIDIxNiwgNjYsIDgxLCAzMiwgMTYsIDIxNiwgNjYsIDExNSwgODEsIDMyLCAxNiwgCisgICAgMTY3LCAyMTYsIDY2LCA4MSwgMzIsIDE2LCAyMzUsIDEyNSwgMjAzLCAyMjgsIDMyLCAxNiwgMjM1LCAxMjUsIDIzOSwgMTY3LCAKKyAgICAzMiwgMTYsIDMsIDIzNywgODMsIDMyLCAxNiwgMjQyLCAxMywgMzIsIDE2LCAyNDIsIDE0LCAyNTEsIDEyNCwgMzIsIDE2LCAKKyAgICAyMjIsIDEyMSwgMzIsIDE2LCAyMjQsIDgwLCAzMiwgMTYsIDI0OCwgNTQsIDMyLCAxNiwgMjEwLCAxNzEsIDIwMSwgMzQsIAorICAgIDMyLCAxNiwgMjEwLCAxNzEsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyMSwgMTYwLCAzMiwgMTYsIDIyMSwgMTYxLCAyNDgsIDE0NCwgCisgICAgMzIsIDE2LCAyMTAsIDE2NSwgMjAxLCAzNCwgMzIsIDE2LCAyMTAsIDE2NSwgMjQ4LCAxNDQsIDMyLCAxNiwgMjM2LCAxNzQsIAorICAgIDIwMSwgMzQsIDMyLCAxNiwgMjM2LCAxNzQsIDI0OCwgMTQ0LCAzMiwgMTYsIDIyNCwgODEsIDIxNiwgMjUsIDIxMywgMTE3LCAKKyAgICAzMiwgMTYsIDIyNCwgODEsIDIyOCwgMTIyLCAyMTMsIDExNywgMzIsIDE2LCAyNDgsIDU1LCAyMTMsIDExNywgMzIsIDE2LCAKKyAgICAyMTAsIDE3MSwgMjEzLCAxMTcsIDMyLCAxNiwgMjIxLCAxNjEsIDIxMywgMTE3LCAzMiwgMTYsIDIxMCwgMTY1LCAyMTMsIAorICAgIDExNywgMzIsIDE2LCAyMDYsIDE2OCwgMjE2LCAyMywgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMTYsIDI0LCAzMiwgMTYsIDIwNiwgCisgICAgMTY4LCAyMTYsIDIzLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMTYsIDIzLCAKKyAgICAyNDIsIDIwNywgMjE0LCAyNDksIDIxNiwgMjUsIDI0MSwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIAorICAgIDIwNywgMjE0LCAyNDksIDIxNiwgMjQsIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIAorICAgIDIyOCwgMTIxLCAzMiwgMTYsIDIwNiwgMTY4LCAyMjgsIDEyMCwgMjQyLCAyMDcsIDIxNCwgMjQ5LCAyMjgsIDEyMiwgMjQxLCAKKyAgICAyNCwgMzIsIDE2LCAyMDYsIDE2OCwgMjI4LCAxMjAsIDI0MiwgMjA3LCAyMTQsIDI0OSwgMjI4LCAxMjIsIDI0MSwgMjMsIAorICAgIDMyLCAxNiwgMjA2LCAxNjgsIDIyOCwgMTIwLCAyNDIsIDIwNywgMjE0LCAyNDksIDIyOCwgMTIyLCAyNDEsIDIyLCAzMiwgCisgICAgMTYsIDI0MiwgMjM3LCAzMiwgMTYsIDIzNSwgNjMsIDI0NywgMjI0LCAyNDYsIDEyNCwgMzIsIDE2LCAyMzUsIDYzLCAyMzgsIAorICAgIDYsIDI0NiwgMTI0LCAzMiwgMTYsIDUyLCAyNTAsIDEwMywgMzIsIDE2LCAyMDIsIDIwNywgMzIsIDE2LCAyMTUsIDEwMywgCisgICAgMzIsIDE2LCAyNDYsIDExNSwgMzIsIDE2LCAyMTEsIDIyNiwgMzIsIDE2LCAyNDYsIDExOSwgMzIsIDE2LCAyMDUsIDE1MSwgCisgICAgMzIsIDE2LCAyMTUsIDcyLCAzMiwgMTYsIDIxNSwgNzMsIDIzNywgMzYsIDMyLCAxNiwgMjExLCAyMjcsIDIzNywgMzYsIDMyLCAKKyAgICAxNiwgMjA1LCAxNTIsIDIxMywgMTE0LCAzMiwgMTYsIDIxNiwgNiwgMjA4LCA1LCAzMiwgMTYsIDIyNiwgMTUzLCAyNDcsIAorICAgIDIyNCwgMjQ2LCAxMjQsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMTcxLCA3NiwgMjE1LCAxOTYsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDQ3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjEzLCAxODIsIDgxLCAzMiwgMTYsIDIyNiwgMTUzLCAyMDEsIAorICAgIDMyLCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMTY3LCAyMTgsIDIwOSwgMzIsIDE2LCAyMjYsIDE1MywgMjE0LCA4OCwgCisgICAgMjE4LCAyMTAsIDIwOCwgOTMsIDIzOSwgMTY3LCAzMiwgMTYsIDIyNiwgMTUzLCAyMTQsIDg4LCAyMTgsIDIxMCwgMjA4LCAKKyAgICA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjM5LCAxNjcsIAorICAgIDMyLCAxNiwgMjI2LCAxNTMsIDIzOCwgMjI4LCAyMTgsIDIxMCwgMjA4LCA5MywgMjAzLCAyMjgsIDMyLCAxNiwgMjI2LCAKKyAgICAxNTMsIDIzNywgNDUsIDU0LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MiwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTEsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQxLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDEzNCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTIwLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDExOSwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMTgsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTE3LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE2MSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNjAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTU5LCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMDIsIDE5MiwgCisgICAgMjE4LCAyMTMsIDIwNywgMTU2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE1NSwgMzEsIDIwMiwgMTkyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNTQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTUzLCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAKKyAgICAyMDcsIDE1MiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNTAsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgCisgICAgMTQ5LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDE0OCwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxNDcsIAorICAgIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTQ2LCAzMSwgMjAyLCAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyNSwgMzEsIAorICAgIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMDIsIDE5MiwgMjE4LCAyMTMsIDIwNywgMTIzLCAzMSwgMjAyLCAKKyAgICAxOTIsIDIxOCwgMjEzLCAyMDcsIDEyMiwgMzEsIDIwMiwgMTkyLCAyMTgsIDIxMywgMjA3LCAxMjEsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTEsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMzQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjYsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMTgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxNjAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTgsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTQsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNTIsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxNDcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDYsIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxNDUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDQsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxNDMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxNDIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxNDAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzksIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMzgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzcsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzYsIAorICAgIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzMsIDMxLCAKKyAgICAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMzEsIDMxLCAyMjgsIAorICAgIDcyLCAyMTgsIDIxMywgMjA3LCAxMzAsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjksIDMxLCAyMjgsIDcyLCAKKyAgICAyMTgsIDIxMywgMjA3LCAxMjgsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjcsIDMxLCAyMjgsIDcyLCAyMTgsIAorICAgIDIxMywgMjA3LCAxMjUsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjQsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgCisgICAgMjA3LCAxMjMsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAxMjIsIDMxLCAyMjgsIDcyLCAyMTgsIDIxMywgMjA3LCAKKyAgICAxMjEsIDM4LCAzMSwgMzIsIDIwNSwgNzksIDM4LCAzMSwgMzIsIDIwNiwgMTM4LCAzOCwgMzEsIDMyLCAyMTYsIDM1LCAzMSwgCisgICAgMzIsIDIyNSwgMTAsIDIyMSwgOTcsIDM2LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM0LCAxMjIsIDIzOSwgMTcsIDI0MSwgCisgICAgMzgsIDM2LCAyMzMsIDg3LCAyMzksIDE3LCAyNDEsIDM4LCAzNiwgMjM5LCAxNiwgMjM0LCAxMjMsIDI0MSwgMzgsIDM2LCAKKyAgICAyMzksIDE2LCAyMzMsIDg2LCAyNDEsIDM4LCAzNiwgMjM5LCAxNywgMjA2LCAxNDAsIDM2LCAyNDcsIDU1LCAyMDYsIDE0MCwgCisgICAgMzYsIDIzNiwgMTgzLCAyNDYsIDE1NSwgMjA2LCAxNDAsIDM2LCAyMjEsIDE1MiwgMjA2LCAxNDAsIDM2LCAyNDksIDY3LCAKKyAgICAyMDYsIDE0MCwgMzYsIDIyNywgMiwgMjA5LCA1MywgMjA2LCAxNDAsIDM2LCAyNDMsIDM1LCAyMDYsIDE0MCwgMzYsIDI1MCwgCisgICAgMTgzLCAyMDYsIDE0MCwgMzYsIDIxNywgMzksIDIwNiwgMTQwLCAzNiwgMjQ4LCA2NCwgMjE2LCAyNTQsIDIwNiwgMTQwLCAKKyAgICAzNiwgMjQxLCAxNTcsIDIxNywgMzQsIDI0MCwgMjQ2LCAyMDYsIDE0MCwgMzYsIDI0MCwgMjQzLCAyMDYsIDE0MCwgMzYsIAorICAgIDE5OSwgMjIzLCAyMDYsIDE0MCwgMzYsIDIyOCwgMTA4LCAyMDYsIDE0MCwgMzYsIDIxNiwgNDUsIDIwNiwgMTQwLCAzNiwgCisgICAgMjEzLCAxODksIDIwNiwgMTQwLCAzNiwgMjQzLCA0NywgMjA2LCAxNDAsIDM2LCAyMzMsIDE5OCwgMjQ5LCAxMjksIDIwNiwgCisgICAgMTQwLCAzNiwgMjAxLCAxMDYsIDIwNiwgMTQwLCAzNiwgMjM3LCA4LCAyMDYsIDE0MCwgMzYsIDI1MSwgMjI0LCAyMDYsIAorICAgIDE0MCwgMzYsIDIxMywgMTQ2LCAyMDYsIDE0MCwgMzYsIDIxMywgMTIxLCAyMDYsIDE0MCwgMzYsIDIzOSwgMTUsIDIwNiwgCisgICAgMTQwLCAzNiwgMjI3LCAxNTAsIDIwNiwgMTQwLCAzNiwgMjQzLCA0MiwgMjA2LCAxNDAsIDM2LCAyMzgsIDE3MCwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzksIDEwOSwgMjA2LCAxNDAsIDM2LCAyNDcsIDI0LCAyMDYsIDE0MCwgMzYsIDI0MSwgMTY3LCAyMDYsIAorICAgIDE0MCwgMzYsIDI3LCAyMTMsIDEyMCwgMjA2LCAxNDAsIDM2LCAyMTYsIDIwMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDE0LCAKKyAgICAyMDYsIDE0MCwgMzYsIDI0NiwgMTA4LCAyMDYsIDE0MCwgMzYsIDIyNiwgMTQzLCAyMDYsIDE0MCwgMzYsIDIzNiwgMzksIAorICAgIDIwNiwgMTQwLCAzNiwgMjA4LCA1OCwgMjA2LCAxNDAsIDM2LCAyMTQsIDIwMSwgMjA2LCAxNDAsIDM2LCAyMzYsIDE4MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMTMsIDEyMiwgMjA2LCAxNDAsIDM2LCAyMjUsIDUzLCAyMTcsIDM0LCAyMjEsIDEzMiwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMTMsIDExOCwgMjA2LCAxNDAsIDM2LCAyMzUsIDExMCwgMjA1LCAxODYsIDIyMiwgNTksIDIwNiwgMTQwLCAKKyAgICAzNiwgMjM4LCAxNzIsIDIwNiwgMTQwLCAzNiwgMjA4LCA3MSwgMjA2LCAxNDAsIDM2LCAyMzUsIDY1LCAyMDYsIDE0MCwgMzYsIAorICAgIDIzOCwgMTYzLCAyMDYsIDE0MCwgMzYsIDIxNiwgODksIDIwNiwgMTQwLCAzNiwgMjEzLCAxNiwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzcsIDM0LCAyMDYsIDE0MCwgMzYsIDIwMywgNjgsIDIxNywgMzQsIDIwMSwgODYsIDIwNiwgMTQwLCAzNiwgMjQzLCA1MiwgCisgICAgMjA2LCAxNDAsIDM2LCAyMjIsIDc0LCAyMDYsIDE0MCwgMzYsIDIzOCwgNzYsIDIwNiwgMTQwLCAzNiwgMjAzLCAyMzgsIAorICAgIDIwNiwgMTQwLCAzNiwgMjQxLCAyNSwgMjA2LCAxNDAsIDM2LCAyNDYsIDExMCwgMjIxLCA1OCwgMjA2LCAxNDAsIDM2LCAKKyAgICAyMzUsIDQyLCAyMDYsIDE0MCwgMzYsIDIzNiwgNDAsIDIyOCwgMTE3LCAyMDYsIDE0MCwgMzYsIDIyMiwgMTI5LCAyMDYsIAorICAgIDE0MCwgMzYsIDI1MSwgMjQ2LCAyMDYsIDE0MCwgMzYsIDIzOCwgMTg4LCAyMDYsIDE0MCwgMzYsIDIzOSwgMTcxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIwMSwgODQsIDIwNiwgMTQwLCAzNiwgMjA5LCAxMzQsIDIwNiwgMTQwLCAzNiwgMjI4LCA4MSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyNDEsIDEyNCwgMjA2LCAxNDAsIDM2LCAyNDEsIDI0OCwgMjA2LCAxNDAsIDM2LCAyNDEsIDIxLCAyMDYsIAorICAgIDE0MCwgMzYsIDIzOCwgNDAsIDIwNiwgMTQwLCAzNiwgMjEwLCAxMjgsIDIwNiwgMTQwLCAzNiwgMjA4LCA3NSwgMjA2LCAKKyAgICAxNDAsIDM2LCAyMzQsIDE2NCwgMjA2LCAxNDAsIDM2LCAyNDYsIDYzLCAyMDYsIDE0MCwgMzYsIDI0NiwgMTA1LCAyMDYsIAorICAgIDE0MCwgMzYsIDIzNywgMTc0LCAyMDYsIDE0MCwgMzYsIDI1MSwgMTg4LCAyMDYsIDE0MCwgMzYsIDI0NiwgNjIsIDIwNiwgCisgICAgMTQwLCAzNiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIwMywgNDUsIDIwNiwgMTQwLCAzNiwgMjQxLCA0NywgMjA2LCAxNDAsIDM2LCAKKyAgICAyMjUsIDE2NCwgMjA2LCAxNDAsIDM2LCAyMzYsIDIzMiwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxMDIsIAorICAgIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTA1LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE0NywgCisgICAgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxNDksIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgMTY0LCAKKyAgICAyNDMsIDMsIDIxMiwgMjQ3LCAyMDMsIDI0MCwgMTcsIDE4NywgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAyMTAsIAorICAgIDEzNSwgMjQzLCAzLCAyMTIsIDI0NywgMjAzLCAyNDAsIDE3LCAxOTIsIDI0MywgMywgMjEyLCAyNDcsIDIwMywgMjQwLCAxNywgCisgICAgMjE5LCAxMTMsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMTAyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIAorICAgIDE2MiwgMTcsIDEwNSwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAxNjIsIDE3LCAxNDcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgCisgICAgMTYyLCAxNywgMTQ5LCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDE2NCwgMjQzLCAzLCAyMTIsIDI0NywgMjA2LCAKKyAgICAxNjIsIDE3LCAxODcsIDI0MywgMywgMjEyLCAyNDcsIDIwNiwgMTYyLCAxNywgMjEwLCAxMzUsIDI0MywgMywgMjEyLCAyNDcsIAorICAgIDIwNiwgMTYyLCAxNywgMTkyLCAyNDMsIDMsIDIxMiwgMjQ3LCAyMDYsIDE2MiwgMTcsIDIxOSwgMTEzLCAxMywgMjcsIDYsIAorICAgIDYyLCAxMywgMjcsIDYsIDI1MCwgMTAzLCAxMywgMjcsIDYsIDI0NywgMjIzLCAxMywgMjcsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDYsIDcyLCAxMywgMjcsIDYsIDIzOCwgNSwgMTMsIDI3LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCA2LCAyMzQsIDI0NywgCisgICAgMTMsIDI3LCA2LCA3MCwgMTMsIDI3LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDI3LCA2LCAxNTYsIAorICAgIDEzLCAyNywgNiwgMjIzLCAyNDMsIDEzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCAyNywgNiwgNzQsIDEzLCAyNywgNiwgMjE2LCAKKyAgICAyMjYsIDEzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCAyNywgNiwgMTQ2LCAxMywgMjcsIDYsIDIxMiwgMTIyLCAxMywgMjcsIDYsIAorICAgIDIwNywgODMsIDEzLCAyNywgNiwgNjYsIDEzLCAyNywgNiwgMjAzLCAxNjgsIDEzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCAyNywgCisgICAgNiwgMjAwLCAxOTUsIDEzLCAyNywgNiwgMjAwLCAxMjMsIDEzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCAyNywgNCwgNjIsIDEzLCAKKyAgICAyNywgNCwgMjUwLCAxMDMsIDEzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCAyNywgNCwgMjQyLCAxNTMsIDEzLCAyNywgNCwgNzIsIAorICAgIDEzLCAyNywgNCwgMjM4LCA1LCAxMywgMjcsIDQsIDIzNiwgMTU2LCAxMywgMjcsIDQsIDIzNCwgMjQ3LCAxMywgMjcsIDQsIAorICAgIDcwLCAxMywgMjcsIDQsIDIyNywgMjUxLCAxMywgMjcsIDQsIDIyNywgMTE4LCAxMywgMjcsIDQsIDE1NiwgMTMsIDI3LCA0LCAKKyAgICAyMjMsIDI0MywgMTMsIDI3LCA0LCAyMjAsIDIxNCwgMTMsIDI3LCA0LCA3NCwgMTMsIDI3LCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCA0LCAyMTQsIDE2NywgMTMsIDI3LCA0LCAxNDYsIDEzLCAyNywgNCwgMjEyLCAxMjIsIDEzLCAyNywgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCA0LCA2NiwgMTMsIDI3LCA0LCAyMDMsIDE2OCwgMTMsIDI3LCA0LCAyMDEsIDE0NywgMTMsIDI3LCA0LCAyMDAsIAorICAgIDE5NSwgMTMsIDI3LCA0LCAyMDAsIDEyMywgMTMsIDI3LCA0LCAxOTksIDE1NywgMTMsIDM5LCA2LCA2MiwgMTMsIDM5LCA2LCAKKyAgICAyNTAsIDEwMywgMTMsIDM5LCA2LCAyNDcsIDIyMywgMTMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDM5LCA2LCA3MiwgMTMsIAorICAgIDM5LCA2LCAyMzgsIDUsIDEzLCAzOSwgNiwgMjM2LCAxNTYsIDEzLCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAzOSwgNiwgNzAsIAorICAgIDEzLCAzOSwgNiwgMjI3LCAyNTEsIDEzLCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAzOSwgNiwgMTU2LCAxMywgMzksIDYsIDIyMywgCisgICAgMjQzLCAxMywgMzksIDYsIDIyMCwgMjE0LCAxMywgMzksIDYsIDc0LCAxMywgMzksIDYsIDIxNiwgMjI2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMTY3LCAxMywgMzksIDYsIDE0NiwgMTMsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDM5LCA2LCAyMDcsIDgzLCAxMywgCisgICAgMzksIDYsIDY2LCAxMywgMzksIDYsIDIwMywgMTY4LCAxMywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMzksIDYsIDIwMCwgMTk1LCAKKyAgICAxMywgMzksIDYsIDIwMCwgMTIzLCAxMywgMzksIDYsIDE5OSwgMTU3LCAxMywgMzksIDQsIDYyLCAxMywgMzksIDQsIDI1MCwgCisgICAgMTAzLCAxMywgMzksIDQsIDI0NywgMjIzLCAxMywgMzksIDQsIDI0MiwgMTUzLCAxMywgMzksIDQsIDcyLCAxMywgMzksIDQsIAorICAgIDIzOCwgNSwgMTMsIDM5LCA0LCAyMzYsIDE1NiwgMTMsIDM5LCA0LCA3MCwgMTMsIDM5LCA0LCAyMjcsIDI1MSwgMTMsIDM5LCAKKyAgICA0LCAyMjcsIDExOCwgMTMsIDM5LCA0LCAxNTYsIDEzLCAzOSwgNCwgMjIzLCAyNDMsIDEzLCAzOSwgNCwgMjIwLCAyMTQsIAorICAgIDEzLCAzOSwgNCwgNzQsIDEzLCAzOSwgNCwgMjE2LCAyMjYsIDEzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCAzOSwgNCwgMTQ2LCAKKyAgICAxMywgMzksIDQsIDIxMiwgMTIyLCAxMywgMzksIDQsIDIwNywgODMsIDEzLCAzOSwgNCwgNjYsIDEzLCAzOSwgNCwgMjAzLCAKKyAgICAxNjgsIDEzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCAzOSwgNCwgMjAwLCAxOTUsIDEzLCAzOSwgNCwgMjAwLCAxMjMsIDEzLCAKKyAgICAzOSwgNCwgMTk5LCAxNTcsIDEzLCAyNywgMzksIDYsIDYyLCAxMywgMjcsIDM5LCA2LCAyNTAsIDEwMywgMTMsIDI3LCAzOSwgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyNywgMzksIDYsIDI0MiwgMTUzLCAxMywgMjcsIDM5LCA2LCA3MiwgMTMsIDI3LCAzOSwgNiwgCisgICAgMjM4LCA1LCAxMywgMjcsIDM5LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAzOSwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgMjcsIDM5LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAzOSwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMzksIDYsIDE1NiwgCisgICAgMTMsIDI3LCAzOSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgMzksIDYsIDIyMCwgMjE0LCAxMywgMjcsIDM5LCA2LCA3NCwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgMzksIDYsIDIxNCwgMTY3LCAxMywgMjcsIDM5LCA2LCAxNDYsIDEzLCAyNywgCisgICAgMzksIDYsIDIxMiwgMTIyLCAxMywgMjcsIDM5LCA2LCAyMDcsIDgzLCAxMywgMjcsIDM5LCA2LCA2NiwgMTMsIDI3LCAzOSwgCisgICAgNiwgMjAzLCAxNjgsIDEzLCAyNywgMzksIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxMjMsIDEzLCAyNywgMzksIDYsIDE5OSwgMTU3LCAxMywgMjcsIDM5LCA0LCA2MiwgMTMsIDI3LCAzOSwgCisgICAgNCwgMjUwLCAxMDMsIDEzLCAyNywgMzksIDQsIDI0NywgMjIzLCAxMywgMjcsIDM5LCA0LCAyNDIsIDE1MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgNzIsIDEzLCAyNywgMzksIDQsIDIzOCwgNSwgMTMsIDI3LCAzOSwgNCwgMjM2LCAxNTYsIDEzLCAyNywgMzksIDQsIAorICAgIDIzNCwgMjQ3LCAxMywgMjcsIDM5LCA0LCA3MCwgMTMsIDI3LCAzOSwgNCwgMjI3LCAyNTEsIDEzLCAyNywgMzksIDQsIDIyNywgCisgICAgMTE4LCAxMywgMjcsIDM5LCA0LCAxNTYsIDEzLCAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgMjcsIDM5LCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDI3LCAzOSwgNCwgNzQsIDEzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAzOSwgNCwgMTQ2LCAxMywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDI3LCAzOSwgNCwgMjA3LCA4MywgMTMsIAorICAgIDI3LCAzOSwgNCwgNjYsIDEzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgMjcsIDM5LCA0LCAyMDEsIDE0NywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgMjcsIDM5LCA0LCAxOTksIDE1NywgMTMsIAorICAgIDEzNSwgNiwgNjIsIDEzLCAxMzUsIDYsIDI0NywgMjIzLCAxMywgMTM1LCA2LCAyNDIsIDE1MywgMTMsIDEzNSwgNiwgMjM2LCAKKyAgICAxNTYsIDEzLCAxMzUsIDYsIDIyNywgMjUxLCAxMywgMTM1LCA2LCAyMjcsIDExOCwgMTMsIDEzNSwgNiwgMjIwLCAyMTQsIAorICAgIDEzLCAxMzUsIDYsIDc0LCAxMywgMTM1LCA2LCAyMTYsIDIyNiwgMTMsIDEzNSwgNiwgMjE0LCAxNjcsIDEzLCAxMzUsIDYsIAorICAgIDIxMiwgMTIyLCAxMywgMTM1LCA2LCAyMDcsIDgzLCAxMywgMTM1LCA2LCA2NiwgMTMsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAKKyAgICAxMzUsIDYsIDIwMSwgMTQ3LCAxMywgMTM1LCA2LCAyMDAsIDE5NSwgMTMsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAxMzUsIDYsIAorICAgIDE5OSwgMTU3LCAxMywgMTM1LCA0LCA2MiwgMTMsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAxMzUsIDQsIDI0NywgMjIzLCAxMywgCisgICAgMTM1LCA0LCAyNDIsIDE1MywgMTMsIDEzNSwgNCwgMjM4LCA1LCAxMywgMTM1LCA0LCAyMzQsIDI0NywgMTMsIDEzNSwgNCwgCisgICAgNzAsIDEzLCAxMzUsIDQsIDIyNywgMjUxLCAxMywgMTM1LCA0LCAyMjcsIDExOCwgMTMsIDEzNSwgNCwgMTU2LCAxMywgMTM1LCAKKyAgICA0LCAyMjMsIDI0MywgMTMsIDEzNSwgNCwgMjIwLCAyMTQsIDEzLCAxMzUsIDQsIDIxNiwgMjI2LCAxMywgMTM1LCA0LCAyMTQsIAorICAgIDE2NywgMTMsIDEzNSwgNCwgMTQ2LCAxMywgMTM1LCA0LCAyMTIsIDEyMiwgMTMsIDEzNSwgNCwgMjA3LCA4MywgMTMsIDEzNSwgCisgICAgNCwgNjYsIDEzLCAxMzUsIDQsIDIwMywgMTY4LCAxMywgMTM1LCA0LCAyMDEsIDE0NywgMTMsIDEzNSwgNCwgMjAwLCAxOTUsIAorICAgIDEzLCAxMzUsIDQsIDIwMCwgMTIzLCAxMywgMTM1LCA0LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDYsIDYyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjUwLCAxMDMsIDEzLCAyNywgMTM1LCA2LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDYsIDI0MiwgMTUzLCAxMywgCisgICAgMjcsIDEzNSwgNiwgNzIsIDEzLCAyNywgMTM1LCA2LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA2LCAyMzYsIDE1NiwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIzNCwgMjQ3LCAxMywgMjcsIDEzNSwgNiwgNzAsIDEzLCAyNywgMTM1LCA2LCAyMjcsIDI1MSwgMTMsIDI3LCAKKyAgICAxMzUsIDYsIDIyNywgMTE4LCAxMywgMjcsIDEzNSwgNiwgMTU2LCAxMywgMjcsIDEzNSwgNiwgMjIzLCAyNDMsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMjAsIDIxNCwgMTMsIDI3LCAxMzUsIDYsIDc0LCAxMywgMjcsIDEzNSwgNiwgMjE2LCAyMjYsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMTQsIDE2NywgMTMsIDI3LCAxMzUsIDYsIDE0NiwgMTMsIDI3LCAxMzUsIDYsIDIxMiwgMTIyLCAxMywgMjcsIAorICAgIDEzNSwgNiwgMjA3LCA4MywgMTMsIDI3LCAxMzUsIDYsIDY2LCAxMywgMjcsIDEzNSwgNiwgMjAzLCAxNjgsIDEzLCAyNywgCisgICAgMTM1LCA2LCAyMDEsIDE0NywgMTMsIDI3LCAxMzUsIDYsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNiwgMjAwLCAxMjMsIDEzLCAKKyAgICAyNywgMTM1LCA2LCAxOTksIDE1NywgMTMsIDI3LCAxMzUsIDQsIDYyLCAxMywgMjcsIDEzNSwgNCwgMjUwLCAxMDMsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyNDcsIDIyMywgMTMsIDI3LCAxMzUsIDQsIDI0MiwgMTUzLCAxMywgMjcsIDEzNSwgNCwgNzIsIDEzLCAKKyAgICAyNywgMTM1LCA0LCAyMzgsIDUsIDEzLCAyNywgMTM1LCA0LCAyMzYsIDE1NiwgMTMsIDI3LCAxMzUsIDQsIDIzNCwgMjQ3LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgNzAsIDEzLCAyNywgMTM1LCA0LCAyMjcsIDI1MSwgMTMsIDI3LCAxMzUsIDQsIDIyNywgMTE4LCAKKyAgICAxMywgMjcsIDEzNSwgNCwgMTU2LCAxMywgMjcsIDEzNSwgNCwgMjIzLCAyNDMsIDEzLCAyNywgMTM1LCA0LCAyMjAsIDIxNCwgCisgICAgMTMsIDI3LCAxMzUsIDQsIDc0LCAxMywgMjcsIDEzNSwgNCwgMjE2LCAyMjYsIDEzLCAyNywgMTM1LCA0LCAyMTQsIDE2NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDE0NiwgMTMsIDI3LCAxMzUsIDQsIDIxMiwgMTIyLCAxMywgMjcsIDEzNSwgNCwgMjA3LCA4MywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDY2LCAxMywgMjcsIDEzNSwgNCwgMjAzLCAxNjgsIDEzLCAyNywgMTM1LCA0LCAyMDEsIDE0NywgCisgICAgMTMsIDI3LCAxMzUsIDQsIDIwMCwgMTk1LCAxMywgMjcsIDEzNSwgNCwgMjAwLCAxMjMsIDEzLCAyNywgMTM1LCA0LCAxOTksIAorICAgIDE1NywgMTMsIDE3MCwgNiwgNjIsIDEzLCAxNzAsIDYsIDI1MCwgMTAzLCAxMywgMTcwLCA2LCAyNDIsIDE1MywgMTMsIDE3MCwgCisgICAgNiwgNzIsIDEzLCAxNzAsIDYsIDIzOCwgNSwgMTMsIDE3MCwgNiwgMjM2LCAxNTYsIDEzLCAxNzAsIDYsIDIyNywgMjUxLCAKKyAgICAxMywgMTcwLCA2LCAyMjcsIDExOCwgMTMsIDE3MCwgNiwgMTU2LCAxMywgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDE3MCwgNiwgCisgICAgMjIwLCAyMTQsIDEzLCAxNzAsIDYsIDc0LCAxMywgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDE3MCwgNiwgMjE0LCAxNjcsIDEzLCAKKyAgICAxNzAsIDYsIDIxMiwgMTIyLCAxMywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMTcwLCA2LCA2NiwgMTMsIDE3MCwgNiwgMjAzLCAKKyAgICAxNjgsIDEzLCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMTcwLCA2LCAyMDAsIDE5NSwgMTMsIDE3MCwgNiwgMjAwLCAxMjMsIAorICAgIDEzLCAxNzAsIDQsIDYyLCAxMywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDE3MCwgNCwgMjQ3LCAyMjMsIDEzLCAxNzAsIDQsIAorICAgIDI0MiwgMTUzLCAxMywgMTcwLCA0LCA3MiwgMTMsIDE3MCwgNCwgMjM4LCA1LCAxMywgMTcwLCA0LCAyMzYsIDE1NiwgMTMsIAorICAgIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAxNzAsIDQsIDcwLCAxMywgMTcwLCA0LCAyMjcsIDI1MSwgMTMsIDE3MCwgNCwgMjI3LCAKKyAgICAxMTgsIDEzLCAxNzAsIDQsIDE1NiwgMTMsIDE3MCwgNCwgMjIzLCAyNDMsIDEzLCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgCisgICAgMTcwLCA0LCA3NCwgMTMsIDE3MCwgNCwgMjE2LCAyMjYsIDEzLCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMTcwLCA0LCAxNDYsIAorICAgIDEzLCAxNzAsIDQsIDIxMiwgMTIyLCAxMywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMTcwLCA0LCA2NiwgMTMsIDE3MCwgNCwgCisgICAgMjAzLCAxNjgsIDEzLCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMTcwLCA0LCAyMDAsIDE5NSwgMTMsIDE3MCwgNCwgMjAwLCAKKyAgICAxMjMsIDEzLCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgMTc1LCA2LCA2MiwgMTMsIDE3NSwgNiwgMjUwLCAxMDMsIDEzLCAxNzUsIAorICAgIDYsIDI0MiwgMTUzLCAxMywgMTc1LCA2LCA3MiwgMTMsIDE3NSwgNiwgMjM4LCA1LCAxMywgMTc1LCA2LCAyMzYsIDE1NiwgCisgICAgMTMsIDE3NSwgNiwgNzAsIDEzLCAxNzUsIDYsIDIyNywgMjUxLCAxMywgMTc1LCA2LCAyMjcsIDExOCwgMTMsIDE3NSwgNiwgCisgICAgMTU2LCAxMywgMTc1LCA2LCAyMjMsIDI0MywgMTMsIDE3NSwgNiwgNzQsIDEzLCAxNzUsIDYsIDIxMiwgMTIyLCAxMywgMTc1LCAKKyAgICA2LCAyMDcsIDgzLCAxMywgMTc1LCA2LCA2NiwgMTMsIDE3NSwgNiwgMjAzLCAxNjgsIDEzLCAxNzUsIDYsIDIwMSwgMTQ3LCAKKyAgICAxMywgMTc1LCA2LCAyMDAsIDE5NSwgMTMsIDE3NSwgNiwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDYyLCAxMywgMTc1LCA0LCAKKyAgICAyNTAsIDEwMywgMTMsIDE3NSwgNCwgMjQ3LCAyMjMsIDEzLCAxNzUsIDQsIDI0MiwgMTUzLCAxMywgMTc1LCA0LCA3MiwgMTMsIAorICAgIDE3NSwgNCwgMjM4LCA1LCAxMywgMTc1LCA0LCAyMzYsIDE1NiwgMTMsIDE3NSwgNCwgMjM0LCAyNDcsIDEzLCAxNzUsIDQsIAorICAgIDcwLCAxMywgMTc1LCA0LCAyMjcsIDI1MSwgMTMsIDE3NSwgNCwgMjI3LCAxMTgsIDEzLCAxNzUsIDQsIDE1NiwgMTMsIDE3NSwgCisgICAgNCwgMjIzLCAyNDMsIDEzLCAxNzUsIDQsIDIyMCwgMjE0LCAxMywgMTc1LCA0LCA3NCwgMTMsIDE3NSwgNCwgMjE2LCAyMjYsIAorICAgIDEzLCAxNzUsIDQsIDIxNCwgMTY3LCAxMywgMTc1LCA0LCAxNDYsIDEzLCAxNzUsIDQsIDIxMiwgMTIyLCAxMywgMTc1LCA0LCAKKyAgICAyMDcsIDgzLCAxMywgMTc1LCA0LCA2NiwgMTMsIDE3NSwgNCwgMjAzLCAxNjgsIDEzLCAxNzUsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgMTc1LCA0LCAyMDAsIDE5NSwgMTMsIDE3NSwgNCwgMjAwLCAxMjMsIDEzLCAxNzUsIDQsIDE5OSwgMTU3LCAxMywgMjcsIAorICAgIDE3MCwgNiwgNjIsIDEzLCAyNywgMTcwLCA2LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDYsIDI0NywgMjIzLCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjQyLCAxNTMsIDEzLCAyNywgMTcwLCA2LCA3MiwgMTMsIDI3LCAxNzAsIDYsIDIzOCwgNSwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIzNiwgMTU2LCAxMywgMjcsIDE3MCwgNiwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA2LCA3MCwgMTMsIDI3LCAKKyAgICAxNzAsIDYsIDIyNywgMjUxLCAxMywgMjcsIDE3MCwgNiwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA2LCAxNTYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMjMsIDI0MywgMTMsIDI3LCAxNzAsIDYsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNiwgNzQsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMTYsIDIyNiwgMTMsIDI3LCAxNzAsIDYsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNiwgMTQ2LCAxMywgMjcsIAorICAgIDE3MCwgNiwgMjEyLCAxMjIsIDEzLCAyNywgMTcwLCA2LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNiwgNjYsIDEzLCAyNywgCisgICAgMTcwLCA2LCAyMDMsIDE2OCwgMTMsIDI3LCAxNzAsIDYsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNiwgMjAwLCAxOTUsIDEzLCAKKyAgICAyNywgMTcwLCA2LCAyMDAsIDEyMywgMTMsIDI3LCAxNzAsIDYsIDE5OSwgMTU3LCAxMywgMjcsIDE3MCwgNCwgNjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyNTAsIDEwMywgMTMsIDI3LCAxNzAsIDQsIDI0NywgMjIzLCAxMywgMjcsIDE3MCwgNCwgMjQyLCAxNTMsIAorICAgIDEzLCAyNywgMTcwLCA0LCA3MiwgMTMsIDI3LCAxNzAsIDQsIDIzOCwgNSwgMTMsIDI3LCAxNzAsIDQsIDIzNiwgMTU2LCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjM0LCAyNDcsIDEzLCAyNywgMTcwLCA0LCA3MCwgMTMsIDI3LCAxNzAsIDQsIDIyNywgMjUxLCAxMywgCisgICAgMjcsIDE3MCwgNCwgMjI3LCAxMTgsIDEzLCAyNywgMTcwLCA0LCAxNTYsIDEzLCAyNywgMTcwLCA0LCAyMjMsIDI0MywgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIyMCwgMjE0LCAxMywgMjcsIDE3MCwgNCwgNzQsIDEzLCAyNywgMTcwLCA0LCAyMTYsIDIyNiwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIxNCwgMTY3LCAxMywgMjcsIDE3MCwgNCwgMTQ2LCAxMywgMjcsIDE3MCwgNCwgMjEyLCAxMjIsIDEzLCAKKyAgICAyNywgMTcwLCA0LCAyMDcsIDgzLCAxMywgMjcsIDE3MCwgNCwgNjYsIDEzLCAyNywgMTcwLCA0LCAyMDMsIDE2OCwgMTMsIAorICAgIDI3LCAxNzAsIDQsIDIwMSwgMTQ3LCAxMywgMjcsIDE3MCwgNCwgMjAwLCAxOTUsIDEzLCAyNywgMTcwLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDI3LCAxNzAsIDQsIDE5OSwgMTU3LCAxMywgNDMsIDYsIDYyLCAxMywgNDMsIDYsIDI1MCwgMTAzLCAxMywgNDMsIDYsIAorICAgIDI0NywgMjIzLCAxMywgNDMsIDYsIDI0MiwgMTUzLCAxMywgNDMsIDYsIDcyLCAxMywgNDMsIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICA2LCAyMzYsIDE1NiwgMTMsIDQzLCA2LCAyMzQsIDI0NywgMTMsIDQzLCA2LCA3MCwgMTMsIDQzLCA2LCAyMjcsIDI1MSwgMTMsIAorICAgIDQzLCA2LCAyMjcsIDExOCwgMTMsIDQzLCA2LCAxNTYsIDEzLCA0MywgNiwgMjIzLCAyNDMsIDEzLCA0MywgNiwgMjIwLCAKKyAgICAyMTQsIDEzLCA0MywgNiwgNzQsIDEzLCA0MywgNiwgMjE2LCAyMjYsIDEzLCA0MywgNiwgMjE0LCAxNjcsIDEzLCA0MywgNiwgCisgICAgMTQ2LCAxMywgNDMsIDYsIDIxMiwgMTIyLCAxMywgNDMsIDYsIDIwNywgODMsIDEzLCA0MywgNiwgNjYsIDEzLCA0MywgNiwgCisgICAgMjAzLCAxNjgsIDEzLCA0MywgNiwgMjAxLCAxNDcsIDEzLCA0MywgNiwgMjAwLCAxOTUsIDEzLCA0MywgNiwgMjAwLCAxMjMsIAorICAgIDEzLCA0MywgNiwgMTk5LCAxNTcsIDEzLCA0MywgNCwgNjIsIDEzLCA0MywgNCwgMjUwLCAxMDMsIDEzLCA0MywgNCwgMjQ3LCAKKyAgICAyMjMsIDEzLCA0MywgNCwgMjQyLCAxNTMsIDEzLCA0MywgNCwgNzIsIDEzLCA0MywgNCwgMjM4LCA1LCAxMywgNDMsIDQsIAorICAgIDIzNiwgMTU2LCAxMywgNDMsIDQsIDIzNCwgMjQ3LCAxMywgNDMsIDQsIDcwLCAxMywgNDMsIDQsIDIyNywgMjUxLCAxMywgCisgICAgNDMsIDQsIDIyNywgMTE4LCAxMywgNDMsIDQsIDE1NiwgMTMsIDQzLCA0LCAyMjMsIDI0MywgMTMsIDQzLCA0LCAyMjAsIAorICAgIDIxNCwgMTMsIDQzLCA0LCA3NCwgMTMsIDQzLCA0LCAyMTYsIDIyNiwgMTMsIDQzLCA0LCAyMTQsIDE2NywgMTMsIDQzLCA0LCAKKyAgICAxNDYsIDEzLCA0MywgNCwgMjEyLCAxMjIsIDEzLCA0MywgNCwgMjA3LCA4MywgMTMsIDQzLCA0LCA2NiwgMTMsIDQzLCA0LCAKKyAgICAyMDMsIDE2OCwgMTMsIDQzLCA0LCAyMDEsIDE0NywgMTMsIDQzLCA0LCAyMDAsIDE5NSwgMTMsIDQzLCA0LCAyMDAsIDEyMywgCisgICAgMTMsIDQzLCA0LCAxOTksIDE1NywgMTMsIDQzLCAyNywgNiwgNjIsIDEzLCA0MywgMjcsIDYsIDI1MCwgMTAzLCAxMywgNDMsIAorICAgIDI3LCA2LCAyNDcsIDIyMywgMTMsIDQzLCAyNywgNiwgMjQyLCAxNTMsIDEzLCA0MywgMjcsIDYsIDcyLCAxMywgNDMsIDI3LCAKKyAgICA2LCAyMzgsIDUsIDEzLCA0MywgMjcsIDYsIDIzNiwgMTU2LCAxMywgNDMsIDI3LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgCisgICAgNiwgNzAsIDEzLCA0MywgMjcsIDYsIDIyNywgMjUxLCAxMywgNDMsIDI3LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgNiwgCisgICAgMTU2LCAxMywgNDMsIDI3LCA2LCAyMjMsIDI0MywgMTMsIDQzLCAyNywgNiwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDYsIDc0LCAKKyAgICAxMywgNDMsIDI3LCA2LCAyMTYsIDIyNiwgMTMsIDQzLCAyNywgNiwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDYsIDE0NiwgMTMsIAorICAgIDQzLCAyNywgNiwgMjEyLCAxMjIsIDEzLCA0MywgMjcsIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDYsIDY2LCAxMywgNDMsIAorICAgIDI3LCA2LCAyMDMsIDE2OCwgMTMsIDQzLCAyNywgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDYsIDIwMCwgMTk1LCAxMywgCisgICAgNDMsIDI3LCA2LCAyMDAsIDEyMywgMTMsIDQzLCAyNywgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDQsIDYyLCAxMywgNDMsIAorICAgIDI3LCA0LCAyNTAsIDEwMywgMTMsIDQzLCAyNywgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDQsIDI0MiwgMTUzLCAxMywgCisgICAgNDMsIDI3LCA0LCA3MiwgMTMsIDQzLCAyNywgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCA0LCAyMzYsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgNCwgMjM0LCAyNDcsIDEzLCA0MywgMjcsIDQsIDcwLCAxMywgNDMsIDI3LCA0LCAyMjcsIDI1MSwgMTMsIDQzLCAyNywgCisgICAgNCwgMjI3LCAxMTgsIDEzLCA0MywgMjcsIDQsIDE1NiwgMTMsIDQzLCAyNywgNCwgMjIzLCAyNDMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIyMCwgMjE0LCAxMywgNDMsIDI3LCA0LCA3NCwgMTMsIDQzLCAyNywgNCwgMjE2LCAyMjYsIDEzLCA0MywgMjcsIDQsIDIxNCwgCisgICAgMTY3LCAxMywgNDMsIDI3LCA0LCAxNDYsIDEzLCA0MywgMjcsIDQsIDIxMiwgMTIyLCAxMywgNDMsIDI3LCA0LCAyMDcsIDgzLCAKKyAgICAxMywgNDMsIDI3LCA0LCA2NiwgMTMsIDQzLCAyNywgNCwgMjAzLCAxNjgsIDEzLCA0MywgMjcsIDQsIDIwMSwgMTQ3LCAxMywgCisgICAgNDMsIDI3LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgNCwgMjAwLCAxMjMsIDEzLCA0MywgMjcsIDQsIDE5OSwgMTU3LCAKKyAgICAxMywgNDMsIDM5LCA2LCA2MiwgMTMsIDQzLCAzOSwgNiwgMjUwLCAxMDMsIDEzLCA0MywgMzksIDYsIDI0NywgMjIzLCAxMywgCisgICAgNDMsIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAzOSwgNiwgNzIsIDEzLCA0MywgMzksIDYsIDIzOCwgNSwgMTMsIDQzLCAKKyAgICAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMzksIDYsIDIzNCwgMjQ3LCAxMywgNDMsIDM5LCA2LCA3MCwgMTMsIDQzLCAzOSwgCisgICAgNiwgMjI3LCAyNTEsIDEzLCA0MywgMzksIDYsIDIyNywgMTE4LCAxMywgNDMsIDM5LCA2LCAxNTYsIDEzLCA0MywgMzksIDYsIAorICAgIDIyMywgMjQzLCAxMywgNDMsIDM5LCA2LCAyMjAsIDIxNCwgMTMsIDQzLCAzOSwgNiwgNzQsIDEzLCA0MywgMzksIDYsIDIxNiwgCisgICAgMjI2LCAxMywgNDMsIDM5LCA2LCAyMTQsIDE2NywgMTMsIDQzLCAzOSwgNiwgMTQ2LCAxMywgNDMsIDM5LCA2LCAyMTIsIAorICAgIDEyMiwgMTMsIDQzLCAzOSwgNiwgMjA3LCA4MywgMTMsIDQzLCAzOSwgNiwgNjYsIDEzLCA0MywgMzksIDYsIDIwMywgMTY4LCAKKyAgICAxMywgNDMsIDM5LCA2LCAyMDEsIDE0NywgMTMsIDQzLCAzOSwgNiwgMjAwLCAxOTUsIDEzLCA0MywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDM5LCA2LCAxOTksIDE1NywgMTMsIDQzLCAzOSwgNCwgNjIsIDEzLCA0MywgMzksIDQsIDI1MCwgMTAzLCAKKyAgICAxMywgNDMsIDM5LCA0LCAyNDcsIDIyMywgMTMsIDQzLCAzOSwgNCwgMjQyLCAxNTMsIDEzLCA0MywgMzksIDQsIDcyLCAxMywgCisgICAgNDMsIDM5LCA0LCAyMzgsIDUsIDEzLCA0MywgMzksIDQsIDIzNiwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMzQsIDI0NywgMTMsIAorICAgIDQzLCAzOSwgNCwgNzAsIDEzLCA0MywgMzksIDQsIDIyNywgMjUxLCAxMywgNDMsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAKKyAgICAzOSwgNCwgMTU2LCAxMywgNDMsIDM5LCA0LCAyMjMsIDI0MywgMTMsIDQzLCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMzksIAorICAgIDQsIDc0LCAxMywgNDMsIDM5LCA0LCAyMTYsIDIyNiwgMTMsIDQzLCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMzksIDQsIAorICAgIDE0NiwgMTMsIDQzLCAzOSwgNCwgMjEyLCAxMjIsIDEzLCA0MywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgMzksIDQsIDY2LCAKKyAgICAxMywgNDMsIDM5LCA0LCAyMDMsIDE2OCwgMTMsIDQzLCAzOSwgNCwgMjAxLCAxNDcsIDEzLCA0MywgMzksIDQsIDIwMCwgCisgICAgMTk1LCAxMywgNDMsIDM5LCA0LCAyMDAsIDEyMywgMTMsIDQzLCAzOSwgNCwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA2LCAKKyAgICA2MiwgMTMsIDQzLCAyNywgMzksIDYsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyNDIsIDE1MywgMTMsIDQzLCAyNywgMzksIDYsIDcyLCAxMywgNDMsIDI3LCAzOSwgNiwgMjM4LCA1LCAxMywgCisgICAgNDMsIDI3LCAzOSwgNiwgMjM2LCAxNTYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDYsIAorICAgIDcwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgCisgICAgMzksIDYsIDE1NiwgMTMsIDQzLCAyNywgMzksIDYsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNiwgMjIwLCAyMTQsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCA3NCwgMTMsIDQzLCAyNywgMzksIDYsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNiwgMjE0LCAKKyAgICAxNjcsIDEzLCA0MywgMjcsIDM5LCA2LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIAorICAgIDYsIDIwNywgODMsIDEzLCA0MywgMjcsIDM5LCA2LCA2NiwgMTMsIDQzLCAyNywgMzksIDYsIDIwMywgMTY4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjAxLCAxNDcsIDEzLCA0MywgMjcsIDM5LCA2LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDYsIDIwMCwgCisgICAgMTIzLCAxMywgNDMsIDI3LCAzOSwgNiwgMTk5LCAxNTcsIDEzLCA0MywgMjcsIDM5LCA0LCA2MiwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI1MCwgMTAzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjQ3LCAyMjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyNDIsIDE1MywgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDcyLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA1LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM2LCAKKyAgICAxNTYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMzQsIDI0NywgMTMsIDQzLCAyNywgMzksIDQsIDcwLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjI3LCAyNTEsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjcsIDExOCwgMTMsIDQzLCAyNywgMzksIDQsIDE1NiwgMTMsIDQzLCAKKyAgICAyNywgMzksIDQsIDIyMywgMjQzLCAxMywgNDMsIDI3LCAzOSwgNCwgMjIwLCAyMTQsIDEzLCA0MywgMjcsIDM5LCA0LCA3NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIxNiwgMjI2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAxNjcsIDEzLCA0MywgMjcsIDM5LCAKKyAgICA0LCAxNDYsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTIsIDEyMiwgMTMsIDQzLCAyNywgMzksIDQsIDIwNywgODMsIDEzLCA0MywgCisgICAgMjcsIDM5LCA0LCA2NiwgMTMsIDQzLCAyNywgMzksIDQsIDIwMywgMTY4LCAxMywgNDMsIDI3LCAzOSwgNCwgMjAxLCAxNDcsIAorICAgIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE5NSwgMTMsIDQzLCAyNywgMzksIDQsIDIwMCwgMTIzLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMTk5LCAxNTcsIDEzLCAyMjEsIDkzLCA2LCA2MiwgMTMsIDIyMSwgOTMsIDYsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjQ3LCAyMjMsIDEzLCAyMjEsIDkzLCA2LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDYsIDcyLCAxMywgMjIxLCA5MywgCisgICAgNiwgMjM4LCA1LCAxMywgMjIxLCA5MywgNiwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA2LCAyMzQsIDI0NywgMTMsIDIyMSwgCisgICAgOTMsIDYsIDcwLCAxMywgMjIxLCA5MywgNiwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA2LCAyMjcsIDExOCwgMTMsIDIyMSwgCisgICAgOTMsIDYsIDE1NiwgMTMsIDIyMSwgOTMsIDYsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNiwgMjIwLCAyMTQsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA3NCwgMTMsIDIyMSwgOTMsIDYsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNiwgMjE0LCAxNjcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAxNDYsIDEzLCAyMjEsIDkzLCA2LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDYsIDIwNywgODMsIDEzLCAyMjEsIAorICAgIDkzLCA2LCA2NiwgMTMsIDIyMSwgOTMsIDYsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNiwgMjAxLCAxNDcsIDEzLCAyMjEsIAorICAgIDkzLCA2LCAyMDAsIDE5NSwgMTMsIDIyMSwgOTMsIDYsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNiwgMTk5LCAxNTcsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCA2MiwgMTMsIDIyMSwgOTMsIDQsIDI1MCwgMTAzLCAxMywgMjIxLCA5MywgNCwgMjQ3LCAyMjMsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyNDIsIDE1MywgMTMsIDIyMSwgOTMsIDQsIDcyLCAxMywgMjIxLCA5MywgNCwgMjM4LCA1LCAxMywgCisgICAgMjIxLCA5MywgNCwgMjM2LCAxNTYsIDEzLCAyMjEsIDkzLCA0LCAyMzQsIDI0NywgMTMsIDIyMSwgOTMsIDQsIDcwLCAxMywgCisgICAgMjIxLCA5MywgNCwgMjI3LCAyNTEsIDEzLCAyMjEsIDkzLCA0LCAyMjcsIDExOCwgMTMsIDIyMSwgOTMsIDQsIDE1NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIyMywgMjQzLCAxMywgMjIxLCA5MywgNCwgMjIwLCAyMTQsIDEzLCAyMjEsIDkzLCA0LCA3NCwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIxNiwgMjI2LCAxMywgMjIxLCA5MywgNCwgMjE0LCAxNjcsIDEzLCAyMjEsIDkzLCA0LCAxNDYsIDEzLCAKKyAgICAyMjEsIDkzLCA0LCAyMTIsIDEyMiwgMTMsIDIyMSwgOTMsIDQsIDIwNywgODMsIDEzLCAyMjEsIDkzLCA0LCA2NiwgMTMsIAorICAgIDIyMSwgOTMsIDQsIDIwMywgMTY4LCAxMywgMjIxLCA5MywgNCwgMjAxLCAxNDcsIDEzLCAyMjEsIDkzLCA0LCAyMDAsIDE5NSwgCisgICAgMTMsIDIyMSwgOTMsIDQsIDIwMCwgMTIzLCAxMywgMjIxLCA5MywgNCwgMTk5LCAxNTcsIDEzLCAzOSwgNCwgMjQwLCAxODEsIAorICAgIDcwLCAxMywgMzksIDQsIDI0MCwgMTgxLCAyMjcsIDI1MSwgMTMsIDI3LCA2LCAyNTEsIDExMiwgMTMsIDI3LCA2LCAyNDgsIAorICAgIDIwOCwgMTMsIDI3LCA2LCAyMzYsIDYwLCAxMywgMjcsIDYsIDI0MSwgMTM2LCAxMywgMjcsIDYsIDIzOCwgMTI0LCAxMywgCisgICAgMjcsIDYsIDE5OSwgODAsIDEzLCAyNywgNiwgMjM4LCA3OSwgMTMsIDI3LCA2LCAyMDYsIDg4LCAxMywgMjcsIDYsIDIyOCwgCisgICAgNDEsIDEzLCAyNywgNiwgMjI3LCA1NCwgMTMsIDI3LCA2LCAyMjUsIDg3LCAxMywgMjcsIDYsIDIyMSwgNDEsIDEzLCAyNywgCisgICAgNiwgMjE4LCAxMzMsIDEzLCAyNywgNiwgMjAwLCAxNjksIDEzLCAyNywgNiwgMjE3LCA4MSwgMTMsIDI3LCA2LCAyMTUsIAorICAgIDIwNCwgMTMsIDI3LCA2LCAyMTMsIDkwLCAxMywgMjcsIDYsIDIwNiwgODksIDk5LCAxMywgMjcsIDYsIDIwOSwgMTYzLCAxMywgCisgICAgMjcsIDYsIDIwNiwgMjIxLCAxMywgMjcsIDYsIDIwMywgMjIwLCAxMywgMjcsIDYsIDIxNSwgMjI5LCAxMywgMjcsIDYsIAorICAgIDI0NiwgMjM2LCAxMywgMjcsIDYsIDIxNCwgMjM1LCAxMywgMjcsIDYsIDIxNywgODMsIDEzLCAyNywgMjIwLCAxNTIsIDEzLCAKKyAgICAyNywgNCwgMjUxLCAxMTIsIDEzLCAyNywgNCwgMjQ4LCAyMDgsIDEzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDI3LCA0LCAyNDEsIAorICAgIDEzNiwgMTMsIDI3LCA0LCAyMzgsIDEyNCwgMTMsIDI3LCA0LCAxOTksIDgwLCAxMywgMjcsIDQsIDIzOCwgNzksIDEzLCAyNywgCisgICAgNCwgMjA2LCA4OCwgMTMsIDI3LCA0LCAyMjgsIDQxLCAxMywgMjcsIDQsIDIyNywgNTQsIDEzLCAyNywgNCwgMjI1LCA4NywgCisgICAgMTMsIDI3LCA0LCAyMjEsIDQxLCAxMywgMjcsIDQsIDIxOCwgMTMzLCAxMywgMjcsIDQsIDIwMCwgMTY5LCAxMywgMjcsIDQsIAorICAgIDIxNywgODEsIDEzLCAyNywgNCwgMjE1LCAyMDQsIDEzLCAyNywgNCwgMjEzLCA5MCwgMTMsIDI3LCA0LCA0NywgMjA5LCAKKyAgICAxNjMsIDEzLCAyNywgNCwgMjA5LCAxNjMsIDEzLCAyNywgNCwgMjA2LCAyMjEsIDEzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCAKKyAgICAyNywgNCwgMjE1LCAyMjksIDEzLCAyNywgNCwgMjQ2LCAyMzYsIDEzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCAyNywgNCwgCisgICAgMjE3LCA4MywgMTMsIDI3LCAyMTYsIDEwOCwgMjQxLCA0OCwgMTMsIDI3LCAyMzgsIDEyNSwgOTksIDEzLCAyNywgMjA2LCAKKyAgICA4OSwgOTksIDEzLCAyNywgMjI3LCA1NSwgOTksIDEzLCAyNywgMjE1LCAyMzAsIDk5LCAxMywgMjcsIDIxMywgOTEsIDk5LCAKKyAgICAxMywgMjcsIDIxNSwgMjA1LCA5OSwgMTMsIDM5LCA2LCAyNTEsIDExMiwgMTMsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDM5LCAKKyAgICA2LCAyMzYsIDYwLCAxMywgMzksIDYsIDI0MSwgMTM2LCAxMywgMzksIDYsIDIzOCwgMTI0LCAxMywgMzksIDYsIDE5OSwgODAsIAorICAgIDEzLCAzOSwgNiwgMjM4LCA3OSwgMTMsIDM5LCA2LCAyMDYsIDg4LCAxMywgMzksIDYsIDIyOCwgNDEsIDEzLCAzOSwgNiwgCisgICAgMjI3LCA1NCwgMTMsIDM5LCA2LCAyMjUsIDg3LCAxMywgMzksIDYsIDIyMSwgNDEsIDEzLCAzOSwgNiwgMjE4LCAxMzMsIDEzLCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCAzOSwgNiwgMjE3LCA4MSwgMTMsIDM5LCA2LCAyMTUsIDIwNCwgMTMsIDM5LCA2LCAyMTMsIAorICAgIDkwLCAxMywgMzksIDYsIDIwNiwgODksIDk5LCAxMywgMzksIDYsIDIwOSwgMTYzLCAxMywgMzksIDYsIDIwNiwgMjIxLCAxMywgCisgICAgMzksIDYsIDIwMywgMjIwLCAxMywgMzksIDYsIDIxNSwgMjI5LCAxMywgMzksIDYsIDI0NiwgMjM2LCAxMywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMzksIDYsIDIxNywgODMsIDEzLCAzOSwgMjIwLCAxNTIsIDEzLCAzOSwgNCwgMjUxLCAxMTIsIDEzLCAKKyAgICAzOSwgNCwgMjQ4LCAyMDgsIDEzLCAzOSwgNCwgMjM2LCA2MCwgMTMsIDM5LCA0LCAyNDEsIDEzNiwgMTMsIDM5LCA0LCAyMzgsIAorICAgIDEyNCwgMTMsIDM5LCA0LCAxOTksIDgwLCAxMywgMzksIDQsIDIzOCwgNzksIDEzLCAzOSwgNCwgMjA2LCA4OCwgMTMsIDM5LCAKKyAgICA0LCAyMjgsIDQxLCAxMywgMzksIDQsIDIyNywgNTQsIDEzLCAzOSwgNCwgMjI1LCA4NywgMTMsIDM5LCA0LCAyMjEsIDQxLCAKKyAgICAxMywgMzksIDQsIDIxOCwgMTMzLCAxMywgMzksIDQsIDIwMCwgMTY5LCAxMywgMzksIDQsIDIxNywgODEsIDEzLCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAzOSwgNCwgMjEzLCA5MCwgMTMsIDM5LCA0LCA0NywgMjA5LCAxNjMsIDEzLCAzOSwgNCwgMjA5LCAKKyAgICAxNjMsIDEzLCAzOSwgNCwgMjA2LCAyMjEsIDEzLCAzOSwgNCwgMjAzLCAyMjAsIDEzLCAzOSwgNCwgMjE1LCAyMjksIDEzLCAKKyAgICAzOSwgNCwgMjQ2LCAyMzYsIDEzLCAzOSwgNCwgMjE0LCAyMzUsIDEzLCAzOSwgNCwgMjE3LCA4MywgMTMsIDM5LCAyMTYsIAorICAgIDEwOCwgMjQxLCA0OCwgMTMsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCAzOSwgMjA2LCA4OSwgOTksIDEzLCAzOSwgMjI3LCA1NSwgCisgICAgOTksIDEzLCAzOSwgMjE1LCAyMzAsIDk5LCAxMywgMzksIDIxMywgOTEsIDk5LCAxMywgMzksIDIxNSwgMjA1LCA5OSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjUxLCAxMTIsIDEzLCAyNywgMzksIDYsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA2LCAyMzYsIDYwLCAxMywgCisgICAgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNiwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDYsIDE5OSwgODAsIDEzLCAKKyAgICAyNywgMzksIDYsIDIzOCwgNzksIDEzLCAyNywgMzksIDYsIDIwNiwgODgsIDEzLCAyNywgMzksIDYsIDIyOCwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIyNywgNTQsIDEzLCAyNywgMzksIDYsIDIyNSwgODcsIDEzLCAyNywgMzksIDYsIDIyMSwgNDEsIDEzLCAKKyAgICAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA2LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNiwgMjE3LCA4MSwgMTMsIAorICAgIDI3LCAzOSwgNiwgMjE1LCAyMDQsIDEzLCAyNywgMzksIDYsIDIxMywgOTAsIDEzLCAyNywgMzksIDYsIDIwNiwgODksIDk5LCAKKyAgICAxMywgMjcsIDM5LCA2LCAyMDksIDE2MywgMTMsIDI3LCAzOSwgNiwgMjA2LCAyMjEsIDEzLCAyNywgMzksIDYsIDIwMywgCisgICAgMjIwLCAxMywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDI3LCAzOSwgNiwgMjQ2LCAyMzYsIDEzLCAyNywgMzksIDYsIAorICAgIDIxNCwgMjM1LCAxMywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgMjcsIDM5LCAyMjAsIDE1MiwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjUxLCAxMTIsIDEzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgMjcsIDM5LCA0LCAyMzYsIDYwLCAxMywgMjcsIDM5LCA0LCAKKyAgICAyNDEsIDEzNiwgMTMsIDI3LCAzOSwgNCwgMjM4LCAxMjQsIDEzLCAyNywgMzksIDQsIDE5OSwgODAsIDEzLCAyNywgMzksIDQsIAorICAgIDIzOCwgNzksIDEzLCAyNywgMzksIDQsIDIwNiwgODgsIDEzLCAyNywgMzksIDQsIDIyOCwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIyNywgNTQsIDEzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCAyNywgMzksIDQsIDIyMSwgNDEsIDEzLCAyNywgMzksIDQsIAorICAgIDIxOCwgMTMzLCAxMywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MSwgMTMsIDI3LCAzOSwgNCwgCisgICAgMjE1LCAyMDQsIDEzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCAyNywgMzksIDQsIDQ3LCAyMDksIDE2MywgMTMsIDI3LCAKKyAgICAzOSwgNCwgMjA5LCAxNjMsIDEzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAxMywgMjcsIDM5LCA0LCAyMDMsIDIyMCwgMTMsIAorICAgIDI3LCAzOSwgNCwgMjE1LCAyMjksIDEzLCAyNywgMzksIDQsIDI0NiwgMjM2LCAxMywgMjcsIDM5LCA0LCAyMTQsIDIzNSwgCisgICAgMTMsIDI3LCAzOSwgNCwgMjE3LCA4MywgMTMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCAyNywgMzksIDIzOCwgCisgICAgMTI1LCA5OSwgMTMsIDI3LCAzOSwgMjA2LCA4OSwgOTksIDEzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgMjcsIDM5LCAKKyAgICAyMTUsIDIzMCwgOTksIDEzLCAyNywgMzksIDIxMywgOTEsIDk5LCAxMywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCA0MywgCisgICAgMjcsIDYsIDI1MSwgMTEyLCAxMywgNDMsIDI3LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNiwgMjM2LCA2MCwgMTMsIDQzLCAKKyAgICAyNywgNiwgMjQxLCAxMzYsIDEzLCA0MywgMjcsIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA2LCAxOTksIDgwLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMzgsIDc5LCAxMywgNDMsIDI3LCA2LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA2LCAyMjgsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMjcsIDU0LCAxMywgNDMsIDI3LCA2LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA2LCAyMjEsIDQxLCAxMywgNDMsIAorICAgIDI3LCA2LCAyMTgsIDEzMywgMTMsIDQzLCAyNywgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDYsIDIxNywgODEsIDEzLCA0MywgCisgICAgMjcsIDYsIDIxNSwgMjA0LCAxMywgNDMsIDI3LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA2LCAyMDYsIDg5LCA5OSwgMTMsIAorICAgIDQzLCAyNywgNiwgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCA2LCAyMDMsIDIyMCwgCisgICAgMTMsIDQzLCAyNywgNiwgMjE1LCAyMjksIDEzLCA0MywgMjcsIDYsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCA2LCAyMTQsIAorICAgIDIzNSwgMTMsIDQzLCAyNywgNiwgMjE3LCA4MywgMTMsIDQzLCAyNywgMjIwLCAxNTIsIDEzLCA0MywgMjcsIDQsIDI1MSwgCisgICAgMTEyLCAxMywgNDMsIDI3LCA0LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgNCwgMjQxLCAKKyAgICAxMzYsIDEzLCA0MywgMjcsIDQsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCA0LCAyMzgsIAorICAgIDc5LCAxMywgNDMsIDI3LCA0LCAyMDYsIDg4LCAxMywgNDMsIDI3LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCA0LCAyMjcsIAorICAgIDU0LCAxMywgNDMsIDI3LCA0LCAyMjUsIDg3LCAxMywgNDMsIDI3LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCA0LCAyMTgsIAorICAgIDEzMywgMTMsIDQzLCAyNywgNCwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDQsIDIxNywgODEsIDEzLCA0MywgMjcsIDQsIDIxNSwgCisgICAgMjA0LCAxMywgNDMsIDI3LCA0LCAyMTMsIDkwLCAxMywgNDMsIDI3LCA0LCA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDQsIAorICAgIDIwOSwgMTYzLCAxMywgNDMsIDI3LCA0LCAyMDYsIDIyMSwgMTMsIDQzLCAyNywgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIAorICAgIDQsIDIxNSwgMjI5LCAxMywgNDMsIDI3LCA0LCAyNDYsIDIzNiwgMTMsIDQzLCAyNywgNCwgMjE0LCAyMzUsIDEzLCA0MywgCisgICAgMjcsIDQsIDIxNywgODMsIDEzLCA0MywgMjcsIDIxNiwgMTA4LCAyNDEsIDQ4LCAxMywgNDMsIDI3LCAyMzgsIDEyNSwgOTksIAorICAgIDEzLCA0MywgMjcsIDIwNiwgODksIDk5LCAxMywgNDMsIDI3LCAyMjcsIDU1LCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAyMTMsIDkxLCA5OSwgMTMsIDQzLCAyNywgMjE1LCAyMDUsIDk5LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMjUxLCAxMTIsIDEzLCA0MywgMjcsIDM5LCA2LCAyNDgsIDIwOCwgMTMsIDQzLCAyNywgMzksIDYsIDIzNiwgNjAsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA2LCAyNDEsIDEzNiwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgMTI0LCAxMywgNDMsIDI3LCAzOSwgNiwgCisgICAgMTk5LCA4MCwgMTMsIDQzLCAyNywgMzksIDYsIDIzOCwgNzksIDEzLCA0MywgMjcsIDM5LCA2LCAyMDYsIDg4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjI4LCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIyNywgNTQsIDEzLCA0MywgMjcsIDM5LCA2LCAyMjUsIAorICAgIDg3LCAxMywgNDMsIDI3LCAzOSwgNiwgMjIxLCA0MSwgMTMsIDQzLCAyNywgMzksIDYsIDIxOCwgMTMzLCAxMywgNDMsIDI3LCAKKyAgICAzOSwgNiwgMjAwLCAxNjksIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjE1LCAyMDQsIAorICAgIDEzLCA0MywgMjcsIDM5LCA2LCAyMTMsIDkwLCAxMywgNDMsIDI3LCAzOSwgNiwgMjA2LCA4OSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCA2LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDYsIDIwNiwgMjIxLCAxMywgNDMsIDI3LCAzOSwgNiwgMjAzLCAKKyAgICAyMjAsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIDYsIDI0NiwgMjM2LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNiwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA2LCAyMTcsIDgzLCAxMywgNDMsIDI3LCAzOSwgMjIwLCAKKyAgICAxNTIsIDEzLCA0MywgMjcsIDM5LCA0LCAyNTEsIDExMiwgMTMsIDQzLCAyNywgMzksIDQsIDI0OCwgMjA4LCAxMywgNDMsIAorICAgIDI3LCAzOSwgNCwgMjM2LCA2MCwgMTMsIDQzLCAyNywgMzksIDQsIDI0MSwgMTM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCAKKyAgICAxMjQsIDEzLCA0MywgMjcsIDM5LCA0LCAxOTksIDgwLCAxMywgNDMsIDI3LCAzOSwgNCwgMjM4LCA3OSwgMTMsIDQzLCAyNywgCisgICAgMzksIDQsIDIwNiwgODgsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjgsIDQxLCAxMywgNDMsIDI3LCAzOSwgNCwgMjI3LCA1NCwgCisgICAgMTMsIDQzLCAyNywgMzksIDQsIDIyNSwgODcsIDEzLCA0MywgMjcsIDM5LCA0LCAyMjEsIDQxLCAxMywgNDMsIDI3LCAzOSwgCisgICAgNCwgMjE4LCAxMzMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDAsIDE2OSwgMTMsIDQzLCAyNywgMzksIDQsIDIxNywgODEsIDEzLCAKKyAgICA0MywgMjcsIDM5LCA0LCAyMTUsIDIwNCwgMTMsIDQzLCAyNywgMzksIDQsIDIxMywgOTAsIDEzLCA0MywgMjcsIDM5LCA0LCAKKyAgICA0NywgMjA5LCAxNjMsIDEzLCA0MywgMjcsIDM5LCA0LCAyMDksIDE2MywgMTMsIDQzLCAyNywgMzksIDQsIDIwNiwgMjIxLCAKKyAgICAxMywgNDMsIDI3LCAzOSwgNCwgMjAzLCAyMjAsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTUsIDIyOSwgMTMsIDQzLCAyNywgMzksIAorICAgIDQsIDI0NiwgMjM2LCAxMywgNDMsIDI3LCAzOSwgNCwgMjE0LCAyMzUsIDEzLCA0MywgMjcsIDM5LCA0LCAyMTcsIDgzLCAxMywgCisgICAgNDMsIDI3LCAzOSwgMjE2LCAxMDgsIDI0MSwgNDgsIDEzLCA0MywgMjcsIDM5LCAyMzgsIDEyNSwgOTksIDEzLCA0MywgMjcsIAorICAgIDM5LCAyMDYsIDg5LCA5OSwgMTMsIDQzLCAyNywgMzksIDIyNywgNTUsIDk5LCAxMywgNDMsIDI3LCAzOSwgMjE1LCAyMzAsIAorICAgIDk5LCAxMywgNDMsIDI3LCAzOSwgMjEzLCA5MSwgOTksIDEzLCA0MywgMjcsIDM5LCAyMTUsIDIwNSwgOTksIDEzLCAyNywgNiwgCisgICAgMjQxLCA0MiwgMTMsIDI3LCA0LCAyNDEsIDQyLCAxMywgMjcsIDE3LCAxOTksIDgxLCAxMywgMjcsIDE3LCAxMDIsIDEzLCAKKyAgICAyNywgMTcsIDEwNSwgMTMsIDI3LCAxNywgMTQ3LCAxMywgMjcsIDE3LCAxNDksIDEzLCAyNywgMTcsIDE2NCwgMTMsIDI3LCAKKyAgICAxNywgMTg3LCAxMywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDI3LCAxNywgMTkyLCAxMywgMjcsIDE3LCAyMTksIDExMywgMTMsIAorICAgIDE3NSwgMTcsIDE5OSwgODEsIDEzLCAxNzUsIDE3LCAxMDIsIDEzLCAxNzUsIDE3LCAxMDUsIDEzLCAxNzUsIDE3LCAxNDcsIAorICAgIDEzLCAxNzUsIDE3LCAxNDksIDEzLCAxNzUsIDE3LCAxNjQsIDEzLCAxNzUsIDE3LCAxODcsIDEzLCAxNzUsIDE3LCAyMTAsIAorICAgIDEzNSwgMTMsIDE3NSwgMTcsIDE5MiwgMTMsIDE3NSwgMTcsIDIxOSwgMTEzLCAxMywgNDMsIDE3LCAxOTksIDgxLCAxMywgCisgICAgNDMsIDE3LCAxMDIsIDEzLCA0MywgMTcsIDEwNSwgMTMsIDQzLCAxNywgMTQ3LCAxMywgNDMsIDE3LCAxNDksIDEzLCA0MywgCisgICAgMTcsIDE2NCwgMTMsIDQzLCAxNywgMTg3LCAxMywgNDMsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAxNywgMTkyLCAxMywgNDMsIAorICAgIDE3LCAyMTksIDExMywgMTMsIDQzLCAyNywgMTcsIDE5OSwgODEsIDEzLCA0MywgMjcsIDE3LCAxMDIsIDEzLCA0MywgMjcsIAorICAgIDE3LCAxMDUsIDEzLCA0MywgMjcsIDE3LCAxNDcsIDEzLCA0MywgMjcsIDE3LCAxNDksIDEzLCA0MywgMjcsIDE3LCAxNjQsIAorICAgIDEzLCA0MywgMjcsIDE3LCAxODcsIDEzLCA0MywgMjcsIDE3LCAyMTAsIDEzNSwgMTMsIDQzLCAyNywgMTcsIDE5MiwgMTMsIAorICAgIDQzLCAyNywgMTcsIDIxOSwgMTEzLCAxMywgMjIxLCA5MywgMTcsIDE5OSwgODEsIDEzLCAyMjEsIDkzLCAxNywgMTAyLCAxMywgCisgICAgMjIxLCA5MywgMTcsIDEwNSwgMTMsIDIyMSwgOTMsIDE3LCAxNDcsIDEzLCAyMjEsIDkzLCAxNywgMTQ5LCAxMywgMjIxLCAKKyAgICA5MywgMTcsIDE2NCwgMTMsIDIyMSwgOTMsIDE3LCAxODcsIDEzLCAyMjEsIDkzLCAxNywgMjEwLCAxMzUsIDEzLCAyMjEsIAorICAgIDkzLCAxNywgMTkyLCAxMywgMjIxLCA5MywgMTcsIDIxOSwgMTEzLCAyMywgMTMxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTkyLCAyMjgsIDEwMywgMjMsIDIzNCwgMTgxLCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAKKyAgICAyMjgsIDEwMywgMjMsIDIzNCwgMTk4LCAyMjgsIDEwMywgMjMsIDEzMSwgMTI0LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTk2LCAKKyAgICAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDIxMywgCisgICAgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAxMjQsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTAsIDIzLCAxMzEsIAorICAgIDEyNCwgMjM0LCA1MSwgMjI0LCA1OSwgMjMsIDIzNCwgMTk2LCAxMjQsIDIzNCwgNTIsIDIzLCAxMzEsIDEyNCwgMjIxLCAKKyAgICAyMDQsIDIzLCAyMzQsIDE5NiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0OCwgMjE5LCAyMywgMTMxLCAKKyAgICAxMjQsIDEwMSwgMjEzLCAyMjAsIDIyNiwgOTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIAorICAgIDExNSwgMTAxLCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDIzNCwgNTEsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyNDMsIDU3LCAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMTI0LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MywgNTgsIDEwMSwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyNDIsIDIwMCwgMjMsIAorICAgIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDIzNCwgNTAsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDIsIDIzMSwgMjMsIDIzNCwgCisgICAgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMjQ4LCAyMjAsIDExOSwgMjI4LCAxMDMsIDIzLCAxMzEsIAorICAgIDEyNCwgMjQ4LCAyMjAsIDExOSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMjM0LCAxOTYsIAorICAgIDEyNCwgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMjQsIDEwMSwgMjA4LCA2OCwgMTUzLCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTI0LCAxMDEsIDI0OCwgMjIwLCAxNTMsIDIwOCwgNjcsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0OCwgMjE5LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjM0LCA1MSwgMjA4LCAyMDIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIAorICAgIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTE1LCAxMDEsIDIzNCwgNTEsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAyMzQsIDUxLCAxMDEsIDExNSwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDExNSwgCisgICAgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEyNCwgMTAxLCAxNTMsIDI0MiwgMjAwLCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMTUzLCAyNDYsIDE1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjMzLCAxODUsIDIzLCAxMzEsIDEyNCwgMTAxLCAKKyAgICAxNTMsIDIzNCwgNTAsIDIzLCAxMzEsIDE1MywgMjQ4LCAyMDYsIDEyNCwgMTAxLCAyMDgsIDY3LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQzLCA1OCwgMTUzLCAyMDksIDE3NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDI0MywgNTgsIDE1MywgMjA5LCAxNzUsIAorICAgIDI0MywgNTcsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgCisgICAgMTAxLCAxNTMsIDIzMywgMTg2LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgMjMzLCAxODYsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAyMzQsIDUxLCAxNTMsIDIwOSwgMTc0LCAyMywgMTMxLCAxMjQsIAorICAgIDEwMSwgMjQyLCAyMzIsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgMTAxLCAyNDMsIDU4LCAxNTMsIDIzNiwgMjMzLCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMjQzLCA1OCwgMjQyLCAyMDEsIDE1MywgMjM2LCAyMzMsIDIzLCAxMzEsIDEwMSwgMTUzLCAKKyAgICAyNDIsIDIwMSwgMTI0LCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDI0MiwgMjAxLCAxMDEsIDIwMywgMjI4LCAyMywgCisgICAgMTMxLCAxMDEsIDE1MywgNDQsIDEyNCwgMjAzLCAyMjgsIDIzLCAxMzEsIDEwMSwgMTUzLCA0NCwgMTI0LCAyMzQsIDUwLCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEwMSwgMjAzLCAyMjgsIDIzLCAxMzEsIDEyNCwgMTUzLCAKKyAgICAyNTEsIDY5LCAyMjgsIDExOCwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTI0LCAxNTMsIDQ0LCAxMDEsIDIwMywgMjI4LCAKKyAgICAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNDMsIDU4LCAyMzQsIDUwLCAyMywgMTMxLCAxMjQsIDEwMSwgMTUzLCAyNTEsIAorICAgIDY5LCAyMTYsIDI1NCwgMjMsIDEzMSwgMTI0LCAxMDEsIDE1MywgMjUxLCA2OCwgMjMsIDEzMSwgMTAxLCAxNTMsIDI1MSwgCisgICAgNjksIDIxNiwgMjU1LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMDEsIDE1MywgMjUxLCA2OSwgMjE2LCAyNTUsIDEyNCwgCisgICAgMjQyLCAyMzEsIDIzLCAxMzEsIDEwMSwgMTUzLCAyNTEsIDY5LCAxMjQsIDIwMywgMjI4LCAyMywgMTMxLCAxMjQsIDE1MywgCisgICAgMjMzLCAxODYsIDEwMSwgMjM0LCA1MCwgMjMsIDIzNCwgMTg3LCAyMzYsIDIyOSwgMjM3LCA4MSwgMjMsIDIzNCwgMTg3LCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDIzNCwgNTAsIAorICAgIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgODIsIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM2LCAyMjksIDIzNywgCisgICAgODIsIDI0MywgNTgsIDIwOCwgMjA5LCAyMywgMjM0LCAxOTQsIDIzNiwgMjI5LCAyMzcsIDgyLCAyNDMsIDU3LCAyMywgMTMxLCAKKyAgICAyMzYsIDIyOSwgMjM3LCA4MiwgMjQzLCA1OCwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NSwgMjM2LCAyMjksIDIzNywgODIsIAorICAgIDI0MywgNTcsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM0LCAKKyAgICAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgMjAxLCAyMywgMjM0LCAxODcsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM0LCAxMTgsIDIzNywgNjEsIDIzNywgODIsIDIwOCwgCisgICAgMjAyLCAyMzYsIDIyOSwgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDI0OCwgCisgICAgMjE5LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAyMzcsIDYxLCAyMzcsIDgyLCAyMDgsIDIwMiwgMjQ4LCAyMTksIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMjM3LCAKKyAgICA2MSwgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE5MiwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIAorICAgIDIzLCAyMzQsIDE4NSwgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIxNywgNTMsIDIzLCAyMzQsIDE4MSwgMjM3LCA2MSwgCisgICAgMjM3LCA4MiwgMjA4LCAyMDEsIDIzLCAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTAsIDIzLCAKKyAgICAyMzQsIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIAorICAgIDE4NywgMjM3LCA2MSwgMjM3LCA4MiwgMjA4LCAyMDIsIDIzNCwgNTEsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAKKyAgICAxODYsIDIzLCAyMzQsIDE4NywgMjQ4LCAyMDYsIDIxNiwgMTc3LCAyMzcsIDE4MSwgMjMsIDIzNCwgMTg3LCAyMzQsIDExNywgCisgICAgMjMsIDIzNCwgMTg3LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIzNCwgMTE4LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODcsIDE1MywgMjQ4LCAyMTksIDIzLCAyMzQsIDE4NywgMTUzLCAyMzYsIDIzMywgMjMsIDIzNCwgMTg3LCAyMDgsIAorICAgIDIxMCwgMTI0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU1LCAyMywgMjM0LCAxODcsIAorICAgIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxODcsIDIwOCwgMjEwLCAyNDcsIDU2LCAxNTMsIAorICAgIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDIzNCwgMTg3LCAyMDgsIDIxMCwgMjI0LCAxNDcsIDIzLCAyMzQsIDE5MywgMjMsIAorICAgIDIzNCwgMTk0LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTQsIDIxOCwgMjQyLCAyMDYsIDM0LCAyMywgMjM0LCAxOTQsIAorICAgIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE4MywgMjQyLCAxOTcsIDIzLCAyMzQsIDE4MiwgMjMsIDIzNCwgMTkyLCAyMTcsIAorICAgIDUzLCAyMywgMjM0LCAxOTEsIDIzLCAyMzQsIDE5MiwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgMjM0LCAxOTIsIDE1MywgCisgICAgMjA5LCAxNzQsIDIzLCAyMzQsIDE5MiwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAyMTgsIDI0MiwgCisgICAgMjA2LCAzNCwgMjMsIDIzNCwgMTkyLCAxNzYsIDE1MywgMjM2LCAyMzMsIDIzLCAyMzQsIDE5MiwgMTUzLCAyMzYsIDIzMywgCisgICAgMjMsIDIzNCwgMTkwLCAyMTcsIDUzLCAyMywgMjM0LCAxODksIDIzLCAyMzQsIDE5NSwgMjMsIDIzNCwgMTgwLCAyMywgMjM0LCAKKyAgICAxODEsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MSwgMjE4LCAyNDIsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MSwgMTUzLCAKKyAgICAyMzYsIDIzMywgMjMsIDIzNCwgMTg1LCAyMTcsIDUzLCAyMywgMjM0LCAxODUsIDE3NiwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDIzNCwgMTg0LCAyMywgMjM0LCAxODUsIDIwOSwgNTMsIDIzLCAyMzQsIDE4NSwgMTc2LCAxNTMsIDIwOSwgMTc0LCAyMywgCisgICAgMjM0LCAxODUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4NSwgMTc2LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgCisgICAgMTg1LCAyMTgsIDI0MiwgMjA2LCAzNCwgMjMsIDIzNCwgMTg1LCAxNTMsIDIwOSwgMTc1LCAyMDUsIDE0MCwgMjI4LCAxMDMsIAorICAgIDIzLCAyMzQsIDE4NSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTcsIDIzLCAxMzEsIDEyNCwgCisgICAgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxOTYsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAKKyAgICAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMTMsIDI2LCAyMywgMjM0LCAxODUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAxMjQsIDEwMSwgMjEzLCAyNywgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAKKyAgICAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMTMsIDI3LCAyNDMsIDU3LCAyMywgMTMxLCAyMjQsIDE0OCwgMjM5LCAxNjcsIAorICAgIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgMjIsIDIwOCwgNjcsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjcsIDIxMywgCisgICAgMjIsIDI0MiwgMTg3LCAyMywgMTMxLCAyMjQsIDE0OCwgMTI3LCAyMTcsIDcsIDI0NiwgMTU0LCAyMywgMTMxLCAyMjQsIAorICAgIDE0OCwgMjAzLCAyMjgsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIyNCwgMTQ4LCAyMDMsIDIyOCwgMjMsIDIzNCwgMTk2LCAKKyAgICAyMjQsIDE0OCwgMjAzLCAyMjgsIDIzLCAyMzQsIDE4MSwgMjI0LCAxNDgsIDIwMywgMjI4LCAyMywgMjM0LCAxOTgsIDIyNCwgCisgICAgMTQ4LCAyMDMsIDIyOCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMjQsIDE0OCwgCisgICAgMjQ4LCAyMTksIDIzLCAxMzEsIDIyNCwgMTQ4LCAyMDUsIDE0MSwgMjA2LCAzNCwgMjMsIDEzMSwgMjI0LCAxNDgsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE4NSwgMjI0LCAxNDgsIDIwNiwgMzQsIDIzLCAxMzEsIDIyNCwgMTQ4LCAxMjQsIDIwNiwgMzQsIDIzLCAKKyAgICAyMzQsIDE4NSwgMjI0LCAxNDgsIDEyNCwgMjA2LCAzNCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgCisgICAgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAyMjQsIDE0OCwgMTI0LCAxNTMsIDEyNCwgMjA2LCAzNCwgMjMsIDEzMSwgCisgICAgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMjM0LCAxOTYsIDIyNCwgMTQ4LCAyMjgsIDEwMywgMjMsIDIzNCwgMTg1LCAyMjQsIAorICAgIDE0OCwgMjI4LCAxMDMsIDIzLCAyMzQsIDE5OCwgMjI0LCAxNDgsIDIyOCwgMTAzLCAyMywgMTMxLCAxMjQsIDEwMSwgMjI0LCAKKyAgICAxNDcsIDIzLCAyMzQsIDE5NiwgMTI0LCAxMDEsIDIyNCwgMTQ3LCAyMywgMjM0LCAxODUsIDEyNCwgMTAxLCAyMjQsIDE0NywgCisgICAgMjMsIDIzNCwgMTg1LCAyMTMsIDI2LCAyMywgMjM0LCAxOTgsIDEyNCwgMTAxLCAyMjQsIDE0NywgMjMsIDEzMSwgMTI0LCAKKyAgICAxMDEsIDI0MiwgMjM1LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDEwMSwgMjQyLCAyMzUsIDIyNCwgMTQ3LCAyMywgCisgICAgMTMxLCAyMTMsIDI3LCAyMzksIDE2NywgMjMsIDIzNCwgMTg1LCAyMTMsIDI3LCAxMjcsIDEyNCwgMTUzLCAyMzMsIDE4NywgCisgICAgMjIxLCAyMDQsIDIzLCAyMzQsIDE5OCwgMjEzLCAyNywgMTI3LCAxMDEsIDE1MywgMTI0LCAyNDIsIDIzNCwgMjMsIDEzMSwgCisgICAgMjEzLCAyNywgMjAzLCAyMjgsIDIzLCAxMzEsIDIxMywgMjcsIDIxMywgMjIwLCAyMjYsIDkxLCAyMywgMTMxLCAyMTMsIDI3LCAKKyAgICAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTgxLCAyMTMsIDI3LCAyMjQsIAorICAgIDE0NywgMjMsIDIzNCwgMTk4LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMjEzLCAyNywgMjIxLCAyMDQsIDIzLCAKKyAgICAxMzEsIDIxMywgMjcsIDEwMSwgMjQzLCA1NywgMjMsIDEzMSwgMjEzLCAyNywgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MCwgMjMsIAorICAgIDEzMSwgMjEzLCAyNywgMjI4LCAxMDMsIDIzLCAxMzEsIDIxMywgMjcsIDIwNiwgMzQsIDIzLCAyMzQsIDE4MywgMjEzLCAyNywgCisgICAgMjA2LCAzNCwgMjMsIDEzMSwgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk2LCAxMjQsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTAsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNywgNzgsIDIzLCAyMzQsIDE4MywgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjE2LCAyNTQsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjI4LCAxMTcsIDIzLCAyMzQsIDE4MywgMTI0LCAyMTMsIDI3LCAyMjQsIDE0OCwgMjAzLCAyNTIsIDIzLCAyMzQsIDE5MiwgCisgICAgMTI0LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIxMywgMjcsIDIyNCwgMTQ3LCAyMywgMjM0LCAKKyAgICAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAxNDgsIDIxNiwgMjU0LCAyMywgMjM0LCAxOTgsIDEyNCwgMjEzLCAyNywgMjI0LCAKKyAgICAxNDcsIDIzLCAxMzEsIDEwMSwgMjM5LCAxNjcsIDIzLCAyMzQsIDE4NSwgMjIxLCAyMDQsIDIzLCAxMzEsIDEwMSwgMjAzLCAKKyAgICAyMjgsIDIzLCAyMzQsIDE5NiwgMTAxLCAyMDMsIDIyOCwgMjMsIDEzMSwgMTAxLCAyMTMsIDIyMCwgMjI2LCA5MSwgMjMsIAorICAgIDEzMSwgMTAxLCAxMTUsIDE1MywgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMDYsIDM0LCAyMywgMTMxLCAxMDEsIAorICAgIDE1MywgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjI0LCAxNDcsIDIzLCAxMzEsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIAorICAgIDIzLCAyMzQsIDE5NiwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTkwLCAxMDEsIDIxMywgMjcsIDIyNCwgCisgICAgMTQ4LCAyMTcsIDc4LCAyMywgMjM0LCAxOTIsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDcsIDIzLCAyMzQsIDE4NSwgMTAxLCAKKyAgICAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMTYsIDI1NCwgMjMsIAorICAgIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIDIyNCwgMTQ4LCAyMjgsIDExNywgMjMsIDIzNCwgMTk4LCAxMDEsIDIxMywgMjcsIAorICAgIDIyNCwgMTQ3LCAyMywgMjM0LCAxOTYsIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0OCwgMjE5LCAyMywgMjM0LCAxOTQsIAorICAgIDEwMSwgMjEzLCAyNywgMjI0LCAxNDgsIDI0MywgNTcsIDIzLCAyMzQsIDE5NCwgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgCisgICAgMjQzLCA1OCwgMjA5LCAxNzQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjE2LCAKKyAgICAyNTQsIDIzLCAyMzQsIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1OCwgMjI4LCAxMTcsIDIzLCAyMzQsIAorICAgIDE4MywgMTAxLCAyMTMsIDI3LCAyMjQsIDE0OCwgMjQzLCA1NywgMjMsIDIzNCwgMTg1LCAxMjQsIDIzNCwgNTAsIDIzLCAKKyAgICAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NCwgMjMsIDIzNCwgMTg1LCAxMjQsIDE1MywgMjA5LCAxNzQsIDIzLCAxMzEsIDEyNCwgCisgICAgMTUzLCAyMDksIDE3NSwgMTUzLCAyNDEsIDcwLCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIDE1MywgMjQzLCA1NywgCisgICAgMjMsIDEzMSwgMTI0LCAxNTMsIDIwOSwgMTc1LCAxNTMsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMjA5LCAxNzUsIAorICAgIDEyNCwgMjQ4LCAyMTksIDIzLCAxMzEsIDEyNCwgMTUzLCAyMDksIDE3NSwgMjQ4LCA5NiwgMjQ4LCAyMTksIDIzLCAxMzEsIAorICAgIDEyNCwgMTUzLCAyMDksIDE3NSwgMTI0LCAyMzQsIDUyLCAyMywgMTMxLCAxMjQsIDE1MywgMjM2LCAyMzQsIDEyNCwgMjA4LCAKKyAgICA2NywgMjMsIDEzMSwgMTI0LCAxNTMsIDIzNiwgMjM0LCAxMjQsIDI0OCwgMjE5LCAyMywgMTMxLCAxMjQsIDE1MywgMTE3LCAKKyAgICAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAxOTcsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAKKyAgICAyMywgMjM0LCAxOTQsIDEyNCwgMTUzLCAyNDIsIDE5MCwgMTUzLCAyMjgsIDczLCAyMywgMTMxLCAxMjQsIDE1MywgMjQyLCAKKyAgICAxOTAsIDE1MywgMjAzLCAyNTIsIDIzLCAxMzEsIDEyNCwgMTUzLCAyNDYsIDE1NSwgMjMsIDIzNCwgMTkyLCAxMjQsIDIwNiwgCisgICAgMzQsIDIzLCAyMzQsIDE5MiwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAyMzQsIDE4NSwgMTI0LCAxNTMsIDIxNywgNTMsIDIzLCAKKyAgICAyMzQsIDE4NSwgMTI0LCAxNTMsIDIyNSwgNzAsIDIzLCAyMzQsIDE4NSwgMTI0LCAyMDYsIDM0LCAyMywgMjM0LCAxODUsIAorICAgIDEyNCwgMTUzLCAyMDksIDUzLCAyMywgMjM0LCAxOTgsIDEyNCwgMTUzLCAyMTYsIDI1NCwgMjMsIDIzNCwgMTk4LCAxMjQsIAorICAgIDE1MywgMjI4LCAxMTcsIDIzLCAyMzQsIDE5OCwgMTI0LCAyMDYsIDM0LCAyMywgMTMxLCAyMDYsIDM0LCAyMywgMTMxLCAKKyAgICAxNTMsIDIzNCwgMTE3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDEsIDcwLCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAKKyAgICAyNDMsIDU3LCAyMywgMTMxLCAxNTMsIDIwOSwgMTc1LCAyNDgsIDIxOSwgMjMsIDEzMSwgMTUzLCAyMzYsIDIzMywgMjMsIAorICAgIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTI0LCAyMjEsIDIwNCwgMjMsIDEzMSwgMTUzLCAyNDgsIDIwNiwgMTAxLCAyMTMsIDI2LCAKKyAgICAyMywgMTMxLCAxNTMsIDI0OCwgMjA2LCAyMTMsIDI3LCAyMjQsIDE0NywgMjMsIDEzMSwgMTUzLCAyMDMsIDI1MywgMTIwLCAKKyAgICAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgMTIwLCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDIwMywgMjUzLCAxMjYsIAorICAgIDIzNywgODEsIDIzLCAxMzEsIDE1MywgMjAzLCAyNTMsIDIzNiwgMjI5LCAyMzcsIDgxLCAyMywgMTMxLCAxNTMsIDExOSwgCisgICAgMjM2LCAyMjksIDIxMywgMjIwLCAyMjYsIDkwLCAyMywgMjM0LCAxODgsIDIzLCAxMzEsIDIzNCwgMTE3LCAyMywgMjA1LCAKKyAgICAxNDIsIDIwOSwgMTM4LCAyMywgMjA1LCAxNDIsIDIyMSwgMjAsIDIzLCAyMDUsIDE0MiwgMjQ4LCAyMDUsIDIzLCAyMzUsIAorICAgIDc4LCAyMDksIDEzOCwgMjMsIDIzNSwgNzgsIDIyMSwgMjAsIDIzLCAyMzUsIDc4LCAyNDgsIDIwNSwgMjMsIDIwOCwgNTIsIAorICAgIDIwOSwgMTM4LCAyMywgMjA4LCA1MiwgMjIxLCAyMCwgMjMsIDIwOCwgNTIsIDI0OCwgMjA1LCAyMywgMjQ4LCA0NCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyNDgsIDQ0LCAyMjEsIDIwLCAyMywgMjQ4LCA0NCwgMjQ4LCAyMDUsIDIzLCAyMTIsIDE3MywgMjA5LCAxMzgsIAorICAgIDIzLCAyMTIsIDE3MywgMjIxLCAyMCwgMjMsIDIxMiwgMTczLCAyNDgsIDIwNSwgMjMsIDIwNywgMjAzLCAyMDcsIDExNiwgCisgICAgMjMsIDIwNywgMjAzLCAyNDgsIDIwNSwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCA0LCAKKyAgICAyMDksIDEzOCwgMjMsIDIwOCwgMTg5LCAyMjUsIDcxLCAyMjEsIDIwLCAyMywgMjA4LCAxODksIDQsIDIyMSwgMjAsIDIzLCAKKyAgICAyMDgsIDE4OSwgMjEwLCAxNTAsIDIzLCAyMzcsIDM1LCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIzNywgMzUsIDQsIDIwOSwgCisgICAgMTM4LCAyMywgMjM3LCAzNSwgMjI1LCA3MSwgMjIxLCAyMCwgMjMsIDIzNywgMzUsIDQsIDIyMSwgMjAsIDIzLCAyMzcsIDM1LCAKKyAgICAyMTAsIDE1MCwgMjMsIDIwOCwgMTg5LCAyMzcsIDM1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MSwgMTE1LCAxMjcsIDIwOSwgNTMsIDIzLCAyMjEsIDUxLCAxMTUsIDIxMCwgMTUwLCAyMywgMjIxLCAKKyAgICA1MSwgMTI3LCAyMTAsIDE1MCwgMjMsIDIyMSwgNTEsIDExNSwgMTI3LCAyNTEsIDEwNywgMjI1LCA3MCwgMjMsIDIyMSwgNTEsIAorICAgIDExNSwgMTI3LCAyNTEsIDEwNywgMjA5LCA1MywgMjMsIDIyMSwgNTEsIDIwOSwgMTc1LCAyMDUsIDE4NiwgMjA5LCAxNzUsIAorICAgIDIxMSwgMjE2LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQzLCA0NywgMjMsIDIyMSwgNTIsIDIzNywgODcsIDI0MywgNDcsIAorICAgIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgMjA4LCA2OCwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDgsIDY4LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDksIDEzOSwgCisgICAgMjA4LCA2OCwgMjI1LCA2OCwgMjMsIDIyMSwgNTAsIDIwOSwgMTM5LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIAorICAgIDUzLCAyMDgsIDY3LCAyMywgMjIxLCA1MCwgNTMsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgCisgICAgMTA2LCAyMywgMjIxLCA1MCwgNTMsIDI1MSwgMTA3LCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTAsIDI0MiwgMjM0LCAKKyAgICAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjA4LCA2OCwgMjIxLCA1NCwgMjMsIDIyMSwgNTAsIDIwNSwgODMsIDIwMCwgMjIwLCAKKyAgICAyMzcsIDM4LCAyMywgMjIxLCA1MCwgMjA1LCA4MywgMjUxLCAxMDYsIDIzLCAyMjEsIDUwLCAyMDUsIDgzLCAyNTEsIDEwNywgCisgICAgMjAwLCAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUwLCAyNDgsIDIyMywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0OCwgMjIzLCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjQ4LCAyMjMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDMsIDE2LCAyMDksIDUzLCAKKyAgICAyMywgMjIxLCA1MCwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIAorICAgIDUwLCAyNDMsIDE2LCAyMTIsIDIyNiwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0NywgNywgCisgICAgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDI0NywgNywgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDEwMCwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTAsIDEwMCwgMjIyLCA2NSwgMjMsIDIyMSwgNTAsIDEwMCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDE5OSwgMjcsIAorICAgIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAxOTksIDI3LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMTk5LCAyNywgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTAsIDIxNiwgNjksIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMTYsIDY5LCAyMjIsIDY1LCAyMywgMjIxLCAKKyAgICA1MCwgMjE2LCA2OSwgMjI1LCA3MCwgMjMsIDIwNSwgMTEyLCAyMTIsIDIyNCwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgCisgICAgMjEyLCAyMjQsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI0LCAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTIsIAorICAgIDIyNSwgMjA5LCAxMzgsIDIzLCAyMDUsIDExMiwgMjEyLCAyMjUsIDIzOSwgMTc1LCAyMywgMjA1LCAxMTIsIDIxMiwgMjI1LCAKKyAgICAyNTEsIDEwNiwgMjMsIDIwNSwgMTEyLCAyMTAsIDk1LCAyMywgMjA1LCAxMTIsIDI1MCwgMjE1LCAyMDgsIDIxOCwgMjA5LCAKKyAgICAxMzgsIDIzLCAyMDUsIDExMiwgMjUwLCAyMTUsIDIwOCwgMjE4LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEyLCAyNTAsIDIxNSwgCisgICAgMjA4LCAyMTgsIDIwNSwgODIsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjA5LCA1MywgMjMsIDIyMSwgNTMsIDI1MCwgMTE2LCAKKyAgICAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjUwLCAxMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUzLCAyNTAsIDExNiwgMjI1LCA2OCwgCisgICAgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjA1LCAxMzYsIDIyMiwgNjUsIDIzLCAyMjEsIAorICAgIDUzLCAyMDUsIDEzNiwgMjI1LCA3MCwgMjMsIDIyMSwgNTMsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAKKyAgICAyMDYsIDI1MCwgMTE2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDI1MCwgMTE2LCAKKyAgICAyMjUsIDY4LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMDksIDUzLCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIAorICAgIDIwNSwgMTM2LCAyMjIsIDY1LCAyMywgMjIxLCA1MywgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDcwLCAyMywgMjIxLCA1MywgCisgICAgMjQ4LCAyMDYsIDIwNSwgMTM2LCAyMjUsIDY4LCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIwOSwgNTMsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDksIDEzOSwgMjA4LCA2OCwgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDIwOSwgMTM5LCAyMDgsIDY4LCAyMjUsIAorICAgIDcwLCAyMywgMjIxLCA1MiwgMjA5LCAxMzksIDIwOCwgNjgsIDIyNSwgNjgsIDIzLCAyMjEsIDUyLCAyMDksIDEzOSwgMjAwLCAKKyAgICAyMjAsIDIzNywgMzgsIDIzLCAyMjEsIDUyLCA1MywgMjA4LCA2NywgMjMsIDIyMSwgNTIsIDUzLCAyMDAsIDIyMCwgMjM3LCAKKyAgICAzOCwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDUzLCAyNTEsIDEwNywgMjAwLCAyMjAsIDIzNywgCisgICAgMzgsIDIzLCAyMjEsIDUyLCAyNDIsIDIzNCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDIwOCwgNjgsIDIyMSwgNTQsIDIzLCAKKyAgICAyMjEsIDUyLCAyMDUsIDgzLCAyMDAsIDIyMCwgMjM3LCAzOCwgMjMsIDIyMSwgNTIsIDIwNSwgODMsIDI1MSwgMTA3LCAyMjEsIAorICAgIDU0LCAyMywgMjIxLCA1MiwgMjA1LCA4MywgMjUxLCAxMDcsIDIwMCwgMjIwLCAyMzcsIDM4LCAyMywgMjIxLCA1MiwgMjQ4LCAKKyAgICAyMjIsIDIzLCAyMjEsIDUyLCAyNDMsIDE2LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQzLCAxNiwgMjIyLCA2NSwgMjMsIAorICAgIDIyMSwgNTIsIDI0MywgMTYsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyNDcsIDYsIDIzLCAyMjEsIDUyLCAxMDAsIDIwOSwgCisgICAgNTMsIDIzLCAyMjEsIDUyLCAxMDAsIDIyMiwgNjUsIDIzLCAyMjEsIDUyLCAxMDAsIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAKKyAgICAxOTksIDI3LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMTk5LCAyNywgMjIyLCA2NSwgMjMsIDIyMSwgNTIsIDE5OSwgMjcsIAorICAgIDIyNSwgNzAsIDIzLCAyMjEsIDUyLCAyMTYsIDY5LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjE2LCA2OSwgMjIyLCA2NSwgCisgICAgMjMsIDIyMSwgNTIsIDIxNiwgNjksIDIyNSwgNzAsIDIzLCAyMDUsIDExMywgMjEyLCAyMjUsIDIwOSwgMTM4LCAyMywgMjA1LCAKKyAgICAxMTMsIDIxMiwgMjI1LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIDIyNSwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgCisgICAgMjEyLCAyMjQsIDIwOSwgMTM4LCAyMywgMjA1LCAxMTMsIDIxMiwgMjI0LCAyMzksIDE3NSwgMjMsIDIwNSwgMTEzLCAyMTIsIAorICAgIDIyNCwgMjUxLCAxMDYsIDIzLCAyMDUsIDExMywgMjEwLCA5NSwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAKKyAgICAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIxNCwgODgsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgCisgICAgMjE0LCA4OCwgMjI1LCA3MCwgMjMsIDIyMSwgNTAsIDI0MiwgMTkwLCAyMTQsIDg4LCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgCisgICAgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMDksIDUzLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjIsIDY1LCAKKyAgICAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgMjEyLCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgMjEyLCAyMjUsIDY4LCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMDksIDUzLCAyMywgMjIxLCAKKyAgICA1MCwgMjQyLCAxOTAsIDIwNiwgNDAsIDI0NiwgMTU2LCAyMjIsIDY1LCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjA5LCA1MywgCisgICAgMjMsIDIyMSwgNTAsIDIzMywgODUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMzMsIDg1LCAyMjUsIDcwLCAyMywgMjIxLCAKKyAgICA1MCwgMjI0LCA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIyNCwgNzUsIDIyMiwgNjUsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMjUsIDcwLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAKKyAgICAyNDIsIDE5MCwgNTMsIDIwOSwgNTMsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgNTMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyMDEsIDc4LCAyNDIsIDE5MCwgCisgICAgMjA1LCA4MywgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MiwgMTkwLCAyMDUsIDgzLCAyMjIsIDY1LCAyMywgCisgICAgMjIxLCA1MCwgMjAxLCA3OCwgMjQyLCAxOTAsIDIwNSwgODMsIDIyNSwgNzAsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjA2LCAKKyAgICA5OCwgMjA4LCA2NywgMjMsIDIyMSwgNTAsIDI0MiwgMTg4LCAyNDIsIDIzNSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDI0MiwgCisgICAgMTg4LCAyNDIsIDIzNSwgMjIyLCA2NSwgMjMsIDIxMiwgMjI0LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI0LCAyMzksIDE3NSwgCisgICAgMjMsIDIxMiwgMjI0LCAyNTEsIDEwOCwgMjMsIDIyMSwgNTAsIDIxMCwgOTUsIDIzLCAyMjEsIDUwLCAyNDIsIDE5MCwgMjM0LCAKKyAgICA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgCisgICAgMTAyLCAyMywgMjIxLCA1MCwgMjI0LCA3NSwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjAxLCAKKyAgICA3OCwgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjEyLCAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyMzYsIAorICAgIDIwMCwgMjAxLCAxMDIsIDIzLCAyMTIsIDIyNCwgNTMsIDIzNCwgNDQsIDIzNiwgMjAwLCAyMDEsIDEwMiwgMjMsIDIxMiwgCisgICAgMjI0LCAyNTEsIDEwNywgMjM0LCA0NCwgMjM2LCAyMDAsIDIwMSwgMTAyLCAyMywgMjIxLCA1MCwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ2LCAyNDMsIDIzLCAyMjEsIDUwLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjEyLCAKKyAgICAyMjQsIDIwOSwgMTM5LCAyMzQsIDQ0LCAyNDYsIDI0MywgMjMsIDIxMiwgMjI0LCA1MywgMjM0LCA0NCwgMjQ2LCAyNDMsIAorICAgIDIzLCAyMTIsIDIyNCwgMjUxLCAxMDcsIDIzNCwgNDQsIDI0NiwgMjQzLCAyMywgMjIxLCA1MCwgMjAxLCA3OCwgMjQxLCA3MSwgCisgICAgMjE2LCA5MSwgMjA5LCA1MywgMjMsIDIyMSwgNTAsIDIwMSwgNzgsIDI0MSwgNzEsIDIxNiwgOTEsIDIyMiwgNjUsIDIzLCAKKyAgICAyMjEsIDUwLCAyMDEsIDc4LCAyNDEsIDcxLCAyMTYsIDkxLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIzNCwgCisgICAgNDQsIDI0NywgNjUsIDIwOSwgNTMsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MCwgCisgICAgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjMzLCAKKyAgICA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAKKyAgICAyNDcsIDY1LCA0LCAyMDUsIDgyLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgCisgICAgMjA1LCA4MiwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCAKKyAgICA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjQ3LCA2NSwgMjI1LCA3MSwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIDc1LCAKKyAgICAyMzQsIDQ0LCAyNDcsIDY1LCA0LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIDI0NywgNjUsIAorICAgIDIyNSwgNzEsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjM0LCA0NCwgMjQ3LCA2NSwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDIwMSwgNzgsIDIzNCwgNDQsIDI0NywgNjUsIDIyNSwgNzAsIDIzLCAyMTIsIDIyNSwgMjA5LCAxMzksIDIzNCwgCisgICAgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgNTMsIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMTIsIDIyNSwgMjUxLCAxMDcsIAorICAgIDIzNCwgNDQsIDI0NywgNjQsIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjM0LCA0NCwgMjM3LCAzMiwgMjA5LCA1MywgMjMsIAorICAgIDIyMSwgNTIsIDI0MiwgMTkwLCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcwLCAyMywgMjIxLCA1MiwgMjMzLCA4NSwgMjM0LCAKKyAgICA0NCwgMjM3LCAzMiwgNCwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIAorICAgIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDIzMywgODUsIDIzNCwgNDQsIDIzNywgMzIsIDIwNSwgODMsIDQsIDIwNSwgCisgICAgODIsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDUsIDgzLCAyMjUsIDcxLCAyMDUsIDgyLCAKKyAgICAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgNCwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyMjQsIAorICAgIDc1LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDIyNCwgNzUsIDIzNCwgNDQsIAorICAgIDIzNywgMzIsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjI0LCA3NSwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MSwgCisgICAgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMzQsIDQ0LCAyMzcsIDMyLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgCisgICAgMjAxLCA3OCwgMjM0LCA0NCwgMjM3LCAzMiwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOSwgMjM0LCA0NCwgMjM3LCAKKyAgICAzMSwgMjMsIDIxMiwgMjI1LCA1MywgMjM0LCA0NCwgMjM3LCAzMSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNywgMjM0LCA0NCwgCisgICAgMjM3LCAzMSwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjQyLCAxOTAsIDIyMiwgNjUsIAorICAgIDIzLCAyMjEsIDUyLCAyNDIsIDE5MCwgMjI1LCA3MCwgMjMsIDIyMSwgNTIsIDI0MiwgMTkwLCAyMjUsIDY4LCAyMywgMjIxLCAKKyAgICA1MiwgMjQyLCAxOTAsIDI0NiwgNzQsIDIzLCAyMjEsIDUyLCAyMzMsIDg1LCAyMDksIDUzLCAyMywgMjIxLCA1MiwgMjI0LCAKKyAgICA3NSwgMjA5LCA1MywgMjMsIDIyMSwgNTIsIDIwMSwgNzgsIDIwOSwgNDEsIDIzLCAyMjEsIDUyLCAyMDEsIDc4LCAyMDksIAorICAgIDUzLCAyMywgMjIxLCA1MiwgMjAxLCA3OCwgMjI1LCA3MCwgMjMsIDIxMiwgMjI1LCAyMDksIDEzOCwgMjMsIDIxMiwgMjI1LCAKKyAgICAyMzksIDE3NSwgMjMsIDIxMiwgMjI1LCAyNTEsIDEwNiwgMjMsIDIyMSwgNTIsIDIxMCwgOTYsIDIxNiwgMTIwLCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCA0LCAyMDksIDEzOCwgMjMsIDIyMSwgNTAsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUwLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIDQsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MCwgMjUwLCAyMTUsIDI0NiwgMTU2LCAyMjIsIDY2LCAyMzksIDE3NSwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAKKyAgICAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIwOSwgMTM4LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgCisgICAgMTU2LCAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjA5LCAxMzgsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAKKyAgICAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIDI1MCwgMjE1LCAyNDYsIAorICAgIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDQsIDIzOSwgMTc1LCAyMywgMjIxLCA1MiwgMjUwLCAyMTUsIDI0NiwgMTU2LCAKKyAgICAyMzQsIDQ0LCAyMDEsIDEwMywgMjIyLCA2NiwgMjM5LCAxNzUsIDIzLCAyMjEsIDUyLCAyNTAsIDIxNSwgMjQ2LCAxNTYsIAorICAgIDIzNCwgNDQsIDIwMSwgMTAzLCAyMjUsIDcxLCAyMzksIDE3NSwgMjMsIDIyMSwgNTAsIDIwMCwgMjIwLCAyNDYsIDE1NiwgCisgICAgMjM2LCAyMDAsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjAwLCAyMjAsIDI0NiwgMTU2LCAyMzYsIDIwMCwgMjM5LCAxNzUsIAorICAgIDIzLCAyMjEsIDUyLCAyMDAsIDIyMCwgMjQ2LCAxNTYsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgCisgICAgNTIsIDIwMCwgMjIwLCAyNDYsIDE1NiwgMjM0LCA0NCwgMjAxLCAxMDMsIDIzOSwgMTc1LCAyMywgMjIxLCA1MCwgMjM3LCAKKyAgICA4NywgMjQ2LCAxNTMsIDIwOSwgMTM4LCAyMywgMjIxLCA1MCwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzOSwgMTc1LCAyMywgCisgICAgMjIxLCA1MiwgMjM3LCA4NywgMjQ2LCAxNTMsIDIzNCwgNDQsIDIwMSwgMTAzLCAyMDksIDEzOCwgMjMsIDIyMSwgNTIsIAorICAgIDIzNywgODcsIDI0NiwgMTUzLCAyMzQsIDQ0LCAyMDEsIDEwMywgMjM5LCAxNzUsIDIzLCAyMzksIDk4LCAyNTAsIDIwMywgCisgICAgMjA5LCA1MywgMjMsIDIzOSwgOTgsIDI1MCwgMjAzLCAyMjUsIDcwLCAyMywgMjM5LCA5OCwgMjM3LCAxNjEsIDIzLCAyMzksIAorICAgIDk4LCAyMDksIDU2LCAyMywgMjM5LCA5OCwgMjA2LCAxNTksIDIzLCAyMzksIDk4LCAyMTMsIDE0NywgMjMsIDIzOSwgOTgsIAorICAgIDIwOSwgMTQ0LCAyMywgMjM5LCA5OCwgMjA5LCAxNDUsIDI1MSwgMTA2LCAyMywgMjM5LCA5OCwgMjM4LCA1MiwgMjE3LCA4LCAKKyAgICAyMDUsIDIzNCwgMjMsIDIzOSwgOTgsIDIzNSwgODgsIDIzLCAyMzQsIDEzNiwgMjMsIDIzNCwgMTM3LCAyMTMsIDMxLCAyMywgCisgICAgMjM0LCAxMzcsIDIyMSwgNTAsIDIwOCwgNjcsIDIzLCAyMzQsIDEzNywgMjIxLCA1MCwgMjA1LCAyMzcsIDIzLCAyMzQsIAorICAgIDEzNywgMjIxLCA1MiwgMjA4LCA2NywgMjMsIDIzNCwgMTM3LCAyMjEsIDUwLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAKKyAgICAyMjEsIDUyLCAyNDIsIDE4OSwgMjMsIDIzNCwgMTM3LCAyMjEsIDU1LCAyNDYsIDE1NSwgMjMsIDIzNywgMTkwLCAyNDEsIDksIAorICAgIDIxNSwgNzAsIDIxOCwgMjE3LCAyMzYsIDIzNCwgMjA1LCAyMzUsIDIzLCAyMzcsIDE5MCwgMjQxLCA5LCAyMTUsIDcwLCAKKyAgICAyMTgsIDIxNywgMTE1LCAyMTcsIDM0LCAyMzksIDE2NywgMjMsIDIzNywgMTkwLCAyNDEsIDksIDIxNSwgNzAsIDIxOCwgCisgICAgMjE3LCAxMTUsIDIxNywgMzQsIDEyNywgMjA1LCAyMzUsIDIzLCAyMzgsIDIxLCAyMDgsIDY4LCAyMDMsIDIyOCwgMjMsIAorICAgIDIzOCwgMjEsIDIwOCwgNjgsIDIyMCwgOSwgMjMsIDIzOCwgMjEsIDIwOCwgNjgsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIAorICAgIDIzOCwgMjEsIDIyMCwgMTAsIDIzOSwgMTY3LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDEyNywgMjIwLCA5LCAyMywgMjM5LCAKKyAgICAxNTQsIDIzOCwgMjEsIDExNSwgMjIwLCA5LCAyMywgMjM5LCAxNTQsIDIzOCwgMjEsIDIyMCwgMTAsIDIwMywgMjI4LCAyMywgCisgICAgMjM2LCAyNDcsIDIyMCwgOSwgMjMsIDIzNiwgMjQ3LCAyNDMsIDQ3LCAyMywgMjM2LCAyNDcsIDIwMCwgMjIzLCAyMywgMjM4LCAKKyAgICAxNiwgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwOCwgMTg4LCAyMywgMjM4LCAxNiwgMjQ2LCAxMDksIDIzLCAyMzgsIDIzLCAKKyAgICAyNDgsIDEzNSwgMjA5LCAxMzgsIDIzLCAyMzgsIDIzLCAyNDgsIDEzNSwgMjIxLCAyMCwgMjMsIDIzOCwgMTYsIDE2NywgCisgICAgMjE3LCA1MywgMjMsIDIzOCwgMTYsIDIwMSwgMjgsIDIxNywgNTMsIDIzLCAyMzgsIDE2LCAxNjcsIDI0NiwgMTA5LCAyMywgCisgICAgMjM4LCAxNiwgMjAxLCAyNiwgMjIxLCA1NCwgMjMsIDIzOCwgMjMsIDIwMSwgOSwgMjMsIDIzOCwgMTcsIDIwMywgMjI4LCAKKyAgICAyMywgMjM4LCAxNywgMjM5LCAxNjcsIDIzLCAyMzgsIDE3LCAyMzcsIDE4LCAyMywgMjM4LCAxOSwgMjA4LCA2NywgMjMsIAorICAgIDIzOCwgMTksIDIwOCwgNjgsIDIzOSwgMTc1LCAyMywgMjM4LCAxOSwgMjA4LCA2OCwgMjUxLCAxMDYsIDIzLCAyMzgsIDIwLCAKKyAgICAyMDgsIDY3LCAyMywgMjM4LCAyMCwgMjA4LCA2OCwgMjM5LCAxNzUsIDIzLCAyMzgsIDIwLCAyMDgsIDY4LCAyNTEsIDEwNiwgCisgICAgMjMsIDIzOCwgMTksIDI0MiwgMTg3LCAyMywgMjM4LCAyMCwgMjQyLCAxODcsIDIzLCAyMzgsIDE5LCAyNDYsIDE1MCwgMjMsIAorICAgIDI0NywgMiwgMjE0LCAyMTUsIDIzLCAyNDcsIDIsIDIyMCwgOSwgMjMsIDI0NywgMiwgMjA3LCAyNDgsIDIzLCAyMDYsIDE2MCwgCisgICAgMjQ3LCAyLCAyMzQsIDU5LCAyMywgMjA2LCAxNjAsIDI0NywgMiwgMjIxLCAyMDQsIDIzLCAyMDYsIDE2MCwgMjQ3LCAyLCAKKyAgICAyMjQsIDU5LCAyMywgMjM5LCAxOSwgMjMsIDIxOCwgMjE3LCAyMjAsIDksIDIzLCAyMTgsIDIxNywgMjQzLCA0NywgMjMsIAorICAgIDIxOCwgMjE3LCAyMDAsIDIyMSwgMjMsIDIxOCwgMjE3LCAyMDEsIDIzLCAyMywgMjUxLCAxNjcsIDI0OCwgMTI4LCAyMTYsIAorICAgIDI1NCwgMjMsIDI1MSwgMTY3LCAyMDcsIDI0NywgMjI4LCAxMTcsIDIzLCAyNTEsIDE2NywgMjQ4LCAxMzAsIDQsIDIxMiwgCisgICAgMjIzLCAyMywgMjUxLCAxNjcsIDIwNywgMjQ5LCA0LCAyMTIsIDIyMywgMjMsIDI0OCwgNTksIDIyOCwgODksIDIzLCAyNDgsIAorICAgIDU5LCAyMzgsIDQxLCAyMywgMjIxLCA1OSwgMjQ2LCAxMTAsIDIyMCwgOSwgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyMzYsIAorICAgIDIzMywgMjMsIDIyMSwgNTksIDI0NiwgMTEwLCAyNDMsIDQ3LCAyMywgMjIxLCA1OSwgMjA5LCA0OCwgMjMsIDIyMSwgNTksIAorICAgIDIwOSwgNDksIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA5LCA0OSwgMjE3LCA1MywgMjMsIDIyMSwgNTksIDIzNiwgMTk2LCAKKyAgICAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjM2LCAxOTcsIDIxNywgNTMsIDIzLCAyMjEsIAorICAgIDU5LCAxNzYsIDI0NiwgMTU1LCAyMywgMjIxLCA1OSwgMTc2LCAyMzYsIDIzMywgMjMsIDIyMSwgNTksIDE3NiwgMjAwLCAKKyAgICAyMjMsIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ3LCAyMywgMjIxLCA1OSwgMTc2LCAyMTYsIDI0OCwgMjAwLCAyMjMsIAorICAgIDIzLCAyMjEsIDU5LCAxNzYsIDIxNiwgMjQ4LCAyMDAsIDU4LCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NSwgMjMsIDIyMSwgCisgICAgNTksIDE3NiwgMjEzLCAxNzYsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMTc2LCAyMTMsIDE3NiwgMjAwLCA1OCwgMjMsIAorICAgIDIyMSwgNTksIDIyNiwgMTI5LCAyMywgMjIxLCA1OSwgMjI2LCAxMzAsIDIzNiwgMjMzLCAyMywgMjIxLCA1OSwgMjI2LCAKKyAgICAxMzAsIDIwMCwgMjIzLCAyMywgMjIxLCA1OSwgMjA2LCAxNTksIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjM2LCAyMzMsIAorICAgIDIzLCAyMjEsIDU5LCAyMDYsIDE2MCwgMjA3LCAyNDgsIDIzLCAyMjQsIDE2MSwgMjE1LCAxNywgMjA1LCAxODIsIDIzLCAKKyAgICAyMjQsIDE2MywgMjI0LCA1NCwgMTE5LCAyMDMsIDIyNCwgMjMsIDIyNCwgMTYzLCAyMDMsIDIyNSwgMTE5LCAyMjQsIDUzLCAKKyAgICAyMywgMjIxLCA1OSwgMjQzLCAxNCwgMjMsIDIyMSwgNTksIDIwMCwgMjIyLCAyMDksIDEzOCwgMjMsIDIyMSwgNTksIDIwMCwgCisgICAgMjIyLCAyMzksIDE3NSwgMjMsIDIwNSwgMTY0LCAyMDgsIDg3LCAyMTYsIDI1NSwgMjM3LCAxNjMsIDIzLCAyMDUsIDE2NCwgCisgICAgMjI0LCAyMDYsIDIyNCwgMTYwLCAyMywgMjA1LCAxNjQsIDIwNSwgMjI0LCAyNDgsIDIwNiwgMjI0LCAxNjAsIDIzLCAyMDUsIAorICAgIDE2NCwgMjA1LCAyMjQsIDIwNSwgMTQwLCAyMjgsIDc0LCAyMjEsIDU4LCAyMywgMjA1LCAxNjQsIDIyOCwgNzQsIDIyMSwgCisgICAgNTksIDIxMywgMTQ3LCAyMywgMjA1LCAxNjQsIDIyMSwgNDksIDI1MSwgMTkxLCAyNDcsIDMsIDIzLCAyMDUsIDE2NCwgMjQ3LCAKKyAgICA1NiwgMjA4LCA4NywgMjE2LCAyNTQsIDIzLCAyMDUsIDE2NCwgMjQ3LCA1NiwgMjI4LCA3NCwgMjIxLCA1OCwgMjMsIDIwNiwgCisgICAgMTg2LCAyMywgMjA2LCAxODcsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjA1LCAxNjMsIDIzLCAyMDYsIAorICAgIDE4NywgMjE3LCA3OSwgMjA1LCAxNjQsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjAsIDIzLCAKKyAgICAyMDYsIDE4NywgMjE3LCA3OSwgMjI0LCAxNjEsIDIyMSwgNTQsIDIzLCAyMDYsIDE4NywgMjQ4LCAxNTEsIDIyNCwgMTYwLCAKKyAgICAyMywgMjIxLCA1MCwgMjI3LCAyMzEsIDIzLCAyMjEsIDUyLCAyMjcsIDIzMSwgMjMsIDIyMCwgMzEsIDIzLCAyMzQsIDIyMSwgCisgICAgMjMsIDIzOCwgNDQsIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjA4LCAyMTksIDIzLCAyMDksIDIzMywgMjM0LCA0OSwgMjE1LCAKKyAgICA2OSwgMjMsIDIwMSwgMTAxLCAyMDksIDIzMywgMjM0LCA0OSwgMjIxLCA1NywgMjMsIDIzNywgMzAsIDIwOSwgMjMzLCAyMzQsIAorICAgIDQ5LCAyMjEsIDU3LCAyMywgMjA5LCAyMzMsIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjAxLCAxMDcsIDIzLCAyMDUsIDE0NywgCisgICAgMjA4LCA2OCwgMjA4LCA1NiwgMjMsIDIwNSwgMTQ3LCAyNDIsIDE4OCwgMjQ4LCAyMjIsIDIzLCAyMDUsIDE0OCwgMjA0LCAKKyAgICAxNDQsIDIzLCAyMDMsIDIyNSwgMjQ4LCAxMTksIDIwNSwgMjM2LCAyMzYsIDIwMSwgMjM0LCA0OSwgMjI3LCAxNjAsIDIzLCAKKyAgICAyMjQsIDE4OCwgMjQ2LCA3NSwgMjMsIDIyNCwgMTg4LCAyMjUsIDEsIDIzLCAyMjQsIDE4OCwgMjI1LCAwLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjU1LCAyMywgMjI0LCAxODgsIDIyNCwgMjU0LCAyMywgMjI0LCAxODgsIDIyNCwgMjUzLCAyMywgMjI0LCAKKyAgICAxODgsIDIyNCwgMjUyLCAyMywgMjI0LCAxODgsIDIyNCwgMjUxLCAyMywgMjM3LCA4NiwgMjMsIDIyNCwgMTA2LCAyMDgsIAorICAgIDI0NCwgMjMsIDIyNCwgMTA3LCAyMDgsIDI0NCwgMjMsIDIyNCwgMTA4LCAyMzQsIDExMywgMjMsIDIyNCwgMTA4LCAyMDEsIAorICAgIDI0LCAyMywgMjI0LCAxMDgsIDI0MSwgMTIzLCAyMywgMjI0LCAxMDgsIDIzNCwgMTM3LCAyMjAsIDMxLCAyMywgMjI0LCAKKyAgICAxMDgsIDIwNSwgMTQ5LCAyMywgMjI0LCAxMDgsIDIyNCwgMTg3LCAyNDEsIDQxLCAyMywgMjQ2LCA3MCwgMjMsIDIzNiwgCisgICAgMTgzLCAyMDgsIDc2LCAyMywgMjEwLCAxNjcsIDIzLCAyNDYsIDc5LCAyMywgMjE2LCAxMTUsIDIzLCAyMzcsIDk2LCAyMjEsIAorICAgIDExOCwgMjMsIDIzNywgOTYsIDIyMSwgMTE3LCAyMywgMjM3LCA5NiwgMjIxLCAxMTYsIDIzLCAyMzcsIDk2LCAyMjEsIDExNSwgCisgICAgMjMsIDIzNywgOTYsIDIyMSwgMTE0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE4LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE3LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE2LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTE0LCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTEzLCAyMywgMjEyLCAyMjcsIDIyMSwgMTEyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTExLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTI1LCAyMywgMjEyLCAyMjcsIDIyMSwgMTI0LCAyMywgMjEyLCAyMjcsIDIyMSwgMTIzLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTIyLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIxLCAyMywgMjEyLCAyMjcsIDIyMSwgMTIwLCAKKyAgICAyMywgMjEyLCAyMjcsIDIyMSwgMTE5LCAzOCwgMTE2LCAxLCAyNTAsIDEwNCwgMzgsIDExNiwgMSwgMjQ4LCAyNCwgMzgsIAorICAgIDExNiwgMSwgMjAzLCA1NywgMzgsIDExNiwgMSwgMjM1LCAxMzAsIDM4LCAxMTYsIDEsIDI0MCwgMjA2LCAzOCwgMTE2LCAxLCAKKyAgICAyMDAsIDIzLCAzOCwgMTE2LCAxLCAxOTksIDYxLCAzOCwgMTE2LCAxLCAxOTksIDg2LCAzOCwgMTE2LCAxLCAyMjcsIDI1NSwgCisgICAgMzgsIDExNiwgMSwgODIsIDIyNywgMjU1LCAzOCwgMTE2LCAxLCA3MCwgMzgsIDExNiwgMSwgMjQwLCAyMjYsIDM4LCAxMTYsIAorICAgIDEsIDIyNywgNzQsIDM4LCAxMTYsIDEsIDIyNCwgMTQwLCAzOCwgMTE2LCAxLCAyMjAsIDIxOCwgMzgsIDExNiwgMSwgMjIwLCAKKyAgICAxMjAsIDM4LCAxMTYsIDEsIDIxNywgNjUsIDM4LCAxMTYsIDEsIDIxNSwgOTMsIDM4LCAxMTYsIDEsIDIxMywgMTgsIDM4LCAKKyAgICAxMTYsIDEsIDIwOSwgNTgsIDM4LCAxMTYsIDEsIDIwNCwgMTcxLCAzOCwgMTE2LCAxLCAyMDQsIDE2LCAzOCwgMTE2LCAxLCAKKyAgICAyMzYsIDIwNCwgMzgsIDExNiwgMSwgMjM0LCA5NSwgMzgsIDExNiwgMSwgMjA5LCAyMjMsIDM4LCAxMTYsIDEsIDIwNSwgMTEsIAorICAgIDM4LCAxMTYsIDEsIDI0NiwgMTk4LCAzOCwgMTE2LCAxLCAyMTAsIDExNCwgMzgsIDExNiwgMSwgMjAwLCAyOSwgMzgsIDExNiwgCisgICAgMSwgMjAwLCAzMSwgMzgsIDExNiwgMSwgMjAwLCA2MywgMzgsIDExNiwgMSwgMTk5LCAyMTEsIDM4LCAxMTYsIDEsIDQsIAorICAgIDE5OSwgMTgxLCAzOCwgMTE2LCAxLCAxOTksIDI0NSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgNCwgMTk5LCAxODEsIDM4LCAKKyAgICAxMTYsIDEsIDI0OCwgMTc1LCAxOTksIDE4MSwgMzgsIDExNiwgMSwgMjI4LCA0MCwgMjQ4LCAxNzUsIDE5OSwgMTgxLCAzOCwgCisgICAgMTE2LCAxLCAyMzcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMjQyLCAyMjYsIDE2MywgNzgsIDc3LCA1LCAyMjMsIDIzOCwgMTYxLCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMjM2LCAyMjYsIDE1LCA3OCwgNzcsIDUsIDIyMywgMTEyLCAyMjcsIDUsIDc4LCA3NywgNSwgCisgICAgMjIzLCA4MiwgMjI3LCA4LCA3OCwgNzcsIDUsIDIyMywgMTAxLCAyMjYsIDY4LCA3OCwgNzcsIDUsIDIyMywgMTI5LCAyMjYsIAorICAgIDg4LCA3OCwgNzcsIDUsIDIyMiwgMjU0LCAyMjYsIDksIDc4LCA3NywgNSwgMjIzLCAyMzMsIDIwMSwgMzEsIDc4LCA3NywgNSwgCisgICAgMjIzLCAyMzEsIDIwMSwgMTE0LCA3OCwgNzcsIDUsIDIyMywgMjI5LCAyMDAsIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDUxLCAKKyAgICAyMDEsIDU3LCA3OCwgNzcsIDUsIDIyMywgNTksIDIwMSwgNjQsIDc4LCA3NywgNSwgMjIzLCA2MywgMjAwLCAyNDQsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMzIsIDIwMSwgMCwgNzgsIDc3LCA1LCAyMjIsIDIzOSwgMjAwLCAyMTIsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAzNCwgMjAxLCA1NSwgNzgsIDc3LCA1LCAyMjMsIDExNiwgMjAwLCAyMDAsIDc4LCA3NywgNSwgMjIzLCAxMjgsIDIwMCwgCisgICAgMjAyLCA3OCwgNzcsIDUsIDIyMywgMzgsIDIwMCwgMjAxLCA3OCwgNzcsIDUsIDIyMywgMjI3LCAyMjEsIDE2NCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDIyNSwgMjIyLCAxODAsIDc4LCA3NywgNSwgMjIzLCAyMjMsIDIyMSwgMTQsIDc4LCA3NywgNSwgMjIzLCAxMTgsIAorICAgIDIyMiwgNDAsIDc4LCA3NywgNSwgMjIzLCA4MywgMjIxLCAxMDYsIDc4LCA3NywgNSwgMjIzLCAyMywgMjIxLCAzOCwgNzgsIAorICAgIDc3LCA1LCAyMjIsIDI0NCwgMjIxLCAzMiwgNzgsIDc3LCA1LCAyMjMsIDIyMSwgMjQ4LCAxODgsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAyMTgsIDI0OSwgMTM2LCA3OCwgNzcsIDUsIDIyMywgMjE2LCAyNDgsIDM2LCA3OCwgNzcsIDUsIDIyMywgMjcsIDI0OCwgCisgICAgMjUyLCA3OCwgNzcsIDUsIDIyMywgODAsIDI0OSwgOCwgNzgsIDc3LCA1LCAyMjMsIDc0LCAyNDgsIDExMSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDM5LCAyNDgsIDEyNCwgNzgsIDc3LCA1LCAyMjMsIDIwNiwgNzAsIDc4LCA3NywgNSwgMjIzLCAyMDQsIDYyLCA3OCwgCisgICAgNzcsIDUsIDIyMywgMjAyLCA2NiwgNzgsIDc3LCA1LCAyMjMsIDE0LCAyMzgsIDI1NSwgNzgsIDc3LCA1LCAyMjMsIDc3LCAKKyAgICA3MiwgNzgsIDc3LCA1LCAyMjMsIDEyLCAyMTcsIDYzLCA3OCwgNzcsIDUsIDIyMywgMzAsIDc0LCA3OCwgNzcsIDUsIDIyMywgCisgICAgNDAsIDIzOCwgMjM0LCA3OCwgNzcsIDUsIDIyMywgNDYsIDIyOCwgMTE3LCA3OCwgNzcsIDUsIDIyMywgNDIsIDIyOCwgMTE3LCAKKyAgICA3OCwgNzcsIDUsIDIyMiwgMjM4LCAyNTEsIDg1LCA3OCwgNzcsIDUsIDIyMiwgMjU1LCAyMzgsIDE3OSwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDE5MSwgMjA5LCAxODIsIDc4LCA3NywgNSwgMjIzLCAxODksIDIxMiwgNjQsIDc4LCA3NywgNSwgMjIzLCAxODcsIAorICAgIDIwOCwgMjQsIDc4LCA3NywgNSwgMjIzLCAxNSwgMjExLCAxOTAsIDc4LCA3NywgNSwgMjIzLCA2MSwgMjExLCAyMDIsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA0MSwgMjA5LCAxMCwgNzgsIDc3LCA1LCAyMjMsIDk4LCAyMDksIDI5LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjM3LCAyMDksIDE4MSwgNzgsIDc3LCA1LCAyMjMsIDE3NywgMjI0LCAyMTAsIDc4LCA3NywgNSwgMjIzLCAxNzUsIDE5NCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDE3MywgMjI0LCA0MiwgNzgsIDc3LCA1LCAyMjMsIDkzLCAyMjUsIDMyLCA3OCwgNzcsIDUsIAorICAgIDIyMywgMTA0LCAyMjUsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTIzLCAyMjQsIDc4LCA3OCwgNzcsIDUsIDIyMywgMjQsIDIyNCwgCisgICAgMTEwLCA3OCwgNzcsIDUsIDIyMywgNjcsIDE2OCwgMjI1LCA0MCwgNzgsIDc3LCA1LCAyMjMsIDE5OSwgMjQxLCA3NiwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDE5NiwgMjQyLCA1OCwgNzgsIDc3LCA1LCAyMjMsIDE5MywgMjM5LCAxMzcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA4OCwgMjQxLCAxNjEsIDc4LCA3NywgNSwgMjIyLCAyNTMsIDI0MCwgMTg3LCA3OCwgNzcsIDUsIDIyMiwgMjUyLCAyNDAsIAorICAgIDIxMSwgNzgsIDc3LCA1LCAyMjMsIDE4NSwgMjA2LCAxNSwgNzgsIDc3LCA1LCAyMjMsIDE4MiwgMjA3LCAzNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDE4MCwgMjA0LCAyMTUsIDc4LCA3NywgNSwgMjIzLCA4NiwgMjA2LCAxOTAsIDc4LCA3NywgNSwgMjIzLCAxMjIsIAorICAgIDIwNiwgMjAxLCA3OCwgNzcsIDUsIDIyMywgNzMsIDIwNSwgMTYxLCA3OCwgNzcsIDUsIDIyMywgMTA4LCAxMzgsIDc4LCA3NywgCisgICAgNSwgMjIzLCAxNzEsIDIyNywgMjA3LCA3OCwgNzcsIDUsIDIyMywgMTY4LCAyMjcsIDI0OCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDE2NiwgMjI3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCAyMCwgMjI3LCAyMjUsIDc4LCA3NywgNSwgMjIzLCA2NCwgMjI3LCAKKyAgICAyMjcsIDc4LCA3NywgNSwgMjIzLCAxNywgMjI3LCAxNTYsIDc4LCA3NywgNSwgMjIzLCAxMTQsIDIyNywgMTY2LCA3OCwgNzcsIAorICAgIDUsIDIyMywgMiwgMTY4LCAyMjcsIDE2NiwgNzgsIDc3LCA1LCAyMjMsIDE2NCwgMjAwLCA5LCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTYxLCAxODMsIDc4LCA3NywgNSwgMjIzLCAxNTksIDE5OSwgMjExLCA3OCwgNzcsIDUsIDIyMywgNjgsIDIwMCwgNDgsIDc4LCAKKyAgICA3NywgNSwgMjIzLCA5NywgMjAwLCA1MSwgNzgsIDc3LCA1LCAyMjMsIDM2LCAxOTksIDIzMCwgNzgsIDc3LCA1LCAyMjMsIAorICAgIDU2LCAxOTksIDI0NSwgNzgsIDc3LCA1LCAyMjMsIDE1NSwgMjM3LCAxMTIsIDc4LCA3NywgNSwgMjIzLCAxNTMsIDIzNywgCisgICAgMTk1LCA3OCwgNzcsIDUsIDIyMywgMTUxLCAyMzYsIDE4OSwgNzgsIDc3LCA1LCAyMjMsIDk5LCAyMzcsIDE0MCwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDEwMiwgMjM3LCAxNDcsIDc4LCA3NywgNSwgMjIzLCA0NCwgMjM3LCAyLCA3OCwgNzcsIDUsIDIyMywgODksIAorICAgIDIzNywgMTMsIDc4LCA3NywgNSwgMjIyLCAyMzYsIDIzNiwgMTg4LCA3OCwgNzcsIDUsIDIyMywgNzYsIDIzNywgMTY4LCA3OCwgCisgICAgNzcsIDUsIDIyMywgMTQ5LCAyMTksIDExOCwgNzgsIDc3LCA1LCAyMjMsIDE0NywgMjIwLCAxMzQsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxNDUsIDIxOCwgODksIDc4LCA3NywgNSwgMjIzLCA2MCwgMjIwLCAyNCwgNzgsIDc3LCA1LCAyMjMsIDgsIDIxOCwgMjM0LCAKKyAgICA3OCwgNzcsIDUsIDIyMywgMSwgMjM0LCA3NSwgNzgsIDc3LCA1LCAyMjMsIDE0MCwgMTQ0LCA3OCwgNzcsIDUsIDIyMiwgCisgICAgMjQ3LCAyMzMsIDk3LCA3OCwgNzcsIDUsIDIyMywgMTQzLCAyMzQsIDEyMCwgNzgsIDc3LCA1LCAyMjMsIDgxLCAyMzQsIAorICAgIDEzOSwgNzgsIDc3LCA1LCAyMjMsIDEzOCwgMjMzLCAxODgsIDc4LCA3NywgNSwgMjIzLCAzNywgMjMzLCAyMDcsIDc4LCA3NywgCisgICAgNSwgMjIzLCA5NCwgMjM0LCAxMTksIDc4LCA3NywgNSwgMjIzLCA0OSwgMjMzLCAxODEsIDc4LCA3NywgNSwgMjIzLCAxMjQsIAorICAgIDIzNCwgNTMsIDc4LCA3NywgNSwgMjIzLCA0NywgMjM0LCAyMDIsIDc4LCA3NywgNSwgMjIzLCA5MCwgMjMzLCA4NCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDEyNSwgMjM0LCAxMDUsIDc4LCA3NywgNSwgMjIyLCAyNDAsIDIzMywgMTkxLCA3OCwgNzcsIDUsIDIyMywgCisgICAgMTMxLCAyMzMsIDk2LCA3OCwgNzcsIDUsIDIyMywgODcsIDIxOSwgMjE4LCA3OCwgNzcsIDUsIDIyMywgMTM2LCAyMTksIAorICAgIDIzMiwgNzgsIDc3LCA1LCAyMjMsIDk1LCAyMTksIDIxNSwgNzgsIDc3LCA1LCAyMjMsIDYyLCAyMTksIDIyNiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDMxLCAyMTksIDIyNywgNzgsIDc3LCA1LCAyMjMsIDIxLCAyMTksIDIxNiwgNzgsIDc3LCA1LCAyMjMsIDU3LCAKKyAgICAyMTksIDIxNywgNzgsIDc3LCA1LCAyMjMsIDE4LCAyMTksIDIzMSwgNzgsIDc3LCA1LCAyMjMsIDUwLCAyMTksIDIxNCwgNzgsIAorICAgIDc3LCA1LCAyMjMsIDkxLCAxNjgsIDIxOSwgMjI3LCA3OCwgNzcsIDUsIDIyMywgNzEsIDE2OCwgMjE5LCAyMTYsIDc4LCA3NywgCisgICAgNSwgMjIyLCAyNTAsIDE2OCwgMjE5LCAyMTcsIDc4LCA3NywgNSwgMjIzLCAyMiwgMjM1LCAxNjEsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2NiwgMjM2LCA4OSwgNzgsIDc3LCA1LCAyMjMsIDksIDIzNSwgNTAsIDc4LCA3NywgNSwgMjIyLCAyNDMsIDIzNiwgNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDExLCAyMzUsIDM2LCA3OCwgNzcsIDUsIDIyMywgMTAsIDIzNSwgNDYsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNDksIDIxOSwgMjM3LCA3OCwgNzcsIDUsIDIyMywgMTIwLCAyMTksIDE3NCwgNzgsIDc3LCA1LCAyMjMsIDAsIDIxOSwgCisgICAgMTYzLCA3OCwgNzcsIDUsIDIyMywgMTA5LCAyMTUsIDIwNCwgNzgsIDc3LCA1LCAyMjMsIDc4LCAxNzIsIDc4LCA3NywgNSwgCisgICAgMjIzLCAxMjcsIDIxNCwgMjI0LCA3OCwgNzcsIDUsIDIyMywgOTYsIDIxNiwgNjEsIDc4LCA3NywgNSwgMjIzLCAxMjYsIAorICAgIDIxNiwgNzMsIDc4LCA3NywgNSwgMjIzLCA3NSwgMjE1LCA4MSwgNzgsIDc3LCA1LCAyMjMsIDExMSwgMjE1LCAxMDYsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAzMiwgMjIyLCA5NSwgNzgsIDc3LCA1LCAyMjMsIDExNSwgMjIyLCAxMTAsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA1NSwgMjIyLCA4OSwgNzgsIDc3LCA1LCAyMjMsIDEzMCwgMjIyLCAxMDIsIDc4LCA3NywgNSwgMjIyLCAyNDUsIDIyMiwgCisgICAgMTAyLCA3OCwgNzcsIDUsIDIyMywgMTA1LCAyMjIsIDEwMywgNzgsIDc3LCA1LCAyMjMsIDUsIDIyMiwgOTAsIDc4LCA3NywgCisgICAgNSwgMjIzLCAzLCAyMjIsIDkxLCA3OCwgNzcsIDUsIDIyMiwgMjQ2LCAyMjIsIDgzLCA3OCwgNzcsIDUsIDIyMywgMTYsIAorICAgIDE2OCwgMjIyLCAxMDMsIDc4LCA3NywgNSwgMjIzLCA3MiwgMTY4LCAyMjIsIDkwLCA3OCwgNzcsIDUsIDIyMywgMzUsIDE2OCwgCisgICAgMjIyLCA5MSwgNzgsIDc3LCA1LCAyMjMsIDQ1LCAyMjYsIDQyLCA3OCwgNzcsIDUsIDIyMywgODUsIDIyNiwgNTAsIDc4LCAKKyAgICA3NywgNSwgMjIzLCAxMDMsIDIyNiwgMzgsIDc4LCA3NywgNSwgMjIzLCAxMzQsIDIyNiwgNDUsIDc4LCA3NywgNSwgMjIzLCAKKyAgICA2OSwgMjI2LCA0NiwgNzgsIDc3LCA1LCAyMjMsIDY1LCAyMjYsIDQwLCA3OCwgNzcsIDUsIDIyMywgMTksIDIyNiwgNDEsIAorICAgIDc4LCA3NywgNSwgMjIzLCA1MywgMjM2LCAyNCwgNzgsIDc3LCA1LCAyMjMsIDEyMSwgMjM2LCAzMiwgNzgsIDc3LCA1LCAKKyAgICAyMjMsIDI5LCAyMzYsIDE5LCA3OCwgNzcsIDUsIDIyMywgODQsIDIzNiwgMjgsIDc4LCA3NywgNSwgMjIzLCA3MCwgMjM2LCAKKyAgICAyOSwgNzgsIDc3LCA1LCAyMjMsIDEwNiwgMjM2LCAyMCwgNzgsIDc3LCA1LCAyMjMsIDEwNywgMjM2LCAyMiwgNzgsIDc3LCAKKyAgICA1LCAyMjMsIDYsIDIxMywgMjUyLCA3OCwgNzcsIDUsIDIyMywgNTQsIDIyMCwgNjAsIDc4LCA3NywgNSwgMjIzLCA0OCwgCisgICAgMjIwLCA3NSwgNzgsIDc3LCA1LCAyMjMsIDUyLCAyMjAsIDQyLCA3OCwgNzcsIDUsIDIyMiwgMjQyLCAyMjAsIDY2LCA3OCwgCisgICAgNzcsIDUsIDIyMywgNTgsIDIyMCwgNjcsIDc4LCA3NywgNSwgMjIzLCAxMTAsIDIyMCwgNDcsIDc4LCA3NywgNSwgMjIzLCAKKyAgICAxMTMsIDIyMCwgNTEsIDc4LCA3NywgNSwgMjIzLCAyNSwgMjE5LCA5OCwgNzgsIDc3LCA1LCAyMjIsIDI0MSwgMjE5LCA2OCwgCisgICAgNzgsIDc3LCA1LCAyMjMsIDI4LCAyMTksIDg5LCA3OCwgNzcsIDUsIDIyMywgNDMsIDIxOSwgNzIsIDc4LCA3NywgNSwgMjIyLCAKKyAgICAyNTEsIDIwMiwgMjM0LCA3OCwgNzcsIDUsIDIyMiwgMjQ4LCAyMDMsIDkwLCA3OCwgNzcsIDUsIDIyMywgMjYsIDIwMSwgCisgICAgMTY2LCA3OCwgNzcsIDUsIDIyMywgNCwgMjAzLCA1NCwgNzgsIDc3LCA1LCAyMjMsIDkyLCAyMDMsIDU5LCA3OCwgNzcsIDUsIAorICAgIDIyMywgMzMsIDIwMiwgMTc5LCA3OCwgNzcsIDUsIDIyMywgMTAwLCAyMDIsIDE5MywgNzgsIDc3LCA1LCAyMjMsIDEzLCAKKyAgICAyMTgsIDM1LCA3OCwgNzcsIDUsIDIyMywgMTE5LCAyMTgsIDU0LCA3OCwgNzcsIDUsIDIyMywgNywgMjE4LCAxNywgNzgsIAorICAgIDc3LCA1LCAyMjMsIDc5LCAyMTgsIDQ2LCA3OCwgNzcsIDUsIDIyMywgMTE3LCAyMTgsIDI0LCA3OCwgNzcsIDE3LCAxMDIsIAorICAgIDc4LCA3NywgMTcsIDEwNSwgNzgsIDc3LCAxNywgMTQ3LCA3OCwgNzcsIDE3LCAxNDksIDc4LCA3NywgMTcsIDE2NCwgNzgsIAorICAgIDc3LCAxNywgMTg3LCA3OCwgNzcsIDE3LCAyMTAsIDEzNSwgNzgsIDc3LCAxNywgMTkyLCA3OCwgNzcsIDE3LCAyMTksIDExMywgCisgICAgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTg4LCA3OCwgNzcsIDM4LCA0MSwgMjA2LCAxNjEsIDc4LCA3NywgMzgsIDQxLCAyMzMsIAorICAgIDgwLCA3OCwgNzcsIDM4LCA0MSwgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIwNiwgMTY3LCAyMDYsIDQ4LCA3OCwgNzcsIAorICAgIDM4LCA0MSwgMjMzLCA4MywgMjA2LCA0OCwgNzgsIDc3LCAzOCwgNDEsIDIyMSwgMTY3LCAyNTEsIDIyNywgNiwgMSwgMjUxLCAKKyAgICAxMzAsIDI1MSwgMjI3LCA2LCAxLCAyNDIsIDU1LCAyNTEsIDIyNywgNiwgMSwgMjI1LCAxNzMsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMjEsIDE4MCwgMjUxLCAyMjcsIDYsIDEsIDI0OSwgMTM2LCAyNTEsIDIyNywgNiwgMSwgMjA5LCAxMzMsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMTYsIDczLCAyNTEsIDIyNywgNiwgMSwgMjQ4LCAxOTYsIDI1MSwgMjI3LCA2LCAxLCAyMTMsIDI1MiwgMjUxLCAKKyAgICAyMjcsIDYsIDEsIDcyLCAyNTEsIDIyNywgNiwgMSwgMjM3LCAxOTUsIDI1MSwgMjI3LCA2LCAxLCA3MCwgMjUxLCAyMjcsIDYsIAorICAgIDEsIDc0LCAyNTEsIDIyNywgNiwgMSwgMjQxLCAxMDAsIDI1MSwgMjI3LCA2LCAxLCAyMDAsIDEwLCAyNTEsIDIyNywgNiwgMSwgCisgICAgMjAxLCA3MiwgMjUxLCAyMjcsIDYsIDEsIDIxOCwgODksIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDg2LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMTgzLCAyNTEsIDIyNywgNiwgMSwgNjYsIDI1MSwgMjI3LCA2LCAxLCAyMjcsIDE5OSwgMjUxLCAyMjcsIDYsIDEsIAorICAgIDI0NiwgMjM2LCAyNTEsIDIyNywgNiwgMSwgMTQ0LCAyNTEsIDIyNywgNiwgMSwgMjE0LCAxNTcsIDI1MSwgMjI3LCA2LCAxLCAKKyAgICAyMzYsIDg5LCAyNTEsIDIyNywgNiwgMSwgMjE4LCA2MCwgMjUxLCAyMjcsIDYsIDEsIDIwNCwgMjE1LCAyNTEsIDIyNywgNiwgCisgICAgMSwgMjE5LCAxNTQsIDI1MSwgMjI3LCA2LCAxLCAyMDMsIDkwLCAyNTEsIDIyNywgNiwgMSwgMjI2LCAyMDcsIDI1MSwgMjI3LCAKKyAgICA2LCAxLCAyMzYsIDI5LCAyNTEsIDIyNywgNiwgMSwgMTk5LCAxMDMsIDI1MSwgMjI3LCA2LCAxLCAyMjYsIDQxLCAyNTEsIAorICAgIDIyNywgNiwgMSwgMjEwLCAxMTQsIDI1MSwgMjI3LCA0LCAxLCAyNTEsIDEzMCwgMjUxLCAyMjcsIDQsIDEsIDI0MiwgNTUsIAorICAgIDI1MSwgMjI3LCA0LCAxLCAyMjUsIDE3MywgMjUxLCAyMjcsIDQsIDEsIDIyMSwgMTgwLCAyNTEsIDIyNywgNCwgMSwgMjQ5LCAKKyAgICAxMzYsIDI1MSwgMjI3LCA0LCAxLCAyMDksIDEzMywgMjUxLCAyMjcsIDQsIDEsIDIxNiwgNzMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyNDgsIDE5NiwgMjUxLCAyMjcsIDQsIDEsIDIxMywgMjUyLCAyNTEsIDIyNywgNCwgMSwgNzIsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMzcsIDE5NSwgMjUxLCAyMjcsIDQsIDEsIDcwLCAyNTEsIDIyNywgNCwgMSwgNzQsIDI1MSwgMjI3LCA0LCAxLCAyNDEsIAorICAgIDEwMCwgMjUxLCAyMjcsIDQsIDEsIDIwMCwgMTAsIDI1MSwgMjI3LCA0LCAxLCAyMDEsIDcyLCAyNTEsIDIyNywgNCwgMSwgCisgICAgMjE4LCA4OSwgMjUxLCAyMjcsIDQsIDEsIDIyNywgODYsIDI1MSwgMjI3LCA0LCAxLCAxODMsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICA2NiwgMjUxLCAyMjcsIDQsIDEsIDIyNywgMTk5LCAyNTEsIDIyNywgNCwgMSwgMjQ2LCAyMzYsIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAxNDQsIDI1MSwgMjI3LCA0LCAxLCAyMTQsIDE1NywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgODksIDI1MSwgMjI3LCA0LCAxLCAKKyAgICAyMTgsIDYwLCAyNTEsIDIyNywgNCwgMSwgMjA0LCAyMTUsIDI1MSwgMjI3LCA0LCAxLCAyMTksIDE1NCwgMjUxLCAyMjcsIDQsIAorICAgIDEsIDIwMywgOTAsIDI1MSwgMjI3LCA0LCAxLCAyMjYsIDIwNywgMjUxLCAyMjcsIDQsIDEsIDIzNiwgMjksIDI1MSwgMjI3LCAKKyAgICA0LCAxLCAxOTksIDEwMywgMjUxLCAyMjcsIDQsIDEsIDIyNiwgNDEsIDI1MSwgMjI3LCA0LCAxLCAyMTAsIDExNCwgMjUxLCAKKyAgICAyMjcsIDI1MSwgMTMxLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIyLCAyMjQsIDI1MCwgMjUxLCAyMjcsIDIzNiwgMywgODEsIAorICAgIDI1MSwgMjI3LCAyMzQsIDIwMywgMjUxLCAyMjcsIDExMSwgMjIxLCAxMjYsIDI1MSwgMjI3LCAyMzYsIDQsIDExMSwgMjIxLCAKKyAgICAxMjYsIDI1MSwgMjI3LCAyMTgsIDEwMCwgMjUxLCAyMjcsIDE3LCAxOTksIDgxLCAyNTEsIDIyNywgMTcsIDEwMiwgMjUxLCAKKyAgICAyMjcsIDE3LCAxMDUsIDI1MSwgMjI3LCAxNywgMTQ3LCAyNTEsIDIyNywgMTcsIDE0OSwgMjUxLCAyMjcsIDE3LCAxNjQsIAorICAgIDI1MSwgMjI3LCAxNywgMTg3LCAyNTEsIDIyNywgMTcsIDIxMCwgMTM1LCAyNTEsIDIyNywgMTcsIDE5MiwgMjUxLCAyMjcsIAorICAgIDE3LCAyMTksIDExMywgMjUxLCAyMjcsIDgyLCAyMzgsIDQzLCA4MSwgMjUxLCAyMjcsIDgyLCAyMTQsIDc5LCA4MSwgOSwgCisgICAgMTMsIDI1MSwgMTQyLCA5LCAxMywgMjQ4LCAyNDAsIDksIDEzLCAyMjcsIDIyNCwgOSwgMTMsIDI0MiwgMjksIDksIDEzLCAKKyAgICAyMDEsIDcyLCA5LCAxMywgMTk5LCAxMDUsIDksIDEzLCAyMzQsIDIyNCwgOSwgMTMsIDIwNywgOSwgOSwgMTMsIDIwMCwgNDYsIAorICAgIDksIDEzLCAyMjcsIDg2LCA5LCAxMywgMjI1LCA5MSwgOSwgMTMsIDIyMiwgNjEsIDksIDEzLCAyMTgsIDIyNywgOSwgMTMsIAorICAgIDIxMSwgMTg2LCA5LCAxMywgMjUxLCAxNzEsIDksIDEzLCAyMzcsIDEzNCwgOSwgMTMsIDIxMiwgNTYsIDksIDEzLCAyMTQsIAorICAgIDE1MiwgOSwgMTMsIDIxMywgMTU0LCA5LCAxMywgMjEwLCA2MSwgOSwgMTMsIDIwNiwgMTgzLCA5LCAxMywgMjA2LCAxMDIsIAorICAgIDksIDEzLCAyMjYsIDIwMywgOSwgMTMsIDIwNiwgMTE0LCA5LCAxMywgMjQyLCA1MiwgOSwgMTMsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjM1LCAxOTQsIDksIDEzLCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyNDAsIDE4MSwgMjE0LCAxNTIsIDksIDEzLCA4MiwgMjQ4LCAyNDAsIDksIAorICAgIDEzLCA4MiwgMjI3LCAyMjQsIDksIDEzLCA4MiwgMjM0LCAxMTUsIDksIDEzLCA4MiwgMjM0LCAyMjQsIDksIDEzLCA4MiwgCisgICAgMjAwLCA0NiwgOSwgMTMsIDgyLCAyMjcsIDg2LCA5LCAxMywgODIsIDIyNSwgOTEsIDksIDEzLCA4MiwgMjIyLCA2MSwgOSwgCisgICAgMTMsIDgyLCAyMTgsIDIyNywgOSwgMTMsIDgyLCAyMTEsIDE4NiwgOSwgMTMsIDgyLCAyNTEsIDE3MSwgOSwgMTMsIDgyLCAKKyAgICAyMzcsIDEzNCwgOSwgMTMsIDgyLCAyMTIsIDU2LCA5LCAxMywgODIsIDIxNCwgMTUyLCA5LCAxMywgODIsIDIxMCwgNjEsIDksIAorICAgIDEzLCA4MiwgMjA2LCAxODMsIDksIDEzLCA4MiwgMjA2LCAxMDIsIDksIDEzLCA4MiwgMjI2LCAyMDMsIDksIDEzLCA4MiwgCisgICAgMjQyLCA1MiwgOSwgMTMsIDgyLCAyMzUsIDE5NCwgOSwgMTMsIDIwNywgNSwgMjI3LCAyMjQsIDksIDEzLCAyMDcsIDUsIAorICAgIDIzNCwgMjI0LCA5LCAxMywgMjA3LCA1LCAyMDAsIDQ2LCA5LCAxMywgMjA3LCA1LCAyMjUsIDkxLCA5LCAxMywgMjA3LCA1LCAKKyAgICAyMTgsIDIyNywgOSwgMTMsIDIwNywgNSwgMjExLCAxODYsIDksIDEzLCAyMDcsIDUsIDI1MSwgMTcxLCA5LCAxMywgMjA3LCAKKyAgICA1LCAyMTIsIDU2LCA5LCAxMywgMjA3LCA1LCAyMTQsIDE1MiwgOSwgMTMsIDIwNywgNSwgMjEwLCA2MSwgOSwgMTMsIDIwNywgCisgICAgNSwgMjI2LCAyMDMsIDksIDEzLCAyMDcsIDUsIDI0MiwgNTIsIDksIDEzLCAyMDcsIDUsIDIzNSwgMTk0LCA5LCAxMywgMjA3LCAKKyAgICA1LCAyNDAsIDE4MSwgMjE4LCAyMjcsIDksIDEzLCAyMDcsIDUsIDI0MCwgMTgxLCAyMTQsIDE1MiwgOSwgMTMsIDIwOCwgNTUsIAorICAgIDI0OCwgMjQwLCA5LCAxMywgMjA4LCA1NSwgMjI3LCAyMjQsIDksIDEzLCAyMDgsIDU1LCAyMzQsIDExNSwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIzNCwgMjI0LCA5LCAxMywgMjA4LCA1NSwgMjA3LCA5LCA5LCAxMywgMjA4LCA1NSwgMjAwLCA0NiwgOSwgMTMsIAorICAgIDIwOCwgNTUsIDIyNywgODYsIDksIDEzLCAyMDgsIDU1LCAyMjIsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjE4LCAyMjcsIDksIAorICAgIDEzLCAyMDgsIDU1LCAyMTEsIDE4NiwgOSwgMTMsIDIwOCwgNTUsIDI1MSwgMTcxLCA5LCAxMywgMjA4LCA1NSwgMjM3LCAKKyAgICAxMzQsIDksIDEzLCAyMDgsIDU1LCAyMTIsIDU2LCA5LCAxMywgMjA4LCA1NSwgMjE0LCAxNTIsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyMTAsIDYxLCA5LCAxMywgMjA4LCA1NSwgMjA2LCAxODMsIDksIDEzLCAyMDgsIDU1LCAyMDYsIDEwMiwgOSwgMTMsIDIwOCwgCisgICAgNTUsIDIyNiwgMjAzLCA5LCAxMywgMjA4LCA1NSwgMjQyLCA1MiwgOSwgMTMsIDIwOCwgNTUsIDE5OSwgMTA4LCA5LCAxMywgCisgICAgMjA4LCA1NSwgMjM1LCAxOTQsIDksIDEzLCAyMDgsIDU1LCAyNDAsIDE4MSwgMjQ4LCAyNDAsIDksIDEzLCAyMDgsIDU1LCAKKyAgICAyNDAsIDE4MSwgMjM3LCAxMzQsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE0MiwgOSwgMTMsIDIyNCwgNzMsIDI0OCwgMjQwLCAKKyAgICA5LCAxMywgMjI0LCA3MywgMjI3LCAyMjQsIDksIDEzLCAyMjQsIDczLCAyNDIsIDI5LCA5LCAxMywgMjI0LCA3MywgMjM0LCAKKyAgICAxMTUsIDksIDEzLCAyMjQsIDczLCAyMDEsIDcyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDUsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyMzQsIDIyNCwgOSwgMTMsIDIyNCwgNzMsIDIwNywgOSwgOSwgMTMsIDIyNCwgNzMsIDIwMCwgNDYsIDksIDEzLCAyMjQsIAorICAgIDczLCAyMjUsIDkxLCA5LCAxMywgMjI0LCA3MywgMjIyLCA2MSwgOSwgMTMsIDIyNCwgNzMsIDIxOCwgMjI3LCA5LCAxMywgCisgICAgMjI0LCA3MywgMjExLCAxODYsIDksIDEzLCAyMjQsIDczLCAyNTEsIDE3MSwgOSwgMTMsIDIyNCwgNzMsIDIzNywgMTM0LCA5LCAKKyAgICAxMywgMjI0LCA3MywgMjEyLCA1NiwgOSwgMTMsIDIyNCwgNzMsIDIxNCwgMTUyLCA5LCAxMywgMjI0LCA3MywgMjEzLCAxNTQsIAorICAgIDksIDEzLCAyMjQsIDczLCAyMTAsIDYxLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxODMsIDksIDEzLCAyMjQsIDczLCAyMDYsIAorICAgIDEwMiwgOSwgMTMsIDIyNCwgNzMsIDIyNiwgMjAzLCA5LCAxMywgMjI0LCA3MywgMjA2LCAxMTQsIDksIDEzLCAyMjQsIDczLCAKKyAgICAyNDIsIDUyLCA5LCAxMywgMjI0LCA3MywgMTk5LCAxMDgsIDksIDEzLCAyMjQsIDczLCAyMzUsIDE5NCwgOSwgMTMsIDE3NSwgCisgICAgMjQ4LCAyNDAsIDksIDEzLCAxNzUsIDIyNywgMjI0LCA5LCAxMywgMTc1LCAyNDIsIDI5LCA5LCAxMywgMTc1LCAyMDEsIDcyLCAKKyAgICA5LCAxMywgMTc1LCAxOTksIDEwNSwgOSwgMTMsIDE3NSwgMjM0LCAyMjQsIDksIDEzLCAxNzUsIDIwNywgOSwgOSwgMTMsIAorICAgIDE3NSwgMjAwLCA0NiwgOSwgMTMsIDE3NSwgMjI1LCA5MSwgOSwgMTMsIDE3NSwgMjIyLCA2MSwgOSwgMTMsIDE3NSwgMjE4LCAKKyAgICAyMjcsIDksIDEzLCAxNzUsIDIxMSwgMTg2LCA5LCAxMywgMTc1LCAyNTEsIDE3MSwgOSwgMTMsIDE3NSwgMjM3LCAxMzQsIDksIAorICAgIDEzLCAxNzUsIDIxMiwgNTYsIDksIDEzLCAxNzUsIDIxNCwgMTUyLCA5LCAxMywgMTc1LCAyMTMsIDE1NCwgOSwgMTMsIDE3NSwgCisgICAgMjEwLCA2MSwgOSwgMTMsIDE3NSwgMjA2LCAxODMsIDksIDEzLCAxNzUsIDIwNiwgMTAyLCA5LCAxMywgMTc1LCAyMjYsIAorICAgIDIwMywgOSwgMTMsIDE3NSwgMjA2LCAxMTQsIDksIDEzLCAxNzUsIDI0MiwgNTIsIDksIDEzLCAxNzUsIDE5OSwgMTA4LCA5LCAKKyAgICAxMywgMTc1LCAyMzUsIDE5NCwgOSwgMTMsIDIxNywgNDQsIDg0LCAzLCAxNTUsIDMsIDIwNiwgMjIzLCA5LCAxMywgMjE3LCAKKyAgICA0NCwgMTU1LCAzLCAyNDIsIDI5LCAyMjIsIDIwMCwgMTAzLCAyMzksIDE0LCAyMDEsIDE2LCAyMjIsIDIwMCwgMTAzLCAyMDgsIAorICAgIDI1NCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA0OCwgMjAxLCAxNiwgMjIyLCAyMDAsIDEwMywgMTU3LCAyMDEsIAorICAgIDE2LCAyMjIsIDIwMCwgMTAzLCAyMTMsIDE3MCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDIzNSwgNjQsIDIzOSwgMTU4LCAKKyAgICAyMjIsIDIwMCwgMTAzLCA2NCwgMjM5LCAxNTgsIDIyMiwgMjAwLCAxMDMsIDExMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDEyMCwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIAorICAgIDIzNiwgMjI5LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjM3LCA2MSwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ3LCAxOSwgMjIyLCAyMDAsIDEwMywgMjEwLCAxMzYsIDc2LCAyNDcsIDE5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzgsIDIzMiwgNzYsIDI0NywgMTksIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCA3NiwgMjQ3LCAxOSwgCisgICAgMjIyLCAyMDAsIDEwMywgMTEyLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ5LCA4OSwgMjIyLCAKKyAgICAyMDAsIDEwMywgMTI2LCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjM2LCAyMjksIDc2LCAyNDksIDg5LCAyMjIsIAorICAgIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ5LCA4OSwgMjIyLCAyMDAsIDEwMywgMjA5LCAxMDYsIDc2LCAyNDksIDg5LCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMTAsIDEzNiwgNzYsIDI0OSwgODksIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ5LCAKKyAgICA4OSwgMjIyLCAyMDAsIDEwMywgMjE5LCAxMTQsIDc2LCAyNDksIDg5LCAyMjIsIDIwMCwgMTAzLCAxMTIsIDc2LCAyNDYsIAorICAgIDE1MiwgMjIyLCAyMDAsIDEwMywgMTIwLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDEyNiwgNzYsIDI0NiwgMTUyLCAKKyAgICAyMjIsIDIwMCwgMTAzLCAyMzYsIDIyOSwgNzYsIDI0NiwgMTUyLCAyMjIsIDIwMCwgMTAzLCAyMzcsIDYxLCA3NiwgMjQ2LCAKKyAgICAxNTIsIDIyMiwgMjAwLCAxMDMsIDIwOSwgMTA2LCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxMCwgMTM2LCA3NiwgCisgICAgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIzOCwgMjMyLCA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxOSwgMTE0LCAKKyAgICA3NiwgMjQ2LCAxNTIsIDIyMiwgMjAwLCAxMDMsIDIxNSwgMTE2LCAyMjIsIDIwMCwgMTAzLCAyMTcsIDMxLCAyMjIsIDIwMCwgCisgICAgMTAzLCAyNDksIDkwLCAyMjIsIDIwMCwgMTAzLCAyNDYsIDE5MywgMjIyLCAyMDAsIDEwMywgMjA4LCAxOTksIDIyMiwgMjAwLCAKKyAgICAxMDMsIDIwNywgMjMwLCAyMjIsIDIwMCwgMTAzLCAyNTAsIDEyNiwgMjIyLCAyMDAsIDEwMywgMjAxLCA3LCAyMjIsIDIwMCwgCisgICAgMTAzLCAyMjcsIDE1OSwgMjIyLCAyMDAsIDEwMywgMjQ5LCAxMjksIDE2NiwgMTAzLCAyMzMsIDE3NywgMjQ5LCAxMjksIAorICAgIDE2NiwgMTAzLCAyMzMsIDE3NSwgMTY2LCAxMDMsIDIzMywgMTc0LCAxNjYsIDEwMywgMjMzLCAxNzMsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE3MiwgMTY2LCAxMDMsIDIzMywgMTcxLCAxNjYsIDEwMywgMjMzLCAxNzAsIDE2NiwgMTAzLCAyMzMsIDE2OSwgCisgICAgMTY2LCAxMDMsIDIzMywgMTY4LCAxNjYsIDEwMywgMjMzLCAxNjcsIDE2NiwgMTAzLCAyMzMsIDE2NiwgMTY2LCAxMDMsIAorICAgIDIzMywgMTY1LCAxNjYsIDEwMywgMjMzLCAxNjQsIDE2NiwgMTAzLCAyMzMsIDE2MywgMTY2LCAxMDMsIDIzMywgMTYyLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNjEsIDE2NiwgMTAzLCAyMzMsIDE2MCwgMTY2LCAxMDMsIDIzMywgMTU5LCAxNjYsIDEwMywgCisgICAgMjMzLCAxNTgsIDE2NiwgMTAzLCAyMzMsIDE1NywgMTY2LCAxMDMsIDIzMywgMTU2LCAxNjYsIDEwMywgMjMzLCAxNTUsIAorICAgIDE2NiwgMTAzLCAyMzMsIDE1NCwgMTY2LCAxMDMsIDIzMywgMTUzLCAxNjYsIDEwMywgMjMzLCAxNTIsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDE1MSwgMTY2LCAxMDMsIDIzMywgMTUwLCAxNjYsIDEwMywgMjMzLCAxNDksIDE2NiwgMTAzLCAyMzMsIDE0OCwgCisgICAgMTY2LCAxMDMsIDIzMywgMTQ3LCAxNjYsIDEwMywgMjMzLCAxNDYsIDE2NiwgMTAzLCAyMzMsIDE0NSwgMTY2LCAxMDMsIAorICAgIDIzMywgMTQ0LCAxNjYsIDEwMywgMjMzLCAxNDMsIDE2NiwgMTAzLCAyMzMsIDE0MiwgMTY2LCAxMDMsIDIzMywgMTQxLCAKKyAgICAxNjYsIDEwMywgMjMzLCAxNDAsIDE2NiwgMTAzLCAyMzMsIDEzOSwgMTY2LCAxMDMsIDIzMywgMTM4LCAxNjYsIDEwMywgCisgICAgMjMzLCAxMzcsIDE2NiwgMTAzLCAyMzMsIDEzNiwgMTY2LCAxMDMsIDIzMywgMTM1LCAxNjYsIDEwMywgMjMzLCAxMzQsIAorICAgIDE2NiwgMTAzLCAyMzMsIDEzMywgMTY2LCAxMDMsIDIzMywgMTMyLCAxNjYsIDEwMywgMjMzLCAxMzEsIDE2NiwgMTAzLCAKKyAgICAyMzMsIDEzMCwgMTY2LCAxMDMsIDIzMywgMTI5LCAxNjYsIDEwMywgMjMzLCAxMjgsIDE2NiwgMTAzLCAyMzMsIDEyNywgCisgICAgMTY2LCAxMDMsIDgzLCAyNDksIDEyOSwgMTY2LCAxMDMsIDIwMywgNDEsIDE2NiwgMTAzLCAyMDMsIDQwLCAxNjYsIDEwMywgCisgICAgMjAzLCAzOSwgMTY2LCAxMDMsIDIwMywgMzgsIDE2NiwgMTAzLCAyMDMsIDM3LCAxNjYsIDEwMywgMjAzLCAzNiwgMTY2LCAKKyAgICAxMDMsIDIwMywgMzUsIDE2NiwgMTAzLCAyMDMsIDM0LCAxNjYsIDEwMywgMjAzLCAzMywgMTY2LCAxMDMsIDIwMywgMzIsIAorICAgIDE2NiwgMTAzLCAyMDMsIDMxLCAxNjYsIDEwMywgMjAzLCAzMCwgMTY2LCAxMDMsIDIwMywgMjksIDE2NiwgMTAzLCAyMDMsIAorICAgIDI4LCAxNjYsIDEwMywgMjAzLCAyNywgMTY2LCAxMDMsIDIwMywgMjYsIDE2NiwgMTAzLCAyMDMsIDI1LCAxNjYsIDEwMywgCisgICAgMjAzLCAyNCwgMTY2LCAxMDMsIDIwMywgMjMsIDE2NiwgMTAzLCAyMDMsIDIyLCAxNjYsIDEwMywgMjAzLCAyMSwgMTY2LCAKKyAgICAxMDMsIDIwMywgMjAsIDE2NiwgMTAzLCAyMDMsIDE5LCAxNjYsIDEwMywgMjAzLCAxOCwgMTY2LCAxMDMsIDIwMywgMTcsIAorICAgIDE2NiwgMTAzLCAyMDMsIDE2LCAxNjYsIDEwMywgMjAzLCAxNSwgMTY2LCAxMDMsIDIwMywgMTQsIDE2NiwgMTAzLCAyMDMsIAorICAgIDEzLCAxNjYsIDEwMywgMjAzLCAxMiwgMTY2LCAxMDMsIDIwMywgMTEsIDE2NiwgMTAzLCAyMDMsIDEwLCAxNjYsIDEwMywgCisgICAgMjAzLCA5LCAxNjYsIDEwMywgMjAzLCA4LCAxNjYsIDEwMywgMjAzLCA3LCAxNjYsIDEwMywgMjAzLCA2LCAxNjYsIDEwMywgCisgICAgMjAzLCA1LCAxNjYsIDEwMywgMjAzLCA0LCAxNjYsIDEwMywgMjAzLCAzLCAxNjYsIDEwMywgMjAzLCAyLCAxNjYsIDEwMywgCisgICAgMjAzLCAxLCAxNjYsIDEwMywgMjAzLCAwLCAxNjYsIDEwMywgMjAyLCAyNTUsIDE2NiwgMTAzLCAyMDIsIDI1NCwgMTY2LCAKKyAgICAxMDMsIDIwMiwgMjUzLCAxNjYsIDEwMywgMjAyLCAyNTIsIDE2NiwgMTAzLCAyMDIsIDI1MSwgMTY2LCAxMDMsIDIwMiwgCisgICAgMjUwLCAxNjYsIDEwMywgMjAyLCAyNDksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjQ5LCAxMjksIDIxNSwgMTI1LCAyNDcsIAorICAgIDEzNCwgMjUxLCAyNDUsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyMDgsIDI0MSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDksIAorICAgIDEwNiwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTksIDExNCwgNzYsIDIwOCwgCisgICAgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI3LCAKKyAgICAyNDYsIDc2LCAyMDgsIDI0MSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgMjA4LCAyNDEsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIwOCwgMjQxLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgMjA4LCAKKyAgICAyNDEsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIAorICAgIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMzYsIDIyOSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyMzQsIDEyNSwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDksIDEwNiwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMTksIDExNCwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjM0LCAxMjUsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjI3LCAyNDYsIDc2LCAyMzQsIDEyNSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjYsIDk0LCA3NiwgCisgICAgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCA4MSwgNzYsIDIzNCwgMTI1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIyNiwgMTQ1LCA3NiwgMjM0LCAxMjUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjEzLCAxNzAsIDIyNywgMTU5LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDI1MSwgMjQ1LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAxMjAsIDc2LCAyNDEsIDYzLCAKKyAgICAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyNiwgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjM2LCAyMjksIDc2LCAKKyAgICAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIzNywgNjEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwOSwgMTA2LCA3NiwgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMTAsIDEzNiwgNzYsIDI0MSwgNjMsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjM4LCAyMzIsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxOSwgMTE0LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDYsIDE2NywgNzYsIDI0MSwgNjMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjI3LCAyNDYsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgOTQsIDc2LCAyNDEsIDYzLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIxNCwgODEsIDc2LCAyNDEsIDYzLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIyNiwgMTQ1LCA3NiwgCisgICAgMjQxLCA2MywgMjE1LCAxMjUsIDI0NywgMTM0LCA2MywgMjI3LCAxNTksIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjUxLCAyNDUsIAorICAgIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDEyMCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMTI2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzYsIDIyOSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAKKyAgICAyNDcsIDEzNCwgMjM3LCA2MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA5LCAxMDYsIDc2LCAyNDYsIAorICAgIDk1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIxMCwgMTM2LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzgsIAorICAgIDIzMiwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE5LCAxMTQsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDIwNiwgMTY3LCA3NiwgMjQ2LCA5NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMjcsIDI0NiwgNzYsIDI0NiwgCisgICAgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCA5NCwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjE0LCAKKyAgICA4MSwgNzYsIDI0NiwgOTUsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjI2LCAxNDUsIDc2LCAyNDYsIDk1LCAyMTUsIDEyNSwgCisgICAgMjQ3LCAxMzQsIDY0LCAyMjcsIDE1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMzcsIDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA2MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ5LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDYsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA0NSwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ0LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDMsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA0MiwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQxLCAyMTUsIAorICAgIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNDAsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1OSwgMjE1LCAxMjUsIDI0NywgMTM0LCAKKyAgICAyMDUsIDU4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTcsIDIxNSwgMTI1LCAyNDcsIDEzNCwgMjA1LCA1NiwgMjE1LCAKKyAgICAxMjUsIDI0NywgMTM0LCAyMDUsIDU1LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTQsIDIxNSwgMTI1LCAyNDcsIDEzNCwgCisgICAgMjA1LCA1MywgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDUyLCAyMTUsIDEyNSwgMjQ3LCAxMzQsIDIwNSwgNTEsIDIxNSwgCisgICAgMTI1LCAyNDcsIDEzNCwgMjA1LCA1MCwgMjE1LCAxMjUsIDI0NywgMTM0LCAyMDUsIDQ4LCAyMTUsIDEyNSwgMjQ3LCAxMzQsIAorICAgIDIwNSwgNDcsIDE3LCAxOTksIDgyLCAyMzYsIDE4MywgMjA4LCA3NiwgMTcsIDE5OSwgODIsIDI0NiwgNzAsIDE3LCAxMTIsIAorICAgIDI0NiwgNzAsIDE3LCAxMjAsIDI0NiwgNzAsIDE3LCAxMjYsIDI0NiwgNzAsIDE3LCAyMzYsIDIyOSwgMjQ2LCA3MCwgMTcsIAorICAgIDIzNywgNjEsIDI0NiwgNzAsIDE3LCAyMDksIDEwNiwgMjQ2LCA3MCwgMTcsIDIxMCwgMTM2LCAyNDYsIDcwLCAxNywgMjM4LCAKKyAgICAyMzIsIDI0NiwgNzAsIDE3LCAyMTksIDExNCwgMjQ2LCA3MCwgMjQxLCAxNywgNDQsIDQzLCAxNywgMTk5LCA4MSwgMjQxLCAKKyAgICAxNywgMTg5LCA0NCwgNDMsIDE3LCAxOTksIDgxLCAxMDYsIDgsIDYsIDEsIDYyLCAxMDYsIDgsIDYsIDEsIDI1MCwgMTAzLCAKKyAgICAxMDYsIDgsIDYsIDEsIDI0NywgMjIzLCAxMDYsIDgsIDYsIDEsIDI0MiwgMTUzLCAxMDYsIDgsIDYsIDEsIDcyLCAxMDYsIDgsIAorICAgIDYsIDEsIDIzOCwgNSwgMTA2LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTA2LCA4LCA2LCAxLCAyMzQsIDI0NywgMTA2LCA4LCA2LCAKKyAgICAxLCA3MCwgMTA2LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTA2LCA4LCA2LCAxLCAyMjcsIDExOCwgMTA2LCA4LCA2LCAxLCAxNTYsIAorICAgIDEwNiwgOCwgNiwgMSwgMjIzLCAyNDMsIDEwNiwgOCwgNiwgMSwgMjIwLCAyMTQsIDEwNiwgOCwgNiwgMSwgNzQsIDEwNiwgOCwgCisgICAgNiwgMSwgMjE2LCAyMjYsIDEwNiwgOCwgNiwgMSwgMjE0LCAxNjcsIDEwNiwgOCwgNiwgMSwgMTQ2LCAxMDYsIDgsIDYsIDEsIAorICAgIDIxMiwgMTIyLCAxMDYsIDgsIDYsIDEsIDIwNywgODMsIDEwNiwgOCwgNiwgMSwgNjYsIDEwNiwgOCwgNiwgMSwgMjAzLCAKKyAgICAxNjgsIDEwNiwgOCwgNiwgMSwgMjAxLCAxNDcsIDEwNiwgOCwgNiwgMSwgMjAwLCAxOTUsIDEwNiwgOCwgNiwgMSwgMjAwLCAKKyAgICAxMjMsIDEwNiwgOCwgNiwgMSwgMTk5LCAxNTcsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMiwgNDQsIDM5LCA4LCA2LCAxLCAyNDcsIDIyMywgNDQsIDM5LCA4LCA2LCAxLCAxNDYsIDQ0LCAyNDcsIDc3LCA0NCwgCisgICAgMjAwLCAxOTcsIDk1LCA4LCA2LCAxLCA2MiwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCA5NSwgOCwgNiwgMSwgMjQ3LCAyMjMsIAorICAgIDk1LCA4LCA2LCAxLCAyNDIsIDE1MywgOTUsIDgsIDYsIDEsIDcyLCA5NSwgOCwgNiwgMSwgMjM4LCA1LCA5NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgOTUsIDgsIDYsIDEsIDcwLCA5NSwgOCwgNiwgMSwgMjI3LCAyNTEsIAorICAgIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgOTUsIDgsIDYsIDEsIDE1NiwgOTUsIDgsIDYsIDEsIDIyMywgMjQzLCA5NSwgOCwgNiwgCisgICAgMSwgMjIwLCAyMTQsIDk1LCA4LCA2LCAxLCA3NCwgOTUsIDgsIDYsIDEsIDIxNiwgMjI2LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDk1LCA4LCA2LCAxLCAxNDYsIDk1LCA4LCA2LCAxLCAyMTIsIDEyMiwgOTUsIDgsIDYsIDEsIDIwNywgODMsIDk1LCAKKyAgICA4LCA2LCAxLCA2NiwgOTUsIDgsIDYsIDEsIDIwMywgMTY4LCA5NSwgOCwgNiwgMSwgMjAxLCAxNDcsIDk1LCA4LCA2LCAxLCAKKyAgICAyMDAsIDE5NSwgOTUsIDgsIDYsIDEsIDIwMCwgMTIzLCA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDk1LCAyMzMsIDY5LCA5NSwgCisgICAgMjIwLCAyMzgsIDk1LCAyMTEsIDIwNCwgOTUsIDIwOCwgMTgyLCA5NSwgMjE1LCA0NSwgOTUsIDIwMSwgNjUsIDE4OSwgNDQsIAorICAgIDgsIDYsIDEsIDYyLCAxODksIDQ0LCA4LCA2LCAxLCAyNTAsIDEwMywgMTg5LCA0NCwgOCwgNiwgMSwgMjQ3LCAyMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDI0MiwgMTUzLCAxODksIDQ0LCA4LCA2LCAxLCA3MiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM4LCA1LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAyMzYsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjM0LCAyNDcsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDcwLCAxODksIDQ0LCA4LCA2LCAxLCAyMjcsIDI1MSwgMTg5LCA0NCwgOCwgNiwgMSwgMjI3LCAxMTgsIDE4OSwgNDQsIDgsIAorICAgIDYsIDEsIDE1NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjIzLCAyNDMsIDE4OSwgNDQsIDgsIDYsIDEsIDIyMCwgMjE0LCAxODksIAorICAgIDQ0LCA4LCA2LCAxLCA3NCwgMTg5LCA0NCwgOCwgNiwgMSwgMjE2LCAyMjYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxNCwgMTY3LCAKKyAgICAxODksIDQ0LCA4LCA2LCAxLCAxNDYsIDE4OSwgNDQsIDgsIDYsIDEsIDIxMiwgMTIyLCAxODksIDQ0LCA4LCA2LCAxLCAyMDcsIAorICAgIDgzLCAxODksIDQ0LCA4LCA2LCAxLCA2NiwgMTg5LCA0NCwgOCwgNiwgMSwgMjAzLCAxNjgsIDE4OSwgNDQsIDgsIDYsIDEsIAorICAgIDIwMSwgMTQ3LCAxODksIDQ0LCA4LCA2LCAxLCAyMDAsIDE5NSwgMTg5LCA0NCwgOCwgNiwgMSwgMjAwLCAxMjMsIDE4OSwgCisgICAgNDQsIDgsIDYsIDEsIDE5OSwgMTU3LCAyMTMsIDIyMCwgMjIyLCA4MiwgNTQsIDIxMywgMjIwLCAyMjIsIDc5LCA1NCwgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgNjIsIDE4OSwgOTUsIDgsIDYsIDEsIDI1MCwgMTAzLCAxODksIDk1LCA4LCA2LCAxLCAyNDcsIDIyMywgCisgICAgMTg5LCA5NSwgOCwgNiwgMSwgMjQyLCAxNTMsIDE4OSwgOTUsIDgsIDYsIDEsIDcyLCAxODksIDk1LCA4LCA2LCAxLCAyMzgsIAorICAgIDUsIDE4OSwgOTUsIDgsIDYsIDEsIDIzNiwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMzQsIDI0NywgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgNzAsIDE4OSwgOTUsIDgsIDYsIDEsIDIyNywgMjUxLCAxODksIDk1LCA4LCA2LCAxLCAyMjcsIDExOCwgMTg5LCA5NSwgCisgICAgOCwgNiwgMSwgMTU2LCAxODksIDk1LCA4LCA2LCAxLCAyMjMsIDI0MywgMTg5LCA5NSwgOCwgNiwgMSwgMjIwLCAyMTQsIAorICAgIDE4OSwgOTUsIDgsIDYsIDEsIDc0LCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgOCwgNiwgMSwgMjE0LCAKKyAgICAxNjcsIDE4OSwgOTUsIDgsIDYsIDEsIDE0NiwgMTg5LCA5NSwgOCwgNiwgMSwgMjEyLCAxMjIsIDE4OSwgOTUsIDgsIDYsIDEsIAorICAgIDIwNywgODMsIDE4OSwgOTUsIDgsIDYsIDEsIDY2LCAxODksIDk1LCA4LCA2LCAxLCAyMDMsIDE2OCwgMTg5LCA5NSwgOCwgNiwgCisgICAgMSwgMjAxLCAxNDcsIDE4OSwgOTUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxODksIDk1LCA4LCA2LCAxLCAyMDAsIDEyMywgMTg5LCAKKyAgICA5NSwgOCwgNiwgMSwgMTk5LCAxNTcsIDI0MiwgMjMyLCAxODksIDk1LCA4LCA2LCAxLCAyMTYsIDIyNiwgMTg5LCA5NSwgCisgICAgMjMyLCAyMzMsIDE4OSwgOTUsIDE3MiwgMTg5LCA5NSwgMjEyLCA2NCwgMTg5LCA5NSwgMjUyLCA4OSwgMTg5LCA5NSwgMjAxLCAKKyAgICA2NSwgNTIsIDI0MCwgMjMwLCA5NSwgMjQ2LCAxMzYsIDk1LCAyNDMsIDI2LCA5NSwgMjM2LCAyMTAsIDk1LCAyMzIsIDIyNCwgCisgICAgOTUsIDIyMCwgNywgOTUsIDIxOSwgMjU1LCA5NSwgMjE3LCA5OCwgOTUsIDIwOSwgNSwgOTUsIDExNSwgMywgMjM4LCA0MywgCisgICAgODEsIDk1LCAyMDIsIDE2OSwgOTUsIDEyNiwgMjQyLCAxNTMsIDk1LCAyMTEsIDE5NiwgMjExLCAyMDksIDk1LCAxMjAsIAorICAgIDIyNywgMTE4LCA5NSwgMjM2LCAyMjksIDIyNywgMTE4LCA5NSwgMjM4LCAyMzIsIDIyNywgMTE4LCA5NSwgMjM3LCA2MSwgCisgICAgMjE1LCAxMDAsIDEwMiwgOTUsIDIxMCwgMTM2LCAyMTUsIDEwMCwgMTAyLCA5NSwgMjA0LCAxNDksIDIxNSwgMTAwLCAxMDUsIAorICAgIDk1LCAyMDksIDkzLCAyMTYsIDIyNiwgOTUsIDExMiwgMjMzLCA4MywgMjA0LCAxNjAsIDIxNiwgMjI2LCA5NSwgOCwgNCwgMSwgCisgICAgMjQyLCAxNTMsIDk1LCAyMzQsIDE0MiwgOTUsIDIzNCwgMTQxLCA5NSwgMjM0LCA3NCwgOTUsIDIyNCwgNjYsIDk1LCAyMDksIAorICAgIDIwMSwgOTUsIDIwNCwgMjQsIDk1LCAyMDIsIDE5MCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNjIsIDIxMywgMTYyLCAKKyAgICAyMjgsIDEwMCwgMTYsIDEsIDI1MCwgMTAzLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyNDcsIDIyMywgMjEzLCAxNjIsIAorICAgIDIyOCwgMTAwLCAxNiwgMSwgMjQyLCAxNTMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDcyLCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzgsIDUsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIzNiwgMTU2LCAyMTMsIDE2MiwgMjI4LCAKKyAgICAxMDAsIDE2LCAxLCAyMzQsIDI0NywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgNzAsIDIxMywgMTYyLCAyMjgsIDEwMCwgCisgICAgMTYsIDEsIDIyNywgMjUxLCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjcsIDExOCwgMjEzLCAxNjIsIDIyOCwgMTAwLCAKKyAgICAxNiwgMSwgMTU2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMjMsIDI0MywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgCisgICAgMSwgMjIwLCAyMTQsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDc0LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAKKyAgICAyMTYsIDIyNiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjE0LCAxNjcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIAorICAgIDE0NiwgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjEyLCAxMjIsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwNywgCisgICAgODMsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDY2LCAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDMsIDE2OCwgCisgICAgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMjAxLCAxNDcsIDIxMywgMTYyLCAyMjgsIDEwMCwgMTYsIDEsIDIwMCwgMTk1LCAKKyAgICAyMTMsIDE2MiwgMjI4LCAxMDAsIDE2LCAxLCAyMDAsIDEyMywgMjEzLCAxNjIsIDIyOCwgMTAwLCAxNiwgMSwgMTk5LCAxNTcsIAorICAgIDUyLCAxNzcsIDIzMywgMjAxLCA5NSwgNjksIDIyNiwgNzYsIDk1LCA2OSwgMjEyLCA2NCwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjksIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTczLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MSwgOTUsIDY5LCAKKyAgICAyNDEsIDE3NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc1LCA5NSwgMTIsIAorICAgIDIwMywgMjQ0LCAyMzAsIDE0NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzQsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgCisgICAgMTg3LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTQsIDk1LCAxMiwgMjAzLCAKKyAgICAyNDQsIDIzMCwgMTYzLCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzAsIAorICAgIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTg2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MiwgOTUsIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxODUsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ4LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE1MywgOTUsIDEyLCAKKyAgICAyMDMsIDI0NCwgMjMwLCAxNDYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTc2LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIAorICAgIDE3OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTYsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTY3LCA5NSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE2NSwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxOTEsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTkwLCAKKyAgICA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE0NCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNzEsIDk1LCAxMiwgMjAzLCAyNDQsIAorICAgIDIzMCwgMTg5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjYsIDk1LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTQ1LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2OCwgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAKKyAgICAxNTAsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTQ5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE3OSwgOTUsIDEyLCAyMDMsIAorICAgIDI0NCwgMjMwLCAxNTcsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTU5LCA5NSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE2MCwgCisgICAgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNTIsIDk1LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTgzLCA5NSwgMTIsIDIwMywgMjQ0LCAKKyAgICAyMzAsIDE3NywgOTUsIDEyLCAyMDMsIDI0NCwgMjMwLCAxNDMsIDIwNSwgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgCisgICAgMjAzLCAyNDQsIDIzMCwgMTU4LCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE5MCwgCisgICAgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxODgsIDIwNSwgMTQ2LCAyMTAsIDU1LCAKKyAgICAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTcyLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCA2OSwgMTIsIDIwMywgCisgICAgMjQ0LCAyMzAsIDE1NSwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgMjMwLCAxNjgsIDIwNSwgCisgICAgMTQ2LCAyMTAsIDU1LCAyNDgsIDY5LCAxMiwgMjAzLCAyNDQsIDIzMCwgMTUxLCAyMDUsIDE0NiwgMjEwLCA1NSwgMjQ4LCAKKyAgICA2OSwgMTIsIDIwMywgMjQ0LCAyMzAsIDE4MiwgMjA1LCAxNDYsIDIxMCwgNTUsIDI0OCwgNjksIDEyLCAyMDMsIDI0NCwgCisgICAgMjMwLCAxNjQsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyMjMsIDQ0LCAxOTgsIDE5OCwgMjUxLCAyNDksIDI0MiwgMTY0LCAyMzcsIAorICAgIDExLCAyNDYsIDExMCwgMjA0LCA5LCAyMTksIDEzMCwgMywgMjA4LCAxMDYsIDIwNywgMjIzLCAxMTksIDIyMSwgNjIsIDIwNywgCisgICAgMjIyLCAyNDYsIDE0MCwgMjUwLCAxNTYsIDIzOSwgMTExLCAyMDcsIDIyMSwgMTE5LCAyNDgsIDI1LCAyMTMsIDIyMSwgMjQ4LCAKKyAgICA1MSwgMjUwLCAxNTYsIDIxOSwgMTI5LCAyMDEsIDgzLCAyMDEsIDc3LCAyMDIsIDE4NCwgMjIxLCAxNzIsIDIwMSwgNjcsIAorICAgIDIzOSwgMTgsIDIzNSwgMTI0LCAyMzgsIDU5LCAyMzksIDE4LCAyMzUsIDEyNCwgMjUxLCA5MiwgMjM5LCAxOCwgMjM1LCAKKyAgICAxMjQsIDI1MCwgMTc0LCAyMzUsIDEyNCwgMywgMjIyLCAzMSwgMjIwLCA4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjQyLCAKKyAgICAyNDQsIDIyMSwgODIsIDk5LCAyMzcsIDczLCAyMTQsIDg4LCAyMjEsIDgyLCA5OSwgMjAxLCA2OSwgMjM1LCAxNTcsIDIyMSwgCisgICAgODIsIDk5LCAyMzYsIDE4MywgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDIzNSwgMTU3LCAyMjEsIDgyLCA5OSwgMjI1LCA2NCwgCisgICAgMjE0LCA4OCwgMjIxLCA4MiwgOTksIDIwMSwgOTcsIDI0MiwgMjQ0LCAyMjEsIDgyLCA5OSwgMjQyLCAyNDQsIDIyMSwgODEsIAorICAgIDIyMCwgOCwgMjIxLCA4MiwgMywgMjM3LCAxODksIDIzNywgNzMsIDIxNCwgODgsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMjUsIDY0LCAyMTQsIDg4LCAyMjEsIDgyLCAzLCAyMzcsIDE4OSwgMjM2LCAxODMsIDIyMSwgODIsIDMsIDIzNywgMTg5LCAKKyAgICAyMDcsIDIyOSwgMywgMjM3LCAxODksIDIzNSwgMTIxLCAyMDgsIDEwOSwgMjA5LCAyNTUsIDIwOCwgMTA5LCAyMDYsIDk0LCAKKyAgICA2MywgMjM5LCAxNDUsIDY0LCAyMDcsIDIyOCwgNjQsIDIwNywgMjI5LCAzLCA0LCAyNDYsIDEwMSwgNjQsIDIwNywgMjI5LCAKKyAgICAyNDgsIDIzNywgMjQ2LCAxMDEsIDY0LCAyMDcsIDIyOSwgMjQ4LCAyMzcsIDI0NiwgMTAyLCAzLCAyMTMsIDIyMiwgMjQ2LCAKKyAgICAxMDIsIDMsIDIxMywgMjIyLCAyNDYsIDEwMiwgMywgMjA5LCAzNSwgMjQ2LCAxMDIsIDMsIDIyNCwgMTkzLCAyNDYsIDEwMiwgCisgICAgMywgMjA1LCAxNTAsIDIzNywgMTIsIDIwMSwgMTcsIDI0OCwgMTI4LCAyMzcsIDE4OSwgMjMzLCAxMTgsIDI0MCwgMjAwLCAKKyAgICAyMDcsIDE2LCAyNDgsIDEsIDI0NiwgMjQyLCAyMTEsIDE4OCwgMjM4LCA1MywgMjA1LCAxMDgsIDI0MSwgMTY5LCAyMDUsIAorICAgIDEwOCwgMjE2LCAxNzcsIDIwNSwgMTA4LCAyNDcsIDE4MywgMjMzLCAxMTgsIDIxNiwgMjksIDIwNCwgMjA1LCAyNDYsIDI0NiwgCisgICAgMjQ4LCAxMzEsIDIxMiwgMjMyLCAyMzQsIDczLCAyMDcsIDIyNiwgMjQ4LCAxMzEsIDIzOSwgMjIsIDc2LCAyMjIsIDE4OSwgCisgICAgMjM5LCAyMiwgNzYsIDIxMywgODMsIDIzNCwgMTAwLCAyMzYsIDIyOSwgMjI1LCAzNiwgMjQ2LCAxMDAsIDIyMiwgMTYyLCAKKyAgICAyMjUsIDM1LCAyMzcsIDE3MiwgMjI1LCAzNSwgMjI1LCAzNiwgMjM3LCAxOSwgMjI4LCAxMTgsIDIwMSwgMTYsIDIyMCwgCisgICAgMjQ3LCAyMDUsIDE3OCwgMjUwLCAxMzgsIDIzNSwgODEsIDIyMiwgNDksIDIwMSwgODEsIDIwNiwgMjM5LCAyMjUsIDUsIAorICAgIDI0OSwgODUsIDIxNSwgMTU3LCAyMTMsIDE3MCwgMjUxLCAxMCwgMjM1LCA2NCwgMjUxLCAxMCwgMjE2LCA2NywgMjE2LCA3MCwgCisgICAgMjQ2LCAyNDcsIDIwOCwgNjAsIDIzNCwgMjA4LCAyMDksIDY4LCA3NiwgMjE1LCAxMzcsIDIyMiwgNzIsIDIxNywgNzksIAorICAgIDI0OCwgMTEyLCAyMTUsIDU3LCAyMjUsIDE2LCAyMTMsIDg0LCAyNDIsIDI1MCwgMjEzLCA4NCwgMjQ5LCA5NywgMjQzLCAyOSwgCisgICAgMjEzLCA4MywgMjQyLCAxOTIsIDI2LCAyMTMsIDgzLCAyMDgsIDk0LCAyNDgsIDgyLCAyMDgsIDI0MCwgMjQ4LCA2MiwgMjM2LCAKKyAgICAyMDksIDIzNiwgMjA1LCAyMTIsIDI1MywgMjA3LCAxNzksIDIxNSwgNTksIDI0MiwgNywgMjE3LCAxMjMsIDIwNywgMTk3LCAKKyAgICAyMzYsIDIwNiwgMjA5LCAyMjYsIDIzNywgNzIsIDI0NywgMTc3LCAzLCAyMDcsIDE3MiwgMjQxLCAxMTIsIDIwOSwgMjMsIAorICAgIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjEwLCA3MywgMjMyLCAyMzEsIDIzMiwgMjMyLCAyNDIsIDI0OCwgMjM5LCAxNzAsIDI0MywgCisgICAgMjgsIDI0NiwgMjA4LCAxNDgsIDI0NywgMTQ4LCAyMjQsIDkzLCAyNDIsIDE4MywgMjMzLCAxOTAsIDIxNSwgNjEsIDIwOSwgCisgICAgMjM5LCAyNDgsIDIxOCwgMjQ4LCA3OCwgMjE1LCA2MiwgNzYsIDIzNywgMSwgMjQzLCAyNywgMjM2LCAyNDYsIDI2LCAyMjYsIAorICAgIDk1LCAyMDYsIDE5OCwgMjAxLCAzLCAyMzQsIDE3NywgMjEyLCA0MSwgMjQ4LCA5NSwgMjYsIDI0MiwgMjAyLCAyMDEsIDEzLCAKKyAgICAyMzUsIDEyOCwgMjQ2LCA4OCwgMjM1LCAxMjgsIDIwNSwgNjMsIDIzOSwgMTUxLCAyNDgsIDI0OCwgMjIxLCAzMCwgMjQ2LCAKKyAgICAxMTcsIDI0OCwgMjQ4LCAyMjEsIDI5LCAyNDksIDEzMiwgMjQ4LCA5NCwgMjM2LCAyNDYsIDI2LCAyMjYsIDk2LCAzLCAyMTUsIAorICAgIDEyNiwgMjQ4LCA5NSwgMywgMjE1LCA3NCwgMjQzLCAxNywgMjE1LCA3NiwgMjEzLCA4NSwgMjAwLCAyMjcsIDIxNSwgMjAsIAorICAgIDI0OCwgMTU5LCAyNDcsIDE3NiwgMjI3LCAyNDUsIDI0NiwgMjAwLCAyMDUsIDEwOCwgMjM3LCAxNTUsIDI0NiwgMTk5LCAKKyAgICAyMzcsIDc1LCAyMzcsIDc2LCAyMDgsIDIzOCwgMjQ5LCA5NiwgMjE2LCAxMDUsIDIxNSwgNzUsIDI0MywgNjUsIDI0OSwgOTcsIAorICAgIDIwNiwgMjQzLCAyMDUsIDEwOCwgMjQyLCAyMzIsIDIzNywgNDcsIDIxNSwgMTU4LCAyNDEsIDE2NiwgMjI3LCAyMzYsIDI0MCwgCisgICAgMTkzLCAyNDcsIDEyMywgMjA4LCA1OSwgMjAxLCAxNywgMjQ2LCAyMjQsIDIyMSwgODIsIDIwMiwgMjIxLCAyNDcsIDQyLCAKKyAgICAyMTEsIDIyMiwgMjExLCAyNDksIDIzNSwgODcsIDI0NywgMTQ0LCAyMzQsIDEyOCwgMywgMjA1LCAyMjQsIDIxNywgNzksIAorICAgIDIwNiwgMTA3LCAyMjUsIDI4LCAyNDgsIDg4LCA3NiwgMjM3LCAyMywgMjIxLCAxNzQsIDIyMiwgNjksIDIxMywgMTQyLCAKKyAgICAyMTMsIDg1LCAzMiwgMjI2LCAyMTMsIDMsIDIyNywgMjQ0LCAyMDgsIDMwLCAyMjEsIDIwOCwgMjI0LCAyMjksIDIwOSwgNjYsIAorICAgIDI0MywgMzQsIDIyNiwgOTIsIDI0OSwgNCwgMjUwLCAxODQsIDMyLCAyMTgsIDIwNCwgMjQ5LCA0LCAyNDEsIDExOCwgMzIsIAorICAgIDIxOCwgMjA0LCAyMzcsIDkwLCAyMzYsIDIxNCwgMjUxLCAyMjYsIDIwNiwgOSwgMjQ3LCAxMjQsIDIzMywgMTIwLCAyMzcsIAorICAgIDEyMSwgMjAxLCAzNywgMjEyLCAyNDMsIDI0NiwgODksIDIzNywgNjcsIDIxNSwgOTEsIDI2LCAyMzcsIDcxLCAyMjEsIDIwOCwgCisgICAgMjIxLCA0OCwgMjQ3LCAxNjIsIDI0NiwgMTU5LCAyMzQsIDEzMiwgMjUwLCAxOTMsIDIxNiwgMTgwLCAyMDUsIDE1OCwgMjM0LCAKKyAgICAxNTcsIDI0NiwgMTQ1LCAyMDYsIDE1OCwgMjA2LCAxMCwgMjQ2LCAxMzEsIDI0OCwgMTIxLCAyMTYsIDIyLCAyNTAsIDE5MSwgCisgICAgMjAyLCAyMzAsIDIzNiwgNjMsIDI0MSwgMTAsIDIzNCwgNDUsIDIwOSwgNTksIDIyMiwgMjMwLCAyNDgsIDE3MSwgMjM2LCAKKyAgICA2NCwgMjQxLCA1NiwgMjQ4LCA4MSwgMjM3LCAyNSwgMjE1LCAxMjUsIDI0NywgMTMyLCAzMiwgMjE4LCAyMDksIDIyMSwgMjEsIAorICAgIDMyLCAyMTgsIDIwNCwgMjExLCAyMzUsIDIzNSwgMzQsIDMyLCAyMjYsIDIxMiwgMjA1LCAzOSwgMjAyLCAyMTAsIDMyLCAKKyAgICAyMTEsIDIxNCwgMjEyLCAxNTUsIDIxMCwgMTIsIDMsIDIxMSwgMjUyLCAyMDYsIDE2MywgMjEzLCAyNDEsIDI2LCAyNDksIAorICAgIDk3LCAyMDksIDg1LCAyNiwgMjA5LCA4NSwgMjQ4LCAxMDUsIDI0OSwgNTksIDI2LCAyMzMsIDE4MywgMjQ2LCAyNDgsIDIzNywgCisgICAgNTMsIDIwOSwgMzQsIDIxMiwgMTU2LCAyMDcsIDIwMiwgMjA4LCAyMDUsIDIyMiwgNjksIDIwNSwgNjQsIDIzMywgMTIxLCAKKyAgICAyMTMsIDI0MiwgMjUxLCA5MywgMjM2LCAyNTQsIDIxMiwgMTY5LCAyMzYsIDI1NCwgMjA3LCAxNzQsIDIwMSwgNTMsIDIyNCwgCisgICAgMTk4LCAyMzUsIDEwNywgMjEzLCAyNDMsIDIyMSwgNjksIDIxMywgMjQzLCAyNDcsIDEzNSwgMjQyLCAyNDEsIDI0OSwgNTYsIAorICAgIDI2LCAyNDksIDk3LCAyMDIsIDE4MywgMjM3LCAxMTEsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjQ5LCA5NywgMjMyLCAKKyAgICAyMzIsIDIzMywgMjA0LCAyMDgsIDg4LCAyNiwgMjE0LCAyMTcsIDIwNywgMjMsIDIwNiwgMTYzLCAyMTYsIDE5OCwgMjYsIAorICAgIDI0OSwgOTcsIDIwOSwgMzYsIDI0NywgMTQwLCAyMjEsIDYzLCAyNDcsIDE2MCwgMjQ5LCA3LCAzLCAyMDQsIDksIDI0OCwgCisgICAgMjcsIDI0MywgNDgsIDIzMywgMTEwLCAyNDgsIDI1LCAyNDYsIDEzOSwgMjQxLCAxMjIsIDIzMywgMTEwLCAyNDgsIDI2LCAKKyAgICAyNDYsIDEyOSwgMjQ4LCAyNiwgMjQxLCAxMTQsIDI0MSwgMTE1LCAyMjgsIDE5LCAyMjAsIDExOCwgMjE2LCAxMTEsIDIwOCwgCisgICAgMTE5LCAyMzMsIDExMCwgMjQ4LCAyNiwgMjMzLCAxMTAsIDMsIDIzNiwgNDcsIDIxNywgMTE1LCAyNDgsIDI2LCAyMjcsIAorICAgIDIzNiwgMjE1LCA2NywgMjE3LCAxMTQsIDIzOCwgNTgsIDIxNSwgNjcsIDIxNywgMTE0LCAyMzMsIDExOSwgMjQ5LCA4MSwgCisgICAgMjUwLCAxMjgsIDIwNiwgMTcxLCAyMjIsIDIzMCwgMjMzLCAxMTUsIDIyNCwgNjAsIDIzMywgMTE1LCAyNDMsIDMyLCAyMDgsIAorICAgIDcyLCAyMTEsIDIyMSwgMjQxLCAxMjUsIDIwOCwgNzIsIDIzNywgMTc4LCAyMjgsIDAsIDIyNSwgNzYsIDIyNywgMjM2LCAKKyAgICAyNDcsIDExMywgMjM4LCA1OCwgMjQ3LCAxMTMsIDY0LCAyMTYsIDQxLCA2MywgMjE2LCA0MSwgMjAxLCA3NSwgNjQsIDIzNywgCisgICAgNTMsIDIwMSwgNzUsIDYzLCAyMzcsIDUzLCAyMTIsIDIzMSwgNjMsIDIxMiwgMjMxLCAyMjUsIDE2OCwgMjQ5LCAxMTUsIAorICAgIDIxMywgMjQxLCAyNiwgMjA5LCAyMDQsIDI0OCwgODYsIDI2LCA0OCwgMjUxLCA4OCwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAKKyAgICAyMDQsIDEyNiwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDEyMywgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIAorICAgIDEyMSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExOSwgMjM4LCAxODUsIDY3LCAyMzcsIDYyLCAyMDQsIDExNywgCisgICAgMjEzLCAyMDQsIDIyMSwgNjAsIDIxNiwgMjM1LCAyMDEsIDgzLCAyNDgsIDMxLCAyNDIsIDI1NSwgMjA2LCAyLCAyMjQsIAorICAgIDI0NSwgMjEzLCAyNDQsIDI0NywgMTExLCAyMzksIDE1OCwgMjQyLCAyNDAsIDIwMSwgNDAsIDIwOSwgNDMsIDIwOSwgNDEsIAorICAgIDIzMywgMTIwLCAyMTMsIDIxNiwgMjM1LCAxMTIsIDIxMCwgNTksIDIyMSwgMTAwLCAyMTIsIDIzNSwgMjQ2LCAyMzQsIDI0MCwgCisgICAgMjAwLCAyMTUsIDE2OCwgMjQ4LCAxMjIsIDIzOCwgMjAxLCAyMTcsIDEyNiwgMjA4LCAyMTgsIDIxMCwgNTQsIDI0OCwgMzAsIAorICAgIDI1MSwgNTEsIDIzMywgMTg5LCAyMjUsIDE2MSwgMjQ4LCAyNDYsIDIzNywgNzEsIDIwNSwgNjMsIDIzNywgNzEsIDI0OCwgCisgICAgMTI5LCAyMDQsIDE4MiwgMjM0LCAxNTUsIDI0NiwgMjM1LCAyNDksIDEzMiwgMjQ2LCAyMzUsIDIzNiwgMTk5LCAyNDksIAorICAgIDEzMiwgMjQ2LCAyMzUsIDI0OCwgMTYyLCAyMTYsIDQzLCAyMjYsIDg2LCAyMTUsIDgwLCAyMzksIDE0OCwgMjQ3LCAxNjQsIAorICAgIDI0OSwgMTIwLCAyNDcsIDE2NCwgMjQwLCAxOTIsIDIyMSwgNjEsIDIzNywgMTg5LCAyNDMsIDAsIDIzNywgMTg5LCAyMDYsIAorICAgIDMsIDIzNywgMTg5LCAyMTMsIDI0NSwgMjM3LCAxODksIDI0NywgMTEyLCAyMzcsIDE4OSwgMjM5LCAxNTksIDIzNywgMTg5LCAKKyAgICAyMDgsIDIwMywgMjAxLCA0MCwgMjMzLCAxMjEsIDIzNywgMTg5LCAyMjEsIDEwMSwgMjM3LCAxODksIDI0MCwgMjAxLCAyMzcsIAorICAgIDE4OSwgMjE1LCAxNjksIDIzNywgMTg5LCAyMzYsIDIwMywgMjM3LCAxODksIDIzNCwgMjA1LCAyMzcsIDE4OSwgMjAwLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyNDksIDIsIDIzNywgMTg5LCAyMTYsIDE1OSwgMjM3LCAxODksIDIxNSwgMTY5LCAyMTgsIDIxNiwgCisgICAgMjE2LCA4NSwgMjE1LCA3LCAyNDYsIDIxOSwgMjM4LCAxNSwgMjM4LCAyMiwgMjM5LCAyMSwgMjE4LCAyMTYsIDIyMSwgNTgsIAorICAgIDIwNSwgMTYzLCA2NCwgMTE1LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCAxMjcsIDIxNSwgOTYsIDI0OSwgCisgICAgMTI3LCAyMjgsIDEwMywgNjQsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDY0LCA1MSwgMjE1LCA5NiwgMjQ5LCAKKyAgICAxMjcsIDIyOCwgMTAzLCAyMzcsIDY1LCAyMzQsIDIwMCwgNTQsIDIwMSwgNzUsIDIzNCwgMjAwLCA1NCwgMjE3LCA5OSwgCisgICAgMjM0LCAyMDAsIDU0LCAyMDYsIDMzLCAxMTUsIDU0LCAyMDYsIDMzLCAxMjcsIDU0LCAyNDYsIDEzMCwgMjM0LCAxNzUsIDU0LCAKKyAgICAxNzYsIDIzNCwgMTc1LCA1NCwgMjQyLCAyMjYsIDIwMCwgMjQ5LCAyMzQsIDE1NywgMjM4LCAxOCwgMjIwLCAzMCwgMjA3LCAKKyAgICA4MiwgMjI3LCAyMjYsIDIzOSwgMTUzLCAyMjYsIDE0OCwgMjQ4LCAxNzMsIDIwMCwgMjQ5LCAyNDYsIDEwMywgMjE0LCAxOTgsIAorICAgIDIzNCwgMTc5LCAyMTUsIDU4LCAyMjIsIDE3MCwgMjEwLCA1LCAyNTAsIDE1MSwgMjEwLCA1LCAyMzQsIDU4LCAyMTAsIDUsIAorICAgIDIwMCwgMjQ5LCAyMTIsIDEwLCAyMDAsIDI0OSwgMjQ4LCAxMDQsIDIzNiwgMjUyLCAyNDcsIDI0OSwgMjI4LCAxMTgsIDIwOSwgCisgICAgMTU1LCAyNDcsIDI0OCwgMjI4LCAxMTgsIDIwOSwgMTU1LCAyNDgsIDc2LCAyMzUsIDE0MCwgMjIyLCAxODAsIDIwMCwgMjUwLCAKKyAgICAyMzcsIDE2OSwgMjIyLCAxODEsIDI2LCAyMDAsIDI1MSwgMjMzLCAxOTgsIDIzNCwgMTc0LCAxMjAsIDIyMiwgNDEsIDIzMywgCisgICAgMTk4LCAyMzQsIDE3NCwgMTIwLCAyMDAsIDI0OCwgMjMzLCAxOTgsIDIzNCwgMTc0LCAyMTUsIDg4LCAyMTcsIDExMywgMjAwLCAKKyAgICAyNTEsIDMsIDI0OCwgMTEsIDIzOSwgMTksIDI0OCwgNTIsIDMsIDIwMywgNTAsIDIxNiwgMTEsIDMsIDI0OCwgMTMzLCAyMzQsIAorICAgIDIyMSwgMjIyLCAxODEsIDMsIDIzNSwgNDcsIDIxNSwgMjA1LCAyMjIsIDE2NiwgMjIyLCAxODEsIDMsIDIwNCwgMTkxLCAKKyAgICAyMTcsIDkxLCAyMjIsIDE4MCwgMjE3LCA5MSwgMjAwLCAyNTAsIDI0OSwgMTMxLCAyNDMsIDQ5LCAyMDAsIDIzNCwgMjE1LCAKKyAgICAxMiwgMjI3LCAyMzYsIDIxNywgMTA5LCAyMjcsIDIzNiwgMjM1LCAxMTEsIDIzNSwgMTY5LCAyNDksIDEzMiwgMjUxLCA3NCwgCisgICAgMjM4LCAyNywgMjUxLCAxMzIsIDI1MSwgMTMzLCAyMjEsIDkxLCAyMjgsIDEyMywgMjA5LCA4MCwgMjI4LCA5MiwgMjQxLCAKKyAgICAxMTEsIDIxNiwgMTAsIDIzNSwgNDEsIDI0MiwgMTIsIDIyNCwgMTU5LCAyMjAsIDE0MiwgMjE1LCA4NywgMjM3LCAxOTAsIAorICAgIDIyMiwgMTMwLCAyMzQsIDIyMCwgMjQ5LCA3NSwgMjE1LCA5MCwgMjA3LCAxMDIsIDIxNSwgMTYxLCAyMjYsIDEzMCwgODEsIAorICAgIDIyNCwgNjAsIDIyNCwgMjM2LCAyMTMsIDI2LCAyMzYsIDUsIDIwOCwgNzgsIDIyNiwgMTI5LCAyNDgsIDg3LCAyNDMsIDIsIAorICAgIDMsIDIzNCwgMTI3LCAyMDEsIDYwLCAyNDksIDAsIDIzNCwgMTI3LCAyNDgsIDQ2LCAyMzQsIDEyNywgMTIwLCAyMzQsIDEyNSwgCisgICAgMjA4LCAyMzYsIDIzNCwgMTI3LCAyMzUsIDU3LCAyMzQsIDEyNywgMjM0LCAxMjgsIDMsIDQ4LCAyNDgsIDEyNywgMjM0LCAKKyAgICAxMjcsIDIzNSwgNjQsIDIzNCwgMTI3LCAyMDAsIDQ0LCAyMzQsIDEyNywgMjE0LCAxOTksIDIzNCwgMTI3LCAyMzQsIDEyOCwgCisgICAgMywgMjEzLCA4NSwgMjEzLCA5OSwgMjM0LCAxMjUsIDIzNCwgMTI4LCAyNDEsIDE2NiwgMjQxLCA2NSwgMjEwLCA4NiwgMywgCisgICAgMzUsIDczLCAyMjgsIDczLCAyMzgsIDIwNCwgMTYyLCAyNDgsIDIzLCAyNTEsIDczLCA5OSwgMjQ4LCAxMTMsIDIwOSwgNzEsIAorICAgIDk5LCAyNDYsIDgxLCA5OSwgMjA4LCAyMTIsIDIwNywgMTgxLCA5OSwgMjM5LCAxNDUsIDI0MSwgMjQ1LCA5OSwgMjE1LCAKKyAgICAxNjIsIDc2LCAyMTUsIDgxLCAyMzcsIDM3LCAyNDgsIDE4NSwgMjQwLCAyMzEsIDk5LCAyMDgsIDIyOCwgMjQ5LCA5NiwgCisgICAgMjA2LCA1MiwgMjQ5LCA5NiwgNjQsIDIzNywgMjQsIDIzMywgODMsIDIxNSwgOTQsIDk5LCAyMjEsIDEwNSwgMjQ5LCAxMTMsIAorICAgIDI0MiwgMTk1LCAyMzgsIDQ1LCA4MCwgMjQwLCAxOTQsIDU0LCAyNDIsIDI0NiwgMjQ3LCAxMzMsIDI0OSwgODAsIDMsIDIwMCwgCisgICAgNDIsIDU0LCAyNDksIDgwLCAzLCAyNDAsIDE5NCwgNTQsIDI0OSwgODAsIDMsIDIzOCwgNjEsIDU0LCAyNDksIDgwLCAzLCAKKyAgICAyMTUsIDU2LCA1NCwgMjIxLCAxMDUsIDMsIDIwMSwgMTEsIDI0NywgMTYsIDMsIDE4MiwgMjA1LCAxMDQsIDI2LCAyMDAsIAorICAgIDQyLCA1NCwgMjExLCAxOTksIDIxNiwgOSwgMjQzLCA3MCwgMjQ4LCA1MCwgMjIxLCAxNjIsIDIzNywgMjksIDI0MCwgMjUzLCAKKyAgICAyMTcsIDM3LCAyNDEsIDIsIDIzOSwgMTA2LCAyMzcsIDk3LCAyMzcsIDksIDE3NiwgMjM3LCA5NywgMjM3LCA5LCAyMTYsIAorICAgIDE5NiwgMywgMjQyLCAxOTgsIDIxNiwgMTk2LCAyMzcsIDE4MiwgMjAzLCAyMjgsIDI0NywgMTcwLCAyMDYsIDE5NywgMjQ3LCAKKyAgICAxNzAsIDI0NywgMTM0LCAyMjgsIDEwMywgMjQ3LCAxNiwgMywgMTgyLCAyMDUsIDEwMywgMjQ3LCAxNiwgMywgMTkxLCAyMDUsIAorICAgIDEwMywgMjQ5LCA3NywgMjQ3LCAxNSwgMjQ2LCAxMTYsIDIxNCwgMTk0LCAyMTIsIDIyMSwgMjE0LCAxOTQsIDIxNiwgMTMzLCAKKyAgICAyMDgsIDY4LCAyMTIsIDE2MywgMjA1LCA5NSwgMjEyLCAxNjMsIDI0OCwgMTA5LCAyMDcsIDIxLCAyMjUsIDMzLCAyMTgsIAorICAgIDIwNywgMjE4LCAyMDgsIDMsIDI0MSwgMTY1LCAyNDMsIDEsIDI0NiwgMTEwLCAyNDgsIDExMCwgMTc2LCAyNDgsIDExMCwgCisgICAgMjM1LCA2NCwgMjQ4LCAxMTAsIDI0OCwgMTI3LCAyNDgsIDExMCwgMjE3LCAzMiwgMjQ4LCAxMTAsIDI0OCwgMTA3LCAyMjAsIAorICAgIDEzNiwgMjQ5LCAxMTcsIDIxMSwgMjA3LCAyMjIsIDQyLCAyMDYsIDE3NiwgMjEzLCAxODQsIDIxNiwgMTk0LCAyMzcsIDE1MiwgCisgICAgMjIyLCAyMzAsIDIxMSwgMjQ4LCAyNTEsIDQ4LCAyMTQsIDIxOCwgMjUxLCAyMzIsIDIyNCwgNjIsIDI0NywgMCwgMjIyLCAKKyAgICA1NCwgMjE2LCAyNTMsIDIwNSwgMTExLCAyMjgsIDExNCwgMjA1LCAxMTEsIDIxNiwgMjAzLCAyMzksIDc0LCA5OSwgMjI4LCAKKyAgICAxMTEsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMTkxLCA1NSwgNTYsIDI0NiwgMTEwLCAyMjIsIDE5NSwgMywgMjI0LCA1MiwgCisgICAgMjM3LCA1MywgMjQ2LCAxMTAsIDIyMiwgMTk1LCAzLCAyMTMsIDIyMCwgMjM3LCA1MywgMTc2LCAyMjIsIDE5NSwgMywgMjEzLCAKKyAgICAyMjAsIDIzNywgNTMsIDE3NiwgMjIyLCAxOTUsIDMsIDIyNCwgNTIsIDIzNywgNTMsIDIxNSwgNjQsIDIxNSwgNjUsIDIzMywgCisgICAgMTI0LCAyMjAsIDQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjIxLCAxMzQsIDIxNSwgMjE0LCAzLCA4NywgNTUsIDI1MCwgMTU2LCAKKyAgICAyMjUsIDI4LCAyMDIsIDIzMywgMjIxLCAxMzMsIDIyMSwgMTM0LCAyMTUsIDIxNCwgMjE3LCAxMTYsIDIxOCwgMjQyLCAyMjEsIAorICAgIDEzNCwgMjE1LCAyMTIsIDI1MSwgNDksIDMsIDI0OSwgNjYsIDI0NywgMTYyLCAyNDcsIDE2MywgMywgMjM3LCA0NiwgMjAyLCAKKyAgICAyMzAsIDI0NywgMTYyLCAyMDYsIDE3MywgMjEzLCAyMzYsIDIwMiwgMjI5LCAyMzcsIDkwLCAyMTQsIDI1MCwgMjE1LCA3MSwgCisgICAgMjA4LCA4OSwgMjE1LCAzMywgMjQ5LCA2LCAyMDQsIDE0NSwgODcsIDI1MCwgMTk5LCAyNDYsIDExMiwgODcsIDI2LCA5OCwgCisgICAgMTc2LCAyNDYsIDE1NiwgMjUwLCAxOTksIDI0NiwgMTEyLCA4NywgMjYsIDk4LCAxNzYsIDI0NiwgMTU2LCAyNTAsIDIwMCwgCisgICAgMywgNDQsIDExMiwgMjE2LCAyNDIsIDI0NiwgMTEyLCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAKKyAgICAyNTEsIDQ3LCAxOTEsIDI2LCAxODIsIDE3NiwgMjQ2LCAxNTYsIDI1MCwgMTk5LCAxMjgsIDI0OCwgNDksIDk5LCAxMjIsIAorICAgIDI0OCwgNDksIDk5LCAyMDgsIDIzMywgMywgMjQ3LCAxNTUsIDk3LCAyMDgsIDIzMiwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAKKyAgICAxLCAyMDEsIDc3LCAyMDgsIDIzMywgMywgMTI2LCAyMDksIDEsIDIwMSwgNzYsIDI0OSwgNDksIDIzOCwgMjA0LCAyMTUsIAorICAgIDExOCwgMjI1LCAyMywgMjIyLCAyMDcsIDIzNSwgMTI4LCAyMTMsIDQxLCAyMjIsIDIwNywgMjM1LCAxMjgsIDIyNCwgMTA0LCAKKyAgICAzLCAyMjgsIDg0LCAyMTYsIDQ3LCAyNDYsIDExMCwgMjI0LCAxMDQsIDMsIDIyNiwgMjE0LCAyMjYsIDIxNCwgMjI0LCAxMDMsIAorICAgIDE3NiwgMjI0LCAxMDMsIDI0OCwgMjMwLCAyNDgsIDIzMSwgMywgMjQ3LCAxNTUsIDk3LCAyNDgsIDEwOCwgMjI0LCAxNjcsIAorICAgIDk5LCAyMTMsIDIzNywgMjQ3LCAyNDMsIDI0OSwgMTMwLCAzLCA5OCwgNTUsIDU2LCAyMzgsIDE3MSwgMywgOTgsIDU1LCA1NiwgCisgICAgMjE3LCA3OSwgMywgMjM4LCA0MywgMTM0LCAzLCA0OSwgNTEsIDU1LCA1NiwgMjA5LCA5LCAzLCA4NywgNTUsIDU2LCAyMDUsIAorICAgIDE1OCwgMywgMTgyLCA1NSwgNTYsIDIxOCwgMjQyLCAxMTIsIDIwMywgMjUzLCAyMzgsIDIzMCwgOTksIDIyNiwgMjExLCAKKyAgICAyMDYsIDE2NiwgMjI4LCA3OCwgMTYsIDM2LCA4LCA2LCAyMjQsIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCA4LCA0LCAyMjQsIAorICAgIDIzNSwgMjI4LCA3OCwgMTYsIDM2LCAyMTgsIDk0LCAyMjgsIDc4LCAxNiwgMzYsIDIwNywgMTE2LCAyMjgsIDc4LCAxNiwgCisgICAgMzYsIDgsIDIyNCwgMjM1LCAyMzcsIDc3LCAyMzgsIDIwNCwgMjA1LCAxNTMsIDIwMCwgMjI1LCAyMzQsIDIwNiwgMjE4LCAKKyAgICA3NywgMjYsIDI0OCwgMTE1LCAyMzMsIDIwNSwgMjE1LCAxNDMsIDIyMSwgMjA3LCAyMDYsIDE3NCwgMjQyLCAyMTYsIDI0OSwgCisgICAgOTcsIDIwOSwgMTA2LCAyMTUsIDk4LCAyMDgsIDExMCwgMywgMTAxLCAyNDAsIDE4MiwgMjI3LCAyMzYsIDE2LCAzNiwgMjQ4LCAKKyAgICAyNDMsIDIwNSwgOTMsIDIzOCwgMTg3LCA2MywgNTIsIDI0NywgMjQzLCA2NCwgNTIsIDI0NywgMjQzLCAyMjUsIDcxLCAyMTMsIAorICAgIDE3MCwgMjQ2LCAxNTUsIDIyNSwgNzEsIDI0OCwgMTI3LCAyNDYsIDE1NSwgMjI1LCA3MSwgMjE3LCAzMiwgMjQxLCA2NCwgCisgICAgMjI1LCA3MSwgMjQ4LCAxMjcsIDI0MSwgNjQsIDQsIDIxNywgMzIsIDI0MSwgNjQsIDQsIDI0OCwgMTI3LCAyNDEsIDY0LCAKKyAgICAyMDMsIDIyNywgMjEzLCAxNzAsIDIwNSwgOTgsIDIzOSwgMTY2LCAyMTMsIDE3MCwgMjA1LCA5OCwgMjAzLCAyMjcsIDQsIAorICAgIDIxMywgMTcwLCAyMDUsIDk4LCAyMzksIDE2NiwgNCwgMjEzLCAxNzAsIDIwNSwgOTgsIDIyNCwgNTQsIDUxLCAyMTAsIDEwMSwgCisgICAgNjQsIDI0NiwgMTU1LCAyMDMsIDIyNSwgNTEsIDIxMCwgMTAxLCA2NCwgMjQ2LCAxNTUsIDQ0LCAyNDIsIDIzNSwgMjE1LCAKKyAgICA4NCwgMjQyLCAyMzUsIDIxNSwgODUsIDMsIDIzNCwgMjEyLCA1NywgMjQyLCAyMzUsIDIxNSwgODQsIDIxOCwgMjExLCA0OSwgCisgICAgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDIxOCwgMjExLCA1MSwgMjEwLCAxNzAsIDMsIDEyNiwgMjQwLCAxODAsIDE2LCAKKyAgICAzNiwgMjIyLCAxNDQsIDI0NywgMjIsIDY0LCA4LCAyNDIsIDIzNCwgODAsIDgsIDI0MiwgMjM0LCAyNDcsIDYwLCAyNDIsIAorICAgIDIzNCwgMjE3LCA4NywgOTksIDIzOSwgMTY5LCA3NiwgMjE2LCA3MSwgMjI3LCAxMDMsIDIyMSwgNzQsIDIwNywgMTEwLCAKKyAgICAyMjIsIDM3LCAzLCAyMTksIDExNCwgMjQ4LCA2NSwgMjQ4LCA4MywgNzYsIDIzMywgMzUsIDI0NiwgMTE0LCAyMzcsIDE5MCwgCisgICAgMTEyLCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAxMjAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDEyNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjksIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAKKyAgICAxOTAsIDIzNywgNjEsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwOSwgMTA2LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIAorICAgIDIzNywgMTkwLCAyMTAsIDEzNiwgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMzIsIDIxNywgMTMyLCAKKyAgICAyNDYsIDExNCwgMjM3LCAxOTAsIDIxOSwgMTE0LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NywgCisgICAgMjE3LCAxMzIsIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM4LCAyMDAsIDIxNywgMTMyLCAyNDYsIDExNCwgMjM3LCAxOTAsIAorICAgIDIwNCwgMTY1LCAyMTcsIDEzMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTcsIDcyLCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNCwgCisgICAgMTM5LCAyNDYsIDExNCwgMjM3LCAxOTAsIDIwNiwgMzksIDI0NiwgMTE0LCAyMzcsIDE5MCwgMjM2LCAyMjUsIDI0NiwgMTE0LCAKKyAgICAyMzcsIDE5MCwgMjM3LCA1OSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMDksIDEwMiwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTAsIAorICAgIDEzNCwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDIzMSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMTksIDExMiwgMjQ2LCAKKyAgICAxMTQsIDIzNywgMTkwLCAyMDYsIDE2NSwgMjQ2LCAxMTQsIDIzNywgMTkwLCAyMzgsIDE5OCwgMjQ2LCAxMTQsIDIzNywgCisgICAgMTkwLCAyMDQsIDE2MywgNTEsIDIwOCwgMjMyLCA1MSwgMjA4LCAyMzMsIDMsIDExMiwgMjA5LCAxLCAyMDEsIDc3LCA1MSwgCisgICAgMjA4LCAyMzMsIDMsIDEyNiwgMjA5LCAxLCAyMDEsIDc2LCAyNDgsIDE4LCAyNDgsIDE5LCAzLCAyMDksIDEsIDIwMSwgNzYsIAorICAgIDIxMywgMjUsIDI0OCwgMjMwLCAyNDgsIDExMCwgMjQ3LCAxNTMsIDIyMiwgMTY3LCAyNDYsIDExMywgNjMsIDIwOSwgODEsIAorICAgIDI2LCAyNDIsIDIzMywgMjE4LCAyNDIsIDIxNSwgMTQ5LCAyMzMsIDE5NywgMjIyLCAxODEsIDIyOCwgMTE4LCAyNDcsIDI1MSwgCisgICAgMjA3LCAyNDIsIDIyNCwgMjI4LCAyMDksIDY5LCAyMTcsIDM0LCAyMDgsIDE5NCwgMjQxLCAyNTAsIDIwNywgMjI0LCAyMDgsIAorICAgIDIyMSwgMjA4LCAyMjIsIDIwMSwgNjEsIDIyNywgMTQ4LCAyMjIsIDE4MSwgMjQyLCAxMSwgNDksIDIzNCwgMjAwLCAyMDYsIAorICAgIDE3NiwgMjEzLCAxODQsIDIwNiwgMTc2LCAyMTMsIDE4NSwgMywgMjE2LCAxOTUsIDUxLCAyMzQsIDIwMCwgMjA2LCAxNzYsIAorICAgIDIxMywgMTg0LCA2NCwgMjA1LCAxMzksIDIwNiwgMTc1LCA2MywgMjA1LCAxMzksIDIwNiwgMTc1LCAyMDYsIDE3NiwgMjE3LCAKKyAgICA3OSwgMjA1LCAxNTgsIDc2LCAyMjEsIDEzMCwgMjQ2LCAxMzQsIDIyMSwgMTM0LCAyMTUsIDIxMywgMjQ5LCAxMzAsIDc2LCAKKyAgICAyMzgsIDE0NCwgMjA4LCAxMTUsIDIzOCwgMTQ0LCAyMzgsIDE0NSwgMywgMjI0LCAxOTMsIDIzNywgMTYsIDIzOCwgMTQ0LCAKKyAgICAyMTYsIDQ4LCAxMTksIDIwOCwgMTE1LCAyMzgsIDE0NCwgMjI0LCAxNjYsIDIxNiwgMTMyLCA2MywgMjE0LCAxOTQsIDIyNCwgCisgICAgNTQsIDQ5LCAyMTYsIDQ2LCAyMjQsIDU0LCA0OSwgMjQ5LCA5MiwgMjE2LCA0NywgMjI0LCA1NCwgNDksIDIzNiwgMjMxLCAKKyAgICAyMTYsIDQ3LCAyMjQsIDU0LCA0OSwgMjE2LCAxODksIDIyNCwgNTQsIDQ5LCAyNDIsIDI0OSwgNDksIDIwMCwgMjE5LCAyMzQsIAorICAgIDE5OSwgMjA0LCAxODUsIDIxNywgOTksIDIzNCwgMjAwLCA1NCwgMjEzLCAyMjAsIDIzNCwgMjAwLCAzLCAyMzcsIDgyLCAKKyAgICAyMDgsIDIxMSwgMjEzLCAxMDUsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgMjM3LCA4MiwgMjA4LCAyMTEsIDIxMywgMTA1LCAKKyAgICAyMDYsIDMzLCAxMTUsIDU0LCAyMTMsIDEwNSwgMjA2LCAzMywgMTI3LCA1NCwgMjEzLCAxMDUsIDIwMiwgMjMyLCAyMzQsIAorICAgIDE5OSwgMjEzLCAxMDUsIDIzNCwgMjAwLCAzLCAxMDEsIDIzNywgODcsIDIzOCwgMzIsIDIxMywgMjIwLCAyMzQsIDIwMCwgMywgCisgICAgMjE2LCAxMTAsIDI0OCwgMjA2LCAxMDEsIDI2LCAyMTMsIDI3LCAyMzcsIDgxLCA2NCwgMTI3LCAyMTUsIDk2LCA0OSwgMjM0LCAKKyAgICAyMDAsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDQ5LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDY0LCA1MSwgCisgICAgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2MywgNDksIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgNjMsIDUxLCAKKyAgICAyMTUsIDk2LCAyMjgsIDEwMywgNjMsIDQ5LCAyMTUsIDk2LCAyNDksIDEyNywgMjI4LCAxMDMsIDYzLCA1MSwgMjE1LCA5NiwgCisgICAgMjQ5LCAxMjcsIDIyOCwgMTAzLCAyMDksIDE3MywgNjQsIDExNSwgMjE1LCA5NiwgMjI4LCAxMDMsIDIwOSwgMTczLCA2NCwgCisgICAgMTI3LCAyMTUsIDk2LCAyMjgsIDEwMywgMjA5LCAxNzMsIDYzLCAxMTUsIDIxNSwgOTYsIDIyOCwgMTAzLCAyMDksIDE3MywgCisgICAgNjMsIDEyNywgMjE1LCA5NiwgMjI4LCAxMDMsIDYzLCAxMTUsIDIxNSwgOTYsIDI0OSwgMTI3LCAyMjgsIDEwMywgNjMsIAorICAgIDEyNywgMjE1LCA5NiwgMjQ5LCAxMjcsIDIyOCwgMTAzLCA2MywgMjM0LCAxMjcsIDI0MSwgMTEwLCAyNDMsIDcwLCAyMjYsIAorICAgIDIxMywgMjYsIDIyMSwgNjAsIDEyNiwgMjIwLCAxMiwgMjQzLCA2OSwgMjE1LCA4LCAyMTUsIDEwNCwgMjQ3LCAxNzIsIDYzLCAKKyAgICAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgMjQwLCAyNTMsIDY0LCAyMzQsIDE2NSwgMjEwLCA1NSwgMjM3LCAyOSwgCisgICAgMjQwLCAyNTMsIDIwOSwgMjMsIDIxMCwgNTUsIDIzNywgMjksIDI0MCwgMjUzLCAyMDYsIDIzNSwgMjQ3LCAxMTcsIDIwMSwgCisgICAgNiwgMjI2LCAyMTIsIDExMiwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyMCwgMjQ3LCAyNDQsIDIyMSwgNjAsIDEyNiwgMjQ3LCAKKyAgICAyNDQsIDIyMSwgNjAsIDIwNSwgMTMwLCA0MCwgMjE2LCA5LCAyNDMsIDcwLCAyMzQsIDE2NSwgMjQwLCAyNTMsIDIxMSwgCisgICAgMjA5LCAyMTUsIDksIDIzMiwgMjI1LCAyMzcsIDE1MiwgMjMyLCAyMjUsIDIxNywgMzcsIDI0MSwgMywgMjMyLCAyMjUsIAorICAgIDI0MCwgMjA1LCAzLCAyMDYsIDEyNiwgMjQwLCAyMDUsIDMsIDIwNiwgMTI3LCAyNiwgMjE1LCAxOTgsIDI0MCwgMjA1LCAzLCAKKyAgICAyMTUsIDE5OCwgMjM2LCAyMTYsIDMsIDIxNSwgMTk4LCAyMzYsIDIxNiwgMywgMjA1LCAyMzgsIDIzNiwgMjE2LCAzLCAyNTEsIAorICAgIDg2LCAyMDAsIDE5NSwgNjMsIDIzNywgOSwgMjM3LCA5LCAxNzYsIDIzNywgOSwgMjQ3LCAxMzQsIDEyNCwgMjQwLCAyMzgsIAorICAgIDI0NywgMTM0LCAyMzcsIDk3LCAyNDgsIDc4LCAyMzcsIDk3LCAyNDcsIDE4NSwgMjM4LCAxODEsIDIxOCwgMjA5LCAyMzgsIAorICAgIDE4MSwgMjE4LCAyMTAsIDIxNiwgMTk1LCAyMzgsIDE4MSwgMjE4LCAyMTAsIDIxNiwgMjAxLCAyMTgsIDIwOSwgMjE4LCAKKyAgICAyMTAsIDIxNiwgMTk1LCAyMTgsIDIxMCwgMjE2LCAyMDEsIDIzOCwgMTgxLCAyNDAsIDIwNCwgMjM4LCAxODEsIDIxNiwgCisgICAgMTk1LCAyMzgsIDE4MSwgMjE2LCAxOTMsIDI0MCwgMjA0LCAyMTYsIDE5NSwgMjE2LCAxOTMsIDIwMSwgODcsIDIwOCwgMjE4LCAKKyAgICAyMTgsIDIxMCwgMjE2LCAyMDEsIDIwOCwgMjE4LCAyNDcsIDE3MSwgMjE2LCAyMDEsIDI0MSwgMTEwLCAyMDEsIDE1LCAyMjEsIAorICAgIDE1OSwgMjIyLCAxMjAsIDIxNiwgMjQ0LCAyNDYsIDExMiwgNTEsIDI2LCA0OSwgMjEwLCAxNzAsIDI1MCwgMTk5LCAyNDcsIAorICAgIDE1NSwgMjAwLCAxOTUsIDIyOCwgMTA5LCAyMzcsIDMsIDIwOSwgOTAsIDk5LCAyNDEsIDE2NCwgMjM3LCAzLCAyMDksIDkwLCAKKyAgICA5OSwgMjQzLCA3MSwgNDAsIDIyNiwgMjE0LCAyMTIsIDI0NCwgMjIwLCA0LCAyMTYsIDE5NiwgMywgNDQsIDIwNiwgMTI2LCAKKyAgICAyMDgsIDgwLCAyNDcsIDE1LCAyNDIsIDQxLCAyMjYsIDk1LCAyMjQsIDE2MCwgMjA4LCAyMzEsIDIzNCwgMTM3LCAyMjgsIAorICAgIDExOCwgMjA5LCAxNTUsIDEyNiwgMjEzLCAxOTUsIDU2LCAxMjYsIDIxMywgMTk1LCA1NywgMTI2LCAyMTMsIDE5NSwgMjI1LCAKKyAgICAyOCwgMTI2LCAyMTMsIDE5NSwgMjEzLCA0NiwgNDksIDIwOCwgMjI4LCAyNDgsIDM1LCA1MSwgMjA4LCAyMjgsIDI0OCwgMzUsIAorICAgIDEyMCwgMjA4LCAyMjgsIDI0OCwgMzQsIDEyNiwgMjA4LCAyMjgsIDI0OCwgMzQsIDQ5LCAyMDYsIDUyLCAyNDgsIDM1LCA1MSwgCisgICAgMjA2LCA1MiwgMjQ4LCAzNSwgNDksIDI1MSwgNzMsIDI0OCwgMzUsIDUxLCAyNTEsIDczLCAyNDgsIDM1LCAyMjEsIDg2LCAKKyAgICAyNDgsIDM1LCAyMjQsIDE5NCwgMjIxLCA4NiwgMjQ4LCAzNSwgMjI0LCAxOTQsIDIyMSwgODUsIDI0OSwgOTQsIDEwMCwgMywgCisgICAgMjQ5LCA5MywgMjQ5LCA5NCwgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAxMzUsIDIwMCwgMTk1LCAyNDksIDk0LCAKKyAgICAyNywgMTM1LCAyMDAsIDE5NSwgMjQ5LCA5NCwgMTAwLCAzLCAyNywgMTM1LCAyMDAsIDE5NSwgMTYyLCAyNDcsIDcsIDgxLCAKKyAgICAyNDksIDk0LCAxMDAsIDMsIDI3LCAyNDcsIDYsIDIwMCwgMjMzLCAyMjIsIDE2NCwgMjIxLCA2NSwgMjM2LCAxODQsIDIwNSwgCisgICAgMTgwLCAyMDUsIDEzNSwgMjA4LCAxMDEsIDc2LCAyMjQsIDIwOCwgMjA5LCAxNTYsIDc2LCAyMjcsIDIzNywgMjIxLCA0NiwgCisgICAgMjM1LCA2MSwgMjM3LCAxODksIDIzNSwgNjEsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIDE5MCwgMywgCisgICAgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OCwgMjA5LCA0NywgMjM3LCAKKyAgICAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIDIwOSwgNDcsIDIzOCwgMTUsIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAxNzYsIAorICAgIDIyMSwgNTksIDI2LCAyNDYsIDgzLCAyMDcsIDE4MCwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDIwNiwgMCwgMjM4LCAxNSwgMjA5LCA0NywgMjM3LCAxOTAsIDMsIDIzNCwgMjExLCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgCisgICAgMjMzLCAxMjMsIDIwMSwgOCwgMjM3LCAxODksIDIwOSwgNDcsIDIzNywgMTkwLCAzLCAyMDksIDQ3LCAyMzgsIDE1LCAyMzcsIAorICAgIDE5MCwgMjExLCAyNDAsIDI0MSwgMTQ0LCAyMzcsIDEsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjA5LCA0NywgMjM3LCAxOTAsIAorICAgIDMsIDIzNCwgMTI2LCAyMzgsIDE1LCAyMDksIDQ3LCAyMzcsIDE5MCwgMywgMjA3LCAyMjQsIDIwOSwgNDYsIDIzNywgMTg5LCAKKyAgICAyMjAsIDEwLCAyMzcsIDE4OSwgMjM4LCAzNCwgMjM3LCAxODksIDIwNCwgMywgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyNDYsIAorICAgIDgzLCAyMDcsIDE4MCwgMjE2LCAzOSwgMjM3LCAxODksIDI0MywgNjIsIDIzNywgMTg5LCAyNDMsIDYzLCAyMzcsIDE4OSwgCisgICAgMjI2LCAxMjgsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjA2LCAzNiwgMzUsIDIyNiwgMTI5LCAyMjYsIDEyOCwgMjM3LCAxOTAsIAorICAgIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDIyNiwgMTI4LCAyMzcsIDE5MCwgMywgMjQ2LCAxMTAsIDIzOCwgMTUsIDIzNywgMTkwLCAKKyAgICAzLCAyMDgsIDMxLCAyMDUsIDE2MywgMjM3LCAxOTAsIDMsIDIwOCwgMzEsIDIwNSwgMTY0LCAyNiwgMjAxLCA4LCAyMzgsIAorICAgIDIyLCAyMzcsIDE5MCwgMywgMjA4LCAzMSwgMjA1LCAxNjQsIDI2LCAyMDYsIDAsIDIzOCwgMTUsIDI0MSwgNCwgMjM3LCAKKyAgICAxODksIDIwMCwgMjMyLCAyMzcsIDE4OSwgMjUxLCA2NywgMjM3LCAxODksIDIxNSwgNTUsIDIzNywgMTg5LCAyNDIsIDIxOCwgCisgICAgMjM3LCAxODksIDIxNiwgMTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMywgMjI0LCA3NywgNzYsIDIwNSwgNzUsIDI0MSwgNCwgCisgICAgMjQ3LCAyNDcsIDIxMywgMTQ1LCAyMzcsIDE4OSwgMjM2LCAxOTUsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDI1MSwgCisgICAgNjUsIDIzNywgMTg5LCAyMzcsIDE0NSwgMjM3LCAxODksIDIwMSwgNjIsIDIzNywgMTg5LCAyMDksIDcwLCAyMzcsIDE4OSwgCisgICAgMjA1LCAyMTgsIDIzNywgMTg5LCAyMzUsIDYyLCAyMzcsIDE4OSwgMjI0LCA2MywgMjQyLCAyMTgsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMTc2LCAyMjEsIDU4LCAyMzMsIDcyLCAyMzcsIDE4OSwgMjM3LCAxOTAsIDMsIDE3NiwgMjIxLCA1OSwgMjYsIAorICAgIDI0NiwgODMsIDIwNywgMTgwLCAyMzcsIDE5MCwgMjExLCAyMTEsIDIyOCwgMTE4LCAyMzcsIDE0NiwgMjUwLCAxNjIsIDIzNywgCisgICAgMTg5LCAyMzcsIDIxLCAyMzcsIDE4OSwgMjA5LCA3MSwgMjM3LCAxODksIDI0MCwgMjMxLCAyMzcsIDE4OSwgMjM3LCAxOTAsIAorICAgIDIwMSwgMywgMjIxLCA1OCwgMjM3LCAxOTAsIDMsIDIyMiwgNjgsIDIyMiwgMTMyLCAyMzUsIDYxLCAyNDcsIDExMiwgMjM3LCAKKyAgICAxOTAsIDMsIDIwOSwgNDcsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjA2LCAxOTMsIDc2LCAyMjcsIDE1MCwgCisgICAgMjA5LCA0NywgMjQ3LCAxMTIsIDIzNywgMTkwLCAzLCAxNzYsIDIyMSwgNTgsIDIwOSwgNDcsIDI0NywgMTEyLCAyMzcsIAorICAgIDE5MCwgMywgMjM0LCAxMjYsIDIzOCwgMTUsIDI0NywgMTEyLCAyMzcsIDE5MCwgMywgMjAwLCAyMTcsIDIwOSwgNDgsIDIyNiwgCisgICAgMTI4LCAyNDcsIDExMiwgMjM3LCAxOTAsIDMsIDI0NiwgMTEwLCAyMzgsIDE1LCAyMTUsIDU1LCAyNDcsIDExMiwgMjM3LCAKKyAgICAxODksIDI0MiwgMjE4LCAyNDcsIDExMiwgMjM3LCAxODksIDIwMSwgNjIsIDI0NywgMTEyLCAyMzcsIDE4OSwgMjA5LCA2NCwgCisgICAgMjM2LCAxOTUsIDIzNywgMTg5LCAyMDksIDY0LCAyMDksIDQ3LCAyMzcsIDE4OSwgMjAzLCAyMjIsIDIzNywgMTg5LCAyMzcsIAorICAgIDE5MCwgMywgMjEyLCAyNDIsIDIzOCwgMTUsIDIzNywgMTkwLCAzLCAyMTgsIDI0MiwgMjM1LCAxMDQsIDIzNSwgMjQwLCAKKyAgICAyMzcsIDE5MCwgMywgMjE3LCA5OSwgMjM1LCAyNDAsIDIxNiwgMTEsIDI0OCwgODQsIDI0MSwgMTU5LCAyMTEsIDE4OSwgCisgICAgMjIxLCAxMDAsIDIzNCwgMTI5LCAyMjEsIDEwMCwgMjA4LCAyMzQsIDIyMSwgMTAwLCAyMzQsIDE2NywgMjE2LCAxMSwgMjEzLCAKKyAgICAyMTksIDExMiwgMjM0LCAxOTksIDIxNiwgMTEsIDIxMywgMjE5LCAyNDgsIDk2LCAyMzQsIDE3NSwgMjI4LCAxMTgsIDI0NywgCisgICAgNjIsIDIxNiwgMTEsIDIzNiwgMTk0LCAyMTYsIDExLCAzLCAyMTUsIDU1LCAyMzcsIDE4OSwgMjE2LCAxMSwgMywgMjM3LCAKKyAgICAxMCwgMjM0LCAxNzQsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIyNSwgCisgICAgMzUsIDIwNCwgMTg1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIyNSwgMzUsIDIwNCwgMTg1LCAyMDgsIDI1NCwgMjAxLCAKKyAgICA0OCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIDE1NywgMjM5LCAxNCwgMjE1LCA5NiwgMjI1LCAzNSwgMjA0LCAxODUsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIDIwMiwgMjE2LCAKKyAgICAyMjUsIDM1LCAyMDgsIDI1NCwgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDE1NywgMjM5LCAxNCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyMDIsIDIxNiwgMjI1LCAKKyAgICAzNSwgODAsIDE1NywgMjAxLCA0OCwgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAyMDgsIDI1NCwgMjAxLCA0OCwgCisgICAgMjE1LCA5NiwgMjAyLCAyMTYsIDIyNSwgMzUsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAKKyAgICA4MCwgMjA4LCAyNTQsIDIzOSwgMTQsIDIxNSwgOTYsIDIwMiwgMjE2LCAyMjUsIDM1LCAxNTcsIDIwMSwgNDgsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDIwOCwgMjU0LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIDMyLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIDI0OCwgCisgICAgMzIsIDIwOCwgMjU0LCAyMzksIDE0LCAyMTUsIDk2LCAyNDgsIDMyLCA4MCwgMTU3LCAyMDEsIDQ4LCAyMTUsIDk2LCAyNDgsIAorICAgIDMyLCA4MCwgMjA4LCAyNTQsIDIwMSwgNDgsIDIxNSwgOTYsIDI0OCwgMzIsIDgwLCAxNTcsIDIzOSwgMTQsIDIxNSwgOTYsIAorICAgIDI0OCwgMzIsIDgwLCAyMDgsIDI1NCwgMjM5LCAxNCwgMjE1LCA5NiwgMjQ4LCAzMiwgMjMzLCAxOTYsIDIxNCwgNzIsIDUyLCAKKyAgICAyMTcsIDIxLCAyMzMsIDE5NiwgMjE0LCA3MiwgNTIsIDIxNywgMjIsIDIyOCwgMTE4LCA2MywgMjA4LCAxOTMsIDIwOSwgMTgsIAorICAgIDIxNCwgNzIsIDUyLCAyMTcsIDIxLCAyMDksIDE4LCAyMTQsIDcyLCA1MiwgMjE3LCAyMiwgMjI4LCAxMTgsIDYzLCAyMDgsIAorICAgIDE5MywgOTgsIDIxMiwgMjQ4LCAxODIsIDIxMiwgMjQ4LCA4NywgMjEyLCAyNDgsIDE5MSwgMjEyLCAyNDgsIDEzNSwgMzMsIAorICAgIDIzOCwgODIsIDIxNywgMjEsIDgwLCAxMzUsIDMzLCAyMzgsIDgyLCAyMTcsIDIxLCAzMywgMTc2LCAyMzgsIDgyLCAyMTcsIAorICAgIDIxLCA4MCwgMzMsIDE3NiwgMjM4LCA4MiwgMjE3LCAyMSwgODAsIDI1MSwgOTAsIDIxNywgMjEsIDIwNywgMTgzLCAyNTEsIAorICAgIDkwLCAyMTcsIDIxLCA0MywgODAsIDUzLCAyMDQsIDE4NSwgMjQ2LCA3MSwgMjE0LCA2MywgMTM0LCAyMTcsIDIxLCA0MywgCisgICAgODAsIDUzLCAyNDYsIDcxLCAyMTQsIDYzLCAxMzQsIDIxNywgMjEsIDQzLCA4MCwgMTI4LCA1MywgMjQ2LCA3MSwgMjE0LCAKKyAgICA2MywgMTM0LCAyMTcsIDIxLCA4MCwgMjI4LCA1OSwgMjE3LCAyMSwgNDMsIDIyOCwgNTksIDIxNywgMjEsIDgwLCA0MywgCisgICAgMjI4LCA1OSwgMjE3LCAyMSwgMjAyLCAyNDYsIDgwLCAyMDksIDE2LCAyMDIsIDI0NiwgODAsIDIxMywgMTA2LCAyMDksIDE2LCAKKyAgICAyNDcsIDUsIDI0OCwgMTIxLCAyMTMsIDEwNiwgMjQ3LCA1LCAyNDgsIDEyMSwgMjEyLCAyNDgsIDIzNCwgMTEwLCAyMDgsIAorICAgIDk2LCAyMjQsIDEwMSwgMjEzLCAyMjUsIDI0NywgMTM1LCAyMzQsIDU1LCAyMDUsIDEyMywgMjM0LCA1NSwgMjA1LCAxMjQsIAorICAgIDMsIDI0OCwgMjEsIDIxOCwgMjE2LCAyMDUsIDEyMywgMjIyLCAxMywgMTYyLCAyMTMsIDIyNiwgMjA4LCAxMDIsIDIwNSwgCisgICAgMTIxLCAyMDUsIDEyMiwgMjQ3LCAxMzUsIDI0NywgMjUyLCAyMTcsIDc1LCAyNDcsIDI1MiwgMjA1LCA3MSwgMjQ3LCAyNTMsIAorICAgIDIwOCwgNzYsIDIyMSwgMTYzLCAyNTEsIDk0LCAyMzcsIDc4LCAyMzgsIDE2NCwgMjE1LCA4OCwgMjQ3LCAxMzUsIDIxNywgCisgICAgNzUsIDIxNSwgODgsIDI0NywgMTM1LCAyMDYsIDIxMSwgMjE3LCA3NSwgMjA2LCAyMTEsIDI1MCwgMTI3LCAyMTcsIDc1LCAKKyAgICAyNTAsIDEyNywgMjEzLCAxNzcsIDIwMywgNTEsIDI0MSwgMTQwLCAyMDUsIDYyLCAyNTAsIDE5NCwgMjI0LCA2OCwgMjA1LCAKKyAgICAxMjksIDIyMSwgOTQsIDIyMSwgNjQsIDIxMywgMjI0LCAyMDcsIDE5NiwgMjEzLCAyMjQsIDIyMSwgNjQsIDI0NywgMTg0LCAKKyAgICAyNTEsIDIwNywgMjA1LCAxMjAsIDIxMCwgMTcsIDIxMiwgMjE4LCAyMDgsIDIyNiwgMjMzLCAxNzcsIDIwNSwgMTI3LCAyMjQsIAorICAgIDE5NiwgODMsIDIwNSwgMTI3LCAyMjQsIDE5NiwgMjQzLCA0OSwgNTQsIDIxNSwgODgsIDI0NywgMTE5LCAyMTMsIDk5LCAKKyAgICAyMjQsIDE5NiwgMjA1LCA5NSwgMjM3LCA1NCwgMjE3LCA3OSwgMjE1LCA2NiwgMjQwLCAxODUsIDIxOCwgMjQyLCAyMzgsIAorICAgIDE1MCwgNTQsIDIwOSwgNDUsIDk5LCAyMTgsIDI0MiwgMjA5LCA0NSwgOTksIDIxNCwgMTkzLCAyMjQsIDE0OSwgMjI4LCAKKyAgICAxMTgsIDIyOCwgOSwgMjE1LCAxMzQsIDk5LCAyNDAsIDIxMiwgMjE4LCAyMTUsIDIyNCwgMTQ5LCA5OSwgMjE1LCA2MCwgCisgICAgMjAxLCA4MywgOTksIDIxOCwgMjMxLCAyMDEsIDgzLCA5OSwgMjQ4LCAxODQsIDIxOCwgMjQyLCAyNDgsIDE4MywgMjQ4LCAKKyAgICAxODIsIDIyMSwgNjQsIDI0OCwgMTgyLCAyMTYsIDYzLCAyMTgsIDI0MiwgMjE2LCA2MiwgMjQ2LCAyMjYsIDI0MiwgMjI3LCAKKyAgICAyMjIsIDM2LCA5OSwgMjAwLCAyNDcsIDk5LCAyMTMsIDExNSwgMjQ5LCAxMzIsIDk5LCAyMDUsIDE4MSwgMjAxLCA4MywgCisgICAgMjQ2LCAxMDcsIDIwOSwgMjMxLCAyNDksIDUyLCAyNDksIDUwLCAyMTYsIDk2LCAyNDMsIDMzLCAyNDIsIDE4MSwgMjQ5LCAKKyAgICAxMTAsIDI0NiwgMTM1LCA0OSwgMjI0LCAzMiwgMjA1LCA5OSwgMywgMjEyLCAyMTksIDI0MywgMTQsIDIxNCwgMjUzLCA1NCwgCisgICAgNDQsIDIyOCwgOTIsIDIwOCwgMjU1LCAyNDgsIDc1LCA5OSwgMjM1LCAxMzksIDk5LCAyNDMsIDcsIDI2LCAyMjUsIDgxLCAKKyAgICAyMDksIDcxLCAyNTEsIDI0OCwgMjA5LCAyNTMsIDI0OSwgMTA5LCAyNDgsIDIyOSwgMjQ4LCAyMzAsIDI0OCwgMjUzLCAyMTUsIAorICAgIDEzNCwgNzYsIDIwMCwgMjMxLCAyMTcsIDEyOSwgNTQsIDIwOSwgMjUzLCAyMDUsIDcyLCAyMzQsIDIwNywgMjYsIDIwMCwgCisgICAgMjI1LCAyMTAsIDMwLCAyMTcsIDEwNCwgMjM5LCAxNDIsIDIyMSwgNjgsIDIxMywgMjI1LCAyMDUsIDEzMSwgMjIxLCA3MCwgCisgICAgMjQ4LCAxMjAsIDIwMywgMjI3LCAyMjEsIDE3NCwgMjUxLCAxNjQsIDIwMywgMjI3LCAyNTEsIDE2NCwgMjAzLCAyMjcsIDQsIAorICAgIDI1MSwgMTY0LCA0LCAyNTEsIDE2NCwgMjE4LCAyMjAsIDI1MSwgMTY0LCAyNTEsIDE2NSwgMjQxLCAxMjQsIDI1MSwgMTY1LCAKKyAgICAyNTAsIDIwNSwgMjExLCAyNDcsIDIxNywgNzUsIDIzNywgNzgsIDIzOCwgMTY0LCAyNDEsIDU0LCAyMjQsIDEwMSwgMjE2LCAKKyAgICA5OSwgMjEwLCAxNywgMjExLCAyMTUsIDIyMSwgNzAsIDIxMSwgMjE1LCAyNDcsIDE0NiwgMTM5LCAxNiwgMzYsIDIxNCwgNjgsIAorICAgIDEzOSwgMTYsIDM2LCAyNTEsIDE2NiwgMTM5LCAxNiwgMzYsIDIzNywgNzcsIDEzOSwgMTYsIDM2LCAyMzksIDE3LCAxMzksIAorICAgIDE2LCAzNiwgMjAxLCA4MiwgMTM5LCAxNiwgMzYsIDI1MCwgMjU1LCAxMzksIDE2LCAzNiwgMjUxLCAwLCAyMTMsIDE2NCwgCisgICAgMTM5LCAxNiwgMzYsIDI1MSwgMCwgMjEzLCAxNjMsIDEzOSwgMTYsIDM2LCAyNTEsIDAsIDIwMiwgMTk5LCAxMzksIDE2LCAKKyAgICAzNiwgMjUxLCAwLCAyMDIsIDE5OCwgMTM5LCAxNiwgMzYsIDIwMiwgMjEzLCAxMzksIDE2LCAzNiwgMjAyLCAyMTIsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDIxMSwgMTM5LCAxNiwgMzYsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjE1LCAyMjEsIDIwNywgMjM1LCAKKyAgICAxMzksIDE2LCAzNiwgNjMsIDIwNywgMjM1LCAxMzksIDE2LCAzNiwgMjIyLCAzNSwgMjA4LCAxMCwgMTM5LCAxNiwgMzYsIAorICAgIDIyMiwgMzUsIDIwOCwgOSwgMTM5LCAxNiwgMzYsIDIyMiwgMzUsIDIwOCwgOCwgMTM5LCAxNiwgMzYsIDI0NiwgMTU4LCAKKyAgICAxMzksIDE2LCAzNiwgMjEyLCAyNywgMTM5LCAxNiwgMzYsIDIxOSwgMTAxLCAxMzksIDE2LCAzNiwgMjAyLCAxOTcsIDEzOSwgCisgICAgMTYsIDM2LCAyMDIsIDE5NiwgMTM5LCAxNiwgMzYsIDIxMiwgMjQ5LCAyMTIsIDI3LCAxMzksIDE2LCAzNiwgMjEyLCAyNDksIAorICAgIDIxMiwgMjYsIDEzOSwgMTYsIDM2LCAyMzUsIDEwOCwgMTM5LCAxNiwgMzYsIDIwOSwgMTUyLCAxMzksIDE2LCAzNiwgMjI4LCAKKyAgICAzMiwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIyOCwgMzIsIDIxNywgMjcsIDEzOSwgMTYsIDM2LCAyNDIsIDIzOSwgNzYsIAorICAgIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyMTMsIDE2MCwgNzYsIDIyOCwgMzEsIDEzOSwgMTYsIDM2LCAyNDMsIDI0LCAyMTcsIAorICAgIDI4LCAxMzksIDE2LCAzNiwgMjI4LCAzMCwgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwOCwgMTEsIDc2LCAyNDMsIDIzLCAKKyAgICAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjQyLCAyMzksIDc2LCAyNDMsIDIyLCAKKyAgICAxMzksIDE2LCAzNiwgMjQzLCAyNCwgMjUxLCA0MSwgMTM5LCAxNiwgMzYsIDIxMiwgMjgsIDc2LCAyNDMsIDI0LCAyNTEsIAorICAgIDQxLCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNDMsIDIzLCAxMzksIDE2LCAzNiwgMjAzLCA0NiwgCisgICAgMTM5LCAxNiwgMzYsIDIwNSwgMjMxLCAyMTcsIDI4LCAxMzksIDE2LCAzNiwgMjI1LCAzOSwgMjE3LCAyOCwgMTM5LCAxNiwgCisgICAgMzYsIDI1MSwgNDAsIDIxNywgMjgsIDEzOSwgMTYsIDM2LCAyMDgsIDExLCA3NiwgMjUxLCAzOSwgMTM5LCAxNiwgMzYsIAorICAgIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjA4LCAxMSwgNzYsIDIxMiwgMjgsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjAyLCAyMTQsIDc2LCAyNTEsIDM5LCAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM5LCAKKyAgICAxMzksIDE2LCAzNiwgMjEzLCAxNjAsIDc2LCAyNTEsIDM4LCAxMzksIDE2LCAzNiwgMjEzLCAxNTksIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDE1OCwgMTM5LCAxNiwgMzYsIDIxMywgMTU3LCAxMzksIDE2LCAzNiwgMjEzLCAxNTYsIDEzOSwgMTYsIDM2LCAyNTEsIAorICAgIDEyNywgMTM5LCAxNiwgMzYsIDI1MSwgMTI2LCAxMzksIDE2LCAzNiwgMjIyLCAxNTUsIDEzOSwgMTYsIDM2LCAyMTIsIDM0LCAKKyAgICAxMzksIDE2LCAzNiwgMjUwLCAxOTgsIDEzOSwgMTYsIDM2LCAyMTMsIDE4NywgMTM5LCAxNiwgMzYsIDIxMywgMTg2LCAxMzksIAorICAgIDE2LCAzNiwgMjUwLCAxMzAsIDEzOSwgMTYsIDM2LCAyNDgsIDE1MywgMjE3LCAyOCwgMTM5LCAxNiwgMzYsIDIwNiwgMjMwLCAKKyAgICAxMzksIDE2LCAzNiwgMjA2LCAyMjksIDEzOSwgMTYsIDM2LCAyMTQsIDc0LCAyMjQsIDE4NSwgMTM5LCAxNiwgMzYsIDI0OCwgCisgICAgMTAxLCAxMzksIDE2LCAzNiwgMjQ4LCAxMDAsIDEzOSwgMTYsIDM2LCAyNDgsIDk5LCAxMzksIDE2LCAzNiwgMjUxLCAxMDMsIAorICAgIDEzOSwgMTYsIDM2LCAyMTcsIDEwMywgMTM5LCAxNiwgMzYsIDIwOCwgMjE0LCAxMzksIDE2LCAzNiwgMjA1LCAyMjksIDEzOSwgCisgICAgMTYsIDM2LCAyMzUsIDMwLCAxMzksIDE2LCAzNiwgMjAxLCA3MCwgMTM5LCAxNiwgMzYsIDIxNSwgNTQsIDEzOSwgMTYsIDM2LCAKKyAgICAyNDcsIDE2NywgMTM5LCAxNiwgMzYsIDIwNCwgMTc3LCAxMzksIDE2LCAzNiwgMjQ3LCAxMzcsIDIyMSwgNzUsIDEzOSwgMTYsIAorICAgIDM2LCAyMTEsIDIyNSwgNzYsIDIyNywgMTUyLCAxMzksIDE2LCAzNiwgMjQ3LCAxODEsIDEzOSwgMTYsIDM2LCAyMDUsIDkyLCAKKyAgICAxMzksIDE2LCAzNiwgMjA4LCAxMDcsIDIwNSwgOTIsIDEzOSwgMTYsIDM2LCAyMjQsIDEwMCwgMTM5LCAxNiwgMzYsIDIwOSwgCisgICAgMjcsIDEzOSwgMTYsIDM2LCAyMDMsIDIwNiwgMTM5LCAxNiwgMzYsIDIzMywgMTIxLCAyMzksIDEyMSwgMTM5LCAxNiwgMzYsIAorICAgIDI1MCwgMTc2LCAxMzksIDE2LCAzNiwgMjE1LCA2MiwgMjUwLCAxNzYsIDEzOSwgMTYsIDM2LCAyNDgsIDUzLCAxMzksIDE2LCAKKyAgICAzNiwgMjE1LCA1MywgMjQ4LCA1MywgMTM5LCAxNiwgMzYsIDI1MSwgMTAwLCAxMzksIDE2LCAzNiwgMjA4LCA2MywgMjA3LCAKKyAgICAyMTYsIDIwOCwgNjIsIDEzOSwgMTYsIDM2LCAyMDgsIDYzLCAyMDcsIDIxNiwgMjA4LCA2MSwgMTM5LCAxNiwgMzYsIDIwOCwgCisgICAgNywgMTM5LCAxNiwgMzYsIDIxNSwgMjYsIDEzOSwgMTYsIDM2LCAyNDAsIDI0OCwgMTM5LCAxNiwgMzYsIDI0MCwgMjUwLCAKKyAgICAxMzksIDE2LCAzNiwgMjQwLCAyNDksIDEzOSwgMTYsIDM2LCAyMTQsIDIwMiwgMTM5LCAxNiwgMzYsIDIxNCwgMTkxLCAxMzksIAorICAgIDE2LCAzNiwgMjQyLCAyMjUsIDEzOSwgMTYsIDM2LCAyNDIsIDIyNCwgMTM5LCAxNiwgMzYsIDI0MiwgMjIzLCAxMzksIDE2LCAKKyAgICAzNiwgMjQyLCAyMjIsIDEzOSwgMTYsIDM2LCAyNDIsIDIyMSwgMTM5LCAxNiwgMzYsIDI1MSwgMTQxLCAxMzksIDE2LCAzNiwgCisgICAgMjQ5LCA1MywgNzYsIDIyMiwgMTM3LCAxMzksIDE2LCAzNiwgMjQ5LCA1MywgNzYsIDIwMywgNzgsIDEzOSwgMTYsIDM2LCAKKyAgICAyMTMsIDExMywgMTM5LCAxNiwgMzYsIDIzMywgMTEzLCAxMzksIDE2LCAzNiwgMjE5LCAxMjksIDEzOSwgMTYsIDM2LCAyNDEsIAorICAgIDIzMiwgMTM5LCAxNiwgMzYsIDIyMSwgODksIDEzOSwgMTYsIDM2LCAxNjcsIDIzOSwgMTU2LCAxMzksIDE2LCAzNiwgMTY3LCAKKyAgICAyMTcsIDEsIDYzLCAyMjUsIDIzLCAyMjgsIDE1LCA1MSwgMjA1LCA5OCwgNjMsIDIwMywgMjI3LCAyMjgsIDE1LCA1MSwgCisgICAgMjA1LCA5OCwgNjMsIDIxMywgNDEsIDIyOCwgMTUsIDUxLCAyMDUsIDk4LCA2MywgMjM5LCAxNjYsIDIyOCwgMTUsIDUxLCAKKyAgICAyMDUsIDk4LCA2MywgMjA5LCA2NCwgNCwgMjQ2LCAxNTUsIDIyMiwgNjYsIDI3LCA2NCwgMjQ2LCAxNTUsIDI3LCA2NCwgCisgICAgMjQ2LCAxNTUsIDgwLCA2NCwgMjQ2LCAxNTUsIDIwMiwgMjQ2LCA4MCwgNjQsIDI0NiwgMTU1LCAyMzgsIDI2LCA4MCwgNjQsIAorICAgIDI0NiwgMTU1LCA2NCwgMjQ2LCAxNTYsIDI0MywgNDUsIDYzLCA0LCAyNDYsIDE1NSwgMjEyLCAyMjEsIDIwNiwgMjMxLCA2MywgCisgICAgMjA1LCAyMjYsIDIwOCwgMTkzLCA2MywgMjA5LCA2NCwgNCwgMjA4LCAxOTMsIDE2MiwgNjQsIDIwOCwgMTkzLCAyMjIsIDY2LCAKKyAgICA2NCwgMjA4LCAxOTMsIDI3LCA2NCwgMjA4LCAxOTMsIDgwLCA2NCwgMjA4LCAxOTMsIDIwMiwgMjQ2LCA4MCwgNjQsIDIwOCwgCisgICAgMTkzLCAyMzgsIDI2LCA4MCwgNjQsIDIwOCwgMTkzLCA2NCwgNTIsIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjA4LCAKKyAgICAxOTMsIDY0LCA1MiwgMjQzLCA0NSwgNjMsIDIyMiwgNjYsIDIwOCwgMTkzLCA1MiwgMjA2LCAyMzEsIDYzLCAyMDUsIDIyNiwgCisgICAgMjQxLCA2NCwgNjMsIDIwMiwgMjQ2LCA0LCAyNDEsIDY0LCA2MywgMjIyLCA2NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIAorICAgIDI0MywgNDUsIDYzLCAyMDIsIDI0NiwgNCwgMjQxLCA2NCwgNjQsIDI0MSwgNjUsIDI0MywgNDUsIDYzLCAyMjIsIDY2LCAKKyAgICAyNDEsIDY0LCAyNDEsIDY1LCAyMDYsIDIzMSwgNjMsIDIwNSwgMjI2LCAyMjQsIDQ5LCA2MywgMjAyLCAyNDYsIDQsIDIyNCwgCisgICAgNDksIDYzLCAyMjIsIDY2LCA0LCAyMjQsIDQ5LCA2NCwgMjI0LCA1MCwgMjQzLCA0NSwgNjMsIDQsIDIyNCwgNDksIDIwNiwgCisgICAgNzcsIDMxLCAyNDIsIDIzNCwgMTYyLCAzMSwgMjQyLCAyMzQsIDIyMiwgNjYsIDMxLCAyNDIsIDIzNCwgMjcsIDMxLCAyNDIsIAorICAgIDIzNCwgMjAyLCAyNDYsIDI3LCAzMSwgMjQyLCAyMzQsIDIwMiwgMjQ2LCA4MCwgMzEsIDI0MiwgMjM0LCAyMzgsIDI2LCA4MCwgCisgICAgMzEsIDI0MiwgMjM0LCAyMDYsIDc3LCAyMTIsIDI0LCAxNjIsIDIxMiwgMjQsIDIyMiwgNjYsIDIxMiwgMjQsIDI3LCAyMTIsIAorICAgIDI0LCA4MCwgMjEyLCAyNCwgMjAyLCAyNDYsIDgwLCAyMTIsIDI0LCAyMzgsIDI2LCA4MCwgMjEyLCAyNCwgMTYyLCAyMzcsIAorICAgIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjcsIDIzNywgCisgICAgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgODAsIDIzNywgNjEsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjAyLCAyNDYsIDgwLCAKKyAgICAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMzcsIDYxLCAyMDgsIDIwNywgMjUwLCAxNjUsIAorICAgIDE2MiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgMjIyLCA2NiwgMjA5LCAxMDYsIDIwOCwgMjA3LCAyNTAsIDE2NSwgCisgICAgMjcsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAyMDIsIAorICAgIDI0NiwgODAsIDIwOSwgMTA2LCAyMDgsIDIwNywgMjUwLCAxNjUsIDIzOCwgMjYsIDgwLCAyMDksIDEwNiwgMjA4LCAyMDcsIAorICAgIDI1MCwgMTY1LCAxNjIsIDIzOCwgMjMyLCAyMDgsIDIwNywgMjUwLCAxNjUsIDIyMiwgNjYsIDIzOCwgMjMyLCAyMDgsIDIwNywgCisgICAgMjUwLCAxNjUsIDI3LCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCA4MCwgMjM4LCAyMzIsIDIwOCwgMjA3LCAyNTAsIAorICAgIDE2NSwgMjAyLCAyNDYsIDgwLCAyMzgsIDIzMiwgMjA4LCAyMDcsIDI1MCwgMTY1LCAxNjIsIDEyNiwgMjE1LCA5OCwgNjMsIAorICAgIDIwOCwgMTA5LCAyMjIsIDY2LCAxMjYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMTI2LCAyMTUsIDk4LCA2MywgMjA4LCAKKyAgICAxMDksIDIyMiwgNjYsIDEyNiwgMjE1LCA5OCwgMjE1LCAxNTUsIDIwOCwgMTA5LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAKKyAgICA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIzNiwgMjI5LCAyMTUsIAorICAgIDk4LCA2MywgMjA4LCAxMDksIDIyMiwgNjYsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDIxMywgCisgICAgMTA2LCAxNjIsIDIzNiwgMjI5LCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjM3LCA2MSwgMjE1LCA5OCwgCisgICAgNjMsIDIwOCwgMTA5LCA4MCwgMjM3LCA2MSwgMjE1LCA5OCwgNjMsIDIwOCwgMTA5LCAyMjIsIDY2LCAyMDksIDEwNiwgMjE1LCAKKyAgICA5OCwgNjMsIDIwOCwgMTA5LCA4MCwgMjA5LCAxMDYsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgMjA5LCAxMDYsIDIxNSwgOTgsIAorICAgIDIxNSwgMTU1LCAyMDgsIDEwOSwgMjIyLCA2NiwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIDEwOSwgODAsIDIzOCwgCisgICAgMjMyLCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDIwMiwgMjQ2LCA4MCwgMjM4LCAyMzIsIDIxNSwgOTgsIDYzLCAyMDgsIAorICAgIDEwOSwgODAsIDIzOCwgMjMyLCAyMTUsIDk4LCAyMTUsIDE1NSwgMjA4LCAxMDksIDE2MiwgMjA0LCAxNjUsIDIxNSwgOTgsIAorICAgIDYzLCAyMDgsIDEwOSwgODAsIDIwNCwgMTY1LCAyMTUsIDk4LCA2MywgMjA4LCAxMDksIDgwLCAyMDQsIDE2NSwgMjE1LCA5OCwgCisgICAgMjE1LCAxNTUsIDIwOCwgMTA5LCA5OCwgNTUsIDMsIDQsIDIwNSwgOTksIDI1MCwgMjAyLCAxODIsIDU1LCAzLCA0LCAyMDUsIAorICAgIDk5LCAyNTAsIDIwMiwgODcsIDU1LCAzLCA0LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgNCwgMjA1LCA5OSwgCisgICAgMjUwLCAyMDIsIDk4LCA1NSwgMywgMjIyLCA2NiwgMjA1LCA5OSwgMjUwLCAyMDIsIDE4MiwgNTUsIDMsIDIyMiwgNjYsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIyMiwgNjYsIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDU1LCAzLCAKKyAgICAyMjIsIDY2LCAyMDUsIDk5LCAyNTAsIDIwMiwgOTgsIDU1LCAzLCAyMjUsIDcxLCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAKKyAgICA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIDg3LCA1NSwgMywgMjI1LCA3MSwgMjA1LCA5OSwgMjUwLCAyMDIsIAorICAgIDE5MSwgNTUsIDMsIDIyNSwgNzEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgCisgICAgMTgyLCA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDQsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCAKKyAgICA1NSwgMywgNCwgMjM4LCAxMTgsIDI1MCwgMjAyLCA5OCwgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTgyLCA1NSwgMywgCisgICAgMjM4LCAxMTgsIDI1MCwgMjAyLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgMTkxLCA1NSwgMywgMjM4LCAxMTgsIAorICAgIDI1MCwgMjAyLCA4MCwgOTgsIDU1LCAzLCAyMzgsIDExOCwgMjUwLCAyMDIsIDgwLCAxODIsIDU1LCAzLCAyMzgsIDExOCwgCisgICAgMjUwLCAyMDIsIDgwLCA4NywgNTUsIDMsIDIzOCwgMTE4LCAyNTAsIDIwMiwgODAsIDE5MSwgNTUsIDMsIDIzOCwgMTE4LCAKKyAgICAyNTAsIDIwMiwgODAsIDk4LCA1NSwgMywgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgMTgyLCA1NSwgMywgCisgICAgMjI1LCA3MSwgMjM4LCAxMTgsIDI1MCwgMjAyLCA4MCwgODcsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIAorICAgIDgwLCAxOTEsIDU1LCAzLCAyMjUsIDcxLCAyMzgsIDExOCwgMjUwLCAyMDIsIDk4LCAyMDUsIDk3LCA1NSwgMywgMjIwLCAKKyAgICAxMjQsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDIyMCwgMTI0LCAyMTAsIDk5LCA4NywgMjA1LCA5NywgNTUsIDMsIAorICAgIDIyMCwgMTI0LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyMjAsIDEyNCwgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCAxODIsIDIwNSwgOTcsIDU1LCAzLCAyMjIsIDY2LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDIyMiwgNjYsIDIxMCwgOTksIDk4LCAKKyAgICAyMDUsIDk3LCA1NSwgMywgMjcsIDIxMCwgOTksIDE4MiwgMjA1LCA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDI3LCAyMTAsIDk5LCAxOTEsIDIwNSwgOTcsIDU1LCAzLCAyNywgMjEwLCA5OSwgOTgsIDIwNSwgOTcsIAorICAgIDU1LCAzLCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgODAsIDIxMCwgOTksIDg3LCAyMDUsIDk3LCA1NSwgMywgCisgICAgODAsIDIxMCwgOTksIDE5MSwgMjA1LCA5NywgNTUsIDMsIDgwLCAyMTAsIDk5LCA5OCwgMjA1LCA5NywgNTUsIDMsIDIwMiwgCisgICAgMjQ2LCA4MCwgMjEwLCA5OSwgMTgyLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIDk5LCA4NywgMjA1LCAKKyAgICA5NywgNTUsIDMsIDIwMiwgMjQ2LCA4MCwgMjEwLCA5OSwgMTkxLCAyMDUsIDk3LCA1NSwgMywgMjAyLCAyNDYsIDgwLCAyMTAsIAorICAgIDk5LCA5OCwgMjM3LCA4NSwgNDgsIDE4MiwgMjM3LCA4NSwgNDgsIDg3LCAyMzcsIDg1LCA0OCwgMTkxLCAyMzcsIDg1LCA0OCwgCisgICAgOTgsIDk1LCA0OCwgMTgyLCA5NSwgNDgsIDg3LCA5NSwgNDgsIDE5MSwgOTUsIDQ4LCA5OCwgMjQzLCA3MiwgNDgsIDE4MiwgCisgICAgMjQzLCA3MiwgNDgsIDg3LCAyNDMsIDcyLCA0OCwgMTkxLCAyNDMsIDcyLCA0OCwgOTgsIDgwLCAyNDMsIDcyLCA0OCwgMTgyLCAKKyAgICA4MCwgMjQzLCA3MiwgNDgsIDg3LCA4MCwgMjQzLCA3MiwgNDgsIDE5MSwgODAsIDI0MywgNzIsIDQ4LCA5OCwgODAsIDQ4LCAKKyAgICAxODIsIDgwLCA0OCwgODcsIDgwLCA0OCwgMTkxLCA4MCwgNDgsIDk4LCA0MywgNDgsIDE4MiwgNDMsIDQ4LCA4NywgNDMsIAorICAgIDQ4LCAxOTEsIDQzLCA0OCwgMTU3LCAyMDEsIDQ4LCA0MywgNDgsIDE1NywgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgNDMsIDQ4LCAyMDgsIDI1NCwgMjAxLCA0OCwgNDMsIDQ4LCA0OSwgNTEsIDQzLCA0OCwgMTE1LCAxMjcsIDQzLCAKKyAgICA0OCwgMjAxLCAyNywgOTgsIDE2MiwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMTYyLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDE2MiwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMzksIDE0LCAKKyAgICAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAxNjIsIDE1NCwgNDgsIDIwMSwgMjcsIDk4LCAxNTQsIAorICAgIDQ4LCAyMDEsIDI3LCAxODIsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAxNTQsIDQ4LCAyMDEsIDI3LCAKKyAgICAyMDgsIDI1NCwgMjM5LCAxNCwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDk4LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxODIsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMjIsIAorICAgIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDIyMiwgNjYsIDE1NCwgNDgsIDIwMSwgMjcsIDE1NywgMjAxLCA0OCwgMjIyLCAKKyAgICA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMjIsIDY2LCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgCisgICAgMjM5LCAxNCwgMjIyLCA2NiwgMTU0LCA0OCwgMjAxLCAyNywgMjA4LCAyNTQsIDIwMSwgNDgsIDIyMiwgNjYsIDE1NCwgNDgsIAorICAgIDIwMSwgMjcsIDk4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgODcsIDgwLCAKKyAgICAxNTQsIDQ4LCAyMDEsIDI3LCAxOTEsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDgwLCAxNTQsIDQ4LCAKKyAgICAyMDEsIDI3LCAxNTcsIDIzOSwgMTQsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAyMDgsIDI1NCwgMjM5LCAxNCwgODAsIDE1NCwgCisgICAgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgOTgsIDIwMiwgMjQ2LCA4MCwgCisgICAgMTU0LCA0OCwgMjAxLCAyNywgMTgyLCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDg3LCAyMDIsIDI0NiwgODAsIAorICAgIDE1NCwgNDgsIDIwMSwgMjcsIDE5MSwgMjAyLCAyNDYsIDgwLCAxNTQsIDQ4LCAyMDEsIDI3LCAxNTcsIDIwMSwgNDgsIDIwMiwgCisgICAgMjQ2LCA4MCwgMTU0LCA0OCwgMjAxLCAyNywgMTU3LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIAorICAgIDIwOCwgMjU0LCAyMzksIDE0LCAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDIwMSwgMjcsIDIwOCwgMjU0LCAyMDEsIDQ4LCAKKyAgICAyMDIsIDI0NiwgODAsIDE1NCwgNDgsIDk4LCAyMDUsIDk5LCAyNTAsIDIwMiwgMTgyLCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIAorICAgIDIwNSwgOTksIDI1MCwgMjAyLCAxOTEsIDIwNSwgOTksIDI1MCwgMjAyLCA5OCwgNjQsIDU1LCAyMDEsIDUsIDIwNSwgOTksIAorICAgIDI1MCwgMjAyLCAxODIsIDY0LCA1NSwgMjAxLCA1LCAyMDUsIDk5LCAyNTAsIDIwMiwgODcsIDY0LCA1NSwgMjAxLCA1LCAKKyAgICAyMDUsIDk5LCAyNTAsIDIwMiwgMTkxLCA2NCwgNTUsIDIwMSwgNSwgMjA1LCA5OSwgMjUwLCAyMDIsIDk4LCA1NSwgMywgCisgICAgMjE4LCAyMTEsIDIwNywgNiwgMTgyLCA1NSwgMywgMjE4LCAyMTEsIDIwNywgNiwgODcsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCAKKyAgICA2LCAxOTEsIDU1LCAzLCAyMTgsIDIxMSwgMjA3LCA2LCA4MCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAxMDIsIDgwLCA1NSwgCisgICAgMjEwLCAxMDAsIDIwMSwgMjUsIDEyMCwgMjA2LCA3MSwgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMzQsIAorICAgIDIxMywgODAsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTEyLCAyMDYsIDc0LCA5OCwgMjQ4LCA5MCwgNjQsIDQ4LCA4NywgCisgICAgMjQ4LCA5MywgMjEwLCAxMDIsIDY0LCA0OCwgOTgsIDIwNSwgMTU4LCAyMTAsIDEwMiwgNjQsIDQ4LCA4NywgMjA1LCAxNTgsIAorICAgIDIxMCwgMTAyLCA2NCwgNDgsIDk4LCAyMjUsIDIyLCA2NCwgNDgsIDg3LCAyMTMsIDQwLCA2NCwgNDgsIDk4LCAyMTMsIDQwLCAKKyAgICA2NCwgNDgsIDg3LCAyMjUsIDIyLCA2NCwgNDgsIDk4LCAyNDksIDEyOCwgMjEwLCAxMDEsIDY0LCA0OCwgODcsIDI0OSwgCisgICAgMTI4LCAyMTAsIDEwMSwgNjQsIDQ4LCA5OCwgMjM2LCAxOTgsIDIxMCwgMTAxLCA2NCwgNDgsIDg3LCAyMzYsIDE5OCwgMjEwLCAKKyAgICAxMDEsIDY0LCA0OCwgNjQsIDU1LCAyMTAsIDEwMCwgMjAxLCAyNSwgMTAyLCA2NCwgNTUsIDIxMCwgMTAwLCAyMDEsIDI1LCAKKyAgICAxMjAsIDIwNiwgNzEsIDE5OSwgMjMsIDIzNywgMTg5LCAyMjEsIDEwNCwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMDYsIAorICAgIDk0LCAyMjAsIDE2LCAyMzcsIDE4OSwgMjA2LCA3NiwgMjM3LCAxODksIDIzNywgMTkwLCAzLCAyMzQsIDEzNSwgMjEyLCAKKyAgICAyNTEsIDIzNywgMTg5LCAyMzMsIDkxLCAyMzcsIDE4OSwgMiwgNzYsIDIwNiwgMTA3LCAyMzMsIDEyMywgMjQ3LCAxNjksIAorICAgIDIyMiwgNzcsIDIzNCwgMTk5LCAyMTMsIDIyMCwgMjQ5LCAxMzAsIDc2LCAyMzQsIDE5OSwgMjI1LCAyNywgMjM3LCA2NiwgCisgICAgMjEzLCA0NSwgMjM3LCA2NiwgMjM0LCAxNzMsIDIzNCwgMjAwLCAzLCAxMjQsIDI2LCAxMDEsIDIzNywgODIsIDI0MiwgMjMxLCAKKyAgICAyMzcsIDE5MCwgMywgMjQyLCAyNTQsIDIzNCwgMTU3LCAyNDYsIDk5LCAyMzcsIDE4OSwgMjIwLCAxMTMsIDIzNywgMTg5LCAKKyAgICAyMTIsIDI0MiwgMjE3LCA3OSwgMjA2LCAxMDcsIDIzNywgMzIsIDIyNSwgNTcsIDIzOSwgMTQ3LCAyMzcsIDE4OSwgMjIzLCAKKyAgICAyNTMsIDIzNywgMTg5LCAyMzcsIDE5MCwgMjE2LCAxNzYsIDIwOSwgMzksIDIzNywgMTg5LCAyMTUsIDI0LCAyMDAsIDI1MCwgCisgICAgMjEwLCAxNzMsIDIxNSwgMTMsIDIyMiwgMTgxLCAyMjgsIDExOCwgMjA0LCAxNzMsIDIyMSwgNzIsIDI0NiwgMTk5LCAyMDksIAorICAgIDIyNCwgMjE2LCAxMSwgMjQwLCAxOTgsIDI0NywgMTE2LCAyMjcsIDE0MiwgMjM3LCAxMjYsIDIyMSwgMTI5LCAyMTYsIDM0LCAKKyAgICAyMDAsIDIyNCwgMjAxLCA4MywgMjE1LCA4NiwgMjM0LCAxNzgsIDIwMSwgMTksIDIzNywgMjQsIDIzOSwgMTQzLCAzLCAyMzksIAorICAgIDE0MSwgMjQ2LCAxMTcsIDIzNSwgMTI3LCAyMDQsIDIwMSwgMjM1LCAxMjgsIDIwOCwgMjA2LCAyMzUsIDExNCwgMjIwLCAxMywgCisgICAgMjEzLCA0NywgMjM3LCA3MywgMjE1LCAxMzQsIDIyMiwgNjksIDIxMSwgMTk2LCAyMTUsIDEzNCwgMjIyLCA2OSwgMjA2LCAKKyAgICA3NSwgMjE1LCAxMzQsIDIyMiwgNjksIDI0OCwgNzcsIDIzNSwgMTIyLCAyMjIsIDE0MSwgMjUwLCAxOTIsIDIwMywgMjQzLCAKKyAgICAyNDIsIDIzOCwgMjUwLCAxMTgsIDI0MiwgMjA4LCAyNDksIDEyMSwgMjE1LCA1OSwgMjQ3LCAxMjAsIDI0OSwgMTA4LCAyNDgsIAorICAgIDYyLCAyMzUsIDY0LCAyMTIsIDMyLCAyMTAsIDkzLCAyMTYsIDE2MywgNzYsIDIzNywgMSwgMjA4LCAyOCwgMjM3LCA0MywgCisgICAgMjM4LCAyNDYsIDIzNSwgMTI5LCA3NiwgMjIxLCAxNzMsIDIxNiwgNjgsIDIyNiwgMTI0LCAyMTYsIDE2MCwgMjQyLCAyNTEsIAorICAgIDIyNCwgMTY0LCAyMzcsIDE4OSwgMjExLCAyMTMsIDIwNCwgMTkwLCAyMDMsIDI0NSwgMjM3LCAxODksIDIzOSwgMjQsIDIzOSwgCisgICAgMTMzLCAyNDksIDU1LCAyMTAsIDgwLCAyMTYsIDIzNywgMjM2LCAyMjEsIDIzNywgMTg5LCAyNDcsIDI0NSwgMjQxLCAxNTgsIAorICAgIDIzNSwgOTcsIDIyNCwgMTQzLCAyMTMsIDkyLCAyMDksIDIyNiwgMjA4LCAxODcsIDI0NiwgMjU1LCAyMDEsIDU5LCAxMiwgCisgICAgMTUsIDIzMiwgMjIxLCAxMiwgMTUsIDIzMiwgMjIwLCAxMiwgMTUsIDIzMiwgMjE5LCAxMiwgMTUsIDIzMiwgMjE4LCAxMiwgCisgICAgMTUsIDIzMiwgMjE3LCAxMiwgMTUsIDIzMiwgMjE2LCAxMiwgMTUsIDIzMiwgMjE1LCAxMiwgMTUsIDIzMiwgMjE0LCAxMiwgCisgICAgMTUsIDIzMiwgMjEzLCAxMiwgMTUsIDIzMiwgMjEyLCAxMiwgMTUsIDIzMiwgMjExLCAxMiwgMTUsIDIzMiwgMjEwLCAxMiwgCisgICAgMTUsIDIzMiwgMjA5LCAxMiwgMTUsIDIzMiwgMjA4LCAxMiwgMTUsIDIzMiwgMjA3LCAxMiwgMTUsIDIzMiwgMjA2LCAxMiwgCisgICAgMTUsIDIzMiwgMjA1LCAxMiwgMTUsIDIzMiwgMjA0LCAxMiwgMTUsIDIzMiwgMjAzLCAxMiwgMTUsIDIzMiwgMjAyLCAxMiwgCisgICAgMTUsIDIzMiwgMjAxLCAxMiwgMTUsIDIzMiwgMjAwLCAxMiwgMTUsIDIzMiwgMTk5LCAxMiwgMTUsIDIzMiwgMTk4LCAxMiwgCisgICAgMTUsIDIzMiwgMTk3LCAxMiwgMTUsIDIzMiwgMTk2LCAxMiwgMTUsIDIzMiwgMTk1LCAxMiwgMTUsIDIzMiwgMTk0LCAxMiwgCisgICAgMTUsIDIzMiwgMTkzLCAxMiwgMTUsIDIzMiwgMTkyLCAxMiwgMTUsIDIzMiwgMTkxLCAxMiwgMTUsIDIzMiwgMTkwLCAxMiwgCisgICAgMTUsIDIzMiwgMTg5LCAxMiwgMTUsIDIzMiwgMTg4LCAxMiwgMTUsIDIzMiwgMTg3LCAxMiwgMTUsIDIzMiwgMTg2LCAxMiwgCisgICAgMTUsIDIzMiwgMTg1LCAxMiwgMTUsIDIzMiwgMTg0LCAxMiwgMTUsIDIzMiwgMTgzLCAxMiwgMTUsIDIzMiwgMTgyLCAxMiwgCisgICAgMTUsIDIzMiwgMTgxLCAxMiwgMTUsIDIzMiwgMTgwLCAxMiwgMTUsIDIzMiwgMTc5LCAxMiwgMTUsIDIzMiwgMTc4LCAxMiwgCisgICAgMTUsIDIzMiwgMTc3LCAxMiwgMTUsIDIzMiwgMTc2LCAxMiwgMTUsIDIzMiwgMTc1LCAxMiwgMTUsIDIzMiwgMTc0LCAxMiwgCisgICAgMTUsIDIzMiwgMTczLCAxMiwgMTUsIDIzMiwgMTcyLCAxMiwgMTUsIDIzMiwgMTcxLCAxMiwgMTUsIDIzMiwgMTcwLCAxMiwgCisgICAgMTUsIDIzMiwgMTY5LCAxMiwgMTUsIDIzMiwgMTY4LCAxMiwgMTUsIDIzMiwgMTY3LCAxMiwgMTUsIDIzMiwgMTY2LCAxMiwgCisgICAgMTUsIDIzMiwgMTY1LCAxMiwgMTUsIDIzMiwgMTY0LCAxMiwgMTUsIDIzMiwgMTYzLCAxMiwgMTUsIDIzMiwgMTYyLCAxMiwgCisgICAgMTUsIDIzMiwgMTYxLCAxMiwgMTUsIDIzMiwgMTYwLCAxMiwgMTUsIDIzMiwgMTU5LCAxMiwgMTUsIDIzMiwgMTU4LCAxMiwgCisgICAgMTUsIDIzMiwgMTU3LCAxMiwgMTUsIDIzMiwgMTU2LCAxMiwgMTUsIDIzMiwgMTU1LCAxMiwgMTUsIDIzMiwgMTU0LCAxMiwgCisgICAgMTUsIDIzMiwgMTUzLCAxMiwgMTUsIDIzMiwgMTUyLCAxMiwgMTUsIDIzMiwgMTUxLCAxMiwgMTUsIDIzMiwgMTUwLCAxMiwgCisgICAgMTUsIDIzMiwgMTQ5LCAxMiwgMTUsIDIzMiwgMTQ4LCAxMiwgMTUsIDIzMiwgMTQ3LCAxMiwgMTUsIDIzMiwgMTQ2LCAxMiwgCisgICAgMTUsIDIzMiwgMTQ1LCAxMiwgMTUsIDIzMiwgMTQ0LCAxMiwgMTUsIDIzMiwgMTQzLCAxMiwgMTUsIDIzMiwgMTQyLCAxMiwgCisgICAgMTUsIDIzMiwgMTQxLCAxMiwgMTUsIDIzMiwgMTQwLCAxMiwgMTUsIDIzMiwgMTM5LCAxMiwgMTUsIDIzMiwgMTM4LCAxMiwgCisgICAgMTUsIDIzMiwgMTM3LCAxMiwgMTUsIDIzMiwgMTM2LCAxMiwgMTUsIDIzMiwgMTM1LCAxMiwgMTUsIDIzMiwgMTM0LCAxMiwgCisgICAgMTUsIDIzMiwgMTMzLCAxMiwgMTUsIDIzMiwgMTMyLCAxMiwgMTUsIDIzMiwgMTMxLCAxMiwgMTUsIDIzMiwgMTMwLCAxMiwgCisgICAgMTUsIDIzMiwgMTI5LCAxMiwgMTUsIDIzMiwgMTI4LCAxMiwgMTUsIDIzMiwgMTI3LCAxMiwgMTUsIDIzMiwgMTI2LCAxMiwgCisgICAgMTUsIDIzMiwgMTI1LCAxMiwgMTUsIDIzMiwgMTI0LCAxMiwgMTUsIDIzMiwgMTIzLCAxMiwgMTUsIDIzMiwgMTIyLCAxMiwgCisgICAgMTUsIDIzMiwgMTIxLCAxMiwgMTUsIDIzMiwgMTIwLCAxMiwgMTUsIDIzMiwgMTE5LCAxMiwgMTUsIDIzMiwgMTE4LCAxMiwgCisgICAgMTUsIDIzMiwgMTE3LCAxMiwgMTUsIDIzMiwgMTE2LCAxMiwgMTUsIDIzMiwgMTE1LCAxMiwgMTUsIDIzMiwgMTE0LCAxMiwgCisgICAgMTUsIDIzMiwgMTEzLCAxMiwgMTUsIDIzMiwgMTEyLCAxMiwgMTUsIDIzMiwgMTExLCAxMiwgMTUsIDIzMiwgMTEwLCAxMiwgCisgICAgMTUsIDIzMiwgMTA5LCAxMiwgMTUsIDIzMiwgMTA4LCAxMiwgMTUsIDIzMiwgMTA3LCAxMiwgMTUsIDIzMiwgMTA2LCAxMiwgCisgICAgMTUsIDIzMiwgMTA1LCAxMiwgMTUsIDIzMiwgMTA0LCAxMiwgMTUsIDIzMiwgMTAzLCAxMiwgMTUsIDIzMiwgMTAyLCAxMiwgCisgICAgMTUsIDIzMiwgMTAxLCAxMiwgMTUsIDIzMiwgMTAwLCAxMiwgMTUsIDIzMiwgOTksIDEyLCAxNSwgMjMyLCA5OCwgMTIsIDE1LCAKKyAgICAyMzIsIDk3LCAxMiwgMTUsIDIzMiwgOTYsIDEyLCAxNSwgMjMyLCA5NSwgMTIsIDE1LCAyMzIsIDk0LCAxMiwgMTUsIDIzMiwgCisgICAgOTMsIDEyLCAxNSwgMjMyLCA5MiwgMTIsIDE1LCAyMzIsIDkxLCAxMiwgMTUsIDIzMiwgOTAsIDEyLCAxNSwgMjMyLCA4OSwgCisgICAgMTIsIDE1LCAyMzIsIDg4LCAxMiwgMTUsIDIzMiwgODcsIDEyLCAxNSwgMjMyLCA4NiwgMTIsIDE1LCAyMzIsIDg1LCAxMiwgCisgICAgMTUsIDIzMiwgODQsIDEyLCAxNSwgMjMyLCA4MywgMTIsIDE1LCAyMzIsIDgyLCAxMiwgMTUsIDIzMiwgODEsIDEyLCAxNSwgCisgICAgMjMyLCA4MCwgMTIsIDE1LCAyMzIsIDc5LCAxMiwgMTUsIDIzMiwgNzgsIDEyLCAxNSwgMjMyLCA3NywgMTIsIDE1LCAyMzIsIAorICAgIDc2LCAxMiwgMTUsIDIzMiwgNzUsIDEyLCAxNSwgMjMyLCA3NCwgMTIsIDE1LCAyMzIsIDczLCAxMiwgMTUsIDIzMiwgNzIsIAorICAgIDEyLCAxNSwgMjMyLCA3MSwgMTIsIDE1LCAyMzIsIDcwLCAxMiwgMTUsIDIzMiwgNjksIDEyLCAxNSwgMjMyLCA2OCwgMTIsIAorICAgIDE1LCAyMzIsIDY3LCAxMiwgMTUsIDIzMiwgNjYsIDEyLCAxNSwgMjMyLCA2NSwgMTIsIDE1LCAyMzIsIDY0LCAxMiwgMTUsIAorICAgIDIzMiwgNjMsIDEyLCAxNSwgMjMyLCA2MiwgMTIsIDE1LCAyMzIsIDYxLCAxMiwgMTUsIDIzMiwgNjAsIDEyLCAxNSwgMjMyLCAKKyAgICA1OSwgMTIsIDE1LCAyMzIsIDU4LCAxMiwgMTUsIDIzMiwgNTcsIDEyLCAxNSwgMjMyLCA1NiwgMTIsIDE1LCAyMzIsIDU1LCAKKyAgICAxMiwgMTUsIDIzMiwgNTQsIDEyLCAxNSwgMjMyLCA1MywgMTIsIDE1LCAyMzIsIDUyLCAxMiwgMTUsIDIzMiwgNTEsIDEyLCAKKyAgICAxNSwgMjMyLCA1MCwgMTIsIDE1LCAyMzIsIDQ5LCAxMiwgMTUsIDIzMiwgNDgsIDEyLCAxNSwgMjMyLCA0NywgMTIsIDE1LCAKKyAgICAyMzIsIDQ2LCAxMiwgMTUsIDIzMiwgNDUsIDEyLCAxNSwgMjMyLCA0NCwgMTIsIDE1LCAyMzIsIDQzLCAxMiwgMTUsIDIzMiwgCisgICAgNDIsIDEyLCAxNSwgMjMyLCA0MSwgMTIsIDE1LCAyMzIsIDQwLCAxMiwgMTUsIDIzMiwgMzksIDEyLCAxNSwgMjMyLCAzOCwgCisgICAgMTIsIDE1LCAyMzIsIDM3LCAxMiwgMTUsIDIzMiwgMzYsIDEyLCAxNSwgMjMyLCAzNSwgMTIsIDE1LCAyMzIsIDM0LCAxMiwgCisgICAgMTUsIDIzMiwgMzMsIDEyLCAxNSwgMjMyLCAzMiwgMTIsIDE1LCAyMzIsIDMxLCAxMiwgMTUsIDIzMiwgMzAsIDEyLCAxNSwgCisgICAgMjMyLCAyOSwgMTIsIDE1LCAyMzIsIDI4LCAxMiwgMTUsIDIzMiwgMjcsIDEyLCAxNSwgMjMyLCAyNiwgMTIsIDE1LCAyMzIsIAorICAgIDI1LCAxMiwgMTUsIDIzMiwgMjQsIDEyLCAxNSwgMjMyLCAyMywgMTIsIDE1LCAyMzIsIDIyLCAxMiwgMTUsIDIzMiwgMjEsIAorICAgIDEyLCAxNSwgMjMyLCAyMCwgMTIsIDE1LCAyMzIsIDE5LCAxMiwgMTUsIDIzMiwgMTgsIDEyLCAxNSwgMjMyLCAxNywgMTIsIAorICAgIDE1LCAyMzIsIDE2LCAxMiwgMTUsIDIzMiwgMTUsIDEyLCAxNSwgMjMyLCAxNCwgMTIsIDE1LCAyMzIsIDEzLCAxMiwgMTUsIAorICAgIDIzMiwgMTIsIDEyLCAxNSwgMjMyLCAxMSwgMTIsIDE1LCAyMzIsIDEwLCAxMiwgMTUsIDIzMiwgOSwgMTIsIDE1LCAyMzIsIAorICAgIDgsIDEyLCAxNSwgMjMyLCA3LCAxMiwgMTUsIDIzMiwgNiwgMTIsIDE1LCAyMzIsIDUsIDEyLCAxNSwgMjMyLCA0LCAxMiwgCisgICAgMTUsIDIzMiwgMywgMTIsIDE1LCAyMzIsIDIsIDEyLCAxNSwgMjMyLCAxLCAxMiwgMTUsIDIzMiwgMCwgMTIsIDE1LCAyMzEsIAorICAgIDI1NSwgMTIsIDE1LCAyMzEsIDI1NCwgMTIsIDE1LCAyMzEsIDI1MywgMTIsIDE1LCAyMzEsIDI1MiwgMTIsIDE1LCAyMzEsIAorICAgIDI1MSwgMTIsIDE1LCAyMzEsIDI1MCwgMTIsIDE1LCAyMzEsIDI0OSwgMTIsIDE1LCAyMzEsIDI0OCwgMTIsIDE1LCAyMzEsIAorICAgIDI0NywgMTIsIDE1LCAyMzEsIDI0NiwgMTIsIDE1LCAyMzEsIDI0NSwgMTIsIDE1LCAyMzEsIDI0NCwgMTIsIDE1LCAyMzEsIAorICAgIDI0MywgMTIsIDE1LCAyMzEsIDI0MiwgMTIsIDE1LCAyMzEsIDI0MSwgMTIsIDE1LCAyMzEsIDI0MCwgMTIsIDE1LCAyMzEsIAorICAgIDIzOSwgMTIsIDE1LCAyMzEsIDIzOCwgMTIsIDE1LCAyMzEsIDIzNywgMTIsIDE1LCAyMzEsIDIzNiwgMTIsIDE1LCAyMzEsIAorICAgIDIzNSwgMTIsIDE1LCAyMzEsIDIzNCwgMTIsIDE1LCAyMzEsIDIzMywgMTIsIDE1LCAyMzEsIDIzMiwgMTIsIDE1LCAyMzEsIAorICAgIDIzMSwgMTIsIDE1LCAyMzEsIDIzMCwgMTIsIDE1LCAyMzEsIDIyOSwgMTIsIDE1LCAyMzEsIDIyOCwgMTIsIDE1LCAyMzEsIAorICAgIDIyNywgMTIsIDE1LCAyMzEsIDIyNiwgMTIsIDE1LCAyMzEsIDIyNSwgMTIsIDE1LCAyMzEsIDIyNCwgMTIsIDE1LCAyMzEsIAorICAgIDIyMywgMTIsIDE1LCAyMzEsIDIyMiwgMTIsIDE1LCAyMzEsIDIyMSwgMTIsIDE1LCAyMzEsIDIyMCwgMTIsIDE1LCAyMzEsIAorICAgIDIxOSwgMTIsIDE1LCAyMzEsIDIxOCwgMTIsIDE1LCAyMzEsIDIxNywgMTIsIDE1LCAyMzEsIDIxNiwgMTIsIDE1LCAyMzEsIAorICAgIDIxNSwgMTIsIDE1LCAyMzEsIDIxNCwgMTIsIDE1LCAyMzEsIDIxMywgMTIsIDE1LCAyMzEsIDIxMiwgMTIsIDE1LCAyMzEsIAorICAgIDIxMSwgMTIsIDE1LCAyMzEsIDIxMCwgMTIsIDE1LCAyMzEsIDIwOSwgMTIsIDE1LCAyMzEsIDIwOCwgMTIsIDE1LCAyMzEsIAorICAgIDIwNywgMTIsIDE1LCAyMzEsIDIwNiwgMTIsIDE1LCAyMzEsIDIwNSwgMTIsIDE1LCAyMzEsIDIwNCwgMTIsIDE1LCAyMzEsIAorICAgIDIwMywgMTIsIDE1LCAyMzEsIDIwMiwgMTIsIDE1LCAyMzEsIDIwMSwgMTIsIDE1LCAyMzEsIDIwMCwgMTIsIDE1LCAyMzEsIAorICAgIDE5OSwgMTIsIDE1LCAyMzEsIDE5OCwgMTIsIDE1LCAyMzEsIDE5NywgMTIsIDE1LCAyMzEsIDE5NiwgMTIsIDE1LCAyMzEsIAorICAgIDE5NSwgMTIsIDE1LCAyMzEsIDE5NCwgMTIsIDE1LCAyMzEsIDE5MywgMTIsIDE1LCAyMzEsIDE5MiwgMTIsIDE1LCAyMzEsIAorICAgIDE5MSwgMTIsIDE1LCAyMzEsIDE5MCwgMTIsIDE1LCAyMzEsIDE4OSwgMTIsIDE1LCAyMzEsIDE4OCwgMTIsIDE1LCAyMzEsIAorICAgIDE4NywgMTIsIDE1LCAyMzEsIDE4NiwgMTIsIDE1LCAyMzEsIDE4NSwgMTIsIDE1LCAyMzEsIDE4NCwgMTIsIDE1LCAyMzEsIAorICAgIDE4MywgMTIsIDE1LCAyMzEsIDE4MiwgMTIsIDE1LCAyMzEsIDE4MSwgMTIsIDE1LCAyMzEsIDE4MCwgMTIsIDE1LCAyMzEsIAorICAgIDE3OSwgMTIsIDE1LCAyMzEsIDE3OCwgMTIsIDE1LCAyMzEsIDE3NywgMTIsIDE1LCAyMzEsIDE3NiwgMTIsIDE1LCAyMzEsIAorICAgIDE3NSwgMTIsIDE1LCAyMzEsIDE3NCwgMTIsIDE1LCAyMzEsIDE3MywgMTIsIDE1LCAyMzEsIDE3MiwgMTIsIDE1LCAyMzEsIAorICAgIDE3MSwgMTIsIDE1LCAyMzEsIDE3MCwgMTIsIDE1LCAyMzEsIDE2OSwgMTIsIDE1LCAyMzEsIDE2OCwgMTIsIDE1LCAyMzEsIAorICAgIDE2NywgMTIsIDE1LCAyMzEsIDE2NiwgMTIsIDE1LCAyMzEsIDE2NSwgMTIsIDE1LCAyMzEsIDE2NCwgMTIsIDE1LCAyMzEsIAorICAgIDE2MywgMTIsIDE1LCAyMzEsIDE2MiwgMTIsIDE1LCAyMzEsIDE2MSwgMTIsIDE1LCAyMzEsIDE2MCwgMTIsIDE1LCAyMzEsIAorICAgIDE1OSwgMTIsIDE1LCAyMzEsIDE1OCwgMTIsIDE1LCAyMzEsIDE1NywgMTIsIDE1LCAyMzEsIDE1NiwgMTIsIDE1LCAyMzEsIAorICAgIDE1NSwgMTIsIDE1LCAyMzEsIDE1NCwgMTIsIDE1LCAyMzEsIDE1MywgMTIsIDE1LCAyMzEsIDE1MiwgMTIsIDE1LCAyMzEsIAorICAgIDE1MSwgMTIsIDE1LCAyMzEsIDE1MCwgMTIsIDE1LCAyMzEsIDE0OSwgMTIsIDE1LCAyMzEsIDE0OCwgMTIsIDE1LCAyMzEsIAorICAgIDE0NywgMTIsIDE1LCAyMzEsIDE0NiwgMTIsIDE1LCAyMzEsIDE0NSwgMTIsIDE1LCAyMzEsIDE0NCwgMTIsIDE1LCAyMzEsIAorICAgIDE0MywgMTIsIDE1LCAyMzEsIDE0MiwgMTIsIDE1LCAyMzEsIDE0MSwgMTIsIDE1LCAyMzEsIDE0MCwgMTIsIDE1LCAyMzEsIAorICAgIDEzOSwgMTIsIDE1LCAyMzEsIDEzOCwgMTIsIDE1LCAyMzEsIDEzNywgMTIsIDE1LCAyMzEsIDEzNiwgMTIsIDE1LCAyMzEsIAorICAgIDEzNSwgMTIsIDE1LCAyMzEsIDEzNCwgMTIsIDE1LCAyMzEsIDEzMywgMTIsIDE1LCAyMzEsIDEzMiwgMTIsIDE1LCAyMzEsIAorICAgIDEzMSwgMTIsIDE1LCAyMzEsIDEzMCwgMTIsIDE1LCAyMzEsIDEyOSwgMTIsIDE1LCAyMzEsIDEyOCwgMTIsIDE1LCAyMzEsIAorICAgIDEyNywgMTIsIDE1LCAyMzEsIDEyNiwgMTIsIDE1LCAyMzEsIDEyNSwgMTIsIDE1LCAyMzEsIDEyNCwgMTIsIDE1LCAyMzEsIAorICAgIDEyMywgMTIsIDE1LCAyMzEsIDEyMiwgMTIsIDE1LCAyMzEsIDEyMSwgMTIsIDE1LCAyMzEsIDEyMCwgMTIsIDE1LCAyMzEsIAorICAgIDExOSwgMTIsIDE1LCAyMzEsIDExOCwgMTIsIDE1LCAyMzEsIDExNywgMTIsIDE1LCAyMzEsIDExNiwgMTIsIDE1LCAyMzEsIAorICAgIDExNSwgMTIsIDE1LCAyMzEsIDExNCwgMTIsIDE1LCAyMzEsIDExMywgMTIsIDE1LCAyMzEsIDExMiwgMTIsIDE1LCAyMzEsIAorICAgIDExMSwgMTIsIDE1LCAyMzEsIDExMCwgMTIsIDE1LCAyMzEsIDEwOSwgMTIsIDE1LCAyMzEsIDEwOCwgMTIsIDE1LCAyMzEsIAorICAgIDEwNywgMTIsIDE1LCAyMzEsIDEwNiwgMTIsIDE1LCAyMzEsIDEwNSwgMTIsIDE1LCAyMzEsIDEwNCwgMTIsIDE1LCAyMzEsIAorICAgIDEwMywgMTIsIDE1LCAyMzEsIDEwMiwgMTIsIDE1LCAyMzEsIDEwMSwgMTIsIDE1LCAyMzEsIDEwMCwgMTIsIDE1LCAyMzEsIAorICAgIDk5LCAxMiwgMTUsIDIzMSwgOTgsIDEyLCAxNSwgMjMxLCA5NywgMTIsIDE1LCAyMzEsIDk2LCAxMiwgMTUsIDIzMSwgOTUsIAorICAgIDEyLCAxNSwgMjMxLCA5NCwgMTIsIDE1LCAyMzEsIDkzLCAxMiwgMTUsIDIzMSwgOTIsIDEyLCAxNSwgMjMxLCA5MSwgMTIsIAorICAgIDE1LCAyMzEsIDkwLCAxMiwgMTUsIDIzMSwgODksIDEyLCAxNSwgMjMxLCA4OCwgMTIsIDE1LCAyMzEsIDg3LCAxMiwgMTUsIAorICAgIDIzMSwgODYsIDEyLCAxNSwgMjMxLCA4NSwgMTIsIDE1LCAyMzEsIDg0LCAxMiwgMTUsIDIzMSwgODMsIDEyLCAxNSwgMjMxLCAKKyAgICA4MiwgMTIsIDE1LCAyMzEsIDgxLCAxMiwgMTUsIDIzMSwgODAsIDEyLCAxNSwgMjMxLCA3OSwgMTIsIDE1LCAyMzEsIDc4LCAKKyAgICAxMiwgMTUsIDIzMSwgNzcsIDEyLCAxNSwgMjMxLCA3NiwgMTIsIDE1LCAyMzEsIDc1LCAxMiwgMTUsIDIzMSwgNzQsIDEyLCAKKyAgICAxNSwgMjMxLCA3MywgMTIsIDE1LCAyMzEsIDcyLCAxMiwgMTUsIDIzMSwgNzEsIDEyLCAxNSwgMjMxLCA3MCwgMTIsIDE1LCAKKyAgICAyMzEsIDY5LCAxMiwgMTUsIDIzMSwgNjgsIDEyLCAxNSwgMjMxLCA2NywgMTIsIDE1LCAyMzEsIDY2LCAxMiwgMTUsIDIzMSwgCisgICAgNjUsIDEyLCAxNSwgMjMxLCA2NCwgMTIsIDE1LCAyMzEsIDYzLCAxMiwgMTUsIDIzMSwgNjIsIDEyLCAxNSwgMjMxLCA2MSwgCisgICAgMTIsIDE1LCAyMzEsIDYwLCAxMiwgMTUsIDIzMSwgNTksIDEyLCAxNSwgMjMxLCA1OCwgMTIsIDE1LCAyMzEsIDU3LCAxMiwgCisgICAgMTUsIDIzMSwgNTYsIDEyLCAxNSwgMjMxLCA1NSwgMTIsIDE1LCAyMzEsIDU0LCAxMiwgMTUsIDIzMSwgNTMsIDEyLCAxNSwgCisgICAgMjMxLCA1MiwgMTIsIDE1LCAyMzEsIDUxLCAxMiwgMTUsIDIzMSwgNTAsIDEyLCAxNSwgMjMxLCA0OSwgMTIsIDE1LCAyMzEsIAorICAgIDQ4LCAxMiwgMTUsIDIzMSwgNDcsIDEyLCAxNSwgMjMxLCA0NiwgMTIsIDE1LCAyMzEsIDQ1LCAxMiwgMTUsIDIzMSwgNDQsIAorICAgIDEyLCAxNSwgMjMxLCA0MywgMTIsIDE1LCAyMzEsIDQyLCAxMiwgMTUsIDIzMSwgNDEsIDEyLCAxNSwgMjMxLCA0MCwgMTIsIAorICAgIDE1LCAyMzEsIDM5LCAxMiwgMTUsIDIzMSwgMzgsIDEyLCAxNSwgMjMxLCAzNywgMTIsIDE1LCAyMzEsIDM2LCAxMiwgMTUsIAorICAgIDIzMSwgMzUsIDEyLCAxNSwgMjMxLCAzNCwgMTIsIDE1LCAyMzEsIDMzLCAxMiwgMTUsIDIzMSwgMzIsIDEyLCAxNSwgMjMxLCAKKyAgICAzMSwgMTIsIDE1LCAyMzEsIDMwLCAxMiwgMTUsIDIzMSwgMjksIDEyLCAxNSwgMjMxLCAyOCwgMTIsIDE1LCAyMzEsIDI3LCAKKyAgICAxMiwgMTUsIDIzMSwgMjYsIDEyLCAxNSwgMjMxLCAyNSwgMTIsIDE1LCAyMzEsIDI0LCAxMiwgMTUsIDIzMSwgMjMsIDEyLCAKKyAgICAxNSwgMjMxLCAyMiwgMTIsIDE1LCAyMzEsIDIxLCAxMiwgMTUsIDIzMSwgMjAsIDEyLCAxNSwgMjMxLCAxOSwgMTIsIDE1LCAKKyAgICAyMzEsIDE4LCAxMiwgMTUsIDIzMSwgMTcsIDEyLCAxNSwgMjMxLCAxNiwgMTIsIDE1LCAyMzEsIDE1LCAxMiwgMTUsIDIzMSwgCisgICAgMTQsIDEyLCAxNSwgMjMxLCAxMywgMTIsIDE1LCAyMzEsIDEyLCAxMiwgMTUsIDIzMSwgMTEsIDEyLCAxNSwgMjMxLCAxMCwgCisgICAgMTIsIDE1LCAyMzEsIDksIDEyLCAxNSwgMjMxLCA4LCAxMiwgMTUsIDIzMSwgNywgMTIsIDE1LCAyMzEsIDYsIDEyLCAxNSwgCisgICAgMjMxLCA1LCAxMiwgMTUsIDIzMSwgNCwgMTIsIDE1LCAyMzEsIDMsIDEyLCAxNSwgMjMxLCAyLCAxMiwgMTUsIDIzMSwgMSwgCisgICAgMTIsIDE1LCAyMzEsIDAsIDEyLCAxNSwgMjMwLCAyNTUsIDEyLCAxNSwgMjMwLCAyNTQsIDEyLCAxNSwgMjMwLCAyNTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyNTIsIDEyLCAxNSwgMjMwLCAyNTEsIDEyLCAxNSwgMjMwLCAyNTAsIDEyLCAxNSwgMjMwLCAyNDksIDEyLCAKKyAgICAxNSwgMjMwLCAyNDgsIDEyLCAxNSwgMjMwLCAyNDcsIDEyLCAxNSwgMjMwLCAyNDYsIDEyLCAxNSwgMjMwLCAyNDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDQsIDEyLCAxNSwgMjMwLCAyNDMsIDEyLCAxNSwgMjMwLCAyNDIsIDEyLCAxNSwgMjMwLCAyNDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyNDAsIDEyLCAxNSwgMjMwLCAyMzksIDEyLCAxNSwgMjMwLCAyMzgsIDEyLCAxNSwgMjMwLCAyMzcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzYsIDEyLCAxNSwgMjMwLCAyMzUsIDEyLCAxNSwgMjMwLCAyMzQsIDEyLCAxNSwgMjMwLCAyMzMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMzIsIDEyLCAxNSwgMjMwLCAyMzEsIDEyLCAxNSwgMjMwLCAyMzAsIDEyLCAxNSwgMjMwLCAyMjksIDEyLCAKKyAgICAxNSwgMjMwLCAyMjgsIDEyLCAxNSwgMjMwLCAyMjcsIDEyLCAxNSwgMjMwLCAyMjYsIDEyLCAxNSwgMjMwLCAyMjUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjQsIDEyLCAxNSwgMjMwLCAyMjMsIDEyLCAxNSwgMjMwLCAyMjIsIDEyLCAxNSwgMjMwLCAyMjEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMjAsIDEyLCAxNSwgMjMwLCAyMTksIDEyLCAxNSwgMjMwLCAyMTgsIDEyLCAxNSwgMjMwLCAyMTcsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTYsIDEyLCAxNSwgMjMwLCAyMTUsIDEyLCAxNSwgMjMwLCAyMTQsIDEyLCAxNSwgMjMwLCAyMTMsIDEyLCAKKyAgICAxNSwgMjMwLCAyMTIsIDEyLCAxNSwgMjMwLCAyMTEsIDEyLCAxNSwgMjMwLCAyMTAsIDEyLCAxNSwgMjMwLCAyMDksIDEyLCAKKyAgICAxNSwgMjMwLCAyMDgsIDEyLCAxNSwgMjMwLCAyMDcsIDEyLCAxNSwgMjMwLCAyMDYsIDEyLCAxNSwgMjMwLCAyMDUsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDQsIDEyLCAxNSwgMjMwLCAyMDMsIDEyLCAxNSwgMjMwLCAyMDIsIDEyLCAxNSwgMjMwLCAyMDEsIDEyLCAKKyAgICAxNSwgMjMwLCAyMDAsIDEyLCAxNSwgMjMwLCAxOTksIDEyLCAxNSwgMjMwLCAxOTgsIDEyLCAxNSwgMjMwLCAxOTcsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTYsIDEyLCAxNSwgMjMwLCAxOTUsIDEyLCAxNSwgMjMwLCAxOTQsIDEyLCAxNSwgMjMwLCAxOTMsIDEyLCAKKyAgICAxNSwgMjMwLCAxOTIsIDIyNSwgNzcsIDIwNywgMTMsIDE2NSwgMjA4LCAyNDQsIDE2NSwgMjM4LCA0MywgODEsIDE2NSwgCisgICAgMjE0LCA2MywgODEsIDE2NSwgNDEsIDU0LCAxNjUsIDI0MCwgMTk0LCA1NCwgMTY1LCAyMTYsIDI3LCA1NCwgMTY1LCAyNTEsIAorICAgIDg5LCAxNjUsIDI1MSwgMTMsIDE2NSwgNDksIDIxNiwgMTE1LCAxNjUsIDUxLCAyMTYsIDExNSwgMTY1LCAyNTAsIDE2NSwgCisgICAgMTY1LCA5MywgNTQsIDE2NSwgMjQ2LCA3MCwgMTY1LCAyMzMsIDMyLCAxNjUsIDIzNiwgMTgzLCAyMDgsIDc2LCAxNjUsIAorICAgIDIwOSwgMTYsIDE2NSwgMTcsIDE5OSwgODEsIDE2NSwgMTcsIDEwMiwgMTY1LCAxNywgMTA1LCAxNjUsIDE3LCAxNDcsIDE2NSwgCisgICAgMTcsIDE0OSwgMTY1LCAxNywgMTY0LCAxNjUsIDE3LCAxODcsIDE2NSwgMTcsIDIxMCwgMTM1LCAxNjUsIDE3LCAxOTIsIAorICAgIDE2NSwgMTcsIDIxOSwgMTEzLCAxNjUsIDI0NiwgNzksIDE2NSwgMjEwLCAxNjcsIDE2NSwgMjI0LCAyNDEsIDU0LCAxNjUsIAorICAgIDIzOCwgMTIyLCA1NCwgMTY1LCAyMzUsIDY3LCA1NCwgMTY1LCAyMTQsIDc5LCA4MSwgMTY1LCAyNDYsIDY4LCAyNTAsIDE1NSwgCisgICAgMTY1LCA4LCA2LCAxLCA2MiwgMTY1LCA4LCA2LCAxLCAyNTAsIDEwMywgMTY1LCA4LCA2LCAxLCAyNDcsIDIyMywgMTY1LCA4LCAKKyAgICA2LCAxLCAyNDIsIDE1MywgMTY1LCA4LCA2LCAxLCA3MiwgMTY1LCA4LCA2LCAxLCAyMzgsIDUsIDE2NSwgOCwgNiwgMSwgCisgICAgMjM2LCAxNTYsIDE2NSwgOCwgNiwgMSwgMjM0LCAyNDcsIDE2NSwgOCwgNiwgMSwgNzAsIDE2NSwgOCwgNiwgMSwgMjI3LCAKKyAgICAyNTEsIDE2NSwgOCwgNiwgMSwgMjI3LCAxMTgsIDE2NSwgOCwgNiwgMSwgMTU2LCAxNjUsIDgsIDYsIDEsIDIyMywgMjQzLCAKKyAgICAxNjUsIDgsIDYsIDEsIDIyMCwgMjE0LCAxNjUsIDgsIDYsIDEsIDc0LCAxNjUsIDgsIDYsIDEsIDIxNiwgMjI2LCAxNjUsIDgsIAorICAgIDYsIDEsIDIxNCwgMTY3LCAxNjUsIDgsIDYsIDEsIDE0NiwgMTY1LCA4LCA2LCAxLCAyMTIsIDEyMiwgMTY1LCA4LCA2LCAxLCAKKyAgICAyMDcsIDgzLCAxNjUsIDgsIDYsIDEsIDY2LCAxNjUsIDgsIDYsIDEsIDIwMywgMTY4LCAxNjUsIDgsIDYsIDEsIDIwMSwgCisgICAgMTQ3LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTk1LCAxNjUsIDgsIDYsIDEsIDIwMCwgMTIzLCAxNjUsIDgsIDYsIDEsIDE5OSwgCisgICAgMTU3LCAxNjUsIDQ5LCA1MiwgMTU5LCAxNjUsIDIxMywgMTA2LCAyMDksIDE2LCAxNjUsIDUxLCA1MiwgMTU5LCAxNjUsIAorICAgIDI0NiwgMTQ3LCAyNTEsIDI1MSwgMTY1LCAxMjgsIDIyNCwgMTc2LCAxNjUsIDIzNSwgNzQsIDI1MSwgMjUxLCAxNjUsIDgsIAorICAgIDQsIDEsIDYyLCAxNjUsIDgsIDQsIDEsIDI1MCwgMTAzLCAxNjUsIDgsIDQsIDEsIDI0NywgMjIzLCAxNjUsIDgsIDQsIDEsIAorICAgIDI0MiwgMTUzLCAxNjUsIDgsIDQsIDEsIDcyLCAxNjUsIDgsIDQsIDEsIDIzOCwgNSwgMTY1LCA4LCA0LCAxLCAyMzYsIDE1NiwgCisgICAgMTY1LCA4LCA0LCAxLCAyMzQsIDI0NywgMTY1LCA4LCA0LCAxLCA3MCwgMTY1LCA4LCA0LCAxLCAyMjcsIDI1MSwgMTY1LCA4LCAKKyAgICA0LCAxLCAyMjcsIDExOCwgMTY1LCA4LCA0LCAxLCAxNTYsIDE2NSwgOCwgNCwgMSwgMjIzLCAyNDMsIDE2NSwgOCwgNCwgMSwgCisgICAgMjIwLCAyMTQsIDE2NSwgOCwgNCwgMSwgNzQsIDE2NSwgOCwgNCwgMSwgMjE2LCAyMjYsIDE2NSwgOCwgNCwgMSwgMjE0LCAKKyAgICAxNjcsIDE2NSwgOCwgNCwgMSwgMTQ2LCAxNjUsIDgsIDQsIDEsIDIxMiwgMTIyLCAxNjUsIDgsIDQsIDEsIDIwNywgODMsIAorICAgIDE2NSwgOCwgNCwgMSwgNjYsIDE2NSwgOCwgNCwgMSwgMjAzLCAxNjgsIDE2NSwgOCwgNCwgMSwgMjAxLCAxNDcsIDE2NSwgOCwgCisgICAgNCwgMSwgMjAwLCAxOTUsIDE2NSwgOCwgNCwgMSwgMjAwLCAxMjMsIDE2NSwgOCwgNCwgMSwgMTk5LCAxNTcsIDE2NSwgNDksIAorICAgIDI0MiwgMTk2LCAxNTksIDE2NSwgODMsIDIyNCwgMTc2LCAxNjUsIDUxLCAyNDIsIDE5NiwgMTU5LCAxNjUsIDIwNSwgMjQwLCAKKyAgICAyNDcsIDE1NywgMjA3LCAxMywgNTgsIDIxMSwgOTYsIDU4LCAyMTEsIDg1LCA1OCwgMjExLCA3NCwgNTgsIDIxMSwgNjIsIAorICAgIDU4LCAyMTEsIDUxLCA1OCwgMjExLCA0MCwgNTgsIDIxMSwgMjksIDU4LCAyMTEsIDE4LCA1OCwgMjExLCA3LCA1OCwgMjEwLCAKKyAgICAyNTUsIDU4LCAyMTAsIDI1NCwgNTgsIDIxMCwgMjUzLCA1OCwgMjEwLCAyNTIsIDU4LCAyMTAsIDI1MCwgNTgsIDIxMCwgCisgICAgMjQ5LCA1OCwgMjEwLCAyNDgsIDU4LCAyMTAsIDI0NywgNTgsIDIxMCwgMjQ2LCA1OCwgMjEwLCAyNDUsIDU4LCAyMTAsIAorICAgIDI0NCwgNTgsIDIxMCwgMjQzLCA1OCwgMjEwLCAyNDIsIDU4LCAyMTAsIDI0MSwgNTgsIDIxMCwgMjM5LCA1OCwgMjEwLCAKKyAgICAyMzgsIDU4LCAyMTAsIDIzNywgNTgsIDIxMCwgMjM2LCA1OCwgMjEwLCAyMzUsIDU4LCAyMTAsIDIzNCwgNTgsIDIxMCwgCisgICAgMjMzLCA1OCwgMjEwLCAyMzIsIDU4LCAyMTAsIDIzMSwgNTgsIDIxMCwgMjMwLCA1OCwgMjEwLCAyMjgsIDU4LCAyMTAsIAorICAgIDIyNywgNTgsIDIxMCwgMjI2LCA1OCwgMjEwLCAyMjUsIDU4LCAyMTAsIDIyNCwgNTgsIDIxMCwgMjIzLCA1OCwgMjEwLCAKKyAgICAyMjIsIDU4LCAyMTAsIDIyMSwgNTgsIDIxMCwgMjIwLCA1OCwgMjEwLCAyMTksIDU4LCAyMTAsIDIxNywgNTgsIDIxMCwgCisgICAgMjE2LCA1OCwgMjEwLCAyMTUsIDU4LCAyMTAsIDIxNCwgNTgsIDIxMCwgMjEzLCA1OCwgMjEwLCAyMTIsIDU4LCAyMTAsIAorICAgIDIxMSwgNTgsIDIxMCwgMjEwLCA1OCwgMjEwLCAyMDksIDU4LCAyMTAsIDIwOCwgNTgsIDIxMCwgMjA2LCA1OCwgMjEwLCAKKyAgICAyMDUsIDU4LCAyMTAsIDIwNCwgNTgsIDIxMCwgMjAzLCA1OCwgMjEwLCAyMDIsIDU4LCAyMTAsIDIwMSwgNTgsIDIxMCwgCisgICAgMjAwLCA1OCwgMjEwLCAxOTksIDU4LCAyMTAsIDE5OCwgNTgsIDIxMCwgMTk3LCA1OCwgMjEwLCAxOTUsIDU4LCAyMTAsIAorICAgIDE5NCwgNTgsIDIxMCwgMTkzLCA1OCwgMjEwLCAxOTIsIDU4LCAyMTAsIDE5MSwgNTgsIDIxMCwgMTkwLCA1OCwgMjEwLCAKKyAgICAxODksIDU4LCAyMTAsIDE4OCwgNTgsIDIxMCwgMTg3LCA1OCwgMjEwLCAxODYsIDU4LCAyMTAsIDE4NCwgNTgsIDIxMCwgCisgICAgMTgzLCA1OCwgMjEwLCAxODIsIDU4LCAyMTAsIDE4MSwgNTgsIDIxMCwgMTgwLCA1OCwgMjEwLCAxNzksIDU4LCAyMTAsIAorICAgIDE3OCwgNTgsIDIxMCwgMTc3LCA1OCwgMjEwLCAxNzYsIDU4LCAyMTAsIDE3NSwgNTgsIDIxMSwgMTcyLCA1OCwgMjExLCAKKyAgICAxNzEsIDU4LCAyMTEsIDE3MCwgNTgsIDIxMSwgMTY5LCA1OCwgMjExLCAxNjgsIDU4LCAyMTEsIDE2NywgNTgsIDIxMSwgCisgICAgMTY2LCA1OCwgMjExLCAxNjUsIDU4LCAyMTEsIDE2NCwgNTgsIDIxMSwgMTYzLCA1OCwgMjExLCAxNjEsIDU4LCAyMTEsIAorICAgIDE2MCwgNTgsIDIxMSwgMTU5LCA1OCwgMjExLCAxNTgsIDU4LCAyMTEsIDE1NywgNTgsIDIxMSwgMTU2LCA1OCwgMjExLCAKKyAgICAxNTUsIDU4LCAyMTEsIDE1NCwgNTgsIDIxMSwgMTUzLCA1OCwgMjExLCAxNTIsIDU4LCAyMTEsIDE1MCwgNTgsIDIxMSwgCisgICAgMTQ5LCA1OCwgMjExLCAxNDgsIDU4LCAyMTEsIDE0NywgNTgsIDIxMSwgMTQ2LCA1OCwgMjExLCAxNDUsIDU4LCAyMTEsIAorICAgIDE0NCwgNTgsIDIxMSwgMTQzLCA1OCwgMjExLCAxNDIsIDU4LCAyMTEsIDE0MSwgNTgsIDIxMSwgMTM5LCA1OCwgMjExLCAKKyAgICAxMzgsIDU4LCAyMTEsIDEzNywgNTgsIDIxMSwgMTM2LCA1OCwgMjExLCAxMzUsIDU4LCAyMTEsIDEzNCwgNTgsIDIxMSwgCisgICAgMTMzLCA1OCwgMjExLCAxMzIsIDU4LCAyMTEsIDEzMSwgNTgsIDIxMSwgMTMwLCA1OCwgMjExLCAxMjgsIDU4LCAyMTEsIAorICAgIDEyNywgNTgsIDIxMSwgMTI2LCA1OCwgMjExLCAxMjUsIDU4LCAyMTEsIDEyNCwgNTgsIDIxMSwgMTIzLCA1OCwgMjExLCAKKyAgICAxMjIsIDU4LCAyMTEsIDEyMSwgNTgsIDIxMSwgMTIwLCA1OCwgMjExLCAxMTksIDU4LCAyMTEsIDExNywgNTgsIDIxMSwgCisgICAgMTE2LCA1OCwgMjExLCAxMTUsIDU4LCAyMTEsIDExNCwgNTgsIDIxMSwgMTEzLCA1OCwgMjExLCAxMTIsIDU4LCAyMTEsIAorICAgIDExMSwgNTgsIDIxMSwgMTEwLCA1OCwgMjExLCAxMDksIDU4LCAyMTEsIDEwOCwgNTgsIDIxMSwgMTA2LCA1OCwgMjExLCAKKyAgICAxMDUsIDU4LCAyMTEsIDEwNCwgNTgsIDIxMSwgMTAzLCA1OCwgMjExLCAxMDIsIDU4LCAyMTEsIDEwMSwgNTgsIDIxMSwgCisgICAgMTAwLCA1OCwgMjExLCA5OSwgNTgsIDIxMSwgOTgsIDU4LCAyMTEsIDk3LCA1OCwgMjExLCA5NSwgNTgsIDIxMSwgOTQsIDU4LCAKKyAgICAyMTEsIDkzLCA1OCwgMjExLCA5MiwgNTgsIDIxMSwgOTEsIDU4LCAyMTEsIDkwLCA1OCwgMjExLCA4OSwgNTgsIDIxMSwgODgsIAorICAgIDU4LCAyMTEsIDg3LCA1OCwgMjExLCA4NiwgNTgsIDIxMSwgODQsIDU4LCAyMTEsIDgzLCA1OCwgMjExLCA4MiwgNTgsIDIxMSwgCisgICAgODEsIDU4LCAyMTEsIDgwLCA1OCwgMjExLCA3OSwgNTgsIDIxMSwgNzgsIDU4LCAyMTEsIDc3LCA1OCwgMjExLCA3NiwgNTgsIAorICAgIDIxMSwgNzUsIDU4LCAyMTEsIDczLCA1OCwgMjExLCA3MiwgNTgsIDIxMSwgNzEsIDU4LCAyMTEsIDcwLCA1OCwgMjExLCA2OSwgCisgICAgNTgsIDIxMSwgNjgsIDU4LCAyMTEsIDY3LCA1OCwgMjExLCA2NiwgNTgsIDIxMSwgNjUsIDU4LCAyMTEsIDY0LCA1OCwgMjExLCAKKyAgICA2MSwgNTgsIDIxMSwgNjAsIDU4LCAyMTEsIDU5LCA1OCwgMjExLCA1OCwgNTgsIDIxMSwgNTcsIDU4LCAyMTEsIDU2LCA1OCwgCisgICAgMjExLCA1NSwgNTgsIDIxMSwgNTQsIDU4LCAyMTEsIDUzLCA1OCwgMjExLCA1MiwgNTgsIDIxMSwgNTAsIDU4LCAyMTEsIDQ5LCAKKyAgICA1OCwgMjExLCA0OCwgNTgsIDIxMSwgNDcsIDU4LCAyMTEsIDQ2LCA1OCwgMjExLCA0NSwgNTgsIDIxMSwgNDQsIDU4LCAyMTEsIAorICAgIDQzLCA1OCwgMjExLCA0MiwgNTgsIDIxMSwgNDEsIDU4LCAyMTEsIDM5LCA1OCwgMjExLCAzOCwgNTgsIDIxMSwgMzcsIDU4LCAKKyAgICAyMTEsIDM2LCA1OCwgMjExLCAzNSwgNTgsIDIxMSwgMzQsIDU4LCAyMTEsIDMzLCA1OCwgMjExLCAzMiwgNTgsIDIxMSwgMzEsIAorICAgIDU4LCAyMTEsIDMwLCA1OCwgMjExLCAyOCwgNTgsIDIxMSwgMjcsIDU4LCAyMTEsIDI2LCA1OCwgMjExLCAyNSwgNTgsIDIxMSwgCisgICAgMjQsIDU4LCAyMTEsIDIzLCA1OCwgMjExLCAyMiwgNTgsIDIxMSwgMjEsIDU4LCAyMTEsIDIwLCA1OCwgMjExLCAxOSwgNTgsIAorICAgIDIxMSwgMTcsIDU4LCAyMTEsIDE2LCA1OCwgMjExLCAxNSwgNTgsIDIxMSwgMTQsIDU4LCAyMTEsIDEzLCA1OCwgMjExLCAxMiwgCisgICAgNTgsIDIxMSwgMTEsIDU4LCAyMTEsIDEwLCA1OCwgMjExLCA5LCA1OCwgMjExLCA4LCA1OCwgMjExLCA2LCA1OCwgMjExLCA1LCAKKyAgICA1OCwgMjExLCA0LCA1OCwgMjExLCAzLCA1OCwgMjExLCAyLCA1OCwgMjExLCAxLCA1OCwgMjExLCAwLCAyMTgsIDk3LCAyMTgsIAorICAgIDk5LCAyMDgsIDEwNSwgNzYsIDIzNCwgMTMzLCAyMDksIDE5LCAyMDgsIDEwNSwgNzYsIDIwNiwgMTI2LCAyMDgsIDI2LCAKKyAgICAyMzgsIDE3MSwgNzYsIDIwNiwgMTI2LCAyMzgsIDcxLCAyMzgsIDE3MSwgNzYsIDIwNSwgMTE4LCAyMzgsIDEzNCwgMjM4LCAKKyAgICAxNTgsIDIzOCwgMTU5LCAyNTEsIDI0MywgMjUxLCAyNDQsIDI1MSwgMTM5LCAyNDgsIDIzMywgMjQ5LCAxMjMsIDI0OCwgNDIsIAorICAgIDE3MSwgMjA3LCAxOSwgMjMzLCAxNzcsIDIwNywgMTksIDIzMywgMTAyLCAyMDcsIDI0LCAyMjQsIDE3NywgMjM3LCAxMzgsIAorICAgIDIyMCwgOCwgMjI0LCAxNzYsIDIzOCwgMTcxLCA3NiwgMjI0LCAxNzYsIDIyNCwgMjI1LCAyMTksIDQ3LCAyMzgsIDEzNywgCisgICAgMjI0LCAxNzcsIDIwNywgMTksIDgzLCAyMDcsIDE5LCAyMDEsIDE2OCwgMjM2LCAyNDIsIDIzNywgMTM4LCAyMzcsIDExNiwgCisgICAgMjQ3LCAxMjEsIDIxMywgMTA5LCAyNDIsIDI1MiwgMjEwLCAyOSwgMjE2LCAyNTQsIDIyNCwgMTAyLCAxMDIsIDIwOSwgMjksIAorICAgIDIxMCwgMjksIDIyOCwgMTE3LCAyMjQsIDEwMiwgMTk5LCA4MSwgMjA5LCAxODIsIDI0MSwgMjM5LCAyMjQsIDE2NywgMjM4LCAKKyAgICA5NiwgMjQwLCAyMjEsIDI0MSwgMTA3LCAyNDMsIDM0LCAxMDIsIDI0MSwgMjI4LCAyNDEsIDEwNywgMjQzLCAzNCwgMTA1LCAKKyAgICAyNDEsIDIyNywgMjQxLCAxMDcsIDI0MywgMzQsIDE0NywgMjQxLCAyMjYsIDI0MSwgMTA3LCAyNDMsIDM0LCAxNDksIDI0MSwgCisgICAgMjI1LCAxODksIDI1MSwgMjQzLCAyMjAsIDE0MCwgMjA3LCAxMDksIDIyOCwgMTgwLCAyMDcsIDExMywgMjM4LCAxNzEsIDc2LCAKKyAgICAyMDUsIDExOSwgMjQ4LCAxMzQsIDIzOCwgNzgsIDI0NywgMTU2LCAyNDcsIDE1OCwgMjM4LCAxNzEsIDc2LCAyMjIsIDY1LCAKKyAgICAyMzgsIDEzNSwgMjA4LCAwLCAyMDgsIDE3LCAyMzgsIDk2LCAyMzgsIDk3LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTQ5LCAyMzcsIAorICAgIDk3LCAyMTAsIDE1NCwgMjM2LCAxOTMsIDIyOCwgOTIsIDIxMCwgMTU1LCAxNDcsIDIzNSwgNTgsIDIxMCwgMTU0LCAyMzUsIAorICAgIDU1LCAyMjgsIDkyLCAyMTAsIDE1NSwgMTA1LCAyMTMsIDE4MSwgMjEwLCAxNTQsIDIxMiwgMTgwLCAyMjgsIDkyLCAyMTAsIAorICAgIDE1NSwgMTAyLCAyMDMsIDI0MCwgMjEwLCAxNTQsIDIwMywgMTk3LCAyMDgsIDI0NywgMjQxLCAxNDYsIDI0MSwgMTQ4LCAKKyAgICAyMTYsIDE5OSwgMjQ3LCAyMCwgMjE2LCAyMDEsIDEyMiwgMjE3LCAxMjgsIDIxNSwgMTgsIDIzMywgMTgwLCAyNDgsIDYxLCAKKyAgICAyMTYsIDE3LCAyMzQsIDk5LCAyNDgsIDc0LCAyMTgsIDI0MiwgMjQ4LCA2MSwgMjM0LCA5OSwgMjIwLCAxMDMsIDIyOCwgCisgICAgMTAzLCAyMjgsIDEwNSwgMjIwLCAyLCAyMjQsIDE3NiwgMjIwLCAyNSwgMjA4LCAxMDUsIDc2LCAyMTEsIDE3NywgMjUwLCAKKyAgICAyMjgsIDIwOCwgMTc5LCAyMzgsIDE3MSwgNzYsIDIxMSwgMTc3LCAyNTAsIDIyOCwgMjM4LCA5OSwgMTcxLCAyMDcsIDIwLCAKKyAgICAyMTAsIDE0MSwgMjMzLCAxNzcsIDIwNywgMjAsIDIxMCwgMTQxLCAyMzMsIDk5LCAxNzEsIDIwNywgMjAsIDMsIDIyNywgCisgICAgMTMwLCAyMzMsIDE3NywgMjA3LCAyMCwgMywgMjI3LCAxMzAsIDIzMywgMTAwLCAyMjQsIDE3NywgMjA3LCAyMCwgMjEwLCAKKyAgICAxNDEsIDgzLCAyMDcsIDIwLCAyMTAsIDE0MSwgMjAxLCAxNjcsIDIxNiwgMTA4LCAyMjQsIDE3NywgMjM2LCAyMzMsIDIxNiwgCisgICAgMTA4LCAyMjQsIDE3NywgMjM5LCAxNjcsIDIxNSwgMTI0LCAyMTYsIDEwOCwgMjI0LCAxNzcsIDI0OSwgMTIyLCAyMTYsIAorICAgIDEwOCwgMjI0LCAxNzcsIDIwMywgMjI4LCAyMTUsIDExOSwgMjEzLCAxMDYsIDIyNCwgMTc3LCAyMzcsIDEzOCwgMjEzLCAKKyAgICAxMDYsIDIyOCwgMTAzLCAyMTMsIDg4LCAyMDksIDEzOSwgMjEwLCAyOSwgMTA1LCAyMDksIDEzNiwgMjA4LCAxODEsIDIwOSwgCisgICAgMTM5LCAyMTAsIDI5LCAxNDcsIDIwOSwgMTM1LCAyMDgsIDE4MCwgMjQxLCAxMDcsIDI0MywgMzQsIDIwOCwgNDksIDI0MSwgCisgICAgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAxMDIsIDIxNSwgNCwgMjAzLCAxOTQsIDIxNCwgMjIzLCAyMTUsIDQsIDIwMywgMTk2LCAKKyAgICAxMDUsIDIxNSwgNCwgMjAzLCAxOTMsIDIxNCwgMjIyLCAyMTAsIDE0MiwgMjA1LCAxMTcsIDIwOCwgMTA0LCAyMDgsIDMyLCAKKyAgICAyNDcsIDE1NywgMjQ3LCAyMCwgMjQ3LCA5NSwgMjIyLCAyNCwgMjAxLCAxMDYsIDIyMCwgMjMyLCAyMDgsIDEwNSwgNzYsIAorICAgIDIzNSwgNDMsIDI1MCwgMjI4LCAyMDgsIDEwNSwgNzYsIDIxNCwgMjQxLCAyNTAsIDIyOCwgMjA4LCAyNDYsIDIzOCwgMTcxLCAKKyAgICA3NiwgMjM1LCA0MywgMjUwLCAyMjgsIDIzOCwgMTcxLCA3NiwgMjE0LCAyNDEsIDI1MCwgMjI4LCAyMzgsIDEzMiwgMjA4LCAKKyAgICAxMDUsIDc2LCAyMDgsIDQ5LCAyMDksIDUsIDIwOSwgMTM5LCAyMzUsIDc5LCAxNzEsIDIyOCwgNTIsIDIxMCwgMTE5LCAyMDksIAorICAgIDEzOSwgMTcxLCAyMjgsIDUyLCAyMTEsIDIxNywgMjQzLCAzNCwgMjEwLCAxNTEsIDIyOCwgNTIsIDI0MiwgMjE1LCAyMDgsIAorICAgIDUwLCAyMDYsIDE1MiwgMjA4LCAxMjMsIDIxNywgNDUsIDIwNywgOTgsIDI0NiwgNjksIDIxNywgMTMsIDIxNSwgNSwgMjIyLCAKKyAgICAyMywgMjE1LCAxMDksIDI1MSwgOSwgMjE0LCAyNTUsIDI0NiwgNjksIDI1MSwgMjUsIDIyMCwgOTEsIDIwOSwgMTkxLCA4LCAKKyAgICA2LCAxLCAyMzUsIDE5OSwgOCwgNCwgMSwgMjM1LCAxOTksIDI0NywgMzksIDI1MSwgMTE4LCAyMDcsIDEwMywgMjA4LCA2LCAKKyAgICAyNDYsIDgwLCAyMDksIDg2LCAyMjUsIDI4LCAyMjcsIDYzLCAxLCAyMjQsIDEyOSwgMjI1LCA3NSwgMSwgMjM3LCAxNCwgCisgICAgMjM3LCA1LCAyMjUsIDc1LCAxLCAyMzcsIDE0LCAyMzcsIDE1MCwgMjI1LCA3NSwgMSwgMjEzLCAxLCAyMjUsIDc1LCAxLCAKKyAgICAyMjQsIDExMCwgNzksIDEzNCwgMjQ4LCAxNDYsIDIxMCwgNCwgMjM1LCAxNjIsIDIyMSwgMjI5LCAyMTMsIDk2LCAyMzYsIAorICAgIDE3MCwgMjM2LCAxNjksIDIzNiwgMTY4LCAyMjAsIDIzNCwgMTk4LCAyNDAsIDE5OCwgMjQxLCAxOTgsIDI0MywgMjI0LCA0NiwgCisgICAgMjEzLCA5LCAyMjQsIDQ4LCAyMTMsIDExLCAyMTYsIDc2LCAyMjQsIDQ1LCAyMTMsIDgsIDIxOSwgMTcsIDIyMSwgMTQwLCAKKyAgICAyMDEsIDIsIDIyNCwgNDcsIDIxMywgMTAsIDIzNiwgMTkyLCAyMTYsIDc1LCAyMDEsIDU0LCAyMzgsIDE5NCwgMjM2LCAxODAsIAorICAgIDIyMSwgMjEwLCAyMTcsIDc5LCAyMDMsIDE5OCwgOTksIDIyMSwgMjEwLCAyNDEsIDI0NSwgOTksIDk4LCAyMDUsIDk3LCA1NSwgCisgICAgMywgNTMsIDgzLCA5NywgODcsIDIwNSwgOTcsIDU1LCAzLCA1MywgODMsIDk3LCAxMSwgNSwgMjI4LCAxMCwgODEsIDIxNSwgCisgICAgMTksIDIzNiwgMjQyLCAzNiwgODMsIDUxLCA2NCwgMjI0LCAyNDcsIDE1OSwgMjAyLCAxNjgsIDIwMiwgNTcsIDIwMSwgMjQ1LCAKKyAgICAyMDEsIDIzNCwgMjAxLCAyMjMsIDIwMSwgMjEyLCAyMDEsIDIwMSwgMjAxLCAxOTAsIDIwMSwgMTc5LCAyMDIsIDE2NywgCisgICAgMjAyLCAxNTYsIDIwMiwgMTQ1LCAyMDIsIDEzNCwgMjAyLCAxMjMsIDIwMiwgMTEyLCAyMDIsIDEwMSwgMjQ3LCAyMjgsIAorICAgIDIxNywgMzAsIDgxLCAyNDgsIDExNCwgMTk4LCAyNDIsIDEwLCAyLCAyMTgsIDEwNiwgMjA2LCAxNTUsIDEwLCAyLCAyMTgsIAorICAgIDEwNiwgMTE5LCAyMTgsIDEwNiwgMjQ4LCA0LCAxMTksIDI0OCwgMywgNjEsIDMyLCAxNiwgMjM2LCAxOTEsIDIwOSwgODIsIAorICAgIDI0NiwgMTk2LCAyMDMsIDY5LCAyMDIsIDkwLCAyMDIsIDc5LCAyMDIsIDY4LCAyMDIsIDU2LCAyMDIsIDQ1LCAyMDIsIDM0LCAKKyAgICAyMDIsIDIzLCAyMDIsIDEyLCAyMDIsIDEsIDIwMSwgMjQ5LCAyMDEsIDI0OCwgMjAxLCAyNDcsIDIwMSwgMjQ2LCAyMDEsIAorICAgIDI0NCwgMjAxLCAyNDMsIDIwMSwgMjQyLCAyMDEsIDI0MSwgMjAxLCAyNDAsIDIwMSwgMjM5LCAyMDEsIDIzOCwgMjAxLCAKKyAgICAyMzcsIDIwMSwgMjM2LCAyMDEsIDIzNSwgMjAxLCAyMzMsIDIwMSwgMjMyLCAyMDEsIDIzMSwgMjAxLCAyMzAsIDIwMSwgCisgICAgMjI5LCAyMDEsIDIyOCwgMjAxLCAyMjcsIDIwMSwgMjI2LCAyMDEsIDIyNSwgMjAxLCAyMjQsIDIwMSwgMjIyLCAyMDEsIAorICAgIDIyMSwgMjAxLCAyMjAsIDIwMSwgMjE5LCAyMDEsIDIxOCwgMjAxLCAyMTcsIDIwMSwgMjE2LCAyMDEsIDIxNSwgMjAxLCAKKyAgICAyMTQsIDIwMSwgMjEzLCAyMDEsIDIxMSwgMjAxLCAyMTAsIDIwMSwgMjA5LCAyMDEsIDIwOCwgMjAxLCAyMDcsIDIwMSwgCisgICAgMjA2LCAyMDEsIDIwNSwgMjAxLCAyMDQsIDIwMSwgMjAzLCAyMDEsIDIwMiwgMjAxLCAyMDAsIDIwMSwgMTk5LCAyMDEsIAorICAgIDE5OCwgMjAxLCAxOTcsIDIwMSwgMTk2LCAyMDEsIDE5NSwgMjAxLCAxOTQsIDIwMSwgMTkzLCAyMDEsIDE5MiwgMjAxLCAKKyAgICAxOTEsIDIwMSwgMTg5LCAyMDEsIDE4OCwgMjAxLCAxODcsIDIwMSwgMTg2LCAyMDEsIDE4NSwgMjAxLCAxODQsIDIwMSwgCisgICAgMTgzLCAyMDEsIDE4MiwgMjAxLCAxODEsIDIwMSwgMTgwLCAyMDEsIDE3OCwgMjAxLCAxNzcsIDIwMSwgMTc2LCAyMDEsIAorICAgIDE3NSwgMjAxLCAxNzQsIDIwMSwgMTczLCAyMDEsIDE3MiwgMjAxLCAxNzEsIDIwMSwgMTcwLCAyMDEsIDE2OSwgMjAyLCAKKyAgICAxNjYsIDIwMiwgMTY1LCAyMDIsIDE2NCwgMjAyLCAxNjMsIDIwMiwgMTYyLCAyMDIsIDE2MSwgMjAyLCAxNjAsIDIwMiwgCisgICAgMTU5LCAyMDIsIDE1OCwgMjAyLCAxNTcsIDIwMiwgMTU1LCAyMDIsIDE1NCwgMjAyLCAxNTMsIDIwMiwgMTUyLCAyMDIsIAorICAgIDE1MSwgMjAyLCAxNTAsIDIwMiwgMTQ5LCAyMDIsIDE0OCwgMjAyLCAxNDcsIDIwMiwgMTQ2LCAyMDIsIDE0NCwgMjAyLCAKKyAgICAxNDMsIDIwMiwgMTQyLCAyMDIsIDE0MSwgMjAyLCAxNDAsIDIwMiwgMTM5LCAyMDIsIDEzOCwgMjAyLCAxMzcsIDIwMiwgCisgICAgMTM2LCAyMDIsIDEzNSwgMjAyLCAxMzMsIDIwMiwgMTMyLCAyMDIsIDEzMSwgMjAyLCAxMzAsIDIwMiwgMTI5LCAyMDIsIAorICAgIDEyOCwgMjAyLCAxMjcsIDIwMiwgMTI2LCAyMDIsIDEyNSwgMjAyLCAxMjQsIDIwMiwgMTIyLCAyMDIsIDEyMSwgMjAyLCAKKyAgICAxMjAsIDIwMiwgMTE5LCAyMDIsIDExOCwgMjAyLCAxMTcsIDIwMiwgMTE2LCAyMDIsIDExNSwgMjAyLCAxMTQsIDIwMiwgCisgICAgMTEzLCAyMDIsIDExMSwgMjAyLCAxMTAsIDIwMiwgMTA5LCAyMDIsIDEwOCwgMjAyLCAxMDcsIDIwMiwgMTA2LCAyMDIsIAorICAgIDEwNSwgMjAyLCAxMDQsIDIwMiwgMTAzLCAyMDIsIDEwMiwgMjAyLCAxMDAsIDIwMiwgOTksIDIwMiwgOTgsIDIwMiwgOTcsIAorICAgIDIwMiwgOTYsIDIwMiwgOTUsIDIwMiwgOTQsIDIwMiwgOTMsIDIwMiwgOTIsIDIwMiwgOTEsIDIwMiwgODksIDIwMiwgODgsIAorICAgIDIwMiwgODcsIDIwMiwgODYsIDIwMiwgODUsIDIwMiwgODQsIDIwMiwgODMsIDIwMiwgODIsIDIwMiwgODEsIDIwMiwgODAsIAorICAgIDIwMiwgNzgsIDIwMiwgNzcsIDIwMiwgNzYsIDIwMiwgNzUsIDIwMiwgNzQsIDIwMiwgNzMsIDIwMiwgNzIsIDIwMiwgNzEsIAorICAgIDIwMiwgNzAsIDIwMiwgNjksIDIwMiwgNjcsIDIwMiwgNjYsIDIwMiwgNjUsIDIwMiwgNjQsIDIwMiwgNjMsIDIwMiwgNjIsIAorICAgIDIwMiwgNjEsIDIwMiwgNjAsIDIwMiwgNTksIDIwMiwgNTgsIDIwMiwgNTUsIDIwMiwgNTQsIDIwMiwgNTMsIDIwMiwgNTIsIAorICAgIDIwMiwgNTEsIDIwMiwgNTAsIDIwMiwgNDksIDIwMiwgNDgsIDIwMiwgNDcsIDIwMiwgNDYsIDIwMiwgNDQsIDIwMiwgNDMsIAorICAgIDIwMiwgNDIsIDIwMiwgNDEsIDIwMiwgNDAsIDIwMiwgMzksIDIwMiwgMzgsIDIwMiwgMzcsIDIwMiwgMzYsIDIwMiwgMzUsIAorICAgIDIwMiwgMzMsIDIwMiwgMzIsIDIwMiwgMzEsIDIwMiwgMzAsIDIwMiwgMjksIDIwMiwgMjgsIDIwMiwgMjcsIDIwMiwgMjYsIAorICAgIDIwMiwgMjUsIDIwMiwgMjQsIDIwMiwgMjIsIDIwMiwgMjEsIDIwMiwgMjAsIDIwMiwgMTksIDIwMiwgMTgsIDIwMiwgMTcsIAorICAgIDIwMiwgMTYsIDIwMiwgMTUsIDIwMiwgMTQsIDIwMiwgMTMsIDIwMiwgMTEsIDIwMiwgMTAsIDIwMiwgOSwgMjAyLCA4LCAKKyAgICAyMDIsIDcsIDIwMiwgNiwgMjAyLCA1LCAyMDIsIDQsIDIwMiwgMywgMjAyLCAyLCAyMDIsIDAsIDIwMSwgMjU1LCAyMDEsIAorICAgIDI1NCwgMjAxLCAyNTMsIDIwMSwgMjUyLCAyMDEsIDI1MSwgMjAxLCAyNTAsIDgsIDYsIDEsIDM1LCAzLCAyMjIsIDIyOSwgCisgICAgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDM1LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE5NywgMywgODMsIAorICAgIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMTk3LCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAKKyAgICAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIAorICAgIDI2LCAyMzUsIDczLCA4LCA2LCAxLCAxOTcsIDMsIDgzLCAyMjQsIDE3NywgMjQ4LCAyMjgsIDI2LCAxNjksIDgsIDQsIDEsIAorICAgIDE5NywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIAorICAgIDIyMiwgMjI4LCA4LCA0LCAxLCAxOTcsIDMsIDI0NiwgMTQ3LCAyNiwgMjIyLCAyMjgsIDgsIDYsIDEsIDE5NywgMywgMjQ2LCAKKyAgICAxNDcsIDI2LCAyNDcsIDEyNSwgOCwgNCwgMSwgMTk3LCAzLCAyNDYsIDE0NywgMjYsIDI0NywgMTI1LCA4LCA2LCAxLCAyMzMsIAorICAgIDE5LCAzLCAyMjIsIDIyOSwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDIzMywgMTksIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAyMjAsIDAsIDMsIDIwNSwgMjQxLCA1NiwgCisgICAgOCwgNiwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDU3LCA4LCA0LCAxLCAxNjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIAorICAgIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDQsIDEsIDE2MywgMywgODMsIAorICAgIDIyNCwgMTc3LCAyNDgsIDIyOCwgMjYsIDIzNSwgNzMsIDgsIDYsIDEsIDE2MywgMywgODMsIDIyNCwgMTc3LCAyNDgsIDIyOCwgCisgICAgMjYsIDE2OSwgOCwgNCwgMSwgMTYzLCAzLCA4MywgMjI0LCAxNzcsIDI0OCwgMjI4LCAyNiwgMTY5LCA4LCA2LCAxLCAyMTIsIAorICAgIDEyMywgMywgODMsIDIyNCwgMTc3LCA1NywgOCwgNCwgMSwgMjEyLCAxMjMsIDMsIDgzLCAyMjQsIDE3NywgNTcsIDgsIDYsIAorICAgIDEsIDEwOCwgMywgMjIyLCAyMjksIDI2LCAyMzUsIDczLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjM1LCA3MywgCisgICAgOCwgNiwgMSwgMzUsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAxNjksIDgsIAorICAgIDYsIDEsIDM1LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAzNSwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIAorICAgIDI0MCwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDE2OSwgOCwgNCwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIAorICAgIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCAyMTcsIDExMSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxOTcsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDE5NywgMywgNzMsIDg4LCAyNiwgMTY5LCA4LCA0LCAxLCAxOTcsIDMsIDczLCA4OCwgCisgICAgMjYsIDE2OSwgOCwgNiwgMSwgMTk3LCAzLCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMTk3LCAzLCA3MywgODgsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgNzMsIDg4LCAyNiwgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxOSwgCisgICAgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIDgsIDYsIDEsIDIzMywgMTksIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA0LCAxLCAKKyAgICAyMzMsIDE5LCAzLCAyMTcsIDExMSwgMjYsIDczLCA4OCwgMjYsIDE2OSwgOCwgNiwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIAorICAgIDI2LCAyMDUsIDI0MCwgOCwgNCwgMSwgMjMzLCAxOSwgMywgMjE3LCAxMTEsIDI2LCA3MywgODgsIDI2LCAyMDUsIDI0MCwgOCwgCisgICAgNiwgMSwgMjI3LCAyNTIsIDMsIDIwNSwgMjQwLCA4LCA0LCAxLCAyMjcsIDI1MiwgMywgNzMsIDg4LCAyNiwgMjA1LCAyNDAsIAorICAgIDgsIDYsIDEsIDIyNSwgMTkzLCAzLCAyMDUsIDI0MCwgOCwgNCwgMSwgMjI1LCAxOTMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAKKyAgICAyMjMsIDI0NCwgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIyMywgMjQ0LCAzLCAyMDUsIDI0MCwgOCwgNiwgMSwgMjE0LCAzMywgCisgICAgMywgMjA1LCAyNDAsIDgsIDQsIDEsIDIxNCwgMzMsIDMsIDIwNSwgMjQwLCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMTY5LCA4LCA0LCAxLCAxMDgsIDMsIDIxNywgMTExLCAyNiwgMTY5LCA4LCA2LCAxLCAxMDgsIDMsIDIxNywgMTExLCAKKyAgICAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIDEwOCwgMywgMjE3LCAxMTEsIDI2LCAyMDUsIDI0MCwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNCwgMSwgMTA4LCAzLCAyMjIsIDIyOSwgMjYsIDE2OSwgOCwgNiwgMSwgMTA4LCAzLCAKKyAgICAyMjIsIDIyOSwgMjYsIDIwNSwgMjQwLCA4LCA0LCAxLCAxMDgsIDMsIDIyMiwgMjI5LCAyNiwgMjA1LCAyNDAsIDgsIDQsIDEsIAorICAgIDI1MSwgMjIyLCAzLCAyMzUsIDczLCA4LCA0LCAxLCAxNzYsIDE2MywgMywgMjM1LCA3MywgOCwgNCwgMSwgMTc2LCAxNjMsIAorICAgIDMsIDE2OSwgOCwgNCwgMSwgMjA0LCAxODUsIDIwMywgMTY5LCAzLCAyMzUsIDczLCA4LCA0LCAxLCAyMDQsIDE4NSwgMjAzLCAKKyAgICAxNjksIDMsIDE2OSwgOCwgNCwgMSwgMjExLCAyMTksIDMsIDIzNSwgNzMsIDgsIDQsIDEsIDIxMSwgMjE5LCAzLCAxNjksIDgsIAorICAgIDQsIDEsIDIzMywgMTg2LCAyMTEsIDIxOSwgMywgMjM1LCA3MywgOCwgNCwgMSwgMjMzLCAxODYsIDIxMSwgMjE5LCAzLCAKKyAgICAxNjksIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAyNTEsIDE0MiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAKKyAgICAyMzQsIDIwNCwgODgsIDMsIDIwMSwgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAzLCAxNDAsIDIyMiwgCisgICAgMTg3LCA5LCAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgMjE3LCAxMjEsIDksIDIxMCwgMTUxLCA5MCwgMywgCisgICAgMjM0LCAyMDQsIDg4LCAzLCA2NiwgOSwgMjEwLCAxNTEsIDkwLCAzLCAyMzQsIDIwNCwgODgsIDMsIDE5OSwgMjExLCA5LCAKKyAgICAyMTAsIDE1MSwgOTAsIDMsIDIzNCwgMjA0LCA4OCwgMywgNzIsIDksIDIxMCwgMTUxLCA5MCwgMywgMjM0LCAyMDQsIDg4LCAKKyAgICAzLCAyNTEsIDIyMSwgOSwgMjEwLCAxNTEsIDIxOCwgMjI4LCAzLCAyMjYsIDI1MiwgMTg1LCAxLCAyMjYsIDE4MiwgNDUsIAorICAgIDExMSwgMjI3LCAxMTgsIDQ1LCAxMTEsIDIxOSwgMjU1LCA0NSwgMTExLCAyNDcsIDIyMywgNDUsIDExMSwgMjE4LCA2MiwgCisgICAgNDUsIDExMSwgMjA1LCAwLCA0NSwgMTExLCAyMTksIDIyLCA0NSwgMTExLCAyMDcsIDgzLCA0NSwgMTExLCAyMjAsIDIxNCwgCisgICAgNDUsIDExMSwgMjE2LCAyMjYsIDQ1LCAxMTEsIDIyMywgMjQzLCA0NSwgMTExLCAyMDAsIDEyMywgNDUsIDExMSwgMTQ2LCAKKyAgICA0NSwgMTExLCAxNTYsIDQ1LCAxMTEsIDIwMywgMTY4LCA0NSwgMTExLCAyMjQsIDEzMCwgNDUsIDExMSwgMjI0LCAxMzksIAorICAgIDQ1LCAxMTEsIDIxMiwgMjE2LCA0NSwgMTExLCAyMTksIDQsIDQ1LCAxMTEsIDIyNywgMjUxLCA0NSwgMTExLCAyMTAsIDExNiwgCisgICAgNDUsIDExMSwgMjA4LCAxODIsIDQ1LCAxMTEsIDIxMiwgMTIyLCA0NSwgMTExLCAyMzQsIDI0NywgNDUsIDExMSwgMjI2LCAKKyAgICAzMCwgNDUsIDUsIDIyNywgMTA1LCA0NSwgNSwgMjI2LCAxNjMsIDQ1LCA1LCAyMjYsIDE1MCwgNDUsIDUsIDIyNiwgMTUsIAorICAgIDQ1LCA1LCAyMjUsIDIzNiwgNDUsIDUsIDIyNywgOCwgNDUsIDUsIDIyNywgNSwgNDUsIDUsIDIyNywgODIsIDQ1LCA1LCAKKyAgICAyMjYsIDg4LCA0NSwgNSwgMjI2LCA2OCwgNDUsIDUsIDIyNywgMjYsIDQ1LCA1LCAyMTksIDI1MiwgNDUsIDUsIDIxOSwgCisgICAgMjAxLCA0NSwgNSwgMjE5LCAxOTcsIDQ1LCA1LCAyMTksIDE2NiwgNDUsIDUsIDIxOSwgMTU4LCA0NSwgNSwgMjE5LCAyNDAsIAorICAgIDQ1LCA1LCAyMTksIDIzOCwgNDUsIDUsIDIxOSwgMjQ5LCA0NSwgNSwgMjE5LCAxNzgsIDQ1LCA1LCAyMTksIDE3MywgNDUsIAorICAgIDUsIDIxOSwgMjQyLCA0NSwgNSwgMjQ3LCAxODksIDQ1LCA1LCAyNDYsIDE3MywgNDUsIDUsIDI0NiwgMTYzLCA0NSwgNSwgCisgICAgMjQyLCAyMTQsIDQ1LCA1LCAyNDIsIDE3OCwgNDUsIDUsIDI0NywgNzYsIDQ1LCA1LCAyNDcsIDY4LCA0NSwgNSwgMjQ3LCAKKyAgICAxNzgsIDQ1LCA1LCAyNDYsIDkxLCA0NSwgNSwgMjQzLCAzMCwgNDUsIDUsIDI0NywgMTA5LCA0NSwgNSwgMjE4LCA1OSwgNDUsIAorICAgIDUsIDIxOCwgNDEsIDQ1LCA1LCAyMTgsIDM2LCA0NSwgNSwgMjE4LCAxOSwgNDUsIDUsIDIxOCwgMTEsIDQ1LCA1LCAyMTgsIAorICAgIDUwLCA0NSwgNSwgMjE4LCA0OSwgNDUsIDUsIDIxOCwgNTYsIDQ1LCA1LCAyMTgsIDI2LCA0NSwgNSwgMjE4LCAyMywgNDUsIAorICAgIDUsIDIxOCwgNTMsIDQ1LCA1LCAyMDQsIDI1MiwgNDUsIDUsIDIwNCwgMjMyLCA0NSwgNSwgMjA0LCAyMzEsIDQ1LCA1LCAKKyAgICAyMDQsIDIyMCwgNDUsIDUsIDIwNCwgMjE3LCA0NSwgNSwgMjA0LCAyNDgsIDQ1LCA1LCAyMDQsIDI0NywgNDUsIDUsIDIwNCwgCisgICAgMjUxLCA0NSwgNSwgMjA0LCAyMzAsIDQ1LCA1LCAyMDQsIDIyOSwgNDUsIDUsIDIwNCwgMjUwLCA0NSwgNSwgMjE5LCAyMCwgCisgICAgNDUsIDUsIDIxOSwgNiwgNDUsIDUsIDIxOSwgNSwgNDUsIDUsIDIxOCwgMjQ1LCA0NSwgNSwgMjE4LCAyNDQsIDQ1LCA1LCAKKyAgICAyMTksIDE2LCA0NSwgNSwgMjE5LCAxNSwgNDUsIDUsIDIxOSwgMTksIDQ1LCA1LCAyMTgsIDI0NywgNDUsIDUsIDIxOCwgCisgICAgMjQ2LCA0NSwgNSwgMjE5LCAxOCwgNDUsIDUsIDIwNywgMzIsIDQ1LCA1LCAyMDYsIDE1LCA0NSwgNSwgMjA1LCAyNTUsIDQ1LCAKKyAgICA1LCAyMDQsIDIxNSwgNDUsIDUsIDIwNCwgMTc2LCA0NSwgNSwgMjA2LCAyMDEsIDQ1LCA1LCAyMDYsIDE5MCwgNDUsIDUsIAorICAgIDIwNywgOCwgNDUsIDUsIDEzOCwgNDUsIDUsIDIwNSwgMTYxLCA0NSwgNSwgMjA2LCAyMjEsIDQ1LCA1LCAyMjAsIDE1NywgCisgICAgNDUsIDUsIDIxOSwgMTUwLCA0NSwgNSwgMjE5LCAxMjUsIDQ1LCA1LCAyMTgsIDEzMywgNDUsIDUsIDIxOCwgNzQsIDQ1LCA1LCAKKyAgICAyMjAsIDM0LCA0NSwgNSwgMjIwLCAyOSwgNDUsIDUsIDIyMCwgMTQzLCA0NSwgNSwgMjE4LCAyNDEsIDQ1LCA1LCAyMTgsIAorICAgIDIyOSwgNDUsIDUsIDIyMCwgMTE2LCA0NSwgNSwgMjE2LCAyMTAsIDQ1LCA1LCAyMTUsIDIwNCwgNDUsIDUsIDIxNSwgMTY2LCAKKyAgICA0NSwgNSwgMjE0LCAyMjQsIDQ1LCA1LCAyMTQsIDE5MCwgNDUsIDUsIDIxNiwgNzMsIDQ1LCA1LCAyMTYsIDYxLCA0NSwgNSwgCisgICAgMjE2LCAxOTAsIDQ1LCA1LCAyMTUsIDEwNiwgNDUsIDUsIDIxNSwgODEsIDQ1LCA1LCAyMTYsIDg3LCA0NSwgNSwgMjIyLCAKKyAgICAyMzMsIDQ1LCA1LCAyMjEsIDIxMSwgNDUsIDUsIDIyMSwgMTgxLCA0NSwgNSwgMjIxLCA0MSwgNDUsIDUsIDIyMCwgMjQzLCAKKyAgICA0NSwgNSwgMjIyLCA3NiwgNDUsIDUsIDIyMiwgNjQsIDQ1LCA1LCAyMjIsIDE5OCwgNDUsIDUsIDIyMSwgMTM2LCA0NSwgNSwgCisgICAgMjIxLCA4NywgNDUsIDUsIDIyMiwgMTIzLCA0NSwgNSwgMjAwLCAxMDksIDQ1LCA1LCAyMDAsIDksIDQ1LCA1LCAyMDAsIDAsIAorICAgIDQ1LCA1LCAxOTksIDIxMSwgNDUsIDUsIDE5OSwgMTc5LCA0NSwgNSwgMjAwLCA1MSwgNDUsIDUsIDIwMCwgNDgsIDQ1LCA1LCAKKyAgICAyMDAsIDg4LCA0NSwgNSwgMTk5LCAyNDUsIDQ1LCA1LCAxOTksIDIzMCwgNDUsIDUsIDIwMCwgNjEsIDQ1LCA1LCAyMTMsIAorICAgIDI0OCwgNDUsIDUsIDIxMywgODgsIDQ1LCA1LCAyMTMsIDMzLCA0NSwgNSwgMjEyLCAxNzUsIDQ1LCA1LCAyMTIsIDE0MywgCisgICAgNDUsIDUsIDIxMywgMTkwLCA0NSwgNSwgMjEzLCAxNjcsIDQ1LCA1LCAyMTMsIDIyOSwgNDUsIDUsIDIxMywgMSwgNDUsIDUsIAorICAgIDIxMiwgMjM4LCA0NSwgNSwgMjEzLCAxOTksIDQ1LCA1LCAyMjUsIDE3NSwgNDUsIDUsIDIyNCwgMjEwLCA0NSwgNSwgMjI0LCAKKyAgICAxOTIsIDQ1LCA1LCAyMjQsIDQyLCA0NSwgNSwgMjI0LCAxMywgNDUsIDUsIDIyNSwgNDAsIDQ1LCA1LCAyMjUsIDMyLCA0NSwgCisgICAgNSwgMjI1LCAxNDksIDQ1LCA1LCAyMjQsIDExMCwgNDUsIDUsIDIyNCwgNzgsIDQ1LCA1LCAyMjUsIDU4LCA0NSwgNSwgMjAzLCAKKyAgICA4OSwgNDUsIDUsIDIwMiwgMjM0LCA0NSwgNSwgMjAyLCAyMTksIDQ1LCA1LCAyMDEsIDE2NiwgNDUsIDUsIDIwMSwgMTU5LCAKKyAgICA0NSwgNSwgMjAzLCA1OSwgNDUsIDUsIDIwMywgNTQsIDQ1LCA1LCAyMDMsIDg1LCA0NSwgNSwgMjAyLCAxOTMsIDQ1LCA1LCAKKyAgICAyMDIsIDE3OSwgNDUsIDUsIDIwMywgNjUsIDQ1LCA1LCAyMjQsIDEyOCwgNDUsIDUsIDIyNCwgMTIzLCA0NSwgNSwgMjI0LCAKKyAgICAxMjIsIDQ1LCA1LCAyMjQsIDExOSwgNDUsIDUsIDIyNCwgMTE4LCA0NSwgNSwgMjI0LCAxMjUsIDQ1LCA1LCAyMjQsIDEyNCwgCisgICAgNDUsIDUsIDIyNCwgMTI3LCA0NSwgNSwgMjI0LCAxMjEsIDQ1LCA1LCAyMjQsIDEyMCwgNDUsIDUsIDIyNCwgMTI2LCA0NSwgCisgICAgNSwgMjI0LCAxMzcsIDQ1LCA1LCAyMjQsIDEzMiwgNDUsIDUsIDIyNCwgMTMxLCA0NSwgNSwgMjI0LCAxMTUsIDQ1LCA1LCAKKyAgICAyMjQsIDExNCwgNDUsIDUsIDIyNCwgMTM0LCA0NSwgNSwgMjI0LCAxMzMsIDQ1LCA1LCAyMjQsIDEzNiwgNDUsIDUsIDIyNCwgCisgICAgMTE3LCA0NSwgNSwgMjI0LCAxMTYsIDQ1LCA1LCAyMjQsIDEzNSwgNDUsIDUsIDIxMiwgMjE0LCA0NSwgNSwgMjEyLCAyMDMsIAorICAgIDQ1LCA1LCAyMTIsIDIwMiwgNDUsIDUsIDIxMiwgMTk1LCA0NSwgNSwgMjEyLCAxODgsIDQ1LCA1LCAyMTIsIDIxMCwgNDUsIAorICAgIDUsIDIxMiwgMjA5LCA0NSwgNSwgMjEyLCAyMTMsIDQ1LCA1LCAyMTIsIDIwMSwgNDUsIDUsIDIxMiwgMjAwLCA0NSwgNSwgCisgICAgMjEyLCAyMTIsIDQ1LCA1LCAyMTksIDIsIDQ1LCA1LCAyMTgsIDI1MywgNDUsIDUsIDIxOCwgMjUyLCA0NSwgNSwgMjE4LCAKKyAgICAyNDksIDQ1LCA1LCAyMTgsIDI0OCwgNDUsIDUsIDIxOCwgMjU1LCA0NSwgNSwgMjE4LCAyNTQsIDQ1LCA1LCAyMTksIDEsIAorICAgIDQ1LCA1LCAyMTgsIDI1MSwgNDUsIDUsIDIxOCwgMjUwLCA0NSwgNSwgMjE5LCAwLCA0NSwgNSwgMjI3LCAyNDcsIDQ1LCA1LCAKKyAgICAyMjcsIDIwNywgNDUsIDUsIDIyNywgMjAwLCA0NSwgNSwgMjI3LCAxNDcsIDQ1LCA1LCAyMjcsIDEyOCwgNDUsIDUsIDIyNywgCisgICAgMjI3LCA0NSwgNSwgMjI3LCAyMjUsIDQ1LCA1LCAyMjcsIDI0MSwgNDUsIDUsIDIyNywgMTY2LCA0NSwgNSwgMjI3LCAxNTYsIAorICAgIDQ1LCA1LCAyMjcsIDIzNCwgNDUsIDUsIDIxMCwgMTA5LCA0NSwgNSwgMjEwLCAzMywgNDUsIDUsIDIxMCwgMjgsIDQ1LCA1LCAKKyAgICAyMDksIDIyMCwgNDUsIDUsIDIwOSwgMjAzLCA0NSwgNSwgMjEwLCA2NSwgNDUsIDUsIDIxMCwgNjMsIDQ1LCA1LCAyMTAsIAorICAgIDk4LCA0NSwgNSwgMjEwLCA4LCA0NSwgNSwgMjEwLCAyLCA0NSwgNSwgMjEwLCA3NCwgNDUsIDUsIDIwOCwgMTc4LCA0NSwgNSwgCisgICAgMjA4LCAxNDcsIDQ1LCA1LCAyMDgsIDE0MywgNDUsIDUsIDIwOCwgMTM0LCA0NSwgNSwgMjA4LCAxMzEsIDQ1LCA1LCAyMDgsIAorICAgIDE1MywgNDUsIDUsIDIwOCwgMTUyLCA0NSwgNSwgMjA4LCAxNzcsIDQ1LCA1LCAyMDgsIDEzOSwgNDUsIDUsIDIwOCwgMTM4LCAKKyAgICA0NSwgNSwgMjA4LCAxNTUsIDQ1LCA1LCAyMTIsIDYxLCA0NSwgNSwgMjA5LCAxODIsIDQ1LCA1LCAyMDksIDE2MSwgNDUsIDUsIAorICAgIDIwOCwgMjQsIDQ1LCA1LCAyMDcsIDE5MywgNDUsIDUsIDIxMSwgMjAyLCA0NSwgNSwgMjExLCAxOTAsIDQ1LCA1LCAyMTIsIAorICAgIDQ2LCA0NSwgNSwgMjA5LCAyOSwgNDUsIDUsIDIwOSwgMTAsIDQ1LCA1LCAyMTEsIDI0MywgNDUsIDUsIDIzNCwgMjMzLCA0NSwgCisgICAgNSwgMjM0LCA3NSwgNDUsIDUsIDIzNCwgNTQsIDQ1LCA1LCAyMzMsIDk3LCA0NSwgNSwgMjMzLCA3MSwgNDUsIDUsIDIzNCwgCisgICAgMTM5LCA0NSwgNSwgMjM0LCAxMjAsIDQ1LCA1LCAyMzQsIDIyMywgNDUsIDUsIDIzMywgMjA3LCA0NSwgNSwgMjMzLCAxODgsIAorICAgIDQ1LCA1LCAyMzQsIDE1MCwgNDUsIDUsIDIyNiwgMjksIDQ1LCA1LCAyMjYsIDI4LCA0NSwgNSwgMjI2LCAyMywgNDUsIDUsIAorICAgIDIyNiwgMjIsIDQ1LCA1LCAyMjYsIDE5LCA0NSwgNSwgMjI2LCAxOCwgNDUsIDUsIDIyNiwgMjUsIDQ1LCA1LCAyMjYsIDI0LCAKKyAgICA0NSwgNSwgMjI2LCAyNywgNDUsIDUsIDIyNiwgMjEsIDQ1LCA1LCAyMjYsIDIwLCA0NSwgNSwgMjI2LCAyNiwgNDUsIDUsIAorICAgIDIwOSwgMjI3LCAxNDMsIDExMSwgMiwgMjAwLCA3NCwgMTQzLCAxMTEsIDIsIDIxMywgMjE4LCAxNDMsIDExMSwgMiwgMjEzLCAKKyAgICAxMzQsIDExOCwgMSwgMjA0LCAxMDIsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE2MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgCisgICAgMjI2LCAyMDcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNiwgMTc4LCAKKyAgICA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTksIDE3OCwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQ3LCAxOTAsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDI0NywgMzcsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgOTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDI0NiwgCisgICAgMjEwLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTgsIDI2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDIsIDU4LCA4NiwgMTExLCAKKyAgICAyLCAyNDYsIDg2LCAyMDQsIDI0MSwgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjQwLCAyMTEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNCwgMjM2LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxODgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIwNywgMzYsIDg2LCAKKyAgICAxMTEsIDIsIDI0NiwgODYsIDIwNiwgMTIyLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAxMzgsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDIwNiwgNjEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxOCwgMjQxLCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyNDksIDEzNiwgCisgICAgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjE1LCAyNDUsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIxNSwgMTA2LCA4NiwgMTExLCAyLCAKKyAgICAyNDYsIDg2LCAyMTUsIDIxNywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjIxLCAxMzYsIDg2LCAxMTEsIDIsIDI0NiwgODYsIAorICAgIDE5OSwgMjQ1LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTMsIDEsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDIyNCwgMTEwLCA4NiwgCisgICAgMTExLCAyLCAyNDYsIDg2LCAyMDIsIDE5MywgODYsIDExMSwgMiwgMjQ2LCA4NiwgMjEwLCAxMTQsIDg2LCAxMTEsIDIsIAorICAgIDI0NiwgODYsIDIwOCwgMTc5LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAyMTIsIDY0LCA4NiwgMTExLCAyLCAyNDYsIDg2LCAKKyAgICAxNDQsIDg2LCAxMTEsIDIsIDI0NiwgODYsIDE5NCwgODYsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIDE1OSwgODYsIDIyOCwgCisgICAgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjE0LCA5NywgODYsIDIyOCwgMTA0LCAyMiwgMiwgMjQ2LCA4NiwgMjEyLCAxMzEsIDg2LCAKKyAgICAyMjgsIDEwNCwgMjIsIDIsIDI0NiwgODYsIDIxMiwgMTI0LCA4NiwgMjI4LCAxMDQsIDIyLCAyLCAyNDYsIDg2LCAyMTQsIAorICAgIDEzOSwgODYsIDIyLCAyLCAyMTcsIDg2LCA4NiwgMjIsIDIsIDI1MiwgOTksIDE3NywgMSwgMjQ4LCAxODEsIDIxOSwgMjUzLCAKKyAgICAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDIwMSwgMTc3LCAxLCAyNDgsIDE4MSwgMjE5LCAxNjYsIDE3NywgMSwgMjQ4LCAxODEsIAorICAgIDIxOSwgMjQwLCAxNzcsIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI1MywgNjksIDEsIAorICAgIDI0OCwgMTgxLCAyMTksIDIwMSwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE2NiwgNjksIDEsIDI0OCwgMTgxLCAyMTksIDI0MCwgCisgICAgNjksIDEsIDI0OCwgMTgxLCAyMTksIDE3OCwgNjksIDEsIDI1MSwgMTY5LCAyNDcsIDc2LCA2OSwgMSwgMjUxLCAxNjksIAorICAgIDIwNCwgMjE1LCA2OSwgMSwgMjUxLCAxNjksIDEzOCwgNjksIDEsIDI1MSwgMTY5LCAyMTYsIDIyNiwgNjcsIDEsIDIzOCwgCisgICAgMjksIDIzOCwgMjgsIDI0MywgMzgsIDE1MCwgMTQ4LCA2NywgMSwgMjM4LCAyOCwgMjM4LCAyOSwgMjQzLCAzOCwgMTUwLCAKKyAgICAxNDgsIAogfTsKIAogc3RhdGljIHVuc2lnbmVkIGNoYXIgcGhyYXNlYm9va19vZmZzZXQxW10gPSB7CkBAIC0xNjUzMywyMCArMTc2NDksMjAgQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA2NywgNjgsIDY5LCA3MCwgNzEsIDcyLCAKICAgICA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsIDUyLCA4NywgNTIsIDg4LCAKLSAgICA4OSwgOTAsIDkxLCA5MiwgOTMsIDk0LCA5NSwgOTYsIDUyLCA5NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA5OCwgOTksIDEwMCwgCi0gICAgMTAxLCAxMDIsIDEwMywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNCwgMTA1LCAxMDYsIAotICAgIDEwNywgMTA4LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICAxMDksIDExMCwgMTExLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAorICAgIDg5LCA5MCwgOTEsIDkyLCA5MywgOTQsIDk1LCA5NiwgNTIsIDk3LCA1MiwgOTgsIDUyLCA1MiwgNTIsIDk5LCAxMDAsIDEwMSwgCisgICAgMTAyLCAxMDMsIDEwNCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDEwNSwgMTA2LCAxMDcsIAorICAgIDEwOCwgMTA5LCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICAxMTAsIDExMSwgMTEyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCAxMTIsIDExMywgMTE0LCAxMTUsIDUyLCA1MiwgNTIsIDExNiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgMTEzLCAxMTQsIDExNSwgMTE2LCA1MiwgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDExOCwgMTE5LCAKKyAgICAxMjAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCAxMTcsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE4LCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTE5LCAxMjAsIAotICAgIDEyMSwgMTIyLCAxMjMsIDEyNCwgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzAsIDUyLCA1MiwgNTIsIDUyLCA1MiwgMTMxLCA1MiwgMTMyLCAxMzMsIDEzNCwgCi0gICAgMTM1LCAxMzYsIDEzNywgMTM4LCAxMzksIDE0MCwgMTQxLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDEyMSwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjIsIDUyLCA1MiwgNTIsIAorICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMjMsIDEyNCwgCisgICAgMTI1LCAxMjYsIDEyNywgMTI4LCAxMjksIDEzMCwgMTMxLCAxMzIsIDEzMywgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzQsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxMzUsIDEzNiwgNTIsIDUyLCA1MiwgNTIsIDEzNywgNTIsIDEzOCwgMTM5LCAxNDAsIAorICAgIDE0MSwgMTQyLCAxNDMsIDE0NCwgMTQ1LCAxNDYsIDE0NywgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCkBAIC0xNjU2MCw3ICsxNzY3Niw3IEBACiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCiAgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCi0gICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDIsIDE0MywgMTQ0LCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0OCwgMTQ5LCAxNTAsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIApAQCAtMTY3MTcsNyArMTc4MzMsNyBAQAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAogICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIAotICAgIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAxNDUsIDE0NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgCisgICAgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MSwgMTUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzMxLDggKzE3ODQ3LDggQEAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKLSAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE0NywgMTQ4LCAxNDksIAotICAgIDE1MCwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKKyAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDE1MywgMTU0LCAxNTUsIAorICAgIDE1NiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKICAgICA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCA1MiwgNTIsIDUyLCAKQEAgLTE2NzY4LDEyMTQgKzE3ODg0LDEyMTcgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAzLCA2LCA5LCAxMSwgMTQsIDE3LCAxOSwgMjEsIDI0LCAyNywgMjksIDMxLCAKICAgICAzMywgMzUsIDM5LCA0MSwgNDQsIDQ2LCA0OCwgNTAsIDUyLCA1NCwgNTYsIDU5LCA2MSwgNjQsIDY2LCA2OCwgNzEsIDc0LCAKICAgICA3NywgODAsIDg0LCA4OCwgOTMsIDk4LCAxMDMsIDEwNywgMTEyLCAxMTcsIDEyMiwgMTI2LCAxMzEsIDEzNiwgMTQwLCAxNDUsIAotICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzIsIDE3NywgMTgxLCAxODYsIDE5MSwgMTk2LCAyMDEsIDIwNiwgMjA5LCAKLSAgICAyMTMsIDIxNiwgMjIwLCAyMjMsIDIyNywgMjMxLCAyMzYsIDI0MSwgMjQ2LCAyNTAsIDI1NSwgMjYwLCAyNjUsIDI2OSwgCi0gICAgMjc0LCAyNzksIDI4MywgMjg4LCAyOTMsIDI5NywgMzAyLCAzMDcsIDMxMSwgMzE1LCAzMjAsIDMyNCwgMzI5LCAzMzQsIAotICAgIDMzOSwgMzQ0LCAzNDksIDM1MywgMzU2LCAzNjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2MiwgMzY2LCAzNzEsIAotICAgIDM3NCwgMzc3LCAzODAsIDM4MywgMzg2LCAzODksIDM5MSwgMzk0LCA0MDAsIDQwOCwgNDExLCA0MTUsIDQxOCwgNDIwLCAKLSAgICA0MjMsIDQyNiwgNDI5LCA0MzIsIDQzNiwgNDM5LCA0NDIsIDQ0NSwgNDQ3LCA0NTAsIDQ1NiwgNDY0LCA0NzEsIDQ3OCwgCi0gICAgNDg1LCA0OTAsIDQ5NywgNTAzLCA1MTAsIDUxNywgNTI0LCA1MzIsIDUzNywgNTQ1LCA1NTIsIDU1OCwgNTY1LCA1NzIsIAotICAgIDU4MCwgNTg3LCA1OTUsIDYwMywgNjA4LCA2MTYsIDYyMywgNjI5LCA2MzYsIDY0MywgNjUwLCA2NTMsIDY1OSwgNjY2LCAKLSAgICA2NzIsIDY3OSwgNjg2LCA2OTMsIDY5OCwgNzA0LCA3MTEsIDcxNywgNzI0LCA3MzEsIDczOCwgNzQ2LCA3NTEsIDc1OSwgCi0gICAgNzY2LCA3NzIsIDc3OSwgNzg2LCA3OTQsIDgwMSwgODA5LCA4MTcsIDgyMiwgODMwLCA4MzcsIDg0MywgODUwLCA4NTcsIAotICAgIDg2NCwgODY3LCA4NzMsIDg4MCwgODg2LCA4OTMsIDkwMCwgOTA3LCA5MTIsIDkyMCwgOTI3LCA5MzQsIDk0MSwgOTQ4LCAKLSAgICA5NTUsIDk2MiwgOTY5LCA5NzYsIDk4NCwgOTkyLCAxMDAwLCAxMDA4LCAxMDE2LCAxMDI0LCAxMDMyLCAxMDQwLCAxMDQ3LCAKLSAgICAxMDU0LCAxMDYxLCAxMDY4LCAxMDc1LCAxMDgyLCAxMDg5LCAxMDk2LCAxMTAzLCAxMTEwLCAxMTE3LCAxMTI0LCAxMTMyLCAKLSAgICAxMTQwLCAxMTQ4LCAxMTU2LCAxMTY0LCAxMTcyLCAxMTgwLCAxMTg4LCAxMTk2LCAxMjA0LCAxMjExLCAxMjE4LCAxMjI2LCAKLSAgICAxMjM0LCAxMjQyLCAxMjUwLCAxMjU4LCAxMjY2LCAxMjc0LCAxMjgyLCAxMjkwLCAxMjk2LCAxMzAxLCAxMzA2LCAxMzE0LCAKLSAgICAxMzIyLCAxMzMwLCAxMzM4LCAxMzQzLCAxMzUwLCAxMzU3LCAxMzY1LCAxMzczLCAxMzgxLCAxMzg5LCAxMzk4LCAxNDA3LCAKLSAgICAxNDE0LCAxNDIxLCAxNDI4LCAxNDM1LCAxNDQzLCAxNDUxLCAxNDU5LCAxNDY3LCAxNDc4LCAxNDgzLCAxNDg4LCAxNDk1LCAKLSAgICAxNTAyLCAxNTA5LCAxNTE2LCAxNTIzLCAxNTMwLCAxNTM1LCAxNTQwLCAxNTQ3LCAxNTU0LCAxNTYyLCAxNTcwLCAxNTc4LCAKLSAgICAxNTg2LCAxNTkzLCAxNjAwLCAxNjA4LCAxNjE2LCAxNjI0LCAxNjMyLCAxNjQwLCAxNjQ4LCAxNjU2LCAxNjY0LCAxNjcyLCAKLSAgICAxNjgwLCAxNjg3LCAxNjk0LCAxNzAxLCAxNzA4LCAxNzE1LCAxNzIyLCAxNzI5LCAxNzM2LCAxNzQ0LCAxNzUyLCAxNzU5LCAKLSAgICAxNzY2LCAxNzczLCAxNzgwLCAxNzg4LCAxNzk2LCAxODA0LCAxODEyLCAxODIwLCAxODI3LCAxODM0LCAxODQyLCAxODUwLCAKLSAgICAxODU4LCAxODY2LCAxODcxLCAxODc3LCAxODgzLCAxODkwLCAxODk3LCAxOTAyLCAxOTA3LCAxOTEyLCAxOTE5LCAxOTI2LCAKLSAgICAxOTMzLCAxOTQwLCAxOTQ4LCAxOTU2LCAxOTYzLCAxOTY5LCAxOTc0LCAxOTc5LCAxOTg2LCAxOTkzLCAyMDAwLCAyMDA1LCAKLSAgICAyMDEwLCAyMDE1LCAyMDIyLCAyMDI5LCAyMDM2LCAyMDQzLCAyMDUwLCAyMDU3LCAyMDY1LCAyMDc1LCAyMDgzLCAyMDkwLCAKLSAgICAyMDk3LCAyMTAyLCAyMTA3LCAyMTE0LCAyMTIxLCAyMTI1LCAyMTMwLCAyMTM1LCAyMTQwLCAyMTQ4LCAyMTU3LCAyMTY0LCAKLSAgICAyMTcxLCAyMTgwLCAyMTg3LCAyMTk0LCAyMTk5LCAyMjA2LCAyMjEzLCAyMjIwLCAyMjI3LCAyMjM0LCAyMjM5LCAyMjQ2LCAKLSAgICAyMjUzLCAyMjYxLCAyMjY2LCAyMjcxLCAyMjc2LCAyMjg2LCAyMjkwLCAyMjk2LCAyMzAyLCAyMzA4LCAyMzE0LCAyMzIyLCAKLSAgICAyMzM1LCAyMzQzLCAyMzQ4LCAyMzU4LCAyMzYzLCAyMzY4LCAyMzc4LCAyMzgzLCAyMzkwLCAyMzk3LCAyNDA1LCAyNDEzLCAKLSAgICAyNDIwLCAyNDI3LCAyNDM0LCAyNDQxLCAyNDUxLCAyNDYxLCAyNDcwLCAyNDc5LCAyNDg5LCAyNDk5LCAyNTA5LCAyNTE5LCAKLSAgICAyNTI1LCAyNTM1LCAyNTQ1LCAyNTU1LCAyNTY1LCAyNTczLCAyNTgxLCAyNTg4LCAyNTk1LCAyNjAzLCAyNjExLCAyNjE5LCAKLSAgICAyNjI3LCAyNjM0LCAyNjQxLCAyNjUxLCAyNjYxLCAyNjY5LCAyNjc3LCAyNjg1LCAyNjkwLCAyNzAwLCAyNzA1LCAyNzEyLCAKLSAgICAyNzE5LCAyNzI0LCAyNzI5LCAyNzM3LCAyNzQ1LCAyNzU1LCAyNzY1LCAyNzcyLCAyNzc5LCAyNzg4LCAyNzk3LCAyODA1LCAKLSAgICAyODEzLCAyODIyLCAyODMxLCAyODM5LCAyODQ3LCAyODU2LCAyODY1LCAyODc0LCAyODgzLCAyODkzLCAyOTAzLCAyOTExLCAKLSAgICAyOTE5LCAyOTI4LCAyOTM3LCAyOTQ2LCAyOTU1LCAyOTY1LCAyOTc1LCAyOTgzLCAyOTkxLCAzMDAwLCAzMDA5LCAzMDE4LCAKLSAgICAzMDI3LCAzMDM2LCAzMDQ1LCAzMDUwLCAzMDU1LCAzMDYzLCAzMDcxLCAzMDgxLCAzMDg5LCAzMDk0LCAzMDk5LCAzMTA2LCAKLSAgICAzMTEzLCAzMTIwLCAzMTI3LCAzMTM0LCAzMTQxLCAzMTUxLCAzMTYxLCAzMTcxLCAzMTgxLCAzMTg4LCAzMTk1LCAzMjA1LCAKLSAgICAzMjE1LCAzMjIzLCAzMjMxLCAzMjM5LCAzMjQ3LCAzMjU1LCAzMjYyLCAzMjY5LCAzMjc2LCAzMjgyLCAzMjg5LCAzMjk2LCAKLSAgICAzMzAzLCAzMzEyLCAzMzIyLCAzMzMyLCAzMzM5LCAzMzQ2LCAzMzUyLCAzMzU3LCAzMzY0LCAzMzcwLCAzMzc2LCAzMzgzLCAKLSAgICAzMzkwLCAzNDAxLCAzNDExLCAzNDE4LCAzNDI1LCAzNDMyLCAzNDM5LCAzNDQ1LCAzNDUwLCAzNDU3LCAzNDYzLCAzNDY4LCAKLSAgICAzNDc2LCAzNDg0LCAzNDkxLCAzNDk3LCAzNTAyLCAzNTA5LCAzNTE0LCAzNTIxLCAzNTMwLCAzNTM5LCAzNTQ4LCAzNTU1LCAKLSAgICAzNTYxLCAzNTY3LCAzNTcyLCAzNTc5LCAzNTg2LCAzNTkzLCAzNjAwLCAzNjA3LCAzNjEyLCAzNjE3LCAzNjI2LCAzNjM0LCAKLSAgICAzNjQzLCAzNjQ4LCAzNjU1LCAzNjY2LCAzNjczLCAzNjgxLCAzNjkwLCAzNjk2LCAzNzAyLCAzNzA4LCAzNzE1LCAzNzIwLCAKLSAgICAzNzI2LCAzNzM3LCAzNzQ2LCAzNzU1LCAzNzYzLCAzNzcxLCAzNzgxLCAzNzg2LCAzNzkzLCAzODAwLCAzODA1LCAzODE3LCAKLSAgICAzODI2LCAzODM0LCAzODQxLCAzODUwLCAzODU1LCAzODYwLCAzODY3LCAzODc0LCAzODgxLCAzODg4LCAzODk0LCAzOTAzLCAKLSAgICAzOTExLCAzOTE2LCAzOTI0LCAzOTMwLCAzOTM4LCAzOTQ2LCAzOTUyLCAzOTU4LCAzOTY0LCAzOTcxLCAzOTc5LCAzOTg1LCAKLSAgICAzOTkzLCA0MDAwLCA0MDA1LCA0MDEyLCA0MDIwLCA0MDMwLCA0MDM3LCA0MDQ0LCA0MDU0LCA0MDYxLCA0MDY4LCA0MDc4LCAKLSAgICA0MDg1LCA0MDkyLCA0MDk5LCA0MTA1LCA0MTExLCA0MTIxLCA0MTM0LCA0MTM5LCA0MTQ2LCA0MTUxLCA0MTU1LCA0MTYxLCAKLSAgICA0MTcwLCA0MTc3LCA0MTgyLCA0MTg3LCA0MTkxLCA0MTk2LCA0MjAyLCA0MjA2LCA0MjEyLCA0MjE4LCA0MjI0LCA0MjMwLCAKLSAgICA0MjM4LCA0MjQzLCA0MjQ4LCA0MjUzLCA0MjU4LCA0MjY0LCA0MjY2LCA0MjcxLCA0Mjc1LCA0MjgxLCA0Mjg3LCA0MjkzLCAKLSAgICA0Mjk4LCA0MzA1LCA0MzEyLCA0MzE4LCA0MzI1LCA0MzMzLCA0MzQxLCA0MzQ2LCA0MzUxLCA0MzU1LCA0MzYwLCA0MzYyLCAKLSAgICA0MzY0LCA0MzY3LCA0MzY5LCA0MzcyLCA0Mzc3LCA0MzgyLCA0Mzg4LCA0MzkzLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDE1LCAKLSAgICA0NDIxLCA0NDI2LCA0NDMyLCA0NDM3LCA0NDQzLCA0NDUxLCA0NDU5LCA0NDYzLCA0NDY3LCA0NDcyLCA0NDc4LCA0NDg0LCAKLSAgICA0NDkwLCA0NDk2LCA0NTAxLCA0NTA4LCA0NTE2LCA0NTI0LCA0NTI5LCA0NTM1LCA0NTQyLCA0NTQ5LCA0NTU2LCA0NTYzLCAKLSAgICA0NTY3LCA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk1LCA0NTk4LCA0NjAxLCA0NjA0LCA0NjA3LCA0NjEwLCAKLSAgICA0NjE0LCA0NjE4LCA0NjI0LCA0NjI3LCA0NjMyLCA0NjM4LCA0NjQ0LCA0NjQ3LCA0NjUyLCA0NjU4LCA0NjYyLCA0NjY4LCAKLSAgICA0Njc0LCA0NjgwLCA0Njg2LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA0LCA0NzEwLCA0NzE1LCA0NzIwLCA0NzI0LCA0NzI5LCAKLSAgICA0NzM1LCA0NzQxLCA0NzQ0LCA0NzQ4LCA0NzUyLCA0NzU2LCA0NzU5LCA0NzYyLCA0NzY3LCA0NzcxLCA0Nzc4LCA0NzgyLCAKLSAgICA0Nzg4LCA0NzkyLCA0Nzk4LCA0ODAyLCA0ODA2LCA0ODEwLCA0ODE1LCA0ODIwLCA0ODI3LCA0ODMzLCA0ODQwLCA0ODQ2LCAKLSAgICA0ODUyLCA0ODU4LCA0ODYxLCA0ODY1LCA0ODY5LCA0ODczLCA0ODc3LCA0ODgyLCA0ODg3LCA0ODkxLCA0ODk1LCA0OTAxLCAKLSAgICA0OTA1LCA0OTA5LCA0OTE0LCA0OTIwLCA0OTI1LCA0OTMxLCA0OTM1LCA0OTQyLCA0OTQ3LCA0OTUxLCA0OTU2LCA0OTYxLCAKLSAgICA0OTY3LCA0OTcwLCA0OTc0LCA0OTc5LCA0OTg0LCA0OTkzLCA0OTk5LCA1MDA0LCA1MDA4LCA1MDEzLCA1MDE3LCA1MDIyLCAKLSAgICA1MDI2LCA1MDMwLCA1MDM1LCA1MDM5LCA1MDQ1LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgxLCAKLSAgICA1MDg3LCA1MDkzLCA1MDk5LCA1MTA0LCA1MTEwLCA1MTE2LCA1MTIyLCA1MTI3LCA1MTMyLCA1MTM5LCA1MTQ2LCA1MTUwLCAKLSAgICA1MTU2LCA1MTYzLCAwLCAwLCA1MTcwLCA1MTczLCA1MTgyLCA1MTkxLCA1MjAyLCA1MjA2LCAwLCAwLCAwLCAwLCA1MjExLCAKLSAgICA1MjE0LCA1MjE5LCA1MjI3LCA1MjMyLCA1MjQwLCA1MjQ4LCAwLCA1MjU2LCAwLCA1MjY0LCA1MjcyLCA1MjgwLCA1MjkxLCAKLSAgICA1Mjk2LCA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCAKLSAgICA1MzU2LCA1MzYxLCA1MzY2LCA1MzcxLCAwLCA1Mzc2LCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCAKLSAgICA1NDExLCA1NDE5LCA1NDI3LCA1NDM1LCA1NDQzLCA1NDUxLCA1NDU5LCA1NDcwLCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCAKLSAgICA1NDk1LCA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCAKLSAgICA1NTU1LCA1NTYxLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjA0LCA1NjEyLCA1NjIwLCAKLSAgICA1NjI4LCA1NjM2LCA1NjQxLCA1NjQ1LCA1NjQ5LCA1NjU2LCA1NjY2LCA1Njc2LCA1NjgwLCA1Njg0LCA1Njg4LCA1Njk0LCAKLSAgICA1NzAxLCA1NzA1LCA1NzEwLCA1NzE0LCA1NzE5LCA1NzIzLCA1NzI4LCA1NzMyLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCAKLSAgICA1NzU3LCA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODExLCAKLSAgICA1ODE1LCA1ODIxLCA1ODI1LCA1ODMwLCA1ODM2LCA1ODQ0LCA1ODQ5LCA1ODU0LCA1ODYxLCA1ODY2LCA1ODcxLCA1ODc4LCAKLSAgICA1ODg3LCA1ODk2LCA1OTA3LCA1OTE1LCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM3LCA1OTQyLCA1OTQ4LCA1OTUzLCA1OTU4LCAKLSAgICA1OTYzLCA1OTY4LCA1OTczLCA1OTc4LCA1OTg2LCA1OTkyLCA1OTk3LCA2MDAxLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCAKLSAgICA2MDI2LCA2MDMxLCA2MDM2LCA2MDQwLCA2MDQ2LCA2MDUwLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDY5LCA2MDc0LCA2MDc5LCAKLSAgICA2MDg0LCA2MDg5LCA2MDkzLCA2MDk4LCA2MTAyLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI4LCA2MTMzLCA2MTM5LCAKLSAgICA2MTQzLCA2MTQ4LCA2MTUyLCA2MTU2LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk1LCAKLSAgICA2MjAxLCA2MjA1LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI0LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ4LCA2MjUzLCAKLSAgICA2MjU3LCA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgzLCA2Mjg4LCA2Mjk0LCA2Mjk4LCA2MzAzLCA2MzA3LCA2MzE1LCAKLSAgICA2MzIwLCA2MzI1LCA2MzMwLCA2MzM3LCA2MzQyLCA2MzQ4LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCAKLSAgICA2Mzg2LCA2MzkyLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIzLCA2NDI5LCA2NDM2LCA2NDQzLCA2NDUyLCAKLSAgICA2NDYxLCA2NDY4LCA2NDc1LCA2NDg0LCA2NDkzLCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCAKLSAgICA2NTMzLCA2NTQ0LCA2NTU1LCA2NTYwLCA2NTY1LCA2NTcyLCA2NTc5LCA2NTg3LCA2NTk1LCA2NjAwLCA2NjA1LCA2NjEwLCAKLSAgICA2NjE1LCA2NjE5LCA2NjIzLCA2NjI3LCA2NjMzLCA2NjM5LCA2NjQzLCA2NjUwLCA2NjU1LCA2NjY1LCA2Njc1LCA2NjgxLCAKLSAgICA2Njg3LCA2Njk1LCA2NzAzLCA2NzExLCA2NzE5LCA2NzI2LCA2NzMzLCA2NzQxLCA2NzQ5LCA2NzU3LCA2NzY1LCA2NzczLCAKLSAgICA2NzgxLCA2Nzg5LCA2Nzk3LCA2ODA1LCA2ODEzLCA2ODIwLCA2ODI3LCA2ODMzLCA2ODM5LCA2ODQ3LCA2ODU1LCA2ODYyLCAKLSAgICA2ODY5LCA2ODc3LCA2ODg1LCA2ODkxLCA2ODk3LCA2OTA1LCA2OTEzLCA2OTIxLCA2OTI5LCA2OTM1LCA2OTQxLCA2OTQ5LCAKLSAgICA2OTU3LCA2OTY1LCA2OTczLCA2OTgwLCA2OTg3LCA2OTk1LCA3MDAzLCA3MDExLCA3MDE5LCA3MDI0LCA3MDI5LCA3MDM2LCAKLSAgICA3MDQzLCA3MDUzLCA3MDYzLCA3MDY3LCA3MDc1LCA3MDgzLCA3MDkwLCA3MDk3LCA3MTA1LCA3MTEzLCA3MTIwLCA3MTI3LCAKLSAgICA3MTM1LCA3MTQzLCA3MTUwLCA3MTU3LCA3MTY1LCA3MTczLCA3MTc4LCA3MTg1LCA3MTkyLCA3MTk5LCA3MjA2LCA3MjEyLCAKLSAgICA3MjE4LCA3MjI2LCA3MjM0LCA3MjM5LCA3MjQ0LCA3MjUyLCA3MjYwLCA3MjY4LCA3Mjc2LCA3Mjg0LCA3MjkyLCA3Mjk5LCAKLSAgICA3MzA2LCA3MzE0LCA3MzIyLCA3MzMwLCA3MzM4LCA3MzQ1LCA3MzUyLCA3MzU4LCA3MzY0LCA3MzczLCA3MzgyLCA3Mzg5LCAKLSAgICA3Mzk2LCA3NDAzLCA3NDEwLCA3NDE3LCA3NDI0LCA3NDMxLCA3NDM4LCA3NDQ2LCA3NDU0LCA3NDYyLCA3NDcwLCA3NDc4LCAKLSAgICA3NDg2LCA3NDk2LCA3NTA2LCA3NTEzLCA3NTIwLCA3NTI3LCA3NTM0LCA3NTQxLCA3NTQ4LCA3NTU1LCA3NTYyLCA3NTY5LCAKLSAgICA3NTc2LCA3NTgzLCA3NTkwLCA3NTk3LCA3NjA0LCA3NjExLCA3NjE4LCA3NjI1LCA3NjMyLCA3NjM5LCA3NjQ2LCA3NjUzLCAKLSAgICA3NjYwLCA3NjY3LCA3Njc0LCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCAKLSAgICA3NzI0LCA3NzMwLCA3NzM2LCA3NzQ0LCA3NzUyLCA3NzYwLCA3NzY4LCA3Nzc2LCA3Nzg0LCA3NzkyLCA3ODAwLCA3ODA4LCAKLSAgICA3ODE2LCA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQ0LCAwLCA3ODUyLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCAKLSAgICA3ODc3LCA3ODgyLCA3ODg3LCA3ODkyLCA3ODk2LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCAKLSAgICA3OTM2LCA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCAKLSAgICA3OTk2LCA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCAwLCAwLCA4MDQxLCA4MDQ4LCAKLSAgICA4MDUxLCA4MDU1LCA4MDU5LCA4MDYyLCA4MDY2LCAwLCA4MDcwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCAKLSAgICA4MTAwLCA4MTA1LCA4MTEwLCA4MTE0LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCAKLSAgICA4MTU5LCA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCAKLSAgICA4MjE5LCA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCAwLCA4MjY2LCA4MjcxLCAwLCAKLSAgICAwLCA4Mjc0LCA4MjgwLCA4Mjg2LCAwLCA4MjkwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEyLCA4MzE5LCA4MzI0LCA4MzI5LCAKLSAgICA4MzM0LCA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzYxLCA4MzY2LCA4MzczLCA4MzgwLCA4Mzg1LCA4MzkyLCA4Mzk3LCAKLSAgICA4NDAyLCA4NDA3LCA4NDE0LCA4NDE5LCA4NDI0LCA4NDMxLCA4NDQwLCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY2LCAKLSAgICA4NDcxLCA4NDc4LCA4NDg1LCA4NDkyLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTMyLCA4NTM3LCAKLSAgICA4NTQ2LCA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTczLCA4NTgwLCA4NTg3LCA4NTkzLCA4NTk5LCA4NjA2LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjEzLCA4NjE3LCA4NjIxLCA4NjI1LCA4NjI5LCA4NjMzLCA4NjM3LCA4NjQxLCA4NjQ1LCAKLSAgICA4NjQ5LCA4NjUzLCA4NjU4LCA4NjYyLCA4NjY2LCA4NjcxLCA4Njc1LCA4NjgwLCA4Njg0LCA4Njg4LCA4NjkyLCA4Njk3LCAKLSAgICA4NzAxLCA4NzA2LCA4NzEwLCA4NzE0LCA4NzE4LCA4NzIyLCAwLCAwLCAwLCAwLCAwLCA4NzI2LCA4NzMzLCA4NzQxLCAKLSAgICA4NzQ4LCA4NzUzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzU4LCA4NzYxLCA4NzY1LCA4NzcwLCAKLSAgICA4Nzc0LCA4Nzc4LCA4NzgyLCA4Nzg4LCA4Nzk0LCA4Nzk3LCA4ODA0LCA4ODEzLCA4ODE2LCA4ODE5LCA4ODI0LCA4ODMwLCAKLSAgICA4ODM0LCA4ODQyLCA4ODQ4LCA4ODU0LCA4ODYyLCA4ODY2LCA4ODcxLCA4ODgyLCA4ODg3LCA4ODkxLCA4ODk1LCA4ODk5LCAKLSAgICA4OTAyLCAwLCA4OTA1LCA4OTEyLCA4OTE2LCA4OTIyLCA4OTI2LCA4OTMzLCA4OTQwLCA4OTQ4LCA4OTU1LCA4OTYyLCAKLSAgICA4OTY2LCA4OTcwLCA4OTc2LCA4OTgwLCA4OTg0LCA4OTg4LCA4OTkyLCA4OTk2LCA5MDAwLCA5MDA0LCA5MDA4LCA5MDEyLCAKLSAgICA5MDE2LCA5MDIwLCA5MDI0LCA5MDI4LCA5MDMyLCA5MDM2LCA5MDQwLCA5MDQ0LCA5MDUyLCA5MDYwLCA5MDcwLCA5MDc5LCAKLSAgICA5MDg4LCA5MDkxLCA5MDk1LCA5MDk5LCA5MTAzLCA5MTA3LCA5MTExLCA5MTE1LCA5MTE5LCA5MTIzLCA5MTI4LCA5MTMyLCAKLSAgICA5MTM1LCA5MTM4LCA5MTQxLCA5MTQ0LCA5MTQ3LCA5MTUwLCA5MTUzLCA5MTU2LCA5MTYwLCA5MTY0LCA5MTY4LCA5MTczLCAKLSAgICA5MTc4LCA5MTg0LCA5MTg3LCA5MTk0LCA5MjAzLCA5MjA4LCA5MjEzLCA5MjIwLCA5MjI2LCA5MjMxLCA5MjM1LCA5MjM5LCAKLSAgICA5MjQzLCA5MjQ3LCA5MjUxLCA5MjU1LCA5MjYwLCA5MjY0LCA5MjY5LCA5MjczLCA5Mjc4LCA5MjgzLCA5MjkwLCA5Mjk2LCAKLSAgICA5MzAyLCA5MzA4LCA5MzEzLCA5MzIyLCA5MzMxLCA5MzM2LCA5MzQzLCA5MzUwLCA5MzU3LCA5MzY0LCA5MzY4LCA5MzcyLCAKLSAgICA5Mzc2LCA5MzgzLCA5MzkzLCA5Mzk3LCA5NDAxLCA5NDA1LCA5NDEyLCA5NDIwLCA5NDI0LCA5NDI4LCA5NDM1LCA5NDM5LCAKLSAgICA5NDQzLCA5NDQ3LCA5NDU0LCA5NDYxLCA5NDczLCA5NDc3LCA5NDgxLCA5NDg1LCA5NDk1LCA5NTA0LCA5NTA4LCA5NTE2LCAKLSAgICA5NTIzLCA5NTMwLCA5NTM5LCA5NTUwLCA5NTU4LCA5NTYyLCA5NTcxLCA5NTgyLCA5NTkwLCA5NjAzLCA5NjExLCA5NjE5LCAKLSAgICA5NjI3LCA5NjM1LCA5NjQxLCA5NjUwLCA5NjU3LCA5NjYxLCA5NjY5LCA5NjczLCA5NjgwLCA5Njg4LCA5NjkyLCA5Njk4LCAKLSAgICA5NzA1LCA5NzEyLCA5NzE2LCA5NzI0LCA5NzI4LCA5NzM1LCA5NzM5LCA5NzQ3LCA5NzUxLCA5NzU5LCA5NzY3LCA5Nzc0LCAKLSAgICA5NzgyLCA5NzkwLCA5Nzk3LCA5ODAzLCA5ODA3LCA5ODE0LCA5ODIyLCA5ODI4LCA5ODM1LCA5ODQyLCA5ODQ4LCA5ODU4LCAKLSAgICA5ODY2LCA5ODczLCA5ODc5LCA5ODgzLCA5ODg2LCA5ODkwLCA5ODk2LCA5OTA0LCA5OTA4LCA5OTE0LCA5OTIwLCA5OTI3LCAKLSAgICA5OTM0LCA5OTM3LCA5OTQ0LCA5OTQ5LCA5OTU4LCA5OTYzLCA5OTY3LCA5OTgwLCA5OTkzLCA5OTk5LCAxMDAwNiwgMTAwMTEsIAotICAgIDEwMDE3LCAxMDAyMiwgMTAwMjgsIDEwMDM4LCAxMDA0NSwgMTAwNTQsIDEwMDY0LCAxMDA3MCwgMTAwNzUsIDEwMDgwLCAKLSAgICAxMDA4NCwgMTAwODgsIDEwMDkzLCAxMDA5OCwgMTAxMDQsIDEwMTEyLCAxMDEyMCwgMTAxMzEsIDEwMTM2LCAxMDE0NSwgCi0gICAgMTAxNTQsIDEwMTYxLCAxMDE2NywgMTAxNzMsIDEwMTc5LCAxMDE4NSwgMTAxOTEsIDEwMTk3LCAxMDIwNCwgMTAyMTAsIAotICAgIDEwMjE3LCAxMDIyNCwgMTAyMzEsIDEwMjM4LCAxMDI0NCwgMTAyNTIsIDEwMjYxLCAxMDI2OCwgMTAyNzYsIDEwMjg0LCAKLSAgICAxMDI5MCwgMTAyOTYsIDEwMzAyLCAxMDMxMCwgMTAzMTgsIDEwMzI4LCAxMDMzOCwgMTAzNDIsIDEwMzQ4LCAxMDM1NCwgMCwgCi0gICAgMTAzNjAsIDEwMzY1LCAxMDM3MCwgMTAzNzcsIDEwMzgyLCAxMDM4NywgMTAzOTQsIDEwMzk5LCAxMDQwOCwgMTA0MTMsIAotICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQ0MCwgMTA0NDUsIDEwNDUyLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKLSAgICAxMDQ3MiwgMTA0NzcsIDEwNDgzLCAxMDQ4NywgMTA0OTIsIDEwNDk5LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCi0gICAgMTA1MjQsIDEwNTMxLCAxMDUzOCwgMTA1NDUsIDEwNTUwLCAxMDU1NSwgMTA1NjEsIDEwNTY2LCAxMDU3MSwgMTA1NzcsIAotICAgIDEwNTgyLCAxMDU4NywgMTA1OTUsIDEwNjAzLCAxMDYwOCwgMTA2MTMsIDEwNjE5LCAxMDYyNCwgMTA2MjksIDEwNjMzLCAKLSAgICAxMDYzOSwgMTA2NDMsIDEwNjQ3LCAxMDY1MywgMTA2NTksIDEwNjY0LCAxMDY2OSwgMTA2NzYsIDEwNjgzLCAxMDY4NywgMCwgCi0gICAgMCwgMTA2OTEsIDEwNjk4LCAxMDcwNSwgMTA3MTIsIDEwNzIyLCAxMDczNCwgMTA3NDUsIDEwNzYxLCAxMDc3MywgMTA3ODQsIAotICAgIDEwNzkyLCAxMDc5OSwgMTA4MDksIDEwODI0LCAxMDgzNSwgMTA4NDEsIDEwODUwLCAxMDg1OCwgMTA4NjksIDEwODc5LCAKLSAgICAxMDg4NywgMTA4OTgsIDEwOTA1LCAxMDkxMywgMTA5MjQsIDEwOTMwLCAxMDkzNiwgMTA5NDQsIDEwOTUyLCAxMDk2MCwgCi0gICAgMTA5NjYsIDEwOTc2LCAxMDk4NCwgMTA5OTQsIDExMDA0LCAxMTAxNywgMTEwMzEsIDExMDQ1LCAxMTA1NSwgMTEwNjYsIAotICAgIDExMDc3LCAxMTA5MCwgMTExMDMsIDExMTE3LCAxMTEyOSwgMTExNDEsIDExMTU0LCAxMTE2NywgMTExNzksIDExMTkyLCAKLSAgICAxMTIwMSwgMTEyMDksIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAxMTI0OSwgCi0gICAgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgMTEyOTksIAotICAgIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIDExMzQ5LCAKLSAgICAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzMsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAxMTM5OCwgCi0gICAgMTE0MDIsIDExNDA2LCAxMTQxMCwgMTE0MTQsIDExNDE4LCAxMTQyMiwgMTE0MjYsIDExNDMwLCAxMTQzNCwgMTE0MzgsIAotICAgIDExNDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTQ0NywgMTE0NTIsIDExNDU2LCAKLSAgICAxMTQ2MCwgMTE0NjQsIDExNDY4LCAxMTQ3MiwgMTE0NzYsIDExNDgxLCAxMTQ4NSwgMTE0OTAsIDExNDk0LCAxMTQ5OSwgCi0gICAgMTE1MDMsIDExNTA3LCAxMTUxMSwgMTE1MTYsIDExNTIwLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTUzOSwgMTE1NDQsIAotICAgIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODgsIDExNTkzLCAKLSAgICAxMTYwMCwgMTE2MDQsIDExNjA5LCAxMTYxNCwgMTE2MTgsIDExNjIzLCAxMTYyNywgMTE2MzQsIDExNjQxLCAxMTY0OCwgCi0gICAgMTE2NTUsIDExNjYzLCAxMTY3MSwgMTE2ODAsIDExNjg4LCAxMTY5NSwgMTE3MDIsIDExNzEwLCAxMTcxNiwgMTE3MjIsIAotICAgIDExNzI4LCAxMTczNCwgMTE3NDEsIDExNzQ2LCAxMTc1MCwgMTE3NTUsIDAsIDAsIDAsIDAsIDAsIDExNzU5LCAxMTc2NCwgCi0gICAgMTE3NjksIDExNzc0LCAxMTc3OSwgMTE3ODQsIDExNzg5LCAxMTc5NCwgMTE3OTksIDExODA0LCAxMTgwOSwgMTE4MTQsIAotICAgIDExODE5LCAxMTgyNCwgMTE4MjksIDExODM0LCAxMTgzOSwgMTE4NDQsIDExODQ5LCAxMTg1NCwgMTE4NTksIDExODY0LCAKLSAgICAxMTg2OSwgMTE4NzQsIDExODc5LCAxMTg4NCwgMTE4ODksIDExODk3LCAxMTkwNCwgMTE5MTAsIDExOTE1LCAxMTkyMywgCi0gICAgMTE5MzAsIDExOTM2LCAxMTk0MywgMTE5NDksIDExOTU0LCAxMTk2MSwgMTE5NjgsIDExOTc0LCAxMTk3OSwgMTE5ODQsIAotICAgIDExOTkwLCAxMTk5NSwgMTIwMDAsIDEyMDA2LCAwLCAwLCAxMjAxMSwgMTIwMTcsIDEyMDIzLCAxMjAyOSwgMTIwMzUsIAotICAgIDEyMDQxLCAxMjA0NywgMTIwNTIsIDEyMDYwLCAxMjA2NiwgMTIwNzIsIDEyMDc4LCAxMjA4NCwgMTIwOTAsIDEyMDk4LCAwLCAKLSAgICAxMjEwNCwgMTIxMDksIDEyMTE0LCAxMjExOSwgMTIxMjQsIDEyMTI5LCAxMjEzNCwgMTIxMzksIDEyMTQ0LCAxMjE0OSwgCi0gICAgMTIxNTQsIDEyMTU5LCAxMjE2NCwgMTIxNjksIDEyMTc0LCAxMjE3OSwgMTIxODQsIDEyMTg5LCAxMjE5NCwgMTIxOTksIAotICAgIDEyMjA0LCAxMjIwOSwgMTIyMTQsIDEyMjE5LCAxMjIyNCwgMTIyMjksIDEyMjM0LCAxMjIzOSwgMCwgMCwgMTIyNDQsIDAsIAorICAgIDE1MCwgMTU0LCAxNTksIDE2NCwgMTY4LCAxNzMsIDE3OCwgMTgyLCAxODcsIDE5MiwgMTk3LCAyMDIsIDIwNywgMjEwLCAKKyAgICAyMTQsIDIxNywgMjIxLCAyMjQsIDIyOCwgMjMyLCAyMzcsIDI0MiwgMjQ3LCAyNTEsIDI1NiwgMjYxLCAyNjYsIDI3MCwgCisgICAgMjc1LCAyODAsIDI4NCwgMjg5LCAyOTQsIDI5OCwgMzAzLCAzMDgsIDMxMiwgMzE3LCAzMjIsIDMyNiwgMzMxLCAzMzYsIAorICAgIDM0MSwgMzQ2LCAzNTEsIDM1NSwgMzU4LCAzNjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM2NCwgMzY4LCAzNzMsIAorICAgIDM3NiwgMzc5LCAzODIsIDM4NSwgMzg4LCAzOTEsIDM5MywgMzk2LCA0MDIsIDQxMCwgNDEzLCA0MTcsIDQyMCwgNDIyLCAKKyAgICA0MjUsIDQyOCwgNDMxLCA0MzQsIDQzOCwgNDQxLCA0NDQsIDQ0NywgNDQ5LCA0NTIsIDQ1OCwgNDY2LCA0NzMsIDQ4MCwgCisgICAgNDg3LCA0OTIsIDQ5OSwgNTA1LCA1MTIsIDUxOSwgNTI2LCA1MzQsIDUzOSwgNTQ3LCA1NTQsIDU2MCwgNTY3LCA1NzQsIAorICAgIDU4MiwgNTg5LCA1OTcsIDYwNSwgNjEwLCA2MTgsIDYyNSwgNjMxLCA2MzgsIDY0NSwgNjUyLCA2NTUsIDY2MSwgNjY4LCAKKyAgICA2NzQsIDY4MSwgNjg4LCA2OTUsIDcwMCwgNzA3LCA3MTQsIDcyMCwgNzI3LCA3MzQsIDc0MSwgNzQ5LCA3NTQsIDc2MiwgCisgICAgNzY5LCA3NzUsIDc4MiwgNzg5LCA3OTcsIDgwNCwgODEyLCA4MjAsIDgyNSwgODMzLCA4NDAsIDg0NiwgODUzLCA4NjAsIAorICAgIDg2NywgODcwLCA4NzYsIDg4MywgODg5LCA4OTYsIDkwMywgOTEwLCA5MTUsIDkyMywgOTMwLCA5MzcsIDk0NCwgOTUxLCAKKyAgICA5NTgsIDk2NSwgOTcyLCA5NzksIDk4NywgOTk1LCAxMDAzLCAxMDExLCAxMDE5LCAxMDI3LCAxMDM1LCAxMDQzLCAxMDUwLCAKKyAgICAxMDU3LCAxMDY0LCAxMDcxLCAxMDc4LCAxMDg1LCAxMDkyLCAxMDk5LCAxMTA2LCAxMTEzLCAxMTIwLCAxMTI3LCAxMTM1LCAKKyAgICAxMTQzLCAxMTUxLCAxMTU5LCAxMTY3LCAxMTc1LCAxMTgzLCAxMTkxLCAxMTk5LCAxMjA3LCAxMjE0LCAxMjIxLCAxMjI5LCAKKyAgICAxMjM3LCAxMjQ1LCAxMjUzLCAxMjYxLCAxMjY5LCAxMjc3LCAxMjg1LCAxMjkzLCAxMjk5LCAxMzA0LCAxMzA5LCAxMzE3LCAKKyAgICAxMzI1LCAxMzMzLCAxMzQxLCAxMzQ2LCAxMzUzLCAxMzYwLCAxMzY4LCAxMzc2LCAxMzg0LCAxMzkyLCAxNDAxLCAxNDEwLCAKKyAgICAxNDE3LCAxNDI0LCAxNDMxLCAxNDM4LCAxNDQ2LCAxNDU0LCAxNDYyLCAxNDcwLCAxNDgxLCAxNDg2LCAxNDkxLCAxNDk4LCAKKyAgICAxNTA1LCAxNTEyLCAxNTE5LCAxNTI2LCAxNTMzLCAxNTM4LCAxNTQzLCAxNTUwLCAxNTU3LCAxNTY1LCAxNTczLCAxNTgxLCAKKyAgICAxNTg5LCAxNTk2LCAxNjAzLCAxNjExLCAxNjE5LCAxNjI3LCAxNjM1LCAxNjQzLCAxNjUxLCAxNjU5LCAxNjY3LCAxNjc1LCAKKyAgICAxNjgzLCAxNjkwLCAxNjk3LCAxNzA0LCAxNzExLCAxNzE4LCAxNzI1LCAxNzMyLCAxNzM5LCAxNzQ3LCAxNzU1LCAxNzYyLCAKKyAgICAxNzY5LCAxNzc2LCAxNzgzLCAxNzkxLCAxNzk5LCAxODA3LCAxODE1LCAxODIzLCAxODMwLCAxODM3LCAxODQ1LCAxODUzLCAKKyAgICAxODYxLCAxODY5LCAxODc1LCAxODgxLCAxODg3LCAxODk0LCAxOTAxLCAxOTA2LCAxOTExLCAxOTE2LCAxOTIzLCAxOTMwLCAKKyAgICAxOTM3LCAxOTQ0LCAxOTUyLCAxOTYwLCAxOTY3LCAxOTczLCAxOTc4LCAxOTgzLCAxOTkwLCAxOTk3LCAyMDA0LCAyMDA5LCAKKyAgICAyMDE0LCAyMDE5LCAyMDI2LCAyMDMzLCAyMDQwLCAyMDQ3LCAyMDU0LCAyMDYxLCAyMDY5LCAyMDc5LCAyMDg3LCAyMDk0LCAKKyAgICAyMTAxLCAyMTA2LCAyMTExLCAyMTE4LCAyMTI1LCAyMTI5LCAyMTM0LCAyMTM5LCAyMTQ0LCAyMTUyLCAyMTYxLCAyMTY4LCAKKyAgICAyMTc1LCAyMTg0LCAyMTkxLCAyMTk4LCAyMjAzLCAyMjEwLCAyMjE3LCAyMjI0LCAyMjMxLCAyMjM4LCAyMjQzLCAyMjUwLCAKKyAgICAyMjU3LCAyMjY1LCAyMjcwLCAyMjc1LCAyMjgwLCAyMjkwLCAyMjk0LCAyMzAwLCAyMzA2LCAyMzEyLCAyMzE4LCAyMzI2LCAKKyAgICAyMzM5LCAyMzQ3LCAyMzUyLCAyMzYyLCAyMzY3LCAyMzcyLCAyMzgyLCAyMzg3LCAyMzk0LCAyNDAxLCAyNDA5LCAyNDE3LCAKKyAgICAyNDI0LCAyNDMxLCAyNDM4LCAyNDQ1LCAyNDU1LCAyNDY1LCAyNDc0LCAyNDgzLCAyNDkzLCAyNTAzLCAyNTEzLCAyNTIzLCAKKyAgICAyNTI5LCAyNTM5LCAyNTQ5LCAyNTU5LCAyNTY5LCAyNTc3LCAyNTg1LCAyNTkyLCAyNTk5LCAyNjA3LCAyNjE1LCAyNjIzLCAKKyAgICAyNjMxLCAyNjM4LCAyNjQ1LCAyNjU1LCAyNjY1LCAyNjczLCAyNjgxLCAyNjg5LCAyNjk0LCAyNzA0LCAyNzA5LCAyNzE2LCAKKyAgICAyNzIzLCAyNzI4LCAyNzMzLCAyNzQxLCAyNzQ5LCAyNzU5LCAyNzY5LCAyNzc2LCAyNzgzLCAyNzkyLCAyODAxLCAyODA5LCAKKyAgICAyODE3LCAyODI2LCAyODM1LCAyODQzLCAyODUxLCAyODYwLCAyODY5LCAyODc4LCAyODg3LCAyODk3LCAyOTA3LCAyOTE1LCAKKyAgICAyOTIzLCAyOTMyLCAyOTQxLCAyOTUwLCAyOTU5LCAyOTY5LCAyOTc5LCAyOTg3LCAyOTk1LCAzMDA0LCAzMDEzLCAzMDIyLCAKKyAgICAzMDMxLCAzMDQwLCAzMDQ5LCAzMDU0LCAzMDU5LCAzMDY3LCAzMDc1LCAzMDg1LCAzMDkzLCAzMDk4LCAzMTAzLCAzMTEwLCAKKyAgICAzMTE3LCAzMTI0LCAzMTMxLCAzMTM4LCAzMTQ1LCAzMTU1LCAzMTY1LCAzMTc1LCAzMTg1LCAzMTkyLCAzMTk5LCAzMjA5LCAKKyAgICAzMjE5LCAzMjI3LCAzMjM1LCAzMjQzLCAzMjUxLCAzMjU5LCAzMjY2LCAzMjczLCAzMjgwLCAzMjg2LCAzMjkzLCAzMzAwLCAKKyAgICAzMzA3LCAzMzE2LCAzMzI2LCAzMzM2LCAzMzQzLCAzMzUwLCAzMzU2LCAzMzYxLCAzMzY4LCAzMzc0LCAzMzgwLCAzMzg3LCAKKyAgICAzMzk0LCAzNDA1LCAzNDE1LCAzNDIyLCAzNDI5LCAzNDM2LCAzNDQzLCAzNDQ5LCAzNDU0LCAzNDYxLCAzNDY3LCAzNDcyLCAKKyAgICAzNDgwLCAzNDg4LCAzNDk1LCAzNTAxLCAzNTA2LCAzNTEzLCAzNTE4LCAzNTI1LCAzNTM0LCAzNTQzLCAzNTUyLCAzNTU5LCAKKyAgICAzNTY1LCAzNTcxLCAzNTc2LCAzNTgzLCAzNTkwLCAzNTk3LCAzNjA0LCAzNjExLCAzNjE2LCAzNjIxLCAzNjMwLCAzNjM4LCAKKyAgICAzNjQ3LCAzNjUyLCAzNjU5LCAzNjcwLCAzNjc3LCAzNjg1LCAzNjk0LCAzNzAwLCAzNzA2LCAzNzEyLCAzNzE5LCAzNzI0LCAKKyAgICAzNzMwLCAzNzQxLCAzNzUwLCAzNzU5LCAzNzY3LCAzNzc1LCAzNzg1LCAzNzkwLCAzNzk3LCAzODA0LCAzODA5LCAzODIxLCAKKyAgICAzODMwLCAzODM4LCAzODQ1LCAzODU0LCAzODU5LCAzODY0LCAzODcxLCAzODc4LCAzODg1LCAzODkyLCAzODk4LCAzOTA3LCAKKyAgICAzOTE1LCAzOTIwLCAzOTI4LCAzOTM0LCAzOTQyLCAzOTUwLCAzOTU2LCAzOTYyLCAzOTY4LCAzOTc1LCAzOTgzLCAzOTg5LCAKKyAgICAzOTk3LCA0MDA0LCA0MDA5LCA0MDE2LCA0MDI0LCA0MDM0LCA0MDQxLCA0MDQ4LCA0MDU4LCA0MDY1LCA0MDcyLCA0MDgyLCAKKyAgICA0MDg5LCA0MDk2LCA0MTAzLCA0MTA5LCA0MTE1LCA0MTI1LCA0MTM4LCA0MTQzLCA0MTUwLCA0MTU1LCA0MTU5LCA0MTY1LCAKKyAgICA0MTc0LCA0MTgxLCA0MTg2LCA0MTkxLCA0MTk1LCA0MjAwLCA0MjA2LCA0MjEwLCA0MjE2LCA0MjIyLCA0MjI4LCA0MjM0LCAKKyAgICA0MjQyLCA0MjQ3LCA0MjUyLCA0MjU3LCA0MjYyLCA0MjY4LCA0MjcwLCA0Mjc1LCA0Mjc5LCA0Mjg1LCA0MjkxLCA0Mjk3LCAKKyAgICA0MzAyLCA0MzA5LCA0MzE2LCA0MzIyLCA0MzI5LCA0MzM3LCA0MzQ1LCA0MzUwLCA0MzU1LCA0MzU5LCA0MzY0LCA0MzY2LCAKKyAgICA0MzY4LCA0MzcxLCA0MzczLCA0Mzc2LCA0MzgxLCA0Mzg2LCA0MzkyLCA0Mzk3LCA0NDAxLCA0NDA2LCA0NDExLCA0NDIwLCAKKyAgICA0NDI2LCA0NDMxLCA0NDM3LCA0NDQyLCA0NDQ4LCA0NDU2LCA0NDY0LCA0NDY4LCA0NDcyLCA0NDc3LCA0NDgzLCA0NDg5LCAKKyAgICA0NDk1LCA0NTAxLCA0NTA2LCA0NTEzLCA0NTIxLCA0NTI5LCA0NTM0LCA0NTQwLCA0NTQ3LCA0NTU0LCA0NTYxLCA0NTY4LCAKKyAgICA0NTcyLCA0NTc3LCA0NTgyLCA0NTg3LCA0NTkyLCA0NTk3LCA0NjAwLCA0NjAzLCA0NjA2LCA0NjA5LCA0NjEyLCA0NjE1LCAKKyAgICA0NjE5LCA0NjIzLCA0NjI5LCA0NjMyLCA0NjM3LCA0NjQzLCA0NjQ5LCA0NjUyLCA0NjU3LCA0NjYzLCA0NjY3LCA0NjczLCAKKyAgICA0Njc5LCA0Njg1LCA0NjkxLCA0Njk2LCA0NzAxLCA0NzA2LCA0NzA5LCA0NzE1LCA0NzIwLCA0NzI1LCA0NzI5LCA0NzM0LCAKKyAgICA0NzQwLCA0NzQ2LCA0NzQ5LCA0NzUzLCA0NzU3LCA0NzYxLCA0NzY0LCA0NzY3LCA0NzcyLCA0Nzc2LCA0NzgzLCA0Nzg3LCAKKyAgICA0NzkzLCA0Nzk3LCA0ODAzLCA0ODA3LCA0ODExLCA0ODE1LCA0ODIwLCA0ODI1LCA0ODMyLCA0ODM4LCA0ODQ1LCA0ODUxLCAKKyAgICA0ODU3LCA0ODYzLCA0ODY2LCA0ODcwLCA0ODc0LCA0ODc4LCA0ODgyLCA0ODg3LCA0ODkyLCA0ODk2LCA0OTAwLCA0OTA2LCAKKyAgICA0OTEwLCA0OTE0LCA0OTE5LCA0OTI1LCA0OTMwLCA0OTM2LCA0OTQwLCA0OTQ3LCA0OTUyLCA0OTU2LCA0OTYxLCA0OTY2LCAKKyAgICA0OTcyLCA0OTc1LCA0OTc5LCA0OTg0LCA0OTg5LCA0OTk4LCA1MDA0LCA1MDA5LCA1MDEzLCA1MDE4LCA1MDIyLCA1MDI3LCAKKyAgICA1MDMxLCA1MDM1LCA1MDQwLCA1MDQ0LCA1MDUwLCA1MDU1LCA1MDYwLCA1MDY1LCA1MDcwLCA1MDc1LCA1MDgwLCA1MDg2LCAKKyAgICA1MDkyLCA1MDk4LCA1MTA0LCA1MTA5LCA1MTE1LCA1MTIxLCA1MTI3LCA1MTMyLCA1MTM3LCA1MTQ0LCA1MTUxLCA1MTU1LCAKKyAgICA1MTYxLCA1MTY4LCAwLCAwLCA1MTc1LCA1MTc4LCA1MTg3LCA1MTk2LCA1MjA3LCA1MjExLCAwLCAwLCAwLCAwLCA1MjE2LCAKKyAgICA1MjE5LCA1MjI0LCA1MjMyLCA1MjM3LCA1MjQ1LCA1MjUzLCAwLCA1MjYxLCAwLCA1MjY5LCA1Mjc3LCA1Mjg1LCA1Mjk2LCAKKyAgICA1MzAxLCA1MzA2LCA1MzExLCA1MzE2LCA1MzIxLCA1MzI2LCA1MzMxLCA1MzM2LCA1MzQxLCA1MzQ2LCA1MzUxLCA1MzU2LCAKKyAgICA1MzYxLCA1MzY2LCA1MzcxLCA1Mzc2LCAwLCA1MzgxLCA1Mzg2LCA1MzkxLCA1Mzk2LCA1NDAxLCA1NDA2LCA1NDExLCAKKyAgICA1NDE2LCA1NDI0LCA1NDMyLCA1NDQwLCA1NDQ4LCA1NDU2LCA1NDY0LCA1NDc1LCA1NDgwLCA1NDg1LCA1NDkwLCA1NDk1LCAKKyAgICA1NTAwLCA1NTA1LCA1NTEwLCA1NTE1LCA1NTIwLCA1NTI1LCA1NTMwLCA1NTM1LCA1NTQwLCA1NTQ1LCA1NTUwLCA1NTU1LCAKKyAgICA1NTYwLCA1NTY2LCA1NTcxLCA1NTc2LCA1NTgxLCA1NTg2LCA1NTkxLCA1NTk2LCA1NjAxLCA1NjA5LCA1NjE3LCA1NjI1LCAKKyAgICA1NjMzLCA1NjQxLCA1NjQ2LCA1NjUwLCA1NjU0LCA1NjYxLCA1NjcxLCA1NjgxLCA1Njg1LCA1Njg5LCA1NjkzLCA1Njk5LCAKKyAgICA1NzA2LCA1NzEwLCA1NzE1LCA1NzE5LCA1NzI0LCA1NzI4LCA1NzMzLCA1NzM3LCA1NzQyLCA1NzQ3LCA1NzUyLCA1NzU3LCAKKyAgICA1NzYyLCA1NzY3LCA1NzcyLCA1Nzc3LCA1NzgyLCA1Nzg3LCA1NzkyLCA1Nzk3LCA1ODAyLCA1ODA3LCA1ODEyLCA1ODE2LCAKKyAgICA1ODIwLCA1ODI2LCA1ODMwLCA1ODM1LCA1ODQxLCA1ODQ5LCA1ODU0LCA1ODU5LCA1ODY2LCA1ODcxLCA1ODc2LCA1ODgzLCAKKyAgICA1ODkyLCA1OTAxLCA1OTEyLCA1OTIwLCA1OTI1LCA1OTMwLCA1OTM1LCA1OTQyLCA1OTQ3LCA1OTUzLCA1OTU4LCA1OTYzLCAKKyAgICA1OTY4LCA1OTczLCA1OTc4LCA1OTgzLCA1OTkxLCA1OTk3LCA2MDAyLCA2MDA2LCA2MDExLCA2MDE2LCA2MDIxLCA2MDI2LCAKKyAgICA2MDMxLCA2MDM2LCA2MDQxLCA2MDQ1LCA2MDUxLCA2MDU1LCA2MDYwLCA2MDY1LCA2MDcwLCA2MDc0LCA2MDc5LCA2MDg0LCAKKyAgICA2MDg5LCA2MDk0LCA2MDk4LCA2MTAzLCA2MTA3LCA2MTEyLCA2MTE3LCA2MTIyLCA2MTI3LCA2MTMzLCA2MTM4LCA2MTQ0LCAKKyAgICA2MTQ4LCA2MTUzLCA2MTU3LCA2MTYxLCA2MTY2LCA2MTcxLCA2MTc2LCA2MTgxLCA2MTg2LCA2MTkxLCA2MTk2LCA2MjAwLCAKKyAgICA2MjA2LCA2MjEwLCA2MjE1LCA2MjIwLCA2MjI1LCA2MjI5LCA2MjM0LCA2MjM5LCA2MjQ0LCA2MjQ5LCA2MjUzLCA2MjU4LCAKKyAgICA2MjYyLCA2MjY3LCA2MjcyLCA2Mjc3LCA2MjgyLCA2Mjg4LCA2MjkzLCA2Mjk5LCA2MzAzLCA2MzA4LCA2MzEyLCA2MzIwLCAKKyAgICA2MzI1LCA2MzMwLCA2MzM1LCA2MzQyLCA2MzQ3LCA2MzUzLCA2MzU4LCA2MzYzLCA2MzY4LCA2MzczLCA2Mzc4LCA2MzgzLCAKKyAgICA2MzkxLCA2Mzk3LCA2NDAyLCA2NDA3LCA2NDEyLCA2NDE3LCA2NDIyLCA2NDI4LCA2NDM0LCA2NDQxLCA2NDQ4LCA2NDU3LCAKKyAgICA2NDY2LCA2NDczLCA2NDgwLCA2NDg5LCA2NDk4LCA2NTAzLCA2NTA4LCA2NTEzLCA2NTE4LCA2NTIzLCA2NTI4LCA2NTMzLCAKKyAgICA2NTM4LCA2NTQ5LCA2NTYwLCA2NTY1LCA2NTcwLCA2NTc3LCA2NTg0LCA2NTkyLCA2NjAwLCA2NjA1LCA2NjEwLCA2NjE1LCAKKyAgICA2NjIwLCA2NjI0LCA2NjI4LCA2NjMyLCA2NjM4LCA2NjQ0LCA2NjQ4LCA2NjU1LCA2NjYwLCA2NjcwLCA2NjgwLCA2Njg2LCAKKyAgICA2NjkyLCA2NzAwLCA2NzA4LCA2NzE2LCA2NzI0LCA2NzMxLCA2NzM4LCA2NzQ2LCA2NzU0LCA2NzYyLCA2NzcwLCA2Nzc4LCAKKyAgICA2Nzg2LCA2Nzk0LCA2ODAyLCA2ODEwLCA2ODE4LCA2ODI1LCA2ODMyLCA2ODM4LCA2ODQ0LCA2ODUyLCA2ODYwLCA2ODY3LCAKKyAgICA2ODc0LCA2ODgyLCA2ODkwLCA2ODk2LCA2OTAyLCA2OTEwLCA2OTE4LCA2OTI2LCA2OTM0LCA2OTQwLCA2OTQ2LCA2OTU0LCAKKyAgICA2OTYyLCA2OTcwLCA2OTc4LCA2OTg1LCA2OTkyLCA3MDAwLCA3MDA4LCA3MDE2LCA3MDI0LCA3MDI5LCA3MDM0LCA3MDQxLCAKKyAgICA3MDQ4LCA3MDU4LCA3MDY4LCA3MDcyLCA3MDgwLCA3MDg4LCA3MDk1LCA3MTAyLCA3MTEwLCA3MTE4LCA3MTI1LCA3MTMyLCAKKyAgICA3MTQwLCA3MTQ4LCA3MTU1LCA3MTYyLCA3MTcwLCA3MTc4LCA3MTgzLCA3MTkwLCA3MTk3LCA3MjA0LCA3MjExLCA3MjE3LCAKKyAgICA3MjIzLCA3MjMxLCA3MjM5LCA3MjQ0LCA3MjQ5LCA3MjU3LCA3MjY1LCA3MjczLCA3MjgxLCA3Mjg5LCA3Mjk3LCA3MzA0LCAKKyAgICA3MzExLCA3MzE5LCA3MzI3LCA3MzM1LCA3MzQzLCA3MzUwLCA3MzU3LCA3MzYzLCA3MzY5LCA3Mzc4LCA3Mzg3LCA3Mzk0LCAKKyAgICA3NDAxLCA3NDA4LCA3NDE1LCA3NDIyLCA3NDI5LCA3NDM2LCA3NDQzLCA3NDUxLCA3NDU5LCA3NDY3LCA3NDc1LCA3NDgzLCAKKyAgICA3NDkxLCA3NTAxLCA3NTExLCA3NTE4LCA3NTI1LCA3NTMyLCA3NTM5LCA3NTQ2LCA3NTUzLCA3NTYwLCA3NTY3LCA3NTc0LCAKKyAgICA3NTgxLCA3NTg4LCA3NTk1LCA3NjAyLCA3NjA5LCA3NjE2LCA3NjIzLCA3NjMwLCA3NjM3LCA3NjQ0LCA3NjUxLCA3NjU4LCAKKyAgICA3NjY1LCA3NjcyLCA3Njc5LCA3Njg0LCA3Njg5LCA3Njk0LCA3Njk5LCA3NzA0LCA3NzA5LCA3NzE0LCA3NzE5LCA3NzI0LCAKKyAgICA3NzI5LCA3NzM1LCA3NzQxLCA3NzQ5LCA3NzU3LCA3NzY1LCA3NzczLCA3NzgxLCA3Nzg5LCA3Nzk3LCA3ODA1LCA3ODEzLCAKKyAgICA3ODIxLCA3ODI2LCA3ODMxLCA3ODM2LCA3ODQxLCA3ODQ5LCAwLCA3ODU3LCA3ODYyLCA3ODY3LCA3ODcyLCA3ODc3LCAKKyAgICA3ODgyLCA3ODg3LCA3ODkyLCA3ODk3LCA3OTAxLCA3OTA2LCA3OTExLCA3OTE2LCA3OTIxLCA3OTI2LCA3OTMxLCA3OTM2LCAKKyAgICA3OTQxLCA3OTQ2LCA3OTUxLCA3OTU2LCA3OTYxLCA3OTY2LCA3OTcxLCA3OTc2LCA3OTgxLCA3OTg2LCA3OTkxLCA3OTk2LCAKKyAgICA4MDAxLCA4MDA2LCA4MDExLCA4MDE2LCA4MDIxLCA4MDI2LCA4MDMxLCA4MDM2LCA4MDQxLCAwLCAwLCA4MDQ2LCA4MDUzLCAKKyAgICA4MDU2LCA4MDYwLCA4MDY0LCA4MDY3LCA4MDcxLCAwLCA4MDc1LCA4MDgwLCA4MDg1LCA4MDkwLCA4MDk1LCA4MTAwLCAKKyAgICA4MTA1LCA4MTEwLCA4MTE1LCA4MTE5LCA4MTI0LCA4MTI5LCA4MTM0LCA4MTM5LCA4MTQ0LCA4MTQ5LCA4MTU0LCA4MTU5LCAKKyAgICA4MTY0LCA4MTY5LCA4MTc0LCA4MTc5LCA4MTg0LCA4MTg5LCA4MTk0LCA4MTk5LCA4MjA0LCA4MjA5LCA4MjE0LCA4MjE5LCAKKyAgICA4MjI0LCA4MjI5LCA4MjM0LCA4MjM5LCA4MjQ0LCA4MjQ5LCA4MjU0LCA4MjU5LCA4MjY0LCAwLCA4MjcxLCA4Mjc2LCAwLCAKKyAgICAwLCA4Mjc5LCA4Mjg1LCA4MjkxLCAwLCA4Mjk1LCA4MzAwLCA4MzA1LCA4MzEwLCA4MzE3LCA4MzI0LCA4MzI5LCA4MzM0LCAKKyAgICA4MzM5LCA4MzQ0LCA4MzQ5LCA4MzU0LCA4MzU5LCA4MzY2LCA4MzcxLCA4Mzc4LCA4Mzg1LCA4MzkwLCA4Mzk3LCA4NDAyLCAKKyAgICA4NDA3LCA4NDEyLCA4NDE5LCA4NDI0LCA4NDI5LCA4NDM2LCA4NDQ1LCA4NDUwLCA4NDU1LCA4NDYwLCA4NDY1LCA4NDcxLCAKKyAgICA4NDc2LCA4NDgzLCA4NDkwLCA4NDk3LCA4NTAyLCA4NTA3LCA4NTEyLCA4NTE3LCA4NTIyLCA4NTI3LCA4NTM3LCA4NTQyLCAKKyAgICA4NTUxLCA4NTU2LCA4NTYxLCA4NTY2LCA4NTcxLCA4NTc4LCA4NTg1LCA4NTkyLCA4NTk4LCA4NjA0LCA4NjExLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA4NjE4LCA4NjIyLCA4NjI2LCA4NjMwLCA4NjM0LCA4NjM4LCA4NjQyLCA4NjQ2LCA4NjUwLCAKKyAgICA4NjU0LCA4NjU4LCA4NjYzLCA4NjY3LCA4NjcxLCA4Njc2LCA4NjgwLCA4Njg1LCA4Njg5LCA4NjkzLCA4Njk3LCA4NzAyLCAKKyAgICA4NzA2LCA4NzExLCA4NzE1LCA4NzE5LCA4NzIzLCA4NzI3LCAwLCAwLCAwLCAwLCAwLCA4NzMxLCA4NzM4LCA4NzQ2LCAKKyAgICA4NzUzLCA4NzU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NzYzLCA4NzY2LCA4NzcwLCA4Nzc1LCAKKyAgICA4Nzc5LCA4NzgzLCA4Nzg3LCA4NzkzLCA4Nzk5LCA4ODAyLCA4ODA5LCA4ODE4LCA4ODIxLCA4ODI0LCA4ODI5LCA4ODM1LCAKKyAgICA4ODM5LCA4ODQ3LCA4ODUzLCA4ODU5LCA4ODY3LCA4ODcxLCA4ODc2LCA4ODg3LCA4ODkyLCA4ODk2LCA4OTAwLCA4OTA0LCAKKyAgICA4OTA3LCAwLCA4OTEwLCA4OTE3LCA4OTIxLCA4OTI3LCA4OTMxLCA4OTM4LCA4OTQ1LCA4OTUzLCA4OTYwLCA4OTY3LCAKKyAgICA4OTcxLCA4OTc1LCA4OTgxLCA4OTg1LCA4OTg5LCA4OTkzLCA4OTk3LCA5MDAxLCA5MDA1LCA5MDA5LCA5MDEzLCA5MDE3LCAKKyAgICA5MDIxLCA5MDI1LCA5MDI5LCA5MDMzLCA5MDM3LCA5MDQxLCA5MDQ1LCA5MDQ5LCA5MDU3LCA5MDY1LCA5MDc1LCA5MDg0LCAKKyAgICA5MDkzLCA5MDk2LCA5MTAwLCA5MTA0LCA5MTA4LCA5MTEyLCA5MTE2LCA5MTIwLCA5MTI0LCA5MTI4LCA5MTMzLCA5MTM3LCAKKyAgICA5MTQwLCA5MTQzLCA5MTQ2LCA5MTQ5LCA5MTUyLCA5MTU1LCA5MTU4LCA5MTYxLCA5MTY1LCA5MTY5LCA5MTczLCA5MTc4LCAKKyAgICA5MTgzLCA5MTg5LCA5MTkyLCA5MTk5LCA5MjA4LCA5MjEzLCA5MjE4LCA5MjI1LCA5MjMxLCA5MjM2LCA5MjQwLCA5MjQ0LCAKKyAgICA5MjQ4LCA5MjUyLCA5MjU2LCA5MjYwLCA5MjY1LCA5MjY5LCA5Mjc0LCA5Mjc4LCA5MjgzLCA5Mjg4LCA5Mjk1LCA5MzAxLCAKKyAgICA5MzA3LCA5MzEzLCA5MzE4LCA5MzI3LCA5MzM2LCA5MzQxLCA5MzQ4LCA5MzU1LCA5MzYyLCA5MzY5LCA5MzczLCA5Mzc3LCAKKyAgICA5MzgxLCA5Mzg4LCA5Mzk4LCA5NDAyLCA5NDA2LCA5NDEwLCA5NDE3LCA5NDI1LCA5NDI5LCA5NDMzLCA5NDQwLCA5NDQ0LCAKKyAgICA5NDQ4LCA5NDUyLCA5NDU5LCA5NDY2LCA5NDc4LCA5NDgyLCA5NDg2LCA5NDkwLCA5NTAwLCA5NTA5LCA5NTEzLCA5NTIxLCAKKyAgICA5NTI4LCA5NTM1LCA5NTQ0LCA5NTU1LCA5NTYzLCA5NTY3LCA5NTc2LCA5NTg3LCA5NTk1LCA5NjA4LCA5NjE2LCA5NjI0LCAKKyAgICA5NjMyLCA5NjQwLCA5NjQ2LCA5NjU1LCA5NjYyLCA5NjY2LCA5Njc0LCA5Njc4LCA5Njg1LCA5NjkzLCA5Njk3LCA5NzAzLCAKKyAgICA5NzEwLCA5NzE3LCA5NzIxLCA5NzI5LCA5NzMzLCA5NzQwLCA5NzQ0LCA5NzUyLCA5NzU2LCA5NzY0LCA5NzcyLCA5Nzc5LCAKKyAgICA5Nzg3LCA5Nzk1LCA5ODAyLCA5ODA4LCA5ODEyLCA5ODE5LCA5ODI3LCA5ODMzLCA5ODQwLCA5ODQ3LCA5ODUzLCA5ODYzLCAKKyAgICA5ODcxLCA5ODc4LCA5ODg0LCA5ODg4LCA5ODkxLCA5ODk1LCA5OTAxLCA5OTA5LCA5OTEzLCA5OTE5LCA5OTI1LCA5OTMyLCAKKyAgICA5OTM5LCA5OTQyLCA5OTQ5LCA5OTU0LCA5OTYzLCA5OTY4LCA5OTcyLCA5OTg1LCA5OTk4LCAxMDAwNCwgMTAwMTEsIAorICAgIDEwMDE2LCAxMDAyMiwgMTAwMjcsIDEwMDMzLCAxMDA0MywgMTAwNTAsIDEwMDU5LCAxMDA2OSwgMTAwNzUsIDEwMDgwLCAKKyAgICAxMDA4NSwgMTAwODksIDEwMDkzLCAxMDA5OCwgMTAxMDMsIDEwMTA5LCAxMDExNywgMTAxMjUsIDEwMTM2LCAxMDE0MSwgCisgICAgMTAxNTAsIDEwMTU5LCAxMDE2NiwgMTAxNzIsIDEwMTc4LCAxMDE4NCwgMTAxOTAsIDEwMTk2LCAxMDIwMiwgMTAyMDksIAorICAgIDEwMjE1LCAxMDIyMiwgMTAyMjksIDEwMjM2LCAxMDI0MywgMTAyNDksIDEwMjU3LCAxMDI2NiwgMTAyNzMsIDEwMjgxLCAKKyAgICAxMDI4OSwgMTAyOTUsIDEwMzAxLCAxMDMwNywgMTAzMTUsIDEwMzIzLCAxMDMzMywgMTAzNDMsIDEwMzQ3LCAxMDM1MywgCisgICAgMTAzNTksIDAsIDEwMzY1LCAxMDM3MCwgMTAzNzUsIDEwMzgyLCAxMDM4NywgMTAzOTIsIDEwMzk5LCAxMDQwNCwgMTA0MTMsIAorICAgIDEwNDE4LCAxMDQyMywgMTA0MjgsIDEwNDMzLCAxMDQzOCwgMTA0NDUsIDEwNDUwLCAxMDQ1NywgMTA0NjIsIDEwNDY3LCAKKyAgICAxMDQ3MiwgMTA0NzcsIDEwNDgyLCAxMDQ4OCwgMTA0OTIsIDEwNDk3LCAxMDUwNCwgMTA1MDksIDEwNTE0LCAxMDUxOSwgCisgICAgMTA1MjQsIDEwNTI5LCAxMDUzNiwgMTA1NDMsIDEwNTUwLCAxMDU1NSwgMTA1NjAsIDEwNTY2LCAxMDU3MSwgMTA1NzYsIAorICAgIDEwNTgyLCAxMDU4NywgMTA1OTIsIDEwNjAwLCAxMDYwOCwgMTA2MTMsIDEwNjE4LCAxMDYyNCwgMTA2MjksIDEwNjM0LCAKKyAgICAxMDYzOCwgMTA2NDQsIDEwNjQ4LCAxMDY1MiwgMTA2NTgsIDEwNjY0LCAxMDY2OSwgMTA2NzQsIDEwNjgxLCAxMDY4OCwgCisgICAgMTA2OTIsIDAsIDAsIDEwNjk2LCAxMDcwMywgMTA3MTAsIDEwNzE3LCAxMDcyNywgMTA3MzksIDEwNzUwLCAxMDc2NiwgCisgICAgMTA3NzgsIDEwNzg5LCAxMDc5NywgMTA4MDQsIDEwODE0LCAxMDgyOSwgMTA4NDAsIDEwODQ2LCAxMDg1NSwgMTA4NjMsIAorICAgIDEwODc0LCAxMDg4NCwgMTA4OTIsIDEwOTAzLCAxMDkxMCwgMTA5MTgsIDEwOTI5LCAxMDkzNSwgMTA5NDEsIDEwOTQ5LCAKKyAgICAxMDk1NywgMTA5NjUsIDEwOTcxLCAxMDk4MSwgMTA5ODksIDEwOTk5LCAxMTAwOSwgMTEwMjIsIDExMDM2LCAxMTA1MCwgCisgICAgMTEwNjAsIDExMDcxLCAxMTA4MiwgMTEwOTUsIDExMTA4LCAxMTEyMiwgMTExMzQsIDExMTQ2LCAxMTE1OSwgMTExNzIsIAorICAgIDExMTg0LCAxMTE5NywgMTEyMDYsIDExMjE0LCAxMTIxOSwgMTEyMjQsIDExMjI5LCAxMTIzNCwgMTEyMzksIDExMjQ0LCAKKyAgICAxMTI0OSwgMTEyNTQsIDExMjU5LCAxMTI2NCwgMTEyNjksIDExMjc0LCAxMTI3OSwgMTEyODQsIDExMjg5LCAxMTI5NCwgCisgICAgMTEyOTksIDExMzA0LCAxMTMwOSwgMTEzMTQsIDExMzE5LCAxMTMyNCwgMTEzMjksIDExMzM0LCAxMTMzOSwgMTEzNDQsIAorICAgIDExMzQ5LCAxMTM1NCwgMTEzNTksIDExMzY0LCAxMTM2OSwgMTEzNzQsIDExMzc4LCAxMTM4MywgMTEzODgsIDExMzkzLCAKKyAgICAxMTM5OCwgMTE0MDMsIDExNDA3LCAxMTQxMSwgMTE0MTUsIDExNDE5LCAxMTQyMywgMTE0MjcsIDExNDMxLCAxMTQzNSwgCisgICAgMTE0MzksIDExNDQzLCAxMTQ0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE0NTIsIAorICAgIDExNDU3LCAxMTQ2MSwgMTE0NjUsIDExNDY5LCAxMTQ3MywgMTE0NzcsIDExNDgxLCAxMTQ4NiwgMTE0OTAsIDExNDk1LCAKKyAgICAxMTQ5OSwgMTE1MDQsIDExNTA4LCAxMTUxMiwgMTE1MTYsIDExNTIxLCAxMTUyNSwgMTE1MzAsIDExNTM1LCAxMTU0MCwgCisgICAgMTE1NDQsIDExNTQ5LCAxMTU1NCwgMTE1NTksIDExNTY0LCAxMTU2OSwgMTE1NzQsIDExNTc5LCAxMTU4NCwgMTE1ODksIAorICAgIDExNTkzLCAxMTU5NywgMTE2MDQsIDExNjA4LCAxMTYxMywgMTE2MTcsIDExNjIxLCAxMTYyNiwgMTE2MzAsIDExNjM3LCAKKyAgICAxMTY0NCwgMTE2NTEsIDExNjU4LCAxMTY2NiwgMTE2NzQsIDExNjgzLCAxMTY5MSwgMTE2OTgsIDExNzA1LCAxMTcxMywgCisgICAgMTE3MTksIDExNzI1LCAxMTczMSwgMTE3MzcsIDExNzQ0LCAxMTc0OSwgMTE3NTMsIDExNzU4LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMTc2MiwgMTE3NjcsIDExNzcyLCAxMTc3NywgMTE3ODIsIDExNzg3LCAxMTc5MiwgMTE3OTcsIDExODAyLCAxMTgwNywgCisgICAgMTE4MTIsIDExODE3LCAxMTgyMiwgMTE4MjcsIDExODMyLCAxMTgzNywgMTE4NDIsIDExODQ3LCAxMTg1MiwgMTE4NTcsIAorICAgIDExODYyLCAxMTg2NywgMTE4NzIsIDExODc3LCAxMTg4MiwgMTE4ODcsIDExODkyLCAxMTkwMCwgMTE5MDcsIDExOTEzLCAKKyAgICAxMTkxOCwgMTE5MjYsIDExOTMzLCAxMTkzOSwgMTE5NDYsIDExOTUyLCAxMTk1NywgMTE5NjQsIDExOTcxLCAxMTk3NywgCisgICAgMTE5ODIsIDExOTg3LCAxMTk5MywgMTE5OTgsIDEyMDAzLCAxMjAwOSwgMCwgMCwgMTIwMTQsIDEyMDIwLCAxMjAyNiwgCisgICAgMTIwMzIsIDEyMDM4LCAxMjA0NCwgMTIwNTAsIDEyMDU1LCAxMjA2MywgMTIwNjksIDEyMDc1LCAxMjA4MSwgMTIwODcsIAorICAgIDEyMDkzLCAxMjEwMSwgMCwgMTIxMDcsIDEyMTEyLCAxMjExNywgMTIxMjIsIDEyMTI3LCAxMjEzMiwgMTIxMzcsIDEyMTQyLCAKKyAgICAxMjE0NywgMTIxNTIsIDEyMTU3LCAxMjE2MiwgMTIxNjcsIDEyMTcyLCAxMjE3NywgMTIxODIsIDEyMTg3LCAxMjE5MiwgCisgICAgMTIxOTcsIDEyMjAyLCAxMjIwNywgMTIyMTIsIDEyMjE3LCAxMjIyMiwgMTIyMjcsIDEyMjMyLCAxMjIzNywgMTIyNDIsIDAsIAorICAgIDAsIDEyMjQ3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjI1MSwgMTIyNjAsIAorICAgIDEyMjY4LCAxMjI3NSwgMTIyODMsIDEyMjk1LCAxMjMwMiwgMTIzMDksIDEyMzE2LCAxMjMyOCwgMTIzMzksIDEyMzQ2LCAKKyAgICAxMjM1NCwgMTIzNjAsIDEyMzY1LCAxMjM3MywgMTIzODEsIDEyMzg5LCAxMjM5NSwgMTI0MDUsIDEyNDEzLCAwLCAxMjQyMCwgCisgICAgMTI0MjgsIDEyNDM2LCAxMjQ0NSwgMTI0NTQsIDEyNDY3LCAxMjQ3MywgMTI0NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyNDg1LCAxMjQ5MiwgMTI0OTcsIDEyNTAyLCAKKyAgICAxMjUwNywgMTI1MTUsIDEyNTIzLCAxMjUzMCwgMTI1MzcsIDEyNTQ0LCAxMjU1MSwgMTI1NTgsIDEyNTY1LCAxMjU3MiwgCisgICAgMTI1NzgsIDEyNTg2LCAxMjU5MiwgMTI1OTcsIDEyNjAyLCAxMjYwNywgMTI2MTIsIDEyNjE3LCAxMjYyMiwgMTI2MjcsIAorICAgIDEyNjMyLCAxMjYzNywgMTI2NDIsIDEyNjQ3LCAxMjY1MiwgMTI2NTYsIDEyNjYwLCAxMjY2NCwgMTI2NjksIDEyNjc1LCAKKyAgICAxMjY4MSwgMTI2ODcsIDEyNjkyLCAxMjY5NywgMTI3MDIsIDEyNzA3LCAxMjcxMywgMTI3MjIsIDEyNzMwLCAxMjczNiwgCisgICAgMTI3NDQsIDEyNzUwLCAxMjc1NCwgMTI3NTgsIDEyNzYyLCAxMjc2NywgMTI3NzAsIDEyNzc0LCAxMjc3NywgMTI3ODEsIAorICAgIDEyNzg0LCAxMjc4OCwgMTI3OTIsIDEyNzk2LCAxMjgwMSwgMTI4MDYsIDEyODA5LCAxMjgxMywgMTI4MTgsIDEyODIzLCAKKyAgICAxMjgyNiwgMTI4MzAsIDEyODMzLCAxMjgzNywgMTI4NDEsIDEyODQ1LCAxMjg0OSwgMTI4NTMsIDEyODU3LCAxMjg2MSwgCisgICAgMTI4NjUsIDEyODY5LCAxMjg3MywgMTI4NzcsIDEyODgxLCAxMjg4NSwgMTI4ODksIDEyODkzLCAxMjg5NywgMTI5MDEsIAorICAgIDEyOTA1LCAxMjkwOCwgMTI5MTIsIDEyOTE1LCAxMjkxOSwgMTI5MjMsIDEyOTI3LCAxMjkzMCwgMTI5MzMsIDEyOTM3LCAKKyAgICAxMjk0MSwgMTI5NDQsIDEyOTQ4LCAxMjk1MiwgMTI5NTYsIDEyOTYwLCAxMjk2NCwgMTI5NjgsIDEyOTcxLCAxMjk3NiwgCisgICAgMTI5ODEsIDEyOTg1LCAxMjk4OSwgMTI5OTQsIDEyOTk4LCAxMzAwMywgMTMwMDcsIDEzMDEyLCAxMzAxNywgMTMwMjMsIAorICAgIDEzMDI5LCAxMzAzNSwgMTMwMzksIDEzMDQ0LCAxMzA1MCwgMTMwNTYsIDEzMDYwLCAxMzA2NSwgMTMwNjksIDEzMDc1LCAKKyAgICAxMzA4MCwgMTMwODMsIDEzMDg5LCAxMzA5NSwgMTMxMDAsIDEzMTA1LCAxMzExMiwgMTMxMTcsIDEzMTIyLCAxMzEyNiwgCisgICAgMTMxMzAsIDEzMTM0LCAxMzEzOCwgMTMxNDIsIDEzMTQ2LCAxMzE1MCwgMTMxNTQsIDEzMTU5LCAxMzE2NCwgMTMxNjksIAorICAgIDEzMTc1LCAxMzE3OCwgMTMxODIsIDEzMTg2LCAxMzE4OSwgMTMxOTIsIDEzMTk1LCAxMzE5OCwgMTMyMDEsIDEzMjA0LCAKKyAgICAxMzIwOCwgMTMyMTEsIDEzMjE1LCAxMzIxOSwgMTMyMjYsIDEzMjMxLCAxMzIzNSwgMTMyMzksIDEzMjQzLCAxMzI0NywgCisgICAgMTMyNTEsIDEzMjU3LCAxMzI2MSwgMTMyNjUsIDEzMjY5LCAxMzI3MywgMTMyNzksIDEzMjgzLCAxMzI4NywgMTMyOTAsIAorICAgIDEzMjk0LCAxMzI5OCwgMCwgMTMzMDIsIDEzMzA1LCAxMzMwOSwgMTMzMTIsIDEzMzE2LCAxMzMxOSwgMTMzMjMsIDEzMzI3LCAKKyAgICAwLCAwLCAxMzMzMSwgMTMzMzQsIDAsIDAsIDEzMzM4LCAxMzM0MSwgMTMzNDUsIDEzMzQ4LCAxMzM1MiwgMTMzNTYsIAorICAgIDEzMzYwLCAxMzM2NCwgMTMzNjgsIDEzMzcyLCAxMzM3NiwgMTMzODAsIDEzMzg0LCAxMzM4OCwgMTMzOTIsIDEzMzk2LCAKKyAgICAxMzQwMCwgMTM0MDQsIDEzNDA4LCAxMzQxMiwgMTM0MTYsIDEzNDIwLCAwLCAxMzQyMywgMTM0MjYsIDEzNDMwLCAxMzQzNCwgCisgICAgMTM0MzgsIDEzNDQxLCAxMzQ0NCwgMCwgMTM0NDgsIDAsIDAsIDAsIDEzNDUxLCAxMzQ1NSwgMTM0NTksIDEzNDYzLCAwLCAwLCAKKyAgICAxMzQ2NiwgMTM0NzAsIDEzNDc0LCAxMzQ3OSwgMTM0ODMsIDEzNDg4LCAxMzQ5MiwgMTM0OTcsIDEzNTAyLCAwLCAwLCAKKyAgICAxMzUwOCwgMTM1MTIsIDAsIDAsIDEzNTE3LCAxMzUyMSwgMTM1MjYsIDEzNTMwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzUzNiwgMCwgMCwgMCwgMCwgMTM1NDIsIDEzNTQ2LCAwLCAxMzU1MCwgMTM1NTQsIDEzNTU5LCAxMzU2NCwgMTM1NjksIDAsIAorICAgIDAsIDEzNTc1LCAxMzU3OSwgMTM1ODIsIDEzNTg1LCAxMzU4OCwgMTM1OTEsIDEzNTk0LCAxMzU5NywgMTM2MDEsIDEzNjA0LCAKKyAgICAxMzYwOCwgMTM2MTYsIDEzNjI1LCAxMzYyOSwgMTM2MzMsIDEzNjM5LCAxMzY0NSwgMTM2NTEsIDEzNjU3LCAxMzY3MSwgCisgICAgMTM2NzgsIDEzNjgxLCAwLCAwLCAwLCAwLCAwLCAxMzY4NSwgMTM2OTIsIDEzNjk3LCAwLCAxMzcwMiwgMTM3MDYsIDEzNzExLCAKKyAgICAxMzcxNSwgMTM3MjAsIDEzNzI0LCAwLCAwLCAwLCAwLCAxMzcyOSwgMTM3MzQsIDAsIDAsIDEzNzM5LCAxMzc0NCwgMTM3NDksIAorICAgIDEzNzUzLCAxMzc1OCwgMTM3NjMsIDEzNzY4LCAxMzc3MywgMTM3NzgsIDEzNzgzLCAxMzc4OCwgMTM3OTMsIDEzNzk4LCAKKyAgICAxMzgwMywgMTM4MDgsIDEzODEzLCAxMzgxOCwgMTM4MjMsIDEzODI4LCAxMzgzMywgMTM4MzgsIDEzODQzLCAwLCAxMzg0NywgCisgICAgMTM4NTEsIDEzODU2LCAxMzg2MSwgMTM4NjYsIDEzODcwLCAxMzg3NCwgMCwgMTM4NzksIDEzODgzLCAwLCAxMzg4OCwgCisgICAgMTM4OTMsIDAsIDEzODk4LCAxMzkwMywgMCwgMCwgMTM5MDcsIDAsIDEzOTEyLCAxMzkxOCwgMTM5MjMsIDEzOTI5LCAKKyAgICAxMzkzNCwgMCwgMCwgMCwgMCwgMTM5NDAsIDEzOTQ2LCAwLCAwLCAxMzk1MiwgMTM5NTgsIDEzOTY0LCAwLCAwLCAwLCAKKyAgICAxMzk2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM5NzQsIDEzOTc5LCAxMzk4NCwgMTM5ODksIDAsIDEzOTk0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMzk5OSwgMTQwMDQsIDE0MDA4LCAxNDAxMiwgMTQwMTYsIDE0MDIwLCAxNDAyNCwgMTQwMjgsIAorICAgIDE0MDMzLCAxNDAzNywgMTQwNDIsIDE0MDQ2LCAxNDA1MCwgMTQwNTQsIDE0MDU4LCAxNDA2NCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTQwNjksIDE0MDc0LCAxNDA3OSwgMCwgMTQwODQsIDE0MDg4LCAxNDA5MywgMTQwOTcsIDE0MTAyLCAKKyAgICAxNDEwNiwgMTQxMTEsIDE0MTE2LCAxNDEyMSwgMCwgMTQxMjcsIDE0MTMxLCAxNDEzNiwgMCwgMTQxNDIsIDE0MTQ2LCAKKyAgICAxNDE1MSwgMTQxNTUsIDE0MTYwLCAxNDE2NSwgMTQxNzAsIDE0MTc1LCAxNDE4MCwgMTQxODUsIDE0MTkwLCAxNDE5NSwgCisgICAgMTQyMDAsIDE0MjA1LCAxNDIxMCwgMTQyMTUsIDE0MjIwLCAxNDIyNSwgMTQyMzAsIDE0MjM1LCAxNDI0MCwgMTQyNDUsIDAsIAorICAgIDE0MjQ5LCAxNDI1MywgMTQyNTgsIDE0MjYzLCAxNDI2OCwgMTQyNzIsIDE0Mjc2LCAwLCAxNDI4MSwgMTQyODUsIDAsIAorICAgIDE0MjkwLCAxNDI5NSwgMTQzMDAsIDE0MzA1LCAxNDMxMCwgMCwgMCwgMTQzMTQsIDE0MzE5LCAxNDMyNCwgMTQzMzAsIAorICAgIDE0MzM1LCAxNDM0MSwgMTQzNDYsIDE0MzUyLCAxNDM1OCwgMTQzNjUsIDAsIDE0MzcyLCAxNDM3NywgMTQzODMsIDAsIAorICAgIDE0MzkwLCAxNDM5NSwgMTQ0MDEsIDAsIDAsIDE0NDA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxNDQxMCwgMTQ0MTYsIDE0NDIyLCAxNDQyOCwgMCwgMCwgMTQ0MzUsIDE0NDQwLCAxNDQ0NCwgMTQ0NDgsIAorICAgIDE0NDUyLCAxNDQ1NiwgMTQ0NjAsIDE0NDY0LCAxNDQ2OSwgMTQ0NzMsIDE0NDc4LCAxNDQ4MywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTQ0ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0NDkzLCAxNDQ5OCwgMTQ1MDMsIDAsIDE0NTA4LCAxNDUxMiwgCisgICAgMTQ1MTcsIDE0NTIxLCAxNDUyNiwgMTQ1MzAsIDE0NTM1LCAxNDU0MCwgMCwgMCwgMTQ1NDUsIDE0NTQ5LCAwLCAwLCAKKyAgICAxNDU1NCwgMTQ1NTgsIDE0NTYzLCAxNDU2NywgMTQ1NzIsIDE0NTc3LCAxNDU4MiwgMTQ1ODcsIDE0NTkyLCAxNDU5NywgCisgICAgMTQ2MDIsIDE0NjA3LCAxNDYxMiwgMTQ2MTcsIDE0NjIyLCAxNDYyNywgMTQ2MzIsIDE0NjM3LCAxNDY0MiwgMTQ2NDcsIAorICAgIDE0NjUyLCAxNDY1NywgMCwgMTQ2NjEsIDE0NjY1LCAxNDY3MCwgMTQ2NzUsIDE0NjgwLCAxNDY4NCwgMTQ2ODgsIDAsIAorICAgIDE0NjkzLCAxNDY5NywgMCwgMTQ3MDIsIDE0NzA3LCAxNDcxMiwgMTQ3MTcsIDE0NzIyLCAwLCAwLCAxNDcyNiwgMTQ3MzEsIAorICAgIDE0NzM2LCAxNDc0MiwgMTQ3NDcsIDE0NzUzLCAxNDc1OCwgMTQ3NjQsIDE0NzcwLCAwLCAwLCAxNDc3NywgMTQ3ODIsIDAsIAorICAgIDAsIDE0Nzg4LCAxNDc5MywgMTQ3OTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0ODA0LCAxNDgxMSwgMCwgMCwgMCwgMCwgCisgICAgMTQ4MTgsIDE0ODIzLCAwLCAxNDgyOCwgMTQ4MzMsIDE0ODM5LCAxNDg0NSwgMTQ4NTEsIDAsIDAsIDE0ODU4LCAxNDg2MywgCisgICAgMTQ4NjcsIDE0ODcxLCAxNDg3NSwgMTQ4NzksIDE0ODgzLCAxNDg4NywgMTQ4OTIsIDE0ODk2LCAxNDkwMSwgMTQ5MDUsIAorICAgIDE0OTEwLCAxNDkxNywgMTQ5MjQsIDE0OTMxLCAxNDkzOCwgMTQ5NDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE0OTUyLCAxNDk1NiwgMCwgMTQ5NjAsIDE0OTYzLCAxNDk2NywgMTQ5NzAsIDE0OTc0LCAxNDk3NywgMCwgMCwgMCwgCisgICAgMTQ5ODEsIDE0OTg0LCAxNDk4OCwgMCwgMTQ5OTIsIDE0OTk1LCAxNDk5OSwgMTUwMDMsIDAsIDAsIDAsIDE1MDA2LCAKKyAgICAxNTAxMCwgMCwgMTUwMTQsIDAsIDE1MDE4LCAxNTAyMiwgMCwgMCwgMCwgMTUwMjYsIDE1MDMwLCAwLCAwLCAwLCAxNTAzNCwgCisgICAgMTUwMzcsIDE1MDQxLCAwLCAwLCAwLCAxNTA0NCwgMTUwNDcsIDE1MDUwLCAxNTA1NCwgMTUwNTgsIDE1MDYxLCAxNTA2NSwgCisgICAgMTUwNjksIDE1MDczLCAxNTA3NywgMTUwODEsIDE1MDg1LCAwLCAwLCAwLCAwLCAxNTA4OCwgMTUwOTMsIDE1MDk3LCAKKyAgICAxNTEwMiwgMTUxMDYsIDAsIDAsIDAsIDE1MTExLCAxNTExNSwgMTUxMjAsIDAsIDE1MTI1LCAxNTEyOSwgMTUxMzQsIAorICAgIDE1MTM5LCAwLCAwLCAxNTE0MywgMCwgMCwgMCwgMCwgMCwgMCwgMTUxNDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDE1MTUyLCAxNTE1NiwgMTUxNTksIDE1MTYyLCAxNTE2NSwgMTUxNjgsIDE1MTcxLCAxNTE3NCwgCisgICAgMTUxNzgsIDE1MTgxLCAxNTE4NSwgMTUxODksIDE1MTk0LCAxNTE5OSwgMTUyMDMsIDE1MjA3LCAxNTIxMSwgMTUyMTUsIAorICAgIDE1MjE5LCAxNTIyNCwgMTUyMjgsIDAsIDAsIDAsIDAsIDAsIDE1MjMxLCAxNTIzNywgMTUyNDEsIDE1MjQ1LCAwLCAxNTI0OSwgCisgICAgMTUyNTIsIDE1MjU2LCAxNTI1OSwgMTUyNjMsIDE1MjY2LCAxNTI3MCwgMTUyNzQsIDAsIDE1Mjc4LCAxNTI4MSwgMTUyODUsIAorICAgIDAsIDE1Mjg5LCAxNTI5MiwgMTUyOTYsIDE1MzAwLCAxNTMwMywgMTUzMDcsIDE1MzExLCAxNTMxNSwgMTUzMTksIDE1MzIzLCAKKyAgICAxNTMyNywgMTUzMzEsIDE1MzM1LCAxNTMzOSwgMTUzNDMsIDE1MzQ3LCAxNTM1MSwgMTUzNTUsIDE1MzU5LCAxNTM2MywgCisgICAgMTUzNjcsIDE1MzcxLCAxNTM3NSwgMCwgMTUzNzgsIDE1MzgxLCAxNTM4NSwgMTUzODksIDE1MzkzLCAxNTM5NiwgMTUzOTksIAorICAgIDE1NDAzLCAxNTQwNywgMTU0MTAsIDE1NDE0LCAxNTQxOCwgMTU0MjIsIDE1NDI2LCAxNTQzMCwgMTU0MzQsIDAsIDAsIDAsIAorICAgIDE1NDM3LCAxNTQ0MSwgMTU0NDYsIDE1NDUwLCAxNTQ1NSwgMTU0NTksIDE1NDY0LCAxNTQ2OSwgMCwgMTU0NzUsIDE1NDc5LCAKKyAgICAxNTQ4NCwgMCwgMTU0ODksIDE1NDkzLCAxNTQ5OCwgMTU1MDMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTA3LCAxNTUxMSwgCisgICAgMCwgMTU1MTcsIDE1NTIxLCAxNTUyNSwgMCwgMCwgMCwgMCwgMCwgMTU1MjksIDE1NTM0LCAxNTUzOSwgMTU1NDQsIDAsIDAsIAorICAgIDE1NTUwLCAxNTU1NCwgMTU1NTcsIDE1NTYwLCAxNTU2MywgMTU1NjYsIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTc5LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTU4MywgMTU1OTYsIDE1NjA4LCAxNTYyMCwgMTU2MzIsIDE1NjQ0LCAxNTY1NiwgCisgICAgMTU2NjgsIDE1NjcyLCAxNTY3OSwgMTU2ODQsIDE1Njg5LCAwLCAxNTY5NCwgMTU2OTgsIDE1NzAzLCAxNTcwNywgMTU3MTIsIAorICAgIDE1NzE2LCAxNTcyMSwgMTU3MjYsIDAsIDE1NzMxLCAxNTczNSwgMTU3NDAsIDAsIDE1NzQ1LCAxNTc0OSwgMTU3NTQsIAorICAgIDE1NzU5LCAxNTc2MywgMTU3NjgsIDE1NzczLCAxNTc3OCwgMTU3ODMsIDE1Nzg4LCAxNTc5MywgMTU3OTgsIDE1ODAzLCAKKyAgICAxNTgwOCwgMTU4MTMsIDE1ODE4LCAxNTgyMywgMTU4MjgsIDE1ODMzLCAxNTgzOCwgMTU4NDMsIDE1ODQ4LCAxNTg1MywgMCwgCisgICAgMTU4NTcsIDE1ODYxLCAxNTg2NiwgMTU4NzEsIDE1ODc2LCAxNTg4MCwgMTU4ODQsIDE1ODg5LCAxNTg5NCwgMTU4OTgsIDAsIAorICAgIDE1OTAzLCAxNTkwOCwgMTU5MTMsIDE1OTE4LCAxNTkyMywgMCwgMCwgMTU5MjcsIDE1OTMyLCAxNTkzNywgMTU5NDMsIAorICAgIDE1OTQ4LCAxNTk1NCwgMTU5NTksIDE1OTY1LCAxNTk3MSwgMCwgMTU5NzgsIDE1OTgzLCAxNTk4OSwgMCwgMTU5OTUsIAorICAgIDE2MDAwLCAxNjAwNiwgMTYwMTIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MDE3LCAxNjAyMiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYwMjksIDAsIDE2MDM0LCAxNjA0MCwgMTYwNDYsIDE2MDUyLCAwLCAwLCAxNjA1OSwgMTYwNjQsIDE2MDY4LCAKKyAgICAxNjA3MiwgMTYwNzYsIDE2MDgwLCAxNjA4NCwgMTYwODgsIDE2MDkzLCAxNjA5NywgMCwgMTYxMDIsIDE2MTA3LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjExMiwgMTYxMTYsIDE2MTIwLCAwLCAxNjEyNCwgMTYxMjcsIAorICAgIDE2MTMxLCAxNjEzNCwgMTYxMzgsIDE2MTQxLCAxNjE0NSwgMTYxNDksIDAsIDE2MTUzLCAxNjE1NiwgMTYxNjAsIDAsIAorICAgIDE2MTY0LCAxNjE2NywgMTYxNzEsIDE2MTc1LCAxNjE3OCwgMTYxODIsIDE2MTg2LCAxNjE5MCwgMTYxOTQsIDE2MTk4LCAKKyAgICAxNjIwMiwgMTYyMDYsIDE2MjEwLCAxNjIxNCwgMTYyMTgsIDE2MjIyLCAxNjIyNiwgMTYyMzAsIDE2MjM0LCAxNjIzOCwgCisgICAgMTYyNDIsIDE2MjQ2LCAxNjI1MCwgMTYyNTMsIDE2MjU3LCAxNjI2MCwgMTYyNjQsIDE2MjY4LCAxNjI3MiwgMTYyNzUsIAorICAgIDE2Mjc4LCAxNjI4MiwgMTYyODYsIDE2Mjg5LCAxNjI5MywgMTYyOTcsIDE2MzAxLCAxNjMwNSwgMTYzMDksIDE2MzEzLCAKKyAgICAxNjMxNiwgMCwgMCwgMTYzMjAsIDE2MzI0LCAxNjMyOSwgMTYzMzMsIDE2MzM4LCAxNjM0MiwgMTYzNDcsIDE2MzUyLCAwLCAKKyAgICAxNjM1OCwgMTYzNjIsIDE2MzY3LCAwLCAxNjM3MiwgMTYzNzYsIDE2MzgxLCAxNjM4NiwgMTYzOTAsIDE2Mzk1LCAwLCAwLCAKKyAgICAwLCAwLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAxNjQxNywgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAKKyAgICAxNjQ1MywgMTY0NTksIDE2NDY1LCAxNjQ3MSwgMTY0NzYsIDE2NDgxLCAxNjQ4NiwgMCwgMCwgMTY0OTIsIDE2NDk2LCAKKyAgICAxNjQ5OSwgMTY1MDIsIDE2NTA1LCAxNjUwOCwgMTY1MTEsIDE2NTE0LCAxNjUxOCwgMTY1MjEsIDE2NTI1LCAxNjUyOSwgCisgICAgMTY1MzQsIDE2NTM5LCAxNjU0NSwgMTY1NTEsIDE2NTU3LCAxNjU2MywgMTY1NjksIDE2NTc1LCAxNjU3OSwgMTY1ODUsIAorICAgIDE2NTkxLCAxNjU5NywgMTY2MDIsIDE2NjA4LCAwLCAwLCAxNjYxNCwgMTY2MTgsIDAsIDE2NjIyLCAxNjYyNiwgMTY2MzAsIAorICAgIDE2NjM0LCAxNjYzOCwgMTY2NDIsIDE2NjQ2LCAxNjY1MCwgMTY2NTQsIDE2NjU4LCAxNjY2MiwgMTY2NjYsIDE2NjcwLCAKKyAgICAxNjY3NCwgMTY2NzgsIDE2NjgyLCAxNjY4NiwgMTY2OTAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMCwgMTY3MDYsIDE2NzEyLCAKKyAgICAxNjcxOCwgMTY3MjQsIDE2NzMwLCAxNjczNiwgMTY3NDIsIDE2NzQ4LCAxNjc1NCwgMTY3NjAsIDE2NzY4LCAxNjc3NCwgCisgICAgMTY3ODAsIDE2Nzg2LCAxNjc5MiwgMTY3OTgsIDE2ODA0LCAxNjgxMCwgMTY4MTYsIDE2ODIyLCAxNjgyOCwgMTY4MzQsIDAsIAorICAgIDE2ODQwLCAxNjg0NiwgMTY4NTIsIDE2ODU4LCAxNjg2NCwgMTY4NzAsIDE2ODc0LCAxNjg4MCwgMTY4ODQsIDAsIDE2ODg4LCAKKyAgICAwLCAwLCAxNjg5NCwgMTY4OTgsIDE2OTA0LCAxNjkxMCwgMTY5MTYsIDE2OTIwLCAxNjkyNiwgMCwgMCwgMCwgMTY5MzAsIDAsIAorICAgIDAsIDAsIDAsIDE2OTM0LCAxNjkzOSwgMTY5NDYsIDE2OTUzLCAxNjk2MCwgMTY5NjcsIDAsIDE2OTc0LCAwLCAxNjk4MSwgCisgICAgMTY5ODYsIDE2OTkxLCAxNjk5OCwgMTcwMDUsIDE3MDE0LCAxNzAyNSwgMTcwMzQsIDAsIDAsIDAsIDAsIDAsIDAsIDE3MDM5LCAKKyAgICAxNzA0NSwgMTcwNTAsIDE3MDU1LCAxNzA2MCwgMTcwNjUsIDE3MDcwLCAxNzA3NSwgMTcwODEsIDE3MDg2LCAwLCAwLCAKKyAgICAxNzA5MiwgMTcwOTksIDE3MTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzExMSwgMTcxMTgsIAorICAgIDE3MTI1LCAxNzEzMiwgMTcxMzksIDE3MTQ2LCAxNzE1MywgMTcxNjAsIDE3MTY3LCAxNzE3NCwgMTcxODEsIDE3MTg4LCAKKyAgICAxNzE5NSwgMTcyMDIsIDE3MjA5LCAxNzIxNiwgMTcyMjMsIDE3MjMwLCAxNzIzNywgMTcyNDQsIDE3MjUxLCAxNzI1OCwgCisgICAgMTcyNjUsIDE3MjcyLCAxNzI3OSwgMTcyODYsIDE3MjkzLCAxNzMwMCwgMTczMDcsIDE3MzE0LCAxNzMyMSwgMTczMjgsIAorICAgIDE3MzM1LCAxNzM0MSwgMTczNDgsIDE3MzU1LCAxNzM2MCwgMTczNjcsIDE3MzcyLCAxNzM3OSwgMTczODYsIDE3MzkzLCAKKyAgICAxNzQwMCwgMTc0MDcsIDE3NDE0LCAxNzQyMCwgMTc0MjcsIDE3NDMyLCAxNzQzOCwgMTc0NDUsIDE3NDUyLCAxNzQ1OSwgCisgICAgMTc0NjUsIDE3NDcyLCAxNzQ3OSwgMTc0ODYsIDE3NDkyLCAxNzQ5OSwgMCwgMCwgMCwgMCwgMTc1MDQsIDE3NTExLCAKKyAgICAxNzUxNywgMTc1MjQsIDE3NTMwLCAxNzUzOSwgMTc1NDgsIDE3NTUzLCAxNzU1OCwgMTc1NjMsIDE3NTcwLCAxNzU3NywgCisgICAgMTc1ODQsIDE3NTkxLCAxNzU5NiwgMTc2MDEsIDE3NjA2LCAxNzYxMSwgMTc2MTYsIDE3NjIwLCAxNzYyNCwgMTc2MjgsIAorICAgIDE3NjMyLCAxNzYzNiwgMTc2NDAsIDE3NjQ1LCAxNzY0OSwgMTc2NTQsIDE3NjU5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxNzY2NCwgMTc2NjksIDAsIDE3Njc2LCAwLCAwLCAxNzY4MywgMTc2ODgsIDAsIDE3NjkzLCAwLCAKKyAgICAwLCAxNzcwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTc3MDUsIDE3NzEwLCAxNzcxNCwgMTc3MjEsIDAsIDE3NzI4LCAxNzczMywgCisgICAgMTc3MzgsIDE3NzQzLCAxNzc1MCwgMTc3NTcsIDE3NzY0LCAwLCAxNzc3MSwgMTc3NzYsIDE3NzgxLCAwLCAxNzc4OCwgMCwgCisgICAgMTc3OTUsIDAsIDAsIDE3ODAwLCAxNzgwNywgMCwgMTc4MTQsIDE3ODE4LCAxNzgyNSwgMTc4MjksIDE3ODM0LCAxNzg0MiwgCisgICAgMTc4NDgsIDE3ODU0LCAxNzg1OSwgMTc4NjUsIDE3ODcxLCAxNzg3NywgMTc4ODIsIDAsIDE3ODg4LCAxNzg5NiwgMTc5MDMsIAorICAgIDAsIDAsIDE3OTEwLCAxNzkxNSwgMTc5MjEsIDE3OTI2LCAxNzkzMiwgMCwgMTc5MzgsIDAsIDE3OTQzLCAxNzk1MCwgCisgICAgMTc5NTcsIDE3OTY0LCAxNzk3MSwgMTc5NzYsIDAsIDAsIDE3OTgwLCAxNzk4NSwgMTc5ODksIDE3OTkzLCAxNzk5NywgCisgICAgMTgwMDEsIDE4MDA1LCAxODAwOSwgMTgwMTQsIDE4MDE4LCAwLCAwLCAxODAyMywgMTgwMjksIDE4MDM1LCAxODA0MiwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgwNDksIDE4MDUzLCAxODA2NCwgMTgwNzksIDE4MDk0LCAxODEwNCwgMTgxMTUsIAorICAgIDE4MTI4LCAxODEzOSwgMTgxNDUsIDE4MTUzLCAxODE2MywgMTgxNjksIDE4MTc3LCAxODE4MSwgMTgxODcsIDE4MTkzLCAKKyAgICAxODIwMSwgMTgyMTEsIDE4MjE5LCAxODIzMiwgMTgyMzgsIDE4MjQ2LCAxODI1NCwgMTgyNjYsIDE4MjczLCAxODI4MSwgCisgICAgMTgyODksIDE4Mjk3LCAxODMwNSwgMTgzMTMsIDE4MzIxLCAxODMzMSwgMTgzMzUsIDE4MzM4LCAxODM0MSwgMTgzNDQsIAorICAgIDE4MzQ3LCAxODM1MCwgMTgzNTMsIDE4MzU3LCAxODM2MCwgMTgzNjQsIDE4MzY4LCAxODM3MiwgMTgzNzYsIDE4MzgwLCAKKyAgICAxODM4NCwgMTgzODgsIDE4MzkzLCAxODM5NywgMTg0MDIsIDE4NDA3LCAxODQxMywgMTg0MjMsIDE4NDM3LCAxODQ0NywgCisgICAgMTg0NTMsIDE4NDU5LCAxODQ2NywgMTg0NzUsIDE4NDgzLCAxODQ5MSwgMTg0OTcsIDE4NTAzLCAxODUwNiwgMTg1MTAsIAorICAgIDE4NTE0LCAxODUxOCwgMTg1MjIsIDE4NTI2LCAxODUzMCwgMCwgMTg1MzQsIDE4NTM4LCAxODU0MiwgMTg1NDYsIDE4NTUwLCAKKyAgICAxODU1NCwgMTg1NTgsIDE4NTYyLCAxODU2NiwgMTg1NzAsIDE4NTc0LCAxODU3NywgMTg1ODAsIDE4NTg0LCAxODU4OCwgCisgICAgMTg1OTIsIDE4NTk1LCAxODU5OSwgMTg2MDMsIDE4NjA3LCAxODYxMSwgMTg2MTUsIDE4NjE5LCAxODYyMywgMTg2MjcsIAorICAgIDE4NjMwLCAxODYzNCwgMTg2MzcsIDE4NjQxLCAxODY0NSwgMTg2NDksIDE4NjUyLCAxODY1NSwgMTg2NTksIDE4NjY1LCAKKyAgICAxODY2OSwgMCwgMCwgMCwgMCwgMTg2NzMsIDE4Njc4LCAxODY4MiwgMTg2ODcsIDE4NjkxLCAxODY5NiwgMTg3MDEsIAorICAgIDE4NzA3LCAxODcxMiwgMTg3MTgsIDE4NzIyLCAxODcyNywgMTg3MzEsIDE4NzM2LCAxODc0NiwgMTg3NTIsIDE4NzU4LCAKKyAgICAxODc2NSwgMTg3NzUsIDE4NzgxLCAxODc4NSwgMTg3ODksIDE4Nzk1LCAxODgwMSwgMTg4MDksIDE4ODE1LCAxODgyMywgCisgICAgMTg4MzEsIDE4ODM5LCAxODg0OSwgMTg4NTcsIDE4ODY3LCAxODg3MiwgMTg4NzgsIDE4ODg0LCAxODg5MCwgMTg4OTYsIAorICAgIDE4OTAyLCAxODkwOCwgMCwgMTg5MTQsIDE4OTIwLCAxODkyNiwgMTg5MzIsIDE4OTM4LCAxODk0NCwgMTg5NTAsIDE4OTU2LCAKKyAgICAxODk2MiwgMTg5NjgsIDE4OTc0LCAxODk3OSwgMTg5ODQsIDE4OTkwLCAxODk5NiwgMTkwMDIsIDE5MDA3LCAxOTAxMywgCisgICAgMTkwMTksIDE5MDI1LCAxOTAzMSwgMTkwMzcsIDE5MDQzLCAxOTA0OSwgMTkwNTUsIDE5MDYwLCAxOTA2NiwgMTkwNzEsIAorICAgIDE5MDc3LCAxOTA4MywgMTkwODksIDE5MDk0LCAxOTA5OSwgMTkxMDUsIDE5MTEzLCAxOTEyMCwgMCwgMTkxMjgsIDE5MTM1LCAKKyAgICAxOTE0OCwgMTkxNTUsIDE5MTYyLCAxOTE3MCwgMTkxNzgsIDE5MTg0LCAxOTE5MCwgMTkxOTYsIDE5MjA2LCAxOTIxMSwgCisgICAgMTkyMTcsIDE5MjI3LCAxOTIzNywgMCwgMTkyNDcsIDE5MjU3LCAxOTI2NSwgMTkyNzcsIDE5Mjg5LCAxOTI5NSwgMTkzMDksIAorICAgIDE5MzI0LCAxOTMyOSwgMTkzMzQsIDE5MzQyLCAxOTM1MCwgMTkzNTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE5MzY2LCAxOTM2OSwgMTkzNzMsIDE5Mzc3LCAxOTM4MSwgMTkzODUsIDE5Mzg5LCAxOTM5MywgMTkzOTcsIAorICAgIDE5NDAxLCAxOTQwNSwgMTk0MDksIDE5NDEzLCAxOTQxNywgMTk0MjEsIDE5NDI1LCAxOTQyOSwgMTk0MzMsIDE5NDM3LCAKKyAgICAxOTQ0MSwgMTk0NDUsIDE5NDQ4LCAxOTQ1MSwgMTk0NTUsIDE5NDU5LCAxOTQ2MywgMTk0NjYsIDE5NDY5LCAxOTQ3MywgCisgICAgMTk0NzYsIDE5NDgwLCAxOTQ4NCwgMTk0ODcsIDE5NDkxLCAxOTQ5NCwgMTk0OTksIDE5NTAyLCAxOTUwNiwgMTk1MDksIAorICAgIDE5NTEzLCAxOTUxNiwgMTk1MjEsIDE5NTI0LCAxOTUyOCwgMTk1MzUsIDE5NTQwLCAxOTU0NCwgMTk1NDksIDE5NTUzLCAKKyAgICAxOTU1OCwgMTk1NjIsIDE5NTY3LCAxOTU3NCwgMTk1ODAsIDE5NTg1LCAxOTU4OSwgMTk1OTMsIDE5NTk3LCAxOTYwMSwgCisgICAgMTk2MDUsIDE5NjEwLCAxOTYxNiwgMTk2MjIsIDE5NjI3LCAxOTYzMywgMTk2MzcsIDE5NjQwLCAxOTY0MywgMTk2NDYsIAorICAgIDE5NjQ5LCAxOTY1MiwgMTk2NTUsIDE5NjU5LCAxOTY2MiwgMTk2NjYsIDE5NjcyLCAxOTY3NiwgMTk2ODAsIDE5Njg0LCAKKyAgICAxOTY4OCwgMTk2OTIsIDE5Njk2LCAxOTcwMCwgMTk3MDQsIDE5NzA5LCAxOTcxMywgMTk3MTgsIDE5NzIzLCAxOTcyOSwgCisgICAgMTk3MzQsIDE5NzQwLCAxOTc0NiwgMTk3NTIsIDE5NzU4LCAxOTc2NCwgMTk3NzEsIDE5Nzc4LCAxOTc4NSwgMTk3OTMsIAorICAgIDE5ODAyLCAxOTgxMSwgMTk4MjIsIDE5ODMyLCAxOTg0MiwgMTk4NTMsIDE5ODY0LCAxOTg3NCwgMTk4ODQsIDE5ODk0LCAKKyAgICAxOTkwNCwgMTk5MTQsIDE5OTI0LCAxOTkzNCwgMTk5NDQsIDE5OTUyLCAxOTk1OSwgMTk5NjUsIDE5OTcyLCAxOTk3NywgCisgICAgMTk5ODMsIDE5OTg5LCAxOTk5NSwgMjAwMDEsIDIwMDA3LCAyMDAxMywgMjAwMTgsIDIwMDI0LCAyMDAzMCwgMjAwMzYsIAorICAgIDIwMDQyLCAyMDA0NywgMjAwNTUsIDIwMDYyLCAyMDA2OCwgMjAwNzUsIDIwMDgzLCAyMDA4OSwgMjAwOTUsIDIwMTAxLCAKKyAgICAyMDEwNywgMjAxMTUsIDIwMTIzLCAyMDEzMywgMjAxNDEsIDIwMTQ5LCAyMDE1NSwgMjAxNjAsIDIwMTY1LCAyMDE3MCwgCisgICAgMjAxNzUsIDIwMTgwLCAyMDE4NSwgMjAxOTEsIDIwMTk2LCAyMDIwMiwgMjAyMDgsIDIwMjE0LCAyMDIyMCwgMjAyMjcsIAorICAgIDIwMjMyLCAyMDIzOCwgMjAyNDMsIDIwMjQ4LCAyMDI1MywgMjAyNTgsIDIwMjYzLCAyMDI2OCwgMjAyNzMsIDIwMjc4LCAKKyAgICAyMDI4MywgMjAyODgsIDIwMjkzLCAyMDI5OCwgMjAzMDMsIDIwMzA4LCAyMDMxMywgMjAzMTgsIDIwMzIzLCAyMDMyOCwgCisgICAgMjAzMzMsIDIwMzM4LCAyMDM0MywgMjAzNDgsIDIwMzUzLCAyMDM1OCwgMjAzNjMsIDIwMzY4LCAyMDM3MywgMjAzNzgsIAorICAgIDIwMzgzLCAyMDM4OCwgMjAzOTMsIDIwMzk4LCAyMDQwMywgMjA0MDgsIDIwNDEzLCAyMDQxOCwgMjA0MjMsIDAsIDIwNDI4LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyMDQzMywgMCwgMCwgMjA0MzgsIDIwNDQyLCAyMDQ0NiwgMjA0NTAsIDIwNDU0LCAyMDQ1OCwgCisgICAgMjA0NjIsIDIwNDY2LCAyMDQ3MCwgMjA0NzQsIDIwNDc4LCAyMDQ4MiwgMjA0ODYsIDIwNDkwLCAyMDQ5NCwgMjA0OTgsIAorICAgIDIwNTAyLCAyMDUwNiwgMjA1MTAsIDIwNTE0LCAyMDUxOCwgMjA1MjIsIDIwNTI2LCAyMDUzMCwgMjA1MzQsIDIwNTM4LCAKKyAgICAyMDU0MiwgMjA1NDYsIDIwNTUwLCAyMDU1NCwgMjA1NTgsIDIwNTYyLCAyMDU2NiwgMjA1NzAsIDIwNTc0LCAyMDU3OCwgCisgICAgMjA1ODIsIDIwNTg2LCAyMDU5MCwgMjA1OTQsIDIwNTk4LCAyMDYwMiwgMjA2MDgsIDIwNjEyLCAyMDYxNywgMjA2MjIsIAorICAgIDIwNjI2LCAyMDYzMSwgMjA2MzYsIDIwNjQwLCAyMDY0NCwgMjA2NDgsIDIwNjUyLCAyMDY1NiwgMjA2NjAsIDIwNjY0LCAKKyAgICAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgMjA2OTYsIDIwNzAwLCAyMDcwNCwgCisgICAgMjA3MDgsIDIwNzEyLCAyMDcxNiwgMjA3MjAsIDIwNzI0LCAyMDcyOCwgMjA3MzIsIDIwNzM2LCAyMDc0MCwgMjA3NDQsIAorICAgIDIwNzQ4LCAyMDc1MiwgMjA3NTYsIDIwNzYwLCAyMDc2NCwgMjA3NjgsIDIwNzcyLCAyMDc3NiwgMjA3ODAsIDIwNzg0LCAKKyAgICAyMDc4OCwgMjA3OTIsIDIwNzk2LCAyMDgwMCwgMjA4MDQsIDIwODA4LCAyMDgxMiwgMjA4MTYsIDIwODIwLCAyMDgyNCwgCisgICAgMjA4MjgsIDIwODMyLCAyMDgzNiwgMjA4NDAsIDIwODQ0LCAyMDg0OCwgMjA4NTIsIDIwODU2LCAyMDg2MCwgMjA4NjQsIAorICAgIDIwODY4LCAyMDg3MiwgMjA4NzYsIDIwODgwLCAyMDg4NCwgMjA4ODgsIDIwODkyLCAyMDg5NiwgMjA5MDAsIDIwOTA0LCAKKyAgICAyMDkwOCwgMjA5MTIsIDIwOTE2LCAyMDkyMCwgMjA5MjQsIDIwOTI4LCAyMDkzMiwgMjA5MzYsIDIwOTQwLCAyMDk0NCwgCisgICAgMjA5NDgsIDIwOTUyLCAyMDk1NiwgMjA5NjAsIDIwOTY0LCAyMDk2OCwgMjA5NzIsIDIwOTc2LCAyMDk4MCwgMjA5ODQsIAorICAgIDIwOTg4LCAyMDk5MiwgMjA5OTYsIDIxMDAwLCAyMTAwNCwgMjEwMDgsIDIxMDEyLCAyMTAxNiwgMjEwMjAsIDIxMDI0LCAKKyAgICAyMTAyNywgMjEwMzEsIDIxMDM0LCAyMTAzOCwgMjEwNDIsIDIxMDQ1LCAyMTA0OSwgMjEwNTMsIDIxMDU2LCAyMTA2MCwgCisgICAgMjEwNjQsIDIxMDY4LCAyMTA3MiwgMjEwNzUsIDIxMDc5LCAyMTA4MywgMjEwODcsIDIxMDkxLCAyMTA5NSwgMjEwOTksIAorICAgIDIxMTAyLCAyMTEwNiwgMjExMTAsIDIxMTE0LCAyMTExOCwgMjExMjIsIDIxMTI2LCAyMTEzMCwgMjExMzQsIDIxMTM4LCAKKyAgICAyMTE0MiwgMjExNDYsIDIxMTUwLCAyMTE1NCwgMjExNTgsIDIxMTYyLCAyMTE2NiwgMjExNzAsIDIxMTc0LCAyMTE3OCwgCisgICAgMjExODIsIDIxMTg2LCAyMTE5MCwgMjExOTQsIDIxMTk4LCAyMTIwMiwgMjEyMDYsIDIxMjEwLCAyMTIxNCwgMjEyMTgsIAorICAgIDIxMjIyLCAyMTIyNiwgMjEyMzAsIDIxMjM0LCAyMTIzOCwgMjEyNDIsIDIxMjQ2LCAyMTI1MCwgMjEyNTQsIDIxMjU4LCAKKyAgICAyMTI2MiwgMjEyNjYsIDIxMjcwLCAyMTI3NCwgMjEyNzgsIDIxMjgyLCAyMTI4NiwgMjEyOTAsIDIxMjk0LCAyMTI5OCwgCisgICAgMjEzMDIsIDIxMzA2LCAyMTMxMCwgMjEzMTQsIDIxMzE4LCAyMTMyMiwgMjEzMjYsIDIxMzMwLCAyMTMzNCwgMjEzMzgsIAorICAgIDIxMzQyLCAyMTM0NiwgMjEzNTAsIDIxMzU0LCAyMTM1OCwgMjEzNjIsIDIxMzY2LCAyMTM3MCwgMjEzNzQsIDIxMzc4LCAKKyAgICAyMTM4MiwgMjEzODYsIDIxMzkwLCAyMTM5NCwgMjEzOTgsIDIxNDAyLCAyMTQwNiwgMjE0MTAsIDIxNDE0LCAyMTQxOCwgCisgICAgMjE0MjIsIDIxNDI2LCAyMTQzMCwgMjE0MzQsIDIxNDM4LCAyMTQ0MiwgMjE0NDYsIDIxNDUwLCAyMTQ1NCwgMjE0NTgsIAorICAgIDIxNDYyLCAyMTQ2NiwgMjE0NzAsIDIxNDc0LCAyMTQ3OCwgMjE0ODIsIDIxNDg2LCAyMTQ5MCwgMjE0OTQsIDIxNDk4LCAKKyAgICAyMTUwMiwgMjE1MDYsIDIxNTEwLCAyMTUxNCwgMjE1MTgsIDIxNTIyLCAyMTUyNiwgMjE1MzAsIDIxNTM0LCAyMTUzOCwgCisgICAgMjE1NDIsIDIxNTQ2LCAyMTU1MCwgMjE1NTQsIDIxNTU4LCAyMTU2MiwgMjE1NjYsIDIxNTcwLCAyMTU3NCwgMjE1NzgsIAorICAgIDIxNTgyLCAyMTU4NiwgMjE1OTAsIDIxNTk0LCAyMTU5OCwgMjE2MDIsIDIxNjA2LCAyMTYxMCwgMjE2MTQsIDIxNjE4LCAKKyAgICAyMTYyMiwgMjE2MjYsIDIxNjMwLCAyMTYzNCwgMjE2MzgsIDIxNjQyLCAyMTY0NiwgMjE2NTAsIDIxNjU0LCAyMTY1NywgCisgICAgMjE2NjEsIDIxNjY1LCAyMTY2OSwgMjE2NzMsIDIxNjc3LCAyMTY4MSwgMjE2ODUsIDIxNjg4LCAyMTY5MiwgMjE2OTYsIAorICAgIDIxNzAwLCAyMTcwNCwgMjE3MDgsIDIxNzEyLCAyMTcxNiwgMjE3MjAsIDIxNzI0LCAyMTcyOCwgMjE3MzIsIDIxNzM2LCAKKyAgICAyMTc0MCwgMjE3NDQsIDIxNzQ4LCAyMTc1MSwgMjE3NTUsIDIxNzU5LCAyMTc2MywgMjE3NjcsIDIxNzcxLCAyMTc3NSwgCisgICAgMjE3NzksIDIxNzgzLCAyMTc4NywgMjE3OTEsIDIxNzk1LCAyMTc5OSwgMjE4MDMsIDIxODA3LCAyMTgxMSwgMjE4MTUsIAorICAgIDIxODE5LCAyMTgyMywgMjE4MjcsIDIxODMxLCAyMTgzNSwgMjE4MzksIDIxODQzLCAyMTg0NywgMjE4NTEsIDIxODU1LCAKKyAgICAyMTg1OSwgMjE4NjMsIDIxODY3LCAyMTg3MSwgMjE4NzUsIDIxODc5LCAyMTg4MywgMjE4ODcsIDIxODkxLCAyMTg5NSwgCisgICAgMjE4OTksIDIxOTAzLCAyMTkwNywgMjE5MTEsIDIxOTE1LCAyMTkxOSwgMjE5MjMsIDIxOTI3LCAyMTkzMSwgMjE5MzUsIAorICAgIDIxOTM5LCAwLCAyMTk0MywgMjE5NDcsIDIxOTUxLCAyMTk1NSwgMCwgMCwgMjE5NTksIDIxOTYzLCAyMTk2NywgMjE5NzEsIAorICAgIDIxOTc1LCAyMTk3OSwgMjE5ODMsIDAsIDIxOTg3LCAwLCAyMTk5MSwgMjE5OTUsIDIxOTk5LCAyMjAwMywgMCwgMCwgCisgICAgMjIwMDcsIDIyMDExLCAyMjAxNSwgMjIwMTksIDIyMDIzLCAyMjAyNywgMjIwMzEsIDIyMDM1LCAyMjAzOSwgMjIwNDMsIAorICAgIDIyMDQ3LCAyMjA1MSwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIDIyMDgzLCAKKyAgICAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OCwgMjIxMDIsIDIyMTA2LCAyMjExMCwgMjIxMTQsIDIyMTE4LCAyMjEyMiwgCisgICAgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgMjIxNjIsIAorICAgIDIyMTY2LCAwLCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMCwgMCwgMjIxODYsIDIyMTg5LCAyMjE5MywgMjIxOTcsIAorICAgIDIyMjAxLCAyMjIwNSwgMjIyMDksIDIyMjEzLCAyMjIxNywgMjIyMjEsIDIyMjI1LCAyMjIyOSwgMjIyMzMsIDIyMjM3LCAKKyAgICAyMjI0MSwgMjIyNDUsIDIyMjQ5LCAyMjI1NCwgMjIyNTksIDIyMjY0LCAyMjI3MCwgMjIyNzYsIDIyMjgxLCAyMjI4NiwgCisgICAgMjIyOTIsIDIyMjk1LCAyMjI5OSwgMjIzMDMsIDIyMzA3LCAyMjMxMSwgMjIzMTUsIDIyMzE5LCAyMjMyMywgMCwgMjIzMjcsIAorICAgIDIyMzMxLCAyMjMzNSwgMjIzMzksIDAsIDAsIDIyMzQzLCAyMjM0NywgMjIzNTEsIDIyMzU1LCAyMjM1OSwgMjIzNjMsIAorICAgIDIyMzY3LCAwLCAyMjM3MSwgMCwgMjIzNzUsIDIyMzc5LCAyMjM4MywgMjIzODcsIDAsIDAsIDIyMzkxLCAyMjM5NSwgCisgICAgMjIzOTksIDIyNDAzLCAyMjQwNywgMjI0MTEsIDIyNDE1LCAyMjQxOSwgMjI0MjMsIDIyNDI4LCAyMjQzMywgMjI0MzgsIAorICAgIDIyNDQ0LCAyMjQ1MCwgMjI0NTUsIDAsIDIyNDYwLCAyMjQ2NCwgMjI0NjgsIDIyNDcyLCAyMjQ3NiwgMjI0ODAsIDIyNDg0LCAKKyAgICAyMjQ4OCwgMjI0OTIsIDIyNDk2LCAyMjUwMCwgMjI1MDQsIDIyNTA4LCAyMjUxMiwgMjI1MTYsIDIyNTIwLCAyMjUyNCwgCisgICAgMjI1MjcsIDIyNTMxLCAyMjUzNSwgMjI1MzksIDIyNTQzLCAyMjU0NywgMjI1NTEsIDIyNTU1LCAyMjU1OSwgMjI1NjMsIAorICAgIDIyNTY3LCAyMjU3MSwgMjI1NzUsIDIyNTc5LCAyMjU4MywgMjI1ODcsIDIyNTkxLCAyMjU5NSwgMjI1OTksIDIyNjAzLCAKKyAgICAyMjYwNywgMjI2MTEsIDIyNjE1LCAyMjYxOSwgMjI2MjMsIDIyNjI3LCAyMjYzMSwgMjI2MzUsIDIyNjM5LCAyMjY0MywgCisgICAgMjI2NDcsIDIyNjUxLCAyMjY1NSwgMjI2NTksIDIyNjYzLCAyMjY2NywgMjI2NzEsIDIyNjc1LCAyMjY3OSwgMjI2ODMsIDAsIAorICAgIDIyNjg3LCAyMjY5MSwgMjI2OTUsIDIyNjk5LCAwLCAwLCAyMjcwMywgMjI3MDcsIDIyNzExLCAyMjcxNSwgMjI3MTksIAorICAgIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM1LCAyMjczOSwgMjI3NDMsIDIyNzQ3LCAyMjc1MSwgMjI3NTUsIDIyNzU5LCAKKyAgICAyMjc2MywgMjI3NjcsIDIyNzcxLCAyMjc3NSwgMjI3NzksIDIyNzgzLCAyMjc4NywgMjI3OTEsIDIyNzk1LCAyMjc5OSwgCisgICAgMjI4MDMsIDIyODA3LCAyMjgxMSwgMjI4MTUsIDIyODE5LCAyMjgyMywgMjI4MjcsIDIyODMxLCAyMjgzNSwgMjI4MzksIAorICAgIDIyODQzLCAyMjg0NywgMjI4NTEsIDIyODU1LCAyMjg1OSwgMjI4NjMsIDIyODY3LCAyMjg3MSwgMjI4NzUsIDIyODc5LCAKKyAgICAyMjg4MywgMjI4ODcsIDIyODkxLCAyMjg5NSwgMjI4OTksIDIyOTAzLCAyMjkwNywgMjI5MTEsIDIyOTE1LCAyMjkxOSwgCisgICAgMjI5MjMsIDIyOTI3LCAyMjkzMCwgMjI5MzQsIDIyOTM4LCAyMjk0MiwgMjI5NDYsIDIyOTUwLCAyMjk1NCwgMjI5NTgsIAorICAgIDIyOTYyLCAyMjk2NiwgMCwgMCwgMjI5NzAsIDIyOTc5LCAyMjk4NSwgMjI5OTAsIDIyOTk0LCAyMjk5NywgMjMwMDIsIAorICAgIDIzMDA1LCAyMzAwOCwgMjMwMTEsIDIzMDE2LCAyMzAyMCwgMjMwMjUsIDIzMDI4LCAyMzAzMSwgMjMwMzQsIDIzMDM3LCAKKyAgICAyMzA0MCwgMjMwNDMsIDIzMDQ3LCAyMzA1MCwgMjMwNTQsIDIzMDU4LCAyMzA2MiwgMjMwNjYsIDIzMDcwLCAyMzA3NCwgCisgICAgMjMwNzgsIDIzMDgyLCAyMzA4NiwgMjMwOTAsIDIzMDk0LCAwLCAwLCAwLCAyMzEwMCwgMjMxMDYsIDIzMTEwLCAyMzExNCwgCisgICAgMjMxMTgsIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzE0MiwgMjMxNDYsIDIzMTUwLCAyMzE1NCwgMjMxNjAsIAorICAgIDIzMTY0LCAyMzE2OCwgMjMxNzIsIDIzMTc4LCAyMzE4NCwgMjMxOTAsIDIzMTk4LCAyMzIwNCwgMjMyMTAsIDIzMjE2LCAKKyAgICAyMzIyMiwgMjMyMjgsIDAsIDAsIDAsIDAsIDAsIDAsIDIzMjM0LCAyMzIzNywgMjMyNDAsIDIzMjQzLCAyMzI0NiwgMjMyNDksIAorICAgIDIzMjUzLCAyMzI1NywgMjMyNjAsIDIzMjY0LCAyMzI2OCwgMjMyNzIsIDIzMjc2LCAyMzI4MCwgMjMyODMsIDIzMjg3LCAKKyAgICAyMzI5MSwgMjMyOTUsIDIzMjk5LCAyMzMwMywgMjMzMDYsIDIzMzEwLCAyMzMxNCwgMjMzMTgsIDIzMzIyLCAyMzMyNiwgCisgICAgMjMzMjksIDIzMzMzLCAyMzMzNywgMjMzNDEsIDIzMzQ1LCAyMzM0OCwgMjMzNTIsIDIzMzU2LCAyMzM2MCwgMjMzNjQsIAorICAgIDIzMzY4LCAyMzM3MiwgMjMzNzYsIDIzMzgwLCAyMzM4NCwgMjMzODgsIDIzMzkyLCAyMzM5NiwgMjM0MDAsIDIzNDA0LCAKKyAgICAyMzQwOCwgMjM0MTIsIDIzNDE2LCAyMzQyMCwgMjM0MjQsIDIzNDI4LCAyMzQzMiwgMjM0MzYsIDIzNDQwLCAyMzQ0NCwgCisgICAgMjM0NDgsIDIzNDUyLCAyMzQ1NiwgMjM0NjAsIDIzNDY0LCAyMzQ2OCwgMjM0NzIsIDIzNDc2LCAyMzQ4MCwgMjM0ODQsIAorICAgIDIzNDg4LCAyMzQ5MiwgMjM0OTYsIDIzNTAwLCAyMzUwNCwgMjM1MDgsIDIzNTEyLCAyMzUxNiwgMjM1MjAsIDIzNTI0LCAKKyAgICAyMzUyOCwgMjM1MzIsIDIzNTM2LCAyMzU0MCwgMjM1NDMsIDIzNTQ3LCAyMzU1MSwgMjM1NTUsIDIzNTU5LCAyMzU2MywgMCwgCisgICAgMCwgMjM1NjcsIDIzNTcyLCAyMzU3NywgMjM1ODIsIDIzNTg3LCAyMzU5MiwgMCwgMCwgMjM1OTcsIDIzNjAxLCAyMzYwNCwgCisgICAgMjM2MDgsIDIzNjExLCAyMzYxNSwgMjM2MTgsIDIzNjIyLCAyMzYyOCwgMjM2MzMsIDIzNjM3LCAyMzY0MCwgMjM2NDQsIAorICAgIDIzNjQ4LCAyMzY1NCwgMjM2NTgsIDIzNjY0LCAyMzY2OCwgMjM2NzQsIDIzNjc4LCAyMzY4NCwgMjM2ODgsIDIzNjk0LCAKKyAgICAyMzcwMCwgMjM3MDQsIDIzNzEwLCAyMzcxNCwgMjM3MjAsIDIzNzI2LCAyMzczMCwgMjM3MzYsIDIzNzQyLCAyMzc0NiwgCisgICAgMjM3NTEsIDIzNzU5LCAyMzc2NywgMjM3NzQsIDIzNzc5LCAyMzc4NCwgMjM3OTMsIDIzNzk5LCAyMzgwNywgMjM4MTIsIAorICAgIDIzODE4LCAyMzgyMiwgMjM4MjYsIDIzODMwLCAyMzgzNCwgMjM4MzgsIDIzODQyLCAyMzg0NiwgMjM4NTAsIDIzODU0LCAKKyAgICAyMzg1OCwgMjM4NjQsIDIzODY5LCAyMzg3NCwgMjM4NzcsIDIzODgxLCAyMzg4NSwgMjM4OTEsIDIzODk1LCAyMzkwMSwgCisgICAgMjM5MDUsIDIzOTExLCAyMzkxNSwgMjM5MjEsIDIzOTI1LCAyMzkzMSwgMjM5MzUsIDIzOTQxLCAyMzk0NSwgMjM5NTEsIAorICAgIDIzOTU3LCAyMzk2MSwgMjM5NjcsIDIzOTcyLCAyMzk3NiwgMjM5ODAsIDIzOTg0LCAyMzk4OCwgMjM5OTEsIDIzOTk1LCAKKyAgICAyNDAwMSwgMjQwMDYsIDI0MDExLCAyNDAxNSwgMjQwMTksIDI0MDIzLCAyNDAyOSwgMjQwMzMsIDI0MDM5LCAyNDA0MywgCisgICAgMjQwNDksIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MSwgMjQwNzcsIDI0MDgxLCAyNDA4NywgMjQwOTMsIAorICAgIDI0MDk3LCAyNDEwMSwgMjQxMDUsIDI0MTA5LCAyNDExMywgMjQxMTcsIDI0MTIxLCAyNDEyNSwgMjQxMjksIDI0MTMzLCAKKyAgICAyNDEzNywgMjQxNDMsIDI0MTQ2LCAyNDE1MCwgMjQxNTQsIDI0MTYwLCAyNDE2NCwgMjQxNzAsIDI0MTc0LCAyNDE4MCwgCisgICAgMjQxODQsIDI0MTkwLCAyNDE5NCwgMjQyMDAsIDI0MjA0LCAyNDIxMCwgMjQyMTQsIDI0MjIwLCAyNDIyNiwgMjQyMzAsIAorICAgIDI0MjM0LCAyNDI0MCwgMjQyNDYsIDI0MjUyLCAyNDI1OCwgMjQyNjIsIDI0MjY2LCAyNDI3MCwgMjQyNzQsIDI0Mjc4LCAKKyAgICAyNDI4MiwgMjQyODgsIDI0MjkyLCAyNDI5NiwgMjQzMDAsIDI0MzA2LCAyNDMxMCwgMjQzMTYsIDI0MzIwLCAyNDMyNiwgCisgICAgMjQzMzAsIDI0MzM2LCAyNDM0MCwgMjQzNDYsIDI0MzUwLCAyNDM1NiwgMjQzNjAsIDI0MzY2LCAyNDM3MiwgMjQzNzYsIAorICAgIDI0MzgyLCAyNDM4NiwgMjQzOTAsIDI0Mzk0LCAyNDM5OCwgMjQ0MDIsIDI0NDA2LCAyNDQxMiwgMjQ0MTUsIDI0NDE5LCAKKyAgICAyNDQyMywgMjQ0MjksIDI0NDMzLCAyNDQzOSwgMjQ0NDMsIDI0NDQ5LCAyNDQ1MywgMjQ0NTksIDI0NDYzLCAyNDQ2OSwgCisgICAgMjQ0NzMsIDI0NDc5LCAyNDQ4MywgMjQ0ODksIDI0NDk1LCAyNDQ5OSwgMjQ1MDUsIDI0NTA5LCAyNDUxNSwgMjQ1MjEsIAorICAgIDI0NTI1LCAyNDUyOSwgMjQ1MzMsIDI0NTM3LCAyNDU0MSwgMjQ1NDUsIDI0NTUxLCAyNDU1NCwgMjQ1NTgsIDI0NTYyLCAKKyAgICAyNDU2OCwgMjQ1NzIsIDI0NTc4LCAyNDU4MiwgMjQ1ODgsIDI0NTk0LCAyNDU5OCwgMjQ2MDMsIDI0NjA3LCAyNDYxMSwgCisgICAgMjQ2MTUsIDI0NjE5LCAyNDYyMywgMjQ2MjcsIDI0NjMxLCAyNDYzNywgMjQ2NDAsIDI0NjQ0LCAyNDY0OCwgMjQ2NTQsIAorICAgIDI0NjU4LCAyNDY2NCwgMjQ2NjgsIDI0Njc0LCAyNDY3OCwgMjQ2ODQsIDI0Njg4LCAyNDY5NCwgMjQ2OTgsIDI0NzA0LCAKKyAgICAyNDcwOCwgMjQ3MTQsIDI0NzE3LCAyNDcyMiwgMjQ3MjYsIDI0NzMwLCAyNDczNCwgMjQ3MzgsIDI0NzQyLCAyNDc0NiwgCisgICAgMjQ3NTAsIDI0NzU2LCAyNDc2MCwgMjQ3NjQsIDI0NzY4LCAyNDc3NCwgMjQ3NzgsIDI0Nzg0LCAyNDc4OCwgMjQ3OTQsIAorICAgIDI0Nzk4LCAyNDgwNCwgMjQ4MDgsIDI0ODE0LCAyNDgxOCwgMjQ4MjQsIDI0ODI4LCAyNDgzNCwgMjQ4NDAsIDI0ODQ0LCAKKyAgICAyNDg1MCwgMjQ4NTQsIDI0ODYwLCAyNDg2NiwgMjQ4NzIsIDI0ODc4LCAyNDg4NCwgMjQ4OTAsIDI0ODk2LCAyNDkwMiwgCisgICAgMjQ5MDYsIDI0OTEwLCAyNDkxNCwgMjQ5MTgsIDI0OTIyLCAyNDkyNiwgMjQ5MzAsIDI0OTM0LCAyNDk0MCwgMjQ5NDQsIAorICAgIDI0OTUwLCAyNDk1NCwgMjQ5NjAsIDI0OTY0LCAyNDk3MCwgMjQ5NzQsIDI0OTgwLCAyNDk4NCwgMjQ5OTAsIDI0OTk0LCAKKyAgICAyNTAwMCwgMjUwMDQsIDI1MDA4LCAyNTAxMiwgMjUwMTYsIDI1MDIwLCAyNTAyNCwgMjUwMjgsIDI1MDM0LCAyNTAzNywgCisgICAgMjUwNDEsIDI1MDQ1LCAyNTA1MSwgMjUwNTUsIDI1MDYxLCAyNTA2NSwgMjUwNzEsIDI1MDc1LCAyNTA4MSwgMjUwODUsIAorICAgIDI1MDkxLCAyNTA5NSwgMjUxMDEsIDI1MTA1LCAyNTExMSwgMjUxMTcsIDI1MTIxLCAyNTEyNywgMjUxMzMsIDI1MTM5LCAKKyAgICAyNTE0MywgMjUxNDksIDI1MTU1LCAyNTE1OSwgMjUxNjMsIDI1MTY3LCAyNTE3MSwgMjUxNzUsIDI1MTgxLCAyNTE4NSwgCisgICAgMjUxODksIDI1MTk0LCAyNTE5OCwgMjUyMDQsIDI1MjA3LCAyNTIxMiwgMjUyMTYsIDI1MjIwLCAyNTIyNCwgMjUyMjgsIAorICAgIDI1MjMyLCAyNTIzNiwgMjUyNDAsIDI1MjQ0LCAyNTI0OCwgMjUyNTIsIDI1MjU4LCAyNTI2MiwgMjUyNjYsIDI1MjcyLCAKKyAgICAyNTI3NiwgMjUyODIsIDI1Mjg2LCAyNTI5MiwgMjUyOTYsIDI1MzAwLCAyNTMwNCwgMjUzMDgsIDI1MzEyLCAyNTMxOCwgCisgICAgMjUzMjIsIDI1MzI2LCAyNTMzMCwgMjUzMzQsIDI1MzM4LCAyNTM0MiwgMjUzNDYsIDI1MzUwLCAyNTM1NCwgMjUzNTgsIAorICAgIDI1MzY0LCAyNTM3MCwgMjUzNzYsIDI1MzgyLCAyNTM4OCwgMjUzOTMsIDI1Mzk5LCAyNTQwNSwgMjU0MTEsIDI1NDE1LCAKKyAgICAyNTQxOSwgMjU0MjMsIDI1NDI3LCAyNTQzMSwgMjU0MzUsIDI1NDM5LCAyNTQ0MywgMjU0NDcsIDI1NDUxLCAyNTQ1NSwgCisgICAgMjU0NTksIDI1NDYzLCAyNTQ2OSwgMjU0NzUsIDI1NDgxLCAyNTQ4NywgMjU0OTEsIDI1NDk1LCAyNTQ5OSwgMjU1MDMsIAorICAgIDI1NTA3LCAyNTUxMSwgMjU1MTUsIDI1NTE5LCAyNTUyMywgMjU1MjksIDI1NTM1LCAyNTU0MSwgMjU1NDcsIDI1NTUzLCAKKyAgICAyNTU1OSwgMjU1NjUsIDI1NTcxLCAyNTU3NywgMjU1ODEsIDI1NTg1LCAyNTU4OSwgMjU1OTMsIDI1NTk3LCAyNTYwMSwgCisgICAgMjU2MDUsIDI1NjExLCAyNTYxNywgMjU2MjMsIDI1NjI5LCAyNTYzNSwgMjU2NDEsIDI1NjQ3LCAyNTY1MywgMjU2NTksIAorICAgIDI1NjY0LCAyNTY2OSwgMjU2NzQsIDI1Njc5LCAyNTY4NSwgMjU2OTEsIDI1Njk3LCAyNTcwMywgMjU3MDksIDI1NzE1LCAKKyAgICAyNTcyMSwgMjU3MjYsIDI1NzMyLCAyNTczOCwgMjU3NDQsIDI1NzQ5LCAyNTc1NSwgMjU3NjEsIDI1NzY3LCAyNTc3MiwgCisgICAgMjU3NzcsIDI1NzgyLCAyNTc4NywgMjU3OTIsIDI1Nzk3LCAyNTgwMiwgMjU4MDcsIDI1ODEyLCAyNTgxNywgMjU4MjIsIAorICAgIDI1ODI3LCAyNTgzMiwgMjU4MzcsIDI1ODQyLCAyNTg0NywgMjU4NTIsIDI1ODU3LCAyNTg2MiwgMjU4NjcsIDI1ODcyLCAKKyAgICAyNTg3NywgMjU4ODIsIDI1ODg3LCAyNTg5MiwgMjU4OTcsIDI1OTAyLCAyNTkwNywgMjU5MTIsIDI1OTE3LCAyNTkyMiwgCisgICAgMjU5MjcsIDI1OTMyLCAyNTkzNywgMjU5NDIsIDI1OTQ3LCAyNTk1MiwgMjU5NTcsIDI1OTYyLCAyNTk2NywgMjU5NzIsIAorICAgIDI1OTc3LCAyNTk4MSwgMjU5ODYsIDI1OTkxLCAyNTk5NiwgMjYwMDEsIDI2MDA2LCAyNjAxMSwgMjYwMTYsIDI2MDIxLCAKKyAgICAyNjAyNiwgMjYwMzEsIDI2MDM2LCAyNjA0MSwgMjYwNDYsIDI2MDUxLCAyNjA1NiwgMjYwNjEsIDI2MDY2LCAyNjA3MSwgCisgICAgMjYwNzYsIDI2MDgxLCAyNjA4NiwgMjYwOTEsIDI2MDk2LCAyNjEwMSwgMjYxMDYsIDI2MTEwLCAyNjExNSwgMjYxMjAsIAorICAgIDI2MTI1LCAyNjEzMCwgMjYxMzUsIDI2MTM5LCAyNjE0NCwgMjYxNDksIDI2MTU0LCAyNjE1OSwgMjYxNjQsIDI2MTY4LCAKKyAgICAyNjE3MywgMjYxNzksIDI2MTg0LCAyNjE4OSwgMjYxOTQsIDI2MTk5LCAyNjIwNSwgMjYyMTAsIDI2MjE1LCAyNjIyMCwgCisgICAgMjYyMjUsIDI2MjMwLCAyNjIzNSwgMjYyNDAsIDI2MjQ1LCAyNjI1MCwgMjYyNTUsIDI2MjYwLCAyNjI2NSwgMjYyNjksIAorICAgIDI2Mjc0LCAyNjI3OSwgMjYyODQsIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAKKyAgICAyNjMyNCwgMjYzMjksIDI2MzM0LCAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAyNjM2OSwgCisgICAgMjYzNzQsIDI2Mzc5LCAyNjM4NCwgMjYzODksIDI2Mzk0LCAyNjM5OSwgMjY0MDQsIDI2NDA5LCAyNjQxNCwgMjY0MTksIAorICAgIDI2NDI0LCAyNjQzMCwgMjY0MzUsIDI2NDQwLCAyNjQ0NSwgMjY0NTAsIDI2NDU1LCAyNjQ2MCwgMjY0NjUsIDI2NDcwLCAKKyAgICAyNjQ3NSwgMjY0ODAsIDI2NDg1LCAyNjQ5MCwgMjY0OTUsIDI2NTAwLCAyNjUwNSwgMjY1MTAsIDI2NTE1LCAyNjUyMCwgCisgICAgMjY1MjUsIDI2NTMwLCAyNjUzNSwgMjY1NDAsIDI2NTQ1LCAyNjU1MCwgMjY1NTUsIDI2NTYwLCAyNjU2NSwgMjY1NzAsIAorICAgIDI2NTc1LCAyNjU4MCwgMjY1ODUsIDI2NTkwLCAyNjU5NSwgMjY2MDAsIDI2NjA1LCAyNjYxMCwgMjY2MTUsIDI2NjIwLCAKKyAgICAyNjYyNiwgMjY2MzAsIDI2NjM0LCAyNjYzOCwgMjY2NDIsIDI2NjQ2LCAyNjY1MCwgMjY2NTQsIDI2NjU4LCAyNjY2NCwgCisgICAgMjY2NzAsIDI2Njc2LCAyNjY4MiwgMjY2ODgsIDI2Njk0LCAyNjcwMCwgMjY3MDcsIDI2NzEzLCAyNjcxOCwgMjY3MjMsIAorICAgIDI2NzI4LCAyNjczMywgMjY3MzgsIDI2NzQzLCAyNjc0OCwgMjY3NTMsIDI2NzU4LCAyNjc2MywgMjY3NjgsIDI2NzczLCAKKyAgICAyNjc3OCwgMjY3ODMsIDI2Nzg4LCAyNjc5MywgMjY3OTgsIDI2ODAzLCAyNjgwOCwgMjY4MTMsIDI2ODE4LCAyNjgyMywgCisgICAgMjY4MjgsIDI2ODMzLCAyNjgzOCwgMjY4NDMsIDI2ODQ4LCAyNjg1MywgMCwgMCwgMCwgMjY4NjAsIDI2ODcxLCAyNjg3NiwgCisgICAgMjY4ODQsIDI2ODg5LCAyNjg5NCwgMjY4OTksIDI2OTA4LCAyNjkxMywgMjY5MTksIDI2OTI1LCAyNjkzMSwgMjY5MzYsIAorICAgIDI2OTQyLCAyNjk0OCwgMjY5NTIsIDI2OTU3LCAyNjk2MiwgMjY5NzIsIDI2OTc3LCAyNjk4MiwgMjY5ODksIDI2OTk0LCAKKyAgICAyNjk5OSwgMjcwMDgsIDI3MDEzLCAyNzAyMiwgMjcwMjksIDI3MDM2LCAyNzA0MywgMjcwNTAsIDI3MDYxLCAyNzA2OCwgCisgICAgMjcwNzMsIDI3MDgzLCAyNzA4NywgMjcwOTQsIDI3MDk5LCAyNzEwNiwgMjcxMTIsIDI3MTE5LCAyNzEyOCwgMjcxMzUsIAorICAgIDI3MTQyLCAyNzE1MSwgMjcxNTgsIDI3MTYzLCAyNzE2OCwgMjcxNzksIDI3MTg2LCAyNzE5MSwgMjcyMDIsIDI3MjA5LCAKKyAgICAyNzIxNCwgMjcyMTksIDI3MjI3LCAyNzIzNiwgMjcyNDMsIDI3MjUwLCAyNzI2MCwgMjcyNjUsIDI3MjcwLCAyNzI3NSwgCisgICAgMjcyODQsIDI3MjkyLCAyNzI5NywgMjczMDIsIDI3MzA3LCAyNzMxMiwgMjczMTcsIDI3MzIyLCAyNzMyNywgMjczMzIsIAorICAgIDI3MzM3LCAyNzM0MiwgMjczNDcsIDI3MzUzLCAyNzM1OSwgMjczNjUsIDI3MzcwLCAyNzM3NSwgMjczODAsIDI3Mzg1LCAKKyAgICAyNzM5MCwgMjczOTUsIDI3NDA0LCAyNzQxMywgMjc0MjIsIDI3NDMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzQ0MCwgCisgICAgMjc0NDQsIDI3NDQ4LCAyNzQ1MiwgMjc0NTYsIDI3NDYxLCAyNzQ2NiwgMjc0NzEsIDI3NDc2LCAyNzQ4MCwgMjc0ODQsIAorICAgIDI3NDg5LCAyNzQ5MywgMCwgMjc0OTcsIDI3NTAxLCAyNzUwNiwgMjc1MTEsIDI3NTE1LCAyNzUyMCwgMjc1MjUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3NTMwLCAyNzUzNCwgMjc1MzgsIDI3NTQyLCAyNzU0NiwgMjc1NTEsIAorICAgIDI3NTU2LCAyNzU2MSwgMjc1NjYsIDI3NTcwLCAyNzU3NCwgMjc1NzksIDI3NTgzLCAyNzU4NywgMjc1OTIsIDI3NTk2LCAKKyAgICAyNzYwMSwgMjc2MDYsIDI3NjEwLCAyNzYxNSwgMjc2MjAsIDI3NjI1LCAyNzYzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMjc2MzYsIDI3NjQwLCAyNzY0NCwgMjc2NDgsIDI3NjUyLCAyNzY1NywgMjc2NjIsIDI3NjY3LCAyNzY3MiwgMjc2NzYsIAorICAgIDI3NjgwLCAyNzY4NSwgMjc2ODksIDI3NjkzLCAyNzY5OCwgMjc3MDIsIDI3NzA3LCAyNzcxMiwgMjc3MTYsIDI3NzIxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzcyNiwgMjc3MzAsIDI3NzM0LCAyNzczOCwgMjc3NDIsIAorICAgIDI3NzQ3LCAyNzc1MiwgMjc3NTcsIDI3NzYyLCAyNzc2NiwgMjc3NzAsIDI3Nzc1LCAyNzc3OSwgMCwgMjc3ODMsIDI3Nzg3LCAKKyAgICAyNzc5MiwgMCwgMjc3OTcsIDI3ODAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNzgwNywgMjc4MTAsIAorICAgIDI3ODE0LCAyNzgxOCwgMjc4MjIsIDI3ODI2LCAyNzgzMCwgMjc4MzQsIDI3ODM4LCAyNzg0MiwgMjc4NDYsIDI3ODUwLCAKKyAgICAyNzg1NCwgMjc4NTgsIDI3ODYyLCAyNzg2NiwgMjc4NzAsIDI3ODc0LCAyNzg3NywgMjc4ODEsIDI3ODg1LCAyNzg4OSwgCisgICAgMjc4OTMsIDI3ODk3LCAyNzkwMSwgMjc5MDUsIDI3OTA5LCAyNzkxMywgMjc5MTcsIDI3OTIxLCAyNzkyNSwgMjc5MjksIAorICAgIDI3OTMzLCAyNzkzNiwgMjc5MzksIDI3OTQzLCAyNzk0OSwgMjc5NTUsIDI3OTYxLCAyNzk2NywgMjc5NzMsIDI3OTc5LCAKKyAgICAyNzk4NSwgMjc5OTEsIDI3OTk3LCAyODAwMywgMjgwMDksIDI4MDE1LCAyODAyMSwgMjgwMjcsIDI4MDM2LCAyODA0NSwgCisgICAgMjgwNTEsIDI4MDU3LCAyODA2MywgMjgwNjgsIDI4MDcyLCAyODA3NywgMjgwODIsIDI4MDg3LCAyODA5MSwgMjgwOTYsIAorICAgIDI4MTAxLCAyODEwNiwgMjgxMTAsIDI4MTE1LCAyODExOSwgMjgxMjQsIDI4MTI5LCAyODEzNCwgMjgxMzksIDI4MTQzLCAKKyAgICAyODE0NywgMjgxNTEsIDI4MTU1LCAyODE1OSwgMjgxNjMsIDI4MTY3LCAyODE3MSwgMjgxNzUsIDI4MTc5LCAyODE4NSwgCisgICAgMjgxODksIDI4MTkzLCAyODE5NywgMjgyMDEsIDI4MjA1LCAyODIxMywgMjgyMTksIDI4MjIzLCAyODIyOSwgMjgyMzMsIAorICAgIDI4MjM5LCAyODI0MywgMCwgMCwgMjgyNDcsIDI4MjUxLCAyODI1NCwgMjgyNTcsIDI4MjYwLCAyODI2MywgMjgyNjYsIAorICAgIDI4MjY5LCAyODI3MywgMjgyNzYsIDAsIDAsIDAsIDAsIDAsIDAsIDI4MjgwLCAyODI4OCwgMjgyOTYsIDI4MzA0LCAyODMxMiwgCisgICAgMjgzMjAsIDI4MzI4LCAyODMzNiwgMjgzNDQsIDI4MzUyLCAwLCAwLCAwLCAwLCAwLCAwLCAyODM2MCwgMjgzNjMsIDI4MzY2LCAKKyAgICAyODM2OSwgMjgzNzQsIDI4Mzc3LCAyODM4MiwgMjgzODksIDI4Mzk3LCAyODQwMiwgMjg0MDksIDI4NDEyLCAyODQxOSwgCisgICAgMjg0MjYsIDI4NDMzLCAwLCAyODQzNywgMjg0NDEsIDI4NDQ0LCAyODQ0NywgMjg0NTAsIDI4NDUzLCAyODQ1NiwgMjg0NTksIAorICAgIDI4NDYzLCAyODQ2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMjg0NzAsIDI4NDczLCAyODQ3NiwgMjg0NzksIDI4NDgyLCAyODQ4NSwgCisgICAgMjg0ODksIDI4NDkzLCAyODQ5NywgMjg1MDAsIDI4NTA0LCAyODUwOCwgMjg1MTEsIDI4NTE1LCAyODUxOSwgMjg1MjIsIAorICAgIDI4NTI1LCAyODUyOSwgMjg1MzMsIDI4NTM3LCAyODU0MSwgMjg1NDUsIDI4NTQ5LCAyODU1MiwgMjg1NTYsIDI4NTYwLCAKKyAgICAyODU2NCwgMjg1NjcsIDI4NTcxLCAyODU3NSwgMjg1NzksIDI4NTgzLCAyODU4NywgMjg1OTEsIDI4NTk1LCAyODU5OSwgCisgICAgMjg2MDYsIDI4NjExLCAyODYxNiwgMjg2MjEsIDI4NjI2LCAyODYzMiwgMjg2MzgsIDI4NjQ0LCAyODY1MCwgMjg2NTUsIAorICAgIDI4NjYxLCAyODY2NywgMjg2NzIsIDI4Njc4LCAyODY4NCwgMjg2OTAsIDI4Njk2LCAyODcwMiwgMjg3MDcsIDI4NzEzLCAKKyAgICAyODcxOCwgMjg3MjQsIDI4NzMwLCAyODczNiwgMjg3NDIsIDI4NzQ4LCAyODc1MywgMjg3NTgsIDI4NzY0LCAyODc3MCwgCisgICAgMjg3NzUsIDI4NzgxLCAyODc4NiwgMjg3OTIsIDI4Nzk3LCAyODgwMiwgMjg4MDgsIDI4ODE0LCAyODgyMCwgMjg4MjYsIAorICAgIDI4ODMyLCAyODgzOCwgMjg4NDQsIDI4ODUwLCAyODg1NiwgMjg4NjIsIDI4ODY4LCAyODg3NCwgMjg4NzksIDI4ODg0LCAKKyAgICAyODg5MCwgMjg4OTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI4OTAyLCAyODkxMSwgMjg5MjAsIDI4OTI4LCAyODkzNiwgCisgICAgMjg5NDYsIDI4OTU0LCAyODk2MywgMjg5NzAsIDI4OTc3LCAyODk4NCwgMjg5OTIsIDI5MDAwLCAyOTAwOCwgMjkwMTYsIAorICAgIDI5MDI0LCAyOTAzMiwgMjkwNDAsIDI5MDQ4LCAyOTA1NSwgMjkwNjMsIDI5MDcxLCAyOTA3OSwgMjkwODcsIDI5MDk1LCAKKyAgICAyOTEwNSwgMjkxMTUsIDI5MTI1LCAyOTEzNSwgMjkxNDUsIDI5MTU1LCAyOTE2NSwgMjkxNzUsIDI5MTg1LCAyOTE5NSwgCisgICAgMjkyMDUsIDI5MjE1LCAyOTIyNSwgMjkyMzUsIDI5MjQzLCAyOTI1MSwgMjkyNjEsIDI5MjY5LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAyOTI3OSwgMjkyODMsIDI5Mjg3LCAyOTI5MSwgMjkyOTUsIDI5Mjk5LCAyOTMwMywgMjkzMDcsIDI5MzExLCAyOTMxNSwgCisgICAgMjkzMTksIDI5MzIzLCAyOTMyNywgMjkzMzEsIDI5MzM1LCAyOTMzOSwgMjkzNDMsIDI5MzQ3LCAyOTM1MSwgMjkzNTUsIAorICAgIDI5MzU5LCAyOTM2MywgMjkzNjcsIDI5MzcxLCAyOTM3NywgMjkzODEsIDI5Mzg3LCAyOTM5MSwgMjkzOTcsIDI5NDAxLCAKKyAgICAyOTQwNywgMjk0MTEsIDI5NDE1LCAyOTQxOSwgMjk0MjMsIDI5NDI3LCAyOTQzMSwgMjk0MzcsIDI5NDQzLCAyOTQ0OSwgCisgICAgMjk0NTUsIDI5NDYxLCAyOTQ2NywgMjk0NzMsIDI5NDc5LCAyOTQ4NSwgMjk0OTEsIDI5NDk3LCAyOTUwNCwgMjk1MTAsIAorICAgIDI5NTE2LCAyOTUyMiwgMjk1MjYsIDI5NTMwLCAyOTUzNCwgMjk1MzgsIDI5NTQyLCAyOTU0NiwgMjk1NTAsIDI5NTU2LCAKKyAgICAyOTU2MiwgMjk1NjgsIDI5NTczLCAyOTU4MCwgMjk1ODUsIDI5NTkwLCAyOTU5NiwgMjk2MDEsIDI5NjA4LCAyOTYxNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk2MjIsIDI5NjI4LCAyOTYzMiwgMjk2MzcsIDI5NjQyLCAyOTY0NywgCisgICAgMjk2NTIsIDI5NjU3LCAyOTY2MiwgMjk2NjcsIDI5NjcyLCAyOTY3NywgMjk2ODIsIDI5Njg3LCAyOTY5MiwgMjk2OTcsIAorICAgIDI5NzAxLCAyOTcwNSwgMjk3MTAsIDI5NzE1LCAyOTcyMCwgMjk3MjQsIDI5NzI4LCAyOTczMywgMjk3MzcsIDI5NzQyLCAKKyAgICAyOTc0NywgMjk3NTIsIDI5NzU3LCAyOTc2MSwgMjk3NjYsIDAsIDI5NzcxLCAyOTc3NiwgMjk3ODEsIDI5Nzg2LCAyOTc5MiwgCisgICAgMjk3OTgsIDI5ODA0LCAyOTgxMCwgMjk4MTUsIDI5ODIwLCAyOTgyNiwgMjk4MzMsIDAsIDAsIDAsIDAsIDI5ODQwLCAKKyAgICAyOTg0NSwgMjk4NTEsIDI5ODU3LCAyOTg2MywgMjk4NjgsIDI5ODczLCAyOTg3OCwgMjk4ODQsIDI5ODg5LCAyOTg5NCwgCisgICAgMjk4OTksIDAsIDAsIDAsIDAsIDI5OTA0LCAwLCAwLCAwLCAyOTkwOSwgMjk5MTQsIDI5OTE5LCAyOTkyNCwgMjk5MjgsIAorICAgIDI5OTMyLCAyOTkzNiwgMjk5NDAsIDI5OTQ0LCAyOTk0OCwgMjk5NTMsIDI5OTU3LCAyOTk2MiwgMjk5NjcsIDI5OTczLCAKKyAgICAyOTk3OSwgMjk5ODUsIDI5OTkxLCAyOTk5NiwgMzAwMDIsIDMwMDA4LCAzMDAxMywgMzAwMTgsIDMwMDI0LCAzMDAyOSwgCisgICAgMzAwMzUsIDMwMDQxLCAzMDA0NiwgMzAwNTIsIDMwMDU4LCAzMDA2NCwgMzAwNjksIDMwMDc0LCAzMDA3OSwgMzAwODUsIAorICAgIDMwMDkxLCAzMDA5NiwgMzAxMDIsIDMwMTA3LCAzMDExMywgMzAxMTgsIDMwMTI0LCAwLCAwLCAzMDEzMCwgMzAxMzYsIAorICAgIDMwMTQyLCAzMDE0OCwgMzAxNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDMwMTYwLCAzMDE2OSwgCisgICAgMzAxNzgsIDMwMTg2LCAzMDE5NSwgMzAyMDQsIDMwMjEyLCAzMDIyMSwgMzAyMzAsIDMwMjM5LCAzMDI0OCwgMzAyNTYsIAorICAgIDMwMjY1LCAzMDI3NCwgMzAyODIsIDMwMjkxLCAzMDMwMCwgMzAzMDgsIDMwMzE3LCAzMDMyNiwgMzAzMzQsIDMwMzQyLCAKKyAgICAzMDM1MSwgMzAzNTksIDMwMzY3LCAzMDM3NiwgMzAzODQsIDMwMzkzLCAzMDQwMiwgMzA0MTAsIDMwNDE5LCAzMDQyOCwgCisgICAgMzA0MzYsIDMwNDQ0LCAzMDQ1MywgMzA0NjIsIDMwNDcwLCAzMDQ3OSwgMzA0ODgsIDMwNDk3LCAzMDUwNiwgMzA1MTUsIAorICAgIDMwNTI0LCAzMDUzMywgMCwgMCwgMCwgMCwgMzA1NDIsIDMwNTUyLCAzMDU2MSwgMzA1NzAsIDMwNTc4LCAzMDU4NywgCisgICAgMzA1OTUsIDMwNjA0LCAzMDYxMiwgMzA2MjEsIDMwNjMwLCAzMDYzOSwgMzA2NDgsIDMwNjU3LCAzMDY2NiwgMzA2NzUsIAorICAgIDMwNjg0LCAzMDY5MywgMzA3MDIsIDMwNzExLCAzMDcyMCwgMzA3MjksIDMwNzM4LCAzMDc0NywgMzA3NTYsIDMwNzY0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAzMDc3MiwgMzA3ODAsIDMwNzg3LCAzMDc5NCwgMzA4MDEsIDMwODA4LCAzMDgxNSwgMzA4MjIsIAorICAgIDMwODMwLCAzMDgzNywgMzA4NDUsIDAsIDAsIDAsIDMwODUzLCAzMDg2MSwgMzA4NjksIDMwODczLCAzMDg3OSwgMzA4ODUsIAorICAgIDMwODkxLCAzMDg5NywgMzA5MDMsIDMwOTA5LCAzMDkxNSwgMzA5MjEsIDMwOTI3LCAzMDkzMywgMzA5MzksIDMwOTQ1LCAKKyAgICAzMDk1MSwgMzA5NTcsIDMwOTYzLCAzMDk2NywgMzA5NzMsIDMwOTc5LCAzMDk4NSwgMzA5OTEsIDMwOTk3LCAzMTAwMywgCisgICAgMzEwMDksIDMxMDE1LCAzMTAyMSwgMzEwMjcsIDMxMDMzLCAzMTAzOSwgMzEwNDUsIDMxMDUxLCAzMTA1NywgMzEwNjEsIAorICAgIDMxMDY2LCAzMTA3MSwgMzEwNzYsIDMxMDgwLCAzMTA4NSwgMzEwODksIDMxMDk0LCAzMTA5OSwgMzExMDQsIDMxMTA4LCAKKyAgICAzMTExMywgMzExMTgsIDMxMTIzLCAzMTEyOCwgMzExMzMsIDMxMTM3LCAzMTE0MiwgMzExNDYsIDMxMTUxLCAzMTE1NiwgCisgICAgMzExNjAsIDMxMTY0LCAzMTE2OSwgMzExNzQsIDMxMTc5LCAzMTE4NCwgMCwgMCwgMzExOTAsIDMxMTk0LCAzMTIwMSwgCisgICAgMzEyMDYsIDMxMjEyLCAzMTIxOCwgMzEyMjMsIDMxMjI5LCAzMTIzNSwgMzEyNDAsIDMxMjQ2LCAzMTI1MiwgMzEyNTgsIAorICAgIDMxMjY0LCAzMTI3MCwgMzEyNzUsIDMxMjgwLCAzMTI4NiwgMzEyOTEsIDMxMjk3LCAzMTMwMiwgMzEzMDgsIDMxMzE0LCAKKyAgICAzMTMyMCwgMzEzMjYsIDMxMzMwLCAzMTMzNSwgMzEzNDAsIDMxMzQ2LCAzMTM1MiwgMzEzNTcsIDMxMzYzLCAzMTM2OSwgCisgICAgMzEzNzMsIDMxMzc4LCAzMTM4MywgMzEzODgsIDMxMzkzLCAzMTM5NywgMzE0MDIsIDMxNDA3LCAzMTQxMywgMzE0MTksIAorICAgIDMxNDI1LCAzMTQzMCwgMzE0MzUsIDMxNDM5LCAzMTQ0NCwgMzE0NDgsIDMxNDUzLCAzMTQ1NywgMzE0NjIsIDMxNDY3LCAKKyAgICAzMTQ3MiwgMzE0NzcsIDMxNDg0LCAzMTQ5MSwgMzE0OTcsIDMxNTA3LCAzMTUxNiwgMzE1MjMsIDMxNTI5LCAzMTU0MCwgCisgICAgMzE1NDUsIDMxNTUxLCAwLCAzMTU1NywgMzE1NjIsIDMxNTY3LCAzMTU3NSwgMzE1ODEsIDMxNTg5LCAzMTU5NCwgMzE2MDAsIAorICAgIDMxNjA2LCAzMTYxMiwgMzE2MTcsIDMxNjIzLCAzMTYyOCwgMzE2MzUsIDMxNjQxLCAzMTY0NiwgMzE2NTIsIDMxNjU4LCAKKyAgICAzMTY2NCwgMzE2NzEsIDMxNjc4LCAzMTY4NSwgMzE2OTAsIDMxNjk1LCAzMTcwMiwgMzE3MDksIDMxNzE2LCAzMTcyMywgCisgICAgMzE3MzAsIDAsIDAsIDMxNzM3LCAzMTc0NCwgMzE3NTEsIDMxNzU3LCAzMTc2MywgMzE3NjksIDMxNzc1LCAzMTc4MSwgCisgICAgMzE3ODcsIDMxNzk0LCAzMTgwMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE4MDcsIDMxODEzLCAzMTgxOCwgMzE4MjMsIDMxODI4LCAKKyAgICAzMTgzMywgMzE4MzgsIDMxODQzLCAzMTg0OSwgMzE4NTQsIDAsIDAsIDAsIDAsIDAsIDAsIDMxODYwLCAzMTg2NSwgMzE4NzAsIAorICAgIDMxODc1LCAzMTg4MCwgMzE4ODUsIDMxODkwLCAzMTg5OSwgMzE5MDYsIDMxOTExLCAzMTkxNiwgMzE5MjEsIDMxOTI2LCAKKyAgICAzMTkzMSwgMCwgMCwgMzE5MzYsIDMxOTQzLCAzMTk0NiwgMzE5NDksIDMxOTUyLCAzMTk1NywgMzE5NjEsIDMxOTY3LCAKKyAgICAzMTk3MSwgMzE5NzYsIDMxOTgzLCAzMTk5MSwgMzE5OTUsIDMyMDAwLCAzMjAwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNDgsIDEyMjU3LCAxMjI2NSwgCi0gICAgMTIyNzIsIDEyMjgwLCAxMjI5MiwgMTIyOTksIDEyMzA2LCAxMjMxMywgMTIzMjUsIDEyMzM2LCAxMjM0MywgMTIzNTEsIAotICAgIDEyMzU3LCAxMjM2MiwgMTIzNzAsIDEyMzc4LCAxMjM4NiwgMTIzOTIsIDEyNDAyLCAxMjQxMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzIwMDksIDMyMDE1LCAzMjAyMSwgMzIwMjUsIDMyMDI5LCAzMjAzMywgCisgICAgMzIwMzcsIDMyMDQzLCAzMjA0NywgMzIwNTMsIDMyMDU3LCAzMjA2MywgMzIwNjksIDMyMDc3LCAzMjA4MywgMzIwOTEsIAorICAgIDMyMDk1LCAzMjA5OSwgMzIxMDMsIDMyMTA5LCAzMjExMiwgMzIxMTgsIDMyMTIyLCAzMjEyOCwgMzIxMzIsIDMyMTM2LCAKKyAgICAzMjE0MiwgMzIxNDYsIDMyMTUyLCAzMjE1NiwgMzIxNjIsIDMyMTcwLCAzMjE3OCwgMzIxODYsIDMyMTkyLCAzMjE5NiwgCisgICAgMzIyMDIsIDMyMjA2LCAzMjIxMiwgMzIyMTUsIDMyMjE4LCAzMjIyNCwgMzIyMjgsIDMyMjM0LCAzMjIzNywgMzIyNDAsIAorICAgIDMyMjQ0LCAzMjI0NywgMzIyNTEsIDMyMjU3LCAzMjI2MywgMzIyNjcsIDMyMjcwLCAzMjI3NCwgMzIyNzksIDMyMjg0LCAKKyAgICAzMjI5MSwgMzIyOTYsIDMyMzAzLCAzMjMxMCwgMzIzMTksIDMyMzI2LCAzMjMzNSwgMzIzNDAsIDMyMzQ3LCAzMjM1NCwgCisgICAgMzIzNjMsIDMyMzY4LCAzMjM3NSwgMzIzODAsIDMyMzg2LCAzMjM5MiwgMzIzOTgsIDMyNDA0LCAzMjQxMCwgMzI0MTYsIDAsIAorICAgIDAsIDAsIDAsIDMyNDIyLCAzMjQyNiwgMzI0MjksIDMyNDMyLCAzMjQzNSwgMzI0MzgsIDMyNDQxLCAzMjQ0NCwgMzI0NDgsIAorICAgIDMyNDUxLCAzMjQ1NSwgMzI0NTgsIDMyNDYxLCAzMjQ2NCwgMzI0NjksIDMyNDc0LCAzMjQ3OSwgMzI0ODIsIDMyNDg3LCAKKyAgICAzMjQ5MiwgMzI0OTcsIDMyNTAyLCAzMjUwOSwgMzI1MTQsIDMyNTE5LCAzMjUyNCwgMzI1MjksIDMyNTM2LCAzMjU0MiwgCisgICAgMzI1NDgsIDMyNTU0LCAzMjU2MCwgMzI1NjYsIDMyNTc1LCAzMjU4NCwgMzI1OTAsIDMyNTk2LCAzMjYwNCwgMzI2MTIsIAorICAgIDMyNjIxLCAzMjYzMCwgMzI2MzgsIDMyNjQ2LCAzMjY1NSwgMzI2NjQsIDAsIDAsIDAsIDMyNjcyLCAzMjY3NywgMzI2ODIsIAorICAgIDMyNjg3LCAzMjY5MSwgMzI2OTUsIDMyNjk5LCAzMjcwNCwgMzI3MDgsIDMyNzEyLCAzMjcxNywgMzI3MjEsIDMyNzI2LCAKKyAgICAzMjczMSwgMzI3MzYsIDMyNzQxLCAzMjc0NiwgMzI3NTEsIDMyNzU2LCAzMjc2MSwgMzI3NjYsIDMyNzcwLCAzMjc3NCwgCisgICAgMzI3NzksIDMyNzg0LCAzMjc4OSwgMzI3OTMsIDMyNzk3LCAzMjgwMiwgMzI4MDYsIDMyODExLCAzMjgxNiwgMzI4MjEsIAorICAgIDMyODI1LCAzMjgzMSwgMzI4MzcsIDMyODQzLCAzMjg0OSwgMzI4NTUsIDMyODYxLCAzMjg2NywgMzI4NzMsIDMyODc5LCAKKyAgICAzMjg4NCwgMzI4ODksIDMyODk2LCAzMjkwNCwgMzI5MDksIDMyOTE0LCAzMjkxOSwgMzI5MjMsIDMyOTI3LCAzMjkzMSwgCisgICAgMzI5MzUsIDMyOTM5LCAzMjk0MywgMzI5NDgsIDMyOTUyLCAzMjk1NywgMzI5NjEsIDMyOTY2LCAzMjk3MSwgMzI5NzYsIAorICAgIDMyOTgyLCAzMjk4OCwgMzI5OTIsIDMyOTk4LCAzMzAwMiwgMzMwMDgsIDMzMDE0LCAzMzAxOSwgMzMwMjYsIDMzMDMwLCAKKyAgICAzMzAzNiwgMzMwNDAsIDMzMDQ2LCAzMzA1MSwgMzMwNTgsIDMzMDY1LCAzMzA3MCwgMzMwNzcsIDMzMDgyLCAzMzA4NywgCisgICAgMzMwOTIsIDMzMDk5LCAzMzEwMywgMzMxMDksIDMzMTE2LCAzMzEyMywgMzMxMjgsIDMzMTM1LCAzMzE0MiwgMzMxNDYsIAorICAgIDMzMTUyLCAzMzE1NywgMzMxNjEsIDMzMTY3LCAzMzE3MiwgMzMxNzcsIDMzMTgyLCAzMzE4NywgMzMxOTEsIDMzMTk1LCAKKyAgICAzMzIwMCwgMzMyMDUsIDMzMjEyLCAzMzIxOCwgMzMyMjMsIDMzMjMwLCAzMzIzNSwgMzMyNDIsIDMzMjQ3LCAzMzI1NywgCisgICAgMzMyNjMsIDMzMjY5LCAzMzI3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzMyNzcsIDMzMjg2LCAzMzI5MywgMzMzMDAsIAorICAgIDMzMzA3LCAzMzMxMSwgMzMzMTYsIDMzMzIxLCAzMzMyNiwgMzMzMzEsIDMzMzM2LCAzMzM0MSwgMzMzNDYsIDMzMzUxLCAKKyAgICAzMzM1NiwgMzMzNjEsIDMzMzY2LCAzMzM3MSwgMzMzNzUsIDMzMzc5LCAzMzM4NCwgMzMzODksIDMzMzk0LCAzMzM5OSwgCisgICAgMzM0MDQsIDMzNDA5LCAzMzQxMywgMzM0MTgsIDMzNDIzLCAzMzQyOCwgMzM0MzMsIDMzNDM3LCAzMzQ0MiwgMzM0NDYsIAorICAgIDMzNDUwLCAzMzQ1NSwgMzM0NjAsIDMzNDY1LCAzMzQ3MCwgMzM0NzUsIDMzNDc5LCAzMzQ4NSwgMzM0OTIsIDMzNDk4LCAKKyAgICAzMzUwMywgMzM1MDgsIDMzNTE0LCAzMzUxOSwgMzM1MjUsIDMzNTMwLCAzMzUzNiwgMzM1NDIsIDMzNTQ3LCAzMzU1MywgCisgICAgMzM1NTksIDMzNTY0LCAzMzU3MCwgMzM1NzYsIDMzNTgyLCAzMzU4NywgMCwgMCwgMCwgMzM1OTIsIDMzNTk4LCAzMzYwOCwgCisgICAgMzM2MTQsIDMzNjIyLCAzMzYyOCwgMzM2MzMsIDMzNjM3LCAzMzY0MSwgMzM2NDUsIDMzNjQ5LCAzMzY1MywgMzM2NTcsIAorICAgIDMzNjYyLCAzMzY2NiwgMCwgMCwgMCwgMzM2NzEsIDMzNjc2LCAzMzY4MSwgMzM2ODYsIDMzNjkzLCAzMzY5OSwgMzM3MDUsIAorICAgIDMzNzExLCAzMzcxNywgMzM3MjMsIDMzNzI5LCAzMzczNiwgMzM3NDIsIDMzNzQ5LCAzMzc1NSwgMzM3NjIsIDMzNzY5LCAKKyAgICAzMzc3NiwgMzM3ODMsIDMzNzkwLCAzMzc5NywgMzM4MDQsIDMzODExLCAzMzgxOCwgMzM4MjUsIDMzODMyLCAzMzgzOSwgCisgICAgMzM4NDYsIDMzODUzLCAzMzg2MCwgMzM4NjcsIDMzODc0LCAzMzg4MSwgMzM4ODgsIDMzODk1LCAzMzkwMiwgMzM5MDksIAorICAgIDMzOTE2LCAzMzkyMywgMzM5MzAsIDMzOTM3LCAzMzk0NCwgMzM5NTEsIDMzOTU4LCAzMzk2NiwgMzM5NzQsIDMzOTgyLCAKKyAgICAzMzk4OCwgMzM5OTQsIDM0MDAwLCAzNDAwOCwgMzQwMTcsIDM0MDI0LCAzNDAzMSwgMzQwMzcsIDM0MDQ0LCAzNDA1MSwgCisgICAgMzQwNTgsIDM0MDY2LCAzNDA3MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI0MTcsIDEyNDIzLCAxMjQyOCwgCi0gICAgMTI0MzMsIDEyNDM4LCAxMjQ0MywgMTI0NDgsIDEyNDUzLCAxMjQ1OCwgMTI0NjMsIDEyNDY4LCAxMjQ3MywgMTI0NzgsIAotICAgIDEyNDgzLCAxMjQ4NywgMTI0OTEsIDEyNDk1LCAxMjUwMCwgMTI1MDYsIDEyNTEyLCAxMjUxOCwgMTI1MjMsIDEyNTI4LCAKLSAgICAxMjUzMywgMTI1MzgsIDEyNTQ0LCAxMjU1MywgMTI1NjEsIDEyNTY3LCAxMjU3NSwgMTI1ODEsIDEyNTg1LCAxMjU4OSwgCi0gICAgMTI1OTMsIDEyNTk4LCAxMjYwMSwgMTI2MDUsIDEyNjA4LCAxMjYxMiwgMTI2MTUsIDEyNjE5LCAxMjYyMywgMTI2MjcsIAotICAgIDEyNjMyLCAxMjYzNywgMTI2NDAsIDEyNjQ0LCAxMjY0OSwgMTI2NTQsIDEyNjU3LCAxMjY2MSwgMTI2NjQsIDEyNjY4LCAKLSAgICAxMjY3MiwgMTI2NzYsIDEyNjgwLCAxMjY4NCwgMTI2ODgsIDEyNjkyLCAxMjY5NiwgMTI3MDAsIDEyNzA0LCAxMjcwOCwgCi0gICAgMTI3MTIsIDEyNzE2LCAxMjcyMCwgMTI3MjQsIDEyNzI4LCAxMjczMiwgMTI3MzYsIDEyNzQwLCAxMjc0NCwgMTI3NDcsIAotICAgIDEyNzUxLCAxMjc1NSwgMTI3NTksIDEyNzYyLCAxMjc2NSwgMTI3NjksIDEyNzczLCAxMjc3NywgMTI3ODEsIDEyNzg1LCAKLSAgICAxMjc4OSwgMTI3OTMsIDEyNzk3LCAxMjgwMSwgMTI4MDQsIDEyODA5LCAxMjgxNCwgMTI4MTgsIDEyODIyLCAxMjgyNywgCi0gICAgMTI4MzEsIDEyODM2LCAxMjg0MCwgMTI4NDUsIDEyODUwLCAxMjg1NiwgMTI4NjIsIDEyODY4LCAxMjg3MiwgMTI4NzcsIAotICAgIDEyODgzLCAxMjg4OSwgMTI4OTMsIDEyODk4LCAxMjkwMiwgMTI5MDgsIDEyOTEzLCAxMjkxNiwgMTI5MjIsIDEyOTI4LCAKLSAgICAxMjkzMywgMTI5MzgsIDEyOTQ1LCAxMjk1MCwgMTI5NTUsIDEyOTU5LCAxMjk2MywgMTI5NjcsIDEyOTcxLCAxMjk3NSwgCi0gICAgMTI5NzksIDEyOTgzLCAxMjk4NywgMTI5OTIsIDEyOTk3LCAxMzAwMiwgMTMwMDgsIDEzMDExLCAxMzAxNSwgMTMwMTksIAotICAgIDEzMDIyLCAxMzAyNSwgMTMwMjgsIDEzMDMxLCAxMzAzNCwgMTMwMzcsIDEzMDQxLCAxMzA0NCwgMTMwNDgsIDEzMDUyLCAKLSAgICAxMzA1OSwgMTMwNjQsIDEzMDY4LCAxMzA3MiwgMTMwNzYsIDEzMDgwLCAxMzA4NCwgMTMwOTAsIDEzMDk0LCAxMzA5OCwgCi0gICAgMTMxMDIsIDEzMTA2LCAxMzExMiwgMTMxMTYsIDEzMTIwLCAxMzEyMywgMTMxMjcsIDEzMTMxLCAwLCAxMzEzNSwgMTMxMzgsIAotICAgIDEzMTQyLCAxMzE0NSwgMTMxNDksIDEzMTUyLCAxMzE1NiwgMTMxNjAsIDAsIDAsIDEzMTY0LCAxMzE2NywgMCwgMCwgCi0gICAgMTMxNzEsIDEzMTc0LCAxMzE3OCwgMTMxODEsIDEzMTg1LCAxMzE4OSwgMTMxOTMsIDEzMTk3LCAxMzIwMSwgMTMyMDUsIAotICAgIDEzMjA5LCAxMzIxMywgMTMyMTcsIDEzMjIxLCAxMzIyNSwgMTMyMjksIDEzMjMzLCAxMzIzNywgMTMyNDEsIDEzMjQ1LCAKLSAgICAxMzI0OSwgMTMyNTMsIDAsIDEzMjU3LCAxMzI2MCwgMTMyNjQsIDEzMjY4LCAxMzI3MiwgMTMyNzUsIDEzMjc4LCAwLCAKLSAgICAxMzI4MiwgMCwgMCwgMCwgMTMyODYsIDEzMjkwLCAxMzI5NCwgMTMyOTgsIDAsIDAsIDEzMzAxLCAxMzMwNSwgMTMzMDksIAotICAgIDEzMzE0LCAxMzMxOCwgMTMzMjMsIDEzMzI3LCAxMzMzMiwgMTMzMzcsIDAsIDAsIDEzMzQzLCAxMzM0NywgMCwgMCwgCi0gICAgMTMzNTIsIDEzMzU2LCAxMzM2MSwgMTMzNjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzM3NywgMTMzODEsIDAsIDEzMzg1LCAxMzM4OSwgMTMzOTQsIDEzMzk5LCAxMzQwNCwgMCwgMCwgMTM0MTAsIDEzNDE0LCAKLSAgICAxMzQxNywgMTM0MjAsIDEzNDIzLCAxMzQyNiwgMTM0MjksIDEzNDMyLCAxMzQzNiwgMTM0MzksIDEzNDQzLCAxMzQ1MSwgCi0gICAgMTM0NjAsIDEzNDY0LCAxMzQ2OCwgMTM0NzQsIDEzNDgwLCAxMzQ4NiwgMTM0OTIsIDEzNTA2LCAxMzUxMywgMTM1MTYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEzNTIwLCAxMzUyNywgMTM1MzIsIDAsIDEzNTM3LCAxMzU0MSwgMTM1NDYsIDEzNTUwLCAxMzU1NSwgCi0gICAgMTM1NTksIDAsIDAsIDAsIDAsIDEzNTY0LCAxMzU2OSwgMCwgMCwgMTM1NzQsIDEzNTc5LCAxMzU4NCwgMTM1ODgsIDEzNTkzLCAKLSAgICAxMzU5OCwgMTM2MDMsIDEzNjA4LCAxMzYxMywgMTM2MTgsIDEzNjIzLCAxMzYyOCwgMTM2MzMsIDEzNjM4LCAxMzY0MywgCi0gICAgMTM2NDgsIDEzNjUzLCAxMzY1OCwgMTM2NjMsIDEzNjY4LCAxMzY3MywgMTM2NzgsIDAsIDEzNjgzLCAxMzY4NywgMTM2OTIsIAotICAgIDEzNjk3LCAxMzcwMiwgMTM3MDYsIDEzNzEwLCAwLCAxMzcxNSwgMTM3MjAsIDAsIDEzNzI1LCAxMzczMCwgMCwgMTM3MzUsIAotICAgIDEzNzQwLCAwLCAwLCAxMzc0NCwgMCwgMTM3NDksIDEzNzU1LCAxMzc2MCwgMTM3NjYsIDEzNzcxLCAwLCAwLCAwLCAwLCAKLSAgICAxMzc3NywgMTM3ODMsIDAsIDAsIDEzNzg5LCAxMzc5NSwgMTM4MDEsIDAsIDAsIDAsIDEzODA2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMzgxMSwgMTM4MTYsIDEzODIxLCAxMzgyNiwgMCwgMTM4MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODM2LCAKLSAgICAxMzg0MSwgMTM4NDUsIDEzODQ5LCAxMzg1MywgMTM4NTcsIDEzODYxLCAxMzg2NSwgMTM4NzAsIDEzODc0LCAxMzg3OSwgCi0gICAgMTM4ODMsIDEzODg3LCAxMzg5MSwgMTM4OTUsIDEzOTAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMzkwNiwgMTM5MTEsIDEzOTE2LCAwLCAxMzkyMSwgMTM5MjUsIDEzOTMwLCAxMzkzNCwgMTM5MzksIDEzOTQzLCAxMzk0OCwgCi0gICAgMTM5NTMsIDEzOTU4LCAwLCAxMzk2NCwgMTM5NjgsIDEzOTczLCAwLCAxMzk3OSwgMTM5ODMsIDEzOTg4LCAxMzk5MiwgCi0gICAgMTM5OTcsIDE0MDAyLCAxNDAwNywgMTQwMTIsIDE0MDE3LCAxNDAyMiwgMTQwMjcsIDE0MDMyLCAxNDAzNywgMTQwNDIsIAotICAgIDE0MDQ3LCAxNDA1MiwgMTQwNTcsIDE0MDYyLCAxNDA2NywgMTQwNzIsIDE0MDc3LCAxNDA4MiwgMCwgMTQwODcsIDE0MDkxLCAKLSAgICAxNDA5NiwgMTQxMDEsIDE0MTA2LCAxNDExMCwgMTQxMTQsIDAsIDE0MTE5LCAxNDEyNCwgMCwgMTQxMjksIDE0MTM0LCAKLSAgICAxNDEzOSwgMTQxNDQsIDE0MTQ5LCAwLCAwLCAxNDE1MywgMTQxNTgsIDE0MTYzLCAxNDE2OSwgMTQxNzQsIDE0MTgwLCAKLSAgICAxNDE4NSwgMTQxOTEsIDE0MTk3LCAxNDIwNCwgMCwgMTQyMTEsIDE0MjE2LCAxNDIyMiwgMCwgMTQyMjksIDE0MjM0LCAKLSAgICAxNDI0MCwgMCwgMCwgMTQyNDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE0MjQ5LCAKLSAgICAxNDI1NSwgMTQyNjEsIDE0MjY3LCAwLCAwLCAxNDI3NCwgMTQyNzksIDE0MjgzLCAxNDI4NywgMTQyOTEsIDE0Mjk1LCAKLSAgICAxNDI5OSwgMTQzMDMsIDE0MzA4LCAxNDMxMiwgMTQzMTcsIDE0MzIyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNDMyNywgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTQzMzIsIDE0MzM2LCAxNDM0MCwgMCwgMTQzNDQsIDE0MzQ3LCAxNDM1MSwgMTQzNTQsIAotICAgIDE0MzU4LCAxNDM2MSwgMTQzNjUsIDE0MzY5LCAwLCAwLCAxNDM3MywgMTQzNzYsIDAsIDAsIDE0MzgwLCAxNDM4MywgCi0gICAgMTQzODcsIDE0MzkwLCAxNDM5NCwgMTQzOTgsIDE0NDAyLCAxNDQwNiwgMTQ0MTAsIDE0NDE0LCAxNDQxOCwgMTQ0MjIsIAotICAgIDE0NDI2LCAxNDQzMCwgMTQ0MzQsIDE0NDM4LCAxNDQ0MiwgMTQ0NDYsIDE0NDUwLCAxNDQ1NCwgMTQ0NTgsIDE0NDYyLCAwLCAKLSAgICAxNDQ2NiwgMTQ0NjksIDE0NDczLCAxNDQ3NywgMTQ0ODEsIDE0NDg0LCAxNDQ4NywgMCwgMTQ0OTEsIDE0NDk1LCAwLCAKLSAgICAxNDQ5OSwgMTQ1MDMsIDE0NTA3LCAxNDUxMSwgMTQ1MTUsIDAsIDAsIDE0NTE4LCAxNDUyMiwgMTQ1MjYsIDE0NTMxLCAKLSAgICAxNDUzNSwgMTQ1NDAsIDE0NTQ0LCAxNDU0OSwgMTQ1NTQsIDAsIDAsIDE0NTYwLCAxNDU2NCwgMCwgMCwgMTQ1NjksIAotICAgIDE0NTczLCAxNDU3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1ODIsIDE0NTg4LCAwLCAwLCAwLCAwLCAxNDU5NCwgCi0gICAgMTQ1OTgsIDAsIDE0NjAyLCAxNDYwNiwgMTQ2MTEsIDE0NjE2LCAxNDYyMSwgMCwgMCwgMTQ2MjcsIDE0NjMxLCAxNDYzNCwgCi0gICAgMTQ2MzcsIDE0NjQwLCAxNDY0MywgMTQ2NDYsIDE0NjQ5LCAxNDY1MywgMTQ2NTYsIDE0NjYwLCAxNDY2MywgMTQ2NjcsIAotICAgIDE0NjczLCAxNDY3OSwgMTQ2ODUsIDE0NjkxLCAxNDY5NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MDMsIAotICAgIDE0NzA3LCAwLCAxNDcxMSwgMTQ3MTQsIDE0NzE4LCAxNDcyMSwgMTQ3MjUsIDE0NzI4LCAwLCAwLCAwLCAxNDczMiwgCi0gICAgMTQ3MzUsIDE0NzM5LCAwLCAxNDc0MywgMTQ3NDYsIDE0NzUwLCAxNDc1NCwgMCwgMCwgMCwgMTQ3NTcsIDE0NzYxLCAwLCAKLSAgICAxNDc2NSwgMCwgMTQ3NjksIDE0NzczLCAwLCAwLCAwLCAxNDc3NywgMTQ3ODEsIDAsIDAsIDAsIDE0Nzg1LCAxNDc4OSwgCi0gICAgMTQ3OTMsIDAsIDAsIDAsIDE0Nzk2LCAxNDc5OSwgMTQ4MDIsIDE0ODA2LCAxNDgxMCwgMTQ4MTQsIDE0ODE4LCAxNDgyMiwgCi0gICAgMTQ4MjYsIDE0ODMwLCAxNDgzNCwgMTQ4MzgsIDAsIDAsIDAsIDAsIDE0ODQxLCAxNDg0NiwgMTQ4NTAsIDE0ODU1LCAKLSAgICAxNDg1OSwgMCwgMCwgMCwgMTQ4NjQsIDE0ODY4LCAxNDg3MywgMCwgMTQ4NzgsIDE0ODgyLCAxNDg4NywgMTQ4OTIsIDAsIDAsIAotICAgIDE0ODk2LCAwLCAwLCAwLCAwLCAwLCAwLCAxNDg5OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTQ5MDUsIDE0OTA5LCAxNDkxMiwgMTQ5MTUsIDE0OTE4LCAxNDkyMSwgMTQ5MjQsIDE0OTI3LCAxNDkzMSwgMTQ5MzQsIAotICAgIDE0OTM4LCAxNDk0MiwgMTQ5NDcsIDE0OTUyLCAxNDk1NiwgMTQ5NjAsIDE0OTY0LCAxNDk2OCwgMTQ5NzIsIDE0OTc3LCAKLSAgICAxNDk4MSwgMCwgMCwgMCwgMCwgMCwgMTQ5ODQsIDE0OTkwLCAxNDk5NCwgMTQ5OTgsIDAsIDE1MDAyLCAxNTAwNSwgMTUwMDksIAotICAgIDE1MDEyLCAxNTAxNiwgMTUwMTksIDE1MDIzLCAxNTAyNywgMCwgMTUwMzEsIDE1MDM0LCAxNTAzOCwgMCwgMTUwNDIsIAotICAgIDE1MDQ1LCAxNTA0OSwgMTUwNTMsIDE1MDU2LCAxNTA2MCwgMTUwNjQsIDE1MDY4LCAxNTA3MiwgMTUwNzYsIDE1MDgwLCAKLSAgICAxNTA4NCwgMTUwODgsIDE1MDkyLCAxNTA5NiwgMTUxMDAsIDE1MTA0LCAxNTEwOCwgMTUxMTIsIDE1MTE2LCAxNTEyMCwgCi0gICAgMTUxMjQsIDE1MTI4LCAwLCAxNTEzMiwgMTUxMzUsIDE1MTM5LCAxNTE0MywgMTUxNDcsIDE1MTUwLCAxNTE1MywgMTUxNTcsIAotICAgIDE1MTYxLCAxNTE2NSwgMTUxNjksIDE1MTczLCAxNTE3NywgMTUxODEsIDE1MTg1LCAxNTE4OSwgMCwgMCwgMCwgMTUxOTIsIAotICAgIDE1MTk2LCAxNTIwMSwgMTUyMDUsIDE1MjEwLCAxNTIxNCwgMTUyMTksIDE1MjI0LCAwLCAxNTIzMCwgMTUyMzQsIDE1MjM5LCAKLSAgICAwLCAxNTI0NCwgMTUyNDgsIDE1MjUzLCAxNTI1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyNjIsIDE1MjY2LCAwLCAKLSAgICAxNTI3MiwgMTUyNzYsIDE1MjgwLCAwLCAwLCAwLCAwLCAwLCAxNTI4NCwgMTUyODksIDE1Mjk0LCAxNTI5OSwgMCwgMCwgCi0gICAgMTUzMDUsIDE1MzA5LCAxNTMxMiwgMTUzMTUsIDE1MzE4LCAxNTMyMSwgMTUzMjQsIDE1MzI3LCAxNTMzMSwgMTUzMzQsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzM4LCAxNTM1MSwgMTUzNjMsIDE1Mzc1LCAxNTM4NywgMTUzOTksIDE1NDExLCAKLSAgICAxNTQyMywgMCwgMTU0MjcsIDE1NDMxLCAxNTQzNSwgMCwgMTU0MzksIDE1NDQyLCAxNTQ0NiwgMTU0NDksIDE1NDUzLCAKLSAgICAxNTQ1NiwgMTU0NjAsIDE1NDY0LCAwLCAxNTQ2OCwgMTU0NzEsIDE1NDc1LCAwLCAxNTQ3OSwgMTU0ODIsIDE1NDg2LCAKLSAgICAxNTQ5MCwgMTU0OTMsIDE1NDk3LCAxNTUwMSwgMTU1MDUsIDE1NTA5LCAxNTUxMywgMTU1MTcsIDE1NTIxLCAxNTUyNSwgCi0gICAgMTU1MjksIDE1NTMzLCAxNTUzNywgMTU1NDEsIDE1NTQ1LCAxNTU0OSwgMTU1NTMsIDE1NTU3LCAxNTU2MSwgMTU1NjUsIDAsIAotICAgIDE1NTY5LCAxNTU3MiwgMTU1NzYsIDE1NTgwLCAxNTU4NCwgMTU1ODcsIDE1NTkwLCAxNTU5NCwgMTU1OTgsIDE1NjAyLCAwLCAKLSAgICAxNTYwNiwgMTU2MTAsIDE1NjE0LCAxNTYxOCwgMTU2MjIsIDAsIDAsIDE1NjI1LCAxNTYyOSwgMTU2MzMsIDE1NjM4LCAKLSAgICAxNTY0MiwgMTU2NDcsIDE1NjUxLCAxNTY1NiwgMTU2NjEsIDAsIDE1NjY3LCAxNTY3MSwgMTU2NzYsIDAsIDE1NjgxLCAKLSAgICAxNTY4NSwgMTU2OTAsIDE1Njk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY5OSwgMTU3MDMsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDE1NzA5LCAwLCAxNTcxMywgMTU3MTgsIDE1NzIzLCAxNTcyOCwgMCwgMCwgMTU3MzQsIDE1NzM4LCAxNTc0MSwgCi0gICAgMTU3NDQsIDE1NzQ3LCAxNTc1MCwgMTU3NTMsIDE1NzU2LCAxNTc2MCwgMTU3NjMsIDAsIDE1NzY3LCAxNTc3MSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NzUsIDE1Nzc5LCAxNTc4MywgMCwgMTU3ODcsIDE1NzkwLCAKLSAgICAxNTc5NCwgMTU3OTcsIDE1ODAxLCAxNTgwNCwgMTU4MDgsIDE1ODEyLCAwLCAxNTgxNiwgMTU4MTksIDE1ODIzLCAwLCAKLSAgICAxNTgyNywgMTU4MzAsIDE1ODM0LCAxNTgzOCwgMTU4NDEsIDE1ODQ1LCAxNTg0OSwgMTU4NTMsIDE1ODU3LCAxNTg2MSwgCi0gICAgMTU4NjUsIDE1ODY5LCAxNTg3MywgMTU4NzcsIDE1ODgxLCAxNTg4NSwgMTU4ODksIDE1ODkzLCAxNTg5NywgMTU5MDEsIAotICAgIDE1OTA1LCAxNTkwOSwgMTU5MTMsIDE1OTE3LCAxNTkyMSwgMTU5MjQsIDE1OTI4LCAxNTkzMiwgMTU5MzYsIDE1OTM5LCAKLSAgICAxNTk0MiwgMTU5NDYsIDE1OTUwLCAxNTk1NCwgMTU5NTgsIDE1OTYyLCAxNTk2NiwgMTU5NzAsIDE1OTc0LCAxNTk3OCwgCi0gICAgMTU5ODEsIDAsIDAsIDE1OTg1LCAxNTk4OSwgMTU5OTQsIDE1OTk4LCAxNjAwMywgMTYwMDcsIDE2MDEyLCAxNjAxNywgMCwgCi0gICAgMTYwMjMsIDE2MDI3LCAxNjAzMiwgMCwgMTYwMzcsIDE2MDQxLCAxNjA0NiwgMTYwNTEsIDE2MDU1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAxNjA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYwNjYsIDE2MDcyLCAxNjA3NywgMTYwODIsIDE2MDg3LCAKLSAgICAwLCAwLCAxNjA5MywgMTYwOTcsIDE2MTAwLCAxNjEwMywgMTYxMDYsIDE2MTA5LCAxNjExMiwgMTYxMTUsIDE2MTE5LCAKLSAgICAxNjEyMiwgMTYxMjYsIDE2MTMwLCAxNjEzNSwgMTYxNDAsIDE2MTQ2LCAxNjE1MiwgMCwgMCwgMCwgMTYxNTgsIDE2MTYyLCAKLSAgICAxNjE2OCwgMTYxNzQsIDE2MTgwLCAxNjE4NSwgMTYxOTEsIDAsIDAsIDE2MTk3LCAxNjIwMSwgMCwgMTYyMDUsIDE2MjA5LCAKLSAgICAxNjIxMywgMTYyMTcsIDE2MjIxLCAxNjIyNSwgMTYyMjksIDE2MjMzLCAxNjIzNywgMTYyNDEsIDE2MjQ1LCAxNjI0OSwgCi0gICAgMTYyNTMsIDE2MjU3LCAxNjI2MSwgMTYyNjUsIDE2MjY5LCAxNjI3MywgMCwgMCwgMCwgMTYyNzcsIDE2MjgzLCAxNjI4OSwgCi0gICAgMTYyOTUsIDE2MzAxLCAxNjMwNywgMTYzMTMsIDE2MzE5LCAxNjMyNSwgMTYzMzEsIDE2MzM3LCAxNjM0MywgMTYzNTEsIAotICAgIDE2MzU3LCAxNjM2MywgMTYzNjksIDE2Mzc1LCAxNjM4MSwgMTYzODcsIDE2MzkzLCAxNjM5OSwgMTY0MDUsIDE2NDExLCAKLSAgICAxNjQxNywgMCwgMTY0MjMsIDE2NDI5LCAxNjQzNSwgMTY0NDEsIDE2NDQ3LCAxNjQ1MywgMTY0NTcsIDE2NDYzLCAxNjQ2NywgCi0gICAgMCwgMTY0NzEsIDAsIDAsIDE2NDc3LCAxNjQ4MSwgMTY0ODcsIDE2NDkzLCAxNjQ5OSwgMTY1MDMsIDE2NTA5LCAwLCAwLCAwLCAKLSAgICAxNjUxMywgMCwgMCwgMCwgMCwgMTY1MTcsIDE2NTIyLCAxNjUyOSwgMTY1MzYsIDE2NTQzLCAxNjU1MCwgMCwgMTY1NTcsIDAsIAotICAgIDE2NTY0LCAxNjU2OSwgMTY1NzQsIDE2NTgxLCAxNjU4OCwgMTY1OTcsIDE2NjA4LCAxNjYxNywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTY2MjIsIDE2NjI4LCAxNjYzMywgMTY2MzgsIDE2NjQzLCAxNjY0OCwgMTY2NTMsIDE2NjU4LCAxNjY2NCwgMTY2NjksIDAsIAotICAgIDAsIDE2Njc1LCAxNjY4MiwgMTY2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2Njk0LCAxNjcwMSwgCi0gICAgMTY3MDgsIDE2NzE1LCAxNjcyMiwgMTY3MjksIDE2NzM2LCAxNjc0MywgMTY3NTAsIDE2NzU3LCAxNjc2NCwgMTY3NzEsIAotICAgIDE2Nzc4LCAxNjc4NSwgMTY3OTIsIDE2Nzk5LCAxNjgwNiwgMTY4MTMsIDE2ODIwLCAxNjgyNywgMTY4MzQsIDE2ODQxLCAKLSAgICAxNjg0OCwgMTY4NTUsIDE2ODYyLCAxNjg2OSwgMTY4NzYsIDE2ODgzLCAxNjg5MCwgMTY4OTcsIDE2OTA0LCAxNjkxMSwgCi0gICAgMTY5MTgsIDE2OTI0LCAxNjkzMSwgMTY5MzgsIDE2OTQzLCAxNjk1MCwgMTY5NTUsIDE2OTYyLCAxNjk2OSwgMTY5NzYsIAotICAgIDE2OTgzLCAxNjk5MCwgMTY5OTcsIDE3MDAzLCAxNzAxMCwgMTcwMTUsIDE3MDIxLCAxNzAyOCwgMTcwMzUsIDE3MDQyLCAKLSAgICAxNzA0OCwgMTcwNTUsIDE3MDYyLCAxNzA2OSwgMTcwNzUsIDE3MDgyLCAwLCAwLCAwLCAwLCAxNzA4NywgMTcwOTQsIAotICAgIDE3MTAwLCAxNzEwNywgMTcxMTMsIDE3MTIyLCAxNzEzMSwgMTcxMzYsIDE3MTQxLCAxNzE0NiwgMTcxNTMsIDE3MTYwLCAKLSAgICAxNzE2NywgMTcxNzQsIDE3MTc5LCAxNzE4NCwgMTcxODksIDE3MTk0LCAxNzE5OSwgMTcyMDMsIDE3MjA3LCAxNzIxMSwgCi0gICAgMTcyMTUsIDE3MjE5LCAxNzIyMywgMTcyMjgsIDE3MjMyLCAxNzIzNywgMTcyNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE3MjQ3LCAxNzI1MiwgMCwgMTcyNTksIDAsIDAsIDE3MjY2LCAxNzI3MSwgMCwgMTcyNzYsIDAsIAotICAgIDAsIDE3MjgzLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzI4OCwgMTcyOTMsIDE3Mjk3LCAxNzMwNCwgMCwgMTczMTEsIDE3MzE2LCAKLSAgICAxNzMyMSwgMTczMjYsIDE3MzMzLCAxNzM0MCwgMTczNDcsIDAsIDE3MzU0LCAxNzM1OSwgMTczNjQsIDAsIDE3MzcxLCAwLCAKLSAgICAxNzM3OCwgMCwgMCwgMTczODMsIDE3MzkwLCAwLCAxNzM5NywgMTc0MDEsIDE3NDA4LCAxNzQxMiwgMTc0MTcsIDE3NDI1LCAKLSAgICAxNzQzMSwgMTc0MzcsIDE3NDQyLCAxNzQ0OCwgMTc0NTQsIDE3NDYwLCAxNzQ2NSwgMCwgMTc0NzEsIDE3NDc5LCAxNzQ4NiwgCi0gICAgMCwgMCwgMTc0OTMsIDE3NDk4LCAxNzUwNCwgMTc1MDksIDE3NTE1LCAwLCAxNzUyMSwgMCwgMTc1MjcsIDE3NTM0LCAKLSAgICAxNzU0MSwgMTc1NDgsIDE3NTU1LCAxNzU2MCwgMCwgMCwgMTc1NjQsIDE3NTY5LCAxNzU3MywgMTc1NzcsIDE3NTgxLCAKLSAgICAxNzU4NSwgMTc1ODksIDE3NTkzLCAxNzU5OCwgMTc2MDIsIDAsIDAsIDE3NjA3LCAxNzYxMywgMTc2MTksIDE3NjI2LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNzYzMywgMTc2MzcsIDE3NjQ4LCAxNzY2MywgMTc2NzgsIDE3Njg4LCAxNzY5OSwgCi0gICAgMTc3MTIsIDE3NzIzLCAxNzcyOSwgMTc3MzcsIDE3NzQ3LCAxNzc1MywgMTc3NjEsIDE3NzY1LCAxNzc3MSwgMTc3NzcsIAotICAgIDE3Nzg1LCAxNzc5NSwgMTc4MDMsIDE3ODE2LCAxNzgyMiwgMTc4MzAsIDE3ODM4LCAxNzg1MCwgMTc4NTcsIDE3ODY1LCAKLSAgICAxNzg3MywgMTc4ODEsIDE3ODg5LCAxNzg5NywgMTc5MDUsIDE3OTE1LCAxNzkxOSwgMTc5MjIsIDE3OTI1LCAxNzkyOCwgCi0gICAgMTc5MzEsIDE3OTM0LCAxNzkzNywgMTc5NDEsIDE3OTQ0LCAxNzk0OCwgMTc5NTIsIDE3OTU2LCAxNzk2MCwgMTc5NjQsIAotICAgIDE3OTY4LCAxNzk3MiwgMTc5NzcsIDE3OTgxLCAxNzk4NiwgMTc5OTEsIDE3OTk3LCAxODAwNywgMTgwMjEsIDE4MDMxLCAKLSAgICAxODAzNywgMTgwNDMsIDE4MDUxLCAxODA1OSwgMTgwNjcsIDE4MDc1LCAxODA4MSwgMTgwODcsIDE4MDkwLCAxODA5NCwgCi0gICAgMTgwOTgsIDE4MTAyLCAxODEwNiwgMTgxMTAsIDE4MTE0LCAwLCAxODExOCwgMTgxMjIsIDE4MTI2LCAxODEzMCwgMTgxMzQsIAotICAgIDE4MTM4LCAxODE0MiwgMTgxNDYsIDE4MTUwLCAxODE1NCwgMTgxNTgsIDE4MTYyLCAxODE2NSwgMTgxNjksIDE4MTczLCAKLSAgICAxODE3NywgMTgxODAsIDE4MTg0LCAxODE4OCwgMTgxOTIsIDE4MTk2LCAxODIwMCwgMTgyMDQsIDE4MjA4LCAxODIxMiwgCi0gICAgMTgyMTUsIDE4MjE5LCAxODIyMywgMTgyMjcsIDE4MjMxLCAxODIzNSwgMTgyMzgsIDE4MjQxLCAxODI0NSwgMTgyNTEsIAotICAgIDE4MjU1LCAwLCAwLCAwLCAwLCAxODI1OSwgMTgyNjQsIDE4MjY4LCAxODI3MywgMTgyNzcsIDE4MjgyLCAxODI4NywgCi0gICAgMTgyOTMsIDE4Mjk4LCAxODMwNCwgMTgzMDgsIDE4MzEzLCAxODMxNywgMTgzMjIsIDE4MzMyLCAxODMzOCwgMTgzNDQsIAotICAgIDE4MzUxLCAxODM2MSwgMTgzNjcsIDE4MzcxLCAxODM3NSwgMTgzODEsIDE4Mzg3LCAxODM5NSwgMTg0MDEsIDE4NDA5LCAKLSAgICAxODQxNywgMTg0MjUsIDE4NDM1LCAxODQ0MywgMTg0NTMsIDE4NDU4LCAxODQ2NCwgMTg0NzAsIDE4NDc2LCAxODQ4MiwgCi0gICAgMTg0ODgsIDE4NDk0LCAwLCAxODUwMCwgMTg1MDYsIDE4NTEyLCAxODUxOCwgMTg1MjQsIDE4NTMwLCAxODUzNiwgMTg1NDIsIAotICAgIDE4NTQ4LCAxODU1NCwgMTg1NjAsIDE4NTY2LCAxODU3MSwgMTg1NzcsIDE4NTgzLCAxODU4OSwgMTg1OTQsIDE4NjAwLCAKLSAgICAxODYwNiwgMTg2MTIsIDE4NjE4LCAxODYyNCwgMTg2MzAsIDE4NjM2LCAxODY0MiwgMTg2NDcsIDE4NjUzLCAxODY1OSwgCi0gICAgMTg2NjUsIDE4NjcxLCAxODY3NywgMTg2ODIsIDE4Njg3LCAxODY5MywgMTg3MDEsIDE4NzA4LCAwLCAxODcxNiwgMTg3MjMsIAotICAgIDE4NzM2LCAxODc0MywgMTg3NTAsIDE4NzU4LCAxODc2NiwgMTg3NzIsIDE4Nzc4LCAxODc4NCwgMTg3OTQsIDE4Nzk5LCAKLSAgICAxODgwNSwgMTg4MTUsIDE4ODI1LCAwLCAxODgzNSwgMTg4NDUsIDE4ODUzLCAxODg2NSwgMTg4NzcsIDE4ODgzLCAxODg5NywgCi0gICAgMTg5MTIsIDE4OTE3LCAxODkyMiwgMTg5MzAsIDE4OTM4LCAxODk0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTg5NTQsIDE4OTU3LCAxODk2MSwgMTg5NjUsIDE4OTY5LCAxODk3MywgMTg5NzcsIDE4OTgxLCAxODk4NSwgCi0gICAgMTg5ODksIDE4OTkzLCAxODk5NywgMTkwMDEsIDE5MDA1LCAxOTAwOSwgMTkwMTMsIDE5MDE3LCAxOTAyMSwgMTkwMjUsIAotICAgIDE5MDI5LCAxOTAzMywgMTkwMzcsIDE5MDQwLCAxOTA0NCwgMTkwNDgsIDE5MDUyLCAxOTA1NSwgMTkwNTgsIDE5MDYyLCAKLSAgICAxOTA2NiwgMTkwNzAsIDE5MDc0LCAxOTA3NywgMTkwODEsIDE5MDg0LCAxOTA4OSwgMTkwOTIsIDE5MDk2LCAxOTA5OSwgCi0gICAgMTkxMDMsIDE5MTA2LCAxOTExMSwgMTkxMTQsIDE5MTE4LCAxOTEyNSwgMTkxMzAsIDE5MTM0LCAxOTEzOSwgMTkxNDMsIAotICAgIDE5MTQ4LCAxOTE1MiwgMTkxNTcsIDE5MTY0LCAxOTE3MCwgMTkxNzUsIDE5MTc5LCAxOTE4MywgMTkxODcsIDE5MTkxLCAKLSAgICAxOTE5NSwgMTkyMDAsIDE5MjA2LCAxOTIxMiwgMTkyMTcsIDE5MjIzLCAxOTIyNywgMTkyMzAsIDE5MjMzLCAxOTIzNiwgCi0gICAgMTkyMzksIDE5MjQyLCAxOTI0NSwgMTkyNDksIDE5MjUyLCAxOTI1NiwgMTkyNjIsIDE5MjY2LCAxOTI3MCwgMTkyNzQsIAotICAgIDE5Mjc4LCAxOTI4MiwgMTkyODYsIDE5MjkwLCAxOTI5NCwgMTkyOTksIDE5MzAzLCAxOTMwOCwgMTkzMTMsIDE5MzE5LCAKLSAgICAxOTMyNCwgMTkzMzAsIDE5MzM2LCAxOTM0MiwgMTkzNDgsIDE5MzU0LCAxOTM2MiwgMTkzNjksIDE5Mzc3LCAxOTM4NSwgCi0gICAgMTkzOTQsIDE5NDAzLCAxOTQxNCwgMTk0MjQsIDE5NDM0LCAxOTQ0NSwgMTk0NTYsIDE5NDY2LCAxOTQ3NiwgMTk0ODYsIAotICAgIDE5NDk2LCAxOTUwNiwgMTk1MTYsIDE5NTI2LCAxOTUzNiwgMTk1NDQsIDE5NTUxLCAxOTU1NywgMTk1NjQsIDE5NTY5LCAKLSAgICAxOTU3NSwgMTk1ODEsIDE5NTg3LCAxOTU5MywgMTk1OTksIDE5NjA1LCAxOTYxMSwgMTk2MTcsIDE5NjIzLCAxOTYyOSwgCi0gICAgMTk2MzUsIDE5NjQwLCAxOTY0OCwgMTk2NTUsIDE5NjYxLCAxOTY2OCwgMTk2NzYsIDE5NjgyLCAxOTY4OCwgMTk2OTQsIAotICAgIDE5NzAwLCAxOTcwOCwgMTk3MTYsIDE5NzI2LCAxOTczNCwgMTk3NDIsIDE5NzQ4LCAxOTc1MywgMTk3NTgsIDE5NzYzLCAKLSAgICAxOTc2OCwgMTk3NzMsIDE5Nzc4LCAxOTc4NCwgMTk3ODksIDE5Nzk1LCAxOTgwMSwgMTk4MDcsIDE5ODEzLCAxOTgyMCwgCi0gICAgMTk4MjUsIDE5ODMxLCAxOTgzNiwgMTk4NDEsIDE5ODQ2LCAxOTg1MSwgMTk4NTYsIDE5ODYxLCAxOTg2NiwgMTk4NzEsIAotICAgIDE5ODc2LCAxOTg4MSwgMTk4ODYsIDE5ODkxLCAxOTg5NiwgMTk5MDEsIDE5OTA2LCAxOTkxMSwgMTk5MTYsIDE5OTIxLCAKLSAgICAxOTkyNiwgMTk5MzEsIDE5OTM2LCAxOTk0MSwgMTk5NDYsIDE5OTUxLCAxOTk1NiwgMTk5NjEsIDE5OTY2LCAxOTk3MSwgCi0gICAgMTk5NzYsIDE5OTgxLCAxOTk4NiwgMTk5OTEsIDE5OTk2LCAyMDAwMSwgMjAwMDYsIDIwMDExLCAyMDAxNiwgMCwgMjAwMjEsIAotICAgIDAsIDAsIDAsIDAsIDAsIDIwMDI2LCAwLCAwLCAyMDAzMSwgMjAwMzUsIDIwMDM5LCAyMDA0MywgMjAwNDcsIDIwMDUxLCAKLSAgICAyMDA1NSwgMjAwNTksIDIwMDYzLCAyMDA2NywgMjAwNzEsIDIwMDc1LCAyMDA3OSwgMjAwODMsIDIwMDg3LCAyMDA5MSwgCi0gICAgMjAwOTUsIDIwMDk5LCAyMDEwMywgMjAxMDcsIDIwMTExLCAyMDExNSwgMjAxMTksIDIwMTIzLCAyMDEyNywgMjAxMzEsIAotICAgIDIwMTM1LCAyMDEzOSwgMjAxNDMsIDIwMTQ3LCAyMDE1MSwgMjAxNTUsIDIwMTU5LCAyMDE2MywgMjAxNjcsIDIwMTcxLCAKLSAgICAyMDE3NSwgMjAxNzksIDIwMTgzLCAyMDE4NywgMjAxOTEsIDIwMTk1LCAyMDIwMSwgMjAyMDUsIDIwMjEwLCAyMDIxNSwgCi0gICAgMjAyMTksIDIwMjI0LCAyMDIyOSwgMjAyMzMsIDIwMjM3LCAyMDI0MSwgMjAyNDUsIDIwMjQ5LCAyMDI1MywgMjAyNTcsIAotICAgIDIwMjYxLCAyMDI2NSwgMjAyNjksIDIwMjczLCAyMDI3NywgMjAyODEsIDIwMjg1LCAyMDI4OSwgMjAyOTMsIDIwMjk3LCAKLSAgICAyMDMwMSwgMjAzMDUsIDIwMzA5LCAyMDMxMywgMjAzMTcsIDIwMzIxLCAyMDMyNSwgMjAzMjksIDIwMzMzLCAyMDMzNywgCi0gICAgMjAzNDEsIDIwMzQ1LCAyMDM0OSwgMjAzNTMsIDIwMzU3LCAyMDM2MSwgMjAzNjUsIDIwMzY5LCAyMDM3MywgMjAzNzcsIAotICAgIDIwMzgxLCAyMDM4NSwgMjAzODksIDIwMzkzLCAyMDM5NywgMjA0MDEsIDIwNDA1LCAyMDQwOSwgMjA0MTMsIDIwNDE3LCAKLSAgICAyMDQyMSwgMjA0MjUsIDIwNDI5LCAyMDQzMywgMjA0MzcsIDIwNDQxLCAyMDQ0NSwgMjA0NDksIDIwNDUzLCAyMDQ1NywgCi0gICAgMjA0NjEsIDIwNDY1LCAyMDQ2OSwgMjA0NzMsIDIwNDc3LCAyMDQ4MSwgMjA0ODUsIDIwNDg5LCAyMDQ5MywgMjA0OTcsIAotICAgIDIwNTAxLCAyMDUwNSwgMjA1MDksIDIwNTEzLCAyMDUxNywgMjA1MjEsIDIwNTI1LCAyMDUyOSwgMjA1MzMsIDIwNTM3LCAKLSAgICAyMDU0MSwgMjA1NDUsIDIwNTQ5LCAyMDU1MywgMjA1NTcsIDIwNTYxLCAyMDU2NSwgMjA1NjksIDIwNTczLCAyMDU3NywgCi0gICAgMjA1ODEsIDIwNTg1LCAyMDU4OSwgMjA1OTMsIDIwNTk3LCAyMDYwMSwgMjA2MDUsIDIwNjA5LCAyMDYxMywgMjA2MTcsIAotICAgIDIwNjIwLCAyMDYyNCwgMjA2MjcsIDIwNjMxLCAyMDYzNSwgMjA2MzgsIDIwNjQyLCAyMDY0NiwgMjA2NDksIDIwNjUzLCAKLSAgICAyMDY1NywgMjA2NjEsIDIwNjY1LCAyMDY2OCwgMjA2NzIsIDIwNjc2LCAyMDY4MCwgMjA2ODQsIDIwNjg4LCAyMDY5MiwgCi0gICAgMjA2OTUsIDIwNjk5LCAyMDcwMywgMjA3MDcsIDIwNzExLCAyMDcxNSwgMjA3MTksIDIwNzIzLCAyMDcyNywgMjA3MzEsIAotICAgIDIwNzM1LCAyMDczOSwgMjA3NDMsIDIwNzQ3LCAyMDc1MSwgMjA3NTUsIDIwNzU5LCAyMDc2MywgMjA3NjcsIDIwNzcxLCAKLSAgICAyMDc3NSwgMjA3NzksIDIwNzgzLCAyMDc4NywgMjA3OTEsIDIwNzk1LCAyMDc5OSwgMjA4MDMsIDIwODA3LCAyMDgxMSwgCi0gICAgMjA4MTUsIDIwODE5LCAyMDgyMywgMjA4MjcsIDIwODMxLCAyMDgzNSwgMjA4MzksIDIwODQzLCAyMDg0NywgMjA4NTEsIAotICAgIDIwODU1LCAyMDg1OSwgMjA4NjMsIDIwODY3LCAyMDg3MSwgMjA4NzUsIDIwODc5LCAyMDg4MywgMjA4ODcsIDIwODkxLCAKLSAgICAyMDg5NSwgMjA4OTksIDIwOTAzLCAyMDkwNywgMjA5MTEsIDIwOTE1LCAyMDkxOSwgMjA5MjMsIDIwOTI3LCAyMDkzMSwgCi0gICAgMjA5MzUsIDIwOTM5LCAyMDk0MywgMjA5NDcsIDIwOTUxLCAyMDk1NSwgMjA5NTksIDIwOTYzLCAyMDk2NywgMjA5NzEsIAotICAgIDIwOTc1LCAyMDk3OSwgMjA5ODMsIDIwOTg3LCAyMDk5MSwgMjA5OTUsIDIwOTk5LCAyMTAwMywgMjEwMDcsIDIxMDExLCAKLSAgICAyMTAxNSwgMjEwMTksIDIxMDIzLCAyMTAyNywgMjEwMzEsIDIxMDM1LCAyMTAzOSwgMjEwNDMsIDIxMDQ3LCAyMTA1MSwgCi0gICAgMjEwNTUsIDIxMDU5LCAyMTA2MywgMjEwNjcsIDIxMDcxLCAyMTA3NSwgMjEwNzksIDIxMDgzLCAyMTA4NywgMjEwOTEsIAotICAgIDIxMDk1LCAyMTA5OSwgMjExMDMsIDIxMTA3LCAyMTExMSwgMjExMTUsIDIxMTE5LCAyMTEyMywgMjExMjcsIDIxMTMxLCAKLSAgICAyMTEzNSwgMjExMzksIDIxMTQzLCAyMTE0NywgMjExNTEsIDIxMTU1LCAyMTE1OSwgMjExNjMsIDIxMTY3LCAyMTE3MSwgCi0gICAgMjExNzUsIDIxMTc5LCAyMTE4MywgMjExODcsIDIxMTkxLCAyMTE5NSwgMjExOTksIDIxMjAzLCAyMTIwNywgMjEyMTEsIAotICAgIDIxMjE1LCAyMTIxOSwgMjEyMjMsIDIxMjI3LCAyMTIzMSwgMjEyMzUsIDIxMjM5LCAyMTI0MywgMjEyNDcsIDIxMjUwLCAKLSAgICAyMTI1NCwgMjEyNTgsIDIxMjYyLCAyMTI2NiwgMjEyNzAsIDIxMjc0LCAyMTI3OCwgMjEyODIsIDIxMjg2LCAyMTI5MCwgCi0gICAgMjEyOTQsIDIxMjk4LCAyMTMwMiwgMjEzMDYsIDIxMzEwLCAyMTMxNCwgMjEzMTgsIDIxMzIyLCAyMTMyNiwgMjEzMzAsIAotICAgIDIxMzM0LCAyMTMzOCwgMjEzNDIsIDIxMzQ1LCAyMTM0OSwgMjEzNTMsIDIxMzU3LCAyMTM2MSwgMjEzNjUsIDIxMzY5LCAKLSAgICAyMTM3MywgMjEzNzcsIDIxMzgxLCAyMTM4NSwgMjEzODksIDIxMzkzLCAyMTM5NywgMjE0MDEsIDIxNDA1LCAyMTQwOSwgCi0gICAgMjE0MTMsIDIxNDE3LCAyMTQyMSwgMjE0MjUsIDIxNDI5LCAyMTQzMywgMjE0MzcsIDIxNDQxLCAyMTQ0NSwgMjE0NDksIAotICAgIDIxNDUzLCAyMTQ1NywgMjE0NjEsIDIxNDY1LCAyMTQ2OSwgMjE0NzMsIDIxNDc3LCAyMTQ4MSwgMjE0ODUsIDIxNDg5LCAKLSAgICAyMTQ5MywgMjE0OTcsIDIxNTAxLCAyMTUwNSwgMjE1MDksIDIxNTEzLCAyMTUxNywgMjE1MjEsIDIxNTI1LCAyMTUyOSwgCi0gICAgMjE1MzMsIDAsIDIxNTM3LCAyMTU0MSwgMjE1NDUsIDIxNTQ5LCAwLCAwLCAyMTU1MywgMjE1NTcsIDIxNTYxLCAyMTU2NSwgCi0gICAgMjE1NjksIDIxNTczLCAyMTU3NywgMCwgMjE1ODEsIDAsIDIxNTg1LCAyMTU4OSwgMjE1OTMsIDIxNTk3LCAwLCAwLCAKLSAgICAyMTYwMSwgMjE2MDUsIDIxNjA5LCAyMTYxMywgMjE2MTcsIDIxNjIxLCAyMTYyNSwgMjE2MjksIDIxNjMzLCAyMTYzNywgCi0gICAgMjE2NDEsIDIxNjQ1LCAyMTY0OSwgMjE2NTMsIDIxNjU3LCAyMTY2MSwgMjE2NjUsIDIxNjY5LCAyMTY3MywgMjE2NzcsIAotICAgIDIxNjgxLCAyMTY4NSwgMjE2ODksIDIxNjkyLCAyMTY5NiwgMjE3MDAsIDIxNzA0LCAyMTcwOCwgMjE3MTIsIDIxNzE2LCAKLSAgICAyMTcyMCwgMjE3MjQsIDIxNzI4LCAyMTczMiwgMjE3MzYsIDIxNzQwLCAyMTc0NCwgMjE3NDgsIDIxNzUyLCAyMTc1NiwgCi0gICAgMjE3NjAsIDAsIDIxNzY0LCAyMTc2OCwgMjE3NzIsIDIxNzc2LCAwLCAwLCAyMTc4MCwgMjE3ODQsIDIxNzg4LCAyMTc5MiwgCi0gICAgMjE3OTYsIDIxODAwLCAyMTgwNCwgMjE4MDgsIDIxODEyLCAyMTgxNiwgMjE4MjAsIDIxODI0LCAyMTgyOCwgMjE4MzIsIAotICAgIDIxODM2LCAyMTg0MCwgMjE4NDQsIDIxODQ5LCAyMTg1NCwgMjE4NTksIDIxODY1LCAyMTg3MSwgMjE4NzYsIDIxODgxLCAKLSAgICAyMTg4NywgMjE4OTAsIDIxODk0LCAyMTg5OCwgMjE5MDIsIDIxOTA2LCAyMTkxMCwgMjE5MTQsIDIxOTE4LCAwLCAyMTkyMiwgCi0gICAgMjE5MjYsIDIxOTMwLCAyMTkzNCwgMCwgMCwgMjE5MzgsIDIxOTQyLCAyMTk0NiwgMjE5NTAsIDIxOTU0LCAyMTk1OCwgCi0gICAgMjE5NjIsIDAsIDIxOTY2LCAwLCAyMTk3MCwgMjE5NzQsIDIxOTc4LCAyMTk4MiwgMCwgMCwgMjE5ODYsIDIxOTkwLCAKLSAgICAyMTk5NCwgMjE5OTgsIDIyMDAyLCAyMjAwNiwgMjIwMTAsIDIyMDE0LCAyMjAxOCwgMjIwMjMsIDIyMDI4LCAyMjAzMywgCi0gICAgMjIwMzksIDIyMDQ1LCAyMjA1MCwgMCwgMjIwNTUsIDIyMDU5LCAyMjA2MywgMjIwNjcsIDIyMDcxLCAyMjA3NSwgMjIwNzksIAotICAgIDIyMDgzLCAyMjA4NywgMjIwOTEsIDIyMDk1LCAyMjA5OSwgMjIxMDMsIDIyMTA3LCAyMjExMSwgMjIxMTUsIDIyMTE5LCAKLSAgICAyMjEyMiwgMjIxMjYsIDIyMTMwLCAyMjEzNCwgMjIxMzgsIDIyMTQyLCAyMjE0NiwgMjIxNTAsIDIyMTU0LCAyMjE1OCwgCi0gICAgMjIxNjIsIDIyMTY2LCAyMjE3MCwgMjIxNzQsIDIyMTc4LCAyMjE4MiwgMjIxODYsIDIyMTkwLCAyMjE5NCwgMjIxOTgsIAotICAgIDIyMjAyLCAyMjIwNiwgMjIyMTAsIDIyMjE0LCAyMjIxOCwgMjIyMjIsIDIyMjI2LCAyMjIzMCwgMjIyMzQsIDIyMjM4LCAKLSAgICAyMjI0MiwgMjIyNDYsIDIyMjUwLCAyMjI1NCwgMjIyNTgsIDIyMjYyLCAyMjI2NiwgMjIyNzAsIDIyMjc0LCAyMjI3OCwgMCwgCi0gICAgMjIyODIsIDIyMjg2LCAyMjI5MCwgMjIyOTQsIDAsIDAsIDIyMjk4LCAyMjMwMiwgMjIzMDYsIDIyMzEwLCAyMjMxNCwgCi0gICAgMjIzMTgsIDIyMzIyLCAyMjMyNiwgMjIzMzAsIDIyMzM0LCAyMjMzOCwgMjIzNDIsIDIyMzQ2LCAyMjM1MCwgMjIzNTQsIAotICAgIDIyMzU4LCAyMjM2MiwgMjIzNjYsIDIyMzcwLCAyMjM3NCwgMjIzNzgsIDIyMzgyLCAyMjM4NiwgMjIzOTAsIDIyMzk0LCAKLSAgICAyMjM5OCwgMjI0MDIsIDIyNDA2LCAyMjQxMCwgMjI0MTQsIDIyNDE4LCAyMjQyMiwgMjI0MjYsIDIyNDMwLCAyMjQzNCwgCi0gICAgMjI0MzgsIDIyNDQyLCAyMjQ0NiwgMjI0NTAsIDIyNDU0LCAyMjQ1OCwgMjI0NjIsIDIyNDY2LCAyMjQ3MCwgMjI0NzQsIAotICAgIDIyNDc4LCAyMjQ4MiwgMjI0ODYsIDIyNDkwLCAyMjQ5NCwgMjI0OTgsIDIyNTAyLCAyMjUwNiwgMjI1MTAsIDIyNTE0LCAKLSAgICAyMjUxOCwgMjI1MjIsIDIyNTI1LCAyMjUyOSwgMjI1MzMsIDIyNTM3LCAyMjU0MSwgMjI1NDUsIDIyNTQ5LCAyMjU1MywgCi0gICAgMjI1NTcsIDIyNTYxLCAwLCAwLCAyMjU2NSwgMjI1NzQsIDIyNTgwLCAyMjU4NSwgMjI1ODksIDIyNTkyLCAyMjU5NywgCi0gICAgMjI2MDAsIDIyNjAzLCAyMjYwNiwgMjI2MTEsIDIyNjE1LCAyMjYyMCwgMjI2MjMsIDIyNjI2LCAyMjYyOSwgMjI2MzIsIAotICAgIDIyNjM1LCAyMjYzOCwgMjI2NDIsIDIyNjQ1LCAyMjY0OSwgMjI2NTMsIDIyNjU3LCAyMjY2MSwgMjI2NjUsIDIyNjY5LCAKLSAgICAyMjY3MywgMjI2NzcsIDIyNjgxLCAyMjY4NSwgMjI2ODksIDAsIDAsIDAsIDIyNjk1LCAyMjcwMSwgMjI3MDUsIDIyNzA5LCAKLSAgICAyMjcxMywgMjI3MTksIDIyNzIzLCAyMjcyNywgMjI3MzEsIDIyNzM3LCAyMjc0MSwgMjI3NDUsIDIyNzQ5LCAyMjc1NSwgCi0gICAgMjI3NTksIDIyNzYzLCAyMjc2NywgMjI3NzMsIDIyNzc5LCAyMjc4NSwgMjI3OTMsIDIyNzk5LCAyMjgwNSwgMjI4MTEsIAotICAgIDIyODE3LCAyMjgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMjI4MjksIDIyODMyLCAyMjgzNSwgMjI4MzgsIDIyODQxLCAyMjg0NCwgCi0gICAgMjI4NDgsIDIyODUyLCAyMjg1NSwgMjI4NTksIDIyODYzLCAyMjg2NywgMjI4NzEsIDIyODc1LCAyMjg3OCwgMjI4ODIsIAotICAgIDIyODg2LCAyMjg5MCwgMjI4OTQsIDIyODk4LCAyMjkwMiwgMjI5MDYsIDIyOTEwLCAyMjkxNCwgMjI5MTgsIDIyOTIyLCAKLSAgICAyMjkyNSwgMjI5MjksIDIyOTMzLCAyMjkzNywgMjI5NDEsIDIyOTQ1LCAyMjk0OSwgMjI5NTMsIDIyOTU3LCAyMjk2MSwgCi0gICAgMjI5NjUsIDIyOTY5LCAyMjk3MywgMjI5NzcsIDIyOTgxLCAyMjk4NSwgMjI5ODksIDIyOTkzLCAyMjk5NywgMjMwMDEsIAotICAgIDIzMDA0LCAyMzAwOCwgMjMwMTIsIDIzMDE2LCAyMzAyMCwgMjMwMjQsIDIzMDI4LCAyMzAzMiwgMjMwMzYsIDIzMDQwLCAKLSAgICAyMzA0NCwgMjMwNDgsIDIzMDUyLCAyMzA1NiwgMjMwNjAsIDIzMDY0LCAyMzA2OCwgMjMwNzIsIDIzMDc2LCAyMzA4MCwgCi0gICAgMjMwODQsIDIzMDg4LCAyMzA5MiwgMjMwOTYsIDIzMTAwLCAyMzEwNCwgMjMxMDgsIDIzMTEyLCAyMzExNiwgMjMxMjAsIAotICAgIDIzMTI0LCAyMzEyOCwgMjMxMzIsIDIzMTM2LCAyMzEzOSwgMjMxNDMsIDIzMTQ3LCAyMzE1MSwgMjMxNTUsIDIzMTU5LCAwLCAKLSAgICAwLCAyMzE2MywgMjMxNjgsIDIzMTczLCAyMzE3OCwgMjMxODMsIDIzMTg4LCAwLCAwLCAyMzE5MywgMjMxOTcsIDIzMjAwLCAKLSAgICAyMzIwNCwgMjMyMDcsIDIzMjExLCAyMzIxNCwgMjMyMTgsIDIzMjI0LCAyMzIyOSwgMjMyMzMsIDIzMjM2LCAyMzI0MCwgCi0gICAgMjMyNDQsIDIzMjQ5LCAyMzI1MywgMjMyNTgsIDIzMjYyLCAyMzI2NywgMjMyNzEsIDIzMjc2LCAyMzI4MCwgMjMyODUsIAotICAgIDIzMjkxLCAyMzI5NSwgMjMzMDAsIDIzMzA0LCAyMzMwOSwgMjMzMTUsIDIzMzE5LCAyMzMyNSwgMjMzMzEsIDIzMzM1LCAKLSAgICAyMzM0MCwgMjMzNDgsIDIzMzU2LCAyMzM2MywgMjMzNjgsIDIzMzczLCAyMzM4MiwgMjMzODgsIDIzMzk2LCAyMzQwMSwgCi0gICAgMjM0MDcsIDIzNDExLCAyMzQxNSwgMjM0MTksIDIzNDIzLCAyMzQyNywgMjM0MzEsIDIzNDM1LCAyMzQzOSwgMjM0NDMsIAotICAgIDIzNDQ3LCAyMzQ1MywgMjM0NTgsIDIzNDYzLCAyMzQ2NiwgMjM0NzAsIDIzNDc0LCAyMzQ3OSwgMjM0ODMsIDIzNDg4LCAKLSAgICAyMzQ5MiwgMjM0OTcsIDIzNTAxLCAyMzUwNiwgMjM1MTAsIDIzNTE1LCAyMzUxOSwgMjM1MjQsIDIzNTI4LCAyMzUzMywgCi0gICAgMjM1MzksIDIzNTQzLCAyMzU0OCwgMjM1NTMsIDIzNTU3LCAyMzU2MSwgMjM1NjUsIDIzNTY5LCAyMzU3MiwgMjM1NzYsIAotICAgIDIzNTgyLCAyMzU4NywgMjM1OTIsIDIzNTk2LCAyMzYwMCwgMjM2MDQsIDIzNjA5LCAyMzYxMywgMjM2MTgsIDIzNjIyLCAKLSAgICAyMzYyNywgMjM2MzAsIDIzNjM0LCAyMzYzOCwgMjM2NDMsIDIzNjQ3LCAyMzY1MiwgMjM2NTYsIDIzNjYxLCAyMzY2NywgCi0gICAgMjM2NzEsIDIzNjc1LCAyMzY3OSwgMjM2ODMsIDIzNjg3LCAyMzY5MSwgMjM2OTUsIDIzNjk5LCAyMzcwMywgMjM3MDcsIAotICAgIDIzNzExLCAyMzcxNywgMjM3MjAsIDIzNzI0LCAyMzcyOCwgMjM3MzMsIDIzNzM3LCAyMzc0MiwgMjM3NDYsIDIzNzUxLCAKLSAgICAyMzc1NSwgMjM3NjAsIDIzNzY0LCAyMzc2OSwgMjM3NzMsIDIzNzc4LCAyMzc4MiwgMjM3ODcsIDIzNzkzLCAyMzc5NywgCi0gICAgMjM4MDEsIDIzODA3LCAyMzgxMywgMjM4MTksIDIzODI1LCAyMzgyOSwgMjM4MzMsIDIzODM3LCAyMzg0MSwgMjM4NDUsIAotICAgIDIzODQ5LCAyMzg1NSwgMjM4NTksIDIzODYzLCAyMzg2NywgMjM4NzIsIDIzODc2LCAyMzg4MSwgMjM4ODUsIDIzODkwLCAKLSAgICAyMzg5NCwgMjM4OTksIDIzOTAzLCAyMzkwOCwgMjM5MTIsIDIzOTE3LCAyMzkyMSwgMjM5MjYsIDIzOTMyLCAyMzkzNiwgCi0gICAgMjM5NDIsIDIzOTQ2LCAyMzk1MCwgMjM5NTQsIDIzOTU4LCAyMzk2MiwgMjM5NjYsIDIzOTcyLCAyMzk3NSwgMjM5NzksIAotICAgIDIzOTgzLCAyMzk4OCwgMjM5OTIsIDIzOTk3LCAyNDAwMSwgMjQwMDYsIDI0MDEwLCAyNDAxNSwgMjQwMTksIDI0MDI0LCAKLSAgICAyNDAyOCwgMjQwMzMsIDI0MDM3LCAyNDA0MiwgMjQwNDgsIDI0MDUyLCAyNDA1NywgMjQwNjEsIDI0MDY3LCAyNDA3MywgCi0gICAgMjQwNzcsIDI0MDgxLCAyNDA4NSwgMjQwODksIDI0MDkzLCAyNDA5NywgMjQxMDMsIDI0MTA3LCAyNDExMSwgMjQxMTUsIAotICAgIDI0MTIwLCAyNDEyNCwgMjQxMjksIDI0MTMzLCAyNDEzOCwgMjQxNDQsIDI0MTQ4LCAyNDE1MywgMjQxNTcsIDI0MTYxLCAKLSAgICAyNDE2NSwgMjQxNjksIDI0MTczLCAyNDE3NywgMjQxODEsIDI0MTg3LCAyNDE5MSwgMjQxOTUsIDI0MTk5LCAyNDIwNCwgCi0gICAgMjQyMDgsIDI0MjEzLCAyNDIxNywgMjQyMjIsIDI0MjI2LCAyNDIzMSwgMjQyMzUsIDI0MjQwLCAyNDI0NCwgMjQyNDksIAotICAgIDI0MjUzLCAyNDI1OCwgMjQyNjEsIDI0MjY1LCAyNDI2OSwgMjQyNzMsIDI0Mjc3LCAyNDI4MSwgMjQyODUsIDI0Mjg5LCAKLSAgICAyNDI5MywgMjQyOTksIDI0MzAzLCAyNDMwNywgMjQzMTEsIDI0MzE2LCAyNDMyMCwgMjQzMjUsIDI0MzI5LCAyNDMzNCwgCi0gICAgMjQzMzgsIDI0MzQzLCAyNDM0NywgMjQzNTIsIDI0MzU2LCAyNDM2MSwgMjQzNjUsIDI0MzcwLCAyNDM3NiwgMjQzNzksIAotICAgIDI0Mzg0LCAyNDM4OCwgMjQzOTMsIDI0Mzk5LCAyNDQwNSwgMjQ0MTEsIDI0NDE3LCAyNDQyMywgMjQ0MjksIDI0NDM1LCAKLSAgICAyNDQzOSwgMjQ0NDMsIDI0NDQ3LCAyNDQ1MSwgMjQ0NTUsIDI0NDU5LCAyNDQ2MywgMjQ0NjcsIDI0NDcyLCAyNDQ3NiwgCi0gICAgMjQ0ODEsIDI0NDg1LCAyNDQ5MCwgMjQ0OTQsIDI0NDk5LCAyNDUwMywgMjQ1MDgsIDI0NTEyLCAyNDUxNywgMjQ1MjEsIAotICAgIDI0NTI2LCAyNDUzMCwgMjQ1MzQsIDI0NTM4LCAyNDU0MiwgMjQ1NDYsIDI0NTUwLCAyNDU1NCwgMjQ1NjAsIDI0NTYzLCAKLSAgICAyNDU2NywgMjQ1NzEsIDI0NTc2LCAyNDU4MCwgMjQ1ODUsIDI0NTg5LCAyNDU5NCwgMjQ1OTgsIDI0NjAzLCAyNDYwNywgCi0gICAgMjQ2MTIsIDI0NjE2LCAyNDYyMSwgMjQ2MjUsIDI0NjMwLCAyNDYzNiwgMjQ2NDAsIDI0NjQ2LCAyNDY1MSwgMjQ2NTcsIAotICAgIDI0NjYxLCAyNDY2NywgMjQ2NzIsIDI0Njc2LCAyNDY4MCwgMjQ2ODQsIDI0Njg4LCAyNDY5MiwgMjQ2OTcsIDI0NzAxLCAKLSAgICAyNDcwNSwgMjQ3MTAsIDI0NzE0LCAyNDcxOSwgMjQ3MjIsIDI0NzI2LCAyNDczMCwgMjQ3MzQsIDI0NzM4LCAyNDc0MiwgCi0gICAgMjQ3NDYsIDI0NzUwLCAyNDc1NCwgMjQ3NTgsIDI0NzYyLCAyNDc2NiwgMjQ3NzEsIDI0Nzc1LCAyNDc3OSwgMjQ3ODUsIAotICAgIDI0Nzg5LCAyNDc5NSwgMjQ3OTksIDI0ODA1LCAyNDgwOSwgMjQ4MTMsIDI0ODE3LCAyNDgyMSwgMjQ4MjUsIDI0ODMwLCAKLSAgICAyNDgzNCwgMjQ4MzgsIDI0ODQyLCAyNDg0NiwgMjQ4NTAsIDI0ODU0LCAyNDg1OCwgMjQ4NjIsIDI0ODY2LCAyNDg3MCwgCi0gICAgMjQ4NzYsIDI0ODgyLCAyNDg4OCwgMjQ4OTQsIDI0OTAwLCAyNDkwNSwgMjQ5MTEsIDI0OTE3LCAyNDkyMywgMjQ5MjcsIAotICAgIDI0OTMxLCAyNDkzNSwgMjQ5MzksIDI0OTQzLCAyNDk0NywgMjQ5NTEsIDI0OTU1LCAyNDk1OSwgMjQ5NjMsIDI0OTY3LCAKLSAgICAyNDk3MSwgMjQ5NzUsIDI0OTgwLCAyNDk4NSwgMjQ5OTAsIDI0OTk1LCAyNDk5OSwgMjUwMDMsIDI1MDA3LCAyNTAxMSwgCi0gICAgMjUwMTUsIDI1MDE5LCAyNTAyMywgMjUwMjcsIDI1MDMxLCAyNTAzNywgMjUwNDMsIDI1MDQ5LCAyNTA1NSwgMjUwNjEsIAotICAgIDI1MDY3LCAyNTA3MywgMjUwNzksIDI1MDg1LCAyNTA4OSwgMjUwOTMsIDI1MDk3LCAyNTEwMSwgMjUxMDUsIDI1MTA5LCAKLSAgICAyNTExMywgMjUxMTksIDI1MTI1LCAyNTEzMSwgMjUxMzcsIDI1MTQzLCAyNTE0OSwgMjUxNTUsIDI1MTYxLCAyNTE2NywgCi0gICAgMjUxNzIsIDI1MTc3LCAyNTE4MiwgMjUxODcsIDI1MTkzLCAyNTE5OSwgMjUyMDUsIDI1MjExLCAyNTIxNywgMjUyMjMsIAotICAgIDI1MjI5LCAyNTIzNSwgMjUyNDEsIDI1MjQ3LCAyNTI1MywgMjUyNTgsIDI1MjY0LCAyNTI3MCwgMjUyNzYsIDI1MjgxLCAKLSAgICAyNTI4NiwgMjUyOTEsIDI1Mjk2LCAyNTMwMSwgMjUzMDYsIDI1MzExLCAyNTMxNiwgMjUzMjEsIDI1MzI2LCAyNTMzMSwgCi0gICAgMjUzMzYsIDI1MzQxLCAyNTM0NiwgMjUzNTEsIDI1MzU2LCAyNTM2MSwgMjUzNjYsIDI1MzcxLCAyNTM3NiwgMjUzODEsIAotICAgIDI1Mzg2LCAyNTM5MSwgMjUzOTYsIDI1NDAxLCAyNTQwNiwgMjU0MTEsIDI1NDE2LCAyNTQyMSwgMjU0MjYsIDI1NDMxLCAKLSAgICAyNTQzNiwgMjU0NDEsIDI1NDQ2LCAyNTQ1MSwgMjU0NTYsIDI1NDYxLCAyNTQ2NiwgMjU0NzEsIDI1NDc2LCAyNTQ4MSwgCi0gICAgMjU0ODYsIDI1NDkwLCAyNTQ5NSwgMjU1MDAsIDI1NTA1LCAyNTUxMCwgMjU1MTUsIDI1NTIwLCAyNTUyNSwgMjU1MzAsIAotICAgIDI1NTM1LCAyNTU0MCwgMjU1NDUsIDI1NTUwLCAyNTU1NSwgMjU1NjAsIDI1NTY1LCAyNTU3MCwgMjU1NzUsIDI1NTgwLCAKLSAgICAyNTU4NSwgMjU1OTAsIDI1NTk1LCAyNTYwMCwgMjU2MDUsIDI1NjEwLCAyNTYxNSwgMjU2MjAsIDI1NjI1LCAyNTYzMCwgCi0gICAgMjU2MzUsIDI1NjQwLCAyNTY0NSwgMjU2NDksIDI1NjU0LCAyNTY1OSwgMjU2NjQsIDI1NjY5LCAyNTY3NCwgMjU2NzgsIAotICAgIDI1NjgzLCAyNTY4OSwgMjU2OTQsIDI1Njk5LCAyNTcwNCwgMjU3MDksIDI1NzE1LCAyNTcyMCwgMjU3MjUsIDI1NzMwLCAKLSAgICAyNTczNSwgMjU3NDAsIDI1NzQ1LCAyNTc1MCwgMjU3NTUsIDI1NzYwLCAyNTc2NSwgMjU3NzAsIDI1Nzc1LCAyNTc4MCwgCi0gICAgMjU3ODUsIDI1NzkwLCAyNTc5NSwgMjU4MDAsIDI1ODA1LCAyNTgxMCwgMjU4MTUsIDI1ODIwLCAyNTgyNSwgMjU4MzAsIAotICAgIDI1ODM1LCAyNTg0MCwgMjU4NDUsIDI1ODUwLCAyNTg1NSwgMjU4NjAsIDI1ODY1LCAyNTg3MCwgMjU4NzUsIDI1ODgwLCAKLSAgICAyNTg4NSwgMjU4OTAsIDI1ODk1LCAyNTkwMCwgMjU5MDUsIDI1OTEwLCAyNTkxNSwgMjU5MjAsIDI1OTI1LCAyNTkzMCwgCi0gICAgMjU5MzUsIDI1OTQxLCAyNTk0NiwgMjU5NTEsIDI1OTU2LCAyNTk2MSwgMjU5NjYsIDI1OTcxLCAyNTk3NiwgMjU5ODEsIAotICAgIDI1OTg2LCAyNTk5MSwgMjU5OTYsIDI2MDAxLCAyNjAwNiwgMjYwMTEsIDI2MDE2LCAyNjAyMSwgMjYwMjYsIDI2MDMxLCAKLSAgICAyNjAzNiwgMjYwNDEsIDI2MDQ2LCAyNjA1MSwgMjYwNTYsIDI2MDYxLCAyNjA2NiwgMjYwNzEsIDI2MDc2LCAyNjA4MSwgCi0gICAgMjYwODYsIDI2MDkxLCAyNjA5NiwgMjYxMDEsIDI2MTA2LCAyNjExMSwgMjYxMTYsIDI2MTIxLCAyNjEyNiwgMjYxMzEsIAotICAgIDI2MTM3LCAyNjE0MSwgMjYxNDUsIDI2MTQ5LCAyNjE1MywgMjYxNTcsIDI2MTYxLCAyNjE2NSwgMjYxNjksIDI2MTc1LCAKLSAgICAyNjE4MSwgMjYxODcsIDI2MTkzLCAyNjE5OSwgMjYyMDUsIDI2MjExLCAyNjIxOCwgMjYyMjQsIDI2MjI5LCAyNjIzNCwgCi0gICAgMjYyMzksIDI2MjQ0LCAyNjI0OSwgMjYyNTQsIDI2MjU5LCAyNjI2NCwgMjYyNjksIDI2Mjc0LCAyNjI3OSwgMjYyODQsIAotICAgIDI2Mjg5LCAyNjI5NCwgMjYyOTksIDI2MzA0LCAyNjMwOSwgMjYzMTQsIDI2MzE5LCAyNjMyNCwgMjYzMjksIDI2MzM0LCAKLSAgICAyNjMzOSwgMjYzNDQsIDI2MzQ5LCAyNjM1NCwgMjYzNTksIDI2MzY0LCAwLCAwLCAwLCAyNjM3MSwgMjYzODEsIDI2Mzg1LCAKLSAgICAyNjM5MiwgMjYzOTYsIDI2NDAwLCAyNjQwNCwgMjY0MTIsIDI2NDE2LCAyNjQyMSwgMjY0MjYsIDI2NDMxLCAyNjQzNSwgCi0gICAgMjY0NDAsIDI2NDQ1LCAyNjQ0OCwgMjY0NTIsIDI2NDU2LCAyNjQ2NSwgMjY0NjksIDI2NDczLCAyNjQ3OSwgMjY0ODMsIAotICAgIDI2NDg3LCAyNjQ5NSwgMjY0OTksIDI2NTA3LCAyNjUxMywgMjY1MTksIDI2NTI1LCAyNjUzMSwgMjY1NDEsIDI2NTQ3LCAKLSAgICAyNjU1MSwgMjY1NjAsIDI2NTYzLCAyNjU2OSwgMjY1NzMsIDI2NTc5LCAyNjU4NCwgMjY1OTAsIDI2NTk4LCAyNjYwNCwgCi0gICAgMjY2MDksIDI2NjE2LCAyNjYyMSwgMjY2MjUsIDI2NjI5LCAyNjYzOSwgMjY2NDUsIDI2NjQ5LCAyNjY1OSwgMjY2NjUsIAotICAgIDI2NjY5LCAyNjY3MywgMjY2ODAsIDI2Njg4LCAyNjY5NCwgMjY3MDAsIDI2NzA5LCAyNjcxMywgMjY3MTcsIDI2NzIxLCAKLSAgICAyNjcyOSwgMjY3MzYsIDI2NzQwLCAyNjc0NCwgMjY3NDgsIDI2NzUyLCAyNjc1NiwgMjY3NjAsIDI2NzY0LCAyNjc2OCwgCi0gICAgMjY3NzIsIDI2Nzc2LCAyNjc4MCwgMjY3ODUsIDI2NzkwLCAyNjc5NSwgMjY3OTksIDI2ODAzLCAyNjgwNywgMjY4MTEsIAotICAgIDI2ODE1LCAyNjgxOSwgMjY4MjcsIDI2ODM1LCAyNjg0MywgMjY4NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2ODU5LCAKLSAgICAyNjg2MywgMjY4NjcsIDI2ODcxLCAyNjg3NSwgMjY4ODAsIDI2ODg1LCAyNjg5MCwgMjY4OTUsIDI2OTAwLCAyNjkwNCwgCi0gICAgMjY5MDksIDI2OTEzLCAwLCAyNjkxNywgMjY5MjIsIDI2OTI3LCAyNjkzMiwgMjY5MzYsIDI2OTQxLCAyNjk0NiwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjY5NTEsIDI2OTU1LCAyNjk1OSwgMjY5NjMsIDI2OTY3LCAyNjk3MiwgCi0gICAgMjY5NzcsIDI2OTgyLCAyNjk4NywgMjY5OTIsIDI2OTk2LCAyNzAwMSwgMjcwMDUsIDI3MDA5LCAyNzAxNCwgMjcwMTksIAotICAgIDI3MDI0LCAyNzAyOSwgMjcwMzMsIDI3MDM4LCAyNzA0MywgMjcwNDgsIDI3MDU0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNzA1OSwgMjcwNjMsIDI3MDY3LCAyNzA3MSwgMjcwNzUsIDI3MDgwLCAyNzA4NSwgMjcwOTAsIDI3MDk1LCAyNzEwMCwgCi0gICAgMjcxMDQsIDI3MTA5LCAyNzExMywgMjcxMTcsIDI3MTIyLCAyNzEyNywgMjcxMzIsIDI3MTM3LCAyNzE0MSwgMjcxNDYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MTUxLCAyNzE1NSwgMjcxNTksIDI3MTYzLCAyNzE2NywgCi0gICAgMjcxNzIsIDI3MTc3LCAyNzE4MiwgMjcxODcsIDI3MTkyLCAyNzE5NiwgMjcyMDEsIDI3MjA1LCAwLCAyNzIwOSwgMjcyMTQsIAotICAgIDI3MjE5LCAwLCAyNzIyNCwgMjcyMjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3MjM0LCAyNzIzNywgCi0gICAgMjcyNDEsIDI3MjQ1LCAyNzI0OSwgMjcyNTMsIDI3MjU3LCAyNzI2MSwgMjcyNjUsIDI3MjY5LCAyNzI3MywgMjcyNzcsIAotICAgIDI3MjgxLCAyNzI4NSwgMjcyODksIDI3MjkzLCAyNzI5NywgMjczMDEsIDI3MzA0LCAyNzMwOCwgMjczMTIsIDI3MzE2LCAKLSAgICAyNzMyMCwgMjczMjQsIDI3MzI4LCAyNzMzMiwgMjczMzYsIDI3MzQwLCAyNzM0NCwgMjczNDgsIDI3MzUyLCAyNzM1NiwgCi0gICAgMjczNjAsIDI3MzYzLCAyNzM2NywgMjczNzEsIDI3Mzc3LCAyNzM4MywgMjczODksIDI3Mzk1LCAyNzQwMSwgMjc0MDcsIAotICAgIDI3NDEzLCAyNzQxOSwgMjc0MjUsIDI3NDMxLCAyNzQzNywgMjc0NDMsIDI3NDQ5LCAyNzQ1NSwgMjc0NjQsIDI3NDczLCAKLSAgICAyNzQ3OSwgMjc0ODUsIDI3NDkxLCAyNzQ5NiwgMjc1MDAsIDI3NTA1LCAyNzUxMCwgMjc1MTUsIDI3NTE5LCAyNzUyNCwgCi0gICAgMjc1MjksIDI3NTM0LCAyNzUzOCwgMjc1NDMsIDI3NTQ3LCAyNzU1MiwgMjc1NTcsIDI3NTYyLCAyNzU2NywgMjc1NzEsIAotICAgIDI3NTc1LCAyNzU3OSwgMjc1ODMsIDI3NTg3LCAyNzU5MSwgMjc1OTUsIDI3NTk5LCAyNzYwMywgMjc2MDcsIDI3NjEzLCAKLSAgICAyNzYxNywgMjc2MjEsIDI3NjI1LCAyNzYyOSwgMjc2MzMsIDI3NjQxLCAyNzY0NywgMjc2NTEsIDI3NjU3LCAyNzY2MSwgCi0gICAgMjc2NjcsIDI3NjcxLCAwLCAwLCAyNzY3NSwgMjc2NzksIDI3NjgyLCAyNzY4NSwgMjc2ODgsIDI3NjkxLCAyNzY5NCwgCi0gICAgMjc2OTcsIDI3NzAxLCAyNzcwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMjc3MDgsIDI3NzE2LCAyNzcyNCwgMjc3MzIsIDI3NzQwLCAKLSAgICAyNzc0OCwgMjc3NTYsIDI3NzY0LCAyNzc3MiwgMjc3ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3Nzg4LCAyNzc5MSwgMjc3OTQsIAotICAgIDI3Nzk3LCAyNzgwMiwgMjc4MDUsIDI3ODEwLCAyNzgxNywgMjc4MjUsIDI3ODMwLCAyNzgzNywgMjc4NDAsIDI3ODQ3LCAKLSAgICAyNzg1NCwgMjc4NjEsIDAsIDI3ODY1LCAyNzg2OSwgMjc4NzIsIDI3ODc1LCAyNzg3OCwgMjc4ODEsIDI3ODg0LCAyNzg4NywgCi0gICAgMjc4OTEsIDI3ODk0LCAwLCAwLCAwLCAwLCAwLCAwLCAyNzg5OCwgMjc5MDEsIDI3OTA0LCAyNzkwNywgMjc5MTAsIDI3OTEzLCAKLSAgICAyNzkxNywgMjc5MjEsIDI3OTI1LCAyNzkyOSwgMjc5MzMsIDI3OTM3LCAyNzk0MCwgMjc5NDQsIDI3OTQ4LCAyNzk1MSwgCi0gICAgMjc5NTUsIDI3OTU5LCAyNzk2MywgMjc5NjcsIDI3OTcxLCAyNzk3NSwgMjc5NzksIDI3OTgyLCAyNzk4NiwgMjc5OTAsIAotICAgIDI3OTk0LCAyNzk5NywgMjgwMDEsIDI4MDA1LCAyODAwOSwgMjgwMTMsIDI4MDE3LCAyODAyMSwgMjgwMjUsIDI4MDI5LCAKLSAgICAyODAzNiwgMjgwNDEsIDI4MDQ2LCAyODA1MSwgMjgwNTYsIDI4MDYyLCAyODA2OCwgMjgwNzQsIDI4MDgwLCAyODA4NSwgCi0gICAgMjgwOTEsIDI4MDk3LCAyODEwMiwgMjgxMDgsIDI4MTE0LCAyODEyMCwgMjgxMjYsIDI4MTMyLCAyODEzNywgMjgxNDMsIAotICAgIDI4MTQ4LCAyODE1NCwgMjgxNjAsIDI4MTY2LCAyODE3MiwgMjgxNzgsIDI4MTgzLCAyODE4OCwgMjgxOTQsIDI4MjAwLCAKLSAgICAyODIwNSwgMjgyMTEsIDI4MjE2LCAyODIyMiwgMjgyMjcsIDI4MjMyLCAyODIzOCwgMjgyNDQsIDI4MjUwLCAyODI1NiwgCi0gICAgMjgyNjIsIDI4MjY4LCAyODI3NCwgMjgyODAsIDI4Mjg2LCAyODI5MiwgMjgyOTgsIDI4MzA0LCAyODMwOSwgMjgzMTQsIAotICAgIDI4MzIwLCAyODMyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjgzMzIsIDI4MzQxLCAyODM1MCwgMjgzNTgsIDI4MzY2LCAKLSAgICAyODM3NiwgMjgzODQsIDI4MzkzLCAyODQwMCwgMjg0MDcsIDI4NDE0LCAyODQyMiwgMjg0MzAsIDI4NDM4LCAyODQ0NiwgCi0gICAgMjg0NTQsIDI4NDYyLCAyODQ3MCwgMjg0NzgsIDI4NDg1LCAyODQ5MywgMjg1MDEsIDI4NTA5LCAyODUxNywgMjg1MjUsIAotICAgIDI4NTM1LCAyODU0NSwgMjg1NTUsIDI4NTY1LCAyODU3NSwgMjg1ODUsIDI4NTk1LCAyODYwNSwgMjg2MTUsIDI4NjI1LCAKLSAgICAyODYzNSwgMjg2NDUsIDI4NjU1LCAyODY2NSwgMjg2NzMsIDI4NjgxLCAyODY5MSwgMjg2OTksIDAsIDAsIDAsIDAsIDAsIAotICAgIDI4NzA5LCAyODcxMywgMjg3MTcsIDI4NzIxLCAyODcyNSwgMjg3MjksIDI4NzMzLCAyODczNywgMjg3NDEsIDI4NzQ1LCAKLSAgICAyODc0OSwgMjg3NTMsIDI4NzU3LCAyODc2MSwgMjg3NjUsIDI4NzY5LCAyODc3MywgMjg3NzcsIDI4NzgxLCAyODc4NSwgCi0gICAgMjg3ODksIDI4NzkzLCAyODc5NywgMjg4MDEsIDI4ODA3LCAyODgxMSwgMjg4MTcsIDI4ODIxLCAyODgyNywgMjg4MzEsIAotICAgIDI4ODM3LCAyODg0MSwgMjg4NDUsIDI4ODQ5LCAyODg1MywgMjg4NTcsIDI4ODYxLCAyODg2NywgMjg4NzMsIDI4ODc5LCAKLSAgICAyODg4NSwgMjg4OTEsIDI4ODk3LCAyODkwMiwgMjg5MDgsIDI4OTE0LCAyODkyMCwgMjg5MjYsIDI4OTMzLCAyODkzOSwgCi0gICAgMjg5NDQsIDI4OTQ5LCAyODk1MywgMjg5NTcsIDI4OTYxLCAyODk2NSwgMjg5NjksIDI4OTczLCAyODk3NywgMjg5ODMsIAotICAgIDI4OTg5LCAyODk5NSwgMjkwMDAsIDI5MDA3LCAyOTAxMiwgMjkwMTcsIDI5MDIzLCAyOTAyOCwgMjkwMzUsIDI5MDQyLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyOTA0OCwgMjkwNTQsIDI5MDU4LCAyOTA2MywgMjkwNjgsIDI5MDczLCAKLSAgICAyOTA3OCwgMjkwODMsIDI5MDg4LCAyOTA5MywgMjkwOTgsIDI5MTAzLCAyOTEwOCwgMjkxMTMsIDI5MTE4LCAyOTEyMywgCi0gICAgMjkxMjgsIDI5MTMyLCAyOTEzNywgMjkxNDIsIDI5MTQ3LCAyOTE1MSwgMjkxNTUsIDI5MTYwLCAyOTE2NSwgMjkxNzAsIAotICAgIDI5MTc1LCAyOTE4MCwgMjkxODUsIDI5MTg5LCAyOTE5NCwgMCwgMjkxOTksIDI5MjA0LCAyOTIwOSwgMjkyMTQsIDI5MjIwLCAKLSAgICAyOTIyNiwgMjkyMzIsIDI5MjM4LCAyOTI0MywgMjkyNDgsIDI5MjU0LCAyOTI2MSwgMCwgMCwgMCwgMCwgMjkyNjgsIAotICAgIDI5MjczLCAyOTI3OSwgMjkyODUsIDI5MjkxLCAyOTI5NywgMjkzMDIsIDI5MzA3LCAyOTMxMywgMjkzMTksIDI5MzI0LCAKLSAgICAyOTMyOSwgMCwgMCwgMCwgMCwgMjkzMzQsIDAsIDAsIDAsIDI5MzM5LCAyOTM0NCwgMjkzNDksIDI5MzU0LCAyOTM1OCwgCi0gICAgMjkzNjIsIDI5MzY2LCAyOTM3MCwgMjkzNzQsIDI5Mzc4LCAyOTM4MywgMjkzODcsIDI5MzkyLCAyOTM5NywgMjk0MDMsIAotICAgIDI5NDA5LCAyOTQxNSwgMjk0MjEsIDI5NDI2LCAyOTQzMiwgMjk0MzgsIDI5NDQ0LCAyOTQ0OSwgMjk0NTUsIDI5NDYwLCAKLSAgICAyOTQ2NiwgMjk0NzIsIDI5NDc3LCAyOTQ4MywgMjk0ODksIDI5NDk1LCAyOTUwMSwgMjk1MDYsIDI5NTExLCAyOTUxNywgCi0gICAgMjk1MjMsIDI5NTI4LCAyOTUzNCwgMjk1MzksIDI5NTQ1LCAyOTU1MCwgMjk1NTYsIDAsIDAsIDI5NTYyLCAyOTU2OCwgCi0gICAgMjk1NzQsIDI5NTgwLCAyOTU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjk1OTIsIDI5NjAxLCAKLSAgICAyOTYxMCwgMjk2MTgsIDI5NjI3LCAyOTYzNiwgMjk2NDQsIDI5NjUzLCAyOTY2MiwgMjk2NzEsIDI5NjgwLCAyOTY4OCwgCi0gICAgMjk2OTcsIDI5NzA2LCAyOTcxNCwgMjk3MjMsIDI5NzMyLCAyOTc0MSwgMjk3NTAsIDI5NzU5LCAyOTc2OCwgMjk3NzYsIAotICAgIDI5Nzg1LCAyOTc5MywgMjk4MDEsIDI5ODEwLCAyOTgxOCwgMjk4MjcsIDI5ODM2LCAyOTg0NSwgMjk4NTQsIDI5ODYzLCAKLSAgICAyOTg3MiwgMjk4ODAsIDI5ODg5LCAyOTg5OCwgMjk5MDYsIDI5OTE1LCAyOTkyNCwgMjk5MzMsIDI5OTQyLCAyOTk1MSwgCi0gICAgMjk5NjAsIDI5OTY5LCAwLCAwLCAwLCAwLCAyOTk3OCwgMjk5ODgsIDI5OTk3LCAzMDAwNiwgMzAwMTQsIDMwMDIzLCAKLSAgICAzMDAzMSwgMzAwNDAsIDMwMDQ4LCAzMDA1NywgMzAwNjYsIDMwMDc1LCAzMDA4NCwgMzAwOTMsIDMwMTAyLCAzMDExMSwgCi0gICAgMzAxMjAsIDMwMTI5LCAzMDEzOCwgMzAxNDcsIDMwMTU2LCAzMDE2NSwgMzAxNzQsIDMwMTgzLCAzMDE5MiwgMzAyMDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDMwMjA4LCAzMDIxNiwgMzAyMjMsIDMwMjMwLCAzMDIzNywgMzAyNDQsIDMwMjUxLCAzMDI1OCwgCi0gICAgMzAyNjYsIDMwMjczLCAzMDI4MSwgMCwgMCwgMCwgMzAyODksIDMwMjk3LCAzMDMwNSwgMzAzMDksIDMwMzE1LCAzMDMyMSwgCi0gICAgMzAzMjcsIDMwMzMzLCAzMDMzOSwgMzAzNDUsIDMwMzUxLCAzMDM1NywgMzAzNjMsIDMwMzY5LCAzMDM3NSwgMzAzODEsIAotICAgIDMwMzg3LCAzMDM5MywgMzAzOTksIDMwNDAzLCAzMDQwOSwgMzA0MTUsIDMwNDIxLCAzMDQyNywgMzA0MzMsIDMwNDM5LCAKLSAgICAzMDQ0NSwgMzA0NTEsIDMwNDU3LCAzMDQ2MywgMzA0NjksIDMwNDc1LCAzMDQ4MSwgMzA0ODcsIDMwNDkzLCAzMDQ5NywgCi0gICAgMzA1MDIsIDMwNTA3LCAzMDUxMiwgMzA1MTYsIDMwNTIxLCAzMDUyNSwgMzA1MzAsIDMwNTM1LCAzMDU0MCwgMzA1NDUsIAotICAgIDMwNTUwLCAzMDU1NSwgMzA1NjAsIDMwNTY1LCAzMDU3MCwgMzA1NzQsIDMwNTc5LCAzMDU4NCwgMzA1ODksIDMwNTk0LCAKLSAgICAzMDU5OCwgMzA2MDIsIDMwNjA3LCAzMDYxMiwgMzA2MTcsIDMwNjIyLCAwLCAwLCAzMDYyOCwgMzA2MzIsIDMwNjM5LCAKLSAgICAzMDY0NCwgMzA2NTAsIDMwNjU2LCAzMDY2MSwgMzA2NjcsIDMwNjczLCAzMDY3OCwgMzA2ODQsIDMwNjkwLCAzMDY5NiwgCi0gICAgMzA3MDIsIDMwNzA4LCAzMDcxMywgMzA3MTgsIDMwNzI0LCAzMDcyOSwgMzA3MzUsIDMwNzQwLCAzMDc0NiwgMzA3NTIsIAotICAgIDMwNzU4LCAzMDc2NCwgMzA3NjksIDMwNzc0LCAzMDc3OSwgMzA3ODUsIDMwNzkxLCAzMDc5NiwgMzA4MDIsIDMwODA4LCAKLSAgICAzMDgxMiwgMzA4MTcsIDMwODIyLCAzMDgyNywgMzA4MzIsIDMwODM3LCAzMDg0MiwgMzA4NDcsIDMwODUzLCAzMDg1OSwgCi0gICAgMzA4NjUsIDMwODcwLCAzMDg3NSwgMzA4NzksIDMwODg0LCAzMDg4OCwgMzA4OTMsIDMwODk3LCAzMDkwMiwgMzA5MDcsIAotICAgIDMwOTEyLCAzMDkxNywgMzA5MjQsIDMwOTMxLCAzMDkzOCwgMzA5NDgsIDMwOTU3LCAzMDk2NCwgMzA5NzAsIDMwOTgxLCAKLSAgICAzMDk4NiwgMzA5OTIsIDAsIDMwOTk4LCAzMTAwMywgMzEwMDgsIDMxMDE2LCAzMTAyMiwgMzEwMzAsIDMxMDM1LCAzMTA0MSwgCi0gICAgMzEwNDcsIDMxMDUzLCAzMTA1OCwgMzEwNjQsIDMxMDY5LCAzMTA3NiwgMzEwODIsIDMxMDg3LCAzMTA5MywgMzEwOTksIAotICAgIDMxMTA1LCAzMTExMiwgMzExMTksIDMxMTI2LCAzMTEzMSwgMzExMzYsIDMxMTQzLCAzMTE1MCwgMzExNTcsIDMxMTY0LCAKLSAgICAzMTE3MSwgMCwgMCwgMzExNzgsIDMxMTg1LCAzMTE5MiwgMzExOTgsIDMxMjA0LCAzMTIxMCwgMzEyMTYsIDMxMjIyLCAKLSAgICAzMTIyOCwgMzEyMzUsIDMxMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAzMTI0OCwgMzEyNTQsIDMxMjU5LCAzMTI2NCwgMzEyNjksIAotICAgIDMxMjc0LCAzMTI3OSwgMzEyODQsIDMxMjkwLCAzMTI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMzEzMDEsIDMxMzA2LCAzMTMxMSwgCi0gICAgMzEzMTYsIDMxMzIxLCAzMTMyNiwgMzEzMzEsIDMxMzQwLCAzMTM0NywgMzEzNTIsIDMxMzU3LCAzMTM2MiwgMzEzNjcsIAotICAgIDMxMzcyLCAwLCAwLCAzMTM3NywgMzEzODQsIDMxMzg3LCAzMTM5MCwgMzEzOTMsIDMxMzk4LCAzMTQwMiwgMzE0MDgsIAotICAgIDMxNDEyLCAzMTQxNywgMzE0MjQsIDMxNDMyLCAzMTQzNiwgMzE0NDEsIDMxNDQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzNDA4MCwgMzQwODgsIDM0MDk2LCAzNDEwNCwgCisgICAgMzQxMTIsIDM0MTIyLCAzNDEzMiwgMzQxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM0MTUyLCAzNDE1NywgMzQxNjIsIAorICAgIDM0MTY3LCAzNDE3MiwgMzQxODEsIDM0MTkyLCAzNDIwMSwgMzQyMTIsIDM0MjE4LCAzNDIzMSwgMzQyMzcsIDM0MjQ0LCAKKyAgICAzNDI1MSwgMzQyNTYsIDM0MjYyLCAzNDI2OCwgMzQyNzksIDM0Mjg4LCAzNDI5NSwgMzQzMDIsIDM0MzExLCAzNDMxOCwgCisgICAgMzQzMjcsIDM0MzM3LCAzNDM0NywgMzQzNTQsIDM0MzYxLCAzNDM2OCwgMzQzNzgsIDM0MzgzLCAzNDM5MSwgMzQzOTcsIAorICAgIDM0NDA1LCAzNDQxNCwgMzQ0MTksIDM0NDI2LCAzNDQzMiwgMzQ0MzcsIDAsIDM0NDQyLCAzNDQ0OCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMzQ0NTUsIDM0NDYwLCAzNDQ2NiwgMzQ0NzMsIDM0NDgxLCAzNDQ4NywgMzQ0OTMsIDM0NDk5LCAzNDUwNCwgMzQ1MTEsIAorICAgIDM0NTE3LCAzNDUyMywgMzQ1MjksIDM0NTM3LCAzNDU0MywgMzQ1NTEsIDM0NTU2LCAzNDU2MiwgMzQ1NjgsIDM0NTc1LCAKKyAgICAzNDU4MywgMzQ1OTAsIDM0NTk2LCAzNDYwMywgMzQ2MTAsIDM0NjE2LCAzNDYyMywgMzQ2MzAsIDM0NjM2LCAzNDY0MSwgCisgICAgMzQ2NDcsIDM0NjU1LCAzNDY2NCwgMzQ2NzAsIDM0Njc2LCAzNDY4MiwgMzQ2ODgsIDM0Njk2LCAzNDcwMCwgMzQ3MDYsIAorICAgIDM0NzEyLCAzNDcxOCwgMzQ3MjQsIDM0NzMwLCAzNDczNiwgMzQ3NDAsIDM0NzQ1LCAzNDc1MCwgMzQ3NTcsIDM0NzYyLCAKKyAgICAzNDc2NiwgMzQ3NzIsIDM0Nzc3LCAzNDc4MiwgMzQ3ODYsIDM0NzkxLCAzNDc5NiwgMzQ4MDAsIDM0ODA1LCAzNDgxMCwgCisgICAgMzQ4MTcsIDM0ODIxLCAzNDgyNiwgMzQ4MzEsIDM0ODM1LCAzNDg0MCwgMzQ4NDQsIDM0ODQ5LCAzNDg1MywgMzQ4NTksIAorICAgIDM0ODY0LCAzNDg3MSwgMzQ4NzYsIDM0ODgxLCAzNDg4NSwgMzQ4OTAsIDM0ODk1LCAzNDkwMiwgMzQ5MDcsIDM0OTEzLCAKKyAgICAzNDkxOCwgMzQ5MjMsIDM0OTI4LCAzNDkzMiwgMzQ5MzcsIDM0OTQ0LCAzNDk1MSwgMzQ5NTYsIDM0OTYxLCAzNDk2NSwgCisgICAgMzQ5NzEsIDM0OTc4LCAzNDk4MywgMzQ5ODgsIDM0OTkzLCAzNDk5OSwgMzUwMDQsIDM1MDEwLCAzNTAxNSwgMzUwMjEsIAorICAgIDM1MDI3LCAzNTAzMywgMzUwNDAsIDM1MDQ3LCAzNTA1NCwgMzUwNjEsIDM1MDY4LCAzNTA3NSwgMzUwODAsIDM1MDg4LCAKKyAgICAzNTA5NywgMzUxMDYsIDM1MTE1LCAzNTEyNCwgMzUxMzMsIDM1MTQyLCAzNTE1NCwgMzUxNjMsIDM1MTcyLCAzNTE4MSwgCisgICAgMzUxODgsIDM1MTkzLCAzNTIwMCwgMzUyMDgsIDM1MjE2LCAzNTIyMywgMzUyMzAsIDM1MjM3LCAzNTI0NCwgMzUyNTIsIAorICAgIDM1MjYxLCAzNTI3MCwgMzUyNzksIDM1Mjg4LCAzNTI5NywgMzUzMDYsIDM1MzE1LCAzNTMyNCwgMzUzMzMsIDM1MzQyLCAKKyAgICAzNTM1MSwgMzUzNjAsIDM1MzY5LCAzNTM3OCwgMzUzODYsIDM1Mzk1LCAzNTQwNiwgMzU0MTQsIDM1NDIzLCAzNTQzNCwgCisgICAgMzU0NDMsIDM1NDUyLCAzNTQ2MSwgMzU0NzAsIDM1NDc4LCAzNTQ4NywgMzU0OTQsIDM1NDk5LCAzNTUwNywgMzU1MTIsIAorICAgIDM1NTE5LCAzNTUyNCwgMzU1MzMsIDM1NTM5LCAzNTU0NiwgMzU1NTMsIDM1NTU4LCAzNTU2MywgMzU1NzEsIDM1NTc5LCAKKyAgICAzNTU4OCwgMzU1OTcsIDM1NjAyLCAzNTYwOSwgMzU2MjAsIDM1NjI4LCAzNTYzNywgMzU2NDMsIDM1NjQ5LCAzNTY1NCwgCisgICAgMzU2NjEsIDM1NjY2LCAzNTY3NSwgMzU2ODAsIDM1Njg1LCAzNTY5MCwgMzU2OTcsIDM1NzA0LCAzNTcwOSwgMzU3MTgsIAorICAgIDM1NzI2LCAzNTczMSwgMzU3MzYsIDM1NzQzLCAzNTc1MCwgMzU3NTQsIDM1NzU4LCAzNTc2MSwgMzU3NjQsIDM1NzY3LCAKKyAgICAzNTc3MCwgMzU3NzMsIDM1Nzc2LCAzNTc4MywgMzU3ODYsIDM1Nzg5LCAzNTc5NCwgMzU3OTgsIDM1ODAyLCAzNTgwNiwgCisgICAgMzU4MTAsIDM1ODE0LCAzNTgyMywgMzU4MjksIDM1ODM1LCAzNTg0MSwgMzU4NDksIDM1ODU3LCAzNTg2MywgMzU4NjksIAorICAgIDM1ODc2LCAzNTg4MiwgMzU4ODcsIDM1ODkzLCAzNTkwMCwgMzU5MDYsIDM1OTEzLCAzNTkxOSwgMzU5MjcsIDM1OTMzLCAKKyAgICAzNTk0MCwgMzU5NDYsIDM1OTUyLCAzNTk1OCwgMzU5NjQsIDM1OTcwLCAzNTk3NiwgMzU5ODcsIDM1OTk3LCAzNjAwMywgCisgICAgMzYwMDksIDM2MDE5LCAzNjAyNSwgMzYwMzMsIDM2MDQxLCAzNjA0OSwgMCwgMCwgMCwgMCwgMCwgMzYwNTQsIDM2MDU4LCAKKyAgICAzNjA2NSwgMzYwNzIsIDM2MDc3LCAzNjA4NiwgMzYwOTQsIDM2MTAyLCAzNjEwOSwgMzYxMTYsIDM2MTIzLCAzNjEzMCwgCisgICAgMzYxMzgsIDM2MTQ2LCAzNjE1NiwgMzYxNjYsIDM2MTc0LCAzNjE4MiwgMzYxOTAsIDM2MTk4LCAzNjIwNywgMzYyMTYsIAorICAgIDM2MjI0LCAzNjIzMiwgMzYyNDEsIDM2MjUwLCAzNjI2MCwgMzYyNzAsIDM2Mjc5LCAzNjI4OCwgMzYyOTYsIDM2MzA0LCAKKyAgICAzNjMxMiwgMzYzMjAsIDM2MzMwLCAzNjM0MCwgMzYzNDgsIDM2MzU2LCAzNjM2NCwgMzYzNzIsIDM2MzgwLCAzNjM4OCwgCisgICAgMzYzOTYsIDM2NDA0LCAzNjQxMiwgMzY0MjAsIDM2NDI4LCAzNjQzNiwgMzY0NDUsIDM2NDU0LCAzNjQ2MywgMzY0NzIsIAorICAgIDM2NDgyLCAzNjQ5MiwgMzY0OTksIDM2NTA2LCAzNjUxNCwgMzY1MjIsIDM2NTMxLCAzNjU0MCwgMzY1NDgsIDM2NTU2LCAKKyAgICAzNjU2OCwgMzY1ODAsIDM2NTg5LCAzNjU5OCwgMzY2MDcsIDM2NjE2LCAzNjYyMywgMzY2MzAsIDM2NjM4LCAzNjY0NiwgCisgICAgMzY2NTQsIDM2NjYyLCAzNjY3MCwgMzY2NzgsIDM2Njg2LCAzNjY5NCwgMzY3MDMsIDM2NzEyLCAzNjcyMSwgMzY3MzAsIAorICAgIDM2NzM5LCAzNjc0OCwgMzY3NTgsIDM2NzY4LCAzNjc3OCwgMzY3ODgsIDM2Nzk3LCAzNjgwNiwgMzY4MTMsIDM2ODIwLCAKKyAgICAzNjgyOCwgMzY4MzYsIDM2ODQ0LCAzNjg1MiwgMzY4NjAsIDM2ODY4LCAzNjg4MCwgMzY4OTIsIDM2OTAxLCAzNjkxMCwgCisgICAgMzY5MTgsIDM2OTI2LCAzNjkzNCwgMzY5NDIsIDM2OTUzLCAzNjk2NCwgMzY5NzUsIDM2OTg2LCAzNjk5OCwgMzcwMTAsIAorICAgIDM3MDE4LCAzNzAyNiwgMzcwMzQsIDM3MDQyLCAzNzA1MSwgMzcwNjAsIDM3MDY5LCAzNzA3OCwgMzcwODYsIDM3MDk0LCAKKyAgICAzNzEwMiwgMzcxMTAsIDM3MTE4LCAzNzEyNiwgMzcxMzUsIDM3MTQ0LCAzNzE1NCwgMzcxNjQsIDM3MTcyLCAzNzE4MCwgCisgICAgMzcxODgsIDM3MTk2LCAzNzIwNCwgMzcyMTIsIDM3MjE5LCAzNzIyNiwgMzcyMzQsIDM3MjQyLCAzNzI1MCwgMzcyNTgsIAorICAgIDM3MjY2LCAzNzI3NCwgMzcyODIsIDM3MjkwLCAzNzI5OCwgMzczMDYsIDM3MzE0LCAzNzMyMiwgMzczMzAsIDM3MzM4LCAKKyAgICAzNzM0NiwgMzczNTQsIDM3MzYzLCAzNzM3MiwgMzczODEsIDM3Mzg5LCAzNzM5OCwgMzc0MDcsIDM3NDE2LCAzNzQyNSwgCisgICAgMzc0MzUsIDM3NDQ0LCAzNzQ1MSwgMzc0NTYsIDM3NDYzLCAzNzQ3MCwgMzc0NzgsIDM3NDg2LCAzNzQ5NSwgMzc1MDQsIAorICAgIDM3NTE0LCAzNzUyNCwgMzc1MzUsIDM3NTQ2LCAzNzU1NiwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTUsIDM3NjA0LCAKKyAgICAzNzYxNCwgMzc2MjQsIDM3NjM1LCAzNzY0NiwgMzc2NTYsIDM3NjY2LCAzNzY3NiwgMzc2ODYsIDM3NjkzLCAzNzcwMCwgCisgICAgMzc3MDgsIDM3NzE2LCAzNzcyMywgMzc3MzAsIDM3NzM5LCAzNzc0OCwgMzc3NTgsIDM3NzY4LCAzNzc3OSwgMzc3OTAsIAorICAgIDM3ODAwLCAzNzgxMCwgMzc4MjAsIDM3ODMwLCAzNzgzOSwgMzc4NDgsIDM3ODU2LCAzNzg2NCwgMzc4NzEsIDM3ODc4LCAKKyAgICAzNzg4NiwgMzc4OTQsIDM3OTAzLCAzNzkxMiwgMzc5MjIsIDM3OTMyLCAzNzk0MywgMzc5NTQsIDM3OTY0LCAzNzk3NCwgCisgICAgMzc5ODQsIDM3OTk0LCAzODAwMywgMzgwMTIsIDM4MDIyLCAzODAzMiwgMzgwNDMsIDM4MDU0LCAzODA2NCwgMzgwNzQsIAorICAgIDM4MDg0LCAzODA5NCwgMzgxMDEsIDM4MTA4LCAzODExNiwgMzgxMjQsIDM4MTMzLCAzODE0MiwgMzgxNTIsIDM4MTYyLCAKKyAgICAzODE3MywgMzgxODQsIDM4MTk0LCAzODIwNCwgMzgyMTQsIDM4MjI0LCAzODIzMiwgMzgyNDAsIDM4MjQ4LCAzODI1NiwgCisgICAgMzgyNjUsIDM4Mjc0LCAzODI4MiwgMzgyOTAsIDM4Mjk3LCAzODMwNCwgMzgzMTEsIDM4MzE4LCAzODMyNiwgMzgzMzQsIAorICAgIDM4MzQyLCAzODM1MCwgMzgzNjEsIDM4MzcyLCAzODM4MywgMzgzOTQsIDM4NDA1LCAzODQxNiwgMzg0MjQsIDM4NDMyLCAKKyAgICAzODQ0MywgMzg0NTQsIDM4NDY1LCAzODQ3NiwgMzg0ODcsIDM4NDk4LCAzODUwNiwgMzg1MTQsIDM4NTI1LCAzODUzNiwgCisgICAgMzg1NDcsIDAsIDAsIDM4NTU4LCAzODU2NiwgMzg1NzQsIDM4NTg1LCAzODU5NiwgMzg2MDcsIDAsIDAsIDM4NjE4LCAKKyAgICAzODYyNiwgMzg2MzQsIDM4NjQ1LCAzODY1NiwgMzg2NjcsIDM4Njc4LCAzODY4OSwgMzg3MDAsIDM4NzA4LCAzODcxNiwgCisgICAgMzg3MjcsIDM4NzM4LCAzODc0OSwgMzg3NjAsIDM4NzcxLCAzODc4MiwgMzg3OTAsIDM4Nzk4LCAzODgwOSwgMzg4MjAsIAorICAgIDM4ODMxLCAzODg0MiwgMzg4NTMsIDM4ODY0LCAzODg3MiwgMzg4ODAsIDM4ODkxLCAzODkwMiwgMzg5MTMsIDM4OTI0LCAKKyAgICAzODkzNSwgMzg5NDYsIDM4OTU0LCAzODk2MiwgMzg5NzMsIDM4OTg0LCAzODk5NSwgMCwgMCwgMzkwMDYsIDM5MDE0LCAKKyAgICAzOTAyMiwgMzkwMzMsIDM5MDQ0LCAzOTA1NSwgMCwgMCwgMzkwNjYsIDM5MDc0LCAzOTA4MiwgMzkwOTMsIDM5MTA0LCAKKyAgICAzOTExNSwgMzkxMjYsIDM5MTM3LCAwLCAzOTE0OCwgMCwgMzkxNTYsIDAsIDM5MTY3LCAwLCAzOTE3OCwgMzkxODksIAorICAgIDM5MTk3LCAzOTIwNSwgMzkyMTYsIDM5MjI3LCAzOTIzOCwgMzkyNDksIDM5MjYwLCAzOTI3MSwgMzkyNzksIDM5Mjg3LCAKKyAgICAzOTI5OCwgMzkzMDksIDM5MzIwLCAzOTMzMSwgMzkzNDIsIDM5MzUzLCAzOTM2MSwgMzkzNjksIDM5Mzc3LCAzOTM4NSwgCisgICAgMzkzOTMsIDM5NDAxLCAzOTQwOSwgMzk0MTcsIDM5NDI1LCAzOTQzMywgMzk0NDEsIDM5NDQ5LCAzOTQ1NywgMCwgMCwgCisgICAgMzk0NjUsIDM5NDc2LCAzOTQ4NywgMzk1MDEsIDM5NTE1LCAzOTUyOSwgMzk1NDMsIDM5NTU3LCAzOTU3MSwgMzk1ODIsIAorICAgIDM5NTkzLCAzOTYwNywgMzk2MjEsIDM5NjM1LCAzOTY0OSwgMzk2NjMsIDM5Njc3LCAzOTY4OCwgMzk2OTksIDM5NzEzLCAKKyAgICAzOTcyNywgMzk3NDEsIDM5NzU1LCAzOTc2OSwgMzk3ODMsIDM5Nzk0LCAzOTgwNSwgMzk4MTksIDM5ODMzLCAzOTg0NywgCisgICAgMzk4NjEsIDM5ODc1LCAzOTg4OSwgMzk5MDAsIDM5OTExLCAzOTkyNSwgMzk5MzksIDM5OTUzLCAzOTk2NywgMzk5ODEsIAorICAgIDM5OTk1LCA0MDAwNiwgNDAwMTcsIDQwMDMxLCA0MDA0NSwgNDAwNTksIDQwMDczLCA0MDA4NywgNDAxMDEsIDQwMTA5LCAKKyAgICA0MDExNywgNDAxMjgsIDQwMTM2LCAwLCA0MDE0NywgNDAxNTUsIDQwMTY2LCA0MDE3NCwgNDAxODIsIDQwMTkwLCA0MDE5OCwgCisgICAgNDAyMDYsIDQwMjA5LCA0MDIxMiwgNDAyMTUsIDQwMjE4LCA0MDIyNCwgNDAyMzUsIDQwMjQzLCAwLCA0MDI1NCwgNDAyNjIsIAorICAgIDQwMjczLCA0MDI4MSwgNDAyODksIDQwMjk3LCA0MDMwNSwgNDAzMTMsIDQwMzE5LCA0MDMyNSwgNDAzMzEsIDQwMzM5LCAKKyAgICA0MDM0NywgNDAzNTgsIDAsIDAsIDQwMzY5LCA0MDM3NywgNDAzODgsIDQwMzk2LCA0MDQwNCwgNDA0MTIsIDAsIDQwNDIwLCAKKyAgICA0MDQyNiwgNDA0MzIsIDQwNDM4LCA0MDQ0NiwgNDA0NTQsIDQwNDY1LCA0MDQ3NiwgNDA0ODQsIDQwNDkyLCA0MDUwMCwgCisgICAgNDA1MTEsIDQwNTE5LCA0MDUyNywgNDA1MzUsIDQwNTQzLCA0MDU1MSwgNDA1NTcsIDQwNTYzLCAwLCAwLCA0MDU2NiwgCisgICAgNDA1NzcsIDQwNTg1LCAwLCA0MDU5NiwgNDA2MDQsIDQwNjE1LCA0MDYyMywgNDA2MzEsIDQwNjM5LCA0MDY0NywgNDA2NTUsIAorICAgIDQwNjU4LCAwLCA0MDY2MSwgNDA2NjUsIDQwNjY5LCA0MDY3MywgNDA2NzcsIDQwNjgxLCA0MDY4NSwgNDA2ODksIDQwNjkzLCAKKyAgICA0MDY5NywgNDA3MDEsIDQwNzA1LCA0MDcxMSwgNDA3MTcsIDQwNzIzLCA0MDcyNiwgNDA3MjksIDQwNzMxLCA0MDczNSwgCisgICAgNDA3MzksIDQwNzQzLCA0MDc0NywgNDA3NTAsIDQwNzU0LCA0MDc1OCwgNDA3NjQsIDQwNzcwLCA0MDc3NywgNDA3ODQsIAorICAgIDQwNzg5LCA0MDc5NCwgNDA4MDAsIDQwODA2LCA0MDgwOCwgNDA4MTEsIDQwODEzLCA0MDgxNywgNDA4MjEsIDQwODI1LCAKKyAgICA0MDgyOSwgNDA4MzMsIDQwODM3LCA0MDg0MSwgNDA4NDUsIDQwODQ5LCA0MDg1NSwgNDA4NTksIDQwODYzLCA0MDg2OSwgCisgICAgNDA4NzQsIDQwODgxLCA0MDg4MywgNDA4ODYsIDQwODkwLCA0MDg5NCwgNDA4OTksIDQwOTA1LCA0MDkwNywgNDA5MTYsIAorICAgIDQwOTI1LCA0MDkyOCwgNDA5MzIsIDQwOTM0LCA0MDkzNiwgNDA5MzgsIDQwOTQxLCA0MDk0NywgNDA5NDksIDQwOTUzLCAKKyAgICA0MDk1NywgNDA5NjQsIDQwOTcxLCA0MDk3NSwgNDA5ODAsIDQwOTg1LCA0MDk5MCwgNDA5OTUsIDQwOTk5LCA0MTAwMywgCisgICAgNDEwMDYsIDQxMDEwLCA0MTAxNCwgNDEwMjEsIDQxMDI2LCA0MTAzMCwgNDEwMzQsIDQxMDM5LCA0MTA0MywgNDEwNDcsIAorICAgIDQxMDUyLCA0MTA1NywgNDEwNjEsIDQxMDY1LCA0MTA2OSwgNDEwNzEsIDQxMDc2LCA0MTA4MSwgNDEwODUsIDQxMDg5LCAKKyAgICA0MTA5MywgNDEwOTcsIDAsIDQxMTAxLCA0MTEwNSwgNDExMDksIDQxMTE1LCA0MTEyMSwgNDExMjcsIDQxMTMzLCA0MTE0MCwgCisgICAgNDExNDcsIDQxMTUyLCA0MTE1NywgNDExNjEsIDAsIDAsIDQxMTY3LCA0MTE3MCwgNDExNzMsIDQxMTc2LCA0MTE4MCwgCisgICAgNDExODMsIDQxMTg3LCA0MTE5MSwgNDExOTUsIDQxMjAwLCA0MTIwNSwgNDEyMTAsIDQxMjE3LCA0MTIyMSwgNDEyMjQsIAorICAgIDQxMjI3LCA0MTIzMCwgNDEyMzMsIDQxMjM2LCA0MTIzOSwgNDEyNDMsIDQxMjQ2LCA0MTI1MCwgNDEyNTQsIDQxMjU4LCAKKyAgICA0MTI2MywgNDEyNjgsIDAsIDQxMjczLCA0MTI3OSwgNDEyODUsIDQxMjkxLCA0MTI5OCwgNDEzMDUsIDQxMzEyLCA0MTMxOSwgCisgICAgNDEzMjUsIDQxMzMyLCA0MTMzOSwgNDEzNDYsIDQxMzUzLCAwLCAwLCAwLCA0MTM2MCwgNDEzNjMsIDQxMzY2LCA0MTM2OSwgCisgICAgNDEzNzQsIDQxMzc3LCA0MTM4MCwgNDEzODMsIDQxMzg2LCA0MTM4OSwgNDEzOTIsIDQxMzk3LCA0MTQwMCwgNDE0MDMsIAorICAgIDQxNDA2LCA0MTQwOSwgNDE0MTIsIDQxNDE3LCA0MTQyMCwgNDE0MjMsIDQxNDI2LCA0MTQyOSwgNDE0MzIsIDQxNDM3LCAKKyAgICA0MTQ0MCwgNDE0NDMsIDQxNDQ4LCA0MTQ1MywgNDE0NTcsIDQxNDYwLCA0MTQ2MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE0NjYsIDQxNDcxLCA0MTQ3NiwgNDE0ODMsIDQxNDkxLCA0MTQ5NiwgCisgICAgNDE1MDEsIDQxNTA1LCA0MTUwOSwgNDE1MTQsIDQxNTIxLCA0MTUyOCwgNDE1MzIsIDQxNTM3LCA0MTU0MiwgNDE1NDcsIAorICAgIDQxNTUyLCA0MTU1OSwgNDE1NjQsIDQxNTY5LCA0MTU3NCwgNDE1ODMsIDQxNTkwLCA0MTU5NywgNDE2MDEsIDQxNjA2LCAKKyAgICA0MTYxMiwgNDE2MTcsIDQxNjI0LCA0MTYzMiwgNDE2NDAsIDQxNjQ0LCA0MTY0OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDE2NTIsIDQxNjU2LCA0MTY2NCwgNDE2NjgsIDQxNjcyLCA0MTY3NywgNDE2ODEsIAorICAgIDQxNjg1LCA0MTY4OSwgNDE2OTEsIDQxNjk1LCA0MTY5OSwgNDE3MDMsIDQxNzA4LCA0MTcxMiwgNDE3MTYsIDQxNzI0LCAKKyAgICA0MTcyNywgNDE3MzEsIDQxNzM0LCA0MTczNywgNDE3NDMsIDQxNzQ3LCA0MTc1MCwgNDE3NTYsIDQxNzYwLCA0MTc2NCwgCisgICAgNDE3NjgsIDQxNzcxLCA0MTc3NSwgNDE3NzgsIDQxNzgyLCA0MTc4NCwgNDE3ODcsIDQxNzkwLCA0MTc5NCwgNDE3OTYsIAorICAgIDQxODAwLCA0MTgwMywgNDE4MDYsIDQxODExLCA0MTgxNiwgNDE4MjMsIDQxODI2LCA0MTgyOSwgNDE4MzMsIDQxODM4LCAKKyAgICA0MTg0MSwgNDE4NDQsIDQxODQ3LCA0MTg1MSwgNDE4NTYsIDQxODYwLCA0MTg2MywgNDE4NjUsIDQxODY4LCA0MTg3MSwgCisgICAgNDE4NzQsIDQxODc4LCA0MTg4MywgNDE4ODYsIDQxODkwLCA0MTg5NCwgNDE4OTgsIDQxOTAyLCA0MTkwNywgNDE5MTMsIAorICAgIDQxOTE4LCA0MTkyMywgNDE5MjksIDQxOTM0LCA0MTkzOSwgNDE5NDMsIDQxOTQ3LCA0MTk1MiwgNDE5NTYsIDQxOTYwLCAKKyAgICA0MTk2MywgNDE5NjUsIDQxOTcwLCA0MTk3NiwgNDE5ODMsIDQxOTkwLCA0MTk5NywgNDIwMDQsIDQyMDExLCA0MjAxOCwgCisgICAgNDIwMjUsIDQyMDMyLCA0MjA0MCwgNDIwNDcsIDQyMDU1LCA0MjA2MiwgNDIwNjksIDQyMDc3LCA0MjA4NSwgNDIwOTAsIAorICAgIDQyMDk1LCA0MjEwMCwgNDIxMDUsIDQyMTEwLCA0MjExNSwgNDIxMjAsIDQyMTI2LCA0MjEzMSwgNDIxMzcsIDQyMTQzLCAKKyAgICA0MjE0OSwgNDIxNTUsIDQyMTYxLCA0MjE2OCwgNDIxNzYsIDQyMTgzLCA0MjE4OSwgNDIxOTUsIDQyMjAxLCA0MjIwNywgCisgICAgNDIyMTMsIDQyMjE5LCA0MjIyNiwgNDIyMzIsIDQyMjM5LCA0MjI0NiwgNDIyNTMsIDQyMjYwLCA0MjI2NywgNDIyNzUsIAorICAgIDQyMjg0LCA0MjI5MiwgNDIzMDMsIDQyMzExLCA0MjMxOSwgNDIzMjgsIDQyMzM1LCA0MjM0NCwgNDIzNTMsIDQyMzYxLCAKKyAgICA0MjM3MCwgNDIzNzgsIDQyMzgyLCAwLCAwLCAwLCAwLCA0MjM4NiwgNDIzODgsIDQyMzkwLCA0MjM5MiwgNDIzOTQsIAorICAgIDQyMzk3LCA0MjQwMCwgNDI0MDQsIDQyNDA4LCA0MjQxMywgNDI0MTgsIDQyNDIyLCA0MjQyNiwgNDI0MzAsIDQyNDM0LCAKKyAgICA0MjQzOSwgNDI0NDQsIDQyNDQ5LCA0MjQ1NCwgNDI0NTksIDQyNDY0LCA0MjQ2OSwgNDI0NzQsIDQyNDc5LCA0MjQ4NCwgCisgICAgNDI0OTAsIDQyNDk0LCA0MjQ5OCwgNDI1MDMsIDQyNTA4LCA0MjUxMywgNDI1MTgsIDQyNTIyLCA0MjUyOSwgNDI1MzYsIAorICAgIDQyNTQzLCA0MjU1MCwgNDI1NTcsIDQyNTY0LCA0MjU3MSwgNDI1NzgsIDQyNTg2LCA0MjU5OCwgNDI2MDQsIDQyNjEwLCAKKyAgICA0MjYxNywgNDI2MjQsIDQyNjMxLCA0MjYzOCwgNDI2NDUsIDQyNjUyLCA0MjY1OSwgNDI2NjYsIDQyNjcxLCA0MjY3NywgCisgICAgNDI2ODIsIDQyNjg3LCA0MjY5MiwgNDI2OTcsIDQyNzAyLCA0MjcwOSwgNDI3MTYsIDQyNzIxLCA0MjcyNywgNDI3MzIsIAorICAgIDQyNzM1LCA0MjczOCwgNDI3NDEsIDQyNzQ0LCA0Mjc0OCwgNDI3NTIsIDQyNzU3LCA0Mjc2MiwgNDI3NjgsIDQyNzc0LCAKKyAgICA0Mjc3OCwgNDI3ODIsIDQyNzg2LCA0Mjc5MCwgNDI3OTUsIDQyODAwLCA0MjgwNCwgNDI4MDgsIDQyODEyLCA0MjgxNiwgCisgICAgNDI4MjEsIDQyODI2LCA0MjgyOSwgNDI4MzIsIDQyODM1LCA0MjgzOCwgNDI4NDQsIDQyODUxLCA0Mjg2MiwgNDI4NzIsIAorICAgIDQyODc2LCA0Mjg4NCwgNDI4OTEsIDQyODk5LCA0MjkwOCwgNDI5MTIsIDQyOTE4LCA0MjkyNCwgNDI5MjgsIDQyOTMzLCAKKyAgICA0MjkzOCwgNDI5NDQsIDQyOTUwLCA0Mjk1NiwgNDI5NjMsIDQyOTY3LCA0Mjk3MSwgNDI5NzYsIDQyOTc5LCA0Mjk4MSwgCisgICAgNDI5ODUsIDQyOTg5LCA0Mjk5NywgNDMwMDEsIDQzMDAzLCA0MzAwNSwgNDMwMDksIDQzMDE3LCA0MzAyMiwgNDMwMjgsIAorICAgIDQzMDM4LCA0MzA0NSwgNDMwNTAsIDQzMDU0LCA0MzA1OCwgNDMwNjIsIDQzMDY1LCA0MzA2OCwgNDMwNzEsIDQzMDc1LCAKKyAgICA0MzA3OSwgNDMwODMsIDQzMDg3LCA0MzA5MSwgNDMwOTQsIDQzMDk4LCA0MzEwMiwgNDMxMDUsIDQzMTA3LCA0MzExMCwgCisgICAgNDMxMTIsIDQzMTE2LCA0MzEyMCwgNDMxMjIsIDQzMTI4LCA0MzEzMSwgNDMxMzYsIDQzMTQwLCA0MzE0NCwgNDMxNDYsIAorICAgIDQzMTQ4LCA0MzE1MCwgNDMxNTMsIDQzMTU3LCA0MzE2MSwgNDMxNjUsIDQzMTY5LCA0MzE3MywgNDMxNzksIDQzMTg1LCAKKyAgICA0MzE4NywgNDMxODksIDQzMTkxLCA0MzE5MywgNDMxOTYsIDQzMTk4LCA0MzIwMiwgNDMyMDQsIDQzMjA4LCA0MzIxMiwgCisgICAgNDMyMTgsIDQzMjIyLCA0MzIyNiwgNDMyMzAsIDQzMjM0LCA0MzIzOCwgNDMyNDQsIDQzMjQ4LCA0MzI1OCwgNDMyNjgsIAorICAgIDQzMjcyLCA0MzI3OCwgNDMyODUsIDQzMjg5LCA0MzI5MywgNDMyOTYsIDQzMzAxLCA0MzMwNSwgNDMzMTEsIDQzMzE1LCAKKyAgICA0MzMyOCwgNDMzMzcsIDQzMzQxLCA0MzM0NSwgNDMzNTEsIDQzMzU1LCA0MzM1OCwgNDMzNjAsIDQzMzYzLCA0MzM2NywgCisgICAgNDMzNzEsIDQzMzc4LCA0MzM4MiwgNDMzODYsIDQzMzkwLCA0MzM5MywgNDMzOTgsIDQzNDAzLCA0MzQwOSwgNDM0MTUsIAorICAgIDQzNDIwLCA0MzQyNSwgNDM0MzMsIDQzNDQxLCA0MzQ0NSwgNDM0NDksIDQzNDUxLCA0MzQ1NiwgNDM0NjAsIDQzNDY0LCAKKyAgICA0MzQ3MiwgNDM0ODAsIDQzNDg3LCA0MzQ5NCwgNDM1MDMsIDQzNTEyLCA0MzUxOCwgNDM1MjQsIDQzNTMyLCA0MzU0MCwgCisgICAgNDM1NDIsIDQzNTQ0LCA0MzU1MCwgNDM1NTYsIDQzNTYzLCA0MzU3MCwgNDM1NzYsIDQzNTgyLCA0MzU4NiwgNDM1OTAsIAorICAgIDQzNTk3LCA0MzYwNCwgNDM2MTEsIDQzNjE4LCA0MzYyOCwgNDM2MzgsIDQzNjQ2LCA0MzY1NCwgNDM2NTYsIDQzNjYwLCAKKyAgICA0MzY2NCwgNDM2NjksIDQzNjc0LCA0MzY4MiwgNDM2OTAsIDQzNjkzLCA0MzY5NiwgNDM2OTksIDQzNzAyLCA0MzcwNSwgCisgICAgNDM3MTAsIDQzNzE0LCA0MzcxOSwgNDM3MjQsIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM2LCA0MzczOSwgNDM3NDMsIAorICAgIDQzNzQ2LCA0Mzc0OSwgNDM3NTIsIDQzNzU1LCA0Mzc1NywgNDM3NTksIDQzNzYxLCA0Mzc2MywgNDM3NzEsIDQzNzc5LCAKKyAgICA0Mzc4NSwgNDM3ODksIDQzNzk1LCA0MzgwNSwgNDM4MTEsIDQzODE3LCA0MzgyMywgNDM4MzEsIDQzODQwLCA0Mzg1MiwgCisgICAgNDM4NTYsIDQzODYwLCA0Mzg2MiwgNDM4NjgsIDQzODcwLCA0Mzg3MiwgNDM4NzQsIDQzODc2LCA0Mzg4MiwgNDM4ODUsIAorICAgIDQzODkxLCA0Mzg5NywgNDM5MDEsIDQzOTA1LCA0MzkwOSwgNDM5MTIsIDQzOTE2LCA0MzkyMCwgNDM5MjIsIDQzOTMxLCAKKyAgICA0Mzk0MCwgNDM5NDUsIDQzOTUwLCA0Mzk1NiwgNDM5NjIsIDQzOTY4LCA0Mzk3MSwgNDM5NzQsIDQzOTc3LCA0Mzk4MCwgCisgICAgNDM5ODIsIDQzOTg3LCA0Mzk5MiwgNDM5OTcsIDQ0MDAzLCA0NDAwOSwgNDQwMTgsIDQ0MDI3LCA0NDAzNCwgNDQwNDEsIAorICAgIDQ0MDQ4LCA0NDA1NSwgNDQwNjUsIDQ0MDc1LCA0NDA4NSwgNDQwOTUsIDQ0MTA1LCA0NDExNSwgNDQxMjQsIDQ0MTMzLCAKKyAgICA0NDE0MiwgNDQxNTEsIDQ0MTU5LCA0NDE3MSwgNDQxODIsIDQ0MTk4LCA0NDIwMSwgNDQyMDcsIDQ0MjEzLCA0NDIxOSwgCisgICAgNDQyMjcsIDQ0MjQyLCA0NDI1OCwgNDQyNjQsIDQ0MjcwLCA0NDI3NywgNDQyODMsIDQ0MjkyLCA0NDI5OSwgNDQzMTMsIAorICAgIDQ0MzI4LCA0NDMzMywgNDQzMzksIDQ0MzQ3LCA0NDM1MCwgNDQzNTMsIDQ0MzU1LCA0NDM1OCwgNDQzNjEsIDQ0MzYzLCAKKyAgICA0NDM2NSwgNDQzNjksIDQ0MzcyLCA0NDM3NSwgNDQzNzgsIDQ0MzgxLCA0NDM4NiwgNDQzOTEsIDQ0Mzk2LCA0NDQwMSwgCisgICAgNDQ0MDYsIDQ0NDA5LCA0NDQxMSwgNDQ0MTMsIDQ0NDE1LCA0NDQxOSwgNDQ0MjMsIDQ0NDI3LCA0NDQzMywgNDQ0MzgsIAorICAgIDQ0NDQwLCA0NDQ0MiwgNDQ0NDcsIDQ0NDUyLCA0NDQ1NywgNDQ0NjIsIDQ0NDY3LCA0NDQ3MiwgNDQ0NzQsIDQ0NDc2LCAKKyAgICA0NDQ4NiwgNDQ0OTAsIDQ0NDk4LCA0NDUwNywgNDQ1MDksIDQ0NTE0LCA0NDUxOSwgNDQ1MjcsIDQ0NTMxLCA0NDUzMywgCisgICAgNDQ1MzcsIDQ0NTM5LCA0NDU0MywgNDQ1NDcsIDQ0NTUxLCA0NDU1MywgNDQ1NTUsIDQ0NTU3LCA0NDU2NCwgNDQ1NzMsIAorICAgIDQ0NTgyLCA0NDU5MSwgNDQ2MDAsIDQ0NjA5LCA0NDYxOCwgNDQ2MjcsIDQ0NjM2LCA0NDY0NCwgNDQ2NTIsIDQ0NjYxLCAKKyAgICA0NDY3MCwgNDQ2NzksIDQ0Njg4LCA0NDY5NiwgNDQ3MDQsIDQ0NzEzLCA0NDcyMiwgNDQ3MzEsIDQ0NzQxLCA0NDc1MCwgCisgICAgNDQ3NjAsIDQ0NzY5LCA0NDc3OSwgNDQ3ODcsIDQ0Nzk2LCA0NDgwNiwgNDQ4MTUsIDQ0ODI1LCA0NDgzNCwgNDQ4NDQsIAorICAgIDQ0ODUyLCA0NDg2MSwgNDQ4NzAsIDQ0ODc5LCA0NDg4OCwgNDQ4OTcsIDQ0OTA2LCA0NDkxNiwgNDQ5MjUsIDQ0OTM0LCAKKyAgICA0NDk0MywgNDQ5NTMsIDQ0OTYyLCA0NDk3MSwgNDQ5ODAsIDQ0OTg5LCA0NDk5OSwgNDUwMDksIDQ1MDE4LCA0NTAyNywgCisgICAgNDUwMzUsIDQ1MDQ0LCA0NTA1MSwgNDUwNjAsIDQ1MDY5LCA0NTA4MCwgNDUwODksIDQ1MDk5LCA0NTEwOSwgNDUxMTYsIAorICAgIDQ1MTIzLCA0NTEzMCwgNDUxMzksIDQ1MTQ4LCA0NTE1NywgNDUxNjYsIDQ1MTczLCA0NTE3OCwgNDUxODYsIDQ1MTkxLCAKKyAgICA0NTE5NCwgNDUyMDEsIDQ1MjA0LCA0NTIwOSwgNDUyMTQsIDQ1MjE3LCA0NTIyMCwgNDUyMjgsIDQ1MjMxLCA0NTIzNiwgCisgICAgNDUyMzksIDQ1MjQ3LCA0NTI1MiwgNDUyNjAsIDQ1MjYzLCA0NTI2NiwgNDUyNjksIDQ1Mjc0LCA0NTI3OSwgNDUyODIsIAorICAgIDQ1Mjg1LCA0NTI5MywgNDUyOTYsIDQ1MzAzLCA0NTMxMCwgNDUzMTQsIDQ1MzE4LCA0NTMyMywgNDUzMjgsIDQ1MzM0LCAKKyAgICA0NTMzOSwgNDUzNDUsIDQ1MzUxLCA0NTM1NiwgNDUzNjIsIDQ1MzcwLCA0NTM3NiwgNDUzODQsIDQ1MzkyLCA0NTM5OCwgCisgICAgNDU0MDYsIDQ1NDE0LCA0NTQyMiwgNDU0MzAsIDQ1NDM2LCA0NTQ0NCwgNDU0NTIsIDQ1NDYwLCA0NTQ2NCwgNDU0NzAsIAorICAgIDQ1NDg0LCA0NTQ5OCwgNDU1MDIsIDQ1NTA2LCA0NTUxMCwgNDU1MTQsIDQ1NTI0LCA0NTUyOCwgNDU1MzMsIDQ1NTM4LCAKKyAgICA0NTU0NCwgNDU1NTAsIDQ1NTU2LCA0NTU2MiwgNDU1NzIsIDQ1NTgyLCA0NTU5MCwgNDU2MDEsIDQ1NjEyLCA0NTYyMCwgCisgICAgNDU2MzEsIDQ1NjQyLCA0NTY1MCwgNDU2NjEsIDQ1NjcyLCA0NTY4MCwgNDU2ODgsIDQ1Njk4LCA0NTcwOCwgNDU3MTEsIAorICAgIDQ1NzE0LCA0NTcxNywgNDU3MjIsIDQ1NzI2LCA0NTczMiwgNDU3MzksIDQ1NzQ2LCA0NTc1NCwgNDU3NjEsIDQ1NzY1LCAKKyAgICA0NTc2OSwgNDU3NzMsIDQ1Nzc3LCA0NTc3OSwgNDU3ODMsIDQ1Nzg3LCA0NTc5MiwgNDU3OTcsIDQ1ODA0LCA0NTgxMSwgCisgICAgNDU4MTQsIDQ1ODIxLCA0NTgyMywgNDU4MjUsIDQ1ODI5LCA0NTgzMywgNDU4MzgsIDQ1ODQ0LCA0NTg1MCwgNDU4NTYsIAorICAgIDQ1ODYyLCA0NTg3MSwgNDU4ODAsIDQ1ODg5LCA0NTg5MywgNDU4OTUsIDQ1ODk5LCA0NTkwNiwgNDU5MTMsIDQ1OTIwLCAKKyAgICA0NTkyNywgNDU5MzQsIDQ1OTM3LCA0NTk0MiwgNDU5NDgsIDQ1OTUxLCA0NTk1NiwgNDU5NjEsIDAsIDQ1OTY2LCA0NTk3MCwgCisgICAgNDU5NzcsIDQ1OTg0LCA0NTk5MSwgNDU5OTgsIDQ2MDAyLCA0NjAwNiwgNDYwMTAsIDQ2MDE0LCA0NjAyMCwgNDYwMjYsIAorICAgIDQ2MDMxLCA0NjAzNywgNDYwNDMsIDQ2MDQ5LCA0NjA1NSwgNDYwNjMsIDQ2MDcwLCA0NjA3NywgNDYwODQsIDQ2MDkxLCAKKyAgICA0NjA5NiwgNDYxMDIsIDQ2MTExLCA0NjExNSwgNDYxMjIsIDQ2MTI2LCA0NjEzMCwgNDYxMzYsIDQ2MTQyLCA0NjE0OCwgCisgICAgNDYxNTQsIDQ2MTU4LCA0NjE2MiwgNDYxNjUsIDQ2MTY4LCA0NjE3MiwgNDYxNzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ2MTg2LCA0NjE4OSwgNDYxOTMsIAorICAgIDQ2MTk3LCA0NjIwMywgNDYyMDksIDQ2MjE1LCA0NjIyMywgNDYyMzAsIDQ2MjM0LCA0NjI0MiwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDYyNDcsIDQ2MjUwLCA0NjI1MywgNDYyNTYsIAorICAgIDQ2MjU5LCA0NjI2MiwgNDYyNjUsIDQ2MjY5LCA0NjI3MiwgNDYyNzYsIDQ2MjgwLCA0NjI4NCwgNDYyODgsIDQ2MjkyLCAKKyAgICA0NjI5NiwgNDYzMDAsIDQ2MzA0LCA0NjMwOCwgNDYzMTIsIDQ2MzE2LCA0NjMyMCwgNDYzMjMsIDQ2MzI2LCA0NjMyOSwgCisgICAgNDYzMzIsIDQ2MzM1LCA0NjMzOCwgNDYzNDIsIDQ2MzQ1LCA0NjM0OSwgNDYzNTMsIDQ2MzU3LCA0NjM2MSwgNDYzNjUsIAorICAgIDQ2MzY5LCA0NjM3MywgNDYzNzcsIDQ2MzgxLCA0NjM4NSwgNDYzODksIDQ2MzkzLCA0NjM5OSwgNDY0MDUsIDQ2NDExLCAKKyAgICA0NjQxOCwgNDY0MjUsIDQ2NDMyLCA0NjQzOSwgNDY0NDYsIDQ2NDUzLCA0NjQ2MCwgNDY0NjcsIDQ2NDc0LCA0NjQ4MSwgCisgICAgNDY0ODgsIDQ2NDk1LCA0NjUwMiwgNDY1MDksIDQ2NTE2LCA0NjUyMywgNDY1MzAsIDQ2NTM1LCA0NjU0MSwgNDY1NDcsIAorICAgIDQ2NTUzLCA0NjU1OCwgNDY1NjQsIDQ2NTcwLCA0NjU3NiwgNDY1ODEsIDQ2NTg3LCA0NjU5MywgNDY1OTgsIDQ2NjA0LCAKKyAgICA0NjYxMCwgNDY2MTUsIDQ2NjIxLCA0NjYyNywgNDY2MzIsIDQ2NjM4LCA0NjY0NCwgNDY2NDksIDQ2NjU1LCA0NjY2MSwgCisgICAgNDY2NjcsIDQ2NjczLCA0NjY3OSwgNDY2ODQsIDQ2NjkwLCA0NjY5NiwgNDY3MDIsIDQ2NzA3LCA0NjcxMywgNDY3MTksIAorICAgIDQ2NzI1LCA0NjczMCwgNDY3MzYsIDQ2NzQyLCA0Njc0NywgNDY3NTMsIDQ2NzU5LCA0Njc2NCwgNDY3NzAsIDQ2Nzc2LCAKKyAgICA0Njc4MSwgNDY3ODcsIDQ2NzkzLCA0Njc5OCwgNDY4MDQsIDQ2ODEwLCA0NjgxNiwgNDY4MjIsIDQ2ODI4LCA0NjgzMywgCisgICAgNDY4MzksIDQ2ODQ1LCA0Njg1MSwgNDY4NTYsIDQ2ODYyLCA0Njg2OCwgNDY4NzQsIDQ2ODc5LCA0Njg4NSwgNDY4OTEsIAorICAgIDQ2ODk2LCA0NjkwMiwgNDY5MDgsIDQ2OTEzLCA0NjkxOSwgNDY5MjUsIDQ2OTMwLCA0NjkzNiwgNDY5NDIsIDQ2OTQ3LCAKKyAgICA0Njk1MywgNDY5NTksIDQ2OTY1LCA0Njk3MSwgNDY5NzcsIDQ2OTgxLCA0Njk4NiwgNDY5OTEsIDQ2OTk2LCA0NzAwMSwgCisgICAgNDcwMDYsIDQ3MDExLCA0NzAxNiwgNDcwMjEsIDQ3MDI2LCA0NzAzMSwgNDcwMzUsIDQ3MDM5LCA0NzA0MywgNDcwNDcsIAorICAgIDQ3MDUxLCA0NzA1NSwgNDcwNjAsIDQ3MDY0LCA0NzA2OSwgNDcwNzQsIDQ3MDc5LCA0NzA4NCwgNDcwODksIDQ3MDk0LCAKKyAgICA0NzA5OSwgNDcxMDgsIDQ3MTE3LCA0NzEyNiwgNDcxMzUsIDQ3MTQ0LCA0NzE1MywgNDcxNjIsIDQ3MTcxLCA0NzE3OCwgCisgICAgNDcxODYsIDQ3MTk0LCA0NzIwMSwgNDcyMDgsIDQ3MjE2LCA0NzIyNCwgNDcyMzEsIDQ3MjM4LCA0NzI0NiwgNDcyNTQsIAorICAgIDQ3MjYxLCA0NzI2OCwgNDcyNzYsIDQ3Mjg0LCA0NzI5MSwgNDcyOTgsIDQ3MzA2LCA0NzMxNSwgNDczMjQsIDQ3MzMyLCAKKyAgICA0NzM0MSwgNDczNTAsIDQ3MzU3LCA0NzM2NCwgNDczNzIsIDQ3MzgxLCA0NzM5MCwgNDczOTgsIDQ3NDA3LCA0NzQxNiwgCisgICAgNDc0MjMsIDQ3NDMwLCA0NzQzOSwgNDc0NDgsIDQ3NDU3LCA0NzQ2NiwgNDc0NzUsIDQ3NDg0LCA0NzQ5MSwgNDc0OTgsIAorICAgIDQ3NTA3LCA0NzUxNiwgNDc1MjUsIDQ3NTM0LCA0NzU0MywgNDc1NTIsIDQ3NTU5LCA0NzU2NiwgNDc1NzUsIDQ3NTg0LCAKKyAgICA0NzU5MywgNDc2MDMsIDQ3NjEzLCA0NzYyMiwgNDc2MzIsIDQ3NjQyLCA0NzY1MiwgNDc2NjIsIDQ3NjcyLCA0NzY4MiwgCisgICAgNDc2OTEsIDQ3NzAwLCA0NzcwNywgNDc3MTUsIDQ3NzIzLCA0NzczMSwgNDc3MzksIDQ3NzQ0LCA0Nzc0OSwgNDc3NTgsIAorICAgIDQ3NzY2LCA0Nzc3MywgNDc3ODIsIDQ3NzkwLCA0Nzc5NywgNDc4MDYsIDQ3ODE0LCA0NzgyMSwgNDc4MzAsIDQ3ODM4LCAKKyAgICA0Nzg0NSwgNDc4NTQsIDQ3ODYyLCA0Nzg2OSwgNDc4NzgsIDQ3ODg2LCA0Nzg5MywgNDc5MDMsIDQ3OTEyLCA0NzkxOSwgCisgICAgNDc5MjksIDQ3OTM4LCA0Nzk0NSwgNDc5NTUsIDQ3OTY0LCA0Nzk3MSwgNDc5ODAsIDQ3OTg5LCA0Nzk5OCwgNDgwMDcsIAorICAgIDQ4MDIxLCA0ODAzNSwgNDgwNDIsIDQ4MDQ3LCA0ODA1MiwgNDgwNTcsIDQ4MDYyLCA0ODA2NywgNDgwNzIsIDQ4MDc3LCAKKyAgICA0ODA4MiwgNDgwOTAsIDQ4MDk4LCA0ODEwNiwgNDgxMTQsIDQ4MTE5LCA0ODEyNiwgNDgxMzMsIDQ4MTQwLCA0ODE0NSwgCisgICAgNDgxNTMsIDQ4MTYwLCA0ODE2OCwgNDgxNzIsIDQ4MTc5LCA0ODE4NSwgNDgxOTIsIDQ4MTk2LCA0ODIwMiwgNDgyMDgsIAorICAgIDQ4MjE0LCA0ODIxOCwgNDgyMjEsIDQ4MjI1LCA0ODIyOSwgNDgyMzYsIDQ4MjQyLCA0ODI0OCwgNDgyNTQsIDQ4MjYwLCAKKyAgICA0ODI3NCwgNDgyODQsIDQ4Mjk4LCA0ODMxMiwgNDgzMTgsIDQ4MzI4LCA0ODM0MiwgNDgzNDUsIDQ4MzQ4LCA0ODM1NSwgCisgICAgNDgzNjMsIDQ4MzY5LCA0ODM3NCwgNDgzODIsIDQ4Mzk0LCA0ODQwNiwgNDg0MTQsIDQ4NDE4LCA0ODQyMiwgNDg0MjUsIAorICAgIDQ4NDI4LCA0ODQzMiwgNDg0MzYsIDQ4NDM5LCA0ODQ0MiwgNDg0NDcsIDQ4NDUyLCA0ODQ1OCwgNDg0NjQsIDQ4NDY5LCAKKyAgICA0ODQ3NCwgNDg0ODAsIDQ4NDg2LCA0ODQ5MSwgNDg0OTYsIDQ4NTAxLCA0ODUwNiwgNDg1MTIsIDQ4NTE4LCA0ODUyMywgCisgICAgNDg1MjgsIDQ4NTM0LCA0ODU0MCwgNDg1NDUsIDQ4NTUwLCA0ODU1MywgNDg1NTYsIDQ4NTY1LCA0ODU2NywgNDg1NjksIAorICAgIDQ4NTcyLCA0ODU3NiwgNDg1ODIsIDQ4NTg0LCA0ODU4NywgNDg1OTQsIDQ4NjAxLCA0ODYwOSwgNDg2MTcsIDQ4NjI3LCAKKyAgICA0ODY0MSwgNDg2NDYsIDQ4NjUxLCA0ODY1NSwgNDg2NjAsIDQ4NjY4LCA0ODY3NiwgNDg2ODUsIDQ4Njk0LCA0ODcwMywgCisgICAgNDg3MTIsIDQ4NzE3LCA0ODcyMiwgNDg3MjgsIDQ4NzM0LCA0ODc0MCwgNDg3NDYsIDQ4NzQ5LCA0ODc1NSwgNDg3NjEsIAorICAgIDQ4NzcxLCA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNiwgNDg4MTUsIDQ4ODE5LCA0ODgyNywgNDg4MzUsIDQ4ODQzLCAKKyAgICA0ODg1MSwgNDg4NjAsIDQ4ODY5LCA0ODg3OCwgNDg4ODcsIDQ4ODkyLCA0ODg5NywgNDg5MDIsIDQ4OTA3LCA0ODkxMiwgCisgICAgNDg5MTgsIDQ4OTI0LCA0ODkyOSwgNDg5MzUsIDQ4OTM3LCA0ODkzOSwgNDg5NDEsIDQ4OTQzLCA0ODk0NiwgNDg5NDksIAorICAgIDQ4OTUxLCA0ODk1MywgNDg5NTUsIDQ4OTU5LCA0ODk2MywgNDg5NjUsIDQ4OTY3LCA0ODk3MCwgNDg5NzMsIDQ4OTc3LCAKKyAgICA0ODk4MywgNDg5ODksIDQ4OTkxLCA0ODk5OCwgNDkwMDIsIDQ5MDA3LCA0OTAxMiwgNDkwMTQsIDQ5MDI0LCA0OTAzMCwgCisgICAgNDkwMzYsIDQ5MDQyLCA0OTA0OCwgNDkwNTQsIDQ5MDYwLCA0OTA2NSwgNDkwNjgsIDQ5MDcxLCA0OTA3NCwgNDkwNzYsIAorICAgIDQ5MDc4LCA0OTA4MiwgNDkwODYsIDQ5MDkxLCA0OTA5NiwgNDkxMDEsIDQ5MTA0LCA0OTEwOCwgNDkxMTMsIDQ5MTE2LCAKKyAgICA0OTEyMCwgNDkxMjUsIDQ5MTMwLCA0OTEzNSwgNDkxNDAsIDQ5MTQ1LCA0OTE1MCwgNDkxNTUsIDQ5MTYwLCA0OTE2NSwgCisgICAgNDkxNzAsIDQ5MTc1LCA0OTE4MCwgNDkxODYsIDQ5MTkyLCA0OTE5OCwgNDkyMDAsIDQ5MjAzLCA0OTIwNSwgNDkyMDgsIAorICAgIDQ5MjEwLCA0OTIxMiwgNDkyMTQsIDQ5MjE2LCA0OTIxOCwgNDkyMjAsIDQ5MjIyLCA0OTIyNCwgNDkyMjYsIDQ5MjI4LCAKKyAgICA0OTIzMCwgNDkyMzIsIDQ5MjM0LCA0OTIzNiwgNDkyMzgsIDQ5MjQwLCA0OTI0MiwgNDkyNDcsIDQ5MjUyLCA0OTI1NywgCisgICAgNDkyNjIsIDQ5MjY3LCA0OTI3MiwgNDkyNzcsIDQ5MjgyLCA0OTI4NywgNDkyOTIsIDQ5Mjk3LCA0OTMwMiwgNDkzMDcsIAorICAgIDQ5MzEyLCA0OTMxNywgNDkzMjIsIDQ5MzI3LCA0OTMzMiwgNDkzMzcsIDQ5MzQyLCA0OTM0NiwgNDkzNTAsIDQ5MzU0LCAKKyAgICA0OTM2MCwgNDkzNjYsIDQ5MzcxLCA0OTM3NiwgNDkzODEsIDQ5Mzg3LCA0OTM5MywgNDkzOTgsIDQ5NDA2LCA0OTQxNCwgCisgICAgNDk0MjIsIDQ5NDMwLCA0OTQzOCwgNDk0NDYsIDQ5NDU0LCA0OTQ2MiwgNDk0NjgsIDQ5NDczLCA0OTQ3OCwgNDk0ODMsIAorICAgIDQ5NDg2LCA0OTQ5MCwgNDk0OTQsIDQ5NDk4LCA0OTUwMiwgNDk1MDYsIDQ5NTEwLCA0OTUxNywgNDk1MjQsIDQ5NTMyLCAKKyAgICA0OTU0MCwgNDk1NDUsIDQ5NTUwLCA0OTU1NywgNDk1NjQsIDQ5NTcxLCA0OTU3OCwgNDk1ODEsIDQ5NTg0LCA0OTU4OSwgCisgICAgNDk1OTEsIDQ5NTk1LCA0OTYwMCwgNDk2MDIsIDQ5NjA0LCA0OTYwNiwgNDk2MDgsIDQ5NjEzLCA0OTYxNiwgNDk2MTgsIAorICAgIDQ5NjIzLCA0OTYzMCwgNDk2MzcsIDQ5NjQwLCA0OTY0NCwgNDk2NDksIDQ5NjU0LCA0OTY2MiwgNDk2NjgsIDQ5Njc0LCAKKyAgICA0OTY4NiwgNDk2OTMsIDQ5NzAxLCA0OTcwNiwgNDk3MTEsIDQ5NzE3LCA0OTcyMCwgNDk3MjMsIDQ5NzI4LCA0OTczMCwgCisgICAgNDk3MzQsIDQ5NzM2LCA0OTczOCwgNDk3NDAsIDQ5NzQyLCA0OTc0NCwgNDk3NDYsIDQ5NzUxLCA0OTc1MywgNDk3NTUsIAorICAgIDQ5NzU3LCA0OTc1OSwgNDk3NjMsIDQ5NzY1LCA0OTc2OCwgNDk3NzMsIDQ5Nzc4LCA0OTc4MywgNDk3ODgsIDQ5Nzk0LCAKKyAgICA0OTgwMCwgNDk4MDIsIDQ5ODA1LCA0OTgxMiwgNDk4MTksIDQ5ODI2LCA0OTgzMywgNDk4MzcsIDQ5ODQxLCA0OTg0MywgCisgICAgNDk4NDUsIDQ5ODQ5LCA0OTg1NSwgNDk4NjAsIDQ5ODYyLCA0OTg2NiwgNDk4NzUsIDQ5ODgzLCA0OTg5MSwgNDk4OTcsIAorICAgIDQ5OTAzLCA0OTkwOCwgNDk5MTQsIDQ5OTE5LCA0OTkyMiwgNDk5MzYsIDQ5OTM5LCA0OTk0NCwgNDk5NDksIDQ5OTU1LCAKKyAgICA0OTk2NSwgNDk5NjcsIDQ5OTczLCA0OTk3OSwgNDk5ODMsIDQ5OTkwLCA0OTk5NCwgNDk5OTYsIDQ5OTk4LCA1MDAwMiwgCisgICAgNTAwMDgsIDUwMDEzLCA1MDAxOSwgNTAwMjEsIDUwMDI3LCA1MDAyOSwgNTAwMzUsIDUwMDM3LCA1MDAzOSwgNTAwNDQsIAorICAgIDUwMDQ2LCA1MDA1MCwgNTAwNTUsIDUwMDU3LCA1MDA2MiwgNTAwNjcsIDUwMDcxLCA1MDA3OCwgNTAwODgsIDUwMDkzLCAKKyAgICA1MDA5OSwgNTAxMDIsIDUwMTA4LCA1MDExMSwgNTAxMTYsIDUwMTIxLCA1MDEyNSwgNTAxMjcsIDUwMTI5LCA1MDEzMywgCisgICAgNTAxMzcsIDUwMTQxLCA1MDE0NSwgNTAxNTAsIDUwMTUyLCA1MDE1NywgNTAxNjAsIDUwMTYzLCA1MDE2NiwgNTAxNzAsIAorICAgIDUwMTc0LCA1MDE3OSwgNTAxODMsIDUwMTg4LCA1MDE5MywgNTAxOTcsIDUwMjAyLCA1MDIwOCwgNTAyMTEsIDUwMjE3LCAKKyAgICA1MDIyMiwgNTAyMjYsIDUwMjMxLCA1MDIzNywgNTAyNDMsIDUwMjUwLCA1MDI1NiwgNTAyNjMsIDUwMjcwLCA1MDI3MiwgCisgICAgNTAyNzksIDUwMjgzLCA1MDI4OSwgNTAyOTUsIDUwMzAwLCA1MDMwNiwgNTAzMTAsIDUwMzE1LCA1MDMxOCwgNTAzMjMsIAorICAgIDUwMzI5LCA1MDMzNiwgNTAzNDQsIDUwMzUxLCA1MDM2MCwgNTAzNzAsIDUwMzc3LCA1MDM4MywgNTAzODcsIDUwMzk0LCAKKyAgICA1MDM5OSwgNTA0MDgsIDUwNDExLCA1MDQxNCwgNTA0MjMsIDUwNDMzLCA1MDQ0MCwgNTA0NDIsIDUwNDQ4LCA1MDQ1MywgCisgICAgNTA0NTUsIDUwNDU4LCA1MDQ2MiwgNTA0NzAsIDUwNDc5LCA1MDQ4MiwgNTA0ODcsIDUwNDkyLCA1MDUwMCwgNTA1MDgsIAorICAgIDUwNTE2LCA1MDUyNCwgNTA1MzAsIDUwNTM2LCA1MDU0MiwgNTA1NTAsIDUwNTU1LCA1MDU1OCwgNTA1NjIsIDUwNTY1LCAKKyAgICA1MDU3NywgNTA1ODcsIDUwNTk4LCA1MDYwNywgNTA2MTgsIDUwNjI4LCA1MDYzNywgNTA2NDMsIDUwNjUxLCA1MDY1NSwgCisgICAgNTA2NjMsIDUwNjY3LCA1MDY3NSwgNTA2ODIsIDUwNjg5LCA1MDY5OCwgNTA3MDcsIDUwNzE3LCA1MDcyNywgNTA3MzcsIAorICAgIDUwNzQ3LCA1MDc1NiwgNTA3NjUsIDUwNzc1LCA1MDc4NSwgNTA3OTQsIDUwODAzLCA1MDgwOSwgNTA4MTUsIDUwODIxLCAKKyAgICA1MDgyNywgNTA4MzMsIDUwODM5LCA1MDg0NiwgNTA4NTIsIDUwODU5LCA1MDg2NiwgNTA4NzIsIDUwODc4LCA1MDg4NCwgCisgICAgNTA4OTAsIDUwODk2LCA1MDkwMiwgNTA5MDksIDUwOTE1LCA1MDkyMiwgNTA5MjksIDUwOTM2LCA1MDk0MywgNTA5NTAsIAorICAgIDUwOTU3LCA1MDk2NCwgNTA5NzEsIDUwOTc5LCA1MDk4NiwgNTA5OTQsIDUxMDAyLCA1MTAwNywgNTEwMTAsIDUxMDE0LCAKKyAgICA1MTAxOCwgNTEwMjQsIDUxMDI3LCA1MTAzMiwgNTEwMzgsIDUxMDQzLCA1MTA0NywgNTEwNTIsIDUxMDU4LCA1MTA2NSwgCisgICAgNTEwNjgsIDUxMDc1LCA1MTA4MiwgNTEwODYsIDUxMDk0LCA1MTEwMiwgNTExMDcsIDUxMTEzLCA1MTExOCwgNTExMjMsIAorICAgIDUxMTMwLCA1MTEzNywgNTExNDUsIDUxMTUzLCA1MTE2MiwgNTExNjYsIDUxMTc1LCA1MTE4MCwgNTExODQsIDUxMTkxLCAKKyAgICA1MTE5NSwgNTEyMDEsIDUxMjA5LCA1MTIxNCwgNTEyMjEsIDUxMjI1LCA1MTIzMCwgNTEyMzQsIDUxMjM5LCA1MTI0MywgCisgICAgNTEyNDgsIDUxMjUzLCA1MTI2MiwgNTEyNjQsIDUxMjY3LCA1MTI3MCwgNTEyNzcsIDUxMjg0LCA1MTI5MCwgNTEyOTgsIAorICAgIDUxMzA0LCA1MTMxMSwgNTEzMTYsIDUxMzE5LCA1MTMyNCwgNTEzMjksIDUxMzM0LCA1MTM0MiwgNTEzNDYsIDUxMzUzLCAKKyAgICA1MTM2MSwgNTEzNjksIDUxMzc0LCA1MTM3OSwgNTEzODUsIDUxMzkwLCA1MTM5NSwgNTE0MDEsIDUxNDA2LCA1MTQwOSwgCisgICAgNTE0MTMsIDUxNDE3LCA1MTQyNCwgNTE0MzQsIDUxNDM5LCA1MTQ0OCwgNTE0NTcsIDUxNDYzLCA1MTQ2OSwgNTE0NzQsIAorICAgIDUxNDc5LCA1MTQ4NCwgNTE0ODksIDUxNDk1LCA1MTUwMSwgNTE1MDksIDUxNTE3LCA1MTUyMywgNTE1MjksIDUxNTMzLCAKKyAgICA1MTUzNywgNTE1NDQsIDUxNTUxLCA1MTU1NywgNTE1NjAsIDUxNTYzLCA1MTU2NywgNTE1NzEsIDUxNTc1LCA1MTU4MCwgCisgICAgNTE1ODYsIDUxNTkyLCA1MTU5OSwgNTE2MDYsIDUxNjExLCA1MTYxNSwgNTE2MTksIDUxNjIzLCA1MTYyNywgNTE2MzEsIAorICAgIDUxNjM1LCA1MTYzOSwgNTE2NDMsIDUxNjQ3LCA1MTY1MSwgNTE2NTUsIDUxNjU5LCA1MTY2MywgNTE2NjcsIDUxNjcxLCAKKyAgICA1MTY3NSwgNTE2NzksIDUxNjgzLCA1MTY4NywgNTE2OTEsIDUxNjk1LCA1MTY5OSwgNTE3MDMsIDUxNzA3LCA1MTcxMSwgCisgICAgNTE3MTUsIDUxNzE5LCA1MTcyMywgNTE3MjcsIDUxNzMxLCA1MTczNSwgNTE3MzksIDUxNzQzLCA1MTc0NywgNTE3NTEsIAorICAgIDUxNzU1LCA1MTc1OSwgNTE3NjMsIDUxNzY3LCA1MTc3MSwgNTE3NzUsIDUxNzc5LCA1MTc4MywgNTE3ODcsIDUxNzkxLCAKKyAgICA1MTc5NSwgNTE3OTksIDUxODAzLCA1MTgwNywgNTE4MTEsIDUxODE1LCA1MTgxOSwgNTE4MjMsIDUxODI3LCA1MTgzMSwgCisgICAgNTE4MzUsIDUxODM5LCA1MTg0MywgNTE4NDcsIDUxODUxLCA1MTg1NSwgNTE4NTksIDUxODYzLCA1MTg2NywgNTE4NzEsIAorICAgIDUxODc1LCA1MTg3OSwgNTE4ODMsIDUxODg3LCA1MTg5MSwgNTE4OTUsIDUxODk5LCA1MTkwMywgNTE5MDcsIDUxOTExLCAKKyAgICA1MTkxNSwgNTE5MTksIDUxOTIzLCA1MTkyNywgNTE5MzEsIDUxOTM1LCA1MTkzOSwgNTE5NDMsIDUxOTQ3LCA1MTk1MSwgCisgICAgNTE5NTUsIDUxOTU5LCA1MTk2MywgNTE5NjcsIDUxOTcxLCA1MTk3NSwgNTE5NzksIDUxOTgzLCA1MTk4NywgNTE5OTEsIAorICAgIDUxOTk1LCA1MTk5OSwgNTIwMDMsIDUyMDA3LCA1MjAxMSwgNTIwMTUsIDUyMDE5LCA1MjAyMywgNTIwMjcsIDUyMDMxLCAKKyAgICA1MjAzNSwgNTIwMzksIDUyMDQzLCA1MjA0NywgNTIwNTEsIDUyMDU1LCA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MSwgCisgICAgNTIwNzUsIDUyMDc5LCA1MjA4MywgNTIwODcsIDUyMDkxLCA1MjA5NSwgNTIwOTksIDUyMTAzLCA1MjEwNywgNTIxMTEsIAorICAgIDUyMTE1LCA1MjExOSwgNTIxMjMsIDUyMTI3LCA1MjEzMSwgNTIxMzUsIDUyMTM5LCA1MjE0MywgNTIxNDcsIDUyMTUxLCAKKyAgICA1MjE1NSwgNTIxNTksIDUyMTYzLCA1MjE2NywgNTIxNzEsIDUyMTc1LCA1MjE3OSwgNTIxODMsIDUyMTg3LCA1MjE5MSwgCisgICAgNTIxOTUsIDUyMTk5LCA1MjIwMywgNTIyMDcsIDUyMjExLCA1MjIxNSwgNTIyMTksIDUyMjIzLCA1MjIyNywgNTIyMzEsIAorICAgIDUyMjM1LCA1MjIzOSwgNTIyNDMsIDUyMjQ3LCA1MjI1MSwgNTIyNTUsIDUyMjU5LCA1MjI2MywgNTIyNjcsIDUyMjcxLCAKKyAgICA1MjI3NSwgNTIyNzksIDUyMjgzLCA1MjI4NywgNTIyOTEsIDUyMjk1LCA1MjI5OSwgNTIzMDMsIDUyMzA3LCA1MjMxMSwgCisgICAgNTIzMTUsIDUyMzE5LCA1MjMyMywgNTIzMjcsIDUyMzMxLCA1MjMzNSwgNTIzMzksIDUyMzQzLCA1MjM0NywgNTIzNTEsIAorICAgIDUyMzU1LCA1MjM1OSwgNTIzNjMsIDUyMzY3LCA1MjM3MSwgNTIzNzUsIDUyMzc5LCA1MjM4MywgNTIzODcsIDUyMzkxLCAKKyAgICA1MjM5NSwgNTIzOTksIDUyNDAzLCA1MjQwNywgNTI0MTEsIDUyNDE1LCA1MjQxOSwgNTI0MjMsIDUyNDI3LCA1MjQzMSwgCisgICAgNTI0MzUsIDUyNDM5LCA1MjQ0MywgNTI0NDcsIDUyNDUxLCA1MjQ1NSwgNTI0NTksIDUyNDYzLCA1MjQ2NywgNTI0NzEsIAorICAgIDUyNDc1LCA1MjQ3OSwgNTI0ODMsIDUyNDg3LCA1MjQ5MSwgNTI0OTUsIDUyNDk5LCA1MjUwMywgNTI1MDcsIDUyNTExLCAKKyAgICA1MjUxNSwgNTI1MTksIDUyNTIzLCA1MjUyNywgNTI1MzEsIDUyNTM1LCA1MjUzOSwgNTI1NDMsIDUyNTQ3LCA1MjU1MSwgCisgICAgNTI1NTUsIDUyNTU5LCA1MjU2MywgNTI1NjcsIDUyNTcxLCA1MjU3NSwgNTI1NzksIDUyNTgzLCA1MjU4NywgNTI1OTEsIAorICAgIDUyNTk1LCA1MjU5OSwgNTI2MDMsIDUyNjA3LCA1MjYxMSwgNTI2MTUsIDUyNjE5LCA1MjYyMywgNTI2MjcsIDUyNjMxLCAKKyAgICA1MjYzNSwgNTI2NDIsIDUyNjUwLCA1MjY1NiwgNTI2NjIsIDUyNjY5LCA1MjY3NiwgNTI2ODIsIDUyNjg4LCA1MjY5NCwgCisgICAgNTI3MDAsIDUyNzA0LCA1MjcwOCwgNTI3MTMsIDUyNzE4LCA1MjcyNCwgNTI3MzAsIDUyNzM4LCA1Mjc0NSwgNTI3NTAsIAorICAgIDUyNzU1LCA1Mjc2MywgNTI3NzIsIDUyNzc5LCA1Mjc4OSwgNTI4MDAsIDUyODAzLCA1MjgwNiwgNTI4MTAsIDUyODE0LCAKKyAgICA1MjgyMSwgNTI4MjgsIDUyODM5LCA1Mjg1MCwgNTI4NTksIDUyODY4LCA1Mjg3NCwgNTI4ODAsIDUyODg3LCA1Mjg5NCwgCisgICAgNTI5MDMsIDUyOTEzLCA1MjkyNCwgNTI5MzQsIDUyOTQ0LCA1Mjk1NCwgNTI5NjUsIDUyOTc2LCA1Mjk4NiwgNTI5OTcsIAorICAgIDUzMDA3LCA1MzAxNywgNTMwMjYsIDUzMDM2LCA1MzA0NiwgNTMwNTYsIDUzMDY2LCA1MzA3MywgNTMwODAsIDUzMDg3LCAKKyAgICA1MzA5NCwgNTMxMDQsIDUzMTE0LCA1MzEyMiwgNTMxMzAsIDUzMTM3LCA1MzE0NCwgNTMxNTEsIDUzMTU4LCA1MzE2NSwgCisgICAgNTMxNzAsIDUzMTc1LCA1MzE4MSwgNTMxODksIDUzMTk4LCA1MzIwNiwgNTMyMTQsIDUzMjIyLCA1MzIzMCwgNTMyMzgsIAorICAgIDUzMjQ2LCA1MzI1NCwgNTMyNjIsIDUzMjcxLCA1MzI4MCwgNTMyODksIDUzMjk4LCA1MzMwNywgNTMzMTYsIDUzMzI1LCAKKyAgICA1MzMzNCwgNTMzNDMsIDUzMzUyLCA1MzM2MSwgNTMzNzAsIDUzMzc5LCA1MzM4OCwgNTMzOTcsIDUzNDA2LCA1MzQyMCwgCisgICAgNTM0MzUsIDUzNDQ5LCA1MzQ2NCwgNTM0NzgsIDUzNDkyLCA1MzUwNiwgNTM1MjAsIDUzNTMwLCA1MzU0MSwgNTM1NTEsIAorICAgIDUzNTYyLCA1MzU3NywgNTM1OTIsIDUzNjAwLCA1MzYwNiwgNTM2MTMsIDUzNjIwLCA1MzYyNywgNTM2MzQsIDUzNjM5LCAKKyAgICA1MzY0NSwgNTM2NTAsIDUzNjU1LCA1MzY2MSwgNTM2NjYsIDUzNjcxLCA1MzY3NiwgNTM2ODEsIDUzNjg2LCA1MzY5MywgCisgICAgNTM2OTksIDUzNzA3LCA1MzcxMiwgNTM3MTcsIDUzNzIxLCA1MzcyNSwgNTM3MzMsIDUzNzQxLCA1Mzc0OSwgNTM3NTcsIAorICAgIDUzNzY0LCA1Mzc3MSwgNTM3ODQsIDUzNzk3LCA1MzgxMCwgNTM4MjMsIDUzODMxLCA1MzgzOSwgNTM4NDUsIDUzODUxLCAKKyAgICA1Mzg1OCwgNTM4NjUsIDUzODcyLCA1Mzg3OSwgNTM4ODMsIDUzODg4LCA1Mzg5NiwgNTM5MDQsIDUzOTEyLCA1MzkxOSwgCisgICAgNTM5MjMsIDUzOTMxLCA1MzkzOSwgNTM5NDMsIDUzOTQ3LCA1Mzk1MiwgNTM5NTksIDUzOTY3LCA1Mzk3NSwgNTM5OTQsIAorICAgIDU0MDEzLCA1NDAzMiwgNTQwNTEsIDU0MDcwLCA1NDA4OSwgNTQxMDgsIDU0MTI3LCA1NDEzMywgNTQxNDAsIDU0MTQ5LCAKKyAgICA1NDE1NywgNTQxNjUsIDU0MTcxLCA1NDE3NCwgNTQxNzcsIDU0MTgyLCA1NDE4NSwgNTQyMDUsIDU0MjEyLCA1NDIxOCwgCisgICAgNTQyMjQsIDU0MjI4LCA1NDIzMSwgNTQyMzQsIDU0MjM3LCA1NDI0OSwgNTQyNjMsIDU0MjcwLCA1NDI3NywgNTQyODAsIAorICAgIDU0Mjg0LCA1NDI4NywgNTQyOTIsIDU0Mjk3LCA1NDMwMiwgNTQzMDgsIDU0MzE3LCA1NDMyNCwgNTQzMzEsIDU0MzM5LCAKKyAgICA1NDM0NiwgNTQzNTMsIDU0MzU2LCA1NDM2MiwgNTQzNjgsIDU0MzcxLCA1NDM3NCwgNTQzNzksIDU0Mzg0LCA1NDM5MCwgCisgICAgNTQzOTYsIDU0NDAwLCA1NDQwNSwgNTQ0MTIsIDU0NDE2LCA1NDQyMiwgNTQ0MjYsIDU0NDMwLCA1NDQzOCwgNTQ0NTAsIAorICAgIDU0NDU5LCA1NDQ2MywgNTQ0NjUsIDU0NDc0LCA1NDQ4MywgNTQ0ODksIDU0NDkyLCA1NDQ5OCwgNTQ1MDQsIDU0NTA5LCAKKyAgICA1NDUxNCwgNTQ1MTksIDU0NTI0LCA1NDUyOSwgNTQ1MzQsIDU0NTM2LCA1NDU0MiwgNTQ1NDcsIDU0NTU1LCA1NDU1OSwgCisgICAgNTQ1NjUsIDU0NTY4LCA1NDU3MiwgNTQ1NzksIDU0NTg2LCA1NDU4OCwgNTQ1OTAsIDU0NTk2LCA1NDYwMiwgNTQ2MDgsIAorICAgIDU0NjE3LCA1NDYyNiwgNTQ2MzMsIDU0NjQwLCA1NDY0NiwgNTQ2NTMsIDU0NjU4LCA1NDY2MywgNTQ2NjgsIDU0Njc0LCAKKyAgICA1NDY4MCwgNTQ2ODUsIDU0NjkyLCA1NDY5NiwgNTQ3MDAsIDU0NzEzLCA1NDcyNiwgNTQ3MzgsIDU0NzQ3LCA1NDc1MywgCisgICAgNTQ3NjAsIDU0NzY1LCA1NDc3MCwgNTQ3NzUsIDU0NzgwLCA1NDc4NSwgNTQ3ODcsIDU0Nzk0LCA1NDgwMiwgNTQ4MTAsIAorICAgIDU0ODE4LCA1NDgyNSwgNTQ4MzMsIDU0ODM5LCA1NDg0NCwgNTQ4NTAsIDU0ODU2LCA1NDg2MiwgNTQ4NjksIDU0ODc1LCAKKyAgICA1NDg4MywgNTQ4OTEsIDU0ODk5LCA1NDkwNywgNTQ5MTUsIDU0OTIxLCA1NDkyNywgNTQ5MzYsIDU0OTQwLCA1NDk0OSwgCisgICAgNTQ5NTgsIDU0OTY3LCA1NDk3NSwgNTQ5NzksIDU0OTg1LCA1NDk5MiwgNTQ5OTksIDU1MDAzLCA1NTAwOSwgNTUwMTcsIAorICAgIDU1MDIzLCA1NTAyOCwgNTUwMzQsIDU1MDM5LCA1NTA0NCwgNTUwNTEsIDU1MDU4LCA1NTA2MywgNTUwNjgsIDU1MDc2LCAKKyAgICA1NTA4NCwgNTUwOTQsIDU1MTA0LCA1NTExMSwgNTUxMTgsIDU1MTIyLCA1NTEyNiwgNTUxMzgsIDU1MTQ0LCA1NTE1MSwgCisgICAgNTUxNTYsIDU1MTYxLCA1NTE2OCwgNTUxNzUsIDU1MTgxLCA1NTE4NywgNTUxOTcsIDU1MjA0LCA1NTIxMiwgNTUyMjAsIAorICAgIDU1MjI5LCA1NTIzNiwgNTUyNDIsIDU1MjQ5LCA1NTI1NSwgNTUyNjMsIDU1MjcxLCA1NTI3OSwgNTUyODcsIDU1MjkzLCAKKyAgICA1NTI5OCwgNTUzMDgsIDU1MzE5LCA1NTMyNiwgNTUzMzUsIDU1MzQxLCA1NTM0NiwgNTUzNTEsIDU1MzYxLCA1NTM2OCwgCisgICAgNTUzNzQsIDU1MzgwLCA1NTM4OCwgNTUzOTMsIDU1NDAwLCA1NTQwNywgNTU0MTgsIDU1NDI1LCA1NTQzMiwgNTU0MzksIAorICAgIDU1NDQ2LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCA1NTQ4MiwgNTU0OTUsIDU1NTA3LCA1NTUxOSwgNTU1MzMsIDU1NTQ3LCAKKyAgICA1NTU1MywgNTU1NTksIDU1NTY4LCA1NTU3NywgNTU1ODQsIDU1NTkxLCA1NTYwMCwgNTU2MDksIDU1NjE4LCA1NTYyNywgCisgICAgNTU2MzUsIDU1NjQzLCA1NTY1MywgNTU2NjMsIDU1Njc3LCA1NTY5MSwgNTU3MDAsIDU1NzA5LCA1NTcyMiwgNTU3MzUsIAorICAgIDU1NzQ0LCA1NTc1MywgNTU3NjQsIDU1Nzc1LCA1NTc4MSwgNTU3ODcsIDU1Nzk2LCA1NTgwNSwgNTU4MTAsIDU1ODE1LCAKKyAgICA1NTgyMywgNTU4MjksIDU1ODM1LCA1NTg0MywgNTU4NTEsIDU1ODY0LCA1NTg3NywgNTU4ODEsIDU1ODg1LCA1NTg5MywgCisgICAgNTU5MDEsIDU1OTA4LCA1NTkxNiwgNTU5MjQsIDU1OTMzLCA1NTk0MiwgNTU5NDgsIDU1OTU0LCA1NTk2MSwgNTU5NjgsIAorICAgIDU1OTc1LCA1NTk4MiwgNTU5OTEsIDU2MDAwLCA1NjAwMywgNTYwMDYsIDU2MDExLCA1NjAxNiwgNTYwMjIsIDU2MDI4LCAKKyAgICA1NjAzNSwgNTYwNDIsIDU2MDUzLCA1NjA2NCwgNTYwNzEsIDU2MDc4LCA1NjA4NiwgNTYwOTQsIDU2MTAyLCA1NjExMCwgCisgICAgNTYxMTgsIDU2MTI2LCA1NjEzMiwgNTYxMzgsIDU2MTQyLCA1NjE0NiwgNTYxNTQsIDU2MTYyLCA1NjE2NywgNTYxNzIsIAorICAgIDU2MTc3LCA1NjE4MiwgNTYxODgsIDU2MjAyLCA1NjIwOSwgNTYyMTYsIDU2MjIwLCA1NjIyMiwgNTYyMjQsIDU2MjI5LCAKKyAgICA1NjIzNCwgNTYyMzksIDU2MjQ0LCA1NjI1MiwgNTYyNTksIDU2MjY2LCA1NjI3NCwgNTYyODYsIDU2Mjk0LCA1NjMwMiwgCisgICAgNTYzMTMsIDU2MzE3LCA1NjMyMSwgNTYzMjcsIDU2MzM1LCA1NjM0OCwgNTYzNTUsIDU2MzYyLCA1NjM2OSwgNTYzNzUsIAorICAgIDU2MzgyLCA1NjM5MSwgNTY0MDAsIDU2NDA2LCA1NjQxMiwgNTY0MTgsIDU2NDI4LCA1NjQzOCwgNTY0NDYsIDU2NDU1LCAKKyAgICA1NjQ2MCwgNTY0NjMsIDU2NDY4LCA1NjQ3MywgNTY0NzgsIDU2NDg0LCA1NjQ5MCwgNTY0OTQsIDU2NDk3LCA1NjUwMCwgCisgICAgNTY1MDMsIDU2NTA4LCA1NjUxMywgNTY1MTksIDU2NTI1LCA1NjUyOSwgNTY1MzMsIDU2NTQwLCA1NjU0NywgNTY1NTQsIAorICAgIDU2NTYxLCA1NjU2OCwgNTY1NzUsIDU2NTg1LCA1NjU5NSwgNTY2MDIsIDU2NjA5LCA1NjYxNywgNTY2MjUsIDU2NjI5LCAKKyAgICA1NjYzNCwgNTY2MzksIDU2NjQ1LCA1NjY1MSwgNTY2NTQsIDU2NjU3LCA1NjY2MCwgNTY2NjMsIDU2NjY4LCA1NjY3MywgCisgICAgNTY2NzgsIDU2NjgzLCA1NjY4OCwgNTY2OTMsIDU2Njk3LCA1NjcwMSwgNTY3MDUsIDU2NzEwLCA1NjcxNSwgNTY3MTksIAorICAgIDU2NzIzLCA1NjcyOSwgNTY3MzMsIDU2NzM5LCA1Njc0NCwgNTY3NTEsIDU2NzU5LCA1Njc2NiwgNTY3NzQsIDU2NzgxLCAKKyAgICA1Njc4OSwgNTY3OTgsIDU2ODA1LCA1NjgxNSwgNTY4MjYsIDU2ODMyLCA1Njg0MSwgNTY4NDcsIDU2ODU2LCA1Njg2NSwgCisgICAgNTY4NzEsIDU2ODc3LCA1Njg4MSwgNTY4ODUsIDU2ODk0LCA1NjkwMywgNTY5MTAsIDU2OTE3LCA1NjkyNiwgNTY5MzUsIAorICAgIDU2OTQxLCA1Njk0NywgNTY5NTQsIDU2OTU5LCA1Njk2MywgNTY5NjcsIDU2OTcyLCA1Njk3NywgNTY5ODIsIDU2OTkwLCAKKyAgICA1Njk5OCwgNTcwMDEsIDU3MDA1LCA1NzAxNCwgNTcwMjQsIDU3MDMzLCA1NzA0MywgNTcwNTQsIDU3MDY3LCA1NzA3MSwgCisgICAgNTcwNzUsIDU3MDc5LCA1NzA4MywgNTcwODgsIDU3MDkzLCA1NzA5OSwgNTcxMDUsIDU3MTEyLCA1NzExOSwgNTcxMjUsIAorICAgIDU3MTMxLCA1NzEzNywgNTcxNDMsIDU3MTUxLCA1NzE1OSwgNTcxNjYsIDU3MTczLCA1NzE4MCwgMCwgMCwgNTcxODcsIAorICAgIDU3MTk2LCA1NzIwNSwgNTcyMTUsIDU3MjI1LCA1NzIzNCwgNTcyNDMsIDU3MjUyLCA1NzI2MSwgNTcyNjcsIDU3MjcyLCAKKyAgICA1NzI4MSwgNTcyOTEsIDU3MzAwLCA1NzMxMCwgNTczMTcsIDU3MzI0LCA1NzMzMSwgNTczMzgsIDU3MzQzLCA1NzM0OCwgCisgICAgNTczNTMsIDU3MzU4LCA1NzM2NiwgNTczNzUsIDU3MzgzLCA1NzM5MiwgNTczOTYsIDU3NDAwLCA1NzQwNCwgNTc0MDgsIAorICAgIDU3NDE4LCAwLCAwLCA1NzQyMSwgNTc0MzAsIDU3NDM5LCA1NzQ0OCwgNTc0NTcsIDU3NDYzLCA1NzQ2OSwgNTc0NzUsIAorICAgIDU3NDgxLCA1NzQ5MSwgNTc1MDEsIDU3NTExLCA1NzUyMSwgNTc1MzEsIDU3NTQxLCA1NzU1MSwgNTc1NjEsIDU3NTY4LCAKKyAgICA1NzU3NSwgNTc1ODIsIDU3NTg5LCA1NzU5NiwgNTc2MDMsIDU3NjEwLCA1NzYxNywgNTc2MjMsIDU3NjI5LCA1NzYzNSwgCisgICAgNTc2NDEsIDU3NjQ3LCA1NzY1MywgNTc2NTksIDU3NjY1LCA1NzY3NiwgMCwgMCwgMCwgNTc2ODYsIDU3NjkzLCA1NzY5NiwgCisgICAgNTc3MDAsIDU3NzA0LCA1NzcwOSwgNTc3MTQsIDU3NzE5LCA1NzcyMiwgNTc3MzEsIDU3NzQwLCA1Nzc0OSwgMCwgNTc3NTgsIAorICAgIDU3NzY0LCA1Nzc3MCwgNTc3NzgsIDU3Nzg4LCA1Nzc5NSwgNTc4MDQsIDU3ODA5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzgxMiwgNTc4MjEsIAorICAgIDU3ODMwLCA1NzgzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTc4NDgsIAorICAgIDU3ODUzLCA1Nzg1OCwgNTc4NjMsIDU3ODY4LCA1Nzg3MywgNTc4NzgsIDU3ODgzLCA1Nzg4OCwgNTc4OTMsIDU3ODk4LCAKKyAgICA1NzkwNCwgNTc5MDgsIDU3OTEzLCA1NzkxOCwgNTc5MjMsIDU3OTI4LCA1NzkzMywgNTc5MzgsIDU3OTQzLCA1Nzk0OCwgCisgICAgNTc5NTMsIDU3OTU4LCA1Nzk2MywgNTc5NjgsIDU3OTczLCA1Nzk3OCwgNTc5ODMsIDU3OTg4LCA1Nzk5MywgNTc5OTgsIAorICAgIDU4MDAzLCA1ODAwOCwgNTgwMTMsIDU4MDE4LCA1ODAyNCwgNTgwMjksIDU4MDM1LCA1ODA0NCwgNTgwNDksIDU4MDU3LCAKKyAgICA1ODA2NCwgNTgwNzMsIDU4MDc4LCA1ODA4MywgNTgwODgsIDU4MDk0LCAwLCA1ODEwMSwgNTgxMDYsIDU4MTExLCA1ODExNiwgCisgICAgNTgxMjEsIDU4MTI2LCA1ODEzMSwgNTgxMzYsIDU4MTQxLCA1ODE0NiwgNTgxNTEsIDU4MTU3LCA1ODE2MSwgNTgxNjYsIAorICAgIDU4MTcxLCA1ODE3NiwgNTgxODEsIDU4MTg2LCA1ODE5MSwgNTgxOTYsIDU4MjAxLCA1ODIwNiwgNTgyMTEsIDU4MjE2LCAKKyAgICA1ODIyMSwgNTgyMjYsIDU4MjMxLCA1ODIzNiwgNTgyNDEsIDU4MjQ2LCA1ODI1MSwgNTgyNTYsIDU4MjYxLCA1ODI2NiwgCisgICAgNTgyNzEsIDU4Mjc3LCA1ODI4MiwgNTgyODgsIDU4Mjk3LCA1ODMwMiwgNTgzMTAsIDU4MzE3LCA1ODMyNiwgNTgzMzEsIAorICAgIDU4MzM2LCA1ODM0MSwgNTgzNDcsIDAsIDU4MzU0LCA1ODM2MiwgNTgzNzAsIDU4Mzc5LCA1ODM4NiwgNTgzOTQsIDU4NDAwLCAKKyAgICA1ODQwOSwgNTg0MTcsIDU4NDI1LCA1ODQzMywgNTg0NDEsIDU4NDQ5LCA1ODQ1NywgNTg0NjIsIDU4NDY5LCA1ODQ3NSwgCisgICAgNTg0ODIsIDU4NDkwLCA1ODQ5NywgNTg1MDQsIDU4NTEyLCA1ODUxOCwgNTg1MjQsIDU4NTMxLCA1ODUzOCwgNTg1NDgsIAorICAgIDU4NTU4LCA1ODU2NSwgNTg1NzIsIDU4NTc3LCA1ODU4NywgNTg1OTcsIDU4NjAyLCA1ODYwNywgNTg2MTIsIDU4NjE3LCAKKyAgICA1ODYyMiwgNTg2MjcsIDU4NjMyLCA1ODYzNywgNTg2NDIsIDU4NjQ3LCA1ODY1MiwgNTg2NTcsIDU4NjYyLCA1ODY2NywgCisgICAgNTg2NzIsIDU4Njc3LCA1ODY4MiwgNTg2ODcsIDU4NjkyLCA1ODY5NywgNTg3MDIsIDU4NzA3LCA1ODcxMiwgNTg3MTcsIAorICAgIDU4NzIyLCA1ODcyNywgNTg3MzIsIDU4NzM3LCA1ODc0MiwgNTg3NDcsIDU4NzUxLCA1ODc1NSwgNTg3NjAsIDU4NzY1LCAKKyAgICA1ODc3MCwgNTg3NzUsIDU4NzgwLCA1ODc4NSwgNTg3OTAsIDU4Nzk1LCA1ODgwMCwgNTg4MDUsIDU4ODEwLCA1ODgxNSwgCisgICAgNTg4MjAsIDU4ODI1LCA1ODgzMCwgNTg4MzUsIDU4ODQwLCA1ODg0NSwgNTg4NTIsIDU4ODU5LCA1ODg2NiwgNTg4NzMsIAorICAgIDU4ODgwLCA1ODg4NywgNTg4OTQsIDU4OTAxLCA1ODkwOCwgNTg5MTUsIDU4OTIyLCA1ODkyOSwgNTg5MzYsIDU4OTQzLCAKKyAgICA1ODk0OCwgNTg5NTMsIDU4OTYwLCA1ODk2NywgNTg5NzQsIDU4OTgxLCA1ODk4OCwgNTg5OTUsIDU5MDAyLCA1OTAwOSwgCisgICAgNTkwMTYsIDU5MDIzLCA1OTAzMCwgNTkwMzcsIDU5MDQzLCA1OTA0OSwgNTkwNTUsIDU5MDYxLCA1OTA2OCwgNTkwNzUsIAorICAgIDU5MDgyLCA1OTA4OSwgNTkwOTYsIDU5MTAzLCA1OTExMCwgNTkxMTcsIDU5MTI0LCA1OTEzMSwgNTkxMzksIDU5MTQ3LCAKKyAgICA1OTE1NSwgNTkxNjMsIDU5MTcxLCA1OTE3OSwgNTkxODcsIDU5MTk1LCA1OTE5OSwgNTkyMDUsIDU5MjExLCA1OTIxNSwgCisgICAgNTkyMjEsIDU5MjI3LCA1OTIzMywgNTkyNDAsIDU5MjQ3LCA1OTI1NCwgNTkyNjEsIDU5MjY2LCA1OTI3MiwgNTkyNzgsIAorICAgIDU5Mjg1LCAwLCAwLCAwLCAwLCAwLCA1OTI5MiwgNTkzMDAsIDU5MzA5LCA1OTMxOCwgNTkzMjYsIDU5MzMyLCA1OTMzNywgCisgICAgNTkzNDIsIDU5MzQ3LCA1OTM1MiwgNTkzNTcsIDU5MzYyLCA1OTM2NywgNTkzNzIsIDU5Mzc3LCA1OTM4MiwgNTkzODcsIAorICAgIDU5MzkyLCA1OTM5NywgNTk0MDIsIDU5NDA3LCA1OTQxMiwgNTk0MTcsIDU5NDIyLCA1OTQyNywgNTk0MzIsIDU5NDM3LCAKKyAgICA1OTQ0MiwgNTk0NDcsIDU5NDUyLCA1OTQ1NywgNTk0NjIsIDU5NDY3LCA1OTQ3MiwgNTk0NzcsIDU5NDgyLCA1OTQ4NywgCisgICAgNTk0OTIsIDU5NDk3LCA1OTUwMiwgNTk1MDcsIDU5NTEyLCA1OTUxNywgNTk1MjIsIDU5NTI3LCAwLCA1OTUzMiwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTk1MzcsIDAsIDAsIDU5NTQyLCA1OTU0NiwgNTk1NTEsIDU5NTU2LCA1OTU2MSwgNTk1NjYsIDU5NTc1LCAKKyAgICA1OTU4MCwgNTk1ODUsIDU5NTkwLCA1OTU5NSwgNTk2MDAsIDU5NjA1LCA1OTYxMCwgNTk2MTUsIDU5NjIyLCA1OTYyNywgCisgICAgNTk2MzIsIDU5NjQxLCA1OTY0OCwgNTk2NTMsIDU5NjU4LCA1OTY2MywgNTk2NzAsIDU5Njc1LCA1OTY4MiwgNTk2ODcsIAorICAgIDU5NjkyLCA1OTY5OSwgNTk3MDYsIDU5NzExLCA1OTcxNiwgNTk3MjEsIDU5NzI4LCA1OTczNSwgNTk3NDAsIDU5NzQ1LCAKKyAgICA1OTc1MCwgNTk3NTUsIDU5NzYwLCA1OTc2NywgNTk3NzQsIDU5Nzc5LCA1OTc4NCwgNTk3ODksIDU5Nzk0LCA1OTc5OSwgCisgICAgNTk4MDQsIDU5ODA5LCA1OTgxNCwgNTk4MTksIDU5ODI0LCA1OTgyOSwgNTk4MzYsIDU5ODQxLCA1OTg0NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTk4NTEsIDU5ODU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1OTg2MywgNTk4NjgsIDU5ODcyLCA1OTg3NiwgNTk4ODAsIDU5ODg0LCA1OTg4OCwgNTk4OTIsIDU5ODk2LCA1OTkwMCwgCisgICAgNTk5MDQsIDU5OTA4LCA1OTkxNCwgNTk5MTgsIDU5OTIyLCA1OTkyNiwgNTk5MzAsIDU5OTM0LCA1OTkzOCwgNTk5NDIsIAorICAgIDU5OTQ2LCA1OTk1MCwgNTk5NTQsIDU5OTU4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1OTk2MiwgNTk5NjYsIAorICAgIDU5OTcwLCA1OTk3NCwgNTk5NzgsIDU5OTgyLCA1OTk4NiwgMCwgNTk5OTAsIDU5OTk0LCA1OTk5OCwgNjAwMDIsIDYwMDA2LCAKKyAgICA2MDAxMCwgNjAwMTQsIDAsIDYwMDE4LCA2MDAyMiwgNjAwMjYsIDYwMDMwLCA2MDAzNCwgNjAwMzgsIDYwMDQyLCAwLCAKKyAgICA2MDA0NiwgNjAwNTAsIDYwMDU0LCA2MDA1OCwgNjAwNjIsIDYwMDY2LCA2MDA3MCwgMCwgNjAwNzQsIDYwMDc4LCA2MDA4MiwgCisgICAgNjAwODYsIDYwMDkwLCA2MDA5NCwgNjAwOTgsIDAsIDYwMTAyLCA2MDEwNiwgNjAxMTAsIDYwMTE0LCA2MDExOCwgNjAxMjIsIAorICAgIDYwMTI2LCAwLCA2MDEzMCwgNjAxMzQsIDYwMTM4LCA2MDE0MiwgNjAxNDYsIDYwMTUwLCA2MDE1NCwgMCwgNjAxNTgsIAorICAgIDYwMTYyLCA2MDE2NiwgNjAxNzAsIDYwMTc0LCA2MDE3OCwgNjAxODIsIDAsIDYwMTg2LCA2MDE5MSwgNjAxOTYsIDYwMjAxLCAKKyAgICA2MDIwNiwgNjAyMTEsIDYwMjE2LCA2MDIyMCwgNjAyMjUsIDYwMjMwLCA2MDIzNSwgNjAyMzksIDYwMjQ0LCA2MDI0OSwgCisgICAgNjAyNTQsIDYwMjU5LCA2MDI2MywgNjAyNjgsIDYwMjczLCA2MDI3OCwgNjAyODMsIDYwMjg4LCA2MDI5MywgNjAyOTcsIAorICAgIDYwMzAyLCA2MDMwNywgNjAzMTQsIDYwMzE5LCA2MDMyNCwgNjAzMzAsIDYwMzM3LCA2MDM0NCwgNjAzNTMsIDYwMzYwLCAKKyAgICA2MDM2OSwgNjAzNzMsIDYwMzc3LCA2MDM4MywgNjAzODksIDYwMzk1LCA2MDQwMywgNjA0MDksIDYwNDEzLCA2MDQxNywgCisgICAgNjA0MjEsIDYwNDI3LCA2MDQzMywgNjA0MzcsIDYwNDM5LCA2MDQ0MywgNjA0NDksIDYwNDUxLCA2MDQ1NSwgNjA0NTgsIAorICAgIDYwNDYxLCA2MDQ2NywgNjA0NzIsIDYwNDc2LCA2MDQ4MCwgNjA0ODUsIDYwNDkxLCA2MDQ5NiwgNjA1MDEsIDYwNTA2LCAKKyAgICA2MDUxMSwgNjA1MTgsIDYwNTI1LCA2MDUzMCwgNjA1MzUsIDYwNTQwLCA2MDU0NSwgNjA1NTAsIDYwNTU1LCA2MDU1OSwgCisgICAgNjA1NjMsIDYwNTcwLCA2MDU3NywgNjA1ODMsIDYwNTg3LCA2MDU5MiwgNjA1OTUsIDYwNTk5LCA2MDYwNiwgNjA2MTAsIAorICAgIDYwNjE0LCA2MDYxOCwgNjA2MjIsIDYwNjI4LCA2MDYzNCwgNjA2MzgsIDYwNjQ0LCA2MDY0OCwgNjA2NTIsIDYwNjU4LCAKKyAgICA2MDY2MywgNjA2NjgsIDYwNjcwLCA2MDY3MywgNjA2NzcsIDYwNjgzLCA2MDY4OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzE0NTAsIDMxNDU2LCAzMTQ2MiwgMzE0NjYsIDMxNDcwLCAzMTQ3NCwgCi0gICAgMzE0NzgsIDMxNDg0LCAzMTQ4OCwgMzE0OTQsIDMxNDk4LCAzMTUwNCwgMzE1MTAsIDMxNTE4LCAzMTUyNCwgMzE1MzIsIAotICAgIDMxNTM2LCAzMTU0MCwgMzE1NDQsIDMxNTUwLCAzMTU1MywgMzE1NTksIDMxNTYzLCAzMTU2OSwgMzE1NzMsIDMxNTc3LCAKLSAgICAzMTU4MywgMzE1ODcsIDMxNTkzLCAzMTU5NywgMzE2MDMsIDMxNjExLCAzMTYxOSwgMzE2MjcsIDMxNjMzLCAzMTYzNywgCi0gICAgMzE2NDMsIDMxNjQ3LCAzMTY1MywgMzE2NTcsIDMxNjYwLCAzMTY2NiwgMzE2NzAsIDMxNjc2LCAzMTY3OSwgMzE2ODIsIAotICAgIDMxNjg2LCAzMTY5MCwgMzE2OTQsIDMxNzAwLCAzMTcwNiwgMzE3MTAsIDMxNzEzLCAzMTcxNywgMzE3MjIsIDMxNzI3LCAKLSAgICAzMTczNCwgMzE3MzksIDMxNzQ2LCAzMTc1MywgMzE3NjIsIDMxNzY5LCAzMTc3OCwgMzE3ODMsIDMxNzkwLCAzMTc5NywgCi0gICAgMzE4MDYsIDMxODExLCAzMTgxOCwgMzE4MjMsIDMxODI5LCAzMTgzNSwgMzE4NDEsIDMxODQ3LCAzMTg1MywgMzE4NTksIDAsIAotICAgIDAsIDAsIDAsIDMxODY1LCAzMTg2OSwgMzE4NzIsIDMxODc1LCAzMTg3OCwgMzE4ODEsIDMxODg0LCAzMTg4NywgMzE4OTEsIAotICAgIDMxODk0LCAzMTg5OCwgMzE5MDEsIDMxOTA0LCAzMTkwNywgMzE5MTIsIDMxOTE3LCAzMTkyMiwgMzE5MjUsIDMxOTMwLCAKLSAgICAzMTkzNSwgMzE5NDAsIDMxOTQ1LCAzMTk1MiwgMzE5NTcsIDMxOTYyLCAzMTk2NywgMzE5NzIsIDMxOTc5LCAzMTk4NSwgCi0gICAgMzE5OTEsIDMxOTk3LCAzMjAwMywgMzIwMDksIDMyMDE4LCAzMjAyNywgMzIwMzMsIDMyMDM5LCAzMjA0NywgMzIwNTUsIAotICAgIDMyMDY0LCAzMjA3MywgMzIwODEsIDMyMDg5LCAzMjA5OCwgMzIxMDcsIDAsIDAsIDAsIDMyMTE1LCAzMjEyMCwgMzIxMjUsIAotICAgIDMyMTMwLCAzMjEzNCwgMzIxMzgsIDMyMTQyLCAzMjE0NywgMzIxNTEsIDMyMTU1LCAzMjE2MCwgMzIxNjQsIDMyMTY5LCAKLSAgICAzMjE3NCwgMzIxNzksIDMyMTg0LCAzMjE4OSwgMzIxOTQsIDMyMTk5LCAzMjIwNCwgMzIyMDksIDMyMjE0LCAzMjIxOCwgCi0gICAgMzIyMjMsIDMyMjI4LCAzMjIzMywgMzIyMzcsIDMyMjQxLCAzMjI0NiwgMzIyNTEsIDMyMjU2LCAzMjI2MSwgMzIyNjYsIAotICAgIDMyMjcwLCAzMjI3NiwgMzIyODIsIDMyMjg4LCAzMjI5NCwgMzIzMDAsIDMyMzA2LCAzMjMxMiwgMzIzMTgsIDMyMzI0LCAKLSAgICAzMjMyOSwgMzIzMzQsIDMyMzQxLCAzMjM0OSwgMzIzNTQsIDMyMzU5LCAzMjM2NCwgMzIzNjgsIDMyMzcyLCAzMjM3NiwgCi0gICAgMzIzODAsIDMyMzg0LCAzMjM4OCwgMzIzOTMsIDMyMzk3LCAzMjQwMiwgMzI0MDYsIDMyNDExLCAzMjQxNiwgMzI0MjEsIAotICAgIDMyNDI3LCAzMjQzMywgMzI0MzcsIDMyNDQzLCAzMjQ0NywgMzI0NTMsIDMyNDU5LCAzMjQ2NCwgMzI0NzEsIDMyNDc1LCAKLSAgICAzMjQ4MSwgMzI0ODYsIDMyNDkzLCAzMjQ5OCwgMzI1MDUsIDMyNTEyLCAzMjUxNywgMzI1MjQsIDMyNTI5LCAzMjUzNCwgCi0gICAgMzI1MzksIDMyNTQ2LCAzMjU1MCwgMzI1NTYsIDMyNTYzLCAzMjU3MCwgMzI1NzUsIDMyNTgyLCAzMjU4OSwgMzI1OTMsIAotICAgIDMyNTk5LCAzMjYwNCwgMzI2MDksIDMyNjE2LCAzMjYyMSwgMzI2MjYsIDMyNjMxLCAzMjYzNiwgMzI2NDAsIDMyNjQ0LCAKLSAgICAzMjY0OSwgMzI2NTQsIDMyNjYxLCAzMjY2NywgMzI2NzIsIDMyNjc5LCAzMjY4NCwgMzI2OTEsIDMyNjk2LCAzMjcwNiwgCi0gICAgMzI3MTIsIDMyNzE4LCAzMjcyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzI3MjYsIDMyNzM1LCAzMjc0MiwgMzI3NDksIAotICAgIDMyNzU2LCAzMjc2MCwgMzI3NjUsIDMyNzcwLCAzMjc3NSwgMzI3ODAsIDMyNzg1LCAzMjc5MCwgMzI3OTUsIDMyODAwLCAKLSAgICAzMjgwNSwgMzI4MTAsIDMyODE1LCAzMjgyMCwgMzI4MjUsIDMyODI5LCAzMjgzNCwgMzI4MzksIDMyODQ0LCAzMjg0OSwgCi0gICAgMzI4NTQsIDMyODU5LCAzMjg2MywgMzI4NjgsIDMyODczLCAzMjg3OCwgMzI4ODMsIDMyODg3LCAzMjg5MiwgMzI4OTcsIAotICAgIDMyOTAxLCAzMjkwNiwgMzI5MTEsIDMyOTE2LCAzMjkyMSwgMzI5MjYsIDMyOTMwLCAzMjkzNiwgMzI5NDMsIDMyOTQ5LCAKLSAgICAzMjk1NCwgMzI5NTksIDMyOTY1LCAzMjk3MCwgMzI5NzYsIDMyOTgxLCAzMjk4NywgMzI5OTMsIDMyOTk4LCAzMzAwNCwgCi0gICAgMzMwMTAsIDMzMDE1LCAzMzAyMSwgMzMwMjcsIDMzMDMzLCAzMzAzOCwgMCwgMCwgMCwgMzMwNDMsIDMzMDQ5LCAzMzA1OSwgCi0gICAgMzMwNjUsIDMzMDczLCAzMzA3OSwgMzMwODQsIDMzMDg4LCAzMzA5MiwgMzMwOTYsIDMzMTAwLCAzMzEwNCwgMzMxMDgsIAotICAgIDMzMTEzLCAzMzExNywgMCwgMCwgMCwgMzMxMjIsIDMzMTI3LCAzMzEzMiwgMzMxMzcsIDMzMTQ0LCAzMzE1MCwgMzMxNTYsIAotICAgIDMzMTYyLCAzMzE2OCwgMzMxNzQsIDMzMTgwLCAzMzE4NywgMzMxOTMsIDMzMjAwLCAzMzIwNywgMzMyMTQsIDMzMjIxLCAKLSAgICAzMzIyOCwgMzMyMzUsIDMzMjQyLCAzMzI0OSwgMzMyNTYsIDMzMjYzLCAzMzI3MCwgMzMyNzcsIDMzMjg0LCAzMzI5MSwgCi0gICAgMzMyOTgsIDMzMzA1LCAzMzMxMiwgMzMzMTksIDMzMzI2LCAzMzMzMywgMzMzNDAsIDMzMzQ3LCAzMzM1NCwgMzMzNjEsIAotICAgIDMzMzY4LCAzMzM3NSwgMzMzODIsIDMzMzg5LCAzMzM5NiwgMzM0MDMsIDMzNDEwLCAzMzQxOCwgMzM0MjYsIDMzNDM0LCAKLSAgICAzMzQ0MCwgMzM0NDYsIDMzNDUyLCAzMzQ2MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMzM0NjksIDMzNDc3LCAzMzQ4NSwgMzM0OTMsIDMzNTAxLCAzMzUxMSwgMzM1MjEsIDMzNTMxLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAzMzU0MSwgMzM1NDYsIDMzNTUxLCAzMzU1NiwgMzM1NjEsIDMzNTcwLCAzMzU4MSwgMzM1OTAsIDMzNjAxLCAKLSAgICAzMzYwNywgMzM2MjAsIDMzNjI2LCAzMzYzMywgMzM2NDAsIDMzNjQ1LCAzMzY1MSwgMzM2NTcsIDMzNjY4LCAzMzY3NywgCi0gICAgMzM2ODQsIDMzNjkxLCAzMzcwMCwgMzM3MDcsIDMzNzE2LCAzMzcyNiwgMzM3MzYsIDMzNzQzLCAzMzc1MCwgMzM3NTcsIAotICAgIDMzNzY3LCAzMzc3MiwgMzM3ODAsIDMzNzg2LCAzMzc5NCwgMzM4MDMsIDMzODA4LCAzMzgxNSwgMzM4MjEsIDMzODI2LCAwLCAKLSAgICAzMzgzMSwgMzM4MzcsIDAsIDAsIDAsIDAsIDAsIDAsIDMzODQ0LCAzMzg0OSwgMzM4NTUsIDMzODYyLCAzMzg3MCwgMzM4NzYsIAotICAgIDMzODgyLCAzMzg4OCwgMzM4OTMsIDMzOTAwLCAzMzkwNiwgMzM5MTIsIDMzOTE4LCAzMzkyNiwgMzM5MzIsIDMzOTQwLCAKLSAgICAzMzk0NSwgMzM5NTEsIDMzOTU3LCAzMzk2NCwgMzM5NzIsIDMzOTc5LCAzMzk4NSwgMzM5OTIsIDMzOTk5LCAzNDAwNSwgCi0gICAgMzQwMTIsIDM0MDE5LCAzNDAyNSwgMzQwMzAsIDM0MDM2LCAzNDA0NCwgMzQwNTMsIDM0MDU5LCAzNDA2NSwgMzQwNzEsIAotICAgIDM0MDc3LCAzNDA4NSwgMzQwODksIDM0MDk1LCAzNDEwMSwgMzQxMDcsIDM0MTEzLCAzNDExOSwgMzQxMjUsIDM0MTI5LCAKLSAgICAzNDEzNCwgMzQxMzksIDM0MTQ2LCAzNDE1MSwgMzQxNTUsIDM0MTYxLCAzNDE2NiwgMzQxNzEsIDM0MTc1LCAzNDE4MCwgCi0gICAgMzQxODUsIDM0MTg5LCAzNDE5NCwgMzQxOTksIDM0MjA2LCAzNDIxMCwgMzQyMTUsIDM0MjIwLCAzNDIyNCwgMzQyMjksIAotICAgIDM0MjMzLCAzNDIzOCwgMzQyNDIsIDM0MjQ4LCAzNDI1MywgMzQyNjAsIDM0MjY1LCAzNDI3MCwgMzQyNzQsIDM0Mjc5LCAKLSAgICAzNDI4NCwgMzQyOTEsIDM0Mjk2LCAzNDMwMiwgMzQzMDcsIDM0MzEyLCAzNDMxNywgMzQzMjEsIDM0MzI2LCAzNDMzMywgCi0gICAgMzQzNDAsIDM0MzQ1LCAzNDM1MCwgMzQzNTQsIDM0MzYwLCAzNDM2NywgMzQzNzIsIDM0Mzc3LCAzNDM4MiwgMzQzODgsIAotICAgIDM0MzkzLCAzNDM5OSwgMzQ0MDQsIDM0NDEwLCAzNDQxNiwgMzQ0MjIsIDM0NDI5LCAzNDQzNiwgMzQ0NDMsIDM0NDUwLCAKLSAgICAzNDQ1NywgMzQ0NjQsIDM0NDY5LCAzNDQ3NywgMzQ0ODYsIDM0NDk1LCAzNDUwNCwgMzQ1MTMsIDM0NTIyLCAzNDUzMSwgCi0gICAgMzQ1NDMsIDM0NTUyLCAzNDU2MSwgMzQ1NzAsIDM0NTc3LCAzNDU4MiwgMzQ1ODksIDM0NTk3LCAzNDYwNSwgMzQ2MTIsIAotICAgIDM0NjE5LCAzNDYyNiwgMzQ2MzMsIDM0NjQxLCAzNDY1MCwgMzQ2NTksIDM0NjY4LCAzNDY3NywgMzQ2ODYsIDM0Njk1LCAKLSAgICAzNDcwNCwgMzQ3MTMsIDM0NzIyLCAzNDczMSwgMzQ3NDAsIDM0NzQ5LCAzNDc1OCwgMzQ3NjcsIDM0Nzc1LCAzNDc4NCwgCi0gICAgMzQ3OTUsIDM0ODAzLCAzNDgxMiwgMzQ4MjMsIDM0ODMyLCAzNDg0MSwgMzQ4NTAsIDM0ODU5LCAzNDg2NywgMzQ4NzYsIAotICAgIDM0ODgzLCAzNDg4OCwgMzQ4OTYsIDM0OTAxLCAzNDkwOCwgMzQ5MTMsIDM0OTIyLCAzNDkyOCwgMzQ5MzUsIDM0OTQyLCAKLSAgICAzNDk0NywgMzQ5NTIsIDM0OTYwLCAzNDk2OCwgMzQ5NzcsIDM0OTg2LCAzNDk5MSwgMzQ5OTgsIDM1MDA5LCAzNTAxNywgCi0gICAgMzUwMjYsIDM1MDMyLCAzNTAzOCwgMzUwNDMsIDM1MDUwLCAzNTA1NSwgMzUwNjQsIDM1MDY5LCAzNTA3NCwgMzUwNzksIAotICAgIDM1MDg2LCAzNTA5MywgMzUwOTgsIDM1MTA3LCAzNTExNSwgMzUxMjAsIDM1MTI1LCAzNTEzMiwgMzUxMzksIDM1MTQzLCAKLSAgICAzNTE0NywgMzUxNTAsIDM1MTUzLCAzNTE1NiwgMzUxNTksIDM1MTYyLCAzNTE2NSwgMzUxNzIsIDM1MTc1LCAzNTE3OCwgCi0gICAgMzUxODMsIDM1MTg3LCAzNTE5MSwgMzUxOTUsIDM1MTk5LCAzNTIwMywgMzUyMTIsIDM1MjE4LCAzNTIyNCwgMzUyMzAsIAotICAgIDM1MjM4LCAzNTI0NiwgMzUyNTIsIDM1MjU4LCAzNTI2NSwgMzUyNzEsIDM1Mjc2LCAzNTI4MiwgMzUyODksIDM1Mjk1LCAKLSAgICAzNTMwMiwgMzUzMDgsIDM1MzE2LCAzNTMyMSwgMzUzMjcsIDM1MzMzLCAzNTMzOSwgMzUzNDUsIDM1MzUxLCAzNTM1NywgCi0gICAgMzUzNjMsIDM1Mzc0LCAzNTM4NCwgMzUzOTAsIDM1Mzk2LCAzNTQwNiwgMzU0MTIsIDM1NDIwLCAzNTQyOCwgMzU0MzYsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDM1NDQxLCAzNTQ0OCwgMzU0NTUsIDM1NDYwLCAzNTQ2OSwgMzU0NzcsIDM1NDg1LCAzNTQ5MiwgCi0gICAgMzU0OTksIDM1NTA2LCAzNTUxMywgMzU1MjEsIDM1NTI5LCAzNTUzOSwgMzU1NDksIDM1NTU3LCAzNTU2NSwgMzU1NzMsIAotICAgIDM1NTgxLCAzNTU5MCwgMzU1OTksIDM1NjA3LCAzNTYxNSwgMzU2MjQsIDM1NjMzLCAzNTY0MywgMzU2NTMsIDM1NjYyLCAKLSAgICAzNTY3MSwgMzU2NzksIDM1Njg3LCAzNTY5NSwgMzU3MDMsIDM1NzEzLCAzNTcyMywgMzU3MzEsIDM1NzM5LCAzNTc0NywgCi0gICAgMzU3NTUsIDM1NzYzLCAzNTc3MSwgMzU3NzksIDM1Nzg3LCAzNTc5NSwgMzU4MDMsIDM1ODExLCAzNTgxOSwgMzU4MjgsIAotICAgIDM1ODM3LCAzNTg0NiwgMzU4NTUsIDM1ODY1LCAzNTg3NSwgMzU4ODIsIDM1ODg5LCAzNTg5NywgMzU5MDUsIDM1OTE0LCAKLSAgICAzNTkyMywgMzU5MzEsIDM1OTM5LCAzNTk1MSwgMzU5NjMsIDM1OTcyLCAzNTk4MSwgMzU5OTAsIDM1OTk5LCAzNjAwNiwgCi0gICAgMzYwMTMsIDM2MDIxLCAzNjAyOSwgMzYwMzcsIDM2MDQ1LCAzNjA1MywgMzYwNjEsIDM2MDY5LCAzNjA3NywgMzYwODYsIAotICAgIDM2MDk1LCAzNjEwNCwgMzYxMTMsIDM2MTIyLCAzNjEzMSwgMzYxNDEsIDM2MTUxLCAzNjE2MSwgMzYxNzEsIDM2MTgwLCAKLSAgICAzNjE4OSwgMzYxOTYsIDM2MjAzLCAzNjIxMSwgMzYyMTksIDM2MjI3LCAzNjIzNSwgMzYyNDMsIDM2MjUxLCAzNjI2MywgCi0gICAgMzYyNzUsIDM2Mjg0LCAzNjI5MywgMzYzMDEsIDM2MzA5LCAzNjMxNywgMzYzMjUsIDM2MzM2LCAzNjM0NywgMzYzNTgsIAotICAgIDM2MzY5LCAzNjM4MSwgMzYzOTMsIDM2NDAxLCAzNjQwOSwgMzY0MTcsIDM2NDI1LCAzNjQzNCwgMzY0NDMsIDM2NDUyLCAKLSAgICAzNjQ2MSwgMzY0NjksIDM2NDc3LCAzNjQ4NSwgMzY0OTMsIDM2NTAxLCAzNjUwOSwgMzY1MTgsIDM2NTI3LCAzNjUzNywgCi0gICAgMzY1NDcsIDM2NTU1LCAzNjU2MywgMzY1NzEsIDM2NTc5LCAzNjU4NywgMzY1OTUsIDM2NjAyLCAzNjYwOSwgMzY2MTcsIAotICAgIDM2NjI1LCAzNjYzMywgMzY2NDEsIDM2NjQ5LCAzNjY1NywgMzY2NjUsIDM2NjczLCAzNjY4MSwgMzY2ODksIDM2Njk3LCAKLSAgICAzNjcwNSwgMzY3MTMsIDM2NzIxLCAzNjcyOSwgMzY3MzcsIDM2NzQ2LCAzNjc1NSwgMzY3NjQsIDM2NzcyLCAzNjc4MSwgCi0gICAgMzY3OTAsIDM2Nzk5LCAzNjgwOCwgMzY4MTgsIDM2ODI3LCAzNjgzMywgMzY4MzgsIDM2ODQ1LCAzNjg1MiwgMzY4NjAsIAotICAgIDM2ODY4LCAzNjg3NywgMzY4ODYsIDM2ODk2LCAzNjkwNiwgMzY5MTcsIDM2OTI4LCAzNjkzOCwgMzY5NDgsIDM2OTU4LCAKLSAgICAzNjk2OCwgMzY5NzcsIDM2OTg2LCAzNjk5NiwgMzcwMDYsIDM3MDE3LCAzNzAyOCwgMzcwMzgsIDM3MDQ4LCAzNzA1OCwgCi0gICAgMzcwNjgsIDM3MDc1LCAzNzA4MiwgMzcwOTAsIDM3MDk4LCAzNzEwNSwgMzcxMTIsIDM3MTIxLCAzNzEzMCwgMzcxNDAsIAotICAgIDM3MTUwLCAzNzE2MSwgMzcxNzIsIDM3MTgyLCAzNzE5MiwgMzcyMDIsIDM3MjEyLCAzNzIyMSwgMzcyMzAsIDM3MjM4LCAKLSAgICAzNzI0NiwgMzcyNTMsIDM3MjYwLCAzNzI2OCwgMzcyNzYsIDM3Mjg1LCAzNzI5NCwgMzczMDQsIDM3MzE0LCAzNzMyNSwgCi0gICAgMzczMzYsIDM3MzQ2LCAzNzM1NiwgMzczNjYsIDM3Mzc2LCAzNzM4NSwgMzczOTQsIDM3NDA0LCAzNzQxNCwgMzc0MjUsIAotICAgIDM3NDM2LCAzNzQ0NiwgMzc0NTYsIDM3NDY2LCAzNzQ3NiwgMzc0ODMsIDM3NDkwLCAzNzQ5OCwgMzc1MDYsIDM3NTE1LCAKLSAgICAzNzUyNCwgMzc1MzQsIDM3NTQ0LCAzNzU1NSwgMzc1NjYsIDM3NTc2LCAzNzU4NiwgMzc1OTYsIDM3NjA2LCAzNzYxNCwgCi0gICAgMzc2MjIsIDM3NjMwLCAzNzYzOCwgMzc2NDcsIDM3NjU2LCAzNzY2NCwgMzc2NzIsIDM3Njc5LCAzNzY4NiwgMzc2OTMsIAotICAgIDM3NzAwLCAzNzcwOCwgMzc3MTYsIDM3NzI0LCAzNzczMiwgMzc3NDMsIDM3NzU0LCAzNzc2NSwgMzc3NzYsIDM3Nzg3LCAKLSAgICAzNzc5OCwgMzc4MDYsIDM3ODE0LCAzNzgyNSwgMzc4MzYsIDM3ODQ3LCAzNzg1OCwgMzc4NjksIDM3ODgwLCAzNzg4OCwgCi0gICAgMzc4OTYsIDM3OTA3LCAzNzkxOCwgMzc5MjksIDAsIDAsIDM3OTQwLCAzNzk0OCwgMzc5NTYsIDM3OTY3LCAzNzk3OCwgCi0gICAgMzc5ODksIDAsIDAsIDM4MDAwLCAzODAwOCwgMzgwMTYsIDM4MDI3LCAzODAzOCwgMzgwNDksIDM4MDYwLCAzODA3MSwgCi0gICAgMzgwODIsIDM4MDkwLCAzODA5OCwgMzgxMDksIDM4MTIwLCAzODEzMSwgMzgxNDIsIDM4MTUzLCAzODE2NCwgMzgxNzIsIAotICAgIDM4MTgwLCAzODE5MSwgMzgyMDIsIDM4MjEzLCAzODIyNCwgMzgyMzUsIDM4MjQ2LCAzODI1NCwgMzgyNjIsIDM4MjczLCAKLSAgICAzODI4NCwgMzgyOTUsIDM4MzA2LCAzODMxNywgMzgzMjgsIDM4MzM2LCAzODM0NCwgMzgzNTUsIDM4MzY2LCAzODM3NywgMCwgCi0gICAgMCwgMzgzODgsIDM4Mzk2LCAzODQwNCwgMzg0MTUsIDM4NDI2LCAzODQzNywgMCwgMCwgMzg0NDgsIDM4NDU2LCAzODQ2NCwgCi0gICAgMzg0NzUsIDM4NDg2LCAzODQ5NywgMzg1MDgsIDM4NTE5LCAwLCAzODUzMCwgMCwgMzg1MzgsIDAsIDM4NTQ5LCAwLCAKLSAgICAzODU2MCwgMzg1NzEsIDM4NTc5LCAzODU4NywgMzg1OTgsIDM4NjA5LCAzODYyMCwgMzg2MzEsIDM4NjQyLCAzODY1MywgCi0gICAgMzg2NjEsIDM4NjY5LCAzODY4MCwgMzg2OTEsIDM4NzAyLCAzODcxMywgMzg3MjQsIDM4NzM1LCAzODc0MywgMzg3NTEsIAotICAgIDM4NzU5LCAzODc2NywgMzg3NzUsIDM4NzgzLCAzODc5MSwgMzg3OTksIDM4ODA3LCAzODgxNSwgMzg4MjMsIDM4ODMxLCAKLSAgICAzODgzOSwgMCwgMCwgMzg4NDcsIDM4ODU4LCAzODg2OSwgMzg4ODMsIDM4ODk3LCAzODkxMSwgMzg5MjUsIDM4OTM5LCAKLSAgICAzODk1MywgMzg5NjQsIDM4OTc1LCAzODk4OSwgMzkwMDMsIDM5MDE3LCAzOTAzMSwgMzkwNDUsIDM5MDU5LCAzOTA3MCwgCi0gICAgMzkwODEsIDM5MDk1LCAzOTEwOSwgMzkxMjMsIDM5MTM3LCAzOTE1MSwgMzkxNjUsIDM5MTc2LCAzOTE4NywgMzkyMDEsIAotICAgIDM5MjE1LCAzOTIyOSwgMzkyNDMsIDM5MjU3LCAzOTI3MSwgMzkyODIsIDM5MjkzLCAzOTMwNywgMzkzMjEsIDM5MzM1LCAKLSAgICAzOTM0OSwgMzkzNjMsIDM5Mzc3LCAzOTM4OCwgMzkzOTksIDM5NDEzLCAzOTQyNywgMzk0NDEsIDM5NDU1LCAzOTQ2OSwgCi0gICAgMzk0ODMsIDM5NDkxLCAzOTQ5OSwgMzk1MTAsIDM5NTE4LCAwLCAzOTUyOSwgMzk1MzcsIDM5NTQ4LCAzOTU1NiwgMzk1NjQsIAotICAgIDM5NTcyLCAzOTU4MCwgMzk1ODgsIDM5NTkxLCAzOTU5NCwgMzk1OTcsIDM5NjAwLCAzOTYwNiwgMzk2MTcsIDM5NjI1LCAwLCAKLSAgICAzOTYzNiwgMzk2NDQsIDM5NjU1LCAzOTY2MywgMzk2NzEsIDM5Njc5LCAzOTY4NywgMzk2OTUsIDM5NzAxLCAzOTcwNywgCi0gICAgMzk3MTMsIDM5NzIxLCAzOTcyOSwgMzk3NDAsIDAsIDAsIDM5NzUxLCAzOTc1OSwgMzk3NzAsIDM5Nzc4LCAzOTc4NiwgCi0gICAgMzk3OTQsIDAsIDM5ODAyLCAzOTgwOCwgMzk4MTQsIDM5ODIwLCAzOTgyOCwgMzk4MzYsIDM5ODQ3LCAzOTg1OCwgMzk4NjYsIAotICAgIDM5ODc0LCAzOTg4MiwgMzk4OTMsIDM5OTAxLCAzOTkwOSwgMzk5MTcsIDM5OTI1LCAzOTkzMywgMzk5MzksIDM5OTQ1LCAwLCAKLSAgICAwLCAzOTk0OCwgMzk5NTksIDM5OTY3LCAwLCAzOTk3OCwgMzk5ODYsIDM5OTk3LCA0MDAwNSwgNDAwMTMsIDQwMDIxLCAKLSAgICA0MDAyOSwgNDAwMzcsIDQwMDQwLCAwLCA0MDA0MywgNDAwNDcsIDQwMDUxLCA0MDA1NSwgNDAwNTksIDQwMDYzLCA0MDA2NywgCi0gICAgNDAwNzEsIDQwMDc1LCA0MDA3OSwgNDAwODMsIDQwMDg3LCA0MDA5MywgNDAwOTksIDQwMTA1LCA0MDEwOCwgNDAxMTEsIAotICAgIDQwMTEzLCA0MDExNywgNDAxMjEsIDQwMTI1LCA0MDEyOSwgNDAxMzIsIDQwMTM2LCA0MDE0MCwgNDAxNDYsIDQwMTUyLCAKLSAgICA0MDE1OSwgNDAxNjYsIDQwMTcxLCA0MDE3NiwgNDAxODIsIDQwMTg4LCA0MDE5MCwgNDAxOTMsIDQwMTk1LCA0MDE5OSwgCi0gICAgNDAyMDMsIDQwMjA3LCA0MDIxMSwgNDAyMTUsIDQwMjE5LCA0MDIyMywgNDAyMjcsIDQwMjMxLCA0MDIzNywgNDAyNDEsIAotICAgIDQwMjQ1LCA0MDI1MSwgNDAyNTYsIDQwMjYzLCA0MDI2NSwgNDAyNjgsIDQwMjcyLCA0MDI3NiwgNDAyODEsIDQwMjg3LCAKLSAgICA0MDI4OSwgNDAyOTgsIDQwMzA3LCA0MDMxMCwgNDAzMTQsIDQwMzE2LCA0MDMxOCwgNDAzMjAsIDQwMzIzLCA0MDMyOSwgCi0gICAgNDAzMzEsIDQwMzM1LCA0MDMzOSwgNDAzNDYsIDQwMzUzLCA0MDM1NywgNDAzNjIsIDQwMzY3LCA0MDM3MiwgNDAzNzcsIAotICAgIDQwMzgxLCA0MDM4NSwgNDAzODgsIDQwMzkyLCA0MDM5NiwgNDA0MDMsIDQwNDA4LCA0MDQxMiwgNDA0MTYsIDQwNDIxLCAKLSAgICA0MDQyNSwgNDA0MjksIDQwNDM0LCA0MDQzOSwgNDA0NDMsIDQwNDQ3LCA0MDQ1MSwgNDA0NTMsIDQwNDU4LCA0MDQ2MywgCi0gICAgNDA0NjcsIDQwNDcxLCA0MDQ3NSwgNDA0NzksIDAsIDQwNDgzLCA0MDQ4NywgNDA0OTEsIDQwNDk3LCA0MDUwMywgNDA1MDksIAotICAgIDQwNTE1LCA0MDUyMiwgNDA1MjksIDQwNTM0LCA0MDUzOSwgNDA1NDMsIDAsIDAsIDQwNTQ5LCA0MDU1MiwgNDA1NTUsIAotICAgIDQwNTU4LCA0MDU2MiwgNDA1NjUsIDQwNTY5LCA0MDU3MywgNDA1NzcsIDQwNTgyLCA0MDU4NywgNDA1OTIsIDQwNTk5LCAKLSAgICA0MDYwMywgNDA2MDYsIDQwNjA5LCA0MDYxMiwgNDA2MTUsIDQwNjE4LCA0MDYyMSwgNDA2MjUsIDQwNjI4LCA0MDYzMiwgCi0gICAgNDA2MzYsIDQwNjQwLCA0MDY0NSwgNDA2NTAsIDAsIDQwNjU1LCA0MDY2MSwgNDA2NjcsIDQwNjczLCA0MDY4MCwgNDA2ODcsIAotICAgIDQwNjk0LCA0MDcwMSwgNDA3MDcsIDQwNzE0LCA0MDcyMSwgNDA3MjgsIDQwNzM0LCAwLCAwLCAwLCA0MDc0MSwgNDA3NDQsIAotICAgIDQwNzQ3LCA0MDc1MCwgNDA3NTUsIDQwNzU4LCA0MDc2MSwgNDA3NjQsIDQwNzY3LCA0MDc3MCwgNDA3NzMsIDQwNzc4LCAKLSAgICA0MDc4MSwgNDA3ODQsIDQwNzg3LCA0MDc5MCwgNDA3OTMsIDQwNzk4LCA0MDgwMSwgNDA4MDQsIDQwODA3LCA0MDgxMCwgCi0gICAgNDA4MTMsIDQwODE4LCA0MDgyMSwgNDA4MjQsIDQwODI5LCA0MDgzNCwgNDA4MzgsIDQwODQxLCA0MDg0NCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDA4NDcsIDQwODUyLCA0MDg1NywgNDA4NjQsIAotICAgIDQwODcyLCA0MDg3NywgNDA4ODIsIDQwODg2LCA0MDg5MCwgNDA4OTUsIDQwOTAyLCA0MDkwOSwgNDA5MTMsIDQwOTE4LCAKLSAgICA0MDkyMywgNDA5MjgsIDQwOTMzLCA0MDk0MCwgNDA5NDUsIDQwOTUwLCA0MDk1NSwgNDA5NjQsIDQwOTcxLCA0MDk3OCwgCi0gICAgNDA5ODIsIDQwOTg3LCA0MDk5MywgNDA5OTgsIDQxMDA1LCA0MTAxMywgNDEwMjEsIDQxMDI1LCA0MTAyOSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDEwMzMsIDQxMDM3LCA0MTA0NSwgNDEwNDksIDQxMDUzLCAKLSAgICA0MTA1OCwgNDEwNjIsIDQxMDY2LCA0MTA3MCwgNDEwNzIsIDQxMDc2LCA0MTA4MCwgNDEwODQsIDQxMDg5LCA0MTA5MywgCi0gICAgNDEwOTcsIDQxMTA1LCA0MTEwOCwgNDExMTIsIDQxMTE1LCA0MTExOCwgNDExMjQsIDQxMTI4LCA0MTEzMSwgNDExMzcsIAotICAgIDQxMTQxLCA0MTE0NSwgNDExNDksIDQxMTUyLCA0MTE1NiwgNDExNTksIDQxMTYzLCA0MTE2NSwgNDExNjgsIDQxMTcxLCAKLSAgICA0MTE3NSwgNDExNzcsIDQxMTgxLCA0MTE4NCwgNDExODcsIDQxMTkyLCA0MTE5NywgNDEyMDQsIDQxMjA3LCA0MTIxMCwgCi0gICAgNDEyMTQsIDQxMjE5LCA0MTIyMiwgNDEyMjUsIDQxMjI4LCA0MTIzMiwgNDEyMzcsIDQxMjQxLCA0MTI0NCwgNDEyNDYsIAotICAgIDQxMjQ5LCA0MTI1MiwgNDEyNTUsIDQxMjU5LCA0MTI2NCwgNDEyNjcsIDQxMjcxLCA0MTI3NSwgNDEyNzksIDQxMjgzLCAKLSAgICA0MTI4OCwgNDEyOTQsIDQxMjk5LCA0MTMwNCwgNDEzMTAsIDQxMzE1LCA0MTMyMCwgNDEzMjQsIDQxMzI4LCA0MTMzMywgCi0gICAgNDEzMzcsIDQxMzQxLCA0MTM0NCwgNDEzNDYsIDQxMzUxLCA0MTM1NywgNDEzNjQsIDQxMzcxLCA0MTM3OCwgNDEzODUsIAotICAgIDQxMzkyLCA0MTM5OSwgNDE0MDYsIDQxNDEzLCA0MTQyMSwgNDE0MjgsIDQxNDM2LCA0MTQ0MywgNDE0NTAsIDQxNDU4LCAKLSAgICA0MTQ2NiwgNDE0NzEsIDQxNDc2LCA0MTQ4MSwgNDE0ODYsIDQxNDkxLCA0MTQ5NiwgNDE1MDEsIDQxNTA3LCA0MTUxMiwgCi0gICAgNDE1MTgsIDQxNTI0LCA0MTUzMCwgNDE1MzYsIDQxNTQyLCA0MTU0OSwgNDE1NTcsIDQxNTY0LCA0MTU3MCwgNDE1NzYsIAotICAgIDQxNTgyLCA0MTU4OCwgNDE1OTQsIDQxNjAwLCA0MTYwNywgNDE2MTMsIDQxNjIwLCA0MTYyNywgNDE2MzQsIDQxNjQxLCAKLSAgICA0MTY0OCwgNDE2NTYsIDQxNjY1LCA0MTY3MywgNDE2ODQsIDQxNjkyLCA0MTcwMCwgNDE3MDksIDQxNzE2LCA0MTcyNSwgCi0gICAgNDE3MzQsIDQxNzQyLCA0MTc1MSwgNDE3NTksIDQxNzYzLCAwLCAwLCAwLCAwLCA0MTc2NywgNDE3NjksIDQxNzcxLCAKLSAgICA0MTc3MywgNDE3NzUsIDQxNzc4LCA0MTc4MSwgNDE3ODUsIDQxNzg5LCA0MTc5NCwgNDE3OTksIDQxODAzLCA0MTgwNywgCi0gICAgNDE4MTEsIDQxODE1LCA0MTgyMCwgNDE4MjUsIDQxODMwLCA0MTgzNSwgNDE4NDAsIDQxODQ1LCA0MTg1MCwgNDE4NTUsIAotICAgIDQxODYwLCA0MTg2NSwgNDE4NzEsIDQxODc1LCA0MTg3OSwgNDE4ODQsIDQxODg5LCA0MTg5NCwgNDE4OTksIDQxOTAzLCAKLSAgICA0MTkxMCwgNDE5MTcsIDQxOTI0LCA0MTkzMSwgNDE5MzgsIDQxOTQ1LCA0MTk1MiwgNDE5NTksIDQxOTY3LCA0MTk3OSwgCi0gICAgNDE5ODUsIDQxOTkxLCA0MTk5OCwgNDIwMDUsIDQyMDEyLCA0MjAxOSwgNDIwMjYsIDQyMDMzLCA0MjA0MCwgNDIwNDcsIAotICAgIDQyMDUyLCA0MjA1OCwgNDIwNjMsIDQyMDY4LCA0MjA3MywgNDIwNzgsIDQyMDgzLCA0MjA5MCwgNDIwOTcsIDQyMTAyLCAKLSAgICA0MjEwOCwgNDIxMTMsIDQyMTE2LCA0MjExOSwgNDIxMjIsIDQyMTI1LCA0MjEyOSwgNDIxMzMsIDQyMTM4LCA0MjE0MywgCi0gICAgNDIxNDksIDQyMTU1LCA0MjE1OSwgNDIxNjMsIDQyMTY3LCA0MjE3MSwgNDIxNzYsIDQyMTgxLCA0MjE4NSwgNDIxODksIAotICAgIDQyMTkzLCA0MjE5NywgNDIyMDIsIDQyMjA3LCA0MjIxMCwgNDIyMTMsIDQyMjE2LCA0MjIxOSwgNDIyMjUsIDQyMjMyLCAKLSAgICA0MjI0MywgNDIyNTMsIDQyMjU3LCA0MjI2NSwgNDIyNzIsIDQyMjgwLCA0MjI4OSwgNDIyOTMsIDQyMjk5LCA0MjMwNSwgCi0gICAgNDIzMDksIDQyMzE0LCA0MjMxOSwgNDIzMjUsIDQyMzMxLCA0MjMzNywgNDIzNDQsIDQyMzQ4LCA0MjM1MiwgNDIzNTcsIAotICAgIDQyMzYwLCA0MjM2MiwgNDIzNjYsIDQyMzcwLCA0MjM3OCwgNDIzODIsIDQyMzg0LCA0MjM4NiwgNDIzOTAsIDQyMzk4LCAKLSAgICA0MjQwMywgNDI0MDksIDQyNDE5LCA0MjQyNiwgNDI0MzEsIDQyNDM1LCA0MjQzOSwgNDI0NDMsIDQyNDQ2LCA0MjQ0OSwgCi0gICAgNDI0NTIsIDQyNDU2LCA0MjQ2MCwgNDI0NjQsIDQyNDY4LCA0MjQ3MiwgNDI0NzUsIDQyNDc5LCA0MjQ4MywgNDI0ODYsIAotICAgIDQyNDg4LCA0MjQ5MSwgNDI0OTMsIDQyNDk3LCA0MjUwMSwgNDI1MDMsIDQyNTA5LCA0MjUxMiwgNDI1MTcsIDQyNTIxLCAKLSAgICA0MjUyNSwgNDI1MjcsIDQyNTI5LCA0MjUzMSwgNDI1MzQsIDQyNTM4LCA0MjU0MiwgNDI1NDYsIDQyNTUwLCA0MjU1NCwgCi0gICAgNDI1NjAsIDQyNTY2LCA0MjU2OCwgNDI1NzAsIDQyNTcyLCA0MjU3NCwgNDI1NzcsIDQyNTc5LCA0MjU4MywgNDI1ODUsIAotICAgIDQyNTg5LCA0MjU5MywgNDI1OTgsIDQyNjAyLCA0MjYwNiwgNDI2MTAsIDQyNjE0LCA0MjYxOCwgNDI2MjQsIDQyNjI4LCAKLSAgICA0MjYzOCwgNDI2NDgsIDQyNjUyLCA0MjY1OCwgNDI2NjUsIDQyNjY5LCA0MjY3MywgNDI2NzYsIDQyNjgxLCA0MjY4NSwgCi0gICAgNDI2OTEsIDQyNjk1LCA0MjcwOCwgNDI3MTcsIDQyNzIxLCA0MjcyNSwgNDI3MzEsIDQyNzM1LCA0MjczOCwgNDI3NDAsIAotICAgIDQyNzQzLCA0Mjc0NywgNDI3NTEsIDQyNzU4LCA0Mjc2MiwgNDI3NjYsIDQyNzcwLCA0Mjc3MywgNDI3NzgsIDQyNzgzLCAKLSAgICA0Mjc4OSwgNDI3OTUsIDQyODAwLCA0MjgwNSwgNDI4MTMsIDQyODIxLCA0MjgyNSwgNDI4MjksIDQyODMxLCA0MjgzNiwgCi0gICAgNDI4NDAsIDQyODQ0LCA0Mjg1MiwgNDI4NjAsIDQyODY3LCA0Mjg3NCwgNDI4ODMsIDQyODkyLCA0Mjg5OCwgNDI5MDQsIAotICAgIDQyOTEyLCA0MjkyMCwgNDI5MjIsIDQyOTI0LCA0MjkzMCwgNDI5MzYsIDQyOTQzLCA0Mjk1MCwgNDI5NTYsIDQyOTYyLCAKLSAgICA0Mjk2NiwgNDI5NzAsIDQyOTc3LCA0Mjk4NCwgNDI5OTEsIDQyOTk4LCA0MzAwOCwgNDMwMTgsIDQzMDI2LCA0MzAzNCwgCi0gICAgNDMwMzYsIDQzMDQwLCA0MzA0NCwgNDMwNDksIDQzMDU0LCA0MzA2MiwgNDMwNzAsIDQzMDczLCA0MzA3NiwgNDMwNzksIAotICAgIDQzMDgyLCA0MzA4NSwgNDMwOTAsIDQzMDk0LCA0MzA5OSwgNDMxMDQsIDQzMTA3LCA0MzExMCwgNDMxMTMsIDQzMTE2LCAKLSAgICA0MzExOSwgNDMxMjMsIDQzMTI2LCA0MzEyOSwgNDMxMzIsIDQzMTM1LCA0MzEzNywgNDMxMzksIDQzMTQxLCA0MzE0MywgCi0gICAgNDMxNTEsIDQzMTU5LCA0MzE2NSwgNDMxNjksIDQzMTc1LCA0MzE4NSwgNDMxOTEsIDQzMTk3LCA0MzIwMywgNDMyMTEsIAotICAgIDQzMjIwLCA0MzIzMiwgNDMyMzYsIDQzMjQwLCA0MzI0MiwgNDMyNDgsIDQzMjUwLCA0MzI1MiwgNDMyNTQsIDQzMjU2LCAKLSAgICA0MzI2MiwgNDMyNjUsIDQzMjcxLCA0MzI3NywgNDMyODEsIDQzMjg1LCA0MzI4OSwgNDMyOTIsIDQzMjk2LCA0MzMwMCwgCi0gICAgNDMzMDIsIDQzMzExLCA0MzMyMCwgNDMzMjUsIDQzMzMwLCA0MzMzNiwgNDMzNDIsIDQzMzQ4LCA0MzM1MSwgNDMzNTQsIAotICAgIDQzMzU3LCA0MzM2MCwgNDMzNjIsIDQzMzY3LCA0MzM3MiwgNDMzNzcsIDQzMzgzLCA0MzM4OSwgNDMzOTgsIDQzNDA3LCAKLSAgICA0MzQxNCwgNDM0MjEsIDQzNDI4LCA0MzQzNSwgNDM0NDUsIDQzNDU1LCA0MzQ2NSwgNDM0NzUsIDQzNDg1LCA0MzQ5NSwgCi0gICAgNDM1MDQsIDQzNTEzLCA0MzUyMiwgNDM1MzEsIDQzNTM5LCA0MzU1MSwgNDM1NjIsIDQzNTc4LCA0MzU4MSwgNDM1ODcsIAotICAgIDQzNTkzLCA0MzU5OSwgNDM2MDcsIDQzNjIyLCA0MzYzOCwgNDM2NDQsIDQzNjUwLCA0MzY1NywgNDM2NjMsIDQzNjcyLCAKLSAgICA0MzY3OSwgNDM2OTMsIDQzNzA4LCA0MzcxMywgNDM3MTksIDQzNzI3LCA0MzczMCwgNDM3MzMsIDQzNzM1LCA0MzczOCwgCi0gICAgNDM3NDEsIDQzNzQzLCA0Mzc0NSwgNDM3NDksIDQzNzUyLCA0Mzc1NSwgNDM3NTgsIDQzNzYxLCA0Mzc2NiwgNDM3NzEsIAotICAgIDQzNzc2LCA0Mzc4MSwgNDM3ODYsIDQzNzg5LCA0Mzc5MSwgNDM3OTMsIDQzNzk1LCA0Mzc5OSwgNDM4MDMsIDQzODA3LCAKLSAgICA0MzgxMywgNDM4MTgsIDQzODIwLCA0MzgyMiwgNDM4MjcsIDQzODMyLCA0MzgzNywgNDM4NDIsIDQzODQ3LCA0Mzg1MiwgCi0gICAgNDM4NTQsIDQzODU2LCA0Mzg2NiwgNDM4NzAsIDQzODc4LCA0Mzg4NywgNDM4ODksIDQzODk0LCA0Mzg5OSwgNDM5MDcsIAotICAgIDQzOTExLCA0MzkxMywgNDM5MTcsIDQzOTE5LCA0MzkyMywgNDM5MjcsIDQzOTMxLCA0MzkzMywgNDM5MzUsIDQzOTM3LCAKLSAgICA0Mzk0NCwgNDM5NTMsIDQzOTYyLCA0Mzk3MSwgNDM5ODAsIDQzOTg5LCA0Mzk5OCwgNDQwMDcsIDQ0MDE2LCA0NDAyNCwgCi0gICAgNDQwMzIsIDQ0MDQxLCA0NDA1MCwgNDQwNTksIDQ0MDY4LCA0NDA3NiwgNDQwODQsIDQ0MDkzLCA0NDEwMiwgNDQxMTEsIAotICAgIDQ0MTIxLCA0NDEzMCwgNDQxNDAsIDQ0MTQ5LCA0NDE1OSwgNDQxNjcsIDQ0MTc2LCA0NDE4NiwgNDQxOTUsIDQ0MjA1LCAKLSAgICA0NDIxNCwgNDQyMjQsIDQ0MjMyLCA0NDI0MSwgNDQyNTAsIDQ0MjU5LCA0NDI2OCwgNDQyNzcsIDQ0Mjg2LCA0NDI5NiwgCi0gICAgNDQzMDUsIDQ0MzE0LCA0NDMyMywgNDQzMzMsIDQ0MzQyLCA0NDM1MSwgNDQzNjAsIDQ0MzY5LCA0NDM3OSwgNDQzODksIAotICAgIDQ0Mzk4LCA0NDQwNywgNDQ0MTUsIDQ0NDI0LCA0NDQzMSwgNDQ0NDAsIDQ0NDQ5LCA0NDQ2MCwgNDQ0NjksIDQ0NDc5LCAKLSAgICA0NDQ4OSwgNDQ0OTYsIDQ0NTAzLCA0NDUxMCwgNDQ1MTksIDQ0NTI4LCA0NDUzNywgNDQ1NDYsIDQ0NTUzLCA0NDU1OCwgCi0gICAgNDQ1NjYsIDQ0NTcxLCA0NDU3NCwgNDQ1ODEsIDQ0NTg0LCA0NDU4OSwgNDQ1OTQsIDQ0NTk3LCA0NDYwMCwgNDQ2MDgsIAotICAgIDQ0NjExLCA0NDYxNiwgNDQ2MTksIDQ0NjI3LCA0NDYzMiwgNDQ2NDAsIDQ0NjQzLCA0NDY0NiwgNDQ2NDksIDQ0NjU0LCAKLSAgICA0NDY1OSwgNDQ2NjIsIDQ0NjY1LCA0NDY3MywgNDQ2NzYsIDQ0NjgzLCA0NDY5MCwgNDQ2OTQsIDQ0Njk4LCA0NDcwMywgCi0gICAgNDQ3MDgsIDQ0NzE0LCA0NDcxOSwgNDQ3MjUsIDQ0NzMxLCA0NDczNiwgNDQ3NDIsIDQ0NzUwLCA0NDc1NiwgNDQ3NjQsIAotICAgIDQ0NzcyLCA0NDc3OCwgNDQ3ODYsIDQ0Nzk0LCA0NDgwMiwgNDQ4MTAsIDQ0ODE2LCA0NDgyNCwgNDQ4MzIsIDQ0ODQwLCAKLSAgICA0NDg0NCwgNDQ4NTAsIDQ0ODY0LCA0NDg3OCwgNDQ4ODIsIDQ0ODg2LCA0NDg5MCwgNDQ4OTQsIDQ0OTA0LCA0NDkwOCwgCi0gICAgNDQ5MTMsIDQ0OTE4LCA0NDkyNCwgNDQ5MzAsIDQ0OTM2LCA0NDk0MiwgNDQ5NTIsIDQ0OTYyLCA0NDk3MCwgNDQ5ODEsIAotICAgIDQ0OTkyLCA0NTAwMCwgNDUwMTEsIDQ1MDIyLCA0NTAzMCwgNDUwNDEsIDQ1MDUyLCA0NTA2MCwgNDUwNjgsIDQ1MDc4LCAKLSAgICA0NTA4OCwgNDUwOTEsIDQ1MDk0LCA0NTA5NywgNDUxMDIsIDQ1MTA2LCA0NTExMiwgNDUxMTksIDQ1MTI2LCA0NTEzNCwgCi0gICAgNDUxNDEsIDQ1MTQ1LCA0NTE0OSwgNDUxNTMsIDQ1MTU3LCA0NTE1OSwgNDUxNjMsIDQ1MTY3LCA0NTE3MiwgNDUxNzcsIAotICAgIDQ1MTg0LCA0NTE5MSwgNDUxOTQsIDQ1MjAxLCA0NTIwMywgNDUyMDUsIDQ1MjA5LCA0NTIxMywgNDUyMTgsIDQ1MjI0LCAKLSAgICA0NTIzMCwgNDUyMzYsIDQ1MjQyLCA0NTI1MSwgNDUyNjAsIDQ1MjY5LCA0NTI3MywgNDUyNzUsIDQ1Mjc5LCA0NTI4NiwgCi0gICAgNDUyOTMsIDQ1MzAwLCA0NTMwNywgNDUzMTQsIDQ1MzE3LCA0NTMyMiwgMCwgMCwgMCwgMCwgMCwgNDUzMjgsIDQ1MzMyLCAKLSAgICA0NTMzOSwgNDUzNDYsIDQ1MzUzLCA0NTM2MCwgNDUzNjQsIDQ1MzY4LCA0NTM3MiwgNDUzNzYsIDQ1MzgyLCA0NTM4OCwgCi0gICAgNDUzOTMsIDQ1Mzk5LCA0NTQwNSwgNDU0MTEsIDQ1NDE3LCA0NTQyNSwgNDU0MzIsIDQ1NDM5LCA0NTQ0NiwgNDU0NTMsIAotICAgIDQ1NDU4LCA0NTQ2NCwgNDU0NzMsIDQ1NDc3LCA0NTQ4NCwgNDU0ODgsIDQ1NDkyLCA0NTQ5OCwgNDU1MDQsIDQ1NTEwLCAKLSAgICA0NTUxNiwgNDU1MjAsIDQ1NTI0LCA0NTUyNywgNDU1MzAsIDQ1NTM0LCA0NTU0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNDU1NDgsIDQ1NTUxLCA0NTU1NSwgCi0gICAgNDU1NTksIDQ1NTY1LCA0NTU3MSwgNDU1NzcsIDQ1NTg1LCA0NTU5MiwgNDU1OTYsIDQ1NjA0LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NTYwOSwgNDU2MTIsIDQ1NjE1LCA0NTYxOCwgCi0gICAgNDU2MjEsIDQ1NjI0LCA0NTYyNywgNDU2MzEsIDQ1NjM0LCA0NTYzOCwgNDU2NDIsIDQ1NjQ2LCA0NTY1MCwgNDU2NTQsIAotICAgIDQ1NjU4LCA0NTY2MiwgNDU2NjYsIDQ1NjcwLCA0NTY3NCwgNDU2NzgsIDQ1NjgyLCA0NTY4NSwgNDU2ODgsIDQ1NjkxLCAKLSAgICA0NTY5NCwgNDU2OTcsIDQ1NzAwLCA0NTcwNCwgNDU3MDcsIDQ1NzExLCA0NTcxNSwgNDU3MTksIDQ1NzIzLCA0NTcyNywgCi0gICAgNDU3MzEsIDQ1NzM1LCA0NTczOSwgNDU3NDMsIDQ1NzQ3LCA0NTc1MSwgNDU3NTUsIDQ1NzYxLCA0NTc2NywgNDU3NzMsIAotICAgIDQ1NzgwLCA0NTc4NywgNDU3OTQsIDQ1ODAxLCA0NTgwOCwgNDU4MTUsIDQ1ODIyLCA0NTgyOSwgNDU4MzYsIDQ1ODQzLCAKLSAgICA0NTg1MCwgNDU4NTcsIDQ1ODY0LCA0NTg3MSwgNDU4NzgsIDQ1ODg1LCA0NTg5MiwgNDU4OTcsIDQ1OTAzLCA0NTkwOSwgCi0gICAgNDU5MTUsIDQ1OTIwLCA0NTkyNiwgNDU5MzIsIDQ1OTM4LCA0NTk0MywgNDU5NDksIDQ1OTU1LCA0NTk2MCwgNDU5NjYsIAotICAgIDQ1OTcyLCA0NTk3NywgNDU5ODMsIDQ1OTg5LCA0NTk5NCwgNDU5OTksIDQ2MDA1LCA0NjAxMCwgNDYwMTYsIDQ2MDIyLCAKLSAgICA0NjAyOCwgNDYwMzQsIDQ2MDQwLCA0NjA0NSwgNDYwNTEsIDQ2MDU3LCA0NjA2MywgNDYwNjgsIDQ2MDc0LCA0NjA4MCwgCi0gICAgNDYwODYsIDQ2MDkxLCA0NjA5NywgNDYxMDMsIDQ2MTA4LCA0NjExNCwgNDYxMjAsIDQ2MTI1LCA0NjEzMSwgNDYxMzcsIAotICAgIDQ2MTQyLCA0NjE0NywgNDYxNTMsIDQ2MTU4LCA0NjE2NCwgNDYxNzAsIDQ2MTc2LCA0NjE4MiwgNDYxODgsIDQ2MTkzLCAKLSAgICA0NjE5OSwgNDYyMDUsIDQ2MjExLCA0NjIxNiwgNDYyMjIsIDQ2MjI4LCA0NjIzNCwgNDYyMzksIDQ2MjQ1LCA0NjI1MSwgCi0gICAgNDYyNTYsIDQ2MjYyLCA0NjI2OCwgNDYyNzMsIDQ2Mjc5LCA0NjI4NSwgNDYyOTAsIDQ2Mjk1LCA0NjMwMSwgNDYzMDYsIAotICAgIDQ2MzEyLCA0NjMxOCwgNDYzMjQsIDQ2MzMwLCA0NjMzNiwgNDYzNDAsIDQ2MzQ1LCA0NjM1MCwgNDYzNTUsIDQ2MzYwLCAKLSAgICA0NjM2NSwgNDYzNzAsIDQ2Mzc1LCA0NjM4MCwgNDYzODUsIDQ2MzkwLCA0NjM5NCwgNDYzOTgsIDQ2NDAyLCA0NjQwNiwgCi0gICAgNDY0MTAsIDQ2NDE0LCA0NjQxOSwgNDY0MjMsIDQ2NDI4LCA0NjQzMywgNDY0MzgsIDQ2NDQzLCA0NjQ0OCwgNDY0NTMsIAotICAgIDQ2NDU4LCA0NjQ2NywgNDY0NzYsIDQ2NDg1LCA0NjQ5NCwgNDY1MDMsIDQ2NTEyLCA0NjUyMSwgNDY1MzAsIDQ2NTM3LCAKLSAgICA0NjU0NSwgNDY1NTMsIDQ2NTYwLCA0NjU2NywgNDY1NzUsIDQ2NTgzLCA0NjU5MCwgNDY1OTcsIDQ2NjA1LCA0NjYxMywgCi0gICAgNDY2MjAsIDQ2NjI3LCA0NjYzNSwgNDY2NDMsIDQ2NjUwLCA0NjY1NywgNDY2NjUsIDQ2Njc0LCA0NjY4MywgNDY2OTEsIAotICAgIDQ2NzAwLCA0NjcwOSwgNDY3MTYsIDQ2NzIzLCA0NjczMSwgNDY3NDAsIDQ2NzQ5LCA0Njc1NywgNDY3NjYsIDQ2Nzc1LCAKLSAgICA0Njc4MiwgNDY3ODksIDQ2Nzk4LCA0NjgwNywgNDY4MTYsIDQ2ODI1LCA0NjgzNCwgNDY4NDMsIDQ2ODUwLCA0Njg1NywgCi0gICAgNDY4NjYsIDQ2ODc1LCA0Njg4NCwgNDY4OTMsIDQ2OTAyLCA0NjkxMSwgNDY5MTgsIDQ2OTI1LCA0NjkzNCwgNDY5NDMsIAotICAgIDQ2OTUyLCA0Njk2MiwgNDY5NzIsIDQ2OTgxLCA0Njk5MSwgNDcwMDEsIDQ3MDExLCA0NzAyMSwgNDcwMzEsIDQ3MDQxLCAKLSAgICA0NzA1MCwgNDcwNTksIDQ3MDY2LCA0NzA3NCwgNDcwODIsIDQ3MDkwLCA0NzA5OCwgNDcxMDMsIDQ3MTA4LCA0NzExNywgCi0gICAgNDcxMjUsIDQ3MTMyLCA0NzE0MSwgNDcxNDksIDQ3MTU2LCA0NzE2NSwgNDcxNzMsIDQ3MTgwLCA0NzE4OSwgNDcxOTcsIAotICAgIDQ3MjA0LCA0NzIxMywgNDcyMjEsIDQ3MjI4LCA0NzIzNywgNDcyNDUsIDQ3MjUyLCA0NzI2MiwgNDcyNzEsIDQ3Mjc4LCAKLSAgICA0NzI4OCwgNDcyOTcsIDQ3MzA0LCA0NzMxNCwgNDczMjMsIDQ3MzMwLCA0NzMzOSwgNDczNDgsIDQ3MzU3LCA0NzM2NiwgCi0gICAgNDczODAsIDQ3Mzk0LCA0NzQwMSwgNDc0MDYsIDQ3NDExLCA0NzQxNiwgNDc0MjEsIDQ3NDI2LCA0NzQzMSwgNDc0MzYsIAotICAgIDQ3NDQxLCA0NzQ0OSwgNDc0NTcsIDQ3NDY1LCA0NzQ3MywgNDc0NzgsIDQ3NDg1LCA0NzQ5MiwgNDc0OTksIDQ3NTA0LCAKLSAgICA0NzUxMiwgNDc1MTksIDQ3NTI3LCA0NzUzMSwgNDc1MzgsIDQ3NTQ0LCA0NzU1MSwgNDc1NTUsIDQ3NTYxLCA0NzU2NywgCi0gICAgNDc1NzMsIDQ3NTc3LCA0NzU4MCwgNDc1ODQsIDQ3NTg4LCA0NzU5NSwgNDc2MDEsIDQ3NjA3LCA0NzYxMywgNDc2MTksIAotICAgIDQ3NjMzLCA0NzY0MywgNDc2NTcsIDQ3NjcxLCA0NzY3NywgNDc2ODcsIDQ3NzAxLCA0NzcwNCwgNDc3MDcsIDQ3NzE0LCAKLSAgICA0NzcyMiwgNDc3MjgsIDQ3NzMzLCA0Nzc0MSwgNDc3NTMsIDQ3NzY1LCA0Nzc3MywgNDc3NzcsIDQ3NzgxLCA0Nzc4NCwgCi0gICAgNDc3ODcsIDQ3NzkxLCA0Nzc5NSwgNDc3OTgsIDQ3ODAxLCA0NzgwNiwgNDc4MTEsIDQ3ODE3LCA0NzgyMywgNDc4MjgsIAotICAgIDQ3ODMzLCA0NzgzOSwgNDc4NDUsIDQ3ODUwLCA0Nzg1NSwgNDc4NjAsIDQ3ODY1LCA0Nzg3MSwgNDc4NzcsIDQ3ODgyLCAKLSAgICA0Nzg4NywgNDc4OTMsIDQ3ODk5LCA0NzkwNCwgNDc5MDksIDQ3OTEyLCA0NzkxNSwgNDc5MjQsIDQ3OTI2LCA0NzkyOCwgCi0gICAgNDc5MzEsIDQ3OTM1LCA0Nzk0MSwgNDc5NDMsIDQ3OTQ2LCA0Nzk1MywgNDc5NjAsIDQ3OTY4LCA0Nzk3NiwgNDc5ODYsIAotICAgIDQ4MDAwLCA0ODAwNSwgNDgwMTAsIDQ4MDE0LCA0ODAxOSwgNDgwMjcsIDQ4MDM1LCA0ODA0NCwgNDgwNTMsIDQ4MDYyLCAKLSAgICA0ODA3MSwgNDgwNzYsIDQ4MDgxLCA0ODA4NywgNDgwOTMsIDQ4MDk5LCA0ODEwNSwgNDgxMDgsIDQ4MTE0LCA0ODEyMCwgCi0gICAgNDgxMzAsIDQ4MTQwLCA0ODE0OCwgNDgxNTYsIDQ4MTY1LCA0ODE3NCwgNDgxNzgsIDQ4MTg2LCA0ODE5NCwgNDgyMDIsIAotICAgIDQ4MjEwLCA0ODIxOSwgNDgyMjgsIDQ4MjM3LCA0ODI0NiwgNDgyNTEsIDQ4MjU2LCA0ODI2MSwgNDgyNjYsIDQ4MjcxLCAKLSAgICA0ODI3NywgNDgyODMsIDQ4Mjg4LCA0ODI5NCwgNDgyOTYsIDQ4Mjk4LCA0ODMwMCwgNDgzMDIsIDQ4MzA1LCA0ODMwOCwgCi0gICAgNDgzMTAsIDQ4MzEyLCA0ODMxNCwgNDgzMTgsIDQ4MzIyLCA0ODMyNCwgNDgzMjYsIDQ4MzI5LCA0ODMzMiwgNDgzMzYsIAotICAgIDQ4MzQyLCA0ODM0OCwgNDgzNTAsIDQ4MzU3LCA0ODM2MSwgNDgzNjYsIDQ4MzcxLCA0ODM3MywgNDgzODMsIDQ4Mzg5LCAKLSAgICA0ODM5NSwgNDg0MDEsIDQ4NDA3LCA0ODQxMywgNDg0MTksIDQ4NDI0LCA0ODQyNywgNDg0MzAsIDQ4NDMzLCA0ODQzNSwgCi0gICAgNDg0MzcsIDQ4NDQxLCA0ODQ0NSwgNDg0NTAsIDQ4NDU1LCA0ODQ2MCwgNDg0NjMsIDQ4NDY3LCA0ODQ3MiwgNDg0NzUsIAotICAgIDQ4NDc5LCA0ODQ4NCwgNDg0ODksIDQ4NDk0LCA0ODQ5OSwgNDg1MDQsIDQ4NTA5LCA0ODUxNCwgNDg1MTksIDQ4NTI0LCAKLSAgICA0ODUyOSwgNDg1MzQsIDQ4NTM5LCA0ODU0NSwgNDg1NTEsIDQ4NTU3LCA0ODU1OSwgNDg1NjIsIDQ4NTY0LCA0ODU2NywgCi0gICAgNDg1NjksIDQ4NTcxLCA0ODU3MywgNDg1NzUsIDQ4NTc3LCA0ODU3OSwgNDg1ODEsIDQ4NTgzLCA0ODU4NSwgNDg1ODcsIAotICAgIDQ4NTg5LCA0ODU5MSwgNDg1OTMsIDQ4NTk1LCA0ODU5NywgNDg1OTksIDQ4NjAxLCA0ODYwNiwgNDg2MTEsIDQ4NjE2LCAKLSAgICA0ODYyMSwgNDg2MjYsIDQ4NjMxLCA0ODYzNiwgNDg2NDEsIDQ4NjQ2LCA0ODY1MSwgNDg2NTYsIDQ4NjYxLCA0ODY2NiwgCi0gICAgNDg2NzEsIDQ4Njc2LCA0ODY4MSwgNDg2ODYsIDQ4NjkxLCA0ODY5NiwgNDg3MDEsIDQ4NzA1LCA0ODcwOSwgNDg3MTMsIAotICAgIDQ4NzE5LCA0ODcyNSwgNDg3MzAsIDQ4NzM1LCA0ODc0MCwgNDg3NDYsIDQ4NzUyLCA0ODc1NywgNDg3NjUsIDQ4NzczLCAKLSAgICA0ODc4MSwgNDg3ODksIDQ4Nzk3LCA0ODgwNSwgNDg4MTMsIDQ4ODIxLCA0ODgyNywgNDg4MzIsIDQ4ODM3LCA0ODg0MiwgCi0gICAgNDg4NDUsIDQ4ODQ5LCA0ODg1MywgNDg4NTcsIDQ4ODYxLCA0ODg2NSwgNDg4NjksIDQ4ODc2LCA0ODg4MywgNDg4OTEsIAotICAgIDQ4ODk5LCA0ODkwNCwgNDg5MDksIDQ4OTE2LCA0ODkyMywgNDg5MzAsIDQ4OTM3LCA0ODk0MCwgNDg5NDMsIDQ4OTQ4LCAKLSAgICA0ODk1MCwgNDg5NTQsIDQ4OTU5LCA0ODk2MSwgNDg5NjMsIDQ4OTY1LCA0ODk2NywgNDg5NzIsIDQ4OTc1LCA0ODk3NywgCi0gICAgNDg5ODIsIDQ4OTg5LCA0ODk5NiwgNDg5OTksIDQ5MDAzLCA0OTAwOCwgNDkwMTMsIDQ5MDIxLCA0OTAyNywgNDkwMzMsIAotICAgIDQ5MDQ1LCA0OTA1MiwgNDkwNjAsIDQ5MDY1LCA0OTA3MCwgNDkwNzYsIDQ5MDc5LCA0OTA4MiwgNDkwODcsIDQ5MDg5LCAKLSAgICA0OTA5MywgNDkwOTUsIDQ5MDk3LCA0OTA5OSwgNDkxMDEsIDQ5MTAzLCA0OTEwNSwgNDkxMTAsIDQ5MTEyLCA0OTExNCwgCi0gICAgNDkxMTYsIDQ5MTE4LCA0OTEyMiwgNDkxMjQsIDQ5MTI3LCA0OTEzMiwgNDkxMzcsIDQ5MTQyLCA0OTE0NywgNDkxNTMsIAotICAgIDQ5MTU5LCA0OTE2MSwgNDkxNjQsIDQ5MTcxLCA0OTE3OCwgNDkxODUsIDQ5MTkyLCA0OTE5NiwgNDkyMDAsIDQ5MjAyLCAKLSAgICA0OTIwNCwgNDkyMDgsIDQ5MjE0LCA0OTIxOSwgNDkyMjEsIDQ5MjI1LCA0OTIzNCwgNDkyNDIsIDQ5MjUwLCA0OTI1NiwgCi0gICAgNDkyNjIsIDQ5MjY3LCA0OTI3MywgNDkyNzgsIDQ5MjgxLCA0OTI5NSwgNDkyOTgsIDQ5MzAzLCA0OTMwOCwgNDkzMTQsIAotICAgIDQ5MzI0LCA0OTMyNiwgNDkzMzIsIDQ5MzM4LCA0OTM0MiwgNDkzNDksIDQ5MzUzLCA0OTM1NSwgNDkzNTcsIDQ5MzYxLCAKLSAgICA0OTM2NywgNDkzNzIsIDQ5Mzc4LCA0OTM4MCwgNDkzODYsIDQ5Mzg4LCA0OTM5NCwgNDkzOTYsIDQ5Mzk4LCA0OTQwMywgCi0gICAgNDk0MDUsIDQ5NDA5LCA0OTQxNCwgNDk0MTYsIDQ5NDIxLCA0OTQyNiwgNDk0MzAsIDQ5NDM3LCA0OTQ0NywgNDk0NTIsIAotICAgIDQ5NDU4LCA0OTQ2MSwgNDk0NjcsIDQ5NDcwLCA0OTQ3NSwgNDk0ODAsIDQ5NDg0LCA0OTQ4NiwgNDk0ODgsIDQ5NDkyLCAKLSAgICA0OTQ5NiwgNDk1MDAsIDQ5NTA0LCA0OTUwOSwgNDk1MTEsIDQ5NTE2LCA0OTUxOSwgNDk1MjIsIDQ5NTI1LCA0OTUyOSwgCi0gICAgNDk1MzMsIDQ5NTM4LCA0OTU0MiwgNDk1NDcsIDQ5NTUyLCA0OTU1NiwgNDk1NjEsIDQ5NTY3LCA0OTU3MCwgNDk1NzYsIAotICAgIDQ5NTgxLCA0OTU4NSwgNDk1OTAsIDQ5NTk2LCA0OTYwMiwgNDk2MDksIDQ5NjE1LCA0OTYyMiwgNDk2MjksIDQ5NjMxLCAKLSAgICA0OTYzOCwgNDk2NDIsIDQ5NjQ4LCA0OTY1NCwgNDk2NTksIDQ5NjY1LCA0OTY2OSwgNDk2NzQsIDQ5Njc3LCA0OTY4MiwgCi0gICAgNDk2ODgsIDQ5Njk1LCA0OTcwMywgNDk3MTAsIDQ5NzE5LCA0OTcyOSwgNDk3MzYsIDQ5NzQyLCA0OTc0NiwgNDk3NTMsIAotICAgIDQ5NzU4LCA0OTc2NywgNDk3NzAsIDQ5NzczLCA0OTc4MiwgNDk3OTIsIDQ5Nzk5LCA0OTgwMSwgNDk4MDcsIDQ5ODEyLCAKLSAgICA0OTgxNCwgNDk4MTcsIDQ5ODIxLCA0OTgyOSwgNDk4MzgsIDQ5ODQxLCA0OTg0NiwgNDk4NTEsIDQ5ODU5LCA0OTg2NywgCi0gICAgNDk4NzUsIDQ5ODgzLCA0OTg4OSwgNDk4OTUsIDQ5OTAxLCA0OTkwOSwgNDk5MTQsIDQ5OTE3LCA0OTkyMSwgNDk5MjQsIAotICAgIDQ5OTM2LCA0OTk0NiwgNDk5NTcsIDQ5OTY2LCA0OTk3NywgNDk5ODcsIDQ5OTk2LCA1MDAwMiwgNTAwMTAsIDUwMDE0LCAKLSAgICA1MDAyMiwgNTAwMjYsIDUwMDM0LCA1MDA0MSwgNTAwNDgsIDUwMDU3LCA1MDA2NiwgNTAwNzYsIDUwMDg2LCA1MDA5NiwgCi0gICAgNTAxMDYsIDUwMTE1LCA1MDEyNCwgNTAxMzQsIDUwMTQ0LCA1MDE1MywgNTAxNjIsIDUwMTY4LCA1MDE3NCwgNTAxODAsIAotICAgIDUwMTg2LCA1MDE5MiwgNTAxOTgsIDUwMjA1LCA1MDIxMSwgNTAyMTgsIDUwMjI1LCA1MDIzMSwgNTAyMzcsIDUwMjQzLCAKLSAgICA1MDI0OSwgNTAyNTUsIDUwMjYxLCA1MDI2OCwgNTAyNzQsIDUwMjgxLCA1MDI4OCwgNTAyOTUsIDUwMzAyLCA1MDMwOSwgCi0gICAgNTAzMTYsIDUwMzIzLCA1MDMzMCwgNTAzMzgsIDUwMzQ1LCA1MDM1MywgNTAzNjEsIDUwMzY2LCA1MDM2OSwgNTAzNzMsIAotICAgIDUwMzc3LCA1MDM4MywgNTAzODYsIDUwMzkxLCA1MDM5NywgNTA0MDIsIDUwNDA2LCA1MDQxMSwgNTA0MTcsIDUwNDI0LCAKLSAgICA1MDQyNywgNTA0MzQsIDUwNDQxLCA1MDQ0NSwgNTA0NTMsIDUwNDYxLCA1MDQ2NiwgNTA0NzIsIDUwNDc3LCA1MDQ4MiwgCi0gICAgNTA0ODksIDUwNDk2LCA1MDUwNCwgNTA1MTIsIDUwNTIxLCA1MDUyNSwgNTA1MzQsIDUwNTM5LCA1MDU0MywgNTA1NTAsIAotICAgIDUwNTU0LCA1MDU2MCwgNTA1NjgsIDUwNTczLCA1MDU4MCwgNTA1ODQsIDUwNTg5LCA1MDU5MywgNTA1OTgsIDUwNjAyLCAKLSAgICA1MDYwNywgNTA2MTIsIDUwNjIxLCA1MDYyMywgNTA2MjYsIDUwNjI5LCA1MDYzNiwgNTA2NDMsIDUwNjQ5LCA1MDY1NywgCi0gICAgNTA2NjMsIDUwNjcwLCA1MDY3NSwgNTA2NzgsIDUwNjgzLCA1MDY4OCwgNTA2OTMsIDUwNzAxLCA1MDcwNSwgNTA3MTIsIAotICAgIDUwNzIwLCA1MDcyOCwgNTA3MzMsIDUwNzM4LCA1MDc0NCwgNTA3NDksIDUwNzU0LCA1MDc2MCwgNTA3NjUsIDUwNzY4LCAKLSAgICA1MDc3MiwgNTA3NzYsIDUwNzgzLCA1MDc5MywgNTA3OTgsIDUwODA3LCA1MDgxNiwgNTA4MjIsIDUwODI4LCA1MDgzMywgCi0gICAgNTA4MzgsIDUwODQzLCA1MDg0OCwgNTA4NTQsIDUwODYwLCA1MDg2OCwgNTA4NzYsIDUwODgyLCA1MDg4OCwgNTA4OTIsIAotICAgIDUwODk2LCA1MDkwMywgNTA5MTAsIDUwOTE2LCA1MDkxOSwgNTA5MjIsIDUwOTI2LCA1MDkzMCwgNTA5MzQsIDUwOTM5LCAKLSAgICA1MDk0NSwgNTA5NTEsIDUwOTU4LCA1MDk2NSwgNTA5NzAsIDUwOTc0LCA1MDk3OCwgNTA5ODIsIDUwOTg2LCA1MDk5MCwgCi0gICAgNTA5OTQsIDUwOTk4LCA1MTAwMiwgNTEwMDYsIDUxMDEwLCA1MTAxNCwgNTEwMTgsIDUxMDIyLCA1MTAyNiwgNTEwMzAsIAotICAgIDUxMDM0LCA1MTAzOCwgNTEwNDIsIDUxMDQ2LCA1MTA1MCwgNTEwNTQsIDUxMDU4LCA1MTA2MiwgNTEwNjYsIDUxMDcwLCAKLSAgICA1MTA3NCwgNTEwNzgsIDUxMDgyLCA1MTA4NiwgNTEwOTAsIDUxMDk0LCA1MTA5OCwgNTExMDIsIDUxMTA2LCA1MTExMCwgCi0gICAgNTExMTQsIDUxMTE4LCA1MTEyMiwgNTExMjYsIDUxMTMwLCA1MTEzNCwgNTExMzgsIDUxMTQyLCA1MTE0NiwgNTExNTAsIAotICAgIDUxMTU0LCA1MTE1OCwgNTExNjIsIDUxMTY2LCA1MTE3MCwgNTExNzQsIDUxMTc4LCA1MTE4MiwgNTExODYsIDUxMTkwLCAKLSAgICA1MTE5NCwgNTExOTgsIDUxMjAyLCA1MTIwNiwgNTEyMTAsIDUxMjE0LCA1MTIxOCwgNTEyMjIsIDUxMjI2LCA1MTIzMCwgCi0gICAgNTEyMzQsIDUxMjM4LCA1MTI0MiwgNTEyNDYsIDUxMjUwLCA1MTI1NCwgNTEyNTgsIDUxMjYyLCA1MTI2NiwgNTEyNzAsIAotICAgIDUxMjc0LCA1MTI3OCwgNTEyODIsIDUxMjg2LCA1MTI5MCwgNTEyOTQsIDUxMjk4LCA1MTMwMiwgNTEzMDYsIDUxMzEwLCAKLSAgICA1MTMxNCwgNTEzMTgsIDUxMzIyLCA1MTMyNiwgNTEzMzAsIDUxMzM0LCA1MTMzOCwgNTEzNDIsIDUxMzQ2LCA1MTM1MCwgCi0gICAgNTEzNTQsIDUxMzU4LCA1MTM2MiwgNTEzNjYsIDUxMzcwLCA1MTM3NCwgNTEzNzgsIDUxMzgyLCA1MTM4NiwgNTEzOTAsIAotICAgIDUxMzk0LCA1MTM5OCwgNTE0MDIsIDUxNDA2LCA1MTQxMCwgNTE0MTQsIDUxNDE4LCA1MTQyMiwgNTE0MjYsIDUxNDMwLCAKLSAgICA1MTQzNCwgNTE0MzgsIDUxNDQyLCA1MTQ0NiwgNTE0NTAsIDUxNDU0LCA1MTQ1OCwgNTE0NjIsIDUxNDY2LCA1MTQ3MCwgCi0gICAgNTE0NzQsIDUxNDc4LCA1MTQ4MiwgNTE0ODYsIDUxNDkwLCA1MTQ5NCwgNTE0OTgsIDUxNTAyLCA1MTUwNiwgNTE1MTAsIAotICAgIDUxNTE0LCA1MTUxOCwgNTE1MjIsIDUxNTI2LCA1MTUzMCwgNTE1MzQsIDUxNTM4LCA1MTU0MiwgNTE1NDYsIDUxNTUwLCAKLSAgICA1MTU1NCwgNTE1NTgsIDUxNTYyLCA1MTU2NiwgNTE1NzAsIDUxNTc0LCA1MTU3OCwgNTE1ODIsIDUxNTg2LCA1MTU5MCwgCi0gICAgNTE1OTQsIDUxNTk4LCA1MTYwMiwgNTE2MDYsIDUxNjEwLCA1MTYxNCwgNTE2MTgsIDUxNjIyLCA1MTYyNiwgNTE2MzAsIAotICAgIDUxNjM0LCA1MTYzOCwgNTE2NDIsIDUxNjQ2LCA1MTY1MCwgNTE2NTQsIDUxNjU4LCA1MTY2MiwgNTE2NjYsIDUxNjcwLCAKLSAgICA1MTY3NCwgNTE2NzgsIDUxNjgyLCA1MTY4NiwgNTE2OTAsIDUxNjk0LCA1MTY5OCwgNTE3MDIsIDUxNzA2LCA1MTcxMCwgCi0gICAgNTE3MTQsIDUxNzE4LCA1MTcyMiwgNTE3MjYsIDUxNzMwLCA1MTczNCwgNTE3MzgsIDUxNzQyLCA1MTc0NiwgNTE3NTAsIAotICAgIDUxNzU0LCA1MTc1OCwgNTE3NjIsIDUxNzY2LCA1MTc3MCwgNTE3NzQsIDUxNzc4LCA1MTc4MiwgNTE3ODYsIDUxNzkwLCAKLSAgICA1MTc5NCwgNTE3OTgsIDUxODAyLCA1MTgwNiwgNTE4MTAsIDUxODE0LCA1MTgxOCwgNTE4MjIsIDUxODI2LCA1MTgzMCwgCi0gICAgNTE4MzQsIDUxODM4LCA1MTg0MiwgNTE4NDYsIDUxODUwLCA1MTg1NCwgNTE4NTgsIDUxODYyLCA1MTg2NiwgNTE4NzAsIAotICAgIDUxODc0LCA1MTg3OCwgNTE4ODIsIDUxODg2LCA1MTg5MCwgNTE4OTQsIDUxODk4LCA1MTkwMiwgNTE5MDYsIDUxOTEwLCAKLSAgICA1MTkxNCwgNTE5MTgsIDUxOTIyLCA1MTkyNiwgNTE5MzAsIDUxOTM0LCA1MTkzOCwgNTE5NDIsIDUxOTQ2LCA1MTk1MCwgCi0gICAgNTE5NTQsIDUxOTU4LCA1MTk2MiwgNTE5NjYsIDUxOTcwLCA1MTk3NCwgNTE5NzgsIDUxOTgyLCA1MTk4NiwgNTE5OTAsIAotICAgIDUxOTk0LCA1MjAwMSwgNTIwMDksIDUyMDE1LCA1MjAyMSwgNTIwMjgsIDUyMDM1LCA1MjA0MSwgNTIwNDcsIDUyMDUzLCAKLSAgICA1MjA1OSwgNTIwNjMsIDUyMDY3LCA1MjA3MiwgNTIwNzcsIDUyMDgzLCA1MjA4OSwgNTIwOTcsIDUyMTA0LCA1MjEwOSwgCi0gICAgNTIxMTQsIDUyMTIyLCA1MjEzMSwgNTIxMzgsIDUyMTQ4LCA1MjE1OSwgNTIxNjIsIDUyMTY1LCA1MjE2OSwgNTIxNzMsIAotICAgIDUyMTgwLCA1MjE4NywgNTIxOTgsIDUyMjA5LCA1MjIxOCwgNTIyMjcsIDUyMjMzLCA1MjIzOSwgNTIyNDYsIDUyMjUzLCAKLSAgICA1MjI2MiwgNTIyNzIsIDUyMjgzLCA1MjI5MywgNTIzMDMsIDUyMzEzLCA1MjMyNCwgNTIzMzUsIDUyMzQ1LCA1MjM1NiwgCi0gICAgNTIzNjYsIDUyMzc2LCA1MjM4NSwgNTIzOTUsIDUyNDA1LCA1MjQxNSwgNTI0MjUsIDUyNDMyLCA1MjQzOSwgNTI0NDYsIAotICAgIDUyNDUzLCA1MjQ2MywgNTI0NzMsIDUyNDgxLCA1MjQ4OSwgNTI0OTYsIDUyNTAzLCA1MjUxMCwgNTI1MTcsIDUyNTI0LCAKLSAgICA1MjUyOSwgNTI1MzQsIDUyNTQwLCA1MjU0OCwgNTI1NTcsIDUyNTY1LCA1MjU3MywgNTI1ODEsIDUyNTg5LCA1MjU5NywgCi0gICAgNTI2MDUsIDUyNjEzLCA1MjYyMSwgNTI2MzAsIDUyNjM5LCA1MjY0OCwgNTI2NTcsIDUyNjY2LCA1MjY3NSwgNTI2ODQsIAotICAgIDUyNjkzLCA1MjcwMiwgNTI3MTEsIDUyNzIwLCA1MjcyOSwgNTI3MzgsIDUyNzQ3LCA1Mjc1NiwgNTI3NjUsIDUyNzc5LCAKLSAgICA1Mjc5NCwgNTI4MDgsIDUyODIzLCA1MjgzNywgNTI4NTEsIDUyODY1LCA1Mjg3OSwgNTI4ODksIDUyOTAwLCA1MjkxMCwgCi0gICAgNTI5MjEsIDUyOTM2LCA1Mjk1MSwgNTI5NTksIDUyOTY1LCA1Mjk3MiwgNTI5NzksIDUyOTg2LCA1Mjk5MywgNTI5OTgsIAotICAgIDUzMDA0LCA1MzAwOSwgNTMwMTQsIDUzMDIwLCA1MzAyNSwgNTMwMzAsIDUzMDM1LCA1MzA0MCwgNTMwNDUsIDUzMDUyLCAKLSAgICA1MzA1OCwgNTMwNjYsIDUzMDcxLCA1MzA3NiwgNTMwODAsIDUzMDg0LCA1MzA5MiwgNTMxMDAsIDUzMTA4LCA1MzExNiwgCi0gICAgNTMxMjMsIDUzMTMwLCA1MzE0MywgNTMxNTYsIDUzMTY5LCA1MzE4MiwgNTMxOTAsIDUzMTk4LCA1MzIwNCwgNTMyMTAsIAotICAgIDUzMjE3LCA1MzIyNCwgNTMyMzEsIDUzMjM4LCA1MzI0MiwgNTMyNDcsIDUzMjU1LCA1MzI2MywgNTMyNzEsIDUzMjc4LCAKLSAgICA1MzI4MiwgNTMyOTAsIDUzMjk4LCA1MzMwMiwgNTMzMDYsIDUzMzExLCA1MzMxOCwgNTMzMjYsIDUzMzM0LCA1MzM1MywgCi0gICAgNTMzNzIsIDUzMzkxLCA1MzQxMCwgNTM0MjksIDUzNDQ4LCA1MzQ2NywgNTM0ODYsIDUzNDkyLCA1MzQ5OSwgNTM1MDgsIAotICAgIDUzNTE2LCA1MzUyNCwgNTM1MzAsIDUzNTMzLCA1MzUzNiwgNTM1NDEsIDUzNTQ0LCA1MzU2NCwgNTM1NzEsIDUzNTc3LCAKLSAgICA1MzU4MywgNTM1ODcsIDUzNTkwLCA1MzU5MywgNTM1OTYsIDUzNjA4LCA1MzYyMiwgNTM2MjksIDUzNjM2LCA1MzYzOSwgCi0gICAgNTM2NDMsIDUzNjQ2LCA1MzY1MSwgNTM2NTYsIDUzNjYxLCA1MzY2NywgNTM2NzYsIDUzNjgzLCA1MzY5MCwgNTM2OTgsIAotICAgIDUzNzA1LCA1MzcxMiwgNTM3MTUsIDUzNzIxLCA1MzcyNywgNTM3MzAsIDUzNzMzLCA1MzczOCwgNTM3NDMsIDUzNzQ5LCAKLSAgICA1Mzc1NSwgNTM3NTksIDUzNzY0LCA1Mzc3MSwgNTM3NzUsIDUzNzgxLCA1Mzc4NSwgNTM3ODksIDUzNzk3LCA1MzgwOSwgCi0gICAgNTM4MTgsIDUzODIyLCA1MzgyNCwgNTM4MzMsIDUzODQyLCA1Mzg0OCwgNTM4NTEsIDUzODU3LCA1Mzg2MywgNTM4NjgsIAotICAgIDUzODczLCA1Mzg3OCwgNTM4ODMsIDUzODg4LCA1Mzg5MywgNTM4OTUsIDUzOTAxLCA1MzkwNiwgNTM5MTQsIDUzOTE4LCAKLSAgICA1MzkyNCwgNTM5MjcsIDUzOTMxLCA1MzkzOCwgNTM5NDUsIDUzOTQ3LCA1Mzk0OSwgNTM5NTUsIDUzOTYxLCA1Mzk2NywgCi0gICAgNTM5NzYsIDUzOTg1LCA1Mzk5MiwgNTM5OTksIDU0MDA1LCA1NDAxMiwgNTQwMTcsIDU0MDIyLCA1NDAyNywgNTQwMzMsIAotICAgIDU0MDM5LCA1NDA0NCwgNTQwNTEsIDU0MDU1LCA1NDA1OSwgNTQwNzIsIDU0MDg1LCA1NDA5NywgNTQxMDYsIDU0MTEyLCAKLSAgICA1NDExOSwgNTQxMjQsIDU0MTI5LCA1NDEzNCwgNTQxMzksIDU0MTQ0LCA1NDE0NiwgNTQxNTMsIDU0MTYxLCA1NDE2OSwgCi0gICAgNTQxNzcsIDU0MTg0LCA1NDE5MiwgNTQxOTgsIDU0MjAzLCA1NDIwOSwgNTQyMTUsIDU0MjIxLCA1NDIyOCwgNTQyMzQsIAotICAgIDU0MjQyLCA1NDI1MCwgNTQyNTgsIDU0MjY2LCA1NDI3NCwgNTQyODAsIDU0Mjg2LCA1NDI5NSwgNTQyOTksIDU0MzA4LCAKLSAgICA1NDMxNywgNTQzMjYsIDU0MzM0LCA1NDMzOCwgNTQzNDQsIDU0MzUxLCA1NDM1OCwgNTQzNjIsIDU0MzY4LCA1NDM3NiwgCi0gICAgNTQzODIsIDU0Mzg3LCA1NDM5MywgNTQzOTgsIDU0NDAzLCA1NDQxMCwgNTQ0MTcsIDU0NDIyLCA1NDQyNywgNTQ0MzUsIAotICAgIDU0NDQzLCA1NDQ1MywgNTQ0NjMsIDU0NDcwLCA1NDQ3NywgNTQ0ODEsIDU0NDg1LCA1NDQ5NywgNTQ1MDMsIDU0NTEwLCAKLSAgICA1NDUxNSwgNTQ1MjAsIDU0NTI3LCA1NDUzNCwgNTQ1NDAsIDU0NTQ2LCA1NDU1NiwgNTQ1NjMsIDU0NTcxLCA1NDU3OSwgCi0gICAgNTQ1ODgsIDU0NTk1LCA1NDYwMSwgNTQ2MDgsIDU0NjE0LCA1NDYyMiwgNTQ2MzAsIDU0NjM4LCA1NDY0NiwgNTQ2NTIsIAotICAgIDU0NjU3LCA1NDY2NywgNTQ2NzgsIDU0Njg1LCA1NDY5NCwgNTQ3MDAsIDU0NzA1LCA1NDcxMCwgNTQ3MjAsIDU0NzI3LCAKLSAgICA1NDczMywgNTQ3MzksIDU0NzQ3LCA1NDc1MiwgNTQ3NTksIDU0NzY2LCA1NDc3NywgNTQ3ODQsIDU0NzkxLCA1NDc5OCwgCi0gICAgNTQ4MDUsIDU0ODEyLCA1NDgyMCwgNTQ4MjgsIDU0ODQxLCA1NDg1NCwgNTQ4NjYsIDU0ODc4LCA1NDg5MiwgNTQ5MDYsIAotICAgIDU0OTEyLCA1NDkxOCwgNTQ5MjcsIDU0OTM2LCA1NDk0MywgNTQ5NTAsIDU0OTU5LCA1NDk2OCwgNTQ5NzcsIDU0OTg2LCAKLSAgICA1NDk5NCwgNTUwMDIsIDU1MDEyLCA1NTAyMiwgNTUwMzYsIDU1MDUwLCA1NTA1OSwgNTUwNjgsIDU1MDgxLCA1NTA5NCwgCi0gICAgNTUxMDMsIDU1MTEyLCA1NTEyMywgNTUxMzQsIDU1MTQwLCA1NTE0NiwgNTUxNTUsIDU1MTY0LCA1NTE2OSwgNTUxNzQsIAotICAgIDU1MTgyLCA1NTE4OCwgNTUxOTQsIDU1MjAyLCA1NTIxMCwgNTUyMjMsIDU1MjM2LCA1NTI0MCwgNTUyNDQsIDU1MjUyLCAKLSAgICA1NTI2MCwgNTUyNjcsIDU1Mjc1LCA1NTI4MywgNTUyOTIsIDU1MzAxLCA1NTMwNywgNTUzMTMsIDU1MzIwLCA1NTMyNywgCi0gICAgNTUzMzQsIDU1MzQxLCA1NTM1MCwgNTUzNTksIDU1MzYyLCA1NTM2NSwgNTUzNzAsIDU1Mzc1LCA1NTM4MSwgNTUzODcsIAotICAgIDU1Mzk0LCA1NTQwMSwgNTU0MTIsIDU1NDIzLCA1NTQzMCwgNTU0MzcsIDU1NDQ1LCA1NTQ1MywgNTU0NjEsIDU1NDY5LCAKLSAgICA1NTQ3NywgNTU0ODUsIDU1NDkxLCA1NTQ5NywgNTU1MDEsIDU1NTA1LCA1NTUxMywgNTU1MjEsIDU1NTI2LCA1NTUzMSwgCi0gICAgNTU1MzYsIDU1NTQxLCA1NTU0NywgNTU1NjEsIDU1NTY4LCA1NTU3NSwgNTU1NzksIDU1NTgxLCA1NTU4MywgNTU1ODgsIAotICAgIDU1NTkzLCA1NTU5OCwgNTU2MDIsIDU1NjEwLCA1NTYxNywgNTU2MjQsIDU1NjMyLCA1NTY0NCwgNTU2NTIsIDU1NjYwLCAKLSAgICA1NTY3MSwgNTU2NzUsIDU1Njc5LCA1NTY4NSwgNTU2OTMsIDU1NzA2LCA1NTcxMywgNTU3MjAsIDU1NzI3LCA1NTczMywgCi0gICAgNTU3NDAsIDU1NzQ5LCA1NTc1OCwgNTU3NjQsIDU1NzcwLCA1NTc3NiwgNTU3ODYsIDU1Nzk2LCA1NTgwNCwgNTU4MTMsIAotICAgIDU1ODE4LCA1NTgyMSwgNTU4MjYsIDU1ODMxLCA1NTgzNiwgNTU4NDIsIDU1ODQ4LCA1NTg1MiwgNTU4NTUsIDU1ODU4LCAKLSAgICA1NTg2MSwgNTU4NjYsIDU1ODcxLCA1NTg3NywgNTU4ODMsIDU1ODg3LCA1NTg5MSwgNTU4OTgsIDU1OTA1LCA1NTkxMiwgCi0gICAgNTU5MTksIDU1OTI2LCA1NTkzMywgNTU5NDMsIDU1OTUzLCA1NTk2MCwgNTU5NjcsIDU1OTc1LCA1NTk4MywgNTU5ODcsIAotICAgIDU1OTkyLCA1NTk5NywgNTYwMDMsIDU2MDA5LCA1NjAxMiwgNTYwMTUsIDU2MDE4LCA1NjAyMSwgNTYwMjYsIDU2MDMxLCAKLSAgICA1NjAzNiwgNTYwNDEsIDU2MDQ2LCA1NjA1MSwgNTYwNTUsIDU2MDU5LCA1NjA2MywgNTYwNjgsIDU2MDczLCA1NjA3NywgCi0gICAgNTYwODEsIDU2MDg3LCA1NjA5MSwgNTYwOTcsIDU2MTAyLCA1NjEwOSwgNTYxMTcsIDU2MTI0LCA1NjEzMiwgNTYxMzksIAotICAgIDU2MTQ3LCA1NjE1NiwgNTYxNjMsIDU2MTczLCA1NjE4NCwgNTYxOTAsIDU2MTk5LCA1NjIwNSwgNTYyMTQsIDU2MjIzLCAKLSAgICA1NjIyOSwgNTYyMzUsIDU2MjM5LCA1NjI0MywgNTYyNTIsIDU2MjYxLCA1NjI2OCwgNTYyNzUsIDU2Mjg0LCA1NjI5MywgCi0gICAgNTYyOTksIDU2MzA1LCA1NjMxMiwgNTYzMTcsIDU2MzIxLCA1NjMyNSwgNTYzMzAsIDU2MzM1LCA1NjM0MCwgNTYzNDgsIAotICAgIDU2MzU2LCA1NjM1OSwgNTYzNjMsIDU2MzcyLCA1NjM4MiwgNTYzOTEsIDU2NDAxLCA1NjQxMiwgNTY0MjUsIDU2NDI5LCAKLSAgICA1NjQzMywgNTY0MzcsIDU2NDQxLCA1NjQ0NiwgNTY0NTEsIDU2NDU3LCA1NjQ2MywgNTY0NzAsIDU2NDc3LCA1NjQ4MywgCi0gICAgNTY0ODksIDU2NDk1LCA1NjUwMSwgNTY1MDksIDU2NTE3LCA1NjUyNCwgNTY1MzEsIDU2NTM4LCAwLCAwLCA1NjU0NSwgCi0gICAgNTY1NTQsIDU2NTYzLCA1NjU3MywgNTY1ODMsIDU2NTkyLCA1NjYwMSwgNTY2MTAsIDU2NjE5LCA1NjYyNSwgNTY2MzAsIAotICAgIDU2NjM5LCA1NjY0OSwgNTY2NTgsIDU2NjY4LCA1NjY3NSwgNTY2ODIsIDU2Njg5LCA1NjY5NiwgNTY3MDEsIDU2NzA2LCAKLSAgICA1NjcxMSwgNTY3MTYsIDU2NzI0LCA1NjczMywgNTY3NDEsIDU2NzUwLCA1Njc1NCwgNTY3NTgsIDU2NzYyLCA1Njc2NiwgCi0gICAgNTY3NzYsIDAsIDAsIDU2Nzc5LCA1Njc4OCwgNTY3OTcsIDU2ODA2LCA1NjgxNSwgNTY4MjEsIDU2ODI3LCA1NjgzMywgCi0gICAgNTY4MzksIDU2ODQ5LCA1Njg1OSwgNTY4NjksIDU2ODc5LCA1Njg4OSwgNTY4OTksIDU2OTA5LCA1NjkxOSwgNTY5MjYsIAotICAgIDU2OTMzLCA1Njk0MCwgNTY5NDcsIDU2OTU0LCA1Njk2MSwgNTY5NjgsIDU2OTc1LCA1Njk4MSwgNTY5ODcsIDU2OTkzLCAKLSAgICA1Njk5OSwgNTcwMDUsIDU3MDExLCA1NzAxNywgNTcwMjMsIDU3MDM0LCAwLCAwLCAwLCA1NzA0NCwgNTcwNTEsIDU3MDU0LCAKLSAgICA1NzA1OCwgNTcwNjIsIDU3MDY3LCA1NzA3MiwgNTcwNzcsIDU3MDgwLCA1NzA4OSwgNTcwOTgsIDU3MTA3LCAwLCA1NzExNiwgCi0gICAgNTcxMjIsIDU3MTI4LCA1NzEzNiwgNTcxNDYsIDU3MTUzLCA1NzE2MiwgNTcxNjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU3MTcwLCA1NzE3OSwgCi0gICAgNTcxODgsIDU3MTk3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NzIwNiwgCi0gICAgNTcyMTEsIDU3MjE2LCA1NzIyMSwgNTcyMjYsIDU3MjMxLCA1NzIzNiwgNTcyNDEsIDU3MjQ2LCA1NzI1MSwgNTcyNTYsIAotICAgIDU3MjYyLCA1NzI2NiwgNTcyNzEsIDU3Mjc2LCA1NzI4MSwgNTcyODYsIDU3MjkxLCA1NzI5NiwgNTczMDEsIDU3MzA2LCAKLSAgICA1NzMxMSwgNTczMTYsIDU3MzIxLCA1NzMyNiwgNTczMzEsIDU3MzM2LCA1NzM0MSwgNTczNDYsIDU3MzUxLCA1NzM1NiwgCi0gICAgNTczNjEsIDU3MzY2LCA1NzM3MSwgNTczNzYsIDU3MzgyLCA1NzM4NywgNTczOTMsIDU3NDAyLCA1NzQwNywgNTc0MTUsIAotICAgIDU3NDIyLCA1NzQzMSwgNTc0MzYsIDU3NDQxLCA1NzQ0NiwgNTc0NTIsIDAsIDU3NDU5LCA1NzQ2NCwgNTc0NjksIDU3NDc0LCAKLSAgICA1NzQ3OSwgNTc0ODQsIDU3NDg5LCA1NzQ5NCwgNTc0OTksIDU3NTA0LCA1NzUwOSwgNTc1MTUsIDU3NTE5LCA1NzUyNCwgCi0gICAgNTc1MjksIDU3NTM0LCA1NzUzOSwgNTc1NDQsIDU3NTQ5LCA1NzU1NCwgNTc1NTksIDU3NTY0LCA1NzU2OSwgNTc1NzQsIAotICAgIDU3NTc5LCA1NzU4NCwgNTc1ODksIDU3NTk0LCA1NzU5OSwgNTc2MDQsIDU3NjA5LCA1NzYxNCwgNTc2MTksIDU3NjI0LCAKLSAgICA1NzYyOSwgNTc2MzUsIDU3NjQwLCA1NzY0NiwgNTc2NTUsIDU3NjYwLCA1NzY2OCwgNTc2NzUsIDU3Njg0LCA1NzY4OSwgCi0gICAgNTc2OTQsIDU3Njk5LCA1NzcwNSwgMCwgNTc3MTIsIDU3NzIwLCA1NzcyOCwgNTc3MzcsIDU3NzQ0LCA1Nzc1MiwgNTc3NTgsIAotICAgIDU3NzY3LCA1Nzc3NSwgNTc3ODMsIDU3NzkxLCA1Nzc5OSwgNTc4MDcsIDU3ODE1LCA1NzgyMCwgNTc4MjcsIDU3ODMzLCAKLSAgICA1Nzg0MCwgNTc4NDgsIDU3ODU1LCA1Nzg2MiwgNTc4NzAsIDU3ODc2LCA1Nzg4MiwgNTc4ODksIDU3ODk2LCA1NzkwNiwgCi0gICAgNTc5MTYsIDU3OTIzLCA1NzkzMCwgNTc5MzUsIDU3OTQ1LCA1Nzk1NSwgNTc5NjAsIDU3OTY1LCA1Nzk3MCwgNTc5NzUsIAotICAgIDU3OTgwLCA1Nzk4NSwgNTc5OTAsIDU3OTk1LCA1ODAwMCwgNTgwMDUsIDU4MDEwLCA1ODAxNSwgNTgwMjAsIDU4MDI1LCAKLSAgICA1ODAzMCwgNTgwMzUsIDU4MDQwLCA1ODA0NSwgNTgwNTAsIDU4MDU1LCA1ODA2MCwgNTgwNjUsIDU4MDcwLCA1ODA3NSwgCi0gICAgNTgwODAsIDU4MDg1LCA1ODA5MCwgNTgwOTUsIDU4MTAwLCA1ODEwNSwgNTgxMDksIDU4MTEzLCA1ODExOCwgNTgxMjMsIAotICAgIDU4MTI4LCA1ODEzMywgNTgxMzgsIDU4MTQzLCA1ODE0OCwgNTgxNTMsIDU4MTU4LCA1ODE2MywgNTgxNjgsIDU4MTczLCAKLSAgICA1ODE3OCwgNTgxODMsIDU4MTg4LCA1ODE5MywgNTgxOTgsIDU4MjAzLCA1ODIxMCwgNTgyMTcsIDU4MjI0LCA1ODIzMSwgCi0gICAgNTgyMzgsIDU4MjQ1LCA1ODI1MiwgNTgyNTksIDU4MjY2LCA1ODI3MywgNTgyODAsIDU4Mjg3LCA1ODI5NCwgNTgzMDEsIAotICAgIDU4MzA2LCA1ODMxMSwgNTgzMTgsIDU4MzI1LCA1ODMzMiwgNTgzMzksIDU4MzQ2LCA1ODM1MywgNTgzNjAsIDU4MzY3LCAKLSAgICA1ODM3NCwgNTgzODEsIDU4Mzg4LCA1ODM5NSwgNTg0MDEsIDU4NDA3LCA1ODQxMywgNTg0MTksIDU4NDI2LCA1ODQzMywgCi0gICAgNTg0NDAsIDU4NDQ3LCA1ODQ1NCwgNTg0NjEsIDU4NDY4LCA1ODQ3NSwgNTg0ODIsIDU4NDg5LCA1ODQ5NywgNTg1MDUsIAotICAgIDU4NTEzLCA1ODUyMSwgNTg1MjksIDU4NTM3LCA1ODU0NSwgNTg1NTMsIDU4NTU3LCA1ODU2MywgNTg1NjksIDU4NTczLCAKLSAgICA1ODU3OSwgNTg1ODUsIDU4NTkxLCA1ODU5OCwgNTg2MDUsIDU4NjEyLCA1ODYxOSwgNTg2MjQsIDU4NjMwLCA1ODYzNiwgCi0gICAgNTg2NDMsIDAsIDAsIDAsIDAsIDAsIDU4NjUwLCA1ODY1OCwgNTg2NjcsIDU4Njc2LCA1ODY4NCwgNTg2OTAsIDU4Njk1LCAKLSAgICA1ODcwMCwgNTg3MDUsIDU4NzEwLCA1ODcxNSwgNTg3MjAsIDU4NzI1LCA1ODczMCwgNTg3MzUsIDU4NzQwLCA1ODc0NSwgCi0gICAgNTg3NTAsIDU4NzU1LCA1ODc2MCwgNTg3NjUsIDU4NzcwLCA1ODc3NSwgNTg3ODAsIDU4Nzg1LCA1ODc5MCwgNTg3OTUsIAotICAgIDU4ODAwLCA1ODgwNSwgNTg4MTAsIDU4ODE1LCA1ODgyMCwgNTg4MjUsIDU4ODMwLCA1ODgzNSwgNTg4NDAsIDU4ODQ1LCAKLSAgICA1ODg1MCwgNTg4NTUsIDU4ODYwLCA1ODg2NSwgNTg4NzAsIDU4ODc1LCA1ODg4MCwgNTg4ODUsIDAsIDU4ODkwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCA1ODg5NSwgMCwgMCwgNTg5MDAsIDU4OTA0LCA1ODkwOSwgNTg5MTQsIDU4OTE5LCA1ODkyNCwgNTg5MzMsIAotICAgIDU4OTM4LCA1ODk0MywgNTg5NDgsIDU4OTUzLCA1ODk1OCwgNTg5NjMsIDU4OTY4LCA1ODk3MywgNTg5ODAsIDU4OTg1LCAKLSAgICA1ODk5MCwgNTg5OTksIDU5MDA2LCA1OTAxMSwgNTkwMTYsIDU5MDIxLCA1OTAyOCwgNTkwMzMsIDU5MDQwLCA1OTA0NSwgCi0gICAgNTkwNTAsIDU5MDU3LCA1OTA2NCwgNTkwNjksIDU5MDc0LCA1OTA3OSwgNTkwODYsIDU5MDkzLCA1OTA5OCwgNTkxMDMsIAotICAgIDU5MTA4LCA1OTExMywgNTkxMTgsIDU5MTI1LCA1OTEzMiwgNTkxMzcsIDU5MTQyLCA1OTE0NywgNTkxNTIsIDU5MTU3LCAKLSAgICA1OTE2MiwgNTkxNjcsIDU5MTcyLCA1OTE3NywgNTkxODIsIDU5MTg3LCA1OTE5NCwgNTkxOTksIDU5MjA0LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1OTIwOSwgNTkyMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU5MjIxLCA1OTIyNiwgNTkyMzAsIDU5MjM0LCA1OTIzOCwgNTkyNDIsIDU5MjQ2LCA1OTI1MCwgNTkyNTQsIDU5MjU4LCAKLSAgICA1OTI2MiwgNTkyNjYsIDU5MjcyLCA1OTI3NiwgNTkyODAsIDU5Mjg0LCA1OTI4OCwgNTkyOTIsIDU5Mjk2LCA1OTMwMCwgCi0gICAgNTkzMDQsIDU5MzA4LCA1OTMxMiwgNTkzMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU5MzIwLCA1OTMyNCwgCi0gICAgNTkzMjgsIDU5MzMyLCA1OTMzNiwgNTkzNDAsIDU5MzQ0LCAwLCA1OTM0OCwgNTkzNTIsIDU5MzU2LCA1OTM2MCwgNTkzNjQsIAotICAgIDU5MzY4LCA1OTM3MiwgMCwgNTkzNzYsIDU5MzgwLCA1OTM4NCwgNTkzODgsIDU5MzkyLCA1OTM5NiwgNTk0MDAsIDAsIAotICAgIDU5NDA0LCA1OTQwOCwgNTk0MTIsIDU5NDE2LCA1OTQyMCwgNTk0MjQsIDU5NDI4LCAwLCA1OTQzMiwgNTk0MzYsIDU5NDQwLCAKLSAgICA1OTQ0NCwgNTk0NDgsIDU5NDUyLCA1OTQ1NiwgMCwgNTk0NjAsIDU5NDY0LCA1OTQ2OCwgNTk0NzIsIDU5NDc2LCA1OTQ4MCwgCi0gICAgNTk0ODQsIDAsIDU5NDg4LCA1OTQ5MiwgNTk0OTYsIDU5NTAwLCA1OTUwNCwgNTk1MDgsIDU5NTEyLCAwLCA1OTUxNiwgCi0gICAgNTk1MjAsIDU5NTI0LCA1OTUyOCwgNTk1MzIsIDU5NTM2LCA1OTU0MCwgMCwgNTk1NDQsIDU5NTQ5LCA1OTU1NCwgNTk1NTksIAotICAgIDU5NTY0LCA1OTU2OSwgNTk1NzQsIDU5NTc4LCA1OTU4MywgNTk1ODgsIDU5NTkzLCA1OTU5NywgNTk2MDIsIDU5NjA3LCAKLSAgICA1OTYxMiwgNTk2MTcsIDU5NjIxLCA1OTYyNiwgNTk2MzEsIDU5NjM2LCA1OTY0MSwgNTk2NDYsIDU5NjUxLCA1OTY1NSwgCi0gICAgNTk2NjAsIDU5NjY1LCA1OTY3MiwgNTk2NzcsIDU5NjgyLCA1OTY4OCwgNTk2OTUsIDU5NzAyLCA1OTcxMSwgNTk3MTgsIAotICAgIDU5NzI3LCA1OTczMSwgNTk3MzUsIDU5NzQxLCA1OTc0NywgNTk3NTMsIDU5NzYxLCA1OTc2NywgNTk3NzEsIDU5Nzc1LCAKLSAgICA1OTc3OSwgNTk3ODUsIDU5NzkxLCA1OTc5NSwgNTk3OTcsIDU5ODAxLCA1OTgwNywgNTk4MDksIDU5ODEzLCA1OTgxNiwgCi0gICAgNTk4MTksIDU5ODI1LCA1OTgzMCwgNTk4MzQsIDU5ODM4LCA1OTg0MywgNTk4NDksIDU5ODU0LCA1OTg1OSwgNTk4NjQsIAotICAgIDU5ODY5LCA1OTg3NiwgNTk4ODMsIDU5ODg4LCA1OTg5MywgNTk4OTgsIDU5OTAzLCA1OTkwOCwgNTk5MTMsIDU5OTE3LCAKLSAgICA1OTkyMSwgNTk5MjgsIDU5OTM1LCA1OTk0MSwgNTk5NDUsIDU5OTUwLCA1OTk1MywgNTk5NTcsIDU5OTY0LCA1OTk2OCwgCi0gICAgNTk5NzIsIDU5OTc2LCA1OTk4MCwgNTk5ODYsIDU5OTkyLCA1OTk5NiwgNjAwMDIsIDYwMDA2LCA2MDAxMCwgNjAwMTYsIAotICAgIDYwMDIxLCA2MDAyNiwgNjAwMjgsIDYwMDMxLCA2MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNjAwNDEsIDYwMDQ1LCA2MDA0OSwgNjAwNTQsIDYwMDU5LCA2MDA2NCwgNjAwNjgsIDYwMDcyLCA2MDA3NiwgNjAwODEsIAotICAgIDYwMDg2LCA2MDA5MCwgNjAwOTQsIDYwMDk4LCA2MDEwMiwgNjAxMDcsIDYwMTEyLCA2MDExNywgNjAxMjIsIDYwMTI2LCAKLSAgICA2MDEzMCwgNjAxMzUsIDYwMTQwLCA2MDE0NSwgNjAxNTAsIDYwMTU0LCAwLCA2MDE1OCwgNjAxNjIsIDYwMTY2LCA2MDE3MCwgCi0gICAgNjAxNzQsIDYwMTc4LCA2MDE4MiwgNjAxODcsIDYwMTkyLCA2MDE5NiwgNjAyMDEsIDYwMjA2LCA2MDIxNSwgNjAyMTksIAotICAgIDYwMjIzLCA2MDIyNywgNjAyMzQsIDYwMjM4LCA2MDI0MywgNjAyNDgsIDYwMjUyLCA2MDI1NiwgNjAyNjIsIDYwMjY3LCAKLSAgICA2MDI3MiwgNjAyNzcsIDYwMjgyLCA2MDI4NiwgNjAyOTAsIDYwMjk0LCA2MDI5OCwgNjAzMDIsIDYwMzA3LCA2MDMxMiwgCi0gICAgNjAzMTYsIDYwMzIwLCA2MDMyNSwgNjAzMzAsIDYwMzM1LCA2MDMzOSwgNjAzNDMsIDYwMzQ4LCA2MDM1MywgNjAzNTksIAotICAgIDYwMzY1LCA2MDM2OSwgNjAzNzUsIDYwMzgxLCA2MDM4NSwgNjAzOTEsIDYwMzk3LCA2MDQwMiwgNjA0MDcsIDYwNDExLCAKLSAgICA2MDQxNywgNjA0MjEsIDYwNDI1LCA2MDQzMSwgNjA0MzcsIDYwNDQyLCA2MDQ0NywgNjA0NTEsIDYwNDU1LCA2MDQ2MywgCi0gICAgNjA0NjksIDYwNDc1LCA2MDQ4MSwgNjA0ODYsIDYwNDkxLCA2MDQ5NiwgNjA1MDIsIDYwNTA2LCA2MDUxMiwgNjA1MTYsIAotICAgIDYwNTIwLCA2MDUyNiwgNjA1MzIsIDYwNTM4LCA2MDU0NCwgNjA1NTAsIDYwNTU2LCA2MDU2MiwgNjA1NjgsIDYwNTc0LCAKLSAgICA2MDU4MCwgNjA1ODYsIDYwNTkyLCA2MDU5NiwgNjA2MDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDYwNjA4LCA2MDYxMSwgNjA2MTUsIDYwNjE5LCA2MDYyMywgNjA2MjcsIDYwNjMwLCA2MDYzMywgNjA2MzcsIDYwNjQxLCAKLSAgICA2MDY0NSwgNjA2NDksIDYwNjUyLCA2MDY1NywgNjA2NjEsIDYwNjY1LCA2MDY2OSwgNjA2NzQsIDYwNjc4LCA2MDY4MiwgCi0gICAgNjA2ODYsIDYwNjkwLCA2MDY5NiwgNjA3MDIsIDYwNzA2LCA2MDcxMCwgNjA3MTQsIDYwNzE4LCA2MDcyMiwgNjA3MjYsIAotICAgIDYwNzMwLCA2MDczNCwgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTIsIDYwNzU2LCA2MDc2MCwgNjA3NjQsIDYwNzY4LCAKLSAgICA2MDc3MiwgNjA3NzYsIDYwNzgwLCA2MDc4NCwgNjA3ODgsIDYwNzkyLCA2MDc5NiwgNjA4MDAsIDYwODA0LCA2MDgwOCwgCi0gICAgNjA4MTIsIDYwODE2LCA2MDgyMiwgNjA4MjgsIDYwODMzLCA2MDgzOCwgNjA4NDIsIDYwODQ2LCA2MDg1MCwgNjA4NTQsIAotICAgIDYwODU4LCA2MDg2MiwgNjA4NjYsIDYwODcwLCA2MDg3NCwgNjA4NzgsIDYwODgyLCA2MDg4NiwgNjA4OTAsIDYwODk0LCAKLSAgICA2MDg5OCwgNjA5MDIsIDYwOTA2LCA2MDkxMCwgNjA5MTQsIDYwOTE4LCA2MDkyMiwgNjA5MjYsIDYwOTMwLCA2MDkzNCwgCi0gICAgNjA5NDAsIDYwOTQ0LCA2MDk0OCwgNjA5NTIsIDYwOTU2LCA2MDk2MCwgNjA5NjQsIDYwOTY4LCA2MDk3MiwgNjA5NzcsIAotICAgIDYwOTg0LCA2MDk4OCwgNjA5OTIsIDYwOTk2LCA2MTAwMCwgNjEwMDQsIDYxMDA4LCA2MTAxMiwgNjEwMTYsIDYxMDIwLCAKLSAgICA2MTAyNCwgNjEwMjgsIDYxMDMyLCA2MTAzOSwgNjEwNDMsIDYxMDQ5LCA2MTA1MywgNjEwNTcsIDYxMDYxLCA2MTA2NSwgCi0gICAgNjEwNjksIDYxMDcyLCA2MTA3NiwgNjEwODAsIDYxMDg0LCA2MTA4OCwgNjEwOTIsIDYxMDk2LCA2MTEwMCwgNjExMDQsIAotICAgIDYxMTA4LCA2MTExMiwgNjExMTYsIDYxMTIwLCA2MTEyNCwgNjExMjgsIDYxMTMyLCA2MTEzNiwgNjExNDAsIDYxMTQ0LCAKLSAgICA2MTE0OCwgNjExNTIsIDYxMTU2LCA2MTE2MCwgNjExNjQsIDYxMTY4LCA2MTE3MiwgNjExNzYsIDYxMTgwLCA2MTE4NCwgCi0gICAgNjExODgsIDYxMTkyLCA2MTE5NiwgNjEyMDAsIDYxMjA2LCA2MTIxMCwgNjEyMTQsIDYxMjE4LCA2MTIyMiwgNjEyMjYsIAotICAgIDYxMjMwLCA2MTIzNCwgNjEyMzgsIDYxMjQyLCA2MTI0NiwgNjEyNTAsIDYxMjU0LCA2MTI1OCwgNjEyNjIsIDYxMjY2LCAKLSAgICA2MTI3MCwgNjEyNzQsIDYxMjc4LCA2MTI4MiwgNjEyODYsIDYxMjkwLCA2MTI5NCwgNjEyOTgsIDYxMzAyLCA2MTMwNiwgCi0gICAgNjEzMTAsIDYxMzE0LCA2MTMyMiwgNjEzMjYsIDYxMzMwLCA2MTMzNCwgNjEzMzgsIDYxMzQyLCA2MTM0OCwgNjEzNTIsIAotICAgIDYxMzU2LCA2MTM2MCwgNjEzNjQsIDYxMzY4LCA2MTM3MiwgNjEzNzYsIDYxMzgwLCA2MTM4NCwgNjEzODgsIDYxMzkyLCAKLSAgICA2MTM5NiwgNjE0MDAsIDYxNDA2LCA2MTQxMCwgNjE0MTQsIDYxNDE4LCA2MTQyMiwgNjE0MjYsIDYxNDMwLCA2MTQzNCwgCi0gICAgNjE0MzgsIDYxNDQyLCA2MTQ0NiwgNjE0NTAsIDYxNDU0LCA2MTQ1OCwgNjE0NjIsIDYxNDY2LCA2MTQ3MCwgNjE0NzQsIAotICAgIDYxNDc4LCA2MTQ4MiwgNjE0ODYsIDYxNDkwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA2MTQ5NCwgNjE1MDMsIDYxNTExLCA2MTUyMiwgNjE1MzIsIAotICAgIDYxNTQwLCA2MTU0OSwgNjE1NTgsIDYxNTY4LCA2MTU4MCwgNjE1OTIsIDYxNjA0LCAwLCAwLCAwLCAwLCA2MTYxMCwgCi0gICAgNjE2MTMsIDYxNjE2LCA2MTYyMSwgNjE2MjQsIDYxNjMxLCA2MTYzNSwgNjE2MzksIDYxNjQzLCA2MTY0NywgNjE2NTEsIAotICAgIDYxNjU2LCA2MTY2MSwgNjE2NjUsIDYxNjY5LCA2MTY3NCwgNjE2NzksIDYxNjg0LCA2MTY4OSwgNjE2OTIsIDYxNjk1LCAKLSAgICA2MTcwMSwgNjE3MDcsIDYxNzEyLCA2MTcxNywgNjE3MjQsIDYxNzMxLCA2MTczNSwgNjE3MzksIDYxNzQzLCA2MTc1MSwgCi0gICAgNjE3NTcsIDYxNzY0LCA2MTc2OSwgNjE3NzQsIDYxNzc5LCA2MTc4NCwgNjE3ODksIDYxNzk0LCA2MTc5OSwgNjE4MDUsIAotICAgIDYxODEwLCA2MTgxNiwgNjE4MjEsIDYxODI2LCA2MTgzMSwgNjE4MzYsIDYxODQyLCA2MTg0NywgNjE4NTEsIDYxODU3LCAKLSAgICA2MTg2OCwgNjE4NzgsIDYxODkzLCA2MTkwMywgNjE5MDcsIDYxOTE3LCA2MTkyMywgNjE5MjksIDYxOTM1LCA2MTk0MCwgCi0gICAgNjE5NDMsIDYxOTQ4LCA2MTk1MiwgMCwgNjE5NTgsIDYxOTYyLCA2MTk2NSwgNjE5NjksIDYxOTcyLCA2MTk3NiwgNjE5NzksIAotICAgIDYxOTgzLCA2MTk4NiwgNjE5OTAsIDYxOTkzLCA2MTk5NiwgNjIwMDAsIDYyMDA0LCA2MjAwOCwgNjIwMTIsIDYyMDE2LCAKLSAgICA2MjAyMCwgNjIwMjQsIDYyMDI4LCA2MjAzMiwgNjIwMzYsIDYyMDQwLCA2MjA0NCwgNjIwNDgsIDYyMDUyLCA2MjA1NiwgCi0gICAgNjIwNjAsIDYyMDY0LCA2MjA2OCwgNjIwNzIsIDYyMDc2LCA2MjA4MCwgNjIwODQsIDYyMDg4LCA2MjA5MywgNjIwOTcsIAotICAgIDYyMTAxLCA2MjEwNSwgNjIxMDksIDYyMTEyLCA2MjExNiwgNjIxMjAsIDYyMTI0LCA2MjEyOCwgNjIxMzIsIDYyMTM2LCAKLSAgICA2MjEzOSwgNjIxNDMsIDYyMTQ2LCA2MjE1MCwgNjIxNTQsIDYyMTU4LCA2MjE2MiwgNjIxNjYsIDYyMTcwLCA2MjE3NCwgCi0gICAgNjIxNzgsIDYyMTgyLCA2MjE4NiwgNjIxOTAsIDYyMTk0LCA2MjE5NywgNjIyMDEsIDYyMjA1LCA2MjIwOSwgNjIyMTMsIAotICAgIDYyMjE3LCA2MjIyMCwgNjIyMjUsIDYyMjI5LCA2MjIzNCwgNjIyMzgsIDYyMjQyLCA2MjI0NiwgNjIyNTAsIDYyMjU0LCAKLSAgICA2MjI1OCwgNjIyNjMsIDYyMjY3LCA2MjI3MSwgNjIyNzUsIDYyMjc5LCA2MjI4MywgNjIyODcsIDYyMjkxLCAwLCAwLCAKLSAgICA2MjI5NiwgNjIzMDQsIDYyMzEyLCA2MjMxOSwgNjIzMjYsIDYyMzMwLCA2MjMzNiwgNjIzNDEsIDYyMzQ2LCA2MjM1MCwgCi0gICAgNjIzNTMsIDYyMzU3LCA2MjM2MCwgNjIzNjQsIDYyMzY3LCA2MjM3MSwgNjIzNzQsIDYyMzc4LCA2MjM4MSwgNjIzODQsIAotICAgIDYyMzg4LCA2MjM5MiwgNjIzOTYsIDYyNDAwLCA2MjQwNCwgNjI0MDgsIDYyNDEyLCA2MjQxNiwgNjI0MjAsIDYyNDI0LCAKLSAgICA2MjQyOCwgNjI0MzIsIDYyNDM2LCA2MjQ0MCwgNjI0NDQsIDYyNDQ4LCA2MjQ1MiwgNjI0NTYsIDYyNDYwLCA2MjQ2NCwgCi0gICAgNjI0NjgsIDYyNDcyLCA2MjQ3NiwgNjI0ODEsIDYyNDg1LCA2MjQ4OSwgNjI0OTMsIDYyNDk3LCA2MjUwMCwgNjI1MDQsIAotICAgIDYyNTA4LCA2MjUxMiwgNjI1MTYsIDYyNTIwLCA2MjUyNCwgNjI1MjcsIDYyNTMxLCA2MjUzNCwgNjI1MzgsIDYyNTQyLCAKLSAgICA2MjU0NiwgNjI1NTAsIDYyNTU0LCA2MjU1OCwgNjI1NjIsIDYyNTY2LCA2MjU3MCwgNjI1NzQsIDYyNTc4LCA2MjU4MiwgCi0gICAgNjI1ODUsIDYyNTg5LCA2MjU5MywgNjI1OTcsIDYyNjAxLCA2MjYwNSwgNjI2MDgsIDYyNjEzLCA2MjYxNywgNjI2MjIsIAotICAgIDYyNjI2LCA2MjYzMCwgNjI2MzQsIDYyNjM4LCA2MjY0MiwgNjI2NDYsIDYyNjUxLCA2MjY1NSwgNjI2NTksIDYyNjYzLCAKLSAgICA2MjY2NywgNjI2NzEsIDYyNjc1LCA2MjY3OSwgNjI2ODQsIDYyNjg4LCA2MjY5MiwgNjI2OTYsIDYyNzAwLCA2MjcwNCwgCi0gICAgNjI3MTEsIDYyNzE1LCA2MjcyMSwgMCwgMCwgMCwgMCwgMCwgNjI3MjYsIDYyNzMxLCA2MjczNiwgNjI3NDEsIDYyNzQ2LCAKLSAgICA2Mjc1MSwgNjI3NTYsIDYyNzYxLCA2Mjc2NSwgNjI3NzAsIDYyNzc1LCA2Mjc4MCwgNjI3ODUsIDYyNzkwLCA2Mjc5NSwgCi0gICAgNjI4MDAsIDYyODA1LCA2MjgxMCwgNjI4MTQsIDYyODE5LCA2MjgyNCwgNjI4MjgsIDYyODMyLCA2MjgzNiwgNjI4NDAsIAotICAgIDYyODQ1LCA2Mjg1MCwgNjI4NTUsIDYyODYwLCA2Mjg2NSwgNjI4NzAsIDYyODc1LCA2Mjg4MCwgNjI4ODUsIDYyODkwLCAKLSAgICA2Mjg5NCwgNjI4OTgsIDYyOTAzLCA2MjkwOCwgNjI5MTMsIDYyOTE4LCAwLCAwLCAwLCA2MjkyMywgNjI5MjcsIDYyOTMxLCAKLSAgICA2MjkzNSwgNjI5MzksIDYyOTQzLCA2Mjk0NywgNjI5NTEsIDYyOTU1LCA2Mjk1OSwgNjI5NjMsIDYyOTY3LCA2Mjk3MSwgCi0gICAgNjI5NzUsIDYyOTc5LCA2Mjk4MywgNjI5ODcsIDYyOTkxLCA2Mjk5NSwgNjI5OTksIDYzMDAzLCA2MzAwNywgNjMwMTEsIAotICAgIDYzMDE1LCA2MzAxOSwgNjMwMjMsIDYzMDI3LCA2MzAzMSwgNjMwMzUsIDYzMDM5LCA2MzA0MywgNjMwNDYsIDYzMDUwLCAKLSAgICA2MzA1MywgNjMwNTcsIDYzMDYxLCA2MzA2NCwgNjMwNjgsIDYzMDcyLCA2MzA3NSwgNjMwNzksIDYzMDgzLCA2MzA4NywgCi0gICAgNjMwOTEsIDYzMDk0LCA2MzA5OCwgNjMxMDIsIDYzMTA2LCA2MzExMCwgNjMxMTQsIDYzMTE4LCA2MzEyMSwgNjMxMjQsIAotICAgIDYzMTI4LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUyLCA2MzE1NiwgNjMxNjAsIDYzMTY0LCAKLSAgICA2MzE2OCwgNjMxNzIsIDYzMTc2LCA2MzE4MCwgNjMxODQsIDYzMTg4LCA2MzE5MiwgNjMxOTYsIDYzMjAwLCA2MzIwNCwgCi0gICAgNjMyMDgsIDYzMjEyLCA2MzIxNiwgNjMyMjAsIDYzMjI0LCA2MzIyOCwgNjMyMzIsIDYzMjM2LCA2MzI0MCwgNjMyNDQsIAotICAgIDYzMjQ4LCA2MzI1MiwgNjMyNTYsIDYzMjYwLCA2MzI2NCwgNjMyNjgsIDYzMjcyLCA2MzI3NiwgNjMyODAsIDYzMjg0LCAKLSAgICA2MzI4OCwgMCwgNjMyOTIsIDYzMjk4LCA2MzMwNCwgNjMzMDksIDYzMzE0LCA2MzMxOSwgNjMzMjUsIDYzMzMxLCA2MzMzNiwgCi0gICAgNjMzNDIsIDYzMzQ4LCA2MzM1NCwgNjMzNjAsIDYzMzY2LCA2MzM3MiwgNjMzNzgsIDYzMzg0LCA2MzM4OSwgNjMzOTQsIAotICAgIDYzMzk5LCA2MzQwNCwgNjM0MDksIDYzNDE0LCA2MzQxOSwgNjM0MjQsIDYzNDI5LCA2MzQzNCwgNjM0MzksIDYzNDQ0LCAKLSAgICA2MzQ0OSwgNjM0NTQsIDYzNDU5LCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODQsIDYzNDkwLCA2MzQ5NiwgCi0gICAgNjM1MDIsIDYzNTA4LCA2MzUxMywgNjM1MTgsIDAsIDAsIDAsIDAsIDAsIDYzNTIzLCA2MzUyOCwgNjM1MzMsIDYzNTM4LCAKLSAgICA2MzU0MywgNjM1NDgsIDYzNTUzLCA2MzU1OCwgNjM1NjMsIDYzNTY4LCA2MzU3MywgNjM1NzgsIDYzNTgzLCA2MzU4OCwgCi0gICAgNjM1OTMsIDYzNTk4LCA2MzYwMywgNjM2MDgsIDYzNjEyLCA2MzYxNywgNjM2MjIsIDYzNjI3LCA2MzYzMiwgNjM2MzcsIAotICAgIDYzNjQyLCA2MzY0NywgNjM2NTIsIDYzNjU3LCA2MzY2MiwgNjM2NjcsIDYzNjcyLCA2MzY3NywgNjM2ODIsIDYzNjg3LCAKLSAgICA2MzY5MiwgNjM2OTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYzNzAyLCA2MzcwNywgNjM3MTIsIAotICAgIDYzNzE3LCA2MzcyMSwgNjM3MjYsIDYzNzMwLCA2MzczNSwgNjM3NDAsIDYzNzQ1LCA2Mzc1MCwgNjM3NTUsIDYzNzYwLCAKLSAgICA2Mzc2NSwgNjM3NzAsIDYzNzc1LCA2Mzc4MCwgNjM3ODQsIDYzNzg4LCA2Mzc5MiwgNjM3OTYsIDYzODAwLCA2MzgwNCwgCi0gICAgNjM4MDgsIDYzODEyLCA2MzgxNiwgNjM4MjAsIDYzODI0LCA2MzgyOCwgNjM4MzIsIDYzODM2LCA2Mzg0MSwgNjM4NDYsIAotICAgIDYzODUxLCA2Mzg1NiwgNjM4NjEsIDYzODY2LCA2Mzg3MSwgNjM4NzYsIDYzODgxLCA2Mzg4NiwgNjM4OTEsIDYzODk2LCAKLSAgICA2MzkwMSwgNjM5MDYsIDYzOTExLCA2MzkxNywgMCwgNjM5MjQsIDYzOTI3LCA2MzkzMCwgNjM5MzMsIDYzOTM2LCA2MzkzOSwgCi0gICAgNjM5NDIsIDYzOTQ2LCA2Mzk0OSwgNjM5NTMsIDYzOTU3LCA2Mzk2MSwgNjM5NjUsIDYzOTY5LCA2Mzk3MywgNjM5NzcsIAotICAgIDYzOTgxLCA2Mzk4NSwgNjM5ODksIDYzOTkzLCA2Mzk5NywgNjQwMDEsIDY0MDA1LCA2NDAwOSwgNjQwMTMsIDY0MDE3LCAKLSAgICA2NDAyMSwgNjQwMjUsIDY0MDI5LCA2NDAzMywgNjQwMzcsIDY0MDQxLCA2NDA0NSwgNjQwNDksIDY0MDUzLCA2NDA1NywgCi0gICAgNjQwNjEsIDY0MDY1LCA2NDA2OSwgNjQwNzMsIDY0MDc3LCA2NDA4NiwgNjQwOTUsIDY0MTA0LCA2NDExMywgNjQxMjIsIAotICAgIDY0MTMxLCA2NDE0MCwgNjQxNDksIDY0MTUyLCA2NDE1NywgNjQxNjIsIDY0MTY3LCA2NDE3MiwgNjQxNzcsIDY0MTgyLCAKLSAgICA2NDE4OCwgNjQxOTMsIDY0MTk5LCA2NDIwMywgNjQyMDgsIDY0MjEzLCA2NDIxOCwgNjQyMjMsIDY0MjI4LCA2NDIzMiwgCi0gICAgNjQyMzYsIDY0MjQwLCA2NDI0NCwgNjQyNDgsIDY0MjUyLCA2NDI1NiwgNjQyNjAsIDY0MjY0LCA2NDI2OCwgNjQyNzIsIAotICAgIDY0Mjc2LCA2NDI4MCwgNjQyODQsIDY0Mjg5LCA2NDI5NCwgNjQyOTksIDY0MzA0LCA2NDMwOSwgNjQzMTQsIDY0MzE5LCAKLSAgICA2NDMyNCwgNjQzMjksIDY0MzM0LCA2NDMzOSwgNjQzNDQsIDY0MzQ5LCA2NDM1NCwgNjQzNjAsIDY0MzY2LCA2NDM3MSwgCi0gICAgNjQzNzYsIDY0Mzc5LCA2NDM4MiwgNjQzODUsIDY0Mzg4LCA2NDM5MSwgNjQzOTQsIDY0Mzk4LCA2NDQwMSwgNjQ0MDUsIAotICAgIDY0NDA5LCA2NDQxMywgNjQ0MTcsIDY0NDIxLCA2NDQyNSwgNjQ0MjksIDY0NDMzLCA2NDQzNywgNjQ0NDEsIDY0NDQ1LCAKLSAgICA2NDQ0OSwgNjQ0NTMsIDY0NDU3LCA2NDQ2MSwgNjQ0NjUsIDY0NDY5LCA2NDQ3MywgNjQ0NzcsIDY0NDgxLCA2NDQ4NSwgCi0gICAgNjQ0ODksIDY0NDkzLCA2NDQ5NywgNjQ1MDEsIDY0NTA1LCA2NDUwOSwgNjQ1MTMsIDY0NTE3LCA2NDUyMSwgNjQ1MjUsIAotICAgIDY0NTI5LCA2NDUzMywgNjQ1MzcsIDY0NTQxLCA2NDU0NSwgNjQ1NDksIDY0NTUzLCA2NDU1NywgNjQ1NjEsIDY0NTY1LCAKLSAgICA2NDU3MCwgNjQ1NzYsIDY0NTgxLCA2NDU4NywgNjQ1OTEsIDY0NTk2LCA2NDYwMSwgNjQ2MDYsIDY0NjExLCA2NDYxNiwgCi0gICAgNjQ2MjEsIDY0NjI3LCA2NDYzMiwgNjQ2MzgsIDY0NjQyLCA2NDY0OSwgNjQ2NTYsIDY0NjYzLCA2NDY3MCwgNjQ2NzcsIAotICAgIDY0Njg0LCA2NDY5MSwgNjQ2OTgsIDY0NzA1LCA2NDcxMiwgNjQ3MTksIDY0NzI2LCA2NDcyOSwgNjQ3MzIsIDY0NzM1LCAKLSAgICA2NDc0MCwgNjQ3NDMsIDY0NzQ2LCA2NDc0OSwgNjQ3NTIsIDY0NzU1LCA2NDc1OCwgNjQ3NjIsIDY0NzY2LCA2NDc3MCwgCi0gICAgNjQ3NzQsIDY0Nzc4LCA2NDc4MiwgNjQ3ODYsIDY0NzkwLCA2NDc5NCwgNjQ3OTgsIDY0ODAyLCA2NDgwNiwgNjQ4MTAsIAotICAgIDY0ODEzLCA2NDgxNywgNjQ4MjEsIDY0ODI1LCA2NDgyOSwgNjQ4MzMsIDY0ODM2LCA2NDg0MCwgNjQ4NDQsIDY0ODQ4LCAKLSAgICA2NDg1MiwgNjQ4NTUsIDY0ODU5LCA2NDg2MywgNjQ4NjcsIDY0ODcxLCA2NDg3NCwgNjQ4NzgsIDY0ODgyLCA2NDg4NiwgCi0gICAgNjQ4OTAsIDY0ODk0LCA2NDg5OCwgNjQ5MDIsIDY0OTA2LCA2NDkxMCwgNjQ5MTQsIDAsIDY0OTE4LCA2NDkyMSwgNjQ5MjQsIAotICAgIDY0OTI3LCA2NDkzMCwgNjQ5MzMsIDY0OTM2LCA2NDkzOSwgNjQ5NDIsIDY0OTQ1LCA2NDk0OCwgNjQ5NTEsIDY0OTU0LCAKLSAgICA2NDk1NywgNjQ5NjAsIDY0OTYzLCA2NDk2NiwgNjQ5NjksIDY0OTcyLCA2NDk3NSwgNjQ5NzgsIDY0OTgxLCA2NDk4NCwgCi0gICAgNjQ5ODcsIDY0OTkwLCA2NDk5MywgNjQ5OTYsIDY0OTk5LCA2NTAwMiwgNjUwMDUsIDY1MDA4LCA2NTAxMSwgNjUwMTQsIAotICAgIDY1MDE3LCA2NTAyMCwgNjUwMjMsIDY1MDI2LCA2NTAyOSwgNjUwMzIsIDY1MDM1LCA2NTAzOCwgNjUwNDEsIDY1MDQ0LCAKLSAgICA2NTA0NywgNjUwNTAsIDY1MDUzLCA2NTA1NiwgNjUwNTksIDY1MDYyLCA2NTA2NSwgNjUwNjgsIDY1MDcxLCA2NTA3NCwgCi0gICAgNjUwNzcsIDY1MDgwLCA2NTA4MywgNjUwODYsIDY1MDg5LCA2NTA5MiwgNjUwOTUsIDY1MDk4LCA2NTEwMSwgNjUxMDQsIAotICAgIDY1MTA3LCA2NTExMCwgNjUxMTMsIDY1MTE2LCA2NTExOSwgNjUxMjIsIDY1MTI1LCA2NTEyOCwgNjUxMzEsIDY1MTM0LCAKLSAgICA2NTEzNywgNjUxNDAsIDY1MTQzLCA2NTE0NiwgNjUxNDksIDY1MTUyLCA2NTE1NSwgNjUxNTgsIDY1MTYxLCA2NTE2NCwgCi0gICAgNjUxNjcsIDY1MTcwLCA2NTE3MywgNjUxNzYsIDY1MTc5LCA2NTE4MiwgNjUxOTEsIDY1MTk5LCA2NTIwNywgNjUyMTUsIAotICAgIDY1MjIzLCA2NTIzMSwgNjUyMzksIDY1MjQ4LCA2NTI1NiwgNjUyNjUsIDY1Mjc0LCA2NTI4MywgNjUyOTIsIDY1MzAxLCAKLSAgICA2NTMxMCwgNjUzMTksIDY1MzI4LCA2NTMzNywgNjUzNDYsIDY1MzU1LCA2NTM2NCwgNjUzNzMsIDY1MzgyLCA2NTM5MSwgCi0gICAgNjU0MDAsIDY1NDAzLCA2NTQwNiwgNjU0MDksIDY1NDExLCA2NTQxNCwgNjU0MTcsIDY1NDIwLCA2NTQyNSwgNjU0MzAsIAotICAgIDY1NDMzLCA2NTQ0MCwgNjU0NDcsIDY1NDU0LCA2NTQ2MSwgNjU0NjQsIDY1NDY5LCA2NTQ3MiwgNjU0NzYsIDY1NDc4LCAKLSAgICA2NTQ4MCwgNjU0ODMsIDY1NDg2LCA2NTQ4OSwgNjU0OTIsIDY1NDk1LCA2NTQ5OCwgNjU1MDEsIDY1NTA2LCA2NTUxMSwgCi0gICAgNjU1MTQsIDY1NTE3LCA2NTUyMCwgNjU1MjMsIDY1NTI2LCA2NTUyOSwgNjU1MzIsIDY1NTM2LCA2NTUzOSwgNjU1NDIsIAotICAgIDY1NTQ1LCA2NTU0OCwgNjU1NTEsIDY1NTU2LCA2NTU1OSwgNjU1NjIsIDY1NTY1LCA2NTU3MCwgNjU1NzUsIDY1NTgwLCAKLSAgICA2NTU4NSwgNjU1OTAsIDY1NTk1LCA2NTYwMCwgNjU2MDUsIDY1NjEwLCA2NTYxOCwgNjU2MjAsIDY1NjIzLCA2NTYyNiwgCi0gICAgNjU2MjksIDY1NjMyLCA2NTYzNywgNjU2NDUsIDY1NjQ4LCA2NTY1MSwgNjU2NTUsIDY1NjU4LCA2NTY2MSwgNjU2NjQsIAotICAgIDY1NjY5LCA2NTY3MiwgNjU2NzUsIDY1NjgwLCA2NTY4MywgNjU2ODYsIDY1NjkxLCA2NTY5NCwgNjU2OTcsIDY1NzAyLCAKLSAgICA2NTcwNywgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCA2NTczMCwgNjU3MzMsIDY1NzM2LCA2NTczOSwgCi0gICAgNjU3NDEsIDY1NzQ0LCA2NTc0NywgNjU3NTAsIDY1NzU1LCA2NTc1OCwgNjU3NjEsIDY1NzY0LCA2NTc2NywgNjU3NzAsIAotICAgIDY1Nzc1LCA2NTc3OCwgNjU3ODEsIDY1Nzg0LCA2NTc4NywgNjU3OTAsIDY1NzkzLCA2NTc5NiwgNjU3OTksIDY1ODAyLCAKLSAgICA2NTgwOCwgNjU4MTMsIDY1ODIxLCA2NTgyOSwgNjU4MzcsIDY1ODQ1LCA2NTg1MywgNjU4NjEsIDY1ODcwLCA2NTg3OCwgCi0gICAgNjU4ODcsIDY1ODk2LCA2NTkwNSwgNjU5MTQsIDY1OTIzLCA2NTkzMiwgNjU5NDEsIDY1OTUwLCA2NTk1OSwgNjU5NjgsIAotICAgIDY1OTc3LCA2NTk4NiwgNjU5OTUsIDY2MDA0LCA2NjAxMywgNjYwMjIsIDY2MDMxLCA2NjA0MCwgNjYwNDksIDY2MDU4LCAKLSAgICA2NjA2NywgNjYwNzYsIDY2MDg1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA2MDY5MywgNjA2OTcsIDYwNzAxLCA2MDcwNiwgNjA3MTEsIDYwNzE2LCA2MDcyMCwgNjA3MjQsIDYwNzI4LCAKKyAgICA2MDczMywgNjA3MzgsIDYwNzQyLCA2MDc0NiwgNjA3NTAsIDYwNzU0LCA2MDc1OSwgNjA3NjQsIDYwNzY5LCA2MDc3NCwgCisgICAgNjA3NzgsIDYwNzgyLCA2MDc4NywgNjA3OTIsIDYwNzk3LCA2MDgwMiwgNjA4MDYsIDAsIDYwODEwLCA2MDgxNCwgNjA4MTgsIAorICAgIDYwODIyLCA2MDgyNiwgNjA4MzAsIDYwODM0LCA2MDgzOSwgNjA4NDQsIDYwODQ4LCA2MDg1MywgNjA4NTgsIDYwODY3LCAKKyAgICA2MDg3MSwgNjA4NzUsIDYwODc5LCA2MDg4NiwgNjA4OTAsIDYwODk1LCA2MDkwMCwgNjA5MDQsIDYwOTA4LCA2MDkxNCwgCisgICAgNjA5MTksIDYwOTI0LCA2MDkyOSwgNjA5MzQsIDYwOTM4LCA2MDk0MiwgNjA5NDYsIDYwOTUwLCA2MDk1NCwgNjA5NTksIAorICAgIDYwOTY0LCA2MDk2OCwgNjA5NzIsIDYwOTc3LCA2MDk4MiwgNjA5ODcsIDYwOTkxLCA2MDk5NSwgNjEwMDAsIDYxMDA1LCAKKyAgICA2MTAxMSwgNjEwMTcsIDYxMDIxLCA2MTAyNywgNjEwMzMsIDYxMDM3LCA2MTA0MywgNjEwNDksIDYxMDU0LCA2MTA1OSwgCisgICAgNjEwNjMsIDYxMDY5LCA2MTA3MywgNjEwNzcsIDYxMDgzLCA2MTA4OSwgNjEwOTQsIDYxMDk5LCA2MTEwMywgNjExMDcsIAorICAgIDYxMTE1LCA2MTEyMSwgNjExMjcsIDYxMTMzLCA2MTEzOCwgNjExNDMsIDYxMTQ4LCA2MTE1NCwgNjExNTgsIDYxMTY0LCAKKyAgICA2MTE2OCwgNjExNzIsIDYxMTc4LCA2MTE4NCwgNjExOTAsIDYxMTk2LCA2MTIwMiwgNjEyMDgsIDYxMjE0LCA2MTIyMCwgCisgICAgNjEyMjYsIDYxMjMyLCA2MTIzOCwgNjEyNDQsIDYxMjQ4LCA2MTI1NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgNjEyNjAsIDYxMjYzLCA2MTI2NywgNjEyNzEsIDYxMjc1LCA2MTI3OSwgNjEyODIsIDYxMjg1LCA2MTI4OSwgCisgICAgNjEyOTMsIDYxMjk3LCA2MTMwMSwgNjEzMDQsIDYxMzA5LCA2MTMxMywgNjEzMTcsIDYxMzIxLCA2MTMyNiwgNjEzMzAsIAorICAgIDYxMzM0LCA2MTMzOCwgNjEzNDIsIDYxMzQ4LCA2MTM1NCwgNjEzNTgsIDYxMzYyLCA2MTM2NiwgNjEzNzAsIDYxMzc0LCAKKyAgICA2MTM3OCwgNjEzODIsIDYxMzg2LCA2MTM5MCwgNjEzOTQsIDYxMzk4LCA2MTQwNCwgNjE0MDgsIDYxNDEyLCA2MTQxNiwgCisgICAgNjE0MjAsIDYxNDI0LCA2MTQyOCwgNjE0MzIsIDYxNDM2LCA2MTQ0MCwgNjE0NDQsIDYxNDQ4LCA2MTQ1MiwgNjE0NTYsIAorICAgIDYxNDYwLCA2MTQ2NCwgNjE0NjgsIDYxNDc0LCA2MTQ4MCwgNjE0ODUsIDYxNDkwLCA2MTQ5NCwgNjE0OTgsIDYxNTAyLCAKKyAgICA2MTUwNiwgNjE1MTAsIDYxNTE0LCA2MTUxOCwgNjE1MjIsIDYxNTI2LCA2MTUzMCwgNjE1MzQsIDYxNTM4LCA2MTU0MiwgCisgICAgNjE1NDYsIDYxNTUwLCA2MTU1NCwgNjE1NTgsIDYxNTYyLCA2MTU2NiwgNjE1NzAsIDYxNTc0LCA2MTU3OCwgNjE1ODIsIAorICAgIDYxNTg2LCA2MTU5MiwgNjE1OTYsIDYxNjAwLCA2MTYwNCwgNjE2MDgsIDYxNjEyLCA2MTYxNiwgNjE2MjAsIDYxNjI0LCAKKyAgICA2MTYyOSwgNjE2MzYsIDYxNjQwLCA2MTY0NCwgNjE2NDgsIDYxNjUyLCA2MTY1NiwgNjE2NjAsIDYxNjY0LCA2MTY2OCwgCisgICAgNjE2NzIsIDYxNjc2LCA2MTY4MCwgNjE2ODQsIDYxNjkxLCA2MTY5NSwgNjE3MDEsIDYxNzA1LCA2MTcwOSwgNjE3MTMsIAorICAgIDYxNzE3LCA2MTcyMSwgNjE3MjQsIDYxNzI4LCA2MTczMiwgNjE3MzYsIDYxNzQwLCA2MTc0NCwgNjE3NDgsIDYxNzUyLCAKKyAgICA2MTc1NiwgNjE3NjAsIDYxNzY0LCA2MTc2OCwgNjE3NzIsIDYxNzc2LCA2MTc4MCwgNjE3ODQsIDYxNzg4LCA2MTc5MiwgCisgICAgNjE3OTYsIDYxODAwLCA2MTgwNCwgNjE4MDgsIDYxODEyLCA2MTgxNiwgNjE4MjAsIDYxODI0LCA2MTgyOCwgNjE4MzIsIAorICAgIDYxODM2LCA2MTg0MCwgNjE4NDQsIDYxODQ4LCA2MTg1MiwgNjE4NTgsIDYxODYyLCA2MTg2NiwgNjE4NzAsIDYxODc0LCAKKyAgICA2MTg3OCwgNjE4ODIsIDYxODg2LCA2MTg5MCwgNjE4OTQsIDYxODk4LCA2MTkwMiwgNjE5MDYsIDYxOTEwLCA2MTkxNCwgCisgICAgNjE5MTgsIDYxOTIyLCA2MTkyNiwgNjE5MzAsIDYxOTM0LCA2MTkzOCwgNjE5NDIsIDYxOTQ2LCA2MTk1MCwgNjE5NTQsIAorICAgIDYxOTU4LCA2MTk2MiwgNjE5NjYsIDYxOTc0LCA2MTk3OCwgNjE5ODIsIDYxOTg2LCA2MTk5MCwgNjE5OTQsIDYyMDAwLCAKKyAgICA2MjAwNCwgNjIwMDgsIDYyMDEyLCA2MjAxNiwgNjIwMjAsIDYyMDI0LCA2MjAyOCwgNjIwMzIsIDYyMDM2LCA2MjA0MCwgCisgICAgNjIwNDQsIDYyMDQ4LCA2MjA1MiwgNjIwNTgsIDYyMDYyLCA2MjA2NiwgNjIwNzAsIDYyMDc0LCA2MjA3OCwgNjIwODIsIAorICAgIDYyMDg2LCA2MjA5MCwgNjIwOTQsIDYyMDk4LCA2MjEwMiwgNjIxMDYsIDYyMTEwLCA2MjExNCwgNjIxMTgsIDYyMTIyLCAKKyAgICA2MjEyNiwgNjIxMzAsIDYyMTM0LCA2MjEzOCwgNjIxNDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDYyMTQ2LCA2MjE1NSwgNjIxNjMsIDYyMTc0LCA2MjE4NCwgCisgICAgNjIxOTIsIDYyMjAxLCA2MjIxMCwgNjIyMjAsIDYyMjMyLCA2MjI0NCwgNjIyNTYsIDAsIDAsIDAsIDAsIDYyMjYyLCAKKyAgICA2MjI2NSwgNjIyNjgsIDYyMjczLCA2MjI3NiwgNjIyODMsIDYyMjg3LCA2MjI5MSwgNjIyOTUsIDYyMjk5LCA2MjMwMywgCisgICAgNjIzMDgsIDYyMzEzLCA2MjMxNywgNjIzMjEsIDYyMzI2LCA2MjMzMSwgNjIzMzYsIDYyMzQxLCA2MjM0NCwgNjIzNDcsIAorICAgIDYyMzUzLCA2MjM1OSwgNjIzNjQsIDYyMzY5LCA2MjM3NiwgNjIzODMsIDYyMzg3LCA2MjM5MSwgNjIzOTUsIDYyNDAzLCAKKyAgICA2MjQwOSwgNjI0MTYsIDYyNDIxLCA2MjQyNiwgNjI0MzEsIDYyNDM2LCA2MjQ0MSwgNjI0NDYsIDYyNDUxLCA2MjQ1NywgCisgICAgNjI0NjIsIDYyNDY4LCA2MjQ3MywgNjI0NzgsIDYyNDgzLCA2MjQ4OCwgNjI0OTQsIDYyNDk5LCA2MjUwMywgNjI1MDksIAorICAgIDYyNTIwLCA2MjUzMCwgNjI1NDUsIDYyNTU1LCA2MjU1OSwgNjI1NjksIDYyNTc1LCA2MjU4MSwgNjI1ODcsIDYyNTkyLCAKKyAgICA2MjU5NSwgNjI2MDAsIDYyNjA0LCAwLCA2MjYxMCwgNjI2MTQsIDYyNjE3LCA2MjYyMSwgNjI2MjQsIDYyNjI4LCA2MjYzMSwgCisgICAgNjI2MzUsIDYyNjM4LCA2MjY0MiwgNjI2NDUsIDYyNjQ4LCA2MjY1MiwgNjI2NTYsIDYyNjYwLCA2MjY2NCwgNjI2NjgsIAorICAgIDYyNjcyLCA2MjY3NiwgNjI2ODAsIDYyNjg0LCA2MjY4OCwgNjI2OTIsIDYyNjk2LCA2MjcwMCwgNjI3MDQsIDYyNzA4LCAKKyAgICA2MjcxMiwgNjI3MTYsIDYyNzIwLCA2MjcyNCwgNjI3MjgsIDYyNzMyLCA2MjczNiwgNjI3NDAsIDYyNzQ1LCA2Mjc0OSwgCisgICAgNjI3NTMsIDYyNzU3LCA2Mjc2MSwgNjI3NjQsIDYyNzY4LCA2Mjc3MSwgNjI3NzUsIDYyNzc5LCA2Mjc4MywgNjI3ODcsIAorICAgIDYyNzkwLCA2Mjc5NCwgNjI3OTcsIDYyODAxLCA2MjgwNSwgNjI4MDksIDYyODEzLCA2MjgxNywgNjI4MjEsIDYyODI1LCAKKyAgICA2MjgyOSwgNjI4MzMsIDYyODM3LCA2Mjg0MSwgNjI4NDUsIDYyODQ4LCA2Mjg1MiwgNjI4NTYsIDYyODYwLCA2Mjg2NCwgCisgICAgNjI4NjgsIDYyODcxLCA2Mjg3NiwgNjI4ODAsIDYyODg1LCA2Mjg4OSwgNjI4OTMsIDYyODk3LCA2MjkwMSwgNjI5MDUsIAorICAgIDYyOTA5LCA2MjkxNCwgNjI5MTgsIDYyOTIyLCA2MjkyNiwgNjI5MzAsIDYyOTM0LCA2MjkzOCwgNjI5NDIsIDAsIDAsIAorICAgIDYyOTQ3LCA2Mjk1NSwgNjI5NjMsIDYyOTcwLCA2Mjk3NywgNjI5ODEsIDYyOTg3LCA2Mjk5MiwgNjI5OTcsIDYzMDAxLCAKKyAgICA2MzAwNCwgNjMwMDgsIDYzMDExLCA2MzAxNSwgNjMwMTgsIDYzMDIyLCA2MzAyNSwgNjMwMjksIDYzMDMyLCA2MzAzNSwgCisgICAgNjMwMzksIDYzMDQzLCA2MzA0NywgNjMwNTEsIDYzMDU1LCA2MzA1OSwgNjMwNjMsIDYzMDY3LCA2MzA3MSwgNjMwNzUsIAorICAgIDYzMDc5LCA2MzA4MywgNjMwODcsIDYzMDkxLCA2MzA5NSwgNjMwOTksIDYzMTAzLCA2MzEwNywgNjMxMTEsIDYzMTE1LCAKKyAgICA2MzExOSwgNjMxMjMsIDYzMTI3LCA2MzEzMiwgNjMxMzYsIDYzMTQwLCA2MzE0NCwgNjMxNDgsIDYzMTUxLCA2MzE1NSwgCisgICAgNjMxNTgsIDYzMTYyLCA2MzE2NiwgNjMxNzAsIDYzMTc0LCA2MzE3NywgNjMxODEsIDYzMTg0LCA2MzE4OCwgNjMxOTIsIAorICAgIDYzMTk2LCA2MzIwMCwgNjMyMDQsIDYzMjA4LCA2MzIxMiwgNjMyMTYsIDYzMjIwLCA2MzIyNCwgNjMyMjgsIDYzMjMyLCAKKyAgICA2MzIzNSwgNjMyMzksIDYzMjQzLCA2MzI0NywgNjMyNTEsIDYzMjU1LCA2MzI1OCwgNjMyNjMsIDYzMjY3LCA2MzI3MiwgCisgICAgNjMyNzYsIDYzMjgwLCA2MzI4NCwgNjMyODgsIDYzMjkyLCA2MzI5NiwgNjMzMDEsIDYzMzA1LCA2MzMwOSwgNjMzMTMsIAorICAgIDYzMzE3LCA2MzMyMSwgNjMzMjUsIDYzMzI5LCA2MzMzNCwgNjMzMzgsIDYzMzQyLCA2MzM0NiwgNjMzNTAsIDYzMzU0LCAKKyAgICA2MzM2MSwgNjMzNjUsIDYzMzcxLCAwLCAwLCAwLCAwLCAwLCA2MzM3NiwgNjMzODEsIDYzMzg2LCA2MzM5MSwgNjMzOTYsIAorICAgIDYzNDAxLCA2MzQwNiwgNjM0MTEsIDYzNDE1LCA2MzQyMCwgNjM0MjUsIDYzNDMwLCA2MzQzNSwgNjM0NDAsIDYzNDQ1LCAKKyAgICA2MzQ1MCwgNjM0NTUsIDYzNDYwLCA2MzQ2NCwgNjM0NjksIDYzNDc0LCA2MzQ3OSwgNjM0ODMsIDYzNDg3LCA2MzQ5MSwgCisgICAgNjM0OTYsIDYzNTAxLCA2MzUwNiwgNjM1MTEsIDYzNTE2LCA2MzUyMSwgNjM1MjYsIDYzNTMxLCA2MzUzNiwgNjM1NDEsIAorICAgIDYzNTQ1LCA2MzU0OSwgNjM1NTQsIDYzNTU5LCA2MzU2NCwgNjM1NjksIDAsIDAsIDAsIDYzNTc0LCA2MzU3OCwgNjM1ODIsIAorICAgIDYzNTg2LCA2MzU5MCwgNjM1OTQsIDYzNTk4LCA2MzYwMiwgNjM2MDYsIDYzNjEwLCA2MzYxNCwgNjM2MTgsIDYzNjIyLCAKKyAgICA2MzYyNiwgNjM2MzAsIDYzNjM0LCA2MzYzOCwgNjM2NDIsIDYzNjQ2LCA2MzY1MCwgNjM2NTQsIDYzNjU4LCA2MzY2MiwgCisgICAgNjM2NjYsIDYzNjcwLCA2MzY3NCwgNjM2NzgsIDYzNjgyLCA2MzY4NiwgNjM2OTAsIDYzNjk0LCA2MzY5NywgNjM3MDEsIAorICAgIDYzNzA0LCA2MzcwOCwgNjM3MTIsIDYzNzE1LCA2MzcxOSwgNjM3MjMsIDYzNzI2LCA2MzczMCwgNjM3MzQsIDYzNzM4LCAKKyAgICA2Mzc0MiwgNjM3NDUsIDYzNzQ5LCA2Mzc1MywgNjM3NTcsIDYzNzYxLCA2Mzc2NSwgNjM3NjksIDYzNzcyLCA2Mzc3NSwgCisgICAgNjM3NzksIDYzNzgzLCA2Mzc4NywgNjM3OTEsIDYzNzk1LCA2Mzc5OSwgNjM4MDMsIDYzODA3LCA2MzgxMSwgNjM4MTUsIAorICAgIDYzODE5LCA2MzgyMywgNjM4MjcsIDYzODMxLCA2MzgzNSwgNjM4MzksIDYzODQzLCA2Mzg0NywgNjM4NTEsIDYzODU1LCAKKyAgICA2Mzg1OSwgNjM4NjMsIDYzODY3LCA2Mzg3MSwgNjM4NzUsIDYzODc5LCA2Mzg4MywgNjM4ODcsIDYzODkxLCA2Mzg5NSwgCisgICAgNjM4OTksIDYzOTAzLCA2MzkwNywgNjM5MTEsIDYzOTE1LCA2MzkxOSwgNjM5MjMsIDYzOTI3LCA2MzkzMSwgNjM5MzUsIAorICAgIDYzOTM5LCAwLCA2Mzk0MywgNjM5NDksIDYzOTU1LCA2Mzk2MCwgNjM5NjUsIDYzOTcwLCA2Mzk3NiwgNjM5ODIsIDYzOTg3LCAKKyAgICA2Mzk5MywgNjM5OTksIDY0MDA1LCA2NDAxMSwgNjQwMTcsIDY0MDIzLCA2NDAyOSwgNjQwMzUsIDY0MDQwLCA2NDA0NSwgCisgICAgNjQwNTAsIDY0MDU1LCA2NDA2MCwgNjQwNjUsIDY0MDcwLCA2NDA3NSwgNjQwODAsIDY0MDg1LCA2NDA5MCwgNjQwOTUsIAorICAgIDY0MTAwLCA2NDEwNSwgNjQxMTAsIDY0MTE1LCA2NDEyMCwgNjQxMjUsIDY0MTMwLCA2NDEzNSwgNjQxNDEsIDY0MTQ3LCAKKyAgICA2NDE1MywgNjQxNTksIDY0MTY0LCA2NDE2OSwgMCwgMCwgMCwgMCwgMCwgNjQxNzQsIDY0MTc5LCA2NDE4NCwgNjQxODksIAorICAgIDY0MTk0LCA2NDE5OSwgNjQyMDQsIDY0MjA5LCA2NDIxNCwgNjQyMTksIDY0MjI0LCA2NDIyOSwgNjQyMzQsIDY0MjM5LCAKKyAgICA2NDI0NCwgNjQyNDksIDY0MjU0LCA2NDI1OSwgNjQyNjQsIDY0MjY5LCA2NDI3NCwgNjQyNzksIDY0Mjg0LCA2NDI4OSwgCisgICAgNjQyOTQsIDY0Mjk5LCA2NDMwNCwgNjQzMDksIDY0MzE0LCA2NDMxOSwgNjQzMjQsIDY0MzI5LCA2NDMzNCwgNjQzMzksIAorICAgIDY0MzQ0LCA2NDM0OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNjQzNTQsIDY0MzU5LCA2NDM2NCwgCisgICAgNjQzNjksIDY0MzczLCA2NDM3OCwgNjQzODIsIDY0Mzg3LCA2NDM5MiwgNjQzOTcsIDY0NDAyLCA2NDQwNywgNjQ0MTIsIAorICAgIDY0NDE3LCA2NDQyMiwgNjQ0MjcsIDY0NDMyLCA2NDQzNiwgNjQ0NDAsIDY0NDQ0LCA2NDQ0OCwgNjQ0NTIsIDY0NDU2LCAKKyAgICA2NDQ2MCwgNjQ0NjQsIDY0NDY4LCA2NDQ3MiwgNjQ0NzYsIDY0NDgwLCA2NDQ4NCwgNjQ0ODgsIDY0NDkzLCA2NDQ5OCwgCisgICAgNjQ1MDMsIDY0NTA4LCA2NDUxMywgNjQ1MTgsIDY0NTIzLCA2NDUyOCwgNjQ1MzMsIDY0NTM4LCA2NDU0MywgNjQ1NDgsIAorICAgIDY0NTUzLCA2NDU1OCwgNjQ1NjMsIDY0NTY5LCAwLCA2NDU3NiwgNjQ1ODAsIDY0NTg0LCA2NDU4OCwgNjQ1OTIsIDY0NTk2LCAKKyAgICA2NDYwMCwgNjQ2MDUsIDY0NjA5LCA2NDYxNCwgNjQ2MTksIDY0NjI0LCA2NDYyOSwgNjQ2MzQsIDY0NjM5LCA2NDY0NCwgCisgICAgNjQ2NDksIDY0NjU0LCA2NDY1OSwgNjQ2NjQsIDY0NjY5LCA2NDY3NCwgNjQ2NzksIDY0Njg0LCA2NDY4OSwgNjQ2OTQsIAorICAgIDY0Njk5LCA2NDcwNCwgNjQ3MDksIDY0NzE0LCA2NDcxOSwgNjQ3MjQsIDY0NzI5LCA2NDczNCwgNjQ3MzksIDY0NzQ0LCAKKyAgICA2NDc0OSwgNjQ3NTQsIDY0NzU5LCA2NDc2NCwgNjQ3NjksIDY0Nzc4LCA2NDc4NywgNjQ3OTYsIDY0ODA1LCA2NDgxNCwgCisgICAgNjQ4MjMsIDY0ODMyLCA2NDg0MSwgNjQ4NDQsIDY0ODQ5LCA2NDg1NCwgNjQ4NTksIDY0ODY0LCA2NDg2OSwgNjQ4NzQsIAorICAgIDY0ODgwLCA2NDg4NSwgNjQ4OTEsIDY0ODk1LCA2NDkwMCwgNjQ5MDUsIDY0OTEwLCA2NDkxNSwgNjQ5MjAsIDY0OTI0LCAKKyAgICA2NDkyOCwgNjQ5MzIsIDY0OTM2LCA2NDk0MCwgNjQ5NDQsIDY0OTQ4LCA2NDk1MiwgNjQ5NTYsIDY0OTYwLCA2NDk2NCwgCisgICAgNjQ5NjgsIDY0OTcyLCA2NDk3NiwgNjQ5ODEsIDY0OTg2LCA2NDk5MSwgNjQ5OTYsIDY1MDAxLCA2NTAwNiwgNjUwMTEsIAorICAgIDY1MDE2LCA2NTAyMSwgNjUwMjYsIDY1MDMxLCA2NTAzNiwgNjUwNDEsIDY1MDQ2LCA2NTA1MiwgNjUwNTgsIDY1MDYzLCAKKyAgICA2NTA2OCwgNjUwNzIsIDY1MDc2LCA2NTA4MCwgNjUwODQsIDY1MDg4LCA2NTA5MiwgNjUwOTcsIDY1MTAxLCA2NTEwNiwgCisgICAgNjUxMTEsIDY1MTE2LCA2NTEyMSwgNjUxMjYsIDY1MTMxLCA2NTEzNiwgNjUxNDEsIDY1MTQ2LCA2NTE1MSwgNjUxNTYsIAorICAgIDY1MTYxLCA2NTE2NiwgNjUxNzEsIDY1MTc2LCA2NTE4MSwgNjUxODYsIDY1MTkxLCA2NTE5NiwgNjUyMDEsIDY1MjA2LCAKKyAgICA2NTIxMSwgNjUyMTYsIDY1MjIxLCA2NTIyNiwgNjUyMzEsIDY1MjM2LCA2NTI0MSwgNjUyNDYsIDY1MjUxLCA2NTI1NiwgCisgICAgNjUyNjEsIDY1MjY2LCA2NTI3MSwgNjUyNzYsIDY1MjgxLCA2NTI4NiwgNjUyOTEsIDY1Mjk2LCA2NTMwMSwgNjUzMDYsIAorICAgIDY1MzExLCA2NTMxNywgNjUzMjIsIDY1MzI4LCA2NTMzMiwgNjUzMzcsIDY1MzQyLCA2NTM0NywgNjUzNTIsIDY1MzU3LCAKKyAgICA2NTM2MiwgNjUzNjgsIDY1MzczLCA2NTM3OSwgNjUzODMsIDY1MzkwLCA2NTM5NywgNjU0MDQsIDY1NDExLCA2NTQxOCwgCisgICAgNjU0MjUsIDY1NDMyLCA2NTQzOSwgNjU0NDYsIDY1NDUzLCA2NTQ2MCwgNjU0NjcsIDY1NDcwLCA2NTQ3MywgNjU0NzYsIAorICAgIDY1NDgxLCA2NTQ4NCwgNjU0ODcsIDY1NDkwLCA2NTQ5MywgNjU0OTYsIDY1NDk5LCA2NTUwMywgNjU1MDcsIDY1NTExLCAKKyAgICA2NTUxNSwgNjU1MTksIDY1NTIzLCA2NTUyNywgNjU1MzEsIDY1NTM1LCA2NTUzOSwgNjU1NDMsIDY1NTQ3LCA2NTU1MSwgCisgICAgNjU1NTQsIDY1NTU3LCA2NTU2MSwgNjU1NjUsIDY1NTY5LCA2NTU3MywgNjU1NzYsIDY1NTgwLCA2NTU4NCwgNjU1ODgsIAorICAgIDY1NTkyLCA2NTU5NSwgNjU1OTksIDY1NjAzLCA2NTYwNywgNjU2MTEsIDY1NjE0LCA2NTYxOCwgNjU2MjIsIDY1NjI2LCAKKyAgICA2NTYzMCwgNjU2MzQsIDY1NjM4LCA2NTY0MiwgNjU2NDYsIDY1NjUwLCA2NTY1NCwgMCwgNjU2NTgsIDY1NjYxLCA2NTY2NCwgCisgICAgNjU2NjcsIDY1NjcwLCA2NTY3MywgNjU2NzYsIDY1Njc5LCA2NTY4MiwgNjU2ODUsIDY1Njg4LCA2NTY5MSwgNjU2OTQsIAorICAgIDY1Njk3LCA2NTcwMCwgNjU3MDMsIDY1NzA2LCA2NTcwOSwgNjU3MTIsIDY1NzE1LCA2NTcxOCwgNjU3MjEsIDY1NzI0LCAKKyAgICA2NTcyNywgNjU3MzAsIDY1NzMzLCA2NTczNiwgNjU3MzksIDY1NzQyLCA2NTc0NSwgNjU3NDgsIDY1NzUxLCA2NTc1NCwgCisgICAgNjU3NTcsIDY1NzYwLCA2NTc2MywgNjU3NjYsIDY1NzY5LCA2NTc3MiwgNjU3NzUsIDY1Nzc4LCA2NTc4MSwgNjU3ODQsIAorICAgIDY1Nzg3LCA2NTc5MCwgNjU3OTMsIDY1Nzk2LCA2NTc5OSwgNjU4MDIsIDY1ODA1LCA2NTgwOCwgNjU4MTEsIDY1ODE0LCAKKyAgICA2NTgxNywgNjU4MjAsIDY1ODIzLCA2NTgyNiwgNjU4MjksIDY1ODMyLCA2NTgzNSwgNjU4MzgsIDY1ODQxLCA2NTg0NCwgCisgICAgNjU4NDcsIDY1ODUwLCA2NTg1MywgNjU4NTYsIDY1ODU5LCA2NTg2MiwgNjU4NjUsIDY1ODY4LCA2NTg3MSwgNjU4NzQsIAorICAgIDY1ODc3LCA2NTg4MCwgNjU4ODMsIDY1ODg2LCA2NTg4OSwgNjU4OTIsIDY1ODk1LCA2NTg5OCwgNjU5MDEsIDY1OTA0LCAKKyAgICA2NTkwNywgNjU5MTAsIDY1OTEzLCA2NTkxNiwgNjU5MTksIDY1OTIyLCA2NTkzMSwgNjU5MzksIDY1OTQ3LCA2NTk1NSwgCisgICAgNjU5NjMsIDY1OTcxLCA2NTk3OSwgNjU5ODgsIDY1OTk2LCA2NjAwNSwgNjYwMTQsIDY2MDIzLCA2NjAzMiwgNjYwNDEsIAorICAgIDY2MDUwLCA2NjA1OSwgNjYwNjgsIDY2MDc3LCA2NjA4NiwgNjYwOTUsIDY2MTA0LCA2NjExMywgNjYxMjIsIDY2MTMxLCAKKyAgICA2NjE0MCwgNjYxNDMsIDY2MTQ2LCA2NjE0OSwgNjYxNTEsIDY2MTU0LCA2NjE1NywgNjYxNjAsIDY2MTY1LCA2NjE3MCwgCisgICAgNjYxNzMsIDY2MTgwLCA2NjE4NywgNjYxOTQsIDY2MjAxLCA2NjIwNCwgNjYyMDksIDY2MjExLCA2NjIxNSwgNjYyMTcsIAorICAgIDY2MjE5LCA2NjIyMiwgNjYyMjUsIDY2MjI4LCA2NjIzMSwgNjYyMzQsIDY2MjM3LCA2NjI0MCwgNjYyNDUsIDY2MjUwLCAKKyAgICA2NjI1MywgNjYyNTYsIDY2MjU5LCA2NjI2MiwgNjYyNjUsIDY2MjY4LCA2NjI3MSwgNjYyNzUsIDY2Mjc4LCA2NjI4MSwgCisgICAgNjYyODQsIDY2Mjg3LCA2NjI5MCwgNjYyOTUsIDY2Mjk4LCA2NjMwMSwgNjYzMDQsIDY2MzA5LCA2NjMxNCwgNjYzMTksIAorICAgIDY2MzI0LCA2NjMyOSwgNjYzMzQsIDY2MzM5LCA2NjM0NCwgNjYzNTAsIDY2MzU4LCA2NjM2MCwgNjYzNjMsIDY2MzY2LCAKKyAgICA2NjM2OSwgNjYzNzIsIDY2Mzc4LCA2NjM4NiwgNjYzODksIDY2MzkyLCA2NjM5NywgNjY0MDAsIDY2NDAzLCA2NjQwNiwgCisgICAgNjY0MTEsIDY2NDE0LCA2NjQxNywgNjY0MjIsIDY2NDI1LCA2NjQyOCwgNjY0MzMsIDY2NDM2LCA2NjQzOSwgNjY0NDQsIAorICAgIDY2NDQ5LCA2NjQ1NCwgNjY0NTcsIDY2NDYwLCA2NjQ2MywgNjY0NjYsIDY2NDcyLCA2NjQ3NSwgNjY0NzgsIDY2NDgxLCAKKyAgICA2NjQ4MywgNjY0ODYsIDY2NDg5LCA2NjQ5MiwgNjY0OTcsIDY2NTAwLCA2NjUwMywgNjY1MDYsIDY2NTA5LCA2NjUxMiwgCisgICAgNjY1MTcsIDY2NTIwLCA2NjUyMywgNjY1MjYsIDY2NTI5LCA2NjUzMiwgNjY1MzUsIDY2NTM4LCA2NjU0MSwgNjY1NDQsIAorICAgIDY2NTUwLCA2NjU1NSwgNjY1NjMsIDY2NTcxLCA2NjU3OSwgNjY1ODcsIDY2NTk1LCA2NjYwMywgNjY2MTIsIDY2NjIwLCAKKyAgICA2NjYyOSwgNjY2MzgsIDY2NjQ3LCA2NjY1NiwgNjY2NjUsIDY2Njc0LCA2NjY4MywgNjY2OTIsIDY2NzAxLCA2NjcxMCwgCisgICAgNjY3MTksIDY2NzI4LCA2NjczNywgNjY3NDYsIDY2NzU1LCA2Njc2NCwgNjY3NzMsIDY2NzgyLCA2Njc5MSwgNjY4MDAsIAorICAgIDY2ODA5LCA2NjgxOCwgNjY4MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTc5OTQsMzA1ICsxOTExMywzMDUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA2NjA4OCwgNjYwOTcsIDY2MTA2LCA2NjExNywgNjYxMjQsIDY2MTI5LCA2NjEzNCwgNjYxNDEsIDY2MTQ4LCA2NjE1NCwgCi0gICAgNjYxNTksIDY2MTY0LCA2NjE2OSwgNjYxNzQsIDY2MTgxLCA2NjE4NiwgNjYxOTEsIDY2MTk2LCA2NjIwNywgNjYyMTIsIAotICAgIDY2MjE3LCA2NjIyNCwgNjYyMjksIDY2MjM2LCA2NjI0MSwgNjYyNDYsIDY2MjUzLCA2NjI2MCwgNjYyNjcsIDY2Mjc2LCAKLSAgICA2NjI4NSwgNjYyOTAsIDY2Mjk1LCA2NjMwMCwgNjYzMDcsIDY2MzEyLCA2NjMyMiwgNjYzMjksIDY2MzM0LCA2NjMzOSwgCi0gICAgNjYzNDQsIDY2MzQ5LCA2NjM1NCwgNjYzNTksIDY2MzY4LCA2NjM3NSwgNjYzODIsIDY2Mzg3LCA2NjM5NCwgNjYzOTksIAotICAgIDY2NDA2LCA2NjQxNSwgNjY0MjYsIDY2NDMxLCA2NjQ0MCwgNjY0NDUsIDY2NDUyLCA2NjQ2MSwgNjY0NzAsIDY2NDc1LCAKLSAgICA2NjQ4MCwgNjY0ODcsIDY2NDkzLCA2NjUwMCwgNjY1MDcsIDY2NTExLCA2NjUxNSwgNjY1MTgsIDY2NTIyLCA2NjUyNiwgCi0gICAgNjY1MzAsIDY2NTM0LCA2NjUzOCwgNjY1NDIsIDY2NTQ2LCA2NjU0OSwgNjY1NTMsIDY2NTU3LCA2NjU2MSwgNjY1NjUsIAotICAgIDY2NTY5LCA2NjU3MywgNjY1NzYsIDY2NTgwLCA2NjU4NCwgNjY1ODcsIDY2NTkxLCA2NjU5NSwgNjY1OTksIDY2NjAzLCAKLSAgICA2NjYwNywgNjY2MTEsIDY2NjE1LCA2NjYxOSwgNjY2MjMsIDY2NjI3LCA2NjYzMSwgNjY2MzUsIDY2NjM5LCA2NjY0MywgCi0gICAgNjY2NDcsIDY2NjUxLCA2NjY1NSwgNjY2NTksIDY2NjYzLCA2NjY2NywgNjY2NzEsIDY2Njc1LCA2NjY3OSwgNjY2ODMsIAotICAgIDY2Njg3LCA2NjY5MSwgNjY2OTUsIDY2Njk5LCA2NjcwMywgNjY3MDcsIDY2NzExLCA2NjcxNSwgNjY3MTksIDY2NzIzLCAKLSAgICA2NjcyNywgNjY3MzEsIDY2NzM1LCA2NjczOSwgNjY3NDMsIDY2NzQ3LCA2Njc1MSwgNjY3NTUsIDY2NzU5LCA2Njc2MywgCi0gICAgNjY3NjYsIDY2NzcwLCA2Njc3NCwgNjY3NzgsIDY2NzgyLCA2Njc4NiwgNjY3OTAsIDY2Nzk0LCA2Njc5OCwgNjY4MDIsIAotICAgIDY2ODA2LCA2NjgxMCwgNjY4MTQsIDY2ODE4LCA2NjgyMiwgNjY4MjYsIDY2ODMwLCA2NjgzNCwgNjY4MzgsIDY2ODQyLCAKLSAgICA2Njg0NiwgNjY4NTAsIDY2ODU0LCA2Njg1OCwgNjY4NjIsIDY2ODY2LCA2Njg3MCwgNjY4NzQsIDY2ODc4LCA2Njg4MiwgCi0gICAgNjY4ODYsIDY2ODkwLCA2Njg5NCwgNjY4OTgsIDY2OTAyLCA2NjkwNiwgNjY5MTAsIDY2OTE0LCA2NjkxOCwgNjY5MjIsIAotICAgIDY2OTI2LCA2NjkzMCwgNjY5MzQsIDY2OTM4LCA2Njk0MiwgNjY5NDYsIDY2OTUwLCA2Njk1NCwgNjY5NTgsIDY2OTYyLCAKLSAgICA2Njk2NiwgNjY5NzAsIDY2OTc0LCA2Njk3OCwgNjY5ODIsIDY2OTg2LCA2Njk5MCwgNjY5OTQsIDY2OTk4LCA2NzAwMiwgCi0gICAgNjcwMDYsIDY3MDEwLCA2NzAxNCwgNjcwMTgsIDY3MDIyLCA2NzAyNiwgNjcwMzAsIDY3MDM0LCA2NzAzOCwgNjcwNDIsIAotICAgIDY3MDQ2LCA2NzA1MCwgNjcwNTQsIDY3MDU4LCA2NzA2MiwgNjcwNjYsIDY3MDcwLCA2NzA3NCwgNjcwNzgsIDY3MDgyLCAKLSAgICA2NzA4NiwgNjcwOTAsIDY3MDk0LCA2NzA5OCwgNjcxMDIsIDY3MTA2LCA2NzExMCwgNjcxMTQsIDY3MTE4LCA2NzEyMiwgCi0gICAgNjcxMjYsIDY3MTMwLCA2NzEzNCwgNjcxMzgsIDY3MTQyLCA2NzE0NiwgNjcxNTAsIDY3MTU0LCA2NzE1OCwgNjcxNjIsIAotICAgIDY3MTY2LCA2NzE3MCwgNjcxNzQsIDY3MTc4LCA2NzE4MiwgNjcxODYsIDY3MTkwLCA2NzE5NCwgNjcxOTgsIDY3MjAyLCAKLSAgICA2NzIwNiwgNjcyMTAsIDY3MjE0LCA2NzIxOCwgNjcyMjIsIDY3MjI2LCA2NzIzMCwgNjcyMzQsIDY3MjM3LCA2NzI0MSwgCi0gICAgNjcyNDUsIDY3MjQ5LCA2NzI1MywgNjcyNTcsIDY3MjYxLCA2NzI2NSwgNjcyNjksIDY3MjczLCA2NzI3NywgNjcyODEsIAotICAgIDY3Mjg1LCA2NzI4OSwgNjcyOTMsIDY3Mjk3LCA2NzMwMSwgNjczMDUsIDY3MzA5LCA2NzMxMywgNjczMTcsIDY3MzIxLCAKLSAgICA2NzMyNSwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgCi0gICAgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIAotICAgIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCAKLSAgICA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgCi0gICAgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgNjc1MDksIDY3NTEzLCA2NzUxNywgNjc1MjEsIAotICAgIDY3NTI1LCA2NzUyOSwgNjc1MzMsIDY3NTM3LCA2NzU0MSwgNjc1NDUsIDY3NTQ5LCA2NzU1MywgNjc1NTcsIDY3NTYxLCAKLSAgICA2NzU2NSwgNjc1NjksIDY3NTczLCA2NzU3NywgNjc1ODEsIDY3NTg1LCA2NzU4OSwgNjc1OTMsIDY3NTk3LCA2NzYwMSwgCi0gICAgNjc2MDUsIDY3NjA5LCA2NzYxMywgNjc2MTcsIDY3NjIxLCA2NzYyNSwgNjc2MjksIDY3NjMzLCA2NzYzNywgNjc2NDEsIAotICAgIDY3NjQ1LCA2NzY0OSwgNjc2NTMsIDY3NjU3LCA2NzY2MSwgNjc2NjUsIDY3NjY5LCA2NzY3MywgNjc2NzcsIDY3NjgxLCAKLSAgICA2NzY4NSwgNjc2ODksIDY3NjkzLCA2NzY5NywgNjc3MDAsIDY3NzA0LCA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgCi0gICAgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIAotICAgIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCAKLSAgICA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgCi0gICAgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIAotICAgIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCAKLSAgICA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgCi0gICAgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTgwLCA2Nzk4NCwgNjc5ODgsIDY3OTkyLCA2Nzk5NiwgNjgwMDAsIAotICAgIDY4MDA0LCA2ODAwOCwgNjgwMTIsIDY4MDE2LCA2ODAyMCwgNjgwMjQsIDY4MDI4LCA2ODAzMiwgNjgwMzYsIDY4MDQwLCAKLSAgICA2ODA0NCwgNjgwNDgsIDY4MDUyLCA2ODA1NiwgNjgwNjAsIDY4MDY0LCA2ODA2OCwgNjgwNzIsIDY4MDc2LCA2ODA4MCwgCi0gICAgNjgwODQsIDY4MDg4LCA2ODA5MiwgNjgwOTYsIDY4MTAwLCA2ODEwNCwgNjgxMDgsIDY4MTEyLCA2ODExNiwgNjgxMjAsIAotICAgIDY4MTI0LCA2ODEyOCwgNjgxMzIsIDY4MTM2LCA2ODE0MCwgNjgxNDQsIDY4MTQ4LCA2ODE1MiwgNjgxNTYsIDY4MTYwLCAKLSAgICA2ODE2NCwgNjgxNjgsIDY4MTcyLCA2ODE3NiwgNjgxODAsIDY4MTg0LCA2ODE4OCwgNjgxOTIsIDY4MTk2LCA2ODIwMCwgCi0gICAgNjgyMDQsIDY4MjA4LCA2ODIxMiwgNjgyMTYsIDY4MjIwLCA2ODIyNCwgNjgyMjgsIDY4MjMyLCA2ODIzNiwgNjgyNDAsIAotICAgIDY4MjQ0LCA2ODI0OCwgNjgyNTIsIDY4MjU2LCA2ODI2MCwgNjgyNjQsIDY4MjY4LCA2ODI3MiwgNjgyNzYsIDY4MjgwLCAKLSAgICA2ODI4NCwgNjgyODgsIDY4MjkyLCA2ODI5NiwgNjgzMDAsIDY4MzA0LCA2ODMwOCwgNjgzMTIsIDY4MzE2LCA2ODMyMCwgCi0gICAgNjgzMjQsIDY4MzI4LCA2ODMzMiwgNjgzMzYsIDY4MzQwLCA2ODM0NCwgNjgzNDgsIDY4MzUyLCA2ODM1NiwgNjgzNjAsIAotICAgIDY4MzY0LCA2ODM2OCwgNjgzNzIsIDY4Mzc2LCA2ODM4MCwgNjgzODQsIDY4Mzg4LCA2ODM5MiwgNjgzOTYsIDY4NDAwLCAKLSAgICA2ODQwNCwgNjg0MDgsIDY4NDEyLCA2ODQxNiwgNjg0MjAsIDY4NDI0LCA2ODQyOCwgNjg0MzIsIDY4NDM2LCA2ODQ0MCwgCi0gICAgNjg0NDQsIDY4NDQ4LCA2ODQ1MiwgNjg0NTYsIDY4NDYwLCA2ODQ2NCwgNjg0NjgsIDY4NDcyLCA2ODQ3NiwgNjg0ODAsIAotICAgIDY4NDg0LCA2ODQ4OCwgNjg0OTIsIDY4NDk2LCA2ODUwMCwgNjg1MDQsIDY4NTA4LCA2ODUxMiwgNjg1MTYsIDY4NTIwLCAKLSAgICA2ODUyNCwgNjg1MjgsIDY4NTMyLCA2ODUzNiwgNjg1NDAsIDY4NTQ0LCA2ODU0OCwgNjg1NTIsIDY4NTU1LCA2ODU1OSwgCi0gICAgNjg1NjMsIDY4NTY3LCA2ODU3MSwgNjg1NzUsIDY4NTc5LCA2ODU4MywgNjg1ODcsIDY4NTkxLCA2ODU5NSwgNjg1OTksIAotICAgIDY4NjAzLCA2ODYwNywgNjg2MTEsIDY4NjE1LCA2ODYxOSwgNjg2MjMsIDY4NjI3LCA2ODYzMSwgNjg2MzUsIDY4NjM5LCAKLSAgICA2ODY0MywgNjg2NDcsIDY4NjUxLCA2ODY1NSwgNjg2NTksIDY4NjYzLCA2ODY2NywgNjg2NzEsIDY4Njc1LCA2ODY3OSwgCi0gICAgNjg2ODMsIDY4Njg3LCA2ODY5MSwgNjg2OTUsIDY4Njk5LCA2ODcwMywgNjg3MDcsIDY4NzExLCA2ODcxNSwgNjg3MTksIAotICAgIDY4NzIzLCA2ODcyNywgNjg3MzEsIDY4NzM1LCA2ODczOSwgNjg3NDMsIDY4NzQ3LCA2ODc1MSwgNjg3NTUsIDY4NzU5LCAKLSAgICA2ODc2MywgNjg3NjcsIDY4NzcxLCA2ODc3NSwgNjg3NzksIDY4NzgzLCA2ODc4NywgNjg3OTEsIDY4Nzk1LCA2ODc5OSwgCi0gICAgNjg4MDMsIDY4ODA3LCA2ODgxMSwgNjg4MTUsIDY4ODE5LCA2ODgyMywgNjg4MjcsIDY4ODMxLCA2ODgzNSwgNjg4MzksIAotICAgIDY4ODQzLCA2ODg0NywgNjg4NTEsIDY4ODU1LCA2ODg1OSwgNjg4NjMsIDY4ODY3LCA2ODg3MSwgNjg4NzUsIDY4ODc5LCAKLSAgICA2ODg4MywgNjg4ODcsIDY4ODkxLCA2ODg5NSwgNjg4OTksIDY4OTAzLCA2ODkwNywgNjg5MTEsIDY4OTE1LCA2ODkxOSwgCi0gICAgNjg5MjMsIDY4OTI3LCA2ODkzMSwgNjg5MzUsIDY4OTM5LCA2ODk0MywgNjg5NDcsIDY4OTUxLCA2ODk1NSwgNjg5NTksIAotICAgIDY4OTYzLCA2ODk2NywgNjg5NzEsIDY4OTc1LCA2ODk3OSwgNjg5ODMsIDY4OTg3LCA2ODk5MSwgNjg5OTUsIDY4OTk5LCAKLSAgICA2OTAwMywgNjkwMDcsIDY5MDEwLCA2OTAxNCwgNjkwMTgsIDY5MDIyLCA2OTAyNiwgNjkwMzAsIDY5MDM0LCA2OTAzOCwgCi0gICAgNjkwNDIsIDY5MDQ2LCA2OTA1MCwgNjkwNTQsIDY5MDU4LCA2OTA2MiwgNjkwNjYsIDY5MDcwLCA2OTA3NCwgNjkwNzgsIAotICAgIDY5MDgyLCA2OTA4NiwgNjkwOTAsIDY5MDk0LCA2OTA5OCwgNjkxMDIsIDY5MTA2LCA2OTExMCwgNjkxMTQsIDY5MTE4LCAKLSAgICA2OTEyMiwgNjkxMjYsIDY5MTMwLCA2OTEzNCwgNjkxMzgsIDY5MTQyLCA2OTE0NiwgNjkxNTAsIDY5MTU0LCA2OTE1OCwgCi0gICAgNjkxNjIsIDY5MTY2LCA2OTE3MCwgNjkxNzQsIDY5MTc4LCA2OTE4MiwgNjkxODYsIDY5MTkwLCA2OTE5NCwgNjkxOTgsIAotICAgIDY5MjAyLCA2OTIwNiwgNjkyMTAsIDY5MjE0LCA2OTIxOCwgNjkyMjIsIDY5MjI2LCA2OTIzMCwgNjkyMzQsIDY5MjM4LCAKLSAgICA2OTI0MiwgNjkyNDYsIDY5MjUwLCA2OTI1NCwgNjkyNTgsIDY5MjYyLCA2OTI2NiwgNjkyNzAsIDY5Mjc0LCA2OTI3OCwgCi0gICAgNjkyODIsIDY5Mjg2LCA2OTI5MCwgNjkyOTQsIDY5Mjk4LCA2OTMwMiwgNjkzMDYsIDY5MzEwLCA2OTMxNCwgNjkzMTgsIAotICAgIDY5MzIyLCA2OTMyNiwgNjkzMzAsIDY5MzM0LCA2OTMzOCwgNjkzNDIsIDY5MzQ2LCA2OTM1MCwgNjkzNTQsIDY5MzU4LCAKLSAgICA2OTM2MiwgNjkzNjYsIDY5MzcwLCA2OTM3NCwgNjkzNzgsIDY5MzgyLCA2OTM4NiwgNjkzOTAsIDY5Mzk0LCA2OTM5OCwgCi0gICAgNjk0MDIsIDY5NDA2LCA2OTQxMCwgNjk0MTQsIDY5NDE4LCA2OTQyMiwgNjk0MjYsIDY5NDMwLCA2OTQzNCwgNjk0MzgsIAotICAgIDY5NDQyLCA2OTQ0NiwgNjk0NTAsIDY5NDU0LCA2OTQ1OCwgNjk0NjIsIDY5NDY2LCA2OTQ3MCwgNjk0NzQsIDY5NDc4LCAKLSAgICA2OTQ4MiwgNjk0ODYsIDY5NDkwLCA2OTQ5NCwgNjk0OTgsIDY5NTAyLCA2OTUwNiwgNjk1MTAsIDY5NTE0LCA2OTUxOCwgCi0gICAgNjk1MjIsIDY5NTI2LCA2OTUzMCwgNjk1MzQsIDY5NTM4LCA2OTU0MiwgNjk1NDYsIDY5NTUwLCA2OTU1NCwgNjk1NTgsIAotICAgIDY5NTYyLCA2OTU2NiwgNjk1NzAsIDY5NTc0LCA2OTU3OCwgNjk1ODIsIDY5NTg2LCA2OTU5MCwgNjk1OTQsIDY5NTk4LCAKLSAgICA2OTYwMiwgNjk2MDYsIDY5NjEwLCA2OTYxMywgNjk2MTcsIDY5NjIxLCA2OTYyNSwgNjk2MjksIDY5NjMzLCA2OTYzNywgCi0gICAgNjk2NDEsIDY5NjQ1LCA2OTY0OSwgNjk2NTMsIDY5NjU3LCA2OTY2MSwgNjk2NjUsIDY5NjY5LCA2OTY3MywgNjk2NzcsIAotICAgIDY5NjgxLCA2OTY4NSwgNjk2ODksIDY5NjkzLCA2OTY5NywgNjk3MDEsIDY5NzA1LCA2OTcwOSwgNjk3MTMsIDY5NzE3LCAKLSAgICA2OTcyMSwgNjk3MjUsIDY5NzI5LCA2OTczMywgNjk3MzcsIDY5NzQxLCA2OTc0NSwgNjk3NDksIDY5NzUzLCA2OTc1NywgCi0gICAgNjk3NjEsIDY5NzY1LCA2OTc2OSwgNjk3NzMsIDY5Nzc3LCA2OTc4MSwgNjk3ODUsIDY5Nzg5LCA2OTc5MywgNjk3OTcsIAotICAgIDY5ODAxLCA2OTgwNSwgNjk4MDksIDY5ODEzLCA2OTgxNywgNjk4MjEsIDY5ODI1LCA2OTgyOSwgNjk4MzMsIDY5ODM3LCAKLSAgICA2OTg0MSwgNjk4NDUsIDY5ODQ5LCA2OTg1MywgNjk4NTcsIDY5ODYxLCA2OTg2NSwgNjk4NjksIDY5ODczLCA2OTg3NywgCi0gICAgNjk4ODEsIDY5ODg1LCA2OTg4OSwgNjk4OTMsIDY5ODk3LCA2OTkwMSwgNjk5MDUsIDY5OTA5LCA2OTkxMywgNjk5MTcsIAotICAgIDY5OTIxLCA2OTkyNSwgNjk5MjksIDY5OTMzLCA2OTkzNywgNjk5NDEsIDY5OTQ1LCA2OTk0OSwgNjk5NTMsIDY5OTU3LCAKLSAgICA2OTk2MSwgNjk5NjUsIDY5OTY5LCA2OTk3MywgNjk5NzcsIDY5OTgxLCA2OTk4NSwgNjk5ODksIDY5OTkzLCA2OTk5NywgCi0gICAgNzAwMDEsIDcwMDA1LCA3MDAwOSwgNzAwMTMsIDcwMDE3LCA3MDAyMSwgNzAwMjUsIDcwMDI5LCA3MDAzMywgNzAwMzcsIAotICAgIDcwMDQxLCA3MDA0NSwgNzAwNDksIDcwMDUzLCA3MDA1NywgNzAwNjEsIDcwMDY1LCA3MDA2OSwgNzAwNzMsIDcwMDc3LCAKLSAgICA3MDA4MSwgNzAwODUsIDcwMDg5LCA3MDA5MywgNzAwOTcsIDcwMTAxLCA3MDEwNSwgNzAxMDksIDcwMTEzLCA3MDExNywgCi0gICAgNzAxMjEsIDcwMTI1LCA3MDEyOSwgNzAxMzMsIDcwMTM3LCA3MDE0MSwgNzAxNDUsIDcwMTQ5LCA3MDE1MywgNzAxNTcsIAotICAgIDcwMTYxLCA3MDE2NSwgNzAxNjksIDcwMTczLCA3MDE3NywgNzAxODEsIDcwMTg1LCA3MDE4OSwgNzAxOTMsIDcwMTk3LCAKLSAgICA3MDIwMSwgNzAyMDUsIDcwMjA5LCA3MDIxMywgNzAyMTcsIDcwMjIxLCA3MDIyNSwgNzAyMjksIDcwMjMzLCA3MDIzNywgCi0gICAgNzAyNDEsIDcwMjQ1LCA3MDI0OSwgNzAyNTMsIDcwMjU3LCA3MDI2MSwgNzAyNjUsIDcwMjY5LCA3MDI3MywgNzAyNzcsIAotICAgIDcwMjgxLCA3MDI4NSwgNzAyODksIDcwMjkzLCA3MDI5NywgNzAzMDEsIDcwMzA1LCA3MDMwOSwgNzAzMTMsIDcwMzE3LCAKLSAgICA3MDMyMSwgNzAzMjUsIDcwMzI5LCA3MDMzMywgNzAzMzcsIDcwMzQxLCA3MDM0NSwgNzAzNDksIDcwMzUzLCA3MDM1NywgCi0gICAgNzAzNjEsIDcwMzY1LCA3MDM2OSwgNzAzNzMsIDcwMzc3LCA3MDM4MSwgNzAzODUsIDcwMzg5LCA3MDM5MywgNzAzOTcsIAotICAgIDcwNDAxLCA3MDQwNSwgNzA0MDksIDcwNDEzLCA3MDQxNywgNzA0MjEsIDcwNDI1LCA3MDQyOSwgNzA0MzMsIDcwNDM3LCAKLSAgICA3MDQ0MSwgNzA0NDUsIDcwNDQ5LCA3MDQ1MywgNzA0NTcsIDcwNDYxLCA3MDQ2NSwgNzA0NjksIDcwNDczLCA3MDQ3NywgCi0gICAgNzA0ODEsIDcwNDg1LCA3MDQ4OSwgNzA0OTMsIDcwNDk3LCA3MDUwMSwgNzA1MDUsIDcwNTA5LCA3MDUxMywgNzA1MTcsIAotICAgIDcwNTIxLCA3MDUyNSwgNzA1MjksIDcwNTMzLCA3MDUzNywgNzA1NDEsIDcwNTQ1LCA3MDU0OSwgNzA1NTMsIDcwNTU3LCAKLSAgICA3MDU2MSwgNzA1NjUsIDcwNTY5LCA3MDU3MywgNzA1NzcsIDcwNTgxLCA3MDU4NSwgNzA1ODksIDcwNTkzLCA3MDU5NywgCi0gICAgNzA2MDEsIDcwNjA1LCA3MDYwOSwgNzA2MTMsIDcwNjE3LCA3MDYyMSwgNzA2MjUsIDcwNjI5LCA3MDYzMywgNzA2MzcsIAotICAgIDcwNjQxLCA3MDY0NSwgNzA2NDksIDcwNjUzLCA3MDY1NywgNzA2NjEsIDcwNjY1LCA3MDY2OSwgNzA2NzMsIDcwNjc3LCAKLSAgICA3MDY4MSwgNzA2ODUsIDcwNjg5LCA3MDY5MywgNzA2OTcsIDcwNzAxLCA3MDcwNSwgNzA3MDksIDcwNzEzLCA3MDcxNywgCi0gICAgNzA3MjEsIDcwNzI1LCA3MDcyOSwgNzA3MzMsIDcwNzM3LCA3MDc0MSwgNzA3NDUsIDcwNzQ5LCA3MDc1MywgNzA3NTcsIAotICAgIDcwNzYxLCA3MDc2NSwgNzA3NjksIDcwNzczLCA3MDc3NywgNzA3ODEsIDcwNzg1LCA3MDc4OSwgNzA3OTMsIDcwNzk3LCAKLSAgICA3MDgwMSwgNzA4MDUsIDcwODA5LCA3MDgxMywgNzA4MTcsIDcwODIxLCA3MDgyNSwgNzA4MjksIDcwODMzLCA3MDgzNywgCi0gICAgNzA4NDEsIDcwODQ1LCA3MDg0OSwgNzA4NTMsIDcwODU3LCA3MDg2MSwgNzA4NjUsIDcwODY5LCA3MDg3MywgNzA4NzcsIAotICAgIDcwODgxLCA3MDg4NSwgNzA4ODksIDcwODkzLCA3MDg5NywgNzA5MDEsIDcwOTA1LCA3MDkwOSwgNzA5MTMsIDcwOTE3LCAKLSAgICA3MDkyMSwgNzA5MjUsIDcwOTI5LCA3MDkzMywgNzA5MzcsIDcwOTQxLCA3MDk0NSwgNzA5NDksIDcwOTUzLCA3MDk1NywgCi0gICAgNzA5NjEsIDcwOTY1LCA3MDk2OSwgNzA5NzMsIDcwOTc3LCA3MDk4MSwgNzA5ODUsIDcwOTg5LCA3MDk5MywgNzA5OTcsIAotICAgIDcxMDAxLCA3MTAwNSwgNzEwMDksIDcxMDEzLCA3MTAxNywgNzEwMjEsIDcxMDI1LCA3MTAyOSwgNzEwMzMsIDcxMDM3LCAKLSAgICA3MTA0MSwgNzEwNDUsIDcxMDQ5LCA3MTA1MywgNzEwNTcsIDcxMDYxLCA3MTA2NSwgNzEwNjksIDcxMDczLCA3MTA3NywgCi0gICAgNzEwODEsIDcxMDg1LCA3MTA4OSwgNzEwOTMsIDcxMDk3LCA3MTEwMSwgNzExMDUsIDcxMTA5LCA3MTExMywgNzExMTcsIAotICAgIDcxMTIxLCA3MTEyNSwgNzExMjksIDcxMTMzLCA3MTEzNywgNzExNDEsIDcxMTQ1LCA3MTE0OSwgNzExNTMsIDAsIDAsIDAsIAotICAgIDcxMTU3LCA3MTE2MSwgNzExNjUsIDcxMTY5LCA3MTE3MywgNzExNzcsIDcxMTgxLCA3MTE4NSwgNzExODksIDcxMTkzLCAKLSAgICA3MTE5NywgNzEyMDEsIDcxMjA1LCA3MTIwOSwgNzEyMTMsIDcxMjE3LCA3MTIyMSwgNzEyMjUsIDcxMjI5LCA3MTIzMywgCi0gICAgNzEyMzcsIDcxMjQxLCA3MTI0NSwgNzEyNDksIDcxMjUzLCA3MTI1NywgNzEyNjEsIDcxMjY1LCA3MTI2OSwgNzEyNzMsIAotICAgIDcxMjc3LCA3MTI4MSwgNzEyODUsIDcxMjg5LCA3MTI5MywgNzEyOTcsIDcxMzAxLCA3MTMwNSwgNzEzMDksIDcxMzEzLCAKLSAgICA3MTMxNywgNzEzMjEsIDcxMzI1LCA3MTMyOSwgNzEzMzMsIDcxMzM3LCA3MTM0MSwgNzEzNDUsIDcxMzQ5LCA3MTM1MywgCi0gICAgNzEzNTcsIDcxMzYxLCA3MTM2NSwgNzEzNjksIDcxMzczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MTM3NywgCi0gICAgNzEzODIsIDcxMzg2LCA3MTM5MSwgNzEzOTYsIDcxNDAxLCA3MTQwNiwgNzE0MTEsIDcxNDE1LCA3MTQyMCwgNzE0MjUsIAotICAgIDcxNDMwLCA3MTQzNSwgNzE0NDAsIDcxNDQ1LCA3MTQ1MCwgNzE0NTQsIDcxNDU5LCA3MTQ2NCwgNzE0NjksIDcxNDc0LCAKLSAgICA3MTQ3OSwgNzE0ODQsIDcxNDg4LCA3MTQ5MywgNzE0OTgsIDcxNTAzLCA3MTUwOCwgNzE1MTMsIDcxNTE3LCA3MTUyMiwgCi0gICAgNzE1MjYsIDcxNTMxLCA3MTUzNSwgNzE1NDAsIDcxNTQ0LCA3MTU0OCwgNzE1NTIsIDcxNTU3LCA3MTU2MiwgNzE1NjcsIAotICAgIDcxNTc1LCA3MTU4MywgNzE1OTEsIDcxNTk5LCA3MTYwNywgNzE2MTUsIDcxNjIxLCA3MTYyOSwgNzE2MzMsIDcxNjM3LCAKLSAgICA3MTY0MSwgNzE2NDUsIDcxNjQ5LCA3MTY1MywgNzE2NTcsIDcxNjYxLCA3MTY2NSwgNzE2NjksIDcxNjczLCA3MTY3NywgCi0gICAgNzE2ODEsIDcxNjg1LCA3MTY4OSwgNzE2OTMsIDcxNjk3LCA3MTcwMSwgNzE3MDUsIDcxNzA5LCA3MTcxMywgNzE3MTcsIAotICAgIDcxNzIxLCA3MTcyNSwgNzE3MjksIDcxNzMzLCA3MTczNywgNzE3NDEsIDcxNzQ1LCA3MTc0OSwgNzE3NTMsIDcxNzU3LCAKLSAgICA3MTc2MSwgNzE3NjUsIDcxNzY5LCA3MTc3MywgNzE3NzYsIDcxNzgwLCA3MTc4NCwgNzE3ODgsIDcxNzkyLCA3MTc5NiwgCi0gICAgNzE4MDAsIDcxODA0LCA3MTgwOCwgNzE4MTIsIDcxODE2LCA3MTgyMCwgNzE4MjQsIDcxODI4LCA3MTgzMiwgNzE4MzYsIAotICAgIDcxODQwLCA3MTg0NCwgNzE4NDgsIDcxODUyLCA3MTg1NiwgNzE4NjAsIDcxODY0LCA3MTg2OCwgNzE4NzIsIDcxODc2LCAKLSAgICA3MTg4MCwgNzE4ODQsIDcxODg4LCA3MTg5MiwgNzE4OTYsIDcxOTAwLCA3MTkwNCwgNzE5MDgsIDcxOTEyLCA3MTkxNiwgCi0gICAgNzE5MjAsIDcxOTIzLCA3MTkyNywgNzE5MzEsIDcxOTM0LCA3MTkzOCwgNzE5NDIsIDcxOTQ2LCA3MTk0OSwgNzE5NTMsIAotICAgIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCAKLSAgICA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgCi0gICAgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDgsIDcyMDUxLCA3MjA1NSwgNzIwNTksIDcyMDYzLCA3MjA2NiwgNzIwNzAsIAotICAgIDcyMDc0LCA3MjA3OCwgNzIwODIsIDcyMDg2LCA3MjA5MCwgNzIwOTQsIDcyMDk4LCA3MjEwMiwgNzIxMDYsIDcyMTEwLCAKLSAgICA3MjExNCwgNzIxMTgsIDcyMTIyLCA3MjEyNiwgNzIxMzAsIDcyMTM0LCA3MjEzOCwgNzIxNDIsIDcyMTQ2LCA3MjE1MCwgCi0gICAgNzIxNTQsIDcyMTU4LCA3MjE2MiwgNzIxNjYsIDcyMTcwLCA3MjE3NCwgNzIxNzgsIDcyMTgyLCA3MjE4NiwgNzIxOTAsIAotICAgIDcyMTk0LCA3MjE5OCwgNzIyMDIsIDcyMjA2LCA3MjIxMCwgNzIyMTQsIDcyMjE4LCA3MjIyMSwgNzIyMjUsIDcyMjI5LCAKLSAgICA3MjIzMywgNzIyMzcsIDcyMjQxLCA3MjI0NSwgNzIyNDksIDcyMjUzLCA3MjI1NywgNzIyNjEsIDcyMjY1LCA3MjI2OSwgCi0gICAgNzIyNzMsIDcyMjc3LCA3MjI4MSwgNzIyODUsIDcyMjg5LCA3MjI5MywgNzIyOTcsIDcyMzAxLCA3MjMwNSwgNzIzMDksIAotICAgIDcyMzEzLCA3MjMxNywgNzIzMjEsIDcyMzI1LCA3MjMyOSwgNzIzMzMsIDcyMzM3LCA3MjM0MSwgNzIzNDUsIDcyMzQ5LCAKLSAgICA3MjM1MywgNzIzNTcsIDcyMzYxLCA3MjM2NSwgNzIzNjgsIDcyMzcyLCA3MjM3NiwgNzIzODAsIDcyMzg0LCA3MjM4OCwgCi0gICAgNzIzOTIsIDcyMzk2LCA3MjQwMCwgNzI0MDQsIDcyNDA4LCA3MjQxMiwgNzI0MTYsIDcyNDIwLCA3MjQyNCwgNzI0MjgsIAotICAgIDcyNDMyLCA3MjQzNSwgNzI0MzksIDcyNDQzLCA3MjQ0NywgNzI0NTEsIDcyNDU1LCA3MjQ1OSwgNzI0NjMsIDcyNDY3LCAKLSAgICA3MjQ3MSwgNzI0NzUsIDcyNDc5LCA3MjQ4MywgNzI0ODcsIDcyNDkxLCA3MjQ5NSwgNzI0OTksIDcyNTAzLCA3MjUwNywgCi0gICAgNzI1MTEsIDcyNTE1LCA3MjUxOSwgNzI1MjIsIDcyNTI2LCA3MjUzMCwgNzI1MzQsIDcyNTM4LCA3MjU0MiwgNzI1NDYsIAotICAgIDcyNTUwLCA3MjU1NCwgNzI1NTgsIDcyNTYyLCA3MjU2NiwgNzI1NzAsIDcyNTc0LCA3MjU3OCwgNzI1ODIsIDcyNTg2LCAKLSAgICA3MjU5MCwgNzI1OTQsIDcyNTk4LCA3MjYwMiwgNzI2MDYsIDcyNjEwLCA3MjYxNCwgNzI2MTgsIDcyNjIyLCA3MjYyNiwgCi0gICAgNzI2MzAsIDcyNjM0LCA3MjYzOCwgNzI2NDIsIDcyNjQ2LCA3MjY1MCwgNzI2NTQsIDcyNjU4LCA3MjY2MiwgNzI2NjYsIAotICAgIDcyNjcwLCA3MjY3NCwgNzI2NzgsIDcyNjgyLCA3MjY4NiwgNzI2OTAsIDcyNjk0LCA3MjY5NywgNzI3MDIsIDcyNzA2LCAKLSAgICA3MjcxMiwgNzI3MTcsIDcyNzIzLCA3MjcyNywgNzI3MzEsIDcyNzM1LCA3MjczOSwgNzI3NDMsIDcyNzQ3LCA3Mjc1MSwgCi0gICAgNzI3NTUsIDcyNzU5LCA3Mjc2MywgNzI3NjcsIDcyNzcxLCA3Mjc3NSwgNzI3NzksIDcyNzgyLCA3Mjc4NSwgNzI3ODgsIAotICAgIDcyNzkxLCA3Mjc5NCwgNzI3OTcsIDcyODAxLCA3MjgwNCwgNzI4MDgsIDcyODEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjgxOSwgNzI4MjQsIDcyODI5LCA3MjgzNCwgNzI4MzksIAotICAgIDcyODQ2LCA3Mjg1MywgNzI4NTgsIDcyODYzLCA3Mjg2OCwgNzI4NzMsIDcyODgwLCA3Mjg4NywgNzI4OTQsIDcyOTAxLCAKLSAgICA3MjkwOCwgNzI5MTUsIDcyOTI1LCA3MjkzNSwgNzI5NDIsIDcyOTQ5LCA3Mjk1NiwgNzI5NjMsIDcyOTY5LCA3Mjk3NSwgCi0gICAgNzI5ODQsIDcyOTkzLCA3MzAwMCwgNzMwMDcsIDczMDE4LCA3MzAyOSwgNzMwMzQsIDczMDM5LCA3MzA0NiwgNzMwNTMsIAotICAgIDczMDYwLCA3MzA2NywgNzMwNzQsIDczMDgxLCA3MzA4OCwgNzMwOTUsIDczMTAxLCA3MzEwNywgNzMxMTMsIDczMTE5LCAKLSAgICA3MzEyNiwgNzMxMzMsIDczMTM4LCA3MzE0MiwgNzMxNDksIDczMTU2LCA3MzE2MywgNzMxNjcsIDczMTc0LCA3MzE3OCwgCi0gICAgNzMxODMsIDczMTg3LCA3MzE5MywgNzMxOTgsIDczMjA0LCA3MzIwOSwgNzMyMTMsIDczMjE3LCA3MzIyMCwgNzMyMjMsIAotICAgIDczMjI4LCA3MzIzMywgNzMyMzgsIDczMjQzLCA3MzI0OCwgNzMyNTMsIDczMjU4LCA3MzI2MywgNzMyNjgsIDczMjczLCAKLSAgICA3MzI4MSwgNzMyODksIDczMjk0LCA3MzI5OSwgNzMzMDQsIDczMzA5LCA3MzMxNCwgNzMzMTksIDczMzI0LCA3MzMyOSwgCi0gICAgNzMzMzQsIDczMzM5LCA3MzM0NCwgNzMzNDksIDczMzU0LCA3MzM1OSwgNzMzNjUsIDczMzcxLCA3MzM3NywgNzMzODMsIAotICAgIDczMzg4LCA3MzM5NCwgNzMzOTcsIDczNDAwLCA3MzQwMywgNzM0MDcsIDczNDExLCA3MzQxNSwgNzM0MTksIDczNDIyLCAKLSAgICA3MzQyNiwgNzM0MjksIDczNDMzLCA3MzQzNiwgNzM0NDAsIDczNDQ0LCA3MzQ0OCwgNzM0NTIsIDczNDU2LCA3MzQ2MCwgCi0gICAgNzM0NjQsIDczNDY4LCA3MzQ3MiwgNzM0NzYsIDczNDgwLCA3MzQ4NCwgNzM0ODgsIDczNDkyLCA3MzQ5NiwgNzM1MDAsIAotICAgIDczNTA0LCA3MzUwOCwgNzM1MTIsIDczNTE2LCA3MzUyMCwgNzM1MjQsIDczNTI3LCA3MzUzMSwgNzM1MzUsIDczNTM5LCAKLSAgICA3MzU0MywgNzM1NDcsIDczNTUxLCA3MzU1NSwgNzM1NTksIDczNTYzLCA3MzU2NywgNzM1NzEsIDczNTc1LCA3MzU3OSwgCi0gICAgNzM1ODMsIDczNTg3LCA3MzU5MSwgNzM1OTUsIDczNTk5LCA3MzYwMywgNzM2MDcsIDczNjExLCA3MzYxNSwgNzM2MTksIAotICAgIDczNjIzLCA3MzYyNywgNzM2MzEsIDczNjM1LCA3MzYzOSwgNzM2NDMsIDczNjQ3LCA3MzY1MSwgNzM2NTUsIDczNjU4LCAKLSAgICA3MzY2MiwgNzM2NjYsIDczNjcwLCA3MzY3NCwgNzM2NzgsIDczNjgyLCA3MzY4NiwgNzM2OTAsIDczNjk0LCA3MzY5OCwgCi0gICAgNzM3MDIsIDczNzA2LCA3MzcxMSwgNzM3MTYsIDczNzE5LCA3MzcyNCwgNzM3MjcsIDczNzMwLCA3MzczMywgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNzM3MzcsIDczNzQ2LCA3Mzc1NSwgNzM3NjQsIDczNzczLCA3Mzc4MiwgNzM3OTEsIDczODAwLCAKLSAgICA3MzgwOSwgNzM4MTcsIDczODI0LCA3MzgzMiwgNzM4MzksIDczODQ3LCA3Mzg1NywgNzM4NjYsIDczODc2LCA3Mzg4NSwgCi0gICAgNzM4OTUsIDczOTAzLCA3MzkxMCwgNzM5MTgsIDczOTI1LCA3MzkzMywgNzM5MzgsIDczOTQzLCA3Mzk0OSwgNzM5NTgsIAotICAgIDczOTY0LCA3Mzk3MCwgNzM5NzcsIDczOTg2LCA3Mzk5NCwgNzQwMDIsIDc0MDEwLCA3NDAxNywgNzQwMjQsIDc0MDMxLCAKLSAgICA3NDAzOCwgNzQwNDMsIDc0MDQ4LCA3NDA1MywgNzQwNTgsIDc0MDYzLCA3NDA2OCwgNzQwNzMsIDc0MDc4LCA3NDA4NiwgCi0gICAgNzQwOTQsIDc0MTAwLCA3NDEwNSwgNzQxMTAsIDc0MTE1LCA3NDEyMCwgNzQxMjUsIDc0MTMwLCA3NDEzNSwgNzQxNDAsIAotICAgIDc0MTQ1LCA3NDE1NCwgNzQxNjMsIDc0MTY4LCA3NDE3MywgNzQxODMsIDc0MTkzLCA3NDIwMCwgNzQyMDcsIDc0MjE2LCAKLSAgICA3NDIyNSwgNzQyMzcsIDc0MjQ5LCA3NDI1NSwgNzQyNjEsIDc0MjY5LCA3NDI3NywgNzQyODcsIDc0Mjk3LCA3NDMwNCwgCi0gICAgNzQzMTEsIDc0MzE2LCA3NDMyMSwgNzQzMzMsIDc0MzQ1LCA3NDM1MywgNzQzNjEsIDc0MzcxLCA3NDM4MSwgNzQzOTMsIAotICAgIDc0NDA1LCA3NDQxNCwgNzQ0MjMsIDc0NDMwLCA3NDQzNywgNzQ0NDQsIDc0NDUxLCA3NDQ2MCwgNzQ0NjksIDc0NDc0LCAKLSAgICA3NDQ3OSwgNzQ0ODYsIDc0NDkzLCA3NDUwMCwgNzQ1MDcsIDc0NTE5LCA3NDUzMSwgNzQ1MzYsIDc0NTQxLCA3NDU0NiwgCi0gICAgNzQ1NTEsIDc0NTU2LCA3NDU2MSwgNzQ1NjYsIDc0NTcxLCA3NDU3NSwgNzQ1ODAsIDc0NTg1LCA3NDU5MCwgNzQ1OTUsIAotICAgIDc0NjAwLCA3NDYwNiwgNzQ2MTEsIDc0NjE2LCA3NDYyMywgNzQ2MzAsIDc0NjM3LCA3NDY0NCwgNzQ2NTEsIDc0NjYwLCAKLSAgICA3NDY2OSwgNzQ2NzUsIDc0NjgxLCA3NDY4NywgNzQ2OTMsIDc0Njk5LCA3NDcwNSwgNzQ3MTIsIDc0NzE5LCA3NDcyNiwgCi0gICAgNzQ3MzAsIDc0NzM3LCA3NDc0MiwgNzQ3NDcsIDc0NzU0LCA3NDc2NywgNzQ3NzMsIDc0NzgxLCA3NDc4OSwgNzQ3OTYsIAotICAgIDc0ODAzLCA3NDgxMiwgNzQ4MjEsIDc0ODI4LCA3NDgzNSwgNzQ4NDIsIDc0ODQ5LCA3NDg1NiwgNzQ4NjMsIDc0ODcwLCAKLSAgICA3NDg3NywgNzQ4ODQsIDc0ODkxLCA3NDkwMCwgNzQ5MDksIDc0OTE4LCA3NDkyNywgNzQ5MzYsIDc0OTQ1LCA3NDk1NCwgCi0gICAgNzQ5NjMsIDc0OTcyLCA3NDk4MSwgNzQ5ODgsIDc0OTk1LCA3NTAwMSwgMCwgMCwgNzUwMDksIDc1MDE2LCA3NTAyMywgCi0gICAgNzUwMzEsIDc1MDM2LCA3NTA0MSwgNzUwNDYsIDc1MDUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA2NjgzMCwgNjY4MzksIDY2ODQ4LCA2Njg1OSwgNjY4NjYsIDY2ODcxLCA2Njg3NiwgNjY4ODMsIDY2ODkwLCA2Njg5NiwgCisgICAgNjY5MDEsIDY2OTA2LCA2NjkxMSwgNjY5MTYsIDY2OTIzLCA2NjkyOCwgNjY5MzMsIDY2OTM4LCA2Njk0OSwgNjY5NTQsIAorICAgIDY2OTU5LCA2Njk2NiwgNjY5NzEsIDY2OTc4LCA2Njk4MywgNjY5ODgsIDY2OTk1LCA2NzAwMiwgNjcwMDksIDY3MDE4LCAKKyAgICA2NzAyNywgNjcwMzIsIDY3MDM3LCA2NzA0MiwgNjcwNDksIDY3MDU0LCA2NzA2NCwgNjcwNzEsIDY3MDc2LCA2NzA4MSwgCisgICAgNjcwODYsIDY3MDkxLCA2NzA5NiwgNjcxMDEsIDY3MTEwLCA2NzExNywgNjcxMjQsIDY3MTI5LCA2NzEzNiwgNjcxNDEsIAorICAgIDY3MTQ4LCA2NzE1NywgNjcxNjgsIDY3MTczLCA2NzE4MiwgNjcxODcsIDY3MTk0LCA2NzIwMywgNjcyMTIsIDY3MjE3LCAKKyAgICA2NzIyMiwgNjcyMjksIDY3MjM1LCA2NzI0MiwgNjcyNDksIDY3MjUzLCA2NzI1NywgNjcyNjAsIDY3MjY0LCA2NzI2OCwgCisgICAgNjcyNzIsIDY3Mjc2LCA2NzI4MCwgNjcyODQsIDY3Mjg4LCA2NzI5MSwgNjcyOTUsIDY3Mjk5LCA2NzMwMywgNjczMDcsIAorICAgIDY3MzExLCA2NzMxNSwgNjczMTgsIDY3MzIyLCA2NzMyNiwgNjczMjksIDY3MzMzLCA2NzMzNywgNjczNDEsIDY3MzQ1LCAKKyAgICA2NzM0OSwgNjczNTMsIDY3MzU3LCA2NzM2MSwgNjczNjUsIDY3MzY5LCA2NzM3MywgNjczNzcsIDY3MzgxLCA2NzM4NSwgCisgICAgNjczODksIDY3MzkzLCA2NzM5NywgNjc0MDEsIDY3NDA1LCA2NzQwOSwgNjc0MTMsIDY3NDE3LCA2NzQyMSwgNjc0MjUsIAorICAgIDY3NDI5LCA2NzQzMywgNjc0MzcsIDY3NDQxLCA2NzQ0NSwgNjc0NDksIDY3NDUzLCA2NzQ1NywgNjc0NjEsIDY3NDY1LCAKKyAgICA2NzQ2OSwgNjc0NzMsIDY3NDc3LCA2NzQ4MSwgNjc0ODUsIDY3NDg5LCA2NzQ5MywgNjc0OTcsIDY3NTAxLCA2NzUwNSwgCisgICAgNjc1MDgsIDY3NTEyLCA2NzUxNiwgNjc1MjAsIDY3NTI0LCA2NzUyOCwgNjc1MzIsIDY3NTM2LCA2NzU0MCwgNjc1NDQsIAorICAgIDY3NTQ4LCA2NzU1MiwgNjc1NTYsIDY3NTYwLCA2NzU2NCwgNjc1NjgsIDY3NTcyLCA2NzU3NiwgNjc1ODAsIDY3NTg0LCAKKyAgICA2NzU4OCwgNjc1OTIsIDY3NTk2LCA2NzYwMCwgNjc2MDQsIDY3NjA4LCA2NzYxMiwgNjc2MTYsIDY3NjIwLCA2NzYyNCwgCisgICAgNjc2MjgsIDY3NjMyLCA2NzYzNiwgNjc2NDAsIDY3NjQ0LCA2NzY0OCwgNjc2NTIsIDY3NjU2LCA2NzY2MCwgNjc2NjQsIAorICAgIDY3NjY4LCA2NzY3MiwgNjc2NzYsIDY3NjgwLCA2NzY4NCwgNjc2ODgsIDY3NjkyLCA2NzY5NiwgNjc3MDAsIDY3NzA0LCAKKyAgICA2NzcwOCwgNjc3MTIsIDY3NzE2LCA2NzcyMCwgNjc3MjQsIDY3NzI4LCA2NzczMiwgNjc3MzYsIDY3NzQwLCA2Nzc0NCwgCisgICAgNjc3NDgsIDY3NzUyLCA2Nzc1NiwgNjc3NjAsIDY3NzY0LCA2Nzc2OCwgNjc3NzIsIDY3Nzc2LCA2Nzc4MCwgNjc3ODQsIAorICAgIDY3Nzg4LCA2Nzc5MiwgNjc3OTYsIDY3ODAwLCA2NzgwNCwgNjc4MDgsIDY3ODEyLCA2NzgxNiwgNjc4MjAsIDY3ODI0LCAKKyAgICA2NzgyOCwgNjc4MzIsIDY3ODM2LCA2Nzg0MCwgNjc4NDQsIDY3ODQ4LCA2Nzg1MiwgNjc4NTYsIDY3ODYwLCA2Nzg2NCwgCisgICAgNjc4NjgsIDY3ODcyLCA2Nzg3NiwgNjc4ODAsIDY3ODg0LCA2Nzg4OCwgNjc4OTIsIDY3ODk2LCA2NzkwMCwgNjc5MDQsIAorICAgIDY3OTA4LCA2NzkxMiwgNjc5MTYsIDY3OTIwLCA2NzkyNCwgNjc5MjgsIDY3OTMyLCA2NzkzNiwgNjc5NDAsIDY3OTQ0LCAKKyAgICA2Nzk0OCwgNjc5NTIsIDY3OTU2LCA2Nzk2MCwgNjc5NjQsIDY3OTY4LCA2Nzk3MiwgNjc5NzYsIDY3OTc5LCA2Nzk4MywgCisgICAgNjc5ODcsIDY3OTkxLCA2Nzk5NSwgNjc5OTksIDY4MDAzLCA2ODAwNywgNjgwMTEsIDY4MDE1LCA2ODAxOSwgNjgwMjMsIAorICAgIDY4MDI3LCA2ODAzMSwgNjgwMzUsIDY4MDM5LCA2ODA0MywgNjgwNDcsIDY4MDUxLCA2ODA1NSwgNjgwNTksIDY4MDYzLCAKKyAgICA2ODA2NywgNjgwNzEsIDY4MDc1LCA2ODA3OSwgNjgwODMsIDY4MDg3LCA2ODA5MSwgNjgwOTUsIDY4MDk5LCA2ODEwMywgCisgICAgNjgxMDcsIDY4MTExLCA2ODExNSwgNjgxMTksIDY4MTIzLCA2ODEyNywgNjgxMzEsIDY4MTM1LCA2ODEzOSwgNjgxNDMsIAorICAgIDY4MTQ3LCA2ODE1MSwgNjgxNTUsIDY4MTU5LCA2ODE2MywgNjgxNjcsIDY4MTcxLCA2ODE3NSwgNjgxNzksIDY4MTgzLCAKKyAgICA2ODE4NywgNjgxOTEsIDY4MTk1LCA2ODE5OSwgNjgyMDMsIDY4MjA3LCA2ODIxMSwgNjgyMTUsIDY4MjE5LCA2ODIyMywgCisgICAgNjgyMjcsIDY4MjMxLCA2ODIzNSwgNjgyMzksIDY4MjQzLCA2ODI0NywgNjgyNTEsIDY4MjU1LCA2ODI1OSwgNjgyNjMsIAorICAgIDY4MjY3LCA2ODI3MSwgNjgyNzUsIDY4Mjc5LCA2ODI4MywgNjgyODcsIDY4MjkxLCA2ODI5NSwgNjgyOTksIDY4MzAzLCAKKyAgICA2ODMwNywgNjgzMTEsIDY4MzE1LCA2ODMxOSwgNjgzMjMsIDY4MzI3LCA2ODMzMSwgNjgzMzUsIDY4MzM5LCA2ODM0MywgCisgICAgNjgzNDcsIDY4MzUxLCA2ODM1NSwgNjgzNTksIDY4MzYzLCA2ODM2NywgNjgzNzEsIDY4Mzc1LCA2ODM3OSwgNjgzODMsIAorICAgIDY4Mzg3LCA2ODM5MSwgNjgzOTUsIDY4Mzk5LCA2ODQwMywgNjg0MDcsIDY4NDExLCA2ODQxNSwgNjg0MTksIDY4NDIzLCAKKyAgICA2ODQyNywgNjg0MzEsIDY4NDM1LCA2ODQzOSwgNjg0NDIsIDY4NDQ2LCA2ODQ1MCwgNjg0NTQsIDY4NDU4LCA2ODQ2MiwgCisgICAgNjg0NjYsIDY4NDcwLCA2ODQ3NCwgNjg0NzgsIDY4NDgyLCA2ODQ4NiwgNjg0OTAsIDY4NDk0LCA2ODQ5OCwgNjg1MDIsIAorICAgIDY4NTA2LCA2ODUxMCwgNjg1MTQsIDY4NTE4LCA2ODUyMiwgNjg1MjYsIDY4NTMwLCA2ODUzNCwgNjg1MzgsIDY4NTQyLCAKKyAgICA2ODU0NiwgNjg1NTAsIDY4NTU0LCA2ODU1OCwgNjg1NjIsIDY4NTY2LCA2ODU3MCwgNjg1NzQsIDY4NTc4LCA2ODU4MiwgCisgICAgNjg1ODYsIDY4NTkwLCA2ODU5NCwgNjg1OTgsIDY4NjAyLCA2ODYwNiwgNjg2MTAsIDY4NjE0LCA2ODYxOCwgNjg2MjIsIAorICAgIDY4NjI2LCA2ODYzMCwgNjg2MzQsIDY4NjM4LCA2ODY0MiwgNjg2NDYsIDY4NjUwLCA2ODY1NCwgNjg2NTgsIDY4NjYyLCAKKyAgICA2ODY2NiwgNjg2NzAsIDY4Njc0LCA2ODY3OCwgNjg2ODIsIDY4Njg2LCA2ODY5MCwgNjg2OTQsIDY4Njk4LCA2ODcwMiwgCisgICAgNjg3MDYsIDY4NzEwLCA2ODcxNCwgNjg3MTgsIDY4NzIyLCA2ODcyNiwgNjg3MzAsIDY4NzM0LCA2ODczOCwgNjg3NDIsIAorICAgIDY4NzQ2LCA2ODc1MCwgNjg3NTQsIDY4NzU4LCA2ODc2MiwgNjg3NjYsIDY4NzcwLCA2ODc3NCwgNjg3NzgsIDY4NzgyLCAKKyAgICA2ODc4NiwgNjg3OTAsIDY4Nzk0LCA2ODc5OCwgNjg4MDEsIDY4ODA1LCA2ODgwOSwgNjg4MTMsIDY4ODE3LCA2ODgyMSwgCisgICAgNjg4MjUsIDY4ODI5LCA2ODgzMywgNjg4MzcsIDY4ODQxLCA2ODg0NSwgNjg4NDksIDY4ODUzLCA2ODg1NywgNjg4NjEsIAorICAgIDY4ODY1LCA2ODg2OSwgNjg4NzMsIDY4ODc3LCA2ODg4MSwgNjg4ODUsIDY4ODg5LCA2ODg5MywgNjg4OTcsIDY4OTAxLCAKKyAgICA2ODkwNSwgNjg5MDksIDY4OTEzLCA2ODkxNywgNjg5MjEsIDY4OTI1LCA2ODkyOSwgNjg5MzMsIDY4OTM3LCA2ODk0MSwgCisgICAgNjg5NDUsIDY4OTQ5LCA2ODk1MywgNjg5NTcsIDY4OTYxLCA2ODk2NSwgNjg5NjksIDY4OTczLCA2ODk3NywgNjg5ODEsIAorICAgIDY4OTg1LCA2ODk4OSwgNjg5OTMsIDY4OTk3LCA2OTAwMSwgNjkwMDUsIDY5MDA5LCA2OTAxMywgNjkwMTcsIDY5MDIxLCAKKyAgICA2OTAyNSwgNjkwMjksIDY5MDMzLCA2OTAzNywgNjkwNDAsIDY5MDQ0LCA2OTA0OCwgNjkwNTIsIDY5MDU2LCA2OTA2MCwgCisgICAgNjkwNjQsIDY5MDY4LCA2OTA3MiwgNjkwNzYsIDY5MDgwLCA2OTA4NCwgNjkwODgsIDY5MDkyLCA2OTA5NiwgNjkxMDAsIAorICAgIDY5MTA0LCA2OTEwOCwgNjkxMTIsIDY5MTE2LCA2OTEyMCwgNjkxMjQsIDY5MTI4LCA2OTEzMiwgNjkxMzYsIDY5MTQwLCAKKyAgICA2OTE0NCwgNjkxNDgsIDY5MTUyLCA2OTE1NiwgNjkxNjAsIDY5MTY0LCA2OTE2OCwgNjkxNzIsIDY5MTc2LCA2OTE4MCwgCisgICAgNjkxODQsIDY5MTg4LCA2OTE5MiwgNjkxOTYsIDY5MjAwLCA2OTIwNCwgNjkyMDgsIDY5MjEyLCA2OTIxNiwgNjkyMjAsIAorICAgIDY5MjI0LCA2OTIyOCwgNjkyMzIsIDY5MjM2LCA2OTI0MCwgNjkyNDQsIDY5MjQ4LCA2OTI1MiwgNjkyNTYsIDY5MjYwLCAKKyAgICA2OTI2NCwgNjkyNjgsIDY5MjcyLCA2OTI3NiwgNjkyODAsIDY5Mjg0LCA2OTI4OCwgNjkyOTIsIDY5Mjk1LCA2OTI5OSwgCisgICAgNjkzMDMsIDY5MzA3LCA2OTMxMSwgNjkzMTUsIDY5MzE5LCA2OTMyMywgNjkzMjcsIDY5MzMxLCA2OTMzNSwgNjkzMzksIAorICAgIDY5MzQzLCA2OTM0NywgNjkzNTEsIDY5MzU1LCA2OTM1OSwgNjkzNjMsIDY5MzY3LCA2OTM3MSwgNjkzNzUsIDY5Mzc5LCAKKyAgICA2OTM4MywgNjkzODcsIDY5MzkxLCA2OTM5NSwgNjkzOTksIDY5NDAzLCA2OTQwNywgNjk0MTEsIDY5NDE1LCA2OTQxOSwgCisgICAgNjk0MjMsIDY5NDI3LCA2OTQzMSwgNjk0MzUsIDY5NDM5LCA2OTQ0MywgNjk0NDcsIDY5NDUxLCA2OTQ1NSwgNjk0NTksIAorICAgIDY5NDYzLCA2OTQ2NywgNjk0NzEsIDY5NDc1LCA2OTQ3OSwgNjk0ODMsIDY5NDg3LCA2OTQ5MSwgNjk0OTUsIDY5NDk5LCAKKyAgICA2OTUwMywgNjk1MDcsIDY5NTExLCA2OTUxNSwgNjk1MTksIDY5NTIzLCA2OTUyNywgNjk1MzEsIDY5NTM1LCA2OTUzOSwgCisgICAgNjk1NDMsIDY5NTQ3LCA2OTU1MSwgNjk1NTUsIDY5NTU5LCA2OTU2MywgNjk1NjcsIDY5NTcxLCA2OTU3NSwgNjk1NzksIAorICAgIDY5NTgzLCA2OTU4NywgNjk1OTEsIDY5NTk1LCA2OTU5OSwgNjk2MDMsIDY5NjA3LCA2OTYxMSwgNjk2MTUsIDY5NjE5LCAKKyAgICA2OTYyMywgNjk2MjcsIDY5NjMxLCA2OTYzNSwgNjk2MzksIDY5NjQzLCA2OTY0NywgNjk2NTEsIDY5NjU1LCA2OTY1OSwgCisgICAgNjk2NjMsIDY5NjY3LCA2OTY3MSwgNjk2NzUsIDY5Njc5LCA2OTY4MywgNjk2ODcsIDY5NjkxLCA2OTY5NSwgNjk2OTksIAorICAgIDY5NzAzLCA2OTcwNywgNjk3MTEsIDY5NzE1LCA2OTcxOSwgNjk3MjMsIDY5NzI3LCA2OTczMSwgNjk3MzUsIDY5NzM5LCAKKyAgICA2OTc0MywgNjk3NDcsIDY5NzUwLCA2OTc1NCwgNjk3NTgsIDY5NzYyLCA2OTc2NiwgNjk3NzAsIDY5Nzc0LCA2OTc3OCwgCisgICAgNjk3ODIsIDY5Nzg2LCA2OTc5MCwgNjk3OTQsIDY5Nzk4LCA2OTgwMiwgNjk4MDYsIDY5ODEwLCA2OTgxNCwgNjk4MTgsIAorICAgIDY5ODIyLCA2OTgyNiwgNjk4MzAsIDY5ODM0LCA2OTgzOCwgNjk4NDIsIDY5ODQ2LCA2OTg1MCwgNjk4NTQsIDY5ODU4LCAKKyAgICA2OTg2MiwgNjk4NjYsIDY5ODcwLCA2OTg3NCwgNjk4NzgsIDY5ODgyLCA2OTg4NiwgNjk4OTAsIDY5ODk0LCA2OTg5OCwgCisgICAgNjk5MDIsIDY5OTA2LCA2OTkxMCwgNjk5MTQsIDY5OTE4LCA2OTkyMiwgNjk5MjYsIDY5OTMwLCA2OTkzNCwgNjk5MzgsIAorICAgIDY5OTQyLCA2OTk0NiwgNjk5NTAsIDY5OTU0LCA2OTk1OCwgNjk5NjIsIDY5OTY2LCA2OTk3MCwgNjk5NzQsIDY5OTc4LCAKKyAgICA2OTk4MiwgNjk5ODYsIDY5OTkwLCA2OTk5NCwgNjk5OTgsIDcwMDAyLCA3MDAwNiwgNzAwMTAsIDcwMDE0LCA3MDAxOCwgCisgICAgNzAwMjIsIDcwMDI2LCA3MDAzMCwgNzAwMzQsIDcwMDM4LCA3MDA0MiwgNzAwNDYsIDcwMDUwLCA3MDA1NCwgNzAwNTgsIAorICAgIDcwMDYyLCA3MDA2NiwgNzAwNzAsIDcwMDc0LCA3MDA3OCwgNzAwODIsIDcwMDg2LCA3MDA5MCwgNzAwOTQsIDcwMDk4LCAKKyAgICA3MDEwMiwgNzAxMDYsIDcwMTEwLCA3MDExNCwgNzAxMTgsIDcwMTIyLCA3MDEyNiwgNzAxMzAsIDcwMTM0LCA3MDEzOCwgCisgICAgNzAxNDIsIDcwMTQ2LCA3MDE1MCwgNzAxNTQsIDcwMTU4LCA3MDE2MiwgNzAxNjYsIDcwMTcwLCA3MDE3NCwgNzAxNzgsIAorICAgIDcwMTgyLCA3MDE4NiwgNzAxOTAsIDcwMTk0LCA3MDE5OCwgNzAyMDIsIDcwMjA2LCA3MDIxMCwgNzAyMTQsIDcwMjE4LCAKKyAgICA3MDIyMiwgNzAyMjYsIDcwMjMwLCA3MDIzNCwgNzAyMzgsIDcwMjQyLCA3MDI0NiwgNzAyNTAsIDcwMjU0LCA3MDI1OCwgCisgICAgNzAyNjIsIDcwMjY2LCA3MDI3MCwgNzAyNzQsIDcwMjc4LCA3MDI4MiwgNzAyODYsIDcwMjkwLCA3MDI5NCwgNzAyOTgsIAorICAgIDcwMzAyLCA3MDMwNiwgNzAzMTAsIDcwMzE0LCA3MDMxOCwgNzAzMjIsIDcwMzI2LCA3MDMzMCwgNzAzMzQsIDcwMzM4LCAKKyAgICA3MDM0MiwgNzAzNDYsIDcwMzUwLCA3MDM1MywgNzAzNTcsIDcwMzYxLCA3MDM2NSwgNzAzNjksIDcwMzczLCA3MDM3NywgCisgICAgNzAzODEsIDcwMzg1LCA3MDM4OSwgNzAzOTMsIDcwMzk3LCA3MDQwMSwgNzA0MDUsIDcwNDA5LCA3MDQxMywgNzA0MTcsIAorICAgIDcwNDIxLCA3MDQyNSwgNzA0MjksIDcwNDMzLCA3MDQzNywgNzA0NDEsIDcwNDQ1LCA3MDQ0OSwgNzA0NTMsIDcwNDU3LCAKKyAgICA3MDQ2MSwgNzA0NjUsIDcwNDY5LCA3MDQ3MywgNzA0NzcsIDcwNDgxLCA3MDQ4NSwgNzA0ODksIDcwNDkzLCA3MDQ5NywgCisgICAgNzA1MDEsIDcwNTA1LCA3MDUwOSwgNzA1MTMsIDcwNTE3LCA3MDUyMSwgNzA1MjUsIDcwNTI5LCA3MDUzMywgNzA1MzcsIAorICAgIDcwNTQxLCA3MDU0NSwgNzA1NDksIDcwNTUzLCA3MDU1NywgNzA1NjEsIDcwNTY1LCA3MDU2OSwgNzA1NzMsIDcwNTc3LCAKKyAgICA3MDU4MSwgNzA1ODUsIDcwNTg5LCA3MDU5MywgNzA1OTcsIDcwNjAxLCA3MDYwNSwgNzA2MDksIDcwNjEzLCA3MDYxNywgCisgICAgNzA2MjEsIDcwNjI1LCA3MDYyOSwgNzA2MzMsIDcwNjM3LCA3MDY0MSwgNzA2NDUsIDcwNjQ5LCA3MDY1MywgNzA2NTcsIAorICAgIDcwNjYxLCA3MDY2NSwgNzA2NjksIDcwNjczLCA3MDY3NywgNzA2ODEsIDcwNjg1LCA3MDY4OSwgNzA2OTMsIDcwNjk3LCAKKyAgICA3MDcwMSwgNzA3MDUsIDcwNzA5LCA3MDcxMywgNzA3MTcsIDcwNzIxLCA3MDcyNSwgNzA3MjksIDcwNzMzLCA3MDczNywgCisgICAgNzA3NDEsIDcwNzQ1LCA3MDc0OSwgNzA3NTMsIDcwNzU3LCA3MDc2MSwgNzA3NjUsIDcwNzY5LCA3MDc3MywgNzA3NzcsIAorICAgIDcwNzgxLCA3MDc4NSwgNzA3ODksIDcwNzkzLCA3MDc5NywgNzA4MDEsIDcwODA1LCA3MDgwOSwgNzA4MTMsIDcwODE3LCAKKyAgICA3MDgyMSwgNzA4MjUsIDcwODI5LCA3MDgzMywgNzA4MzcsIDcwODQxLCA3MDg0NSwgNzA4NDksIDcwODUzLCA3MDg1NywgCisgICAgNzA4NjEsIDcwODY1LCA3MDg2OSwgNzA4NzMsIDcwODc3LCA3MDg4MSwgNzA4ODUsIDcwODg5LCA3MDg5MywgNzA4OTcsIAorICAgIDcwOTAxLCA3MDkwNSwgNzA5MDksIDcwOTEzLCA3MDkxNywgNzA5MjEsIDcwOTI1LCA3MDkyOSwgNzA5MzMsIDcwOTM3LCAKKyAgICA3MDk0MSwgNzA5NDUsIDcwOTQ5LCA3MDk1MywgNzA5NTcsIDcwOTYxLCA3MDk2NSwgNzA5NjksIDcwOTczLCA3MDk3NywgCisgICAgNzA5ODEsIDcwOTg1LCA3MDk4OSwgNzA5OTMsIDcwOTk3LCA3MTAwMSwgNzEwMDUsIDcxMDA5LCA3MTAxMywgNzEwMTcsIAorICAgIDcxMDIxLCA3MTAyNSwgNzEwMjksIDcxMDMzLCA3MTAzNywgNzEwNDEsIDcxMDQ1LCA3MTA0OSwgNzEwNTMsIDcxMDU3LCAKKyAgICA3MTA2MSwgNzEwNjUsIDcxMDY5LCA3MTA3MywgNzEwNzcsIDcxMDgxLCA3MTA4NSwgNzEwODksIDcxMDkzLCA3MTA5NywgCisgICAgNzExMDEsIDcxMTA1LCA3MTEwOSwgNzExMTMsIDcxMTE3LCA3MTEyMSwgNzExMjUsIDcxMTI5LCA3MTEzMywgNzExMzcsIAorICAgIDcxMTQxLCA3MTE0NSwgNzExNDksIDcxMTUzLCA3MTE1NywgNzExNjEsIDcxMTY1LCA3MTE2OSwgNzExNzMsIDcxMTc3LCAKKyAgICA3MTE4MSwgNzExODUsIDcxMTg5LCA3MTE5MywgNzExOTcsIDcxMjAxLCA3MTIwNSwgNzEyMDksIDcxMjEzLCA3MTIxNywgCisgICAgNzEyMjEsIDcxMjI1LCA3MTIyOSwgNzEyMzMsIDcxMjM3LCA3MTI0MSwgNzEyNDUsIDcxMjQ5LCA3MTI1MywgNzEyNTcsIAorICAgIDcxMjYxLCA3MTI2NSwgNzEyNjksIDcxMjczLCA3MTI3NywgNzEyODEsIDcxMjg1LCA3MTI4OSwgNzEyOTMsIDcxMjk3LCAKKyAgICA3MTMwMSwgNzEzMDUsIDcxMzA5LCA3MTMxMywgNzEzMTcsIDcxMzIxLCA3MTMyNSwgNzEzMjksIDcxMzMzLCA3MTMzNywgCisgICAgNzEzNDEsIDcxMzQ1LCA3MTM0OSwgNzEzNTMsIDcxMzU3LCA3MTM2MSwgNzEzNjUsIDcxMzY5LCA3MTM3MywgNzEzNzcsIAorICAgIDcxMzgxLCA3MTM4NSwgNzEzODksIDcxMzkzLCA3MTM5NywgNzE0MDEsIDcxNDA1LCA3MTQwOSwgNzE0MTMsIDcxNDE3LCAKKyAgICA3MTQyMSwgNzE0MjUsIDcxNDI5LCA3MTQzMywgNzE0MzcsIDcxNDQxLCA3MTQ0NSwgNzE0NDksIDcxNDUzLCA3MTQ1NywgCisgICAgNzE0NjEsIDcxNDY1LCA3MTQ2OSwgNzE0NzMsIDcxNDc3LCA3MTQ4MSwgNzE0ODUsIDcxNDg5LCA3MTQ5MywgNzE0OTcsIAorICAgIDcxNTAxLCA3MTUwNSwgNzE1MDksIDcxNTEzLCA3MTUxNywgNzE1MjEsIDcxNTI1LCA3MTUyOSwgNzE1MzMsIDcxNTM3LCAKKyAgICA3MTU0MSwgNzE1NDUsIDcxNTQ5LCA3MTU1MywgNzE1NTcsIDcxNTYxLCA3MTU2NSwgNzE1NjksIDcxNTczLCA3MTU3NywgCisgICAgNzE1ODEsIDcxNTg1LCA3MTU4OSwgNzE1OTMsIDcxNTk3LCA3MTYwMSwgNzE2MDUsIDcxNjA5LCA3MTYxMywgNzE2MTcsIAorICAgIDcxNjIxLCA3MTYyNSwgNzE2MjksIDcxNjMzLCA3MTYzNywgNzE2NDEsIDcxNjQ1LCA3MTY0OSwgNzE2NTMsIDcxNjU3LCAKKyAgICA3MTY2MSwgNzE2NjUsIDcxNjY5LCA3MTY3MywgNzE2NzcsIDcxNjgxLCA3MTY4NSwgNzE2ODksIDcxNjkzLCA3MTY5NywgCisgICAgNzE3MDEsIDcxNzA1LCA3MTcwOSwgNzE3MTMsIDcxNzE3LCA3MTcyMSwgNzE3MjUsIDcxNzI5LCA3MTczMywgNzE3MzcsIAorICAgIDcxNzQxLCA3MTc0NSwgNzE3NDksIDcxNzUzLCA3MTc1NywgNzE3NjEsIDcxNzY1LCA3MTc2OSwgNzE3NzMsIDcxNzc3LCAKKyAgICA3MTc4MSwgNzE3ODUsIDcxNzg5LCA3MTc5MywgNzE3OTcsIDcxODAxLCA3MTgwNSwgNzE4MDksIDcxODEzLCA3MTgxNywgCisgICAgNzE4MjEsIDcxODI1LCA3MTgyOSwgNzE4MzMsIDcxODM3LCA3MTg0MSwgNzE4NDUsIDcxODQ5LCA3MTg1MywgNzE4NTcsIAorICAgIDcxODYxLCA3MTg2NSwgNzE4NjksIDcxODczLCA3MTg3NywgNzE4ODEsIDcxODg1LCA3MTg4OSwgNzE4OTMsIDAsIDAsIDAsIAorICAgIDcxODk3LCA3MTkwMSwgNzE5MDUsIDcxOTA5LCA3MTkxMywgNzE5MTcsIDcxOTIxLCA3MTkyNSwgNzE5MjksIDcxOTMzLCAKKyAgICA3MTkzNywgNzE5NDEsIDcxOTQ1LCA3MTk0OSwgNzE5NTMsIDcxOTU3LCA3MTk2MSwgNzE5NjUsIDcxOTY5LCA3MTk3MywgCisgICAgNzE5NzcsIDcxOTgxLCA3MTk4NSwgNzE5ODksIDcxOTkzLCA3MTk5NywgNzIwMDEsIDcyMDA1LCA3MjAwOSwgNzIwMTMsIAorICAgIDcyMDE3LCA3MjAyMSwgNzIwMjUsIDcyMDI5LCA3MjAzMywgNzIwMzcsIDcyMDQxLCA3MjA0NSwgNzIwNDksIDcyMDUzLCAKKyAgICA3MjA1NywgNzIwNjEsIDcyMDY1LCA3MjA2OSwgNzIwNzMsIDcyMDc3LCA3MjA4MSwgNzIwODUsIDcyMDg5LCA3MjA5MywgCisgICAgNzIwOTcsIDcyMTAxLCA3MjEwNSwgNzIxMDksIDcyMTEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MjExNywgCisgICAgNzIxMjIsIDcyMTI2LCA3MjEzMSwgNzIxMzYsIDcyMTQxLCA3MjE0NiwgNzIxNTEsIDcyMTU1LCA3MjE2MCwgNzIxNjUsIAorICAgIDcyMTcwLCA3MjE3NSwgNzIxODAsIDcyMTg1LCA3MjE5MCwgNzIxOTQsIDcyMTk4LCA3MjIwMiwgNzIyMDcsIDcyMjEyLCAKKyAgICA3MjIxNywgNzIyMjIsIDcyMjI2LCA3MjIzMSwgNzIyMzYsIDcyMjQxLCA3MjI0NiwgNzIyNTEsIDcyMjU1LCA3MjI2MCwgCisgICAgNzIyNjQsIDcyMjY5LCA3MjI3MywgNzIyNzgsIDcyMjgyLCA3MjI4NiwgNzIyOTAsIDcyMjk1LCA3MjMwMCwgNzIzMDUsIAorICAgIDcyMzEzLCA3MjMyMSwgNzIzMjksIDcyMzM3LCA3MjM0NCwgNzIzNTIsIDcyMzU4LCA3MjM2NiwgNzIzNzAsIDcyMzc0LCAKKyAgICA3MjM3OCwgNzIzODIsIDcyMzg2LCA3MjM5MCwgNzIzOTQsIDcyMzk4LCA3MjQwMiwgNzI0MDYsIDcyNDEwLCA3MjQxNCwgCisgICAgNzI0MTgsIDcyNDIyLCA3MjQyNiwgNzI0MzAsIDcyNDM0LCA3MjQzOCwgNzI0NDIsIDcyNDQ2LCA3MjQ1MCwgNzI0NTQsIAorICAgIDcyNDU4LCA3MjQ2MiwgNzI0NjYsIDcyNDcwLCA3MjQ3NCwgNzI0NzgsIDcyNDgyLCA3MjQ4NiwgNzI0OTAsIDcyNDk0LCAKKyAgICA3MjQ5OCwgNzI1MDIsIDcyNTA2LCA3MjUxMCwgNzI1MTMsIDcyNTE3LCA3MjUyMSwgNzI1MjUsIDcyNTI5LCA3MjUzMywgCisgICAgNzI1MzcsIDcyNTQxLCA3MjU0NSwgNzI1NDksIDcyNTUzLCA3MjU1NywgNzI1NjEsIDcyNTY1LCA3MjU2OSwgNzI1NzMsIAorICAgIDcyNTc3LCA3MjU4MSwgNzI1ODUsIDcyNTg5LCA3MjU5MywgNzI1OTcsIDcyNjAxLCA3MjYwNSwgNzI2MDksIDcyNjEzLCAKKyAgICA3MjYxNywgNzI2MjEsIDcyNjI1LCA3MjYyOSwgNzI2MzMsIDcyNjM3LCA3MjY0MSwgNzI2NDUsIDcyNjQ5LCA3MjY1MywgCisgICAgNzI2NTcsIDcyNjYwLCA3MjY2NCwgNzI2NjgsIDcyNjcxLCA3MjY3NSwgNzI2NzksIDcyNjgzLCA3MjY4NiwgNzI2OTAsIAorICAgIDcyNjk0LCA3MjY5OCwgNzI3MDIsIDcyNzA2LCA3MjcxMCwgNzI3MTQsIDcyNzE4LCA3MjcyMiwgNzI3MjYsIDcyNzMwLCAKKyAgICA3MjczNCwgNzI3MzgsIDcyNzQxLCA3Mjc0NSwgNzI3NDksIDcyNzUzLCA3Mjc1NywgNzI3NjEsIDcyNzY1LCA3Mjc2OSwgCisgICAgNzI3NzMsIDcyNzc3LCA3Mjc4MSwgNzI3ODQsIDcyNzg3LCA3Mjc5MSwgNzI3OTUsIDcyNzk5LCA3MjgwMiwgNzI4MDUsIAorICAgIDcyODA5LCA3MjgxMywgNzI4MTcsIDcyODIxLCA3MjgyNSwgNzI4MjksIDcyODMzLCA3MjgzNywgNzI4NDEsIDcyODQ1LCAKKyAgICA3Mjg0OSwgNzI4NTMsIDcyODU3LCA3Mjg2MSwgNzI4NjUsIDcyODY5LCA3Mjg3MywgNzI4NzcsIDcyODgxLCA3Mjg4NSwgCisgICAgNzI4ODksIDcyODkzLCA3Mjg5NywgNzI5MDEsIDcyOTA1LCA3MjkwOSwgNzI5MTMsIDcyOTE3LCA3MjkyMSwgNzI5MjUsIAorICAgIDcyOTI5LCA3MjkzMywgNzI5MzcsIDcyOTQxLCA3Mjk0NSwgNzI5NDksIDcyOTUzLCA3Mjk1NiwgNzI5NjAsIDcyOTY0LCAKKyAgICA3Mjk2OCwgNzI5NzIsIDcyOTc2LCA3Mjk4MCwgNzI5ODQsIDcyOTg4LCA3Mjk5MiwgNzI5OTYsIDczMDAwLCA3MzAwNCwgCisgICAgNzMwMDgsIDczMDEyLCA3MzAxNiwgNzMwMjAsIDczMDI0LCA3MzAyOCwgNzMwMzIsIDczMDM2LCA3MzA0MCwgNzMwNDQsIAorICAgIDczMDQ4LCA3MzA1MiwgNzMwNTYsIDczMDYwLCA3MzA2NCwgNzMwNjgsIDczMDcyLCA3MzA3NiwgNzMwODAsIDczMDg0LCAKKyAgICA3MzA4OCwgNzMwOTIsIDczMDk2LCA3MzEwMCwgNzMxMDMsIDczMTA3LCA3MzExMSwgNzMxMTUsIDczMTE5LCA3MzEyMywgCisgICAgNzMxMjcsIDczMTMxLCA3MzEzNSwgNzMxMzksIDczMTQzLCA3MzE0NywgNzMxNTEsIDczMTU1LCA3MzE1OSwgNzMxNjMsIAorICAgIDczMTY3LCA3MzE3MCwgNzMxNzQsIDczMTc4LCA3MzE4MiwgNzMxODYsIDczMTkwLCA3MzE5NCwgNzMxOTgsIDczMjAyLCAKKyAgICA3MzIwNiwgNzMyMTAsIDczMjE0LCA3MzIxOCwgNzMyMjIsIDczMjI2LCA3MzIzMCwgNzMyMzQsIDczMjM4LCA3MzI0MiwgCisgICAgNzMyNDYsIDczMjUwLCA3MzI1NCwgNzMyNTcsIDczMjYxLCA3MzI2NSwgNzMyNjksIDczMjczLCA3MzI3NywgNzMyODEsIAorICAgIDczMjg1LCA3MzI4OSwgNzMyOTMsIDczMjk3LCA3MzMwMSwgNzMzMDUsIDczMzA5LCA3MzMxMywgNzMzMTcsIDczMzIxLCAKKyAgICA3MzMyNSwgNzMzMjksIDczMzMzLCA3MzMzNywgNzMzNDEsIDczMzQ1LCA3MzM0OSwgNzMzNTMsIDczMzU3LCA3MzM2MSwgCisgICAgNzMzNjUsIDczMzY5LCA3MzM3MywgNzMzNzcsIDczMzgxLCA3MzM4NSwgNzMzODksIDczMzkzLCA3MzM5NywgNzM0MDEsIAorICAgIDczNDA1LCA3MzQwOSwgNzM0MTMsIDczNDE3LCA3MzQyMSwgNzM0MjUsIDczNDI5LCA3MzQzMiwgNzM0MzcsIDczNDQxLCAKKyAgICA3MzQ0NywgNzM0NTIsIDczNDU4LCA3MzQ2MiwgNzM0NjYsIDczNDcwLCA3MzQ3NCwgNzM0NzgsIDczNDgyLCA3MzQ4NiwgCisgICAgNzM0OTAsIDczNDk0LCA3MzQ5OCwgNzM1MDIsIDczNTA2LCA3MzUxMCwgNzM1MTQsIDczNTE3LCA3MzUyMCwgNzM1MjMsIAorICAgIDczNTI2LCA3MzUyOSwgNzM1MzIsIDczNTM2LCA3MzUzOSwgNzM1NDMsIDczNTQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3MzU1NCwgNzM1NTksIDczNTY0LCA3MzU2OSwgNzM1NzQsIAorICAgIDczNTgxLCA3MzU4OCwgNzM1OTMsIDczNTk4LCA3MzYwMywgNzM2MDgsIDczNjE1LCA3MzYyMiwgNzM2MjksIDczNjM2LCAKKyAgICA3MzY0MywgNzM2NTAsIDczNjYwLCA3MzY3MCwgNzM2NzcsIDczNjg0LCA3MzY5MSwgNzM2OTgsIDczNzA0LCA3MzcxMCwgCisgICAgNzM3MTksIDczNzI4LCA3MzczNSwgNzM3NDIsIDczNzUzLCA3Mzc2NCwgNzM3NjksIDczNzc0LCA3Mzc4MSwgNzM3ODgsIAorICAgIDczNzk1LCA3MzgwMiwgNzM4MDksIDczODE2LCA3MzgyMywgNzM4MzAsIDczODM2LCA3Mzg0MiwgNzM4NDgsIDczODU0LCAKKyAgICA3Mzg2MSwgNzM4NjgsIDczODczLCA3Mzg3NywgNzM4ODQsIDczODkxLCA3Mzg5OCwgNzM5MDIsIDczOTA5LCA3MzkxMywgCisgICAgNzM5MTgsIDczOTIyLCA3MzkyOCwgNzM5MzMsIDczOTM5LCA3Mzk0NCwgNzM5NDgsIDczOTUyLCA3Mzk1NSwgNzM5NTgsIAorICAgIDczOTYzLCA3Mzk2OCwgNzM5NzMsIDczOTc4LCA3Mzk4MywgNzM5ODgsIDczOTkzLCA3Mzk5OCwgNzQwMDMsIDc0MDA4LCAKKyAgICA3NDAxNiwgNzQwMjQsIDc0MDI5LCA3NDAzNCwgNzQwMzksIDc0MDQ0LCA3NDA0OSwgNzQwNTQsIDc0MDU5LCA3NDA2NCwgCisgICAgNzQwNjksIDc0MDc0LCA3NDA3OSwgNzQwODQsIDc0MDg5LCA3NDA5NCwgNzQxMDAsIDc0MTA2LCA3NDExMiwgNzQxMTgsIAorICAgIDc0MTIzLCA3NDEyOSwgNzQxMzIsIDc0MTM1LCA3NDEzOCwgNzQxNDIsIDc0MTQ2LCA3NDE1MCwgNzQxNTQsIDc0MTU3LCAKKyAgICA3NDE2MSwgNzQxNjQsIDc0MTY3LCA3NDE3MCwgNzQxNzQsIDc0MTc4LCA3NDE4MiwgNzQxODYsIDc0MTkwLCA3NDE5NCwgCisgICAgNzQxOTgsIDc0MjAyLCA3NDIwNiwgNzQyMTAsIDc0MjE0LCA3NDIxOCwgNzQyMjIsIDc0MjI2LCA3NDIzMCwgNzQyMzQsIAorICAgIDc0MjM4LCA3NDI0MiwgNzQyNDYsIDc0MjUwLCA3NDI1NCwgNzQyNTgsIDc0MjYxLCA3NDI2NSwgNzQyNjksIDc0MjczLCAKKyAgICA3NDI3NywgNzQyODEsIDc0Mjg1LCA3NDI4OSwgNzQyOTMsIDc0Mjk3LCA3NDMwMSwgNzQzMDUsIDc0MzA5LCA3NDMxMywgCisgICAgNzQzMTcsIDc0MzIxLCA3NDMyNSwgNzQzMjksIDc0MzMzLCA3NDMzNywgNzQzNDEsIDc0MzQ1LCA3NDM0OSwgNzQzNTMsIAorICAgIDc0MzU3LCA3NDM2MCwgNzQzNjQsIDc0MzY4LCA3NDM3MiwgNzQzNzYsIDc0MzgwLCA3NDM4NCwgNzQzODgsIDc0MzkxLCAKKyAgICA3NDM5NSwgNzQzOTksIDc0NDAzLCA3NDQwNywgNzQ0MTEsIDc0NDE1LCA3NDQxOSwgNzQ0MjMsIDc0NDI3LCA3NDQzMSwgCisgICAgNzQ0MzUsIDc0NDM5LCA3NDQ0NCwgNzQ0NDksIDc0NDUyLCA3NDQ1NywgNzQ0NjAsIDc0NDYzLCA3NDQ2NiwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNzQ0NzAsIDc0NDc5LCA3NDQ4OCwgNzQ0OTcsIDc0NTA2LCA3NDUxNSwgNzQ1MjQsIDc0NTMzLCAKKyAgICA3NDU0MiwgNzQ1NTAsIDc0NTU3LCA3NDU2NSwgNzQ1NzIsIDc0NTgwLCA3NDU5MCwgNzQ1OTksIDc0NjA5LCA3NDYxOCwgCisgICAgNzQ2MjgsIDc0NjM2LCA3NDY0MywgNzQ2NTEsIDc0NjU4LCA3NDY2NiwgNzQ2NzEsIDc0Njc2LCA3NDY4MiwgNzQ2OTEsIAorICAgIDc0Njk3LCA3NDcwMywgNzQ3MTAsIDc0NzE5LCA3NDcyNywgNzQ3MzUsIDc0NzQzLCA3NDc1MCwgNzQ3NTcsIDc0NzY0LCAKKyAgICA3NDc3MSwgNzQ3NzYsIDc0NzgxLCA3NDc4NiwgNzQ3OTEsIDc0Nzk2LCA3NDgwMSwgNzQ4MDYsIDc0ODExLCA3NDgxOSwgCisgICAgNzQ4MjcsIDc0ODMzLCA3NDgzOSwgNzQ4NDQsIDc0ODQ5LCA3NDg1NCwgNzQ4NTksIDc0ODY0LCA3NDg2OSwgNzQ4NzQsIAorICAgIDc0ODc5LCA3NDg4OCwgNzQ4OTcsIDc0OTAyLCA3NDkwNywgNzQ5MTcsIDc0OTI3LCA3NDkzNCwgNzQ5NDEsIDc0OTUwLCAKKyAgICA3NDk1OSwgNzQ5NzEsIDc0OTgzLCA3NDk4OSwgNzQ5OTUsIDc1MDAzLCA3NTAxMSwgNzUwMjEsIDc1MDMxLCA3NTAzOCwgCisgICAgNzUwNDUsIDc1MDUwLCA3NTA1NSwgNzUwNjcsIDc1MDc5LCA3NTA4NywgNzUwOTUsIDc1MTA1LCA3NTExNSwgNzUxMjcsIAorICAgIDc1MTM5LCA3NTE0OCwgNzUxNTcsIDc1MTY0LCA3NTE3MSwgNzUxNzgsIDc1MTg1LCA3NTE5NCwgNzUyMDMsIDc1MjA4LCAKKyAgICA3NTIxMywgNzUyMjAsIDc1MjI3LCA3NTIzNCwgNzUyNDEsIDc1MjUzLCA3NTI2NSwgNzUyNzAsIDc1Mjc1LCA3NTI4MCwgCisgICAgNzUyODUsIDc1MjkwLCA3NTI5NSwgNzUzMDAsIDc1MzA1LCA3NTMwOSwgNzUzMTQsIDc1MzE5LCA3NTMyNCwgNzUzMjksIAorICAgIDc1MzM0LCA3NTM0MCwgNzUzNDUsIDc1MzUwLCA3NTM1NywgNzUzNjQsIDc1MzcxLCA3NTM3OCwgNzUzODUsIDc1Mzk0LCAKKyAgICA3NTQwMywgNzU0MDksIDc1NDE1LCA3NTQyMSwgNzU0MjcsIDc1NDM0LCA3NTQ0MSwgNzU0NDgsIDc1NDU1LCA3NTQ2MiwgCisgICAgNzU0NjYsIDc1NDczLCA3NTQ3OCwgNzU0ODMsIDc1NDkwLCA3NTUwMywgNzU1MDksIDc1NTE3LCA3NTUyNSwgNzU1MzIsIAorICAgIDc1NTM5LCA3NTU0OCwgNzU1NTcsIDc1NTY0LCA3NTU3MSwgNzU1NzgsIDc1NTg1LCA3NTU5MiwgNzU1OTksIDc1NjA2LCAKKyAgICA3NTYxMywgNzU2MjAsIDc1NjI3LCA3NTYzNiwgNzU2NDUsIDc1NjU0LCA3NTY2MywgNzU2NzIsIDc1NjgxLCA3NTY5MCwgCisgICAgNzU2OTksIDc1NzA4LCA3NTcxNywgNzU3MjQsIDc1NzMxLCA3NTczNywgNzU3NDUsIDAsIDc1NzUxLCA3NTc1OCwgNzU3NjUsIAorICAgIDc1NzczLCA3NTc3OCwgNzU3ODMsIDc1Nzg4LCA3NTc5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNzUwNTYsIDc1MDYzLCA3NTA3MCwgNzUwNzYsIDc1MDg0LCA3NTA5MiwgNzUxMDAsIDc1MTA4LCA3NTExNiwgCi0gICAgNzUxMjQsIDc1MTMwLCA3NTEzNiwgNzUxNDMsIDc1MTQ5LCA3NTE1NSwgNzUxNjEsIDc1MTY4LCA3NTE3NSwgNzUxODIsIAotICAgIDc1MTg5LCA3NTE5NiwgNzUyMDMsIDc1MjEwLCA3NTIxNywgNzUyMjQsIDc1MjMxLCA3NTIzOCwgNzUyNDUsIDc1MjUyLCAKLSAgICA3NTI1OSwgNzUyNjUsIDc1MjcyLCA3NTI3OSwgNzUyODYsIDc1MjkzLCA3NTMwMCwgNzUzMDcsIDc1MzE0LCA3NTMyMSwgCi0gICAgNzUzMjgsIDc1MzM1LCA3NTM0MiwgNzUzNDksIDc1MzU2LCA3NTM2MywgNzUzNzAsIDc1Mzc3LCA3NTM4NCwgNzUzOTEsIAotICAgIDc1Mzk5LCA3NTQwNywgNzU0MTUsIDc1NDIzLCAwLCAwLCAwLCAwLCA3NTQzMSwgNzU0MzksIDc1NDQ3LCA3NTQ1NSwgCi0gICAgNzU0NjMsIDc1NDcxLCA3NTQ3OSwgNzU0ODUsIDc1NDkxLCA3NTQ5NywgMCwgMCwgMCwgMCwgMCwgMCwgNzU1MDMsIDc1NTA3LCAKLSAgICA3NTUxMiwgNzU1MTcsIDc1NTIyLCA3NTUyNywgNzU1MzIsIDc1NTM3LCA3NTU0MiwgNzU1NDcsIDc1NTUyLCA3NTU1NywgCi0gICAgNzU1NjIsIDc1NTY2LCA3NTU3MSwgNzU1NzYsIDc1NTgwLCA3NTU4NSwgNzU1OTAsIDc1NTk1LCA3NTYwMCwgNzU2MDUsIAotICAgIDc1NjEwLCA3NTYxNSwgNzU2MTksIDc1NjI0LCA3NTYyOSwgNzU2MzQsIDc1NjM5LCA3NTY0MywgNzU2NDcsIDc1NjUxLCAKLSAgICA3NTY1NSwgNzU2NTksIDc1NjYzLCA3NTY2OCwgNzU2NzMsIDc1Njc4LCA3NTY4MywgNzU2ODgsIDc1Njk1LCA3NTcwMSwgCi0gICAgNzU3MDYsIDc1NzExLCA3NTcxNiwgNzU3MjEsIDc1NzI3LCA3NTczNCwgNzU3NDAsIDc1NzQ3LCA3NTc1NCwgNzU3NjEsIAotICAgIDc1NzY2LCA3NTc3MywgNzU3NzksIDc1Nzg0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NTc5MCwgNzU3OTUsIDc1ODAwLCAKLSAgICA3NTgwNCwgNzU4MDksIDc1ODEzLCA3NTgxOCwgNzU4MjIsIDc1ODI3LCA3NTgzMiwgNzU4MzgsIDc1ODQzLCA3NTg0OSwgCi0gICAgNzU4NTMsIDc1ODU4LCA3NTg2MywgNzU4NjcsIDc1ODcyLCA3NTg3NywgNzU4ODEsIDc1ODg2LCA3NTg5MSwgNzU4OTYsIAotICAgIDc1OTAxLCA3NTkwNiwgNzU5MTEsIDc1OTE2LCA3NTkyMSwgNzU5MjYsIDc1OTMxLCA3NTkzNiwgNzU5NDEsIDc1OTQ2LCAKLSAgICA3NTk1MSwgNzU5NTYsIDc1OTYxLCA3NTk2NiwgNzU5NzEsIDc1OTc2LCA3NTk4MCwgNzU5ODUsIDc1OTkwLCA3NTk5NSwgCi0gICAgNzU5OTksIDc2MDAzLCA3NjAwOCwgNzYwMTMsIDc2MDE4LCA3NjAyMywgNzYwMjgsIDc2MDMzLCA3NjAzNywgNzYwNDIsIAotICAgIDc2MDQ4LCA3NjA1NCwgNzYwNTksIDc2MDY1LCA3NjA3MCwgNzYwNzYsIDc2MDgyLCA3NjA4OSwgNzYwOTUsIDc2MTAyLCAKLSAgICA3NjEwNywgNzYxMTMsIDc2MTE5LCA3NjEyNCwgNzYxMzAsIDc2MTM2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3NjE0MSwgNzYxNDUsIDc2MTUwLCA3NjE1NSwgNzYxNTksIDc2MTYzLCA3NjE2NywgNzYxNzEsIDc2MTc1LCA3NjE3OSwgCi0gICAgNzYxODQsIDc2MTg4LCAwLCAwLCAwLCAwLCAwLCAwLCA3NjE5MywgNzYxOTgsIDc2MjAyLCA3NjIwNiwgNzYyMTAsIDc2MjE0LCAKLSAgICA3NjIxOCwgNzYyMjIsIDc2MjI3LCA3NjIzMSwgNzYyMzYsIDc2MjQwLCA3NjI0NCwgNzYyNDgsIDc2MjUzLCA3NjI1NywgCi0gICAgNzYyNjIsIDc2MjY3LCA3NjI3MiwgNzYyNzgsIDc2Mjg0LCA3NjI5MSwgNzYyOTYsIDc2MzAxLCA3NjMwNywgNzYzMTEsIAotICAgIDc2MzE2LCA3NjMxOSwgNzYzMjIsIDc2MzI2LCAwLCAwLCA3NjMzMSwgNzYzMzgsIDc2MzQ0LCA3NjM1MCwgNzYzNTYsIAotICAgIDc2MzYyLCA3NjM2OCwgNzYzNzQsIDc2MzgxLCA3NjM4NywgNzYzOTQsIDc2NDAwLCA3NjQwNywgNzY0MTQsIDc2NDIxLCAKLSAgICA3NjQyOCwgNzY0MzUsIDc2NDQyLCA3NjQ0OSwgNzY0NTYsIDc2NDYzLCA3NjQ3MCwgNzY0NzYsIDc2NDgzLCA3NjQ4OSwgCi0gICAgNzY0OTYsIDc2NTAzLCA3NjUxMCwgNzY1MTYsIDc2NTIzLCA3NjUzMCwgNzY1MzcsIDc2NTQzLCA3NjU1MCwgNzY1NTcsIAotICAgIDc2NTYzLCA3NjU3MCwgNzY1NzYsIDc2NTgzLCA3NjU5MCwgNzY1OTYsIDc2NjAyLCA3NjYwOSwgNzY2MTUsIDc2NjIyLCAKLSAgICA3NjYyOSwgNzY2MzgsIDc2NjQ1LCA3NjY1MiwgNzY2NTYsIDc2NjYxLCA3NjY2NiwgNzY2NzEsIDc2Njc2LCA3NjY4MSwgCi0gICAgNzY2ODUsIDc2NjkwLCA3NjY5NCwgNzY2OTksIDc2NzA0LCA3NjcwOSwgNzY3MTQsIDc2NzE5LCA3NjcyNCwgNzY3MjgsIAotICAgIDc2NzMzLCA3NjczNywgNzY3NDIsIDc2NzQ3LCA3Njc1MiwgNzY3NTcsIDc2NzYxLCA3Njc2NiwgNzY3NzEsIDc2Nzc2LCAKLSAgICA3Njc4MiwgNzY3ODcsIDc2NzkzLCA3Njc5OSwgNzY4MDUsIDc2ODExLCA3NjgxNywgNzY4MjIsIDc2ODI4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3NjgzMiwgNzY4MzcsIDc2ODQxLCA3Njg0NSwgNzY4NDksIDc2ODUzLCA3Njg1NywgCi0gICAgNzY4NjEsIDc2ODY1LCA3Njg2OSwgNzY4NzMsIDc2ODc3LCA3Njg4MSwgNzY4ODUsIDc2ODg5LCA3Njg5MywgNzY4OTcsIAotICAgIDc2OTAxLCA3NjkwNSwgNzY5MDksIDc2OTEzLCA3NjkxNywgNzY5MjEsIDc2OTI1LCA3NjkyOSwgNzY5MzMsIDc2OTM3LCAKLSAgICA3Njk0MSwgNzY5NDUsIDc2OTQ5LCAwLCAwLCAwLCA3Njk1MywgNzY5NTcsIDc2OTYxLCA3Njk2NSwgNzY5NjksIDc2OTcyLCAKLSAgICA3Njk3OCwgNzY5ODEsIDc2OTg1LCA3Njk4OCwgNzY5OTQsIDc3MDAwLCA3NzAwOCwgNzcwMTEsIDc3MDE1LCA3NzAxOCwgCi0gICAgNzcwMjEsIDc3MDI3LCA3NzAzMywgNzcwMzcsIDc3MDQzLCA3NzA0NywgNzcwNTEsIDc3MDU3LCA3NzA2MSwgNzcwNjcsIAotICAgIDc3MDczLCA3NzA3NywgNzcwODEsIDc3MDg3LCA3NzA5MSwgNzcwOTcsIDc3MTAzLCA3NzEwNywgNzcxMTMsIDc3MTE3LCAKLSAgICA3NzEyMywgNzcxMjcsIDc3MTMwLCA3NzEzNiwgNzcxNDAsIDc3MTQ2LCA3NzE0OSwgNzcxNTIsIDc3MTU2LCA3NzE2MiwgCi0gICAgNzcxNjYsIDc3MTcwLCA3NzE3NiwgNzcxODIsIDc3MTg2LCA3NzE4OSwgNzcxOTUsIDc3MjAwLCA3NzIwNSwgNzcyMTAsIAotICAgIDc3MjE3LCA3NzIyMiwgNzcyMjksIDc3MjM0LCA3NzI0MSwgNzcyNDYsIDc3MjUxLCA3NzI1NiwgNzcyNjEsIDc3MjY0LCAKLSAgICA3NzI2OCwgNzcyNzIsIDc3Mjc3LCA3NzI4MiwgNzcyODcsIDc3MjkyLCA3NzI5NywgNzczMDIsIDc3MzA3LCA3NzMxMiwgCi0gICAgNzczMTksIDc3MzI0LCAwLCA3NzMzMSwgNzczMzQsIDc3MzM4LCA3NzM0MSwgNzczNDQsIDc3MzQ3LCA3NzM1MCwgNzczNTMsIAotICAgIDc3MzU2LCA3NzM2MCwgNzczNjMsIDAsIDAsIDAsIDAsIDc3MzY3LCA3NzM3NCwgNzczNzksIDc3Mzg1LCA3NzM5MSwgCi0gICAgNzczOTcsIDc3NDAzLCA3NzQwOSwgNzc0MTUsIDc3NDIyLCA3NzQyOSwgNzc0MzYsIDc3NDQzLCA3NzQ1MCwgNzc0NTcsIAotICAgIDc3NDY0LCA3NzQ3MSwgNzc0NzgsIDc3NDg1LCA3NzQ5MiwgNzc0OTgsIDc3NTA0LCA3NzUxMCwgNzc1MTYsIDc3NTIyLCAKLSAgICA3NzUyOCwgNzc1MzUsIDc3NTQxLCA3NzU0OCwgNzc1NTUsIDc3NTYyLCA3NzU2OSwgNzc1NzYsIDAsIDc3NTgzLCA3NzU4NywgCi0gICAgNzc1OTEsIDc3NTk1LCA3NzU5OSwgNzc2MDQsIDc3NjA4LCA3NzYxMiwgNzc2MTcsIDc3NjIyLCA3NzYyNywgNzc2MzIsIAotICAgIDc3NjM3LCA3NzY0MiwgNzc2NDcsIDc3NjUyLCA3NzY1NywgNzc2NjIsIDc3NjY3LCA3NzY3MiwgNzc2NzcsIDc3NjgyLCAKLSAgICA3NzY4NywgNzc2OTIsIDc3Njk3LCA3NzcwMiwgNzc3MDcsIDc3NzExLCA3NzcxNiwgNzc3MjEsIDc3NzI2LCA3NzczMSwgCi0gICAgNzc3MzYsIDc3NzQwLCA3Nzc0NSwgNzc3NDksIDc3NzU0LCA3Nzc1OSwgNzc3NjQsIDc3NzY5LCA3Nzc3NCwgNzc3NzgsIAotICAgIDc3Nzg0LCA3Nzc4OSwgNzc3OTUsIDc3ODAxLCA3NzgwNiwgNzc4MTIsIDc3ODE3LCA3NzgyMywgNzc4MjksIDc3ODM1LCAKLSAgICA3Nzg0MCwgNzc4NDYsIDc3ODUyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3Nzg1OCwgNzc4NjQsIDc3ODcwLCAKLSAgICA3Nzg3NiwgNzc4ODMsIDc3ODg5LCA3Nzg5NSwgNzc5MDEsIDc3OTA3LCA3NzkxMywgNzc5MTgsIDc3OTIzLCA3NzkyOSwgCi0gICAgNzc5MzYsIDAsIDAsIDc3OTQzLCA3Nzk0OCwgNzc5NTIsIDc3OTU2LCA3Nzk2MCwgNzc5NjQsIDc3OTY4LCA3Nzk3MiwgCi0gICAgNzc5NzcsIDc3OTgxLCAwLCAwLCA3Nzk4NiwgNzc5OTIsIDc3OTk4LCA3ODAwNSwgNzgwMTMsIDc4MDE5LCA3ODAyNSwgCi0gICAgNzgwMzEsIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjcsIDc4MDczLCA3ODA3OSwgNzgwODUsIAotICAgIDc4MDkxLCA3ODA5NiwgNzgxMDIsIDc4MTA4LCA3ODExNSwgNzgxMjEsIDc4MTI3LCA3ODEzMywgNzgxNDAsIDc4MTQ3LCAKLSAgICA3ODE1NCwgNzgxNjAsIDc4MTY1LCA3ODE3MCwgNzgxNzYsIDc4MTg0LCA3ODE5MSwgNzgxOTgsIDc4MjA2LCA3ODIxNCwgCi0gICAgNzgyMjEsIDc4MjI4LCA3ODIzNSwgNzgyNDIsIDc4MjQ5LCA3ODI1NiwgNzgyNjMsIDc4MjcwLCA3ODI3NywgNzgyODQsIAotICAgIDc4MjkxLCA3ODI5OCwgNzgzMDUsIDc4MzEyLCA3ODMxOSwgNzgzMjYsIDc4MzMzLCA3ODM0MCwgNzgzNDcsIDc4MzU0LCAKLSAgICA3ODM2MCwgNzgzNjYsIDc4MzczLCA3ODM4MCwgNzgzODcsIDc4Mzk0LCA3ODQwMSwgNzg0MDgsIDc4NDE1LCA3ODQyMiwgCi0gICAgNzg0MjksIDc4NDM2LCA3ODQ0MywgNzg0NTAsIDc4NDU3LCA3ODQ2NCwgNzg0NzEsIDc4NDc4LCA3ODQ4NSwgNzg0OTIsIAotICAgIDc4NDk5LCA3ODUwNiwgNzg1MTMsIDc4NTIwLCA3ODUyNywgNzg1MzQsIDc4NTQwLCA3ODU0NiwgNzg1NTMsIDc4NTU5LCAKLSAgICA3ODU2NCwgNzg1NzAsIDc4NTc1LCA3ODU4MCwgNzg1ODUsIDc4NTkyLCA3ODU5OCwgNzg2MDQsIDc4NjEwLCA3ODYxNiwgCi0gICAgNzg2MjIsIDc4NjI4LCA3ODYzNCwgNzg2NDIsIDc4NjUwLCA3ODY1OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzg2NjYsIDc4NjcyLCA3ODY3OCwgNzg2ODQsIAotICAgIDc4NjkyLCA3ODcwMCwgNzg3MDYsIDc4NzEyLCA3ODcxOSwgNzg3MjYsIDc4NzMzLCA3ODc0MCwgNzg3NDcsIDc4NzU0LCAKLSAgICA3ODc2MSwgNzg3NjgsIDc4Nzc1LCA3ODc4MywgNzg3OTEsIDc4Nzk5LCA3ODgwNywgNzg4MTUsIDc4ODIxLCA3ODgyOSwgCi0gICAgNzg4MzUsIDc4ODQzLCA3ODg1MiwgNzg4NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4ODY2LCA3ODg3MCwgCi0gICAgNzg4NzQsIDc4ODc4LCA3ODg4MiwgNzg4ODYsIDAsIDAsIDc4ODkwLCA3ODg5NCwgNzg4OTgsIDc4OTAyLCA3ODkwNiwgCi0gICAgNzg5MTAsIDAsIDAsIDc4OTE0LCA3ODkxOCwgNzg5MjIsIDc4OTI2LCA3ODkzMCwgNzg5MzQsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDc4OTM4LCA3ODk0MiwgNzg5NDYsIDc4OTUwLCA3ODk1NCwgNzg5NTgsIDc4OTYyLCAwLCA3ODk2NiwgCi0gICAgNzg5NzAsIDc4OTc0LCA3ODk3OCwgNzg5ODIsIDc4OTg2LCA3ODk5MCwgMCwgNzg5OTQsIDc5MDAxLCA3OTAwNywgNzkwMTMsIAotICAgIDc5MDE5LCA3OTAyNiwgNzkwMzMsIDc5MDQyLCA3OTA1MywgNzkwNjMsIDc5MDcyLCA3OTA4MCwgNzkwODgsIDc5MDk2LCAKLSAgICA3OTEwMiwgNzkxMTAsIDc5MTE3LCA3OTEyNCwgNzkxMzMsIDc5MTQ0LCA3OTE1MiwgNzkxNjIsIDc5MTY4LCA3OTE3OCwgCi0gICAgNzkxODcsIDc5MTkyLCA3OTIwMCwgNzkyMDksIDc5MjE0LCA3OTIyMywgNzkyMzAsIDc5MjQwLCA3OTI1MiwgNzkyNTcsIAotICAgIDc5MjY0LCA3OTI3MSwgNzkyNzYsIDc5Mjg2LCA3OTI5NiwgNzkzMDYsIDc5MzE2LCA3OTMzMSwgNzkzNDQsIDc5MzU1LCAKLSAgICA3OTM2MywgNzkzNjgsIDc5Mzc5LCA3OTM4OCwgNzkzOTUsIDc5NDAyLCA3OTQwOCwgNzk0MTQsIDc5NDE5LCA3OTQyNiwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk0MzIsIDc5NDM2LCA3OTQ0MCwgNzk0NDQsIDc5NDQ4LCA3OTQ1MiwgCi0gICAgNzk0NTcsIDc5NDYyLCA3OTQ2NiwgNzk0NzEsIDc5NDc2LCA3OTQ4MSwgNzk0ODYsIDc5NDkxLCA3OTQ5NSwgNzk1MDAsIAotICAgIDc5NTA1LCA3OTUxMCwgNzk1MTUsIDc5NTIwLCA3OTUyNSwgNzk1MzAsIDc5NTM1LCA3OTU0MCwgNzk1NDUsIDc5NTUwLCAKLSAgICA3OTU1NCwgNzk1NTksIDc5NTY0LCA3OTU2OSwgNzk1NzQsIDc5NTc5LCA3OTU4NCwgNzk1ODksIDc5NTk0LCA3OTU5OSwgCi0gICAgNzk2MDQsIDc5NjA5LCA3OTYxNCwgNzk2MTksIDc5NjI0LCA3OTYyOSwgNzk2MzQsIDc5NjM5LCA3OTY0NCwgNzk2NDksIAotICAgIDc5NjUzLCA3OTY1OCwgNzk2NjMsIDc5NjY4LCA3OTY3MywgNzk2NzgsIDc5NjgzLCA3OTY4OCwgNzk2OTMsIDc5Njk4LCAKLSAgICA3OTcwMywgNzk3MDgsIDc5NzEzLCA3OTcxOCwgNzk3MjMsIDc5NzI4LCA3OTczMywgNzk3MzgsIDc5NzQzLCA3OTc0OCwgCi0gICAgNzk3NTMsIDc5NzU4LCA3OTc2MywgNzk3NjgsIDc5NzczLCA3OTc3OCwgNzk3ODMsIDc5Nzg4LCA3OTc5MywgNzk3OTgsIAotICAgIDc5ODAzLCA3OTgwOCwgNzk4MTMsIDc5ODE4LCA3OTgyMiwgNzk4MjksIDc5ODM2LCA3OTg0MywgNzk4NTAsIDc5ODU2LCAKLSAgICA3OTg2MywgNzk4NzAsIDc5ODc3LCA3OTg4NCwgNzk4OTEsIDc5ODk4LCA3OTkwNSwgNzk5MTIsIDc5OTE5LCA3OTkyNiwgCi0gICAgNzk5MzIsIDc5OTM5LCA3OTk0NiwgNzk5NTMsIDc5OTYwLCA3OTk2NywgNzk5NzQsIDc5OTgxLCA3OTk4OCwgNzk5OTUsIAotICAgIDgwMDAyLCA4MDAwOSwgODAwMTgsIDgwMDI3LCA4MDAzNiwgODAwNDUsIDgwMDU0LCA4MDA2MywgODAwNzIsIDgwMDgxLCAKLSAgICA4MDA4OSwgODAwOTcsIDgwMTA1LCA4MDExMywgODAxMjEsIDgwMTI5LCA4MDEzNywgODAxNDUsIDgwMTUxLCA4MDE1OSwgMCwgCi0gICAgMCwgODAxNjcsIDgwMTc0LCA4MDE4MCwgODAxODYsIDgwMTkyLCA4MDE5OCwgODAyMDQsIDgwMjEwLCA4MDIxNywgODAyMjMsIAorICAgIDAsIDAsIDc1Nzk4LCA3NTgwNSwgNzU4MTIsIDc1ODE4LCA3NTgyNiwgNzU4MzQsIDc1ODQyLCA3NTg1MCwgNzU4NTgsIAorICAgIDc1ODY2LCA3NTg3MiwgNzU4NzgsIDc1ODg1LCA3NTg5MSwgNzU4OTcsIDc1OTAzLCA3NTkxMCwgNzU5MTcsIDc1OTI0LCAKKyAgICA3NTkzMSwgNzU5MzgsIDc1OTQ1LCA3NTk1MiwgNzU5NTksIDc1OTY2LCA3NTk3MywgNzU5ODAsIDc1OTg3LCA3NTk5NCwgCisgICAgNzYwMDEsIDc2MDA3LCA3NjAxNCwgNzYwMjEsIDc2MDI4LCA3NjAzNSwgNzYwNDIsIDc2MDQ5LCA3NjA1NiwgNzYwNjMsIAorICAgIDc2MDcwLCA3NjA3NywgNzYwODQsIDc2MDkxLCA3NjA5OCwgNzYxMDUsIDc2MTEyLCA3NjExOSwgNzYxMjYsIDc2MTMzLCAKKyAgICA3NjE0MSwgNzYxNDksIDc2MTU3LCA3NjE2NSwgMCwgMCwgMCwgMCwgNzYxNzMsIDc2MTgxLCA3NjE4OSwgNzYxOTcsIAorICAgIDc2MjA1LCA3NjIxMywgNzYyMjEsIDc2MjI3LCA3NjIzMywgNzYyMzksIDAsIDAsIDAsIDAsIDAsIDAsIDc2MjQ1LCA3NjI0OSwgCisgICAgNzYyNTQsIDc2MjU5LCA3NjI2NCwgNzYyNjksIDc2Mjc0LCA3NjI3OSwgNzYyODQsIDc2Mjg5LCA3NjI5NCwgNzYyOTksIAorICAgIDc2MzAzLCA3NjMwNywgNzYzMTIsIDc2MzE3LCA3NjMyMSwgNzYzMjYsIDc2MzMxLCA3NjMzNiwgNzYzNDEsIDc2MzQ2LCAKKyAgICA3NjM1MSwgNzYzNTYsIDc2MzYwLCA3NjM2NSwgNzYzNjksIDc2Mzc0LCA3NjM3OSwgNzYzODMsIDc2Mzg3LCA3NjM5MSwgCisgICAgNzYzOTUsIDc2Mzk5LCA3NjQwMywgNzY0MDgsIDc2NDEzLCA3NjQxOCwgNzY0MjMsIDc2NDI4LCA3NjQzNSwgNzY0NDEsIAorICAgIDc2NDQ2LCA3NjQ1MSwgNzY0NTYsIDc2NDYxLCA3NjQ2NywgNzY0NzQsIDc2NDgwLCA3NjQ4NywgNzY0OTQsIDc2NTAxLCAKKyAgICA3NjUwNiwgNzY1MTMsIDc2NTE5LCA3NjUyNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzY1MzAsIDc2NTM1LCA3NjU0MCwgCisgICAgNzY1NDQsIDc2NTQ5LCA3NjU1MywgNzY1NTgsIDc2NTYyLCA3NjU2NywgNzY1NzIsIDc2NTc4LCA3NjU4MywgNzY1ODksIAorICAgIDc2NTkzLCA3NjU5OCwgNzY2MDMsIDc2NjA3LCA3NjYxMiwgNzY2MTcsIDc2NjIxLCA3NjYyNiwgNzY2MzEsIDc2NjM2LCAKKyAgICA3NjY0MSwgNzY2NDYsIDc2NjUxLCA3NjY1NiwgNzY2NjEsIDc2NjY2LCA3NjY3MSwgNzY2NzYsIDc2NjgxLCA3NjY4NiwgCisgICAgNzY2OTEsIDc2Njk2LCA3NjcwMSwgNzY3MDYsIDc2NzExLCA3NjcxNSwgNzY3MTksIDc2NzI0LCA3NjcyOSwgNzY3MzQsIAorICAgIDc2NzM4LCA3Njc0MiwgNzY3NDcsIDc2NzUxLCA3Njc1NiwgNzY3NjEsIDc2NzY2LCA3Njc3MSwgNzY3NzUsIDc2NzgwLCAKKyAgICA3Njc4NiwgNzY3OTIsIDc2Nzk3LCA3NjgwMywgNzY4MDgsIDc2ODE0LCA3NjgyMCwgNzY4MjcsIDc2ODMzLCA3Njg0MCwgCisgICAgNzY4NDUsIDc2ODUxLCA3Njg1NywgNzY4NjIsIDc2ODY4LCA3Njg3NCwgNzY4NzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDc2ODg0LCA3Njg4OCwgNzY4OTMsIDc2ODk4LCA3NjkwMiwgNzY5MDYsIDc2OTEwLCA3NjkxNCwgNzY5MTgsIDc2OTIyLCAKKyAgICA3NjkyNywgNzY5MzEsIDAsIDAsIDAsIDAsIDAsIDAsIDc2OTM2LCA3Njk0MSwgNzY5NDUsIDc2OTQ5LCA3Njk1MywgNzY5NTcsIAorICAgIDc2OTYxLCA3Njk2NSwgNzY5NzAsIDc2OTc0LCA3Njk3OSwgNzY5ODMsIDc2OTg3LCA3Njk5MSwgNzY5OTUsIDc2OTk5LCAKKyAgICA3NzAwNCwgNzcwMDksIDc3MDE0LCA3NzAyMCwgNzcwMjYsIDc3MDMzLCA3NzAzOCwgNzcwNDMsIDc3MDQ5LCA3NzA1MywgCisgICAgNzcwNTgsIDc3MDYxLCA3NzA2NCwgNzcwNjgsIDAsIDAsIDc3MDczLCA3NzA4MCwgNzcwODYsIDc3MDkyLCA3NzA5OCwgCisgICAgNzcxMDQsIDc3MTEwLCA3NzExNiwgNzcxMjMsIDc3MTI5LCA3NzEzNiwgNzcxNDIsIDc3MTQ5LCA3NzE1NiwgNzcxNjMsIAorICAgIDc3MTcwLCA3NzE3NywgNzcxODQsIDc3MTkxLCA3NzE5OCwgNzcyMDUsIDc3MjExLCA3NzIxNywgNzcyMjQsIDc3MjMwLCAKKyAgICA3NzIzNywgNzcyNDQsIDc3MjUxLCA3NzI1NywgNzcyNjMsIDc3MjcwLCA3NzI3NywgNzcyODMsIDc3MjkwLCA3NzI5NywgCisgICAgNzczMDMsIDc3MzEwLCA3NzMxNiwgNzczMjMsIDc3MzMwLCA3NzMzNiwgNzczNDIsIDc3MzQ5LCA3NzM1NSwgNzczNjIsIAorICAgIDc3MzY5LCA3NzM3OCwgNzczODUsIDc3MzkyLCA3NzM5NiwgNzc0MDEsIDc3NDA2LCA3NzQxMSwgNzc0MTYsIDc3NDIwLCAKKyAgICA3NzQyNCwgNzc0MjksIDc3NDMzLCA3NzQzOCwgNzc0NDMsIDc3NDQ4LCA3NzQ1MywgNzc0NTgsIDc3NDYyLCA3NzQ2NiwgCisgICAgNzc0NzEsIDc3NDc1LCA3NzQ4MCwgNzc0ODUsIDc3NDkwLCA3NzQ5NSwgNzc0OTksIDc3NTA0LCA3NzUwOSwgNzc1MTQsIAorICAgIDc3NTIwLCA3NzUyNSwgNzc1MzEsIDc3NTM3LCA3NzU0MywgNzc1NDksIDc3NTU1LCA3NzU2MCwgNzc1NjYsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc3NTcwLCA3NzU3NSwgNzc1NzksIDc3NTgzLCA3NzU4NywgNzc1OTEsIDc3NTk1LCAKKyAgICA3NzU5OSwgNzc2MDMsIDc3NjA3LCA3NzYxMSwgNzc2MTUsIDc3NjE5LCA3NzYyMywgNzc2MjcsIDc3NjMxLCA3NzYzNSwgCisgICAgNzc2MzksIDc3NjQzLCA3NzY0NywgNzc2NTEsIDc3NjU1LCA3NzY1OSwgNzc2NjMsIDc3NjY3LCA3NzY3MSwgNzc2NzUsIAorICAgIDc3Njc5LCA3NzY4MywgNzc2ODcsIDAsIDAsIDAsIDc3NjkxLCA3NzY5NiwgNzc3MDEsIDc3NzA2LCA3NzcxMSwgNzc3MTUsIAorICAgIDc3NzIyLCA3NzcyNiwgNzc3MzEsIDc3NzM1LCA3Nzc0MiwgNzc3NDksIDc3NzU4LCA3Nzc2MiwgNzc3NjcsIDc3NzcxLCAKKyAgICA3Nzc3NSwgNzc3ODIsIDc3Nzg5LCA3Nzc5NCwgNzc4MDEsIDc3ODA2LCA3NzgxMSwgNzc4MTgsIDc3ODIzLCA3NzgzMCwgCisgICAgNzc4MzcsIDc3ODQyLCA3Nzg0NywgNzc4NTQsIDc3ODU5LCA3Nzg2NiwgNzc4NzMsIDc3ODc4LCA3Nzg4NSwgNzc4OTAsIAorICAgIDc3ODk3LCA3NzkwMSwgNzc5MDUsIDc3OTEyLCA3NzkxNywgNzc5MjQsIDc3OTI4LCA3NzkzMiwgNzc5MzcsIDc3OTQ0LCAKKyAgICA3Nzk0OCwgNzc5NTMsIDc3OTYwLCA3Nzk2NywgNzc5NzIsIDc3OTc2LCA3Nzk4MywgNzc5ODksIDc3OTk1LCA3ODAwMSwgCisgICAgNzgwMDksIDc4MDE1LCA3ODAyMywgNzgwMjksIDc4MDM3LCA3ODA0MywgNzgwNDksIDc4MDU1LCA3ODA2MSwgNzgwNjUsIAorICAgIDc4MDcwLCA3ODA3NSwgNzgwODEsIDc4MDg3LCA3ODA5MywgNzgwOTksIDc4MTA1LCA3ODExMSwgNzgxMTcsIDc4MTIzLCAKKyAgICA3ODEzMSwgNzgxMzcsIDAsIDc4MTQ1LCA3ODE0OSwgNzgxNTQsIDc4MTU4LCA3ODE2MiwgNzgxNjYsIDc4MTcwLCA3ODE3NCwgCisgICAgNzgxNzgsIDc4MTgzLCA3ODE4NywgMCwgMCwgMCwgMCwgNzgxOTIsIDc4MjAwLCA3ODIwNiwgNzgyMTIsIDc4MjE4LCAKKyAgICA3ODIyNCwgNzgyMzAsIDc4MjM2LCA3ODI0MiwgNzgyNDksIDc4MjU2LCA3ODI2MywgNzgyNzAsIDc4Mjc3LCA3ODI4NCwgCisgICAgNzgyOTEsIDc4Mjk4LCA3ODMwNSwgNzgzMTIsIDc4MzE5LCA3ODMyNSwgNzgzMzEsIDc4MzM3LCA3ODM0MywgNzgzNDksIAorICAgIDc4MzU1LCA3ODM2MiwgNzgzNjgsIDc4Mzc1LCA3ODM4MiwgNzgzODksIDc4Mzk2LCA3ODQwMywgMCwgNzg0MTAsIDc4NDE0LCAKKyAgICA3ODQxOCwgNzg0MjIsIDc4NDI2LCA3ODQzMSwgNzg0MzUsIDc4NDM5LCA3ODQ0NCwgNzg0NDksIDc4NDU0LCA3ODQ1OSwgCisgICAgNzg0NjQsIDc4NDY5LCA3ODQ3NCwgNzg0NzksIDc4NDg0LCA3ODQ4OSwgNzg0OTQsIDc4NDk5LCA3ODUwNCwgNzg1MDksIAorICAgIDc4NTE0LCA3ODUxOSwgNzg1MjQsIDc4NTI4LCA3ODUzMywgNzg1MzcsIDc4NTQyLCA3ODU0NywgNzg1NTIsIDc4NTU3LCAKKyAgICA3ODU2MiwgNzg1NjYsIDc4NTcxLCA3ODU3NSwgNzg1ODAsIDc4NTg0LCA3ODU4OSwgNzg1OTQsIDc4NTk5LCA3ODYwMywgCisgICAgNzg2MDksIDc4NjE0LCA3ODYyMCwgNzg2MjYsIDc4NjMxLCA3ODYzNywgNzg2NDIsIDc4NjQ4LCA3ODY1NCwgNzg2NjAsIAorICAgIDc4NjY1LCA3ODY3MSwgNzg2NzYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDc4NjgyLCA3ODY4OCwgNzg2OTQsIAorICAgIDc4NzAwLCA3ODcwNywgNzg3MTMsIDc4NzE5LCA3ODcyNSwgNzg3MzEsIDc4NzM3LCA3ODc0MiwgNzg3NDcsIDc4NzUzLCAKKyAgICA3ODc2MCwgMCwgMCwgNzg3NjcsIDc4NzcyLCA3ODc3NiwgNzg3ODAsIDc4Nzg0LCA3ODc4OCwgNzg3OTIsIDc4Nzk2LCAKKyAgICA3ODgwMSwgNzg4MDUsIDAsIDAsIDc4ODEwLCA3ODgxNiwgNzg4MjIsIDc4ODI5LCA3ODgzNywgNzg4NDMsIDc4ODQ5LCAKKyAgICA3ODg1NSwgNzg4NjEsIDc4ODY3LCA3ODg3MywgNzg4NzksIDc4ODg1LCA3ODg5MSwgNzg4OTcsIDc4OTAzLCA3ODkwOCwgCisgICAgNzg5MTQsIDc4OTE5LCA3ODkyNSwgNzg5MzEsIDc4OTM4LCA3ODk0NCwgNzg5NTAsIDc4OTU2LCA3ODk2MywgNzg5NzAsIAorICAgIDc4OTc3LCA3ODk4MywgNzg5ODgsIDc4OTkzLCA3ODk5OSwgNzkwMDcsIDc5MDE0LCA3OTAyMSwgNzkwMjksIDc5MDM3LCAKKyAgICA3OTA0NCwgNzkwNTEsIDc5MDU4LCA3OTA2NSwgNzkwNzIsIDc5MDc5LCA3OTA4NiwgNzkwOTMsIDc5MTAwLCA3OTEwNywgCisgICAgNzkxMTQsIDc5MTIxLCA3OTEyOCwgNzkxMzUsIDc5MTQyLCA3OTE0OSwgNzkxNTYsIDc5MTYzLCA3OTE3MCwgNzkxNzcsIAorICAgIDc5MTgzLCA3OTE4OSwgNzkxOTYsIDc5MjAzLCA3OTIxMCwgNzkyMTcsIDc5MjI0LCA3OTIzMSwgNzkyMzgsIDc5MjQ1LCAKKyAgICA3OTI1MiwgNzkyNTksIDc5MjY2LCA3OTI3MywgNzkyODAsIDc5Mjg3LCA3OTI5NCwgNzkzMDEsIDc5MzA4LCA3OTMxNSwgCisgICAgNzkzMjIsIDc5MzI5LCA3OTMzNiwgNzkzNDMsIDc5MzUwLCA3OTM1NywgNzkzNjMsIDc5MzY5LCA3OTM3NiwgNzkzODIsIAorICAgIDc5Mzg3LCA3OTM5MywgNzkzOTgsIDc5NDAzLCA3OTQwOCwgNzk0MTUsIDc5NDIxLCA3OTQyNywgNzk0MzMsIDc5NDM5LCAKKyAgICA3OTQ0NSwgNzk0NTEsIDc5NDU3LCA3OTQ2NSwgNzk0NzMsIDc5NDgxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA3OTQ4OSwgNzk0OTUsIDc5NTAxLCA3OTUwNywgCisgICAgNzk1MTUsIDc5NTIzLCA3OTUyOSwgNzk1MzUsIDc5NTQyLCA3OTU0OSwgNzk1NTYsIDc5NTYzLCA3OTU3MCwgNzk1NzcsIAorICAgIDc5NTg0LCA3OTU5MSwgNzk1OTgsIDc5NjA2LCA3OTYxNCwgNzk2MjIsIDc5NjMwLCA3OTYzOCwgNzk2NDQsIDc5NjUyLCAKKyAgICA3OTY1OCwgNzk2NjYsIDc5Njc1LCA3OTY4MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNzk2ODksIDc5NjkzLCAKKyAgICA3OTY5NywgNzk3MDEsIDc5NzA1LCA3OTcwOSwgMCwgMCwgNzk3MTMsIDc5NzE3LCA3OTcyMSwgNzk3MjUsIDc5NzI5LCAKKyAgICA3OTczMywgMCwgMCwgNzk3MzcsIDc5NzQxLCA3OTc0NSwgNzk3NDksIDc5NzUzLCA3OTc1NywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNzk3NjEsIDc5NzY1LCA3OTc2OSwgNzk3NzMsIDc5Nzc3LCA3OTc4MSwgNzk3ODUsIDAsIDc5Nzg5LCAKKyAgICA3OTc5MywgNzk3OTcsIDc5ODAxLCA3OTgwNSwgNzk4MDksIDc5ODEzLCAwLCA3OTgxNywgNzk4MjQsIDc5ODMwLCA3OTgzNiwgCisgICAgNzk4NDIsIDc5ODQ5LCA3OTg1NiwgNzk4NjUsIDc5ODc3LCA3OTg4NywgNzk4OTYsIDc5OTA0LCA3OTkxMiwgNzk5MjAsIAorICAgIDc5OTI2LCA3OTkzNCwgNzk5NDEsIDc5OTQ4LCA3OTk1NywgNzk5NjgsIDc5OTc2LCA3OTk4NiwgNzk5OTIsIDgwMDAyLCAKKyAgICA4MDAxMSwgODAwMTYsIDgwMDI0LCA4MDAzMywgODAwMzgsIDgwMDQ3LCA4MDA1NCwgODAwNjQsIDgwMDc2LCA4MDA4MSwgCisgICAgODAwODgsIDgwMDk1LCA4MDEwMCwgODAxMTAsIDgwMTIwLCA4MDEzMCwgODAxNDAsIDgwMTU1LCA4MDE2OCwgODAxNzksIAorICAgIDgwMTg3LCA4MDE5MiwgODAyMDQsIDgwMjEzLCA4MDIyMCwgODAyMjcsIDgwMjMzLCA4MDIzOSwgODAyNDQsIDgwMjUxLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MDI1NywgODAyNjEsIDgwMjY1LCA4MDI2OSwgODAyNzMsIDgwMjc3LCAKKyAgICA4MDI4MiwgODAyODcsIDgwMjkxLCA4MDI5NiwgODAzMDEsIDgwMzA2LCA4MDMxMSwgODAzMTYsIDgwMzIwLCA4MDMyNSwgCisgICAgODAzMzAsIDgwMzM1LCA4MDM0MCwgODAzNDUsIDgwMzQ5LCA4MDM1NCwgODAzNTksIDgwMzY0LCA4MDM2OSwgODAzNzQsIAorICAgIDgwMzc4LCA4MDM4MywgODAzODgsIDgwMzkzLCA4MDM5OCwgODA0MDIsIDgwNDA3LCA4MDQxMiwgODA0MTcsIDgwNDIyLCAKKyAgICA4MDQyNywgODA0MzIsIDgwNDM3LCA4MDQ0MiwgODA0NDcsIDgwNDUyLCA4MDQ1NywgODA0NjIsIDgwNDY3LCA4MDQ3MiwgCisgICAgODA0NzcsIDgwNDgyLCA4MDQ4NywgODA0OTIsIDgwNDk3LCA4MDUwMiwgODA1MDcsIDgwNTEyLCA4MDUxNywgODA1MjIsIAorICAgIDgwNTI3LCA4MDUzMiwgODA1MzcsIDgwNTQyLCA4MDU0NywgODA1NTIsIDgwNTU3LCA4MDU2MiwgODA1NjcsIDgwNTcyLCAKKyAgICA4MDU3NywgODA1ODIsIDgwNTg3LCA4MDU5MiwgODA1OTcsIDgwNjAyLCA4MDYwNywgODA2MTIsIDgwNjE3LCA4MDYyMiwgCisgICAgODA2MjcsIDgwNjMyLCA4MDYzNywgODA2NDIsIDgwNjQ2LCA4MDY1MywgODA2NjAsIDgwNjY3LCA4MDY3NCwgODA2ODAsIAorICAgIDgwNjg2LCA4MDY5MywgODA3MDAsIDgwNzA3LCA4MDcxNCwgODA3MjEsIDgwNzI4LCA4MDczNSwgODA3NDIsIDgwNzQ5LCAKKyAgICA4MDc1NSwgODA3NjIsIDgwNzY5LCA4MDc3NiwgODA3ODMsIDgwNzkwLCA4MDc5NywgODA4MDQsIDgwODExLCA4MDgxOCwgCisgICAgODA4MjUsIDgwODMyLCA4MDg0MSwgODA4NTAsIDgwODU5LCA4MDg2OCwgODA4NzcsIDgwODg2LCA4MDg5NSwgODA5MDQsIAorICAgIDgwOTEyLCA4MDkyMCwgODA5MjgsIDgwOTM2LCA4MDk0NCwgODA5NTIsIDgwOTYwLCA4MDk2OCwgODA5NzQsIDgwOTgyLCAwLCAKKyAgICAwLCA4MDk5MCwgODA5OTcsIDgxMDAzLCA4MTAwOSwgODEwMTUsIDgxMDIxLCA4MTAyNywgODEwMzMsIDgxMDQwLCA4MTA0NiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xODMwMCw2MTggKzE5NDE5LDYzNCBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgwMjMwLCA4MDIzNCwgODAyMzgsIDgwMjQyLCAKLSAgICA4MDI0NiwgODAyNTAsIDgwMjU0LCA4MDI1OCwgODAyNjIsIDgwMjY2LCA4MDI3MCwgODAyNzQsIDgwMjc4LCA4MDI4MiwgCi0gICAgODAyODYsIDgwMjkwLCA4MDI5NCwgODAyOTgsIDgwMzAyLCA4MDMwNiwgODAzMTAsIDgwMzE0LCA4MDMxOCwgMCwgMCwgMCwgCi0gICAgMCwgODAzMjIsIDgwMzI2LCA4MDMzMCwgODAzMzQsIDgwMzM4LCA4MDM0MiwgODAzNDYsIDgwMzUwLCA4MDM1NCwgODAzNTgsIAotICAgIDgwMzYyLCA4MDM2NiwgODAzNzAsIDgwMzc0LCA4MDM3OCwgODAzODIsIDgwMzg2LCA4MDM5MCwgODAzOTQsIDgwMzk4LCAKLSAgICA4MDQwMiwgODA0MDYsIDgwNDEwLCA4MDQxNCwgODA0MTgsIDgwNDIyLCA4MDQyNiwgODA0MzAsIDgwNDM0LCA4MDQzOCwgCi0gICAgODA0NDIsIDgwNDQ2LCA4MDQ1MCwgODA0NTQsIDgwNDU4LCA4MDQ2MiwgODA0NjYsIDgwNDcwLCA4MDQ3NCwgODA0NzgsIAotICAgIDgwNDgyLCA4MDQ4NiwgODA0OTAsIDgwNDk0LCA4MDQ5OCwgODA1MDIsIDgwNTA2LCA4MDUxMCwgODA1MTQsIDAsIDAsIDAsIAotICAgIDAsIDgwNTE4LCA4MDUyMiwgODA1MjYsIDgwNTMwLCA4MDUzNCwgODA1MzgsIDgwNTQyLCA4MDU0NiwgODA1NTAsIDgwNTU0LCAKLSAgICA4MDU1OCwgODA1NjIsIDgwNTY2LCA4MDU3MCwgODA1NzQsIDgwNTc4LCA4MDU4MiwgODA1ODYsIDgwNTkwLCA4MDU5NCwgCi0gICAgODA1OTgsIDgwNjAyLCA4MDYwNiwgODA2MTAsIDgwNjE0LCA4MDYxOCwgODA2MjIsIDgwNjI2LCA4MDYzMCwgODA2MzQsIAotICAgIDgwNjM4LCA4MDY0MiwgODA2NDYsIDgwNjUwLCA4MDY1NCwgODA2NTgsIDgwNjYyLCA4MDY2NiwgODA2NzAsIDgwNjc0LCAKLSAgICA4MDY3OCwgODA2ODIsIDgwNjg2LCA4MDY5MCwgODA2OTQsIDgwNjk4LCA4MDcwMiwgODA3MDYsIDgwNzEwLCA4MDcxNCwgCi0gICAgODA3MTgsIDgwNzIyLCA4MDcyNiwgODA3MzAsIDgwNzM0LCA4MDczOCwgODA3NDIsIDgwNzQ2LCA4MDc1MCwgODA3NTQsIAotICAgIDgwNzU4LCA4MDc2MiwgODA3NjYsIDgwNzcwLCA4MDc3NCwgODA3NzgsIDgwNzgyLCA4MDc4NiwgODA3OTAsIDgwNzk0LCAKLSAgICA4MDc5OCwgODA4MDIsIDgwODA2LCA4MDgxMCwgODA4MTQsIDgwODE4LCA4MDgyMiwgODA4MjYsIDgwODMwLCA4MDgzNCwgCi0gICAgODA4MzgsIDgwODQyLCA4MDg0NiwgODA4NTAsIDgwODU0LCA4MDg1OCwgODA4NjIsIDgwODY2LCA4MDg3MCwgODA4NzQsIAotICAgIDgwODc4LCA4MDg4MiwgODA4ODYsIDgwODkwLCA4MDg5NCwgODA4OTgsIDgwOTAyLCA4MDkwNiwgODA5MTAsIDgwOTE0LCAKLSAgICA4MDkxOCwgODA5MjIsIDgwOTI2LCA4MDkzMCwgODA5MzQsIDgwOTM4LCA4MDk0MiwgODA5NDYsIDgwOTUwLCA4MDk1NCwgCi0gICAgODA5NTgsIDgwOTYyLCA4MDk2NiwgODA5NzAsIDgwOTc0LCA4MDk3OCwgODA5ODIsIDgwOTg2LCA4MDk5MCwgODA5OTQsIAotICAgIDgwOTk4LCA4MTAwMiwgODEwMDYsIDgxMDEwLCA4MTAxNCwgODEwMTgsIDgxMDIyLCA4MTAyNiwgODEwMzAsIDgxMDM0LCAKLSAgICA4MTAzOCwgODEwNDIsIDgxMDQ2LCA4MTA1MCwgODEwNTQsIDgxMDU4LCA4MTA2MiwgODEwNjYsIDgxMDcwLCA4MTA3NCwgCi0gICAgODEwNzgsIDgxMDgyLCA4MTA4NiwgODEwOTAsIDgxMDk0LCA4MTA5OCwgODExMDIsIDgxMTA2LCA4MTExMCwgODExMTQsIAotICAgIDgxMTE4LCA4MTEyMiwgODExMjYsIDgxMTMwLCA4MTEzNCwgODExMzgsIDgxMTQyLCA4MTE0NiwgODExNTAsIDgxMTU0LCAKLSAgICA4MTE1OCwgODExNjIsIDgxMTY2LCA4MTE3MCwgODExNzQsIDgxMTc4LCA4MTE4MiwgODExODYsIDgxMTkwLCA4MTE5NCwgCi0gICAgODExOTgsIDgxMjAyLCA4MTIwNiwgODEyMTAsIDgxMjE0LCA4MTIxOCwgODEyMjIsIDgxMjI2LCA4MTIzMCwgODEyMzQsIAotICAgIDgxMjM4LCA4MTI0MiwgODEyNDYsIDgxMjUwLCA4MTI1NCwgODEyNTgsIDgxMjYyLCA4MTI2NiwgODEyNzAsIDgxMjc0LCAKLSAgICA4MTI3OCwgODEyODIsIDgxMjg2LCA4MTI5MCwgODEyOTQsIDgxMjk4LCA4MTMwMiwgODEzMDYsIDgxMzEwLCA4MTMxNCwgCi0gICAgODEzMTgsIDgxMzIyLCA4MTMyNiwgODEzMzAsIDgxMzM0LCA4MTMzOCwgODEzNDIsIDgxMzQ2LCA4MTM1MCwgODEzNTQsIAotICAgIDgxMzU4LCA4MTM2MiwgODEzNjYsIDgxMzcwLCA4MTM3NCwgODEzNzgsIDgxMzgyLCA4MTM4NiwgODEzOTAsIDgxMzk0LCAKLSAgICA4MTM5OCwgODE0MDIsIDgxNDA2LCA4MTQxMCwgODE0MTQsIDgxNDE4LCA4MTQyMiwgODE0MjYsIDgxNDMwLCA4MTQzNCwgCi0gICAgODE0MzgsIDgxNDQyLCA4MTQ0NiwgODE0NTAsIDgxNDU0LCA4MTQ1OCwgODE0NjIsIDgxNDY2LCA4MTQ3MCwgODE0NzQsIAotICAgIDgxNDc4LCA4MTQ4MiwgODE0ODYsIDgxNDkwLCA4MTQ5NCwgODE0OTgsIDgxNTAyLCA4MTUwNiwgODE1MTAsIDgxNTE0LCAKLSAgICA4MTUxOCwgODE1MjIsIDgxNTI2LCA4MTUzMCwgODE1MzQsIDgxNTM4LCA4MTU0MiwgODE1NDYsIDgxNTUwLCA4MTU1NCwgCi0gICAgODE1NTgsIDgxNTYyLCA4MTU2NiwgODE1NzAsIDgxNTc0LCA4MTU3OCwgODE1ODIsIDgxNTg2LCA4MTU5MCwgODE1OTQsIAotICAgIDgxNTk4LCA4MTYwMiwgODE2MDYsIDgxNjEwLCA4MTYxNCwgODE2MTgsIDgxNjIyLCA4MTYyNiwgODE2MzAsIDgxNjM0LCAKLSAgICA4MTYzOCwgODE2NDIsIDgxNjQ2LCA4MTY1MCwgODE2NTQsIDgxNjU4LCA4MTY2MiwgODE2NjYsIDgxNjcwLCA4MTY3NCwgCi0gICAgODE2NzgsIDgxNjgyLCA4MTY4NiwgODE2OTAsIDgxNjk0LCA4MTY5OCwgODE3MDIsIDgxNzA2LCA4MTcxMCwgODE3MTQsIAotICAgIDgxNzE4LCA4MTcyMiwgODE3MjYsIDgxNzMwLCA4MTczNCwgODE3MzgsIDgxNzQyLCA4MTc0NiwgODE3NTAsIDgxNzU0LCAKLSAgICA4MTc1OCwgODE3NjIsIDgxNzY2LCA4MTc3MCwgODE3NzQsIDgxNzc4LCA4MTc4MiwgODE3ODYsIDgxNzkwLCA4MTc5NCwgCi0gICAgODE3OTgsIDgxODAyLCA4MTgwNiwgODE4MTAsIDgxODE0LCA4MTgxOCwgODE4MjIsIDgxODI2LCA4MTgzMCwgODE4MzQsIAotICAgIDgxODM4LCA4MTg0MiwgODE4NDYsIDgxODUwLCA4MTg1NCwgODE4NTgsIDgxODYyLCA4MTg2NiwgODE4NzAsIDgxODc0LCAKLSAgICA4MTg3OCwgODE4ODIsIDgxODg2LCA4MTg5MCwgODE4OTQsIDgxODk4LCA4MTkwMiwgODE5MDYsIDgxOTEwLCA4MTkxNCwgCi0gICAgODE5MTgsIDgxOTIyLCA4MTkyNiwgODE5MzAsIDgxOTM0LCA4MTkzOCwgODE5NDIsIDgxOTQ2LCA4MTk1MCwgODE5NTQsIAotICAgIDgxOTU4LCA4MTk2MiwgODE5NjYsIDgxOTcwLCA4MTk3NCwgODE5NzgsIDAsIDAsIDgxOTgyLCA4MTk4NiwgODE5OTAsIAotICAgIDgxOTk0LCA4MTk5OCwgODIwMDIsIDgyMDA2LCA4MjAxMCwgODIwMTQsIDgyMDE4LCA4MjAyMiwgODIwMjYsIDgyMDMwLCAKLSAgICA4MjAzNCwgODIwMzgsIDgyMDQyLCA4MjA0NiwgODIwNTAsIDgyMDU0LCA4MjA1OCwgODIwNjIsIDgyMDY2LCA4MjA3MCwgCi0gICAgODIwNzQsIDgyMDc4LCA4MjA4MiwgODIwODYsIDgyMDkwLCA4MjA5NCwgODIwOTgsIDgyMTAyLCA4MjEwNiwgODIxMTAsIAotICAgIDgyMTE0LCA4MjExOCwgODIxMjIsIDgyMTI2LCA4MjEzMCwgODIxMzQsIDgyMTM4LCA4MjE0MiwgODIxNDYsIDgyMTUwLCAKLSAgICA4MjE1NCwgODIxNTgsIDgyMTYyLCA4MjE2NiwgODIxNzAsIDgyMTc0LCA4MjE3OCwgODIxODIsIDgyMTg2LCA4MjE5MCwgCi0gICAgODIxOTQsIDgyMTk4LCA4MjIwMiwgODIyMDYsIDgyMjEwLCA4MjIxNCwgODIyMTgsIDgyMjIyLCA4MjIyNiwgODIyMzAsIAotICAgIDgyMjM0LCA4MjIzOCwgODIyNDIsIDgyMjQ2LCA4MjI1MCwgODIyNTQsIDgyMjU4LCA4MjI2MiwgODIyNjYsIDgyMjcwLCAKLSAgICA4MjI3NCwgODIyNzgsIDgyMjgyLCA4MjI4NiwgODIyOTAsIDgyMjk0LCA4MjI5OCwgODIzMDIsIDgyMzA2LCA4MjMxMCwgCi0gICAgODIzMTQsIDgyMzE4LCA4MjMyMiwgODIzMjYsIDgyMzMwLCA4MjMzNCwgODIzMzgsIDgyMzQyLCA4MjM0NiwgODIzNTAsIAotICAgIDgyMzU0LCA4MjM1OCwgODIzNjIsIDgyMzY2LCA4MjM3MCwgODIzNzQsIDgyMzc4LCA4MjM4MiwgODIzODYsIDgyMzkwLCAKLSAgICA4MjM5NCwgODIzOTgsIDgyNDAyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4MjQwNiwgCi0gICAgODI0MTEsIDgyNDE2LCA4MjQyMSwgODI0MjYsIDgyNDMxLCA4MjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgODI0NDQsIDgyNDUxLCA4MjQ1OCwgODI0NjUsIDgyNDcyLCAwLCAwLCAwLCAwLCAwLCA4MjQ3OSwgODI0ODYsIAotICAgIDgyNDkzLCA4MjUwMywgODI1MDksIDgyNTE1LCA4MjUyMSwgODI1MjcsIDgyNTMzLCA4MjUzOSwgODI1NDYsIDgyNTUyLCAKLSAgICA4MjU1OCwgODI1NjQsIDgyNTczLCA4MjU4MiwgODI1OTQsIDgyNjA2LCA4MjYxMiwgODI2MTgsIDgyNjI0LCA4MjYzMSwgCi0gICAgODI2MzgsIDgyNjQ1LCA4MjY1MiwgODI2NTksIDAsIDgyNjY2LCA4MjY3MywgODI2ODAsIDgyNjg4LCA4MjY5NSwgMCwgCi0gICAgODI3MDIsIDAsIDgyNzA5LCA4MjcxNiwgMCwgODI3MjMsIDgyNzMxLCAwLCA4MjczOCwgODI3NDUsIDgyNzUyLCA4Mjc1OSwgCi0gICAgODI3NjYsIDgyNzczLCA4Mjc4MCwgODI3ODcsIDgyNzk0LCA4MjgwMSwgODI4MDYsIDgyODEzLCA4MjgyMCwgODI4MjYsIAotICAgIDgyODMyLCA4MjgzOCwgODI4NDQsIDgyODUwLCA4Mjg1NiwgODI4NjIsIDgyODY4LCA4Mjg3NCwgODI4ODAsIDgyODg2LCAKLSAgICA4Mjg5MiwgODI4OTgsIDgyOTA0LCA4MjkxMCwgODI5MTYsIDgyOTIyLCA4MjkyOCwgODI5MzQsIDgyOTQwLCA4Mjk0NiwgCi0gICAgODI5NTIsIDgyOTU4LCA4Mjk2NCwgODI5NzAsIDgyOTc2LCA4Mjk4MiwgODI5ODgsIDgyOTk0LCA4MzAwMCwgODMwMDYsIAotICAgIDgzMDEyLCA4MzAxOCwgODMwMjQsIDgzMDMwLCA4MzAzNiwgODMwNDIsIDgzMDQ4LCA4MzA1NCwgODMwNjAsIDgzMDY2LCAKLSAgICA4MzA3MiwgODMwNzgsIDgzMDg0LCA4MzA5MCwgODMwOTYsIDgzMTAyLCA4MzEwOCwgODMxMTQsIDgzMTIwLCA4MzEyNiwgCi0gICAgODMxMzIsIDgzMTM4LCA4MzE0NCwgODMxNTAsIDgzMTU2LCA4MzE2MiwgODMxNjgsIDgzMTc0LCA4MzE4MCwgODMxODYsIAotICAgIDgzMTkyLCA4MzE5OCwgODMyMDQsIDgzMjEwLCA4MzIxNiwgODMyMjIsIDgzMjI4LCA4MzIzNCwgODMyNDAsIDgzMjQ2LCAKLSAgICA4MzI1MiwgODMyNTgsIDgzMjY0LCA4MzI3MCwgODMyNzYsIDgzMjg0LCA4MzI5MiwgODMyOTgsIDgzMzA0LCA4MzMxMCwgCi0gICAgODMzMTYsIDgzMzI1LCA4MzMzNCwgODMzNDIsIDgzMzUwLCA4MzM1OCwgODMzNjYsIDgzMzc0LCA4MzM4MiwgODMzOTAsIAotICAgIDgzMzk4LCA4MzQwNSwgODM0MTIsIDgzNDIzLCA4MzQzNCwgODM0MzgsIDgzNDQyLCA4MzQ0NywgODM0NTIsIDgzNDU3LCAKLSAgICA4MzQ2MiwgODM0NzAsIDgzNDc4LCA4MzQ4NCwgODM0OTAsIDgzNDk3LCA4MzUwNCwgODM1MTEsIDgzNTE1LCA4MzUyMSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODM1MjcsIDgzNTMzLCA4MzUzOSwgCi0gICAgODM1NDUsIDgzNTUxLCA4MzU1NiwgODM1NjEsIDgzNTY3LCA4MzU3MywgODM1NzksIDgzNTg1LCA4MzU5NCwgODM2MDAsIAotICAgIDgzNjA2LCA4MzYxNCwgODM2MjIsIDgzNjMwLCA4MzYzOCwgODM2NDMsIDgzNjQ4LCA4MzY1MywgODM2NTgsIDgzNjcxLCAKLSAgICA4MzY4NCwgODM2OTUsIDgzNzA2LCA4MzcxOCwgODM3MzAsIDgzNzQyLCA4Mzc1NCwgODM3NjUsIDgzNzc2LCA4Mzc4OCwgCi0gICAgODM4MDAsIDgzODEyLCA4MzgyNCwgODM4MzUsIDgzODQ2LCA4Mzg1NywgODM4NzQsIDgzODkxLCA4MzkwOCwgODM5MTUsIAotICAgIDgzOTIyLCA4MzkyOSwgODM5MzYsIDgzOTQ3LCA4Mzk1OCwgODM5NjksIDgzOTgyLCA4Mzk5MywgODQwMDEsIDg0MDA5LCAKLSAgICA4NDAxOCwgODQwMjYsIDg0MDM2LCA4NDA0NCwgODQwNTIsIDg0MDYwLCA4NDA2OSwgODQwNzcsIDg0MDg3LCA4NDA5NSwgCi0gICAgODQxMDMsIDg0MTExLCA4NDEyMSwgODQxMjksIDg0MTM2LCA4NDE0MywgODQxNTAsIDg0MTU3LCA4NDE2NSwgODQxNzMsIAotICAgIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA2LCA4NDIxNCwgODQyMjIsIDg0MjMwLCA4NDIzOCwgODQyNDYsIDg0MjU1LCAKLSAgICA4NDI2MywgODQyNzEsIDg0Mjc5LCA4NDI4NywgODQyOTUsIDg0MzAzLCA4NDMxMSwgODQzMTksIDg0MzI3LCA4NDMzNSwgCi0gICAgODQzNDQsIDg0MzUyLCA4NDM2MiwgODQzNzAsIDg0Mzc4LCA4NDM4NiwgODQzOTYsIDg0NDA0LCA4NDQxMiwgODQ0MjAsIAotICAgIDg0NDI4LCA4NDQzNywgODQ0NDYsIDg0NDU0LCA4NDQ2NCwgODQ0NzIsIDg0NDgwLCA4NDQ4OCwgODQ0OTcsIDg0NTA1LCAKLSAgICA4NDUxNSwgODQ1MjMsIDg0NTMwLCA4NDUzNywgODQ1NDUsIDg0NTUyLCA4NDU2MSwgODQ1NjgsIDg0NTc2LCA4NDU4NCwgCi0gICAgODQ1OTMsIDg0NjAxLCA4NDYxMSwgODQ2MTksIDg0NjI3LCA4NDYzNSwgODQ2NDUsIDg0NjUzLCA4NDY2MCwgODQ2NjcsIAotICAgIDg0Njc1LCA4NDY4MiwgODQ2OTEsIDg0Njk4LCA4NDcwOCwgODQ3MTgsIDg0NzI5LCA4NDczOCwgODQ3NDcsIDg0NzU2LCAKLSAgICA4NDc2NSwgODQ3NzQsIDg0Nzg0LCA4NDc5NiwgODQ4MDgsIDg0ODE5LCA4NDgzMSwgODQ4NDQsIDg0ODU1LCA4NDg2NCwgCi0gICAgODQ4NzMsIDg0ODgxLCA4NDg5MCwgODQ5MDAsIDg0OTA4LCA4NDkxNywgODQ5MjYsIDg0OTM0LCA4NDk0MywgODQ5NTMsIAotICAgIDg0OTYxLCA4NDk3MCwgODQ5NzksIDg0OTg3LCA4NDk5NiwgODUwMDYsIDg1MDE0LCA4NTAyNCwgODUwMzIsIDg1MDQyLCAKLSAgICA4NTA1MCwgODUwNTgsIDg1MDY3LCA4NTA3NSwgODUwODUsIDg1MDkzLCA4NTEwMSwgODUxMTEsIDg1MTE5LCA4NTEyNiwgCi0gICAgODUxMzMsIDg1MTQyLCA4NTE1MSwgODUxNTksIDg1MTY4LCA4NTE3OCwgODUxODYsIDg1MTk3LCA4NTIwNSwgODUyMTMsIAotICAgIDg1MjIwLCA4NTIyOCwgODUyMzcsIDg1MjQ0LCA4NTI1NSwgODUyNjYsIDg1Mjc4LCA4NTI4OSwgODUzMDEsIDg1MzA5LCAKLSAgICA4NTMxNywgODUzMjYsIDg1MzM0LCA4NTM0MywgODUzNTEsIDg1MzU5LCA4NTM2OCwgODUzNzYsIDg1Mzg1LCA4NTM5MywgCi0gICAgODU0MDAsIDg1NDA3LCA4NTQxNCwgODU0MjEsIDg1NDI5LCA4NTQzNywgODU0NDUsIDg1NDUzLCA4NTQ2MiwgODU0NzAsIAotICAgIDg1NDc4LCA4NTQ4NywgODU0OTUsIDg1NTAzLCA4NTUxMSwgODU1MjAsIDg1NTI4LCA4NTUzNiwgODU1NDQsIDg1NTUyLCAKLSAgICA4NTU2MCwgODU1NjgsIDg1NTc2LCA4NTU4NCwgODU1OTIsIDg1NjAxLCA4NTYwOSwgODU2MTcsIDg1NjI1LCA4NTYzMywgCi0gICAgODU2NDEsIDg1NjUwLCA4NTY1OSwgODU2NjcsIDg1Njc1LCA4NTY4MywgODU2OTIsIDg1NzAwLCA4NTcwOSwgODU3MTYsIAotICAgIDg1NzIzLCA4NTczMSwgODU3MzgsIDg1NzQ2LCA4NTc1NCwgODU3NjMsIDg1NzcxLCA4NTc4MCwgODU3ODgsIDg1Nzk2LCAKLSAgICA4NTgwNiwgODU4MTMsIDg1ODIwLCA4NTgyOCwgODU4MzUsIDg1ODQzLCA4NTg1NCwgODU4NjYsIDg1ODc0LCA4NTg4MywgCi0gICAgODU4OTEsIDg1OTAwLCA4NTkwOCwgODU5MTcsIDg1OTI1LCA4NTkzNCwgODU5NDIsIDg1OTUxLCA4NTk2MCwgODU5NjgsIAotICAgIDg1OTc2LCA4NTk4NCwgODU5OTMsIDg2MDAwLCA4NjAwOCwgODYwMTcsIDg2MDI2LCA4NjAzNSwgODYwNDUsIDg2MDUzLCAKLSAgICA4NjA2MywgODYwNzEsIDg2MDgxLCA4NjA4OSwgODYwOTksIDg2MTA3LCA4NjExNywgODYxMjUsIDg2MTM0LCA4NjE0MSwgCi0gICAgODYxNTAsIDg2MTU3LCA4NjE2NywgODYxNzUsIDg2MTg1LCA4NjE5MywgODYyMDMsIDg2MjExLCA4NjIxOSwgODYyMjcsIAotICAgIDg2MjM2LCA4NjI0NCwgODYyNTMsIDg2MjYyLCA4NjI3MSwgODYyODAsIDg2MjkwLCA4NjI5OCwgODYzMDgsIDg2MzE2LCAKLSAgICA4NjMyNiwgODYzMzQsIDg2MzQ0LCA4NjM1MiwgODYzNjIsIDg2MzcwLCA4NjM3OSwgODYzODYsIDg2Mzk1LCA4NjQwMiwgCi0gICAgODY0MTIsIDg2NDIwLCA4NjQzMCwgODY0MzgsIDg2NDQ4LCA4NjQ1NiwgODY0NjQsIDg2NDcyLCA4NjQ4MSwgODY0ODksIAotICAgIDg2NDk4LCA4NjUwNywgODY1MTYsIDg2NTI1LCA4NjUzMywgODY1NDEsIDg2NTUwLCA4NjU1OCwgODY1NjcsIDg2NTc2LCAKLSAgICA4NjU4NCwgODY1OTIsIDg2NjAwLCA4NjYwOSwgODY2MTcsIDg2NjI1LCA4NjYzNCwgODY2NDIsIDg2NjUwLCA4NjY1OCwgCi0gICAgODY2NjYsIDg2NjcxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NjY3NiwgCi0gICAgODY2ODYsIDg2Njk2LCA4NjcwNiwgODY3MTYsIDg2NzI3LCA4NjczNywgODY3NDcsIDg2NzU4LCA4Njc2NywgODY3NzYsIAotICAgIDg2Nzg1LCA4Njc5NiwgODY4MDYsIDg2ODE2LCA4NjgyOCwgODY4MzgsIDg2ODQ4LCA4Njg1OCwgODY4NjgsIDg2ODc4LCAKLSAgICA4Njg4OCwgODY4OTgsIDg2OTA4LCA4NjkxOCwgODY5MjgsIDg2OTM4LCA4Njk0OSwgODY5NjAsIDg2OTcwLCA4Njk4MCwgCi0gICAgODY5OTIsIDg3MDAzLCA4NzAxNCwgODcwMjQsIDg3MDM0LCA4NzA0NCwgODcwNTQsIDg3MDY0LCA4NzA3NCwgODcwODQsIAotICAgIDg3MDk2LCA4NzEwNiwgODcxMTYsIDg3MTI4LCA4NzEzOSwgODcxNTAsIDg3MTYwLCA4NzE3MCwgODcxODAsIDg3MTkwLCAKLSAgICA4NzIwMiwgODcyMTIsIDg3MjIyLCA4NzIzMywgODcyNDQsIDg3MjU0LCA4NzI2NCwgODcyNzMsIDg3MjgyLCA4NzI5MSwgCi0gICAgODczMDAsIDg3MzA5LCA4NzMxOSwgMCwgMCwgODczMjksIDg3MzM5LCA4NzM0OSwgODczNTksIDg3MzY5LCA4NzM4MSwgCi0gICAgODczOTEsIDg3NDAxLCA4NzQxMywgODc0MjMsIDg3NDM1LCA4NzQ0NCwgODc0NTMsIDg3NDY0LCA4NzQ3NCwgODc0ODYsIAotICAgIDg3NDk3LCA4NzUxMCwgODc1MjAsIDg3NTMyLCA4NzU0MSwgODc1NTIsIDg3NTYzLCA4NzU3NiwgODc1ODYsIDg3NTk2LCAKLSAgICA4NzYwNiwgODc2MTYsIDg3NjI2LCA4NzYzNSwgODc2NDQsIDg3NjUzLCA4NzY2MiwgODc2NzIsIDg3NjgyLCA4NzY5MiwgCi0gICAgODc3MDIsIDg3NzEyLCA4NzcyMiwgODc3MzIsIDg3NzQyLCA4Nzc1MiwgODc3NjIsIDg3NzcyLCA4Nzc4MiwgODc3OTEsIAotICAgIDg3ODAwLCA4NzgwOSwgODc4MTksIDg3ODI5LCA4NzgzOSwgODc4NDksIDg3ODU5LCA4Nzg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgODEwNTMsIDgxMDU3LCA4MTA2MSwgODEwNjUsIAorICAgIDgxMDY5LCA4MTA3MywgODEwNzcsIDgxMDgxLCA4MTA4NSwgODEwODksIDgxMDkzLCA4MTA5NywgODExMDEsIDgxMTA1LCAKKyAgICA4MTEwOSwgODExMTMsIDgxMTE3LCA4MTEyMSwgODExMjUsIDgxMTI5LCA4MTEzMywgODExMzcsIDgxMTQxLCAwLCAwLCAwLCAKKyAgICAwLCA4MTE0NSwgODExNDksIDgxMTUzLCA4MTE1NywgODExNjEsIDgxMTY1LCA4MTE2OSwgODExNzMsIDgxMTc3LCA4MTE4MSwgCisgICAgODExODUsIDgxMTg5LCA4MTE5MywgODExOTcsIDgxMjAxLCA4MTIwNSwgODEyMDksIDgxMjEzLCA4MTIxNywgODEyMjEsIAorICAgIDgxMjI1LCA4MTIyOSwgODEyMzMsIDgxMjM3LCA4MTI0MSwgODEyNDUsIDgxMjQ5LCA4MTI1MywgODEyNTcsIDgxMjYxLCAKKyAgICA4MTI2NSwgODEyNjksIDgxMjczLCA4MTI3NywgODEyODEsIDgxMjg1LCA4MTI4OSwgODEyOTMsIDgxMjk3LCA4MTMwMSwgCisgICAgODEzMDUsIDgxMzA5LCA4MTMxMywgODEzMTcsIDgxMzIxLCA4MTMyNSwgODEzMjksIDgxMzMzLCA4MTMzNywgMCwgMCwgMCwgCisgICAgMCwgODEzNDEsIDgxMzQ1LCA4MTM0OSwgODEzNTMsIDgxMzU3LCA4MTM2MSwgODEzNjUsIDgxMzY5LCA4MTM3MywgODEzNzcsIAorICAgIDgxMzgxLCA4MTM4NSwgODEzODksIDgxMzkzLCA4MTM5NywgODE0MDEsIDgxNDA1LCA4MTQwOSwgODE0MTMsIDgxNDE3LCAKKyAgICA4MTQyMSwgODE0MjUsIDgxNDI5LCA4MTQzMywgODE0MzcsIDgxNDQxLCA4MTQ0NSwgODE0NDksIDgxNDUzLCA4MTQ1NywgCisgICAgODE0NjEsIDgxNDY1LCA4MTQ2OSwgODE0NzMsIDgxNDc3LCA4MTQ4MSwgODE0ODUsIDgxNDg5LCA4MTQ5MywgODE0OTcsIAorICAgIDgxNTAxLCA4MTUwNSwgODE1MDksIDgxNTEzLCA4MTUxNywgODE1MjEsIDgxNTI1LCA4MTUyOSwgODE1MzMsIDgxNTM3LCAKKyAgICA4MTU0MSwgODE1NDUsIDgxNTQ5LCA4MTU1MywgODE1NTcsIDgxNTYxLCA4MTU2NSwgODE1NjksIDgxNTczLCA4MTU3NywgCisgICAgODE1ODEsIDgxNTg1LCA4MTU4OSwgODE1OTMsIDgxNTk3LCA4MTYwMSwgODE2MDUsIDgxNjA5LCA4MTYxMywgODE2MTcsIAorICAgIDgxNjIxLCA4MTYyNSwgODE2MjksIDgxNjMzLCA4MTYzNywgODE2NDEsIDgxNjQ1LCA4MTY0OSwgODE2NTMsIDgxNjU3LCAKKyAgICA4MTY2MSwgODE2NjUsIDgxNjY5LCA4MTY3MywgODE2NzcsIDgxNjgxLCA4MTY4NSwgODE2ODksIDgxNjkzLCA4MTY5NywgCisgICAgODE3MDEsIDgxNzA1LCA4MTcwOSwgODE3MTMsIDgxNzE3LCA4MTcyMSwgODE3MjUsIDgxNzI5LCA4MTczMywgODE3MzcsIAorICAgIDgxNzQxLCA4MTc0NSwgODE3NDksIDgxNzUzLCA4MTc1NywgODE3NjEsIDgxNzY1LCA4MTc2OSwgODE3NzMsIDgxNzc3LCAKKyAgICA4MTc4MSwgODE3ODUsIDgxNzg5LCA4MTc5MywgODE3OTcsIDgxODAxLCA4MTgwNSwgODE4MDksIDgxODEzLCA4MTgxNywgCisgICAgODE4MjEsIDgxODI1LCA4MTgyOSwgODE4MzMsIDgxODM3LCA4MTg0MSwgODE4NDUsIDgxODQ5LCA4MTg1MywgODE4NTcsIAorICAgIDgxODYxLCA4MTg2NSwgODE4NjksIDgxODczLCA4MTg3NywgODE4ODEsIDgxODg1LCA4MTg4OSwgODE4OTMsIDgxODk3LCAKKyAgICA4MTkwMSwgODE5MDUsIDgxOTA5LCA4MTkxMywgODE5MTcsIDgxOTIxLCA4MTkyNSwgODE5MjksIDgxOTMzLCA4MTkzNywgCisgICAgODE5NDEsIDgxOTQ1LCA4MTk0OSwgODE5NTMsIDgxOTU3LCA4MTk2MSwgODE5NjUsIDgxOTY5LCA4MTk3MywgODE5NzcsIAorICAgIDgxOTgxLCA4MTk4NSwgODE5ODksIDgxOTkzLCA4MTk5NywgODIwMDEsIDgyMDA1LCA4MjAwOSwgODIwMTMsIDgyMDE3LCAKKyAgICA4MjAyMSwgODIwMjUsIDgyMDI5LCA4MjAzMywgODIwMzcsIDgyMDQxLCA4MjA0NSwgODIwNDksIDgyMDUzLCA4MjA1NywgCisgICAgODIwNjEsIDgyMDY1LCA4MjA2OSwgODIwNzMsIDgyMDc3LCA4MjA4MSwgODIwODUsIDgyMDg5LCA4MjA5MywgODIwOTcsIAorICAgIDgyMTAxLCA4MjEwNSwgODIxMDksIDgyMTEzLCA4MjExNywgODIxMjEsIDgyMTI1LCA4MjEyOSwgODIxMzMsIDgyMTM3LCAKKyAgICA4MjE0MSwgODIxNDUsIDgyMTQ5LCA4MjE1MywgODIxNTcsIDgyMTYxLCA4MjE2NSwgODIxNjksIDgyMTczLCA4MjE3NywgCisgICAgODIxODEsIDgyMTg1LCA4MjE4OSwgODIxOTMsIDgyMTk3LCA4MjIwMSwgODIyMDUsIDgyMjA5LCA4MjIxMywgODIyMTcsIAorICAgIDgyMjIxLCA4MjIyNSwgODIyMjksIDgyMjMzLCA4MjIzNywgODIyNDEsIDgyMjQ1LCA4MjI0OSwgODIyNTMsIDgyMjU3LCAKKyAgICA4MjI2MSwgODIyNjUsIDgyMjY5LCA4MjI3MywgODIyNzcsIDgyMjgxLCA4MjI4NSwgODIyODksIDgyMjkzLCA4MjI5NywgCisgICAgODIzMDEsIDgyMzA1LCA4MjMwOSwgODIzMTMsIDgyMzE3LCA4MjMyMSwgODIzMjUsIDgyMzI5LCA4MjMzMywgODIzMzcsIAorICAgIDgyMzQxLCA4MjM0NSwgODIzNDksIDgyMzUzLCA4MjM1NywgODIzNjEsIDgyMzY1LCA4MjM2OSwgODIzNzMsIDgyMzc3LCAKKyAgICA4MjM4MSwgODIzODUsIDgyMzg5LCA4MjM5MywgODIzOTcsIDgyNDAxLCA4MjQwNSwgODI0MDksIDgyNDEzLCA4MjQxNywgCisgICAgODI0MjEsIDgyNDI1LCA4MjQyOSwgODI0MzMsIDgyNDM3LCA4MjQ0MSwgODI0NDUsIDgyNDQ5LCA4MjQ1MywgODI0NTcsIAorICAgIDgyNDYxLCA4MjQ2NSwgODI0NjksIDgyNDczLCA4MjQ3NywgODI0ODEsIDgyNDg1LCA4MjQ4OSwgODI0OTMsIDgyNDk3LCAKKyAgICA4MjUwMSwgODI1MDUsIDgyNTA5LCA4MjUxMywgODI1MTcsIDgyNTIxLCA4MjUyNSwgODI1MjksIDgyNTMzLCA4MjUzNywgCisgICAgODI1NDEsIDgyNTQ1LCA4MjU0OSwgODI1NTMsIDgyNTU3LCA4MjU2MSwgODI1NjUsIDgyNTY5LCA4MjU3MywgODI1NzcsIAorICAgIDgyNTgxLCA4MjU4NSwgODI1ODksIDgyNTkzLCA4MjU5NywgODI2MDEsIDgyNjA1LCA4MjYwOSwgODI2MTMsIDgyNjE3LCAKKyAgICA4MjYyMSwgODI2MjUsIDgyNjI5LCA4MjYzMywgODI2MzcsIDgyNjQxLCA4MjY0NSwgODI2NDksIDgyNjUzLCA4MjY1NywgCisgICAgODI2NjEsIDgyNjY1LCA4MjY2OSwgODI2NzMsIDgyNjc3LCA4MjY4MSwgODI2ODUsIDgyNjg5LCA4MjY5MywgODI2OTcsIAorICAgIDgyNzAxLCA4MjcwNSwgODI3MDksIDgyNzEzLCA4MjcxNywgODI3MjEsIDgyNzI1LCA4MjcyOSwgODI3MzMsIDgyNzM3LCAKKyAgICA4Mjc0MSwgODI3NDUsIDgyNzQ5LCA4Mjc1MywgODI3NTcsIDgyNzYxLCA4Mjc2NSwgODI3NjksIDgyNzczLCA4Mjc3NywgCisgICAgODI3ODEsIDgyNzg1LCA4Mjc4OSwgODI3OTMsIDgyNzk3LCA4MjgwMSwgMCwgMCwgODI4MDUsIDgyODA5LCA4MjgxMywgCisgICAgODI4MTcsIDgyODIxLCA4MjgyNSwgODI4MjksIDgyODMzLCA4MjgzNywgODI4NDEsIDgyODQ1LCA4Mjg0OSwgODI4NTMsIAorICAgIDgyODU3LCA4Mjg2MSwgODI4NjUsIDgyODY5LCA4Mjg3MywgODI4NzcsIDgyODgxLCA4Mjg4NSwgODI4ODksIDgyODkzLCAKKyAgICA4Mjg5NywgODI5MDEsIDgyOTA1LCA4MjkwOSwgODI5MTMsIDgyOTE3LCA4MjkyMSwgODI5MjUsIDgyOTI5LCA4MjkzMywgCisgICAgODI5MzcsIDgyOTQxLCA4Mjk0NSwgODI5NDksIDgyOTUzLCA4Mjk1NywgODI5NjEsIDgyOTY1LCA4Mjk2OSwgODI5NzMsIAorICAgIDgyOTc3LCA4Mjk4MSwgODI5ODUsIDgyOTg5LCA4Mjk5MywgODI5OTcsIDgzMDAxLCA4MzAwNSwgODMwMDksIDgzMDEzLCAKKyAgICA4MzAxNywgODMwMjEsIDgzMDI1LCA4MzAyOSwgODMwMzMsIDgzMDM3LCA4MzA0MSwgODMwNDUsIDgzMDQ5LCA4MzA1MywgCisgICAgODMwNTcsIDgzMDYxLCA4MzA2NSwgODMwNjksIDgzMDczLCA4MzA3NywgODMwODEsIDgzMDg1LCA4MzA4OSwgODMwOTMsIAorICAgIDgzMDk3LCA4MzEwMSwgODMxMDUsIDgzMTA5LCA4MzExMywgODMxMTcsIDgzMTIxLCA4MzEyNSwgODMxMjksIDgzMTMzLCAKKyAgICA4MzEzNywgODMxNDEsIDgzMTQ1LCA4MzE0OSwgODMxNTMsIDgzMTU3LCA4MzE2MSwgODMxNjUsIDgzMTY5LCA4MzE3MywgCisgICAgODMxNzcsIDgzMTgxLCA4MzE4NSwgODMxODksIDgzMTkzLCA4MzE5NywgODMyMDEsIDgzMjA1LCA4MzIwOSwgODMyMTMsIAorICAgIDgzMjE3LCA4MzIyMSwgODMyMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDgzMjI5LCAKKyAgICA4MzIzNCwgODMyMzksIDgzMjQ0LCA4MzI0OSwgODMyNTQsIDgzMjYyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA4MzI2NywgODMyNzQsIDgzMjgxLCA4MzI4OCwgODMyOTUsIDAsIDAsIDAsIDAsIDAsIDgzMzAyLCA4MzMwOSwgCisgICAgODMzMTYsIDgzMzI2LCA4MzMzMiwgODMzMzgsIDgzMzQ0LCA4MzM1MCwgODMzNTYsIDgzMzYyLCA4MzM2OSwgODMzNzUsIAorICAgIDgzMzgxLCA4MzM4NywgODMzOTYsIDgzNDA1LCA4MzQxNywgODM0MjksIDgzNDM1LCA4MzQ0MSwgODM0NDcsIDgzNDU0LCAKKyAgICA4MzQ2MSwgODM0NjgsIDgzNDc1LCA4MzQ4MiwgMCwgODM0ODksIDgzNDk2LCA4MzUwMywgODM1MTEsIDgzNTE4LCAwLCAKKyAgICA4MzUyNSwgMCwgODM1MzIsIDgzNTM5LCAwLCA4MzU0NiwgODM1NTQsIDAsIDgzNTYxLCA4MzU2OCwgODM1NzUsIDgzNTgyLCAKKyAgICA4MzU4OSwgODM1OTYsIDgzNjAzLCA4MzYxMCwgODM2MTcsIDgzNjI0LCA4MzYyOSwgODM2MzYsIDgzNjQzLCA4MzY0OSwgCisgICAgODM2NTUsIDgzNjYxLCA4MzY2NywgODM2NzMsIDgzNjc5LCA4MzY4NSwgODM2OTEsIDgzNjk3LCA4MzcwMywgODM3MDksIAorICAgIDgzNzE1LCA4MzcyMSwgODM3MjcsIDgzNzMzLCA4MzczOSwgODM3NDUsIDgzNzUxLCA4Mzc1NywgODM3NjMsIDgzNzY5LCAKKyAgICA4Mzc3NSwgODM3ODEsIDgzNzg3LCA4Mzc5MywgODM3OTksIDgzODA1LCA4MzgxMSwgODM4MTcsIDgzODIzLCA4MzgyOSwgCisgICAgODM4MzUsIDgzODQxLCA4Mzg0NywgODM4NTMsIDgzODU5LCA4Mzg2NSwgODM4NzEsIDgzODc3LCA4Mzg4MywgODM4ODksIAorICAgIDgzODk1LCA4MzkwMSwgODM5MDcsIDgzOTEzLCA4MzkxOSwgODM5MjUsIDgzOTMxLCA4MzkzNywgODM5NDMsIDgzOTQ5LCAKKyAgICA4Mzk1NSwgODM5NjEsIDgzOTY3LCA4Mzk3MywgODM5NzksIDgzOTg1LCA4Mzk5MSwgODM5OTcsIDg0MDAzLCA4NDAwOSwgCisgICAgODQwMTUsIDg0MDIxLCA4NDAyNywgODQwMzMsIDg0MDM5LCA4NDA0NSwgODQwNTEsIDg0MDU3LCA4NDA2MywgODQwNjksIAorICAgIDg0MDc1LCA4NDA4MSwgODQwODcsIDg0MDkzLCA4NDA5OSwgODQxMDcsIDg0MTE1LCA4NDEyMSwgODQxMjcsIDg0MTMzLCAKKyAgICA4NDEzOSwgODQxNDgsIDg0MTU3LCA4NDE2NSwgODQxNzMsIDg0MTgxLCA4NDE4OSwgODQxOTcsIDg0MjA1LCA4NDIxMywgCisgICAgODQyMjEsIDg0MjI4LCA4NDIzNSwgODQyNDYsIDg0MjU3LCA4NDI2MSwgODQyNjUsIDg0MjcwLCA4NDI3NSwgODQyODAsIAorICAgIDg0Mjg1LCA4NDI5MywgODQzMDEsIDg0MzA3LCA4NDMxMywgODQzMjAsIDg0MzI3LCA4NDMzNCwgODQzMzgsIDg0MzQ0LCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4NDM1MCwgODQzNTYsIDg0MzYyLCAKKyAgICA4NDM2OCwgODQzNzQsIDg0Mzc5LCA4NDM4NCwgODQzOTAsIDg0Mzk2LCA4NDQwMiwgODQ0MDgsIDg0NDE3LCA4NDQyMywgCisgICAgODQ0MjksIDg0NDM3LCA4NDQ0NSwgODQ0NTMsIDg0NDYxLCA4NDQ2NiwgODQ0NzEsIDg0NDc2LCA4NDQ4MSwgODQ0OTQsIAorICAgIDg0NTA3LCA4NDUxOCwgODQ1MjksIDg0NTQxLCA4NDU1MywgODQ1NjUsIDg0NTc3LCA4NDU4OCwgODQ1OTksIDg0NjExLCAKKyAgICA4NDYyMywgODQ2MzUsIDg0NjQ3LCA4NDY1OCwgODQ2NjksIDg0NjgwLCA4NDY5NywgODQ3MTQsIDg0NzMxLCA4NDczOCwgCisgICAgODQ3NDUsIDg0NzUyLCA4NDc1OSwgODQ3NzAsIDg0NzgxLCA4NDc5MiwgODQ4MDUsIDg0ODE2LCA4NDgyNCwgODQ4MzIsIAorICAgIDg0ODQxLCA4NDg0OSwgODQ4NTksIDg0ODY3LCA4NDg3NSwgODQ4ODMsIDg0ODkyLCA4NDkwMCwgODQ5MTAsIDg0OTE4LCAKKyAgICA4NDkyNiwgODQ5MzQsIDg0OTQ0LCA4NDk1MiwgODQ5NTksIDg0OTY2LCA4NDk3MywgODQ5ODAsIDg0OTg4LCA4NDk5NiwgCisgICAgODUwMDQsIDg1MDEyLCA4NTAyMCwgODUwMjksIDg1MDM3LCA4NTA0NSwgODUwNTMsIDg1MDYxLCA4NTA2OSwgODUwNzgsIAorICAgIDg1MDg2LCA4NTA5NCwgODUxMDIsIDg1MTEwLCA4NTExOCwgODUxMjYsIDg1MTM0LCA4NTE0MiwgODUxNTAsIDg1MTU4LCAKKyAgICA4NTE2NywgODUxNzUsIDg1MTg1LCA4NTE5MywgODUyMDEsIDg1MjA5LCA4NTIxOSwgODUyMjcsIDg1MjM1LCA4NTI0MywgCisgICAgODUyNTEsIDg1MjYwLCA4NTI2OSwgODUyNzcsIDg1Mjg3LCA4NTI5NSwgODUzMDMsIDg1MzExLCA4NTMyMCwgODUzMjgsIAorICAgIDg1MzM4LCA4NTM0NiwgODUzNTMsIDg1MzYwLCA4NTM2OCwgODUzNzUsIDg1Mzg0LCA4NTM5MSwgODUzOTksIDg1NDA3LCAKKyAgICA4NTQxNiwgODU0MjQsIDg1NDM0LCA4NTQ0MiwgODU0NTAsIDg1NDU4LCA4NTQ2OCwgODU0NzYsIDg1NDgzLCA4NTQ5MCwgCisgICAgODU0OTgsIDg1NTA1LCA4NTUxNCwgODU1MjEsIDg1NTMxLCA4NTU0MSwgODU1NTIsIDg1NTYxLCA4NTU3MCwgODU1NzksIAorICAgIDg1NTg4LCA4NTU5NywgODU2MDcsIDg1NjE5LCA4NTYzMSwgODU2NDIsIDg1NjU0LCA4NTY2NywgODU2NzgsIDg1Njg3LCAKKyAgICA4NTY5NiwgODU3MDQsIDg1NzEzLCA4NTcyMywgODU3MzEsIDg1NzQwLCA4NTc0OSwgODU3NTcsIDg1NzY2LCA4NTc3NiwgCisgICAgODU3ODQsIDg1NzkzLCA4NTgwMiwgODU4MTAsIDg1ODE5LCA4NTgyOSwgODU4MzcsIDg1ODQ3LCA4NTg1NSwgODU4NjUsIAorICAgIDg1ODczLCA4NTg4MSwgODU4OTAsIDg1ODk4LCA4NTkwOCwgODU5MTYsIDg1OTI0LCA4NTkzNCwgODU5NDIsIDg1OTQ5LCAKKyAgICA4NTk1NiwgODU5NjUsIDg1OTc0LCA4NTk4MiwgODU5OTEsIDg2MDAxLCA4NjAwOSwgODYwMjAsIDg2MDI4LCA4NjAzNiwgCisgICAgODYwNDMsIDg2MDUxLCA4NjA2MCwgODYwNjcsIDg2MDc4LCA4NjA4OSwgODYxMDEsIDg2MTEyLCA4NjEyNCwgODYxMzIsIAorICAgIDg2MTQwLCA4NjE0OSwgODYxNTcsIDg2MTY2LCA4NjE3NCwgODYxODIsIDg2MTkxLCA4NjE5OSwgODYyMDgsIDg2MjE2LCAKKyAgICA4NjIyMywgODYyMzAsIDg2MjM3LCA4NjI0NCwgODYyNTIsIDg2MjYwLCA4NjI2OCwgODYyNzYsIDg2Mjg1LCA4NjI5MywgCisgICAgODYzMDEsIDg2MzEwLCA4NjMxOCwgODYzMjYsIDg2MzM0LCA4NjM0MywgODYzNTEsIDg2MzU5LCA4NjM2NywgODYzNzUsIAorICAgIDg2MzgzLCA4NjM5MSwgODYzOTksIDg2NDA3LCA4NjQxNSwgODY0MjQsIDg2NDMyLCA4NjQ0MCwgODY0NDgsIDg2NDU2LCAKKyAgICA4NjQ2NCwgODY0NzMsIDg2NDgyLCA4NjQ5MCwgODY0OTgsIDg2NTA2LCA4NjUxNSwgODY1MjMsIDg2NTMyLCA4NjUzOSwgCisgICAgODY1NDYsIDg2NTU0LCA4NjU2MSwgODY1NjksIDg2NTc3LCA4NjU4NiwgODY1OTQsIDg2NjAzLCA4NjYxMSwgODY2MTksIAorICAgIDg2NjI5LCA4NjYzNiwgODY2NDMsIDg2NjUxLCA4NjY1OCwgODY2NjYsIDg2Njc3LCA4NjY4OSwgODY2OTcsIDg2NzA2LCAKKyAgICA4NjcxNCwgODY3MjMsIDg2NzMxLCA4Njc0MCwgODY3NDgsIDg2NzU3LCA4Njc2NSwgODY3NzQsIDg2NzgzLCA4Njc5MSwgCisgICAgODY3OTksIDg2ODA3LCA4NjgxNiwgODY4MjMsIDg2ODMxLCA4Njg0MCwgODY4NDksIDg2ODU4LCA4Njg2OCwgODY4NzYsIAorICAgIDg2ODg2LCA4Njg5NCwgODY5MDQsIDg2OTEyLCA4NjkyMiwgODY5MzAsIDg2OTQwLCA4Njk0OCwgODY5NTcsIDg2OTY0LCAKKyAgICA4Njk3MywgODY5ODAsIDg2OTkwLCA4Njk5OCwgODcwMDgsIDg3MDE2LCA4NzAyNiwgODcwMzQsIDg3MDQyLCA4NzA1MCwgCisgICAgODcwNTksIDg3MDY3LCA4NzA3NiwgODcwODUsIDg3MDk0LCA4NzEwMywgODcxMTMsIDg3MTIxLCA4NzEzMSwgODcxMzksIAorICAgIDg3MTQ5LCA4NzE1NywgODcxNjcsIDg3MTc1LCA4NzE4NSwgODcxOTMsIDg3MjAyLCA4NzIwOSwgODcyMTgsIDg3MjI1LCAKKyAgICA4NzIzNSwgODcyNDMsIDg3MjUzLCA4NzI2MSwgODcyNzEsIDg3Mjc5LCA4NzI4NywgODcyOTUsIDg3MzA0LCA4NzMxMiwgCisgICAgODczMjEsIDg3MzMwLCA4NzMzOSwgODczNDgsIDg3MzU2LCA4NzM2NCwgODczNzMsIDg3MzgxLCA4NzM5MCwgODczOTksIAorICAgIDg3NDA3LCA4NzQxNSwgODc0MjMsIDg3NDMyLCA4NzQ0MCwgODc0NDgsIDg3NDU3LCA4NzQ2NSwgODc0NzMsIDg3NDgxLCAKKyAgICA4NzQ4OSwgODc0OTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDg3NDk5LCAKKyAgICA4NzUwOSwgODc1MTksIDg3NTI5LCA4NzUzOSwgODc1NTAsIDg3NTYwLCA4NzU3MCwgODc1ODEsIDg3NTkwLCA4NzU5OSwgCisgICAgODc2MDgsIDg3NjE5LCA4NzYyOSwgODc2MzksIDg3NjUxLCA4NzY2MSwgODc2NzEsIDg3NjgxLCA4NzY5MSwgODc3MDEsIAorICAgIDg3NzExLCA4NzcyMSwgODc3MzEsIDg3NzQxLCA4Nzc1MSwgODc3NjEsIDg3NzcyLCA4Nzc4MywgODc3OTMsIDg3ODAzLCAKKyAgICA4NzgxNSwgODc4MjYsIDg3ODM3LCA4Nzg0NywgODc4NTcsIDg3ODY3LCA4Nzg3NywgODc4ODcsIDg3ODk3LCA4NzkwNywgCisgICAgODc5MTksIDg3OTI5LCA4NzkzOSwgODc5NTEsIDg3OTYyLCA4Nzk3MywgODc5ODMsIDg3OTkzLCA4ODAwMywgODgwMTMsIAorICAgIDg4MDI1LCA4ODAzNSwgODgwNDUsIDg4MDU2LCA4ODA2NywgODgwNzcsIDg4MDg3LCA4ODA5NiwgODgxMDUsIDg4MTE0LCAKKyAgICA4ODEyMywgODgxMzIsIDg4MTQyLCAwLCAwLCA4ODE1MiwgODgxNjIsIDg4MTcyLCA4ODE4MiwgODgxOTIsIDg4MjA0LCAKKyAgICA4ODIxNCwgODgyMjQsIDg4MjM2LCA4ODI0NiwgODgyNTgsIDg4MjY3LCA4ODI3NiwgODgyODcsIDg4Mjk3LCA4ODMwOSwgCisgICAgODgzMjAsIDg4MzMzLCA4ODM0MywgODgzNTUsIDg4MzY0LCA4ODM3NSwgODgzODYsIDg4Mzk5LCA4ODQwOSwgODg0MTksIAorICAgIDg4NDI5LCA4ODQzOSwgODg0NDksIDg4NDU4LCA4ODQ2NywgODg0NzYsIDg4NDg1LCA4ODQ5NSwgODg1MDUsIDg4NTE1LCAKKyAgICA4ODUyNSwgODg1MzUsIDg4NTQ1LCA4ODU1NSwgODg1NjUsIDg4NTc1LCA4ODU4NSwgODg1OTUsIDg4NjA1LCA4ODYxNCwgCisgICAgODg2MjMsIDg4NjMyLCA4ODY0MiwgODg2NTIsIDg4NjYyLCA4ODY3MiwgODg2ODIsIDg4NjkzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4Nzg4MCwgODc4OTUsIDg3OTEwLCA4NzkxNiwgODc5MjIsIDg3OTI4LCAKLSAgICA4NzkzNCwgODc5NDAsIDg3OTQ2LCA4Nzk1MiwgODc5NTgsIDg3OTY2LCA4Nzk3MCwgODc5NzMsIDAsIDAsIDg3OTgxLCAKLSAgICA4Nzk4NCwgODc5ODcsIDg3OTkwLCA4Nzk5MywgODc5OTYsIDg3OTk5LCA4ODAwMiwgODgwMDUsIDg4MDA4LCA4ODAxMSwgCi0gICAgODgwMTQsIDg4MDE3LCA4ODAyMCwgODgwMjMsIDg4MDI2LCA4ODAyOSwgODgwMzcsIDg4MDQ2LCA4ODA1NywgODgwNjUsIAotICAgIDg4MDczLCA4ODA4MiwgODgwOTEsIDg4MTAyLCA4ODExNCwgMCwgMCwgMCwgMCwgMCwgMCwgODgxMjQsIDg4MTI5LCA4ODEzNCwgCi0gICAgODgxNDEsIDg4MTQ4LCA4ODE1NCwgODgxNjAsIDg4MTY1LCA4ODE3MCwgODgxNzUsIDg4MTgxLCA4ODE4NywgODgxOTMsIAotICAgIDg4MTk5LCA4ODIwNSwgODgyMTIsIDg4MjE5LCA4ODIyOSwgODgyMzksIDg4MjQ5LCA4ODI1OCwgODgyNjksIDg4Mjc4LCAKLSAgICA4ODI4NywgODgyOTcsIDg4MzA3LCA4ODMxOSwgODgzMzEsIDg4MzQyLCA4ODM1MywgODgzNjQsIDg4Mzc1LCA4ODM4NSwgCi0gICAgODgzOTUsIDg4NDA1LCA4ODQxNSwgODg0MjYsIDg4NDM3LCA4ODQ0MSwgODg0NDYsIDg4NDU1LCA4ODQ2NCwgODg0NjgsIAotICAgIDg4NDcyLCA4ODQ3NiwgODg0ODEsIDg4NDg2LCA4ODQ5MSwgODg0OTYsIDg4NDk5LCA4ODUwMywgMCwgODg1MDgsIDg4NTExLCAKLSAgICA4ODUxNCwgODg1MTgsIDg4NTIyLCA4ODUyNywgODg1MzEsIDg4NTM1LCA4ODU0MCwgODg1NDUsIDg4NTUyLCA4ODU1OSwgCi0gICAgODg1NjIsIDg4NTY1LCA4ODU2OCwgODg1NzEsIDg4NTc0LCA4ODU3OCwgODg1ODIsIDAsIDg4NTg2LCA4ODU5MSwgODg1OTUsIAotICAgIDg4NTk5LCAwLCAwLCAwLCAwLCA4ODYwNCwgODg2MDksIDg4NjE2LCA4ODYyMSwgODg2MjYsIDAsIDg4NjMxLCA4ODYzNiwgCi0gICAgODg2NDEsIDg4NjQ2LCA4ODY1MSwgODg2NTYsIDg4NjYxLCA4ODY2NiwgODg2NzEsIDg4Njc2LCA4ODY4MSwgODg2ODcsIAotICAgIDg4Njk2LCA4ODcwNSwgODg3MTQsIDg4NzIzLCA4ODczMywgODg3NDMsIDg4NzUzLCA4ODc2MywgODg3NzIsIDg4NzgxLCAKLSAgICA4ODc5MCwgODg3OTksIDg4ODA0LCA4ODgwOSwgODg4MTUsIDg4ODIxLCA4ODgyNywgODg4MzMsIDg4ODQxLCA4ODg0OSwgCi0gICAgODg4NTUsIDg4ODYxLCA4ODg2NywgODg4NzMsIDg4ODc5LCA4ODg4NSwgODg4OTEsIDg4ODk3LCA4ODkwMiwgODg5MDcsIAotICAgIDg4OTEyLCA4ODkxNywgODg5MjIsIDg4OTI3LCA4ODkzMiwgODg5MzcsIDg4OTQzLCA4ODk0OSwgODg5NTUsIDg4OTYxLCAKLSAgICA4ODk2NywgODg5NzMsIDg4OTc5LCA4ODk4NSwgODg5OTEsIDg4OTk3LCA4OTAwMywgODkwMDksIDg5MDE1LCA4OTAyMSwgCi0gICAgODkwMjcsIDg5MDMzLCA4OTAzOSwgODkwNDUsIDg5MDUxLCA4OTA1NywgODkwNjMsIDg5MDY5LCA4OTA3NSwgODkwODEsIAotICAgIDg5MDg3LCA4OTA5MywgODkwOTksIDg5MTA1LCA4OTExMSwgODkxMTcsIDg5MTIzLCA4OTEyOSwgODkxMzUsIDg5MTQxLCAKLSAgICA4OTE0NywgODkxNTMsIDg5MTU5LCA4OTE2NSwgODkxNzEsIDg5MTc3LCA4OTE4MywgODkxODksIDg5MTk1LCA4OTIwMSwgCi0gICAgODkyMDcsIDg5MjEzLCA4OTIxOSwgODkyMjUsIDg5MjMxLCA4OTIzNywgODkyNDMsIDg5MjQ5LCA4OTI1NSwgODkyNjEsIAotICAgIDg5MjY3LCA4OTI3MywgODkyNzksIDg5Mjg1LCA4OTI5MSwgODkyOTcsIDg5MzAyLCA4OTMwNywgODkzMTIsIDg5MzE3LCAKLSAgICA4OTMyMywgODkzMjksIDg5MzM1LCA4OTM0MSwgODkzNDcsIDg5MzUzLCA4OTM1OSwgODkzNjUsIDg5MzcxLCA4OTM3NywgCi0gICAgODkzODQsIDg5MzkxLCA4OTM5NiwgODk0MDEsIDg5NDA2LCA4OTQxMSwgODk0MjMsIDg5NDM1LCA4OTQ0NywgODk0NTksIAotICAgIDg5NDcyLCA4OTQ4NSwgODk0OTMsIDAsIDAsIDg5NTAxLCAwLCA4OTUwOSwgODk1MTMsIDg5NTE3LCA4OTUyMCwgODk1MjQsIAotICAgIDg5NTI4LCA4OTUzMSwgODk1MzQsIDg5NTM4LCA4OTU0MiwgODk1NDUsIDg5NTQ4LCA4OTU1MSwgODk1NTQsIDg5NTU5LCAKLSAgICA4OTU2MiwgODk1NjYsIDg5NTY5LCA4OTU3MiwgODk1NzUsIDg5NTc4LCA4OTU4MSwgODk1ODQsIDg5NTg4LCA4OTU5MSwgCi0gICAgODk1OTUsIDg5NTk4LCA4OTYwMSwgODk2MDUsIDg5NjA5LCA4OTYxMywgODk2MTcsIDg5NjIyLCA4OTYyNywgODk2MzMsIAotICAgIDg5NjM5LCA4OTY0NSwgODk2NTAsIDg5NjU2LCA4OTY2MiwgODk2NjgsIDg5NjczLCA4OTY3OSwgODk2ODUsIDg5NjkwLCAKLSAgICA4OTY5NiwgODk3MDIsIDg5NzA3LCA4OTcxMywgODk3MTksIDg5NzI0LCA4OTcyOSwgODk3MzUsIDg5NzQwLCA4OTc0NiwgCi0gICAgODk3NTIsIDg5NzU4LCA4OTc2NCwgODk3NzAsIDg5Nzc0LCA4OTc3OSwgODk3ODMsIDg5Nzg4LCA4OTc5MiwgODk3OTcsIAotICAgIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNSwgODk4MzEsIDg5ODM3LCA4OTg0MywgODk4NDgsIDg5ODU0LCAKLSAgICA4OTg2MCwgODk4NjUsIDg5ODcxLCA4OTg3NywgODk4ODIsIDg5ODg4LCA4OTg5NCwgODk4OTksIDg5OTA0LCA4OTkxMCwgCi0gICAgODk5MTUsIDg5OTIxLCA4OTkyNywgODk5MzMsIDg5OTM5LCA4OTk0NSwgODk5NTAsIDg5OTU0LCA4OTk1OSwgODk5NjIsIAotICAgIDg5OTY3LCA4OTk3MiwgODk5NzgsIDg5OTgzLCA4OTk4OCwgODk5OTIsIDg5OTk3LCA5MDAwMiwgOTAwMDcsIDkwMDEyLCAKLSAgICA5MDAxNywgOTAwMjIsIDkwMDI3LCA5MDAzMiwgOTAwMzgsIDkwMDQ0LCA5MDA1MCwgOTAwNTgsIDkwMDYyLCA5MDA2NiwgCi0gICAgOTAwNzAsIDkwMDc0LCA5MDA3OCwgOTAwODIsIDkwMDg3LCA5MDA5MiwgOTAwOTcsIDkwMTAyLCA5MDEwNywgOTAxMTIsIAotICAgIDkwMTE3LCA5MDEyMiwgOTAxMjcsIDkwMTMyLCA5MDEzNywgOTAxNDIsIDkwMTQ3LCA5MDE1MSwgOTAxNTYsIDkwMTYxLCAKLSAgICA5MDE2NiwgOTAxNzEsIDkwMTc2LCA5MDE4MCwgOTAxODUsIDkwMTkwLCA5MDE5NSwgOTAyMDAsIDkwMjA0LCA5MDIwOSwgCi0gICAgOTAyMTQsIDkwMjE5LCA5MDIyNCwgOTAyMjgsIDkwMjMzLCA5MDIzOCwgOTAyNDMsIDkwMjQ4LCA5MDI1MywgOTAyNTgsIAotICAgIDkwMjYzLCA5MDI2OCwgOTAyNzMsIDkwMjgwLCA5MDI4NywgOTAyOTEsIDkwMjk2LCA5MDMwMSwgOTAzMDYsIDkwMzExLCAKLSAgICA5MDMxNiwgOTAzMjEsIDkwMzI2LCA5MDMzMSwgOTAzMzYsIDkwMzQxLCA5MDM0NiwgOTAzNTEsIDkwMzU2LCA5MDM2MSwgCi0gICAgOTAzNjYsIDkwMzcxLCA5MDM3NiwgOTAzODEsIDkwMzg2LCA5MDM5MSwgOTAzOTYsIDkwNDAxLCA5MDQwNiwgOTA0MTEsIAotICAgIDkwNDE2LCA5MDQyMSwgOTA0MjYsIDkwNDMxLCA5MDQzNiwgMCwgMCwgMCwgOTA0NDEsIDkwNDQ1LCA5MDQ1MCwgOTA0NTQsIAotICAgIDkwNDU5LCA5MDQ2NCwgMCwgMCwgOTA0NjgsIDkwNDczLCA5MDQ3OCwgOTA0ODIsIDkwNDg3LCA5MDQ5MiwgMCwgMCwgCi0gICAgOTA0OTcsIDkwNTAyLCA5MDUwNiwgOTA1MTEsIDkwNTE2LCA5MDUyMSwgMCwgMCwgOTA1MjYsIDkwNTMxLCA5MDUzNiwgMCwgCi0gICAgMCwgMCwgOTA1NDAsIDkwNTQ0LCA5MDU0OCwgOTA1NTIsIDkwNTU1LCA5MDU1OSwgOTA1NjMsIDAsIDkwNTY3LCA5MDU3MywgCi0gICAgOTA1NzYsIDkwNTc5LCA5MDU4MiwgOTA1ODUsIDkwNTg5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MDU5MywgCi0gICAgOTA1OTksIDkwNjA1LCA5MDYxMSwgOTA2MTcsIDAsIDAsIDkwNjIxLCA5MDYyNywgOTA2MzMsIDkwNjM5LCA5MDY0NSwgCi0gICAgOTA2NTEsIDkwNjU4LCA5MDY2NSwgOTA2NzIsIDkwNjc5LCA5MDY4NiwgOTA2OTMsIDAsIDkwNzAwLCA5MDcwNywgOTA3MTQsIAotICAgIDkwNzIwLCA5MDcyNywgOTA3MzQsIDkwNzQxLCA5MDc0OCwgOTA3NTQsIDkwNzYxLCA5MDc2OCwgOTA3NzUsIDkwNzgyLCAKLSAgICA5MDc4OSwgOTA3OTYsIDkwODAzLCA5MDgxMCwgOTA4MTcsIDkwODIzLCA5MDgzMCwgOTA4MzcsIDkwODQ0LCA5MDg1MSwgCi0gICAgOTA4NTgsIDkwODY1LCA5MDg3MiwgMCwgOTA4NzksIDkwODg2LCA5MDg5MywgOTA5MDAsIDkwOTA3LCA5MDkxNCwgOTA5MjEsIAotICAgIDkwOTI4LCA5MDkzNSwgOTA5NDIsIDkwOTQ5LCA5MDk1NiwgOTA5NjMsIDkwOTcwLCA5MDk3NiwgOTA5ODMsIDkwOTkwLCAKLSAgICA5MDk5NywgOTEwMDQsIDAsIDkxMDExLCA5MTAxOCwgMCwgOTEwMjUsIDkxMDMyLCA5MTAzOSwgOTEwNDYsIDkxMDUzLCAKLSAgICA5MTA2MCwgOTEwNjcsIDkxMDc0LCA5MTA4MSwgOTEwODgsIDkxMDk1LCA5MTEwMiwgOTExMDksIDkxMTE2LCA5MTEyMywgMCwgCi0gICAgMCwgOTExMjksIDkxMTM0LCA5MTEzOSwgOTExNDQsIDkxMTQ5LCA5MTE1NCwgOTExNTksIDkxMTY0LCA5MTE2OSwgOTExNzQsIAotICAgIDkxMTc5LCA5MTE4NCwgOTExODksIDkxMTk0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTE5OSwgOTEyMDYsIAotICAgIDkxMjEzLCA5MTIyMCwgOTEyMjcsIDkxMjM0LCA5MTI0MSwgOTEyNDgsIDkxMjU1LCA5MTI2MiwgOTEyNjksIDkxMjc2LCAKLSAgICA5MTI4MywgOTEyOTAsIDkxMjk3LCA5MTMwNCwgOTEzMTEsIDkxMzE4LCA5MTMyNSwgOTEzMzIsIDkxMzQwLCA5MTM0OCwgCi0gICAgOTEzNTUsIDkxMzYyLCA5MTM2NywgOTEzNzUsIDkxMzgzLCA5MTM5MCwgOTEzOTcsIDkxNDAyLCA5MTQwOSwgOTE0MTQsIAotICAgIDkxNDE5LCA5MTQyNiwgOTE0MzEsIDkxNDM2LCA5MTQ0MSwgOTE0NDksIDkxNDU0LCA5MTQ1OSwgOTE0NjYsIDkxNDcxLCAKLSAgICA5MTQ3NiwgOTE0ODMsIDkxNDkwLCA5MTQ5NSwgOTE1MDAsIDkxNTA1LCA5MTUxMCwgOTE1MTUsIDkxNTIwLCA5MTUyNSwgCi0gICAgOTE1MzAsIDkxNTM1LCA5MTU0MiwgOTE1NDcsIDkxNTU0LCA5MTU1OSwgOTE1NjQsIDkxNTY5LCA5MTU3NCwgOTE1NzksIAotICAgIDkxNTg0LCA5MTU4OSwgOTE1OTQsIDkxNTk5LCA5MTYwNCwgOTE2MDksIDkxNjE2LCA5MTYyMywgOTE2MzAsIDkxNjM3LCAKLSAgICA5MTY0MywgOTE2NDgsIDkxNjU1LCA5MTY2MCwgOTE2NjUsIDkxNjc0LCA5MTY4MSwgOTE2OTAsIDkxNjk3LCA5MTcwMiwgCi0gICAgOTE3MDcsIDkxNzE1LCA5MTcyMCwgOTE3MjUsIDkxNzMwLCA5MTczNSwgOTE3NDAsIDkxNzQ3LCA5MTc1MiwgOTE3NTcsIAotICAgIDkxNzYyLCA5MTc2NywgOTE3NzIsIDkxNzc5LCA5MTc4NiwgOTE3OTMsIDkxODAwLCA5MTgwNywgOTE4MTQsIDkxODIxLCAKLSAgICA5MTgyOCwgOTE4MzUsIDkxODQyLCA5MTg0OSwgOTE4NTYsIDkxODYzLCA5MTg3MCwgOTE4NzcsIDkxODg0LCA5MTg5MSwgCi0gICAgOTE4OTgsIDkxOTA1LCA5MTkxMiwgOTE5MTksIDkxOTI2LCA5MTkzMywgOTE5NDAsIDkxOTQ3LCA5MTk1NCwgOTE5NjEsIAotICAgIDkxOTY4LCAwLCAwLCAwLCAwLCAwLCA5MTk3NSwgOTE5ODMsIDkxOTkxLCAwLCAwLCAwLCAwLCA5MTk5NiwgOTIwMDAsIAotICAgIDkyMDA0LCA5MjAwOCwgOTIwMTIsIDkyMDE2LCA5MjAyMCwgOTIwMjUsIDkyMDI5LCA5MjAzNCwgOTIwMzksIDkyMDQ0LCAKLSAgICA5MjA0OSwgOTIwNTQsIDkyMDU5LCA5MjA2NCwgOTIwNjksIDkyMDc0LCA5MjA3OSwgOTIwODUsIDkyMDkxLCA5MjA5NywgCi0gICAgOTIxMDQsIDkyMTExLCA5MjExOCwgOTIxMjUsIDkyMTMyLCA5MjEzOSwgOTIxNDUsIDkyMTUxLCA5MjE1NywgOTIxNjQsIAotICAgIDkyMTcxLCA5MjE3OCwgOTIxODUsIDkyMTkyLCA5MjE5OSwgOTIyMDYsIDkyMjEzLCA5MjIyMCwgOTIyMjcsIDkyMjM0LCAKLSAgICA5MjI0MSwgOTIyNDgsIDkyMjU1LCAwLCAwLCAwLCA5MjI2MiwgOTIyNzAsIDkyMjc4LCA5MjI4NiwgOTIyOTQsIDkyMzAyLCAKLSAgICA5MjMxMiwgOTIzMjIsIDkyMzMwLCA5MjMzOCwgOTIzNDYsIDkyMzU0LCA5MjM2MiwgOTIzNjgsIDkyMzc1LCA5MjM4NCwgCi0gICAgOTIzOTMsIDkyNDAyLCA5MjQxMSwgOTI0MjAsIDkyNDI5LCA5MjQzOSwgOTI0NTAsIDkyNDYwLCA5MjQ3MSwgOTI0ODAsIAotICAgIDkyNDg5LCA5MjQ5OCwgOTI1MDgsIDkyNTE5LCA5MjUyOSwgOTI1NDAsIDkyNTUxLCA5MjU2MCwgOTI1NjgsIDkyNTc0LCAKLSAgICA5MjU4MCwgOTI1ODYsIDkyNTkyLCA5MjYwMCwgOTI2MDgsIDkyNjE0LCA5MjYyMSwgOTI2MzEsIDkyNjM4LCA5MjY0NSwgCi0gICAgOTI2NTIsIDkyNjU5LCA5MjY2NiwgOTI2NzYsIDkyNjgzLCA5MjY5MCwgOTI2OTgsIDkyNzA2LCA5MjcxNSwgOTI3MjQsIAotICAgIDkyNzMzLCA5Mjc0MiwgOTI3NTEsIDkyNzU5LCA5Mjc2OCwgOTI3NzcsIDkyNzg2LCA5Mjc5MCwgOTI3OTcsIDkyODAyLCAKLSAgICA5MjgwNywgOTI4MTEsIDkyODE1LCA5MjgxOSwgOTI4MjMsIDkyODI4LCA5MjgzMywgOTI4MzksIDkyODQ1LCA5Mjg0OSwgCi0gICAgOTI4NTUsIDkyODU5LCA5Mjg2MywgOTI4NjcsIDkyODcxLCA5Mjg3NSwgOTI4NzksIDkyODg1LCA5Mjg4OSwgOTI4OTQsIDAsIAotICAgIDAsIDAsIDkyODk4LCA5MjkwMywgOTI5MDgsIDkyOTEzLCA5MjkxOCwgOTI5MjUsIDkyOTMwLCA5MjkzNSwgOTI5NDAsIAotICAgIDkyOTQ1LCA5Mjk1MCwgOTI5NTUsIDAsIDAsIDAsIDAsIDkyOTYwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4ODcwMywgODg3MTgsIDg4NzMzLCA4ODczOSwgODg3NDUsIDg4NzUxLCAKKyAgICA4ODc1NywgODg3NjMsIDg4NzY5LCA4ODc3NSwgODg3ODEsIDg4Nzg5LCA4ODc5MywgODg3OTYsIDAsIDAsIDg4ODA0LCAKKyAgICA4ODgwNywgODg4MTAsIDg4ODEzLCA4ODgxNiwgODg4MTksIDg4ODIyLCA4ODgyNSwgODg4MjgsIDg4ODMxLCA4ODgzNCwgCisgICAgODg4MzcsIDg4ODQwLCA4ODg0MywgODg4NDYsIDg4ODQ5LCA4ODg1MiwgODg4NjAsIDg4ODY5LCA4ODg4MCwgODg4ODgsIAorICAgIDg4ODk2LCA4ODkwNSwgODg5MTQsIDg4OTI1LCA4ODkzNywgMCwgMCwgMCwgMCwgMCwgMCwgODg5NDcsIDg4OTUyLCA4ODk1NywgCisgICAgODg5NjQsIDg4OTcxLCA4ODk3NywgODg5ODMsIDg4OTg4LCA4ODk5MywgODg5OTgsIDg5MDA0LCA4OTAxMCwgODkwMTYsIAorICAgIDg5MDIyLCA4OTAyOCwgODkwMzUsIDg5MDQyLCA4OTA1MiwgODkwNjIsIDg5MDcyLCA4OTA4MSwgODkwOTIsIDg5MTAxLCAKKyAgICA4OTExMCwgODkxMjAsIDg5MTMwLCA4OTE0MiwgODkxNTQsIDg5MTY1LCA4OTE3NiwgODkxODcsIDg5MTk4LCA4OTIwOCwgCisgICAgODkyMTgsIDg5MjI4LCA4OTIzOCwgODkyNDksIDg5MjYwLCA4OTI2NCwgODkyNjksIDg5Mjc4LCA4OTI4NywgODkyOTEsIAorICAgIDg5Mjk1LCA4OTI5OSwgODkzMDQsIDg5MzA5LCA4OTMxNCwgODkzMTksIDg5MzIyLCA4OTMyNiwgMCwgODkzMzEsIDg5MzM0LCAKKyAgICA4OTMzNywgODkzNDEsIDg5MzQ1LCA4OTM1MCwgODkzNTQsIDg5MzU4LCA4OTM2MywgODkzNjgsIDg5Mzc1LCA4OTM4MiwgCisgICAgODkzODUsIDg5Mzg4LCA4OTM5MSwgODkzOTQsIDg5Mzk3LCA4OTQwMSwgODk0MDUsIDAsIDg5NDA5LCA4OTQxNCwgODk0MTgsIAorICAgIDg5NDIyLCAwLCAwLCAwLCAwLCA4OTQyNywgODk0MzIsIDg5NDM5LCA4OTQ0NCwgODk0NDksIDAsIDg5NDU0LCA4OTQ1OSwgCisgICAgODk0NjQsIDg5NDY5LCA4OTQ3NCwgODk0NzksIDg5NDg0LCA4OTQ4OSwgODk0OTQsIDg5NDk5LCA4OTUwNCwgODk1MTAsIAorICAgIDg5NTE5LCA4OTUyOCwgODk1MzcsIDg5NTQ2LCA4OTU1NiwgODk1NjYsIDg5NTc2LCA4OTU4NiwgODk1OTUsIDg5NjA0LCAKKyAgICA4OTYxMywgODk2MjIsIDg5NjI3LCA4OTYzMiwgODk2MzgsIDg5NjQ0LCA4OTY1MCwgODk2NTYsIDg5NjY0LCA4OTY3MiwgCisgICAgODk2NzgsIDg5Njg0LCA4OTY5MCwgODk2OTYsIDg5NzAyLCA4OTcwOCwgODk3MTQsIDg5NzIwLCA4OTcyNSwgODk3MzAsIAorICAgIDg5NzM1LCA4OTc0MCwgODk3NDUsIDg5NzUwLCA4OTc1NSwgODk3NjAsIDg5NzY2LCA4OTc3MiwgODk3NzgsIDg5Nzg0LCAKKyAgICA4OTc5MCwgODk3OTYsIDg5ODAyLCA4OTgwOCwgODk4MTQsIDg5ODIwLCA4OTgyNiwgODk4MzIsIDg5ODM4LCA4OTg0NCwgCisgICAgODk4NTAsIDg5ODU2LCA4OTg2MiwgODk4NjgsIDg5ODc0LCA4OTg4MCwgODk4ODYsIDg5ODkyLCA4OTg5OCwgODk5MDQsIAorICAgIDg5OTEwLCA4OTkxNiwgODk5MjIsIDg5OTI4LCA4OTkzNCwgODk5NDAsIDg5OTQ2LCA4OTk1MiwgODk5NTgsIDg5OTY0LCAKKyAgICA4OTk3MCwgODk5NzYsIDg5OTgyLCA4OTk4OCwgODk5OTQsIDkwMDAwLCA5MDAwNiwgOTAwMTIsIDkwMDE4LCA5MDAyNCwgCisgICAgOTAwMzAsIDkwMDM2LCA5MDA0MiwgOTAwNDgsIDkwMDU0LCA5MDA2MCwgOTAwNjYsIDkwMDcyLCA5MDA3OCwgOTAwODQsIAorICAgIDkwMDkwLCA5MDA5NiwgOTAxMDIsIDkwMTA4LCA5MDExNCwgOTAxMjAsIDkwMTI1LCA5MDEzMCwgOTAxMzUsIDkwMTQwLCAKKyAgICA5MDE0NiwgOTAxNTIsIDkwMTU4LCA5MDE2NCwgOTAxNzAsIDkwMTc2LCA5MDE4MiwgOTAxODgsIDkwMTk0LCA5MDIwMCwgCisgICAgOTAyMDcsIDkwMjE0LCA5MDIxOSwgOTAyMjQsIDkwMjI5LCA5MDIzNCwgOTAyNDYsIDkwMjU4LCA5MDI3MCwgOTAyODIsIAorICAgIDkwMjk1LCA5MDMwOCwgOTAzMTYsIDAsIDAsIDkwMzI0LCAwLCA5MDMzMiwgOTAzMzYsIDkwMzQwLCA5MDM0MywgOTAzNDcsIAorICAgIDkwMzUxLCA5MDM1NCwgOTAzNTcsIDkwMzYxLCA5MDM2NSwgOTAzNjgsIDkwMzcxLCA5MDM3NCwgOTAzNzcsIDkwMzgyLCAKKyAgICA5MDM4NSwgOTAzODksIDkwMzkyLCA5MDM5NSwgOTAzOTgsIDkwNDAxLCA5MDQwNCwgOTA0MDcsIDkwNDExLCA5MDQxNCwgCisgICAgOTA0MTgsIDkwNDIxLCA5MDQyNCwgOTA0MjgsIDkwNDMyLCA5MDQzNiwgOTA0NDAsIDkwNDQ1LCA5MDQ1MCwgOTA0NTYsIAorICAgIDkwNDYyLCA5MDQ2OCwgOTA0NzMsIDkwNDc5LCA5MDQ4NSwgOTA0OTEsIDkwNDk2LCA5MDUwMiwgOTA1MDgsIDkwNTEzLCAKKyAgICA5MDUxOSwgOTA1MjUsIDkwNTMwLCA5MDUzNiwgOTA1NDIsIDkwNTQ3LCA5MDU1MywgOTA1NTksIDkwNTY0LCA5MDU3MCwgCisgICAgOTA1NzYsIDkwNTgyLCA5MDU4OCwgOTA1OTQsIDkwNTk4LCA5MDYwMywgOTA2MDcsIDkwNjEyLCA5MDYxNiwgOTA2MjEsIAorICAgIDkwNjI2LCA5MDYzMiwgOTA2MzgsIDkwNjQ0LCA5MDY0OSwgOTA2NTUsIDkwNjYxLCA5MDY2NywgOTA2NzIsIDkwNjc4LCAKKyAgICA5MDY4NCwgOTA2ODksIDkwNjk1LCA5MDcwMSwgOTA3MDYsIDkwNzEyLCA5MDcxOCwgOTA3MjMsIDkwNzI5LCA5MDczNSwgCisgICAgOTA3NDAsIDkwNzQ2LCA5MDc1MiwgOTA3NTgsIDkwNzY0LCA5MDc3MCwgOTA3NzUsIDkwNzc5LCA5MDc4NCwgOTA3ODcsIAorICAgIDkwNzkyLCA5MDc5NywgOTA4MDMsIDkwODA4LCA5MDgxMywgOTA4MTcsIDkwODIyLCA5MDgyNywgOTA4MzIsIDkwODM3LCAKKyAgICA5MDg0MiwgOTA4NDcsIDkwODUyLCA5MDg1NywgOTA4NjMsIDkwODY5LCA5MDg3NSwgOTA4ODMsIDkwODg3LCA5MDg5MSwgCisgICAgOTA4OTUsIDkwODk5LCA5MDkwMywgOTA5MDcsIDkwOTEyLCA5MDkxNywgOTA5MjIsIDkwOTI3LCA5MDkzMiwgOTA5MzcsIAorICAgIDkwOTQyLCA5MDk0NywgOTA5NTIsIDkwOTU3LCA5MDk2MiwgOTA5NjcsIDkwOTcyLCA5MDk3NiwgOTA5ODAsIDkwOTg1LCAKKyAgICA5MDk5MCwgOTA5OTUsIDkxMDAwLCA5MTAwNCwgOTEwMDksIDkxMDE0LCA5MTAxOSwgOTEwMjQsIDkxMDI4LCA5MTAzMywgCisgICAgOTEwMzgsIDkxMDQzLCA5MTA0OCwgOTEwNTIsIDkxMDU3LCA5MTA2MiwgOTEwNjcsIDkxMDcyLCA5MTA3NywgOTEwODIsIAorICAgIDkxMDg3LCA5MTA5MiwgOTEwOTcsIDkxMTA0LCA5MTExMSwgOTExMTUsIDkxMTIwLCA5MTEyNSwgOTExMzAsIDkxMTM1LCAKKyAgICA5MTE0MCwgOTExNDUsIDkxMTUwLCA5MTE1NSwgOTExNjAsIDkxMTY1LCA5MTE3MCwgOTExNzUsIDkxMTgwLCA5MTE4NSwgCisgICAgOTExOTAsIDkxMTk1LCA5MTIwMCwgOTEyMDUsIDkxMjEwLCA5MTIxNSwgOTEyMjAsIDkxMjI1LCA5MTIzMCwgOTEyMzUsIAorICAgIDkxMjQwLCA5MTI0NSwgOTEyNTAsIDkxMjU1LCA5MTI2MCwgMCwgMCwgMCwgOTEyNjUsIDkxMjY5LCA5MTI3NCwgOTEyNzgsIAorICAgIDkxMjgzLCA5MTI4OCwgMCwgMCwgOTEyOTIsIDkxMjk3LCA5MTMwMiwgOTEzMDYsIDkxMzExLCA5MTMxNiwgMCwgMCwgCisgICAgOTEzMjEsIDkxMzI2LCA5MTMzMCwgOTEzMzUsIDkxMzQwLCA5MTM0NSwgMCwgMCwgOTEzNTAsIDkxMzU1LCA5MTM2MCwgMCwgCisgICAgMCwgMCwgOTEzNjQsIDkxMzY4LCA5MTM3MiwgOTEzNzYsIDkxMzc5LCA5MTM4MywgOTEzODcsIDAsIDkxMzkxLCA5MTM5NywgCisgICAgOTE0MDAsIDkxNDAzLCA5MTQwNiwgOTE0MDksIDkxNDEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MTQxNywgCisgICAgOTE0MjMsIDkxNDI5LCA5MTQzNSwgOTE0NDEsIDAsIDAsIDkxNDQ1LCA5MTQ1MSwgOTE0NTcsIDkxNDYzLCA5MTQ2OSwgCisgICAgOTE0NzUsIDkxNDgyLCA5MTQ4OSwgOTE0OTYsIDkxNTAzLCA5MTUxMCwgOTE1MTcsIDAsIDkxNTI0LCA5MTUzMSwgOTE1MzgsIAorICAgIDkxNTQ0LCA5MTU1MSwgOTE1NTgsIDkxNTY1LCA5MTU3MiwgOTE1NzgsIDkxNTg1LCA5MTU5MiwgOTE1OTksIDkxNjA2LCAKKyAgICA5MTYxMiwgOTE2MTksIDkxNjI2LCA5MTYzMywgOTE2NDAsIDkxNjQ2LCA5MTY1MywgOTE2NjAsIDkxNjY3LCA5MTY3NCwgCisgICAgOTE2ODEsIDkxNjg4LCA5MTY5NSwgMCwgOTE3MDIsIDkxNzA5LCA5MTcxNiwgOTE3MjMsIDkxNzMwLCA5MTczNywgOTE3NDQsIAorICAgIDkxNzUxLCA5MTc1OCwgOTE3NjUsIDkxNzcyLCA5MTc3OSwgOTE3ODYsIDkxNzkzLCA5MTc5OSwgOTE4MDYsIDkxODEzLCAKKyAgICA5MTgyMCwgOTE4MjcsIDAsIDkxODM0LCA5MTg0MSwgMCwgOTE4NDgsIDkxODU1LCA5MTg2MiwgOTE4NjksIDkxODc2LCAKKyAgICA5MTg4MywgOTE4OTAsIDkxODk3LCA5MTkwNCwgOTE5MTEsIDkxOTE4LCA5MTkyNSwgOTE5MzIsIDkxOTM5LCA5MTk0NiwgMCwgCisgICAgMCwgOTE5NTIsIDkxOTU3LCA5MTk2MiwgOTE5NjcsIDkxOTcyLCA5MTk3NywgOTE5ODIsIDkxOTg3LCA5MTk5MiwgOTE5OTcsIAorICAgIDkyMDAyLCA5MjAwNywgOTIwMTIsIDkyMDE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5MjAyMiwgOTIwMjksIAorICAgIDkyMDM2LCA5MjA0MywgOTIwNTAsIDkyMDU3LCA5MjA2NCwgOTIwNzEsIDkyMDc4LCA5MjA4NSwgOTIwOTIsIDkyMDk5LCAKKyAgICA5MjEwNiwgOTIxMTMsIDkyMTIwLCA5MjEyNywgOTIxMzQsIDkyMTQxLCA5MjE0OCwgOTIxNTUsIDkyMTYzLCA5MjE3MSwgCisgICAgOTIxNzgsIDkyMTg1LCA5MjE5MCwgOTIxOTgsIDkyMjA2LCA5MjIxMywgOTIyMjAsIDkyMjI1LCA5MjIzMiwgOTIyMzcsIAorICAgIDkyMjQyLCA5MjI0OSwgOTIyNTQsIDkyMjU5LCA5MjI2NCwgOTIyNzIsIDkyMjc3LCA5MjI4MiwgOTIyODksIDkyMjk0LCAKKyAgICA5MjI5OSwgOTIzMDYsIDkyMzEzLCA5MjMxOCwgOTIzMjMsIDkyMzI4LCA5MjMzMywgOTIzMzgsIDkyMzQzLCA5MjM0OCwgCisgICAgOTIzNTMsIDkyMzU4LCA5MjM2NSwgOTIzNzAsIDkyMzc3LCA5MjM4MiwgOTIzODcsIDkyMzkyLCA5MjM5NywgOTI0MDIsIAorICAgIDkyNDA3LCA5MjQxMiwgOTI0MTcsIDkyNDIyLCA5MjQyNywgOTI0MzIsIDkyNDM5LCA5MjQ0NiwgOTI0NTMsIDkyNDYwLCAKKyAgICA5MjQ2NiwgOTI0NzEsIDkyNDc4LCA5MjQ4MywgOTI0ODgsIDkyNDk3LCA5MjUwNCwgOTI1MTMsIDkyNTIwLCA5MjUyNSwgCisgICAgOTI1MzAsIDkyNTM4LCA5MjU0MywgOTI1NDgsIDkyNTUzLCA5MjU1OCwgOTI1NjMsIDkyNTcwLCA5MjU3NSwgOTI1ODAsIAorICAgIDkyNTg1LCA5MjU5MCwgOTI1OTUsIDkyNjAyLCA5MjYwOSwgOTI2MTYsIDkyNjIzLCA5MjYzMCwgOTI2MzcsIDkyNjQ0LCAKKyAgICA5MjY1MSwgOTI2NTgsIDkyNjY1LCA5MjY3MiwgOTI2NzksIDkyNjg2LCA5MjY5MywgOTI3MDAsIDkyNzA3LCA5MjcxNCwgCisgICAgOTI3MjEsIDkyNzI4LCA5MjczNSwgOTI3NDIsIDkyNzQ5LCA5Mjc1NiwgOTI3NjMsIDkyNzcwLCA5Mjc3NywgOTI3ODQsIAorICAgIDkyNzkxLCAwLCAwLCAwLCAwLCAwLCA5Mjc5OCwgOTI4MDYsIDkyODE0LCAwLCAwLCAwLCAwLCA5MjgxOSwgOTI4MjMsIAorICAgIDkyODI3LCA5MjgzMSwgOTI4MzUsIDkyODM5LCA5Mjg0MywgOTI4NDgsIDkyODUyLCA5Mjg1NywgOTI4NjIsIDkyODY3LCAKKyAgICA5Mjg3MiwgOTI4NzcsIDkyODgyLCA5Mjg4NywgOTI4OTIsIDkyODk3LCA5MjkwMiwgOTI5MDgsIDkyOTE0LCA5MjkyMCwgCisgICAgOTI5MjcsIDkyOTM0LCA5Mjk0MSwgOTI5NDgsIDkyOTU1LCA5Mjk2MiwgOTI5NjgsIDkyOTc0LCA5Mjk4MCwgOTI5ODcsIAorICAgIDkyOTk0LCA5MzAwMSwgOTMwMDgsIDkzMDE1LCA5MzAyMiwgOTMwMjksIDkzMDM2LCA5MzA0MywgOTMwNTAsIDkzMDU3LCAKKyAgICA5MzA2NCwgOTMwNzEsIDkzMDc4LCAwLCAwLCAwLCA5MzA4NSwgOTMwOTMsIDkzMTAxLCA5MzEwOSwgOTMxMTcsIDkzMTI1LCAKKyAgICA5MzEzNSwgOTMxNDUsIDkzMTUzLCA5MzE2MSwgOTMxNjksIDkzMTc3LCA5MzE4NSwgOTMxOTEsIDkzMTk4LCA5MzIwNywgCisgICAgOTMyMTYsIDkzMjI1LCA5MzIzNCwgOTMyNDMsIDkzMjUyLCA5MzI2MiwgOTMyNzMsIDkzMjgzLCA5MzI5NCwgOTMzMDMsIAorICAgIDkzMzEyLCA5MzMyMSwgOTMzMzEsIDkzMzQyLCA5MzM1MiwgOTMzNjMsIDkzMzc0LCA5MzM4MywgOTMzOTEsIDkzMzk3LCAKKyAgICA5MzQwMywgOTM0MDksIDkzNDE1LCA5MzQyMywgOTM0MzEsIDkzNDM3LCA5MzQ0NCwgOTM0NTQsIDkzNDYxLCA5MzQ2OCwgCisgICAgOTM0NzUsIDkzNDgyLCA5MzQ4OSwgOTM0OTksIDkzNTA2LCA5MzUxMywgOTM1MjEsIDkzNTI5LCA5MzUzOCwgOTM1NDcsIAorICAgIDkzNTU2LCA5MzU2NSwgOTM1NzQsIDkzNTgyLCA5MzU5MSwgOTM2MDAsIDkzNjA5LCA5MzYxMywgOTM2MjAsIDkzNjI1LCAKKyAgICA5MzYzMCwgOTM2MzQsIDkzNjM4LCA5MzY0MiwgOTM2NDYsIDkzNjUxLCA5MzY1NiwgOTM2NjIsIDkzNjY4LCA5MzY3MiwgCisgICAgOTM2NzgsIDkzNjgyLCA5MzY4NiwgOTM2OTAsIDkzNjk0LCA5MzY5OCwgOTM3MDIsIDkzNzA4LCA5MzcxMiwgOTM3MTcsIAorICAgIDkzNzIxLCA5MzcyNSwgMCwgOTM3MjgsIDkzNzMzLCA5MzczOCwgOTM3NDMsIDkzNzQ4LCA5Mzc1NSwgOTM3NjAsIDkzNzY1LCAKKyAgICA5Mzc3MCwgOTM3NzUsIDkzNzgwLCA5Mzc4NSwgMCwgMCwgMCwgMCwgOTM3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDkyOTY2LCA5Mjk3MywgOTI5ODIsIDkyOTkxLCA5Mjk5OCwgCi0gICAgOTMwMDUsIDkzMDEyLCA5MzAxOSwgOTMwMjYsIDkzMDMzLCA5MzAzOSwgOTMwNDYsIDkzMDUzLCA5MzA2MCwgOTMwNjcsIAotICAgIDkzMDc0LCA5MzA4MSwgOTMwODgsIDkzMDk1LCA5MzEwNCwgOTMxMTEsIDkzMTE4LCA5MzEyNSwgOTMxMzIsIDkzMTM5LCAKLSAgICA5MzE0NiwgOTMxNTMsIDkzMTYwLCA5MzE2OSwgOTMxNzYsIDkzMTgzLCA5MzE5MCwgOTMxOTcsIDkzMjA0LCA5MzIxMSwgCi0gICAgOTMyMjAsIDkzMjI3LCA5MzIzNCwgOTMyNDEsIDkzMjQ4LCA5MzI1NywgOTMyNjQsIDkzMjcxLCA5MzI3OCwgOTMyODYsIAotICAgIDkzMjk1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5Mzc5NiwgOTM4MDMsIDkzODEyLCA5MzgyMSwgCisgICAgOTM4MjgsIDkzODM1LCA5Mzg0MiwgOTM4NDksIDkzODU2LCA5Mzg2MywgOTM4NjksIDkzODc2LCA5Mzg4MywgOTM4OTAsIAorICAgIDkzODk3LCA5MzkwNCwgOTM5MTEsIDkzOTE4LCA5MzkyNSwgOTM5MzQsIDkzOTQxLCA5Mzk0OCwgOTM5NTUsIDkzOTYyLCAKKyAgICA5Mzk2OSwgOTM5NzYsIDkzOTgzLCA5Mzk5MCwgOTM5OTksIDk0MDA2LCA5NDAxMywgOTQwMjAsIDk0MDI3LCA5NDAzNCwgCisgICAgOTQwNDEsIDk0MDUwLCA5NDA1NywgOTQwNjQsIDk0MDcxLCA5NDA3OCwgOTQwODcsIDk0MDk0LCA5NDEwMSwgOTQxMDgsIAorICAgIDk0MTE2LCA5NDEyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTMzMDQsIDkzMzA4LCA5MzMxMiwgOTMzMTcsIDkzMzIyLCAKLSAgICA5MzMyNywgOTMzMzIsIDkzMzM2LCA5MzM0MSwgOTMzNDYsIDkzMzUxLCA5MzM1NiwgOTMzNjEsIDkzMzY2LCA5MzM3MCwgCi0gICAgOTMzNzUsIDkzMzgwLCA5MzM4NSwgOTMzOTAsIDkzMzk0LCA5MzM5OSwgOTM0MDQsIDkzNDA4LCA5MzQxMiwgOTM0MTcsIAotICAgIDkzNDIyLCA5MzQyNywgOTM0MzIsIDkzNDM3LCAwLCAwLCAwLCA5MzQ0MiwgOTM0NDYsIDkzNDUxLCA5MzQ1NiwgOTM0NjAsIAotICAgIDkzNDY1LCA5MzQ2OSwgOTM0NzQsIDkzNDc5LCA5MzQ4NCwgOTM0ODksIDkzNDk0LCA5MzQ5OCwgOTM1MDMsIDkzNTA4LCAKLSAgICA5MzUxMywgOTM1MTgsIDkzNTIyLCA5MzUyNywgOTM1MzEsIDkzNTM2LCA5MzU0MSwgOTM1NDYsIDkzNTUxLCA5MzU1NiwgCi0gICAgOTM1NjEsIDkzNTY1LCA5MzU2OSwgOTM1NzQsIDkzNTc5LCA5MzU4NCwgOTM1ODksIDkzNTk0LCA5MzU5OSwgOTM2MDQsIAotICAgIDkzNjA5LCA5MzYxNCwgOTM2MTksIDkzNjI0LCA5MzYyOSwgOTM2MzQsIDkzNjM5LCA5MzY0NCwgOTM2NDksIDkzNjU0LCAKLSAgICA5MzY1OSwgOTM2NjQsIDkzNjY5LCA5MzY3NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTM2NzksIDkzNjg1LCA5MzY5MCwgOTM2OTUsIDkzNzAwLCA5MzcwNSwgOTM3MTAsIDkzNzE1LCA5MzcyMSwgOTM3MjYsIAotICAgIDkzNzMyLCA5MzczOCwgOTM3NDQsIDkzNzUwLCA5Mzc1NiwgOTM3NjIsIDkzNzY4LCA5Mzc3NCwgOTM3ODAsIDkzNzg2LCAKLSAgICA5Mzc5MywgOTM4MDAsIDkzODA3LCA5MzgxNSwgOTM4MjMsIDkzODMxLCA5MzgzOSwgOTM4NDcsIDAsIDAsIDAsIDAsIAotICAgIDkzODU1LCA5Mzg1OSwgOTM4NjQsIDkzODY5LCA5Mzg3NCwgOTM4NzgsIDkzODgzLCA5Mzg4OCwgOTM4OTMsIDkzODk4LCAKLSAgICA5MzkwMiwgOTM5MDYsIDkzOTExLCA5MzkxNiwgOTM5MjEsIDkzOTI2LCA5MzkzMCwgOTM5MzUsIDkzOTQwLCA5Mzk0NSwgCi0gICAgOTM5NTAsIDkzOTU1LCA5Mzk2MCwgOTM5NjQsIDkzOTY5LCA5Mzk3NCwgOTM5NzksIDkzOTg0LCA5Mzk4OSwgOTM5OTQsIAotICAgIDkzOTk5LCA5NDAwNCwgOTQwMDksIDk0MDE0LCA5NDAxOSwgOTQwMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDk0MDMxLCA5NDAzNiwgOTQwNDEsIDk0MDQ2LCA5NDA1MSwgOTQwNTYsIDk0MDYxLCA5NDA2NiwgOTQwNzEsIAotICAgIDk0MDc2LCA5NDA4MSwgOTQwODYsIDk0MDkxLCA5NDA5NiwgOTQxMDEsIDk0MTA2LCA5NDExMSwgOTQxMTYsIDk0MTIxLCAKLSAgICA5NDEyNiwgOTQxMzEsIDk0MTM2LCA5NDE0MSwgOTQxNDYsIDk0MTUxLCA5NDE1NiwgOTQxNjEsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk0MTY4LCA5NDE3NCwgOTQxODAsIDk0MTg2LCA5NDE5MiwgOTQxOTcsIDk0MjAzLCA5NDIwOSwgOTQyMTUsIDk0MjIxLCAKLSAgICA5NDIyNiwgOTQyMzIsIDk0MjM4LCA5NDI0NCwgOTQyNTAsIDk0MjU2LCA5NDI2MiwgOTQyNjgsIDk0Mjc0LCA5NDI4MCwgCi0gICAgOTQyODUsIDk0MjkxLCA5NDI5NywgOTQzMDMsIDk0MzA5LCA5NDMxNSwgOTQzMjAsIDk0MzI2LCA5NDMzMiwgOTQzMzcsIAotICAgIDk0MzQzLCA5NDM0OSwgOTQzNTUsIDk0MzYxLCA5NDM2NywgOTQzNzMsIDk0Mzc5LCA5NDM4NCwgOTQzOTAsIDk0Mzk3LCAKLSAgICA5NDQwNCwgOTQ0MTEsIDk0NDE4LCAwLCAwLCAwLCAwLCAwLCA5NDQyNSwgOTQ0MzAsIDk0NDM1LCA5NDQ0MCwgOTQ0NDUsIAotICAgIDk0NDUwLCA5NDQ1NSwgOTQ0NjAsIDk0NDY1LCA5NDQ3MCwgOTQ0NzUsIDk0NDgwLCA5NDQ4NSwgOTQ0OTAsIDk0NDk1LCAKLSAgICA5NDUwMCwgOTQ1MDUsIDk0NTEwLCA5NDUxNSwgOTQ1MjAsIDk0NTI1LCA5NDUzMCwgOTQ1MzUsIDk0NTQwLCA5NDU0NSwgCi0gICAgOTQ1NTAsIDk0NTU1LCA5NDU1OSwgOTQ1NjMsIDk0NTY3LCAwLCA5NDU3MiwgOTQ1NzgsIDk0NTgzLCA5NDU4OCwgOTQ1OTMsIAotICAgIDk0NTk4LCA5NDYwNCwgOTQ2MTAsIDk0NjE2LCA5NDYyMiwgOTQ2MjgsIDk0NjM0LCA5NDY0MCwgOTQ2NDYsIDk0NjUyLCAKLSAgICA5NDY1OCwgOTQ2NjQsIDk0NjcwLCA5NDY3NiwgOTQ2ODEsIDk0Njg3LCA5NDY5MywgOTQ2OTksIDk0NzA1LCA5NDcxMCwgCi0gICAgOTQ3MTYsIDk0NzIyLCA5NDcyNywgOTQ3MzMsIDk0NzM5LCA5NDc0NSwgOTQ3NTEsIDk0NzU3LCA5NDc2MywgOTQ3NjksIAotICAgIDk0Nzc1LCA5NDc4MSwgMCwgMCwgMCwgMCwgOTQ3ODYsIDk0NzkyLCA5NDc5OCwgOTQ4MDQsIDk0ODEwLCA5NDgxNiwgCi0gICAgOTQ4MjIsIDk0ODI4LCA5NDgzNCwgOTQ4NDEsIDk0ODQ2LCA5NDg1MSwgOTQ4NTcsIDk0ODYzLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NDEzNCwgOTQxMzgsIDk0MTQyLCA5NDE0NywgCisgICAgOTQxNTIsIDk0MTU3LCA5NDE2MiwgOTQxNjYsIDk0MTcxLCA5NDE3NiwgOTQxODEsIDk0MTg2LCA5NDE5MSwgOTQxOTYsIAorICAgIDk0MjAwLCA5NDIwNSwgOTQyMTAsIDk0MjE1LCA5NDIyMCwgOTQyMjQsIDk0MjI5LCA5NDIzNCwgOTQyMzgsIDk0MjQzLCAKKyAgICA5NDI0OCwgOTQyNTMsIDk0MjU4LCA5NDI2MywgOTQyNjgsIDAsIDAsIDAsIDk0MjczLCA5NDI3NywgOTQyODIsIDk0Mjg3LCAKKyAgICA5NDI5MSwgOTQyOTYsIDk0MzAwLCA5NDMwNSwgOTQzMTAsIDk0MzE1LCA5NDMyMCwgOTQzMjUsIDk0MzI5LCA5NDMzNCwgCisgICAgOTQzMzksIDk0MzQ0LCA5NDM0OSwgOTQzNTQsIDk0MzU5LCA5NDM2MywgOTQzNjgsIDk0MzczLCA5NDM3OCwgOTQzODMsIAorICAgIDk0Mzg4LCA5NDM5MywgOTQzOTcsIDk0NDAxLCA5NDQwNiwgOTQ0MTEsIDk0NDE2LCA5NDQyMSwgOTQ0MjYsIDk0NDMxLCAKKyAgICA5NDQzNiwgOTQ0NDEsIDk0NDQ2LCA5NDQ1MSwgOTQ0NTYsIDk0NDYxLCA5NDQ2NiwgOTQ0NzEsIDk0NDc2LCA5NDQ4MSwgCisgICAgOTQ0ODYsIDk0NDkxLCA5NDQ5NiwgOTQ1MDEsIDk0NTA2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA5NDUxMSwgOTQ1MTcsIDk0NTIyLCA5NDUyNywgOTQ1MzIsIDk0NTM3LCA5NDU0MiwgOTQ1NDcsIDk0NTUzLCAKKyAgICA5NDU1OCwgOTQ1NjQsIDk0NTcwLCA5NDU3NiwgOTQ1ODIsIDk0NTg4LCA5NDU5NCwgOTQ2MDAsIDk0NjA2LCA5NDYxMiwgCisgICAgOTQ2MTgsIDk0NjI1LCA5NDYzMiwgOTQ2MzksIDk0NjQ3LCA5NDY1NSwgOTQ2NjMsIDk0NjcxLCA5NDY3OSwgMCwgMCwgMCwgCisgICAgMCwgOTQ2ODcsIDk0NjkxLCA5NDY5NiwgOTQ3MDEsIDk0NzA2LCA5NDcxMCwgOTQ3MTUsIDk0NzIwLCA5NDcyNSwgOTQ3MzAsIAorICAgIDk0NzM0LCA5NDczOCwgOTQ3NDMsIDk0NzQ4LCA5NDc1MywgOTQ3NTgsIDk0NzYyLCA5NDc2NywgOTQ3NzIsIDk0Nzc3LCAKKyAgICA5NDc4MiwgOTQ3ODcsIDk0NzkyLCA5NDc5NiwgOTQ4MDEsIDk0ODA2LCA5NDgxMSwgOTQ4MTYsIDk0ODIxLCA5NDgyNiwgCisgICAgOTQ4MzEsIDk0ODM2LCA5NDg0MSwgOTQ4NDYsIDk0ODUxLCA5NDg1NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgOTQ4NjMsIDk0ODY4LCA5NDg3MywgOTQ4NzgsIDk0ODgzLCA5NDg4OCwgOTQ4OTMsIDk0ODk4LCA5NDkwMywgCisgICAgOTQ5MDgsIDk0OTEzLCA5NDkxOCwgOTQ5MjMsIDk0OTI4LCA5NDkzMywgOTQ5MzgsIDk0OTQzLCA5NDk0OCwgOTQ5NTMsIAorICAgIDk0OTU4LCA5NDk2MywgOTQ5NjgsIDk0OTczLCA5NDk3OCwgOTQ5ODMsIDk0OTg4LCA5NDk5MywgMCwgMCwgMCwgMCwgMCwgCisgICAgOTUwMDAsIDk1MDA2LCA5NTAxMiwgOTUwMTgsIDk1MDI0LCA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIAorICAgIDk1MDU4LCA5NTA2NCwgOTUwNzAsIDk1MDc2LCA5NTA4MiwgOTUwODgsIDk1MDk0LCA5NTEwMCwgOTUxMDYsIDk1MTEyLCAKKyAgICA5NTExNywgOTUxMjMsIDk1MTI5LCA5NTEzNSwgOTUxNDEsIDk1MTQ3LCA5NTE1MiwgOTUxNTgsIDk1MTY0LCA5NTE2OSwgCisgICAgOTUxNzUsIDk1MTgxLCA5NTE4NywgOTUxOTMsIDk1MTk5LCA5NTIwNSwgOTUyMTEsIDk1MjE2LCA5NTIyMiwgOTUyMjksIAorICAgIDk1MjM2LCA5NTI0MywgOTUyNTAsIDAsIDAsIDAsIDAsIDAsIDk1MjU3LCA5NTI2MiwgOTUyNjcsIDk1MjcyLCA5NTI3NywgCisgICAgOTUyODIsIDk1Mjg3LCA5NTI5MiwgOTUyOTcsIDk1MzAyLCA5NTMwNywgOTUzMTIsIDk1MzE3LCA5NTMyMiwgOTUzMjcsIAorICAgIDk1MzMyLCA5NTMzNywgOTUzNDIsIDk1MzQ3LCA5NTM1MiwgOTUzNTcsIDk1MzYyLCA5NTM2NywgOTUzNzIsIDk1Mzc3LCAKKyAgICA5NTM4MiwgOTUzODcsIDk1MzkxLCA5NTM5NSwgOTUzOTksIDAsIDk1NDA0LCA5NTQxMCwgOTU0MTUsIDk1NDIwLCA5NTQyNSwgCisgICAgOTU0MzAsIDk1NDM2LCA5NTQ0MiwgOTU0NDgsIDk1NDU0LCA5NTQ2MCwgOTU0NjYsIDk1NDcyLCA5NTQ3OCwgOTU0ODQsIAorICAgIDk1NDkwLCA5NTQ5NiwgOTU1MDIsIDk1NTA4LCA5NTUxMywgOTU1MTksIDk1NTI1LCA5NTUzMCwgOTU1MzYsIDk1NTQxLCAKKyAgICA5NTU0NywgOTU1NTMsIDk1NTU4LCA5NTU2NCwgOTU1NzAsIDk1NTc2LCA5NTU4MiwgOTU1ODcsIDk1NTkzLCA5NTU5OSwgCisgICAgOTU2MDUsIDk1NjExLCAwLCAwLCAwLCAwLCA5NTYxNiwgOTU2MjIsIDk1NjI4LCA5NTYzNCwgOTU2NDAsIDk1NjQ2LCAKKyAgICA5NTY1MiwgOTU2NTgsIDk1NjY0LCA5NTY3MSwgOTU2NzYsIDk1NjgxLCA5NTY4NywgOTU2OTMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk0ODY5LCA5NDg3NSwgOTQ4ODEsIDk0ODg3LCA5NDg5NCwgCi0gICAgOTQ5MDAsIDk0OTA3LCA5NDkxNCwgOTQ5MjEsIDk0OTI4LCA5NDkzNiwgOTQ5NDMsIDk0OTUxLCA5NDk1NywgOTQ5NjMsIAotICAgIDk0OTY5LCA5NDk3NSwgOTQ5ODEsIDk0OTg3LCA5NDk5MywgOTQ5OTksIDk1MDA1LCA5NTAxMSwgOTUwMTcsIDk1MDIzLCAKLSAgICA5NTAyOSwgOTUwMzUsIDk1MDQxLCA5NTA0NywgOTUwNTMsIDk1MDU5LCA5NTA2NSwgOTUwNzEsIDk1MDc3LCA5NTA4MywgCi0gICAgOTUwODksIDk1MDk1LCA5NTEwMSwgOTUxMDcsIDk1MTEzLCA5NTExOSwgOTUxMjUsIDk1MTMxLCA5NTEzNywgOTUxNDQsIAotICAgIDk1MTUwLCA5NTE1NywgOTUxNjQsIDk1MTcxLCA5NTE3OCwgOTUxODYsIDk1MTkzLCA5NTIwMSwgOTUyMDcsIDk1MjEzLCAKLSAgICA5NTIxOSwgOTUyMjUsIDk1MjMxLCA5NTIzNywgOTUyNDMsIDk1MjQ5LCA5NTI1NSwgOTUyNjEsIDk1MjY3LCA5NTI3MywgCi0gICAgOTUyNzksIDk1Mjg1LCA5NTI5MSwgOTUyOTcsIDk1MzAzLCA5NTMwOSwgOTUzMTUsIDk1MzIxLCA5NTMyNywgOTUzMzMsIAotICAgIDk1MzM5LCA5NTM0NSwgOTUzNTEsIDk1MzU3LCA5NTM2MywgOTUzNjksIDk1Mzc0LCA5NTM3OSwgOTUzODQsIDk1Mzg5LCAKLSAgICA5NTM5NCwgOTUzOTksIDk1NDA0LCA5NTQwOSwgOTU0MTQsIDk1NDE5LCA5NTQyNCwgOTU0MjksIDk1NDM0LCA5NTQzOSwgCi0gICAgOTU0NDQsIDk1NDQ5LCA5NTQ1NCwgOTU0NTksIDk1NDY0LCA5NTQ2OSwgOTU0NzQsIDk1NDc5LCA5NTQ4NCwgOTU0ODksIAotICAgIDk1NDk0LCA5NTQ5OSwgOTU1MDQsIDk1NTA5LCA5NTUxNCwgOTU1MTksIDk1NTI0LCA5NTUyOSwgOTU1MzQsIDk1NTM5LCAKLSAgICA5NTU0NCwgOTU1NDksIDk1NTU0LCA5NTU1OSwgOTU1NjQsIDk1NTY5LCA5NTU3NCwgOTU1NzksIDk1NTg0LCA5NTU4OSwgCi0gICAgOTU1OTQsIDk1NTk5LCA5NTYwNCwgOTU2MDksIDk1NjE0LCA5NTYxOSwgOTU2MjQsIDk1NjI5LCA5NTYzNCwgOTU2MzksIAotICAgIDk1NjQ0LCA5NTY0OSwgOTU2NTQsIDk1NjU5LCA5NTY2NCwgOTU2NjksIDk1Njc0LCA5NTY3OSwgOTU2ODQsIDk1Njg5LCAKLSAgICA5NTY5NCwgOTU2OTksIDk1NzA0LCA5NTcwOSwgOTU3MTMsIDk1NzE3LCA5NTcyMSwgOTU3MjUsIDk1NzI5LCA5NTczMywgCi0gICAgOTU3MzcsIDk1NzQyLCA5NTc0NywgMCwgMCwgOTU3NTIsIDk1NzU3LCA5NTc2MSwgOTU3NjUsIDk1NzY5LCA5NTc3MywgCi0gICAgOTU3NzcsIDk1NzgxLCA5NTc4NiwgOTU3OTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk1Njk5LCA5NTcwNSwgOTU3MTEsIDk1NzE3LCA5NTcyNCwgCisgICAgOTU3MzAsIDk1NzM3LCA5NTc0NCwgOTU3NTEsIDk1NzU4LCA5NTc2NiwgOTU3NzMsIDk1NzgxLCA5NTc4NywgOTU3OTMsIAorICAgIDk1Nzk5LCA5NTgwNSwgOTU4MTEsIDk1ODE3LCA5NTgyMywgOTU4MjksIDk1ODM1LCA5NTg0MSwgOTU4NDcsIDk1ODUzLCAKKyAgICA5NTg1OSwgOTU4NjUsIDk1ODcxLCA5NTg3NywgOTU4ODMsIDk1ODg5LCA5NTg5NSwgOTU5MDEsIDk1OTA3LCA5NTkxMywgCisgICAgOTU5MTksIDk1OTI1LCA5NTkzMSwgOTU5MzcsIDk1OTQzLCA5NTk0OSwgOTU5NTUsIDk1OTYxLCA5NTk2NywgOTU5NzQsIAorICAgIDk1OTgwLCA5NTk4NywgOTU5OTQsIDk2MDAxLCA5NjAwOCwgOTYwMTYsIDk2MDIzLCA5NjAzMSwgOTYwMzcsIDk2MDQzLCAKKyAgICA5NjA0OSwgOTYwNTUsIDk2MDYxLCA5NjA2NywgOTYwNzMsIDk2MDc5LCA5NjA4NSwgOTYwOTEsIDk2MDk3LCA5NjEwMywgCisgICAgOTYxMDksIDk2MTE1LCA5NjEyMSwgOTYxMjcsIDk2MTMzLCA5NjEzOSwgOTYxNDUsIDk2MTUxLCA5NjE1NywgOTYxNjMsIAorICAgIDk2MTY5LCA5NjE3NSwgOTYxODEsIDk2MTg3LCA5NjE5MywgOTYxOTksIDk2MjA0LCA5NjIwOSwgOTYyMTQsIDk2MjE5LCAKKyAgICA5NjIyNCwgOTYyMjksIDk2MjM0LCA5NjIzOSwgOTYyNDQsIDk2MjQ5LCA5NjI1NCwgOTYyNTksIDk2MjY0LCA5NjI2OSwgCisgICAgOTYyNzQsIDk2Mjc5LCA5NjI4NCwgOTYyODksIDk2Mjk0LCA5NjI5OSwgOTYzMDQsIDk2MzA5LCA5NjMxNCwgOTYzMTksIAorICAgIDk2MzI0LCA5NjMyOSwgOTYzMzQsIDk2MzM5LCA5NjM0NCwgOTYzNDksIDk2MzU0LCA5NjM1OSwgOTYzNjQsIDk2MzY5LCAKKyAgICA5NjM3NCwgOTYzNzksIDk2Mzg0LCA5NjM4OSwgOTYzOTQsIDk2Mzk5LCA5NjQwNCwgOTY0MDksIDk2NDE0LCA5NjQxOSwgCisgICAgOTY0MjQsIDk2NDI5LCA5NjQzNCwgOTY0MzksIDk2NDQ0LCA5NjQ0OSwgOTY0NTQsIDk2NDU5LCA5NjQ2NCwgOTY0NjksIAorICAgIDk2NDc0LCA5NjQ3OSwgOTY0ODQsIDk2NDg5LCA5NjQ5NCwgOTY0OTksIDk2NTA0LCA5NjUwOSwgOTY1MTQsIDk2NTE5LCAKKyAgICA5NjUyNCwgOTY1MjksIDk2NTM0LCA5NjUzOSwgOTY1NDMsIDk2NTQ3LCA5NjU1MSwgOTY1NTUsIDk2NTU5LCA5NjU2MywgCisgICAgOTY1NjcsIDk2NTcyLCA5NjU3NywgMCwgMCwgOTY1ODIsIDk2NTg3LCA5NjU5MSwgOTY1OTUsIDk2NTk5LCA5NjYwMywgCisgICAgOTY2MDcsIDk2NjExLCA5NjYxNiwgOTY2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDk2NjI1LCA5NjYzMCwgOTY2MzYsIDk2NjQyLCAKKyAgICA5NjY0OCwgOTY2NTQsIDk2NjYwLCA5NjY2NiwgOTY2NzEsIDk2Njc3LCA5NjY4MiwgOTY2ODgsIDk2NjkzLCA5NjY5OCwgCisgICAgOTY3MDQsIDk2NzEwLCA5NjcxNSwgOTY3MjAsIDk2NzI1LCA5NjczMCwgOTY3MzYsIDk2NzQxLCA5Njc0NywgOTY3NTMsIAorICAgIDk2NzU5LCA5Njc2NSwgOTY3NzEsIDk2Nzc3LCA5Njc4MywgOTY3ODksIDk2Nzk1LCA5NjgwMCwgOTY4MDYsIDk2ODEyLCAKKyAgICA5NjgxOCwgOTY4MjQsIDAsIDAsIDAsIDAsIDk2ODMwLCA5NjgzNSwgOTY4NDEsIDk2ODQ3LCA5Njg1MywgOTY4NTksIAorICAgIDk2ODY1LCA5Njg3MSwgOTY4NzYsIDk2ODgyLCA5Njg4NywgOTY4OTMsIDk2ODk4LCA5NjkwMywgOTY5MDksIDk2OTE1LCAKKyAgICA5NjkyMCwgOTY5MjUsIDk2OTMwLCA5NjkzNSwgOTY5NDEsIDk2OTQ2LCA5Njk1MiwgOTY5NTgsIDk2OTY0LCA5Njk3MCwgCisgICAgOTY5NzYsIDk2OTgyLCA5Njk4OCwgOTY5OTQsIDk3MDAwLCA5NzAwNSwgOTcwMTEsIDk3MDE3LCA5NzAyMywgOTcwMjksIDAsIAorICAgIDAsIDAsIDAsIDk3MDM1LCA5NzAzOSwgOTcwNDQsIDk3MDQ5LCA5NzA1NCwgOTcwNTksIDk3MDY0LCA5NzA2OSwgOTcwNzQsIAorICAgIDk3MDc4LCA5NzA4MywgOTcwODgsIDk3MDkzLCA5NzA5OCwgOTcxMDIsIDk3MTA3LCA5NzExMiwgOTcxMTcsIDk3MTIyLCAKKyAgICA5NzEyNywgOTcxMzIsIDk3MTM2LCA5NzE0MSwgOTcxNDUsIDk3MTUwLCA5NzE1NSwgOTcxNjAsIDk3MTY1LCA5NzE3MCwgCisgICAgOTcxNzUsIDk3MTgwLCA5NzE4NSwgOTcxODksIDk3MTk0LCA5NzE5OSwgOTcyMDQsIDk3MjA5LCA5NzIxNCwgOTcyMTksIAorICAgIDk3MjI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzIyOSwgOTcyMzYsIDk3MjQzLCA5NzI1MCwgOTcyNTcsIDk3MjY0LCAKKyAgICA5NzI3MSwgOTcyNzgsIDk3Mjg1LCA5NzI5MiwgOTcyOTksIDk3MzA2LCA5NzMxMywgOTczMjAsIDk3MzI3LCA5NzMzNCwgCisgICAgOTczNDEsIDk3MzQ4LCA5NzM1NSwgOTczNjIsIDk3MzY5LCA5NzM3NiwgOTczODMsIDk3MzkwLCA5NzM5NywgOTc0MDQsIAorICAgIDk3NDExLCA5NzQxOCwgOTc0MjUsIDk3NDMyLCA5NzQzOSwgOTc0NDYsIDk3NDUzLCA5NzQ2MCwgOTc0NjcsIDk3NDc0LCAKKyAgICA5NzQ4MSwgOTc0ODgsIDk3NDk1LCA5NzUwMiwgOTc1MDksIDk3NTE2LCA5NzUyMywgOTc1MzAsIDk3NTM3LCA5NzU0NCwgCisgICAgOTc1NTEsIDk3NTU4LCA5NzU2NSwgOTc1NzIsIDk3NTc5LCA5NzU4NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgOTc1OTMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDk1Nzk1LCA5NTc5OSwgOTU4MDQsIDk1ODA5LCA5NTgxNCwgOTU4MTksIDk1ODI0LCA5NTgyOSwgOTU4MzQsIDk1ODM4LCAKLSAgICA5NTg0MywgOTU4NDgsIDk1ODUzLCA5NTg1OCwgOTU4NjIsIDk1ODY3LCA5NTg3MiwgOTU4NzcsIDk1ODgyLCA5NTg4NywgCi0gICAgOTU4OTIsIDk1ODk3LCA5NTkwMiwgOTU5MDYsIDk1OTExLCA5NTkxNiwgOTU5MjEsIDk1OTI2LCA5NTkzMSwgOTU5MzYsIAotICAgIDk1OTQxLCA5NTk0NiwgOTU5NTAsIDk1OTU1LCA5NTk2MCwgOTU5NjUsIDk1OTcwLCA5NTk3NSwgOTU5ODAsIDk1OTg1LCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NTk5MCwgOTU5OTcsIDk2MDA0LCA5NjAxMSwgOTYwMTgsIDk2MDI1LCA5NjAzMiwgCi0gICAgOTYwMzksIDk2MDQ2LCA5NjA1MywgOTYwNjAsIDk2MDY3LCA5NjA3NCwgOTYwODEsIDk2MDg4LCA5NjA5NSwgOTYxMDIsIAotICAgIDk2MTA5LCA5NjExNiwgOTYxMjMsIDk2MTMwLCA5NjEzNywgOTYxNDQsIDk2MTUxLCA5NjE1OCwgOTYxNjUsIDk2MTcyLCAKLSAgICA5NjE3OSwgOTYxODYsIDk2MTkzLCA5NjIwMCwgOTYyMDcsIDk2MjE0LCA5NjIyMSwgOTYyMjgsIDk2MjM1LCA5NjI0MiwgCi0gICAgOTYyNDksIDk2MjU2LCA5NjI2MywgOTYyNzAsIDk2Mjc3LCA5NjI4NCwgOTYyOTEsIDk2Mjk4LCA5NjMwNSwgOTYzMTIsIAotICAgIDk2MzE5LCA5NjMyNiwgOTYzMzMsIDk2MzQwLCA5NjM0NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgOTYzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDk3NjAwLCA5NzYwNSwgOTc2MTAsIDk3NjE1LCA5NzYyMCwgOTc2MjUsIDk3NjMwLCA5NzYzNSwgOTc2NDAsIAorICAgIDk3NjQ1LCA5NzY1MCwgOTc2NTUsIDk3NjYwLCA5NzY2NSwgOTc2NzAsIDk3Njc1LCA5NzY4MCwgOTc2ODUsIDk3NjkwLCAKKyAgICA5NzY5NSwgOTc3MDAsIDk3NzA1LCA5NzcxMCwgOTc3MTUsIDk3NzIwLCA5NzcyNSwgOTc3MzAsIDk3NzM1LCA5Nzc0MCwgCisgICAgOTc3NDUsIDk3NzUwLCA5Nzc1NSwgOTc3NjAsIDk3NzY1LCA5Nzc3MCwgOTc3NzUsIDk3NzgwLCA5Nzc4NSwgOTc3OTAsIAorICAgIDk3Nzk1LCA5NzgwMCwgOTc4MDUsIDk3ODEwLCA5NzgxNSwgOTc4MjAsIDk3ODI1LCA5NzgzMCwgOTc4MzUsIDk3ODQwLCAKKyAgICA5Nzg0NSwgOTc4NTAsIDk3ODU1LCA5Nzg2MCwgOTc4NjUsIDk3ODcwLCA5Nzg3NSwgOTc4ODAsIDk3ODg1LCA5Nzg5MCwgCisgICAgOTc4OTUsIDk3OTAwLCA5NzkwNSwgOTc5MTAsIDk3OTE1LCA5NzkyMCwgOTc5MjUsIDk3OTMwLCA5NzkzNSwgOTc5NDAsIAorICAgIDk3OTQ1LCA5Nzk1MCwgOTc5NTUsIDk3OTYwLCA5Nzk2NSwgOTc5NzAsIDk3OTc1LCA5Nzk4MCwgOTc5ODUsIDk3OTkwLCAKKyAgICA5Nzk5NSwgOTgwMDAsIDk4MDA1LCA5ODAxMCwgOTgwMTUsIDk4MDIwLCA5ODAyNSwgOTgwMzAsIDk4MDM1LCA5ODA0MCwgCisgICAgOTgwNDUsIDk4MDUwLCA5ODA1NSwgOTgwNjAsIDk4MDY1LCA5ODA3MCwgOTgwNzUsIDk4MDgwLCA5ODA4NSwgOTgwOTAsIAorICAgIDk4MDk1LCA5ODEwMCwgOTgxMDUsIDk4MTEwLCA5ODExNSwgOTgxMjAsIDk4MTI1LCA5ODEzMCwgOTgxMzUsIDk4MTQwLCAKKyAgICA5ODE0NSwgOTgxNTAsIDk4MTU1LCA5ODE2MCwgOTgxNjUsIDk4MTcwLCA5ODE3NSwgOTgxODAsIDk4MTg1LCA5ODE5MCwgCisgICAgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCA5ODIzNSwgOTgyNDAsIAorICAgIDk4MjQ1LCA5ODI1MCwgOTgyNTUsIDk4MjYwLCA5ODI2NSwgOTgyNzAsIDk4Mjc1LCA5ODI4MCwgOTgyODUsIDk4MjkwLCAKKyAgICA5ODI5NSwgOTgzMDAsIDk4MzA1LCA5ODMxMCwgOTgzMTUsIDk4MzIwLCA5ODMyNSwgOTgzMzAsIDk4MzM1LCA5ODM0MCwgCisgICAgOTgzNDUsIDk4MzUwLCA5ODM1NSwgOTgzNjAsIDk4MzY1LCA5ODM3MCwgOTgzNzUsIDk4MzgwLCA5ODM4NSwgOTgzOTAsIAorICAgIDk4Mzk1LCA5ODQwMCwgOTg0MDUsIDk4NDEwLCA5ODQxNSwgOTg0MjAsIDk4NDI1LCA5ODQzMCwgOTg0MzUsIDk4NDQwLCAKKyAgICA5ODQ0NSwgOTg0NTAsIDk4NDU1LCA5ODQ2MCwgOTg0NjUsIDk4NDcwLCA5ODQ3NSwgOTg0ODAsIDk4NDg1LCA5ODQ5MCwgCisgICAgOTg0OTUsIDk4NTAwLCA5ODUwNSwgOTg1MTAsIDk4NTE1LCA5ODUyMCwgOTg1MjUsIDk4NTMwLCA5ODUzNSwgOTg1NDAsIAorICAgIDk4NTQ1LCA5ODU1MCwgOTg1NTUsIDk4NTYwLCA5ODU2NSwgOTg1NzAsIDk4NTc1LCA5ODU4MCwgOTg1ODUsIDk4NTkwLCAKKyAgICA5ODU5NSwgOTg2MDAsIDk4NjA1LCA5ODYxMCwgOTg2MTUsIDk4NjIwLCA5ODYyNSwgOTg2MzAsIDk4NjM1LCA5ODY0MCwgCisgICAgOTg2NDUsIDk4NjUwLCA5ODY1NSwgOTg2NjAsIDk4NjY1LCA5ODY3MCwgOTg2NzUsIDk4NjgwLCA5ODY4NSwgOTg2OTAsIAorICAgIDk4Njk1LCA5ODcwMCwgOTg3MDUsIDk4NzEwLCA5ODcxNSwgOTg3MjAsIDk4NzI1LCA5ODczMCwgOTg3MzUsIDk4NzQwLCAKKyAgICA5ODc0NSwgOTg3NTAsIDk4NzU1LCA5ODc2MCwgOTg3NjUsIDk4NzcwLCA5ODc3NSwgOTg3ODAsIDk4Nzg1LCA5ODc5MCwgCisgICAgOTg3OTUsIDk4ODAwLCA5ODgwNSwgOTg4MTAsIDk4ODE1LCA5ODgyMCwgOTg4MjUsIDk4ODMwLCA5ODgzNSwgOTg4NDAsIAorICAgIDk4ODQ1LCA5ODg1MCwgOTg4NTUsIDk4ODYwLCA5ODg2NSwgOTg4NzAsIDk4ODc1LCA5ODg4MCwgOTg4ODUsIDk4ODkwLCAKKyAgICA5ODg5NSwgOTg5MDAsIDk4OTA1LCA5ODkxMCwgOTg5MTUsIDk4OTIwLCA5ODkyNSwgOTg5MzAsIDk4OTM1LCA5ODk0MCwgCisgICAgOTg5NDUsIDk4OTUwLCA5ODk1NSwgOTg5NjAsIDk4OTY1LCA5ODk3MCwgOTg5NzUsIDk4OTgwLCA5ODk4NSwgOTg5OTAsIAorICAgIDk4OTk1LCA5OTAwMCwgOTkwMDUsIDk5MDEwLCA5OTAxNSwgOTkwMjAsIDk5MDI1LCA5OTAzMCwgOTkwMzUsIDk5MDQwLCAKKyAgICA5OTA0NSwgOTkwNTAsIDk5MDU1LCA5OTA2MCwgOTkwNjUsIDk5MDcwLCA5OTA3NSwgOTkwODAsIDk5MDg1LCA5OTA5MCwgCisgICAgOTkwOTUsIDk5MTAwLCA5OTEwNSwgOTkxMTAsIDk5MTE1LCA5OTEyMCwgOTkxMjUsIDk5MTMwLCA5OTEzNSwgOTkxNDAsIAorICAgIDk5MTQ1LCA5OTE1MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgOTkxNTUsIDk5MTYxLCA5OTE2OCwgOTkxNzUsIAorICAgIDk5MTgxLCA5OTE4OCwgOTkxOTUsIDk5MjAyLCA5OTIwOSwgOTkyMTUsIDk5MjIyLCA5OTIyOSwgOTkyMzYsIDk5MjQzLCAKKyAgICA5OTI1MCwgOTkyNTcsIDk5MjY0LCA5OTI3MSwgOTkyNzgsIDk5Mjg1LCA5OTI5MiwgOTkyOTksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIxLCA5OTMyNiwgOTkzMzEsIDk5MzM2LCA5OTM0MSwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgOTYzNjEsIDk2MzY2LCA5NjM3MSwgOTYzNzYsIDk2MzgxLCA5NjM4NiwgOTYzOTEsIDk2Mzk2LCA5NjQwMSwgCi0gICAgOTY0MDYsIDk2NDExLCA5NjQxNiwgOTY0MjEsIDk2NDI2LCA5NjQzMSwgOTY0MzYsIDk2NDQxLCA5NjQ0NiwgOTY0NTEsIAotICAgIDk2NDU2LCA5NjQ2MSwgOTY0NjYsIDk2NDcxLCA5NjQ3NiwgOTY0ODEsIDk2NDg2LCA5NjQ5MSwgOTY0OTYsIDk2NTAxLCAKLSAgICA5NjUwNiwgOTY1MTEsIDk2NTE2LCA5NjUyMSwgOTY1MjYsIDk2NTMxLCA5NjUzNiwgOTY1NDEsIDk2NTQ2LCA5NjU1MSwgCi0gICAgOTY1NTYsIDk2NTYxLCA5NjU2NiwgOTY1NzEsIDk2NTc2LCA5NjU4MSwgOTY1ODYsIDk2NTkxLCA5NjU5NiwgOTY2MDEsIAotICAgIDk2NjA2LCA5NjYxMSwgOTY2MTYsIDk2NjIxLCA5NjYyNiwgOTY2MzEsIDk2NjM2LCA5NjY0MSwgOTY2NDYsIDk2NjUxLCAKLSAgICA5NjY1NiwgOTY2NjEsIDk2NjY2LCA5NjY3MSwgOTY2NzYsIDk2NjgxLCA5NjY4NiwgOTY2OTEsIDk2Njk2LCA5NjcwMSwgCi0gICAgOTY3MDYsIDk2NzExLCA5NjcxNiwgOTY3MjEsIDk2NzI2LCA5NjczMSwgOTY3MzYsIDk2NzQxLCA5Njc0NiwgOTY3NTEsIAotICAgIDk2NzU2LCA5Njc2MSwgOTY3NjYsIDk2NzcxLCA5Njc3NiwgOTY3ODEsIDk2Nzg2LCA5Njc5MSwgOTY3OTYsIDk2ODAxLCAKLSAgICA5NjgwNiwgOTY4MTEsIDk2ODE2LCA5NjgyMSwgOTY4MjYsIDk2ODMxLCA5NjgzNiwgOTY4NDEsIDk2ODQ2LCA5Njg1MSwgCi0gICAgOTY4NTYsIDk2ODYxLCA5Njg2NiwgOTY4NzEsIDk2ODc2LCA5Njg4MSwgOTY4ODYsIDk2ODkxLCA5Njg5NiwgOTY5MDEsIAotICAgIDk2OTA2LCA5NjkxMSwgOTY5MTYsIDk2OTIxLCA5NjkyNiwgOTY5MzEsIDk2OTM2LCA5Njk0MSwgOTY5NDYsIDk2OTUxLCAKLSAgICA5Njk1NiwgOTY5NjEsIDk2OTY2LCA5Njk3MSwgOTY5NzYsIDk2OTgxLCA5Njk4NiwgOTY5OTEsIDk2OTk2LCA5NzAwMSwgCi0gICAgOTcwMDYsIDk3MDExLCA5NzAxNiwgOTcwMjEsIDk3MDI2LCA5NzAzMSwgOTcwMzYsIDk3MDQxLCA5NzA0NiwgOTcwNTEsIAotICAgIDk3MDU2LCA5NzA2MSwgOTcwNjYsIDk3MDcxLCA5NzA3NiwgOTcwODEsIDk3MDg2LCA5NzA5MSwgOTcwOTYsIDk3MTAxLCAKLSAgICA5NzEwNiwgOTcxMTEsIDk3MTE2LCA5NzEyMSwgOTcxMjYsIDk3MTMxLCA5NzEzNiwgOTcxNDEsIDk3MTQ2LCA5NzE1MSwgCi0gICAgOTcxNTYsIDk3MTYxLCA5NzE2NiwgOTcxNzEsIDk3MTc2LCA5NzE4MSwgOTcxODYsIDk3MTkxLCA5NzE5NiwgOTcyMDEsIAotICAgIDk3MjA2LCA5NzIxMSwgOTcyMTYsIDk3MjIxLCA5NzIyNiwgOTcyMzEsIDk3MjM2LCA5NzI0MSwgOTcyNDYsIDk3MjUxLCAKLSAgICA5NzI1NiwgOTcyNjEsIDk3MjY2LCA5NzI3MSwgOTcyNzYsIDk3MjgxLCA5NzI4NiwgOTcyOTEsIDk3Mjk2LCA5NzMwMSwgCi0gICAgOTczMDYsIDk3MzExLCA5NzMxNiwgOTczMjEsIDk3MzI2LCA5NzMzMSwgOTczMzYsIDk3MzQxLCA5NzM0NiwgOTczNTEsIAotICAgIDk3MzU2LCA5NzM2MSwgOTczNjYsIDk3MzcxLCA5NzM3NiwgOTczODEsIDk3Mzg2LCA5NzM5MSwgOTczOTYsIDk3NDAxLCAKLSAgICA5NzQwNiwgOTc0MTEsIDk3NDE2LCA5NzQyMSwgOTc0MjYsIDk3NDMxLCA5NzQzNiwgOTc0NDEsIDk3NDQ2LCA5NzQ1MSwgCi0gICAgOTc0NTYsIDk3NDYxLCA5NzQ2NiwgOTc0NzEsIDk3NDc2LCA5NzQ4MSwgOTc0ODYsIDk3NDkxLCA5NzQ5NiwgOTc1MDEsIAotICAgIDk3NTA2LCA5NzUxMSwgOTc1MTYsIDk3NTIxLCA5NzUyNiwgOTc1MzEsIDk3NTM2LCA5NzU0MSwgOTc1NDYsIDk3NTUxLCAKLSAgICA5NzU1NiwgOTc1NjEsIDk3NTY2LCA5NzU3MSwgOTc1NzYsIDk3NTgxLCA5NzU4NiwgOTc1OTEsIDk3NTk2LCA5NzYwMSwgCi0gICAgOTc2MDYsIDk3NjExLCA5NzYxNiwgOTc2MjEsIDk3NjI2LCA5NzYzMSwgOTc2MzYsIDk3NjQxLCA5NzY0NiwgOTc2NTEsIAotICAgIDk3NjU2LCA5NzY2MSwgOTc2NjYsIDk3NjcxLCA5NzY3NiwgOTc2ODEsIDk3Njg2LCA5NzY5MSwgOTc2OTYsIDk3NzAxLCAKLSAgICA5NzcwNiwgOTc3MTEsIDk3NzE2LCA5NzcyMSwgOTc3MjYsIDk3NzMxLCA5NzczNiwgOTc3NDEsIDk3NzQ2LCA5Nzc1MSwgCi0gICAgOTc3NTYsIDk3NzYxLCA5Nzc2NiwgOTc3NzEsIDk3Nzc2LCA5Nzc4MSwgOTc3ODYsIDk3NzkxLCA5Nzc5NiwgOTc4MDEsIAotICAgIDk3ODA2LCA5NzgxMSwgOTc4MTYsIDk3ODIxLCA5NzgyNiwgOTc4MzEsIDk3ODM2LCA5Nzg0MSwgOTc4NDYsIDk3ODUxLCAKLSAgICA5Nzg1NiwgOTc4NjEsIDk3ODY2LCA5Nzg3MSwgOTc4NzYsIDk3ODgxLCA5Nzg4NiwgOTc4OTEsIDk3ODk2LCA5NzkwMSwgCi0gICAgOTc5MDYsIDk3OTExLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5NzkxNiwgOTc5MjIsIDk3OTI5LCA5NzkzNiwgCi0gICAgOTc5NDIsIDk3OTQ5LCA5Nzk1NiwgOTc5NjMsIDk3OTcwLCA5Nzk3NiwgOTc5ODMsIDk3OTkwLCA5Nzk5NywgOTgwMDQsIAotICAgIDk4MDExLCA5ODAxOCwgOTgwMjUsIDk4MDMyLCA5ODAzOSwgOTgwNDYsIDk4MDUzLCA5ODA2MCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgOTgwNjcsIDk4MDcyLCA5ODA3NywgOTgwODIsIDk4MDg3LCA5ODA5MiwgOTgwOTcsIDk4MTAyLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA5OTM0NiwgOTkzNTAsIDk5MzU0LCA5OTM1OCwgOTkzNjIsIDk5MzY2LCAwLCAwLCA5OTM3MSwgCisgICAgMCwgOTkzNzYsIDk5MzgwLCA5OTM4NSwgOTkzOTAsIDk5Mzk1LCA5OTQwMCwgOTk0MDQsIDk5NDA5LCA5OTQxNCwgOTk0MTksIAorICAgIDk5NDI0LCA5OTQyOCwgOTk0MzMsIDk5NDM4LCA5OTQ0MywgOTk0NDgsIDk5NDUyLCA5OTQ1NywgOTk0NjIsIDk5NDY3LCAKKyAgICA5OTQ3MiwgOTk0NzYsIDk5NDgxLCA5OTQ4NiwgOTk0OTEsIDk5NDk2LCA5OTUwMSwgOTk1MDYsIDk5NTExLCA5OTUxNiwgCisgICAgOTk1MjEsIDk5NTI2LCA5OTUzMSwgOTk1MzYsIDk5NTQxLCA5OTU0NiwgOTk1NTEsIDk5NTU2LCA5OTU2MSwgOTk1NjUsIAorICAgIDk5NTcwLCA5OTU3NSwgOTk1ODAsIDk5NTg1LCAwLCA5OTU5MCwgOTk1OTUsIDAsIDAsIDAsIDk5NjAwLCAwLCAwLCA5OTYwNSwgCisgICAgOTk2MTAsIDk5NjE3LCA5OTYyNCwgOTk2MzEsIDk5NjM4LCA5OTY0NSwgOTk2NTIsIDk5NjU5LCA5OTY2NiwgOTk2NzMsIAorICAgIDk5NjgwLCA5OTY4NywgOTk2OTQsIDk5NzAxLCA5OTcwOCwgOTk3MTUsIDk5NzIyLCA5OTcyOSwgOTk3MzYsIDk5NzQzLCAKKyAgICA5OTc1MCwgOTk3NTcsIDAsIDk5NzY0LCA5OTc3MSwgOTk3NzcsIDk5NzgzLCA5OTc4OSwgOTk3OTYsIDk5ODAzLCA5OTgxMSwgCisgICAgOTk4MTksIDk5ODI4LCA5OTgzMywgOTk4MzgsIDk5ODQzLCA5OTg0OCwgOTk4NTMsIDk5ODU4LCA5OTg2MywgOTk4NjgsIAorICAgIDk5ODczLCA5OTg3OCwgOTk4ODMsIDk5ODg4LCA5OTg5MywgOTk4OTksIDk5OTA0LCA5OTkwOSwgOTk5MTQsIDk5OTE5LCAKKyAgICA5OTkyNCwgOTk5MjksIDk5OTM0LCA5OTkzOSwgOTk5NDQsIDk5OTUwLCA5OTk1NiwgOTk5NjAsIDk5OTY0LCA5OTk2OCwgCisgICAgOTk5NzIsIDk5OTc2LCA5OTk4MSwgOTk5ODYsIDk5OTkyLCA5OTk5NywgMTAwMDAzLCAxMDAwMDgsIDEwMDAxMywgMTAwMDE4LCAKKyAgICAxMDAwMjQsIDEwMDAyOSwgMTAwMDM0LCAxMDAwMzksIDEwMDA0NCwgMTAwMDQ5LCAxMDAwNTUsIDEwMDA2MCwgMTAwMDY2LCAKKyAgICAxMDAwNzEsIDEwMDA3NywgMTAwMDgyLCAxMDAwODgsIDEwMDA5MywgMTAwMDk5LCAxMDAxMDQsIDEwMDEwOSwgMTAwMTE0LCAKKyAgICAxMDAxMTksIDEwMDEyNCwgMTAwMTI5LCAxMDAxMzQsIDEwMDE0MCwgMTAwMTQ1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxNTAsIDEwMDE1NCwgMTAwMTU4LCAxMDAxNjIsIDEwMDE2NiwgMTAwMTcyLCAxMDAxNzYsIDEwMDE4MSwgMTAwMTg2LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCA5ODEwNywgOTgxMTEsIDk4MTE1LCA5ODExOSwgOTgxMjMsIDk4MTI3LCAwLCAwLCA5ODEzMiwgCi0gICAgMCwgOTgxMzcsIDk4MTQxLCA5ODE0NiwgOTgxNTEsIDk4MTU2LCA5ODE2MSwgOTgxNjYsIDk4MTcxLCA5ODE3NiwgOTgxODEsIAotICAgIDk4MTg2LCA5ODE5MCwgOTgxOTUsIDk4MjAwLCA5ODIwNSwgOTgyMTAsIDk4MjE1LCA5ODIyMCwgOTgyMjUsIDk4MjMwLCAKLSAgICA5ODIzNSwgOTgyMzksIDk4MjQ0LCA5ODI0OSwgOTgyNTQsIDk4MjU5LCA5ODI2NCwgOTgyNjksIDk4Mjc0LCA5ODI3OSwgCi0gICAgOTgyODQsIDk4Mjg5LCA5ODI5NCwgOTgyOTksIDk4MzA0LCA5ODMwOSwgOTgzMTQsIDk4MzE5LCA5ODMyNCwgOTgzMjgsIAotICAgIDk4MzMzLCA5ODMzOCwgOTgzNDMsIDk4MzQ4LCAwLCA5ODM1MywgOTgzNTgsIDAsIDAsIDAsIDk4MzYzLCAwLCAwLCA5ODM2OCwgCi0gICAgOTgzNzMsIDk4MzgwLCA5ODM4NywgOTgzOTQsIDk4NDAxLCA5ODQwOCwgOTg0MTUsIDk4NDIyLCA5ODQyOSwgOTg0MzYsIAotICAgIDk4NDQzLCA5ODQ1MCwgOTg0NTcsIDk4NDY0LCA5ODQ3MSwgOTg0NzgsIDk4NDg1LCA5ODQ5MiwgOTg0OTksIDk4NTA2LCAKLSAgICA5ODUxMywgOTg1MjAsIDAsIDk4NTI3LCA5ODUzNCwgOTg1NDAsIDk4NTQ2LCA5ODU1MiwgOTg1NTksIDk4NTY2LCA5ODU3NCwgCi0gICAgOTg1ODIsIDk4NTkxLCA5ODU5NiwgOTg2MDEsIDk4NjA2LCA5ODYxMSwgOTg2MTYsIDk4NjIxLCA5ODYyNiwgOTg2MzEsIAotICAgIDk4NjM2LCA5ODY0MSwgOTg2NDYsIDk4NjUxLCA5ODY1NiwgOTg2NjIsIDk4NjY3LCA5ODY3MiwgOTg2NzcsIDk4NjgyLCAKLSAgICA5ODY4NywgOTg2OTIsIDk4Njk3LCA5ODcwMiwgOTg3MDcsIDk4NzEzLCA5ODcxOSwgOTg3MjMsIDk4NzI3LCA5ODczMSwgCi0gICAgOTg3MzUsIDk4NzM5LCA5ODc0NCwgOTg3NDksIDk4NzU1LCA5ODc2MCwgOTg3NjYsIDk4NzcxLCA5ODc3NiwgOTg3ODEsIAotICAgIDk4Nzg3LCA5ODc5MiwgOTg3OTcsIDk4ODAyLCA5ODgwNywgOTg4MTIsIDk4ODE4LCA5ODgyMywgOTg4MjksIDk4ODM0LCAKLSAgICA5ODg0MCwgOTg4NDUsIDk4ODUxLCA5ODg1NiwgOTg4NjIsIDk4ODY3LCA5ODg3MiwgOTg4NzcsIDk4ODgyLCA5ODg4NywgCi0gICAgOTg4OTIsIDk4ODk3LCA5ODkwMywgOTg5MDgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTEzLCA5ODkxNywgOTg5MjEsIAotICAgIDk4OTI1LCA5ODkyOSwgOTg5MzUsIDk4OTM5LCA5ODk0NCwgOTg5NDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDk4OTU1LCA5ODk2MCwgOTg5NjUsIDk4OTcwLCAKLSAgICA5ODk3NSwgOTg5ODAsIDk4OTg1LCA5ODk5MCwgOTg5OTUsIDk5MDAwLCA5OTAwNSwgOTkwMTAsIDk5MDE1LCA5OTAyMCwgCi0gICAgOTkwMjUsIDk5MDMwLCA5OTAzNSwgOTkwNDAsIDk5MDQ1LCAwLCA5OTA1MCwgOTkwNTUsIDAsIDAsIDAsIDAsIDAsIDk5MDYwLCAKLSAgICA5OTA2NCwgOTkwNjgsIDk5MDczLCA5OTA3OCwgOTkwODQsIDk5MDg5LCA5OTA5NCwgOTkwOTksIDk5MTA0LCA5OTEwOSwgCi0gICAgOTkxMTQsIDk5MTE5LCA5OTEyNCwgOTkxMjksIDk5MTM0LCA5OTEzOSwgOTkxNDQsIDk5MTQ5LCA5OTE1NCwgOTkxNTksIAotICAgIDk5MTY0LCA5OTE2OSwgOTkxNzQsIDk5MTc5LCA5OTE4NCwgOTkxODksIDk5MTk0LCA5OTE5OCwgOTkyMDMsIDk5MjA4LCAKLSAgICA5OTIxNCwgOTkyMTgsIDAsIDAsIDAsIDk5MjIyLCA5OTIyOCwgOTkyMzIsIDk5MjM3LCA5OTI0MiwgOTkyNDcsIDk5MjUxLCAKLSAgICA5OTI1NiwgOTkyNjAsIDk5MjY1LCA5OTI3MCwgOTkyNzQsIDk5Mjc5LCA5OTI4NCwgOTkyODgsIDk5MjkyLCA5OTI5NywgCi0gICAgOTkzMDIsIDk5MzA2LCA5OTMxMSwgOTkzMTYsIDk5MzIwLCA5OTMyNSwgOTkzMzAsIDk5MzM1LCA5OTM0MCwgOTkzNDUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDk5MzUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA5OTM1NSwgCi0gICAgOTkzNjAsIDk5MzY1LCA5OTM3MCwgOTkzNzUsIDk5MzgwLCA5OTM4NiwgOTkzOTIsIDk5Mzk4LCA5OTQwMywgOTk0MDgsIAotICAgIDk5NDE0LCA5OTQyMCwgOTk0MjYsIDk5NDMyLCA5OTQzOCwgOTk0NDQsIDk5NDUwLCA5OTQ1NiwgOTk0NjIsIDk5NDY4LCAKLSAgICA5OTQ3NCwgOTk0ODAsIDk5NDg1LCA5OTQ5MSwgOTk0OTcsIDk5NTAzLCA5OTUwOSwgOTk1MTUsIDk5NTIwLCA5OTUyNiwgCi0gICAgOTk1MzIsIDk5NTM4LCA5OTU0MiwgOTk1NDYsIDk5NTUwLCA5OTU1NCwgOTk1NTgsIDk5NTYzLCA5OTU2OCwgOTk1NzIsIAotICAgIDk5NTc2LCA5OTU4MSwgOTk1ODYsIDk5NTkxLCA5OTU5NiwgOTk2MDEsIDk5NjA2LCA5OTYxMSwgOTk2MTgsIDk5NjIzLCAKLSAgICA5OTYyNywgOTk2MzIsIDk5NjM3LCA5OTY0MiwgOTk2NDYsIDAsIDAsIDAsIDAsIDk5NjUxLCA5OTY1OSwgOTk2NjYsIAotICAgIDk5NjcyLCA5OTY3OCwgOTk2ODIsIDk5Njg2LCA5OTY5MCwgOTk2OTQsIDk5Njk4LCA5OTcwMiwgOTk3MDcsIDk5NzExLCAKLSAgICA5OTcxNiwgOTk3MjEsIDk5NzI2LCA5OTczMSwgOTk3MzYsIDk5NzQxLCA5OTc0NiwgMCwgMCwgOTk3NTEsIDk5NzU3LCAKLSAgICA5OTc2MywgOTk3NjksIDk5Nzc2LCA5OTc4MywgOTk3OTAsIDk5Nzk3LCA5OTgwNCwgOTk4MTEsIDk5ODE3LCA5OTgyMywgCi0gICAgOTk4MjksIDk5ODM2LCA5OTg0MywgOTk4NTAsIDk5ODU3LCA5OTg2NCwgOTk4NzEsIDk5ODc4LCA5OTg4NSwgOTk4OTIsIAotICAgIDk5ODk5LCA5OTkwNiwgOTk5MTMsIDk5OTIwLCA5OTkyNywgOTk5MzQsIDk5OTQyLCA5OTk1MCwgOTk5NTgsIDk5OTY3LCAKLSAgICA5OTk3NiwgOTk5ODUsIDk5OTk0LCAxMDAwMDMsIDEwMDAxMiwgMTAwMDE5LCAxMDAwMjYsIDEwMDAzMywgMTAwMDQxLCAKLSAgICAxMDAwNDksIDEwMDA1NywgMTAwMDY1LCAxMDAwNzMsIDEwMDA4MSwgMTAwMDg5LCAxMDAwOTMsIDEwMDA5OCwgMTAwMTAzLCAKLSAgICAwLCAxMDAxMDksIDEwMDExNCwgMCwgMCwgMCwgMCwgMCwgMTAwMTE5LCAxMDAxMjUsIDEwMDEzMiwgMTAwMTM3LCAxMDAxNDIsIAotICAgIDEwMDE0NiwgMTAwMTUxLCAxMDAxNTYsIDAsIDEwMDE2MSwgMTAwMTY2LCAxMDAxNzEsIDAsIDEwMDE3NiwgMTAwMTgxLCAKLSAgICAxMDAxODYsIDEwMDE5MSwgMTAwMTk2LCAxMDAyMDEsIDEwMDIwNiwgMTAwMjExLCAxMDAyMTYsIDEwMDIyMSwgMTAwMjI2LCAKLSAgICAxMDAyMzEsIDEwMDIzNSwgMTAwMjQwLCAxMDAyNDUsIDEwMDI1MCwgMTAwMjU0LCAxMDAyNTgsIDEwMDI2MywgMTAwMjY4LCAKLSAgICAxMDAyNzMsIDEwMDI3OCwgMTAwMjgzLCAxMDAyODgsIDEwMDI5MywgMTAwMjk3LCAxMDAzMDIsIDAsIDAsIDAsIDAsIAotICAgIDEwMDMwNywgMTAwMzEzLCAxMDAzMTgsIDAsIDAsIDAsIDAsIDEwMDMyMywgMTAwMzI3LCAxMDAzMzEsIDEwMDMzNSwgCi0gICAgMTAwMzM5LCAxMDAzNDMsIDEwMDM0OCwgMTAwMzUzLCAxMDAzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDM2NSwgCi0gICAgMTAwMzcxLCAxMDAzNzgsIDEwMDM4NCwgMTAwMzkxLCAxMDAzOTcsIDEwMDQwMywgMTAwNDA5LCAxMDA0MTYsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEwMDQyMiwgMTAwNDMwLCAxMDA0MzgsIDEwMDQ0NiwgMTAwNDU0LCAxMDA0NjIsIDEwMDQ3MCwgCi0gICAgMTAwNDc4LCAxMDA0ODYsIDEwMDQ5NCwgMTAwNTAyLCAxMDA1MTAsIDEwMDUxOCwgMTAwNTI2LCAxMDA1MzQsIDEwMDU0MiwgCi0gICAgMTAwNTUwLCAxMDA1NTgsIDEwMDU2NiwgMTAwNTc0LCAxMDA1ODIsIDEwMDU5MCwgMTAwNTk4LCAxMDA2MDYsIDEwMDYxNCwgCi0gICAgMTAwNjIyLCAxMDA2MzAsIDEwMDYzOCwgMTAwNjQ2LCAxMDA2NTQsIDEwMDY2MSwgMTAwNjY5LCAxMDA2NzcsIDEwMDY4NCwgCi0gICAgMTAwNjkxLCAxMDA2OTgsIDEwMDcwNSwgMTAwNzEyLCAxMDA3MTksIDEwMDcyNiwgMTAwNzMzLCAxMDA3NDAsIDEwMDc0NywgCi0gICAgMTAwNzU0LCAxMDA3NjEsIDEwMDc2OCwgMTAwNzc1LCAxMDA3ODIsIDEwMDc4OSwgMTAwNzk2LCAxMDA4MDMsIDEwMDgxMCwgCi0gICAgMTAwODE3LCAxMDA4MjQsIDEwMDgzMSwgMTAwODM4LCAxMDA4NDUsIDEwMDg1MiwgMTAwODU5LCAxMDA4NjYsIDEwMDg3MywgCi0gICAgMTAwODgwLCAxMDA4ODYsIDEwMDg5MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAwOTAwLCAxMDA5MDUsIDEwMDkxMCwgCi0gICAgMTAwOTE1LCAxMDA5MjAsIDEwMDkyNSwgMTAwOTMwLCAxMDA5MzUsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgCi0gICAgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgMTAwOTc1LCAxMDA5ODAsIDEwMDk4NSwgMTAwOTkwLCAxMDA5OTUsIDEwMTAwMCwgCi0gICAgMTAxMDA1LCAxMDEwMTAsIDEwMTAxNSwgMTAxMDIwLCAxMDEwMjUsIDEwMTAzMCwgMTAxMDM1LCAxMDEwNDAsIDEwMTA0NSwgCi0gICAgMTAxMDUwLCAxMDEwNTUsIDEwMTA2MCwgMTAxMDY1LCAxMDEwNzAsIDEwMTA3NSwgMTAxMDgwLCAxMDEwODUsIDEwMTA5MSwgCi0gICAgMCwgMCwgMCwgMCwgMTAxMDk3LCAxMDExMDEsIDEwMTEwNSwgMTAxMTEwLCAxMDExMTUsIDEwMTEyMSwgMTAxMTI3LCAKLSAgICAxMDExMzMsIDEwMTE0MywgMTAxMTUyLCAxMDExNTgsIDEwMTE2NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAxMTczLCAxMDExNzcsIDEwMTE4MiwgMTAxMTg3LCAxMDExOTIsIDEwMTE5NywgMTAxMjAyLCAxMDEyMDcsIDEwMTIxMiwgCi0gICAgMTAxMjE2LCAxMDEyMjEsIDEwMTIyNSwgMTAxMjMwLCAxMDEyMzQsIDEwMTIzOSwgMTAxMjQzLCAxMDEyNDgsIDEwMTI1MywgCi0gICAgMTAxMjU4LCAxMDEyNjMsIDEwMTI2OCwgMTAxMjczLCAxMDEyNzgsIDEwMTI4MywgMTAxMjg4LCAxMDEyOTMsIDEwMTI5OCwgCi0gICAgMTAxMzAzLCAxMDEzMDgsIDEwMTMxMywgMTAxMzE4LCAxMDEzMjMsIDEwMTMyOCwgMTAxMzMzLCAxMDEzMzgsIDEwMTM0MywgCi0gICAgMTAxMzQ4LCAxMDEzNTMsIDEwMTM1OCwgMTAxMzYzLCAxMDEzNjgsIDEwMTM3MywgMTAxMzc4LCAxMDEzODMsIDEwMTM4OCwgCi0gICAgMTAxMzkzLCAxMDEzOTgsIDEwMTQwMywgMTAxNDA4LCAxMDE0MTMsIDEwMTQxOCwgMTAxNDIzLCAxMDE0MjgsIDEwMTQzMywgCi0gICAgMCwgMCwgMCwgMTAxNDM4LCAxMDE0NDMsIDEwMTQ1MiwgMTAxNDYwLCAxMDE0NjksIDEwMTQ3OCwgMTAxNDg5LCAxMDE1MDAsIAotICAgIDEwMTUwNywgMTAxNTE0LCAxMDE1MjEsIDEwMTUyOCwgMTAxNTM1LCAxMDE1NDIsIDEwMTU0OSwgMTAxNTU2LCAxMDE1NjMsIAotICAgIDEwMTU3MCwgMTAxNTc3LCAxMDE1ODQsIDEwMTU5MSwgMTAxNTk4LCAxMDE2MDUsIDEwMTYxMiwgMTAxNjE5LCAxMDE2MjYsIAotICAgIDEwMTYzMywgMTAxNjQwLCAxMDE2NDcsIDAsIDAsIDEwMTY1NCwgMTAxNjYwLCAxMDE2NjYsIDEwMTY3MiwgMTAxNjc4LCAKLSAgICAxMDE2ODUsIDEwMTY5MiwgMTAxNzAwLCAxMDE3MDgsIDEwMTcxNSwgMTAxNzIyLCAxMDE3MjksIDEwMTczNiwgMTAxNzQzLCAKLSAgICAxMDE3NTAsIDEwMTc1NywgMTAxNzY0LCAxMDE3NzEsIDEwMTc3OCwgMTAxNzg1LCAxMDE3OTIsIDEwMTc5OSwgMTAxODA2LCAKLSAgICAxMDE4MTMsIDEwMTgyMCwgMTAxODI3LCAxMDE4MzQsIDAsIDAsIDAsIDAsIDAsIDEwMTg0MSwgMTAxODQ3LCAxMDE4NTMsIAotICAgIDEwMTg1OSwgMTAxODY1LCAxMDE4NzIsIDEwMTg3OSwgMTAxODg3LCAxMDE4OTUsIDEwMTkwMiwgMTAxOTA5LCAxMDE5MTYsIAotICAgIDEwMTkyMywgMTAxOTMwLCAxMDE5MzcsIDEwMTk0NCwgMTAxOTUxLCAxMDE5NTgsIDEwMTk2NSwgMTAxOTcyLCAxMDE5NzksIAotICAgIDEwMTk4NiwgMTAxOTkzLCAxMDIwMDAsIDEwMjAwNywgMTAyMDE0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDIwMjEsIAotICAgIDEwMjAyOCwgMTAyMDM3LCAxMDIwNDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjA1NywgCi0gICAgMTAyMDYzLCAxMDIwNjksIDEwMjA3NSwgMTAyMDgxLCAxMDIwODgsIDEwMjA5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAyMTAzLCAxMDIxMTAsIDEwMjExNywgMTAyMTI1LCAxMDIxMzIsIDEwMjEzOSwgMTAyMTQ2LCAxMDIxNTMsIDEwMjE2MSwgCi0gICAgMTAyMTY5LCAxMDIxNzcsIDEwMjE4NSwgMTAyMTkzLCAxMDIyMDEsIDEwMjIwOSwgMTAyMjE3LCAxMDIyMjUsIDEwMjIzMywgCi0gICAgMTAyMjQxLCAxMDIyNDksIDEwMjI1NywgMTAyMjY1LCAxMDIyNzMsIDEwMjI4MSwgMTAyMjg5LCAxMDIyOTcsIDEwMjMwNSwgCi0gICAgMTAyMzEzLCAxMDIzMjEsIDEwMjMyOSwgMTAyMzM3LCAxMDIzNDUsIDEwMjM1MywgMTAyMzYxLCAxMDIzNjksIDEwMjM3NywgCi0gICAgMTAyMzg1LCAxMDIzOTMsIDEwMjQwMSwgMTAyNDA5LCAxMDI0MTcsIDEwMjQyNSwgMTAyNDMzLCAxMDI0NDEsIDEwMjQ0OSwgCi0gICAgMTAyNDU3LCAxMDI0NjUsIDEwMjQ3MywgMTAyNDgxLCAxMDI0ODksIDEwMjQ5NywgMTAyNTA1LCAxMDI1MTMsIDEwMjUyMSwgCi0gICAgMTAyNTI5LCAxMDI1MzcsIDEwMjU0NSwgMTAyNTUzLCAxMDI1NjEsIDEwMjU2OSwgMTAyNTc3LCAxMDI1ODUsIDEwMjU5MywgCi0gICAgMTAyNjAxLCAxMDI2MDksIDEwMjYxNywgMTAyNjI1LCAxMDI2MzMsIDEwMjY0MSwgMTAyNjQ5LCAxMDI2NTcsIDEwMjY2NSwgCi0gICAgMTAyNjczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI2ODEsIDEwMjY4NiwgMTAyNjkyLCAxMDI2OTgsIDEwMjcwNCwgCi0gICAgMTAyNzEwLCAxMDI3MTYsIDEwMjcyMiwgMTAyNzI4LCAxMDI3MzQsIDEwMjczOSwgMTAyNzQ2LCAxMDI3NTIsIDEwMjc1OCwgCi0gICAgMTAyNzY0LCAxMDI3NzAsIDEwMjc3NiwgMTAyNzgxLCAxMDI3ODcsIDEwMjc5MywgMTAyNzk5LCAxMDI4MDUsIDEwMjgxMSwgCi0gICAgMTAyODE3LCAxMDI4MjMsIDEwMjgyOSwgMTAyODM1LCAxMDI4NDEsIDEwMjg0NiwgMTAyODUyLCAxMDI4NjAsIDEwMjg2OCwgCi0gICAgMTAyODc0LCAxMDI4ODAsIDEwMjg4NiwgMTAyODkyLCAxMDI5MDAsIDEwMjkwNiwgMTAyOTEyLCAxMDI5MTgsIDEwMjkyNCwgCi0gICAgMTAyOTMwLCAxMDI5MzYsIDEwMjk0MSwgMTAyOTQ3LCAxMDI5NTUsIDEwMjk2MywgMTAyOTY5LCAxMDI5NzUsIDEwMjk4MSwgCi0gICAgMTAyOTg4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDI5OTQsIDEwMjk5OSwgMTAzMDA1LCAKLSAgICAxMDMwMTEsIDEwMzAxNywgMTAzMDIzLCAxMDMwMjksIDEwMzAzNSwgMTAzMDQxLCAxMDMwNDcsIDEwMzA1MiwgMTAzMDU5LCAKLSAgICAxMDMwNjUsIDEwMzA3MSwgMTAzMDc3LCAxMDMwODMsIDEwMzA4OSwgMTAzMDk0LCAxMDMxMDAsIDEwMzEwNiwgMTAzMTEyLCAKLSAgICAxMDMxMTgsIDEwMzEyNCwgMTAzMTMwLCAxMDMxMzYsIDEwMzE0MiwgMTAzMTQ4LCAxMDMxNTQsIDEwMzE1OSwgMTAzMTY1LCAKLSAgICAxMDMxNzMsIDEwMzE4MSwgMTAzMTg3LCAxMDMxOTMsIDEwMzE5OSwgMTAzMjA1LCAxMDMyMTMsIDEwMzIxOSwgMTAzMjI1LCAKLSAgICAxMDMyMzEsIDEwMzIzNywgMTAzMjQzLCAxMDMyNDksIDEwMzI1NCwgMTAzMjYwLCAxMDMyNjgsIDEwMzI3NiwgMTAzMjgyLCAKLSAgICAxMDMyODgsIDEwMzI5NCwgMTAzMzAxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMDcsIDEwMzMxMSwgMTAzMzE1LCAKLSAgICAxMDMzMjAsIDEwMzMyNSwgMTAzMzMxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDAxOTIsIDEwMDE5NywgMTAwMjAyLCAxMDAyMDcsIDEwMDIxMiwgMTAwMjE3LCAxMDAyMjIsIDEwMDIyNywgMTAwMjMyLCAKKyAgICAxMDAyMzcsIDEwMDI0MiwgMTAwMjQ3LCAxMDAyNTIsIDEwMDI1NywgMTAwMjYyLCAxMDAyNjcsIDEwMDI3MiwgMTAwMjc3LCAKKyAgICAxMDAyODIsIDAsIDEwMDI4NywgMTAwMjkyLCAwLCAwLCAwLCAwLCAwLCAxMDAyOTcsIDEwMDMwMSwgMTAwMzA1LCAxMDAzMTAsIAorICAgIDEwMDMxNSwgMTAwMzIxLCAxMDAzMjYsIDEwMDMzMSwgMTAwMzM2LCAxMDAzNDEsIDEwMDM0NiwgMTAwMzUxLCAxMDAzNTYsIAorICAgIDEwMDM2MSwgMTAwMzY2LCAxMDAzNzEsIDEwMDM3NiwgMTAwMzgxLCAxMDAzODYsIDEwMDM5MSwgMTAwMzk2LCAxMDA0MDEsIAorICAgIDEwMDQwNiwgMTAwNDExLCAxMDA0MTYsIDEwMDQyMSwgMTAwNDI2LCAxMDA0MzEsIDEwMDQzNSwgMTAwNDQwLCAxMDA0NDUsIAorICAgIDEwMDQ1MSwgMTAwNDU1LCAwLCAwLCAwLCAxMDA0NTksIDEwMDQ2NSwgMTAwNDY5LCAxMDA0NzQsIDEwMDQ3OSwgMTAwNDg0LCAKKyAgICAxMDA0ODgsIDEwMDQ5MywgMTAwNDk3LCAxMDA1MDIsIDEwMDUwNywgMTAwNTExLCAxMDA1MTYsIDEwMDUyMSwgMTAwNTI1LCAKKyAgICAxMDA1MjksIDEwMDUzNCwgMTAwNTM5LCAxMDA1NDMsIDEwMDU0OCwgMTAwNTUzLCAxMDA1NTgsIDEwMDU2MywgMTAwNTY4LCAKKyAgICAxMDA1NzMsIDEwMDU3OCwgMTAwNTgzLCAwLCAwLCAwLCAwLCAwLCAxMDA1ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMDU5MywgMTAwNTk4LCAxMDA2MDMsIDEwMDYwOCwgMTAwNjEzLCAxMDA2MTgsIAorICAgIDEwMDYyNCwgMTAwNjMwLCAxMDA2MzYsIDEwMDY0MSwgMTAwNjQ2LCAxMDA2NTEsIDEwMDY1NywgMTAwNjYzLCAxMDA2NjksIAorICAgIDEwMDY3NSwgMTAwNjgxLCAxMDA2ODYsIDEwMDY5MiwgMTAwNjk4LCAxMDA3MDQsIDEwMDcxMCwgMTAwNzE2LCAxMDA3MjEsIAorICAgIDEwMDcyNywgMTAwNzMzLCAxMDA3MzksIDEwMDc0NSwgMTAwNzUxLCAxMDA3NTYsIDEwMDc2MiwgMTAwNzY4LCAxMDA3NzQsIAorICAgIDEwMDc3OSwgMTAwNzg0LCAxMDA3ODksIDEwMDc5NCwgMTAwNzk5LCAxMDA4MDUsIDEwMDgxMSwgMTAwODE2LCAxMDA4MjEsIAorICAgIDEwMDgyNiwgMTAwODMyLCAxMDA4MzgsIDEwMDg0MywgMTAwODQ5LCAxMDA4NTUsIDEwMDg2MSwgMTAwODY5LCAxMDA4NzUsIAorICAgIDEwMDg4MCwgMTAwODg2LCAxMDA4OTIsIDEwMDg5OCwgMTAwOTAzLCAwLCAwLCAwLCAwLCAxMDA5MDksIDEwMDkxOCwgCisgICAgMTAwOTI2LCAxMDA5MzMsIDEwMDk0MCwgMTAwOTQ1LCAxMDA5NTAsIDEwMDk1NSwgMTAwOTYwLCAxMDA5NjUsIDEwMDk3MCwgCisgICAgMTAwOTc2LCAxMDA5ODEsIDEwMDk4NywgMTAwOTkzLCAxMDA5OTksIDEwMTAwNSwgMTAxMDExLCAxMDEwMTcsIDEwMTAyMywgCisgICAgMCwgMCwgMTAxMDI5LCAxMDEwMzYsIDEwMTA0MywgMTAxMDUwLCAxMDEwNTgsIDEwMTA2NiwgMTAxMDc0LCAxMDEwODIsIAorICAgIDEwMTA5MCwgMTAxMDk4LCAxMDExMDUsIDEwMTExMiwgMTAxMTE5LCAxMDExMjcsIDEwMTEzNSwgMTAxMTQzLCAxMDExNTEsIAorICAgIDEwMTE1OSwgMTAxMTY3LCAxMDExNzUsIDEwMTE4MywgMTAxMTkxLCAxMDExOTksIDEwMTIwNywgMTAxMjE1LCAxMDEyMjMsIAorICAgIDEwMTIzMSwgMTAxMjM5LCAxMDEyNDgsIDEwMTI1NywgMTAxMjY2LCAxMDEyNzYsIDEwMTI4NiwgMTAxMjk2LCAxMDEzMDYsIAorICAgIDEwMTMxNiwgMTAxMzI2LCAxMDEzMzQsIDEwMTM0MiwgMTAxMzUwLCAxMDEzNTksIDEwMTM2OCwgMTAxMzc3LCAxMDEzODYsIAorICAgIDEwMTM5NSwgMTAxNDA0LCAxMDE0MTMsIDEwMTQxNywgMTAxNDIyLCAxMDE0MjcsIDAsIDEwMTQzMywgMTAxNDM4LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDE0NDMsIDEwMTQ0OSwgMTAxNDU2LCAxMDE0NjEsIDEwMTQ2NiwgMTAxNDcwLCAxMDE0NzUsIDEwMTQ4MCwgCisgICAgMCwgMTAxNDg1LCAxMDE0OTAsIDEwMTQ5NSwgMCwgMTAxNTAwLCAxMDE1MDUsIDEwMTUxMCwgMTAxNTE1LCAxMDE1MjAsIAorICAgIDEwMTUyNSwgMTAxNTMwLCAxMDE1MzUsIDEwMTU0MCwgMTAxNTQ1LCAxMDE1NTAsIDEwMTU1NCwgMTAxNTU4LCAxMDE1NjMsIAorICAgIDEwMTU2OCwgMTAxNTczLCAxMDE1NzcsIDEwMTU4MSwgMTAxNTg2LCAxMDE1OTAsIDEwMTU5NSwgMTAxNjAwLCAxMDE2MDUsIAorICAgIDEwMTYxMCwgMTAxNjE1LCAxMDE2MTksIDEwMTYyNCwgMCwgMCwgMCwgMCwgMTAxNjI5LCAxMDE2MzUsIDEwMTY0MCwgMCwgMCwgCisgICAgMCwgMCwgMTAxNjQ1LCAxMDE2NDksIDEwMTY1MywgMTAxNjU3LCAxMDE2NjEsIDEwMTY2NSwgMTAxNjcwLCAxMDE2NzUsIAorICAgIDEwMTY4MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNjg3LCAxMDE2OTMsIDEwMTcwMCwgMTAxNzA2LCAxMDE3MTMsIAorICAgIDEwMTcxOSwgMTAxNzI1LCAxMDE3MzEsIDEwMTczOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAxNzQ0LCAxMDE3NTIsIAorICAgIDEwMTc2MCwgMTAxNzY4LCAxMDE3NzYsIDEwMTc4NCwgMTAxNzkyLCAxMDE4MDAsIDEwMTgwOCwgMTAxODE2LCAxMDE4MjQsIAorICAgIDEwMTgzMiwgMTAxODQwLCAxMDE4NDgsIDEwMTg1NiwgMTAxODY0LCAxMDE4NzIsIDEwMTg4MCwgMTAxODg4LCAxMDE4OTYsIAorICAgIDEwMTkwNCwgMTAxOTEyLCAxMDE5MjAsIDEwMTkyOCwgMTAxOTM2LCAxMDE5NDQsIDEwMTk1MiwgMTAxOTYwLCAxMDE5NjgsIAorICAgIDEwMTk3NiwgMTAxOTgzLCAxMDE5OTEsIDEwMTk5OSwgMTAyMDA2LCAxMDIwMTMsIDEwMjAyMCwgMTAyMDI3LCAxMDIwMzQsIAorICAgIDEwMjA0MSwgMTAyMDQ4LCAxMDIwNTUsIDEwMjA2MiwgMTAyMDY5LCAxMDIwNzYsIDEwMjA4MywgMTAyMDkwLCAxMDIwOTcsIAorICAgIDEwMjEwNCwgMTAyMTExLCAxMDIxMTgsIDEwMjEyNSwgMTAyMTMyLCAxMDIxMzksIDEwMjE0NiwgMTAyMTUzLCAxMDIxNjAsIAorICAgIDEwMjE2NywgMTAyMTc0LCAxMDIxODEsIDEwMjE4OCwgMTAyMTk1LCAxMDIyMDIsIDEwMjIwOCwgMTAyMjE1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzMzcsIDEwMzM0MSwgMTAzMzQ1LCAxMDMzNDksIDEwMzM1MywgMTAzMzU3LCAKLSAgICAxMDMzNjEsIDEwMzM2NiwgMTAzMzcwLCAxMDMzNzUsIDEwMzM4MCwgMTAzMzg1LCAxMDMzOTAsIDEwMzM5NSwgMTAzNDAwLCAKLSAgICAxMDM0MDUsIDEwMzQxMCwgMTAzNDE1LCAxMDM0MjAsIDEwMzQyNiwgMTAzNDMyLCAxMDM0MzgsIDEwMzQ0NSwgMTAzNDUyLCAKLSAgICAxMDM0NTksIDEwMzQ2NiwgMTAzNDczLCAxMDM0ODAsIDEwMzQ4NywgMTAzNDk0LCAxMDM1MDEsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEwMjIyMiwgMTAyMjI3LCAxMDIyMzIsIDEwMjIzNywgMTAyMjQyLCAxMDIyNDcsIDEwMjI1MiwgCisgICAgMTAyMjU3LCAxMDIyNjIsIDEwMjI2NywgMTAyMjcyLCAxMDIyNzcsIDEwMjI4MiwgMTAyMjg3LCAxMDIyOTIsIDEwMjI5NywgCisgICAgMTAyMzAyLCAxMDIzMDcsIDEwMjMxMiwgMTAyMzE3LCAxMDIzMjIsIDEwMjMyNywgMTAyMzMyLCAxMDIzMzcsIDEwMjM0MiwgCisgICAgMTAyMzQ3LCAxMDIzNTIsIDEwMjM1NywgMTAyMzYyLCAxMDIzNjcsIDEwMjM3MiwgMTAyMzc3LCAxMDIzODIsIDEwMjM4NywgCisgICAgMTAyMzkyLCAxMDIzOTcsIDEwMjQwMiwgMTAyNDA3LCAxMDI0MTMsIDAsIDAsIDAsIDAsIDEwMjQxOSwgMTAyNDIzLCAKKyAgICAxMDI0MjcsIDEwMjQzMiwgMTAyNDM3LCAxMDI0NDMsIDEwMjQ0OSwgMTAyNDU1LCAxMDI0NjUsIDEwMjQ3NCwgMTAyNDgwLCAKKyAgICAxMDI0ODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMjQ5NSwgMTAyNDk5LCAxMDI1MDQsIDEwMjUwOSwgCisgICAgMTAyNTE0LCAxMDI1MTksIDEwMjUyNCwgMTAyNTI5LCAxMDI1MzQsIDEwMjUzOCwgMTAyNTQzLCAxMDI1NDcsIDEwMjU1MiwgCisgICAgMTAyNTU2LCAxMDI1NjEsIDEwMjU2NSwgMTAyNTcwLCAxMDI1NzUsIDEwMjU4MCwgMTAyNTg1LCAxMDI1OTAsIDEwMjU5NSwgCisgICAgMTAyNjAwLCAxMDI2MDUsIDEwMjYxMCwgMTAyNjE1LCAxMDI2MjAsIDEwMjYyNSwgMTAyNjMwLCAxMDI2MzUsIDEwMjY0MCwgCisgICAgMTAyNjQ1LCAxMDI2NTAsIDEwMjY1NSwgMTAyNjYwLCAxMDI2NjUsIDEwMjY3MCwgMTAyNjc1LCAxMDI2ODAsIDEwMjY4NSwgCisgICAgMTAyNjkwLCAxMDI2OTUsIDEwMjcwMCwgMTAyNzA1LCAxMDI3MTAsIDEwMjcxNSwgMTAyNzIwLCAxMDI3MjUsIDEwMjczMCwgCisgICAgMTAyNzM1LCAxMDI3NDAsIDEwMjc0NSwgMTAyNzUwLCAxMDI3NTUsIDAsIDAsIDAsIDEwMjc2MCwgMTAyNzY1LCAxMDI3NzQsIAorICAgIDEwMjc4MiwgMTAyNzkxLCAxMDI4MDAsIDEwMjgxMSwgMTAyODIyLCAxMDI4MjksIDEwMjgzNiwgMTAyODQzLCAxMDI4NTAsIAorICAgIDEwMjg1NywgMTAyODY0LCAxMDI4NzEsIDEwMjg3OCwgMTAyODg1LCAxMDI4OTIsIDEwMjg5OSwgMTAyOTA2LCAxMDI5MTMsIAorICAgIDEwMjkyMCwgMTAyOTI3LCAxMDI5MzQsIDEwMjk0MSwgMTAyOTQ4LCAxMDI5NTUsIDEwMjk2MiwgMTAyOTY5LCAwLCAwLCAKKyAgICAxMDI5NzYsIDEwMjk4MiwgMTAyOTg4LCAxMDI5OTQsIDEwMzAwMCwgMTAzMDA3LCAxMDMwMTQsIDEwMzAyMiwgMTAzMDMwLCAKKyAgICAxMDMwMzcsIDEwMzA0NCwgMTAzMDUxLCAxMDMwNTgsIDEwMzA2NSwgMTAzMDcyLCAxMDMwNzksIDEwMzA4NiwgMTAzMDkzLCAKKyAgICAxMDMxMDAsIDEwMzEwNywgMTAzMTE0LCAxMDMxMjEsIDEwMzEyOCwgMTAzMTM1LCAxMDMxNDIsIDEwMzE0OSwgMTAzMTU2LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMDMxNjMsIDEwMzE2OSwgMTAzMTc1LCAxMDMxODEsIDEwMzE4NywgMTAzMTk0LCAxMDMyMDEsIAorICAgIDEwMzIwOSwgMTAzMjE3LCAxMDMyMjQsIDEwMzIzMSwgMTAzMjM4LCAxMDMyNDUsIDEwMzI1MiwgMTAzMjU5LCAxMDMyNjYsIAorICAgIDEwMzI3MywgMTAzMjgwLCAxMDMyODcsIDEwMzI5NCwgMTAzMzAxLCAxMDMzMDgsIDEwMzMxNSwgMTAzMzIyLCAxMDMzMjksIAorICAgIDEwMzMzNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTAzMzQzLCAxMDMzNTAsIDEwMzM1OSwgMTAzMzY5LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDMzNzksIDEwMzM4NSwgMTAzMzkxLCAxMDMzOTcsIDEwMzQwMywgMTAzNDEwLCAKKyAgICAxMDM0MTcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwMzQyNSwgMTAzNDMyLCAxMDM0MzksIDEwMzQ0NywgMTAzNDU0LCAKKyAgICAxMDM0NjEsIDEwMzQ2OCwgMTAzNDc1LCAxMDM0ODMsIDEwMzQ5MSwgMTAzNDk5LCAxMDM1MDcsIDEwMzUxNSwgMTAzNTIzLCAKKyAgICAxMDM1MzEsIDEwMzUzOSwgMTAzNTQ3LCAxMDM1NTUsIDEwMzU2MywgMTAzNTcxLCAxMDM1NzksIDEwMzU4NywgMTAzNTk1LCAKKyAgICAxMDM2MDMsIDEwMzYxMSwgMTAzNjE5LCAxMDM2MjcsIDEwMzYzNSwgMTAzNjQzLCAxMDM2NTEsIDEwMzY1OSwgMTAzNjY3LCAKKyAgICAxMDM2NzUsIDEwMzY4MywgMTAzNjkxLCAxMDM2OTksIDEwMzcwNywgMTAzNzE1LCAxMDM3MjMsIDEwMzczMSwgMTAzNzM5LCAKKyAgICAxMDM3NDcsIDEwMzc1NSwgMTAzNzYzLCAxMDM3NzEsIDEwMzc3OSwgMTAzNzg3LCAxMDM3OTUsIDEwMzgwMywgMTAzODExLCAKKyAgICAxMDM4MTksIDEwMzgyNywgMTAzODM1LCAxMDM4NDMsIDEwMzg1MSwgMTAzODU5LCAxMDM4NjcsIDEwMzg3NSwgMTAzODgzLCAKKyAgICAxMDM4OTEsIDEwMzg5OSwgMTAzOTA3LCAxMDM5MTUsIDEwMzkyMywgMTAzOTMxLCAxMDM5MzksIDEwMzk0NywgMTAzOTU1LCAKKyAgICAxMDM5NjMsIDEwMzk3MSwgMTAzOTc5LCAxMDM5ODcsIDEwMzk5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0MDAzLCAKKyAgICAxMDQwMDgsIDEwNDAxNCwgMTA0MDIwLCAxMDQwMjYsIDEwNDAzMiwgMTA0MDM4LCAxMDQwNDQsIDEwNDA1MCwgMTA0MDU2LCAKKyAgICAxMDQwNjEsIDEwNDA2OCwgMTA0MDc0LCAxMDQwODAsIDEwNDA4NiwgMTA0MDkyLCAxMDQwOTgsIDEwNDEwMywgMTA0MTA5LCAKKyAgICAxMDQxMTUsIDEwNDEyMSwgMTA0MTI3LCAxMDQxMzMsIDEwNDEzOSwgMTA0MTQ1LCAxMDQxNTEsIDEwNDE1NywgMTA0MTYzLCAKKyAgICAxMDQxNjgsIDEwNDE3NCwgMTA0MTgyLCAxMDQxOTAsIDEwNDE5NiwgMTA0MjAyLCAxMDQyMDgsIDEwNDIxNCwgMTA0MjIyLCAKKyAgICAxMDQyMjgsIDEwNDIzNCwgMTA0MjQwLCAxMDQyNDYsIDEwNDI1MiwgMTA0MjU4LCAxMDQyNjMsIDEwNDI2OSwgMTA0Mjc3LCAKKyAgICAxMDQyODUsIDEwNDI5MSwgMTA0Mjk3LCAxMDQzMDMsIDEwNDMxMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMTA0MzE2LCAxMDQzMjEsIDEwNDMyNywgMTA0MzMzLCAxMDQzMzksIDEwNDM0NSwgMTA0MzUxLCAxMDQzNTcsIAorICAgIDEwNDM2MywgMTA0MzY5LCAxMDQzNzQsIDEwNDM4MSwgMTA0Mzg3LCAxMDQzOTMsIDEwNDM5OSwgMTA0NDA1LCAxMDQ0MTEsIAorICAgIDEwNDQxNiwgMTA0NDIyLCAxMDQ0MjgsIDEwNDQzNCwgMTA0NDQwLCAxMDQ0NDYsIDEwNDQ1MiwgMTA0NDU4LCAxMDQ0NjQsIAorICAgIDEwNDQ3MCwgMTA0NDc2LCAxMDQ0ODEsIDEwNDQ4NywgMTA0NDk1LCAxMDQ1MDMsIDEwNDUwOSwgMTA0NTE1LCAxMDQ1MjEsIAorICAgIDEwNDUyNywgMTA0NTM1LCAxMDQ1NDEsIDEwNDU0NywgMTA0NTUzLCAxMDQ1NTksIDEwNDU2NSwgMTA0NTcxLCAxMDQ1NzYsIAorICAgIDEwNDU4MiwgMTA0NTkwLCAxMDQ1OTgsIDEwNDYwNCwgMTA0NjEwLCAxMDQ2MTYsIDEwNDYyMywgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTA0NjI5LCAxMDQ2MzMsIDEwNDYzNywgMTA0NjQyLCAxMDQ2NDcsIDEwNDY1MywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTAzNTA4LCAxMDM1MTIsIDEwMzUxNiwgMTAzNTIwLCAxMDM1MjQsIDEwMzUyOCwgMTAzNTMxLCAxMDM1MzUsIAotICAgIDEwMzUzOCwgMTAzNTQyLCAxMDM1NDUsIDEwMzU0OSwgMTAzNTUzLCAxMDM1NTgsIDEwMzU2MiwgMTAzNTY3LCAxMDM1NzAsIAotICAgIDEwMzU3NCwgMTAzNTc3LCAxMDM1ODEsIDEwMzU4NCwgMTAzNTg4LCAxMDM1OTIsIDEwMzU5NiwgMTAzNjAwLCAxMDM2MDQsIAotICAgIDEwMzYwOCwgMTAzNjEyLCAxMDM2MTYsIDEwMzYyMCwgMTAzNjI0LCAxMDM2MjgsIDEwMzYzMiwgMTAzNjM2LCAxMDM2NDAsIAotICAgIDEwMzY0NCwgMTAzNjQ4LCAxMDM2NTIsIDEwMzY1NiwgMTAzNjYwLCAxMDM2NjMsIDEwMzY2NywgMTAzNjcxLCAxMDM2NzUsIAotICAgIDEwMzY3OCwgMTAzNjgxLCAxMDM2ODUsIDEwMzY4OSwgMTAzNjkzLCAxMDM2OTcsIDEwMzcwMSwgMTAzNzA1LCAxMDM3MDgsIAotICAgIDEwMzcxMiwgMTAzNzE4LCAxMDM3MjQsIDEwMzczMCwgMTAzNzM1LCAxMDM3NDIsIDEwMzc0NiwgMTAzNzUxLCAxMDM3NTUsIAotICAgIDEwMzc2MCwgMTAzNzY1LCAxMDM3NzEsIDEwMzc3NiwgMTAzNzgyLCAxMDM3ODYsIDEwMzc5MSwgMTAzNzk1LCAxMDM4MDAsIAotICAgIDEwMzgwMywgMTAzODA2LCAxMDM4MTAsIDEwMzgxNSwgMTAzODIxLCAxMDM4MjYsIDEwMzgzMiwgMCwgMCwgMCwgMCwgCi0gICAgMTAzODM3LCAxMDM4NDAsIDEwMzg0MywgMTAzODQ2LCAxMDM4NDksIDEwMzg1MiwgMTAzODU1LCAxMDM4NTksIDEwMzg2MiwgCi0gICAgMTAzODY2LCAxMDM4NzAsIDEwMzg3NCwgMTAzODc4LCAxMDM4ODIsIDEwMzg4NiwgMTAzODkwLCAxMDM4OTQsIDEwMzg5OCwgCi0gICAgMTAzOTAyLCAxMDM5MDcsIDEwMzkxMiwgMTAzOTE2LCAxMDM5MTksIDEwMzkyMiwgMTAzOTI1LCAxMDM5MjgsIDEwMzkzMSwgCi0gICAgMTAzOTM0LCAxMDM5MzgsIDEwMzk0MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTAzOTQ1LCAxMDM5NDksIDEwMzk1NCwgMTAzOTU5LCAxMDM5NjQsIDEwMzk2OCwgMTAzOTczLCAxMDM5NzcsIDEwMzk4MiwgCi0gICAgMTAzOTg2LCAxMDM5OTEsIDEwMzk5NSwgMTA0MDAwLCAxMDQwMDQsIDEwNDAwOSwgMTA0MDEzLCAxMDQwMTgsIDEwNDAyMywgCi0gICAgMTA0MDI4LCAxMDQwMzMsIDEwNDAzOCwgMTA0MDQzLCAxMDQwNDgsIDEwNDA1MywgMTA0MDU4LCAxMDQwNjMsIDEwNDA2OCwgCi0gICAgMTA0MDczLCAxMDQwNzgsIDEwNDA4MywgMTA0MDg4LCAxMDQwOTMsIDEwNDA5OCwgMTA0MTAzLCAxMDQxMDgsIDEwNDExMywgCi0gICAgMTA0MTE4LCAxMDQxMjIsIDEwNDEyNywgMTA0MTMyLCAxMDQxMzcsIDEwNDE0MSwgMTA0MTQ1LCAxMDQxNTAsIDEwNDE1NSwgCi0gICAgMTA0MTYwLCAxMDQxNjUsIDEwNDE3MCwgMTA0MTc1LCAxMDQxNzksIDEwNDE4NSwgMTA0MTkwLCAxMDQxOTYsIDEwNDIwMSwgCi0gICAgMTA0MjA3LCAxMDQyMTIsIDEwNDIxOCwgMTA0MjIzLCAxMDQyMjksIDEwNDIzNCwgMTA0MjM5LCAxMDQyNDQsIDEwNDI0OSwgCi0gICAgMTA0MjUzLCAxMDQyNTgsIDEwNDI2NCwgMTA0MjY4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMDQyNzMsIDEwNDI4MCwgMTA0Mjg3LCAxMDQyOTQsIDEwNDMwMSwgMTA0MzA4LCAxMDQzMTUsIDEwNDMyMiwgMTA0MzI5LCAKLSAgICAxMDQzMzYsIDEwNDM0MywgMTA0MzUwLCAxMDQzNTcsIDEwNDM2NCwgMTA0MzcxLCAxMDQzNzgsIDEwNDM4NSwgMTA0MzkyLCAKLSAgICAxMDQzOTksIDEwNDQwNiwgMTA0NDEzLCAxMDQ0MjAsIDEwNDQyNywgMTA0NDM0LCAxMDQ0NDEsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDEwNDQ0OCwgMTA0NDU1LCAxMDQ0NjEsIDEwNDQ2NywgMTA0NDczLCAxMDQ0NzksIDEwNDQ4NSwgMTA0NDkxLCAKLSAgICAxMDQ0OTgsIDEwNDUwNCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0NTExLCAxMDQ1MTYsIDEwNDUyMSwgMTA0NTI2LCAxMDQ1MzEsIAotICAgIDEwNDUzNSwgMTA0NTM5LCAxMDQ1NDMsIDEwNDU0OCwgMTA0NTUzLCAxMDQ1NTgsIDEwNDU2MywgMTA0NTY4LCAxMDQ1NzMsIAotICAgIDEwNDU3OCwgMTA0NTgzLCAxMDQ1ODgsIDEwNDU5MywgMTA0NTk4LCAxMDQ2MDMsIDEwNDYwOCwgMTA0NjEzLCAxMDQ2MTgsIAotICAgIDEwNDYyMywgMTA0NjI4LCAxMDQ2MzMsIDEwNDYzOCwgMTA0NjQzLCAxMDQ2NDgsIDEwNDY1MywgMTA0NjU4LCAxMDQ2NjMsIAotICAgIDEwNDY2OCwgMTA0NjczLCAxMDQ2NzgsIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTMsIDEwNDY5OCwgMTA0NzAzLCAxMDQ3MDgsIAotICAgIDEwNDcxMywgMTA0NzE5LCAxMDQ3MjQsIDEwNDczMCwgMTA0NzM1LCAxMDQ3NDEsIDEwNDc0NiwgMTA0NzUyLCAxMDQ3NTgsIAotICAgIDEwNDc2MiwgMTA0NzY3LCAxMDQ3NzEsIDAsIDEwNDc3NSwgMTA0NzgwLCAxMDQ3ODQsIDEwNDc4OCwgMTA0NzkyLCAKLSAgICAxMDQ3OTYsIDEwNDgwMCwgMTA0ODA0LCAxMDQ4MDksIDEwNDgxMywgMTA0ODE4LCAxMDQ4MjMsIDEwNDgyNywgMTA0ODMyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDQ4MzcsIDEwNDg0MSwgMTA0ODQ1LCAxMDQ4NDksIAotICAgIDEwNDg1MywgMTA0ODU3LCAxMDQ4NjEsIDEwNDg2NiwgMTA0ODcxLCAxMDQ4NzYsIDEwNDg4MSwgMTA0ODg2LCAxMDQ4OTEsIAotICAgIDEwNDg5NiwgMTA0OTAxLCAxMDQ5MDYsIDEwNDkxMSwgMTA0OTE2LCAxMDQ5MjEsIDEwNDkyNiwgMTA0OTMxLCAxMDQ5MzYsIAotICAgIDEwNDk0MSwgMTA0OTQ2LCAxMDQ5NTEsIDEwNDk1NSwgMTA0OTYwLCAxMDQ5NjUsIDEwNDk3MCwgMTA0OTc0LCAxMDQ5NzksIAotICAgIDEwNDk4NCwgMTA0OTg5LCAxMDQ5OTQsIDEwNDk5OCwgMTA1MDAzLCAxMDUwMDgsIDEwNTAxMywgMTA1MDE4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxMDUwMjMsIDEwNTAyNywgMTA1MDMxLCAxMDUwMzUsIDEwNTAzOCwgMTA1MDQyLCAxMDUwNDUsIAotICAgIDEwNTA0OSwgMTA1MDUyLCAxMDUwNTYsIDEwNTA2MCwgMTA1MDY1LCAxMDUwNjksIDEwNTA3NCwgMTA1MDc3LCAxMDUwODEsIAotICAgIDEwNTA4NCwgMTA1MDg4LCAxMDUwOTEsIDEwNTA5NSwgMTA1MDk5LCAxMDUxMDMsIDEwNTEwNywgMTA1MTExLCAxMDUxMTUsIAotICAgIDEwNTExOSwgMTA1MTIzLCAxMDUxMjcsIDEwNTEzMSwgMTA1MTM1LCAxMDUxMzksIDEwNTE0MywgMTA1MTQ3LCAxMDUxNTEsIAotICAgIDEwNTE1NSwgMTA1MTU5LCAxMDUxNjMsIDEwNTE2NywgMTA1MTcwLCAxMDUxNzQsIDEwNTE3OCwgMTA1MTgyLCAxMDUxODUsIAotICAgIDEwNTE4OCwgMTA1MTkyLCAxMDUxOTYsIDEwNTIwMCwgMTA1MjA0LCAxMDUyMDgsIDEwNTIxMiwgMTA1MjE2LCAxMDUyMTksIAotICAgIDEwNTIyNCwgMTA1MjI4LCAxMDUyMzMsIDEwNTIzNywgMTA1MjQyLCAxMDUyNDcsIDEwNTI1MywgMTA1MjU4LCAxMDUyNjQsIAotICAgIDEwNTI2OCwgMTA1MjczLCAxMDUyNzcsIDEwNTI4MiwgMTA1Mjg2LCAxMDUyOTAsIDEwNTI5NCwgMTA1Mjk4LCAxMDUzMDEsIAotICAgIDEwNTMwNCwgMTA1MzA4LCAxMDUzMTIsIDEwNTMxNSwgMTA1MzE5LCAxMDUzMjMsIDEwNTMyNywgMTA1MzM0LCAwLCAwLCAKLSAgICAxMDUzMzgsIDEwNTM0MiwgMTA1MzQ1LCAxMDUzNDgsIDEwNTM1MSwgMTA1MzU0LCAxMDUzNTcsIDEwNTM2MCwgMTA1MzY0LCAKLSAgICAxMDUzNjcsIDEwNTM3MSwgMTA1Mzc0LCAxMDUzNzgsIDEwNTM4MSwgMTA1Mzg1LCAxMDUzOTAsIDAsIDEwNTM5NSwgCi0gICAgMTA1NDAwLCAxMDU0MDUsIDEwNTQxMCwgMTA1NDE1LCAxMDU0MjAsIDEwNTQyNSwgMTA1NDMxLCAxMDU0MzYsIDEwNTQ0MiwgCi0gICAgMTA1NDQ4LCAxMDU0NTQsIDEwNTQ2MCwgMTA1NDY2LCAxMDU0NzIsIDEwNTQ3OCwgMTA1NDg0LCAxMDU0OTAsIDEwNTQ5NiwgCi0gICAgMTA1NTAzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1MTAsIDEwNTUxNCwgMTA1NTE5LCAxMDU1MjMsIAotICAgIDEwNTUyNywgMTA1NTMxLCAxMDU1MzYsIDEwNTU0MCwgMTA1NTQ1LCAxMDU1NDksIDEwNTU1NCwgMTA1NTU5LCAxMDU1NjQsIAotICAgIDEwNTU2OSwgMTA1NTc0LCAxMDU1NzksIDEwNTU4NCwgMTA1NTg5LCAwLCAxMDU1OTQsIDEwNTU5OSwgMTA1NjA0LCAKLSAgICAxMDU2MDksIDEwNTYxNCwgMTA1NjE5LCAxMDU2MjQsIDEwNTYyOSwgMTA1NjM0LCAxMDU2MzksIDEwNTY0NCwgMTA1NjQ5LCAKLSAgICAxMDU2NTQsIDEwNTY1OCwgMTA1NjYzLCAxMDU2NjgsIDEwNTY3MywgMTA1Njc4LCAxMDU2ODIsIDEwNTY4NiwgMTA1NjkxLCAKLSAgICAxMDU2OTYsIDEwNTcwMSwgMTA1NzA2LCAxMDU3MTAsIDEwNTcxNSwgMTA1NzIxLCAxMDU3MjYsIDEwNTczMiwgMTA1NzM3LCAKLSAgICAxMDU3NDIsIDEwNTc0OCwgMTA1NzUzLCAxMDU3NTksIDEwNTc2NCwgMTA1NzY5LCAxMDU3NzQsIDEwNTc3OSwgMTA1NzgzLCAKLSAgICAxMDU3ODgsIDEwNTc5NCwgMTA1Nzk5LCAxMDU4MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNDY1OSwgMTA0NjYzLCAKKyAgICAxMDQ2NjcsIDEwNDY3MSwgMTA0Njc1LCAxMDQ2NzksIDEwNDY4MywgMTA0Njg4LCAxMDQ2OTIsIDEwNDY5NywgMTA0NzAyLCAKKyAgICAxMDQ3MDcsIDEwNDcxMiwgMTA0NzE3LCAxMDQ3MjIsIDEwNDcyNywgMTA0NzMyLCAxMDQ3MzcsIDEwNDc0MiwgMTA0NzQ4LCAKKyAgICAxMDQ3NTQsIDEwNDc2MCwgMTA0NzY3LCAxMDQ3NzQsIDEwNDc4MSwgMTA0Nzg4LCAxMDQ3OTUsIDEwNDgwMiwgMTA0ODA5LCAKKyAgICAxMDQ4MTYsIDEwNDgyMywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTA1ODEwLCAxMDU4MTQsIDEwNTgxOCwgMTA1ODIyLCAxMDU4MjYsIDEwNTgzMCwgMTA1ODM1LCAwLCAKLSAgICAxMDU4NDAsIDAsIDEwNTg0NSwgMTA1ODUwLCAxMDU4NTUsIDEwNTg2MCwgMCwgMTA1ODY1LCAxMDU4NzAsIDEwNTg3NSwgCi0gICAgMTA1ODgwLCAxMDU4ODUsIDEwNTg5MCwgMTA1ODk1LCAxMDU5MDAsIDEwNTkwNSwgMTA1OTEwLCAxMDU5MTUsIDEwNTkyMCwgCi0gICAgMTA1OTI1LCAxMDU5MjksIDEwNTkzNCwgMCwgMTA1OTM5LCAxMDU5NDQsIDEwNTk0OCwgMTA1OTUyLCAxMDU5NTcsIAotICAgIDEwNTk2MiwgMTA1OTY3LCAxMDU5NzIsIDEwNTk3NiwgMTA1OTgxLCAxMDU5ODYsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTk5MSwgCi0gICAgMTA1OTk1LCAxMDYwMDAsIDEwNjAwNCwgMTA2MDA5LCAxMDYwMTMsIDEwNjAxOCwgMTA2MDIyLCAxMDYwMjcsIDEwNjAzMSwgCi0gICAgMTA2MDM2LCAxMDYwNDAsIDEwNjA0NSwgMTA2MDUwLCAxMDYwNTUsIDEwNjA2MCwgMTA2MDY1LCAxMDYwNzAsIDEwNjA3NSwgCi0gICAgMTA2MDgwLCAxMDYwODUsIDEwNjA5MCwgMTA2MDk1LCAxMDYxMDAsIDEwNjEwNSwgMTA2MTEwLCAxMDYxMTUsIDEwNjEyMCwgCi0gICAgMTA2MTI1LCAxMDYxMzAsIDEwNjEzNSwgMTA2MTQwLCAxMDYxNDUsIDEwNjE1MCwgMTA2MTU1LCAxMDYxNTksIDEwNjE2NCwgCi0gICAgMTA2MTY5LCAxMDYxNzQsIDEwNjE3OSwgMTA2MTgzLCAxMDYxODcsIDEwNjE5MiwgMTA2MTk3LCAxMDYyMDIsIDEwNjIwNywgCi0gICAgMTA2MjEyLCAxMDYyMTYsIDEwNjIyMSwgMTA2MjI3LCAxMDYyMzIsIDEwNjIzOCwgMTA2MjQzLCAxMDYyNDksIDEwNjI1NCwgCi0gICAgMTA2MjYwLCAxMDYyNjUsIDEwNjI3MSwgMTA2Mjc2LCAwLCAwLCAwLCAwLCAwLCAxMDYyODEsIDEwNjI4NiwgMTA2MjkwLCAKLSAgICAxMDYyOTQsIDEwNjI5OCwgMTA2MzAyLCAxMDYzMDYsIDEwNjMxMCwgMTA2MzE1LCAxMDYzMTksIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwNjMyNCwgMTA2MzMxLCAxMDYzMzYsIDEwNjM0MSwgMCwgMTA2MzQ2LCAxMDYzNTAsIDEwNjM1NSwgMTA2MzU5LCAKLSAgICAxMDYzNjQsIDEwNjM2OCwgMTA2MzczLCAxMDYzNzgsIDAsIDAsIDEwNjM4MywgMTA2Mzg4LCAwLCAwLCAxMDYzOTMsIAotICAgIDEwNjM5OCwgMTA2NDAzLCAxMDY0MDcsIDEwNjQxMiwgMTA2NDE3LCAxMDY0MjIsIDEwNjQyNywgMTA2NDMyLCAxMDY0MzcsIAotICAgIDEwNjQ0MiwgMTA2NDQ3LCAxMDY0NTIsIDEwNjQ1NywgMTA2NDYyLCAxMDY0NjcsIDEwNjQ3MiwgMTA2NDc3LCAxMDY0ODIsIAotICAgIDEwNjQ4NywgMTA2NDkyLCAxMDY0OTcsIDAsIDEwNjUwMiwgMTA2NTA2LCAxMDY1MTEsIDEwNjUxNiwgMTA2NTIxLCAKLSAgICAxMDY1MjUsIDEwNjUyOSwgMCwgMTA2NTM0LCAxMDY1MzksIDAsIDEwNjU0NCwgMTA2NTQ5LCAxMDY1NTQsIDEwNjU1OSwgCi0gICAgMTA2NTY0LCAwLCAwLCAxMDY1NjgsIDEwNjU3MywgMTA2NTc4LCAxMDY1ODQsIDEwNjU4OSwgMTA2NTk1LCAxMDY2MDAsIAotICAgIDEwNjYwNiwgMTA2NjEyLCAwLCAwLCAxMDY2MTksIDEwNjYyNSwgMCwgMCwgMTA2NjMxLCAxMDY2MzcsIDEwNjY0MywgMCwgMCwgCi0gICAgMTA2NjQ4LCAwLCAwLCAwLCAwLCAwLCAwLCAxMDY2NTIsIDAsIDAsIDAsIDAsIDAsIDEwNjY1OSwgMTA2NjY0LCAxMDY2NzEsIAotICAgIDEwNjY3OSwgMTA2Njg1LCAxMDY2OTEsIDEwNjY5NywgMCwgMCwgMTA2NzA0LCAxMDY3MTAsIDEwNjcxNSwgMTA2NzIwLCAKLSAgICAxMDY3MjUsIDEwNjczMCwgMTA2NzM1LCAwLCAwLCAwLCAxMDY3NDAsIDEwNjc0NSwgMTA2NzUwLCAxMDY3NTYsIDEwNjc2MiwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA0ODMwLCAxMDQ4MzQsIDEwNDgzOCwgMTA0ODQyLCAKKyAgICAxMDQ4NDYsIDEwNDg1MCwgMTA0ODUzLCAxMDQ4NTcsIDEwNDg2MCwgMTA0ODY0LCAxMDQ4NjcsIDEwNDg3MSwgMTA0ODc1LCAKKyAgICAxMDQ4ODAsIDEwNDg4NCwgMTA0ODg5LCAxMDQ4OTIsIDEwNDg5NiwgMTA0ODk5LCAxMDQ5MDMsIDEwNDkwNiwgMTA0OTEwLCAKKyAgICAxMDQ5MTQsIDEwNDkxOCwgMTA0OTIyLCAxMDQ5MjYsIDEwNDkzMCwgMTA0OTM0LCAxMDQ5MzgsIDEwNDk0MiwgMTA0OTQ2LCAKKyAgICAxMDQ5NTAsIDEwNDk1NCwgMTA0OTU4LCAxMDQ5NjIsIDEwNDk2NiwgMTA0OTcwLCAxMDQ5NzQsIDEwNDk3OCwgMTA0OTgxLCAKKyAgICAxMDQ5ODQsIDEwNDk4OCwgMTA0OTkyLCAxMDQ5OTYsIDEwNDk5OSwgMTA1MDAyLCAxMDUwMDYsIDEwNTAwOSwgMTA1MDEzLCAKKyAgICAxMDUwMTcsIDEwNTAyMSwgMTA1MDI1LCAxMDUwMjgsIDEwNTAzMiwgMTA1MDM4LCAxMDUwNDQsIDEwNTA1MCwgMTA1MDU1LCAKKyAgICAxMDUwNjIsIDEwNTA2NiwgMTA1MDcxLCAxMDUwNzUsIDEwNTA4MCwgMTA1MDg1LCAxMDUwOTEsIDEwNTA5NiwgMTA1MTAyLCAKKyAgICAxMDUxMDYsIDEwNTExMSwgMTA1MTE1LCAxMDUxMjAsIDEwNTEyMywgMTA1MTI2LCAxMDUxMzAsIDEwNTEzNSwgMTA1MTQxLCAKKyAgICAxMDUxNDYsIDEwNTE1MiwgMCwgMCwgMCwgMCwgMTA1MTU3LCAxMDUxNjAsIDEwNTE2MywgMTA1MTY2LCAxMDUxNjksIAorICAgIDEwNTE3MiwgMTA1MTc1LCAxMDUxNzksIDEwNTE4MiwgMTA1MTg2LCAxMDUxOTAsIDEwNTE5NCwgMTA1MTk4LCAxMDUyMDIsIAorICAgIDEwNTIwNiwgMTA1MjEwLCAxMDUyMTQsIDEwNTIxOCwgMTA1MjIyLCAxMDUyMjcsIDEwNTIzMiwgMTA1MjM2LCAxMDUyMzksIAorICAgIDEwNTI0MiwgMTA1MjQ1LCAxMDUyNDgsIDEwNTI1MSwgMTA1MjU0LCAxMDUyNTgsIDEwNTI2MSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1MjY1LCAxMDUyNjksIDEwNTI3NCwgMTA1Mjc5LCAxMDUyODQsIAorICAgIDEwNTI4OCwgMTA1MjkzLCAxMDUyOTcsIDEwNTMwMiwgMTA1MzA2LCAxMDUzMTEsIDEwNTMxNSwgMTA1MzIwLCAxMDUzMjQsIAorICAgIDEwNTMyOSwgMTA1MzMzLCAxMDUzMzgsIDEwNTM0MywgMTA1MzQ4LCAxMDUzNTMsIDEwNTM1OCwgMTA1MzYzLCAxMDUzNjgsIAorICAgIDEwNTM3MywgMTA1Mzc4LCAxMDUzODMsIDEwNTM4OCwgMTA1MzkzLCAxMDUzOTgsIDEwNTQwMywgMTA1NDA4LCAxMDU0MTMsIAorICAgIDEwNTQxOCwgMTA1NDIzLCAxMDU0MjgsIDEwNTQzMywgMTA1NDM3LCAxMDU0NDEsIDEwNTQ0NiwgMTA1NDUxLCAxMDU0NTYsIAorICAgIDEwNTQ2MCwgMTA1NDY0LCAxMDU0NjksIDEwNTQ3MywgMTA1NDc4LCAxMDU0ODMsIDEwNTQ4OCwgMTA1NDkzLCAxMDU0OTcsIAorICAgIDEwNTUwMywgMTA1NTA4LCAxMDU1MTQsIDEwNTUxOSwgMTA1NTI1LCAxMDU1MzAsIDEwNTUzNiwgMTA1NTQxLCAxMDU1NDcsIAorICAgIDEwNTU1MiwgMTA1NTU3LCAxMDU1NjIsIDEwNTU2NywgMTA1NTcxLCAxMDU1NzYsIDEwNTU4MiwgMTA1NTg2LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDU1OTEsIDEwNTU5OCwgMTA1NjA1LCAxMDU2MTIsIDEwNTYxOSwgCisgICAgMTA1NjI2LCAxMDU2MzMsIDEwNTY0MCwgMTA1NjQ3LCAxMDU2NTQsIDEwNTY2MSwgMTA1NjY4LCAxMDU2NzUsIDEwNTY4MiwgCisgICAgMTA1Njg5LCAxMDU2OTYsIDEwNTcwMywgMTA1NzEwLCAxMDU3MTcsIDEwNTcyNCwgMTA1NzMxLCAxMDU3MzgsIDEwNTc0NSwgCisgICAgMTA1NzUyLCAxMDU3NTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNTc2NiwgMTA1NzczLCAxMDU3NzksIDEwNTc4NSwgCisgICAgMTA1NzkxLCAxMDU3OTcsIDEwNTgwMywgMTA1ODA5LCAxMDU4MTYsIDEwNTgyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMTA1ODI5LCAKKyAgICAxMDU4MzQsIDEwNTgzOSwgMTA1ODQ0LCAxMDU4NDksIDEwNTg1MywgMTA1ODU3LCAxMDU4NjEsIDEwNTg2NiwgMTA1ODcxLCAKKyAgICAxMDU4NzYsIDEwNTg4MSwgMTA1ODg2LCAxMDU4OTEsIDEwNTg5NiwgMTA1OTAxLCAxMDU5MDYsIDEwNTkxMSwgMTA1OTE2LCAKKyAgICAxMDU5MjEsIDEwNTkyNiwgMTA1OTMxLCAxMDU5MzYsIDEwNTk0MSwgMTA1OTQ2LCAxMDU5NTEsIDEwNTk1NiwgMTA1OTYxLCAKKyAgICAxMDU5NjYsIDEwNTk3MSwgMTA1OTc2LCAxMDU5ODEsIDEwNTk4NiwgMTA1OTkxLCAxMDU5OTYsIDEwNjAwMSwgMTA2MDA2LCAKKyAgICAxMDYwMTEsIDEwNjAxNiwgMTA2MDIxLCAxMDYwMjYsIDEwNjAzMSwgMTA2MDM3LCAxMDYwNDIsIDEwNjA0OCwgMTA2MDUzLCAKKyAgICAxMDYwNTksIDEwNjA2NCwgMTA2MDcwLCAxMDYwNzYsIDEwNjA4MCwgMTA2MDg1LCAxMDYwODksIDAsIDEwNjA5MywgCisgICAgMTA2MDk4LCAxMDYxMDIsIDEwNjEwNiwgMTA2MTEwLCAxMDYxMTQsIDEwNjExOCwgMTA2MTIyLCAxMDYxMjcsIDEwNjEzMSwgCisgICAgMTA2MTM2LCAxMDYxNDEsIDEwNjE0NSwgMTA2MTUwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDYxNTUsIDEwNjE1OSwgMTA2MTYzLCAxMDYxNjcsIDEwNjE3MSwgMTA2MTc1LCAxMDYxNzksIDEwNjE4NCwgMTA2MTg5LCAKKyAgICAxMDYxOTQsIDEwNjE5OSwgMTA2MjA0LCAxMDYyMDksIDEwNjIxNCwgMTA2MjE5LCAxMDYyMjQsIDEwNjIyOSwgMTA2MjM0LCAKKyAgICAxMDYyMzksIDEwNjI0NCwgMTA2MjQ5LCAxMDYyNTQsIDEwNjI1OSwgMTA2MjY0LCAxMDYyNjgsIDEwNjI3MiwgMTA2Mjc3LCAKKyAgICAxMDYyODIsIDEwNjI4NywgMTA2MjkxLCAxMDYyOTYsIDEwNjMwMCwgMTA2MzA1LCAxMDYzMTAsIDEwNjMxNCwgMTA2MzE5LCAKKyAgICAxMDYzMjQsIDEwNjMyOSwgMTA2MzM0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDYzMzksIDEwNjM0MywgCisgICAgMTA2MzQ3LCAxMDYzNTEsIDEwNjM1NCwgMTA2MzU4LCAxMDYzNjEsIDEwNjM2NSwgMTA2MzY4LCAxMDYzNzIsIDEwNjM3NiwgCisgICAgMTA2MzgxLCAxMDYzODUsIDEwNjM5MCwgMTA2MzkzLCAxMDYzOTcsIDEwNjQwMCwgMTA2NDA0LCAxMDY0MDcsIDEwNjQxMSwgCisgICAgMTA2NDE1LCAxMDY0MTksIDEwNjQyMywgMTA2NDI3LCAxMDY0MzEsIDEwNjQzNSwgMTA2NDM5LCAxMDY0NDMsIDEwNjQ0NywgCisgICAgMTA2NDUxLCAxMDY0NTUsIDEwNjQ1OSwgMTA2NDYzLCAxMDY0NjcsIDEwNjQ3MSwgMTA2NDc1LCAxMDY0NzksIDEwNjQ4MiwgCisgICAgMTA2NDg1LCAxMDY0ODksIDEwNjQ5MywgMTA2NDk3LCAxMDY1MDAsIDEwNjUwMywgMTA2NTA3LCAxMDY1MTAsIDEwNjUxNCwgCisgICAgMTA2NTE4LCAxMDY1MjIsIDEwNjUyNiwgMTA2NTMwLCAxMDY1MzMsIDEwNjUzOCwgMTA2NTQyLCAxMDY1NDcsIDEwNjU1MSwgCisgICAgMTA2NTU2LCAxMDY1NjEsIDEwNjU2NywgMTA2NTcyLCAxMDY1NzgsIDEwNjU4MiwgMTA2NTg3LCAxMDY1OTEsIDEwNjU5NiwgCisgICAgMTA2NjAwLCAxMDY2MDQsIDEwNjYwOCwgMTA2NjEyLCAxMDY2MTUsIDEwNjYxOCwgMTA2NjIyLCAxMDY2MjYsIDEwNjYyOSwgCisgICAgMTA2NjMzLCAxMDY2MzcsIDEwNjY0MSwgMTA2NjQ4LCAwLCAwLCAxMDY2NTIsIDEwNjY1NiwgMTA2NjU5LCAxMDY2NjIsIAorICAgIDEwNjY2NSwgMTA2NjY4LCAxMDY2NzEsIDEwNjY3NCwgMTA2Njc4LCAxMDY2ODEsIDEwNjY4NSwgMTA2Njg4LCAxMDY2OTIsIAorICAgIDEwNjY5NSwgMTA2Njk5LCAxMDY3MDQsIDAsIDEwNjcwOSwgMTA2NzE0LCAxMDY3MTksIDEwNjcyNCwgMTA2NzI5LCAKKyAgICAxMDY3MzQsIDEwNjczOSwgMTA2NzQ1LCAxMDY3NTAsIDEwNjc1NiwgMTA2NzYyLCAxMDY3NjgsIDEwNjc3NCwgMTA2NzgwLCAKKyAgICAxMDY3ODYsIDEwNjc5MiwgMTA2Nzk4LCAxMDY4MDQsIDEwNjgxMCwgMTA2ODE3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxMDY4MjQsIDEwNjgyOCwgMTA2ODMzLCAxMDY4MzcsIDEwNjg0MSwgMTA2ODQ1LCAxMDY4NTAsIDEwNjg1NCwgCisgICAgMTA2ODU5LCAxMDY4NjMsIDEwNjg2OCwgMTA2ODczLCAxMDY4NzgsIDEwNjg4MywgMTA2ODg4LCAxMDY4OTMsIDEwNjg5OCwgCisgICAgMTA2OTAzLCAwLCAxMDY5MDgsIDEwNjkxMywgMTA2OTE4LCAxMDY5MjMsIDEwNjkyOCwgMTA2OTMzLCAxMDY5MzgsIAorICAgIDEwNjk0MywgMTA2OTQ4LCAxMDY5NTMsIDEwNjk1OCwgMTA2OTYzLCAxMDY5NjcsIDEwNjk3MSwgMTA2OTc2LCAxMDY5ODEsIAorICAgIDEwNjk4NiwgMTA2OTkxLCAxMDY5OTUsIDEwNjk5OSwgMTA3MDA0LCAxMDcwMDgsIDEwNzAxMywgMTA3MDE4LCAxMDcwMjIsIAorICAgIDEwNzAyNywgMTA3MDMzLCAxMDcwMzgsIDEwNzA0NCwgMTA3MDQ5LCAxMDcwNTQsIDEwNzA2MCwgMTA3MDY1LCAxMDcwNzEsIAorICAgIDEwNzA3NiwgMTA3MDgxLCAxMDcwODYsIDEwNzA5MSwgMTA3MDk1LCAxMDcxMDAsIDEwNzEwNiwgMTA3MTExLCAxMDcxMTcsIAorICAgIDEwNzEyMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTI3LCAxMDcxMzEsIAorICAgIDEwNzEzNSwgMTA3MTM5LCAxMDcxNDMsIDEwNzE0NywgMTA3MTUyLCAwLCAxMDcxNTcsIDAsIDEwNzE2MiwgMTA3MTY3LCAKKyAgICAxMDcxNzIsIDEwNzE3NywgMCwgMTA3MTgyLCAxMDcxODcsIDEwNzE5MiwgMTA3MTk3LCAxMDcyMDIsIDEwNzIwNywgCisgICAgMTA3MjEyLCAxMDcyMTcsIDEwNzIyMiwgMTA3MjI3LCAxMDcyMzIsIDEwNzIzNywgMTA3MjQxLCAxMDcyNDUsIDEwNzI1MCwgCisgICAgMCwgMTA3MjU1LCAxMDcyNjAsIDEwNzI2NCwgMTA3MjY4LCAxMDcyNzMsIDEwNzI3NywgMTA3MjgyLCAxMDcyODcsIAorICAgIDEwNzI5MSwgMTA3Mjk2LCAxMDczMDEsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzMwNiwgMTA3MzEwLCAxMDczMTUsIDEwNzMxOSwgCisgICAgMTA3MzI0LCAxMDczMjgsIDEwNzMzMywgMTA3MzM3LCAxMDczNDIsIDEwNzM0NiwgMTA3MzUxLCAxMDczNTUsIDEwNzM2MCwgCisgICAgMTA3MzY1LCAxMDczNzAsIDEwNzM3NSwgMTA3MzgwLCAxMDczODUsIDEwNzM5MCwgMTA3Mzk1LCAxMDc0MDAsIDEwNzQwNSwgCisgICAgMTA3NDEwLCAxMDc0MTUsIDEwNzQyMCwgMTA3NDI1LCAxMDc0MzAsIDEwNzQzNSwgMTA3NDQwLCAxMDc0NDUsIDEwNzQ1MCwgCisgICAgMTA3NDU1LCAxMDc0NjAsIDEwNzQ2NSwgMTA3NDY5LCAxMDc0NzMsIDEwNzQ3OCwgMTA3NDgzLCAxMDc0ODgsIDEwNzQ5MywgCisgICAgMTA3NDk3LCAxMDc1MDEsIDEwNzUwNiwgMTA3NTEwLCAxMDc1MTUsIDEwNzUyMCwgMTA3NTI1LCAxMDc1MjksIDEwNzUzNCwgCisgICAgMTA3NTQwLCAxMDc1NDUsIDEwNzU1MSwgMTA3NTU2LCAxMDc1NjIsIDEwNzU2NywgMTA3NTczLCAxMDc1NzgsIDEwNzU4NCwgCisgICAgMTA3NTg5LCAwLCAwLCAwLCAwLCAwLCAxMDc1OTQsIDEwNzU5OSwgMTA3NjAzLCAxMDc2MDcsIDEwNzYxMSwgMTA3NjE1LCAKKyAgICAxMDc2MTksIDEwNzYyMywgMTA3NjI4LCAxMDc2MzIsIDAsIDAsIDAsIDAsIDAsIDAsIDEwNzYzNywgMTA3NjQ0LCAxMDc2NDksIAorICAgIDEwNzY1NCwgMCwgMTA3NjU5LCAxMDc2NjMsIDEwNzY2OCwgMTA3NjcyLCAxMDc2NzcsIDEwNzY4MSwgMTA3Njg2LCAKKyAgICAxMDc2OTEsIDAsIDAsIDEwNzY5NiwgMTA3NzAxLCAwLCAwLCAxMDc3MDYsIDEwNzcxMSwgMTA3NzE2LCAxMDc3MjAsIAorICAgIDEwNzcyNSwgMTA3NzMwLCAxMDc3MzUsIDEwNzc0MCwgMTA3NzQ1LCAxMDc3NTAsIDEwNzc1NSwgMTA3NzYwLCAxMDc3NjUsIAorICAgIDEwNzc3MCwgMTA3Nzc1LCAxMDc3ODAsIDEwNzc4NSwgMTA3NzkwLCAxMDc3OTUsIDEwNzgwMCwgMTA3ODA1LCAxMDc4MTAsIAorICAgIDAsIDEwNzgxNCwgMTA3ODE4LCAxMDc4MjMsIDEwNzgyOCwgMTA3ODMzLCAxMDc4MzcsIDEwNzg0MSwgMCwgMTA3ODQ2LCAKKyAgICAxMDc4NTAsIDAsIDEwNzg1NSwgMTA3ODYwLCAxMDc4NjUsIDEwNzg3MCwgMTA3ODc1LCAwLCAwLCAxMDc4NzksIDEwNzg4NCwgCisgICAgMTA3ODg5LCAxMDc4OTUsIDEwNzkwMCwgMTA3OTA2LCAxMDc5MTEsIDEwNzkxNywgMTA3OTIzLCAwLCAwLCAxMDc5MzAsIAorICAgIDEwNzkzNiwgMCwgMCwgMTA3OTQyLCAxMDc5NDgsIDEwNzk1NCwgMCwgMCwgMTA3OTU5LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDc5NjMsIDAsIDAsIDAsIDAsIDAsIDEwNzk3MCwgMTA3OTc1LCAxMDc5ODIsIDEwNzk5MCwgMTA3OTk2LCAxMDgwMDIsIAorICAgIDEwODAwOCwgMCwgMCwgMTA4MDE1LCAxMDgwMjEsIDEwODAyNiwgMTA4MDMxLCAxMDgwMzYsIDEwODA0MSwgMTA4MDQ2LCAwLCAKKyAgICAwLCAwLCAxMDgwNTEsIDEwODA1NiwgMTA4MDYxLCAxMDgwNjYsIDEwODA3MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4MDc3LCAxMDgwODAsIDEwODA4NCwgMTA4MDg3LCAxMDgwOTEsIAorICAgIDEwODA5NCwgMTA4MDk4LCAxMDgxMDIsIDEwODEwNywgMTA4MTExLCAxMDgxMTYsIDEwODExOSwgMTA4MTIzLCAxMDgxMjYsIAorICAgIDEwODEzMCwgMTA4MTMzLCAxMDgxMzcsIDEwODE0MSwgMTA4MTQ1LCAxMDgxNDksIDEwODE1MywgMTA4MTU3LCAxMDgxNjEsIAorICAgIDEwODE2NSwgMTA4MTY5LCAxMDgxNzMsIDEwODE3NywgMTA4MTgxLCAxMDgxODUsIDEwODE4OSwgMTA4MTkzLCAxMDgxOTcsIAorICAgIDEwODIwMSwgMTA4MjA1LCAxMDgyMDksIDEwODIxMywgMTA4MjE2LCAxMDgyMjAsIDEwODIyMywgMTA4MjI3LCAxMDgyMzEsIAorICAgIDEwODIzNSwgMTA4MjM4LCAxMDgyNDIsIDEwODI0NSwgMTA4MjQ5LCAxMDgyNTMsIDEwODI1NiwgMTA4MjYwLCAxMDgyNjQsIAorICAgIDEwODI2OCwgMTA4MjcyLCAxMDgyNzYsIDEwODI3OSwgMTA4Mjg0LCAxMDgyODgsIDEwODI5MywgMTA4Mjk3LCAxMDgzMDIsIAorICAgIDEwODMwNywgMTA4MzEzLCAxMDgzMTgsIDEwODMyNCwgMTA4MzI4LCAxMDgzMzMsIDEwODMzNywgMTA4MzQyLCAxMDgzNDYsIAorICAgIDEwODM1MCwgMTA4MzU0LCAxMDgzNTgsIDEwODM2MiwgMTA4MzY2LCAxMDgzNzEsIDEwODM3NCwgMTA4Mzc3LCAxMDgzODAsIAorICAgIDEwODM4NCwgMTA4Mzg3LCAxMDgzOTIsIDEwODM5NiwgMTA4NDAwLCAxMDg0MDMsIDEwODQwNiwgMTA4NDA5LCAxMDg0MTIsIAorICAgIDEwODQxNSwgMTA4NDE4LCAxMDg0MjIsIDEwODQyNSwgMCwgMTA4NDI5LCAwLCAxMDg0MzMsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDEwODQzNywgMTA4NDQxLCAxMDg0NDUsIDEwODQ1MCwgMTA4NDU0LCAxMDg0NTksIDEwODQ2MywgCisgICAgMTA4NDY4LCAxMDg0NzMsIDEwODQ3OSwgMTA4NDg0LCAxMDg0OTAsIDEwODQ5NCwgMTA4NDk5LCAxMDg1MDMsIDEwODUwOCwgCisgICAgMTA4NTEyLCAxMDg1MTcsIDEwODUyMiwgMTA4NTI3LCAxMDg1MzIsIDEwODUzNywgMTA4NTQyLCAxMDg1NDcsIDEwODU1MiwgCisgICAgMTA4NTU3LCAxMDg1NjIsIDEwODU2NywgMTA4NTcyLCAxMDg1NzcsIDEwODU4MiwgMTA4NTg3LCAxMDg1OTIsIDEwODU5NywgCisgICAgMTA4NjAyLCAxMDg2MDYsIDEwODYxMCwgMTA4NjE1LCAxMDg2MjAsIDEwODYyNSwgMTA4NjI5LCAxMDg2MzMsIDEwODYzOCwgCisgICAgMTA4NjQyLCAxMDg2NDcsIDEwODY1MiwgMTA4NjU3LCAxMDg2NjIsIDEwODY2NiwgMTA4NjcyLCAxMDg2NzcsIDEwODY4MywgCisgICAgMTA4Njg4LCAxMDg2OTQsIDEwODcwMCwgMTA4NzA3LCAxMDg3MTMsIDEwODcyMCwgMTA4NzI1LCAxMDg3MzIsIDEwODczOCwgCisgICAgMTA4NzQzLCAxMDg3NTAsIDEwODc1NiwgMTA4NzYxLCAxMDg3NjYsIDEwODc3MSwgMTA4Nzc2LCAxMDg3ODEsIDEwODc4NiwgCisgICAgMTA4NzkwLCAxMDg3OTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODc5OSwgMTA4ODA0LCAxMDg4MDgsIDEwODgxMiwgCisgICAgMTA4ODE2LCAxMDg4MjAsIDEwODgyNCwgMTA4ODI4LCAxMDg4MzMsIDEwODgzNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTA2NzY3LCAxMDY3NzEsIDEwNjc3NSwgMTA2NzgwLCAxMDY3ODQsIDEwNjc4OSwgMTA2NzkzLCAxMDY3OTgsIAotICAgIDEwNjgwMywgMTA2ODA5LCAxMDY4MTQsIDEwNjgyMCwgMTA2ODI0LCAxMDY4MjksIDEwNjgzMywgMTA2ODM4LCAxMDY4NDIsIAotICAgIDEwNjg0NywgMTA2ODUyLCAxMDY4NTcsIDEwNjg2MiwgMTA2ODY3LCAxMDY4NzIsIDEwNjg3NywgMTA2ODgyLCAxMDY4ODcsIAotICAgIDEwNjg5MiwgMTA2ODk3LCAxMDY5MDIsIDEwNjkwNywgMTA2OTEyLCAxMDY5MTcsIDEwNjkyMiwgMTA2OTI3LCAxMDY5MzIsIAotICAgIDEwNjkzNywgMTA2OTQxLCAxMDY5NDYsIDEwNjk1MSwgMTA2OTU2LCAxMDY5NjAsIDEwNjk2NCwgMTA2OTY5LCAxMDY5NzQsIAotICAgIDEwNjk3OSwgMTA2OTg0LCAxMDY5ODksIDEwNjk5NCwgMTA2OTk4LCAxMDcwMDQsIDEwNzAwOSwgMTA3MDE1LCAxMDcwMjAsIAotICAgIDEwNzAyNiwgMTA3MDMyLCAxMDcwMzksIDEwNzA0NSwgMTA3MDUyLCAxMDcwNTcsIDEwNzA2NCwgMTA3MDcwLCAxMDcwNzUsIAotICAgIDEwNzA4MiwgMTA3MDg4LCAxMDcwOTMsIDEwNzA5OCwgMTA3MTAzLCAxMDcxMDgsIDEwNzExMywgMTA3MTE4LCAxMDcxMjIsIAotICAgIDEwNzEyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTMxLCAxMDcxMzYsIDEwNzE0MCwgMTA3MTQ0LCAxMDcxNDgsIAotICAgIDEwNzE1MiwgMTA3MTU2LCAxMDcxNjAsIDEwNzE2NSwgMTA3MTY5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDg4NDIsIDEwODg0NSwgMTA4ODQ5LCAxMDg4NTIsIAorICAgIDEwODg1NiwgMTA4ODU5LCAxMDg4NjMsIDEwODg2NywgMTA4ODcyLCAxMDg4NzYsIDEwODg4MSwgMTA4ODg0LCAxMDg4ODgsIAorICAgIDEwODg5MSwgMTA4ODk1LCAxMDg4OTgsIDEwODkwMiwgMTA4OTA2LCAxMDg5MTAsIDEwODkxNCwgMTA4OTE4LCAxMDg5MjIsIAorICAgIDEwODkyNiwgMTA4OTMwLCAxMDg5MzQsIDEwODkzOCwgMTA4OTQyLCAxMDg5NDYsIDEwODk1MCwgMTA4OTU0LCAxMDg5NTgsIAorICAgIDEwODk2MiwgMTA4OTY2LCAxMDg5NzAsIDEwODk3MywgMTA4OTc2LCAxMDg5ODAsIDEwODk4NCwgMTA4OTg4LCAxMDg5OTEsIAorICAgIDEwODk5NCwgMTA4OTk4LCAxMDkwMDEsIDEwOTAwNSwgMTA5MDA5LCAxMDkwMTMsIDEwOTAxNywgMTA5MDIwLCAxMDkwMjUsIAorICAgIDEwOTAyOSwgMTA5MDM0LCAxMDkwMzgsIDEwOTA0MywgMTA5MDQ4LCAwLCAwLCAxMDkwNTQsIDEwOTA1OCwgMTA5MDYzLCAKKyAgICAxMDkwNjcsIDEwOTA3MiwgMTA5MDc2LCAxMDkwODAsIDEwOTA4NCwgMTA5MDg4LCAxMDkwOTIsIDEwOTA5NiwgMTA5MDk5LCAKKyAgICAxMDkxMDMsIDEwOTEwOCwgMTA5MTEyLCAxMDkxMTcsIDEwOTEyMiwgMTA5MTI3LCAxMDkxMzQsIDEwOTE0NiwgMTA5MTU4LCAKKyAgICAxMDkxNzAsIDEwOTE4MywgMTA5MTk3LCAxMDkyMDQsIDEwOTIxNCwgMTA5MjIyLCAxMDkyMzEsIDEwOTI0MCwgMTA5MjQ5LCAKKyAgICAxMDkyNTksIDEwOTI3MCwgMTA5MjgyLCAxMDkyODksIDEwOTI5NiwgMTA5MzA0LCAxMDkzMDksIDEwOTMxNSwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA3MTc0LCAxMDcxNzcsIDEwNzE4MSwgMTA3MTg0LCAxMDcxODgsIAotICAgIDEwNzE5MSwgMTA3MTk1LCAxMDcxOTksIDEwNzIwNCwgMTA3MjA4LCAxMDcyMTMsIDEwNzIxNiwgMTA3MjIwLCAxMDcyMjMsIAotICAgIDEwNzIyNywgMTA3MjMwLCAxMDcyMzQsIDEwNzIzOCwgMTA3MjQyLCAxMDcyNDYsIDEwNzI1MCwgMTA3MjU0LCAxMDcyNTgsIAotICAgIDEwNzI2MiwgMTA3MjY2LCAxMDcyNzAsIDEwNzI3NCwgMTA3Mjc4LCAxMDcyODIsIDEwNzI4NiwgMTA3MjkwLCAxMDcyOTQsIAotICAgIDEwNzI5OCwgMTA3MzAyLCAxMDczMDYsIDEwNzMwOSwgMTA3MzEzLCAxMDczMTcsIDEwNzMyMSwgMTA3MzI0LCAxMDczMjcsIAotICAgIDEwNzMzMSwgMTA3MzM1LCAxMDczMzksIDEwNzM0MywgMTA3MzQ3LCAxMDczNTEsIDEwNzM1NCwgMTA3MzU5LCAxMDczNjMsIAotICAgIDEwNzM2OCwgMTA3MzcyLCAxMDczNzcsIDEwNzM4MiwgMCwgMCwgMTA3Mzg4LCAxMDczOTIsIDEwNzM5NywgMTA3NDAxLCAKLSAgICAxMDc0MDYsIDEwNzQxMCwgMTA3NDE0LCAxMDc0MTgsIDEwNzQyMiwgMTA3NDI2LCAxMDc0MzAsIDEwNzQzMywgMTA3NDM3LCAKLSAgICAxMDc0NDIsIDEwNzQ0NiwgMTA3NDUxLCAxMDc0NTYsIDEwNzQ2MSwgMTA3NDY4LCAxMDc0ODAsIDEwNzQ5MiwgMTA3NTA0LCAKLSAgICAxMDc1MTcsIDEwNzUzMSwgMTA3NTM4LCAxMDc1NDgsIDEwNzU1NiwgMTA3NTY1LCAxMDc1NzQsIDEwNzU4MywgMTA3NTkzLCAKLSAgICAxMDc2MDQsIDEwNzYxNiwgMTA3NjIzLCAxMDc2MzAsIDEwNzYzOCwgMTA3NjQzLCAxMDc2NDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTMyMiwgMTA5MzI2LCAxMDkzMzEsIDEwOTMzNSwgMTA5MzQwLCAxMDkzNDQsIAorICAgIDEwOTM0OSwgMTA5MzU0LCAxMDkzNjAsIDEwOTM2NSwgMTA5MzcxLCAxMDkzNzUsIDEwOTM4MCwgMTA5Mzg0LCAxMDkzODksIAorICAgIDEwOTM5MywgMTA5Mzk4LCAxMDk0MDMsIDEwOTQwOCwgMTA5NDEzLCAxMDk0MTgsIDEwOTQyMywgMTA5NDI4LCAxMDk0MzMsIAorICAgIDEwOTQzOCwgMTA5NDQzLCAxMDk0NDgsIDEwOTQ1MywgMTA5NDU4LCAxMDk0NjMsIDEwOTQ2OCwgMTA5NDczLCAxMDk0NzgsIAorICAgIDEwOTQ4MywgMTA5NDg3LCAxMDk0OTEsIDEwOTQ5NiwgMTA5NTAxLCAxMDk1MDYsIDEwOTUxMCwgMTA5NTE0LCAxMDk1MTksIAorICAgIDEwOTUyMywgMTA5NTI4LCAxMDk1MzMsIDEwOTUzOCwgMTA5NTQzLCAxMDk1NDcsIDEwOTU1MiwgMTA5NTU4LCAxMDk1NjMsIAorICAgIDEwOTU2OSwgMTA5NTc0LCAxMDk1ODAsIDEwOTU4NiwgMTA5NTkzLCAxMDk1OTksIDEwOTYwNiwgMTA5NjExLCAxMDk2MTcsIAorICAgIDEwOTYyMiwgMTA5NjI4LCAxMDk2MzMsIDEwOTYzOCwgMTA5NjQzLCAxMDk2NDgsIDEwOTY1MiwgMTA5NjU3LCAxMDk2NjIsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwOTY2NywgMTA5NjcyLCAxMDk2NzYsIDEwOTY4MCwgMTA5Njg0LCAKKyAgICAxMDk2ODgsIDEwOTY5MiwgMTA5Njk2LCAxMDk3MDEsIDEwOTcwNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTA5NzEwLCAxMDk3MTYsIAorICAgIDEwOTcyMSwgMTA5NzI4LCAxMDk3MzYsIDEwOTc0MywgMTA5NzUxLCAxMDk3NjAsIDEwOTc2NSwgMTA5Nzc0LCAxMDk3NzksIAorICAgIDEwOTc4NywgMTA5Nzk2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDk4MDcsIDEwOTgxMSwgMTA5ODE2LCAxMDk4MjAsIDEwOTgyNSwgMTA5ODI5LCAxMDk4MzQsIDEwOTgzOCwgMTA5ODQzLCAKKyAgICAxMDk4NDcsIDEwOTg1MiwgMTA5ODU2LCAxMDk4NjEsIDEwOTg2NiwgMTA5ODcxLCAxMDk4NzYsIDEwOTg4MSwgMTA5ODg2LCAKKyAgICAxMDk4OTEsIDEwOTg5NiwgMTA5OTAxLCAxMDk5MDYsIDEwOTkxMSwgMTA5OTE2LCAxMDk5MjEsIDEwOTkyNiwgMTA5OTMxLCAKKyAgICAxMDk5MzYsIDEwOTk0MSwgMTA5OTQ2LCAxMDk5NTAsIDEwOTk1NCwgMTA5OTU5LCAxMDk5NjQsIDEwOTk2OSwgMTA5OTczLCAKKyAgICAxMDk5NzcsIDEwOTk4MiwgMTA5OTg2LCAxMDk5OTEsIDEwOTk5NiwgMTEwMDAxLCAxMTAwMDUsIDExMDAxMCwgMTEwMDE1LCAKKyAgICAxMTAwMjAsIDExMDAyNiwgMTEwMDMxLCAxMTAwMzcsIDExMDA0MiwgMTEwMDQ4LCAxMTAwNTMsIDExMDA1OSwgMTEwMDY0LCAKKyAgICAxMTAwNzAsIDExMDA3NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTEwMDgwLCAxMTAwODUsIDExMDA4OSwgMTEwMDkzLCAKKyAgICAxMTAwOTcsIDExMDEwMSwgMTEwMTA1LCAxMTAxMDksIDExMDExNCwgMTEwMTE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAxMDc2NTYsIDEwNzY2MCwgMTA3NjY1LCAxMDc2NjksIDEwNzY3NCwgMTA3Njc4LCAxMDc2ODMsIAotICAgIDEwNzY4OCwgMTA3Njk0LCAxMDc2OTksIDEwNzcwNSwgMTA3NzA5LCAxMDc3MTQsIDEwNzcxOCwgMTA3NzIzLCAxMDc3MjcsIAotICAgIDEwNzczMiwgMTA3NzM3LCAxMDc3NDIsIDEwNzc0NywgMTA3NzUyLCAxMDc3NTcsIDEwNzc2MiwgMTA3NzY3LCAxMDc3NzIsIAotICAgIDEwNzc3NywgMTA3NzgyLCAxMDc3ODcsIDEwNzc5MiwgMTA3Nzk3LCAxMDc4MDIsIDEwNzgwNywgMTA3ODEyLCAxMDc4MTcsIAotICAgIDEwNzgyMiwgMTA3ODI2LCAxMDc4MzEsIDEwNzgzNiwgMTA3ODQxLCAxMDc4NDUsIDEwNzg0OSwgMTA3ODU0LCAxMDc4NTksIAotICAgIDEwNzg2NCwgMTA3ODY5LCAxMDc4NzQsIDEwNzg3OSwgMTA3ODgzLCAxMDc4ODgsIDEwNzg5NCwgMTA3ODk5LCAxMDc5MDUsIAotICAgIDEwNzkxMCwgMTA3OTE2LCAxMDc5MjIsIDEwNzkyOSwgMTA3OTM1LCAxMDc5NDIsIDEwNzk0NywgMTA3OTUzLCAxMDc5NTgsIAotICAgIDEwNzk2NCwgMTA3OTY5LCAxMDc5NzQsIDEwNzk3OSwgMTA3OTg0LCAxMDc5ODgsIDEwNzk5MywgMTA3OTk4LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgwMDMsIDEwODAwOCwgMTA4MDEyLCAxMDgwMTYsIDEwODAyMCwgMTA4MDI0LCAKLSAgICAxMDgwMjgsIDEwODAzMiwgMTA4MDM3LCAxMDgwNDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExMDEyMywgCisgICAgMTEwMTI3LCAxMTAxMzIsIDExMDEzNywgMTEwMTQxLCAxMTAxNDYsIDExMDE1MywgMTEwMTU3LCAxMTAxNjIsIDExMDE2NywgCisgICAgMTEwMTcxLCAxMTAxNzYsIDExMDE4MSwgMTEwMTg2LCAxMTAxOTEsIDExMDE5NSwgMTEwMjAwLCAxMTAyMDUsIDExMDIwOSwgCisgICAgMTEwMjEzLCAxMTAyMTgsIDExMDIyMywgMTEwMjI4LCAxMTAyMzUsIDExMDI0MCwgMTEwMjQ1LCAwLCAwLCAwLCAxMTAyNTAsIAorICAgIDExMDI1NiwgMTEwMjYzLCAxMTAyNzIsIDExMDI3NywgMTEwMjgzLCAxMTAyODgsIDExMDI5NCwgMTEwMjk5LCAxMTAzMDUsIAorICAgIDExMDMxMCwgMTEwMzE2LCAxMTAzMjEsIDExMDMyNywgMTEwMzMzLCAwLCAwLCAwLCAwLCAxMTAzMzgsIDExMDM0MywgCisgICAgMTEwMzQ3LCAxMTAzNTEsIDExMDM1NSwgMTEwMzU5LCAxMTAzNjMsIDExMDM2NywgMTEwMzcyLCAxMTAzNzYsIDExMDM4MSwgCisgICAgMTEwMzg2LCAxMTAzOTEsIDExMDM5NywgMTEwNDAyLCAxMTA0MDcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDEwODA0NiwgMTA4MDUwLCAxMDgwNTUsIDEwODA1OSwgMTA4MDY0LCAxMDgwNjgsIDEwODA3MywgMTA4MDc3LCAxMDgwODIsIAotICAgIDEwODA4NiwgMTA4MDkxLCAxMDgwOTUsIDEwODEwMCwgMTA4MTA1LCAxMDgxMTAsIDEwODExNSwgMTA4MTIwLCAxMDgxMjUsIAotICAgIDEwODEzMCwgMTA4MTM1LCAxMDgxNDAsIDEwODE0NSwgMTA4MTUwLCAxMDgxNTUsIDEwODE2MCwgMTA4MTY1LCAxMDgxNzAsIAotICAgIDEwODE3NSwgMTA4MTgwLCAxMDgxODUsIDEwODE5MCwgMTA4MTk0LCAxMDgxOTksIDEwODIwNCwgMTA4MjA5LCAxMDgyMTMsIAotICAgIDEwODIxNywgMTA4MjIyLCAxMDgyMjcsIDEwODIzMiwgMTA4MjM3LCAxMDgyNDIsIDEwODI0NiwgMTA4MjUxLCAxMDgyNTYsIAotICAgIDEwODI2MSwgMTA4MjY3LCAxMDgyNzIsIDEwODI3OCwgMTA4MjgzLCAxMDgyODksIDEwODI5NCwgMTA4MzAwLCAxMDgzMDUsIAotICAgIDEwODMxMSwgMTA4MzE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDgzMjEsIDEwODMyNiwgMTA4MzMwLCAxMDgzMzQsIAotICAgIDEwODMzOCwgMTA4MzQyLCAxMDgzNDYsIDEwODM1MCwgMTA4MzU1LCAxMDgzNTksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEwODM2NCwgCi0gICAgMTA4MzY4LCAxMDgzNzMsIDEwODM3OCwgMTA4MzgzLCAxMDgzODgsIDEwODM5NSwgMTA4Mzk5LCAxMDg0MDQsIDEwODQwOSwgCi0gICAgMTA4NDEzLCAxMDg0MTgsIDEwODQyMywgMTA4NDI4LCAxMDg0MzMsIDEwODQzOCwgMTA4NDQzLCAxMDg0NDgsIDEwODQ1MiwgCi0gICAgMTA4NDU2LCAxMDg0NjEsIDEwODQ2NiwgMTA4NDcxLCAxMDg0NzgsIDEwODQ4MywgMTA4NDg4LCAwLCAwLCAwLCAxMDg0OTMsIAotICAgIDEwODUwMCwgMTA4NTA3LCAxMDg1MTYsIDEwODUyMSwgMTA4NTI3LCAxMDg1MzIsIDEwODUzOCwgMTA4NTQzLCAxMDg1NDksIAotICAgIDEwODU1NCwgMTA4NTYwLCAxMDg1NjUsIDEwODU3MSwgMTA4NTc3LCAwLCAwLCAwLCAwLCAxMDg1ODIsIDEwODU4NywgCi0gICAgMTA4NTkxLCAxMDg1OTUsIDEwODU5OSwgMTA4NjAzLCAxMDg2MDcsIDEwODYxMSwgMTA4NjE2LCAxMDg2MjAsIDEwODYyNSwgCi0gICAgMTA4NjMwLCAxMDg2MzUsIDEwODY0MSwgMTA4NjQ2LCAxMDg2NTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTg5MjQsMTc1ICsyMDA1OSwxOTUgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAxMTA0MTIsIDExMDQyMCwgMTEwNDI3LCAxMTA0MzUsIDExMDQ0MywgMTEwNDUwLCAxMTA0NTgsIAorICAgIDExMDQ2NiwgMTEwNDc0LCAxMTA0ODEsIDExMDQ4OCwgMTEwNDk2LCAxMTA1MDQsIDExMDUxMiwgMTEwNTIwLCAxMTA1MjgsIAorICAgIDExMDUzNiwgMTEwNTQ0LCAxMTA1NTIsIDExMDU2MCwgMTEwNTY4LCAxMTA1NzYsIDExMDU4NCwgMTEwNTkyLCAxMTA2MDAsIAorICAgIDExMDYwOCwgMTEwNjE2LCAxMTA2MjQsIDExMDYzMiwgMTEwNjQwLCAxMTA2NDgsIDExMDY1NiwgMTEwNjY0LCAxMTA2NzIsIAorICAgIDExMDY3OSwgMTEwNjg3LCAxMTA2OTUsIDExMDcwMiwgMTEwNzEwLCAxMTA3MTgsIDExMDcyNiwgMTEwNzMzLCAxMTA3NDAsIAorICAgIDExMDc0OCwgMTEwNzU2LCAxMTA3NjQsIDExMDc3MiwgMTEwNzgwLCAxMTA3ODgsIDExMDc5NiwgMTEwODA0LCAxMTA4MTIsIAorICAgIDExMDgyMCwgMTEwODI4LCAxMTA4MzYsIDExMDg0NCwgMTEwODUyLCAxMTA4NjAsIDExMDg2OCwgMTEwODc2LCAxMTA4ODQsIAorICAgIDExMDg5MiwgMTEwOTAwLCAxMTA5MDgsIDExMDkxNiwgMTEwOTIzLCAxMTA5MjksIDExMDkzNSwgMTEwOTQxLCAxMTA5NDcsIAorICAgIDExMDk1MywgMTEwOTU5LCAxMTA5NjYsIDExMDk3MiwgMTEwOTc5LCAxMTA5ODYsIDExMDk5MywgMTExMDAwLCAxMTEwMDcsIAorICAgIDExMTAxNCwgMTExMDIxLCAxMTEwMjgsIDExMTAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExMDQyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAxMDg2NTYsIDEwODY2NCwgMTA4NjcxLCAxMDg2NzksIDEwODY4NywgMTA4Njk0LCAxMDg3MDIsIAotICAgIDEwODcxMCwgMTA4NzE4LCAxMDg3MjUsIDEwODczMiwgMTA4NzQwLCAxMDg3NDgsIDEwODc1NiwgMTA4NzY0LCAxMDg3NzIsIAotICAgIDEwODc4MCwgMTA4Nzg4LCAxMDg3OTYsIDEwODgwNCwgMTA4ODEyLCAxMDg4MjAsIDEwODgyOCwgMTA4ODM2LCAxMDg4NDQsIAotICAgIDEwODg1MiwgMTA4ODYwLCAxMDg4NjgsIDEwODg3NiwgMTA4ODg0LCAxMDg4OTIsIDEwODkwMCwgMTA4OTA4LCAxMDg5MTYsIAotICAgIDEwODkyMywgMTA4OTMxLCAxMDg5MzksIDEwODk0NiwgMTA4OTU0LCAxMDg5NjIsIDEwODk3MCwgMTA4OTc3LCAxMDg5ODQsIAotICAgIDEwODk5MiwgMTA5MDAwLCAxMDkwMDgsIDEwOTAxNiwgMTA5MDI0LCAxMDkwMzIsIDEwOTA0MCwgMTA5MDQ4LCAxMDkwNTYsIAotICAgIDEwOTA2NCwgMTA5MDcyLCAxMDkwODAsIDEwOTA4OCwgMTA5MDk2LCAxMDkxMDQsIDEwOTExMiwgMTA5MTIwLCAxMDkxMjgsIAotICAgIDEwOTEzNiwgMTA5MTQ0LCAxMDkxNTIsIDEwOTE2MCwgMTA5MTY3LCAxMDkxNzMsIDEwOTE3OSwgMTA5MTg1LCAxMDkxOTEsIAotICAgIDEwOTE5NywgMTA5MjAzLCAxMDkyMTAsIDEwOTIxNiwgMTA5MjIzLCAxMDkyMzAsIDEwOTIzNywgMTA5MjQ0LCAxMDkyNTEsIAotICAgIDEwOTI1OCwgMTA5MjY1LCAxMDkyNzIsIDEwOTI3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTA5Mjg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMTEwNDgsIDExMTA1NiwgMTExMDY0LCAxMTEwNzIsIDExMTA4MCwgMTExMDg5LCAxMTEwOTgsIDExMTEwNywgCisgICAgMTExMTE2LCAxMTExMjQsIDExMTEzMywgMTExMTQyLCAxMTExNTEsIDExMTE2MCwgMTExMTY5LCAxMTExNzgsIDExMTE4NywgCisgICAgMTExMTk1LCAxMTEyMDQsIDExMTIxMywgMTExMjIyLCAxMTEyMzEsIDExMTIzOSwgMTExMjQ3LCAxMTEyNTUsIDExMTI2MywgCisgICAgMTExMjcxLCAxMTEyODAsIDExMTI4OSwgMTExMjk5LCAxMTEzMDksIDExMTMxOSwgMTExMzI5LCAxMTEzMzksIDExMTM0OCwgCisgICAgMTExMzU4LCAxMTEzNjgsIDExMTM3OCwgMTExMzg5LCAxMTEzOTksIDExMTQxMSwgMTExNDIzLCAxMTE0MzQsIDExMTQ0OCwgCisgICAgMTExNDU5LCAxMTE0NjksIDExMTQ4MSwgMTExNDkyLCAxMTE1MDIsIDExMTUxNCwgMTExNTI2LCAxMTE1MzcsIDExMTU0OCwgCisgICAgMTExNTU4LCAxMTE1NjgsIDExMTU4MCwgMTExNTkxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMTE2MDMsIDExMTYwNiwgCisgICAgMTExNjEwLCAxMTE2MTMsIDExMTYxNywgMTExNjIwLCAxMTE2MjQsIDExMTYyOCwgMTExNjMzLCAwLCAxMTE2MzcsIAorICAgIDExMTY0MCwgMTExNjQ0LCAxMTE2NDcsIDExMTY1MSwgMTExNjU0LCAxMTE2NTgsIDExMTY2MiwgMTExNjY2LCAxMTE2NzAsIAorICAgIDExMTY3NCwgMTExNjc4LCAxMTE2ODIsIDExMTY4NiwgMTExNjkwLCAxMTE2OTQsIDExMTY5OCwgMTExNzAyLCAxMTE3MDYsIAorICAgIDExMTcxMCwgMTExNzE0LCAxMTE3MTgsIDExMTcyMiwgMTExNzI2LCAxMTE3MjksIDExMTczMiwgMTExNzM2LCAxMTE3NDAsIAorICAgIDExMTc0NCwgMTExNzQ3LCAxMTE3NTAsIDExMTc1NCwgMTExNzU3LCAxMTE3NjEsIDExMTc2NSwgMTExNzY5LCAxMTE3NzMsIAorICAgIDExMTc3NiwgMTExNzgxLCAxMTE3ODUsIDExMTc5MCwgMTExNzk0LCAxMTE3OTksIDExMTgwNCwgMTExODEwLCAwLCAKKyAgICAxMTE4MTUsIDExMTgxOSwgMTExODI0LCAxMTE4MjgsIDExMTgzMywgMTExODM3LCAxMTE4NDEsIDExMTg0NSwgMTExODQ5LCAKKyAgICAxMTE4NTMsIDExMTg1NiwgMTExODYwLCAxMTE4NjUsIDExMTg3MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTExODc1LCAxMTE4NzksIDExMTg4MiwgMTExODg1LCAxMTE4ODgsIDExMTg5MSwgMTExODk0LCAxMTE4OTcsIDExMTkwMSwgCisgICAgMTExOTA0LCAxMTE5MDgsIDExMTkxMSwgMTExOTE0LCAxMTE5MTcsIDExMTkyMCwgMTExOTIzLCAxMTE5MjYsIDExMTkzMCwgCisgICAgMTExOTMzLCAxMTE5MzcsIDExMTk0MSwgMTExOTQ1LCAxMTE5NDksIDExMTk1MywgMTExOTU3LCAxMTE5NjEsIDExMTk2NSwgCisgICAgMTExOTY5LCAxMTE5NzMsIDAsIDAsIDAsIDExMTk3OSwgMTExOTg0LCAxMTE5ODksIDExMTk5MywgMTExOTk4LCAxMTIwMDMsIAorICAgIDExMjAwOCwgMTEyMDEzLCAxMTIwMTgsIDExMjAyMywgMTEyMDI4LCAxMTIwMzMsIDExMjAzOCwgMTEyMDQzLCAxMTIwNDcsIAorICAgIDExMjA1MSwgMTEyMDU2LCAxMTIwNjEsIDExMjA2NSwgMTEyMDcwLCAxMTIwNzUsIDExMjA4MCwgMTEyMDg1LCAxMTIwOTAsIAorICAgIDExMjA5NSwgMTEyMTAwLCAxMTIxMDQsIDExMjEwOSwgMTEyMTEzLCAxMTIxMTgsIDExMjEyMywgMTEyMTI3LCAwLCAwLCAKKyAgICAxMTIxMzEsIDExMjEzNywgMTEyMTQ0LCAxMTIxNTEsIDExMjE1OCwgMTEyMTY1LCAxMTIxNzIsIDExMjE3OSwgMTEyMTg2LCAKKyAgICAxMTIxOTMsIDExMjIwMCwgMTEyMjA3LCAxMTIyMTMsIDExMjIxOSwgMTEyMjI2LCAxMTIyMzMsIDExMjIzOSwgMTEyMjQ2LCAKKyAgICAxMTIyNTMsIDExMjI2MCwgMTEyMjY3LCAxMTIyNzQsIDAsIDExMjI4MSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMCwgCisgICAgMTEyMzA3LCAxMTIzMTQsIDExMjMyMCwgMTEyMzI2LCAxMTIzMzIsIDExMjMzNywgMTEyMzQyLCAxMTIzNDcsIDExMjM1MiwgCisgICAgMTEyMzU3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxMDkyOTIsIDEwOTMwMCwgMTA5MzA4LCAxMDkzMTcsIDEwOTMyNSwgMTA5MzM0LCAxMDkzNDMsIDEwOTM1MiwgCi0gICAgMTA5MzYxLCAxMDkzNjksIDEwOTM3OCwgMTA5Mzg3LCAxMDkzOTYsIDEwOTQwNSwgMTA5NDE0LCAxMDk0MjMsIDEwOTQzMiwgCi0gICAgMTA5NDQxLCAxMDk0NTAsIDEwOTQ1OSwgMTA5NDY4LCAxMDk0NzcsIDEwOTQ4NSwgMTA5NDkzLCAxMDk1MDEsIDEwOTUwOSwgCi0gICAgMTA5NTE3LCAxMDk1MjYsIDEwOTUzNSwgMTA5NTQ1LCAxMDk1NTUsIDEwOTU2NSwgMTA5NTc1LCAxMDk1ODUsIDEwOTU5NCwgCi0gICAgMTA5NjA0LCAxMDk2MTQsIDEwOTYyNCwgMTA5NjM1LCAxMDk2NDUsIDEwOTY1NywgMTA5NjY5LCAxMDk2ODAsIDEwOTY5NCwgCi0gICAgMTA5NzA1LCAxMDk3MTUsIDEwOTcyNywgMTA5NzM4LCAxMDk3NDgsIDEwOTc2MCwgMTA5NzcyLCAxMDk3ODMsIDEwOTc5NCwgCi0gICAgMTA5ODA0LCAxMDk4MTQsIDEwOTgyNiwgMTA5ODM3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMDk4NDksIDEwOTg1MiwgCi0gICAgMTA5ODU3LCAxMDk4NjMsIDEwOTg3MSwgMTA5ODc2LCAxMDk4ODIsIDEwOTg5MCwgMTA5ODk2LCAxMDk5MDIsIDEwOTkwNiwgCi0gICAgMTA5OTEwLCAxMDk5MTcsIDEwOTkyNiwgMTA5OTMzLCAxMDk5NDIsIDEwOTk0OCwgMTA5OTU3LCAxMDk5NjQsIDEwOTk3MSwgCi0gICAgMTA5OTc4LCAxMDk5ODgsIDEwOTk5NCwgMTA5OTk4LCAxMTAwMDUsIDExMDAxNCwgMTEwMDI0LCAxMTAwMzEsIDExMDAzOCwgCi0gICAgMTEwMDQyLCAxMTAwNDYsIDExMDA1MywgMTEwMDYzLCAxMTAwNjcsIDExMDA3NCwgMTEwMDgxLCAxMTAwODgsIDExMDA5NCwgCi0gICAgMTEwMTAxLCAxMTAxMDgsIDExMDExNSwgMTEwMTIyLCAxMTAxMjYsIDExMDEzMCwgMTEwMTM0LCAxMTAxNDEsIDExMDE0NSwgCi0gICAgMTEwMTUyLCAxMTAxNTksIDExMDE3MywgMTEwMTgyLCAxMTAxODYsIDExMDE5MCwgMTEwMTk0LCAxMTAyMDEsIDExMDIwNSwgCi0gICAgMTEwMjA5LCAxMTAyMTMsIDExMDIyMSwgMTEwMjI5LCAxMTAyNDgsIDExMDI1OCwgMTEwMjc4LCAxMTAyODIsIDExMDI4NiwgCi0gICAgMTEwMjkwLCAxMTAyOTQsIDExMDI5OCwgMTEwMzAyLCAxMTAzMDYsIDExMDMxMywgMTEwMzE3LCAxMTAzMjAsIDExMDMyNCwgCi0gICAgMTEwMzI4LCAxMTAzMzQsIDExMDM0MSwgMTEwMzUwLCAxMTAzNTQsIDExMDM2MywgMTEwMzcyLCAxMTAzODAsIDExMDM4NCwgCi0gICAgMTEwMzkxLCAxMTAzOTUsIDExMDM5OSwgMTEwNDAzLCAxMTA0MDcsIDExMDQxOCwgMTEwNDI3LCAxMTA0MzYsIDExMDQ0NSwgCi0gICAgMTEwNDU0LCAxMTA0NjYsIDExMDQ3NSwgMTEwNDg0LCAxMTA0OTMsIDExMDUwMSwgMTEwNTEwLCAxMTA1MjIsIDExMDUzMSwgCi0gICAgMTEwNTQwLCAxMTA1NDksIDExMDU2MSwgMTEwNTcwLCAxMTA1NzksIDExMDU5MSwgMTEwNjAwLCAxMTA2MDksIDExMDYyMSwgCi0gICAgMTEwNjMwLCAxMTA2MzQsIDExMDYzOCwgMTEwNjQyLCAxMTA2NDYsIDExMDY1MCwgMTEwNjU0LCAxMTA2NTgsIDExMDY2NSwgCi0gICAgMTEwNjY5LCAxMTA2NzMsIDExMDY4NCwgMTEwNjg4LCAxMTA2OTIsIDExMDY5OSwgMTEwNzA1LCAxMTA3MTEsIDExMDcxNSwgCi0gICAgMTEwNzIyLCAxMTA3MjYsIDExMDczMCwgMTEwNzM0LCAxMTA3MzgsIDExMDc0MiwgMTEwNzQ2LCAxMTA3NTIsIDExMDc2MCwgCi0gICAgMTEwNzY0LCAxMTA3NjgsIDExMDc3MSwgMTEwNzc3LCAxMTA3ODcsIDExMDc5MSwgMTEwODAzLCAxMTA4MTAsIDExMDgxNywgCi0gICAgMTEwODI0LCAxMTA4MzEsIDExMDgzNywgMTEwODQxLCAxMTA4NDUsIDExMDg0OSwgMTEwODUzLCAxMTA4NjAsIDExMDg2OSwgCi0gICAgMTEwODc2LCAxMTA4ODQsIDExMDg5MiwgMTEwODk4LCAxMTA5MDIsIDExMDkwNiwgMTEwOTEwLCAxMTA5MTQsIDExMDkyMCwgCi0gICAgMTEwOTI5LCAxMTA5NDEsIDExMDk0OCwgMTEwOTU1LCAxMTA5NjQsIDExMDk3NSwgMTEwOTgxLCAxMTA5OTAsIDExMDk5OSwgCi0gICAgMTExMDA2LCAxMTEwMTUsIDExMTAyMiwgMTExMDI5LCAxMTEwMzksIDExMTA0NiwgMTExMDUzLCAxMTEwNjAsIDExMTA2NywgCi0gICAgMTExMDcxLCAxMTEwNzcsIDExMTA4MSwgMTExMDkyLCAxMTExMDAsIDExMTEwOSwgMTExMTIxLCAxMTExMjgsIDExMTEzNSwgCi0gICAgMTExMTQ1LCAxMTExNTIsIDExMTE2MiwgMTExMTY5LCAxMTExNzksIDExMTE4NiwgMTExMTkzLCAxMTEyMDMsIDExMTIxMCwgCi0gICAgMTExMjE3LCAxMTEyMjcsIDExMTIzNCwgMTExMjQ2LCAxMTEyNTUsIDExMTI2MiwgMTExMjY5LCAxMTEyNzYsIDExMTI4NSwgCi0gICAgMTExMjk1LCAxMTEzMDgsIDExMTMxNSwgMTExMzI1LCAxMTEzMzUsIDExMTM0MiwgMTExMzUxLCAxMTEzNjQsIDExMTM3MSwgCi0gICAgMTExMzc4LCAxMTEzODUsIDExMTM5NSwgMTExNDA1LCAxMTE0MTIsIDExMTQyMiwgMTExNDI5LCAxMTE0MzYsIDExMTQ0NiwgCi0gICAgMTExNDUyLCAxMTE0NTksIDExMTQ2NiwgMTExNDczLCAxMTE0ODMsIDExMTQ5MCwgMTExNDk3LCAxMTE1MDQsIDExMTUxMCwgCi0gICAgMTExNTE3LCAxMTE1MjcsIDExMTUzNCwgMTExNTM4LCAxMTE1NDYsIDExMTU1MCwgMTExNTYyLCAxMTE1NjYsIDExMTU4MCwgCi0gICAgMTExNTg0LCAxMTE1ODgsIDExMTU5MiwgMTExNTk2LCAxMTE2MDIsIDExMTYwOSwgMTExNjE3LCAxMTE2MjEsIDExMTYyNSwgCi0gICAgMTExNjI5LCAxMTE2MzMsIDExMTY0MCwgMTExNjQ0LCAxMTE2NTAsIDExMTY1NiwgMTExNjY0LCAxMTE2NjgsIDExMTY3NSwgCi0gICAgMTExNjgzLCAxMTE2ODcsIDExMTY5MSwgMTExNjk3LCAxMTE3MDEsIDExMTcxMCwgMTExNzE5LCAxMTE3MjYsIDExMTczNiwgCi0gICAgMTExNzQyLCAxMTE3NDYsIDExMTc1MCwgMTExNzU4LCAxMTE3NjUsIDExMTc3MiwgMTExNzc4LCAxMTE3ODIsIDExMTc5MCwgCi0gICAgMTExNzk0LCAxMTE4MDEsIDExMTgxMywgMTExODIwLCAxMTE4MzAsIDExMTgzNiwgMTExODQwLCAxMTE4NDksIDExMTg1NiwgCi0gICAgMTExODY1LCAxMTE4NjksIDExMTg3MywgMTExODgwLCAxMTE4ODQsIDExMTg4OCwgMTExODkyLCAxMTE4OTYsIDExMTg5OSwgCi0gICAgMTExOTA1LCAxMTE5MTEsIDExMTkxNSwgMTExOTE5LCAxMTE5MjYsIDExMTkzMywgMTExOTQwLCAxMTE5NDcsIDExMTk1NCwgCi0gICAgMTExOTYxLCAxMTE5NjgsIDExMTk3NSwgMTExOTgxLCAxMTE5ODUsIDExMTk4OSwgMTExOTk2LCAxMTIwMDMsIDExMjAxMCwgCi0gICAgMTEyMDE3LCAxMTIwMjQsIDExMjAyOCwgMTEyMDMxLCAxMTIwMzYsIDExMjA0MCwgMTEyMDQ0LCAxMTIwNTMsIDExMjA2MiwgCi0gICAgMTEyMDY2LCAxMTIwNzAsIDExMjA3NiwgMTEyMDgyLCAxMTIwOTksIDExMjEwNSwgMTEyMTA5LCAxMTIxMTgsIDExMjEyMiwgCi0gICAgMTEyMTI2LCAxMTIxMzMsIDExMjE0MSwgMTEyMTQ5LCAxMTIxNTUsIDExMjE1OSwgMTEyMTYzLCAxMTIxNjcsIDExMjE3MSwgCi0gICAgMTEyMTc0LCAxMTIxODAsIDExMjE4NywgMTEyMTk3LCAxMTIyMDQsIDExMjIxMSwgMTEyMjE4LCAxMTIyMjQsIDExMjIzMSwgCi0gICAgMTEyMjM4LCAxMTIyNDUsIDExMjI1MiwgMTEyMjU5LCAxMTIyNjgsIDExMjI3NSwgMTEyMjg3LCAxMTIyOTQsIDExMjMwMSwgCi0gICAgMTEyMzExLCAxMTIzMjIsIDExMjMyOSwgMTEyMzM2LCAxMTIzNDMsIDExMjM1MCwgMTEyMzU3LCAxMTIzNjQsIDExMjM3MSwgCi0gICAgMTEyMzc4LCAxMTIzODUsIDExMjM5MiwgMTEyNDAyLCAxMTI0MTIsIDExMjQyMiwgMTEyNDI5LCAxMTI0MzksIDExMjQ0NiwgCi0gICAgMTEyNDUzLCAxMTI0NjAsIDExMjQ2NywgMTEyNDc0LCAxMTI0ODEsIDExMjQ4OCwgMTEyNDk1LCAxMTI1MDIsIDExMjUwOSwgCi0gICAgMTEyNTE2LCAxMTI1MjMsIDExMjUzMCwgMTEyNTM2LCAxMTI1NDMsIDExMjU1MCwgMTEyNTU5LCAxMTI1NjYsIDExMjU3MywgCi0gICAgMTEyNTc3LCAxMTI1ODUsIDExMjU4OSwgMTEyNTkzLCAxMTI1OTcsIDExMjYwMSwgMTEyNjA1LCAxMTI2MTIsIDExMjYxNiwgCi0gICAgMTEyNjI1LCAxMTI2MjksIDExMjYzNiwgMTEyNjQ0LCAxMTI2NDgsIDExMjY1MiwgMTEyNjU2LCAxMTI2NjksIDExMjY4NSwgCi0gICAgMTEyNjg5LCAxMTI2OTMsIDExMjcwMCwgMTEyNzA2LCAxMTI3MTMsIDExMjcxNywgMTEyNzIxLCAxMTI3MjUsIDExMjcyOSwgCi0gICAgMTEyNzMzLCAxMTI3NDAsIDExMjc0NCwgMTEyNzYyLCAxMTI3NjYsIDExMjc3MCwgMTEyNzc3LCAxMTI3ODEsIDExMjc4NSwgCi0gICAgMTEyNzkxLCAxMTI3OTUsIDExMjc5OSwgMTEyODA3LCAxMTI4MTEsIDExMjgxNSwgMTEyODE5LCAxMTI4MjMsIDExMjgyOSwgCi0gICAgMTEyODQwLCAxMTI4NDksIDExMjg1OCwgMTEyODY1LCAxMTI4NzIsIDExMjg4MywgMTEyODkwLCAxMTI4OTcsIDExMjkwNCwgCi0gICAgMTEyOTExLCAxMTI5MTgsIDExMjkyNSwgMTEyOTMyLCAxMTI5NDIsIDExMjk0OCwgMTEyOTU1LCAxMTI5NjUsIDExMjk3NCwgCi0gICAgMTEyOTgxLCAxMTI5OTAsIDExMzAwMCwgMTEzMDA3LCAxMTMwMTQsIDExMzAyMSwgMTEzMDI4LCAxMTMwNDAsIDExMzA0NywgCi0gICAgMTEzMDU0LCAxMTMwNjEsIDExMzA2OCwgMTEzMDc1LCAxMTMwODUsIDExMzA5MiwgMTEzMDk5LCAxMTMxMDksIDExMzEyMiwgCi0gICAgMTEzMTM0LCAxMTMxNDEsIDExMzE1MSwgMTEzMTU4LCAxMTMxNjUsIDExMzE3MiwgMTEzMTg3LCAxMTMxOTMsIDExMzIwMSwgCi0gICAgMTEzMjExLCAxMTMyMjEsIDExMzIyOCwgMTEzMjM1LCAxMTMyNDEsIDExMzI0NSwgMTEzMjUyLCAxMTMyNjIsIDExMzI2OCwgCi0gICAgMTEzMjgxLCAxMTMyODUsIDExMzI4OSwgMTEzMjk2LCAxMTMzMDAsIDExMzMwNywgMTEzMzE3LCAxMTMzMjEsIDExMzMyNSwgCi0gICAgMTEzMzI5LCAxMTMzMzMsIDExMzMzNywgMTEzMzQ0LCAxMTMzNDgsIDExMzM1NSwgMTEzMzYyLCAxMTMzNjksIDExMzM3OCwgCi0gICAgMTEzMzg3LCAxMTMzOTcsIDExMzQwNCwgMTEzNDExLCAxMTM0MTgsIDExMzQyOCwgMTEzNDM1LCAxMTM0NDUsIDExMzQ1MiwgCi0gICAgMTEzNDYyLCAxMTM0NjksIDExMzQ3NiwgMTEzNDg2LCAxMTM0OTYsIDExMzUwMywgMTEzNTA5LCAxMTM1MTcsIDExMzUyNSwgCi0gICAgMTEzNTMxLCAxMTM1MzcsIDExMzU0MSwgMTEzNTQ1LCAxMTM1NTIsIDExMzU2MCwgMTEzNTY2LCAxMTM1NzAsIDExMzU3NCwgCi0gICAgMTEzNTc4LCAxMTM1ODUsIDExMzU5NywgMTEzNjAwLCAxMTM2MDcsIDExMzYxMywgMTEzNjE3LCAxMTM2MjEsIDExMzYyNSwgCi0gICAgMTEzNjI5LCAxMTM2MzMsIDExMzYzNywgMTEzNjQxLCAxMTM2NDUsIDExMzY0OSwgMTEzNjUzLCAxMTM2NjAsIDExMzY2NCwgCi0gICAgMTEzNjcwLCAxMTM2NzQsIDExMzY3OCwgMTEzNjgyLCAxMTM2ODgsIDExMzY5NSwgMTEzNzAyLCAxMTM3MDksIDExMzcyMSwgCi0gICAgMTEzNzI5LCAxMTM3MzMsIDExMzczOSwgMTEzNzQ4LCAxMTM3NTUsIDExMzc2MSwgMTEzNzY1LCAxMTM3NjksIDExMzc3MywgCi0gICAgMTEzNzc5LCAxMTM3ODgsIDExMzc5NiwgMTEzODAwLCAxMTM4MDYsIDExMzgxMCwgMTEzODE0LCAxMTM4MTgsIDExMzgyNCwgCi0gICAgMTEzODMxLCAxMTM4MzcsIDExMzg0MSwgMTEzODQ3LCAxMTM4NTEsIDExMzg1NSwgMTEzODY0LCAxMTM4NzYsIDExMzg4MCwgCi0gICAgMTEzODg3LCAxMTM4OTQsIDExMzkwNCwgMTEzOTExLCAxMTM5MjMsIDExMzkzMCwgMTEzOTM3LCAxMTM5NDQsIDExMzk1NSwgCi0gICAgMTEzOTY1LCAxMTM5NzgsIDExMzk4OCwgMTEzOTk1LCAxMTM5OTksIDExNDAwMywgMTE0MDA3LCAxMTQwMTEsIDExNDAyMCwgCi0gICAgMTE0MDI5LCAxMTQwMzgsIDExNDA1NSwgMTE0MDY0LCAxMTQwNzAsIDExNDA3NywgMTE0MDg1LCAxMTQwOTgsIDExNDEwMiwgCi0gICAgMTE0MTExLCAxMTQxMjAsIDExNDEyOSwgMTE0MTM4LCAxMTQxNDksIDExNDE1OCwgMTE0MTY3LCAxMTQxNzYsIDExNDE4NSwgCi0gICAgMTE0MTk0LCAxMTQyMDMsIDExNDIxMywgMTE0MjE2LCAxMTQyMjAsIDExNDIyNCwgMTE0MjI4LCAxMTQyMzIsIDExNDIzNiwgCi0gICAgMTE0MjQyLCAxMTQyNDksIDExNDI1NiwgMTE0MjYzLCAxMTQyNjksIDExNDI3NSwgMTE0MjgyLCAxMTQyODgsIDExNDI5NSwgCi0gICAgMTE0MzAzLCAxMTQzMDcsIDExNDMxNCwgMTE0MzIxLCAxMTQzMjgsIDExNDMzNiwgMTE0MzQwLCAxMTQzNDQsIDExNDM0OCwgCi0gICAgMTE0MzUyLCAxMTQzNTYsIDExNDM2MiwgMTE0MzY2LCAxMTQzNzIsIDExNDM3OSwgMTE0Mzg2LCAxMTQzOTIsIDExNDM5OSwgCi0gICAgMTE0NDA2LCAxMTQ0MTMsIDExNDQyMCwgMTE0NDI3LCAxMTQ0MzQsIDExNDQ0MSwgMTE0NDQ4LCAxMTQ0NTUsIDExNDQ2MiwgCi0gICAgMTE0NDY5LCAxMTQ0NzYsIDExNDQ4MywgMTE0NDkwLCAxMTQ0OTYsIDExNDUwMCwgMTE0NTA5LCAxMTQ1MTMsIDExNDUxNywgCi0gICAgMTE0NTIxLCAxMTQ1MjUsIDExNDUzMSwgMTE0NTM4LCAxMTQ1NDUsIDExNDU1MiwgMTE0NTU5LCAxMTQ1NjYsIDExNDU3MiwgCi0gICAgMTE0NTgwLCAxMTQ1ODQsIDExNDU4OCwgMTE0NTkyLCAxMTQ1OTYsIDExNDYwMiwgMTE0NjE5LCAxMTQ2MzYsIDExNDY0MCwgCi0gICAgMTE0NjQ0LCAxMTQ2NDgsIDExNDY1MiwgMTE0NjU2LCAxMTQ2NjAsIDExNDY2NiwgMTE0NjczLCAxMTQ2NzcsIDExNDY4MywgCi0gICAgMTE0NjkwLCAxMTQ2OTcsIDExNDcwNCwgMTE0NzExLCAxMTQ3MTgsIDExNDcyNywgMTE0NzM0LCAxMTQ3NDEsIDExNDc0OCwgCi0gICAgMTE0NzU1LCAxMTQ3NTksIDExNDc2MywgMTE0NzY5LCAxMTQ3ODEsIDExNDc4NSwgMTE0Nzg5LCAxMTQ3OTgsIDExNDgwMiwgCi0gICAgMTE0ODA2LCAxMTQ4MTAsIDExNDgxNiwgMTE0ODIwLCAxMTQ4MjQsIDExNDgzMywgMTE0ODM3LCAxMTQ4NDEsIDExNDg0NSwgCi0gICAgMTE0ODUyLCAxMTQ4NTYsIDExNDg2MCwgMTE0ODY0LCAxMTQ4NjgsIDExNDg3MiwgMTE0ODc2LCAxMTQ4ODAsIDExNDg4NCwgCi0gICAgMTE0ODkwLCAxMTQ4OTcsIDExNDkwNCwgMTE0OTEwLCAxMTQ5MTQsIDExNDkzMSwgMTE0OTM3LCAxMTQ5NDEsIDExNDk0NywgCi0gICAgMTE0OTUzLCAxMTQ5NTksIDExNDk2NSwgMTE0OTcxLCAxMTQ5NzcsIDExNDk4MSwgMTE0OTg1LCAxMTQ5ODksIDExNDk5NSwgCi0gICAgMTE0OTk5LCAxMTUwMDUsIDExNTAwOSwgMTE1MDEzLCAxMTUwMjAsIDExNTAyNywgMTE1MDQ0LCAxMTUwNDgsIDExNTA1MiwgCi0gICAgMTE1MDU2LCAxMTUwNjAsIDExNTA2NCwgMTE1MDc2LCAxMTUwNzksIDExNTA4NCwgMTE1MDg5LCAxMTUxMDQsIDExNTExNCwgCi0gICAgMTE1MTI2LCAxMTUxMzAsIDExNTEzNCwgMTE1MTM4LCAxMTUxNDQsIDExNTE1MSwgMTE1MTU4LCAxMTUxNjgsIDExNTE4MCwgCi0gICAgMTE1MTg2LCAxMTUxOTIsIDExNTIwMSwgMTE1MjA1LCAxMTUyMDksIDExNTIxNiwgMTE1MjI2LCAxMTUyMzMsIDExNTIzOSwgCi0gICAgMTE1MjQzLCAxMTUyNDcsIDExNTI1NCwgMTE1MjYwLCAxMTUyNjQsIDExNTI3MCwgMTE1Mjc0LCAxMTUyODIsIDExNTI4OCwgCi0gICAgMTE1MjkyLCAxMTUzMDAsIDExNTMwOSwgMTE1MzE2LCAxMTUzMjIsIDExNTMyOSwgMTE1MzM2LCAxMTUzNDYsIDExNTM1NiwgCi0gICAgMTE1MzYwLCAxMTUzNjQsIDExNTM2OCwgMTE1MzcyLCAxMTUzNzgsIDExNTM4NSwgMTE1MzkxLCAxMTUzOTgsIDExNTQwNSwgCi0gICAgMTE1NDEyLCAxMTU0MjEsIDExNTQyOCwgMTE1NDM1LCAxMTU0NDEsIDExNTQ0OCwgMTE1NDU1LCAxMTU0NjIsIDExNTQ2OSwgCi0gICAgMTE1NDc2LCAxMTU0ODMsIDExNTQ4OSwgMTE1NDk2LCAxMTU1MDMsIDExNTUxMCwgMTE1NTE5LCAxMTU1MjYsIDExNTUzMywgCi0gICAgMTE1NTM3LCAxMTU1NDMsIDExNTU0NywgMTE1NTUzLCAxMTU1NjAsIDExNTU2NywgMTE1NTc0LCAxMTU1NzgsIDExNTU4MiwgCi0gICAgMTE1NTg2LCAxMTU1OTAsIDExNTU5NCwgMTE1NjAxLCAxMTU2MDUsIDExNTYwOSwgMTE1NjE1LCAxMTU2MjMsIDExNTYyNywgCi0gICAgMTE1NjMxLCAxMTU2MzUsIDExNTYzOSwgMTE1NjQ2LCAxMTU2NTAsIDExNTY1NCwgMTE1NjYyLCAxMTU2NjYsIDExNTY3MCwgCi0gICAgMTE1Njc0LCAxMTU2NzgsIDExNTY4NCwgMTE1Njg4LCAxMTU2OTIsIDExNTY5OCwgMTE1NzA1LCAxMTU3MTEsIDExNTcxOCwgCi0gICAgMTE1NzMwLCAxMTU3MzQsIDExNTc0MSwgMTE1NzQ4LCAxMTU3NTUsIDExNTc2MiwgMTE1Nzc0LCAxMTU3ODEsIDExNTc4NSwgCi0gICAgMTE1Nzg5LCAxMTU3OTMsIDExNTgwMCwgMTE1ODA3LCAxMTU4MTQsIDExNTgyMSwgMTE1ODMxLCAxMTU4MzgsIDExNTg0NCwgCi0gICAgMTE1ODUxLCAxMTU4NTgsIDExNTg2NSwgMTE1ODcyLCAxMTU4ODEsIDExNTg5MSwgMTE1ODk4LCAxMTU5MDIsIDExNTkwOSwgCi0gICAgMTE1OTEzLCAxMTU5MTcsIDExNTkyMSwgMTE1OTI4LCAxMTU5MzUsIDExNTk0NSwgMTE1OTUxLCAxMTU5NTUsIDExNTk2NCwgCi0gICAgMTE1OTY4LCAxMTU5NzUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDExMjM2MiwgMTEyMzY1LCAxMTIzNzAsIDExMjM3NiwgMTEyMzg0LCAxMTIzODksIDExMjM5NSwgMTEyNDAzLCAKKyAgICAxMTI0MDksIDExMjQxNSwgMTEyNDE5LCAxMTI0MjMsIDExMjQzMCwgMTEyNDM5LCAxMTI0NDYsIDExMjQ1NSwgMTEyNDYxLCAKKyAgICAxMTI0NzAsIDExMjQ3NywgMTEyNDg0LCAxMTI0OTEsIDExMjUwMSwgMTEyNTA3LCAxMTI1MTEsIDExMjUxOCwgMTEyNTI3LCAKKyAgICAxMTI1MzcsIDExMjU0NCwgMTEyNTUxLCAxMTI1NTUsIDExMjU1OSwgMTEyNTY2LCAxMTI1NzYsIDExMjU4MCwgMTEyNTg3LCAKKyAgICAxMTI1OTQsIDExMjYwMSwgMTEyNjA3LCAxMTI2MTQsIDExMjYyMSwgMTEyNjI4LCAxMTI2MzUsIDExMjYzOSwgMTEyNjQzLCAKKyAgICAxMTI2NDcsIDExMjY1NCwgMTEyNjU4LCAxMTI2NjUsIDExMjY3MiwgMTEyNjg2LCAxMTI2OTUsIDExMjY5OSwgMTEyNzAzLCAKKyAgICAxMTI3MDcsIDExMjcxNCwgMTEyNzE4LCAxMTI3MjIsIDExMjcyNiwgMTEyNzM0LCAxMTI3NDIsIDExMjc2MSwgMTEyNzcxLCAKKyAgICAxMTI3OTEsIDExMjc5NSwgMTEyNzk5LCAxMTI4MDMsIDExMjgwNywgMTEyODExLCAxMTI4MTUsIDExMjgxOSwgMTEyODI2LCAKKyAgICAxMTI4MzAsIDExMjgzMywgMTEyODM3LCAxMTI4NDEsIDExMjg0NywgMTEyODU0LCAxMTI4NjMsIDExMjg2NywgMTEyODc2LCAKKyAgICAxMTI4ODUsIDExMjg5MywgMTEyODk3LCAxMTI5MDQsIDExMjkwOCwgMTEyOTEyLCAxMTI5MTYsIDExMjkyMCwgMTEyOTMxLCAKKyAgICAxMTI5NDAsIDExMjk0OSwgMTEyOTU4LCAxMTI5NjcsIDExMjk3OSwgMTEyOTg4LCAxMTI5OTcsIDExMzAwNiwgMTEzMDE0LCAKKyAgICAxMTMwMjMsIDExMzAzNSwgMTEzMDQ0LCAxMTMwNTIsIDExMzA2MSwgMTEzMDczLCAxMTMwODIsIDExMzA5MSwgMTEzMTAzLCAKKyAgICAxMTMxMTIsIDExMzEyMSwgMTEzMTMzLCAxMTMxNDIsIDExMzE0NiwgMTEzMTUwLCAxMTMxNTQsIDExMzE1OCwgMTEzMTYyLCAKKyAgICAxMTMxNjYsIDExMzE3MCwgMTEzMTc3LCAxMTMxODEsIDExMzE4NSwgMTEzMTk2LCAxMTMyMDAsIDExMzIwNCwgMTEzMjExLCAKKyAgICAxMTMyMTcsIDExMzIyMywgMTEzMjI3LCAxMTMyMzQsIDExMzIzOCwgMTEzMjQyLCAxMTMyNDYsIDExMzI1MCwgMTEzMjU0LCAKKyAgICAxMTMyNTgsIDExMzI2NCwgMTEzMjcyLCAxMTMyNzYsIDExMzI4MCwgMTEzMjgzLCAxMTMyODksIDExMzI5OSwgMTEzMzAzLCAKKyAgICAxMTMzMTUsIDExMzMyMiwgMTEzMzI5LCAxMTMzMzYsIDExMzM0MywgMTEzMzQ5LCAxMTMzNTMsIDExMzM1NywgMTEzMzYxLCAKKyAgICAxMTMzNjUsIDExMzM3MiwgMTEzMzgxLCAxMTMzODgsIDExMzM5NiwgMTEzNDA0LCAxMTM0MTAsIDExMzQxNCwgMTEzNDE4LCAKKyAgICAxMTM0MjIsIDExMzQyNiwgMTEzNDMyLCAxMTM0NDEsIDExMzQ1MywgMTEzNDYwLCAxMTM0NjcsIDExMzQ3NiwgMTEzNDg3LCAKKyAgICAxMTM0OTMsIDExMzUwMiwgMTEzNTExLCAxMTM1MTgsIDExMzUyNywgMTEzNTM0LCAxMTM1NDAsIDExMzU1MCwgMTEzNTU3LCAKKyAgICAxMTM1NjQsIDExMzU3MSwgMTEzNTc4LCAxMTM1ODIsIDExMzU4OCwgMTEzNTkyLCAxMTM2MDMsIDExMzYxMSwgMTEzNjIwLCAKKyAgICAxMTM2MzIsIDExMzYzOSwgMTEzNjQ2LCAxMTM2NTYsIDExMzY2MywgMTEzNjczLCAxMTM2ODAsIDExMzY5MCwgMTEzNjk3LCAKKyAgICAxMTM3MDQsIDExMzcxNCwgMTEzNzIxLCAxMTM3MjgsIDExMzczNywgMTEzNzQ0LCAxMTM3NTYsIDExMzc2NSwgMTEzNzcyLCAKKyAgICAxMTM3NzksIDExMzc4NiwgMTEzNzk1LCAxMTM4MDUsIDExMzgxOCwgMTEzODI1LCAxMTM4MzQsIDExMzg0NCwgMTEzODUxLCAKKyAgICAxMTM4NjAsIDExMzg3MywgMTEzODgwLCAxMTM4ODcsIDExMzg5NCwgMTEzOTA0LCAxMTM5MTQsIDExMzkyMCwgMTEzOTMwLCAKKyAgICAxMTM5MzcsIDExMzk0NCwgMTEzOTU0LCAxMTM5NjAsIDExMzk2NywgMTEzOTc0LCAxMTM5ODEsIDExMzk5MSwgMTEzOTk4LCAKKyAgICAxMTQwMDUsIDExNDAxMiwgMTE0MDE4LCAxMTQwMjUsIDExNDAzNSwgMTE0MDQyLCAxMTQwNDYsIDExNDA1NCwgMTE0MDU4LCAKKyAgICAxMTQwNzAsIDExNDA3NCwgMTE0MDg4LCAxMTQwOTIsIDExNDA5NiwgMTE0MTAwLCAxMTQxMDQsIDExNDExMCwgMTE0MTE3LCAKKyAgICAxMTQxMjUsIDExNDEyOSwgMTE0MTMzLCAxMTQxMzcsIDExNDE0MSwgMTE0MTQ4LCAxMTQxNTIsIDExNDE1OCwgMTE0MTY0LCAKKyAgICAxMTQxNzIsIDExNDE3NiwgMTE0MTgzLCAxMTQxOTEsIDExNDE5NSwgMTE0MTk5LCAxMTQyMDUsIDExNDIwOSwgMTE0MjE4LCAKKyAgICAxMTQyMjcsIDExNDIzNCwgMTE0MjQ0LCAxMTQyNTAsIDExNDI1NCwgMTE0MjU4LCAxMTQyNjYsIDExNDI3MywgMTE0MjgwLCAKKyAgICAxMTQyODYsIDExNDI5MCwgMTE0Mjk4LCAxMTQzMDIsIDExNDMwOSwgMTE0MzIxLCAxMTQzMjgsIDExNDMzOCwgMTE0MzQ0LCAKKyAgICAxMTQzNDgsIDExNDM1NywgMTE0MzY0LCAxMTQzNzMsIDExNDM3NywgMTE0MzgxLCAxMTQzODgsIDExNDM5MiwgMTE0Mzk2LCAKKyAgICAxMTQ0MDAsIDExNDQwNCwgMTE0NDA3LCAxMTQ0MTMsIDExNDQxOSwgMTE0NDIzLCAxMTQ0MjcsIDExNDQzNCwgMTE0NDQxLCAKKyAgICAxMTQ0NDgsIDExNDQ1NSwgMTE0NDYyLCAxMTQ0NjksIDExNDQ3NiwgMTE0NDgzLCAxMTQ0ODksIDExNDQ5MywgMTE0NDk3LCAKKyAgICAxMTQ1MDQsIDExNDUxMSwgMTE0NTE4LCAxMTQ1MjUsIDExNDUzMiwgMTE0NTM2LCAxMTQ1MzksIDExNDU0NCwgMTE0NTQ4LCAKKyAgICAxMTQ1NTIsIDExNDU2MSwgMTE0NTcwLCAxMTQ1NzQsIDExNDU3OCwgMTE0NTg0LCAxMTQ1OTAsIDExNDYwNywgMTE0NjEzLCAKKyAgICAxMTQ2MTcsIDExNDYyNiwgMTE0NjMwLCAxMTQ2MzQsIDExNDY0MSwgMTE0NjQ5LCAxMTQ2NTcsIDExNDY2MywgMTE0NjY3LCAKKyAgICAxMTQ2NzEsIDExNDY3NSwgMTE0Njc5LCAxMTQ2ODIsIDExNDY4OCwgMTE0Njk1LCAxMTQ3MDUsIDExNDcxMiwgMTE0NzE5LCAKKyAgICAxMTQ3MjYsIDExNDczMiwgMTE0NzM5LCAxMTQ3NDYsIDExNDc1MywgMTE0NzYwLCAxMTQ3NjcsIDExNDc3NiwgMTE0NzgzLCAKKyAgICAxMTQ3OTUsIDExNDgwMiwgMTE0ODA5LCAxMTQ4MTksIDExNDgzMCwgMTE0ODM3LCAxMTQ4NDQsIDExNDg1MSwgMTE0ODU4LCAKKyAgICAxMTQ4NjUsIDExNDg3MiwgMTE0ODc5LCAxMTQ4ODYsIDExNDg5MywgMTE0OTAwLCAxMTQ5MTAsIDExNDkyMCwgMTE0OTMwLCAKKyAgICAxMTQ5MzcsIDExNDk0NywgMTE0OTU0LCAxMTQ5NjEsIDExNDk2OCwgMTE0OTc1LCAxMTQ5ODIsIDExNDk4OSwgMTE0OTk2LCAKKyAgICAxMTUwMDMsIDExNTAxMCwgMTE1MDE3LCAxMTUwMjQsIDExNTAzMSwgMTE1MDM4LCAxMTUwNDQsIDExNTA1MSwgMTE1MDU4LCAKKyAgICAxMTUwNjcsIDExNTA3NCwgMTE1MDgxLCAxMTUwODUsIDExNTA5MywgMTE1MDk3LCAxMTUxMDEsIDExNTEwNSwgMTE1MTA5LCAKKyAgICAxMTUxMTMsIDExNTEyMCwgMTE1MTI0LCAxMTUxMzMsIDExNTEzNywgMTE1MTQ0LCAxMTUxNTIsIDExNTE1NiwgMTE1MTYwLCAKKyAgICAxMTUxNjQsIDExNTE3NywgMTE1MTkzLCAxMTUxOTcsIDExNTIwMSwgMTE1MjA4LCAxMTUyMTQsIDExNTIyMSwgMTE1MjI1LCAKKyAgICAxMTUyMjksIDExNTIzMywgMTE1MjM3LCAxMTUyNDEsIDExNTI0OCwgMTE1MjUyLCAxMTUyNzAsIDExNTI3NCwgMTE1Mjc4LCAKKyAgICAxMTUyODUsIDExNTI4OSwgMTE1MjkzLCAxMTUyOTksIDExNTMwMywgMTE1MzA3LCAxMTUzMTUsIDExNTMxOSwgMTE1MzIzLCAKKyAgICAxMTUzMjYsIDExNTMzMCwgMTE1MzM2LCAxMTUzNDcsIDExNTM1NiwgMTE1MzY1LCAxMTUzNzIsIDExNTM3OSwgMTE1MzkwLCAKKyAgICAxMTUzOTcsIDExNTQwNCwgMTE1NDExLCAxMTU0MTgsIDExNTQyNSwgMTE1NDMyLCAxMTU0MzksIDExNTQ0OSwgMTE1NDU1LCAKKyAgICAxMTU0NjIsIDExNTQ3MiwgMTE1NDgxLCAxMTU0ODgsIDExNTQ5NywgMTE1NTA3LCAxMTU1MTQsIDExNTUyMSwgMTE1NTI4LCAKKyAgICAxMTU1MzUsIDExNTU0NywgMTE1NTU0LCAxMTU1NjEsIDExNTU2OCwgMTE1NTc1LCAxMTU1ODIsIDExNTU5MiwgMTE1NTk5LCAKKyAgICAxMTU2MDYsIDExNTYxNiwgMTE1NjI5LCAxMTU2NDEsIDExNTY0OCwgMTE1NjU4LCAxMTU2NjUsIDExNTY3MiwgMTE1Njc5LCAKKyAgICAxMTU2OTMsIDExNTY5OSwgMTE1NzA3LCAxMTU3MTcsIDExNTcyNywgMTE1NzM0LCAxMTU3NDEsIDExNTc0NywgMTE1NzUxLCAKKyAgICAxMTU3NTgsIDExNTc2OCwgMTE1Nzc0LCAxMTU3ODcsIDExNTc5MSwgMTE1Nzk1LCAxMTU4MDIsIDExNTgwNiwgMTE1ODEzLCAKKyAgICAxMTU4MjMsIDExNTgyNywgMTE1ODMxLCAxMTU4MzUsIDExNTgzOSwgMTE1ODQzLCAxMTU4NTAsIDExNTg1NCwgMTE1ODYxLCAKKyAgICAxMTU4NjgsIDExNTg3NSwgMTE1ODg0LCAxMTU4OTMsIDExNTkwMywgMTE1OTEwLCAxMTU5MTcsIDExNTkyNCwgMTE1OTM0LCAKKyAgICAxMTU5NDEsIDExNTk1MSwgMTE1OTU4LCAxMTU5NjgsIDExNTk3NSwgMTE1OTgyLCAxMTU5OTIsIDExNjAwMiwgMTE2MDA5LCAKKyAgICAxMTYwMTUsIDExNjAyMywgMTE2MDMxLCAxMTYwMzcsIDExNjA0MywgMTE2MDQ3LCAxMTYwNTEsIDExNjA1OCwgMTE2MDY2LCAKKyAgICAxMTYwNzIsIDExNjA3NiwgMTE2MDgwLCAxMTYwODQsIDExNjA5MSwgMTE2MTAzLCAxMTYxMDYsIDExNjExMywgMTE2MTE5LCAKKyAgICAxMTYxMjMsIDExNjEyNywgMTE2MTMxLCAxMTYxMzUsIDExNjEzOSwgMTE2MTQzLCAxMTYxNDcsIDExNjE1MSwgMTE2MTU1LCAKKyAgICAxMTYxNTksIDExNjE2NiwgMTE2MTcwLCAxMTYxNzYsIDExNjE4MCwgMTE2MTg0LCAxMTYxODgsIDExNjE5NCwgMTE2MjAxLCAKKyAgICAxMTYyMDgsIDExNjIxNSwgMTE2MjI2LCAxMTYyMzQsIDExNjIzOCwgMTE2MjQ0LCAxMTYyNTMsIDExNjI2MCwgMTE2MjY2LCAKKyAgICAxMTYyNjksIDExNjI3MywgMTE2Mjc3LCAxMTYyODMsIDExNjI5MiwgMTE2MzAwLCAxMTYzMDQsIDExNjMxMCwgMTE2MzE0LCAKKyAgICAxMTYzMTgsIDExNjMyMiwgMTE2MzI4LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ1LCAxMTYzNTEsIDExNjM1NSwgMTE2MzU5LCAKKyAgICAxMTYzNjgsIDExNjM4MCwgMTE2Mzg0LCAxMTYzOTEsIDExNjM5OCwgMTE2NDA4LCAxMTY0MTUsIDExNjQyNywgMTE2NDM0LCAKKyAgICAxMTY0NDEsIDExNjQ0OCwgMTE2NDU5LCAxMTY0NjksIDExNjQ4MiwgMTE2NDkyLCAxMTY0OTksIDExNjUwMywgMTE2NTA3LCAKKyAgICAxMTY1MTEsIDExNjUxNSwgMTE2NTI0LCAxMTY1MzMsIDExNjU0MiwgMTE2NTU5LCAxMTY1NjgsIDExNjU3NCwgMTE2NTgxLCAKKyAgICAxMTY1ODksIDExNjYwMiwgMTE2NjA2LCAxMTY2MTUsIDExNjYyNCwgMTE2NjMzLCAxMTY2NDIsIDExNjY1MywgMTE2NjYyLCAKKyAgICAxMTY2NzAsIDExNjY3OSwgMTE2Njg4LCAxMTY2OTcsIDExNjcwNiwgMTE2NzE2LCAxMTY3MTksIDExNjcyMywgMTE2NzI3LCAKKyAgICAxMTY3MzEsIDExNjczNSwgMTE2NzM5LCAxMTY3NDUsIDExNjc1MiwgMTE2NzU5LCAxMTY3NjYsIDExNjc3MiwgMTE2Nzc4LCAKKyAgICAxMTY3ODUsIDExNjc5MSwgMTE2Nzk4LCAxMTY4MDYsIDExNjgxMCwgMTE2ODE3LCAxMTY4MjQsIDExNjgzMSwgMTE2ODM5LCAKKyAgICAxMTY4NDMsIDExNjg0NywgMTE2ODUxLCAxMTY4NTUsIDExNjg1OSwgMTE2ODY1LCAxMTY4NjksIDExNjg3NSwgMTE2ODgyLCAKKyAgICAxMTY4ODksIDExNjg5NSwgMTE2OTAyLCAxMTY5MDksIDExNjkxNiwgMTE2OTIzLCAxMTY5MzAsIDExNjkzNywgMTE2OTQ0LCAKKyAgICAxMTY5NTEsIDExNjk1OCwgMTE2OTY1LCAxMTY5NzIsIDExNjk3OSwgMTE2OTg2LCAxMTY5OTMsIDExNjk5OSwgMTE3MDAzLCAKKyAgICAxMTcwMTIsIDExNzAxNiwgMTE3MDIwLCAxMTcwMjQsIDExNzAyOCwgMTE3MDM0LCAxMTcwNDEsIDExNzA0OCwgMTE3MDU1LCAKKyAgICAxMTcwNjIsIDExNzA2OSwgMTE3MDc1LCAxMTcwODMsIDExNzA4NywgMTE3MDkxLCAxMTcwOTUsIDExNzA5OSwgMTE3MTA1LCAKKyAgICAxMTcxMjIsIDExNzEzOSwgMTE3MTQzLCAxMTcxNDcsIDExNzE1MSwgMTE3MTU1LCAxMTcxNTksIDExNzE2MywgMTE3MTY5LCAKKyAgICAxMTcxNzYsIDExNzE4MCwgMTE3MTg2LCAxMTcxOTMsIDExNzIwMCwgMTE3MjA3LCAxMTcyMTQsIDExNzIyMSwgMTE3MjMwLCAKKyAgICAxMTcyMzcsIDExNzI0NCwgMTE3MjUxLCAxMTcyNTgsIDExNzI2MiwgMTE3MjY2LCAxMTcyNzIsIDExNzI4NCwgMTE3Mjg4LCAKKyAgICAxMTcyOTIsIDExNzMwMSwgMTE3MzA1LCAxMTczMDksIDExNzMxMywgMTE3MzE5LCAxMTczMjMsIDExNzMyNywgMTE3MzM2LCAKKyAgICAxMTczNDAsIDExNzM0NCwgMTE3MzQ4LCAxMTczNTUsIDExNzM1OSwgMTE3MzYzLCAxMTczNjcsIDExNzM3MSwgMTE3Mzc1LCAKKyAgICAxMTczNzksIDExNzM4MywgMTE3Mzg3LCAxMTczOTMsIDExNzQwMCwgMTE3NDA3LCAxMTc0MTMsIDExNzQxNywgMTE3NDM0LCAKKyAgICAxMTc0NDAsIDExNzQ0NCwgMTE3NDUwLCAxMTc0NTYsIDExNzQ2MiwgMTE3NDY4LCAxMTc0NzQsIDExNzQ4MCwgMTE3NDg0LCAKKyAgICAxMTc0ODgsIDExNzQ5MiwgMTE3NDk4LCAxMTc1MDIsIDExNzUwOCwgMTE3NTEyLCAxMTc1MTYsIDExNzUyMywgMTE3NTMwLCAKKyAgICAxMTc1NDcsIDExNzU1MSwgMTE3NTU1LCAxMTc1NTksIDExNzU2MywgMTE3NTY3LCAxMTc1NzksIDExNzU4MiwgMTE3NTg3LCAKKyAgICAxMTc1OTIsIDExNzYwNywgMTE3NjE3LCAxMTc2MjksIDExNzYzMywgMTE3NjM3LCAxMTc2NDEsIDExNzY0NywgMTE3NjU0LCAKKyAgICAxMTc2NjEsIDExNzY3MSwgMTE3NjgzLCAxMTc2ODksIDExNzY5NSwgMTE3NzA0LCAxMTc3MDgsIDExNzcxMiwgMTE3NzE5LCAKKyAgICAxMTc3MjksIDExNzczNiwgMTE3NzQyLCAxMTc3NDYsIDExNzc1MCwgMTE3NzU3LCAxMTc3NjMsIDExNzc2NywgMTE3NzczLCAKKyAgICAxMTc3NzcsIDExNzc4NSwgMTE3NzkxLCAxMTc3OTUsIDExNzgwMywgMTE3ODExLCAxMTc4MTgsIDExNzgyNCwgMTE3ODMxLCAKKyAgICAxMTc4MzgsIDExNzg0OCwgMTE3ODU4LCAxMTc4NjIsIDExNzg2NiwgMTE3ODcwLCAxMTc4NzQsIDExNzg4MCwgMTE3ODg3LCAKKyAgICAxMTc4OTMsIDExNzkwMCwgMTE3OTA3LCAxMTc5MTQsIDExNzkyMywgMTE3OTMwLCAxMTc5MzcsIDExNzk0MywgMTE3OTUwLCAKKyAgICAxMTc5NTcsIDExNzk2NCwgMTE3OTcxLCAxMTc5NzgsIDExNzk4NSwgMTE3OTkxLCAxMTc5OTgsIDExODAwNSwgMTE4MDEyLCAKKyAgICAxMTgwMjEsIDExODAyOCwgMTE4MDM1LCAxMTgwMzksIDExODA0NSwgMTE4MDQ5LCAxMTgwNTUsIDExODA2MiwgMTE4MDY5LCAKKyAgICAxMTgwNzYsIDExODA4MCwgMTE4MDg0LCAxMTgwODgsIDExODA5MiwgMTE4MDk2LCAxMTgxMDMsIDExODEwNywgMTE4MTExLCAKKyAgICAxMTgxMTcsIDExODEyNSwgMTE4MTI5LCAxMTgxMzMsIDExODEzNywgMTE4MTQxLCAxMTgxNDgsIDExODE1MiwgMTE4MTU2LCAKKyAgICAxMTgxNjQsIDExODE2OCwgMTE4MTcyLCAxMTgxNzYsIDExODE4MCwgMTE4MTg2LCAxMTgxOTAsIDExODE5NCwgMTE4MjAwLCAKKyAgICAxMTgyMDcsIDExODIxMywgMTE4MjIwLCAxMTgyMzIsIDExODIzNiwgMTE4MjQzLCAxMTgyNTAsIDExODI1NywgMTE4MjY0LCAKKyAgICAxMTgyNzYsIDExODI4MywgMTE4Mjg3LCAxMTgyOTEsIDExODI5NSwgMTE4MzAyLCAxMTgzMDksIDExODMxNiwgMTE4MzIzLCAKKyAgICAxMTgzMzMsIDExODM0MCwgMTE4MzQ2LCAxMTgzNTMsIDExODM2MCwgMTE4MzY3LCAxMTgzNzQsIDExODM4MywgMTE4MzkzLCAKKyAgICAxMTg0MDAsIDExODQwNCwgMTE4NDExLCAxMTg0MTUsIDExODQxOSwgMTE4NDIzLCAxMTg0MzAsIDExODQzNywgMTE4NDQ3LCAKKyAgICAxMTg0NTMsIDExODQ1NywgMTE4NDY2LCAxMTg0NzAsIDExODQ3NywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE1OTc5LCAxMTU5ODUsIDExNTk5MSwgMTE1OTk4LCAxMTYwMDUsIAotICAgIDExNjAxMiwgMTE2MDE5LCAxMTYwMjYsIDExNjAzMywgMTE2MDM5LCAxMTYwNDYsIDExNjA1MywgMTE2MDYwLCAxMTYwNjcsIAotICAgIDExNjA3NCwgMTE2MDgxLCAxMTYwODcsIDExNjA5MywgMTE2MDk5LCAxMTYxMDUsIDExNjExMSwgMTE2MTE3LCAxMTYxMjMsIAotICAgIDExNjEyOSwgMTE2MTM1LCAxMTYxNDIsIDExNjE0OSwgMTE2MTU2LCAxMTYxNjMsIDExNjE3MCwgMTE2MTc3LCAxMTYxODMsIAotICAgIDExNjE4OSwgMTE2MTk1LCAxMTYyMDIsIDExNjIwOSwgMTE2MjE1LCAxMTYyMjEsIDExNjIzMCwgMTE2MjM3LCAxMTYyNDQsIAotICAgIDExNjI1MSwgMTE2MjU4LCAxMTYyNjUsIDExNjI3MiwgMTE2Mjc4LCAxMTYyODQsIDExNjI5MCwgMTE2Mjk5LCAxMTYzMDYsIAotICAgIDExNjMxMywgMTE2MzI0LCAxMTYzMzUsIDExNjM0MSwgMTE2MzQ3LCAxMTYzNTMsIDExNjM2MiwgMTE2MzY5LCAxMTYzNzYsIAotICAgIDExNjM4NiwgMTE2Mzk2LCAxMTY0MDcsIDExNjQxOCwgMTE2NDMwLCAxMTY0NDMsIDExNjQ1NCwgMTE2NDY1LCAxMTY0NzcsIAotICAgIDExNjQ5MCwgMTE2NTAxLCAxMTY1MTIsIDExNjUyMywgMTE2NTM0LCAxMTY1NDUsIDExNjU1NywgMTE2NTY1LCAxMTY1NzMsIAotICAgIDExNjU4MiwgMTE2NTkxLCAxMTY2MDAsIDExNjYwNiwgMTE2NjEyLCAxMTY2MTgsIDExNjYyNSwgMTE2NjM1LCAxMTY2NDIsIAotICAgIDExNjY1MiwgMTE2NjU3LCAxMTY2NjIsIDExNjY2OCwgMTE2Njc0LCAxMTY2ODIsIDExNjY5MCwgMTE2Njk5LCAxMTY3MTAsIAotICAgIDExNjcyMSwgMTE2NzI5LCAxMTY3MzcsIDExNjc0NiwgMTE2NzU1LCAxMTY3NjMsIDExNjc3MCwgMTE2Nzc4LCAxMTY3ODYsIAotICAgIDExNjc5MywgMTE2ODAwLCAxMTY4MDksIDExNjgxOCwgMTE2ODI3LCAxMTY4MzYsIDExNjg0NSwgMCwgMTE2ODU0LCAKLSAgICAxMTY4NjUsIDExNjg3MiwgMTE2ODgwLCAxMTY4ODgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExNjg5NiwgCi0gICAgMTE2OTA1LCAxMTY5MTIsIDExNjkxOSwgMTE2OTI4LCAxMTY5MzUsIDExNjk0MiwgMTE2OTQ5LCAxMTY5NTksIDExNjk2NiwgCi0gICAgMTE2OTczLCAxMTY5ODAsIDExNjk4OCwgMTE2OTk1LCAxMTcwMDIsIDExNzAwOSwgMTE3MDIwLCAxMTcwMjcsIDExNzAzNCwgCi0gICAgMTE3MDQxLCAxMTcwNDgsIDExNzA1NSwgMTE3MDY0LCAxMTcwNzEsIDExNzA3NywgMTE3MDg0LCAxMTcwOTMsIDExNzEwMCwgCi0gICAgMTE3MTA3LCAxMTcxMTQsIDExNzEyNCwgMTE3MTMxLCAxMTcxMzgsIDExNzE0OCwgMTE3MTU4LCAxMTcxNjUsIDExNzE3MiwgCi0gICAgMTE3MTc5LCAxMTcxODYsIDExNzE5MywgMTE3MjAwLCAxMTcyMDksIDExNzIxNiwgMTE3MjIzLCAxMTcyMjksIDExNzIzNywgCi0gICAgMTE3MjQ2LCAxMTcyNTUsIDExNzI2NiwgMTE3Mjc1LCAxMTcyODQsIDExNzI5MywgMTE3MzAyLCAxMTczMTEsIDExNzMxOCwgCi0gICAgMTE3MzI1LCAxMTczMzQsIDExNzM0NiwgMTE3MzU2LCAxMTczNjMsIDExNzM3MCwgMTE3MzgwLCAxMTczOTAsIDExNzM5OSwgCi0gICAgMTE3NDA5LCAxMTc0MTYsIDExNzQyNiwgMTE3NDMzLCAxMTc0NDAsIDExNzQ0NywgMTE3NDU3LCAxMTc0NjcsIDExNzQ3NCwgCi0gICAgMTE3NDgxLCAxMTc0OTEsIDExNzQ5NywgMTE3NTA4LCAxMTc1MTcsIDExNzUyNywgMTE3NTM1LCAxMTc1NDgsIDExNzU1NSwgCi0gICAgMTE3NTYxLCAxMTc1NjksIDExNzU3NiwgMTE3NTg2LCAxMTc1OTAsIDExNzU5NCwgMTE3NTk4LCAxMTc2MDIsIDExNzYwNiwgCi0gICAgMTE3NjEwLCAxMTc2MTQsIDExNzYyMywgMTE3NjI3LCAxMTc2MzQsIDExNzYzOCwgMTE3NjQyLCAxMTc2NDYsIDExNzY1MCwgCi0gICAgMTE3NjU0LCAxMTc2NTgsIDExNzY2MiwgMTE3NjY2LCAxMTc2NzAsIDExNzY3NCwgMTE3Njc4LCAxMTc2ODIsIDExNzY4NiwgCi0gICAgMTE3NjkwLCAxMTc2OTQsIDExNzY5OCwgMTE3NzAyLCAxMTc3MDYsIDExNzcxMCwgMTE3NzE3LCAxMTc3MjQsIDExNzczNCwgCi0gICAgMTE3NzQ3LCAxMTc3NTcsIDExNzc2MSwgMTE3NzY1LCAxMTc3NjksIDExNzc3MywgMTE3Nzc3LCAxMTc3ODEsIDExNzc4NSwgCi0gICAgMTE3Nzg5LCAxMTc3OTMsIDExNzc5NywgMTE3ODAxLCAxMTc4MDgsIDExNzgxNSwgMTE3ODI2LCAxMTc4MzMsIDExNzg0MCwgCi0gICAgMTE3ODQ3LCAxMTc4NTQsIDExNzg2MSwgMTE3ODY4LCAxMTc4NzUsIDExNzg3OSwgMTE3ODgzLCAxMTc4OTAsIDExNzg5NywgCi0gICAgMTE3OTA0LCAxMTc5MTMsIDExNzkyMCwgMTE3OTMzLCAxMTc5NDMsIDExNzk1MCwgMTE3OTU3LCAxMTc5NjEsIDExNzk2NSwgCi0gICAgMTE3OTc0LCAxMTc5ODEsIDExNzk4OCwgMTE3OTk1LCAxMTgwMDgsIDExODAxNSwgMTE4MDIyLCAxMTgwMzIsIDExODA0MiwgCi0gICAgMTE4MDUxLCAxMTgwNTgsIDExODA2NSwgMTE4MDcyLCAxMTgwNzksIDExODA4NiwgMTE4MDkzLCAxMTgxMDMsIDExODEwOSwgCi0gICAgMTE4MTE3LCAxMTgxMjQsIDExODEzMiwgMTE4MTM5LCAxMTgxNTAsIDExODE1NywgMTE4MTYzLCAxMTgxNzAsIDExODE3NywgCi0gICAgMTE4MTg0LCAxMTgxOTEsIDExODIwMSwgMTE4MjExLCAxMTgyMTgsIDExODIyNSwgMTE4MjM0LCAxMTgyNDIsIDExODI0OCwgCi0gICAgMTE4MjU1LCAxMTgyNjIsIDExODI2OSwgMTE4Mjc2LCAxMTgyODAsIDExODI5MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTE4NDgxLCAxMTg0ODcsIAorICAgIDExODQ5MywgMTE4NTAwLCAxMTg1MDcsIDExODUxNCwgMTE4NTIxLCAxMTg1MjgsIDExODUzNSwgMTE4NTQxLCAxMTg1NDgsIAorICAgIDExODU1NSwgMTE4NTYyLCAxMTg1NjksIDExODU3NiwgMTE4NTgzLCAxMTg1ODksIDExODU5NSwgMTE4NjAxLCAxMTg2MDcsIAorICAgIDExODYxMywgMTE4NjE5LCAxMTg2MjUsIDExODYzMSwgMTE4NjM3LCAxMTg2NDQsIDExODY1MSwgMTE4NjU4LCAxMTg2NjUsIAorICAgIDExODY3MiwgMTE4Njc5LCAxMTg2ODUsIDExODY5MSwgMTE4Njk3LCAxMTg3MDQsIDExODcxMSwgMTE4NzE3LCAxMTg3MjMsIAorICAgIDExODczMiwgMTE4NzM5LCAxMTg3NDYsIDExODc1MywgMTE4NzYwLCAxMTg3NjcsIDExODc3NCwgMTE4NzgwLCAxMTg3ODYsIAorICAgIDExODc5MiwgMTE4ODAxLCAxMTg4MDgsIDExODgxNSwgMTE4ODI2LCAxMTg4MzcsIDExODg0MywgMTE4ODQ5LCAxMTg4NTUsIAorICAgIDExODg2NCwgMTE4ODcxLCAxMTg4NzgsIDExODg4OCwgMTE4ODk4LCAxMTg5MDksIDExODkyMCwgMTE4OTMyLCAxMTg5NDUsIAorICAgIDExODk1NiwgMTE4OTY3LCAxMTg5NzksIDExODk5MiwgMTE5MDAzLCAxMTkwMTQsIDExOTAyNSwgMTE5MDM2LCAxMTkwNDcsIAorICAgIDExOTA1OSwgMTE5MDY3LCAxMTkwNzUsIDExOTA4NCwgMTE5MDkzLCAxMTkxMDIsIDExOTEwOCwgMTE5MTE0LCAxMTkxMjAsIAorICAgIDExOTEyNywgMTE5MTM3LCAxMTkxNDQsIDExOTE1NCwgMTE5MTU5LCAxMTkxNjQsIDExOTE3MCwgMTE5MTc2LCAxMTkxODQsIAorICAgIDExOTE5MiwgMTE5MjAxLCAxMTkyMTIsIDExOTIyMywgMTE5MjMxLCAxMTkyMzksIDExOTI0OCwgMTE5MjU3LCAxMTkyNjUsIAorICAgIDExOTI3MiwgMTE5MjgwLCAxMTkyODgsIDExOTI5NSwgMTE5MzAyLCAxMTkzMTEsIDExOTMyMCwgMTE5MzI5LCAxMTkzMzgsIAorICAgIDExOTM0NywgMCwgMTE5MzU2LCAxMTkzNjcsIDExOTM3NCwgMTE5MzgyLCAxMTkzOTAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDExOTM5OCwgMTE5NDA3LCAxMTk0MTQsIDExOTQyMSwgMTE5NDMwLCAxMTk0MzcsIDExOTQ0NCwgCisgICAgMTE5NDUxLCAxMTk0NjEsIDExOTQ2OCwgMTE5NDc1LCAxMTk0ODIsIDExOTQ5MCwgMTE5NDk3LCAxMTk1MDQsIDExOTUxMSwgCisgICAgMTE5NTIyLCAxMTk1MjksIDExOTUzNiwgMTE5NTQzLCAxMTk1NTAsIDExOTU1NywgMTE5NTY2LCAxMTk1NzMsIDExOTU3OSwgCisgICAgMTE5NTg2LCAxMTk1OTUsIDExOTYwMiwgMTE5NjA5LCAxMTk2MTYsIDExOTYyNiwgMTE5NjMzLCAxMTk2NDAsIDExOTY1MCwgCisgICAgMTE5NjYwLCAxMTk2NjcsIDExOTY3NCwgMTE5NjgxLCAxMTk2ODgsIDExOTY5NSwgMTE5NzAyLCAxMTk3MTEsIDExOTcxOCwgCisgICAgMTE5NzI1LCAxMTk3MzEsIDExOTczOSwgMTE5NzQ4LCAxMTk3NTcsIDExOTc2OCwgMTE5Nzc2LCAxMTk3ODUsIDExOTc5NCwgCisgICAgMTE5ODAzLCAxMTk4MTIsIDExOTgxOSwgMTE5ODI2LCAxMTk4MzUsIDExOTg0NywgMTE5ODU3LCAxMTk4NjQsIDExOTg3MSwgCisgICAgMTE5ODgxLCAxMTk4OTEsIDExOTkwMCwgMTE5OTEwLCAxMTk5MTcsIDExOTkyNywgMTE5OTM0LCAxMTk5NDEsIDExOTk0OCwgCisgICAgMTE5OTU4LCAxMTk5NjgsIDExOTk3NSwgMTE5OTgyLCAxMTk5OTIsIDExOTk5OCwgMTIwMDA5LCAxMjAwMTgsIDEyMDAyOCwgCisgICAgMTIwMDM2LCAxMjAwNDksIDEyMDA1NiwgMTIwMDYyLCAxMjAwNzAsIDEyMDA3NywgMTIwMDg3LCAxMjAwOTEsIDEyMDA5NSwgCisgICAgMTIwMDk5LCAxMjAxMDMsIDEyMDEwNywgMTIwMTExLCAxMjAxMTUsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzUsIDEyMDEzOSwgCisgICAgMTIwMTQzLCAxMjAxNDcsIDEyMDE1MSwgMTIwMTU1LCAxMjAxNTksIDEyMDE2MywgMTIwMTY3LCAxMjAxNzEsIDEyMDE3NSwgCisgICAgMTIwMTc5LCAxMjAxODMsIDEyMDE4NywgMTIwMTkxLCAxMjAxOTUsIDEyMDE5OSwgMTIwMjAzLCAxMjAyMDcsIDEyMDIxMSwgCisgICAgMTIwMjE4LCAxMjAyMjUsIDEyMDIzNSwgMTIwMjQ4LCAxMjAyNTgsIDEyMDI2MiwgMTIwMjY2LCAxMjAyNzAsIDEyMDI3NCwgCisgICAgMTIwMjc4LCAxMjAyODIsIDEyMDI4NiwgMTIwMjkwLCAxMjAyOTQsIDEyMDI5OCwgMTIwMzAyLCAxMjAzMDksIDEyMDMxNiwgCisgICAgMTIwMzI3LCAxMjAzMzQsIDEyMDM0MCwgMTIwMzQ3LCAxMjAzNTQsIDEyMDM2MSwgMTIwMzY4LCAxMjAzNzUsIDEyMDM3OSwgCisgICAgMTIwMzgzLCAxMjAzOTAsIDEyMDM5NywgMTIwNDA0LCAxMjA0MTMsIDEyMDQyMCwgMTIwNDMzLCAxMjA0NDMsIDEyMDQ1MCwgCisgICAgMTIwNDU3LCAxMjA0NjEsIDEyMDQ2NSwgMTIwNDc0LCAxMjA0ODEsIDEyMDQ4OCwgMTIwNDk1LCAxMjA1MDgsIDEyMDUxNSwgCisgICAgMTIwNTIyLCAxMjA1MzIsIDEyMDU0MiwgMTIwNTUxLCAxMjA1NTgsIDEyMDU2NSwgMTIwNTcyLCAxMjA1NzksIDEyMDU4NiwgCisgICAgMTIwNTkzLCAxMjA2MDMsIDEyMDYwOSwgMTIwNjE3LCAxMjA2MjQsIDEyMDYzMiwgMTIwNjM5LCAxMjA2NTAsIDEyMDY1NywgCisgICAgMTIwNjYzLCAxMjA2NzAsIDEyMDY3NywgMTIwNjg0LCAxMjA2OTEsIDEyMDcwMSwgMTIwNzExLCAxMjA3MTgsIDEyMDcyNSwgCisgICAgMTIwNzM0LCAxMjA3NDIsIDEyMDc0OCwgMTIwNzU1LCAxMjA3NjIsIDEyMDc2OSwgMTIwNzc2LCAxMjA3ODAsIDEyMDc5MCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTEwMCwxMjYgKzIwMjU1LDEyNiBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDExODMwMCwgMTE4MzA0LCAxMTgzMDgsIDExODMxMiwgCi0gICAgMTE4MzE2LCAxMTgzMjAsIDExODMyNCwgMTE4MzI4LCAxMTgzMzIsIDExODMzNiwgMTE4MzQwLCAxMTgzNDQsIDExODM0OCwgCi0gICAgMTE4MzUyLCAxMTgzNTYsIDExODM2MCwgMTE4MzY0LCAxMTgzNjgsIDExODM3MiwgMTE4Mzc2LCAxMTgzODAsIDExODM4NCwgCi0gICAgMTE4Mzg4LCAxMTgzOTIsIDExODM5NiwgMTE4NDAwLCAxMTg0MDQsIDExODQwOCwgMTE4NDEyLCAxMTg0MTYsIDExODQyMCwgCi0gICAgMTE4NDI0LCAxMTg0MjgsIDExODQzMiwgMTE4NDM2LCAxMTg0NDAsIDExODQ0NCwgMTE4NDQ4LCAxMTg0NTIsIDExODQ1NiwgCi0gICAgMTE4NDYwLCAxMTg0NjQsIDExODQ2OCwgMTE4NDcyLCAxMTg0NzYsIDExODQ4MCwgMTE4NDg0LCAxMTg0ODgsIDExODQ5MiwgCi0gICAgMTE4NDk2LCAxMTg1MDAsIDExODUwNCwgMTE4NTA4LCAxMTg1MTIsIDExODUxNiwgMTE4NTIwLCAxMTg1MjQsIDExODUyOCwgCi0gICAgMTE4NTMyLCAxMTg1MzYsIDExODU0MCwgMTE4NTQ0LCAxMTg1NDgsIDExODU1MiwgMTE4NTU2LCAxMTg1NjAsIDExODU2NCwgCi0gICAgMTE4NTY4LCAxMTg1NzIsIDExODU3NiwgMTE4NTgwLCAxMTg1ODQsIDExODU4OCwgMTE4NTkyLCAxMTg1OTYsIDExODYwMCwgCi0gICAgMTE4NjA0LCAxMTg2MDgsIDExODYxMiwgMTE4NjE2LCAxMTg2MjAsIDExODYyNCwgMTE4NjI4LCAxMTg2MzIsIDExODYzNiwgCi0gICAgMTE4NjQwLCAxMTg2NDQsIDExODY0OCwgMTE4NjUyLCAxMTg2NTYsIDExODY2MCwgMTE4NjY0LCAxMTg2NjgsIDExODY3MiwgCi0gICAgMTE4Njc2LCAxMTg2ODAsIDExODY4NCwgMTE4Njg4LCAxMTg2OTIsIDExODY5NiwgMTE4NzAwLCAxMTg3MDQsIDExODcwOCwgCi0gICAgMTE4NzEyLCAxMTg3MTYsIDExODcyMCwgMTE4NzI0LCAxMTg3MjgsIDExODczMiwgMTE4NzM2LCAxMTg3NDAsIDExODc0NCwgCi0gICAgMTE4NzQ4LCAxMTg3NTIsIDExODc1NiwgMTE4NzYwLCAxMTg3NjQsIDExODc2OCwgMTE4NzcyLCAxMTg3NzYsIDExODc4MCwgCi0gICAgMTE4Nzg0LCAxMTg3ODgsIDExODc5MiwgMTE4Nzk2LCAxMTg4MDAsIDExODgwNCwgMTE4ODA4LCAxMTg4MTIsIDExODgxNiwgCi0gICAgMTE4ODIwLCAxMTg4MjQsIDExODgyOCwgMTE4ODMyLCAxMTg4MzYsIDExODg0MCwgMTE4ODQ0LCAxMTg4NDgsIDExODg1MiwgCi0gICAgMTE4ODU2LCAxMTg4NjAsIDExODg2NCwgMTE4ODY4LCAxMTg4NzIsIDExODg3NiwgMTE4ODgwLCAxMTg4ODQsIDExODg4OCwgCi0gICAgMTE4ODkyLCAxMTg4OTYsIDExODkwMCwgMTE4OTA0LCAxMTg5MDgsIDExODkxMiwgMTE4OTE2LCAxMTg5MjAsIDExODkyNCwgCi0gICAgMTE4OTI4LCAxMTg5MzIsIDExODkzNiwgMTE4OTQwLCAxMTg5NDQsIDExODk0OCwgMTE4OTUyLCAxMTg5NTYsIDExODk2MCwgCi0gICAgMTE4OTY0LCAxMTg5NjgsIDExODk3MiwgMTE4OTc2LCAxMTg5ODAsIDExODk4NCwgMTE4OTg4LCAxMTg5OTIsIDExODk5NiwgCi0gICAgMTE5MDAwLCAxMTkwMDQsIDExOTAwOCwgMTE5MDEyLCAxMTkwMTYsIDExOTAyMCwgMTE5MDI0LCAxMTkwMjgsIDExOTAzMiwgCi0gICAgMTE5MDM2LCAxMTkwNDAsIDExOTA0NCwgMTE5MDQ4LCAxMTkwNTIsIDExOTA1NiwgMTE5MDYwLCAxMTkwNjQsIDExOTA2OCwgCi0gICAgMTE5MDcyLCAxMTkwNzYsIDExOTA4MCwgMTE5MDg0LCAxMTkwODgsIDExOTA5MiwgMTE5MDk2LCAxMTkxMDAsIDExOTEwNCwgCi0gICAgMTE5MTA4LCAxMTkxMTIsIDExOTExNiwgMTE5MTIwLCAxMTkxMjQsIDExOTEyOCwgMTE5MTMyLCAxMTkxMzYsIDExOTE0MCwgCi0gICAgMTE5MTQ0LCAxMTkxNDgsIDExOTE1MiwgMTE5MTU2LCAxMTkxNjAsIDExOTE2NCwgMTE5MTY4LCAxMTkxNzIsIDExOTE3NiwgCi0gICAgMTE5MTgwLCAxMTkxODQsIDExOTE4OCwgMTE5MTkyLCAxMTkxOTYsIDExOTIwMCwgMTE5MjA0LCAxMTkyMDgsIDExOTIxMiwgCi0gICAgMTE5MjE2LCAxMTkyMjAsIDExOTIyNCwgMTE5MjI4LCAxMTkyMzIsIDExOTIzNiwgMTE5MjQwLCAxMTkyNDQsIDExOTI0OCwgCi0gICAgMTE5MjUyLCAxMTkyNTYsIDExOTI2MCwgMTE5MjY0LCAxMTkyNjgsIDExOTI3MiwgMTE5Mjc2LCAxMTkyODAsIDExOTI4NCwgCi0gICAgMTE5Mjg4LCAxMTkyOTIsIDExOTI5NiwgMTE5MzAwLCAxMTkzMDQsIDExOTMwOCwgMTE5MzEyLCAxMTkzMTYsIDExOTMyMCwgCi0gICAgMTE5MzI0LCAxMTkzMjgsIDExOTMzMiwgMTE5MzM2LCAxMTkzNDAsIDExOTM0NCwgMTE5MzQ4LCAxMTkzNTIsIDExOTM1NiwgCi0gICAgMTE5MzYwLCAxMTkzNjQsIDExOTM2OCwgMTE5MzcyLCAxMTkzNzYsIDExOTM4MCwgMTE5Mzg0LCAxMTkzODgsIDExOTM5MiwgCi0gICAgMTE5Mzk2LCAxMTk0MDAsIDExOTQwNCwgMTE5NDA4LCAxMTk0MTIsIDExOTQxNiwgMTE5NDIwLCAxMTk0MjQsIDExOTQyOCwgCi0gICAgMTE5NDMyLCAxMTk0MzYsIDExOTQ0MCwgMTE5NDQ0LCAxMTk0NDgsIDExOTQ1MiwgMTE5NDU2LCAxMTk0NjAsIDExOTQ2NCwgCi0gICAgMTE5NDY4LCAxMTk0NzIsIDExOTQ3NiwgMTE5NDgwLCAxMTk0ODQsIDExOTQ4OCwgMTE5NDkyLCAxMTk0OTYsIDExOTUwMCwgCi0gICAgMTE5NTA0LCAxMTk1MDgsIDExOTUxMiwgMTE5NTE2LCAxMTk1MjAsIDExOTUyNCwgMTE5NTI4LCAxMTk1MzIsIDExOTUzNiwgCi0gICAgMTE5NTQwLCAxMTk1NDQsIDExOTU0OCwgMTE5NTUyLCAxMTk1NTYsIDExOTU2MCwgMTE5NTY0LCAxMTk1NjgsIDExOTU3MiwgCi0gICAgMTE5NTc2LCAxMTk1ODAsIDExOTU4NCwgMTE5NTg4LCAxMTk1OTIsIDExOTU5NiwgMTE5NjAwLCAxMTk2MDQsIDExOTYwOCwgCi0gICAgMTE5NjEyLCAxMTk2MTYsIDExOTYyMCwgMTE5NjI0LCAxMTk2MjgsIDExOTYzMiwgMTE5NjM2LCAxMTk2NDAsIDExOTY0NCwgCi0gICAgMTE5NjQ4LCAxMTk2NTIsIDExOTY1NiwgMTE5NjYwLCAxMTk2NjQsIDExOTY2OCwgMTE5NjcyLCAxMTk2NzYsIDExOTY4MCwgCi0gICAgMTE5Njg0LCAxMTk2ODgsIDExOTY5MiwgMTE5Njk2LCAxMTk3MDAsIDExOTcwNCwgMTE5NzA4LCAxMTk3MTIsIDExOTcxNiwgCi0gICAgMTE5NzIwLCAxMTk3MjQsIDExOTcyOCwgMTE5NzMyLCAxMTk3MzYsIDExOTc0MCwgMTE5NzQ0LCAxMTk3NDgsIDExOTc1MiwgCi0gICAgMTE5NzU2LCAxMTk3NjAsIDExOTc2NCwgMTE5NzY4LCAxMTk3NzIsIDExOTc3NiwgMTE5NzgwLCAxMTk3ODQsIDExOTc4OCwgCi0gICAgMTE5NzkyLCAxMTk3OTYsIDExOTgwMCwgMTE5ODA0LCAxMTk4MDgsIDExOTgxMiwgMTE5ODE2LCAxMTk4MjAsIDExOTgyNCwgCi0gICAgMTE5ODI4LCAxMTk4MzIsIDExOTgzNiwgMTE5ODQwLCAxMTk4NDQsIDExOTg0OCwgMTE5ODUyLCAxMTk4NTYsIDExOTg2MCwgCi0gICAgMTE5ODY0LCAxMTk4NjgsIDExOTg3MiwgMTE5ODc2LCAxMTk4ODAsIDExOTg4NCwgMTE5ODg4LCAxMTk4OTIsIDExOTg5NiwgCi0gICAgMTE5OTAwLCAxMTk5MDQsIDExOTkwOCwgMTE5OTEyLCAxMTk5MTYsIDExOTkyMCwgMTE5OTI0LCAxMTk5MjgsIDExOTkzMiwgCi0gICAgMTE5OTM2LCAxMTk5NDAsIDExOTk0NCwgMTE5OTQ4LCAxMTk5NTIsIDExOTk1NiwgMTE5OTYwLCAxMTk5NjQsIDExOTk2OCwgCi0gICAgMTE5OTcyLCAxMTk5NzYsIDExOTk4MCwgMTE5OTg0LCAxMTk5ODgsIDExOTk5MiwgMTE5OTk2LCAxMjAwMDAsIDEyMDAwNCwgCi0gICAgMTIwMDA4LCAxMjAwMTIsIDEyMDAxNiwgMTIwMDIwLCAxMjAwMjQsIDEyMDAyOCwgMTIwMDMyLCAxMjAwMzYsIDEyMDA0MCwgCi0gICAgMTIwMDQ0LCAxMjAwNDgsIDEyMDA1MiwgMTIwMDU2LCAxMjAwNjAsIDEyMDA2NCwgMTIwMDY4LCAxMjAwNzIsIDEyMDA3NiwgCi0gICAgMTIwMDgwLCAxMjAwODQsIDEyMDA4OCwgMTIwMDkyLCAxMjAwOTYsIDEyMDEwMCwgMTIwMTA0LCAxMjAxMDgsIDEyMDExMiwgCi0gICAgMTIwMTE2LCAxMjAxMjAsIDEyMDEyNCwgMTIwMTI4LCAxMjAxMzIsIDEyMDEzNiwgMTIwMTQwLCAxMjAxNDQsIDEyMDE0OCwgCi0gICAgMTIwMTUyLCAxMjAxNTYsIDEyMDE2MCwgMTIwMTY0LCAxMjAxNjgsIDEyMDE3MiwgMTIwMTc2LCAxMjAxODAsIDEyMDE4NCwgCi0gICAgMTIwMTg4LCAxMjAxOTIsIDEyMDE5NiwgMTIwMjAwLCAxMjAyMDQsIDEyMDIwOCwgMTIwMjEyLCAxMjAyMTYsIDEyMDIyMCwgCi0gICAgMTIwMjI0LCAxMjAyMjgsIDEyMDIzMiwgMTIwMjM2LCAxMjAyNDAsIDEyMDI0NCwgMTIwMjQ4LCAxMjAyNTIsIDEyMDI1NiwgCi0gICAgMTIwMjYwLCAxMjAyNjQsIDEyMDI2OCwgMTIwMjcyLCAxMjAyNzYsIDEyMDI4MCwgMTIwMjg0LCAxMjAyODgsIDEyMDI5MiwgCi0gICAgMTIwMjk2LCAxMjAzMDAsIDEyMDMwNCwgMTIwMzA4LCAxMjAzMTIsIDEyMDMxNiwgMTIwMzIwLCAxMjAzMjQsIDEyMDMyOCwgCi0gICAgMTIwMzMyLCAxMjAzMzYsIDEyMDM0MCwgMTIwMzQ0LCAxMjAzNDgsIDEyMDM1MiwgMTIwMzU2LCAxMjAzNjAsIDEyMDM2NCwgCi0gICAgMTIwMzY4LCAxMjAzNzIsIDEyMDM3NiwgMTIwMzgwLCAxMjAzODQsIDEyMDM4OCwgMTIwMzkyLCAxMjAzOTYsIDEyMDQwMCwgCi0gICAgMTIwNDA0LCAxMjA0MDgsIDEyMDQxMiwgMTIwNDE2LCAxMjA0MjAsIDEyMDQyNCwgMTIwNDI4LCAxMjA0MzIsIDEyMDQzNiwgCi0gICAgMTIwNDQwLCAxMjA0NDQsIDEyMDQ0OCwgMTIwNDUyLCAxMjA0NTYsIDEyMDQ2MCwgMTIwNDY0LCAxMjA0NjgsIDEyMDQ3MiwgCi0gICAgMTIwNDc2LCAxMjA0ODAsIDEyMDQ4NCwgMTIwNDg4LCAxMjA0OTIsIDEyMDQ5NiwgMTIwNTAwLCAxMjA1MDQsIDEyMDUwOCwgCi0gICAgMTIwNTEyLCAxMjA1MTYsIDEyMDUyMCwgMTIwNTI0LCAxMjA1MjgsIDEyMDUzMiwgMTIwNTM2LCAxMjA1NDAsIDEyMDU0NCwgCi0gICAgMTIwNTQ4LCAxMjA1NTIsIDEyMDU1NiwgMTIwNTYwLCAxMjA1NjQsIDEyMDU2OCwgMTIwNTcyLCAxMjA1NzYsIDEyMDU4MCwgCi0gICAgMTIwNTg0LCAxMjA1ODgsIDEyMDU5MiwgMTIwNTk2LCAxMjA2MDAsIDEyMDYwNCwgMTIwNjA4LCAxMjA2MTIsIDEyMDYxNiwgCi0gICAgMTIwNjIwLCAxMjA2MjQsIDEyMDYyOCwgMTIwNjMyLCAxMjA2MzYsIDEyMDY0MCwgMTIwNjQ0LCAxMjA2NDgsIDEyMDY1MiwgCi0gICAgMTIwNjU2LCAxMjA2NjAsIDEyMDY2NCwgMTIwNjY4LCAxMjA2NzIsIDEyMDY3NiwgMTIwNjgwLCAxMjA2ODQsIDEyMDY4OCwgCi0gICAgMTIwNjkyLCAxMjA2OTYsIDEyMDcwMCwgMTIwNzA0LCAxMjA3MDgsIDEyMDcxMiwgMTIwNzE2LCAxMjA3MjAsIDEyMDcyNCwgCi0gICAgMTIwNzI4LCAxMjA3MzIsIDEyMDczNiwgMTIwNzQwLCAxMjA3NDQsIDEyMDc0OCwgMTIwNzUyLCAxMjA3NTYsIDEyMDc2MCwgCi0gICAgMTIwNzY0LCAxMjA3NjgsIDEyMDc3MiwgMTIwNzc2LCAxMjA3ODAsIDEyMDc4NCwgMTIwNzg4LCAxMjA3OTIsIDEyMDc5NiwgCi0gICAgMTIwODAwLCAxMjA4MDQsIDEyMDgwOCwgMTIwODEyLCAxMjA4MTYsIDEyMDgyMCwgMTIwODI0LCAxMjA4MjgsIDEyMDgzMiwgCi0gICAgMTIwODM2LCAxMjA4NDAsIDEyMDg0NCwgMTIwODQ4LCAxMjA4NTIsIDEyMDg1NiwgMTIwODYwLCAxMjA4NjQsIDEyMDg2OCwgCi0gICAgMTIwODcyLCAxMjA4NzYsIDEyMDg4MCwgMTIwODg0LCAxMjA4ODgsIDEyMDg5MiwgMTIwODk2LCAxMjA5MDAsIDEyMDkwNCwgCi0gICAgMTIwOTA4LCAxMjA5MTIsIDEyMDkxNiwgMTIwOTIwLCAxMjA5MjQsIDEyMDkyOCwgMTIwOTMyLCAxMjA5MzYsIDEyMDk0MCwgCi0gICAgMTIwOTQ0LCAxMjA5NDgsIDEyMDk1MiwgMTIwOTU2LCAxMjA5NjAsIDEyMDk2NCwgMTIwOTY4LCAxMjA5NzIsIDEyMDk3NiwgCi0gICAgMTIwOTgwLCAxMjA5ODQsIDEyMDk4OCwgMTIwOTkyLCAxMjA5OTYsIDEyMTAwMCwgMTIxMDA0LCAxMjEwMDgsIDEyMTAxMiwgCi0gICAgMTIxMDE2LCAxMjEwMjAsIDEyMTAyNCwgMTIxMDI4LCAxMjEwMzIsIDEyMTAzNiwgMTIxMDQwLCAxMjEwNDQsIDEyMTA0OCwgCi0gICAgMTIxMDUyLCAxMjEwNTYsIDEyMTA2MCwgMTIxMDY0LCAxMjEwNjgsIDEyMTA3MiwgMTIxMDc2LCAxMjEwODAsIDEyMTA4NCwgCi0gICAgMTIxMDg4LCAxMjEwOTIsIDEyMTA5NiwgMTIxMTAwLCAxMjExMDQsIDEyMTEwOCwgMTIxMTEyLCAxMjExMTYsIDEyMTEyMCwgCi0gICAgMTIxMTI0LCAxMjExMjgsIDEyMTEzMiwgMTIxMTM2LCAxMjExNDAsIDEyMTE0NCwgMTIxMTQ4LCAxMjExNTIsIDEyMTE1NiwgCi0gICAgMTIxMTYwLCAxMjExNjQsIDEyMTE2OCwgMTIxMTcyLCAxMjExNzYsIDEyMTE4MCwgMTIxMTg0LCAxMjExODgsIDEyMTE5MiwgCi0gICAgMTIxMTk2LCAxMjEyMDAsIDEyMTIwNCwgMTIxMjA4LCAxMjEyMTIsIDEyMTIxNiwgMTIxMjIwLCAxMjEyMjQsIDEyMTIyOCwgCi0gICAgMTIxMjMyLCAxMjEyMzYsIDEyMTI0MCwgMTIxMjQ0LCAxMjEyNDgsIDEyMTI1MiwgMTIxMjU2LCAxMjEyNjAsIDEyMTI2NCwgCi0gICAgMTIxMjY4LCAxMjEyNzIsIDEyMTI3NiwgMTIxMjgwLCAxMjEyODQsIDEyMTI4OCwgMTIxMjkyLCAxMjEyOTYsIDEyMTMwMCwgCi0gICAgMTIxMzA0LCAxMjEzMDgsIDEyMTMxMiwgMTIxMzE2LCAxMjEzMjAsIDEyMTMyNCwgMTIxMzI4LCAxMjEzMzIsIDEyMTMzNiwgCi0gICAgMTIxMzQwLCAxMjEzNDQsIDEyMTM0OCwgMTIxMzUyLCAxMjEzNTYsIDEyMTM2MCwgMTIxMzY0LCAxMjEzNjgsIDEyMTM3MiwgCi0gICAgMTIxMzc2LCAxMjEzODAsIDEyMTM4NCwgMTIxMzg4LCAxMjEzOTIsIDEyMTM5NiwgMTIxNDAwLCAxMjE0MDQsIDEyMTQwOCwgCi0gICAgMTIxNDEyLCAxMjE0MTYsIDEyMTQyMCwgMTIxNDI0LCAxMjE0MjgsIDEyMTQzMiwgMTIxNDM2LCAxMjE0NDAsIDEyMTQ0NCwgCi0gICAgMTIxNDQ4LCAxMjE0NTIsIDEyMTQ1NiwgMTIxNDYwLCAxMjE0NjQsIDEyMTQ2OCwgMTIxNDcyLCAxMjE0NzYsIDEyMTQ4MCwgCi0gICAgMTIxNDg0LCAxMjE0ODgsIDEyMTQ5MiwgMTIxNDk2LCAxMjE1MDAsIDEyMTUwNCwgMTIxNTA4LCAxMjE1MTIsIDEyMTUxNiwgCi0gICAgMTIxNTIwLCAxMjE1MjQsIDEyMTUyOCwgMTIxNTMyLCAxMjE1MzYsIDEyMTU0MCwgMTIxNTQ0LCAxMjE1NDgsIDEyMTU1MiwgCi0gICAgMTIxNTU2LCAxMjE1NjAsIDEyMTU2NCwgMTIxNTY4LCAxMjE1NzIsIDEyMTU3NiwgMTIxNTgwLCAxMjE1ODQsIDEyMTU4OCwgCi0gICAgMTIxNTkyLCAxMjE1OTYsIDEyMTYwMCwgMTIxNjA0LCAxMjE2MDgsIDEyMTYxMiwgMTIxNjE2LCAxMjE2MjAsIDEyMTYyNCwgCi0gICAgMTIxNjI4LCAxMjE2MzIsIDEyMTYzNiwgMTIxNjQwLCAxMjE2NDQsIDEyMTY0OCwgMTIxNjUyLCAxMjE2NTYsIDEyMTY2MCwgCi0gICAgMTIxNjY0LCAxMjE2NjgsIDEyMTY3MiwgMTIxNjc2LCAxMjE2ODAsIDEyMTY4NCwgMTIxNjg4LCAxMjE2OTIsIDEyMTY5NiwgCi0gICAgMTIxNzAwLCAxMjE3MDQsIDEyMTcwOCwgMTIxNzEyLCAxMjE3MTYsIDEyMTcyMCwgMTIxNzI0LCAxMjE3MjgsIDEyMTczMiwgCi0gICAgMTIxNzM2LCAxMjE3NDAsIDEyMTc0NCwgMTIxNzQ4LCAxMjE3NTIsIDEyMTc1NiwgMTIxNzYwLCAxMjE3NjQsIDEyMTc2OCwgCi0gICAgMTIxNzcyLCAxMjE3NzYsIDEyMTc4MCwgMTIxNzg0LCAxMjE3ODgsIDEyMTc5MiwgMTIxNzk2LCAxMjE4MDAsIDEyMTgwNCwgCi0gICAgMTIxODA4LCAxMjE4MTIsIDEyMTgxNiwgMTIxODIwLCAxMjE4MjQsIDEyMTgyOCwgMTIxODMyLCAxMjE4MzYsIDEyMTg0MCwgCi0gICAgMTIxODQ0LCAxMjE4NDgsIDEyMTg1MiwgMTIxODU2LCAxMjE4NjAsIDEyMTg2NCwgMTIxODY4LCAxMjE4NzIsIDEyMTg3NiwgCi0gICAgMTIxODgwLCAxMjE4ODQsIDEyMTg4OCwgMTIxODkyLCAxMjE4OTYsIDEyMTkwMCwgMTIxOTA0LCAxMjE5MDgsIDEyMTkxMiwgCi0gICAgMTIxOTE2LCAxMjE5MjAsIDEyMTkyNCwgMTIxOTI4LCAxMjE5MzIsIDEyMTkzNiwgMTIxOTQwLCAxMjE5NDQsIDEyMTk0OCwgCi0gICAgMTIxOTUyLCAxMjE5NTYsIDEyMTk2MCwgMTIxOTY0LCAxMjE5NjgsIDEyMTk3MiwgMTIxOTc2LCAxMjE5ODAsIDEyMTk4NCwgCi0gICAgMTIxOTg4LCAxMjE5OTIsIDEyMTk5NiwgMTIyMDAwLCAxMjIwMDQsIDEyMjAwOCwgMTIyMDEyLCAxMjIwMTYsIDEyMjAyMCwgCi0gICAgMTIyMDI0LCAxMjIwMjgsIDEyMjAzMiwgMTIyMDM2LCAxMjIwNDAsIDEyMjA0NCwgMTIyMDQ4LCAxMjIwNTIsIDEyMjA1NiwgCi0gICAgMTIyMDYwLCAxMjIwNjQsIDEyMjA2OCwgMTIyMDcyLCAxMjIwNzYsIDEyMjA4MCwgMTIyMDg0LCAxMjIwODgsIDEyMjA5MiwgCi0gICAgMTIyMDk2LCAxMjIxMDAsIDEyMjEwNCwgMTIyMTA4LCAxMjIxMTIsIDEyMjExNiwgMTIyMTIwLCAxMjIxMjQsIDEyMjEyOCwgCi0gICAgMTIyMTMyLCAxMjIxMzYsIDEyMjE0MCwgMTIyMTQ0LCAxMjIxNDgsIDEyMjE1MiwgMTIyMTU2LCAxMjIxNjAsIDEyMjE2NCwgCi0gICAgMTIyMTY4LCAxMjIxNzIsIDEyMjE3NiwgMTIyMTgwLCAxMjIxODQsIDEyMjE4OCwgMTIyMTkyLCAxMjIxOTYsIDEyMjIwMCwgCi0gICAgMTIyMjA0LCAxMjIyMDgsIDEyMjIxMiwgMTIyMjE2LCAxMjIyMjAsIDEyMjIyNCwgMTIyMjI4LCAxMjIyMzIsIDEyMjIzNiwgCi0gICAgMTIyMjQwLCAxMjIyNDQsIDEyMjI0OCwgMTIyMjUyLCAxMjIyNTYsIDEyMjI2MCwgMTIyMjY0LCAxMjIyNjgsIDEyMjI3MiwgCi0gICAgMTIyMjc2LCAxMjIyODAsIDEyMjI4NCwgMTIyMjg4LCAxMjIyOTIsIDEyMjI5NiwgMTIyMzAwLCAxMjIzMDQsIDEyMjMwOCwgCi0gICAgMTIyMzEyLCAxMjIzMTYsIDEyMjMyMCwgMTIyMzI0LCAxMjIzMjgsIDEyMjMzMiwgMTIyMzM2LCAxMjIzNDAsIDEyMjM0NCwgCi0gICAgMTIyMzQ4LCAxMjIzNTIsIDEyMjM1NiwgMTIyMzYwLCAxMjIzNjQsIDEyMjM2OCwgMTIyMzcyLCAxMjIzNzYsIDEyMjM4MCwgCi0gICAgMTIyMzg0LCAxMjIzODgsIDEyMjM5MiwgMTIyMzk2LCAxMjI0MDAsIDEyMjQwNCwgMTIyNDA4LCAxMjI0MTIsIDEyMjQxNiwgCi0gICAgMTIyNDIwLCAxMjI0MjQsIDEyMjQyOCwgMTIyNDMyLCAxMjI0MzYsIDEyMjQ0MCwgMTIyNDQ0LCAxMjI0NDgsIDEyMjQ1MiwgCi0gICAgMTIyNDU2LCAxMjI0NjAsIDEyMjQ2NCwgMTIyNDY4LCAxMjI0NzIsIDEyMjQ3NiwgMTIyNDgwLCAxMjI0ODQsIDEyMjQ4OCwgCi0gICAgMTIyNDkyLCAxMjI0OTYsIDEyMjUwMCwgMTIyNTA0LCAxMjI1MDgsIDEyMjUxMiwgMTIyNTE2LCAxMjI1MjAsIDEyMjUyNCwgCi0gICAgMTIyNTI4LCAxMjI1MzIsIDEyMjUzNiwgMTIyNTQwLCAxMjI1NDQsIDEyMjU0OCwgMTIyNTUyLCAxMjI1NTYsIDEyMjU2MCwgCi0gICAgMTIyNTY0LCAxMjI1NjgsIDEyMjU3MiwgMTIyNTc2LCAxMjI1ODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyMDgwMCwgCisgICAgMTIwODA0LCAxMjA4MDgsIDEyMDgxMiwgMTIwODE2LCAxMjA4MjAsIDEyMDgyNCwgMTIwODI4LCAxMjA4MzIsIDEyMDgzNiwgCisgICAgMTIwODQwLCAxMjA4NDQsIDEyMDg0OCwgMTIwODUyLCAxMjA4NTYsIDEyMDg2MCwgMTIwODY0LCAxMjA4NjgsIDEyMDg3MiwgCisgICAgMTIwODc2LCAxMjA4ODAsIDEyMDg4NCwgMTIwODg4LCAxMjA4OTIsIDEyMDg5NiwgMTIwOTAwLCAxMjA5MDQsIDEyMDkwOCwgCisgICAgMTIwOTEyLCAxMjA5MTYsIDEyMDkyMCwgMTIwOTI0LCAxMjA5MjgsIDEyMDkzMiwgMTIwOTM2LCAxMjA5NDAsIDEyMDk0NCwgCisgICAgMTIwOTQ4LCAxMjA5NTIsIDEyMDk1NiwgMTIwOTYwLCAxMjA5NjQsIDEyMDk2OCwgMTIwOTcyLCAxMjA5NzYsIDEyMDk4MCwgCisgICAgMTIwOTg0LCAxMjA5ODgsIDEyMDk5MiwgMTIwOTk2LCAxMjEwMDAsIDEyMTAwNCwgMTIxMDA4LCAxMjEwMTIsIDEyMTAxNiwgCisgICAgMTIxMDIwLCAxMjEwMjQsIDEyMTAyOCwgMTIxMDMyLCAxMjEwMzYsIDEyMTA0MCwgMTIxMDQ0LCAxMjEwNDgsIDEyMTA1MiwgCisgICAgMTIxMDU2LCAxMjEwNjAsIDEyMTA2NCwgMTIxMDY4LCAxMjEwNzIsIDEyMTA3NiwgMTIxMDgwLCAxMjEwODQsIDEyMTA4OCwgCisgICAgMTIxMDkyLCAxMjEwOTYsIDEyMTEwMCwgMTIxMTA0LCAxMjExMDgsIDEyMTExMiwgMTIxMTE2LCAxMjExMjAsIDEyMTEyNCwgCisgICAgMTIxMTI4LCAxMjExMzIsIDEyMTEzNiwgMTIxMTQwLCAxMjExNDQsIDEyMTE0OCwgMTIxMTUyLCAxMjExNTYsIDEyMTE2MCwgCisgICAgMTIxMTY0LCAxMjExNjgsIDEyMTE3MiwgMTIxMTc2LCAxMjExODAsIDEyMTE4NCwgMTIxMTg4LCAxMjExOTIsIDEyMTE5NiwgCisgICAgMTIxMjAwLCAxMjEyMDQsIDEyMTIwOCwgMTIxMjEyLCAxMjEyMTYsIDEyMTIyMCwgMTIxMjI0LCAxMjEyMjgsIDEyMTIzMiwgCisgICAgMTIxMjM2LCAxMjEyNDAsIDEyMTI0NCwgMTIxMjQ4LCAxMjEyNTIsIDEyMTI1NiwgMTIxMjYwLCAxMjEyNjQsIDEyMTI2OCwgCisgICAgMTIxMjcyLCAxMjEyNzYsIDEyMTI4MCwgMTIxMjg0LCAxMjEyODgsIDEyMTI5MiwgMTIxMjk2LCAxMjEzMDAsIDEyMTMwNCwgCisgICAgMTIxMzA4LCAxMjEzMTIsIDEyMTMxNiwgMTIxMzIwLCAxMjEzMjQsIDEyMTMyOCwgMTIxMzMyLCAxMjEzMzYsIDEyMTM0MCwgCisgICAgMTIxMzQ0LCAxMjEzNDgsIDEyMTM1MiwgMTIxMzU2LCAxMjEzNjAsIDEyMTM2NCwgMTIxMzY4LCAxMjEzNzIsIDEyMTM3NiwgCisgICAgMTIxMzgwLCAxMjEzODQsIDEyMTM4OCwgMTIxMzkyLCAxMjEzOTYsIDEyMTQwMCwgMTIxNDA0LCAxMjE0MDgsIDEyMTQxMiwgCisgICAgMTIxNDE2LCAxMjE0MjAsIDEyMTQyNCwgMTIxNDI4LCAxMjE0MzIsIDEyMTQzNiwgMTIxNDQwLCAxMjE0NDQsIDEyMTQ0OCwgCisgICAgMTIxNDUyLCAxMjE0NTYsIDEyMTQ2MCwgMTIxNDY0LCAxMjE0NjgsIDEyMTQ3MiwgMTIxNDc2LCAxMjE0ODAsIDEyMTQ4NCwgCisgICAgMTIxNDg4LCAxMjE0OTIsIDEyMTQ5NiwgMTIxNTAwLCAxMjE1MDQsIDEyMTUwOCwgMTIxNTEyLCAxMjE1MTYsIDEyMTUyMCwgCisgICAgMTIxNTI0LCAxMjE1MjgsIDEyMTUzMiwgMTIxNTM2LCAxMjE1NDAsIDEyMTU0NCwgMTIxNTQ4LCAxMjE1NTIsIDEyMTU1NiwgCisgICAgMTIxNTYwLCAxMjE1NjQsIDEyMTU2OCwgMTIxNTcyLCAxMjE1NzYsIDEyMTU4MCwgMTIxNTg0LCAxMjE1ODgsIDEyMTU5MiwgCisgICAgMTIxNTk2LCAxMjE2MDAsIDEyMTYwNCwgMTIxNjA4LCAxMjE2MTIsIDEyMTYxNiwgMTIxNjIwLCAxMjE2MjQsIDEyMTYyOCwgCisgICAgMTIxNjMyLCAxMjE2MzYsIDEyMTY0MCwgMTIxNjQ0LCAxMjE2NDgsIDEyMTY1MiwgMTIxNjU2LCAxMjE2NjAsIDEyMTY2NCwgCisgICAgMTIxNjY4LCAxMjE2NzIsIDEyMTY3NiwgMTIxNjgwLCAxMjE2ODQsIDEyMTY4OCwgMTIxNjkyLCAxMjE2OTYsIDEyMTcwMCwgCisgICAgMTIxNzA0LCAxMjE3MDgsIDEyMTcxMiwgMTIxNzE2LCAxMjE3MjAsIDEyMTcyNCwgMTIxNzI4LCAxMjE3MzIsIDEyMTczNiwgCisgICAgMTIxNzQwLCAxMjE3NDQsIDEyMTc0OCwgMTIxNzUyLCAxMjE3NTYsIDEyMTc2MCwgMTIxNzY0LCAxMjE3NjgsIDEyMTc3MiwgCisgICAgMTIxNzc2LCAxMjE3ODAsIDEyMTc4NCwgMTIxNzg4LCAxMjE3OTIsIDEyMTc5NiwgMTIxODAwLCAxMjE4MDQsIDEyMTgwOCwgCisgICAgMTIxODEyLCAxMjE4MTYsIDEyMTgyMCwgMTIxODI0LCAxMjE4MjgsIDEyMTgzMiwgMTIxODM2LCAxMjE4NDAsIDEyMTg0NCwgCisgICAgMTIxODQ4LCAxMjE4NTIsIDEyMTg1NiwgMTIxODYwLCAxMjE4NjQsIDEyMTg2OCwgMTIxODcyLCAxMjE4NzYsIDEyMTg4MCwgCisgICAgMTIxODg0LCAxMjE4ODgsIDEyMTg5MiwgMTIxODk2LCAxMjE5MDAsIDEyMTkwNCwgMTIxOTA4LCAxMjE5MTIsIDEyMTkxNiwgCisgICAgMTIxOTIwLCAxMjE5MjQsIDEyMTkyOCwgMTIxOTMyLCAxMjE5MzYsIDEyMTk0MCwgMTIxOTQ0LCAxMjE5NDgsIDEyMTk1MiwgCisgICAgMTIxOTU2LCAxMjE5NjAsIDEyMTk2NCwgMTIxOTY4LCAxMjE5NzIsIDEyMTk3NiwgMTIxOTgwLCAxMjE5ODQsIDEyMTk4OCwgCisgICAgMTIxOTkyLCAxMjE5OTYsIDEyMjAwMCwgMTIyMDA0LCAxMjIwMDgsIDEyMjAxMiwgMTIyMDE2LCAxMjIwMjAsIDEyMjAyNCwgCisgICAgMTIyMDI4LCAxMjIwMzIsIDEyMjAzNiwgMTIyMDQwLCAxMjIwNDQsIDEyMjA0OCwgMTIyMDUyLCAxMjIwNTYsIDEyMjA2MCwgCisgICAgMTIyMDY0LCAxMjIwNjgsIDEyMjA3MiwgMTIyMDc2LCAxMjIwODAsIDEyMjA4NCwgMTIyMDg4LCAxMjIwOTIsIDEyMjA5NiwgCisgICAgMTIyMTAwLCAxMjIxMDQsIDEyMjEwOCwgMTIyMTEyLCAxMjIxMTYsIDEyMjEyMCwgMTIyMTI0LCAxMjIxMjgsIDEyMjEzMiwgCisgICAgMTIyMTM2LCAxMjIxNDAsIDEyMjE0NCwgMTIyMTQ4LCAxMjIxNTIsIDEyMjE1NiwgMTIyMTYwLCAxMjIxNjQsIDEyMjE2OCwgCisgICAgMTIyMTcyLCAxMjIxNzYsIDEyMjE4MCwgMTIyMTg0LCAxMjIxODgsIDEyMjE5MiwgMTIyMTk2LCAxMjIyMDAsIDEyMjIwNCwgCisgICAgMTIyMjA4LCAxMjIyMTIsIDEyMjIxNiwgMTIyMjIwLCAxMjIyMjQsIDEyMjIyOCwgMTIyMjMyLCAxMjIyMzYsIDEyMjI0MCwgCisgICAgMTIyMjQ0LCAxMjIyNDgsIDEyMjI1MiwgMTIyMjU2LCAxMjIyNjAsIDEyMjI2NCwgMTIyMjY4LCAxMjIyNzIsIDEyMjI3NiwgCisgICAgMTIyMjgwLCAxMjIyODQsIDEyMjI4OCwgMTIyMjkyLCAxMjIyOTYsIDEyMjMwMCwgMTIyMzA0LCAxMjIzMDgsIDEyMjMxMiwgCisgICAgMTIyMzE2LCAxMjIzMjAsIDEyMjMyNCwgMTIyMzI4LCAxMjIzMzIsIDEyMjMzNiwgMTIyMzQwLCAxMjIzNDQsIDEyMjM0OCwgCisgICAgMTIyMzUyLCAxMjIzNTYsIDEyMjM2MCwgMTIyMzY0LCAxMjIzNjgsIDEyMjM3MiwgMTIyMzc2LCAxMjIzODAsIDEyMjM4NCwgCisgICAgMTIyMzg4LCAxMjIzOTIsIDEyMjM5NiwgMTIyNDAwLCAxMjI0MDQsIDEyMjQwOCwgMTIyNDEyLCAxMjI0MTYsIDEyMjQyMCwgCisgICAgMTIyNDI0LCAxMjI0MjgsIDEyMjQzMiwgMTIyNDM2LCAxMjI0NDAsIDEyMjQ0NCwgMTIyNDQ4LCAxMjI0NTIsIDEyMjQ1NiwgCisgICAgMTIyNDYwLCAxMjI0NjQsIDEyMjQ2OCwgMTIyNDcyLCAxMjI0NzYsIDEyMjQ4MCwgMTIyNDg0LCAxMjI0ODgsIDEyMjQ5MiwgCisgICAgMTIyNDk2LCAxMjI1MDAsIDEyMjUwNCwgMTIyNTA4LCAxMjI1MTIsIDEyMjUxNiwgMTIyNTIwLCAxMjI1MjQsIDEyMjUyOCwgCisgICAgMTIyNTMyLCAxMjI1MzYsIDEyMjU0MCwgMTIyNTQ0LCAxMjI1NDgsIDEyMjU1MiwgMTIyNTU2LCAxMjI1NjAsIDEyMjU2NCwgCisgICAgMTIyNTY4LCAxMjI1NzIsIDEyMjU3NiwgMTIyNTgwLCAxMjI1ODQsIDEyMjU4OCwgMTIyNTkyLCAxMjI1OTYsIDEyMjYwMCwgCisgICAgMTIyNjA0LCAxMjI2MDgsIDEyMjYxMiwgMTIyNjE2LCAxMjI2MjAsIDEyMjYyNCwgMTIyNjI4LCAxMjI2MzIsIDEyMjYzNiwgCisgICAgMTIyNjQwLCAxMjI2NDQsIDEyMjY0OCwgMTIyNjUyLCAxMjI2NTYsIDEyMjY2MCwgMTIyNjY0LCAxMjI2NjgsIDEyMjY3MiwgCisgICAgMTIyNjc2LCAxMjI2ODAsIDEyMjY4NCwgMTIyNjg4LCAxMjI2OTIsIDEyMjY5NiwgMTIyNzAwLCAxMjI3MDQsIDEyMjcwOCwgCisgICAgMTIyNzEyLCAxMjI3MTYsIDEyMjcyMCwgMTIyNzI0LCAxMjI3MjgsIDEyMjczMiwgMTIyNzM2LCAxMjI3NDAsIDEyMjc0NCwgCisgICAgMTIyNzQ4LCAxMjI3NTIsIDEyMjc1NiwgMTIyNzYwLCAxMjI3NjQsIDEyMjc2OCwgMTIyNzcyLCAxMjI3NzYsIDEyMjc4MCwgCisgICAgMTIyNzg0LCAxMjI3ODgsIDEyMjc5MiwgMTIyNzk2LCAxMjI4MDAsIDEyMjgwNCwgMTIyODA4LCAxMjI4MTIsIDEyMjgxNiwgCisgICAgMTIyODIwLCAxMjI4MjQsIDEyMjgyOCwgMTIyODMyLCAxMjI4MzYsIDEyMjg0MCwgMTIyODQ0LCAxMjI4NDgsIDEyMjg1MiwgCisgICAgMTIyODU2LCAxMjI4NjAsIDEyMjg2NCwgMTIyODY4LCAxMjI4NzIsIDEyMjg3NiwgMTIyODgwLCAxMjI4ODQsIDEyMjg4OCwgCisgICAgMTIyODkyLCAxMjI4OTYsIDEyMjkwMCwgMTIyOTA0LCAxMjI5MDgsIDEyMjkxMiwgMTIyOTE2LCAxMjI5MjAsIDEyMjkyNCwgCisgICAgMTIyOTI4LCAxMjI5MzIsIDEyMjkzNiwgMTIyOTQwLCAxMjI5NDQsIDEyMjk0OCwgMTIyOTUyLCAxMjI5NTYsIDEyMjk2MCwgCisgICAgMTIyOTY0LCAxMjI5NjgsIDEyMjk3MiwgMTIyOTc2LCAxMjI5ODAsIDEyMjk4NCwgMTIyOTg4LCAxMjI5OTIsIDEyMjk5NiwgCisgICAgMTIzMDAwLCAxMjMwMDQsIDEyMzAwOCwgMTIzMDEyLCAxMjMwMTYsIDEyMzAyMCwgMTIzMDI0LCAxMjMwMjgsIDEyMzAzMiwgCisgICAgMTIzMDM2LCAxMjMwNDAsIDEyMzA0NCwgMTIzMDQ4LCAxMjMwNTIsIDEyMzA1NiwgMTIzMDYwLCAxMjMwNjQsIDEyMzA2OCwgCisgICAgMTIzMDcyLCAxMjMwNzYsIDEyMzA4MCwgMTIzMDg0LCAxMjMwODgsIDEyMzA5MiwgMTIzMDk2LCAxMjMxMDAsIDEyMzEwNCwgCisgICAgMTIzMTA4LCAxMjMxMTIsIDEyMzExNiwgMTIzMTIwLCAxMjMxMjQsIDEyMzEyOCwgMTIzMTMyLCAxMjMxMzYsIDEyMzE0MCwgCisgICAgMTIzMTQ0LCAxMjMxNDgsIDEyMzE1MiwgMTIzMTU2LCAxMjMxNjAsIDEyMzE2NCwgMTIzMTY4LCAxMjMxNzIsIDEyMzE3NiwgCisgICAgMTIzMTgwLCAxMjMxODQsIDEyMzE4OCwgMTIzMTkyLCAxMjMxOTYsIDEyMzIwMCwgMTIzMjA0LCAxMjMyMDgsIDEyMzIxMiwgCisgICAgMTIzMjE2LCAxMjMyMjAsIDEyMzIyNCwgMTIzMjI4LCAxMjMyMzIsIDEyMzIzNiwgMTIzMjQwLCAxMjMyNDQsIDEyMzI0OCwgCisgICAgMTIzMjUyLCAxMjMyNTYsIDEyMzI2MCwgMTIzMjY0LCAxMjMyNjgsIDEyMzI3MiwgMTIzMjc2LCAxMjMyODAsIDEyMzI4NCwgCisgICAgMTIzMjg4LCAxMjMyOTIsIDEyMzI5NiwgMTIzMzAwLCAxMjMzMDQsIDEyMzMwOCwgMTIzMzEyLCAxMjMzMTYsIDEyMzMyMCwgCisgICAgMTIzMzI0LCAxMjMzMjgsIDEyMzMzMiwgMTIzMzM2LCAxMjMzNDAsIDEyMzM0NCwgMTIzMzQ4LCAxMjMzNTIsIDEyMzM1NiwgCisgICAgMTIzMzYwLCAxMjMzNjQsIDEyMzM2OCwgMTIzMzcyLCAxMjMzNzYsIDEyMzM4MCwgMTIzMzg0LCAxMjMzODgsIDEyMzM5MiwgCisgICAgMTIzMzk2LCAxMjM0MDAsIDEyMzQwNCwgMTIzNDA4LCAxMjM0MTIsIDEyMzQxNiwgMTIzNDIwLCAxMjM0MjQsIDEyMzQyOCwgCisgICAgMTIzNDMyLCAxMjM0MzYsIDEyMzQ0MCwgMTIzNDQ0LCAxMjM0NDgsIDEyMzQ1MiwgMTIzNDU2LCAxMjM0NjAsIDEyMzQ2NCwgCisgICAgMTIzNDY4LCAxMjM0NzIsIDEyMzQ3NiwgMTIzNDgwLCAxMjM0ODQsIDEyMzQ4OCwgMTIzNDkyLCAxMjM0OTYsIDEyMzUwMCwgCisgICAgMTIzNTA0LCAxMjM1MDgsIDEyMzUxMiwgMTIzNTE2LCAxMjM1MjAsIDEyMzUyNCwgMTIzNTI4LCAxMjM1MzIsIDEyMzUzNiwgCisgICAgMTIzNTQwLCAxMjM1NDQsIDEyMzU0OCwgMTIzNTUyLCAxMjM1NTYsIDEyMzU2MCwgMTIzNTY0LCAxMjM1NjgsIDEyMzU3MiwgCisgICAgMTIzNTc2LCAxMjM1ODAsIDEyMzU4NCwgMTIzNTg4LCAxMjM1OTIsIDEyMzU5NiwgMTIzNjAwLCAxMjM2MDQsIDEyMzYwOCwgCisgICAgMTIzNjEyLCAxMjM2MTYsIDEyMzYyMCwgMTIzNjI0LCAxMjM2MjgsIDEyMzYzMiwgMTIzNjM2LCAxMjM2NDAsIDEyMzY0NCwgCisgICAgMTIzNjQ4LCAxMjM2NTIsIDEyMzY1NiwgMTIzNjYwLCAxMjM2NjQsIDEyMzY2OCwgMTIzNjcyLCAxMjM2NzYsIDEyMzY4MCwgCisgICAgMTIzNjg0LCAxMjM2ODgsIDEyMzY5MiwgMTIzNjk2LCAxMjM3MDAsIDEyMzcwNCwgMTIzNzA4LCAxMjM3MTIsIDEyMzcxNiwgCisgICAgMTIzNzIwLCAxMjM3MjQsIDEyMzcyOCwgMTIzNzMyLCAxMjM3MzYsIDEyMzc0MCwgMTIzNzQ0LCAxMjM3NDgsIDEyMzc1MiwgCisgICAgMTIzNzU2LCAxMjM3NjAsIDEyMzc2NCwgMTIzNzY4LCAxMjM3NzIsIDEyMzc3NiwgMTIzNzgwLCAxMjM3ODQsIDEyMzc4OCwgCisgICAgMTIzNzkyLCAxMjM3OTYsIDEyMzgwMCwgMTIzODA0LCAxMjM4MDgsIDEyMzgxMiwgMTIzODE2LCAxMjM4MjAsIDEyMzgyNCwgCisgICAgMTIzODI4LCAxMjM4MzIsIDEyMzgzNiwgMTIzODQwLCAxMjM4NDQsIDEyMzg0OCwgMTIzODUyLCAxMjM4NTYsIDEyMzg2MCwgCisgICAgMTIzODY0LCAxMjM4NjgsIDEyMzg3MiwgMTIzODc2LCAxMjM4ODAsIDEyMzg4NCwgMTIzODg4LCAxMjM4OTIsIDEyMzg5NiwgCisgICAgMTIzOTAwLCAxMjM5MDQsIDEyMzkwOCwgMTIzOTEyLCAxMjM5MTYsIDEyMzkyMCwgMTIzOTI0LCAxMjM5MjgsIDEyMzkzMiwgCisgICAgMTIzOTM2LCAxMjM5NDAsIDEyMzk0NCwgMTIzOTQ4LCAxMjM5NTIsIDEyMzk1NiwgMTIzOTYwLCAxMjM5NjQsIDEyMzk2OCwgCisgICAgMTIzOTcyLCAxMjM5NzYsIDEyMzk4MCwgMTIzOTg0LCAxMjM5ODgsIDEyMzk5MiwgMTIzOTk2LCAxMjQwMDAsIDEyNDAwNCwgCisgICAgMTI0MDA4LCAxMjQwMTIsIDEyNDAxNiwgMTI0MDIwLCAxMjQwMjQsIDEyNDAyOCwgMTI0MDMyLCAxMjQwMzYsIDEyNDA0MCwgCisgICAgMTI0MDQ0LCAxMjQwNDgsIDEyNDA1MiwgMTI0MDU2LCAxMjQwNjAsIDEyNDA2NCwgMTI0MDY4LCAxMjQwNzIsIDEyNDA3NiwgCisgICAgMTI0MDgwLCAxMjQwODQsIDEyNDA4OCwgMTI0MDkyLCAxMjQwOTYsIDEyNDEwMCwgMTI0MTA0LCAxMjQxMDgsIDEyNDExMiwgCisgICAgMTI0MTE2LCAxMjQxMjAsIDEyNDEyNCwgMTI0MTI4LCAxMjQxMzIsIDEyNDEzNiwgMTI0MTQwLCAxMjQxNDQsIDEyNDE0OCwgCisgICAgMTI0MTUyLCAxMjQxNTYsIDEyNDE2MCwgMTI0MTY0LCAxMjQxNjgsIDEyNDE3MiwgMTI0MTc2LCAxMjQxODAsIDEyNDE4NCwgCisgICAgMTI0MTg4LCAxMjQxOTIsIDEyNDE5NiwgMTI0MjAwLCAxMjQyMDQsIDEyNDIwOCwgMTI0MjEyLCAxMjQyMTYsIDEyNDIyMCwgCisgICAgMTI0MjI0LCAxMjQyMjgsIDEyNDIzMiwgMTI0MjM2LCAxMjQyNDAsIDEyNDI0NCwgMTI0MjQ4LCAxMjQyNTIsIDEyNDI1NiwgCisgICAgMTI0MjYwLCAxMjQyNjQsIDEyNDI2OCwgMTI0MjcyLCAxMjQyNzYsIDEyNDI4MCwgMTI0Mjg0LCAxMjQyODgsIDEyNDI5MiwgCisgICAgMTI0Mjk2LCAxMjQzMDAsIDEyNDMwNCwgMTI0MzA4LCAxMjQzMTIsIDEyNDMxNiwgMTI0MzIwLCAxMjQzMjQsIDEyNDMyOCwgCisgICAgMTI0MzMyLCAxMjQzMzYsIDEyNDM0MCwgMTI0MzQ0LCAxMjQzNDgsIDEyNDM1MiwgMTI0MzU2LCAxMjQzNjAsIDEyNDM2NCwgCisgICAgMTI0MzY4LCAxMjQzNzIsIDEyNDM3NiwgMTI0MzgwLCAxMjQzODQsIDEyNDM4OCwgMTI0MzkyLCAxMjQzOTYsIDEyNDQwMCwgCisgICAgMTI0NDA0LCAxMjQ0MDgsIDEyNDQxMiwgMTI0NDE2LCAxMjQ0MjAsIDEyNDQyNCwgMTI0NDI4LCAxMjQ0MzIsIDEyNDQzNiwgCisgICAgMTI0NDQwLCAxMjQ0NDQsIDEyNDQ0OCwgMTI0NDUyLCAxMjQ0NTYsIDEyNDQ2MCwgMTI0NDY0LCAxMjQ0NjgsIDEyNDQ3MiwgCisgICAgMTI0NDc2LCAxMjQ0ODAsIDEyNDQ4NCwgMTI0NDg4LCAxMjQ0OTIsIDEyNDQ5NiwgMTI0NTAwLCAxMjQ1MDQsIDEyNDUwOCwgCisgICAgMTI0NTEyLCAxMjQ1MTYsIDEyNDUyMCwgMTI0NTI0LCAxMjQ1MjgsIDEyNDUzMiwgMTI0NTM2LCAxMjQ1NDAsIDEyNDU0NCwgCisgICAgMTI0NTQ4LCAxMjQ1NTIsIDEyNDU1NiwgMTI0NTYwLCAxMjQ1NjQsIDEyNDU2OCwgMTI0NTcyLCAxMjQ1NzYsIDEyNDU4MCwgCisgICAgMTI0NTg0LCAxMjQ1ODgsIDEyNDU5MiwgMTI0NTk2LCAxMjQ2MDAsIDEyNDYwNCwgMTI0NjA4LCAxMjQ2MTIsIDEyNDYxNiwgCisgICAgMTI0NjIwLCAxMjQ2MjQsIDEyNDYyOCwgMTI0NjMyLCAxMjQ2MzYsIDEyNDY0MCwgMTI0NjQ0LCAxMjQ2NDgsIDEyNDY1MiwgCisgICAgMTI0NjU2LCAxMjQ2NjAsIDEyNDY2NCwgMTI0NjY4LCAxMjQ2NzIsIDEyNDY3NiwgMTI0NjgwLCAxMjQ2ODQsIDEyNDY4OCwgCisgICAgMTI0NjkyLCAxMjQ2OTYsIDEyNDcwMCwgMTI0NzA0LCAxMjQ3MDgsIDEyNDcxMiwgMTI0NzE2LCAxMjQ3MjAsIDEyNDcyNCwgCisgICAgMTI0NzI4LCAxMjQ3MzIsIDEyNDczNiwgMTI0NzQwLCAxMjQ3NDQsIDEyNDc0OCwgMTI0NzUyLCAxMjQ3NTYsIDEyNDc2MCwgCisgICAgMTI0NzY0LCAxMjQ3NjgsIDEyNDc3MiwgMTI0Nzc2LCAxMjQ3ODAsIDEyNDc4NCwgMTI0Nzg4LCAxMjQ3OTIsIDEyNDc5NiwgCisgICAgMTI0ODAwLCAxMjQ4MDQsIDEyNDgwOCwgMTI0ODEyLCAxMjQ4MTYsIDEyNDgyMCwgMTI0ODI0LCAxMjQ4MjgsIDEyNDgzMiwgCisgICAgMTI0ODM2LCAxMjQ4NDAsIDEyNDg0NCwgMTI0ODQ4LCAxMjQ4NTIsIDEyNDg1NiwgMTI0ODYwLCAxMjQ4NjQsIDEyNDg2OCwgCisgICAgMTI0ODcyLCAxMjQ4NzYsIDEyNDg4MCwgMTI0ODg0LCAxMjQ4ODgsIDEyNDg5MiwgMTI0ODk2LCAxMjQ5MDAsIDEyNDkwNCwgCisgICAgMTI0OTA4LCAxMjQ5MTIsIDEyNDkxNiwgMTI0OTIwLCAxMjQ5MjQsIDEyNDkyOCwgMTI0OTMyLCAxMjQ5MzYsIDEyNDk0MCwgCisgICAgMTI0OTQ0LCAxMjQ5NDgsIDEyNDk1MiwgMTI0OTU2LCAxMjQ5NjAsIDEyNDk2NCwgMTI0OTY4LCAxMjQ5NzIsIDEyNDk3NiwgCisgICAgMTI0OTgwLCAxMjQ5ODQsIDEyNDk4OCwgMTI0OTkyLCAxMjQ5OTYsIDEyNTAwMCwgMTI1MDA0LCAxMjUwMDgsIDEyNTAxMiwgCisgICAgMTI1MDE2LCAxMjUwMjAsIDEyNTAyNCwgMTI1MDI4LCAxMjUwMzIsIDEyNTAzNiwgMTI1MDQwLCAxMjUwNDQsIDEyNTA0OCwgCisgICAgMTI1MDUyLCAxMjUwNTYsIDEyNTA2MCwgMTI1MDY0LCAxMjUwNjgsIDEyNTA3MiwgMTI1MDc2LCAxMjUwODAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkyMjgsNzEgKzIwMzgzLDcyIEBACiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTIyNTg0LCAxMjI1ODgsIDEyMjU5MiwgMTIyNTk2LCAxMjI2MDAsIDEyMjYwNCwgMTIyNjA4LCAKLSAgICAxMjI2MTIsIDEyMjYxNiwgMTIyNjIwLCAxMjI2MjQsIDEyMjYyOCwgMTIyNjMyLCAxMjI2MzYsIDEyMjY0MCwgMTIyNjQ0LCAKLSAgICAxMjI2NDgsIDEyMjY1MiwgMTIyNjU2LCAxMjI2NjAsIDEyMjY2NCwgMTIyNjY4LCAxMjI2NzIsIDEyMjY3NiwgMTIyNjgwLCAKLSAgICAxMjI2ODQsIDEyMjY4OCwgMTIyNjkyLCAxMjI2OTYsIDEyMjcwMCwgMTIyNzA0LCAxMjI3MDgsIDEyMjcxMiwgMTIyNzE2LCAKLSAgICAxMjI3MjAsIDEyMjcyNCwgMTIyNzI4LCAxMjI3MzIsIDEyMjczNiwgMTIyNzQwLCAxMjI3NDQsIDEyMjc0OCwgMTIyNzUyLCAKLSAgICAxMjI3NTYsIDEyMjc2MCwgMTIyNzY0LCAxMjI3NjgsIDEyMjc3MiwgMTIyNzc2LCAxMjI3ODAsIDEyMjc4NCwgMTIyNzg4LCAKLSAgICAxMjI3OTIsIDEyMjc5NiwgMTIyODAwLCAxMjI4MDQsIDEyMjgwOCwgMTIyODEyLCAxMjI4MTYsIDEyMjgyMCwgMTIyODI0LCAKLSAgICAxMjI4MjgsIDEyMjgzMiwgMTIyODM2LCAxMjI4NDAsIDEyMjg0NCwgMTIyODQ4LCAxMjI4NTIsIDEyMjg1NiwgMTIyODYwLCAKLSAgICAxMjI4NjQsIDEyMjg2OCwgMTIyODcyLCAxMjI4NzYsIDEyMjg4MCwgMTIyODg0LCAxMjI4ODgsIDEyMjg5MiwgMTIyODk2LCAKLSAgICAxMjI5MDAsIDEyMjkwNCwgMTIyOTA4LCAxMjI5MTIsIDEyMjkxNiwgMTIyOTIwLCAxMjI5MjQsIDEyMjkyOCwgMTIyOTMyLCAKLSAgICAxMjI5MzYsIDEyMjk0MCwgMTIyOTQ0LCAxMjI5NDgsIDEyMjk1MiwgMTIyOTU2LCAxMjI5NjAsIDEyMjk2NCwgMTIyOTY4LCAKLSAgICAxMjI5NzIsIDEyMjk3NiwgMTIyOTgwLCAxMjI5ODQsIDEyMjk4OCwgMTIyOTkyLCAxMjI5OTYsIDEyMzAwMCwgMTIzMDA0LCAKLSAgICAxMjMwMDgsIDEyMzAxMiwgMTIzMDE2LCAxMjMwMjAsIDEyMzAyNCwgMTIzMDI4LCAxMjMwMzIsIDEyMzAzNiwgMTIzMDQwLCAKLSAgICAxMjMwNDQsIDEyMzA0OCwgMTIzMDUyLCAxMjMwNTYsIDEyMzA2MCwgMTIzMDY0LCAxMjMwNjgsIDEyMzA3MiwgMTIzMDc2LCAKLSAgICAxMjMwODAsIDEyMzA4NCwgMTIzMDg4LCAxMjMwOTIsIDEyMzA5NiwgMTIzMTAwLCAxMjMxMDQsIDEyMzEwOCwgMTIzMTEyLCAKLSAgICAxMjMxMTYsIDEyMzEyMCwgMTIzMTI0LCAxMjMxMjgsIDEyMzEzMiwgMTIzMTM2LCAxMjMxNDAsIDEyMzE0NCwgMTIzMTQ4LCAKLSAgICAxMjMxNTIsIDEyMzE1NiwgMTIzMTYwLCAxMjMxNjQsIDEyMzE2OCwgMTIzMTcyLCAxMjMxNzYsIDEyMzE4MCwgMTIzMTg0LCAKLSAgICAxMjMxODgsIDEyMzE5MiwgMTIzMTk2LCAxMjMyMDAsIDEyMzIwNCwgMTIzMjA4LCAxMjMyMTIsIDEyMzIxNiwgMTIzMjIwLCAKLSAgICAxMjMyMjQsIDEyMzIyOCwgMTIzMjMyLCAxMjMyMzYsIDEyMzI0MCwgMTIzMjQ0LCAxMjMyNDgsIDEyMzI1MiwgMTIzMjU2LCAKLSAgICAxMjMyNjAsIDEyMzI2NCwgMTIzMjY4LCAxMjMyNzIsIDEyMzI3NiwgMTIzMjgwLCAxMjMyODQsIDEyMzI4OCwgMTIzMjkyLCAKLSAgICAxMjMyOTYsIDEyMzMwMCwgMTIzMzA0LCAxMjMzMDgsIDEyMzMxMiwgMTIzMzE2LCAxMjMzMjAsIDEyMzMyNCwgMTIzMzI4LCAKLSAgICAxMjMzMzIsIDEyMzMzNiwgMTIzMzQwLCAxMjMzNDQsIDEyMzM0OCwgMTIzMzUyLCAxMjMzNTYsIDEyMzM2MCwgMTIzMzY0LCAKLSAgICAxMjMzNjgsIDEyMzM3MiwgMTIzMzc2LCAxMjMzODAsIDEyMzM4NCwgMTIzMzg4LCAxMjMzOTIsIDEyMzM5NiwgMTIzNDAwLCAKLSAgICAxMjM0MDQsIDEyMzQwOCwgMTIzNDEyLCAxMjM0MTYsIDEyMzQyMCwgMTIzNDI0LCAxMjM0MjgsIDEyMzQzMiwgMTIzNDM2LCAKLSAgICAxMjM0NDAsIDEyMzQ0NCwgMTIzNDQ4LCAxMjM0NTIsIDEyMzQ1NiwgMTIzNDYwLCAxMjM0NjQsIDEyMzQ2OCwgMTIzNDcyLCAKLSAgICAxMjM0NzYsIDEyMzQ4MCwgMTIzNDg0LCAxMjM0ODgsIDEyMzQ5MiwgMTIzNDk2LCAxMjM1MDAsIDEyMzUwNCwgMTIzNTA4LCAKLSAgICAxMjM1MTIsIDEyMzUxNiwgMTIzNTIwLCAxMjM1MjQsIDEyMzUyOCwgMTIzNTMyLCAxMjM1MzYsIDEyMzU0MCwgMTIzNTQ0LCAKLSAgICAxMjM1NDgsIDEyMzU1MiwgMTIzNTU2LCAxMjM1NjAsIDEyMzU2NCwgMTIzNTY4LCAxMjM1NzIsIDEyMzU3NiwgMTIzNTgwLCAKLSAgICAxMjM1ODQsIDEyMzU4OCwgMTIzNTkyLCAxMjM1OTYsIDEyMzYwMCwgMTIzNjA0LCAxMjM2MDgsIDEyMzYxMiwgMTIzNjE2LCAKLSAgICAxMjM2MjAsIDEyMzYyNCwgMTIzNjI4LCAxMjM2MzIsIDEyMzYzNiwgMTIzNjQwLCAxMjM2NDQsIDEyMzY0OCwgMTIzNjUyLCAKLSAgICAxMjM2NTYsIDEyMzY2MCwgMTIzNjY0LCAxMjM2NjgsIDEyMzY3MiwgMTIzNjc2LCAxMjM2ODAsIDEyMzY4NCwgMTIzNjg4LCAKLSAgICAxMjM2OTIsIDEyMzY5NiwgMTIzNzAwLCAxMjM3MDQsIDEyMzcwOCwgMTIzNzEyLCAxMjM3MTYsIDEyMzcyMCwgMTIzNzI0LCAKLSAgICAxMjM3MjgsIDEyMzczMiwgMTIzNzM2LCAxMjM3NDAsIDEyMzc0NCwgMTIzNzQ4LCAxMjM3NTIsIDEyMzc1NiwgMTIzNzYwLCAKLSAgICAxMjM3NjQsIDEyMzc2OCwgMTIzNzcyLCAxMjM3NzYsIDEyMzc4MCwgMTIzNzg0LCAxMjM3ODgsIDEyMzc5MiwgMTIzNzk2LCAKLSAgICAxMjM4MDAsIDEyMzgwNCwgMTIzODA4LCAxMjM4MTIsIDEyMzgxNiwgMTIzODIwLCAxMjM4MjQsIDEyMzgyOCwgMTIzODMyLCAKLSAgICAxMjM4MzYsIDEyMzg0MCwgMTIzODQ0LCAxMjM4NDgsIDEyMzg1MiwgMTIzODU2LCAxMjM4NjAsIDEyMzg2NCwgMTIzODY4LCAKLSAgICAxMjM4NzIsIDEyMzg3NiwgMTIzODgwLCAxMjM4ODQsIDEyMzg4OCwgMTIzODkyLCAxMjM4OTYsIDEyMzkwMCwgMTIzOTA0LCAKLSAgICAxMjM5MDgsIDEyMzkxMiwgMTIzOTE2LCAxMjM5MjAsIDEyMzkyNCwgMTIzOTI4LCAxMjM5MzIsIDEyMzkzNiwgMTIzOTQwLCAKLSAgICAxMjM5NDQsIDEyMzk0OCwgMTIzOTUyLCAxMjM5NTYsIDEyMzk2MCwgMTIzOTY0LCAxMjM5NjgsIDEyMzk3MiwgMTIzOTc2LCAKLSAgICAxMjM5ODAsIDEyMzk4NCwgMTIzOTg4LCAxMjM5OTIsIDEyMzk5NiwgMTI0MDAwLCAxMjQwMDQsIDEyNDAwOCwgMTI0MDEyLCAKLSAgICAxMjQwMTYsIDEyNDAyMCwgMTI0MDI0LCAxMjQwMjgsIDEyNDAzMiwgMTI0MDM2LCAxMjQwNDAsIDEyNDA0NCwgMTI0MDQ4LCAKLSAgICAxMjQwNTIsIDEyNDA1NiwgMTI0MDYwLCAxMjQwNjQsIDEyNDA2OCwgMTI0MDcyLCAxMjQwNzYsIDEyNDA4MCwgMTI0MDg0LCAKLSAgICAxMjQwODgsIDEyNDA5MiwgMTI0MDk2LCAxMjQxMDAsIDEyNDEwNCwgMTI0MTA4LCAxMjQxMTIsIDEyNDExNiwgMTI0MTIwLCAKLSAgICAxMjQxMjQsIDEyNDEyOCwgMTI0MTMyLCAxMjQxMzYsIDEyNDE0MCwgMTI0MTQ0LCAxMjQxNDgsIDEyNDE1MiwgMTI0MTU2LCAKLSAgICAxMjQxNjAsIDEyNDE2NCwgMTI0MTY4LCAxMjQxNzIsIDEyNDE3NiwgMTI0MTgwLCAxMjQxODQsIDEyNDE4OCwgMTI0MTkyLCAKLSAgICAxMjQxOTYsIDEyNDIwMCwgMTI0MjA0LCAxMjQyMDgsIDEyNDIxMiwgMTI0MjE2LCAxMjQyMjAsIDEyNDIyNCwgMTI0MjI4LCAKLSAgICAxMjQyMzIsIDEyNDIzNiwgMTI0MjQwLCAxMjQyNDQsIDEyNDI0OCwgMTI0MjUyLCAxMjQyNTYsIDEyNDI2MCwgMTI0MjY0LCAKLSAgICAxMjQyNjgsIDEyNDI3MiwgMTI0Mjc2LCAxMjQyODAsIDEyNDI4NCwgMTI0Mjg4LCAxMjQyOTIsIDEyNDI5NiwgMTI0MzAwLCAKLSAgICAxMjQzMDQsIDEyNDMwOCwgMTI0MzEyLCAxMjQzMTYsIDEyNDMyNiwgMTI0MzMwLCAxMjQzMzQsIDEyNDMzOCwgMTI0MzQyLCAKLSAgICAxMjQzNDYsIDEyNDM1MCwgMTI0MzU0LCAxMjQzNTgsIDEyNDM2MiwgMTI0MzY2LCAxMjQzNzAsIDEyNDM3NSwgMTI0Mzc5LCAKLSAgICAxMjQzODMsIDEyNDM4NywgMTI0MzkxLCAxMjQzOTUsIDEyNDM5OSwgMTI0NDAzLCAxMjQ0MDcsIDEyNDQxMSwgMTI0NDE1LCAKLSAgICAxMjQ0MTksIDEyNDQyMywgMTI0NDI3LCAxMjQ0MzEsIDEyNDQzNSwgMTI0NDM5LCAxMjQ0NDgsIDEyNDQ1NywgMTI0NDYxLCAKLSAgICAxMjQ0NjUsIDEyNDQ2OSwgMTI0NDczLCAxMjQ0NzcsIDEyNDQ4MSwgMTI0NDg1LCAxMjQ0ODksIDEyNDQ5MywgMTI0NDk3LCAKLSAgICAxMjQ1MDEsIDEyNDUwNSwgMTI0NTA5LCAxMjQ1MTMsIDEyNDUxNywgMTI0NTIxLCAxMjQ1MjUsIDEyNDUyOSwgMTI0NTMzLCAKLSAgICAxMjQ1MzcsIDEyNDU0MSwgMTI0NTQ1LCAxMjQ1NDksIDEyNDU1MywgMTI0NTU3LCAxMjQ1NjEsIDEyNDU2NSwgMTI0NTY5LCAKLSAgICAxMjQ1NzMsIDEyNDU3NywgMTI0NTgxLCAxMjQ1ODUsIDEyNDU4OSwgMTI0NTkzLCAxMjQ1OTcsIDEyNDYwMSwgMTI0NjA1LCAKLSAgICAxMjQ2MDksIDEyNDYxMywgMTI0NjE3LCAxMjQ2MjEsIDEyNDYyNSwgMTI0NjI5LCAxMjQ2MzMsIDEyNDYzNywgMTI0NjQxLCAKLSAgICAxMjQ2NDUsIDEyNDY0OSwgMTI0NjUzLCAxMjQ2NTcsIDEyNDY2MSwgMTI0NjY1LCAxMjQ2NjksIDEyNDY3MywgMTI0Njc3LCAKLSAgICAxMjQ2ODEsIDEyNDY4NSwgMTI0Njg5LCAxMjQ2OTMsIDEyNDY5NywgMTI0NzAxLCAxMjQ3MDUsIDEyNDcwOSwgMTI0NzEzLCAKLSAgICAxMjQ3MTcsIDEyNDcyMSwgMTI0NzI1LCAxMjQ3MjksIDEyNDczMywgMTI0NzM3LCAxMjQ3NDEsIDEyNDc0NSwgMTI0NzQ5LCAKLSAgICAxMjQ3NTMsIDEyNDc1NywgMTI0NzYxLCAxMjQ3NjUsIDEyNDc2OSwgMTI0NzczLCAxMjQ3NzcsIDEyNDc4MSwgMTI0Nzg1LCAKLSAgICAxMjQ3ODksIDEyNDc5MywgMTI0Nzk3LCAxMjQ4MDEsIDEyNDgwNSwgMTI0ODA5LCAxMjQ4MTMsIDEyNDgxNywgMTI0ODIxLCAKLSAgICAxMjQ4MjUsIDEyNDgyOSwgMTI0ODMzLCAxMjQ4MzcsIDEyNDg0MSwgMTI0ODQ1LCAxMjQ4NDksIDEyNDg1MywgMTI0ODU3LCAKLSAgICAxMjQ4NjEsIDEyNDg2NSwgMTI0ODY5LCAxMjQ4NzMsIDEyNDg3NywgMTI0ODgxLCAxMjQ4ODUsIDEyNDg4OSwgMTI0ODkzLCAKLSAgICAxMjQ4OTcsIDEyNDkwMSwgMTI0OTA1LCAxMjQ5MDksIDEyNDkxMywgMTI0OTE3LCAxMjQ5MjEsIDEyNDkyNSwgMTI0OTI5LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjUwODQsIDEyNTA4OCwgMTI1MDkyLCAxMjUwOTYsIAorICAgIDEyNTEwMCwgMTI1MTA0LCAxMjUxMDgsIDEyNTExMiwgMTI1MTE2LCAxMjUxMjAsIDEyNTEyNCwgMTI1MTI4LCAxMjUxMzIsIAorICAgIDEyNTEzNiwgMTI1MTQwLCAxMjUxNDQsIDEyNTE0OCwgMTI1MTUyLCAxMjUxNTYsIDEyNTE2MCwgMTI1MTY0LCAxMjUxNjgsIAorICAgIDEyNTE3MiwgMTI1MTc2LCAxMjUxODAsIDEyNTE4NCwgMTI1MTg4LCAxMjUxOTIsIDEyNTE5NiwgMTI1MjAwLCAxMjUyMDQsIAorICAgIDEyNTIwOCwgMTI1MjEyLCAxMjUyMTYsIDEyNTIyMCwgMTI1MjI0LCAxMjUyMjgsIDEyNTIzMiwgMTI1MjM2LCAxMjUyNDAsIAorICAgIDEyNTI0NCwgMTI1MjQ4LCAxMjUyNTIsIDEyNTI1NiwgMTI1MjYwLCAxMjUyNjQsIDEyNTI2OCwgMTI1MjcyLCAxMjUyNzYsIAorICAgIDEyNTI4MCwgMTI1Mjg0LCAxMjUyODgsIDEyNTI5MiwgMTI1Mjk2LCAxMjUzMDAsIDEyNTMwNCwgMTI1MzA4LCAxMjUzMTIsIAorICAgIDEyNTMxNiwgMTI1MzIwLCAxMjUzMjQsIDEyNTMyOCwgMTI1MzMyLCAxMjUzMzYsIDEyNTM0MCwgMTI1MzQ0LCAxMjUzNDgsIAorICAgIDEyNTM1MiwgMTI1MzU2LCAxMjUzNjAsIDEyNTM2NCwgMTI1MzY4LCAxMjUzNzIsIDEyNTM3NiwgMTI1MzgwLCAxMjUzODQsIAorICAgIDEyNTM4OCwgMTI1MzkyLCAxMjUzOTYsIDEyNTQwMCwgMTI1NDA0LCAxMjU0MDgsIDEyNTQxMiwgMTI1NDE2LCAxMjU0MjAsIAorICAgIDEyNTQyNCwgMTI1NDI4LCAxMjU0MzIsIDEyNTQzNiwgMTI1NDQwLCAxMjU0NDQsIDEyNTQ0OCwgMTI1NDUyLCAxMjU0NTYsIAorICAgIDEyNTQ2MCwgMTI1NDY0LCAxMjU0NjgsIDEyNTQ3MiwgMTI1NDc2LCAxMjU0ODAsIDEyNTQ4NCwgMTI1NDg4LCAxMjU0OTIsIAorICAgIDEyNTQ5NiwgMTI1NTAwLCAxMjU1MDQsIDEyNTUwOCwgMTI1NTEyLCAxMjU1MTYsIDEyNTUyMCwgMTI1NTI0LCAxMjU1MjgsIAorICAgIDEyNTUzMiwgMTI1NTM2LCAxMjU1NDAsIDEyNTU0NCwgMTI1NTQ4LCAxMjU1NTIsIDEyNTU1NiwgMTI1NTYwLCAxMjU1NjQsIAorICAgIDEyNTU2OCwgMTI1NTcyLCAxMjU1NzYsIDEyNTU4MCwgMTI1NTg0LCAxMjU1ODgsIDEyNTU5MiwgMTI1NTk2LCAxMjU2MDAsIAorICAgIDEyNTYwNCwgMTI1NjA4LCAxMjU2MTIsIDEyNTYxNiwgMTI1NjIwLCAxMjU2MjQsIDEyNTYyOCwgMTI1NjMyLCAxMjU2MzYsIAorICAgIDEyNTY0MCwgMTI1NjQ0LCAxMjU2NDgsIDEyNTY1MiwgMTI1NjU2LCAxMjU2NjAsIDEyNTY2NCwgMTI1NjY4LCAxMjU2NzIsIAorICAgIDEyNTY3NiwgMTI1NjgwLCAxMjU2ODQsIDEyNTY4OCwgMTI1NjkyLCAxMjU2OTYsIDEyNTcwMCwgMTI1NzA0LCAxMjU3MDgsIAorICAgIDEyNTcxMiwgMTI1NzE2LCAxMjU3MjAsIDEyNTcyNCwgMTI1NzI4LCAxMjU3MzIsIDEyNTczNiwgMTI1NzQwLCAxMjU3NDQsIAorICAgIDEyNTc0OCwgMTI1NzUyLCAxMjU3NTYsIDEyNTc2MCwgMTI1NzY0LCAxMjU3NjgsIDEyNTc3MiwgMTI1Nzc2LCAxMjU3ODAsIAorICAgIDEyNTc4NCwgMTI1Nzg4LCAxMjU3OTIsIDEyNTc5NiwgMTI1ODAwLCAxMjU4MDQsIDEyNTgwOCwgMTI1ODEyLCAxMjU4MTYsIAorICAgIDEyNTgyMCwgMTI1ODI0LCAxMjU4MjgsIDEyNTgzMiwgMTI1ODM2LCAxMjU4NDAsIDEyNTg0NCwgMTI1ODQ4LCAxMjU4NTIsIAorICAgIDEyNTg1NiwgMTI1ODYwLCAxMjU4NjQsIDEyNTg2OCwgMTI1ODcyLCAxMjU4NzYsIDEyNTg4MCwgMTI1ODg0LCAxMjU4ODgsIAorICAgIDEyNTg5MiwgMTI1ODk2LCAxMjU5MDAsIDEyNTkwNCwgMTI1OTA4LCAxMjU5MTIsIDEyNTkxNiwgMTI1OTIwLCAxMjU5MjQsIAorICAgIDEyNTkyOCwgMTI1OTMyLCAxMjU5MzYsIDEyNTk0MCwgMTI1OTQ0LCAxMjU5NDgsIDEyNTk1MiwgMTI1OTU2LCAxMjU5NjAsIAorICAgIDEyNTk2NCwgMTI1OTY4LCAxMjU5NzIsIDEyNTk3NiwgMTI1OTgwLCAxMjU5ODQsIDEyNTk4OCwgMTI1OTkyLCAxMjU5OTYsIAorICAgIDEyNjAwMCwgMTI2MDA0LCAxMjYwMDgsIDEyNjAxMiwgMTI2MDE2LCAxMjYwMjAsIDEyNjAyNCwgMTI2MDI4LCAxMjYwMzIsIAorICAgIDEyNjAzNiwgMTI2MDQwLCAxMjYwNDQsIDEyNjA0OCwgMTI2MDUyLCAxMjYwNTYsIDEyNjA2MCwgMTI2MDY0LCAxMjYwNjgsIAorICAgIDEyNjA3MiwgMTI2MDc2LCAxMjYwODAsIDEyNjA4NCwgMTI2MDg4LCAxMjYwOTIsIDEyNjA5NiwgMTI2MTAwLCAxMjYxMDQsIAorICAgIDEyNjEwOCwgMTI2MTEyLCAxMjYxMTYsIDEyNjEyMCwgMTI2MTI0LCAxMjYxMjgsIDEyNjEzMiwgMTI2MTM2LCAxMjYxNDAsIAorICAgIDEyNjE0NCwgMTI2MTQ4LCAxMjYxNTIsIDEyNjE1NiwgMTI2MTYwLCAxMjYxNjQsIDEyNjE2OCwgMTI2MTcyLCAxMjYxNzYsIAorICAgIDEyNjE4MCwgMTI2MTg0LCAxMjYxODgsIDEyNjE5MiwgMTI2MTk2LCAxMjYyMDAsIDEyNjIwNCwgMTI2MjA4LCAxMjYyMTIsIAorICAgIDEyNjIxNiwgMTI2MjIwLCAxMjYyMjQsIDEyNjIyOCwgMTI2MjMyLCAxMjYyMzYsIDEyNjI0MCwgMTI2MjQ0LCAxMjYyNDgsIAorICAgIDEyNjI1MiwgMTI2MjU2LCAxMjYyNjAsIDEyNjI2NCwgMTI2MjY4LCAxMjYyNzIsIDEyNjI3NiwgMTI2MjgwLCAxMjYyODQsIAorICAgIDEyNjI4OCwgMTI2MjkyLCAxMjYyOTYsIDEyNjMwMCwgMTI2MzA0LCAxMjYzMDgsIDEyNjMxMiwgMTI2MzE2LCAxMjYzMjAsIAorICAgIDEyNjMyNCwgMTI2MzI4LCAxMjYzMzIsIDEyNjMzNiwgMTI2MzQwLCAxMjYzNDQsIDEyNjM0OCwgMTI2MzUyLCAxMjYzNTYsIAorICAgIDEyNjM2MCwgMTI2MzY0LCAxMjYzNjgsIDEyNjM3MiwgMTI2Mzc2LCAxMjYzODAsIDEyNjM4NCwgMTI2Mzg4LCAxMjYzOTIsIAorICAgIDEyNjM5NiwgMTI2NDAwLCAxMjY0MDQsIDEyNjQwOCwgMTI2NDEyLCAxMjY0MTYsIDEyNjQyMCwgMTI2NDI0LCAxMjY0MjgsIAorICAgIDEyNjQzMiwgMTI2NDM2LCAxMjY0NDAsIDEyNjQ0NCwgMTI2NDQ4LCAxMjY0NTIsIDEyNjQ1NiwgMTI2NDYwLCAxMjY0NjQsIAorICAgIDEyNjQ2OCwgMTI2NDcyLCAxMjY0NzYsIDEyNjQ4MCwgMTI2NDg0LCAxMjY0ODgsIDEyNjQ5MiwgMTI2NDk2LCAxMjY1MDAsIAorICAgIDEyNjUwNCwgMTI2NTA4LCAxMjY1MTIsIDEyNjUxNiwgMTI2NTIwLCAxMjY1MjQsIDEyNjUyOCwgMTI2NTMyLCAxMjY1MzYsIAorICAgIDEyNjU0MCwgMTI2NTQ0LCAxMjY1NDgsIDEyNjU1MiwgMTI2NTU2LCAxMjY1NjAsIDEyNjU2NCwgMTI2NTY4LCAxMjY1NzIsIAorICAgIDEyNjU3NiwgMTI2NTgwLCAxMjY1ODQsIDEyNjU4OCwgMTI2NTkyLCAxMjY1OTYsIDEyNjYwMCwgMTI2NjA0LCAxMjY2MDgsIAorICAgIDEyNjYxMiwgMTI2NjE2LCAxMjY2MjAsIDEyNjYyNCwgMTI2NjI4LCAxMjY2MzIsIDEyNjYzNiwgMTI2NjQwLCAxMjY2NDQsIAorICAgIDEyNjY0OCwgMTI2NjUyLCAxMjY2NTYsIDEyNjY2MCwgMTI2NjY0LCAxMjY2NjgsIDEyNjY3MiwgMTI2Njc2LCAxMjY2ODAsIAorICAgIDEyNjY4NCwgMTI2Njg4LCAxMjY2OTIsIDEyNjY5NiwgMTI2NzAwLCAxMjY3MDQsIDEyNjcwOCwgMTI2NzEyLCAxMjY3MTYsIAorICAgIDEyNjcyMCwgMTI2NzI0LCAxMjY3MjgsIDEyNjczMiwgMTI2NzM2LCAxMjY3NDAsIDEyNjc0NCwgMTI2NzQ4LCAxMjY3NTIsIAorICAgIDEyNjc1NiwgMTI2NzYwLCAxMjY3NjQsIDEyNjc2OCwgMTI2NzcyLCAxMjY3NzYsIDEyNjc4MCwgMTI2Nzg0LCAxMjY3ODgsIAorICAgIDEyNjc5MiwgMTI2Nzk2LCAxMjY4MDAsIDEyNjgwNCwgMTI2ODA4LCAxMjY4MTIsIDEyNjgxNiwgMTI2ODI2LCAxMjY4MzAsIAorICAgIDEyNjgzNCwgMTI2ODM4LCAxMjY4NDIsIDEyNjg0NiwgMTI2ODUwLCAxMjY4NTQsIDEyNjg1OCwgMTI2ODYyLCAxMjY4NjYsIAorICAgIDEyNjg3MCwgMTI2ODc1LCAxMjY4NzksIDEyNjg4MywgMTI2ODg3LCAxMjY4OTEsIDEyNjg5NSwgMTI2ODk5LCAxMjY5MDMsIAorICAgIDEyNjkwNywgMTI2OTExLCAxMjY5MTUsIDEyNjkxOSwgMTI2OTIzLCAxMjY5MjcsIDEyNjkzMSwgMTI2OTM1LCAxMjY5MzksIAorICAgIDEyNjk0OCwgMTI2OTU3LCAxMjY5NjEsIDEyNjk2NSwgMTI2OTY5LCAxMjY5NzMsIDEyNjk3NywgMTI2OTgxLCAxMjY5ODUsIAorICAgIDEyNjk4OSwgMTI2OTkzLCAxMjY5OTcsIDEyNzAwMSwgMTI3MDA1LCAxMjcwMDksIDEyNzAxMywgMTI3MDE3LCAxMjcwMjEsIAorICAgIDEyNzAyNSwgMTI3MDI5LCAxMjcwMzMsIDEyNzAzNywgMTI3MDQxLCAxMjcwNDUsIDEyNzA0OSwgMTI3MDUzLCAxMjcwNTcsIAorICAgIDEyNzA2MSwgMTI3MDY1LCAxMjcwNjksIDEyNzA3MywgMTI3MDc3LCAxMjcwODEsIDEyNzA4NSwgMTI3MDg5LCAxMjcwOTMsIAorICAgIDEyNzA5NywgMTI3MTAxLCAxMjcxMDUsIDEyNzEwOSwgMTI3MTEzLCAxMjcxMTcsIDEyNzEyMSwgMTI3MTI1LCAxMjcxMjksIAorICAgIDEyNzEzMywgMTI3MTM3LCAxMjcxNDEsIDEyNzE0NSwgMTI3MTQ5LCAxMjcxNTMsIDEyNzE1NywgMTI3MTYxLCAxMjcxNjUsIAorICAgIDEyNzE2OSwgMTI3MTczLCAxMjcxNzcsIDEyNzE4MSwgMTI3MTg1LCAxMjcxODksIDEyNzE5MywgMTI3MTk3LCAxMjcyMDEsIAorICAgIDEyNzIwNSwgMTI3MjA5LCAxMjcyMTMsIDEyNzIxNywgMTI3MjIxLCAxMjcyMjUsIDEyNzIyOSwgMTI3MjMzLCAxMjcyMzcsIAorICAgIDEyNzI0MSwgMTI3MjQ1LCAxMjcyNDksIDEyNzI1MywgMTI3MjU3LCAxMjcyNjEsIDEyNzI2NSwgMTI3MjY5LCAxMjcyNzMsIAorICAgIDEyNzI3NywgMTI3MjgxLCAxMjcyODUsIDEyNzI4OSwgMTI3MjkzLCAxMjcyOTcsIDEyNzMwMSwgMTI3MzA1LCAxMjczMDksIAorICAgIDEyNzMxMywgMTI3MzE3LCAxMjczMjEsIDEyNzMyNSwgMTI3MzI5LCAxMjczMzMsIDEyNzMzNywgMTI3MzQxLCAxMjczNDUsIAorICAgIDEyNzM0OSwgMTI3MzUzLCAxMjczNTcsIDEyNzM2MSwgMTI3MzY1LCAxMjczNjksIDEyNzM3MywgMTI3Mzc3LCAxMjczODEsIAorICAgIDEyNzM4NSwgMTI3Mzg5LCAxMjczOTMsIDEyNzM5NywgMTI3NDAxLCAxMjc0MDUsIDEyNzQwOSwgMTI3NDEzLCAxMjc0MTcsIAorICAgIDEyNzQyMSwgMTI3NDI1LCAxMjc0MjksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMTkzMDAsMTI0ICsyMDQ1NiwyMTAgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjQ5MzMsIDEyNDk0MSwgCi0gICAgMTI0OTQ5LCAxMjQ5NTksIDEyNDk2OSwgMTI0OTc3LCAxMjQ5ODMsIDEyNDk5MSwgMTI0OTk5LCAxMjUwMDksIDEyNTAyMSwgCi0gICAgMTI1MDMzLCAxMjUwMzksIDEyNTA0NywgMTI1MDUzLCAxMjUwNTksIDEyNTA2NSwgMTI1MDcxLCAxMjUwNzcsIDEyNTA4MywgCi0gICAgMTI1MDg5LCAxMjUwOTUsIDEyNTEwMSwgMTI1MTA3LCAxMjUxMTMsIDEyNTEyMSwgMTI1MTI5LCAxMjUxMzUsIDEyNTE0MSwgCi0gICAgMTI1MTQ3LCAxMjUxNTMsIDEyNTE2MSwgMTI1MTY5LCAxMjUxNzgsIDEyNTE4NCwgMTI1MTkyLCAxMjUxOTgsIDEyNTIwNCwgCi0gICAgMTI1MjEwLCAxMjUyMTYsIDEyNTIyMiwgMTI1MjMwLCAxMjUyMzgsIDEyNTI0NCwgMTI1MjUwLCAxMjUyNTYsIDEyNTI2MiwgCi0gICAgMTI1MjY4LCAxMjUyNzQsIDEyNTI4MCwgMTI1Mjg2LCAxMjUyOTIsIDEyNTI5OCwgMTI1MzA0LCAxMjUzMTAsIDEyNTMxNiwgCi0gICAgMTI1MzIyLCAxMjUzMjgsIDEyNTMzNCwgMTI1MzQwLCAxMjUzNDYsIDEyNTM1MiwgMTI1MzYwLCAxMjUzNjYsIDEyNTM3MiwgCi0gICAgMTI1MzgyLCAxMjUzOTAsIDEyNTM5NiwgMTI1NDAyLCAxMjU0MDgsIDEyNTQxNCwgMTI1NDIwLCAxMjU0MjYsIDEyNTQzMiwgCi0gICAgMTI1NDM4LCAxMjU0NDQsIDEyNTQ1MCwgMTI1NDU2LCAxMjU0NjIsIDEyNTQ2OCwgMTI1NDc0LCAxMjU0ODAsIDEyNTQ4NiwgCi0gICAgMTI1NDkyLCAxMjU0OTgsIDEyNTUwNCwgMTI1NTEwLCAxMjU1MTYsIDEyNTUyMiwgMTI1NTMwLCAxMjU1MzYsIDEyNTU0NCwgCi0gICAgMTI1NTUyLCAxMjU1NjAsIDEyNTU2NiwgMTI1NTcyLCAxMjU1NzgsIDEyNTU4NCwgMTI1NTkwLCAxMjU1OTgsIDEyNTYwOCwgCi0gICAgMTI1NjE2LCAxMjU2MjQsIDEyNTYzMCwgMTI1NjM2LCAxMjU2NDQsIDEyNTY1MiwgMTI1NjU4LCAxMjU2NjYsIDEyNTY3NCwgCi0gICAgMTI1NjgyLCAxMjU2ODgsIDEyNTY5NCwgMTI1NzAwLCAxMjU3MDYsIDEyNTcxMiwgMTI1NzE4LCAxMjU3MjYsIDEyNTczNCwgCi0gICAgMTI1NzQwLCAxMjU3NDYsIDEyNTc1MiwgMTI1NzU4LCAxMjU3NjQsIDEyNTc3MiwgMTI1Nzc4LCAxMjU3ODQsIDEyNTc5MCwgCi0gICAgMTI1Nzk2LCAxMjU4MDIsIDEyNTgwOCwgMTI1ODE2LCAxMjU4MjIsIDEyNTgyOCwgMTI1ODM0LCAxMjU4NDAsIDEyNTg0OCwgCi0gICAgMTI1ODU2LCAxMjU4NjIsIDEyNTg2OCwgMTI1ODc0LCAxMjU4NzksIDEyNTg4NSwgMTI1ODkxLCAxMjU4OTgsIDEyNTkwMywgCi0gICAgMTI1OTA4LCAxMjU5MTMsIDEyNTkxOCwgMTI1OTIzLCAxMjU5MjgsIDEyNTkzMywgMTI1OTM4LCAxMjU5NDMsIDEyNTk1MiwgCi0gICAgMTI1OTU5LCAxMjU5NjQsIDEyNTk2OSwgMTI1OTc0LCAxMjU5ODEsIDEyNTk4NiwgMTI1OTkxLCAxMjU5OTYsIDEyNjAwMywgCi0gICAgMTI2MDA4LCAxMjYwMTMsIDEyNjAxOCwgMTI2MDIzLCAxMjYwMjgsIDEyNjAzMywgMTI2MDM4LCAxMjYwNDMsIDEyNjA0OCwgCi0gICAgMTI2MDUzLCAxMjYwNTgsIDEyNjA2NSwgMTI2MDcwLCAxMjYwNzcsIDEyNjA4MiwgMTI2MDg3LCAxMjYwOTQsIDEyNjA5OSwgCi0gICAgMTI2MTA0LCAxMjYxMDksIDEyNjExNCwgMTI2MTE5LCAxMjYxMjQsIDEyNjEyOSwgMTI2MTM0LCAxMjYxMzksIDEyNjE0NCwgCi0gICAgMTI2MTQ5LCAxMjYxNTQsIDEyNjE1OSwgMTI2MTY0LCAxMjYxNjksIDEyNjE3NCwgMTI2MTc5LCAxMjYxODQsIDEyNjE4OSwgCi0gICAgMTI2MTk2LCAxMjYyMDEsIDEyNjIwNiwgMTI2MjExLCAxMjYyMTYsIDEyNjIyMSwgMTI2MjI2LCAxMjYyMzEsIDEyNjIzNiwgCi0gICAgMTI2MjQxLCAxMjYyNDYsIDEyNjI1MSwgMTI2MjU2LCAxMjYyNjEsIDEyNjI2OCwgMTI2MjczLCAxMjYyNzgsIDEyNjI4NSwgCi0gICAgMTI2MjkwLCAxMjYyOTUsIDEyNjMwMCwgMTI2MzA1LCAxMjYzMTAsIDEyNjMxNSwgMTI2MzIwLCAxMjYzMjUsIDEyNjMzMCwgCi0gICAgMTI2MzM1LCAxMjYzNDIsIDEyNjM0NywgMTI2MzUyLCAxMjYzNTcsIDEyNjM2MiwgMTI2MzY3LCAxMjYzNzQsIDEyNjM4MSwgCi0gICAgMTI2Mzg2LCAxMjYzOTEsIDEyNjM5NiwgMTI2NDAxLCAxMjY0MDYsIDEyNjQxMSwgMTI2NDE2LCAxMjY0MjEsIDEyNjQyNiwgCi0gICAgMTI2NDMxLCAxMjY0MzYsIDEyNjQ0MSwgMTI2NDQ2LCAxMjY0NTEsIDEyNjQ1NiwgMTI2NDYxLCAxMjY0NjYsIDEyNjQ3MSwgCi0gICAgMTI2NDc2LCAxMjY0ODEsIDEyNjQ4NiwgMTI2NDkxLCAxMjY0OTYsIDEyNjUwMSwgMTI2NTA2LCAxMjY1MTEsIDEyNjUxNiwgCi0gICAgMTI2NTIxLCAxMjY1MjYsIDEyNjUzMSwgMTI2NTM2LCAxMjY1NDEsIDEyNjU0NiwgMTI2NTUxLCAxMjY1NTYsIDEyNjU2MSwgCi0gICAgMTI2NTY4LCAxMjY1NzMsIDEyNjU3OCwgMTI2NTgzLCAxMjY1ODgsIDEyNjU5MywgMTI2NTk4LCAxMjY2MDMsIDEyNjYwOCwgCi0gICAgMTI2NjEzLCAxMjY2MTgsIDEyNjYyMywgMTI2NjI4LCAxMjY2MzMsIDEyNjYzOCwgMTI2NjQzLCAxMjY2NDgsIDEyNjY1MywgCi0gICAgMTI2NjU4LCAxMjY2NjMsIDEyNjY2OCwgMTI2NjczLCAxMjY2NzgsIDEyNjY4MywgMTI2Njg4LCAxMjY2OTMsIDEyNjY5OCwgCi0gICAgMTI2NzAzLCAxMjY3MDgsIDEyNjcxMywgMTI2NzE4LCAxMjY3MjMsIDEyNjcyOCwgMTI2NzMzLCAxMjY3MzgsIDEyNjc0MywgCi0gICAgMTI2NzQ4LCAxMjY3NTMsIDEyNjc1OCwgMTI2NzYzLCAxMjY3NjgsIDEyNjc3MywgMTI2Nzc4LCAxMjY3ODMsIDEyNjc4OCwgCi0gICAgMTI2NzkzLCAxMjY3OTgsIDEyNjgwMywgMTI2ODA4LCAxMjY4MTMsIDEyNjgxOCwgMTI2ODIzLCAxMjY4MjgsIDEyNjgzMywgCi0gICAgMTI2ODM4LCAxMjY4NDMsIDEyNjg0OCwgMTI2ODUzLCAxMjY4NTgsIDEyNjg2NSwgMTI2ODcwLCAxMjY4NzUsIDEyNjg4MCwgCi0gICAgMTI2ODg1LCAxMjY4OTAsIDEyNjg5NSwgMTI2OTAwLCAxMjY5MDUsIDEyNjkxMCwgMTI2OTE1LCAxMjY5MjAsIDEyNjkyNSwgCi0gICAgMTI2OTMwLCAxMjY5MzUsIDEyNjk0MCwgMTI2OTQ1LCAxMjY5NTAsIDEyNjk1NSwgMTI2OTYwLCAxMjY5NjUsIDEyNjk3MCwgCi0gICAgMTI2OTc3LCAxMjY5ODIsIDEyNjk4NywgMTI2OTk0LCAxMjY5OTksIDEyNzAwNCwgMTI3MDA5LCAxMjcwMTQsIDEyNzAxOSwgCi0gICAgMTI3MDI0LCAxMjcwMjksIDEyNzAzNCwgMTI3MDM5LCAxMjcwNDQsIDEyNzA0OSwgMTI3MDU0LCAxMjcwNTksIDEyNzA2NCwgCi0gICAgMTI3MDY5LCAxMjcwNzQsIDEyNzA3OSwgMTI3MDg0LCAxMjcwODksIDEyNzA5NCwgMTI3MDk5LCAxMjcxMDQsIDEyNzEwOSwgCi0gICAgMTI3MTE0LCAxMjcxMTksIDEyNzEyNCwgMTI3MTI5LCAxMjcxMzQsIDEyNzEzOSwgMTI3MTQ0LCAxMjcxNDksIDEyNzE1NCwgCi0gICAgMTI3MTU5LCAxMjcxNjQsIDEyNzE2OSwgMTI3MTc0LCAxMjcxNzksIDEyNzE4NCwgMTI3MTg5LCAxMjcxOTQsIDEyNzE5OSwgCi0gICAgMTI3MjA0LCAxMjcyMDksIDEyNzIxNiwgMTI3MjIxLCAxMjcyMjYsIDEyNzIzMywgMTI3MjQwLCAxMjcyNDUsIDEyNzI1MCwgCi0gICAgMTI3MjU1LCAxMjcyNjAsIDEyNzI2NSwgMTI3MjcwLCAxMjcyNzUsIDEyNzI4MCwgMTI3Mjg1LCAxMjcyOTAsIDEyNzI5NSwgCi0gICAgMTI3MzAwLCAxMjczMDUsIDEyNzMxMCwgMTI3MzE1LCAxMjczMjAsIDEyNzMyNSwgMTI3MzMwLCAxMjczMzUsIDEyNzM0MCwgCi0gICAgMTI3MzQ1LCAxMjczNTAsIDEyNzM1NSwgMTI3MzYwLCAxMjczNjUsIDEyNzM3MiwgMTI3Mzc3LCAxMjczODIsIDEyNzM4NywgCi0gICAgMTI3MzkyLCAxMjczOTcsIDEyNzQwMiwgMTI3NDA3LCAxMjc0MTIsIDEyNzQxNywgMTI3NDIyLCAxMjc0MjcsIDEyNzQzMiwgCi0gICAgMTI3NDM3LCAxMjc0NDIsIDEyNzQ0NywgMTI3NDUyLCAxMjc0NTcsIDEyNzQ2MiwgMTI3NDY5LCAxMjc0NzQsIDEyNzQ3OSwgCi0gICAgMTI3NDg0LCAxMjc0ODksIDEyNzQ5NCwgMTI3NDk5LCAxMjc1MDQsIDEyNzUxMCwgMTI3NTE1LCAxMjc1MjAsIDEyNzUyNSwgCi0gICAgMTI3NTMwLCAxMjc1MzUsIDEyNzU0MCwgMTI3NTQ1LCAxMjc1NTAsIDEyNzU1NywgMTI3NTY0LCAxMjc1NjksIDEyNzU3NCwgCi0gICAgMTI3NTc4LCAxMjc1ODMsIDEyNzU4NywgMTI3NTkxLCAxMjc1OTYsIDEyNzYwMywgMTI3NjA4LCAxMjc2MTMsIDEyNzYyMiwgCi0gICAgMTI3NjI3LCAxMjc2MzIsIDEyNzYzNywgMTI3NjQyLCAxMjc2NDksIDEyNzY1NiwgMTI3NjYxLCAxMjc2NjYsIDEyNzY3MSwgCi0gICAgMTI3Njc2LCAxMjc2ODMsIDEyNzY4OCwgMTI3NjkzLCAxMjc2OTgsIDEyNzcwMywgMTI3NzA4LCAxMjc3MTMsIDEyNzcxOCwgCi0gICAgMTI3NzIzLCAxMjc3MjgsIDEyNzczMywgMTI3NzM4LCAxMjc3NDMsIDEyNzc1MCwgMTI3NzU1LCAxMjc3NjAsIDEyNzc2NSwgCi0gICAgMTI3NzcwLCAxMjc3NzUsIDEyNzc3OSwgMTI3Nzg0LCAxMjc3ODksIDEyNzc5NCwgMTI3Nzk5LCAxMjc4MDQsIDEyNzgwOSwgCi0gICAgMTI3ODE0LCAxMjc4MTksIDEyNzgyNCwgMTI3ODMwLCAxMjc4MzYsIDEyNzg0MiwgMTI3ODQ4LCAxMjc4NTQsIDEyNzg2MCwgCi0gICAgMTI3ODY2LCAxMjc4NzIsIDEyNzg3OCwgMTI3ODg0LCAxMjc4OTAsIDEyNzg5NiwgMTI3OTAyLCAxMjc5MDgsIDEyNzkxNCwgCisgICAgMCwgMTI3NDMzLCAxMjc0NDEsIDEyNzQ0OSwgMTI3NDU5LCAxMjc0NjksIDEyNzQ3NywgMTI3NDgzLCAxMjc0OTEsIAorICAgIDEyNzQ5OSwgMTI3NTA5LCAxMjc1MjEsIDEyNzUzMywgMTI3NTM5LCAxMjc1NDcsIDEyNzU1MywgMTI3NTU5LCAxMjc1NjUsIAorICAgIDEyNzU3MSwgMTI3NTc3LCAxMjc1ODMsIDEyNzU4OSwgMTI3NTk1LCAxMjc2MDEsIDEyNzYwNywgMTI3NjEzLCAxMjc2MjEsIAorICAgIDEyNzYyOSwgMTI3NjM1LCAxMjc2NDEsIDEyNzY0NywgMTI3NjUzLCAxMjc2NjEsIDEyNzY2OSwgMTI3Njc4LCAxMjc2ODQsIAorICAgIDEyNzY5MiwgMTI3Njk4LCAxMjc3MDQsIDEyNzcxMCwgMTI3NzE2LCAxMjc3MjIsIDEyNzczMCwgMTI3NzM4LCAxMjc3NDQsIAorICAgIDEyNzc1MCwgMTI3NzU2LCAxMjc3NjIsIDEyNzc2OCwgMTI3Nzc0LCAxMjc3ODAsIDEyNzc4NiwgMTI3NzkyLCAxMjc3OTgsIAorICAgIDEyNzgwNCwgMTI3ODEwLCAxMjc4MTYsIDEyNzgyMiwgMTI3ODI4LCAxMjc4MzQsIDEyNzg0MCwgMTI3ODQ2LCAxMjc4NTIsIAorICAgIDEyNzg2MCwgMTI3ODY2LCAxMjc4NzIsIDEyNzg4MiwgMTI3ODkwLCAxMjc4OTYsIDEyNzkwMiwgMTI3OTA4LCAxMjc5MTQsIAogICAgIDEyNzkyMCwgMTI3OTI2LCAxMjc5MzIsIDEyNzkzOCwgMTI3OTQ0LCAxMjc5NTAsIDEyNzk1NiwgMTI3OTYyLCAxMjc5NjgsIAotICAgIDEyNzk3MywgMTI3OTc5LCAxMjc5ODUsIDEyNzk5MSwgMTI3OTk3LCAxMjgwMDMsIDEyODAwOSwgMTI4MDE1LCAxMjgwMjEsIAotICAgIDEyODAyNywgMTI4MDMzLCAxMjgwMzksIDEyODA0NSwgMTI4MDUxLCAxMjgwNTcsIDEyODA2MywgMTI4MDY5LCAxMjgwNzUsIAotICAgIDEyODA4MSwgMTI4MDg3LCAxMjgwOTMsIDEyODA5OCwgMTI4MTA0LCAxMjgxMTAsIDEyODExNiwgMTI4MTIyLCAxMjgxMjgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyODEzNCwgMTI4MTM5LCAxMjgxNDQsIDEyODE0OSwgMTI4MTU0LCAxMjgxNTksIAotICAgIDEyODE2NCwgMTI4MTY4LCAxMjgxNzMsIDEyODE3OCwgMTI4MTgzLCAxMjgxODgsIDEyODE5MywgMTI4MTk4LCAxMjgyMDMsIAotICAgIDEyODIwOCwgMTI4MjEzLCAxMjgyMTcsIDEyODIyMiwgMTI4MjI2LCAxMjgyMzEsIDEyODIzNiwgMTI4MjQxLCAxMjgyNDYsIAotICAgIDEyODI1MSwgMTI4MjU1LCAxMjgyNjAsIDEyODI2NSwgMTI4MjcwLCAxMjgyNzUsIDEyODI4MCwgMCwgMTI4Mjg1LCAKLSAgICAxMjgyOTAsIDEyODI5NCwgMTI4Mjk4LCAxMjgzMDIsIDEyODMwNiwgMTI4MzEwLCAxMjgzMTQsIDEyODMxOSwgMTI4MzIzLCAKLSAgICAwLCAwLCAwLCAwLCAxMjgzMjgsIDEyODMzMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTI3OTc0LCAxMjc5ODAsIDEyNzk4NiwgMTI3OTkyLCAxMjc5OTgsIDEyODAwNCwgMTI4MDEwLCAxMjgwMTYsIDEyODAyMiwgCisgICAgMTI4MDMwLCAxMjgwMzYsIDEyODA0NCwgMTI4MDUyLCAxMjgwNjAsIDEyODA2NiwgMTI4MDcyLCAxMjgwNzgsIDEyODA4NCwgCisgICAgMTI4MDkwLCAxMjgwOTgsIDEyODEwOCwgMTI4MTE2LCAxMjgxMjQsIDEyODEzMCwgMTI4MTM2LCAxMjgxNDQsIDEyODE1MiwgCisgICAgMTI4MTU4LCAxMjgxNjYsIDEyODE3NCwgMTI4MTgyLCAxMjgxODgsIDEyODE5NCwgMTI4MjAwLCAxMjgyMDYsIDEyODIxMiwgCisgICAgMTI4MjE4LCAxMjgyMjYsIDEyODIzNCwgMTI4MjQwLCAxMjgyNDYsIDEyODI1MiwgMTI4MjU4LCAxMjgyNjQsIDEyODI3MiwgCisgICAgMTI4Mjc4LCAxMjgyODQsIDEyODI5MCwgMTI4Mjk2LCAxMjgzMDIsIDEyODMwOCwgMTI4MzE2LCAxMjgzMjIsIDEyODMyOCwgCisgICAgMTI4MzM0LCAxMjgzNDAsIDEyODM0OCwgMTI4MzU2LCAxMjgzNjIsIDEyODM2OCwgMTI4Mzc0LCAxMjgzNzksIDEyODM4NSwgCisgICAgMTI4MzkxLCAxMjgzOTgsIDEyODQwMywgMTI4NDA4LCAxMjg0MTMsIDEyODQxOCwgMTI4NDIzLCAxMjg0MjgsIDEyODQzMywgCisgICAgMTI4NDM4LCAxMjg0NDMsIDEyODQ1MiwgMTI4NDU5LCAxMjg0NjQsIDEyODQ2OSwgMTI4NDc0LCAxMjg0ODEsIDEyODQ4NiwgCisgICAgMTI4NDkxLCAxMjg0OTYsIDEyODUwMywgMTI4NTA4LCAxMjg1MTMsIDEyODUxOCwgMTI4NTIzLCAxMjg1MjgsIDEyODUzMywgCisgICAgMTI4NTM4LCAxMjg1NDMsIDEyODU0OCwgMTI4NTUzLCAxMjg1NTgsIDEyODU2NSwgMTI4NTcwLCAxMjg1NzcsIDEyODU4MiwgCisgICAgMTI4NTg3LCAxMjg1OTQsIDEyODU5OSwgMTI4NjA0LCAxMjg2MDksIDEyODYxNCwgMTI4NjE5LCAxMjg2MjQsIDEyODYyOSwgCisgICAgMTI4NjM0LCAxMjg2MzksIDEyODY0NCwgMTI4NjQ5LCAxMjg2NTQsIDEyODY1OSwgMTI4NjY0LCAxMjg2NjksIDEyODY3NCwgCisgICAgMTI4Njc5LCAxMjg2ODQsIDEyODY4OSwgMTI4Njk2LCAxMjg3MDEsIDEyODcwNiwgMTI4NzExLCAxMjg3MTYsIDEyODcyMSwgCisgICAgMTI4NzI2LCAxMjg3MzEsIDEyODczNiwgMTI4NzQxLCAxMjg3NDYsIDEyODc1MSwgMTI4NzU2LCAxMjg3NjEsIDEyODc2OCwgCisgICAgMTI4NzczLCAxMjg3NzgsIDEyODc4NSwgMTI4NzkwLCAxMjg3OTUsIDEyODgwMCwgMTI4ODA1LCAxMjg4MTAsIDEyODgxNSwgCisgICAgMTI4ODIwLCAxMjg4MjUsIDEyODgzMCwgMTI4ODM1LCAxMjg4NDIsIDEyODg0NywgMTI4ODUyLCAxMjg4NTcsIDEyODg2MiwgCisgICAgMTI4ODY3LCAxMjg4NzQsIDEyODg4MSwgMTI4ODg2LCAxMjg4OTEsIDEyODg5NiwgMTI4OTAxLCAxMjg5MDYsIDEyODkxMSwgCisgICAgMTI4OTE2LCAxMjg5MjEsIDEyODkyNiwgMTI4OTMxLCAxMjg5MzYsIDEyODk0MSwgMTI4OTQ2LCAxMjg5NTEsIDEyODk1NiwgCisgICAgMTI4OTYxLCAxMjg5NjYsIDEyODk3MSwgMTI4OTc2LCAxMjg5ODEsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTYsIDEyOTAwMSwgCisgICAgMTI5MDA2LCAxMjkwMTEsIDEyOTAxNiwgMTI5MDIxLCAxMjkwMjYsIDEyOTAzMSwgMTI5MDM2LCAxMjkwNDEsIDEyOTA0NiwgCisgICAgMTI5MDUxLCAxMjkwNTYsIDEyOTA2MSwgMTI5MDY4LCAxMjkwNzMsIDEyOTA3OCwgMTI5MDgzLCAxMjkwODgsIDEyOTA5MywgCisgICAgMTI5MDk4LCAxMjkxMDMsIDEyOTEwOCwgMTI5MTEzLCAxMjkxMTgsIDEyOTEyMywgMTI5MTI4LCAxMjkxMzMsIDEyOTEzOCwgCisgICAgMTI5MTQzLCAxMjkxNDgsIDEyOTE1MywgMTI5MTU4LCAxMjkxNjMsIDEyOTE2OCwgMTI5MTczLCAxMjkxNzgsIDEyOTE4MywgCisgICAgMTI5MTg4LCAxMjkxOTMsIDEyOTE5OCwgMTI5MjAzLCAxMjkyMDgsIDEyOTIxMywgMTI5MjE4LCAxMjkyMjMsIDEyOTIyOCwgCisgICAgMTI5MjMzLCAxMjkyMzgsIDEyOTI0MywgMTI5MjQ4LCAxMjkyNTMsIDEyOTI1OCwgMTI5MjYzLCAxMjkyNjgsIDEyOTI3MywgCisgICAgMTI5Mjc4LCAxMjkyODMsIDEyOTI4OCwgMTI5MjkzLCAxMjkyOTgsIDEyOTMwMywgMTI5MzA4LCAxMjkzMTMsIDEyOTMxOCwgCisgICAgMTI5MzIzLCAxMjkzMjgsIDEyOTMzMywgMTI5MzM4LCAxMjkzNDMsIDEyOTM0OCwgMTI5MzUzLCAxMjkzNTgsIDEyOTM2NSwgCisgICAgMTI5MzcwLCAxMjkzNzUsIDEyOTM4MCwgMTI5Mzg1LCAxMjkzOTAsIDEyOTM5NSwgMTI5NDAwLCAxMjk0MDUsIDEyOTQxMCwgCisgICAgMTI5NDE1LCAxMjk0MjAsIDEyOTQyNSwgMTI5NDMwLCAxMjk0MzUsIDEyOTQ0MCwgMTI5NDQ1LCAxMjk0NTAsIDEyOTQ1NSwgCisgICAgMTI5NDYwLCAxMjk0NjUsIDEyOTQ3MCwgMTI5NDc3LCAxMjk0ODIsIDEyOTQ4NywgMTI5NDk0LCAxMjk0OTksIDEyOTUwNCwgCisgICAgMTI5NTA5LCAxMjk1MTQsIDEyOTUxOSwgMTI5NTI0LCAxMjk1MjksIDEyOTUzNCwgMTI5NTM5LCAxMjk1NDQsIDEyOTU0OSwgCisgICAgMTI5NTU0LCAxMjk1NTksIDEyOTU2NCwgMTI5NTY5LCAxMjk1NzQsIDEyOTU3OSwgMTI5NTg0LCAxMjk1ODksIDEyOTU5NCwgCisgICAgMTI5NTk5LCAxMjk2MDQsIDEyOTYwOSwgMTI5NjE0LCAxMjk2MTksIDEyOTYyNCwgMTI5NjI5LCAxMjk2MzQsIDEyOTYzOSwgCisgICAgMTI5NjQ0LCAxMjk2NDksIDEyOTY1NCwgMTI5NjU5LCAxMjk2NjQsIDEyOTY2OSwgMTI5Njc0LCAxMjk2NzksIDEyOTY4NCwgCisgICAgMTI5Njg5LCAxMjk2OTQsIDEyOTY5OSwgMTI5NzA0LCAxMjk3MDksIDEyOTcxNiwgMTI5NzIxLCAxMjk3MjYsIDEyOTczMywgCisgICAgMTI5NzQwLCAxMjk3NDUsIDEyOTc1MCwgMTI5NzU1LCAxMjk3NjAsIDEyOTc2NSwgMTI5NzcwLCAxMjk3NzUsIDEyOTc4MCwgCisgICAgMTI5Nzg1LCAxMjk3OTAsIDEyOTc5NSwgMTI5ODAwLCAxMjk4MDUsIDEyOTgxMCwgMTI5ODE1LCAxMjk4MjAsIDEyOTgyNSwgCisgICAgMTI5ODMwLCAxMjk4MzUsIDEyOTg0MCwgMTI5ODQ1LCAxMjk4NTAsIDEyOTg1NSwgMTI5ODYwLCAxMjk4NjUsIDEyOTg3MiwgCisgICAgMTI5ODc3LCAxMjk4ODIsIDEyOTg4NywgMTI5ODkyLCAxMjk4OTcsIDEyOTkwMiwgMTI5OTA3LCAxMjk5MTIsIDEyOTkxNywgCisgICAgMTI5OTIyLCAxMjk5MjcsIDEyOTkzMiwgMTI5OTM3LCAxMjk5NDIsIDEyOTk0NywgMTI5OTUyLCAxMjk5NTcsIDEyOTk2MiwgCisgICAgMTI5OTY5LCAxMjk5NzQsIDEyOTk3OSwgMTI5OTg0LCAxMjk5ODksIDEyOTk5NCwgMTI5OTk5LCAxMzAwMDQsIDEzMDAxMCwgCisgICAgMTMwMDE1LCAxMzAwMjAsIDEzMDAyNSwgMTMwMDMwLCAxMzAwMzUsIDEzMDA0MCwgMTMwMDQ1LCAxMzAwNTAsIDEzMDA1NywgCisgICAgMTMwMDY0LCAxMzAwNjksIDEzMDA3NCwgMTMwMDc4LCAxMzAwODMsIDEzMDA4NywgMTMwMDkxLCAxMzAwOTYsIDEzMDEwMywgCisgICAgMTMwMTA4LCAxMzAxMTMsIDEzMDEyMiwgMTMwMTI3LCAxMzAxMzIsIDEzMDEzNywgMTMwMTQyLCAxMzAxNDksIDEzMDE1NiwgCisgICAgMTMwMTYxLCAxMzAxNjYsIDEzMDE3MSwgMTMwMTc2LCAxMzAxODMsIDEzMDE4OCwgMTMwMTkzLCAxMzAxOTgsIDEzMDIwMywgCisgICAgMTMwMjA4LCAxMzAyMTMsIDEzMDIxOCwgMTMwMjIzLCAxMzAyMjgsIDEzMDIzMywgMTMwMjM4LCAxMzAyNDMsIDEzMDI1MCwgCisgICAgMTMwMjU0LCAxMzAyNTksIDEzMDI2NCwgMTMwMjY5LCAxMzAyNzQsIDEzMDI3OCwgMTMwMjgzLCAxMzAyODgsIDEzMDI5MywgCisgICAgMTMwMjk4LCAxMzAzMDMsIDEzMDMwOCwgMTMwMzEzLCAxMzAzMTgsIDEzMDMyMywgMTMwMzI5LCAxMzAzMzUsIDEzMDM0MSwgCisgICAgMTMwMzQ3LCAxMzAzNTMsIDEzMDM1OCwgMTMwMzY0LCAxMzAzNzAsIDEzMDM3NiwgMTMwMzgyLCAxMzAzODgsIDEzMDM5NCwgCisgICAgMTMwNDAwLCAxMzA0MDYsIDEzMDQxMiwgMTMwNDE4LCAxMzA0MjQsIDEzMDQzMCwgMTMwNDM2LCAxMzA0NDIsIDEzMDQ0OCwgCisgICAgMTMwNDU0LCAxMzA0NjAsIDEzMDQ2NiwgMTMwNDcxLCAxMzA0NzcsIDEzMDQ4MywgMTMwNDg5LCAxMzA0OTUsIDEzMDUwMSwgCisgICAgMTMwNTA3LCAxMzA1MTMsIDEzMDUxOSwgMTMwNTI1LCAxMzA1MzEsIDEzMDUzNywgMTMwNTQzLCAxMzA1NDksIDEzMDU1NSwgCisgICAgMTMwNTYxLCAxMzA1NjcsIDEzMDU3MywgMTMwNTc5LCAxMzA1ODUsIDEzMDU5MSwgMTMwNTk2LCAxMzA2MDIsIDEzMDYwOCwgCisgICAgMTMwNjE0LCAxMzA2MjAsIDEzMDYyNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNjMyLCAxMzA2MzcsIDEzMDY0MiwgCisgICAgMTMwNjQ3LCAxMzA2NTIsIDEzMDY1NywgMTMwNjYyLCAxMzA2NjYsIDEzMDY3MSwgMTMwNjc2LCAxMzA2ODEsIDEzMDY4NiwgCisgICAgMTMwNjkxLCAxMzA2OTYsIDEzMDcwMSwgMTMwNzA2LCAxMzA3MTEsIDEzMDcxNSwgMTMwNzIwLCAxMzA3MjQsIDEzMDcyOSwgCisgICAgMTMwNzM0LCAxMzA3MzksIDEzMDc0NCwgMTMwNzQ5LCAxMzA3NTMsIDEzMDc1OCwgMTMwNzYzLCAxMzA3NjcsIDEzMDc3MiwgCisgICAgMTMwNzc3LCAwLCAxMzA3ODIsIDEzMDc4NywgMTMwNzkxLCAxMzA3OTUsIDEzMDc5OSwgMTMwODAzLCAxMzA4MDcsIAorICAgIDEzMDgxMSwgMTMwODE2LCAxMzA4MjAsIDAsIDAsIDAsIDAsIDEzMDgyNSwgMTMwODI5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjgzMzcsIDEyODM0NCwgMTI4MzUwLCAxMjgzNTcsIDEyODM2NCwgCi0gICAgMTI4MzcxLCAxMjgzNzgsIDEyODM4NSwgMTI4MzkyLCAxMjgzOTksIDEyODQwNiwgMTI4NDEzLCAxMjg0MjAsIDEyODQyNywgCi0gICAgMTI4NDM0LCAxMjg0NDEsIDEyODQ0OCwgMTI4NDU1LCAxMjg0NjEsIDEyODQ2OCwgMTI4NDc1LCAxMjg0ODIsIDEyODQ4OCwgCi0gICAgMTI4NDk1LCAxMjg1MDEsIDEyODUwNywgMTI4NTE0LCAxMjg1MjAsIDEyODUyNywgMTI4NTMzLCAwLCAwLCAxMjg1MzksIAotICAgIDEyODU0NywgMTI4NTU1LCAxMjg1NjQsIDEyODU3MywgMTI4NTgyLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxMjg1OTAsIDEyODU5NSwgMTI4NjAwLCAxMjg2MDUsIDEyODYxMCwgMTI4NjE1LCAxMjg2MjAsIDEyODYyNSwgMTI4NjMwLCAKLSAgICAxMjg2MzUsIDEyODY0MCwgMTI4NjQ1LCAxMjg2NTAsIDEyODY1NSwgMTI4NjYwLCAxMjg2NjUsIDEyODY3MCwgMTI4Njc1LCAKLSAgICAxMjg2ODAsIDEyODY4NSwgMTI4NjkwLCAxMjg2OTUsIDEyODcwMCwgMTI4NzA1LCAxMjg3MTAsIDEyODcxNSwgMTI4NzIwLCAKLSAgICAxMjg3MjUsIDEyODczMCwgMTI4NzM1LCAxMjg3NDAsIDEyODc0NSwgMTI4NzUwLCAxMjg3NTUsIDEyODc2MCwgMTI4NzY1LCAKLSAgICAxMjg3NzAsIDEyODc3NSwgMTI4NzgwLCAxMjg3ODUsIDEyODc5MCwgMTI4Nzk1LCAxMjg4MDAsIDEyODgwNSwgMTI4ODEwLCAKLSAgICAxMjg4MTUsIDEyODgyMCwgMTI4ODI1LCAxMjg4MzAsIDEyODgzNywgMTI4ODQ0LCAxMjg4NTEsIDEyODg1OCwgMTI4ODY1LCAKLSAgICAxMjg4NzIsIDEyODg3OSwgMTI4ODg2LCAxMjg4OTUsIDEyODkwMiwgMTI4OTA5LCAxMjg5MTYsIDEyODkyMywgMTI4OTMwLCAKLSAgICAxMjg5MzcsIDEyODk0NCwgMTI4OTUxLCAxMjg5NTgsIDEyODk2NSwgMTI4OTcyLCAxMjg5NzcsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDEyODk4NiwgMTI4OTkxLCAxMjg5OTUsIDEyODk5OSwgMTI5MDAzLCAxMjkwMDcsIDEyOTAxMSwgCi0gICAgMTI5MDE1LCAxMjkwMjAsIDEyOTAyNCwgMCwgMTI5MDI5LCAxMjkwMzQsIDEyOTAzOSwgMTI5MDQ2LCAxMjkwNTEsIAotICAgIDEyOTA1OCwgMTI5MDY1LCAwLCAxMjkwNzAsIDEyOTA3NywgMTI5MDgyLCAxMjkwODcsIDEyOTA5NCwgMTI5MTAxLCAKLSAgICAxMjkxMDYsIDEyOTExMSwgMTI5MTE2LCAxMjkxMjEsIDEyOTEyNiwgMTI5MTMzLCAxMjkxNDAsIDEyOTE0NSwgMTI5MTUwLCAKLSAgICAxMjkxNTUsIDEyOTE2OCwgMTI5MTc3LCAxMjkxODQsIDEyOTE5MywgMTI5MjAyLCAwLCAwLCAwLCAwLCAwLCAxMjkyMTEsIAotICAgIDEyOTIxOCwgMTI5MjI1LCAxMjkyMzIsIDEyOTIzOSwgMTI5MjQ2LCAxMjkyNTMsIDEyOTI2MCwgMTI5MjY3LCAxMjkyNzQsIAotICAgIDEyOTI4MSwgMTI5Mjg4LCAxMjkyOTUsIDEyOTMwMiwgMTI5MzA5LCAxMjkzMTYsIDEyOTMyMywgMTI5MzMwLCAxMjkzMzcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDgzNCwgMTMwODQxLCAKKyAgICAxMzA4NDcsIDEzMDg1NCwgMTMwODYxLCAxMzA4NjgsIDEzMDg3NSwgMTMwODgyLCAxMzA4ODksIDEzMDg5NiwgMTMwOTAzLCAKKyAgICAxMzA5MTAsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQ1LCAxMzA5NTIsIDEzMDk1OCwgMTMwOTY1LCAKKyAgICAxMzA5NzIsIDEzMDk3OSwgMTMwOTg1LCAxMzA5OTIsIDEzMDk5OCwgMTMxMDA0LCAxMzEwMTEsIDEzMTAxNywgMTMxMDI0LCAKKyAgICAxMzEwMzAsIDAsIDAsIDEzMTAzNiwgMTMxMDQ0LCAxMzEwNTIsIDEzMTA2MSwgMTMxMDcwLCAxMzEwNzksIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDEzMTA4NywgMTMxMDkyLCAxMzEwOTcsIDEzMTEwMiwgMTMxMTA3LCAxMzExMTIsIDEzMTExNywgCisgICAgMTMxMTIyLCAxMzExMjcsIDEzMTEzMiwgMTMxMTM3LCAxMzExNDIsIDEzMTE0NywgMTMxMTUyLCAxMzExNTcsIDEzMTE2MiwgCisgICAgMTMxMTY3LCAxMzExNzIsIDEzMTE3NywgMTMxMTgyLCAxMzExODcsIDEzMTE5MiwgMTMxMTk3LCAxMzEyMDIsIDEzMTIwNywgCisgICAgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI3LCAxMzEyMzIsIDEzMTIzNywgMTMxMjQyLCAxMzEyNDcsIDEzMTI1MiwgCisgICAgMTMxMjU3LCAxMzEyNjIsIDEzMTI2NywgMTMxMjcyLCAxMzEyNzcsIDEzMTI4MiwgMTMxMjg3LCAxMzEyOTIsIDEzMTI5NywgCisgICAgMTMxMzAyLCAxMzEzMDcsIDEzMTMxMiwgMTMxMzE3LCAxMzEzMjIsIDEzMTMyNywgMTMxMzM0LCAxMzEzNDEsIDEzMTM0OCwgCisgICAgMTMxMzU1LCAxMzEzNjIsIDEzMTM2OSwgMTMxMzc2LCAxMzEzODMsIDEzMTM5MiwgMTMxMzk5LCAxMzE0MDYsIDEzMTQxMywgCisgICAgMTMxNDIwLCAxMzE0MjcsIDEzMTQzNCwgMTMxNDQxLCAxMzE0NDgsIDEzMTQ1NSwgMTMxNDYyLCAxMzE0NjksIDEzMTQ3NCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxNDgzLCAxMzE0ODgsIDEzMTQ5MiwgMTMxNDk2LCAxMzE1MDAsIAorICAgIDEzMTUwNCwgMTMxNTA4LCAxMzE1MTIsIDEzMTUxNywgMTMxNTIxLCAwLCAxMzE1MjYsIDEzMTUzMSwgMTMxNTM2LCAKKyAgICAxMzE1NDMsIDEzMTU0OCwgMTMxNTU1LCAxMzE1NjIsIDAsIDEzMTU2NywgMTMxNTc0LCAxMzE1NzksIDEzMTU4NCwgCisgICAgMTMxNTkxLCAxMzE1OTgsIDEzMTYwMywgMTMxNjA4LCAxMzE2MTMsIDEzMTYxOCwgMTMxNjIzLCAxMzE2MzAsIDEzMTYzNywgCisgICAgMTMxNjQyLCAxMzE2NDcsIDEzMTY1MiwgMTMxNjY1LCAxMzE2NzQsIDEzMTY4MSwgMTMxNjkwLCAxMzE2OTksIDAsIDAsIDAsIAorICAgIDAsIDAsIDEzMTcwOCwgMTMxNzE1LCAxMzE3MjIsIDEzMTcyOSwgMTMxNzM2LCAxMzE3NDMsIDEzMTc1MCwgMTMxNzU3LCAKKyAgICAxMzE3NjQsIDEzMTc3MSwgMTMxNzc4LCAxMzE3ODUsIDEzMTc5MiwgMTMxNzk5LCAxMzE4MDYsIDEzMTgxMywgMTMxODIwLCAKKyAgICAxMzE4MjcsIDEzMTgzNCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMxODQxLCAKKyAgICAxMzE4NDQsIDEzMTg0OCwgMTMxODUyLCAxMzE4NTYsIDEzMTg1OSwgMTMxODYzLCAxMzE4NjgsIDEzMTg3MiwgMTMxODc2LCAKKyAgICAxMzE4ODAsIDEzMTg4NCwgMTMxODg4LCAxMzE4OTMsIDEzMTg5OCwgMTMxOTAyLCAxMzE5MDYsIDEzMTkwOSwgMTMxOTEzLCAKKyAgICAxMzE5MTgsIDEzMTkyMywgMTMxOTI3LCAxMzE5MzEsIDEzMTkzNCwgMTMxOTM4LCAxMzE5NDIsIDEzMTk0NiwgMTMxOTUwLCAKKyAgICAxMzE5NTQsIDEzMTk1OCwgMTMxOTYyLCAxMzE5NjUsIDEzMTk2OSwgMTMxOTczLCAxMzE5NzcsIDEzMTk4MSwgMTMxOTg1LCAKKyAgICAxMzE5ODksIDEzMTk5NSwgMTMxOTk4LCAxMzIwMDIsIDEzMjAwNiwgMTMyMDEwLCAxMzIwMTQsIDEzMjAxOCwgMTMyMDIyLCAKKyAgICAxMzIwMjYsIDEzMjAzMCwgMTMyMDM0LCAxMzIwMzksIDEzMjA0NCwgMTMyMDUwLCAxMzIwNTQsIDEzMjA1OCwgMTMyMDYyLCAKKyAgICAxMzIwNjYsIDEzMjA3MCwgMTMyMDc0LCAxMzIwNzksIDEzMjA4MywgMTMyMDg3LCAxMzIwOTEsIDEzMjA5NSwgMTMyMDk5LCAKKyAgICAxMzIxMDUsIDEzMjEwOSwgMTMyMTEzLCAxMzIxMTcsIDEzMjEyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMTMyMTI1LCAxMzIxMjksIDEzMjEzMywgMTMyMTM5LCAxMzIxNDUsIDEzMjE0OSwgMTMyMTU0LCAxMzIxNTksIDEzMjE2NCwgCisgICAgMTMyMTY5LCAxMzIxNzMsIDEzMjE3OCwgMTMyMTgzLCAxMzIxODgsIDEzMjE5MiwgMTMyMTk3LCAxMzIyMDIsIDEzMjIwNywgCisgICAgMTMyMjExLCAxMzIyMTYsIDEzMjIyMSwgMTMyMjI2LCAxMzIyMzEsIDEzMjIzNiwgMTMyMjQxLCAxMzIyNDYsIDEzMjI1MSwgCisgICAgMTMyMjU1LCAxMzIyNjAsIDEzMjI2NSwgMTMyMjcwLCAxMzIyNzUsIDEzMjI4MCwgMTMyMjg1LCAxMzIyOTAsIDEzMjI5NSwgCisgICAgMTMyMzAwLCAxMzIzMDUsIDEzMjMxMCwgMTMyMzE3LCAxMzIzMjIsIDEzMjMyOSwgMTMyMzM0LCAxMzIzMzksIDEzMjM0NCwgCisgICAgMTMyMzQ5LCAxMzIzNTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjM1OSwgCisgICAgMTMyMzYzLCAxMzIzNjksIDEzMjM3MiwgMTMyMzc1LCAxMzIzNzksIDEzMjM4MywgMTMyMzg3LCAxMzIzOTEsIDEzMjM5NSwgCisgICAgMTMyMzk5LCAxMzI0MDMsIDEzMjQwOSwgMTMyNDE1LCAxMzI0MjEsIDEzMjQyNywgMTMyNDMzLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjkzNDQsIDEyOTM0NywgMTI5MzUxLCAKLSAgICAxMjkzNTUsIDEyOTM1OSwgMTI5MzYyLCAxMjkzNjYsIDEyOTM3MSwgMTI5Mzc1LCAxMjkzNzksIDEyOTM4MywgMTI5Mzg3LCAKLSAgICAxMjkzOTEsIDEyOTM5NiwgMTI5NDAxLCAxMjk0MDUsIDEyOTQwOSwgMTI5NDEzLCAxMjk0MTcsIDEyOTQyMiwgMTI5NDI4LCAKLSAgICAxMjk0MzIsIDEyOTQzNiwgMTI5NDQwLCAxMjk0NDQsIDEyOTQ0OCwgMTI5NDUyLCAxMjk0NTYsIDEyOTQ2MCwgMTI5NDY0LCAKLSAgICAxMjk0NjgsIDEyOTQ3MSwgMTI5NDc1LCAxMjk0NzksIDEyOTQ4MywgMTI5NDg3LCAxMjk0OTEsIDEyOTQ5NSwgMTI5NTAxLCAKLSAgICAxMjk1MDQsIDEyOTUwOCwgMTI5NTEyLCAxMjk1MTYsIDEyOTUyMCwgMTI5NTI0LCAxMjk1MjgsIDEyOTUzMiwgMTI5NTM2LCAKLSAgICAxMjk1NDAsIDEyOTU0NSwgMTI5NTUwLCAxMjk1NTYsIDEyOTU2MCwgMTI5NTY0LCAxMjk1NjgsIDEyOTU3MiwgMTI5NTc2LCAKLSAgICAxMjk1ODAsIDEyOTU4NSwgMTI5NTg5LCAxMjk1OTMsIDEyOTU5NywgMTI5NjAxLCAxMjk2MDUsIDEyOTYxMSwgMTI5NjE1LCAKLSAgICAxMjk2MTksIDEyOTYyMywgMTI5NjI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk2MzEsIDEyOTYzNSwgCi0gICAgMTI5NjM5LCAxMjk2NDUsIDEyOTY1MSwgMTI5NjU1LCAxMjk2NjAsIDEyOTY2NSwgMTI5NjcwLCAxMjk2NzUsIDEyOTY3OSwgCi0gICAgMTI5Njg0LCAxMjk2ODksIDEyOTY5NCwgMTI5Njk4LCAxMjk3MDMsIDEyOTcwOCwgMTI5NzEzLCAxMjk3MTcsIDEyOTcyMiwgCi0gICAgMTI5NzI3LCAxMjk3MzIsIDEyOTczNywgMTI5NzQyLCAxMjk3NDcsIDEyOTc1MiwgMTI5NzU3LCAxMjk3NjEsIDEyOTc2NiwgCi0gICAgMTI5NzcxLCAxMjk3NzYsIDEyOTc4MSwgMTI5Nzg2LCAxMjk3OTEsIDEyOTc5NiwgMTI5ODAxLCAxMjk4MDYsIDEyOTgxMSwgCi0gICAgMTI5ODE2LCAxMjk4MjMsIDEyOTgyOCwgMTI5ODM1LCAxMjk4NDAsIDEyOTg0NSwgMTI5ODUwLCAxMjk4NTUsIDEyOTg2MCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTI5ODY1LCAxMjk4NjksIDEyOTg3NSwgCi0gICAgMTI5ODc4LCAxMjk4ODEsIDEyOTg4NSwgMTI5ODg5LCAxMjk4OTMsIDEyOTg5NywgMTI5OTAxLCAxMjk5MDUsIDEyOTkwOSwgCi0gICAgMTI5OTE1LCAxMjk5MjEsIDEyOTkyNywgMTI5OTMzLCAxMjk5MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMjQzOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMyNDQzLCAxMzI0NDYsIAorICAgIDEzMjQ0OSwgMTMyNDUyLCAxMzI0NTUsIDEzMjQ1OCwgMTMyNDYxLCAxMzI0NjQsIDEzMjQ2NywgMTMyNDcwLCAxMzI0NzMsIAorICAgIDEzMjQ3NiwgMTMyNDc5LCAxMzI0ODIsIDEzMjQ4NSwgMTMyNDg4LCAxMzI0OTEsIDEzMjQ5NCwgMTMyNDk3LCAxMzI1MDAsIAorICAgIDEzMjUwMywgMTMyNTA2LCAxMzI1MDksIDEzMjUxMiwgMTMyNTE1LCAxMzI1MTgsIDEzMjUyMSwgMTMyNTI0LCAxMzI1MjcsIAorICAgIDEzMjUzMCwgMTMyNTMzLCAxMzI1MzYsIDEzMjUzOSwgMTMyNTQyLCAxMzI1NDUsIDEzMjU0OCwgMTMyNTUxLCAxMzI1NTQsIAorICAgIDEzMjU1NywgMTMyNTYwLCAxMzI1NjMsIDEzMjU2NiwgMTMyNTY5LCAxMzI1NzIsIDEzMjU3NSwgMTMyNTc4LCAxMzI1ODEsIAorICAgIDEzMjU4NCwgMTMyNTg3LCAxMzI1OTAsIDEzMjU5MywgMTMyNTk2LCAxMzI1OTksIDEzMjYwMiwgMTMyNjA1LCAxMzI2MDgsIAorICAgIDEzMjYxMSwgMTMyNjE0LCAxMzI2MTcsIDEzMjYyMCwgMTMyNjIzLCAxMzI2MjYsIDEzMjYyOSwgMTMyNjMyLCAxMzI2MzUsIAorICAgIDEzMjYzOCwgMTMyNjQxLCAxMzI2NDQsIDEzMjY0NywgMTMyNjUwLCAxMzI2NTMsIDEzMjY1NiwgMTMyNjU5LCAxMzI2NjIsIAorICAgIDEzMjY2NSwgMTMyNjY4LCAxMzI2NzEsIDEzMjY3NCwgMTMyNjc3LCAxMzI2ODAsIDEzMjY4MywgMTMyNjg2LCAxMzI2ODksIAorICAgIDEzMjY5MiwgMTMyNjk1LCAxMzI2OTgsIDEzMjcwMSwgMTMyNzA0LCAxMzI3MDcsIDEzMjcxMCwgMTMyNzEzLCAxMzI3MTYsIAorICAgIDEzMjcxOSwgMTMyNzIyLCAxMzI3MjUsIDEzMjcyOCwgMTMyNzMxLCAxMzI3MzQsIDEzMjczNywgMTMyNzQwLCAxMzI3NDMsIAorICAgIDEzMjc0NiwgMTMyNzQ5LCAxMzI3NTIsIDEzMjc1NSwgMTMyNzU4LCAxMzI3NjEsIDEzMjc2NCwgMTMyNzY3LCAxMzI3NzAsIAorICAgIDEzMjc3MywgMTMyNzc2LCAxMzI3NzksIDEzMjc4MiwgMTMyNzg1LCAxMzI3ODgsIDEzMjc5MSwgMTMyNzk0LCAxMzI3OTcsIAorICAgIDEzMjgwMCwgMTMyODAzLCAxMzI4MDYsIDEzMjgwOSwgMTMyODEyLCAxMzI4MTUsIDEzMjgxOCwgMTMyODIxLCAxMzI4MjQsIAorICAgIDEzMjgyNywgMTMyODMwLCAxMzI4MzMsIDEzMjgzNiwgMTMyODM5LCAxMzI4NDIsIDEzMjg0NSwgMTMyODQ4LCAxMzI4NTEsIAorICAgIDEzMjg1NCwgMTMyODU3LCAxMzI4NjAsIDEzMjg2MywgMTMyODY2LCAxMzI4NjksIDEzMjg3MiwgMTMyODc1LCAxMzI4NzgsIAorICAgIDEzMjg4MSwgMTMyODg0LCAxMzI4ODcsIDEzMjg5MCwgMTMyODkzLCAxMzI4OTYsIDEzMjg5OSwgMTMyOTAyLCAxMzI5MDUsIAorICAgIDEzMjkwOCwgMTMyOTExLCAxMzI5MTQsIDEzMjkxNywgMTMyOTIwLCAxMzI5MjMsIDEzMjkyNiwgMTMyOTI5LCAxMzI5MzIsIAorICAgIDEzMjkzNSwgMTMyOTM4LCAxMzI5NDEsIDEzMjk0NCwgMTMyOTQ3LCAxMzI5NTAsIDEzMjk1MywgMTMyOTU2LCAxMzI5NTksIAorICAgIDEzMjk2MiwgMTMyOTY1LCAxMzI5NjgsIDEzMjk3MSwgMTMyOTc0LCAxMzI5NzcsIDEzMjk4MCwgMTMyOTgzLCAxMzI5ODYsIAorICAgIDEzMjk4OSwgMTMyOTkyLCAxMzI5OTUsIDEzMjk5OCwgMTMzMDAxLCAxMzMwMDQsIDEzMzAwNywgMTMzMDEwLCAxMzMwMTMsIAorICAgIDEzMzAxNiwgMTMzMDE5LCAxMzMwMjIsIDEzMzAyNSwgMTMzMDI4LCAxMzMwMzEsIDEzMzAzNCwgMTMzMDM3LCAxMzMwNDAsIAorICAgIDEzMzA0MywgMTMzMDQ2LCAxMzMwNDksIDEzMzA1MiwgMTMzMDU1LCAxMzMwNTgsIDEzMzA2MSwgMTMzMDY0LCAxMzMwNjcsIAorICAgIDEzMzA3MCwgMTMzMDczLCAxMzMwNzYsIDEzMzA3OSwgMTMzMDgyLCAxMzMwODUsIDEzMzA4OCwgMTMzMDkxLCAxMzMwOTQsIAorICAgIDEzMzA5NywgMTMzMTAwLCAxMzMxMDMsIDEzMzEwNiwgMTMzMTA5LCAxMzMxMTIsIDEzMzExNSwgMTMzMTE4LCAxMzMxMjEsIAorICAgIDEzMzEyNCwgMTMzMTI3LCAxMzMxMzAsIDEzMzEzMywgMTMzMTM2LCAxMzMxMzksIDEzMzE0MiwgMTMzMTQ1LCAxMzMxNDgsIAorICAgIDEzMzE1MSwgMTMzMTU0LCAxMzMxNTcsIDEzMzE2MCwgMTMzMTYzLCAxMzMxNjYsIDEzMzE2OSwgMTMzMTcyLCAxMzMxNzUsIAorICAgIDEzMzE3OCwgMTMzMTgxLCAxMzMxODQsIDEzMzE4NywgMTMzMTkwLCAxMzMxOTMsIDEzMzE5NiwgMTMzMTk5LCAxMzMyMDIsIAorICAgIDEzMzIwNSwgMTMzMjA4LCAxMzMyMTEsIDEzMzIxNCwgMTMzMjE3LCAxMzMyMjAsIDEzMzIyMywgMTMzMjI2LCAxMzMyMjksIAorICAgIDEzMzIzMiwgMTMzMjM1LCAxMzMyMzgsIDEzMzI0MSwgMTMzMjQ0LCAxMzMyNDcsIDEzMzI1MCwgMTMzMjUzLCAxMzMyNTYsIAorICAgIDEzMzI1OSwgMTMzMjYyLCAxMzMyNjUsIDEzMzI2OCwgMTMzMjcxLCAxMzMyNzQsIDEzMzI3NywgMTMzMjgwLCAxMzMyODMsIAorICAgIDEzMzI4NiwgMTMzMjg5LCAxMzMyOTIsIDEzMzI5NSwgMTMzMjk4LCAxMzMzMDEsIDEzMzMwNCwgMTMzMzA3LCAxMzMzMTAsIAorICAgIDEzMzMxMywgMTMzMzE2LCAxMzMzMTksIDEzMzMyMiwgMTMzMzI1LCAxMzMzMjgsIDEzMzMzMSwgMTMzMzM0LCAxMzMzMzcsIAorICAgIDEzMzM0MCwgMTMzMzQzLCAxMzMzNDYsIDEzMzM0OSwgMTMzMzUyLCAxMzMzNTUsIDEzMzM1OCwgMTMzMzYxLCAxMzMzNjQsIAorICAgIDEzMzM2NywgMTMzMzcwLCAxMzMzNzMsIDEzMzM3NiwgMTMzMzc5LCAxMzMzODIsIDEzMzM4NSwgMTMzMzg4LCAxMzMzOTEsIAorICAgIDEzMzM5NCwgMTMzMzk3LCAxMzM0MDAsIDEzMzQwMywgMTMzNDA2LCAxMzM0MDksIDEzMzQxMiwgMTMzNDE1LCAxMzM0MTgsIAorICAgIDEzMzQyMSwgMTMzNDI0LCAxMzM0MjcsIDEzMzQzMCwgMTMzNDMzLCAxMzM0MzYsIDEzMzQzOSwgMTMzNDQyLCAxMzM0NDUsIAorICAgIDEzMzQ0OCwgMTMzNDUxLCAxMzM0NTQsIDEzMzQ1NywgMTMzNDYwLCAxMzM0NjMsIDEzMzQ2NiwgMTMzNDY5LCAxMzM0NzIsIAorICAgIDEzMzQ3NSwgMTMzNDc4LCAxMzM0ODEsIDEzMzQ4NCwgMTMzNDg3LCAxMzM0OTAsIDEzMzQ5MywgMTMzNDk2LCAxMzM0OTksIAorICAgIDEzMzUwMiwgMTMzNTA1LCAxMzM1MDgsIDEzMzUxMSwgMTMzNTE0LCAxMzM1MTcsIDEzMzUyMCwgMTMzNTIzLCAxMzM1MjYsIAorICAgIDEzMzUyOSwgMTMzNTMyLCAxMzM1MzUsIDEzMzUzOCwgMTMzNTQxLCAxMzM1NDQsIDEzMzU0NywgMTMzNTUwLCAxMzM1NTMsIAorICAgIDEzMzU1NiwgMTMzNTU5LCAxMzM1NjIsIDEzMzU2NSwgMTMzNTY4LCAxMzM1NzEsIDEzMzU3NCwgMTMzNTc3LCAxMzM1ODAsIAorICAgIDEzMzU4MywgMTMzNTg2LCAxMzM1ODksIDEzMzU5MiwgMTMzNTk1LCAxMzM1OTgsIDEzMzYwMSwgMTMzNjA0LCAxMzM2MDcsIAorICAgIDEzMzYxMCwgMTMzNjEzLCAxMzM2MTYsIDEzMzYxOSwgMTMzNjIyLCAxMzM2MjUsIDEzMzYyOCwgMTMzNjMxLCAxMzM2MzQsIAorICAgIDEzMzYzNywgMTMzNjQwLCAxMzM2NDMsIDEzMzY0NiwgMTMzNjQ5LCAxMzM2NTIsIDEzMzY1NSwgMTMzNjU4LCAxMzM2NjEsIAorICAgIDEzMzY2NCwgMTMzNjY3LCAxMzM2NzAsIDEzMzY3MywgMTMzNjc2LCAxMzM2NzksIDEzMzY4MiwgMTMzNjg1LCAxMzM2ODgsIAorICAgIDEzMzY5MSwgMTMzNjk0LCAxMzM2OTcsIDEzMzcwMCwgMTMzNzAzLCAxMzM3MDYsIDEzMzcwOSwgMTMzNzEyLCAxMzM3MTUsIAorICAgIDEzMzcxOCwgMTMzNzIxLCAxMzM3MjQsIDEzMzcyNywgMTMzNzMwLCAxMzM3MzMsIDEzMzczNiwgMTMzNzM5LCAxMzM3NDIsIAorICAgIDEzMzc0NSwgMTMzNzQ4LCAxMzM3NTEsIDEzMzc1NCwgMTMzNzU3LCAxMzM3NjAsIDEzMzc2MywgMTMzNzY2LCAxMzM3NjksIAorICAgIDEzMzc3MiwgMTMzNzc1LCAxMzM3NzgsIDEzMzc4MSwgMTMzNzg0LCAxMzM3ODcsIDEzMzc5MCwgMTMzNzkzLCAxMzM3OTYsIAorICAgIDEzMzc5OSwgMTMzODAyLCAxMzM4MDUsIDEzMzgwOCwgMTMzODExLCAxMzM4MTQsIDEzMzgxNywgMTMzODIwLCAxMzM4MjMsIAorICAgIDEzMzgyNiwgMTMzODI5LCAxMzM4MzIsIDEzMzgzNSwgMTMzODM4LCAxMzM4NDEsIDEzMzg0NCwgMTMzODQ3LCAxMzM4NTAsIAorICAgIDEzMzg1MywgMTMzODU2LCAxMzM4NTksIDEzMzg2MiwgMTMzODY1LCAxMzM4NjgsIDEzMzg3MSwgMTMzODc0LCAxMzM4NzcsIAorICAgIDEzMzg4MCwgMTMzODgzLCAxMzM4ODYsIDEzMzg4OSwgMTMzODkyLCAxMzM4OTUsIDEzMzg5OCwgMTMzOTAxLCAxMzM5MDQsIAorICAgIDEzMzkwNywgMTMzOTEwLCAxMzM5MTMsIDEzMzkxNiwgMTMzOTE5LCAxMzM5MjIsIDEzMzkyNSwgMTMzOTI4LCAxMzM5MzEsIAorICAgIDEzMzkzNCwgMTMzOTM3LCAxMzM5NDAsIDEzMzk0MywgMTMzOTQ2LCAxMzM5NDksIDEzMzk1MiwgMTMzOTU1LCAxMzM5NTgsIAorICAgIDEzMzk2MSwgMTMzOTY0LCAxMzM5NjcsIDEzMzk3MCwgMTMzOTczLCAxMzM5NzYsIDEzMzk3OSwgMTMzOTgyLCAxMzM5ODUsIAorICAgIDEzMzk4OCwgMTMzOTkxLCAxMzM5OTQsIDEzMzk5NywgMTM0MDAwLCAxMzQwMDMsIDEzNDAwNiwgMTM0MDA5LCAxMzQwMTIsIAorICAgIDEzNDAxNSwgMTM0MDE4LCAxMzQwMjEsIDEzNDAyNCwgMTM0MDI3LCAxMzQwMzAsIDEzNDAzMywgMTM0MDM2LCAxMzQwMzksIAorICAgIDEzNDA0MiwgMTM0MDQ1LCAxMzQwNDgsIDEzNDA1MSwgMTM0MDU0LCAxMzQwNTcsIDEzNDA2MCwgMTM0MDYzLCAxMzQwNjYsIAorICAgIDEzNDA2OSwgMTM0MDcyLCAxMzQwNzUsIDEzNDA3OCwgMTM0MDgxLCAxMzQwODQsIDEzNDA4NywgMTM0MDkwLCAxMzQwOTMsIAorICAgIDEzNDA5NiwgMTM0MDk5LCAxMzQxMDIsIDEzNDEwNSwgMTM0MTA4LCAxMzQxMTEsIDEzNDExNCwgMTM0MTE3LCAxMzQxMjAsIAorICAgIDEzNDEyMywgMTM0MTI2LCAxMzQxMjksIDEzNDEzMiwgMTM0MTM1LCAxMzQxMzgsIDEzNDE0MSwgMTM0MTQ0LCAxMzQxNDcsIAorICAgIDEzNDE1MCwgMTM0MTUzLCAxMzQxNTYsIDEzNDE1OSwgMTM0MTYyLCAxMzQxNjUsIDEzNDE2OCwgMTM0MTcxLCAxMzQxNzQsIAorICAgIDEzNDE3NywgMTM0MTgwLCAxMzQxODMsIDEzNDE4NiwgMTM0MTg5LCAxMzQxOTIsIDEzNDE5NSwgMTM0MTk4LCAxMzQyMDEsIAorICAgIDEzNDIwNCwgMTM0MjA3LCAxMzQyMTAsIDEzNDIxMywgMTM0MjE2LCAxMzQyMTksIDEzNDIyMiwgMTM0MjI1LCAxMzQyMjgsIAorICAgIDEzNDIzMSwgMTM0MjM0LCAxMzQyMzcsIDEzNDI0MCwgMTM0MjQzLCAxMzQyNDYsIDEzNDI0OSwgMTM0MjUyLCAxMzQyNTUsIAorICAgIDEzNDI1OCwgMTM0MjYxLCAxMzQyNjQsIDEzNDI2NywgMTM0MjcwLCAxMzQyNzMsIDEzNDI3NiwgMTM0Mjc5LCAxMzQyODIsIAorICAgIDEzNDI4NSwgMTM0Mjg4LCAxMzQyOTEsIDEzNDI5NCwgMTM0Mjk3LCAxMzQzMDAsIDEzNDMwMywgMTM0MzA2LCAxMzQzMDksIAorICAgIDEzNDMxMiwgMTM0MzE1LCAxMzQzMTgsIDEzNDMyMSwgMTM0MzI0LCAxMzQzMjcsIDEzNDMzMCwgMTM0MzMzLCAxMzQzMzYsIAorICAgIDEzNDMzOSwgMTM0MzQyLCAxMzQzNDUsIDEzNDM0OCwgMTM0MzUxLCAxMzQzNTQsIDEzNDM1NywgMTM0MzYwLCAxMzQzNjMsIAorICAgIDEzNDM2NiwgMTM0MzY5LCAxMzQzNzIsIDEzNDM3NSwgMTM0Mzc4LCAxMzQzODEsIDEzNDM4NCwgMTM0Mzg3LCAxMzQzOTAsIAorICAgIDEzNDM5MywgMTM0Mzk2LCAxMzQzOTksIDEzNDQwMiwgMTM0NDA1LCAxMzQ0MDgsIDEzNDQxMSwgMTM0NDE0LCAxMzQ0MTcsIAorICAgIDEzNDQyMCwgMTM0NDIzLCAxMzQ0MjYsIDEzNDQyOSwgMTM0NDMyLCAxMzQ0MzUsIDEzNDQzOCwgMTM0NDQxLCAxMzQ0NDQsIAorICAgIDEzNDQ0NywgMTM0NDUwLCAxMzQ0NTMsIDEzNDQ1NiwgMTM0NDU5LCAxMzQ0NjIsIDEzNDQ2NSwgMTM0NDY4LCAxMzQ0NzEsIAorICAgIDEzNDQ3NCwgMTM0NDc3LCAxMzQ0ODAsIDEzNDQ4MywgMTM0NDg2LCAxMzQ0ODksIDEzNDQ5MiwgMTM0NDk1LCAxMzQ0OTgsIAorICAgIDEzNDUwMSwgMTM0NTA0LCAxMzQ1MDcsIDEzNDUxMCwgMTM0NTEzLCAxMzQ1MTYsIDEzNDUxOSwgMTM0NTIyLCAxMzQ1MjUsIAorICAgIDEzNDUyOCwgMTM0NTMxLCAxMzQ1MzQsIDEzNDUzNywgMTM0NTQwLCAxMzQ1NDMsIDEzNDU0NiwgMTM0NTQ5LCAxMzQ1NTIsIAorICAgIDEzNDU1NSwgMTM0NTU4LCAxMzQ1NjEsIDEzNDU2NCwgMTM0NTY3LCAxMzQ1NzAsIDEzNDU3MywgMTM0NTc2LCAxMzQ1NzksIAorICAgIDEzNDU4MiwgMTM0NTg1LCAxMzQ1ODgsIDEzNDU5MSwgMTM0NTk0LCAxMzQ1OTcsIDEzNDYwMCwgMTM0NjAzLCAxMzQ2MDYsIAorICAgIDEzNDYwOSwgMTM0NjEyLCAxMzQ2MTUsIDEzNDYxOCwgMTM0NjIxLCAxMzQ2MjQsIDEzNDYyNywgMTM0NjMwLCAxMzQ2MzMsIAorICAgIDEzNDYzNiwgMTM0NjM5LCAxMzQ2NDIsIDEzNDY0NSwgMTM0NjQ4LCAxMzQ2NTEsIDEzNDY1NCwgMTM0NjU3LCAxMzQ2NjAsIAorICAgIDEzNDY2MywgMTM0NjY2LCAxMzQ2NjksIDEzNDY3MiwgMTM0Njc1LCAxMzQ2NzgsIDEzNDY4MSwgMTM0Njg0LCAxMzQ2ODcsIAorICAgIDEzNDY5MCwgMTM0NjkzLCAxMzQ2OTYsIDEzNDY5OSwgMTM0NzAyLCAxMzQ3MDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDEzNDcwOCwgMTM0NzEzLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMjk5NDUsIDEyOTk1MCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0xOTQyNiw2NTAgKzIwNjY4LDY4MyBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNDcxOSwgMTM0NzIzLCAxMzQ3MjcsIDEzNDczMSwgMTM0NzM1LCAxMzQ3MzksIDEzNDc0MywgMTM0NzQ2LCAxMzQ3NTAsIAorICAgIDEzNDc1NCwgMTM0NzU4LCAxMzQ3NjIsIDEzNDc2NSwgMTM0NzcxLCAxMzQ3NzcsIDEzNDc4MywgMTM0Nzg5LCAxMzQ3OTUsIAorICAgIDEzNDc5OSwgMTM0ODA1LCAxMzQ4MDksIDEzNDgxMywgMTM0ODE5LCAxMzQ4MjMsIDEzNDgyNywgMTM0ODMxLCAxMzQ4MzUsIAorICAgIDEzNDgzOSwgMTM0ODQzLCAxMzQ4NDcsIDEzNDg1MywgMTM0ODU5LCAxMzQ4NjUsIDEzNDg3MSwgMTM0ODc4LCAxMzQ4ODUsIAorICAgIDEzNDg5MiwgMTM0OTAyLCAxMzQ5MDksIDEzNDkxNiwgMTM0OTIyLCAxMzQ5MjgsIDEzNDkzNCwgMTM0OTQwLCAxMzQ5NDgsIAorICAgIDEzNDk1NiwgMTM0OTY0LCAxMzQ5NzIsIDEzNDk4MSwgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwMSwgMTM1MDA4LCAxMzUwMTQsIAorICAgIDEzNTAyMSwgMTM1MDI3LCAxMzUwMzUsIDEzNTAzOSwgMTM1MDQzLCAxMzUwNDgsIDEzNTA1NCwgMTM1MDYwLCAxMzUwNjgsIAorICAgIDEzNTA3NiwgMTM1MDgyLCAxMzUwODksIDEzNTA5MiwgMTM1MDk4LCAxMzUxMDIsIDEzNTEwNSwgMTM1MTA5LCAxMzUxMTIsIAorICAgIDEzNTExNSwgMTM1MTE5LCAxMzUxMjQsIDEzNTEyOCwgMTM1MTMyLCAxMzUxMzgsIDEzNTE0MywgMTM1MTQ5LCAxMzUxNTMsIAorICAgIDEzNTE1NywgMTM1MTYwLCAxMzUxNjQsIDEzNTE2OCwgMTM1MTczLCAxMzUxNzcsIDEzNTE4MiwgMTM1MTg2LCAxMzUxOTEsIAorICAgIDEzNTE5NSwgMTM1MTk5LCAxMzUyMDMsIDEzNTIwNywgMTM1MjExLCAxMzUyMTUsIDEzNTIxOSwgMTM1MjIzLCAxMzUyMjgsIAorICAgIDEzNTIzMywgMTM1MjM4LCAxMzUyNDMsIDEzNTI0OSwgMTM1MjU1LCAxMzUyNjEsIDEzNTI2NywgMTM1MjczLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxMzUyNzgsIDEzNTI4NiwgMTM1Mjk1LCAxMzUzMDMsIDEzNTMxMCwgMTM1MzE4LCAxMzUzMjUsIDEzNTMzMiwgCisgICAgMTM1MzQxLCAxMzUzNDgsIDEzNTM1NSwgMTM1MzYyLCAxMzUzNzAsIDAsIDAsIDAsIDEzNTM3OCwgMTM1MzgzLCAxMzUzOTAsIAorICAgIDEzNTM5NiwgMTM1NDAzLCAxMzU0MDksIDEzNTQxNSwgMTM1NDIxLCAxMzU0MjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDEzNTQzMywgMTM1NDM4LCAxMzU0NDUsIDEzNTQ1MSwgMTM1NDU4LCAxMzU0NjQsIDEzNTQ3MCwgMTM1NDc2LCAxMzU0ODIsIAorICAgIDEzNTQ4OCwgMCwgMCwgMTM1NDkzLCAxMzU0OTksIDEzNTUwNSwgMTM1NTA4LCAxMzU1MTcsIDEzNTUyNCwgMTM1NTMyLCAKKyAgICAxMzU1MzksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEyOTk1NiwgMTI5OTYwLCAxMjk5NjQsIDEyOTk2OCwgMTI5OTcyLCAxMjk5NzYsIAotICAgIDEyOTk4MCwgMTI5OTgzLCAxMjk5ODcsIDEyOTk5MSwgMTI5OTk1LCAxMjk5OTksIDEzMDAwMiwgMTMwMDA4LCAxMzAwMTMsIAotICAgIDEzMDAxOSwgMTMwMDI1LCAxMzAwMzAsIDEzMDAzNCwgMTMwMDQwLCAxMzAwNDQsIDEzMDA0OCwgMTMwMDU0LCAxMzAwNTgsIAotICAgIDEzMDA2MiwgMTMwMDY2LCAxMzAwNzAsIDEzMDA3NCwgMTMwMDc4LCAxMzAwODEsIDEzMDA4NywgMTMwMDkzLCAxMzAwOTksIAotICAgIDEzMDEwNSwgMTMwMTEyLCAxMzAxMTksIDEzMDEyNiwgMTMwMTM2LCAxMzAxNDMsIDEzMDE1MCwgMTMwMTU1LCAxMzAxNjAsIAotICAgIDEzMDE2NSwgMTMwMTcwLCAxMzAxNzcsIDEzMDE4NCwgMTMwMTkxLCAxMzAxOTgsIDEzMDIwNywgMTMwMjEzLCAxMzAyMjAsIAotICAgIDEzMDIyNiwgMTMwMjMzLCAxMzAyMzksIDEzMDI0NiwgMTMwMjUxLCAxMzAyNTgsIDEzMDI2MiwgMTMwMjY2LCAxMzAyNzEsIAotICAgIDEzMDI3NywgMTMwMjgzLCAxMzAyOTAsIDEzMDI5NywgMTMwMzAzLCAxMzAzMTAsIDEzMDMxMywgMTMwMzE5LCAxMzAzMjMsIAotICAgIDEzMDMyNiwgMTMwMzMwLCAxMzAzMzMsIDEzMDMzNiwgMTMwMzQwLCAxMzAzNDUsIDEzMDM0OSwgMTMwMzUzLCAxMzAzNTksIAotICAgIDEzMDM2NCwgMTMwMzcwLCAxMzAzNzQsIDEzMDM3OCwgMTMwMzgxLCAxMzAzODUsIDEzMDM4OSwgMTMwMzk0LCAxMzAzOTgsIAotICAgIDEzMDQwMywgMTMwNDA3LCAxMzA0MTIsIDEzMDQxNiwgMTMwNDIwLCAxMzA0MjQsIDEzMDQyOCwgMTMwNDMyLCAxMzA0MzYsIAotICAgIDEzMDQ0MCwgMTMwNDQ0LCAxMzA0NDksIDEzMDQ1NCwgMTMwNDU5LCAxMzA0NjQsIDEzMDQ3MCwgMTMwNDc2LCAxMzA0ODIsIAotICAgIDEzMDQ4OCwgMTMwNDk0LCAwLCAwLCAwLCAwLCAwLCAxMzA0OTksIDEzMDUwNywgMTMwNTE2LCAxMzA1MjQsIDEzMDUzMSwgCi0gICAgMTMwNTM5LCAxMzA1NDYsIDEzMDU1MywgMTMwNTYyLCAxMzA1NjksIDEzMDU3NiwgMTMwNTgzLCAxMzA1OTEsIDAsIDAsIDAsIAotICAgIDEzMDU5OSwgMTMwNjA0LCAxMzA2MTEsIDEzMDYxNywgMTMwNjI0LCAxMzA2MzAsIDEzMDYzNiwgMTMwNjQyLCAxMzA2NDgsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzMDY1NCwgMTMwNjU5LCAxMzA2NjYsIDEzMDY3MiwgMTMwNjc5LCAxMzA2ODUsIAotICAgIDEzMDY5MSwgMTMwNjk3LCAxMzA3MDMsIDEzMDcwOSwgMCwgMCwgMTMwNzE0LCAxMzA3MjAsIDEzMDcyNiwgMTMwNzI5LCAKLSAgICAxMzA3MzgsIDEzMDc0NSwgMTMwNzUzLCAxMzA3NjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNTU0NiwgCisgICAgMTM1NTUxLCAxMzU1NTYsIDEzNTU2MSwgMTM1NTY4LCAxMzU1NzUsIDEzNTU4MiwgMTM1NTg5LCAxMzU1OTQsIDEzNTU5OSwgCisgICAgMTM1NjA0LCAxMzU2MDksIDEzNTYxNiwgMTM1NjIxLCAxMzU2MjgsIDEzNTYzNSwgMTM1NjQwLCAxMzU2NDUsIDEzNTY1MCwgCisgICAgMTM1NjU3LCAxMzU2NjIsIDEzNTY2NywgMTM1Njc0LCAxMzU2ODEsIDEzNTY4NiwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMywgCisgICAgMTM1NzEwLCAxMzU3MTcsIDEzNTcyMiwgMTM1NzI3LCAxMzU3MzQsIDEzNTc0MSwgMTM1NzQ4LCAxMzU3NTUsIDEzNTc2MCwgCisgICAgMTM1NzY1LCAxMzU3NzAsIDEzNTc3NywgMTM1NzgyLCAxMzU3ODcsIDEzNTc5MiwgMTM1Nzk5LCAxMzU4MDgsIDEzNTgxNSwgCisgICAgMTM1ODIwLCAxMzU4MjUsIDEzNTgzMCwgMTM1ODM1LCAxMzU4NDAsIDEzNTg0NSwgMTM1ODU0LCAxMzU4NjEsIDEzNTg2NiwgCisgICAgMTM1ODczLCAxMzU4ODAsIDEzNTg4NSwgMTM1ODkwLCAxMzU4OTUsIDEzNTkwMiwgMTM1OTA3LCAxMzU5MTQsIDEzNTkyMSwgCisgICAgMTM1OTI2LCAxMzU5MzEsIDEzNTkzNiwgMTM1OTQzLCAxMzU5NTAsIDEzNTk1NSwgMTM1OTYwLCAxMzU5NjcsIDEzNTk3NCwgCisgICAgMTM1OTgxLCAxMzU5ODYsIDEzNTk5MSwgMTM1OTk2LCAxMzYwMDEsIDEzNjAwOCwgMTM2MDE3LCAxMzYwMjYsIDEzNjAzMSwgCisgICAgMTM2MDM4LCAxMzYwNDcsIDEzNjA1MiwgMTM2MDU3LCAxMzYwNjIsIDEzNjA2NywgMTM2MDc0LCAxMzYwODEsIDEzNjA4OCwgCisgICAgMTM2MDk1LCAxMzYxMDAsIDEzNjEwNSwgMTM2MTEwLCAxMzYxMTcsIDEzNjEyNCwgMTM2MTMxLCAxMzYxMzYsIDEzNjE0MSwgCisgICAgMTM2MTQ4LCAxMzYxNTMsIDEzNjE2MCwgMTM2MTY1LCAxMzYxNzIsIDEzNjE3NywgMTM2MTg0LCAxMzYxOTEsIDEzNjE5NiwgCisgICAgMTM2MjAxLCAxMzYyMDYsIDEzNjIxMSwgMTM2MjE2LCAxMzYyMjEsIDEzNjIyNiwgMTM2MjMxLCAxMzYyMzYsIDEzNjI0MywgCisgICAgMTM2MjUwLCAxMzYyNTcsIDEzNjI2NCwgMTM2MjcxLCAxMzYyODAsIDEzNjI4NSwgMTM2MjkwLCAxMzYyOTcsIDEzNjMwNCwgCisgICAgMTM2MzA5LCAxMzYzMTYsIDEzNjMyMywgMTM2MzMwLCAxMzYzMzcsIDEzNjM0NCwgMTM2MzUxLCAxMzYzNTYsIDEzNjM2MSwgCisgICAgMTM2MzY2LCAxMzYzNzEsIDEzNjM3NiwgMTM2Mzg1LCAxMzYzOTQsIDEzNjQwMywgMTM2NDEyLCAxMzY0MjEsIDEzNjQzMCwgCisgICAgMTM2NDM5LCAxMzY0NDgsIDEzNjQ1MywgMTM2NDY0LCAxMzY0NzUsIDEzNjQ4NCwgMTM2NDg5LCAxMzY0OTQsIDEzNjQ5OSwgCisgICAgMTM2NTA0LCAxMzY1MTMsIDEzNjUyMCwgMTM2NTI3LCAxMzY1MzQsIDEzNjU0MSwgMTM2NTQ4LCAxMzY1NTUsIDEzNjU2NCwgCisgICAgMTM2NTczLCAxMzY1ODQsIDEzNjU5MywgMTM2NjA0LCAxMzY2MTMsIDEzNjYyMCwgMTM2NjI5LCAxMzY2NDAsIDEzNjY0OSwgCisgICAgMTM2NjU4LCAxMzY2NjcsIDEzNjY3NiwgMTM2NjgzLCAxMzY2OTAsIDEzNjY5NywgMTM2NzA2LCAxMzY3MTUsIDEzNjcyNiwgCisgICAgMTM2NzM1LCAxMzY3NDQsIDEzNjc1NSwgMTM2NzYwLCAxMzY3NjUsIDEzNjc3NiwgMTM2Nzg0LCAxMzY3OTMsIDEzNjgwMiwgCisgICAgMTM2ODExLCAxMzY4MjIsIDEzNjgzMSwgMTM2ODQwLCAxMzY4NTEsIDEzNjg2MiwgMTM2ODczLCAxMzY4ODQsIDEzNjg5NSwgCisgICAgMTM2OTA2LCAxMzY5MTMsIDEzNjkyMCwgMTM2OTI3LCAxMzY5MzQsIDEzNjk0NSwgMTM2OTU0LCAxMzY5NjEsIDEzNjk2OCwgCisgICAgMTM2OTc1LCAxMzY5ODYsIDEzNjk5NywgMTM3MDA4LCAxMzcwMTksIDEzNzAzMCwgMTM3MDQxLCAxMzcwNTIsIDEzNzA2MywgCisgICAgMTM3MDcwLCAxMzcwNzcsIDEzNzA4NiwgMTM3MDk1LCAxMzcxMDIsIDEzNzEwOSwgMTM3MTE2LCAxMzcxMjUsIDEzNzEzNCwgCisgICAgMTM3MTQzLCAxMzcxNTAsIDEzNzE1OSwgMTM3MTY4LCAxMzcxNzcsIDEzNzE4NCwgMTM3MTkxLCAxMzcxOTYsIDEzNzIwMiwgCisgICAgMTM3MjA5LCAxMzcyMTYsIDEzNzIyMywgMTM3MjMwLCAxMzcyMzcsIDEzNzI0NCwgMTM3MjUzLCAxMzcyNjIsIDEzNzI3MSwgCisgICAgMTM3MjgwLCAxMzcyODcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzNzI5NiwgMTM3MzAyLCAxMzczMDcsIAorICAgIDEzNzMxMiwgMTM3MzE5LCAxMzczMjUsIDEzNzMzMSwgMTM3MzM3LCAxMzczNDMsIDEzNzM0OSwgMTM3MzU1LCAxMzczNjEsIAorICAgIDEzNzM2NSwgMTM3MzY5LCAxMzczNzUsIDEzNzM4MSwgMTM3Mzg3LCAxMzczOTEsIDEzNzM5NiwgMTM3NDAxLCAxMzc0MDUsIAorICAgIDEzNzQwOSwgMTM3NDEyLCAxMzc0MTgsIDEzNzQyNCwgMTM3NDMwLCAxMzc0MzYsIDEzNzQ0MiwgMTM3NDQ4LCAxMzc0NTQsIAorICAgIDEzNzQ2MCwgMTM3NDY2LCAxMzc0NzYsIDEzNzQ4NiwgMTM3NDkyLCAxMzc0OTgsIDEzNzUwOCwgMTM3NTE4LCAxMzc1MjQsIAorICAgIDAsIDAsIDEzNzUzMCwgMTM3NTM4LCAxMzc1NDMsIDEzNzU0OCwgMTM3NTU0LCAxMzc1NjAsIDEzNzU2NiwgMTM3NTcyLCAKKyAgICAxMzc1NzgsIDEzNzU4NCwgMTM3NTkxLCAxMzc1OTgsIDEzNzYwNCwgMTM3NjEwLCAxMzc2MTYsIDEzNzYyMiwgMTM3NjI4LCAKKyAgICAxMzc2MzQsIDEzNzY0MCwgMTM3NjQ2LCAxMzc2NTEsIDEzNzY1NywgMTM3NjYzLCAxMzc2NjksIDEzNzY3NSwgMTM3NjgxLCAKKyAgICAxMzc2OTAsIDEzNzY5NiwgMTM3NzAxLCAxMzc3MDksIDEzNzcxNiwgMTM3NzIzLCAxMzc3MzIsIDEzNzc0MSwgMTM3NzUwLCAKKyAgICAxMzc3NTksIDEzNzc2OCwgMTM3Nzc3LCAxMzc3ODYsIDEzNzc5NSwgMTM3ODA1LCAxMzc4MTUsIDEzNzgyMywgMTM3ODMxLCAKKyAgICAxMzc4NDAsIDEzNzg0OSwgMTM3ODU1LCAxMzc4NjEsIDEzNzg2NywgMTM3ODczLCAxMzc4ODEsIDEzNzg4OSwgMTM3ODkzLCAKKyAgICAxMzc4OTksIDEzNzkwNCwgMTM3OTEwLCAxMzc5MTYsIDEzNzkyMiwgMTM3OTI4LCAxMzc5MzQsIDEzNzk0MywgMTM3OTQ4LCAKKyAgICAxMzc5NTUsIDEzNzk2MCwgMTM3OTY1LCAxMzc5NzAsIDEzNzk3NiwgMTM3OTgyLCAxMzc5ODgsIDEzNzk5NSwgMTM4MDAwLCAKKyAgICAxMzgwMDUsIDEzODAxMCwgMTM4MDE1LCAxMzgwMjAsIDEzODAyNiwgMTM4MDMyLCAxMzgwMzgsIDEzODA0NCwgMTM4MDUwLCAKKyAgICAxMzgwNTYsIDEzODA2MiwgMTM4MDY4LCAxMzgwNzMsIDEzODA3OCwgMTM4MDgzLCAxMzgwODgsIDEzODA5MywgMTM4MDk4LCAKKyAgICAxMzgxMDMsIDEzODEwOCwgMTM4MTE0LCAxMzgxMjAsIDEzODEyNSwgMTM4MTMwLCAxMzgxMzUsIDEzODE0MCwgMTM4MTQ1LCAKKyAgICAxMzgxNTEsIDEzODE1OCwgMTM4MTYyLCAxMzgxNjYsIDEzODE3MCwgMTM4MTc0LCAxMzgxNzgsIDEzODE4MiwgMTM4MTg2LCAKKyAgICAxMzgxOTAsIDEzODE5OCwgMTM4MjA4LCAxMzgyMTIsIDEzODIxNiwgMTM4MjIyLCAxMzgyMjgsIDEzODIzNCwgMTM4MjQwLCAKKyAgICAxMzgyNDYsIDEzODI1MiwgMTM4MjU4LCAxMzgyNjQsIDEzODI3MCwgMTM4Mjc2LCAxMzgyODIsIDEzODI4OCwgMTM4Mjk0LCAKKyAgICAxMzgzMDAsIDEzODMwNCwgMTM4MzA4LCAxMzgzMTUsIDEzODMyMSwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOCwgMTM4MzQ1LCAKKyAgICAxMzgzNTAsIDEzODM1NiwgMTM4MzYyLCAxMzgzNjgsIDEzODM3NCwgMTM4Mzc5LCAxMzgzODMsIDEzODM4OSwgMTM4MzkzLCAKKyAgICAxMzgzOTcsIDEzODQwMSwgMTM4NDA3LCAxMzg0MTMsIDEzODQxNywgMTM4NDIzLCAxMzg0MjksIDEzODQzNSwgMTM4NDQxLCAKKyAgICAxMzg0NDcsIDEzODQ1NSwgMTM4NDYzLCAxMzg0NjksIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5OSwgMTM4NTExLCAKKyAgICAxMzg1MjUsIDEzODUzNywgMTM4NTQ5LCAxMzg1NjMsIDEzODU3NywgMTM4NTkxLCAxMzg1OTUsIDEzODYwMywgMTM4NjExLCAKKyAgICAxMzg2MTYsIDEzODYyMCwgMTM4NjI0LCAxMzg2MjgsIDEzODYzMiwgMTM4NjM2LCAxMzg2NDAsIDEzODY0NCwgMTM4NjUwLCAKKyAgICAxMzg2NTYsIDEzODY2MiwgMTM4NjY4LCAxMzg2NzYsIDEzODY4NSwgMTM4NjkyLCAxMzg2OTksIDEzODcwNywgMTM4NzE0LCAKKyAgICAxMzg3MjYsIDEzODczOCwgMTM4NzUwLCAxMzg3NjIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDEzODc2OSwgMTM4Nzc2LCAxMzg3ODMsIDEzODc5MCwgMTM4Nzk3LCAKKyAgICAxMzg4MDQsIDEzODgxMSwgMTM4ODE4LCAxMzg4MjUsIDEzODgzMiwgMTM4ODM5LCAxMzg4NDYsIDEzODg1MywgMTM4ODYwLCAKKyAgICAxMzg4NjcsIDEzODg3NCwgMTM4ODgxLCAxMzg4ODgsIDEzODg5NSwgMTM4OTAyLCAxMzg5MDksIDEzODkxNiwgMTM4OTIzLCAKKyAgICAxMzg5MzAsIDEzODkzNywgMTM4OTQ0LCAxMzg5NTEsIDEzODk1OCwgMTM4OTY1LCAxMzg5NzIsIDEzODk3OSwgMTM4OTg2LCAKKyAgICAxMzg5OTMsIDEzOTAwMCwgMTM5MDA3LCAxMzkwMTQsIDEzOTAyMSwgMTM5MDI4LCAxMzkwMzUsIDEzOTA0MiwgMTM5MDQ5LCAKKyAgICAxMzkwNTYsIDEzOTA2MywgMTM5MDcwLCAxMzkwNzcsIDEzOTA4NCwgMTM5MDkxLCAxMzkwOTgsIDEzOTEwNSwgMTM5MTEyLCAKKyAgICAxMzkxMTksIDEzOTEyNiwgMTM5MTMzLCAxMzkxNDAsIDEzOTE0NywgMTM5MTU0LCAxMzkxNjEsIDEzOTE2OCwgMTM5MTc1LCAKKyAgICAxMzkxODIsIDEzOTE4OSwgMTM5MTk2LCAxMzkyMDMsIDEzOTIxMCwgMTM5MjE3LCAxMzkyMjQsIDEzOTIzMSwgMTM5MjM2LCAKKyAgICAxMzkyNDEsIDEzOTI0NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMTMwNzY3LCAxMzA3NzIsIDEzMDc3NywgMTMwNzgyLCAxMzA3ODksIDEzMDc5NiwgMTMwODAzLCAKLSAgICAxMzA4MTAsIDEzMDgxNSwgMTMwODIwLCAxMzA4MjUsIDEzMDgzMCwgMTMwODM3LCAxMzA4NDIsIDEzMDg0OSwgMTMwODU2LCAKLSAgICAxMzA4NjEsIDEzMDg2NiwgMTMwODcxLCAxMzA4NzgsIDEzMDg4MywgMTMwODg4LCAxMzA4OTUsIDEzMDkwMiwgMTMwOTA3LCAKLSAgICAxMzA5MTIsIDEzMDkxNywgMTMwOTI0LCAxMzA5MzEsIDEzMDkzOCwgMTMwOTQzLCAxMzA5NDgsIDEzMDk1NSwgMTMwOTYyLCAKLSAgICAxMzA5NjksIDEzMDk3NiwgMTMwOTgxLCAxMzA5ODYsIDEzMDk5MSwgMTMwOTk4LCAxMzEwMDMsIDEzMTAwOCwgMTMxMDEzLCAKLSAgICAxMzEwMjAsIDEzMTAyOSwgMTMxMDM2LCAxMzEwNDEsIDEzMTA0NiwgMTMxMDUxLCAxMzEwNTYsIDEzMTA2MSwgMTMxMDY2LCAKLSAgICAxMzEwNzUsIDEzMTA4MiwgMTMxMDg3LCAxMzEwOTQsIDEzMTEwMSwgMTMxMTA2LCAxMzExMTEsIDEzMTExNiwgMTMxMTIzLCAKLSAgICAxMzExMjgsIDEzMTEzNSwgMTMxMTQyLCAxMzExNDcsIDEzMTE1MiwgMTMxMTU3LCAxMzExNjQsIDEzMTE3MSwgMTMxMTc2LCAKLSAgICAxMzExODEsIDEzMTE4OCwgMTMxMTk1LCAxMzEyMDIsIDEzMTIwNywgMTMxMjEyLCAxMzEyMTcsIDEzMTIyMiwgMTMxMjI5LCAKLSAgICAxMzEyMzgsIDEzMTI0NywgMTMxMjUyLCAxMzEyNTksIDEzMTI2OCwgMTMxMjczLCAxMzEyNzgsIDEzMTI4MywgMTMxMjg4LCAKLSAgICAxMzEyOTUsIDEzMTMwMiwgMTMxMzA5LCAxMzEzMTYsIDEzMTMyMSwgMTMxMzI2LCAxMzEzMzEsIDEzMTMzOCwgMTMxMzQ1LCAKLSAgICAxMzEzNTIsIDEzMTM1NywgMTMxMzYyLCAxMzEzNjksIDEzMTM3NCwgMTMxMzgxLCAxMzEzODYsIDEzMTM5MywgMTMxMzk4LCAKLSAgICAxMzE0MDUsIDEzMTQxMiwgMTMxNDE3LCAxMzE0MjIsIDEzMTQyNywgMTMxNDMyLCAxMzE0MzcsIDEzMTQ0MiwgMTMxNDQ3LCAKLSAgICAxMzE0NTIsIDEzMTQ1NywgMTMxNDY0LCAxMzE0NzEsIDEzMTQ3OCwgMTMxNDg1LCAxMzE0OTIsIDEzMTUwMSwgMTMxNTA2LCAKLSAgICAxMzE1MTEsIDEzMTUxOCwgMTMxNTI1LCAxMzE1MzAsIDEzMTUzNywgMTMxNTQ0LCAxMzE1NTEsIDEzMTU1OCwgMTMxNTY1LCAKLSAgICAxMzE1NzIsIDEzMTU3NywgMTMxNTgyLCAxMzE1ODcsIDEzMTU5MiwgMTMxNTk3LCAxMzE2MDYsIDEzMTYxNSwgMTMxNjI0LCAKLSAgICAxMzE2MzMsIDEzMTY0MiwgMTMxNjUxLCAxMzE2NjAsIDEzMTY2OSwgMTMxNjc0LCAxMzE2ODUsIDEzMTY5NiwgMTMxNzA1LCAKLSAgICAxMzE3MTAsIDEzMTcxNSwgMTMxNzIwLCAxMzE3MjUsIDEzMTczNCwgMTMxNzQxLCAxMzE3NDgsIDEzMTc1NSwgMTMxNzYyLCAKLSAgICAxMzE3NjksIDEzMTc3NiwgMTMxNzg1LCAxMzE3OTQsIDEzMTgwNSwgMTMxODE0LCAxMzE4MjUsIDEzMTgzNCwgMTMxODQxLCAKLSAgICAxMzE4NTAsIDEzMTg2MSwgMTMxODcwLCAxMzE4NzksIDEzMTg4OCwgMTMxODk3LCAxMzE5MDQsIDEzMTkxMSwgMTMxOTE4LCAKLSAgICAxMzE5MjcsIDEzMTkzNiwgMTMxOTQ3LCAxMzE5NTYsIDEzMTk2NSwgMTMxOTc2LCAxMzE5ODEsIDEzMTk4NiwgMTMxOTk3LCAKLSAgICAxMzIwMDUsIDEzMjAxNCwgMTMyMDIzLCAxMzIwMzIsIDEzMjA0MywgMTMyMDUyLCAxMzIwNjEsIDEzMjA3MiwgMTMyMDgzLCAKLSAgICAxMzIwOTQsIDEzMjEwNSwgMTMyMTE2LCAxMzIxMjcsIDEzMjEzNCwgMTMyMTQxLCAxMzIxNDgsIDEzMjE1NSwgMTMyMTY2LCAKLSAgICAxMzIxNzUsIDEzMjE4MiwgMTMyMTg5LCAxMzIxOTYsIDEzMjIwNywgMTMyMjE4LCAxMzIyMjksIDEzMjI0MCwgMTMyMjUxLCAKLSAgICAxMzIyNjIsIDEzMjI3MywgMTMyMjg0LCAxMzIyOTEsIDEzMjI5OCwgMTMyMzA3LCAxMzIzMTYsIDEzMjMyMywgMTMyMzMwLCAKLSAgICAxMzIzMzcsIDEzMjM0NiwgMTMyMzU1LCAxMzIzNjQsIDEzMjM3MSwgMTMyMzgwLCAxMzIzODksIDEzMjM5OCwgMTMyNDA1LCAKLSAgICAxMzI0MTIsIDEzMjQxNywgMTMyNDIzLCAxMzI0MzAsIDEzMjQzNywgMTMyNDQ0LCAxMzI0NTEsIDEzMjQ1OCwgMTMyNDY1LCAKLSAgICAxMzI0NzQsIDEzMjQ4MywgMTMyNDkyLCAxMzI1MDEsIDEzMjUwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTMyNTE3LCAxMzI1MjMsIDEzMjUyOCwgMTMyNTMzLCAxMzI1NDAsIDEzMjU0NiwgMTMyNTUyLCAxMzI1NTgsIDEzMjU2NCwgCi0gICAgMTMyNTcwLCAxMzI1NzYsIDEzMjU4MiwgMTMyNTg2LCAxMzI1OTAsIDEzMjU5NiwgMTMyNjAyLCAxMzI2MDgsIDEzMjYxMiwgCi0gICAgMTMyNjE3LCAxMzI2MjIsIDEzMjYyNiwgMTMyNjMwLCAxMzI2MzMsIDEzMjYzOSwgMTMyNjQ1LCAxMzI2NTEsIDEzMjY1NywgCi0gICAgMTMyNjYzLCAxMzI2NjksIDEzMjY3NSwgMTMyNjgxLCAxMzI2ODcsIDEzMjY5NywgMTMyNzA3LCAxMzI3MTMsIDEzMjcxOSwgCi0gICAgMTMyNzI5LCAxMzI3MzksIDEzMjc0NSwgMCwgMCwgMTMyNzUxLCAxMzI3NTksIDEzMjc2NCwgMTMyNzY5LCAxMzI3NzUsIAotICAgIDEzMjc4MSwgMTMyNzg3LCAxMzI3OTMsIDEzMjc5OSwgMTMyODA1LCAxMzI4MTIsIDEzMjgxOSwgMTMyODI1LCAxMzI4MzEsIAotICAgIDEzMjgzNywgMTMyODQzLCAxMzI4NDksIDEzMjg1NSwgMTMyODYxLCAxMzI4NjcsIDEzMjg3MiwgMTMyODc4LCAxMzI4ODQsIAotICAgIDEzMjg5MCwgMTMyODk2LCAxMzI5MDIsIDEzMjkxMSwgMTMyOTE3LCAxMzI5MjIsIDEzMjkzMCwgMTMyOTM3LCAxMzI5NDQsIAotICAgIDEzMjk1MywgMTMyOTYyLCAxMzI5NzEsIDEzMjk4MCwgMTMyOTg5LCAxMzI5OTgsIDEzMzAwNywgMTMzMDE2LCAxMzMwMjYsIAotICAgIDEzMzAzNiwgMTMzMDQ0LCAxMzMwNTIsIDEzMzA2MSwgMTMzMDcwLCAxMzMwNzYsIDEzMzA4MiwgMTMzMDg4LCAxMzMwOTQsIAotICAgIDEzMzEwMiwgMTMzMTEwLCAxMzMxMTQsIDEzMzEyMCwgMTMzMTI1LCAxMzMxMzEsIDEzMzEzNywgMTMzMTQzLCAxMzMxNDksIAotICAgIDEzMzE1NSwgMTMzMTY0LCAxMzMxNjksIDEzMzE3NiwgMTMzMTgxLCAxMzMxODYsIDEzMzE5MSwgMTMzMTk3LCAxMzMyMDMsIAotICAgIDEzMzIwOSwgMTMzMjE2LCAxMzMyMjEsIDEzMzIyNiwgMTMzMjMxLCAxMzMyMzYsIDEzMzI0MSwgMTMzMjQ3LCAxMzMyNTMsIAotICAgIDEzMzI1OSwgMTMzMjY1LCAxMzMyNzEsIDEzMzI3NywgMTMzMjgzLCAxMzMyODksIDEzMzI5NCwgMTMzMjk5LCAxMzMzMDQsIAotICAgIDEzMzMwOSwgMTMzMzE0LCAxMzMzMTksIDEzMzMyNCwgMTMzMzI5LCAxMzMzMzUsIDEzMzM0MSwgMTMzMzQ2LCAxMzMzNTEsIAotICAgIDEzMzM1NiwgMTMzMzYxLCAxMzMzNjYsIDEzMzM3MiwgMTMzMzc5LCAxMzMzODMsIDEzMzM4NywgMTMzMzkxLCAxMzMzOTUsIAotICAgIDEzMzM5OSwgMTMzNDAzLCAxMzM0MDcsIDEzMzQxMSwgMTMzNDE5LCAxMzM0MjksIDEzMzQzMywgMTMzNDM3LCAxMzM0NDMsIAotICAgIDEzMzQ0OSwgMTMzNDU1LCAxMzM0NjEsIDEzMzQ2NywgMTMzNDczLCAxMzM0NzksIDEzMzQ4NSwgMTMzNDkxLCAxMzM0OTcsIAotICAgIDEzMzUwMywgMTMzNTA5LCAxMzM1MTUsIDEzMzUyMSwgMTMzNTI1LCAxMzM1MjksIDEzMzUzNiwgMTMzNTQyLCAxMzM1NDgsIAotICAgIDEzMzU1NCwgMTMzNTU5LCAxMzM1NjYsIDEzMzU3MSwgMTMzNTc3LCAxMzM1ODMsIDEzMzU4OSwgMTMzNTk1LCAxMzM2MDAsIAotICAgIDEzMzYwNCwgMTMzNjEwLCAxMzM2MTQsIDEzMzYxOCwgMTMzNjIyLCAxMzM2MjgsIDEzMzYzNCwgMTMzNjM4LCAxMzM2NDQsIAotICAgIDEzMzY1MCwgMTMzNjU2LCAxMzM2NjIsIDEzMzY2OCwgMTMzNjc2LCAxMzM2ODQsIDEzMzY5MCwgMTMzNjk2LCAxMzM3MDIsIAotICAgIDEzMzcwOCwgMTMzNzIwLCAxMzM3MzIsIDEzMzc0NiwgMTMzNzU4LCAxMzM3NzAsIDEzMzc4NCwgMTMzNzk4LCAxMzM4MTIsIAotICAgIDEzMzgxNiwgMTMzODI0LCAxMzM4MzIsIDEzMzgzNywgMTMzODQxLCAxMzM4NDUsIDEzMzg0OSwgMTMzODUzLCAxMzM4NTcsIAotICAgIDEzMzg2MSwgMTMzODY1LCAxMzM4NzEsIDEzMzg3NywgMTMzODgzLCAxMzM4ODksIDEzMzg5NywgMTMzOTA2LCAxMzM5MTMsIAotICAgIDEzMzkyMCwgMTMzOTI4LCAxMzM5MzUsIDEzMzk0NywgMTMzOTU5LCAxMzM5NzEsIDEzMzk4MywgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTMzOTkwLCAxMzM5OTcsIAotICAgIDEzNDAwNCwgMTM0MDExLCAxMzQwMTgsIDEzNDAyNSwgMTM0MDMyLCAxMzQwMzksIDEzNDA0NiwgMTM0MDUzLCAxMzQwNjAsIAotICAgIDEzNDA2NywgMTM0MDc0LCAxMzQwODEsIDEzNDA4OCwgMTM0MDk1LCAxMzQxMDIsIDEzNDEwOSwgMTM0MTE2LCAxMzQxMjMsIAotICAgIDEzNDEzMCwgMTM0MTM3LCAxMzQxNDQsIDEzNDE1MSwgMTM0MTU4LCAxMzQxNjUsIDEzNDE3MiwgMTM0MTc5LCAxMzQxODYsIAotICAgIDEzNDE5MywgMTM0MjAwLCAxMzQyMDcsIDEzNDIxNCwgMTM0MjIxLCAxMzQyMjgsIDEzNDIzNSwgMTM0MjQyLCAxMzQyNDksIAotICAgIDEzNDI1NiwgMTM0MjYzLCAxMzQyNzAsIDEzNDI3NywgMTM0Mjg0LCAxMzQyOTEsIDEzNDI5OCwgMTM0MzA1LCAxMzQzMTIsIAotICAgIDEzNDMxOSwgMTM0MzI2LCAxMzQzMzMsIDEzNDM0MCwgMTM0MzQ3LCAxMzQzNTQsIDEzNDM2MSwgMTM0MzY4LCAxMzQzNzUsIAotICAgIDEzNDM4MiwgMTM0Mzg5LCAxMzQzOTYsIDEzNDQwMywgMTM0NDEwLCAxMzQ0MTcsIDEzNDQyNCwgMTM0NDMxLCAxMzQ0MzgsIAotICAgIDEzNDQ0NSwgMTM0NDUyLCAxMzQ0NTcsIDEzNDQ2MiwgMTM0NDY3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzkyNTAsIDEzOTI1NSwgMTM5MjYyLCAxMzkyNjksIDEzOTI3NiwgMTM5MjgzLCAxMzkyODgsIDEzOTI5MywgMTM5MzAwLCAKKyAgICAxMzkzMDUsIDEzOTMxMCwgMTM5MzE3LCAxMzkzMjIsIDEzOTMyNywgMTM5MzMyLCAxMzkzMzksIDEzOTM0OCwgMTM5MzUzLCAKKyAgICAxMzkzNTgsIDEzOTM2MywgMTM5MzY4LCAxMzkzNzMsIDEzOTM3OCwgMTM5Mzg1LCAxMzkzOTAsIDEzOTM5NSwgMTM5NDAwLCAKKyAgICAxMzk0MDUsIDEzOTQxMCwgMTM5NDE1LCAxMzk0MjAsIDEzOTQyNSwgMTM5NDMwLCAxMzk0MzUsIDEzOTQ0MCwgMTM5NDQ1LCAKKyAgICAxMzk0NTEsIDEzOTQ1NiwgMTM5NDYxLCAxMzk0NjYsIDEzOTQ3MSwgMTM5NDc2LCAxMzk0ODEsIDEzOTQ4NiwgMTM5NDkxLCAKKyAgICAxMzk0OTYsIDEzOTUwNSwgMTM5NTEwLCAxMzk1MTksIDEzOTUyNCwgMTM5NTI5LCAxMzk1MzQsIDEzOTUzOSwgMTM5NTQ0LCAKKyAgICAxMzk1NDksIDEzOTU1NCwgMTM5NTYzLCAxMzk1NjgsIDEzOTU3MywgMTM5NTc4LCAxMzk1ODMsIDEzOTU4OCwgMTM5NTk1LCAKKyAgICAxMzk2MDAsIDEzOTYwNywgMTM5NjEyLCAxMzk2MTcsIDEzOTYyMiwgMTM5NjI3LCAxMzk2MzIsIDEzOTYzNywgMTM5NjQyLCAKKyAgICAxMzk2NDcsIDEzOTY1MiwgMTM5NjU3LCAxMzk2NjIsIDEzOTY2NywgMTM5NjcyLCAxMzk2NzcsIDEzOTY4MiwgMTM5Njg3LCAKKyAgICAxMzk2OTIsIDEzOTY5NywgMTM5NzAyLCAxMzk3MTEsIDEzOTcxNiwgMTM5NzIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAxMzk3MjYsIDEzOTczNCwgMTM5NzQyLCAxMzk3NTAsIDEzOTc1OCwgMTM5NzY2LCAxMzk3NzQsIDEzOTc4MywgCisgICAgMTM5NzkxLCAxMzk4MDAsIDEzOTgwOCwgMTM5ODE2LCAxMzk4MjQsIDEzOTgzMiwgMTM5ODQwLCAxMzk4NDgsIDEzOTg1NywgCisgICAgMTM5ODY1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ0NzEsIDEzNDQ3NiwgMTM0NDgzLCAxMzQ0OTAsIDEzNDQ5NywgMTM0NTA0LCAKLSAgICAxMzQ1MDksIDEzNDUxNCwgMTM0NTIxLCAxMzQ1MjYsIDEzNDUzMSwgMTM0NTM4LCAxMzQ1NDMsIDEzNDU0OCwgMTM0NTUzLCAKLSAgICAxMzQ1NjAsIDEzNDU2OSwgMTM0NTc0LCAxMzQ1NzksIDEzNDU4NCwgMTM0NTg5LCAxMzQ1OTQsIDEzNDU5OSwgMTM0NjA2LCAKLSAgICAxMzQ2MTEsIDEzNDYxNiwgMTM0NjIxLCAxMzQ2MjYsIDEzNDYzMSwgMTM0NjM2LCAxMzQ2NDEsIDEzNDY0NiwgMTM0NjUxLCAKLSAgICAxMzQ2NTYsIDEzNDY2MSwgMTM0NjY2LCAxMzQ2NzIsIDEzNDY3NywgMTM0NjgyLCAxMzQ2ODcsIDEzNDY5MiwgMTM0Njk3LCAKLSAgICAxMzQ3MDIsIDEzNDcwNywgMTM0NzEyLCAxMzQ3MTcsIDEzNDcyNiwgMTM0NzMxLCAxMzQ3NDAsIDEzNDc0NSwgMTM0NzUwLCAKLSAgICAxMzQ3NTUsIDEzNDc2MCwgMTM0NzY1LCAxMzQ3NzAsIDEzNDc3NSwgMTM0Nzg0LCAxMzQ3ODksIDEzNDc5NCwgMTM0Nzk5LCAKLSAgICAxMzQ4MDQsIDEzNDgwOSwgMTM0ODE2LCAxMzQ4MjEsIDEzNDgyOCwgMTM0ODMzLCAxMzQ4MzgsIDEzNDg0MywgMTM0ODQ4LCAKLSAgICAxMzQ4NTMsIDEzNDg1OCwgMTM0ODYzLCAxMzQ4NjgsIDEzNDg3MywgMTM0ODc4LCAxMzQ4ODMsIDEzNDg4OCwgMTM0ODkzLCAKLSAgICAxMzQ4OTgsIDEzNDkwMywgMTM0OTA4LCAxMzQ5MTMsIDEzNDkxOCwgMTM0OTIzLCAxMzQ5MzIsIDEzNDkzNywgMTM0OTQyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxMzQ5NDcsIDEzNDk1NSwgMTM0OTYzLCAxMzQ5NzEsIDEzNDk3OSwgCi0gICAgMTM0OTg3LCAxMzQ5OTUsIDEzNTAwNCwgMTM1MDEyLCAxMzUwMjEsIDEzNTAyOSwgMTM1MDM3LCAxMzUwNDUsIDEzNTA1MywgCi0gICAgMTM1MDYxLCAxMzUwNjksIDEzNTA3OCwgMTM1MDg2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMzk4NzQsIDEzOTg3OCwgMTM5ODgzLCAxMzk4ODgsIDEzOTg5MywgMTM5ODk3LCAxMzk5MDIsIDEzOTkwNywgMTM5OTEyLCAKKyAgICAxMzk5MTYsIDEzOTkyMSwgMTM5OTI2LCAxMzk5MzAsIDEzOTkzNSwgMTM5OTQwLCAxMzk5NDQsIDEzOTk0OSwgMTM5OTU0LCAKKyAgICAxMzk5NTgsIDEzOTk2MywgMTM5OTY4LCAxMzk5NzIsIDEzOTk3NywgMTM5OTgyLCAxMzk5ODcsIDEzOTk5MiwgMTM5OTk3LCAKKyAgICAxNDAwMDEsIDE0MDAwNiwgMTQwMDExLCAxNDAwMTYsIDE0MDAyMCwgMTQwMDI1LCAxNDAwMzAsIDE0MDAzNSwgMTQwMDM5LCAKKyAgICAxNDAwNDQsIDE0MDA0OSwgMTQwMDUzLCAxNDAwNTgsIDE0MDA2MywgMTQwMDY3LCAxNDAwNzIsIDE0MDA3NywgMTQwMDgxLCAKKyAgICAxNDAwODYsIDE0MDA5MSwgMTQwMDk1LCAxNDAxMDAsIDE0MDEwNSwgMTQwMTEwLCAxNDAxMTUsIDE0MDEyMCwgMTQwMTI0LCAKKyAgICAxNDAxMjksIDE0MDEzNCwgMTQwMTM5LCAxNDAxNDMsIDE0MDE0OCwgMTQwMTUzLCAxNDAxNTgsIDE0MDE2MiwgMTQwMTY3LCAKKyAgICAxNDAxNzIsIDE0MDE3NiwgMTQwMTgxLCAxNDAxODYsIDE0MDE5MCwgMTQwMTk1LCAxNDAyMDAsIDE0MDIwNCwgMTQwMjA5LCAKKyAgICAxNDAyMTQsIDE0MDIxOCwgMTQwMjIzLCAxNDAyMjgsIDE0MDIzMywgMTQwMjM4LCAxNDAyNDMsIDE0MDI0NywgMTQwMjUyLCAKKyAgICAxNDAyNTcsIDE0MDI2MiwgMTQwMjY2LCAxNDAyNzEsIDAsIDE0MDI3NiwgMTQwMjgwLCAxNDAyODUsIDE0MDI5MCwgCisgICAgMTQwMjk0LCAxNDAyOTksIDE0MDMwNCwgMTQwMzA4LCAxNDAzMTMsIDE0MDMxOCwgMTQwMzIyLCAxNDAzMjcsIDE0MDMzMiwgCisgICAgMTQwMzM2LCAxNDAzNDEsIDE0MDM0NiwgMTQwMzUxLCAxNDAzNTYsIDE0MDM2MSwgMTQwMzY2LCAxNDAzNzIsIDE0MDM3OCwgCisgICAgMTQwMzg0LCAxNDAzODksIDE0MDM5NSwgMTQwNDAxLCAxNDA0MDcsIDE0MDQxMiwgMTQwNDE4LCAxNDA0MjQsIDE0MDQyOSwgCisgICAgMTQwNDM1LCAxNDA0NDEsIDE0MDQ0NiwgMTQwNDUyLCAxNDA0NTgsIDE0MDQ2MywgMTQwNDY5LCAxNDA0NzUsIDE0MDQ4MCwgCisgICAgMTQwNDg2LCAxNDA0OTIsIDE0MDQ5OCwgMTQwNTA0LCAxNDA1MTAsIDE0MDUxNSwgMTQwNTIxLCAxNDA1MjcsIDE0MDUzMywgCisgICAgMTQwNTM4LCAxNDA1NDQsIDE0MDU1MCwgMTQwNTU2LCAxNDA1NjEsIDE0MDU2NywgMTQwNTczLCAxNDA1NzgsIDE0MDU4NCwgCisgICAgMTQwNTkwLCAxNDA1OTUsIDE0MDYwMSwgMTQwNjA3LCAxNDA2MTIsIDE0MDYxOCwgMTQwNjI0LCAxNDA2MjksIDE0MDYzNSwgCisgICAgMTQwNjQxLCAxNDA2NDcsIDE0MDY1MywgMTQwNjU5LCAwLCAxNDA2NjMsIDE0MDY2OCwgMCwgMCwgMTQwNjczLCAwLCAwLCAKKyAgICAxNDA2NzgsIDE0MDY4MywgMCwgMCwgMTQwNjg4LCAxNDA2OTMsIDE0MDY5NywgMTQwNzAyLCAwLCAxNDA3MDcsIDE0MDcxMiwgCisgICAgMTQwNzE3LCAxNDA3MjEsIDE0MDcyNiwgMTQwNzMxLCAxNDA3MzYsIDE0MDc0MSwgMTQwNzQ2LCAxNDA3NTAsIDE0MDc1NSwgCisgICAgMTQwNzYwLCAwLCAxNDA3NjUsIDAsIDE0MDc3MCwgMTQwNzc1LCAxNDA3NzksIDE0MDc4NCwgMTQwNzg5LCAxNDA3OTMsIAorICAgIDE0MDc5OCwgMCwgMTQwODAzLCAxNDA4MDgsIDE0MDgxMywgMTQwODE3LCAxNDA4MjIsIDE0MDgyNywgMTQwODMxLCAKKyAgICAxNDA4MzYsIDE0MDg0MSwgMTQwODQ2LCAxNDA4NTEsIDE0MDg1NiwgMTQwODYxLCAxNDA4NjcsIDE0MDg3MywgMTQwODc5LCAKKyAgICAxNDA4ODQsIDE0MDg5MCwgMTQwODk2LCAxNDA5MDIsIDE0MDkwNywgMTQwOTEzLCAxNDA5MTksIDE0MDkyNCwgMTQwOTMwLCAKKyAgICAxNDA5MzYsIDE0MDk0MSwgMTQwOTQ3LCAxNDA5NTMsIDE0MDk1OCwgMTQwOTY0LCAxNDA5NzAsIDE0MDk3NSwgMTQwOTgxLCAKKyAgICAxNDA5ODcsIDE0MDk5MywgMTQwOTk5LCAxNDEwMDUsIDE0MTAxMCwgMTQxMDE2LCAxNDEwMjIsIDE0MTAyOCwgMTQxMDMzLCAKKyAgICAxNDEwMzksIDE0MTA0NSwgMTQxMDUxLCAxNDEwNTYsIDE0MTA2MiwgMTQxMDY4LCAxNDEwNzMsIDE0MTA3OSwgMTQxMDg1LCAKKyAgICAxNDEwOTAsIDE0MTA5NiwgMTQxMTAyLCAxNDExMDcsIDE0MTExMywgMTQxMTE5LCAxNDExMjQsIDE0MTEzMCwgMTQxMTM2LCAKKyAgICAxNDExNDIsIDE0MTE0OCwgMTQxMTU0LCAxNDExNTgsIDAsIDE0MTE2MywgMTQxMTY4LCAxNDExNzIsIDE0MTE3NywgMCwgMCwgCisgICAgMTQxMTgyLCAxNDExODcsIDE0MTE5MiwgMTQxMTk2LCAxNDEyMDEsIDE0MTIwNiwgMTQxMjEwLCAxNDEyMTUsIDAsIAorICAgIDE0MTIyMCwgMTQxMjI1LCAxNDEyMzAsIDE0MTIzNCwgMTQxMjM5LCAxNDEyNDQsIDE0MTI0OSwgMCwgMTQxMjU0LCAKKyAgICAxNDEyNTgsIDE0MTI2MywgMTQxMjY4LCAxNDEyNzMsIDE0MTI3NywgMTQxMjgyLCAxNDEyODcsIDE0MTI5MiwgMTQxMjk2LCAKKyAgICAxNDEzMDEsIDE0MTMwNiwgMTQxMzEwLCAxNDEzMTUsIDE0MTMyMCwgMTQxMzI0LCAxNDEzMjksIDE0MTMzNCwgMTQxMzM4LCAKKyAgICAxNDEzNDMsIDE0MTM0OCwgMTQxMzUyLCAxNDEzNTcsIDE0MTM2MiwgMTQxMzY3LCAxNDEzNzIsIDE0MTM3NywgMTQxMzgxLCAKKyAgICAwLCAxNDEzODYsIDE0MTM5MSwgMTQxMzk1LCAxNDE0MDAsIDAsIDE0MTQwNSwgMTQxNDA5LCAxNDE0MTQsIDE0MTQxOSwgCisgICAgMTQxNDIzLCAwLCAxNDE0MjgsIDAsIDAsIDAsIDE0MTQzMiwgMTQxNDM3LCAxNDE0NDIsIDE0MTQ0NiwgMTQxNDUxLCAKKyAgICAxNDE0NTYsIDE0MTQ2MSwgMCwgMTQxNDY2LCAxNDE0NzAsIDE0MTQ3NSwgMTQxNDgwLCAxNDE0ODUsIDE0MTQ4OSwgCisgICAgMTQxNDk0LCAxNDE0OTksIDE0MTUwNCwgMTQxNTA4LCAxNDE1MTMsIDE0MTUxOCwgMTQxNTIyLCAxNDE1MjcsIDE0MTUzMiwgCisgICAgMTQxNTM2LCAxNDE1NDEsIDE0MTU0NiwgMTQxNTUwLCAxNDE1NTUsIDE0MTU2MCwgMTQxNTY0LCAxNDE1NjksIDE0MTU3NCwgCisgICAgMTQxNTc5LCAxNDE1ODQsIDE0MTU4OSwgMTQxNTk0LCAxNDE2MDAsIDE0MTYwNiwgMTQxNjEyLCAxNDE2MTcsIDE0MTYyMywgCisgICAgMTQxNjI5LCAxNDE2MzUsIDE0MTY0MCwgMTQxNjQ2LCAxNDE2NTIsIDE0MTY1NywgMTQxNjYzLCAxNDE2NjksIDE0MTY3NCwgCisgICAgMTQxNjgwLCAxNDE2ODYsIDE0MTY5MSwgMTQxNjk3LCAxNDE3MDMsIDE0MTcwOCwgMTQxNzE0LCAxNDE3MjAsIDE0MTcyNiwgCisgICAgMTQxNzMyLCAxNDE3MzgsIDE0MTc0MywgMTQxNzQ5LCAxNDE3NTUsIDE0MTc2MSwgMTQxNzY2LCAxNDE3NzIsIDE0MTc3OCwgCisgICAgMTQxNzg0LCAxNDE3ODksIDE0MTc5NSwgMTQxODAxLCAxNDE4MDYsIDE0MTgxMiwgMTQxODE4LCAxNDE4MjMsIDE0MTgyOSwgCisgICAgMTQxODM1LCAxNDE4NDAsIDE0MTg0NiwgMTQxODUyLCAxNDE4NTcsIDE0MTg2MywgMTQxODY5LCAxNDE4NzUsIDE0MTg4MSwgCisgICAgMTQxODg3LCAxNDE4OTEsIDE0MTg5NiwgMTQxOTAxLCAxNDE5MDYsIDE0MTkxMCwgMTQxOTE1LCAxNDE5MjAsIDE0MTkyNSwgCisgICAgMTQxOTI5LCAxNDE5MzQsIDE0MTkzOSwgMTQxOTQzLCAxNDE5NDgsIDE0MTk1MywgMTQxOTU3LCAxNDE5NjIsIDE0MTk2NywgCisgICAgMTQxOTcxLCAxNDE5NzYsIDE0MTk4MSwgMTQxOTg1LCAxNDE5OTAsIDE0MTk5NSwgMTQyMDAwLCAxNDIwMDUsIDE0MjAxMCwgCisgICAgMTQyMDE0LCAxNDIwMTksIDE0MjAyNCwgMTQyMDI5LCAxNDIwMzMsIDE0MjAzOCwgMTQyMDQzLCAxNDIwNDgsIDE0MjA1MiwgCisgICAgMTQyMDU3LCAxNDIwNjIsIDE0MjA2NiwgMTQyMDcxLCAxNDIwNzYsIDE0MjA4MCwgMTQyMDg1LCAxNDIwOTAsIDE0MjA5NCwgCisgICAgMTQyMDk5LCAxNDIxMDQsIDE0MjEwOCwgMTQyMTEzLCAxNDIxMTgsIDE0MjEyMywgMTQyMTI4LCAxNDIxMzMsIDE0MjEzOCwgCisgICAgMTQyMTQ0LCAxNDIxNTAsIDE0MjE1NiwgMTQyMTYxLCAxNDIxNjcsIDE0MjE3MywgMTQyMTc5LCAxNDIxODQsIDE0MjE5MCwgCisgICAgMTQyMTk2LCAxNDIyMDEsIDE0MjIwNywgMTQyMjEzLCAxNDIyMTgsIDE0MjIyNCwgMTQyMjMwLCAxNDIyMzUsIDE0MjI0MSwgCisgICAgMTQyMjQ3LCAxNDIyNTIsIDE0MjI1OCwgMTQyMjY0LCAxNDIyNzAsIDE0MjI3NiwgMTQyMjgyLCAxNDIyODcsIDE0MjI5MywgCisgICAgMTQyMjk5LCAxNDIzMDUsIDE0MjMxMCwgMTQyMzE2LCAxNDIzMjIsIDE0MjMyOCwgMTQyMzMzLCAxNDIzMzksIDE0MjM0NSwgCisgICAgMTQyMzUwLCAxNDIzNTYsIDE0MjM2MiwgMTQyMzY3LCAxNDIzNzMsIDE0MjM3OSwgMTQyMzg0LCAxNDIzOTAsIDE0MjM5NiwgCisgICAgMTQyNDAxLCAxNDI0MDcsIDE0MjQxMywgMTQyNDE5LCAxNDI0MjUsIDE0MjQzMSwgMTQyNDM2LCAxNDI0NDIsIDE0MjQ0OCwgCisgICAgMTQyNDU0LCAxNDI0NTksIDE0MjQ2NSwgMTQyNDcxLCAxNDI0NzcsIDE0MjQ4MiwgMTQyNDg4LCAxNDI0OTQsIDE0MjQ5OSwgCisgICAgMTQyNTA1LCAxNDI1MTEsIDE0MjUxNiwgMTQyNTIyLCAxNDI1MjgsIDE0MjUzMywgMTQyNTM5LCAxNDI1NDUsIDE0MjU1MCwgCisgICAgMTQyNTU2LCAxNDI1NjIsIDE0MjU2OCwgMTQyNTc0LCAxNDI1ODAsIDE0MjU4NSwgMTQyNTkxLCAxNDI1OTcsIDE0MjYwMywgCisgICAgMTQyNjA4LCAxNDI2MTQsIDE0MjYyMCwgMTQyNjI2LCAxNDI2MzEsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NCwgCisgICAgMTQyNjYwLCAxNDI2NjUsIDE0MjY3MSwgMTQyNjc3LCAxNDI2ODIsIDE0MjY4OCwgMTQyNjk0LCAxNDI2OTksIDE0MjcwNSwgCisgICAgMTQyNzExLCAxNDI3MTcsIDE0MjcyMywgMTQyNzI5LCAxNDI3MzUsIDE0Mjc0MiwgMTQyNzQ5LCAxNDI3NTYsIDE0Mjc2MiwgCisgICAgMTQyNzY5LCAxNDI3NzYsIDE0Mjc4MywgMTQyNzg5LCAxNDI3OTYsIDE0MjgwMywgMTQyODA5LCAxNDI4MTYsIDE0MjgyMywgCisgICAgMTQyODI5LCAxNDI4MzYsIDE0Mjg0MywgMTQyODQ5LCAxNDI4NTYsIDE0Mjg2MywgMTQyODY5LCAxNDI4NzYsIDE0Mjg4MywgCisgICAgMTQyODkwLCAxNDI4OTcsIDE0MjkwNCwgMTQyOTEwLCAxNDI5MTcsIDE0MjkyNCwgMTQyOTMxLCAxNDI5MzcsIDE0Mjk0NCwgCisgICAgMTQyOTUxLCAxNDI5NTgsIDE0Mjk2NCwgMTQyOTcxLCAxNDI5NzgsIDE0Mjk4NCwgMTQyOTkxLCAxNDI5OTgsIDE0MzAwNCwgCisgICAgMTQzMDExLCAxNDMwMTgsIDE0MzAyNCwgMTQzMDMxLCAxNDMwMzgsIDE0MzA0NCwgMTQzMDUxLCAxNDMwNTgsIDE0MzA2NSwgCisgICAgMTQzMDcyLCAxNDMwNzksIDE0MzA4NCwgMTQzMDkwLCAxNDMwOTYsIDE0MzEwMiwgMTQzMTA3LCAxNDMxMTMsIDE0MzExOSwgCisgICAgMTQzMTI1LCAxNDMxMzAsIDE0MzEzNiwgMTQzMTQyLCAxNDMxNDcsIDE0MzE1MywgMTQzMTU5LCAxNDMxNjQsIDE0MzE3MCwgCisgICAgMTQzMTc2LCAxNDMxODEsIDE0MzE4NywgMTQzMTkzLCAxNDMxOTgsIDE0MzIwNCwgMTQzMjEwLCAxNDMyMTYsIDE0MzIyMiwgCisgICAgMTQzMjI4LCAxNDMyMzMsIDE0MzIzOSwgMTQzMjQ1LCAxNDMyNTEsIDE0MzI1NiwgMTQzMjYyLCAxNDMyNjgsIDE0MzI3NCwgCisgICAgMTQzMjc5LCAxNDMyODUsIDE0MzI5MSwgMTQzMjk2LCAxNDMzMDIsIDE0MzMwOCwgMTQzMzEzLCAxNDMzMTksIDE0MzMyNSwgCisgICAgMTQzMzMwLCAxNDMzMzYsIDE0MzM0MiwgMTQzMzQ3LCAxNDMzNTMsIDE0MzM1OSwgMTQzMzY1LCAxNDMzNzEsIDE0MzM3NywgCisgICAgMTQzMzgzLCAwLCAwLCAxNDMzOTAsIDE0MzM5NSwgMTQzNDAwLCAxNDM0MDUsIDE0MzQxMCwgMTQzNDE1LCAxNDM0MjAsIAorICAgIDE0MzQyNSwgMTQzNDMwLCAxNDM0MzUsIDE0MzQ0MCwgMTQzNDQ1LCAxNDM0NTAsIDE0MzQ1NSwgMTQzNDYwLCAxNDM0NjUsIAorICAgIDE0MzQ3MCwgMTQzNDc1LCAxNDM0ODEsIDE0MzQ4NiwgMTQzNDkxLCAxNDM0OTYsIDE0MzUwMSwgMTQzNTA2LCAxNDM1MTEsIAorICAgIDE0MzUxNiwgMTQzNTIwLCAxNDM1MjUsIDE0MzUzMCwgMTQzNTM1LCAxNDM1NDAsIDE0MzU0NSwgMTQzNTUwLCAxNDM1NTUsIAorICAgIDE0MzU2MCwgMTQzNTY1LCAxNDM1NzAsIDE0MzU3NSwgMTQzNTgwLCAxNDM1ODUsIDE0MzU5MCwgMTQzNTk1LCAxNDM2MDAsIAorICAgIDE0MzYwNSwgMTQzNjExLCAxNDM2MTYsIDE0MzYyMSwgMTQzNjI2LCAxNDM2MzEsIDE0MzYzNiwgMTQzNjQxLCAxNDM2NDYsIAorICAgIDE0MzY1MiwgMTQzNjU3LCAxNDM2NjIsIDE0MzY2NywgMTQzNjcyLCAxNDM2NzcsIDE0MzY4MiwgMTQzNjg3LCAxNDM2OTIsIAorICAgIDE0MzY5NywgMTQzNzAyLCAxNDM3MDcsIDE0MzcxMiwgMTQzNzE3LCAxNDM3MjIsIDE0MzcyNywgMTQzNzMyLCAxNDM3MzcsIAorICAgIDE0Mzc0MiwgMTQzNzQ3LCAxNDM3NTIsIDE0Mzc1NywgMTQzNzYyLCAxNDM3NjcsIDE0Mzc3MywgMTQzNzc4LCAxNDM3ODMsIAorICAgIDE0Mzc4OCwgMTQzNzkzLCAxNDM3OTgsIDE0MzgwMywgMTQzODA4LCAxNDM4MTIsIDE0MzgxNywgMTQzODIyLCAxNDM4MjcsIAorICAgIDE0MzgzMiwgMTQzODM3LCAxNDM4NDIsIDE0Mzg0NywgMTQzODUyLCAxNDM4NTcsIDE0Mzg2MiwgMTQzODY3LCAxNDM4NzIsIAorICAgIDE0Mzg3NywgMTQzODgyLCAxNDM4ODcsIDE0Mzg5MiwgMTQzODk3LCAxNDM5MDMsIDE0MzkwOCwgMTQzOTEzLCAxNDM5MTgsIAorICAgIDE0MzkyMywgMTQzOTI4LCAxNDM5MzMsIDE0MzkzOCwgMTQzOTQ0LCAxNDM5NDksIDE0Mzk1NCwgMTQzOTU5LCAxNDM5NjQsIAorICAgIDE0Mzk2OSwgMTQzOTc0LCAxNDM5ODAsIDE0Mzk4NiwgMTQzOTkyLCAxNDM5OTgsIDE0NDAwNCwgMTQ0MDEwLCAxNDQwMTYsIAorICAgIDE0NDAyMiwgMTQ0MDI4LCAxNDQwMzQsIDE0NDA0MCwgMTQ0MDQ2LCAxNDQwNTIsIDE0NDA1OCwgMTQ0MDY0LCAxNDQwNzAsIAorICAgIDE0NDA3NiwgMTQ0MDgzLCAxNDQwODksIDE0NDA5NSwgMTQ0MTAxLCAxNDQxMDcsIDE0NDExMywgMTQ0MTE5LCAxNDQxMjUsIAorICAgIDE0NDEzMCwgMTQ0MTM2LCAxNDQxNDIsIDE0NDE0OCwgMTQ0MTU0LCAxNDQxNjAsIDE0NDE2NiwgMTQ0MTcyLCAxNDQxNzgsIAorICAgIDE0NDE4NCwgMTQ0MTkwLCAxNDQxOTYsIDE0NDIwMiwgMTQ0MjA4LCAxNDQyMTQsIDE0NDIyMCwgMTQ0MjI2LCAxNDQyMzIsIAorICAgIDE0NDIzOSwgMTQ0MjQ1LCAxNDQyNTEsIDE0NDI1NywgMTQ0MjYzLCAxNDQyNjksIDE0NDI3NSwgMTQ0MjgxLCAxNDQyODgsIAorICAgIDE0NDI5NCwgMTQ0MzAwLCAxNDQzMDYsIDE0NDMxMiwgMTQ0MzE4LCAxNDQzMjQsIDE0NDMzMCwgMTQ0MzM2LCAxNDQzNDIsIAorICAgIDE0NDM0OCwgMTQ0MzU0LCAxNDQzNjAsIDE0NDM2NiwgMTQ0MzcyLCAxNDQzNzgsIDE0NDM4NCwgMTQ0MzkwLCAxNDQzOTYsIAorICAgIDE0NDQwMiwgMTQ0NDA4LCAxNDQ0MTQsIDE0NDQyMCwgMTQ0NDI2LCAxNDQ0MzMsIDE0NDQzOSwgMTQ0NDQ1LCAxNDQ0NTEsIAorICAgIDE0NDQ1NywgMTQ0NDYzLCAxNDQ0NjksIDE0NDQ3NSwgMTQ0NDgwLCAxNDQ0ODYsIDE0NDQ5MiwgMTQ0NDk4LCAxNDQ1MDQsIAorICAgIDE0NDUxMCwgMTQ0NTE2LCAxNDQ1MjIsIDE0NDUyOCwgMTQ0NTM0LCAxNDQ1NDAsIDE0NDU0NiwgMTQ0NTUyLCAxNDQ1NTgsIAorICAgIDE0NDU2NCwgMTQ0NTcwLCAxNDQ1NzYsIDE0NDU4MiwgMTQ0NTg5LCAxNDQ1OTUsIDE0NDYwMSwgMTQ0NjA3LCAxNDQ2MTMsIAorICAgIDE0NDYxOSwgMTQ0NjI1LCAxNDQ2MzEsIDE0NDYzOCwgMTQ0NjQ0LCAxNDQ2NTAsIDE0NDY1NiwgMTQ0NjYyLCAxNDQ2NjgsIAorICAgIDE0NDY3NCwgMTQ0NjgxLCAxNDQ2ODgsIDE0NDY5NSwgMTQ0NzAyLCAxNDQ3MDksIDE0NDcxNiwgMTQ0NzIzLCAxNDQ3MzAsIAorICAgIDE0NDczNywgMTQ0NzQ0LCAxNDQ3NTEsIDE0NDc1OCwgMTQ0NzY1LCAxNDQ3NzIsIDE0NDc3OSwgMTQ0Nzg2LCAxNDQ3OTMsIAorICAgIDE0NDgwMSwgMTQ0ODA4LCAxNDQ4MTUsIDE0NDgyMiwgMTQ0ODI5LCAxNDQ4MzYsIDE0NDg0MywgMTQ0ODUwLCAxNDQ4NTYsIAorICAgIDE0NDg2MywgMTQ0ODcwLCAxNDQ4NzcsIDE0NDg4NCwgMTQ0ODkxLCAxNDQ4OTgsIDE0NDkwNSwgMTQ0OTEyLCAxNDQ5MTksIAorICAgIDE0NDkyNiwgMTQ0OTMzLCAxNDQ5NDAsIDE0NDk0NywgMTQ0OTU0LCAxNDQ5NjEsIDE0NDk2OCwgMTQ0OTc1LCAxNDQ5ODMsIAorICAgIDE0NDk5MCwgMTQ0OTk3LCAxNDUwMDQsIDE0NTAxMSwgMTQ1MDE4LCAxNDUwMjUsIDE0NTAzMiwgMTQ1MDQwLCAxNDUwNDcsIAorICAgIDE0NTA1NCwgMTQ1MDYxLCAxNDUwNjgsIDE0NTA3NSwgMTQ1MDgyLCAxNDUwODcsIDAsIDAsIDE0NTA5MiwgMTQ1MDk3LCAKKyAgICAxNDUxMDEsIDE0NTEwNSwgMTQ1MTA5LCAxNDUxMTMsIDE0NTExNywgMTQ1MTIxLCAxNDUxMjYsIDE0NTEzMCwgMTQ1MTM1LCAKKyAgICAxNDUxNDAsIDE0NTE0NCwgMTQ1MTQ4LCAxNDUxNTIsIDE0NTE1NiwgMTQ1MTYwLCAxNDUxNjQsIDE0NTE2OSwgMTQ1MTczLCAKKyAgICAxNDUxNzgsIDE0NTE4MywgMTQ1MTg3LCAxNDUxOTEsIDE0NTE5NSwgMTQ1MTk5LCAxNDUyMDMsIDE0NTIwNywgMTQ1MjEyLCAKKyAgICAxNDUyMTYsIDE0NTIyMSwgMTQ1MjI3LCAxNDUyMzIsIDE0NTIzNywgMTQ1MjQyLCAxNDUyNDcsIDE0NTI1MiwgMTQ1MjU3LCAKKyAgICAxNDUyNjMsIDE0NTI2OCwgMTQ1Mjc0LCAxNDUyODAsIDE0NTI4NSwgMTQ1MjkwLCAxNDUyOTUsIDE0NTMwMCwgMTQ1MzA1LCAKKyAgICAxNDUzMTAsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjcsIDE0NTMzMSwgMTQ1MzM2LCAxNDUzNDEsIDE0NTM0NiwgMTQ1MzUxLCAKKyAgICAxNDUzNTYsIDE0NTM2MSwgMTQ1MzY3LCAxNDUzNzUsIDE0NTM4MiwgMTQ1Mzg3LCAxNDUzOTIsIDE0NTM5OSwgMTQ1NDA1LCAKKyAgICAxNDU0MTAsIDE0NTQxNiwgMTQ1NDIyLCAxNDU0MzAsIDE0NTQzNiwgMTQ1NDQzLCAxNDU0NTEsIDE0NTQ1NywgMTQ1NDY2LCAKKyAgICAxNDU0NzUsIDE0NTQ4MywgMTQ1NDkxLCAxNDU0OTcsIDE0NTUwNCwgMTQ1NTEyLCAxNDU1MjAsIDE0NTUyNiwgMTQ1NTMzLCAKKyAgICAxNDU1NDIsIDE0NTU1MSwgMTQ1NTU4LCAxNDU1NjksIDE0NTU3OSwgMTQ1NTg5LCAxNDU1OTksIDE0NTYwOSwgMTQ1NjE2LCAKKyAgICAxNDU2MjMsIDE0NTYzMCwgMTQ1NjM3LCAxNDU2NDYsIDE0NTY1NSwgMTQ1NjY2LCAxNDU2NzcsIDE0NTY4NiwgMTQ1Njk1LCAKKyAgICAxNDU3MDYsIDE0NTcxNSwgMTQ1NzI0LCAxNDU3MzUsIDE0NTc0NCwgMTQ1NzUzLCAxNDU3NjEsIDE0NTc2OSwgMTQ1NzgwLCAKKyAgICAxNDU3OTEsIDE0NTc5OSwgMTQ1ODA4LCAxNDU4MTcsIDE0NTgyNCwgMTQ1ODM1LCAxNDU4NDYsIDE0NTg1NSwgMTQ1ODY0LCAKKyAgICAxNDU4NzEsIDE0NTg4MCwgMTQ1ODg5LCAxNDU4OTgsIDE0NTkwOSwgMTQ1OTE4LCAxNDU5MjgsIDE0NTkzNywgMTQ1OTQ2LCAKKyAgICAxNDU5NTcsIDE0NTk3MCwgMTQ1OTg1LCAxNDU5OTYsIDE0NjAwOSwgMTQ2MDIxLCAxNDYwMzAsIDE0NjA0MSwgMTQ2MDUyLCAKKyAgICAxNDYwNjEsIDE0NjA3MiwgMTQ2MDg2LCAxNDYxMDEsIDE0NjEwNCwgMTQ2MTEzLCAxNDYxMTgsIDE0NjEyNCwgMTQ2MTMyLCAKKyAgICAxNDYxMzgsIDE0NjE0NCwgMTQ2MTUzLCAxNDYxNjAsIDE0NjE3MCwgMTQ2MTgyLCAxNDYxODksIDE0NjE5MiwgMTQ2MTk4LCAKKyAgICAxNDYyMDUsIDE0NjIxMSwgMTQ2MjE2LCAxNDYyMTksIDE0NjIyNCwgMTQ2MjI3LCAxNDYyMzQsIDE0NjI0MCwgMTQ2MjQ4LCAKKyAgICAxNDYyNTUsIDE0NjI2MiwgMTQ2MjY4LCAxNDYyNzMsIDE0NjI3NiwgMTQ2Mjc5LCAxNDYyODIsIDE0NjI4OCwgMTQ2Mjk1LCAKKyAgICAxNDYzMDEsIDE0NjMwNiwgMTQ2MzEzLCAxNDYzMTYsIDE0NjMyMSwgMTQ2MzI4LCAxNDYzMzQsIDE0NjM0MiwgMTQ2MzQ5LCAKKyAgICAxNDYzNTksIDE0NjM2OCwgMTQ2MzcxLCAxNDYzNzcsIDE0NjM4NCwgMTQ2MzkxLCAxNDYzOTgsIDE0NjQwMywgMTQ2NDExLCAKKyAgICAxNDY0MTksIDE0NjQyOCwgMTQ2NDM0LCAxNDY0NDMsIDE0NjQ1MiwgMTQ2NDYxLCAxNDY0NjcsIDE0NjQ3NiwgMTQ2NDgzLCAKKyAgICAxNDY0OTAsIDE0NjQ5NywgMTQ2NTA1LCAxNDY1MTEsIDE0NjUxOSwgMTQ2NTI1LCAxNDY1MzIsIDE0NjUzOSwgMTQ2NTQ3LCAKKyAgICAxNDY1NTgsIDE0NjU2OCwgMTQ2NTc0LCAxNDY1ODEsIDE0NjU4OCwgMTQ2NTk1LCAxNDY2MDEsIDE0NjYwOCwgMTQ2NjE1LCAKKyAgICAxNDY2MjAsIDE0NjYyNywgMTQ2NjM1LCAxNDY2NDQsIDE0NjY1MCwgMTQ2NjYyLCAxNDY2NzMsIDE0NjY3OSwgMTQ2Njg3LCAKKyAgICAxNDY2OTMsIDE0NjcwMCwgMTQ2NzA3LCAxNDY3MTQsIDE0NjcyMCwgMTQ2NzI3LCAxNDY3MzYsIDE0Njc0MiwgMTQ2NzQ4LCAKKyAgICAxNDY3NTUsIDE0Njc2MiwgMTQ2NzcwLCAxNDY3ODAsIDE0Njc5MCwgMTQ2ODAwLCAxNDY4MTAsIDE0NjgxOCwgMTQ2ODI2LCAKKyAgICAxNDY4MzYsIDE0Njg0NCwgMTQ2ODQ5LCAxNDY4NTQsIDE0Njg1OSwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgMTQ2ODg1LCAKKyAgICAxNDY4OTEsIDE0Njg5NiwgMTQ2OTAzLCAxNDY5MTEsIDE0NjkyMSwgMTQ2OTI5LCAxNDY5MzcsIDE0Njk0NywgMTQ2OTU3LCAKKyAgICAxNDY5NjUsIDE0Njk3NSwgMTQ2OTg1LCAxNDY5OTcsIDE0NzAwOSwgMTQ3MDIxLCAxNDcwMzEsIDE0NzAzNywgMTQ3MDQzLCAKKyAgICAxNDcwNTAsIDE0NzA1OSwgMTQ3MDY4LCAxNDcwNzcsIDE0NzA4NiwgMTQ3MDk2LCAxNDcxMDUsIDE0NzExNCwgMTQ3MTIzLCAKKyAgICAxNDcxMjgsIDE0NzEzNCwgMTQ3MTQzLCAxNDcxNTMsIDE0NzE2MiwgMTQ3MTY4LCAxNDcxNzQsIDE0NzE4MSwgMTQ3MTg4LCAKKyAgICAxNDcxOTUsIDE0NzIwMSwgMTQ3MjA4LCAxNDcyMTUsIDE0NzIyMiwgMTQ3MjI4LCAxNDcyMzIsIDE0NzIzNywgMTQ3MjQ0LCAKKyAgICAxNDcyNTEsIDE0NzI1OCwgMTQ3MjYzLCAxNDcyNzEsIDE0NzI3OSwgMTQ3Mjg4LCAxNDcyOTYsIDE0NzMwMywgMTQ3MzExLCAKKyAgICAxNDczMjAsIDE0NzMzMCwgMTQ3MzMzLCAxNDczMzcsIDE0NzM0MiwgMTQ3MzQ3LCAxNDczNTIsIDE0NzM1NywgMTQ3MzYyLCAKKyAgICAxNDczNjcsIDE0NzM3MiwgMTQ3Mzc3LCAxNDczODIsIDE0NzM4NywgMTQ3MzkyLCAxNDczOTcsIDE0NzQwMiwgMTQ3NDA3LCAKKyAgICAxNDc0MTIsIDE0NzQxNywgMTQ3NDIyLCAxNDc0MjksIDE0NzQzNSwgMTQ3NDQyLCAxNDc0NDgsIDE0NzQ1MywgMTQ3NDYwLCAKKyAgICAxNDc0NjYsIDE0NzQ3MywgMTQ3NDc5LCAxNDc0ODQsIDE0NzQ5MSwgMTQ3NDk4LCAxNDc1MDUsIDE0NzUxMSwgMTQ3NTE3LCAKKyAgICAxNDc1MjYsIDE0NzUzNSwgMTQ3NTQ2LCAxNDc1NTMsIDE0NzU2MCwgMTQ3NTY5LCAxNDc1NzgsIDE0NzU4NywgMTQ3NTk2LCAKKyAgICAxNDc2MDUsIDE0NzYxMSwgMTQ3NjE5LCAxNDc2MjUsIDE0NzYzNSwgMTQ3NjQwLCAxNDc2NDksIDE0NzY1OCwgMTQ3NjY1LCAKKyAgICAxNDc2NzYsIDE0NzY4MywgMTQ3NjkwLCAxNDc2OTcsIDE0NzcwNCwgMTQ3NzExLCAxNDc3MTgsIDE0NzcyNSwgMTQ3NzMyLCAKKyAgICAxNDc3MzksIDE0Nzc0NiwgMTQ3NzUyLCAxNDc3NTgsIDE0Nzc2NCwgMTQ3NzcxLCAxNDc3NzgsIDE0Nzc4NSwgMTQ3NzkyLCAKKyAgICAxNDc3OTksIDE0NzgwNiwgMTQ3ODEzLCAxNDc4MjAsIDE0NzgyNywgMTQ3ODM0LCAxNDc4NDEsIDE0Nzg0OCwgMTQ3ODUzLCAKKyAgICAxNDc4NjIsIDE0Nzg3MSwgMTQ3ODgwLCAxNDc4ODcsIDE0Nzg5NCwgMTQ3OTAxLCAxNDc5MDgsIDE0NzkxNSwgMTQ3OTIyLCAKKyAgICAxNDc5MjksIDE0NzkzNiwgMTQ3OTQ1LCAxNDc5NTQsIDE0Nzk2MywgMTQ3OTcyLCAxNDc5ODEsIDE0Nzk5MCwgMTQ3OTk5LCAKKyAgICAxNDgwMDgsIDE0ODAxNywgMTQ4MDI2LCAxNDgwMzUsIDE0ODA0NCwgMTQ4MDUzLCAxNDgwNTksIDE0ODA2NywgMTQ4MDczLCAKKyAgICAxNDgwODMsIDE0ODA4OCwgMTQ4MDk3LCAxNDgxMDYsIDE0ODExNSwgMTQ4MTI2LCAxNDgxMzEsIDE0ODEzOCwgMTQ4MTQ1LCAKKyAgICAxNDgxNTIsIDE0ODE1NywgMTQ4MTYzLCAxNDgxNjksIDE0ODE3NSwgMTQ4MTgyLCAxNDgxODksIDE0ODE5NiwgMTQ4MjAzLCAKKyAgICAxNDgyMTAsIDE0ODIxNywgMTQ4MjI0LCAxNDgyMzEsIDE0ODIzOCwgMTQ4MjQ1LCAxNDgyNTIsIDE0ODI1OSwgMTQ4MjY0LCAKKyAgICAxNDgyNzMsIDE0ODI4MiwgMTQ4MjkxLCAxNDgzMDAsIDE0ODMwOSwgMTQ4MzE4LCAxNDgzMjcsIDE0ODMzNiwgMTQ4MzQ3LCAKKyAgICAxNDgzNTgsIDE0ODM2NSwgMTQ4MzcyLCAxNDgzNzksIDE0ODM4NiwgMTQ4MzkzLCAxNDg0MDAsIDE0ODQwOCwgMTQ4NDE4LCAKKyAgICAxNDg0MjgsIDE0ODQzOCwgMTQ4NDQ5LCAxNDg0NjAsIDE0ODQ3MSwgMTQ4NDgwLCAxNDg0ODksIDE0ODQ5OCwgMTQ4NTAzLCAKKyAgICAxNDg1MDgsIDE0ODUxMywgMTQ4NTE4LCAxNDg1MjksIDE0ODU0MCwgMTQ4NTUxLCAxNDg1NjIsIDE0ODU3MywgMTQ4NTgzLCAKKyAgICAxNDg1OTQsIDE0ODYwMywgMTQ4NjEyLCAxNDg2MjEsIDE0ODYzMCwgMTQ4NjM5LCAxNDg2NDcsIDE0ODY1NiwgMTQ4NjY3LCAKKyAgICAxNDg2NzgsIDE0ODY4OSwgMTQ4NzAwLCAxNDg3MTEsIDE0ODcyMywgMTQ4NzM2LCAxNDg3NDgsIDE0ODc2MSwgMTQ4NzczLCAKKyAgICAxNDg3ODYsIDE0ODc5OCwgMTQ4ODExLCAxNDg4MjIsIDE0ODgzMywgMTQ4ODQyLCAxNDg4NTAsIDE0ODg1OSwgMTQ4ODcwLCAKKyAgICAxNDg4ODEsIDE0ODg5MywgMTQ4OTA2LCAxNDg5MjAsIDE0ODkzNSwgMTQ4OTQ3LCAxNDg5NjAsIDE0ODk3MiwgMTQ4OTg1LCAKKyAgICAxNDg5OTYsIDE0OTAwNywgMTQ5MDE2LCAxNDkwMjQsIDE0OTAzMywgMTQ5MDQwLCAxNDkwNDcsIDE0OTA1NCwgMTQ5MDYxLCAKKyAgICAxNDkwNjgsIDE0OTA3NSwgMTQ5MDgyLCAxNDkwODksIDE0OTA5NiwgMTQ5MTAzLCAxNDkxMDgsIDE0OTExMywgMTQ5MTE4LCAKKyAgICAxNDkxMjUsIDE0OTEzNSwgMTQ5MTQ2LCAxNDkxNTYsIDE0OTE2NywgMTQ5MTgxLCAxNDkxOTYsIDE0OTIxMSwgMTQ5MjI1LCAKKyAgICAxNDkyNDAsIDE0OTI1NSwgMTQ5MjY2LCAxNDkyNzcsIDE0OTI5MCwgMTQ5MzAzLCAxNDkzMTIsIDE0OTMyMSwgMTQ5MzM0LCAKKyAgICAxNDkzNDcsIDE0OTM1NCwgMTQ5MzYxLCAxNDkzNjYsIDE0OTM3MSwgMTQ5Mzc2LCAxNDkzODEsIDE0OTM4NiwgMTQ5MzkzLCAKKyAgICAxNDk0MDIsIDE0OTQwNywgMTQ5NDEwLCAxNDk0MTUsIDE0OTQyMiwgMTQ5NDI5LCAxNDk0MzYsIDE0OTQ0MywgMTQ5NDUwLCAKKyAgICAxNDk0NTcsIDE0OTQ3MCwgMTQ5NDg0LCAxNDk0OTksIDE0OTUwNiwgMTQ5NTEzLCAxNDk1MjAsIDE0OTUyOSwgMTQ5NTM3LCAKKyAgICAxNDk1NDUsIDE0OTU1NCwgMTQ5NTU5LCAxNDk1NjQsIDE0OTU2OSwgMTQ5NTc0LCAxNDk1NzksIDE0OTU4NCwgMTQ5NTkxLCAKKyAgICAxNDk1OTgsIDE0OTYwNCwgMTQ5NjExLCAxNDk2MTcsIDE0OTYyNCwgMTQ5NjI5LCAxNDk2MzQsIDE0OTYzOSwgMTQ5NjQ0LCAKKyAgICAxNDk2NDksIDE0OTY1NiwgMTQ5NjYzLCAxNDk2NjgsIDE0OTY3NSwgMTQ5NjgyLCAxNDk2ODcsIDE0OTY5MiwgMTQ5Njk3LCAKKyAgICAxNDk3MDIsIDE0OTcwNywgMTQ5NzEyLCAxNDk3MTksIDE0OTcyNiwgMTQ5NzMzLCAxNDk3MzYsIDE0OTc0MSwgMTQ5NzQ2LCAKKyAgICAxNDk3NTEsIDE0OTc1NiwgMTQ5NzYzLCAxNDk3NzAsIDE0OTc3OCwgMTQ5Nzg2LCAxNDk3OTEsIDE0OTc5NiwgMTQ5ODAzLCAKKyAgICAxNDk4MTAsIDE0OTgxNywgMTQ5ODIyLCAxNDk4MjksIDE0OTgzNiwgMTQ5ODQxLCAxNDk4NDgsIDE0OTg1NSwgMTQ5ODYxLCAKKyAgICAxNDk4NjcsIDE0OTg3MywgMTQ5ODc5LCAxNDk4ODcsIDE0OTg5NSwgMTQ5OTAxLCAxNDk5MDksIDE0OTkxNywgMTQ5OTIyLCAKKyAgICAxNDk5MjksIDE0OTkzNiwgMTQ5OTQxLCAxNDk5NDgsIDE0OTk1NSwgMTQ5OTYyLCAxNDk5NzAsIDE0OTk3OCwgMTQ5OTgzLCAKKyAgICAxNDk5OTAsIDE0OTk5NywgMTUwMDA2LCAxNTAwMTMsIDE1MDAyMiwgMTUwMDMzLCAxNTAwNDIsIDE1MDA1MSwgMTUwMDYwLCAKKyAgICAxNTAwNjksIDE1MDA3MiwgMTUwMDc3LCAxNTAwODQsIDE1MDA5MywgMTUwMTAwLCAxNTAxMDksIDE1MDExNiwgMTUwMTIxLCAKKyAgICAxNTAxMjYsIDE1MDEyOSwgMTUwMTMyLCAxNTAxMzUsIDE1MDE0MiwgMTUwMTQ5LCAxNTAxNTgsIDE1MDE2NywgMTUwMTc2LCAKKyAgICAxNTAxODMsIDE1MDE5MCwgMTUwMTk1LCAxNTAyMDgsIDE1MDIxMywgMTUwMjE4LCAxNTAyMjMsIDE1MDIyOCwgMTUwMjMzLCAKKyAgICAxNTAyMzgsIDE1MDI0MywgMTUwMjQ4LCAxNTAyNTEsIDE1MDI1NiwgMTUwMjYxLCAxNTAyNjYsIDE1MDI3MSwgMTUwMjc2LCAKKyAgICAxNTAyODMsIDE1MDI4OCwgMTUwMjk1LCAxNTAyOTgsIDE1MDMwMywgMTUwMzA2LCAxNTAzMDksIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDMxMiwgMTUwMzE3LCAxNTAzMjIsIDE1MDMyNywgMTUwMzMyLCAwLCAKKyAgICAxNTAzMzcsIDE1MDM0MiwgMTUwMzQ3LCAxNTAzNTIsIDE1MDM1NywgMTUwMzYyLCAxNTAzNjcsIDE1MDM3MiwgMTUwMzc3LCAKKyAgICAxNTAzODIsIDE1MDM4NywgMTUwMzkyLCAxNTAzOTcsIDE1MDQwMiwgMTUwNDA3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTA0MTIsIDE1MDQxNywgMTUwNDIyLCAxNTA0MjcsIDE1MDQzMiwgMTUwNDM3LCAxNTA0NDIsIDAsIDE1MDQ0NywgCisgICAgMTUwNDUyLCAxNTA0NTcsIDE1MDQ2MywgMTUwNDY3LCAxNTA0NzIsIDE1MDQ3NywgMTUwNDgyLCAxNTA0ODcsIDE1MDQ5MiwgCisgICAgMTUwNDk3LCAxNTA1MDIsIDE1MDUwNywgMTUwNTEyLCAxNTA1MTcsIDE1MDUyMiwgMTUwNTI3LCAwLCAwLCAxNTA1MzIsIAorICAgIDE1MDUzNywgMTUwNTQyLCAxNTA1NDcsIDE1MDU1MiwgMTUwNTU3LCAxNTA1NjIsIDAsIDE1MDU2NywgMTUwNTcyLCAwLCAKKyAgICAxNTA1NzgsIDE1MDU4MywgMTUwNTkxLCAxNTA1OTgsIDE1MDYwNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTM1MDk1LCAxMzUwOTksIDEzNTEwNCwgMTM1MTA5LCAxMzUxMTQsIDEzNTExOCwgCi0gICAgMTM1MTIzLCAxMzUxMjgsIDEzNTEzMywgMTM1MTM3LCAxMzUxNDIsIDEzNTE0NywgMTM1MTUxLCAxMzUxNTYsIDEzNTE2MSwgCi0gICAgMTM1MTY1LCAxMzUxNzAsIDEzNTE3NSwgMTM1MTc5LCAxMzUxODMsIDEzNTE4OCwgMTM1MTkyLCAxMzUxOTcsIDEzNTIwMiwgCi0gICAgMTM1MjA3LCAxMzUyMTIsIDEzNTIxNywgMTM1MjIxLCAxMzUyMjYsIDEzNTIzMSwgMTM1MjM2LCAxMzUyNDAsIDEzNTI0NSwgCi0gICAgMTM1MjUwLCAxMzUyNTUsIDEzNTI1OSwgMTM1MjY0LCAxMzUyNjksIDEzNTI3MywgMTM1Mjc4LCAxMzUyODMsIDEzNTI4NywgCi0gICAgMTM1MjkyLCAxMzUyOTcsIDEzNTMwMSwgMTM1MzA1LCAxMzUzMTAsIDEzNTMxNCwgMTM1MzE5LCAxMzUzMjQsIDEzNTMyOSwgCi0gICAgMTM1MzM0LCAxMzUzMzksIDEzNTM0MywgMTM1MzQ4LCAxMzUzNTMsIDEzNTM1OCwgMTM1MzYyLCAxMzUzNjcsIDEzNTM3MiwgCi0gICAgMTM1Mzc3LCAxMzUzODEsIDEzNTM4NiwgMTM1MzkxLCAxMzUzOTUsIDEzNTQwMCwgMTM1NDA1LCAxMzU0MDksIDEzNTQxNCwgCi0gICAgMTM1NDE5LCAxMzU0MjMsIDEzNTQyNywgMTM1NDMyLCAxMzU0MzYsIDEzNTQ0MSwgMTM1NDQ2LCAxMzU0NTEsIDEzNTQ1NiwgCi0gICAgMTM1NDYxLCAxMzU0NjUsIDEzNTQ3MCwgMTM1NDc1LCAxMzU0ODAsIDEzNTQ4NCwgMTM1NDg5LCAwLCAxMzU0OTQsIAotICAgIDEzNTQ5OCwgMTM1NTAzLCAxMzU1MDgsIDEzNTUxMiwgMTM1NTE3LCAxMzU1MjIsIDEzNTUyNiwgMTM1NTMxLCAxMzU1MzYsIAotICAgIDEzNTU0MCwgMTM1NTQ0LCAxMzU1NDksIDEzNTU1MywgMTM1NTU4LCAxMzU1NjMsIDEzNTU2OCwgMTM1NTczLCAxMzU1NzgsIAotICAgIDEzNTU4MywgMTM1NTg5LCAxMzU1OTUsIDEzNTYwMSwgMTM1NjA2LCAxMzU2MTIsIDEzNTYxOCwgMTM1NjI0LCAxMzU2MjksIAotICAgIDEzNTYzNSwgMTM1NjQxLCAxMzU2NDYsIDEzNTY1MiwgMTM1NjU4LCAxMzU2NjMsIDEzNTY2OSwgMTM1Njc1LCAxMzU2ODAsIAotICAgIDEzNTY4NSwgMTM1NjkxLCAxMzU2OTYsIDEzNTcwMiwgMTM1NzA4LCAxMzU3MTQsIDEzNTcyMCwgMTM1NzI2LCAxMzU3MzEsIAotICAgIDEzNTczNywgMTM1NzQzLCAxMzU3NDksIDEzNTc1NCwgMTM1NzYwLCAxMzU3NjYsIDEzNTc3MiwgMTM1Nzc3LCAxMzU3ODMsIAotICAgIDEzNTc4OSwgMTM1Nzk0LCAxMzU4MDAsIDEzNTgwNiwgMTM1ODExLCAxMzU4MTcsIDEzNTgyMywgMTM1ODI4LCAxMzU4MzMsIAotICAgIDEzNTgzOSwgMTM1ODQ0LCAxMzU4NTAsIDEzNTg1NiwgMTM1ODYyLCAxMzU4NjgsIDEzNTg3NCwgMCwgMTM1ODc4LCAKLSAgICAxMzU4ODMsIDAsIDAsIDEzNTg4OCwgMCwgMCwgMTM1ODkzLCAxMzU4OTgsIDAsIDAsIDEzNTkwMywgMTM1OTA4LCAxMzU5MTIsIAotICAgIDEzNTkxNywgMCwgMTM1OTIyLCAxMzU5MjYsIDEzNTkzMSwgMTM1OTM1LCAxMzU5NDAsIDEzNTk0NSwgMTM1OTUwLCAKLSAgICAxMzU5NTUsIDEzNTk2MCwgMTM1OTY0LCAxMzU5NjksIDEzNTk3NCwgMCwgMTM1OTc5LCAwLCAxMzU5ODQsIDEzNTk4OSwgCi0gICAgMTM1OTkzLCAxMzU5OTgsIDEzNjAwMywgMTM2MDA3LCAxMzYwMTIsIDAsIDEzNjAxNywgMTM2MDIyLCAxMzYwMjcsIAotICAgIDEzNjAzMSwgMTM2MDM1LCAxMzYwNDAsIDEzNjA0NCwgMTM2MDQ5LCAxMzYwNTQsIDEzNjA1OSwgMTM2MDY0LCAxMzYwNjksIAotICAgIDEzNjA3NCwgMTM2MDgwLCAxMzYwODYsIDEzNjA5MiwgMTM2MDk3LCAxMzYxMDMsIDEzNjEwOSwgMTM2MTE1LCAxMzYxMjAsIAotICAgIDEzNjEyNiwgMTM2MTMyLCAxMzYxMzcsIDEzNjE0MywgMTM2MTQ5LCAxMzYxNTQsIDEzNjE2MCwgMTM2MTY2LCAxMzYxNzEsIAotICAgIDEzNjE3NiwgMTM2MTgyLCAxMzYxODcsIDEzNjE5MywgMTM2MTk5LCAxMzYyMDUsIDEzNjIxMSwgMTM2MjE3LCAxMzYyMjIsIAotICAgIDEzNjIyOCwgMTM2MjM0LCAxMzYyNDAsIDEzNjI0NSwgMTM2MjUxLCAxMzYyNTcsIDEzNjI2MywgMTM2MjY4LCAxMzYyNzQsIAotICAgIDEzNjI4MCwgMTM2Mjg1LCAxMzYyOTEsIDEzNjI5NywgMTM2MzAyLCAxMzYzMDgsIDEzNjMxNCwgMTM2MzE5LCAxMzYzMjQsIAotICAgIDEzNjMzMCwgMTM2MzM1LCAxMzYzNDEsIDEzNjM0NywgMTM2MzUzLCAxMzYzNTksIDEzNjM2NSwgMTM2MzY5LCAwLCAKLSAgICAxMzYzNzQsIDEzNjM3OSwgMTM2MzgzLCAxMzYzODgsIDAsIDAsIDEzNjM5MywgMTM2Mzk4LCAxMzY0MDMsIDEzNjQwNywgCi0gICAgMTM2NDEyLCAxMzY0MTcsIDEzNjQyMSwgMTM2NDI2LCAwLCAxMzY0MzEsIDEzNjQzNSwgMTM2NDQwLCAxMzY0NDQsIAotICAgIDEzNjQ0OSwgMTM2NDU0LCAxMzY0NTksIDAsIDEzNjQ2NCwgMTM2NDY4LCAxMzY0NzMsIDEzNjQ3OCwgMTM2NDgzLCAKLSAgICAxMzY0ODcsIDEzNjQ5MiwgMTM2NDk3LCAxMzY1MDIsIDEzNjUwNiwgMTM2NTExLCAxMzY1MTYsIDEzNjUyMCwgMTM2NTI1LCAKLSAgICAxMzY1MzAsIDEzNjUzNCwgMTM2NTM5LCAxMzY1NDQsIDEzNjU0OCwgMTM2NTUyLCAxMzY1NTcsIDEzNjU2MSwgMTM2NTY2LCAKLSAgICAxMzY1NzEsIDEzNjU3NiwgMTM2NTgxLCAxMzY1ODYsIDEzNjU5MCwgMCwgMTM2NTk1LCAxMzY2MDAsIDEzNjYwNCwgCi0gICAgMTM2NjA5LCAwLCAxMzY2MTQsIDEzNjYxOCwgMTM2NjIzLCAxMzY2MjgsIDEzNjYzMiwgMCwgMTM2NjM3LCAwLCAwLCAwLCAKLSAgICAxMzY2NDEsIDEzNjY0NSwgMTM2NjUwLCAxMzY2NTQsIDEzNjY1OSwgMTM2NjY0LCAxMzY2NjksIDAsIDEzNjY3NCwgCi0gICAgMTM2Njc4LCAxMzY2ODMsIDEzNjY4OCwgMTM2NjkzLCAxMzY2OTcsIDEzNjcwMiwgMTM2NzA3LCAxMzY3MTIsIDEzNjcxNiwgCi0gICAgMTM2NzIxLCAxMzY3MjYsIDEzNjczMCwgMTM2NzM1LCAxMzY3NDAsIDEzNjc0NCwgMTM2NzQ5LCAxMzY3NTQsIDEzNjc1OCwgCi0gICAgMTM2NzYyLCAxMzY3NjcsIDEzNjc3MSwgMTM2Nzc2LCAxMzY3ODEsIDEzNjc4NiwgMTM2NzkxLCAxMzY3OTYsIDEzNjgwMSwgCi0gICAgMTM2ODA3LCAxMzY4MTMsIDEzNjgxOSwgMTM2ODI0LCAxMzY4MzAsIDEzNjgzNiwgMTM2ODQyLCAxMzY4NDcsIDEzNjg1MywgCi0gICAgMTM2ODU5LCAxMzY4NjQsIDEzNjg3MCwgMTM2ODc2LCAxMzY4ODEsIDEzNjg4NywgMTM2ODkzLCAxMzY4OTgsIDEzNjkwMywgCi0gICAgMTM2OTA5LCAxMzY5MTQsIDEzNjkyMCwgMTM2OTI2LCAxMzY5MzIsIDEzNjkzOCwgMTM2OTQ0LCAxMzY5NDksIDEzNjk1NSwgCi0gICAgMTM2OTYxLCAxMzY5NjcsIDEzNjk3MiwgMTM2OTc4LCAxMzY5ODQsIDEzNjk5MCwgMTM2OTk1LCAxMzcwMDEsIDEzNzAwNywgCi0gICAgMTM3MDEyLCAxMzcwMTgsIDEzNzAyNCwgMTM3MDI5LCAxMzcwMzUsIDEzNzA0MSwgMTM3MDQ2LCAxMzcwNTEsIDEzNzA1NywgCi0gICAgMTM3MDYyLCAxMzcwNjgsIDEzNzA3NCwgMTM3MDgwLCAxMzcwODYsIDEzNzA5MiwgMTM3MDk2LCAxMzcxMDEsIDEzNzEwNiwgCi0gICAgMTM3MTExLCAxMzcxMTUsIDEzNzEyMCwgMTM3MTI1LCAxMzcxMzAsIDEzNzEzNCwgMTM3MTM5LCAxMzcxNDQsIDEzNzE0OCwgCi0gICAgMTM3MTUzLCAxMzcxNTgsIDEzNzE2MiwgMTM3MTY3LCAxMzcxNzIsIDEzNzE3NiwgMTM3MTgwLCAxMzcxODUsIDEzNzE4OSwgCi0gICAgMTM3MTk0LCAxMzcxOTksIDEzNzIwNCwgMTM3MjA5LCAxMzcyMTQsIDEzNzIxOCwgMTM3MjIzLCAxMzcyMjgsIDEzNzIzMywgCi0gICAgMTM3MjM3LCAxMzcyNDIsIDEzNzI0NywgMTM3MjUyLCAxMzcyNTYsIDEzNzI2MSwgMTM3MjY2LCAxMzcyNzAsIDEzNzI3NSwgCi0gICAgMTM3MjgwLCAxMzcyODQsIDEzNzI4OSwgMTM3Mjk0LCAxMzcyOTgsIDEzNzMwMiwgMTM3MzA3LCAxMzczMTEsIDEzNzMxNiwgCi0gICAgMTM3MzIxLCAxMzczMjYsIDEzNzMzMSwgMTM3MzM2LCAxMzczNDEsIDEzNzM0NywgMTM3MzUzLCAxMzczNTksIDEzNzM2NCwgCi0gICAgMTM3MzcwLCAxMzczNzYsIDEzNzM4MiwgMTM3Mzg3LCAxMzczOTMsIDEzNzM5OSwgMTM3NDA0LCAxMzc0MTAsIDEzNzQxNiwgCi0gICAgMTM3NDIxLCAxMzc0MjcsIDEzNzQzMywgMTM3NDM4LCAxMzc0NDMsIDEzNzQ0OSwgMTM3NDU0LCAxMzc0NjAsIDEzNzQ2NiwgCi0gICAgMTM3NDcyLCAxMzc0NzgsIDEzNzQ4NCwgMTM3NDg5LCAxMzc0OTUsIDEzNzUwMSwgMTM3NTA3LCAxMzc1MTIsIDEzNzUxOCwgCi0gICAgMTM3NTI0LCAxMzc1MzAsIDEzNzUzNSwgMTM3NTQxLCAxMzc1NDcsIDEzNzU1MiwgMTM3NTU4LCAxMzc1NjQsIDEzNzU2OSwgCi0gICAgMTM3NTc1LCAxMzc1ODEsIDEzNzU4NiwgMTM3NTkxLCAxMzc1OTcsIDEzNzYwMiwgMTM3NjA4LCAxMzc2MTQsIDEzNzYyMCwgCi0gICAgMTM3NjI2LCAxMzc2MzIsIDEzNzYzNywgMTM3NjQzLCAxMzc2NDksIDEzNzY1NSwgMTM3NjYwLCAxMzc2NjYsIDEzNzY3MiwgCi0gICAgMTM3Njc4LCAxMzc2ODMsIDEzNzY4OSwgMTM3Njk1LCAxMzc3MDAsIDEzNzcwNiwgMTM3NzEyLCAxMzc3MTcsIDEzNzcyMywgCi0gICAgMTM3NzI5LCAxMzc3MzQsIDEzNzczOSwgMTM3NzQ1LCAxMzc3NTAsIDEzNzc1NiwgMTM3NzYyLCAxMzc3NjgsIDEzNzc3NCwgCi0gICAgMTM3NzgwLCAxMzc3ODUsIDEzNzc5MSwgMTM3Nzk3LCAxMzc4MDMsIDEzNzgwOCwgMTM3ODE0LCAxMzc4MjAsIDEzNzgyNiwgCi0gICAgMTM3ODMxLCAxMzc4MzcsIDEzNzg0MywgMTM3ODQ4LCAxMzc4NTQsIDEzNzg2MCwgMTM3ODY1LCAxMzc4NzEsIDEzNzg3NywgCi0gICAgMTM3ODgyLCAxMzc4ODcsIDEzNzg5MywgMTM3ODk4LCAxMzc5MDQsIDEzNzkxMCwgMTM3OTE2LCAxMzc5MjIsIDEzNzkyOCwgCi0gICAgMTM3OTM0LCAxMzc5NDEsIDEzNzk0OCwgMTM3OTU1LCAxMzc5NjEsIDEzNzk2OCwgMTM3OTc1LCAxMzc5ODIsIDEzNzk4OCwgCi0gICAgMTM3OTk1LCAxMzgwMDIsIDEzODAwOCwgMTM4MDE1LCAxMzgwMjIsIDEzODAyOCwgMTM4MDM1LCAxMzgwNDIsIDEzODA0OCwgCi0gICAgMTM4MDU0LCAxMzgwNjEsIDEzODA2NywgMTM4MDc0LCAxMzgwODEsIDEzODA4OCwgMTM4MDk1LCAxMzgxMDIsIDEzODEwOCwgCi0gICAgMTM4MTE1LCAxMzgxMjIsIDEzODEyOSwgMTM4MTM1LCAxMzgxNDIsIDEzODE0OSwgMTM4MTU2LCAxMzgxNjIsIDEzODE2OSwgCi0gICAgMTM4MTc2LCAxMzgxODIsIDEzODE4OSwgMTM4MTk2LCAxMzgyMDIsIDEzODIwOSwgMTM4MjE2LCAxMzgyMjIsIDEzODIyOCwgCi0gICAgMTM4MjM1LCAxMzgyNDEsIDEzODI0OCwgMTM4MjU1LCAxMzgyNjIsIDEzODI2OSwgMTM4Mjc2LCAxMzgyODEsIDEzODI4NywgCi0gICAgMTM4MjkzLCAxMzgyOTksIDEzODMwNCwgMTM4MzEwLCAxMzgzMTYsIDEzODMyMiwgMTM4MzI3LCAxMzgzMzMsIDEzODMzOSwgCi0gICAgMTM4MzQ0LCAxMzgzNTAsIDEzODM1NiwgMTM4MzYxLCAxMzgzNjcsIDEzODM3MywgMTM4Mzc4LCAxMzgzODMsIDEzODM4OSwgCi0gICAgMTM4Mzk0LCAxMzg0MDAsIDEzODQwNiwgMTM4NDEyLCAxMzg0MTgsIDEzODQyNCwgMTM4NDI5LCAxMzg0MzUsIDEzODQ0MSwgCi0gICAgMTM4NDQ3LCAxMzg0NTIsIDEzODQ1OCwgMTM4NDY0LCAxMzg0NzAsIDEzODQ3NSwgMTM4NDgxLCAxMzg0ODcsIDEzODQ5MiwgCi0gICAgMTM4NDk4LCAxMzg1MDQsIDEzODUwOSwgMTM4NTE1LCAxMzg1MjEsIDEzODUyNiwgMTM4NTMxLCAxMzg1MzcsIDEzODU0MiwgCi0gICAgMTM4NTQ4LCAxMzg1NTQsIDEzODU2MCwgMTM4NTY2LCAxMzg1NzIsIDEzODU3OCwgMCwgMCwgMTM4NTg1LCAxMzg1OTAsIAotICAgIDEzODU5NSwgMTM4NjAwLCAxMzg2MDUsIDEzODYxMCwgMTM4NjE1LCAxMzg2MjAsIDEzODYyNSwgMTM4NjMwLCAxMzg2MzUsIAotICAgIDEzODY0MCwgMTM4NjQ1LCAxMzg2NTAsIDEzODY1NSwgMTM4NjYwLCAxMzg2NjUsIDEzODY3MCwgMTM4Njc2LCAxMzg2ODEsIAotICAgIDEzODY4NiwgMTM4NjkxLCAxMzg2OTYsIDEzODcwMSwgMTM4NzA2LCAxMzg3MTEsIDEzODcxNSwgMTM4NzIwLCAxMzg3MjUsIAotICAgIDEzODczMCwgMTM4NzM1LCAxMzg3NDAsIDEzODc0NSwgMTM4NzUwLCAxMzg3NTUsIDEzODc2MCwgMTM4NzY1LCAxMzg3NzAsIAotICAgIDEzODc3NSwgMTM4NzgwLCAxMzg3ODUsIDEzODc5MCwgMTM4Nzk1LCAxMzg4MDAsIDEzODgwNiwgMTM4ODExLCAxMzg4MTYsIAotICAgIDEzODgyMSwgMTM4ODI2LCAxMzg4MzEsIDEzODgzNiwgMTM4ODQxLCAxMzg4NDcsIDEzODg1MiwgMTM4ODU3LCAxMzg4NjIsIAotICAgIDEzODg2NywgMTM4ODcyLCAxMzg4NzcsIDEzODg4MiwgMTM4ODg3LCAxMzg4OTIsIDEzODg5NywgMTM4OTAyLCAxMzg5MDcsIAotICAgIDEzODkxMiwgMTM4OTE3LCAxMzg5MjIsIDEzODkyNywgMTM4OTMyLCAxMzg5MzcsIDEzODk0MiwgMTM4OTQ3LCAxMzg5NTIsIAotICAgIDEzODk1NywgMTM4OTYyLCAxMzg5NjgsIDEzODk3MywgMTM4OTc4LCAxMzg5ODMsIDEzODk4OCwgMTM4OTkzLCAxMzg5OTgsIAotICAgIDEzOTAwMywgMTM5MDA3LCAxMzkwMTIsIDEzOTAxNywgMTM5MDIyLCAxMzkwMjcsIDEzOTAzMiwgMTM5MDM3LCAxMzkwNDIsIAotICAgIDEzOTA0NywgMTM5MDUyLCAxMzkwNTcsIDEzOTA2MiwgMTM5MDY3LCAxMzkwNzIsIDEzOTA3NywgMTM5MDgyLCAxMzkwODcsIAotICAgIDEzOTA5MiwgMTM5MDk4LCAxMzkxMDMsIDEzOTEwOCwgMTM5MTEzLCAxMzkxMTgsIDEzOTEyMywgMTM5MTI4LCAxMzkxMzMsIAotICAgIDEzOTEzOSwgMTM5MTQ0LCAxMzkxNDksIDEzOTE1NCwgMTM5MTU5LCAxMzkxNjQsIDEzOTE2OSwgMTM5MTc1LCAxMzkxODEsIAotICAgIDEzOTE4NywgMTM5MTkzLCAxMzkxOTksIDEzOTIwNSwgMTM5MjExLCAxMzkyMTcsIDEzOTIyMywgMTM5MjI5LCAxMzkyMzUsIAotICAgIDEzOTI0MSwgMTM5MjQ3LCAxMzkyNTMsIDEzOTI1OSwgMTM5MjY1LCAxMzkyNzEsIDEzOTI3OCwgMTM5Mjg0LCAxMzkyOTAsIAotICAgIDEzOTI5NiwgMTM5MzAyLCAxMzkzMDgsIDEzOTMxNCwgMTM5MzIwLCAxMzkzMjUsIDEzOTMzMSwgMTM5MzM3LCAxMzkzNDMsIAotICAgIDEzOTM0OSwgMTM5MzU1LCAxMzkzNjEsIDEzOTM2NywgMTM5MzczLCAxMzkzNzksIDEzOTM4NSwgMTM5MzkxLCAxMzkzOTcsIAotICAgIDEzOTQwMywgMTM5NDA5LCAxMzk0MTUsIDEzOTQyMSwgMTM5NDI3LCAxMzk0MzQsIDEzOTQ0MCwgMTM5NDQ2LCAxMzk0NTIsIAotICAgIDEzOTQ1OCwgMTM5NDY0LCAxMzk0NzAsIDEzOTQ3NiwgMTM5NDgzLCAxMzk0ODksIDEzOTQ5NSwgMTM5NTAxLCAxMzk1MDcsIAotICAgIDEzOTUxMywgMTM5NTE5LCAxMzk1MjUsIDEzOTUzMSwgMTM5NTM3LCAxMzk1NDMsIDEzOTU0OSwgMTM5NTU1LCAxMzk1NjEsIAotICAgIDEzOTU2NywgMTM5NTczLCAxMzk1NzksIDEzOTU4NSwgMTM5NTkxLCAxMzk1OTcsIDEzOTYwMywgMTM5NjA5LCAxMzk2MTUsIAotICAgIDEzOTYyMSwgMTM5NjI4LCAxMzk2MzQsIDEzOTY0MCwgMTM5NjQ2LCAxMzk2NTIsIDEzOTY1OCwgMTM5NjY0LCAxMzk2NzAsIAotICAgIDEzOTY3NSwgMTM5NjgxLCAxMzk2ODcsIDEzOTY5MywgMTM5Njk5LCAxMzk3MDUsIDEzOTcxMSwgMTM5NzE3LCAxMzk3MjMsIAotICAgIDEzOTcyOSwgMTM5NzM1LCAxMzk3NDEsIDEzOTc0NywgMTM5NzUzLCAxMzk3NTksIDEzOTc2NSwgMTM5NzcxLCAxMzk3NzcsIAotICAgIDEzOTc4NCwgMTM5NzkwLCAxMzk3OTYsIDEzOTgwMiwgMTM5ODA4LCAxMzk4MTQsIDEzOTgyMCwgMTM5ODI2LCAxMzk4MzMsIAotICAgIDEzOTgzOSwgMTM5ODQ1LCAxMzk4NTEsIDEzOTg1NywgMTM5ODYzLCAxMzk4NjksIDEzOTg3NiwgMTM5ODgzLCAxMzk4OTAsIAotICAgIDEzOTg5NywgMTM5OTA0LCAxMzk5MTEsIDEzOTkxOCwgMTM5OTI1LCAxMzk5MzIsIDEzOTkzOSwgMTM5OTQ2LCAxMzk5NTMsIAotICAgIDEzOTk2MCwgMTM5OTY3LCAxMzk5NzQsIDEzOTk4MSwgMTM5OTg4LCAxMzk5OTYsIDE0MDAwMywgMTQwMDEwLCAxNDAwMTcsIAotICAgIDE0MDAyNCwgMTQwMDMxLCAxNDAwMzgsIDE0MDA0NSwgMTQwMDUxLCAxNDAwNTgsIDE0MDA2NSwgMTQwMDcyLCAxNDAwNzksIAotICAgIDE0MDA4NiwgMTQwMDkzLCAxNDAxMDAsIDE0MDEwNywgMTQwMTE0LCAxNDAxMjEsIDE0MDEyOCwgMTQwMTM1LCAxNDAxNDIsIAotICAgIDE0MDE0OSwgMTQwMTU2LCAxNDAxNjMsIDE0MDE3MCwgMTQwMTc4LCAxNDAxODUsIDE0MDE5MiwgMTQwMTk5LCAxNDAyMDYsIAotICAgIDE0MDIxMywgMTQwMjIwLCAxNDAyMjcsIDE0MDIzNSwgMTQwMjQyLCAxNDAyNDksIDE0MDI1NiwgMTQwMjYzLCAxNDAyNzAsIAotICAgIDE0MDI3NywgMTQwMjgyLCAwLCAwLCAxNDAyODcsIDE0MDI5MiwgMTQwMjk2LCAxNDAzMDAsIDE0MDMwNCwgMTQwMzA4LCAKLSAgICAxNDAzMTIsIDE0MDMxNiwgMTQwMzIxLCAxNDAzMjUsIDE0MDMzMCwgMTQwMzM1LCAxNDAzMzksIDE0MDM0MywgMTQwMzQ3LCAKLSAgICAxNDAzNTEsIDE0MDM1NSwgMTQwMzU5LCAxNDAzNjQsIDE0MDM2OCwgMTQwMzczLCAxNDAzNzgsIDE0MDM4MiwgMTQwMzg2LCAKLSAgICAxNDAzOTAsIDE0MDM5NCwgMTQwMzk4LCAxNDA0MDIsIDE0MDQwNywgMTQwNDExLCAxNDA0MTYsIDE0MDQyMiwgMTQwNDI3LCAKLSAgICAxNDA0MzIsIDE0MDQzNywgMTQwNDQyLCAxNDA0NDcsIDE0MDQ1MiwgMTQwNDU4LCAxNDA0NjMsIDE0MDQ2OSwgMTQwNDc1LCAKLSAgICAxNDA0ODAsIDE0MDQ4NSwgMTQwNDkwLCAxNDA0OTUsIDE0MDUwMCwgMTQwNTA1LCAxNDA1MTEsIDE0MDUxNiwgMTQwNTIyLCAKLSAgICAxNDA1MjYsIDE0MDUzMSwgMTQwNTM2LCAxNDA1NDEsIDE0MDU0NiwgMTQwNTUxLCAxNDA1NTYsIDE0MDU2MiwgMTQwNTcwLCAKLSAgICAxNDA1NzcsIDE0MDU4MiwgMTQwNTg3LCAxNDA1OTQsIDE0MDYwMCwgMTQwNjA1LCAxNDA2MTEsIDE0MDYxNywgMTQwNjI1LCAKLSAgICAxNDA2MzEsIDE0MDYzOCwgMTQwNjQ2LCAxNDA2NTIsIDE0MDY2MSwgMTQwNjcwLCAxNDA2NzgsIDE0MDY4NiwgMTQwNjkyLCAKLSAgICAxNDA2OTksIDE0MDcwNywgMTQwNzE1LCAxNDA3MjEsIDE0MDcyOCwgMTQwNzM3LCAxNDA3NDYsIDE0MDc1MywgMTQwNzY0LCAKLSAgICAxNDA3NzQsIDE0MDc4NCwgMTQwNzk0LCAxNDA4MDQsIDE0MDgxMSwgMTQwODE4LCAxNDA4MjUsIDE0MDgzMiwgMTQwODQxLCAKLSAgICAxNDA4NTAsIDE0MDg2MSwgMTQwODcyLCAxNDA4ODEsIDE0MDg5MCwgMTQwOTAxLCAxNDA5MTAsIDE0MDkxOSwgMTQwOTMwLCAKLSAgICAxNDA5MzksIDE0MDk0OCwgMTQwOTU2LCAxNDA5NjQsIDE0MDk3NSwgMTQwOTg2LCAxNDA5OTQsIDE0MTAwMywgMTQxMDEyLCAKLSAgICAxNDEwMTksIDE0MTAzMCwgMTQxMDQxLCAxNDEwNTAsIDE0MTA1OSwgMTQxMDY2LCAxNDEwNzUsIDE0MTA4NCwgMTQxMDkzLCAKLSAgICAxNDExMDQsIDE0MTExMywgMTQxMTIzLCAxNDExMzIsIDE0MTE0MSwgMTQxMTUyLCAxNDExNjUsIDE0MTE4MCwgMTQxMTkxLCAKLSAgICAxNDEyMDQsIDE0MTIxNiwgMTQxMjI1LCAxNDEyMzYsIDE0MTI0NywgMTQxMjU2LCAxNDEyNjcsIDE0MTI4MSwgMTQxMjk2LCAKLSAgICAxNDEyOTksIDE0MTMwOCwgMTQxMzEzLCAxNDEzMTksIDE0MTMyNywgMTQxMzMzLCAxNDEzMzksIDE0MTM0OCwgMTQxMzU1LCAKLSAgICAxNDEzNjUsIDE0MTM3NywgMTQxMzg0LCAxNDEzODcsIDE0MTM5MywgMTQxNDAwLCAxNDE0MDYsIDE0MTQxMSwgMTQxNDE0LCAKLSAgICAxNDE0MTksIDE0MTQyMiwgMTQxNDI5LCAxNDE0MzUsIDE0MTQ0MywgMTQxNDUwLCAxNDE0NTcsIDE0MTQ2MywgMTQxNDY4LCAKLSAgICAxNDE0NzEsIDE0MTQ3NCwgMTQxNDc3LCAxNDE0ODMsIDE0MTQ5MCwgMTQxNDk2LCAxNDE1MDEsIDE0MTUwOCwgMTQxNTExLCAKLSAgICAxNDE1MTYsIDE0MTUyMywgMTQxNTI5LCAxNDE1MzcsIDE0MTU0NCwgMTQxNTU0LCAxNDE1NjMsIDE0MTU2NiwgMTQxNTcyLCAKLSAgICAxNDE1NzksIDE0MTU4NiwgMTQxNTkzLCAxNDE1OTgsIDE0MTYwNiwgMTQxNjE0LCAxNDE2MjMsIDE0MTYyOSwgMTQxNjM4LCAKLSAgICAxNDE2NDcsIDE0MTY1NiwgMTQxNjYyLCAxNDE2NzEsIDE0MTY3OCwgMTQxNjg1LCAxNDE2OTIsIDE0MTcwMCwgMTQxNzA2LCAKLSAgICAxNDE3MTQsIDE0MTcyMCwgMTQxNzI3LCAxNDE3MzQsIDE0MTc0MiwgMTQxNzUzLCAxNDE3NjMsIDE0MTc2OSwgMTQxNzc2LCAKLSAgICAxNDE3ODMsIDE0MTc5MCwgMTQxNzk2LCAxNDE4MDMsIDE0MTgxMCwgMTQxODE1LCAxNDE4MjIsIDE0MTgzMCwgMTQxODM5LCAKLSAgICAxNDE4NDUsIDE0MTg1NywgMTQxODY4LCAxNDE4NzQsIDE0MTg4MiwgMTQxODg4LCAxNDE4OTUsIDE0MTkwMiwgMTQxOTA5LCAKLSAgICAxNDE5MTUsIDE0MTkyMiwgMTQxOTMxLCAxNDE5MzcsIDE0MTk0MywgMTQxOTUwLCAxNDE5NTcsIDE0MTk2NSwgMTQxOTc1LCAKLSAgICAxNDE5ODUsIDE0MTk5NSwgMTQyMDA1LCAxNDIwMTMsIDE0MjAyMSwgMTQyMDMxLCAxNDIwMzksIDE0MjA0NCwgMTQyMDQ5LCAKLSAgICAxNDIwNTQsIDE0MjA2MCwgMTQyMDY3LCAxNDIwNzQsIDE0MjA4MCwgMTQyMDg2LCAxNDIwOTEsIDE0MjA5OCwgMTQyMTA2LCAKLSAgICAxNDIxMTYsIDE0MjEyNCwgMTQyMTMyLCAxNDIxNDIsIDE0MjE1MiwgMTQyMTYwLCAxNDIxNzAsIDE0MjE4MCwgMTQyMTkyLCAKLSAgICAxNDIyMDQsIDE0MjIxNiwgMTQyMjI2LCAxNDIyMzIsIDE0MjIzOCwgMTQyMjQ1LCAxNDIyNTQsIDE0MjI2MywgMTQyMjcyLCAKLSAgICAxNDIyODEsIDE0MjI5MSwgMTQyMzAwLCAxNDIzMDksIDE0MjMxOCwgMTQyMzIzLCAxNDIzMjksIDE0MjMzOCwgMTQyMzQ4LCAKLSAgICAxNDIzNTcsIDE0MjM2MywgMTQyMzY5LCAxNDIzNzYsIDE0MjM4MywgMTQyMzkwLCAxNDIzOTYsIDE0MjQwMywgMTQyNDEwLCAKLSAgICAxNDI0MTcsIDE0MjQyMywgMTQyNDI3LCAxNDI0MzIsIDE0MjQzOSwgMTQyNDQ2LCAxNDI0NTMsIDE0MjQ1OCwgMTQyNDY2LCAKLSAgICAxNDI0NzQsIDE0MjQ4MywgMTQyNDkxLCAxNDI0OTgsIDE0MjUwNiwgMTQyNTE1LCAxNDI1MjUsIDE0MjUyOCwgMTQyNTMyLCAKLSAgICAxNDI1MzcsIDE0MjU0MiwgMTQyNTQ3LCAxNDI1NTIsIDE0MjU1NywgMTQyNTYyLCAxNDI1NjcsIDE0MjU3MiwgMTQyNTc3LCAKLSAgICAxNDI1ODIsIDE0MjU4NywgMTQyNTkyLCAxNDI1OTcsIDE0MjYwMiwgMTQyNjA3LCAxNDI2MTIsIDE0MjYxNywgMTQyNjI0LCAKLSAgICAxNDI2MzAsIDE0MjYzNywgMTQyNjQzLCAxNDI2NDgsIDE0MjY1NSwgMTQyNjYxLCAxNDI2NjgsIDE0MjY3NCwgMTQyNjc5LCAKLSAgICAxNDI2ODYsIDE0MjY5MywgMTQyNzAwLCAxNDI3MDYsIDE0MjcxMiwgMTQyNzIxLCAxNDI3MzAsIDE0Mjc0MSwgMTQyNzQ4LCAKLSAgICAxNDI3NTUsIDE0Mjc2NCwgMTQyNzczLCAxNDI3ODIsIDE0Mjc5MSwgMTQyODAwLCAxNDI4MDYsIDE0MjgxNCwgMTQyODIwLCAKLSAgICAxNDI4MzAsIDE0MjgzNSwgMTQyODQ0LCAxNDI4NTMsIDE0Mjg2MCwgMTQyODcxLCAxNDI4NzgsIDE0Mjg4NSwgMTQyODkyLCAKLSAgICAxNDI4OTksIDE0MjkwNiwgMTQyOTEzLCAxNDI5MjAsIDE0MjkyNywgMTQyOTM0LCAxNDI5NDEsIDE0Mjk0NywgMTQyOTUzLCAKLSAgICAxNDI5NTksIDE0Mjk2NiwgMTQyOTczLCAxNDI5ODAsIDE0Mjk4NywgMTQyOTk0LCAxNDMwMDEsIDE0MzAwOCwgMTQzMDE1LCAKLSAgICAxNDMwMjIsIDE0MzAyOSwgMTQzMDM2LCAxNDMwNDMsIDE0MzA0OCwgMTQzMDU3LCAxNDMwNjYsIDE0MzA3NSwgMTQzMDgyLCAKLSAgICAxNDMwODksIDE0MzA5NiwgMTQzMTAzLCAxNDMxMTAsIDE0MzExNywgMTQzMTI0LCAxNDMxMzEsIDE0MzE0MCwgMTQzMTQ5LCAKLSAgICAxNDMxNTgsIDE0MzE2NywgMTQzMTc2LCAxNDMxODUsIDE0MzE5NCwgMTQzMjAzLCAxNDMyMTIsIDE0MzIyMSwgMTQzMjMwLCAKLSAgICAxNDMyMzksIDE0MzI0OCwgMTQzMjU0LCAxNDMyNjIsIDE0MzI2OCwgMTQzMjc4LCAxNDMyODMsIDE0MzI5MiwgMTQzMzAxLCAKLSAgICAxNDMzMTAsIDE0MzMyMSwgMTQzMzI2LCAxNDMzMzMsIDE0MzM0MCwgMTQzMzQ3LCAxNDMzNTIsIDE0MzM1OCwgMTQzMzY0LCAKLSAgICAxNDMzNzAsIDE0MzM3NywgMTQzMzg0LCAxNDMzOTEsIDE0MzM5OCwgMTQzNDA1LCAxNDM0MTIsIDE0MzQxOSwgMTQzNDI2LCAKLSAgICAxNDM0MzMsIDE0MzQ0MCwgMTQzNDQ3LCAxNDM0NTQsIDE0MzQ1OSwgMTQzNDY4LCAxNDM0NzcsIDE0MzQ4NiwgMTQzNDk1LCAKLSAgICAxNDM1MDQsIDE0MzUxMywgMTQzNTIyLCAxNDM1MzEsIDE0MzU0MiwgMTQzNTUzLCAxNDM1NjAsIDE0MzU2NywgMTQzNTc0LCAKLSAgICAxNDM1ODEsIDE0MzU4OCwgMTQzNTk1LCAxNDM2MDMsIDE0MzYxMywgMTQzNjIzLCAxNDM2MzMsIDE0MzY0NCwgMTQzNjU1LCAKLSAgICAxNDM2NjYsIDE0MzY3NSwgMTQzNjg0LCAxNDM2OTMsIDE0MzY5OCwgMTQzNzAzLCAxNDM3MDgsIDE0MzcxMywgMTQzNzI0LCAKLSAgICAxNDM3MzUsIDE0Mzc0NiwgMTQzNzU3LCAxNDM3NjgsIDE0Mzc3OCwgMTQzNzg5LCAxNDM3OTgsIDE0MzgwNywgMTQzODE2LCAKLSAgICAxNDM4MjUsIDE0MzgzNCwgMTQzODQyLCAxNDM4NTEsIDE0Mzg2MiwgMTQzODczLCAxNDM4ODQsIDE0Mzg5NSwgMTQzOTA2LCAKLSAgICAxNDM5MTgsIDE0MzkzMSwgMTQzOTQzLCAxNDM5NTYsIDE0Mzk2OCwgMTQzOTgxLCAxNDM5OTMsIDE0NDAwNiwgMTQ0MDE3LCAKLSAgICAxNDQwMjgsIDE0NDAzNywgMTQ0MDQ1LCAxNDQwNTQsIDE0NDA2NSwgMTQ0MDc2LCAxNDQwODgsIDE0NDEwMSwgMTQ0MTE1LCAKLSAgICAxNDQxMzAsIDE0NDE0MiwgMTQ0MTU1LCAxNDQxNjcsIDE0NDE4MCwgMTQ0MTkxLCAxNDQyMDIsIDE0NDIxMSwgMTQ0MjE5LCAKLSAgICAxNDQyMjgsIDE0NDIzNSwgMTQ0MjQyLCAxNDQyNDksIDE0NDI1NiwgMTQ0MjYzLCAxNDQyNzAsIDE0NDI3NywgMTQ0Mjg0LCAKLSAgICAxNDQyOTEsIDE0NDI5OCwgMTQ0MzAzLCAxNDQzMDgsIDE0NDMxMywgMTQ0MzIwLCAxNDQzMzAsIDE0NDM0MSwgMTQ0MzUxLCAKLSAgICAxNDQzNjIsIDE0NDM3NiwgMTQ0MzkxLCAxNDQ0MDYsIDE0NDQyMCwgMTQ0NDM1LCAxNDQ0NTAsIDE0NDQ2MSwgMTQ0NDcyLCAKLSAgICAxNDQ0ODUsIDE0NDQ5OCwgMTQ0NTA3LCAxNDQ1MTYsIDE0NDUyOSwgMTQ0NTQyLCAxNDQ1NDksIDE0NDU1NiwgMTQ0NTYxLCAKLSAgICAxNDQ1NjYsIDE0NDU3MSwgMTQ0NTc2LCAxNDQ1ODEsIDE0NDU4OCwgMTQ0NTk3LCAxNDQ2MDIsIDE0NDYwNSwgMTQ0NjEwLCAKLSAgICAxNDQ2MTcsIDE0NDYyNCwgMTQ0NjMxLCAxNDQ2MzgsIDE0NDY0NSwgMTQ0NjUyLCAxNDQ2NjUsIDE0NDY3OSwgMTQ0Njk0LCAKLSAgICAxNDQ3MDEsIDE0NDcwOCwgMTQ0NzE1LCAxNDQ3MjQsIDE0NDczMiwgMTQ0NzQwLCAxNDQ3NDksIDE0NDc1NCwgMTQ0NzU5LCAKLSAgICAxNDQ3NjQsIDE0NDc2OSwgMTQ0Nzc0LCAxNDQ3NzksIDE0NDc4NiwgMTQ0NzkzLCAxNDQ3OTksIDE0NDgwNiwgMTQ0ODEyLCAKLSAgICAxNDQ4MTksIDE0NDgyNCwgMTQ0ODI5LCAxNDQ4MzQsIDE0NDgzOSwgMTQ0ODQ0LCAxNDQ4NTEsIDE0NDg1OCwgMTQ0ODYzLCAKLSAgICAxNDQ4NzAsIDE0NDg3NywgMTQ0ODgyLCAxNDQ4ODcsIDE0NDg5MiwgMTQ0ODk3LCAxNDQ5MDIsIDE0NDkwNywgMTQ0OTE0LCAKLSAgICAxNDQ5MjEsIDE0NDkyOCwgMTQ0OTMxLCAxNDQ5MzYsIDE0NDk0MSwgMTQ0OTQ2LCAxNDQ5NTEsIDE0NDk1OCwgMTQ0OTY1LCAKLSAgICAxNDQ5NzMsIDE0NDk4MSwgMTQ0OTg2LCAxNDQ5OTEsIDE0NDk5OCwgMTQ1MDA1LCAxNDUwMTIsIDE0NTAxNywgMTQ1MDI0LCAKLSAgICAxNDUwMzEsIDE0NTAzNiwgMTQ1MDQzLCAxNDUwNTAsIDE0NTA1NiwgMTQ1MDYyLCAxNDUwNjgsIDE0NTA3NCwgMTQ1MDgyLCAKLSAgICAxNDUwOTAsIDE0NTA5NiwgMTQ1MTA0LCAxNDUxMTIsIDE0NTExNywgMTQ1MTI0LCAxNDUxMzEsIDE0NTEzNiwgMTQ1MTQzLCAKLSAgICAxNDUxNTAsIDE0NTE1NywgMTQ1MTY1LCAxNDUxNzMsIDE0NTE3OCwgMTQ1MTg1LCAxNDUxOTIsIDE0NTIwMSwgMTQ1MjA4LCAKLSAgICAxNDUyMTcsIDE0NTIyOCwgMTQ1MjM3LCAxNDUyNDYsIDE0NTI1NSwgMTQ1MjY0LCAxNDUyNjcsIDE0NTI3MiwgMTQ1Mjc5LCAKLSAgICAxNDUyODgsIDE0NTI5NSwgMTQ1MzA0LCAxNDUzMTEsIDE0NTMxNiwgMTQ1MzIxLCAxNDUzMjQsIDE0NTMyNywgMTQ1MzMwLCAKLSAgICAxNDUzMzcsIDE0NTM0NCwgMTQ1MzUzLCAxNDUzNjIsIDE0NTM3MSwgMTQ1Mzc4LCAxNDUzODUsIDE0NTM5MCwgMTQ1NDAzLCAKLSAgICAxNDU0MDgsIDE0NTQxMywgMTQ1NDE4LCAxNDU0MjMsIDE0NTQyOCwgMTQ1NDMzLCAxNDU0MzgsIDE0NTQ0MywgMTQ1NDQ2LCAKLSAgICAxNDU0NTEsIDE0NTQ1NiwgMTQ1NDYxLCAxNDU0NjYsIDE0NTQ3MSwgMTQ1NDc4LCAxNDU0ODMsIDE0NTQ5MCwgMTQ1NDkzLCAKLSAgICAxNDU0OTgsIDE0NTUwMSwgMTQ1NTA0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAxNDU1MDcsIDE0NTUxMiwgMTQ1NTE3LCAxNDU1MjIsIDE0NTUyNywgMCwgMTQ1NTMyLCAxNDU1MzcsIDE0NTU0MiwgCi0gICAgMTQ1NTQ3LCAxNDU1NTIsIDE0NTU1NywgMTQ1NTYyLCAxNDU1NjcsIDE0NTU3MiwgMTQ1NTc3LCAxNDU1ODIsIDE0NTU4NywgCi0gICAgMTQ1NTkyLCAxNDU1OTcsIDE0NTYwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ1NjA3LCAxNDU2MTQsIDE0NTYyMCwgCi0gICAgMTQ1NjI3LCAxNDU2MzQsIDE0NTY0MSwgMTQ1NjQ4LCAxNDU2NTUsIDE0NTY2MiwgMTQ1NjY5LCAxNDU2NzYsIDE0NTY4MywgCi0gICAgMTQ1NjkwLCAxNDU2OTcsIDE0NTcwNCwgMTQ1NzExLCAxNDU3MTgsIDE0NTcyNSwgMTQ1NzMyLCAxNDU3MzksIDE0NTc0NiwgCi0gICAgMTQ1NzUzLCAxNDU3NjAsIDE0NTc2NywgMTQ1Nzc0LCAxNDU3ODEsIDE0NTc4OCwgMTQ1Nzk1LCAxNDU4MDIsIDE0NTgwOSwgCi0gICAgMTQ1ODE2LCAxNDU4MjMsIDE0NTgzMCwgMTQ1ODM3LCAxNDU4NDQsIDE0NTg1MCwgMTQ1ODU2LCAxNDU4NjIsIDE0NTg2OSwgCi0gICAgMTQ1ODc1LCAxNDU4ODIsIDE0NTg4OCwgMTQ1ODk1LCAxNDU5MDIsIDE0NTkwOSwgMTQ1OTE2LCAxNDU5MjMsIDE0NTkzMCwgCi0gICAgMTQ1OTM3LCAxNDU5NDQsIDE0NTk1MSwgMTQ1OTU4LCAxNDU5NjUsIDE0NTk3MiwgMTQ1OTc5LCAxNDU5ODYsIDE0NTk5MywgCi0gICAgMTQ2MDAwLCAxNDYwMDcsIDE0NjAxNCwgMTQ2MDIxLCAxNDYwMjgsIDE0NjAzNiwgMTQ2MDQzLCAxNDYwNTAsIDE0NjA1NywgCi0gICAgMTQ2MDY0LCAxNDYwNzEsIDE0NjA3OCwgMTQ2MDg1LCAxNDYwOTIsIDE0NjA5OSwgMTQ2MTA2LCAxNDYxMTMsIDE0NjEyMCwgCi0gICAgMTQ2MTI2LCAxNDYxMzMsIDE0NjE0MCwgMTQ2MTQ3LCAxNDYxNTQsIDE0NjE2MSwgMTQ2MTY4LCAxNDYxNzUsIDE0NjE4MywgCi0gICAgMTQ2MTkwLCAxNDYxOTYsIDE0NjIwMywgMTQ2MjEwLCAxNDYyMTcsIDE0NjIyNCwgMTQ2MjMxLCAxNDYyMzgsIDE0NjI0NSwgCi0gICAgMTQ2MjUyLCAxNDYyNTksIDE0NjI2NiwgMTQ2MjczLCAxNDYyODAsIDE0NjI4NywgMTQ2Mjk0LCAxNDYzMDEsIDE0NjMwOCwgCi0gICAgMTQ2MzE1LCAxNDYzMjIsIDE0NjMyOSwgMTQ2MzM2LCAxNDYzNDIsIDE0NjM0OSwgMTQ2MzU2LCAxNDYzNjMsIDE0NjM3MCwgCi0gICAgMTQ2Mzc3LCAxNDYzODQsIDE0NjM5MSwgMTQ2Mzk4LCAxNDY0MDUsIDE0NjQxMiwgMTQ2NDE5LCAxNDY0MjYsIDE0NjQzMywgCi0gICAgMTQ2NDQwLCAxNDY0NDcsIDE0NjQ1NCwgMTQ2NDYxLCAxNDY0NjgsIDE0NjQ3NSwgMTQ2NDgyLCAxNDY0ODksIDE0NjQ5NiwgCi0gICAgMTQ2NTA0LCAxNDY1MTIsIDE0NjUyMCwgMTQ2NTI3LCAxNDY1MzQsIDE0NjU0MSwgMTQ2NTQ4LCAxNDY1NTUsIDE0NjU2MiwgCi0gICAgMTQ2NTY5LCAxNDY1NzYsIDE0NjU4MywgMTQ2NTkwLCAxNDY1OTYsIDE0NjYwMywgMTQ2NjEwLCAxNDY2MTcsIDE0NjYyNCwgCi0gICAgMTQ2NjMxLCAxNDY2MzgsIDE0NjY0NSwgMTQ2NjUyLCAxNDY2NTksIDE0NjY2NiwgMTQ2NjczLCAxNDY2ODAsIDE0NjY4NywgCi0gICAgMTQ2Njk0LCAxNDY3MDIsIDE0NjcxMCwgMTQ2NzE4LCAxNDY3MjUsIDE0NjczMiwgMTQ2NzM5LCAxNDY3NDYsIDE0Njc1MywgCi0gICAgMTQ2NzYwLCAxNDY3NjcsIDE0Njc3NCwgMTQ2NzgxLCAxNDY3ODgsIDE0Njc5NSwgMTQ2ODAyLCAxNDY4MDksIDE0NjgxNiwgCi0gICAgMTQ2ODIzLCAxNDY4MzAsIDE0NjgzNywgMTQ2ODQ0LCAxNDY4NTEsIDE0Njg1OCwgMTQ2ODY1LCAxNDY4NzIsIDE0Njg3OSwgCi0gICAgMTQ2ODg2LCAxNDY4OTMsIDE0NjkwMCwgMTQ2OTA3LCAxNDY5MTQsIDE0NjkyMSwgMTQ2OTI4LCAxNDY5MzUsIDE0Njk0MiwgCi0gICAgMTQ2OTQ5LCAxNDY5NTYsIDE0Njk2MywgMTQ2OTcwLCAxNDY5NzcsIDAsIDAsIDE0Njk4NCwgMTQ2OTg4LCAxNDY5OTIsIAotICAgIDE0Njk5NiwgMTQ3MDAwLCAxNDcwMDQsIDE0NzAwOCwgMTQ3MDEzLCAxNDcwMTcsIDE0NzAyMiwgMTQ3MDI4LCAxNDcwMzQsIAotICAgIDE0NzA0MCwgMTQ3MDQ2LCAxNDcwNTQsIDE0NzA2MiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMTQ3MDY4LCAxNDcwNzIsIDE0NzA3NiwgMTQ3MDgwLCAwLCAxNDcwODQsIDE0NzA4OCwgMTQ3MDkyLCAKLSAgICAxNDcwOTYsIDE0NzEwMCwgMTQ3MTA0LCAxNDcxMDgsIDE0NzExMiwgMTQ3MTE2LCAxNDcxMjAsIDE0NzEyNCwgMTQ3MTI4LCAKLSAgICAxNDcxMzIsIDE0NzEzNiwgMTQ3MTQwLCAxNDcxNDQsIDE0NzE0OCwgMTQ3MTUyLCAxNDcxNTYsIDE0NzE2MCwgMTQ3MTY0LCAKLSAgICAxNDcxNjgsIDE0NzE3MiwgMTQ3MTc2LCAxNDcxODIsIDE0NzE4OCwgMTQ3MTk0LCAwLCAxNDcyMDAsIDE0NzIwNSwgMCwgCi0gICAgMTQ3MjEwLCAwLCAwLCAxNDcyMTUsIDAsIDE0NzIyMCwgMTQ3MjI1LCAxNDcyMzAsIDE0NzIzNSwgMTQ3MjQwLCAxNDcyNDUsIAotICAgIDE0NzI1MCwgMTQ3MjU1LCAxNDcyNjAsIDE0NzI2NSwgMCwgMTQ3MjcwLCAxNDcyNzUsIDE0NzI4MCwgMTQ3Mjg1LCAwLCAKLSAgICAxNDcyOTAsIDAsIDE0NzI5NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3MzAwLCAwLCAwLCAwLCAwLCAxNDczMDYsIDAsIAotICAgIDE0NzMxMiwgMCwgMTQ3MzE4LCAwLCAxNDczMjQsIDE0NzMzMCwgMTQ3MzM2LCAwLCAxNDczNDIsIDE0NzM0OCwgMCwgCi0gICAgMTQ3MzU0LCAwLCAwLCAxNDczNjAsIDAsIDE0NzM2NiwgMCwgMTQ3MzcyLCAwLCAxNDczNzgsIDAsIDE0NzM4NiwgMCwgCi0gICAgMTQ3Mzk0LCAxNDc0MDAsIDAsIDE0NzQwNiwgMCwgMCwgMTQ3NDEyLCAxNDc0MTgsIDE0NzQyNCwgMTQ3NDMwLCAwLCAKLSAgICAxNDc0MzYsIDE0NzQ0MiwgMTQ3NDQ4LCAxNDc0NTQsIDE0NzQ2MCwgMTQ3NDY2LCAxNDc0NzIsIDAsIDE0NzQ3OCwgCi0gICAgMTQ3NDg0LCAxNDc0OTAsIDE0NzQ5NiwgMCwgMTQ3NTAyLCAxNDc1MDgsIDE0NzUxNCwgMTQ3NTIwLCAwLCAxNDc1MjgsIDAsIAotICAgIDE0NzUzNiwgMTQ3NTQyLCAxNDc1NDgsIDE0NzU1NCwgMTQ3NTYwLCAxNDc1NjYsIDE0NzU3MiwgMTQ3NTc4LCAxNDc1ODQsIAotICAgIDE0NzU5MCwgMCwgMTQ3NTk2LCAxNDc2MDIsIDE0NzYwOCwgMTQ3NjE0LCAxNDc2MjAsIDE0NzYyNiwgMTQ3NjMyLCAKLSAgICAxNDc2MzgsIDE0NzY0NCwgMTQ3NjUwLCAxNDc2NTYsIDE0NzY2MiwgMTQ3NjY4LCAxNDc2NzQsIDE0NzY4MCwgMTQ3Njg2LCAKLSAgICAxNDc2OTIsIDAsIDAsIDAsIDAsIDAsIDE0NzY5OCwgMTQ3NzAzLCAxNDc3MDgsIDAsIDE0NzcxMywgMTQ3NzE4LCAxNDc3MjMsIAotICAgIDE0NzcyOCwgMTQ3NzMzLCAwLCAxNDc3MzgsIDE0Nzc0MywgMTQ3NzQ4LCAxNDc3NTMsIDE0Nzc1OCwgMTQ3NzYzLCAKLSAgICAxNDc3NjgsIDE0Nzc3MywgMTQ3Nzc4LCAxNDc3ODMsIDE0Nzc4OCwgMTQ3NzkzLCAxNDc3OTgsIDE0NzgwMywgMTQ3ODA4LCAKLSAgICAxNDc4MTMsIDE0NzgxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjEyLCAxNTA2MTksIDE1MDYyNSwgMTUwNjMyLCAxNTA2MzksIAorICAgIDE1MDY0NiwgMTUwNjUzLCAxNTA2NjAsIDE1MDY2NywgMTUwNjc0LCAxNTA2ODEsIDE1MDY4OCwgMTUwNjk1LCAxNTA3MDIsIAorICAgIDE1MDcwOSwgMTUwNzE2LCAxNTA3MjMsIDE1MDczMCwgMTUwNzM3LCAxNTA3NDQsIDE1MDc1MSwgMTUwNzU4LCAxNTA3NjUsIAorICAgIDE1MDc3MiwgMTUwNzc5LCAxNTA3ODYsIDE1MDc5MywgMTUwODAwLCAxNTA4MDcsIDE1MDgxNCwgMTUwODIxLCAxNTA4MjgsIAorICAgIDE1MDgzNSwgMTUwODQyLCAxNTA4NDksIDE1MDg1NSwgMTUwODYxLCAxNTA4NjcsIDE1MDg3NCwgMTUwODgwLCAxNTA4ODcsIAorICAgIDE1MDg5MywgMTUwOTAwLCAxNTA5MDcsIDE1MDkxNCwgMTUwOTIxLCAxNTA5MjgsIDE1MDkzNSwgMTUwOTQyLCAxNTA5NDksIAorICAgIDE1MDk1NiwgMTUwOTYzLCAxNTA5NzAsIDE1MDk3NywgMTUwOTg0LCAxNTA5OTEsIDE1MDk5NywgMTUxMDA0LCAxNTEwMTEsIAorICAgIDE1MTAxOCwgMTUxMDI1LCAxNTEwMzIsIDE1MTA0MCwgMTUxMDQ3LCAxNTEwNTQsIDE1MTA2MSwgMTUxMDY4LCAxNTEwNzUsIAorICAgIDE1MTA4MiwgMTUxMDg5LCAxNTEwOTYsIDE1MTEwMywgMTUxMTEwLCAxNTExMTcsIDE1MTEyNCwgMTUxMTMwLCAxNTExMzcsIAorICAgIDE1MTE0NCwgMTUxMTUxLCAxNTExNTgsIDE1MTE2NSwgMTUxMTcyLCAxNTExNzksIDE1MTE4NywgMTUxMTk0LCAxNTEyMDAsIAorICAgIDE1MTIwNywgMTUxMjE0LCAxNTEyMjEsIDE1MTIyOCwgMTUxMjM1LCAxNTEyNDIsIDE1MTI0OSwgMTUxMjU2LCAxNTEyNjMsIAorICAgIDE1MTI3MCwgMTUxMjc3LCAxNTEyODQsIDE1MTI5MSwgMTUxMjk4LCAxNTEzMDUsIDE1MTMxMiwgMTUxMzE5LCAxNTEzMjYsIAorICAgIDE1MTMzMywgMTUxMzQwLCAxNTEzNDYsIDE1MTM1MywgMTUxMzYwLCAxNTEzNjcsIDE1MTM3NCwgMTUxMzgxLCAxNTEzODgsIAorICAgIDE1MTM5NSwgMTUxNDAyLCAxNTE0MDksIDE1MTQxNiwgMTUxNDIzLCAxNTE0MzAsIDE1MTQzNywgMTUxNDQ0LCAxNTE0NTEsIAorICAgIDE1MTQ1OCwgMTUxNDY1LCAxNTE0NzIsIDE1MTQ3OSwgMTUxNDg2LCAxNTE0OTMsIDE1MTUwMCwgMTUxNTA4LCAxNTE1MTYsIAorICAgIDE1MTUyNCwgMTUxNTMxLCAxNTE1MzgsIDE1MTU0NSwgMTUxNTUyLCAxNTE1NTksIDE1MTU2NiwgMTUxNTczLCAxNTE1ODAsIAorICAgIDE1MTU4NywgMTUxNTk0LCAxNTE2MDAsIDE1MTYwNywgMTUxNjE0LCAxNTE2MjEsIDE1MTYyOCwgMTUxNjM1LCAxNTE2NDIsIAorICAgIDE1MTY0OSwgMTUxNjU2LCAxNTE2NjMsIDE1MTY3MCwgMTUxNjc3LCAxNTE2ODQsIDE1MTY5MSwgMTUxNjk4LCAxNTE3MDYsIAorICAgIDE1MTcxNCwgMTUxNzIyLCAxNTE3MjksIDE1MTczNiwgMTUxNzQzLCAxNTE3NTAsIDE1MTc1NywgMTUxNzY0LCAxNTE3NzEsIAorICAgIDE1MTc3OCwgMTUxNzg1LCAxNTE3OTIsIDE1MTc5OSwgMTUxODA2LCAxNTE4MTMsIDE1MTgyMCwgMTUxODI3LCAxNTE4MzQsIAorICAgIDE1MTg0MSwgMTUxODQ4LCAxNTE4NTUsIDE1MTg2MiwgMTUxODY5LCAxNTE4NzYsIDE1MTg4MywgMTUxODkwLCAxNTE4OTcsIAorICAgIDE1MTkwNCwgMTUxOTExLCAxNTE5MTgsIDE1MTkyNSwgMTUxOTMyLCAxNTE5MzksIDE1MTk0NiwgMTUxOTUzLCAxNTE5NjAsIAorICAgIDE1MTk2NywgMTUxOTc0LCAxNTE5ODEsIDAsIDAsIDE1MTk4OCwgMTUxOTkyLCAxNTE5OTYsIDE1MjAwMCwgMTUyMDA0LCAKKyAgICAxNTIwMDgsIDE1MjAxMiwgMTUyMDE3LCAxNTIwMjEsIDE1MjAyNiwgMTUyMDMyLCAxNTIwMzgsIDE1MjA0NCwgMTUyMDUwLCAKKyAgICAxNTIwNTgsIDE1MjA2NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUyMDcyLCAKKyAgICAxNTIwNzgsIDE1MjA4NCwgMTUyMDkwLCAxNTIwOTYsIDE1MjEwMiwgMTUyMTA4LCAxNTIxMTQsIDE1MjEyMCwgMTUyMTI2LCAKKyAgICAxNTIxMzEsIDE1MjEzNywgMTUyMTQyLCAxNTIxNDcsIDE1MjE1MywgMTUyMTU5LCAxNTIxNjUsIDE1MjE3MSwgMTUyMTc3LCAKKyAgICAxNTIxODIsIDE1MjE4NywgMTUyMTkzLCAxNTIxOTksIDE1MjIwNCwgMTUyMjEwLCAxNTIyMTYsIDE1MjIyMiwgMTUyMjI4LCAKKyAgICAxNTIyMzQsIDE1MjI0MCwgMTUyMjQ2LCAxNTIyNTIsIDE1MjI1OCwgMTUyMjY0LCAxNTIyNzAsIDE1MjI3NiwgMTUyMjgyLCAKKyAgICAxNTIyODgsIDE1MjI5NCwgMTUyMzAwLCAxNTIzMDYsIDE1MjMxMiwgMTUyMzE4LCAxNTIzMjQsIDE1MjMyOSwgMTUyMzM1LCAKKyAgICAxNTIzNDAsIDE1MjM0NSwgMTUyMzUxLCAxNTIzNTcsIDE1MjM2MywgMTUyMzY5LCAxNTIzNzUsIDE1MjM4MCwgMTUyMzg1LCAKKyAgICAxNTIzOTEsIDE1MjM5NywgMTUyNDAyLCAxNTI0MDgsIDE1MjQxNCwgMTUyNDIwLCAxNTI0MjYsIDE1MjQzMiwgMTUyNDM4LCAKKyAgICAxNTI0NDQsIDE1MjQ1MCwgMTUyNDU2LCAxNTI0NjIsIDE1MjQ2OCwgMTUyNDc0LCAxNTI0NzksIDE1MjQ4NCwgMTUyNDg4LCAKKyAgICAxNTI0OTMsIDE1MjUwMCwgMCwgMCwgMCwgMCwgMCwgMTUyNTA0LCAxNTI1MDksIDE1MjUxMywgMTUyNTE3LCAxNTI1MjEsIAorICAgIDE1MjUyNSwgMTUyNTI5LCAxNTI1MzMsIDE1MjUzOCwgMTUyNTQyLCAwLCAwLCAwLCAwLCAxNTI1NDcsIDE1MjU1MywgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ3ODIzLCAxNDc4MzMsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDE0Nzg0MSwgMTQ3ODQ4LCAxNDc4NTUsIDE0Nzg2MiwgMTQ3ODY4LCAxNDc4NzUsIDE0Nzg4MiwgCi0gICAgMTQ3ODg4LCAxNDc4OTUsIDE0NzkwMiwgMTQ3OTA5LCAxNDc5MTcsIDE0NzkyNSwgMTQ3OTMzLCAxNDc5NDEsIDE0Nzk0OSwgCi0gICAgMTQ3OTU3LCAxNDc5NjQsIDE0Nzk3MSwgMTQ3OTc4LCAxNDc5ODYsIDE0Nzk5NCwgMTQ4MDAyLCAxNDgwMTAsIDE0ODAxOCwgCi0gICAgMTQ4MDI2LCAxNDgwMzMsIDE0ODA0MCwgMTQ4MDQ3LCAxNDgwNTUsIDE0ODA2MywgMTQ4MDcxLCAxNDgwNzksIDE0ODA4NywgCi0gICAgMTQ4MDk1LCAxNDgxMDAsIDE0ODEwNSwgMTQ4MTEwLCAxNDgxMTUsIDE0ODEyMCwgMTQ4MTI1LCAxNDgxMzAsIDE0ODEzNSwgCi0gICAgMTQ4MTQwLCAwLCAwLCAwLCAwLCAxNDgxNDUsIDE0ODE1MSwgMTQ4MTU1LCAxNDgxNTksIDE0ODE2MywgMTQ4MTY3LCAKLSAgICAxNDgxNzEsIDE0ODE3NSwgMTQ4MTc5LCAxNDgxODMsIDE0ODE4NywgMTQ4MTkxLCAxNDgxOTUsIDE0ODE5OSwgMTQ4MjAzLCAKLSAgICAxNDgyMDcsIDE0ODIxMSwgMTQ4MjE1LCAxNDgyMTksIDE0ODIyMywgMTQ4MjI3LCAxNDgyMzEsIDE0ODIzNSwgMTQ4MjM5LCAKLSAgICAxNDgyNDMsIDE0ODI0NywgMTQ4MjUxLCAxNDgyNTUsIDE0ODI1OSwgMTQ4MjYzLCAxNDgyNjcsIDE0ODI3MSwgMTQ4Mjc1LCAKLSAgICAxNDgyNzksIDE0ODI4MywgMTQ4Mjg3LCAxNDgyOTEsIDE0ODI5NSwgMTQ4Mjk5LCAxNDgzMDMsIDE0ODMwNywgMTQ4MzExLCAKLSAgICAxNDgzMTUsIDE0ODMxOSwgMTQ4MzIzLCAxNDgzMjcsIDE0ODMzMSwgMTQ4MzM1LCAxNDgzMzksIDE0ODM0MywgMTQ4MzQ3LCAKLSAgICAxNDgzNTIsIDE0ODM1NiwgMTQ4MzYwLCAxNDgzNjQsIDE0ODM2OCwgMTQ4MzcyLCAxNDgzNzYsIDE0ODM4MCwgMTQ4Mzg0LCAKLSAgICAxNDgzODgsIDE0ODM5MiwgMTQ4Mzk2LCAxNDg0MDAsIDE0ODQwNCwgMTQ4NDA4LCAxNDg0MTIsIDE0ODQxNiwgMTQ4NDIwLCAKLSAgICAxNDg0MjQsIDE0ODQyOCwgMTQ4NDMyLCAxNDg0MzYsIDE0ODQ0MCwgMTQ4NDQ0LCAxNDg0NDgsIDE0ODQ1MiwgMTQ4NDU2LCAKLSAgICAxNDg0NjAsIDE0ODQ2NCwgMTQ4NDY4LCAxNDg0NzIsIDE0ODQ3NiwgMTQ4NDgwLCAxNDg0ODQsIDE0ODQ4OCwgMTQ4NDkyLCAKLSAgICAxNDg0OTYsIDE0ODUwMCwgMTQ4NTA0LCAxNDg1MDgsIDE0ODUxMiwgMTQ4NTE2LCAxNDg1MjAsIDE0ODUyNCwgMTQ4NTI4LCAKLSAgICAxNDg1MzIsIDE0ODUzNiwgMTQ4NTQwLCAxNDg1NDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE0ODU0OCwgMTQ4NTU0LCAxNDg1NjMsIDE0ODU3MSwgMTQ4NTc5LCAxNDg1ODgsIDE0ODU5NywgMTQ4NjA2LCAxNDg2MTUsIAotICAgIDE0ODYyNCwgMTQ4NjMzLCAxNDg2NDIsIDE0ODY1MSwgMTQ4NjYwLCAxNDg2NjksIDAsIDAsIDE0ODY3OCwgMTQ4Njg3LCAKLSAgICAxNDg2OTUsIDE0ODcwMywgMTQ4NzEyLCAxNDg3MjEsIDE0ODczMCwgMTQ4NzM5LCAxNDg3NDgsIDE0ODc1NywgMTQ4NzY2LCAKLSAgICAxNDg3NzUsIDE0ODc4NCwgMTQ4NzkzLCAxNDg4MDIsIDAsIDE0ODgxMCwgMTQ4ODE5LCAxNDg4MjcsIDE0ODgzNSwgCi0gICAgMTQ4ODQ0LCAxNDg4NTMsIDE0ODg2MiwgMTQ4ODcxLCAxNDg4ODAsIDE0ODg4OSwgMTQ4ODk4LCAxNDg5MDcsIDE0ODkxNiwgCi0gICAgMTQ4OTI1LCAxNDg5MzQsIDAsIDE0ODk0MSwgMTQ4OTUwLCAxNDg5NTgsIDE0ODk2NiwgMTQ4OTc1LCAxNDg5ODQsIAotICAgIDE0ODk5MywgMTQ5MDAyLCAxNDkwMTEsIDE0OTAyMCwgMTQ5MDI5LCAxNDkwMzgsIDE0OTA0NywgMTQ5MDU2LCAxNDkwNjUsIAotICAgIDE0OTA3MiwgMTQ5MDc4LCAxNDkwODQsIDE0OTA5MCwgMTQ5MDk2LCAxNDkxMDIsIDE0OTEwOCwgMTQ5MTE0LCAxNDkxMjAsIAotICAgIDE0OTEyNiwgMTQ5MTMyLCAxNDkxMzgsIDE0OTE0NCwgMTQ5MTUwLCAxNDkxNTYsIDE0OTE2MiwgMTQ5MTY4LCAxNDkxNzQsIAotICAgIDE0OTE4MCwgMTQ5MTg2LCAxNDkxOTIsIDE0OTE5OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5MjA0LCAKLSAgICAxNDkyMTEsIDE0OTIxNiwgMTQ5MjIwLCAxNDkyMjQsIDE0OTIyOCwgMTQ5MjMzLCAxNDkyMzgsIDE0OTI0MywgMTQ5MjQ4LCAKLSAgICAxNDkyNTMsIDE0OTI1OCwgMTQ5MjY1LCAwLCAwLCAwLCAxNDkyNzMsIDE0OTI3OCwgMTQ5Mjg0LCAxNDkyOTAsIDE0OTI5NiwgCi0gICAgMTQ5MzAxLCAxNDkzMDcsIDE0OTMxMywgMTQ5MzE5LCAxNDkzMjQsIDE0OTMzMCwgMTQ5MzM2LCAxNDkzNDEsIDE0OTM0NywgCi0gICAgMTQ5MzUzLCAxNDkzNTgsIDE0OTM2NCwgMTQ5MzcwLCAxNDkzNzUsIDE0OTM4MCwgMTQ5Mzg2LCAxNDkzOTEsIDE0OTM5NywgCi0gICAgMTQ5NDAzLCAxNDk0MDksIDE0OTQxNSwgMTQ5NDIxLCAxNDk0MzEsIDE0OTQzOCwgMTQ5NDQ0LCAxNDk0NDcsIDAsIAotICAgIDE0OTQ1MCwgMTQ5NDU1LCAxNDk0NjEsIDE0OTQ2NywgMTQ5NDczLCAxNDk0NzgsIDE0OTQ4NCwgMTQ5NDkwLCAxNDk0OTYsIAotICAgIDE0OTUwMSwgMTQ5NTA3LCAxNDk1MTMsIDE0OTUxOCwgMTQ5NTI0LCAxNDk1MzAsIDE0OTUzNSwgMTQ5NTQxLCAxNDk1NDcsIAotICAgIDE0OTU1MiwgMTQ5NTU3LCAxNDk1NjMsIDE0OTU2OCwgMTQ5NTc0LCAxNDk1ODAsIDE0OTU4NiwgMTQ5NTkyLCAxNDk1OTgsIAotICAgIDE0OTYwMSwgMTQ5NjA0LCAxNDk2MDcsIDE0OTYxMCwgMTQ5NjEzLCAxNDk2MTYsIDE0OTYyMiwgMTQ5NjI5LCAxNDk2MzYsIAotICAgIDE0OTY0MywgMTQ5NjQ5LCAxNDk2NTYsIDE0OTY2MywgMTQ5NjcwLCAxNDk2NzYsIDE0OTY4MywgMTQ5NjkwLCAxNDk2OTYsIAotICAgIDE0OTcwMywgMTQ5NzEwLCAxNDk3MTYsIDE0OTcyMywgMTQ5NzMwLCAxNDk3MzYsIDE0OTc0MiwgMTQ5NzQ5LCAxNDk3NTUsIAotICAgIDE0OTc2MiwgMTQ5NzY5LCAxNDk3NzYsIDE0OTc4MywgMTQ5NzkwLCAxNDk3OTUsIDAsIDAsIDAsIDAsIDE0OTgwMCwgCi0gICAgMTQ5ODA2LCAxNDk4MTMsIDE0OTgyMCwgMTQ5ODI3LCAxNDk4MzMsIDE0OTg0MCwgMTQ5ODQ3LCAxNDk4NTQsIDE0OTg2MCwgCi0gICAgMTQ5ODY3LCAxNDk4NzQsIDE0OTg4MCwgMTQ5ODg3LCAxNDk4OTQsIDE0OTkwMCwgMTQ5OTA3LCAxNDk5MTQsIDE0OTkyMCwgCi0gICAgMTQ5OTI2LCAxNDk5MzMsIDE0OTkzOSwgMTQ5OTQ2LCAxNDk5NTMsIDE0OTk2MCwgMTQ5OTY3LCAxNDk5NzQsIDE0OTk4MywgCi0gICAgMTQ5OTg3LCAxNDk5OTAsIDE0OTk5NCwgMTQ5OTk4LCAxNTAwMDIsIDE1MDAwNSwgMTUwMDA4LCAxNTAwMTEsIDE1MDAxNCwgCi0gICAgMTUwMDE3LCAxNTAwMjAsIDE1MDAyMywgMTUwMDI2LCAxNTAwMjksIDE1MDAzNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwMDM4LCAxNTAwNDUsIAotICAgIDE1MDA1MywgMTUwMDYxLCAxNTAwNjksIDE1MDA3NiwgMTUwMDg0LCAxNTAwOTIsIDE1MDEwMCwgMTUwMTA3LCAxNTAxMTUsIAotICAgIDE1MDEyMywgMTUwMTMwLCAxNTAxMzgsIDE1MDE0NiwgMTUwMTUzLCAxNTAxNjEsIDE1MDE2OSwgMTUwMTc2LCAxNTAxODMsIAotICAgIDE1MDE5MSwgMTUwMTk4LCAxNTAyMDYsIDE1MDIxNCwgMTUwMjIyLCAxNTAyMzAsIDE1MDIzOCwgMTUwMjQyLCAxNTAyNDYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDI1MCwgMTUwMjU2LCAxNTAyNjIsIDE1MDI2OCwgCi0gICAgMTUwMjcyLCAxNTAyNzgsIDE1MDI4NCwgMTUwMjkwLCAxNTAyOTYsIDE1MDMwMiwgMTUwMzA4LCAxNTAzMTQsIDE1MDMyMCwgCi0gICAgMTUwMzI2LCAxNTAzMzIsIDE1MDMzOCwgMTUwMzQ0LCAxNTAzNTAsIDE1MDM1NiwgMTUwMzYyLCAxNTAzNjgsIDE1MDM3NCwgCi0gICAgMTUwMzgwLCAxNTAzODYsIDE1MDM5MiwgMTUwMzk4LCAxNTA0MDQsIDE1MDQxMCwgMTUwNDE2LCAxNTA0MjIsIDE1MDQyOCwgCi0gICAgMTUwNDM0LCAxNTA0NDAsIDE1MDQ0NiwgMTUwNDUyLCAxNTA0NTgsIDE1MDQ2NCwgMTUwNDcwLCAxNTA0NzYsIDE1MDQ4MiwgCi0gICAgMTUwNDg4LCAxNTA0OTQsIDE1MDUwMCwgMCwgMCwgMCwgMCwgMCwgMTUwNTA2LCAxNTA1MTcsIDE1MDUyOCwgMTUwNTM5LCAKLSAgICAxNTA1NTAsIDE1MDU2MSwgMTUwNTcyLCAxNTA1ODMsIDE1MDU5NCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTUwNjA1LCAKLSAgICAxNTA2MDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MjU1OSwgMTUyNTYzLCAxNTI1NjcsIDE1MjU3MSwgCisgICAgMCwgMTUyNTc1LCAxNTI1NzksIDE1MjU4MywgMTUyNTg3LCAxNTI1OTEsIDE1MjU5NSwgMTUyNTk5LCAxNTI2MDMsIAorICAgIDE1MjYwNywgMTUyNjExLCAxNTI2MTUsIDE1MjYxOSwgMTUyNjIzLCAxNTI2MjcsIDE1MjYzMSwgMTUyNjM1LCAxNTI2MzksIAorICAgIDE1MjY0MywgMTUyNjQ3LCAxNTI2NTEsIDE1MjY1NSwgMTUyNjU5LCAxNTI2NjMsIDE1MjY2NywgMTUyNjczLCAxNTI2NzksIAorICAgIDE1MjY4NSwgMCwgMTUyNjkxLCAxNTI2OTYsIDAsIDE1MjcwMSwgMCwgMCwgMTUyNzA2LCAwLCAxNTI3MTEsIDE1MjcxNiwgCisgICAgMTUyNzIxLCAxNTI3MjYsIDE1MjczMSwgMTUyNzM2LCAxNTI3NDEsIDE1Mjc0NiwgMTUyNzUxLCAxNTI3NTYsIDAsIAorICAgIDE1Mjc2MSwgMTUyNzY2LCAxNTI3NzEsIDE1Mjc3NiwgMCwgMTUyNzgxLCAwLCAxNTI3ODYsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE1Mjc5MSwgMCwgMCwgMCwgMCwgMTUyNzk3LCAwLCAxNTI4MDMsIDAsIDE1MjgwOSwgMCwgMTUyODE1LCAxNTI4MjEsIAorICAgIDE1MjgyNywgMCwgMTUyODMzLCAxNTI4MzksIDAsIDE1Mjg0NSwgMCwgMCwgMTUyODUxLCAwLCAxNTI4NTcsIDAsIDE1Mjg2MywgCisgICAgMCwgMTUyODY5LCAwLCAxNTI4NzcsIDAsIDE1Mjg4NSwgMTUyODkxLCAwLCAxNTI4OTcsIDAsIDAsIDE1MjkwMywgMTUyOTA5LCAKKyAgICAxNTI5MTUsIDE1MjkyMSwgMCwgMTUyOTI3LCAxNTI5MzMsIDE1MjkzOSwgMTUyOTQ1LCAxNTI5NTEsIDE1Mjk1NywgCisgICAgMTUyOTYzLCAwLCAxNTI5NjksIDE1Mjk3NSwgMTUyOTgxLCAxNTI5ODcsIDAsIDE1Mjk5MywgMTUyOTk5LCAxNTMwMDUsIAorICAgIDE1MzAxMSwgMCwgMTUzMDE5LCAwLCAxNTMwMjcsIDE1MzAzMywgMTUzMDM5LCAxNTMwNDUsIDE1MzA1MSwgMTUzMDU3LCAKKyAgICAxNTMwNjMsIDE1MzA2OSwgMTUzMDc1LCAxNTMwODEsIDAsIDE1MzA4NywgMTUzMDkzLCAxNTMwOTksIDE1MzEwNSwgCisgICAgMTUzMTExLCAxNTMxMTcsIDE1MzEyMywgMTUzMTI5LCAxNTMxMzUsIDE1MzE0MSwgMTUzMTQ3LCAxNTMxNTMsIDE1MzE1OSwgCisgICAgMTUzMTY1LCAxNTMxNzEsIDE1MzE3NywgMTUzMTgzLCAwLCAwLCAwLCAwLCAwLCAxNTMxODksIDE1MzE5NCwgMTUzMTk5LCAwLCAKKyAgICAxNTMyMDQsIDE1MzIwOSwgMTUzMjE0LCAxNTMyMTksIDE1MzIyNCwgMCwgMTUzMjI5LCAxNTMyMzQsIDE1MzIzOSwgCisgICAgMTUzMjQ0LCAxNTMyNDksIDE1MzI1NCwgMTUzMjU5LCAxNTMyNjQsIDE1MzI2OSwgMTUzMjc0LCAxNTMyNzksIDE1MzI4NCwgCisgICAgMTUzMjg5LCAxNTMyOTQsIDE1MzI5OSwgMTUzMzA0LCAxNTMzMDksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MzMxNCwgMTUzMzI0LCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTMzMzIsIDE1MzMzOSwgMTUzMzQ2LCAxNTMzNTMsIAorICAgIDE1MzM1OSwgMTUzMzY2LCAxNTMzNzMsIDE1MzM3OSwgMTUzMzg2LCAxNTMzOTMsIDE1MzQwMCwgMTUzNDA4LCAxNTM0MTYsIAorICAgIDE1MzQyNCwgMTUzNDMyLCAxNTM0NDAsIDE1MzQ0OCwgMTUzNDU1LCAxNTM0NjIsIDE1MzQ2OSwgMTUzNDc3LCAxNTM0ODUsIAorICAgIDE1MzQ5MywgMTUzNTAxLCAxNTM1MDksIDE1MzUxNywgMTUzNTI0LCAxNTM1MzEsIDE1MzUzOCwgMTUzNTQ2LCAxNTM1NTQsIAorICAgIDE1MzU2MiwgMTUzNTcwLCAxNTM1NzgsIDE1MzU4NiwgMTUzNTkxLCAxNTM1OTYsIDE1MzYwMSwgMTUzNjA2LCAxNTM2MTEsIAorICAgIDE1MzYxNiwgMTUzNjIxLCAxNTM2MjYsIDE1MzYzMSwgMCwgMCwgMCwgMCwgMTUzNjM2LCAxNTM2NDIsIDE1MzY0NiwgCisgICAgMTUzNjUwLCAxNTM2NTQsIDE1MzY1OCwgMTUzNjYyLCAxNTM2NjYsIDE1MzY3MCwgMTUzNjc0LCAxNTM2NzgsIDE1MzY4MiwgCisgICAgMTUzNjg2LCAxNTM2OTAsIDE1MzY5NCwgMTUzNjk4LCAxNTM3MDIsIDE1MzcwNiwgMTUzNzEwLCAxNTM3MTQsIDE1MzcxOCwgCisgICAgMTUzNzIyLCAxNTM3MjYsIDE1MzczMCwgMTUzNzM0LCAxNTM3MzgsIDE1Mzc0MiwgMTUzNzQ2LCAxNTM3NTAsIDE1Mzc1NCwgCisgICAgMTUzNzU4LCAxNTM3NjIsIDE1Mzc2NiwgMTUzNzcwLCAxNTM3NzQsIDE1Mzc3OCwgMTUzNzgyLCAxNTM3ODYsIDE1Mzc5MCwgCisgICAgMTUzNzk0LCAxNTM3OTgsIDE1MzgwMiwgMTUzODA2LCAxNTM4MTAsIDE1MzgxNCwgMTUzODE4LCAxNTM4MjIsIDE1MzgyNiwgCisgICAgMTUzODMwLCAxNTM4MzQsIDE1MzgzOCwgMTUzODQzLCAxNTM4NDcsIDE1Mzg1MSwgMTUzODU1LCAxNTM4NTksIDE1Mzg2MywgCisgICAgMTUzODY3LCAxNTM4NzEsIDE1Mzg3NSwgMTUzODc5LCAxNTM4ODMsIDE1Mzg4NywgMTUzODkxLCAxNTM4OTUsIDE1Mzg5OSwgCisgICAgMTUzOTAzLCAxNTM5MDcsIDE1MzkxMSwgMTUzOTE1LCAxNTM5MTksIDE1MzkyMywgMTUzOTI3LCAxNTM5MzEsIDE1MzkzNSwgCisgICAgMTUzOTM5LCAxNTM5NDMsIDE1Mzk0NywgMTUzOTUxLCAxNTM5NTUsIDE1Mzk1OSwgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgCisgICAgMTUzOTc1LCAxNTM5NzksIDE1Mzk4MywgMTUzOTg3LCAxNTM5OTEsIDE1Mzk5NSwgMTUzOTk5LCAxNTQwMDMsIDE1NDAwNywgCisgICAgMTU0MDExLCAxNTQwMTUsIDE1NDAxOSwgMTU0MDIzLCAxNTQwMjcsIDE1NDAzMSwgMTU0MDM1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTQwMzksIDE1NDA0NSwgMTU0MDU0LCAxNTQwNjIsIDE1NDA3MCwgMTU0MDc5LCAxNTQwODgsIAorICAgIDE1NDA5NywgMTU0MTA2LCAxNTQxMTUsIDE1NDEyNCwgMTU0MTMzLCAxNTQxNDIsIDE1NDE1MSwgMTU0MTYwLCAwLCAwLCAKKyAgICAxNTQxNjksIDE1NDE3OCwgMTU0MTg2LCAxNTQxOTQsIDE1NDIwMywgMTU0MjEyLCAxNTQyMjEsIDE1NDIzMCwgMTU0MjM5LCAKKyAgICAxNTQyNDgsIDE1NDI1NywgMTU0MjY2LCAxNTQyNzUsIDE1NDI4NCwgMTU0MjkzLCAwLCAxNTQzMDEsIDE1NDMxMCwgCisgICAgMTU0MzE4LCAxNTQzMjYsIDE1NDMzNSwgMTU0MzQ0LCAxNTQzNTMsIDE1NDM2MiwgMTU0MzcxLCAxNTQzODAsIDE1NDM4OSwgCisgICAgMTU0Mzk4LCAxNTQ0MDcsIDE1NDQxNiwgMTU0NDI1LCAwLCAxNTQ0MzIsIDE1NDQ0MSwgMTU0NDQ5LCAxNTQ0NTcsIAorICAgIDE1NDQ2NiwgMTU0NDc1LCAxNTQ0ODQsIDE1NDQ5MywgMTU0NTAyLCAxNTQ1MTEsIDE1NDUyMCwgMTU0NTI5LCAxNTQ1MzgsIAorICAgIDE1NDU0NywgMTU0NTU2LCAxNTQ1NjMsIDE1NDU2OSwgMTU0NTc1LCAxNTQ1ODEsIDE1NDU4NywgMTU0NTkzLCAxNTQ1OTksIAorICAgIDE1NDYwNSwgMTU0NjExLCAxNTQ2MTcsIDE1NDYyMywgMTU0NjI5LCAxNTQ2MzUsIDE1NDY0MSwgMTU0NjQ3LCAxNTQ2NTMsIAorICAgIDE1NDY1OSwgMTU0NjY1LCAxNTQ2NzEsIDE1NDY3NywgMTU0NjgzLCAxNTQ2ODksIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE1NDY5NSwgMTU0NzAyLCAxNTQ3MDcsIDE1NDcxMSwgMTU0NzE1LCAxNTQ3MTksIDE1NDcyNCwgMTU0NzI5LCAKKyAgICAxNTQ3MzQsIDE1NDczOSwgMTU0NzQ0LCAxNTQ3NDksIDE1NDc1NiwgMCwgMCwgMCwgMTU0NzY0LCAxNTQ3NjksIDE1NDc3NSwgCisgICAgMTU0NzgxLCAxNTQ3ODcsIDE1NDc5MiwgMTU0Nzk4LCAxNTQ4MDQsIDE1NDgxMCwgMTU0ODE1LCAxNTQ4MjEsIDE1NDgyNywgCisgICAgMTU0ODMyLCAxNTQ4MzgsIDE1NDg0NCwgMTU0ODQ5LCAxNTQ4NTUsIDE1NDg2MSwgMTU0ODY2LCAxNTQ4NzIsIDE1NDg3OCwgCisgICAgMTU0ODgzLCAxNTQ4ODksIDE1NDg5NSwgMTU0OTAxLCAxNTQ5MDcsIDE1NDkxMywgMTU0OTI0LCAxNTQ5MzEsIDE1NDkzNywgCisgICAgMTU0OTQwLCAwLCAxNTQ5NDMsIDE1NDk0OCwgMTU0OTU0LCAxNTQ5NjAsIDE1NDk2NiwgMTU0OTcxLCAxNTQ5NzcsIAorICAgIDE1NDk4MywgMTU0OTg5LCAxNTQ5OTQsIDE1NTAwMCwgMTU1MDA2LCAxNTUwMTEsIDE1NTAxNywgMTU1MDIzLCAxNTUwMjgsIAorICAgIDE1NTAzNCwgMTU1MDQwLCAxNTUwNDUsIDE1NTA1MSwgMTU1MDU3LCAxNTUwNjIsIDE1NTA2OCwgMTU1MDc0LCAxNTUwODAsIAorICAgIDE1NTA4NiwgMTU1MDkyLCAxNTUwOTUsIDE1NTA5OCwgMTU1MTAxLCAxNTUxMDQsIDE1NTEwNywgMTU1MTEwLCAxNTUxMTYsIAorICAgIDE1NTEyMywgMTU1MTMwLCAxNTUxMzcsIDE1NTE0MywgMTU1MTUwLCAxNTUxNTcsIDE1NTE2NCwgMTU1MTcwLCAxNTUxNzcsIAorICAgIDE1NTE4NCwgMTU1MTkwLCAxNTUxOTcsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTcsIDE1NTIyNCwgMTU1MjMwLCAxNTUyMzcsIAorICAgIDE1NTI0NCwgMTU1MjUwLCAxNTUyNTcsIDE1NTI2NCwgMTU1MjcxLCAxNTUyNzgsIDE1NTI4NSwgMTU1MjkwLCAwLCAwLCAwLCAKKyAgICAwLCAxNTUyOTUsIDE1NTMwMSwgMTU1MzA4LCAxNTUzMTUsIDE1NTMyMiwgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MiwgCisgICAgMTU1MzQ5LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY5LCAxNTUzNzUsIDE1NTM4MiwgMTU1Mzg5LCAxNTUzOTUsIDE1NTQwMiwgCisgICAgMTU1NDA5LCAxNTU0MTUsIDE1NTQyMiwgMTU1NDI5LCAxNTU0MzUsIDE1NTQ0MiwgMTU1NDQ5LCAxNTU0NTYsIDE1NTQ2MywgCisgICAgMTU1NDcwLCAxNTU0NzksIDE1NTQ4MywgMTU1NDg2LCAxNTU0OTAsIDE1NTQ5NCwgMTU1NDk4LCAxNTU1MDEsIDE1NTUwNCwgCisgICAgMTU1NTA3LCAxNTU1MTAsIDE1NTUxMywgMTU1NTE2LCAxNTU1MTksIDE1NTUyMiwgMTU1NTI1LCAxNTU1MzEsIDE1NTUzNCwgCisgICAgMTU1NTM4LCAxNTU1NDMsIDE1NTU0NywgMTU1NTUyLCAxNTU1NTcsIDE1NTU2MywgMTU1NTY5LCAxNTU1NzUsIDE1NTU4MCwgCisgICAgMTU1NTg4LCAxNTU1OTQsIDE1NTU5NywgMTU1NjAwLCAxNTU2MDMsIDE1NTYwNiwgMTU1NjA5LCAxNTU2MTIsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTYxNSwgMTU1NjIyLCAxNTU2MzAsIDE1NTYzOCwgMTU1NjQ2LCAxNTU2NTMsIDE1NTY2MSwgCisgICAgMTU1NjY5LCAxNTU2NzcsIDE1NTY4NCwgMTU1NjkyLCAxNTU3MDAsIDE1NTcwNywgMTU1NzE1LCAxNTU3MjMsIDE1NTczMCwgCisgICAgMTU1NzM4LCAxNTU3NDYsIDE1NTc1MywgMTU1NzYxLCAxNTU3NjksIDE1NTc3NiwgMTU1Nzg0LCAxNTU3OTIsIDE1NTgwMCwgCisgICAgMTU1ODA4LCAxNTU4MTYsIDE1NTgyMCwgMTU1ODI0LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxNTU4MjgsIDE1NTgzNCwgMTU1ODQwLCAxNTU4NDYsIDE1NTg1MCwgMTU1ODU2LCAxNTU4NjIsIDE1NTg2OCwgMTU1ODc0LCAKKyAgICAxNTU4ODAsIDE1NTg4NiwgMTU1ODkyLCAxNTU4OTgsIDE1NTkwNCwgMTU1OTEwLCAxNTU5MTYsIDE1NTkyMiwgMTU1OTI4LCAKKyAgICAxNTU5MzQsIDE1NTk0MCwgMTU1OTQ2LCAxNTU5NTIsIDE1NTk1OCwgMTU1OTY0LCAxNTU5NzAsIDE1NTk3NiwgMTU1OTgyLCAKKyAgICAxNTU5ODgsIDE1NTk5NCwgMTU2MDAwLCAxNTYwMDYsIDE1NjAxMiwgMTU2MDE4LCAxNTYwMjQsIDE1NjAzMCwgMTU2MDM2LCAKKyAgICAxNTYwNDIsIDE1NjA0OCwgMTU2MDU0LCAxNTYwNjAsIDE1NjA2NiwgMTU2MDcyLCAxNTYwNzgsIDE1NjA4NCwgMCwgMCwgMCwgCisgICAgMCwgMTU2MDkwLCAxNTYxMDEsIDE1NjExMiwgMTU2MTIzLCAxNTYxMzQsIDE1NjE0NSwgMTU2MTU2LCAxNTYxNjcsIAorICAgIDE1NjE3OCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU2MTg5LCAxNTYxOTQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1MDYxMywgMTUwNjE1LCAxNTA2MTcsIDE1MDYyMSwgMTUwNjI2LCAxNTA2MzEsIAotICAgIDE1MDYzMywgMTUwNjM5LCAxNTA2NDQsIDE1MDY0NiwgMTUwNjUyLCAxNTA2NTYsIDE1MDY1OCwgMTUwNjYyLCAxNTA2NjgsIAotICAgIDE1MDY3NCwgMTUwNjgwLCAxNTA2ODUsIDE1MDY5MCwgMTUwNjk3LCAxNTA3MDQsIDE1MDcxMSwgMTUwNzE2LCAxNTA3MjMsIAotICAgIDE1MDczMCwgMTUwNzM3LCAxNTA3NDEsIDE1MDc0OCwgMTUwNzU3LCAxNTA3NjYsIDE1MDc3MywgMTUwNzc4LCAxNTA3ODIsIAotICAgIDE1MDc4NiwgMTUwNzg4LCAxNTA3OTEsIDE1MDc5NCwgMTUwODAxLCAxNTA4MDgsIDE1MDgxOCwgMTUwODIzLCAxNTA4MjgsIAotICAgIDE1MDgzMywgMTUwODM4LCAxNTA4NDAsIDE1MDg0NiwgMTUwODUwLCAxNTA4NTIsIDE1MDg1NCwgMTUwODU2LCAxNTA4NTgsIAotICAgIDE1MDg2MiwgMTUwODY2LCAxNTA4NzAsIDE1MDg3MiwgMTUwODc2LCAxNTA4NzgsIDE1MDg4MiwgMTUwODg0LCAxNTA4ODYsIAotICAgIDE1MDg4OCwgMTUwODkwLCAxNTA4OTUsIDE1MDkwMCwgMTUwOTAyLCAxNTA5MDgsIDE1MDkxMiwgMTUwOTE2LCAxNTA5MjQsIAotICAgIDE1MDkyNiwgMTUwOTI4LCAxNTA5MzAsIDE1MDkzMiwgMTUwOTM0LCAxNTA5MzYsIDE1MDkzOCwgMTUwOTQwLCAxNTA5NDIsIAotICAgIDE1MDk0NCwgMTUwOTQ4LCAxNTA5NTIsIDE1MDk1NCwgMTUwOTU2LCAxNTA5NTgsIDE1MDk2MCwgMTUwOTYyLCAxNTA5NjcsIAotICAgIDE1MDk3MywgMTUwOTc3LCAxNTA5ODEsIDE1MDk4NSwgMTUwOTg5LCAxNTA5OTQsIDE1MDk5OCwgMTUxMDAwLCAxNTEwMDIsIAotICAgIDE1MTAwNiwgMTUxMDEyLCAxNTEwMTQsIDE1MTAxNiwgMTUxMDE4LCAxNTEwMjIsIDE1MTAzMSwgMTUxMDM3LCAxNTEwNDEsIAotICAgIDE1MTA0NSwgMTUxMDQ3LCAxNTEwNDksIDE1MTA1MiwgMTUxMDU0LCAxNTEwNTYsIDE1MTA1OCwgMTUxMDYyLCAxNTEwNjQsIAotICAgIDE1MTA2OCwgMTUxMDczLCAxNTEwNzUsIDE1MTA4MCwgMTUxMDg2LCAxNTEwOTMsIDE1MTA5NywgMTUxMTAxLCAxNTExMDUsIAotICAgIDE1MTEwOSwgMTUxMTE1LCAxNTExMTksIDE1MTEyNywgMTUxMTM0LCAxNTExMzYsIDE1MTEzOCwgMTUxMTQyLCAxNTExNDYsIAotICAgIDE1MTE0OCwgMTUxMTUyLCAxNTExNTYsIDE1MTE1OCwgMTUxMTYyLCAxNTExNjQsIDE1MTE2OCwgMTUxMTcyLCAxNTExNzYsIAotICAgIDE1MTE4MCwgMTUxMTg0LCAxNTExODgsIDE1MTE5MiwgMTUxMTk2LCAxNTEyMDIsIDE1MTIwNiwgMTUxMjEwLCAxNTEyMjEsIAotICAgIDE1MTIyNiwgMTUxMjMwLCAxNTEyMzQsIDE1MTI0MCwgMTUxMjQ0LCAxNTEyNDgsIDE1MTI1MiwgMTUxMjU5LCAxNTEyNjYsIAotICAgIDE1MTI3MCwgMTUxMjc0LCAxNTEyNzgsIDE1MTI4MiwgMTUxMjg2LCAxNTEyOTMsIDE1MTI5NSwgMTUxMjk5LCAxNTEzMDEsIAotICAgIDE1MTMwMywgMTUxMzA3LCAxNTEzMTEsIDE1MTMxNSwgMTUxMzE3LCAxNTEzMjEsIDE1MTMyNSwgMTUxMzI5LCAxNTEzMzMsIAotICAgIDE1MTMzNywgMTUxMzM5LCAxNTEzNDMsIDE1MTM0NSwgMTUxMzUxLCAxNTEzNTQsIDE1MTM1OSwgMTUxMzYxLCAxNTEzNjMsIAotICAgIDE1MTM2NiwgMTUxMzY4LCAxNTEzNzAsIDE1MTM3MywgMTUxMzgwLCAxNTEzODcsIDE1MTM5NCwgMTUxMzk5LCAxNTE0MDMsIAotICAgIDE1MTQwNSwgMTUxNDA3LCAxNTE0MDksIDE1MTQxMywgMTUxNDE1LCAxNTE0MTksIDE1MTQyMywgMTUxNDI3LCAxNTE0MjksIAotICAgIDE1MTQzMywgMTUxNDM1LCAxNTE0MzksIDE1MTQ0MywgMTUxNDUwLCAxNTE0NTIsIDE1MTQ2MSwgMTUxNDcwLCAxNTE0NzksIAotICAgIDE1MTQ4NSwgMTUxNDg3LCAxNTE0OTIsIDE1MTQ5NiwgMTUxNTAwLCAxNTE1MDIsIDE1MTUwOCwgMTUxNTEyLCAxNTE1MTQsIAotICAgIDE1MTUxOCwgMTUxNTIyLCAxNTE1MjQsIDE1MTUyOCwgMTUxNTMzLCAxNTE1MzcsIDE1MTU0MywgMTUxNTQ5LCAxNTE1NTEsIAotICAgIDE1MTU1MywgMTUxNTU5LCAxNTE1NjEsIDE1MTU2NSwgMTUxNTY5LCAxNTE1NzEsIDE1MTU3NSwgMTUxNTc3LCAxNTE1ODEsIAotICAgIDE1MTU4NSwgMTUxNTg5LCAxNTE1OTIsIDE1MTU5NSwgMTUxNjAwLCAxNTE2MDUsIDE1MTYwNywgMTUxNjEwLCAxNTE2MTIsIAotICAgIDE1MTYxOSwgMTUxNjIzLCAxNTE2MjUsIDE1MTYzMiwgMTUxNjM5LCAxNTE2NDYsIDE1MTY1MywgMTUxNjYwLCAxNTE2NjIsIAotICAgIDE1MTY2NCwgMTUxNjY2LCAxNTE2NzAsIDE1MTY3MiwgMTUxNjc0LCAxNTE2NzYsIDE1MTY3OCwgMTUxNjgwLCAxNTE2ODIsIAotICAgIDE1MTY4NCwgMTUxNjg2LCAxNTE2ODgsIDE1MTY5MCwgMTUxNjkyLCAxNTE2OTQsIDE1MTY5NiwgMTUxNjk4LCAxNTE3MDAsIAotICAgIDE1MTcwMiwgMTUxNzA0LCAxNTE3MDYsIDE1MTcwOCwgMTUxNzEwLCAxNTE3MTIsIDE1MTcxNCwgMTUxNzE4LCAxNTE3MjAsIAotICAgIDE1MTcyMiwgMTUxNzI0LCAxNTE3MjgsIDE1MTczMCwgMTUxNzM0LCAxNTE3MzYsIDE1MTczOCwgMTUxNzQyLCAxNTE3NDYsIAotICAgIDE1MTc1MiwgMTUxNzU0LCAxNTE3NTYsIDE1MTc1OCwgMTUxNzYwLCAxNTE3NjQsIDE1MTc2OCwgMTUxNzcwLCAxNTE3NzQsIAotICAgIDE1MTc3OCwgMTUxNzgyLCAxNTE3ODYsIDE1MTc5MCwgMTUxNzk0LCAxNTE3OTgsIDE1MTgwMiwgMTUxODA2LCAxNTE4MTAsIAotICAgIDE1MTgxNCwgMTUxODE4LCAxNTE4MjIsIDE1MTgyNiwgMTUxODMwLCAxNTE4MzQsIDE1MTgzOCwgMTUxODQyLCAxNTE4NDQsIAotICAgIDE1MTg0NiwgMTUxODQ4LCAxNTE4NTAsIDE1MTg1MiwgMTUxODU0LCAxNTE4NTYsIDE1MTg2NCwgMTUxODcyLCAxNTE4ODAsIAotICAgIDE1MTg4OCwgMTUxODkzLCAxNTE4OTgsIDE1MTkwMywgMTUxOTA3LCAxNTE5MTEsIDE1MTkxNiwgMTUxOTIwLCAxNTE5MjIsIAotICAgIDE1MTkyNiwgMTUxOTI4LCAxNTE5MzAsIDE1MTkzMiwgMTUxOTM0LCAxNTE5MzYsIDE1MTkzOCwgMTUxOTQwLCAxNTE5NDQsIAotICAgIDE1MTk0NiwgMTUxOTQ4LCAxNTE5NTAsIDE1MTk1NCwgMTUxOTU4LCAxNTE5NjIsIDE1MTk2NiwgMTUxOTcwLCAxNTE5NzIsIAotICAgIDE1MTk3OCwgMTUxOTg0LCAxNTE5ODYsIDE1MTk4OCwgMTUxOTkwLCAxNTE5OTIsIDE1MTk5NCwgMTUyMDAzLCAxNTIwMTAsIAotICAgIDE1MjAxNywgMTUyMDIxLCAxNTIwMjgsIDE1MjAzMywgMTUyMDQwLCAxNTIwNDksIDE1MjA1NCwgMTUyMDU4LCAxNTIwNjIsIAotICAgIDE1MjA2NCwgMTUyMDY4LCAxNTIwNzAsIDE1MjA3NCwgMTUyMDc4LCAxNTIwODAsIDE1MjA4NCwgMTUyMDg4LCAxNTIwOTIsIAotICAgIDE1MjA5NCwgMTUyMDk2LCAxNTIxMDIsIDE1MjEwNCwgMTUyMTA2LCAxNTIxMDgsIDE1MjExMiwgMTUyMTE2LCAxNTIxMTgsIAotICAgIDE1MjEyMiwgMTUyMTI0LCAxNTIxMjYsIDE1MjEyOSwgMTUyMTMzLCAxNTIxMzUsIDE1MjEzOSwgMTUyMTQxLCAxNTIxNDMsIAotICAgIDE1MjE0OCwgMTUyMTUwLCAxNTIxNTQsIDE1MjE1OCwgMTUyMTYxLCAxNTIxNjUsIDE1MjE2OSwgMTUyMTczLCAxNTIxNzcsIAotICAgIDE1MjE4MSwgMTUyMTg1LCAxNTIxODksIDE1MjE5NCwgMTUyMTk4LCAxNTIyMDIsIDE1MjIxMSwgMTUyMjE2LCAxNTIyMTksIAotICAgIDE1MjIyMSwgMTUyMjI0LCAxNTIyMjcsIDE1MjIzMiwgMTUyMjM0LCAxNTIyMzcsIDE1MjI0MiwgMTUyMjQ2LCAxNTIyNDksIAotICAgIDE1MjI1MywgMTUyMjU3LCAxNTIyNjAsIDE1MjI2NSwgMTUyMjY5LCAxNTIyNzMsIDE1MjI3NywgMTUyMjgxLCAxNTIyODcsIAotICAgIDE1MjI5MywgMTUyMjk5LCAxNTIzMDUsIDE1MjMxMCwgMTUyMzIwLCAxNTIzMjIsIDE1MjMyNiwgMTUyMzI4LCAxNTIzMzAsIAotICAgIDE1MjMzNCwgMTUyMzM4LCAxNTIzNDAsIDE1MjM0NCwgMTUyMzQ5LCAxNTIzNTQsIDE1MjM2MCwgMTUyMzYyLCAxNTIzNjYsIAotICAgIDE1MjM3MCwgMTUyMzc2LCAxNTIzODIsIDE1MjM4NiwgMTUyMzg4LCAxNTIzOTAsIDE1MjM5NCwgMTUyMzk2LCAxNTI0MDAsIAotICAgIDE1MjQwNCwgMTUyNDA4LCAxNTI0MTAsIDE1MjQxMiwgMTUyNDE5LCAxNTI0MjMsIDE1MjQyNiwgMTUyNDMwLCAxNTI0MzQsIAotICAgIDE1MjQzOCwgMTUyNDQwLCAxNTI0NDQsIDE1MjQ0NiwgMTUyNDQ4LCAxNTI0NTIsIDE1MjQ1NCwgMTUyNDU4LCAxNTI0NjIsIAotICAgIDE1MjQ2OCwgMTUyNDcyLCAxNTI0NzYsIDE1MjQ4MCwgMTUyNDgyLCAxNTI0ODUsIDE1MjQ4OSwgMTUyNDk1LCAxNTI1MDQsIAotICAgIDE1MjUxMywgMTUyNTIxLCAxNTI1MjksIDE1MjUzMSwgMTUyNTM1LCAxNTI1MzcsIDE1MjU0MSwgMTUyNTUyLCAxNTI1NTYsIAotICAgIDE1MjU2MiwgMTUyNTY4LCAxNTI1NzMsIDE1MjU3NSwgMTUyNTgwLCAxNTI1ODQsIDE1MjU4NiwgMTUyNTg4LCAxNTI1OTAsIAotICAgIDE1MjU5NCwgMTUyNTk4LCAxNTI2MDIsIDE1MjYwNywgMTUyNjE3LCAxNTI2MzIsIDE1MjY0MiwgMTUyNjUyLCAxNTI2NTYsIAotICAgIDE1MjY2MCwgMTUyNjY2LCAxNTI2NjgsIDE1MjY3NiwgMTUyNjg0LCAxNTI2ODYsIDE1MjY5MCwgMTUyNjk2LCAxNTI3MDIsIAotICAgIDE1MjcwOSwgMTUyNzE2LCAxNTI3MTgsIDE1MjcyMCwgMTUyNzIzLCAxNTI3MjUsIDE1MjczMSwgMTUyNzMzLCAxNTI3MzYsIAotICAgIDE1Mjc0MCwgMTUyNzQ2LCAxNTI3NTIsIDE1Mjc2MywgMTUyNzY5LCAxNTI3NzUsIDE1Mjc4MywgMTUyNzg3LCAxNTI3OTUsIAotICAgIDE1MjgwMywgMTUyODA5LCAxNTI4MTUsIDE1MjgyMiwgMTUyODI0LCAxNTI4MjgsIDE1MjgzMCwgMTUyODMyLCAxNTI4MzcsIAotICAgIDE1MjgzOSwgMTUyODQxLCAxNTI4NDMsIDE1Mjg0NSwgMTUyODQ5LCAxNTI4NTksIDE1Mjg2NSwgMTUyODY5LCAxNTI4NzMsIAotICAgIDE1Mjg3NywgMTUyODgzLCAxNTI4ODksIDE1Mjg5NSwgMTUyOTAxLCAxNTI5MDYsIDE1MjkxMSwgMTUyOTE3LCAxNTI5MjMsIAotICAgIDE1MjkzMCwgMTUyOTM3LCAxNTI5NDUsIDE1Mjk1MywgMTUyOTU4LCAxNTI5NjYsIDE1Mjk3MCwgMTUyOTc5LCAxNTI5ODgsIAotICAgIDE1Mjk5NCwgMTUyOTk4LCAxNTMwMDIsIDE1MzAwNiwgMTUzMDA5LCAxNTMwMTQsIDE1MzAxNiwgMTUzMDE4LCAxNTMwMjAsIAotICAgIDE1MzAyNywgMTUzMDMyLCAxNTMwMzksIDE1MzA0NiwgMTUzMDUzLCAxNTMwNjEsIDE1MzA2OSwgMTUzMDc3LCAxNTMwODUsIAotICAgIDE1MzA5MywgMTUzMTAxLCAxNTMxMDksIDE1MzExNywgMTUzMTI1LCAxNTMxMzEsIDE1MzEzNywgMTUzMTQzLCAxNTMxNDksIAotICAgIDE1MzE1NSwgMTUzMTYxLCAxNTMxNjcsIDE1MzE3MywgMTUzMTc5LCAxNTMxODUsIDE1MzE5MSwgMTUzMTk3LCAxNTMyMDAsIAotICAgIDE1MzIwOSwgMTUzMjE4LCAxNTMyMjAsIDE1MzIyNywgMTUzMjMxLCAxNTMyMzMsIDE1MzIzNSwgMTUzMjM5LCAxNTMyNDUsIAotICAgIDE1MzI0OSwgMTUzMjUxLCAxNTMyNjEsIDE1MzI2NywgMTUzMjcxLCAxNTMyNzMsIDE1MzI3NywgMCwgMTUzMjc5LCAKLSAgICAxNTMyODYsIDE1MzI5MywgMTUzMzAwLCAxNTMzMDUsIDE1MzMxMCwgMTUzMzE5LCAxNTMzMjUsIDE1MzMzMCwgMTUzMzM0LCAKLSAgICAxNTMzMzksIDE1MzM0MywgMTUzMzUwLCAxNTMzNTQsIDE1MzM1NywgMTUzMzYyLCAxNTMzNjksIDE1MzM3NiwgMTUzMzgxLCAKLSAgICAxNTMzODYsIDE1MzM5MSwgMTUzMzk4LCAxNTM0MDcsIDE1MzQxOCwgMTUzNDI0LCAxNTM0MzAsIDE1MzQzNiwgMTUzNDQ2LCAKLSAgICAxNTM0NjEsIDE1MzQ3MCwgMTUzNDc4LCAxNTM0ODYsIDE1MzQ5NCwgMTUzNTAyLCAxNTM1MTAsIDE1MzUxOCwgMTUzNTI2LCAKLSAgICAxNTM1MzQsIDE1MzU0MiwgMTUzNTUwLCAxNTM1NTgsIDAsIDE1MzU2NiwgMTUzNTcwLCAxNTM1NzUsIDE1MzU4MCwgCi0gICAgMTUzNTgyLCAxNTM1ODYsIDE1MzU5NSwgMTUzNjA0LCAxNTM2MTIsIDE1MzYxNiwgMTUzNjIwLCAxNTM2MjUsIDE1MzYzMCwgCi0gICAgMTUzNjM1LCAxNTM2MzcsIDE1MzY0MiwgMTUzNjQ2LCAxNTM2NDgsIDE1MzY1MiwgMTUzNjU2LCAxNTM2NjIsIDE1MzY2NywgCi0gICAgMTUzNjc1LCAxNTM2ODAsIDE1MzY4NSwgMTUzNjkwLCAxNTM2OTcsIDE1MzcwMCwgMTUzNzAyLCAxNTM3MDUsIDE1MzcxMCwgCi0gICAgMTUzNzE2LCAxNTM3MjAsIDE1MzcyNCwgMTUzNzMwLCAxNTM3MzYsIDE1MzczOCwgMTUzNzQyLCAxNTM3NDYsIDE1Mzc1MCwgCi0gICAgMTUzNzU0LCAxNTM3NTgsIDE1Mzc2MCwgMTUzNzYyLCAxNTM3NjQsIDE1Mzc2NiwgMTUzNzcyLCAxNTM3NzgsIDE1Mzc4MiwgCi0gICAgMTUzNzg0LCAxNTM3ODYsIDE1Mzc4OCwgMTUzNzk3LCAxNTM4MDEsIDE1MzgwOCwgMTUzODE1LCAxNTM4MTcsIDE1MzgyMCwgCi0gICAgMTUzODI0LCAxNTM4MzAsIDE1MzgzNCwgMTUzODM4LCAxNTM4NDAsIDE1Mzg0OCwgMTUzODUyLCAxNTM4NTYsIDE1Mzg2MSwgCi0gICAgMTUzODY2LCAxNTM4NzEsIDE1Mzg3NiwgMTUzODgxLCAxNTM4ODYsIDE1Mzg5MSwgMTUzODk2LCAxNTM5MDEsIDE1MzkwNiwgCi0gICAgMTUzOTEwLCAxNTM5MTYsIDE1MzkyMCwgMTUzOTI2LCAxNTM5MzEsIDE1MzkzOCwgMTUzOTQ0LCAxNTM5NTIsIDE1Mzk1NiwgCi0gICAgMTUzOTYzLCAxNTM5NjcsIDE1Mzk3MSwgMTUzOTc1LCAxNTM5ODAsIDE1Mzk4NSwgMTUzOTg3LCAxNTM5OTEsIDE1NDAwMCwgCi0gICAgMTU0MDA4LCAxNTQwMTYsIDE1NDAyOSwgMTU0MDQyLCAxNTQwNTUsIDE1NDA2MiwgMTU0MDY5LCAxNTQwNzMsIDE1NDA4MiwgCi0gICAgMTU0MDkwLCAxNTQwOTQsIDE1NDEwMywgMTU0MTEwLCAxNTQxMTQsIDE1NDExOCwgMTU0MTIyLCAxNTQxMjYsIDE1NDEzMywgCi0gICAgMTU0MTM3LCAxNTQxNDEsIDE1NDE0NSwgMTU0MTQ5LCAxNTQxNTYsIDE1NDE2NSwgMTU0MTc0LCAxNTQxODEsIDE1NDE5MywgCi0gICAgMTU0MjA1LCAxNTQyMDksIDE1NDIxMywgMTU0MjE3LCAxNTQyMjEsIDE1NDIyNSwgMTU0MjI5LCAxNTQyMzcsIDE1NDI0NSwgCi0gICAgMTU0MjUzLCAxNTQyNTcsIDE1NDI2MSwgMTU0MjY1LCAxNTQyNjksIDE1NDI3MywgMTU0Mjc3LCAxNTQyODMsIDE1NDI4OSwgCi0gICAgMTU0MjkzLCAxNTQzMDQsIDE1NDMxMiwgMTU0MzE2LCAxNTQzMjAsIDE1NDMyNCwgMTU0MzI4LCAxNTQzMzQsIDE1NDM0MSwgCi0gICAgMTU0MzUyLCAxNTQzNjIsIDE1NDM3MiwgMTU0MzgzLCAxNTQzOTIsIDE1NDQwMywgMTU0NDA5LCAxNTQ0MTUsIDE1NDQyMSwgCi0gICAgMTU0NDI3LCAxNTQ0MzMsIDE1NDQzNywgMTU0NDQ0LCAxNTQ0NTMsIDE1NDQ2MCwgMTU0NDY2LCAxNTQ0NzAsIDE1NDQ3NCwgCi0gICAgMTU0NDc4LCAxNTQ0ODcsIDE1NDQ5OSwgMTU0NTAzLCAxNTQ1MTAsIDE1NDUxNywgMTU0NTI0LCAxNTQ1MzIsIDE1NDUzOSwgCi0gICAgMTU0NTQ3LCAxNTQ1NTYsIDE1NDU2NiwgMTU0NTc1LCAxNTQ1ODUsIDE1NDU5NCwgMTU0NjA0LCAxNTQ2MTMsIDE1NDYyMywgCi0gICAgMTU0NjMzLCAxNTQ2NDQsIDE1NDY1NCwgMTU0NjY1LCAxNTQ2NzIsIDE1NDY4MCwgMTU0Njg3LCAxNTQ2OTUsIDE1NDcwMywgCi0gICAgMTU0NzEyLCAxNTQ3MjAsIDE1NDcyOSwgMTU0NzM2LCAxNTQ3NDgsIDE1NDc1NSwgMTU0NzY3LCAxNTQ3NzAsIDE1NDc3MywgCi0gICAgMTU0Nzc2LCAxNTQ3NzksIDE1NDc4NSwgMTU0NzkyLCAxNTQ3OTgsIDE1NDgwNSwgMTU0ODEwLCAxNTQ4MTYsIDE1NDgyOCwgCi0gICAgMTU0ODM4LCAxNTQ4NDksIDE1NDg1NCwgMTU0ODU5LCAxNTQ4NjUsIDE1NDg3MCwgMTU0ODc3LCAxNTQ4ODEsIDE1NDg4NywgCi0gICAgMTU0ODg5LCAxNTQ4OTEsIDE1NDg5NSwgMTU0ODk5LCAxNTQ5MDMsIDE1NDkxMiwgMTU0OTE0LCAxNTQ5MTYsIDE1NDkxOSwgCi0gICAgMTU0OTIxLCAxNTQ5MjMsIDE1NDkyNywgMTU0OTI5LCAxNTQ5MzMsIDE1NDkzNSwgMTU0OTM5LCAxNTQ5NDEsIDE1NDk0MywgCi0gICAgMTU0OTQ3LCAxNTQ5NTEsIDE1NDk1NywgMTU0OTU5LCAxNTQ5NjMsIDE1NDk2NSwgMTU0OTY5LCAxNTQ5NzMsIDE1NDk3NywgCi0gICAgMTU0OTgxLCAxNTQ5ODMsIDE1NDk4NSwgMTU0OTg5LCAxNTQ5OTMsIDE1NDk5NywgMTU1MDAxLCAxNTUwMDMsIDE1NTAwNSwgCi0gICAgMTU1MDA3LCAxNTUwMTMsIDE1NTAxOCwgMTU1MDIxLCAxNTUwMjksIDE1NTAzNywgMTU1MDM5LCAxNTUwNDQsIDE1NTA0NywgCi0gICAgMTU1MDUyLCAxNTUwNjMsIDE1NTA3MCwgMTU1MDc1LCAxNTUwODAsIDE1NTA4MiwgMTU1MDg2LCAxNTUwODgsIDE1NTA5MiwgCi0gICAgMTU1MDk0LCAxNTUwOTgsIDE1NTEwMiwgMTU1MTA1LCAxNTUxMDgsIDE1NTExMCwgMTU1MTEzLCAxNTUxMTUsIDE1NTExOSwgCi0gICAgMTU1MTIxLCAxNTUxMjMsIDE1NTEyNSwgMTU1MTI5LCAxNTUxMzEsIDE1NTEzNSwgMTU1MTM4LCAxNTUxNDUsIDE1NTE0OCwgCi0gICAgMTU1MTUzLCAxNTUxNTYsIDE1NTE1OSwgMTU1MTY0LCAxNTUxNjgsIDE1NTE3MiwgMTU1MTc2LCAxNTUxNzgsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NTE4MywgMTU1MTg4LCAxNTUxOTAsIDE1NTE5NCwgCi0gICAgMTU1MTk2LCAxNTUyMDAsIDE1NTIwNCwgMTU1MjEwLCAxNTUyMTQsIDE1NTIxOSwgMTU1MjIyLCAxNTUyMjYsIDE1NTIzMCwgCi0gICAgMCwgMCwgMCwgMTU1MjM0LCAxNTUyMzYsIDE1NTI0MiwgMTU1MjQ2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAxNTUyNTAsIDE1NTI1NSwgMTU1MjYwLCAxNTUyNjUsIDE1NTI3MCwgMTU1Mjc1LCAxNTUyODAsIDE1NTI4NywgCi0gICAgMTU1Mjk0LCAxNTUzMDEsIDE1NTMwOCwgMTU1MzEzLCAxNTUzMTgsIDE1NTMyMywgMTU1MzI4LCAxNTUzMzUsIDE1NTM0MSwgCi0gICAgMTU1MzQ4LCAxNTUzNTUsIDE1NTM2MiwgMTU1MzY3LCAxNTUzNzIsIDE1NTM3NywgMTU1MzgyLCAxNTUzODcsIDE1NTM5NCwgCi0gICAgMTU1NDAxLCAxNTU0MDYsIDE1NTQxMSwgMTU1NDE4LCAxNTU0MjUsIDE1NTQzMywgMTU1NDQxLCAxNTU0NDgsIDE1NTQ1NSwgCi0gICAgMTU1NDYzLCAxNTU0NzEsIDE1NTQ3OSwgMTU1NDg2LCAxNTU0OTYsIDE1NTUwNywgMTU1NTEyLCAxNTU1MTksIDE1NTUyNiwgCi0gICAgMTU1NTMzLCAxNTU1NDEsIDE1NTU0OSwgMTU1NTYwLCAxNTU1NjgsIDE1NTU3NiwgMTU1NTg0LCAxNTU1ODksIDE1NTU5NCwgCi0gICAgMTU1NTk5LCAxNTU2MDQsIDE1NTYwOSwgMTU1NjE0LCAxNTU2MTksIDE1NTYyNCwgMTU1NjI5LCAxNTU2MzQsIDE1NTYzOSwgCi0gICAgMTU1NjQ0LCAxNTU2NTEsIDE1NTY1NiwgMTU1NjYxLCAxNTU2NjgsIDE1NTY3MywgMTU1Njc4LCAxNTU2ODMsIDE1NTY4OCwgCi0gICAgMTU1NjkzLCAxNTU2OTgsIDE1NTcwMywgMTU1NzA4LCAxNTU3MTMsIDE1NTcxOCwgMTU1NzIzLCAxNTU3MjgsIDE1NTczNSwgCi0gICAgMTU1NzQzLCAxNTU3NDgsIDE1NTc1MywgMTU1NzYwLCAxNTU3NjUsIDE1NTc3MCwgMTU1Nzc1LCAxNTU3ODIsIDE1NTc4NywgCi0gICAgMTU1Nzk0LCAxNTU3OTksIDE1NTgwNiwgMTU1ODExLCAxNTU4MjAsIDE1NTgyOSwgMTU1ODM0LCAxNTU4MzksIDE1NTg0NCwgCi0gICAgMTU1ODQ5LCAxNTU4NTQsIDE1NTg1OSwgMTU1ODY0LCAxNTU4NjksIDE1NTg3NCwgMTU1ODc5LCAxNTU4ODQsIDE1NTg4OSwgCi0gICAgMTU1ODk0LCAxNTU5MDIsIDE1NTkxMCwgMTU1OTE1LCAxNTU5MjAsIDE1NTkyNSwgMTU1OTMwLCAxNTU5MzUsIDE1NTk0MSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU1OTQ3LCAxNTU5NTUsIDE1NTk2MywgMTU1OTcxLCAKLSAgICAxNTU5NzksIDE1NTk4NSwgMTU1OTkxLCAxNTU5OTUsIDE1NTk5OSwgMTU2MDA1LCAxNTYwMTEsIDE1NjAyMCwgMTU2MDI0LCAKLSAgICAxNTYwMjksIDE1NjAzNSwgMTU2MDM5LCAxNTYwNDQsIDE1NjA0OCwgMTU2MDUyLCAxNTYwNTgsIDE1NjA2NCwgMTU2MDc0LCAKLSAgICAxNTYwODMsIDE1NjA4NiwgMTU2MDkxLCAxNTYwOTcsIDE1NjEwMywgMTU2MTE0LCAxNTYxMjQsIDE1NjEyOCwgMTU2MTMzLCAKLSAgICAxNTYxMzksIDE1NjE0NSwgMTU2MTU0LCAxNTYxNTksIDE1NjE2MywgMTU2MTY4LCAxNTYxNzIsIDE1NjE3OCwgMTU2MTg0LCAKLSAgICAxNTYxOTAsIDE1NjE5NCwgMTU2MTk3LCAxNTYyMDEsIDE1NjIwNCwgMTU2MjA3LCAxNTYyMTIsIDE1NjIxNywgMTU2MjI0LCAKLSAgICAxNTYyMzIsIDE1NjIzOSwgMTU2MjQ2LCAxNTYyNTUsIDE1NjI2NCwgMTU2MjcxLCAxNTYyNzksIDE1NjI4NiwgMTU2MjkzLCAKLSAgICAxNTYzMDIsIDE1NjMxMSwgMTU2MzE4LCAxNTYzMjYsIDE1NjMzMywgMTU2MzQwLCAxNTYzNDksIDE1NjM1NiwgMTU2MzY0LCAKLSAgICAxNTYzNzAsIDE1NjM3OSwgMTU2Mzg3LCAxNTYzOTYsIDE1NjQwMywgMTU2NDEzLCAxNTY0MjQsIDE1NjQzMiwgMTU2NDQwLCAKLSAgICAxNTY0NDksIDE1NjQ1NywgMTU2NDY1LCAxNTY0NzQsIDE1NjQ4MiwgMTU2NDkyLCAxNTY1MDEsIDE1NjUwOSwgMTU2NTE3LCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTY1MjYsIDE1NjUzNCwgCi0gICAgMTU2NTQyLCAxNTY1NTAsIDE1NjU1OCwgMTU2NTY3LCAxNTY1NzYsIDE1NjU4NSwgMTU2NTk0LCAxNTY2MDMsIDE1NjYxMiwgCi0gICAgMTU2NjIxLCAwLCAwLCAwLCAwLCAxNTY2MzAsIDE1NjYzOCwgMTU2NjQ2LCAxNTY2NTQsIDE1NjY2MiwgMTU2NjY5LCAKLSAgICAxNTY2NzYsIDE1NjY4MywgMTU2NjkwLCAxNTY2OTgsIDE1NjcwNiwgMTU2NzE0LCAxNTY3MjIsIDE1NjczMiwgMTU2NzQyLCAKLSAgICAxNTY3NTIsIDE1Njc2MiwgMTU2NzcxLCAxNTY3ODAsIDE1Njc4OSwgMTU2Nzk4LCAxNTY4MDcsIDE1NjgxNiwgMTU2ODI1LCAKLSAgICAxNTY4MzQsIDE1Njg0MiwgMTU2ODUwLCAxNTY4NTgsIDE1Njg2NiwgMTU2ODc0LCAxNTY4ODIsIDE1Njg5MCwgMTU2ODk4LCAKLSAgICAxNTY5MDgsIDE1NjkxOCwgMTU2OTI4LCAxNTY5MzgsIDE1Njk0MiwgMTU2OTQ2LCAxNTY5NTAsIDE1Njk1NCwgMTU2OTU3LCAKLSAgICAxNTY5NjAsIDE1Njk2MywgMTU2OTY2LCAxNTY5NzAsIDE1Njk3NCwgMTU2OTc4LCAxNTY5ODIsIDE1Njk4NywgMTU2OTkyLCAKLSAgICAxNTY5OTcsIDE1NzAwMiwgMTU3MDA1LCAxNTcwMDgsIDE1NzAxMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3MDE0LCAKLSAgICAxNTcwMTcsIDE1NzAyMCwgMTU3MDIzLCAxNTcwMjYsIDE1NzAzMSwgMTU3MDM2LCAxNTcwNDIsIDE1NzA0OCwgMTU3MDUyLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAxNTcwNTYsIDE1NzA2MiwgMTU3MDY4LCAxNTcwNzQsIDE1NzA4MCwgMTU3MDg4LCAxNTcwOTYsIAotICAgIDE1NzEwNSwgMTU3MTE0LCAxNTcxMTksIDE1NzEyNCwgMTU3MTI5LCAxNTcxMzQsIDE1NzE0MSwgMTU3MTQ4LCAxNTcxNTYsIAotICAgIDE1NzE2NCwgMTU3MTcxLCAxNTcxNzgsIDE1NzE4NSwgMTU3MTkyLCAxNTcyMDEsIDE1NzIxMCwgMTU3MjIwLCAxNTcyMzAsIAotICAgIDE1NzIzNiwgMTU3MjQyLCAxNTcyNDgsIDE1NzI1NCwgMTU3MjYyLCAxNTcyNzAsIDE1NzI3OSwgMTU3Mjg4LCAxNTcyOTYsIAotICAgIDE1NzMwNCwgMTU3MzEyLCAxNTczMjAsIDE1NzMzMCwgMTU3MzQwLCAxNTczNTEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDE1NzM2MiwgMTU3MzY3LCAxNTczNzIsIDE1NzM3NywgMTU3MzgyLCAxNTczOTEsIDE1NzQwMCwgMTU3NDA5LCAxNTc0MTgsIAotICAgIDE1NzQyNSwgMTU3NDMyLCAxNTc0MzksIDE1NzQ0NiwgMTU3NDUzLCAxNTc0NjIsIDE1NzQ3MSwgMTU3NDgwLCAxNTc0ODUsIAotICAgIDE1NzQ5MiwgMTU3NDk5LCAxNTc1MDYsIDE1NzUxMSwgMTU3NTE2LCAxNTc1MjEsIDE1NzUyNiwgMTU3NTMzLCAxNTc1NDAsIAotICAgIDE1NzU0NywgMTU3NTU0LCAxNTc1NjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzU3MCwgMTU3NTc0LCAxNTc1NzgsIDE1NzU4MywgMTU3NTg3LCAKLSAgICAxNTc1OTEsIDE1NzU5NiwgMTU3NjAwLCAxNTc2MDQsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NjE5OSwgCisgICAgMTU2MjAxLCAxNTYyMDMsIDE1NjIwNywgMTU2MjEyLCAxNTYyMTcsIDE1NjIxOSwgMTU2MjI1LCAxNTYyMzAsIDE1NjIzMiwgCisgICAgMTU2MjM4LCAxNTYyNDIsIDE1NjI0NCwgMTU2MjQ4LCAxNTYyNTQsIDE1NjI2MCwgMTU2MjY2LCAxNTYyNzEsIDE1NjI3NiwgCisgICAgMTU2MjgzLCAxNTYyOTAsIDE1NjI5NywgMTU2MzAyLCAxNTYzMDksIDE1NjMxNiwgMTU2MzIzLCAxNTYzMjcsIDE1NjMzNCwgCisgICAgMTU2MzQzLCAxNTYzNTIsIDE1NjM1OSwgMTU2MzY0LCAxNTYzNjgsIDE1NjM3MiwgMTU2Mzc0LCAxNTYzNzcsIDE1NjM4MCwgCisgICAgMTU2Mzg3LCAxNTYzOTQsIDE1NjQwNCwgMTU2NDA5LCAxNTY0MTQsIDE1NjQxOSwgMTU2NDI0LCAxNTY0MjYsIDE1NjQzMiwgCisgICAgMTU2NDM2LCAxNTY0MzgsIDE1NjQ0MCwgMTU2NDQyLCAxNTY0NDQsIDE1NjQ0OCwgMTU2NDUyLCAxNTY0NTYsIDE1NjQ1OCwgCisgICAgMTU2NDYyLCAxNTY0NjQsIDE1NjQ2OCwgMTU2NDcwLCAxNTY0NzIsIDE1NjQ3NCwgMTU2NDc2LCAxNTY0ODEsIDE1NjQ4NiwgCisgICAgMTU2NDg4LCAxNTY0OTQsIDE1NjQ5OCwgMTU2NTAyLCAxNTY1MTAsIDE1NjUxMiwgMTU2NTE0LCAxNTY1MTYsIDE1NjUxOCwgCisgICAgMTU2NTIwLCAxNTY1MjIsIDE1NjUyNCwgMTU2NTI2LCAxNTY1MjgsIDE1NjUzMCwgMTU2NTM0LCAxNTY1MzgsIDE1NjU0MCwgCisgICAgMTU2NTQyLCAxNTY1NDQsIDE1NjU0NiwgMTU2NTQ4LCAxNTY1NTMsIDE1NjU1OSwgMTU2NTYzLCAxNTY1NjcsIDE1NjU3MSwgCisgICAgMTU2NTc1LCAxNTY1ODAsIDE1NjU4NCwgMTU2NTg2LCAxNTY1ODgsIDE1NjU5MiwgMTU2NTk4LCAxNTY2MDAsIDE1NjYwMiwgCisgICAgMTU2NjA0LCAxNTY2MDgsIDE1NjYxNywgMTU2NjIzLCAxNTY2MjcsIDE1NjYzMSwgMTU2NjMzLCAxNTY2MzUsIDE1NjYzOCwgCisgICAgMTU2NjQwLCAxNTY2NDIsIDE1NjY0NCwgMTU2NjQ4LCAxNTY2NTAsIDE1NjY1NCwgMTU2NjU5LCAxNTY2NjEsIDE1NjY2NiwgCisgICAgMTU2NjcyLCAxNTY2NzksIDE1NjY4MywgMTU2Njg3LCAxNTY2OTEsIDE1NjY5NSwgMTU2NzAxLCAxNTY3MDUsIDE1NjcxMywgCisgICAgMTU2NzIwLCAxNTY3MjIsIDE1NjcyNCwgMTU2NzI4LCAxNTY3MzIsIDE1NjczNCwgMTU2NzM4LCAxNTY3NDIsIDE1Njc0NCwgCisgICAgMTU2NzQ4LCAxNTY3NTAsIDE1Njc1NCwgMTU2NzU4LCAxNTY3NjIsIDE1Njc2NiwgMTU2NzcwLCAxNTY3NzQsIDE1Njc3OCwgCisgICAgMTU2NzgyLCAxNTY3ODgsIDE1Njc5MiwgMTU2Nzk2LCAxNTY4MDcsIDE1NjgxMiwgMTU2ODE2LCAxNTY4MjAsIDE1NjgyNiwgCisgICAgMTU2ODMwLCAxNTY4MzQsIDE1NjgzOCwgMTU2ODQ1LCAxNTY4NTIsIDE1Njg1NiwgMTU2ODYwLCAxNTY4NjQsIDE1Njg2OCwgCisgICAgMTU2ODcyLCAxNTY4NzksIDE1Njg4MSwgMTU2ODg1LCAxNTY4ODcsIDE1Njg4OSwgMTU2ODkzLCAxNTY4OTcsIDE1NjkwMSwgCisgICAgMTU2OTAzLCAxNTY5MDcsIDE1NjkxMSwgMTU2OTE1LCAxNTY5MTksIDE1NjkyMywgMTU2OTI1LCAxNTY5MjksIDE1NjkzMSwgCisgICAgMTU2OTM3LCAxNTY5NDAsIDE1Njk0NSwgMTU2OTQ3LCAxNTY5NDksIDE1Njk1MiwgMTU2OTU0LCAxNTY5NTYsIDE1Njk1OSwgCisgICAgMTU2OTY2LCAxNTY5NzMsIDE1Njk4MCwgMTU2OTg1LCAxNTY5ODksIDE1Njk5MSwgMTU2OTkzLCAxNTY5OTUsIDE1Njk5OSwgCisgICAgMTU3MDAxLCAxNTcwMDUsIDE1NzAwOSwgMTU3MDEzLCAxNTcwMTUsIDE1NzAxOSwgMTU3MDIxLCAxNTcwMjUsIDE1NzAyOSwgCisgICAgMTU3MDM2LCAxNTcwMzgsIDE1NzA0NywgMTU3MDU2LCAxNTcwNjUsIDE1NzA3MSwgMTU3MDczLCAxNTcwNzgsIDE1NzA4MiwgCisgICAgMTU3MDg2LCAxNTcwODgsIDE1NzA5NCwgMTU3MDk4LCAxNTcxMDAsIDE1NzEwNCwgMTU3MTA4LCAxNTcxMTAsIDE1NzExNCwgCisgICAgMTU3MTE5LCAxNTcxMjMsIDE1NzEyOSwgMTU3MTM1LCAxNTcxMzcsIDE1NzEzOSwgMTU3MTQ1LCAxNTcxNDcsIDE1NzE1MSwgCisgICAgMTU3MTU1LCAxNTcxNTcsIDE1NzE2MSwgMTU3MTYzLCAxNTcxNjcsIDE1NzE3MSwgMTU3MTc1LCAxNTcxNzgsIDE1NzE4MSwgCisgICAgMTU3MTg2LCAxNTcxOTEsIDE1NzE5MywgMTU3MTk2LCAxNTcxOTgsIDE1NzIwNSwgMTU3MjA5LCAxNTcyMTEsIDE1NzIxOCwgCisgICAgMTU3MjI1LCAxNTcyMzIsIDE1NzIzOSwgMTU3MjQ2LCAxNTcyNDgsIDE1NzI1MCwgMTU3MjUyLCAxNTcyNTYsIDE1NzI1OCwgCisgICAgMTU3MjYwLCAxNTcyNjIsIDE1NzI2NCwgMTU3MjY2LCAxNTcyNjgsIDE1NzI3MCwgMTU3MjcyLCAxNTcyNzQsIDE1NzI3NiwgCisgICAgMTU3Mjc4LCAxNTcyODAsIDE1NzI4MiwgMTU3Mjg0LCAxNTcyODYsIDE1NzI4OCwgMTU3MjkwLCAxNTcyOTIsIDE1NzI5NCwgCisgICAgMTU3Mjk2LCAxNTcyOTgsIDE1NzMwMCwgMTU3MzA0LCAxNTczMDYsIDE1NzMwOCwgMTU3MzEwLCAxNTczMTQsIDE1NzMxNiwgCisgICAgMTU3MzIwLCAxNTczMjIsIDE1NzMyNCwgMTU3MzI4LCAxNTczMzIsIDE1NzMzOCwgMTU3MzQwLCAxNTczNDIsIDE1NzM0NCwgCisgICAgMTU3MzQ2LCAxNTczNTAsIDE1NzM1NCwgMTU3MzU2LCAxNTczNjAsIDE1NzM2NCwgMTU3MzY4LCAxNTczNzIsIDE1NzM3NiwgCisgICAgMTU3MzgwLCAxNTczODQsIDE1NzM4OCwgMTU3MzkyLCAxNTczOTYsIDE1NzQwMCwgMTU3NDA0LCAxNTc0MDgsIDE1NzQxMiwgCisgICAgMTU3NDE2LCAxNTc0MjAsIDE1NzQyNCwgMTU3NDI4LCAxNTc0MzAsIDE1NzQzMiwgMTU3NDM0LCAxNTc0MzYsIDE1NzQzOCwgCisgICAgMTU3NDQwLCAxNTc0NDIsIDE1NzQ1MCwgMTU3NDU4LCAxNTc0NjYsIDE1NzQ3NCwgMTU3NDc5LCAxNTc0ODQsIDE1NzQ4OSwgCisgICAgMTU3NDkzLCAxNTc0OTcsIDE1NzUwMiwgMTU3NTA2LCAxNTc1MDgsIDE1NzUxMiwgMTU3NTE0LCAxNTc1MTYsIDE1NzUxOCwgCisgICAgMTU3NTIwLCAxNTc1MjIsIDE1NzUyNCwgMTU3NTI2LCAxNTc1MzAsIDE1NzUzMiwgMTU3NTM0LCAxNTc1MzYsIDE1NzU0MCwgCisgICAgMTU3NTQ0LCAxNTc1NDgsIDE1NzU1MiwgMTU3NTU2LCAxNTc1NTgsIDE1NzU2NCwgMTU3NTcwLCAxNTc1NzIsIDE1NzU3NCwgCisgICAgMTU3NTc2LCAxNTc1NzgsIDE1NzU4MCwgMTU3NTg5LCAxNTc1OTYsIDE1NzYwMywgMTU3NjA3LCAxNTc2MTQsIDE1NzYxOSwgCisgICAgMTU3NjI2LCAxNTc2MzUsIDE1NzY0MCwgMTU3NjQ0LCAxNTc2NDgsIDE1NzY1MCwgMTU3NjU0LCAxNTc2NTYsIDE1NzY2MCwgCisgICAgMTU3NjY0LCAxNTc2NjYsIDE1NzY3MCwgMTU3Njc0LCAxNTc2NzgsIDE1NzY4MCwgMTU3NjgyLCAxNTc2ODgsIDE1NzY5MCwgCisgICAgMTU3NjkyLCAxNTc2OTQsIDE1NzY5OCwgMTU3NzAyLCAxNTc3MDQsIDE1NzcwOCwgMTU3NzEwLCAxNTc3MTIsIDE1NzcxNSwgCisgICAgMTU3NzE5LCAxNTc3MjEsIDE1NzcyNSwgMTU3NzI3LCAxNTc3MjksIDE1NzczNCwgMTU3NzM2LCAxNTc3NDAsIDE1Nzc0NCwgCisgICAgMTU3NzQ3LCAxNTc3NTEsIDE1Nzc1NSwgMTU3NzU5LCAxNTc3NjMsIDE1Nzc2NywgMTU3NzcxLCAxNTc3NzUsIDE1Nzc4MCwgCisgICAgMTU3Nzg0LCAxNTc3ODgsIDE1Nzc5NywgMTU3ODAyLCAxNTc4MDUsIDE1NzgwNywgMTU3ODEwLCAxNTc4MTMsIDE1NzgxOCwgCisgICAgMTU3ODIwLCAxNTc4MjMsIDE1NzgyOCwgMTU3ODMyLCAxNTc4MzUsIDE1NzgzOSwgMTU3ODQzLCAxNTc4NDYsIDE1Nzg1MSwgCisgICAgMTU3ODU1LCAxNTc4NTksIDE1Nzg2MywgMTU3ODY3LCAxNTc4NzMsIDE1Nzg3OSwgMTU3ODg1LCAxNTc4OTEsIDE1Nzg5NiwgCisgICAgMTU3OTA2LCAxNTc5MDgsIDE1NzkxMiwgMTU3OTE0LCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjYsIDE1NzkzMCwgCisgICAgMTU3OTM1LCAxNTc5NDAsIDE1Nzk0NiwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYyLCAxNTc5NjgsIDE1Nzk3MiwgCisgICAgMTU3OTc0LCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTgyLCAxNTc5ODYsIDE1Nzk5MCwgMTU3OTk0LCAxNTc5OTYsIDE1Nzk5OCwgCisgICAgMTU4MDA1LCAxNTgwMDksIDE1ODAxMiwgMTU4MDE2LCAxNTgwMjAsIDE1ODAyNCwgMTU4MDI2LCAxNTgwMzAsIDE1ODAzMiwgCisgICAgMTU4MDM0LCAxNTgwMzgsIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1NCwgMTU4MDU4LCAxNTgwNjIsIDE1ODA2NiwgCisgICAgMTU4MDY4LCAxNTgwNzEsIDE1ODA3NSwgMTU4MDgxLCAxNTgwOTAsIDE1ODA5OSwgMTU4MTA3LCAxNTgxMTUsIDE1ODExNywgCisgICAgMTU4MTIxLCAxNTgxMjMsIDE1ODEyNywgMTU4MTM4LCAxNTgxNDIsIDE1ODE0OCwgMTU4MTU0LCAxNTgxNTksIDE1ODE2MSwgCisgICAgMTU4MTY2LCAxNTgxNzAsIDE1ODE3MiwgMTU4MTc0LCAxNTgxNzYsIDE1ODE4MCwgMTU4MTg0LCAxNTgxODgsIDE1ODE5MywgCisgICAgMTU4MjAzLCAxNTgyMTgsIDE1ODIyOCwgMTU4MjM4LCAxNTgyNDIsIDE1ODI0NiwgMTU4MjUyLCAxNTgyNTQsIDE1ODI2MiwgCisgICAgMTU4MjcwLCAxNTgyNzIsIDE1ODI3NiwgMTU4MjgyLCAxNTgyODgsIDE1ODI5NSwgMTU4MzAyLCAxNTgzMDQsIDE1ODMwNiwgCisgICAgMTU4MzA5LCAxNTgzMTEsIDE1ODMxNywgMTU4MzE5LCAxNTgzMjIsIDE1ODMyNiwgMTU4MzMyLCAxNTgzMzgsIDE1ODM0OSwgCisgICAgMTU4MzU1LCAxNTgzNjEsIDE1ODM2OSwgMTU4MzczLCAxNTgzODEsIDE1ODM4OSwgMTU4Mzk1LCAxNTg0MDEsIDE1ODQwOCwgCisgICAgMTU4NDEwLCAxNTg0MTQsIDE1ODQxNiwgMTU4NDE4LCAxNTg0MjMsIDE1ODQyNSwgMTU4NDI3LCAxNTg0MjksIDE1ODQzMSwgCisgICAgMTU4NDM1LCAxNTg0NDUsIDE1ODQ1MSwgMTU4NDU1LCAxNTg0NTksIDE1ODQ2MywgMTU4NDY5LCAxNTg0NzUsIDE1ODQ4MSwgCisgICAgMTU4NDg3LCAxNTg0OTIsIDE1ODQ5NywgMTU4NTAzLCAxNTg1MDksIDE1ODUxNiwgMTU4NTIzLCAxNTg1MzEsIDE1ODUzOSwgCisgICAgMTU4NTQ0LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTY1LCAxNTg1NzQsIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgCisgICAgMTU4NTk1LCAxNTg2MDAsIDE1ODYwMiwgMTU4NjA0LCAxNTg2MDYsIDE1ODYxMywgMTU4NjE4LCAxNTg2MjUsIDE1ODYzMiwgCisgICAgMTU4NjM5LCAxNTg2NDcsIDE1ODY1NSwgMTU4NjYzLCAxNTg2NzEsIDE1ODY3OSwgMTU4Njg3LCAxNTg2OTUsIDE1ODcwMywgCisgICAgMTU4NzExLCAxNTg3MTcsIDE1ODcyMywgMTU4NzI5LCAxNTg3MzUsIDE1ODc0MSwgMTU4NzQ3LCAxNTg3NTMsIDE1ODc1OSwgCisgICAgMTU4NzY1LCAxNTg3NzEsIDE1ODc3NywgMTU4NzgzLCAxNTg3ODYsIDE1ODc5NSwgMTU4ODA0LCAxNTg4MDYsIDE1ODgxMywgCisgICAgMTU4ODE3LCAxNTg4MTksIDE1ODgyMSwgMTU4ODI1LCAxNTg4MzEsIDE1ODgzNSwgMTU4ODM3LCAxNTg4NDcsIDE1ODg1MywgCisgICAgMTU4ODU3LCAxNTg4NTksIDE1ODg2MywgMTU4ODY1LCAxNTg4NjksIDE1ODg3NiwgMTU4ODgzLCAxNTg4OTAsIDE1ODg5NSwgCisgICAgMTU4OTAwLCAxNTg5MDksIDE1ODkxNSwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOSwgMTU4OTMzLCAxNTg5NDAsIDE1ODk0NCwgCisgICAgMTU4OTQ3LCAxNTg5NTIsIDE1ODk1OSwgMTU4OTY2LCAxNTg5NzEsIDE1ODk3NiwgMTU4OTgxLCAxNTg5ODgsIDE1ODk5NywgCisgICAgMTU5MDA4LCAxNTkwMTQsIDE1OTAyMCwgMTU5MDI2LCAxNTkwMzYsIDE1OTA1MSwgMTU5MDYwLCAxNTkwNjgsIDE1OTA3NiwgCisgICAgMTU5MDg0LCAxNTkwOTIsIDE1OTEwMCwgMTU5MTA4LCAxNTkxMTYsIDE1OTEyNCwgMTU5MTMyLCAxNTkxNDAsIDE1OTE0OCwgCisgICAgMTU5MTU2LCAxNTkxNTksIDE1OTE2MywgMTU5MTY4LCAxNTkxNzMsIDE1OTE3NSwgMTU5MTc5LCAxNTkxODgsIDE1OTE5NywgCisgICAgMTU5MjA1LCAxNTkyMDksIDE1OTIxMywgMTU5MjE4LCAxNTkyMjMsIDE1OTIyOCwgMTU5MjMwLCAxNTkyMzUsIDE1OTIzOSwgCisgICAgMTU5MjQxLCAxNTkyNDUsIDE1OTI0OSwgMTU5MjU1LCAxNTkyNjAsIDE1OTI2OCwgMTU5MjczLCAxNTkyNzgsIDE1OTI4MywgCisgICAgMTU5MjkwLCAxNTkyOTMsIDE1OTI5NSwgMTU5Mjk4LCAxNTkzMDMsIDE1OTMwOSwgMTU5MzEzLCAxNTkzMTcsIDE1OTMyMywgCisgICAgMTU5MzI5LCAxNTkzMzEsIDE1OTMzNSwgMTU5MzM5LCAxNTkzNDMsIDE1OTM0NywgMTU5MzUxLCAxNTkzNTMsIDE1OTM1NSwgCisgICAgMTU5MzU3LCAxNTkzNTksIDE1OTM2NSwgMTU5MzcxLCAxNTkzNzUsIDE1OTM3NywgMTU5Mzc5LCAxNTkzODEsIDE1OTM5MCwgCisgICAgMTU5Mzk0LCAxNTk0MDEsIDE1OTQwOCwgMTU5NDEwLCAxNTk0MTMsIDE1OTQxNywgMTU5NDIzLCAxNTk0MjcsIDE1OTQzMSwgCisgICAgMTU5NDMzLCAxNTk0NDEsIDE1OTQ0NSwgMTU5NDQ5LCAxNTk0NTQsIDE1OTQ1OSwgMTU5NDY0LCAxNTk0NjksIDE1OTQ3NCwgCisgICAgMTU5NDc5LCAxNTk0ODQsIDE1OTQ4OSwgMTU5NDk0LCAxNTk0OTksIDE1OTUwMywgMTU5NTA5LCAxNTk1MTMsIDE1OTUxOSwgCisgICAgMTU5NTI0LCAxNTk1MzEsIDE1OTUzNywgMTU5NTQ1LCAxNTk1NDksIDE1OTU1NiwgMTU5NTYwLCAxNTk1NjQsIDE1OTU2OCwgCisgICAgMTU5NTczLCAxNTk1NzgsIDE1OTU4MCwgMTU5NTg0LCAxNTk1OTMsIDE1OTYwMSwgMTU5NjA5LCAxNTk2MjIsIDE1OTYzNSwgCisgICAgMTU5NjQ4LCAxNTk2NTUsIDE1OTY2MiwgMTU5NjY2LCAxNTk2NzUsIDE1OTY4MywgMTU5Njg3LCAxNTk2OTYsIDE1OTcwMywgCisgICAgMTU5NzA3LCAxNTk3MTEsIDE1OTcxNSwgMTU5NzE5LCAxNTk3MjYsIDE1OTczMCwgMTU5NzM0LCAxNTk3MzgsIDE1OTc0MiwgCisgICAgMTU5NzQ5LCAxNTk3NTgsIDE1OTc2NywgMTU5Nzc0LCAxNTk3ODYsIDE1OTc5OCwgMTU5ODAyLCAxNTk4MDYsIDE1OTgxMCwgCisgICAgMTU5ODE0LCAxNTk4MTgsIDE1OTgyMiwgMTU5ODMwLCAxNTk4MzgsIDE1OTg0NiwgMTU5ODUwLCAxNTk4NTQsIDE1OTg1OCwgCisgICAgMTU5ODYyLCAxNTk4NjYsIDE1OTg3MCwgMTU5ODc2LCAxNTk4ODIsIDE1OTg4NiwgMTU5ODk3LCAxNTk5MDUsIDE1OTkwOSwgCisgICAgMTU5OTEzLCAxNTk5MTcsIDE1OTkyMSwgMTU5OTI3LCAxNTk5MzQsIDE1OTk0NSwgMTU5OTU1LCAxNTk5NjUsIDE1OTk3NiwgCisgICAgMTU5OTg1LCAxNTk5OTYsIDE2MDAwMiwgMTYwMDA4LCAxNjAwMTQsIDE2MDAyMCwgMTYwMDI2LCAxNjAwMzAsIDE2MDAzNywgCisgICAgMTYwMDQ2LCAxNjAwNTMsIDE2MDA1OSwgMTYwMDYzLCAxNjAwNjcsIDE2MDA3MSwgMTYwMDgwLCAxNjAwOTIsIDE2MDA5NiwgCisgICAgMTYwMTAzLCAxNjAxMTAsIDE2MDExNywgMTYwMTI1LCAxNjAxMzIsIDE2MDE0MCwgMTYwMTQ5LCAxNjAxNTksIDE2MDE2OCwgCisgICAgMTYwMTc4LCAxNjAxODcsIDE2MDE5NywgMTYwMjA2LCAxNjAyMTYsIDE2MDIyNiwgMTYwMjM3LCAxNjAyNDcsIDE2MDI1OCwgCisgICAgMTYwMjY1LCAxNjAyNzMsIDE2MDI4MCwgMTYwMjg4LCAxNjAyOTYsIDE2MDMwNSwgMTYwMzEzLCAxNjAzMjIsIDE2MDMyOSwgCisgICAgMTYwMzQxLCAxNjAzNDgsIDE2MDM2MCwgMTYwMzYzLCAxNjAzNjYsIDE2MDM2OSwgMTYwMzcyLCAxNjAzNzgsIDE2MDM4NSwgCisgICAgMTYwMzkxLCAxNjAzOTgsIDE2MDQwMywgMTYwNDA5LCAxNjA0MjEsIDE2MDQzMSwgMTYwNDQyLCAxNjA0NDcsIDE2MDQ1MiwgCisgICAgMTYwNDU4LCAxNjA0NjMsIDE2MDQ3MCwgMTYwNDc0LCAxNjA0ODAsIDE2MDQ4MiwgMTYwNDg0LCAxNjA0ODgsIDE2MDQ5MiwgCisgICAgMTYwNDk2LCAxNjA1MDUsIDE2MDUwNywgMTYwNTA5LCAxNjA1MTIsIDE2MDUxNCwgMTYwNTE2LCAxNjA1MjAsIDE2MDUyMiwgCisgICAgMTYwNTI2LCAxNjA1MjgsIDE2MDUzMiwgMTYwNTM0LCAxNjA1MzYsIDE2MDU0MCwgMTYwNTQ0LCAxNjA1NTAsIDE2MDU1MiwgCisgICAgMTYwNTU2LCAxNjA1NTgsIDE2MDU2MiwgMTYwNTY2LCAxNjA1NzAsIDE2MDU3NCwgMTYwNTc2LCAxNjA1NzgsIDE2MDU4MiwgCisgICAgMTYwNTg2LCAxNjA1OTAsIDE2MDU5NCwgMTYwNTk2LCAxNjA1OTgsIDE2MDYwMCwgMTYwNjA2LCAxNjA2MTEsIDE2MDYxNCwgCisgICAgMTYwNjIyLCAxNjA2MzAsIDE2MDYzMiwgMTYwNjM3LCAxNjA2NDAsIDE2MDY0NSwgMTYwNjU2LCAxNjA2NjMsIDE2MDY2OCwgCisgICAgMTYwNjczLCAxNjA2NzUsIDE2MDY3OSwgMTYwNjgxLCAxNjA2ODUsIDE2MDY4NywgMTYwNjkxLCAxNjA2OTUsIDE2MDY5OCwgCisgICAgMTYwNzAxLCAxNjA3MDMsIDE2MDcwNiwgMTYwNzA4LCAxNjA3MTIsIDE2MDcxNCwgMTYwNzE2LCAxNjA3MTgsIDE2MDcyMiwgCisgICAgMTYwNzI0LCAxNjA3MjgsIDE2MDczMSwgMTYwNzM4LCAxNjA3NDEsIDE2MDc0NiwgMTYwNzQ5LCAxNjA3NTIsIDE2MDc1NywgCisgICAgMTYwNzYxLCAxNjA3NjUsIDE2MDc2OSwgMTYwNzcxLCAxNjA3NzYsIDE2MDc3OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTYwNzgzLCAxNjA3ODgsIDE2MDc5MCwgMTYwNzk0LCAxNjA3OTYsIDE2MDgwMCwgMTYwODA0LCAKKyAgICAxNjA4MTAsIDE2MDgxNCwgMTYwODE5LCAxNjA4MjIsIDE2MDgyNiwgMTYwODMwLCAwLCAwLCAwLCAxNjA4MzQsIDE2MDgzNiwgCisgICAgMTYwODQyLCAxNjA4NDYsIDE2MDg1MCwgMTYwODUyLCAxNjA4NTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDE2MDg1OCwgMTYwODYzLCAxNjA4NjgsIDE2MDg3MywgMTYwODc4LCAxNjA4ODMsIDE2MDg4OCwgMTYwODk1LCAxNjA5MDIsIAorICAgIDE2MDkwOSwgMTYwOTE2LCAxNjA5MjEsIDE2MDkyNiwgMTYwOTMxLCAxNjA5MzYsIDE2MDk0MywgMTYwOTQ5LCAxNjA5NTYsIAorICAgIDE2MDk2MywgMTYwOTcwLCAxNjA5NzUsIDE2MDk4MCwgMTYwOTg1LCAxNjA5OTAsIDE2MDk5NSwgMTYxMDAyLCAxNjEwMDksIAorICAgIDE2MTAxNCwgMTYxMDE5LCAxNjEwMjYsIDE2MTAzMywgMTYxMDQxLCAxNjEwNDksIDE2MTA1NiwgMTYxMDYzLCAxNjEwNzEsIAorICAgIDE2MTA3OSwgMTYxMDg3LCAxNjEwOTQsIDE2MTEwNCwgMTYxMTE1LCAxNjExMjAsIDE2MTEyNywgMTYxMTM0LCAxNjExNDEsIAorICAgIDE2MTE0OSwgMTYxMTU3LCAxNjExNjgsIDE2MTE3NiwgMTYxMTg0LCAxNjExOTIsIDE2MTE5NywgMTYxMjAyLCAxNjEyMDcsIAorICAgIDE2MTIxMiwgMTYxMjE3LCAxNjEyMjIsIDE2MTIyNywgMTYxMjMyLCAxNjEyMzcsIDE2MTI0MiwgMTYxMjQ3LCAxNjEyNTIsIAorICAgIDE2MTI1OSwgMTYxMjY0LCAxNjEyNjksIDE2MTI3NiwgMTYxMjgxLCAxNjEyODYsIDE2MTI5MSwgMTYxMjk2LCAxNjEzMDEsIAorICAgIDE2MTMwNiwgMTYxMzExLCAxNjEzMTYsIDE2MTMyMSwgMTYxMzI2LCAxNjEzMzEsIDE2MTMzNiwgMTYxMzQzLCAxNjEzNTEsIAorICAgIDE2MTM1NiwgMTYxMzYxLCAxNjEzNjgsIDE2MTM3MywgMTYxMzc4LCAxNjEzODMsIDE2MTM5MCwgMTYxMzk1LCAxNjE0MDIsIAorICAgIDE2MTQwNywgMTYxNDE0LCAxNjE0MTksIDE2MTQyOCwgMTYxNDM3LCAxNjE0NDIsIDE2MTQ0NywgMTYxNDUyLCAxNjE0NTcsIAorICAgIDE2MTQ2MiwgMTYxNDY3LCAxNjE0NzIsIDE2MTQ3NywgMTYxNDgyLCAxNjE0ODcsIDE2MTQ5MiwgMTYxNDk3LCAxNjE1MDIsIAorICAgIDE2MTUxMCwgMTYxNTE4LCAxNjE1MjMsIDE2MTUyOCwgMTYxNTMzLCAxNjE1MzgsIDE2MTU0MywgMTYxNTQ5LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjE1NTUsIDE2MTU2MywgMTYxNTcxLCAxNjE1NzksIDE2MTU4NywgCisgICAgMTYxNTkzLCAxNjE1OTksIDE2MTYwMywgMTYxNjA3LCAxNjE2MTMsIDE2MTYxOSwgMTYxNjI4LCAxNjE2MzIsIDE2MTYzNywgCisgICAgMTYxNjQzLCAxNjE2NDcsIDE2MTY1MiwgMTYxNjU2LCAxNjE2NjAsIDE2MTY2NiwgMTYxNjcyLCAxNjE2ODIsIDE2MTY5MSwgCisgICAgMTYxNjk0LCAxNjE2OTksIDE2MTcwNSwgMTYxNzExLCAxNjE3MjIsIDE2MTczMiwgMTYxNzM2LCAxNjE3NDEsIDE2MTc0NywgCisgICAgMTYxNzUzLCAxNjE3NjIsIDE2MTc2NywgMTYxNzcxLCAxNjE3NzYsIDE2MTc4MCwgMTYxNzg2LCAxNjE3OTIsIDE2MTc5OCwgCisgICAgMTYxODAyLCAxNjE4MDUsIDE2MTgwOSwgMTYxODEyLCAxNjE4MTUsIDE2MTgyMCwgMTYxODI1LCAxNjE4MzIsIDE2MTg0MCwgCisgICAgMTYxODQ3LCAxNjE4NTQsIDE2MTg2MywgMTYxODcyLCAxNjE4NzksIDE2MTg4NywgMTYxODk0LCAxNjE5MDEsIDE2MTkxMCwgCisgICAgMTYxOTE5LCAxNjE5MjYsIDE2MTkzNCwgMTYxOTQxLCAxNjE5NDgsIDE2MTk1NywgMTYxOTY0LCAxNjE5NzIsIDE2MTk3OCwgCisgICAgMTYxOTg3LCAxNjE5OTUsIDE2MjAwNCwgMTYyMDExLCAxNjIwMjEsIDE2MjAzMiwgMTYyMDQwLCAxNjIwNDgsIDE2MjA1NywgCisgICAgMTYyMDY1LCAxNjIwNzMsIDE2MjA4MiwgMTYyMDkwLCAxNjIxMDAsIDE2MjEwOSwgMTYyMTE3LCAxNjIxMjUsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2MjEzNCwgMTYyMTQyLCAxNjIxNTAsIAorICAgIDE2MjE1OCwgMTYyMTY2LCAxNjIxNzUsIDE2MjE4NCwgMTYyMTkzLCAxNjIyMDIsIDE2MjIxMSwgMTYyMjIwLCAxNjIyMjksIAorICAgIDAsIDAsIDAsIDAsIDE2MjIzOCwgMTYyMjQ2LCAxNjIyNTQsIDE2MjI2MiwgMTYyMjcwLCAxNjIyNzcsIDE2MjI4NCwgCisgICAgMTYyMjkxLCAxNjIyOTgsIDE2MjMwNiwgMTYyMzE0LCAxNjIzMjIsIDE2MjMzMCwgMTYyMzQwLCAxNjIzNTAsIDE2MjM2MCwgCisgICAgMTYyMzcwLCAxNjIzNzksIDE2MjM4OCwgMTYyMzk3LCAxNjI0MDYsIDE2MjQxNSwgMTYyNDI0LCAxNjI0MzMsIDE2MjQ0MiwgCisgICAgMTYyNDUwLCAxNjI0NTgsIDE2MjQ2NiwgMTYyNDc0LCAxNjI0ODIsIDE2MjQ5MCwgMTYyNDk4LCAxNjI1MDYsIDE2MjUxNiwgCisgICAgMTYyNTI2LCAxNjI1MzYsIDE2MjU0NiwgMTYyNTUwLCAxNjI1NTQsIDE2MjU1OCwgMTYyNTYyLCAxNjI1NjUsIDE2MjU2OCwgCisgICAgMTYyNTcxLCAxNjI1NzQsIDE2MjU3OCwgMTYyNTgyLCAxNjI1ODYsIDE2MjU5MCwgMTYyNTk1LCAxNjI2MDAsIDE2MjYwNSwgCisgICAgMTYyNjEwLCAxNjI2MTMsIDE2MjYxNiwgMTYyNjE5LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjI2MjIsIDE2MjYyNSwgCisgICAgMTYyNjI4LCAxNjI2MzEsIDE2MjYzNCwgMTYyNjM5LCAxNjI2NDQsIDE2MjY1MCwgMTYyNjU2LCAxNjI2NjAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDE2MjY2NCwgMTYyNjcwLCAxNjI2NzYsIDE2MjY4MiwgMTYyNjg4LCAxNjI2OTYsIDE2MjcwNCwgMTYyNzEzLCAKKyAgICAxNjI3MjIsIDE2MjcyNywgMTYyNzMyLCAxNjI3MzcsIDE2Mjc0MiwgMTYyNzQ5LCAxNjI3NTYsIDE2Mjc2NCwgMTYyNzcyLCAKKyAgICAxNjI3NzksIDE2Mjc4NiwgMTYyNzkzLCAxNjI4MDAsIDE2MjgwOSwgMTYyODE4LCAxNjI4MjgsIDE2MjgzOCwgMTYyODQ0LCAKKyAgICAxNjI4NTAsIDE2Mjg1NiwgMTYyODYyLCAxNjI4NzAsIDE2Mjg3OCwgMTYyODg3LCAxNjI4OTYsIDE2MjkwNCwgMTYyOTEyLCAKKyAgICAxNjI5MjAsIDE2MjkyOCwgMTYyOTM4LCAxNjI5NDgsIDE2Mjk1OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYyOTcwLCAKKyAgICAxNjI5NzUsIDE2Mjk4MCwgMTYyOTg1LCAxNjI5OTAsIDE2Mjk5OSwgMTYzMDA4LCAxNjMwMTcsIDE2MzAyNiwgMTYzMDMzLCAKKyAgICAxNjMwNDAsIDE2MzA0NywgMTYzMDU0LCAxNjMwNjEsIDE2MzA3MCwgMTYzMDc5LCAxNjMwODgsIDE2MzA5MywgMTYzMTAwLCAKKyAgICAxNjMxMDcsIDE2MzExNCwgMTYzMTE5LCAxNjMxMjQsIDE2MzEyOSwgMTYzMTM0LCAxNjMxNDEsIDE2MzE0OCwgMTYzMTU1LCAKKyAgICAxNjMxNjIsIDE2MzE2OSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU3NjEwLCAxNTc2MTIsIAotICAgIDE1NzYxNiwgMTU3NjE4LCAxNTc2MjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE1NzYyNCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgMTYzMTkxLCAxNjMxOTUsIDE2MzE5OSwgCisgICAgMTYzMjA0LCAxNjMyMDgsIDE2MzIxMiwgMTYzMjE4LCAxNjMyMjQsIDE2MzIzMSwgMTYzMjM1LCAxNjMyMzksIDE2MzI0MSwgCisgICAgMCwgMTYzMjUxLCAxNjMyNTgsIDE2MzI2MiwgMTYzMjY2LCAxNjMyNzYsIDE2MzI4MCwgMTYzMjg0LCAxNjMyODgsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE2MzI5MiwgMCwgMCwgMTYzMjk2LCAxNjMyOTgsIDE2MzMwMCwgMTYzMzA2LCAxNjMzMTAsIAorICAgIDE2MzMxMiwgMTYzMzE4LCAxNjMzMjAsIDE2MzMyMiwgMTYzMzI2LCAxNjMzMjgsIDE2MzMzMiwgMCwgMTYzMzM0LCAKKyAgICAxNjMzMzgsIDE2MzM0MywgMTYzMzQ3LCAxNjMzNTEsIDE2MzM1MywgMTYzMzU3LCAxNjMzNTksIDE2MzM2NSwgMTYzMzcxLCAKKyAgICAxNjMzNzcsIDE2MzM4MSwgMCwgMCwgMCwgMCwgMTYzMzg3LCAxNjMzODksIDE2MzM5MSwgMTYzMzkzLCAxNjMzOTUsIAorICAgIDE2MzM5NywgMTYzMzk5LCAxNjM0MDMsIDE2MzQwNywgMTYzNDE0LCAxNjM0MTgsIDE2MzQyMCwgMTYzNDI1LCAxNjM0MjcsIAorICAgIDE2MzQyOSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDMxLCAxNjM0MzMsIDE2MzQzNywgMTYzNDM5LCAxNjM0NDEsIAorICAgIDE2MzQ0NSwgMTYzNDQ3LCAxNjM0NDksIDE2MzQ1MSwgMTYzNDUzLCAxNjM0NTUsIDE2MzQ1OSwgMTYzNDYxLCAxNjM0NjMsIAorICAgIDE2MzQ2NSwgMTYzNDY3LCAxNjM0NjksIDE2MzQ3MSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTYzNDczLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNTc2MjgsIDE1NzYzMiwgMTU3NjM2LCAxNTc2NDAsIAotICAgIDE1NzY0NCwgMTU3NjQ4LCAxNTc2NTIsIDE1NzY1NiwgMTU3NjYwLCAxNTc2NjQsIDE1NzY2OCwgMTU3NjcyLCAxNTc2NzYsIAotICAgIDE1NzY4MCwgMTU3Njg0LCAxNTc2ODgsIDE1NzY5MiwgMTU3Njk2LCAxNTc3MDAsIDE1NzcwNCwgMTU3NzA4LCAxNTc3MTIsIAotICAgIDE1NzcxNiwgMTU3NzIwLCAxNTc3MjQsIDE1NzcyOCwgMTU3NzMyLCAxNTc3MzYsIDE1Nzc0MCwgMTU3NzQ0LCAxNTc3NDgsIAotICAgIDE1Nzc1MiwgMTU3NzU2LCAxNTc3NjAsIDE1Nzc2NCwgMTU3NzY4LCAxNTc3NzIsIDE1Nzc3NiwgMTU3NzgwLCAxNTc3ODQsIAotICAgIDE1Nzc4OCwgMTU3NzkyLCAxNTc3OTYsIDE1NzgwMCwgMTU3ODA0LCAxNTc4MDgsIDE1NzgxMiwgMTU3ODE2LCAxNTc4MjAsIAotICAgIDE1NzgyNCwgMTU3ODI4LCAxNTc4MzIsIDE1NzgzNiwgMTU3ODQwLCAxNTc4NDQsIDE1Nzg0OCwgMTU3ODUyLCAxNTc4NTYsIAotICAgIDE1Nzg2MCwgMTU3ODY0LCAxNTc4NjgsIDE1Nzg3MiwgMTU3ODc2LCAxNTc4ODAsIDE1Nzg4NCwgMTU3ODg4LCAxNTc4OTIsIAotICAgIDE1Nzg5NiwgMTU3OTAwLCAxNTc5MDQsIDE1NzkwOCwgMTU3OTEyLCAxNTc5MTYsIDE1NzkyMCwgMTU3OTI0LCAxNTc5MjgsIAotICAgIDE1NzkzMiwgMTU3OTM2LCAxNTc5NDAsIDE1Nzk0NCwgMTU3OTQ4LCAxNTc5NTIsIDE1Nzk1NiwgMTU3OTYwLCAxNTc5NjQsIAotICAgIDE1Nzk2OCwgMTU3OTcyLCAxNTc5NzYsIDE1Nzk4MCwgMTU3OTg0LCAxNTc5ODgsIDE1Nzk5MiwgMTU3OTk2LCAxNTgwMDAsIAotICAgIDE1ODAwNCwgMTU4MDA4LCAxNTgwMTIsIDE1ODAxNiwgMTU4MDIwLCAxNTgwMjQsIDE1ODAyOCwgMTU4MDMyLCAxNTgwMzYsIAotICAgIDE1ODA0MCwgMTU4MDQ0LCAxNTgwNDgsIDE1ODA1MiwgMTU4MDU2LCAxNTgwNjAsIDE1ODA2NCwgMTU4MDY4LCAxNTgwNzIsIAotICAgIDE1ODA3NiwgMTU4MDgwLCAxNTgwODQsIDE1ODA4OCwgMTU4MDkyLCAxNTgwOTYsIDE1ODEwMCwgMTU4MTA0LCAxNTgxMDgsIAotICAgIDE1ODExMiwgMTU4MTE2LCAxNTgxMjAsIDE1ODEyNCwgMTU4MTI4LCAxNTgxMzIsIDE1ODEzNiwgMTU4MTQwLCAxNTgxNDQsIAotICAgIDE1ODE0OCwgMTU4MTUyLCAxNTgxNTYsIDE1ODE2MCwgMTU4MTY0LCAxNTgxNjgsIDE1ODE3MiwgMTU4MTc2LCAxNTgxODAsIAotICAgIDE1ODE4NCwgMTU4MTg4LCAxNTgxOTIsIDE1ODE5NiwgMTU4MjAwLCAxNTgyMDQsIDE1ODIwOCwgMTU4MjEyLCAxNTgyMTYsIAotICAgIDE1ODIyMCwgMTU4MjI0LCAxNTgyMjgsIDE1ODIzMiwgMTU4MjM2LCAxNTgyNDAsIDE1ODI0NCwgMTU4MjQ4LCAxNTgyNTIsIAotICAgIDE1ODI1NiwgMTU4MjYwLCAxNTgyNjQsIDE1ODI2OCwgMTU4MjcyLCAxNTgyNzYsIDE1ODI4MCwgMTU4Mjg0LCAxNTgyODgsIAotICAgIDE1ODI5MiwgMTU4Mjk2LCAxNTgzMDAsIDE1ODMwNCwgMTU4MzA4LCAxNTgzMTIsIDE1ODMxNiwgMTU4MzIwLCAxNTgzMjQsIAotICAgIDE1ODMyOCwgMTU4MzMyLCAxNTgzMzYsIDE1ODM0MCwgMTU4MzQ0LCAxNTgzNDgsIDE1ODM1MiwgMTU4MzU2LCAxNTgzNjAsIAotICAgIDE1ODM2NCwgMTU4MzY4LCAxNTgzNzIsIDE1ODM3NiwgMTU4MzgwLCAxNTgzODQsIDE1ODM4OCwgMTU4MzkyLCAxNTgzOTYsIAotICAgIDE1ODQwMCwgMTU4NDA0LCAxNTg0MDgsIDE1ODQxMiwgMTU4NDE2LCAxNTg0MjAsIDE1ODQyNCwgMTU4NDI4LCAxNTg0MzIsIAotICAgIDE1ODQzNiwgMTU4NDQwLCAxNTg0NDQsIDE1ODQ0OCwgMTU4NDUyLCAxNTg0NTYsIDE1ODQ2MCwgMTU4NDY0LCAxNTg0NjgsIAotICAgIDE1ODQ3MiwgMTU4NDc2LCAxNTg0ODAsIDE1ODQ4NCwgMTU4NDg4LCAxNTg0OTIsIDE1ODQ5NiwgMTU4NTAwLCAxNTg1MDQsIAotICAgIDE1ODUwOCwgMTU4NTEyLCAxNTg1MTYsIDE1ODUyMCwgMTU4NTI0LCAxNTg1MjgsIDE1ODUzMiwgMTU4NTM2LCAxNTg1NDAsIAotICAgIDE1ODU0NCwgMTU4NTQ4LCAxNTg1NTIsIDE1ODU1NiwgMTU4NTYwLCAxNTg1NjQsIDE1ODU2OCwgMTU4NTcyLCAxNTg1NzYsIAotICAgIDE1ODU4MCwgMTU4NTg0LCAxNTg1ODgsIDE1ODU5MiwgMTU4NTk2LCAxNTg2MDAsIDE1ODYwNCwgMTU4NjA4LCAxNTg2MTIsIAotICAgIDE1ODYxNiwgMTU4NjIwLCAxNTg2MjQsIDE1ODYyOCwgMTU4NjMyLCAxNTg2MzYsIDE1ODY0MCwgMTU4NjQ0LCAxNTg2NDgsIAotICAgIDE1ODY1MiwgMTU4NjU2LCAxNTg2NjAsIDE1ODY2NCwgMTU4NjY4LCAxNTg2NzIsIDE1ODY3NiwgMTU4NjgwLCAxNTg2ODQsIAotICAgIDE1ODY4OCwgMTU4NjkyLCAxNTg2OTYsIDE1ODcwMCwgMTU4NzA0LCAxNTg3MDgsIDE1ODcxMiwgMTU4NzE2LCAxNTg3MjAsIAotICAgIDE1ODcyNCwgMTU4NzI4LCAxNTg3MzIsIDE1ODczNiwgMTU4NzQwLCAxNTg3NDQsIDE1ODc0OCwgMTU4NzUyLCAxNTg3NTYsIAotICAgIDE1ODc2MCwgMTU4NzY0LCAxNTg3NjgsIDE1ODc3MiwgMTU4Nzc2LCAxNTg3ODAsIDE1ODc4NCwgMTU4Nzg4LCAxNTg3OTIsIAotICAgIDE1ODc5NiwgMTU4ODAwLCAxNTg4MDQsIDE1ODgwOCwgMTU4ODEyLCAxNTg4MTYsIDE1ODgyMCwgMTU4ODI0LCAxNTg4MjgsIAotICAgIDE1ODgzMiwgMTU4ODM2LCAxNTg4NDAsIDE1ODg0NCwgMTU4ODQ4LCAxNTg4NTIsIDE1ODg1NiwgMTU4ODYwLCAxNTg4NjQsIAotICAgIDE1ODg2OCwgMTU4ODcyLCAxNTg4NzYsIDE1ODg4MCwgMTU4ODg0LCAxNTg4ODgsIDE1ODg5MiwgMTU4ODk2LCAxNTg5MDAsIAotICAgIDE1ODkwNCwgMTU4OTA4LCAxNTg5MTIsIDE1ODkxNiwgMTU4OTIwLCAxNTg5MjQsIDE1ODkyOCwgMTU4OTMyLCAxNTg5MzYsIAotICAgIDE1ODk0MCwgMTU4OTQ0LCAxNTg5NDgsIDE1ODk1MiwgMTU4OTU2LCAxNTg5NjAsIDE1ODk2NCwgMTU4OTY4LCAxNTg5NzIsIAotICAgIDE1ODk3NiwgMTU4OTgwLCAxNTg5ODQsIDE1ODk4OCwgMTU4OTkyLCAxNTg5OTYsIDE1OTAwMCwgMTU5MDA0LCAxNTkwMDgsIAotICAgIDE1OTAxMiwgMTU5MDE2LCAxNTkwMjAsIDE1OTAyNCwgMTU5MDI4LCAxNTkwMzIsIDE1OTAzNiwgMTU5MDQwLCAxNTkwNDQsIAotICAgIDE1OTA0OCwgMTU5MDUyLCAxNTkwNTYsIDE1OTA2MCwgMTU5MDY0LCAxNTkwNjgsIDE1OTA3MiwgMTU5MDc2LCAxNTkwODAsIAotICAgIDE1OTA4NCwgMTU5MDg4LCAxNTkwOTIsIDE1OTA5NiwgMTU5MTAwLCAxNTkxMDQsIDE1OTEwOCwgMTU5MTEyLCAxNTkxMTYsIAotICAgIDE1OTEyMCwgMTU5MTI0LCAxNTkxMjgsIDE1OTEzMiwgMTU5MTM2LCAxNTkxNDAsIDE1OTE0NCwgMTU5MTQ4LCAxNTkxNTIsIAotICAgIDE1OTE1NiwgMTU5MTYwLCAxNTkxNjQsIDE1OTE2OCwgMTU5MTcyLCAxNTkxNzYsIDE1OTE4MCwgMTU5MTg0LCAxNTkxODgsIAotICAgIDE1OTE5MiwgMTU5MTk2LCAxNTkyMDAsIDE1OTIwNCwgMTU5MjA4LCAxNTkyMTIsIDE1OTIxNiwgMTU5MjIwLCAxNTkyMjQsIAotICAgIDE1OTIyOCwgMTU5MjMyLCAxNTkyMzYsIDE1OTI0MCwgMTU5MjQ0LCAxNTkyNDgsIDE1OTI1MiwgMTU5MjU2LCAxNTkyNjAsIAotICAgIDE1OTI2NCwgMTU5MjY4LCAxNTkyNzIsIDE1OTI3NiwgMTU5MjgwLCAxNTkyODQsIDE1OTI4OCwgMTU5MjkyLCAxNTkyOTYsIAotICAgIDE1OTMwMCwgMTU5MzA0LCAxNTkzMDgsIDE1OTMxMiwgMTU5MzE2LCAxNTkzMjAsIDE1OTMyNCwgMTU5MzI4LCAxNTkzMzIsIAotICAgIDE1OTMzNiwgMTU5MzQwLCAxNTkzNDQsIDE1OTM0OCwgMTU5MzUyLCAxNTkzNTYsIDE1OTM2MCwgMTU5MzY0LCAxNTkzNjgsIAotICAgIDE1OTM3MiwgMTU5Mzc2LCAxNTkzODAsIDE1OTM4NCwgMTU5Mzg4LCAxNTkzOTIsIDE1OTM5NiwgMTU5NDAwLCAxNTk0MDQsIAotICAgIDE1OTQwOCwgMTU5NDEyLCAxNTk0MTYsIDE1OTQyMCwgMTU5NDI0LCAxNTk0MjgsIDE1OTQzMiwgMTU5NDM2LCAxNTk0NDAsIAotICAgIDE1OTQ0NCwgMTU5NDQ4LCAxNTk0NTIsIDE1OTQ1NiwgMTU5NDYwLCAxNTk0NjQsIDE1OTQ2OCwgMTU5NDcyLCAxNTk0NzYsIAotICAgIDE1OTQ4MCwgMTU5NDg0LCAxNTk0ODgsIDE1OTQ5MiwgMTU5NDk2LCAxNTk1MDAsIDE1OTUwNCwgMTU5NTA4LCAxNTk1MTIsIAotICAgIDE1OTUxNiwgMTU5NTIwLCAxNTk1MjQsIDE1OTUyOCwgMTU5NTMyLCAxNTk1MzYsIDE1OTU0MCwgMTU5NTQ0LCAxNTk1NDgsIAotICAgIDE1OTU1MiwgMTU5NTU2LCAxNTk1NjAsIDE1OTU2NCwgMTU5NTY4LCAxNTk1NzIsIDE1OTU3NiwgMTU5NTgwLCAxNTk1ODQsIAotICAgIDE1OTU4OCwgMTU5NTkyLCAxNTk1OTYsIDE1OTYwMCwgMTU5NjA0LCAxNTk2MDgsIDE1OTYxMiwgMTU5NjE2LCAxNTk2MjAsIAotICAgIDE1OTYyNCwgMTU5NjI4LCAxNTk2MzIsIDE1OTYzNiwgMTU5NjQwLCAxNTk2NDQsIDE1OTY0OCwgMTU5NjUyLCAxNTk2NTYsIAotICAgIDE1OTY2MCwgMTU5NjY0LCAxNTk2NjgsIDE1OTY3MiwgMTU5Njc2LCAxNTk2ODAsIDE1OTY4NCwgMTU5Njg4LCAxNTk2OTIsIAotICAgIDE1OTY5NiwgMTU5NzAwLCAxNTk3MDQsIDE1OTcwOCwgMTU5NzEyLCAxNTk3MTYsIDE1OTcyMCwgMTU5NzI0LCAxNTk3MjgsIAotICAgIDE1OTczMiwgMTU5NzM2LCAxNTk3NDAsIDE1OTc0NCwgMTU5NzQ4LCAxNTk3NTIsIDE1OTc1NiwgMTU5NzYwLCAxNTk3NjQsIAotICAgIDE1OTc2OCwgMTU5NzcyLCAxNTk3NzYsIDE1OTc4MCwgMTU5Nzg0LCAxNTk3ODgsIDE1OTc5MiwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIAorICAgIDE2MzUwOSwgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIAorICAgIDE2MzU0NSwgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIAorICAgIDE2MzU4MSwgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIAorICAgIDE2MzYxNywgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIAorICAgIDE2MzY1MywgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIAorICAgIDE2MzY4OSwgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIAorICAgIDE2MzcyNSwgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIAorICAgIDE2Mzc2MSwgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIAorICAgIDE2Mzc5NywgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIAorICAgIDE2MzgzMywgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIAorICAgIDE2Mzg2OSwgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIAorICAgIDE2MzkwNSwgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIAorICAgIDE2Mzk0MSwgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIAorICAgIDE2Mzk3NywgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIAorICAgIDE2NDAxMywgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIAorICAgIDE2NDA0OSwgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIAorICAgIDE2NDA4NSwgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIAorICAgIDE2NDEyMSwgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIAorICAgIDE2NDE1NywgMTY0MTYxLCAxNjQxNjUsIDE2NDE2OSwgMTY0MTczLCAxNjQxNzcsIDE2NDE4MSwgMTY0MTg1LCAxNjQxODksIAorICAgIDE2NDE5MywgMTY0MTk3LCAxNjQyMDEsIDE2NDIwNSwgMTY0MjA5LCAxNjQyMTMsIDE2NDIxNywgMTY0MjIxLCAxNjQyMjUsIAorICAgIDE2NDIyOSwgMTY0MjMzLCAxNjQyMzcsIDE2NDI0MSwgMTY0MjQ1LCAxNjQyNDksIDE2NDI1MywgMTY0MjU3LCAxNjQyNjEsIAorICAgIDE2NDI2NSwgMTY0MjY5LCAxNjQyNzMsIDE2NDI3NywgMTY0MjgxLCAxNjQyODUsIDE2NDI4OSwgMTY0MjkzLCAxNjQyOTcsIAorICAgIDE2NDMwMSwgMTY0MzA1LCAxNjQzMDksIDE2NDMxMywgMTY0MzE3LCAxNjQzMjEsIDE2NDMyNSwgMTY0MzI5LCAxNjQzMzMsIAorICAgIDE2NDMzNywgMTY0MzQxLCAxNjQzNDUsIDE2NDM0OSwgMTY0MzUzLCAxNjQzNTcsIDE2NDM2MSwgMTY0MzY1LCAxNjQzNjksIAorICAgIDE2NDM3MywgMTY0Mzc3LCAxNjQzODEsIDE2NDM4NSwgMTY0Mzg5LCAxNjQzOTMsIDE2NDM5NywgMTY0NDAxLCAxNjQ0MDUsIAorICAgIDE2NDQwOSwgMTY0NDEzLCAxNjQ0MTcsIDE2NDQyMSwgMTY0NDI1LCAxNjQ0MjksIDE2NDQzMywgMTY0NDM3LCAxNjQ0NDEsIAorICAgIDE2NDQ0NSwgMTY0NDQ5LCAxNjQ0NTMsIDE2NDQ1NywgMTY0NDYxLCAxNjQ0NjUsIDE2NDQ2OSwgMTY0NDczLCAxNjQ0NzcsIAorICAgIDE2NDQ4MSwgMTY0NDg1LCAxNjQ0ODksIDE2NDQ5MywgMTY0NDk3LCAxNjQ1MDEsIDE2NDUwNSwgMTY0NTA5LCAxNjQ1MTMsIAorICAgIDE2NDUxNywgMTY0NTIxLCAxNjQ1MjUsIDE2NDUyOSwgMTY0NTMzLCAxNjQ1MzcsIDE2NDU0MSwgMTY0NTQ1LCAxNjQ1NDksIAorICAgIDE2NDU1MywgMTY0NTU3LCAxNjQ1NjEsIDE2NDU2NSwgMTY0NTY5LCAxNjQ1NzMsIDE2NDU3NywgMTY0NTgxLCAxNjQ1ODUsIAorICAgIDE2NDU4OSwgMTY0NTkzLCAxNjQ1OTcsIDE2NDYwMSwgMTY0NjA1LCAxNjQ2MDksIDE2NDYxMywgMTY0NjE3LCAxNjQ2MjEsIAorICAgIDE2NDYyNSwgMTY0NjI5LCAxNjQ2MzMsIDE2NDYzNywgMTY0NjQxLCAxNjQ2NDUsIDE2NDY0OSwgMTY0NjUzLCAxNjQ2NTcsIAorICAgIDE2NDY2MSwgMTY0NjY1LCAxNjQ2NjksIDE2NDY3MywgMTY0Njc3LCAxNjQ2ODEsIDE2NDY4NSwgMTY0Njg5LCAxNjQ2OTMsIAorICAgIDE2NDY5NywgMTY0NzAxLCAxNjQ3MDUsIDE2NDcwOSwgMTY0NzEzLCAxNjQ3MTcsIDE2NDcyMSwgMTY0NzI1LCAxNjQ3MjksIAorICAgIDE2NDczMywgMTY0NzM3LCAxNjQ3NDEsIDE2NDc0NSwgMTY0NzQ5LCAxNjQ3NTMsIDE2NDc1NywgMTY0NzYxLCAxNjQ3NjUsIAorICAgIDE2NDc2OSwgMTY0NzczLCAxNjQ3NzcsIDE2NDc4MSwgMTY0Nzg1LCAxNjQ3ODksIDE2NDc5MywgMTY0Nzk3LCAxNjQ4MDEsIAorICAgIDE2NDgwNSwgMTY0ODA5LCAxNjQ4MTMsIDE2NDgxNywgMTY0ODIxLCAxNjQ4MjUsIDE2NDgyOSwgMTY0ODMzLCAxNjQ4MzcsIAorICAgIDE2NDg0MSwgMTY0ODQ1LCAxNjQ4NDksIDE2NDg1MywgMTY0ODU3LCAxNjQ4NjEsIDE2NDg2NSwgMTY0ODY5LCAxNjQ4NzMsIAorICAgIDE2NDg3NywgMTY0ODgxLCAxNjQ4ODUsIDE2NDg4OSwgMTY0ODkzLCAxNjQ4OTcsIDE2NDkwMSwgMTY0OTA1LCAxNjQ5MDksIAorICAgIDE2NDkxMywgMTY0OTE3LCAxNjQ5MjEsIDE2NDkyNSwgMTY0OTI5LCAxNjQ5MzMsIDE2NDkzNywgMTY0OTQxLCAxNjQ5NDUsIAorICAgIDE2NDk0OSwgMTY0OTUzLCAxNjQ5NTcsIDE2NDk2MSwgMTY0OTY1LCAxNjQ5NjksIDE2NDk3MywgMTY0OTc3LCAxNjQ5ODEsIAorICAgIDE2NDk4NSwgMTY0OTg5LCAxNjQ5OTMsIDE2NDk5NywgMTY1MDAxLCAxNjUwMDUsIDE2NTAwOSwgMTY1MDEzLCAxNjUwMTcsIAorICAgIDE2NTAyMSwgMTY1MDI1LCAxNjUwMjksIDE2NTAzMywgMTY1MDM3LCAxNjUwNDEsIDE2NTA0NSwgMTY1MDQ5LCAxNjUwNTMsIAorICAgIDE2NTA1NywgMTY1MDYxLCAxNjUwNjUsIDE2NTA2OSwgMTY1MDczLCAxNjUwNzcsIDE2NTA4MSwgMTY1MDg1LCAxNjUwODksIAorICAgIDE2NTA5MywgMTY1MDk3LCAxNjUxMDEsIDE2NTEwNSwgMTY1MTA5LCAxNjUxMTMsIDE2NTExNywgMTY1MTIxLCAxNjUxMjUsIAorICAgIDE2NTEyOSwgMTY1MTMzLCAxNjUxMzcsIDE2NTE0MSwgMTY1MTQ1LCAxNjUxNDksIDE2NTE1MywgMTY1MTU3LCAxNjUxNjEsIAorICAgIDE2NTE2NSwgMTY1MTY5LCAxNjUxNzMsIDE2NTE3NywgMTY1MTgxLCAxNjUxODUsIDE2NTE4OSwgMTY1MTkzLCAxNjUxOTcsIAorICAgIDE2NTIwMSwgMTY1MjA1LCAxNjUyMDksIDE2NTIxMywgMTY1MjE3LCAxNjUyMjEsIDE2NTIyNSwgMTY1MjI5LCAxNjUyMzMsIAorICAgIDE2NTIzNywgMTY1MjQxLCAxNjUyNDUsIDE2NTI0OSwgMTY1MjUzLCAxNjUyNTcsIDE2NTI2MSwgMTY1MjY1LCAxNjUyNjksIAorICAgIDE2NTI3MywgMTY1Mjc3LCAxNjUyODEsIDE2NTI4NSwgMTY1Mjg5LCAxNjUyOTMsIDE2NTI5NywgMTY1MzAxLCAxNjUzMDUsIAorICAgIDE2NTMwOSwgMTY1MzEzLCAxNjUzMTcsIDE2NTMyMSwgMTY1MzI1LCAxNjUzMjksIDE2NTMzMywgMTY1MzM3LCAxNjUzNDEsIAorICAgIDE2NTM0NSwgMTY1MzQ5LCAxNjUzNTMsIDE2NTM1NywgMTY1MzYxLCAxNjUzNjUsIDE2NTM2OSwgMTY1MzczLCAxNjUzNzcsIAorICAgIDE2NTM4MSwgMTY1Mzg1LCAxNjUzODksIDE2NTM5MywgMTY1Mzk3LCAxNjU0MDEsIDE2NTQwNSwgMTY1NDA5LCAxNjU0MTMsIAorICAgIDE2NTQxNywgMTY1NDIxLCAxNjU0MjUsIDE2NTQyOSwgMTY1NDMzLCAxNjU0MzcsIDE2NTQ0MSwgMTY1NDQ1LCAxNjU0NDksIAorICAgIDE2NTQ1MywgMTY1NDU3LCAxNjU0NjEsIDE2NTQ2NSwgMTY1NDY5LCAxNjU0NzMsIDE2NTQ3NywgMTY1NDgxLCAxNjU0ODUsIAorICAgIDE2NTQ4OSwgMTY1NDkzLCAxNjU0OTcsIDE2NTUwMSwgMTY1NTA1LCAxNjU1MDksIDE2NTUxMywgMTY1NTE3LCAxNjU1MjEsIAorICAgIDE2NTUyNSwgMTY1NTI5LCAxNjU1MzMsIDE2NTUzNywgMTY1NTQxLCAxNjU1NDUsIDE2NTU0OSwgMTY1NTUzLCAxNjU1NTcsIAorICAgIDE2NTU2MSwgMTY1NTY1LCAxNjU1NjksIDE2NTU3MywgMTY1NTc3LCAxNjU1ODEsIDE2NTU4NSwgMTY1NTg5LCAxNjU1OTMsIAorICAgIDE2NTU5NywgMTY1NjAxLCAxNjU2MDUsIDE2NTYwOSwgMTY1NjEzLCAxNjU2MTcsIDE2NTYyMSwgMTY1NjI1LCAxNjU2MjksIAorICAgIDE2NTYzMywgMTY1NjM3LCAxNjU2NDEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIApAQCAtMjAwNzgsMzE4NiArMjEzNTMsMzI3OSBAQAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDE1OTc5NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTU5ODAwLCAxNTk4MDMsIDE1OTgwNywgMTU5ODExLCAKLSAgICAxNTk4MTQsIDE1OTgxOCwgMTU5ODIyLCAxNTk4MjUsIDE1OTgyOCwgMTU5ODMyLCAxNTk4MzYsIDE1OTgzOSwgMTU5ODQyLCAKLSAgICAxNTk4NDUsIDE1OTg0OCwgMTU5ODUzLCAxNTk4NTYsIDE1OTg2MCwgMTU5ODYzLCAxNTk4NjYsIDE1OTg2OSwgMTU5ODcyLCAKLSAgICAxNTk4NzUsIDE1OTg3OCwgMTU5ODgyLCAxNTk4ODUsIDE1OTg4OSwgMTU5ODkyLCAxNTk4OTUsIDE1OTg5OSwgMTU5OTAzLCAKLSAgICAxNTk5MDcsIDE1OTkxMSwgMTU5OTE2LCAxNTk5MjEsIDE1OTkyNywgMTU5OTMzLCAxNTk5MzksIDE1OTk0NCwgMTU5OTUwLCAKLSAgICAxNTk5NTYsIDE1OTk2MiwgMTU5OTY3LCAxNTk5NzMsIDE1OTk3OSwgMTU5OTg0LCAxNTk5OTAsIDE1OTk5NiwgMTYwMDAxLCAKLSAgICAxNjAwMDcsIDE2MDAxMywgMTYwMDE4LCAxNjAwMjMsIDE2MDAyOSwgMTYwMDM0LCAxNjAwNDAsIDE2MDA0NiwgMTYwMDUyLCAKLSAgICAxNjAwNTgsIDE2MDA2NCwgMTYwMDY4LCAxNjAwNzMsIDE2MDA3NywgMTYwMDgyLCAxNjAwODYsIDE2MDA5MSwgMTYwMDk2LCAKLSAgICAxNjAxMDIsIDE2MDEwOCwgMTYwMTE0LCAxNjAxMTksIDE2MDEyNSwgMTYwMTMxLCAxNjAxMzcsIDE2MDE0MiwgMTYwMTQ4LCAKLSAgICAxNjAxNTQsIDE2MDE1OSwgMTYwMTY1LCAxNjAxNzEsIDE2MDE3NiwgMTYwMTgyLCAxNjAxODgsIDE2MDE5MywgMTYwMTk4LCAKLSAgICAxNjAyMDQsIDE2MDIwOSwgMTYwMjE1LCAxNjAyMjEsIDE2MDIyNywgMTYwMjMzLCAxNjAyMzksIDE2MDI0NCwgMTYwMjQ4LCAKLSAgICAxNjAyNTMsIDE2MDI1NiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTY1NjQ1LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAxNjU2NDksIDE2NTY1MiwgMTY1NjU2LCAxNjU2NjAsIDE2NTY2MywgMTY1NjY3LCAxNjU2NzEsIDE2NTY3NCwgCisgICAgMTY1Njc3LCAxNjU2ODEsIDE2NTY4NSwgMTY1Njg4LCAxNjU2OTEsIDE2NTY5NCwgMTY1Njk3LCAxNjU3MDIsIDE2NTcwNSwgCisgICAgMTY1NzA5LCAxNjU3MTIsIDE2NTcxNSwgMTY1NzE4LCAxNjU3MjEsIDE2NTcyNCwgMTY1NzI3LCAxNjU3MzEsIDE2NTczNCwgCisgICAgMTY1NzM4LCAxNjU3NDEsIDE2NTc0NCwgMTY1NzQ4LCAxNjU3NTIsIDE2NTc1NiwgMTY1NzYwLCAxNjU3NjUsIDE2NTc3MCwgCisgICAgMTY1Nzc2LCAxNjU3ODIsIDE2NTc4OCwgMTY1NzkzLCAxNjU3OTksIDE2NTgwNSwgMTY1ODExLCAxNjU4MTYsIDE2NTgyMiwgCisgICAgMTY1ODI4LCAxNjU4MzMsIDE2NTgzOSwgMTY1ODQ1LCAxNjU4NTAsIDE2NTg1NiwgMTY1ODYyLCAxNjU4NjcsIDE2NTg3MywgCisgICAgMTY1ODc5LCAxNjU4ODQsIDE2NTg5MCwgMTY1ODk2LCAxNjU5MDIsIDE2NTkwOCwgMTY1OTE0LCAxNjU5MTgsIDE2NTkyMywgCisgICAgMTY1OTI3LCAxNjU5MzIsIDE2NTkzNiwgMTY1OTQxLCAxNjU5NDYsIDE2NTk1MiwgMTY1OTU4LCAxNjU5NjQsIDE2NTk2OSwgCisgICAgMTY1OTc1LCAxNjU5ODEsIDE2NTk4NywgMTY1OTkyLCAxNjU5OTgsIDE2NjAwNCwgMTY2MDA5LCAxNjYwMTUsIDE2NjAyMSwgCisgICAgMTY2MDI2LCAxNjYwMzIsIDE2NjAzOCwgMTY2MDQzLCAxNjYwNDksIDE2NjA1NSwgMTY2MDYwLCAxNjYwNjYsIDE2NjA3MiwgCisgICAgMTY2MDc4LCAxNjYwODQsIDE2NjA5MCwgMTY2MDk1LCAxNjYwOTksIDE2NjEwNCwgMTY2MTA3LCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjAyNjAsIDE2MDI2MywgMTYwMjY2LCAxNjAyNjksIAotICAgIDE2MDI3MiwgMTYwMjc1LCAxNjAyNzgsIDE2MDI4MSwgMTYwMjg0LCAxNjAyODcsIDE2MDI5MCwgMTYwMjkzLCAxNjAyOTYsIAotICAgIDE2MDI5OSwgMTYwMzAyLCAxNjAzMDUsIDE2MDMwOCwgMTYwMzExLCAxNjAzMTQsIDE2MDMxNywgMTYwMzIwLCAxNjAzMjMsIAotICAgIDE2MDMyNiwgMTYwMzI5LCAxNjAzMzIsIDE2MDMzNSwgMTYwMzM4LCAxNjAzNDEsIDE2MDM0NCwgMTYwMzQ3LCAxNjAzNTAsIAotICAgIDE2MDM1MywgMTYwMzU2LCAxNjAzNTksIDE2MDM2MiwgMTYwMzY1LCAxNjAzNjgsIDE2MDM3MSwgMTYwMzc0LCAxNjAzNzcsIAotICAgIDE2MDM4MCwgMTYwMzgzLCAxNjAzODYsIDE2MDM4OSwgMTYwMzkyLCAxNjAzOTUsIDE2MDM5OCwgMTYwNDAxLCAxNjA0MDQsIAotICAgIDE2MDQwNywgMTYwNDEwLCAxNjA0MTMsIDE2MDQxNiwgMTYwNDE5LCAxNjA0MjIsIDE2MDQyNSwgMTYwNDI4LCAxNjA0MzEsIAotICAgIDE2MDQzNCwgMTYwNDM3LCAxNjA0NDAsIDE2MDQ0MywgMTYwNDQ2LCAxNjA0NDksIDE2MDQ1MiwgMTYwNDU1LCAxNjA0NTgsIAotICAgIDE2MDQ2MSwgMTYwNDY0LCAxNjA0NjcsIDE2MDQ3MCwgMTYwNDczLCAxNjA0NzYsIDE2MDQ3OSwgMTYwNDgyLCAxNjA0ODUsIAotICAgIDE2MDQ4OCwgMTYwNDkxLCAxNjA0OTQsIDE2MDQ5NywgMTYwNTAwLCAxNjA1MDMsIDE2MDUwNiwgMTYwNTA5LCAxNjA1MTIsIAotICAgIDE2MDUxNSwgMTYwNTE4LCAxNjA1MjEsIDE2MDUyNCwgMTYwNTI3LCAxNjA1MzAsIDE2MDUzMywgMTYwNTM2LCAxNjA1MzksIAotICAgIDE2MDU0MiwgMTYwNTQ1LCAxNjA1NDgsIDE2MDU1MSwgMTYwNTU0LCAxNjA1NTcsIDE2MDU2MCwgMTYwNTYzLCAxNjA1NjYsIAotICAgIDE2MDU2OSwgMTYwNTcyLCAxNjA1NzUsIDE2MDU3OCwgMTYwNTgxLCAxNjA1ODQsIDE2MDU4NywgMTYwNTkwLCAxNjA1OTMsIAotICAgIDE2MDU5NiwgMTYwNTk5LCAxNjA2MDIsIDE2MDYwNSwgMTYwNjA4LCAxNjA2MTEsIDE2MDYxNCwgMTYwNjE3LCAxNjA2MjAsIAotICAgIDE2MDYyMywgMTYwNjI2LCAxNjA2MjksIDE2MDYzMiwgMTYwNjM1LCAxNjA2MzgsIDE2MDY0MSwgMTYwNjQ0LCAxNjA2NDcsIAotICAgIDE2MDY1MCwgMTYwNjUzLCAxNjA2NTYsIDE2MDY1OSwgMTYwNjYyLCAxNjA2NjUsIDE2MDY2OCwgMTYwNjcxLCAxNjA2NzQsIAotICAgIDE2MDY3NywgMTYwNjgwLCAxNjA2ODMsIDE2MDY4NiwgMTYwNjg5LCAxNjA2OTIsIDE2MDY5NSwgMTYwNjk4LCAxNjA3MDEsIAotICAgIDE2MDcwNCwgMTYwNzA3LCAxNjA3MTAsIDE2MDcxMywgMTYwNzE2LCAxNjA3MTksIDE2MDcyMiwgMTYwNzI1LCAxNjA3MjgsIAotICAgIDE2MDczMSwgMTYwNzM0LCAxNjA3MzcsIDE2MDc0MCwgMTYwNzQzLCAxNjA3NDYsIDE2MDc0OSwgMTYwNzUyLCAxNjA3NTUsIAotICAgIDE2MDc1OCwgMTYwNzYxLCAxNjA3NjQsIDE2MDc2NywgMTYwNzcwLCAxNjA3NzMsIDE2MDc3NiwgMTYwNzc5LCAxNjA3ODIsIAotICAgIDE2MDc4NSwgMTYwNzg4LCAxNjA3OTEsIDE2MDc5NCwgMTYwNzk3LCAxNjA4MDAsIDE2MDgwMywgMTYwODA2LCAxNjA4MDksIAotICAgIDE2MDgxMiwgMTYwODE1LCAxNjA4MTgsIDE2MDgyMSwgMTYwODI0LCAxNjA4MjcsIDE2MDgzMCwgMTYwODMzLCAxNjA4MzYsIAotICAgIDE2MDgzOSwgMTYwODQyLCAxNjA4NDUsIDE2MDg0OCwgMTYwODUxLCAxNjA4NTQsIDE2MDg1NywgMTYwODYwLCAxNjA4NjMsIAotICAgIDE2MDg2NiwgMTYwODY5LCAxNjA4NzIsIDE2MDg3NSwgMTYwODc4LCAxNjA4ODEsIDE2MDg4NCwgMTYwODg3LCAxNjA4OTAsIAotICAgIDE2MDg5MywgMTYwODk2LCAxNjA4OTksIDE2MDkwMiwgMTYwOTA1LCAxNjA5MDgsIDE2MDkxMSwgMTYwOTE0LCAxNjA5MTcsIAotICAgIDE2MDkyMCwgMTYwOTIzLCAxNjA5MjYsIDE2MDkyOSwgMTYwOTMyLCAxNjA5MzUsIDE2MDkzOCwgMTYwOTQxLCAxNjA5NDQsIAotICAgIDE2MDk0NywgMTYwOTUwLCAxNjA5NTMsIDE2MDk1NiwgMTYwOTU5LCAxNjA5NjIsIDE2MDk2NSwgMTYwOTY4LCAxNjA5NzEsIAotICAgIDE2MDk3NCwgMTYwOTc3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxNjA5ODAsIAotICAgIDE2MDk4MiwgMTYwOTg0LCAxNjA5ODksIDE2MDk5MSwgMTYwOTk2LCAxNjA5OTgsIDE2MTAwMywgMTYxMDA1LCAxNjEwMTAsIAotICAgIDE2MTAxMiwgMTYxMDE0LCAxNjEwMTYsIDE2MTAxOCwgMTYxMDIwLCAxNjEwMjIsIDE2MTAyNCwgMTYxMDI2LCAxNjEwMjgsIAotICAgIDE2MTAzMSwgMTYxMDM1LCAxNjEwMzcsIDE2MTAzOSwgMTYxMDQzLCAxNjEwNDcsIDE2MTA1MiwgMTYxMDU0LCAxNjEwNTYsIAotICAgIDE2MTA1OCwgMTYxMDYyLCAxNjEwNjUsIDE2MTA2NywgMTYxMDcxLCAxNjEwNzMsIDE2MTA3NywgMTYxMDc5LCAxNjEwODMsIAotICAgIDE2MTA4NiwgMTYxMDg4LCAxNjEwOTIsIDE2MTA5NiwgMTYxMDk4LCAxNjExMDQsIDE2MTEwNiwgMTYxMTExLCAxNjExMTMsIAotICAgIDE2MTExOCwgMTYxMTIwLCAxNjExMjUsIDE2MTEyNywgMTYxMTMyLCAxNjExMzQsIDE2MTEzNywgMTYxMTM5LCAxNjExNDMsIAotICAgIDE2MTE0NSwgMTYxMTUyLCAxNjExNTQsIDE2MTE1NiwgMTYxMTU4LCAxNjExNjMsIDE2MTE2NSwgMTYxMTY3LCAxNjExNjksIAotICAgIDE2MTE3MSwgMTYxMTczLCAxNjExNzgsIDE2MTE4MiwgMTYxMTg0LCAxNjExODksIDE2MTE5MywgMTYxMTk1LCAxNjEyMDAsIAotICAgIDE2MTIwNCwgMTYxMjA2LCAxNjEyMTEsIDE2MTIxNSwgMTYxMjE3LCAxNjEyMTksIDE2MTIyMSwgMTYxMjIzLCAxNjEyMjcsIAotICAgIDE2MTIyOSwgMTYxMjM0LCAxNjEyMzYsIDE2MTI0MiwgMTYxMjQ0LCAxNjEyNTAsIDE2MTI1MiwgMTYxMjU0LCAxNjEyNTYsIAotICAgIDE2MTI2MCwgMTYxMjYyLCAxNjEyNjksIDE2MTI3MSwgMTYxMjc4LCAxNjEyODAsIDE2MTI4NSwgMTYxMjkxLCAxNjEyOTMsIAotICAgIDE2MTI5OSwgMTYxMzA2LCAxNjEzMDgsIDE2MTMxNCwgMTYxMzE5LCAxNjEzMjEsIDE2MTMyNywgMTYxMzMzLCAxNjEzMzUsIAotICAgIDE2MTM0MSwgMTYxMzQ3LCAxNjEzNDksIDE2MTM1NSwgMTYxMzU5LCAxNjEzNjEsIDE2MTM2NiwgMTYxMzY4LCAxNjEzNzAsIAotICAgIDE2MTM3NSwgMTYxMzc3LCAxNjEzNzksIDE2MTM4NSwgMTYxMzg3LCAxNjEzOTIsIDE2MTM5NiwgMTYxMzk4LCAxNjE0MDMsIAotICAgIDE2MTQwNywgMTYxNDA5LCAxNjE0MTUsIDE2MTQxNywgMTYxNDIxLCAxNjE0MjMsIDE2MTQyNywgMTYxNDI5LCAxNjE0MzYsIAotICAgIDE2MTQ0MywgMTYxNDQ1LCAxNjE0NTIsIDE2MTQ1OSwgMTYxNDYxLCAxNjE0NjYsIDE2MTQ2OCwgMTYxNDc1LCAxNjE0NzcsIAotICAgIDE2MTQ4MiwgMTYxNDg0LCAxNjE0OTAsIDE2MTQ5MiwgMTYxNDk2LCAxNjE0OTgsIDE2MTUwNCwgMTYxNTA2LCAxNjE1MTAsIAotICAgIDE2MTUxMiwgMTYxNTE4LCAxNjE1MjAsIDE2MTUyMiwgMTYxNTI0LCAxNjE1MjksIDE2MTUzNCwgMTYxNTM2LCAxNjE1MzgsIAotICAgIDE2MTU0OCwgMTYxNTUyLCAxNjE1NTksIDE2MTU2NiwgMTYxNTcxLCAxNjE1NzYsIDE2MTU4OCwgMTYxNTkwLCAxNjE1OTIsIAotICAgIDE2MTU5NCwgMTYxNTk2LCAxNjE1OTgsIDE2MTYwMCwgMTYxNjAyLCAxNjE2MDQsIDE2MTYwNiwgMTYxNjA4LCAxNjE2MTAsIAotICAgIDE2MTYxMiwgMTYxNjE0LCAxNjE2MTYsIDE2MTYxOCwgMTYxNjIwLCAxNjE2MjIsIDE2MTYyNCwgMTYxNjI2LCAxNjE2MjgsIAotICAgIDE2MTYzMCwgMTYxNjM2LCAxNjE2NDMsIDE2MTY0OCwgMTYxNjU2LCAxNjE2NjQsIDE2MTY2OSwgMTYxNjgwLCAxNjE2ODIsIAotICAgIDE2MTY4NCwgMTYxNjg2LCAxNjE2ODgsIDE2MTY5MCwgMTYxNjkyLCAxNjE2OTQsIDE2MTY5NiwgMTYxNjk4LCAxNjE3MDAsIAotICAgIDE2MTcwMiwgMTYxNzA0LCAxNjE3MDYsIDE2MTcwOCwgMTYxNzEwLCAxNjE3MTIsIDE2MTcxNywgMTYxNzE5LCAxNjE3MjEsIAotICAgIDE2MTcyNywgMTYxNzM5LCAxNjE3NTAsIDE2MTc1MiwgMTYxNzU0LCAxNjE3NTYsIDE2MTc1OCwgMTYxNzYwLCAxNjE3NjIsIAotICAgIDE2MTc2NCwgMTYxNzY2LCAxNjE3NjgsIDE2MTc3MCwgMTYxNzcyLCAxNjE3NzQsIDE2MTc3NiwgMTYxNzc4LCAxNjE3ODAsIAotICAgIDE2MTc4MiwgMTYxNzg0LCAxNjE3ODYsIDE2MTc4OCwgMTYxNzkwLCAxNjE3OTIsIDE2MTc5NCwgMTYxNzk2LCAxNjE3OTgsIAotICAgIDE2MTgwMCwgMTYxODAyLCAxNjE4MDQsIDE2MTgwNiwgMTYxODA4LCAxNjE4MTAsIDE2MTgxMiwgMTYxODE0LCAxNjE4MTYsIAotICAgIDE2MTgxOCwgMTYxODIwLCAxNjE4MjIsIDE2MTgyNCwgMTYxODI2LCAxNjE4MjgsIDE2MTgzMCwgMTYxODMyLCAxNjE4MzQsIAotICAgIDE2MTgzNiwgMTYxODM4LCAxNjE4NDAsIDE2MTg0MiwgMTYxODQ0LCAxNjE4NDYsIDE2MTg0OCwgMTYxODUwLCAxNjE4NTIsIAotICAgIDE2MTg1NCwgMTYxODU2LCAxNjE4NTgsIDE2MTg2MCwgMTYxODYyLCAxNjE4NjQsIDE2MTg2NiwgMTYxODY4LCAxNjE4NzAsIAotICAgIDE2MTg3MiwgMTYxODc0LCAxNjE4NzYsIDE2MTg3OCwgMTYxODgwLCAxNjE4ODIsIDE2MTg4NCwgMTYxODg2LCAxNjE4ODgsIAotICAgIDE2MTg5MCwgMTYxODkyLCAxNjE4OTQsIDE2MTg5NiwgMTYxODk4LCAxNjE5MDAsIDE2MTkwMiwgMTYxOTA0LCAxNjE5MDYsIAotICAgIDE2MTkwOCwgMTYxOTEwLCAxNjE5MTIsIDE2MTkxNCwgMTYxOTE2LCAxNjE5MTgsIDE2MTkyMCwgMTYxOTIyLCAxNjE5MjQsIAotICAgIDE2MTkyNiwgMTYxOTI4LCAxNjE5MzAsIDE2MTkzMiwgMTYxOTM0LCAxNjE5MzYsIDE2MTkzOCwgMTYxOTQwLCAxNjE5NDIsIAotICAgIDE2MTk0NCwgMTYxOTQ2LCAxNjE5NDgsIDE2MTk1MCwgMTYxOTUyLCAxNjE5NTQsIDE2MTk1NiwgMTYxOTU4LCAxNjE5NjAsIAotICAgIDE2MTk2MiwgMTYxOTY0LCAxNjE5NjYsIDE2MTk2OCwgMTYxOTcwLCAxNjE5NzIsIDE2MTk3NCwgMTYxOTc2LCAxNjE5NzgsIAotICAgIDE2MTk4MCwgMTYxOTgyLCAxNjE5ODQsIDE2MTk4NiwgMTYxOTg4LCAxNjE5OTAsIDE2MTk5MiwgMTYxOTk0LCAxNjE5OTYsIAotICAgIDE2MTk5OCwgMTYyMDAwLCAxNjIwMDIsIDE2MjAwNCwgMTYyMDA2LCAxNjIwMDgsIDE2MjAxMCwgMTYyMDEyLCAxNjIwMTQsIAotICAgIDE2MjAxNiwgMTYyMDE4LCAxNjIwMjAsIDE2MjAyMiwgMTYyMDI0LCAxNjIwMjYsIDE2MjAyOCwgMTYyMDMwLCAxNjIwMzIsIAotICAgIDE2MjAzNCwgMTYyMDM2LCAxNjIwMzgsIDE2MjA0MCwgMTYyMDQyLCAxNjIwNDQsIDE2MjA0NiwgMTYyMDQ4LCAxNjIwNTAsIAotICAgIDE2MjA1MiwgMTYyMDU0LCAxNjIwNTYsIDE2MjA1OCwgMTYyMDYwLCAxNjIwNjIsIDE2MjA2NCwgMTYyMDY2LCAxNjIwNjgsIAotICAgIDE2MjA3MCwgMTYyMDcyLCAxNjIwNzQsIDE2MjA3NiwgMTYyMDc4LCAxNjIwODAsIDE2MjA4MiwgMTYyMDg0LCAxNjIwODYsIAotICAgIDE2MjA4OCwgMTYyMDkwLCAxNjIwOTIsIDE2MjA5NCwgMTYyMDk2LCAxNjIwOTgsIDE2MjEwMCwgMTYyMTAyLCAxNjIxMDQsIAotICAgIDE2MjEwNiwgMTYyMTA4LCAxNjIxMTAsIDE2MjExMiwgMTYyMTE0LCAxNjIxMTYsIDE2MjExOCwgMTYyMTIwLCAxNjIxMjIsIAotICAgIDE2MjEyNCwgMTYyMTI2LCAxNjIxMjgsIDE2MjEzMCwgMTYyMTMyLCAxNjIxMzQsIDE2MjEzNiwgMTYyMTM4LCAxNjIxNDAsIAotICAgIDE2MjE0MiwgMTYyMTQ0LCAxNjIxNDYsIDE2MjE0OCwgMTYyMTUwLCAxNjIxNTIsIDE2MjE1NCwgMTYyMTU2LCAxNjIxNTgsIAotICAgIDE2MjE2MCwgMTYyMTYyLCAxNjIxNjQsIDE2MjE2NiwgMTYyMTY4LCAxNjIxNzAsIDE2MjE3MiwgMTYyMTc0LCAxNjIxNzYsIAotICAgIDE2MjE3OCwgMTYyMTgwLCAxNjIxODIsIDE2MjE4NCwgMTYyMTg2LCAxNjIxODgsIDE2MjE5MCwgMTYyMTkyLCAxNjIxOTQsIAotICAgIDE2MjE5NiwgMTYyMTk4LCAxNjIyMDAsIDE2MjIwMiwgMTYyMjA0LCAxNjIyMDYsIDE2MjIwOCwgMTYyMjEwLCAxNjIyMTIsIAotICAgIDE2MjIxNCwgMTYyMjE2LCAxNjIyMTgsIDE2MjIyMCwgMTYyMjIyLCAxNjIyMjQsIDE2MjIyNiwgMTYyMjI4LCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAxNjIyMzAsIDE2MjI0MCwgMTYyMjUwLCAxNjIyNTksIDE2MjI2OCwgMTYyMjgxLCAxNjIyOTQsIDE2MjMwNiwgCi0gICAgMTYyMzE4LCAxNjIzMjgsIDE2MjMzOCwgMTYyMzQ4LCAxNjIzNTgsIDE2MjM2OSwgMTYyMzgwLCAxNjIzOTAsIDE2MjM5OSwgCi0gICAgMTYyNDA4LCAxNjI0MTcsIDE2MjQzMCwgMTYyNDQzLCAxNjI0NTUsIDE2MjQ2NywgMTYyNDc3LCAxNjI0ODcsIDE2MjQ5NywgCi0gICAgMTYyNTA3LCAxNjI1MTYsIDE2MjUyNSwgMTYyNTM1LCAxNjI1NDUsIDE2MjU1NCwgMTYyNTYzLCAxNjI1NzMsIDE2MjU4MywgCi0gICAgMTYyNTkyLCAxNjI2MDEsIDE2MjYxMSwgMTYyNjIxLCAxNjI2MzIsIDE2MjY0MywgMTYyNjUzLCAxNjI2NjYsIDE2MjY3NywgCi0gICAgMTYyNjkxLCAxNjI2OTksIDE2MjcxMCwgMTYyNzE4LCAxNjI3MjYsIDE2MjczNCwgMTYyNzQyLCAxNjI3NTAsIDE2Mjc1OCwgCi0gICAgMTYyNzY3LCAxNjI3NzYsIDE2Mjc4NiwgMTYyNzk2LCAxNjI4MDUsIDE2MjgxNCwgMTYyODI0LCAxNjI4MzQsIDE2Mjg0MiwgCi0gICAgMTYyODUwLCAxNjI4NTcsIDE2Mjg2NywgMTYyODc2LCAxNjI4ODQsIDE2Mjg5MSwgMTYyOTAxLCAxNjI5MTAsIDE2MjkyMSwgCi0gICAgMTYyOTMyLCAxNjI5NDQsIDE2Mjk1NSwgMTYyOTY1LCAxNjI5NzYsIDE2Mjk4NiwgMTYyOTk3LCAxNjMwMDUsIDE2MzAwOSwgCi0gICAgMTYzMDEzLCAxNjMwMTcsIDE2MzAyMSwgMTYzMDI1LCAxNjMwMjksIDE2MzAzMywgMTYzMDM3LCAxNjMwNDEsIDE2MzA0NSwgCi0gICAgMTYzMDQ5LCAxNjMwNTMsIDE2MzA1NiwgMTYzMDU5LCAxNjMwNjMsIDE2MzA2NywgMTYzMDcxLCAxNjMwNzUsIDE2MzA3OSwgCi0gICAgMTYzMDgzLCAxNjMwODcsIDE2MzA5MSwgMTYzMDk0LCAxNjMwOTgsIDE2MzEwMiwgMTYzMTA2LCAxNjMxMTAsIDE2MzExNCwgCi0gICAgMTYzMTE4LCAxNjMxMjIsIDE2MzEyNiwgMTYzMTMwLCAxNjMxMzQsIDE2MzEzOCwgMTYzMTQyLCAxNjMxNDYsIDE2MzE1MCwgCi0gICAgMTYzMTU0LCAxNjMxNTgsIDE2MzE2MiwgMTYzMTY2LCAxNjMxNzAsIDE2MzE3NCwgMTYzMTc4LCAxNjMxODIsIDE2MzE4NiwgCi0gICAgMTYzMTkwLCAxNjMxOTQsIDE2MzE5OCwgMTYzMjAyLCAxNjMyMDYsIDE2MzIxMCwgMTYzMjE0LCAxNjMyMTgsIDE2MzIyMiwgCi0gICAgMTYzMjI2LCAxNjMyMzAsIDE2MzIzNCwgMTYzMjM4LCAxNjMyNDIsIDE2MzI0NiwgMTYzMjUwLCAxNjMyNTQsIDE2MzI1OCwgCi0gICAgMTYzMjYyLCAxNjMyNjYsIDE2MzI3MCwgMTYzMjc0LCAxNjMyNzgsIDE2MzI4MiwgMTYzMjg2LCAxNjMyOTAsIDE2MzI5NCwgCi0gICAgMTYzMjk4LCAxNjMzMDIsIDE2MzMwNiwgMTYzMzEwLCAxNjMzMTQsIDE2MzMxOCwgMTYzMzIyLCAxNjMzMjYsIDE2MzMzMCwgCi0gICAgMTYzMzM0LCAxNjMzMzgsIDE2MzM0MiwgMTYzMzQ2LCAxNjMzNTAsIDE2MzM1NCwgMTYzMzU4LCAxNjMzNjIsIDE2MzM2NiwgCi0gICAgMTYzMzcwLCAxNjMzNzQsIDE2MzM3OCwgMTYzMzgyLCAxNjMzODYsIDE2MzM5MCwgMTYzMzk0LCAxNjMzOTgsIDE2MzQwMSwgCi0gICAgMTYzNDA1LCAxNjM0MDksIDE2MzQxMywgMTYzNDE3LCAxNjM0MjEsIDE2MzQyNSwgMTYzNDI5LCAxNjM0MzMsIDE2MzQzNywgCi0gICAgMTYzNDQxLCAxNjM0NDUsIDE2MzQ0OSwgMTYzNDUzLCAxNjM0NTcsIDE2MzQ2MSwgMTYzNDY1LCAxNjM0NjksIDE2MzQ3MywgCi0gICAgMTYzNDc3LCAxNjM0ODEsIDE2MzQ4NSwgMTYzNDg5LCAxNjM0OTMsIDE2MzQ5NywgMTYzNTAxLCAxNjM1MDUsIDE2MzUwOSwgCi0gICAgMTYzNTEzLCAxNjM1MTcsIDE2MzUyMSwgMTYzNTI1LCAxNjM1MjksIDE2MzUzMywgMTYzNTM3LCAxNjM1NDEsIDE2MzU0NSwgCi0gICAgMTYzNTQ5LCAxNjM1NTMsIDE2MzU1NywgMTYzNTYxLCAxNjM1NjUsIDE2MzU2OSwgMTYzNTczLCAxNjM1NzcsIDE2MzU4MSwgCi0gICAgMTYzNTg1LCAxNjM1ODksIDE2MzU5MywgMTYzNTk3LCAxNjM2MDEsIDE2MzYwNSwgMTYzNjA5LCAxNjM2MTMsIDE2MzYxNywgCi0gICAgMTYzNjIxLCAxNjM2MjUsIDE2MzYyOSwgMTYzNjMzLCAxNjM2MzcsIDE2MzY0MSwgMTYzNjQ1LCAxNjM2NDksIDE2MzY1MywgCi0gICAgMTYzNjU3LCAxNjM2NjEsIDE2MzY2NSwgMTYzNjY5LCAxNjM2NzMsIDE2MzY3NywgMTYzNjgxLCAxNjM2ODUsIDE2MzY4OSwgCi0gICAgMTYzNjkzLCAxNjM2OTcsIDE2MzcwMSwgMTYzNzA1LCAxNjM3MDksIDE2MzcxMywgMTYzNzE3LCAxNjM3MjEsIDE2MzcyNSwgCi0gICAgMTYzNzI5LCAxNjM3MzMsIDE2MzczNywgMTYzNzQxLCAxNjM3NDUsIDE2Mzc0OSwgMTYzNzUzLCAxNjM3NTcsIDE2Mzc2MSwgCi0gICAgMTYzNzY1LCAxNjM3NjksIDE2Mzc3MywgMTYzNzc3LCAxNjM3ODEsIDE2Mzc4NSwgMTYzNzg5LCAxNjM3OTMsIDE2Mzc5NywgCi0gICAgMTYzODAxLCAxNjM4MDUsIDE2MzgwOSwgMTYzODEzLCAxNjM4MTcsIDE2MzgyMSwgMTYzODI1LCAxNjM4MjksIDE2MzgzMywgCi0gICAgMTYzODM3LCAxNjM4NDEsIDE2Mzg0NSwgMTYzODQ5LCAxNjM4NTMsIDE2Mzg1NywgMTYzODYxLCAxNjM4NjUsIDE2Mzg2OSwgCi0gICAgMTYzODczLCAxNjM4NzcsIDE2Mzg4MSwgMTYzODg1LCAxNjM4ODksIDE2Mzg5MywgMTYzODk3LCAxNjM5MDEsIDE2MzkwNSwgCi0gICAgMTYzOTA5LCAxNjM5MTMsIDE2MzkxNywgMTYzOTIxLCAxNjM5MjUsIDE2MzkyOSwgMTYzOTMzLCAxNjM5MzcsIDE2Mzk0MSwgCi0gICAgMTYzOTQ1LCAxNjM5NDksIDE2Mzk1MywgMTYzOTU3LCAxNjM5NjEsIDE2Mzk2NSwgMTYzOTY5LCAxNjM5NzMsIDE2Mzk3NywgCi0gICAgMTYzOTgxLCAxNjM5ODUsIDE2Mzk4OSwgMTYzOTkzLCAxNjM5OTcsIDE2NDAwMSwgMTY0MDA1LCAxNjQwMDksIDE2NDAxMywgCi0gICAgMTY0MDE3LCAxNjQwMjEsIDE2NDAyNSwgMTY0MDI5LCAxNjQwMzMsIDE2NDAzNywgMTY0MDQxLCAxNjQwNDUsIDE2NDA0OSwgCi0gICAgMTY0MDUzLCAxNjQwNTcsIDE2NDA2MSwgMTY0MDY1LCAxNjQwNjksIDE2NDA3MywgMTY0MDc3LCAxNjQwODEsIDE2NDA4NSwgCi0gICAgMTY0MDg5LCAxNjQwOTMsIDE2NDA5NywgMTY0MTAxLCAxNjQxMDUsIDE2NDEwOSwgMTY0MTEzLCAxNjQxMTcsIDE2NDEyMSwgCi0gICAgMTY0MTI1LCAxNjQxMjksIDE2NDEzMywgMTY0MTM3LCAxNjQxNDEsIDE2NDE0NSwgMTY0MTQ5LCAxNjQxNTMsIDE2NDE1NywgCi0gICAgMTY0MTYxLCAxNjQxNjUsIDE2NDE3MCwgMTY0MTc1LCAxNjQxODAsIDE2NDE4NCwgMTY0MTkwLCAxNjQxOTcsIDE2NDIwNCwgCi0gICAgMTY0MjExLCAxNjQyMTgsIDE2NDIyNSwgMTY0MjMyLCAxNjQyMzksIDE2NDI0NiwgMTY0MjUzLCAxNjQyNjAsIDE2NDI2NywgCi0gICAgMTY0Mjc0LCAxNjQyODEsIDE2NDI4OCwgMTY0Mjk1LCAxNjQzMDIsIDE2NDMwOCwgMTY0MzE1LCAxNjQzMjIsIDE2NDMyOSwgCi0gICAgMTY0MzM2LCAxNjQzNDMsIDE2NDM1MCwgMTY0MzU3LCAxNjQzNjQsIDE2NDM3MSwgMTY0Mzc4LCAxNjQzODUsIDE2NDM5MiwgCi0gICAgMTY0Mzk5LCAxNjQ0MDYsIDE2NDQxMiwgMTY0NDE5LCAxNjQ0MjYsIDE2NDQzNSwgMTY0NDQ0LCAxNjQ0NTMsIDE2NDQ2MiwgCi0gICAgMTY0NDY3LCAxNjQ0NzIsIDE2NDQ3OCwgMTY0NDg0LCAxNjQ0OTAsIDE2NDQ5NiwgMTY0NTAyLCAxNjQ1MDgsIDE2NDUxNCwgCi0gICAgMTY0NTIwLCAxNjQ1MjYsIDE2NDUzMiwgMTY0NTM4LCAxNjQ1NDQsIDE2NDU0OSwgMTY0NTU1LCAxNjQ1NjUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDE2NjExMSwgMTY2MTE0LCAxNjYxMTcsIDE2NjEyMCwgMTY2MTIzLCAxNjYxMjYsIDE2NjEyOSwgMTY2MTMyLCAKKyAgICAxNjYxMzUsIDE2NjEzOCwgMTY2MTQxLCAxNjYxNDQsIDE2NjE0NywgMTY2MTUwLCAxNjYxNTMsIDE2NjE1NiwgMTY2MTU5LCAKKyAgICAxNjYxNjIsIDE2NjE2NSwgMTY2MTY4LCAxNjYxNzEsIDE2NjE3NCwgMTY2MTc3LCAxNjYxODAsIDE2NjE4MywgMTY2MTg2LCAKKyAgICAxNjYxODksIDE2NjE5MiwgMTY2MTk1LCAxNjYxOTgsIDE2NjIwMSwgMTY2MjA0LCAxNjYyMDcsIDE2NjIxMCwgMTY2MjEzLCAKKyAgICAxNjYyMTYsIDE2NjIxOSwgMTY2MjIyLCAxNjYyMjUsIDE2NjIyOCwgMTY2MjMxLCAxNjYyMzQsIDE2NjIzNywgMTY2MjQwLCAKKyAgICAxNjYyNDMsIDE2NjI0NiwgMTY2MjQ5LCAxNjYyNTIsIDE2NjI1NSwgMTY2MjU4LCAxNjYyNjEsIDE2NjI2NCwgMTY2MjY3LCAKKyAgICAxNjYyNzAsIDE2NjI3MywgMTY2Mjc2LCAxNjYyNzksIDE2NjI4MiwgMTY2Mjg1LCAxNjYyODgsIDE2NjI5MSwgMTY2Mjk0LCAKKyAgICAxNjYyOTcsIDE2NjMwMCwgMTY2MzAzLCAxNjYzMDYsIDE2NjMwOSwgMTY2MzEyLCAxNjYzMTUsIDE2NjMxOCwgMTY2MzIxLCAKKyAgICAxNjYzMjQsIDE2NjMyNywgMTY2MzMwLCAxNjYzMzMsIDE2NjMzNiwgMTY2MzM5LCAxNjYzNDIsIDE2NjM0NSwgMTY2MzQ4LCAKKyAgICAxNjYzNTEsIDE2NjM1NCwgMTY2MzU3LCAxNjYzNjAsIDE2NjM2MywgMTY2MzY2LCAxNjYzNjksIDE2NjM3MiwgMTY2Mzc1LCAKKyAgICAxNjYzNzgsIDE2NjM4MSwgMTY2Mzg0LCAxNjYzODcsIDE2NjM5MCwgMTY2MzkzLCAxNjYzOTYsIDE2NjM5OSwgMTY2NDAyLCAKKyAgICAxNjY0MDUsIDE2NjQwOCwgMTY2NDExLCAxNjY0MTQsIDE2NjQxNywgMTY2NDIwLCAxNjY0MjMsIDE2NjQyNiwgMTY2NDI5LCAKKyAgICAxNjY0MzIsIDE2NjQzNSwgMTY2NDM4LCAxNjY0NDEsIDE2NjQ0NCwgMTY2NDQ3LCAxNjY0NTAsIDE2NjQ1MywgMTY2NDU2LCAKKyAgICAxNjY0NTksIDE2NjQ2MiwgMTY2NDY1LCAxNjY0NjgsIDE2NjQ3MSwgMTY2NDc0LCAxNjY0NzcsIDE2NjQ4MCwgMTY2NDgzLCAKKyAgICAxNjY0ODYsIDE2NjQ4OSwgMTY2NDkyLCAxNjY0OTUsIDE2NjQ5OCwgMTY2NTAxLCAxNjY1MDQsIDE2NjUwNywgMTY2NTEwLCAKKyAgICAxNjY1MTMsIDE2NjUxNiwgMTY2NTE5LCAxNjY1MjIsIDE2NjUyNSwgMTY2NTI4LCAxNjY1MzEsIDE2NjUzNCwgMTY2NTM3LCAKKyAgICAxNjY1NDAsIDE2NjU0MywgMTY2NTQ2LCAxNjY1NDksIDE2NjU1MiwgMTY2NTU1LCAxNjY1NTgsIDE2NjU2MSwgMTY2NTY0LCAKKyAgICAxNjY1NjcsIDE2NjU3MCwgMTY2NTczLCAxNjY1NzYsIDE2NjU3OSwgMTY2NTgyLCAxNjY1ODUsIDE2NjU4OCwgMTY2NTkxLCAKKyAgICAxNjY1OTQsIDE2NjU5NywgMTY2NjAwLCAxNjY2MDMsIDE2NjYwNiwgMTY2NjA5LCAxNjY2MTIsIDE2NjYxNSwgMTY2NjE4LCAKKyAgICAxNjY2MjEsIDE2NjYyNCwgMTY2NjI3LCAxNjY2MzAsIDE2NjYzMywgMTY2NjM2LCAxNjY2MzksIDE2NjY0MiwgMTY2NjQ1LCAKKyAgICAxNjY2NDgsIDE2NjY1MSwgMTY2NjU0LCAxNjY2NTcsIDE2NjY2MCwgMTY2NjYzLCAxNjY2NjYsIDE2NjY2OSwgMTY2NjcyLCAKKyAgICAxNjY2NzUsIDE2NjY3OCwgMTY2NjgxLCAxNjY2ODQsIDE2NjY4NywgMTY2NjkwLCAxNjY2OTMsIDE2NjY5NiwgMTY2Njk5LCAKKyAgICAxNjY3MDIsIDE2NjcwNSwgMTY2NzA4LCAxNjY3MTEsIDE2NjcxNCwgMTY2NzE3LCAxNjY3MjAsIDE2NjcyMywgMTY2NzI2LCAKKyAgICAxNjY3MjksIDE2NjczMiwgMTY2NzM1LCAxNjY3MzgsIDE2Njc0MSwgMTY2NzQ0LCAxNjY3NDcsIDE2Njc1MCwgMTY2NzUzLCAKKyAgICAxNjY3NTYsIDE2Njc1OSwgMTY2NzYyLCAxNjY3NjUsIDE2Njc2OCwgMTY2NzcxLCAxNjY3NzQsIDE2Njc3NywgMTY2NzgwLCAKKyAgICAxNjY3ODMsIDE2Njc4NiwgMTY2Nzg5LCAxNjY3OTIsIDE2Njc5NSwgMTY2Nzk4LCAxNjY4MDEsIDE2NjgwNCwgMTY2ODA3LCAKKyAgICAxNjY4MTAsIDE2NjgxMywgMTY2ODE2LCAxNjY4MTksIDE2NjgyMiwgMTY2ODI1LCAxNjY4MjgsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2NjgzMSwgMTY2ODMzLCAxNjY4MzUsIDE2Njg0MCwgMTY2ODQyLCAKKyAgICAxNjY4NDcsIDE2Njg0OSwgMTY2ODU0LCAxNjY4NTYsIDE2Njg2MSwgMTY2ODYzLCAxNjY4NjUsIDE2Njg2NywgMTY2ODY5LCAKKyAgICAxNjY4NzEsIDE2Njg3MywgMTY2ODc1LCAxNjY4NzcsIDE2Njg3OSwgMTY2ODgyLCAxNjY4ODYsIDE2Njg4OCwgMTY2ODkwLCAKKyAgICAxNjY4OTQsIDE2Njg5OCwgMTY2OTAzLCAxNjY5MDUsIDE2NjkwNywgMTY2OTA5LCAxNjY5MTMsIDE2NjkxNiwgMTY2OTE4LCAKKyAgICAxNjY5MjIsIDE2NjkyNCwgMTY2OTI4LCAxNjY5MzAsIDE2NjkzNCwgMTY2OTM3LCAxNjY5MzksIDE2Njk0MywgMTY2OTQ3LCAKKyAgICAxNjY5NDksIDE2Njk1NSwgMTY2OTU3LCAxNjY5NjIsIDE2Njk2NCwgMTY2OTY5LCAxNjY5NzEsIDE2Njk3NiwgMTY2OTc4LCAKKyAgICAxNjY5ODMsIDE2Njk4NSwgMTY2OTg4LCAxNjY5OTAsIDE2Njk5NCwgMTY2OTk2LCAxNjcwMDMsIDE2NzAwNSwgMTY3MDA3LCAKKyAgICAxNjcwMDksIDE2NzAxNCwgMTY3MDE2LCAxNjcwMTgsIDE2NzAyMCwgMTY3MDIyLCAxNjcwMjQsIDE2NzAyOSwgMTY3MDMzLCAKKyAgICAxNjcwMzUsIDE2NzA0MCwgMTY3MDQ0LCAxNjcwNDYsIDE2NzA1MSwgMTY3MDU1LCAxNjcwNTcsIDE2NzA2MiwgMTY3MDY2LCAKKyAgICAxNjcwNjgsIDE2NzA3MCwgMTY3MDcyLCAxNjcwNzQsIDE2NzA3OCwgMTY3MDgwLCAxNjcwODUsIDE2NzA4NywgMTY3MDkzLCAKKyAgICAxNjcwOTUsIDE2NzEwMSwgMTY3MTAzLCAxNjcxMDUsIDE2NzEwNywgMTY3MTExLCAxNjcxMTMsIDE2NzEyMCwgMTY3MTIyLCAKKyAgICAxNjcxMjksIDE2NzEzMSwgMTY3MTM2LCAxNjcxNDIsIDE2NzE0NCwgMTY3MTUwLCAxNjcxNTcsIDE2NzE1OSwgMTY3MTY1LCAKKyAgICAxNjcxNzAsIDE2NzE3MiwgMTY3MTc4LCAxNjcxODQsIDE2NzE4NiwgMTY3MTkyLCAxNjcxOTgsIDE2NzIwMCwgMTY3MjA2LCAKKyAgICAxNjcyMTAsIDE2NzIxMiwgMTY3MjE3LCAxNjcyMTksIDE2NzIyMSwgMTY3MjI2LCAxNjcyMjgsIDE2NzIzMCwgMTY3MjM2LCAKKyAgICAxNjcyMzgsIDE2NzI0MywgMTY3MjQ3LCAxNjcyNDksIDE2NzI1NCwgMTY3MjU4LCAxNjcyNjAsIDE2NzI2NiwgMTY3MjY4LCAKKyAgICAxNjcyNzIsIDE2NzI3NCwgMTY3Mjc4LCAxNjcyODAsIDE2NzI4NywgMTY3Mjk0LCAxNjcyOTYsIDE2NzMwMywgMTY3MzEwLCAKKyAgICAxNjczMTIsIDE2NzMxNywgMTY3MzE5LCAxNjczMjYsIDE2NzMyOCwgMTY3MzMzLCAxNjczMzUsIDE2NzM0MSwgMTY3MzQzLCAKKyAgICAxNjczNDcsIDE2NzM0OSwgMTY3MzU1LCAxNjczNTcsIDE2NzM2MSwgMTY3MzYzLCAxNjczNjksIDE2NzM3MSwgMTY3MzczLCAKKyAgICAxNjczNzUsIDE2NzM4MCwgMTY3Mzg1LCAxNjczODcsIDE2NzM4OSwgMTY3Mzk5LCAxNjc0MDQsIDE2NzQxMSwgMTY3NDE4LCAKKyAgICAxNjc0MjMsIDE2NzQyOCwgMTY3NDQwLCAxNjc0NDIsIDE2NzQ0NCwgMTY3NDQ2LCAxNjc0NDgsIDE2NzQ1MCwgMTY3NDUyLCAKKyAgICAxNjc0NTQsIDE2NzQ1NiwgMTY3NDU4LCAxNjc0NjAsIDE2NzQ2MiwgMTY3NDY0LCAxNjc0NjYsIDE2NzQ2OCwgMTY3NDcwLCAKKyAgICAxNjc0NzIsIDE2NzQ3NCwgMTY3NDc2LCAxNjc0NzgsIDE2NzQ4MCwgMTY3NDgyLCAxNjc0ODgsIDE2NzQ5NSwgMTY3NTAwLCAKKyAgICAxNjc1MDgsIDE2NzUxNiwgMTY3NTIxLCAxNjc1MzIsIDE2NzUzNCwgMTY3NTM2LCAxNjc1MzgsIDE2NzU0MCwgMTY3NTQyLCAKKyAgICAxNjc1NDQsIDE2NzU0NiwgMTY3NTQ4LCAxNjc1NTAsIDE2NzU1MiwgMTY3NTU0LCAxNjc1NTYsIDE2NzU1OCwgMTY3NTYwLCAKKyAgICAxNjc1NjIsIDE2NzU2NCwgMTY3NTY5LCAxNjc1NzEsIDE2NzU3MywgMTY3NTc5LCAxNjc1OTEsIDE2NzYwMiwgMTY3NjA0LCAKKyAgICAxNjc2MDYsIDE2NzYwOCwgMTY3NjEwLCAxNjc2MTIsIDE2NzYxNCwgMTY3NjE2LCAxNjc2MTgsIDE2NzYyMCwgMTY3NjIyLCAKKyAgICAxNjc2MjQsIDE2NzYyNiwgMTY3NjI4LCAxNjc2MzAsIDE2NzYzMiwgMTY3NjM0LCAxNjc2MzYsIDE2NzYzOCwgMTY3NjQwLCAKKyAgICAxNjc2NDIsIDE2NzY0NCwgMTY3NjQ2LCAxNjc2NDgsIDE2NzY1MCwgMTY3NjUyLCAxNjc2NTQsIDE2NzY1NiwgMTY3NjU4LCAKKyAgICAxNjc2NjAsIDE2NzY2MiwgMTY3NjY0LCAxNjc2NjYsIDE2NzY2OCwgMTY3NjcwLCAxNjc2NzIsIDE2NzY3NCwgMTY3Njc2LCAKKyAgICAxNjc2NzgsIDE2NzY4MCwgMTY3NjgyLCAxNjc2ODQsIDE2NzY4NiwgMTY3Njg4LCAxNjc2OTAsIDE2NzY5MiwgMTY3Njk0LCAKKyAgICAxNjc2OTYsIDE2NzY5OCwgMTY3NzAwLCAxNjc3MDIsIDE2NzcwNCwgMTY3NzA2LCAxNjc3MDgsIDE2NzcxMCwgMTY3NzEyLCAKKyAgICAxNjc3MTQsIDE2NzcxNiwgMTY3NzE4LCAxNjc3MjAsIDE2NzcyMiwgMTY3NzI0LCAxNjc3MjYsIDE2NzcyOCwgMTY3NzMwLCAKKyAgICAxNjc3MzIsIDE2NzczNCwgMTY3NzM2LCAxNjc3MzgsIDE2Nzc0MCwgMTY3NzQyLCAxNjc3NDQsIDE2Nzc0NiwgMTY3NzQ4LCAKKyAgICAxNjc3NTAsIDE2Nzc1MiwgMTY3NzU0LCAxNjc3NTYsIDE2Nzc1OCwgMTY3NzYwLCAxNjc3NjIsIDE2Nzc2NCwgMTY3NzY2LCAKKyAgICAxNjc3NjgsIDE2Nzc3MCwgMTY3NzcyLCAxNjc3NzQsIDE2Nzc3NiwgMTY3Nzc4LCAxNjc3ODAsIDE2Nzc4MiwgMTY3Nzg0LCAKKyAgICAxNjc3ODYsIDE2Nzc4OCwgMTY3NzkwLCAxNjc3OTIsIDE2Nzc5NCwgMTY3Nzk2LCAxNjc3OTgsIDE2NzgwMCwgMTY3ODAyLCAKKyAgICAxNjc4MDQsIDE2NzgwNiwgMTY3ODA4LCAxNjc4MTAsIDE2NzgxMiwgMTY3ODE0LCAxNjc4MTYsIDE2NzgxOCwgMTY3ODIwLCAKKyAgICAxNjc4MjIsIDE2NzgyNCwgMTY3ODI2LCAxNjc4MjgsIDE2NzgzMCwgMTY3ODMyLCAxNjc4MzQsIDE2NzgzNiwgMTY3ODM4LCAKKyAgICAxNjc4NDAsIDE2Nzg0MiwgMTY3ODQ0LCAxNjc4NDYsIDE2Nzg0OCwgMTY3ODUwLCAxNjc4NTIsIDE2Nzg1NCwgMTY3ODU2LCAKKyAgICAxNjc4NTgsIDE2Nzg2MCwgMTY3ODYyLCAxNjc4NjQsIDE2Nzg2NiwgMTY3ODY4LCAxNjc4NzAsIDE2Nzg3MiwgMTY3ODc0LCAKKyAgICAxNjc4NzYsIDE2Nzg3OCwgMTY3ODgwLCAxNjc4ODIsIDE2Nzg4NCwgMTY3ODg2LCAxNjc4ODgsIDE2Nzg5MCwgMTY3ODkyLCAKKyAgICAxNjc4OTQsIDE2Nzg5NiwgMTY3ODk4LCAxNjc5MDAsIDE2NzkwMiwgMTY3OTA0LCAxNjc5MDYsIDE2NzkwOCwgMTY3OTEwLCAKKyAgICAxNjc5MTIsIDE2NzkxNCwgMTY3OTE2LCAxNjc5MTgsIDE2NzkyMCwgMTY3OTIyLCAxNjc5MjQsIDE2NzkyNiwgMTY3OTI4LCAKKyAgICAxNjc5MzAsIDE2NzkzMiwgMTY3OTM0LCAxNjc5MzYsIDE2NzkzOCwgMTY3OTQwLCAxNjc5NDIsIDE2Nzk0NCwgMTY3OTQ2LCAKKyAgICAxNjc5NDgsIDE2Nzk1MCwgMTY3OTUyLCAxNjc5NTQsIDE2Nzk1NiwgMTY3OTU4LCAxNjc5NjAsIDE2Nzk2MiwgMTY3OTY0LCAKKyAgICAxNjc5NjYsIDE2Nzk2OCwgMTY3OTcwLCAxNjc5NzIsIDE2Nzk3NCwgMTY3OTc2LCAxNjc5NzgsIDE2Nzk4MCwgMTY3OTgyLCAKKyAgICAxNjc5ODQsIDE2Nzk4NiwgMTY3OTg4LCAxNjc5OTAsIDE2Nzk5MiwgMTY3OTk0LCAxNjc5OTYsIDE2Nzk5OCwgMTY4MDAwLCAKKyAgICAxNjgwMDIsIDE2ODAwNCwgMTY4MDA2LCAxNjgwMDgsIDE2ODAxMCwgMTY4MDEyLCAxNjgwMTQsIDE2ODAxNiwgMTY4MDE4LCAKKyAgICAxNjgwMjAsIDE2ODAyMiwgMTY4MDI0LCAxNjgwMjYsIDE2ODAyOCwgMTY4MDMwLCAxNjgwMzIsIDE2ODAzNCwgMTY4MDM2LCAKKyAgICAxNjgwMzgsIDE2ODA0MCwgMTY4MDQyLCAxNjgwNDQsIDE2ODA0NiwgMTY4MDQ4LCAxNjgwNTAsIDE2ODA1MiwgMTY4MDU0LCAKKyAgICAxNjgwNTYsIDE2ODA1OCwgMTY4MDYwLCAxNjgwNjIsIDE2ODA2NCwgMTY4MDY2LCAxNjgwNjgsIDE2ODA3MCwgMTY4MDcyLCAKKyAgICAxNjgwNzQsIDE2ODA3NiwgMTY4MDc4LCAxNjgwODAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE2ODA4MiwgMTY4MDkyLCAxNjgxMDIsIAorICAgIDE2ODExMSwgMTY4MTIwLCAxNjgxMzMsIDE2ODE0NiwgMTY4MTU4LCAxNjgxNzAsIDE2ODE4MCwgMTY4MTkwLCAxNjgyMDAsIAorICAgIDE2ODIxMCwgMTY4MjIxLCAxNjgyMzIsIDE2ODI0MiwgMTY4MjUxLCAxNjgyNjAsIDE2ODI2OSwgMTY4MjgyLCAxNjgyOTUsIAorICAgIDE2ODMwNywgMTY4MzE5LCAxNjgzMjksIDE2ODMzOSwgMTY4MzQ5LCAxNjgzNTksIDE2ODM2OCwgMTY4Mzc3LCAxNjgzODcsIAorICAgIDE2ODM5NywgMTY4NDA2LCAxNjg0MTUsIDE2ODQyNSwgMTY4NDM1LCAxNjg0NDQsIDE2ODQ1MywgMTY4NDYzLCAxNjg0NzMsIAorICAgIDE2ODQ4NCwgMTY4NDk1LCAxNjg1MDUsIDE2ODUxOCwgMTY4NTI5LCAxNjg1NDMsIDE2ODU1MSwgMTY4NTYyLCAxNjg1NzAsIAorICAgIDE2ODU3OCwgMTY4NTg2LCAxNjg1OTQsIDE2ODYwMiwgMTY4NjEwLCAxNjg2MTksIDE2ODYyOCwgMTY4NjM4LCAxNjg2NDgsIAorICAgIDE2ODY1NywgMTY4NjY2LCAxNjg2NzYsIDE2ODY4NiwgMTY4Njk0LCAxNjg3MDIsIDE2ODcwOSwgMTY4NzE5LCAxNjg3MjgsIAorICAgIDE2ODczNiwgMTY4NzQzLCAxNjg3NTMsIDE2ODc2MiwgMTY4NzczLCAxNjg3ODQsIDE2ODc5NiwgMTY4ODA3LCAxNjg4MTcsIAorICAgIDE2ODgyOCwgMTY4ODM4LCAxNjg4NDksIDE2ODg1NywgMTY4ODYxLCAxNjg4NjUsIDE2ODg2OSwgMTY4ODczLCAxNjg4NzcsIAorICAgIDE2ODg4MSwgMTY4ODg1LCAxNjg4ODksIDE2ODg5MywgMTY4ODk3LCAxNjg5MDEsIDE2ODkwNSwgMTY4OTA4LCAxNjg5MTEsIAorICAgIDE2ODkxNSwgMTY4OTE5LCAxNjg5MjMsIDE2ODkyNywgMTY4OTMxLCAxNjg5MzUsIDE2ODkzOSwgMTY4OTQzLCAxNjg5NDcsIAorICAgIDE2ODk1MSwgMTY4OTU1LCAxNjg5NTksIDE2ODk2MywgMTY4OTY3LCAxNjg5NzEsIDE2ODk3NSwgMTY4OTc5LCAxNjg5ODMsIAorICAgIDE2ODk4NywgMTY4OTkxLCAxNjg5OTUsIDE2ODk5OSwgMTY5MDAzLCAxNjkwMDcsIDE2OTAxMSwgMTY5MDE1LCAxNjkwMTksIAorICAgIDE2OTAyMywgMTY5MDI3LCAxNjkwMzEsIDE2OTAzNSwgMTY5MDM5LCAxNjkwNDMsIDE2OTA0NywgMTY5MDUxLCAxNjkwNTUsIAorICAgIDE2OTA1OSwgMTY5MDYzLCAxNjkwNjcsIDE2OTA3MSwgMTY5MDc1LCAxNjkwNzksIDE2OTA4MywgMTY5MDg3LCAxNjkwOTEsIAorICAgIDE2OTA5NSwgMTY5MDk5LCAxNjkxMDMsIDE2OTEwNywgMTY5MTExLCAxNjkxMTUsIDE2OTExOSwgMTY5MTIzLCAxNjkxMjcsIAorICAgIDE2OTEzMSwgMTY5MTM1LCAxNjkxMzksIDE2OTE0MywgMTY5MTQ3LCAxNjkxNTEsIDE2OTE1NSwgMTY5MTU5LCAxNjkxNjMsIAorICAgIDE2OTE2NywgMTY5MTcxLCAxNjkxNzUsIDE2OTE3OSwgMTY5MTgzLCAxNjkxODcsIDE2OTE5MSwgMTY5MTk1LCAxNjkxOTksIAorICAgIDE2OTIwMywgMTY5MjA3LCAxNjkyMTEsIDE2OTIxNSwgMTY5MjE5LCAxNjkyMjMsIDE2OTIyNywgMTY5MjMxLCAxNjkyMzUsIAorICAgIDE2OTIzOSwgMTY5MjQzLCAxNjkyNDcsIDE2OTI1MSwgMTY5MjU0LCAxNjkyNTgsIDE2OTI2MiwgMTY5MjY2LCAxNjkyNzAsIAorICAgIDE2OTI3NCwgMTY5Mjc4LCAxNjkyODIsIDE2OTI4NiwgMTY5MjkwLCAxNjkyOTQsIDE2OTI5OCwgMTY5MzAyLCAxNjkzMDYsIAorICAgIDE2OTMxMCwgMTY5MzE0LCAxNjkzMTgsIDE2OTMyMiwgMTY5MzI2LCAxNjkzMzAsIDE2OTMzNCwgMTY5MzM4LCAxNjkzNDIsIAorICAgIDE2OTM0NiwgMTY5MzUwLCAxNjkzNTQsIDE2OTM1OCwgMTY5MzYyLCAxNjkzNjYsIDE2OTM3MCwgMTY5Mzc0LCAxNjkzNzgsIAorICAgIDE2OTM4MiwgMTY5Mzg2LCAxNjkzOTAsIDE2OTM5NCwgMTY5Mzk4LCAxNjk0MDIsIDE2OTQwNiwgMTY5NDEwLCAxNjk0MTQsIAorICAgIDE2OTQxOCwgMTY5NDIyLCAxNjk0MjYsIDE2OTQzMCwgMTY5NDM0LCAxNjk0MzgsIDE2OTQ0MiwgMTY5NDQ2LCAxNjk0NTAsIAorICAgIDE2OTQ1NCwgMTY5NDU4LCAxNjk0NjIsIDE2OTQ2NiwgMTY5NDcwLCAxNjk0NzQsIDE2OTQ3OCwgMTY5NDgyLCAxNjk0ODYsIAorICAgIDE2OTQ5MCwgMTY5NDk0LCAxNjk0OTgsIDE2OTUwMiwgMTY5NTA2LCAxNjk1MTAsIDE2OTUxNCwgMTY5NTE4LCAxNjk1MjIsIAorICAgIDE2OTUyNiwgMTY5NTMwLCAxNjk1MzQsIDE2OTUzOCwgMTY5NTQyLCAxNjk1NDYsIDE2OTU1MCwgMTY5NTU0LCAxNjk1NTgsIAorICAgIDE2OTU2MiwgMTY5NTY2LCAxNjk1NzAsIDE2OTU3NCwgMTY5NTc4LCAxNjk1ODIsIDE2OTU4NiwgMTY5NTkwLCAxNjk1OTQsIAorICAgIDE2OTU5OCwgMTY5NjAyLCAxNjk2MDYsIDE2OTYxMCwgMTY5NjE0LCAxNjk2MTgsIDE2OTYyMiwgMTY5NjI2LCAxNjk2MzAsIAorICAgIDE2OTYzNCwgMTY5NjM4LCAxNjk2NDIsIDE2OTY0NiwgMTY5NjUwLCAxNjk2NTQsIDE2OTY1OCwgMTY5NjYyLCAxNjk2NjYsIAorICAgIDE2OTY3MCwgMTY5Njc0LCAxNjk2NzgsIDE2OTY4MiwgMTY5Njg2LCAxNjk2OTAsIDE2OTY5NCwgMTY5Njk4LCAxNjk3MDIsIAorICAgIDE2OTcwNiwgMTY5NzEwLCAxNjk3MTQsIDE2OTcxOCwgMTY5NzIyLCAxNjk3MjYsIDE2OTczMCwgMTY5NzM0LCAxNjk3MzgsIAorICAgIDE2OTc0MiwgMTY5NzQ2LCAxNjk3NTAsIDE2OTc1NCwgMTY5NzU4LCAxNjk3NjIsIDE2OTc2NiwgMTY5NzcwLCAxNjk3NzQsIAorICAgIDE2OTc3OCwgMTY5NzgyLCAxNjk3ODYsIDE2OTc5MCwgMTY5Nzk0LCAxNjk3OTgsIDE2OTgwMiwgMTY5ODA2LCAxNjk4MTAsIAorICAgIDE2OTgxNCwgMTY5ODE4LCAxNjk4MjIsIDE2OTgyNiwgMTY5ODMwLCAxNjk4MzQsIDE2OTgzOCwgMTY5ODQyLCAxNjk4NDYsIAorICAgIDE2OTg1MCwgMTY5ODU0LCAxNjk4NTgsIDE2OTg2MiwgMTY5ODY2LCAxNjk4NzAsIDE2OTg3NCwgMTY5ODc4LCAxNjk4ODIsIAorICAgIDE2OTg4NiwgMTY5ODkwLCAxNjk4OTQsIDE2OTg5OCwgMTY5OTAyLCAxNjk5MDYsIDE2OTkxMCwgMTY5OTE0LCAxNjk5MTgsIAorICAgIDE2OTkyMiwgMTY5OTI2LCAxNjk5MzAsIDE2OTkzNCwgMTY5OTM4LCAxNjk5NDIsIDE2OTk0NiwgMTY5OTUwLCAxNjk5NTQsIAorICAgIDE2OTk1OCwgMTY5OTYyLCAxNjk5NjYsIDE2OTk3MCwgMTY5OTc0LCAxNjk5NzgsIDE2OTk4MiwgMTY5OTg2LCAxNjk5OTAsIAorICAgIDE2OTk5NCwgMTY5OTk4LCAxNzAwMDIsIDE3MDAwNiwgMTcwMDEwLCAxNzAwMTQsIDE3MDAxOCwgMTcwMDIzLCAxNzAwMjgsIAorICAgIDE3MDAzMywgMTcwMDM3LCAxNzAwNDMsIDE3MDA1MCwgMTcwMDU3LCAxNzAwNjQsIDE3MDA3MSwgMTcwMDc4LCAxNzAwODUsIAorICAgIDE3MDA5MiwgMTcwMDk5LCAxNzAxMDYsIDE3MDExMywgMTcwMTIwLCAxNzAxMjcsIDE3MDEzNCwgMTcwMTQwLCAxNzAxNDcsIAorICAgIDE3MDE1NCwgMTcwMTYwLCAxNzAxNjcsIDE3MDE3NCwgMTcwMTgxLCAxNzAxODgsIDE3MDE5NSwgMTcwMjAyLCAxNzAyMDksIAorICAgIDE3MDIxNiwgMTcwMjIzLCAxNzAyMzAsIDE3MDIzNywgMTcwMjQ0LCAxNzAyNTEsIDE3MDI1OCwgMTcwMjY0LCAxNzAyNzAsIAorICAgIDE3MDI3NywgMTcwMjg2LCAxNzAyOTUsIDE3MDMwNCwgMTcwMzEzLCAxNzAzMTgsIDE3MDMyMywgMTcwMzI5LCAxNzAzMzUsIAorICAgIDE3MDM0MSwgMTcwMzQ3LCAxNzAzNTMsIDE3MDM1OSwgMTcwMzY1LCAxNzAzNzEsIDE3MDM3NywgMTcwMzgzLCAxNzAzODksIAorICAgIDE3MDM5NSwgMTcwNDAwLCAxNzA0MDYsIDE3MDQxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiB9OwogCiAvKiBuYW1lLT5jb2RlIGRpY3Rpb25hcnkgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQgY29kZV9oYXNoW10gPSB7Ci0gICAgNzQyMjQsIDQ4NTEsIDEyNTEzOCwgNzgxNTYsIDc4NDk5LCA3MjM5MSwgNzkyOSwgNjY5MTAsIDE5NDY4MiwgMTI3NzY2LCAKKyAgICA3NDIyNCwgNDg1MSwgMTI1MTM4LCA3ODE1NiwgNzg0OTksIDcyMzkxLCA3OTI5LCA4OTk5LCAxOTQ2ODIsIDEyNzc2NiwgCiAgICAgNzg1MDAsIDY2NDgwLCA2NDAzOCwgNDI4MzMsIDc0NTI5LCAxMjA2NCwgNzIzODUsIDU5NiwgOTgzODIxLCA2OTg1MCwgCi0gICAgMTMxOTIsIDg2NTEsIDEyMDIxNywgMTI2NTQyLCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgMTE5ODU2LCAxMTM3NTIsIAorICAgIDEzMTkyLCA4NjUxLCAxMjAyMTcsIDY2Nzg5LCAxMjAyMTgsIDEyOTk1LCA2NDg2NSwgMTM3MywgNzA3NDAsIDExMzc1MiwgCiAgICAgNTgxNiwgMTE5MDY3LCA2NDgxMCwgNDIzMSwgNjgyNSwgNDI4OTcsIDQyMzMsIDQyMzQsIDQyMzIsIDEyMDg4OSwgNzQ0MTUsIAotICAgIDEyMDIxMCwgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAotICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIDAsIAotICAgIDEyMDYxOCwgMTI4MzQzLCAxNDU3LCAzNTM1LCAxMjg2MzUsIDYzODEsIDAsIDAsIDY1MjQwLCAxMTk1MSwgMCwgMzQwNCwgCi0gICAgOTgzMDc5LCA3MDQ4NywgNzI0MTEsIDE3NTksIDEyMDg1MywgNDEwNzYsIDY4MzgzLCA2OTk3MiwgMTE5MjA1LCA2NjU3NywgCi0gICAgOTQwMTQsIDEyNzc2NCwgNjU4NTksIDAsIDc0MDQsIDAsIDAsIDY5OTcwLCAxMjgzODcsIDY1OTA4LCA5ODM0LCAzMDU1LCAKLSAgICA5ODUyLCAxMjgzNjAsIDY1Mjg4LCAxMjEyOTEsIDExMzk4LCAwLCA5MjQxNywgOTMwMTYsIDEyODM4MCwgMTI3MzM3LCA2MDMsIAotICAgIDc0Mzk4LCA0MzU0OCwgMCwgNzE4NjUsIDkxNzgyNCwgMzM1MCwgMTIwODE3LCA2NDMxOCwgMTk0Njk4LCA3ODEyMSwgMzM5MCwgCi0gICAgNzQ0ODMsIDQzMjY1LCA5MjM5OSwgOTE3ODMwLCA3ODU3MywgMTE4ODAzLCAxOTE5LCAzNDAwLCAxMjA2NTEsIDgzMjk2LCAKLSAgICAxMTY0NywgODMyOTgsIDY2NDQ2LCA2NDE0MSwgODU2MiwgMjEyMSwgNjQxMzgsIDQwNDMsIDg3MTIsIDY0MTM0LCA2NDEzMywgCi0gICAgMTEyOTcsIDk4MzY4OCwgOTgzMTUyLCAxMTk2NiwgNjQxMjgsIDY2Mjg2LCA5MzA0MiwgMTI4ODMwLCA2NDEzMiwgMTA4NjcsIAotICAgIDY0MTMwLCA2NDEyOSwgMTIxMjU1LCA0MzM3NCwgOTc3OSwgMjc2NCwgNjYwMDIsIDEwMTY3LCA5NDcxLCA4MzQ1OCwgCi0gICAgNjYwMjEsIDc0NTA5LCAwLCA1NDU3LCA1NDQwLCA4ODU3LCA5Mzk4MSwgNjUyODIsIDI4NDMsIDUzNTUsIDY4ODU4LCAKLSAgICA5ODMzNDIsIDY5OTcxLCA1MTk0LCAxMTY1NywgNDM5ODQsIDEyODI5MiwgMTEzNzI0LCAxMjg4NzIsIDAsIDAsIDcyMzkzLCAKLSAgICAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgCi0gICAgMCwgMCwgNjQ5MzAsIDExNjMxLCA2NDE0NiwgNjQxNDUsIDY0MTQ0LCA3NjIsIDEzMTcyLCA3NTAwOCwgNzc5MjgsIDQzOTI5LCAKLSAgICAxMDkwNiwgMTM1MywgNjk2MCwgODMwMzIsIDEyODc3OSwgNTgyOCwgODcyNCwgOTE3ODA2LCA4OTMzLCAxNjAxLCA0MjI0NCwgCi0gICAgODU4LCA3MDgwLCA2NDEwOSwgNjQxMDgsIDgwOTAsIDcwNDU1LCA3MjM4OCwgNzQ2MDYsIDU4NywgOTE3OTA3LCA4Mjk3MSwgCi0gICAgMCwgMCwgMCwgNzgyMTQsIDI3NTAsIDc0MjE4LCA1NTYsIDY0MTU4LCA2NDE1NywgNzg3MDcsIDEyMjEzLCA4MzI5MCwgCi0gICAgMjc2MCwgODMyODQsIDgzMjg1LCA3ODcwOCwgODMyODcsIDY0MTU2LCA2NDE1NSwgNDI0OTYsIDgzMjgzLCA2NDE1MSwgCi0gICAgNjQxNTAsIDEyNjc5LCAxMDA1MywgMTA0MjEsIDExMDkzLCA2NDE1MywgNjQxNTIsIDEyNTAxNiwgMCwgNDgzOSwgNjg1MjcsIAotICAgIDAsIDE4NzQsIDExOTAxNiwgMTIwMDkxLCA2NTc3LCA2NDEyNSwgNjQxMjQsIDY0MTIzLCAwLCAxMjc1MzEsIDkyNTM0LCAKLSAgICA3MDA3LCA3NTkwLCA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIAotICAgIDY0MTE2LCA2Mjg3LCA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgCi0gICAgNjU2MDEsIDEyMzIyLCA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDAsIDEwNDUzLCAKLSAgICA2NDEwNCwgNzE4OCwgNzk5NywgMCwgNzM4OSwgOTgzMTYxLCA4NzA1LCA2NDA5NywgNjQwOTYsIDk1NzEsIDUyOCwgCi0gICAgMTI4NTQ1LCA0NDAxNywgMTE0MjksIDcxMzQ3LCAwLCA5ODMwNzcsIDEyMDg2NCwgNzM4NDEsIDgzMzM5LCA4MzM0MCwgCi0gICAgOTA1NiwgNjQzMTMsIDYxODgsIDc0MzYwLCA2MTU1LCA2NDA2OCwgMTgyMywgNjQwNjYsIDY0MDY1LCA2NDA3MiwgNjQwNzEsIAotICAgIDYzLCA3MjMzLCA5MjIxMiwgNzI0MTQsIDQxOTA0LCA2NjM5LCA2NDA2NCwgOTgzNzc1LCAxMjgzNDQsIDEyMTM4OCwgMTE3NiwgCi0gICAgMTE4OTU5LCAxMjc5MzAsIDgxNjIsIDEyNzAxOSwgMTI4MTk3LCA5Mjc0NywgMTIwNTE5LCA0MjkzMSwgNjYyNDIsIDExNDE1LCAKLSAgICA0MzMzLCA5ODU1LCA2NDExMiwgNjQ2NDIsIDAsIDUzODgsIDAsIDEyMTI3MSwgOTgzNjQ5LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAorICAgIDEwMDQxMywgNjM4NCwgNzAzNTEsIDc4MTA4LCA4ODUxLCA2NzY5OCwgMTI4NTUzLCA4Mjk1NCwgNDE2MDEsIDg4NzQsIAorICAgIDcyMzkyLCA3NzQ4LCAxMjUwODMsIDAsIDEyNzAyNiwgMTI3OTM5LCA0MTYwMywgOTc4NCwgMCwgOTE4OCwgNDE2MDAsIAorICAgIDk4Mzk4MSwgMTIwNjE4LCAxMjgzNDMsIDE0NTcsIDM1MzUsIDEyODYzNSwgNjM4MSwgMTAwODcyLCA2Njc5NywgNjUyNDAsIAorICAgIDExOTUxLCAwLCAzNDA0LCA5ODMwNzksIDcwNDg3LCA3MjQxMSwgMTc1OSwgMTIwODUzLCA0MTA3NiwgNjgzODMsIDY5OTcyLCAKKyAgICAxMTkyMDUsIDY2NTc3LCA5NDAxNCwgMTI3NzY0LCA2NTg1OSwgMTI1MjUzLCA3NDA0LCAxMjUyNDgsIDEyODMwOCwgNjk5NzAsIAorICAgIDEyMDY0OCwgNjU5MDgsIDk4MzQsIDMwNTUsIDIyMzQsIDEyODM2MCwgNjUyODgsIDEyMTI5MSwgMTEzOTgsIDAsIDkyNDE3LCAKKyAgICA5MzAxNiwgMTI4MzgwLCAxMjczMzcsIDYwMywgNzQzOTgsIDQzNTQ4LCAwLCA3MTg2NSwgMTI5MzY2LCAzMzUwLCAxMjA4MTcsIAorICAgIDY0MzE4LCAxMjA2OTksIDc4MTIxLCAzMzkwLCA3NDQ4MywgNDMyNjUsIDkyMzk5LCA5MTc4MzAsIDc4NTczLCAxMTg4MDMsIAorICAgIDE5MTksIDM0MDAsIDEyMDY1MSwgODMyOTYsIDExNjQ3LCA4MzI5OCwgNjY0NDYsIDY0MTQxLCA4NTYyLCAyMTIxLCA2NDEzOCwgCisgICAgNDA0MywgODcxMiwgNjQxMzQsIDY0MTMzLCAxMTI5NywgOTgzNjg4LCA5ODMxNTIsIDExOTY2LCA2NDEyOCwgNjYyODYsIAorICAgIDkzMDQyLCAxMjg4MzAsIDY0MTMyLCAxMDg2NywgNjQxMzAsIDY0MTI5LCAxMjEyNTUsIDQzMzc0LCA5Nzc5LCAyNzY0LCAKKyAgICA2NjAwMiwgMTAxNjcsIDk0NzEsIDgzNDU4LCA2NjAyMSwgNzQ1MDksIDk4MzMwOCwgNTQ1NywgNTQ0MCwgODg1NywgOTM5ODEsIAorICAgIDY1MjgyLCAyODQzLCA1MzU1LCA2ODg1OCwgMTAwNTMwLCA2OTk3MSwgNTE5NCwgMTE2NTcsIDQzOTg0LCAxMjgyOTIsIAorICAgIDEwMDUyOSwgMTI4ODcyLCAwLCA5ODM5MDcsIDcyMzkzLCAxMDcxNywgNjQ1NzAsIDU2MzAsIDUzOTYsIDY0MTQzLCAxMDY4MiwgCisgICAgODMzMDAsIDEwNjAyLCA4MDAsIDQyNDk5LCA2NjE4NiwgMCwgMTI4MTQ2LCA2NDkzMCwgMTE2MzEsIDY0MTQ2LCA2NDE0NSwgCisgICAgNjQxNDQsIDc2MiwgMTMxNzIsIDc1MDA4LCA3NzkyOCwgNDM5MjksIDEwOTA2LCAxMzUzLCA2OTYwLCA4MzAzMiwgMTAwNDIzLCAKKyAgICA1ODI4LCA4NzI0LCAxMjI5MTYsIDg5MzMsIDE2MDEsIDQyMjQ0LCA4NTgsIDcwODAsIDY0MTA5LCA2NDEwOCwgODA5MCwgCisgICAgNzA0NTUsIDcyMzg4LCA3NDYwNiwgNTg3LCAxOTQ2NDksIDgyOTcxLCA5ODM4MDgsIDEyOTM0NSwgMTk0Nzk1LCA3ODIxNCwgCisgICAgMjc1MCwgNzQyMTgsIDU1NiwgNjQxNTgsIDY0MTU3LCA3ODcwNywgMTIyMTMsIDgzMjkwLCAyNzYwLCA4MzI4NCwgODMyODUsIAorICAgIDc3OTM0LCA4MzI4NywgNjQxNTYsIDY0MTU1LCA0MjQ5NiwgODMyODMsIDY0MTUxLCA2NDE1MCwgMTI2NzksIDEwMDUzLCAKKyAgICAxMDQyMSwgMTEwOTMsIDY0MTUzLCA2NDE1MiwgMTI1MDE2LCAwLCA0ODM5LCA2ODUyNywgMTI1MDkxLCAxODc0LCAxMTkwMTYsIAorICAgIDEyMDA5MSwgNjU3NywgNjQxMjUsIDY0MTI0LCA2NDEyMywgMTIwMTg4LCAxMjc1MzEsIDkyNTM0LCA3MDA3LCA3NTkwLCAKKyAgICA2NTQ0MywgOTAzNiwgNzg4NDcsIDY0MTIyLCA2NjM4OSwgNjY2MDksIDEyMTM0NywgNjQxMTcsIDY0MTE2LCA2Mjg3LCAKKyAgICA2NDExNCwgMjcyNSwgNjQxMjAsIDY0MTE5LCA0Mzk4MSwgNDIxMjgsIDEyNzg0MiwgMTE3NywgNjU2MDEsIDEyMzIyLCAKKyAgICA2NDEwNiwgNjk2NDAsIDkyODk1LCA2NDEwMiwgNzg1OSwgMTk0NSwgNjQwOTksIDk4MzQ4MiwgMTA0NTMsIDY0MTA0LCAKKyAgICA3MTg4LCA3OTk3LCAxMjg2MDAsIDczODksIDk4MzE2MSwgODcwNSwgNjQwOTcsIDY0MDk2LCA5NTcxLCA1MjgsIDEyODU0NSwgCisgICAgNDQwMTcsIDExNDI5LCA3MTM0NywgMCwgOTgzMDc3LCAxMjA4NjQsIDczODQxLCA4MzMzOSwgODMzNDAsIDkwNTYsIDY0MzEzLCAKKyAgICA2MTg4LCA3NDM2MCwgNjE1NSwgNjQwNjgsIDE4MjMsIDY0MDY2LCA2NDA2NSwgNjQwNzIsIDY0MDcxLCA2MywgNzIzMywgCisgICAgNzQ5NTMsIDcyNDE0LCA0MTkwNCwgNjYzOSwgNjQwNjQsIDk4Mzc3NSwgMTI4MzQ0LCAxMjEzODgsIDExNzYsIDExODk1OSwgCisgICAgMTI3OTMwLCA4MTYyLCAxMjcwMTksIDEyODE5NywgOTI3NDcsIDEyMDUxOSwgNDI5MzEsIDY2MjQyLCAxMTQxNSwgNDMzMywgCisgICAgOTg1NSwgNjQxMTIsIDY0NjQyLCAwLCA1Mzg4LCA5ODM0MDUsIDEyMTI3MSwgOTE3OTA3LCA3NzE0LCA2NjIyMiwgNjk5MDIsIAogICAgIDc3NjgsIDcyNDAzLCA0MTk5LCA2NDcwOCwgNjUwNjQsIDcwMTE3LCAwLCA4NzA4LCA5NTYwLCA2NDA3NywgNjQwNzYsIAotICAgIDg5OTYsIDQ5OTIsIDQ0NzEsIDQyNjIyLCA2NDA3OSwgNjQwNzgsIDkyMTc5LCA3MTg3OCwgMTI2NTcwLCAxMjEyNTYsIAotICAgIDY0NjE1LCA0MTkxNSwgMCwgMTIwNzUsIDQyMDQxLCAxOTQ4MjUsIDUxNzQsIDk4MzIxNywgMCwgMTI3NTU3LCAzMTIzLCAKLSAgICAxMjUxMDAsIDEyNjg1LCAxMTkyMTYsIDg0MDgsIDY0NzA0LCA4MzMyOCwgMCwgOTIyMywgMCwgNDE2MTYsIDY3OTk5LCAKLSAgICA3Mzc5NywgODMzMjcsIDExMTYsIDc1MDY3LCA0MzA0OSwgNzEzNiwgNDMwNTAsIDg1NDgsIDEyMDQ4NSwgMCwgNzUwMzEsIAotICAgIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIDY0MDk1LCA2NDA5NCwgCi0gICAgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgMTE0MzQsIDY0MDgzLCAKLSAgICA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgOTkyNywgNDEzMzUsIDQxMTgsIAotICAgIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA4MzMwOSwgMjk4LCA4MzMwMywgODMzMDQsIDgzMzA1LCA0MjYyNywgCi0gICAgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIDQyODcxLCAwLCAxOTkyMywgCi0gICAgNzQzMzUsIDAsIDEyNzE5MiwgNjYyMzksIDQyMjY0LCA2NDQwMywgNDQxMiwgNzI0MCwgODMzMTQsIDcxNDQ0LCA5ODM0NjgsIAotICAgIDY1NzU4LCAxMjc1MCwgNDE4MSwgODU0NCwgODM0NjEsIDY4MDUzLCA4MzQwNywgMTIwMTk4LCA2OTgwOSwgNjE4MSwgCi0gICAgNjUwMTQsIDk4MzQyMiwgMTI4NDg0LCA5ODMxOTYsIDM2MzksIDExOTU4OCwgMTE4ODUxLCA4MzAzOSwgMTE4OTA0LCAKLSAgICAxMDA3MywgMTIwMjA2LCA4MzAzOCwgMTI3MTg2LCA2ODQwOSwgNDI4NDQsIDc0OTgsIDEwOTgsIDkyNTY1LCAxMjAyMDUsIDAsIAotICAgIDEyODkxNSwgMTAyMDcsIDg3ODksIDkzMDcwLCAxMjAzMzgsIDkyOTczLCAxMjgzMjUsIDkyMzQsIDkxNzg5NSwgNjE4MiwgCi0gICAgOTgzNDc1LCA2NTA1OCwgMTIwMzE5LCA5ODM0ODAsIDY4MDY0LCA5MTc4MzEsIDU0NzEsIDk0NjEsIDU1NzMsIDExODkzNiwgCi0gICAgNTQ3MywgNDQsIDAsIDY2MjQ0LCA5NDA3MiwgMCwgNjYyMzgsIDEyODQ0LCA2Njg5NCwgMTYyMiwgNzc2NywgMTkwMCwgCi0gICAgNDEzMzksIDExNDU4LCAxMTkwNjEsIDAsIDY1ODEsIDU1NzYsIDEyODYxOCwgNDM4NTUsIDQxMzM3LCAwLCA0MTYzMSwgCi0gICAgODk0NywgNjgzOTAsIDY5NjgzLCA0MTY5NCwgOTgzODQ4LCA3MjM5NiwgNzkwOCwgMCwgMTA0MDgsIDY1NzksIDkxNzg3MiwgCi0gICAgNjQ2MTgsIDAsIDEyMDE0NywgMjEzOCwgNjU4MywgNzc2MSwgNzAwMDUsIDEyMDUwNCwgMTk0ODI4LCAxMjg5NjEsIDUwNTgsIAotICAgIDQxMDEwLCA5OTkyLCAxMjgyOTksIDUwNTcsIDkxNzk0MSwgMCwgNzQ1MzgsIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgCi0gICAgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgMTI4NTA5LCA3NDg2LCA1MDYxLCA1MDYwLCA0MjM1LCAxMjc4NzgsIAotICAgIDEyODMyMiwgMTI4NTI5LCAxMjExMywgNDIzNiwgNDcyNywgMTI4NDg3LCAwLCA3NjkzLCAxMDc0OSwgMTIwMzMyLCA3NDg4LCAKLSAgICA1NzczLCA5NzgsIDEyODEzNCwgOTgzNjk5LCA0MTYxOSwgMTAyMzksIDY4NjExLCA3MTg2NCwgNjYyMDksIDEyNzIzMywgCi0gICAgNzQxMzUsIDk3NDgsIDk4Mzk1NiwgMTI3NTI0LCAwLCA5ODMzMTYsIDE5NDY3NiwgMTk0Njc1LCAxMjgwODEsIDAsIAotICAgIDk4MzMxMywgOTgzMzAyLCAwLCAxMjc4NjUsIDAsIDkyNzc2LCA5MzQxLCA3ODgyMSwgMjM3OSwgMTEzMjUsIDkxNzkwMiwgCi0gICAgNjQ2NjgsIDY3ODU0LCA4MTI1LCAxMjA1NDUsIDY3NDMsIDgzMTY0LCA5MTc5NDAsIDIzNjksIDgzNDA2LCA5ODMzMjMsIAotICAgIDEyNzk2NiwgMTE5MjM1LCA3MTg2OCwgNzM5MzYsIDcwMDgsIDQzNjYwLCAxMjAzNDYsIDAsIDQzODQxLCAyMzY3LCAKLSAgICAxMjc4MjcsIDk4Mzg1NywgMjY0LCAyMzc1LCA4MDYwLCA2MTk0LCAxMTk4NTgsIDE4NDQsIDExOTA4NCwgMTI5MDQ5LCAKLSAgICA2MDE5LCAxMjg5NzUsIDAsIDY5NjEsIDAsIDcwNDM1LCA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIAotICAgIDYxOTIsIDExOTYxMCwgNDI3NzEsIDAsIDkyMzMzLCA3MjUsIDY1MDQyLCA5MzAxNCwgMTIwODAwLCA3NDk0MiwgMTI4OTIsIAotICAgIDAsIDY3MTQ5LCA3NDg5OSwgNzM5MzEsIDAsIDEyMDQ5NSwgMTI3MjYxLCAxMjIyNCwgOTgzMTI4LCAxMjkwNjEsIDUwNzQsIAotICAgIDUwNzMsIDEyMTE2NCwgODk4MywgMTE4OTgxLCA3NDQ5MywgNzEyMzEsIDUwNzIsIDc0NTQ3LCA2MTk4LCAxMTYxNCwgMCwgCi0gICAgMTk2LCA5ODMxNTQsIDAsIDk4MzkzNiwgNDkyOSwgMTIwMzQyLCAxMjkxNDUsIDAsIDEyNzk4NywgMTIxNDU1LCA0Mjg0NywgCi0gICAgOTI5NTMsIDAsIDY3NzU0LCA0OTM0LCA5ODM5ODEsIDQxMzIzLCA5NzU4LCAwLCA5MjI4OSwgNzAxODEsIDQyNTg0LCAwLCAKLSAgICA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDk4MzA0MiwgNjQ2NjcsIDEyODE5LCA5ODM4NzAsIDUwNzEsIAotICAgIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIDk4MzQ2MCwgODkwOSwgCi0gICAgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIDEyNDUsIDkxMDUsIDY2NDYzLCAKLSAgICA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjgwMjgsIDAsIDY0NzA5LCA4MzI2OSwgCi0gICAgMTI4ODU0LCA3ODg4MCwgNDkyMiwgMzI1LCA5OTIsIDExOTU2OCwgNDkyNSwgMTI3MjE4LCAwLCA5NTI2LCA0OTIwLCAKLSAgICAxMjg2MTcsIDk0OCwgMCwgMTIwMjA4LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAxMjAyNzUsIDQ5MzMsIDExMzc3OSwgCi0gICAgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIAotICAgIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMCwgNTQ2OCwgOTUxMSwgNDM0OTMsIDEyNzQ3NywgCi0gICAgMTY3MiwgNjIwNSwgMTA4NjQsIDc0NTg2LCAxMjc0ODAsIDcwMTAzLCA5MjY5NCwgNzg1NTUsIDEyNzQ2OCwgNzM4NjMsIAotICAgIDEyNjU3NywgNjgzMzYsIDQxNjA3LCAxMjAxMTUsIDE2NzksIDEyMDExNiwgMTIwMTgwLCA5Mjc2MSwgMTI3NDYyLCA3MDA1LCAKLSAgICA0MTYwOSwgOTU4MCwgNzA0MzEsIDQwMSwgNjk5NDksIDQzNzc5LCA2OTY4LCA1NzYxLCAzNDIsIDg1NTMsIDEyNzkwMCwgCi0gICAgODE0MywgMTI3MTE1LCAxMTk4MywgOTIyNDksIDYyNCwgNzQ1MDgsIDQwNTcsIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIAotICAgIDAsIDUwNzYsIDEyODcwMiwgODI5OTEsIDAsIDgyOTUsIDY4NSwgOTAyNSwgMTUyNCwgMTI2MTgsIDAsIDU1MzksIDEyOTE4MiwgCi0gICAgOTI1MjMsIDcxNDM1LCA3MTM4LCAxMjA1NTIsIDQzNTA0LCAxOTQ2MTEsIDY2OTE0LCA2NTc5NCwgMTI1MjAsIDgwNTgsIAotICAgIDk3MzIsIDkyNDgwLCA1MDgwLCA2NDc3NSwgNTAzNiwgNTAzNSwgMTIwNTkwLCA0MjYwNCwgOTgzNjU2LCAwLCA4MDc0LCAKLSAgICAyNzUsIDEzMjkxLCAxOTA3LCA3ODgzOCwgNDQzMiwgMTIxMzEzLCA1MDMzLCAxMjAzNDEsIDEyMDgxOCwgNDgzNiwgMzg4OCwgCi0gICAgNzM3OTIsIDEwNzI5LCA2NDU0NiwgMTI3MjYyLCA0MzcwNCwgMTI3MjY0LCA5Mjk1NywgNjc1ODgsIDY4MDYxLCAxMjQ5ODMsIAotICAgIDcwMzYwLCA4ODU4LCA2NDA5LCA3NjYzLCAxMjAyNTIsIDEyODEwMCwgMTE5MDA3LCAwLCA2NjMyMSwgOTQwNTIsIDEyODE0LCAKLSAgICAxMjcyNDgsIDM0MzIsIDEwMjE4LCAwLCA2MDk0LCA3NjQxLCA0MjQ0NSwgMTI4NzkyLCA5MjQ4NywgNDI0MDYsIDE2NzYsIAotICAgIDY3MzYyLCA3NDg2MiwgNjczNjUsIDUwMzAsIDY3MzY0LCAxMTg4MTAsIDE5NTAwOCwgNzM4NjksIDk2MjIsIDExMzc2MywgCi0gICAgNjk5NDQsIDY3ODcsIDY3MzYxLCA5ODMyNzAsIDAsIDY4MzE5LCAxMDU0NCwgMTI5MTksIDcxNDg0LCA3MjM5NywgMCwgMCwgCi0gICAgNjk5MDYsIDEyMDc4OSwgOTgzMDQxLCA5NDcsIDY3Njk1LCA2NzM2NywgMTI4NTI4LCAxMDk2OSwgNjcyMjgsIDc2MTMsIAotICAgIDkyNTYyLCAxMTk5MzYsIDQ3OTUsIDExOTkzMCwgNzAxOCwgNzM3NiwgMTIwMTgxLCAxMjAxOTIsIDEyMDI2OCwgMCwgCi0gICAgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIAotICAgIDQzOTUsIDQzNTM4LCAxMTk5MjYsIDExOTgzNCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgCi0gICAgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgCi0gICAgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgCi0gICAgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIAotICAgIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAKLSAgICAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIDAsIDAsIDAsIDExMzgsIDczOTA1LCAxMjY3NywgMTI4MjgwLCAKLSAgICA2NzcyNCwgMzIzOSwgNjY4OTMsIDEyODgxOCwgMCwgODQzMSwgMCwgNDIxNjQsIDcxMjI5LCAxMTc3OCwgMTI2MjAsIDY4MjYsIAotICAgIDczNzczLCA3MDE2OSwgNTA0MCwgMTI3OTY5LCAwLCA2NzA5NCwgNzg0MjAsIDAsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDAsIAotICAgIDUwMzgsIDAsIDk4Mzg2MiwgMTMxODQsIDQzOTYwLCAxMjA5MzEsIDY0NjQ4LCAwLCA5MzU5LCA3ODQxNiwgOTE3NjIzLCAKLSAgICAxMjg3NzAsIDY1MTU3LCA2NjYyLCAwLCA3MDE4MiwgMzg2MywgNzM5MDksIDQ4MzUsIDU1MjY2LCA0MzQzMiwgMTI3ODIyLCAKLSAgICA0MzA5LCA3MTI3LCAxOTQ1NjksIDAsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCA3MzgxMywgNzExLCAKLSAgICA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDE5NDU3MCwgNDEzMzEsIDEwMDYsIDc0MjQwLCAKLSAgICA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgNjU3ODQsIDQzOTU3LCAKLSAgICA2NTI2NywgMzc1OCwgMCwgNjU3ODEsIDY0NzM0LCA2NzIyMiwgMjQ0MCwgNDM5NTUsIDcwNzg3LCA4NDQ5LCAwLCA1MDA4LCAKLSAgICA5ODM1NzIsIDIxMTgsIDEyNjUwOCwgMTIxMjEsIDgyNTUsIDU1MTIsIDczODc1LCAyMTI4LCAyMTMwLCAyMTMxLCAyMTI2LCAKLSAgICAyMTMzLCAxMTE5LCAxMjEyNTAsIDIxMTQsIDIxMTYsIDI0NTUsIDExMzc5OCwgMjEyMiwgMjEyMywgMjEyNCwgMjEyNSwgCi0gICAgMTI3NDg2LCA4NzE0LCA5ODM4MjAsIDIxMTMsIDE5NTA0OSwgMjExNSwgMTI4MTc3LCAxMjc5MDcsIDQzNzEzLCA1MDUyLCAKLSAgICA2NjIyMCwgNTgyMSwgNjE4NiwgNjU3NzgsIDY1Nzc1LCA1MDUxLCA2NTc3MywgMTQyOSwgNDI2NDcsIDUwNTAsIDMwMiwgCi0gICAgMzg4LCA0MTExNSwgNzM1LCA2NjM3LCA1OTA3LCA2NTA4OCwgMCwgMTI3MjYsIDc0NTk0LCA5MTE3LCA5ODMxODEsIDEyMDAzLCAKLSAgICA1NTEzLCA1MTA5LCA1MDUzLCA3NDIzMCwgNTUxMCwgNzg0NTEsIDAsIDc4NDQ3LCAyNDcwLCA3ODQzNywgMCwgMTkyNSwgCi0gICAgNzEyNTEsIDkyMjM3LCA3NDgwNywgOTgzMDYyLCA1MDQ4LCA1MDQ3LCAxOTQ4MzcsIDk4MzM4MCwgNzQyMDEsIDkyMzEzLCAKLSAgICAxOTQ4MDIsIDc0NDk3LCA4Mjk4MiwgODA4OSwgNjkyOSwgNjM5LCA4Mjk4MSwgNjgxNzksIDY0NDQyLCA3MDE4MCwgODI5ODQsIAotICAgIDQ1OTksIDQxNDAyLCA2Njc0LCA0MzM5NywgNDMyOTQsIDE0NzYsIDY0OCwgMCwgNjU4MTksIDMyMzMsIDAsIDQxNzgyLCAKLSAgICA2OTUxLCA5NDAxNywgMTI5MTk3LCAzNTMwLCA5NzUwLCAxMjgzMTcsIDEyMDk5MSwgNjY1NiwgNDI2MTgsIDcwMTc1LCAKLSAgICA1MDQ2LCA4NTEyLCA2NTg1NiwgNzQyNjEsIDg5NjcsIDAsIDUwNDUsIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIAotICAgIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAKLSAgICAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCAKLSAgICA2Nzk4MywgMTMyOTYsIDUxNywgMCwgMTI4NDY3LCAxOTQ5NDYsIDQxNTI4LCAxMjMsIDY1NDU0LCAwLCAxMjEzMjYsIAotICAgIDc0NDc4LCAxMDUzMSwgNzc4NCwgNDE1MjYsIDEwODI5LCA3Mzk5MSwgODA1NywgMTEyNiwgNzM4OTUsIDE5NDg1NywgCi0gICAgMTk0NTkxLCAwLCAzOTI1LCA0MjUxLCA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAKLSAgICAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIDkyNzM4LCA2NjIwMCwgMCwgMCwgMTI1MDI2LCA3NDI5OCwgMTI4ODc5LCA5ODM0NzYsIAotICAgIDg3MTEsIDYxODMsIDgzNDQ4LCA5ODM5NTIsIDcyNDAyLCAxMjA0NDgsIDc2MjMsIDExODkyNSwgNjYzNzYsIDkyMzUsIAotICAgIDEyNzYwLCA3NDE3NiwgNjk2NjIsIDY2NDQ1LCA0MzU0MCwgMTAwNjIsIDM3NDMsIDExNTE0LCAxMTA3OCwgMCwgMTIxMzYsIAotICAgIDAsIDEyNjU5NywgMTIwNDM0LCAxOTQ4NTAsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIAotICAgIDE5NDg0OSwgNjkyMzMsIDI0NTgsIDAsIDYyMDEsIDAsIDQxMDc0LCA0MjY2LCAxMDY1MiwgNDE2MTIsIDQxMDc3LCAzNDAyLCAKLSAgICA5MDUwLCAzMzk4LCAxMjg0MjQsIDk4MzM1MCwgMCwgMzM5MSwgNDEwNzUsIDI0NzYsIDAsIDEyODAxNywgMCwgMTA2MjUsIAotICAgIDEyOTEwNiwgMTI3NjcsIDEzMDE3LCA3ODc0MywgNjQyNjEsIDY0OTM0LCA3MDE1MiwgMTMwMTQsIDEzMDEzLCAxMjExOTgsIAotICAgIDY2NzMsIDAsIDAsIDEyMTMyNCwgMTI0MzgsIDAsIDk4MzM0NCwgODMxMDYsIDcxMTI4LCAxMjAwNjIsIDkwNTMsIDEzMDE1LCAKLSAgICA3NDUyMywgMCwgNzA0LCA2NjIxNSwgNjE5NSwgNzQ5NDksIDY2NjAsIDc4NzU4LCA5MTc3NjAsIDc0ODYxLCA0MjIxMiwgCi0gICAgMTI2MjksIDExNDM1LCAwLCA1NTI1NiwgNjU1MzgsIDY3MzQzLCAxMjE0MzcsIDEyOTA4NiwgNDM4NzYsIDkyOTQxLCAKLSAgICA2NTQ0OCwgNzgxMDAsIDEyOTQ4LCAxMTkwMDEsIDEyODU5NSwgNDM5NDksIDEyMDA0OCwgNzgwOTksIDEyNzA4NSwgMCwgCi0gICAgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgNDM5NTIsIDQyNTMzLCAKLSAgICAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgNTc4LCAzNjUzLCAKLSAgICAxMjg5NDYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIDQzNTkwLCAKLSAgICAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIDExOTE2NywgCi0gICAgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNzgwODAsIDY3MywgMTk0ODY3LCA2NDM5NywgCi0gICAgMTI4Mjc2LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTk0OTc2LCAyNDQ4LCA3ODA4NSwgMTAyNjcsIDg0MjQsIAotICAgIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNjU2NCwgNzEzMDIsIDQ0MDgsIDQxMjIsIAotICAgIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCA2NDg1NSwgCi0gICAgMTE5MzAwLCAxMTkyOTksIDExNzUsIDAsIDQyMTM1LCAzNzMsIDExOTE3MiwgMjExOSwgMTE0NTcsIDExNTIxLCA3NzIzLCAKLSAgICAxMjg2MzksIDAsIDAsIDQxOTUyLCA5MzAyMywgNTI3MywgMjEyNywgNTI2OSwgNjMzNywgNTIwMiwgMjQwNCwgNTI2NywgCi0gICAgNDI4MjMsIDExMjkxLCAxOTkxNSwgNTI3NywgMTI5NjMsIDcwMzIwLCA2MTg5LCA0MTI1LCAxMzE0LCAxMjEzMywgMTIwMzQwLCAKLSAgICAxMTg4NzMsIDEyNzEsIDk4MzY0MCwgMTI5MTEyLCA2NjAyNCwgNDE0ODIsIDM4NjQsIDkyMDQsIDAsIDM4NzksIDAsIAotICAgIDEyOTc4LCA0MTY2LCA0NTc0LCAxMjgxMTEsIDc1NjcsIDc0NTksIDc4MTI4LCA0MTM5MCwgNTM4NCwgNDE4ODIsIDY3NjQ3LCAKLSAgICA3MDE1NCwgNTc1OSwgMTk0ODY5LCAxMjE0MTMsIDQxMzg4LCA2NDQ0NiwgNDEzOTIsIDY0Mjg4LCA0MTM4NywgNjcyMDEsIAotICAgIDg3MDYsIDU1NTIsIDY4ODM3LCA3MDAsIDAsIDU1NTMsIDAsIDcwODgsIDUzNTYsIDc0OTksIDY4MDA3LCA2NjU5NiwgCi0gICAgNzQwNjYsIDY3MjUxLCAxMDI2MywgNTU1NCwgMCwgMTIzNDQsIDEwMzExLCA3ODExMywgNjY2NSwgMTExMTUsIDEyMTAzNSwgCi0gICAgNzYxOCwgODUxNywgMTE0NTUsIDc4NDQwLCA2NDYzMiwgNjQ0NDcsIDU1NTUsIDc4MDg4LCA3ODA5MywgNzgwOTEsIDAsIAotICAgIDQyODAzLCA2NTAzMywgOTE0MywgNjY2OCwgNjcyODgsIDY3OTk1LCAxOTUwNjksIDY1NiwgMTk1MDcxLCA2NTAzNywgNDU3NywgCi0gICAgNjQ2MjQsIDAsIDAsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAwLCAKLSAgICA5MjI3MywgNjY1ODAsIDc3OTkyLCA2NjY4MywgMTA1NTQsIDExOTAwOCwgMTE5MTIxLCA2ODMyLCA1MDk4LCA5MTc3NjgsIAotICAgIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIDEwMzgxLCAwLCA2NzI5NiwgOTI4OTYsIDM2NTEsIDAsIDY3Mjk0LCAKLSAgICA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgCi0gICAgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgCi0gICAgMCwgMTI4NjU1LCAxOTUwNDAsIDExOTE0MiwgOTAzMSwgNzA4MjksIDc4NDI3LCA5MDc4LCA4NTQ1LCA2NjM1NiwgMTI4Nzk5LCAKLSAgICAxOTQ5MjMsIDkxNTQsIDkxMTgsIDEyNjU0MywgMTE5NTg2LCAyNjc2LCAyMjc3LCAxMjg0MjIsIDY4MjM3LCA2MTkwLCAKLSAgICA4NTk5LCAxMjUxMTgsIDY5OTE4LCAxMDc5NSwgOTg1NywgNzAxNCwgOTg1NiwgMTk1MDMzLCA3MTkwMywgMTIxMjksIAotICAgIDEyNjY1MSwgODQ4MSwgODMwNjgsIDYyMDIsIDY3NzExLCAxMDkyMCwgMTEzNzI2LCA1MjAzLCAxOTUwMzksIDE5NTAzOCwgCi0gICAgNTEwOCwgNTEwNywgNjU4MTgsIDY2MDE5LCA5NzYyLCAxMTIwNSwgNTU0MSwgNzQ3NzIsIDAsIDEyNjEzLCA1Mjg0LCA2NjU3LCAKLSAgICAyMDcsIDEyMTIwNiwgNDI3NSwgNzQ4MTksIDg1NCwgNjgxNDcsIDc0MzgxLCA2NjgxNiwgNzg3ODYsIDUxMDMsIDEyNzg2MSwgCi0gICAgNjQzNDgsIDQxMzY4LCA0Mzk3NCwgNDg4LCA2OTgxMSwgMCwgNzEzMzksIDEwMTU3LCAxOTQ2MTIsIDQzMDM0LCAxMTQzOCwgCi0gICAgNjQ2NzQsIDAsIDcwMTU4LCA2ODQzMSwgNDE3NzEsIDUxMDYsIDY2NjksIDg1MDQsIDY1MTU0LCA2OTgxMywgNDEzNjcsIAotICAgIDUxMDUsIDY1MjY2LCA2OTcyMCwgNjQ3NiwgNTEwNCwgOTgzNzQ5LCAzMDQsIDMxNzYsIDc4ODcxLCA3MDE0OSwgOTMyLCAKLSAgICAxMTM2ODMsIDY1NjcsIDIzOCwgNjk2NTYsIDc4NDMyLCAxOTQ1OTUsIDE5OTA1LCA0Mzg1MCwgMTk1MDE1LCA3ODg3MCwgCi0gICAgNDEwNDQsIDY3NjQwLCA2NzMwMiwgNDIwNTUsIDk5MTIsIDY1OTM5LCAxMDY3MCwgNzQwOTMsIDEzMjczLCAwLCAxMjU1MiwgCi0gICAgOTMwMzksIDg4MDMsIDMwOSwgNjYyMiwgODE1MSwgMTA4NTgsIDc4NzA2LCA2NzYzNiwgNzAxNzEsIDEyNTY4LCAxMjc5MTcsIAotICAgIDEyNTUzLCAxMDgxNCwgNDMyNzUsIDY5NTAsIDk3MTIsIDY4NjgwLCA0Mzk3MCwgMTI2NTM1LCA2NTE2NSwgOTI3MjUsIDAsIAotICAgIDY2NDY2LCAxMjQ5ODYsIDEyNzc4NCwgMCwgNjY3MjUsIDYxOTEsIDExMzUxLCAxMDQzNywgMTEzMTYsIDY3NjM0LCA0Mzc2MywgCisgICAgODk5NiwgNDk5MiwgNDQ3MSwgNDI2MjIsIDY0MDc5LCA2NDA3OCwgOTIxNzksIDcxODc4LCAxMDAzNzcsIDEyMTI1NiwgCisgICAgNjQ2MTUsIDQxOTE1LCAxMDAzNzUsIDEyMDc1LCA0MjA0MSwgMTI1MDg0LCA1MTc0LCA5ODMyMTcsIDEwMDM3MiwgNzQxODYsIAorICAgIDMxMjMsIDEyNTEwMCwgMTI2ODUsIDExOTIxNiwgODQwOCwgNjQ3MDQsIDgzMzI4LCAxMjI4OTEsIDkyMjMsIDAsIDQxNjE2LCAKKyAgICA2Nzk5OSwgNzM3OTcsIDgzMzI3LCAxMTE2LCA3NTA2NywgNDMwNDksIDcxMzYsIDQzMDUwLCA4NTQ4LCAxMjA0ODUsIAorICAgIDk4Mzg3MSwgNzUwMzEsIDkxNzYyMiwgMTI4MTY4LCAxMzExNSwgNDM2NzUsIDY0MDkxLCA5MzIyLCA4MzMzOCwgODMzMzEsIAorICAgIDY0MDk1LCA2NDA5NCwgODExMSwgNjYyNDcsIDQyMzMyLCA2NDA4OSwgNjQwODgsIDYxOTksIDY3MjQ5LCA2NjM5OCwgCisgICAgMTE0MzQsIDY0MDgzLCA2NDA4MiwgMTEzMjksIDc3MzcsIDY0MDg3LCA2NDA4NiwgNjQwODUsIDY0MDg0LCA4MzAzMywgCisgICAgOTkyNywgNDEzMzUsIDQxMTgsIDE3OTcsIDgzMzEyLCA0MTMzNCwgMCwgNDYsIDQzNDQ4LCA3ODU5MSwgMjk4LCA4MzMwMywgCisgICAgODMzMDQsIDgzMzA1LCA0MjYyNywgMTI1MDExLCAzMiwgNjE4NywgODMwMzcsIDExNDk1LCAxMTQ1OSwgMzY2NSwgODMwMzYsIAorICAgIDQyODcxLCAxMTg5MDIsIDE5OTIzLCA3NDMzNSwgMCwgMTI3MTkyLCA2NjIzOSwgNDIyNjQsIDY0NDAzLCA0NDEyLCA3MjQwLCAKKyAgICA4MzMxNCwgNzE0NDQsIDExOTMyMSwgNjU3NTgsIDEyNzUwLCA0MTgxLCA4NTQ0LCA4MzQ2MSwgNjgwNTMsIDgzNDA3LCAKKyAgICAxMjAxOTgsIDY5ODA5LCA2MTgxLCA2NTAxNCwgMTAwNzUwLCAxMjg0ODQsIDk4MzE5NiwgMzYzOSwgMTE5NTg4LCAxMTg4NTEsIAorICAgIDgzMDM5LCAxMTg5MDQsIDEwMDczLCAxMjAyMDYsIDgzMDM4LCAxMjcxODYsIDY4NDA5LCA0Mjg0NCwgNzQ5OCwgMTA5OCwgCisgICAgOTI1NjUsIDEyMDIwNSwgOTE3NzczLCAxMjg5MTUsIDEwMjA3LCA4Nzg5LCA5MzA3MCwgMTIwMzM4LCA5Mjk3MywgMTI4MzI1LCAKKyAgICA5MjM0LCA5MTc4OTUsIDYxODIsIDk4MzQ3NSwgNjUwNTgsIDEyMDMxOSwgOTgzMjExLCA2ODA2NCwgOTE3ODMxLCA1NDcxLCAKKyAgICA5NDYxLCA1NTczLCAxMTg5MzYsIDU0NzMsIDQ0LCAwLCA2NjI0NCwgOTQwNzIsIDAsIDY2MjM4LCAxMjg0NCwgNjY4OTQsIAorICAgIDE2MjIsIDc3NjcsIDE5MDAsIDQxMzM5LCAxMTQ1OCwgMTE5MDYxLCA5ODMxODMsIDY1ODEsIDU1NzYsIDEyODYxOCwgCisgICAgNDM4NTUsIDQxMzM3LCA5ODM3NzIsIDQxNjMxLCA4OTQ3LCA2ODM5MCwgNjk2ODMsIDQxNjk0LCA5MTc3ODcsIDcyMzk2LCAKKyAgICA3OTA4LCAwLCAxMDQwOCwgNjU3OSwgMTI3ODkwLCA2NDYxOCwgMCwgMTIwMTQ3LCAyMTM4LCA2NTgzLCA3NzYxLCA3MDAwNSwgCisgICAgMTIwNTA0LCAxOTQ4MjgsIDY2ODAyLCA1MDU4LCA0MTAxMCwgOTk5MiwgMTI4Mjk5LCA1MDU3LCA2OTg5MiwgMCwgNzQ1MzgsIAorICAgIDUwNTQsIDExODk1MSwgMTk0OTcxLCA3ODYwNiwgMCwgMTQzNywgNDE2MTcsIDY1OCwgMzQ5NywgNzEzNjUsIDc0ODYsIAorICAgIDUwNjEsIDUwNjAsIDQyMzUsIDEyNzg3OCwgMTI4MzIyLCAxMjg1MjksIDEyMTEzLCA0MjM2LCA0NzI3LCAxMjg0ODcsIDAsIAorICAgIDc2OTMsIDEwNzQ5LCAxMjAzMzIsIDc0ODgsIDU3NzMsIDk3OCwgMTI4MTM0LCAxMjg2OTMsIDQxNjE5LCAxMDIzOSwgCisgICAgNjg2MTEsIDcxODY0LCA2NjIwOSwgMTI3MjMzLCA3NDEzNSwgOTc0OCwgMTAwMzgzLCAxMjc1MjQsIDEyNTIxOCwgOTgzMzE2LCAKKyAgICAxOTQ2NzYsIDE5NDY3NSwgMTI4MDgxLCA3MDY4MSwgMTAwMzg1LCA3MjgxMSwgODMzNTQsIDEyNzg2NSwgMTIwOTk5LCAKKyAgICA5Mjc3NiwgOTM0MSwgNzg4MjEsIDIzNzksIDExMzI1LCAxMDAzODYsIDY0NjY4LCA2Nzg1NCwgODEyNSwgMTIwNTQ1LCAKKyAgICA2NzQzLCA4MzE2NCwgOTE3OTQwLCAyMzY5LCA4MzQwNiwgOTgzMzIzLCAxMjc5NjYsIDEwMDU0MywgNzE4NjgsIDczOTM2LCAKKyAgICA3MDA4LCA0MzY2MCwgMTIwMzQ2LCAwLCA0Mzg0MSwgMjM2NywgMTI3ODI3LCAxMjgyNzUsIDI2NCwgMjM3NSwgODA2MCwgCisgICAgNjE5NCwgMTE5ODU4LCAxODQ0LCAxMTkwODQsIDEyOTA0OSwgNjAxOSwgMTI4OTc1LCA5ODM1NTcsIDY5NjEsIDAsIDcwNDM1LCAKKyAgICA2NzE3MSwgODgwMCwgMTI3MzMyLCA0Mjg2MiwgNDQ2MywgNjU1ODEsIDYxOTIsIDEwMDc0NCwgNDI3NzEsIDEyNzk4MywgCisgICAgOTIzMzMsIDcyNSwgNjUwNDIsIDkzMDE0LCAxMjA4MDAsIDc0OTQyLCAxMjg5MiwgMTI1MjEyLCA2NzE0OSwgNzQ4OTksIAorICAgIDczOTMxLCAwLCAxMjA0OTUsIDEyNzI2MSwgMTIyMjQsIDk4MzEyOCwgMTI5MDYxLCA1MDc0LCA1MDczLCAxMjExNjQsIAorICAgIDg5ODMsIDExODk4MSwgNzQ0OTMsIDcwNzIzLCA1MDcyLCA3NDU0NywgNjE5OCwgMTE2MTQsIDEyNTI1MSwgMTk2LCAKKyAgICA5ODMxNTQsIDEyODgwNSwgMTI4MjYzLCA0OTI5LCAxMjAzNDIsIDEyOTE0NSwgMTAwNzk0LCAxMDA3NDcsIDEyMTQ1NSwgCisgICAgNDI4NDcsIDkyOTUzLCAwLCA2Nzc1NCwgNDkzNCwgMTI4MzM4LCA0MTMyMywgOTc1OCwgMTI4MjExLCA5MjI4OSwgNzAxODEsIAorICAgIDQyNTg0LCAwLCA0MzI5LCA0MTMyMSwgNDk3OSwgMzA0OCwgNzc1MiwgNDEzMjAsIDkxNzk1MiwgNjQ2NjcsIDEyODE5LCAKKyAgICA5ODM1OTcsIDUwNzEsIDEyNzkxNSwgMzY0MiwgNjczMzQsIDUwNzAsIDEwMDQyLCAxMTM4MTMsIDM5ODcsIDUwNjgsIAorICAgIDk4MzQ2MCwgODkwOSwgNzg2NTAsIDc4NjQ5LCA2OTkxNywgMTA2MzYsIDczOTgxLCAxMTgwNiwgNDMxNjcsIDQ1MzEsIAorICAgIDEyNDUsIDkxMDUsIDY2NDYzLCA0OTIxLCAxMjAyMTksIDQ5MjYsIDY1NTQ0LCA3Mzg4NCwgMTIxMzU5LCAxMjEyNjcsIAorICAgIDEyNzk3MiwgNjQ3MDksIDgzMjY5LCAxMjg4NTQsIDc4ODgwLCA0OTIyLCAzMjUsIDk5MiwgMTE5NTY4LCA0OTI1LCAKKyAgICAxMjcyMTgsIDk4MzA1OSwgOTUyNiwgNDkyMCwgMTI4NjE3LCA5NDgsIDAsIDcwNzA2LCA0OTMwLCAxMjc4NTcsIDkyMTc1LCAKKyAgICAxMTk4ODYsIDQ5MzMsIDExMzc3OSwgMTIxMDQ5LCAxMTg5ODUsIDQ5MjgsIDk4MzE0OSwgODM1MTQsIDc0NzcwLCAxMjAxOTQsIAorICAgIDEyNjU0OCwgNzIyLCAxOTQ5MzQsIDE5OTA4LCAxMjYzNywgMTI3NDg1LCA4Mjk5OSwgODc1MywgMTUwOSwgMTI1MjY0LCAKKyAgICA1NDY4LCA5NTExLCA0MzQ5MywgMTI3NDc3LCAxNjcyLCA2MjA1LCAxMDg2NCwgNzQ1ODYsIDEyNzQ4MCwgNzAxMDMsIAorICAgIDkyNjk0LCA3ODU1NSwgMTI3NDY4LCA3Mzg2MywgMTI2NTc3LCA2ODMzNiwgNDE2MDcsIDkyNjI3LCAxNjc5LCAxMjAxMTYsIAorICAgIDEyMDE4MCwgNzg4MzcsIDEyNzQ2MiwgNzAwNSwgNDE2MDksIDk1ODAsIDcwNDMxLCA0MDEsIDY5OTQ5LCA0Mzc3OSwgNjk2OCwgCisgICAgNTc2MSwgMzQyLCA4NTUzLCA5MjI1NiwgODE0MywgMTIwOTc5LCAxMTk4MywgNzQyMDgsIDYyNCwgNzQ1MDgsIDQwNTcsIAorICAgIDQzNzg4LCA1MDc4LCA3NDI1OCwgMTI0NzgsIDEyMDI1MCwgNTA3NiwgMTI4NzAyLCA4Mjk5MSwgMCwgODI5NSwgNjg1LCAKKyAgICA5MDI1LCAxNTI0LCAxMjYxOCwgMCwgNTUzOSwgMTAwOTA3LCA5MjUyMywgNzE0MzUsIDcxMzgsIDEyMDU1MiwgNDM1MDQsIAorICAgIDEyNTE5NywgNjY5MTQsIDY1Nzk0LCAxMjUyMCwgODA1OCwgOTczMiwgOTI0ODAsIDUwODAsIDY0Nzc1LCA1MDM2LCA1MDM1LCAKKyAgICAxMDA0MjksIDQyNjA0LCAxMDA0MjgsIDAsIDgwNzQsIDI3NSwgMTMyOTEsIDE5MDcsIDc0MzcwLCA0NDMyLCAxMjEzMTMsIAorICAgIDUwMzMsIDEyMDM0MSwgMTIwODE4LCA0ODM2LCAzODg4LCA3Mzc5MiwgMTA3MjksIDY0NTQ2LCAxMjcyNjIsIDQzNzA0LCAKKyAgICAxMjcyNjQsIDkyOTU3LCAyMjc0LCA2ODA2MSwgMTAwNDIyLCA3MDM2MCwgODg1OCwgNjQwOSwgNzY2MywgNzgwNjksIAorICAgIDEyODEwMCwgMTE5MDA3LCAxMDA0MjQsIDY2MzIxLCA5NDA1MiwgMTI4MTQsIDEyNzI0OCwgMzQzMiwgMTAyMTgsIDAsIAorICAgIDYwOTQsIDc2NDEsIDQyNDQ1LCAxMjg3OTIsIDkyNDg3LCA0MjQwNiwgMTY3NiwgNjczNjIsIDc0ODYyLCA2NzM2NSwgNTAzMCwgCisgICAgNjczNjQsIDExODgxMCwgMTk1MDA4LCA3Mzg2OSwgOTYyMiwgMTEzNzYzLCA2OTk0NCwgNjc4NywgNjczNjEsIDE5NDkzMCwgCisgICAgMCwgNjgzMTksIDEwNTQ0LCAxMjkxOSwgNzE0ODQsIDcyMzk3LCA5ODM2NDEsIDAsIDY5OTA2LCAxMDA4NTcsIDk4MzA0MSwgCisgICAgOTQ3LCA2NzY5NSwgNjczNjcsIDEyODUyOCwgMTA5NjksIDY3MjI4LCA3NjEzLCA5MjU2MiwgMTE5OTM2LCA0Nzk1LCAKKyAgICAxMDA0MzEsIDcwMTgsIDczNzYsIDEyMDE4MSwgMTIwMTkyLCAxMjAyNjgsIDEyMDE4OSwgNDM1NjcsIDc0MDU2LCAxMjAyNjYsIAorICAgIDExODMzLCAxMTk5MTksIDcyMTYsIDY1MjMyLCA3MjE3LCAyNTEsIDcyMTgsIDc4OTUsIDQzOTUsIDQzNTM4LCAxMDA0MzMsIAorICAgIDEwMDg2MCwgMTE5OTI4LCA3MjEzLCA2ODQ3NiwgNzIxNCwgNzIxNSwgNTg3OSwgNzQxNDEsIDg4ODAsIDc2ODUsIDY2NDU5LCAKKyAgICAxMjAxNzMsIDY1NTQwLCA2NzM1OSwgNjI1LCA4MTg3LCA0Mjg2MSwgMTExMywgNzIzNiwgNzkxNSwgMzYzMCwgMTIwMTc2LCAKKyAgICA4MTc5LCA3MDE2MywgNjc4ODYsIDkzMTYsIDEwOTgwLCAyNDg5LCA2NTYyNCwgODE1MCwgMTM1OSwgNjc2NTIsIDcwNDY0LCAKKyAgICAxMjczMzAsIDczNzU2LCA1MDQyLCA1MDQxLCA0Mjc2OSwgMTIwODQsIDEyNzMyNCwgMTI3MzIxLCA3NDQxMCwgMTI3MzE5LCAKKyAgICAxMjczMjAsIDEyNzMxNywgMTIxMjg0LCAxMjczMTUsIDEyMjgzLCAxNjE2LCAzNzk1LCA2NzczMiwgODc5NSwgNjYyNDUsIAorICAgIDEyMDgzOCwgMCwgMCwgMTEzOCwgNzM5MDUsIDEyNjc3LCAxMjgyODAsIDY3NzI0LCAzMjM5LCA2Njg5MywgMTI4ODE4LCAKKyAgICAxOTQ2MjQsIDg0MzEsIDAsIDQyMTY0LCA3MTIyOSwgMTE3NzgsIDEyNjIwLCA2ODI2LCA3Mzc3MywgNzAxNjksIDUwNDAsIAorICAgIDEyNzk2OSwgMCwgNjcwOTQsIDc4NDIwLCAxMjcwMzYsIDUwMzksIDk4MzI0MSwgNzg0MTgsIDk4MzkzNiwgNTAzOCwgCisgICAgOTE3OTkwLCA5ODM4NjIsIDEzMTg0LCA0Mzk2MCwgNzA2OTUsIDY0NjQ4LCAxMjY2NDEsIDkzNTksIDc4NDE2LCA5MTc2MjMsIAorICAgIDEyODc3MCwgNjUxNTcsIDY2NjIsIDEwMDYwNCwgNzAxODIsIDM4NjMsIDczOTA5LCA0ODM1LCA1NTI2NiwgNDM0MzIsIAorICAgIDEyNzgyMiwgNDMwOSwgNzEyNywgMTE4ODQxLCAxMjkwNzQsIDE5NDU2OCwgMTMwMSwgMCwgNDI1ODksIDU2OSwgMTI4ODA0LCAKKyAgICA3MzgxMywgNzExLCA0Mzg5LCA3MTMzLCAxMjA2NDMsIDczODgwLCAxMTYxMCwgMTEzNjgsIDAsIDEyODQzNiwgNDEzMzEsIAorICAgIDEwMDYsIDc0MjQwLCA2NzIyNCwgMTU1MCwgODIwMSwgNzA0NTMsIDc2MjcsIDU0OTksIDUwMzEsIDc3OTA4LCA0MjczOCwgCisgICAgNjU3ODQsIDQzOTU3LCA2NTI2NywgMzc1OCwgOTgzODQ0LCA2NTc4MSwgNjQ3MzQsIDY3MjIyLCAyNDQwLCA0Mzk1NSwgCisgICAgNzA3ODcsIDg0NDksIDk4MzY4NCwgNTAwOCwgOTgzNTcyLCAyMTE4LCAxMjI4OTYsIDEyMTIxLCA4MjU1LCA1NTEyLCAKKyAgICA3Mzg3NSwgMjEyOCwgMjEzMCwgMjEzMSwgMjEyNiwgMjEzMywgMTExOSwgMTIxMjUwLCAyMTE0LCAyMTE2LCAyNDU1LCAKKyAgICAxMTM3OTgsIDIxMjIsIDIxMjMsIDIxMjQsIDIxMjUsIDEyNzQ4NiwgODcxNCwgOTgzODIwLCAyMTEzLCAxOTUwNDksIDIxMTUsIAorICAgIDEyODE3NywgMTI3NzQ4LCA0MzcxMywgNTA1MiwgNjYyMjAsIDU4MjEsIDYxODYsIDY1Nzc4LCA2NTc3NSwgNTA1MSwgCisgICAgNjU3NzMsIDE0MjksIDQyNjQ3LCA1MDUwLCAzMDIsIDM4OCwgNDExMTUsIDczNSwgNjYzNywgNTkwNywgNjUwODgsIDAsIAorICAgIDEyNzI2LCA3NDU5NCwgOTExNywgOTgzMTgxLCAxMjAwMywgNTUxMywgNTEwOSwgNTA1MywgNzQyMzAsIDU1MTAsIDc4NDUxLCAKKyAgICAwLCA3ODQ0NywgMjQ3MCwgNzg0MzcsIDAsIDE5MjUsIDcxMjUxLCA5MjIzNywgNzQ4MDcsIDk4MzA2MiwgNTA0OCwgNTA0NywgCisgICAgMTk0ODM3LCAxMjEyNzUsIDc0MjAxLCA3ODc0MywgMTk0ODAyLCA3NDQ5NywgNjU5MzMsIDgwODksIDY5MjksIDYzOSwgCisgICAgODI5ODEsIDY4MTc5LCA2NDQ0MiwgNzAxODAsIDgyOTg0LCA0NTk5LCA0MTQwMiwgNjY3NCwgNDMzOTcsIDQzMjk0LCAxNDc2LCAKKyAgICA2NDgsIDAsIDY1ODE5LCAzMjMzLCAwLCA0MTc4MiwgNjk1MSwgNzQzMDYsIDEyOTE5NywgMzUzMCwgOTc1MCwgMTI4MzE3LCAKKyAgICAxMjA5OTEsIDY2NTYsIDQyNjE4LCA3MDE3NSwgNTA0NiwgODUxMiwgNjU4NTYsIDc0MjYxLCA4OTY3LCAxMDA1MTYsIDUwNDUsIAorICAgIDQyMDI2LCAxOTE2LCA3OTg2LCA1MDQ0LCAxMjA1NTYsIDkwMDYsIDEzMTI4LCA1MDQzLCAxMjEzMzUsIDc4NTMsIDY3ODA4LCAKKyAgICA3NDAwNCwgOTY2OSwgMTIzNDEsIDEyNzAzLCA4NDAyLCAxMjg4ODMsIDExOTA3MCwgNzAxNzQsIDQxNzUwLCAzNTg2LCAKKyAgICA2NDUwOCwgNDMxNDgsIDAsIDEyNzk3MSwgMTE5NjA2LCA2Nzk4MywgMTMyOTYsIDUxNywgOTgzODc4LCAxMjUwMTcsIAorICAgIDEwMDU2NSwgNDE1MjgsIDEyMywgNjU0NTQsIDEyNzIxNSwgMTIxMzI2LCA3NDQ3OCwgMTA1MzEsIDc3ODQsIDQxNTI2LCAKKyAgICAxMDgyOSwgNzM5OTEsIDgwNTcsIDExMjYsIDczODk1LCAxMDA4MDMsIDE5NDU5MSwgOTgzMzc5LCAzOTI1LCA0MjUxLCAKKyAgICA4MDY5LCAxMDUxNywgNzExMTIsIDQ4OSwgNzExMTAsIDQyNTAsIDkyMjY2LCAxMjA0NTIsIDQzMTUxLCA5ODMxNzgsIAorICAgIDkyNzM4LCA2NjIwMCwgOTgzNjI2LCAxMjc5MDUsIDEyNTAyNiwgNzQyOTgsIDEyODg3OSwgMTI2NjI1LCA4NzExLCA2MTgzLCAKKyAgICA4MzQ0OCwgOTgzOTUyLCA3MjQwMiwgMTIwNDQ4LCA3NjIzLCAxMDA4MDksIDY2Mzc2LCA5MjM1LCAxMjc2MCwgNzQxNzYsIAorICAgIDY5NjYyLCA2NjQ0NSwgNDM1NDAsIDEwMDYyLCAzNzQzLCAxMTUxNCwgMTEwNzgsIDAsIDEyMTM2LCA5ODM3OTksIDEyNjU5NywgCisgICAgMTIwNDM0LCAxMTkwNTIsIDc3MjYsIDE5NTA5NSwgMTk5MjIsIDI2NywgMzM5MywgNDIxOTgsIDEzNzEsIDEyMjkxOSwgCisgICAgNjkyMzMsIDI0NTgsIDEwMDQzNSwgNjIwMSwgMCwgNDEwNzQsIDQyNjYsIDEwNjUyLCA0MTYxMiwgNDEwNzcsIDM0MDIsIAorICAgIDkwNTAsIDMzOTgsIDEyODQyNCwgMTI3MDgzLCAxOTQ4OTQsIDMzOTEsIDQxMDc1LCAyNDc2LCAxMjkxMjksIDc0OTkwLCAwLCAKKyAgICAxMDYyNSwgNzA3MTUsIDEyNzY3LCAxMzAxNywgNzg3NDEsIDY0MjYxLCA2NDkzNCwgNzAxNTIsIDEzMDE0LCAxMzAxMywgCisgICAgMTIxMTk4LCA2NjczLCAwLCAwLCAxMjEzMjQsIDEyNDM4LCAwLCA5ODMzNDQsIDgzMTA2LCA3MTEyOCwgMTIwMDYyLCA5MDUzLCAKKyAgICAxMzAxNSwgNzQ1MjMsIDAsIDcwNCwgNjYyMTUsIDYxOTUsIDc0OTQ5LCA2NjYwLCA3ODc1OCwgOTE3NzYwLCA3NDg2MSwgCisgICAgNDIyMTIsIDEyNjI5LCAxMTQzNSwgMCwgNTUyNTYsIDY1NTM4LCA2NjgwOSwgMTIxNDM3LCAxMjkwODYsIDQzODc2LCAKKyAgICA5Mjk0MSwgNjU0NDgsIDc4MTAwLCAxMjk0OCwgMTE5MDAxLCAxMTk5MjYsIDQzOTQ5LCAxMjAwNDgsIDc4MDk5LCAxMjcwODUsIAorICAgIDEyNzk2NCwgMTI4MzIwLCA0Mjg3LCA4Mjc2LCA0OTAyLCAxMTMxLCA5ODM2MDYsIDc4NDU4LCA2NjcyOCwgMTgxNiwgCisgICAgNDM5NTIsIDQyNTMzLCAxNjgsIDQyODQ1LCA0ODk4LCA2NDI5OCwgNDM5NTAsIDc4MTA1LCA0OTAxLCAxODIxLCA0Mzk1MSwgCisgICAgNTc4LCAzNjUzLCAxMDA0NzYsIDc5MSwgOTE2MiwgNjk3NywgNzQxOTYsIDc4ODg5LCA3MDE2MCwgMCwgNzM3MzEsIDgzNTQsIAorICAgIDQzNTkwLCAxMTkzMDMsIDk4MzQ1MSwgNzU1NywgMTE5MTA4LCA2NzM3OCwgODIzNCwgNzI0MSwgMTI4NjA4LCAxMTM3MzUsIAorICAgIDExOTE2NywgMTk0OTk2LCAxMjgxMSwgNjU5MjUsIDM5NDYsIDc4MDc4LCAxMDk5OCwgNjY4MDcsIDY3MywgMTk0ODY3LCAKKyAgICA2NDM5NywgMTE5MjM1LCA3NDU5OSwgNzg0NDksIDg4OTAsIDE5NDk3NywgMTE5MzIyLCAyNDQ4LCA3ODA4NSwgMTAyNjcsIAorICAgIDg0MjQsIDI0NTIsIDc4MDgzLCA2NzIxNywgODcyOSwgNzg0NTYsIDAsIDc4NDUsIDEyNTExNywgNzEzMDIsIDQ0MDgsIAorICAgIDQxMjIsIDY3NzIsIDExMDM5LCA4NzIzLCA2NTg5NiwgNzEzMTAsIDExOTMwMiwgNzMxLCAxMTkzMDQsIDcxOTA0LCAyNDM4LCAKKyAgICA2NDg1NSwgMTE5MzAwLCAxMTkyOTksIDExNzUsIDEyOTEzNiwgNDIxMzUsIDM3MywgMTE5MTcyLCAyMTE5LCAxMTQ1NywgCisgICAgMTE1MjEsIDc3MjMsIDEyODYzOSwgMTI1MjQyLCAwLCA0MTk1MiwgOTMwMjMsIDUyNzMsIDIxMjcsIDUyNjksIDYzMzcsIAorICAgIDUyMDIsIDI0MDQsIDUyNjcsIDQyODIzLCAxMTI5MSwgMTk5MTUsIDUyNzcsIDEyOTYzLCA3MDMyMCwgNjE4OSwgNDEyNSwgCisgICAgMTMxNCwgMTIxMzMsIDEyMDM0MCwgMTE4ODczLCAxMjcxLCA5ODM1NTYsIDEyOTExMiwgNjYwMjQsIDQxNDgyLCAyNDM0LCAKKyAgICA5MjA0LCA5MTc1NTgsIDM4NzksIDE5NDg2OCwgMTI5NzgsIDQxNjYsIDQ1NzQsIDEyODExMSwgNzU2NywgNzQ1OSwgNzgxMjgsIAorICAgIDQxMzkwLCA1Mzg0LCA0MTg4MiwgNjc2NDcsIDcwMTU0LCA1NzU5LCAxOTQ4NjksIDEyMTQxMywgNDEzODgsIDY0NDQ2LCAKKyAgICA0MTM5MiwgNjQyODgsIDQxMzg3LCA2NzIwMSwgODcwNiwgNTU1MiwgNjg4MzcsIDcwMCwgMCwgNTU1MywgMCwgNzA4OCwgCisgICAgNTM1NiwgNzQ5OSwgNjgwMDcsIDY2NTk2LCA3NDA2NiwgNjcyNTEsIDEwMjYzLCA1NTU0LCAwLCAxMjM0NCwgMTAzMTEsIAorICAgIDc4MTEzLCA2NjY1LCAxMTExNSwgMTIxMDM1LCA3NjE4LCA4NTE3LCAxMTQ1NSwgNzg0NDAsIDY0NjMyLCA2NDQ0NywgNTU1NSwgCisgICAgNzgwODgsIDY2ODEwLCA3ODA5MSwgMCwgNDI4MDMsIDY1MDMzLCA5MTQzLCA2NjY4LCA2NzI4OCwgNjc5OTUsIDE5NDk4NiwgCisgICAgNjU2LCAxMjg1NzQsIDY1MDM3LCA0NTc3LCA2NDYyNCwgMTI5MzU0LCAxMjAyNjQsIDcxOTEyLCAxOTQ5MDgsIDQyNjksIAorICAgIDczODg1LCA5MTc3NzUsIDQyODQ2LCA2OTY0NCwgOTUwLCAxOTUwODUsIDkyMjczLCA2NjU4MCwgNzc5OTIsIDY2NjgzLCAKKyAgICAxMDU1NCwgMzQxNywgMTAxMDU3LCA2ODMyLCA1MDk4LCA5MTc3NjgsIDE5NDY2OCwgNzA0MDMsIDUwOTcsIDQ5MzUsIDk4NDgsIAorICAgIDEwMzgxLCAwLCA2NzI5NiwgNzI3OTgsIDM2NTEsIDAsIDY3Mjk0LCA3MDg0OCwgNTEwMiwgNTEwMSwgMTAyNjksIDEyOTgzLCAKKyAgICA4MTM4LCA0NTE3LCAxOTMyLCA1MTAwLCAxNDM5LCAxMjA5MywgMTI0NywgMTAwMzQsIDEyMTM0MCwgNTA5OSwgNzgzNzMsIAorICAgIDE0NDEsIDQyMDg3LCAzMDYzLCA2NTAsIDExOTk1MywgNzgzOCwgOTgzNjY5LCAxMjg2NTUsIDE5NTA0MCwgMTE5MTQyLCAKKyAgICA5MDMxLCA3MDgyOSwgNzg0MjcsIDkwNzgsIDg1NDUsIDY2MzU2LCAxMjg3OTksIDE5NDkyMywgOTE1NCwgOTExOCwgCisgICAgMTI2NTQzLCAxMTk1ODYsIDI2NzYsIDIyNzcsIDEyODQyMiwgNjgyMzcsIDYxOTAsIDg1OTksIDEyNTExOCwgNjk5MTgsIAorICAgIDEwNzk1LCA5ODU3LCA3MDE0LCA5ODU2LCAxOTUwMzMsIDcxOTAzLCAxMjEyOSwgMTI2NjUxLCA4NDgxLCA4MzA2OCwgNjIwMiwgCisgICAgNjc3MTEsIDEwOTIwLCAxMTM3MjYsIDUyMDMsIDE5NTAzOSwgMTI5MzI4LCA1MTA4LCA1MTA3LCA2NTgxOCwgNjYwMTksIAorICAgIDk3NjIsIDExMjA1LCA1NTQxLCA3NDc3MiwgMCwgMTI2MTMsIDUyODQsIDY2NTcsIDIwNywgMTIxMjA2LCA0Mjc1LCA3NDgxOSwgCisgICAgODU0LCA2ODE0NywgNzQzODEsIDY2ODE2LCA3ODc4NiwgNTEwMywgMTI3ODYxLCA2NDM0OCwgNDEzNjgsIDQzOTc0LCA0ODgsIAorICAgIDY5ODExLCAxMDA5MTEsIDcxMzM5LCAxMDE1NywgMTk0NjEyLCA0MzAzNCwgMTE0MzgsIDY0Njc0LCAwLCA3MDE1OCwgCisgICAgNjg0MzEsIDQxNzcxLCA1MTA2LCA2NjY5LCA4NTA0LCA2NTE1NCwgNjk4MTMsIDQxMzY3LCA1MTA1LCA2NTI2NiwgNjk3MjAsIAorICAgIDY0NzYsIDUxMDQsIDE5NDczNCwgMzA0LCAzMTc2LCA3ODg3MSwgNzAxNDksIDkzMiwgMTEzNjgzLCA2NTY3LCAyMzgsIAorICAgIDY5NjU2LCA3ODQzMiwgMTk0NTk1LCAxOTkwNSwgNDM4NTAsIDE5NTAxNSwgNzg4NzAsIDQxMDQ0LCA2NzY0MCwgNjczMDIsIAorICAgIDQyMDU1LCA5OTEyLCA2NTkzOSwgMTA2NzAsIDc0MDkzLCAxMzI3MywgMCwgMTI1NTIsIDkzMDM5LCA4ODAzLCAzMDksIAorICAgIDY2MjIsIDgxNTEsIDEwODU4LCA3ODcwNiwgNjc2MzYsIDcwMTcxLCAxMjU2OCwgMTI3OTE3LCAxMjU1MywgMTA4MTQsIAorICAgIDQzMjc1LCA2OTUwLCA5NzEyLCA2ODY4MCwgNDM5NzAsIDEyNjUzNSwgNjUxNjUsIDkyNzI1LCA5ODM4MjIsIDY2NDY2LCAKKyAgICAxMjQ5ODYsIDEyNzc4NCwgMTI4NTM0LCA2NjcyNSwgNjE5MSwgMTEzNTEsIDEwNDM3LCAxMTMxNiwgNjc2MzQsIDQzNzYzLCAKICAgICAwLCA0MTc1NCwgNjc2MzUsIDkzNzAsIDI3MjAsIDE5NDYwMCwgNjg0NjIsIDgyMzIsIDExODgxNywgMTIxMDU2LCAzMjIyLCAKLSAgICAxMjE0MzksIDEyMTEzNywgMCwgNjY2NjMsIDk4MzA0NywgOTMwNjcsIDEwODM0LCA5ODMxMjcsIDAsIDY1NzMyLCA5NDA5NSwgCi0gICAgOTE3NTQ3LCA5MjY4MiwgNjc2NzksIDEyMDczNCwgNjczMDksIDc3ODEsIDQxMzgzLCA2NDU2OCwgNjczMTEsIDEyMDczOCwgCisgICAgMTIxNDM5LCAxMjExMzcsIDAsIDY2NjYzLCAxMjc5MjgsIDkzMDY3LCAxMDgzNCwgMTI3NTQ3LCAwLCA2NTczMiwgOTQwOTUsIAorICAgIDkxNzU0NywgOTI2ODIsIDY3Njc5LCAxMDEwMjEsIDY3MzA5LCA3NzgxLCA0MTM4MywgNjQ1NjgsIDY3MzExLCAxMjA3MzgsIAogICAgIDEyMDc3LCA3NDQzMywgNjQ1ODYsIDkxNzYyMCwgNDIzOTYsIDU1MjU1LCAzNDc1LCA2NzI2MCwgMjQ3OSwgNjczMDYsIAogICAgIDM2MzIsIDEyMDcyOCwgMTA2OTgsIDgzNzYsIDM2NDgsIDY3MjYzLCA3NDg0NCwgNjc2MzksIDM2MzYsIDY3ODk0LCAzNjUwLCAKLSAgICA4ODM3LCA2NTIyOSwgMTg0MywgNDIyODMsIDQzMjUwLCA0MTU2MiwgOTEwMCwgNzQ1NDgsIDY4ODI2LCAzNjQwLCAxMjcxOTAsIAotICAgIDQyMzIxLCA3Mjg0LCA5Mjg4MCwgMTE4OTg3LCAxOTQ5NTAsIDE5NDk0OSwgNzQxMTUsIDE5NDk1MSwgMTI2NjQ5LCAKLSAgICAxOTQ5NTMsIDQyMDgwLCAyNTI5LCAwLCA5ODM3ODQsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAotICAgIDY3NjE5LCA2NjM2NywgMTk0OTU4LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCi0gICAgMCwgNjc4MzUsIDAsIDc4NSwgODIzNiwgMTI4NjQ3LCA5MDI3LCA2ODE2MCwgNjc2MjMsIDY0MzgzLCAxMjAyNjUsIDkyNSwgCi0gICAgMTI3MTU2LCAwLCA0MTk4NSwgNDEwNzEsIDk1ODYsIDEyMDk4OCwgNDE5ODQsIDkyMTcsIDEyODM3MiwgOTI1MTAsIDkyMjE4LCAKLSAgICA5MTg2LCAyMDY3LCA0MDE2LCA5ODM4MDMsIDAsIDM4MSwgMTI5MzYsIDAsIDQyMDc3LCA5Mjk4NSwgNjk4ODAsIDUxODQsIAotICAgIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIAotICAgIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIDc0Mjg3LCA2NzYyOSwgMzYwNSwgCi0gICAgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgMTIwNjcwLCAyNDQyLCAKLSAgICAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIDczOTMzLCA2NzYyNiwgCi0gICAgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgMTMxNDUsIDE5NDk2MywgCi0gICAgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCA0MTExNywgMCwgOTI1ODAsIAotICAgIDEyODYyNCwgNzQ5MzksIDY3NjI0LCAxMjc5NzYsIDEyOTAsIDAsIDY1NTg1LCAyNzE1LCA4MDYsIDY1MjA4LCA0MTg4NCwgCi0gICAgOTE3ODgzLCAxMzE4LCA2NDczMSwgNzgwMDQsIDAsIDAsIDY2MzI1LCAzNDY1LCAyNDA1LCA5MjQwLCA5ODM4NTgsIDEyNzU2LCAKLSAgICA2NTI1OSwgMCwgOTgzNzgxLCAxMjc1MiwgNTgzMywgMTQzMiwgMTEyNDYsIDQxODgzLCA3MzkxMiwgOTc5OSwgOTE3ODkzLCAKLSAgICA0MTg4NiwgMjQ4MCwgMTI3OTA2LCAyMDYyLCA2NzMyNiwgNjQ5NCwgNTUzNywgNzg2NTYsIDAsIDE5NDU4NywgMTI0OTY5LCAKLSAgICAxMjExLCAwLCAxMjA5NzEsIDY3MjY5LCAxMTg4MzIsIDEyMzE4LCAxMjkwMjQsIDExMzc5NiwgNjgwMDUsIDEwNjIyLCAKLSAgICA5ODM3NzksIDAsIDY4ODIxLCA2NTY2LCA3MTE5NSwgMCwgNzM3ODAsIDExOTE5NiwgNjQ4NjQsIDAsIDc4NjYwLCAwLCAKLSAgICA4Mjg0LCAxMzA4MSwgMTE5MjA2LCAzNTg5LCA0MjA1MSwgNDAzNSwgNjQ5MiwgODMwMDMsIDQyNjUsIDY2NDIsIDM5NzcsIAotICAgIDc0MTg2LCA0MTc3OCwgODM2LCA5Mjk0NywgMjQ4OCwgMTI1MDk2LCA0NTgyLCAwLCA3MTQyNiwgNDE3NzcsIDEyOTI2LCAKLSAgICA5ODMzNzksIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIAotICAgIDExOTAxNCwgNjc3MjAsIDQyMzg5LCA0MTM3NCwgMjI4NiwgOTE3NjA0LCA3ODQ5MiwgNDEzNzcsIDEyNzkwOSwgMTk1MDQ3LCAKLSAgICA0MDAsIDEyNTk3LCAxMjA1ODYsIDEyODA5NywgMTI5MDcxLCA2NjYxLCA5MTc5NjEsIDY0ODI3LCAwLCA3MzgxNywgMzkwLCAKLSAgICAwLCA3MTMwMSwgMTI3MjkyLCAzNDczLCA3NzE4LCAxMTM3NTUsIDY4ODE0LCAwLCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAKLSAgICAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCAxMTg5MDIsIAotICAgIDY3NTcsIDY0MzUxLCAxNTQ0LCA2NzE1NiwgNjc2NiwgNjQ2NzcsIDEyMDcxNiwgNjcwODgsIDYxNDYsIDc0MDMxLCA3NzEsIAotICAgIDEyMDY4MiwgMCwgMTI4MTIsIDEzMTY4LCA0MjI3MiwgMTIyMDAsIDY2NDIzLCA3OTA0LCAwLCA5NTMsIDEyOTE3LCAKLSAgICAxMTk1NjAsIDEyMzAwLCA2NzA4OSwgMTE0OTEsIDk3MjQsIDEwMzQxLCA5ODM3NzMsIDk1MjQsIDc0OTAsIDExMzg5LCAKLSAgICA3NDg5LCAzMzc5LCAwLCA3NDg3LCAxOTQ2MjQsIDQ3MSwgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgCi0gICAgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAKLSAgICAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCA5ODM3ODUsIDYwMTcsIDY1MzExLCA3NDkzNSwgCi0gICAgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAxOTQ4ODIsIDEyMDU0NCwgMCwgMTI3OTUwLCAKLSAgICA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAKLSAgICAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIAotICAgIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgCi0gICAgOTgzMzk2LCA3MTg2LCAwLCAxMjA1NTUsIDAsIDQ0NSwgMTIwNTY2LCA2Njg0OSwgMTI1MTQxLCAwLCA4MzMwLCAwLCAwLCAKLSAgICA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTI1MDY3LCAxNTYwLCA0Mzk1OCwgCi0gICAgOTIxNjcsIDQ1ODQsIDczODQzLCAwLCAxMTcxMiwgMTA4NjYsIDY3MDkyLCAxMTE4LCA3MTMzNCwgNzQ4ODgsIDAsIDEwODEsIAotICAgIDc0MzYsIDExMTQ3LCA3MjUyLCA3MDA5MywgNTk5NiwgNjk5MjEsIDQ5MDMsIDY4MTQyLCA0MTM4NiwgNTE2MiwgMTE5MTg5LCAKLSAgICAxMzMwLCAxMjg2MTMsIDcxMzksIDAsIDEyMDQ3LCA0MTM4NCwgMCwgMCwgMTg0OCwgNDMzNCwgNjMyNCwgNDE5NzUsIAotICAgIDY0Nzc3LCAxMDY3NCwgMTIzMDgsIDEyMTg2LCAwLCAwLCA5ODM3NDEsIDEyNzE1LCA2ODAwMiwgMTk0NTc2LCA4MzI1NiwgCi0gICAgMjAxOCwgNjY2NzIsIDQxOTc5LCA2NjY4NSwgMTE5MTU3LCA2ODAwMCwgNzg0OTAsIDAsIDEyNjk4NCwgNjgwMDEsIDkzMzQsIAotICAgIDkyNzA1LCA3MDgwMCwgNzAxMDEsIDc5NzUsIDAsIDc3OTU3LCAwLCA0MzQ5NCwgNDg4NCwgNjY1OTcsIDY5NzMyLCAwLCAKLSAgICAxMjEwMTAsIDYzMTMsIDY1NTEzLCA2OTg1NywgMCwgMCwgMCwgMjM0NSwgNDM2OTcsIDQ2MywgMCwgMTI3ODkwLCA2ODE3OCwgCi0gICAgMzExNywgNTQ2MCwgMTIxNDIzLCAxMjg3MTcsIDk4MzM4OSwgMCwgNDIyNzksIDEyNzE0MiwgMTI2NTAzLCA3ODQxNSwgCi0gICAgOTgzMjI4LCA2ODUyNCwgOTgzMzg2LCAxMzI0OCwgMTI1MDI3LCA5ODM4NDMsIDQzOTU2LCAxMjg0MTUsIDk4MzE1MywgCi0gICAgMTIxMDA5LCA1NjYzLCA3MTEyMCwgMTI4NDcyLCAxMjg5NTgsIDAsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCAKLSAgICA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAKLSAgICAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCAKLSAgICA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIDcxODc5LCA1MzksIDAsIDEyMDMwMiwgNzAxMjAsIDM4NTMsIAotICAgIDY1MTgwLCAxMjc5MjMsIDEyMDc5NiwgMTIwMjQ1LCA5MjMyNCwgMCwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAKLSAgICAxOTQ5NjksIDI0NzgsIDEyMDI0OCwgNDE2MiwgMCwgNDI2MCwgMTI5NTMsIDY5NjMzLCA4Mjk2NiwgMTI0NzAsIDkyNjQwLCAKLSAgICA3NDE4OSwgMjc0MiwgMTI0NzYsIDExNzk4LCAxMDk0NiwgMTI3MzEwLCA1MDAwLCAxMTM2ODcsIDk4MzU3OSwgMTI4MTkwLCAKLSAgICA2OTY3MiwgODIxMywgNDM4MjQsIDc3NzEsIDYxNjEsIDY4MDE4LCA2NzA5LCAxOTQ5NjcsIDc4ODg1LCAxMTkyNDMsIAotICAgIDY4MjM1LCAxMjA1ODIsIDc4NTQ3LCAxMTM3MDksIDEwMzAxLCAxMDMzMywgMTAzOTcsIDExOTA0NCwgMCwgNzM3OTEsIDAsIAotICAgIDgzMDMwLCAwLCAxMjE0ODIsIDExOTEyMywgNDAxNCwgMTI4NDIsIDczOTUyLCAxMjAxNSwgMTI3MjkwLCA4Mjc1LCAzODkzLCAKLSAgICA3NDkwMywgMTIwOTI3LCAxMjIxMCwgNzIyMSwgNDIxNDcsIDc0ODY4LCA3NDU1MCwgNzEyMTUsIDY0NzQ3LCAxMTg4NDEsIAotICAgIDEyODA4NiwgMTI1MTYsIDQ0NDQsIDAsIDkyMjcxLCA3NDUzNywgMTA4OTIsIDgyMzEsIDAsIDY0NzMsIDQxOTY4LCA3ODM4OCwgCi0gICAgNDE5NzMsIDM1OTEsIDQxOTY5LCA4MzAwOCwgMjQ1MywgMTE4ODk5LCA5MjY2NiwgNjQ3MDUsIDcxMDY4LCAwLCAxMDM0OSwgCi0gICAgMTA0MTMsIDQzNTkxLCA0MTk2MiwgMzIwMiwgNzQzNTMsIDEyOTE3NSwgODMxNiwgMTI5MTc0LCAwLCA5NDA2MCwgNjg3LCAKLSAgICA5MzA1NSwgMTI5MDc0LCAwLCAxODQwLCAxMjc4MDksIDY4NjcxLCAxMTEyMSwgNDg4MywgMjg1LCA0NzIzLCAxMTE3NSwgCi0gICAgOTI2OTIsIDQ0NTksIDc0NTc3LCA0MjkyMSwgNDE3MjAsIDExMDg5LCAyNDAsIDE5OTA2LCAwLCA0MjMyMywgNzQ2NDAsIAotICAgIDk3NDMsIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCAKLSAgICA0MzQzNywgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk1MDEzLCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIAotICAgIDkxMjUsIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTI0OTI5LCAKLSAgICA2NTE5NCwgNjYyMDEsIDAsIDY2NTc4LCA1MDAxLCA0MTg3OSwgNzQ0MjcsIDQxMjEsIDUwMDMsIDg4NCwgNjY3MDAsIAotICAgIDYzODc5LCA0OTQzLCA1MTUwLCA3Mzg4OSwgNzM3NjQsIDQwMzksIDY0MywgMzA4NiwgOTI1MzMsIDQyNDQ4LCA0MjI5OSwgCi0gICAgNTgsIDEyMDA4NCwgOTE3OTUyLCAxMjAwODMsIDYzODczLCA4NDkxLCAwLCAwLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCA3MTI2LCAKLSAgICAxOTQ1NzUsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjg3OTcsIDkyOTc1LCA0MjQyLCA0MjY0LCAKLSAgICAxMjAwNzcsIDEyMDUzMCwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgOTgzMTk5LCAKLSAgICA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDk4MzI0MCwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIDQyNDMwLCAKLSAgICAwLCA5ODM0NTIsIDQyMzU1LCA2NjAyNiwgNDMwNiwgNDEzODAsIDY4NDMyLCA5MjU4NiwgNjgzMTQsIDY2NjY3LCAxMTkzNTEsIAotICAgIDE5NDk4MiwgMTIxMTcyLCA0MjIwMCwgNDI1NjYsIDcwMDAwLCAxMjg5MjgsIDUwODgsIDY5NDgsIDAsIDg1MjQsIDEyNTA0MCwgCi0gICAgMCwgMTIzODUsIDAsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCA2NTAzOSwgNjUwMzgsIDEyMzkyLCAKLSAgICA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIDc3OTk5LCAxMTY2MywgMTY2NiwgCi0gICAgNDIwOTEsIDExOTY1NywgMTIzODMsIDQzNjcxLCA0MjA5MiwgNjg0MTgsIDQyODksIDEyNzg5NywgNjM4OTYsIDEyMDYxLCAKLSAgICA0MjA5NiwgNDM2MjEsIDMzNjIsIDEyMzc3LCAxMTk5MzQsIDk4MzgzNCwgNjg0NDksIDc0NjEsIDczOTAxLCAxMjQ0LCAzMzEsIAotICAgIDczNzg2LCAxMjY4MywgMTA2NjIsIDAsIDgxMTIsIDAsIDY1ODUyLCA3NDYyOSwgMTIzNzksIDEyNzEwNywgOTI5MzAsIAotICAgIDQxOTY0LCA0MjIwOCwgNjM4NDMsIDIwODQsIDQxOTY1LCA3MDA4OSwgNjU4NjYsIDQzMjcsIDAsIDYzODQwLCA2NjQxMywgCi0gICAgNDEyMjAsIDEzMDMyLCA5Mjk4MCwgNTg0LCAxMjkzMywgNDMxNzcsIDEyMzczLCA2OTg1NSwgMTMwMDAsIDEzNTEsIDI5MzUsIAotICAgIDg2OTgsIDEyNjY1LCAwLCAxOTMwLCAwLCA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDAsIDYzOTAxLCAwLCAKLSAgICAzNjU3LCAxMTk2MTEsIDY1MjAyLCA2MDAwLCAxMTM3ODYsIDEyNDI2LCAxMjEwNTgsIDExOTkzNSwgNDE3NDAsIDEyNDI4LCAKLSAgICA0MTI4MywgNDE5MTYsIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgOTgzOTQ4LCA3NTYyLCAxMjUxMjksIDUxNzAsIAotICAgIDk4MzkxNSwgNDE3NTUsIDY3NiwgMCwgNjY3MDQsIDY2NjY0LCA5OTc4LCA2NjQ5MSwgMzUzNiwgMCwgOTc1MiwgOTIzOTcsIAotICAgIDYxNjIsIDc4MzIwLCA2OTIyOCwgMTAxMTMsIDQxODI5LCA2NTg4NiwgNTE1OSwgMTI0MjIsIDQxODMyLCA0MzksIDMwNzIsIAotICAgIDkxNzgyOCwgNDIyMDcsIDc0NTQ5LCAxMTc5NiwgNDA5NzAsIDQxODMwLCAxMjUwMjEsIDcwMTUxLCA4MzA4LCA5MTc3OTcsIAotICAgIDcwODA3LCAxMTkyNTgsIDY3ODY0LCAxMTM2OTYsIDkxNzgwMCwgMTIzMzYsIDQxMzUsIDY3MjMxLCAzNDEsIDI3MjcsIAotICAgIDQxMjksIDM1MzksIDAsIDYzODYxLCAwLCA3OTEzLCAwLCA2Mzg1OSwgNDEzMSwgNjM4NjgsIDEyOTA4NSwgNjM4NjcsIAorICAgIDg4MzcsIDY1MjI5LCAxODQzLCA0MjI4MywgNDMyNTAsIDQxNTYyLCA5MTAwLCA3NDU0OCwgNjg4MjYsIDM2NDAsIDkyNDExLCAKKyAgICA0MjMyMSwgNzI4NCwgOTI4ODAsIDExODk4NywgMTk0NzgzLCAxMDA4OTcsIDc0MTE1LCAxOTQ5NTEsIDEyNTE5OSwgCisgICAgMTk0OTUzLCA0MjA4MCwgMjUyOSwgOTgzOTA5LCA5ODM0NzEsIDY2MDEwLCA0MjA4MywgNzQ5NTIsIDY4Mzk4LCAxOTQ5NTcsIAorICAgIDY3NjE5LCA2NjM2NywgMTAwODk5LCA5NjM0LCA5MjM4MCwgOTk4OCwgMCwgNDEwNjgsIDAsIDQyOTUsIDY1MjY0LCA2ODAwNiwgCisgICAgMCwgNjc4MzUsIDEwMDkwMCwgNzg1LCA4MjM2LCAxMjg2NDcsIDkwMjcsIDY4MTYwLCA2NzYyMywgNjQzODMsIDEyMDI2NSwgCisgICAgOTI1LCAxMjcxNTYsIDAsIDQxOTg1LCA0MTA3MSwgOTU4NiwgMTIwOTg4LCA0MTk4NCwgOTIxNywgMTI4MzcyLCA5MjUxMCwgCisgICAgOTIyMTgsIDkxODYsIDIwNjcsIDQwMTYsIDEyODg0OCwgMTI5MTgyLCAzODEsIDEyOTM2LCA5ODM3MzYsIDQyMDc3LCAKKyAgICA5Mjk4NSwgNjk4ODAsIDUxODQsIDQyMDc4LCAxOTQ2MDcsIDEwODEwLCAxMjg1MzEsIDQ1ODUsIDE5OTQzLCA1ODYwLCAKKyAgICA2NzYzMywgMTIxMzM0LCAxMjcxMDQsIDgxMiwgMzYxNSwgNzI0MDEsIDUxNzgsIDQ0MDAwLCA5MjQzNiwgNzg4MDcsIDUxODgsIAorICAgIDc0Mjg3LCA2NzYyOSwgMzYwNSwgMTA2OTIsIDExNjYsIDY0NDI5LCA0MjYzOSwgOTI0LCAxMjc3OTMsIDY3NjMxLCA0MjYxNiwgCisgICAgMTIwNjcwLCAyNDQyLCAxMDcwMywgNjczMTcsIDY3NjMyLCA2NzMxNiwgMTI3NzEsIDEyNzM2LCAxMjc1MywgNjY3MDgsIAorICAgIDczOTMzLCA2NzYyNiwgNDI0MDEsIDE5NDg2NSwgNjk4NzIsIDEyNzM3MywgNDIyODgsIDEyNzUxLCA3NDkwNiwgODU0MiwgCisgICAgMTMxNDUsIDE5NDk2MywgMjQ2OCwgNjY3MDYsIDQxMjk0LCAzNjI2LCAzODgzLCA2NDM4OCwgNDI0NzksIDcxMjIwLCAKKyAgICA0MTExNywgMTAwODkzLCA5MjU4MCwgMTI4NjI0LCA3NDkzOSwgNjc2MjQsIDEyNzk3NiwgMTI5MCwgMTAwNTkxLCA2NTU4NSwgCisgICAgMjcxNSwgODA2LCA2NTIwOCwgNDE4ODQsIDkxNzg4MywgMTMxOCwgNjQ3MzEsIDc4MDA0LCAwLCAwLCA2NjMyNSwgMzQ2NSwgCisgICAgMjQwNSwgOTI0MCwgOTgzODU4LCAxMjc1NiwgNjUyNTksIDAsIDk4Mzc4MSwgMTI3NTIsIDU4MzMsIDE0MzIsIDExMjQ2LCAKKyAgICA0MTg4MywgNzM5MTIsIDk3OTksIDkxNzg5MywgNDE4ODYsIDI0ODAsIDEyNzkwNiwgMjA2MiwgNjczMjYsIDY0OTQsIDU1MzcsIAorICAgIDc4NjU2LCA5ODMyNzUsIDcwNjYxLCAxMjQ5NjksIDEyMTEsIDAsIDEyMDk3MSwgNjcyNjksIDExODgzMiwgMTIzMTgsIAorICAgIDEyOTAyNCwgMTEzNzk2LCA2ODAwNSwgMTA2MjIsIDk4Mzc3OSwgMCwgNjg4MjEsIDY1NjYsIDcxMTk1LCAwLCA3Mzc4MCwgCisgICAgMTE5MTk2LCA2NDg2NCwgMCwgNzg2NjAsIDEyOTA1MiwgODI4NCwgMTMwODEsIDExOTIwNiwgMzU4OSwgNDIwNTEsIDQwMzUsIAorICAgIDY0OTIsIDgzMDAzLCA0MjY1LCA2NjQyLCAzOTc3LCA3Mjc0MywgNDE3NzgsIDgzNiwgOTI5NDcsIDI0ODgsIDEyNTA5NiwgCisgICAgNDU4MiwgMCwgNzE0MjYsIDQxNzc3LCAxMjkyNiwgNzI3MDgsIDc1MjgsIDEwNTUwLCAxMTM3NjEsIDkyNzA2LCA5ODM5NTUsIAorICAgIDEwOTYxLCA5Mzk3NywgMTM3NCwgNjQ4NzgsIDExOTAxNCwgNjc3MjAsIDQyMzg5LCAyMjczLCAyMjg2LCA5MTc2MDQsIAorICAgIDc4NDkyLCA0MTM3NywgMTI3OTA5LCAxOTUwNDcsIDQwMCwgMTI1OTcsIDEwMDQ4MiwgMTI4MDk3LCAxMjkwNzEsIDY2NjEsIAorICAgIDkxNzk2MSwgNjQ4MjcsIDAsIDczODE3LCAzOTAsIDExOTYxNywgNzEzMDEsIDEyNzI5MiwgMzQ3MywgNzcxOCwgMTEzNzU1LCAKKyAgICA2Njc0MiwgMTI1MTM5LCA1NTI4NSwgNzM3ODQsIDY2Mzk0LCAwLCAxMTk2OSwgMTIwNDYxLCAxMjc4NDEsIDYzNjUsIDE4ODcsIAorICAgIDY3NjMsIDkyNTUxLCA4MDgwLCA3MDA2LCAwLCA5Mjc2MywgNjc1NywgNjQzNTEsIDE1NDQsIDY3MTU2LCA2NzY2LCA2NDY3NywgCisgICAgMTIwNzE2LCA2NzA4OCwgNjE0NiwgNzQwMzEsIDc3MSwgMTIwNjgyLCAxOTQ2NTAsIDEyODEyLCAxMzE2OCwgNDIyNzIsIAorICAgIDEyMjAwLCA2NjQyMywgNzkwNCwgMTI4NzE1LCA5NTMsIDEyOTE3LCA3MjcwNCwgMTIzMDAsIDY3MDg5LCAxMTQ5MSwgOTcyNCwgCisgICAgMTAzNDEsIDk4Mzc3MywgOTUyNCwgNzQ5MCwgMTEzODksIDc0ODksIDMzNzksIDEyODc3NSwgNzQ4NywgNzI3MTYsIDQ3MSwgCisgICAgNzQ4NCwgNzQ4MiwgNjc1MywgNzQ4MCwgNTc2NCwgNzQ3OCwgNzQ3NywgNjUwMSwgNzQ3NSwgNjkxOCwgNzQ3MywgNzQ3MiwgCisgICAgMjQ3NCwgNzQ3MCwgNzQ2OCwgMTAyMzIsIDEwNjE1LCAxMDIxMywgMTI3Mjg4LCA5MjM1NywgMTAwNDksIDExODM0LCAzNTQ0LCAKKyAgICA5ODMzOTAsIDYwMTcsIDY1MzExLCA3NDkzNSwgMTIwMjE2LCAxMzMwNiwgMTA1MzMsIDc4NzAsIDczOTQ5LCA3NjI1LCAKKyAgICAxMDA5MzYsIDEyMDU0NCwgMCwgMTI3OTUwLCA5MjY2MCwgOTgzMzU2LCA3Nzg4OSwgMCwgMTk5NjEsIDI0NzIsIDQyNjY1LCAKKyAgICA5MjM0MSwgMTIxMTMzLCAyMTM5LCA0MjU2LCAxMjA3NzYsIDc0MzgwLCA0MzgzNiwgNDI2NzUsIDQyNjU4LCAxMjg0NSwgCisgICAgNjY2NiwgNzA1MDgsIDY1MTM4LCAxMTkzNTUsIDY3ODYyLCAwLCA2NTY3MSwgNzA4MywgMTIwMDA4LCA4MDY2LCA3Njc4LCAKKyAgICA3NDg2NSwgMTI1MTM0LCAxMjAzMjEsIDEyNzI4MywgMTI3ODcyLCA3MTg2LCA3Mjc1MSwgMTIwNTU1LCA3Mjc2MywgNDQ1LCAKKyAgICAxMTkwMjgsIDY2ODQ5LCAxMjUwMzEsIDkxNzg0MCwgODMzMCwgMCwgMTI1MDE4LCA0Mjc5NywgMTEzNzM2LCAxMjAyMTUsIAorICAgIDgzMDAxLCAzOTAyLCAwLCAxNzcwLCA0Mzk1OSwgMTAxMDM5LCAxNTYwLCA0Mzk1OCwgOTIxNjcsIDQ1ODQsIDczODQzLCAKKyAgICAxMjI5MTEsIDExNzEyLCAxMDg2NiwgNjcwOTIsIDExMTgsIDcxMzM0LCA3NDg4OCwgOTgzNDc2LCAxMDgxLCA3NDM2LCAKKyAgICAxMTE0NywgNzI1MiwgNzAwOTMsIDU5OTYsIDY5OTIxLCA0OTAzLCA2ODE0MiwgNDEzODYsIDUxNjIsIDExOTE4OSwgMTMzMCwgCisgICAgMTI2NjAwLCA3MTM5LCAwLCAxMjA0NywgNzY3NSwgOTgzODQ3LCAxMjg3OTcsIDE4NDgsIDQzMzQsIDYzMjQsIDQxOTc1LCAKKyAgICA2NDc3NywgMTA2NzQsIDEyMzA4LCAxMjE4NiwgMCwgMTEzNzk1LCA3MjgwNywgMTI3MTUsIDY4MDAyLCAxOTQ1NzYsIAorICAgIDgzMjU2LCAyMDE4LCA2NjY3MiwgNDE5NzksIDY2Njg1LCAxMTkxNTcsIDY4MDAwLCA3ODQ5MCwgMTI5MTQwLCAxMjY5ODQsIAorICAgIDY4MDAxLCA5MzM0LCA5MjcwNSwgNzA4MDAsIDcwMTAxLCA3OTc1LCAxMDA5MTAsIDc3OTU3LCA5MjE0LCA0MzQ5NCwgNDg4NCwgCisgICAgNjY1OTcsIDY5NzMyLCAwLCA5Mjk1OCwgNjMxMywgNjU1MTMsIDY5ODU3LCAxMDA5MDgsIDEyNzc5OSwgMTI4NzU3LCAyMzQ1LCAKKyAgICA0MzY5NywgNDYzLCAwLCAxMjEyODEsIDY4MTc4LCAzMTE3LCA1NDYwLCAxMjE0MjMsIDEyNzk1NSwgOTgzMzg5LCAwLCAKKyAgICA0MjI3OSwgMTI3MTQyLCAxMjY1MDMsIDc4NDE1LCA5ODMyMjgsIDgyMjEsIDk4MzM4NiwgMTMyNDgsIDEyNTAyNywgCisgICAgOTgzODQzLCA0Mzk1NiwgMTI4NDE1LCAxMjkwOTMsIDEyMTAwOSwgNTY2MywgNzExMjAsIDEyODQ3MiwgMTI4OTU4LCAKKyAgICAxMjc4NTQsIDI0ODIsIDE0NzEsIDE5NDU4MywgMTEzNzQ3LCA0MjI0NywgMTIzNzgsIDczOTI1LCA2OTY2NCwgNzE0MjcsIAorICAgIDEyMzc0LCAxMjEzNTcsIDEyNzA2NywgMCwgMTE4ODI4LCAyNDYwLCA3MTg4MiwgMTE5NDQsIDEyMzc2LCA5MjM0MiwgCisgICAgNjQ2NzksIDkyODkzLCAxMjM4MCwgMTA1NTcsIDY0NDczLCA1ODcwLCAxMTEyMiwgMjAyNCwgMTI3MTgwLCA5ODMzOTEsIAorICAgIDcxODc5LCA1MzksIDEwMDkzMywgMTAwOTMyLCA3MDEyMCwgMzg1MywgNjUxODAsIDcyNzMwLCAxMDA5MzksIDEwMDkzOCwgCisgICAgOTIzMjQsIDk4Mzc0MiwgODY1OSwgMCwgMTI0NzQsIDY3MjQxLCA5NTAzLCAxMDA5NDEsIDI0NzgsIDEwMDk0MywgNDE2MiwgCisgICAgMTAwOTQ1LCA0MjYwLCAxMjk1MywgNjk2MzMsIDgyOTY2LCAxMjQ3MCwgOTI2NDAsIDc0MTg5LCAyNzQyLCAxMjQ3NiwgCisgICAgMTE3OTgsIDEwOTQ2LCAxMjczMTAsIDUwMDAsIDExMzY4NywgOTgzNTc5LCAxMjgxOTAsIDY5NjcyLCA4MjEzLCA0MzgyNCwgCisgICAgNzc3MSwgNjE2MSwgNjgwMTgsIDY3MDksIDkyMjQ5LCA3ODg4NSwgMTE5MjQzLCA2ODIzNSwgODMzODgsIDc4NTQ3LCAKKyAgICAxMDA5MjEsIDEwMzAxLCAxMDMzMywgMTAzOTcsIDEwMDkyNSwgMTAwOTI4LCA3Mzc5MSwgMTIwMjM4LCA4MzAzMCwgMCwgCisgICAgMTIxNDgyLCAxMTkxMjMsIDQwMTQsIDEyODQyLCA3Mzk1MiwgMTIwMTUsIDEyNzI5MCwgODI3NSwgMzg5MywgNzQ5MDMsIAorICAgIDEyMDkyNywgMTIyMTAsIDcyMjEsIDQyMTQ3LCA3NDg2OCwgNzQ1NTAsIDcxMjE1LCA2NDc0NywgMTAwOTE5LCAxMjgwODYsIAorICAgIDEyNTE2LCA0NDQ0LCAwLCA5MjI3MSwgNzQ1MzcsIDEwODkyLCA4MjMxLCAwLCA2NDczLCA0MTk2OCwgNzgzODgsIDQxOTczLCAKKyAgICAzNTkxLCA0MTk2OSwgODMwMDgsIDI0NTMsIDExODg5OSwgOTI2NjYsIDY0NzA1LCA3MTA2OCwgMCwgMTAzNDksIDEwNDEzLCAKKyAgICA0MzU5MSwgNDE5NjIsIDMyMDIsIDc0MzUzLCAxMjkxNzUsIDgzMTYsIDEyOTE3NCwgMCwgOTQwNjAsIDY4NywgOTMwNTUsIAorICAgIDEwMDcwNSwgMCwgMTg0MCwgMTIxMjI0LCA2ODY3MSwgMTExMjEsIDQ4ODMsIDI4NSwgNDcyMywgMTExNzUsIDkyNjkyLCAKKyAgICA0NDU5LCA3NDU3NywgNDI5MjEsIDQxNzIwLCAxMTA4OSwgMjQwLCAxOTkwNiwgOTE3NzcwLCA0MjMyMywgNzQ2NDAsIDk3NDMsIAorICAgIDEyMDIzMiwgMTMxMzQsIDkzMDY1LCAxMjg5NTYsIDY1OTMxLCA5MjU3OSwgMTI4MzI5LCA0MjYzNCwgOTgzMzQ1LCA0MzQzNywgCisgICAgMzA4MSwgMTE0NjMsIDEyMDE1NCwgMCwgMTk0NTY3LCAxMDQ0NSwgMTIxMzIyLCA5Mjk2OSwgNjY3MTcsIDI2MTQsIDkxMjUsIAorICAgIDcxMTI1LCAxNzI5LCAxMjkwMzQsIDcyNDIwLCA2NTIyMSwgNjM4ODMsIDQzMzM0LCA2NDg1MiwgMTAwOTE1LCA2NTE5NCwgCisgICAgNjYyMDEsIDEwMDkxNiwgNjY1NzgsIDUwMDEsIDQxODc5LCA3NDQyNywgNDEyMSwgNTAwMywgODg0LCA2NjcwMCwgNjM4NzksIAorICAgIDQ5NDMsIDUxNTAsIDczODg5LCA3Mzc2NCwgNDAzOSwgNjQzLCAzMDg2LCA5MjUzMywgNDI0NDgsIDQyMjk5LCA1OCwgCisgICAgMTIwMDg0LCAxMDAzNTUsIDEwMTAyNiwgNjM4NzMsIDg0OTEsIDE5NDY0MywgMTAwODkxLCA5ODM2MjMsIDQ1MzAsIDQyNDA5LCAKKyAgICA3MTI2LCAxMDA4OTQsIDI3MjEsIDEyMDA3MywgMTE5MDk2LCAxOTkyOSwgMTE4OTQxLCAxMjczMjYsIDkyOTc1LCA0MjQyLCAKKyAgICA0MjY0LCAxMjAwNzcsIDEwMDkwMiwgNjYxNzksIDQyNDEyLCA2NTk0MSwgMTMxMTQsIDY0NTIyLCAxMDc0MCwgMzA5NCwgCisgICAgMTIwMjI1LCA5NzU0LCAxMTkxMDIsIDQ0MzcsIDczOTQ4LCAxMjcwNzQsIDExOTE4NiwgNTUyODAsIDQyMTc0LCAxMjc5NTQsIAorICAgIDQyNDMwLCAxMjc4MzUsIDk4MzQ1MiwgNDIzNTUsIDY2MDI2LCA0MzA2LCA0MTM4MCwgNjg0MzIsIDkyNTg2LCA2ODMxNCwgCisgICAgNjY2NjcsIDExOTM1MSwgMTAwNjc3LCAxMjExNzIsIDQyMjAwLCA0MjU2NiwgNzAwMDAsIDEwMDg4MSwgNTA4OCwgNjk0OCwgCisgICAgMCwgODUyNCwgNzI3MzYsIDAsIDEyMzg1LCA5MTc4NTUsIDc0OTI2LCA2OTY0NiwgMTM4NiwgNjQ1ODAsIDExNDgwLCA2MTE2LCAKKyAgICA2NTAzOSwgNjUwMzgsIDEyMzkyLCA2NTAzNiwgODA2NCwgMTI3NTU4LCAxMjEwMSwgNTgyMiwgMTE5MDA0LCAyMDgwLCA3MTAsIAorICAgIDc3OTk5LCAxMTY2MywgMTY2NiwgNDIwOTEsIDc0MDY3LCAxMjM4MywgNDM2NzEsIDQyMDkyLCA2ODQxOCwgNDI4OSwgCisgICAgMTAwODg1LCA2Mzg5NiwgMTIwNjEsIDQyMDk2LCA0MzYyMSwgMzM2MiwgMTIzNzcsIDExOTkzNCwgMTI4NTg2LCA2ODQ0OSwgCisgICAgNzQ2MSwgNzM5MDEsIDEyNDQsIDMzMSwgNzM3ODYsIDEyNjgzLCAxMDY2MiwgMTI4Nzc4LCA4MTEyLCAwLCA2NTg1MiwgCisgICAgNzQ2MjksIDEyMzc5LCAxMjcxMDcsIDkyOTMwLCA0MTk2NCwgNDIyMDgsIDYzODQzLCAyMDg0LCA0MTk2NSwgNzAwODksIAorICAgIDY1ODY2LCA0MzI3LCA2Mzg0OCwgNjM4NDAsIDY2NDEzLCA0MTIyMCwgMTMwMzIsIDkyOTgwLCA1ODQsIDEyOTMzLCA0MzE3NywgCisgICAgMTIzNzMsIDY5ODU1LCAxMzAwMCwgMTM1MSwgMjkzNSwgODY5OCwgMTI2NjUsIDEwMDg3NywgMTkzMCwgMTAwODc5LCAKKyAgICA3ODIyOSwgMTI0MjcsIDY2NTE0LCA2OTg1OSwgMTMwMzEsIDEwMDU3MSwgNjM5MDEsIDEwMDU4NywgMzY1NywgMTE5NjExLCAKKyAgICA2NTIwMiwgNjAwMCwgMTEzNzg2LCAxMjQyNiwgMTIxMDU4LCA3NDAxMywgNDE3NDAsIDEyNDI4LCA0MTI4MywgNDE5MTYsIAorICAgIDExOTIxMCwgMTI4MzE4LCAwLCAxMjQyOSwgNjcyNywgMTAwODczLCA3NTYyLCAxMDA4NTMsIDUxNzAsIDc4MjQ5LCA0MTc1NSwgCisgICAgNjc2LCAxMDA4NTYsIDY2NzA0LCA2NjY2NCwgOTk3OCwgNjY0OTEsIDM1MzYsIDgzMDQ3LCA5NzUyLCA5MjM5NywgNjE2MiwgCisgICAgNzgzMjAsIDY5MjI4LCAxMDExMywgNDE4MjksIDY1ODg2LCA1MTU5LCAxMjQyMiwgNDE4MzIsIDQzOSwgMzA3MiwgOTE3ODI4LCAKKyAgICA0MjIwNywgNzQ1NDksIDExNzk2LCA0MDk3MCwgNDE4MzAsIDEyNTAyMSwgNzAxNTEsIDgzMDgsIDEwMDY5NCwgNzA4MDcsIAorICAgIDExOTI1OCwgNjc4NjQsIDExMzY5NiwgOTE3ODAwLCAxMjMzNiwgNDEzNSwgNjcyMzEsIDM0MSwgMjcyNywgNDEyOSwgMzUzOSwgCisgICAgMTAwODYxLCA2Mzg2MSwgNzA2ODMsIDc5MTMsIDEwMDc2NiwgNjM4NTksIDQxMzEsIDYzODY4LCAxMDAzNjYsIDYzODY3LCAKICAgICA0MTMzLCAxMTM3MSwgMjEwLCA0NjAwLCA5ODM4OTcsIDc0NTYwLCA0MTM3LCA4MDgyLCA3ODUwNiwgMTE5MDYyLCA3ODUwNCwgCiAgICAgNjcwNCwgNDU5MSwgMTI4MDI5LCA0Mzg3MywgMTIwNzUzLCA5NjgwLCAxMjkzNywgMTIwNjIzLCA1NjEsIDEyMTU5LCAxOTUsIAogICAgIDY4MzIxLCA0MTUwMSwgMTk0NTgxLCA0MjAzMSwgNTcxOSwgNzE3MiwgNDI2ODcsIDgzNjgsIDEyODMwNiwgNDE0OTksIAotICAgIDkzMDY4LCA3MTA0NywgNDIyNDIsIDQxNDk4LCA5MTc3OTQsIDQyMDI1LCA3ODU2NSwgNjU4MDUsIDQyNDYzLCA2NzE4MiwgCisgICAgOTMwNjgsIDcxMDQ3LCA0MjI0MiwgNDE0OTgsIDEyODE3OCwgNDIwMjUsIDc4NTY1LCA2NTgwNSwgNDI0NjMsIDY3MTgyLCAKICAgICAyOTI0LCA2NzE4MywgMTIwNTEwLCAwLCA5ODM5NzIsIDkyNzY2LCA3Mzk0MSwgNjcxODYsIDQyMzMwLCA2NzE4NywgMzk2OSwgCi0gICAgMTIxNDA1LCAwLCA3MTY5LCAxOTkyLCA5NjUyLCA3Mzk3NywgNzI0NiwgNDIwODYsIDEyNjYxNSwgMjIxOSwgMTIxMzQ5LCAwLCAKLSAgICAxMjg4MDEsIDY3MTgwLCAxMjc1NjksIDMyNywgMTIxMjc3LCA5MDQyLCA5MTc3NzcsIDkxNzc3NiwgNjUxNDgsIDEyNDMzLCAKLSAgICA5MTc3ODEsIDEyMDIyMiwgODMxMjksIDEyNDMxLCA4NjY4LCAxMjQzNCwgNjcxOTQsIDExMzgxMiwgNTk5OSwgNzUwMTMsIAotICAgIDc3MTIsIDEyNDMyLCAxMjgyNDMsIDQzNjUzLCAxNzI2LCAxMDE1LCA3NDA3OSwgODIxMiwgMTI4MDY1LCAxMTM3NTQsIAotICAgIDQyNDIzLCAxMTkwNjYsIDE5NDYxMywgNzIzOTgsIDY2NzA5LCAxMjEwNjEsIDg4MTEsIDkyNywgOTI1MzIsIDAsIDEyNDM2LCAKLSAgICAxMjAwODcsIDQyMDIxLCAwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgMCwgMTk1MDE2LCAxMjc5NzIsIAotICAgIDc4MTk3LCAxMTM0OCwgMCwgNzgwMzcsIDkxOTQsIDk4MzE4NCwgMCwgMTk5MTQsIDEyMTc5LCAxMjg3NDAsIDIyOTYsIAotICAgIDEyODkzMiwgNjM4MzYsIDYzODMyLCA5MTc3NzMsIDEwOTY3LCA2MzgxNiwgMjU5NCwgMzQ0NCwgNjM4MTcsIDExMTc4LCAKLSAgICA5MTc1ODQsIDQxNTAzLCAxMjc0NzgsIDExMjY1LCA2ODI5NSwgMTIwNzU2LCAxOTQ5MjIsIDY3Mjg1LCA1NjY0LCAzOTcyLCAKLSAgICAxMjA4OTEsIDEyODU4MywgMTI5NDA4LCA2NzI4NCwgMTI0MTYsIDkxNzc2NCwgMTE5NjA4LCAxMDgxNiwgOTE3NzY5LCAKLSAgICAxMTIxMCwgMTI0MTgsIDg1ODYsIDM4ODIsIDg1MzIsIDkxNzc3MSwgMTU3MywgNjgwODEsIDExOTg0NywgNDU5NiwgNjYzMzksIAotICAgIDEyNDE3LCA2NjAwMSwgNjUzNDMsIDEyNjQ5MSwgMTI0MTQsIDgyODcsIDY4MjE5LCAxOTUwMTcsIDY4MTA4LCAxMTQzLCAKLSAgICAxMTkxNjksIDExOTg0NiwgMTI0MTUsIDY2MjYsIDQyNzYzLCA5MTc1OTQsIDExODg4NCwgOTAyMSwgMTIwNzgzLCAxMTk5MzEsIAotICAgIDExNzI0LCAxMjc3ODcsIDAsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAKLSAgICAxMTQwMCwgNDM5NDMsIDE5NDc5OSwgNjY4MzMsIDEyODIzOSwgOTgzNzA3LCA5MjU1NywgOTM5NzYsIDEyNzUyMywgCi0gICAgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgOTgzODczLCA3NzE1LCAzODgxLCA0MTQ4NywgMTIxMTgsIAotICAgIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgNjk4MjUsIDMwMDcsIDE0NDgsIAotICAgIDMwMTgsIDE5NDgwOSwgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgODUxOSwgMTIxMjI2LCAzMDE0LCAKLSAgICA1MDgxLCA2NTg1MywgMTIwNzE1LCAxOTQ5OTIsIDY4MDE0LCA2OTk1MSwgNTA3OSwgNjQ4MDIsIDQyMjEwLCA0NTk3LCAKLSAgICA2NTUzMiwgMTE4MjgsIDEyMDE4NSwgMTIzNzEsIDExMTA1LCA4NDA3LCA2NzE2MywgMTA4MDUsIDg1MTgsIDEwNzc5LCAKLSAgICAxMjAxODgsIDcxMzAzLCAxMjEyNDAsIDEyMzY3LCA0MjE3MCwgMCwgNjcyOTAsIDYyOSwgMTkyNCwgMTI3MDk4LCAxMjAzNywgCi0gICAgNjcxNTgsIDU5ODcsIDg0NjIsIDgwMDUsIDEyMzY1LCA2MzkzMywgNjk3MzUsIDEyMDgxNSwgMTIzNjksIDEwNjQ5LCAKLSAgICA2Nzk4MSwgNTA3NywgMTIwMTc0LCAxMDg4MCwgNjM5MjcsIDUwNzUsIDEyMTEwOSwgMTI3MzAwLCA2NTA3NSwgMCwgMTEwMDcsIAotICAgIDcwODUxLCA2NjY1OSwgOTI2MDcsIDkxNzkzMywgNjY2ODQsIDEyODA2MywgMzQzNCwgNDk1NCwgMTkwNCwgOTI2NzksIAotICAgIDUyNjYsIDEyNjk4MCwgNTI3MiwgMTA0OTksIDQ1MDcsIDk1NzgsIDYzOTIzLCAxMjAxNzcsIDc5NzksIDAsIDk4MzEsIDAsIAotICAgIDE5NDkyNiwgNDYxLCA5ODAzLCA0MjI4MiwgNDUwNCwgMTUwNSwgMTI3ODkzLCA2MzI1LCA1Mjc2LCA0MzAyMSwgMTIwNDg4LCAKLSAgICAwLCA1NTIzNiwgOTI2NTksIDY2NDYxLCA1MTc3LCA0MTMyNCwgMTIwNTUsIDg3MjIsIDEyMDgwNSwgNDEzMjcsIDk4MzczMiwgCi0gICAgNjY2OTUsIDQxMTQsIDQwOSwgNDM4MywgODkwMCwgODk0OCwgNDEzMjUsIDc0OTMwLCA3MjEsIDEwMTgyLCA5MTA4LCAKLSAgICA3MTMxMSwgMCwgMTE5MTg1LCA0MjIyOSwgNzQ5NjMsIDEyMTAxNCwgNTk5OCwgMCwgNDIzNTMsIDc0ODI1LCAwLCAxMjU4NywgCi0gICAgOTQxMDQsIDc4NTcxLCA3NDg4OSwgNzEzMjgsIDEyODk1NSwgNDE1NzYsIDQyMjE1LCA3ODU3MCwgNzQwMzcsIDAsIDg1NzgsIAotICAgIDU5OTUsIDc1NzMsIDQxNTc1LCA3NDc4OSwgNzQ3NTIsIDYzOTQ0LCA2Mzk0OSwgNjQ3NjcsIDI2NzAsIDQxNjcsIDE5NDc5NiwgCi0gICAgMTE3MjMsIDAsIDc0MTIwLCAxMjY2NDIsIDY1MDc2LCA5MzgsIDQzNDE0LCA3Mzg1NCwgMTE3MzcsIDk3MjEsIDAsIDY3MTc5LCAKLSAgICA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIAotICAgIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDAsIAotICAgIDQyMDAyLCAxMjQwNCwgNjgwOTIsIDc0OTI4LCA0OTQwLCAxMjQxMCwgNzY4MywgMTE2NywgNzM3MjksIDQ5ODMsIDEyMDUwNywgCi0gICAgODYxLCA2NzY5OSwgNzQ4ODAsIDY4Mjk3LCA5ODM4MDcsIDQzNzU3LCA0MzM3MCwgMTI5Mjk4LCAwLCAxMTk1NiwgMTI0OTY3LCAKLSAgICAxMjEyNjMsIDcwODE1LCA5NjE2LCA2NjMxLCA5MjMzOCwgMTI4MTYsIDQzNzU5LCA0MjIxOCwgMTI3MTAsIDY4Njc0LCAKLSAgICAxMjcyMSwgNDEwMSwgNjYxODUsIDAsIDU5OTIsIDc2MTYsIDE5NTA0NCwgMCwgMTI1NzcsIDkzMDE3LCAxMjgyODksIDg1MywgCisgICAgMTAxMDcyLCA5ODM5NjEsIDcxNjksIDE5OTIsIDk2NTIsIDczOTc3LCA3MjQ2LCA0MjA4NiwgMTI2NjE1LCAyMjE5LCAKKyAgICAxMjEzNDksIDAsIDEyODgwMSwgNjcxODAsIDEyNzU2OSwgMzI3LCAxMjEyNzcsIDkwNDIsIDEyMDg0MywgOTE3Nzc2LCAKKyAgICA2NTE0OCwgMTI0MzMsIDkxNzc4MSwgMTIwMjIyLCA3NDIwNiwgMTI0MzEsIDg2NjgsIDEyNDM0LCA2NzE5NCwgMTEzODEyLCAKKyAgICA1OTk5LCA3NTAxMywgNzcxMiwgMTI0MzIsIDEyMDg4NSwgNDM2NTMsIDE3MjYsIDEwMTUsIDc0MDc5LCA4MjEyLCAxMjgwNjUsIAorICAgIDExMzc1NCwgNDI0MjMsIDExOTA2NiwgMTk0NjEzLCA3MjM5OCwgNjY3MDksIDEyMTA2MSwgODgxMSwgOTI3LCA5MjUzMiwgCisgICAgOTgzNjM3LCAxMjQzNiwgMTAxMDU2LCA0MjAyMSwgMTk0NjEwLCA2NzY0NCwgMTI5OSwgMTIyNDAsIDQyMzUwLCA2NTE0MywgCisgICAgMTAxMDU4LCAxOTUwMTYsIDEwMDU2NiwgNzgxOTcsIDExMzQ4LCAwLCA3ODAzNywgOTE5NCwgMTAwODcwLCAwLCAxOTkxNCwgCisgICAgMTIxNzksIDEwMDU2OSwgMjI5NiwgMTAwNTk2LCA2MzgzNiwgNjM4MzIsIDcyNzkzLCAxMDk2NywgNjM4MTYsIDI1OTQsIAorICAgIDM0NDQsIDYzODE3LCAxMTE3OCwgOTE3NTg0LCA0MTUwMywgMTIwMDg3LCAxMTI2NSwgNjgyOTUsIDEyMDc1NiwgMTAwNjAwLCAKKyAgICA2NzI4NSwgNTY2NCwgMzk3MiwgMTAwOTg1LCAxMjg1ODMsIDEyOTQwOCwgNjcyODQsIDEyNDE2LCA5MTc3NjQsIDExOTYwOCwgCisgICAgMTA4MTYsIDEyNzI4OSwgMTEyMTAsIDEyNDE4LCA4NTg2LCAzODgyLCA4NTMyLCA5MTc3NzEsIDE1NzMsIDY4MDgxLCAKKyAgICAxMTk4NDcsIDQ1OTYsIDY2MzM5LCAxMjQxNywgNjYwMDEsIDY1MzQzLCAxMjY0OTEsIDEyNDE0LCA4Mjg3LCA2ODIxOSwgCisgICAgMTk1MDE3LCA2ODEwOCwgMTE0MywgMTE5MTY5LCAxMTk4NDYsIDEyNDE1LCA2NjI2LCA0Mjc2MywgOTE3NTk0LCAxMTg4ODQsIAorICAgIDkwMjEsIDEyMDc4MywgMTE5OTMxLCAxMTcyNCwgMTI3Nzg3LCAxMjAxOTEsIDcxMTIyLCAxMjY2MTksIDAsIDk4MzY2MSwgCisgICAgODAyNywgMTA5OTcsIDkxNzEsIDEyNzQxLCAxMTQwMCwgNDM5NDMsIDEwMDY3NCwgNjY4MzMsIDEwMDgwNSwgMTI3Nzc5LCAKKyAgICA5MjU1NywgOTM5NzYsIDExOTg0NCwgMTIwMTkwLCAxMzI0LCA2NzYwOCwgMTI4MjE0LCA0MjM2OCwgMTAxMDYyLCA3NzE1LCAKKyAgICAyMjcxLCA0MTQ4NywgMTIxMTgsIDQyNTE0LCA2ODY1MSwgMTI4MjEwLCAxMjg1OTQsIDMwMDksIDQxNDc2LCA0MTQ4OSwgCisgICAgNjk4MjUsIDMwMDcsIDE0NDgsIDMwMTgsIDE5NDgwNywgMzg4OSwgODUyMSwgNTA4MywgNTA4MiwgMTE5ODU5LCA3ODI1NSwgCisgICAgODUxOSwgNzI3MTEsIDMwMTQsIDUwODEsIDY1ODUzLCAxMjA3MTUsIDE5NDk5MiwgNjgwMTQsIDY5OTUxLCA1MDc5LCAKKyAgICA2NDgwMiwgNDIyMTAsIDQ1OTcsIDY1NTMyLCAxMTgyOCwgMTIwMTg1LCAxMjM3MSwgMTExMDUsIDg0MDcsIDY3MTYzLCAKKyAgICAxMDgwNSwgODUxOCwgMTA3NzksIDEwMDgwMSwgNzEzMDMsIDEyMTI0MCwgMTIzNjcsIDQyMTcwLCAxMjgyMTUsIDY3MjkwLCAKKyAgICA2MjksIDE5MjQsIDEyNzA5OCwgMTIwMzcsIDY3MTU4LCA1OTg3LCA4NDYyLCA4MDA1LCAxMjM2NSwgNjM5MzMsIDY5NzM1LCAKKyAgICAxMDA4ODgsIDEyMzY5LCAxMDY0OSwgNjc5ODEsIDUwNzcsIDEyMDE3NCwgMTA4ODAsIDYzOTI3LCA1MDc1LCAxMjExMDksIAorICAgIDEyNzMwMCwgNjUwNzUsIDAsIDExMDA3LCA3MDg1MSwgNjY2NTksIDkyNjA3LCAxMDA2MDcsIDY2Njg0LCAxMjgwNjMsIAorICAgIDM0MzQsIDQ5NTQsIDE5MDQsIDkyNjc5LCA1MjY2LCAxMjY5ODAsIDUyNzIsIDEwNDk5LCA0NTA3LCA5NTc4LCA2MzkyMywgCisgICAgMTIwMTc3LCA3OTc5LCAwLCA5ODMxLCAwLCAxMjA1ODksIDQ2MSwgOTgwMywgNDIyODIsIDQ1MDQsIDE1MDUsIDEyNzg5MywgCisgICAgNjMyNSwgNTI3NiwgNDMwMjEsIDEyMDQ4OCwgMCwgNTUyMzYsIDkyNjU5LCA2NjQ2MSwgNTE3NywgNDEzMjQsIDEyMDU1LCAKKyAgICA4NzIyLCAxMjA4MDUsIDQxMzI3LCAxMjkzMzIsIDY2Njk1LCA0MTE0LCA0MDksIDQzODMsIDg5MDAsIDg5NDgsIDQxMzI1LCAKKyAgICA3NDkzMCwgNzIxLCAxMDE4MiwgOTEwOCwgNzEzMTEsIDAsIDM0MTksIDQyMjI5LCA3NDk2MywgMTAwNjI3LCA1OTk4LCAwLCAKKyAgICA0MjM1MywgNzQ4MjUsIDAsIDEyNTg3LCA5NDEwNCwgNzg1NzEsIDc0ODg5LCA3MTMyOCwgMTAwNjI5LCA0MTU3NiwgNDIyMTUsIAorICAgIDc4NTcwLCA3NDAzNywgMCwgODU3OCwgNTk5NSwgNzU3MywgNDE1NzUsIDc0Nzg5LCA3NDc1MiwgNjM5NDQsIDYzOTQ5LCAKKyAgICA2NDc2NywgMjY3MCwgNDE2NywgMTk0Nzk2LCAxMTcyMywgOTgzNDM5LCA3NDEyMCwgMTE5MDAwLCA2NTA3NiwgOTM4LCAKKyAgICA0MzQxNCwgNzM4NTQsIDExNzM3LCA5NzIxLCA5ODMyNjIsIDY3MTc5LCA2NzE2OCwgMTE3NDIsIDI0MTksIDY3MTc3LCAKKyAgICAxMTQ5MywgMTIzMzQsIDkyNDk0LCA0MTUzLCAxMjMwMiwgMTA3OTMsIDUyNTAsIDEyNDA3LCAxMTk3OCwgNDQwNCwgOTE4OSwgCisgICAgMTI0MDEsIDQyMDA3LCA1Nzc1LCA2NzU5LCA2NTgwNiwgNDM5OTcsIDEyMjkyMiwgNDIwMDIsIDEyNDA0LCA2ODA5MiwgCisgICAgNzQ5MjgsIDQ5NDAsIDEyNDEwLCA3NjgzLCAxMTY3LCA3MzcyOSwgNDk4MywgMTIwNTA3LCA4NjEsIDY3Njk5LCA3NDg4MCwgCisgICAgNjgyOTcsIDk4MzgwNywgNDM3NTcsIDQzMzcwLCAxMjkyOTgsIDEyODMwNywgMTE5NTYsIDEyNDk2NywgMTIxMjYzLCAKKyAgICA3MDgxNSwgOTYxNiwgNjYzMSwgOTIzMzgsIDEyODE2LCA0Mzc1OSwgNDIyMTgsIDEyNzEwLCA2ODY3NCwgMTI3MjEsIDQxMDEsIAorICAgIDY2MTg1LCA5ODMyNjksIDU5OTIsIDc2MTYsIDE5NTA0NCwgOTgzMzkyLCAxMjU3NywgOTMwMTcsIDEwMDg4MCwgODUzLCAKICAgICA0MjY5MywgMTk0NjQ3LCAxMTkwMjcsIDk4MzI4NCwgNTAxNiwgNDM1MzUsIDYzODkzLCA0MjgzNSwgOTQ5MSwgOTE3OTEzLCAKLSAgICAwLCA5MTc5MTQsIDAsIDEyNzEyLCA3MTA1LCAxMjc4MDcsIDY1MDYwLCA2Njg3NSwgOTkwMCwgNzc1MCwgOTE3OTQ2LCAKKyAgICAxMDA4NzUsIDkxNzkxNCwgMCwgMTI3MTIsIDcxMDUsIDEyNzgwNywgNjUwNjAsIDY2ODc1LCA5OTAwLCA3NzUwLCA5MTc5NDYsIAogICAgIDEyNzg5NiwgNzQ2MTksIDExOTI2NSwgOTgzNTg3LCA2NDc3OCwgMTI1ODUsIDEwNTY1LCAxMjgxNTEsIDEyMTc3LCAKLSAgICAxMTk4NDMsIDk4MzI2MCwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNzg3NCwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKKyAgICAxMTk4NDMsIDExODg5MSwgMCwgNzc4MjQsIDAsIDQ5MDAsIDEyNTI0NSwgMTI4NzgsIDkyNjMwLCA4OTg0LCA0MTE5LCAKICAgICA3NDc2OCwgODk3MSwgNzg1OTMsIDQzMTEzLCA5NzAyLCA2Njg1MiwgMTEwMjUsIDkyNDUsIDEzMDQ4LCA0OTI3LCA0MTM4LCAKLSAgICA3NDE4NSwgOTI0ODEsIDkyNzEwLCAxMjM5NywgNzc4MjcsIDExOTA0MCwgMTMwNTQsIDEyMzk0LCAwLCAwLCAxOTQ5NTQsIAotICAgIDEzMDUzLCAxMTg5NzQsIDM5NDgsIDEwNzgxLCAxNTQ2LCAwLCA1MDEwLCAxNjgwLCAxMDUwNywgNzg1OTAsIDc4NTgzLCAKLSAgICA5MjQzMSwgMTIxMDM3LCAxMjY2NDQsIDE5NDkxNSwgNzI2NywgMTI3NDc5LCA3NDgzMywgMTI4MTgxLCA1OTkzLCAyODE5LCAKLSAgICAxMjg3ODgsIDEyNzA2LCA3MTA2MywgMTg5MywgNzI2NiwgNjM5MTUsIDcyNjQsIDcyNjUsIDAsIDEzNjMsIDk4MzU4MCwgCi0gICAgNDI5MjMsIDYzOTEwLCA2Mzk5NiwgMzA3NywgMTIwMDE4LCAwLCAxNTEyLCA2OTkyOSwgMTI1ODksIDQxNDc5LCAxMjgzMTMsIAotICAgIDcxMDQ4LCA0MzMzOSwgNzM3NzYsIDk4MzYsIDEyMDcyNywgOTgzOTA5LCA0MTQ4MSwgNDMzMzUsIDc4MzIsIDQyMzQzLCAKLSAgICAzMDkwLCA0MzMzNywgODE3LCAxNjY0LCAxODUwLCA4MzE3NywgMzA3OSwgMTEzNDAsIDQyNDA4LCA0MjQ0NywgNzQ5MzIsIAotICAgIDc0MDQ0LCA0MjMwNywgMTIzODYsIDQyMzA0LCA5MTc1NTUsIDgzNDI4LCAxMjM4OSwgMTIxMDc5LCA5MjM2NiwgNDE5OTYsIAotICAgIDExNTI2LCA2Mzk4NSwgNTg2NCwgMTE0NywgNDM4NDksIDQyODg3LCAxOTg3LCA5MjcxOCwgNTQ4MCwgNzg1OCwgMTE2NTMsIAotICAgIDQxMTYsIDEyMzkxLCA2NjE5MywgMTIxMzgzLCA0OTM5LCAxMjM4NCwgMCwgMTI3Nzc4LCA0MTY4NiwgNjM5MDUsIDExOTYwMSwgCi0gICAgNzAyODUsIDY3Mzk4LCAxMjg4MjAsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIDIwNDIsIDEyMDc3NSwgCi0gICAgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgMTE5ODEzLCA3NzQsIDExOTgyOSwgNzc4NDAsIDExOTgxNSwgCi0gICAgNTk5NCwgMTI1MzksIDAsIDc4Mzc1LCAxMjA1OTcsIDExOTgzMywgOTgzMTA1LCA3ODM3NywgOTgzMjM3LCA5MTc2MjgsIAotICAgIDc3MTksIDYwMjYsIDI0ODYsIDEyODMxMiwgMTE5ODA4LCAxNjIsIDAsIDY1MjE5LCA0MTA3MywgOTY4NywgNDE2ODEsIAotICAgIDYzMDQsIDExOTgxMiwgNjYxOTYsIDE5NDg4MSwgNTI2MiwgMCwgNTUyMzMsIDEyNjgxLCA0MjM3OSwgMCwgNzUzNCwgCi0gICAgMTIyMTksIDIyMjYsIDcwNDk5LCA0MjgxMCwgMTA0OTIsIDEyMTUxMCwgMTIxMTQ4LCAxMjE1MDksIDQzMTE5LCAwLCAKLSAgICA3ODUzNywgMTI0MDMsIDI1MDAsIDcwMTQ1LCA4MzI0NiwgNDg5OSwgMTI3MjksIDk4MzM5OSwgMTk0NjE5LCA3NDExMywgCisgICAgNzQxODUsIDkyNDgxLCA5MjcxMCwgMTIzOTcsIDc3ODI3LCAxMTkwNDAsIDEzMDU0LCAxMjM5NCwgNjYxODIsIDAsIAorICAgIDE5NDkzNywgMTMwNTMsIDExODk3NCwgMzk0OCwgMTA3ODEsIDE1NDYsIDAsIDUwMTAsIDE2ODAsIDEwNTA3LCA3ODU5MCwgCisgICAgNzg1ODMsIDkyNDMxLCAxMjEwMzcsIDEyNjY0NCwgMTk0OTE1LCA3MjY3LCAxMjc0NzksIDc0ODMzLCAxMjgxODEsIDU5OTMsIAorICAgIDI4MTksIDEyODc4OCwgMTI3MDYsIDcxMDYzLCAxODkzLCA3MjY2LCA2MzkxNSwgNzI2NCwgNzI2NSwgOTgzNjczLCAxMzYzLCAKKyAgICA5ODM1ODAsIDQyOTIzLCAxMzEwOSwgNjM5OTYsIDMwNzcsIDEyMDAxOCwgMCwgMTUxMiwgNjk5MjksIDEyNTg5LCA0MTQ3OSwgCisgICAgMTAxMDMxLCA3MTA0OCwgNDMzMzksIDczNzc2LCA5ODM2LCAxMTk2MDcsIDkxNzgxNywgNDE0ODEsIDQzMzM1LCA3ODMyLCAKKyAgICA0MjM0MywgMzA5MCwgNDMzMzcsIDgxNywgMTY2NCwgMTg1MCwgODMxNzcsIDMwNzksIDExMzQwLCA0MjQwOCwgNDI0NDcsIAorICAgIDc0OTMyLCA3NDA0NCwgNDIzMDcsIDEyMzg2LCA0MjMwNCwgOTE3NTU1LCA4MzQyOCwgMTIzODksIDEyMTA3OSwgOTIzNjYsIAorICAgIDQxOTk2LCAxMTUyNiwgNjM5ODUsIDU4NjQsIDExNDcsIDQzODQ5LCA0Mjg4NywgMTk4NywgOTI3MTgsIDU0ODAsIDc4NTgsIAorICAgIDExNjUzLCA0MTE2LCAxMjM5MSwgNjYxOTMsIDEyMTM4MywgNDkzOSwgMTIzODQsIDEyMDE4NCwgMTI3Nzc4LCA0MTY4NiwgCisgICAgNjM5MDUsIDExOTYwMSwgNzAyODUsIDY3Mzk4LCAxMDA4ODQsIDEyNjQ5LCAxMjAwMjIsIDAsIDgyNDcsIDUwNywgOTEsIAorICAgIDIwNDIsIDEyMDc3NSwgNDM2NDMsIDEyMTQ0NSwgNjYwMjgsIDEwMDM2LCA0MTg0NCwgNzA2ODAsIDc3NCwgMTE5ODI5LCAKKyAgICA3Nzg0MCwgMTE5ODE1LCA1OTk0LCAxMjUzOSwgMCwgNzgzNzUsIDEyMDU5NywgMTE5ODMzLCA5ODMxMDUsIDc4Mzc3LCAKKyAgICA5MTc4MjMsIDkxNzYyOCwgNzcxOSwgNjAyNiwgMjQ4NiwgMTAxMDE5LCAxMTk4MDgsIDE2MiwgMCwgNjUyMTksIDQxMDczLCAKKyAgICA5Njg3LCA0MTY4MSwgNjMwNCwgMTE5ODEyLCA2NjE5NiwgMTE5MDg5LCA1MjYyLCAwLCA1NTIzMywgMTI2ODEsIDQyMzc5LCAKKyAgICAwLCA3NTM0LCAxMjIxOSwgMjIyNiwgNzA0OTksIDQyODEwLCAxMDQ5MiwgMTIxNTEwLCAxMjExNDgsIDEyMTUwOSwgNDMxMTksIAorICAgIDAsIDc4NTM3LCAxMjQwMywgMjUwMCwgNzAxNDUsIDgzMjQ2LCA0ODk5LCAxMjcyOSwgOTgzMzk5LCAxOTQ2MTksIDc0MTEzLCAKICAgICAyMzQzLCA0MTAzLCAxOTk0NiwgNzQxMTIsIDc3ODUxLCAxMzExMiwgMTI5MDQ2LCA3NDgzNCwgMTI4NTksIDcwMDg3LCAKICAgICAxMjAxNDgsIDY2MzY5LCA1ODYxLCAxMjc3NTgsIDExOTk5LCAxMjQwMCwgNDM2NDEsIDEyODE4MywgMTI2NDUsIDUxNDYsIAogICAgIDExMzIwLCA2ODQxMCwgNjc0OCwgNjUwNDAsIDE5NDc4NiwgNjQxODQsIDEyOTc0LCA2NDE4MywgNjc2MTMsIDEyMDY0NSwgCi0gICAgNTE0NywgMTI1MDE5LCAwLCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIDQ5NzYsIAotICAgIDY0MTc2LCAwLCA2NzYxMCwgODI0MSwgMCwgNzc4NjgsIDQyMDYsIDAsIDc4NjYyLCAxMjkwMjksIDEyODI5OCwgNjcyNzcsIAotICAgIDEwMTM4LCA2NzIzOCwgMTI4Nzg1LCA4ODk3LCAxMjAyMzQsIDE0MjIsIDgzNTcsIDQxMjQsIDc3ODYyLCA2NTgzNiwgCi0gICAgMTIwNjQxLCAxMjc5MjYsIDc3ODU5LCAwLCAxMjA5MzAsIDExMjMsIDk2MywgNDE1NTMsIDEwMTIwLCAxMjQwNSwgMTIwMTUwLCAKLSAgICA5MjY2NCwgMzk4LCAxMzI3OCwgOTcyMywgNjM2NiwgMTIwMzExLCA3OTQ1LCAxMjkxMjYsIDQ0MDIsIDk5NzAsIDEyNDAyLCAKLSAgICA5MzA2MiwgNDIzOTIsIDEzMDUsIDEyNDA4LCA5MjM4NCwgNDQwMDcsIDEyODU2MywgMTI3MjE2LCA0MTQ2NCwgMTI0MTEsIAotICAgIDEyOTY5LCA2NzI2OCwgNDE0NjUsIDEyMTA5MiwgODUyOCwgMTU3NSwgMCwgNjM5NTUsIDE2NSwgMzAyNCwgNDE0NjcsIAotICAgIDExOTE2MywgNzAxMTksIDkwOTMsIDEyODUzNSwgNjgzMywgOTI1NzQsIDYzOTU4LCAwLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgCi0gICAgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAxMjA5MzgsIDQzNTI3LCAxMjExOTIsIDcyNywgCi0gICAgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAwLCA0MjE3NiwgMTIzNzAsIDExNjU1LCAxMTkwOTUsIDEwNTkxLCAyMjgwLCAKLSAgICA5ODMyMzQsIDEyMzcyLCAxMjA2NDIsIDEyMDMwNywgNzEyMDksIDkyMzQzLCA5ODM4NzIsIDEyMzY2LCAxMDk2MywgNjA2NiwgCi0gICAgMTMyOSwgMCwgMzA1MiwgOTIyMCwgMTIxMDQ1LCA2NDQ3OCwgMTk0NzAxLCAxMDgwMywgNDEzMiwgMTIwMzA2LCA2ODQ3NCwgCi0gICAgOTI0NzMsIDk4MzI0NywgMTIwNzEyLCA3NDgzNywgMTIwMTU1LCAxNDk5LCAwLCA4MDU1LCA0Mjc0MCwgNjM5NjUsIAotICAgIDEyMDMwNSwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgCi0gICAgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgCi0gICAgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAwLCAxMjEyNDEsIDI0ODcsIDY3NjE0LCAzMTIxLCAKLSAgICAxODA0LCAzMzExLCA2NzYxNSwgNzAwODEsIDc4MzAyLCAxMjIyMCwgNjc2MTYsIDkyNzY5LCAxMjAwMjAsIDE5NDU5NCwgCi0gICAgNjgyMDAsIDY2NzUsIDEyODE0NCwgMCwgNjc1OTIsIDEyMDY4NSwgMCwgNjQ3NzEsIDExOTgsIDkxMzIsIDAsIDY0NjE5LCAKLSAgICA1MTAsIDY0NjYzLCAwLCAxMjE1MDAsIDQ1NjEsIDIxMDEsIDEzOTgsIDkxNzk3MiwgOTI1NTQsIDc0MDM0LCA0MTU2OSwgCi0gICAgOTI2ODQsIDExNDA2LCA4MTY3LCAxMjEyNywgMTIwNTA1LCA4NDAsIDk4MzI4MywgNjk5OTIsIDcxMDEsIDY5NjcsIDAsIAotICAgIDE5NDg5OCwgOTc5NiwgMTI3MDAwLCAzMzMsIDY5ODkxLCAwLCA4MTQ0LCAyMTE3LCAwLCAxMjExNTUsIDEyNDA2LCAKLSAgICA5MTc5NzAsIDE5OTMxLCA2NjM4OCwgNjY3OCwgNzc2OSwgOTgzMTI0LCAxMjYyMSwgMCwgMTI3MzY2LCAxMDIyNywgNDc2NCwgCi0gICAgNDMxMDEsIDk5ODEsIDAsIDQwOTg2LCA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAKLSAgICAwLCA5NDA5NywgNjc1OTQsIDIwNDgsIDEyOTQ0LCA0MDUwLCA2NzU5NSwgOTE3OTY3LCA0MzEwMiwgMTA1ODEsIDExMTg0LCAKLSAgICA0NTMzLCAxMjcyMTIsIDc0MDAzLCA2NDkwLCAwLCAxMjAzOCwgMCwgMCwgNjgyMjUsIDY1NDYxLCA5Nzk4LCA2OTcwNCwgCi0gICAgMTI4OTEyLCAxOTQ4LCA2OTg0MSwgMCwgOTUyLCAxMjgyMzUsIDEyNTEwNywgOTgzMzU0LCA3MDI5NiwgNjQ0OSwgOTQ5NCwgCi0gICAgMTIwMzEzLCAwLCA0MzA5OCwgNDg0MywgODE0MiwgNjQxNjAsIDQwOTgsIDY0MTcwLCA5ODMzNDEsIDAsIDM0MzYsIAotICAgIDExOTk3MywgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgMCwgMCwgMCwgCi0gICAgNjU1OTEsIDQxNTgxLCA2NTkxNiwgMTQ1MywgMTk0OTkzLCAxMjE0NTgsIDEyNzg1OSwgODUwMCwgNDIyMjIsIDEyMDE0MiwgCi0gICAgNzM3NDMsIDEyMDQwMCwgNDMxNywgMTE1NDMsIDY3Njc2LCA2NDY3NiwgMCwgMTI3ODMzLCA2NzYwNiwgMTE5MDgzLCAKLSAgICAxMjEwODMsIDQyMjE3LCAxMzEwMiwgMCwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgNjM4NDEsIDk2MTMsIAotICAgIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIDEwMjI4LCA2NDk1NywgCi0gICAgMTEyODEsIDAsIDM4MDcsIDE0NjksIDY2NjQwLCA2NTM4MSwgNDIxOTcsIDQ5ODgsIDQyMzcyLCAwLCA5NTk4LCA5MDQsIAotICAgIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3ODMxLCAKLSAgICAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI3Mjg5LCAxMjg0NiwgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAKLSAgICAxMjcwODEsIDQzNzM5LCAxMjcyODEsIDg1MTEsIDk0NjAsIDgyMywgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAKLSAgICAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIAotICAgIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIAotICAgIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDAsIDQzMjMsIDcwMjc2LCA5MjY2OSwgNzEzMzIsIDEyMDE1OCwgNDI1ODcsIAotICAgIDQyMjE0LCA0MTM5NCwgMTExODgsIDQ3NjMsIDQxMTIsIDExODkzNSwgMCwgNTI2MCwgNDMxNDMsIDk0MDM4LCAzMjYsIAotICAgIDEyMDEzMSwgNjg0MjMsIDExOTIxOCwgMTA3NzEsIDI4NzYsIDc0MDc0LCA5MjUzMCwgMTI4NDYwLCA0MTM5OCwgNzM4MiwgCi0gICAgOTgwMiwgMTI3MDc3LCAxMjcwNzYsIDQ1MywgNDEzOTYsIDEyMDUyNCwgMTMxNTksIDEyMTQwLCA5NTcyLCA5ODMxMzIsIAotICAgIDcwMDMsIDE5NDg4MywgNDIzMzQsIDc3MDQsIDEyNTA2OSwgMTI1MDIwLCA0MzE0NCwgNDEyMywgODQ5NCwgNDMxNDYsIAotICAgIDk5NzcsIDAsIDEyMTI4MywgNjU3NTksIDEwNzY1LCA2NDA2MSwgNDQ2NSwgOTgwOCwgNjQwNTYsIDY1NTgyLCA0MTI2LCAwLCAKLSAgICA5NTIxLCA5NTg5LCA2NDc1NSwgMCwgNjQwMjAsIDEyNjYwNCwgMTA0NjQsIDAsIDkyOTY4LCAxOTQ2MTAsIDY0NTE0LCAKLSAgICAxMTUyOCwgNjQwMjQsIDEyODA3MiwgNjc5LCA2NDAxMywgOTgzNTU1LCA1ODUwLCA3NTgsIDc1MzYsIDEyMDUzOCwgOTIyMzQsIAotICAgIDQxNDQxLCAxMDY5MywgNjQwMDYsIDc1MDQ0LCA2NDAwNSwgNDA1OCwgMTE5MDE5LCAxMjY0ODcsIDY0NjYwLCAxMjgxNzYsIAotICAgIDExOTA1MCwgMCwgOTgzMDY5LCAxMTM5LCA0MzI5OCwgNjQwMjcsIDY0MDI5LCA4OTcwLCAwLCA5OTM0LCAxMjg2ODUsIAotICAgIDEwNzc0LCA2NzEwNCwgNDIyMDEsIDEyNDIxLCAxMjgyMTYsIDEyNzAwNiwgMTg1MiwgMzA1NywgNjQwNDYsIDczNzQ0LCAKLSAgICA2NDAzNCwgNjQwMzksIDY4MDY1LCAwLCA5ODM2OTAsIDkyOTEzLCA5MjMyMiwgNzY0NSwgMTI4NTQsIDc0MzM4LCAzNDk2LCAKLSAgICAwLCAxMjEzMjMsIDExMzcxMCwgOTEwMiwgNjI3LCAxMjc3OTUsIDYxNTgsIDgzMjcsIDc0NTUzLCA2NjYzMiwgMTI0MTksIAotICAgIDEzMzA5LCAxMTU3MCwgMTI3ODExLCAxOTk2MCwgMTE2OTYsIDAsIDEwMTgsIDExODk3MCwgMTI5MDc1LCAxOTQ4OTcsIAotICAgIDE2ODIsIDQzODYzLCAxOTQ4OTYsIDQyNzU2LCA2NzY1LCAxOTQ5MDYsIDY3NzE3LCA3NDM1OCwgNzM4MTQsIDExNDEyLCAKLSAgICA2NzY4LCAxMDcyOCwgMTE5OTgyLCA3MTMxNiwgNzEwOTksIDQzMzExLCA2NDk2NiwgMTE1NzcsIDEyNzgzMiwgNDMwNDAsIAotICAgIDE4MzMsIDExNTc2LCA3MDA1NCwgNzQ3NzksIDAsIDE4NSwgNjUwODUsIDc0NTMzLCA2NDc1NCwgMTE5MzM0LCA3NTM1LCAKLSAgICA4MDg1LCA0MjUyNSwgMTE5OTQ0LCA5NzQ5LCA0MTcwMSwgNjEzMSwgMTk0OSwgNDExNywgNzg0NywgMTIwNDg5LCAxMjA5OTcsIAotICAgIDY0NDgzLCA2NTY5MywgOTgzNzExLCA5ODM0OTUsIDEyODYxNSwgNjk2OTUsIDQyMjQwLCAxMjg1ODcsIDEyMTM1MiwgCi0gICAgNDI4NjQsIDEyNjQ5OCwgNDMxNjgsIDQxODY4LCAxMTg0LCAwLCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAotICAgIDAsIDY2MTk3LCA5ODM0NzQsIDEwOTg2LCA2NDY4MywgMTI4NTQ5LCAxMjg0NTQsIDM0NTUsIDEyNjUzMCwgMCwgOTg3OSwgMCwgCi0gICAgMCwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDAsIDAsIDY5NjQ1LCAzMzIsIDExODgwOCwgODMzNjgsIDUxNDIsIAotICAgIDI0MDcsIDY5NjQzLCA0MjE5OSwgMCwgOTI0MDQsIDc0MzczLCA4MzM3MiwgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIAotICAgIDAsIDAsIDEyOTg1LCA0Mjg2NywgMTgzNCwgMTIwMzg3LCA5MjQ2MSwgNjk4MTcsIDEwOTQwLCA2NTI0OSwgNzAzODUsIAotICAgIDg2NjIsIDEyMDMyNCwgMCwgMjY1MiwgMTIwNTI3LCA3MTY0LCAxMDc4NCwgMTk1MDkzLCA2NzY3NCwgMCwgODMzNTksIAotICAgIDkyNDgyLCAxOTQ3NDksIDc0NTYyLCA5MTc1MDUsIDE4MjgsIDc0NDc0LCAxMjAwMTksIDY4MDc4LCA4NTMxLCAxMjQ5OSwgCi0gICAgNjI4MCwgMTIzMjQsIDcyNDM0LCA2NTIzOCwgNjgzNzQsIDQ4MzIsIDY1NTczLCA0Mzg1MSwgNjI3OSwgMTI1MDgsIDEyOTA0LCAKLSAgICAxMjUwMiwgOTE2MSwgMTI4NTU1LCAxNjIwLCAxMTI0NywgMzYwMSwgMTIxMzAxLCA4MzM1MywgNjcyNDYsIDYwOSwgMTE1NTUsIAotICAgIDgzNDU2LCAxMjQ5NiwgMTE5ODAsIDc0MTgxLCA0MzQzLCAxMjUwNSwgODI5NjAsIDEyNzg2MywgMCwgMTEzNzcsIDIzOSwgCi0gICAgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIAotICAgIDEyNjk2LCAxMjgyNTYsIDkxNzYwMCwgOTQwNjIsIDEyOTI5LCAwLCA3MTIsIDAsIDQxOTcsIDk4MzIwNiwgNDI4MTgsIAotICAgIDEyNjYzMiwgNzAzMDYsIDEyMDQ5MCwgNzAzMzMsIDExOTEzNywgMTUwNiwgNDM1NjIsIDExOTkxMywgOTI0OTEsIDY4MDc2LCAKLSAgICAxMjY1MSwgMTIwOTE3LCA2NDYyOCwgNzQ1MTcsIDEyMDU4LCA3NDA4NCwgMTk0NjMzLCA3NDk0LCAwLCA0OTI0LCA2NTU5MiwgCi0gICAgMTE4ODQ0LCAxOTQ4MjMsIDEyNzA4OCwgMzU1LCA5NzE5LCAxMjcwODcsIDEzMDY2LCA2NDc5NiwgMTIxMDc3LCA5ODMyOTcsIAotICAgIDEyMDMzLCA0MjE3OCwgMTk0NzU0LCA2OTc2MCwgNDI1NzEsIDkyNjM1LCAxMTQzMCwgMCwgNzAyOTksIDEyMTUwOCwgCi0gICAgMTI0OTUxLCA2ODMyNCwgMzE3OCwgMTI2NDg4LCAxMjg2MzMsIDkyNzA0LCA5MTc1NjYsIDkwODAsIDEyMDk0MywgNjc2OTcsIAotICAgIDE5NTEwMSwgNjgyMDksIDcyNDE4LCAxMTA4MiwgNzE0ODUsIDU2OTksIDgzMzczLCA2NjAwMCwgOTQ4OCwgNjUxNjYsIAotICAgIDExOTExMiwgNzA0NzcsIDExMTcwLCA2ODY2MiwgMTI4MTIwLCA3MTMxMywgMCwgNTI2NSwgNjkyMzUsIDgzMzg0LCAxMTQ4NywgCi0gICAgNjc4NTgsIDEyNDY0LCA5ODMzNjUsIDQzMDQ1LCA5ODM4MzEsIDcwMzQ1LCA0MzM0NSwgOTgzMjc2LCAxMDc3MCwgMTE4OTk0LCAKLSAgICA2ODA3LCA0NjUsIDk4MjksIDY5OTk3LCA3NDM0OCwgMCwgNDMzNDYsIDgxMTYsIDc5NSwgMTIwMzUyLCA3MjQxMiwgMTI0NjIsIAotICAgIDEwOTMwLCAxMDgzMSwgMTIxMzIwLCAxMTg5NTIsIDY0MzYyLCA3NDMzNCwgOTMwNTYsIDgzMDQ3LCA5ODM5MzMsIDEyNDY4LCAKLSAgICA4NjA3LCAxMDA4LCAxMTg5NDgsIDEwMDkyLCAxMjUxMjIsIDEyODg1MSwgNjc4NTUsIDU1MjU3LCA3Mzc3MSwgMTc2NiwgCi0gICAgMTEyODIsIDExOTk2LCAxODIwLCA0NTQ3LCAwLCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAorICAgIDUxNDcsIDEyNTAxOSwgOTE3NjI0LCA3NDUyNCwgMTI4MzU2LCAxOTI4LCAwLCA2NzY0OSwgNTk5MSwgMzQ0NSwgNjc2MDksIAorICAgIDQ5NzYsIDY0MTc2LCA3NDk2NiwgNjc2MTAsIDgyNDEsIDk4MzkwMCwgNzc4NjgsIDQyMDYsIDEyNzM1MiwgNzg2NjIsIAorICAgIDEyOTAyOSwgMTI4Mjk4LCA2NzI3NywgMTAxMzgsIDY3MjM4LCAxMjg3ODUsIDg4OTcsIDEyMDIzNCwgMTQyMiwgODM1NywgCisgICAgNDEyNCwgNzc4NjIsIDY1ODM2LCAxMjA2NDEsIDEyNzkyNiwgNzc4NTksIDEwMDkxMiwgMTIwOTMwLCAxMTIzLCA5NjMsIAorICAgIDQxNTUzLCAxMDEyMCwgMTI0MDUsIDEyMDE1MCwgOTI2NjQsIDM5OCwgMTMyNzgsIDk3MjMsIDYzNjYsIDEyMDMxMSwgNzk0NSwgCisgICAgMTI5MTI2LCA0NDAyLCA5OTcwLCAxMjQwMiwgOTMwNjIsIDQyMzkyLCAxMzA1LCAxMjQwOCwgOTIzODQsIDQ0MDA3LCAKKyAgICAxMjg0NjUsIDEyNzIxNiwgNDE0NjQsIDEyNDExLCAxMjk2OSwgNjcyNjgsIDQxNDY1LCAxMjEwOTIsIDg1MjgsIDE1NzUsIDAsIAorICAgIDYzOTU1LCAxNjUsIDMwMjQsIDQxNDY3LCAxMTkxNjMsIDcwMTE5LCA5MDkzLCAxMDA2MjAsIDY4MzMsIDkyNTc0LCA2Mzk1OCwgCisgICAgMTIwOTMxLCA5MTQ4LCA5NjkyLCA0MDk2LCA1MywgODI5NiwgNjc1MCwgNjY4NTUsIDEyODQxMCwgOTU5NCwgMTIwMzA4LCAKKyAgICAxMjA5MzgsIDQzNTI3LCAxMDA2MTEsIDcyNywgNzQxOTIsIDkzMDYwLCA1ODA1LCAwLCA2NzI2LCAxMjczODcsIDQyMTc2LCAKKyAgICAxMjM3MCwgMTE2NTUsIDExOTA5NSwgMTA1OTEsIDIyODAsIDk4MzIzNCwgMTIzNzIsIDEyMDY0MiwgMTIwMzA3LCA3MTIwOSwgCisgICAgOTIzNDMsIDk4Mzg3MiwgMTIzNjYsIDEwOTYzLCA2MDY2LCAxMzI5LCAwLCAzMDUyLCA5MjIwLCAxMjEwNDUsIDY0NDc4LCAKKyAgICAxOTQ3MDEsIDEwODAzLCA0MTMyLCAxMjAzMDYsIDY4NDc0LCA5MjQ3MywgMTAwODc2LCAxMTg5MjMsIDc0ODM3LCAxMjAxNTUsIAorICAgIDE0OTksIDEyMTI5OSwgODA1NSwgNDI3NDAsIDYzOTY1LCA3NDMzOCwgNjM5NjIsIDc0MDQyLCA4OTI0LCA0MzEyMywgNTk4OCwgCisgICAgMzY2MCwgNjM5NjksIDExNzgxLCA0MjcxOCwgODc4OCwgMTM1NywgNjQ4NTEsIDY1NzQzLCA5Mjg5NCwgODc3NCwgNzAzMzcsIAorICAgIDEyNzA4NiwgOTk0MSwgMTIwMTcyLCA5Mjc0OCwgMTkzMywgNjk2NTUsIDk1NjQsIDEyMDAxNiwgOTI0MzUsIDczODY2LCAKKyAgICA5ODM5MzIsIDEyMTI0MSwgMjQ4NywgNjc2MTQsIDMxMjEsIDE4MDQsIDMzMTEsIDY3NjE1LCA3MDA4MSwgNzgzMDIsIAorICAgIDEyMjIwLCA2NzYxNiwgOTI3NjksIDEyMDAyMCwgMTk0NTk0LCA2ODIwMCwgNjY3NSwgMTI4MTQ0LCA5ODMyODIsIDY3NTkyLCAKKyAgICAxMjA2ODUsIDAsIDY0NzcxLCAxMTk4LCA5MTMyLCA5ODM3MDksIDY0NjE5LCA1MTAsIDY0NjYzLCA5NDAzMywgMTIxNTAwLCAKKyAgICA0NTYxLCAyMTAxLCAxMzk4LCAxOTUwNTEsIDkyNTU0LCA3NDAzNCwgNDE1NjksIDkyNjg0LCAxMTQwNiwgODE2NywgMTIxMjcsIAorICAgIDEyMDUwNSwgODQwLCA5ODMyODMsIDY5OTkyLCA3MTAxLCA2OTY3LCAwLCAxOTQ4OTgsIDk3OTYsIDEyNzAwMCwgMzMzLCAKKyAgICA2OTg5MSwgMTI3MTQ1LCA4MTQ0LCAyMTE3LCAwLCA3MDcxMiwgMTI0MDYsIDkxNzk3MCwgMTk5MzEsIDY2Mzg4LCA2Njc4LCAKKyAgICA3NzY5LCA5ODMxMjQsIDEyNjIxLCAwLCAxMjczNjYsIDEwMjI3LCA0NzY0LCA0MzEwMSwgOTk4MSwgNzQxNTcsIDQwOTg2LCAKKyAgICA0MTI3LCA2NjQ4NywgOTgzNTc2LCA0MjIwMiwgMTI3NTQsIDE5NTAyMSwgOTgzMTkxLCAxMDA2MjgsIDk0MDk3LCA2NzU5NCwgCisgICAgMjA0OCwgMTI5NDQsIDQwNTAsIDY3NTk1LCA5MTc5NjcsIDQzMTAyLCAxMDU4MSwgMTExODQsIDQ1MzMsIDEyNzIxMiwgCisgICAgNzQwMDMsIDY0OTAsIDk4Mzg1NywgMTIwMzgsIDAsIDAsIDY4MjI1LCA2NTQ2MSwgOTc5OCwgNjk3MDQsIDEyODkxMiwgCisgICAgMTk0OCwgNjk4NDEsIDAsIDk1MiwgMTI4MjM1LCAxMjUxMDcsIDk4MzM1NCwgNzAyOTYsIDY0NDksIDk0OTQsIDEyMDMxMywgCisgICAgNzA3MzgsIDQzMDk4LCA0ODQzLCA4MTQyLCA2NDE2MCwgNDA5OCwgNjQxNzAsIDEyODg3MSwgOTE3NjIxLCAzNDM2LCAKKyAgICA2Njc4MCwgMCwgMTI4MTcsIDY3NTk3LCA2Njc2LCAzOTMwLCA0MjYxNSwgNjY0MDcsIDY5OTkxLCA2NzU5OCwgOTgzMzM2LCAKKyAgICAwLCAwLCA2NTU5MSwgNDE1ODEsIDY1OTE2LCAxNDUzLCAxMjExODksIDEyMTQ1OCwgMTI3ODU5LCA4NTAwLCA0MjIyMiwgCisgICAgMTAxMDQ3LCA3Mzc0MywgMTIwMTQzLCA0MzE3LCAxMTU0MywgNjc2NzYsIDY0Njc2LCAxMDA2OTcsIDEyNzgzMywgNjc2MDYsIAorICAgIDExOTA4MywgMTIxMDgzLCA0MjIxNywgMTMxMDIsIDEyODczNiwgNjYwMDMsIDY2NzIsIDAsIDAsIDY2ODgwLCA3NzkxMiwgCisgICAgNjM4NDEsIDk2MTMsIDkwMDEsIDQ1MjYsIDExMjc0LCA2NzYwMSwgNjQ1MjAsIDY0MjEwLCA2NjY0LCA3ODcwNCwgNDIwNTYsIAorICAgIDEwMjI4LCA2NDk1NywgMTEyODEsIDEyODMxMiwgMzgwNywgMTQ2OSwgNjY2NDAsIDY1MzgxLCA0MjE5NywgNDk4OCwgCisgICAgNDIzNzIsIDcyNzg2LCA5NTk4LCA5MDQsIDM1MiwgNDIyMjUsIDE0NTEsIDgwNjEsIDg0NTMsIDQxMzQsIDgzNDg1LCAKKyAgICA2NzIyMywgNjY1NzYsIDEyNzkxNiwgMTI3NTY4LCAxMDUyMCwgODU3NSwgOTk2MCwgMTIwMSwgMTI1MjM1LCAxMjg0NiwgCisgICAgMTI3MjkxLCA2ODA0MCwgMTE5MTksIDY0OTYyLCAxMDA2OTUsIDQzNzM5LCAxMDEwNDEsIDg1MTEsIDk0NjAsIDgyMywgCisgICAgMTE1ODcsIDEyMzA1LCAwLCA2NDY5NSwgMTI3MzA1LCAxMjM4NywgMTI1MywgMTMxODMsIDY1NzY2LCA1MDAsIDQyNzgzLCAKKyAgICA2NTc2NSwgNjQyMDgsIDY0MzY5LCA2NTc2MCwgNjU3NjEsIDcwMzM0LCAxMTYwNiwgNjQ3ODQsIDExNzAyLCA2NjQ5OCwgCisgICAgOTgyMSwgNjQzMDQsIDEyNzM2OSwgNTE1MiwgMTEwNDgsIDc1MzMsIDY4MzY2LCA2NDQxMCwgOTIzMDUsIDEyNzg1MiwgCisgICAgNDMyMywgNzAyNzYsIDkyNjY5LCA3MTMzMiwgMTIwMTU4LCA0MjU4NywgNDIyMTQsIDQxMzk0LCAxMTE4OCwgNDc2MywgCisgICAgNDExMiwgMTE4OTM1LCAwLCA1MjYwLCA0MzE0MywgOTQwMzgsIDMyNiwgMTIwMTMxLCA2ODQyMywgMTE5MjE4LCAxMDc3MSwgCisgICAgMjg3NiwgNzQwNzQsIDkyNTMwLCAxMjg0NjAsIDQxMzk4LCA3MzgyLCA5ODAyLCAxMjcwNzcsIDEyNzA3NiwgNDUzLCAKKyAgICA0MTM5NiwgMTIwNTI0LCAxMzE1OSwgMTIxNDAsIDk1NzIsIDEyOTA4NSwgNzAwMywgMTk0ODgzLCA0MjMzNCwgNzcwNCwgCisgICAgMTI1MDY5LCAxMjUwMjAsIDQzMTQ0LCA0MTIzLCA4NDk0LCA0MzE0NiwgOTk3NywgMCwgMTIxMjgzLCA2NTc1OSwgMTA3NjUsIAorICAgIDY0MDYxLCA0NDY1LCA5ODA4LCA2NDA1NiwgNjU1ODIsIDQxMjYsIDAsIDk1MjEsIDk1ODksIDY0NzU1LCAxMjUyMDAsIAorICAgIDY0MDIwLCAxMjY2MDQsIDEwNDY0LCAxOTQ5ODAsIDkyOTY4LCA3Mjg0NywgNjQ1MTQsIDExNTI4LCA2NDAyNCwgMTI4MDcyLCAKKyAgICA2NzksIDY0MDEzLCAxMjkzMTQsIDU4NTAsIDc1OCwgNzUzNiwgMTIwNTM4LCA5MjIzNCwgNDE0NDEsIDEwNjkzLCA2NDAwNiwgCisgICAgNzUwNDQsIDY0MDA1LCA0MDU4LCAxMTkwMTksIDEyNjQ4NywgNjQ2NjAsIDEyODE3NiwgMTE5MDUwLCAwLCAxOTUwMjMsIAorICAgIDExMzksIDQzMjk4LCA2NDAyNywgNjQwMjksIDg5NzAsIDAsIDk5MzQsIDEyODY4NSwgMTA3NzQsIDY3MTA0LCA0MjIwMSwgCisgICAgMTI0MjEsIDExOTEwOSwgMTI1MjcwLCAxODUyLCAzMDU3LCA2NDA0NiwgNzM3NDQsIDY0MDM0LCA2NDAzOSwgNjgwNjUsIAorICAgIDEyNzA3NSwgOTgzNjkwLCA3Mjc3MywgOTIzMjIsIDc2NDUsIDEyODU0LCA3Mjc3MiwgMzQ5NiwgMCwgMTIxMzIzLCAKKyAgICAxMTM3MTAsIDkxMDIsIDYyNywgMTI3Nzk1LCA2MTU4LCA4MzI3LCA3NDU1MywgNjY2MzIsIDEyNDE5LCAxMzMwOSwgMTE1NzAsIAorICAgIDEyNzgxMSwgMTk5NjAsIDExNjk2LCA5MjkxMywgMTAxOCwgMTE4OTcwLCAxMjkwNzUsIDE5NDg5NywgMTY4MiwgNDM4NjMsIAorICAgIDE5NDg5NiwgNDI3NTYsIDY3NjUsIDE5NDkwNiwgNjc3MTcsIDc0MzU4LCA3MzgxNCwgMTE0MTIsIDY3NjgsIDEwNzI4LCAKKyAgICAxMTk5ODIsIDcxMzE2LCA3MTA5OSwgNDMzMTEsIDY0OTY2LCAxMTU3NywgMTI3ODMyLCA0MzA0MCwgMTgzMywgMTE1NzYsIAorICAgIDcwMDU0LCA3NDc3OSwgMCwgMTg1LCA2NTA4NSwgNzQ1MzMsIDY0NzU0LCAxMTkzMzQsIDc1MzUsIDgwODUsIDQyNTI1LCAKKyAgICAxMTk5NDQsIDk3NDksIDQxNzAxLCA2MTMxLCAxOTQ5LCA0MTE3LCA3ODQ3LCAxMjA0ODksIDEyMDk5NywgNjQ0ODMsIAorICAgIDY1NjkzLCA5ODM3MTEsIDEyNzEyMCwgNzQyODgsIDY5Njk1LCA0MjI0MCwgMTI4NTg3LCAxMjEzNTIsIDQyODY0LCAKKyAgICAxMDEwMzcsIDQzMTY4LCA0MTg2OCwgMTE4NCwgMTIxMjg1LCA4MTUsIDExNDg0LCAxMjc1MzUsIDY3ODQwLCA5ODM2NTEsIAorICAgIDEyOTM0MCwgNjYxOTcsIDk4MzQ3NCwgMTA5ODYsIDY0NjgzLCAxMjg1NDksIDEyODQ1NCwgMzQ1NSwgMTI2NTMwLCAKKyAgICAxMTk2NjQsIDk4NzksIDAsIDk4MzIxNSwgNDE1OCwgNzAzMDcsIDY4MTY2LCAwLCAxMjgwOTEsIDE5NDk4MiwgMCwgNjY3OTksIAorICAgIDMzMiwgMTE4ODA4LCA4MzM2OCwgNTE0MiwgMjQwNywgNjk2NDMsIDQyMTk5LCA5MjM4NiwgOTI0MDQsIDc0MzczLCA4MzM3MiwgCisgICAgNTUyMTcsIDcxNDU3LCA2Mzg3MCwgNDMxNjMsIDAsIDkxNzc2MywgMTI5ODUsIDQyODY3LCAxODM0LCAxMjAzODcsIDkyNDYxLCAKKyAgICA2OTgxNywgMTA5NDAsIDY1MjQ5LCA3MDM4NSwgODY2MiwgMTIwMzI0LCAwLCAyNjUyLCAxMjA1MjcsIDcxNjQsIDEwNzg0LCAKKyAgICAxOTUwOTMsIDY3Njc0LCA5MTc5NDIsIDgzMzU5LCA5MjQ4MiwgMTk0NzQ5LCA3NDU2MiwgOTE3NTA1LCAxODI4LCA3NDQ3NCwgCisgICAgMTIwMDE5LCA2ODA3OCwgODUzMSwgMTI0OTksIDYyODAsIDEyMzI0LCA3MjQzNCwgNjUyMzgsIDY4Mzc0LCA0ODMyLCAKKyAgICA2NTU3MywgNDM4NTEsIDYyNzksIDEyNTA4LCAxMjkwNCwgMTI1MDIsIDkxNjEsIDEyODU1NSwgMTYyMCwgMTEyNDcsIDM2MDEsIAorICAgIDEyMTMwMSwgODMzNTMsIDY3MjQ2LCA2MDksIDExNTU1LCA4MzQ1NiwgMTI0OTYsIDExOTgwLCA3NDE4MSwgNDM0MywgCisgICAgMTI1MDUsIDgyOTYwLCAxMjc4NjMsIDEyNTI1OCwgMTEzNzcsIDIzOSwgMTI4MTE0LCA2MzcsIDAsIDEyODY3OCwgNDI2NzEsIAorICAgIDAsIDkzMDMyLCA4MzA5NSwgNDM1NjUsIDcxMzA2LCAxMjY0OTMsIDcyOTgsIDEyODI1NiwgOTE3NjAwLCA5NDA2MiwgCisgICAgMTI5MjksIDAsIDcxMiwgMCwgNDE5NywgOTgzMjA2LCA0MjgxOCwgMTI2NjMyLCA3MDMwNiwgMTIwNDkwLCA3MDMzMywgCisgICAgMTE5MTM3LCAxNTA2LCA0MzU2MiwgMTE5OTEzLCA5MjQ5MSwgNjgwNzYsIDEyNjUxLCAxMjA5MTcsIDY0NjI4LCA3NDUxNywgCisgICAgMTIwNTgsIDc0MDg0LCAxOTQ2MzMsIDc0OTQsIDEyODc4MCwgNDkyNCwgNjU1OTIsIDExODg0NCwgMTk0ODIzLCAxMjcwODgsIAorICAgIDM1NSwgOTcxOSwgNjY3NjIsIDEzMDY2LCA2NDc5NiwgNzg2NjMsIDk4MzI5NywgMTIwMzMsIDQyMTc4LCAxOTQ3NTQsIAorICAgIDY5NzYwLCA0MjU3MSwgOTI2MzUsIDExNDMwLCAwLCA3MDI5OSwgMTIxNTA4LCAxMjQ5NTEsIDY4MzI0LCAzMTc4LCAKKyAgICAxMjY0ODgsIDEyODYzMywgOTI3MDQsIDkxNzU2NiwgOTA4MCwgMTIwOTQzLCA2NzY5NywgMTk1MTAxLCA2ODIwOSwgNzI0MTgsIAorICAgIDExMDgyLCA3MTQ4NSwgNTY5OSwgODMzNzMsIDY2MDAwLCA5NDg4LCA2NTE2NiwgMTE5MTEyLCA3MDQ3NywgMTExNzAsIAorICAgIDY4NjYyLCAxMDA1MDUsIDcxMzEzLCAwLCA1MjY1LCA2OTIzNSwgODMzODQsIDExNDg3LCA2Nzg1OCwgMTI0NjQsIDk4MzM2NSwgCisgICAgNDMwNDUsIDk4MzIwMSwgNzAzNDUsIDQzMzQ1LCAxMjA2NTcsIDEwNzcwLCAxMTg5OTQsIDY4MDcsIDQ2NSwgOTgyOSwgCisgICAgNjk5OTcsIDc0MzQ4LCAxMjE0MDMsIDQzMzQ2LCA4MTE2LCA3OTUsIDEyMDM1MiwgNzI0MTIsIDEyNDYyLCAxMDkzMCwgCisgICAgMTA4MzEsIDEyMTMyMCwgMTE4OTUyLCA2NDM2MiwgNzQzMzQsIDkzMDU2LCAxMDExMiwgOTgzOTMzLCAxMjQ2OCwgODYwNywgCisgICAgMTAwOCwgMTE4OTQ4LCAxMDA5MiwgMTIwNTM5LCAxMjg4NTEsIDY3ODU1LCA1NTI1NywgNzM3NzEsIDE3NjYsIDExMjgyLCAKKyAgICAxMTk5NiwgMTgyMCwgNDU0NywgMTAwNzA5LCAxMTIwMiwgMTIwMjQzLCAxMjgzNDUsIDEzMjIzLCA3NDkzNCwgNjQ1OTUsIAogICAgIDEyNzI5NCwgODMzNzQsIDY4NDg5LCA0MzQ1LCAxMjYxNiwgOTE3Nzg0LCAxMjg5NDcsIDk4MzE1NSwgNzQ0NjcsIDAsIAotICAgIDk4MzgxOSwgMTI4MjkxLCA1MzgyLCAxMjc3NzksIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgCi0gICAgNjk4OTcsIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDkxNzc2NiwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAKLSAgICAxMjEwMDIsIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgCi0gICAgNzg1ODQsIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgCi0gICAgNzM4MTYsIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAwLCAxMTYyMSwgMTI0NjAsIDEzMjYsIDEyMDYzMSwgODMzOTMsIDQzMDYzLCAKKyAgICA3Mzk1NSwgMTI4MjkxLCA1MzgyLCAxMjEzOTAsIDAsIDY3MjMzLCAxMTkwNjAsIDY0OTUzLCA1NDA2LCAxOTkyMCwgNjk4OTcsIAorICAgIDY2NTEwLCAzNTkwLCAxOTQ4MzUsIDExMzAsIDEyODY4OSwgMTIwOTc3LCA0MjAxNiwgMTE4MjMsIDQzMDIzLCAxMjEwMDIsIAorICAgIDExODg5NiwgNzc0MiwgMTI3Mzc0LCAxMzI4MCwgNzEzMjMsIDkzMjYsIDczODI2LCA1MzEwLCA0MzUwOSwgNzg1ODQsIAorICAgIDkyMjI5LCA4OTU5LCA0MzU4OSwgNjc0NywgNjY3MjMsIDY0NzU3LCA4NTY4LCAxOTQ2ODQsIDEyMDQ5NiwgNzM4MTYsIAorICAgIDgzMDYwLCAxMjg0MTgsIDQyNjcwLCAxMjc1MzksIDExNjIxLCAxMjQ2MCwgMTMyNiwgMTIwNjMxLCA4MzM5MywgNDMwNjMsIAogICAgIDQzMjM5LCA2NTY3OCwgMTk0ODQwLCA3MzkxNywgNzg0MywgNjk3ODMsIDExNjg5LCA1NDEwLCA1NzgzLCAxMDQ2OCwgODQwMywgCiAgICAgNTQwMCwgMTE1OTQsIDEyMDQwNSwgNjgzMzMsIDgzMzkwLCAxMDQ5MSwgNjk4NDIsIDY0NDEyLCAwLCAxMjgwMTIsIDU1ODcsIAogICAgIDQyODY1LCA2NDQwNCwgODI2OCwgNDkyMywgNjUwODYsIDg5ODEsIDEyMzgyLCA0MjEzMywgMTIwNzU1LCA5NzA2LCA2OTczOCwgCi0gICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDgzMzg4LCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAotICAgIDEyODY4OSwgOTQwMDksIDAsIDAsIDAsIDczOTgsIDQxNTE1LCAwLCAxMTgwMiwgODA0MSwgMTQ2MSwgOTEwLCAxMTkxMzMsIAotICAgIDAsIDY3NDksIDM2NTgsIDkzOTY0LCAxMjA1MjUsIDAsIDc2MTcsIDE5NDg0MSwgMTI4ODgsIDEyNzk4MywgNjc2NjgsIAotICAgIDEzMTQzLCAwLCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIAotICAgIDAsIDY1ODY0LCA2MjMsIDc4MSwgNjcwLCAxMDY2MCwgNTc2OSwgNjEzLCA3NTQzLCAxMjAyNzksIDQ3NywgNDEwODMsIAotICAgIDkyNTIxLCAwLCA1OTIsIDE1NzgsIDEyNDU5LCA0MzQ0OSwgMCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIAotICAgIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAxMjA3NDQsIDk4MzgwOSwgMTI2NDcyLCAxMjQ4MCwgNDMyNDMsIDE5NDkwOSwgCi0gICAgMzksIDEyNDg3LCAxMjEyNDcsIDEyMDUyOSwgNzQxOTksIDEyNDgyLCAwLCAxMjQ4OSwgMTE5NjA3LCAzMTk1LCA1NTUwLCAKLSAgICAxMjkxMjEsIDc4OTcsIDEyNzA4OSwgMTIwMywgNzQzOTYsIDE4MTMsIDY0NTQ0LCA0MTMxMSwgMTIwOTAsIDk4MzYzNCwgCi0gICAgMjg3NywgMTIxNTE4LCA3MDQ5NiwgMTY3NSwgNjk4NDAsIDAsIDAsIDExOTA3OCwgMTAwNzAsIDEwNTk1LCAwLCAxMTkwNzcsIAotICAgIDE5NDc3NywgMTIxMTYyLCA2NzE3MCwgMTIwNzkwLCAxMTg3ODcsIDQzMjQ0LCA5MjIzMywgOTE3ODM1LCA5ODM5MTYsIAotICAgIDExOTU2MSwgOTgzMDc4LCAxOTQ5MTQsIDE5NDkyMSwgMTI4MTYwLCA5OTM5LCAwLCA5ODMxNTEsIDc3ODYwLCAxMjg5NDgsIAotICAgIDgzNDQwLCAyNzAsIDAsIDEwNzE0LCAxMTg5ODMsIDcyNDM3LCAwLCAxMTk5NDIsIDExOTMzOCwgNjUzNzIsIDczODAzLCAKLSAgICA3NDAzOCwgNjgyNTEsIDYyNzMsIDY2Njc5LCAzNjQsIDk1OTUsIDcxNDQwLCAwLCAwLCA3MDcsIDE5NDgzOSwgMTI4NDA5LCAKLSAgICA5MjgyLCAxMTE2MywgMjI0LCAxMjg1ODgsIDY4NjcwLCA5MzMyLCA0OTY2LCA2ODY3NywgMTk0NTg2LCA2ODY0NCwgCi0gICAgOTgzMTMxLCAzODQxLCA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCAKLSAgICA2ODYxOSwgNDQwMDgsIDY4NjI3LCAxMjA2OTksIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgCi0gICAgMTIxMzk3LCAxMjUwNywgMTE5NiwgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAwLCAKLSAgICAxMjE5OCwgOTE3ODg3LCA2NDgyNCwgMTE5MzQzLCAxMjcyNDMsIDk0NTQsIDYzNzc4LCA4NjU4LCA0MjUyOCwgNzAwNzMsIAotICAgIDI3MDUsIDEyODY4MCwgNDE1MjAsIDE5NTA5OCwgMTIwMzc5LCAxMTk4NiwgNzc2NSwgNDI1MDIsIDgyODAsIDc0NTIwLCAKLSAgICAyNzAxLCAwLCAxMjAyNDAsIDU3NjcsIDAsIDE5NTAxOCwgOTgwOSwgODM1MywgNjM3NDcsIDY2NzAxLCA2Mzc3MiwgCi0gICAgMTIxMjMzLCA2Mzc0NSwgMTc0OCwgNjM3NzAsIDEyMTQxOSwgMTIxMDc4LCAwLCA2NTU0MiwgNjM3NjYsIDU1MjQ0LCAzMDYxLCAKLSAgICA3ODYwOSwgNjM3NjQsIDYzNzg3LCA5MDY3LCA2MDk2LCAwLCA3Njk0LCAwLCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIAotICAgIDEyNzc4MSwgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAwLCA2Mzg2LCA2Mzc4MywgMTIwOTkwLCAxMjUwNDEsIAotICAgIDkyNTM1LCAwLCAwLCA2ODI0OSwgNzQ1NzUsIDEyNzAxMCwgNjU3MTksIDEzMDgzLCA2NDU3NCwgNjUwMTIsIDEyMTQ1MiwgCisgICAgNzAyOTQsIDY2NjEwLCAxMDQ2MSwgMTIxMDMsIDAsIDg2NDIsIDcwNzAxLCA0Mjc2NiwgODMzODcsIDIyMTAsIDk5ODMsIAorICAgIDExOTk2MywgOTQwMDksIDEyOTI5OSwgMCwgMTI4ODEwLCA3Mzk4LCA0MTUxNSwgOTgzODgwLCAxMTgwMiwgODA0MSwgMTQ2MSwgCisgICAgOTEwLCAxMTkxMzMsIDk4MzMyNywgNjc0OSwgMzY1OCwgOTM5NjQsIDEyMDUyNSwgMTI3MzYzLCA3NjE3LCAxOTQ4NDEsIAorICAgIDEyODg4LCAxMDA1MDEsIDY3NjY4LCAxMzE0MywgMTI3OTc1LCA5MTkzLCAxMTA5NywgNTcwMywgMTI4MjQ3LCA0MTUxNywgCisgICAgNDE1MDQsIDQxNTE5LCAxMDAxNiwgNjQzMDUsIDk4MzU5MywgNjU4NjQsIDYyMywgNzgxLCA2NzAsIDEwNjYwLCA1NzY5LCAKKyAgICA2MTMsIDc1NDMsIDEwMDc4NywgNDc3LCA0MTA4MywgOTI1MjEsIDE5NDU5MywgNTkyLCAxNTc4LCAxMjQ1OSwgNDM0NDksIAorICAgIDEyODYyOCwgMCwgODIyNSwgMTIxMTkxLCA2NTQsIDExMzQ1LCA2NTMsIDY1MiwgMCwgNjQ3LCA4MzI2NiwgNjMzLCAKKyAgICAxMjA3NDQsIDcyNzg4LCAxMjY0NzIsIDEyNDgwLCA0MzI0MywgMTk0OTA5LCAzOSwgMTI0ODcsIDEyMTI0NywgMTIwNTI5LCAKKyAgICA3NDE5OSwgMTI0ODIsIDk4Mzc3MCwgMTI0ODksIDEwMDkxNywgMzE5NSwgNTU1MCwgMTI4MTcyLCA3ODk3LCAxMjcwODksIAorICAgIDEyMDMsIDc0Mzk2LCAxODEzLCA2NDU0NCwgNDEzMTEsIDEyMDkwLCA5ODM2MzQsIDI4NzcsIDEyMTUxOCwgNzA0OTYsIAorICAgIDE2NzUsIDY5ODQwLCAwLCAwLCAxMTkwNzgsIDEwMDcwLCAxMDU5NSwgMCwgMTE5MDc3LCAxOTQ3NzcsIDEyMTE2MiwgCisgICAgNjcxNzAsIDEyMDc5MCwgMTE4Nzg3LCA0MzI0NCwgOTIyMzMsIDkxNzgzNSwgMTI1MTkzLCAxMTk1NjEsIDk4MzA3OCwgCisgICAgMTk0OTE0LCAxOTQ5MjEsIDEyODE2MCwgOTkzOSwgMTIxNTExLCAxMjUxOTUsIDc3ODYwLCAxMjg5NDgsIDgzNDQwLCAyNzAsIAorICAgIDk4MzMwOSwgMTA3MTQsIDExODk4MywgNzI0MzcsIDAsIDExOTk0MiwgMTE5MzM4LCA2NTM3MiwgNzM4MDMsIDc0MDM4LCAKKyAgICA2ODI1MSwgNjI3MywgNjY2NzksIDM2NCwgOTU5NSwgNzE0NDAsIDAsIDAsIDcwNywgMTE5NjQ5LCAxMDA0MDAsIDkyODIsIAorICAgIDExMTYzLCAyMjQsIDcyNzk5LCA2ODY3MCwgOTMzMiwgNDk2NiwgNjg2NzcsIDcwNjc0LCA2ODY0NCwgMTI3MjE0LCAzODQxLCAKKyAgICA2NzM1NywgNjczNDEsIDEwNzMyLCA2ODY0MCwgODUwLCA0OTcyLCAxMjcxODEsIDEyODkwLCAyOTA5LCA2ODYxOSwgNDQwMDgsIAorICAgIDY4NjI3LCAxMDEwMjMsIDExNTQ0LCAxMDIwMywgOTYwOCwgMCwgOTE3OTQzLCAxMTk2MiwgMTIxMzk3LCAxMjUwNywgMTE5NiwgCisgICAgNjc2ODQsIDY3MTAwLCA3NzcsIDEyMDE4NywgNDM3NSwgNjUyNzEsIDY3Njc4LCAxMDEwMjQsIDEyMTk4LCA5MTc4ODcsIAorICAgIDY0ODI0LCAxMTkzNDMsIDEyNjYwOCwgOTQ1NCwgNjM3NzgsIDg2NTgsIDQyNTI4LCA3MDA3MywgMjcwNSwgMTI4NjgwLCAKKyAgICA0MTUyMCwgMTk1MDk4LCAxMjAzNzksIDExOTg2LCA3NzY1LCA0MjUwMiwgODI4MCwgNzQ1MjAsIDI3MDEsIDk4MzMzMywgCisgICAgMTIwMjQwLCA1NzY3LCAwLCAxOTUwMTgsIDk4MDksIDgzNTMsIDYzNzQ3LCA2NjcwMSwgNjM3NzIsIDEyMTIzMywgNjM3NDUsIAorICAgIDE3NDgsIDYzNzcwLCAxMjE0MTksIDEyMTA3OCwgMCwgNjU1NDIsIDYzNzY2LCA1NTI0NCwgMzA2MSwgNzg2MDksIDYzNzY0LCAKKyAgICA2Mzc4NywgOTA2NywgNjA5NiwgMCwgNzY5NCwgOTgzNzc2LCA3MjU3LCA2Mzc2OCwgMzQ4NSwgMTI5ODcsIDEyNzc4MSwgCisgICAgMTI3NTIyLCAxMjA2MjgsIDYzODA3LCAxNTkxLCAxMjcxNDAsIDYzODYsIDYzNzgzLCAxMjA5OTAsIDEyNTA0MSwgOTI1MzUsIAorICAgIDEyMjg4NCwgMCwgNjgyNDksIDc0NTc1LCAxMDA5OTcsIDY1NzE5LCAxMzA4MywgNjQ1NzQsIDY1MDEyLCAxMjE0NTIsIAogICAgIDE2NDAsIDEyNDk1LCA2NjY5MSwgNzYyNCwgMzEzOCwgMTA5OTYsIDExMTcxLCAxOTIyLCAxMjcyNzUsIDEyNDk4LCAxMDk4NywgCi0gICAgNjk5MzYsIDY5OTM5LCAzODk0LCA2NTU0MywgMTI5MTgzLCAxOTQ4NDIsIDEyODExMiwgNDkzLCAwLCA0MzE5NywgMTcxNywgCi0gICAgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIDY0MzE1LCAKLSAgICA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIDgzNTIxLCAKLSAgICAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgNjM4NjQsIAotICAgIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgNjYyMTgsIAotICAgIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgNjM3NTksIAotICAgIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgNzM3NjEsIAotICAgIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyODI3OCwgMTIwNjgwLCA0ODgyLCAxMzA0MCwgCi0gICAgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIDI0OCwgCi0gICAgMTI5MDY2LCA2Mzc5NywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAwLCA2Mzc1NiwgNDI3ODYsIDY2NjkzLCAwLCAxODcwLCAKLSAgICA3ODA0MCwgNDcwLCA3ODAzOCwgNzgwMzUsIDc4MDM2LCA3MDAyOCwgNzgwMzQsIDQ1NzksIDY5MjMyLCAwLCAxMjUxMSwgCi0gICAgNzQ0NTMsIDEyNTE0LCAwLCA3MTEzMCwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgMTI4MDQ4LCA3Mzc4LCAKLSAgICAxMjUxMiwgMTE2MTUsIDYxMDQsIDAsIDEyMDkwMCwgNjU5LCA2MDk4LCAwLCAxMjIzNCwgODM1MTEsIDY3MzU4LCA4MzExLCAKLSAgICAxMjUxMCwgNzY2OSwgMTMwMzksIDgzNTA5LCAxMjUxMywgMTAyMDIsIDEyNDcxLCAwLCA4NzQ3LCAxMjEzODUsIDcwMTkzLCAKLSAgICAxMjgzNTQsIDIzMjMsIDAsIDIzMTksIDc3OTE3LCAxMjQ3NywgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgCi0gICAgMTI3MjgwLCA5ODMzMTEsIDgzMDIwLCAyMzA5LCAxMzEyLCA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgCi0gICAgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCAKLSAgICA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIAotICAgIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIDQzMzM2LCA2NzY1OSwgMjMxMywgMTI4MTY3LCA3OTQ4LCAKLSAgICA5MjM2LCA3Nzk0MiwgMCwgMCwgMTA1NzAsIDQzNDczLCA2Mjg5LCAxMDQ4NCwgODMwMDYsIDgzMDA3LCAxMTk5OCwgMTIwODIsIAotICAgIDEwOTI0LCAzMTQ3LCA4MzAwNCwgNjY0MDYsIDEyNTI0LCAxMTkwODEsIDIzMTAsIDExODE4LCA5MzgxLCA5MzgyLCA5Mzc5LCAKLSAgICA5MzgwLCA5Mzc3LCA5Mzc4LCA5Mzc1LCA5Mzc2LCAxNjgzLCA5Mzc0LCA5ODM3NzgsIDkzNzIsIDEyNDQ0LCA3NDI1NiwgMCwgCi0gICAgMTMwMTYsIDgyMTAsIDEyMTA2MiwgNDIwMjksIDExMDc5LCAxMjMzMSwgNDM0NTEsIDQyMDMyLCA4NzQ0LCA3MjYsIDAsIAotICAgIDEyMDYzMCwgNDE1NSwgMTIxMDkwLCAxMjA3MDQsIDQyMDMwLCA1MDA3LCAxMjUyMiwgNDMwODgsIDAsIDQ5NTEsIDExMzgyNiwgCi0gICAgMTI3MjE3LCA5ODMyMDIsIDk5MjIsIDQzMzA5LCAxMTIxMSwgMTI1MjUsIDk4MzQ3MywgMTIwMTYsIDY1NzcwLCA5NTQ4LCAKLSAgICA2NzY2NSwgNDAzLCA3ODIzMCwgMTI1MDMsIDE5NDY4OSwgMTI3MTkxLCAxMTAzMCwgNDM5MTYsIDkyNTY3LCA2NTY5MSwgCi0gICAgNjM5OTgsIDE4MTksIDEwNDk2LCAwLCAwLCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgOTgzODM4LCAKLSAgICAxMTE0NiwgNzE0NzcsIDEyNTAwLCA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIAotICAgIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAKLSAgICAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIAotICAgIDc0MTY1LCA3NDc4MiwgNDM0OTksIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCAKLSAgICA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgCi0gICAgNjk3MTksIDMyMzEsIDkxNzgzNiwgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAKLSAgICAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCAKLSAgICA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIAotICAgIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCAKLSAgICA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgOTgzNDY3LCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCAKLSAgICA3MDQ1NCwgMTk0ODM4LCAxMjcxODcsIDY1MDI2LCA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCAKLSAgICA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDAsIAotICAgIDEyMDcxNywgMTI3Nzc2LCA5OTQwLCAxMjcyOTksIDc2OTIsIDk4MzgzMywgODAwOCwgNDExMzEsIDMzMCwgODU2NiwgCi0gICAgNjUwODMsIDY4MzksIDk4MTYsIDEyNjUxNywgMTI1MzIsIDc4NTUwLCA3ODU0NiwgMzUwOCwgMTI3MDU4LCA0MzIzNSwgCi0gICAgMTIwMzUxLCAxMjcyOTgsIDY0MTM5LCA3ODIzMSwgNjQxMSwgMTI5MTAsIDY3NzEwLCA2NjY0NCwgMTMwMjgsIDY3MzcsIAotICAgIDEyNTM3LCAwLCA0MzUwNiwgNjQxMzYsIDEyNTM2LCAyMzUwLCAxMzAyOSwgNzgyMzMsIDEyMDkxNCwgNDM4OTcsIDEzMDMwLCAKLSAgICA2NzAyLCA0NTI3LCA3MTI1MCwgMTI1MzgsIDEyODgxMCwgOTgzNjQ1LCA2NTU5OSwgNjU3MTcsIDk5NjYsIDkzMDQ2LCAKLSAgICA0OTQ4LCAxMjQ4NCwgNDAzMiwgMTIxMTc3LCAxMjYyMywgMCwgNjIwNywgOTgzMjI1LCA2MTE3LCA2NTkzMCwgODQxMiwgCi0gICAgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDEyMDIzMywgMTI0ODEsIAotICAgIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCAKLSAgICAxMTkyNDQsIDYyOTUsIDkwMSwgNDE1MTAsIDc5NTMsIDAsIDY1MDMyLCA0MTUxMywgMTIwMjA5LCAxMTkyNywgNjY1ODQsIAotICAgIDc4NTU5LCA3ODU2MCwgNzg1NTcsIDcxNDU5LCA4MzAzNCwgNjc2MDMsIDg0OCwgOTg2OCwgNjcyMjAsIDY0MjQsIDc4NTY4LCAKLSAgICA2NzIyNiwgNjk5MjIsIDcwMTkwLCA3ODU2MywgNzg1NjQsIDIzNTIsIDY3MjE5LCA4OTMsIDY0NTc2LCAxMTI4OSwgMTQwNywgCi0gICAgNjc5NzMsIDk4MzE5MywgMTMwMjYsIDY3NjIsIDc4NTc5LCA3MDE5MiwgMTMwMjMsIDg5MDMsIDk3NzcsIDY2NzE1LCAxODcxLCAKLSAgICA4MDk5LCAxMjc5ODQsIDAsIDEzNDMsIDkxNzk5OSwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMCwgNzI0MzYsIAotICAgIDExMzcxMywgMTE3NDEsIDkxNzk4NiwgNzUwNDMsIDkyMTYsIDgyNjMsIDExMjc5LCA4MzAyMywgODMwMjQsIDgzMDI1LCAKLSAgICAxMzAyMSwgNjQ0OTQsIDMxMzYsIDE5NDc1OCwgMTk0NzU3LCAxOTQ3NjAsIDEzMDIyLCA0MjczNywgOTk1NiwgMCwgNDM5NTQsIAotICAgIDc0NTUyLCAxMDAxNCwgMCwgNDEyNjAsIDExOTM0MCwgMTMwMjAsIDEwMDI0LCAxOTQ3NjQsIDc0NTgzLCA3NDM0MCwgCi0gICAgNjk2ODEsIDAsIDQzMDAxLCA4MDI5LCAwLCAwLCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAKLSAgICAxOTQ3NDgsIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIAotICAgIDc4NTgxLCA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgCi0gICAgNzQ1NDIsIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgMCwgNjg2MDgsIDY0ODIsIDQyMTQsIDczNzkwLCAxMTk0NSwgCi0gICAgNDM5MjUsIDEzMDQ2LCA4ODM4LCA0MjUsIDQwMjUsIDEwNzA5LCA3ODU5NSwgMjEwOCwgMjM5MiwgMTMwNDcsIDkyNzQ1LCAwLCAKLSAgICA2ODE5LCAxMzA0OSwgNjQ5OSwgOTIyNDMsIDEyNDI0LCA2ODYxNCwgNjU4MjcsIDEzMDUwLCA5OTI0LCAxOTQ3NDUsIDY1MDcsIAorICAgIDY5OTM2LCA2OTkzOSwgMzg5NCwgNjU1NDMsIDEyOTE4MywgMTk0ODQyLCAxMjA3OTMsIDQ5MywgMTE4OTI1LCA0MzE5NywgCisgICAgMTcxNywgNDIyOCwgNDc5LCAxMDMwMywgNzQwMjAsIDAsIDkxNzkzNSwgMTAzMzUsIDM1MjAsIDkxNzkzMiwgMTI0OTAsIAorICAgIDY0MzE1LCA5MjE3MCwgMTI3MDM5LCAxMjQ5MywgNjIzMywgNDI2ODEsIDEwMDIsIDEyNDkxLCA4MzUxOSwgNjQ5MTEsIAorICAgIDgzNTIxLCAyMDk2LCA2NTEyMCwgODM1MTYsIDc4MjE5LCA4MzI3MCwgODM3OCwgMTE2MzIsIDY4ODM4LCA2NjIxMywgCisgICAgNjM4NjQsIDY2MjIxLCA2NjIyNiwgNjYyMjksIDEzMjE4LCA2NjIzMSwgNjYyMTYsIDg1MDcsIDY2MjM2LCA2NjIxMSwgCisgICAgNjYyMTgsIDkyNjcyLCA2NjI0MCwgNzgwNDEsIDY2MjMzLCA4OTI4LCA5ODM1NTIsIDc5MDksIDY2MjM0LCAxMTYwNSwgCisgICAgNjM3NTksIDEyNzMwOCwgNjYyMDgsIDY3MzM5LCAxMzAwMiwgNjM4MDMsIDI0NCwgMTE1NDIsIDEyODk4LCAxMjQ5NCwgCisgICAgNzM3NjEsIDEyNDkyLCAxMjY2OSwgOTQwNzAsIDAsIDc0MTUzLCAxMjAzMTAsIDEyNjUxMywgMTIwNDcyLCA0ODgyLCAKKyAgICAxMzA0MCwgOTgzMzYyLCA4NjEyLCA0ODg1LCA3NDA1MywgMTI3ODMwLCAxMzA0MiwgNDg4MCwgNjQ2NjIsIDI0MjksIDEzNjAsIAorICAgIDI0OCwgMTAxMDE4LCA2Mzc5MywgOTIzOTQsIDQyMzU4LCAwLCA3MjkyLCAxMDEwMTcsIDYzNzU2LCA0Mjc4NiwgNjY2OTMsIAorICAgIDkxNzU5OCwgMTg3MCwgNzgwNDAsIDQ3MCwgNzgwMzgsIDc4MDM1LCA3ODAzNiwgNzAwMjgsIDc4MDM0LCA0NTc5LCA2OTIzMiwgCisgICAgMCwgMTI1MTEsIDc0NDUzLCAxMjUxNCwgOTgzOTQ3LCA3MDY1NiwgNzIzOSwgNzAwMSwgODYyMywgOTQwMTEsIDEyNTEzNywgCisgICAgMTI4MDQ4LCA3Mzc4LCAxMjUxMiwgMTE2MTUsIDYxMDQsIDEwMTAxMSwgMTIwOTAwLCA2NTksIDYwOTgsIDEwMDk0OCwgCisgICAgMTIyMzQsIDgzNTExLCA2NzM1OCwgODMxMSwgMTI1MTAsIDc2NjksIDEzMDM5LCA4MzUwOSwgMTI1MTMsIDEwMjAyLCAKKyAgICAxMjQ3MSwgMCwgODc0NywgMTIxMzg1LCA3MDE5MywgMTAwOTQ2LCAyMzIzLCAxMjgxNDcsIDIzMTksIDc3OTE3LCAxMjQ3NywgCisgICAgNzc5MTYsIDIzMTEsIDc2NjYsIDQ0MTUsIDIzNywgNjI4MSwgMTI3MjgwLCAxMDA5NDAsIDgzMDIwLCAyMzA5LCAxMzEyLCAKKyAgICA4MTczLCA4MzAxMywgMTI0NjksIDgzMDE1LCA3ODUwNSwgNjQzMzUsIDEwNjA5LCA4MzAxMSwgNzgwMDYsIDkzOTcsIAorICAgIDExNTI0LCA5Mzk1LCA5Mzk2LCA5MzkzLCA5Mzk0LCA5MzkxLCA5MzkyLCA5Mzg5LCA2MjA5LCA5Mzg3LCA5Mzg4LCA0OTMyLCAKKyAgICA5Mzg2LCA5MzgzLCA5Mzg0LCA2NzQwLCAxMjc5OTAsIDY1NDUxLCA4MTg1LCAxMjg5MzEsIDE5NDg0MywgNDMwMjQsIAorICAgIDQzMzM2LCA2NzY1OSwgMjMxMywgNzQ0NDYsIDc5NDgsIDkyMzYsIDc3OTQyLCAxMjg4OTksIDAsIDEwNTcwLCA0MzQ3MywgCisgICAgNjI4OSwgMTA0ODQsIDgzMDA2LCA4MzAwNywgMTE5OTgsIDEyMDgyLCAxMDkyNCwgMzE0NywgODMwMDQsIDY2NDA2LCAKKyAgICAxMjUyNCwgMTE5MDgxLCAyMzEwLCAxMTgxOCwgOTM4MSwgOTM4MiwgOTM3OSwgOTM4MCwgOTM3NywgOTM3OCwgOTM3NSwgCisgICAgOTM3NiwgMTY4MywgOTM3NCwgOTgzNzc4LCA5MzcyLCAxMjQ0NCwgNzQyNTYsIDAsIDEzMDE2LCA4MjEwLCAxMjEwNjIsIAorICAgIDQyMDI5LCAxMTA3OSwgMTIzMzEsIDQzNDUxLCA0MjAzMiwgODc0NCwgNzI2LCAwLCAxMjA2MzAsIDQxNTUsIDEyMTA5MCwgCisgICAgMTIwNzA0LCA0MjAzMCwgNTAwNywgMTI1MjIsIDQzMDg4LCAwLCA0OTUxLCAxMTM4MjYsIDEyNzIxNywgOTgzMjAyLCA5OTIyLCAKKyAgICA0MzMwOSwgMTEyMTEsIDEyNTI1LCAxOTUwMzUsIDEyMDE2LCA2NTc3MCwgOTU0OCwgNjc2NjUsIDQwMywgNzgyMzAsIAorICAgIDExMDIxLCAxOTQ2ODksIDEyNTI1MCwgMTEwMzAsIDQzOTE2LCA5MjU2NywgNjU2OTEsIDYzOTk4LCAxODE5LCAxMDQ5NiwgMCwgCisgICAgMTk0NjU3LCAxMTk5MjAsIDAsIDEyOTE0MywgMTIxMDcyLCAxMjUwNiwgMTk0NjA1LCAxMTE0NiwgNzE0NzcsIDEyNTAwLCAKKyAgICA0NDAyMywgMTI1MDksIDY0MzkzLCA3ODgzMCwgMzM4OSwgMTA1ODksIDY2MDgsIDExMjA4LCAxMjAyMzYsIDc4Mzk1LCAKKyAgICA3ODM5NCwgNzQwNjksIDcxNDQ2LCA3ODM5MSwgMzYwOCwgODI4MSwgMTEzNzMyLCAxMTA3LCAxMTM3NDUsIDkwNzYsIDg4NjIsIAorICAgIDY5NzQzLCA0MTA1MiwgMTMwODQsIDY0NzY2LCA0MzIxNywgNzgwMywgMTMyMjIsIDc0MTY1LCA3NDc4MiwgNDM0OTksIAorICAgIDg1NDYsIDExNTUzLCA2Mzk5NSwgMTMxNzcsIDkwNDMsIDYzMDMsIDExMzY2NCwgNDk4LCA2NDQ3MSwgNzc5ODcsIDkyOTc0LCAKKyAgICAxMjUyOSwgODA0MiwgNDM4OTksIDIzNDQsIDEyNTI4LCA4MDMxLCAyNDE0LCA3NDUwNiwgNjk3MTksIDMyMzEsIDE5NDU2OSwgCisgICAgNjQyMiwgNjY1MTIsIDY5NjUzLCAxMjUzMCwgMjUzNywgNzg0MDUsIDQxNDI5LCAxMjY1OCwgMTMwMzYsIDY1NzcyLCAwLCAKKyAgICA3ODczOCwgNDE0MzMsIDQ3MTksIDQ2OSwgOTE3ODEwLCA0MzYzLCAzMzEzLCA0MTQyOCwgNzg0MDcsIDIwMjMsIDE3NzIsIAorICAgIDc4MjI0LCA3ODIyNSwgNjU3MDYsIDEwMDUxLCA2NDgxMiwgNzgyMjAsIDc0MjM3LCA5OTIwLCAxMjIxNSwgODI5NzgsIAorICAgIDQ5MzEsIDE5NTEsIDEyNDk3LCAxMTkzNjMsIDk2MDcsIDcwMzY4LCA5NjYzLCA2NjgzOCwgMTE5NjM0LCA2NTAzLCA0MTExMCwgCisgICAgMTI1MjMyLCAxNDkxLCA2Njg0NywgMTI5MTY5LCAxMjczMDQsIDQxMDYxLCA3MDQ1NCwgMTk0ODM4LCAxMjEwMTQsIDY1MDI2LCAKKyAgICA0MTk5MywgNDE1MDksIDExMDQ1LCA2NTAyOCwgNzExODEsIDY2NDc2LCA0MTEwOCwgOTczOCwgNDE5OTUsIDEwNzUsIDE5NTgsIAorICAgIDEyNTM1LCA0MTk5MiwgNDE1MDYsIDEyNzAwMiwgNDE2ODcsIDEyNzM5OCwgMTIwNzE3LCAxMjc3NzYsIDk5NDAsIDEwMDQxOSwgCisgICAgNzY5MiwgMTIwNjgwLCA4MDA4LCA0MTEzMSwgMzMwLCA4NTY2LCA2NTA4MywgNjgzOSwgOTgxNiwgMTI2NTE3LCAxMjUzMiwgCisgICAgNzg1NTAsIDc4NTQ2LCAzNTA4LCAxMjcwNTgsIDQzMjM1LCAxMjAzNTEsIDEyNzI5OCwgNjQxMzksIDc4MjMxLCA2NDExLCAKKyAgICAxMjkxMCwgNjc3MTAsIDY2NjQ0LCAxMzAyOCwgNjczNywgMTI1MzcsIDEwMDQxNywgNDM1MDYsIDY0MTM2LCAxMjUzNiwgCisgICAgMjM1MCwgMTMwMjksIDc4MjMzLCAxMjA5MTQsIDQzODk3LCAxMzAzMCwgNjcwMiwgNDUyNywgNzEyNTAsIDEyNTM4LCAKKyAgICAxMDA0MTYsIDEyOTM1MiwgNjU1OTksIDY1NzE3LCA5OTY2LCA5MzA0NiwgNDk0OCwgMTI0ODQsIDQwMzIsIDEyMTE3NywgCisgICAgMTI2MjMsIDEyMDIwNywgNjIwNywgMTk0NzI2LCA2MTE3LCA2NTkzMCwgODQxMiwgMTI3MTgzLCA3NDM4LCAxMjk2LCAyMzI1LCAKKyAgICA0MTUxMSwgMTIxMDIwLCAxMDE0OSwgNzQxMTgsIDAsIDExOTYyNSwgMTI0ODEsIDEyMTI4MCwgMTI0ODgsIDY2NzEzLCAwLCAKKyAgICA0MTU1NiwgNjQ0MTQsIDExODgwMiwgMjM1NCwgNDI2MTksIDczNzY2LCA3Mjc1NywgNjI5NSwgOTAxLCA0MTUxMCwgNzk1MywgCisgICAgOTgzNDY1LCA2NTAzMiwgNDE1MTMsIDEyMDIwOSwgMTE5MjcsIDY2NTg0LCA3ODU1OSwgNzg1NjAsIDc4NTU3LCA3MTQ1OSwgCisgICAgODMwMzQsIDY3NjAzLCA4NDgsIDk4NjgsIDY3MjIwLCA2NDI0LCA3ODU2OCwgNjcyMjYsIDY5OTIyLCA3MDE5MCwgNzg1NjMsIAorICAgIDc4NTY0LCAyMzUyLCA2NzIxOSwgODkzLCA2NDU3NiwgMTEyODksIDE0MDcsIDY3OTczLCA5ODMxOTMsIDEzMDI2LCA2NzYyLCAKKyAgICA3ODU3OSwgNzAxOTIsIDEzMDIzLCA4OTAzLCA5Nzc3LCA2NjcxNSwgMTg3MSwgODA5OSwgMTI3OTg0LCAxMjkzNjcsIDEzNDMsIAorICAgIDEyODQzOCwgMTIwNzg0LCA5MzI1LCA2ODE4LCA2MjgzLCAxMTczOCwgMTIwMjEwLCA3MjQzNiwgMTEzNzEzLCAxMTc0MSwgCisgICAgMTI5MTk2LCA3NTA0MywgOTIxNiwgODI2MywgMTEyNzksIDgzMDIzLCA4MzAyNCwgODMwMjUsIDEzMDIxLCA2NDQ5NCwgCisgICAgMzEzNiwgMTk0NzU4LCAxOTQ3NTcsIDE5NDc2MCwgMTMwMjIsIDQyNzM3LCA5OTU2LCAxMDA3NDYsIDQzOTU0LCA3NDU1MiwgCisgICAgMTAwMTQsIDAsIDQxMjYwLCAxMTkzNDAsIDEzMDIwLCAxMDAyNCwgMTk0NzY0LCA3NDU4MywgNzQzNDAsIDY5NjgxLCAwLCAKKyAgICA0MzAwMSwgODAyOSwgMCwgOTgzNjM5LCA5ODM3ODAsIDMzMzUsIDExOTM0MSwgOTIwOSwgOTc3NiwgMTIwNTI2LCAxMjg0MDQsIAorICAgIDUyMTUsIDQyNjQ0LCAzMzMzLCAxNjMyLCAxOTQ3NTEsIDY0ODQ5LCAzMzQyLCA3ODU4MiwgNTM2MywgMTI5NTcsIDc4NTgxLCAKKyAgICA0MTU2LCAwLCAxMjczMjksIDY0MjEsIDc4MDM5LCAxNjExLCA3ODU4OSwgMTMwMTgsIDc0MjU3LCA3ODU4OCwgNzQ1NDIsIAorICAgIDMzMzcsIDQ1MzcsIDY3ODk1LCAxMTczNiwgOTgzNzg5LCA2ODYwOCwgNjQ4MiwgNDIxNCwgNzM3OTAsIDExOTQ1LCA0MzkyNSwgCisgICAgMTMwNDYsIDg4MzgsIDQyNSwgNDAyNSwgMTA3MDksIDc4NTk1LCAyMTA4LCAyMzkyLCAxMzA0NywgOTI3NDUsIDEyNTA0MCwgCisgICAgNjgxOSwgMTMwNDksIDY0OTksIDkyMjQzLCAxMjQyNCwgNjg2MTQsIDY1ODI3LCAxMzA1MCwgOTkyNCwgMTI4Mzc4LCA2NTA3LCAKICAgICAxMjc5MTksIDk0MDczLCAxMjgwNjksIDMyNzcsIDg5MjksIDQ5NDcsIDQxMDU1LCAwLCAxOTQ3MjIsIDE5NDcyMSwgCiAgICAgMTk0NzI0LCAxMzA0NSwgNjQ2MjYsIDY2MDM0LCA3NzUxLCAxOTQ3MjcsIDgzNzEsIDEyMTAzNiwgMzk5NywgMTI4MDYsIAogICAgIDg3NjgsIDEzMDQ0LCAwLCAxMjQyMCwgNDAyNCwgMTI4MDAwLCA0MTA1NCwgMTA3OCwgOTc1NywgNjk3MzYsIDQxMDU3LCAKLSAgICA2ODMwNywgOTE3ODQyLCAwLCAwLCA5ODM3OTEsIDkyMjEwLCA5MjQxMSwgMTI5MzAzLCA0MTQ5NiwgMCwgOTE2NSwgMTU3MiwgCi0gICAgMTE5MTEsIDEyNDk5MCwgMTE4ODQyLCAyMzQ2LCAxMzI3MCwgODk1OCwgMCwgOTY0NiwgMzc3MywgNDMxODMsIDY0MDEsIAotICAgIDU4MzEsIDAsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAxMjczODIsIDQxNTE0LCAwLCAKLSAgICAxMjEwNDgsIDk4Mzg4NCwgMTA2OTksIDY0MDgsIDkyMjI3LCA3ODI1LCA1NjYxLCA4Mjk3MiwgODI5NzMsIDM2MDMsIAotICAgIDQxMTA5LCAyMzk4LCAzNTQ4LCA4Mjk2OSwgODI5NzAsIDExOTkzMywgODI5NjQsIDMxMTUsIDk5MTgsIDEyNzgyMywgODI5NCwgCi0gICAgNDI5MTIsIDAsIDEyNzI4NywgMTk0NzI2LCA0ODc2LCA2NTgwNCwgMCwgMCwgNDM0NjgsIDEyMTIyMSwgNDE1NTgsIDQxNDcxLCAKLSAgICA3Mzk1MCwgODE1OCwgOTk0NCwgNDE0NzIsIDEyMDI5OCwgMTMwNTEsIDc4Njg5LCAzMTQzLCAxOTQ2NzQsIDY3MDEsIAotICAgIDQxNTU5LCAxODk2LCA2NTIxNSwgMTMwNTIsIDE5NDY4MCwgNTY2NSwgNzg1OTQsIDExOTA3MSwgNzAyNSwgNjM5NzQsIDAsIAotICAgIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIAotICAgIDc4MzE5LCA2Mzk1OSwgMCwgOTk0MiwgMTMyMzEsIDk4MzU3OCwgNjQ3NTIsIDQ3MzIsIDE5NDY2NiwgMTE1OTYsIDc4MTQyLCAKLSAgICA2NTE4NywgMTYyNiwgNjM5ODMsIDEwMTEwLCA2NDc3MiwgNDIwMjQsIDY0MjAsIDQyMDI4LCA5MjI5NCwgMTA1MDksIDI3OTUsIAotICAgIDQ5MTAsIDEyOTE5MywgNjkyMzEsIDY0NzUzLCA2Mjc1LCA5Mzk1NywgMTE4ODMwLCA2Mzk3OCwgMTEwNDQsIDMyMjksIAotICAgIDY0MjMsIDQyNzc0LCAwLCAwLCA2ODUyNiwgMTI4MjMsIDIzMzEsIDEyNzc4OCwgNzA4NSwgNjEzNywgMCwgNzUyNCwgCi0gICAgMTIwNzIxLCA5MTc4MDksIDgzNDYsIDEyODQzOCwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIAotICAgIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIAotICAgIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgCi0gICAgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgCi0gICAgNzM5OTAsIDY1MTExLCA5ODM5NjAsIDc0OCwgNDEwNjcsIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxOTQ2MjksIAotICAgIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgNjc4NjMsIDM1OTMsIDc0MDc2LCA4Mjk0OSwgMjM0MiwgODI5NTEsIAotICAgIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIAotICAgIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzgwNDksIDY0NjUxLCA3ODA0NywgMCwgMTAxMTksIDY0MTUsIDQyODkzLCAwLCAKLSAgICA2OTcwMiwgOTgzOTM3LCAwLCAxMTM3NSwgNjQ3NDYsIDIzMzIsIDc4MDYzLCA0MTIsIDc4MDYxLCA0MjkyOCwgNDI4ODAsIAotICAgIDQzNTg3LCAxMjEwOTgsIDAsIDAsIDcwNDYxLCA2NTE5NywgNzgwNjYsIDEyMjAzLCA3ODA2NCwgNzgwNjUsIDg5MTMsIAotICAgIDY1ODU0LCA0ODc1LCA2NTgxMSwgNzUwMjQsIDEyMDM4OSwgNzE4NTQsIDkzNDQsIDg4MjYsIDkyOTE2LCAxMjAzOTUsIAotICAgIDEzMTA0LCA2NzgyOCwgMTE5OTcsIDEyMDM5MywgNzgwNzUsIDAsIDMxMzQsIDgzMDk2LCA2NTY5NiwgNzI0MzIsIDEyMTQxMiwgCi0gICAgNjYyMTcsIDEyMTE5MCwgODMzNCwgOTI3NTUsIDgzMjA3LCAzNDQ5LCAxMjEyNjQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIAotICAgIDgzMjE2LCA2NjQwNSwgNzA0MzAsIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAKLSAgICAxMjcwMTQsIDgzMTk4LCA2NzgyNSwgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIAotICAgIDgzNTEwLCA3ODA1NCwgNDkxNywgNzQ1MTYsIDc0MjA4LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgCi0gICAgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgNzgwNzEsIDk4MzU3NSwgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIAotICAgIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgCi0gICAgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIAotICAgIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgCi0gICAgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIAotICAgIDEyMDgyOSwgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAKLSAgICAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgODMxMzgsIDEyNTA5OCwgMTIwNzEwLCAxMjkwNjQsIDQxNTUyLCAKLSAgICA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIAotICAgIDQ3MTYsIDQzMjc3LCAxMjA5MzIsIDc4NDc0LCAxMjM0MCwgMTIwNTY4LCAxMjA5MjgsIDE5NDcwMCwgNTUyNjQsIDQxMjExLCAKLSAgICAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgMTAxMDEsIDAsIDcwMDQ5LCA4NDc5LCA0MTUxLCA0MTkzMywgCi0gICAgODMxODksIDAsIDY2MjU0LCAxMjA4MjEsIDY4NDk3LCAwLCAxMjg2NTQsIDExMzc5OSwgODMxNTksIDc0MDUwLCA0MjY1MSwgCi0gICAgMTI3MzcxLCAwLCAwLCA4MzIyNSwgODMyMTgsIDEyMjc4LCA3NTAxMSwgMTI4NDA1LCAwLCAyNzAwLCAxMjU3NiwgNzg0MiwgCi0gICAgMTI4OTksIDgzMTU1LCAwLCAyNjk5LCAxMjkzMDQsIDczODQ1LCAyOTg1LCA4MzE0OSwgNjg2NDgsIDgzMTQ2LCAxMjE5MiwgCi0gICAgMTE5MzE0LCAwLCA2NjQ4OSwgOTgyNywgMTE5MzEwLCA4NjA5LCAxMTkzMDgsIDY3NDI2LCAxMTkzMDYsIDExNDgxLCAKLSAgICA0MTIxMCwgMTE5MzA1LCAwLCAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIAotICAgIDYwOTAsIDY0MjU3LCA3ODEyLCAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCAKLSAgICA0MDk2NCwgOTE3ODI1LCAxMjcwNCwgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIAotICAgIDY4MjE2LCAxOTQ4NzEsIDEyMTM5MCwgNTI0NCwgNDE4OSwgOTI2OTcsIDY3NTk2LCAxMjc1MDQsIDQxODgsIDE4NzksIAotICAgIDcwNDYzLCA5NjgsIDAsIDQzNzQzLCAwLCA4ODczLCAyMjc5LCAxMjcxMDAsIDkxNzgyNywgNjU1NTUsIDEyNTc0LCAwLCAKLSAgICA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAxMjcwOTksIDExODM4LCA3NTAwMSwgMCwgMCwgNDI2ODIsIDEyNTc4LCAxMjcyMCwgMCwgCi0gICAgNDEyMjcsIDAsIDEyMzQ2LCAxMjcxMDEsIDY0ODQ4LCA2OTk1MCwgOTE3OTUwLCA3MjUxLCAwLCAxMjAzODIsIDExODg1MCwgCisgICAgNjgzMDcsIDkxNzg0MiwgMTI3ODk3LCAwLCA5ODM3OTEsIDkyMjEwLCA3MjczNSwgMTI5MzAzLCA0MTQ5NiwgMTk0NTc0LCAKKyAgICA5MTY1LCAxNTcyLCAxMTkxMSwgMTI0OTkwLCAxMTg4NDIsIDIzNDYsIDEzMjcwLCA4OTU4LCA5ODM0MTYsIDk2NDYsIDM3NzMsIAorICAgIDQzMTgzLCA2NDAxLCA1ODMxLCAxOTQ3MjMsIDEyMDg2NSwgMTMwNDMsIDgwNTYsIDcwMTA4LCA2NTY4MSwgMjA4LCAKKyAgICAxMjczODIsIDQxNTE0LCAxMjExMjQsIDEyMTA0OCwgOTgzODg0LCAxMDY5OSwgNjQwOCwgOTIyMjcsIDc4MjUsIDU2NjEsIAorICAgIDgyOTcyLCA4Mjk3MywgMzYwMywgNDExMDksIDIzOTgsIDM1NDgsIDgyOTY5LCA4Mjk3MCwgMTE5OTMzLCA4Mjk2NCwgMzExNSwgCisgICAgOTkxOCwgNzI3MjMsIDgyOTQsIDQyOTEyLCAxOTQ3NDUsIDEyNTE4NSwgMTI2NDgzLCA0ODc2LCA2NTgwNCwgMCwgMTAwNTgzLCAKKyAgICA0MzQ2OCwgMTIxMjIxLCA0MTU1OCwgNDE0NzEsIDczOTUwLCA4MTU4LCA5OTQ0LCA0MTQ3MiwgMTIwMjk4LCAxMzA1MSwgCisgICAgNzg2ODksIDMxNDMsIDE5NDY3NCwgNjcwMSwgNDE1NTksIDE4OTYsIDY1MjE1LCAxMzA1MiwgMTE5OTMwLCA1NjY1LCAKKyAgICA3ODU5NCwgODMxMjksIDcwMjUsIDYzOTc0LCAxMDA0NjQsIDc0MzUyLCA3NDE2MSwgNDE1NCwgOTg2MywgNDM1NTAsIAorICAgIDEyMzEwLCA1NjYyLCA0MjM4MiwgMTU2NCwgNzM5MjQsIDExMjEsIDc4MzE5LCA2Mzk1OSwgOTgzMTg0LCA5OTQyLCAxMzIzMSwgCisgICAgOTgzMjUwLCA2NDc1MiwgNDczMiwgMTk0NjY2LCAxMTU5NiwgNzgxNDIsIDY1MTg3LCAxNjI2LCA2Mzk4MywgMTAxMTAsIAorICAgIDY0NzcyLCA0MjAyNCwgNjQyMCwgNDIwMjgsIDkyMjk0LCAxMDUwOSwgMjc5NSwgNDkxMCwgMTI5MTkzLCA2OTIzMSwgCisgICAgNjQ3NTMsIDYyNzUsIDkzOTU3LCAxMTg4MzAsIDYzOTc4LCAxMTA0NCwgMzIyOSwgNjQyMywgNDI3NzQsIDEwMDQ1NSwgMCwgCisgICAgNjg1MjYsIDEyODIzLCAyMzMxLCAxMjc3ODgsIDcwODUsIDYxMzcsIDAsIDc1MjQsIDEyMDcyMSwgMTEzNzAzLCA4MzQ2LCAKKyAgICA3ODgwMiwgODMzOCwgMTI4MzE1LCA2NTA0MywgNzc5ODIsIDgyMiwgNzA0MTIsIDk5MDMsIDY0NzIxLCA0MjcyMiwgNjk4NzcsIAorICAgIDgyOTU2LCA3ODY1NSwgNjY4ODIsIDgyOTU5LCA3ODQ4NCwgNDEyNjUsIDUzMTEsIDE3OTUsIDk2NSwgMTE4NzkxLCAxMDU4NywgCisgICAgNDM5NjIsIDExMjc4LCA3ODYzMiwgNzQxMTEsIDEyODA5NSwgMTI5NDYsIDEyMTA3NiwgNzE5MjEsIDEyMDM0OSwgNjI5NCwgCisgICAgMzE0NCwgMTEzNzA2LCAxMjc5NjcsIDY1MDE5LCA3NDA3OCwgNzM5OTAsIDY1MTExLCA5MTc5NTQsIDc0OCwgNDEwNjcsIAorICAgIDIzMzAsIDUzNSwgMzE0OCwgMTIzNzUsIDc4Nzk5LCAxMjkzMTMsIDEwNTU2LCAyNDc1LCAxMjM4OCwgNDg4OSwgODk2OCwgCisgICAgNjc4NjMsIDM1OTMsIDc0MDc2LCA3Mjc1MCwgMjM0MiwgODI5NTEsIDgyOTQ0LCA2NTIwNiwgNDg5NCwgODI5NDcsIDQ4OTAsIAorICAgIDEyMTA1OSwgNjQ0MzMsIDU4MSwgNDg5MywgNDI5MjksIDY1NzEsIDY1NTQ1LCA0ODg4LCA0MTU3LCA3ODA0OCwgNzA3MzUsIAorICAgIDY0NjUxLCA3ODA0NywgOTE3ODA2LCAxMDExOSwgNjQxNSwgNDI4OTMsIDk4MzA2OCwgNjk3MDIsIDk4MzkzNywgMCwgCisgICAgMTEzNzUsIDY0NzQ2LCAyMzMyLCA3ODA2MywgNDEyLCA3ODA2MSwgNDI5MjgsIDQyODgwLCA0MzU4NywgMTIxMDk4LCAwLCAwLCAKKyAgICA3MDQ2MSwgNjUxOTcsIDc4MDY2LCAxMjIwMywgNzgwNjQsIDc4MDY1LCA4OTEzLCA2NTg1NCwgNDg3NSwgNjU4MTEsIAorICAgIDc1MDI0LCAxMjAzODksIDcxODU0LCA5MzQ0LCA4ODI2LCA5MjkxNiwgMTIwMzk1LCAxMzEwNCwgNjc4MjgsIDExOTk3LCAKKyAgICAxMjAzOTMsIDc4MDc1LCAwLCAzMTM0LCA4MzA5NiwgNjU2OTYsIDcyNDMyLCAxMDA2MzEsIDY2MjE3LCAxMjExOTAsIDgzMzQsIAorICAgIDkyNzU1LCA4MzIwNywgMzQ0OSwgODMyMTQsIDEzMTAwLCA3ODQxNCwgNzg0MTMsIDgzMjE2LCA2NjQwNSwgNzA0MzAsIAorICAgIDgzMDg5LCA4MzIwMywgMTI3MjUwLCAxOTA4LCAxMjAxNjcsIDQzMjgsIDEwNzM0LCAxMjcwMTQsIDcwNzA5LCA2NzgyNSwgCisgICAgNzgwNCwgNzgyNzIsIDEwODExLCA2MjUwLCAxMTMzOSwgNDkxNCwgMTEzNjcsIDgzNTEwLCA3ODA1NCwgNDkxNywgNzA2ODYsIAorICAgIDcyODE2LCA2NDI4NSwgNDkxMiwgNTQ2NCwgMTI3ODM2LCA4MzEwMCwgMjM2MSwgNzk3MSwgNzgwNzIsIDc4MDczLCA1NTI0MywgCisgICAgNzgwNzEsIDE5NDY5MywgODA4NiwgNzQzMTcsIDY3MDcsIDgzMTksIDIzMTIsIDQwOTc3LCAxMDk2MCwgNDA5NjIsIDgzMDUsIAorICAgIDEyNTczLCA3MTEzMSwgNDA5ODAsIDk4Mzk2NCwgMTMyMDIsIDEyNzgxNiwgMTI1ODIsIDc4MjgyLCA5ODMwNDgsIDY5ODU2LCAKKyAgICA0MjQzOCwgNTUyMjEsIDYyODgsIDc4MjgwLCAxMjc5NDYsIDU2NTMsIDQyNDAwLCAxMDg5MSwgNzY5OCwgNTY1OCwgNzA0MDEsIAorICAgIDcwMDM5LCAwLCA3MDQ2MCwgNDkxMywgNzEwNjAsIDEyODU2MiwgNzEzMzMsIDQyMzI2LCAxMjExMTksIDEyNzI4LCA5MjY4NSwgCisgICAgNDI0NzgsIDIzMjcsIDAsIDEyNTYzLCA0MjI4NywgMTI3MDUsIDEwMDQ4MywgODMwODEsIDEyNTg4LCA4ODIxLCA2MTUzLCAKKyAgICAyODY3LCA4MzA4NSwgNjYzMTIsIDY5OCwgODMwNzYsIDgzMDg3LCAxMDM1NiwgNzAwMTcsIDEyODU3MCwgNjUxLCAxMjY0MSwgCisgICAgNzI4MDksIDEyNTA5OCwgMTAwNjM5LCAxMjkwNjQsIDQxNTUyLCA2NTExNSwgNzg0NjUsIDc4NDY3LCA3ODQ2MywgNzQ5MDUsIAorICAgIDEyNzUxNiwgNzg0NjEsIDkyOTYwLCA2NjkyNywgNjQ5NDUsIDQ3MTYsIDQzMjc3LCA3Mjc0NSwgNzg0NzQsIDEyMzQwLCAKKyAgICAxMjA1NjgsIDcwNzIxLCA3MDcxOSwgNTUyNjQsIDQxMjExLCAxMjA2NzYsIDg3MDMsIDU0NjIsIDgzMTk1LCA4MzE4NSwgCisgICAgMTAxMDEsIDEyMDQ0MSwgNzAwNDksIDg0NzksIDQxNTEsIDQxOTMzLCA4MzE4OSwgMCwgNjYyNTQsIDEyMDgyMSwgNjg0OTcsIAorICAgIDAsIDEyODY1NCwgMTEzNzk5LCA4MzE1OSwgNzQwNTAsIDQyNjUxLCAxMjczNzEsIDAsIDAsIDgzMjI1LCA4MzIxOCwgCisgICAgMTIyNzgsIDcwNzE2LCAxMjg0MDUsIDAsIDI3MDAsIDEyNTc2LCA3ODQyLCAxMjg5OSwgODMxNTUsIDAsIDI2OTksIAorICAgIDEyOTMwNCwgNzI3MTgsIDI5ODUsIDgzMTQ5LCA2ODY0OCwgODMxNDYsIDEyMTkyLCAxMTkzMTQsIDEyOTA2MiwgNjY0ODksIAorICAgIDk4MjcsIDExOTMxMCwgODYwOSwgMTE5MzA4LCA2NzQyNiwgMTE5MzA2LCAxMTQ4MSwgNDEyMTAsIDExOTMwNSwgMTI1MjA3LCAKKyAgICAzNSwgNzA4MzgsIDY3NDMxLCA2NjY5NCwgNjg0NzksIDc4NDc3LCA2NzQyOCwgNDM1OTYsIDYwOTAsIDY0MjU3LCA3ODEyLCAKKyAgICAxMDUzNCwgMCwgNzg0ODUsIDczODQ4LCA2Nzk3NSwgNDI3MiwgNzgzMjEsIDQwOTY3LCA0MDk2NCwgMTI0OTgzLCAxMjcwNCwgCisgICAgNzg0ODcsIDQzMzA2LCAwLCA2NDQ5NywgMTIxMzgsIDc5MzAsIDAsIDIyOTIsIDY4MjE2LCAxOTQ4NzEsIDcyNzM3LCA1MjQ0LCAKKyAgICA0MTg5LCA5MjY5NywgNjc1OTYsIDEyNzUwNCwgNDE4OCwgMTg3OSwgNzA0NjMsIDk2OCwgMCwgNDM3NDMsIDk4MzY4NSwgCisgICAgODg3MywgMjI3OSwgMTI3MTAwLCA5MTc4MjcsIDY1NTU1LCAxMjU3NCwgMTIxMTAzLCA5Mjc0OSwgOTI3NTMsIDc0NDkwLCAKKyAgICAxMjcwOTksIDExODM4LCA2Njc4NywgMCwgMTIwNjY0LCA0MjY4MiwgMTI1NzgsIDEyNzIwLCA5ODM2OTgsIDQxMjI3LCAKKyAgICA3Mjc2NSwgMTIzNDYsIDEyNzEwMSwgNjQ4NDgsIDY5OTUwLCA5MTc5NTAsIDcyNTEsIDExMzc5MiwgMTIwMzgyLCAxMTg4NTAsIAogICAgIDExOTE0MSwgMTI4NDYxLCA2NjAxNSwgNjczMzIsIDk1OSwgODg4NSwgMTI1NjQsIDY2NDU3LCA3ODgwOCwgOTQ2OSwgOTYzMiwgCi0gICAgOTIyMzEsIDc0NzYxLCA2NDMyMywgMTI3MzM1LCAxMjg4NDIsIDAsIDExMTMyLCAzMTAsIDEyMDkyNCwgNDEyODEsIDEwOTc2LCAKLSAgICAwLCA3MTMyNSwgMTI4MzY0LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDkxNzgyMywgOTAxMiwgMTk5NTgsIDc0NDIwLCAKLSAgICA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIDAsIDgzMTkxLCAKLSAgICA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCAxMjc4OTUsIDQ3MTUsIDYxMDEsIDcxMDg5LCA0MTkzNiwgODI5NjcsIDQ4NzksIAotICAgIDQzOTY1LCA2NTQ0NiwgMCwgMzA3LCAxMjcxNDcsIDk1ODUsIDUzNzQsIDEyNzk2MiwgMTI4MDU5LCAwLCAxMjkxODksIAotICAgIDEyNjYxOCwgMTIwMzkwLCA3NDk1MywgNjU1NjcsIDEyMDYxNCwgMTkyOSwgMTIwOTg0LCAxMjE0MiwgMTk0Njk2LCAxMjIzNiwgCi0gICAgNDE0MTksIDE5NDYxOCwgMTIwNjEwLCAxMjk4MiwgNzUwMDMsIDUzNzgsIDc1MDA0LCAxMjA5NTcsIDQxNDIxLCA3NTAwNSwgCi0gICAgNDQ2MiwgMCwgMTI2NTk5LCAxMjgwOTIsIDgyMSwgMCwgMjQ5OCwgNTgwMCwgMTIwMTU3LCA2Nzc1OCwgMTc2MCwgMjQyMSwgCi0gICAgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAwLCA3ODc3MCwgNDM1OTcsIDEwNjI4LCA3NDgwOCwgCi0gICAgNjg4NDksIDc5OTksIDQzOTcxLCAxMTIxNywgMTIxMjI0LCAxMDYzNCwgMTA5NDIsIDc3MTMsIDIzNDgsIDAsIDY0Mzc0LCAKLSAgICA0MzgwLCAxMjgyODQsIDgzMDYxLCA5OTgyLCA2NDMyNCwgNDEyNDAsIDg2MiwgNjQ0NjgsIDc4NDYyLCAxODEwLCAzNjczLCAKLSAgICA1MTM3LCAxOTQ2MTcsIDAsIDcyNzcsIDY1NjIyLCA2NTA2OSwgNzU2NiwgNjQ2ODgsIDY3MTQzLCAxOTQ1OTIsIDc0OTU3LCAKLSAgICA0MzkxMiwgMTI4Mzg1LCA0NzQ4LCA5MjIyOCwgMTI5MTg1LCAxOTQ2MDEsIDQyMjYwLCA1ODcxLCAxMTkwNzUsIDEyMTI3OCwgCi0gICAgNzQ1NzYsIDQ0MDE5LCAxOTQ3MjAsIDEyODE4OSwgMzk2NywgNzEwOTgsIDEzMTM3LCA4Nzc1LCAxMjc5NDUsIDAsIDI5NjMsIAotICAgIDkxNzc4NSwgODQxMCwgNDQ1NCwgNzIzLCA4MzA4NCwgOTY2LCA0NDQ5LCA5MjMzMCwgOTIyMzgsIDc1MDIyLCA3ODE5LCAKLSAgICAyMzIwLCAxOTQ1ODksIDMzOSwgNDk2OCwgMTk0NTkwLCAxMjAzOTksIDgwNzUsIDU1Mjc2LCA4MzA1NywgODA0NywgMCwgCi0gICAgNzg4MjcsIDEyNjM0LCA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgCi0gICAgOTgzNzYzLCAxNTg0LCA2NjY0NSwgNjA0NSwgNjcyOSwgMTIwNjQwLCA2NTIxOCwgMTE1NTksIDE5NDk4MywgNzgwNjIsIAotICAgIDc1MzcsIDEyNDk5MSwgMTEzNzAsIDEyNTA5MywgMTAzMzAsIDc4Nzk4LCAxMDM5NCwgOTIyMzYsIDc0MTk0LCAwLCAKLSAgICAxMjc5MjksIDk3ODAsIDAsIDExMTE3LCA3NDk5MywgNzc5NTAsIDY3MDkxLCA3MDc0LCA5MjY0OCwgMTk0NTc5LCAxOTQ1ODIsIAotICAgIDExNDE0LCA2ODc4MSwgMjUzMSwgMTMwMzQsIDEyOTE1OSwgMCwgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCAKLSAgICA4MzEyMiwgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgCi0gICAgMTIxMjUzLCA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgCi0gICAgNDUzNSwgMTIxMjY3LCA0MjcxLCA3ODQxNywgMTI3MDU5LCA2NzY5LCA0MTQxMCwgMTI3MjU3LCA2NDI2MiwgNjc2NywgCi0gICAgNDE0MDcsIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTIwODg2LCAxMjY2MDgsIDcwODMwLCAwLCAKLSAgICA4MzIzMiwgMCwgNjc2NzUsIDk4MzY5NCwgODMyMzQsIDEyMTI1NCwgNjQzMzgsIDI1NjMsIDEzMDMzLCAyNDcsIDgzMjI5LCAKLSAgICAwLCAxMjMzOCwgNDY1MSwgNjczNTUsIDExMjcwLCAwLCA3NDYzMCwgMTE5MzMsIDcwMTA3LCAwLCA0MTkwMywgNDM0NDcsIAotICAgIDExMDAxLCA3MzgyNywgNDIyNTUsIDgzMjQzLCA4MzIzOCwgNjk4MjEsIDQxOTA1LCA2NzM1MCwgMCwgMTA3NzUsIDk3OTMsIAotICAgIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCA0Mjg1MywgCi0gICAgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgNDM3ODIsIAotICAgIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMTg5MjEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIDU4MzIsIAotICAgIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMjAxMjksIDQzMjg2LCAwLCAKLSAgICAxMjgyMTEsIDQzNzc4LCA3NjU3LCA0MTMwNSwgNzExMzIsIDQzNzgxLCAxMTMwMywgNjU1NDcsIDEyODYwOSwgNzAzMSwgCi0gICAgODU5LCAxMjg0ODgsIDgzMjYyLCA4MzIzNywgNjA1OSwgMTI2OTg1LCA1NTIzNSwgMTk0ODE3LCA4NTM1LCAxMjg2MzgsIAotICAgIDY1MTk2LCAxMjUwODQsIDY2MDMyLCAxMTQ4OCwgMTIwNDgxLCAxMjA3ODYsIDQyMjMzLCA2NDE0MCwgOTk0NiwgNzY2NywgCi0gICAgMTk0NzkyLCAxMTgyMiwgMTI4NTkxLCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMjA0ODIsIDcxMjk4LCAwLCAKLSAgICA5ODM0NjEsIDAsIDkwMjgsIDExOTU3MSwgNjkyMzQsIDcxMDYxLCA5MjU0NSwgMTI4NSwgNjQ4ODIsIDQxMjQyLCA3MDA4NiwgCi0gICAgODMxMTEsIDEyNjQwLCA4MzExMiwgNzQwMSwgMCwgMTI2MjUsIDY4MTk4LCAwLCA3MDA4MiwgMzk0MCwgNDE1OTcsIDQzNzU0LCAKLSAgICAzMzk2LCAxMjY0MiwgODY2NSwgOTgzNjEwLCA5ODM2MDksIDEyNjMwLCAxNjUzLCA5MTc4MTUsIDEwMTUzLCAwLCA2MTY2LCAKLSAgICA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIAotICAgIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIAotICAgIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDAsIDk3MjUsIDk4MzQ5MSwgNzg0MzEsIDUyNjMsIDEyODE4LCA3ODQzMCwgCi0gICAgNDE5MzksIDEwMDIyLCA2NTM4NywgNzg0MTksIDQyNzc3LCAxMDEzOSwgOTgwLCA0MzY5OCwgNjUzODYsIDIyMDgsIDY4ODQ4LCAKLSAgICA0MzcwMSwgNDMxOTgsIDcxODQsIDkyNTQyLCAxMjg0MjMsIDEyODg3NSwgMTAwODUsIDc0OTc5LCAwLCA2NzM5NCwgNjYzNCwgCi0gICAgOTIzNzMsIDEyNTA4NSwgODM0MTMsIDgwNzIsIDExOTMyMSwgNDM3MDAsIDAsIDg4NzIsIDc3ODMsIDkxNzk5MSwgMTIzOTgsIAotICAgIDgyMzcsIDAsIDAsIDEyMzk1LCAwLCAxMjY5NzcsIDc0ODkxLCA5OTE0LCAyMjE3LCA5MjMyMywgNzM5NzUsIDYzNjcsIAotICAgIDYzNTEsIDY2Njg4LCA5Mjc0MCwgNjg3NjYsIDAsIDY0NzM1LCA0MTI0MywgOTIxOTksIDc4MDgsIDE4MjksIDEyNjU0MSwgCi0gICAgNDE5MzcsIDQzNTgsIDQzMjcyLCA2MzUzLCAwLCAwLCAxMjA0MjIsIDkzMDQ1LCAxNzEwLCAxMjAxNDAsIDAsIDY1NjA3LCAKLSAgICA2NzIzNCwgNDksIDY2MjcsIDAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgCi0gICAgNjQ0MTgsIDE2NDMsIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAKLSAgICAxMjUxMjQsIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIAotICAgIDcwODI0LCA5ODg2LCA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCAKLSAgICA3ODY4NSwgNzY4MCwgMCwgNjU0NTgsIDEyMDcxNCwgMTI2MzksIDMzODAsIDgxMjMsIDEwOTEsIDEyNjM4LCA3OTc3LCAKLSAgICA0NTAxLCA0MTA5OSwgMCwgNjYzMDksIDEyMDE0MSwgOTI3NTgsIDE0OTQsIDExMzcxNiwgMTI2NjEzLCAwLCAxMTY5MywgCi0gICAgNzEyNTUsIDEwNDk0LCA5MjY1NSwgNjU4NzIsIDEyMzYzLCAxMTM4NiwgMTEzNzI3LCAwLCAwLCA3ODc3MSwgNjQ1ODIsIDAsIAotICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTIwOTg5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAotICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMjA3MDksIDcyMDgsIDY2NDQyLCAKKyAgICA5MjIzMSwgNzQ3NjEsIDY0MzIzLCAxMjczMzUsIDc0MTAyLCAyMjY2LCAxMTEzMiwgMzEwLCAxMjA5MjQsIDQxMjgxLCAKKyAgICAxMDk3NiwgMTAxMDY5LCA3MTMyNSwgMTI1Mjc5LCA3NDI2NiwgMTAwNTQsIDY0OTcsIDg1NzQsIDEwMTA4NywgOTAxMiwgCisgICAgMTk5NTgsIDc0NDIwLCA2NTA4OSwgMTMyMTUsIDEyNzMwLCA2NTE2MywgNjQyNjAsIDM3NCwgNDMxOTUsIDgxNiwgOTI3ODMsIAorICAgIDAsIDgzMTkxLCA0MTkzNCwgNzQ2NSwgNzQ2MTUsIDkyNzUyLCA3MDY2NiwgNDcxNSwgNjEwMSwgNzEwODksIDQxOTM2LCAKKyAgICA4Mjk2NywgNDg3OSwgNDM5NjUsIDY1NDQ2LCAwLCAzMDcsIDEyNzE0NywgOTU4NSwgNTM3NCwgMTI3OTYyLCAxMjgwNTksIAorICAgIDEwMDQ3MiwgMTI5MTg5LCAxMDA0NzEsIDEyMDM5MCwgNzA3MjcsIDY1NTY3LCAxMDA5NjQsIDE5MjksIDEyMDk4NCwgCisgICAgMTIxNDIsIDE5NDY5NiwgMTIyMzYsIDQxNDE5LCAxOTQ2MTgsIDEyMDYxMCwgMTI5ODIsIDc1MDAzLCA1Mzc4LCA3NTAwNCwgCisgICAgMTIwOTU3LCA0MTQyMSwgNzUwMDUsIDQ0NjIsIDAsIDEyNjU5OSwgMTI4MDkyLCA4MjEsIDEyNTAzMCwgMjQ5OCwgNTgwMCwgCisgICAgMTAwODM0LCA2Nzc1OCwgMTc2MCwgMjQyMSwgNDQ2OSwgMjMyNCwgODI4LCAzNjExLCA3ODQwMCwgNzU3LCAxMTg1LCAKKyAgICAxMjgyNzQsIDc4NzcwLCA0MzU5NywgMTA2MjgsIDc0ODA4LCA2ODg0OSwgNzk5OSwgNDM5NzEsIDExMjE3LCAxMDA4NDksIAorICAgIDEwNjM0LCAxMDk0MiwgNzcxMywgMjM0OCwgMCwgNjQzNzQsIDQzODAsIDEyODI4NCwgODMwNjEsIDk5ODIsIDY0MzI0LCAKKyAgICA0MTI0MCwgODYyLCA2NDQ2OCwgNzg0NjIsIDE4MTAsIDM2NzMsIDUxMzcsIDE5NDYxNywgMTIwNDgxLCA3Mjc3LCA2NTYyMiwgCisgICAgNjUwNjksIDc1NjYsIDY0Njg4LCA2NzE0MywgMTk0NTkyLCA3NDk1NywgNDM5MTIsIDEwMDgyNSwgNDc0OCwgOTIyMjgsIAorICAgIDEwMDgyNiwgMTAwODI5LCA0MjI2MCwgNTg3MSwgMTE5MDc1LCAxMjEyNzgsIDc0NTc2LCA0NDAxOSwgMTk0NzIwLCAKKyAgICAxMjgxODksIDM5NjcsIDcxMDk4LCAxMzEzNywgODc3NSwgMTI3OTQ1LCAwLCAyOTYzLCA5MTc3ODUsIDg0MTAsIDQ0NTQsIAorICAgIDcyMywgODMwODQsIDk2NiwgNDQ0OSwgOTIzMzAsIDkyMjM4LCA3NTAyMiwgNzgxOSwgMjMyMCwgMTI5MzEyLCAzMzksIAorICAgIDQ5NjgsIDE5NDU5MCwgMTIwMzk5LCA4MDc1LCA1NTI3NiwgODMwNTcsIDgwNDcsIDE5NTA1MCwgNzg4MjcsIDEyNjM0LCAKKyAgICA0MTU0MiwgNzg3ODAsIDc0NjYsIDY3MDUsIDEyMTc0LCA0MjYxMCwgMTI0OTM0LCA3NDQ1MiwgMTIwNDgyLCAxNTg0LCAKKyAgICA2NjY0NSwgNjA0NSwgNjcyOSwgNzg0MTcsIDY1MjE4LCAxMTU1OSwgMTk0OTgzLCA3ODA2MiwgNzUzNywgMTI0OTkxLCAKKyAgICAxMTM3MCwgMTI1MDkzLCAxMDMzMCwgNzg3OTgsIDEwMzk0LCA5MjIzNiwgNzQxOTQsIDEwMDgwOCwgMTI3OTI5LCA5NzgwLCAKKyAgICAwLCAxMTExNywgNzQ5OTMsIDc3OTUwLCA2NzA5MSwgNzA3NCwgOTI2NDgsIDE5NDU3OSwgMTAwNDk1LCAxMTQxNCwgNjg3ODEsIAorICAgIDI1MzEsIDEzMDM0LCAxMDA4MTksIDEyODUyMywgNDIxMSwgMTI1OSwgNzUxNywgNzA4NjYsIDcwMTk4LCA4MzEyMiwgCisgICAgNDA5OTYsIDEzMDM3LCA3MDkyLCA2NDEsIDUyMTksIDgzMTI1LCAxOTQ1NjYsIDExMDY0LCA0MTEyOSwgMTAwNDk2LCAKKyAgICA0Mjg1MCwgMTMwMzUsIDkwNzUsIDkyMzg3LCA1NDY2LCA3NDI5MywgNzQ1MzAsIDY0MDk4LCA2NTc5MywgNDUzNSwgCisgICAgMTAwNDkxLCA0MjcxLCA3Mjg4MSwgMTAwNzk4LCA2NzY5LCA0MTQxMCwgMTAwNzk5LCA2NDI2MiwgNjc2NywgNDE0MDcsIAorICAgIDY2MjczLCA5MTc4MTYsIDY3NTUsIDExODg2NCwgOTA0NiwgMTAxMDg2LCA3MjgwMywgNzA4MzAsIDAsIDgzMjMyLCAwLCAKKyAgICA2NzY3NSwgOTgzNjk0LCA4MzIzNCwgMTAwNTM0LCA2NDMzOCwgMjU2MywgMTMwMzMsIDI0NywgODMyMjksIDEwMDc5MSwgCisgICAgMTIzMzgsIDQ2NTEsIDY3MzU1LCAxMTI3MCwgMCwgNzQ2MzAsIDExOTMzLCA3MDEwNywgMCwgNDE5MDMsIDQzNDQ3LCAKKyAgICAxMTAwMSwgNzM4MjcsIDQyMjU1LCA4MzI0MywgODMyMzgsIDY5ODIxLCA0MTkwNSwgNjczNTAsIDEwMDgwNiwgMTA3NzUsIAorICAgIDk3OTMsIDUwMDksIDEyODc3NCwgNDIyNjksIDY0NTg3LCA5ODMwNjMsIDQyNTM1LCA2OTgxMiwgNjQ1MjksIDQxNDA4LCAKKyAgICA0Mjg1MywgMzg3NywgMTIwNzk1LCA0MjY3NCwgODE0NywgNDM1NjYsIDExOTAyMSwgNjczNDIsIDEwMjM2LCA2NTkxOCwgCisgICAgNDM3ODIsIDc4NzY5LCA3ODA2MCwgNjQ1MDYsIDY5NjUyLCAxMDA3ODEsIDQ3NDcsIDgzMjUxLCA2OTg0NCwgNDMyMDAsIAorICAgIDU4MzIsIDcxMjA4LCA4MzI1MCwgNTE0MSwgNDI2MDAsIDcxODY2LCA0MzIwMywgMTI3MjA4LCAxMDA1NDEsIDQzMjg2LCAKKyAgICAxMjY0OTQsIDEyMDc4OSwgNDM3NzgsIDc2NTcsIDQxMzA1LCA3MTEzMiwgNDM3ODEsIDExMzAzLCA2NTU0NywgMTI4NjA5LCAKKyAgICA3MDMxLCA4NTksIDkyMzEzLCA4MzI2MiwgODMyMzcsIDYwNTksIDEyNjk4NSwgNTUyMzUsIDE5NDgxNywgODUzNSwgCisgICAgMTI4NjM4LCA2NTE5NiwgMTIyOTEwLCA2NjAzMiwgMTE0ODgsIDcyODM4LCAxMDA3ODgsIDQyMjMzLCA2NDE0MCwgOTk0NiwgCisgICAgNzY2NywgMTAwNTQ5LCAxMTgyMiwgMTI4MzQ5LCAxMTEzNSwgOTgzNjAwLCAwLCAxNzg4LCAxNTc5LCAxMDA1MDcsIDcxMjk4LCAKKyAgICAwLCA5MTc1MzcsIDk4MzgzOSwgOTAyOCwgMTE5NTcxLCA2OTIzNCwgNzEwNjEsIDkyNTQ1LCAxMjg1LCA2NDg4MiwgNDEyNDIsIAorICAgIDcwMDg2LCA4MzExMSwgMTI2NDAsIDgzMTEyLCA3NDAxLCAxMDA3NjcsIDEyNjI1LCA2ODE5OCwgODMxODQsIDcwMDgyLCAKKyAgICAzOTQwLCA0MTU5NywgNzI5NiwgMzM5NiwgMTI2NDIsIDg2NjUsIDk4MzYxMCwgMTIwMjA4LCAxMjYzMCwgMTY1MywgCisgICAgMTAwNTY3LCAxMDE1MywgMTAwNzc3LCA2MTY2LCA3MDgyNSwgMTE4OTg5LCAxMjk0MDksIDg4MTUsIDY2NjczLCA2NTA0NiwgCisgICAgOTI4NSwgOTEzLCA0MjI1OSwgMTExODAsIDExOTMxOCwgMjE0MiwgNjg0NTQsIDQyNDg1LCA5NDAxMiwgNzg3OCwgODIxMSwgCisgICAgNDIyOTMsIDY0Mzc3LCAxMjA0NzgsIDkyNjQzLCAxMjExMTgsIDE5NDY3MywgMTIwMzIsIDEwMDc3MSwgOTcyNSwgMTAwNzczLCAKKyAgICA3ODQzMSwgNTI2MywgMTI4MTgsIDc4NDMwLCA0MTkzOSwgMTAwMjIsIDY1Mzg3LCA3ODQxOSwgNDI3NzcsIDEwMTM5LCA5ODAsIAorICAgIDQzNjk4LCA2NTM4NiwgMjIwOCwgNjg4NDgsIDQzNzAxLCA0MzE5OCwgNzE4NCwgOTI1NDIsIDEyODQyMywgMTAwNTI3LCAKKyAgICAxMDA4NSwgNzQ5NzksIDAsIDY3Mzk0LCA2NjM0LCA5MjM3MywgMTI1MDg1LCA4MzQxMywgODA3MiwgMTAwNzUyLCA0MzcwMCwgCisgICAgMTI4MjAyLCA3MzA0LCA3NzgzLCA5MTc5OTEsIDEyMzk4LCA4MjM3LCAxOTQ4OTMsIDAsIDEyMzk1LCAxMjAyNzksIAorICAgIDEyNjk3NywgNzQ4OTEsIDk5MTQsIDIyMTcsIDkyMzIzLCA3Mzk3NSwgNjM2NywgNjM1MSwgNjY2ODgsIDkyNzQwLCA2ODc2NiwgCisgICAgOTgzODQ4LCA2NDczNSwgNDEyNDMsIDkyMTk5LCA3ODA4LCAxODI5LCAxMjY1NDEsIDQxOTM3LCA0MzU4LCA0MzI3MiwgCisgICAgNjM1MywgMCwgMCwgMTIwNDIyLCA5MzA0NSwgMTcxMCwgMTIwMTQwLCAwLCA2NTYwNywgNjcyMzQsIDQ5LCA2NjI3LCAKKyAgICA5ODMxMjAsIDYyNTgsIDEwNjgzLCA3ODY3MiwgOTc0MSwgNzgzMjksIDU2NDksIDc4NDQxLCA0MzQ0MywgNjQ0MTgsIDE2NDMsIAorICAgIDY1MjEzLCA4NDA1LCAzNDcwLCA2NzI0NCwgMTMyMTMsIDQyNDUyLCA3ODMzMSwgNzgwMTMsIDc4NDQ1LCAxMjUxMjQsIAorICAgIDEwNzIsIDc4NDU3LCA3ODQ1MiwgNzg0NTQsIDY1NzYsIDQxOTg4LCA0MTEzMiwgNjU2NzUsIDEwODAsIDcwODI0LCA5ODg2LCAKKyAgICA1NTIyNSwgMTEwMSwgNjg0MDQsIDEyMzA5LCA1NTIyNywgNzEwODIsIDEyNjMyLCAxMDg2LCAxODY5LCA3ODY4NSwgNzY4MCwgCisgICAgMTAxMDkzLCA2NTQ1OCwgMTIwNzE0LCAxMjYzOSwgMzM4MCwgODEyMywgMTA5MSwgMTI2MzgsIDc5NzcsIDQ1MDEsIDQxMDk5LCAKKyAgICAwLCA2NjMwOSwgMTIwMTQxLCA5Mjc1OCwgMTQ5NCwgMTEzNzE2LCAxMjY2MTMsIDAsIDExNjkzLCA3MTI1NSwgMTA0OTQsIAorICAgIDkyNjU1LCA2NTg3MiwgMTIzNjMsIDExMzg2LCAxMTM3MjcsIDEyODc4OSwgMCwgNzg3NzEsIDY0NTgyLCAxMDEwOTgsIAorICAgIDczNzk0LCA2NzM5NSwgODAyMiwgMTAxMDk5LCAxMjA0NjIsIDc0MTA2LCAxMjQxMywgNjY4ODMsIDkxNzk5NCwgOTMwMzUsIAorICAgIDc1MDA3LCA1NTcwLCAxODgxLCA3MjEwLCAxMjA0MjUsIDEwMTIsIDQzNzUyLCAwLCAxMDEwOTQsIDcyMDgsIDY2NDQyLCAKICAgICA1NTY5LCAxOTUwMDcsIDQyMzM5LCA5Mjk5NywgNjA2MywgNjc4ODgsIDY5OTgxLCAxMTk1OTQsIDYwNTMsIDY1NjAyLCAwLCAKLSAgICA5MjIwMSwgNjQ3MjcsIDkxNjAsIDcwMzAxLCAwLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgMzg3MCwgCi0gICAgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIDk4MzExNiwgMCwgCi0gICAgNzQ5NjEsIDc4MzMzLCAxMjAxMTcsIDEyMDExOCwgMTIwMDk5LCA5MjM4NSwgNjUwODcsIDU1NzEsIDM2NzQsIDk3NDAsIAotICAgIDkxMjEsIDU1NjgsIDcxNDY0LCAxMjAxMDgsIDQyMDg1LCAxMDEwNywgNDIxNTksIDQyODcwLCAxMTM3MDAsIDU4OSwgNzA1MCwgCi0gICAgOTgzODAwLCA0MzI4MSwgMTAyMzMsIDQxMjYzLCA2NjI1MSwgNjU3MjksIDY2MjUzLCAxMjY0OTcsIDc0MDk5LCA0MjY0NSwgCi0gICAgOTIzMzEsIDEyMTM1OCwgODU4MywgMTIxMTIzLCA1ODQ3LCA2OTI4LCAxMjgwNzQsIDAsIDAsIDAsIDAsIDY2NTkyLCAKLSAgICAxMjIwNCwgOTE3OTYyLCAxOTk2NiwgNzc4NTYsIDQyNTYxLCAxMjA2MjYsIDEyOTE3MCwgNjY4NTQsIDgxMjAsIDcwMzExLCAKLSAgICAxOTQ1ODUsIDAsIDcwMzA4LCA0MTA2MywgMTIwNDE3LCAxMDY2NCwgMCwgODM2OSwgMCwgNDU1MSwgMTk0OTY0LCAzMzY5LCAKLSAgICA3NDk3MSwgMTIxMDk0LCA5NjczLCA2NjMzNCwgNjU1ODAsIDEwNDc4LCAxMTg5NjAsIDEyNTE3LCA1NTcsIDk0NTcsIAotICAgIDEyMDM0LCA2ODQ5NiwgNjM1NSwgMTI1MTksIDQxMDA0LCAwLCA3NDkzNywgNzQwOTQsIDkxNzg4OCwgMTI1MDYwLCA3Nzk3MCwgCi0gICAgOTIxNzEsIDEyNzIxOSwgMTI4MTc1LCAxMjExMSwgMzkyNywgMCwgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCAKLSAgICA5MjI4MSwgMTA0NDEsIDczODM2LCAwLCA0Mzk5MCwgNTQ5MywgMCwgNzQzMTksIDAsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgCi0gICAgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIAotICAgIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgOTE3NTgyLCAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDAsIAotICAgIDEwNTE0LCA2NTUxNywgNzQzOTUsIDI3MDcsIDgzMDksIDAsIDEyNzA1NCwgNzgzOTgsIDQzNTcwLCAyNjk3LCA0MzQyMCwgCi0gICAgNzgzOTYsIDY4MjQ3LCAyNjk1LCA0MjE3MSwgNzA4MDksIDY4MzM0LCAwLCA2NzYxNywgMTE4OTcxLCAwLCAyNjkzLCAKLSAgICAxMjEyNSwgMTI3NjYsIDEyMDQwOSwgMTE2NCwgMTEzNzI5LCA3MDI4MywgNDE5MTgsIDc3ODQ5LCA2NzE1MCwgODY4NywgCi0gICAgNjYwMDksIDEyMTc4LCA3MDUzLCA5MjU0MCwgNzQ2OSwgMCwgNTI0OCwgMTIyMTgsIDY5OTg4LCA2NDI3LCA0Mjg4NCwgCi0gICAgNDExMjMsIDExMTc2LCAwLCA0Mjg3MywgNDExMjYsIDk5OTEsIDQxMTI4LCA3NDM3MSwgMTI3MDMxLCA5ODM5MzIsIDk4NzMsIAotICAgIDAsIDQyODc3LCA3OTk0LCA2NDc2MiwgMjA1MywgNDI4NDMsIDY1OTEsIDkzNDAsIDEyODg0MSwgMTU4OSwgMTI4NjkxLCAKLSAgICAyOTYsIDY3NzEyLCA3ODg1MiwgMTIxNDA5LCA2Nzg0MSwgNzQzNzAsIDEyODUwNCwgODkyMiwgMTI4MDY4LCA0MzgyOSwgCi0gICAgMTI3MDAsIDc0ODM2LCAwLCAxMjU3OSwgMCwgMTI1NzUsIDY0MTYsIDU2NTYsIDI4OTEsIDEzMjYyLCA2NTU5MCwgNTI5OSwgCi0gICAgNzg4MzcsIDExNDczLCA1NDQ5LCAxMjUyLCAxMjczMjgsIDc4NDA0LCA0MTQzMSwgNzQzNjksIDY1MzczLCA1Mjk1LCAKLSAgICA5MTc1NjksIDY4MzIwLCAxMjIzLCAxNjQyLCAxNzQsIDc4Mzk5LCA4ODMsIDQxNjEsIDEyNjkxLCA0MjYwMywgNDE0MTMsIAotICAgIDMyMTIsIDQxNDU5LCAzMjExLCA3NDgxMCwgNDE0MjUsIDc0NTk4LCA3ODQxMiwgNzQ0NTAsIDk3MjgsIDM4NDYsIDgwNzAsIAotICAgIDYxNTAsIDY2MzYsIDQzNzAsIDEyODYxOSwgMTI5MTU4LCA3NDE3OCwgNzQ1ODcsIDc0MTE3LCAxOTUwOTQsIDAsIDExMzc0OCwgCi0gICAgNDk4NiwgMTIxODksIDEyNzUxMiwgNjc2NDgsIDEyMDQ5OSwgOTQwMDEsIDQyNTcsIDEyMTA0LCA3MTE3NiwgNjIyMCwgCi0gICAgOTAwNCwgNjU1NjEsIDk4Mzg4MSwgNzc5NDksIDAsIDY4MTM1LCA5MTc1NzYsIDc3OTQ2LCA4MzQ1MywgNjk2NzksIDY5Njg0LCAKLSAgICA5ODkwLCA3ODU2MSwgMTI5NzEsIDc4NDUzLCA5MjU1NiwgNzM4OTgsIDExOTc5LCA3MDA1MSwgNzE4OTcsIDgzNDUxLCAwLCAKLSAgICA5NjM1LCAxMjYwMCwgODg3MSwgNjczNjYsIDY4NDkxLCAwLCA2NDY5LCA3NDIyNywgMTE4OTAwLCA2NTMwNCwgNDY3OSwgCi0gICAgMTAyMzAsIDY0MzAwLCA2NDg2NywgMzQyNywgNDI0MCwgNjczNzYsIDY3Mzc1LCA2NzM3NCwgNjczNzMsIDQyOTE2LCAKLSAgICAxMjkxNTUsIDEyODI3OSwgNjczNzcsIDcyODIsIDc4NzI4LCA2NTczMywgNDQ0NSwgNjczNzIsIDY3MzcxLCAzNDk0LCAKLSAgICA2NzM2OSwgNjU1NSwgMTI5MTQ4LCA3Nzk3NiwgMCwgMCwgNzg1NjYsIDAsIDk4MzE4OSwgNjU4OTgsIDk4MzI0NiwgNjUzMTIsIAotICAgIDU0NDcsIDAsIDEyODk1LCA2NTU5MywgNDAxMCwgODMxNTQsIDQxMTA2LCA3NDM1NywgNjQ0NDgsIDkzOTk0LCA0MTEwNSwgCi0gICAgNzQxMTQsIDY1ODIwLCA2MjMyLCA2ODIzMywgMTI2NjI1LCAwLCA0MzYwOCwgMTE5MDkxLCA3ODExOCwgNjUzOCwgNDMzNSwgCisgICAgOTIyMDEsIDY0NzI3LCA5MTYwLCA3MDMwMSwgMTk1MDcxLCA5MjkwNSwgOTIxODAsIDEwNTAzLCA3MDM4NywgMzQyMywgCisgICAgMzg3MCwgNDI3OSwgODQ5MCwgMTIwMTE0LCA0MzE5LCA2NDc4NiwgODYwMiwgMTIwMTEwLCAxMTMyNiwgOTIyMDQsIAorICAgIDk4MzExNiwgMTIxMDg0LCA3NDk2MSwgNzgzMzMsIDExOTEzMiwgMTIwMTE4LCAxMjAwOTksIDkyMzg1LCA2NTA4NywgNTU3MSwgCisgICAgMzY3NCwgOTc0MCwgOTEyMSwgNTU2OCwgNzE0NjQsIDEyMDEwOCwgNDIwODUsIDEwMTA3LCA0MjE1OSwgNDI4NzAsIAorICAgIDExMzcwMCwgNTg5LCA3MDUwLCA5ODM4MDAsIDQzMjgxLCAxMDIzMywgNDEyNjMsIDY2MjUxLCA2NTcyOSwgNjYyNTMsIAorICAgIDEyNjQ5NywgNzQwOTksIDQyNjQ1LCA5MjMzMSwgMTIxMzU4LCA4NTgzLCAxMjExMjMsIDU4NDcsIDY5MjgsIDEyODA3NCwgMCwgCisgICAgMCwgMCwgMCwgNjY1OTIsIDEyMjA0LCA5MTc5NjIsIDE5OTY2LCA3Nzg1NiwgNDI1NjEsIDEyMDYyNiwgMTI5MTcwLCAKKyAgICA2Njg1NCwgODEyMCwgNzAzMTEsIDEyOTE1NCwgMCwgNzAzMDgsIDQxMDYzLCAxMjA0MTcsIDEwNjY0LCAwLCA4MzY5LCAKKyAgICAxMjgyNzgsIDQ1NTEsIDEyMjkxMiwgMzM2OSwgNzQ5NzEsIDEyMTA5NCwgOTY3MywgNjYzMzQsIDY1NTgwLCAxMDQ3OCwgCisgICAgMTE4OTYwLCAxMjUxNywgNTU3LCA5NDU3LCAxMjAzNCwgNjg0OTYsIDYzNTUsIDEyNTE5LCA0MTAwNCwgMCwgNzQ5MzcsIAorICAgIDc0MDk0LCAxMjQ5NDgsIDEwMDQ3OCwgNzc5NzAsIDkyMTcxLCAxMjcyMTksIDEyNTI1NCwgMTIxMTEsIDM5MjcsIDExOTg4MCwgCisgICAgMTI1MTUsIDE0NzQsIDY3ODkzLCA1NDkyLCA2OTIzLCA5MjI4MSwgMTA0NDEsIDY2Nzk4LCA5ODM4MzEsIDQzOTkwLCA1NDkzLCAKKyAgICA5ODM2MTgsIDcxMTMwLCA5MTc3NjYsIDY2NjM1LCAxMjAxOSwgMCwgMTYxOCwgMCwgMTIwNDc0LCA5NjQ1LCAxMDQzMCwgCisgICAgMTI2NjM2LCA1ODUzLCAxMzA2MywgMTAzNjMsIDk4Mzg5OCwgMTI5NTYsIDExMzY2NiwgMTIwNzI5LCAxMTMxNCwgMTI1MjcxLCAKKyAgICAxMjA2MCwgMTI4NjQ4LCA3ODM5MiwgMTI4MjYsIDYzMjksIDE5NTA5NywgMTA1MTQsIDY1NTE3LCA3NDM5NSwgMjcwNywgCisgICAgODMwOSwgMCwgMTI3MDU0LCA3ODM5OCwgNDM1NzAsIDI2OTcsIDQzNDIwLCA3ODM5NiwgNjgyNDcsIDI2OTUsIDQyMTcxLCAKKyAgICA3MDgwOSwgNjgzMzQsIDk4MzQ0NCwgNjc2MTcsIDExODk3MSwgMCwgMjY5MywgMTIxMjUsIDEyNzY2LCAxMjA0MDksIDExNjQsIAorICAgIDExMzcyOSwgNzAyODMsIDQxOTE4LCA3Nzg0OSwgNjcxNTAsIDg2ODcsIDY2MDA5LCAxMjE3OCwgNzA1MywgOTI1NDAsIAorICAgIDc0NjksIDcyNzk1LCA1MjQ4LCAxMjIxOCwgNjk5ODgsIDY0MjcsIDQyODg0LCA0MTEyMywgMTExNzYsIDAsIDQyODczLCAKKyAgICA0MTEyNiwgOTk5MSwgNDExMjgsIDcwNzAzLCAxMjcwMzEsIDEyNjUwOCwgOTg3MywgMCwgNDI4NzcsIDc5OTQsIDY0NzYyLCAKKyAgICAyMDUzLCA0Mjg0MywgNjU5MSwgOTM0MCwgMTI4ODQxLCAxNTg5LCAxMjg2OTEsIDI5NiwgNjc3MTIsIDc4ODUyLCAxMjE0MDksIAorICAgIDY3ODQxLCA3MTMxNCwgMTI4NTA0LCA4OTIyLCAxMjgwNjgsIDQzODI5LCAxMjcwMCwgNzQ4MzYsIDAsIDEyNTc5LCAwLCAKKyAgICAxMjU3NSwgNjQxNiwgNTY1NiwgMjg5MSwgMTMyNjIsIDY1NTkwLCA1Mjk5LCA3MDczMiwgMTE0NzMsIDU0NDksIDEyNTIsIAorICAgIDEyNzMyOCwgNzg0MDQsIDQxNDMxLCA3NDM2OSwgNjUzNzMsIDUyOTUsIDkxNzU2OSwgNjgzMjAsIDEyMjMsIDE2NDIsIDE3NCwgCisgICAgNzgzOTksIDg4MywgNDE2MSwgMTI2OTEsIDQyNjAzLCA0MTQxMywgMzIxMiwgNDE0NTksIDMyMTEsIDc0ODEwLCA0MTQyNSwgCisgICAgNzQ1OTgsIDc4NDEyLCA3NDQ1MCwgOTcyOCwgMzg0NiwgODA3MCwgNjE1MCwgNjYzNiwgNDM3MCwgMTI4NjE5LCAxMjkxNTgsIAorICAgIDc0MTc4LCA3NDU4NywgNzQxMTcsIDE5NTA5NCwgMCwgMTEzNzQ4LCA0OTg2LCAxMjE4OSwgMTE5NTk5LCA2NzY0OCwgCisgICAgMTIwNDk5LCA5NDAwMSwgNDI1NywgMTIxMDQsIDcxMTc2LCA2MjIwLCA5MDA0LCA2NTU2MSwgOTgzODgxLCA3Nzk0OSwgMCwgCisgICAgNjgxMzUsIDkxNzU3NiwgNzc5NDYsIDgzNDUzLCA2OTY3OSwgNjk2ODQsIDk4OTAsIDc4NTYxLCAxMjk3MSwgNzg0NTMsIAorICAgIDkyNTU2LCA3Mzg5OCwgMTE5NzksIDcwMDUxLCA3MTg5NywgODM0NTEsIDEyNzE4NywgOTYzNSwgMTI2MDAsIDg4NzEsIAorICAgIDY3MzY2LCA2ODQ5MSwgMCwgNjQ2OSwgNzQyMjcsIDExODkwMCwgNjUzMDQsIDQ2NzksIDEwMjMwLCA2NDMwMCwgNjQ4NjcsIAorICAgIDM0MjcsIDQyNDAsIDY3Mzc2LCA2NzM3NSwgNjczNzQsIDY3MzczLCA0MjkxNiwgMTI5MTU1LCAxMjc0ODksIDY3Mzc3LCAKKyAgICA3MjgyLCA3ODcyOCwgNjU3MzMsIDQ0NDUsIDY3MzcyLCA2NzM3MSwgMzQ5NCwgNjczNjksIDM0MTYsIDEyOTE0OCwgNzc5NzYsIAorICAgIDE5NTAxMCwgOTgzMTkyLCA3ODU2NiwgMCwgMTI3MDQ3LCA2NTg5OCwgOTgzMjQ2LCA2NTMxMiwgNTQ0NywgMTAwODk1LCAKKyAgICAxMjg5NSwgNjQzODIsIDQwMTAsIDgzMTU0LCA0MTEwNiwgNzQzNTcsIDY0NDQ4LCA5Mzk5NCwgNDExMDUsIDcwNjc3LCAKKyAgICA2NTgyMCwgNjIzMiwgNjgyMzMsIDEwMTEwNCwgMTAxMTAzLCA0MzYwOCwgMTAxMTA1LCA3ODExOCwgNjUzOCwgNDMzNSwgCiAgICAgNzgzNjQsIDM5NDEsIDQxMTIyLCAxMTA2MSwgNzgzNjMsIDY0ODkyLCA5MTEzLCAxOTU0LCAxMjE1NSwgOTgzNjc0LCAKLSAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI4NjY3LCAwLCA3MDc4OSwgNjczMzMsIAotICAgIDExOTIzMCwgNDU4NiwgMCwgMzUwLCAxMDk1MSwgMCwgNTA5LCA2NzMzNiwgOTgzODc5LCA5MjMwNywgMCwgMCwgNTEzMywgCi0gICAgNjczODIsIDAsIDk1MDAsIDAsIDQ5NTcsIDY0NzQxLCAyNDIyLCAyMjEyLCA5ODMwODAsIDY3MzgxLCA2NzM4MCwgMjQ5NiwgCi0gICAgMTE1MTYsIDk0NCwgNjc4MTcsIDM4OTAsIDEyMTY4LCAxNDM4LCA2NzgxMywgNjgzMzUsIDcwMDAzLCA0MTk0NywgMTIyMCwgCi0gICAgMTIwODI4LCA3NDk0NiwgNzA4NTQsIDc0MDU4LCAxNTcxLCA0MjYzMCwgNDE5NDksIDQyODA1LCA4MjcwLCA5NDMsIDU2NCwgCi0gICAgMCwgMzEyLCA0MTk4MCwgOTgzOTQ0LCAxMjgyOTUsIDcwNzk3LCA4ODc3LCAyNjksIDQ0MjksIDYyNzIsIDk2MTcsIDE0NjAsIAotICAgIDY5NTQsIDc4NjU3LCA0MTEyMCwgNjUxMjEsIDEwODYyLCA2MDYwLCA0MTExOSwgNDE0MTYsIDc0MzU1LCA0MTczLCAwLCAKLSAgICA4Mjk0OCwgMCwgMTkwNiwgMTIxMTY5LCAxMTUzMiwgNzQwNzMsIDEyNzMzOCwgMCwgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIAotICAgIDY0Mjg3LCAxMjg0MDYsIDc4MTE1LCAxMTQyOCwgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDAsIDY4MDg4LCAKLSAgICA3NzAzLCA4ODQwLCA4MDM1LCAxMjA3MTEsIDAsIDkyMjMwLCA5ODMzNTcsIDYxMjksIDEyODQzNywgNzg1ODYsIDEyODI2OCwgCi0gICAgMCwgNzg3NCwgODY4MSwgMTE5MDkyLCAxMTIwNiwgMTMxMzYsIDAsIDAsIDcwMTAyLCA2Mzg4NiwgNzA0NTAsIDk2MDUsIAotICAgIDcxMzA4LCAxMzIyMCwgNjczNDgsIDY3MzU0LCA1NTE0LCA3NDk2MCwgOTIyOCwgNjczNDksIDY3MzU2LCA2NzM0NiwgNTI0MCwgCi0gICAgOTgxMSwgMTAwMTIsIDMwOTYsIDAsIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDAsIDEyODE3OSwgMCwgOTUwMSwgMTIwODMyLCAKLSAgICAxMjcyLCA2NDUzNiwgNjU0NjUsIDY0NjU0LCA3NDY3LCAwLCAxNDY3LCAxMDE1OCwgMTAwNDAsIDAsIDk1MTksIDY4NzU5LCAKLSAgICA3MDMxMiwgMTk1MDg1LCA2ODgyMCwgMTIxOTMsIDcwNDAwLCAxMjcyNDAsIDEyMTM3MywgMCwgOTgzMzU1LCAxOTkzNSwgCi0gICAgMTIwNzMzLCA5MjE2MiwgNjg4MDEsIDEyNzk1NSwgODMxMzMsIDkzMDU3LCA1Mjc1LCAxMjAxOTUsIDEyODYzMiwgODYzNywgCi0gICAgNDM2ODIsIDAsIDM3ODksIDYzODgwLCAxMTQ3MSwgNDM1NTQsIDY1ODYyLCAxMTQ3NCwgNjYzMzIsIDY2NjAzLCA2ODc4NCwgCi0gICAgMjQyNiwgMTIwNDIsIDkyMTk0LCA5ODM5MTEsIDk1MzcsIDM5NjEsIDEyMTE1LCA3Nzk1MywgMjYwNSwgNDUwMCwgNjQ1NjEsIAotICAgIDU1MjI0LCA0OTgxLCA3NDY0NCwgMCwgNDE2NDYsIDExNjY3LCA0MjY4NiwgNzQ5OTEsIDQyMzYyLCA2NDY4NiwgNDQ5OSwgCi0gICAgNDE2NDksIDc1ODksIDEyODc3NiwgMCwgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAKLSAgICAwLCA5ODM4MTQsIDk0MDU2LCAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIAotICAgIDQxOTQ1LCA3MTMyLCA0MTk0MSwgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgCi0gICAgMTA3NjIsIDQzNzgwLCAxMjk5OSwgMTE5MjQ1LCAxMjg0OTQsIDgxMDYsIDQxMjgsIDAsIDYyNzQsIDQ0OTQsIDk4MzA4MiwgCi0gICAgNDAxMiwgMTAzOTUsIDk4MzU5MSwgNDM2MzMsIDY1NDQ3LCA3ODI2MCwgMTIwOTczLCAxMTAwNCwgNjk1LCA3MzksIDY5NiwgCi0gICAgNzYxMSwgMTIxMDczLCA0Mjc1NSwgNzQ4MDIsIDkyMjcsIDc1MDYsIDc1MTAsIDY5OTM3LCA2OTEsIDczOCwgNzUxMSwgCi0gICAgNzUxMiwgNzUxNSwgMzg2OCwgNjg4LCA0MTg0NywgNjkwLCAyNTQ4LCA3MzcsIDk3NCwgODAwMywgNzQwNiwgMTI3MzUzLCAKLSAgICAxMjAxNjYsIDEyODY4OCwgMzk4NSwgNjY0MjUsIDY1ODYwLCA0MTg1MSwgNzA1MSwgNjk3NzcsIDQ2ODIsIDcxODczLCAKLSAgICAxMjgwOSwgNjQwNiwgNDY4NSwgOTI1MDUsIDEwODc5LCAxMDM0NywgNDY4MCwgNjM0MSwgMCwgMzg1MSwgODEzMiwgNzQzMjUsIAotICAgIDExOTI2MywgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIAotICAgIDc2NDMsIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIAotICAgIDc2NDcsIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCAwLCAyMzM3LCAKKyAgICA0Mjg3OCwgMTE1MDAsIDY3NDA1LCAxMjgxNTIsIDc0NTc4LCAwLCA2NTgzMiwgMTI2OTc4LCAwLCA3MDc4OSwgNjczMzMsIAorICAgIDExOTIzMCwgNDU4NiwgMTk0OTIyLCAzNTAsIDEwOTUxLCAxMDEwODEsIDUwOSwgNjczMzYsIDEwMDkwNCwgOTIzMDcsIAorICAgIDEwMDkwMywgMCwgNTEzMywgNjczODIsIDEyODgyNywgOTUwMCwgMTAwOTA2LCA0OTU3LCA2NDc0MSwgMjQyMiwgMjIxMiwgCisgICAgOTgzMDgwLCA2NzM4MSwgNjczODAsIDI0OTYsIDExNTE2LCA5NDQsIDY3ODE3LCAzODkwLCAxMjE2OCwgMTQzOCwgNjc4MTMsIAorICAgIDY4MzM1LCA3MDAwMywgNDE5NDcsIDEyMjAsIDEyMDgyOCwgNzQ5NDYsIDcwODU0LCA3NDA1OCwgMTU3MSwgNDI2MzAsIAorICAgIDQxOTQ5LCA0MjgwNSwgODI3MCwgOTQzLCA1NjQsIDAsIDMxMiwgNDE5ODAsIDk4Mzk0NCwgMTI4Mjk1LCA3MDc5NywgODg3NywgCisgICAgMjY5LCA0NDI5LCA2MjcyLCA5NjE3LCAxNDYwLCA2OTU0LCA3ODY1NywgNDExMjAsIDY1MTIxLCAxMDg2MiwgNjA2MCwgCisgICAgNDExMTksIDQxNDE2LCA3NDM1NSwgNDE3MywgMCwgODI5NDgsIDAsIDE5MDYsIDEyMTE2OSwgMTE1MzIsIDc0MDczLCAKKyAgICAxMDEwNjgsIDEwMTA2NywgMTk4NSwgNjI5NiwgOTU4MiwgNzUwNzEsIDY0Mjg3LCAxMjg0MDYsIDcwNzE3LCAxMTQyOCwgCisgICAgMTczMCwgMjQ1NywgOTE3ODA4LCAxOTkxOCwgMTA0NjksIDEwMTA3NiwgNjgwODgsIDc3MDMsIDg4NDAsIDgwMzUsIAorICAgIDEyMDcxMSwgMTk0NjAyLCA5MjIzMCwgOTgzMzU3LCA2MTI5LCAxMjcwNjUsIDc4NTg2LCAxMjgyNjgsIDE5NDk2NSwgNzg3NCwgCisgICAgODY4MSwgNzI4MDAsIDExMjA2LCAxMzEzNiwgMCwgMTI5MzA1LCA3MDEwMiwgNjM4ODYsIDcwNDUwLCA5NjA1LCA3MTMwOCwgCisgICAgMTMyMjAsIDY3MzQ4LCA2NzM1NCwgNTUxNCwgNzQ5NjAsIDkyMjgsIDY3MzQ5LCA2NzM1NiwgNjczNDYsIDUyNDAsIDk4MTEsIAorICAgIDEwMDEyLCAzMDk2LCA5MTc4MDksIDAsIDc0NTI2LCA2NjY3NiwgNjU4NzMsIDE5NDYwOCwgMTI4MTc5LCAxMDA5MTgsIAorICAgIDk1MDEsIDEyMDI3NSwgMTI3MiwgNjQ1MzYsIDY1NDY1LCA2NDY1NCwgNzQ2NywgMTAwOTIwLCAxNDY3LCAxMDE1OCwgCisgICAgMTAwNDAsIDc0MDk2LCA5NTE5LCA2ODc1OSwgNzAzMTIsIDEwMTA1MiwgNjg4MjAsIDEyMTkzLCA3MDQwMCwgMTI3MjQwLCAKKyAgICAxMjEzNzMsIDcyODE3LCA5ODMzNTUsIDE5OTM1LCAxMjA3MzMsIDkyMTYyLCA2ODgwMSwgMTAwNjgyLCA4MzEzMywgOTMwNTcsIAorICAgIDUyNzUsIDEwMTA2MywgMTI4NjMyLCA4NjM3LCA0MzY4MiwgMTI4NTc2LCAzNzg5LCA2Mzg4MCwgMTE0NzEsIDQzNTU0LCAKKyAgICA2NTg2MiwgMTE0NzQsIDY2MzMyLCA2NjYwMywgNjg3ODQsIDI0MjYsIDEyMDQyLCA5MjE5NCwgMTIxMTg3LCA5NTM3LCAKKyAgICAzOTYxLCAxMjExNSwgNzc5NTMsIDI2MDUsIDQ1MDAsIDY0NTYxLCA1NTIyNCwgNDk4MSwgNzQ2NDQsIDAsIDQxNjQ2LCAKKyAgICAxMTY2NywgNDI2ODYsIDc0OTkxLCA0MjM2MiwgNjQ2ODYsIDQ0OTksIDQxNjQ5LCA3NTg5LCAxMjg3NzYsIDEyODI3MSwgCisgICAgMzIzNywgMCwgNjY4OTUsIDY4Mjk2LCA4NTQxLCA3ODI5OCwgNzAwMzQsIDQxODY2LCAwLCAxMjc1MDksIDk0MDU2LCAKKyAgICAxMTE3NCwgNjk5MjQsIDQzNTU1LCAyODIzLCA5NTU5LCAxMDA2MCwgNDE5NDAsIDgyOTksIDQxOTQ1LCA3MTMyLCA0MTk0MSwgCisgICAgMzMwOCwgNzE5MCwgNjQ4ODAsIDg2MTQsIDY1MjIwLCA0MTQ5MywgMTI4Njc5LCA0MTY5OSwgMTA3NjIsIDQzNzgwLCAKKyAgICAxMjk5OSwgMTE5MjQ1LCA3MDY4OSwgODEwNiwgNDEyOCwgOTgzNzUxLCA2Mjc0LCA0NDk0LCA5ODMwODIsIDQwMTIsIAorICAgIDEwMzk1LCA5ODM1OTEsIDQzNjMzLCA2NTQ0NywgNzgyNjAsIDEyMDk3MywgMTEwMDQsIDY5NSwgNzM5LCA2OTYsIDc2MTEsIAorICAgIDEyMTA3MywgNDI3NTUsIDc0ODAyLCA5MjI3LCA3NTA2LCA3NTEwLCA2OTkzNywgNjkxLCA3MzgsIDc1MTEsIDc1MTIsIAorICAgIDc1MTUsIDM4NjgsIDY4OCwgNDE4NDcsIDY5MCwgMjU0OCwgNzM3LCA5NzQsIDgwMDMsIDc0MDYsIDEyNzM1MywgMTIwMTY2LCAKKyAgICAxMjg2ODgsIDM5ODUsIDY2NDI1LCA2NTg2MCwgNDE4NTEsIDcwNTEsIDY5Nzc3LCA0NjgyLCA3MTg3MywgMTI4MDksIDY0MDYsIAorICAgIDQ2ODUsIDkyNTA1LCAxMDg3OSwgMTAzNDcsIDQ2ODAsIDYzNDEsIDEyNTIxNywgMzg1MSwgODEzMiwgNzQzMjUsIDExOTI2MywgCisgICAgMTIwODU1LCAxMjc5NDgsIDQxOTU4LCAxMTkxNzYsIDkxNzkwOCwgMTk0ODU1LCAwLCA0MjY1NywgNzEwNzUsIDc2NDMsIAorICAgIDQyMzczLCAxMTcxNCwgNjc1ODcsIDQzNTY4LCA5ODMxNzUsIDExNzE3LCA3NjUwLCAxMDU5NCwgNjQ5NTEsIDc2NDcsIAorICAgIDc2NDksIDEyODE1NSwgNzY0NiwgMCwgNzgwODIsIDk2NTEsIDEyNjQ3NSwgMzg5MSwgMTI3MjA1LCA5ODM4MDMsIDIzMzcsIAogICAgIDE3MzUsIDc0MzI0LCAxMTEzNCwgMjM2MywgMTIxMDA4LCA5MjQ0MywgNDM1NjEsIDY3NzA2LCAxMjgwMzIsIDc0MTQ2LCAKICAgICAxODYwLCA3NDk1LCA3NTgwLCA1ODEyLCA3NDk3LCA3NTg0LCAxMTkxNDAsIDEyNzg1MywgNzg3NTMsIDEyMDM0NywgNzcyNywgCi0gICAgMCwgODQ5OCwgNjk4MTgsIDg5NDksIDMwNjUsIDQyNzE5LCA3MTM1LCAxNTY5LCA5MjM3NSwgMTI1MzQsIDEyMTI0LCA3NjkwLCAKLSAgICAwLCAxMjUzMywgOTgzNzk2LCA2NDE4LCA0NTQzLCA3ODA4NiwgNjk2OSwgMTI4NDQ0LCA3NDgwMCwgNzEwNTEsIDY3OTc0LCAKLSAgICAxMDg1OSwgMTI4NjUwLCA5ODM4MDEsIDYzODk0LCAxMjA3NjAsIDEyMjgyLCA2NjE5MiwgOTgzNTgzLCA3NDU5MiwgODg1MCwgCi0gICAgNzQyNzUsIDkyMzgsIDEwNjE3LCA2ODA2MywgOTE3OTA5LCA5MjYyNSwgOTE3ODAxLCAxMjc5MSwgMCwgOTQwNjksIAotICAgIDEyNzg0MywgNDQ0NywgNzEwNjUsIDEyNzkzLCAxMjkwMCwgOTIzNzcsIDEwOTUwLCA5ODM0NDksIDc0NjM5LCAxMjc5MCwgCi0gICAgNDE0MDAsIDExOTEyOCwgNjY2MDcsIDEyNzkyLCA0MjIzMiwgMTE5MjM5LCAxNzQ0LCAxMjc4OSwgMTAzNjYsIDEyMzE3LCAKLSAgICA0MTMxMCwgMTIwNzMwLCA0MTM5OSwgMCwgMCwgNTUyNTgsIDAsIDEyNjkwLCAxMjc3NjMsIDAsIDQzNjcyLCAxMjc4NDAsIAotICAgIDQxNjUyLCAyOTc0LCA5MDEwLCAxMTMxNSwgOTgzODA4LCAyNzgsIDEyMTIwNCwgNDE0MDUsIDQzODcxLCAwLCAxMDA3NywgCi0gICAgNjM4NTMsIDc0NTU3LCA0MjU4NiwgMCwgMCwgNjAwMiwgNjczMzUsIDQzNTUzLCAxMTE4OSwgNjczMzgsIDY3MzM3LCAKLSAgICAxMjc4NywgNDEzMDgsIDc5MzQsIDY1MzA2LCAxMjAyNjMsIDEyMDk0MCwgOTQwNDIsIDg2NDYsIDEyODI1NywgNzc4MjksIAotICAgIDcxMzYwLCAwLCA2NDEzLCA2NTUwLCAxMTM3NTksIDE5NDAsIDI4MDksIDQzNjM3LCAyMjAsIDY1MTkzLCA0MzU1MSwgCi0gICAgMTA2NzgsIDEwMDQ0LCA2ODg0MSwgMTI4MTIxLCA5ODM4MTYsIDY4MjkwLCA2NDAzLCA1NzA3LCAxMDM5MywgMTI3NTMyLCAwLCAKLSAgICA2NjYxNCwgMCwgMCwgMCwgMTAyOTcsIDAsIDM3NDIsIDY3MzMxLCAzOTU5LCAwLCAxMjA0NjYsIDAsIDI0NjcsIDY4ODA2LCAKLSAgICA2MDAzLCA2Mzg0NCwgNjY2MywgODA0MCwgOTgzMjIwLCA0Mzc1OCwgNDE4MiwgNzgxNzEsIDQ2NzYsIDEyMDUwMSwgOTIxMCwgCi0gICAgMCwgMjUxMCwgMCwgMTAyMDgsIDc4MTY4LCA5MjM2MSwgMTE1NDAsIDQzNTQ2LCA2NjkyLCA2ODM3LCA0MTA2MCwgMTI4MDE4LCAKLSAgICA0NjY4LCA5MDgzLCAwLCAwLCA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCAKLSAgICA2NzM0NCwgOTgzMzUyLCA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjgyMzYsIDY3MzUyLCAKLSAgICA2NzM1MSwgNTUxNiwgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgCi0gICAgNTUxNSwgMTI5MTg2LCAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAwLCA1NTE3LCA3MDExNiwgNzQyMjUsIAotICAgIDc0ODQxLCA2Nzg4NCwgMTI4NDE0LCA2Nzg5MCwgNjc4ODUsIDY3ODgwLCA2Nzg4MSwgNjc4ODIsIDY3ODgzLCAxMjAxOTksIAotICAgIDExODg4MywgNjc4NzksIDEyNzE4OCwgMTkwMiwgNjc4ODcsIDk2MzgsIDEyOTc2LCAxMjY1NDYsIDEyNDgzLCAxMjM2OCwgCi0gICAgNDE3NjksIDQyNzI2LCA0MTc2NSwgNzM2MSwgNjY2NywgNjc4NzQsIDc1NTYsIDY3ODc4LCA3NDM1MSwgMTEyNjQsIDk4OSwgCi0gICAgNDI2NzcsIDY3ODg5LCA5MzA0MCwgMTMxMSwgMTI4OTQ5LCA0MzI2LCAxMTAwMCwgNjM4MjQsIDEzMDY4LCAxMDkzMiwgCi0gICAgMTI4ODgwLCA2OTE3LCA3ODE1NSwgMTIwODM3LCA5NDksIDc3ODgyLCA5MTc5NjgsIDYxNDgsIDg2MDUsIDQyMjUzLCAKLSAgICA3ODE3NywgNjY5MDYsIDAsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDk4MzM3MywgNjM4NzEsIDAsIDQxNzk2LCAxMjY5LCAKLSAgICA2NTMwLCAxMjE0MTQsIDY1MDU3LCA3MDQ5MywgNTE0NCwgMTIyMjEsIDQyNzE2LCA2ODI5OSwgNDQzMSwgNDMzMSwgCi0gICAgOTgzNzI5LCAxMjg2NzUsIDQxODM0LCA1Mjc5LCAxMjEzNjIsIDEwMzM2LCA4MzEyLCAwLCA0MjcwMSwgOTI5NTksIDAsIAotICAgIDc4MTY1LCA2NjAzNiwgNzAxNjYsIDEyMDkzNywgNjQyOCwgNDIyNzAsIDk4MzcyNiwgOTgzNTk2LCA0MzA1OSwgNDI2NjYsIAotICAgIDUyNTYsIDEwNjcsIDI1NSwgMTIxMzEsIDEyODc0MiwgOTQ5MywgNzQ5OTAsIDQxMDE0LCAxMTc5MywgMTk0OTIwLCAKLSAgICAxMjExOTUsIDc0Mzk0LCA0MzQ2MCwgMTA2NTMsIDQyNzIzLCA5ODM4NTQsIDExOTYzMiwgNzA0MjcsIDY1NjAsIDcwMTYsIAotICAgIDc0Mjc0LCA2OTk4NiwgNDM1NTYsIDM5MjksIDY3OTc3LCA2NjE0LCAyNzY4LCA5MjUwNCwgOTc0NiwgNTEzNSwgMTE4MTEsIAotICAgIDEyNzk2LCAxMTk1MywgMCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCisgICAgOTgzNjU4LCA4NDk4LCA2OTgxOCwgODk0OSwgMzA2NSwgNDI3MTksIDcxMzUsIDE1NjksIDkyMzc1LCAxMjUzNCwgMTIxMjQsIAorICAgIDc2OTAsIDAsIDEyNTMzLCA5ODM3OTYsIDY0MTgsIDQ1NDMsIDc4MDg2LCA2OTY5LCAxMjg0NDQsIDc0ODAwLCA3MTA1MSwgCisgICAgNjc5NzQsIDEwODU5LCAxMjg2NTAsIDk4MzgwMSwgNjM4OTQsIDEyMDc2MCwgMTIyODIsIDY2MTkyLCA5ODM1ODMsIDc0NTkyLCAKKyAgICA4ODUwLCA3NDI3NSwgOTIzOCwgMTA2MTcsIDY4MDYzLCA5MTc5MDksIDkyNjI1LCA5MTc4MDEsIDEyNzkxLCAxMjg5NzYsIAorICAgIDk0MDY5LCAxMjc4NDMsIDQ0NDcsIDcxMDY1LCAxMjc5MywgMTI5MDAsIDkyMzc3LCAxMDk1MCwgMTAwODc4LCA3NDYzOSwgCisgICAgMTI3OTAsIDQxNDAwLCAxMTkxMjgsIDY2NjA3LCAxMjc5MiwgNDIyMzIsIDExOTIzOSwgMTc0NCwgMTI3ODksIDEwMzY2LCAKKyAgICAxMjMxNywgNDEzMTAsIDEwMDg2NSwgNDEzOTksIDEwMDgyMiwgMTI2NjQ5LCA1NTI1OCwgMCwgMTI2OTAsIDEyMDA4MywgMCwgCisgICAgNDM2NzIsIDEyNzg0MCwgNDE2NTIsIDI5NzQsIDkwMTAsIDExMzE1LCAxMTk2NTgsIDI3OCwgMTIxMjA0LCA0MTQwNSwgCisgICAgNDM4NzEsIDEwMDg2NywgMTAwNzcsIDYzODUzLCA3MDY2NywgNDI1ODYsIDkxNzg4NiwgNzQxMTQsIDYwMDIsIDY3MzM1LCAKKyAgICA0MzU1MywgMTExODksIDY3MzM4LCA2NzMzNywgMTI3ODcsIDQxMzA4LCA3OTM0LCA2NTMwNiwgMTIwMjYzLCAxMjA5NDAsIAorICAgIDk0MDQyLCA4NjQ2LCAxMjgyNTcsIDc3ODI5LCA3MTM2MCwgMCwgNjQxMywgNjU1MCwgMTEzNzU5LCAxOTQwLCAyODA5LCAKKyAgICA0MzYzNywgMjIwLCA2NTE5MywgNDM1NTEsIDEwNjc4LCAxMDA0NCwgNjg4NDEsIDEyODEyMSwgOTgzMzUwLCA2ODI5MCwgCisgICAgNjQwMywgNTcwNywgMTAzOTMsIDEyNzUzMiwgMCwgNjY2MTQsIDAsIDEyMjkyMSwgMTI3OTEyLCAxMDI5NywgMTk1MDU3LCAKKyAgICAzNzQyLCA2NzMzMSwgMzk1OSwgMCwgMTIwNDY2LCAwLCAyNDY3LCA2ODgwNiwgNjAwMywgNjM4NDQsIDY2NjMsIDgwNDAsIAorICAgIDk4MzIyMCwgNDM3NTgsIDQxODIsIDc4MTcxLCA0Njc2LCAxMjA1MDEsIDkyMTAsIDAsIDI1MTAsIDAsIDEwMjA4LCA3ODE2OCwgCisgICAgOTIzNjEsIDExNTQwLCA0MzU0NiwgNjY5MiwgNjgzNywgNDEwNjAsIDEwMTA5NywgNDY2OCwgOTA4MywgOTgzMjQ0LCAwLCAKKyAgICA3ODE0NCwgMTU1OSwgNjM4MzEsIDk2NzcsIDY3MzQwLCA2NzM0NywgNjUyNTYsIDY3MzQ1LCA2NzM0NCwgOTgzMzUyLCAKKyAgICA5ODMyNjYsIDM2NSwgMTIwNTYsIDQzMDI3LCAxMjA0MjMsIDQxNzE2LCAxMjAyNTgsIDY3MzUyLCA2NzM1MSwgNTUxNiwgCisgICAgMjg0NSwgNzcxNywgODAzNiwgNDE3MTcsIDY3MzUzLCA1NDQsIDEyMDQ1LCA2Mjc4LCA3NDYzMiwgNTUxNSwgMTI5MTg2LCAKKyAgICAxMjA4ODQsIDk4MzA1MSwgNjUzMzksIDQzMjIxLCAyMjExLCAxMjA1NDEsIDU1MTcsIDcwMTE2LCA3NDIyNSwgNzQ4NDEsIAorICAgIDY3ODg0LCAxMjg0MTQsIDY3ODkwLCA2Nzg4NSwgNjc4ODAsIDY3ODgxLCA2Nzg4MiwgNjc4ODMsIDEyMDE5OSwgMTE4ODgzLCAKKyAgICA2Nzg3OSwgMTIxNDQ4LCAxOTAyLCA2Nzg4NywgOTYzOCwgMTI5NzYsIDc0Mzk0LCAxMjQ4MywgMTIzNjgsIDQxNzY5LCAKKyAgICA0MjcyNiwgNDE3NjUsIDczNjEsIDY2NjcsIDY3ODc0LCA3NTU2LCA2Nzg3OCwgNzQzNTEsIDExMjY0LCA5ODksIDQyNjc3LCAKKyAgICA2Nzg4OSwgOTMwNDAsIDEzMTEsIDEwMDg4MiwgNDMyNiwgMTEwMDAsIDYzODI0LCAxMzA2OCwgMTA5MzIsIDEwMDY0MywgCisgICAgNjkxNywgNzgxNTUsIDEyMDgzNywgOTQ5LCA3Nzg4MiwgOTE3OTY4LCA2MTQ4LCA4NjA1LCA0MjI1MywgNzgxNzcsIDY2OTA2LCAKKyAgICAxMDA2NDQsIDQyNzE1LCA3MTQzMiwgNzAyODIsIDEwMDY0NywgNjM4NzEsIDEyODI5NiwgNDE3OTYsIDEyNjksIDY1MzAsIAorICAgIDEwMTA0OSwgNjUwNTcsIDcwNDkzLCA1MTQ0LCAxMjIyMSwgNDI3MTYsIDY4Mjk5LCA0NDMxLCA0MzMxLCAxMDEwNDUsIAorICAgIDEyODY3NSwgNDE4MzQsIDUyNzksIDEyMTM2MiwgMTAzMzYsIDgzMTIsIDAsIDQyNzAxLCA5Mjk1OSwgMCwgNzgxNjUsIAorICAgIDY2MDM2LCA3MDE2NiwgMTAwMzg3LCA2NDI4LCA0MjI3MCwgOTgzNzI2LCA5ODMxNjMsIDQzMDU5LCA0MjY2NiwgNTI1NiwgCisgICAgMTA2NywgMjU1LCAxMjEzMSwgMTI4NzQyLCA5NDkzLCA3Mzg5NCwgNDEwMTQsIDExNzkzLCAxMjY0NjcsIDc4NzQwLCAKKyAgICA3MDcyOCwgNDM0NjAsIDEwNjUzLCA0MjcyMywgMTI1MjE2LCAxMDA2NTgsIDcwNDI3LCA2NTYwLCA3MDE2LCA3NDI3NCwgCisgICAgNjk5ODYsIDQzNTU2LCAzOTI5LCA2Nzk3NywgNjYxNCwgMjc2OCwgOTI1MDQsIDk3NDYsIDUxMzUsIDExODExLCAxMjc5NiwgCisgICAgMTE5NTMsIDEyNzM4MCwgNjk3NjEsIDUxMzksIDM0NiwgNzQzMDMsIDYzMDUsIDEyNzk1LCA0Njc1LCA1MTY4LCA3ODU1MiwgCiAgICAgNDM4NDUsIDc0MzE1LCA3NDM2MSwgODI1MywgODgxNywgMTEzNiwgOTE3OTMxLCA0MzU2MywgOTIyMzIsIDEyODkxNCwgCi0gICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDk4MzYwNywgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCisgICAgNjY0MTAsIDczOTIsIDgyMzAsIDkzNjUsIDcxMTk0LCAxMjcxMDksIDE5NDg3OCwgNjY5MTUsIDEyODQwMiwgNDA0MSwgMCwgCiAgICAgMjM1NywgNDMyNDAsIDEyNzg2LCAyMjksIDQzODM0LCAxMTk4ODQsIDQ0MDA0LCA3MTQyLCAxMTk4ODEsIDEyMzUwLCAKICAgICA2NTU1NCwgMTE5ODgyLCA3MTMwNSwgMTE5ODc2LCAxMjc4NSwgNjM4NjMsIDQzNzk1LCA3NzcwLCAxMDcxMiwgNjQ4NTMsIAogICAgIDEyNjg2LCA0MzgzMSwgNDIzNzUsIDY1NzgwLCAxMjQ5NDQsIDY2MzUyLCAxMDQ3MCwgNzExMTksIDExMDU5LCAxMDc5MSwgCi0gICAgOTE3OTQ0LCA0NTAsIDExOTMyOCwgMTI3MjU0LCAxMDQzMiwgMTIwOTcsIDU0NTAsIDY0NjkxLCAxMjMzLCAwLCA0NDAwOSwgCisgICAgNzI3MjQsIDQ1MCwgMTE5MzI4LCAxMjcyNTQsIDEwNDMyLCAxMjA5NywgNTQ1MCwgNjQ2OTEsIDEyMzMsIDAsIDQ0MDA5LCAKICAgICA3ODI4NCwgNjYzMzgsIDY2Mzk1LCA5MTc4MzIsIDE4MzksIDExODc5OSwgOTgzMjE5LCAxMDkyNywgMTcwMSwgOTgzNjY0LCAKICAgICAyMzg4LCA0MTc0OSwgNDE3NjEsIDU0NTMsIDgzNjEsIDExOTg2NSwgODk1LCA1NDQ0LCA0MTc2MywgNjQ4ODksIDcxNDMsIAotICAgIDkyNDkzLCA3ODY3NywgOTgzMTM3LCA5MjQyOSwgNjk5ODMsIDY2NDMyLCA4ODAxLCAzMDUzLCA0MzQwLCA5ODMwNDQsIAotICAgIDEyODAxMywgNjU4MTIsIDEyMDY3NSwgNzAwMDEsIDQxODI0LCA2Nzk4NSwgMTIwMjAzLCA5MjYwMCwgMTI3MDUzLCA0MjcwMCwgCi0gICAgMTk0ODA1LCAxMjc5ODAsIDE5NDgwNywgNzg2NzYsIDkyMzU2LCAxOTQ4MDgsIDEyNzg0NCwgMCwgNDQ5MywgNDMzNiwgCi0gICAgMTI5MTcxLCAyMzE0LCA0MzYwMiwgNzg4MjYsIDExOTMyNSwgMTk0ODExLCA0MjQzOSwgNjQ2MzgsIDQyMzI3LCA0MzUyOCwgCisgICAgOTI0OTMsIDc4Njc3LCA5ODMxMzcsIDkyNDI5LCA2OTk4MywgNjY0MzIsIDg4MDEsIDMwNTMsIDQzNDAsIDE5NDg0OSwgCisgICAgMTI1MTg5LCA2NTgxMiwgMTAwNjMzLCA3MDAwMSwgNDE4MjQsIDY3OTg1LCAxMjAyMDMsIDkyNjAwLCAxMjcwNTMsIDQyNzAwLCAKKyAgICAxOTQ4MDUsIDEyNzQwMywgMTI4MDQwLCA3ODY3NiwgOTIzNTYsIDE5NDgwOCwgMTI3ODQ0LCAwLCA0NDkzLCA0MzM2LCAKKyAgICAxMjkxNzEsIDIzMTQsIDQzNjAyLCA0MTgwOCwgMTE5MzI1LCAxOTQ4MTEsIDQyNDM5LCA2NDYzOCwgNDIzMjcsIDQzNTI4LCAKICAgICA0NDg5LCA2ODc1MCwgMTI1MTE2LCAxOTQ3OTMsIDE5MTIsIDQyMzg1LCAxMDMwNiwgMTAzNzAsIDAsIDE5NDc2MSwgODg2NywgCiAgICAgMTAyNTAsIDEwMjU4LCAyNzEyLCAxNjM1LCA3MTA2NCwgMTQxMCwgNzg3NjMsIDk4MzI1MiwgMTE4ODc4LCA5ODM1NjcsIAotICAgIDEyODcxNSwgOTkxOSwgMTIwNTI4LCA1NTksIDEyODE1NywgNDE4MjUsIDEyMTI3NCwgNzQ2NDEsIDQ4OTIsIDc0MDE2LCAKKyAgICAxMDA5ODgsIDk5MTksIDEyMDUyOCwgNTU5LCAxMjgxNTcsIDQxODI1LCAxMjEyNzQsIDc0NjQxLCA0ODkyLCA3NDAxNiwgCiAgICAgMTIxNTAyLCA2NTQyLCA0MTk1NywgMTI4ODY1LCA1Nzc3LCAxMjcxNjcsIDc1OSwgNjU3NDksIDIwNzksIDY1MjQ4LCAKLSAgICAxMjc4OCwgNjQ0ODcsIDY0NTUyLCA5MzA2MywgMTAyMjMsIDQyMDYyLCAxMjEyNzksIDAsIDc0MjQ2LCAzNjY4LCA2NTc1NCwgCisgICAgMTI3ODgsIDY0NDg3LCA2NDU1MiwgOTMwNjMsIDEwMjIzLCA0MjA2MiwgMTAwNjQwLCAwLCA3NDI0NiwgMzY2OCwgNjU3NTQsIAogICAgIDQzNTYwLCAxMjIyNiwgNjc5OTEsIDY1MTQ5LCAyMzQwLCA0MTk1OSwgNzE0NjMsIDE5NDc4NSwgMTk0Nzg4LCA0MzYxOCwgCi0gICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAwLCAyMzIxLCAzNTg3LCA2NTc0NSwgNjcyMzYsIDg5MjEsIDk5NTIsIDEyODk0MSwgMCwgCi0gICAgNDI3MTQsIDk5NTEsIDQzNDA5LCAxOTQ3NzAsIDI5NDksIDY2MDEyLCAxOTQ3NzUsIDE5NDc3NCwgMjk1OCwgNjgzNTksIAotICAgIDQxODIwLCAyMzAwLCAyMzk1LCAxMjAwNjEsIDk5NzYsIDEyMDA0MywgMTIwMDUwLCA3MTg5NiwgNjgyMjAsIDEyODE0MywgCisgICAgNjU3NDcsIDEwOTM3LCAyOTYyLCAxMjExNzEsIDIzMjEsIDM1ODcsIDY1NzQ1LCA2NzIzNiwgODkyMSwgOTk1MiwgMTI4OTQxLCAKKyAgICAwLCA0MjcxNCwgOTk1MSwgNDM0MDksIDEwMDY2OCwgMjk0OSwgNjYwMTIsIDE5NDU4MiwgMTk0Nzc0LCAyOTU4LCA2ODM1OSwgCisgICAgNDE4MjAsIDIzMDAsIDIzOTUsIDEyMDA2MSwgOTk3NiwgMTAwOTc1LCAxMjAwNTAsIDcxODk2LCA2ODIyMCwgMTI4MTQzLCAKICAgICA0MjgwOSwgNDI4MDcsIDcwNzk4LCA2NjI5MCwgMTAxOTgsIDQxNTAsIDY0MzcxLCA4MzE4LCA0MTc5MCwgNjc5NzYsIAotICAgIDQxODk4LCAyMzYwLCA0MTc5NCwgOTE3OTQyLCA3MDc5NiwgOTIxNjMsIDkzMDMzLCAwLCAyNDE4LCA5ODMwOTgsIDI0MTEsIAotICAgIDExMzM2LCA3OTksIDYzODIzLCAxMDI3NiwgMTAzMDgsIDEwMzcyLCA5MTc1NDEsIDQxNzcyLCA0MjgxMywgMjMxNywgCisgICAgNDE4OTgsIDIzNjAsIDQxNzk0LCAxMDA2NjMsIDcwNzk2LCA5MjE2MywgOTMwMzMsIDk4MzY0OCwgMjQxOCwgOTgzMDk4LCAKKyAgICAyNDExLCAxMTMzNiwgNzk5LCA2MzgyMywgMTAyNzYsIDEwMzA4LCAxMDM3MiwgMTk0NjA0LCA0MTc3MiwgNDI4MTMsIDIzMTcsIAogICAgIDEwMjYwLCAxMTg5ODAsIDU1Mjg0LCA3ODY4NiwgMTI3MTc3LCAxMDM4NCwgMTk0Nzk0LCAxMjExNDcsIDEyOTExMSwgNzc1MywgCi0gICAgMjM1MSwgNjY1NSwgNjQ0ODksIDY5OTMxLCA3MDE5OSwgNzc4NzIsIDQ0NDMsIDQyNzc5LCAyMzAsIDAsIDY4MDY3LCAKKyAgICAyMzUxLCA2NjU1LCA2NDQ4OSwgNjk5MzEsIDcwMTk5LCA3Nzg3MiwgNDQ0MywgNDI3NzksIDIzMCwgMTI3MDE1LCA2ODA2NywgCiAgICAgNDM1NDksIDQ4NTUsIDQyMTUwLCA2NTczOSwgNTQ0MSwgNDE4OTYsIDEwMjg4LCAxMDMyMCwgMCwgODU1LCA3MDQ2LCA2MTA5LCAKICAgICA2NTA0NSwgNjM4MzksIDc4MTk4LCAyMDQ5LCAxMDA5OCwgOTE3Nzc5LCA3NDE0NSwgMTI3OTQzLCAxMDI2NCwgMTAyODAsIAotICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDAsIDQ4NjIsIDk3MzUsIAorICAgIDkxODQsIDEwMzc2LCA3MDEzLCA0NDY3LCA3ODY4NCwgOTE3NTU0LCA5MjI2MCwgNDE4ODcsIDEwMTAyNSwgNDg2MiwgOTczNSwgCiAgICAgNjUzNywgMTIwNTkxLCA3NDI4NiwgMzkxNCwgOTIxNzgsIDY4ODIzLCA5MDY1LCAxMjk2MSwgMCwgMTIwNDU2LCA5MjI1MywgCi0gICAgMTI4MjA0LCAyODksIDEyODcxNCwgNDY5NCwgMTE0MjAsIDQ2OTAsIDAsIDEyMDUxNCwgOTE3OTc4LCA0NjkzLCA3Mzg5MywgCi0gICAgNDI3MjQsIDY5OTc3LCA0Njg4LCAxMjA0NTQsIDEyODUwNywgMCwgNjc5OTQsIDgyMzgsIDMxMTAsIDEyMDE2MiwgMzU2NSwgCi0gICAgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgNDc4NiwgOTgzMTY4LCAKLSAgICA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIDQzOTc4LCA4OTg4LCAKLSAgICA4ODg4LCA5MjcyNCwgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIDEyMTQzNiwgMCwgCi0gICAgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDAsIDY1NTYwLCAxMTkyMDksIDc0NDQxLCA3ODgxMCwgMCwgMCwgCi0gICAgNjc5ODcsIDAsIDEyODgyOCwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAKLSAgICAxMjEwMjgsIDY2MiwgMTI4NzIwLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAxMTkyNjEsIDk4MzQzMCwgMCwgMTIwOTAxLCAKLSAgICA5MTc4MzgsIDQxOTI5LCAwLCA3MTA4NCwgNjY2NzQsIDQxOTI2LCA2OTk5NCwgMTIwNDQzLCAxMDUxMywgNjQ2MzcsIAotICAgIDE5NDg2MiwgNjgwMTMsIDUyLCAxMzExOCwgNjQ3NSwgMTk1MDA0LCA4MzQ3OSwgMTIwOTUsIDEwMjI1LCA0ODEyLCA5MjU3OCwgCi0gICAgMTI4NDg2LCA2Nzk5MiwgNzQwODUsIDAsIDM5NzgsIDEyODQyNSwgOTE3OTQ1LCA3NDAxNSwgMTE1ODIsIDkyNzY4LCAKLSAgICAxMjI4MSwgMTI3MDQzLCA2NTQ0LCAxMzI0MSwgOTM5NjEsIDY5NzgyLCAxMjUwMTQsIDE5NDg2MCwgMTE3NjUsIDY1MjU4LCAKLSAgICAxMDM2OSwgMCwgMTU4NSwgNzE5MiwgMTAyNDksIDQyMiwgMTUwMCwgMjAzNiwgOTg2LCAxOTQ4NTksIDY0Mzk0LCA1NzgxLCAKLSAgICA1NTk5LCA2NDI5NCwgMjQ5NCwgMTIwNDUwLCA0ODYxLCA3NDAyMSwgNjQzMzQsIDc4MjAzLCAxMjc4MDgsIDAsIDgzNDQ0LCAKLSAgICA2NTEwMiwgODk2MSwgNjU4NDIsIDEwMjQzLCAxMDI0NSwgNzE5MDcsIDEyMDQxMCwgMCwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgCi0gICAgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgCi0gICAgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIAotICAgIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIDkxNzkzNCwgNTg1OSwgMCwgMjg1OCwgOTgzMzYzLCA3NDI5NCwgOTgzOTE0LCAKLSAgICA2OTIzOSwgMCwgNjc4NzEsIDEyOTkyLCAyNzUzLCAxOTM2LCA3MDA3OCwgNjc3MDEsIDI3NTEsIDEyNjYyLCAyNzYzLCAKLSAgICA4OTUzLCA2NDcwMSwgMTA3MzEsIDEyOTIyLCA3MDUyLCA5MTc4MzksIDY2NDI0LCA2Mzk5MiwgMCwgNjM5MjAsIDc0MTI4LCAKLSAgICAyODU2LCAxMTk5MTAsIDQ3LCA2OTkwOCwgNzEwNTMsIDY1ODU4LCAxOTQ4MDYsIDAsIDY3ODI5LCA3ODk5LCAwLCA4NDE3LCAKLSAgICA0Mzc5OCwgNzA3MiwgNzQxOTUsIDAsIDQwMzMsIDEyMTI4OSwgNDM5OTIsIDEyMTA4MSwgMCwgMjEyLCA2NDYwMCwgMTkwMywgCi0gICAgMTIzMjAsIDgzNDg0LCAxMjA4OTQsIDE5NDU2MywgMCwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgMCwgCi0gICAgMTE4Nzk4LCAxMjkxLCA3NDgyOCwgMCwgMTIwNDM1LCA5NTMxLCAxMzE1NSwgODUwNSwgNjgzNzksIDEyMDYyLCAxMjgxOTgsIAotICAgIDEyMTIxNiwgNjU0ODcsIDkyMTg5LCA0MTgzNywgMTIwNjExLCA4MjQ2LCAxMjg4NzQsIDkzMDY2LCAwLCAxMjA0MzMsIDAsIAotICAgIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDAsIDY0NDI2LCA5ODMwOTIsIDE5NDk0OCwgOTE3ODY2LCAKLSAgICA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMTk4ODcsIDEyODgxMiwgOTI3MTUsIDcwNzg4LCAxMzIwLCAKLSAgICAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIAotICAgIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCA0MzkzLCA2NzY1MCwgOTgzMjI3LCAKLSAgICAwLCA3NDgyMiwgMCwgNzQ4MjYsIDY0NzMzLCA5ODMyMTQsIDEyNzg5OCwgMzQ5MSwgNjcxNDYsIDEyMTE0MiwgMTI4MjE5LCAKLSAgICAzNTE0LCA2NTQ4NSwgNzI0MjgsIDc0OTIsIDEyODg2MCwgNzQ2MDUsIDkyNDgzLCA3NTE0LCA5ODMzNjksIDEyNjU4NSwgCi0gICAgMTk0NzMxLCA3NTAyLCA3NTg3LCA2ODM1MywgNjM5MjEsIDEyMTE3OCwgNjM5MjUsIDEyMDE2MSwgNzYxMCwgMjE5LCAKLSAgICAxMjgxNTgsIDc4NzIyLCA2OTIsIDQzNTg4LCA2ODQ4NSwgNDE2MzUsIDQzMjQxLCA5Njg4LCA3MTQ3LCA5NTM1LCAwLCAKLSAgICA5Mzk5MSwgMCwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgMCwgNzE0OSwgNzQ1MywgMCwgODAxMywgNjYzOTYsIDkyMzAxLCAKLSAgICAwLCA4ODk1LCA1MjUzLCA3MDAyNSwgNTQ1OCwgOTE3NjI5LCAyODY2LCAxMjkwNDUsIDEyNzg2MCwgMTEwOTgsIDY4NDMzLCAKLSAgICA2NzAwLCAxMjA0ODQsIDAsIDEyMDU4MywgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgCi0gICAgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgCi0gICAgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgMTIxMzksIDY3OTcxLCAwLCAwLCAzMzU4LCA2NTI5NSwgOTgzODk5LCAzMTA0LCAKLSAgICAxOTQ3MzQsIDAsIDEyMTMwNCwgOTgzMjM1LCA1MzA4LCA4MzQzNCwgMjkwLCAwLCAxMjEzMzgsIDI4NjIsIDI3OTIsIAotICAgIDE5NTA4OCwgOTI5NjMsIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMCwgMCwgCi0gICAgMTgxNCwgNzg0NjQsIDEwMjQwLCA2NjI4NSwgNzQzMDUsIDEyODM4MiwgNzQ1MjgsIDY1OTAzLCA3MTQ1NCwgNDI2NDYsIAotICAgIDc2MDYsIDI1OTEsIDI4MzcsIDQzNDEsIDQzNTEzLCA2NDQ4MiwgOTI1MjQsIDgxNjMsIDY1MjcwLCAwLCA3NzkzMiwgMCwgCi0gICAgOTExMiwgNzQ0MzEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODM0OSwgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKKyAgICAxMjgyMDQsIDI4OSwgMTAxMDI5LCA0Njk0LCAxMTQyMCwgNDY5MCwgMTIyODk5LCAxMDA3ODksIDkxNzk3OCwgNDY5MywgCisgICAgNzM4OTMsIDQyNzI0LCA2OTk3NywgNDY4OCwgMTIwNDU0LCAxMjg1MDcsIDk4MzgxMywgNjc5OTQsIDgyMzgsIDMxMTAsIAorICAgIDEyMDE2MiwgMzU2NSwgMTIwMTYzLCA2NTI4LCA3ODM4NywgNDMwMzUsIDY5ODk4LCAyMTgsIDk4Mzg1MCwgMTUyMCwgMCwgCisgICAgNDc4NiwgOTgzMTY4LCA0MzIyNSwgNDYwMiwgOTI0MDAsIDc4MTY3LCAxMDA4OCwgNjU0OCwgMTIxMTU3LCAxMjAxNTYsIAorICAgIDQzOTc4LCA4OTg4LCA4ODg4LCA2NTcyNywgNzQ4MTIsIDY5NzA5LCA5ODM5NjcsIDEwNjY2LCAwLCA3MzkwMiwgNjk3NDAsIAorICAgIDEyMTQzNiwgMCwgOTk3NSwgMTEzNzA0LCAxMTk5MDIsIDQ2ODksIDg5MzIsIDEyNTIzOCwgNjU1NjAsIDExOTIwOSwgCisgICAgNzQ0NDEsIDc4ODEwLCAxMjI4ODEsIDEyODcwNywgNjc5ODcsIDAsIDEyMTAyMSwgMCwgNjc5ODksIDExOTAyOSwgMTAwNjUsIAorICAgIDgyMDcsIDcxOTAwLCA5MjYxMywgMTI4MDExLCAxMDEwOTAsIDY2MiwgMTI1MjIxLCA5MjQ0LCAxOTQ4NjMsIDgzMTgzLCAKKyAgICAxMTkyNjEsIDk4MzQzMCwgOTE3ODg5LCAxMjA5MDEsIDkxNzgzOCwgNDE5MjksIDAsIDcxMDg0LCA2NjY3NCwgNDE5MjYsIAorICAgIDY5OTk0LCAxMjA0NDMsIDEwNTEzLCA2NDYzNywgMTk0ODYyLCA2ODAxMywgNTIsIDEzMTE4LCA2NDc1LCAxOTUwMDQsIAorICAgIDgzNDc5LCAxMjA5NSwgMTAyMjUsIDQ4MTIsIDkyNTc4LCAxMjg0ODYsIDY3OTkyLCA3NDA4NSwgMCwgMzk3OCwgMTI4NDI1LCAKKyAgICA5MTc5NDUsIDc0MDE1LCAxMTU4MiwgOTI3NjgsIDEyMjgxLCAxMjcwNDMsIDY1NDQsIDEzMjQxLCA5Mzk2MSwgNjk3ODIsIAorICAgIDEyNTAxNCwgMTI4ODA4LCAxMTc2NSwgNjUyNTgsIDEwMzY5LCA5ODM0OTgsIDE1ODUsIDcxOTIsIDEwMjQ5LCA0MjIsIAorICAgIDE1MDAsIDIwMzYsIDk4NiwgMTk0ODU5LCA2NDM5NCwgNTc4MSwgNTU5OSwgNjQyOTQsIDI0OTQsIDEyMDQ1MCwgNDg2MSwgCisgICAgNzQwMjEsIDY0MzM0LCA3ODIwMywgMTI3ODA4LCAwLCA3Mjg3MSwgNjUxMDIsIDg5NjEsIDY1ODQyLCAxMDI0MywgMTAyNDUsIAorICAgIDcxOTA3LCAxMjA0MTAsIDEwMDY3MSwgMTIwNDUzLCA2NDgyMSwgOTQ3OCwgMjUwOCwgOTI2ODMsIDAsIDIwMiwgMTI4MjQ2LCAKKyAgICA3NDEzMSwgMTI0MiwgNjU1MTQsIDEyMTE3MCwgNjM5NDAsIDEyMTM2MywgNjQ1MzMsIDcxODgzLCAxMjA0NDYsIDY3ODQyLCAKKyAgICAxMTk5MCwgOTI0MDUsIDYzOTM5LCA0MzM3NSwgNjU0NDAsIDI1MDQsIDAsIDc4NjcxLCA2NDgyOSwgOTMwMjAsIDY5NDMsIAorICAgIDkxNzkzNCwgNTg1OSwgOTgzOTgwLCAyODU4LCA5ODMzNjMsIDY2NzgxLCA5ODM5MTQsIDY5MjM5LCA5ODMzODAsIDY3ODcxLCAKKyAgICAxMjk5MiwgMjc1MywgMTkzNiwgNzAwNzgsIDY3NzAxLCAyNzUxLCAxMjY2MiwgMjc2MywgODk1MywgNjQ3MDEsIDEwNzMxLCAKKyAgICAxMjkyMiwgNzA1MiwgOTE3ODM5LCA2NjQyNCwgNjM5OTIsIDAsIDYzOTIwLCA3NDEyOCwgMjg1NiwgMTE5OTEwLCA0NywgCisgICAgNjk5MDgsIDcxMDUzLCA2NTg1OCwgMTAwODYzLCAxMjkwMzMsIDY3ODI5LCA3ODk5LCA5ODM1NzUsIDg0MTcsIDQzNzk4LCAKKyAgICA3MDcyLCA3NDE5NSwgMCwgNDAzMywgMTIxMjg5LCA0Mzk5MiwgMTIxMDgxLCA5ODMzMTUsIDIxMiwgNjQ2MDAsIDE5MDMsIAorICAgIDEyMzIwLCA4MzQ4NCwgMTIwODk0LCAxOTQ1NjMsIDEwMDk3OSwgODkxNSwgMjc1OSwgOTQ1LCA2Njg5LCA5MzA2NCwgMCwgCisgICAgOTgzNzU2LCAxMTg3OTgsIDEyOTEsIDc0ODI4LCAwLCAxMjA0MzUsIDk1MzEsIDEzMTU1LCA4NTA1LCA2ODM3OSwgMTIwNjIsIAorICAgIDEyMTI1MywgMTIxMjE2LCA2NTQ4NywgOTIxODksIDQxODM3LCAxMjA2MTEsIDgyNDYsIDEyODg3NCwgOTMwNjYsIDEwMDY4MCwgCisgICAgMTIwNDMzLCAxOTQ1NzAsIDYzOTM1LCA3Mzk2MiwgMTIwODA2LCA2NDc4NywgNDM1MjQsIDEyMTQzMSwgNjQ0MjYsIAorICAgIDk4MzA5MiwgMTk0OTQ4LCAyMjMwLCA5MTc3ODgsIDY1NjY0LCA2NjkzLCA5ODQzLCAwLCA4Njc0LCAxMDA4NjksIDEyMDg1OCwgCisgICAgOTI3MTUsIDcwNzg4LCAxMzIwLCAxMjE0NjEsIDE2NzMsIDQ4MTEsIDkyMzgzLCA1OTg2LCA5MzM4LCAzMDQ2LCA3NDQ4MCwgCisgICAgNTk4NSwgOTE3OTI4LCAxMTk1OTgsIDk4MjAsIDExOTg5MiwgMTIxODcsIDk4Mzg0MSwgNzEwNDEsIDU5ODQsIDAsIDQzMzA4LCAKKyAgICA0MzkzLCA2NzY1MCwgMTEzNzg3LCAxMjcwMTMsIDc0ODIyLCAwLCA3NDgyNiwgNjQ3MzMsIDk4MzIxNCwgMTI3ODk4LCAKKyAgICAzNDkxLCA2NzE0NiwgMTIxMTQyLCAxMjgyMTksIDM1MTQsIDY1NDg1LCA3MjQyOCwgNzQ5MiwgMTI4ODYwLCA3NDYwNSwgCisgICAgNzI3NjgsIDc1MTQsIDk4MzM2OSwgMTI2NTg1LCAxOTQ3MzEsIDc1MDIsIDc1ODcsIDY4MzUzLCA2MzkyMSwgMTIxMTc4LCAKKyAgICA2MzkyNSwgMTIwMTYxLCA3NjEwLCAyMTksIDEyODE1OCwgNzg3MjIsIDY5MiwgNDM1ODgsIDY4NDg1LCA0MTYzNSwgNDMyNDEsIAorICAgIDk2ODgsIDcxNDcsIDk1MzUsIDE5NDk4OSwgOTM5OTEsIDk4Mzk0NSwgNjQ1MzAsIDAsIDY0NjEwLCAxMTgwNCwgOTE3OTE4LCAKKyAgICA3MTQ5LCA3NDUzLCAxMTk1NjAsIDgwMTMsIDY2Mzk2LCA5MjMwMSwgMCwgODg5NSwgNTI1MywgNzAwMjUsIDU0NTgsIAorICAgIDE5NDY1MSwgMjg2NiwgMTE4ODA1LCAxMjc4NjAsIDExMDk4LCA2ODQzMywgNjcwMCwgMTIwNDg0LCAxMjkzMDgsIDEyMDU4MywgCisgICAgMTk0ODI0LCA4OTYyLCA3Nzk2MCwgOTY0MSwgNDM2OTQsIDcwNTksIDk4MzY3NywgNjM5OTcsIDk2MDQsIDc4NzAwLCA3NDQxLCAKKyAgICA2MzgyNiwgNjc5NzAsIDgzNDM1LCA2NDM5MiwgOTI2MjYsIDk4MzY4NywgMjg0NCwgNzQ2MTAsIDQxOTc0LCA2NzM5NywgCisgICAgMTIxMzksIDY3OTcxLCAxMjcxNjYsIDk4MzgzNCwgMzM1OCwgNjUyOTUsIDk4MzI5MiwgMzEwNCwgMTAwNzc5LCAwLCAKKyAgICAxMjEzMDQsIDk4MzIzNSwgNTMwOCwgODM0MzQsIDI5MCwgMCwgMTIxMzM4LCAyODYyLCAyNzkyLCA5MjQ4MywgOTI5NjMsIAorICAgIDc3OTg0LCAzMjY4LCA2NjU5MSwgMCwgNjU1MiwgNDIzNjcsIDcwMzUsIDEyMDU1OCwgMTAxMDA4LCA5MTc5NzEsIDE4MTQsIAorICAgIDc4NDY0LCAxMDI0MCwgNjYyODUsIDc0MzA1LCAxMjgzODIsIDc0NTI4LCA2NTkwMywgNzE0NTQsIDQyNjQ2LCA3NjA2LCAKKyAgICAyNTkxLCAyODM3LCA0MzQxLCA0MzUxMywgNjQ0ODIsIDkyNTI0LCA4MTYzLCA2NTI3MCwgMTk0ODI1LCA3NzkzMiwgMCwgCisgICAgOTExMiwgNzI3MjEsIDg2MywgOTQ5MCwgNzUwMzcsIDEyODAzNywgNDMzMjMsIDEyMDUxMywgMTE5ODk3LCA5MDcxLCAKICAgICA2ODA1NCwgMCwgMzY1NCwgNzc4OSwgOTYzNywgMTIxMTM2LCAyNTM1LCA2NTUwNCwgNzY1MywgNDA5OTMsIDkyNDE1LCAKICAgICA2NjU4NywgMTI0OTg3LCAwLCA5MjQwMSwgNDM5MjcsIDExMDA2LCAxMjkyNywgNzgwNywgODA3MywgMTIwOTgwLCAxMDYyOSwgCi0gICAgMTI3ODY5LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAotICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDEyMDk3NSwgOTgzMzUxLCA2NjYzMywgODY5NSwgNDgxNSwgMTEzMjIsIAotICAgIDU4MTEsIDEyMzQ1LCA3MDQ5LCAxMTg4MTEsIDUxOTUsIDE5NTA4MSwgMCwgNjY2MzksIDkyOTM5LCAwLCAwLCAxMjgwNDEsIAotICAgIDY3OTAzLCA2NzczOSwgMTI2MiwgMTIwMTY1LCA2NTYxLCAxOTkzOSwgMTI4NjczLCAwLCAxMjczMTgsIDExOTkwNiwgCi0gICAgNzAzMDAsIDAsIDk4MzA5NywgMCwgOTgzNjY3LCAxMTk5MDcsIDY0NjEyLCAxMTk5MSwgMTIwNjU0LCAwLCA5Mjk0MywgCi0gICAgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyNzMxNiwgNTcwMiwgMzY1NSwgNjc2NjEsIDg0MzAsIDAsIDcxMjIzLCAKLSAgICAxMjA3NTgsIDAsIDc0MDU3LCA5NjAzLCAxMjgwNzksIDUyNTQsIDEyMDc0MiwgNzcyNCwgNzQzODgsIDY4Mzc1LCAxMDc5NiwgCi0gICAgNTEyOSwgMCwgNzA4MTYsIDU5MCwgNzU3OSwgNTYxNCwgNTg5MywgOTIyODAsIDExNzIwLCA5MjQ5NiwgMTE3MjEsIDcwODA0LCAKLSAgICA0Nzk4LCAxMjE0NjgsIDExOTMxNiwgNjYwMzgsIDQ3OTMsIDY3ODUxLCAxMTcyNiwgMTI3NTQxLCA3NDIwNCwgNjg2MTAsIAotICAgIDY4ODI0LCA2ODYyNiwgODk0LCAzMDAsIDEyMDg3NSwgMTIzMDYsIDY2MjM1LCA4MDA0LCAwLCAxMTk1NzQsIDI1NjIsIAotICAgIDcwMTU2LCAxMjA4NTYsIDQyNTAzLCA5MjkwMCwgMTE2NTIsIDkxNzgxMywgOTE3Nzk5LCAxMTkyNDEsIDY0Njk5LCAKLSAgICAxMjY1NjksIDUwOTYsIDUwOTUsIDI4NjMsIDM0MjQsIDkyMjQ0LCAxMDQ1NCwgNDI1MzAsIDUwOTQsIDcwODczLCAwLCAKLSAgICAxMzE1NiwgMTI5MDU3LCAxMDgzMiwgNTA5MywgMCwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgMTEzMjcsIDAsIDUwOTEsIAotICAgIDE3NiwgMCwgOTE1MywgNDEwNCwgNzg1OTksIDc4NjAxLCAxMjE1LCA0MjcxMiwgNTc0NCwgMTIyNzIsIDk4MzIsIDExNzc3LCAKLSAgICA3MTI5OSwgNjY4MTcsIDQyODgxLCAwLCA4OTgwLCAxMTg5ODgsIDY3ODYxLCA4ODQ0LCA3MjA5LCAwLCAwLCA0Mjc4LCAKLSAgICAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIDAsIDY1NTU4LCA2NTk0NiwgODExMywgNzA4NywgNTI1NSwgCi0gICAgMTc4NiwgNjYxLCAxMjgxMTYsIDAsIDkxNzkyNSwgNzQ0MjMsIDcxMzQ1LCA1ODYsIDc0NDE0LCA2NDM1OSwgMTI2NywgCi0gICAgMTI4MjY5LCA2NTQ2OCwgMTk0OTY2LCA2NTczMSwgMCwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDAsIAotICAgIDY1NjIsIDEyOTI4LCAxOTQ5MDQsIDEyMjgsIDY1NDkwLCAxMTM4MywgMCwgMTI3OTUzLCA3MDM0MywgMTcxNCwgNzQ0MDYsIAotICAgIDEyMDc1MSwgMCwgMTIxMTEzLCA5ODM5NzYsIDY2MjI1LCA3MDExMCwgNzA4NjcsIDQyNjYwLCAxMTQzNiwgMjA3MCwgNjQsIAotICAgIDEyMDY5NCwgMTIxMDI1LCAxMDI5MSwgMTAzMjMsIDI4MjYsIDExMzgwOSwgMTI2NTEwLCAwLCA0MjAwOCwgOTcwOCwgCi0gICAgNDI3MTAsIDAsIDQyMDExLCA0MTk5OSwgOTIxNjQsIDEyMjA2LCA1ODM5LCAxNzAyLCAxMjQwLCA3NDA2NSwgNjI4NiwgCi0gICAgOTY4OSwgOTgzOTY5LCA2NTgzMywgNzc4NDgsIDAsIDE3NjUsIDAsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAotICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNzMwNywgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDAsIDEyMTIyNSwgCi0gICAgMCwgNzA4MTksIDEyODU4NiwgOTE3OTUxLCA2OTYzLCAxMjY3MDQsIDEyNjY3LCA2NDU0MCwgNzQ3ODYsIDEwMTQ3LCAKLSAgICAxMjkzNSwgMTI3NTY4LCAxMjY0ODMsIDEyMTI4MSwgMCwgMCwgNzg3NTcsIDAsIDExMzgxNSwgMTIxMzAyLCAwLCA5OTk0LCAKLSAgICAxMjQ2NywgMjg2NCwgNjQ3MTksIDExNDgsIDEwNDM1LCAxMTQ2MiwgNDE2NzUsIDcwODQsIDI3NjUsIDc4NDY2LCA0MzM4MiwgCi0gICAgMCwgMTIwNzE5LCAxMjgxODgsIDkyNTE2LCA2NjY2MiwgMCwgNzgxMzMsIDkzNjQsIDE5NDY4NSwgNzQ0MTYsIDEyNzc5NywgCi0gICAgMCwgNzc5ODgsIDI2MywgMTA0NDksIDQxMjg4LCAwLCA0MTgzOSwgNzgzODUsIDk4Mzc0MiwgNzAzMTMsIDEyOTE0MCwgCi0gICAgNjkzMSwgNjk3MjIsIDQzMjYxLCA3MTc3LCA3MDEwNSwgOTI2NTIsIDAsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIAotICAgIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDAsIDQxMjkwLCA5ODM3MTYsIDc1MCwgMCwgNzEzMDQsIDEwMTYzLCA2MzkxMywgCi0gICAgNzEzMDAsIDcwMzIsIDU5NTQsIDY0OTMxLCA0MzE0LCAxMjg2MDAsIDE5OCwgNjg0NTMsIDczMCwgMTIwMDk0LCA2MzkwNywgCi0gICAgNzc5OTMsIDcwODE4LCAxMzE2NSwgNzEwNywgNzQxNzEsIDQyODA0LCA2NzgsIDgyNDAsIDc4MDE1LCAxMjUwMDUsIDQxMzc4LCAKLSAgICAxMTAwOCwgNjkzOCwgNzAwMjYsIDkyNjM3LCAyMDk3LCA2NjI0NiwgMTIwNTYwLCA3MDgyMywgMTk0OTkwLCA5ODM2MDQsIAotICAgIDM4OTIsIDY4NjMyLCA2OTY0MiwgNjcxMiwgNjYwNDUsIDQxNDcwLCA2NDgwNSwgMCwgOTgzMjEzLCAxMjY1MTEsIDY0ODAxLCAKLSAgICAxMjc4MTgsIDQ5NywgMTIxMDAsIDU5NTMsIDkyNjY3LCA3Nzk2LCA2OTY2OSwgNDMyNTQsIDczODMxLCAwLCAxMDI5MywgCi0gICAgNTk1MiwgMTI4MSwgNDM3NDcsIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDkyNjAzLCAKLSAgICAzNDI1LCAxMjc0ODgsIDEyNjUyMywgMjgzNiwgOTgzNzM4LCAwLCA5NzA3LCAxMTM3MTgsIDQzMjAyLCAwLCAwLCA2NTE5OSwgCi0gICAgMTczOCwgMTI4MzExLCA2NzcwNywgMjgzMiwgOTI3MDIsIDk2NzAsIDExMTAxLCAwLCA2NjM3NCwgOTE3OTU2LCAxMTk1NTIsIAotICAgIDI4MjIsIDY4MTIyLCA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgMCwgMCwgCi0gICAgMTIxMzc3LCAxMjcwOCwgOTE3OTU0LCA1MDkwLCA1MDg5LCAxMjc5NzcsIDkxNzk1MywgMTE5MTA5LCAwLCA3MDgyNiwgMzE5LCAKLSAgICAxMTg4NDcsIDQzNDc5LCA5NDc3LCAwLCAwLCA1MDg3LCA3NDg4NiwgNzY0MCwgOTYsIDUwODYsIDk4MzU5NywgOTIzNzksIDAsIAotICAgIDUwODUsIDY0Mjg2LCA5MjY2NSwgMTEzNzE3LCA0MTQyMiwgMTE5NjE3LCAxMTk5MDEsIDQyMzU2LCAzNzcyLCAxMTkwNDIsIAotICAgIDAsIDUwMTEsIDAsIDk4MzMyOSwgMTI2NTg3LCAwLCAxMjA2OTgsIDExODg3NCwgNjY3NywgNzYwMSwgMCwgNTkxLCA2NDQxOSwgCi0gICAgMTE4OTUzLCA5MjI2MiwgMTE4ODk1LCA3MDc5OSwgNzAwODQsIDAsIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgCi0gICAgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgCi0gICAgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIAotICAgIDQxMjczLCAxMjE0NDgsIDc0NTMxLCA2NzI4LCAwLCA5NzE1LCAxMjkyOTcsIDgyNTgsIDExNzUzLCA3NDgyMCwgMCwgOTYwMiwgCi0gICAgMTE4OTE5LCA0MiwgMTExOTEsIDQzNjg4LCA2ODI0MywgMCwgNzQ1OCwgMCwgMCwgNjUzODUsIDY3MTM1LCA2NzEzNCwgCi0gICAgMTE5NTgsIDExMTY1LCA5MTc4MjIsIDEyNTA4NywgNjI1NCwgNDI3MjEsIDY2MzM2LCA4MDQ1LCAxMTU1MCwgMTk1MDY0LCAKLSAgICA2NzEzMiwgNjcxMzEsIDQyODU4LCAxMTc4OSwgNjU4NjgsIDU1NTcsIDEwMTMzLCA5NzM3LCAxMzEwOSwgMCwgOTQ2NywgCi0gICAgNTU1OCwgODg3OCwgNDM4NDQsIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDAsIDkwODYsIDY0NTY2LCA5ODMxODUsIAotICAgIDY0NTg0LCA3NDM3LCA3NDU0LCAxMjU5NCwgNzM3NDksIDY4MzYyLCA0NTQ2LCA3NzMxLCAwLCA3MDA0OCwgNzQyNDMsIAotICAgIDEyNTA5MiwgMzgwNSwgMCwgNjcxMjgsIDQ0MDAxLCA0MTAwOCwgMTI4MDUyLCA2MzA3LCAxOTk0OSwgNjcxMjksIDc1NDQsIAotICAgIDEyNDk4OSwgNDM0NjksIDEyMTA5NSwgOTgzNzM1LCAxMDE1MiwgNjQ0MjIsIDY1MDkxLCA2NzEyNCwgNzYwMiwgNjQ3MjksIAotICAgIDAsIDQzNTIxLCAwLCA0MjMwMiwgNDM3MTEsIDQzNTIzLCA0MTQ0NywgNTU1OSwgNjg0ODMsIDg3MDQsIDIzOTcsIDU1NTYsIAotICAgIDAsIDAsIDAsIDkwMTEsIDk2MzAsIDExMTY2LCAwLCA5Mzk5OCwgNTUwNiwgOTI0OTgsIDE5MTEsIDY2NjUyLCA2NzY4NiwgCisgICAgMTAxMDA0LCA3NDA4OCwgMzA1NiwgMTA4MjMsIDEyNzI2NywgOTIzOTEsIDg3NjIsIDEwNTA4LCA2OTY4OSwgNzM3NzAsIAorICAgIDQzOTY5LCA0MzE5MywgMTA3MzcsIDM0NjMsIDcyODU4LCAxOTQ3OTAsIDY2NjMzLCA4Njk1LCA0ODE1LCAxMTMyMiwgNTgxMSwgCisgICAgMTIzNDUsIDcwNDksIDExODgxMSwgNTE5NSwgMTk1MDgxLCAxOTQ5NTgsIDY2NjM5LCA5MjkzOSwgODMxOTMsIDEyMTAxMCwgCisgICAgMTI4MDQxLCA2NzkwMywgNjc3MzksIDEyNjIsIDEyMDE2NSwgNjU2MSwgMTk5MzksIDEyODY3MywgMCwgMTI3MzE4LCAKKyAgICAxMTk5MDYsIDcwMzAwLCAwLCA5ODMwOTcsIDAsIDk4MzY2NywgMTE5OTA3LCA2NDYxMiwgMTE5OTEsIDEyMDY1NCwgCisgICAgOTE3ODY2LCA5Mjk0MywgMTUwMiwgOTE3NTY4LCAxMjc5ODgsIDkxMDcsIDEyMjkwNCwgNTcwMiwgMzY1NSwgNjc2NjEsIAorICAgIDg0MzAsIDAsIDcxMjIzLCAxMjA3NTgsIDExODk2MywgNzQwNTcsIDk2MDMsIDEyODA3OSwgNTI1NCwgMTIwNzQyLCA3NzI0LCAKKyAgICA3NDM4OCwgNjgzNzUsIDEwNzk2LCA1MTI5LCAwLCA3MDgxNiwgNTkwLCA3NTc5LCA1NjE0LCA1ODkzLCA5MjI4MCwgMTE3MjAsIAorICAgIDkyNDk2LCAxMTcyMSwgNzA4MDQsIDQ3OTgsIDEyMTQ2OCwgMTE5MzE2LCA2NjAzOCwgNDc5MywgNjc4NTEsIDExNzI2LCAKKyAgICAxMjc1NDEsIDc0MjA0LCA2ODYxMCwgNjg4MjQsIDY4NjI2LCA4OTQsIDMwMCwgMTIwODc1LCAxMjMwNiwgNjYyMzUsIDgwMDQsIAorICAgIDEyNzE4OSwgMTE5NTc0LCAyNTYyLCA3MDE1NiwgMTIwODU2LCA0MjUwMywgOTI5MDAsIDExNjUyLCA5MTc4MTMsIDkxNzc5OSwgCisgICAgMTE5MjQxLCA2NDY5OSwgMTI2NTY5LCA1MDk2LCA1MDk1LCAyODYzLCAzNDI0LCA5MjI0NCwgMTA0NTQsIDQyNTMwLCA1MDk0LCAKKyAgICA3MDg3MywgMCwgMTMxNTYsIDEyOTA1NywgMTA4MzIsIDUwOTMsIDE5NDgzOSwgNjk4NTIsIDcyNDMwLCA1MDkyLCAxMDcwOCwgCisgICAgMTEzMjcsIDAsIDUwOTEsIDE3NiwgMTEzODEwLCA5MTUzLCA0MTA0LCA3ODU5OSwgNzg2MDEsIDEyMTUsIDQyNzEyLCA1NzQ0LCAKKyAgICAxMjI3MiwgOTgzMiwgMTE3NzcsIDcxMjk5LCA2NjgxNywgNDI4ODEsIDk4Mzc4NSwgODk4MCwgMTE4OTg4LCA2Nzg2MSwgCisgICAgODg0NCwgNzIwOSwgOTgzNzQxLCAwLCA0Mjc4LCAxMjg4MDksIDAsIDExOTE2MCwgNzA4MjEsIDkwNzQsIDQzNDgsIAorICAgIDkxNzg3MiwgNjU1NTgsIDY1OTQ2LCA4MTEzLCA3MDg3LCA1MjU1LCAxNzg2LCA2NjEsIDEyODExNiwgOTE3ODU3LCAKKyAgICA5MTc5MjUsIDc0NDIzLCA3MTM0NSwgNTg2LCA3NDQxNCwgNjQzNTksIDEyNjcsIDEyODI2OSwgNjU0NjgsIDEyNTIzNCwgCisgICAgNjU3MzEsIDk4Mzg5OSwgNzI0MDUsIDM2MjEsIDkyOTMyLCA2NjY2NiwgNjQyMTEsIDEyOTM1MSwgNjU2MiwgMTI5MjgsIAorICAgIDEyMTMwNiwgMTIyOCwgNjU0OTAsIDExMzgzLCAwLCAxMjc5NTMsIDcwMzQzLCAxNzE0LCA3NDQwNiwgMTIwNzUxLCAwLCAKKyAgICAxMjExMTMsIDEyNzM4OSwgNjYyMjUsIDcwMTEwLCA3MDg2NywgNDI2NjAsIDExNDM2LCAyMDcwLCA2NCwgMTIwNjk0LCAKKyAgICAxMjEwMjUsIDEwMjkxLCAxMDMyMywgMjgyNiwgMTAwNTI2LCAxMjY1MTAsIDEyNzU1NywgNDIwMDgsIDk3MDgsIDQyNzEwLCAKKyAgICAwLCA0MjAxMSwgNDE5OTksIDkyMTY0LCAxMjIwNiwgNTgzOSwgMTcwMiwgMTI0MCwgNzQwNjUsIDYyODYsIDk2ODksIAorICAgIDk4Mzk2OSwgNjU4MzMsIDc3ODQ4LCAwLCAxNzY1LCA5ODMzMDEsIDEyODYyMiwgNjU1ODgsIDkyMzUwLCA5ODMyODEsIDAsIAorICAgIDg0MDEsIDk4MzkyNCwgNDIwMTQsIDEyNTIzMCwgNzAzMCwgMTIwOTY5LCAxMDQ3OSwgNjQ5NTksIDI4NTIsIDcyNzI4LCAKKyAgICAxMjEyMjUsIDAsIDcwODE5LCAxMTk4ODcsIDEyNTIyNywgNjk2MywgMTI2NzA0LCAxMjY2NywgNjQ1NDAsIDc0Nzg2LCAKKyAgICAxMDE0NywgMTI5MzUsIDEyNzQwMSwgMTE5MTg1LCA3MjgxMiwgNzEyNjUsIDEyODc3OSwgNzg3NTcsIDAsIDExMzgxNSwgCisgICAgMTIxMzAyLCAxMjI4OTIsIDk5OTQsIDEyNDY3LCAyODY0LCA2NDcxOSwgMTE0OCwgMTA0MzUsIDExNDYyLCA0MTY3NSwgCisgICAgNzA4NCwgMjc2NSwgNzg0NjYsIDQzMzgyLCA5ODM4MTUsIDEyMDcxOSwgMTI4MTg4LCA5MjUxNiwgNjY2NjIsIDAsIDc4MTMzLCAKKyAgICA5MzY0LCAxOTQ2ODUsIDc0NDE2LCAxMjc3OTcsIDAsIDc3OTg4LCAyNjMsIDEwNDQ5LCA0MTI4OCwgMCwgNDE4MzksIAorICAgIDc4Mzg1LCAxMDA2OTMsIDcwMzEzLCAxMjc0NzYsIDY5MzEsIDY5NzIyLCA0MzI2MSwgNzE3NywgNzAxMDUsIDkyNjUyLCAKKyAgICAxMTk4OTUsIDAsIDQyNjIsIDEwMjg1LCAxMDcyMiwgNDIwMjAsIDEyNjU3NSwgNjgwNiwgNjk5MiwgNDIwMTksIDE5NTA1NiwgCisgICAgNDEyOTAsIDk4MzcxNiwgNzUwLCAxMjEwODgsIDcxMzA0LCAxMDE2MywgNjM5MTMsIDcxMzAwLCA3MDMyLCA1OTU0LCAKKyAgICA2NDkzMSwgNDMxNCwgMTAwNjM2LCAxOTgsIDY4NDUzLCA3MzAsIDEwMDYzNSwgNjM5MDcsIDc3OTkzLCA3MDgxOCwgMTMxNjUsIAorICAgIDcxMDcsIDc0MTcxLCA0MjgwNCwgNjc4LCA4MjQwLCA3ODAxNSwgMTI1MDA1LCA0MTM3OCwgMTEwMDgsIDY5MzgsIDcwMDI2LCAKKyAgICA5MjYzNywgMjA5NywgNjYyNDYsIDEyMDU2MCwgNzA4MjMsIDE5NDk5MCwgOTgzNjA0LCAzODkyLCA2ODYzMiwgNjk2NDIsIAorICAgIDY3MTIsIDY2MDQ1LCA0MTQ3MCwgNjQ4MDUsIDAsIDk4MzIxMywgMTI2NTExLCA2NDgwMSwgMTI3ODE4LCA0OTcsIDEyMTAwLCAKKyAgICA1OTUzLCA5MjY2NywgNzc5NiwgNjk2NjksIDQzMjU0LCA3MzgzMSwgMTI4MjQzLCAxMDI5MywgNTk1MiwgMTI4MSwgNDM3NDcsIAorICAgIDAsIDEyMTM5OSwgMTA2NzcsIDYwNCwgNDEwOTcsIDkxODIsIDE4NTksIDAsIDcyODU2LCAzNDI1LCAxMjc0ODgsIDcyNzI1LCAKKyAgICAyODM2LCA5ODM3MzgsIDAsIDk3MDcsIDcwNzQyLCA0MzIwMiwgMCwgMCwgNjUxOTksIDE3MzgsIDExOTg5MSwgNjc3MDcsIAorICAgIDI4MzIsIDkyNzAyLCA5NjcwLCAxMTEwMSwgOTgzNzk1LCA2NjM3NCwgMTAwNzA0LCAxMTk1NTIsIDI4MjIsIDY4MTIyLCAKKyAgICA0NDM2LCA5MjUxOSwgOTgzMDgxLCA3Mzc1MiwgNzAzMDUsIDY0ODcyLCA5MjM0MCwgMTMzMSwgOTE3OTU1LCA5ODM3MDYsIAorICAgIDEyMTM3NywgMTI3MDgsIDEyOTMzMywgNTA5MCwgNTA4OSwgMTI3OTc3LCAzMjAwLCAxMDA5ODQsIDAsIDcwODI2LCAzMTksIAorICAgIDExODg0NywgNDM0NzksIDk0NzcsIDAsIDE5NDg4MSwgNTA4NywgNzQ4ODYsIDc2NDAsIDk2LCA1MDg2LCAxMjc3NjMsIAorICAgIDkyMzc5LCAwLCA1MDg1LCA2NDI4NiwgOTI2NjUsIDExMzcxNywgNDE0MjIsIDEwMDcxMCwgMTE5OTAxLCA0MjM1NiwgMzc3MiwgCisgICAgMTE5MDQyLCAxMTk5MDksIDUwMTEsIDE5NDg4MiwgMTk0NzQyLCAxMjY1ODcsIDAsIDEyMDY5OCwgMTE4ODc0LCA2Njc3LCAKKyAgICA3NjAxLCAxOTQ3MjUsIDU5MSwgNjQ0MTksIDExODk1MywgOTIyNjIsIDExODg5NSwgNzA3OTksIDcwMDg0LCAxMjUxMTEsIAorICAgIDEwOTM5LCA2MTA2LCA2OTMzLCA0MTI3MSwgNjc2MCwgNzEzNDMsIDQ1MzQsIDQxMjcwLCAxMjg4NzYsIDY3MTM4LCA2NTU3NCwgCisgICAgMTk0OTQ3LCA5MjI0LCA2NzE0MCwgMzY3MSwgODk3NiwgNjcxMzksIDAsIDQxMjc1LCA2MzcyLCA4Mjk5NywgNTUyNjEsIAorICAgIDc5NjMsIDYzNzEsIDAsIDU2OCwgOTIzNjgsIDQxMjczLCAxMjAzMjIsIDc0NTMxLCA2NzI4LCA5ODM2MDksIDk3MTUsIAorICAgIDEyMDk3NSwgODI1OCwgMTE3NTMsIDc0ODIwLCA5ODM5NjUsIDk2MDIsIDExODkxOSwgNDIsIDExMTkxLCA0MzY4OCwgCisgICAgNjgyNDMsIDAsIDc0NTgsIDczOTcyLCA5ODM5NjAsIDY1Mzg1LCA2NzEzNSwgNjcxMzQsIDExOTU4LCAxMTE2NSwgMTk0Njk4LCAKKyAgICAxMjUwODcsIDYyNTQsIDQyNzIxLCA2NjMzNiwgODA0NSwgMTE1NTAsIDE5NTA2NCwgNjcxMzIsIDEyNjk2LCA0Mjg1OCwgCisgICAgMTE3ODksIDY1ODY4LCA1NTU3LCAxMDEzMywgOTczNywgNzMwMCwgMCwgOTQ2NywgNTU1OCwgODg3OCwgNDM4NDQsIAorICAgIDE5NTAzNiwgNzQ1MSwgNjcwNiwgMTAxNDYsIDEwMDc2MiwgOTA4NiwgNjQ1NjYsIDk4MzE4NSwgNjQ1ODQsIDc0MzcsIAorICAgIDc0NTQsIDEyNTk0LCA3Mzc0OSwgNjgzNjIsIDQ1NDYsIDc3MzEsIDAsIDcwMDQ4LCA3NDI0MywgMTI1MDkyLCAzODA1LCAwLCAKKyAgICA2NzEyOCwgNDQwMDEsIDQxMDA4LCAxMjgwNTIsIDYzMDcsIDE5OTQ5LCA2NzEyOSwgNzU0NCwgMTI0OTg5LCA0MzQ2OSwgCisgICAgMTIxMDk1LCA5ODM3MzUsIDEwMTUyLCA2NDQyMiwgNjUwOTEsIDY3MTI0LCA3NjAyLCA2NDcyOSwgMCwgNDM1MjEsIAorICAgIDEyMDc3MiwgNDIzMDIsIDQzNzExLCA0MzUyMywgNDE0NDcsIDU1NTksIDY4NDgzLCA4NzA0LCAyMzk3LCA1NTU2LCAwLCAwLCAKKyAgICA2NjgwMSwgOTAxMSwgOTYzMCwgMTExNjYsIDAsIDkzOTk4LCA1NTA2LCA5MjQ5OCwgMTkxMSwgNjY2NTIsIDY3Njg2LCAKICAgICA5OTYxLCA4ODQ1LCA2NjY5OCwgNjgzMjUsIDEwNzkyLCA4ODg5LCAxMjE0MDIsIDIwOTgsIDAsIDY0NzUxLCA3MDMwOSwgCi0gICAgNjY2MjIsIDEyNjYyNiwgMCwgNzQzNjQsIDY4ODE2LCAxMjkxNTIsIDk4MzgwNSwgNDI5MDksIDc1NTIsIDcwMDkyLCAKLSAgICAxOTQ1NjcsIDY1Mzg0LCA3MjIzLCA0NTU5LCA5MzAxNSwgMTk1NiwgNDMxMzgsIDcwMjQsIDY1NzI4LCA0MzQ5MCwgMTIxMCwgCi0gICAgMTk1MDc3LCA2NTE3NSwgMTAxODQsIDQzMTQwLCA0MzY1NCwgMCwgOTgzMjMzLCAxMjUwNDUsIDM4LCA4NTMzLCA2NjY2OSwgCi0gICAgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIDc4ODg0LCAKLSAgICA0Mjg2MCwgMTE5ODM4LCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAxMjAxMjYsIAotICAgIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIDExNjUwLCAKLSAgICA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgOTgzNzcwLCAwLCAKLSAgICA2NDcxNCwgNzE0NzksIDcwODAyLCAxMjE2MiwgMTIxMjAsIDQzNDc2LCA5ODM3NjYsIDExMDI0LCA3NDgxMSwgNjYyMjgsIAotICAgIDEwNTYzLCA5Mjk1NCwgMTI3MTk2LCA0MzUyMiwgMjQ2MiwgOTI5NTUsIDE4MzcsIDEyNTA4NiwgNjM5NzIsIDY5NTcsIDAsIAotICAgIDExMzgyMCwgNDk1MiwgNjU3MTgsIDY0NDA1LCA1NTA0LCA2NTcyMCwgNjU3MTQsIDY1NzE1LCA2NTcxNiwgMTI4MDI2LCAKLSAgICA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgMCwgCi0gICAgNjM5NjgsIDEyNzgzNSwgMzQ4MywgMTE5NTkzLCAxOTg5LCA5ODMxNzYsIDY5Njc4LCA5MTA0LCAzNTAzLCA2NTM3NSwgCi0gICAgNjgzMDAsIDY2OTQsIDQyNjMzLCAxODY0LCAwLCA3NDMwNiwgNDE0NDYsIDI1NDAsIDc3MzYsIDEyMTQzNCwgNzQwNjQsIAorICAgIDY2NjIyLCAxMjY2MjYsIDAsIDcwNzI0LCA2ODgxNiwgMTI5MTUyLCAxMjQ5NTMsIDQyOTA5LCA3NTUyLCA3MDA5MiwgCisgICAgMTI3NDkwLCA2NTM4NCwgNzIyMywgNDU1OSwgOTMwMTUsIDE5NTYsIDQzMTM4LCA3MDI0LCA2NTcyOCwgNDM0OTAsIDEyMTAsIAorICAgIDE5NTA3NywgNjUxNzUsIDEwMTg0LCA0MzE0MCwgNDM2NTQsIDkxNzkwMiwgMTI4NTU4LCAxMjUwNDUsIDM4LCA4NTMzLCAKKyAgICA2NjY2OSwgMTE5MTI0LCA5ODMyOTUsIDk4Mzc5MiwgMCwgNDM1NywgMCwgNzAyODksIDkxNzg2MywgNzQyMzMsIDk5NjcsIAorICAgIDc4ODg0LCA0Mjg2MCwgMTE5MzIzLCAxMDk0MSwgNjU3MjEsIDY5NjIsIDAsIDgzMjc5LCAxMTM4MDgsIDAsIDExMDE0LCAKKyAgICAxMjAxMjYsIDg5NDIsIDEyMDAwLCA2OTIyNCwgOTIyNjcsIDEyODUzNiwgMTE5NzQsIDY3MzYzLCA0Mjc3MiwgNDI2NTAsIAorICAgIDExNjUwLCA1MDEzLCA5MjY2MywgNjg4MTAsIDY2MjEwLCAxMTg5MTQsIDY2MTMsIDkyNDc2LCAwLCAxMTE5MywgMTk0Njc3LCAKKyAgICA3Mjc1NCwgNjQ3MTQsIDcxNDc5LCA3MDgwMiwgMTIxNjIsIDEyMTIwLCA0MzQ3NiwgOTgzNzY2LCAxMTAyNCwgNzQ4MTEsIAorICAgIDY2MjI4LCAxMDU2MywgOTI5NTQsIDEyNzE5NiwgNDM1MjIsIDI0NjIsIDkyOTU1LCAxODM3LCAxMjUwODYsIDYzOTcyLCAKKyAgICA2OTU3LCAwLCAxMTM4MjAsIDQ5NTIsIDY1NzE4LCA2NDQwNSwgNTUwNCwgNjU3MjAsIDY1NzE0LCA2NTcxNSwgNjU3MTYsIAorICAgIDcyODc3LCA3NTAxNiwgMTI3MTE5LCAzMTA5LCA2Mzk3NSwgNzQwMjgsIDEyNzIxMywgODEwNywgNjcxNTQsIDExMjcsIDQ1NSwgCisgICAgMCwgNjM5NjgsIDcyODYwLCAzNDgzLCAxMTk1OTMsIDE5ODksIDk4MzE3NiwgNjk2NzgsIDkxMDQsIDM1MDMsIDY1Mzc1LCAKKyAgICA2ODMwMCwgNjY5NCwgNDI2MzMsIDE4NjQsIDAsIDcyODEwLCA0MTQ0NiwgMjU0MCwgNzczNiwgMTIxNDM0LCA3NDA2NCwgCiAgICAgMTI4NjAxLCAxMDUyMSwgNzA3ODYsIDQyMTczLCA5NzA1LCA3NDEyNCwgODYwNCwgNjk1NSwgMTA5MTYsIDQzNjg0LCA2MTQ5LCAKICAgICAzODg3LCAxOTk1NiwgMTQxMSwgMjgyNCwgMCwgMTAxMDYsIDEyNzg2MiwgMTQwMywgMTI1MDUzLCAxMzQ3LCA5NjMxLCAKLSAgICA3NDQ0NCwgOTgzNzUzLCAxMjc5OTcsIDkyOTUxLCA3NDg5NywgODY0MCwgMCwgMjU4LCAxNjU0LCAwLCAwLCA5ODM0NzksIAotICAgIDQzMzE0LCAwLCAwLCA0MDQyLCAxMTQ3OCwgMjg3MywgNjM5NzcsIDExNTIyLCA0MTY2OCwgODU0OSwgMTA4NjEsIDEyMTA1MywgCi0gICAgNjM5NzYsIDcwMzc3LCA2ODYyMywgNjcwODIsIDY3MDgxLCA0MTM5MSwgNjcwODQsIDgzNDY1LCAzNzYsIDY5ODcsIDkyMjEsIAotICAgIDAsIDAsIDg4MjMsIDEyODY5NywgMTI5NDMsIDY1MTg1LCA0MTg2OSwgMTI2MTksIDEyODA2NywgMTAxNTQsIDk4MzA0MywgCi0gICAgNzQ0MzksIDIwMzksIDAsIDc0NDYsIDE2ODQsIDYzOTc5LCAxMDk3NCwgNDU4LCAxMjA2MjAsIDgyOTUwLCA2OTc5MSwgCi0gICAgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCAKLSAgICA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIAotICAgIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAxMjE1NCwgNzUwNzMsIDQxMjc3LCAKLSAgICA2NDY1OCwgOTgzNDU2LCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIDcxMTkzLCA2NTM3MSwgNzA3OCwgCi0gICAgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIDk4MzM3MCwgNDE0MzQsIDYwNjIsIDAsIAotICAgIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCA3MTIwMCwgOTgzNTkyLCAxMjEyMjMsIAotICAgIDEyNjU2NywgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIDkyODkwLCA0MTYyMiwgMCwgMCwgCi0gICAgMTE5NTU2LCA3NDU4NCwgNzYzMiwgOTcxNiwgMTk5NTQsIDk4MDUsIDU5OTAsIDkwMCwgMCwgNjM5NTcsIDExOTYzOCwgMCwgCi0gICAgMzYxMiwgMCwgNjQzNzYsIDkzOTg3LCA1Mzg5LCA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIAotICAgIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgCi0gICAgMTIxMDA1LCAxOTQ5MzksIDExOTEyNywgOTAwMiwgMCwgNzQzNzIsIDc0MjM2LCA4NDc4LCA3NTk4LCA1NDYsIDQyNDY5LCAKLSAgICA2NTU2OSwgMTkxOCwgOTU0MiwgNDcyLCA3NzE2LCAxMDMxOSwgMTAzODMsIDY5OTYsIDQzMDc3LCA2Mzk1MiwgODQyNSwgCi0gICAgMzYwMiwgODMyOCwgMTE3NjQsIDgzMTk5LCA4MzIwMCwgNjUwNjUsIDQxMTgzLCAxMjkwNywgMTAyNzEsIDEwMjg3LCA2ODQsIAotICAgIDQzNTI1LCAxMjc5OTYsIDI4NTQsIDgzMjE0LCA0NTkyLCA2NTc1NSwgODMyMTcsIDY3MTIwLCAxMTk2MywgNDM2MjAsIAotICAgIDY3MTE3LCA3ODI0OSwgNjcxMjMsIDY3MTIyLCA2NzEyMSwgOTg4MSwgNDMxMTUsIDY1NzU3LCAzNDE1LCA2OTY3NywgCi0gICAgNjcxMTYsIDg2NDgsIDEyODM3NywgNjc0MSwgNDMwNDcsIDExOTkwMCwgMTMxODAsIDc4MDc3LCA0MTgsIDEyMDY1MywgCi0gICAgNjQ0OTUsIDEwMjk1LCAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgCi0gICAgODMxODYsIDEwOTExLCA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDk4MzU1NiwgCi0gICAgNDU1NCwgNjY4OTIsIDkwMjMsIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCAKLSAgICA2NzExMywgNjcxMTIsIDYzOTY3LCAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMjEyNzUsIAotICAgIDgxNTksIDkyNjE5LCAxMTY4NiwgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIAotICAgIDY0NTIzLCAxMDM0MywgMTA0MDcsIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEyODAwMywgNDI4OTAsIDc0MDEzLCAxMjA1MCwgCi0gICAgNjgyMDEsIDI4NjAsIDAsIDEyNzkzNCwgNzA4MjgsIDQyNzkyLCA1NzQzLCAxMDQyNCwgMTIwNjUsIDQyODcyLCAxMjE0MDEsIAotICAgIDQzODc1LCA2NzEwMywgODg3NSwgMCwgNjcxMDIsIDY3MTA1LCA3NTMxLCAxMjg0NywgMjQxMywgMTE4OTE3LCA2NzQwNCwgCi0gICAgOTYyLCAwLCAxMjg1NSwgNDExOTYsIDQyNTY0LCAxMjc5NzUsIDE1ODIsIDk4MzcxNSwgNTUwOCwgMCwgMTIwOTA0LCAKLSAgICA3NDU4OCwgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIAotICAgIDc4NjAsIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgCi0gICAgODQwNiwgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgCi0gICAgNDE2MTEsIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIAotICAgIDEyNjU5MiwgMTk1MDk2LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIAotICAgIDY4MzM4LCA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAKLSAgICA5MTc4NjksIDAsIDExMTEwLCA4MzI1NSwgNDU4MCwgNDE5NjcsIDgzMjU4LCA2NDM4NCwgODMyNTIsIDgzMjUzLCAzMDIxLCAKLSAgICA0MjAwNCwgOTgzMDk2LCA4MzI0OSwgNDIzMTcsIDQxOTk4LCAwLCA2OTQ2LCAxOTQ3NTUsIDkyOTY3LCAxMjg0NTUsIAorICAgIDc0NDQ0LCAxOTQ5NDYsIDEyNzk5NywgOTI5NTEsIDc0ODk3LCA4NjQwLCAxMDA5NzYsIDI1OCwgMTY1NCwgMCwgMCwgCisgICAgOTgzNDc5LCA0MzMxNCwgMTI3OTg3LCA3MDY5OSwgNDA0MiwgMTE0NzgsIDI4NzMsIDYzOTc3LCAxMTUyMiwgNDE2NjgsIAorICAgIDg1NDksIDEwODYxLCAxMjEwNTMsIDYzOTc2LCA3MDM3NywgNjg2MjMsIDY3MDgyLCA2NzA4MSwgNDEzOTEsIDY3MDg0LCAKKyAgICA2NzU4OCwgMzc2LCA2OTg3LCA5MjIxLCAwLCAwLCA4ODIzLCAxMjg2OTcsIDEyOTQzLCA2NTE4NSwgNDE4NjksIDEyNjE5LCAKKyAgICAxMjgwNjcsIDEwMTU0LCA5MTc5MjEsIDc0NDM5LCAyMDM5LCAwLCA3NDQ2LCAxNjg0LCA2Mzk3OSwgMTA5NzQsIDQ1OCwgCisgICAgNzI4MzEsIDgyOTUwLCA2OTc5MSwgMTI3MTYxLCAxMTkxNiwgNjUwMTYsIDAsIDY5NjcxLCA0MjExNSwgMTIxMDU3LCAKKyAgICAxMjI4OCwgNzgwNTcsIDY3MDgwLCAxNDkzLCA0MjExMSwgNzU1MywgNDA5NywgMTI4MTk5LCAxMzA4MCwgMCwgNjU4MDgsIAorICAgIDY2MTAsIDYwMzAsIDgwNTksIDc1MDgsIDEzMTMxLCA2NzA3NCwgNjcwNzMsIDEyODUwNiwgODc5NCwgNDEyNzgsIDQxNjI5LCAKKyAgICAxMjE1NCwgNzUwNzMsIDQxMjc3LCA2NDY1OCwgMTI4MTEyLCA2NDM4MCwgNjYyNSwgNDI5MTEsIDE5OTA0LCAwLCAxMjEzMDUsIAorICAgIDcxMTkzLCA2NTM3MSwgNzA3OCwgMTI4Njk5LCA4MzMsIDEyODIyOCwgNjM2OSwgMTk0ODE1LCAxMDk3OSwgNDE5NTMsIAorICAgIDE5NDkzNSwgNDE0MzQsIDYwNjIsIDAsIDAsIDE5OTE2LCA2OTEzLCA5MzMsIDEzNDEsIDk4NDIsIDY3MjAsIDY1NzQ0LCAKKyAgICA3MTIwMCwgMTI4NjQ1LCAxMjEyMjMsIDEyMTI0NSwgNzQwNSwgMTAxMDUsIDY1ODEwLCAwLCA0MTYzMiwgNzQ5MywgNTUyOTAsIAorICAgIDkyODkwLCA0MTYyMiwgNzA3MDQsIDAsIDExOTU1NiwgNzQ1ODQsIDc2MzIsIDk3MTYsIDE5OTU0LCA5ODA1LCA1OTkwLCAKKyAgICA5MDAsIDEwMDc1NywgNjM5NTcsIDExOTYzOCwgOTgzOTc3LCAzNjEyLCA3MDY4NywgNjQzNzYsIDkzOTg3LCA1Mzg5LCAKKyAgICA5MjU5NywgMCwgNjU5MzgsIDI4MzksIDk2MjEsIDU4MiwgMCwgNzQzNjgsIDM3NDksIDY5NDksIDc1NjksIDc0MDYxLCAKKyAgICA4MzIyMiwgODMyMjMsIDY5NTYsIDQ0MDMsIDE5OTYyLCA2NTU1OSwgMzI5OSwgNjU2ODYsIDEyODU2MSwgMTE5MTI3LCAKKyAgICA5MDAyLCA5ODM0MjIsIDc0MzcyLCA3NDIzNiwgODQ3OCwgNzU5OCwgNTQ2LCA0MjQ2OSwgNjU1NjksIDE5MTgsIDk1NDIsIAorICAgIDQ3MiwgNzcxNiwgMTAzMTksIDEwMzgzLCA2OTk2LCA0MzA3NywgNjM5NTIsIDg0MjUsIDM2MDIsIDgzMjgsIDExNzY0LCAKKyAgICA4MzE5OSwgODMyMDAsIDY1MDY1LCA0MTE4MywgMTI5MDcsIDEwMjcxLCAxMDI4NywgNjg0LCA0MzUyNSwgMTAwNTMxLCAKKyAgICAyODU0LCA2Njc0NywgNDU5MiwgNjU3NTUsIDgzMjE3LCA2NzEyMCwgMTE5NjMsIDQzNjIwLCA2NzExNywgNjY3MzYsIAorICAgIDY3MTIzLCA2NzEyMiwgNjcxMjEsIDk4ODEsIDQzMTE1LCA2NTc1NywgMzQxNSwgNjk2NzcsIDY3MTE2LCA4NjQ4LCAKKyAgICAxMDA5OTUsIDY3NDEsIDQzMDQ3LCAxMDA0NjAsIDEzMTgwLCA3ODA3NywgNDE4LCA2Njc1NCwgNjQ0OTUsIDEwMjk1LCAKKyAgICAxMDMyNywgMTAzOTEsIDQxNzUyLCA2Njg0NiwgODY0MSwgNDE0NDksIDgzMTk0LCA3NDEwMCwgODMxODYsIDEwOTExLCAKKyAgICA2OTQyLCAxMjA4NzksIDEwMjQsIDQyODQ5LCA0MTc1MSwgNjk3NzYsIDg5NDEsIDEwMTAzMiwgNDU1NCwgNjY4OTIsIDkwMjMsIAorICAgIDExNjg1LCAxMjE0NzYsIDk5MjgsIDY3MTA5LCA2Njg2NSwgMTE0MzcsIDQzNzQxLCA2NzExMywgNjcxMTIsIDYzOTY3LCAKKyAgICAxMjkwNTYsIDQxMjA2LCAxMjYyNCwgOTA0OSwgNDExODUsIDQzMTY2LCAxMDA4NDAsIDgxNTksIDkyNjE5LCAxMTY4NiwgCisgICAgNzE0NzgsIDY1MjI0LCA0NTY1LCA0NjU1LCAxMTk1NTMsIDEyOTA5MCwgOTIxODMsIDY0NTIzLCAxMDM0MywgMTA0MDcsIAorICAgIDkyNzY0LCA2NjY3MSwgMTE0NjYsIDAsIDEwMDgzNywgNDI4OTAsIDcyODQ0LCAyMjYxLCA2ODIwMSwgMjg2MCwgMCwgCisgICAgMTI3OTM0LCA3MDgyOCwgNDI3OTIsIDU3NDMsIDEwNDI0LCAxMjA2NSwgNDI4NzIsIDEyMTQwMSwgNDM4NzUsIDY3MTAzLCAKKyAgICA4ODc1LCAwLCA2NzEwMiwgNjcxMDUsIDc1MzEsIDEyODQ3LCAyNDEzLCAxMDA1MjIsIDY3NDA0LCA5NjIsIDkxNzgxNCwgCisgICAgMTI4NTUsIDQxMTk2LCA0MjU2NCwgMTAxMDA5LCAxNTgyLCAxMDA4NDIsIDU1MDgsIDEwMDQ5MiwgMTIwOTA0LCA3NDU4OCwgCisgICAgMTA4MDEsIDY5ODc2LCA5MjM1NCwgMTE5MjA3LCA3MTczLCA0OTYsIDEwNDM5LCA0MzEzLCA2NDYwNywgNjk2MzgsIDc4NjAsIAorICAgIDEyODA0OSwgOTA2LCA0Mjc5MywgMjg0MiwgNjQwNSwgNjQ3MjIsIDEzMTMyLCA3OTgsIDY0Njk0LCAxMjgwMSwgODQwNiwgCisgICAgMTE1MywgODMyNjMsIDY0Nzg4LCA4MzI2NSwgODA1NCwgOTE3NCwgNjcwODcsIDY3MDg2LCA5OTY0LCA2NzA5NiwgNDE2MTEsIAorICAgIDQ2NDIsIDY2NTc0LCAxMTU1NiwgNDI1MTIsIDAsIDc4ODU3LCA0MjA4OSwgNzQ2MTMsIDkwMDgsIDAsIDEwMTAyOCwgCisgICAgMTAwNDY4LCA0MjA3OSwgODMyNDgsIDc3OTI0LCA0MjUxMywgNzc5MjcsIDQyODQyLCA3Mzk4NSwgNjUyODUsIDY4MzM4LCAKKyAgICA4MzIzOSwgODMyNDAsIDgzMjQxLCA4MzI0MiwgOTgzNTkwLCAxMTMzNSwgNjQwNjksIDQyMDkzLCAzOTIwLCAxMDA1MDQsIAorICAgIDEwMDg1MCwgMTExMTAsIDgzMjU1LCA0NTgwLCA0MTk2NywgODMyNTgsIDY0Mzg0LCA4MzI1MiwgODMyNTMsIDMwMjEsIAorICAgIDQyMDA0LCA5ODMwOTYsIDgzMjQ5LCA0MjMxNywgNDE5OTgsIDEyODc1NiwgNjk0NiwgMTk0NzU1LCA5Mjk2NywgMTI4NDU1LCAKICAgICAxMjgxOTMsIDY1MjA0LCAwLCA2ODExMywgNDI2OTAsIDk4ODAsIDQyMDEwLCA3NDgyNCwgNjQ1ODksIDEwMTExLCA2NDg3NSwgCi0gICAgMTI3ODgwLCA2ODAzNSwgNDM5OTgsIDExMzYwLCA4MzIzMywgNzQxODIsIDgzMjM1LCA4MzIyOCwgNDIxNDksIDgzMjMwLCAKKyAgICAxMjc4ODAsIDY4MDM1LCA0Mzk5OCwgMTEzNjAsIDgzMjMzLCA3NDE4MiwgNzA2OTEsIDgzMjI4LCA0MjE0OSwgODMyMzAsIAogICAgIDY4NTA4LCA5MTc5OTMsIDY0OTQxLCA3NzkxOSwgMTIwNDIxLCAxMjgwNzcsIDc0ODg1LCA1NTI0NywgNDExMCwgNjYwMDUsIAogICAgIDY5NTksIDEwOTI5LCA0MjkwNywgMTI4MDgwLCA2NjcwMywgNzc5MjEsIDg2MTcsIDQxOTgyLCA2MDI1LCA2OTI0MiwgCi0gICAgMTIxMDY4LCAxOTQ4NTQsIDEyNTEzOSwgMCwgOTU5NywgNDIwOTksIDQzMTcyLCA5ODMzNzgsIDEwMTE3LCA5ODMxNjksIAotICAgIDkyMjk3LCA0MTYzNiwgMTk0ODg5LCA3MzczOCwgMTIwNjgxLCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAotICAgIDEyODMzOSwgNDk2MywgMCwgNjg3NjUsIDAsIDg5NjQsIDY1Njc2LCA3Nzc1LCA5ODM4NDksIDQxOTQ4LCAxMjUwMDMsIDAsIAotICAgIDgzMjM2LCA0MTk0MiwgNjU0NDksIDMxNjAsIDEwMDgxLCAxMzIyNiwgNDIxMjEsIDQyNDc1LCA0MjY2MywgMTIwNjE2LCAKLSAgICA0MTc2NiwgNzQ5NDgsIDY1ODgyLCA3ODg0OSwgNDE3NjAsIDExODksIDkwNSwgNDgwLCAxMDk4NSwgNDE3MzMsIDY3ODU5LCAKLSAgICA5NjI5LCA2NzQyLCAxNzQ1LCA0MzYyNSwgNzM4MzUsIDc4ODgsIDgzNDA1LCAzOTgwLCA3MDM3MywgNDI2NTYsIDQxNTA3LCAKLSAgICA4ODA2LCA3MDIzLCAwLCA3NDI3OSwgOTQ0NywgNzg2NTEsIDc4NjcsIDY5MjE4LCA2MjM2LCAxMjcxNjIsIDAsIDEwNTA1LCAKLSAgICAxMjY2MzgsIDEyODUxLCA4MzQ4OSwgMzQ4LCA1NDc0LCAxMjEzODIsIDMxMDMsIDAsIDQxNzUzLCA3MTEwOSwgMTI4NjA0LCAKLSAgICAwLCA3ODg0NCwgNzg4NDUsIDQxNzM5LCA3ODg0MywgNDI1MTUsIDEwOTMxLCA0MTc1NiwgNDMzNDcsIDQyNTYwLCA1MzkxLCAKLSAgICA0MTc0NiwgMTE5MTQ3LCA5MjU5MSwgNDEyNTksIDU1NjEsIDY5OTMwLCAyNjkxLCA2ODc1MiwgNjU1NTMsIDc5MzMsIDU1NjIsIAotICAgIDY5ODAwLCAxMjgyNjUsIDQxMjYyLCAxMjgxNDYsIDY0NDIxLCA3NDg0NiwgNDEyNTEsIDEyNzI0MiwgMCwgMzk3OSwgCi0gICAgNzEyNDgsIDE5NDg5OSwgNjgzMzEsIDkxNzkxMiwgNjg4NDcsIDk4MzY5NywgODMzODIsIDc0NjMzLCA0MTI2NiwgNjg4MzYsIAotICAgIDY2NTY2LCAxMjg4MzYsIDEwNTg1LCA2NTc0MSwgNDE3MzcsIDIyNzUsIDI2NjYsIDEyMTIzMiwgNDE3MzgsIDgzMSwgNDE5LCAKLSAgICAxMzEyNiwgMTA3MTYsIDgzNDAwLCA0MjgyMiwgMCwgNjQzNCwgNzQ4NTcsIDY5MzksIDc3NjYsIDY0MzIsIDEyODEwNiwgCi0gICAgNjk5MzIsIDkxNiwgNzY5LCA0MTc0MiwgMTE5NjgsIDc0ODA1LCA2NDMzLCA1NTYzLCA1NDcsIDE5NDMsIDY0MzksIDU1NjAsIAotICAgIDQ5OTQsIDQ4NywgMTI2NTM3LCA0NDk3LCAzNzU0LCA4MzA3MiwgODMxMDUsIDkwMzksIDAsIDQxNzc2LCAwLCA4NzE2LCAKLSAgICAxNTk1LCA0MTYxNSwgMTIxMDAxLCAwLCA3NDI2MCwgNzQ4NjAsIDQyODU0LCA0MzIxOSwgODMzMTEsIDEyMTEwNywgMTIxODUsIAotICAgIDExMzgxMCwgNzAwNzIsIDY4MzU1LCA2ODM1NywgNjg0MjEsIDQyODU2LCA4NjM0LCAwLCAxMTk5ODgsIDQyMDksIDc1MDU3LCAKLSAgICA2ODgzMiwgNjU4NzksIDQxNTM4LCA2NTYxMiwgNjg4MjIsIDY2OSwgNTY3OSwgNjg4MTMsIDY4ODE1LCA2ODgxMSwgNjg4MTIsIAotICAgIDY4ODA0LCA1Njc4LCAxMTgyMSwgNjg4MDIsIDY3MTEsIDQ2MCwgMTIxNTEzLCAwLCA5ODM0NjMsIDcwMTE0LCAxMjA3NDcsIAotICAgIDE5NDcxOCwgMTIxNTE5LCA3ODA1MCwgMTE5MDIyLCAwLCAxMjE1MTUsIDEyMTUxNCwgNzc4MiwgOTA0NCwgNDk3NCwgCi0gICAgMTE3NjAsIDc4NDk0LCA3NTc3LCA2NTcxMSwgNDE5MTIsIDEyMTYsIDAsIDEyNzAxNywgNTc5MiwgMTI2NjQzLCAxMjgzMTksIAotICAgIDc4NTAxLCAwLCAyOTMzLCAxMjI0NCwgOTgzNzAyLCA1NjgzLCA5MTc4OTYsIDEyMDg5NSwgNzgxMTksIDE1NDksIDAsIAotICAgIDk4MzIyMywgMTIwMzk4LCA1NjgyLCA2MjA2LCA4NjcwLCAxMDI1NiwgNTY4MCwgNjk5MzUsIDEwMDAxLCA2NzIzNywgCi0gICAgNjk3NjgsIDE0NDksIDEwMjQxLCA3ODI5MCwgMTE5NTg3LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCAKLSAgICA4NTg0LCA2ODAzMCwgNTU2NywgMjcxNywgODMxNzksIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCAKLSAgICA5MTc2MTEsIDEyMDg4MSwgMCwgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIAotICAgIDQzMzczLCA0MjUzOSwgNTk0MiwgODQ2OCwgMTIwNTYxLCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIAotICAgIDY4MDUyLCA2NjU5OCwgMTEwNTkyLCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIAotICAgIDY1NzAxLCAxOTM0LCA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgCi0gICAgNzg3MTYsIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDAsIDExOTYxLCAKLSAgICA3ODcyNSwgNjY4NTAsIDc4NzIzLCA3ODcyMCwgNzg3MjEsIDEyNzg5OSwgNjU1MTUsIDk0OTksIDEwMDM1LCAxMzA2OSwgCisgICAgMTIxMDY4LCAxMjg5NzksIDEyMTM5OCwgOTE3OTc5LCA5NTk3LCA0MjA5OSwgNDMxNzIsIDk4MzM3OCwgMTAxMTcsIDcwNzMzLCAKKyAgICA5MjI5NywgNDE2MzYsIDE5NDg4OSwgNzM3MzgsIDkyNzI0LCA4MzAxLCAwLCAwLCAxODcsIDEyODIzNywgNjU2NjksIAorICAgIDEyODMzOSwgNDk2MywgMTI3OTk2LCA2ODc2NSwgMTI4MTk4LCA4OTY0LCA2NTY3NiwgNzc3NSwgMTk0NzYzLCA0MTk0OCwgCisgICAgMTI1MDAzLCAwLCA4MzIzNiwgNDE5NDIsIDY1NDQ5LCAzMTYwLCAxMDA4MSwgMTMyMjYsIDQyMTIxLCA0MjQ3NSwgNDI2NjMsIAorICAgIDEyMDYxNiwgNDE3NjYsIDc0OTQ4LCA2NTg4MiwgNzg4NDksIDQxNzYwLCAxMTg5LCA5MDUsIDQ4MCwgMTA5ODUsIDQxNzMzLCAKKyAgICA2Nzg1OSwgOTYyOSwgNjc0MiwgMTc0NSwgNDM2MjUsIDczODM1LCA3ODg4LCA4MzQwNSwgMzk4MCwgNzAzNzMsIDQyNjU2LCAKKyAgICA0MTUwNywgODgwNiwgNzAyMywgNzI3MzQsIDc0Mjc5LCA5NDQ3LCA3MDcwMiwgNzg2NywgNjkyMTgsIDYyMzYsIDEyNzE2MiwgCisgICAgOTgzNjA4LCAxMDUwNSwgMTI2NjM4LCAxMjg1MSwgODM0ODksIDM0OCwgNTQ3NCwgMTIxMzgyLCAzMTAzLCAwLCA0MTc1MywgCisgICAgNzExMDksIDEyODYwNCwgMCwgNzg4NDQsIDc4ODQ1LCA0MTczOSwgNzg4NDMsIDQyNTE1LCAxMDkzMSwgNDE3NTYsIDQzMzQ3LCAKKyAgICA0MjU2MCwgNTM5MSwgNDE3NDYsIDEwMDk2NywgOTI1OTEsIDQxMjU5LCA1NTYxLCA2OTkzMCwgMjY5MSwgNjg3NTIsIAorICAgIDY1NTUzLCA3OTMzLCA1NTYyLCA2OTgwMCwgMTI4MjY1LCA0MTI2MiwgMTAwODIzLCA2NDQyMSwgNzQ4NDYsIDQxMjUxLCAKKyAgICAxMjcyNDIsIDAsIDM5NzksIDcxMjQ4LCAxMjk0MTUsIDY4MzMxLCA5MTc5MTIsIDY4ODQ3LCA5ODM2OTcsIDgzMzgyLCAKKyAgICA3NDYzMywgNDEyNjYsIDY4ODM2LCA2NjU2NiwgMTI4ODM2LCAxMDU4NSwgNjU3NDEsIDQxNzM3LCAyMjc1LCAyNjY2LCAKKyAgICAxMjEyMzIsIDQxNzM4LCA4MzEsIDQxOSwgMTMxMjYsIDEwNzE2LCA4MzQwMCwgNDI4MjIsIDAsIDY0MzQsIDc0ODU3LCAKKyAgICA2OTM5LCA3NzY2LCA2NDMyLCAxMjgxMDYsIDY5OTMyLCA5MTYsIDc2OSwgNDE3NDIsIDExOTY4LCA3NDgwNSwgNjQzMywgCisgICAgNTU2MywgNTQ3LCAxOTQzLCA2NDM5LCA1NTYwLCA0OTk0LCA0ODcsIDEyNjUzNywgNDQ5NywgMzc1NCwgODMwNzIsIDgzMTA1LCAKKyAgICA5MDM5LCA3MDY3OCwgNDE3NzYsIDEyNzM5MSwgODcxNiwgMTU5NSwgNDE2MTUsIDc0NDMxLCAxMjg5MDIsIDc0MjYwLCAKKyAgICA3NDg2MCwgNDI4NTQsIDQzMjE5LCA4MzMxMSwgMTIxMTA3LCAxMjE4NSwgMTEzNzI0LCA3MDA3MiwgNjgzNTUsIDY4MzU3LCAKKyAgICA2ODQyMSwgNDI4NTYsIDg2MzQsIDAsIDExOTk4OCwgNDIwOSwgNzUwNTcsIDY4ODMyLCA2NTg3OSwgNDE1MzgsIDY1NjEyLCAKKyAgICA2ODgyMiwgNjY5LCA1Njc5LCA2ODgxMywgNjg4MTUsIDY4ODExLCA2ODgxMiwgNjg4MDQsIDU2NzgsIDExODIxLCA2ODgwMiwgCisgICAgNjcxMSwgNDYwLCAxMjE1MTMsIDAsIDk4MzQ2MywgNzAxMTQsIDEyMDc0NywgMTk0NzE4LCAxMjE1MTksIDc4MDUwLCAKKyAgICAxMTkwMjIsIDk4MzgyOSwgMTIxNTE1LCAxMjE1MTQsIDc3ODIsIDkwNDQsIDQ5NzQsIDExNzYwLCA3ODQ5NCwgNzU3NywgCisgICAgNjU3MTEsIDQxOTEyLCAxMjE2LCAxMjUwODgsIDEwMDQxMSwgNTc5MiwgMTIxMzY0LCAxMDAzOTMsIDc4NTAxLCAwLCAyOTMzLCAKKyAgICAxMjI0NCwgOTgzNzAyLCA1NjgzLCAxMDAzOTIsIDEwMDM5NywgNzgxMTksIDE1NDksIDcwNjcwLCAxMDA0MTUsIDEyMDM5OCwgCisgICAgNTY4MiwgNjIwNiwgODY3MCwgMTAyNTYsIDU2ODAsIDY5OTM1LCAxMDAwMSwgNjcyMzcsIDY5NzY4LCAxNDQ5LCAxMDI0MSwgCisgICAgNzgyOTAsIDcwNzA4LCAxOTQ4OTEsIDEwNTUyLCA2NDM0MiwgNDE5MjIsIDcwMzMwLCA4NTg0LCA2ODAzMCwgNTU2NywgCisgICAgMjcxNywgNjg4MTQsIDcxNDQ4LCA1NTY0LCA0Mjg4NiwgNDE5MDgsIDQyODgyLCA1NTY1LCA5MTc2MTEsIDEyMDg4MSwgMCwgCisgICAgNjU3MDgsIDY1NzA5LCA1NTY2LCA2OTgwMywgNjU3MDQsIDY1NzA1LCAxMTkwNCwgNDI4NzUsIDQzMzczLCA0MjUzOSwgCisgICAgNTk0MiwgODQ2OCwgMTAwNzI5LCAxMDM2MSwgMTA0MjUsIDY1Njk3LCA2NTY5OCwgNjU2OTksIDY4MDUyLCA2NjU5OCwgCisgICAgMTAwNjg2LCA2NDY2NCwgMTA2NDcsIDc4NzAyLCA3ODcwMywgNzg2OTAsIDQ1NywgNzg1MDIsIDY1NzAxLCAxOTM0LCAKKyAgICA0MzAwNiwgODMyODAsIDg4MDIsIDc4NzEwLCA2NTEzMCwgMTE3NDcsIDc4NzA5LCA2MDg3LCA3ODcwNSwgNzg3MTYsIAorICAgIDQxNzU3LCA3ODcxMSwgODA0MywgODk1MCwgNjU2OTQsIDY0NDg1LCA0MzUzNCwgMTA0NTcsIDEyODU1MiwgMTE5NjEsIAorICAgIDc4NzI1LCA2Njg1MCwgNzg3MjMsIDc4NzIwLCA3ODcyMSwgMTE5ODk4LCA2NTUxNSwgOTQ5OSwgMTAwMzUsIDEzMDY5LCAKICAgICA3MTMwOSwgMCwgOTg4OSwgNjgxODQsIDQyODA2LCAxMjUwNjEsIDcyNTYsIDAsIDY4MDk0LCAxNjY3LCA0MjE2MSwgCi0gICAgMTIwOTgxLCA0MjQyOCwgMCwgNjkzNCwgMCwgMTA4MDIsIDY0ODYxLCA2NTU2LCA3ODM5MCwgMCwgODEwMSwgMzYxMCwgCisgICAgMTAwOTU4LCA0MjQyOCwgMCwgNjkzNCwgMTAwNzAyLCAxMDgwMiwgNjQ4NjEsIDY1NTYsIDc4MzkwLCAwLCA4MTAxLCAzNjEwLCAKICAgICA2ODQyMCwgNDE3NDgsIDQ5OTUsIDk1NSwgNjU5MDcsIDExOTIwOCwgNTM1MCwgNjQzMzksIDc4MzA2LCA2NDU0OSwgMTA4NzUsIAotICAgIDEyNTA1MiwgNTQ3NywgNjU2OTIsIDAsIDEyODUzMiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAwLCAzODc0LCAwLCAKLSAgICAwLCA5ODM2MTksIDEyMDMzMSwgMTI4NzczLCAxMTM2NjUsIDY1NjAzLCA4MzI3MiwgNjU2ODcsIDAsIDQxMDM4LCA3NDAwOSwgCi0gICAgOTIwNywgNDIyMzksIDg1MzYsIDc4NzQwLCA3ODMyNCwgNzg3MjYsIDc0NDMyLCA3MjQsIDgzMDU4LCAxNDU1LCA3ODc0OSwgCi0gICAgNzE4MywgNjQ1ODMsIDc4NzQ3LCA2ODQ0MywgNDE3NSwgNzg3NDEsIDQzNjE0LCA2OTgwMSwgOTM5LCA3NTAyMSwgNDM1MjAsIAotICAgIDY4NjEzLCA3NDU2OSwgOTE3OTU4LCAwLCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgNjA4OCwgNzg3NTksIDc4NzU1LCAKLSAgICAxOTAsIDExOTg5OSwgMTI1OTMsIDAsIDgxODgsIDY0NDA4LCAwLCA0NDE3LCAxMjEzMDMsIDkyMjYxLCA2MzcwLCAxMjUxMjgsIAotICAgIDc4MjcsIDY4NDQxLCA2OTY1LCAxMjg1ODEsIDEyODg2OCwgMTMyMDEsIDEyODIwNSwgNjk4OTYsIDc4ODY4LCA3NDM4MiwgCi0gICAgMTE4NDEsIDc5MTgsIDczOTg4LCAwLCAxMTM2NjgsIDkxNzg4NCwgMTcyOCwgOTgzNzA1LCA0Mzc2NCwgMTc4LCAxMjk3MiwgCi0gICAgNzQ2MjAsIDExMzY3MSwgNzExMDMsIDExMTY4LCA5ODMzODMsIDExMzY3MiwgNzgzMjcsIDc1MDQyLCA2NTY5MCwgODM4MiwgCi0gICAgNzExMDcsIDExOTA1NCwgMTk0OTY4LCA5MjUyLCA5MTc4ODksIDQ2NTIsIDY4MzcxLCAwLCAxMjEzMjcsIDc0MDcwLCAKLSAgICAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAwLCA2OTkzLCAKLSAgICA3MTA0NCwgMTIxMzEyLCA4MzMzLCAxMjEzMjksIDAsIDExMzkwLCAwLCA3NDQ2NCwgMCwgOTIzMjAsIDc0MDgwLCA5ODMzMTcsIAotICAgIDY5OTExLCAxMTkxMCwgOTI1NTksIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCAKLSAgICA0MTc0NywgMCwgMTI4MTEwLCA4Njc3LCAwLCAxMjcwNywgOTM1MCwgNjYwMzcsIDEyODE4MCwgODgzNiwgMTIzMTUsIAotICAgIDEyNzQ3LCA4MzAwLCAxOTQ1NjIsIDEyNDk4NCwgNzQ5MSwgODg1NiwgNzEzNjEsIDAsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgCi0gICAgNjUzODksIDEyMDQwMiwgMTIwNDAzLCAxMDgxMywgMjU5MiwgMTI4NTMsIDQzMjY5LCA3MjYzLCA4MzMwOCwgNjUzNiwgCi0gICAgMTIwMjM4LCA3MTg5MSwgNjU1MTYsIDEyMzIxLCAxMjAzOTEsIDEyMDM4OCwgNTUyODcsIDEwMDA3LCAxMjAyNDYsIDk1ODgsIAotICAgIDY4NDk0LCAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTI4ODA4LCA2ODM4LCAzNTYxLCAxMTk4NjcsIDAsIDEwNjEzLCAKLSAgICA2Njk3LCAxMjgwNSwgNDE5MjgsIDQwOTgxLCAxMDgwNCwgNzg0MDksIDUwMDYsIDY0MzI4LCAwLCA5OTMxLCAwLCA4ODI1LCAKKyAgICAxMjUwNTIsIDU0NzcsIDY1NjkyLCA5ODMyNzYsIDExOTA5MiwgMTIwMzk3LCAxMjg5NiwgMTA0NTYsIDY4Mjk4LCAxMjExOTUsIAorICAgIDM4NzQsIDAsIDEyNTIwNCwgMTAwOTk0LCAxMjAzMzEsIDEwMDk5MywgMTAwNjczLCA2NTYwMywgODMyNzIsIDY1Njg3LCAwLCAKKyAgICA0MTAzOCwgNzQwMDksIDkyMDcsIDQyMjM5LCA4NTM2LCA3MDY3MSwgNzgzMjQsIDc4NzI2LCA3NDQzMiwgNzI0LCA4MzA1OCwgCisgICAgMTQ1NSwgNzg3NDksIDcxODMsIDY0NTgzLCA3ODc0NywgNjg0NDMsIDQxNzUsIDc4MzIzLCA0MzYxNCwgNjk4MDEsIDkzOSwgCisgICAgNzUwMjEsIDQzNTIwLCA2ODYxMywgNzQ1NjksIDkxNzk1OCwgMTk0NjU4LCA3MDE2OCwgNzg3NjQsIDc4NzYwLCAxMDc4OCwgCisgICAgNjA4OCwgNzg3NTksIDc4NzU1LCAxOTAsIDExOTg5OSwgMTI1OTMsIDEwMDczNSwgODE4OCwgNjQ0MDgsIDAsIDQ0MTcsIAorICAgIDEyMTMwMywgOTIyNjEsIDYzNzAsIDEwMDQzNiwgNzgyNywgNjg0NDEsIDY5NjUsIDEyODU4MSwgMTI4ODY4LCAxMzIwMSwgCisgICAgMTAwNDMwLCA2OTg5NiwgNzg4NjgsIDc0MzgyLCAxMTg0MSwgNzkxOCwgNzI3NDIsIDEwMTAwNiwgMTEzNjY4LCA5MTc4ODQsIAorICAgIDE3MjgsIDk4MzcwNSwgNDM3NjQsIDE3OCwgMTI5NzIsIDc0NjIwLCAxMTM2NzEsIDcxMTAzLCAxMTE2OCwgOTgzMzgzLCAKKyAgICAxMTM2NzIsIDc4MzI3LCA3NTA0MiwgNjU2OTAsIDgzODIsIDcxMTA3LCAxMTkwNTQsIDEwMDM4MSwgOTI1MiwgMTAwMzc5LCAKKyAgICA0NjUyLCA2ODM3MSwgMTAwMzgyLCAxMjEzMjcsIDc0MDcwLCAxMzA2NSwgOTkyMywgMTA4MDYsIDE5NDU5NiwgMTE3NjMsIAorICAgIDcwMDE2LCAxMjA2ODgsIDY3MjMsIDc4MTg3LCAxMDAzODgsIDY5OTMsIDcxMDQ0LCAxMjEzMTIsIDgzMzMsIDEyMTMyOSwgMCwgCisgICAgMTEzOTAsIDk4MzEzNiwgNzQ0NjQsIDEyNzkxMCwgOTIzMjAsIDc0MDgwLCAxMDA0NDIsIDY5OTExLCAxMTkxMCwgOTI1NTksIAorICAgIDgyNzgsIDg5NjMsIDQwMzQsIDEyODU2MCwgOTgzMTEzLCA2NTM0NCwgMTIwNTE3LCA0MTc0NywgMTI4MzQyLCAxMjgxMTAsIAorICAgIDg2NzcsIDEyMDU2NCwgMTI3MDcsIDkzNTAsIDY2MDM3LCAxMjgxODAsIDg4MzYsIDEyMzE1LCAxMjc0NywgODMwMCwgCisgICAgMTk0NTYyLCAxMjQ5ODQsIDc0OTEsIDg4NTYsIDcxMzYxLCAxMjc5MTMsIDQzMTUwLCAxMjc3NjgsIDEyMDQwNCwgNjUzODksIAorICAgIDY2Nzc5LCA2Njc3NywgMTA4MTMsIDI1OTIsIDEyODUzLCA0MzI2OSwgNzI2MywgODMzMDgsIDY1MzYsIDEwMDk2MiwgCisgICAgNzE4OTEsIDY1NTE2LCAxMjMyMSwgMTIwMzkxLCAxMjAzODgsIDU1Mjg3LCAyMjM3LCAxMjAyNDYsIDk1ODgsIDY4NDk0LCAKKyAgICAxNTk2LCAxMjAzODMsIDQxOTk0LCA2NTgwMSwgMTAwODc0LCA2ODM4LCAzNTYxLCA3Mjc1MywgMCwgMTA2MTMsIDY2OTcsIAorICAgIDEyODA1LCA0MTkyOCwgNDA5ODEsIDEwODA0LCA3ODQwOSwgNTAwNiwgNjQzMjgsIDEwMDk2NiwgOTkzMSwgMCwgODgyNSwgCiAgICAgNzQ1NTUsIDY1OTQwLCA0MzI1OSwgMTI2NTg2LCA2MTA3LCA4MzQ1NSwgMTE5MTc3LCA3Nzk0MSwgNzg0MDEsIDExOTI3MCwgCiAgICAgMTE3ODMsIDMzNSwgMTIwMjI3LCA2NDY4OSwgNDM4LCA0NTEwLCA1NzY1LCA4NzIxLCAxMTk1NzAsIDExOTIyNywgNjA5MiwgCi0gICAgMTI4NDAsIDQzMTEyLCA4ODc2LCAxMjAyMzEsIDgwOTYsIDEwMjg0LCAxMjA5MzUsIDAsIDAsIDEwMzgwLCA4NzMzLCAKLSAgICAxMDMxNiwgNzAxMjEsIDQxNjAyLCA5MTc1NzUsIDkyMzA4LCA3NDgzMSwgOTM5ODQsIDAsIDY4NDgyLCA2NTM5OSwgCi0gICAgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEyODMyNiwgNzAzMjEsIDIwNjUsIAotICAgIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDAsIDk4MzMwNiwgMjE1LCA0MTI1OCwgNzc4NzUsIDQzMTU5LCAxOTUzLCA5NTc5LCAKLSAgICA0MTkzOCwgMTI1NiwgMzkxMCwgOTQwNywgNjI0MiwgMCwgODM0NjQsIDQxMjU3LCA0MTkwMCwgODY3NSwgMTA3MDAsIDg4MDUsIAotICAgIDE3NDIsIDExMzcyMiwgOTMzMywgODIwMiwgNzIzOTksIDAsIDk4MzE5NywgMTI3MjUyLCAwLCA3Mzg4MiwgNDk5LCAKLSAgICA5ODMwNDksIDQzNDY3LCAwLCA0MzgxOCwgODM0ODIsIDE3MTIsIDU5MzIsIDc3ODQ1LCA0MTc2MiwgOTgzMTAzLCAwLCAKLSAgICAxMTk2NywgMTc3NSwgMTI1MDA2LCA3NTAwOSwgMTExMTgsIDEyMTM5MSwgMTI4MDA5LCA5NDU4LCA5MjkzNSwgNjQ3MCwgCi0gICAgOTE4MCwgMTIwMzgwLCA0MzE3NiwgMTI4MzA3LCAwLCA0Mjc4MiwgMCwgMTI0OTk5LCA5ODMxMzUsIDEyODMwOSwgNzM4NDksIAotICAgIDEyMDY2OSwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgCi0gICAgMTk0ODcwLCA4MjU0LCAwLCAxMDk3NSwgNDM1MTgsIDEyMDYyNSwgNzQ3NjMsIDEwMjIsIDQxMDgsIDM4ODAsIDc0MjQ3LCAKLSAgICAxMjcxNTMsIDAsIDkyMjYzLCA5MTc5ODAsIDc1MDcsIDk4MzExOCwgNDMxNDksIDcxMDU5LCA2NTAzMSwgNzk2MSwgMTYzNiwgCi0gICAgMCwgNjUwMjksIDY1MDI0LCAxMTkwOTksIDEyNDczLCA2NTM0LCAxMjA2MzMsIDk5LCA5OCwgOTcsIDY4MjI2LCA2NzU4NCwgCi0gICAgNDA0OSwgNzQxNjMsIDEyNzA2NSwgNzA5MCwgODMyNzQsIDc4OTIsIDEyNzA2NCwgMTA3NzcsIDkxNzgwMywgNjUzMTAsIAotICAgIDY1NTYyLCA2NjU5OSwgNjY3MjIsIDE5NDk1NSwgODAzOSwgMzM2MywgNjY1OTQsIDQzNDM0LCAxMjcwNjIsIDcxMTkxLCAKLSAgICAxMjU5NiwgNjY1OTUsIDQyMjU4LCA0MjU3MCwgNTU5MywgMTE5MTQ4LCAxMjA1MzQsIDkyNDI1LCAxMDEwMCwgNjA2MSwgCi0gICAgNjQ4NTQsIDExOSwgMTE4LCAxMTcsIDExNiwgMTI5OTgsIDEyMiwgMTIxLCAxMjAsIDExMSwgMTEwLCAxMDksIDEwOCwgMTE1LCAKLSAgICAxMTQsIDExMywgMTEyLCAxMDMsIDEwMiwgMTAxLCAxMDAsIDEwNywgMTA2LCAxMDUsIDEwNCwgNjQzNiwgNzM5NzQsIDUzNCwgCi0gICAgNDEyMTIsIDY3NzEzLCAxNTM2LCA2NDA5MywgNzM5NzAsIDc3OTMwLCAxMjEwOTMsIDAsIDYwMjAsIDEyNzE2LCAxMjcxMTIsIAotICAgIDEyNzQ0LCA0NzUsIDEyMDM5NCwgMTMyNjYsIDEyNzgxMywgMTI3MTExLCA3ODg0MiwgNzM5MjYsIDY2MjkxLCAxMDY0NSwgCi0gICAgMTIxMiwgNjU0MywgOTgzMzA5LCA4MTM0LCA0MjkzNSwgMjkxMywgNzM4NzAsIDEyNzExMywgMTg2NiwgOTgzMjI5LCAKLSAgICA3MTg5MiwgMTIwOTk2LCA4OTIzLCAxNjQ1LCAxMjA1OSwgNjY1ODUsIDcxMjk3LCAzMTk2LCA3MjQwNCwgMTk0ODI3LCAKLSAgICA1OTM1LCAxMjUwLCAxMjcwNjYsIDgxNzQsIDk3ODcsIDY3MzMsIDk4NTksIDc5MTYsIDk4NjEsIDk4NjAsIDUyNTgsIDE4ODIsIAotICAgIDE4OTIsIDY3MzEsIDEwODgyLCA0MDUsIDExNDU0LCA3MzkxMSwgMTEzNzg3LCA3MzgxOSwgNDExNjksIDg5MzksIDQxMjQ1LCAKLSAgICAxMjg3NzUsIDQxMTcwLCAxNDU0LCAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDAsIAotICAgIDcxNDcyLCAxMDQ4MCwgNDMyNTgsIDEyNjU5NiwgNzc5MzYsIDgyNjQsIDEyNjEwLCA5ODMzMTAsIDY0NSwgMTI2NjE2LCAKLSAgICA3NjA5LCA0MDk3MywgNjk5NDMsIDczODMzLCA2OTk0OCwgNTgyNCwgOTg0LCA3NzkxOCwgMTA2ODgsIDU4NTEsIDAsIDc3MjksIAotICAgIDczOTgyLCAxMjA1MTgsIDgzNDczLCAxOTUwODYsIDQzMzY5LCA5ODMxNzcsIDEyODE0MCwgNjg0MTUsIDc3ODYxLCA0NTM4LCAKLSAgICA5Mzk3OCwgNDMxNDEsIDk4Mzc2OSwgODI5NzYsIDc0MjE0LCA3Mzg4NiwgNjc3MDksIDkxNzU5OSwgNzE5MTgsIDQzMDA1LCAKLSAgICA3MTExNCwgOTU1MiwgMCwgNzAxMjksIDEyOTE3MywgMTI5OTcsIDgzNDc3LCAwLCAxMjg4OTcsIDE5NTAzMCwgMjM4MSwgCi0gICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDAsIDc0NjE4LCAwLCAxMjQyNSwgMTA2NjEsIDEwODU2LCA5NjE0LCAyNDI4LCAKLSAgICA0MTQ3OCwgODU4MiwgMTAwNjQsIDczOTMwLCA4Mjk3NywgNzA0MzcsIDEyMTI1MSwgNjQ4OTYsIDExOTE2MiwgMTk1MiwgCi0gICAgOTIxODEsIDg0NTUsIDEwMDgyLCAxMTU3NSwgMTI4NDUwLCAxMTk1NjYsIDEyODA5MywgMTI4MDgsIDEyMTgzLCA2MTQ1LCAKLSAgICA3NTAyMCwgNjQ5MjksIDc0OTg1LCA3MTkxNiwgNzQ5ODQsIDQzMTg2LCA0MjUwOSwgMCwgMzkyMiwgOTE4NywgODMyNzcsIAotICAgIDgzMjc4LCAxMDE5MSwgODMyNzEsIDExNzUyLCAzMzUzLCA5MzU4LCA5ODM0NjIsIDcxMzY2LCA2NjY4MCwgMTIwMDkwLCAKLSAgICA4MjQ4LCA3OTMxLCA4NTU4LCA5Nzk1LCA2ODM4MCwgMTIwMDQ3LCA5ODMwNTYsIDgzNDcwLCAxMjAwODEsIDExOTA1MiwgCi0gICAgNDEwMjcsIDEyMDA4NiwgNzE0NDksIDEyMDA4OCwgNzM2NiwgNzAxOSwgNzAzNzgsIDAsIDExNzUxLCAxMjAwNzgsIDc4Mjk0LCAKLSAgICA2NDY1NywgODY1NywgODM0NzIsIDg1OTQsIDEyMDA2OCwgMCwgOTgzNzg5LCAxMjAwNjksIDEyMDA3MiwgMTIwMDcxLCAwLCAKLSAgICAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIDc3MjgsIDk0MDc3LCAxMTI5NCwgMCwgNjY2NjUsIAotICAgIDc4NTEsIDAsIDgzNzUsIDg2OTksIDEyNzk0OSwgNDI1MjQsIDY4NDE5LCA5MDg1LCA5NDA0MSwgNzUwNCwgOTMyNywgNjE2MCwgCi0gICAgNzM4NDIsIDk4Mzg2NCwgMTk0OTI5LCA4MDg4LCAxMjg5MzcsIDc0MDEyLCA2NjU2MiwgMCwgNDQzOSwgNjkyNiwgNzI0MjMsIAotICAgIDEyOTI0LCAxMjgyMjcsIDQyMzY5LCA0MzUwLCA2NTQ5MSwgNjUxNDUsIDkwNDEsIDQzNTU5LCA2NDU3NywgMTA4MjYsIAotICAgIDEyNzQ3NiwgMTEyOTYsIDk4MzI4NSwgOTgzNDA5LCAwLCA2NTgyNSwgOTU3NywgNjgxOTksIDk4MzM5MywgNjQ2NzAsIAotICAgIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgNzgwNTMsIDczODcyLCA3ODA1NSwgMTE5OTkzLCAxMDkwMiwgMCwgCi0gICAgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgMTIxNDM4LCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3ODA2OSwgMTE4ODkzLCAKLSAgICAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCA2NDQwLCAxOTQ3NDEsIDExMzc1NywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgCi0gICAgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgMTk0NzI4LCAxMjkxMjAsIDAsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCAKLSAgICA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDAsIDk0MDQ5LCA2NzM2LCA4MzQzOSwgCi0gICAgNDE0OTIsIDEyMDA1LCA2OTkyNywgMTI3MDY4LCAxODkwLCAxMjAwNTYsIDAsIDgzNDQzLCAwLCA3MjkzLCA3OTkxLCAKLSAgICA3NDA1MiwgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCAKLSAgICA2NDQ0NSwgNDI2NjgsIDY2MzUsIDEyODMwOCwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAwLCAKLSAgICA5MzAyNSwgNjk3MDcsIDkzMDIyLCAxMTg4MTIsIDAsIDcxMDk2LCAxMjgwNDUsIDkxNzUsIDExOTI1LCA3ODA0NSwgOTA4OCwgCi0gICAgMTE5MTQ1LCA2NDU0NSwgMTM5NiwgMTIwNjY0LCA3NTQ2LCAzODQ3LCA3MTA4OCwgOTMwMzcsIDQ5ODUsIDEzMjg4LCA2NzIsIAotICAgIDgwOTgsIDQzMTk2LCAxOTQ3NDYsIDEyMDcyMywgMTI4MTI2LCA0MjY1NSwgNzQwNDMsIDY1MDcyLCAxNTc3LCAxMTc3MiwgCi0gICAgMTMwNDEsIDU5MjgsIDQ1MjUsIDEwNjU4LCA2NTkxMSwgMTI2NiwgMTAxODAsIDE5NDcxMSwgMTI4MzcxLCAxMjYyMiwgCi0gICAgMTI3MjM0LCAxMjQ5NDgsIDAsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgMCwgNzQ5NjksIAotICAgIDQyNzMxLCA2Nzk3MiwgNzQ5NzAsIDcxMDY2LCA5ODMyMDAsIDMwNTEsIDU4NjIsIDc4MjMsIDkyNDc4LCA5Mjc0NiwgCi0gICAgMTIwNDExLCAzMjUwLCA0Mzk5MSwgNjk2ODcsIDY2NjQ5LCA5NTEwLCA2NjIzNywgOTgzMzA0LCAwLCA0MTA2NiwgNjQ2NzMsIAotICAgIDkxNzk2MywgOTIzODEsIDEyODYzNiwgMzUwNSwgODcwNywgNzQ5MjUsIDY3MjUsIDEyMDgwMiwgMTIxMjk2LCA3NTA0MSwgCi0gICAgMzQ3MSwgNjYzOTEsIDU0NzksIDg4MiwgNjY4NiwgMTE5NTg0LCAxMTYxMywgMTIwNzcyLCA0Mjc1NCwgNzQ2MDgsIAotICAgIDEyNTAyOSwgODM0MzMsIDEyMTIzNywgMTIwODQ1LCAwLCA4MzQzMSwgMzIyNSwgOTE3OTk2LCA0NDMzLCA0MTE1NiwgCi0gICAgNDM5NzMsIDQzMTczLCAxNDQzLCA0MzgxLCAwLCA5ODM2NDIsIDEwOTI2LCAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIAotICAgIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAxMzg3LCAwLCA5MjY0NCwgNDE0MTgsIDEyODkzMywgCi0gICAgNjU5MTQsIDY3MjEsIDIxNywgOTE3OTU1LCA5MTc5NjAsIDEyMTA4MiwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCAKLSAgICA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAxMjg5MDQsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgCi0gICAgNzQ0NDYsIDQxMjUyLCA2NjY4MiwgMCwgMTE5NjM3LCA0MTI0OSwgMTM2NiwgNjQ2MzUsIDY1MDQ3LCAxMjQ2NiwgOTgzNDU4LCAKLSAgICAxMjA4MTMsIDQzOTcsIDEyODAzNywgMTI4MzM2LCA0MTI5NiwgOTU0NSwgNDEyOTEsIDEyMDg5MywgMCwgNDE0ODUsIDM1MTEsIAotICAgIDQxMjgyLCA1OTIzLCAxMDQwMCwgMCwgMTIwNDkzLCA3NjAsIDAsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDExOTg2OSwgCi0gICAgNjcxNDUsIDQxNywgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCAKLSAgICA2NDg3NywgMjI4NCwgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAwLCAKLSAgICA0MjI3MywgNTgxOSwgMCwgMTI4MDU2LCAwLCAxMTkxMjksIDk4MzEwMCwgNjU5MTAsIDEyNzc0NywgMTAyNDYsIDEyMDgxNiwgCi0gICAgNjU3ODUsIDEyMzcsIDEwMjc0LCA0NTUyLCAxMTk1NzYsIDEyODI4NywgMCwgMTM3NSwgNjY3MDUsIDQzNTczLCA2NTI2MCwgCi0gICAgMzMyOSwgMCwgNDI4MTEsIDEwMzEyLCA2OTg0NSwgMTIwNzk0LCA3ODQwLCAwLCA0MzYzMCwgMTAyNTIsIDExOTI0MiwgCi0gICAgMTI4MTA0LCA0MzE4NSwgMCwgNDM5NiwgMTk1MDUxLCAxMTk4ODAsIDEwNzY5LCA5Njc2LCAxMTkwNDEsIDAsIDk3NTMsIAotICAgIDkyNzYyLCA4OTQ0LCA5ODMxNjQsIDAsIDEwNDczLCA5ODM4MjMsIDEyMDQ3MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAKLSAgICAxMjg0MzYsIDY4ODQ1LCAxMjA2MDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDAsIDQzODExLCA5MzMwLCAxMjA1OTYsIDcyMjIsIAorICAgIDEyODQwLCA0MzExMiwgODg3NiwgMTIwMjMxLCA4MDk2LCAxMDI4NCwgMTIwOTM1LCAxMDA5NzAsIDcwNzEzLCAxMDM4MCwgCisgICAgODczMywgMTAzMTYsIDcwMTIxLCA0MTYwMiwgOTE3NTc1LCA5MjMwOCwgNzQ4MzEsIDkzOTg0LCA5ODM4MzAsIDY4NDgyLCAKKyAgICA2NTM5OSwgOTE3ODIwLCA2NDU5MSwgNDI0MDUsIDgzNDY2LCAxMjA4MjAsIDg0MywgMTE1NDEsIDEwMDgxMCwgNzAzMjEsIAorICAgIDIwNjUsIDQxOTM1LCA3NDQ5NiwgNDE5MDIsIDEyNTA2MCwgOTgzMzA2LCAyMTUsIDQxMjU4LCA3Nzg3NSwgNDMxNTksIAorICAgIDE5NTMsIDk1NzksIDQxOTM4LCAxMjU2LCAzOTEwLCA5NDA3LCA2MjQyLCAwLCA4MzQ2NCwgNDEyNTcsIDQxOTAwLCA4Njc1LCAKKyAgICAxMDcwMCwgODgwNSwgMTc0MiwgMTEzNzIyLCA5MzMzLCA4MjAyLCA3MjM5OSwgMTIxMDI3LCA5ODMxOTcsIDExMzgwOSwgCisgICAgMTAwOTg5LCA3Mzg4MiwgNDk5LCA5ODMwNDksIDQzNDY3LCAxOTQ5MjcsIDQzODE4LCA4MzQ4MiwgMTcxMiwgNTkzMiwgCisgICAgNzc4NDUsIDQxNzYyLCAxMjkzNzIsIDAsIDExOTY3LCAxNzc1LCAxMjUwMDYsIDc1MDA5LCAxMTExOCwgMTIxMzkxLCAKKyAgICAxMDA5ODIsIDk0NTgsIDkyOTM1LCA2NDcwLCA5MTgwLCAxMjAzODAsIDQzMTc2LCAxMDA0MTQsIDEwMDk4NiwgNDI3ODIsIAorICAgIDEwMDQ0MCwgMTAxMDM2LCAxMDEwMzUsIDEwMDU4MSwgNzM4NDksIDEwMTA0MCwgOTQxNCwgNzQ2NDcsIDczNzgyLCA3Mzk2OSwgCisgICAgNTY1LCA0MjQ4NCwgNTc5NCwgMjAxLCAyNjYyLCA0MjI5MiwgMTAxMDQ0LCA4MjU0LCAxMDEwNDYsIDEwOTc1LCA0MzUxOCwgCisgICAgMTAwOTU0LCA3NDc2MywgMTAyMiwgNDEwOCwgMzg4MCwgNzQyNDcsIDEwMDk1MSwgMTAwOTkxLCA5MjI2MywgOTE3OTgwLCAKKyAgICA3NTA3LCAxMDA2MzgsIDQzMTQ5LCA3MTA1OSwgNjUwMzEsIDc5NjEsIDE2MzYsIDAsIDY1MDI5LCA2NTAyNCwgMTE5MDk5LCAKKyAgICAxMjQ3MywgNjUzNCwgMTIwNjMzLCA5OSwgOTgsIDk3LCA2ODIyNiwgNjc1ODQsIDQwNDksIDc0MTYzLCAxMDA5NTUsIDcwOTAsIAorICAgIDgzMjc0LCA3ODkyLCAxMDEwMzAsIDEwNzc3LCA5MTc4MDMsIDY1MzEwLCA2NTU2MiwgNjY1OTksIDY2NzIyLCAxOTQ5NTUsIAorICAgIDgwMzksIDMzNjMsIDY2NTk0LCA0MzQzNCwgMTAwOTYwLCA3MTE5MSwgMTI1OTYsIDY2NTk1LCA0MjI1OCwgNDI1NzAsIAorICAgIDU1OTMsIDExOTE0OCwgMTIwNTM0LCA5MjQyNSwgMTAxMDAsIDYwNjEsIDY0ODU0LCAxMTksIDExOCwgMTE3LCAxMTYsIAorICAgIDEyOTk4LCAxMjIsIDEyMSwgMTIwLCAxMTEsIDExMCwgMTA5LCAxMDgsIDExNSwgMTE0LCAxMTMsIDExMiwgMTAzLCAxMDIsIAorICAgIDEwMSwgMTAwLCAxMDcsIDEwNiwgMTA1LCAxMDQsIDY0MzYsIDczOTc0LCA1MzQsIDQxMjEyLCA2NzcxMywgMTUzNiwgCisgICAgNjQwOTMsIDczOTcwLCA3NzkzMCwgMTIxMDkzLCAwLCA2MDIwLCAxMjcxNiwgMTI3MTEyLCAxMjc0NCwgNDc1LCAxMjAzOTQsIAorICAgIDEzMjY2LCAxMjc4MTMsIDEwMTA3MywgNzg4NDIsIDcwNTAzLCA2NjI5MSwgMTA2NDUsIDEyMTIsIDY1NDMsIDEyNTIyMCwgCisgICAgODEzNCwgNDI5MzUsIDI5MTMsIDczODcwLCAxMjcxMTMsIDE4NjYsIDk4MzIyOSwgNzE4OTIsIDEyMDk5NiwgODkyMywgCisgICAgMTY0NSwgMTIwNTksIDY2NTg1LCA3MTI5NywgMzE5NiwgNzI0MDQsIDE5NDczMywgNTkzNSwgMTI1MCwgMTI3MDY2LCA4MTc0LCAKKyAgICA5Nzg3LCA2NzMzLCA5ODU5LCA3OTE2LCA5ODYxLCA5ODYwLCA1MjU4LCAxODgyLCAxODkyLCA2NzMxLCAxMDg4MiwgNDA1LCAKKyAgICAxMTQ1NCwgNzM5MTEsIDEwMTAyMCwgNzM4MTksIDQxMTY5LCA4OTM5LCA0MTI0NSwgODM0NjUsIDQxMTcwLCAxNDU0LCAKKyAgICAxMTM2OSwgNjQ3NywgMTIxNTcsIDEyMDg2MSwgMCwgMCwgNDExNzIsIDc4NTUsIDEwMDk2MSwgNzE0NzIsIDEwNDgwLCAKKyAgICA0MzI1OCwgMTI2NTk2LCA3NzkzNiwgODI2NCwgMTI2MTAsIDk4MzMxMCwgNjQ1LCAxMDA5OTIsIDc2MDksIDQwOTczLCAKKyAgICA2OTk0MywgNzM4MzMsIDY5OTQ4LCA1ODI0LCA5ODQsIDc3OTE4LCAxMDY4OCwgNTg1MSwgMTAwODM2LCA3NzI5LCA3Mzk4MiwgCisgICAgMTAxMDAxLCA4MzQ3MywgMTAxMDAzLCA0MzM2OSwgMTAxMDA1LCAxMDA5NzMsIDY4NDE1LCA3Nzg2MSwgNDUzOCwgOTM5NzgsIAorICAgIDQzMTQxLCAxMDA5NzIsIDgyOTc2LCA3NDIxNCwgNzM4ODYsIDY3NzA5LCA5MTc1OTksIDcxOTE4LCA0MzAwNSwgNzExMTQsIAorICAgIDk1NTIsIDAsIDcwMTI5LCAxMjkxNzMsIDEyOTk3LCA4MzQ3NywgMTk0OTQzLCAxMjg4OTcsIDEwMDczNywgMjM4MSwgCisgICAgMTI4ODMsIDEwOTk0LCAxMDUyOSwgNDE5MDYsIDEwMDk4MSwgNzQ2MTgsIDEwMDk4MywgMTI0MjUsIDEwNjYxLCAxMDg1NiwgCisgICAgOTYxNCwgMjQyOCwgNDE0NzgsIDg1ODIsIDEwMDY0LCA3MzkzMCwgODI5NzcsIDcwNDM3LCAxMjEyNTEsIDY0ODk2LCAKKyAgICAxMDA5NTYsIDE5NTIsIDkyMTgxLCA4NDU1LCAxMDA4MiwgMTE1NzUsIDEwMDk1NywgMTE5NTY2LCAxMDA4MTcsIDEyODA4LCAKKyAgICAxMjE4MywgNjE0NSwgNzUwMjAsIDY0OTI5LCA3NDk4NSwgNzE5MTYsIDc0OTg0LCA0MzE4NiwgNDI1MDksIDAsIDM5MjIsIAorICAgIDkxODcsIDgzMjc3LCA4MzI3OCwgMTAxOTEsIDgzMjcxLCAxMTc1MiwgMzM1MywgOTM1OCwgMTI4OTgwLCA3MTM2NiwgCisgICAgNjY2ODAsIDEwMDgxMywgODI0OCwgNzkzMSwgODU1OCwgOTc5NSwgNjgzODAsIDEwMDgxMiwgMTAwOTc3LCA4MzQ3MCwgCisgICAgMTIwMDgxLCAxMDA5NzEsIDQxMDI3LCAxMDA4MTEsIDcxNDQ5LCAxMjAwODgsIDczNjYsIDcwMTksIDcwMzc4LCAwLCAKKyAgICAxMTc1MSwgMTIwMDc4LCA3ODI5NCwgNjQ2NTcsIDg2NTcsIDgzNDcyLCA4NTk0LCAxMDA5NjksIDEwMDk2OCwgMTAwOTc4LCAKKyAgICAxMDA4MjAsIDEwMDkxNCwgMTIwMDcxLCAwLCAxMTM3MTEsIDQzMTU0LCA0MTAyOSwgMTE5OTU2LCAxMTMzMiwgNjUzODAsIAorICAgIDc3MjgsIDk0MDc3LCAxMTI5NCwgMTAwOTgwLCA2NjY2NSwgNzg1MSwgMCwgODM3NSwgODY5OSwgMTIxMDk3LCA0MjUyNCwgCisgICAgNjg0MTksIDkwODUsIDk0MDQxLCA3NTA0LCA5MzI3LCA2MTYwLCA3Mzg0MiwgOTgzODY0LCAxOTQ5MjksIDgwODgsIDcwNjk4LCAKKyAgICA3NDAxMiwgNjY1NjIsIDAsIDQ0MzksIDY5MjYsIDcyNDIzLCAxMjkyNCwgMTAwOTc0LCA0MjM2OSwgNDM1MCwgNjU0OTEsIAorICAgIDY1MTQ1LCA5MDQxLCA0MzU1OSwgNjQ1NzcsIDEwODI2LCAxMDA5NTksIDExMjk2LCA5ODMyODUsIDk4MzQwOSwgMCwgCisgICAgNjU4MjUsIDk1NzcsIDY4MTk5LCA4Mjk4MiwgNjQ2NzAsIDk4MzEyMSwgNzgwNTYsIDY3OTMsIDExMjk1LCA3MDQwOSwgCisgICAgNzgwNTMsIDczODcyLCA3ODA1NSwgMTAwODE1LCAxMDkwMiwgMCwgMCwgNzgwNzAsIDExMjAwLCAxMDQ3MiwgMjk5NSwgCisgICAgMTAwOTUzLCAxMjAxMzgsIDY0NjgyLCAyMzcxLCA3MjcyMCwgMTE4ODkzLCAyNTksIDEwMDksIDcwNDA1LCAyNDAyLCAyMzMzLCAKKyAgICA2NDQwLCAxMjUyNDcsIDEwMDk2MywgNjUxMjUsIDQxMjQ0LCA3MDQwNywgMTMyNzEsIDkxMDMsIDIyNzgsIDk4MzE0NiwgCisgICAgMTk0NzI4LCA3MzAxLCA5ODM2OTMsIDEwMjE5LCA3NDk2OCwgMTk0NzQwLCAwLCA2NzcxOCwgNDMxNzgsIDEyNzA3MCwgCisgICAgNDEyNjEsIDExOTM2MiwgNDM2NDAsIDg2MTMsIDE5NDg5NSwgOTQwNDksIDY3MzYsIDgzNDM5LCA0MTQ5MiwgMTIwMDUsIAorICAgIDY5OTI3LCAxMjcwNjgsIDE4OTAsIDEyMDA1NiwgOTgzMzAyLCA4MzQ0MywgOTgzMDQ0LCA3MjkzLCA3OTkxLCA3NDA1MiwgCisgICAgMTA1NzgsIDEyMTE0MSwgNzgwNzYsIDEyODYyMCwgNjczNjgsIDY5OTI4LCA3MTg1MCwgNzg4MDAsIDkyNjUzLCA2NDQ0NSwgCisgICAgNDI2NjgsIDY2MzUsIDEwMDc5MiwgNjE2NCwgNjUxNzAsIDc0OTM2LCAxMjExODIsIDc2NzYsIDExNjY0LCAxMjg2ODQsIAorICAgIDkzMDI1LCA2OTcwNywgOTMwMjIsIDExODgxMiwgOTgzMjMzLCA3MTA5NiwgMTI4MDQ1LCA5MTc1LCAxMTkyNSwgNzgwNDUsIAorICAgIDkwODgsIDExOTE0NSwgNjQ1NDUsIDEzOTYsIDEyMDIyMCwgNzU0NiwgMzg0NywgNzEwODgsIDkzMDM3LCA0OTg1LCAxMzI4OCwgCisgICAgNjcyLCA4MDk4LCA0MzE5NiwgMTAwNzk2LCAxMjA3MjMsIDEyODEyNiwgNDI2NTUsIDc0MDQzLCA2NTA3MiwgMTU3NywgCisgICAgMTE3NzIsIDEzMDQxLCA1OTI4LCA0NTI1LCAxMDY1OCwgNjU5MTEsIDEyNjYsIDEwMTgwLCAxOTQ3MTEsIDEyODM3MSwgCisgICAgMTI2MjIsIDEyNzIzNCwgMTIwNTY2LCAxOTQ3OTgsIDEyMTIxNCwgMTI3MTM5LCAxMzMxMCwgNzczLCAxOTkzMywgMTUzOSwgCisgICAgOTgzMzUxLCA3NDk2OSwgNDI3MzEsIDY3OTcyLCA3NDk3MCwgNzEwNjYsIDk4MzIwMCwgMzA1MSwgNTg2MiwgNzgyMywgCisgICAgOTI0NzgsIDkyNzQ2LCAxMjA0MTEsIDMyNTAsIDQzOTkxLCA2OTY4NywgNjY2NDksIDk1MTAsIDY2MjM3LCA5ODMzMDQsIAorICAgIDE5NDc0OCwgNDEwNjYsIDY0NjczLCA5MTc5NjMsIDkyMzgxLCAxMjg2MzYsIDM1MDUsIDg3MDcsIDc0OTI1LCA2NzI1LCAKKyAgICAxMjA4MDIsIDEyMTI5NiwgNzUwNDEsIDM0NzEsIDY2MzkxLCA1NDc5LCA4ODIsIDY2ODYsIDExOTU4NCwgMTE2MTMsIAorICAgIDEwMTEwNiwgNDI3NTQsIDc0NjA4LCAxMjUwMjksIDgzNDMzLCAxMjEyMzcsIDEyMDg0NSwgMCwgODM0MzEsIDMyMjUsIAorICAgIDkxNzk5NiwgNDQzMywgNDExNTYsIDQzOTczLCA0MzE3MywgMTQ0MywgNDM4MSwgMTI3OTQ5LCA5ODM2NDIsIDEwOTI2LCAKKyAgICAxMTc1NiwgMTE3NTcsIDY0ODc5LCAxMjExMDYsIDQyNjU0LCAxMjc4NDgsIDEzMjI3LCAxMjAzMjAsIDEwMDIxLCA1MTYwLCAKKyAgICAxMzg3LCA5ODM3MzAsIDkyNjQ0LCA0MTQxOCwgNjY3NDksIDY1OTE0LCA2NzIxLCAyMTcsIDcyODI5LCA5MTc5NjAsIAorICAgIDEwMDk2NSwgMTA0NDMsIDEwNzg5LCA0MTE1OCwgMTE5MjU3LCA0Mjc0LCAxMTE0MywgNDE0ODMsIDAsIDQxMjUwLCAKKyAgICAxMjg1NjMsIDQyMTc5LCAxMjgzNzUsIDU5MzEsIDExNzQ0LCAxMTIxNSwgNzA2NzYsIDQxMjUyLCA2NjY4MiwgOTgzNjgwLCAKKyAgICAxMTk2MzcsIDQxMjQ5LCAxMzY2LCA2NDYzNSwgNjUwNDcsIDEyNDY2LCA3NDMxOSwgMTIwODEzLCA0Mzk3LCAxMDA0NDUsIAorICAgIDEyODMzNiwgNDEyOTYsIDk1NDUsIDQxMjkxLCAxMjA4OTMsIDAsIDQxNDg1LCAzNTExLCA0MTI4MiwgNTkyMywgMTA0MDAsIAorICAgIDAsIDEyMDQ5MywgNzYwLCAxMjcxODgsIDEyMDg4LCA1Nzg2LCA2ODI1MiwgNDIyNTYsIDEwMDQ0NiwgNjcxNDUsIDQxNywgCisgICAgNDE0NzQsIDExOTU2MiwgNDE1NjUsIDc0OTY1LCA1OTM0LCA3NDU3MiwgNjY1ODMsIDc0OTA0LCA2NDg3NywgMjI4NCwgCisgICAgNjQ0ODEsIDc4NjE0LCA2NjAxMywgNDE5NTYsIDQzNDU1LCA2NzI0MCwgMTk0NjU2LCAwLCAxMjcxNTMsIDQyMjczLCA1ODE5LCAKKyAgICAwLCAxMjgwNTYsIDAsIDExOTEyOSwgOTgzMTAwLCA2NTkxMCwgMTI3NzQ3LCAxMDI0NiwgMTIwODE2LCA2NTc4NSwgMTIzNywgCisgICAgMTAyNzQsIDQ1NTIsIDExOTU3NiwgMTI4Mjg3LCAwLCAxMzc1LCA2NjcwNSwgNDM1NzMsIDY1MjYwLCAzMzI5LCAwLCAKKyAgICA0MjgxMSwgMTAzMTIsIDY5ODQ1LCAxMjA3OTQsIDc4NDAsIDAsIDQzNjMwLCAxMDI1MiwgMTE5MjQyLCAxMjgxMDQsIAorICAgIDQzMTg1LCAwLCA0Mzk2LCAxMDA1MzIsIDEwMDUzNSwgMTA3NjksIDk2NzYsIDEwMDUzNiwgMTAwNTM5LCA5NzUzLCA5Mjc2MiwgCisgICAgODk0NCwgOTgzMTY0LCAxMjE0NTAsIDEwNDczLCA5ODM4MjMsIDEwMDU0MiwgNjA3MiwgNDMwMjUsIDEwMjk5LCAxMDA1NDYsIAorICAgIDY4ODQ1LCAxMDA1NDgsIDY2MzI2LCA2NzQxMiwgOTI5NTIsIDcyODA4LCA0MzgxMSwgOTMzMCwgMTIwNTk2LCA3MjIyLCAKICAgICAxMDI4MywgMTAzMTUsIDEwMzc5LCA0OTk2LCAxMjc5MDIsIDEzMjgxLCA2NjUxNywgNzg2NSwgMTAwODcsIDc4MzQzLCAKICAgICA3NDkzOCwgNDMzMjQsIDAsIDAsIDc1NjUsIDY2MzYzLCAxMjk1MiwgNjQ4MDYsIDQzMTgwLCA3NDk2NywgNzQxNCwgNzc5MjksIAotICAgIDQzOTgyLCA3NDI4OCwgNjIyLCA3NDAyMywgODg1LCA0MzQwNSwgMTYwMiwgMCwgOTgzNzMxLCA4NTIsIDAsIDEyMTYwLCAKLSAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjkwOTIsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKKyAgICA0Mzk4MiwgNzA3NDEsIDYyMiwgNzQwMjMsIDg4NSwgNDM0MDUsIDE2MDIsIDAsIDcxMjY3LCA4NTIsIDAsIDEyMTYwLCAKKyAgICA4MzQ5MSwgMTAyMTIsIDY1NDM1LCAxMjY2MDMsIDEyMDcxLCA5NjA5LCAxMjE1NiwgOTE3OTgzLCA5MTc5ODQsIDQzNTg2LCAKICAgICAxMTAzNSwgMTA0MTEsIDkxNzk4OCwgMTAyNTUsIDY3MTAsIDEwMjc5LCA0MTk0LCAxMDM3NSwgNDM4NTMsIDEyODU5OSwgCiAgICAgNDMxNSwgMTI2NDQsIDgzNDkwLCA3NzkzNywgNDM2MzksIDQzMzQzLCA2NzQwOCwgMTI4OTQ1LCAxMTUwMSwgNDExNzcsIAotICAgIDEyMTE4MCwgMTI4ODY2LCA0MzQzMSwgMTI3MDk3LCA5MjQxMywgODcxNSwgMCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAotICAgIDEyMDIzMCwgNDExNzYsIDEyODc4MCwgOTk0LCA5ODMwNDUsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKLSAgICA1OTIxLCAwLCAyNTk3LCA5MjQyMywgNTkyMiwgMTE4OTAzLCA2Njg3MywgNDE4NiwgOTI1MzEsIDExOTk2NywgMTI3MTA1LCAKLSAgICA2NzE4LCAxMjcwMjksIDQ0MDYsIDc0NjAxLCA4NDgwLCA5MTkyLCA5NzQ3LCAxMjEwNDAsIDQ0MTMsIDkyMTk2LCA0MjI2OCwgCi0gICAgMzE5OCwgNTkyNCwgNTkyMCwgOTI0NjksIDY5MjEsIDc4MDgxLCA3NDAwNywgNDI4NjksIDg0MTgsIDExNjgxLCA0MzE2OSwgCi0gICAgMTAxNzYsIDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgMTE2ODIsIDY3NTYsIAotICAgIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMjA0OTQsIDExNDEsIDQyNDA3LCAKLSAgICA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTE5NTk5LCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAwLCA4MDE4LCA0MjMzMywgCi0gICAgNzQ3NTYsIDEwNjc1LCA2OTM3LCA0MjQ4NiwgNDMzODEsIDY1MzkwLCAxMDA2NywgMTIwODQ5LCAxMjAyLCAwLCA5ODM5MTAsIAotICAgIDY1ODYzLCAwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCAKLSAgICA3ODA0MiwgNjczOCwgMCwgNDM2ODEsIDY5NzI4LCAyMDU5LCA5MjQyMiwgMCwgNTUyMzcsIDE0MzEsIDExOTE5NCwgNjY1NjUsIAotICAgIDEwODIxLCAwLCAxMjgwNCwgMTI4MDc2LCA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCAKLSAgICA3MTIyOCwgOTE3OTgyLCAxMjkxODgsIDE3NDAsIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIAotICAgIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgCi0gICAgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIAotICAgIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzNTU0LCA0MTU3MywgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCAKLSAgICA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgMCwgODMwNjcsIDEyODM4MSwgOTI3MTIsIDY0NDg0LCAxMTkyNjYsIAotICAgIDQxMTY3LCAwLCA0MTczNSwgOTQwMTksIDcxNywgMTA3NTQsIDgzMTY4LCA4MzE2OSwgNzI0MTMsIDgzMTYzLCA2Mzc2NywgCi0gICAgODMxNjUsIDE3ODAsIDY5MzYsIDAsIDgzMTYxLCA4MTksIDEwNjExLCA5Njk0LCAxMjY5NzgsIDcxNDc0LCAwLCAxMjc4NzEsIAotICAgIDEyOTA2OSwgODM0MywgODM0MiwgODM0NSwgODM0NCwgNjU3OCwgNzAwOSwgNzUyMywgNjkyMiwgODM0OCwgODM0NywgNzUyNSwgCi0gICAgMzM0NiwgODMzOSwgMTI4MTY1LCAxMjgyMDgsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgCi0gICAgNjU1NjUsIDgzMzYsIDU5MzYsIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgCi0gICAgNzgxMjMsIDY1NDY2LCAxMTA5MCwgNjk1MywgMCwgODMzNzUsIDc0OTczLCA3ODEzMiwgNTkyNiwgNjgyNTAsIDc4MTMwLCAKLSAgICA3ODEyNiwgNzgxMjcsIDc4MTI0LCA3ODEyNSwgOTAzOCwgNzg4NywgNDM0NTYsIDc4MzAsIDExNjUxLCAxMzA5MywgNjQwMDIsIAotICAgIDk4MzU1OSwgNjU3NDIsIDEyODc0LCAxMTk1OTcsIDExNTkwLCAwLCA3NDA0OCwgNjczNzksIDg1OTUsIDk4MzUsIDkxNzk0NywgCi0gICAgNDM3MDMsIDEzMDk3LCAwLCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIDEwMDMzLCAKLSAgICA3MTEwMSwgNjYyNDEsIDY1NTcwLCAxMTkxNTQsIDEyMjk3LCA3MTIxMiwgMTk1NSwgMTI3OTcwLCA1MzQ5LCA0MjUzOCwgMCwgCi0gICAgMTI0OTMyLCA3NDExLCA5NDYyLCAxMjgxNTAsIDAsIDEyODQ2NSwgNDM5MjAsIDQyNzM2LCAxMjEwMTcsIDU3NTYsIAotICAgIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCA5ODM3MTcsIDQzMTA5LCA3NjM3LCA1NzUyLCAxMTIxMywgODM0ODEsIAotICAgIDczODMyLCAxMjg4MjcsIDgzNDg2LCAxMjgyMzEsIDc4MzM0LCA5MTc5NTcsIDc2MzYsIDY1MTcxLCA5MTI0LCA5ODMyMTAsIAotICAgIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgOTgzMjIxLCAyMDI3LCA2NjIzMCwgMTAwODAsIDc4MTM2LCAxMDQwMywgNzA4NjksIAotICAgIDQ2NDAsIDY0NzEzLCAxMDIyNCwgMTIwNDI5LCAxMTE4MywgMTIwNDMxLCAxMjA0MzAsIDAsIDEyODM1MSwgMTI3NDg5LCAKLSAgICAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIDQxMjc0LCA1Nzc4LCA2MzAyLCAKLSAgICAxMjE0MzIsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgMTI4MTUzLCA3NDM5MywgMTE1NTIsIAotICAgIDAsIDEyNzg1NSwgMTI4MjE3LCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIDYzNzg5LCA0MTI2NCwgNzg2NTgsIAotICAgIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgNDEyNjksIDEyMDQxMiwgCi0gICAgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCA3ODI3MCwgMTI3OTgyLCAKLSAgICA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgMTY3MSwgMTI3ODkyLCAKLSAgICA2MDY5LCA5MjE5LCAxMjg1NTgsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAxMTkxNDMsIDAsIAotICAgIDcxNDYyLCA5NDA1MCwgMjMwNiwgMTA0ODUsIDExODk0MywgNjA2OCwgMTA2MTIsIDE5NTA5OSwgMTE5NTY3LCA2NzcwNSwgCi0gICAgOTI1NjEsIDQxNDYyLCAxMjA0NzAsIDE5NTA3OSwgNTQyMiwgMTI4MjM0LCA5ODM2MjksIDEyODYxMSwgODM0NzQsIDEwMjI5LCAKLSAgICAxMDYzNSwgODI2LCA4MzQ3NSwgMTk1MDgyLCAxMjcwMDMsIDE5NTA4NCwgNzE0NTUsIDY0ODMsIDkyMjExLCAxODA4LCAKLSAgICA3ODQ4LCAxMTM3ODgsIDgxMDAsIDc4MjI3LCA3MTE5OCwgNzg2NzAsIDEzMzAxLCA3ODY2NywgOTY2NywgNzg2NjUsIAotICAgIDY3NzA0LCA5ODM5MjEsIDExMDAzLCA5OTA0LCA4MzQxMCwgOTgzOTE5LCAxMjA2OTAsIDkxNDQsIDEwOTIxLCA5Mjk5MiwgCi0gICAgNzg2ODAsIDk4NDAsIDY1MTMxLCA3ODY3OCwgNzEwOTIsIDEwMzEzLCA4MzQwOCwgODM1MDAsIDY0MzIwLCAxMDI2NSwgCi0gICAgNjcyNTIsIDEwOTYyLCA2NjkwNCwgNDMwMDgsIDg5NDUsIDc4NjgzLCAxMjA5OTUsIDQxLCAxOTUwNzIsIDE3OTIsIAotICAgIDEyMDUxNSwgMTk1MDczLCA4NjU1LCA2ODI1NCwgOTI1NDQsIDc3OTUxLCAxMjA2NiwgNjcyNTgsIDM4NSwgNDE1MiwgMjU4NSwgCi0gICAgMTI3ODA0LCAxMTkwNjgsIDMxMjYsIDkxNzg1MiwgNzM5ODMsIDEwOTU3LCAxMjcwMzcsIDExMTYwLCAxMTkxMTYsIAotICAgIDEyNzg3MywgMTMxNTcsIDAsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIDQ0MDA2LCA2OTk3LCA2ODAwNCwgCi0gICAgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgOTE3OTcxLCA2NTIxNiwgNzAxOTYsIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAKLSAgICAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIDc4ODAyLCAxMjEyMTksIDEyMDg1NCwgCi0gICAgNDM0NDIsIDY5ODUxLCA2NTI1NCwgMTAwNjYsIDk4Mzg4OSwgNzI0MTksIDAsIDAsIDEzMDYxLCA4MDE2LCA3ODY4NywgCi0gICAgMTk5MzIsIDY0ODMxLCAwLCAxMTM2ODQsIDEyMzkwLCAxMTkxNzEsIDE2MzQsIDY4MTE1LCA2NTA3MCwgMTEwNTYsIAotICAgIDk4MzU3NCwgMTE5OTI1LCA5ODMwOTksIDQxMTY1LCAxMTMyOCwgMTI0NTAsIDk4MzgxMSwgNDExNjYsIDAsIDEyNDU2LCAKLSAgICAxMTk5MTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCAKLSAgICA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCAKLSAgICA3ODQyNCwgMzIzMCwgNjg3NzMsIDk4MzQ5NywgNzUwMjUsIDUyMDksIDI5NywgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCAKLSAgICA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCAKLSAgICA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3NDgxNCwgNzg4NzUsIDEyNzUwNSwgNzg4NzYsIDI1MDMsIDczNzc4LCAxNzYyLCAKLSAgICA2OTc5NCwgMjQ5NSwgNzQ5MTEsIDU4NDQsIDY4MDMxLCAxMTg4MzgsIDEyNzk0NywgMTI2NTQsIDQ2NjMsIDE4OTksIAotICAgIDc4ODc3LCAyNTA3LCA2NDEyMSwgODcyNiwgNjU1OTQsIDkyOTcyLCAwLCAxMTkwMDAsIDg4OTIsIDc4ODcyLCA5MjMzOSwgCi0gICAgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMCwgMTI4NTMzLCAKLSAgICA2NDgxNCwgNjM3OTYsIDQzODYxLCAwLCA2NjU4MSwgMTE5MjA0LCA0MTYwOCwgMTI4NDc5LCAxMjExNDQsIDYzNzkyLCAKLSAgICA0NjU5LCAxMjA3ODgsIDc3OTcxLCA0MzY3NiwgNzQ5NDQsIDY5NjczLCAxMjEwMjksIDExMTI5LCA5MjkyOSwgMzI5LCAKLSAgICA3Nzk2OCwgOTI3MDcsIDgzNDk2LCA3Mzk5LCAwLCA0MTE4OCwgMTMyNDQsIDY3NjkyLCA0MjE2NywgNzQzNSwgNzgxOTMsIAotICAgIDUzODAsIDExOTA4NiwgNjkyMjUsIDExNTUsIDExMzY1LCA0MzEyNiwgNzc5NzIsIDAsIDY1Njg0LCAwLCA1NjAxLCA2NTE5MiwgCi0gICAgNDI3NjUsIDYzNzUyLCAwLCA3OTg3LCA2OTY3NiwgMTE3MiwgNjk3OTksIDY3ODYsIDQzNjAxLCAxMjA0NzYsIDc0MTI2LCAKLSAgICA1NjAzLCAwLCA0NDczLCAxMjEwODUsIDcyNDI2LCAxMjQ5NDcsIDY1MzQ3LCA2NTM0NiwgNjUzNDUsIDEyODU0OCwgCi0gICAgMTE5MjEzLCA1MzQ3LCA2OTgwMiwgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAwLCA2Mzc1NSwgMTI4MjcxLCAKLSAgICA1MzQzLCA3ODQyMiwgMTIwNjYxLCA0NTU1LCA1MzQxLCA4MzQ1OSwgNzAwNzEsIDc0OTE2LCA1MzUxLCA3ODY3NSwgNDMxMDQsIAotICAgIDY1MjQ0LCAxMjEzNjUsIDY0NTQxLCA0MjUxOSwgNjgxMzQsIDEyODkxNiwgMTI2OTg2LCA3NDc2NSwgMTI4OTc5LCAKLSAgICAxMjc1MTAsIDY2MzgsIDAsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgCi0gICAgNDIxNzIsIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIAotICAgIDY1MzU1LCA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAKLSAgICAxMjY2MzUsIDI0MjMsIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAKLSAgICAwLCA2NDYwNSwgMCwgNjgwNzQsIDk4Mzk3NywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIAotICAgIDY5NzczLCA5NzczLCAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA4MzQ1MCwgMTA2ODQsIDAsIAotICAgIDEyNTA2MywgOTI5MDYsIDc5NDYsIDEyNTQxLCA4MTgyLCA2NzU4NiwgNjk3ODAsIDAsIDEyODIwNywgMCwgOTgzNjU0LCAKLSAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCAwLCAxMTg4NTQsIDY4MDExLCA4ODQ3LCA5MjM3MSwgNjU4NzYsIDU1MzUsIDgzMjksIAotICAgIDc0NTkwLCAxMjUwMzYsIDkyNjA5LCAwLCA2Njg3NCwgMzEyNywgMjU5NSwgNjU3MTMsIDQyMDEzLCAxMjEyMTEsIDU2MDcsIAotICAgIDQxMDg5LCAxMjg2MjYsIDAsIDcwMjkyLCAyNjY1LCAxMTMwNCwgNDM3NTEsIDc0MjAwLCA0OTcwLCA4NzY0LCAxMjA0NTksIAotICAgIDg5MzQsIDkyNzI2LCA0MTU2NiwgNDQ5MiwgNjcyNzEsIDY1MDExLCA0MTA5MCwgMCwgODM0MTcsIDExODgsIDcyNTQsIAotICAgIDExMDAsIDAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIDM1NzIsIDEwMDIzLCAKLSAgICA0OTU5LCAxMzA3OSwgMCwgNjcyNzUsIDk3MjksIDEyNTExMCwgMTIxMDQyLCA2NzI3OCwgNDMzNjEsIDEyNzM1NSwgNjcyNzYsIAotICAgIDExODAzLCA3OTk2LCA5OTA3LCA0MTQ1MCwgMTMzMDQsIDgzMzkyLCA4MzM2OSwgNDE0NTEsIDgzMzcwLCAxMTA5NSwgODI3MywgCi0gICAgNzQzMjIsIDM0NTEsIDcwMjkxLCA5NzIsIDQxNDUzLCA2ODE2NCwgMTE5MzI3LCA3Mzg4MywgNjgwMjIsIDczOTQ1LCAKLSAgICA4MzM2MywgMjI4OCwgMTk5NTUsIDk1MzgsIDgzMzY2LCA2OTgwNywgMCwgMTI5MDk1LCAwLCA4MzM4MSwgMTEzOTYsIAotICAgIDgzMzg1LCAxMTAxOSwgMCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCA0MTA3OCwgNzEzNjUsIDI2MSwgNTkyNywgNzc5MSwgCi0gICAgMTI4NjgxLCA3MzYyLCAwLCAxMDY5NiwgNzAxMjQsIDYwNzMsIDk4MzgsIDExODkyMCwgMCwgNjA3NSwgOTM5OTUsIDI4MiwgCi0gICAgMTE5MTc4LCA2NDM3LCA2ODgzMCwgMTIxNDU5LCA5ODAxLCA2NjM5OSwgNzQxNzcsIDAsIDkxNzk1OSwgMzQ3NCwgNjcyODcsIAotICAgIDAsIDY3Mjg2LCA2MDgxLCA4MzQ2OSwgNzg4NzQsIDY3Mjg5LCA2NzI4MywgODM0NzEsIDcwMDAyLCA0MjkzMCwgMCwgCi0gICAgOTMwMTMsIDg3NTEsIDExNDk5LCA2NzI5NywgNzgxNiwgMTI2MzYsIDQ2NjUsIDEyNjI4LCA0NjcwLCA2NzI5OCwgMTIwMjcyLCAKLSAgICA2ODAxNywgOTY0MiwgMTA5MTIsIDk1OCwgNjcyOTMsIDExMzg3LCA2NzI5MSwgNDY2NiwgNzA3OTIsIDQ5MTUsIDY3NzE1LCAKLSAgICA0NjY5LCAwLCA2ODA5OSwgMTMyODcsIDQ2NjQsIDEwODM2LCAxMjA1NTAsIDc1MDUzLCA2OTc3NSwgMCwgNDM1OTUsIDc0NTAsIAotICAgIDAsIDkxNzg3NSwgODY2NCwgOTY5NywgMzYwNiwgODM0NDYsIDk4Mzk3OCwgOTE3ODc0LCA2NDgxNSwgMTA2MywgMTIwMjUwLCAKLSAgICA2NzMxMiwgOTc3MiwgNzI1NSwgODg4NiwgMTM4OSwgMTI3OTMyLCAxMjAyNTcsIDEyMDI1OCwgMTIwMjU5LCAxMjk0MSwgCi0gICAgNDI2NjEsIDgzNDM4LCAxMjAyNTUsIDEyMDI1NiwgMTIzMDEsIDY3ODM2LCA2OTgyMCwgNDExMDIsIDY0NDI4LCAxMjAyNjIsIAotICAgIDY2NjAyLCAxMjAyNjQsIDEwMTcsIDY2NjAwLCA1MjMsIDUwNSwgMTQ0NywgNzQ0MzYsIDAsIDcwMzQwLCA4MzQzNywgODYwOCwgCi0gICAgNDI3ODksIDEyMDYxMywgODM0MzYsIDAsIDcxOTA2LCAxMTMwNywgNjY3MDcsIDY3MzAxLCA2NzMwMCwgMTE3NDUsIDc5MTksIAotICAgIDY3MzA0LCAxNjQxLCAwLCAwLCA4OTY2LCAxMjg5MDAsIDc0OTE5LCA1OTA4LCA3MTg3MCwgNjc4NTMsIDY3NDQsIDY3MzEwLCAKLSAgICAxNjk5LCA2NzMwOCwgNjczMDcsIDY3MzE0LCA2NzMxMywgNjMwNiwgMTAxNjksIDcxMzI0LCAxMTkyNTEsIDEwMDY4LCAKLSAgICAzNzY2LCAyMzg5LCA2NzMwNSwgMTIwNDU1LCA2NjExLCAyNTcsIDQzMTcwLCAxMzE1MywgMCwgNDIzODYsIDk4MzgxNSwgCi0gICAgOTQzNiwgMjU5OSwgMCwgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIDU2MjIsIAotICAgIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIDY3MzI0LCAKLSAgICAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAxMjA0NDcsIAotICAgIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCA0NTY0LCAKLSAgICAxMTkwNDksIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIDEyNzM4NSwgCi0gICAgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCA2NzMyMCwgCi0gICAgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgNjQyNzcsIAotICAgIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIDU2MzIsIAotICAgIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIDQ3NzIsIAotICAgIDI0MDAsIDU2MjcsIDEyMDAxNywgNjczMzAsIDEyMDAyMywgNjQyNzUsIDEyMDAyMSwgODc4NiwgMTEzNjkzLCAyMDMsIAotICAgIDc0MzY1LCAwLCAwLCA2OTk4NSwgNzgzNTAsIDExMzcwMywgNjQzNzgsIDQyMDU0LCAxMjg1NzUsIDAsIDU1NCwgMTE5NjQ5LCAKLSAgICAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgNTY5NCwgCi0gICAgNzY4OSwgNjk3OTgsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAwLCAKLSAgICAxMjQzLCA0MjE1NCwgNTQzMSwgNjY1MiwgOTE3NTYxLCA2Nzc1MywgNDM2NTEsIDEyOTEyOSwgNjgxMTgsIDY4MDkzLCAKLSAgICAxMTI5LCAxMjY1NzQsIDAsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCA5Mzk5MiwgCi0gICAgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIDAsIDc3NTYsIAotICAgIDEyMzQyLCAxMjA2OTcsIDUxLCA0MTUxNiwgMCwgODU3MCwgOTU2OCwgNzEzMTgsIDQ1NiwgNzAyNiwgODE0NSwgMTE2OCwgCi0gICAgOTI1MSwgOTA4MiwgMTE5OTY0LCA2NDA1NSwgNDI3ODEsIDM4NjYsIDEyMzIzLCA0MTUxMiwgNzM4MDUsIDY4MTIxLCAKLSAgICA5MTc4NTAsIDQxNDk0LCA5MjMxNiwgNDY2MCwgNjcxMTQsIDEwNDA1LCAxMjcxOTUsIDc4ODAzLCAwLCAxMjkxNzYsIAotICAgIDQyMDQwLCA3MzkxOCwgMTE5NjI3LCA3OTQ0LCA0MTQ1NCwgMTI2MDUsIDAsIDQyMjA1LCA0MTQ1NSwgMjM2LCA2NDA1MSwgCi0gICAgNzg4NjcsIDgyMTQsIDgzNDIxLCAxMTM3ODQsIDEyMDAzNywgNDE0NTcsIDk4Mzk3MCwgMTE5NTg5LCAxOTY5LCAyMzg0LCAKLSAgICA4MDk3LCAxMjgwMTksIDc0MTMsIDY4MDEyLCA3ODAyOSwgODc2NiwgNDM4NjQsIDc4MDc5LCA1ODU0LCAxMjUwMDAsIAotICAgIDEwNTgzLCAwLCAxMTk5ODksIDEyNzU1NiwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgOTgzODM5LCA4NDI5LCAKLSAgICAxMjEyMzAsIDExODgwNiwgMjgzOCwgNjQyOSwgMCwgODM0MjYsIDAsIDEyODQ3OCwgMCwgMTk0NjIwLCA5NDAwNSwgMTEwOTYsIAotICAgIDgzNDIyLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCA3Mzc0MiwgNjYsIAotICAgIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIDgyLCA4MSwgODQsIAotICAgIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCA4NTU2LCAKLSAgICA5MTc5NzUsIDk2NTksIDAsIDAsIDAsIDk1NTYsIDAsIDQ1MDMsIDExMzUzLCA5NjQ3LCAxMjUwMTUsIDc4MTg1LCAxMjg5NTksIAotICAgIDAsIDcxNDM3LCA3ODg4NiwgMCwgMCwgNzQyMjksIDY2NTkzLCA2NDM4LCA4MzM2NCwgOTEwOSwgNzg4ODIsIDEyODksIAotICAgIDY0NTk5LCAxMTg5MTUsIDY4MDA5LCAxMjgzMDIsIDY1NTA3LCAyNDQ3LCAxMTk5MTEsIDEyODY5NCwgMTI4MDQyLCAKLSAgICAxMjY1NDUsIDY2NTg5LCAwLCA2MzM0LCAxMjgzNjksIDAsIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIAotICAgIDAsIDAsIDY5Njg2LCA0MjQyNSwgODkxOCwgNjQwMDMsIDU3MTYsIDQyMzEyLCAwLCAxOTQ2OTIsIDY5NzIsIDQyODI2LCAKLSAgICA3NDQwOSwgNDI0NjQsIDEyMDU2NywgNjY4OTksIDY3MTU1LCA3NDc5NiwgNjQ0MDAsIDY0NjkzLCAxMjg4MDUsIDY3Njg3LCAKLSAgICA2NTQyOSwgOTUxNSwgNDQzNSwgMCwgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCAKLSAgICA0NTk0LCAxMzkxLCAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAKLSAgICAxMjcyNzYsIDc5NjAsIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIAotICAgIDY3MjUzLCA3Njk5LCAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgMTIxNDYwLCAKLSAgICAxMjA5MTAsIDc0MzA4LCA5ODM4MjcsIDExMzcxMiwgNjcxNTMsIDk4MzU3MSwgMTI4MDQ2LCA0MzQxOSwgOTgzNDcxLCAKLSAgICA2NDU1NCwgMTA1NzQsIDM4NzgsIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgCi0gICAgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCA2ODAyMSwgNjU5MTksIDAsIDY2OTUsIDcyMCwgMzI0LCAwLCAxMjkwMzUsIDQzNDA2LCAKLSAgICA5ODM3MzYsIDE0NjQsIDQwOTg1LCAwLCA3OTc0LCAwLCA0MzQ3NCwgNjgwODIsIDY0NDg4LCAxMjg5NzcsIDEyMDk1MSwgCi0gICAgNjQwNDEsIDc0Nzg3LCAwLCA3ODg2NSwgOTIyNTgsIDY1NTk3LCAxMjE0MTYsIDc4ODYzLCAwLCAxMzAyLCA2NjI4OCwgCi0gICAgNzg4NjEsIDExOTEzNCwgMCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIAotICAgIDY1NjA4LCAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCAKLSAgICA0MzMwMSwgMCwgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMCwgCi0gICAgNjg0NTUsIDQyODYzLCA3MzgzOSwgMTI3NTI5LCAwLCA2NzcwMCwgOTE3ODEyLCAxMTM3MDEsIDQzNjQ1LCA0NjgsIDYxMiwgCi0gICAgMCwgNjQ0MDEsIDY2NDQ4LCA2ODM3NiwgMCwgMTY3NCwgMCwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIDU0MCwgCi0gICAgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTA3MCwgODIwLCAKKyAgICAxMjExODAsIDEyODg2NiwgNDM0MzEsIDEyNzA5NywgOTI0MTMsIDg3MTUsIDk4MzM5OCwgNDExNzksIDk4MzM1OCwgNDMzMTMsIAorICAgIDEyMDIzMCwgNDExNzYsIDEwMTAwNywgOTk0LCAxMDA0NDgsIDg0NTIsIDc3OTczLCA3Mzk2NiwgNjY4OTAsIDcwODEyLCAKKyAgICA1OTIxLCAxMDA4MDQsIDI1OTcsIDY2Nzc2LCA1OTIyLCAxMTg5MDMsIDY2ODczLCA0MTg2LCA5MjUzMSwgNzM3NDEsIAorICAgIDEyNzEwNSwgNjcxOCwgMTI3MDI5LCA0NDA2LCA3NDYwMSwgODQ4MCwgOTE5MiwgOTc0NywgMTIxMDQwLCA0NDEzLCA5MjE5NiwgCisgICAgNDIyNjgsIDMxOTgsIDU5MjQsIDU5MjAsIDkyNDY5LCA2OTIxLCA3ODA4MSwgNzQwMDcsIDQyODY5LCA4NDE4LCAxMTY4MSwgCisgICAgNDMxNjksIDEwMTc2LCA5ODM2NDAsIDc0MiwgNzQ4ODEsIDI4OTMsIDEwNzcyLCA2NTI3NiwgNTkzNywgMTkxNCwgMjU1MywgCisgICAgMTE2ODIsIDY3NTYsIDEyNTEwNCwgMTIxMTI2LCA4MzYzLCAwLCAyOTkzLCA3NzcyLCAzOTE2LCA0MzAxLCAxMDA1MTcsIAorICAgIDExNDEsIDQyNDA3LCA3NDE3LCA3MTgsIDc1NzIsIDk3MywgMTAwNTAwLCAxMjA3MTgsIDMyMzUsIDI0MTUsIDQzMTY0LCAKKyAgICAxMjUwOTksIDgwMTgsIDQyMzMzLCA3NDc1NiwgMTA2NzUsIDY5MzcsIDQyNDg2LCA0MzM4MSwgNjUzOTAsIDEwMDY3LCAKKyAgICAxMDA4NjgsIDEyMDIsIDEwMDU1NywgMTI4MzY0LCA2NTg2MywgMTE5MjUwLCA2ODQ4NCwgOTQwMTMsIDc4MTgyLCA2NDU0MiwgCisgICAgMzI2MCwgNzM4MjksIDY1Mzg4LCA5OTQ1LCA4NDE5LCA3ODA0MiwgNjczOCwgMTIyODgyLCA0MzY4MSwgNjk3MjgsIDIwNTksIAorICAgIDkyNDIyLCAxMDA1MDIsIDU1MjM3LCAxNDMxLCAxMDA1MDMsIDY2NTY1LCAxMDgyMSwgMTAwNTA4LCAxMjgwNCwgMTAwNTEwLCAKKyAgICA4MjI5LCAxMjM1LCAzMzA3LCAxMTQ3MiwgNzgwODksIDc4MTg0LCA0NTQ0LCA3MTIyOCwgMTk0NjI2LCAxMjkxODgsIDE3NDAsIAorICAgIDc4MDk3LCA4NzU4LCA5ODUsIDEyODcyLCA2NDUxMSwgNzgwOTQsIDEyMDY4LCA3ODEwMiwgNzEyMjYsIDEwMTQxLCA3NDkyMiwgCisgICAgNjM3NjEsIDg3ODUsIDQ0NzYsIDY1MDcxLCA2Mzc2MywgMTI2NTUsIDg5MDcsIDkxNDcsIDc4MTA2LCA3ODEwMywgNzgxMDQsIAorICAgIDEyMDg5OCwgMTE5NTcyLCAxMDY2NSwgNjQ2MTYsIDQxNTcyLCAxMjc5NzksIDEyNzE2MCwgOTgzMTI3LCA0MTU3MywgCisgICAgODMxNjAsIDM5MzEsIDEyMDI5NSwgNzQxNDMsIDgzMTU2LCA4MzE1NywgODMxNTgsIDc4NDYwLCAxMTk4MiwgOTgzNDgzLCAKKyAgICA4MzA2NywgMTI4MzgxLCA5MjcxMiwgNjQ0ODQsIDExOTI2NiwgNDExNjcsIDk4MzM2NiwgNDE3MzUsIDk0MDE5LCA3MTcsIAorICAgIDEwNzU0LCA3Mjc0MCwgODMxNjksIDcyNDEzLCA4MzE2MywgNjM3NjcsIDgzMTY1LCAxNzgwLCA2OTM2LCAwLCA4MzE2MSwgCisgICAgODE5LCAxMDYxMSwgOTY5NCwgMTI1MjI4LCA3MTQ3NCwgMCwgMTI3ODcxLCAxMjkwNjksIDgzNDMsIDgzNDIsIDgzNDUsIAorICAgIDgzNDQsIDY1NzgsIDcwMDksIDc1MjMsIDY5MjIsIDgzNDgsIDgzNDcsIDc1MjUsIDMzNDYsIDgzMzksIDEyODE2NSwgCisgICAgNzI3MDUsIDU3NSwgMjY4LCA3ODExMSwgODU2MywgNTc1NCwgMTIwMzQzLCA0MTU0MSwgNjU1NjUsIDgzMzYsIDU5MzYsIAorICAgIDcyOTAsIDc4MTE3LCA4MzM3LCA4MzQxLCAzMDgsIDExMzg4LCA3NTIyLCA4MzE1MSwgNzgxMjMsIDY1NDY2LCAxMTA5MCwgCisgICAgNjk1MywgMTI1MjQwLCA4MzM3NSwgNzQ5NzMsIDc4MTMyLCA1OTI2LCA2ODI1MCwgNzgxMzAsIDc4MTI2LCA3ODEyNywgCisgICAgNzgxMjQsIDc4MTI1LCA5MDM4LCA3ODg3LCA0MzQ1NiwgNzgzMCwgMTE2NTEsIDEzMDkzLCA2NDAwMiwgOTgzNTU5LCAKKyAgICA2NTc0MiwgMTI4NzQsIDEwMDQ3MywgMTE1OTAsIDEwMDQ3NSwgNzQwNDgsIDY3Mzc5LCA4NTk1LCA5ODM1LCAxMDA0NTYsIAorICAgIDQzNzAzLCAxMzA5NywgMTI3MTk3LCA2NDY0MywgMTMyODMsIDEyNjk3LCA3NDk3NSwgMTIzODEsIDM0ODgsIDU5MzMsIAorICAgIDEwMDMzLCA3MTEwMSwgNjYyNDEsIDY1NTcwLCA3ODMzNiwgMTIyOTcsIDcxMjEyLCAxOTU1LCAxMjc5NzAsIDUzNDksIAorICAgIDQyNTM4LCAwLCAxMjQ5MzIsIDc0MTEsIDk0NjIsIDEyODE1MCwgMTAwNDUzLCAxMDA0NTIsIDQzOTIwLCA0MjczNiwgCisgICAgNzA3NDcsIDU3NTYsIDEyODMyNCwgNzYzOCwgNDE2NDIsIDQyNzY0LCAxMjA0NDQsIDQzMTA5LCA3NjM3LCA1NzUyLCAKKyAgICAxMTIxMywgODM0ODEsIDczODMyLCAxMDA0NjMsIDgzNDg2LCAxMDA0NjUsIDc4MzM0LCAxMjEwMzQsIDc2MzYsIDY1MTcxLCAKKyAgICA5MTI0LCA5MTc5NTcsIDc4ODkyLCAxMjA3OTgsIDI5MSwgMCwgODM0ODgsIDIwMjcsIDY2MjMwLCAxMDA4MCwgNzgxMzYsIAorICAgIDEwNDAzLCA3MDg2OSwgNDY0MCwgNjQ3MTMsIDEwMjI0LCAxMjA0MjksIDExMTgzLCAxMjA0MzEsIDEyMDQzMCwgOTgzMjIzLCAKKyAgICAxMjgzNTEsIDcyODQ1LCAxMjcxMzgsIDAsIDkyNDk5LCAwLCAxMTkwOTQsIDc0MjEzLCA3ODI0LCAwLCAxOTQ2NDgsIAorICAgIDQxMjc0LCA1Nzc4LCA2MzAyLCAxMDAzNjcsIDAsIDEyNjgwLCAxMTkxMzAsIDE0MTcsIDY3MjQyLCA5MzA0MSwgOTQ1MiwgCisgICAgMTI4MTUzLCA3NDM5MywgMTE1NTIsIDAsIDEyNzg1NSwgMTIxMzgwLCA2NTM5MSwgMTI4NjE0LCAxMDE3MiwgNjU0NTMsIAorICAgIDYzNzg5LCA0MTI2NCwgNzg2NTgsIDY0MjYsIDQ2NDEsIDkxNzksIDY0ODE5LCA1NTI3OCwgNDEyNTUsIDQyMDM2LCA0MTQ2OSwgCisgICAgNDEyNjksIDEyMDQxMiwgNDEyNjcsIDQ2NDYsIDY3NzU5LCA4NjUsIDQyMDM0LCA3ODI3NCwgNzgyNzMsIDQ2NDUsIDQyMDMzLCAKKyAgICA3ODI3MCwgMTI3OTgyLCA5ODMxNzIsIDQzOTQ4LCAxOTUxMDAsIDY4ODQwLCA3ODY3NCwgMTY1OSwgOTE5LCA0Mjc4NCwgCisgICAgMTY3MSwgMTI3ODkyLCA2MDY5LCA5MjE5LCAxMDA0NjEsIDE2NjEsIDEzMTIwLCA2Mzc4NCwgNjk4MTksIDEwMTQwLCA5NzEzLCAKKyAgICAxMTkxNDMsIDk4MzM1OSwgNzE0NjIsIDk0MDUwLCAyMzA2LCAxMDQ4NSwgMTE4OTQzLCA2MDY4LCAxMDYxMiwgMTk1MDk5LCAKKyAgICAxMTk1NjcsIDY3NzA1LCA5MjU2MSwgNDE0NjIsIDEyMDQ3MCwgMTk1MDc5LCA1NDIyLCAxMjgyMzQsIDk4MzYyOSwgCisgICAgMTI3NzcwLCA4MzQ3NCwgMTAyMjksIDEwNjM1LCA4MjYsIDgzNDc1LCAxOTUwODIsIDkyNjAzLCAxMjExNDksIDcxNDU1LCAKKyAgICA2NDgzLCA5MjIxMSwgMTgwOCwgNzg0OCwgMTEzNzg4LCA4MTAwLCA3ODIyNywgNzExOTgsIDc4NjcwLCAxMzMwMSwgNzg2NjcsIAorICAgIDk2NjcsIDc4NjY1LCA2NzcwNCwgOTgzOTIxLCAxMTAwMywgOTkwNCwgODM0MTAsIDk4MzkxOSwgMTIwNjkwLCA5MTQ0LCAKKyAgICAxMDkyMSwgOTI5OTIsIDc4NjgwLCA5ODQwLCA2NTEzMSwgNzg2NzgsIDcxMDkyLCAxMDMxMywgODM0MDgsIDgzNTAwLCAKKyAgICA2NDMyMCwgMTAyNjUsIDY3MjUyLCAxMDk2MiwgNjY5MDQsIDQzMDA4LCA4OTQ1LCA3ODY4MywgMTIwOTk1LCA0MSwgCisgICAgMTk0ODY2LCAxNzkyLCAxMjA1MTUsIDE5NTA3MywgODY1NSwgNjgyNTQsIDkyNTQ0LCA3Nzk1MSwgMTIwNjYsIDY3MjU4LCAKKyAgICAzODUsIDQxNTIsIDI1ODUsIDEyNzgwNCwgMTE5MDY4LCAzMTI2LCA5MTc4NTIsIDczOTgzLCAxMDk1NywgMTI3MDM3LCAKKyAgICAxMTE2MCwgMTE5MTE2LCAxMjc4NzMsIDEzMTU3LCA5ODM2NDUsIDEyODAyNCwgMzU3MCwgMTI5MTg3LCA3NDQzLCAxMTg4MDQsIAorICAgIDQ0MDA2LCA2OTk3LCA2ODAwNCwgMTI2NjMxLCA3ODc5LCA4NzM5LCAxMTA3NSwgMTk1MDQ2LCA2NTIxNiwgNzAxOTYsIAorICAgIDY5Nzk1LCAyNTkzLCA4NDYzLCA3ODEwLCAxMjg1NDMsIDc4MzksIDkyNjEyLCA3ODgwNiwgNzUwNjQsIDk2OTEsIDQ0MTEsIAorICAgIDcxMjc2LCA3MjgzNywgMTIwODU0LCA0MzQ0MiwgNjk4NTEsIDY1MjU0LCAxMDA2NiwgMTIyODk3LCA3MjQxOSwgMTIxNDExLCAKKyAgICAxMjA4ODYsIDEzMDYxLCA4MDE2LCA3ODY4NywgMTk5MzIsIDY0ODMxLCAxOTQ5NzUsIDExMzY4NCwgMTIzOTAsIDExOTE3MSwgCisgICAgMTYzNCwgNjgxMTUsIDY1MDcwLCAxMTA1NiwgOTgzNTc0LCAxMTk5MjUsIDk4MzA5OSwgNDExNjUsIDExMzI4LCAxMjQ1MCwgCisgICAgOTgzODExLCA0MTE2NiwgOTM5NzEsIDEyNDU2LCAxMTkxOTQsIDE3MSwgNTk0MSwgMTI0NTIsIDE5NDcwOSwgMTI0NTgsIAorICAgIDEyNTMxLCA3ODc3OSwgNDMwMTMsIDYzODAwLCA3NDE2MiwgMTE5MzIwLCAxMjA0ODMsIDk5NjksIDEyMDc2NywgMTI0NTQsIAorICAgIDYzODA2LCA0MjEzMiwgMTIwNjMsIDc4NDI1LCA3ODQyNCwgMzIzMCwgNjg3NzMsIDEyODU5NSwgNzUwMjUsIDUyMDksIDI5NywgCisgICAgNTgxMCwgODUyMiwgODQxNSwgMTE5OTM3LCA3ODQyOSwgNzg0MjgsIDcwNzcsIDI0OTcsIDEyODY1MSwgOTYwLCA3NDE1NiwgCisgICAgNjk4MSwgOTIzNzQsIDEyOTM4LCA0MjkyLCA3ODg5MywgNzQ4MTUsIDEwNTEyLCAwLCA3Mjg2NiwgNzg4NzUsIDc4MDQ5LCAKKyAgICA3Mjg0MSwgMjUwMywgNzM3NzgsIDE3NjIsIDY5Nzk0LCAyNDk1LCA3NDkxMSwgNTg0NCwgNjgwMzEsIDExODgzOCwgCisgICAgMTI3OTQ3LCAxMjY1NCwgNDY2MywgMTg5OSwgNzg4NzcsIDI1MDcsIDY0MTIxLCA4NzI2LCA2NTU5NCwgOTI5NzIsIAorICAgIDEyMDQyNCwgNzEyNzIsIDg4OTIsIDc4ODcyLCA5MjMzOSwgNzEyMzIsIDk4MzA3MywgNTc4MiwgNDIwLCAxMjczNDgsIAorICAgIDkxNzg3MSwgNDM3OTYsIDEwNzk3LCA2Mzc5NCwgMTk0OTY3LCAxMjUyMjMsIDY0ODE0LCA2Mzc5NiwgNDM4NjEsIDAsIAorICAgIDY2NTgxLCAxMTkyMDQsIDQxNjA4LCAxMjg0NzksIDEyMTE0NCwgNjM3OTIsIDQ2NTksIDEyMDc4OCwgNzc5NzEsIDQzNjc2LCAKKyAgICA3NDk0NCwgNjk2NzMsIDEyMTAyOSwgMTExMjksIDkyOTI5LCAzMjksIDc3OTY4LCA5MjcwNywgODM0OTYsIDczOTksIDAsIAorICAgIDQxMTg4LCAxMzI0NCwgNjc2OTIsIDQyMTY3LCA3NDM1LCA3ODE5MywgNTM4MCwgMTE5MDg2LCA2OTIyNSwgMTE1NSwgCisgICAgMTEzNjUsIDQzMTI2LCA3Nzk3MiwgMTIwODYyLCA2NTY4NCwgMCwgNTYwMSwgNjUxOTIsIDQyNzY1LCA2Mzc1MiwgMCwgCisgICAgNzk4NywgNjk2NzYsIDExNzIsIDY5Nzk5LCA2Nzg2LCA0MzYwMSwgMTIwNDc2LCA3NDEyNiwgNTYwMywgMCwgNDQ3MywgCisgICAgMTIxMDg1LCA3MjQyNiwgMTI0OTQ3LCA2NTM0NywgNjUzNDYsIDY1MzQ1LCAxMjg1NDgsIDY2NzQxLCA1MzQ3LCA2OTgwMiwgCisgICAgOTE3OTczLCA3Mzg2OCwgNzA4NTIsIDEwNTg4LCAwLCAxMjg0MjAsIDYzNzU1LCAxMjY2NDMsIDUzNDMsIDc4NDIyLCAKKyAgICAxMjA2NjEsIDQ1NTUsIDUzNDEsIDgzNDU5LCA3MDA3MSwgNzQ5MTYsIDUzNTEsIDc4Njc1LCA0MzEwNCwgNjUyNDQsIAorICAgIDEyMTM2NSwgNjQ1NDEsIDQyNTE5LCA2ODEzNCwgMTI4OTE2LCAxMjY5ODYsIDc0NzY1LCA2Njc4NSwgMTI3NTEwLCA2NjM4LCAKKyAgICAxMjkzNjMsIDY1MTEzLCAyNzEsIDc0MTgwLCA2NTM3MCwgODgzNSwgNjUzNjgsIDEyNjUzLCA2NTM2NiwgNDIxNzIsIAorICAgIDQxMDg2LCA2NTM2MywgNjUzNjIsIDY1MzYxLCAxMTkxMiwgNDM0MTAsIDExMzIzLCA2NTM1NywgMTE4MDAsIDY1MzU1LCAKKyAgICA1MzQ1LCAxMTEwMywgNjUzNTIsIDY1MzUxLCA3NjEsIDY1MzQ5LCAxOTk1OSwgNjk3MTgsIDYzODU2LCAxMjY2MzUsIDI0MjMsIAorICAgIDc0NTE4LCA2NDY0NywgNzc5NTksIDExOTU3LCA0Njk5LCAxMjY1NzMsIDEyODY3MCwgOTgzNzg3LCAwLCA2NDYwNSwgMCwgCisgICAgNjgwNzQsIDEyNzMwNywgNDkxNiwgMTI4NTY4LCAzODAsIDEwOTU4LCA2NjU2MywgNzc5NTUsIDY5NzczLCA5NzczLCAKKyAgICAxMzE2NywgMTI5MTgsIDQxMDk2LCA3Mzk4MCwgNjkyNDUsIDc4MjU0LCA2NjczNywgMTA2ODQsIDEyMjkxMywgMTI1MDYzLCAKKyAgICA5MjkwNiwgNzk0NiwgMTI1NDEsIDgxODIsIDY3NTg2LCA2OTc4MCwgMTI5NDIyLCAxMjgyMDcsIDk4MzY0NCwgMTI4NjEzLCAKKyAgICA5MDA1LCAxMjI1LCA2NjMwLCAwLCA5ODM0OTEsIDExODg1NCwgNjgwMTEsIDg4NDcsIDkyMzcxLCA2NTg3NiwgNTUzNSwgCisgICAgODMyOSwgNzQ1OTAsIDEyNTAzNiwgOTI2MDksIDAsIDY2ODc0LCAzMTI3LCAyNTk1LCA2NTcxMywgNDIwMTMsIDEyMTIxMSwgCisgICAgNTYwNywgNDEwODksIDEyODYyNiwgOTgzMzk2LCA3MDI5MiwgMjY2NSwgMTEzMDQsIDQzNzUxLCA3NDIwMCwgNDk3MCwgCisgICAgODc2NCwgMTIwNDU5LCA4OTM0LCA5MjcyNiwgNDE1NjYsIDQ0OTIsIDY3MjcxLCA2NTAxMSwgNDEwOTAsIDAsIDgzNDE3LCAKKyAgICAxMTg4LCA3MjU0LCAxMTAwLCAxMjkxODAsIDY3MjcwLCA0MTA4MSwgMjkxMiwgMTE3NDksIDY3MjgyLCA2NzI4MSwgNjcyODAsIAorICAgIDM1NzIsIDEwMDIzLCA0OTU5LCAxMzA3OSwgMTI0OTc4LCA2NzI3NSwgOTcyOSwgMTI1MTEwLCAxMjEwNDIsIDY3Mjc4LCAKKyAgICA0MzM2MSwgMTI3MzU1LCA2NzI3NiwgMTE4MDMsIDc5OTYsIDk5MDcsIDQxNDUwLCAxMzMwNCwgODMzOTIsIDgzMzY5LCAKKyAgICA0MTQ1MSwgODMzNzAsIDExMDk1LCA4MjczLCA3NDMyMiwgMzQ1MSwgNzAyOTEsIDk3MiwgNDE0NTMsIDY4MTY0LCAxMTkzMjcsIAorICAgIDczODgzLCA2ODAyMiwgNzM5NDUsIDgzMzYzLCAyMjg4LCAxOTk1NSwgOTUzOCwgODMzNjYsIDY5ODA3LCAxMjUyNDYsIAorICAgIDEyOTA5NSwgMCwgODMzODEsIDExMzk2LCA4MzM4NSwgMTEwMTksIDEyMTIxOCwgMTI4NDE2LCAxMjEyMDUsIDY4MDIwLCAKKyAgICA0MTA3OCwgNjY3NTgsIDI2MSwgNTkyNywgNzc5MSwgMTI4NjgxLCA3MzYyLCAxMjUyNTYsIDEwNjk2LCA3MDEyNCwgNjA3MywgCisgICAgOTgzOCwgMTE4OTIwLCA5MTc4NzgsIDYwNzUsIDkzOTk1LCAyODIsIDExOTE3OCwgNjQzNywgNjg4MzAsIDEyMTQ1OSwgCisgICAgOTgwMSwgNjYzOTksIDc0MTc3LCA2Njc5MSwgOTE3OTU5LCAzNDc0LCA2NzI4NywgMCwgNjcyODYsIDYwODEsIDgzNDY5LCAKKyAgICA3ODg3NCwgNjcyODksIDY3MjgzLCA4MzQ3MSwgNzAwMDIsIDQyOTMwLCAxMjk0MTMsIDkzMDEzLCA4NzUxLCAxMTQ5OSwgCisgICAgNjcyOTcsIDc4MTYsIDEyNjM2LCA0NjY1LCAxMjYyOCwgNDY3MCwgNjcyOTgsIDEyMDI3MiwgNjgwMTcsIDk2NDIsIDEwOTEyLCAKKyAgICA5NTgsIDY3MjkzLCAxMTM4NywgNjcyOTEsIDQ2NjYsIDcwNzkyLCA0OTE1LCA2NzcxNSwgNDY2OSwgMCwgNjgwOTksIAorICAgIDEzMjg3LCA0NjY0LCAxMDgzNiwgMTIwNTUwLCA3NTA1MywgNjk3NzUsIDAsIDQzNTk1LCA3NDUwLCA3NDE3MywgOTE3ODc1LCAKKyAgICA4NjY0LCA5Njk3LCAzNjA2LCA4MzQ0NiwgOTgzOTc4LCA5MTc4NzQsIDY0ODE1LCAxMDYzLCAxMTkwODgsIDY3MzEyLCAKKyAgICA5NzcyLCA3MjU1LCA4ODg2LCAxMzg5LCAxMDA4MzMsIDEyMDI1NywgMTE5MjAyLCAxMjAyNTksIDEyOTQxLCA0MjY2MSwgCisgICAgODM0MzgsIDEyMDI1NSwgMTAxMTAxLCAxMjMwMSwgNjc4MzYsIDY5ODIwLCA0MTEwMiwgNjQ0MjgsIDEyMDI2MiwgNjY2MDIsIAorICAgIDY2Nzg4LCAxMDE3LCA2NjYwMCwgNTIzLCA1MDUsIDE0NDcsIDc0NDM2LCAwLCA3MDM0MCwgNjY3OTMsIDg2MDgsIDQyNzg5LCAKKyAgICA3MDg2OCwgODM0MzYsIDk4MzQ4MCwgNzE5MDYsIDExMzA3LCA2NjcwNywgNjczMDEsIDY3MzAwLCAxMTc0NSwgNzkxOSwgCisgICAgNjczMDQsIDE2NDEsIDEyNjUyMywgMCwgODk2NiwgMTI4OTAwLCA3NDkxOSwgNTkwOCwgNzE4NzAsIDY3ODUzLCA2NzQ0LCAKKyAgICA2NzMxMCwgMTY5OSwgNjczMDgsIDY3MzA3LCA2NzMxNCwgNjczMTMsIDYzMDYsIDEwMTY5LCA3MTMyNCwgMTE5MjUxLCAKKyAgICAxMDA2OCwgMzc2NiwgMjM4OSwgNjczMDUsIDEyMDQ1NSwgNjYxMSwgMjU3LCA0MzE3MCwgMTMxNTMsIDAsIDQyMzg2LCAKKyAgICA5MTc5NzQsIDk0MzYsIDI1OTksIDk4Mzc0NywgNjQ5NiwgOTQ0OSwgNTkzMCwgMTE0NzYsIDExMDMzLCAxMTQ0NywgMTA1NDEsIAorICAgIDU2MjIsIDEyMDQzNiwgODQ3NywgMzc2MCwgMTcxOCwgOTQ0MiwgNjY0MzMsIDM3NzYsIDkxNzgzNywgNDE0MzUsIDQzNTIsIAorICAgIDY3MzI0LCAyNDM1LCA3MTIxMSwgNTYyMSwgMTIwMzg1LCA0MjAxLCAzNzc4LCA0MjAzLCA0MjAyLCA0MjA1LCA0MjA0LCAKKyAgICAxMjA0NDcsIDM3NjgsIDQxNzc0LCA3NjUsIDQxNDQwLCAzNzY0LCA4NDczLCA2MzczLCA4NDY5LCAxMjA0MzgsIDEyOTQ3LCAKKyAgICA0NTY0LCAxMDA0NzAsIDc0NjIzLCA3NDI3MSwgNzM3NTMsIDgzNzQsIDEyNzIwMSwgMCwgNjgyOSwgNTIyNSwgNjY5MDEsIAorICAgIDEyNzM4NSwgMCwgMCwgMTE5NjE1LCA2NzMxOSwgNjczMTgsIDMxNjIsIDQzNTA3LCAxMTc3MSwgNjczMjIsIDY3MzIxLCAKKyAgICA2NzMyMCwgNDI2MTQsIDUzNTMsIDU2MjUsIDc0MTc5LCA2NzMxNSwgMCwgMTAxMCwgNjQ1NzIsIDQxNzgwLCA0MjYyMywgCisgICAgNjQyNzcsIDY5OTQyLCA2OTUyLCA2NzMyOSwgNjczMjgsIDY3MzI3LCAyNTkwLCA1NjI5LCA2NTU1MiwgNzU1MSwgMTAzMjUsIAorICAgIDU2MzIsIDEwNDcxLCAxMjAwMzgsIDEyMDAyNywgMTIwMDI4LCAxMjAwMjUsIDU2MjgsIDEyMDAzMSwgOTcwLCAxMjAwMjksIAorICAgIDQ3NzIsIDI0MDAsIDU2MjcsIDc0MzY0LCA2NzMzMCwgMTIwMDIzLCA2NDI3NSwgMTIwMDIxLCA4Nzg2LCAxMTM2OTMsIDIwMywgCisgICAgNzQzNjUsIDAsIDAsIDY5OTg1LCA3ODM1MCwgMTAxMDY1LCA2NDM3OCwgNDIwNTQsIDEyODU3NSwgMTk0OTkzLCA1NTQsIAorICAgIDgzNDIyLCAxMTM1OCwgNzExNzIsIDEyMTgyLCA0MjA0OCwgMTEwNjUsIDEyNTExNCwgNzM4OTEsIDgzNDIzLCA4MzAxOSwgCisgICAgNTY5NCwgNzY4OSwgNjY3ODQsIDkzMjMsIDQzMjUsIDMwNDcsIDEwMzE3LCAxNzUsIDEyMDk2MiwgOTMwMjksIDY5NzY0LCAwLCAKKyAgICAxMjA2MjUsIDEyNDMsIDQyMTU0LCA1NDMxLCA2NjUyLCA5MTc1NjEsIDY3NzUzLCA0MzY1MSwgMTI3ODAxLCA2ODExOCwgCisgICAgNjgwOTMsIDExMjksIDcyODQ2LCAxMDA3MDcsIDY1OTAwLCAxOTg2LCA3ODQ2LCA3ODgwNCwgODY2MSwgNzUwNTgsIDY1MjU1LCAKKyAgICA5Mzk5MiwgMzg0NSwgNDQ5MCwgMTE4OTY5LCA2NjQ5LCA3NDEzNiwgMTQ1NiwgNzUzMCwgMTE5NzcsIDcyNDksIDgzNjYsIAorICAgIDk4MzYxMiwgNzc1NiwgMTIzNDIsIDEyMDY5NywgNTEsIDQxNTE2LCAwLCA4NTcwLCA5NTY4LCA3MTMxOCwgNDU2LCA3MDI2LCAKKyAgICA4MTQ1LCAxMTY4LCA5MjUxLCA5MDgyLCAxMTk5NjQsIDY0MDU1LCA0Mjc4MSwgMzg2NiwgMTIzMjMsIDQxNTEyLCA3MzgwNSwgCisgICAgNjgxMjEsIDkxNzg1MCwgNDE0OTQsIDkyMzE2LCA0NjYwLCA2NzExNCwgMTA0MDUsIDEyNzE5NSwgNzg4MDMsIDEwMDQzOSwgCisgICAgMTI5MTc2LCA0MjA0MCwgNzM5MTgsIDExOTYyNywgNzk0NCwgNDE0NTQsIDEyNjA1LCAwLCA0MjIwNSwgNDE0NTUsIDIzNiwgCisgICAgNjQwNTEsIDc4ODY3LCA4MjE0LCA4MzQyMSwgMTEzNzg0LCAxMjAwMzcsIDQxNDU3LCA5ODM0ODEsIDExOTU4OSwgMTk2OSwgCisgICAgMjM4NCwgODA5NywgMTI4MDE5LCA3NDEzLCA2ODAxMiwgNzI4MjAsIDg3NjYsIDQzODY0LCA3MjgyNCwgNTg1NCwgMTI1MDAwLCAKKyAgICAxMDU4MywgMCwgMTE5OTg5LCA3MjgxOSwgMTA0MTYsIDY4MDcwLCAzODcyLCA4MzQyNCwgMTI3Mzk5LCA4NDI5LCAxMjEyMzAsIAorICAgIDExODgwNiwgMjgzOCwgNjQyOSwgMTIxMDc3LCA4MzQyNiwgNzI4MzUsIDEwMDQyMCwgMCwgMTk0NjIwLCA5NDAwNSwgCisgICAgMTEwOTYsIDgzNDIwLCAxMDU1MywgMTY2MiwgODQ4MywgMTIwMzk2LCA0MzYwNSwgNTg5MiwgNDM0MTgsIDY3ODE5LCAKKyAgICA3Mzc0MiwgNjYsIDY1LCA2OCwgNjcsIDcwLCA2OSwgNzIsIDcxLCA3NCwgNzMsIDc2LCA3NSwgNzgsIDc3LCA4MCwgNzksIAorICAgIDgyLCA4MSwgODQsIDgzLCA4NiwgODUsIDg4LCA4NywgOTAsIDg5LCAxMTk4NjIsIDEwMzU3LCA3Mzg1LCA4MTcwLCAxNzA0LCAKKyAgICA4NTU2LCA5MTc5NzUsIDk2NTksIDAsIDEwMDczNiwgMCwgOTU1NiwgMCwgNDUwMywgMTEzNTMsIDk2NDcsIDEyNTAxNSwgCisgICAgNjgyODgsIDEyODk1OSwgOTE3OTc2LCA3MTQzNywgNzg4ODYsIDk4MzI4OCwgOTgzNDk2LCA3NDIyOSwgNjY1OTMsIDY0MzgsIAorICAgIDgzMzY0LCA5MTA5LCA3ODg4MiwgMTI4OSwgNjQ1OTksIDExODkxNSwgNjgwMDksIDEyODMwMiwgNjU1MDcsIDI0NDcsIAorICAgIDExOTkxMSwgMTI4Njk0LCAxMjgwNDIsIDEyNjU0NSwgNjY1ODksIDk4Mzg3NSwgNjMzNCwgMTI4MzY5LCA5MTc5MTksIAorICAgIDE5OTM3LCA5MTc3OTMsIDEzMjIsIDkyMzU5LCA1Njc1LCAyNTQsIDEyNDk2NCwgMCwgNjk2ODYsIDQyNDI1LCA4OTE4LCAKKyAgICA2NDAwMywgNTcxNiwgNDIzMTIsIDEyMDA5MCwgMTAwNTUyLCA2OTcyLCA0MjgyNiwgNzQ0MDksIDQyNDY0LCAxMjA1NjcsIAorICAgIDY2ODk5LCA2NzE1NSwgNzQ3OTYsIDY0NDAwLCA2NDY5MywgMTI4NDM3LCA2NzY4NywgNjU0MjksIDk1MTUsIDQ0MzUsIAorICAgIDk4MzM2NywgNDI1MjIsIDAsIDY4MDA4LCAxMTc4NSwgNzQxMiwgNDM4NjcsIDQxOTc4LCAxNDEyLCA0NTk0LCAxMzkxLCAKKyAgICAxMDUzNiwgODA2NywgOTkwMSwgNzEwMywgMTI4MjkzLCA3MTAyLCA3MTQyOCwgMTIwNzQ4LCAzMTQwLCAxMjcyNzYsIDc5NjAsIAorICAgIDQzMjcxLCAxMjEwOTksIDEyNTE4LCAxMDkwOSwgMTI3NTA4LCAxNDI4LCAxMjQ3MiwgNjcyNTQsIDY3MjUzLCA3Njk5LCAKKyAgICAxMjM5MywgNjcyNTcsIDAsIDY3MjU2LCA2NzI1NSwgODIyMywgMCwgNDI2MSwgNzg3ODQsIDEyMDkxMCwgNzQzMDgsIAorICAgIDk4MzgyNywgMTEzNzEyLCA2NzE1MywgMTI1MjUyLCA3Mjc0NCwgNDM0MTksIDcyNzQ4LCA2NDU1NCwgMTA1NzQsIDM4NzgsIAorICAgIDY3NjkxLCA0MjM1MiwgMTc1MiwgNzM3ODUsIDEyODE3MSwgNDI1MDYsIDEyODU0MSwgMTAxOTksIDkxNzg2NSwgMTI1MTQyLCAKKyAgICA2ODAyMSwgNjU5MTksIDEyNzEwMiwgNjY5NSwgNzIwLCAzMjQsIDAsIDEyOTAzNSwgNDM0MDYsIDEyNTI2OSwgMTQ2NCwgCisgICAgNDA5ODUsIDAsIDc5NzQsIDAsIDQzNDc0LCA2ODA4MiwgNjQ0ODgsIDEyODk3NywgMTIwOTUxLCAzNDIwLCA3NDc4NywgMCwgCisgICAgNzg4NjUsIDkyMjU4LCA2NTU5NywgMTIxNDE2LCA3ODg2MywgMCwgMTMwMiwgNjYyODgsIDc4ODYxLCAxMTkxMzQsIAorICAgIDEyMDI3NCwgNjcxNTIsIDUyMDQsIDc0Nzc0LCA0MzQwNCwgMTE4MzUsIDEyMDkyMywgMzk5NSwgNjgzNjAsIDY1NjA4LCAKKyAgICAzNzE0LCA5MjE5MCwgMTIwMDI2LCA2NzI2MiwgMTA5OTksIDExNzUwLCA2NzI1OSwgNDMyNTEsIDY3MjY0LCA0MzMwMSwgMCwgCisgICAgMTIwNTU3LCA4MTMwLCA4NjcyLCAxMDg0NSwgMTE5NjQsIDEyMTI2OCwgMTI4MDE0LCA5MjE3MywgMTIwNzEwLCA2ODQ1NSwgCisgICAgNDI4NjMsIDczODM5LCAxMTk5MjksIDAsIDY3NzAwLCA5MTc4MTIsIDExMzcwMSwgNDM2NDUsIDQ2OCwgNjEyLCAwLCAKKyAgICA2NDQwMSwgNjY0NDgsIDY4Mzc2LCAxMjgyMDgsIDE2NzQsIDkxNzU4MSwgNTgyMywgMTI4NjI1LCAxMjI4MCwgNzAzNjcsIAorICAgIDU0MCwgNzQ1NjQsIDExOTAxNywgNjY0MjIsIDg0MzIsIDc4ODczLCAxMTA3MywgMCwgNjQzMTYsIDAsIDEyMTAwMSwgODIwLCAKICAgICA0MTc0MSwgOTgzNDc3LCAxMjA2NjcsIDEyNDk4MSwgNjQ2ODQsIDEyNjk5MiwgMzM1OSwgNzgwMCwgNjk5MzQsIDY1MTc3LCAKICAgICA2MjI2LCAzNTMsIDEyMzk2LCAxMjExNzYsIDExOTYxMiwgNjQ3NDIsIDEyODY4MiwgNzg4NzksIDk4MzQ3OCwgMTI3OTM4LCAKLSAgICAxMjQxMiwgMTk5NDEsIDAsIDEyMDI3NywgNzAzNTIsIDE4ODQsIDk0ODEsIDQyNDE4LCA3MDA1OSwgNDExNTcsIDk4MzE0MiwgCi0gICAgMTE5NSwgNjQ4OTgsIDc5MjQsIDExOTg3MCwgNDExNTEsIDIwMTAsIDcxNDMwLCA0MTMyOCwgNDIzNDQsIDAsIDEyNDA5LCAwLCAKLSAgICA0MzYwLCAxMjEwMjMsIDk3MzksIDEyODU1MCwgNjk5MzMsIDczOTIxLCA5MTc2MzEsIDQyNTIxLCA4NTM5LCAxMjg2MDYsIDAsIAotICAgIDExODk4NiwgMTI3MTQ4LCA0Nzg4LCAxMjEzNDUsIDY4MDIzLCA2NTczNCwgOTgzNDU3LCA0Mzc5MCwgMTIwMjc0LCAxMzA3NSwgCi0gICAgNzQ0MjksIDk0MDYzLCA2NDU2OSwgNDM1MzIsIDEwODM3LCAyNDkyLCAxMjcxOTcsIDExODkwMSwgNjg2MzcsIDQxMTM2LCAKLSAgICA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCA2NTYwNCwgNjQ4NTksIAotICAgIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIDEyNzA5LCA2OTg2LCAKLSAgICA5MjM2NCwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIDczODA2LCAxMDI1NCwgCi0gICAgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDAsIDY4MTgyLCAxMjg4NDYsIDEyOTIzLCAKLSAgICAxMDMxNCwgMTAyODIsIDY1NDc3LCAxMDM3OCwgMTIwMjk3LCA0MDk3NiwgODI2NSwgMTI5MTQ5LCA3ODYzOSwgNDA5NzUsIAotICAgIDU4NDAsIDQyODM4LCA3NDk4NywgNDA5NzgsIDEyMTM4NiwgOTI5NDUsIDEyODAyMCwgMTE5ODA5LCAwLCA2NjQ0NCwgCi0gICAgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkxMzAsIDAsIDM1MjUsIDY4MjQsIDExODg4NiwgOTgzNTgyLCAKLSAgICAwLCA1NjE5LCA2NTgyMiwgMTEzNzUxLCAxMTM3MzgsIDc0NTUsIDcxNDI0LCA1NjE2LCAxMTQ4NiwgOTY1NiwgMCwgMCwgCi0gICAgMTA3MjcsIDU2MTUsIDEyMDg3MywgMTIwNTUxLCA0MjM4MCwgNjQ4OTUsIDQzNjkzLCA2NjQ1MSwgODA4LCA1NDU1LCAKLSAgICAxMTM0NywgMCwgMTAyNiwgNTYyMCwgMTk0ODg3LCAwLCAxMTM1MCwgNTYxNywgMCwgOTIyNSwgNjQ2MzksIDEyNzA3MywgCi0gICAgOTE0NSwgMTI4MDYwLCAxMzM4LCAxMjA1ODEsIDk4MzE1OCwgMTI3MzksIDQ2MDMsIDMwODQsIDcwNDA4LCA5MjQ4NCwgCi0gICAgOTg1OCwgNjAzNywgOTgzNDY1LCAzOTc0LCA3ODIxMywgMTAyOTAsIDk4MzcwNCwgMzA4MywgMTAzMjIsIDEyOTA0OCwgCi0gICAgMTI5MDMwLCA3NTAzOCwgNDEwMzYsIDY2ODk3LCAwLCA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAwLCAKLSAgICA2NDcwMCwgMTAwMTEsIDE0NDUsIDQwOTYxLCAwLCAxMTkxMDUsIDAsIDQwOTYwLCAxOTQ5MDcsIDY3NzI3LCAxMjUxMDYsIAotICAgIDIyMjMsIDY0OTUyLCAxMDQwMiwgMTI4MzU4LCAxMjUwNDksIDkyMzA0LCAxMDYwMywgMCwgOTgzNDAzLCA3MTQzOCwgMCwgCi0gICAgNjcxNCwgMTAwODMsIDEyNzA2OSwgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDAsIDQzODcyLCA5MDczLCA0MjU4NSwgNjQzMDIsIAotICAgIDEwNzA0LCA2NTAzMCwgNDc4NywgMTI5MDMxLCA3NDgyOSwgMCwgNjU0MjMsIDEyMTMwNiwgMTI4MTE4LCA5NTcwLCA1NTI2MCwgCi0gICAgOTUyNSwgMjY4OSwgOTE3NjI2LCA2NTQyNiwgMTk0ODcyLCA5MTc2MjQsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIAotICAgIDEzMjg2LCAzOTk4LCA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCAKLSAgICA0MTk1NCwgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIAotICAgIDQzMzIwLCAxMTkxNTksIDczOTU1LCA5MjMxNSwgNjQ2OCwgNDE5NzYsIDk3MjAsIDc0OTY0LCAxMTE3OSwgNDE5NzAsIAotICAgIDY2MjU1LCA1ODM2LCAxMjM1OCwgMCwgNDM1NSwgOTA0OCwgMTIxODAsIDY1MDI3LCA2NDY4MCwgMTMwMzgsIDQzNjk5LCAwLCAKLSAgICA0MTQ4OCwgMTI4MDg3LCA4NTI3LCAxOTQ5MTcsIDEyMzYyLCAxMjQzNSwgMTIzNjAsIDQxMDUzLCAzMjY2LCAwLCAxMjM1NiwgCi0gICAgODYxNiwgNDE0NjYsIDQyOTI0LCAyMjI3LCAxMTQ1MCwgOTgzNjkxLCAzNjM4LCAxMjM1NCwgNjcyOTksIDMyMTYsIDgzMDk5LCAKLSAgICAyMzU4LCA4MzA5MiwgODYzMywgNzEyMDEsIDk4Mzc0NSwgMTE5MTgyLCA2OTI0NCwgODMwOTAsIDcwMzc1LCAxMTc1OSwgCi0gICAgMTk0OTAzLCA2MzY4LCA3NDgyMywgNjczMDMsIDQxNDIzLCA4MDc4LCAxMDUwNCwgODMxMDQsIDQxNjk4LCA0MjIzNywgCi0gICAgOTgzNDU0LCA3MDAyLCA4MzEwMSwgNDE0MzAsIDQyMjY3LCA0MTA1MSwgNDE0ODQsIDAsIDcxNDY3LCA0MTA1MCwgNDE0NzMsIAorICAgIDEyNDEyLCAxOTk0MSwgMCwgMTIwMjc3LCA3MDM1MiwgMTg4NCwgOTQ4MSwgNDI0MTgsIDcwMDU5LCA0MTE1NywgMTk1MDU4LCAKKyAgICAxMTk1LCA2NDg5OCwgNzkyNCwgMTE5ODcwLCA0MTE1MSwgMjAxMCwgNzE0MzAsIDQxMzI4LCA0MjM0NCwgMCwgMTI0MDksIAorICAgIDEyMDcxMiwgNDM2MCwgMTIxMDIzLCA5NzM5LCAxMjg1NTAsIDY5OTMzLCA3MzkyMSwgOTE3NjMxLCA0MjUyMSwgODUzOSwgCisgICAgMTI4NjA2LCAwLCAxMTg5ODYsIDEyNzE0OCwgNDc4OCwgMTIxMzQ1LCA2ODAyMywgNjU3MzQsIDk4MzQ1NywgNDM3OTAsIAorICAgIDExOTg2OSwgMTMwNzUsIDc0NDI5LCA5NDA2MywgNjQ1NjksIDQzNTMyLCAxMDgzNywgMjQ5MiwgNzI3NjIsIDExODkwMSwgCisgICAgNjg2MzcsIDQxMTM2LCA0Mzc4NSwgMTE4MTMsIDk2NDksIDQxMTU0LCAxMTM3MzEsIDUxMjgsIDQwMzgsIDQxMTQzLCAKKyAgICA2NTYwNCwgNjQ4NTksIDQxNTkyLCA2NzcxLCAxNjQ4LCA1NDM1LCA2NzI5NSwgNjczNCwgNDEzNDMsIDExOTg0OCwgNjU0MzksIAorICAgIDEyNzA5LCA2OTg2LCA2Njc2MSwgNjgwMTUsIDEyMDUzMywgNDEzNDksIDcwMDIxLCAxMjU4MSwgMTAzNzQsIDUxNzUsIDAsIAorICAgIDczODA2LCAxMDI1NCwgMTEzNjgxLCAxMDI3OCwgMTAyNjIsIDY5ODU4LCA0MTM0NiwgMTIwODcwLCA2MDcsIDk4MzYyMSwgCisgICAgNjgxODIsIDEyODg0NiwgMTI5MjMsIDEwMzE0LCAxMDI4MiwgNjU0NzcsIDEwMzc4LCAxMjAyOTcsIDQwOTc2LCA4MjY1LCAKKyAgICAxMjkxNDksIDc4NjM5LCA0MDk3NSwgNTg0MCwgNDI4MzgsIDc0OTg3LCA0MDk3OCwgNzgxNzQsIDkyOTQ1LCAxMjgwMjAsIAorICAgIDExOTgwOSwgMTIwODkxLCA2NjQ0NCwgMTA1MzgsIDEyMDgxMCwgMjU1MCwgMTE5ODM2LCA2Nzc5LCAxMjkwOTEsIDkxNzgxNSwgCisgICAgMzUyNSwgNjgyNCwgMTE4ODg2LCA5ODM1ODIsIDExOTgzOCwgNTYxOSwgNjU4MjIsIDExMzc1MSwgMTEzNzM4LCA3NDU1LCAKKyAgICA3MTQyNCwgNTYxNiwgMTE0ODYsIDk2NTYsIDAsIDAsIDEwNzI3LCA1NjE1LCAxMjA4NzMsIDEyMDU1MSwgNDIzODAsIAorICAgIDY0ODk1LCA0MzY5MywgNjY0NTEsIDgwOCwgNTQ1NSwgMTEzNDcsIDcyNzYwLCAxMDI2LCA1NjIwLCAxOTQ4ODcsIDAsIAorICAgIDExMzUwLCA1NjE3LCA3Mjk5LCA5MjI1LCA2NDYzOSwgMTI3MDczLCA5MTQ1LCA0MTM0NCwgMTMzOCwgMTIwNTgxLCAKKyAgICA5ODMxNTgsIDEyNzM5LCA0NjAzLCAzMDg0LCA3MDQwOCwgOTI0ODQsIDk4NTgsIDYwMzcsIDEwMDM3NiwgMzk3NCwgNzgyMTMsIAorICAgIDEwMjkwLCA5ODM3MDQsIDMwODMsIDEwMzIyLCAxMjkwNDgsIDEyOTAzMCwgNzUwMzgsIDQxMDM2LCA2Njg5NywgMTAwMzc0LCAKKyAgICA0MzMyMSwgNjU2MDYsIDEyNzA3MSwgNDEwMzIsIDQyMzg4LCAxMDA2MTksIDY0NzAwLCAxMDAxMSwgMTQ0NSwgNDA5NjEsIDAsIAorICAgIDExOTEwNSwgOTE3OTY5LCA0MDk2MCwgMTk0OTA3LCA2NzcyNywgMTI1MTA2LCAyMjIzLCA2NDk1MiwgMTA0MDIsIDExOTIxMywgCisgICAgMTI1MDQ5LCA5MjMwNCwgMTA2MDMsIDAsIDk4MzQwMywgNzE0MzgsIDEyODUwMCwgNjcxNCwgMTAwODMsIDEyNzA2OSwgCisgICAgMTIxMDE5LCA3ODM2NywgNjk5NzYsIDk4MzY1NSwgNDM4NzIsIDkwNzMsIDQyNTg1LCA2NDMwMiwgMTA3MDQsIDY1MDMwLCAKKyAgICA0Nzg3LCAxMjEyNzksIDc0ODI5LCAwLCA2NTQyMywgNzQ5ODgsIDEyODExOCwgOTU3MCwgNTUyNjAsIDk1MjUsIDI2ODksIAorICAgIDkxNzYyNiwgNjU0MjYsIDE5NDg3MiwgNjY3NDAsIDQzNzQwLCAxMjExNjMsIDQwOTY2LCAxMjAwMDksIDEzMjg2LCAzOTk4LCAKKyAgICA0MjU5OCwgNDI1OTYsIDUwMywgNzE0MzMsIDg3MzUsIDI2OTAsIDY2NDg4LCA0MjgzNiwgMTI3MTUwLCA0MTk1NCwgCisgICAgOTE3NjE1LCAxNjUyLCA3NzIsIDY2ODgsIDgzMTAsIDY1NDI4LCAzNDg3LCA0MzQxNiwgMzU4NSwgMTAxOTQsIDQzMzIwLCAKKyAgICA3Mjc1NiwgNjY3NTcsIDkyMzE1LCA2NDY4LCA0MTk3NiwgOTcyMCwgNzQ5NjQsIDExMTc5LCA0MTk3MCwgNjYyNTUsIDU4MzYsIAorICAgIDEyMzU4LCAxMjk0MjEsIDQzNTUsIDkwNDgsIDEyMTgwLCA2NTAyNywgNjQ2ODAsIDEzMDM4LCA0MzY5OSwgMCwgNDE0ODgsIAorICAgIDEyODA4NywgODUyNywgMTk0OTE3LCAxMjM2MiwgMTI0MzUsIDEyMzYwLCA0MTA1MywgMzI2NiwgMCwgMTIzNTYsIDg2MTYsIAorICAgIDQxNDY2LCA0MjkyNCwgMjIyNywgMTE0NTAsIDEyMDczNCwgMzYzOCwgMTIzNTQsIDY3Mjk5LCAzMjE2LCA4MzA5OSwgMjM1OCwgCisgICAgODMwOTIsIDg2MzMsIDcxMjAxLCA5ODM3NDUsIDExOTE4MiwgNjkyNDQsIDgzMDkwLCA3MDM3NSwgMTE3NTksIDE5NDkwMywgCisgICAgNjM2OCwgNzI4MzQsIDY3MzAzLCA0MTQyMywgODA3OCwgMTA1MDQsIDgzMTA0LCA0MTY5OCwgNDIyMzcsIDk4MzQ1NCwgCisgICAgNzAwMiwgODMxMDEsIDQxNDMwLCA0MjI2NywgNDEwNTEsIDQxNDg0LCAxMjkzNjIsIDcxNDY3LCA0MTA1MCwgODg3MiwgCiAgICAgMTA0NjYsIDEzMDk5LCA3MTQ0NSwgNzAzNzEsIDEyMDg5NywgNjQzNSwgNzQzMzEsIDExMzYyLCAxMjg5NzMsIDgzMDg4LCAKICAgICA2NTM4MiwgOTI3NzAsIDQxNDIwLCA4MzA4MywgMzYyNSwgNzQ5MTUsIDQxNDA5LCA3MTQ0MSwgNjk2MzksIDIwNDEsIDkxNzgsIAotICAgIDk2NzIsIDQxNDI3LCA0MzU0MSwgNDMzMTcsIDc0OTI0LCAwLCAxMjg1NTcsIDQxNDI0LCA5MTc1OTgsIDEyMDU0NiwgMCwgCi0gICAgMTI4MjEyLCAwLCA0MTQxNywgMTI2MSwgMCwgMCwgMTIxMDIsIDExOTY2MiwgNDE0MDEsIDAsIDEyNzUzOCwgMCwgNzgyNTEsIAotICAgIDEyNDk0MywgNDIyOTAsIDMyNzUsIDkyNDcyLCA0MjMyOSwgNjg4NTAsIDc0OTAxLCAwLCAxMjc5NTEsIDkyMzg4LCA2OTY0OSwgCi0gICAgMTA5ODksIDc0MjM0LCAxMTM3ODEsIDEwNTk4LCA3NDEwLCAyNjY5LCA5MDMsIDAsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIAotICAgIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCA5ODMxMTksIDExNzMyLCAwLCA5ODMxODAsIDQxNDQ4LCA0MTQ2MSwgCi0gICAgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgCi0gICAgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIDEyMTAwNywgOTA5NCwgOTgzOTI2LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAKLSAgICAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgCi0gICAgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCA3ODYxOCwgNjk3OTMsIDE4NzgsIDAsIDcxNDM0LCAyOTExLCA4MzA3NCwgCi0gICAgNDExNzgsIDU0MjcsIDY0ODIzLCA4MzA2MiwgODMwNjYsIDM3ODcsIDQxMTc0LCA4MzA1NSwgNDE0NTgsIDY3MTQ3LCAKLSAgICA0MTQ2MywgNDI0MTMsIDExMjkyLCAyNDA2LCA3NzUsIDAsIDY1NTg0LCA2OTkyMywgNjA3NCwgOTYxOCwgNjgwNTYsIAotICAgIDEyMTQ4MCwgNDM0NDAsIDc0NTM5LCAxOTQ5MDEsIDQxNDM2LCAzNjU2LCA5MTc4MDUsIDEyMDYwMCwgNDE0NTYsIDY3Njk0LCAKLSAgICAxNTk5LCAxMTMzMywgODMxMzksIDY3MDMsIDg1MTMsIDgzMTM0LCAxNjEzLCA4MzEzNiwgNjg0NTYsIDEyNTk4LCA4MzEzMSwgCi0gICAgODMxMzIsIDc4NzQ1LCA3NDUwMCwgNDE0NjAsIDEwMTQ1LCAxMDU0MiwgOTkzNywgNzg3NDYsIDY3MTQ0LCA5OTA1LCAKLSAgICA4MzE0NSwgNjU3MzAsIDgzMTQ3LCAxMjAzNzQsIDg0MjcsIDgzMTQyLCA1NTI0NiwgMTIwMzc2LCA0Mjg5NSwgMTE0OTcsIAotICAgIDY0Njg3LCA3NDAwOCwgNDI1OTIsIDM4NzEsIDk4MzU4NCwgMTI4MzA1LCA5MTExLCA1NzQxLCA4MzMyNSwgMTIwOTg3LCAKLSAgICAxMjAzNjYsIDExOTExMSwgMTExNTAsIDAsIDEyMDM2OCwgMTI4ODU1LCAxMTY0OCwgODMxMjYsIDgzMTI3LCA4MzEyOCwgCi0gICAgNDE1ODcsIDcwMzkxLCA4MzEyMywgNzExMDgsIDQyMTEzLCA5ODM1ODgsIDEyNzE1NSwgMTIxNzIsIDgzMTIxLCA3MTQ0MywgCi0gICAgNjUyOTgsIDY1NzIzLCA2ODI4OSwgNzM4NzEsIDY1NzI0LCA3OTI4LCAxMjAzNTQsIDk4MzA5NSwgNDE1OTUsIDczNzMwLCAKLSAgICA2NDY3MSwgNDIxMTgsIDczODMwLCA2NjA0MiwgMTAzNTUsIDk4MzExMCwgNzg3NSwgOTgzNjY5LCA0MTU5OCwgMzk5MywgCi0gICAgMTIxMjY5LCAxNTQ1LCA0MDk3MSwgNTM2LCAxMjcwNzUsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMCwgCi0gICAgNzAzMzEsIDE5NTAxMiwgMCwgOTQwNjUsIDAsIDQxMzc1LCA1NDAyLCA4MzAzNSwgMTI4MTkyLCAxNjg3LCAxMjA1MDMsIAotICAgIDkxNzgxNywgMCwgNzgxOTQsIDY0MzI2LCA0MDk2OSwgMTA1MjYsIDczNzQ3LCA4MzIzLCA0MDk2OCwgMTMzOSwgMTE3MzEsIAotICAgIDc4NzU2LCAxMjcxMDgsIDY1NDYwLCAxMjI0MiwgMTI4NTEzLCA4MDIwLCAxMDg0MywgMTE1NTQsIDkxNzg2NywgMCwgODI2NiwgCi0gICAgNDEwMDYsIDY1NzIyLCA4MzA0MSwgMTA3MTAsIDc0MDQ1LCAxMTg5NDIsIDY3NjY3LCA2NDU2NywgMTE5MTU1LCA4MzMxMywgCi0gICAgMTI4Nzc4LCA3MTg4OSwgNjc4NTcsIDEyMDY4NywgMCwgOTI5NTgsIDExNzU1LCA2NjMwNSwgNjgzMzIsIDAsIDEwOTE3LCAKLSAgICA5Mzk3OSwgMCwgMTEyNzIsIDIwNDAsIDQxMjQ3LCA0MTMyNiwgMTk1MDYwLCAxNzQxLCA0MjM3MCwgMTIyNywgODMxMTksIAotICAgIDgzMTIwLCAxMTQxMywgMTI2NTgzLCA4MzExNSwgNTI4MywgMTU4NiwgNDk3OCwgNjgwNTAsIDE5ODQsIDExODMwLCA0MzgxOSwgCi0gICAgOTIyOTMsIDQwOTg0LCA0MjkwNCwgOTM3MywgMCwgMTI5MTYsIDYyODQsIDE5NDg4OCwgNDE2NjMsIDk4MzA5MywgMCwgCi0gICAgNjgzMTMsIDkyMzcsIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgCi0gICAgNDEyODcsIDkyNjEwLCAwLCA3MTkxNywgNDIyMTksIDY4MDg2LCAxMjAzMjcsIDQxOTg3LCA0MTY3NiwgOTgzMDU5LCAKLSAgICAxMjA4MjMsIDEyNjU1MywgNDE2NzAsIDAsIDkyNTkwLCAyNzk2LCA1NTI5MSwgMTE2ODMsIDk5MDIsIDc0NTIxLCA2Nzk4OCwgCi0gICAgMTE0NTEsIDgyOTk1LCA3ODg1NSwgNDI2MzEsIDIzNTksIDcxODkwLCA2Nzg0NCwgNzQxNjQsIDQxMjM4LCA1NDgsIDExNDA1LCAKLSAgICAxMzEzMywgNjQzNjgsIDEyNzI3MCwgMTIwOTI1LCA2NjI3MiwgMzk3LCA0MzYyMiwgNDIxMzksIDk1NDcsIDk1OTAsIAotICAgIDEyODIzOCwgMTYxNCwgNDM2NjEsIDY0MzU2LCA2NjMwNywgNjY1MSwgMTM1OCwgMTIwODcxLCA0MjgsIDk2MjAsIDE0NjYsIAotICAgIDc4MTEyLCAxMDk4MiwgMTEzNzg1LCAxMzMzLCA3MTA0LCA0MDcsIDY0MjUsIDEyODgzNCwgNzQyNTMsIDEyNzk5MywgMCwgMCwgCi0gICAgNTgwNCwgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgCi0gICAgNzgxMzcsIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjg1MTIsIAotICAgIDEyODYyOSwgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAKLSAgICAxMjY3NSwgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgCi0gICAgNjQ3MzIsIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIAotICAgIDQxNjQsIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCi0gICAgNjQ3OTksIDQyMDQ3LCAwLCAxOTQ4MjAsIDg0NzAsIDExODA3LCA2NTg5NywgNTc3LCAwLCA5ODM3NjAsIDc0MzAwLCAwLCAKLSAgICA2ODA4NywgNzQ4NDAsIDEyNjQ3NCwgMCwgMTI4NzkxLCA5MjIyNCwgODczNiwgMTQxNCwgNDI2NDMsIDk2ODMsIDQzNDg2LCAKLSAgICA3NDM0NCwgMCwgMjUzNiwgOTgzOTQxLCA2NjMzMCwgMTIxMjM4LCAwLCAwLCAwLCAwLCAwLCAxOTQ4MzAsIDY2MzE3LCAKLSAgICA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgODI5ODgsIDAsIDk2MSwgCi0gICAgNjQzMDcsIDY2MzI0LCA2NDkwNiwgMTI1MDgwLCAzMTA2LCA2NTkxNywgNDEyODQsIDE2OTYsIDk4MzEzMCwgODkxLCAKLSAgICAxMjEwNSwgMCwgNDI2MjQsIDEyODAyLCAzMjY0LCA4ODI0LCAxMzI2OCwgNDMwMDMsIDEwOTM2LCAxMjA4NzgsIDAsIDAsIAotICAgIDE5NDgyNiwgOTI2ODgsIDM1NjYsIDIzMjIsIDEyMDM3MSwgNzA4MzEsIDExNDQ5LCAxMjgxODcsIDQyODY4LCA0MTI4NSwgCi0gICAgMzU0NywgMCwgMCwgMTEzNzQ2LCA5ODM0MDAsIDQzMjE2LCA2MDg5LCA3ODY4MiwgNjg0OTAsIDEyMDU3OCwgNDE3MCwgCi0gICAgMTAyOSwgMTI3NzYxLCAxMjcwMzYsIDExOTIyNCwgNDIzNzQsIDAsIDc0NCwgOTI4ODMsIDExMzczOSwgMCwgNjU4MjMsIAotICAgIDEyNzgyNiwgMTExODIsIDM1NTEsIDkyOTM4LCA5ODM4OTEsIDQ2MjMsIDU1MjY4LCAxMjg3MzgsIDQ1OTgsIDk4MzE2MiwgCi0gICAgNjUxMzYsIDEyNzEzNiwgMCwgMTI4MTY5LCAxMDg1MSwgMTIwODc2LCA2MTc5LCA5MjYwMiwgNjE4MCwgMCwgMTE5NTIsIAotICAgIDc0NTc5LCA3ODY0OCwgMTE5NzIsIDc4NjQ2LCA3ODY0NywgNzg2NDQsIDc4NjQ1LCAxNzcsIDc4NjQzLCA2MTc2LCAKLSAgICAxMjA1ODAsIDk4MzY5NiwgMTI1MTM1LCA2MTc3LCA5MDIwLCA3ODY1MiwgNzg2NTMsIDYxNzgsIDEyMDI0OSwgMTIwMjQyLCAKLSAgICAxMjgwMjcsIDY3NjczLCAyMjE0LCA4NzU0LCAxMjcwNTEsIDEyMDIzNywgMjEzNywgNDMwODEsIDE5NDY2MywgMTE5MTE0LCAKLSAgICA5MTM2LCA2Njg4OSwgNDQwMSwgNDEyODAsIDcwODAxLCA4OTc0LCAyMzA4LCAxOTQ3NTAsIDc0MTQ5LCAxMjgzMjcsIDIzMTgsIAotICAgIDk4MzE4MywgNjYzNjEsIDgxOTgsIDY1NjI2LCA2NDM2MCwgMTI2MDEsIDQyNTM2LCA0MzkzMSwgMTIwODI3LCA0MzkzMCwgCi0gICAgOTI0NjIsIDY5NzAsIDU0MDQsIDQzMzMyLCAzNjY3LCA3OTM2LCAxMjkyNSwgMTI2OTg5LCA2Mzg1LCAxMjg0ODIsIAotICAgIDEyODQwMywgMTE4OTQ5LCAxMDg3NCwgNjU1MDUsIDEyMDAwMiwgMTI5MTUxLCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCAKLSAgICA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDAsIAotICAgIDcwMDg4LCA3NDE0OCwgMCwgNzA0MTksIDEyMDIyNSwgMTIwMjI5LCAxMjAyMjQsIDc0MTcyLCA0MTE0NSwgNjY0MDQsIAotICAgIDk0MDk2LCA3NDQyMiwgNDExNDgsIDg2ODMsIDc1OTQsIDExMzY4NiwgNzUwMzMsIDExOTA5MCwgMTA4NjksIDQzNDU4LCAKLSAgICA0MTE0NiwgOTI0MDcsIDExNDQxLCAxMjE0NTYsIDM1MTIsIDExOTYzMywgOTI5NjUsIDgxMDMsIDc4MTQwLCAxMjA4NDcsIAotICAgIDY1MTg0LCAxMTc4MCwgNDE1NjMsIDQyNzk2LCAxMjkwNTUsIDY5NzQyLCA0MTU0NCwgNjUxNDYsIDcxMzE0LCAwLCA3ODEwOSwgCi0gICAgMTI5MTc3LCAxOTk0MiwgOTgzMjQ0LCAxMTg5MDgsIDc5ODgsIDEwNDM2LCA3NDI3MywgMzI3MSwgNzM4MDQsIDY0NzExLCAwLCAKLSAgICA5NDA2NCwgOTgzMDcxLCAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDAsIDEwOTUsIDAsIDM1OTksIAotICAgIDEyNzc3NCwgMCwgMTI4ODYxLCA4NTE0LCAwLCAwLCAwLCA3NDM0NiwgNjY2OTcsIDAsIDExNjg0LCAwLCA5MjQ4NiwgCi0gICAgOTE3NjAzLCAwLCA0MjA0MywgNDMyMzIsIDY2Njc3LCA3NDkyNywgNDIwNDYsIDc0MTU3LCA0MDM2LCAxMjY0ODEsIDAsIAotICAgIDEyODIxMywgMTk0ODYxLCA4MzM1NSwgMTE5NTQsIDcwMzQ4LCAxNDUwLCAxMjk4NiwgMTM0MCwgMCwgNjU0NDEsIDkyNzIyLCAKLSAgICAwLCAwLCAxMjUxMTcsIDAsIDkxNzU0MiwgNzM4MTIsIDgzMDUzLCA2NTM5LCA5Mjk0OCwgMTI2NjA3LCAxMjA3MDIsIAotICAgIDkyMzkwLCAwLCAxMjA0OTIsIDQxMTkwLCAzOTczLCAxMTkzNjUsIDQ1NzUsIDQxMTkzLCA3OTgyLCA0MjksIDkxNzk3OSwgCi0gICAgNzg4OTEsIDAsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgNzgxNzgsIDAsIDEyODk3MCwgCi0gICAgMCwgMCwgNDkxOSwgMTA1OTAsIDEyODU1NiwgNzc1NSwgMCwgOTI5NDIsIDY0NTQ4LCAxMjA1MDYsIDE2MjEsIDEwMjE0LCAKLSAgICA2NTEyNiwgNjgyNTMsIDEyNzAwNCwgOTgzNjE2LCAxMjE4OCwgOTgzNjY4LCAxNjE3LCA4MDUwLCAwLCA1MDE1LCAwLCAKLSAgICAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDAsIDY1NzY4LCA2MzUyLCA0MTg5MiwgMCwgNzU1NSwgMTMxMDMsIAotICAgIDU0MDgsIDI4MTcsIDEyMTQsIDY5OTE5LCA5MjMzNSwgMTIxMjA4LCAwLCA2ODIyNCwgMTIwODcyLCA0MTc2NCwgNzk1NywgCi0gICAgODY4OSwgNjQ3MjMsIDEwNTYsIDQyODk2LCA3NDE0NywgMzU1OSwgOTgzOTE4LCA1NTI4NiwgNzA3MywgNjU4NTAsIDEyMzI3LCAKLSAgICA3MDg1MywgMTE5MDI4LCAwLCAxMjgxMjIsIDEyODQ0MiwgMjM0MSwgODQ1MCwgODQ4NCwgODQ3NCwgMTk0ODg0LCA2ODMyMiwgCi0gICAgNzAwNzksIDg0NjEsIDY3NzIxLCAxMjE1MywgMTI3OTksIDAsIDQzNzA5LCA0MzcwOCwgOTQ1MSwgNzU3MSwgMTMwNzMsIAotICAgIDQzODQ3LCAwLCA2ODEsIDk4MzI1NCwgNzAzLCAxMjc1MTgsIDMyNzIsIDg3ODEsIDEyODk0LCA3MDA3NywgMTE3MDksIAotICAgIDkyMjg4LCA3MDUxNCwgOTgzOTAwLCA4MzE3NSwgNzE0MzYsIDExMzM4LCAxMjA3NjgsIDMyNzYsIDEyODk2OCwgOTE3OTg5LCAKLSAgICA2NTkyOCwgMCwgMTIxMzY3LCA2NTAyMSwgNjQ3OTUsIDc0NTc0LCAwLCAxMDA0NywgNzg4MTQsIDMyNjIsIDc4ODExLCAKLSAgICA0MjcxMSwgMCwgMCwgNjg0NzgsIDE2MywgNTc2LCA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgCi0gICAgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIAotICAgIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI4MTI4LCA5ODM1OTUsIAotICAgIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAxMTAzMSwgOTgzMzM2LCA0MzE1NywgMCwgODk0NiwgMTAzNDgsIDEwNDEyLCAKLSAgICA4NzU1LCAxMTkxNTIsIDAsIDU3MTgsIDEzMjIxLCAwLCAwLCA3ODEzNSwgNzA1MTUsIDkxNzYxNiwgODgxMCwgNzQ0OTksIAotICAgIDY4NiwgMCwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAwLCAxMjA0MCwgNjU2ODksIDEwMTI4LCAKLSAgICA2NTExOCwgNjgwMjksIDExOTE1MSwgNzQyMDUsIDkyNjUxLCAxMjg5MDIsIDI0MDEsIDY4MTQ0LCA4NzkyLCA5ODM2NDgsIAotICAgIDY4MDQ0LCA2NTQ1NSwgMCwgNzQzMjgsIDAsIDc0NTYxLCAxMjA3NjMsIDEyODg2LCAxMjA5NTIsIDY2NjI0LCAxMjY1NzgsIAotICAgIDQzNTU3LCAxMDMwMCwgMTAxNjEsIDEwMzk2LCA3MTIxMCwgNzg2MDIsIDExODk0NSwgOTk4NCwgNzM4NTEsIDMwMTAsIAotICAgIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMjc5MTAsIDExNDc5LCAxMjEzNTUsIDEyMDM1NiwgCi0gICAgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCA1NTIzMCwgMTI0OTQ2LCA0MDUyLCAKLSAgICAxMTM2NzMsIDc2MjYsIDAsIDEyMDkwNywgMTA0NSwgMCwgNTYzMSwgNDExMTMsIDEyNzU0NCwgMCwgNDM3MDcsIDc0MTI3LCAKLSAgICAwLCA5ODM3MTgsIDg0ODYsIDAsIDczNzU4LCAyMzM1LCA0MzYyLCA5ODMxOTUsIDEyNjU2MSwgNjkyMjEsIDEwMjUsIAotICAgIDEyNzI3NywgNDI2MjUsIDcwMzI1LCA3ODA4NCwgNDE0NDMsIDAsIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCAKLSAgICA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCAwLCAKLSAgICA2NTI3NCwgODU2NCwgNzgxOTksIDc4MjM4LCAxMjc1MTUsIDEyMTI3MiwgMCwgNDM0NDYsIDAsIDY2NTEzLCA2MjU2LCAKLSAgICA5MTc4MDcsIDU3OSwgNTUyMTgsIDEwMjA2LCA3ODE5NSwgNjM3NSwgMjY3MywgOTgzODg2LCAxMTgxNCwgMCwgNDQ4OCwgCi0gICAgMTI4NzE2LCAxMjA1NTQsIDY4NDUxLCAxMDQ0NCwgMTE4ODQ2LCAxMjczMzQsIDExNzk5LCA3NDQwNywgNjg0NjYsIDQ0ODcsIAotICAgIDEyNzg0OSwgNDI4MzIsIDEwMzIsIDEyMDI2NywgNDM0NTAsIDc4MjU3LCA3MjAzLCAxMjQ5OTgsIDYxNCwgNzAzNjEsIAotICAgIDEyNzIxNSwgMTIwNjE1LCAxMTk2MjIsIDc4MjYyLCAxMjcyNzEsIDEyNzMyMywgMCwgNDMxMjEsIDEyNzIxMSwgMTI4MzY2LCAKLSAgICA5MjUxMywgMTA1MCwgNzU0OSwgMTIxMjYwLCA4Mjk5NCwgOTMxNCwgNzAzNjUsIDkyODk4LCA2ODAzOSwgMTI3MDYxLCAKLSAgICAxMDA1NywgNzA0MzQsIDEyNzMxMywgMTI4NTc3LCA2NjUwNCwgMTIwOTYzLCA4Mjk5MiwgMjMwNywgMTI4NDU2LCA2NDMzMywgCi0gICAgMTI3MzEyLCAxMjgyMzAsIDczODczLCA5ODM3MTAsIDk0MDM1LCAwLCAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCAKLSAgICA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDAsIDEzMDg1LCA5MjMzLCA3NDIxNiwgMCwgMTI3Nzg1LCA5OTU3LCAxMjgyODUsIAotICAgIDY2NDQ3LCA4MDQ2LCA2NDk2MywgNjU3NzcsIDEwMTI1LCA3NDIxMiwgNDI4MTksIDEwOTEwLCAxMjA0MjQsIDE1MjEsIAotICAgIDk4OTYsIDkzOTY1LCAxMDQ4NywgNjk4NzgsIDEyNTI3LCA2ODczNywgNzk3MCwgMTI1MDczLCAxMjg2NjAsIDAsIDY1NzY5LCAKLSAgICA1MjQzLCA5ODQ5LCA1MjM5LCA2NTc3MSwgMTIxNDI5LCAwLCA1MjM3LCA2OTcxNCwgNjg3NTYsIDEwMTAzLCA1MjQ3LCAKLSAgICA0NzY5LCAxMjkzMDIsIDExODk3NywgMTI4NzMsIDIyODMsIDkyOTMxLCAwLCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCAKLSAgICAwLCA1NTIzMSwgNDExMDMsIDkyMjU2LCA2NDU2NSwgNDc3MywgMTIwODQ2LCA3ODU0OSwgNzAwNzQsIDQ3NzAsIDY2ODkxLCAKLSAgICA5MTc1NjcsIDg3MzEsIDY1Mzc4LCA2NjkxMSwgMTIwNjE5LCA5MTIyLCAxMjgwMzMsIDEyNjYwMCwgNDc3NCwgMzAxOSwgCi0gICAgOTk5NywgMTI4MzQsIDAsIDk0NTYsIDEwMjE1LCAxMjA1NDcsIDAsIDc4NTU2LCAwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCAKLSAgICA0NzY4LCAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIAotICAgIDExODk0NiwgMTIxMDk3LCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMCwgMTEzNzY0LCA2Njg3MCwgMjEzNCwgMCwgCi0gICAgMTAxMTYsIDk4NzcsIDkyMzI5LCAxMjg5NjAsIDAsIDcwOTUsIDgzNzksIDc0MTE2LCA2Nzc4LCAwLCA3ODA5MCwgODI0MywgCi0gICAgMjQyNywgMTI4MTQxLCA3MDkzLCAwLCAxMTU4NSwgMTk1MDAzLCA5OTYyLCA4Mjk5MCwgMTIyMjMsIDEyODQ4NSwgOTI0MzAsIAotICAgIDE0MzQsIDEyMDI1NCwgNTYzNywgMTE1NzMsIDAsIDAsIDAsIDE5OTUxLCA4MzM4OSwgNzQ0MTksIDAsIDE5NDY4NiwgCi0gICAgNTUyODMsIDAsIDcwMzYzLCA3NDQzNywgMTE1NiwgODc0MCwgODMyOTUsIDM3ODIsIDY0MzMxLCAwLCA0MTM3MCwgMTAxNCwgCi0gICAgODI2MSwgMTIwOTU2LCA5MTc1OTYsIDEwODM1LCA5MTc5NjYsIDY1NTM2LCA4MzI5NCwgMTIwNDYzLCAxMjUwNTEsIDc3MDIsIAotICAgIDExODgyNCwgMTI4OTc2LCA0MzAxMCwgNjU3NzksIDY1NzgzLCAxMTUwLCAxMDU0NywgNTcwMCwgMCwgMTIwNjAzLCA2NTM4MywgCi0gICAgMjMzOSwgNDI1OTQsIDU2OTcsIDExODc4OCwgNzUwMTgsIDEyODU3NiwgNzQ5MjMsIDQyMjU3LCA1Njk2LCA5MjY3NywgCi0gICAgMTIwNDY1LCAzODYyLCA5NjQzLCAwLCA3MDE4MywgNzYzNCwgNjUxNjcsIDk4NDUsIDAsIDAsIDU3MDEsIDk3MjIsIDQxNDkwLCAKLSAgICAxMjg3MTksIDE0MjYsIDY4MjE3LCA5ODM2MTQsIDY4NDQ3LCA0MjIwNCwgNTUyNzAsIDg1NzEsIDY3NDAzLCA3ODA2NywgCi0gICAgNDM4NTksIDc4ODE4LCA5MjcxOSwgNDMxODIsIDEyMTg0LCAwLCA0MjAyMiwgMCwgMTAyODEsIDAsIDU2NTAsIDQzMTk0LCAKLSAgICA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIAotICAgIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAxOTQ5ODksIDc4ODgzLCAwLCA3ODIxMiwgCi0gICAgMTI3NzQ2LCAxMDIwLCA3Mzc2MywgOTgzODM1LCA3ODczMSwgNTY0OCwgNjQ3NDgsIDEyMDkyMCwgNzg3MzMsIDEwMjA1LCAKLSAgICAzNTQ1LCA5ODM1ODUsIDY5ODQsIDEyODAwOCwgNzQwNTEsIDEyODkwMSwgNDMyNDIsIDEyMDQ1OCwgMjY2NywgMTI4MTczLCAKLSAgICAxMjUwMzcsIDAsIDk5MTEsIDAsIDY1MDIwLCAxMDA5NywgMTE5MTY2LCAxMjcxNDUsIDk4MzY2MiwgMTE4ODM2LCA5ODM3NDgsIAotICAgIDc4MjA4LCAxMTQwLCA3ODQyNiwgMCwgMTAxNTksIDAsIDAsIDgxMjgsIDEyODY0NCwgNjgzMjYsIDE5NDkxMSwgMTgxNSwgCi0gICAgMTk5MTAsIDg5MCwgMTI0OTM1LCAzMjY3LCA5MjI5MSwgMCwgMTAxMjMsIDEyMTM5OCwgNDQxMCwgMTA0MSwgMTA1NzYsIAotICAgIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIDEyODM0NywgMCwgMCwgMTI4MDk4LCAxOTkzOCwgNjU5MDYsIAotICAgIDEyNzgxOSwgOTE3ODExLCAwLCAzMjk4LCA1Mzc1LCAxMDE0MiwgMCwgODIxNSwgOTI2MzMsIDYxMzQsIDQxMjQ2LCA2NDQwMiwgCi0gICAgOTgzMTQ3LCA2OTg5OSwgMTk0OTM4LCAwLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjcsIDEyODY1MywgNTE3MywgNjUzNDgsIAotICAgIDUyNywgMTIxMTc0LCAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMCwgMCwgMTAwNzIsIDAsIDQyNjk1LCAKLSAgICAyMzI5LCA0MjI1MCwgMCwgMTExODcsIDY5NjY3LCAxMjI0NSwgMTU2OCwgOTQwMzMsIDgzNDYwLCAwLCAxMTM3MDUsIAotICAgIDkxNzkxMCwgMTEyMDEsIDkyNzA4LCA3NDc2OSwgMTI2NDcwLCA2NzY4MCwgOTA2OSwgNjE0NCwgMCwgMTE5ODQwLCA3MzgyMiwgCi0gICAgMCwgMTI4MDEwLCA2NDkxNywgNDE1MjEsIDExODkzNCwgNDk0LCAxMzI1MCwgOTIyNTAsIDY1MDk4LCA2MzY0LCA5NTYsIAotICAgIDExMzc5MiwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDAsIDAsIDk4MzczOSwgNjY0NDksIDEzMjYzLCA3NDI4MSwgCi0gICAgNjkyMTcsIDEzMTcxLCAxMjc3OTYsIDEyMDU2NCwgMCwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgNDEyNzYsIDEyODM2MywgMCwgCi0gICAgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIDAsIDY0NTI2LCAxMTgyOSwgCi0gICAgNjgxOTcsIDEyMjk1LCAwLCAxMTQ3NSwgNzAzMjksIDMwMjAsIDExNTM3LCAwLCA2NjQ0MSwgMTIwNzYxLCA3MDk4LCAKLSAgICAxMjUwNzEsIDAsIDEwNTcsIDU2NiwgNDI2OTYsIDEyNzIzOSwgMzAxNiwgNDIyNzQsIDQzNDY0LCA2NjQ5MCwgMTI5MjEsIAotICAgIDY2NTcxLCA3ODQ3MiwgNzEyMDcsIDMwMDYsIDQ2MjAsIDEyNzIzNywgOTgzMzMwLCAwLCAwLCA2NDY1OSwgMCwgMTI3NzQ5LCAKLSAgICA1NTI1MywgNjM1NywgNjM2MiwgODYyNiwgNzEzMzcsIDIyMTYsIDkwOTAsIDY1Mzc3LCA0MTU5NiwgMCwgNDI5MjAsIDE2OTgsIAotICAgIDAsIDY0NDc3LCA5MTc4NTMsIDQzODEzLCAxMDUzLCAwLCA3ODI2OSwgMCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgCi0gICAgNzQzNDksIDY2NDc5LCA2NzY4OSwgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCAKLSAgICA4NjM5LCA2NjY0MSwgNDI0NiwgMCwgNDM1MTQsIDEyMTMwLCA5ODMzMDgsIDQyMzM3LCA2NDU5NiwgNjQzNzUsIDY2NDgxLCAKLSAgICAxMjc4NTAsIDk4MzE0NCwgMTI3ODI4LCA2MzU5LCAwLCA0MzQ3MSwgOTgzNzY4LCAwLCA4MzM0NSwgNzUwNjUsIDAsIDYzNTgsIAotICAgIDYzNjEsIDE5MjYsIDYzNTYsIDkyNjI3LCA3ODk4LCA4MTEwLCAxMDkzNSwgMCwgMTAwNjksIDU4MzAsIDEyNzc3MywgCi0gICAgNDM2ODUsIDc0MzA3LCAwLCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTIwNDEzLCAKLSAgICA5MjE5MiwgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODM2NDQsIDE5NDk1OSwgMTE5MTg3LCAKLSAgICAyMTM1LCAxMTgzNiwgMCwgMCwgNzg4NjksIDQyMzEzLCA1NTc5LCA5MjQxMiwgNzAzODQsIDEyOTExMywgNDM4NTQsIAotICAgIDcxOTEzLCA1NTc4LCAxMTg0MCwgMTI4MTE1LCA0MjAyMywgNjIzNCwgNTY2OSwgOTIyNzUsIDc4NjIwLCAxMjExNzEsIAotICAgIDY4ODMzLCA5MjI1NCwgNjgyMDIsIDU1ODMsIDAsIDAsIDQyNDI2LCA1NTgwLCA0MjI3NiwgMjkyMywgODkyLCAyMjIwLCAKLSAgICA0MjQ2NSwgNDEzMzAsIDE5NDk4NywgNTc5NSwgNjU1MTIsIDY4Nzc0LCA2NTcwMiwgNjg3NzAsIDEyMDgwMSwgNjUyNTEsIAotICAgIDY4MjI4LCA2NTcxMCwgMTI4Mzk5LCAxMjg0MjksIDY3NjcyLCA2ODc4MywgNTM3MCwgNzA0NjUsIDI5MzEsIDE2MzgsIAotICAgIDEwOTY2LCAxMDE4OCwgNjU4NzgsIDExODg0OCwgMCwgNjk2OTQsIDY5ODc5LCA3NDU4NSwgODE3MiwgNDIwMTcsIDkyNzU2LCAKLSAgICAxMDg0NCwgMTIxMDE2LCAxMjgxOTUsIDkyNDI0LCA2Mzc0LCAxMTk5OTgsIDEyMTA3NSwgMjg2LCA3ODAyMywgMTA2MiwgMCwgCi0gICAgMTE5OTk5LCAwLCA3Mzk1LCAxMjc3ODMsIDEwNzAsIDY0OTAwLCA3MTUzLCA2MDk1LCA0MTg2NSwgMTk0NjQwLCAzMDE1LCAKKyAgICA5NjcyLCA0MTQyNywgNDM1NDEsIDQzMzE3LCA3NDkyNCwgOTE3Nzc3LCAxMjg1NTcsIDQxNDI0LCAxMTk1NjMsIDEyMDU0NiwgCisgICAgOTgzODg4LCAxMjgyMTIsIDAsIDQxNDE3LCAxMjYxLCAwLCAxMjgyNjEsIDEyMTAyLCAxMTk2NjIsIDQxNDAxLCAxMjg5MzIsIAorICAgIDEyNzUzOCwgMTEzNzY3LCA3ODI1MSwgMTI0OTQzLCA0MjI5MCwgMzI3NSwgOTI0NzIsIDQyMzI5LCA2ODg1MCwgNzQ5MDEsIAorICAgIDEyMTAwNSwgMTI3OTUxLCA5MjM4OCwgNjk2NDksIDEwOTg5LCA3NDIzNCwgMTEzNzgxLCAxMDU5OCwgNzQxMCwgMjY2OSwgCisgICAgOTAzLCAxOTUwOTEsIDI5MjAsIDAsIDEyNzIzMiwgNzQ2MDMsIDY0NTA0LCAxOTkyOCwgMCwgMTI4NDExLCAzOTE3LCAKKyAgICA3ODE4NSwgMTE3MzIsIDEyODUxMiwgNzI3OTcsIDQxNDQ4LCA0MTQ2MSwgMTI4ODIzLCAwLCAxMTM3MjEsIDExMzc1OCwgCisgICAgODgxOSwgMTI2NjMsIDAsIDQxMTg0LCA3NDAxNCwgMjMyLCA3NDgzNSwgMTIwNjQ2LCA5MTY4LCA2NTc4NiwgMCwgODMyOTMsIAorICAgIDEyMTAwNywgOTA5NCwgOTE3Nzk0LCAxMTc1OCwgNjg0MjUsIDcxODg2LCAxMDY0LCA0MjQ2NywgMTI4MDQ0LCAxMDExNSwgCisgICAgMTk5MjQsIDkyNzExLCAxMTM2ODIsIDc4NjIsIDY0NTUxLCAxMzIyNCwgODUxNiwgNDE4NjIsIDY2NjUwLCA3NTYxLCAKKyAgICA3ODYxOCwgNjk3OTMsIDE4NzgsIDEyODY0MSwgNzE0MzQsIDI5MTEsIDcyNzU4LCA0MTE3OCwgNTQyNywgNjQ4MjMsIAorICAgIDc4NjE1LCA4MzA2NiwgMzc4NywgNDExNzQsIDgzMDU1LCA0MTQ1OCwgNjcxNDcsIDQxNDYzLCA0MjQxMywgMTEyOTIsIAorICAgIDI0MDYsIDc3NSwgMCwgNjU1ODQsIDY5OTIzLCA2MDc0LCA5NjE4LCA2ODA1NiwgMTIxNDgwLCA0MzQ0MCwgNzQ1MzksIAorICAgIDE5NDkwMSwgNDE0MzYsIDM2NTYsIDkxNzgwNSwgMTIwNjAwLCA0MTQ1NiwgNjc2OTQsIDE1OTksIDExMzMzLCA4MzEzOSwgCisgICAgNjcwMywgODUxMywgODMxMzQsIDE2MTMsIDgzMTM2LCA2ODQ1NiwgMTI1OTgsIDgzMTMxLCA4MzEzMiwgNzg3NDUsIDc0NTAwLCAKKyAgICA0MTQ2MCwgMTAxNDUsIDEwNTQyLCA5OTM3LCA3ODc0NiwgNjcxNDQsIDk5MDUsIDgzMTQ1LCA2NTczMCwgODMxNDcsIAorICAgIDEyMDM3NCwgODQyNywgODMxNDIsIDU1MjQ2LCAxMjAzNzYsIDQyODk1LCAxMTQ5NywgNjQ2ODcsIDc0MDA4LCA0MjU5MiwgCisgICAgMzg3MSwgOTgzNTg0LCAxMjgzMDUsIDkxMTEsIDU3NDEsIDgzMzI1LCAxMjA5ODcsIDEyMDM2NiwgMTE5MTExLCAxMTE1MCwgCisgICAgMTk0ODc2LCAxMjAzNjgsIDEyODg1NSwgMTE2NDgsIDgzMTI2LCA4MzEyNywgODMxMjgsIDQxNTg3LCA3MDM5MSwgODMxMjMsIAorICAgIDcxMTA4LCA0MjExMywgOTE3OTU2LCAxMjcxNTUsIDEyMTcyLCA4MzEyMSwgNzE0NDMsIDY1Mjk4LCA2NTcyMywgNjgyODksIAorICAgIDczODcxLCA2NTcyNCwgNzkyOCwgMTIwMzU0LCA5ODMwOTUsIDQxNTk1LCA3MzczMCwgNjQ2NzEsIDQyMTE4LCA3MzgzMCwgCisgICAgNjYwNDIsIDEwMzU1LCAxMjE1MDEsIDc4NzUsIDEwMDM5MCwgNDE1OTgsIDM5OTMsIDEyMTI2OSwgMTU0NSwgNDA5NzEsIAorICAgIDUzNiwgNzI4NzQsIDQzMDI5LCAwLCAxMjEwMDAsIDY1MTczLCA2NTI4NiwgMTIxMjU0LCA3MDMzMSwgMTk1MDEyLCAwLCAKKyAgICA5NDA2NSwgMCwgNDEzNzUsIDU0MDIsIDgzMDM1LCAxMjgxOTIsIDE2ODcsIDEyMDUwMywgMTI4NTU5LCAwLCA3ODE5NCwgCisgICAgNjQzMjYsIDQwOTY5LCAxMDUyNiwgNzM3NDcsIDgzMjMsIDQwOTY4LCAxMzM5LCAxMTczMSwgNzg3NTYsIDEyNzEwOCwgCisgICAgNjU0NjAsIDEyMjQyLCAxMjg1MTMsIDgwMjAsIDEwODQzLCAxMTU1NCwgOTE3ODY3LCAwLCA4MjY2LCA0MTAwNiwgNjU3MjIsIAorICAgIDgzMDQxLCAxMDcxMCwgNzQwNDUsIDExODk0MiwgNjc2NjcsIDY0NTY3LCAxMTkxNTUsIDgzMzEzLCA3MDcyOSwgNzE4ODksIAorICAgIDY3ODU3LCAxMDA1ODIsIDAsIDkyNDE4LCAxMTc1NSwgNjYzMDUsIDY4MzMyLCAwLCAxMDkxNywgOTM5NzksIDAsIDExMjcyLCAKKyAgICAyMDQwLCA0MTI0NywgNDEzMjYsIDE5NTA2MCwgMTc0MSwgNDIzNzAsIDEyMjcsIDgzMTE5LCA4MzEyMCwgMTE0MTMsIAorICAgIDEyNjU4MywgODMxMTUsIDUyODMsIDE1ODYsIDQ5NzgsIDY4MDUwLCAxOTg0LCAxMTgzMCwgNDM4MTksIDkyMjkzLCA0MDk4NCwgCisgICAgNDI5MDQsIDkzNzMsIDAsIDEyOTE2LCA2Mjg0LCAxOTQ4ODgsIDQxNjYzLCAxMjc4OTUsIDk4MzA0NSwgNjgzMTMsIDkyMzcsIAorICAgIDkzODUsIDQxNjQ4LCAwLCAxMjg5NTMsIDIyOTksIDQxNjY2LCAxODMwLCA3Mzc4MywgMjA1NiwgNDEyODcsIDkyNjEwLCAKKyAgICA5ODMyOTksIDcxOTE3LCA0MjIxOSwgNjgwODYsIDEyMDMyNywgNDE5ODcsIDQxNjc2LCAxMjUyMTksIDcyODQwLCAxMjY1NTMsIAorICAgIDQxNjcwLCAwLCA5MjU5MCwgMjc5NiwgNTUyOTEsIDExNjgzLCA5OTAyLCA3NDUyMSwgNjc5ODgsIDExNDUxLCA4Mjk5NSwgCisgICAgNzg4NTUsIDQyNjMxLCAyMzU5LCA3MTg5MCwgNjc4NDQsIDc0MTY0LCA0MTIzOCwgNTQ4LCAxMTQwNSwgMTMxMzMsIDY0MzY4LCAKKyAgICAxMjcyNzAsIDEyMDkyNSwgNjYyNzIsIDM5NywgNDM2MjIsIDQyMTM5LCA5NTQ3LCA5NTkwLCAxMjgyMzgsIDE2MTQsIAorICAgIDQzNjYxLCA2NDM1NiwgNjYzMDcsIDY2NTEsIDEzNTgsIDEyMDg3MSwgNDI4LCA5NjIwLCAxNDY2LCA3ODExMiwgMTA5ODIsIAorICAgIDExMzc4NSwgMTMzMywgNzEwNCwgNDA3LCA2NDI1LCAxMjg4MzQsIDc0MjUzLCAxMjc5OTMsIDAsIDk4MzE1MSwgNTgwNCwgCisgICAgMTE5NzYsIDg1NTQsIDkyNzIxLCAwLCA3MDE2NywgOTA1NywgNDIyOTQsIDQxMjE4LCAxMjUwOTcsIDEyMTI5MCwgNzgxMzcsIAorICAgIDE4ODMsIDEwOTUyLCA4MDQ4LCA3MDQ0MywgNDEyMjUsIDkyNjIxLCA0MjkxNSwgMTI4NjE2LCAxMjgzMTksIDEyODYyOSwgCisgICAgNDQwNywgNzQ2NDgsIDY1ODA5LCAxMTgzNywgMTk0ODIxLCA4NDQ4LCA3MTQxLCA3NDE4MywgMTIwMzM0LCAxMjY3NSwgCisgICAgMTI2NTksIDc0NjM0LCA0MjM2MywgMTIwNjI0LCA2ODA3NywgNTUyNzMsIDEwNzY2LCAxMjAxMiwgMjM4NiwgNjQ3MzIsIAorICAgIDkxNzAsIDkxNzgyMSwgOTEyMywgNjQ1ODUsIDEwMjk2LCAxMTkxNTgsIDcxNDAsIDEwOTc3LCAxMjczNzgsIDQxNjQsIAorICAgIDkwODEsIDAsIDEyMDU2OSwgNDIwNDksIDQyMDQyLCA4NzA5LCAxMjgyODMsIDEyNjQ3NywgMTIwNjM3LCA0MjQxOSwgCisgICAgNjQ3OTksIDQyMDQ3LCAxMjk0MTQsIDE5NDgyMCwgODQ3MCwgMTE4MDcsIDY1ODk3LCA1NzcsIDAsIDEyNjYxNiwgNzQzMDAsIAorICAgIDAsIDY4MDg3LCA3NDg0MCwgMTI2NDc0LCA5MTc1MzksIDEyODc5MSwgOTIyMjQsIDg3MzYsIDE0MTQsIDQyNjQzLCA5NjgzLCAKKyAgICA0MzQ4NiwgNzQzNDQsIDAsIDI1MzYsIDk4Mzk0MSwgNjYzMzAsIDEyMTIzOCwgNzI4NjksIDEyMDU2MiwgMTE5NTU4LCAwLCAKKyAgICAwLCAxMjc4MzEsIDY2MzE3LCA2OTk0NSwgNjYzMTUsIDIxMDYsIDY3ODA5LCAxMTI3MywgMTIwOTg2LCA0MzAwNCwgNzU0MSwgCisgICAgODI5ODgsIDE5NDczOCwgOTYxLCA2NDMwNywgNjYzMjQsIDY0OTA2LCAxMjUwODAsIDMxMDYsIDY1OTE3LCA0MTI4NCwgCisgICAgMTY5NiwgOTgzMTMwLCA4OTEsIDEyMTA1LCAwLCA0MjYyNCwgMTI4MDIsIDMyNjQsIDg4MjQsIDEzMjY4LCA0MzAwMywgCisgICAgMTA5MzYsIDExOTI1NSwgMCwgMCwgMTk0ODI2LCA5MjY4OCwgMzU2NiwgMjMyMiwgMTIwMzcxLCA3MDgzMSwgMTE0NDksIAorICAgIDEyODE4NywgNDI4NjgsIDQxMjg1LCAzNTQ3LCA5ODM3MTcsIDAsIDExMzc0NiwgOTgzNDAwLCA0MzIxNiwgNjA4OSwgCisgICAgNzg2ODIsIDY4NDkwLCAxMjA1NzgsIDQxNzAsIDEwMjksIDEyNzc2MSwgMTAwMzg0LCAxMTkyMjQsIDQyMzc0LCA5ODM1NzEsIAorICAgIDc0NCwgOTI4ODMsIDExMzczOSwgMTk0OTI0LCA2NTgyMywgMTI3ODI2LCAxMTE4MiwgMzU1MSwgOTI5MzgsIDk4Mzg5MSwgCisgICAgNDYyMywgNTUyNjgsIDEyODczOCwgNDU5OCwgOTgzMTYyLCA2NTEzNiwgMTI3MTM2LCAwLCAxMjgxNjksIDEwODUxLCAKKyAgICAxMjA4NzYsIDYxNzksIDkyNjAyLCA2MTgwLCAwLCAxMTk1MiwgNzQ1NzksIDc4NjQ4LCAxMTk3MiwgNzg2NDYsIDc4NjQ3LCAKKyAgICA3ODY0NCwgNzg2NDUsIDE3NywgNzg2NDMsIDYxNzYsIDEyMDU4MCwgOTgzNjk2LCAxMjUxMzUsIDYxNzcsIDkwMjAsIAorICAgIDc4NjUyLCA3ODY1MywgNjE3OCwgMTIwMjQ5LCAxMjAyNDIsIDEyODAyNywgNjc2NzMsIDIyMTQsIDg3NTQsIDEyMjg5NCwgCisgICAgMTAwNjg5LCAyMTM3LCA0MzA4MSwgMTk0NjYzLCAxMTkxMTQsIDkxMzYsIDY2ODg5LCA0NDAxLCA0MTI4MCwgNzA4MDEsIAorICAgIDg5NzQsIDIzMDgsIDE5NDc1MCwgNzQxNDksIDEwMTA1MCwgMjMxOCwgMTIwNjkzLCA2NjM2MSwgODE5OCwgNjU2MjYsIAorICAgIDY0MzYwLCAxMjYwMSwgNDI1MzYsIDQzOTMxLCAxMjA4MjcsIDQzOTMwLCA5MjQ2MiwgNjk3MCwgNTQwNCwgNDMzMzIsIAorICAgIDM2NjcsIDc5MzYsIDEyOTI1LCAxMjY5ODksIDYzODUsIDEyODQ4MiwgMTI4NDAzLCA3Mjg2MSwgMTA4NzQsIDY1NTA1LCAKKyAgICAxMjAwMDIsIDcyNzg1LCA0MjA1MywgMjA3NSwgNDIwNTcsIDExMDgzLCA0MjA1MiwgMCwgNjcyNjYsIDY3NjUxLCAxMjExMDQsIAorICAgIDk2NjUsIDkyMzAwLCA5ODM2NjYsIDEzMTgxLCA5MTc2MTcsIDAsIDEyODkzNywgNzAwODgsIDc0MTQ4LCAwLCA3MDQxOSwgCisgICAgNzI4NjgsIDEyMDIyOSwgMTIwMjI0LCA3NDE3MiwgNDExNDUsIDY2NDA0LCA5NDA5NiwgNzQ0MjIsIDQxMTQ4LCA4NjgzLCAKKyAgICA3NTk0LCAxMTM2ODYsIDc1MDMzLCAxMTkwOTAsIDEwODY5LCA0MzQ1OCwgNDExNDYsIDkyNDA3LCAxMTQ0MSwgMTIxNDU2LCAKKyAgICAzNTEyLCAxMTk2MzMsIDkyOTY1LCA4MTAzLCA3ODE0MCwgMTIwODQ3LCA2NTE4NCwgMTE3ODAsIDQxNTYzLCA0Mjc5NiwgCisgICAgMTI5MDU1LCA2OTc0MiwgNDE1NDQsIDY1MTQ2LCA2NjgwMywgMCwgNzgxMDksIDEyOTE3NywgMTk5NDIsIDEyNjYxOCwgCisgICAgMTE4OTA4LCA3OTg4LCAxMDQzNiwgNzQyNzMsIDMyNzEsIDczODA0LCA2NDcxMSwgMTIwODI0LCA5NDA2NCwgOTgzMDcxLCAKKyAgICAxMjg2NTIsIDM4MDQsIDEzMDcwLCAxMTU1NywgNDIwNDQsIDEyMDg1OSwgMTA5NSwgMCwgMzU5OSwgMTI3Nzc0LCAwLCAKKyAgICAxMjg4NjEsIDg1MTQsIDAsIDkxNzU3OSwgMCwgNzQzNDYsIDY2Njk3LCAxMjgzODUsIDExNjg0LCA5ODMxNDgsIDkyNDg2LCAKKyAgICA5MTc2MDMsIDAsIDQyMDQzLCA0MzIzMiwgNjY2NzcsIDc0OTI3LCA0MjA0NiwgNzI4NjIsIDQwMzYsIDEyNjQ4MSwgCisgICAgMTI5MzczLCAxMjgyMTMsIDE5NDg2MSwgODMzNTUsIDExOTU0LCA3MDM0OCwgMTQ1MCwgMTI5ODYsIDEzNDAsIDAsIDY1NDQxLCAKKyAgICA5MjcyMiwgMCwgMTI3MDYyLCA3Mjg2NSwgMTAwODE4LCA5MTc1NDIsIDczODEyLCA3Mjg3NSwgNjUzOSwgNzM4MzYsIAorICAgIDEyNjYwNywgMTIwNzAyLCA5MjM5MCwgMCwgMTIwNDkyLCA0MTE5MCwgMzk3MywgMTE5MzY1LCA0NTc1LCA0MTE5MywgNzk4MiwgCisgICAgNDI5LCAxMjI5MDMsIDc4ODkxLCAxMjc4NzQsIDE5NDg0OCwgNjU3OTIsIDEyODQwOCwgODMyODIsIDY0MTcsIDExODkxOCwgCisgICAgNzgxNzgsIDAsIDEyODk3MCwgNjY3ODYsIDAsIDQ5MTksIDEwNTkwLCAxMjgwOTMsIDc3NTUsIDAsIDkyOTQyLCA2NDU0OCwgCisgICAgMTIwNTA2LCAxNjIxLCAxMDIxNCwgNjUxMjYsIDY4MjUzLCAxMjA2ODksIDk4MzYxNiwgMTIxODgsIDk4MzY2OCwgMTYxNywgCisgICAgODA1MCwgMTk1MDMxLCA1MDE1LCAwLCAxMTkxNzQsIDQyNTkwLCA3MDM1NCwgMTc1NiwgNzgxODEsIDk4MzkxMCwgNjU3NjgsIAorICAgIDYzNTIsIDQxODkyLCAxMjUxODYsIDc1NTUsIDEzMTAzLCA1NDA4LCAyODE3LCAxMjE0LCA2OTkxOSwgOTIzMzUsIDEyMTIwOCwgCisgICAgMCwgNDI5MjYsIDEyMDg3MiwgNDE3NjQsIDc5NTcsIDg2ODksIDY0NzIzLCAxMDU2LCA0Mjg5NiwgNzQxNDcsIDM1NTksIAorICAgIDExOTE2MiwgNTUyODYsIDcwNzMsIDY1ODUwLCAxMjMyNywgNzA4NTMsIDExMzcyMCwgMCwgMTI4MTIyLCA3Mjc2MSwgMjM0MSwgCisgICAgODQ1MCwgODQ4NCwgODQ3NCwgNzI4ODUsIDY4MzIyLCA3MDA3OSwgODQ2MSwgNjc3MjEsIDEyMTUzLCAxMjc5OSwgMCwgCisgICAgNDM3MDksIDQzNzA4LCA5NDUxLCA3NTcxLCAxMzA3MywgNDM4NDcsIDAsIDY4MSwgOTgzMjU0LCA3MDMsIDEyNzUxOCwgCisgICAgMzI3MiwgODc4MSwgMTI4OTQsIDcwMDc3LCAxMTcwOSwgOTIyODgsIDcwNTE0LCAxMjcwNTksIDgzMTc1LCA3MTQzNiwgCisgICAgMTEzMzgsIDcyNzkwLCAzMjc2LCAxMjg5NjgsIDEyMDIzMywgNjU5MjgsIDAsIDEyMTM2NywgNjUwMjEsIDY0Nzk1LCAKKyAgICA3NDU3NCwgMCwgMTAwNDcsIDc4ODE0LCAzMjYyLCA3ODgxMSwgNDI3MTEsIDAsIDk4MzQ5MCwgNjg0NzgsIDE2MywgNTc2LCAKKyAgICA5ODk1LCAxNjU1LCA3MDEzMSwgNzQ1OTEsIDc4ODE1LCA3ODgxNiwgNjY4ODgsIDAsIDAsIDcwNTEzLCAxMDAzOSwgCisgICAgMTIwNDI2LCA1NjI2LCA1NjIzLCA1NzE3LCA1Nzc2LCA0MzQ4OCwgODM0OTcsIDY2ODg1LCA0MTU5MSwgMTEwMzYsIDY1MjUyLCAKKyAgICA5MjM4MiwgMCwgMCwgMTIwMTExLCA2Nzg0OCwgMTI3MzA5LCA5ODM1OTUsIDk4MzQ3MiwgODg4NywgMTI3NTIxLCA3Mjk1LCAKKyAgICAxMTAzMSwgMTI1MjU1LCA0MzE1NywgMTAwNDUxLCA4OTQ2LCAxMDM0OCwgMTA0MTIsIDg3NTUsIDExOTE1MiwgNjczNDMsIAorICAgIDU3MTgsIDEzMjIxLCA5ODMzNDEsIDk4MzI3OCwgNzgxMzUsIDcwNTE1LCA5MTc2MTYsIDg4MTAsIDc0NDk5LCA2ODYsIAorICAgIDE5NDc3NiwgNzEzNjIsIDQ2MTksIDExODk1NCwgNjY1NCwgNzM3NjksIDc0NDI2LCAxMjc1MjMsIDEyMDQwLCA2NTY4OSwgCisgICAgMTAxMjgsIDY1MTE4LCA2ODAyOSwgMTE5MTUxLCA3NDIwNSwgOTI2NTEsIDEyODEzOCwgMjQwMSwgNjgxNDQsIDg3OTIsIAorICAgIDk4MzE3OSwgNjgwNDQsIDY1NDU1LCAxMjkzMTUsIDc0MzI4LCAwLCA3NDU2MSwgMTIwNzYzLCAxMjg4NiwgMTIwOTUyLCAKKyAgICA2NjYyNCwgMTI2NTc4LCA0MzU1NywgMTAzMDAsIDEwMTYxLCAxMDM5NiwgNzEyMTAsIDc4NjAyLCA3ODc3NCwgOTk4NCwgCisgICAgNzM4NTEsIDMwMTAsIDY0NDEsIDcwMzQ5LCAxNDU4LCA0MTQ3NSwgNzI0MjksIDkzOTc1LCAxMDA4MTQsIDExNDc5LCAKKyAgICAxMjEzNTUsIDEyMDM1NiwgNjM1MCwgMTI4NjQsIDY5Njc0LCA3MTQ3MywgMTA2MSwgNjQ3ODAsIDIwMDEsIDQzMTExLCAKKyAgICA1NTIzMCwgMTAwNDU0LCA0MDUyLCAxMTM2NzMsIDc2MjYsIDk4Mzg5MCwgMTIwOTA3LCAxMDQ1LCAxOTUwODYsIDU2MzEsIAorICAgIDQxMTEzLCAxMjA0OTQsIDAsIDQzNzA3LCA3NDEyNywgMCwgOTgzNzE4LCA4NDg2LCAwLCA3Mzc1OCwgMjMzNSwgNDM2MiwgCisgICAgOTgzMTk1LCAxMjY1NjEsIDY5MjIxLCAxMDI1LCAxMjcyNzcsIDQyNjI1LCA3MDMyNSwgNzgwODQsIDQxNDQzLCAxMjkxMzAsIAorICAgIDEyODIwNiwgMCwgMTc3NCwgMTUyMywgMTIxMzMwLCA2ODA1OSwgNDE0NDUsIDc4MjM2LCAxMTIwNywgODU2NywgNDE0NDIsIAorICAgIDM5ODgsIDc0ODQzLCA3ODIzNywgMTE4OTEwLCA5ODMwNjcsIDY1Mjc0LCA4NTY0LCA3ODE5OSwgNzgyMzgsIDEyNzUxNSwgCisgICAgMTIxMjcyLCAwLCA0MzQ0NiwgOTgzMzQ2LCA2NjUxMywgNjI1NiwgOTE3ODA3LCA1NzksIDU1MjE4LCAxMDIwNiwgNzgxOTUsIAorICAgIDYzNzUsIDI2NzMsIDk4Mzg4NiwgMTE4MTQsIDAsIDQ0ODgsIDEyODcxNiwgMTIwNTU0LCA2ODQ1MSwgMTA0NDQsIDExODg0NiwgCisgICAgMTI3MzM0LCAxMTc5OSwgNzQ0MDcsIDY4NDY2LCA0NDg3LCAxMjc4NDksIDQyODMyLCAxMDMyLCAxMjAyNjcsIDQzNDUwLCAKKyAgICA3ODI1NywgNzIwMywgMTI0OTk4LCA2MTQsIDcwMzYxLCAxMjY2MzMsIDEyMDYxNSwgMTE5NjIyLCA3ODI2MiwgMTI3MjcxLCAKKyAgICAxMjczMjMsIDAsIDQzMTIxLCAxMjcyMTEsIDEyNzAwMywgOTI1MTMsIDEwNTAsIDc1NDksIDEyMTI2MCwgODI5OTQsIDkzMTQsIAorICAgIDcwMzY1LCA5Mjg5OCwgNjgwMzksIDEyNzA2MSwgMTAwNTcsIDcwNDM0LCAxMjczMTMsIDEyODU3NywgNjY1MDQsIDEyMDk2MywgCisgICAgODI5OTIsIDIzMDcsIDEyODQ1NiwgNjQzMzMsIDEyNzMxMiwgMTE5OTAwLCA3Mzg3MywgOTgzMTI2LCA5NDAzNSwgOTgzMDgzLCAKKyAgICAxMjc5NzMsIDEyODcwOCwgNzA0NDYsIDEwMzYwLCA2NzQ2LCAxMjA0NzMsIDkyMjQ1LCA0NDAsIDEyODgyNiwgMTMwODUsIAorICAgIDkyMzMsIDc0MjE2LCA5ODM1NjYsIDEwMTA4OSwgOTk1NywgMTI1MjEzLCA2NjQ0NywgODA0NiwgNjQ5NjMsIDY1Nzc3LCAKKyAgICAxMDEyNSwgNzQyMTIsIDQyODE5LCAxMDkxMCwgMTAwNDY2LCAxNTIxLCA5ODk2LCA5Mzk2NSwgMTA0ODcsIDY5ODc4LCAKKyAgICAxMjUyNywgNjg3MzcsIDc5NzAsIDEyNTA3MywgMTI4NjYwLCA3MzAzLCA2NTc2OSwgNTI0MywgOTg0OSwgNTIzOSwgNjU3NzEsIAorICAgIDEyMTQyOSwgMCwgNTIzNywgNjk3MTQsIDY4NzU2LCAxMDEwMywgNTI0NywgNDc2OSwgMTI5MzAyLCAxMTg5NzcsIDEyODczLCAKKyAgICAyMjgzLCA5MjkzMSwgMTAwNTI1LCAzMDA4LCA0ODk2LCAxMjgxMDIsIDEyMDg3LCA5ODMyNDAsIDU1MjMxLCA0MTEwMywgCisgICAgNzUwMTEsIDY0NTY1LCA0NzczLCAxMjA4NDYsIDc4NTQ5LCA3MDA3NCwgNDc3MCwgNjY4OTEsIDkxNzU2NywgODczMSwgCisgICAgNjUzNzgsIDY2OTExLCAxMjA2MTksIDkxMjIsIDEyODAzMywgMTE5MDcxLCA0Nzc0LCAzMDE5LCA5OTk3LCAxMjgzNCwgMCwgCisgICAgOTQ1NiwgMTAyMTUsIDEyMDU0NywgMTIwNDEzLCA3ODU1NiwgMTI2OTkwLCAxMjEzMzIsIDc0Nzc2LCA0MjgxLCA0NzY4LCAKKyAgICAxMjA1NzIsIDQxNTM1LCA0MDk5LCA5MDE3LCA2OTk5MywgOTgzNjkyLCA3ODA5NSwgMjIyNSwgNzgwOTYsIDExODk0NiwgCisgICAgMTIwMjUyLCAwLCA3ODA5OCwgMCwgNDI4MTQsIDg4MCwgMTI4OTI2LCAxMTM3NjQsIDY2ODcwLCAyMTM0LCAxMjczODgsIAorICAgIDEwMTE2LCA5ODc3LCA3MDY3OSwgMTI4OTYwLCAwLCA3MDk1LCA4Mzc5LCA3NDExNiwgNjc3OCwgMTIxMTU1LCA3ODA5MCwgCisgICAgODI0MywgMjQyNywgMTI4MTQxLCA3MDkzLCA5ODM4NzksIDExNTg1LCAxOTUwMDMsIDk5NjIsIDgyOTkwLCAxMjIyMywgCisgICAgMTI4NDg1LCA5MjQzMCwgMTQzNCwgMTIwMjU0LCA1NjM3LCAxMTU3MywgMCwgMCwgMCwgMTk5NTEsIDgzMzg5LCA3NDQxOSwgCisgICAgMTI4NTMwLCAxOTQ2ODYsIDU1MjgzLCAwLCA3MDM2MywgNzQ0MzcsIDExNTYsIDg3NDAsIDgzMjk1LCAzNzgyLCA2NDMzMSwgCisgICAgMCwgNDEzNzAsIDEwMTQsIDgyNjEsIDEyMDk1NiwgOTE3NTk2LCAxMDgzNSwgMTI1MjM5LCA2NTUzNiwgODMyOTQsIAorICAgIDEyMDQ2MywgMTI1MDUxLCA3NzAyLCAxMTg4MjQsIDczMDIsIDQzMDEwLCA2NTc3OSwgNjU3ODMsIDExNTAsIDEwNTQ3LCAKKyAgICA1NzAwLCAwLCAxMjA2MDMsIDY1MzgzLCAyMzM5LCA0MjU5NCwgNTY5NywgMTE4Nzg4LCA3NTAxOCwgMTIwNDcxLCA3NDkyMywgCisgICAgNDIyNTcsIDU2OTYsIDkyNjc3LCAxMjA0NjUsIDM4NjIsIDk2NDMsIDkxNzk1MSwgNzAxODMsIDc2MzQsIDY1MTY3LCA5ODQ1LCAKKyAgICAwLCAwLCA1NzAxLCA5NzIyLCA0MTQ5MCwgMTI4NzE5LCAxNDI2LCA2ODIxNywgMTI4NjY4LCA2ODQ0NywgNDIyMDQsIAorICAgIDU1MjcwLCA4NTcxLCA2NzQwMywgNzgwNjcsIDQzODU5LCA3ODgxOCwgOTI3MTksIDQzMTgyLCAxMjE4NCwgMCwgNDIwMjIsIAorICAgIDAsIDEwMjgxLCA5MTc3OTgsIDU2NTAsIDQzMTk0LCA2NDcxMiwgMTA3NDQsIDc4ODg3LCA5OTAsIDU2NDcsIDAsIDczODcsIAorICAgIDc4NzM0LCA0MTExNCwgMTE0NzcsIDU2NDYsIDEyODc5LCAxMTAxOCwgMTI4MzYyLCAzOTQ1LCA5MjU4OSwgOTgzNDY2LCAKKyAgICA3MDY2NCwgNzg4ODMsIDEyODEyOCwgNzgyMTIsIDEyNzc0NiwgMTAyMCwgNzM3NjMsIDk4MzgzNSwgNzg3MzEsIDU2NDgsIAorICAgIDY0NzQ4LCAxMjA5MjAsIDQyMjM2LCAxMDIwNSwgMzU0NSwgMTI5MTIxLCA2OTg0LCAxMjc3NzEsIDc0MDUxLCAxMjg5MDEsIAorICAgIDQzMjQyLCAxMjA0NTgsIDI2NjcsIDEyODE3MywgMTI1MDM3LCAxOTQ3NDYsIDk5MTEsIDEyMDU5MCwgNjUwMjAsIDEwMDk3LCAKKyAgICAxMTkxNjYsIDc4Njk2LCA5ODM2NjIsIDExODgzNiwgOTgzNzQ4LCA3ODIwOCwgMTE0MCwgNzg0MjYsIDEyODIwNSwgMTAxNTksIAorICAgIDAsIDAsIDgxMjgsIDcyODU3LCA2ODMyNiwgMTk0OTExLCAxODE1LCAxOTkxMCwgODkwLCAxMjQ5MzUsIDMyNjcsIDkyMjkxLCAKKyAgICA5MTc2MjksIDEwMTIzLCA3Mjg4MiwgNDQxMCwgMTA0MSwgMTA1NzYsIDYzNTQsIDkyNTgxLCA1ODAsIDc0MjMyLCA5ODM3NDYsIAorICAgIDEyODM0NywgNzI4ODQsIDAsIDEyODA5OCwgMTk5MzgsIDY1OTA2LCAxMjc4MTksIDcyODgzLCAxMjg4NTgsIDMyOTgsIAorICAgIDUzNzUsIDEwMTQyLCAxMDA0MjEsIDgyMTUsIDkyNjMzLCA2MTM0LCA0MTI0NiwgNjQ0MDIsIDk4MzE0NywgNjk4OTksIAorICAgIDE5NDkzOCwgOTgzNjAyLCAxMjE0MjYsIDQxMzgyLCA5MTc5MjYsIDEyODY1MywgNTE3MywgNjUzNDgsIDUyNywgMTIxMTc0LCAKKyAgICAxMTM3ODIsIDc4NDY5LCAxMjgyNTAsIDc4Nzk3LCAxMTkxNSwgMTIxMzg2LCAwLCAxMDA3MiwgMCwgNDI2OTUsIDIzMjksIAorICAgIDQyMjUwLCAwLCAxMTE4NywgNjk2NjcsIDEyMjQ1LCAxNTY4LCA2NjgwNiwgODM0NjAsIDk4MzE4OSwgMTEzNzA1LCAKKyAgICAxMjg1MzIsIDExMjAxLCA5MjcwOCwgNzQ3NjksIDEyNjQ3MCwgNjc2ODAsIDkwNjksIDYxNDQsIDEyMTI0NiwgMTE5ODQwLCAKKyAgICA3MDcwMCwgMTIxNDM4LCA2Njc4MywgNjQ5MTcsIDQxNTIxLCAxMTg5MzQsIDQ5NCwgMTMyNTAsIDkyMjUwLCA2NTA5OCwgCisgICAgNjM2NCwgOTU2LCA2Njc5NCwgMTI4MzAsIDEwNDYyLCA3Mzc0MCwgNzM3MzQsIDEyOTEwOSwgMCwgOTgzNzM5LCA2NjQ0OSwgCisgICAgMTMyNjMsIDc0MjgxLCA2OTIxNywgMTMxNzEsIDEyNzc5NiwgNzA3MTQsIDEwMDk0MiwgNjM4ODUsIDEyNzI1MSwgMTA0NCwgCisgICAgNDEyNzYsIDEyODM2MywgMCwgMCwgNDIwNjgsIDExNzk1LCAxMjQ5ODUsIDAsIDEyNzIwMiwgMCwgNDI0NTAsIDM5MDcsIAorICAgIDEyNDk5NSwgNjQ1MjYsIDExODI5LCA2ODE5NywgMTIyOTUsIDAsIDExNDc1LCA3MDMyOSwgMzAyMCwgMTE1MzcsIDAsIAorICAgIDY2NDQxLCAxMjA3NjEsIDcwOTgsIDEyNTA3MSwgMCwgMTA1NywgNTY2LCA0MjY5NiwgMTI3MjM5LCAzMDE2LCA0MjI3NCwgCisgICAgNDM0NjQsIDY2NDkwLCAxMjkyMSwgNjY1NzEsIDc4NDcyLCA3MTIwNywgMzAwNiwgNDYyMCwgMTI3MjM3LCA5ODMzMzAsIAorICAgIDEyMDEwNywgMTI5MzUwLCA2NDY1OSwgOTE3OTE3LCAxMjc3NDksIDU1MjUzLCA2MzU3LCA2MzYyLCA4NjI2LCA3MTMzNywgCisgICAgMjIxNiwgOTA5MCwgNjUzNzcsIDQxNTk2LCAwLCA0MjkyMCwgMTY5OCwgMCwgNjQ0NzcsIDkxNzg1MywgNDM4MTMsIDEwNTMsIAorICAgIDEwMDQzMiwgNzgyNjksIDEwMDQzNCwgOTI5NzcsIDEwNTIsIDEwNTEsIDQ1OSwgMTA2MCwgNzQzNDksIDY2NDc5LCA2NzY4OSwgCisgICAgNjY4NzEsIDkxNzg0NSwgNzAzMjcsIDQyNDkwLCA2ODksIDY1MDgsIDQxNjMsIDQyMjk4LCA4NjM5LCA2NjY0MSwgNDI0NiwgCisgICAgMTAwNDQ5LCA0MzUxNCwgMTIxMzAsIDEwMDQ1MCwgNDIzMzcsIDY0NTk2LCA2NDM3NSwgNjY0ODEsIDEyNzg1MCwgOTgzMTQ0LCAKKyAgICAxMjc4MjgsIDYzNTksIDAsIDQzNDcxLCA5ODM3NjgsIDAsIDgzMzQ1LCA3NTA2NSwgOTE3OTUzLCA2MzU4LCA2MzYxLCAKKyAgICAxOTI2LCA2MzU2LCA3Mjg1NSwgNzg5OCwgODExMCwgMTA5MzUsIDAsIDEwMDY5LCA1ODMwLCAxMDA0MjUsIDQzNjg1LCAKKyAgICA3NDMwNywgMTAwNDI2LCA0MjkxMCwgODMzMDEsIDg2OTMsIDc4NjExLCAxMTk1NjUsIDEyODYyMSwgMTE5NTg3LCA5MjE5MiwgCisgICAgMTIxNDU0LCA2NTg5NCwgMTk0Njk0LCAwLCA2NDI5NiwgOTgzNjgxLCA5ODMzOTQsIDE5NDk1OSwgMTE5MTg3LCAyMTM1LCAKKyAgICAxMTgzNiwgMCwgMTI5MzYxLCA3ODg2OSwgNDIzMTMsIDU1NzksIDkyNDEyLCA3MDM4NCwgMTI5MTEzLCA0Mzg1NCwgNzE5MTMsIAorICAgIDU1NzgsIDExODQwLCAxMjgxMTUsIDQyMDIzLCA2MjM0LCA1NjY5LCA5MjI3NSwgNzg2MjAsIDEwMTAzOCwgNjg4MzMsIAorICAgIDkyMjU0LCA2ODIwMiwgNTU4MywgMCwgMCwgNDI0MjYsIDU1ODAsIDQyMjc2LCAyOTIzLCA4OTIsIDIyMjAsIDQyNDY1LCAKKyAgICA0MTMzMCwgMTk0OTQ1LCA1Nzk1LCA2NTUxMiwgNjg3NzQsIDY1NzAyLCA2ODc3MCwgMTIwODAxLCA2NTI1MSwgNjgyMjgsIAorICAgIDY1NzEwLCAxMjgzOTksIDk0MTc2LCA2NzY3MiwgNjg3ODMsIDUzNzAsIDcwNDY1LCAyOTMxLCAxNjM4LCAxMDk2NiwgCisgICAgMTAxODgsIDY1ODc4LCAxMTg4NDgsIDAsIDY5Njk0LCA2OTg3OSwgNzQ1ODUsIDgxNzIsIDQyMDE3LCA5Mjc1NiwgMTA4NDQsIAorICAgIDEyMTAxNiwgMTI4MTk1LCA5MjQyNCwgNjM3NCwgOTI2MzYsIDEwMDQzOCwgMjg2LCA3ODAyMywgMTA2MiwgMCwgMTE5OTk5LCAKKyAgICAxMDA0MzcsIDczOTUsIDEyNzc4MywgMTA3MCwgNjQ5MDAsIDcxNTMsIDYwOTUsIDQxODY1LCAxMjg5MjgsIDMwMTUsIAogICAgIDY4NzQzLCA2ODc0MCwgNTIxMSwgNjg4MDUsIDY0MDAsIDY4NzQ5LCA2ODc0OCwgNjg3NjAsIDgxODksIDExMjc2LCA2ODc1NCwgCiAgICAgNzAyODQsIDM3MiwgMTI4ODI5LCA2ODc2MSwgMTEzNzgzLCA0MjEwMiwgNDE1ODUsIDEyNzc1MSwgMCwgNDIxMDEsIDI3NiwgCiAgICAgNzg0MDIsIDY3NDI3LCAzMywgNjc0MjUsIDY3NDI0LCA5MDA3LCA2NzQzMCwgNDE1ODgsIDY2MDMzLCA0MjcsIDEwNzYzLCAKLSAgICAxMTg4MTksIDcwODcyLCAxMjc4ODQsIDk4Mzk0MywgMTAzMSwgNjI1NywgOTI0ODksIDQyMTA0LCAwLCA5ODM5ODAsIDIzMjgsIAotICAgIDY2ODM3LCAxMDcxLCA0Mjg5OSwgMTI1MDg4LCA3NDg0OCwgMTIwODU3LCAxMTM3OTMsIDE5NDk4MSwgMTA0NywgMCwgCi0gICAgMTk0OTQzLCA0MjkwOCwgMTI4NDgwLCA2OTcyMywgMTA2NTEsIDcwMzU2LCAwLCAxMjUxMTMsIDcyNDMzLCA2NjgyOSwgCi0gICAgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgNjc5MCwgNjUxNjgsIAotICAgIDEzMjE2LCA5ODMxNTAsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIDY5NjU0LCA3MTkxNSwgCi0gICAgMCwgNTcxMiwgMjc2MSwgNDE2MjAsIDY4MTI0LCAzMDc0LCA1NzIyLCAwLCA4NjQzLCA2ODUyNSwgMCwgMTE4OTA2LCAyNzU3LCAKLSAgICAxMTA2NywgOTcxOCwgNjY0MTksIDg5MTAsIDEwNjg5LCA2NDc5LCAwLCAwLCA3MTE3MywgNzg2MDcsIDkxOTYsIDY5NjcwLCAKLSAgICAxMjUwNzAsIDAsIDEyODMzOCwgMTIwMzM1LCAxMTg5MTEsIDAsIDk0MDQzLCAxMjkxOTQsIDAsIDAsIDEyMDAxMCwgNzM3OTUsIAotICAgIDg3MDEsIDY4MTMwLCAxMTk2MTYsIDEyMDUyMiwgMCwgNDI0NzcsIDE5NDk5NCwgMTIxMjMsIDQ0OTUsIDQzNTY5LCAwLCAKLSAgICAxMjkyOTYsIDAsIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgCi0gICAgNDI5MDIsIDczODA4LCAwLCA2NTQ1NywgNDIyNDksIDc2MzksIDQzOTk1LCA2Nzg0NSwgNDI2NDEsIDU0NTQsIDAsIDAsIAotICAgIDcwMzY2LCAxMjAwMDUsIDExOTU4NSwgMTIxMjEyLCA1MDg0LCAxMjExODksIDEyMTEzNCwgNzUwNjIsIDAsIDczMywgCi0gICAgNzQ2NDYsIDc4MDE0LCA2ODc2NywgNzg0MzUsIDExMjA0LCAwLCA5MjE4LCAxNzMxLCAwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKLSAgICA5ODMxMjUsIDAsIDAsIDcwMzIzLCAxMjEzNzEsIDkyNDkyLCA1MTU1LCAxMjAwMDAsIDUzNTgsIDk4Mzc0NCwgMCwgCi0gICAgOTE3NzY3LCA2NDQyNCwgNzEyMzYsIDM4NDAsIDY0MzE0LCA0MTQzMiwgMTIxMzE2LCA3ODMxNSwgNjg0MzAsIDY3OTgwLCAKLSAgICA0MzI1MywgNjU5NDMsIDAsIDMzNzEsIDEwOTg4LCAxMjc5NjAsIDg3NzEsIDE0NzksIDAsIDAsIDExMDksIDExNTgwLCAKLSAgICA0MzY1NywgNjQ2MDEsIDEyMjA1LCA5Mjc4MiwgMCwgNjQ1MDcsIDg4NjgsIDM5OSwgNjc5NzgsIDc0ODQyLCA5ODMyODYsIAotICAgIDEyMTMzNiwgMTIxNDksIDEzMDg4LCA1NTEsIDAsIDEwMTU2LCAxMjExOSwgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIAotICAgIDExOTIxMSwgOTgzMjk4LCAwLCA3ODAxMSwgMzUxLCA2ODc2NCwgMCwgMTI4NzEzLCA1NTIyOSwgMCwgNzQyNjgsIDc4MDA4LCAKLSAgICAxMjgwOTQsIDAsIDQyMzc3LCAwLCAwLCAwLCAxMTM3NjcsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgCi0gICAgMCwgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIAotICAgIDY0MjE1LCA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMjY2MDEsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIAotICAgIDgyOTgzLCAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCAwLCAxMTM1NiwgMTIxMTIwLCAxOTQ4MzMsIDQzNDUyLCA2NzI0NSwgCisgICAgMTE4ODE5LCA3MDg3MiwgMTI3ODg0LCAxMDA5OTAsIDEwMzEsIDYyNTcsIDkyNDg5LCA0MjEwNCwgMTAwMzk2LCAxMDAzOTUsIAorICAgIDIzMjgsIDY2ODM3LCAxMDcxLCA0Mjg5OSwgNzQ0MTgsIDc0ODQ4LCAxMjA4NTcsIDExMzc5MywgMTAwNDAxLCAxMDQ3LCAKKyAgICAxMDA0MDMsIDEwMDQwMiwgNDI5MDgsIDEwMDQwNCwgNjk3MjMsIDEwNjUxLCA3MDM1NiwgMTAwNDA4LCAxMjUxMTMsIAorICAgIDcyNDMzLCA2NjgyOSwgNzA4MTcsIDU3MTEsIDQxNjMzLCAxMjA5OCwgNjU1NzEsIDkxNjYsIDAsIDU3MTAsIDEyODU1MSwgCisgICAgNjc5MCwgNjUxNjgsIDEzMjE2LCAxMDA5MzUsIDY5NzE2LCA2OTcyNiwgMCwgNjQ2MTEsIDQxNjIzLCAxOTUwMDEsIDU3MTUsIAorICAgIDY5NjU0LCA3MTkxNSwgOTgzNzIwLCA1NzEyLCAyNzYxLCA0MTYyMCwgNjgxMjQsIDMwNzQsIDU3MjIsIDEwMDM4OSwgODY0MywgCisgICAgNjg1MjUsIDAsIDExODkwNiwgMjc1NywgMTEwNjcsIDk3MTgsIDY2NDE5LCA4OTEwLCAxMDY4OSwgNjQ3OSwgMTI1MTk2LCAKKyAgICAxMjkxNzgsIDcxMTczLCA3ODYwNywgOTE5NiwgNjk2NzAsIDEyNTA3MCwgMCwgMTI1MTg0LCAxMjAzMzUsIDExODkxMSwgCisgICAgNDE2NDUsIDk0MDQzLCAxMjkxOTQsIDEyNzA4NywgMTI4NDgwLCAxMTM3NzAsIDczNzk1LCA4NzAxLCA2ODEzMCwgMTE5NjE2LCAKKyAgICAxMjA1MjIsIDQzNzU0LCA0MjQ3NywgMTAwNDU5LCAxMjEyMywgNDQ5NSwgNDM1NjksIDAsIDEyOTI5NiwgNzQ1NTcsIAorICAgIDY0OTQ2LCAxMDk5MiwgMCwgNzQ1NjYsIDcwMzM2LCAxMTM2ODgsIDkzMTgsIDkzOTg2LCAxMzI0OSwgNDI5MDIsIDczODA4LCAKKyAgICA5ODMzMzUsIDY1NDU3LCA0MjI0OSwgNzYzOSwgNDM5OTUsIDY3ODQ1LCA0MjY0MSwgNTQ1NCwgMCwgMCwgNzAzNjYsIAorICAgIDEyMDAwNSwgMTAwMzY5LCAxMDAzNjgsIDUwODQsIDEwMDM3MCwgMTIxMTM0LCA3NTA2MiwgOTgzNDYyLCA3MzMsIDc0NjQ2LCAKKyAgICA3ODAxNCwgNjg3NjcsIDc4NDM1LCAxMTIwNCwgMCwgOTIxOCwgMTczMSwgMTAwMzgwLCA5MjkzNywgNzEwNzAsIDY3OTkwLCAKKyAgICA5ODMxMjUsIDk4MzM3MCwgMCwgNzAzMjMsIDEyMTM3MSwgOTI0OTIsIDUxNTUsIDEyMDAwMCwgNTM1OCwgMTI4NTE1LCAKKyAgICAxMjkzMTYsIDE5NDk4MSwgNjQ0MjQsIDcxMjM2LCAzODQwLCA2NDMxNCwgNDE0MzIsIDEyMTMxNiwgNzgzMTUsIDY4NDMwLCAKKyAgICA2Nzk4MCwgNDMyNTMsIDY1OTQzLCAxMDAzNzMsIDMzNzEsIDEwOTg4LCAxMDAzNzgsIDg3NzEsIDE0NzksIDEwMDM1NywgCisgICAgMTAwMzYwLCAxMTA5LCAxMTU4MCwgNDM2NTcsIDY0NjAxLCAxMjIwNSwgOTI3ODIsIDAsIDY0NTA3LCA4ODY4LCAzOTksIAorICAgIDY3OTc4LCA3NDg0MiwgOTgzMjg2LCAxMjEzMzYsIDEyMTQ5LCAxMzA4OCwgNTUxLCAxOTQ5NzIsIDEwMTU2LCAxMjExOSwgCisgICAgOTI1NzIsIDExODkxNiwgMjU0NCwgNjUwNzQsIDExOTIxMSwgMTAwMzU0LCAxMDAzNTMsIDc4MDExLCAzNTEsIDY4NzY0LCAKKyAgICA5MTc5ODEsIDEyODcxMywgNTUyMjksIDAsIDc0MjY4LCA2Njc5MCwgMTI3MzI3LCAxMDAzNjEsIDQyMzc3LCAxMDAzNjMsIAorICAgIDEwMDM2MiwgMTAwMzY1LCAxMDAzNjQsIDc0MzIwLCA5MDEzLCA0MDU0LCAwLCAxOTQ1ODAsIDExMzc0MCwgMzQ0NywgCisgICAgNzM5NjAsIDU1ODUsIDY1ODgxLCAyNTQ5LCA3NDQ2OSwgNzQ0NTcsIDExMTA0LCA1NTg0LCA4MzU4LCAxMjY0NzMsIDY0MjE1LCAKKyAgICA2Njg2NCwgMTA5MTksIDcwNDgwLCA3OTgwLCAxMDA3MjMsIDExMzY5OCwgMjIxOCwgNDE4MDAsIDU1ODksIDgyOTgzLCAKKyAgICAyNjY0LCA0MTYxMywgNTU4NiwgMTE4ODkwLCA3NDUyMiwgMTEzNTYsIDEyMTEyMCwgMTI4MTc1LCA0MzQ1MiwgNjcyNDUsIAogICAgIDkyOTkzLCA0MjU3MywgNjY4NzksIDgzMzI5LCA2NzgxMCwgNjk3NjcsIDc4NzUyLCA3NDM5MiwgODEzNSwgNjQ1MCwgCi0gICAgMTAwNTUsIDc3OTk2LCAxMTk5NDgsIDk4MzE3MywgMTE5MjI1LCA1NjU3LCAwLCA5NjI2LCAxMjE0NTMsIDc3OTk0LCAKLSAgICAxMDE3OSwgNTY1NCwgMTI5MzksIDkyNTczLCAxMjA3OTksIDcxODYwLCAwLCA1NjUyLCAxMDk0NSwgMTk0NTk5LCA2NjQ4NiwgCi0gICAgMCwgMzY2MSwgNzg2MywgMCwgNjgwNjksIDk4MzY3NSwgNzAzMzIsIDEyNzE5NCwgNTY1OSwgMTk0NjA2LCA3ODY5MiwgCi0gICAgNjY3MjksIDU2NTUsIDk4MzYyNiwgNDIxNjgsIDEyMTEzMSwgMTA1NSwgNzExNzEsIDcxODg4LCA2NjMxMCwgNzQwMzAsIAotICAgIDcwNTE2LCAxMjE0NiwgNzAzNjIsIDczOTU2LCAxMTYxOCwgMCwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgMTAzMDQsIDEwMzY4LCAKLSAgICA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIDcxMDczLCA3ODgxLCAKLSAgICAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAwLCA3MDAzNiwgCi0gICAgNjk2OTYsIDY5NzY5LCA2NDY1NiwgOTE3OTk1LCAwLCA5MjQwOSwgNzAwNTYsIDU2NjYsIDY1MjI3LCA1MzE4LCA2Mzk5NCwgCi0gICAgMTE5NTk2LCA5MDkxLCAxMDc5OCwgNzg2NjQsIDc4NTA4LCAxMDE4NiwgOTgzMjY1LCA3NzMyLCA5ODM3MjQsIDY0NTU2LCAwLCAKLSAgICA5ODM5NzksIDU2NjgsIDc0NDQ1LCA3NDk4MiwgNzQ2NDUsIDU2NzAsIDExMzc5NSwgMTI3Mjk3LCAxMTgyMCwgMjk5MiwgCi0gICAgNzgyNiwgNTY2NywgMTk5NTIsIDEyMDgwNywgNzQ5ODEsIDEyNzQ5LCA3NDU1MSwgNjc3NTcsIDAsIDY2NDk2LCA0MzYxLCAKLSAgICAxMTkyNjAsIDEzMDYsIDkyODYsIDE0OTcsIDEyODI4NiwgOTQwMDQsIDcwMzU5LCAwLCAzNTcxLCAxMzI0NywgNTg3NCwgCi0gICAgNzk3MywgNjYzNTMsIDY4NDM1LCA3ODI3OCwgNjc4OTYsIDQzMTkyLCA3NDYyMSwgNzgyNjUsIDU1MywgMTEzNzY4LCAKLSAgICAxMjcwMTIsIDkzMDUzLCA1ODI5LCAwLCA0NTg3LCA3ODI4NSwgNjU5MTIsIDE5NDkxOSwgMTI3NDYsIDEyODY3MSwgNzAzMzgsIAotICAgIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAKLSAgICAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIAotICAgIDk4Mzg1MSwgMTk0ODc3LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAwLCAxMTY2OSwgMCwgNTYzNCwgNDUyNCwgCi0gICAgMTI4OTAzLCAxMjQ5MzYsIDEyODM5MCwgODMyMTUsIDI0MjUsIDY1MTgyLCAxMjg3NjksIDQzNjM2LCA1MjIxLCA3ODQxMCwgCi0gICAgMzI4LCAxMjEwMzEsIDY4NzM2LCA2OTgxNSwgNTYzNiwgMTE5OTE3LCA1MzI5LCAxMjEyOTMsIDU2MzgsIDgzMTY2LCA3OTQwLCAKLSAgICA2NDkzOCwgNDMyMjMsIDQzNzYwLCA1NjM1LCAzMzczLCAyOTg2LCA3ODI5MiwgNzQyMjMsIDM0MzcsIDY4NzYzLCA2MjAzLCAKLSAgICA0MjQ3LCA3MTE2OSwgMTE5MjAsIDgyNzQsIDY4MjQwLCA5ODM2NTgsIDE2NTcsIDQxNTYxLCA2ODc3OCwgNzgyOTUsIDU2MzksIAotICAgIDI5NTQsIDU2NjAsIDU2NDAsIDc4MzAzLCA5ODM2ODUsIDcxMTc5LCA0MjIyNywgNjgzMDEsIDgzMzIyLCA0MTYzNywgCi0gICAgNjc4NzIsIDEyMTEwNSwgNzgzMTAsIDQxNjI1LCA0MzM2MiwgNzgzMDksIDEyMDcxMywgMTE3MDUsIDU2NDIsIDAsIDU0ODYsIAotICAgIDAsIDQzNTYsIDExNzEwLCAwLCAxMjA1MSwgNjk5MzgsIDAsIDU2NDEsIDgyNTksIDEyNjk5NCwgMTA1OCwgMCwgNjc2MzAsIAotICAgIDAsIDEyODkyNywgMTE0NCwgNzg3NTAsIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTI3MzUyLCAKLSAgICAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgCi0gICAgNDM4MDgsIDE5NDk3MiwgNjc2MjEsIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIAotICAgIDU2MTMsIDY2NDAxLCAxMjExNDUsIDAsIDU2MTAsIDk4MzIyNiwgNzExOTksIDY1ODI2LCAyMDY5LCAwLCAxMDc4NywgCi0gICAgNDM5OTksIDI5OTcsIDExOTkzMiwgNTYwOSwgNzgzMTYsIDY1MzE5LCA3ODMxMywgMTIzMTYsIDU4NzUsIDI0MTIsIDgzMjA2LCAKLSAgICA4MTg2LCA5ODA3LCA3NDI2OSwgNjYyOTQsIDEzMTMwLCA2NTg3NCwgNzE4NTUsIDU4MDcsIDExMzY3OCwgMTAwMzAsIDUzMDYsIAotICAgIDEyMzY0LCAxMTg4NjMsIDkyOTcwLCAxMTcwNCwgODMyMDIsIDkyNTgzLCAxMDIxMSwgMCwgMTIwNTc5LCAwLCAxMjEwNjMsIAotICAgIDExNzA2LCA5NzEwLCAxMjUwMjIsIDgyOTg1LCAxMjA2NTUsIDQxMywgNjU2MjMsIDcxMTgsIDgzMTY3LCA5MTMzLCA3NDI2MiwgCi0gICAgOTE3OTY0LCAxMDQyLCAxMjUwNjgsIDY0Nzc5LCAxMjE3MSwgMTE5MjQwLCA2MTg1LCA2NDc3NiwgNDk4NCwgMTIxMjY2LCAKKyAgICAxMDA1NSwgNzc5OTYsIDEwMTAzMywgOTgzMTczLCAxMTkyMjUsIDU2NTcsIDEwMDQ0MywgOTYyNiwgMTIxNDUzLCA3Nzk5NCwgCisgICAgMTAxNzksIDU2NTQsIDEyOTM5LCA5MjU3MywgMTIwNzk5LCA3MTg2MCwgOTE3OTM5LCA1NjUyLCAxMDk0NSwgMTk0NTk5LCAKKyAgICA2NjQ4NiwgOTgzMzYwLCAzNjYxLCA3ODYzLCAwLCA2ODA2OSwgMTAxMDg0LCA3MDMzMiwgMTI3MTk0LCA1NjU5LCAxOTQ2MDYsIAorICAgIDc4NjkyLCA2NjcyOSwgNTY1NSwgMTIxMDEyLCA0MjE2OCwgMTIxMTMxLCAxMDU1LCA3MTE3MSwgNzE4ODgsIDY2MzEwLCAKKyAgICA3NDAzMCwgNzA1MTYsIDEyMTQ2LCA3MDM2MiwgNzM5NTYsIDExNjE4LCA3MjcwOSwgNDI3MjAsIDkyOTQ5LCAxMDI3MiwgCisgICAgMTAzMDQsIDEwMzY4LCA0MjUxOCwgNTk0LCAxMDI0NCwgMTAyNDgsIDc0MDcsIDc0OTc4LCA2NDg3MCwgNzQxOTEsIDM0NjcsIAorICAgIDcxMDczLCA3ODgxLCAzMzMxLCA5NDYsIDEwMjMxLCAxNDk1LCA4MTMxLCA3NDMzMCwgMCwgOTU2MiwgNjkyMjIsIDY1OTI3LCAKKyAgICAxOTQ5NzgsIDcwMDM2LCA2OTY5NiwgNjk3NjksIDY0NjU2LCA5MTc5OTUsIDAsIDkyNDA5LCA3MDA1NiwgNTY2NiwgNjUyMjcsIAorICAgIDUzMTgsIDYzOTk0LCAxMTk1OTYsIDkwOTEsIDEwNzk4LCA3ODY2NCwgNzg1MDgsIDEwMTg2LCA5ODMyNjUsIDc3MzIsIAorICAgIDk4MzcyNCwgNjQ1NTYsIDAsIDk4Mzk3OSwgNTY2OCwgNzQ0NDUsIDc0OTgyLCA3NDY0NSwgNTY3MCwgMTAwODMwLCAKKyAgICAxMjcyOTcsIDExODIwLCAyOTkyLCA3ODI2LCA1NjY3LCAxOTk1MiwgMTIwODA3LCA3NDk4MSwgMTI3NDksIDc0NTUxLCAKKyAgICA2Nzc1NywgMjI2MywgNjY0OTYsIDQzNjEsIDExOTI2MCwgMTMwNiwgOTI4NiwgMTQ5NywgMTI4Mjg2LCA5NDAwNCwgNzAzNTksIAorICAgIDAsIDM1NzEsIDEzMjQ3LCA1ODc0LCA3OTczLCA2NjM1MywgNjg0MzUsIDc4Mjc4LCA2Nzg5NiwgNDMxOTIsIDc0NjIxLCAKKyAgICA3ODI2NSwgNTUzLCAxMTM3NjgsIDEyNzAxMiwgOTMwNTMsIDU4MjksIDk4MzI0NywgNDU4NywgNzgyODUsIDY1OTEyLCAKKyAgICAxOTQ5MTksIDEyNzQ2LCA3MjgwNiwgNzAzMzgsIDExOTkyNCwgNTYzMywgMTE5OTI3LCA3NDI1OSwgOTQxMDIsIDk0MDk5LCAKKyAgICA2NDkwNSwgOTQxMDUsIDk1MTIsIDk0MTAzLCAxMjc0MiwgNjQ0MywgOTgzODA2LCAwLCA5MTM1LCAxMjg4NjMsIDQxNTY0LCAKKyAgICAxMjE1MTcsIDU1MjE5LCAxMjg4MzIsIDk4Mzg1MSwgMTI4MDI2LCAxMjE0OCwgMCwgNzgyOTcsIDAsIDY0MjU2LCAxMTk5MTQsIAorICAgIDExNjY5LCAwLCA1NjM0LCA0NTI0LCAxMjg5MDMsIDEyNDkzNiwgMTI4MzkwLCA4MzIxNSwgMjQyNSwgNjUxODIsIDEyODc2OSwgCisgICAgNDM2MzYsIDUyMjEsIDc4NDEwLCAzMjgsIDEyMTAzMSwgNjg3MzYsIDY5ODE1LCA1NjM2LCAxMTk5MTcsIDUzMjksIAorICAgIDEyMTI5MywgNTYzOCwgODMxNjYsIDc5NDAsIDY0OTM4LCA0MzIyMywgNDM3NjAsIDU2MzUsIDMzNzMsIDI5ODYsIDc4MjkyLCAKKyAgICA3NDIyMywgMzQzNywgNjg3NjMsIDYyMDMsIDQyNDcsIDcxMTY5LCAxMTkyMCwgODI3NCwgNjgyNDAsIDE5NDc0MSwgMTY1NywgCisgICAgNDE1NjEsIDY4Nzc4LCA3ODI5NSwgNTYzOSwgMjk1NCwgNTY2MCwgNTY0MCwgNzgzMDMsIDEyMTQyMCwgNzExNzksIDQyMjI3LCAKKyAgICA2ODMwMSwgODMxNjgsIDQxNjM3LCA2Nzg3MiwgMTIxMTA1LCA3ODMxMCwgNDE2MjUsIDQzMzYyLCA3ODMwOSwgMTAwNzMxLCAKKyAgICAxMTcwNSwgNTY0MiwgMTAwNzMyLCA1NDg2LCAxMDA3MzQsIDQzNTYsIDExNzEwLCAxMDA3MzksIDEyMDUxLCA2OTkzOCwgCisgICAgMTAwNzQwLCA1NjQxLCA4MjU5LCAxMjY5OTQsIDEwNTgsIDAsIDY3NjMwLCAxMDEwMTYsIDEyODkyNywgMTE0NCwgNzg3NTAsIAorICAgIDEyNzI5MywgNDIyMjgsIDk4MzcxNCwgNzM4OTAsIDExODk3MiwgMTAwNTUwLCAyODAwLCA4MzIwOSwgNTY0NSwgNjQ5NjQsIAorICAgIDg2NTIsIDI1NDcsIDY2NDg0LCA0MzYzNCwgMTIxMzU2LCA1NjA4LCA2NTg5MCwgNDM4MDgsIDEyODMzNSwgNjc2MjEsIAorICAgIDY0OTMyLCA5MDAwLCA3MTIwNCwgNjcyMzUsIDkyNjczLCAxODY1LCAxMjg3MDYsIDU2MTMsIDY2NDAxLCAxMDA3MjEsIAorICAgIDEwMDcyNCwgNTYxMCwgMTAwNzI2LCA3MTE5OSwgNjU4MjYsIDIwNjksIDEwMDczMCwgMTA3ODcsIDQzOTk5LCAyOTk3LCAKKyAgICAxMTk5MzIsIDU2MDksIDc4MzE2LCA2NTMxOSwgNzgzMTMsIDEyMzE2LCA1ODc1LCAyNDEyLCA4MzIwNiwgODE4NiwgOTgwNywgCisgICAgNzQyNjksIDY2Mjk0LCAxMzEzMCwgNjU4NzQsIDcxODU1LCA1ODA3LCAxMTM2NzgsIDEwMDMwLCA1MzA2LCAxMjM2NCwgCisgICAgMTE4ODYzLCA5Mjk3MCwgMTE3MDQsIDgzMjAyLCA5MjU4MywgMTAyMTEsIDAsIDEyMDU3OSwgMCwgMTIxMDYzLCAxMTcwNiwgCisgICAgOTcxMCwgMTI1MDIyLCA4Mjk4NSwgMTIwNjU1LCA0MTMsIDY1NjIzLCA3MTE4LCA4MzE2NywgOTEzMywgNzQyNjIsIAorICAgIDkxNzk2NCwgMTA0MiwgMTI1MDY4LCA2NDc3OSwgMTIxNzEsIDExOTI0MCwgNjE4NSwgNjQ3NzYsIDQ5ODQsIDgzMTk4LCAKICAgICA3MDgsIDExMzkxLCAwLCAxMjI0MSwgOTI3MjAsIDgzMzk5LCAxMzA4LCAxMjEyNTgsIDI1MzQsIDgxMCwgMTI1MDg5LCAKLSAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDEyMDE4NCwgMTIwNzM5LCAyMzY0LCAKKyAgICAxMjA5MzMsIDEyODAxNiwgNzE4NDksIDcxODY5LCAxOTE3LCAzMDAwLCAxMjUxNDAsIDcwNjk0LCAxMjA3MzksIDIzNjQsIAogICAgIDY2Mzg3LCA3NDQ3MCwgNjY2MTgsIDY1NjgwLCA2NjQxMSwgMTAwMjcsIDcxODQxLCAxMjgxNTQsIDEyMzM3LCA3NDI4MywgCiAgICAgMTI3MzY4LCA5ODMxNjcsIDI5ODAsIDc1NSwgNjk3NzQsIDkzMSwgMTMxMjQsIDY4MDY4LCA2MzYzLCAyNzQ4LCAxMjEwMjIsIAotICAgIDAsIDY1MDQxLCA5MjI3NiwgNDQwMTEsIDg3MzAsIDE5NDk5NywgMTI3ODU0LCA3ODMxMiwgNzI3NCwgMTE5MjUwLCA5Mjk4OCwgCi0gICAgNzI3NSwgNzgzMDQsIDkzNSwgMTI3MDUyLCA2NTg0MCwgMzc3LCA0MjMyNSwgMTE2NDksIDEyNzM2MywgNjUyNTMsIDY0MzAxLCAKKyAgICAwLCA2NTA0MSwgOTIyNzYsIDQ0MDExLCA4NzMwLCAxOTQ5OTcsIDEwMDcxMSwgNzgzMTIsIDcyNzQsIDEwMDcxMiwgOTI5ODgsIAorICAgIDcyNzUsIDc4MzA0LCA5MzUsIDEwMDcxOSwgNjU4NDAsIDM3NywgNDIzMjUsIDExNjQ5LCAxMDA0ODksIDY1MjUzLCA2NDMwMSwgCiAgICAgMTI4ODM1LCA3ODMwOCwgNDIzNDEsIDY1Mjg0LCAyNDE3LCAwLCAxMjg4NCwgMTk5MTIsIDc5MDcsIDEwNzY4LCA3ODMwMCwgCi0gICAgMTk0OTk4LCAxOTQ5MTIsIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCi0gICAgMTY0OSwgNjc4NzYsIDk2NCwgMTIxMDM0LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAwLCAKLSAgICA4MzM5OCwgNDM2ODksIDEyNzkxMSwgMTMxNDIsIDc4ODEyLCA0MjQxNSwgNjY1NzUsIDQ1NDIsIDY5OTA5LCA0MzU0NywgCi0gICAgODMwMjgsIDAsIDc2NzcsIDI5OTEsIDQ5NDYsIDQyNDU0LCAxMTU2NSwgNzk0OSwgMCwgNjk3NTksIDExMzQxLCA0MjQ5NCwgCi0gICAgMzA3MywgNjU2MjUsIDk3MTQsIDExNjkyLCA0NjU3LCAwLCA3MDgxMCwgNjQ3OCwgOTg5OCwgNDM2NzMsIDY1MjM3LCA2MjQxLCAKLSAgICA3MTA2LCA0ODc3LCAxMjkxMDgsIDYyMzgsIDAsIDEwNTQ4LCAxMjcwNDksIDQ0MDksIDAsIDAsIDY0Nzk4LCA3MDgwNSwgCi0gICAgNTM0NiwgMTI4MjQwLCA5NDA0NywgNjIzNywgNDg3NCwgNjY4NTEsIDkxNzYsIDkyODgyLCAxMjExNTMsIDY1MjMxLCAKLSAgICA2NTg4NCwgMTI2NzgsIDc4NzQ4LCAxMTg5MTIsIDExMzc4LCA0NDAxOCwgNDI3ODUsIDI0MDgsIDMyNTEsIDExMjAzLCAKLSAgICA5ODMxNTksIDU2ODUsIDAsIDI0NjEsIDExMDUyLCA3MDkxLCA1MzQyLCA4MzE3LCAxMjE0NDYsIDY4MTYzLCA1MzQwLCAKLSAgICAxMjA1NTksIDEyNzgyMCwgNDM2MzUsIDczOTI4LCAxMjUwMDEsIDcxMDY5LCA4MzMxOCwgMCwgODMzMTcsIDY1NDgyLCAKLSAgICAxMjEzOTQsIDkxNDIsIDAsIDY4NTA2LCAwLCAxMDkzOCwgMCwgMTE4NzkwLCAxMTgyLCAyNTQyLCA0ODI2LCAwLCAxMjY2NDgsIAotICAgIDcyNDM4LCA1MjksIDg1ODAsIDEyNzQ5MCwgMCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgCi0gICAgNjg3NDQsIDk4MzgyNSwgNDE1OTQsIDIyNSwgNDI4MjgsIDAsIDY3ODIxLCAxMjEyMDAsIDExMzc2LCA3NDM3OSwgMTA3MjEsIAotICAgIDY3NjY0LCAzNDM4LCA0MjA5NywgNjg4NjIsIDExMDg0LCAzMTk0LCA0MTg3MCwgMjY2LCA3ODMwNSwgMTIwMTgzLCA0MTg3MywgCi0gICAgMTIwNTc1LCAxMTMyNCwgMTIwNTMxLCAwLCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAotICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTI3OTM3LCA5ODMyMTYsIDUxNjEsIDEwNTcyLCAKLSAgICA5MTc1NTgsIDQyOTA2LCAwLCA2NDM0OSwgNzI4NywgNDIxNjIsIDEyMDQwNiwgOTgzNjQzLCAxMjY2MDUsIDExMTY3LCAKLSAgICA2OTIyMCwgMTIzNTksIDQzNDI5LCA0MTM2OSwgMTY5NywgMTIxOTEsIDAsIDY4NjMzLCA3Mjg2LCAwLCA2ODYzNSwgMTAwMzEsIAotICAgIDExMzc2NiwgOTg3MCwgNjc3MjYsIDg2MjAsIDY1ODI0LCA5MTc4NTUsIDExOTM4LCAxMjEzMDgsIDcyODUsIDk4MzU1NywgCi0gICAgMTE5NTc3LCA0MjY3OCwgNjY4NDIsIDQzNjc3LCA0MTU4MywgMCwgNjU3OTksIDkyNjIzLCAwLCAxMjkxNjgsIDEyODI2NywgCi0gICAgNzgxNjksIDY2MTk5LCAwLCAzNjA5LCA2ODYyNCwgNzAyODAsIDgzMiwgMTIwNjkzLCAxMjA3NzAsIDc4NDczLCA2NjAwNywgCi0gICAgNzg0NzEsIDY1NzAzLCA3MTI1NiwgMTI4NTE3LCA0MjczMiwgNTE4MCwgOTI2OTksIDQxMzk1LCA0MTUzMCwgMTE2OTEsIAotICAgIDY0NzczLCA5MjIxNCwgNzQwMDIsIDEyNzc5MCwgMTIwNTQ4LCAxMjg2NDUsIDYzNDgsIDI0MywgMTMyMDAsIDEyMDE2MCwgCi0gICAgNjAyNCwgOTIzMDksIDk5NzksIDEwMDM3LCA0MTUyOSwgMTA2NDgsIDg1MzgsIDQzNjg3LCAwLCA5MTc4NDQsIDQyODUsIAotICAgIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIDc1NjMsIDQyMzc2LCA5ODMyNzEsIAotICAgIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIDEyMjA4LCA5OTczLCAxMjgzODYsIAotICAgIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAwLCA3MDE1NSwgNzg2MjIsIDcwMDQ3LCAxMjcyNzMsIDYwMjIsIDE5NTAyMywgCi0gICAgMjg4NCwgMCwgMTE2MjAsIDAsIDQzLCAxOTUwMjAsIDEyNjgyLCAxMDE2LCA0MTEwNywgMCwgNDExMjEsIDM4ODUsIDkyLCAKLSAgICA2NTQ1NiwgNjQ2MDgsIDAsIDc0ODAxLCA3MDg1NSwgMjA3NCwgMTEzNzQyLCA3ODI4MywgMCwgMTI0NTMsIDcwODQ3LCAKLSAgICA5ODM4MjYsIDc0MjQxLCAxMjY1NjgsIDY3OTEsIDEyNDU3LCA3ODI2OCwgMCwgNjYyNzgsIDAsIDc4Mjc5LCAwLCAwLCAKLSAgICA5MjM1OCwgNjY2MzcsIDc5OTUsIDg3NTksIDQzNDIxLCA3ODI3NywgMTI0NDksIDEyODU1MiwgNzEyMjQsIDQzODY4LCAKLSAgICA4NzUyLCAzMTk3LCA0NzIwLCAxMDE2NSwgMTEzNzY1LCAxMTkyNDksIDExMzcxNSwgMTE1OTUsIDY0ODkzLCAxMTg5MDUsIAotICAgIDQzNDM1LCAxMjQ5NjQsIDEyNTAzMCwgNDk5MywgMCwgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCAKLSAgICA0NjM5LCAxMjc1NTksIDE5OTAsIDExMTA3LCA0NDk4LCA3NDE2OSwgNjc3MzYsIDgzMjczLCAxMjcyNzIsIDY5NzM0LCAKLSAgICAyOTYwLCA3Mzc3OSwgMCwgODk2OSwgMTI4MTE3LCA0MzQyNCwgNzM5NTksIDEyNjQ2NCwgMjk1MCwgMTE5NTc5LCA2MjEwLCAKLSAgICA2NTc1MywgMzcwLCAxMjEzNjAsIDAsIDAsIDQ5NTMsIDE5NTAwOSwgMTIxMDU0LCAxMTM3MDgsIDAsIDY5MjMwLCAwLCAKLSAgICAxOTUwMTAsIDY1Njg4LCA3NDk1MSwgNTA2MywgMzUxNywgMjk2NCwgNDM2NjMsIDkxNzc2MiwgNjM0NCwgNzQ3OTEsIAotICAgIDEwNTY2LCAxMDE0NCwgNjYzMzMsIDgyNTIsIDcyOSwgNjYwMTYsIDc4MjUzLCAwLCA3MTMxNywgNjQ5MjMsIDEyMDU3MSwgCi0gICAgNDM2NjksIDkwMzIsIDc4MjYzLCA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCAwLCA5MTc3NzQsIDc0OTE0LCAzNzYxLCAwLCAKLSAgICAwLCA3MDA2OCwgMTIwNDA4LCAxMjkxMiwgMTE5MDEyLCAzODUwLCAxMjgxOTEsIDk4MzI1NiwgMTI4Mzg5LCAwLCAwLCA5MDgsIAotICAgIDAsIDg2MTEsIDEyMTM4NCwgMCwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMCwgODk3OCwgMTIwNTQwLCAxMTkxMzUsIDQxNTg2LCAKLSAgICAxMDUyNywgNzA0MjYsIDkxNzg0OCwgMzg0OCwgNzg3MzksIDc0OTE3LCAxMjc1MzYsIDY1MjQxLCA1MzM2LCA3NDg4MywgCi0gICAgMTI4Nzg2LCA2NjMsIDAsIDEwNzgwLCAwLCAwLCA3ODc2NywgOTgzMjU5LCAxMjcxNjMsIDY4MTkzLCAzNDcsIDAsIAotICAgIDkxNzU0NCwgNzg3NzUsIDY0Njc1LCA0MTU4MiwgNzg3NzQsIDc4NzQ0LCA2NTU3OSwgMTI5ODAsIDY4MDQ2LCAxMjE0MywgCi0gICAgNjk2NTcsIDc4NTEyLCAxMjg0OTMsIDExMTUzLCA0MTgwNCwgNzg1MjMsIDAsIDc4NTI1LCAwLCAxMjg4NTksIDQxNTg0LCAKLSAgICAxMDY4MSwgMCwgMTIwOTc5LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIDAsIDY2MzA2LCA2NDcxNSwgCi0gICAgNjYzODQsIDk1MTgsIDY2MDksIDEwNDM0LCA3MDg0NSwgMTEzMTksIDEwOTcsIDEyODk2NCwgOTE3NTY0LCA0MTczMCwgCi0gICAgMTI5MTgxLCAxMjE1MDEsIDczODQ3LCA3NDg0NSwgNjUxNzIsIDQxNzI4LCA0MTcyMSwgMTk0NzgwLCAxOTQ3NjksIAotICAgIDEyMTQ5OSwgNDEyMDMsIDEyNzA1NiwgMTMxMTAsIDQxNzI2LCAxOTQ4NTYsIDY3MDc3LCAxMDAwLCA2OTY1MSwgMTI3NTA5LCAKLSAgICA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCA0MTEzOCwgOTgzOTY4LCAKLSAgICA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgNTUyNDgsIDEyMjM3LCAKLSAgICA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIDc5MjYsIDAsIAotICAgIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDExOTk3MCwgMTIzMTEsIDExOTE4MSwgNzg3OTYsIDY4NzY4LCA3ODc5NCwgCi0gICAgNzg3OTUsIDY4NDM0LCA3ODc5MywgNjY2NzAsIDExMzc5NywgMTI4NTc5LCAxMjI5MCwgMTIwMTY5LCAxMjkwOTMsIAotICAgIDExOTg3MywgNDIxNDIsIDk5NjgsIDgyMDUsIDAsIDUxMzEsIDExMzY5NCwgOTYyNywgNDM2NDYsIDc4NTQyLCA3ODUzNSwgCi0gICAgOTgzMjEyLCAxOTQ0LCAxMjQ4LCAxMDE0OCwgMTI3NzU1LCAxMTk5OTAsIDExOTk5MSwgMTI3MDEsIDc4Mzc2LCAxMTMwOCwgCi0gICAgMTE5OTk1LCA5ODM0OTMsIDExMzcwMiwgNjY4MzYsIDY1MzA1LCA2NTEwMCwgNDAzMSwgNDI3OTQsIDEyMDAwMywgNzA3NSwgCi0gICAgODE1NCwgMTE5OTg1LCAxMjAwMDcsIDQxODE3LCA3MzkzNCwgNDIyNzUsIDEyMDAxMSwgMTIwMDEyLCA3ODUyNiwgMTIwMDE0LCAKLSAgICAxMjAwMTUsIDYwNDEsIDEyMDUyMCwgNDE4OTksIDk4MzI4OCwgODAwMiwgMTI4MzY3LCA0MzY0LCA3MzczMiwgOTgzNTcwLCAKLSAgICA2NDMzMiwgMTIwOTc2LCA3ODEzLCA5MDY0LCAxMTk5ODYsIDEwMTI0LCA3NTI2LCA4NjAxLCA3MjgxLCA2ODI0NiwgNzI3OSwgCi0gICAgMTIwNDEsIDE0MTgsIDEwODg1LCAxMjY3MywgMTIxMTUyLCAxMjEzODEsIDk2NjAsIDkxNzkyOSwgMTMwMTIsIDQ1NzEsIAotICAgIDkxNzU4OCwgMCwgMTE4OTQwLCAxMjA3OCwgMjk3MCwgMTI5MTIyLCAxMDkzMywgMCwgNzc4NzAsIDEyMTI0MywgNzc4NDEsIAotICAgIDAsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMjA4ODUsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgOTgzOTczLCA3ODMxMSwgNDIzOSwgCi0gICAgMTI4MDczLCAxMjc3OTksIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDAsIAotICAgIDY4MzEyLCA3ODQ4OSwgNjU2NzMsIDEwMTksIDc4NDk1LCA0MTQ4LCAwLCAxMjI4OSwgMCwgNDMxNiwgMCwgMTMxMTksIAotICAgIDg0ODgsIDU0MTIsIDY2MjQzLCA5OTM1LCA5Mjc3NywgNzM4NjQsIDk4MzIwMywgNDE3MzQsIDgyMDYsIDc0MDgxLCA5MTYzLCAKLSAgICAzMjg2LCA5MDcyLCA1ODY3LCAxMzMwMiwgNzYyMiwgNzEyMCwgNDE3MzYsIDkyNTQ2LCA0MTczMSwgMCwgNzQwMCwgNTQxNiwgCi0gICAgNjg2NjMsIDExODkyNCwgMTA4MTcsIDAsIDQxNTM5LCAxMjcyODQsIDY2ODUzLCA3Mzk2MywgNDE4NTUsIDQxODY3LCAKLSAgICA2NTU2NCwgMTEyNzcsIDY1ODkyLCAxMTUzNiwgMTA2MjAsIDkyMjcyLCA3MTE1LCA2NjAzMCwgNzM5MzIsIDU0OTgsIAotICAgIDYzODc2LCA0MTUzNiwgMCwgNjgyMDQsIDkyNTg3LCAzNDU5LCA4OTk3LCAxOTQ3MTksIDkyNzE0LCAwLCAxMjc3ODIsIAotICAgIDkyNTEyLCAwLCA2NjM3NywgNjk3ODEsIDAsIDEyNDk3MiwgNzg1MTEsIDMxNjEsIDI5NSwgNzEyNTcsIDAsIDkyMjIzLCAKLSAgICAxMjEzMjgsIDc4NzQyLCA5MDE2LCA0MzQ1NCwgNjM5MDMsIDYzOTAyLCA0MzUwMSwgNjgyMTAsIDM5NzEsIDk4Mzk1OSwgCi0gICAgNzAwNjMsIDI5NTIsIDc4NzY1LCAxMTAzOCwgMTA5MDEsIDYzOTAwLCA2Mzg5OSwgNjM4OTgsIDY4MDk1LCA2NjcsIDEyMzMyLCAKLSAgICA2Mzg4NywgNjA4NiwgNDE3MjIsIDAsIDUxNzIsIDAsIDk4MzI4MCwgNDE1OSwgOTgzNTYyLCAwLCA5ODE1LCA2Mzg4NCwgCi0gICAgMTk5MzQsIDYzODgyLCA0MTE5OCwgODU1NSwgNjM4NzgsIDYzODc3LCA0MjQ2MCwgNjA1MCwgNDI3MDgsIDYzODgxLCAKLSAgICA2Mzg3MiwgMTIwOTQxLCA0MjQyMSwgMTk1MDM1LCA0MTcyMywgNjM4NzUsIDYzODc0LCAxMTQ2MCwgNzQzMiwgMTkxMywgCi0gICAgNDE5MTMsIDYzODUyLCA2Njg2OSwgMTI4OTcxLCA0MjM0OCwgNzM4OTIsIDY3NTIsIDQ0NiwgNDE5MTEsIDEyNzkwMSwgCi0gICAgNjM4NTEsIDYzODUwLCA0MTkxMCwgMTI4NjM3LCA2Mzg0NiwgMjk3MiwgMTI5MzIsIDcyNjIsIDY5OTY4LCA2Mzg0OSwgCi0gICAgNjM4NDgsIDYzODQ3LCAxMTM3NDksIDY1NzAsIDgzMDIsIDcyNTksIDYzODQyLCA0MTc4LCAxMDc0NiwgNzI1MCwgMTMyMTQsIAotICAgIDEwMDQxLCA4MTA1LCA2Mzg5MiwgMTI3NzgwLCA2OTk2OSwgMTEwNSwgNDE4MCwgMTI3Nzg2LCAxMjA5NCwgOTQ5NywgMCwgCi0gICAgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAKLSAgICAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCAKLSAgICA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCA3NDE1NCwgMCwgNTUzNiwgNjU1NjgsIDk1NzQsIDEzODgsIAotICAgIDcxOTAyLCAwLCAxMDc3LCAxOTUwMDAsIDY1MDk5LCAxMTUzMSwgNTgzNCwgMCwgMCwgOTE3Nzg5LCAwLCA0Mjc3MywgCi0gICAgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCAKLSAgICA1MzM0LCA2NTA4MSwgNDMyNDksIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCAxMjUwMTcsIDY1MDksIDAsIDUzMjcsIDc4Nzc2LCAKLSAgICAxOTkwNywgNjM4NjksIDM0NzgsIDc1ODMsIDc2NzksIDI5MDMsIDAsIDMwMDEsIDExNTgsIDg3NDUsIDQzNzQ2LCA3Mzc0OCwgCi0gICAgNjM4NjYsIDc4NjI2LCAxOTE1LCA0ODQ2LCA2Nzc1NSwgNjYzNzEsIDExODk4NCwgNDIxMDUsIDI5OTAsIDEyMDEyOCwgODA1LCAKLSAgICA2OTIzOCwgNjQ0MzgsIDEyMDcwLCA4NzYwLCAxMTE3LCAxMTM3NTAsIDEyMjEyLCAxMjAxMjMsIDY1MTc0LCA0MjM1NywgCi0gICAgNjM4MzUsIDYzODM0LCA5ODM5NDcsIDc4MjQwLCAxMjIyNSwgNjM4MzgsIDYzODM3LCA5ODM4NTMsIDcwMTczLCA2MzgzMywgCi0gICAgNjA0MiwgNjYzNjAsIDgwODMsIDEyODE2NiwgOTgzNzMzLCA2MzgyMSwgNjM4MjAsIDYzODE5LCA2MzgxOCwgOTgzOTA0LCAKLSAgICA1MjI3LCA5MDQ3LCA2MzgyMiwgNzQ3OTcsIDYwOTEsIDAsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIAotICAgIDYzODExLCA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDEyMDE0MywgNzgwLCAKLSAgICAyMDYsIDcwMTI2LCA0OTM2LCA2NTE0NywgODE2OCwgNjM5MzAsIDIwNzYsIDEwOTMsIDk4ODIsIDYzOTM0LCAyMDgyLCAKLSAgICA2MzkzMiwgNzUwNTAsIDYzOTI5LCAzNTQ2LCAxNjA1LCA3NzkzNCwgOTgwNiwgNDM0NzIsIDc3OTMzLCA4NDAwLCAxMTM0MywgCi0gICAgMjA4NiwgMCwgNjM5MjYsIDI5ODQsIDU5NjgsIDkyODcsIDAsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIAotICAgIDIwODksIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCAKLSAgICA3MjgzLCAwLCA2Mzk3MCwgMTIxMTY1LCAxMDkyLCA0NzU0LCA3MjczLCA1MjUyLCA0NDAxNiwgNDM2MjcsIDEyNzkyMSwgCi0gICAgMTI4OTIwLCA3NDA4LCAxMTgwOSwgODMyMjAsIDEyMTE4MSwgMCwgMjk2NSwgNzI1OCwgODgwOCwgNjY1NzIsIDEwODksIAotICAgIDQxODcsIDYzOTM3LCA0MjExOSwgNDIxMjAsIDExMTA2LCA5NDAsIDU3ODcsIDEwMDk5LCA2MzkzOCwgMCwgNzQ0OTQsIAotICAgIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIDc3OTM4LCAKLSAgICA3NDM0MywgNjczNzAsIDAsIDY2MCwgMTAxMjcsIDY2NiwgOTAyMiwgNTUzMiwgNDM2NjcsIDU1MzMsIDEyNTgwLCA3ODUwNywgCi0gICAgNjExOCwgMjIyLCA5NzksIDM4ODQsIDk4MzM5NCwgNzQxNTEsIDgzMjI3LCA2NTAyLCA5ODM4NTUsIDExMDg1LCAxMjEyNjEsIAotICAgIDYzOTUxLCAxMjQ2NSwgOTE3ODYyLCAwLCAxMjg3ODIsIDYzOTQ2LCAxNzA3LCA2MzkyNCwgMTI0NjEsIDYzOTUwLCA2Mzg5NywgCi0gICAgNjM5NDgsIDYzOTQ3LCA2Mzk0NSwgNjAzOCwgNjM5NDMsIDYzOTQyLCA2NDY4NSwgNjM4OTUsIDY1ODM4LCAyMjc2LCA3Nzc2LCAKLSAgICA5NDA3NiwgMTIxMDg2LCA5MjQ2NCwgMTIwNDQ0LCA2OTczMCwgODAxLCA0MzE2NSwgMTY5MCwgNjM5MTksIDYzOTE4LCAKLSAgICA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCA3ODUxNSwgNjM5MTYsIDU0ODMsIAotICAgIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMCwgCi0gICAgNDI2OTcsIDkwNjEsIDU1MzQsIDEwNjcyLCA0NTAyLCA2ODA1NywgMjUzLCAwLCA2ODIwOCwgMTIwNDM5LCA5MjAzLCAKLSAgICA3NDIzMSwgMCwgMTE1MzAsIDY4NjM0LCA2ODY2OCwgMTIxMjQyLCAxMTEyNywgMCwgMTA0NzQsIDQzNDI2LCAxMzI1NywgCi0gICAgNDIzNTQsIDEyODA5OSwgOTgzNjk4LCA3MDA0NCwgMTk1MDY1LCAwLCA4NDEzLCA2Njg0MSwgMCwgNTY5MywgNzI3MiwgMCwgCi0gICAgMTMyMDksIDY0NDcwLCA2NTgzMSwgNzQzNTAsIDE5NTA2MywgMCwgMCwgMCwgMTI2NjM5LCAxMjAwOTcsIDAsIDk0MDc4LCAKLSAgICA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIAotICAgIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCAKLSAgICA2MzkwNiwgMTU5OCwgNjM5MDQsIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIAotICAgIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEyNjUxMywgMTIwNjA2LCA3ODc1NCwgNTQxMywgCi0gICAgNzYxOSwgMzI1NSwgMzQ5MywgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCA5ODM2MzMsIDQ1MTgsIAotICAgIDEwOTkwLCA2NTA3MywgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDk4MzU5MywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgCi0gICAgNDMwNzMsIDQxNjkwLCAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAKLSAgICAxMjg4MTcsIDEyOTA2NywgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgCi0gICAgMCwgNTMzOSwgNzQzMjMsIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAwLCAxMjc3NTYsIDE5NDgxOCwgMTI3MTE2LCAKLSAgICA1Njg0LCA4Njc4LCAxMDkxNCwgNDM2MzIsIDU2ODksIDY1ODA3LCA3MDgxNCwgNjg0NjQsIDEyNjMzLCAxMjg3MCwgNjk3MDUsIAotICAgIDY1MTgzLCA1Njg4LCAxMTkyNiwgNjAzMywgNjMxMCwgNTY4NiwgMTE5MDc2LCA3NDI1MSwgMCwgMTIwNjQ3LCAxMjg5MzAsIAotICAgIDUwLCAxMDU1OCwgOTg3MSwgNDI2MTIsIDQzNjU1LCA3NDQwMywgOTgzODE4LCA3NDI4NCwgNjY0NjgsIDY2OTA1LCAxMzI1OSwgCi0gICAgNDQ0OCwgMTE5MTUwLCAxMjE0MDYsIDgzMzQ5LCA3MDA0MywgMTMyMSwgMCwgMTA2NDAsIDExNTM5LCAxMTUxLCAxMjExODYsIAotICAgIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMjc4NTIsIDAsIDAsIDk4MzA3NSwgMTI1MDEsIDY0NjA0LCAKLSAgICAxMjg2NTcsIDExNTI3LCAxMTg4NzAsIDg4MTIsIDk4MzcwNiwgMTE1MzgsIDg2NzMsIDEyNjUwLCAxMTAyMCwgMCwgNjY0NjcsIAotICAgIDIxMDUsIDgwODcsIDc4MTYzLCA2OTYzMiwgOTg5NCwgMTI3MTM3LCAxMjc4NTYsIDY5OTk1LCA0NjM2LCA1NTI2MiwgCi0gICAgNzg1MTMsIDQ1MTUsIDIzODIsIDAsIDEyNzA1NSwgOTgzNjk1LCAxMTM3ODAsIDAsIDExODk2OCwgMTIyNzcsIDEyMTIzOSwgCi0gICAgMTE5OTUsIDkyNTUzLCAxMjEwMDYsIDEyMTU4LCA3MDE3MCwgODc0MSwgMTAxOTcsIDY4NzgwLCA5MjQyNiwgMTIxMjg1LCAKLSAgICA2NTMxLCA4MzA1MSwgMTI3ODQ2LCA0NzMsIDQzNDE1LCA5MjkzNiwgOTgzNjUwLCAxODczLCAxMDg3LCAxMjQ5NjYsIDAsIAotICAgIDc0MjgwLCA3ODUyNywgNjY0MzksIDQzMjE4LCA5ODMxMjMsIDE5NDcxNiwgNzIzNywgMTI1MDQsIDcxMTEzLCAxMjY1NTksIAotICAgIDEyODc0OCwgMTIwODg3LCA5NDg5LCAwLCA3MDg0MywgNDM4NCwgNzQyMjAsIDYzODQ1LCAyMDU4LCA2OTc0MSwgMTMyOTUsIAotICAgIDQzMTkxLCAxMjgwMzAsIDEyODU3MSwgMTE1NCwgMzg1NywgMTIwNSwgMCwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgCi0gICAgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIAotICAgIDkzOTk3LCA5ODMzMzIsIDYzNDcsIDc4NzE1LCA3NjU0LCA0MTcxMCwgNDE5NiwgMCwgNDM3LCA0MTcwOSwgNzM3NzIsIAotICAgIDcwODMyLCAwLCA5NDY1LCAxMzI5MCwgMTE5MTgwLCA0OTk3LCA2NDMwNiwgMTIxMzA5LCAwLCA0OTk5LCAxOTQ2NDIsIAotICAgIDY3NDAxLCAxMjY1ODIsIDQ3MTEsIDEyMDc2OSwgMTIwNjAyLCAyNzM5LCAwLCA4MDQ0LCA3NDMxMywgMTk0NjQzLCA0MTc4OSwgCi0gICAgMTI4MTQyLCAxMDgwOSwgNjYyNzksIDAsIDAsIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAKLSAgICAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDE5NDU3NywgCi0gICAgMCwgNDE3OTEsIDExMDQsIDAsIDk4MzcyNSwgMTA2NTUsIDk4MzMzNCwgOTgzNTYxLCAxMjAxNjQsIDAsIDEwODIsIAotICAgIDEyMTAyNCwgODQyOCwgNjU2OSwgMCwgMCwgNzg1MzQsIDY5ODQ5LCA2NzgzLCAxOTQ2NzEsIDEyOTkzLCA4MDQ5LCA0MTU0OCwgCi0gICAgNDQwMjEsIDY0NTgsIDY0NzI4LCAxMjg4ODIsIDQ3NjEsIDYzODI4LCA0NzY2LCA2NDYyMywgMTI3MywgNDM0MDcsIAotICAgIDEyMDY3NywgMTE4ODc2LCAxOTUwNDUsIDY5MTIsIDEzMTMsIDYzMjIsIDEwNDgzLCAxMjg2MjcsIDQxNTQ1LCAxMjY0NjUsIAotICAgIDkyNDQ5LCAwLCAxMTIxNiwgMTIxMzA3LCAwLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDAsIDg1MDMsIDUxMjIsIDQxNTI3LCAKLSAgICA3MTkxMCwgNjYzMjAsIDcwMTYxLCA3NDkwNywgMCwgMCwgNDE1MzcsIDY2NDUzLCA4MzAzLCA4MjgyLCAxMTgxNywgNzM4NTcsIAotICAgIDEwMDAzLCA3Mzg1OSwgNjU5MDQsIDczNjMsIDE2ODYsIDAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgNjU5MjEsIDY0Mjk5LCAKLSAgICAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIDY3NzI1LCA2NTkyNiwgCi0gICAgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgMCwgNjU2MDAsIAotICAgIDE2MzMsIDAsIDEyNjYxNCwgNDc2MiwgMTEwMywgNzA4MjcsIDcwMTU3LCA0NzY1LCA5ODM0OTQsIDEzMDc4LCAwLCA0NzYwLCAKLSAgICA2MzgyNywgMjA1MCwgMTA4NzEsIDQzMTk5LCAxMTAyLCAxOTQ2NTIsIDQyMjM2LCAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIAotICAgIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAwLCA3NTA0NywgNDcwNywgNjgyMDYsIAotICAgIDEwMTQzLCA3ODgzLCAxMjE0NDQsIDc4ODAsIDQ1MjIsIDg2NDUsIDU3MDQsIDEzMDEwLCA2OTc5NiwgODMwNCwgOTI5ODIsIAotICAgIDE5NDY4OCwgMTE5NTc1LCAyMjkzLCA3MDE5NSwgNjY2NTQsIDEyOTA3NywgOTI2NzYsIDAsIDEzMDA4LCAxMjExOTQsIAotICAgIDQzODUsIDEyODczNiwgMTMwMTEsIDEyNTAwNCwgOTI1NjksIDExOTE2MSwgMTMwMDksIDE2MCwgMjY3NywgNzAzODgsIAotICAgIDk4MzI4MiwgNDE3OTMsIDY1NzYzLCA3NDIyMSwgNzA3OTAsIDQxNzkyLCA0Mjc3MCwgOTQwNTQsIDY1NzYyLCAxMTg4MjksIAotICAgIDQzODIxLCA1NzA5LCAxMjgyOTYsIDcxMDc2LCA0MzgxNiwgOTgzMDg3LCA5ODM4OTYsIDEwNzksIDM4NjcsIDU3MDgsIDAsIAotICAgIDAsIDQzNzk3LCA1NzA2LCA2NDc2OCwgNTcwNSwgODc5MSwgNDAwNSwgMTIxMDkxLCAxMDIzNywgMTA5OTEsIDEyODgxNiwgCi0gICAgNDM0NTksIDkxNzMsIDkxNzU4MSwgOTE3NTgwLCAxMzE3MCwgMTI1NDAsIDEyOTE3OCwgNDI2MDUsIDEyMDc2NSwgMTI2NjE3LCAKLSAgICA2ODY0NywgOTE3NTcyLCAxMDA1OCwgNjgwNTgsIDc0ODY3LCA2NzczMCwgMTI3MDc4LCAzMzM5LCAxMTQ0OCwgMTEwNiwgCi0gICAgOTE3NTkxLCA5MTc1NDAsIDkxNzU5MywgMzM0MCwgNzQwMTcsIDkxNzU4NiwgMTIwOTk0LCAxMjkxNDEsIDEyMDU0MSwgCi0gICAgMTA2MDUsIDEzMDksIDYzOTY2LCAxMjA3NDMsIDE3NTQsIDkyMjI2LCAxMzI0NiwgODY0LCA5ODMxNzEsIDExODkyNiwgCi0gICAgODk3MiwgMTE5OTE4LCA3ODQ5LCAxMjAwOTIsIDgzMTMwLCAxMzI0MCwgMTk1MDY4LCA1MTkyLCA0MzM4LCA2Nzk4MiwgCi0gICAgMTA5NDgsIDY2ODI1LCAxMzE5OSwgOTI1NzUsIDEyMzYsIDEzMjA4LCAxMzI2MSwgMTMxODksIDEzMTg4LCA5Mzk5MywgCi0gICAgNzE4NDcsIDc0NDAsIDAsIDEyMDE1MywgOTU1MywgMTU5MCwgNjM3NzcsIDYzNzc2LCAxMzE3OCwgNjM3ODIsIDYzNzgxLCAKLSAgICA2Mzc4MCwgNjM3NzksIDE1ODMsIDExOTkyMywgMTMyNjAsIDQ1NTAsIDEyMDU5OCwgNjQyMDUsIDEyOTEwNywgNzEwNzEsIAotICAgIDQxNTIyLCA0MTUyMywgNjg1MjMsIDk4Mzc3MiwgMTE4OTIzLCAxMTM1NCwgOTQwNzEsIDAsIDQyNzk1LCAwLCAxMTkxOTUsIAotICAgIDExMzk0LCAxOTQ2NDYsIDEzMjM2LCAxMzI3MiwgMTMxOTQsIDEzMzQsIDY5OTI2LCA0NDc5LCAxMTc4LCA2NTU4NiwgCi0gICAgNjgzMTEsIDY2NjgxLCAxMTkxOTMsIDQ2MDEsIDAsIDEyNzg4NSwgOTgzNzY1LCA2NjgyOCwgMTI4OTcyLCAxMjc4MzksIAotICAgIDc0NTgwLCA2ODA5LCA2Mzc4NiwgNjAzMSwgNjc0MDIsIDYzNzkxLCA2Mzc5MCwgMTE0NSwgNjM3ODgsIDc5MTAsIDYzNzg1LCAKLSAgICA0MzE1MywgNzU0LCAxMDE5MiwgMTMxMDUsIDgxODMsIDEyMDc0MSwgMjAzNywgMCwgNjQ3MTAsIDEwNzQ3LCAxMjUsIAotICAgIDEyMDgwMywgNjQ4OTAsIDk4MzA2NCwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIDEwNzQsIDEzMjU4LCA5NTM2LCAKLSAgICA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCA0MTUzMiwgMTM0OSwgNjM3NTAsIAotICAgIDYzNzQ5LCAxMjkwMjUsIDAsIDEyNzkyOCwgNjM3NTMsIDYzODAyLCA0MTA4NCwgMTIwNjIyLCA2ODEzMywgNDE5MzAsIAotICAgIDYzODA1LCA2MzgwNCwgMTExNDAsIDYzODAxLCA0MTA4MiwgODE0MCwgNjM3OTgsIDYyNjAsIDAsIDEyODM5MSwgOTQwNzQsIAotICAgIDYzNzkzLCAxMTk4OCwgMzg5OCwgOTIyNDYsIDEwMjAxLCAxMjIzOCwgNjM3OTUsIDQyMTk0LCAxMDM2NywgMTI1MjEsIAotICAgIDEwNDMxLCA0MjExNCwgNDE5MzIsIDEwNjgsIDAsIDEyNTIzLCAxMjk0NSwgOTgzMzMxLCA0MjIwMywgNzk1MCwgMzEyNCwgCi0gICAgNjM3NzEsIDQyNzg3LCA0Mzg2LCAxMTE0OCwgNjk3MywgMjc5MywgMTI0NzUsIDEyOTE4MCwgNzUwNTYsIDYzNzY5LCA5NTMwLCAKLSAgICAxMjEyNDgsIDEyMjMyLCAxMzEzNSwgODU5NiwgNTY4MSwgNjM3NjIsIDQ1OTUsIDYzNzYwLCA3OTIsIDExMzY3NCwgNjQ4MDMsIAotICAgIDAsIDg3NDIsIDE5NTAyOSwgMTEwNTMsIDEyODc5NiwgNjM3NDQsIDEyODEwNywgMTI4OTQyLCA3NTg4LCA2Mzc0OCwgMTY5MywgCi0gICAgNjM3NDYsIDQzMjA0LCA1MDU1LCA2ODQyNiwgNDIwNjMsIDEwOTAsIDY4ODAzLCAxMjA3NzgsIDExNjY1LCA3NDEzMywgCi0gICAgNDU1OCwgNjU2ODUsIDk1MjMsIDk4MzQ1MywgNjM4NTcsIDcxMjE2LCAxMTUxMywgMCwgNjE1NywgNjM3NzUsIDYzNzc0LCAKLSAgICA2Mzc3MywgMTMxOTEsIDEyMTcwLCAzNTAwLCAzMTM5LCA2ODA3MSwgMzE3MCwgMTI0ODUsIDQzODkxLCAxMDg3MiwgNDM4OTIsIAotICAgIDEzMDA2LCA0MzkzMywgMTIwMDc0LCAwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDAsIDgyMjgsIAotICAgIDAsIDQyMDY1LCAxMjgzNjgsIDQzODg5LCA5NDAzOSwgMTI5Mjk5LCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAKLSAgICAxMTk4NjMsIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIAotICAgIDY1MzAwLCAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAKLSAgICAxMjA1OTIsIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgCi0gICAgOTgzMjM4LCA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMCwgMTA4ODgsIAotICAgIDEyMDkzNCwgNjUyNDIsIDAsIDMzMzAsIDAsIDAsIDY4MzQwLCAwLCAwLCA3MTIwMiwgMzMwNCwgNDI3NTMsIDkyNTg4LCAKLSAgICA3MDI5OCwgNzQ2NDMsIDE2MjcsIDAsIDEyNzc2NSwgMTk0NzM1LCA1MzcxLCAxMzExNiwgMCwgMTgyNiwgMTE4Nzk0LCAwLCAKLSAgICA0MzA5NCwgNzAwMjMsIDQzNjUwLCA5NDAzNywgNjgzMTcsIDkwMzUsIDExMTQxLCA5MTc5NzcsIDEyODAwNSwgMCwgOTIyMDcsIAotICAgIDY4MTI1LCA3NDg5OCwgMTY0LCA2ODMwOSwgOTQwNjcsIDk0MDAwLCA2OTU4LCAwLCA0MzExNiwgNjc3MTksIDcwMDE5LCAKLSAgICAxMzI0NSwgMCwgNjg4MDgsIDY2ODE4LCAwLCA3MDAzMSwgMTEwOTksIDEyNjY2LCAxMzE3NSwgMTMyMDcsIDEyMDQxNCwgCi0gICAgNjYwMTQsIDEyMDQyOCwgNzQ0NywgNTkyOSwgMCwgNjU1MDksIDEyOTE5MiwgNzQ0OSwgMTEzMDYsIDAsIDczOTIwLCAzMTgwLCAKLSAgICAxMjUxMDIsIDYzODA4LCA5MDU0LCA5NzEsIDEzMDYyLCA3MTA5MCwgMCwgNjUxOTUsIDEwMTY0LCA5MjI1MiwgNzQ0MjgsIAotICAgIDk4MzMyMSwgNzgxNDYsIDkyNjExLCAwLCA3MDIwNCwgMCwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIAotICAgIDkxNzk3NiwgMTMyNzYsIDEyNTEzMywgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDEyMTIwMywgCi0gICAgMTIyMjksIDExNjgwLCA5Mjk1NiwgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCAwLCAxMDQ3NiwgMzg1OCwgCi0gICAgNjQxNzUsIDM5MzIsIDY0OTU4LCAxMjA0MzIsIDk4MzY3OCwgNzM5ODksIDY4MTkyLCAwLCA2OTg0NywgMzY5LCA3NDkwOCwgCi0gICAgNDE3ODQsIDExOTE3NSwgNjQxNjMsIDc3OTk3LCAwLCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAKLSAgICAxMjg2MzEsIDQxNzgxLCAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgMCwgNDA0LCAxMjgyMSwgMzc0MSwgMCwgCi0gICAgNTc4OCwgODA5MiwgNjgyMTIsIDQxMjIyLCAxODMxLCA2NjAyMCwgMzk4MiwgMCwgNDM4OCwgMTk0OTEzLCA3NDYsIAotICAgIDExODgyNiwgNzQ3ODMsIDAsIDEyMDE4LCA2NTI5NCwgMTI3NTQ1LCAxOTQ5MjUsIDY4ODM1LCA5ODM0ODgsIDQ0MjIsIAotICAgIDQ3MDgsIDM3OTksIDc0MjkyLCAxMTkzNTcsIDEyMTE0NiwgNzQ0MzAsIDAsIDExNzAwLCA0Mzc0LCAxMjAzNzcsIDEyMTE1MSwgCi0gICAgMTM2NCwgMCwgODAzOCwgMTIwODgzLCA5MTc1OTcsIDEyODY4LCA2OTgxNCwgNzA0MjUsIDY3MzUsIDczOTc5LCAxMzE3NCwgCisgICAgMTk0OTk4LCAxMDA5MjksIDEwNjczLCA2ODc3OSwgNzI0OCwgNjg3ODYsIDQzNTE1LCAxNzgxLCA1NDk2LCAzNjI3LCA2MiwgCisgICAgMTY0OSwgNjc4NzYsIDk2NCwgMTAwNjk2LCA2NjQwMywgNzgyMjYsIDY2MzkzLCA5Mjg5NywgNzAzNTUsIDY2NDA5LCAKKyAgICA5ODM0ODQsIDgzMzk4LCA0MzY4OSwgMTAwNzAxLCAxMzE0MiwgNzg4MTIsIDQyNDE1LCA2NjU3NSwgNDU0MiwgNjk5MDksIAorICAgIDQzNTQ3LCA4MzAyOCwgMCwgNzY3NywgMjk5MSwgNDk0NiwgNDI0NTQsIDExNTY1LCA3OTQ5LCAxMjc1NDUsIDY5NzU5LCAKKyAgICAxMTM0MSwgNDI0OTQsIDMwNzMsIDY1NjI1LCA5NzE0LCAxMTY5MiwgNDY1NywgMCwgNzA4MTAsIDY0NzgsIDk4OTgsIAorICAgIDQxMDM5LCA2NTIzNywgNjI0MSwgNzEwNiwgNDg3NywgMTAwNjgxLCA2MjM4LCAxMDA2ODMsIDEwNTQ4LCAxMDA2ODUsIAorICAgIDQ0MDksIDEwMDY4NywgMTAwNjkwLCA2NDc5OCwgNzA4MDUsIDUzNDYsIDEyODI0MCwgOTQwNDcsIDYyMzcsIDQ4NzQsIAorICAgIDY2ODUxLCA5MTc2LCA5Mjg4MiwgMTIxMTUzLCA2NTIzMSwgNjU4ODQsIDEyNjc4LCA3ODc0OCwgMTE4OTEyLCAxMTM3OCwgCisgICAgNDQwMTgsIDQyNzg1LCAyNDA4LCAzMjUxLCAxMTIwMywgOTgzMTU5LCA1Njg1LCAwLCAyNDYxLCAxMTA1MiwgNzA5MSwgCisgICAgNTM0MiwgODMxNywgMTIxNDQ2LCA2ODE2MywgNTM0MCwgMTIwNTU5LCAxMjUyMDYsIDQzNjM1LCA3MzkyOCwgMTI1MDAxLCAKKyAgICA3MTA2OSwgODMzMTgsIDAsIDgzMzE3LCA2NTQ4MiwgMTIxMzk0LCA5MTQyLCA5ODMxNzcsIDY4NTA2LCAxOTUwODQsIAorICAgIDEwOTM4LCAwLCAxMTg3OTAsIDExODIsIDI1NDIsIDQ4MjYsIDAsIDEyNjY0OCwgNzI0MzgsIDUyOSwgODU4MCwgNjY3NjksIAorICAgIDEyNTA1OCwgMTA1ODYsIDEwNzkwLCAxMDgzOSwgNjYwMjMsIDQxNTkzLCA0MTIwNywgNjg3NDQsIDEyMDYyMCwgNDE1OTQsIAorICAgIDIyNSwgNDI4MjgsIDk4MzYzMiwgNjc4MjEsIDEyMTIwMCwgMTEzNzYsIDcyNzI5LCAxMDcyMSwgNjc2NjQsIDM0MzgsIAorICAgIDQyMDk3LCA2ODg2MiwgMTEwODQsIDMxOTQsIDQxODcwLCAyNjYsIDc4MzA1LCAxMjAxODMsIDQxODczLCA3MTI3MSwgCisgICAgMTEzMjQsIDEyMDUzMSwgOTgzOTc2LCA4NDIwLCA2NDkxOCwgMTI4ODM5LCA0MTg3MSwgNDEzMzgsIDM3MzQsIDc3MzQsIAorICAgIDQzNjgzLCA4NzUwLCA2NjYwNSwgNjYwMTEsIDkyNTE0LCA0MDk2NSwgMTAwNjcyLCAxMDA2NzUsIDUxNjEsIDEwNTcyLCAKKyAgICAxMDA2NzYsIDQyOTA2LCAxMDA2NzgsIDY0MzQ5LCA3Mjg3LCA0MjE2MiwgMTAwNjYwLCA5ODM2MTMsIDEyNjYwNSwgMTExNjcsIAorICAgIDY5MjIwLCAxMjM1OSwgNDM0MjksIDQxMzY5LCAxNjk3LCAxMjE5MSwgMCwgNjg2MzMsIDcyODYsIDE5NDY5NSwgNjg2MzUsIAorICAgIDEwMDMxLCAxMTM3NjYsIDk4NzAsIDY3NzI2LCA4NjIwLCA2NTgyNCwgMTAwNjUxLCAxMTkzOCwgMTAwNjUzLCA3Mjg1LCAKKyAgICAxMDA2NTUsIDEwMDY1NCwgNDI2NzgsIDY2ODQyLCA0MzY3NywgNDE1ODMsIDAsIDY1Nzk5LCA5MjYyMywgNzA2OTMsIAorICAgIDEyODEzMSwgMTI4MjY3LCA3ODE2OSwgNjYxOTksIDEwMDY2NCwgMzYwOSwgNjg2MjQsIDcwMjgwLCA4MzIsIDEwMDY2NywgCisgICAgMTIwNzcwLCA3ODQ3MywgNjYwMDcsIDc4NDcxLCA2NTcwMywgNzEyNTYsIDEyODUxNywgNDI3MzIsIDUxODAsIDkyNjk5LCAKKyAgICA0MTM5NSwgNDE1MzAsIDExNjkxLCA2NDc3MywgOTIyMTQsIDc0MDAyLCAxMjc3OTAsIDEyMDU0OCwgMTI4NDc4LCA2MzQ4LCAKKyAgICAyNDMsIDEzMjAwLCAxMjAxNjAsIDYwMjQsIDkyMzA5LCA5OTc5LCAxMDAzNywgNDE1MjksIDEwNjQ4LCA4NTM4LCA0MzY4NywgCisgICAgMTIwODgwLCA5MTc4NDQsIDQyODUsIDY2MTk1LCAxMjEzNzAsIDQyMzAsIDkyODg2LCA3MzY3LCA0MzI1NiwgOTIzNTMsIAorICAgIDc1NjMsIDQyMzc2LCA5ODMyNzEsIDY4NDQyLCAxMjA1MTIsIDAsIDAsIDIxNCwgMTI4NTc4LCAwLCA3NDg1NiwgNjU4OTMsIAorICAgIDEyMjA4LCA5OTczLCAxMjgzODYsIDY2MzExLCA2NTU4OSwgMTI4Mjc3LCAyNjAzLCAxMjUyMDUsIDcwMTU1LCA3ODYyMiwgCisgICAgNzAwNDcsIDEyNzI3MywgNjAyMiwgMTAwNDg1LCAyODg0LCAwLCAxMTYyMCwgMCwgNDMsIDE5NTAyMCwgMTI2ODIsIDEwMTYsIAorICAgIDQxMTA3LCAwLCA0MTEyMSwgMzg4NSwgOTIsIDY1NDU2LCA2NDYwOCwgMCwgNzQ4MDEsIDcwODU1LCAyMDc0LCAxMTM3NDIsIAorICAgIDc4MjgzLCAxMjg3MzcsIDEyNDUzLCA3MDg0NywgOTgzODI2LCA3NDI0MSwgMTI2NTY4LCA2NzkxLCAxMjQ1NywgNzgyNjgsIAorICAgIDAsIDY2Mjc4LCA5ODM2MzMsIDc4Mjc5LCAwLCAxMjc5MzIsIDkyMzU4LCA2NjYzNywgNzk5NSwgODc1OSwgNDM0MjEsIAorICAgIDc4Mjc3LCAxMjQ0OSwgMTIyOTA4LCA3MTIyNCwgNDM4NjgsIDg3NTIsIDMxOTcsIDQ3MjAsIDEwMTY1LCAxMTM3NjUsIAorICAgIDExOTI0OSwgMTEzNzE1LCAxMTU5NSwgNjQ4OTMsIDExODkwNSwgNDM0MzUsIDgzMzA5LCAxMjE0MTQsIDQ5OTMsIDEyOTM2MCwgCisgICAgNjE2OCwgMTA5MzQsIDE5NDYsIDc0MSwgMTIwNjUwLCA1NDk0LCA0NjM5LCA3MDY2OCwgMTk5MCwgMTExMDcsIDQ0OTgsIAorICAgIDc0MTY5LCA2NzczNiwgNzA2NTgsIDEyNzI3MiwgNjk3MzQsIDI5NjAsIDczNzc5LCAxOTUwNzYsIDg5NjksIDEyODExNywgCisgICAgNDM0MjQsIDczOTU5LCAxMjY0NjQsIDI5NTAsIDExOTU3OSwgNjIxMCwgNjU3NTMsIDM3MCwgMTIxMzYwLCA5ODM2NTQsIAorICAgIDEyMDkyOCwgNDk1MywgMTk1MDA5LCAxMjEwNTQsIDExMzcwOCwgMTIyODg4LCA2OTIzMCwgMCwgMTIyOTAwLCA2NTY4OCwgCisgICAgNzQ5NTEsIDUwNjMsIDM1MTcsIDI5NjQsIDQzNjYzLCA5MTc3NjIsIDYzNDQsIDc0NzkxLCAxMDU2NiwgMTAxNDQsIDY2MzMzLCAKKyAgICA4MjUyLCA3MjksIDY2MDE2LCA3ODI1MywgMCwgNzEzMTcsIDY0OTIzLCA2Njc0NCwgNDM2NjksIDkwMzIsIDc4MjYzLCAKKyAgICA3ODI2NCwgMCwgNDEyMTUsIDAsIDY1ODgzLCA5ODM4NzMsIDkxNzc3NCwgNzQ5MTQsIDM3NjEsIDAsIDAsIDcwMDY4LCAKKyAgICAxMjA0MDgsIDEyOTEyLCAxMTkwMTIsIDM4NTAsIDEyODE5MSwgMTI3MjgyLCAxMjgzODksIDAsIDk4MzM0MiwgOTA4LCAwLCAKKyAgICA4NjExLCAxMDEwNzQsIDk4MzY5OSwgNzQ2NDIsIDQzNjkxLCA0MTE5NywgMTI4ODEyLCA4OTc4LCAxMjA1NDAsIDExOTEzNSwgCisgICAgNDE1ODYsIDEwNTI3LCA3MDQyNiwgOTE3ODQ4LCAzODQ4LCA3ODczOSwgNzQ5MTcsIDEyNzUzNiwgNjUyNDEsIDUzMzYsIAorICAgIDc0ODgzLCAxMjg3ODYsIDY2MywgMCwgMTA3ODAsIDEyODM5NSwgMCwgNzg3NjcsIDExOTYyNiwgMTAwOTIyLCA2ODE5MywgCisgICAgMzQ3LCAwLCA5MTc1NDQsIDc4Nzc1LCA2NDY3NSwgNDE1ODIsIDcyNzkyLCA3ODc0NCwgNjU1NzksIDEyOTgwLCA2ODA0NiwgCisgICAgMTIxNDMsIDY5NjU3LCA3ODUxMiwgMTI4NDkzLCAxMTE1MywgNDE4MDQsIDc4NTIzLCAxMTkxNjgsIDc4NTI1LCAwLCAKKyAgICAxMjg4NTksIDQxNTg0LCAxMDY4MSwgMCwgMTIwMDk0LCA3MzkzOCwgNzM3ODEsIDEyODAyMiwgNDgwMCwgNjY2NjEsIAorICAgIDEyNTAzOCwgNjYzMDYsIDY0NzE1LCA2NjM4NCwgOTUxOCwgNjYwOSwgMTA0MzQsIDcwODQ1LCAxMTMxOSwgMTA5NywgCisgICAgMTI4OTY0LCA5MTc1NjQsIDQxNzMwLCAxMjkxODEsIDkyNTEyLCA3Mzg0NywgNzQ4NDUsIDY1MTcyLCA0MTcyOCwgNDE3MjEsIAorICAgIDE5NDc4MCwgMTk0NzY5LCAxMjE0OTksIDQxMjAzLCAxMjcwNTYsIDEzMTEwLCA0MTcyNiwgMTI5MDcyLCA2NzA3NywgMTAwMCwgCisgICAgNjk2NTEsIDgzNTIwLCA0MTE0MCwgMTIwOSwgNzM5NzgsIDEyNTA1OSwgNzM3NTAsIDEwNzMsIDYzMjEsIDc3ODc4LCAKKyAgICA0MTEzOCwgOTgzOTY4LCA2ODIxMywgNzgwMDAsIDEyMTY3LCAxMTE1LCA0MTYwNSwgOTc5NCwgMTE5OTA0LCA2NzY3MSwgCisgICAgNTUyNDgsIDEyMjM3LCA3ODc4NywgNjYzMTQsIDY1ODcsIDkyOTAsIDc4NzgyLCA3ODc4MywgOTIzMSwgNzg3ODEsIDI5NTksIAorICAgIDc5MjYsIDAsIDkxNzYwMSwgMTI4ODMzLCA2NDM5OCwgNzExMjQsIDcxMjc0LCAxMjMxMSwgMTE5MTgxLCA3ODc5NiwgCisgICAgNjg3NjgsIDc4Nzk0LCA3ODc5NSwgNjg0MzQsIDc4NzkzLCA2NjY3MCwgMTEzNzk3LCAxMjg1NzksIDEyMjkwLCAxMjAxNjksIAorICAgIDEyODIzMywgMTE5ODczLCAzOTM3LCA5OTY4LCA4MjA1LCAwLCA1MTMxLCAxMTM2OTQsIDk2MjcsIDQzNjQ2LCA3ODU0MiwgCisgICAgNzg1MzUsIDk4MzIxMiwgMTk0NCwgMTI0OCwgMTAxNDgsIDEyNzc1NSwgMTE5OTkwLCAxMTk5OTEsIDEyNzAxLCA3ODM3NiwgCisgICAgMTEzMDgsIDExOTk5NSwgOTgzNDkzLCAxMTM3MDIsIDY2ODM2LCA2NTMwNSwgNjUxMDAsIDQwMzEsIDQyNzk0LCAxMjAwMDMsIAorICAgIDcwNzUsIDgxNTQsIDExOTk4NSwgMTIwMDA3LCA0MTgxNywgNzM5MzQsIDQyMjc1LCAxMjAwMTEsIDEyMDAxMiwgNzg1MjYsIAorICAgIDEyMDAxNCwgMTIwMDE1LCA2MDQxLCAxMjA1MjAsIDQxODk5LCA5ODMyODcsIDgwMDIsIDEyODM2NywgNDM2NCwgNzM3MzIsIAorICAgIDk4MzU3MCwgNjQzMzIsIDEyMDk3NiwgNzgxMywgOTA2NCwgMTE5OTg2LCAxMDEyNCwgNzUyNiwgODYwMSwgNzI4MSwgCisgICAgNjgyNDYsIDcyNzksIDEyMDQxLCAxNDE4LCAxMDg4NSwgMTI2NzMsIDEwMTA4MCwgMTIxMzgxLCA5NjYwLCA5MTc5MjksIAorICAgIDEzMDEyLCA0NTcxLCAxMjgzMzEsIDAsIDExODk0MCwgMTIwNzgsIDI5NzAsIDEyOTEyMiwgMTA5MzMsIDAsIDc3ODcwLCAKKyAgICAxMjEyNDMsIDc3ODQxLCAxMDAzNTgsIDQxNTk5LCA3MDE1OSwgMTIxMzQyLCAxMDA3MDYsIDEyOTUwLCA5MjE2MCwgMzQ4NiwgCisgICAgOTgzOTczLCA2Njc4MiwgNDIzOSwgMTI4MDczLCAxMjY1OTIsIDY2NTExLCA2ODA2NiwgMjYzNywgNjQ2MjksIDg0NjAsIAorICAgIDY2ODM0LCA4NDc2LCA5ODM5NzUsIDkxNzk4OSwgNjgzMTIsIDc4NDg5LCA2NTY3MywgMTAxOSwgNzg0OTUsIDQxNDgsIDAsIAorICAgIDEyMjg5LCAwLCA0MzE2LCAwLCAxMzExOSwgODQ4OCwgNTQxMiwgNjYyNDMsIDk5MzUsIDkyNzc3LCA3Mzg2NCwgOTgzMjAzLCAKKyAgICA0MTczNCwgODIwNiwgNzQwODEsIDkxNjMsIDMyODYsIDkwNzIsIDU4NjcsIDEzMzAyLCA3NjIyLCA3MTIwLCA0MTczNiwgCisgICAgOTI1NDYsIDQxNzMxLCAwLCA3NDAwLCA1NDE2LCA2ODY2MywgMTE4OTI0LCAxMDgxNywgMCwgNDE1MzksIDEyNzI4NCwgCisgICAgNjY4NTMsIDczOTYzLCA0MTg1NSwgNDE4NjcsIDY1NTY0LCAxMTI3NywgNjU4OTIsIDExNTM2LCAxMDYyMCwgOTIyNzIsIAorICAgIDcxMTUsIDY2MDMwLCA3MzkzMiwgNTQ5OCwgNjM4NzYsIDQxNTM2LCA5MTc1ODcsIDY2NzM4LCA5MjU4NywgMzQ1OSwgODk5NywgCisgICAgMTk0NzE5LCA5MjcxNCwgMTI3MjM4LCAxMzA2MCwgNzgzMDEsIDAsIDY2Mzc3LCA2OTc4MSwgMTIwMTU5LCAxMjQ5NzIsIAorICAgIDc4NTExLCAzMTYxLCAyOTUsIDcxMjU3LCAwLCA5MjIyMywgMTIxMzI4LCA3ODc0MiwgOTAxNiwgNDM0NTQsIDYzOTAzLCAKKyAgICA2MzkwMiwgNDM1MDEsIDY4MjEwLCAzOTcxLCA5ODM5NTksIDcwMDYzLCAyOTUyLCA3ODc2NSwgMTEwMzgsIDEwOTAxLCAKKyAgICA2MzkwMCwgNjM4OTksIDYzODk4LCA2ODA5NSwgNjY3LCAxMjMzMiwgNjM4ODcsIDYwODYsIDQxNzIyLCAwLCA1MTcyLCAwLCAKKyAgICA5ODMyODAsIDQxNTksIDk4MzU2MiwgMCwgOTgxNSwgNjM4ODQsIDE5OTM0LCA2Mzg4MiwgNDExOTgsIDg1NTUsIDYzODc4LCAKKyAgICA2Mzg3NywgNDI0NjAsIDYwNTAsIDQyNzA4LCA2Mzg4MSwgNjM4NzIsIDEyMDk0MSwgNDI0MjEsIDEyOTMzNSwgNDE3MjMsIAorICAgIDYzODc1LCA2Mzg3NCwgMTE0NjAsIDc0MzIsIDE5MTMsIDQxOTEzLCA2Mzg1MiwgNjY4NjksIDEyODk3MSwgNDIzNDgsIAorICAgIDczODkyLCA2NzUyLCA0NDYsIDQxOTExLCAxMjc5MDEsIDYzODUxLCA2Mzg1MCwgNDE5MTAsIDEyODYzNywgNjM4NDYsIAorICAgIDI5NzIsIDEyOTMyLCA3MjYyLCA2OTk2OCwgNjM4NDksIDQxMzg0LCA2Mzg0NywgMTEzNzQ5LCA2NTcwLCA4MzAyLCA3MjU5LCAKKyAgICA2Mzg0MiwgNDE3OCwgMTA3NDYsIDcyNTAsIDEzMjE0LCAxMDA0MSwgODEwNSwgNjM4OTIsIDEyNzc4MCwgNjk5NjksIDExMDUsIAorICAgIDQxODAsIDEyNzc4NiwgMTIwOTQsIDk0OTcsIDEyODM5NiwgNjM4OTEsIDYzODkwLCA2Mzg4OSwgNjM4ODgsIDU1MzgsIAorICAgIDk5ODcsIDAsIDkyNzM5LCAxNjc4LCAxMzI3NCwgNTUyLCAxMTg4MzQsIDQ0MDEwLCAxMDc4NSwgMCwgMTExOTIsIDQ1NTcsIAorICAgIDc0NDU5LCA5MTU5LCAxMDE3MSwgMTMxMjUsIDYzODYwLCA1NTQwLCA2Mzg1OCwgNjM4NjUsIDI4MSwgMTMyNDIsIDYzODYyLCAKKyAgICA3NDE1NCwgMTI4Mzg3LCA1NTM2LCA2NTU2OCwgOTU3NCwgMTM4OCwgNzE5MDIsIDk4MzkxNSwgMTA3NywgMTk1MDAwLCAKKyAgICA2NTA5OSwgMTE1MzEsIDU4MzQsIDAsIDkxNzU0OSwgOTE3Nzg5LCAwLCA0Mjc3MywgMTIxMzMxLCAwLCAwLCAxMTkyMjAsIAorICAgIDEyMDkxMiwgMzY2MywgMTI3MDI3LCAxMTEyLCA3MDMzNSwgODY4NiwgMTI2NjExLCA1MzM0LCA2NTA4MSwgNDMyNDksIAorICAgIDc0Nzc4LCAxMjc5NjgsIDExMDc3LCA5MjUxNSwgNjUwOSwgMTIwMTE3LCA1MzI3LCA3ODc3NiwgMTk5MDcsIDYzODY5LCAKKyAgICAzNDc4LCA3NTgzLCA3Njc5LCAyOTAzLCAwLCAzMDAxLCAxMTU4LCA4NzQ1LCA0Mzc0NiwgNzM3NDgsIDYzODY2LCA3ODYyNiwgCisgICAgMTkxNSwgNDg0NiwgNjc3NTUsIDY2MzcxLCAxMTg5ODQsIDQyMTA1LCAyOTkwLCAxMjAxMjgsIDgwNSwgNjkyMzgsIDY0NDM4LCAKKyAgICAxMjA3MCwgODc2MCwgMTExNywgMTEzNzUwLCAxMjIxMiwgMTIwMTIzLCA2NTE3NCwgNDIzNTcsIDYzODM1LCA2MzgzNCwgCisgICAgOTgzNTkyLCA3ODI0MCwgMTIyMjUsIDYzODM4LCA2MzgzNywgMTAwNDU4LCA3MDE3MywgNjM4MzMsIDYwNDIsIDY2MzYwLCAKKyAgICA4MDgzLCAxMjgxNjYsIDk4MzczMywgNjM4MjEsIDYzODIwLCA2MzgxOSwgNjM4MTgsIDk4MzMzMiwgNTIyNywgOTA0NywgCisgICAgNjM4MjIsIDc0Nzk3LCA2MDkxLCA5ODMzMjIsIDEwNjkxLCA1NjAsIDU2NDMsIDgyMjYsIDExOTU3OCwgNjM4MTIsIDYzODExLCAKKyAgICA2MzgxMCwgNjM4MDksIDIyODksIDYzODE1LCA2MzgxNCwgNjM4MTMsIDYwNDcsIDE1OTcsIDc4ODc2LCA3ODAsIDIwNiwgCisgICAgNzAxMjYsIDQ5MzYsIDY1MTQ3LCA4MTY4LCA2MzkzMCwgMjA3NiwgMTA5MywgOTg4MiwgNjM5MzQsIDIwODIsIDYzOTMyLCAKKyAgICA3NTA1MCwgNjM5MjksIDM1NDYsIDE2MDUsIDY2ODExLCA5ODA2LCA0MzQ3MiwgNzc5MzMsIDg0MDAsIDExMzQzLCAyMDg2LCAKKyAgICAwLCA2MzkyNiwgMjk4NCwgNTk2OCwgOTI4NywgNzI3OTEsIDQ2MTgsIDQyMjA5LCAxMTEzNywgMTMxNjksIDUyOTAsIDIwODksIAorICAgIDE2OTUsIDEwNzQzLCAxMDg4LCA2MzgyNSwgNzI2OCwgMTA4NCwgMTA4NSwgNjM4MjksIDEwODMsIDEwMTMxLCA3MjgzLCAKKyAgICAxMjAxMDksIDYzOTcwLCAxMjExNjUsIDEwOTIsIDQ3NTQsIDcyNzMsIDUyNTIsIDQ0MDE2LCA0MzYyNywgMTI3OTIxLCAKKyAgICAxMjg5MjAsIDc0MDgsIDExODA5LCA4MzIyMCwgMTIxMTgxLCAxOTQ3MTYsIDI5NjUsIDcyNTgsIDg4MDgsIDY2NTcyLCAKKyAgICAxMDg5LCA0MTg3LCA2MzkzNywgNDIxMTksIDQyMTIwLCAxMTEwNiwgOTQwLCA1Nzg3LCAxMDA5OSwgNjM5MzgsIDk4Mzg0OSwgCisgICAgNzQ0OTQsIDEyNDYzLCAyOTk0LCAxMjUxMzYsIDExODgyNywgNjg1MjIsIDk2NjQsIDcwODM0LCA3Nzk0MCwgNjc4OTIsIAorICAgIDc3OTM4LCA3NDM0MywgNjczNzAsIDcyNzE0LCA2NjAsIDEwMTI3LCA2NjYsIDkwMjIsIDU1MzIsIDQzNjY3LCA1NTMzLCAKKyAgICAxMjU4MCwgNzg1MDcsIDYxMTgsIDIyMiwgOTc5LCAzODg0LCA5ODMzMTksIDcyNzA2LCA4MzIyNywgNjUwMiwgOTgzNzYyLCAKKyAgICAxMTA4NSwgMTIxMjYxLCA2Mzk1MSwgMTI0NjUsIDkxNzg2MiwgMCwgMTI4NzgyLCA2Mzk0NiwgMTcwNywgNjM5MjQsIAorICAgIDEyNDYxLCA2Mzk1MCwgNjM4OTcsIDYzOTQ4LCA2Mzk0NywgNjM5NDUsIDYwMzgsIDYzOTQzLCA2Mzk0MiwgNjQ2ODUsIAorICAgIDYzODk1LCA2NTgzOCwgMjI3NiwgNzc3NiwgOTQwNzYsIDEyMTA4NiwgOTI0NjQsIDY2NzkyLCA2OTczMCwgODAxLCA0MzE2NSwgCisgICAgMTY5MCwgNjM5MTksIDYzOTE4LCA2MzkxNywgMTMyNzcsIDQzNjU5LCAxMjk1MSwgMTIwNjM4LCA5OTA2LCAyMDU0LCAyMzM0LCAKKyAgICA2NjgwMCwgNjM5MTYsIDU0ODMsIDYzOTE0LCA2OTczNywgNjM5MTEsIDU0ODQsIDYzOTA5LCA2MzkwOCwgMjUzOSwgCisgICAgMTIwMTAyLCA0Mzk4MCwgNTQ4NSwgMTk0ODczLCA0MjY5NywgOTA2MSwgNTUzNCwgMTA2NzIsIDQ1MDIsIDY4MDU3LCAyNTMsIAorICAgIDAsIDY4MjA4LCAxMjA0MzksIDkyMDMsIDc0MjMxLCAxMDA3MDgsIDExNTMwLCA2ODYzNCwgNjg2NjgsIDEyMTI0MiwgCisgICAgMTExMjcsIDAsIDEwNDc0LCA0MzQyNiwgMTMyNTcsIDQyMzU0LCAxMjgwOTksIDEyMDEwNiwgNzAwNDQsIDEyNzExMCwgCisgICAgNjY4MDgsIDg0MTMsIDY2ODQxLCAwLCA1NjkzLCA3MjcyLCAxMjkzMDcsIDEzMjA5LCA2NDQ3MCwgNjU4MzEsIDc0MzUwLCAKKyAgICAxOTUwNjMsIDAsIDAsIDAsIDExMzY2NSwgMTIwMDk3LCAxMjc5NjAsIDk0MDc4LCA2Njg0MCwgMTI3MTY1LCA2NjYwOCwgCisgICAgMzExMSwgNDE4NjMsIDg4MDQsIDQyOTEzLCA3ODM0NywgNzI3MCwgMCwgNjY2MDYsIDY2MjgsIDEwNzYsIDc0MzMsIDE0MzYsIAorICAgIDczODQ0LCA1NTIyNiwgMTI4MzUzLCA2Mzk4MiwgNzM5MywgMTI4MDcsIDQzNDEzLCA2MzkwNiwgMTU5OCwgNjM5MDQsIAorICAgIDcxMTg3LCA3MDM5MywgNDE3MjksIDQ0MjMsIDEzMDcsIDExMzY5MiwgMTA1MTUsIDQxNTg5LCAxMjg2OTgsIDEyODkxOCwgCisgICAgNjIxOCwgOTI5MTcsIDE0MzAsIDAsIDEwMDcwMCwgMTIwNjA2LCA3ODc1NCwgNTQxMywgNzYxOSwgMzI1NSwgMzQ5MywgCisgICAgNzQwMzIsIDExNTQ5LCAxMDczNSwgNDE3NDMsIDczOTM3LCA2ODAxLCAxMDA3NDMsIDQ1MTgsIDEwOTkwLCA2NTA3MywgCisgICAgNTE2NywgNDQ4MSwgMzc3MSwgNjcwOTMsIDI3MTAsIDkxNzg0NywgNjYyNzcsIDQxNzI0LCA2NzcxNiwgNDMwNzMsIDQxNjkwLCAKKyAgICAxMjQ3OSwgOTgzNjM1LCA4MzgwLCAxMjEwNzEsIDcxODUyLCA3MDA0NiwgMTYyOCwgMTIxMjI5LCAxMjg4MTcsIDEyOTA2NywgCisgICAgNjUyNjIsIDYzMzMsIDEwNzgzLCAxMTE3MiwgMTIxNDczLCA2Mzg1NSwgNzA4NDAsIDExMzY3OSwgMCwgNTMzOSwgNzQzMjMsIAorICAgIDEyMDk0NiwgMTMwMDQsIDY2ODQzLCA0NDU3LCAxMDA5MDEsIDEyNzc1NiwgMTk0ODE4LCAxMjcxMTYsIDU2ODQsIDg2NzgsIAorICAgIDEwOTE0LCA0MzYzMiwgNTY4OSwgNjU4MDcsIDcwODE0LCA2ODQ2NCwgMTI2MzMsIDEyODcwLCA2OTcwNSwgNjUxODMsIAorICAgIDU2ODgsIDExOTI2LCA2MDMzLCA2MzEwLCA1Njg2LCAxMTkwNzYsIDc0MjUxLCAxMjg5MDgsIDEyMDY0NywgMTI4OTMwLCA1MCwgCisgICAgMTA1NTgsIDk4NzEsIDQyNjEyLCA0MzY1NSwgNzQ0MDMsIDk4MzgxOCwgNzQyODQsIDY2NDY4LCA2NjkwNSwgMTMyNTksIAorICAgIDQ0NDgsIDExOTE1MCwgMTIxNDA2LCA4MzM0OSwgNzAwNDMsIDEzMjEsIDEwMDk4NywgMTA2NDAsIDExNTM5LCAxMTUxLCAKKyAgICAxMjExODYsIDkxNzYwNywgMTI0OTU4LCAxMjcwNzksIDcxMTA2LCAxMTg5NDksIDAsIDk4MzkyMCwgOTgzMDc1LCAxMjUwMSwgCisgICAgNjQ2MDQsIDEyODY1NywgMTE1MjcsIDExODg3MCwgODgxMiwgMTI1MTQxLCAxMTUzOCwgODY3MywgMTI2NTAsIDExMDIwLCAwLCAKKyAgICA2NjQ2NywgMjEwNSwgODA4NywgNzI3MTIsIDY5NjMyLCA5ODk0LCAxMjcxMzcsIDEyNzg1NiwgNjk5OTUsIDQ2MzYsIAorICAgIDU1MjYyLCA3ODUxMywgNDUxNSwgMjM4MiwgMCwgMTI3MDU1LCA5ODM2OTUsIDExMzc4MCwgOTgzNDU2LCAxMTg5NjgsIAorICAgIDEyMjc3LCAxMjEyMzksIDExOTk1LCA5MjU1MywgMTIwNjc1LCAxMjE1OCwgNzAxNzAsIDg3NDEsIDEwMTk3LCA2ODc4MCwgCisgICAgOTI0MjYsIDExOTYxMCwgNjUzMSwgODMwNTEsIDEyNzg0NiwgNDczLCA0MzQxNSwgOTI5MzYsIDEyNDk0OSwgMTg3MywgCisgICAgMTA4NywgMTI0OTY2LCA3MTI3NSwgNzQyODAsIDc4NTI3LCA2NjQzOSwgNDMyMTgsIDk4MzEyMywgMTI3NzkyLCA3MjM3LCAKKyAgICAxMjUwNCwgNzExMTMsIDEyNjU1OSwgMTI4NzQ4LCAxMjA4ODcsIDk0ODksIDEyMDA2OSwgNzA4NDMsIDQzODQsIDc0MjIwLCAKKyAgICA2Mzg0NSwgMjA1OCwgNjk3NDEsIDEzMjk1LCA0MzE5MSwgMTI4MDMwLCAxMjg1NzEsIDExNTQsIDM4NTcsIDEyMDUsIAorICAgIDEyODk1NSwgMCwgNjA1NSwgMTI5NTgsIDEyMDcwNiwgNzQxNjgsIDEyODM4OCwgNzA4NDYsIDQ0MjEsIDEwNTkyLCAwLCAKKyAgICA0OTUsIDY2NDAwLCA0MTcxMiwgNzk4MywgNzA4MzMsIDkzOTk3LCA3MDY5NiwgNjM0NywgNzg3MTUsIDc2NTQsIDQxNzEwLCAKKyAgICA0MTk2LCAxOTQ3MDQsIDQzNywgNDE3MDksIDczNzcyLCA3MDgzMiwgMCwgOTQ2NSwgMTMyOTAsIDExOTE4MCwgNDk5NywgCisgICAgNjQzMDYsIDEyMTMwOSwgMCwgNDk5OSwgMTk0NjQyLCA2NzQwMSwgMTI2NTgyLCA0NzExLCAxMjA3NjksIDEwMDQ2OSwgCisgICAgMjczOSwgMCwgODA0NCwgNzQzMTMsIDEyODIzMCwgNDE3ODksIDEyODE0MiwgMTA4MDksIDY2Mjc5LCAxMjg3NDAsIDAsIAorICAgIDE3NzksIDY2MDAsIDY2MDEsIDQxNTQzLCA1MzI1LCA2NDIsIDY0MTg3LCAxMzA1OCwgMTIwNDQ5LCAxMjg3NSwgOTgzODA0LCAKKyAgICA5MjE4NiwgMTMyMjksIDcxODQ1LCAxMDU3NSwgNDMzOTksIDEwMDQ2NywgMCwgNDE3OTEsIDExMDQsIDEyNzkyMiwgCisgICAgOTgzNzI1LCAxMDY1NSwgOTgzMzM0LCA5ODM1NjEsIDEyMDE2NCwgNjM5NjAsIDEwODIsIDEyMTAyNCwgODQyOCwgNjU2OSwgCisgICAgMTI4NDI5LCAwLCA3ODUzNCwgNjk4NDksIDY3ODMsIDE5NDY3MSwgMTI5OTMsIDgwNDksIDQxNTQ4LCA0NDAyMSwgNjQ1OCwgCisgICAgNjQ3MjgsIDEyODg4MiwgNDc2MSwgNjM4MjgsIDQ3NjYsIDY0NjIzLCAxMjczLCA0MzQwNywgMTIwNjc3LCAxMTg4NzYsIAorICAgIDE5NTA0NSwgNjkxMiwgMTMxMywgNjMyMiwgMTA0ODMsIDEyODYyNywgNDE1NDUsIDEyNjQ2NSwgOTI0NDksIDEyNTIwOSwgCisgICAgMTEyMTYsIDEyMTMwNywgMTk0ODUxLCA3ODYyNCwgMzQ4NCwgNzQzMzcsIDAsIDk4MzIyNSwgODUwMywgNTEyMiwgNDE1MjcsIAorICAgIDcxOTEwLCA2NjMyMCwgNzAxNjEsIDc0OTA3LCAxOTQ4NTYsIDAsIDQxNTM3LCA2NjQ1MywgODMwMywgODI4MiwgMTE4MTcsIAorICAgIDczODU3LCAxMDAwMywgNzM4NTksIDY1OTA0LCA3MzYzLCAxNjg2LCAxMjI5MjAsIDcwMTE1LCAxMTQ2NywgMzY2NCwgCisgICAgNjU5MjEsIDY0Mjk5LCAxMjQ5MzksIDEyODQ2MiwgMTI4MDAxLCA0MzI0LCAxMjYsIDQyMjQ2LCA3NTAzMCwgNjk5ODQsIAorICAgIDY3NzI1LCA2NTkyNiwgNzc0NCwgNjg4NTksIDc0Mjc3LCA2NjI4MywgNzgwNTIsIDQzODE3LCA2OTY2LCA0MzgyMiwgODEzNiwgCisgICAgMCwgNjU2MDAsIDE2MzMsIDEyODMwMSwgMTI2NjE0LCA0NzYyLCAxMTAzLCA3MDgyNywgNzAxNTcsIDQ3NjUsIDk4MzQ5NCwgCisgICAgMTMwNzgsIDk4MzI3MCwgNDc2MCwgNjM4MjcsIDIwNTAsIDEwODcxLCA0MzE5OSwgMTEwMiwgMTk0NjUyLCA2NTU1LCAKKyAgICAxMjg4NjcsIDEyNzA3MiwgMTE1NDYsIDc0Nzk0LCAzMzcsIDEyMTE5NiwgNDI1OTEsIDg2MjcsIDEyMjc5LCAxMTExLCAKKyAgICA5ODM4NTYsIDc1MDQ3LCA0NzA3LCA2ODIwNiwgMTAxNDMsIDc4ODMsIDEyMTQ0NCwgNzg4MCwgNDUyMiwgODY0NSwgNTcwNCwgCisgICAgMTMwMTAsIDY5Nzk2LCA4MzA0LCA5Mjk4MiwgMTk0Njg4LCAxMTk1NzUsIDIyOTMsIDcwMTk1LCA2NjY1NCwgMTI5MDc3LCAKKyAgICA5MjY3NiwgMCwgMTMwMDgsIDEyMTE5NCwgNDM4NSwgMTAwNDYyLCAxMzAxMSwgMTI1MDA0LCA5MjU2OSwgMTE5MTYxLCAKKyAgICAxMzAwOSwgMTYwLCAyNjc3LCA3MDM4OCwgMTI3Nzg1LCA0MTc5MywgNjU3NjMsIDc0MjIxLCA3MDc5MCwgNDE3OTIsIAorICAgIDQyNzcwLCA5NDA1NCwgNjU3NjIsIDExODgyOSwgNDM4MjEsIDU3MDksIDEyNTIyMiwgNzEwNzYsIDQzODE2LCA5ODMwODcsIAorICAgIDE5NTAwNSwgMTA3OSwgMzg2NywgNTcwOCwgMCwgMCwgNDM3OTcsIDU3MDYsIDY0NzY4LCA1NzA1LCA4NzkxLCA0MDA1LCAKKyAgICAxMjEwOTEsIDEwMjM3LCAxMDk5MSwgMTI4ODE2LCA0MzQ1OSwgOTE3MywgMTIxMTUyLCAxMjEyMTksIDEzMTcwLCAxMjU0MCwgCisgICAgMTI1MjMzLCA0MjYwNSwgMTIwNzY1LCAxMjY2MTcsIDY4NjQ3LCA5MTc1NzIsIDEwMDU4LCA2ODA1OCwgNzQ4NjcsIDY3NzMwLCAKKyAgICAxMjcwNzgsIDMzMzksIDExNDQ4LCAxMTA2LCA5MTc1OTEsIDkxNzU0MCwgMTI4MzExLCAzMzQwLCA3NDAxNywgOTE3NTg2LCAKKyAgICAxMjA5OTQsIDEyOTE0MSwgOTI5NzksIDEwNjA1LCAxMzA5LCA2Mzk2NiwgMTIwNzQzLCAxNzU0LCA5MjIyNiwgMTMyNDYsIAorICAgIDg2NCwgOTE3NTgyLCAxMTg5MjYsIDg5NzIsIDEwMDQ0NCwgNzg0OSwgMTIwMDkyLCA4MzEzMCwgMTMyNDAsIDE5NTA2OCwgCisgICAgNTE5MiwgNDMzOCwgNjc5ODIsIDEwOTQ4LCA2NjgyNSwgMTMxOTksIDkyNTc1LCAxMjM2LCAxMzIwOCwgMTMyNjEsIDEzMTg5LCAKKyAgICAxMzE4OCwgOTM5OTMsIDcxODQ3LCA3NDQwLCAwLCAxMjAxNTMsIDk1NTMsIDE1OTAsIDYzNzc3LCA2Mzc3NiwgMTMxNzgsIAorICAgIDYzNzgyLCA2Mzc4MSwgNjM3ODAsIDYzNzc5LCAxNTgzLCAxMTk5MjMsIDEzMjYwLCA0NTUwLCAxMjA1OTgsIDY0MjA1LCAKKyAgICAxMjkxMDcsIDcxMDcxLCA0MTUyMiwgNDE1MjMsIDY4NTIzLCAxMjkxMDgsIDY2NzU5LCAxMTM1NCwgOTQwNzEsIDAsIAorICAgIDQyNzk1LCAxMjgwNjEsIDExOTE5NSwgMTEzOTQsIDE5NDY0NiwgMTMyMzYsIDEzMjcyLCAxMzE5NCwgMTMzNCwgNjk5MjYsIAorICAgIDQ0NzksIDExNzgsIDY1NTg2LCA2ODMxMSwgNjY2ODEsIDExOTE5MywgNDYwMSwgMCwgMTI3ODg1LCAxOTUwMzgsIDY2ODI4LCAKKyAgICAxMjg5NzIsIDEyNzgzOSwgNzQ1ODAsIDY4MDksIDYzNzg2LCA2MDMxLCA2NzQwMiwgNjM3OTEsIDYzNzkwLCAxMTQ1LCAKKyAgICA2Mzc4OCwgNzkxMCwgNjM3ODUsIDQzMTUzLCA3NTQsIDEwMTkyLCAxMzEwNSwgODE4MywgMTIwNzQxLCAyMDM3LCAxMjUxMjIsIAorICAgIDY0NzEwLCAxMDc0NywgMTI1LCAxMjA4MDMsIDY0ODkwLCA2NjgwNSwgMTI3Mzc2LCAwLCA0MTcxOSwgNjM3NTgsIDM1MjMsIAorICAgIDEwNzQsIDEzMjU4LCA5NTM2LCA3MTA1NiwgMCwgNDQyNywgNzQyNDIsIDYzNzU3LCA0MzE0NSwgMTIyMTcsIDYzNzU0LCAKKyAgICA0MTUzMiwgMTM0OSwgNjM3NTAsIDYzNzQ5LCAxMjkwMjUsIDEyODc3MywgMTAxMDE0LCA2Mzc1MywgNjM4MDIsIDQxMDg0LCAKKyAgICA3Mjc4NCwgNjgxMzMsIDQxOTMwLCA2MzgwNSwgNjM4MDQsIDExMTQwLCA2MzgwMSwgNDEwODIsIDgxNDAsIDYzNzk4LCAKKyAgICA2MjYwLCA3ODgyNiwgMTI4MzkxLCA2Njc2NSwgMTE0MzksIDExOTg4LCAzODk4LCA5MjI0NiwgMTAyMDEsIDEyMjM4LCAKKyAgICA2Mzc5NSwgNDIxOTQsIDEwMzY3LCAxMjUyMSwgMTA0MzEsIDQyMTE0LCA0MTkzMiwgMTA2OCwgMCwgMTI1MjMsIDEyOTQ1LCAKKyAgICA5ODMzMzEsIDQyMjAzLCA3OTUwLCAzMTI0LCA2Mzc3MSwgNDI3ODcsIDQzODYsIDExMTQ4LCA2OTczLCAyNzkzLCAxMjQ3NSwgCisgICAgMTI1MjQxLCA3NTA1NiwgNjM3NjksIDk1MzAsIDEyMTI0OCwgMTIyMzIsIDEzMTM1LCA4NTk2LCA1NjgxLCA2Mzc2MiwgCisgICAgNDU5NSwgNjM3NjAsIDc5MiwgMTEzNjc0LCA2NDgwMywgMTAwNTEyLCA4NzQyLCAxOTUwMjksIDExMDUzLCAxMjg3OTYsIAorICAgIDYzNzQ0LCAxMjgxMDcsIDEyODk0MiwgNzU4OCwgNjM3NDgsIDE2OTMsIDYzNzQ2LCA0MzIwNCwgNTA1NSwgNjg0MjYsIAorICAgIDQyMDYzLCAxMDkwLCA2ODgwMywgMTIwNzc4LCAxMTY2NSwgNzQxMzMsIDQ1NTgsIDY1Njg1LCA5NTIzLCAxOTUwNTMsIAorICAgIDYzODU3LCA3MTIxNiwgMTE1MTMsIDAsIDYxNTcsIDYzNzc1LCA2Mzc3NCwgNjM3NzMsIDEzMTkxLCAxMjE3MCwgMzUwMCwgCisgICAgMzEzOSwgNjgwNzEsIDMxNzAsIDEyNDg1LCA0Mzg5MSwgMTA4NzIsIDQzODkyLCAxMzAwNiwgNDM5MzMsIDEyMDA3NCwgCisgICAgMTAwNjUwLCA5NDEsIDAsIDEyOTA3OSwgMTIwOTY3LCA2NTU0MSwgMTEwNjMsIDk4MzE5OCwgODIyOCwgNzM5ODgsIDQyMDY1LCAKKyAgICAxMjI4OTMsIDQzODg5LCA5NDAzOSwgMTI3MDQxLCA5MjQ1NSwgNzM4NiwgMCwgNjQ0NDQsIDcwMjk1LCAxMTk4NjMsIAorICAgIDQzNjAzLCA5NDA3NSwgNjUzOTcsIDI4OCwgODM0MDksIDAsIDAsIDEwMDI1LCA2OTkxNSwgMjkxOCwgNjY4MjAsIDY1MzAwLCAKKyAgICAxMTk4NzEsIDk4ODMsIDY0NzI2LCAyNzkwLCA2NTM5NSwgMzc5MywgOTgzNjIwLCAxMjc4MjksIDY1MzkzLCAxMjA1OTIsIAorICAgIDc0MTM4LCA4MzUwNSwgOTI3NTEsIDc1MDE5LCA3NDEzOSwgNzg3NzcsIDY1Mzk0LCAxMTU0OCwgNTI3MCwgMTI4MTQ5LCAKKyAgICA2NTM5NiwgNzQ5OTgsIDY1ODEzLCAxMzI1NiwgMTI4MiwgMTIwNzcxLCA3NTAxMiwgMTIwMTU3LCAxMDg4OCwgMTIwOTM0LCAKKyAgICA2NTI0MiwgMCwgMzMzMCwgMTI5NDE3LCAwLCA2ODM0MCwgMTI0OTMxLCA5ODM2MDUsIDcxMjAyLCAzMzA0LCA0Mjc1MywgCisgICAgOTI1ODgsIDcwMjk4LCA3NDY0MywgMTYyNywgMTI5MTIwLCAxMjc3NjUsIDE5NDczNSwgNTM3MSwgMTMxMTYsIDk4Mzc3NywgCisgICAgMTgyNiwgMTE4Nzk0LCA5ODM0OTcsIDQzMDk0LCA3MDAyMywgNDM2NTAsIDk0MDM3LCA2ODMxNywgOTAzNSwgMTExNDEsIAorICAgIDkxNzk3NywgMTI4MDA1LCAwLCA3MjczMywgNjgxMjUsIDc0ODk4LCAxNjQsIDY4MzA5LCA5NDA2NywgOTQwMDAsIDY5NTgsIAorICAgIDEwMDYzNCwgNDMxMTYsIDY3NzE5LCA3MDAxOSwgMTMyNDUsIDEwMDYzNywgNjg4MDgsIDY2ODE4LCAxMjgwMDksIDcwMDMxLCAKKyAgICAxMTA5OSwgMTI2NjYsIDEzMTc1LCAxMzIwNywgMTIwNDE0LCA2NjAxNCwgMTIwNDI4LCA3NDQ3LCA1OTI5LCA5ODM0NzMsIAorICAgIDY1NTA5LCAxMjkxOTIsIDc0NDksIDExMzA2LCAwLCA3MzkyMCwgMzE4MCwgMTI1MTAyLCA2MzgwOCwgOTA1NCwgOTcxLCAKKyAgICAxMzA2MiwgNzEwOTAsIDAsIDY1MTk1LCAxMDE2NCwgOTIyNTIsIDc0NDI4LCA5ODMzMjEsIDc4MTQ2LCA5MjYxMSwgMCwgCisgICAgNzAyMDQsIDEyNTEyOSwgMTAwNDUsIDEyODgyLCAxMzI3NSwgMjMwMywgMTEwNTcsIDEyNDk5NCwgMTMyNzYsIDEyNTEzMywgCisgICAgNDE1MjUsIDc4MTUwLCA3MjcxLCAxMTQ0NCwgMTI2NDc5LCAxMjc5MDQsIDExOTA5MSwgMTIyMjksIDExNjgwLCA5Mjk1NiwgCisgICAgNDM0MTEsIDczNzUxLCAwLCA2NDgxMywgMTk1MDg5LCA5ODM0OTUsIDEwNDc2LCAzODU4LCA2NDE3NSwgMzkzMiwgNjQ5NTgsIAorICAgIDEyMDQzMiwgOTgzNjc4LCA3Mzk4OSwgNjgxOTIsIDAsIDY5ODQ3LCAzNjksIDc0OTA4LCA0MTc4NCwgMTE5MTc1LCA2NDE2MywgCisgICAgNzc5OTcsIDcyNzA3LCA5MjY0NSwgNjU0NzQsIDQ3OTYsIDEyMjkyLCAxMjY1OTUsIDY1NDc5LCAxMjg2MzEsIDQxNzgxLCAKKyAgICAxMDQ4NiwgNDE0ODAsIDQzMDAyLCA5ODk5LCA5MjYwOCwgOTgzODcwLCA0MDQsIDEyODIxLCAzNzQxLCAwLCA1Nzg4LCAKKyAgICA4MDkyLCA2ODIxMiwgNDEyMjIsIDE4MzEsIDY2MDIwLCAzOTgyLCAwLCA0Mzg4LCAxOTQ5MTMsIDc0NiwgMTE4ODI2LCAKKyAgICA3NDc4MywgMCwgMTIwMTgsIDY1Mjk0LCAxMjQ5NDYsIDE5NDkyNSwgNjg4MzUsIDk4MzQ4OCwgNDQyMiwgNDcwOCwgMzc5OSwgCisgICAgNzQyOTIsIDExOTM1NywgMTIxMTQ2LCA3NDQzMCwgMCwgMTE3MDAsIDQzNzQsIDEyMDM3NywgMTIxMTUxLCAxMzY0LCAKKyAgICA5ODMzMTcsIDgwMzgsIDEyMDg4MywgOTE3NTk3LCAxMjg2OCwgNjk4MTQsIDcwNDI1LCA2NzM1LCA3Mzk3OSwgMTMxNzQsIAogICAgIDczOTY4LCAxMzIyNSwgMTk0OTAyLCA2OTgwOCwgNjU4MzUsIDAsIDIzNjUsIDc4NDEsIDcxNDc2LCA0Mjg1NSwgMTE4ODU2LCAKLSAgICA0Mjg2NiwgMCwgMCwgMTI3OTg2LCA2NjQzOCwgNDE3ODUsIDEyNjE3LCA2NDE3MiwgMTMxNzMsIDQzNzIsIDExOTM1NCwgCi0gICAgOTgzOTIwLCA5ODM1NjgsIDEyODg3MSwgMTI3ODIxLCA2NzY4NSwgMTI4MDYyLCAxMjk2NSwgMzg0LCA2NDUxMiwgMTA0MDQsIAotICAgIDEwMzQwLCAxMTkzNTIsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgOTgzMjQ1LCAKLSAgICAxMjExNDksIDQxMzczLCA2ODQ4NiwgMTIzMDMsIDEyODQ3NiwgMTMyMzIsIDEzMjMzLCAzNDksIDQ4NjMsIDQxMzcxLCAKLSAgICAxMTY1NiwgMCwgMTIwNzAzLCAxMTk4ODMsIDEyODYxLCA0Mzk4LCA4NTQzLCA2NTYxOCwgOTI3MzcsIDEwOTYsIDQzODUyLCAKLSAgICAxMjE0MzMsIDQyNjg4LCAxMjQ0MSwgMTIzNTUsIDExOTM0OCwgMTE5MzQ3LCA0MzE4LCAxMDQ1MiwgOTI5MDIsIDgwMzIsIAotICAgIDEzMjQzLCAxMzIzNywgMTI3MTksIDEyNjY0NiwgMTE5MTAxLCAxMjExNTYsIDY0ODg0LCA5MjkwOSwgMTE5MzQ1LCA4NTk3LCAKLSAgICA3MTEwMCwgMTI5MDYyLCA5ODY0LCAwLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCA0MTQ1MiwgNjQ5NjEsIDc3MjIsIAotICAgIDAsIDEwNDU5LCAxMTk4NzgsIDEyNDk0OSwgMTE5ODc5LCA2NjU5MCwgMTI4MTIzLCA0MTUzMywgNjYzMzcsIDEyODY2MywgCi0gICAgOTIxODQsIDAsIDQ5NjUsIDQzNDQ1LCA5MTc1MzYsIDY3ODU2LCAwLCA0MzYzOCwgNzg1MzYsIDEyMTE4NywgNjI2MSwgCi0gICAgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCAKLSAgICA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgMTIxMzk2LCAxMzE5MCwgMTMxODcsIAotICAgIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIDE2OTQsIDgyMTYsIDcxMzY5LCAKLSAgICA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDk4MzcyOCwgNDM1NDQsIDEyNjQ2NiwgMCwgNDE0NDQsIDY1NjIxLCA2OTk1NSwgCi0gICAgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMjAzMjIsIDEyMzE0LCA2NTYxNiwgNTIzOCwgCi0gICAgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCA4Mjg2LCAxMjg1MzcsIDM5MzYsIAotICAgIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAwLCA0Mzc5LCAxMzIzOSwgMTI2OTIsIAotICAgIDc5NjksIDEyNzI2NiwgNzIxOSwgNzE4NzUsIDEyODI1MSwgMTIwNTA5LCA5MjkwNywgNjYyMjQsIDczNCwgMjk3OSwgCi0gICAgMTIwMzAzLCA2NTYxOSwgOTg3MiwgOTU3LCA2NDkyMSwgMTg0NiwgNjY2MzEsIDQxNDc3LCAxMTkyNTYsIDcxMTkyLCAKLSAgICA3NDUxMSwgNDE3NzAsIDE2NzAsIDY0NDIsIDEyMDMxNywgNDI0NDYsIDUzNzksIDEyMDMxOCwgNDExNjMsIDc0ODMyLCAKLSAgICAxMTEzNiwgNzE4NzYsIDExNTA2LCAxMjgzOTUsIDQyODQxLCAxMzI2NywgMTI4NDIxLCAwLCA0MTc3NSwgMCwgNzEzMCwgCi0gICAgNDE3NzMsIDAsIDEwNjYzLCA3MDEzMCwgMCwgOTgzOTc0LCA2MTUxLCAxMjExMCwgNDI2NzMsIDY1NTcyLCA2NTI5MywgCi0gICAgNjUyNTAsIDEzMjY1LCAxMzI2NCwgNjQ1MTgsIDAsIDYxMDAsIDEyNzk2NCwgOTI2NDcsIDU4MDgsIDY1OTIyLCA2NzgxNCwgCi0gICAgMTI5NjcsIDY2MDQxLCA1NjEyLCA0NTgzLCA3MDAwNCwgNDMzODYsIDY4MDk3LCA2NDU3NSwgMTI2NjM3LCAxMTk2NSwgCi0gICAgMTk0OTMwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgCi0gICAgMTE5NjUxLCAxMjg1MTQsIDAsIDQxOTIxLCAxMTg4NTgsIDk3NTYsIDY5ODUsIDY2NDE4LCA2NjYyMSwgNzQyMTksIDY2NDEyLCAKLSAgICAxMjg4MjIsIDExODk5NywgODAxMiwgNTY3NCwgMTIzNTMsIDY2NDIxLCAxMjM2MSwgNTY3NywgNTU4OCwgOTIzNDgsIAotICAgIDQxOTI1LCAxMjgxMjQsIDQxOTIwLCA1NjczLCA4MzExMywgNTY3NiwgNDE5MjMsIDEyNjk0LCAxMTg5NzgsIDU2NzIsIAotICAgIDEyOTQsIDAsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAxMjA3MjUsIDQyNDM2LCAxMjE0MDAsIDEyMTE4MywgMCwgCi0gICAgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgCi0gICAgMTI5MDMyLCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDAsIAotICAgIDExOTU5MiwgNTc5MywgMCwgNTg2NiwgNTc5NywgNDEwMTEsIDU4NjUsIDkzMDA5LCA3OTU2LCA1OTgsIDAsIDY0NjQ5LCAKLSAgICA1ODA2LCA0MjM5OCwgMCwgOTAzNywgNTY3MSwgMTIwMDQxLCA5ODMyNTcsIDgzNDc4LCA5ODM5MjksIDgzMTg0LCAwLCA4NDcsIAotICAgIDEyODI0MiwgOTUyOSwgODMwMTgsIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIAotICAgIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAxMjAwMzksIDQyNjgzLCA3MTg0OCwgOTgzMDU1LCA3MTE0LCAxMjY1MjEsIDAsIAotICAgIDQzMTkwLCA2NTQ2MywgMTU1NCwgMCwgNDI2MTEsIDQyNTYzLCAwLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIAotICAgIDE5OTYzLCA1Njk4LCAxOTQ3NjgsIDk4MzI3MiwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCAKLSAgICA2ODE0MSwgODM3MiwgMCwgNjUxMTYsIDAsIDcwMzA0LCAxMDE3NSwgMTAzODgsIDQyNzk5LCA5NDEwMCwgNDEwMTMsIAotICAgIDEwNTY4LCAwLCA5ODM2MTgsIDI4NjksIDkxNzg0MywgNDEwMTUsIDc0NDczLCAyNzg1LCA0MzY2LCAwLCAxMDk1NCwgCi0gICAgNDE4MDIsIDk4MzY1MiwgNDI2MDgsIDc4NDY4LCA5ODg0LCA0NzU5LCA3Mzc2OCwgMTIwMjk2LCAxMDI2NiwgNDEzNTksIAotICAgIDExNzAsIDQzMzY1LCA2OTgxMCwgNzM5MDgsIDE2MDksIDkwMiwgOTI3NzMsIDYzOTM2LCA4MzI0NywgMTE2NjEsIDgxMjIsIAotICAgIDU4MTgsIDgzMjQ1LCAwLCAzODYxLCA5NTQwLCAxMTAyOCwgMjU1NCwgNTE1OCwgNTcxNCwgMjIxMywgOTgzOTY2LCAwLCAKLSAgICA4MDcsIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDk4MzMxOSwgNDEzNTYsIAotICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDk4MzI5MywgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAorICAgIDQyODY2LCAxMDEwNzcsIDAsIDEyNzk4NiwgNjY0MzgsIDQxNzg1LCAxMjYxNywgNjQxNzIsIDEzMTczLCA0MzcyLCAKKyAgICAxMTkzNTQsIDE5NDk0MCwgOTgzNTY4LCAxMjcyNTMsIDEyNzgyMSwgNjc2ODUsIDEyODA2MiwgMTI5NjUsIDM4NCwgNjQ1MTIsIAorICAgIDEwNDA0LCAxMDM0MCwgNDE0NzMsIDE1NTYsIDUyNzQsIDEzMjEwLCAxMjAxMjUsIDEwMDE3LCA5NzMzLCA0MTc4NywgCisgICAgOTgzMjQ1LCA3MDY4NCwgNDEzNzMsIDY4NDg2LCAxMjMwMywgMTI4NDc2LCAxMzIzMiwgMTMyMzMsIDM0OSwgNDg2MywgCisgICAgNDEzNzEsIDExNjU2LCA5ODM2OTEsIDEyMDcwMywgMTE5ODgzLCAxMjg2MSwgNDM5OCwgODU0MywgNjU2MTgsIDkyNzM3LCAKKyAgICAxMDk2LCA0Mzg1MiwgMTIxNDMzLCA0MjY4OCwgMTI0NDEsIDEyMzU1LCAxMTkzNDgsIDExOTM0NywgNDMxOCwgMTA0NTIsIAorICAgIDkyOTAyLCA4MDMyLCAxMzI0MywgMTMyMzcsIDEyNzE5LCAxMjY2NDYsIDExOTEwMSwgMTIxMTU2LCA2NDg4NCwgOTI5MDksIAorICAgIDExOTM0NSwgODU5NywgNzExMDAsIDEyNzU1OSwgOTg2NCwgOTgzOTQzLCAxMjA3ODUsIDExOTg3NCwgOTQxMDcsIDEzMTk1LCAKKyAgICA0MTQ1MiwgNjQ5NjEsIDc3MjIsIDAsIDEwNDU5LCAxMTk4NzgsIDcyODMwLCAxMTk4NzksIDY2NTkwLCAxMjgxMjMsIAorICAgIDQxNTMzLCA2NjMzNywgMTI4NjYzLCA5MjE4NCwgOTgzODYwLCA0OTY1LCA0MzQ0NSwgOTE3NTM2LCA2Nzg1NiwgMCwgCisgICAgNDM2MzgsIDc4NTM2LCA3MjcxOSwgNjI2MSwgMTE5MzQyLCA0MzE0NywgNjY1NzAsIDE5NTcsIDEwNDIwLCA5ODIsIDI3NTYsIAorICAgIDEzMjkyLCAxMzIwNiwgMTI1MDY0LCA5MTc3OTUsIDI5MjUsIDczODA5LCAxMzA1NiwgOTI5MTQsIDEzMjEyLCA0MzIzOCwgCisgICAgMTIxMzk2LCAxMzE5MCwgMTMxODcsIDkyNTQxLCAxMzE5OCwgMTE4NzkzLCAxMjEwODksIDUyNDIsIDExOTE3OSwgNjQ0NzYsIAorICAgIDE2OTQsIDgyMTYsIDcxMzY5LCA2NzcwLCA0MzMzMSwgMCwgNjU2MjAsIDE5NDYyOSwgNDM1NDQsIDEwMDQ0MSwgMCwgCisgICAgNDE0NDQsIDY1NjIxLCA2OTk1NSwgOTE5NywgNTI0NiwgMTE5MTA2LCAxMzE4NSwgOTcwOSwgMTIwMzIzLCAxMDA5MjQsIAorICAgIDEyMzE0LCA2NTYxNiwgNTIzOCwgNDM4MjUsIDcxMDg1LCAxMTkzMzcsIDUyMzYsIDQwOTc5LCA5ODMxNDAsIDcxODc0LCAKKyAgICA4Mjg2LCAxMjEyOTIsIDM5MzYsIDExOTMzMSwgMTE2OTksIDQxMzQ3LCA2OTczOSwgMTMyMzUsIDg4NDIsIDQxMjQ4LCAKKyAgICAxMDA0OTAsIDQzNzksIDEzMjM5LCAxMjY5MiwgNzk2OSwgMTI3MjY2LCA3MjE5LCA3MTg3NSwgMTI4MjUxLCAxMjA1MDksIAorICAgIDkyOTA3LCA2NjIyNCwgNzM0LCAyOTc5LCAxMjAzMDMsIDY1NjE5LCA5ODcyLCA5NTcsIDY0OTIxLCAxODQ2LCA2NjYzMSwgCisgICAgNDE0NzcsIDExOTI1NiwgNzExOTIsIDc0NTExLCA0MTc3MCwgMTY3MCwgNjQ0MiwgMTIwMzE3LCA0MjQ0NiwgNTM3OSwgCisgICAgMTIwMzE4LCA0MTE2MywgNzQ4MzIsIDExMTM2LCA3MTg3NiwgMTE1MDYsIDY1OTM0LCA0Mjg0MSwgMTMyNjcsIDEyODQyMSwgCisgICAgMTI0OTg4LCA0MTc3NSwgMCwgNzEzMCwgNDE3NzMsIDkxNzg4OCwgMTA2NjMsIDcwMTMwLCAxMjUyMjUsIDk4Mzk3NCwgCisgICAgNjE1MSwgMTIxMTAsIDQyNjczLCA2NTU3MiwgNjUyOTMsIDY1MjUwLCAxMzI2NSwgMTMyNjQsIDY0NTE4LCAwLCA2MTAwLCAKKyAgICAxMDA0OTMsIDkyNjQ3LCA1ODA4LCA2NTkyMiwgNjc4MTQsIDEyOTY3LCA2NjA0MSwgNTYxMiwgNDU4MywgNzAwMDQsIAorICAgIDQzMzg2LCA2ODA5NywgNjQ1NzUsIDEyNjYzNywgMTE5NjUsIDcwNzIwLCA2ODM1OCwgNzE0ODMsIDY5Nzg5LCA0MjY1MywgCisgICAgODMxODEsIDY4MTAyLCA5Njk4LCA3ODE0LCA3MTA0NSwgMTE5NjUxLCAxMjg1MTQsIDkxNzkxNSwgNDE5MjEsIDExODg1OCwgCisgICAgOTc1NiwgNjk4NSwgNjY0MTgsIDY2NjIxLCA3NDIxOSwgNjY0MTIsIDEyODgyMiwgNzA3MTgsIDgwMTIsIDU2NzQsIDEyMzUzLCAKKyAgICA2NjQyMSwgMTIzNjEsIDU2NzcsIDU1ODgsIDkyMzQ4LCA0MTkyNSwgMTI4MTI0LCA0MTkyMCwgNTY3MywgODMxMTMsIDU2NzYsIAorICAgIDQxOTIzLCAxMjY5NCwgMTE4OTc4LCA1NjcyLCAxMjk0LCAxMjA4NzgsIDc4MDU5LCA5ODM5NjIsIDQyNTExLCAxNzI3LCAKKyAgICAxMjA3MjUsIDQyNDM2LCAxMDA0OTcsIDEyMTE4MywgMCwgNzQyMjIsIDg3MTgsIDM1NTAsIDczNiwgMTAyNjgsIDQ1MDUsIAorICAgIDU4NzMsIDc0MDkwLCA1ODI2LCA1NTIzMiwgNTgxMywgMTIwMDg2LCA5Mjg4OSwgNTg0MSwgNTgzNywgNTUyMzQsIDE5NDg2NCwgCisgICAgMzEwNSwgMTI4MjksIDU4MzgsIDU3OTYsIDk4Mzg0MCwgMTE5NTkyLCA1NzkzLCAwLCA1ODY2LCA1Nzk3LCA0MTAxMSwgCisgICAgNTg2NSwgOTMwMDksIDc5NTYsIDU5OCwgOTgzMjYwLCA2NDY0OSwgNTgwNiwgNDIzOTgsIDAsIDkwMzcsIDU2NzEsIAorICAgIDEyMDA0MSwgOTgzMjU3LCA4MzQ3OCwgOTgzOTI5LCA3MTI2NiwgOTE3NjE4LCA4NDcsIDEyNTA2NSwgOTUyOSwgODMwMTgsIAorICAgIDY2NjU3LCA2OTgwLCA3ODQ4MywgNDM1MTAsIDc4MTIyLCA5MjIxOSwgMCwgNjc0MTEsIDc4NDg2LCA4MzAxNywgMTI3MjYwLCAKKyAgICAxMjAwMzksIDQyNjgzLCA3MTg0OCwgMTAxMDk1LCA3MTE0LCAxMjY1MjEsIDAsIDQzMTkwLCA2NTQ2MywgMTU1NCwgNzA2NTcsIAorICAgIDQyNjExLCA0MjU2MywgMTAxMDcxLCA1NjUxLCAyOTI5LCA2NzkyLCA0MzIwMSwgNzUwNTksIDE5OTYzLCA1Njk4LCAKKyAgICAxOTQ3NjgsIDEyMDczMCwgOTI5MzMsIDcxODg3LCA1NjQ0LCAxMDI5MiwgNjU1NDYsIDY5NzI3LCA2ODE0MSwgODM3MiwgCisgICAgMTAwODAwLCA2NTExNiwgMCwgNzAzMDQsIDEwMTc1LCAxMDM4OCwgNDI3OTksIDk0MTAwLCA0MTAxMywgMTA1NjgsIAorICAgIDkxNzU2NSwgMTI3NDAwLCAyODY5LCA5MTc4NDMsIDQxMDE1LCA3NDQ3MywgMjc4NSwgNDM2NiwgMCwgMTA5NTQsIDQxODAyLCAKKyAgICA5ODM2NTIsIDQyNjA4LCA3ODQ2OCwgOTg4NCwgNDc1OSwgNzM3NjgsIDEyMDI5NiwgMTAyNjYsIDQxMzU5LCAxMTcwLCAKKyAgICA0MzM2NSwgNjk4MTAsIDczOTA4LCAxNjA5LCA5MDIsIDkyNzczLCA2MzkzNiwgODMyNDcsIDExNjYxLCA4MTIyLCA1ODE4LCAKKyAgICA4MzI0NSwgMCwgMzg2MSwgOTU0MCwgMTEwMjgsIDI1NTQsIDUxNTgsIDU3MTQsIDIyMTMsIDk4Mzk2NiwgMTIxMDI4LCA4MDcsIAorICAgIDQzMDc5LCA3ODA5MiwgNzg0NzUsIDk3NiwgNTUxMSwgNjQ1NTMsIDEyMDg2MywgNDIxNTUsIDEyODk1MSwgNDEzNTYsIAorICAgIDc0MTEwLCAxMTg4MDEsIDcxMDQzLCAxMjAwODAsIDg2NzYsIDEwMDUxOSwgOTQwMDIsIDU1ODIsIDQ1MSwgNjM5NDEsIAogICAgIDU3OTgsIDkzNDksIDQyMDE4LCAxMjc4NTgsIDEyODUyMSwgNzg2ODEsIDQzNjA5LCA1OTA2LCAxMjA1NTMsIDE0NDAsIDAsIAotICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDYzNiwgMTIwMDc5LCAKLSAgICAxMjg3OTMsIDAsIDQzMzkzLCAxMDA5NCwgNzAxNjQsIDExNTI5LCAxMDg1NywgOTI5NDQsIDY2NDM2LCA2NTQ2LCA5MywgCi0gICAgODEwMiwgNjczMjMsIDY4NDA1LCAwLCAxOTQ3MTQsIDgxNzEsIDExODg4OCwgMTE5MDk3LCA4Mjk5NiwgOTE3NTQzLCAzODMsIAotICAgIDcxNTQsIDQxNjU2LCA0MzQ5NSwgOTQwNDAsIDY3MTYyLCA1MTg3LCA3MTI5NiwgNzEwODYsIDExMjg2LCA2ODYyMCwgCi0gICAgNjQyMTcsIDAsIDUyMzIsIDAsIDQxMDA5LCAxMjczNzcsIDQxMDA1LCA5ODM4MTAsIDAsIDEyODQ3MSwgODI5MiwgMTI1MTA4LCAKLSAgICA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgMTI3OTc0LCAKLSAgICAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgNDE5OCwgCi0gICAgNDI3MjUsIDAsIDY3NjU2LCA5OTk1LCAwLCA5MjU1MiwgMCwgMTI5MzEsIDEyMTExMCwgNDI2ODQsIDc0Mjg1LCAyMDg4LCAKLSAgICA2NDIxMywgNjQzNjYsIDY1MTU2LCA4ODE0LCA0MjIzOCwgNzQ3NzEsIDEyNzkyMCwgMTk0NzEzLCAxMjgzNiwgMCwgCi0gICAgMTEzODAwLCA3NDM0MiwgODU5MywgMCwgMCwgNjg0NDUsIDEzMjU1LCAxMjEzMzMsIDEyODg0MywgNzQ2NCwgMCwgNjU4NjUsIAotICAgIDAsIDE5NDY1MCwgMTI3MTQ0LCA5MjM5NSwgOTM0MiwgMTIwNDY0LCA3MDM3NiwgNjQ1MTYsIDAsIDc4NzkyLCAxMDEyOSwgCi0gICAgNDEwMDcsIDc0Mzc1LCA5ODM3MDEsIDQwOTk1LCAxMjIwOSwgNDEwMTIsIDgzNTAxLCAwLCA4MzI1NywgNjk3MjQsIDQwOTkyLCAKLSAgICA5MjI2NCwgMTE5MTM2LCA2ODY1MywgNDM1NTgsIDU1MjIsIDc1MDI2LCA2MSwgMTIwOTU5LCA3NDEwNSwgMzYzMywgCi0gICAgMTIwMDgyLCA2NTE2MiwgNDEyMzQsIDEyMDg5LCA3ODI4MSwgOTc3MSwgODMyODEsIDEzMjUxLCAxMjg3MDEsIDAsIDYyNjIsIAotICAgIDI3ODQsIDQyNzQzLCA3MTA3OCwgODEyNiwgNjY0ODMsIDAsIDAsIDQ0MSwgNDI2MjEsIDAsIDAsIDQxMDAyLCA0MDk5OSwgCi0gICAgMTE5NjIzLCA0MzI2NiwgNzEwOCwgMTk0Nzc5LCAxMDg5MCwgNzQ0ODEsIDY1ODM0LCA4MzI0LCAxMTg5NDQsIDY0NDE3LCAKLSAgICA3NDgxNywgMTI3NDY1LCA2NDczNywgNzQ4NTMsIDk4MzY1OSwgODkzMCwgNjY2NzgsIDY3MjE2LCAxMTkzLCAxMDA1NiwgCi0gICAgMTgwMCwgMTMyNTMsIDEzMjUyLCA3ODI5LCAxMjA5OTIsIDEyMTE3NSwgNzc0MywgODM1MDIsIDEyNDk5NiwgNzc5MDQsIAotICAgIDc3OTEzLCA3NzkwNSwgOTAzNCwgNjAzOSwgMTI5MTM5LCAxMDA3NSwgMCwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIAotICAgIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgMTI3NDcxLCAwLCAxMTc5MiwgNDMwNjQsIDQxMDI1LCAKLSAgICA5MTEsIDc1MzksIDAsIDQwOTYzLCAxMjAzMzksIDY1MTU5LCA2NDM5MCwgMCwgOTgzMTYwLCA1NTIwLCAxMTY2MiwgCi0gICAgMTI3NDczLCA2NTMzMCwgNDI4MTIsIDk4MzIxNSwgMCwgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIAotICAgIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgOTgzMTQ4LCAKLSAgICA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgCi0gICAgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgCi0gICAgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAxMDc3MywgNzA4NjgsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgCi0gICAgODUyMCwgMTMxNDYsIDEyNzA5NiwgNjM5MzEsIDgzMjc1LCA2NTkwMiwgMjg4MiwgODMzMzQsIDAsIDEyODQzLCA0NTIwLCAKLSAgICAxMjAzNDUsIDkyNDU5LCAwLCA5ODM2NjAsIDAsIDczODYwLCA4MzMzNSwgMCwgNjQzNDUsIDAsIDkyMDEsIDEyODMxNCwgCi0gICAgNzA4NzEsIDAsIDkxNzg2NCwgNDM2NzksIDEyMTAyNiwgNjUxMTcsIDkyMjcwLCAwLCAxMDQyNywgMTIxNTA2LCAzODQ0LCAKLSAgICA2ODQyLCA5NzU1LCAxMTEwLCA2NjEyLCAxMjIyMiwgOTMwMzAsIDEyODc4OSwgOTgzNjM4LCA5MjkyOCwgNzgzLCAxOTQ5MzUsIAorICAgIDEyODg1MywgNzQ5MzMsIDcwMzQyLCAxMTAwNSwgMTk0Njk5LCA2NjY1NiwgNjYwNDQsIDE5NDU4NiwgMTIwMDc5LCAKKyAgICAxMjcyNDksIDEyMDc5NywgNDMzOTMsIDEwMDk0LCA3MDE2NCwgMTE1MjksIDEwODU3LCA5Mjk0NCwgNjY0MzYsIDY1NDYsIAorICAgIDkzLCA4MTAyLCA2NzMyMywgNjg0MDUsIDAsIDE5NDcxNCwgODE3MSwgMTE4ODg4LCAxMTkwOTcsIDgyOTk2LCA5MTc1NDMsIAorICAgIDM4MywgNzE1NCwgNDE2NTYsIDQzNDk1LCA5NDA0MCwgNjcxNjIsIDUxODcsIDcxMjk2LCA3MTA4NiwgMTEyODYsIDY4NjIwLCAKKyAgICA2NDIxNywgMCwgNTIzMiwgMCwgNDEwMDksIDEyNzM3NywgNDEwMDUsIDk4MzgxMCwgNDMyMDUsIDEyMDgyOSwgODI5MiwgCisgICAgMTI1MTA4LCA0OTgwLCA4ODYwLCA3MTA1NCwgMTAwMjgsIDY1MjkxLCA3MDc2LCAxMzE4MiwgMTk0NzA1LCA3NDkxMiwgCisgICAgMTI3OTc0LCAxMDYzMSwgMTEyNDQsIDc5NzIsIDY4MDQyLCA3ODc4NSwgMCwgNzkwMCwgMTI4NTkwLCAxMTMwOSwgMzgwNiwgCisgICAgNDE5OCwgNDI3MjUsIDk4MzMxMSwgNjc2NTYsIDk5OTUsIDEyMDA3MiwgOTI1NTIsIDAsIDEyOTMxLCAxMjExMTAsIDQyNjg0LCAKKyAgICA3NDI4NSwgMjA4OCwgNjQyMTMsIDY0MzY2LCA2NTE1NiwgODgxNCwgNDIyMzgsIDc0NzcxLCAxMjc5MjAsIDE5NDcxMywgCisgICAgMTI4MzYsIDEyNTIxNCwgMTEzODAwLCA3NDM0MiwgODU5MywgMTIwNjQwLCAwLCA2ODQ0NSwgMTMyNTUsIDEyMTMzMywgCisgICAgMTI4ODQzLCA3NDY0LCAxMDEwNjYsIDY1ODY1LCAwLCAxMjg1MzUsIDEyNzE0NCwgOTIzOTUsIDkzNDIsIDEyMDQ2NCwgCisgICAgNzAzNzYsIDY0NTE2LCAwLCA3ODc5MiwgMTAxMjksIDQxMDA3LCA3NDM3NSwgOTgzNzAxLCA0MDk5NSwgMTIyMDksIDQxMDEyLCAKKyAgICA4MzUwMSwgMCwgODMyNTcsIDY5NzI0LCA0MDk5MiwgOTIyNjQsIDExOTEzNiwgNjg2NTMsIDQzNTU4LCA1NTIyLCA3NTAyNiwgCisgICAgNjEsIDEyMDk1OSwgNzQxMDUsIDM2MzMsIDEyMDA4MiwgNjUxNjIsIDQxMjM0LCAxMjA4OSwgNzgyODEsIDk3NzEsIDgzMjgxLCAKKyAgICAxMzI1MSwgMTI4NzAxLCAwLCA2MjYyLCAyNzg0LCA0Mjc0MywgNzEwNzgsIDgxMjYsIDY2NDgzLCAwLCAxOTQ2NjIsIDQ0MSwgCisgICAgNDI2MjEsIDcwNjYwLCAwLCA0MTAwMiwgNDA5OTksIDExOTYyMywgNDMyNjYsIDcxMDgsIDE5NDc3OSwgMTA4OTAsIDc0NDgxLCAKKyAgICA2NTgzNCwgODMyNCwgMTE4OTQ0LCA2NDQxNywgNzQ4MTcsIDEyNzQ2NSwgNjQ3MzcsIDc0ODUzLCA5ODM2NTksIDg5MzAsIAorICAgIDY2Njc4LCA2NzIxNiwgMTE5MywgMTAwNTYsIDE4MDAsIDEzMjUzLCAxMzI1MiwgNzgyOSwgMTIwOTkyLCAxMjExNzUsIAorICAgIDc3NDMsIDgzNTAyLCAxMjQ5OTYsIDc3OTA0LCA3NzkxMywgNzc5MDUsIDkwMzQsIDYwMzksIDEyOTEzOSwgMTAwNzUsIAorICAgIDk4Mzc2NSwgNDEwMTgsIDY1NjgzLCAxMDMzOCwgNjY0NjksIDAsIDAsIDE5NDYzNywgNDI4MTUsIDkyOTg0LCA0MTk2NiwgMCwgCisgICAgMTI3NDcxLCAxMjUxODgsIDExNzkyLCA0MzA2NCwgNDEwMjUsIDkxMSwgNzUzOSwgOTgzNDg3LCA0MDk2MywgMTAwNDQ3LCAKKyAgICA2NTE1OSwgNjQzOTAsIDAsIDk4MzE2MCwgNTUyMCwgMTE2NjIsIDEyNzQ3MywgNjUzMzAsIDQyODEyLCAxMTk5MTIsIAorICAgIDEyNjY0NywgMTIzMjYsIDcxMDgxLCAxOTQ2MzgsIDQyODA4LCAxMjgzMzcsIDkzNDgsIDY0OTAxLCA5ODM4NjEsIDk4Mzg5MiwgCisgICAgMTIxMDUwLCA2NjgzOSwgMCwgMCwgMTIxMDA0LCA0MzcwMiwgMTAwODA3LCA1ODU3LCA2NTM0MiwgOTI3MjcsIDExOTEyMCwgCisgICAgODM1MDMsIDg2NDQsIDEyMTIyNywgODMzMzIsIDExMTg2LCA3NDI5NiwgNDE5MDksIDAsIDY2OTAwLCAyNzkxLCA2OTY2MywgCisgICAgMTg5MSwgNjk4MjQsIDY2Mzk3LCA0MTkwNywgNjY2NDcsIDExODkzOSwgODc2MSwgMTI5NDIsIDU3NDgsIDkyNzEzLCAKKyAgICAxMDc3MywgNzAyMDYsIDgzMTc0LCA4Nzk2LCA3ODE0OSwgNjQxMiwgMjA2MSwgODUyMCwgMTMxNDYsIDcyODA1LCA2MzkzMSwgCisgICAgODMyNzUsIDY1OTAyLCAyODgyLCA4MzMzNCwgMTI4Mjg1LCAxMjg0MywgNDUyMCwgMTIwMzQ1LCA5MjQ1OSwgMTI5MDkyLCAKKyAgICA5ODM2NjAsIDEyMDA2OCwgNzM4NjAsIDgzMzM1LCAxMjgyODksIDY0MzQ1LCA5ODM1NTQsIDkyMDEsIDEyODMxNCwgNzA4NzEsIAorICAgIDk4MzgwOSwgOTE3ODY0LCA0MzY3OSwgMTIxMDI2LCA2NTExNywgOTIyNzAsIDk4MzYzNiwgMTA0MjcsIDEyMTUwNiwgMzg0NCwgCisgICAgNjg0MiwgOTc1NSwgMTExMCwgNjYxMiwgMTIyMjIsIDkzMDMwLCAxMDEwNTEsIDk4MzYzOCwgOTI5MjgsIDc4MywgMTE5NTc3LCAKICAgICA5MjE4NSwgMTI3MjIxLCA3Mzg1NSwgNjgwMzIsIDY1MDU2LCAzNjIwLCA0MTE4MCwgNjgzNzgsIDQ1NTYsIDY3ODM5LCAKICAgICA2ODQ4MCwgMTk0OTMzLCA3NDI1MCwgMCwgNjc2NTcsIDEwNTEwLCA0MzgyLCA2NjQ4MiwgNjc4MjMsIDAsIDEyNzUyNywgCi0gICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzNjM2LCA2Mzk5OSwgMjAxNiwgCisgICAgOTE3NywgODkwMiwgOTM5NTgsIDk4MzksIDEyMDcwMCwgMTI4OTEsIDk4Mzc1NSwgOTgzMjM5LCA2Mzk5OSwgMjAxNiwgCiAgICAgNDE5MTcsIDk3ODgsIDYzOTI4LCA2NzY5NiwgMTg2MiwgNjU4MDAsIDkxNTUsIDY2NjIzLCA5Nzg2LCA2NTA4MiwgNDE5MTksIAogICAgIDg1NzksIDQxOTE0LCA3OTgxLCAwLCA2NjAxNywgNDUwOCwgNjQ4ODMsIDkyNDU2LCA5MjUyMiwgMTI3ODE0LCAxMjA4MzQsIAogICAgIDY0NTkyLCA3NDI3NiwgNjc2ODgsIDY3ODQsIDc4Nzg4LCA2ODE4MSwgMCwgNzEyMTgsIDExMzgyMSwgNjYzNjYsIDEyMTQ3LCAKICAgICA5MDI0LCA2NjM3OCwgNjY0NzIsIDEyNDk3NiwgNjQyODksIDY1Mjg5LCA3ODE1MSwgNjY2NTgsIDcxOTM1LCA2NDUwOSwgCiAgICAgNzgxNTIsIDExMzY5NywgMTI2NTA1LCAxMTA1MSwgMTk0OTI4LCAwLCAxMTM1NSwgNjU4ODUsIDEyMTMxOSwgMTI3OTQxLCAKLSAgICA0MTIxNCwgMCwgMTIyOTksIDAsIDc1MDAsIDQ1MDYsIDc3NzMsIDAsIDAsIDk5NjMsIDY4NjQ5LCAxMjY2MDksIDQwNDAsIAotICAgIDEyMDU3MCwgNjE2NywgNzQ1MTksIDYzOTIyLCA2NTk0LCA5ODM3NDAsIDAsIDAsIDM2MjQsIDQzMDM2LCAxMjk0NzIsIAotICAgIDYzODcsIDYzOTkwLCAxOTk0NywgNjM5ODgsIDQxOTU1LCAxMjY5OTAsIDYzOTkzLCAxMDQ0MCwgOTYxMSwgNjU2MDUsIAotICAgIDY4MDMsIDEyMDk2OCwgNzczOCwgNjM5ODYsIDExNDQ2LCA2Mzk4NCwgOTI2NDEsIDM0MzUsIDc4MTY0LCA0MzgxNCwgCi0gICAgNDM4MTAsIDcwMjksIDY0MjU4LCA0MTI5MiwgMTE4ODk4LCAxMjc0OCwgNDI3NDIsIDk1MTcsIDExNTE4LCA4MzI5MiwgCi0gICAgNzg3OTAsIDk4MzM4MSwgNjc5OTMsIDYzOTU2LCA0MjQ1OCwgNjM5NTQsIDYzOTUzLCA2Mzk2MCwgOTU5MSwgNDUxNiwgCi0gICAgMTAyMTcsIDY4MzcwLCAxMTQ2OSwgNjk2OTcsIDQyMzA2LCAyNzIzLCAxMTg5NDcsIDAsIDkyMzI1LCAwLCA2ODA3OSwgCi0gICAgMTIxMzQ0LCAxMTM5NywgMjg4MCwgNzA4MDYsIDkxNzgyOSwgMjg3MiwgMCwgODMzMjEsIDM0OTgsIDQzNzgsIDkxNzUzOSwgCi0gICAgNDI3MCwgMCwgNjU1NTEsIDY4MjA1LCA2NjMzLCA0MzM4NywgMCwgNTIzMCwgMTk0OTkxLCAwLCA5ODMwNDAsIDE5NDkxMCwgCi0gICAgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCAwLCA5ODMxOTgsIDExOTEwMywgNDE1LCA2Mzk2NCwgNjM5NjMsIDQyMzQ1LCAKLSAgICA5MjMxMCwgNTE4MywgMTg3NywgNDI0OTgsIDAsIDI5MjcsIDcxMDU4LCA2Mzk2MSwgNDQ3MiwgOTgzMjk5LCAwLCA3ODE1OSwgCi0gICAgNjk2OTksIDEyNzMwMSwgNDIzNDAsIDQ3NTYsIDEyODA3OCwgNzA4MSwgMTA3MzAsIDc2OTEsIDEwMzMxLCA2MzgzMCwgCi0gICAgMTE5NjI1LCA0MjkyMiwgNDIxMDMsIDg2MjgsIDk4MTMsIDc4NjU0LCA0MjQ1MywgMTYwNCwgOTU2NSwgMTA1MzksIDY5NzAxLCAKLSAgICA2NTc2NCwgNDE0MTUsIDY1NzY3LCAxMjkxOTYsIDg0NTcsIDQyMzAxLCAxMTM3MiwgNjQ4NzMsIDExOTkyLCAwLCAwLCAKLSAgICA2Mzk4MCwgMTE4MDEsIDM2MjIsIDE5NTA5MiwgNjQzMzYsIDEyMDE3LCAxMDQ2MywgNjM5ODEsIDQ5NjcsIDY0MTg5LCAKLSAgICAxOTY2LCA0MzYyOCwgOTgzOTA4LCA5ODMyOTQsIDgzMjY3LCAxMjEwNTIsIDYzOTcxLCA0MzQ3LCA0NDE2LCA0MjA5OCwgCi0gICAgMTEwMDksIDEwNjk0LCA2Mzk3MywgNDAyLCA5MjIxMywgMTMxNDcsIDEyODY5MiwgNDIxMDAsIDY0NjQ2LCAxMzIyOCwgMCwgCi0gICAgNDE4NzUsIDM1MTUsIDc0MjUyLCAxMTgwNSwgOTgzMTU3LCAxMTMwMiwgNjI1OSwgNDMzOTUsIDAsIDgzMzIzLCAxOTQ2NzAsIAotICAgIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgCi0gICAgMTk0NzMzLCA3MDQxMSwgNzg3MTgsIDEyMTE0MCwgNzQzMDEsIDY4ODI1LCAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIAotICAgIDEyODM5MiwgMCwgMTE5NjY0LCA1MTQ1LCAxMjQ4NiwgNjUwMTgsIDY2NTE2LCA1NDA5LCAxMjczNzksIDEyNDk4OCwgNzQwMiwgCi0gICAgNTM5OSwgOTY4NSwgNzQwODksIDc5NTIsIDU0MDEsIDAsIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgCi0gICAgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgNzg3ODQsIDc0MjQ4LCAxMTMzMCwgMTk0NzIzLCAKLSAgICA2NDY5MCwgMzI1NCwgOTgzMTY2LCAxMjg5NDQsIDkyNjk2LCA0MjM5MCwgNDM2NzgsIDE5NDcyNSwgMTI5MTI3LCA2NTA3NywgCi0gICAgMTI5MDU5LCA2Mzg4LCAzMzU1LCA5NTA4LCA5ODY3LCA1NzIzLCAxMTUyMCwgNTYxMSwgODMwMjEsIDMzNzcsIDAsIDAsIAotICAgIDc0MzU0LCAxOTQ1NzgsIDc4MjI4LCA5ODM3MjIsIDk4Mzc2MiwgNDI2OTEsIDEyNzg4NiwgMTIwOTQ4LCA2ODA5MSwgCi0gICAgMTI4NDA0LCA3NTAyMywgMTM3OSwgMjQ2LCA3NDY0OSwgOTgzNzYxLCAzNzg4LCA5MjUyMCwgMTEwNDEsIDY3MjAyLCAKLSAgICA2NjMwNCwgMCwgMTIxMjEzLCA4OTE3LCA0MjQwMywgMzAxLCAwLCAxMjg1MDAsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAKLSAgICAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgCi0gICAgMzE4MiwgMCwgMCwgMCwgNjUwMzQsIDY1ODg5LCA0MjE2OSwgNDc1NSwgNzQyNDQsIDE5NDU3NCwgMTE0NDMsIDk4MzYwMywgCi0gICAgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCAKLSAgICA0MjQ0MiwgNjU0NzAsIDk4MzkwNywgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIAotICAgIDAsIDQzNTA1LCA0MjI4MCwgMCwgOTM1MSwgNzc3OCwgNjQzNzksIDc0OTYsIDQyNDMxLCA2OTE2LCAxMjA4LCAwLCAKLSAgICAxMTk2MzEsIDExMDAyLCA0MjQ3MCwgMCwgNjgzMTUsIDAsIDAsIDc0MDQxLCA4MzE0NCwgNzAwNDUsIDQzNTM5LCA1NDExLCAKLSAgICA0MjE5NiwgMCwgMCwgMCwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAKLSAgICAxMDY0MywgNTUyNzEsIDEyODk1MSwgMTIxNjYsIDI1NDYsIDE5NDY4MywgMjEzLCAxMTg4NTIsIDY1NjExLCA4MzMxNiwgCi0gICAgMTk0ODIyLCAxOTQ3NTYsIDc0MzEwLCA2NTU0LCA5NDA1OSwgMTE5MTQsIDU0NTIsIDAsIDAsIDkyNzcyLCAwLCA5MTc4ODAsIAotICAgIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAxMjUwMDcsIAotICAgIDQyOTI1LCA3NDYzOCwgMTk0NTkzLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCA5NjgyLCAKLSAgICA2NTI4NywgMTUwOCwgMTI3MDEzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIDQxNDUsIAotICAgIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAwLCAwLCAKLSAgICAxOTQ3ODMsIDY1NzM2LCA0MTk1MSwgNjQ4MTYsIDY1NzU2LCA5ODMyMDUsIDEyOTU1LCAxMDU5NiwgMjg4OCwgODMxOTAsIDAsIAotICAgIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAwLCAxOTQ5NjEsIDY3MzI1LCA2ODY3OSwgCi0gICAgNDM1NTIsIDc1MDEsIDYzMjgsIDE5NDk2MCwgMTA0MjksIDEwMzY1LCAwLCAwLCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCAKLSAgICA2ODM4MSwgMCwgMCwgODk4NiwgNDM4MzgsIDEwNjMyLCAxMTkzNCwgMTE0NTIsIDEzMzIsIDAsIDE5NDk3MCwgMTI2NjQ3LCAKLSAgICAwLCAxMTg4ODcsIDE3OTEsIDUxOTEsIDkyODgsIDY0ODIyLCAyODkyLCA4MzE5MiwgNDMzOTQsIDU1NSwgMCwgMCwgNjY2NDYsIAotICAgIDEyODk4MCwgMTE5MDAyLCAxMzE1MSwgNzQ1MTIsIDcyODksIDc0MDU1LCA2NDE2MSwgODg1NCwgNjQxNjIsIDU4NTgsIAotICAgIDQxOTI3LCAxMDU4MiwgMTIwNDU3LCAxNzg0LCAxMzYxLCAxMjA5MjEsIDEyMTUxNiwgNzkwNSwgMCwgNjQ4NjgsIDEyODgxMywgCi0gICAgMTMxNTgsIDkyMTY2LCA3MjExLCA3MTg4NCwgOTM3MSwgNzM5NzMsIDEyODQ0MSwgNjgyOCwgMTYyNSwgNzY2NCwgMTI4NzY4LCAKLSAgICAxMzQyLCA2ODQ0MCwgNjQxNzEsIDkyNjQyLCAxMDkwMywgOTgzNDk2LCAwLCA5MjUyNywgMCwgNzA0MzgsIDQ0ODIsIAotICAgIDQxNjA2LCAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCAwLCA2NDM4MSwgOTgzOTQwLCAxOTQ5NzQsIDE5NTA5MCwgNDIyNDUsIAotICAgIDEyNjQ2NywgNDE5NzIsIDAsIDQ0NCwgOTgzNDM5LCA5MTI3LCA2NjY4NywgNjY2MTksIDEyNjQ4OSwgNzgwMjUsIDAsIAotICAgIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAwLCA3MDE3NywgMTIwODMwLCAwLCAxMTk3LCAxMjgyODIsIDExNDksIDY4MzE2LCAwLCAKLSAgICA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIDExODc4NCwgMTI5MDI2LCAwLCA5ODM1NjYsIAotICAgIDEyODM4LCA2NzIwOCwgMTk5NDgsIDQxNjc3LCAzMDk5LCAwLCAwLCA0MTA4NywgMCwgMCwgOTgzMjYxLCAxMTkwNTksIAotICAgIDEyMDM2LCA0MTMwOSwgMTI4MTYxLCAwLCA4MTUyLCAwLCA0MTU1MCwgMTIyMjcsIDk4MzYxMywgMCwgMTI4MjgsIDEyNzUxMSwgCi0gICAgNzUwMTUsIDEyMDk2NCwgMTIwNzA4LCAwLCAwLCAxMDM4NiwgNzUwNjgsIDExOTk1NSwgMTI3MzAzLCA5MjY4MCwgOTgzMTM0LCAKLSAgICA2ODE1NCwgMTI3ODc2LCAxNzQzLCAwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIAotICAgIDY0NDM5LCAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgOTgzODc1LCAwLCA0Mzg2NiwgMTI4ODgxLCAwLCAzMzk1LCA5MzYyLCAKLSAgICAxMDg3OCwgNDMyNjAsIDAsIDc4MzYyLCA2NDgzMCwgMCwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCi0gICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMCwgOTgzODI0LCA3NDgxOCwgMTQyMywgCi0gICAgMTI4OTIzLCA0MjYzNywgNDEwODAsIDAsIDEyMDM5LCAxMDU1OSwgMTI4NjM0LCAxMTg4OTIsIDAsIDk0NzIsIDY3NzM0LCAKLSAgICAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjg4MjYsIDQzNjI5LCAxMTU3OSwgNzE0NzUsIDAsIDkyNTAxLCAKLSAgICAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCA2NjAwOCwgMTI2MjcsIDAsIAotICAgIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIDExNzc2LCA3NTU4LCA3MDEwOSwgCi0gICAgNjU2MjcsIDAsIDEwNzE4LCAxMzE1NCwgMzQ2MSwgOTEzOSwgMCwgOTgzMDk0LCAwLCAxMTkwMjMsIDY1MzY1LCA3Mzg3NywgCi0gICAgNjU2MjgsIDc4MDE5LCAxMTkyNzIsIDgzMTE4LCA0MTcwOCwgMTI4NjAsIDI2NDEsIDEyMDY5LCAxMDgzOCwgNTQwMywgCi0gICAgMTAzNTIsIDcwMDg1LCAxMDA2MSwgNDMyMzcsIDEyNTA1NywgNTE0MCwgMjA5LCAxMjg4NDcsIDQxNzA0LCA0MTA1NiwgCi0gICAgNDMwNzgsIDEyNzc4OSwgMTE4ODA5LCA2NzIzMiwgMTA4OTksIDY1NDY5LCA3MDEyNSwgMCwgMCwgMjQxMCwgOTkzLCAKLSAgICA4MzExNywgMTIwNTg5LCAxMjA2ODksIDc4NjkzLCAwLCAwLCA3MjMyLCAwLCAxMTkyNTMsIDEyNDk2MywgNzExMCwgNzQ0NjIsIAotICAgIDIwNjYsIDEwNDg5LCA0MjE2NiwgNDM0NjMsIDEwNjU5LCAzNjAwLCA2ODg2MywgNDIyNCwgMTMzNiwgNDE1MTgsIDEyMTMxMSwgCi0gICAgMCwgMCwgMCwgNDExMzksIDY0ODIwLCA5MjUzOCwgMTI5NjYsIDQxMTM0LCAwLCAwLCAxMTkxNTMsIDEyMDQ0MSwgMjcyLCAKLSAgICA0MjYzLCA4NzkzLCA5ODM4NTYsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEyNDk0MCwgMCwgMTE5MCwgNDEwOSwgCi0gICAgMTMzNSwgODQxLCA1ODg4LCA0MTM1OCwgNjQ4NjMsIDk1NDQsIDQzNDgxLCAwLCAxMjA5MjYsIDcwMDI3LCAyMDk5LCA1MTIwLCAKLSAgICAyNDA5LCA3Nzk5LCAwLCA3NDQyNCwgMCwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIDEyODEyNywgOTI1MjUsIDEyNTUsIAotICAgIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEyMTEwMSwgNjQ5MTQsIDkxNzc4NywgNjUxMDEsIDExMzcxNCwgCi0gICAgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MTY0LCA2NjYyNSwgMTA4NDIsIDQxMzU0LCA0MjEyMywgNDMwOTcsIAotICAgIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAxMjUwNTUsIDAsIDk5NzIsIDczODY1LCAKLSAgICA0NTE5LCA2MTE0LCAxMDg5OCwgNDMwNzIsIDkyNDY1LCAwLCA5Mzk2MCwgOTgzMzI0LCAxMjY1ODEsIDEwNjk1LCAwLCAKLSAgICA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCAwLCA5MTc4OTcsIDEyOTEzNCwgMTMzMTEsIDY4NDAzLCA0MTg1NywgCi0gICAgNjQzMjEsIDgzNTksIDgzMjg2LCAxMjY4OSwgOTgzMzEyLCAxMTI0NSwgMTI4MTA1LCA5ODMzMTQsIDcxODU5LCA2ODE4MywgCi0gICAgOTgzNDE1LCAxOTQ4MjksIDEyODcsIDU0MzYsIDAsIDcxMDk3LCA3NDE0MiwgOTIzMjgsIDc0MTUyLCA3MDIwNSwgNjA1MSwgCi0gICAgMTA0OTcsIDY5NjY4LCA4OTg1LCAxMjEwOSwgODI5NjIsIDEyODkwOCwgOTMwNDMsIDEyMTAxMywgMCwgMzY1MiwgMTA1MzcsIAotICAgIDEyMDI4MiwgMTI3NiwgMTIwNDQwLCA2NTQ5LCAyNzksIDczNzQ1LCAwLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAwLCAwLCAwLCAKLSAgICAzODk5LCAxMDA3LCA0MjEyNCwgNDM4MjgsIDQyMTIyLCA5MjMzNywgOTIzNjcsIDAsIDExOTg1LCAxMzQ1LCA3ODYwMCwgCi0gICAgMTE5ODMyLCA5MTc1NjMsIDg5NTYsIDQzMDgzLCA5NDA1NywgNDIxMzgsIDc4NjEwLCAxMjkxMzEsIDY0MzAsIDc4NjA4LCAKLSAgICA3ODYwNCwgNzg2MDUsIDYyODUsIDc4NjAzLCA3ODYxMiwgNzg2MTMsIDY1OTQyLCA0OTIsIDg2ODUsIDEyODQ4MSwgCi0gICAgMTIxMjcwLCAwLCA3NTAyNywgNDM3MTIsIDI1ODIsIDExNDcwLCA2NDUzOCwgNzQ0NCwgNzg2MTUsIDc4NjE2LCAyMjk3LCAwLCAKLSAgICA3MzgzNywgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIAotICAgIDY2NTE1LCA3NjcsIDU1MjQsIDcwMjgsIDAsIDkyMTY4LCAxMTk4MjcsIDExOTgxNywgOTI5NTAsIDc4NjMzLCAxMDg5NiwgMCwgCi0gICAgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgMTI4MzQyLCAwLCA2NTM0MCwgMTE4OTc5LCA0MTU1MSwgMjQzNCwgOTQwMTgsIAotICAgIDExODgyMywgNjUzNTMsIDAsIDQ2MzEsIDExODk5NiwgMCwgNjQwNywgMTEzNzM3LCA2MzM4LCA0MzIxNCwgMCwgNzU3MCwgMCwgCi0gICAgMzE5MiwgMTIwMzMwLCA4NDE0LCA5ODMzOTIsIDkzOTgzLCAxOTUwNDMsIDAsIDAsIDkxNjQsIDY2NjEyLCA5Mzk1OSwgCi0gICAgMzE3MSwgNjYyMywgNDk2MSwgNjgzOTYsIDg4NiwgNTUyMTYsIDg2NTQsIDc4ODMyLCA5OTkzLCA3NDM5MCwgNjQ2MDMsIAotICAgIDcwMDY2LCA2OTI0MSwgOTU5OSwgNzg2MjksIDQzMDg0LCA3ODYyNywgNzg2MjgsIDc4NjI1LCAyMzk5LCA2OTY5MywgODk5NCwgCi0gICAgMTA5NDQsIDQxMjA4LCA5ODM3MTMsIDQxMTY4LCA4MTc4LCA3NDg1OSwgMzM2NywgOTIzMzQsIDQyNTEwLCA3ODY0MSwgCi0gICAgNzg2MzYsIDY4MDQsIDcwNDc1LCAxOTQ3LCA5MTc1NzksIDAsIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIAotICAgIDc0Nzk4LCA5MTgxLCA2NTM1OSwgMTI1MDY1LCA4MDE3LCAxMTk4MzEsIDY1MDk2LCA2NjcyMCwgNjgyMjMsIDQzNDc1LCAKLSAgICA5MTc1NDgsIDQ5MDksIDEyMTI2LCAxMjc1NDAsIDEyMDY5NiwgNDkwNCwgOTI5NjEsIDQzNTAzLCAxMzY1LCA5MjUzLCAKLSAgICA0Mjc1NywgNDM0MzYsIDc0NjIsIDEyNzc3MiwgMCwgMCwgODMxNzMsIDY2ODQ1LCA2NDQxNSwgMTIwNTAwLCA4MzE3MiwgCi0gICAgNTM5OCwgMTI1MDM1LCAxMjczODYsIDkzOTUzLCAxMjczNjIsIDk4Mzc4MiwgMTE5MDE1LCA4MzE3MSwgMTI3MDA3LCA5NDc2LCAKLSAgICA5ODM4ODcsIDEyMDY5NSwgMTI3NjMsIDEyNjYwMywgMzYyOSwgMTIwODQ0LCAxMzAwNSwgMTExODEsIDM2MjgsIDAsIDAsIAotICAgIDkyNTAyLCAzNDY5LCA0MjEwNywgNDIxMTYsIDkxNzU3OCwgNjQ4MDksIDI5MjgsIDQ5MDUsIDk4NTMsIDg1MSwgOTA0MCwgCi0gICAgMTIwMzcyLCA2NDY2NSwgNDMwODYsIDkxMTQsIDQzODcwLCA0MjU4MywgOTMxNSwgNDgyMiwgNDkwNiwgMzg1MiwgMjg0NywgCi0gICAgMTE5ODIxLCAzMjM2LCAxMTMxNywgMTI1MSwgNzc3NywgNDE4NTIsIDExNDEwLCAxMDk2NCwgMCwgNDMyMjIsIDEyNjQ2LCAKLSAgICAxMjAyNjksIDEwMjU5LCA5ODY1LCA2NTgyMSwgNzUwNDYsIDYwMTgsIDY4MjkzLCAxMjUwMTAsIDEyMjc2LCAxMTkxMTAsIAotICAgIDY4MzcyLCAxMjgyNTUsIDkyMjU5LCA3MTg5MywgMCwgMTE5ODI4LCAxMDQ2NywgMCwgMjQ0MywgMTA5MTgsIDc4MjE3LCAKLSAgICA3Nzk0NywgMTAwMSwgOTI0MSwgMTkyNywgMCwgMTI0OTQyLCA3Mzk4NywgMTI3ODgyLCA3MTg5NSwgOTMwMTIsIDc5OTIsIAotICAgIDc3OTQzLCA0MzkzOSwgMTI4NjcsIDEyODY0OSwgODI2MCwgNzc5NDUsIDc1MTksIDExNTA1LCAxMjI3NCwgODkwNCwgNTE4LCAKLSAgICA2NTg1NywgMTI4MzYxLCAxMjg2NzQsIDEzMjA0LCA0Mzg3LCA4NTcsIDEyMTI1MiwgNjUzNjksIDAsIDkyMzM2LCA0MzEyNSwgCi0gICAgMTE4NDIsIDAsIDcxMDcyLCAxMjE0NjIsIDAsIDUxMzYsIDE5NjgsIDEyODkwNiwgMTI2NjI3LCAxMzM3LCA2NDk2NywgCi0gICAgMTYyOSwgMCwgNzk2LCA2NjUwNiwgMCwgNzQxMjMsIDEyODc3LCAxMjA2NDksIDQyMzE0LCA0MzM4OCwgNDM4MjYsIDQzOTQ0LCAKLSAgICA2MTIwLCA0NzgsIDY1MTUxLCA2ODEyOCwgMTI4MTQ3LCA0MzA4MiwgNjAxNiwgMCwgNDIyODQsIDcxODk0LCA0Mjc2LCAKLSAgICAxMjA2LCAzNjE5LCA0MTYzOCwgNjk2OTEsIDM4NDMsIDEyMDExLCA4ODUzLCAzMzYxLCAwLCA0OTAsIDEwNzE1LCA3NTc4LCAKLSAgICA2ODM4NCwgOTI3NTQsIDY1MzUwLCAxMDUzMCwgMTIzNDgsIDg2NTMsIDY4MjQ1LCA0MjQzNSwgNjE1NCwgOTU1MSwgNjUzNTQsIAotICAgIDc4NTIyLCA3ODQsIDQyMzk3LCAzMzQsIDEyMTA4NCwgNDI0MTYsIDY1MzU2LCA2NTI3MywgNDM5MzcsIDY5NjY2LCA0NDQyLCAKLSAgICAxMDM2NCwgNDM5MzUsIDc3OCwgNDE2MjYsIDQyNDU1LCA3OTg5LCA3NDA2MywgMzIyNywgNjk5MDcsIDQzOTMyLCAxMTEwMiwgCi0gICAgMjkxNSwgMTE1MDIsIDQxMDIyLCA0MTcwMiwgMTAzMDksIDEyNzAzNSwgNzUwMzIsIDEyMDI3MywgNjk3NSwgMCwgNTQxNSwgCi0gICAgMTIxNzYsIDk4MzcwOSwgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCAKLSAgICA5NzU5LCAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzg2OTYsIDc4Njk1LCA4NzEwLCAKLSAgICA0MjQ5NSwgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAKLSAgICAxMjg4NTcsIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCAKLSAgICA0MjEwOSwgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCAKLSAgICA1NTc1LCA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDkyOTc5LCA0MzIzNiwgMzM4MiwgCi0gICAgNDI0NDksIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTEzODE0LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgCi0gICAgNjk4ODgsIDY1NTA4LCA5ODMxNDMsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDAsIDk4Mzc1NywgMCwgNjE2LCA3NDc1MywgCi0gICAgNjUxNzgsIDQ2ODQsIDc4NzAxLCAxMTk2NTMsIDc0NjMxLCAxMjY1NTEsIDEyNDk5MiwgNjA0OCwgNzQ0NjAsIDQyMTEwLCAKKyAgICA0MTIxNCwgMTI5MzMxLCAxMjI5OSwgMTAxMDc1LCA3NTAwLCA0NTA2LCA3NzczLCAwLCAwLCA5OTYzLCA2ODY0OSwgCisgICAgMTI2NjA5LCA0MDQwLCAxMjA1NzAsIDYxNjcsIDc0NTE5LCA2MzkyMiwgNjU5NCwgOTgzNzQwLCAxMTM3MzQsIDEyNzg5OSwgCisgICAgMzYyNCwgNDMwMzYsIDEyOTQ3MiwgNjM4NywgNjM5OTAsIDE5OTQ3LCA2Mzk4OCwgNDE5NTUsIDExMDU5MiwgNjM5OTMsIAorICAgIDEwNDQwLCA5NjExLCA2NTYwNSwgNjgwMywgMTIwOTY4LCA3NzM4LCA2Mzk4NiwgMTE0NDYsIDYzOTg0LCA5MjY0MSwgMzQzNSwgCisgICAgNzgxNjQsIDQzODE0LCA0MzgxMCwgNzAyOSwgNjQyNTgsIDQxMjkyLCAxMTg4OTgsIDEyNzQ4LCA0Mjc0MiwgOTUxNywgCisgICAgMTE1MTgsIDgzMjkyLCA3ODc5MCwgOTgzMzgxLCA2Nzk5MywgNjM5NTYsIDQyNDU4LCA2Mzk1NCwgNjM5NTMsIDEyNTAzLCAKKyAgICA5NTkxLCA0NTE2LCAxMDIxNywgNjgzNzAsIDExNDY5LCA2OTY5NywgNDIzMDYsIDI3MjMsIDExODk0NywgMCwgOTIzMjUsIAorICAgIDEyNTA2NywgNjgwNzksIDEyMTM0NCwgMTEzOTcsIDI4ODAsIDcwODA2LCA5MTc4MjksIDI4NzIsIDAsIDgzMzIxLCAzNDk4LCAKKyAgICA0Mzc4LCAxMjg3NDMsIDQyNzAsIDAsIDY1NTUxLCA2ODIwNSwgNjYzMywgNDMzODcsIDAsIDUyMzAsIDE5NDk5MSwgMCwgCisgICAgODMzMjIsIDEyNjYxMiwgMTIxMzkyLCA4MTYxLCAzOTMsIDEyMDEzLCA5ODMyMjEsIDEwMDUwOSwgMTE5MTAzLCA0MTUsIAorICAgIDYzOTY0LCA2Mzk2MywgNDIzNDUsIDkyMzEwLCA1MTgzLCAxODc3LCA0MjQ5OCwgMCwgMjkyNywgNzEwNTgsIDYzOTYxLCAKKyAgICA0NDcyLCAxMDEwNTQsIDAsIDc4MTU5LCA2OTY5OSwgMTAxMDU1LCA0MjM0MCwgNDc1NiwgMTI4MDc4LCA3MDgxLCAxMDczMCwgCisgICAgNzY5MSwgMTAzMzEsIDYzODMwLCA4MzQ1MCwgNDI5MjIsIDQyMTAzLCA4NjI4LCA5ODEzLCA3ODY1NCwgNDI0NTMsIDE2MDQsIAorICAgIDk1NjUsIDEwNTM5LCA2OTcwMSwgNjU3NjQsIDQxNDE1LCA2NTc2NywgMTAwNTA2LCA4NDU3LCA0MjMwMSwgMTEzNzIsIAorICAgIDY0ODczLCAxMTk5MiwgMTk0ODc0LCAxMjkzMDYsIDYzOTgwLCAxMTgwMSwgMzYyMiwgMTI4OTA0LCA2NDMzNiwgMTIwMTcsIAorICAgIDEwNDYzLCA2Mzk4MSwgNDk2NywgNjQxODksIDE5NjYsIDQzNjI4LCA3Mjc5NCwgMTAxMDYwLCA4MzI2NywgMTIxMDUyLCAKKyAgICA2Mzk3MSwgNDM0NywgNDQxNiwgNDIwOTgsIDExMDA5LCAxMDY5NCwgNjM5NzMsIDQwMiwgOTIyMTMsIDEzMTQ3LCAxMjg2OTIsIAorICAgIDQyMTAwLCA2NDY0NiwgMTMyMjgsIDAsIDQxODc1LCAzNTE1LCA3NDI1MiwgMTE4MDUsIDk4MzE1NywgMTEzMDIsIDYyNTksIAorICAgIDQzMzk1LCA5ODMzNzMsIDgzMzIzLCAxMjgzNTgsIDEyMDgzNiwgOTIzNTEsIDc0ODEzLCA3NDQyNSwgMTEyOTksIDE1NjEsIAorICAgIDExODg4MSwgOTIzMTgsIDY0OTQyLCA5MzAyMSwgMTI3MDQ5LCA3MDQxMSwgNzg3MTgsIDEwMDkzMCwgNzQzMDEsIDY4ODI1LCAKKyAgICAxMTI4MCwgMTI4NDg5LCA2OTc4NCwgNzQwNjAsIDEyODM5MiwgMTk0OTg4LCA3Mjc1MiwgNTE0NSwgMTI0ODYsIDY1MDE4LCAKKyAgICA2NjUxNiwgNTQwOSwgMTI3Mzc5LCAxMTkwNTcsIDc0MDIsIDUzOTksIDk2ODUsIDc0MDg5LCA3OTUyLCA1NDAxLCAxMDEwNTMsIAorICAgIDY2NjE2LCA2NjgzMiwgOTI5NjYsIDEyMDg1MiwgNTQwNSwgMTI3ODc1LCA2NDg2NiwgMTIwOTY1LCAxMTk1ODMsIDExOTEyMiwgCisgICAgMjIzNSwgNzQyNDgsIDExMzMwLCAxMjkxMjMsIDY0NjkwLCAzMjU0LCA5ODMxNjYsIDEyODk0NCwgOTI2OTYsIDQyMzkwLCAKKyAgICA0MzY3OCwgMTAxMDAwLCAxMjkxMjcsIDY1MDc3LCAxMjkwNTksIDYzODgsIDMzNTUsIDk1MDgsIDk4NjcsIDU3MjMsIAorICAgIDExNTIwLCA1NjExLCA4MzAyMSwgMzM3NywgMCwgOTgzODQ1LCA3NDM1NCwgMTk0NTc4LCA3ODIyOCwgOTgzNzIyLCAKKyAgICAxMjgzNjgsIDQyNjkxLCAxMjc4ODYsIDEyMDk0OCwgNjgwOTEsIDEyMTE2NiwgNzUwMjMsIDEzNzksIDI0NiwgNzQ2NDksIAorICAgIDk4Mzc2MSwgMzc4OCwgOTI1MjAsIDExMDQxLCA2NzIwMiwgNjYzMDQsIDAsIDEyMTIxMywgODkxNywgNDI0MDMsIDMwMSwgCisgICAgMTE5OTM1LCAxMTk4MjYsIDEyNzA0NiwgMCwgMCwgMTEzODIyLCAxMDY1NiwgMTI1MDQyLCA2NTIxNCwgOTI5ODcsIDQyNTY3LCAKKyAgICA5MjIxNywgMTMxNjMsIDk4MzIwNCwgMTIwODMxLCA3NDU5NywgMzE4MiwgOTgzNjA3LCA5ODM5MjYsIDAsIDY1MDM0LCAKKyAgICA2NTg4OSwgNDIxNjksIDQ3NTUsIDc0MjQ0LCA3NDYzMSwgMTE0NDMsIDk4MzYwMywgNjYzMTksIDY4NDEsIDYwOCwgNjAwLCAKKyAgICAwLCAxMjE5LCAzOTM0LCA2NDIwNiwgMTE0ODMsIDc0NTEwLCAxMTkxMTcsIDc0NDg1LCA0MjQ0MiwgNjU0NzAsIDEwMDUzOCwgCisgICAgNjQyMDIsIDEzMTYwLCA3NzU5LCA0MjQ4MiwgNDg1LCA2OTk4MiwgNzA1MDUsIDk4MjgsIDc4MzExLCA0MzUwNSwgNDIyODAsIAorICAgIDAsIDkzNTEsIDc3NzgsIDY0Mzc5LCA3NDk2LCA0MjQzMSwgNjkxNiwgMTIwOCwgMCwgMTE5NjMxLCAxMTAwMiwgNDI0NzAsIAorICAgIDEyODkxMywgNjgzMTUsIDk4MzgzOCwgMTIxMTU5LCA3NDA0MSwgODMxNDQsIDcwMDQ1LCA0MzUzOSwgNTQxMSwgNDIxOTYsIAorICAgIDAsIDAsIDEyODk0OSwgOTE1MCwgNjY4MzEsIDQyMzkzLCAxMzA4NiwgMTMxMCwgNjY4NDgsIDkzMzcsIDEyMDUyLCAxMDY0MywgCisgICAgNTUyNzEsIDcyNzI3LCAxMjE2NiwgMjU0NiwgMTk0NjgzLCAyMTMsIDExODg1MiwgNjU2MTEsIDgzMzE2LCAxOTQ4MjIsIAorICAgIDEwMDczMywgNzQzMTAsIDY1NTQsIDgzMDUzLCAxMTkxNCwgNTQ1MiwgOTgzNjQ5LCAwLCA5Mjc3MiwgMTI3NTQ0LCAKKyAgICA5MTc4ODAsIDE5NDY4MSwgOTI1NjAsIDI3MTMsIDExOTU2NCwgOTY1MCwgNDMzMzAsIDEyMTAzMywgMTI4NTA1LCAxNDA2LCAKKyAgICAxMjUwMDcsIDQyOTI1LCA3NDYzOCwgMTI1MTkwLCA2NjI1NiwgNDE0MywgMTI4MTM2LCAxOTQ3NjIsIDY1NzQ4LCA0MTQxLCAKKyAgICA5NjgyLCA2NTI4NywgMTUwOCwgMTAwNTMzLCA4Nzc5LCAxMDU2OSwgODcyNSwgMTMyOTksIDY2NjM4LCA2NTc1MCwgNDIyNjMsIAorICAgIDQxNDUsIDYzODAsIDY1NzUxLCA2NjYxMywgNDM5OTQsIDY1NzM4LCA1NTI1MCwgOTE4NSwgOTU1MCwgNDI5MzIsIDQzNDAzLCAKKyAgICAxMDA2MjMsIDEwMDYyMiwgMTAwNjI1LCA2NTczNiwgNDE5NTEsIDY0ODE2LCA2NTc1NiwgNzI3MzEsIDEyOTU1LCAxMDU5NiwgCisgICAgMjg4OCwgODMxOTAsIDAsIDEyMTM1NCwgOTY1NywgOTAxOSwgMTIxMTU0LCAwLCAyODc4LCA1MzkwLCAxMDA2OTgsIAorICAgIDE5NDk2MSwgNjczMjUsIDY4Njc5LCA0MzU1MiwgNzUwMSwgNjMyOCwgMTk0OTYwLCAxMDQyOSwgMTAzNjUsIDk4MzYzMSwgCisgICAgMTI4MjE2LCA0MTk0NiwgNzUwMywgNTIzNSwgODAzLCA2ODM4MSwgMCwgMTAwNTc1LCA4OTg2LCA0MzgzOCwgMTA2MzIsIAorICAgIDExOTM0LCAxMTQ1MiwgMTMzMiwgMTIwNzA5LCAxOTQ5NzAsIDEyMDYwMiwgMCwgMTE4ODg3LCAxNzkxLCA1MTkxLCA5Mjg4LCAKKyAgICA2NDgyMiwgMjg5MiwgODMxOTIsIDQzMzk0LCA1NTUsIDEyOTQxOCwgMTI4NDc0LCA2NjY0NiwgMTI4MzI3LCAxMTkwMDIsIAorICAgIDEzMTUxLCA3NDUxMiwgNzI4OSwgNzI3MzksIDY0MTYxLCA4ODU0LCA2NDE2MiwgNTg1OCwgNDE5MjcsIDEwNTgyLCAKKyAgICAxMjA0NTcsIDE3ODQsIDEzNjEsIDEyMDkyMSwgMTIxNTE2LCA3OTA1LCAwLCA2NDg2OCwgMTI4ODEzLCAxMzE1OCwgOTIxNjYsIAorICAgIDcyMTEsIDcxODg0LCA5MzcxLCA3Mzk3MywgMTI4NDQxLCA2ODI4LCAxNjI1LCA3NjY0LCAxMjc4MDksIDEzNDIsIDY4NDQwLCAKKyAgICA2NDE3MSwgOTI2NDIsIDEwOTAzLCA5ODM0NDksIDkxNzgxOCwgOTI1MjcsIDEyOTM3NCwgNzA0MzgsIDQ0ODIsIDQxNjA2LCAKKyAgICAxMjg5MzQsIDEyNTAzMywgMTIxNDc1LCA5ODM4NTQsIDY0MzgxLCAxMDA1NDAsIDE5NDk3NCwgMTAwNjEyLCA0MjI0NSwgCisgICAgMTAwNjE0LCA0MTk3MiwgMTAwNjE2LCA0NDQsIDEwMDYxOCwgOTEyNywgNjY2ODcsIDY2NjE5LCAxMjY0ODksIDc4MDI1LCAKKyAgICAxMjY2MDYsIDExMzQ5LCA0MDk5MSwgOTE3NTcwLCAxMjkxMzIsIDcwMTc3LCAxMjA4MzAsIDk4MzQ1MCwgMTE5NywgCisgICAgMTI4MjgyLCAxMTQ5LCA2ODMxNiwgMTI4MDEwLCA5ODMyNTgsIDQwOTkwLCA0Mzc2NSwgMTIxMjYyLCAzNDkyLCA5MTc5MDYsIAorICAgIDExODc4NCwgMTI5MDI2LCAxMjkzNDYsIDEwMDU5MiwgMTI4MzgsIDY3MjA4LCAxOTk0OCwgNDE2NzcsIDMwOTksIDEwMDU5OCwgCisgICAgMTAwNTk3LCA0MTA4NywgMTAwNTk5LCAwLCA5ODMyNjEsIDExOTA1OSwgMTIwMzYsIDQxMzA5LCAxMjUyMTAsIDEwMDYwMywgCisgICAgODE1MiwgMTAwNjA1LCA0MTU1MCwgMTIyMjcsIDEwMDU0NSwgMTAwNjA5LCAxMjgyOCwgMTI3NTExLCA3NTAxNSwgMTIwOTY0LCAKKyAgICAxMjA3MDgsIDAsIDE5NDYxMSwgMTAzODYsIDc1MDY4LCAxMTk5NTUsIDEyNzMwMywgOTI2ODAsIDk4MzEzNCwgNjgxNTQsIAorICAgIDEyNzg3NiwgMTc0MywgMTk0ODYwLCAwLCA5MjIzOSwgNjUxODYsIDkxNzU3MSwgMCwgOTYwNiwgMCwgNzAwNTIsIDY0NDM5LCAKKyAgICAxMjg4NjQsIDY4MDYyLCA5MjY4NiwgMTAwNTg1LCAxMDA1ODQsIDQzODY2LCAxMDA1ODYsIDEwMDU4OSwgMzM5NSwgOTM2MiwgCisgICAgMTA4NzgsIDQzMjYwLCAwLCA3ODM2MiwgNjQ4MzAsIDEwMDg2NiwgMTI1MDQ2LCA0MTA5MSwgMzQyNiwgMTM0NCwgODg3MCwgCisgICAgMTIxMTAwLCA3MTM0NCwgNDczNSwgMTExMTEsIDYxMTksIDEyODIyLCA0MjY5OSwgMTIwNzQ1LCA5ODM4MjQsIDc0ODE4LCAKKyAgICAxNDIzLCAxMjg5MjMsIDQyNjM3LCA0MTA4MCwgOTgzMjEwLCAxMjAzOSwgMTA1NTksIDEyODYzNCwgMTE4ODkyLCAxOTQ5MTAsIAorICAgIDk0NzIsIDY3NzM0LCAxMTkyOSwgMTI2NTU3LCA3MTcwLCA5NTk2LCA2MTMwLCAxMjUyNjgsIDQzNjI5LCAxMTU3OSwgCisgICAgNzE0NzUsIDAsIDkyNTAxLCAxMjUwODEsIDc4MDQ2LCA2NjY5OSwgNjQ0NDAsIDEwMDQsIDkyNTg0LCAxOTQ3MzYsIDQzMjM0LCAKKyAgICA2NjAwOCwgMTI2MjcsIDAsIDY4NDE0LCA3NDYxNCwgNDM2MTksIDQzMzAzLCAxMTMwMCwgNDMzMDQsIDk2ODYsIDU4OTAsIAorICAgIDExNzc2LCA3NTU4LCA3MDEwOSwgNjU2MjcsIDcyODc2LCAxMDcxOCwgMTMxNTQsIDM0NjEsIDkxMzksIDc0OTQ3LCAKKyAgICA5ODMwOTQsIDAsIDExOTAyMywgNjUzNjUsIDczODc3LCA2NTYyOCwgNzgwMTksIDExOTI3MiwgODMxMTgsIDQxNzA4LCAKKyAgICAxMjg2MCwgMjY0MSwgMTIwNjksIDEwODM4LCA1NDAzLCAxMDM1MiwgNzAwODUsIDEwMDYxLCA0MzIzNywgMTI1MDU3LCAKKyAgICA1MTQwLCAyMDksIDEyODg0NywgNDE3MDQsIDQxMDU2LCA0MzA3OCwgMTI3Nzg5LCAxMTg4MDksIDY3MjMyLCAxMDg5OSwgCisgICAgNjU0NjksIDcwMTI1LCAxMDA1NzQsIDEwMDU3MywgMjQxMCwgOTkzLCA4MzExNywgMTAwNTc3LCAxMDA1ODAsIDc4NjkzLCAKKyAgICAxMDA1NjAsIDEwMDU1OSwgNzIzMiwgMCwgMTE5MjUzLCAxMjQ5NjMsIDcxMTAsIDc0NDYyLCAyMDY2LCAxMDQ4OSwgNDIxNjYsIAorICAgIDQzNDYzLCAxMDY1OSwgMzYwMCwgNjg4NjMsIDQyMjQsIDEzMzYsIDQxNTE4LCAxMjEzMTEsIDAsIDkxNzU4OSwgOTgzNzk0LCAKKyAgICA0MTEzOSwgNjQ4MjAsIDkyNTM4LCAxMjk2NiwgNDExMzQsIDEwMDU1MywgMTAwNTU2LCAxMDA1NTUsIDEwMDU1OCwgMjcyLCAKKyAgICA0MjYzLCA4NzkzLCA5ODMzODUsIDAsIDQxNTAyLCAxMjgxMzMsIDk4MywgMTI1NDksIDEwMDU2MywgMTAwNTYyLCAxMTkwLCAKKyAgICA0MTA5LCAxMzM1LCA4NDEsIDU4ODgsIDQxMzU4LCA2NDg2MywgOTU0NCwgNDM0ODEsIDAsIDEyMDkyNiwgNzAwMjcsIDIwOTksIAorICAgIDUxMjAsIDI0MDksIDc3OTksIDk4Mzk1NCwgNzQ0MjQsIDk4Mzg5NiwgMTIxMDQxLCA0NzMxLCA5MjI3OSwgNjY2MjksIAorICAgIDEyODEyNywgOTI1MjUsIDEyNTUsIDQxNDksIDkyNDcsIDc0OTc3LCA5OTEzLCA5ODM4MjgsIDEwMTAyNywgNjQ5MTQsIAorICAgIDEyNTAwMiwgNjUxMDEsIDExMzcxNCwgMTE2OTQsIDkyNDc1LCAxMTY5MCwgNTgzNSwgMTI3MDk2LCA2NjYyNSwgMTA4NDIsIAorICAgIDQxMzU0LCA0MjEyMywgNDMwOTcsIDExNjg4LCA2NjYzNCwgMTA5NCwgMTk0LCA2NDY5MiwgOTE3OTAwLCA4MTgwLCAKKyAgICAxMjUwNTUsIDk4MzkxMiwgOTk3MiwgNzM4NjUsIDQ1MTksIDYxMTQsIDEwODk4LCA0MzA3MiwgOTI0NjUsIDAsIDkzOTYwLCAKKyAgICA5ODMzMjQsIDc0MDU1LCAxMDY5NSwgMTI5MDU4LCA3NTQwLCAwLCA4ODEsIDc4NTcsIDYwNjcsIDY1MTY0LCA5MTc5NDksIAorICAgIDkxNzg5NywgMTI4MzI2LCAxMzMxMSwgNjg0MDMsIDQxODU3LCA2NDMyMSwgODM1OSwgODMyODYsIDEyNjg5LCA5ODMzMTIsIAorICAgIDExMjQ1LCAxMjgxMDUsIDk4MzMxNCwgNzE4NTksIDY4MTgzLCA5ODM0MTUsIDE5NDgyOSwgMTI4NywgNTQzNiwgOTgzMDY1LCAKKyAgICA3MTA5NywgNzQxNDIsIDkyMzI4LCA3NDE1MiwgNzAyMDUsIDYwNTEsIDEwNDk3LCA2OTY2OCwgODk4NSwgMTIxMDksIAorICAgIDgyOTYyLCAxMjczOTcsIDkzMDQzLCAxMjEwMTMsIDAsIDM2NTIsIDEwNTM3LCAxMjAyODIsIDEyNzYsIDEyMDQ0MCwgNjU0OSwgCisgICAgMjc5LCA3Mzc0NSwgMTI3ODIzLCAxMjg2NjQsIDgzMjQ0LCAxNDg5LCAxMjA2MjIsIDAsIDAsIDM4OTksIDEwMDcsIDQyMTI0LCAKKyAgICA0MzgyOCwgNDIxMjIsIDkyMzM3LCA5MjM2NywgMTI1MTg3LCAxMTk4NSwgMTM0NSwgNzg2MDAsIDExOTgzMiwgOTE3NTYzLCAKKyAgICA4OTU2LCA0MzA4MywgOTQwNTcsIDQyMTM4LCA3ODYxMCwgMTI5MTMxLCA2NDMwLCA3ODYwOCwgNzg2MDQsIDc4NjA1LCAKKyAgICA2Mjg1LCA3ODYwMywgNzg2MTIsIDc4NjEzLCA2NTk0MiwgNDkyLCA4Njg1LCAxMjg0ODEsIDEyMTI3MCwgMCwgNzUwMjcsIAorICAgIDQzNzEyLCAyNTgyLCAxMTQ3MCwgNjQ1MzgsIDc0NDQsIDcyODYzLCA3ODYxNiwgMjI5NywgMTI5MzQxLCA3MzgzNywgCisgICAgMTE5ODIzLCAyNTI3LCAxMTk4MjQsIDE5NywgMjc5OSwgOTI1OTQsIDQxOTQ0LCA4MzE1MiwgOTkzMywgNzQwMTEsIDY2NTE1LCAKKyAgICA3NjcsIDU1MjQsIDcwMjgsIDE5NTA2NSwgOTIxNjgsIDExOTgyNywgMTE5ODE3LCA5Mjk1MCwgNzg2MzMsIDEwODk2LCAKKyAgICA2MzkxMCwgMTc5OSwgMTIwNDk3LCA2OTcxLCA3NDMzNiwgNzA3MzEsIDAsIDY1MzQwLCAxMTg5NzksIDQxNTUxLCAyMjYyLCAKKyAgICA5NDAxOCwgMTE4ODIzLCA2NTM1MywgMTAwNDc5LCA0NjMxLCAxMTg5OTYsIDE5NTAyNywgNjQwNywgMTEzNzM3LCA2MzM4LCAKKyAgICA0MzIxNCwgMTI3MTYzLCA3NTcwLCAxMjEwMTcsIDMxOTIsIDEyMDMzMCwgODQxNCwgOTgzMzg4LCA5Mzk4MywgMTk1MDQzLCAKKyAgICAwLCAwLCA5MTY0LCA2NjYxMiwgOTM5NTksIDMxNzEsIDY2MjMsIDQ5NjEsIDY4Mzk2LCA4ODYsIDU1MjE2LCA4NjU0LCAKKyAgICA3ODgzMiwgOTk5MywgNzQzOTAsIDY0NjAzLCA3MDA2NiwgNjkyNDEsIDk1OTksIDc4NjI5LCA0MzA4NCwgNzg2MjcsIAorICAgIDc4NjI4LCA3ODYyNSwgMjM5OSwgNjk2OTMsIDg5OTQsIDEwOTQ0LCA0MTIwOCwgOTgzNzEzLCA0MTE2OCwgODE3OCwgCisgICAgNzQ4NTksIDMzNjcsIDkyMzM0LCA0MjUxMCwgNzg2NDEsIDc4NjM2LCA2ODA0LCA3MDQ3NSwgMTk0NywgNzI3NzAsIDAsIAorICAgIDkyNjgxLCA0Mjc1OSwgMTEwNjgsIDE3MDUsIDkzMzEsIDAsIDc0Nzk4LCA5MTgxLCA2NTM1OSwgNzI3MjIsIDgwMTcsIAorICAgIDExOTgzMSwgNjUwOTYsIDY2NzIwLCA2ODIyMywgNDM0NzUsIDkxNzU0OCwgNDkwOSwgMTIxMjYsIDEyNzU0MCwgMTAxMDE1LCAKKyAgICA0OTA0LCA5Mjk2MSwgNDM1MDMsIDEzNjUsIDkyNTMsIDQyNzU3LCA0MzQzNiwgNzQ2MiwgMTI3NzcyLCAwLCAwLCA4MzE3MywgCisgICAgNjY4NDUsIDY0NDE1LCAxMjA1MDAsIDgzMTcyLCA1Mzk4LCAxMjUwMzUsIDEyNzM4NiwgOTM5NTMsIDEyNzM2MiwgOTgzNzgyLCAKKyAgICAxMTkwMTUsIDgzMTcxLCAxMjcwMDcsIDk0NzYsIDk4MzA2NiwgMTIwNjk1LCAxMjc2MywgMTAwNTIzLCAzNjI5LCAxMjA4NDQsIAorICAgIDEzMDA1LCAxMTE4MSwgMzYyOCwgMTE5ODM0LCAwLCA5MjUwMiwgMzQ2OSwgNDIxMDcsIDQyMTE2LCA5MTc1NzgsIDY0ODA5LCAKKyAgICAyOTI4LCA0OTA1LCA5ODUzLCA4NTEsIDkwNDAsIDEyMDM3MiwgNjQ2NjUsIDQzMDg2LCA5MTE0LCA0Mzg3MCwgNDI1ODMsIAorICAgIDkzMTUsIDQ4MjIsIDQ5MDYsIDM4NTIsIDI4NDcsIDExOTgyMSwgMzIzNiwgMTEzMTcsIDEyNTEsIDc3NzcsIDQxODUyLCAKKyAgICAxMTQxMCwgMTA5NjQsIDAsIDQzMjIyLCAxMjY0NiwgMTIwMjY5LCAxMDI1OSwgOTg2NSwgNjU4MjEsIDc1MDQ2LCA2MDE4LCAKKyAgICA2ODI5MywgMTI1MDEwLCAxMjI3NiwgMTE5MTEwLCA2ODM3MiwgMTI4MjU1LCA5MjI1OSwgNzE4OTMsIDExOTgxMywgCisgICAgMTE5ODI4LCAxMDQ2NywgOTgzODE0LCAyNDQzLCAxMDkxOCwgNzgyMTcsIDc3OTQ3LCAxMDAxLCA5MjQxLCAxOTI3LCAwLCAKKyAgICAxMjQ5NDIsIDczOTg3LCAxMjc4ODIsIDcxODk1LCA5MzAxMiwgNzk5MiwgNzc5NDMsIDQzOTM5LCAxMjg2NywgMTI4NjQ5LCAKKyAgICA4MjYwLCA3Nzk0NSwgNzUxOSwgMTE1MDUsIDEyMjc0LCA4OTA0LCA1MTgsIDY1ODU3LCAxMjgzNjEsIDEyODY3NCwgMTMyMDQsIAorICAgIDQzODcsIDg1NywgMTIxMjUyLCA2NTM2OSwgMCwgOTIzMzYsIDQzMTI1LCAxMTg0MiwgMCwgNzEwNzIsIDEyMTQ2MiwgMCwgCisgICAgNTEzNiwgMTk2OCwgMTI4OTA2LCAxMjY2MjcsIDEzMzcsIDY0OTY3LCAxNjI5LCAwLCA3OTYsIDY2NTA2LCAxMjg0NDIsIAorICAgIDc0MTIzLCAxMjg3NywgMTIwNjQ5LCA0MjMxNCwgNDMzODgsIDQzODI2LCA0Mzk0NCwgNjEyMCwgNDc4LCA2NTE1MSwgCisgICAgNjgxMjgsIDExOTA0NCwgNDMwODIsIDYwMTYsIDAsIDQyMjg0LCA3MTg5NCwgNDI3NiwgMTIwNiwgMzYxOSwgNDE2MzgsIAorICAgIDY5NjkxLCAzODQzLCAxMjAxMSwgODg1MywgMzM2MSwgODMxNzksIDQ5MCwgMTA3MTUsIDc1NzgsIDY4Mzg0LCA5Mjc1NCwgCisgICAgNjUzNTAsIDEwNTMwLCAxMjM0OCwgODY1MywgNjgyNDUsIDQyNDM1LCA2MTU0LCA5NTUxLCA2NTM1NCwgNzg1MjIsIDc4NCwgCisgICAgNDIzOTcsIDMzNCwgNzI3MzIsIDQyNDE2LCA2NTM1NiwgNjUyNzMsIDQzOTM3LCA2OTY2NiwgNDQ0MiwgMTAzNjQsIDQzOTM1LCAKKyAgICA3NzgsIDQxNjI2LCA0MjQ1NSwgNzk4OSwgNzQwNjMsIDMyMjcsIDY5OTA3LCA0MzkzMiwgMTExMDIsIDI5MTUsIDExNTAyLCAKKyAgICA0MTAyMiwgNDE3MDIsIDEwMzA5LCAxMjcwMzUsIDc1MDMyLCAxMjAyNzMsIDY5NzUsIDEyODc5MywgNTQxNSwgMTIxNzYsIAorICAgIDEyMDY1MywgNzQxOTMsIDM0NjIsIDQzOTQwLCA0MjYyOSwgNzg2OTEsIDcxMTc1LCA0Mzk0MiwgMTI3MjU2LCA5NzU5LCAKKyAgICAxMjcyNTUsIDcwMDU3LCAxMjE0NDIsIDgxMTQsIDc4Njk4LCA3ODY5NywgNzQ4MjMsIDc4Njk1LCA4NzEwLCA0MjQ5NSwgCisgICAgMTE4OTU2LCA3MDE4OSwgNDA1MSwgMTA0NjAsIDQzMzY0LCA3MTIwNiwgMTM1NiwgMTIxNjEsIDQyNzEzLCAxMjg4NTcsIAorICAgIDEyNzI2OCwgMTYxOSwgOTcwMywgNDMxNTIsIDQyNDg5LCA0MjExMiwgNjQ0MzYsIDE4NzUsIDEwODA4LCA0MjEwOSwgCisgICAgMTIwMjg0LCA0MTg2MCwgNjQ4NjIsIDEzMzA1LCA2NDkwNywgNTI4OSwgMTMxNDQsIDEyODY1OCwgOTgzMjI0LCA1NTc1LCAKKyAgICA5Njc1LCA3MTEyOSwgNTk0MCwgMjI2LCAyNjQ5LCA2MzM2LCA5ODMyNzksIDY1NTkzLCA0MzIzNiwgMzM4MiwgNDI0NDksIAorICAgIDY0OTgsIDE2NTgsIDExOTM2LCA3ODIzMiwgMTAwNDA5LCAxMTI2OSwgMTAxNTEsIDczNzU5LCA0MzEwMCwgNjk4ODgsIAorICAgIDY1NTA4LCAxMjk0MTEsIDAsIDEyMTQ1MSwgODkzNSwgNzgyMzQsIDEyOTMzNywgMTIwNDUxLCAwLCA2MTYsIDc0NzUzLCAKKyAgICA2NTE3OCwgNDY4NCwgNzg3MDEsIDExOTY1MywgMjIzNiwgMTI2NTUxLCAxMjQ5OTIsIDYwNDgsIDc0NDYwLCA0MjExMCwgCiAgICAgNzM5NjUsIDEwODcwLCA4NTU3LCAxMTA1NCwgNjg2NjQsIDc1MDUxLCA5NjgxLCA0NDc1LCA2NzQyOSwgNDExNDIsIDIxMDAsIAotICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgOTgzMjk2LCA5MTc5ODcsIAorICAgIDEyNTAyNCwgMTIwNzMxLCA2MDM1LCA3Mzc5NiwgNzY1MSwgNjg0NiwgNjQ0NDMsIDk4Mzk1NywgMTk0OTQxLCA5MTc5ODcsIAogICAgIDAsIDExODk2NiwgNzQxNDQsIDQwOTk3LCA2ODQ4OCwgMTAzOTIsIDEwMzI4LCA0MDk5OCwgNDM0NjIsIDc0NDg4LCA3MTE4MiwgCi0gICAgOTgwMCwgODk3OSwgMCwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCAxMjkwOTQsIDEwMzQ0LCAwLCA1MTE1LCAKLSAgICA1Mzk0LCA0MzI0NiwgNzgyNDMsIDUxMTMsIDY2NTA1LCA0MTIwMCwgMTI4NTgyLCA0NDI1LCAxOTQ2NjksIDAsIDAsIAotICAgIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDc4NTQ1LCAxMjg3NzEsIDY2ODI0LCA2NTMzOCwgCi0gICAgOTgzNjc2LCAwLCAxMTk1ODIsIDQ0NzQsIDEyODkzNiwgNDMwOTMsIDQzOTY0LCAxNTg3LCAwLCAxMjczNzIsIDY0NDc1LCAKLSAgICAxMTkyMTcsIDEzNjksIDk4MzY3MiwgOTk1OSwgNzkyNywgNDM5NjMsIDQ1NjAsIDEyMDc5MywgNjc4MTEsIDkyMjc3LCAKLSAgICA5ODM2MjEsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgODE5NCwgNjU0NjIsIAotICAgIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAwLCA2NTM0MSwgNjc3MDMsIDY1ODI5LCA3OTI1LCAKLSAgICAxMTk4MjIsIDEwNDc1LCAxMTM4MjUsIDEyNzAxMSwgMTM1MiwgMTEwNjksIDc3MDcsIDEyNzU2MCwgMTI2NDg2LCA2NTI3OSwgCi0gICAgMTI3MTAyLCA2ODIwNywgNzQ5NTYsIDcwOTksIDYwNDAsIDY3NjgxLCAxMDA3MSwgNzg1NTQsIDkzMzYsIDQzNzUwLCAKLSAgICAxMjEwNzQsIDg4OTksIDc3OTgsIDY0NDc0LCA2NDI1OSwgNjk4NzMsIDY1MTg4LCA3ODIwLCA0MzAxOCwgMTI3MDgyLCAKLSAgICAxMjg4OTgsIDc3NDYsIDE0OTIsIDc4NTUxLCAxMDg4NCwgNzUwNzUsIDY2ODY2LCA1MTI3LCAxMTI4NSwgNDI1MDEsIDU0OTUsIAotICAgIDQyNzMsIDQzMDk1LCA0MTQyNiwgMTA4NDksIDU3MzAsIDI5OTksIDYzNDIsIDY4NjM2LCA3NDMwNCwgMzcxLCA2NDM3MywgCi0gICAgNjAyMywgMTY5LCA1NDk3LCAxMTcwOCwgNzUwMjgsIDEyODYwMywgNjMyMywgMTI5MDY1LCA4MjI0LCAxMjg0MTcsIDg5MzgsIAotICAgIDYwNDMsIDEyNzM4LCAxMjA2NzEsIDk4MzA3NiwgNTMyMSwgNjg2NDUsIDE5NDc5OCwgMTIwMjUxLCAyNTg5LCA3NDMzMiwgCi0gICAgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjgxNjMsIAotICAgIDc0NTEzLCA2MDQ5LCAwLCA0MDI3LCA4MzQsIDExODk2MiwgMTgwMywgOTgzODIyLCAxNTAzLCA3ODMzNiwgMTI3MTczLCAKLSAgICA3MTMxMiwgNTczMSwgMTM4MSwgMjM4NywgMTI2NjEwLCA3MDgwOCwgODI4OSwgNjQ1MjUsIDY1ODE3LCAyODgxLCA0MzE0MiwgCi0gICAgMCwgOTYwMSwgMjg3OSwgOTY2OCwgOTc2NiwgMCwgNTcyOSwgMTI5MTEwLCA3MTIzMCwgNjAzNiwgNjQ4ODEsIDQwMjYsIAotICAgIDkzNjEsIDEyNzA5MSwgMjg4NywgNzAzODksIDM1MjYsIDYyOTgsIDExOTg1MSwgNzc4OTcsIDEyMDA5NSwgNzg1MTksIAotICAgIDExODk2NCwgODU3MiwgNjAyMSwgNzc4OTYsIDEyODI4OCwgNzExNzQsIDQzMTU1LCAwLCA3MTE5NywgMzE0NiwgMTA5NTksIAotICAgIDk0ODMsIDgzMjE5LCA3Nzg5MywgMTA5ODEsIDE2NiwgOTE3ODQxLCA4NjM1LCA5MTc4NDAsIDEwNjIzLCA0MDgsIDExOTA1OCwgCi0gICAgMTI3NTA3LCAxMzI5OCwgMTI3MjUzLCA3NDI2LCA0MTY0MSwgMTI3MTcsIDk4Mzc5NSwgNzYwNywgMTA2MzksIDQzMzk2LCAKLSAgICAxMjkzMDAsIDExOTA4OSwgNDE2NDMsIDc0MTM0LCA5ODMwNTQsIDg3MTMsIDQxNjQwLCAxMDIyMSwgNDE2NDUsIDY2MjkzLCAKLSAgICA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAKLSAgICAxMjEwNjksIDAsIDExODg1OSwgMCwgNTgwOSwgMTk1MCwgMTE5MzU2LCA5MjQzMiwgNjgzMzksIDEyODk0MywgNDIxMzYsIAotICAgIDEyMTQ0MCwgMCwgMCwgMCwgMzI0NywgOTI0MDIsIDY1MDE3LCAxMjg3OTQsIDY4NDI4LCA2NjY2OCwgMCwgMTIxMTEyLCAKLSAgICAxMDk4MywgMCwgMTI4Nzg3LCAwLCA0MTU2NywgMTE5ODUyLCAwLCAwLCA3ODQ0NiwgMTE5ODUzLCAxMjc5MjIsIDAsIDgyODUsIAotICAgIDEyNjUxNiwgNDUwOSwgMTIxMDQzLCA2NjQ3MSwgMTIyMTYsIDEyODgwNiwgNDA5ODgsIDgzMjIxLCA3NDgwOSwgNDE3MjcsIAotICAgIDAsIDQyODQ4LCAyMzk2LCAxMjgwODMsIDE5NDg5MiwgNzQwMTgsIDkxNzUzOCwgNjQ5NDAsIDcwMjcsIDM4ODYsIDAsIAorICAgIDk4MDAsIDg5NzksIDExOTE1NiwgMTMzMDcsIDQxMDAwLCAwLCA1MTE0LCA2NDg3LCAzMzg2LCA3MDczMCwgMTAzNDQsIAorICAgIDEyNTAzMiwgNTExNSwgNTM5NCwgNDMyNDYsIDc4MjQzLCA1MTEzLCA2NjUwNSwgNDEyMDAsIDEyODU4MiwgNDQyNSwgCisgICAgMTk0NjY5LCAxMDA0MDUsIDAsIDQzMDc0LCA3Mzc5OSwgMTI5MDc2LCA3ODE0NywgNTExMiwgMTIxNzMsIDM0NDYsIAorICAgIDEyODc3MSwgNjY4MjQsIDY1MzM4LCAxMjg5NjksIDAsIDExOTU4MiwgNDQ3NCwgMTI4OTM2LCA0MzA5MywgNjI4MiwgMTU4NywgCisgICAgMCwgMTAwNTU0LCA2NDQ3NSwgMTE5MjE3LCAxMzY5LCA5ODM2NzIsIDk5NTksIDc5MjcsIDQzOTYzLCA0NTYwLCA2NjkxMCwgCisgICAgNjc4MTEsIDkyMjc3LCAxMjA2MTQsIDY0OTQ4LCA0NDMwLCA0Mzk2MSwgNDI2MDEsIDQ1MTQsIDY2NDM0LCA5Mzk1NSwgCisgICAgODE5NCwgNjU0NjIsIDEwNjI2LCAxMDk2NSwgMTIwOTA1LCA4ODkzLCA5ODMzMDMsIDEyNTQyLCAxOTQ4NTcsIDY1MzQxLCAKKyAgICA2NzcwMywgNjU4MjksIDc5MjUsIDExOTgyMiwgMTA0NzUsIDExMzgyNSwgMTI3MDExLCAxMzUyLCAxMTA2OSwgNzcwNywgCisgICAgMTI3NTYwLCAxMjY0ODYsIDY1Mjc5LCAxMDA0MDcsIDY4MjA3LCA3NDk1NiwgNzA5OSwgNjA0MCwgNjc2ODEsIDEwMDcxLCAKKyAgICA3ODU1NCwgOTMzNiwgNDM3NTAsIDEyMTA3NCwgODg5OSwgNzc5OCwgNjQ0NzQsIDY0MjU5LCA2OTg3MywgNjUxODgsIDc4MjAsIAorICAgIDQzMDE4LCAxMDA0MTAsIDEyODg5OCwgNzc0NiwgMTQ5MiwgNzg1NTEsIDEwODg0LCA3NTA3NSwgNjY4NjYsIDUxMjcsIAorICAgIDExMjg1LCA0MjUwMSwgNTQ5NSwgNDI3MywgNDMwOTUsIDQxNDI2LCAxMDg0OSwgNTczMCwgMjk5OSwgNjM0MiwgNjg2MzYsIAorICAgIDc0MzA0LCAzNzEsIDY0MzczLCA2MDIzLCAxNjksIDU0OTcsIDExNzA4LCA3NTAyOCwgMTI4NjAzLCA2MzIzLCAxMjkwNjUsIAorICAgIDgyMjQsIDEyODQxNywgODkzOCwgNjA0MywgMTI3MzgsIDEyMDY3MSwgOTgzMDc2LCA1MzIxLCA2ODY0NSwgNjU1MywgCisgICAgMTIwMjUxLCAyNTg5LCA3NDMzMiwgMTY4OSwgNzgwMiwgNDY4MywgNzQzMTgsIDQyNzA0LCA5Mjk0MCwgMTE5MDUsIAorICAgIDk4MzYxNSwgMCwgMTI4NTE2LCAxMjcwMTcsIDc0NTEzLCA2MDQ5LCAxMjgyMzksIDQwMjcsIDgzNCwgMTE4OTYyLCAxODAzLCAKKyAgICAxMjgxMjAsIDE1MDMsIDcyNzY5LCAxMjcxNzMsIDcxMzEyLCA1NzMxLCAxMzgxLCAyMzg3LCAxMjY2MTAsIDcwODA4LCAKKyAgICA4Mjg5LCA2NDUyNSwgNjU4MTcsIDI4ODEsIDQzMTQyLCAwLCA5NjAxLCAyODc5LCA5NjY4LCA5NzY2LCAwLCA1NzI5LCAKKyAgICAxMjkxMTAsIDcxMjMwLCA2MDM2LCA2NDg4MSwgNDAyNiwgOTM2MSwgMTI3MDkxLCAyODg3LCA3MDM4OSwgMzUyNiwgNjI5OCwgCisgICAgMTE5ODUxLCA3Nzg5NywgMTIwMDk1LCA3ODUxOSwgMTE4OTY0LCA4NTcyLCA2MDIxLCA3Nzg5NiwgMTI4Mjg4LCA3MTE3NCwgCisgICAgNDMxNTUsIDk4MzgxNiwgNzExOTcsIDMxNDYsIDEwOTU5LCA5NDgzLCA4MzIxOSwgNzc4OTMsIDEwOTgxLCAxNjYsIAorICAgIDkxNzg0MSwgODYzNSwgMTI4NzE0LCAxMDYyMywgNDA4LCAxMDA0ODAsIDEyNzUwNywgMTMyOTgsIDEyNjUxOCwgNzQyNiwgCisgICAgNDE2NDEsIDEyNzE3LCAxMjA2NTgsIDc2MDcsIDEwNjM5LCA0MzM5NiwgMTI5MzAwLCAxMTkwNTMsIDQxNjQzLCA3NDEzNCwgCisgICAgOTgzMDU0LCA4NzEzLCA0MTY0MCwgMTAyMjEsIDk4NTIsIDY2MjkzLCA2NjQ1LCA2NDYsIDY2NzI2LCA2NjcxMSwgNDIxMjksIAorICAgIDY4MjU1LCA3NzkwMSwgMzQ3MiwgODY5NywgMCwgMTIwOTM2LCAxMjEwNjksIDEyOTE2OCwgMTE4ODU5LCAxMjUyMDMsIAorICAgIDU4MDksIDE5NTAsIDExOTM1NiwgOTI0MzIsIDY4MzM5LCAxMjg5NDMsIDQyMTM2LCAxMjE0NDAsIDAsIDAsIDAsIDMyNDcsIAorICAgIDkyNDAyLCA2NTAxNywgMTI4Nzk0LCA2ODQyOCwgNjY2NjgsIDE5NDg4NCwgMTIxMTEyLCAxMDk4MywgOTE3NzY3LCAKKyAgICAxMjg3MDAsIDAsIDQxNTY3LCAxMTk4NTIsIDAsIDAsIDc4NDQ2LCAxMTk4NTMsIDEyNzkwNywgMCwgODI4NSwgMTI2NTE2LCAKKyAgICA0NTA5LCAxMjEwNDMsIDY2NDcxLCAxMjIxNiwgMTI4ODA2LCA0MDk4OCwgODMyMjEsIDc0ODA5LCA0MTcyNywgOTE3ODI1LCAKKyAgICA0Mjg0OCwgMjM5NiwgMTI4MDgzLCAxOTQ4OTIsIDc0MDE4LCA5MTc1MzgsIDY0OTQwLCA3MDI3LCAzODg2LCA5ODMyNTksIAogICAgIDQyNDU3LCA5Mjg4OCwgODMyOTksIDk5NiwgNjgxMjMsIDk0MDU4LCA0MjQ5LCA5MjQxMCwgNjk2NTAsIDExNzA3LCA4MjIyLCAKLSAgICA3MzgyNSwgNzkzOSwgNzEyMTMsIDkyNDYwLCAxMjc4MDEsIDEyMTQwOCwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAotICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDEyNTU4LCAxNTQwLCA5MTc1NDksIDEwMDUyLCA0MDk4MiwgCi0gICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMCwgMTU2MywgMTI4MDM0LCA5NjE5LCAKLSAgICAxMjA4NDAsIDkxNzkwNSwgMTIwOTU0LCAxMjc4NzIsIDcxMzYzLCAzNTYwLCA3Nzk3LCA2MDcwLCAxMDAwNiwgMTI4OTIyLCAKLSAgICAyOTIyLCA2MDgyLCA3MDE0NywgNjUwMDksIDk4Mzk0MiwgMTI1NjcsIDY2NzEyLCAwLCA0MTQxMiwgMTI4MTMxLCAxMTk1OTEsIAotICAgIDM2MDcsIDkyMDAsIDEwMDQ2LCA5NjEyLCA0MjE1MywgODIxOCwgOTQ4NSwgMCwgMjAzMiwgNzgzNTQsIDgzNDYyLCAKLSAgICAxMTkxMzEsIDAsIDAsIDY3ODI2LCA0MzA4NSwgNjA1NywgNTA4LCA5Mzk2OCwgOTI5ODksIDY3OTY4LCAwLCA5MjE5OCwgMCwgCi0gICAgMTI4ODMxLCA2MzgsIDYwODMsIDExOTA3MiwgMTI0OTUwLCAwLCAyMzA1LCA3ODM0OCwgNjgwOTYsIDkxNzc3MiwgNjA1NiwgCi0gICAgNjY1OSwgNjc5NjksIDk4MzI5MCwgNjA4NSwgMCwgMCwgMzkxNSwgNDE2MzQsIDAsIDQxNjM5LCA2MzkxMiwgMTE5NDEsIAotICAgIDk4Mzc4MywgNDAyOCwgMTc4NywgNDIxODAsIDQzMDk2LCA0Mzc1MywgMzI0OSwgMTc2OCwgOTM5ODIsIDEyMzI4LCA1MDEsIAotICAgIDkzOTg1LCAxMDYwMSwgMCwgNTgzLCAwLCA0MTk3NywgMCwgNjYwMDQsIDY2NDE2LCA2NTA1LCA3NDAxMCwgOTgzMjUwLCAKLSAgICAxMzA2NCwgNTUyNjcsIDExOTExMywgNjUwMCwgNTUyNiwgNjUwNDksIDAsIDEyOTkwLCAwLCA5MjM3NiwgMTI3NDUsIDk2NzgsIAotICAgIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMCwgNDIwOCwgNzgzNDEsIAotICAgIDc4NTY3LCA3ODM0MiwgNjc3NDIsIDk4MzIwOCwgNzQxMDEsIDEyODYwNSwgMTE3NjIsIDAsIDcwMDk2LCA2ODM1LCA2ODAxMCwgCi0gICAgNjY0NzUsIDEyMDI2MCwgNTAyNywgNzgxNzIsIDEyODg3OCwgMTE5ODMwLCA1MDY5LCA3MzczNiwgNTAyOCwgOTg5NywgCi0gICAgOTI3NzQsIDczNzM5LCA1MDI2LCA5ODMyNTUsIDY4NjM5LCA2MzMxLCAxMDA3OSwgODkzMSwgMCwgMTQxNSwgODg2NiwgCi0gICAgNDE5MDEsIDc0NzkwLCA3ODEzOCwgMTE5MzYxLCA5ODM1NjQsIDQzMTA2LCA1MDI5LCA2NTMwOSwgMTU4MCwgMzU5OCwgCi0gICAgNjg0MjQsIDQxMDcwLCA3NzkwMywgNzY1OCwgMzQ0MCwgNzgyMTUsIDE1NjIsIDEyODY1NiwgMTI3MTc1LCAxMTkzNTgsIAotICAgIDE3MTYsIDk4MzY3OSwgMTA2MDAsIDc4NTU4LCA2MjAsIDQxMDAxLCA2MDI4LCA3MDQ0NSwgNDI4OTIsIDAsIDcxMTE2LCAKLSAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA2OTg5MiwgOTgzMjA5LCA3NTAzOSwgMTE4ODg1LCAxMjc5NTYsIAorICAgIDczODI1LCA3OTM5LCA3MTIxMywgOTI0NjAsIDcyNzQ3LCA2NzEzMSwgMTI4MzU5LCA4NTM0LCA2OTg1MywgNDA5ODMsIDAsIAorICAgIDEyMTQyMSwgMCwgNzIwMSwgMTI1NjEsIDEyMDg2NiwgNDIzNzEsIDExODQ0LCAxNTQwLCAxOTQ4MjcsIDEwMDUyLCA0MDk4MiwgCisgICAgMTE5ODQxLCAwLCAxNDg4LCA3MTE3NywgMCwgMTk0ODMxLCA5MTc1NTksIDEyODQwMSwgMTk0OTIwLCAxNTYzLCAxMjgwMzQsIAorICAgIDk2MTksIDEyMDg0MCwgMTI5NDE2LCAxMjA5NTQsIDEyMTQ2MCwgNzEzNjMsIDM1NjAsIDc3OTcsIDYwNzAsIDEwMDA2LCAKKyAgICAxMjg5MjIsIDI5MjIsIDYwODIsIDcwMTQ3LCA2NTAwOSwgOTgzOTQyLCAxMjU2NywgNjY3MTIsIDAsIDQxNDEyLCA3ODY1MSwgCisgICAgMTE5NTkxLCAzNjA3LCA5MjAwLCAxMDA0NiwgOTYxMiwgNDIxNTMsIDgyMTgsIDk0ODUsIDY2NzY0LCAyMDMyLCA3ODM1NCwgCisgICAgODM0NjIsIDExOTEzMSwgMCwgMCwgNjc4MjYsIDQzMDg1LCA2MDU3LCA1MDgsIDkzOTY4LCA5Mjk4OSwgNjc5NjgsIAorICAgIDkxNzk0MSwgOTIxOTgsIDAsIDEyODgzMSwgNjM4LCA2MDgzLCAxMTkwNzIsIDEyNDk1MCwgNzAxNDQsIDIzMDUsIDc4MzQ4LCAKKyAgICA2ODA5NiwgOTE3NzcyLCA2MDU2LCA2NjU5LCA2Nzk2OSwgOTgzMjkwLCA2MDg1LCAwLCAwLCAzOTE1LCA0MTYzNCwgCisgICAgMTI4MjI3LCA0MTYzOSwgNjM5MTIsIDExOTQxLCA5ODM3ODMsIDQwMjgsIDE3ODcsIDQyMTgwLCA0MzA5NiwgNDM3NTMsIAorICAgIDMyNDksIDE3NjgsIDkzOTgyLCAxMjMyOCwgNTAxLCA5Mzk4NSwgMTA2MDEsIDk4MzI5NCwgNTgzLCAxMTkzNTIsIDQxOTc3LCAKKyAgICAwLCA2NjAwNCwgNjY0MTYsIDY1MDUsIDc0MDEwLCA5MTc4MzMsIDEzMDY0LCA1NTI2NywgMTE5MTEzLCA2NTAwLCA1NTI2LCAKKyAgICA2NTA0OSwgMTI4MDI4LCAxMjk5MCwgOTgzOTAxLCA5MjM3NiwgMTI3NDUsIDk2NzgsIDEyMTEwOCwgMTIwNTg3LCA5ODY5LCAKKyAgICA4MzE1MCwgMTc3MSwgMTI4OTY1LCA4OTM2LCA5Mjk2NCwgMTI1MjczLCA0MjA4LCA3ODM0MSwgNzg1NjcsIDc4MzQyLCAKKyAgICA2Nzc0MiwgOTgzMjA4LCA3NDEwMSwgMTI4NjA1LCAxMTc2MiwgMTI5MzE3LCA3MDA5NiwgNjgzNSwgNjgwMTAsIDY2NDc1LCAKKyAgICAxMjAyNjAsIDUwMjcsIDc4MTcyLCAxMjg4NzgsIDExOTgzMCwgNTA2OSwgNzM3MzYsIDUwMjgsIDk4OTcsIDkyNzc0LCAKKyAgICA3MzczOSwgNTAyNiwgOTgzMjU1LCA2ODYzOSwgNjMzMSwgMTAwNzksIDg5MzEsIDAsIDE0MTUsIDg4NjYsIDQxOTAxLCAKKyAgICA3NDc5MCwgNzgxMzgsIDExOTM2MSwgOTgzNTY0LCA0MzEwNiwgNTAyOSwgNjUzMDksIDE1ODAsIDM1OTgsIDY4NDI0LCAKKyAgICA0MTA3MCwgNzc5MDMsIDc2NTgsIDM0NDAsIDc4MjE1LCAxNTYyLCAxMjg2NTYsIDEyNzE3NSwgMTE5MzU4LCAxNzE2LCAKKyAgICA5ODM2NzksIDEwNjAwLCA3ODU1OCwgNjIwLCA0MTAwMSwgNjAyOCwgNzA0NDUsIDQyODkyLCA5ODMzMTMsIDcxMTE2LCAKKyAgICA1MDI0LCA3NDk0NSwgNDEwMDMsIDY4MTM3LCA1MDI1LCA3Mjk3LCA5MTc4MjQsIDc1MDM5LCAxMTg4ODUsIDEyNzk1NiwgCiAgICAgNjU1NTcsIDAsIDc0NTQxLCAxMjg5MjQsIDExNTk5LCAxMjgyMDksIDExNjAyLCA2MjQzLCAxMTU3NCwgMTE1ODEsIDExNTk3LCAKICAgICAxMTU5OCwgNjI1MywgNjEwNSwgMTE1ODQsIDcwMjczLCAxMTU2OSwgNjUyNzUsIDg5MDYsIDQzOTQ1LCA1NzU1LCAyNjM2LCAKICAgICA3MTIwMywgMTA4MTUsIDExNjE5LCAyMzAxLCA0MTU0MCwgNzgxNSwgMTE2MTYsIDY5NzksIDEyMDgwLCA3NzIxLCAxMTYwNCwgCi0gICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgOTE3NzYzLCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAotICAgIDY0MTMxLCA2NjE2LCAwLCAxMTg4NzUsIDEwOTUzLCAzOTEsIDAsIDY5Nzg1LCA0ODIsIDQyMjk2LCAxMTU4OCwgMCwgCi0gICAgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDcyNDIxLCA4Mjk5OCwgNzUzOCwgCi0gICAgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIDQzODA5LCA0Mjc3LCAwLCAKLSAgICAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgNzgyMDksIDEyMDI0NCwgNjM5ODksIAotICAgIDM5NTgsIDEyMTMyLCAxODQ5LCAwLCA5OTIxLCA0MjQ1MSwgNDI1MywgNDExNDcsIDQyMDY0LCAxMTk1OSwgNDI0MDQsIAotICAgIDQxMTYwLCAxMjE0ODEsIDM2MTgsIDc4MzM4LCAxOTQ5MjQsIDQzMzAwLCA1MTU2LCA5MjYyOSwgNzAzNTAsIDkyOSwgNjgyNywgCi0gICAgNDIwMzUsIDQyNDM3LCAxNTU1LCAwLCA4NjkxLCA2NjQzNSwgMjIxNSwgNDE2NjIsIDk0MDEwLCAxMTkyNjIsIDAsIAotICAgIDEyODgyNCwgOTM5NTIsIDQ1NzgsIDY0NTEzLCA0MTY2NCwgOTgzNzM0LCA0MjU3OCwgNzEwNDksIDQxNjYxLCA3ODM1MSwgCi0gICAgNDMyNjcsIDkzNTYsIDAsIDE5NDg4MCwgOTgzNDAxLCAxMjg2LCAxMDE2NiwgOTgzMTE3LCAwLCA2NDcwNywgMTI4OTI1LCAKLSAgICA0MjQ3NiwgNzczMCwgMTExNTYsIDEyODUyMiwgNDI0ODMsIDEyOTA4MywgNzQ5NDAsIDQyMzI0LCA0MjI5MSwgMTAwMjAsIAotICAgIDQzMzU5LCAwLCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIAotICAgIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIAotICAgIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgCi0gICAgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIAotICAgIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCA0MzkwMiwgNzc5NDgsIDM2MywgCi0gICAgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCA2NjQ5MiwgNjU5MywgNjQ2MjUsIAotICAgIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAwLCAxMDAxMywgNjQ0MzQsIDc1MDEwLCAxMjcwOTUsIDk0OTIsIDExNzgyLCA2NDM4MiwgCi0gICAgMTI4MzMsIDc3ODMwLCAwLCAxMjk3LCA0MTYzMCwgNjMwLCAxMjA5NjAsIDk4MzkyMywgMTIwNzc0LCA3MDE2NSwgMTA0MywgCi0gICAgNDM2NTIsIDY2MjIzLCAxMDA5MCwgMCwgMTI0OTQ1LCAzMTMsIDEyMTQ4MywgNDE4ODEsIDE5NDY1OCwgNDIzMTEsIDc0NDUsIAotICAgIDQzOTA2LCA1NzUwLCAxMDc1OSwgOTQxOSwgNTUyMjIsIDk0MDUsIDExMjY4LCA0MjkxOSwgOTM5OCwgODUyNiwgOTM5OSwgCi0gICAgOTQyMiwgNDM4OTQsIDY2NDk1LCA2OTk5MCwgOTgzODg1LCA5Mjk5MCwgNDE3MTgsIDEwNzA3LCAxNjAzLCA5ODM3MDMsIAotICAgIDExOTAwMywgMCwgNjMxLCA3Nzk1MiwgNjk3MDMsIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIAotICAgIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIAotICAgIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCAKLSAgICA0MjQzMywgNzc5NjQsIDc2MDMsIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgCi0gICAgMzYyLCA5MjQzOSwgNDM4OTAsIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgCi0gICAgMTAzMzQsIDIwOTMsIDcxMzI5LCAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAKLSAgICAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIAotICAgIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgCi0gICAgNDM5MjMsIDk2NjEsIDQyOTMzLCA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIAotICAgIDk4Mzg5MywgMCwgNzYzMCwgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgCi0gICAgNzc5ODAsIDY2NDg1LCA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCAKLSAgICA0MjQxNywgNDIzODMsIDY2NjMwLCA0MTM0NCwgNjI5MywgMCwgNjYyNTIsIDQzOTA4LCA3NDQ0MywgMTI3ODk0LCAxMDIwOSwgCi0gICAgODMxMywgNDE5NSwgNzQ0MzUsIDEzMTYsIDY2NjkwLCA3NTA3MiwgNjMzMiwgNjQ4OTQsIDk4MzE1NiwgNjU4NzEsIDY3MjUwLCAKLSAgICAxNzM2LCA5ODM2ODQsIDM5MDEsIDEyMjI4LCAxMjAxNTEsIDY1MjAwLCAzMzgzLCAxMDQ0NiwgNzgyNDEsIDY5MywgOTEzMCwgCi0gICAgMzE0LCA2NDE0OSwgNDI0MjAsIDExOTQ5LCAxMjcyMDAsIDEyMDE1MiwgMTEwMjYsIDEyMDUxNiwgNTMzMiwgNjk0MCwgCi0gICAgNjQxNTQsIDEyNjM1LCAxMjQ5ODAsIDQyNzA2LCAxNzUxLCAyNzMsIDgxNjUsIDEzMTY2LCA4MzMwNywgNzg4NDAsIDcxMzY4LCAKLSAgICAxMjgyNCwgNDM5MTEsIDQ1MjgsIDUzMjAsIDYzMDEsIDQzNjYyLCA2MTMzLCA5MzM5LCA5NDYzLCA0MjM0NiwgMTA5MjIsIAotICAgIDY0NTYwLCAzNzU3LCAwLCAwLCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAotICAgIDQyNDU5LCA3NTk2LCA3OTIxLCA5ODM4NjgsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAotICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDk4Mzg3MSwgMTAyMywgNDc0LCAxOTQ5NDAsIDExOTgxOCwgMCwgMCwgCisgICAgNzg2OSwgMTU5MiwgMCwgNDIxNTIsIDc4NDk4LCA0MTA0OCwgMTI2NDY2LCA4MjksIDAsIDkyNDA2LCAxOTk1MCwgNjY4ODYsIAorICAgIDY0MTMxLCA2NjE2LCAxMjA3OTYsIDExODg3NSwgMTA5NTMsIDM5MSwgOTgzMTAzLCA2OTc4NSwgNDgyLCA0MjI5NiwgCisgICAgMTE1ODgsIDEyODU5MSwgNDM2MDYsIDcxMTg1LCA2ODM5NywgNjYzNzAsIDc0MjgyLCA0MjMzNSwgNjk3ODYsIDEyMDUwLCAKKyAgICA4Mjk5OCwgNzUzOCwgNTMxNSwgODMzNjcsIDQyNDkxLCA5MjkwMSwgNDIwNjEsIDEyODAwMiwgNDU3NiwgMCwgNjg0MTcsIAorICAgIDQzODA5LCA0Mjc3LCAwLCAzNTYzLCA2NDQ3MiwgNDIzMzgsIDM2OCwgNDIwNTgsIDM5NjAsIDExMDQzLCAxMTMzNywgCisgICAgNzgyMDksIDEyMDI0NCwgNjM5ODksIDM5NTgsIDEyMTMyLCAxODQ5LCAxMjczMzgsIDk5MjEsIDQyNDUxLCA0MjUzLCAKKyAgICA0MTE0NywgNDIwNjQsIDExOTU5LCA0MjQwNCwgNDExNjAsIDEyMTQ4MSwgMzYxOCwgNzgzMzgsIDkzOTU2LCA0MzMwMCwgCisgICAgNTE1NiwgOTI2MjksIDcwMzUwLCA5MjksIDY4MjcsIDQyMDM1LCA0MjQzNywgMTU1NSwgNjc4NDcsIDg2OTEsIDY2NDM1LCAKKyAgICAyMjE1LCA0MTY2MiwgOTQwMTAsIDExOTI2MiwgMCwgMTI4ODI0LCA5Mzk1MiwgNDU3OCwgNjQ1MTMsIDQxNjY0LCA5ODM3MzQsIAorICAgIDQyNTc4LCA3MTA0OSwgNDE2NjEsIDc4MzUxLCA0MzI2NywgOTM1NiwgMCwgMTk0ODgwLCA5ODM0MDEsIDEyODYsIDEwMTY2LCAKKyAgICA5ODMxMTcsIDAsIDY0NzA3LCAxMjg5MjUsIDQyNDc2LCA3NzMwLCAxMTE1NiwgMTI4NTIyLCA0MjQ4MywgMTI5MDgzLCAKKyAgICA3NDk0MCwgNDIzMjQsIDQyMjkxLCAxMDAyMCwgNDMzNTksIDcyODI3LCA2NjQxLCA1MjUsIDQxNjI3LCA5MTc5MjMsIDg3NjMsIAorICAgIDEyODMwNCwgNDE2MjgsIDUzMywgMTE5MzEsIDY1MjI1LCA4MzIxLCA0MjUwNCwgNDI1ODEsIDAsIDY5MTUsIDQyMzEwLCAKKyAgICA0Mzc3LCA4NTU5LCAxMjgzMjEsIDg1ODcsIDEyMTMxOCwgMTMxOTMsIDY0MzUwLCAxMTY2NiwgODY3OSwgNDE5MjQsIDE1NzYsIAorICAgIDc3MzUsIDkyMzk4LCAwLCA3Mzg0MCwgODMxNTMsIDExMzc0LCA3ODA0MywgMTA4ODksIDQzNDYxLCA3NzU3LCA0MjQ2MiwgCisgICAgMTIwMjI2LCAxMDAyOSwgNjY0OTMsIDI3MTgsIDQxNjgsIDQzOTA0LCAxMzMwOCwgMTIwMTEyLCAwLCAxMTc5LCA0NDQwLCAKKyAgICA0MzkwMiwgNzc5NDgsIDM2MywgMTEwMTUsIDQzOTAzLCA3Nzk0NCwgNDM4NTcsIDgzMDQ5LCA2NjY5MiwgMTIwODI2LCAwLCAKKyAgICA2NjQ5MiwgNjU5MywgNjQ2MjUsIDQxOTYzLCA5MjE3NywgMTE5MzI5LCAxMTM3OTQsIDEwMDEzLCA2NDQzNCwgNzUwMTAsIAorICAgIDEyNzA5NSwgOTQ5MiwgMTE3ODIsIDkyMTIsIDEyODMzLCA3NzgzMCwgNzA2OTIsIDEyOTcsIDQxNjMwLCA2MzAsIDEyMDk2MCwgCisgICAgOTgzOTIzLCAxMjA3NzQsIDcwMTY1LCAxMDQzLCA0MzY1MiwgNjYyMjMsIDEwMDkwLCAxMjUyNDksIDEyNDk0NSwgMzEzLCAKKyAgICAxMjE0ODMsIDQxODgxLCAxOTQ1NzUsIDQyMzExLCA3NDQ1LCA0MzkwNiwgNTc1MCwgMTA3NTksIDk0MTksIDU1MjIyLCAKKyAgICA5NDA1LCAxMTI2OCwgNDI5MTksIDkzOTgsIDg1MjYsIDkzOTksIDk0MjIsIDQzODk0LCA2NjQ5NSwgNjk5OTAsIDk4Mzg4NSwgCisgICAgOTI5OTAsIDQxNzE4LCAxMDcwNywgMTYwMywgOTgzNzAzLCAxMTkwMDMsIDEwMTA2MSwgNjMxLCA3Nzk1MiwgNjk3MDMsIAorICAgIDEzMTYxLCA2NTI3MiwgNzEwNjcsIDEwNTQ2LCA3NDIxMCwgNzgxMDEsIDExNjAwLCA3Nzk2MSwgMjc5NywgNDM5MjQsIAorICAgIDQyNDI3LCAzMDYsIDcxNCwgMzA1OCwgNDIzODEsIDc3OTYyLCAxMjcwODAsIDEyMzUxLCA0MjM5NSwgMCwgMTE2MDcsIAorICAgIDEyNzUyOCwgMTExOTgsIDY2ODIxLCA3Nzk2NywgOTE1NywgNzM3NjUsIDY2MzY0LCA0MjQzMywgNzc5NjQsIDc2MDMsIAorICAgIDEyODAzLCAxODAsIDQyMTQxLCAwLCAxMjA2MTIsIDY2NDk0LCAxMjY3NCwgODI0NCwgMzYyLCA5MjQzOSwgNDM4OTAsIAorICAgIDgwMzcsIDQzNzc3LCAxMTUzNSwgMTI2NTM5LCA0Mzg5MywgNTE4NSwgNzE2NSwgNTUyMSwgMTAzMzQsIDIwOTMsIDcxMzI5LCAKKyAgICAxMDMwMiwgMTI1MTMxLCAxMDEwNCwgMTAyNywgNTE4MSwgMTI4NDM1LCA1MTE3LCAxMDUyMywgMTQ0NiwgNDIzMjAsIDY4NDUsIAorICAgIDk5MSwgNTE4OSwgNDI0NzIsIDQxNjQ3LCAxMjAxMDUsIDE3MjIsIDU1ODEsIDQyODk4LCAzNDA1LCAwLCAxOTQ2NDQsIAorICAgIDU1MjMsIDQzOTE1LCA0MjYyMCwgOTI0NDcsIDc0OTQzLCA5NTQ5LCAwLCAxMDU0OSwgNDM5MjMsIDk2NjEsIDQyOTMzLCAKKyAgICA3NDg4NCwgNzc5MTAsIDc4MDY4LCA0MzkyMSwgMCwgNzExODQsIDk4MzA3MCwgNDE5OTEsIDEyOTM2OSwgMCwgNzYzMCwgCisgICAgOTg0NiwgNzY4NCwgMTAzNTAsIDEyODQ1MywgMTE3NCwgNzc5ODEsIDQyNzMzLCA3Nzk3OCwgNzc5ODAsIDY2NDg1LCAKKyAgICA3Nzk3NywgNDIyNzcsIDc3OTc0LCA0MjQ1NiwgNDM5MDksIDc0NDM4LCAxMjMzMCwgMTI4MjcyLCAwLCA0MjQxNywgNDIzODMsIAorICAgIDY2NjMwLCAzNDA3LCA2MjkzLCAwLCA2NjI1MiwgNDM5MDgsIDc0NDQzLCAxMjc4OTQsIDEwMjA5LCA4MzEzLCA0MTk1LCAKKyAgICA3NDQzNSwgMTMxNiwgNjY2OTAsIDc1MDcyLCA2MzMyLCA2NDg5NCwgOTgzMTU2LCA2NTg3MSwgNjcyNTAsIDE3MzYsIAorICAgIDEyMTAwNiwgMzkwMSwgMTIyMjgsIDEyMDE1MSwgNjUyMDAsIDMzODMsIDEwNDQ2LCA3ODI0MSwgNjkzLCA5MTMwLCAzMTQsIAorICAgIDY0MTQ5LCA0MjQyMCwgMTE5NDksIDEyNzIwMCwgMTIwMTUyLCAxMTAyNiwgMTIwNTE2LCA1MzMyLCA2OTQwLCA2NDE1NCwgCisgICAgMTI2MzUsIDEyNDk4MCwgNDI3MDYsIDE3NTEsIDI3MywgODE2NSwgMTMxNjYsIDgzMzA3LCA3ODg0MCwgNzEzNjgsIDEyODI0LCAKKyAgICA0MzkxMSwgNDUyOCwgNTMyMCwgNjMwMSwgNDM2NjIsIDYxMzMsIDkzMzksIDk0NjMsIDQyMzQ2LCAxMDkyMiwgNjQ1NjAsIAorICAgIDM3NTcsIDAsIDk0MDU5LCA3NDMwMiwgNjU4NjksIDczNzYwLCAyNTY5LCA3NDk3NiwgMjMyNiwgNjU3NDAsIDI1NjUsIAorICAgIDQyNDU5LCA3NTk2LCA3OTIxLCAxMjY1NjcsIDczODYyLCAxMjc5ODEsIDQxODQ4LCAyNTY3LCA2NjAwNiwgOTI2MjIsIAorICAgIDQwNDQsIDkyNjQ2LCA0Mzk1MywgMTIyMzMsIDExMzgxNCwgMTAyMywgNDc0LCAxMjUyNzIsIDExOTgxOCwgOTgzNzQ0LCAwLCAKICAgICA0MjQ4NywgNjU1NTYsIDEyMTE2OCwgMTI3ODY2LCA0MjI5NSwgMTI4MjAzLCAxMjE0NzQsIDcxMzIyLCA5MjUxOCwgMjIyMiwgCi0gICAgNjY0OTksIDAsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCAwLCAxODU4LCA5ODM0NTUsIDAsIDU1MjUxLCAxMDExOCwgCi0gICAgMzEzMywgMTI3NzcxLCA3MTg1NywgMTIxMjAxLCA5NjEwLCA4MDY4LCA4MTk3LCA5MTc1NDUsIDY5OSwgMCwgNDE2NjUsIAotICAgIDU4NjgsIDEyODcxMCwgOTI2OTUsIDQyMTgyLCA3NTgxLCAxOTk0MCwgNDM2NjgsIDQxNjY3LCAxMjgwNTcsIDAsIDE5MjMsIAotICAgIDY1NTgzLCA2NTgwMiwgOTM5NzAsIDY0NTk3LCA0MzQ0NCwgNzgxMjksIDY4NzUxLCAwLCA2NDY0LCA3MDM2LCAyOTk2LCAKLSAgICAxOTM3LCA5ODM3NTEsIDY4NDgxLCA0MTgzNSwgNDA0NywgNDE4NDIsIDAsIDY0MTA3LCA3Nzk2NSwgMTE5ODM3LCAxMTAxNywgCi0gICAgMTIwNjAxLCAwLCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgNDM0MjIsIDEwNTc5LCA4NTYwLCAKLSAgICA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgCi0gICAgMTIxMjkyLCA3Mzk1NywgMTE0MDcsIDQyNDQxLCA0MTk3MSwgNjI5NywgMTIwMDk4LCA2NDEwNSwgMTIwNTY1LCA0MjQ4MSwgCi0gICAgMTE3MTYsIDY2NDczLCA3MTc5LCA0MjI4OSwgMTI1MDk1LCA2NDEwMywgOTY5LCAwLCA5MzUyLCA3MTQ4MSwgNjE2NSwgCi0gICAgNjQxMDAsIDkxNzgxOSwgNjYzMiwgNzM4NjEsIDQyNDAyLCA3NDMyNywgNzgwNiwgMTEzNzYyLCA4OTE0LCA2NjkwOCwgCi0gICAgMTI0OTU0LCAzMTgzLCAxNDM1LCA2NDg3NiwgMjk2OSwgNjA0NiwgNjQ0NDEsIDYyMDgsIDY3ODQ5LCA1NzQ2LCA2NjQwOCwgCi0gICAgMCwgNjQ0MTYsIDQyNDIyLCA4MzUwNiwgOTgzMDQ2LCA3MDgyLCA3Mzc3NSwgMzM4LCA1MDU5LCAxMjEzNjksIDgzNTI0LCAKLSAgICA0MjMyOCwgMTA3NjcsIDEyODg2MiwgODExNSwgODM0NTQsIDc0NzU4LCAwLCA4MjI3LCAyMDczLCAxMjE4LCA5MTc3OTAsIAotICAgIDk4MzIzMCwgNjU4NDgsIDkyODg0LCA4MzUxNywgNjk4NjMsIDEyODMyOCwgMTI2OTg3LCA0NDg2LCAxMjgwODIsIDkxNzc5NiwgCi0gICAgMCwgMTA5MjUsIDAsIDgzNTE1LCA4MzUwNywgMTI0OTUyLCA0MjMwOSwgMTAyNTcsIDY1MTkxLCAxMDI3MywgNzY2OCwgCi0gICAgMTAzMDUsIDQyNDYxLCA3NDg4MiwgNDIzNDksIDg4MzIsIDc4MDUxLCA2NDEyNywgMTA2NDQsIDQyNjYyLCA3ODgyOCwgCi0gICAgNDIyNzgsIDc0NDUxLCAxMjY5ODgsIDY5ODc0LCA3Nzk0LCAxMTkyMTQsIDQyNDI5LCA2Mzc3LCA0MjMxNiwgMTE5MDI2LCAKLSAgICAzNjY5LCAzOTY4LCA0MjQ2OCwgNzEzMTksIDY5NjU4LCAwLCA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIAotICAgIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCAKLSAgICA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAxMjgzMzUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIAotICAgIDQyNDgwLCA5MTc5NDksIDkyNjUwLCA0MTY1NSwgNjU0MDEsIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCAKLSAgICA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAKLSAgICAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgMCwgMTI4OTM4LCAxMTA3MCwgMTE5MjIxLCA1MTU3LCAKLSAgICA0MDIwLCA3Mzg1OCwgNDE1NTUsIDk1MTQsIDY0ODE4LCA2NTEwMywgNjQ2NDEsIDY0MzAzLCA3ODEzMSwgNzUyMCwgNzM4ODgsIAotICAgIDc0Mzc3LCAxMTAyOSwgNjY2NTEsIDk4MzA2OCwgMTI4NDkyLCAxMTg5MzAsIDY0NTI3LCAxMjEzOTUsIDc4NzcsIDEyNzIzLCAKLSAgICA5ODM3OTgsIDY4Nzc2LCAxMjAwOTYsIDc0NjAyLCA5OTU1LCAxMTk1NTcsIDQwNTUsIDQyODE3LCAwLCA2NTIxMiwgMTE3MTUsIAotICAgIDEyMTkwLCAxMjMxOSwgNzg2MzAsIDAsIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgCi0gICAgOTczNCwgNjU0MjUsIDAsIDEyMTQzMSwgMTI3MzU3LCA3NDg5MCwgNzg4MzYsIDEwMTEyLCAxMDgyNywgMTk0NjM1LCA5ODY2LCAKLSAgICA3NDUyNywgNjY2NzUsIDExODg2NywgODYyNSwgNjQzNDYsIDExMjkwLCAxMDQ3NywgNjc3MzgsIDg2MzYsIDk4MzkyNywgCi0gICAgODMxNSwgNjU0NDQsIDk4Mzc5MywgMTk1MDExLCA3NDU5NSwgNjE1MiwgNzg4MjAsIDczOTQ3LCA2NjI5LCAxMjUwNTYsIAotICAgIDEyMDE3MSwgMCwgNzQ1ODksIDQzOTkzLCAxMjgzNDYsIDY5NzkwLCA2NDQzNSwgNjQ5NTUsIDQzNjkwLCAxMTA0NiwgCi0gICAgMTE0OTAsIDQyNzMwLCA0NDg1LCA3MTEyNiwgMTI4MTk0LCA2NDkyNiwgMCwgOTgzMTMzLCA0MzgzMCwgNTg2OSwgMTI0MzcsIAotICAgIDQyNzI4LCAwLCA3MDQwLCAzNTg4LCAwLCAxMjgyNSwgMTIxMTU4LCAwLCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAorICAgIDY2NDk5LCAxMjkzMzYsIDU0MTcsIDEyMjc1LCAxMDg5NSwgMCwgMjc0LCA5ODMyMjYsIDE4NTgsIDk4MzQ1NSwgMCwgCisgICAgNTUyNTEsIDEwMTE4LCAzMTMzLCAxMjY0OTgsIDcxODU3LCAxMjEyMDEsIDk2MTAsIDgwNjgsIDgxOTcsIDkxNzU0NSwgNjk5LCAKKyAgICAwLCA0MTY2NSwgNTg2OCwgMTI4NzEwLCA5MjY5NSwgNDIxODIsIDc1ODEsIDE5OTQwLCA0MzY2OCwgNDE2NjcsIDEyODA1NywgCisgICAgMCwgMTkyMywgNjU1ODMsIDY1ODAyLCA5Mzk3MCwgNjQ1OTcsIDQzNDQ0LCA3ODEyOSwgNjg3NTEsIDkxNzgzNiwgNjQ2NCwgCisgICAgNzAzNiwgMjk5NiwgMTkzNywgMTI3MDUwLCA2ODQ4MSwgNDE4MzUsIDQwNDcsIDQxODQyLCAwLCA2NDEwNywgNzc5NjUsIAorICAgIDExOTgzNywgMTEwMTcsIDEyMDYwMSwgOTgzMTY5LCAyOTMsIDc3OTY2LCA5MjE2OSwgNjQ3OTEsIDQxODI3LCA0MjQ2NiwgCisgICAgNDM0MjIsIDEwNTc5LCA4NTYwLCA3MTM1MCwgNjU0MTMsIDc3OTYzLCA0ODAzLCAxMjk2NCwgMTczOSwgMTk0MSwgMzkwMCwgCisgICAgMTI4OTY3LCAxNzEzLCA3Nzk2OSwgOTQwMTcsIDczOTU3LCAxMTQwNywgNDI0NDEsIDQxOTcxLCA2Mjk3LCAxMjAwOTgsIAorICAgIDY0MTA1LCAxMjA1NjUsIDQyNDgxLCAxMTcxNiwgNjY0NzMsIDcxNzksIDQyMjg5LCAxMjUwOTUsIDY0MTAzLCA5NjksIDAsIAorICAgIDkzNTIsIDcxNDgxLCA2MTY1LCA2NDEwMCwgOTE3ODE5LCA2NjMyLCA3MjgyOCwgNDI0MDIsIDc0MzI3LCA3ODA2LCAKKyAgICAxMTM3NjIsIDg5MTQsIDY2OTA4LCAxMjQ5NTQsIDMxODMsIDE0MzUsIDY0ODc2LCAyOTY5LCA2MDQ2LCA2NDQ0MSwgNjIwOCwgCisgICAgNjc4NDksIDU3NDYsIDY2NDA4LCAxMjc0MDIsIDY0NDE2LCA0MjQyMiwgODM1MDYsIDk4MzA0NiwgNzA4MiwgNzM3NzUsIAorICAgIDMzOCwgNTA1OSwgMTIxMzY5LCA4MzUyNCwgNDIzMjgsIDEwNzY3LCAxMjg4NjIsIDgxMTUsIDgzNDU0LCA3NDc1OCwgMCwgCisgICAgODIyNywgMjA3MywgMTIxOCwgOTE3NzkwLCA5ODMyMzAsIDY1ODQ4LCA5Mjg4NCwgODM1MTcsIDY5ODYzLCAxMjgzMjgsIAorICAgIDEyNjk4NywgNDQ4NiwgMTE5OTczLCA5MTc3OTYsIDAsIDEwOTI1LCAwLCA4MzUxNSwgODM1MDcsIDEyNDk1MiwgNDIzMDksIAorICAgIDEwMjU3LCA2NTE5MSwgMTAyNzMsIDc2NjgsIDEwMzA1LCA0MjQ2MSwgNzQ4ODIsIDQyMzQ5LCA4ODMyLCA3ODA1MSwgCisgICAgNjQxMjcsIDEwNjQ0LCA0MjY2MiwgNzg4MjgsIDQyMjc4LCA3NDQ1MSwgMTI2OTg4LCA2OTg3NCwgNzc5NCwgMTE5MjE0LCAKKyAgICA0MjQyOSwgNjM3NywgNDIzMTYsIDExOTAyNiwgMzY2OSwgMzk2OCwgNDI0NjgsIDcxMzE5LCA2OTY1OCwgMTI4MTcwLCAKKyAgICA2NTQwMiwgMTE5NTgxLCAxOTQ5NzMsIDEyODc0NywgNjQ5MzMsIDE5NDYyNywgNDE5NjAsIDY2OTksIDQyOTAzLCAxMjg3NTUsIAorICAgIDEyNTAxMywgNjgyMywgNDIzOTEsIDE1ODgsIDQzNTAyLCA4NDA5LCA3ODIyMywgMTk5NjcsIDY1Mzk4LCA3ODcsIDcxMzE1LCAKKyAgICAxMjExNDUsIDEyNzc0NCwgNjExNSwgMjA3OCwgNDE2NTQsIDQyNDgwLCAxMjkwMzEsIDkyNjUwLCA0MTY1NSwgNjU0MDEsIAorICAgIDQzOTc1LCA3MjQyNywgMCwgMTEzODE2LCA2NDQsIDY1NTAwLCA0MTY1NywgMTA3NzgsIDM2NTksIDk1MzMsIDE4NCwgMTU1MywgCisgICAgMTMxMDcsIDY1NDg0LCA2OTY0OCwgMTA1MDIsIDY2Mjk2LCAwLCAwLCA0MTU1NCwgMCwgODIyMCwgMTI4NDMyLCA0MTU1NywgCisgICAgOTgzODgyLCAxMjg5MzgsIDExMDcwLCAxMTkyMjEsIDUxNTcsIDQwMjAsIDczODU4LCA0MTU1NSwgOTUxNCwgNjQ4MTgsIAorICAgIDY1MTAzLCA2NDY0MSwgNjQzMDMsIDc4MTMxLCA3NTIwLCA3Mzg4OCwgNzQzNzcsIDExMDI5LCA2NjY1MSwgMTI3MzQ2LCAKKyAgICAxMjg0OTIsIDExODkzMCwgNjQ1MjcsIDEyMTM5NSwgNzg3NywgMTI3MjMsIDk4Mzc5OCwgNjg3NzYsIDEyMDA5NiwgNzM5NTQsIAorICAgIDk5NTUsIDExOTU1NywgNDA1NSwgNDI4MTcsIDAsIDY1MjEyLCAxMTcxNSwgMTIxOTAsIDEyMzE5LCA3ODYzMCwgNzEyNzAsIAorICAgIDc4NjMxLCA5NTAyLCA2NTQyNywgMTI1MDQ4LCA2NTQyNCwgMTI2MDcsIDEyMDk2NiwgOTczNCwgNjU0MjUsIDkyMjA3LCAKKyAgICA3ODgzNCwgMTI3MzU3LCA3NDg5MCwgNzI4MjIsIDM0NDgsIDEwODI3LCAxOTQ2MzUsIDk4NjYsIDc0NTI3LCA2NjY3NSwgCisgICAgMTE4ODY3LCA4NjI1LCA2NDM0NiwgMTEyOTAsIDEwNDc3LCA2NzczOCwgODYzNiwgOTgzOTI3LCA4MzE1LCA2NTQ0NCwgCisgICAgOTgzNzkzLCAxOTUwMTEsIDc0NTk1LCA2MTUyLCA3ODgyMCwgNzM5NDcsIDY2MjksIDEyNTA1NiwgMTIwMTcxLCAwLCAKKyAgICA3NDU4OSwgNDM5OTMsIDEyODM0NiwgNjk3OTAsIDY0NDM1LCA2NDk1NSwgNDM2OTAsIDExMDQ2LCAxMTQ5MCwgNDI3MzAsIAorICAgIDQ0ODUsIDcxMTI2LCAxMjY1ODgsIDY0OTI2LCAxMjAxNjgsIDk4MzEzMywgNDM4MzAsIDU4NjksIDEyNDM3LCA0MjcyOCwgMCwgCisgICAgNzA0MCwgMzU4OCwgNjM3OTcsIDEyODI1LCAxMjExNTgsIDcyODY0LCAxMjcyNSwgNzQwOTIsIDEyNzEwNiwgNzg2MzQsIAogICAgIDIyMywgNzg2MzUsIDY5Njc1LCAxMjAxMTksIDQyNDQ0LCAxMjg0NDksIDY0NDk5LCA2NTI0NSwgMTI5MTA0LCAxMTcxLCAKICAgICAxMjg4MDIsIDY5NzE3LCAxMjAxMTMsIDE4MDUsIDg3NzIsIDQzODIwLCAwLCA5OTMwLCA2NTI0NywgNzg2MTksIDc0OTU0LCAKICAgICAyMzM4LCAxMjAwMzIsIDExODg1MywgMCwgNDI2NzYsIDAsIDY0ODAwLCAxMzA5MiwgMTExODUsIDY4MTI2LCAxMjEzLCAKICAgICAxMjg0MTksIDY0MDc1LCA3OTcsIDY0MDc0LCA4NzM0LCA0MjEyLCA4MzAwNSwgNjQzODcsIDQxMTUsIDcxMzMxLCA1MDA1LCAKICAgICA2NDA3MCwgNjQwNzMsIDEwNjc5LCA4MzAwMCwgNzc5NTQsIDk0MDIsIDY0Mjc2LCA0MjYsIDgzMzU4LCA4MzAxMCwgODI1MSwgCi0gICAgMTAxMzYsIDY1NDM2LCAwLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgMzEwMSwgCi0gICAgMTI3ODE1LCAxMjg1OCwgMTIwMTU5LCAxMjAxMDEsIDExMzczLCA2Mzc4LCA3MTA5MywgMTIwMTAzLCA4NjYzLCA5MzEyLCAKLSAgICA0MTY0NCwgNDUzOSwgMjEyOSwgNzA3ODUsIDkyMjIsIDEyMTQ3OSwgMTE4OTA3LCA0MjU5LCA5MDkyLCA3NDU2NywgNDE5NjEsIAotICAgIDEyODUxNSwgMTI3MjQsIDY2MzU3LCA0MjMzMSwgNjQ5MzUsIDAsIDAsIDEyOTMsIDc5NDcsIDIxMzIsIDk4Mzc2NywgCi0gICAgNzE4NTgsIDcyNDQwLCAyNDU0LCA0MjcxNywgMzYxMywgMTI4ODM3LCA3MTExNywgMCwgNjU4ODgsIDg4MTYsIDEwOTc4LCAKLSAgICAxMDg0MCwgMCwgMTA2NjgsIDExMzcyMywgNDMwODcsIDEyNTk1LCAxMjAzMDQsIDk4MzExNCwgODgyMiwgMCwgMTE1NywgCi0gICAgNjQ5MDMsIDg2MzgsIDEyNzI2NSwgOTE3ODg2LCAxMjc5MDUsIDAsIDY5ODQ4LCA4MjM1LCAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAKLSAgICAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIDY4MTcsIDEwNzY0LCAxMjAzMTQsIAotICAgIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgCi0gICAgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIAotICAgIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCAKLSAgICA2NjM3MywgOTgzMjQ5LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCAKLSAgICA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgCi0gICAgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCAKLSAgICA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIDkzMDU5LCA4MzExNCwgMjMzNiwgCi0gICAgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgNzAzOTAsIDY1NDA2LCAKLSAgICA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgNDIyODUsIDQxNjc0LCAKLSAgICAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCA2NTQwMywgOTgzMDg5LCAKLSAgICAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgNDM0NCwgMTI5MDUsIAotICAgIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAxMjkzNCwgCi0gICAgNDE2ODIsIDY1NDMyLCA0MTY5MywgMCwgNjA3MSwgNjU0MzQsIDEyNzQ2NywgNDgwNCwgNDA1MywgMCwgMTI3NDY5LCAKLSAgICAxOTQ2NTMsIDQxNjk2LCA0NjcsIDY5ODIzLCAxMjc0NjMsIDY5Nzk3LCAxMjE0MDMsIDEyMTI5NCwgODQyMSwgMTI3NDcyLCAKLSAgICA2OTY4MiwgNDM3MDUsIDUwMiwgNzUwMjksIDY1NDMxLCAxMTkwNTYsIDY5OTU0LCAxMjA0MywgMTMwMywgMzE2LCA3MzY0LCAKLSAgICAyMDI5LCAyMTM2LCAxMTkyNDYsIDExNTMzLCA2NDM2NSwgNDM0ODAsIDkyNjM5LCA0ODYwLCA3MDM3MiwgMTI3ODc3LCAKLSAgICA0MjQ4OCwgNzAzMzksIDk1ODMsIDEyODg0OSwgNTU0NiwgODAxOSwgNzM4NTYsIDk4Mzg0MCwgMTI0OTYwLCAxMjA4MzksIAotICAgIDU1NDQsIDIzNTUsIDEyMTUwLCA2NTcyNSwgNTU0MywgNzUwMzQsIDYzNzUxLCAxMjEzNywgNTU0OCwgNzc5ODUsIDAsIAotICAgIDY1NzI3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDAsIDExMzAxLCAxMTIxNCwgNjU5NTIsIDc4MDEwLCAKLSAgICA5ODc0LCA3ODAwNywgOTgzMTE1LCAxMzE5LCAzMDUwLCA2NTQxMCwgNjczOTksIDkyNjA2LCA3ODAxNiwgNzgwMTcsIAotICAgIDQyODMwLCA0Mzk5NiwgNjY3MTYsIDgzMDUwLCA0NjkxLCA5MjI0MiwgOTM0NSwgNjIxLCA4MzUxMiwgMTI4MjIyLCAwLCAKLSAgICA2NTQxMSwgMCwgNDExODIsIDczODgxLCA2NTQwOCwgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgCi0gICAgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgCi0gICAgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAwLCAzNzIyLCA5ODMzNzQsIDQxNzA3LCA4NDkzLCA1NDUsIDk1NzUsIDQxMzc5LCAKLSAgICAxMDA1MCwgMTI3MTgsIDY5ODU0LCA4ODU5LCA2ODIwLCA3NDM0NSwgNjUxMTAsIDEyMDc0MCwgMTI4OTc4LCA1NTI4MiwgCi0gICAgOTExOSwgMjc4NywgNzkyMCwgNzAwOTEsIDQwMjEsIDIwMTIsIDc5ODUsIDAsIDExOTY2MywgOTE3NzkyLCAwLCA3ODAyMSwgCi0gICAgNzgwMjIsIDQxMCwgNzgwMjAsIDE4MDIsIDc4MDE4LCA3NDEwNywgNzQ4OTUsIDQxNjU5LCA0MTY3MSwgMTgyNywgMCwgCi0gICAgNjQzOTYsIDEwMTI2LCAxMjExNiwgNDE2NzMsIDEyMDM3MCwgMTE0MjIsIDcxODQ2LCAxMjAzNzMsIDM4NjAsIDEyMDM2NywgCi0gICAgNjg0MTIsIDQxMzQ1LCAxMjAzNjIsIDEyMDM2MywgMTE3NDgsIDQyMTU4LCA3OTQxLCAxMTA3NiwgODc0OSwgMTIwMzYxLCAKLSAgICAyMTA0LCA2NDg1OCwgMzYxLCAxMjAzNTcsIDg0NSwgOTIxNzQsIDQxNTYwLCAxMTk3MCwgNDU2MiwgMTI4NDczLCAyOTI2LCAKLSAgICA2ODQ5NSwgNDU2OSwgNzQxMzAsIDEyODY1OSwgNDM0ODcsIDE5NDYzMCwgNjExLCA3NDEyOSwgNjQ4NzEsIDExODg5MSwgCi0gICAgNjU2MjksIDAsIDE5NDg1OCwgNzQ4NTQsIDAsIDcwNDY2LCA2NzM5MiwgNjYzODUsIDcxNDM5LCA2MjkxLCAwLCA2ODQ4NywgCi0gICAgNDE2NjksIDcwOTQsIDEyMTA1MSwgMCwgMTIwOTk5LCA3NDA1NCwgMTI3NzU0LCAxMjg5MTcsIDAsIDgzOSwgMTIxMzE1LCAKLSAgICA3Njk1LCA4NzY5LCA2NTI0NiwgNDgyOSwgNjc3NTYsIDQ4NTksIDY0NDY3LCAwLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKLSAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA4MzUxOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKLSAgICA4MDQsIDgzNTIwLCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAorICAgIDEwMTM2LCA2NTQzNiwgMTAwODYyLCAyMTIwLCA0MzMwMiwgMTIyNCwgMCwgNjU1NzYsIDcwNzk1LCAxMDcwMSwgMTc2NCwgCisgICAgMzEwMSwgMTI1MTkyLCAxMjg1OCwgNzQ3NjcsIDEyMDEwMSwgMTEzNzMsIDYzNzgsIDcxMDkzLCAxMjAxMDMsIDg2NjMsIAorICAgIDkzMTIsIDQxNjQ0LCA0NTM5LCAyMTI5LCA3MDc4NSwgOTIyMiwgMTIxNDc5LCAxMTg5MDcsIDQyNTksIDkwOTIsIDc0NTY3LCAKKyAgICA0MTk2MSwgMTIxMzYxLCAxMjcyNCwgNjYzNTcsIDQyMzMxLCA2NDkzNSwgNzI4NjcsIDEyMDU4MiwgMTI5MywgNzk0NywgCisgICAgMjEzMiwgOTgzNzY3LCA3MTg1OCwgNzI0NDAsIDI0NTQsIDQyNzE3LCAzNjEzLCAxMjg4MzcsIDcxMTE3LCAwLCA2NTg4OCwgCisgICAgODgxNiwgMTA5NzgsIDEwODQwLCAwLCAxMDY2OCwgNzI4MjYsIDQzMDg3LCAxMjU5NSwgMTIwMzA0LCA5ODMxMTQsIDg4MjIsIAorICAgIDAsIDExNTcsIDY0OTAzLCA4NjM4LCAxMjcyNjUsIDEyOTEwNiwgMTIwNjY5LCAxMDAzOTksIDY5ODQ4LCA4MjM1LCAKKyAgICAxMjAzMTYsIDQ0MDUsIDEwMDg2LCAxMjAyNDcsIDExMTI4LCA2OTIxNiwgMTIxMDY1LCA2NTQzMCwgNzEzMjEsIDYwNzksIAorICAgIDY4MTcsIDEwNzY0LCAxMjAzMTQsIDY0MjkxLCAxMjAzMTUsIDk5OCwgMTIwMzEyLCAxMTA2MiwgMTMxNywgNjQzMjcsIAorICAgIDE1NTgsIDE5NDU3MiwgMTk5MSwgNzg4MiwgNDIyNTQsIDEyODk1NCwgNDE3MDAsIDUzMCwgMCwgMTA0MjgsIDExOTMzNSwgCisgICAgMTIwMDIsIDExOTMzNiwgNTc0MiwgNDMwNzYsIDQ2OTIsIDY0NjMwLCA0MTgyMywgNDAwNywgNTAwNCwgNzQwMzMsIDc4OTYsIAorICAgIDc1MSwgNjU5NSwgNjU5NiwgMTIwMzI1LCA2NjM3MywgMTI5MDY2LCAxMjg3NDYsIDY0OTA4LCA5MjY5MSwgNjMxMSwgCisgICAgOTMwMTksIDEyMDA0LCAxMTkxOTIsIDEyMDQ5LCA0MzEwOCwgMTIwMzI2LCA3MTA4MywgNDE3MDUsIDkyMTg4LCA2NTk4LCAKKyAgICAxMjEyOTgsIDY1OTksIDY2ODIyLCA5MzAzMSwgNDIxNDgsIDExODgyNSwgNjYwMjcsIDEyMTA1NSwgNjU5NywgOTQxMiwgCisgICAgODM0MCwgMTE4MjQsIDY0NzQ1LCAyMjgxLCA2OTkwNCwgMTI4NDk1LCAxOTg4LCA1NDA3LCA2Nzg2NSwgMjQzMCwgNDE2NzgsIAorICAgIDkzMDU5LCA4MzExNCwgMjMzNiwgOTgzOTAzLCAwLCA2NzE2OSwgMTIwNDQyLCAxMjcwOTIsIDE5MjEsIDEwOTQ3LCAxOTkyNywgCisgICAgNzAzOTAsIDY1NDA2LCA5ODM0NjQsIDE5OTEzLCA0Mjg0LCAxMzIxNywgMCwgNDM3ODksIDEyODQxLCA5MjI5LCAxMDk1NiwgCisgICAgNDIyODUsIDQxNjc0LCAxOTk2NCwgNDE2NzksIDY1MDg0LCAzNTIxLCAxMjQ5NTcsIDU3NzQsIDgzMjUsIDY5ODY0LCAKKyAgICA2NTQwMywgOTgzMDg5LCAxODU0LCAxMDc5NCwgOTMwNTQsIDY3NjYwLCA2OTg0NiwgMTk0NzY1LCA3ODM1OSwgNTI4MCwgMCwgCisgICAgNDM0NCwgMTI5MDUsIDY1NDMzLCA2MDc2LCA2NDc5MywgNDE2MTAsIDc2OCwgMTIwNzQsIDQ0MiwgMCwgNjgxNjIsIDY0MDgxLCAKKyAgICAxMjkzNCwgNDE2ODIsIDY1NDMyLCA0MTY5MywgOTgzNDM0LCA2MDcxLCA2NTQzNCwgMTE5MDA4LCA0ODA0LCA0MDUzLCAKKyAgICAxMjAyMzcsIDEyNzQ2OSwgMTk0NjUzLCA0MTY5NiwgNDY3LCA2OTgyMywgMTI3NDYzLCA2OTc5NywgMTIwMDQzLCAxMjEyOTQsIAorICAgIDg0MjEsIDEyNzQ3MiwgNjk2ODIsIDQzNzA1LCA1MDIsIDc1MDI5LCA2NTQzMSwgMTE5MDU2LCA2OTk1NCwgMTIwNDMsIAorICAgIDEzMDMsIDMxNiwgNzM2NCwgMjAyOSwgMjEzNiwgMTE5MjQ2LCAxMTUzMywgNjQzNjUsIDQzNDgwLCA5MjYzOSwgNDg2MCwgCisgICAgNzAzNzIsIDEyNzg3NywgNDI0ODgsIDcwMzM5LCA5NTgzLCAxMjg4NDksIDU1NDYsIDgwMTksIDczODU2LCAxMjgxOTQsIAorICAgIDEyNDk2MCwgMTIwODM5LCA1NTQ0LCAyMzU1LCAxMjE1MCwgNjU3MjUsIDU1NDMsIDc1MDM0LCA2Mzc1MSwgMTIxMzcsIAorICAgIDU1NDgsIDc3OTg1LCA5ODM1NTUsIDEwMDA3LCA2ODM4OCwgNjU3MjYsIDYwNzcsIDEyODM1MiwgNjU0NTIsIDEwMDM5MSwgCisgICAgMTEzMDEsIDExMjE0LCA2NTk1MiwgNzgwMTAsIDk4NzQsIDc4MDA3LCAxOTQ3MzIsIDEzMTksIDMwNTAsIDY1NDEwLCAKKyAgICA2NzM5OSwgOTI2MDYsIDc4MDE2LCA3ODAxNywgNDI4MzAsIDQzOTk2LCA2NjcxNiwgODMwNTAsIDQ2OTEsIDkyMjQyLCAKKyAgICA5MzQ1LCA2MjEsIDgzNTEyLCAxMjgyMjIsIDEyMjg4OSwgNjU0MTEsIDkxNzU0MSwgNDExODIsIDczODgxLCA2NTQwOCwgCisgICAgNzM4OTksIDc4MDI0LCA5NDc0LCAxMDU0NSwgMTE5MTE4LCAxMDg4NywgMzc4NiwgNjU0MDksIDg4OTQsIDQzMTc5LCAKKyAgICA3MTA0MiwgNzkyMywgMzcxNiwgOTIzNjMsIDk5OTYsIDg1MDgsIDEyNzc5NCwgNzAxMiwgODE5NSwgMTI3ODM0LCA5NTY2LCAKKyAgICAxMTk4NjcsIDM3MjIsIDk4MzM3NCwgNDE3MDcsIDg0OTMsIDU0NSwgOTU3NSwgNDEzNzksIDEwMDUwLCAxMjcxOCwgNjk4NTQsIAorICAgIDg4NTksIDY4MjAsIDc0MzQ1LCA2NTExMCwgMTIwNzQwLCAxMjg5NzgsIDU1MjgyLCA5MTE5LCAyNzg3LCA3OTIwLCA3MDA5MSwgCisgICAgNDAyMSwgMjAxMiwgNzk4NSwgNzgwOTMsIDExOTY2MywgOTE3NzkyLCA5ODM5NTEsIDc4MDIxLCA3ODAyMiwgNDEwLCAKKyAgICA3ODAyMCwgMTgwMiwgNzgwMTgsIDc0MTA3LCA3NDg5NSwgNDE2NTksIDQxNjcxLCAxODI3LCAwLCA2NDM5NiwgMTAxMjYsIAorICAgIDEyMTE2LCA0MTY3MywgNjg1MjQsIDExNDIyLCA3MTg0NiwgMTIwMzczLCAzODYwLCAxMjAzNjcsIDY4NDEyLCA0MTM0NSwgCisgICAgMTIwMzYyLCAxMjAzNjMsIDExNzQ4LCA0MjE1OCwgNzk0MSwgMTEwNzYsIDg3NDksIDEyMDM2MSwgMjEwNCwgNjQ4NTgsIAorICAgIDM2MSwgMTIwMzU3LCA4NDUsIDkyMTc0LCA0MTU2MCwgMTE5NzAsIDQ1NjIsIDEyODQ3MywgMjkyNiwgNjg0OTUsIDQ1NjksIAorICAgIDc0MTMwLCAxMjg2NTksIDQzNDg3LCAxOTQ2MzAsIDYxMSwgNzQxMjksIDY0ODcxLCAxMDA5MDksIDY1NjI5LCAwLCAKKyAgICAxOTQ4NTgsIDc0ODU0LCA2Njc1MCwgNzA0NjYsIDY3MzkyLCA2NjM4NSwgNzE0MzksIDYyOTEsIDAsIDY4NDg3LCA0MTY2OSwgCisgICAgNzA5NCwgMTIxMDUxLCAxMjE0MDgsIDExOTA0MSwgNzQwNTQsIDEyNzc1NCwgMTI4OTE3LCAwLCA4MzksIDEyMTMxNSwgCisgICAgNzY5NSwgODc2OSwgNjUyNDYsIDQ4MjksIDY3NzU2LCA0ODU5LCA2NDQ2NywgOTgzNDYxLCA4MzUyNSwgMTE4OTk4LCA3MjA2LCAKKyAgICAxMTk2MzYsIDY2NDcsIDQzOTg2LCA3MjczOCwgNjk3NjYsIDE5NDY2NCwgNjQ3NjQsIDQyMTAsIDEyODMwMCwgMTI3OTM2LCAKKyAgICA4MDQsIDY2NzQ2LCAwLCAxMjI5OCwgNzAzNDQsIDY2NjUzLCAxMjY5ODMsIDY0OTI0LCAxMDA5MSwgNjcyMDAsIDk0NjgsIAogICAgIDY3MjA2LCA2NzIwNSwgNjcyMDQsIDY3MjAzLCA5MjUwMywgMTI4MzksIDY0NjY5LCA5MjIwMiwgNzE4NTEsIDEyNzksIAotICAgIDE0MjUsIDYyMjQsIDExOTIyOSwgMTEwNDksIDEyNzEyMywgNzE0ODAsIDQyNjQ5LCA4NDgyLCA5MjQ0MCwgMCwgNTAzMiwgCi0gICAgNjcyMDksIDExOTQwLCA2NzIwNywgNjY0LCAxMjA0MzcsIDUwMzQsIDkyNDk1LCA3MDIwMCwgMTI3NTI1LCA0MjcwMiwgCi0gICAgNzAxOTQsIDkzMDYxLCAxMzI5NCwgNjc4NzMsIDY0ODY5LCA2MDMyLCA2NzIxOCwgOTExNSwgNzQzMCwgNzc4MzcsIDcwMTkxLCAKLSAgICAxMjA4MTksIDY4Mzg3LCAxMjAxNjgsIDczOTEzLCAxMjAxNzAsIDQxMTYxLCA1NTE4LCA0MTc0LCAxMDk5MywgNDExNjIsIAotICAgIDc3ODM2LCA2NDUyOCwgMTE2OSwgNDM0LCA0MTQzNywgMTkwNSwgNjAzNCwgNDExNjQsIDY0NzQ0LCA5NTI4LCA2Nzc0MSwgCi0gICAgMTI4ODAwLCA1MjQsIDAsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAwLCAxNjYzLCAxMDQxOSwgNDI5MDEsIAotICAgIDQyNjM2LCA2NzIxMSwgNjcyMTAsIDEyOTE0NywgMTIwNjU2LCA2NzIxNSwgNjcyMTQsIDY3MjEzLCA2NzIxMiwgMCwgCi0gICAgNjc4OTcsIDc0MDM5LCAwLCAwLCAxMTM5NSwgMCwgMTE5MTA3LCA0MzYxMiwgNjQzNDQsIDE5NDczMiwgMCwgMTA4NTUsIAotICAgIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCA2NTY4NiwgOTgzODc0LCAxMTkyMzgsIDgwMTAsIAotICAgIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgCi0gICAgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIAotICAgIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCAKLSAgICA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIAotICAgIDEwMjM1LCAwLCAwLCA5ODMzMjUsIDQzNDQxLCAxMjc5MjQsIDEyNzc3NywgNDI1OTUsIDEyNjY0MSwgNzQ0MDIsIDExODg2MCwgCi0gICAgNzg2NjEsIDEyMDQxOSwgOTI0OTcsIDY2Mjg3LCAxMjA0MjAsIDkyMzc4LCAxMjA1NDksIDExOTA4MiwgNjQyOTUsIAotICAgIDEyMDQxOCwgMCwgNjQ3NjUsIDczOTIzLCA4MzIxMCwgMTIwNjYyLCA2OTkyMCwgMTk0NzAyLCA2MjE2LCA2NzIzMCwgCi0gICAgMTA3NTUsIDk0NTUsIDExMTU1LCA4MTI0LCAxMjcwNDIsIDk0NzAsIDY5NDQsIDEyMTEyNSwgMCwgNjk2ODAsIDI4MjgsIDAsIAotICAgIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAKLSAgICAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgCi0gICAgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAwLCA4NTM3LCAxMjczMDYsIDAsIDkzNTQsIDEyMTI0NCwgMTIxMzQ4LCAKLSAgICA0MTE5OSwgMTAxMjEsIDIwMjgsIDc0OTUwLCAxMjAyNTMsIDY5NzE1LCAxMjg1MjUsIDMwNjIsIDAsIDc0NDQ3LCAxMjYwOCwgCi0gICAgOTgzNjU3LCA2NjQ0MCwgNzU0NSwgOTcwMCwgMTE5NDgsIDkyMjA1LCAxMjA3NzcsIDEyMDUwMiwgNDExNTUsIDY4MzA2LCAKLSAgICA3NDA3MSwgMCwgOTgzNDU5LCAxMjcxMywgMTI3NTE5LCA3MDQwMiwgMCwgNzg3NzIsIDExMzc3MCwgMTczNCwgMCwgNzgxNDEsIAotICAgIDEyNzA0MCwgNjQ1OTQsIDI0NTYsIDIzMSwgNjgyMjcsIDc0MTY3LCA1NDIsIDkxNzk4MSwgMTE4Nzg2LCA5ODM4NTksIAotICAgIDE5NDc5NywgMTIzMCwgMTI1MDE4LCAxMjEzNDMsIDM1OTcsIDQ0NDYsIDEwNTg0LCA3NDIzNSwgOTIyMTUsIDQwMzcsIAotICAgIDY3NzM3LCA4MzUyLCA3ODQzNiwgNTY4NywgMTI3MDE4LCA2NDUxNSwgMTIxMzc4LCAxOTQ4MDEsIDU1MjY1LCA2Nzg0NiwgCi0gICAgNzg0MzQsIDk3MDQsIDAsIDE5NDU3MywgNzAwODAsIDcxMzM4LCAwLCA4NjYwLCAxMjY0NzgsIDAsIDEyODU2OSwgNzg3NzMsIAotICAgIDc0NDgyLCA0NDgzLCAxNzA5LCA2OTcyMSwgOTkwOSwgNjA4MCwgMTk0ODUxLCAxMjAzNTgsIDE3NDYsIDEzMTUsIDg2NjcsIAotICAgIDk4MzEwMSwgMCwgMTMxNDAsIDY1ODk5LCAxMDYwNCwgMCwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgCi0gICAgNjc5NzksIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDAsIDEyMTQ3OCwgCisgICAgMTQyNSwgNjIyNCwgMTE5MjI5LCAxMTA0OSwgMTI3MTIzLCA3MTQ4MCwgNDI2NDksIDg0ODIsIDkyNDQwLCA5ODM3MTAsIAorICAgIDUwMzIsIDY3MjA5LCAxMTk0MCwgNjcyMDcsIDY2NCwgMTIwNDM3LCA1MDM0LCA5MjQ5NSwgNzAyMDAsIDEyMjkwMSwgCisgICAgNDI3MDIsIDcwMTk0LCA5MzA2MSwgMTMyOTQsIDY3ODczLCA2NDg2OSwgNjAzMiwgNjcyMTgsIDkxMTUsIDc0MzAsIDc3ODM3LCAKKyAgICA3MDE5MSwgMTIwODE5LCA2ODM4NywgMTAwNjQ1LCA3MzkxMywgMTIwMTcwLCA0MTE2MSwgNTUxOCwgNDE3NCwgMTA5OTMsIAorICAgIDQxMTYyLCA3NzgzNiwgNjQ1MjgsIDExNjksIDQzNCwgNDE0MzcsIDE5MDUsIDYwMzQsIDQxMTY0LCA2NDc0NCwgOTUyOCwgCisgICAgNjc3NDEsIDEyODgwMCwgNTI0LCAxMjg2NjcsIDc0MDI5LCA3ODgsIDc0MDI3LCAxOTQ2NjcsIDcxODgxLCAxMjAzNzAsIAorICAgIDE2NjMsIDEwNDE5LCA0MjkwMSwgNDI2MzYsIDY3MjExLCA2NzIxMCwgMTI5MTQ3LCAxMjA2NTYsIDY3MjE1LCA2NzIxNCwgCisgICAgNjcyMTMsIDY3MjEyLCAxMjg4MjgsIDY3ODk3LCA3NDAzOSwgMCwgMCwgMTEzOTUsIDE5NDkwNCwgMTE5MTA3LCA0MzYxMiwgCisgICAgNjQzNDQsIDEyOTM3MCwgMCwgMTA4NTUsIDU0NDUsIDkzNTUsIDY3MjIxLCA2NTE5OCwgNzM5MSwgODk4OSwgMjIxLCAKKyAgICA0MzY3MywgOTgzODc0LCAxMTkyMzgsIDgwMTAsIDcxOTEsIDQ5NjIsIDY5NzcyLCA4ODU1LCA3NDYxMiwgNzA4MjAsIAorICAgIDY0NDY5LCA5MjU5MiwgMTA1NTUsIDY3MjI3LCA0MzMzMywgNjcyMjUsIDEyODQ4MywgMTIwNDI3LCAxMDQ1MSwgNjcyMjksIAorICAgIDY3NjUzLCA3MjQ1LCAxMjQ0MywgNzQ0MDUsIDk5NDcsIDEyMDE0OSwgNzgzMTcsIDM4NzMsIDgzNjcsIDc3ODQyLCAKKyAgICAxMjAxNDYsIDQzNDMzLCA0MzY0OSwgMTE5ODcsIDgzMzQzLCA5ODM1ODEsIDExMDEwLCAxMTE2NCwgNzQwNTksIDc0MDYyLCAKKyAgICA2MjE3LCA1ODk2LCA0Mzg0NiwgNzY4MiwgNzQwNDksIDE0NjIsIDEwMjM1LCA5ODM5MTgsIDAsIDk4MzMyNSwgNDM0NDEsIAorICAgIDEyNzkyNCwgMTI3Nzc3LCA0MjU5NSwgNzI4MDQsIDc0NDAyLCAxMTg4NjAsIDc4NjYxLCAxMjA0MTksIDkyNDk3LCA2NjI4NywgCisgICAgMTIwNDIwLCA5MjM3OCwgMTIwNTQ5LCAxMTkwODIsIDY0Mjk1LCAxMjA0MTgsIDAsIDY0NzY1LCA3MzkyMywgODMyMTAsIAorICAgIDEyMDY2MiwgNjk5MjAsIDEyNTI3OCwgNjIxNiwgNjcyMzAsIDEwNzU1LCA5NDU1LCAxMTE1NSwgODEyNCwgMTI3MDQyLCAKKyAgICA5NDcwLCA2OTQ0LCAxMjExMjUsIDkxNzk4MiwgNjk2ODAsIDI4MjgsIDAsIDUzMSwgNDI2MzgsIDE5NDgwNCwgOTE3ODU2LCAKKyAgICAxMjA5NjEsIDQzNDI4LCA4MjA0LCAzNjE0LCAyODI3LCA5Njk2LCAxMjAzNjUsIDAsIDg3MjgsIDQzNTQsIDEwOTA0LCAKKyAgICA3ODU2MiwgMTk5MzYsIDc4MzMsIDEyMDY5MSwgMTIwODUwLCA0MjU5OSwgNDI1OTcsIDQyNzA5LCA2ODgyOSwgMTI1MDEyLCAKKyAgICAwLCA4NTM3LCAxMjczMDYsIDk4MzcyOSwgOTM1NCwgMTIxMjQ0LCAxMjEzNDgsIDQxMTk5LCAxMDEyMSwgMjAyOCwgNzQ5NTAsIAorICAgIDEyMDI1MywgNjk3MTUsIDEyODUyNSwgMzA2MiwgOTgzNjYzLCA3NDQ0NywgMTI2MDgsIDk4MzY1NywgNjY0NDAsIDc1NDUsIAorICAgIDk3MDAsIDExOTQ4LCA5MjIwNSwgMTIwNzc3LCAxMjA1MDIsIDQxMTU1LCA2ODMwNiwgNzQwNzEsIDEyODcyMiwgOTIzNzIsIAorICAgIDEyNzEzLCAxMjc1MTksIDcwNDAyLCAwLCA3ODc3MiwgMTEzNzA5LCAxNzM0LCAwLCA3ODE0MSwgMTI3MDQwLCA2NDU5NCwgCisgICAgMjQ1NiwgMjMxLCA2ODIyNywgNzQxNjcsIDU0MiwgMTIwNTg2LCAxMDA4NTEsIDk4Mzg1OSwgMTk0Nzk3LCAxMjMwLCAKKyAgICA3Mzg0NSwgMTIxMzQzLCAzNTk3LCA0NDQ2LCAxMDU4NCwgNzQyMzUsIDkyMjE1LCA0MDM3LCA2NzczNywgODM1MiwgNzg0MzYsIAorICAgIDU2ODcsIDEyNzAxOCwgNjQ1MTUsIDEyMTM3OCwgMTk0ODAxLCA1NTI2NSwgNjc4NDYsIDc4NDM0LCA5NzA0LCA5ODM1ODUsIAorICAgIDE5NDU3MywgNzAwODAsIDcxMzM4LCAxMjA1NzUsIDg2NjAsIDEyNjQ3OCwgMTI3MDEwLCAxMjg0NjcsIDc4NzczLCA3NDQ4MiwgCisgICAgNDQ4MywgMTcwOSwgNjk3MjEsIDk5MDksIDYwODAsIDEyODE2NywgMTIwMzU4LCAxNzQ2LCAxMzE1LCA4NjY3LCA5ODMxMDEsIAorICAgIDAsIDEzMTQwLCA2NTg5OSwgMTA2MDQsIDExODc4NiwgNDQ4MCwgMTEyNjYsIDEyMTExNCwgMTIyNiwgNjkzMCwgNjc5NzksIAorICAgIDE5NTAxOSwgNjM2MCwgMTA4OTcsIDQxMjMwLCA2MDUsIDY4MzAyLCA3NDc4NSwgNjk4NzUsIDEyMDg0OSwgMTIxNDc4LCAKICAgICA0MTUwMCwgMCwgMzExLCAxMTQ1MywgNjIyMSwgMTA2MDgsIDY0OTQzLCA2NzY4MiwgMTA4NzcsIDExODg2OCwgNjQ4ODUsIAotICAgIDc0MjcyLCAwLCAxOTQ2NzIsIDEyODU1OSwgMTIwNzM2LCA3NDMxMiwgMzQ1LCAxMjQ5MzMsIDc0NDU2LCA2NDYwNiwgOTkxNywgCi0gICAgMCwgNzQ4NTUsIDUwMzcsIDExOTkxMiwgMTc3NiwgODQyMiwgMTI4OTM1LCAxMTg4MTQsIDQxNTA4LCA0MTIwMSwgMzIzLCAKLSAgICA0MzMyOCwgMCwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCA4MzAwMiwgMTI4NzcyLCAKLSAgICA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCA2NTQyMCwgOTI0NzksIDAsIAotICAgIDQyNTIsIDUwNDksIDQyNjU5LCAxMTkwMTEsIDcwNiwgNzc1NCwgMTA4NTQsIDg3MzgsIDk4Mzk0OSwgNjU0MTksIDAsIAotICAgIDEyODQ5NiwgNjQ5LCA2NTQyMSwgMCwgNjY3MDIsIDk4MzcyMSwgMTI2NzAsIDEwMTMsIDAsIDY0OTE5LCA3MDUsIDAsIAotICAgIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIAotICAgIDY1NDE4LCAxMjkwNTAsIDk4Mzg3OCwgNzQwMzUsIDE5NDkxOCwgMTE5MTMsIDczODc0LCA2Njk2LCAxMjA5MTYsIDg5MjAsIAotICAgIDExOTI5OCwgMTI4NDI2LCA3OTYyLCAxMjIxMSwgOTgzNywgMjA1MSwgNjYyMjcsIDAsIDQxODQsIDExOTgyNSwgMTI4NTk4LCAKLSAgICAxMDE3NywgNzM3NzcsIDE4NTcsIDE5NDY1NywgNDYyNiwgODQ2NCwgODQ3MiwgNjg4NDQsIDQ2MjksIDg0OTksIDc0NjI3LCAKLSAgICA3ODMyMiwgNDYyNCwgNzgxOCwgMTE4ODYxLCAxMjgxMDgsIDAsIDc4MDUsIDEyODc1NCwgOTQwMDcsIDY5MzUsIDkyMjkyLCAKLSAgICA3ODMyNSwgNzgzMjYsIDc4MzIzLCA0MzMyNywgNDM5ODksIDExOTA0NiwgODQ5MiwgODI1MCwgODQ1OSwgMCwgODQ5NywgCi0gICAgODQ5NiwgODM0OTksIDc0NTgyLCA3NTA1MiwgNzgzMzksIDk1NDMsIDY3ODYwLCA3ODMzMiwgNzc4MzIsIDY1ODQ5LCAKLSAgICA3NzgzMSwgOTgzOTYxLCAxOTQ2NDksIDEyNDUxLCA3NDM3NiwgODY4NCwgMTI4MzAxLCA2MTAyLCAwLCA1Mjk4LCA5MTc4NDcsIAotICAgIDUyOTQsIDAsIDgzMDE2LCA2ODA0MywgMTk1MDYyLCA5OTQ5LCA4MzAxNCwgNDM2MTcsIDExOTIxNSwgMCwgMTIwNzMsIDAsIAotICAgIDEyODY0NiwgNzc4NjMsIDEzMTA4LCAxMjA2MTcsIDExNDM5LCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCAKLSAgICA5ODM4ODMsIDE5MzksIDUzMDIsIDM5NzAsIDkxNzg3NywgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIAotICAgIDkyNDc3LCA2NTI2MywgMCwgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCAKLSAgICA3NDM4MywgMCwgNzQxOTcsIDEyOTA4OSwgNTUwMCwgODgxMywgMCwgMTI4NjEyLCA2ODg2MCwgNTMyMiwgMTIwOTQ0LCAKLSAgICA3ODM0MCwgNDM2MzEsIDUzMjQsIDY2NDQzLCAzNzg0LCA0MTYxNCwgNjUyNjksIDYyMzAsIDc4MzQ5LCA3ODM0NSwgMTMyODIsIAotICAgIDMzNjAsIDc4MzQ0LCAxMTUyMywgMCwgOTI0ODgsIDk5MjYsIDcxOTcsIDEyODI0OCwgNjg0MjksIDQyODk0LCA0MTgyMSwgCi0gICAgMTI0OSwgNzgzNjAsIDc4MzYxLCA3ODM1NiwgNzgzNTgsIDc4MzUzLCA2NDg5OSwgNjQ3NjMsIDQxMTQ5LCA0MTgwNywgCi0gICAgNDMxNjIsIDQxODE1LCA0MTE1MCwgMTI4OTExLCAxMDU3MSwgMTAwOTYsIDY3MTYxLCA2NzE2MCwgNjcxNTksIDY5NDcsIAotICAgIDQxMTUyLCA4ODcsIDkyNDksIDY1NjUsIDc4NTEwLCA0MTk5MCwgNzg1MDksIDQxODExLCA2NzE1NywgOTM5NjYsIDY2NzAsIAotICAgIDY3MTc1LCA2NzE3NCwgMCwgNDMwOTIsIDQzMzI1LCA2NzE3OCwgMTAxNjgsIDY3MTc2LCA5NzgxLCA2ODI0OCwgOTE5MCwgCi0gICAgMTI4NDk3LCA5NjY2LCA4MjY5LCA2NTk0NCwgNzQwMDUsIDEzMDE5LCAxMTY3MCwgNjk4NjAsIDMxNSwgMTI4MTMsIAotICAgIDEyOTEzMiwgNzI0MDksIDc4MjU2LCA3MjQwOCwgNzgzNTIsIDAsIDc1MDYzLCAwLCAwLCAxMzc4LCA5NTA5LCAxOTQ2MzQsIAotICAgIDkyOTk2LCA3MjQwNywgMzA2NiwgOTIyMjAsIDY3ODQ3LCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIAotICAgIDY3MTg5LCAxOTQ2MTYsIDQxNjE4LCAxOTQ2MTUsIDc4MjYxLCAxMjczODQsIDAsIDY0NjUyLCAxMjEyMjIsIDEyMTAxMiwgMCwgCi0gICAgNzgzNjYsIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgCi0gICAgNzEwNTAsIDgxMTksIDY0ODc0LCA3MTA1MiwgNzgxNzQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgMCwgMCwgMTI5MzAsIAorICAgIDc0MjcyLCAxMjgwNzYsIDE5NDY3MiwgMTIxMjAyLCAxMDA2NTIsIDc0MzEyLCAzNDUsIDEyNDkzMywgNzQ0NTYsIDY0NjA2LCAKKyAgICA5OTE3LCAxMjUyNDQsIDc0ODU1LCA1MDM3LCAxMDA5OTgsIDE3NzYsIDg0MjIsIDEyODkzNSwgMTE4ODE0LCA0MTUwOCwgCisgICAgNDEyMDEsIDMyMywgNDMzMjgsIDkxNzg0OSwgNDI2OTgsIDEyOTUsIDE5NDg1MywgNDYyNSwgNzc4NTUsIDQ2MzAsIDEzMTE3LCAKKyAgICA4MzAwMiwgMTI4NzcyLCA2NTEyMywgMTEyOTMsIDI2NjgsIDExMjg4LCAwLCA0MjY0MCwgNjU2NjYsIDI1MTksIDkyMzY5LCAKKyAgICA2NTQyMCwgOTI0NzksIDEyNzE5MSwgNDI1MiwgNTA0OSwgNDI2NTksIDExOTAxMSwgNzA2LCA3NzU0LCAxMDg1NCwgODczOCwgCisgICAgMTI5MzE4LCA2NTQxOSwgMCwgMTI4NDk2LCA2NDksIDY1NDIxLCAxMjI4ODAsIDY2NzAyLCA5ODM3MjEsIDEyNjcwLCAxMDEzLCAKKyAgICA3MDcwNywgNjQ5MTksIDcwNSwgNzI4MjUsIDY1NDIyLCAxMjc4MDMsIDExODMsIDEyNjUxOSwgNzAxNywgNDI4NTIsIAorICAgIDkxNzgyNiwgODE1NywgOTczNiwgNjQ1MDMsIDY1NDE4LCAxMjkwNTAsIDEyODA5MCwgNzQwMzUsIDc4ODM2LCAxMTkxMywgCisgICAgNzM4NzQsIDY2OTYsIDEyMDkxNiwgODkyMCwgMTE5Mjk4LCAxMjg0MjYsIDc5NjIsIDEyMjExLCA5ODM3LCAyMDUxLCAKKyAgICA2NjIyNywgOTgzMjcyLCA0MTg0LCAxMTk4MjUsIDEyODU5OCwgMTAxNzcsIDczNzc3LCAxODU3LCAxMjc3NzMsIDQ2MjYsIAorICAgIDg0NjQsIDg0NzIsIDY4ODQ0LCA0NjI5LCA4NDk5LCA3NDYyNywgNzgzMjIsIDQ2MjQsIDc4MTgsIDExODg2MSwgMTI4MTA4LCAKKyAgICAwLCA3ODA1LCAxMjg3NTQsIDk0MDA3LCA2OTM1LCA5MjI5MiwgNzgzMjUsIDc4MzI2LCA3ODA3OSwgNDMzMjcsIDQzOTg5LCAKKyAgICAxMTkwNDYsIDg0OTIsIDgyNTAsIDg0NTksIDAsIDg0OTcsIDg0OTYsIDgzNDk5LCA3NDU4MiwgNzA2OTAsIDc4MzM5LCAKKyAgICA5NTQzLCA2Nzg2MCwgNzgzMzIsIDc3ODMyLCA2NTg0OSwgNzc4MzEsIDEyODYxNSwgMTAwNDEyLCAxMjQ1MSwgNzQzNzYsIAorICAgIDg2ODQsIDEwMDUxNSwgNjEwMiwgMTI4MDQ2LCA1Mjk4LCAxMjg3MjEsIDUyOTQsIDgzMjM1LCA4MzAxNiwgNjgwNDMsIAorICAgIDE5NDg5OSwgOTk0OSwgODMwMTQsIDQzNjE3LCAxMTkyMTUsIDEyNzAzMCwgMTIwNzMsIDEyMDczNiwgMTI4MDE3LCA3Nzg2MywgCisgICAgMTMxMDgsIDcxMjMxLCAyMjYwLCA0MTQ2OCwgODMwMTIsIDAsIDUyOTIsIDU1MjcyLCA5ODM4ODMsIDE5MzksIDUzMDIsIAorICAgIDM5NzAsIDEyOTM0OCwgMTI0NTUsIDE3OTMsIDEyNDk4MiwgMCwgNzUwMzYsIDY2NDMsIDkyNDc3LCA2NTI2MywgMCwgCisgICAgNzgzMzAsIDQxMjkzLCA3ODMyOCwgNjU5MjMsIDc4ODM1LCAxMzIxOSwgOTU2OSwgMTI5MDQxLCA3NDM4MywgMCwgNzQxOTcsIAorICAgIDEyOTA4OSwgNTUwMCwgODgxMywgOTgzNDE0LCAxMjg2MTIsIDY4ODYwLCA1MzIyLCAxMjA5NDQsIDc4MzQwLCA0MzYzMSwgCisgICAgNTMyNCwgNjY0NDMsIDM3ODQsIDQxNjE0LCA2NTI2OSwgNjIzMCwgNzgzNDksIDc4MzQ1LCAxMzI4MiwgMzM2MCwgNzgzNDQsIAorICAgIDIyMzEsIDcyNzI2LCA5MjQ4OCwgOTkyNiwgNzE5NywgMTI4MjQ4LCA2ODQyOSwgNDI4OTQsIDQxODIxLCAxMjQ5LCA3ODM2MCwgCisgICAgNzgzNjEsIDc4MzU2LCA3ODM1OCwgNzgzNTMsIDY0ODk5LCA2NDc2MywgNDExNDksIDQxODA3LCA0MzE2MiwgNDE4MTUsIAorICAgIDQxMTUwLCAxMjg5MTEsIDEwNTcxLCAxMDA5NiwgNjcxNjEsIDY3MTYwLCA2NzE1OSwgNjk0NywgNDExNTIsIDg4NywgOTI0OSwgCisgICAgNjU2NSwgNzg1MTAsIDQxOTkwLCA3ODUwOSwgNDE4MTEsIDY3MTU3LCA5Mzk2NiwgNjY3MCwgNjcxNzUsIDY3MTc0LCAwLCAKKyAgICA0MzA5MiwgNDMzMjUsIDY3MTc4LCAxMDE2OCwgNjcxNzYsIDk3ODEsIDY4MjQ4LCA5MTkwLCAxMjA5ODEsIDk2NjYsIDgyNjksIAorICAgIDY1OTQ0LCA3NDAwNSwgMTMwMTksIDExNjcwLCA2OTg2MCwgMzE1LCAxMjgxMywgMTI4NTU2LCA3MjQwOSwgNzgyNTYsIAorICAgIDcyNDA4LCA3ODM1MiwgOTIyMTIsIDc1MDYzLCA3MjgzOSwgMCwgMTM3OCwgOTUwOSwgMTk0NjM0LCA5Mjk5NiwgNzI0MDcsIAorICAgIDMwNjYsIDkyMjIwLCAyMjcwLCA3MjQwNiwgOTIzNTUsIDkxNzg5MCwgNzgzNjUsIDg3ODcsIDY3MTg5LCA3MjgxOCwgCisgICAgNDE2MTgsIDE5NDYxNSwgNzgyNjEsIDEyNzM4NCwgMCwgNjQ2NTIsIDEyMTIyMiwgNzI4MzMsIDEyNTIyNiwgNzgzNjYsIAorICAgIDQyMDg4LCA3MTA0MCwgMTk1MDYxLCA3MTc2LCA0Mzc1NiwgMTAxMzcsIDYxMjEsIDEwOTk1LCA3ODI1OSwgNzEwNTAsIAorICAgIDgxMTksIDY0ODc0LCA3MTA1MiwgNDM5NjQsIDEyODY5MCwgMTI4NjMwLCA3NDUyNSwgNzI4NDMsIDEwMDc4MywgMTI5MzAsIAogICAgIDEzOTQsIDc0NTE0LCAxMjg0MTMsIDc0NTE1LCA5ODM3MjcsIDY3MTg0LCAyOTk4LCA5NTI3LCA2NzE4MSwgNjUxOTAsIAogICAgIDEyOTc3LCA0MjA5MCwgNjcxODUsIDk4MzY0NywgMTE5MTAwLCA0MTIzNiwgOTIyMzUsIDQyMDA1LCA0MjAwMywgNDEyMzcsIAogICAgIDU4NDgsIDY3MTkzLCA2NzE5MiwgMzY3MCwgNjcxOTAsIDY3MTk3LCA2NzE5NiwgNjcxOTUsIDc4OTAsIDEyODA3MCwgCi0gICAgMTEyOTgsIDQzMzE1LCA5ODMzMTUsIDYyMjksIDE1OTMsIDAsIDEyNTEyMCwgNjE5LCA0NjM1LCA2NTA4MCwgMTI3MTU4LCAKKyAgICAxMTI5OCwgNDMzMTUsIDc3ODcxLCA2MjI5LCAxNTkzLCAwLCAxMjUxMjAsIDYxOSwgNDYzNSwgNjUwODAsIDEyNzE1OCwgCiAgICAgMTIxOTQsIDQxMjAsIDY1MzM3LCA2NTMzNiwgMTI4NDA3LCAxMTgwOCwgNjcxOTksIDY3MTk4LCA5MzY2LCA0Mjc5MCwgCiAgICAgNDIwMDYsIDExOTExNSwgNjUzMjcsIDY1MzI2LCA2NTMyNSwgMTA3NTcsIDE1MDcsIDQyMjE2LCA2NTMyMSwgNjUzMjAsIAogICAgIDQzOTQ3LCA2NTMzNCwgNDM5NDYsIDY1MzMyLCA2NTMzMSwgNDIwNTksIDY1MzI5LCA0MjY4OSwgOTI0MjcsIDkxMjgsIAotICAgIDk0MDQ1LCA0MjA3MywgNjc4NSwgNjQ1OTAsIDk4MzgzMCwgNDM3MSwgNzE5NiwgNjUzMTgsIDIwMzUsIDY1MzE2LCA0MTA2LCAKLSAgICA2NTMxNCwgNjUzMTMsIDQyMDc0LCAxMjc4NDcsIDQxMjI4LCAxMjA4NjIsIDY1NjA5LCA0MTI0MSwgNzkwMywgNDEyMzksIAotICAgIDQzNTMzLCA3ODQ1OSwgNzE4OSwgMCwgMCwgNDM5NDEsIDEyMzU3LCA0MjgwMiwgNzg0NTAsIDg0ODcsIDkxMzEsIDY2MjkyLCAKLSAgICA0NjE1LCAxMjY5NSwgMTI3NzUyLCAwLCAxMjE3NSwgMCwgNjQ1MzUsIDAsIDc4MDksIDAsIDEyMTM1MSwgNTYyLCAxMjE2OSwgCi0gICAgNjU5MCwgNjk3NjIsIDY2NDU1LCA2NDczOCwgMzIxOSwgNjg2NTQsIDEyMTA5NiwgMTI4MjgxLCAxMDM3LCAxMjg2NzcsIAotICAgIDIwMjUsIDEyODI2MywgMTMwOTgsIDc4NDQyLCAxMDYzNywgNDU2OCwgNTQ5LCAxNTcwLCA0MzgzOSwgMjgzNSwgODMwNTIsIAotICAgIDEwNjI0LCA0MzYyMywgMTEwNzIsIDgzMDQ1LCAxMjg1MjMsIDgzMDQ2LCAxMjYwNiwgNzg0MzMsIDI4MjUsIDgzMDQ4LCAKLSAgICAxMDgyNSwgODA3OSwgMjgyMSwgNDEwNDYsIDkyMzI3LCA3MzY1LCA4MzA0MywgMTIwNTkzLCAxMzA3MSwgMTIxMjg4LCA0NTIsIAotICAgIDQxMDQ5LCA0Mjg0MCwgNjM0NiwgMjgzMSwgNTQ2MSwgNzQ1OTYsIDExNDY1LCA1MjEyLCA5MTc5MTcsIDY0NzAzLCAKLSAgICAxMTkxOTEsIDQyMzA4LCA3MTgxLCAwLCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAxMTk4NDksIDEyMTE1MCwgCi0gICAgMTI4Mjc1LCAxMTg3LCA5ODMzODcsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgMzI0MCwgMTI4NTE4LCAKLSAgICAxMjE1MSwgMCwgMTE1OTEsIDQxMDY1LCA1MzIzLCA4MTY2LCAwLCAxMTg5MzIsIDAsIDY2ODI3LCAxNjIzLCA2NTI5NywgCi0gICAgMTI4ODU2LCA1NzEsIDAsIDQ5MTgsIDAsIDUyODgsIDEyNzI5NSwgMTU0MSwgNjUwNDgsIDE5MDksIDg4NjQsIDAsIDY2NDAyLCAKLSAgICAxMDczNiwgOTI1MDgsIDExNTcxLCA3NjE1LCA3MDQ3NiwgOTIyOTYsIDQyMzcsIDkyNTc2LCAxMDM1LCA2NTgxNSwgNjgwODMsIAotICAgIDM1NjcsIDcwMSwgNjU5MzYsIDM0ODksIDEyMDg5OSwgNzA0NjIsIDcwMTcyLCAxMTQwMywgMCwgMCwgODI5ODYsIDM3OTYsIAotICAgIDY4MDAsIDcwNDcyLCAzOTk0LCAxMTQyMSwgNzQ2MTEsIDE5NTA3NiwgMTk1MDc4LCA2ODAzNiwgMCwgMCwgNjQ4NTcsIAotICAgIDgzNTA4LCAyODU1LCA3NDQxOCwgNjYzMDgsIDQxNjIxLCA2ODIxNCwgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAKLSAgICAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIAotICAgIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAwLCA5NDIsIDIzNzgsIDQzMTM2LCA4MzAzMSwgODQ2NiwgCi0gICAgODMwNzUsIDkzMjAsIDgwMDEsIDEyMzIsIDgxMzksIDExNjE3LCA3NDYzNywgMCwgMTE0MDksIDY4MzczLCA2MzgyLCAKLSAgICAxMjY1MDAsIDY0NjM0LCA5MjM2MiwgNzAyMDIsIDExNjEyLCA5MzAwOCwgNjc2MDAsIDIzNzQsIDk0MDY2LCA4NDc1LCAKLSAgICAxMTYwOSwgNjYzMTMsIDkyNTY4LCAwLCA1Mjg2LCAxMTkyOTcsIDgzMDU5LCA5ODMyNTMsIDY0OTI1LCAxMjAyODMsIAotICAgIDEyNzIwNCwgMTE4OTgyLCA3MTkwNSwgNzcwNSwgMTE5NDIsIDExMzA1LCAxMjcyMDMsIDMzMDksIDgyOTc5LCA5MjA2LCAKLSAgICA4Mjk4MCwgMTEzODI0LCA2ODAyLCA3MDM1MywgNDE2NTMsIDEyODAsIDEyNDEsIDcxNjgsIDEyMDk2LCAwLCA2NjYxNSwgCi0gICAgNDI1NjUsIDQxNjUxLCAwLCA5MTc2MjcsIDgzMDQyLCA0MTY1MCwgNjY1MDcsIDY2NDcwLCA3NDQ3MiwgMTI5MTQsIDQxNDkxLCAKLSAgICA0MzkwMSwgOTQxMDYsIDYwNzgsIDk5NTQsIDc4ODIyLCAxNDc1LCAxMTkyNDcsIDk5MzgsIDYwODQsIDkxNzU0NiwgNDEwNjQsIAotICAgIDQxMDYyLCAwLCAxMTM2ODAsIDMyNTYsIDEwMTg5LCA0MjA3NiwgNDMyNTIsIDc4ODIzLCA2ODA4OSwgODcyNywgMTIwOTIyLCAKLSAgICA2NTg3NSwgMCwgMCwgMTI3NzYyLCAxMDU2MiwgNzQyMTUsIDQzMDY1LCAxMjA5MDYsIDAsIDMyNDgsIDc0Mjk3LCAzMjYxLCAKLSAgICA5MDE1LCA3MTM1MSwgMCwgMzYzNSwgNjQzMzcsIDkyNzU5LCAxMjUwNTQsIDAsIDcxOTUsIDgzMzQ2LCAyMDA3LCA2NDQzMSwgCi0gICAgMTk1MDc1LCAwLCA5MjE5NywgMTI3MDkwLCA2MzUsIDAsIDEyOTA4MiwgNjU2MTMsIDc3OTA5LCA5MjQyMCwgNzM5OTcsIAotICAgIDEyODUxMCwgMTIxNDU3LCA0MzkwNSwgNzk4NCwgODYwMCwgNzQ0MzQsIDEyNzc3MCwgNDE3NiwgNzAwNTAsIDIwMzQsIAotICAgIDc4NDIzLCAxMTE1NCwgNjU4OTEsIDEyNzAzOCwgMCwgMzE4LCAyMDM4LCAxMjg1NDQsIDc4NTk2LCAxOTQ2MDIsIDM2NDksIAotICAgIDEzMTQ5LCA0MjE0NSwgNDI3OTgsIDM2MzQsIDEyMDI5MSwgNzE4ODUsIDY3Njc3LCAxMjAxMjQsIDc4NjYsIDc1MDQ1LCAKLSAgICAxMTQwMiwgNDIxNDYsIDk0MDMyLCA3NDIzOCwgNDI2NjQsIDI4NDksIDEyNzAzNCwgMCwgNzkzOCwgMTI5NjAsIDE3NjEsIAotICAgIDExODEyLCA2NTM3OSwgNjgzODYsIDEyODE4NSwgMTE1OSwgNzExODMsIDY5NzI5LCAwLCAxMjA3OTcsIDcxNzgsIDEyMDg1MSwgCi0gICAgOTgzODM2LCA0MTY4MCwgMTI4NDY5LCA4MzA5OCwgMTE1MzQsIDE1MTQsIDExNjY4LCA2Nzg5MSwgOTMxMywgNzAxNSwgCi0gICAgMTI4NDkwLCA2Nzg3NywgMTk0NTYxLCAxMjk4OSwgNjY0NzQsIDkzNjgsIDEyODQ4LCAxNjI0LCA0MzI3MCwgMCwgNzQyNzgsIAotICAgIDEwODE4LCA4MzA5MSwgOTk1MywgMTk0ODk1LCA3ODQyMSwgMTE5NCwgMzI0MiwgOTc2MSwgOTU1NSwgODU5OCwgMTIwMjk5LCAKLSAgICA2MTY5LCAxMjg3MSwgMTU1MSwgMjc5OCwgNjUxNzYsIDQ5NTgsIDQyNzUyLCAxMTkwMjUsIDkxNzkyNCwgNjc4NzUsIAotICAgIDEyMDMwMSwgMzQ5NSwgNjY2NDgsIDEyNTA3OSwgODMzNTQsIDY4MzY0LCAxMjA3NzksIDQ4OTEsIDAsIDEwNjQxLCAwLCAKLSAgICA3Mzc0NiwgMTIwOTQ1LCA2ODM1MiwgMCwgNzM3ODcsIDEyODg1OCwgMTI3MDk0LCA3MTk5LCAxMTEzMSwgMCwgMCwgMCwgCi0gICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDAsIDUyNzEsIDY4MzIzLCAKLSAgICA5MjUxNywgODMzNTYsIDEzNjIsIDEzMjk3LCAwLCA3MTg4MCwgMCwgOTgzMzMzLCA3Mzc4OSwgMCwgNjY1OCwgNDQyNiwgMCwgCi0gICAgNjY4MzAsIDk4Mzg0MiwgODMxMDMsIDcyNzYsIDQyMTYzLCA1MjIwLCAwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIAotICAgIDQyNzAzLCA4MzEwNywgMzc5LCAwLCA0Mzc1NSwgNzA1MDQsIDQzNjQ3LCAzMjIzLCA2NTQ5MiwgMTI4NCwgMTk0NzcxLCAKLSAgICA0NTQ5LCAxOTQ3MzgsIDAsIDcxMjUzLCA3MDc4NCwgMTA4MDcsIDk1NTgsIDkzMDI3LCAwLCA4NTE1LCA4Njg4LCAxMjg2NiwgCi0gICAgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAxMjgxMDEsIDQzMzg1LCA3NTY0LCAwLCA0MzMyOSwgODMxNDgsIDkyNDU4LCAKLSAgICA3Mzc1NywgNjY0NTYsIDQyMzU5LCAxMjg0MzksIDIwMzEsIDk4Mzg5MCwgNzIwMiwgMTI4MjMyLCAxMjY3NiwgNDI3MjksIAotICAgIDc0Nzc3LCAzMjE1LCAxMjA5ODIsIDc3MTAsIDE2MTAsIDczODAxLCAxMjg4MDcsIDAsIDY1NjgyLCAwLCA0MzkxNywgCi0gICAgNjU5MjQsIDk5NzQsIDIyOCwgNDM5MjIsIDE1MDEsIDEyNzk5NCwgNjQzOTUsIDUxNzksIDcyMDAsIDYyMjUsIDExODkyNywgCi0gICAgNDI5OTksIDE3MjUsIDY1NTMzLCA4MTk2LCA3NDc2LCA3NDM5OSwgMCwgNjY4NjgsIDcxNTIsIDg1MDIsIDU3NjIsIDE5NjcsIAotICAgIDc0ODMsIDQzODk4LCAwLCA4MTA0LCA3MDEyOCwgNzQ3NCwgNDM5MTQsIDgzMDgwLCAxMjY1MDcsIDEwNDE0LCAxMzAwMSwgCi0gICAgODE0MSwgOTgzMjM5LCA0MjUzNywgMTU1NywgNDM1OTQsIDEyODY0MiwgNjMzMCwgNjgwNSwgODYzMSwgMjU0NSwgNDI5MzQsIAotICAgIDEyNzE2NiwgMCwgNzQxOTAsIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgCi0gICAgMTYzNywgMTI4NTAyLCA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDAsIDEyMDIxMSwgNjUxNTgsIDEwODYwLCA3NDk1OSwgCi0gICAgNDM2NTgsIDc1MjcsIDgzMDg2LCA0MzMxOSwgNjQxOSwgMCwgNDUsIDAsIDY0NTg4LCA5Mzk4OSwgMTI3NzUzLCAxMTk4MTAsIAotICAgIDcxOTQsIDUyOTEsIDAsIDQzNjY2LCAxMzEyOSwgMTI4Njg0LCA5MDg0LCAxMjEwMzksIDg3MzcsIDk4MzE2NSwgMTI4ODEsIAotICAgIDc1MDY2LCAxMjkwNiwgOTYzOSwgNzkxMiwgMjYyMCwgOTgzODgyLCAzNTY0LCAwLCA2OTk3OCwgMTc5LCA0MzY0NCwgCi0gICAgNzUwNDksIDY0NzU2LCAyODUzLCA3ODQ0MywgMTE4ODEzLCAxMjkwNDIsIDcwMzQ3LCAxMTkwMDksIDI4NTAsIDgwODQsIAotICAgIDk4MzA4NSwgNzM4NTAsIDI4MDEsIDkyMjg0LCA0MjA2OSwgMTE5ODM5LCA3NDc1NCwgODM1MjIsIDQyMDcyLCA5MjczNiwgCi0gICAgMTE5ODQyLCAxMDM5OCwgODMzODYsIDgzNTIzLCA4Mzc3LCAxMTkzMTIsIDgyNDUsIDY4NDAxLCAzMTU4LCA5MjM5NiwgCi0gICAgMzk4MywgNDM2NTYsIDkyMywgMTE5ODU3LCA5MjQ3MCwgMjkyLCAxMTExOSwgMTE5ODQ1LCAxMTk4NDQsIDMyMjEsIDE3NjMsIAotICAgIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCi0gICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzYzMiwgMTE5NjE0LCAKKyAgICA5NDA0NSwgNDIwNzMsIDY3ODUsIDY0NTkwLCA5ODMxMzUsIDQzNzEsIDcxOTYsIDY1MzE4LCAyMDM1LCA2NTMxNiwgNDEwNiwgCisgICAgNjUzMTQsIDY1MzEzLCA0MjA3NCwgMTI3ODQ3LCA0MTIyOCwgMTAwMzU5LCA2NTYwOSwgNDEyNDEsIDc5MDMsIDQxMjM5LCAKKyAgICA0MzUzMywgNzg0NTksIDcxODksIDEwMDQxOCwgOTgzMjI3LCA0Mzk0MSwgMTIzNTcsIDQyODAyLCA3ODQ1MCwgODQ4NywgCisgICAgOTEzMSwgNjYyOTIsIDQ2MTUsIDEyNjk1LCAxMjc3NTIsIDAsIDEyMTc1LCAwLCA2NDUzNSwgMCwgNzgwOSwgOTgzODg3LCAKKyAgICAxMjEzNTEsIDU2MiwgMTIxNjksIDY1OTAsIDY5NzYyLCA2NjQ1NSwgNjQ3MzgsIDMyMTksIDY4NjU0LCAxMjEwOTYsIAorICAgIDEyODI4MSwgMTAzNywgMTI4Njc3LCAyMDI1LCAxMTkxNTksIDEzMDk4LCA3ODQ0MiwgMTA2MzcsIDQ1NjgsIDU0OSwgMTU3MCwgCisgICAgNDM4MzksIDI4MzUsIDgzMDUyLCAxMDYyNCwgNDM2MjMsIDExMDcyLCA4MzA0NSwgMTIwNTYxLCA4MzA0NiwgMTI2MDYsIAorICAgIDc4NDMzLCAyODI1LCA4MzA0OCwgMTA4MjUsIDgwNzksIDI4MjEsIDQxMDQ2LCA5MjMyNywgNzM2NSwgODMwNDMsIDEyMDU5MywgCisgICAgMTMwNzEsIDEyMTI4OCwgNDUyLCA0MTA0OSwgNDI4NDAsIDYzNDYsIDI4MzEsIDU0NjEsIDc0NTk2LCAxMTQ2NSwgNTIxMiwgCisgICAgMTE4OTQ1LCA2NDcwMywgMTE5MTkxLCA0MjMwOCwgNzE4MSwgMTI4Mjc2LCA0MTMzMiwgMCwgMTIzMzMsIDQxMDQ3LCAxNjY4LCAKKyAgICAxMTk4NDksIDEyMTE1MCwgMTI3Mjk1LCAxMTg3LCAxMjg4NzUsIDQyNjI4LCA3ODU3NSwgODI5NTMsIDcxODYzLCA4Mjk1NSwgCisgICAgMzI0MCwgMTI4NTE4LCA5MjEzLCAwLCAxMTU5MSwgNDEwNjUsIDUzMjMsIDgxNjYsIDcwNzM5LCAxMTg5MzIsIDEyNzExMSwgCisgICAgNjY4MjcsIDE2MjMsIDY1Mjk3LCAxMjg4NTYsIDU3MSwgMCwgNDkxOCwgMCwgNTI4OCwgMTI3MDgxLCAxNTQxLCA2NTA0OCwgCisgICAgMTkwOSwgODg2NCwgMCwgNjY0MDIsIDEwNzM2LCA5MjUwOCwgMTE1NzEsIDc2MTUsIDcwNDc2LCA5MjI5NiwgNDIzNywgCisgICAgOTI1NzYsIDEwMzUsIDY1ODE1LCA2ODA4MywgMzU2NywgNzAxLCA2NTkzNiwgMzQ4OSwgMTIwODk5LCA3MDQ2MiwgNzAxNzIsIAorICAgIDExNDAzLCAwLCAwLCA4Mjk4NiwgMzc5NiwgNjgwMCwgNzA0NzIsIDM5OTQsIDExNDIxLCA3NDYxMSwgMTI3OTExLCAKKyAgICAxOTUwNzgsIDY4MDM2LCA3MDY1OSwgMCwgNjQ4NTcsIDgzNTA4LCAyODU1LCA3MDY5NywgNjYzMDgsIDQxNjIxLCA2ODIxNCwgCisgICAgODM1MTMsIDEyNzgxNywgMTA2NTQsIDgyOTQ1LCAxMTkyMjYsIDEyMTY0LCAzMjQ2LCA3OTA2LCA0Mzk3MiwgNjU4NDcsIAorICAgIDcxODIsIDAsIDEzMDI0LCA2NjI3NiwgNzQyNzAsIDgzMDY5LCAxMjUwOTAsIDEyMTExNSwgMCwgMTQ5NiwgNzQ3LCAKKyAgICA5MTc5OTksIDk0MiwgMjM3OCwgNDMxMzYsIDgzMDMxLCA4NDY2LCA4MzA3NCwgOTMyMCwgODAwMSwgMTIzMiwgODEzOSwgCisgICAgMTE2MTcsIDc0NjM3LCAwLCAxMTQwOSwgNjgzNzMsIDYzODIsIDEyNjUwMCwgNjQ2MzQsIDkyMzYyLCA3MDIwMiwgMTE2MTIsIAorICAgIDkzMDA4LCA2NzYwMCwgMjM3NCwgOTQwNjYsIDg0NzUsIDExNjA5LCA2NjMxMywgOTI1NjgsIDAsIDUyODYsIDExOTI5NywgCisgICAgODMwNTksIDk4MzI1MywgNjQ5MjUsIDEyMDI4MywgMTI3MjA0LCAxMTg5ODIsIDcxOTA1LCA3NzA1LCAxMTk0MiwgMTEzMDUsIAorICAgIDEyNzIwMywgMzMwOSwgODI5NzksIDkyMDYsIDgyOTgwLCAxMTM4MjQsIDY4MDIsIDcwMzUzLCA0MTY1MywgMTI4MCwgMTI0MSwgCisgICAgNzE2OCwgMTIwOTYsIDAsIDY2NjE1LCA0MjU2NSwgNDE2NTEsIDk4Mzg2OSwgOTE3NjI3LCA4MzA0MiwgNDE2NTAsIDY2NTA3LCAKKyAgICA2NjQ3MCwgNzQ0NzIsIDEyOTE0LCA0MTQ5MSwgNDM5MDEsIDk0MTA2LCA2MDc4LCA5OTU0LCA3ODgyMiwgMTQ3NSwgCisgICAgMTE5MjQ3LCA5OTM4LCA2MDg0LCA5MTc1NDYsIDQxMDY0LCA0MTA2MiwgMCwgMTEzNjgwLCAzMjU2LCAxMDE4OSwgNDIwNzYsIAorICAgIDQzMjUyLCA3ODgyMywgNjgwODksIDg3MjcsIDEyMDkyMiwgNjU4NzUsIDkxNzkxNiwgMTI5MzQ5LCAxMjc3NjIsIDEwNTYyLCAKKyAgICA3NDIxNSwgNDMwNjUsIDEyMDkwNiwgMCwgMzI0OCwgNzQyOTcsIDMyNjEsIDkwMTUsIDcxMzUxLCAxMTM3MTgsIDM2MzUsIAorICAgIDY0MzM3LCA5Mjc1OSwgMTI1MDU0LCAwLCA3MTk1LCA4MzM0NiwgMjAwNywgNjQ0MzEsIDE5NTA3NSwgMTk0NjcwLCA5MjE5NywgCisgICAgMTI3MDkwLCA2MzUsIDk4MzExOCwgMTI5MDgyLCA2NTYxMywgNzc5MDksIDkyNDIwLCA3Mzk5NywgMTI3OTgwLCAxMjE0NTcsIAorICAgIDQzOTA1LCA3OTg0LCA4NjAwLCA3NDQzNCwgMTIxMDQ3LCA0MTc2LCA3MDA1MCwgMjAzNCwgNzg0MjMsIDExMTU0LCA2NTg5MSwgCisgICAgMTI3MDM4LCAwLCAzMTgsIDIwMzgsIDEyODU0NCwgNzg1OTYsIDEyOTA5NCwgMzY0OSwgMTMxNDksIDQyMTQ1LCA0Mjc5OCwgCisgICAgMzYzNCwgMTIwMjkxLCA3MTg4NSwgNjc2NzcsIDEyMDEyNCwgNzg2NiwgNzUwNDUsIDExNDAyLCA0MjE0NiwgOTQwMzIsIAorICAgIDc0MjM4LCA0MjY2NCwgMjg0OSwgMTI3MDM0LCAwLCA3OTM4LCAxMjk2MCwgMTc2MSwgMTE4MTIsIDY1Mzc5LCA2ODM4NiwgCisgICAgMTI4MTg1LCAxMTU5LCA3MTE4MywgNjk3MjksIDAsIDY2NzY4LCA3MTc4LCAxMjA4NTEsIDk4MzgzNiwgNDE2ODAsIAorICAgIDEyODQ2OSwgODMwOTgsIDExNTM0LCAxNTE0LCAxMTY2OCwgNjc4OTEsIDkzMTMsIDcwMTUsIDEyODQ5MCwgNjc4NzcsIAorICAgIDE5NDU2MSwgMTI5ODksIDY2NDc0LCA5MzY4LCAxMjg0OCwgMTYyNCwgNDMyNzAsIDAsIDc0Mjc4LCAxMDgxOCwgODMwOTEsIAorICAgIDk5NTMsIDEyODAwOCwgNzg0MjEsIDExOTQsIDMyNDIsIDk3NjEsIDk1NTUsIDg1OTgsIDEyMDI5OSwgNjE2OSwgMTI4NzEsIAorICAgIDE1NTEsIDI3OTgsIDY1MTc2LCA0OTU4LCA0Mjc1MiwgMTE5MDI1LCA5MTc5MjQsIDY3ODc1LCAxMjAzMDEsIDM0OTUsIAorICAgIDY2NjQ4LCAxMjUwNzksIDc4NzA4LCA2ODM2NCwgMTIwNzc5LCA0ODkxLCA5MTc5MzMsIDEwNjQxLCAxMjUyNjUsIDczNzQ2LCAKKyAgICAxMjA5NDUsIDY4MzUyLCAwLCA3Mzc4NywgMTIwMTk1LCAxMjcwOTQsIDcxOTksIDExMTMxLCAxMjA2MTcsIDE5NDcwMCwgMCwgCisgICAgOTgzODUyLCAxMjY5NzksIDQyNjg1LCA0MjY3OSwgMTkzLCA3ODc4OSwgMCwgMCwgNDI2NjcsIDk4Mzg2OCwgNTI3MSwgCisgICAgNjgzMjMsIDkyNTE3LCA4MzM1NiwgMTM2MiwgMTMyOTcsIDExODg2MiwgNzE4ODAsIDE5NTA5MCwgMTk0OTY5LCA3Mzc4OSwgCisgICAgMTIwOTg5LCA2NjU4LCA0NDI2LCAxMjcwOTMsIDY2ODMwLCA5ODM4NDIsIDgzMTAzLCA3Mjc2LCA0MjE2MywgNTIyMCwgCisgICAgMTAwNjcwLCA3ODYyMSwgNjc4MjIsIDI0MTYsIDMzMTAsIDQyNzAzLCA4MzEwNywgMzc5LCAxMjkxNTksIDQzNzU1LCAKKyAgICA3MDUwNCwgNDM2NDcsIDMyMjMsIDY1NDkyLCAxMjg0LCAxOTQ3NzEsIDQ1NDksIDExNTIzLCAwLCA3MTI1MywgNzA3ODQsIAorICAgIDEwODA3LCA5NTU4LCA5MzAyNywgMTI4MDAzLCA4NTE1LCA4Njg4LCAxMjg2NiwgNjUzMDgsIDMyOTQsIDgzMTQzLCA4NTI5LCAKKyAgICAxMjgxMDEsIDQzMzg1LCA3NTY0LCA5MTc5ODYsIDQzMzI5LCA4MzE0OCwgOTI0NTgsIDczNzU3LCA2NjQ1NiwgNDIzNTksIAorICAgIDEyODQzOSwgMjAzMSwgMTI3Mzk0LCA3MjAyLCAxMjgyMzIsIDEyNjc2LCA0MjcyOSwgNzQ3NzcsIDMyMTUsIDEyMDk4MiwgCisgICAgNzcxMCwgMTYxMCwgNzM4MDEsIDEyODgwNywgMCwgNjU2ODIsIDAsIDQzOTE3LCA2NTkyNCwgOTk3NCwgMjI4LCA0MzkyMiwgCisgICAgMTUwMSwgMTI3NTEyLCA2NDM5NSwgNTE3OSwgNzIwMCwgNjIyNSwgMTE4OTI3LCA0Mjk5OSwgMTcyNSwgNjU1MzMsIDgxOTYsIAorICAgIDc0NzYsIDc0Mzk5LCAwLCA2Njg2OCwgNzE1MiwgODUwMiwgNTc2MiwgMTk2NywgNzQ4MywgNDM4OTgsIDAsIDgxMDQsIAorICAgIDcwMTI4LCA3NDc0LCA0MzkxNCwgODMwODAsIDEyNjUwNywgMTA0MTQsIDEzMDAxLCA4MTQxLCAxOTQ5NDksIDQyNTM3LCAKKyAgICAxNTU3LCA0MzU5NCwgMTI4NjQyLCA2MzMwLCA2ODA1LCA4NjMxLCAyNTQ1LCA0MjkzNCwgOTIyMDMsIDEyNTIxMSwgNzQxOTAsIAorICAgIDEyODQ3NywgNzA0MTAsIDk4Mzc4NiwgNDI3NjIsIDE5NDcwOCwgNDI5MTQsIDE2NTAsIDI2MiwgMTYzNywgMTI4NTAyLCAKKyAgICA3OTAxLCAzMjM4LCA4MzAyNiwgNDE4NjEsIDk4Mzc2MywgMTIwMjExLCA2NTE1OCwgMTA4NjAsIDc0OTU5LCA0MzY1OCwgCisgICAgNzUyNywgODMwODYsIDQzMzE5LCA2NDE5LCAwLCA0NSwgMTI4MDYwLCA2NDU4OCwgOTM5ODksIDEyNzc1MywgMTE5ODEwLCAKKyAgICA3MTk0LCA1MjkxLCAxMDAzOTgsIDQzNjY2LCAxMzEyOSwgMTI2NjM5LCA5MDg0LCA3MjcxNywgODczNywgOTgzMTY1LCAKKyAgICAxMjg4MSwgNzUwNjYsIDEyOTA2LCA5NjM5LCA3OTEyLCAyNjIwLCAxOTQ4MzAsIDM1NjQsIDEyNzM5MywgNjk5NzgsIDE3OSwgCisgICAgNDM2NDQsIDc1MDQ5LCA2NDc1NiwgMjg1MywgNzg0NDMsIDExODgxMywgMTI5MDQyLCA3MDM0NywgMTE5MDA5LCAyODUwLCAKKyAgICA4MDg0LCA5ODMwODUsIDczODUwLCAyODAxLCA5MjI4NCwgNDIwNjksIDExOTgzOSwgNzQ3NTQsIDgzNTIyLCA0MjA3MiwgCisgICAgOTI3MzYsIDExOTg0MiwgMTAzOTgsIDgzMzg2LCA4MzUyMywgODM3NywgMTE5MzEyLCA4MjQ1LCA2ODQwMSwgMzE1OCwgCisgICAgOTIzOTYsIDM5ODMsIDQzNjU2LCA5MjMsIDExOTg1NywgOTI0NzAsIDI5MiwgMTExMTksIDExOTg0NSwgNzI3MTUsIDMyMjEsIAorICAgIDE3NjMsIDkyNDYzLCA0NjEyLCA2NzcyOSwgMTE5ODUwLCA3MjUzLCA3MDQ1NiwgNjgzOTEsIDc1MDAyLCAxMDc4MiwgMzYzNywgCisgICAgMTI5OTYsIDQzNTQyLCAxMTM2NzYsIDY0NTc4LCA4MzQ0OSwgMzIyOCwgNjk2MzYsIDg3ODMsIDk4MzA5MywgMTE5NjE0LCAKICAgICAyNzMxLCAwLCAxMjA4MzMsIDc4NTg1LCA0MTAyLCA3Njk2LCA3Mzg3OCwgMTIxNDE3LCAxMjgxMzIsIDcwODEzLCA0MzMxNiwgCiAgICAgNDE3NywgMTEyODMsIDkwODksIDEyMDkxOCwgNzM5OTYsIDEyMTExMSwgNjQ1MDAsIDQzNjc0LCAwLCA2NDk0NywgMTg1NiwgCi0gICAgMCwgMCwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDEyNzM4MCwgOTgzOTMxLCAKLSAgICA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzY4MywgMjAzMywgNzg1NzcsIDc4NTc2LCA4Mjk2NSwgNTUyNTQsIAotICAgIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgNjU2NzQsIDEyODI0NCwgCi0gICAgOTQxMTAsIDQxNjg5LCAwLCA3NDAwNiwgNjQ5MDksIDY2NDYsIDExNzkwLCA3NDAxOSwgMTI4NTIwLCAxMjgwNjYsIAotICAgIDEyODAzMSwgODU2MSwgNDU3MywgMTIxMzc1LCA1MzI2LCA5MjU3MSwgMTIwNjA1LCA3MjMwLCA4MjU3LCAxMjE0MTUsIAotICAgIDg3NzgsIDQxNjg4LCAwLCA2NTc3NiwgMjA3MSwgODMxNCwgNjQ1OSwgNDM1MTEsIDc2MjgsIDY1MDkyLCA3MzkwMywgCi0gICAgNjQzNTUsIDExMzQyLCAxMjg1NjEsIDAsIDk4MzQzNCwgMTI4MjI2LCAxMjcwMDEsIDAsIDExODEwLCAxMzE2NCwgMTA3MjMsIAotICAgIDk2NywgOTgzMzM1LCAxMjA5ODUsIDExOTQ2LCA5ODM2MDIsIDMyNTcsIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEyOTA3MiwgCi0gICAgNDM1MjYsIDAsIDExOTU3MywgMTg4NiwgNDIzNDIsIDEwMDg5LCA4NzAsIDc2NDgsIDM0OTksIDc2NjIsIDc2NTIsIDg3NiwgCi0gICAgODcxLCA4NzcsIDc2NjUsIDg3OCwgNDIwMTUsIDg3OSwgNDM2OTIsIDQ1NjMsIDAsIDkxNzg5MiwgNzU5MSwgNjU4ODcsIAotICAgIDg2NywgOTUyMCwgODcyLCA3NjU2LCA4NjgsIDg3MywgNzY0MiwgNzY1OSwgODY5LCA4NzQsIDc2NDQsIDEyMDY3NCwgODc1LCAKLSAgICA3OTAsIDEyODMwMywgMTE4OTM4LCAxOTUwNTMsIDkzMDM4LCA2NjE4MiwgMTk0NjIzLCA1NDI5LCAxOTUwNTUsIDY2MTgwLCAKLSAgICAxMjY0ODAsIDY2MTgxLCA2ODQ1MiwgOTgzMjkxLCAxMjcyMTQsIDQyMDY3LCAwLCA1NDMzLCAxMDY1NywgNzkxMSwgCi0gICAgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgCi0gICAgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCAKLSAgICA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgMTg1MSwgMTI0OTk1LCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIAotICAgIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCA4ODI5LCA3NzExLCAxMTExMiwgMCwgOTIzMjEsIDQzMzE4LCAKLSAgICA5MjMwMiwgODgwOSwgNjk4ODEsIDAsIDEyNjUxOCwgMTIwNjA0LCA5ODMwNTIsIDk4MzI3NywgOTgzNDMzLCAxMjg0MTIsIDAsIAotICAgIDEyMDU3NywgNzQyNywgOTk1OCwgNDU4OCwgNDM2ODAsIDAsIDc0NDg0LCAxMjcxODUsIDI0MzMsIDEyODYwMiwgNjk5NzMsIAotICAgIDMzNTIsIDc0MzYzLCAxMjg2NjgsIDEyMTM0MSwgNzkzLCA3NDQwNCwgMTExOTcsIDMwNSwgNTY3LCA2NzY2MiwgODQyLCAKLSAgICA2OTk3OSwgODIwOCwgNjgzMDgsIDQxNjk1LCAxNjQ3LCAxMTg4NzcsIDcwODQxLCA3ODM3LCA5MTc2MjUsIDgxOCwgNTMzNywgCi0gICAgMTk0NjI4LCA5MTc2MjEsIDQxMzc2LCAxMTk5NzgsIDY4NzQyLCAxMjA1OTQsIDc0MDg2LCA2ODc3NywgNzAxNzksIAotICAgIDkxNzYxMywgMTA5NzMsIDY2MzU5LCAxMzcyLCAxMjcxNzIsIDkxNzYwOCwgNDk2OSwgMTI1NCwgOTE3NjA1LCAxOTQ2NTQsIAotICAgIDkzOTY3LCA5MTc2MDIsIDY1MjI4LCA3ODIyMSwgMTI2NjEyLCA2NzcyMywgMjg0MCwgOTgzOTA1LCA3ODgyOSwgOTgzOTM5LCAKLSAgICA2Njg4NywgMzI0NSwgOTA2OCwgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgCi0gICAgNjgwMTYsIDk4MzI2NywgMTI3MzI2LCAxMjUwMzgsIDcwODM1LCAwLCA3MDg0NCwgNDM2NDgsIDEyMDgxMiwgOTE3ODMzLCAKLSAgICA0MzMyMiwgOTI2NjIsIDAsIDAsIDY0MzcyLCA5MjY5OCwgMzIyNiwgNjU1LCA3NTIsIDc0NTcsIDc0NTYsIDc0NTIsIDMyODUsIAotICAgIDc0ODk0LCAxMTE1MiwgOTI5MDMsIDY1NjEwLCAyMzkxLCA5MjkwOCwgOTIyNDgsIDY3MSwgMjUwLCA3NDM0LCA2MTgsIDY2OCwgCi0gICAgNjEwLCA0MjgwMCwgNzQzMSwgMTE1MiwgNDI4MDEsIDY0MCwgMTIwNjY2LCA3NDQ4LCA3NDM5LCA2MjgsIDM5MDUsIDczODEwLCAKLSAgICAxMjgzNDAsIDEyODI2NiwgNjQ3NDksIDY3ODUwLCAyMTA3LCAxMjgyOTAsIDc0MjQ5LCA0NjA1LCAxMjgxNzQsIDk4MzE5MiwgCi0gICAgNDMzNzIsIDY1OTQ1LCAxMjcyNDksIDExMTEzLCAxMTk1OTAsIDAsIDAsIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCAKLSAgICA0MjI2MSwgMTE0NjQsIDMzNjUsIDk5NzEsIDAsIDk4Mzk1MSwgMTI4Mjk3LCAwLCA3ODc2MiwgMTI3ODY3LCAxMjEzNjgsIAotICAgIDExMzM0LCA0MzMyNiwgMTI2MDksIDExNTE5LCAxMTUwMywgNTUzMCwgNTIxMCwgMCwgNDYyNywgMTE5MjY5LCA1MjA4LCAwLCAKLSAgICA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA3Mzg5NCwgMTI4ODUyLCAKLSAgICA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAxMjAyODEsIDAsIAotICAgIDk4Mzc3NywgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAzMjA2LCAxMjAyNzgsIAotICAgIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIDY4NjcyLCAzMjIwLCAKLSAgICA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgMCwgNzA0OCwgNDU5MCwgMTI3MjU4LCAKLSAgICA1ODUyLCAwLCA3ODQ4MiwgMTI3MjU5LCAxNzA4LCAwLCA3ODQ4MSwgMjYyMywgMTE5NDMsIDEyODcwMCwgNjkyMjYsIAotICAgIDY5OTc0LCA0Njk4LCA2NjUwOSwgMTA2NiwgMTE5OTIxLCA0NzAxLCA5ODM4NzYsIDEyMDI4NSwgNzA0NDcsIDk0MTExLCAKLSAgICA4MjY3LCAwLCAxNDIxLCA2NjQyNiwgNzUxNiwgMTI3NTUyLCAyNjI1LCA5ODM2NDEsIDgwMzQsIDc0MzA5LCAwLCAzNjMxLCAKLSAgICAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAwLCA5ODMwNjUsIDAsIDQzMzg0LCAxMjY2MCwgMTI4NjkzLCAxMjgyNzAsIDAsIAotICAgIDc0ODUwLCA0MTA2OSwgNzAxODUsIDEyODE1NiwgMTIwOTksIDQzMTAsIDEwMDMyLCA2MjUyLCA3MTMsIDc5OTAsIDk4MzQ4OSwgCi0gICAgMzk5MCwgMTI1MDUwLCA5ODMyNjQsIDY2MzY4LCA1MDE3LCA2NDk1NiwgNzA3MSwgMCwgNzA0NTcsIDEwMzAsIDExODgwMCwgCi0gICAgOTI1NjMsIDk1MTMsIDQxMDU5LCA5MzU3LCA3NDk4OCwgMTc3MywgNzc5MzksIDEyMDM1MCwgMTI0OTYxLCA2MzM5LCA3NzQ1LCAKLSAgICA5ODQ0LCAxMjcyMjAsIDY0NjUwLCA5NCwgMTg4MCwgNzQ3NjYsIDExMzcxOSwgODkwOCwgOTgzMjIyLCAxMjg3MDcsIAotICAgIDY1OTEzLCA3ODQ3MCwgMTA3NTIsIDEzMDAzLCA2ODc2OSwgMTI2NTcyLCA0MTMwNywgODczMiwgMTIwMzM2LCAwLCAxNzU3LCAKLSAgICA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgCi0gICAgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIAotICAgIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCAwLCAKLSAgICAxMjkxMywgNzQyMDYsIDc1MjksIDEyODc0NSwgMTI3ODY4LCA3MDIwMywgMTIwNzgyLCA0MTEzLCAxMjA5MjksIDIzNzIsIAotICAgIDMzNiwgMCwgNzUwOSwgMTIxNTIsIDE5NDg4NSwgNjgyLCA3NjU1LCA0MTUwNSwgMCwgNjQ3NDMsIDEwNTkzLCAxNzAzLCAKLSAgICA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDAsIDQyMzUxLCAKLSAgICAxMDEwOSwgNzQ1MzUsIDc0MDY4LCA3NDkyMSwgMCwgOTI2OTAsIDAsIDY1MDY4LCA3NDI5MSwgMTk2NSwgNzA2OSwgNDMzMTIsIAotICAgIDAsIDczODg3LCAxMTEzMCwgMjA4NywgNjQzNzAsIDYzMTQsIDQxNzE0LCA4NTAxLCAxMTE0NSwgMTIxMTE3LCA3NDIzOSwgCi0gICAgNDEzMTcsIDkyNjE0LCAyMDkxLCA3NDU0NSwgMjA5MCwgNjk5MTIsIDkzNTMsIDcxMTcsIDIwNzcsIDc3ODg2LCAxMTE2MSwgCi0gICAgMTA0OTgsIDIwODMsIDc3ODg4LCA3MTE5NiwgMCwgMTE5MjM2LCA2MzQsIDEyNDk3MCwgOTIyOTAsIDE5NDg4NiwgNjk3NzksIAotICAgIDQxNjUsIDg3NDYsIDE5NTA0OCwgOTY1NCwgMTI4NTYsIDY5MjQsIDc2NjAsIDcwNjYsIDE5NDY5MywgNzA0MTUsIDEyODEzNSwgCi0gICAgNDEwMzcsIDQyNjkyLCA3Nzg2LCAxMjk1OSwgNDEwMzksIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgCi0gICAgMTE4MSwgNzA1NiwgMzE3NCwgNjcyNDgsIDAsIDkyNjY4LCA2NTY2NSwgMTI3Mzc1LCAxMTM3NzYsIDY5MjAsIDAsIDkyMjk1LCAKLSAgICAxMjY2MDYsIDExODk2NSwgNjgzMTgsIDY0NjQ0LCAxMjY5ODEsIDc0MTE5LCA2ODIzOCwgNDEwMjgsIDc0MDI1LCA2MjMxLCAKKyAgICAxMDA1NzIsIDEyNzgxMiwgNjM3OSwgOTE3ODA0LCAxMTE0MiwgMTI3MTc2LCAzMjA4LCAxMjk3NSwgNzQ3NzUsIDExOTEyMSwgCisgICAgOTgzOTMxLCA5MjM4OSwgNzQwNzIsIDU1MjY5LCAwLCAxMjQ5NjIsIDk4MzMyOSwgMjAzMywgNzg1NzcsIDc4NTc2LCAKKyAgICA4Mjk2NSwgNTUyNTQsIDc3NDAsIDgyOTc0LCA3MDQ0OCwgMTI2NTU1LCA3Mzk2NCwgNjg1MDUsIDkzOTg4LCA2NzYxMiwgCisgICAgNjU2NzQsIDEyNzU1MiwgOTQxMTAsIDQxNjg5LCA5ODM0MTAsIDc0MDA2LCA2NDkwOSwgNjY0NiwgMTE3OTAsIDc0MDE5LCAKKyAgICAxMjg1MjAsIDEyODA2NiwgMTI4MDMxLCA4NTYxLCA0NTczLCAxMjEzNzUsIDUzMjYsIDkyNTcxLCAxMjA2MDUsIDcyMzAsIAorICAgIDgyNTcsIDEyMTQxNSwgODc3OCwgNDE2ODgsIDAsIDY1Nzc2LCAyMDcxLCA4MzE0LCA2NDU5LCA0MzUxMSwgNzYyOCwgCisgICAgNjUwOTIsIDczOTAzLCA2NDM1NSwgMTEzNDIsIDEwMDU3OSwgOTgzNzMyLCAxOTQ5MzksIDEyODIyNiwgMTI3MDAxLCAKKyAgICAxMjc5NDQsIDExODEwLCAxMzE2NCwgMTA3MjMsIDk2NywgMTAwNDgxLCAxMjA5ODUsIDExOTQ2LCAxMjkwMzIsIDMyNTcsIAorICAgIDEyNzIwOSwgMTIzMDcsIDE4NDUsIDEwMDU3OCwgNDM1MjYsIDk4MzA4NCwgMTE5NTczLCAxODg2LCA0MjM0MiwgMTAwODksIAorICAgIDg3MCwgNzY0OCwgMzQ5OSwgNzY2MiwgNzY1MiwgODc2LCA4NzEsIDg3NywgNzY2NSwgODc4LCA0MjAxNSwgODc5LCA0MzY5MiwgCisgICAgNDU2MywgOTgzMjQ5LCA5MTc4OTIsIDc1OTEsIDY1ODg3LCA4NjcsIDk1MjAsIDg3MiwgNzY1NiwgODY4LCA4NzMsIDc2NDIsIAorICAgIDc2NTksIDg2OSwgODc0LCA3NjQ0LCAxMjA2NzQsIDg3NSwgNzkwLCAxMjEwODIsIDExODkzOCwgMTAwNDI3LCA5MzAzOCwgCisgICAgNjYxNzcsIDE5NDYyMywgNTQyOSwgMTk1MDU1LCA2NjE4MCwgMTI2NDgwLCA2NjE4MSwgNjg0NTIsIDE5NDk2NiwgMTE5MjQ0LCAKKyAgICA0MjA2NywgMTE5OTkzLCA1NDMzLCAxMDY1NywgNzkxMSwgMTI1MTE5LCAxNTQ3LCA2NjE3NiwgNDIwMTIsIDEyMDU3NiwgCisgICAgNTQyNSwgNDk3NywgOTk5OSwgNTMxNywgNTQyMywgNDYxMSwgMTI1MDk0LCA2NzYzNywgMTI3Mjg2LCA5Njc5LCA3NDEyMiwgCisgICAgOTI5NzgsIDkxNzU4NSwgMCwgNjYxOTQsIDQ0MTgsIDY2MTg0LCA0NjI4LCA0MjQ1LCAxMTk2NDgsIDAsIDEyNzI2MywgCisgICAgMTg1MSwgMTIwODIzLCA4MzMyMCwgMTE5MDgsIDAsIDkzNjAsIDExODg5NywgMTIwODc0LCA0Mjc3NiwgNjYxODcsIDEyODM3LCAKKyAgICA4ODI5LCA3NzExLCAxMTExMiwgMTI4Nzg3LCA5MjMyMSwgNDMzMTgsIDkyMzAyLCA4ODA5LCA2OTg4MSwgMTI4NTY0LCAKKyAgICAxMjUyMjksIDEyMDYwNCwgOTgzMDUyLCA5ODMyMzgsIDk4MzQzMywgMTI4NDEyLCAwLCAxMjA1NzcsIDc0MjcsIDk5NTgsIAorICAgIDQ1ODgsIDQzNjgwLCAwLCA3NDQ4NCwgMTI3MTg1LCAyNDMzLCAxMjg2MDIsIDY5OTczLCAzMzUyLCA3NDM2MywgMTI2NjAxLCAKKyAgICAxMjEzNDEsIDc5MywgNzQ0MDQsIDExMTk3LCAzMDUsIDU2NywgNjc2NjIsIDg0MiwgNjk5NzksIDgyMDgsIDY4MzA4LCAKKyAgICA0MTY5NSwgMTY0NywgMTE4ODc3LCA3MDg0MSwgNzgzNywgOTE3NjI1LCA4MTgsIDUzMzcsIDEyODM3NywgMTI3OTg5LCAKKyAgICA0MTM3NiwgMTE5OTc4LCA2ODc0MiwgMTIwNTk0LCA3NDA4NiwgNjg3NzcsIDcwMTc5LCA5MTc2MTMsIDEwOTczLCA2NjM1OSwgCisgICAgMTM3MiwgMTI3MTcyLCA5MTc2MDgsIDQ5NjksIDEyNTQsIDE5NTAwNiwgMTk0NjU0LCA5Mzk2NywgOTE3NjAyLCA2NTIyOCwgCisgICAgNzgyMjEsIDcyNzQ2LCA2NzcyMywgMjg0MCwgMTI4ODQyLCA3ODgyOSwgOTgzOTM5LCA2Njg4NywgMzI0NSwgOTA2OCwgCisgICAgNjgxOTQsIDY0NzI1LCAxMjExNjEsIDEyODA1MSwgMTI5OTEsIDEyNDk3MSwgMjY1MSwgNjgwMTYsIDk4MzI2NywgNzI4NzMsIAorICAgIDEwMDYwMSwgNzA4MzUsIDAsIDcwODQ0LCA0MzY0OCwgMTIwODEyLCAxOTQ4NTQsIDQzMzIyLCA5MjY2MiwgMCwgMCwgCisgICAgNjQzNzIsIDkyNjk4LCAzMjI2LCA2NTUsIDc1MiwgNzQ1NywgNzQ1NiwgNzQ1MiwgMzI4NSwgNzQ4OTQsIDExMTUyLCAKKyAgICA5MjkwMywgNjU2MTAsIDIzOTEsIDkyOTA4LCA5MjI0OCwgNjcxLCAyNTAsIDc0MzQsIDYxOCwgNjY4LCA2MTAsIDQyODAwLCAKKyAgICA3NDMxLCAxMTUyLCA0MjgwMSwgNjQwLCAxMjA2NjYsIDc0NDgsIDc0MzksIDYyOCwgMzkwNSwgNzM4MTAsIDEyODM0MCwgCisgICAgMTAwNzQxLCA2NDc0OSwgNjc4NTAsIDIxMDcsIDEyODI5MCwgNzQyNDksIDQ2MDUsIDEyODE3NCwgMTAwNzQ1LCA0MzM3MiwgCisgICAgNjU5NDUsIDcyNzEwLCAxMTExMywgMTE5NTkwLCAwLCAxMDA3NDksIDcwNDk1LCA5ODcsIDY5MjcsIDExNTcyLCA0MjI2MSwgCisgICAgMTE0NjQsIDMzNjUsIDk5NzEsIDcwNjczLCAxMjc5NDIsIDEyODI5NywgMCwgNzg3NjIsIDEyNzg2NywgMTIxMzY4LCAKKyAgICAxMTMzNCwgNDMzMjYsIDEyNjA5LCAxMTUxOSwgMTE1MDMsIDU1MzAsIDUyMTAsIDAsIDQ2MjcsIDExOTI2OSwgNTIwOCwgCisgICAgMTEzNjkwLCA3MDA5MCwgMTAzMzIsIDI0MjQsIDc5NzYsIDkxNTYsIDAsIDMyNDQsIDU1MjksIDY5NjQ3LCA0MjE0MiwgCisgICAgMTI4ODUyLCA1NDMyLCA2NDk2NSwgNTUyNywgNDIzMTUsIDEwNTE2LCA3NzkwLCA1NTI4LCAxMjg4MzgsIDQyMTQwLCAKKyAgICAxMjAyODEsIDAsIDE5NTA4OCwgNDM1NDUsIDk4ODcsIDEyMTQ3NywgNDAwMCwgNzQyOSwgNzQyOCwgNjY1LCA3NDI0LCAKKyAgICAzMjA2LCAxMjAyNzgsIDc4ODQsIDAsIDEyODU2NiwgNzQ5MTAsIDEyODY2NiwgMjExLCAyNTA5LCA5MjkwNCwgNzA4MjIsIAorICAgIDY4NjcyLCAzMjIwLCA0MjIzNSwgNzg0ODAsIDEwNjkwLCA4OTUxLCA1MjE0LCA0MjQ3NCwgODExOCwgOTgzODMzLCA3MDQ4LCAKKyAgICA0NTkwLCAxMjcyNTgsIDU4NTIsIDk4MzgxOSwgNzg0ODIsIDEyNzI1OSwgMTcwOCwgMCwgNzg0ODEsIDI2MjMsIDExOTQzLCAKKyAgICAxMjExNDAsIDY5MjI2LCA2OTk3NCwgNDY5OCwgNjY1MDksIDEwNjYsIDExOTkyMSwgNDcwMSwgMTAwNTY0LCAxMjAyODUsIAorICAgIDcwNDQ3LCA5NDExMSwgODI2NywgMCwgMTQyMSwgNjY0MjYsIDc1MTYsIDEyMDQwNiwgMjYyNSwgMTI4MjQyLCA4MDM0LCAKKyAgICA3NDMwOSwgMTk0NzE1LCAzNjMxLCAxMDk1NSwgNzg1MCwgMTIwMjkzLCA4NDE2LCAxMjcwMzIsIDEyMDYxMywgOTgzNTc4LCAKKyAgICA0MzM4NCwgMTI2NjAsIDEyMjg4MywgMTI4MjcwLCAwLCA3NDg1MCwgNDEwNjksIDcwMTg1LCAxMjgxNTYsIDEyMDk5LCAKKyAgICA0MzEwLCAxMDAzMiwgNjI1MiwgNzEzLCA3OTkwLCA5ODM0ODksIDM5OTAsIDEyNTA1MCwgOTgzMjY0LCA2NjM2OCwgNTAxNywgCisgICAgNjQ5NTYsIDcwNzEsIDAsIDcwNDU3LCAxMDMwLCAxMTg4MDAsIDkyNTYzLCA5NTEzLCA0MTA1OSwgOTM1NywgNzA2NzUsIAorICAgIDE3NzMsIDc3OTM5LCAxMjAzNTAsIDEyNDk2MSwgNjMzOSwgNzc0NSwgOTg0NCwgMTI3MjIwLCA2NDY1MCwgOTQsIDE4ODAsIAorICAgIDc0NzY2LCAxMTM3MTksIDg5MDgsIDk4MzIyMiwgMTI4MjM2LCA2NTkxMywgNzg0NzAsIDEwNzUyLCAxMzAwMywgNjg3NjksIAorICAgIDEyNjU3MiwgNDEzMDcsIDg3MzIsIDEyMDMzNiwgMTAwNjY5LCAxNzU3LCA2OTY0LCA0Njk2LCAwLCAxMjAzMzMsIDY0Nzg1LCAKKyAgICA3Mzk0LCAzNjQxLCA1NDE5LCAxMjgwNTUsIDAsIDEyNzg4MywgMTk0NzA3LCAxMjAzNDQsIDQzOTg4LCA3MDQyMywgODYxMCwgCisgICAgNDMwNjIsIDc1OTIsIDg1NiwgNzQyOTksIDkzNiwgMTMyODksIDY5ODk0LCA0MzE3MSwgMTQ1OSwgMTI4MjI0LCA2NTI0MywgCisgICAgNzg2MzgsIDE5OTUzLCAxMjkwNzgsIDE1MDQsIDcwMDY0LCA3MjQyMSwgMTI5MTMsIDcwNzIyLCA3NTI5LCAxMjA2MDgsIAorICAgIDEyNzg2OCwgNzAyMDMsIDEyMDc4MiwgNDExMywgMTIwOTI5LCAyMzcyLCAzMzYsIDAsIDc1MDksIDEyMTUyLCAxOTQ4ODUsIAorICAgIDY4MiwgNzY1NSwgNDE1MDUsIDk4Mzc1MywgNjQ3NDMsIDEwNTkzLCAxNzAzLCA5MjQ2NywgNzc5MTEsIDgwMzMsIDY5OTUzLCAKKyAgICAwLCA5ODEwLCAxMjcyNjksIDEyMDAxMywgMTI5NzAsIDk4MzIwNSwgNDIzNTEsIDEwMTA5LCA3NDUzNSwgNzQwNjgsIAorICAgIDc0OTIxLCAwLCA5MjY5MCwgMTIyODg2LCA2NTA2OCwgNzQyOTEsIDE5NjUsIDcwNjksIDQzMzEyLCAwLCA3Mzg4NywgCisgICAgMTExMzAsIDIwODcsIDY0MzcwLCA2MzE0LCA0MTcxNCwgODUwMSwgMTExNDUsIDEyMTExNywgNzQyMzksIDQxMzE3LCAKKyAgICA5MjYxNCwgMjA5MSwgNzQ1NDUsIDIwOTAsIDY5OTEyLCA5MzUzLCA3MTE3LCAyMDc3LCA3Nzg4NiwgMTExNjEsIDEwNDk4LCAKKyAgICAyMDgzLCA3Nzg4OCwgNzExOTYsIDAsIDExOTIzNiwgNjM0LCAxMjQ5NzAsIDkyMjkwLCAxOTQ4ODYsIDY5Nzc5LCA0MTY1LCAKKyAgICA4NzQ2LCAxOTUwNDgsIDk2NTQsIDEyODU2LCA2OTI0LCA3NjYwLCA3MDY2LCAxMjcwNTEsIDcwNDE1LCAxMjgxMzUsIAorICAgIDQxMDM3LCA0MjY5MiwgNzc4NiwgMTI5NTksIDIyMzMsIDEyNzQ4MywgMTI0OTY1LCA2ODAsIDIzMDIsIDEyODIwMCwgMTE4MSwgCisgICAgNzA1NiwgMzE3NCwgNjcyNDgsIDk4MzE3MSwgOTI2NjgsIDY1NjY1LCAxMDA1OTQsIDExMzc3NiwgNjkyMCwgMCwgOTIyOTUsIAorICAgIDcwNjcyLCAxMTg5NjUsIDY4MzE4LCA2NDY0NCwgMTI2OTgxLCA3NDExOSwgNjgyMzgsIDQxMDI4LCA3NDAyNSwgNjIzMSwgCiAgICAgMjYxMywgNjUzMDIsIDQwOTg5LCA2ODIzOSwgNjgyMzAsIDY4MjM0LCA0Mjc2MCwgMCwgNDM4OTYsIDAsIDQwOTg3LCA0NjY3LCAKLSAgICAwLCA3MTg0MywgODgyOCwgNzc5OTUsIDcwNTA2LCAxMjQ2LCA0NzQ2LCAxMjg1MDEsIDEyODUwOCwgMTEwMjEsIDQ3NDksIAotICAgIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMCwgMTU2NiwgODIxNywgMTI3MjEwLCA2NDY1MywgCi0gICAgNzgzODYsIDc0NjE3LCA3NDAzNiwgNzQ1MDUsIDQzMjc0LCA1MzEzLCA5NTEsIDc0NTY4LCA5Mjk4MywgOTgzODY3LCA3NjA0LCAKLSAgICA5ODMyOTIsIDQwMDksIDcwMjc3LCA3MTg0NCwgMTIwNTYyLCAwLCA5ODM3MjAsIDY0ODYwLCAxMTkxMzgsIDExOTA2OSwgMCwgCi0gICAgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAKLSAgICAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAKLSAgICAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAxMTg4NDAsIDAsIDkxNzU2MiwgNzgyOTksIAotICAgIDMzOTksIDk4NTEsIDkxNzYwOSwgMTE5MDksIDkwNTksIDAsIDc2ODcsIDAsIDY3ODksIDEyNzc2NywgMCwgNzE4NDIsIAotICAgIDcwMTc4LCA5MjMxNCwgMCwgMTc3NywgOTE1MSwgMTEzNywgNjY4NjcsIDc0OSwgNDIzNjYsIDcwNDQ0LCA1Mzg1LCA3MDc5MSwgCi0gICAgNzI0MzUsIDcwMTI3LCA4MzM3NywgNTk4OSwgMTI4OTA1LCA3NDYzNiwgMTIwODQ4LCAwLCA0MTY4NSwgNjkyMjMsIDAsIAotICAgIDk3NjksIDQxNjg0LCAxOTQ3MzcsIDUxOSwgMTE5MjMxLCAxMTc0MCwgNTc2NiwgMCwgMCwgMjYwMCwgODg0OCwgNzA0MTYsIAotICAgIDQxMjk3LCAwLCAzNjY2LCA3MDQyMCwgNDEzMDAsIDc0NDY4LCA2NTE2MCwgMCwgNjk2ODgsIDY5NzcxLCA3NDQ3OSwgMCwgCi0gICAgNjU1OCwgMTI3MTQ5LCAxMjgwNjQsIDY5NzY1LCA5Mjc3NSwgMjUyLCAwLCA0MTMwMiwgMTE5MzUwLCA4MzUwNCwgMTE4ODM5LCAKLSAgICA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCA5MDYwLCAxMjkwOTEsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgCi0gICAgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgCi0gICAgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDAsIDc3NjQsIDY4NzQxLCAxMTA5NCwgMTIwODI1LCAwLCA0MzQ4OSwgNDI4MiwgCi0gICAgODI5OCwgMCwgMCwgNzAzMjgsIDE5NDk4NiwgNzAzMjQsIDY0NDQ5LCAwLCAxMjY2NTAsIDYzODU0LCA4NDU2LCA2NTU4NywgCi0gICAgNzA0NDIsIDY1NjcwLCA5ODM5NjMsIDc4MjUwLCAwLCA3Nzc0LCAxMDYwNywgOTc5MiwgOTgzODY5LCA3MDMyNiwgMCwgCi0gICAgNzE0NjAsIDEyMDc2NCwgNzAzMjIsIDEwMDE5LCA3NDc2MiwgMCwgMzQ1OCwgNDM2NSwgNzAwNTMsIDk4MzcxMiwgMzY0NywgCi0gICAgMTIwMjA3LCAyNjAyLCAxMjgzNDEsIDEyMTEwMywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDAsIDEyMTMyNSwgNjQ2MzEsIAotICAgIDE3MiwgNDk3MSwgNDEyMTksIDQxMTM3LCAxODg5LCA3MjM4LCA2NTQ1LCAxMjY0NzYsIDc3OTI2LCA3NTk3LCAxMDUyOCwgCi0gICAgNzUwNTQsIDAsIDM3MzIsIDczOTEwLCAxOTQ1ODgsIDUzNDQsIDk4Mzk3MSwgNDMzNjYsIDQzMzYzLCA5MDYyLCAxMTkyNTIsIAorICAgIDEyMTIxMiwgNzE4NDMsIDg4MjgsIDc3OTk1LCA3MDUwNiwgMTI0NiwgNDc0NiwgMTI4NTAxLCAxMjg1MDgsIDIyNjksIAorICAgIDQ3NDksIDkyNjc1LCA5MTc4ODIsIDkyMSwgNDc0NCwgMCwgMTI3MDIsIDI0MiwgMTAwNTk1LCAxNTY2LCA4MjE3LCAKKyAgICAxMjcyMTAsIDY0NjUzLCA3ODM4NiwgNzQ2MTcsIDc0MDM2LCA3NDUwNSwgNDMyNzQsIDUzMTMsIDk1MSwgNzQ1NjgsIAorICAgIDkyOTgzLCA5ODM4NjcsIDc2MDQsIDEyODI2NiwgNDAwOSwgNzAyNzcsIDcxODQ0LCAxMjAxMTUsIDEyNjY0MiwgOTQwNzQsIAorICAgIDY0ODYwLCAxMDA1NTEsIDExOTA2OSwgMCwgMTI3MzcwLCA0MDQ4LCA5ODM1OTgsIDgzMDA5LCA3MDAyNCwgMTY0NiwgCisgICAgNzc4OTAsIDY0NTM0LCA3Mzk5NSwgMTIwNzA1LCAxMjkwNDcsIDExOTg5MCwgMjU3OSwgMTE5OTA1LCAzMTc3LCAxMTM1NywgCisgICAgOTA5OSwgNDEwNywgMzQ0MSwgMTE5ODk0LCAyOTc1LCA3NDQ0MiwgOTgyMiwgOTgzOTM1LCA1NTIyMCwgMTAwODQsIDczOTQzLCAKKyAgICAxMTg4NDAsIDk4MzcyOCwgOTE3NTYyLCA3ODI5OSwgMzM5OSwgOTg1MSwgOTE3NjA5LCAxMTkwOSwgOTA1OSwgMCwgNzY4NywgCisgICAgMTI3MDUyLCA2Nzg5LCAxMjc3NjcsIDAsIDcxODQyLCA3MDE3OCwgOTIzMTQsIDAsIDE3NzcsIDkxNTEsIDExMzcsIDY2ODY3LCAKKyAgICA3NDksIDQyMzY2LCA3MDQ0NCwgNTM4NSwgNzA3OTEsIDcyNDM1LCA3MDEyNywgODMzNzcsIDU5ODksIDEyODkwNSwgNzQ2MzYsIAorICAgIDEyMDg0OCwgMCwgNDE2ODUsIDY5MjIzLCAwLCA5NzY5LCA0MTY4NCwgMTk0NzM3LCA1MTksIDExOTIzMSwgMTE3NDAsIAorICAgIDU3NjYsIDAsIDAsIDI2MDAsIDg4NDgsIDcwNDE2LCA0MTI5NywgMCwgMzY2NiwgNzA0MjAsIDQxMzAwLCA3NDQ2OCwgCisgICAgNjUxNjAsIDAsIDY5Njg4LCA2OTc3MSwgNzQ0NzksIDAsIDY1NTgsIDEyNzE0OSwgMTI4MDY0LCA2OTc2NSwgOTI3NzUsIAorICAgIDI1MiwgOTgzMTQyLCA0MTMwMiwgMTAwMzcxLCA4MzUwNCwgMTE4ODM5LCA2OTc2MywgNjg3NjIsIDExNzI5LCA4NzE5LCAKKyAgICA5MDYwLCAxMjUwNzcsIDEyMDEzOSwgMTA3NjEsIDAsIDAsIDEyOTQxMCwgMTE4NzkyLCAxMTczNCwgOTMwMTEsIDExNzMwLCAKKyAgICAxMTM3NDEsIDk1OTMsIDU3NTcsIDI0MDMsIDY0ODA4LCA1NTI3NSwgMCwgMTE3MjgsIDQzNTcyLCA5ODMxMzksIDEyOTQxMiwgCisgICAgNzc2NCwgNjg3NDEsIDExMDk0LCAxMjA4MjUsIDk4Mzc1OCwgNDM0ODksIDQyODIsIDgyOTgsIDAsIDAsIDcwMzI4LCAKKyAgICAxMTM2OTEsIDcwMzI0LCA2NDQ0OSwgMCwgMTI2NjUwLCA2Mzg1NCwgODQ1NiwgNjU1ODcsIDcwNDQyLCA2NTY3MCwgCisgICAgOTgzMTgwLCA3ODI1MCwgMCwgNzc3NCwgMTA2MDcsIDk3OTIsIDEwMTEwMiwgNzAzMjYsIDAsIDcxNDYwLCAxMjA3NjQsIAorICAgIDcwMzIyLCAxMDAxOSwgNzQ3NjIsIDAsIDM0NTgsIDQzNjUsIDcwMDUzLCA5ODM3MTIsIDM2NDcsIDgzNDM3LCAyNjAyLCAKKyAgICAxMjgzNDEsIDEwMDcxNywgMTI1MDQzLCA0MTEzNSwgODM0OTgsIDEyMDgxNSwgMTIxMzI1LCA2NDYzMSwgMTcyLCA0OTcxLCAKKyAgICA0MTIxOSwgNDExMzcsIDE4ODksIDcyMzgsIDY1NDUsIDEyNjQ3NiwgNzc5MjYsIDc1OTcsIDEwNTI4LCA3NTA1NCwgCisgICAgMTIxNDA1LCAzNzMyLCA3MzkxMCwgMTk0NTg4LCA1MzQ0LCA5ODM5NzEsIDQzMzY2LCA0MzM2MywgOTA2MiwgMTE5MjUyLCAKICAgICAxMjE0NDEsIDkyNTI4LCAwLCA2NDQ3OSwgOTIzMiwgOTI1OTYsIDgzMzMwLCAxMTM3MDcsIDE5NDcxMiwgMTA5MDAsIAogICAgIDQxNTMxLCAxMjYzLCAzNzIwLCAxMjA0OCwgNzQwNzUsIDY0MjkyLCA0MTUyNCwgNzIyNywgMTE5NjM1LCA2MDk5LCA0MTUzNCwgCi0gICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgOTE3NTY1LCA4ODMxLCAxMjczNDksIAotICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDAsIDU4NDUsIDEyMTMxMCwgMCwgCi0gICAgMTIxMTg1LCAyNTgxLCA4MjAwLCA2NTExNCwgNjg0NjAsIDk4MzY5MywgNDMyODMsIDU1NTEsIDAsIDEyMDczNSwgOTgzMjAxLCAKLSAgICA2MzQwLCAxMTg4NTUsIDEyMTAyNywgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAyOTE0LCA3MDExLCA1NTI4MSwgCi0gICAgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMTk1NjMsIDczNzc0LCAxMDkxMywgODMxMTYsIDk4MzA4NiwgODY2NiwgCi0gICAgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCAKLSAgICA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgCi0gICAgNDI4NTcsIDgyNjIsIDkzMDM2LCAwLCA3NDQ3NiwgMCwgNDIzNDcsIDEyMDkyLCA5NjE1LCA3MjM0LCA3NDA0NywgOTgzMDg4LCAKLSAgICAxMjgxMzcsIDQzNzQ0LCAwLCAwLCA3Mzg0NiwgMjkzNCwgMTI3MjIsIDEyMDc2MiwgOTIyLCA0Mzk4MywgNzQ1MDcsIAotICAgIDk4MzEyNiwgNzQ0NjEsIDMyMTgsIDEyMDQ3MSwgNzQyOTAsIDEyMDQ2OSwgNjQ1NjIsIDEyMDQ3NSwgODU2OSwgMTE0MDQsIAotICAgIDExOTMyLCA3MzcyOCwgMzIxNCwgMTEyMTIsIDEyMDQ2OCwgMTIxMjgsIDMyMDcsIDY1NDg2LCA3ODcyOSwgMTkwMSwgCi0gICAgNzg3MjcsIDY1NjY3LCAxMjA0NjAsIDc0MjUsIDMyMDUsIDY4MDAzLCA3ODczNywgNzg3MzYsIDc4NzM1LCA0MzM4MywgCi0gICAgNjk5NDAsIDY1NDU5LCAyNjA2LCA3ODczMCwgNzM4OTcsIDEyOTA0MywgMTE0OTYsIDExNzMsIDAsIDQxMjcyLCAxMTk2NjEsIAotICAgIDAsIDAsIDgzMTc4LCAxMjA3MzcsIDEyMDk1MywgMTk0NzczLCA5ODMzMjIsIDM3OCwgMjYxMCwgOTgzMzI4LCA2NTA3OSwgCi0gICAgOTgzMzI3LCA2NTY5NSwgMTIxMjIwLCAzNywgNzA2OCwgMCwgMTIwNDgwLCA2ODIzNiwgMzIwOSwgMTIwNDc3LCAxMjA4MzUsIAotICAgIDEwNjM4LCA5NzY4LCA2OTk1MiwgMTE5OTA5LCA3MTQ4NiwgOTIyMjUsIDk4Mzk1MywgOTgzMzQwLCAwLCA0Mzg0MCwgMCwgMCwgCi0gICAgNTIzMywgOTgzMzM3LCA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTI2NjMzLCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgCi0gICAgMTY4NSwgNTk1LCA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCAwLCAxMDAwNCwgMTI2OTk3LCAwLCAKLSAgICA2NTQxLCA0MzgzNywgNzE0NjUsIDEyMTAzMCwgMzI0MywgOTAxNCwgNTYwNiwgMTI1MDMyLCA1MzgsIDY0NjIwLCA1NjAyLCAKLSAgICA4NDY3LCA3NDM5MSwgNjU0NywgNzE0NjYsIDgyMDMsIDY2NDIwLCA2ODI0MSwgODQ1OCwgNjUyMTEsIDg0OTUsIDkyMzExLCAKLSAgICAxMjc0ODEsIDkxNzU1MiwgNzc5LCA3ODMxNCwgNjQzNjcsIDI0NjUsIDY5OTAxLCA4MTkzLCA1NTI3OSwgOTczMCwgOTI4MCwgCi0gICAgMTIwOTEzLCA3MDY1LCA3NDE1NSwgNDM0NiwgMTEzNjkwLCA3Mzc5OCwgNTA0LCAxMjUxMTUsIDkyNDE0LCA4OTgyLCAwLCAKLSAgICAxMjE0NzEsIDExOTE3MCwgNzgyLCAxMjkwMjgsIDEwODgzLCAxMjg0NDYsIDE5NDg1MiwgNzMyLCAzNzM3LCAxMjExODgsIAotICAgIDE1NDgsIDY4NjUwLCA5MjUwNywgMTgzMiwgNTYwNCwgNTczNSwgNDExNDEsIDExOTAyMCwgNDM3NiwgOTgzMzcyLCAxMTc4NywgCi0gICAgMzc0NSwgOTE3ODY4LCAxMTk4ODUsIDQyODg4LCA2NTcxMiwgMTI3OTEzLCAzODY5LCAxMTkzNywgNTcyNSwgMTI3NTM5LCAKLSAgICAxNzgzLCA3NDE2LCA1NzI4LCAwLCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAotICAgIDc4NTIxLCAxMjExMjEsIDAsIDc2NCwgMCwgMTIxMDExLCA0MzUzMSwgMTEzNjcwLCA5MDMzLCAxMjcxODIsIDQyNTMyLCAKLSAgICA2MjIzLCAxMTA0MiwgMTIwNzQ5LCAxMTQyMywgNzQ4NTIsIDExOTg2MSwgNjgzMDMsIDQzNDY1LCAwLCA3NDc2NywgNjU1OSwgCi0gICAgNjQ1NTcsIDcxMzQ4LCA5MjY0OSwgMTIwNjQ4LCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgMTI4NzExLCA0MzM3NywgCi0gICAgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgNzczOSwgNzQ1NDMsIAotICAgIDkxNzc2NSwgNjczOTMsIDAsIDYxMzIsIDAsIDYzNzY1LCAxMjgzOTYsIDcwMDU4LCA0MTE0NCwgNzE4OTksIDkyNDM4LCAKLSAgICA0MzUzNywgNjc2MSwgMTAwOTMsIDQzNjksIDkxNzc5MSwgMTI4Mzk0LCAxOTQ3NzYsIDg4MjAsIDM5NDcsIDAsIDY1Mjk5LCAKLSAgICAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEyNTAwMiwgMTk0OTMyLCAxMTM2OTEsIDc2ODgsIDkxNzc4NiwgCi0gICAgNzY4NiwgODI4OCwgMTE4MTUsIDk4MzE4OCwgMTIxNDExLCA5ODMzODQsIDE1NDMsIDM3MTMsIDQxMjIxLCAxMjQyMywgCi0gICAgNDIyODEsIDc4NTQ0LCA3NDAyNCwgMTIyOTMsIDk4MzY4MCwgNjQzNTcsIDExNzk0LCA0MjA4MiwgMTI4MTI1LCAxNzM3LCAKLSAgICA4OTg3LCA0MjA4MSwgMCwgNzIwNSwgODMyNjQsIDkzMzUsIDEyODUwLCAxMTkxNzMsIDY1NTMsIDcwNTUsIDY4MDQxLCAKLSAgICA4Mjc3LCAwLCA2Nzc1MSwgNTQ3NSwgNzQ3OTUsIDY3ODAsIDY1MDY3LCAwLCAxMzI3LCAxMTYwLCA0MjA4NCwgOTM5NjMsIAotICAgIDQxMjE3LCAxMTk2NjAsIDEwMDE4LCAzNjAsIDEyOTA3MCwgOTgzODY1LCA2ODE3NiwgNTg2MywgMzEzNywgMCwgNDE0NywgCi0gICAgOTgzMTcwLCA0MTIxNiwgNzg0NCwgMjYxNiwgNzAxOTcsIDY4NDYxLCA2NTIzNCwgNjgzNDEsIDEzMDc2LCAzMTM1LCAKLSAgICA5ODMyODksIDc4MTQzLCAxMTkxMzksIDMxNDIsIDkyNDUxLCA5NDA2OCwgMTA4MTksIDExOTU4MCwgMTAxODMsIDc0NjM1LCAKLSAgICAyNjA4LCAxNDcwLCA3Mzk2NywgOTQwMDgsIDYyMjcsIDEyMTI1NywgODMyNjgsIDY1MjM2LCA5MTc4NzgsIDYxNjMsIAotICAgIDk4MzU1OCwgMTEzNzI4LCAxMjczMTQsIDEyODEzOCwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIDExOTg2NiwgMzMwNiwgCi0gICAgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDAsIDEyNzQ2NiwgMTIwODYsIDc0MDMsIAotICAgIDE2MDAsIDY0MzA5LCA2NDkzOSwgMCwgNjQ3ODMsIDkyNjU4LCAxMTMxMCwgMCwgODg4MiwgMTE5OTAzLCAwLCAyNTcwLCAKLSAgICA3MDIxLCA3NDkwMiwgMTk0NzQyLCA0MzExMCwgMCwgMTIzNCwgNjU0MCwgNjk3NCwgOTI3NTAsIDAsIDk4MzIxMSwgNTAwMiwgCi0gICAgOTgzNTYzLCA0MTI4NiwgNjk5NDYsIDc0NDY1LCA3MTA3NCwgNDM1ODUsIDExMzcyMCwgNjU1MSwgOTgzMzc1LCAxMjgyMjksIAotICAgIDk4MzI3NCwgNDEyODksIDEyNTEzMCwgNzEwODAsIDEyNzk1OCwgODk3NywgNjAyLCAxMjA4MTQsIDAsIDEyODM1MCwgCi0gICAgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDAsIDEyNzg4OCwgCi0gICAgOTgzNjEyLCAxMjcyNywgNDM4OTUsIDAsIDc4Mzk3LCA5NDc1LCA3MTEyLCA2NTEwNSwgMCwgOTYzMywgMTA4ODYsIDQzNTkyLCAKLSAgICA3ODMxLCA5ODM4MjksIDE5NDU3MSwgMCwgNzM5MTUsIDgwNzYsIDQzMDQ4LCA4MjkwLCA4MjkxLCA0MzA1MSwgOTI1NzAsIDAsIAotICAgIDI1OTYsIDQzNTg0LCAxMjA5ODMsIDEzMTEzLCAwLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDc0MDY3LCA2ODY3MywgCi0gICAgNDE1NzQsIDc4MzM3LCA3MDQ5OCwgNDI5MDAsIDYzNzYsIDAsIDAsIDAsIDAsIDk4NTQsIDEyNzc0OCwgNjQ2OTYsIDczODc5LCAKLSAgICAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgMCwgMCwgMCwgNjUyOSwgNzA2MywgOTgzMTc5LCAzNzUxLCA5MTIwLCAKLSAgICA5ODM0ODcsIDY4MDM4LCAxNzk4LCA3MDksIDAsIDEzNTQsIDE4NzYsIDEzMTUyLCA2NTU3LCAxMjQzMCwgODEzNywgOTQwOTgsIAotICAgIDY3NzUyLCA3MDg1MCwgMTE5MDU3LCAyNDUsIDEyMTA2NiwgMTE0NTYsIDQxMjMzLCA3MDcwLCAwLCA5NDA0NiwgNjEzNiwgCi0gICAgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCA5ODA0LCAxMTg5NjMsIDQzMiwgMzU5NSwgMTI3MDE1LCAKLSAgICA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCA5ODMxMzYsIDAsIDEyODI3NCwgMCwgMTE5NjU4LCAxMjgxODQsIDAsIDAsIAotICAgIDc3ODk0LCA4Nzk3LCAwLCA5MDUyLCA2NDg4OCwgNzE2NywgMjM1NiwgOTUsIDc0Nzg0LCAxMDU4MCwgMCwgNDIyODYsIAotICAgIDcxMTIzLCA2NDY0MCwgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgCi0gICAgNzQ2MjIsIDQzNDkyLCAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDAsIDEyNzAwNSwgNDM0MDAsIDI1NzYsIAotICAgIDY2Njk2LCA2NjgxOSwgODMzMzMsIDQzNjA0LCAxMjc4OTEsIDAsIDMyMDEsIDUxNCwgNzQ1MDIsIDcwMDMyLCAyOTIxLCAKLSAgICA0MzIxNSwgNjQ0OTMsIDU3NzIsIDEyOTY4LCA3MDA1NSwgMTk0OTQ0LCA3MDMxMCwgNDMzOTgsIDI1ODAsIDE5NTAyNSwgCi0gICAgNDEzNDEsIDQxMjIzLCA2NTY0LCAxNDYzLCA0MTM0MiwgMCwgNTI5MywgNzAwMjAsIDEyNzg3MCwgMzczMywgMTEzNDYsIDAsIAotICAgIDEyMDU0LCAwLCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMCwgOTE3OTE1LCAxMjc5NjEsIAotICAgIDEyNzAyNSwgMTI4MzM0LCA3NDgyMSwgNzExMDQsIDY2Mjk1LCA2ODAzNywgMCwgMTIxMTE2LCAxMzA5MCwgNjY2NDMsIDAsIAotICAgIDEyNzAsIDExMzIsIDQyMzYwLCAwLCA3NDA5NiwgNjY2NTUsIDQyNTY5LCAxMjc4MjQsIDY2ODk4LCA2NDc2MSwgMCwgCi0gICAgNDEwMjEsIDg1MTAsIDQyNDMyLCAxMTk4OTgsIDExOTMxNywgMTk0NzgyLCAxOTQ2NDEsIDY0NDk2LCA3NDEwOSwgNzAwMzAsIAotICAgIDk5MTUsIDk4MzA4MywgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIAotICAgIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIDEyNzM4MywgMTI3MTcxLCAwLCAxMjA3NDUsIAotICAgIDc0MjA5LCA5MDI5LCA0MzU0MywgNzA4MzYsIDIzNTMsIDYzMDgsIDEyOTE1NCwgNzQ3OTIsIDI2MTEsIDExOTE4NiwgCi0gICAgNjY4ODEsIDEyNzI0MSwgNjUwNjMsIDQzNjY0LCA5MjMxOSwgNjY2MjcsIDkyOTEyLCA0NDg0LCA4NTA5LCAxMTg5NzYsIAotICAgIDExMDY2LCA2NTIzMywgMTI3MTQ2LCA0MTIyNCwgNDEwMTcsIDEyODE0OSwgMzc0NywgMTA1MjIsIDAsIDE5NDg3NiwgMTY5MSwgCi0gICAgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIDY1MDEwLCAxMjEyOTksIDY5NywgNjYwMTgsIDkyODQsIDQyNDQsIAotICAgIDk4MzM0MywgOTMwNTgsIDc0NzgxLCAxMzEyMSwgMTIwMDM2LCAwLCAxMjAxMCwgMTI4NTczLCAxMjgyMjEsIDEyMDk0OSwgCi0gICAgMTIxMDMyLCAwLCAxMjcxOTMsIDY1ODE2LCA2ODExMSwgMTE4OTUwLCAxMjc5MzMsIDY1NjY4LCA5MjI1NywgNjYxOCwgCi0gICAgMzU2MiwgNjYzNjUsIDAsIDQyMjM0LCAxMjY0OCwgNzgxMTAsIDcxMjMsIDcwMDM4LCA1Nzg1LCA5MTk4LCA5NzY0LCAKLSAgICA0MTMxNiwgNjU4NzcsIDczODMsIDEzMjMwLCA0MTI5OSwgMCwgMCwgNjgzNjUsIDEyODI1OCwgMTk1MDI3LCAwLCAwLCAKLSAgICAxMzEyMiwgMCwgMTkxLCA3MDA2MCwgODU4NSwgODAwMCwgNjQ0MTEsIDEyMDY1MiwgNDI4ODksIDY0ODUwLCA0MTA3MiwgCi0gICAgNDE1NzgsIDk4MzEwNCwgNDE1NzcsIDAsIDEwMDAyLCAxMjEzNjQsIDY1MzMsIDczODAyLCA0MTU3MCwgOTE3OTE5LCA2ODMsIAotICAgIDM5NiwgNDE1ODAsIDY4MTQ2LCA5ODMwNjcsIDEyOTAxLCA0MzA1OCwgMCwgMzQzLCA3MTI5LCA0MjY4MCwgNDEzNjAsIAotICAgIDc4MTU0LCA5ODMzOTcsIDQ3NDMsIDY5OTg3LCAwLCA3NDA0MCwgNzQxMDgsIDg3NDMsIDE3MjQsIDE0MzMsIDExOTMyMiwgCi0gICAgMTI4NjY1LCAzNzM5LCA2MjYzLCA3MTM0OSwgMTI4ODExLCAzOTY0LCA2NTkyLCAxMjE0MjQsIDY4Mjg4LCA2NjA0MCwgCisgICAgMCwgMTI3MzU0LCAxMjczNDUsIDI5OSwgODMwMjIsIDg1MjUsIDEyNzM0NywgMzUyNCwgMTI4NzE3LCA4ODMxLCAxMjczNDksIAorICAgIDkyNTY0LCAzMDc1LCA2Nzg2NywgOTQwNTMsIDAsIDY2MzYyLCAwLCA2NDM1MywgNzA0NDAsIDk4Mzk3MCwgNTg0NSwgCisgICAgMTIxMzEwLCAxMjc5MzcsIDEyMTE4NSwgMjU4MSwgODIwMCwgNjUxMTQsIDY4NDYwLCA3NDg1OCwgNDMyODMsIDU1NTEsIDAsIAorICAgIDEyMDczNSwgMTI5NDIzLCA2MzQwLCAxMTg4NTUsIDEwMDYwMiwgNzgxMzQsIDg2ODAsIDcyMDQsIDcwMDY1LCAyNTg4LCAKKyAgICAyOTE0LCA3MDExLCA1NTI4MSwgMCwgMjQ3MSwgMTk0NjMxLCAyODgzLCAyNzQ5LCAxMDA4NTIsIDczNzc0LCAxMDkxMywgCisgICAgODMxMTYsIDk4MzA4NiwgODY2NiwgNjc1LCA0MjQ5MywgMTIxMjk3LCA0MzU3MSwgMCwgNjIxOSwgMTI4NTg0LCA5OTgwLCAKKyAgICA0MTIzMiwgMTA5MjgsIDAsIDQxMTUzLCA0MTIyOSwgMTE4OTY3LCAwLCAzNzM4LCA5NDAxNiwgOTgzMjQzLCAxMjcxMSwgCisgICAgMzE4MSwgNjYyMTIsIDc0Mjg5LCA2ODQ3MiwgNDI4NTcsIDgyNjIsIDkzMDM2LCA5ODM2NzYsIDc0NDc2LCAwLCA0MjM0NywgCisgICAgMTIwOTIsIDk2MTUsIDcyMzQsIDc0MDQ3LCAxMjg3NjgsIDEyODEzNywgNDM3NDQsIDEwMDYxMCwgMCwgNzM4NDYsIDI5MzQsIAorICAgIDEyNzIyLCAxMjA3NjIsIDkyMiwgNDM5ODMsIDc0NTA3LCA5ODMxMTAsIDc0NDYxLCAzMjE4LCAxMDEwMDIsIDc0MjkwLCAKKyAgICAxMjA0NjksIDY0NTYyLCAxMjA0NzUsIDg1NjksIDExNDA0LCAxMTkzMiwgNzM3MjgsIDMyMTQsIDExMjEyLCAxMjA0NjgsIAorICAgIDEyMTI4LCAzMjA3LCA2NTQ4NiwgNzg3MjksIDE5MDEsIDc4NzI3LCA2NTY2NywgMTIwNDYwLCA3NDI1LCAzMjA1LCA2ODAwMywgCisgICAgNzg3MzcsIDc4NzM2LCA3ODczNSwgNDMzODMsIDY5OTQwLCA2NTQ1OSwgMjYwNiwgNzg3MzAsIDczODk3LCAxMjkwNDMsIAorICAgIDExNDk2LCAxMTczLCAwLCA0MTI3MiwgMTE5NjYxLCA5ODM4NTMsIDk4Mzg5MywgODMxNzgsIDEwMDcyOCwgMTIwOTUzLCAKKyAgICAxOTQ3NzMsIDE5NDYwMSwgMzc4LCAyNjEwLCA5ODMzMjgsIDY1MDc5LCAxOTQ4NzksIDY1Njk1LCAxMjEyMjAsIDM3LCAKKyAgICA3MDY4LCAwLCAxMjA0ODAsIDY4MjM2LCAzMjA5LCAxMjA0NzcsIDEyMDgzNSwgMTA2MzgsIDk3NjgsIDY5OTUyLCAxMDA2MjEsIAorICAgIDcxNDg2LCA5MjIyNSwgMTI4NDk0LCA5ODMzNDAsIDEwMDkwNSwgNDM4NDAsIDAsIDEwMTA5NiwgNTIzMywgMTAwNjI0LCAKKyAgICA2NDc5MiwgNzEyMzMsIDEyODIyMywgMTAwNjI2LCAxMjg5MTksIDcwNjAsIDk4NDcsIDEyMDE0NCwgMTY4NSwgNTk1LCAKKyAgICA4MzE5NywgNzA0MjgsIDEyOTIsIDg5NDAsIDczODAsIDExMDg4LCA5Mjk0OCwgMTAwMDQsIDEyNjk5NywgMCwgNjU0MSwgCisgICAgNDM4MzcsIDcxNDY1LCAxMjEwMzAsIDMyNDMsIDkwMTQsIDU2MDYsIDExOTU4NSwgNTM4LCA2NDYyMCwgNTYwMiwgODQ2NywgCisgICAgNzQzOTEsIDY1NDcsIDcxNDY2LCA4MjAzLCA2NjQyMCwgNjgyNDEsIDg0NTgsIDY1MjExLCA4NDk1LCA5MjMxMSwgMTI3NDgxLCAKKyAgICA5MTc1NTIsIDc3OSwgNzgzMTQsIDY0MzY3LCAyNDY1LCA2OTkwMSwgODE5MywgNTUyNzksIDk3MzAsIDkyODAsIDEyMDkxMywgCisgICAgNzA2NSwgNzQxNTUsIDQzNDYsIDEwMDU3MCwgNzM3OTgsIDUwNCwgMTI1MTE1LCA5MjQxNCwgODk4MiwgMCwgMTIxNDcxLCAKKyAgICAxMTkxNzAsIDc4MiwgMTI5MDI4LCAxMDg4MywgMTI4NDQ2LCAxOTQ4NTIsIDczMiwgMzczNywgMTIxMTg4LCAxNTQ4LCAKKyAgICA2ODY1MCwgOTI1MDcsIDE4MzIsIDU2MDQsIDU3MzUsIDQxMTQxLCAxMTkwMjAsIDQzNzYsIDk4MzM3MiwgMTE3ODcsIDM3NDUsIAorICAgIDkxNzg2OCwgMTE5ODg1LCA0Mjg4OCwgNjU3MTIsIDEwMDYwNiwgMzg2OSwgMTE5MzcsIDU3MjUsIDEwMDYwOCwgMTc4MywgCisgICAgNzQxNiwgNTcyOCwgMTI4NTY5LCAxMjg0NTcsIDExOTU1NCwgMTE5MTgsIDY2NTY3LCA1NzI0LCAxMjc5NjUsIDU3MjcsIAorICAgIDc4NTIxLCAxMjExMjEsIDEyODQ4OCwgNzY0LCAwLCAxMjEwMTEsIDQzNTMxLCAxMTM2NzAsIDkwMzMsIDEyNzE4MiwgCisgICAgNDI1MzIsIDYyMjMsIDExMDQyLCAxMjA3NDksIDExNDIzLCA3NDg1MiwgMTE5ODYxLCA2ODMwMywgNDM0NjUsIDE5NDgxOSwgCisgICAgNzI4NTQsIDY1NTksIDY0NTU3LCA3MTM0OCwgOTI2NDksIDY2NzYzLCA0MzAxOSwgNDM0NzcsIDEwMjM4LCA3NDQ5MSwgCisgICAgMTI4NzExLCA0MzM3NywgOTIyODIsIDcxMzQ2LCAxNDc4LCA5NzgzLCAxMTgyNSwgMjYwNywgNjQ3NDAsIDExMzY4OSwgCisgICAgNzczOSwgNzQ1NDMsIDkxNzc2NSwgNjczOTMsIDEwMDU4OCwgNjEzMiwgMCwgNjM3NjUsIDEwMDU5MCwgNzAwNTgsIDQxMTQ0LCAKKyAgICA3MTg5OSwgOTI0MzgsIDQzNTM3LCA2NzYxLCAxMDA5MywgNDM2OSwgOTE3NzkxLCA3MDY4MiwgMTAwNTYxLCA4ODIwLCAKKyAgICAzOTQ3LCAxMjI4OTgsIDY1Mjk5LCAxMTUxNSwgNTI2LCAxMjgxMDMsIDQxMjk1LCAxOTQ2MDMsIDEwMDkzMSwgMTk0OTMyLCAKKyAgICA3ODM5MywgNzY4OCwgOTE3Nzg2LCA3Njg2LCA4Mjg4LCAxMTgxNSwgOTgzMTg4LCAxMDA5MzQsIDk4MzM4NCwgMTU0MywgCisgICAgMzcxMywgNDEyMjEsIDEyNDIzLCA0MjI4MSwgNzg1NDQsIDc0MDI0LCAxMjI5MywgMTk0NTg5LCA2NDM1NywgMTE3OTQsIAorICAgIDQyMDgyLCA3MDc0NCwgMTczNywgODk4NywgNDIwODEsIDAsIDcyMDUsIDgzMjY0LCA5MzM1LCAxMjg1MCwgMTE5MTczLCAKKyAgICAyMjcyLCA3MDU1LCA2ODA0MSwgODI3NywgMCwgNjc3NTEsIDU0NzUsIDc0Nzk1LCA2NzgwLCA2NTA2NywgMCwgMTMyNywgCisgICAgMTE2MCwgNDIwODQsIDkzOTYzLCA0MTIxNywgMTE5NjYwLCAxMDAxOCwgMzYwLCAxMjkwNzAsIDEwMDYxNywgNjgxNzYsIAorICAgIDU4NjMsIDMxMzcsIDAsIDQxNDcsIDk4MzE3MCwgNDEyMTYsIDc4NDQsIDI2MTYsIDcwMTk3LCA2ODQ2MSwgNjUyMzQsIAorICAgIDY4MzQxLCAxMzA3NiwgMzEzNSwgOTgzMjg5LCA3ODE0MywgMTE5MTM5LCAzMTQyLCA5MjQ1MSwgOTQwNjgsIDEwODE5LCAKKyAgICAxMTk1ODAsIDEwMTgzLCA3NDYzNSwgMjYwOCwgMTQ3MCwgNzM5NjcsIDk0MDA4LCA2MjI3LCAxMjEyNTcsIDgzMjY4LCAKKyAgICA2NTIzNiwgMTIwMjU2LCA2MTYzLCAxMjkyOTcsIDExMzcyOCwgMTI3MzE0LCA3MzgyMiwgOTgzMjM2LCA4NjAzLCAxMjc5NTksIAorICAgIDExOTg2NiwgMzMwNiwgMTA4NzYsIDQzMzkyLCA4MzE4NywgMTI3OTMxLCA1NzUxLCAxMjc1MTcsIDYyMjIsIDEwMDcxNiwgCisgICAgMTI3NDY2LCAxMjA4NiwgNzQwMywgMTYwMCwgNjQzMDksIDY0OTM5LCAwLCA2NDc4MywgOTI2NTgsIDExMzEwLCA5ODMzMDcsIAorICAgIDg4ODIsIDExOTkwMywgNzg1MTgsIDI1NzAsIDcwMjEsIDc0OTAyLCAxMjg4ODAsIDQzMTEwLCAwLCAxMjM0LCA2NTQwLCAKKyAgICA2OTc0LCA5Mjc1MCwgMTI3Mzk2LCAxMDA5MjMsIDUwMDIsIDk4MzU2MywgNDEyODYsIDY5OTQ2LCA3NDQ2NSwgNzEwNzQsIAorICAgIDQzNTg1LCAxMDA5MjcsIDY1NTEsIDk4MzM3NSwgMTI4MjI5LCA5ODMwNDcsIDQxMjg5LCAxMjUxMzAsIDcxMDgwLCAKKyAgICAxMDA1MjEsIDg5NzcsIDYwMiwgMTIwODE0LCAxMDA2MzAsIDEyODM1MCwgMTI4NjYxLCAxOTQ4OTAsIDk4MzM3NywgNDEyNzksIAorICAgIDAsIDAsIDk0MTA4LCAxMTA4MSwgNDM2MTUsIDAsIDEwMTAyMiwgMTI3ODg4LCAxOTQ5OTQsIDEyNzI3LCA0Mzg5NSwgMCwgCisgICAgNzgzOTcsIDk0NzUsIDcxMTIsIDY1MTA1LCAxMjc1NTYsIDk2MzMsIDEwODg2LCA0MzU5MiwgNzgzMSwgNjY3NTEsIAorICAgIDE5NDU3MSwgMTIyODg1LCA3MzkxNSwgODA3NiwgNDMwNDgsIDgyOTAsIDgyOTEsIDQzMDUxLCA5MjU3MCwgOTgzODk1LCAKKyAgICAyNTk2LCA0MzU4NCwgMTIwOTgzLCAxMzExMywgOTgzNzMxLCAxMjc3NTcsIDIzOTMsIDcwNTgsIDkwODcsIDQxMzYsIAorICAgIDY4NjczLCA0MTU3NCwgNzgzMzcsIDcwNDk4LCA0MjkwMCwgNjM3NiwgMCwgMTk0OTEyLCAxMjc4MjAsIDAsIDk4NTQsIAorICAgIDEwMTA4OCwgNjQ2OTYsIDczODc5LCAxMjgyMjAsIDEyMDc1MiwgNjk5NCwgMCwgMTcyMCwgOTE3Nzk3LCAwLCAwLCA2NTI5LCAKKyAgICA3MDYzLCAxMTg5MTcsIDM3NTEsIDkxMjAsIDE5NDYyOCwgNjgwMzgsIDE3OTgsIDcwOSwgMCwgMTM1NCwgMTg3NiwgMTMxNTIsIAorICAgIDY1NTcsIDEyNDMwLCA4MTM3LCA5NDA5OCwgNjc3NTIsIDcwODUwLCAxMDA4MzIsIDI0NSwgMTAwODMxLCAxMTQ1NiwgCisgICAgNDEyMzMsIDcwNzAsIDcxMjY0LCA5NDA0NiwgNjEzNiwgNjgzMDQsIDY1Njc3LCA4NjgyLCA0MTIzNSwgOTI1OTUsIDQyMDQ1LCAKKyAgICA5ODA0LCAxMDA2NDIsIDQzMiwgMzU5NSwgMTAwNzg0LCA2NTQzNywgMCwgNzQ0NTUsIDQyMzk5LCAxMDA2NDYsIDEwMDY0MSwgCisgICAgMTAwNjQ5LCA5ODM5NDksIDEwMDY0OCwgMTI4MTg0LCAxMDA3ODYsIDE5NDU4NywgNzc4OTQsIDg3OTcsIDk4Mzk1NiwgCisgICAgOTA1MiwgNjQ4ODgsIDcxNjcsIDIzNTYsIDk1LCA3NDc4NCwgMTA1ODAsIDEwMDg0NSwgNDIyODYsIDcxMTIzLCA2NDY0MCwgCisgICAgNjk5OTksIDk0MTA5LCAxMjA4NzcsIDc0MTM3LCA3MDAzNSwgMTAwNjMsIDEyNjUyLCAxMjE5OSwgNzQ2MjIsIDQzNDkyLCAKKyAgICAyNTY2LCAxMTk3MSwgOTgzNzM3LCAxMjA4ODIsIDEwNjUsIDEyMDc2OCwgMTI3MDA1LCA0MzQwMCwgMjU3NiwgNjY2OTYsIAorICAgIDY2ODE5LCA4MzMzMywgNDM2MDQsIDEyNzg5MSwgMCwgMzIwMSwgNTE0LCA3NDUwMiwgNzAwMzIsIDI5MjEsIDQzMjE1LCAKKyAgICA2NDQ5MywgNTc3MiwgMTI5NjgsIDcwMDU1LCAxOTQ5NDQsIDcwMzEwLCA0MzM5OCwgMjU4MCwgMTI4NDk3LCA0MTM0MSwgCisgICAgNDEyMjMsIDY1NjQsIDE0NjMsIDQxMzQyLCAxOTUwOTIsIDUyOTMsIDcwMDIwLCAxMjc4NzAsIDM3MzMsIDExMzQ2LCAwLCAKKyAgICAxMjA1NCwgMTAwODI0LCA3NDA5OCwgNDI4MjcsIDE5NTA3NCwgMTMwOTEsIDAsIDEyODU4MCwgMTAwODIxLCAxMDA4MjgsIAorICAgIDEyNzk2MSwgMTI3MDI1LCAxMjgzMzQsIDc0ODIxLCA3MTEwNCwgNjYyOTUsIDY4MDM3LCA5ODM5MDUsIDEyMTExNiwgCisgICAgMTMwOTAsIDY2NjQzLCAxMjg4MjAsIDEyNzAsIDExMzIsIDQyMzYwLCAxOTQ5NjgsIDY2NzUyLCA2NjY1NSwgNDI1NjksIAorICAgIDEyMDU3MSwgNjY4OTgsIDY0NzYxLCAxMDA3NzYsIDQxMDIxLCA4NTEwLCA0MjQzMiwgMTAwNzc4LCAxMTkzMTcsIDE5NDc4MiwgCisgICAgMTk0NjQxLCA2NDQ5NiwgNzQxMDksIDcwMDMwLCA5OTE1LCA2OTc5OCwgOTgzMjE4LCA3MDYxLCA0MTMzNiwgMzg1NCwgCisgICAgNjk3MDAsIDEzMTQxLCA2ODQxMywgNDM0MDEsIDQyMzE5LCAxMzA4MiwgNzgxMTQsIDcwNjcsIDY4MjIxLCAxMjc4ODEsIAorICAgIDEyNzM4MywgMTI3MTcxLCAxMjEyMDcsIDEwMDc2NSwgNzQyMDksIDkwMjksIDQzNTQzLCA3MDgzNiwgMjM1MywgNjMwOCwgCisgICAgNzA2NjIsIDc0NzkyLCAyNjExLCAxMDA3NjgsIDY2ODgxLCAxMjcyNDEsIDY1MDYzLCA0MzY2NCwgOTIzMTksIDY2NjI3LCAKKyAgICA5MjkxMiwgNDQ4NCwgODUwOSwgMTE4OTc2LCAxMTA2NiwgNjUyMzMsIDEyNzE0NiwgNDEyMjQsIDQxMDE3LCAxMjA1MTQsIAorICAgIDM3NDcsIDEwNTIyLCA5MTc4MTEsIDExOTk3MCwgMTY5MSwgNDEyMjYsIDc0OTYyLCAxMjEwNywgNzEwMCwgMTA5MDUsIAorICAgIDY1MDEwLCA3NDYwMiwgNjk3LCA2NjAxOCwgOTI4NCwgNDI0NCwgOTgzMzQzLCA5MzA1OCwgNzQ3ODEsIDEzMTIxLCAKKyAgICAxMjAwMzYsIDAsIDEyMDEwLCAxMjg1NzMsIDEyODIyMSwgMTIwOTQ5LCAxMjEwMzIsIDk4MzEzMiwgMTI3MTkzLCA2NTgxNiwgCisgICAgNjgxMTEsIDExODk1MCwgMTI3OTMzLCA2NTY2OCwgOTIyNTcsIDY2MTgsIDM1NjIsIDY2MzY1LCAwLCA0MjIzNCwgMTI2NDgsIAorICAgIDc4MTEwLCA3MTIzLCA3MDAzOCwgNTc4NSwgOTE5OCwgOTc2NCwgNDEzMTYsIDY1ODc3LCA3MzgzLCAxMzIzMCwgNDEyOTksIAorICAgIDAsIDk4MzE1MCwgNjgzNjUsIDEyODI1OCwgMTk1MDI2LCA5ODM0MDIsIDAsIDEzMTIyLCAxMjc1NDYsIDE5MSwgNzAwNjAsIAorICAgIDg1ODUsIDgwMDAsIDY0NDExLCAxMjA2NTIsIDQyODg5LCA2NDg1MCwgNDEwNzIsIDQxNTc4LCA5ODMxMDQsIDQxNTc3LCAKKyAgICA5ODMzNzEsIDEwMDAyLCAxMDA3NTQsIDY1MzMsIDczODAyLCA0MTU3MCwgMTAwNzU2LCA2ODMsIDM5NiwgNDE1ODAsIAorICAgIDY4MTQ2LCAxMjc4MTUsIDEyOTAxLCA0MzA1OCwgMTAwNzYwLCAzNDMsIDcxMjksIDQyNjgwLCA0MTM2MCwgNzgxNTQsIAorICAgIDEyNzA4MiwgNDc0MywgNjk5ODcsIDEwMDc2MSwgNzQwNDAsIDc0MTA4LCA4NzQzLCAxNzI0LCAxNDMzLCAxMDA3NTEsIAorICAgIDEyODY2NSwgMzczOSwgNjI2MywgNzEzNDksIDEyODgxMSwgMzk2NCwgNjU5MiwgMTIwNzAxLCA2NTEwOCwgNjYwNDAsIAogICAgIDgyOTQ2LCA0MjU2OCwgNjk4MDYsIDEyODExMywgMTc3OCwgMzk1NiwgMTI4NDQzLCA0MjA3MCwgNjU2MywgNDMwNzUsIAotICAgIDkwMTgsIDk0MDA2LCA5ODMzOTgsIDEyMDY3LCA0MTMxMiwgOTI3NjMsIDU1NDcsIDg5MTYsIDEyMDg2OSwgMTI4OTUwLCAKKyAgICA5MDE4LCA5NDAwNiwgMTIxNDI0LCAxMjA2NywgNDEzMTIsIDkyNzYxLCA1NTQ3LCA4OTE2LCAxMjA4NjksIDEyODk1MCwgCiAgICAgODE3NSwgOTQwMzQsIDI4NCwgODEwOCwgOTM0LCAxMjgwMzksIDc0MDAxLCAxNzMsIDY2NDYwLCA3MTc0LCA5MjcwMywgCi0gICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA5ODM4ODgsIDkyMjk4LCAwLCA1ODg5LCAxMjg3OTUsIAotICAgIDcxODAsIDAsIDY3MTI3LCAwLCA2NzEyNiwgNDI0NzEsIDY5ODIsIDE3MjEsIDQ0MDIyLCA3ODkxLCA0MjI0MywgNDIxNjAsIAotICAgIDI1ODMsIDQ1MTIsIDExOTM2MCwgNjUyMzAsIDEyODEwOSwgMCwgOTE3NjMwLCAzODU1LCAxOTQ4MTAsIDExNzY3LCAKLSAgICAxMjc5OTgsIDAsIDc0Mjk1LCAxOTQ2NTEsIDAsIDkyNDE2LCAzOTc1LCA2NzEyNSwgNzQwODcsIDc0OTg5LCAxMjY3MiwgCi0gICAgMzc5OCwgMjcwMywgMTk0NjA4LCAwLCAyMTA5LCA5Nzc0LCAxMjc1LCAwLCA5ODM3NTAsIDQxMDk1LCAzOTYyLCA2ODI0MiwgCi0gICAgMjkzMiwgNDExMDEsIDM5NTQsIDY0NTcsIDQ1MTMsIDc0NTM2LCAxMjcxODksIDczOTk0LCA3Mzk5MiwgMTQ2OCwgMTIwMDMzLCAKLSAgICA5ODMwNTcsIDQxODAzLCAxMjc5OTksIDQxODQ2LCAxMjcyNDQsIDU1MjM4LCA3NjMzLCA0MTg0OSwgNjgzODUsIDQzMjAsIAotICAgIDMyMjQsIDExMzczNCwgOTI3NDEsIDY2MjgxLCA0MjUzMSwgNzQ1OTMsIDE1MTAsIDEyODM4NCwgODI1NiwgMCwgMTEzOTMsIAotICAgIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgCi0gICAgNDI4MywgNjg4NDIsIDEyMDgyNCwgNjgzNjEsIDc4MzE4LCAyNjU0LCA3ODkzLCAxOTUwMDYsIDEyODI0MSwgMCwgNzIzOTQsIAotICAgIDY1MTA2LCA0Mjc2MSwgMTI4NTcsIDQ1ODEsIDg0MTEsIDc4MzcyLCA3ODM3MSwgNzgzNzAsIDc4MzY5LCA3ODM2OCwgCi0gICAgNzQ0NzUsIDk4MzQ0NCwgMCwgMTczMywgNDM5MiwgMjU2OCwgMTA3ODYsIDY5NjYxLCAwLCA4MTg0LCA0MTQ4NiwgMCwgCi0gICAgNzM5NiwgNzExNiwgMCwgNjk3ODgsIDAsIDcxODUsIDc5NjUsIDExOTE0NCwgMTI4NDQ3LCA5MjM0NywgMTk1MDY2LCAKLSAgICA0MTM1MCwgOTEyOSwgOTgzNDQ4LCAwLCAyMjk0LCA2NDUwMSwgNjgwMzQsIDgzMzI2LCAxMDQ4MSwgMCwgNzAwMjIsIDcxNzEsIAotICAgIDAsIDM0MCwgNzExMDUsIDkzOTcyLCA2NzM2MCwgMCwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjc0ODcsIAotICAgIDEyODM5MywgMCwgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAKLSAgICAwLCAxMTg3OTUsIDgyOTU4LCA5NDEwMSwgMTI3NDg0LCA5MTc2MTksIDExOTE0OSwgMCwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCisgICAgMTE4ODIyLCAxNzUwLCAxMjg2ODYsIDQzOTQsIDY4MzY4LCAxODA3LCA3ODU0NSwgOTIyOTgsIDEwMTA4MiwgNTg4OSwgCisgICAgMTI4Nzk1LCA3MTgwLCAxMDEwODMsIDY3MTI3LCAxMDEwOTEsIDY3MTI2LCA0MjQ3MSwgNjk4MiwgMTcyMSwgNDQwMjIsIAorICAgIDc4OTEsIDQyMjQzLCA0MjE2MCwgMjU4MywgNDUxMiwgMTE5MzYwLCA2NTIzMCwgMTI4MTA5LCA5ODM0NjcsIDkxNzYzMCwgCisgICAgMzg1NSwgMTk0ODEwLCAxMTc2NywgMTI3OTk4LCA5ODM1ODksIDc0Mjk1LCAxOTQ1NzcsIDEwMDc5NywgOTI0MTYsIDM5NzUsIAorICAgIDY3MTI1LCA3NDA4NywgNzQ5ODksIDEyNjcyLCAzNzk4LCAyNzAzLCAxMDA3OTMsIDAsIDIxMDksIDk3NzQsIDEyNzUsIAorICAgIDE5NDk2NCwgOTgzNzUwLCA0MTA5NSwgMzk2MiwgNjgyNDIsIDI5MzIsIDQxMTAxLCAzOTU0LCA2NDU3LCA0NTEzLCA3NDUzNiwgCisgICAgMTAwOTQ3LCA3Mzk5NCwgNzM5OTIsIDE0NjgsIDEyMDAzMywgOTgzMDU3LCA0MTgwMywgMTI3OTk5LCA0MTg0NiwgMTI3MjQ0LCAKKyAgICA1NTIzOCwgNzYzMywgNDE4NDksIDY4Mzg1LCA0MzIwLCAzMjI0LCAxMDA3NTUsIDkyNzQxLCA2NjI4MSwgNDI1MzEsIAorICAgIDc0NTkzLCAxNTEwLCAxMjgzODQsIDgyNTYsIDk4MzA0MywgMTEzOTMsIDAsIDg4NzksIDEyODA3NSwgOTI0NzQsIDg3NzAsIAorICAgIDcyNDE2LCAxMjA4MTEsIDcyNDE1LCAxOTEwLCA4NjcxLCA3ODM3NCwgNDI4MywgNjg4NDIsIDcyNzg3LCA2ODM2MSwgCisgICAgNzgzMTgsIDI2NTQsIDc4OTMsIDEyOTE1MSwgMTI4MjQxLCAxMDA4MDIsIDcyMzk0LCA2NTEwNiwgNDI3NjEsIDEyODU3LCAKKyAgICA0NTgxLCA4NDExLCA3ODM3MiwgNzgzNzEsIDc4MzcwLCA3ODM2OSwgNzgzNjgsIDc0NDc1LCA5ODMxNDMsIDAsIDE3MzMsIAorICAgIDQzOTIsIDI1NjgsIDEwNzg2LCA2OTY2MSwgMCwgODE4NCwgNDE0ODYsIDEyODY0NCwgNzM5NiwgNzExNiwgMCwgNjk3ODgsIAorICAgIDEwMDc5MCwgNzE4NSwgNzk2NSwgMTE5MTQ0LCAxMjg0NDcsIDkyMzQ3LCAxOTUwNjYsIDQxMzUwLCA5MTI5LCA5ODM0NDgsIAorICAgIDk4MzYxOSwgMjI5NCwgNjQ1MDEsIDY4MDM0LCA4MzMyNiwgMTA0ODEsIDAsIDcwMDIyLCA3MTcxLCAwLCAzNDAsIDcxMTA1LCAKKyAgICA5Mzk3MiwgNjczNjAsIDE5NDk0MiwgOTIyMDAsIDEyODI0OSwgMTI0OTc5LCA2NzY0LCAxMjA4MDQsIDEyODM5MywgMCwgCisgICAgOTI1MDksIDEyODk2MiwgNjUyMDMsIDExMzkyLCAxMTkwOTgsIDExOTM1OSwgMTE5MDczLCAzMjEwLCAwLCAxMDA2MzIsIAorICAgIDExODc5NSwgODI5NTgsIDk0MTAxLCAxMjc0ODQsIDkxNzYxOSwgMTE5MTQ5LCA3MzkyNiwgMTAwNDMsIDEyMTIxNSwgMTE4NiwgCiAgICAgNDE1NzEsIDY5OTksIDYxNywgOTQ2NCwgMTI1MTIzLCAzNjc1LCA1MjA3LCA2NTA2MiwgNTIxMywgNzQ2MTYsIDI2MTcsIAotICAgIDQxMzQ4LCA0MTU2OCwgMTI4ODAzLCAzMjUzLCAxMjA1MzUsIDAsIDg2MzAsIDEyMTIwOSwgMCwgNTU5NiwgNTU0NSwgNzI4OCwgCi0gICAgMjU4NiwgNjQ4ODcsIDExOTgyNiwgNTIxNywgNzEzMzYsIDEyODY4NywgOTE3NjE0LCAxMjEwMzgsIDY0MjkzLCA2ODA5OCwgCi0gICAgMjYzNSwgOTI3NjAsIDgzMTM3LCA5ODM4NDYsIDAsIDkyNzQyLCA3ODM1LCA3MDA0MCwgMTIwNzA3LCAxOTQ5ODgsIDkyMjg1LCAKLSAgICA2NDU1OCwgMTI3MTIyLCAxMjE0MjUsIDY3MDgzLCA2NzA4NSwgNzAwOTksIDcxMTE4LCA1Nzg0LCA5ODMxMDIsIDE5NTA1MCwgCi0gICAgOTgzODEyLCA3MDAzMywgNDAxMSwgMTk0NTY1LCA2ODEwMSwgMTI0OTc4LCA3ODY0LCA0MjU0LCA2NTA5NSwgOTgzNDk4LCAKLSAgICA1NjAwLCAzOTAzLCAxMjcwODMsIDEwNDQ3LCA1NTk4LCAxMjA3LCAxMjA1MjEsIDY2Njg5LCAzNTAxLCA0MjU4MiwgNDM2MDAsIAotICAgIDEyOTA1NCwgMTI3MTAzLCAxMTI0LCA1NTk3LCAxOTQ3NzgsIDE5NDc3MiwgOTMyMSwgOTgzNDg2LCA3NTA0MCwgOTgzNDg0LCAKLSAgICA2NzQwMCwgMTcxOSwgNjgzNTYsIDY4MzU0LCA5NjcxLCAxMTI1LCA0Mzk5LCA2ODc3NSwgNjYyNzQsIDk4MzQ5MCwgNzYzMSwgCi0gICAgNTQ4OCwgNzEyOCwgMTIwNTMyLCAwLCA1NDkxLCAxMTg3OTcsIDg5MzcsIDQzMDQ0LCAyNjA0LCA3NDE4NywgNTQ5MCwgCi0gICAgNDMwNDYsIDU0ODksIDcyMTIsIDExNzY4LCA0MzA0MywgNjMwMCwgMTI3MTIxLCA3MTIyLCA5ODMwOTAsIDQzOTAsIDQ1NCwgCi0gICAgNDEzOTcsIDAsIDk4NzUsIDc1OTMsIDE5NDc5MSwgOTIyNzQsIDExODkxMywgNzIwNywgMCwgNjU5MDEsIDIzOTQsIDI1NzUsIAotICAgIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIDEyODY4MywgMTE5ODksIDExODg4OSwgCi0gICAgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCAwLCA4MjQ5LCAxMjgxNzIsIDExMTA5LCA3ODUzMSwgNjY0MCwgNzQ4MDYsIDI1OTgsIAotICAgIDUxMywgMTI3MTE4LCA2NTg2LCA4NjU2LCAxMjkzMDEsIDY5NzkyLCA2NTAwOCwgMTk0NTk3LCA3MTExMSwgNzgzODMsIAotICAgIDE5NDc5NSwgMTI3NDc0LCA5MjUxNSwgNjg0NzUsIDkzOTczLCAxOTQ1ODQsIDYzNzk5LCA3ODYzNywgMTI2NDcsIDkxNzYwNiwgCi0gICAgMTI4MDQzLCA2OTg5MywgMTAzNiwgNjgwOTAsIDkyNDE5LCAxNzIzLCA2ODIxNSwgNzQyMTcsIDAsIDQxNTc5LCAyNDQ0LCAKLSAgICAxMjA3MjIsIDEwNzA1LCA3Mzg3NiwgMTk1MDU0LCA3NDQ4NiwgOTgzNDY5LCA3NDAsIDExOTIyMiwgMTk0OTc4LCAxOTQ5ODQsIAotICAgIDAsIDQyMzgsIDExMDcxLCA5NDU5LCA0MzkzNiwgNDM5MzgsIDc4MTM5LCAxOTQ5ODUsIDgxMjEsIDEwNDM4LCA3NDQ4NywgCi0gICAgNDI1NzQsIDEzMjg1LCA0Mzk2NywgMTE5MDcsIDQzOTI4LCA1NjkwLCA5MjI1NSwgNTExNiwgMCwgNDMxODEsIDEzMDk1LCAKLSAgICA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIAotICAgIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMCwgNzEwNTUsIDEyMDYyMSwgMCwgMTkyMCwgMCwgMTAxNzMsIDgyNywgMCwgMCwgCi0gICAgNzgzNzgsIDExOTYwMCwgNTIyMywgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgCi0gICAgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgCi0gICAgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCAKLSAgICA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIAotICAgIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDc0ODU4LCAKLSAgICA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgCi0gICAgMTE5NjAyLCA0Mzk3NiwgMTk0OTM3LCAxNzg1LCA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgOTgzNjM3LCAKLSAgICA3MTkyMiwgMTE4ODY5LCAwLCA0NTQwLCA0MTE4MSwgOTE3OTIwLCA2MjAwLCAwLCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCAKLSAgICA1MTMyLCAxMjExODQsIDYzODksIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIAotICAgIDcxMTY4LCA4ODY5LCA2OTkxNiwgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgCi0gICAgMTAyODYsIDEwMzE4LCAxMDM4MiwgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyODUzNCwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAKLSAgICA5MTc4MTgsIDcwMTExLCA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCAKLSAgICA3MjQzOSwgNTIwMSwgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMCwgMTk0OTk5LCA2NTI2OCwgNzY2MSwgMCwgCisgICAgNDEzNDgsIDQxNTY4LCAxMjg4MDMsIDMyNTMsIDEyMDUzNSwgMCwgODYzMCwgMTIxMjA5LCAxOTQ3NzAsIDU1OTYsIDU1NDUsIAorICAgIDcyODgsIDI1ODYsIDY0ODg3LCAxMDA4OTYsIDUyMTcsIDcxMzM2LCAxMjg2ODcsIDEwMDg5OCwgMTIxMDM4LCA2NDI5MywgCisgICAgNjgwOTgsIDI2MzUsIDkyNzYwLCA4MzEzNywgOTgzODQ2LCAwLCA5Mjc0MiwgNzgzNSwgNzAwNDAsIDEyMDcwNywgMTk0OTUwLCAKKyAgICA5MjI4NSwgNjQ1NTgsIDEyNzEyMiwgMTIxNDI1LCA2NzA4MywgNjcwODUsIDcwMDk5LCA3MTExOCwgNTc4NCwgOTgzMTAyLCAKKyAgICAxMDA4NTQsIDk4MzgxMiwgNzAwMzMsIDQwMTEsIDE5NDU2NSwgNjgxMDEsIDEwMDg1OSwgNzg2NCwgNDI1NCwgNjUwOTUsIAorICAgIDEyMDAxNywgNTYwMCwgMzkwMywgMTAwODkyLCAxMDQ0NywgNTU5OCwgMTIwNywgMTIwNTIxLCA2NjY4OSwgMzUwMSwgCisgICAgNDI1ODIsIDQzNjAwLCAxMjkwNTQsIDEwMDkxMywgMTEyNCwgNTU5NywgMTk0Nzc4LCAxOTQ3NzIsIDkzMjEsIDk4MzQ4NiwgCisgICAgNzUwNDAsIDkxNzk3MiwgNjc0MDAsIDE3MTksIDY4MzU2LCA2ODM1NCwgOTY3MSwgMTEyNSwgNDM5OSwgNjg3NzUsIDY2Mjc0LCAKKyAgICA5MjE2NSwgNzYzMSwgNTQ4OCwgNzEyOCwgMTIwNTMyLCAxMjAzMzksIDU0OTEsIDExODc5NywgODkzNywgNDMwNDQsIDI2MDQsIAorICAgIDc0MTg3LCA1NDkwLCA0MzA0NiwgNTQ4OSwgNzIxMiwgMTE3NjgsIDQzMDQzLCA2MzAwLCAxMjcxMjEsIDcxMjIsIDk4MzA5MCwgCisgICAgNDM5MCwgNDU0LCA0MTM5NywgOTgzMDU1LCA5ODc1LCA3NTkzLCAxOTQ3OTEsIDkyMjc0LCAxMTg5MTMsIDcyMDcsIAorICAgIDEyNTA2MiwgNjU5MDEsIDIzOTQsIDI1NzUsIDExOTE4NCwgMzc0NiwgMTEwMTYsIDY1NzUyLCA5Mjc1NywgMCwgNDM0MjMsIAorICAgIDEyODY4MywgMTE5ODksIDExODg4OSwgMTI3NzkxLCAxMjc5OTUsIDc4Mjk2LCA2ODIyNCwgODI0OSwgMjIzMiwgMTExMDksIAorICAgIDc4NTMxLCA2NjQwLCA3NDgwNiwgMjU5OCwgNTEzLCAxMDA3MTQsIDY1ODYsIDg2NTYsIDEyOTMwMSwgNjk3OTIsIDY1MDA4LCAKKyAgICAxOTQ1OTcsIDcxMTExLCA3ODM4MywgMTI3MjUyLCAxMjc0NzQsIDY2NzU1LCA2ODQ3NSwgOTM5NzMsIDcyODU5LCA2Mzc5OSwgCisgICAgNzg2MzcsIDEyNjQ3LCA5MTc2MDYsIDEyODA0MywgNjk4OTMsIDEwMzYsIDY4MDkwLCA5MjQxOSwgMTcyMywgNjgyMTUsIAorICAgIDc0MjE3LCAwLCA0MTU3OSwgMjQ0NCwgMTIwNzIyLCAxMDcwNSwgNzM4NzYsIDE5NTA1NCwgNzQ0ODYsIDk4MzQ2OSwgNzQwLCAKKyAgICAxMTkyMjIsIDEyMDMwNSwgMTk0OTg0LCAwLCA0MjM4LCAxMTA3MSwgOTQ1OSwgNDM5MzYsIDQzOTM4LCA3ODEzOSwgCisgICAgMTk0OTg1LCA4MTIxLCAxMDQzOCwgNzQ0ODcsIDQyNTc0LCAxMzI4NSwgNDM5NjcsIDExOTA3LCA0MzkyOCwgNTY5MCwgCisgICAgOTIyNTUsIDUxMTYsIDEyODAxMywgNDMxODEsIDEzMDk1LCA3NzkyNSwgNDM5MjYsIDY0NDk4LCAwLCA5NTA2LCA2OTc4LCAKKyAgICA3MDE3NiwgNzQ5MzEsIDAsIDExMzc0MywgNzgzNzksIDQzOTM0LCAxMjc4NDUsIDExMjIsIDMxNywgMTk0ODcwLCA3MTA1NSwgCisgICAgMTIwNjIxLCAwLCAxOTIwLCAxMjkzMzksIDEwMTczLCA4MjcsIDEyNTIzNiwgMCwgNzgzNzgsIDExOTYwMCwgNTIyMywgCisgICAgMTMwNCwgMCwgODM1MjYsIDUyMjYsIDEyNjAyLCA5NDA0NCwgNTg4MCwgOTMyOSwgNzc1OCwgOTIzOSwgNDExNzMsIDUyMjQsIAorICAgIDU0ODcsIDEyMjIsIDU2OTIsIDQxNzI1LCA2OTIyOSwgOTY3NCwgNTY5NSwgNDE3MTEsIDY0NjI3LCAxOTkwOSwgNzEwNzcsIAorICAgIDc0NjA0LCA1NjkxLCAyODcsIDg2NiwgMjMzLCA2ODEzOCwgOTgzNDQzLCA0MjgxNiwgOTQwMzYsIDY1MTQwLCA2ODAyOCwgCisgICAgODMwOTMsIDg4MzAsIDY1NjgsIDQyMzAwLCAxMDUyNCwgNDExNzUsIDgzMDk0LCA5ODM0NDcsIDY4ODI3LCA1Mjk2LCAKKyAgICA5ODM0NDYsIDQyNDkyLCA0MzQwMiwgOTI0NjYsIDMzMDIsIDAsIDcyODQyLCA2NTE2LCA2NTE1LCA2NTE0LCA2NTEzLCAKKyAgICA2NTEyLCAwLCA3ODU2LCA4NjkwLCA5ODM2ODYsIDcwODcwLCAxMjEyMiwgMTE5NjAyLCA0Mzk3NiwgMTI1MTk0LCAxNzg1LCAKKyAgICA2OTkyNSwgNjg2MjIsIDY1MTUzLCA2ODgwOSwgNTEzOCwgMTI5NDIwLCA3MTkyMiwgMTE4ODY5LCAxMDA4ODMsIDQ1NDAsIAorICAgIDQxMTgxLCA5MTc5MjAsIDYyMDAsIDgyOTQ5LCA1MTM0LCA2OTk4MCwgMzIyLCA0NjQzLCA1MTMyLCAxMjExODQsIDYzODksIAorICAgIDEyMDk5OCwgNTE0MywgODMyMDUsIDg3OTAsIDEyMDkxMSwgMTIwMTIxLCAxMjg2OTUsIDcxMTY4LCA4ODY5LCA2OTkxNiwgCisgICAgOTMwNjksIDQyMDYwLCA3MTMyNiwgOTY0OCwgODMxMDksIDcxMTcwLCAxMDI3MCwgMTAyODYsIDEwMzE4LCAxMDM4MiwgCisgICAgNDM1MjksIDY2NDc3LCAxOTQ4MDAsIDEyNTIzMSwgNzQxNzAsIDAsIDMyMzQsIDQzODM1LCAxMDA4ODYsIDcwMTExLCAKKyAgICA0MzEzOSwgMTE4ODE1LCAxMjcwODQsIDEyMDYyNywgODc2NywgNjgyMzEsIDc0NDg5LCA5Njk1LCA3MjQzOSwgNTIwMSwgCisgICAgNzUwNjEsIDYyMTUsIDEyNzE0LCA2MjE0LCAxMzEwMSwgMTI3ODY5LCAxOTQ5OTksIDY1MjY4LCA3NjYxLCAxMjEzMDgsIAogICAgIDEyMDkwOSwgMTEwMjcsIDEyODU5NiwgMTAwNTksIDEwNTExLCA0MjA3NSwgOTc2NywgNzg5LCAxNzQ5LCA3ODg5MCwgCi0gICAgNjcxMTUsIDk4MzY3MCwgMzIwLCAwLCA4NjQ3LCA4MzA1NCwgMzA0OSwgMCwgNjQ3MSwgNDIwNzEsIDQzMTU2LCA5OTI1LCAKLSAgICAxMjczNTYsIDExODg5NCwgNjY0NzgsIDQ5NjAsIDU1NDksIDEyNzM1OSwgMTI3MzQ2LCA4NDg1LCA0NjcxLCA1NDE4LCAKKyAgICA2Njc2NiwgOTgzNjcwLCAzMjAsIDAsIDg2NDcsIDgzMDU0LCAzMDQ5LCAwLCA2NDcxLCA0MjA3MSwgNDMxNTYsIDk5MjUsIAorICAgIDEyNzM1NiwgMTE4ODk0LCA2NjQ3OCwgNDk2MCwgNTU0OSwgMTI3MzU5LCAxMDA5OTYsIDg0ODUsIDQ2NzEsIDU0MTgsIAogICAgIDEyNzM1MCwgMzM1MSwgMTIwODkyLCAxMjczNTEsIDEwNjEwLCA1NDE0LCAzMDY0LCA2MjEyLCA0Mjg2LCA1NDIxLCAKICAgICAxMjczNDQsIDk1NTQsIDY4MDUxLCA5NDA0OCwgNjY4OTYsIDY2NTMsIDgzMDQ0LCA4MzEwMiwgNjQ1MTAsIDYyMTMsIAotICAgIDEyODg1LCAwLCAxMTkwNDUsIDY0NzIwLCA5MTc4NzMsIDEyMDc1OSwgNzM3NDEsIDEyNjAzLCA3MTMxLCAxMTEwOCwgNDU2NiwgCi0gICAgNzUxOCwgOTMxNywgMzgwMSwgMTAzNDIsIDEwNDA2LCAxMjQ5MzgsIDExOTI1OSwgNDI1NzYsIDAsIDUyMDAsIDkyOTQ2LCAKLSAgICAxMjE0MzUsIDk4Mzg5NSwgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgNDM0OSwgMTAzOTAsIAotICAgIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAxMTg5NzMsIAotICAgIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIDgwOTMsIAotICAgIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgMTI3MzA5LCAKLSAgICA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCA4NTgxLCAKLSAgICAwLCAxMjYwLCAzMTQ5LCA1MzU5LCAxMjAxMzQsIDc0OTU1LCA3OTE0LCA1MzU3LCA3MTE5MCwgNzQzMzksIDI2MjQsIDUzNjQsIAotICAgIDk4MzYwOCwgMTE0MzEsIDEyMDAzMCwgOTEwMSwgMTEwNTgsIDc4Mjg4LCA2NzEwNywgNzgyOTMsIDQyMjcxLCA3ODI4OSwgCi0gICAgNDI5MTcsIDY3MTExLCAxMjkxNzksIDY1NTY2LCA2NzE3LCAxMDYxOSwgNDMzNjAsIDc4MjkxLCA3ODM4NCwgMTE4MzIsIAotICAgIDc4MzgyLCA3ODM4MSwgNzgzODAsIDY5ODYxLCA5MzE5LCA3MDk3LCAxMTkwNTUsIDc3OTA2LCAzMjMyLCA3MzgyNCwgCi0gICAgNzQ1ODEsIDc4MDg3LCAwLCA3MTIwNSwgNDE4ODksIDkyNDUzLCAxMjkxNDQsIDExNjEsIDQxODk1LCA3NDEwMywgOTcwMSwgCi0gICAgODYyMiwgMTI1MDI1LCAwLCA2ODc3MiwgMTIwNTg4LCA1MDEyLCA3MTQ1MywgNDEzNjIsIDY5ODYyLCA2ODUwNywgMTE5MjEsIAotICAgIDAsIDExNzY5LCA2ODc4MiwgNjg2MDksIDQxMzY0LCAxMjA5NDcsIDc0MjI4LCA0MTM1MiwgNDEzNjEsIDkxNzkwMywgCi0gICAgNDEzNjYsIDAsIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIDgxOTksIDc4Mzg5LCAxMTk2MTgsIAotICAgIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgMzM0OSwgNzQxMjUsIDcwMjIsIAotICAgIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxOTQ4NzQsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCA3NDQwMSwgMTAxOTAsIAotICAgIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgNzU4NiwgNDIzMDUsIAotICAgIDEwODUyLCAwLCA0MjY0OCwgNDYwNiwgNjg0NDgsIDkwOTUsIDc3NDEsIDEyNjg0LCA0MTg4NSwgMTA0NiwgNzEyNCwgCi0gICAgMTI4NjEwLCA2ODc1MywgNTgxNSwgNTE3MSwgNjU1MzksIDY4NjEyLCA2OTMyLCA3NDI2NywgNDIzOTQsIDQxODc4LCAKLSAgICA3NDg0OSwgNzQ5NDcsIDcyNDI0LCA1MTY5LCAxMTkzNSwgMCwgMCwgMzE3NSwgMTIwODIyLCAxNTM3LCAxMjA4MDQsIDUxNzYsIAotICAgIDg5MDUsIDQxMzYsIDQ4NzEsIDc4Mjg3LCAxMjA2NjMsIDk4MzMsIDAsIDExMzczMCwgMTEyOCwgNjU5MjAsIDkxNzg3OSwgCi0gICAgOTcxMSwgNzA1NywgOTQwOCwgOTQwOSwgOTQxMCwgOTQxMSwgMzY2MiwgOTQxMywgMzM3OCwgOTQxNSwgOTQxNiwgOTQxNywgCi0gICAgOTQxOCwgNjMyMCwgOTQyMCwgOTQyMSwgNTg5NywgOTQyMywgNTE2NSwgNTEyNiwgNDEzODUsIDk4MzkzOCwgNDEzODksIAotICAgIDEyNzk2MywgODk1NSwgMzM3NCwgOTQwMCwgOTQwMSwgNzExOSwgOTQwMywgOTQwNCwgMzUwNywgOTQwNiwgNzYyOSwgCi0gICAgOTgzNjE3LCAxOTkyNSwgNDI2NjksIDY4NDYzLCAxODMsIDQzOTg1LCAyNjMxLCA3MDgxMSwgMTA2MjcsIDQxMTMwLCAKLSAgICA3MTA3OSwgMzk5NiwgMCwgNzE0NDIsIDEyODkxMywgMTE5MzEzLCAxMTkzMDcsIDc4NzY4LCA2NTgwLCA0MzMyLCA2NDgyNSwgCi0gICAgNjYzMjksIDEwNzI2LCA2NjY4NiwgNDExMjUsIDU4OTksIDQxMzY1LCAxMjcyMDYsIDEyMDg1LCA2NjkwMiwgNTc0LCAKLSAgICAxMjY3MDUsIDc3ODI1LCA3MzgyOCwgNTQ0OCwgNDEwNTgsIDU0NDYsIDY1OTMyLCA0MTMyMiwgNDIyMTEsIDU0NDIsIDQxOTAsIAotICAgIDc3ODM0LCA3NzgzNSwgNTQ1MSwgNzc4MzMsIDM2MTYsIDc3ODI4LCA2ODgxNywgNzc4MzgsIDc3MDgsIDc0NzU5LCAyMjI4LCAKLSAgICA2NTg2NywgMTAzNDUsIDEwNDA5LCA0MTkxLCAxMjAzNzgsIDc3ODQ0LCA3MzgwMCwgNDIxODEsIDc3ODQzLCA3NzgzOSwgCi0gICAgMjA2MCwgMTIxMTkzLCA3MTExLCAxMTc4OCwgNjUzNzYsIDY4MTI5LCAxMDQxNSwgNzQxMDIsIDk4MzYyNSwgMjA1LCAKLSAgICA4MzA0MCwgMTAzNTEsIDY3MTUxLCAwLCA5ODYyLCA2NTg4LCA0MzI1NywgNjQ2OTcsIDczOTk4LCA0MTM1NSwgNTUwNSwgCi0gICAgNzQ5NjYsIDU1MDMsIDgwMjEsIDEyODAzNSwgNzEyNSwgOTgxOSwgNDEzNTcsIDgwMTEsIDQyODg1LCA1NTA3LCAxMjA0NCwgCi0gICAgOTI2MzYsIDAsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIDU0NzYsIDg5OTEsIDY2MzIyLCAKLSAgICA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgMTI5MDUyLCAyNjc1LCA1NTk1LCA3ODQxMSwgCi0gICAgNDM3NjIsIDQzNjcsIDEyNzkxMiwgOTE3NzgyLCA1NDc4LCA1OTA0LCA1NTk0LCAwLCA3NDE1MCwgNzI5MSwgNTU5MCwgCi0gICAgNDM3NjEsIDEzMDY3LCAxMTg5MDksIDc1MDY5LCA5ODMxMDgsIDk3MzEsIDY5NzMxLCA2NDYzMywgNzc4NTcsIDc3ODU0LCAKLSAgICA3MTIxNywgNzc4NTIsIDcxMjI3LCA3Nzg1MCwgMTA3NTAsIDQzNzE0LCA3Nzg1OCwgNzEzNywgMCwgNjY5MDksIDEyODg3LCAKLSAgICAxMDU1MSwgMTk0NTY0LCA3Nzg2NiwgNzc4NjcsIDc3ODY0LCA3Nzg2NSwgOTkyOSwgNTE5OSwgOTkzNiwgMTEyMCwgNDIzODcsIAotICAgIDAsIDE0NDQsIDk0ODYsIDc1NTQsIDY1ODM5LCA1NTI1MiwgNzM5NzIsIDE0NDIsIDEyOTA4MCwgNTg5NCwgNzAwNjksIAotICAgIDEyODY3MiwgNDExNzEsIDkyNTExLCA3MDM1OCwgMTMyMywgMTMxNjIsIDEyMDU5OSwgMzMzNCwgMTI4NzA0LCA5MjcwOSwgCi0gICAgNzc4ODEsIDY2MDIyLCAwLCA2OTc3MCwgMTY1MSwgMTIwMzY0LCA4ODYxLCAwLCAwLCAxMTQyLCA5ODMxMTIsIDgyNzEsIDAsIAotICAgIDk4MzA1OCwgMTI2NjQ1LCAxMjkwMywgNzg0MDYsIDQwMDIsIDQzNjI2LCAxMDQ0MiwgMTA2NzYsIDMzNDQsIDEyODkxMCwgCi0gICAgMTk0Nzg3LCAxMjkyMCwgMTk0NTYwLCA3MDQ5NywgMTk0Njg3LCA2NjY0MiwgMTI3NywgNjY4NzYsIDc4NzEsIDY3MTA2LCAKLSAgICA3MTQ4NywgNzg4NTMsIDEyOTA2OCwgNzg4NTQsIDEyMDM2MCwgOTgzNDkyLCAxMTc4NCwgMCwgNzgwMTIsIDQ3MDAsIAotICAgIDQzODU2LCA3ODg1OCwgMTIwMzU5LCAxMTAxMiwgOTgzNjI3LCA3ODg1NiwgNzg0NDgsIDc3ODc5LCA0OTczLCA4Nzg0LCAKLSAgICA3Nzg3NywgNzQ4MDQsIDc3ODc0LCA3Nzg2OSwgNzc4NzEsIDQyNDQwLCA3MTIyNSwgNDMxMTgsIDExOTg3NSwgNDIzNjQsIAotICAgIDY3NzQsIDY3NzMsIDkxNzU2MCwgMTIwMzY5LCAxMDM0NiwgMTA0MTAsIDc4ODU5LCA5MjQzLCAyNDY0LCA3NDI2MywgNjEwOCwgCi0gICAgMzM3MiwgMCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIAotICAgIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAKLSAgICAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgNDMzODAsIDAsIDk4MzA5MSwgOTgzOTY1LCAKLSAgICA5ODM3NTgsIDExNjAzLCA5ODM5NTQsIDc1MDc0LCA2NTg5LCAxMjg1NjQsIDgyOTc1LCAxMjA5OTMsIDY3ODEyLCA5ODM3MDAsIAotICAgIDAsIDEyOTA4NywgNDI1NzIsIDEyODI2NCwgMTA2MzAsIDc0ODI3LCAxOTYzLCAxMTYyMiwgMTE4ODgyLCAxMTY1NCwgCi0gICAgMTIxMjg3LCA3NTUwLCAxMDY4NiwgNTkwMywgNjcwOTgsIDc4MDA5LCA0MTMyOSwgOTY2MiwgOTE3OTM3LCA2NDY5OCwgCi0gICAgMzM2NiwgMTAzOTksIDkxNzkzOCwgNTU0MiwgMTEwMTMsIDEyNzkyNywgNzEwNjIsIDE5NDY3NywgNzE0NjEsIDY3MDkwLCAKLSAgICA2OTI1LCAwLCAwLCA5Mjg5MiwgNzE4NTYsIDExNTY4LCA5ODM2NzMsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAKLSAgICAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCAKLSAgICA2ODQ1NywgNzM4MzQsIDY4MTc3LCAxMTA1MCwgMTA5ODQsIDkyMjA4LCAwLCAwLCA5MjE4MiwgMTI5MTQ2LCA5ODM2MDUsIAotICAgIDk1MzIsIDY2MzU1LCAxMTkyNjQsIDY4MDczLCAxMTM2OTUsIDY0MzQzLCAxOTUwMzIsIDkyNzQ0LCAxOTUwMzEsIDAsIAotICAgIDE5NDg0NywgMTk1MDU3LCAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCAKLSAgICA5NTA3LCAxMDIxMCwgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzgwMDMsIDk2MjQsIDExNTQ1LCAKLSAgICAwLCAxMjAyNzYsIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIAotICAgIDc4OTQsIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCAKLSAgICA5MjQzMywgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMCwgNjMwOSwgCi0gICAgNzA0NSwgNzE3NSwgNzA0NywgNzgyMzksIDExNzkxLCA5ODMxMjIsIDkxNzU4NywgODIyMSwgNzgzMDcsIDQxODY0LCAwLCAwLCAKLSAgICA2NzA3NSwgNzEyMTksIDE2NywgOTgzOTA2LCA3ODMwMSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCA5MTc1ODMsIAotICAgIDEyNzE0MCwgNjcwNzYsIDI0OTMsIDAsIDExMzc3OCwgMTIxMjQ1LCA3ODEwNywgNjQzNTQsIDAsIDg3NzcsIDEyNzk0MCwgCi0gICAgNDA2LCA4ODg0LCAyMzg1LCA3ODIxMCwgOTI0NTAsIDkxNzU5MCwgOTE3NTczLCA0MzAzMCwgNDIwMjcsIDEyMTE0LCAwLCAKLSAgICAxMjg1OTcsIDY0OTM2LCAxOTQ2OTUsIDExOTI2NywgMTIwNjI5LCAxMDU2MSwgMTI4OTQwLCA4MzY1LCAxMjA1MzksIAotICAgIDk4Mzc3NCwgNjU4NDEsIDEyMDc4NywgMTE2MDEsIDAsIDc0MTIxLCAxMjg4OTYsIDgzMTc2LCA3ODM0LCA3NDE1OSwgMCwgCi0gICAgOTE3NTc0LCAxMDI5OCwgNjYyNCwgNDkwOCwgOTE3NTc3LCAxNjM5LCAxMjA4NDIsIDAsIDcwODAzLCA2MzI3LCA2NzI0LCAKLSAgICAxMjQ5NTMsIDY2MzU0LCA5MjU2NiwgNjk5MTAsIDQ4MTcsIDExMDg3LCAxOTQ3NTksIDkyNTM2LCA3MDQzLCA5NjAwLCAKLSAgICAxMTAyMiwgMCwgMCwgMCwgOTgzNTk5LCAwLCA3Mzk1NCwgNzU0OCwgNjQ3OTQsIDQyMDUwLCAxMjI5MSwgNTUyODksIAotICAgIDEyODc4MSwgMTIzNDMsIDY1NywgNjcxMTAsIDQyNzA1LCA0NDYxLCAxMTM0LCAxODM4LCA3ODQzOCwgMjA1NywgMCwgNDQ2OCwgCi0gICAgOTI4OTEsIDE5NDk0NSwgODMwNTYsIDQ0NTYsIDUyMDYsIDEwNzIwLCAwLCA0MjUyMywgMTI3NTIwLCAwLCA5MzA0NCwgCi0gICAgMTI5NDExLCA2NTU1MCwgMjYwLCA0ODE2LCA2NzY1OCwgMTA2ODcsIDAsIDQ4MjEsIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAKLSAgICAxMjkwNTgsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgNzQxNjAsIDY5ODA1LCA3MzkzOSwgCi0gICAgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAxMzA4NywgMCwgMTEyODQsIAotICAgIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIDEyODQ0OCwgNTkwMCwgCi0gICAgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCA5ODM0ODEsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIDEyMTQyMiwgMTI3ODEwLCAKLSAgICAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAwLCA3MjgwLCAxMjc4ODcsIAotICAgIDY4MDU1LCA3MDE0NiwgNDg2OCwgODI5NywgMTE5OTY2LCA3MDE0OCwgMTI1MDA4LCAxMjg3NDQsIDQzMTYxLCA3MDE0NCwgCi0gICAgOTIzNjAsIDAsIDUxODIsIDAsIDEyMDU0MiwgMCwgMCwgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIAotICAgIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDAsIDEyMTIyOCwgMTM5NSwgCi0gICAgNjQyNzksIDAsIDkyMjQwLCAxMjExNzksIDc4NiwgMTI2OTk1LCA0MzE3NCwgNjQzNDAsIDgzMDc3LCAxOTQ3NjcsIDczOTcxLCAKLSAgICA0MzAyNiwgNzYxMiwgMTAxMzIsIDY0NDEzLCA2NTAyNSwgMCwgMCwgMCwgOTM5NTYsIDk4MzkxNywgNjg0NDQsIDAsIAotICAgIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCAKLSAgICA2NTIxNywgMTIxNDY1LCA4ODUyLCAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjg0MjcsIDk4MzYzOSwgNzkzMiwgCi0gICAgOTcyNywgMTI4NDYzLCA3NDI1NSwgODc0OCwgMCwgMTI4NDI4LCA5ODM2MzEsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAKLSAgICA5ODM1NjAsIDQyMTcsIDkzMDM0LCA4NjUwLCAxMjc5OTEsIDEyMDY3MywgMTI4MjE1LCA2OTkwMCwgMTE4ODcyLCA0MzA5OSwgCi0gICAgMzk2NSwgMTE5MTE5LCA2NzE5LCAxMjgwMDcsIDEzMzAwLCA3ODQzOSwgOTM5NzEsIDQzMDU3LCA2NjU4OCwgMTE4OTkxLCAKLSAgICA2NjI4OSwgMTIwOTAyLCA3MzgxNSwgNDQyMCwgOTgzMTIwLCA2NDEwLCA3NzYwLCAwLCA3MDQ2OCwgMTI4NzUyLCAxMjA2ODQsIAotICAgIDEyMTI0NiwgNzI5NCwgMTI4MjE4LCA0Mzg2OSwgMTIwODU5LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgCi0gICAgNzc2MiwgOTgzODY2LCAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIAotICAgIDY5MTksIDg2MTksIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgCi0gICAgMTI4ODE5LCAwLCAxMjczMjcsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAwLCAxMDE4MSwgMTI0OTM3LCA0MzYyNCwgMTI5MDYwLCAKLSAgICA3Nzc5LCA5MTc1NTEsIDEwMTk1LCA5NDc5LCA2MDI5LCAxMjgzNzQsIDkyMjY4LCAyMjI0LCAwLCA2NTU3NywgODk5MywgCi0gICAgNjYzNTgsIDAsIDQyMzc4LCAzMzY4LCA2MDYsIDEyNzAzMCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgCi0gICAgNjAyNywgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDAsIDcwMzg2LCAxMjc5MDMsIDk4MzMzOSwgOTgzMzM4LCAyNzM1LCAKLSAgICA0MjgzMSwgNzc5MzUsIDcwNDM5LCA3NDg2NiwgODg4MSwgMTE5MDQ3LCAwLCA3MDQzMywgNzM5NDYsIDAsIDE5NDcwMywgMCwgCisgICAgMTI4ODUsIDEyNzM3NSwgMTE5MDQ1LCA2NDcyMCwgOTE3ODczLCAxMjA3NTksIDcwNzM3LCAxMjYwMywgNzEzMSwgMTExMDgsIAorICAgIDQ1NjYsIDc1MTgsIDkzMTcsIDM4MDEsIDEwMzQyLCAxMDQwNiwgMTI0OTM4LCAxMTkyNTksIDQyNTc2LCAxMjUyMzcsIAorICAgIDUyMDAsIDkyOTQ2LCAxMjE0MzUsIDk4MzY4MywgOTE4MywgMTI3MzYxLCA3NDQ1OCwgNjYyODIsIDM5NSwgNTQ4MiwgNTE5OCwgCisgICAgNDM0OSwgMTAzOTAsIDc0MjAyLCA1MTk2LCA0MzIyNCwgNjExMywgNDIwMDksIDUyMDUsIDEyODM4MywgNDMzMDcsIDcwMjk3LCAKKyAgICAxMTg5NzMsIDcwNDY3LCAxMjEzNCwgMTIxMTY3LCAwLCAxMTg4NDMsIDkxMjYsIDQzNSwgOTgzNjI0LCAxMjAxNCwgMTAzNzcsIAorICAgIDgwOTMsIDkwNzksIDMyMDMsIDE5MiwgNjUxMDksIDMzODUsIDEyNTA3NSwgNjQ0MzAsIDUzODMsIDEwMjk0LCAxMDMyNiwgCisgICAgMTIwOTMyLCA1NzM4LCAxMjAwODksIDMzMzYsIDc4MzU1LCA1MzYxLCAzNjIzLCA0MTE1OSwgODMzNzgsIDY4MTEyLCA3ODcyLCAKKyAgICA4NTgxLCA5ODM3NzEsIDEyNjAsIDMxNDksIDUzNTksIDEyMDEzNCwgNzQ5NTUsIDc5MTQsIDUzNTcsIDcxMTkwLCA3NDMzOSwgCisgICAgMjYyNCwgNTM2NCwgMTI4ODgxLCAxMTQzMSwgMTAwNjU5LCA5MTAxLCAxMTA1OCwgNzgyODgsIDY3MTA3LCA3ODI5MywgCisgICAgNDIyNzEsIDc4Mjg5LCA0MjkxNywgNjcxMTEsIDEyOTE3OSwgNjU1NjYsIDY3MTcsIDEwNjE5LCA0MzM2MCwgNzgyOTEsIAorICAgIDc4Mzg0LCAxMTgzMiwgNzgzODIsIDc4MzgxLCA3ODM4MCwgNjk4NjEsIDkzMTksIDcwOTcsIDExOTA1NSwgNzc5MDYsIAorICAgIDMyMzIsIDczODI0LCA3NDU4MSwgNzgwODcsIDk4MzgxNywgNzEyMDUsIDQxODg5LCA5MjQ1MywgMTI5MTQ0LCAxMTYxLCAKKyAgICA0MTg5NSwgNzQxMDMsIDk3MDEsIDg2MjIsIDEyNTAyNSwgMCwgNjg3NzIsIDEyMDU4OCwgNTAxMiwgNzE0NTMsIDQxMzYyLCAKKyAgICA2OTg2MiwgNjg1MDcsIDExOTIxLCAwLCAxMTc2OSwgNjg3ODIsIDY4NjA5LCA0MTM2NCwgMTIwOTQ3LCA3NDIyOCwgNDEzNTIsIAorICAgIDQxMzYxLCA5MTc5MDMsIDQxMzY2LCAxOTQ4MDksIDMzNTYsIDExNjExLCA5MTcsIDY4NDIyLCAxMTk5MTUsIDcxMzQsIAorICAgIDgxOTksIDc4Mzg5LCAxMTk2MTgsIDY3NywgMTE5OTE2LCA5MTc4NzYsIDcxNDgyLCAxMjcxNjksIDY4NzQ3LCAwLCA2ODczOCwgCisgICAgMzM0OSwgNzQxMjUsIDcwMjIsIDg5MjcsIDQ3MzksIDkyNTk5LCA1ODAyLCAxMjAwNDcsIDg2MTUsIDAsIDEyODA1OCwgNDkxLCAKKyAgICA3NDQwMSwgMTAxOTAsIDY4NzU1LCA2NTgzNywgNjg4MDAsIDg0MjYsIDExMDkyLCA5ODkxLCAwLCA0MjQ5NywgNzExMywgCisgICAgNzU4NiwgNDIzMDUsIDEwODUyLCA5MTc1ODAsIDQyNjQ4LCA0NjA2LCA2ODQ0OCwgOTA5NSwgNzc0MSwgMTI2ODQsIDQxODg1LCAKKyAgICAxMDQ2LCA3MTI0LCAxMjg2MTAsIDY4NzUzLCA1ODE1LCA1MTcxLCA2NTUzOSwgNjg2MTIsIDY5MzIsIDc0MjY3LCA0MjM5NCwgCisgICAgNDE4NzgsIDc0ODQ5LCA3Mjc4OSwgNzI0MjQsIDUxNjksIDExOTM1LCAwLCAwLCAzMTc1LCAxMjA4MjIsIDE1MzcsIAorICAgIDExOTA0OSwgNTE3NiwgODkwNSwgMjI2NywgNDg3MSwgNzgyODcsIDEyMDY2MywgOTgzMywgMTk0ODUwLCAxMTM3MzAsIAorICAgIDExMjgsIDY1OTIwLCA5MTc4NzksIDk3MTEsIDcwNTcsIDk0MDgsIDk0MDksIDk0MTAsIDk0MTEsIDM2NjIsIDk0MTMsIAorICAgIDMzNzgsIDk0MTUsIDk0MTYsIDk0MTcsIDk0MTgsIDYzMjAsIDk0MjAsIDk0MjEsIDU4OTcsIDk0MjMsIDUxNjUsIDUxMjYsIAorICAgIDQxMzg1LCAxOTQ4NDQsIDQxMzg5LCAxMjc5NjMsIDg5NTUsIDMzNzQsIDk0MDAsIDk0MDEsIDcxMTksIDk0MDMsIDk0MDQsIAorICAgIDM1MDcsIDk0MDYsIDc2MjksIDk4MzYxNywgMTk5MjUsIDQyNjY5LCA2ODQ2MywgMTgzLCA0Mzk4NSwgMjYzMSwgNzA4MTEsIAorICAgIDEwNjI3LCA0MTEzMCwgNzEwNzksIDM5OTYsIDAsIDcxNDQyLCAxMDA4NjQsIDExOTMxMywgMTE5MzA3LCA3ODc2OCwgNjU4MCwgCisgICAgNDMzMiwgNjQ4MjUsIDY2MzI5LCAxMDcyNiwgNjY2ODYsIDQxMTI1LCA1ODk5LCA0MTM2NSwgMTI3MjA2LCAxMjA4NSwgCisgICAgNjY5MDIsIDU3NCwgMTI2NzA1LCA3NzgyNSwgNzM4MjgsIDU0NDgsIDQxMDU4LCA1NDQ2LCA2NTkzMiwgNDEzMjIsIDQyMjExLCAKKyAgICA1NDQyLCA0MTkwLCA3NzgzNCwgNzc4MzUsIDU0NTEsIDc3ODMzLCAzNjE2LCA3NzgyOCwgNjg4MTcsIDc3ODM4LCA3NzA4LCAKKyAgICA3NDc1OSwgMjIyOCwgNjU4NjcsIDEwMzQ1LCAxMDQwOSwgNDE5MSwgMTIwMzc4LCA3Nzg0NCwgNzM4MDAsIDQyMTgxLCAKKyAgICA3Nzg0MywgNzc4MzksIDIwNjAsIDEyMTE5MywgNzExMSwgMTE3ODgsIDY1Mzc2LCA2ODEyOSwgMTA0MTUsIDcyNzQxLCAKKyAgICAxOTUwMjUsIDIwNSwgODMwNDAsIDEwMzUxLCA2NzE1MSwgMCwgOTg2MiwgNjU4OCwgNDMyNTcsIDY0Njk3LCA3Mzk5OCwgCisgICAgNDEzNTUsIDU1MDUsIDcwNzM2LCA1NTAzLCA4MDIxLCAxMjgwMzUsIDcxMjUsIDk4MTksIDQxMzU3LCA4MDExLCA0Mjg4NSwgCisgICAgNTUwNywgMTIwNDQsIDkyMzY0LCAxMDA3NDIsIDEwMDI2LCA1NDcyLCA3MTA5LCAxMTkxLCAxMzEwNiwgNTQ3MCwgMTAzMjksIAorICAgIDU0NzYsIDg5OTEsIDY2MzIyLCA2OTc3OCwgMTExMzMsIDQyODc0LCA4NTUwLCA0Mjg3NiwgNTU5MiwgMjkxOSwgNzQ1MTYsIAorICAgIDI2NzUsIDU1OTUsIDc4NDExLCA0Mzc2MiwgNDM2NywgODM1MTgsIDkxNzc4MiwgNTQ3OCwgNTkwNCwgNTU5NCwgMCwgCisgICAgNzQxNTAsIDcyOTEsIDU1OTAsIDQzNzYxLCAxMzA2NywgMTE4OTA5LCA3NTA2OSwgOTgzMTA4LCA5NzMxLCA2OTczMSwgCisgICAgNjQ2MzMsIDc3ODU3LCA3Nzg1NCwgNzEyMTcsIDc3ODUyLCA3MTIyNywgNzc4NTAsIDEwNzUwLCA0MzcxNCwgNzc4NTgsIAorICAgIDcxMzcsIDAsIDY2OTA5LCAxMjg4NywgMTA1NTEsIDE5NDU2NCwgNzc4NjYsIDc3ODY3LCA3Nzg2NCwgNzc4NjUsIDk5MjksIAorICAgIDUxOTksIDk5MzYsIDExMjAsIDQyMzg3LCAwLCAxNDQ0LCA5NDg2LCA3NTU0LCA2NTgzOSwgNTUyNTIsIDcyODMyLCAxNDQyLCAKKyAgICAxMjkwODAsIDU4OTQsIDcwMDY5LCAxMjg2NzIsIDQxMTcxLCA5MjUxMSwgNzAzNTgsIDEzMjMsIDEzMTYyLCAxMjA1OTksIAorICAgIDMzMzQsIDEyODcwNCwgOTI3MDksIDc3ODgxLCA2NjAyMiwgNzA3MDUsIDY5NzcwLCAxNjUxLCAxMjAzNjQsIDg4NjEsIDAsIAorICAgIDkxNzU4OCwgMTE0MiwgOTgzMTEyLCA4MjcxLCAwLCA5ODMwNTgsIDEyNjY0NSwgMTI5MDMsIDc4NDA2LCA0MDAyLCA0MzYyNiwgCisgICAgMTA0NDIsIDEwNjc2LCAzMzQ0LCAxMjg5MTAsIDE5NDc4NywgMTI5MjAsIDE5NDU2MCwgNzA0OTcsIDE5NDY4NywgNjY2NDIsIAorICAgIDEyNzcsIDY2ODc2LCA3ODcxLCA2NzEwNiwgNzE0ODcsIDc4ODUzLCAxMjkwNjgsIDc4ODU0LCAxMjAzNjAsIDk4MzQ5MiwgCisgICAgMTE3ODQsIDAsIDc4MDEyLCA0NzAwLCA0Mzg1NiwgNzg4NTgsIDEyMDM1OSwgMTEwMTIsIDk4MzYyNywgNzg4NTYsIDc4NDQ4LCAKKyAgICA3Nzg3OSwgNDk3MywgODc4NCwgNzc4NzcsIDc0ODA0LCA3Nzg3NCwgNzc4NjksIDY2NzQzLCA0MjQ0MCwgNzEyMjUsIAorICAgIDQzMTE4LCAxMTk4NzUsIDQyMzY0LCA2Nzc0LCA2NzczLCA5MTc1NjAsIDEyMDM2OSwgMTAzNDYsIDEwNDEwLCA3ODg1OSwgCisgICAgOTI0MywgMjQ2NCwgNzQyNjMsIDYxMDgsIDMzNzIsIDEyMjg5MCwgNjI0NywgNDMxMTcsIDcwMzY0LCA3MTIxLCA3NDE2NiwgCisgICAgMTI0OTczLCAxMjAzNTUsIDkyNTM3LCAxOTQ4NDYsIDExOTg3NywgMTk1MDM0LCA3MDM1NywgMTE5OTIyLCAwLCA2NzExOSwgCisgICAgMzM1NCwgMTk1MDM3LCA0MTkyLCA5Mjg5LCAxMTg5OTksIDQxMTkxLCAzODc2LCAwLCA3MDA2NywgMTIwNjYwLCA0MzY5NiwgCisgICAgNDMzODAsIDk4MzYyNSwgOTgzMDkxLCAxMjkzNDIsIDEyODQ1MCwgMTE2MDMsIDEyOTM0NywgNzUwNzQsIDY1ODksIAorICAgIDEyNzM2MCwgODI5NzUsIDEyMDk5MywgNjc4MTIsIDEyNzE5MCwgMTk0NjgwLCAxMjkwODcsIDQyNTcyLCAxMjgyNjQsIAorICAgIDEwNjMwLCA3NDgyNywgMTk2MywgMTE2MjIsIDExODg4MiwgMTE2NTQsIDEyMTI4NywgNzU1MCwgMTA2ODYsIDU5MDMsIAorICAgIDY3MDk4LCA3ODAwOSwgNDEzMjksIDk2NjIsIDkxNzkzNywgNjQ2OTgsIDMzNjYsIDEwMzk5LCA5MTc5MzgsIDU1NDIsIAorICAgIDExMDEzLCAxMjc5MjcsIDcxMDYyLCAxMjUyMjQsIDcxNDYxLCA2NzA5MCwgNjkyNSwgOTgzMjc0LCAwLCA5Mjg5MiwgCisgICAgNzE4NTYsIDExNTY4LCA5ODMxMzEsIDQzMzY3LCA2NDU3OSwgOTE3OTMwLCA3ODUyLCAxMTEzOCwgMCwgNjc1NCwgNjMxMiwgCisgICAgNzc5NTYsIDY0NjcyLCA2NTI5NiwgMCwgMTE4OTU3LCAwLCA0MTYsIDEyMjk2LCA2ODQ1NywgNzM4MzQsIDY4MTc3LCAKKyAgICAxMTA1MCwgMTA5ODQsIDkyMjA4LCA5ODMyMTYsIDkxNzgyMiwgOTIxODIsIDEyOTE0NiwgMTk0NjM2LCA5NTMyLCA2NjM1NSwgCisgICAgMTE5MjY0LCA2ODA3MywgMTEzNjk1LCA2NDM0MywgMTk1MDMyLCA5Mjc0NCwgMTI3MjQzLCAwLCAxOTQ4NDcsIDc4ODM4LCAKKyAgICAxMTQ0NSwgNjgyOTQsIDIxMTIsIDEyODc0MSwgMTI4ODE0LCAxMDE4NSwgMTAyMSwgMTI4MTMwLCA5NTA3LCAxMDIxMCwgCisgICAgNzQ1NDQsIDgwMjMsIDEyMDAsIDEyMjQzLCA3ODAwMSwgNTI4MiwgNzI4NTAsIDk2MjQsIDExNTQ1LCAwLCAxMjAyNzYsIAorICAgIDMzNDMsIDQ0MjQsIDExMDQ3LCAxODg1LCA0MzI2OCwgMzg5NiwgNzg0NDQsIDY2NDk3LCAyOTQ3LCAzOTIsIDc4OTQsIAorICAgIDQzOTEsIDY4MTM5LCAxMjEwNjQsIDEzMDU5LCA3NDgxNiwgNzc5OTgsIDMzODEsIDc5NDIsIDAsIDY5MjE5LCA5MjQzMywgCisgICAgMzU1OCwgMTI5MTkwLCAzOTEzLCA3MDQyOSwgMTIxMzc2LCA3ODIzNSwgNzA0NCwgMTI2NSwgMTk0NjYwLCA2MzA5LCA3MDQ1LCAKKyAgICA3MTc1LCA3MDQ3LCA3ODIzOSwgMTE3OTEsIDk4MzEyMiwgMTk0NTg0LCAzODgxLCA3ODMwNywgNDE4NjQsIDEyNzM5NSwgCisgICAgMTI1MjA4LCA2NzA3NSwgNzEyMTksIDE2NywgMTIxMTAxLCA3Mjc1NSwgOTgzNjUzLCA3NDIxMSwgNDE4OTcsIDY3MDcyLCAwLCAKKyAgICA5MTc1ODMsIDY2NzQ1LCA2NzA3NiwgMjQ5MywgMCwgMTEzNzc4LCAxMjA1MzAsIDc4MTA3LCA2NDM1NCwgOTE3NTkzLCAKKyAgICA4Nzc3LCAxMjc5NDAsIDQwNiwgODg4NCwgMjM4NSwgNzgyMTAsIDkyNDUwLCA5MTc1OTAsIDkxNzU3MywgNDMwMzAsIAorICAgIDQyMDI3LCAxMjExNCwgMCwgMTI4NTk3LCA2NDkzNiwgMTAwNzYzLCAxMTkyNjcsIDM0MjEsIDEwNTYxLCAxMjg5NDAsIAorICAgIDgzNjUsIDc0Mjk0LCA5ODM3NzQsIDY1ODQxLCAxMjA3ODcsIDExNjAxLCAwLCA3NDEyMSwgMTI4ODk2LCA4MzE3NiwgNzgzNCwgCisgICAgNzQxNTksIDAsIDkxNzU3NCwgMTAyOTgsIDY2MjQsIDQ5MDgsIDkxNzU3NywgMTYzOSwgMTIwODQyLCA5ODM1ODYsIDcwODAzLCAKKyAgICA2MzI3LCA2NzI0LCA3MTI2OSwgNjYzNTQsIDkyNTY2LCA2OTkxMCwgNDgxNywgMTEwODcsIDE5NDc1OSwgOTI1MzYsIDcwNDMsIAorICAgIDk2MDAsIDExMDIyLCAxMjg0MjcsIDEyOTM0NCwgMTI4MzU0LCA5ODM1OTksIDk4MzIwOSwgNjY3NzEsIDc1NDgsIDY0Nzk0LCAKKyAgICA0MjA1MCwgMTIyOTEsIDU1Mjg5LCAxMjg3ODEsIDEyMzQzLCA2NTcsIDY3MTEwLCA0MjcwNSwgNDQ2MSwgMTEzNCwgMTgzOCwgCisgICAgNzg0MzgsIDIwNTcsIDAsIDQ0NjgsIDkyODkxLCAxMjczNzIsIDgzMDU2LCA0NDU2LCA1MjA2LCAxMDcyMCwgMCwgNDI1MjMsIAorICAgIDEyNzUyMCwgMCwgOTMwNDQsIDEyODQzMCwgNjU1NTAsIDI2MCwgNDgxNiwgNjc2NTgsIDEwNjg3LCAxMjkzMTksIDQ4MjEsIAorICAgIDQ0NjYsIDAsIDgzMTgyLCA0ODE4LCAxMjUyNTcsIDQxNDAzLCAxMTk5NzcsIDcyNDIyLCAxMjg0NTgsIDQxNDA2LCA0MzI3MywgCisgICAgNzQxNjAsIDY5ODA1LCA3MzkzOSwgOTI2MzgsIDExOTk4NCwgMTE5OTc5LCA0MTQwNCwgMTE2NSwgMTE5OTgwLCA0NDUxLCAKKyAgICAxMzA4NywgMCwgMTEyODQsIDExOTk4NywgNzAwOTcsIDY1MTU1LCA0MzAxNCwgNTQzOSwgOTM2MywgNzAwNzAsIDMzNzUsIAorICAgIDEyODQ0OCwgNTkwMCwgOTM5OTAsIDc4ODksIDI3MjIsIDQyMjYyLCAxMjgzMTMsIDAsIDY3MDc4LCAxMjg0NTEsIDIyODIsIAorICAgIDEyMTQyMiwgMTI3ODEwLCAxMTQwMSwgNjcwNzksIDAsIDY4NDU5LCAxMjUwMjgsIDk4MzE0MSwgMCwgNzAxNTAsIDY1NDM4LCAKKyAgICA5ODM3NjAsIDcyODAsIDEyNzg4NywgNjgwNTUsIDcwMTQ2LCA0ODY4LCA4Mjk3LCAxMTk5NjYsIDcwMTQ4LCAxMjUwMDgsIAorICAgIDEyODc0NCwgNDMxNjEsIDY2NzM5LCA5MjM2MCwgMTk1MDcwLCA1MTgyLCAxOTQ2OTIsIDEyMDU0MiwgNzI3NjQsIDEyODU4OCwgCisgICAgNDIyNiwgNzAxODYsIDEyMTM1LCA1NzMyLCA0NDY0LCAxOTUwODMsIDcxMzMwLCA5NzcsIDQ0NTgsIDQzODI3LCA5Mjk3MSwgCisgICAgNjQ3NzAsIDc0ODM4LCAwLCAzNDQsIDEyMTQ2NiwgMTIxMjI4LCAxMzk1LCA2NDI3OSwgMCwgOTIyNDAsIDEyMTE3OSwgNzg2LCAKKyAgICAxMjY5OTUsIDQzMTc0LCA2NDM0MCwgODMwNzcsIDE5NDc2NywgNzM5NzEsIDQzMDI2LCA3NjEyLCAxMDEzMiwgNjQ0MTMsIAorICAgIDY1MDI1LCAwLCA5ODM0NjgsIDEyODMwMywgNzQxNTEsIDk4MzkxNywgNjg0NDQsIDAsIDkyNDM3LCAxMjQ5MjgsIDkyNTQ5LCAKKyAgICAxMDIwNCwgOTI2NTYsIDgzMDc4LCAxMTkyNzEsIDEyODQzMSwgMTM5OSwgMTIxNDYzLCA2NTIxNywgMTIxNDY1LCA4ODUyLCAKKyAgICAxMjA4MDgsIDI0MSwgMTIxNDY5LCA0OTA3LCAxMjgxNjEsIDkxNzkyNywgNzkzMiwgOTcyNywgMTI4NDYzLCA3NDI1NSwgCisgICAgODc0OCwgMCwgMTI4NDI4LCAxMjg2NDYsIDAsIDQyNzgwLCA1NTI2MywgMTEzNjc3LCAxMTk4NTYsIDQyMTcsIDkzMDM0LCAKKyAgICA4NjUwLCAxMjc5OTEsIDEyMDY3MywgNzI4NzgsIDY5OTAwLCAxMTg4NzIsIDQzMDk5LCAzOTY1LCAxMTkxMTksIDY3MTksIAorICAgIDEyODAwNywgMTMzMDAsIDc4NDM5LCA3MjgzNiwgNDMwNTcsIDY2NTg4LCAxMTg5OTEsIDY2Mjg5LCAxMjA5MDIsIDczODE1LCAKKyAgICA0NDIwLCAxMjg1MzMsIDY0MTAsIDc3NjAsIDEwMDk5OSwgNzA0NjgsIDEyODc1MiwgMTIwNjg0LCAxMDA1MjgsIDcyOTQsIAorICAgIDEyODIxOCwgNDM4NjksIDY4MjA0LCA5MDY2LCAxMjEzMjEsIDExOTkzLCA0MzE4OCwgMjYyNiwgNzc2MiwgOTgzODY2LCAKKyAgICAxMTg4MzEsIDkyODk5LCA5MjYwMSwgNDI4MjUsIDQxODU0LCA1MzA0LCA3MDI5MCwgNzg1MTYsIDY5MTksIDg2MTksIAorICAgIDExOTY1NSwgMTAwMzgsIDY2NDU0LCA5NTkyLCA0Mjg1MSwgMTIwNTM3LCAxNTQyLCA5MjMwMywgMTI4ODE5LCAwLCAKKyAgICAxMjQ5NDAsIDEyMTE5OSwgNzQzMTEsIDc4NDk3LCAxMjE0MTIsIDEwMTgxLCAxMjQ5MzcsIDQzNjI0LCAxMjkwNjAsIDc3NzksIAorICAgIDkxNzU1MSwgMTAxOTUsIDk0NzksIDYwMjksIDEyODM3NCwgOTIyNjgsIDIyMjQsIDEwMTA3OSwgNjU1NzcsIDg5OTMsIAorICAgIDY2MzU4LCAwLCA0MjM3OCwgMzM2OCwgNjA2LCA2NjgwNCwgNzY5NywgNjkyMzcsIDY5Nzg3LCAyMDMwLCA3MDEwNiwgNjAyNywgCisgICAgODM3MCwgNDMyMiwgMCwgNjUyMDcsIDEyMDYyOSwgNzAzODYsIDEyNzkwMywgOTgzMzM5LCA5ODMzMzgsIDI3MzUsIDQyODMxLCAKKyAgICA3NzkzNSwgNzA0MzksIDc0ODY2LCA4ODgxLCAxMTkwNDcsIDEyOTM2NCwgNzA0MzMsIDczOTQ2LCAwLCAxOTQ3MDMsIDAsIAogICAgIDY4MTQwLCA5ODM5MjgsIDk1NzYsIDcwMjg4LCAzMzQ3LCA0MTYwLCA1MTU0LCA1NTI4OCwgMzc5NCwgNjY1NjQsIDg1MzAsIAogICAgIDEyNzA2MywgNzcwOSwgNDExMTIsIDExOTg2OCwgNjY1NjAsIDgzODEsIDQ1NzIsIDEyODc2LCA2NjU2MSwgMTI4OTIxLCAKLSAgICA2NzU4LCA2NjAzMSwgMTYxNSwgNTg1NSwgODA5LCAxMjcxMTcsIDkyMjgzLCAxMjgzMTYsIDEyODAwNCwgNTc5OSwgCi0gICAgMTI4OTI5LCA3MDEwMCwgMTI4NjA3LCA3MjYwLCA5ODMzMjYsIDQzMDMxLCA2NDQyNSwgNjUxMjgsIDc4ODE5LCA2NDM4NiwgCi0gICAgNjUyNTcsIDc0OTA5LCA2ODYxNiwgMTIwNjA3LCA5MzQ3LCA4MzM2MCwgNjUzMiwgMCwgOTE3OTE4LCAxMjA4NjAsIAotICAgIDEyNzA2MCwgNjU4MjgsIDEyMDAwNiwgMjgzLCA2ODY2NSwgNzg4MTMsIDUzMiwgNzg2NjMsIDc4ODE3LCAxMjgwMjEsIAotICAgIDEyMDYwOSwgMCwgMzM3MCwgOTE3ODgxLCAxMTM2MSwgNTQ0MywgNzE0MzEsIDgxNTMsIDczNzY3LCAwLCAxMDc0MSwgCi0gICAgMTIxNTAzLCAyMjk4LCAwLCAxMjUwMzksIDY1NDk1LCA2NDcwNiwgOTgzMzIwLCA0MzM0NCwgOTgzMzE4LCA3MTQ0LCA5NDY2LCAKLSAgICA3ODg2NiwgOTgyNCwgNjcxNDIsIDEyODk2MywgNjcxMzMsIDY3MTMwLCA5MTUsIDQzNDI1LCA2NzI5MiwgNDM4NjUsIAotICAgIDY4MjMyLCA5ODMxMTEsIDEyMDg4OCwgNDMyNjQsIDY3MTM2LCA2NzEzNywgMCwgNDMwMzgsIDc4ODY0LCA2NzMwLCA3ODg2MiwgCi0gICAgNjgxNjEsIDY0NTUwLCA1MTg2LCA3MzYwLCAxMjc4MzcsIDcwNDUxLCAxMjEwOCwgMTIwNjQ0LCA2NTEyNCwgNDMxMjcsIAotICAgIDY2MDQzLCAwLCA2MzI2LCA0MzEwNywgNzc4MjYsIDAsIDQyNTYyLCAwLCAxMjg4MjEsIDEyODE3OCwgMTIwOTE5LCAxMTQ4NSwgCi0gICAgNjEwMywgOTI0NjgsIDk4MzMwNywgMTE3MTgsIDk4MzMwNSwgMTI4ODksIDkyNjU3LCAxMjUwMzQsIDEyMDYzNSwgMTI3MTU3LCAKLSAgICAxMjExMjgsIDU1MjQ1LCAxMjg3MDksIDE2MzAsIDgzMDI3LCA2NTQ4MywgMTIwNjM0LCAxMjU2NSwgMCwgNjU0NzYsIAotICAgIDcwMzY5LCA5ODMwNzIsIDgzMDI5LCA5MjgzLCA3NzAwLCA5MTc1MzcsIDk2OTAsIDY1NDk5LCAwLCA2NDU5MywgNTEyLCAKLSAgICAzMzc2LCA2ODA4MCwgMCwgMTI4MjUzLCA3Nzg5MiwgNjMyLCAxMjk0MCwgNzc4OTEsIDQyNTI5LCA3ODU4NywgMTk0NjA0LCAKLSAgICA1OTU3LCAxMTA1OTMsIDg5MjYsIDk4MzMwMSwgOTgzMzAwLCAxMjgyNzMsIDEwNzQ1LCAxMDE3NCwgNzM3OSwgNjQ1ODEsIAotICAgIDUzODYsIDEyMDY4NiwgMTE3MTMsIDEwNjMzLCA2OTcwOCwgNTA1NiwgMCwgMCwgMCwgMTIwNzczLCA5NDA1NSwgOTgxMiwgMCwgCi0gICAgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCA5MjM3MCwgCi0gICAgNDM0NjYsIDAsIDAsIDY0Mzg5LCAyOTUzLCA3MDEyMiwgMTgwMSwgMTI4MzUsIDc0ODQ3LCAxMjA4NjcsIDczODIzLCAKLSAgICA4MzExMCwgNjYzNzUsIDIwODUsIDcwMiwgNDI1NzksIDc3ODg0LCA3Nzg4NSwgMTMwNzQsIDc3ODgzLCA2NjI5OSwgCi0gICAgOTgzMjg3LCA3MTQ0NywgMTIxMDYsIDEyMDk3MiwgNzQyMDcsIDE3NTUsIDEwNDgyLCAxMjg2MywgNzc4OTgsIDExNjMsIAotICAgIDI5NTEsIDk1MjIsIDY3ODE2LCA3ODI2NiwgNjY2MDQsIDk4Mzg2MCwgMzM4NCwgNjkyMjcsIDEwNzAyLCA4MzAsIDc3OTAyLCAKLSAgICA3Nzg5OSwgNzc5MDAsIDg0NTEsIDgzMzI0LCAwLCAwLCA2NjQ1OCwgMTI4OTU3LCAxMjg4NzAsIDc0ODk2LCAwLCAyOTA4LCAKLSAgICAwLCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDAsIDgyOTY4LCAKLSAgICA3Mzk0MCwgNjQzNTIsIDEyNzUxMywgMTI1MDMxLCA0MTEsIDk4MzI3NSwgOTE5OSwgOTgzMjczLCA0MDU2LCAxMTg5OTIsIAotICAgIDQxODkwLCAxMjg1OTIsIDI3MzAsIDQxNjA0LCAxMjgzNTUsIDU0MjgsIDE5NDc0MywgMzM2NCwgNDIyNjUsIDY0NDM3LCAKLSAgICAxMjc5MzUsIDExODgxNiwgNzE0NTgsIDk2ODQsIDIxNiwgNzEzNjcsIDE0MDEsIDEyODA1MywgNDQwMTIsIDkyNjI4LCAKLSAgICA3MTQ1NiwgOTI1ODUsIDkxNTgsIDY2ODc4LCAxMTEyNiwgNTc2OCwgMCwgOTgzNzU5LCAwLCA0ODQsIDE5NDczOSwgMCwgMCwgCi0gICAgNjU4OTUsIDEyNTA3NiwgMTIxMzgwLCAzMzM4LCA3MzkzNSwgNTcyLCA3MDQxLCAyNzM2LCA2NzYwNSwgMTI3NTQzLCAKLSAgICA5Mzk2MiwgMjc5NCwgODgwNywgNjQ0OTEsIDc3ODQ3LCA1NDM4LCA1MjIyLCA1MzgxLCA0MzExNCwgMCwgNTE5MywgNTEyNSwgCi0gICAgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgMTI5MTA5LCAxMjkwNDAsIDAsIDM0MzAsIDAsIDQyOTA1LCAKLSAgICA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAxMDkwOCwgMTI2NTA2LCAKLSAgICA3MDM0LCA0MTY4MywgNjQ2MTcsIDAsIDczNzU0LCAzOTU3LCA2NDM1OCwgNjQ1NDcsIDEyODI1OSwgNjc0LCA2Mzk5MSwgCi0gICAgOTgzMjUxLCAyOTQ2LCA1MzU0LCA1MjUxLCA1MzI4LCA1MzA3LCAzNzU5LCAxMTQxMSwgODM2NCwgNTEyMywgMTE5NjI4LCAKLSAgICA1MjgxLCA1NDY5LCA1MTIxLCA3Nzk4OSwgMTE4OTkzLCAwLCA1MTMwLCA4MzE4MCwgMTI4MzU3LCA3Nzk5MCwgMCwgCi0gICAgMTIwNzI2LCAxMjIxLCAyNzMzLCAxMTc0NiwgNzc5OTEsIDUyMTYsIDExOTI2OCwgMCwgMTI4NDc1LCA5MjE4NywgMzQ2OCwgCi0gICAgNzAzMywgOTIzMCwgNTkzOSwgMTI4Mzk3LCAwLCA1ODAzLCA3MTg2NywgNjg0MDAsIDcyNzgsIDEwMzIxLCAxMDI4OSwgCi0gICAgNjQ2MTMsIDEwMzg1LCA0MTcwNiwgMCwgMCwgOTE3OTM5LCAwLCAxMTczOSwgNzc5ODYsIDQxOTgxLCA5Mjc0MywgNTkzOCwgCi0gICAgMCwgNDM3NjYsIDEyNDQ4LCA3NTc2LCAxMDQwMSwgMTAzMzcsIDczODUyLCAxMjQ5OTQsIDEzMDU3LCAwLCAxMjY5NzYsIAotICAgIDEyOTA4MSwgMTAwMDksIDAsIDQxNzAzLCAxMjA5NTAsIDEyMTY1LCAxMjkxOTEsIDAsIDk4ODUsIDAsIDgwNzcsIDkyNjIwLCAKLSAgICAxMjc5MDgsIDEyMTA0NCwgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCAKLSAgICA0OTg3LCA2NDUxOSwgMTIxMjY1LCAxMjUwNzgsIDAsIDE5NDgxMywgMTI4NTc0LCAxMDk3MCwgMTE3MzMsIDAsIDEyMDc5MiwgCi0gICAgMTI2NDkwLCAxOTk0NCwgNzQzNTYsIDkwMDksIDg1NTEsIDkyMzQ1LCAxMTQ2OCwgNjQ2MzYsIDc1NzUsIDAsIDI3MjQsIAotICAgIDEyODg5OSwgMCwgMTIzMTMsIDExMTUxLCA1MTUsIDExOTk0NywgNDI3OTEsIDYzOTg3LCA3ODI4NiwgMTE5OTQzLCAKLSAgICAxMTk5NDAsIDExOTk0MSwgMTE5OTM4LCA5Nzc1LCA0MDQ2LCA0NTg5LCA0NTIxLCA2ODYyOSwgOTE0MSwgOTE3OTA0LCAKLSAgICA3ODg1MCwgMjc0MSwgNjQzOTksIDYxOTcsIDEzNzAsIDAsIDEyMDg0MSwgMCwgMTI1MDYyLCA5ODM0NDEsIDEyMDg0MywgCi0gICAgNjE4NCwgODYwNiwgMzMwMywgNDEzNzIsIDExNzg2LCA5NDczLCA2NjIwMywgNjYxNzcsIDkyNDQ2LCAxMTU5MywgNDMwMDcsIAotICAgIDQ0NzgsIDY2MTc4LCAwLCAwLCAyNzQ0LCAwLCA0NDc3LCA3ODI2NywgODE0LCA0MjA2NiwgNjYxODMsIDY2MjA0LCA0Mzc4NiwgCi0gICAgMTE5OTYxLCA2NjE5OCwgNDE4ODAsIDY2MTg4LCAxMTYyMywgNzgxNDgsIDExOTU1LCA2NjE5MCwgNjYxOTEsIDQxMTExLCAKLSAgICA2NjE4OSwgNzM3ODgsIDc3ODgsIDQ4NDcsIDk4MzQyOCwgMTI3NzU5LCAwLCAxMjg0MzMsIDIyMjEsIDE1ODEsIDY1MzUsIAorICAgIDY3NTgsIDY2MDMxLCAxNjE1LCA1ODU1LCA4MDksIDEyNzExNywgOTIyODMsIDcyODUzLCAxMjgwMDQsIDU3OTksIDEyODkyOSwgCisgICAgNzAxMDAsIDEyODYwNywgNzI2MCwgOTgzMzI2LCA0MzAzMSwgNjQ0MjUsIDY1MTI4LCA3ODgxOSwgNjQzODYsIDY1MjU3LCAKKyAgICA3NDkwOSwgNjg2MTYsIDEyMDYwNywgOTM0NywgODMzNjAsIDY1MzIsIDAsIDE5NTA2MiwgMTIwODYwLCAxMjcwNjAsIAorICAgIDY1ODI4LCAxMjAwMDYsIDI4MywgNjg2NjUsIDc4ODEzLCA1MzIsIDc4NjQyLCA3ODgxNywgMTI4MDIxLCAxMjA2MDksIDAsIAorICAgIDMzNzAsIDkxNzg4MSwgMTEzNjEsIDU0NDMsIDcxNDMxLCA4MTUzLCA3Mzc2NywgMCwgMTA3NDEsIDEyMTUwMywgMjI5OCwgMCwgCisgICAgMTI1MDM5LCA2NTQ5NSwgNjQ3MDYsIDk4MzMyMCwgNDMzNDQsIDk4MzMxOCwgNzE0NCwgOTQ2NiwgNzg4NjYsIDk4MjQsIAorICAgIDY3MTQyLCAxMjg5NjMsIDY3MTMzLCA2NzEzMCwgOTE1LCA0MzQyNSwgNjcyOTIsIDQzODY1LCA2ODIzMiwgOTgzMTExLCAKKyAgICAxMjA4ODgsIDQzMjY0LCA2NzEzNiwgNjcxMzcsIDAsIDQzMDM4LCA3ODg2NCwgNjczMCwgNzg4NjIsIDY4MTYxLCA2NDU1MCwgCisgICAgNTE4NiwgNzM2MCwgMTI3ODM3LCA3MDQ1MSwgMTIxMDgsIDEyMDY0NCwgNjUxMjQsIDQzMTI3LCA2NjA0MywgMCwgNjMyNiwgCisgICAgNDMxMDcsIDc3ODI2LCAwLCA0MjU2MiwgMCwgMTI4ODIxLCAxMjAzMjgsIDEyMDkxOSwgMTE0ODUsIDYxMDMsIDkyNDY4LCAKKyAgICAxMjEwNzUsIDExNzE4LCA5ODMzMDUsIDEyODg5LCA5MjY1NywgMTI1MDM0LCAxMjA2MzUsIDEwMTA3MCwgMTIxMTI4LCAKKyAgICA1NTI0NSwgMTI4NzA5LCAxNjMwLCA4MzAyNywgNjU0ODMsIDEyMDYzNCwgMTI1NjUsIDAsIDY1NDc2LCA3MDM2OSwgCisgICAgOTgzMDcyLCA4MzAyOSwgOTI4MywgNzcwMCwgMTIxMTkyLCA5NjkwLCA2NTQ5OSwgMCwgNjQ1OTMsIDUxMiwgMzM3NiwgCisgICAgNjgwODAsIDAsIDEyODI1MywgNzc4OTIsIDYzMiwgMTI5NDAsIDc3ODkxLCA0MjUyOSwgNzg1ODcsIDEwMTA3OCwgNTk1NywgCisgICAgMTEwNTkzLCA4OTI2LCAxOTUwNzIsIDk4MzMwMCwgMTI4MjczLCAxMDc0NSwgMTAxNzQsIDczNzksIDY0NTgxLCA1Mzg2LCAKKyAgICAxMjA2ODYsIDExNzEzLCAxMDYzMywgNjk3MDgsIDUwNTYsIDEwMDY3OSwgMTI3ODI0LCAxMjE1MSwgMTIwNzczLCA5NDA1NSwgCisgICAgOTgxMiwgMCwgNDQ2MCwgNzg3OTEsIDEyNDk1NiwgNzEzMDcsIDEyODAzOCwgMCwgMTIxMTM1LCAxMjcxNzQsIDY0Mjc4LCAKKyAgICA5MjM3MCwgNDM0NjYsIDAsIDY2NzYwLCA2NDM4OSwgMjk1MywgNzAxMjIsIDE4MDEsIDEyODM1LCA3NDg0NywgMTIwODY3LCAKKyAgICA3MzgyMywgODMxMTAsIDY2Mzc1LCAyMDg1LCA3MDIsIDQyNTc5LCA3Nzg4NCwgNzc4ODUsIDEzMDc0LCA3Nzg4MywgNjYyOTksIAorICAgIDE5NDc3NSwgNzE0NDcsIDEyMTA2LCAxMjA5NzIsIDc0MjA3LCAxNzU1LCAxMDQ4MiwgMTI4NjMsIDc3ODk4LCAxMTYzLCAKKyAgICAyOTUxLCA5NTIyLCA2NzgxNiwgNzgyNjYsIDY2NjA0LCAxMDEwNTksIDMzODQsIDY5MjI3LCAxMDcwMiwgODMwLCA3NzkwMiwgCisgICAgNzc4OTksIDc3OTAwLCA4NDUxLCA4MzMyNCwgMCwgMCwgNjY0NTgsIDEyODk1NywgMTI3MzAxLCA3NDg5NiwgMCwgMjkwOCwgCisgICAgOTgzNTU4LCAxMTE3NywgNjQ5MDIsIDQyNDMsIDkyNDU0LCAxMjIzOSwgMTIxMDAzLCAxMjQ5NTksIDQ0NDEsIDEyNDkyOSwgCisgICAgODI5NjgsIDczOTQwLCA2NDM1MiwgMTI3NTEzLCAxMjEwNjYsIDQxMSwgMTI3NTI1LCA5MTk5LCA5ODMyNzMsIDQwNTYsIAorICAgIDExODk5MiwgNDE4OTAsIDEyODU5MiwgMjczMCwgNDE2MDQsIDEyODM1NSwgNTQyOCwgMTk0NzQzLCAzMzY0LCA0MjI2NSwgCisgICAgNjQ0MzcsIDEyNzkzNSwgMTE4ODE2LCA3MTQ1OCwgOTY4NCwgMjE2LCA3MTM2NywgMTQwMSwgMTI4MDUzLCA0NDAxMiwgCisgICAgOTI2MjgsIDcxNDU2LCA5MjU4NSwgOTE1OCwgNjY4NzgsIDExMTI2LCA1NzY4LCAxMDEwNjQsIDk4Mzc1OSwgMCwgNDg0LCAKKyAgICAxOTQ3MzksIDAsIDAsIDY1ODk1LCAxMjUwNzYsIDEwMDUyNCwgMzMzOCwgNzM5MzUsIDU3MiwgNzA0MSwgMjczNiwgNjc2MDUsIAorICAgIDEyNzU0MywgOTM5NjIsIDI3OTQsIDg4MDcsIDY0NDkxLCA3Nzg0NywgNTQzOCwgNTIyMiwgNTM4MSwgNDMxMTQsIDEyODcwNSwgCisgICAgNTE5MywgNTEyNSwgNTQ1NiwgNTUwOSwgNzc4NDYsIDE5NDc0NywgOTUzNCwgNjY3NjcsIDEyOTA0MCwgMTE5OTY3LCAzNDMwLCAKKyAgICA5ODMzOTcsIDQyOTA1LCA3ODcxNywgNzQ5MjksIDk4MSwgMTI5MTg0LCA0MzMwLCA3MzkyOSwgMTIwNTM2LCAxODI0LCAKKyAgICAxMDkwOCwgMTI2NTA2LCA3MDM0LCA0MTY4MywgNjQ2MTcsIDExOTEzOCwgNzM3NTQsIDM5NTcsIDY0MzU4LCA2NDU0NywgCisgICAgMTI4MjU5LCA2NzQsIDYzOTkxLCA5ODMyNTEsIDI5NDYsIDUzNTQsIDUyNTEsIDUzMjgsIDUzMDcsIDM3NTksIDExNDExLCAKKyAgICA4MzY0LCA1MTIzLCAxMTk2MjgsIDUyODEsIDU0NjksIDUxMjEsIDc3OTg5LCAxMTg5OTMsIDAsIDUxMzAsIDgzMTgwLCAKKyAgICAxMjgzNTcsIDc3OTkwLCAwLCAxMjA3MjYsIDEyMjEsIDI3MzMsIDExNzQ2LCA3Nzk5MSwgNTIxNiwgMTE5MjY4LCAwLCAKKyAgICAxMjg0NzUsIDkyMTg3LCAzNDY4LCA3MDMzLCA5MjMwLCA1OTM5LCAxMjgzOTcsIDEyMDAxMCwgNTgwMywgNzE4NjcsIAorICAgIDY4NDAwLCA3Mjc4LCAxMDMyMSwgMTAyODksIDY0NjEzLCAxMDM4NSwgNDE3MDYsIDAsIDAsIDY3MTE1LCA2Njc1MywgCisgICAgMTE3MzksIDc3OTg2LCA0MTk4MSwgOTI3NDMsIDU5MzgsIDAsIDQzNzY2LCAxMjQ0OCwgNzU3NiwgMTA0MDEsIDEwMzM3LCAKKyAgICA3Mzg1MiwgMTAwNjg0LCAxMzA1NywgOTgzMjc3LCAxMjY5NzYsIDEyOTA4MSwgMTAwMDksIDkxNzkwNSwgNDE3MDMsIAorICAgIDEyMDk1MCwgMTIxNjUsIDEyOTE5MSwgOTgzNzU3LCA5ODg1LCAxOTQ4MTQsIDgwNzcsIDkyNjIwLCAxMjc5MDgsIDEyMTA0NCwgCisgICAgMTk0OTk1LCAwLCA5MjQ1NywgMTI5MTM4LCA0MjIwLCAxMDcyNSwgMTA0MzMsIDAsIDY4Mzk1LCA0OTg3LCA2NDUxOSwgCisgICAgMTIxMjY1LCAxMjUwNzgsIDEyOTE4NSwgMTk0ODEzLCAxMjQ5OTksIDEwOTcwLCAxMTczMywgMCwgMTIwNzkyLCAxMjY0OTAsIAorICAgIDE5OTQ0LCA3NDM1NiwgOTAwOSwgODU1MSwgOTIzNDUsIDExNDY4LCA2NDYzNiwgNzU3NSwgMCwgMjcyNCwgMTAwODg5LCAKKyAgICAxMjczOTAsIDEyMzEzLCAxMTE1MSwgNTE1LCAxMTk5NDcsIDQyNzkxLCA2Mzk4NywgNzgyODYsIDExOTk0MywgMTE5OTQwLCAKKyAgICAxMTk5NDEsIDEwMDg5MCwgOTc3NSwgNDA0NiwgNDU4OSwgNDUyMSwgNjg2MjksIDkxNDEsIDkxNzkwNCwgNzg4NTAsIDI3NDEsIAorICAgIDY0Mzk5LCA2MTk3LCAxMzcwLCA5ODM5NDgsIDEyMDg0MSwgMCwgMTAwODg3LCA5ODM0NDEsIDcxMjczLCA2MTg0LCA4NjA2LCAKKyAgICAzMzAzLCA0MTM3MiwgMTE3ODYsIDk0NzMsIDY2MjAzLCAzNDIyLCA5MjQ0NiwgMTE1OTMsIDQzMDA3LCA0NDc4LCA2NjE3OCwgCisgICAgMCwgMCwgMjc0NCwgMCwgNDQ3NywgNzgyNjcsIDgxNCwgNDIwNjYsIDY2MTgzLCA2NjIwNCwgNDM3ODYsIDExOTk2MSwgCisgICAgNjYxOTgsIDQxODgwLCA2NjE4OCwgMTE2MjMsIDc4MTQ4LCAxMTk1NSwgNjYxOTAsIDY2MTkxLCA0MTExMSwgNjYxODksIAorICAgIDczNzg4LCA3Nzg4LCA0ODQ3LCAxMjgzNjYsIDEyNzc1OSwgNzA3MjUsIDEyODQzMywgMjIyMSwgMTU4MSwgNjUzNSwgCiAgICAgNzgxNjEsIDEyOTU0LCA0MzAsIDc4MTYwLCA1NTI1OSwgNzM5NDQsIDEyODAzNiwgNTI3OCwgNDk0NSwgNDI4ODMsIDQ5NTAsIAogICAgIDk4MzQ0MCwgNjg2MjUsIDk4MzQzOCwgNzI2OSwgMTI4NDk5LCA1OTY0LCAxMjkwOCwgMTI0OTk3LCAwLCA3NDc2NCwgCi0gICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgOTgzNDI5LCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAotICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDAsIDQyMTMsIDAsIDQxMzAzLCA5MTc1NTYsIDE5NDkzMSwgMTE5OTYyLCAKLSAgICA0MTMwNiwgNzM5ODQsIDI2OTgsIDEyNzE1OSwgMCwgMTIwNzIsIDMxOTMsIDAsIDQxMzA0LCA4MjQsIDEyODY3NiwgMTIwOTEsIAotICAgIDY3MTE4LCA3ODg5NCwgMTE5ODE2LCA0NjczLCA2NDgwNCwgNDY3OCwgMTE5ODIwLCAxMTk4MTksIDY1MDU5LCA0Mzg2MCwgCi0gICAgNjczOSwgNjY4NDQsIDU0ODEsIDM0OTAsIDExOTksIDExOTgxMSwgODM1NiwgNjk5NDcsIDY3NzAyLCA0Njc3LCAxMjY4OCwgCi0gICAgMzEwMiwgMCwgNDY3MiwgNzgxNzMsIDc4MTc1LCA1NTMxLCA2ODM2NywgNDI1NzUsIDc4MTcwLCA3ODE2NiwgNDY3NCwgCi0gICAgNDU0OCwgNDQwMDUsIDcxMDg3LCA2ODY1OCwgMTE5OTQ2LCA4MDI1LCA2ODYzMCwgMTI3MDI0LCAxODU1LCAxMjc0NzUsIAotICAgIDY4NjY5LCAxMTg5OTAsIDkyNDQ1LCAxMjc1NTQsIDEyNjYzMCwgMTI3MzM5LCAxMTk2NTIsIDI3NDUsIDExNzk3LCAKLSAgICA5ODM0MTksIDEyODE1OSwgOTIwMiwgNDY1NCwgNjg0MCwgOTgzNDE2LCA2ODYzOCwgNzM5OTMsIDEwNTI1LCA0NjQ5LCAKLSAgICA2NTIwOSwgMTIxNTEyLCAxMjE1MTEsIDQ2NDgsIDQzMDgwLCA3NTA3MCwgMTIxNTA3LCA5ODM0MDYsIDYyNDYsIDY0OTUwLCAKLSAgICA3ODI4LCA0NjUwLCA2Nzc3LCA2Nzc2LCA2Nzc1LCA0NjUzLCA3ODIyLCA3MDI4NywgNzQ2MjQsIDQzMTg3LCA4NjY5LCAKLSAgICAxMjA2NTksIDY4MjEsIDY1MDkzLCA5ODM1NjUsIDc4ODgxLCAyNzE2LCA5ODM0MTIsIDk4MzA2MCwgNzA1MDMsIDE5NDk1MiwgCi0gICAgNjgzNjksIDEyMDA1NCwgMTEwNjAsIDg1NDcsIDI3MTEsIDQyMTY1LCA3ODAyNywgNzgwMjYsIDY4MzYsIDk4MzQyMywgMCwgCi0gICAgNDY2MiwgNzgwMzMsIDc4MDMyLCA5MTQ5LCA5MTQ2LCA1OTksIDIwODEsIDc4MDMxLCA3ODAzMCwgMTk0OTYyLCA0NjU2LCAKLSAgICAxMDEzMCwgNjg0NTAsIDc4MTEsIDQwOTk0LCAxOTQ5NjUsIDY0MTQsIDU5NjcsIDQ2NTgsIDM3MjUsIDU3MTMsIDU4MTQsIAotICAgIDQ2NjEsIDQyNDM0LCA5ODM0MTMsIDEyODczNywgMTExOTAsIDY0OTA0LCA5MDI2LCAxMDgzMywgNzQ4NjQsIDc1NDcsIAotICAgIDQ4NjcsIDExMTAwLCAxMDAwOCwgMTAyMjIsIDMwNTQsIDE5NDk1NiwgOTc0NCwgNzg4NjAsIDc2MDUsIDQ2MjIsIDExOTY1NiwgCi0gICAgNDM4ODgsIDcwMzAzLCA5ODMzOTUsIDY5OTA1LCA2NzE4OCwgOTA0NSwgNzg4ODgsIDQyMjUsIDE5OTI2LCA2ODgzMSwgCi0gICAgMTI4ODAsIDY1MzA3LCA0NjE3LCA2ODc1NywgOTgzMzg4LCA0MTczMiwgNDYxNiwgMTA1MTgsIDEwNDIzLCAxMDM1OSwgCi0gICAgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgMTk1MDI4LCA0MTMxMywgCi0gICAgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIDEyMTA2MCwgMTE5OTQ5LCAKLSAgICAxOTQ5NzUsIDc3MjAsIDczOTAsIDI2OTYsIDk4MzQwMiwgMCwgNDYzOCwgOTgzNDA3LCAxNzkwLCA3ODI0MiwgNTk2NSwgCi0gICAgNjQzNjMsIDY2NTY5LCA2ODY0NiwgNjg0NzcsIDUzNzYsIDE4MzUsIDUzMzUsIDEyMTUwNSwgMTI4MDg5LCA0NjMzLCAwLCAKLSAgICA2ODExOSwgMTE4MCwgNDYzMiwgNjcxOTEsIDUzODcsIDUzMzMsIDAsIDEyNTEzMiwgNDIwOTQsIDUzMzEsIDQ2MzQsIAotICAgIDExOTI4LCA5ODM1OTQsIDUzMzgsIDQ2MzcsIDEyODE3MCwgNTk3MSwgNDI0MTQsIDQzNTAwLCAxMjY4LCA2NTA5NywgCi0gICAgNDIzNjEsIDAsIDAsIDczODUzLCAxNDI3LCAxMjg0NDAsIDAsIDU5NzAsIDM0MzEsIDAsIDEwMzU4LCAxMDQyMiwgNDc1OCwgCi0gICAgOTgzMzc2LCAxNjA4LCAyNzM4LCAxMjUwNjYsIDEwNDU1LCA0NzUzLCA3NDAyNiwgMTEzNDQsIDQyMjIsIDYyNDAsIDUyMzEsIAotICAgIDc0Mzg0LCA2NjYxMSwgNjgzNzcsIDYyNDgsIDk4MzM2NCwgNjc4MTUsIDc4ODc4LCA0MjMxOCwgOTI1ODIsIDUyMjksIAotICAgIDQ3NTcsIDAsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyODkyNiwgCi0gICAgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIAotICAgIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgNjUxMzksIDU1NzcsIDEyODk2NiwgMCwgCi0gICAgMTE4ODcxLCA2ODY0MSwgODk2NSwgNzYzNSwgNDIxNzcsIDUzMTYsIDAsIDUzMTQsIDY0NTEsIDU1NzIsIDY2NDY0LCA1MzEyLCAKLSAgICAwLCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCA5ODM0ODIsIDQzODQzLCAKLSAgICAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIAotICAgIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIAotICAgIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIDAsIDQ2MDksIDQzNDc4LCA0NjE0LCA1NDEsIDk4MzI0MiwgNTI4NywgNTMwOSwgCi0gICAgNTI4NSwgNjgzODksIDU5NjEsIDQ2NDcsIDU2LCA0MjE2LCAxMDU3NywgNDEzODEsIDYwMSwgNDYxMywgMTIwNDc5LCAKLSAgICA5ODMzNDgsIDkyMDgsIDQ2MDgsIDQzOTY2LCA0MTEyNCwgNTE5MCwgNjc2MjgsIDY2ODI2LCA2ODE0NSwgNzA4NiwgMCwgCi0gICAgNjc5OTgsIDY3NjIwLCA5MzA0NywgMjczNCwgMTEwNzQsIDAsIDY3NjI3LCA0MzU5MywgMCwgNjc2MjUsIDU5NjAsIDY3NzIyLCAKLSAgICA4OTkyLCA0MjU5MywgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgCi0gICAgNDI1MDgsIDc0NDIsIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIAotICAgIDAsIDcxMTc4LCA5MTc1NTAsIDkzNDYsIDY5NjYwLCA0MTI1NCwgMTI4MDQ3LCA0MzI5MSwgMzc2NywgNTczNywgMCwgNDg2NSwgCi0gICAgMCwgNTc0MCwgOTE3OTk3LCA1NzM2LCA0MzY4LCA2NDcyNCwgNzE5MywgNjcwOTcsIDEyODg0NCwgNTczOSwgNDEwMjQsIAotICAgIDQ4NjYsIDk4Mzg4MCwgNzM5MDQsIDEyMTQyMCwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgNjY1MCwgCi0gICAgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKLSAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA4MzE5MywgNjI0NSwgNjg2NTIsIAotICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxOTUwOTcsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjkxMzYsIDY4NjMxLCA0Mjc3NSwgCisgICAgNDM1MTIsIDExOTE0NiwgMTk0OTM2LCA0OTQ5LCA5ODM0MzEsIDQ0MywgMTIyOTAyLCA0OTQ0LCA1NDY3LCAxMTk2MDMsIAorICAgIDcwODY1LCA2NTEzNywgNjA0NCwgNjUzOTIsIDk4MzExOSwgNDIxMywgMCwgNDEzMDMsIDkxNzU1NiwgMTk0OTMxLCAKKyAgICAxMTk5NjIsIDQxMzA2LCA3Mzk4NCwgMjY5OCwgMTI3MTU5LCAwLCAxMjA3MiwgMzE5MywgMCwgNDEzMDQsIDgyNCwgCisgICAgMTI4Njc2LCAxMjA5MSwgNjcxMTgsIDc4ODk0LCAxMTk4MTYsIDQ2NzMsIDY0ODA0LCA0Njc4LCAxMTk4MjAsIDExOTgxOSwgCisgICAgNjUwNTksIDQzODYwLCA2NzM5LCA2Njg0NCwgNTQ4MSwgMzQ5MCwgMTE5OSwgMTE5ODExLCA4MzU2LCA2OTk0NywgNjc3MDIsIAorICAgIDQ2NzcsIDEyNjg4LCAzMTAyLCAwLCA0NjcyLCA3ODE3MywgNzgxNzUsIDU1MzEsIDY4MzY3LCA0MjU3NSwgNzgxNzAsIAorICAgIDc4MTY2LCA0Njc0LCA0NTQ4LCA0NDAwNSwgNzEwODcsIDY4NjU4LCAxMTk5NDYsIDgwMjUsIDY4NjMwLCAxMjcwMjQsIAorICAgIDE4NTUsIDEyNzQ3NSwgNjg2NjksIDExODk5MCwgOTI0NDUsIDEyNzU1NCwgMTI2NjMwLCAxMjczMzksIDExOTY1MiwgMjc0NSwgCisgICAgMTE3OTcsIDk4MzQxOSwgMTI4MTU5LCA5MjAyLCA0NjU0LCA2ODQwLCAxMjI5MDksIDY4NjM4LCA3Mzk5MywgMTA1MjUsIAorICAgIDQ2NDksIDY1MjA5LCAxMjE1MTIsIDEyMDI0NSwgNDY0OCwgNDMwODAsIDc1MDcwLCAxMjE1MDcsIDk4MzQwNiwgNjI0NiwgCisgICAgNjQ5NTAsIDc4MjgsIDQ2NTAsIDY3NzcsIDY3NzYsIDY3NzUsIDQ2NTMsIDc4MjIsIDcwMjg3LCA3NDYyNCwgNDMxODcsIAorICAgIDg2NjksIDEyMDY1OSwgNjgyMSwgNjUwOTMsIDk4MzU2NSwgNzg4ODEsIDI3MTYsIDk4MzQxMiwgOTgzMDYwLCA2Njc1NiwgCisgICAgMTk0OTUyLCA2ODM2OSwgMTIwMDU0LCAxMTA2MCwgODU0NywgMjcxMSwgNDIxNjUsIDc4MDI3LCA3ODAyNiwgNjgzNiwgCisgICAgOTgzNDIzLCA5ODM0MjEsIDQ2NjIsIDc4MDMzLCA3ODAzMiwgOTE0OSwgOTE0NiwgNTk5LCAyMDgxLCA3ODAzMSwgNzgwMzAsIAorICAgIDE5NDk2MiwgNDY1NiwgMTAxMzAsIDY4NDUwLCA3ODExLCA0MDk5NCwgMTk0NzAyLCA2NDE0LCA1OTY3LCA0NjU4LCAzNzI1LCAKKyAgICA1NzEzLCA1ODE0LCA0NjYxLCA0MjQzNCwgOTgzNDEzLCAxMTg5OTcsIDExMTkwLCA2NDkwNCwgOTAyNiwgMTA4MzMsIAorICAgIDc0ODY0LCA3NTQ3LCA0ODY3LCAxMTEwMCwgMTAwMDgsIDEwMjIyLCAzMDU0LCAxOTQ5NTYsIDk3NDQsIDc4ODYwLCA3NjA1LCAKKyAgICA0NjIyLCAxMTk2NTYsIDQzODg4LCA3MDMwMywgOTgzMzk1LCA2OTkwNSwgNjcxODgsIDkwNDUsIDc4ODg4LCA0MjI1LCAKKyAgICAxOTkyNiwgNjg4MzEsIDEyODgwLCA2NTMwNywgNDYxNywgNjg3NTcsIDc4MDA4LCA0MTczMiwgNDYxNiwgMTA1MTgsIAorICAgIDEwNDIzLCAxMDM1OSwgOTgzMzgyLCA1OTU4LCAwLCA5ODM0MzUsIDQyMTUsIDk3ODksIDExOTYxOSwgNDMyMSwgNDYyMSwgCisgICAgMTk1MDI4LCA0MTMxMywgNTIyLCA1MzY4LCAxMTEzOSwgNjU4MDMsIDEyODU0NiwgNTM2NiwgMTIyMDEsIDUzNzIsIAorICAgIDEyMTA2MCwgMTE5OTQ4LCAxMjcwNjQsIDc3MjAsIDczOTAsIDI2OTYsIDExOTY1NywgOTgzMTE1LCA0NjM4LCA5ODM0MDcsIAorICAgIDE3OTAsIDc4MjQyLCA1OTY1LCA2NDM2MywgNjY1NjksIDY4NjQ2LCA2ODQ3NywgNTM3NiwgMTgzNSwgNTMzNSwgMTIxNTA1LCAKKyAgICAxMjgwODksIDQ2MzMsIDk4MzQxOCwgNjgxMTksIDExODAsIDQ2MzIsIDY3MTkxLCA1Mzg3LCA1MzMzLCAwLCAxMjUxMzIsIAorICAgIDQyMDk0LCA1MzMxLCA0NjM0LCAxMTkyOCwgMTAwOTUyLCA1MzM4LCA0NjM3LCAxMjEwNzAsIDU5NzEsIDQyNDE0LCA0MzUwMCwgCisgICAgMTI2OCwgNjUwOTcsIDQyMzYxLCAxMjg1MTAsIDkxNzYwNSwgNzM4NTMsIDE0MjcsIDEyODQ0MCwgMCwgNTk3MCwgMzQzMSwgCisgICAgOTgzNDE3LCAxMDM1OCwgMTA0MjIsIDQ3NTgsIDk4MzM3NiwgMTYwOCwgMjczOCwgMTI1MDY2LCAxMDQ1NSwgNDc1MywgCisgICAgNzQwMjYsIDExMzQ0LCA0MjIyLCA2MjQwLCA1MjMxLCA3NDM4NCwgNjY2MTEsIDY4Mzc3LCA2MjQ4LCA5ODMzNjQsIDY3ODE1LCAKKyAgICA3ODg3OCwgNDIzMTgsIDkyNTgyLCA1MjI5LCA0NzU3LCAxMjUyMTUsIDEyNjU3NiwgMjcyOCwgNDc1MiwgNjQ1NjMsIAorICAgIDY1MjM1LCA1MjM0LCAwLCAxMjgxNDUsIDEyNzQ4NywgMTA3MTMsIDcxNjYsIDAsIDI2MjIsIDc0NjAsIDgzMTI0LCA2NzEwMSwgCisgICAgMTI2NDk1LCA4OTU0LCA3NDc2MCwgNjUxODksIDI2MzIsIDQyNjE3LCAxMDEwOCwgMTAxMSwgNTU3NCwgMTg1MywgMjcwOSwgCisgICAgNjUxMzksIDU1NzcsIDEyODk2NiwgOTgzMDg4LCAxMTg4NzEsIDY4NjQxLCA4OTY1LCA3NjM1LCA0MjE3NywgNTMxNiwgCisgICAgOTE3ODc3LCA1MzE0LCA2NDUxLCA1NTcyLCA2NjQ2NCwgNTMxMiwgMTI3MDA2LCA1NTI1LCA1MzMwLCA1MzE5LCA2ODI5MiwgCisgICAgMTI3MzExLCA2NTA2NiwgNDQwMDMsIDY4NDM3LCAxMjcyOTksIDQzODQzLCAxMjA0OTgsIDEyNzg1MSwgNDM5MTgsIDc0ODUxLCAKKyAgICA3NDAyMiwgOTgzNDI0LCA2NDYwOSwgNjg2NDMsIDY3NDEwLCAxMjg1OTMsIDU3MjEsIDc0ODkyLCA1NTE5LCA4NjMyLCAKKyAgICA2NjQ2NSwgMTEyNjcsIDczOTYxLCA5MjI3OCwgNTcyMCwgNzg3NzgsIDE2OTIsIDQyMTksIDQ2MTAsIDg2OTYsIDQzMDUsIAorICAgIDc1MDUyLCA0NjA5LCA0MzQ3OCwgNDYxNCwgNTQxLCA5ODMyNDIsIDUyODcsIDUzMDksIDUyODUsIDY4Mzg5LCA1OTYxLCAKKyAgICA0NjQ3LCA1NiwgNDIxNiwgMTA1NzcsIDQxMzgxLCA2MDEsIDQ2MTMsIDEyMDQ3OSwgOTgzMzQ4LCA5MjA4LCA0NjA4LCAKKyAgICA0Mzk2NiwgNDExMjQsIDUxOTAsIDY3NjI4LCA2NjgyNiwgNjgxNDUsIDcwODYsIDIyNjUsIDY3OTk4LCA2NzYyMCwgOTMwNDcsIAorICAgIDI3MzQsIDExMDc0LCAwLCA2NzYyNywgNDM1OTMsIDEyODc1OCwgNjc2MjUsIDU5NjAsIDY3NzIyLCA4OTkyLCA0MjU5MywgCisgICAgMTI4MjYwLCAxNzgyLCA2NzYyMiwgNjgxMTQsIDExOTkzOSwgMCwgNjgxODAsIDU1MDEsIDExOTk1MiwgNDI1MDgsIDc0NDIsIAorICAgIDQzNjY1LCAzNTksIDQxMjUzLCA2ODM5MiwgNjIzOSwgNDM5MDAsIDQxMjU2LCA3NDEzMiwgNjc3NDAsIDEyOTMwOSwgCisgICAgNzExNzgsIDkxNzU1MCwgOTM0NiwgNjk2NjAsIDQxMjU0LCAxMjgwNDcsIDQzMjkxLCAzNzY3LCA1NzM3LCA5MTc4OTYsIAorICAgIDQ4NjUsIDAsIDU3NDAsIDkxNzk5NywgNTczNiwgNDM2OCwgNjQ3MjQsIDcxOTMsIDY3MDk3LCAxMjg4NDQsIDU3MzksIAorICAgIDQxMDI0LCA0ODY2LCA5ODM4NTUsIDczOTA0LCA3MDcyNiwgNDg2OSwgMTIwNTYzLCAxMjkxNzIsIDQyMjMsIDEyODIwMSwgCisgICAgNjY1MCwgMTI2NTA5LCAwLCAxMjAyMTIsIDExOTg3MiwgNDg3MCwgMTIwNDQ1LCA2ODY2MSwgNjcxNiwgNzgxNzYsIDY4NjY3LCAKKyAgICA2ODM4MiwgNjg2NzYsIDEyNzkyNSwgMTAxMjIsIDQ4NjQsIDY2NTY4LCA0MTQ0LCA3OTM3LCA3MjgyMSwgNjI0NSwgNjg2NTIsIAorICAgIDI3MzIsIDQyNzM0LCA3NDUsIDY4MDQ1LCAxMjg5MzMsIDkyMTk1LCA0Nzc3LCA3ODIxLCAxMjg4NzAsIDY4NjMxLCA0Mjc3NSwgCiAgICAgMTk0NjYxLCAxMjg0NDUsIDEyMDY3OSwgMzA5NywgMTIwOTA4LCA1OTY2LCAxMjExOTcsIDQ3NzgsIDEyNjQ2OSwgMTA4NjMsIAogICAgIDEyNzUwNiwgNDc4MSwgOTI5ODYsIDY0NDA3LCAxMjg1MDMsIDEyODMyMywgODU3NywgNzEyMjEsIDY4MTk2LCA0MzI4NSwgCi0gICAgMTAyMTYsIDQ3ODIsIDk4MzQ4NSwgOTgzNDExLCAxMjA3NTcsIDY4NjE4LCAxMjMyNSwgNDMwNTYsIDg3MTcsIDAsIDAsIAotICAgIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAorICAgIDEwMjE2LCA0NzgyLCA5ODM0ODUsIDk4MzQxMSwgMTIwNzU3LCA2ODYxOCwgMTIzMjUsIDQzMDU2LCA4NzE3LCAxMjcxMTgsIAorICAgIDAsIDQ3NzYsIDczODE4LCAxMTQ5MiwgODcwMCwgMTI5MTI4LCAxMzE3NiwgNjgzNjMsIDEwNDI2LCA2NzI0NywgNzEwOTEsIAogICAgIDEwMzYyLCAxOTQ3MDYsIDE3MTUsIDQ4NDksIDgyNDIsIDk1NjEsIDczOTIyLCA0MzI3OCwgNDI2MzUsIDAsIDEyNzIwNywgCi0gICAgNTk2MywgOTE3OTI2LCA5ODM0ODMsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCisgICAgNTk2MywgMTIwNzg2LCAxMjUyMDEsIDAsIDQ4NTAsIDczOTAwLCAxNjA3LCA0NjYsIDQ4NTMsIDExODk5NSwgNDg1NCwgCiAgICAgMTI3OTE4LCA1MTY0LCA3MzgwNywgMTM1MCwgNTEyNCwgNjQ0MjAsIDE5OTMsIDUzNjIsIDg0NzEsIDI3MDgsIDkyNDcxLCAKLSAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgMCwgCi0gICAgNzM3NjIsIDEwNDU4LCA5ODM0MTcsIDg1NzYsIDc4NTQzLCAwLCAyNzA0LCA0Nzk0LCAxMjExMDIsIDY4MjExLCA4MzIyLCAKLSAgICA0Nzk3LCA1NzUzLCAwLCAyNjk0LCA0NzkyLCAwLCAyNDM5LCA2NTEwNCwgNjk4MDQsIDk4MzQyNiwgMzAzLCA3NDYyNSwgCi0gICAgNjgyMjksIDk4MzQyNywgMjQzNywgNzg2NTksIDQyMjEsIDQ4NDQsIDkyMjE2LCAwLCAwLCAwLCA3MDA0MiwgNzQwOTUsIAotICAgIDQzMjkyLCAwLCAyNDQxLCAxMDczOSwgNjUwOTAsIDE5NDYyMiwgNzA0MzYsIDExODkyOSwgMjQ1MSwgMjcxNCwgMTE5MzI2LCAKLSAgICAwLCA0MzM3OSwgNDkzNywgNDMzNzYsIDc1MywgNTg0OSwgMTA1OTcsIDQzMDg5LCAxMTcyMiwgOTI0OCwgOTI1NTUsIAotICAgIDQyODc5LCAxMTcyNSwgOTE3OTY5LCAwLCAyNzI2LCAzMTA3LCA3Mzk1OCwgNDk0MSwgNjQ5MzcsIDExOTIzMywgOTE0MCwgCi0gICAgMTQwOCwgNTI2MSwgNDYwNywgMTk0NzE1LCAxODEsIDk4MzQzMiwgNDk0MiwgOTUzOSwgNDkzOCwgMCwgNjUyMDEsIDUyNTksIAotICAgIDkzNjksIDY0MTg1LCA0MTQyLCA1MjU3LCA5ODM2MDEsIDY4NDQsIDQ5NjQsIDUyNjQsIDY0MTc4LCA2NDE3NywgMTI5NzksIAotICAgIDQxNDExLCA2NDE4MiwgNjQxODEsIDY0MTgwLCA2NDE3OSwgOTQ4MiwgNDg3MywgNDEyMzEsIDE4MjIsIDQyNTI2LCAKLSAgICAxMjc5ODksIDEyNzU4LCAzODY1LCAxOTQ2NjAsIDEyMTEyOSwgMTA1MDAsIDAsIDExOTAyNCwgNzgwMjgsIDkyNDA4LCAKLSAgICA5ODMwLCA0MzY0MiwgMzg5LCAxMDg5MywgNzUyMSwgMTI3ODc5LCA0ODcyLCA1NDYzLCAxMjgxMTksIDMxMjUsIDk1NjcsIDAsIAotICAgIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIDExNDk0LCAxMjY0OTIsIDk1NjMsIAotICAgIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCA2NDE5MCwgODg5OCwgNjQxODgsIAotICAgIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIDc4ODA1LCA0MTAzMSwgCi0gICAgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCA5ODMyNjksIDc4NTM5LCA3MzkxOSwgMTA1NzMsIDQxNzQ0LCA3MDc5LCA1ODU2LCAKLSAgICA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAxMTkwMTAsIDEwNTY0LCA3NzYzLCAKLSAgICAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIAotICAgIDc3OTc5LCAwLCA0NTQxLCA2Mjk5LCA2NDIwNCwgNjQyMDMsIDY0MjAxLCA2NDIwMCwgNjQxOTksIDY0MTk4LCAxMjY0NzEsIAotICAgIDQyMTU2LCA3ODY4OCwgMCwgNjQxOTMsIDY0MTkyLCA2NTIyMywgOTk0MywgNjQxOTcsIDY0MTk2LCA2NDE5NSwgNjQxOTQsIAotICAgIDEyMjMxLCA0MjY1MiwgNjQxNzQsIDY0MTczLCA3ODE4OSwgODQ2LCA3ODE4NiwgOTk2NSwgNzQ0OTUsIDgzNDkyLCA4MzQ5MywgCi0gICAgODM0OTQsIDI1NDMsIDEyMTYzLCAzMTA4LCA5NzQ1LCA2NDE2NywgNjQxNjYsIDY0MTY1LCA2NDE2NCwgMjExMCwgOTIxNzYsIAotICAgIDY0MTY5LCA2NDE2OCwgNjQ5NDksIDEwOTcyLCAxMDI1MSwgMTAyNDcsIDQyNzY4LCA3MTUsIDIyOTUsIDQzMjk5LCA5NDUzLCAKLSAgICA1MzQ4LCAxMDk0MywgNjYzOTAsIDAsIDExMzUyLCA1NTAsIDk5MTAsIDEyNTEyNywgMCwgNjY1NzksIDExNTUxLCAxMjg0NjQsIAotICAgIDE5NTA4MCwgOTUwNCwgNzE4NywgODI5NTcsIDEwMzczLCA5ODM0MTgsIDEyMDM3NSwgMTAyNjEsIDEwMjUzLCA2NDA0LCAKLSAgICAxMDI3NywgNzgxODMsIDExOTg0LCAxNTUyLCA2NTIyMiwgNjk5OCwgNzgxODAsIDcxNDI5LCAzMTI4LCA0Nzg5LCA1MDY3LCAKLSAgICA1MDY2LCAxMTg4NDksIDQ3ODQsIDAsIDg4MjcsIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCAKLSAgICA0MzQxMiwgNTA2NCwgMjQzMSwgMCwgOTQ1MCwgMTgwOSwgMCwgNzgyMDAsIDc4MjAxLCA1MDYyLCAxMjY0LCA2NDgxNywgCi0gICAgMTMyNTQsIDExNjk3LCAxMjY1OTgsIDk3ODUsIDY0NzE2LCAwLCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMCwgMTI1MDIzLCAKLSAgICA0MjYwOSwgMTE5ODU1LCA3NDE3NSwgNjY5MTIsIDEyNzAxNiwgMCwgMTIxMzAwLCA0MjEzMCwgMTIxMDQ2LCA1MTUxLCAKLSAgICAxMjEzNDYsIDgzNDg4LCAwLCA5Mzk4MCwgOTE3ODAyLCA3NjIwLCAzODAwLCA2NTEyMiwgODM0ODcsIDgzNDgwLCA4MzU1LCAKKyAgICAxMjQ0NSwgMzc4NSwgMjM0LCAzMTk5LCAxMjEyNzMsIDQxMjY4LCA0ODQ4LCAyNTMwLCA3NDk0MSwgMjA2OCwgMTk2NCwgCisgICAgMTI4MjE3LCA3Mzc2MiwgMTA0NTgsIDEyODEyNSwgODU3NiwgNzg1NDMsIDAsIDI3MDQsIDQ3OTQsIDEyMTEwMiwgNjgyMTEsIAorICAgIDgzMjIsIDQ3OTcsIDU3NTMsIDAsIDI2OTQsIDQ3OTIsIDEyODE2MywgMjQzOSwgNjUxMDQsIDY5ODA0LCA5ODM0MjYsIDMwMywgCisgICAgNzQ2MjUsIDY4MjI5LCA5ODM0MjAsIDI0MzcsIDc4NjU5LCA0MjIxLCA0ODQ0LCA5MjIxNiwgOTgzODA1LCAwLCAwLCAKKyAgICA3MDA0MiwgNzQwOTUsIDQzMjkyLCA5ODM2NTYsIDI0NDEsIDEwNzM5LCA2NTA5MCwgMTk0NjIyLCA3MDQzNiwgMTE4OTI5LCAKKyAgICAyNDUxLCAyNzE0LCAxMTkzMjYsIDAsIDQzMzc5LCA0OTM3LCA0MzM3NiwgNzUzLCA1ODQ5LCAxMDU5NywgNDMwODksIAorICAgIDExNzIyLCA5MjQ4LCA5MjU1NSwgNDI4NzksIDExNzI1LCAxMjA2ODcsIDAsIDI3MjYsIDMxMDcsIDczOTU4LCA0OTQxLCAKKyAgICA2NDkzNywgMTE5MjMzLCA5MTQwLCAxNDA4LCA1MjYxLCA0NjA3LCAxMjkzNTMsIDE4MSwgOTgzNDMyLCA0OTQyLCA5NTM5LCAKKyAgICA0OTM4LCAwLCA2NTIwMSwgNTI1OSwgOTM2OSwgNjQxODUsIDQxNDIsIDUyNTcsIDk4MzYwMSwgNjg0NCwgNDk2NCwgNTI2NCwgCisgICAgNjQxNzgsIDY0MTc3LCAxMjk3OSwgNDE0MTEsIDY0MTgyLCA2NDE4MSwgNjQxODAsIDY0MTc5LCA5NDgyLCA0ODczLCAKKyAgICA0MTIzMSwgMTgyMiwgNDI1MjYsIDkyMzQ0LCAxMjc1OCwgMzg2NSwgMTIyOTE4LCAxMjExMjksIDEwNTAwLCAwLCAxMTkwMjQsIAorICAgIDc4MDI4LCA3ODAwMywgOTgzMCwgNDM2NDIsIDM4OSwgMTA4OTMsIDc1MjEsIDEyNzg3OSwgNDg3MiwgNTQ2MywgMTI4MTE5LCAKKyAgICAzMTI1LCA5NTY3LCA5ODMyOTEsIDQ4NzgsIDU0NTksIDQ2MDQsIDExOTY1MCwgOTU1NywgNTQ2NSwgNjg2MTcsIDAsIAorICAgIDExNDk0LCAxMjY0OTIsIDk1NjMsIDEwODY1LCA3NDU3MCwgNDMyNzksIDY0MTg2LCA2ODUyMSwgNzg3MTQsIDY0MTkxLCAKKyAgICA2NDE5MCwgODg5OCwgNjQxODgsIDEyOTE1MywgNDEwMzAsIDc0MjI2LCA3ODcxMywgNzQ2MDAsIDc0OTk0LCA5MTc4MzQsIDAsIAorICAgIDc4ODA1LCA0MTAzMSwgNzg4MDEsIDExOTYwLCA2NzQ1LCAzMDgyLCAxMjY1ODEsIDc4NTM5LCA3MzkxOSwgMTA1NzMsIAorICAgIDQxNzQ0LCA3MDc5LCA1ODU2LCA2NzgzOCwgNTE2MywgNzg4MDksIDEyODE2MiwgMTgxNywgNjY3MjQsIDc4NTM4LCAKKyAgICAxMTkwMTAsIDEwNTY0LCA3NzYzLCAxMzA3NywgNDE4MTMsIDQ0MDAsIDQxNzQ1LCA2NDIwNywgMTAyNzUsIDg5MjUsIAorICAgIDEwMzcxLCAxMDMwNywgNDE4MTQsIDQyNDgsIDc3OTc5LCA3MjgwMiwgNDU0MSwgNjI5OSwgNjQyMDQsIDY0MjAzLCA2NDIwMSwgCisgICAgNjQyMDAsIDY0MTk5LCA2NDE5OCwgMTI2NDcxLCA0MjE1NiwgNzg2ODgsIDAsIDY0MTkzLCA2NDE5MiwgNjUyMjMsIDk5NDMsIAorICAgIDY0MTk3LCA2NDE5NiwgNjQxOTUsIDY0MTk0LCAxMjIzMSwgNDI2NTIsIDY0MTc0LCA2NDE3MywgNzgxODksIDg0NiwgCisgICAgNzgxODYsIDk5NjUsIDc0NDk1LCA4MzQ5MiwgODM0OTMsIDgzNDk0LCAyNTQzLCAxMjE2MywgMzEwOCwgOTc0NSwgNjQxNjcsIAorICAgIDY0MTY2LCA2NDE2NSwgNjQxNjQsIDIxMTAsIDkyMTc2LCA2NDE2OSwgNjQxNjgsIDY0OTQ5LCAxMDk3MiwgMTAyNTEsIAorICAgIDEwMjQ3LCA0Mjc2OCwgNzE1LCAyMjk1LCA0MzI5OSwgOTQ1MywgNTM0OCwgMTA5NDMsIDY2MzkwLCAwLCAxMTM1MiwgNTUwLCAKKyAgICA5OTEwLCAxMjUxMjcsIDAsIDY2NTc5LCAxMTU1MSwgMTI4NDY0LCAxOTUwODAsIDk1MDQsIDcxODcsIDgyOTU3LCAxMDM3MywgCisgICAgOTgzMTUzLCAxMjAzNzUsIDEwMjYxLCAxMDI1MywgNjQwNCwgMTAyNzcsIDc4MTgzLCAxMTk4NCwgMTU1MiwgNjUyMjIsIAorICAgIDY5OTgsIDc4MTgwLCA3MTQyOSwgMzEyOCwgNDc4OSwgNTA2NywgNTA2NiwgMTE4ODQ5LCA0Nzg0LCAxMjgzOTQsIDg4MjcsIAorICAgIDExNDYsIDUwNjUsIDY5ODkwLCA3ODE5MiwgNjgxMzYsIDc4MTkwLCA0MzQxMiwgNTA2NCwgMjQzMSwgMTk0OTI2LCA5NDUwLCAKKyAgICAxODA5LCA5ODM1ODgsIDc4MjAwLCA3ODIwMSwgNTA2MiwgMTI2NCwgNjQ4MTcsIDEzMjU0LCAxMTY5NywgMTI2NTk4LCAKKyAgICA5Nzg1LCA2NDcxNiwgMTI4Mjc5LCAzOTMzLCA3NDU1OSwgNDc0MCwgNzk1NCwgMTI4NzM5LCAxMDExMDAsIDQyNjA5LCAKKyAgICAxMTk4NTUsIDc0MTc1LCA2NjkxMiwgMTI3MDE2LCAwLCAxMjEzMDAsIDQyMTMwLCAxMjEwNDYsIDUxNTEsIDEyMTM0NiwgCisgICAgNzA3NDMsIDk4MzcxNSwgOTM5ODAsIDkxNzgwMiwgNzYyMCwgMzgwMCwgNjUxMjIsIDgzNDg3LCA4MzQ4MCwgODM1NSwgCiAgICAgNzg1NCwgODM0ODMsIDk1NCwgNjQ5MjcsIDQxODUsIDQxMDQ1LCAxMjcxNDEsIDQxNDM4LCA0MTQzOSwgNjg2NjYsIDEwNzExLCAKLSAgICA0NTkzLCA4Mjk5MywgMTIwNTg0LCA5ODM0MTAsIDY0Nzc0LCA4MDUzLCAxMDUzMiwgNjY3MjcsIDk4MzQxNCwgMCwgNzg2NDIsIAotICAgIDY0NzU5LCAxMzI1LCA1MTY2LCA5ODg4LCAxMjc4MDAsIDUxNDgsIDQyODM0LCAwLCA3ODIwNSwgNzgyMDYsIDQzNzg3LCAKLSAgICA3ODIwNCwgNDM5MTMsIDMxMTksIDkxNzgxNCwgMCwgMzA2MCwgNjQxMzUsIDk5ODYsIDc0OTk2LCA3Nzg3NiwgNjM2LCAKLSAgICAxMTY5OCwgODM0NzYsIDgyOTYxLCA5OTE2LCAxMTcwMSwgNzgzNiwgNDI3NDEsIDY0MTM3LCA4MzIwLCA3ODY0MCwgODg2MywgCi0gICAgNzAyMDEsIDExOTk2MCwgMTQ3NywgNDMyODksIDY4NDkyLCA2NzE2NCwgODYxOCwgOTgzNDA0LCA5OTA4LCA3NDk3MiwgMCwgCi0gICAgMCwgMzkzNywgMTIzMTIsIDAsIDk4MzQwNSwgMCwgNjQ3ODEsIDkxMiwgNjM0OSwgNDUzNiwgOTM5NTQsIDc0NTMyLCAKLSAgICAxMjY1OTQsIDYyNDQsIDkyMjA5LCA3MTM0MSwgMzkzNSwgMTIwNjY1LCAxMjg5NjksIDAsIDExOTUwLCA1MzkyLCA0MjI0OCwgCi0gICAgNjUxMjksIDY4NjU2LCA1Mzk3LCAxMjgzMTAsIDEyMDQ2LCAxMjU5OSwgNjc0MDcsIDEyODI2MSwgNTM5NSwgMCwgNTM5MywgCi0gICAgMzU0LCA2ODYxNSwgNzc4NTMsIDc0MzY2LCAxMjE0MDQsIDAsIDQyMDM5LCAxMTM4MTcsIDAsIDY0MTQyLCA2MjYsIDAsIAotICAgIDU4OTUsIDAsIDQzOTEwLCA1NzgwLCAwLCAxMDIyMCwgMTIxMzM3LCA0MzkwNywgNzExMjEsIDQzMjk3LCA3MDE4OCwgNDMxMSwgCi0gICAgNDY0NCwgODgxOCwgNzgxNTgsIDEyODE4NiwgMTI4ODY5LCA3MTQ1LCAzOTE4LCA2NjQ1MiwgMzc5NywgMTY0NCwgOTIzNDYsIAotICAgIDk2NTgsIDQxNDAsIDExMzg1LCA2NTk0NywgNjQ1NSwgOTAzMCwgODEzLCAxMTk5NDUsIDY4MTMxLCA0MTQ2LCAxMTk5NTcsIAotICAgIDUzNjAsIDI0NjYsIDAsIDY3NjY5LCA5NDAyMCwgNjI0OSwgNDIxMTcsIDY4ODI4LCA5MjIwNiwgMTI4MDIzLCAxMTkyNTUsIAotICAgIDc0MDQ2LCA0Mzc0NSwgNDkxMSwgOTg4LCA3MTE4MCwgMCwgOTgzNDcwLCA0MzA2MSwgNzA1NCwgNjQxNDcsIDk4Mzg0NywgCi0gICAgNjQ5MjAsIDY4MTk1LCA2Njk4LCAxMTg5MzMsIDkyNTA2LCAwLCA3MDg0OSwgMTE5ODEsIDEyMjAyLCAxOTUwODcsIDExMDMyLCAKLSAgICA2NzY1NCwgNjA5MywgMTE2MDgsIDk3NSwgNjY0MTUsIDY1ODQzLCAxNzAsIDAsIDY3MjM5LCA0MTY5LCAwLCA0MTg1OSwgCi0gICAgNjA1OCwgMTIwNDAxLCAxMzIwMywgMTIwNjU3LCA3MDUwNywgMTI1MDkxLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCAKLSAgICA0MjEwNiwgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjcxMjAsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgCi0gICAgNjg3NTgsIDY4MzQyLCA4MzQyMCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCAKLSAgICA1MzAwLCA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgCi0gICAgNDMyODgsIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgCi0gICAgNzg3NiwgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAKLSAgICAxMjA1MywgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMCwgNDE3MSwgMTIwMDgsIDYyNTEsIDM5MjMsIDE0OTAsIDgzNDExLCAKLSAgICA4MzQxMiwgMTI2NTEyLCA0MDk3MiwgNTI0NSwgNzA3OTQsIDEwMTE0LCA0MjAwMSwgNDE4ODgsIDQ4NDUsIDgzMzIsIAotICAgIDQwOTc0LCA2NDM0NywgNDg0MCwgOTA3NywgNzgzNDYsIDE3NDcsIDkxNzg0OSwgNDgyNSwgNjkyNDAsIDEyMTQ0MywgCi0gICAgNjg2NTUsIDAsIDk4MzM5MCwgMCwgMCwgNjg2MjgsIDk4MzM0OSwgOTg1MCwgMTE4OTM3LCAzNjcsIDE0NzIsIDkxNzg1OSwgCi0gICAgNjY4NywgMTI3NCwgMTk1MDIyLCA1OTA1LCAxMjMzOSwgODkxOSwgNzM5NTMsIDEwOTA3LCA2NTI2MSwgMTEwMjMsIAotICAgIDExOTU1OSwgNDgzMCwgOTEzNCwgNzg2NjYsIDY0MTI2LCA0MzAxMSwgODMyOTcsIDc4NjY5LCA2NDEwMSwgMCwgMTI4NDM0LCAKLSAgICA0ODI0LCAxMDYxNCwgMTE5NjU5LCAxMjY5OTMsIDE4ODgsIDE5NjAsIDc4NjEsIDgzNDE2LCA3ODUyNCwgNDE4MzYsIAotICAgIDQzMDEyLCA2MDUyLCA2MDY0LCA1NCwgNDMwMDksIDEyMjE0LCA4MzI2MCwgNjIxMSwgMTIwMzg2LCAzNTgsIDQxOTk3LCAKLSAgICA0MTgzMywgMTE0NDIsIDEwNzU4LCA2NTc3NCwgMTEzODIzLCAxMjAzODQsIDY0MTE1LCA5MjIyMSwgNzAwMTgsIDk4MzYxMSwgCi0gICAgOTgzNzA4LCAxMTkwNTMsIDAsIDEyNzY1LCA2NDExOCwgMTI2OTk4LCAxMjk2MiwgMCwgMTI2NTgwLCA0MDE3LCAxMjgyNywgCi0gICAgNTI0MSwgMTIwMzkyLCAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAorICAgIDQ1OTMsIDgyOTkzLCAxMjA1ODQsIDEyODY2OSwgNjQ3NzQsIDgwNTMsIDEwNTMyLCA2NjcyNywgMTI3NTA1LCA5ODM1OTQsIAorICAgIDY2Nzk1LCA2NDc1OSwgMTMyNSwgNTE2NiwgOTg4OCwgMTI3ODAwLCA1MTQ4LCA0MjgzNCwgMCwgNzgyMDUsIDc4MjA2LCAKKyAgICA0Mzc4NywgNzgyMDQsIDQzOTEzLCAzMTE5LCAxMjcyNTcsIDAsIDMwNjAsIDY0MTM1LCA5OTg2LCA3NDk5NiwgNzc4NzYsIAorICAgIDYzNiwgMTE2OTgsIDgzNDc2LCA4Mjk2MSwgOTkxNiwgMTE3MDEsIDc4MzYsIDQyNzQxLCA2NDEzNywgODMyMCwgNzg2NDAsIAorICAgIDg4NjMsIDcwMjAxLCAxMTk5NjAsIDE0NzcsIDQzMjg5LCA2ODQ5MiwgNjcxNjQsIDg2MTgsIDk4MzQwNCwgOTkwOCwgCisgICAgNzQ5NzIsIDAsIDExOTE0NywgMzQxNCwgMTIzMTIsIDEyMDgzMiwgMTIwNzI3LCAxMjEyNjQsIDY0NzgxLCA5MTIsIDYzNDksIAorICAgIDQ1MzYsIDkzOTU0LCA3NDUzMiwgMTI2NTk0LCA2MjQ0LCA5MjIwOSwgNzEzNDEsIDM5MzUsIDEyMDY2NSwgMTI4MzE2LCAwLCAKKyAgICAxMTk1MCwgNTM5MiwgNDIyNDgsIDY1MTI5LCA2ODY1NiwgNTM5NywgMTI4MzEwLCAxMjA0NiwgMTI1OTksIDY3NDA3LCAKKyAgICAxMjY1NDIsIDUzOTUsIDcyODcwLCA1MzkzLCAzNTQsIDY4NjE1LCA3Nzg1MywgNzQzNjYsIDEyMTQwNCwgMTIxMjY2LCAKKyAgICA0MjAzOSwgMTEzODE3LCAxMjg2NzEsIDY0MTQyLCA2MjYsIDEyODI0NCwgNTg5NSwgOTgzNTczLCA0MzkxMCwgNTc4MCwgMCwgCisgICAgMTAyMjAsIDEyMTMzNywgNDM5MDcsIDcxMTIxLCA0MzI5NywgNzAxODgsIDQzMTEsIDQ2NDQsIDg4MTgsIDc4MTU4LCAKKyAgICAxMjgxODYsIDEyODg2OSwgNzE0NSwgMzkxOCwgNjY0NTIsIDM3OTcsIDE2NDQsIDkyMzQ2LCA5NjU4LCA0MTQwLCAxMTM4NSwgCisgICAgNjU5NDcsIDY0NTUsIDkwMzAsIDgxMywgMTE5OTQ1LCA2ODEzMSwgNDE0NiwgMTE5OTU3LCA1MzYwLCAyNDY2LCA3MDY2OSwgCisgICAgNjc2NjksIDk0MDIwLCA2MjQ5LCA0MjExNywgNjg4MjgsIDkyMjA2LCAxMjgwMjMsIDEwMTA0OCwgNzQwNDYsIDQzNzQ1LCAKKyAgICA0OTExLCA5ODgsIDcxMTgwLCA5ODMzMzcsIDk4MzQ3MCwgNDMwNjEsIDcwNTQsIDY0MTQ3LCAxMDEwNDIsIDY0OTIwLCAKKyAgICA2ODE5NSwgNjY5OCwgMTE4OTMzLCA5MjUwNiwgMCwgNzA4NDksIDExOTgxLCAxMjIwMiwgMTk1MDg3LCAxMTAzMiwgNjc2NTQsIAorICAgIDYwOTMsIDExNjA4LCA5NzUsIDY2NDE1LCA2NTg0MywgMTcwLCAwLCA2NzIzOSwgNDE2OSwgMTE5OTM4LCA0MTg1OSwgNjA1OCwgCisgICAgMTIwNDAxLCAxMzIwMywgMTIwNDAyLCA3MDUwNywgMTIwNDAzLCA2ODY1NywgOTgxOCwgMTAxNzgsIDEwMzI0LCA0MjEwNiwgCisgICAgNTg5OCwgNzQ1NDAsIDQ3MzgsIDQxODU2LCA3MDYyLCAxMjAxNDIsIDQ3MzcsIDExNzc5LCA0NzQyLCA4MzQyNSwgNjg3NTgsIAorICAgIDY4MzQyLCA0MTM3NCwgOTgyNSwgNjQ0OCwgNjcxNSwgMTI3MDA4LCA0ODMxLCA4MzQxOCwgODM0MTksIDY3NzMxLCA1MzAwLCAKKyAgICA0NzQxLCA0MjEwOCwgMTI3MDU3LCA2NDE1OSwgNDczNiwgNjQxNDgsIDkyNjM0LCA4NDksIDkyMTkxLCA3ODQ5MSwgNDMyODgsIAorICAgIDAsIDY2NjIwLCAxMjc1MzMsIDEyNzMzMSwgNjU1NDksIDk0OTYsIDY0NTk4LCAxMTg4NjYsIDk4MzM2OCwgNzg3NiwgCisgICAgNjgxMzIsIDY2MjgwLCAzOTI4LCA5MTc4NzAsIDQzMzc4LCAxMDcwNiwgNzE5OCwgMTIwODkwLCA0ODQyLCAxMjA1MywgCisgICAgMTI4MTI5LCA2ODc0NiwgNDg0MSwgMTI5MzM0LCA0MTcxLCAxMjAwOCwgNjI1MSwgMzkyMywgMTQ5MCwgODM0MTEsIDgzNDEyLCAKKyAgICAxMjY1MTIsIDQwOTcyLCA1MjQ1LCA3MDc5NCwgMTAxMTQsIDQyMDAxLCA0MTg4OCwgNDg0NSwgODMzMiwgNDA5NzQsIAorICAgIDY0MzQ3LCA0ODQwLCA5MDc3LCA3ODM0NiwgMTc0NywgNzI4NTEsIDQ4MjUsIDY5MjQwLCAxMjE0NDMsIDY4NjU1LCAwLCAKKyAgICAxMjg1MzcsIDAsIDAsIDY4NjI4LCA5ODMzNDksIDk4NTAsIDExODkzNywgMzY3LCAxNDcyLCA5MTc4NTksIDY2ODcsIDEyNzQsIAorICAgIDE5NTAyMiwgNTkwNSwgMTIzMzksIDg5MTksIDczOTUzLCAxMDkwNywgNjUyNjEsIDExMDIzLCAxMTk1NTksIDQ4MzAsIAorICAgIDkxMzQsIDc4NjY2LCA2NDEyNiwgNDMwMTEsIDgzMjk3LCA3ODY2OSwgNjQxMDEsIDAsIDEyODQzNCwgNDgyNCwgMTA2MTQsIAorICAgIDExOTY1OSwgMTI2OTkzLCAxODg4LCAxOTYwLCA3ODYxLCA4MzQxNiwgNzg1MjQsIDQxODM2LCA0MzAxMiwgNjA1MiwgNjA2NCwgCisgICAgNTQsIDQzMDA5LCAxMjIxNCwgODMyNjAsIDYyMTEsIDEyMDM4NiwgMzU4LCA0MTk5NywgNDE4MzMsIDExNDQyLCAxMDc1OCwgCisgICAgNjU3NzQsIDExMzgyMywgMTIwMzg0LCA2NDExNSwgOTIyMjEsIDcwMDE4LCA5ODM2MTEsIDk4MzcwOCwgOTI0MDgsIAorICAgIDEyODA4MiwgMTI3NjUsIDY0MTE4LCAxMjY5OTgsIDEyOTYyLCAxMTk2MzIsIDEyNjU4MCwgNDAxNywgMTI4MjcsIDUyNDEsIAorICAgIDEyMDM5MiwgMTI3OTAwLCA0MTExOCwgMzkyNCwgOTgzODk0LCAxMTM2NiwgMTI5MDg0LCAwLCAwLCA4MzQwMSwgNDExMTYsIAogICAgIDgzNDAzLCA4MzQwNCwgODMzOTcsIDExMzYzLCAxMjA1NywgMTE5MTcsIDE1NjcsIDc0MDAwLCA0NzIxLCA4MzM5NiwgCi0gICAgNjYyMDIsIDg5NTcsIDQxMzksIDcwNTEyLCAwLCA5ODMwNzQsIDAsIDAsIDEyNzQwLCAxMjE0NzAsIDQ3MjIsIDY4MTYsIAotICAgIDEyNDk3NCwgMTI3NTksIDQ3MjUsIDY3MDk5LCA0NzI2LCA4MzQ2NywgODM0NjgsIDk4MzYyMiwgNzAwMjksIDgzNDYzLCAKLSAgICA3NDkxMywgMTI3NTUsIDEyNzYyLCA0MDE1LCA2NzY5MCwgODA1MiwgNDc2LCAwLCA3NDg5MywgMTI4Mjk0LCA2NDIxMiwgCi0gICAgNDEwMjAsIDEzODIsIDY0MjA5LCA2NDIxNiwgNDQwMDIsIDY0MjE0LCAxNjU2LCA0MTgzMSwgMTI3NTUzLCAxMjUxMjEsIAotICAgIDQxODQzLCA4NzIwLCAzOTA4LCAxNDUyLCAxMzExMSwgOTgzNDIxLCA2NDA2NywgOTIyODcsIDg1NTIsIDY0MTEzLCA0MTg0NSwgCi0gICAgMzg0OSwgNzg3MzIsIDY2MjMyLCA5Nzc4LCAxMjAwNjYsIDU4OTEsIDcwNjQsIDU1LCA5OTQ4LCAxMTkwODUsIDgzMzAyLCAKLSAgICA5MTc2MTAsIDc5MzUsIDI0MjAsIDAsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIAotICAgIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgNjY4ODQsIDYyOTIsIDY1MzAzLCAKLSAgICA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgMTI5MDczLCA2NTE1MiwgNzE5LCAKLSAgICAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIAotICAgIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIAotICAgIDAsIDYzODMsIDE5NDc0NCwgMTIwMDYsIDEyODU2NSwgMTk0Nzg5LCAwLCAxMTM3NTYsIDAsIDY1NDE0LCA2NDU0LCAxMjI5LCAKLSAgICA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgCi0gICAgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCAKLSAgICA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgCi0gICAgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCAKLSAgICA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIDAsIDgzNDQyLCA2NDU2LCA3MzgyMCwgODM0NDUsIDY2OTEsIAotICAgIDQyMTkzLCA2NjI4NCwgODM0NDEsIDAsIDY4MzM3LCAwLCA0Mzg1OCwgNDM4MzIsIDExODgyMCwgOTc1MSwgNjU0MDcsIAotICAgIDEyODA4NSwgMTE3NzAsIDM5MTksIDEyMDcyNCwgMCwgNjUwNjEsIDk4Mzk0NSwgOTE3ODk0LCAxMjkxNDIsIDEyMjM1LCAKLSAgICAxMjg1NzIsIDkyNzAxLCAxMjEwODcsIDY0MDkyLCA2ODczOSwgNjQwODAsIDEyOTA2MywgNjQwOTAsIDk4MzU4NiwgNjk5MTMsIAotICAgIDEwMTYyLCAxMDMxMCwgMTIxMjEwLCA4NDU0LCAxMjEzODcsIDQyMDM4LCAzODcsIDQxMzYzLCAxMjczNywgMCwgNDc4MCwgCi0gICAgNDMzNjgsIDAsIDY0MzEwLCA2NDYyMSwgNjczMiwgNzgxMTYsIDAsIDEyMTI5NSwgMTk1MDI0LCA5MjE5MywgODg5NiwgMCwgCi0gICAgMzc1LCA2OTc2LCA2NjU4MiwgMTE5MDA1LCA3NDk5NywgMTI3MzI1LCA5ODM0MzYsIDExOTIwMiwgMTE5MjAzLCAxMjUyNiwgCi0gICAgNDMxMjAsIDIzMTUsIDAsIDE5MzgsIDExOTE5NywgMTI4NDUyLCA0NTI5LCAxMTkyMDAsIDExOTIwMSwgMTE5MTk4LCAKLSAgICAxMTkxOTksIDY5NjkyLCAxMjkxMjQsIDY5Njk4LCAxMzE1MCwgNjQ0OTIsIDEyODk3NCwgNzg3NjEsIDIyOTEsIDEyOTAyLCAKLSAgICAwLCA0Mjg5MSwgNjYzMjcsIDcwNTAyLCA5MTc4NTcsIDEwNzk5LCA2OTY5MCwgMjU4NywgNjYzNzIsIDEyODYyOCwgNDE5MywgCi0gICAgNjY4MjMsIDQyNDEsIDEyOTE5NSwgNzk5OCwgODMyNzYsIDAsIDEyNzAwOSwgMTI2NjQwLCAyMzE2LCAxMTg4MjEsIDAsIAotICAgIDk4MzkzNCwgMCwgNjQyOTcsIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgCi0gICAgMTAwMTUsIDEyMDY3MiwgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCAwLCA3MDA5OCwgMzc4MCwgNzQ4NSwgNTc3OSwgOTE3ODk4LCAKLSAgICA0MjAzNywgMCwgMzkwNiwgMTIzNDksIDc0NzkzLCA4MzI2LCAxMjczMzMsIDY1NDk4LCAzNzYzLCA2OTgzLCA1NjE4LCAwLCAKLSAgICAzNzc5LCA5ODMxOTQsIDQzNjEzLCA3MDEzMiwgMCwgODMyODgsIDc4MzM1LCA4MzI4OSwgMCwgMjgwLCA3NDU1OCwgCi0gICAgMTIxMzUzLCA2NzM5NiwgMTMwNzIsIDE4OTQsIDgzMjkxLCA2NzczNSwgNjU0NzgsIDQzMzEwLCA3MjMxLCAwLCAxMTc3MywgCi0gICAgMCwgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIAotICAgIDcxODc3LCAxMjg2NjksIDQ0NzAsIDExODI2LCA5MTc1NTcsIDc3ODAsIDUzNjksIDExODk1OCwgNTI0OSwgOTgzMDY2LCAKLSAgICA1MzY3LCA4NzU2LCAxMjcxNDMsIDExOTE4MywgNTM3NywgMTIwNTg1LCA2ODE0MywgMTY4OCwgNzgyNDUsIDUyMTgsIAotICAgIDY5Njg1LCA5ODM3NTYsIDAsIDExMzc5NCwgNDQwMjAsIDY4MDgsIDQxMzE5LCAxMzAwLCAxMDY1MCwgNDE2OTIsIDY0NTA1LCAKLSAgICAyMjkwLCA3MTA1NywgMTE5NjI0LCAxNDY1LCAxMDg1MCwgMzk0MywgMCwgNDEyMDUsIDQxMzE1LCAxMTg5NjEsIDExOTMzMywgCi0gICAgNjcxNDgsIDUzNTIsIDExMzc1MywgMCwgODgzOSwgNDEzMTQsIDczODQsIDc3ODUsIDQxMjA0LCAxMjczMjIsIDQxMjA5LCAKLSAgICA2OTYzNywgOTIyNDEsIDQzNjA3LCA3MTI1NCwgMCwgNTQyMCwgMzg5NywgMTAxMzQsIDEyMDM4MSwgNzQ0MTcsIDQwMTgsIAotICAgIDcxNTAsIDY4MTI3LCA3MTQyNSwgMCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAorICAgIDY2MjAyLCA4OTU3LCA0MTM5LCA3MDUxMiwgMTI3MTE1LCA5ODMwNzQsIDAsIDEyMjkwNywgMTI3NDAsIDEyMTQ3MCwgNDcyMiwgCisgICAgNjgxNiwgMTI0OTc0LCAxMjc1OSwgNDcyNSwgNjcwOTksIDQ3MjYsIDgzNDY3LCA4MzQ2OCwgOTgzNjIyLCA3MDAyOSwgCisgICAgODM0NjMsIDc0OTEzLCAxMjc1NSwgMTI3NjIsIDQwMTUsIDY3NjkwLCA4MDUyLCA0NzYsIDAsIDc0ODkzLCAxMjgyOTQsIAorICAgIDY0MjEyLCA0MTAyMCwgMTM4MiwgNjQyMDksIDY0MjE2LCA0NDAwMiwgNjQyMTQsIDE2NTYsIDQxODMxLCAxMjc1NTMsIAorICAgIDEyNTEyMSwgNDE4NDMsIDg3MjAsIDM5MDgsIDE0NTIsIDEzMTExLCAxOTUwOTYsIDY0MDY3LCA5MjI4NywgODU1MiwgCisgICAgNjQxMTMsIDQxODQ1LCAzODQ5LCA3ODczMiwgNjYyMzIsIDk3NzgsIDEyMDA2NiwgNTg5MSwgNzA2NCwgNTUsIDk5NDgsIAorICAgIDExOTA4NSwgODMzMDIsIDkxNzYxMCwgNzkzNSwgMjQyMCwgNzM4NjEsIDExMTQsIDc4MTIwLCA2NzU4NSwgNzAxMDQsIAorICAgIDcwNDMyLCA4MzQ0NywgNzQ5MjAsIDM5MzgsIDEyMDA1NywgNjU0MTcsIDY0NzE3LCAxMjAwNjAsIDcxOTIwLCA2NTQxNSwgCisgICAgNjY4ODQsIDYyOTIsIDY1MzAzLCA3OTU1LCA2NDUyLCA0NzEzLCAxMjgxOTYsIDY2MjQ5LCA5MTc4ODUsIDE5NDc2NiwgCisgICAgMTI5MDczLCA2NTE1MiwgNzE5LCAxMjAwNDQsIDc4NjIzLCAxMjAwNDIsIDY3MTMsIDQ1MzIsIDY1NDEyLCA2OTgyMiwgCisgICAgMTA4NjgsIDQ3MTcsIDIzNDksIDU5MDIsIDY2NDUwLCA0NzEyLCA3NTA1NSwgOTE3ODk5LCA2NTQwMCwgNjU0MTYsIDgxNTUsIAorICAgIDQ3MTgsIDM5NDIsIDQ3MTQsIDk2MjUsIDk4MzI5MywgNjM4MywgMTk0NzQ0LCAxMjAwNiwgMTI4NTY1LCAxOTQ3ODksIAorICAgIDEyMTIyNiwgMTEzNzU2LCA5ODM0NTgsIDY1NDE0LCA2NDU0LCAxMjI5LCA4MzQ1NywgNjY0MzcsIDY2MDI1LCA3ODY5OSwgCisgICAgODM0NTIsIDQyNTAwLCAxMjA1MDgsIDQ4MDksIDk2MjMsIDEyOTEzNywgNzg2OTQsIDEyMTE3MywgMTI4Nzc3LCA5MTc4NTgsIAorICAgIDY1NDA1LCA2ODE1OSwgMTI4OTMsIDc4NjE3LCA1MzY1LCA0NTQ1LCA4OTAxLCA5MjQyMSwgMTE5NTU1LCA0ODEzLCAKKyAgICAxMjgyNjIsIDE5NDcyOSwgNTkyNSwgNDgwOCwgNjQzMzAsIDEyODQwMCwgNjU0NzUsIDgzNDMyLCA2ODI0NCwgNDgxNCwgCisgICAgODM0MjcsIDQ4MTAsIDgzNDI5LCA4MzQzMCwgNjQ5MjgsIDEwNTQzLCA3MTI0OSwgMzUyMiwgNzEzMzUsIDQxNCwgNjU0MDQsIAorICAgIDkyMzI5LCA4MzQ0MiwgNjQ1NiwgNzM4MjAsIDgzNDQ1LCA2NjkxLCA0MjE5MywgNjYyODQsIDgzNDQxLCAwLCA2ODMzNywgMCwgCisgICAgNDM4NTgsIDQzODMyLCAxMTg4MjAsIDk3NTEsIDY1NDA3LCAxMjgwODUsIDExNzcwLCAzOTE5LCAxMjA3MjQsIDk4MzU5NiwgCisgICAgNjUwNjEsIDc4MTE1LCA5MTc4OTQsIDEyOTE0MiwgMTIyMzUsIDEyODU3MiwgOTI3MDEsIDEyMTA4NywgNjQwOTIsIDY4NzM5LCAKKyAgICA2NDA4MCwgMTI5MDYzLCA2NDA5MCwgMTI1MjY3LCA2OTkxMywgMTAxNjIsIDEwMzEwLCAxMjEyMTAsIDg0NTQsIDEyMTM4NywgCisgICAgNDIwMzgsIDM4NywgNDEzNjMsIDEyNzM3LCAwLCA0NzgwLCA0MzM2OCwgMCwgNjQzMTAsIDY0NjIxLCA2NzMyLCA3ODExNiwgCisgICAgMCwgMTIxMjk1LCAxOTUwMjQsIDkyMTkzLCA4ODk2LCAwLCAzNzUsIDY5NzYsIDY2NTgyLCAxMTkwMDUsIDc0OTk3LCAKKyAgICAxMjczMjUsIDk4MzQzNiwgMTEzNzU3LCAxMTkyMDMsIDEyNTI2LCA0MzEyMCwgMjMxNSwgMCwgMTkzOCwgMTE5MTk3LCAKKyAgICAxMjg0NTIsIDQ1MjksIDExOTIwMCwgMTE5MjAxLCAxMTkxOTgsIDExOTE5OSwgNjk2OTIsIDEyOTEyNCwgNjk2OTgsIAorICAgIDEzMTUwLCA2NDQ5MiwgMTI4OTc0LCA3ODc2MSwgMjI5MSwgMTI5MDIsIDEyODE0MCwgNDI4OTEsIDY2MzI3LCA3MDUwMiwgCisgICAgMTI5NDI1LCAxMDc5OSwgNjk2OTAsIDI1ODcsIDY2MzcyLCAxMDA1NzYsIDQxOTMsIDY2ODIzLCA0MjQxLCAxMjkxOTUsIAorICAgIDc5OTgsIDgzMjc2LCAwLCAxMjcwMDksIDEyNjY0MCwgMjMxNiwgMTE4ODIxLCAwLCA5ODM5MzQsIDEyNzQ3OCwgNjQyOTcsIAorICAgIDc0Nzk5LCA5MjQ0MiwgNzQxNDAsIDEyODE0OCwgNTM3MywgMTI4Nzk4LCA3MDM3MCwgMzc2MiwgMTAwMTUsIDEyMDY3MiwgCisgICAgMTE5MjMyLCAxMjUxMDksIDQxNTkwLCA5ODM4NjUsIDcwMDk4LCAzNzgwLCA3NDg1LCA1Nzc5LCA5MTc4OTgsIDQyMDM3LCAwLCAKKyAgICAzOTA2LCAxMjM0OSwgNzQ3OTMsIDgzMjYsIDEyNzMzMywgNjU0OTgsIDM3NjMsIDY5ODMsIDU2MTgsIDAsIDM3NzksIAorICAgIDk4MzE5NCwgNDM2MTMsIDcwMTMyLCAwLCA4MzI4OCwgNzgzMzUsIDgzMjg5LCAxMjk0MTksIDI4MCwgNzQ1NTgsIDEyMTM1MywgCisgICAgNjczOTYsIDEzMDcyLCAxODk0LCA4MzI5MSwgNjc3MzUsIDY1NDc4LCA0MzMxMCwgNzIzMSwgMCwgMTE3NzMsIDEyMTMxNCwgCisgICAgMTE5MTY1LCAxMTE0NCwgOTE3Nzc4LCAyNTUxLCAwLCA2NDUzLCAxMDIwMCwgNjIzNSwgOTgzNzUyLCAxMTkyMzcsIDcxODc3LCAKKyAgICA3Mjg4NiwgNDQ3MCwgMTE4MjYsIDkxNzU1NywgNzc4MCwgNTM2OSwgMTE4OTU4LCA1MjQ5LCAxMTk5NDksIDUzNjcsIDg3NTYsIAorICAgIDEyNzE0MywgMTE5MTgzLCA1Mzc3LCAxMjA1ODUsIDY4MTQzLCAxNjg4LCA3ODI0NSwgNTIxOCwgNjk2ODUsIDE5NDkxOCwgMCwgCisgICAgMTAwNzgwLCA0NDAyMCwgNjgwOCwgNDEzMTksIDEzMDAsIDEwNjUwLCA0MTY5MiwgNjQ1MDUsIDIyOTAsIDcxMDU3LCAKKyAgICAxMTk2MjQsIDE0NjUsIDEwODUwLCAzOTQzLCAxMjc1MzcsIDQxMjA1LCA0MTMxNSwgMTE4OTYxLCAxMTkzMzMsIDY3MTQ4LCAKKyAgICA1MzUyLCAxMTM3NTMsIDAsIDg4MzksIDQxMzE0LCA3Mzg0LCA3Nzg1LCA0MTIwNCwgMTI3MzIyLCA0MTIwOSwgNjk2MzcsIAorICAgIDkyMjQxLCA0MzYwNywgNzEyNTQsIDgzNDQ0LCA1NDIwLCAzODk3LCAxMDEzNCwgMTIwMzgxLCA3NDQxNywgNDAxOCwgNzE1MCwgCisgICAgNjgxMjcsIDcxNDI1LCA3MDY4OCwgMTIxNDI3LCAxMjc4NjQsIDEyNzUyNiwgMjU2MSwgNjg2MjEsIDM1NDIsIDcxNDgsIAogICAgIDEyMDc2LCA3OTUxLCA2ODE1MiwgMTE4ODU3LCA1MzAzLCA2Mjc2LCAxNzA2LCAxMjA3NTAsIDc4NzUxLCA3MTQ2LCAKLSAgICA5ODM2ODIsIDY1MTUwLCA0MTgxOSwgMCwgNzM5NTEsIDEwODQ3LCA0MTgyMiwgOTk4NSwgODYwLCAwLCAxMDUwNiwgCi0gICAgOTgzNDM3LCA2OTY0MSwgMTA3NTMsIDEwODMwLCAxMTkzMzksIDYxNSwgNjQ0OTAsIDc1NzQsIDc0MDgyLCA3NzkyMiwgMCwgCi0gICAgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAwLCAxMjEyMzEsIDY3OTk2LCAyMDIwLCAxMjg3OTAsIDQwMjIsIAotICAgIDEyODc4MywgMTIwNzAxLCA3NzkyMywgMTI2NTkzLCA0MTY5MSwgMCwgNzUwNjAsIDc0MzI5LCAwLCA2NDYyMiwgOTA3MCwgMCwgCi0gICAgNjg0MTEsIDM5MTEsIDQyODI5LCA0MzEyMiwgMTAzMywgNzQ0NDAsIDk4MzgxMywgNzAwMCwgMzkwNCwgOTgzNjI4LCAKLSAgICA3MzczNywgMTI1MTA1LCAxMTg5MzEsIDExOTYzMCwgMTMxMjMsIDEwODQ2LCAzNDUwLCAxMjczNjAsIDczOTcsIDExODgwNywgCi0gICAgOTE3ODkxLCA0Mjc3OCwgMTAwMDAsIDQxMDg4LCA0NDksIDAsIDM3NzcsIDY4NDU4LCAxMTM3MjUsIDk2MzYsIDAsIDEwNzM4LCAKLSAgICA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgOTgzNzIzLCA2NDQwOSwgMzU5NiwgCi0gICAgMTI5MDQ0LCAxMjgwOTAsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIDEyOTgxLCA0MTEyNywgMjA5MiwgCi0gICAgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgMTc2OSwgNDE3MTUsIDI0NjMsIAotICAgIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIDE5NDYxNCwgMTk1MDU4LCA3Nzk1LCAKLSAgICAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAwLCAxMjExMzAsIDk0OTgsIDEyNzAzMiwgCi0gICAgMTI3MDMzLCAxMjAyODksIDEyMDI4OCwgMzkzOSwgMTIwMjkwLCA4ODQ2LCA4OTQzLCAxMjAyODcsIDEyMDI4NiwgMjY1MCwgCi0gICAgNDQ5MSwgMTk2MSwgNDI2MDIsIDExNTI1LCAxMjAyOTIsIDE5NTksIDEyMDI5NCwgNTUyMjgsIDExNzc0LCA0MTAxNiwgCi0gICAgOTgzMjYyLCA2ODY3NSwgMTI4MDU0LCAxNTExLCA5MzI0LCA3ODIxMSwgMTA1MTksIDY2MzMxLCAzNDU0LCAxOTkzMCwgMCwgCi0gICAgNDEwMTksIDEyNzk0NCwgMCwgNjUyOTIsIDY4MjIsIDEyODYyLCAwLCAwLCA0MjE0MywgNDE4MjgsIDc4MjA3LCA2NTUzMSwgCi0gICAgNzA4NjQsIDExODg3OSwgNTUyMjMsIDAsIDEyODA3MSwgNDE4MjYsIDg4NjUsIDY0MDIsIDExMzgyNywgMTMyNzksIDc5MTcsIAotICAgIDc0NzU1LCA5MTc5NDgsIDc3MzMsIDk4MzQwOCwgNDk5OCwgNjg0OTMsIDkyMzMyLCA0MTk1MCwgMCwgNDI2OCwgMTk0NzkwLCAKLSAgICAxOTUwNTYsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIDEwODgxLCAwLCA5ODMxNjMsIDAsIDc0Nzg4LCAyMDE0LCAyNDMyLCAKLSAgICA3MTkwMSwgOTc2NSwgMTk1MDUyLCAwLCA5MTc4NTQsIDE5NTA1OSwgNzgzNTcsIDY1MjgxLCAxMjc4MjUsIDEwOTQ5LCAwLCAKLSAgICAwLCAxMTkzMTUsIDIwMTUsIDEyMTA4OCwgOTI3NjUsIDcxODQwLCA2NjMxOCwgNDMyMzMsIDkxNzk5MiwgNDI1MTcsIAotICAgIDY4MDYwLCAwLCAwLCAxMjY5OCwgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIAotICAgIDExOTM1MywgNjcyNzksIDE2NjUsIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAKLSAgICAxMjYxMSwgMCwgOTgzNDIwLCAyODU5LCA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIAotICAgIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAKLSAgICAzODk1LCA5MjYxNSwgNzQzNDEsIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgCi0gICAgNDM0OTYsIDAsIDEyMTAxNSwgNDM2ODYsIDc4ODQ2LCA0MTg3NywgOTgzNzQzLCAyODcxLCA2NDYxNCwgNjg4NDMsIDk5OSwgCi0gICAgOTgzODQ0LCA2MzQ1LCA0MTg3NiwgMjY2MywgMjAxNywgMTIxMjM0LCA2NzgyNCwgMTEwNDAsIDEwMTUwLCAxMjA2NzgsIAotICAgIDY0MzA4LCAxNTIyLCA1OTcsIDQ3NzUsIDEyNTU1LCAxMjU3MSwgMTI1NTAsIDEyNTgzLCAxMjU2MCwgMjAxOSwgMTI1NTYsIAotICAgIDEyNTg0LCAzMDkyLCAwLCAxMjU2MiwgNDc4MywgMTI1NjYsIDEyNTY5LCAxMjU1NCwgODMzNDQsIDEwODEyLCA3ODg1MSwgMCwgCi0gICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDExOTI0OCwgMzk0LCAzMDg4LCA4MzM0NywgOTIxNzIsIAorICAgIDk4MzY4MiwgNjUxNTAsIDQxODE5LCAwLCA3Mzk1MSwgMTA4NDcsIDQxODIyLCA5OTg1LCA4NjAsIDEyNzI4NywgMTA1MDYsIAorICAgIDk4MzQzNywgNjk2NDEsIDEwNzUzLCAxMDgzMCwgMTE5MzM5LCA2MTUsIDY0NDkwLCA3NTc0LCA3NDA4MiwgNzc5MjIsIAorICAgIDk4MzI5OCwgMTI5MDksIDQzMDE2LCA2NDU1OSwgMTI3MDI4LCAxMjgzMDksIDEyMTIzMSwgNjc5OTYsIDIwMjAsIDEyODc5MCwgCisgICAgNDAyMiwgMTI4NzgzLCAxMDA3NDgsIDc3OTIzLCAxMjY1OTMsIDQxNjkxLCAwLCA3NTA2MCwgNzQzMjksIDAsIDY0NjIyLCAKKyAgICA5MDcwLCA5ODM4NzYsIDY4NDExLCAzOTExLCA0MjgyOSwgNDMxMjIsIDEwMzMsIDc0NDQwLCAxMjUxOTEsIDcwMDAsIDM5MDQsIAorICAgIDk4MzYyOCwgNzM3MzcsIDEyNTEwNSwgMTE4OTMxLCAxMTk2MzAsIDEzMTIzLCAxMDg0NiwgMzQ1MCwgMTIwNTE4LCA3Mzk3LCAKKyAgICAxMTg4MDcsIDkxNzg5MSwgNDI3NzgsIDEwMDAwLCA0MTA4OCwgNDQ5LCAxMjg1MDksIDM3NzcsIDY4NDU4LCAxMTM3MjUsIAorICAgIDk2MzYsIDAsIDEwNzM4LCA2OTYzNCwgOTM2NywgNTkzLCA0MTA4NSwgMzk5OSwgNjUyMjYsIDQxNzEzLCAxMjc2NCwgCisgICAgOTgzNzIzLCA2NDQwOSwgMzU5NiwgMTI5MDQ0LCAxMjA4OTUsIDk3NjMsIDEyMDI4MCwgNzQ2MDksIDEyMzQ3LCAxMjQsIAorICAgIDEyOTgxLCA0MTEyNywgMjA5MiwgOTI2ODcsIDAsIDEyNzU1NSwgMTk0NjMyLCAxMDgyMCwgNDM5ODcsIDAsIDEyODkwNywgCisgICAgMTc2OSwgNDE3MTUsIDI0NjMsIDcxMjE0LCA4MzA3MCwgMTI3NzAsIDcxMjIyLCAxNTM4LCA5MjYxNywgNDMxMjQsIAorICAgIDE5NDYxNCwgMTk0NTg1LCA3Nzk1LCAxMjAzMDAsIDEyOTA1MywgNDgyOCwgMTI1OCwgMTI3ODAyLCAyMDA2LCAxMDEwMzQsIAorICAgIDEyMTEzMCwgOTQ5OCwgMTAwNDk0LCAxMjcwMzMsIDEyMDI4OSwgMTIwMjg4LCAzOTM5LCAxMjAyOTAsIDg4NDYsIDg5NDMsIAorICAgIDEyMDI4NywgMTIwMjg2LCAyNjUwLCA0NDkxLCAxOTYxLCA0MjYwMiwgMTE1MjUsIDEyMDI5MiwgMTk1OSwgMTIwMjk0LCAKKyAgICA1NTIyOCwgMTE3NzQsIDQxMDE2LCA5MTc5NDQsIDY4Njc1LCAxMjgwNTQsIDE1MTEsIDkzMjQsIDc4MjExLCAxMDUxOSwgCisgICAgNjYzMzEsIDM0NTQsIDE5OTMwLCA3ODE2MywgNDEwMTksIDEyNjU0NiwgOTgzNjcxLCA2NTI5MiwgNjgyMiwgMTI4NjIsIAorICAgIDk4MzcwNywgMCwgNDIxNDMsIDQxODI4LCA3ODIwNywgNjU1MzEsIDcwODY0LCAxMTg4NzksIDU1MjIzLCAwLCAxMjgwNzEsIAorICAgIDQxODI2LCA4ODY1LCA2NDAyLCAxMTM4MjcsIDEzMjc5LCA3OTE3LCA3NDc1NSwgOTE3OTQ4LCA3NzMzLCA5ODM0MDgsIAorICAgIDQ5OTgsIDY4NDkzLCA5MjMzMiwgNDE5NTAsIDAsIDQyNjgsIDEyNzkyMywgODMwNzUsIDcwMDYxLCA0MDEzLCAxMjg3MTgsIAorICAgIDEwODgxLCAwLCAxMjkwNDUsIDEyNTI2NiwgNzQ3ODgsIDIwMTQsIDI0MzIsIDcxOTAxLCA5NzY1LCAxOTUwNTIsIDAsIAorICAgIDkxNzg1NCwgMTk1MDU5LCA3ODM1NywgNjUyODEsIDEyNzgyNSwgMTA5NDksIDAsIDAsIDExOTMxNSwgMjAxNSwgMTAwODcxLCAKKyAgICA5Mjc2NSwgNzE4NDAsIDY2MzE4LCA0MzIzMywgOTE3OTkyLCA0MjUxNywgNjgwNjAsIDk4MzYxNCwgOTgzOTA0LCAxMjY5OCwgCisgICAgODA5NCwgMTAxMzUsIDY1OTA5LCA2NDc0LCA3OTQsIDQzNDk3LCAxMjY1NiwgNjYzMzUsIDExOTM1MywgNjcyNzksIDE2NjUsIAorICAgIDcxODUzLCA0ODMzLCA5MTc5ODUsIDcxMTg4LCAxMjczNjcsIDEyMTQ2NCwgMTg5LCAxMjYxMSwgMCwgMTI4MDk0LCAyODU5LCAKKyAgICA0ODM4LCA5ODM5MzAsIDQ4MzQsIDY1MDc4LCAwLCA5Mjk5MSwgNDgzNywgNjc0MTMsIDc3MCwgOTI2NzEsIDgxMSwgNzAwNjIsIAorICAgIDQxMDQyLCA4MzA3MywgNDEzMTgsIDY0NDI3LCA3Mzk5OSwgNjc2OTMsIDc4ODQ4LCAzODk1LCA5MjYxNSwgNzQzNDEsIAorICAgIDM5NzYsIDEyODQ2NiwgNDI4NTksIDEwMTkzLCAzMTE2LCA3NzQ3LCA3ODQ4OCwgMCwgNDM0OTYsIDk4MzA2OSwgMTIxMDE1LCAKKyAgICA0MzY4NiwgNzg4NDYsIDQxODc3LCA5ODM3NDMsIDI4NzEsIDY0NjE0LCA2ODg0MywgOTk5LCAxMjUxOTgsIDYzNDUsIAorICAgIDQxODc2LCAyNjYzLCAyMDE3LCAxMjEyMzQsIDY3ODI0LCAxMTA0MCwgMTAxNTAsIDEyMDY3OCwgNjQzMDgsIDE1MjIsIDU5NywgCisgICAgNDc3NSwgMTI1NTUsIDEyNTcxLCAxMjU1MCwgMTI1ODMsIDEyNTYwLCAyMDE5LCAxMjU1NiwgMTI1ODQsIDMwOTIsIAorICAgIDk4MzgzMiwgMTI1NjIsIDQ3ODMsIDEyNTY2LCAxMjU2OSwgMTI1NTQsIDgzMzQ0LCAxMDgxMiwgNzg4NTEsIDEyNjU3NCwgCisgICAgODMzNDIsIDMwNzgsIDE0MDIsIDAsIDgzMzQ4LCAwLCAxMjUwNzIsIDc0MzcxLCAzOTQsIDMwODgsIDgzMzQ3LCA5MjE3MiwgCiAgICAgOTE3OTY1LCAzOTkxLCA2NDM5MSwgODMzNDEsIDEyODUyNCwgNDI0LCA2NjMyOCwgMTk5OSwgNjk2NTksIDczOTE0LCAwLCAKLSAgICAxMjc1MzQsIDY2OTAzLCAxMjg0NjgsIDQyMjMxLCAyMjA5LCAxMjUxMDMsIDAsIDAsIDQxODQwLCA2NjkxMywgMjM3NywgCisgICAgMTI1MTI4LCA2NjkwMywgMTI4NDY4LCA0MjIzMSwgMjIwOSwgMTI1MTAzLCAwLCAwLCA0MTg0MCwgNjY5MTMsIDIzNzcsIAogICAgIDEyOTgsIDY0MDExLCAxMjU3MiwgMTEzMTgsIDEyNTU3LCAxMjU1OSwgMTI1NzAsIDc0NzksIDEwMDMsIDIzNzMsIDk0NDYsIAotICAgIDc0ODEsIDk0NDgsIDQ4LCA5ODMwODQsIDk0ODAsIDQ4MSwgMCwgOTQzOCwgOTQzOSwgOTQ0MCwgOTQ0MSwgODQ2NSwgOTQ0MywgCi0gICAgOTQ0NCwgOTQ0NSwgOTQzMCwgOTQzMSwgOTQzMiwgOTQzMywgOTQzNCwgOTQzNSwgMzk4NCwgOTQzNywgMTI5MTM1LCAKKyAgICA3NDgxLCA5NDQ4LCA0OCwgNzgwMjksIDk0ODAsIDQ4MSwgMTAwNjE1LCA5NDM4LCA5NDM5LCA5NDQwLCA5NDQxLCA4NDY1LCAKKyAgICA5NDQzLCA5NDQ0LCA5NDQ1LCA5NDMwLCA5NDMxLCA5NDMyLCA5NDMzLCA5NDM0LCA5NDM1LCAzOTg0LCA5NDM3LCAxMjkxMzUsIAogICAgIDkyOTM0LCA5NDI0LCA5NDI1LCA5NDI2LCA5NDI3LCA5NDI4LCA5NDI5LCA2NDc1OCwgMjM2MiwgOTY1NSwgMTI4MDUwLCAKICAgICAyMDA0LCA5MDk2LCA5NzgyLCA3MDg0MiwgOTE3MiwgODMwNzEsIDE5OTY1LCAwLCA1OTU1LCA2NzY2NiwgMTEwOCwgMCwgCi0gICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDAsIDkyMTY1LCAxMzkyLCAKLSAgICA5ODM4MTcsIDEyMDgzOCwgMTI3MzY0LCAxMDYwNiwgODA2NSwgMTE4ODA1LCAxMDM1MywgMTA0MTcsIDEyNzIzOCwgCi0gICAgMTI4NzM5LCA2NDUyNCwgOTI0MTgsIDQwMTksIDAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAxMTk5NjMsIAotICAgIDEyMTA2NywgMTI4NDMwLCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTE5MTMyLCA2MDU0LCAxMDY5NywgMzE2OSwgNDIyOTcsIAotICAgIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4ODQ4LCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCA5ODM3OTAsIAotICAgIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIDY0NzYwLCAKLSAgICAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgMzYsIDAsIAotICAgIDUxNTMsIDQxODA1LCAwLCA3MzczNSwgNzYzLCA0MTgwOCwgNjQ5MTAsIDEyMTM4OSwgMjAwOSwgMCwgMTI3OTg1LCA3NDI0NSwgCi0gICAgOTY0MCwgMTE5OTUxLCAwLCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAKLSAgICAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIAotICAgIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgCi0gICAgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIDAsIDQyNTM0LCA2NTE3OSwgMTEyODcsIDYxMjgsIAotICAgIDExMzgxMSwgMTEwMzQsIDEwOTIzLCA2NDQyMywgMTI1MDU4LCA2NTUwNiwgOTgzOTEyLCA2NTg2MSwgNzQwODMsIDY2ODcyLCAKLSAgICA5OTMyLCA0MzUxNiwgODMwNjMsIDgzMDY1LCA4MzA2NCwgOTgxNywgMCwgNzEyMzQsIDAsIDEyMTE3LCA2NjU4NiwgNDE4MywgCi0gICAgMTA1NDAsIDY2MjUwLCA5MDYzLCAxMjcwNDUsIDEyODU0NywgMTE5OTU0LCAxMTM2ODUsIDEyODk3LCAzNzkyLCAyMDExLCAKLSAgICAxMjE0MTgsIDYwNjUsIDQzMTYwLCAxMjgzNzksIDEyMDU5NSwgODY5MiwgNDExODYsIDQxODE2LCA0MTAyMywgNDE4MTgsIAotICAgIDQxMTg3LCAxMTY1OSwgNzkyMiwgMTI2MTQsIDIwMDUsIDg1MjMsIDc4MDAyLCAxMjAwMzUsIDc1MTMsIDE4NjMsIDQ3MTAsIAotICAgIDAsIDU5NTYsIDc2MjEsIDc4MDA1LCA5MjYyNCwgNDcwNSwgNzE2LCA3NDkxOCwgMCwgNDcwNCwgMTIwMDQwLCA5MzAyNCwgCi0gICAgNDIyNDEsIDE2MSwgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIAotICAgIDExOTA2NSwgNDMyOTMsIDY4NzcxLCA5ODMxOTAsIDExOTE2NCwgMTIwMzI4LCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgCi0gICAgODMzMTUsIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgMTI4MzMxLCA4NTA2LCAxMTM3NDQsIAotICAgIDE5NDgxMiwgMTI2OTk2LCAxMDA1LCA5MzcsIDc4MjE2LCA0NzM0LCAyODcwLCAxMjEzNTAsIDc4MjE4LCA5ODMxMDksIAotICAgIDc0NjMsIDQ3MjksIDAsIDIzNSwgMTM4NCwgNDcyOCwgNzQ4ODcsIDcwNDk0LCA5MjQ5MCwgNzQ0NDksIDgxMDksIDQzMTA1LCAKLSAgICAxMjg2MjMsIDQ3MzAsIDQ0NywgMTMxODYsIDE1MTMsIDQ3MzMsIDEyMDQxNSwgOTI1NDgsIDAsIDQyNTI3LCAxMjkxMSwgCi0gICAgNDM0MjcsIDEzODMsIDg1NjUsIDI0NjksIDEyMDAyNCwgNjY5MCwgNjE1NiwgNjgxMTcsIDQzNDM5LCA3OTkzLCA0Mjg4LCAKLSAgICAxMjA0MTYsIDI2NzQsIDEzMjM4LCAxMTkyMiwgMCwgOTI1MjksIDM1MTAsIDEzMjM0LCA5ODM4MzIsIDEyMDQwNywgNTYwNSwgCisgICAgNzQ3NzMsIDc4MjcxLCAxMjg5MDksIDY0NzgyLCAzOTI2LCA5MjQ0OCwgNjUyMTAsIDg3OTgsIDEyOTM2NSwgODMwNjIsIAorICAgIDEzOTIsIDEyNzc4MiwgMTIwNjk2LCAxMjczNjQsIDEwNjA2LCA4MDY1LCA3MDcxMCwgMTAzNTMsIDEwNDE3LCAxMDA2MTMsIAorICAgIDEyNTAyMywgNjQ1MjQsIDcwNzExLCA0MDE5LCAxMDA5NTAsIDEyNTA4MiwgNDMyODAsIDgyMTksIDY4NDAyLCAxODEyLCAKKyAgICAxMDA5NDksIDEyMTA2NywgMTAwOTQ0LCAxMjA5MzksIDQyNDEwLCA3NDQ0OCwgMTAxMDg1LCA2MDU0LCAxMDY5NywgMzE2OSwgCisgICAgNDIyOTcsIDQyMzIyLCAxMDY0MiwgMzkwOSwgOTk1MCwgMTI4MjMxLCAxMjgxMzksIDk4MzI2MywgNjg2NzgsIDc0OTg2LCAKKyAgICA5ODM3OTAsIDEwNDksIDQzNTE3LCA2NTcwNywgMjMwNCwgNDE4MDYsIDkyMzI2LCA0MjMzNiwgMzkyMSwgMCwgMTE3NzUsIAorICAgIDY0NzYwLCAxMTc2NiwgMTAzOCwgNDIzMDMsIDk4MjMsIDEyNzI3OCwgNjkyMzYsIDQwMDgsIDY0MDA0LCA4NzczLCAxMDczMywgCisgICAgMzYsIDAsIDUxNTMsIDQxODA1LCAxMTkxNTMsIDczNzM1LCA3NjMsIDkyMTEsIDY0OTEwLCAxMjEzODksIDIwMDksIDAsIAorICAgIDEyNzk4NSwgNzQyNDUsIDk2NDAsIDExOTk1MSwgMTI3MzE2LCA2OTg5NSwgODYyMSwgMTIwNTIzLCAxMjg1MiwgMzAzMSwgCisgICAgOTgzMDUwLCA2NDM2MSwgMTI5MDg4LCAxODIsIDY2NDE0LCA5MjcxNiwgOTI1OTgsIDExOTk1MCwgNDI2MTMsIDkwNTgsIAorICAgIDM2NiwgMCwgOTg5MiwgNTk2OSwgMTE3NTQsIDEwODQ4LCA0NTcwLCA2NTMwMSwgNDQwMTMsIDQyNTUsIDEyNzg4OSwgCisgICAgMTAxMDIsIDQxMTg5LCA0MDAzLCA0MTAyNiwgNjgxMDksIDEzMjkzLCA0MTE5MiwgNjk2MzUsIDEyNDk3NywgNDIyNTEsIAorICAgIDk4Mzk2MywgNDI1MzQsIDY1MTc5LCAxMTI4NywgNjEyOCwgMTEzODExLCAxMTAzNCwgMTA5MjMsIDY0NDIzLCAxMDEwOTIsIAorICAgIDY1NTA2LCAxMTkyNDgsIDY1ODYxLCA3NDA4MywgNjY4NzIsIDk5MzIsIDQzNTE2LCA4MzA2MywgODMwNjUsIDgzMDY0LCAKKyAgICA5ODE3LCAxMDA5MzcsIDcxMjM0LCA3MDc0OSwgMTIxMTcsIDY2NTg2LCA0MTgzLCAxMDU0MCwgNjYyNTAsIDkwNjMsIAorICAgIDEyNzA0NSwgMTI4NTQ3LCAxMTk5NTQsIDExMzY4NSwgMTI4OTcsIDM3OTIsIDIwMTEsIDEyMTQxOCwgNjA2NSwgNDMxNjAsIAorICAgIDEyODM3OSwgMTIwNTk1LCA4NjkyLCA0MTE4NiwgNDE4MTYsIDQxMDIzLCA0MTgxOCwgNDExODcsIDExNjU5LCA3OTIyLCAKKyAgICAxMjYxNCwgMjAwNSwgODUyMywgNzI4NTIsIDEyMDAzNSwgNzUxMywgMTg2MywgNDcxMCwgMTIwMDMwLCA1OTU2LCA3NjIxLCAKKyAgICA3ODAwNSwgOTI2MjQsIDQ3MDUsIDcxNiwgNzQ5MTgsIDk4MzQ1MywgNDcwNCwgMTIwMDQwLCA5MzAyNCwgNDIyNDEsIDE2MSwgCisgICAgNDM5NzcsIDc0NTQ2LCA2NjIxNCwgNDcwNiwgNzQwNzcsIDY5OTE0LCA0MjY3MiwgNDcwOSwgMTA2ODAsIDExOTA2NSwgCisgICAgNDMyOTMsIDY4NzcxLCAxOTUwMzAsIDExOTE2NCwgMTAwNzcwLCA4MzMxOSwgMTAxODcsIDE3MDAsIDExOTIyMywgODMzMTUsIAorICAgIDAsIDc0OTgwLCA0MDA0LCA5MTc1OTUsIDEwOTY4LCA0MzI5NiwgNzI4MjMsIDg1MDYsIDExMzc0NCwgMTk0ODEyLCAKKyAgICAxMjY5OTYsIDEwMDUsIDkzNywgNzgyMTYsIDQ3MzQsIDI4NzAsIDEyMTM1MCwgNzgyMTgsIDk4MzEwOSwgNzQ2MywgNDcyOSwgCisgICAgOTgzMzkzLCAyMzUsIDEzODQsIDQ3MjgsIDc0ODg3LCA3MDQ5NCwgOTI0OTAsIDc0NDQ5LCA4MTA5LCA0MzEwNSwgMTI4NjIzLCAKKyAgICA0NzMwLCA0NDcsIDEzMTg2LCAxNTEzLCA0NzMzLCAxMjA0MTUsIDkyNTQ4LCAwLCA0MjUyNywgMTI5MTEsIDQzNDI3LCAKKyAgICAxMzgzLCA4NTY1LCAyNDY5LCAxMjAwMjQsIDY2OTAsIDYxNTYsIDY4MTE3LCA0MzQzOSwgNzk5MywgNDI4OCwgMTIwNDE2LCAKKyAgICAyNjc0LCAxMzIzOCwgMTE5MjIsIDEyODQwOSwgOTI1MjksIDM1MTAsIDEzMjM0LCAxMjkzNjgsIDEyMDQwNywgNTYwNSwgCiAgICAgNDIwOTUsIDExMzY0LCA5MjI4NiwgMTM4MCwgNjU2MTcsIDExMTYyLCAxMjAyNjEsIDEzMTk2LCAxMzE5NywgMTIwMzA5LCAKICAgICA2NzcwOCwgOTQ5NSwgMTE5MzQ2LCAxMjcxNTQsIDU5NTksIDY3OTg0LCA3Mzk3NiwgNjYyNzUsIDQzMzcxLCA2OTQxLCAKICAgICAxMTkzNDksIDEzMjA1LCAxMzIxMSwgNTgwMSwgMTI3NjksIDY1OTA1LCA0MTY5NywgMTI4MywgODI5NTIsIDQ3NzksIAogICAgIDk4MzkyMiwgMzcxOSwgNDAwNiwgOTgzNTY5LCAxOTk1NywgNzExODYsIDIwMjEsIDExOTMzMiwgNDM4NzcsIDgzMTQwLCAKICAgICA0MzAyOCwgNjU0OTMsIDQxODM4LCAzODc1LCA1OTYyLCA2NDM0MSwgOTI2MTYsIDk4MTQsIDQzNDU3LCA1ODI3LCAzMzE0LCAKLSAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCAxOTQ2MjYsIAotICAgIDEyODc1MywgOTgzOTU4LCA2NjMxNiwgNjU0NjcsIDU3NzEsIDQxMjk4LCA5ODM3OTQsIDk3NDIsIDUyMSwgMCwgMTA4MDAsIAotICAgIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgMCwgMCwgMTE5MDE4LCAxMDU5OSwgCi0gICAgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCA2NzI2MSwgMTAwNzQsIDc4NTQ4LCAKLSAgICA5Mzk5OSwgMzc2OSwgMCwgMCwgMTI4NzAzLCA5ODMxMDcsIDk1NzMsIDkxNzk5OCwgNjUyOTAsIDg4NDksIDExOTI1NCwgCi0gICAgNjU4NTUsIDY1MTEyLCAxNzk2LCA3MTA0NiwgMCwgNjk2NjUsIDgxNjQsIDQxMzAxLCAzNTAyLCA4MzEzNSwgNzM4OCwgCi0gICAgMTA2MjEsIDczODM4LCA3ODU1MywgNTgyNSwgMTMwMDcsIDY4MTY1LCA5MjIwMywgOTI5MTUsIDEyNjYxLCA3NjA4LCAKLSAgICAxMDM1NCwgMTA0MTgsIDQyNDExLCAyMDIyLCAwLCAxNDA5LCAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgCi0gICAgMTM5MCwgNzAxODQsIDE5NDcwNCwgNDIxLCA0MzUzNiwgNTg0NiwgMTIwMTIwLCA0MTMwLCAxMjc3NzUsIDc1OTUsIDQyNTg4LCAKLSAgICA3NjAwLCA3NDQwMCwgNjYwMzUsIDE5NTA5MSwgMCwgNjU4NTEsIDQyNjA3LCAxMjQ5NTUsIDkyNDAzLCAzMTY4LCA2NzczMywgCi0gICAgNDIxMzQsIDExODMxLCAyMzcwLCAyODQ2LCA5MjYwNSwgMTI4MDg0LCAwLCAxMjAxMzIsIDEyNzc0NSwgMTgzNiwgMCwgCi0gICAgMTIxMjA3LCA5MjU1OCwgMzc0MCwgNjk4NDMsIDYyOTAsIDY1Mzc0LCAxMjA0NTEsIDIzOTAsIDM5NDQsIDY2NjI4LCAKLSAgICAxMTkwMDYsIDAsIDYxMzUsIDMxMTgsIDc0MjY1LCAxMTkwOTMsIDgzMzEwLCA3Nzk3NSwgMCwgODEyNywgODk3NSwgNjQ3MzksIAotICAgIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAKLSAgICAxMjc3NTAsIDQzNTA4LCA2MjA0LCAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAKLSAgICAxMjAxMzAsIDQyNjcsIDE2MzEsIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTUwNDYsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIAotICAgIDAsIDkyODg3LCAxMjY1ODgsIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCAKLSAgICA5ODM3OTcsIDc3OTMsIDc4Mjc1LCA5MzI4LCAxMTkxMDQsIDc4MzkzLCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIAotICAgIDkyMzQ0LCAzOTg2LCA0NDAyNSwgMCwgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMzNjAsIDk1NDEsIDc4Mjc2LCAKLSAgICAxMTM2NjksIDExMjc1LCA4NTQwLCAxMTQ5OCwgMTIwODY4LCA5ODMzNTksIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEzMDYwLCAKLSAgICA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIAotICAgIDM3NjUsIDkyODgxLCA5MTc2MTIsIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMjgwNDAsIDk4MzA2MSwgCi0gICAgMTE5NjEzLCAwLCAwLCA0MzEyLCA3NDA5MSwgMTIwMzM3LCA3NDk4MywgMTE5MjMsIDQwMjMsIDY4Mzk5LCA1NzYzLCAKLSAgICA5NDAxNSwgNDgyNywgMTA4OTQsIDEyODEwLCA2NDQwNiwgMTE4Nzg1LCA0NDU1LCA3NDMyMSwgNDMzLCAxMTk2MjAsIAotICAgIDY2NjYwLCAyNDk5LCA2NzE2NywgNjcxNjYsIDExODgzNywgMTE5NzMsIDEzMDg5LCA0MjkzLCAxMjAzMjksIDQyMjI0LCAKLSAgICA0Mjc1OCwgMTIxOTYsIDQyODM3LCA0MjIyNiwgMTE5MzE5LCAxMjc5OTIsIDExOTEyNiwgNTgxNywgMTI3ODA2LCA1NTI3NywgCi0gICAgMzEyMCwgOTc5NywgMCwgMCwgMTEwODYsIDEwMzg5LCAxMjY0ODUsIDEyODc4NCwgNDg5NSwgNjUzNTgsIDEyNDk0MSwgCi0gICAgNDM1OSwgNTg1LCAyMzgzLCAzNTA5LCA3MDAzNywgNDg2LCA0MjkwLCA1NzU4LCAxMjc1NDYsIDEyMTE2MCwgOTgzMTA2LCAKLSAgICA3MDA0LCAxMTM2NjcsIDY1ODgwLCAxMjY1MTQsIDExOTA0OCwgMjM4MCwgMTEzODAsIDk4Mzg2MywgOTM5OTYsIDIzNzYsIAotICAgIDc4ODQxLCA4MzQwMiwgMCwgNTE5NywgNzA4MzksIDEyNzA0NywgMTI3MDQ4LCAyMzY2LCAxMjcwNTAsIDExOTYwNCwgCi0gICAgNzA4MzcsIDEyMDA0NSwgMCwgMTI4NTU0LCAwLCA5MTc4NDYsIDAsIDAsIDAsIDc0MTg4LCA3MTM0MiwgNzg0NTUsIDc1MDQ4LCAKLSAgICAxMTM2NzUsIDc0OTAwLCAxMjAwNDYsIDEyNzU0MiwgMTIwMDQ5LCA5ODMzNjYsIDE4NDcsIDEyMDk3OCwgMTAzMzksIAotICAgIDk4MzM2NywgNDIzODQsIDEyMTM3OSwgNDIyNywgNzQxNTgsIDAsIDc0NDk4LCA0MzAzMiwgMTIxMTI0LCA0MjM2NSwgMCwgCi0gICAgMTI2NzEsIDExMzg0LCAxMjAwNTksIDc0MjY0LCAxMjAwNTgsIDY0Nzk3LCA5ODMzNDcsIDU4MjAsIDk4MzM0NiwgMTIwMDUyLCAKKyAgICA3Nzg3LCA3MTE4OSwgNjU0OTQsIDY4MTUzLCAxMjY5OTEsIDE5NDY5NywgMTIwNjM2LCA2NDUzMSwgMTIwNjkyLCA3Mjg3OSwgCisgICAgMTI4NzUzLCA5ODM5NTgsIDY2MzE2LCA2NTQ2NywgNTc3MSwgNDEyOTgsIDgzMTM4LCA5NzQyLCA1MjEsIDk4MzkxMSwgCisgICAgMTA4MDAsIDkyMjIyLCA4NDA0LCAxOTQ2MjUsIDQ4MywgNzA5NiwgNzA4OSwgNjYzMjMsIDkyOCwgOTgzOTA4LCA2NDA0MSwgCisgICAgMTE5MDE4LCAxMDU5OSwgMTE1ODYsIDM5ODksIDEwOTcxLCA0Mzc0OCwgNjU3ODIsIDk4NDEsIDg4NDMsIDEyMTQ1LCAKKyAgICA2NzI2MSwgMTAwNzQsIDc4NTQ4LCA5Mzk5OSwgMzc2OSwgMTI3OTU4LCAwLCAxMjg3MDMsIDk4MzEwNywgOTU3MywgCisgICAgOTE3OTk4LCA2NTI5MCwgODg0OSwgMTE5MjU0LCA2NTg1NSwgNjUxMTIsIDE3OTYsIDcxMDQ2LCA5ODM0MjgsIDY5NjY1LCAKKyAgICA4MTY0LCA0MTMwMSwgMzUwMiwgODMxMzUsIDczODgsIDEwNjIxLCA3MzgzOCwgNzg1NTMsIDU4MjUsIDEzMDA3LCA2ODE2NSwgCisgICAgNzI3NDksIDkyOTE1LCAxMjY2MSwgNzYwOCwgMTAzNTQsIDEwNDE4LCA0MjQxMSwgMjAyMiwgOTgzNDI5LCAxNDA5LCAKKyAgICAxMjE5NSwgNDAwMSwgMzExMiwgMTA4MjQsIDEyMDYzOSwgMTM5MCwgNzAxODQsIDc4NTE1LCA0MjEsIDQzNTM2LCA1ODQ2LCAKKyAgICAxMjAxMjAsIDQxMzAsIDEyNzc3NSwgNzU5NSwgNDI1ODgsIDc2MDAsIDc0NDAwLCA2NjAzNSwgMTk0Nzk5LCAwLCA2NTg1MSwgCisgICAgNDI2MDcsIDEyNDk1NSwgOTI0MDMsIDMxNjgsIDY3NzMzLCA0MjEzNCwgMTE4MzEsIDIzNzAsIDI4NDYsIDkyNjA1LCAKKyAgICAxMjgwODQsIDAsIDEyMDEzMiwgMTI3NzQ1LCAxODM2LCAwLCAxMDA3ODIsIDkyNTU4LCAzNzQwLCA2OTg0MywgNjI5MCwgCisgICAgNjUzNzQsIDEwMDc4NSwgMjM5MCwgMzk0NCwgNjY2MjgsIDExOTAwNiwgOTgzOTE2LCA2MTM1LCAzMTE4LCA3NDI2NSwgCisgICAgMTE5MDkzLCA4MzMxMCwgNzc5NzUsIDk4Mzg4OSwgODEyNywgODk3NSwgNjQ3MzksIDc5NDMsIDEyNDk2OCwgMTE5MjM0LCAKKyAgICAxMDYxOCwgMjU4NCwgMCwgMCwgMTI4MjI1LCA5OTk4LCAxMjA1NzMsIDgzMzA2LCAwLCAxMjc3NTAsIDQzNTA4LCA2MjA0LCAKKyAgICAxMjcwNDQsIDEyMTM3NCwgODI3OSwgODc3NiwgNjQ5NTQsIDQ5NzUsIDcwMDc1LCAxMjAxMzAsIDQyNjcsIDE2MzEsIAorICAgIDQyMjA2LCA3Nzk4MywgMTI4MDE1LCAxOTQ3NTMsIDY1NzAwLCA2NjM4NiwgMCwgNjQ2NDUsIDAsIDkyODg3LCAxMTkxNTQsIAorICAgIDEyNTg2LCAwLCA5MjQyLCAxMjAxMDAsIDAsIDQ1MjMsIDU4NDIsIDEwNDk1LCAzMTIyLCA5ODM3OTcsIDc3OTMsIDc4Mjc1LCAKKyAgICA5MzI4LCAxMTkxMDQsIDcwNjg1LCAxMjYwNCwgOTI4ODUsIDY2MTUsIDIyODUsIDY2Nzk2LCAzOTg2LCA0NDAyNSwgMCwgCisgICAgODkxMiwgNjQ1NTUsIDc0MDksIDkyMjQ3LCA5ODMxOTAsIDk1NDEsIDc4Mjc2LCAxMTM2NjksIDExMjc1LCA4NTQwLCAKKyAgICAxMTQ5OCwgMTIwODY4LCAxMjg1NDAsIDQxMDQwLCAyNDU5LCAxMjczMDIsIDEyNTU4LCA0MTA0MSwgNzQ0MTMsIDk4MzEzOCwgCisgICAgMCwgNzc5MzEsIDY4NDI3LCAxMDQ1MCwgMTI1NTEsIDQxMDQzLCA3MDIwLCAxMjAzNTMsIDM3NjUsIDkyODgxLCA5MTc2MTIsIAorICAgIDE2MDYsIDEyMDM0OCwgOTIyOTksIDMwOTMsIDY4NDM2LCAxMDA3MTgsIDk4MzA2MSwgMTE5NjEzLCA5ODM5MzgsIDE5NDc1NiwgCisgICAgNDMxMiwgNzQwOTEsIDEyMDMzNywgNzQ5ODMsIDExOTIzLCA0MDIzLCA2ODM5OSwgNTc2MywgOTQwMTUsIDQ4MjcsIDEwODk0LCAKKyAgICAxMjgxMCwgNjQ0MDYsIDExODc4NSwgNDQ1NSwgNzQzMjEsIDQzMywgMTE5NjIwLCA2NjY2MCwgMjQ5OSwgNjcxNjcsIAorICAgIDY3MTY2LCAxMTg4MzcsIDExOTczLCAxMzA4OSwgNDI5MywgMTIwMzI5LCA0MjIyNCwgNDI3NTgsIDEyMTk2LCA0MjgzNywgCisgICAgNDIyMjYsIDExOTMxOSwgMTI3OTkyLCAxMTkxMjYsIDU4MTcsIDEyNzgwNiwgNTUyNzcsIDMxMjAsIDk3OTcsIDAsIDAsIAorICAgIDExMDg2LCAxMDM4OSwgMTI2NDg1LCAxMjg3ODQsIDQ4OTUsIDY1MzU4LCAxMjQ5NDEsIDQzNTksIDU4NSwgMjM4MywgMzUwOSwgCisgICAgNzAwMzcsIDQ4NiwgNDI5MCwgNTc1OCwgMTAwNzc1LCAxMjExNjAsIDk4MzEwNiwgNzAwNCwgMTEzNjY3LCA2NTg4MCwgCisgICAgMTI2NTE0LCAxMTkwNDgsIDIzODAsIDExMzgwLCA5ODM4NjMsIDkzOTk2LCAyMzc2LCA3ODg0MSwgODM0MDIsIDk4MzI1NiwgCisgICAgNTE5NywgNzA4MzksIDEyMDI0OCwgMTI3MDQ4LCAyMzY2LCAxMDA3MTMsIDExOTYwNCwgNzA4MzcsIDEyMDA0NSwgMCwgCisgICAgMTI4NTU0LCAwLCA5MTc4NDYsIDEwMDcxNSwgMCwgMCwgNzQxODgsIDcxMzQyLCA3ODQ1NSwgNzUwNDgsIDExMzY3NSwgCisgICAgNzQ5MDAsIDEyMDA0NiwgMTI3NTQyLCAxMjAwNDksIDEwMDc3NCwgMTg0NywgMTIwOTc4LCAxMDMzOSwgMTAwNzcyLCAKKyAgICA0MjM4NCwgMTIxMzc5LCA0MjI3LCA3NDE1OCwgMCwgNzQ0OTgsIDQzMDMyLCAxMDA5MjYsIDQyMzY1LCAxOTQ4MzMsIAorICAgIDEyNjcxLCAxMTM4NCwgMTIwMDU5LCA3NDI2NCwgMTIwMDU4LCA2NDc5NywgOTgzMzQ3LCA1ODIwLCAxMjgwMTgsIDEyMDA1MiwgCiAgICAgMTIwMDY1LCAxMjg4MjUsIDEyMDA2NCwgMTIwMDUzLCA0MjEzNywgOTg5MywgMjc1NCwgMTI2NjQsIDEyMDA2MywgMTIxMjg2LCAKICAgICA3Mzc3LCAxMjAwNTEsIDQxNzk5LCA2NTUzMCwgMTcxMSwgMTI5ODQsIDQzMDM5LCAzMTE0LCA2MjU1LCAxMjExMzIsIAotICAgIDY4NjYwLCAwLCAxMDg1MywgOTI2LCA5ODMzNzEsIDc0MTg0LCAxMjA5MTUsIDEyMDA1NSwgMTE5MzAxLCA0MzE3NSwgMCwgCi0gICAgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDExOTA4OCwgMTE5NjA1LCA1MjAsIDQyMDAsIAotICAgIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgMzIxLCAKLSAgICA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTk0ODczLCA5MTc5NzQsIDI4NjEsIDQzNzkzLCAxMDA5NSwgMTIxNDI4LCAKLSAgICA5MTk1LCA5MjM4NiwgMTg2MSwgMCwgNzM3MzMsIDkxNzc4MCwgNjg4MzksIDQzMDQxLCAwLCA0Mzc5NCwgMTI4NTMwLCAKLSAgICAzODU5LCAxMjE4MSwgNDE2NjAsIDgyMDksIDcwNzkzLCA3Mzg2NywgMTI5NzMsIDc1MDE0LCA3NDc1NywgMTI3NTE0LCAKLSAgICA0MTY1OCwgMTI4Mzc2LCAxMjEyMzUsIDU3NjAsIDExMzY5OSwgNzQzLCA0NDE0LCAxMjA3NjYsIDAsIDQyNjMyLCAxMjcyMzYsIAotICAgIDY1MTYxLCA3Mzg5NiwgMTI4NTg5LCAwLCAxNDA1LCAxMTkwNjMsIDQzMjIwLCA0MzM0MSwgMCwgMTk5MTksIDcwMjc4LCAKLSAgICA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTI1MDc3LCAzNTEzLCA3MTExNSwgNzAzNDEsIDQzMzQyLCAxMTkwNjQsIAotICAgIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCA5MjY3OCwgODMyMDQsIAotICAgIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIDkyMzE3LCAwLCA2NzQwNiwgCi0gICAgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgNzQ0NjMsIDEyODk1MiwgCi0gICAgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgNjQ1NzMsIDY0ODk3LCA0MjMsIAotICAgIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTI3ODEyLCAxOTkxMSwgNDIxOCwgMzA4NywgNjQ5NjAsIDEyMTQ0NywgCi0gICAgNDM1NjQsIDAsIDk4MzE4MiwgOTU4NCwgMTA0NjUsIDk4MzkwMiwgNzQzNTksIDEyNjI2LCA5MTA2LCAwLCA0MjY0MiwgCi0gICAgNzEyMzUsIDY0NzUwLCA5MzkwLCAwLCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgCi0gICAgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCA5ODM2NzEsIDEyMTQxMCwgMTExNDksIDc4MDc0LCAKLSAgICA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCAKLSAgICA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIAotICAgIDEyMDIzNSwgMTI4NjQxLCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgMjEwMywgMTAzODcsIDQ0NTMsIAotICAgIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAwLCAxMjkxMzMsIDExOTkyOSwgNDE5ODMsIAotICAgIDc0MTk4LCA2NjE3LCA5MTE2LCAxMTk2NTQsIDkyOTk1LCA0NjIsIDY4MTEwLCAxMDQ5MywgMTIxNDQ5LCA4MTI5LCA5Mjk5NCwgCi0gICAgMTI4MzY1LCA3NDQ3MSwgNjY0NCwgMTE2NTgsIDAsIDEyODI0NSwgMzQ1MiwgMTE5MDYsIDk1ODEsIDEzODUsIDMwOTgsIDAsIAotICAgIDExOTAxMywgNDMzNDAsIDExMTIzLCA0MTAzMywgNjQ5MywgNDI2MjYsIDAsIDEyOTA1MSwgMTE0MjYsIDc3ODg3LCAxNjgxLCAKLSAgICAxMTg3ODksIDEyMDQsIDM3NTUsIDY0NjYxLCA3MjM1LCAxMDE3MCwgMzk2NiwgODkxMSwgMCwgNDE4NDEsIDQzMzM4LCAwLCAKLSAgICAxMTkzMjMsIDU3MjYsIDY0OTE1LCA0MjE3NSwgOTgzOTEzLCAwLCA0MTQ5NywgNjUwNDQsIDEyMDEwOSwgMjg1MSwgNDMwMTcsIAotICAgIDk4MzU4OSwgMTIwODk2LCA0MzczLCA3ODA1OCwgMCwgOTU4NywgMTc4OSwgNjY3MSwgMTI4ODQwLCAzMTAwLCAwLCA2NTM2MCwgCi0gICAgOTE3NTg5LCA5MjM2NSwgMTI4MjAyLCA2NDkyMiwgMCwgODE5MCwgMTIwODMsIDAsIDgzMTQxLCA2NTA2LCA2NDMxMiwgCi0gICAgNzQzNzQsIDIzNjgsIDk4MzE4NywgNDQxOSwgMTIxMjU5LCAxMTkxMjUsIDM0MzksIDE4MjUsIDExOTIsIDEyMDEwNiwgCi0gICAgODg5MSwgMzA4MCwgMTIwMjI4LCAyMzQ3LCA1NDMwLCAxMjAxMDcsIDg5OTAsIDI4NDgsIDkyOTgxLCAxMjEzNzIsIDczOTQyLCAKLSAgICAyNDksIDAsIDAsIDAsIDEyMDY1OCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgOTk1LCAwLCAKLSAgICAxMjEwNDcsIDY0ODI2LCAxMjQ5MzEsIDkxNzc5OCwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAwLCAxMjI3MywgCi0gICAgMTk0ODE0LCA2NzcxNCwgMTIxMTIsIDY3MjcyLCA2NzI2NSwgNjcyNzMsIDY3Mjc0LCAxMjMzNSwgMTIwMTA0LCA2ODAxOSwgCi0gICAgMzQ0MywgMzEyOSwgNjcyNjcsIDIxMDIsIDY1NDQ1LCA3ODI1OCwgNjQ4OTEsIDAsIDc3MjUsIDY1MTA4LCAxMTEyMCwgCi0gICAgOTIwNSwgODYyNCwgNjkyNDYsIDEyNDQ2LCA0MzI5NSwgMTI4NTE5LCA0MTg5NCwgMCwgNjI3NywgNDE2NzIsIDQxODkzLCAKLSAgICAxMDAxMCwgMTI3MzgxLCAzNTQwLCAxMjE0NTAsIDgzNSwgNzEzNDAsIDY5ODE2LCAxMTk4NTQsIDc0NDA4LCAwLCA2NzEwOCwgCi0gICAgNTQyNiwgNDI1OCwgODMxODgsIDEyMDg1OCwgNTQyNCwgOTIzMDYsIDgyODMsIDEyNzk3OCwgNTQzNCwgODMxOTYsIAotICAgIDEyOTAyNywgMTk5MTcsIDExNDA4LCAwLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCAKLSAgICA2NDg2LCA0ODE5LCAxMjgyMzMsIDEyOTEyMywgNTcwLCA4MDk1LCAzNjcyLCAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAKLSAgICAxMjg1MzksIDQzMSwgNjc4MjAsIDAsIDEyODE4MiwgMTI4MDk2LCA2ODE2NywgOTgzNjYzLCAxMzA5NiwgMTI4NjQzLCAKLSAgICAxMjEwMTgsIDQzNDA4LCA5NTE2LCAxMjg1MzgsIDUyNjgsIDQyMjMwLCA0MjIyMCwgMCwgNDQ1MCwgMTIwNTExLCAxMTU0NywgCi0gICAgNDM0MTcsIDEyODU0MiwgMzU2LCAzNDc3LCAyMjcsIDEwNDg4LCA2ODIwMywgMzgyLCAxMTQxOCwgMCwgNTg3OCwgOTgzNzk5LCAKLSAgICAwLCAwLCAwLCA2NDg0LCAyNTQxLCA2NjAzOSwgMTEzNzc3LCA3ODE1NywgOTI3MjMsIDM1NDksIDE5NTA2NywgOTExMCwgCi0gICAgMTE5NjY1LCAyNzQzLCAwLCA0MzI5MCwgMTI4NTg1LCA5MDk3LCAxOTUwMjYsIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIAotICAgIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEyNjQ5NCwgMCwgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAKLSAgICAxMjUxMTEsIDU4NzIsIDY0OTUsIDEyOTEyNSwgMCwgMCwgOTI1NDMsIDY3MTczLCA2NzE3MiwgMTI4NDksIDM5NTMsIDE4OTcsIAotICAgIDkzMDcxLCA2NTA5NCwgMTE5OTQsIDQzMzksIDc0NTU2LCA5MjY1NCwgNjc4NDMsIDAsIDAsIDExOTA4NywgNjg0NzMsIAotICAgIDc0MTA0LCA1MjI4LCAxMTk4MzUsIDc4NjgsIDQzMTg0LCAwLCAxMjA5NTUsIDczOTg2LCA0MzQzOCwgMCwgNDMwMjIsIAotICAgIDkxNzU1MywgMTE2MiwgNzQ5OTUsIDI2NzEsIDEyODU2NywgMTI3MTk4LCA5MjYzMiwgOTI2MzEsIDExODg2NSwgNDU1MywgCi0gICAgNzM4MTEsIDk4MzU3MywgMTk1MDA1LCAxMTg5MjgsIDY4MDg1LCAxOTkyMSwgNzM4MjEsIDExNDI0LCAxOTUwMDIsIDQ1NjcsIAotICAgIDQxODkxLCAwLCA5ODM3ODgsIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTk0NjYyLCAwLCAxOTQ2NjUsIDQzMDQyLCAxMTkyMTIsIAotICAgIDEzNzcsIDEyODY5LCA0ODk3LCA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgCi0gICAgMTk0OTQxLCA0MzI4MiwgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMjExNjYsIDEwNzE5LCA3MDI3NSwgMTg5OCwgCi0gICAgMTQxMywgNDI0NDMsIDAsIDgwMiwgMTIxNDEsIDEyMTEzOCwgODMwOTcsIDY2NDgsIDEwNjcxLCAyNTI4LCAwLCA2NDc4OSwgCi0gICAgOTE2OSwgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgCi0gICAgNDI3MzksIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCAKLSAgICA2NjU3MywgMCwgNzg3MjQsIDc4NzEyLCAxMTc2MSwgMTIxMzE0LCA4MzIyNiwgNDEwOTQsIDAsIDc3OTU4LCAxOTQ4OTMsIAotICAgIDc4NDAzLCA5MjY4OSwgNjE5NiwgNjk0NSwgOTM5NjksIDEyMDk0MiwgNjcwOTUsIDEyMDQ5MSwgMTE4MTYsIDY4ODQ2LCAKLSAgICA1NzMzLCAyOTMwLCA3MDI3NCwgMTI3MTc5LCA0MTA5OCwgOTI3NzEsIDQxMDkzLCA2ODgzNCwgNjY2MjYsIDU4OCwgOTc2MCwgCi0gICAgMTI1MDk5LCAxOTQ3MTcsIDEyMzgsIDIwMCwgOTgzMjA3LCAxNjYwLCA3MzkxNiwgMCwgNjcxNDEsIDc0MzYyLCAwLCAKLSAgICA5MjQ4NSwgMTI0OTMwLCAwLCA3NDk5OSwgMzM5NCwgMTk0ODk0LCAxMjA2NjgsIDAsIDY5OTk2LCAxMjczNTgsIDY2MjE5LCAKKyAgICA2ODY2MCwgMCwgMTA4NTMsIDkyNiwgOTgzMjk2LCA3NDE4NCwgMTIwOTE1LCAxMjAwNTUsIDExOTMwMSwgNDMxNzUsIAorICAgIDEyNzEwMywgNDMwMzcsIDQxNzk4LCA0MTAzNSwgMTE1ODMsIDEyNzc2OSwgNDE4MDEsIDEwMDQ5OCwgMTE5NjA1LCA1MjAsIAorICAgIDQyMDAsIDEyNjk5LCA4MzMxLCA3MDExOCwgMzA5MSwgNDEwMzQsIDY2Mjk4LCA3MDI5MywgODM2MCwgOTgzNDQ1LCA3ODA0NCwgCisgICAgMzIxLCA0MjI5LCA2NDU0MywgMTI4NDcwLCA2NTU2MywgMTAwNzY0LCAxMjkzMTAsIDI4NjEsIDQzNzkzLCAxMDA5NSwgCisgICAgMTIxNDI4LCA5MTk1LCA3Mjc2NywgMTg2MSwgOTgzMDU2LCA3MzczMywgOTE3NzgwLCA2ODgzOSwgNDMwNDEsIDAsIDQzNzk0LCAKKyAgICAxMDA3NjksIDM4NTksIDEyMTgxLCA0MTY2MCwgODIwOSwgNzA3OTMsIDczODY3LCAxMjk3MywgNzUwMTQsIDc0NzU3LCAKKyAgICAxMjc1MTQsIDQxNjU4LCAxMjgzNzYsIDEyMTIzNSwgNTc2MCwgMTEzNjk5LCA3NDMsIDQ0MTQsIDEyMDc2NiwgMCwgNDI2MzIsIAorICAgIDEyNzIzNiwgNjUxNjEsIDczODk2LCAxMjg1ODksIDEwMDU5MywgMTQwNSwgMTE5MDYzLCA0MzIyMCwgNDMzNDEsIDE5NDc5MiwgCisgICAgMTk5MTksIDcwMjc4LCA2NDUzMiwgNjUzNjcsIDQzNzEwLCAxMTE5OSwgMTIxNDAwLCAzNTEzLCA3MTExNSwgNzAzNDEsIAorICAgIDQzMzQyLCAxMTkwNjQsIDY1NTI5LCA2NTM2NCwgODMyMDgsIDgzMTcwLCA2NDg1LCAxMzk3LCAxOTQ3ODEsIDQxOTg2LCAKKyAgICA5MjY3OCwgODMyMDQsIDgzMjEyLCA3NDA5NywgODMyMTMsIDc0NzEsIDEyMDc5LCA2Nzk5NywgNjg0MywgNDMyODcsIAorICAgIDkyMzE3LCAwLCA2NzQwNiwgMTIwMjM5LCAxOTQ2NzgsIDcxOTE0LCAxMDk5LCAxMDQ5MCwgODMyMDEsIDEwNTAxLCA2NTE4MSwgCisgICAgNzQ0NjMsIDEyODk1MiwgNDY0LCA0MTYyNCwgNjUyODMsIDY3NjYzLCA3ODIyMiwgMTM0NiwgMTk0NjA5LCA2NTY3OSwgCisgICAgNjQ1NzMsIDY0ODk3LCA0MjMsIDE4MTgsIDY1MTQ0LCA4Mjk2MywgODI3MiwgMTIxMjAzLCAxOTkxMSwgNDIxOCwgMzA4NywgCisgICAgNjQ5NjAsIDEyMTQ0NywgNDM1NjQsIDk4Mzc0OSwgOTgzMTgyLCA5NTg0LCAxMDQ2NSwgOTgzOTAyLCA3NDM1OSwgMTI2MjYsIAorICAgIDkxMDYsIDk4MzA2NCwgNDI2NDIsIDcxMjM1LCA2NDc1MCwgOTM5MCwgMTIwNzM3LCA0MTc5NywgMTk0NzMwLCAxMjgzMzMsIAorICAgIDI2NSwgNDE3OTUsIDY0NjY2LCA3NDYyOCwgNDM1MzAsIDI3NTIsIDEyNzM2NSwgMTI4NDU5LCAxMjY0ODIsIDU5LCAKKyAgICA5ODM0MjcsIDEyMTQxMCwgMTExNDksIDc4MDc0LCA3Nzg3MywgNDE4MTAsIDgzMTYyLCA3MDEwLCAwLCA0MTgwOSwgNDE0OTUsIAorICAgIDExOTM2NCwgNTg3NywgNDIyNTIsIDQyMjEzLCA4MDA5LCAzMzA1LCA0MzAzMywgNTExLCA5MjcwMCwgNDM4NDgsIDEzMTI3LCAKKyAgICAxMjAwNjcsIDk4Mzk0NiwgNzQzOTcsIDEyMDIzNSwgMTAwODM1LCA2NTkxNSwgMTQwMCwgNDE4MTIsIDEwNjg1LCA3NTAxNywgCisgICAgMjEwMywgMTAzODcsIDQ0NTMsIDQzMjc2LCA5MTc3ODMsIDExMTY5LCAxMjg5MzksIDY0ODEsIDQxMjEzLCAwLCAxMDA4MzksIAorICAgIDEyOTEzMywgMTAwODM4LCA0MTk4MywgNzQxOTgsIDY2MTcsIDkxMTYsIDExOTY1NCwgOTI5OTUsIDQ2MiwgNjgxMTAsIAorICAgIDEwNDkzLCAxMjE0NDksIDgxMjksIDkyOTk0LCAxMjgzNjUsIDc0NDcxLCA2NjQ0LCAxMTY1OCwgMCwgMTI4MjQ1LCAzNDUyLCAKKyAgICAxMTkwNiwgOTU4MSwgMTM4NSwgMzA5OCwgMTAwNDU3LCAxMTkwMTMsIDQzMzQwLCAxMTEyMywgNDEwMzMsIDY0OTMsIAorICAgIDQyNjI2LCAwLCAxMjkwNTEsIDExNDI2LCA3Nzg4NywgMTY4MSwgMTE4Nzg5LCAxMjA0LCAzNzU1LCA2NDY2MSwgNzIzNSwgCisgICAgMTAxNzAsIDM5NjYsIDg5MTEsIDEwMTAxMywgNDE4NDEsIDQzMzM4LCAxOTQ5NTQsIDEwMDg0OCwgNTcyNiwgNjQ5MTUsIAorICAgIDQyMTc1LCA5ODM5MTMsIDAsIDQxNDk3LCA2NTA0NCwgMTAwODQ0LCAyODUxLCA0MzAxNywgMTAwNDg0LCAxMjA4OTYsIAorICAgIDQzNzMsIDc4MDU4LCAwLCA5NTg3LCAxNzg5LCA2NjcxLCAxMjg4NDAsIDMxMDAsIDAsIDY1MzYwLCAxMDEwMTIsIDkyMzY1LCAKKyAgICAxMjA5MzcsIDY0OTIyLCAxMDA0ODYsIDgxOTAsIDEyMDgzLCAwLCA4MzE0MSwgNjUwNiwgNjQzMTIsIDc0Mzc0LCAyMzY4LCAKKyAgICA5ODMxODcsIDQ0MTksIDEyMTI1OSwgMTE5MTI1LCAzNDM5LCAxODI1LCAxMTkyLCAxMDA0ODgsIDg4OTEsIDMwODAsIAorICAgIDEyMDIyOCwgMjM0NywgNTQzMCwgMTAwNDg3LCA4OTkwLCAyODQ4LCA5Mjk4MSwgMTIxMzcyLCA3Mzk0MiwgMjQ5LCAKKyAgICA5ODMwNDAsIDkxNzg2OSwgOTgzODI1LCA3NDgxNCwgMTE5MzI0LCAxMjg3MTIsIDg4ODMsIDExOTg2MCwgNzI4LCAxMTE3MywgCisgICAgOTk1LCAwLCAxMDA2NTcsIDY0ODI2LCAxMDA2NTYsIDEyOTM3MSwgMTI4MzQ4LCAwLCAxOTk0NSwgODA5MSwgNTU4LCAKKyAgICAxMjkxMzQsIDEyMjczLCAxMjkxNTYsIDY3NzE0LCAxMjExMiwgNjcyNzIsIDY3MjY1LCA2NzI3MywgNjcyNzQsIDEyMzM1LCAKKyAgICAxMjAxMDQsIDY4MDE5LCAzNDQzLCAzMTI5LCA2NzI2NywgMjEwMiwgNjU0NDUsIDc4MjU4LCA2NDg5MSwgMTk1MDY5LCAKKyAgICA3NzI1LCAxMTg0MywgMTExMjAsIDkyMDUsIDg2MjQsIDY5MjQ2LCAxMjQ0NiwgNDMyOTUsIDEyODUxOSwgNDE4OTQsIDAsIAorICAgIDYyNzcsIDQxNjcyLCA0MTg5MywgMTAwMTAsIDEyNzM4MSwgMzU0MCwgMTAwODI3LCA4MzUsIDcxMzQwLCA2OTgxNiwgCisgICAgMTE5ODU0LCA3NDQwOCwgMCwgNjcxMDgsIDU0MjYsIDQyNTgsIDgzMTg4LCAxMDA3NTgsIDU0MjQsIDkyMzA2LCA4MjgzLCAKKyAgICAxMjc5NzgsIDU0MzQsIDgzMTk2LCAxMjkwMjcsIDE5OTE3LCAxMTQwOCwgMTI3MzkyLCAxMTk0NywgMTI4MzMwLCAxNDA0LCAKKyAgICAzMDk1LCAxMTQzMiwgMTIxMTIyLCAzNDY0LCA2NDg2LCA0ODE5LCAxMDA3NTksIDEyNzQwNCwgNTcwLCA4MDk1LCAzNjcyLCAKKyAgICAxMTk4NjQsIDE0OTgsIDY3ODY2LCAwLCAxMjg1MzksIDQzMSwgNjc4MjAsIDc4MDgwLCAxMjgxODIsIDEyODA5NiwgNjgxNjcsIAorICAgIDk4MzQ1OSwgMTMwOTYsIDEyODY0MywgMTIxMDE4LCA0MzQwOCwgOTUxNiwgMTI4NTM4LCA1MjY4LCA0MjIzMCwgNDIyMjAsIAorICAgIDAsIDQ0NTAsIDEyMDUxMSwgMTE1NDcsIDQzNDE3LCAxMjg1NDIsIDM1NiwgMzQ3NywgMjI3LCAxMDQ4OCwgNjgyMDMsIDM4MiwgCisgICAgMTE0MTgsIDEyMDY4MSwgNTg3OCwgOTE3ODYwLCAwLCAwLCAxOTQ4NzcsIDY0ODQsIDI1NDEsIDY2MDM5LCAxMTM3NzcsIAorICAgIDc4MTU3LCA5MjcyMywgMzU0OSwgMTk1MDY3LCA5MTEwLCAxMTk2NjUsIDI3NDMsIDEyMTQzMiwgNDMyOTAsIDEyODU4NSwgCisgICAgOTA5NywgNzQzNzksIDQzMDE1LCA4NzgyLCAwLCA3NzYsIDI1MjQsIDQyNzA3LCA4NTczLCAxMjA5MDMsIDEwMDY2NiwgMCwgCisgICAgNzExMDIsIDQyNjk0LCA2NDk0NCwgODk1MiwgMzg1NiwgMTE4ODE4LCAxMDA2NjIsIDU4NzIsIDY0OTUsIDEyOTEyNSwgCisgICAgMTI3NDY3LCAwLCA5MjU0MywgNjcxNzMsIDY3MTcyLCAxMjg0OSwgMzk1MywgMTg5NywgOTMwNzEsIDY1MDk0LCAxMTk5NCwgCisgICAgNDMzOSwgNzQ1NTYsIDkyNjU0LCA2Nzg0MywgMTI4OTQ2LCAwLCAxMTkwODcsIDY4NDczLCA2Njc3OCwgNTIyOCwgMTE5ODM1LCAKKyAgICA3ODY4LCA0MzE4NCwgMCwgMTIwOTU1LCA3Mzk4NiwgNDM0MzgsIDAsIDQzMDIyLCA5MTc1NTMsIDExNjIsIDc0OTk1LCAKKyAgICAyNjcxLCAxMjg1NjcsIDEyNzE5OCwgOTI2MzIsIDkyNjMxLCAxMTg4NjUsIDQ1NTMsIDczODExLCA5MTc5NDcsIDExMzcyMywgCisgICAgMTE4OTI4LCA2ODA4NSwgMTk5MjEsIDczODIxLCAxMTQyNCwgMTk1MDAyLCA0NTY3LCA0MTg5MSwgMTI3MDA0LCA5ODM3ODgsIAorICAgIDU1MjQ5LCA0ODIwLCA2NTIzOSwgMTI5MzM4LCAwLCAxMDEwNDMsIDQzMDQyLCAxMTkyMTIsIDEzNzcsIDEyODY5LCA0ODk3LCAKKyAgICA0MjgyMSwgOTI1MCwgNzAyNzIsIDQ0MzgsIDY0Mzg1LCAwLCAxNzUzLCAxMTMzMSwgNjE0NywgMTI4NjExLCA0MzI4MiwgCisgICAgODgzMywgNjk5OTgsIDAsIDY1MDQsIDc4NDA4LCAxMDA2ODgsIDEwNzE5LCA3MDI3NSwgMTg5OCwgMTQxMywgNDI0NDMsIAorICAgIDk4MzM4NywgODAyLCAxMjE0MSwgMTIxMTM4LCA4MzA5NywgNjY0OCwgMTA2NzEsIDI1MjgsIDcyODgwLCA2NDc4OSwgOTE2OSwgCisgICAgODM4LCA2ODgxOSwgNjg4MDcsIDg0NCwgNTAxNCwgNjYyOTcsIDI1NiwgNjg4MTgsIDk5OTAsIDEyODM5OCwgNDI3MzksIAorICAgIDkxNzg1MSwgNzU0MiwgNjU0NjQsIDk3MjYsIDgzMjI0LCA2NDg5LCAxMDA0OCwgNzQzMjYsIDc4NzE5LCA2NjU3MywgMCwgCisgICAgNzg3MjQsIDc4NzEyLCAxMTc2MSwgNzA2NjUsIDgzMjI2LCA0MTA5NCwgMCwgNzc5NTgsIDExOTkxOCwgNzg0MDMsIDkyNjg5LCAKKyAgICA2MTk2LCA2OTQ1LCA5Mzk2OSwgMTIwOTQyLCA2NzA5NSwgMTIwNDkxLCAxMTgxNiwgNjg4NDYsIDU3MzMsIDI5MzAsIAorICAgIDcwMjc0LCAxMjcxNzksIDQxMDk4LCA5Mjc3MSwgNDEwOTMsIDY4ODM0LCA2NjYyNiwgNTg4LCA5NzYwLCAxMDA1NjgsIAorICAgIDE5NDcxNywgMTIzOCwgMjAwLCA5ODMyMDcsIDE2NjAsIDczOTE2LCAwLCA2NzE0MSwgNzQzNjIsIDk4Mzc4NCwgOTI0ODUsIAorICAgIDEyNDkzMCwgMCwgNzQ5OTksIDMzOTQsIDcwNzM0LCAxMjA2NjgsIDEwMDQ3NywgNjk5OTYsIDEyNzM1OCwgNjYyMTksIAogICAgIDcyNDI1LCA0MzI4NCwgNjgwNzIsIDc4MTcsIDE4NDEsIDExMDU1LCA2NjgzNSwgMTk0OTc5LCA3NDYwNywgMTY2OSwgCi0gICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5ODAsIDk4MzQ1MCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCi0gICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgOTgzODQ1LCAKLSAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCAwLCAxMTgxOSwgNzE5MDgsIDEyMDA5LCAxMjM5OSwgMTIxMjE3LCAKLSAgICA2Nzg1MiwgNjU1MzcsIDAsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIDcwMTIzLCAKLSAgICA2NTMxNywgNzc4ODAsIDAsIDU4NzYsIDcwMzc0LCAxMjMwNCwgMCwgMCwgNjUzMTUsIDkyNjcwLCAxMjg1MTEsIDcxODYyLCAKLSAgICAwLCAxMjc5NTcsIDExOTYyMSwgMTExMTQsIDcxOTA5LCAxMjQ0NywgNjQ0ODYsIDEyMTIzNiwgMTI2NTYyLCA5ODMxMjksIDAsIAotICAgIDEyMTM5MywgOTgzODAyLCA0Mjc2NywgMTA5MTUsIDk4MzE3NCwgMTIwMDcsIDQzNjk1LCA2ODAzMywgMTE5NzUsIDE5NDg3OCwgCi0gICAgMCwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCA0MzcwNiwgNDQ5NiwgMTk0ODc5LCA4MzEwOCwgCi0gICAgMTIwMjQxLCAxMjgxNjQsIDAsIDAsIDk4MzU1MywgNjQ3MzAsIDcwMDQxLCA2NjcxNCwgNjgyMjIsIDAsIDcwMDc2LCAKLSAgICA2NTU5NiwgNjc4MzcsIDExNDE2LCA0MjgwLCA2NzY1NSwgODc2NSwgMTI3ODQsIDc3OTIsIDEzOTMsIDc4MTkxLCAxMTE1NywgCi0gICAgNzQzODYsIDEyNzI3NCwgODIzMywgMTI4MjAsIDk4MzczMCwgNjY4MywgMTI1MTEyLCAzNDQyLCAxMjE0NCwgMjg0MSwgCi0gICAgMTI1NDMsIDAsIDE0NzMsIDQyODIwLCA2NDMyOSwgMTIwODgwLCA2NzI0MywgNjg2NDIsIDY0ODgsIDM1NywgMTA0OCwgCi0gICAgNDExMDAsIDcyNDE3LCA0MTEwNCwgOTQwMDMsIDM0MDYsIDEwNTQsIDcxMzIwLCAxMDQwLCA2NTQ1MCwgOTgzMzg1LCA0NDM0LCAKLSAgICAxMDY5LCAxOTQ3ODQsIDExODg2MiwgNjU3MzcsIDEyMTIwMiwgMTI4NzA1LCAwLCA4MzIxMSwgOTY5MywgNDE5NDMsIAotICAgIDY4MzA1LCA0MTkzMSwgNDE3NTksIDEyNzU3LCA0MzUzLCA5ODMzNTMsIDEwNTksIDk3OTAsIDg5OTUsIDExOTk3NCwgCi0gICAgOTE3NzcwLCA2NTkzNywgNzg1NzIsIDQxNzU4LCAxMDY0NiwgMTIxMTU5LCAxMTg4MzMsIDkyMzcyLCA3MDQyNCwgNzQ4MzAsIAotICAgIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgCi0gICAgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCAKLSAgICA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgCi0gICAgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIDQxNzgzLCA0MTc4NiwgMTI3MDkzLCAxMjc5NywgMjc1NSwgCi0gICAgNjQ1NzEsIDc4NTc4LCAxOTQ5MjcsIDQ4NTcsIDk4MzU3NywgNDQyOCwgMTI3OTQsIDczNzU1LCAxMjgwNjEsIDc4NTc0LCAwLCAKLSAgICAxMTExNiwgNDM4NDIsIDU3NDcsIDc4ODI1LCA3MDQ3MSwgNzk3OCwgNDEwOTIsIDc0NTcxLCAwLCAxMTkyNCwgNDM4MTIsIAotICAgIDQyMTQ0LCA2NTAxNSwgMCwgNTYzLCAwLCAxMjk0MTIsIDEyNzk4LCAxMTI3MSwgNTcsIDkyNzE3LCA4MzQ5NSwgOTE3ODYwLCAKLSAgICAxMTkwNDMsIDkxNzYxOCwgOTQwNTEsIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMCwgMTE5MTY4LCAwLCA3MDM5MiwgCi0gICAgNjQ1MzcsIDEyNzkxNCwgMjc3LCA3NDM4NSwgNzIyOSwgMTI3NjEsIDk4MzE0NSwgNzQ0NjYsIDEzMDI1LCA2NDgxMSwgCi0gICAgODc1NywgNzg4MjQsIDc4MTg4LCAxNTc0LCA3MzgxLCAwLCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAKLSAgICAxMjA1NzQsIDEwMzksIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTI5MTU2LCA2OTcyNSwgOTA1NSwgCi0gICAgNDE4NTMsIDQ4NTgsIDc1MDAwLCA5MTc5OTAsIDQzNiwgNDc3MSwgOTE3OTM2LCAyNzg2LCA5MzAyOCwgNDg1NiwgODA1MSwgCi0gICAgOTI1MDAsIDExOTYwOSwgNzEzMjcsIDk2NDQsIDcxMTMzLCAxMjUwMDksIDEyODg3MywgMTk0OTE2LCAxMjA3MzIsIDY2NzEwLCAKLSAgICA2ODA4NCwgOTgzMzYxLCA3MzkwNiwgNjc0MDksIDEyNzExNCwgOTE3OTE2LCAxMDIzNCwgNTg0MywgMTE5MzksIDcwMzQ2LCAKLSAgICA0MjE1NywgMCwgMzE1NywgMTk0NjU5LCA2ODM5MywgNzUwMzUsIDM1MDQsIDcwNDIyLCAwLCAxMDgyMiwgNTE0OSwgNjYwMjksIAotICAgIDEwMjI2LCA2NTE0MiwgMTI4MDI1LCAzNTk0LCA0MjQyNCwgMTI0OTkzLCA0MCwgMTI2NTcsIDk4MzY2NSwgMCwgMzg2LCAKLSAgICAxMjE0NjcsIDg4MzQsIDEyMDk3NCwgMTI4MTUsIDQzNTc0LCAxMjE0MzAsIDczOTA3LCAxMjc3OTIsIDcwMTEzLCA3MjIwLCAKLSAgICAxMTgzOSwgMTIxMTQzLCA3NDMxNiwgMTk0NzUyLCA2NTMyMiwgNDMwNCwgNzQ1MDMsIDgxNjAsIDc0MzE0LCAxOTQ3NTMsIAotICAgIDEyMTI3NiwgMCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgCi0gICAgMTI4NDc0LCA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgMTI3MTEwLCA3NDM4NywgNzgxNzksIDc4NTk4LCAKLSAgICA3NDQ5MiwgNjA5NywgNzU2OCwgODc4MCwgNDk4MiwgMTI3NDY0LCA3NDUwMSwgMTk0NzYzLCA3ODU5MiwgNjg3NDUsIDI2NzIsIAotICAgIDM3MzUsIDEyNzQ3MCwgMTMxMzgsIDQyMjY2LCA5NDg0LCAxMDcyNCwgNDEyMDIsIDcxMzY0LCAxMjgzNzAsIDQzNzQyLCAKLSAgICAxMjgzNzMsIDk0ODcsIDExOTk1OSwgNjg3ODUsIDM4NDIsIDcxOTExLCA3ODY2OCwgMTI0NDIsIDYxOTMsIDk3OTEsIAotICAgIDExOTM0NCwgMCwgNDI1MTYsIDcyMjgsIDc1NTksIDc0ODAzLCA2NjcyMSwgNzg3MywgMTEzOTksIDExOTIxOSwgMTk0NjkxLCAKLSAgICA3MDAwNiwgMTk0NjkwLCAxMjc1MzcsIDM2MDQsIDEyMDY4MywgMTE5MTg4LCAxMjg4NzcsIDc4NTQwLCA3ODU0MSwgNDI1MDcsIAotICAgIDE5NjIsIDQzMzA1LCA3ODQ3NiwgNDI1MDUsIDExNjYwLCAxMjEwMjEsIDIwNzIsIDkyMzEyLCA2OTk1LCA3NDE3MywgNTQzNywgCi0gICAgNzQxNzQsIDEwNjY5LCA4NzAyLCA3OTY0LCA5MjM1MiwgOTgzNzc2LCAxOTksIDY4MDc1LCA0MTA1LCAxOTQ4NDUsIAotICAgIDEyNzk0MiwgNzUwMDYsIDE5NDcxMCwgNjc4MTgsIDEzMTQ4LCA3NTYwLCA3ODQ3OSwgOTIyNiwgNzg0NzgsIDE5NTA3MCwgCi0gICAgNjQ3MiwgNjU4MTQsIDcxOTE5LCAxMjEyMTgsIDQ3MjQsIDEyODQ5MSwgMTk1MDQxLCA5MTkxLCAxOTQ2NDUsIDY0NDMyLCAKLSAgICAxMjAyNzAsIDgyOTg3LCAxMTkxOTAsIDEwMTk2LCA3ODg2LCAwLCA2NTg1LCAwLCA2NjgwLCAxOTUwNDIsIDk4MzQyNSwgCi0gICAgNzE4NzIsIDY2NzksIDc0NDEyLCA5MjI1MSwgMTk0ODY2LCA3NDQyMSwgMTEzODIsIDEyODI1NCwgNDM4NjIsIDc4NTkxLCAKLSAgICAxMTM3MzMsIDE5NDY3OSwgMTk0ODMyLCA2NjgxLCAxMjc0ODIsIDEyNjkzLCAxOTQ4MzYsIDQyNzI3LCA3ODE5NiwgCi0gICAgMTI4MjUyLCA0Mzg3NCwgNjU0NDIsIDY4MDQ3LCA2OTczMywgOTk4OSwgNDMyNDgsIDY2MjQ4LCAxOTQ4MTYsIDAsIDExMzIxLCAKLSAgICAxMjg4NDUsIDEyMDgwOSwgMTk0ODE5LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCAKLSAgICA5MjQ0NCwgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgCi0gICAgMTY3NywgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIAotICAgIDEwMTYwLCAwLCAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgCi0gICAgNjQ5MTYsIDY0NzM2LCAxMTg4MzUsIDAsIDY0NjU1LCA5ODMwNTMsIDExODkyMiwgMjA2NCwgMCwgNDMxNTgsIDc5MDIsIAotICAgIDk4MzIzMSwgNjUyNjUsIDE5NDYzOSwgMTIxMDgwLCAxMjcxNzAsIDEyNzA0MSwgMTI4MDA2LCA5MjU1MCwgOTgzMTg2LCAKLSAgICAxMjk5NCwgOTI3MjgsIDEwODI4LCA3NDM3OCwgNjIyOCwgNDMwNywgMzQ4MiwgMTI4NTI3LCA4MzIzMSwgNzIzODksIAotICAgIDgzMDc5LCA1MDYsIDc0NTczLCA0MTE5NCwgNjU3MzUsIDIwNTUsIDQzMjU1LCA0MTE5NSwgMCwgODE2OSwgMTIxNDA3LCAKLSAgICA4ODQxLCA5ODM3NDcsIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgCi0gICAgNzQzMzMsIDEyMDE4MiwgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIAotICAgIDY1ODQsIDc3NDksIDExMDM3LCAxMjg3NDMsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAKLSAgICAxOTM1LCAxMTUxNywgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMjAxODksIDc0ODM5LCAxMjAxOTEsIDEyMTcsIAotICAgIDY0NzAyLCAxMjY0MywgODI1LCAxMjc4MzgsIDE5NDkwNSwgMTIyOTQsIDkyNDI4LCA3ODgzNCwgOTEzOCwgNzg4MzEsIAotICAgIDc4ODMzLCAxMjYzMSwgNzE4NzEsIDExMDgwLCA3NDU1NCwgNjQwMDAsIDU1OTEsIDEyMzksIDEyNzE5OSwgMTEzMTMsIAotICAgIDE5NDgwMywgMzQwMywgOTgzNjU1LCAxMjAyNzEsIDY0MzY0LCA5MjI2OSwgMTIxMjgyLCA3MjQzMSwgODk5OCwgMTI5ODgsIAotICAgIDExOTk4MywgOTE1MiwgOTIxNjEsIDAsIDEyNjQ4NCwgNjc1ODksIDQxODUwLCA2NDI5MCwgMzQzMywgOTIzOTMsIDEyNjE1LCAKLSAgICAxNTk0LCA0MjE5MiwgNjkxNCwgNjYzOTIsIDAsIDExOTU2OSwgNzQ1NjUsIDQxMzUzLCA2NzYwMiwgNjc2MTEsIDQzMzcsIDAsIAotICAgIDEyNzI5NiwgOTE4LCA2NTAzNSwgNDEzNTEsIDc2ODEsIDE5NDkwMCwgNDI1NzcsIDQxMzkzLCAxMjY2OCwgNzIzOTUsIAotICAgIDI0NzcsIDEyNzI4NSwgMTIxMjQ5LCAxMTg4ODAsIDAsIDY3NjA0LCA2NzY4MywgMTI3MjM1LCA1NzMsIDEyNzI4MiwgCi0gICAgMTIwNTQzLCAxMTQxNywgOTI2NjEsIDExOTgxNCwgMTE5MzA5LCA2NzU5OSwgMCwgNzI0MTAsIDY3NjA3LCAxMTQ4MiwgMCwgCi0gICAgMzk4MSwgMzM1NywgMCwgNDIyMjMsIDQyMDcsIDEyODgsIDc4NTAzLCA3ODgzOSwgNjc3MjgsIDc3OTA3LCAxMTU4OSwgCisgICAgMTA3NzYsIDc0NTM0LCA3NzAxLCAxOTQ5NzYsIDEwMDQ3NCwgNzQ5OTIsIDE3MzIsIDQwMzAsIDk4MzQ0MiwgMzk2MywgCisgICAgNjUzMzUsIDEyNzUzMCwgNDE3NjgsIDY0OTEsIDY1MzMzLCA2NTMyNCwgOTE0LCA2NTMyMywgODA3MSwgMzUzOCwgMTk1MDEzLCAKKyAgICAyMjg3LCA2NTMyOCwgOTI0NDEsIDc0MzY3LCA3NjE0LCA5ODM5NTMsIDExODE5LCA3MTkwOCwgMTIwMDksIDEyMzk5LCAKKyAgICAxMjEyMTcsIDY3ODUyLCA2NTUzNywgNzgwMDIsIDEwODQxLCA0MzQzMCwgNTMwMSwgMCwgOTI2MTgsIDU3MzQsIDg5NjAsIDAsIAorICAgIDcwMTIzLCA2NTMxNywgNzc4ODAsIDk4MzE5OSwgNTg3NiwgNzAzNzQsIDEyMzA0LCAxMjkzNTUsIDAsIDY1MzE1LCA5MjY3MCwgCisgICAgMTI4NTExLCA3MTg2MiwgMCwgMTI3OTU3LCAxMTk2MjEsIDExMTE0LCA3MTkwOSwgMTI0NDcsIDY0NDg2LCAxMjEyMzYsIAorICAgIDEyNjU2MiwgOTgzMTI5LCAwLCAxMjEzOTMsIDk4MzgwMiwgNDI3NjcsIDEwOTE1LCA5ODMxNzQsIDEyMDA3LCA0MzY5NSwgCisgICAgNjgwMzMsIDExOTc1LCAxMDEwMTAsIDEyODc0NSwgOTI2MDQsIDI1NTUsIDg2MjksIDEyODY0MCwgNDExMzMsIDQxODcyLCAKKyAgICA0MzcwNiwgNDQ5NiwgMTAwNjkyLCA4MzEwOCwgMTIwMjQxLCAxMjgxNjQsIDEwMDY5MSwgMCwgOTgzNTUzLCA2NDczMCwgCisgICAgNzAwNDEsIDY2NzE0LCA2ODIyMiwgMCwgNzAwNzYsIDY1NTk2LCA2NzgzNywgMTE0MTYsIDQyODAsIDY3NjU1LCA4NzY1LCAKKyAgICAxMjc4NCwgNzc5MiwgMTM5MywgNzgxOTEsIDExMTU3LCA3NDM4NiwgMTI3Mjc0LCA4MjMzLCAxMjgyMCwgMTAwODQ3LCAKKyAgICA2NjgzLCAxMjUxMTIsIDM0NDIsIDEyMTQ0LCAyODQxLCAxMjU0MywgMTAwNjk5LCAxNDczLCA0MjgyMCwgNjQzMjksIAorICAgIDEwMDgxNiwgNjcyNDMsIDY4NjQyLCA2NDg4LCAzNTcsIDEwNDgsIDQxMTAwLCA3MjQxNywgNDExMDQsIDk0MDAzLCAzNDA2LCAKKyAgICAxMDU0LCA3MTMyMCwgMTA0MCwgNjU0NTAsIDExMzc2OSwgNDQzNCwgMTA2OSwgMTk0Nzg0LCAxMDA3MDMsIDY1NzM3LCAKKyAgICAxMjAxMjksIDEyMDMwMiwgMCwgODMyMTEsIDk2OTMsIDQxOTQzLCA2ODMwNSwgNDE5MzEsIDQxNzU5LCAxMjc1NywgNDM1MywgCisgICAgOTgzMzUzLCAxMDU5LCA5NzkwLCA4OTk1LCAxMTk5NzQsIDkxNzc2OSwgNjU5MzcsIDc4NTcyLCA0MTc1OCwgMTA2NDYsIAorICAgIDEwMDY2NSwgMTE4ODMzLCAyMjY4LCA3MDQyNCwgNzQ4MzAsIDc4NTY5LCAxMjc0MywgOTgzNjg5LCA2NDgwLCA5MTc3NjEsIAorICAgIDQxNzc5LCA0MjU4MCwgNjY2MDEsIDEyMjA3LCA3Nzg5NSwgNjMzNSwgNDM5MTksIDExMzEyLCA2NDgwNywgOTI5NjIsIAorICAgIDY5OTg5LCA0MTc2NywgMTE5NjI5LCA5ODM3NjQsIDQzMDIwLCA3NDk3NCwgMzk1NSwgNzQyNTQsIDEyMDYzMiwgOTgzNzU0LCAKKyAgICA5MTc4NjEsIDcwMTg3LCA2OTk3NSwgOTc3MCwgOTI0NiwgMTIyMzAsIDEyNTA0NywgMTI5MTA1LCA3ODU4MCwgMTA0NDgsIAorICAgIDQxNzgzLCA0MTc4NiwgNzA2NjMsIDEyNzk3LCAyNzU1LCA2NDU3MSwgNzg1NzgsIDEyNzk5NCwgNDg1NywgOTgzNTc3LCAKKyAgICA0NDI4LCAxMjc5NCwgNzM3NTUsIDEwMDcyMiwgNzg1NzQsIDAsIDExMTE2LCA0Mzg0MiwgNTc0NywgNzg4MjUsIDcwNDcxLCAKKyAgICA3OTc4LCA0MTA5MiwgNzQ1NzEsIDAsIDExOTI0LCA0MzgxMiwgNDIxNDQsIDY1MDE1LCAxMDA3MjUsIDU2MywgMCwgCisgICAgMTAwNzk1LCAxMjc5OCwgMTEyNzEsIDU3LCA5MjcxNywgODM0OTUsIDEwMDcyNywgMTE5MDQzLCA3MTI2OCwgOTQwNTEsIAorICAgIDQzMTM3LCA2OTQsIDk4MzcxOSwgOTg3NiwgMTI4NzIwLCA4MzI3MywgMCwgNzAzOTIsIDY0NTM3LCAxMjc5MTQsIDI3NywgCisgICAgNzQzODUsIDcyMjksIDEyNzYxLCA5ODMxNDUsIDc0NDY2LCAxMzAyNSwgNjQ4MTEsIDg3NTcsIDc4ODI0LCA3ODE4OCwgCisgICAgMTU3NCwgNzM4MSwgMTk0NjE2LCAyNTI1LCA0ODUyLCA1NzQ5LCA2ODQ2NSwgMTMwMjcsIDQyODI0LCAxMjA1NzQsIDEwMzksIAorICAgIDcxNTEsIDEwMTU1LCA1NzQ1LCAxODgsIDQxODU4LCAxMTU5MiwgMTAwNjYxLCA2OTcyNSwgOTA1NSwgNDE4NTMsIDQ4NTgsIAorICAgIDc1MDAwLCA5Mjg5NiwgNDM2LCA0NzcxLCA5MTc5MzYsIDI3ODYsIDkzMDI4LCA0ODU2LCA4MDUxLCA5MjUwMCwgMTE5NjA5LCAKKyAgICA3MTMyNywgOTY0NCwgNzExMzMsIDEyNTAwOSwgMTI4ODczLCAxOTQ5MTYsIDEyMDczMiwgNjY3MTAsIDY4MDg0LCA5ODMzNjEsIAorICAgIDczOTA2LCA2NzQwOSwgMTI3MTE0LCA5MTc2MTQsIDEwMjM0LCA1ODQzLCAxMTkzOSwgNzAzNDYsIDQyMTU3LCAwLCAzMTU3LCAKKyAgICAxOTQ2NTksIDY4MzkzLCA3NTAzNSwgMzUwNCwgNzA0MjIsIDk4MzA0MiwgMTA4MjIsIDUxNDksIDY2MDI5LCAxMDIyNiwgCisgICAgNjUxNDIsIDEyODAyNSwgMzU5NCwgNDI0MjQsIDEyNDk5MywgNDAsIDEyNjU3LCA5ODM2NjUsIDAsIDM4NiwgMTIxNDY3LCAKKyAgICA4ODM0LCAxMjA5NzQsIDEyODE1LCA0MzU3NCwgMTIxNDMwLCA3MzkwNywgMTAwNTEzLCA3MDExMywgNzIyMCwgMTE4MzksIAorICAgIDEyMTE0MywgNzQzMTYsIDE5NDc1MiwgNjUzMjIsIDQzMDQsIDc0NTAzLCA4MTYwLCA3NDMxNCwgMTAwNTExLCAxMjEyNzYsIAorICAgIDk4Mzk0MCwgMTI4NTI2LCAxMzQ4LCA5MjM0OSwgNzg1OTcsIDEyMTEzOSwgMTMzMDMsIDcwNDA2LCA5MjM5MiwgMTIxMzg0LCAKKyAgICA3NTk5LCAxMjc4LCA0MzYxNiwgMTMyNjksIDEyNzgwNSwgOTI0MjMsIDc0Mzg3LCA3ODE3OSwgNzg1OTgsIDc0NDkyLCAKKyAgICA2MDk3LCA3NTY4LCA4NzgwLCA0OTgyLCAxMjc0NjQsIDc0NTAxLCAxMDA3MjAsIDc4NTkyLCA2ODc0NSwgMjY3MiwgMzczNSwgCisgICAgMTI3NDcwLCAxMzEzOCwgNDIyNjYsIDk0ODQsIDEwNzI0LCA0MTIwMiwgNzEzNjQsIDEyODM3MCwgNDM3NDIsIDEyODM3MywgCisgICAgOTQ4NywgMTE5OTU5LCA2ODc4NSwgMzg0MiwgNzE5MTEsIDc4NjY4LCAxMjQ0MiwgNjE5MywgOTc5MSwgMTE5MzQ0LCAKKyAgICAxMDA1MjAsIDQyNTE2LCA3MjI4LCA3NTU5LCA3NDgwMywgNjY3MjEsIDc4NzMsIDExMzk5LCAxMTkyMTksIDE5NDY5MSwgCisgICAgNzAwMDYsIDE5NDY5MCwgMTAwNTE4LCAzNjA0LCAxMjA2ODMsIDExOTE4OCwgMTI4ODc3LCA3ODU0MCwgNzg1NDEsIDQyNTA3LCAKKyAgICAxOTYyLCA0MzMwNSwgNzg0NzYsIDQyNTA1LCAxMTY2MCwgMTE5NTk3LCAyMDcyLCA5MjMxMiwgNjk5NSwgNzI4MDEsIDU0MzcsIAorICAgIDc0MTc0LCAxMDY2OSwgODcwMiwgNzk2NCwgOTIzNTIsIDEwMDUxNCwgMTk5LCA2ODA3NSwgNDEwNSwgMTk0ODQ1LCAzODY0LCAKKyAgICA3NTAwNiwgMTk0NzEwLCA2NzgxOCwgMTMxNDgsIDc1NjAsIDc4NDc5LCA5MjI2LCA3ODQ3OCwgMTI4NDcxLCA2NDcyLCAKKyAgICA2NTgxNCwgNzE5MTksIDEwMDg1NSwgNDcyNCwgMTI4NDkxLCAxOTUwNDEsIDkxOTEsIDE5NDY0NSwgNjQ0MzIsIDEyMDI3MCwgCisgICAgODI5ODcsIDExOTE5MCwgMTAxOTYsIDc4ODYsIDAsIDY1ODUsIDE5NDY0MCwgNjY4MCwgMTk1MDQyLCA5ODM0MjUsIDcxODcyLCAKKyAgICA2Njc5LCA3NDQxMiwgOTIyNTEsIDExOTM1MCwgNzQ0MjEsIDExMzgyLCAxMjgyNTQsIDQzODYyLCA3NTAwMSwgMTEzNzMzLCAKKyAgICAxOTQ2NzksIDE5NDgzMiwgNjY4MSwgMTI3NDgyLCAxMjY5MywgMTk0ODM2LCA0MjcyNywgNzgxOTYsIDEyODI1MiwgNDM4NzQsIAorICAgIDY1NDQyLCA2ODA0NywgNjk3MzMsIDk5ODksIDQzMjQ4LCA2NjI0OCwgMTk0ODE2LCAxMjc1MzQsIDExMzIxLCAxMjg4NDUsIAorICAgIDEyMDgwOSwgMTIyODk1LCA1Mjk3LCA3MDQyLCAxMzI4NCwgNjExMiwgNzk2OCwgOTMwMTAsIDczOTI3LCA5MjQ0NCwgCisgICAgMTI3MzM2LCA2NTc0NiwgMTE4Nzk2LCA2OTg4OSwgNzQzODksIDEyODY5NiwgNDM0MiwgNDI4MzksIDEyMTMzOSwgMTY3NywgCisgICAgOTE3NTkyLCA4Mjk4OSwgMTI2NTkwLCA4MzQxNSwgMTEwOTEsIDExMDExLCAyNzE5LCAwLCAwLCAxMTk1OTUsIDEwMTYwLCAwLCAKKyAgICAxMjkxNTAsIDc1ODUsIDY1MTY5LCAyMDUyLCA0MzA4LCA4MzQxNCwgNDMwMDAsIDc1MDUsIDU0MywgNjQ5MTYsIDY0NzM2LCAKKyAgICAxMTg4MzUsIDE5NDY2NSwgNjQ2NTUsIDk4MzA1MywgMTE4OTIyLCAyMDY0LCA5MTc5NjYsIDQzMTU4LCA3OTAyLCA5ODMyMzEsIAorICAgIDY1MjY1LCAxOTQ2MzksIDEyMTA4MCwgMTI3MTcwLCAxMjI5MTUsIDEyODAwNiwgOTI1NTAsIDk4MzE4NiwgMTI5OTQsIAorICAgIDkyNzI4LCAxMDgyOCwgNzQzNzgsIDYyMjgsIDQzMDcsIDM0ODIsIDEyODUyNywgODMyMzEsIDcyMzg5LCA4MzA3OSwgNTA2LCAKKyAgICA3NDU3MywgNDExOTQsIDY1NzM1LCAyMDU1LCA0MzI1NSwgNDExOTUsIDAsIDgxNjksIDEyMTQwNywgODg0MSwgNjY3NzAsIAorICAgIDUxNiwgOTM5NzQsIDIwNjMsIDExOTA1MSwgMzQsIDEyODg1MCwgMTIwMTg2LCAxMTUwNCwgMTYxMiwgNzQzMzMsIDEyMDE4MiwgCisgICAgMTE4MjcsIDY3MTY1LCAxMjAwMSwgMTIwMTc4LCAxMDI0MiwgNjQ1NjQsIDEyMDE3OSwgNjc5ODYsIDY1ODQsIDc3NDksIAorICAgIDExMDM3LCAxMjcxNTcsIDE3NTgsIDExOTA3NCwgMTA2NjcsIDEwNTYwLCAxMjAxOTcsIDkyNTkzLCAxOTM1LCAxMTUxNywgCisgICAgMTIwMTkzLCAxMjAxOTYsIDgzMDgyLCAxOTMxLCAxMDA0OTksIDc0ODM5LCA3NDEwNCwgMTIxNywgNjQ3MDIsIDEyNjQzLCAKKyAgICA4MjUsIDEyNzgzOCwgMTk0OTA1LCAxMjI5NCwgOTI0MjgsIDY2NzQ4LCA5MTM4LCA3ODgzMSwgNzg4MzMsIDEyNjMxLCAKKyAgICA3MTg3MSwgMTEwODAsIDc0NTU0LCA2NDAwMCwgNTU5MSwgMTIzOSwgMTI3MTk5LCAxMTMxMywgMTk0ODAzLCAzNDAzLCAKKyAgICAxMjY1NjQsIDEyMDI3MSwgNjQzNjQsIDkyMjY5LCAxMjEyODIsIDcyNDMxLCA4OTk4LCAxMjk4OCwgMTE5OTgzLCA5MTUyLCAKKyAgICA5MjE2MSwgMCwgMTI2NDg0LCA2NzU4OSwgNDE4NTAsIDY0MjkwLCAzNDMzLCA5MjM5MywgMTI2MTUsIDE1OTQsIDQyMTkyLCAKKyAgICA2OTE0LCA2NjM5MiwgMTI1MjAyLCAxMTk1NjksIDc0NTY1LCA0MTM1MywgNjc2MDIsIDY3NjExLCA0MzM3LCAwLCAxMjcyOTYsIAorICAgIDkxOCwgNjUwMzUsIDQxMzUxLCA3NjgxLCAxOTQ5MDAsIDQyNTc3LCA0MTM5MywgMTI2NjgsIDcyMzk1LCAyNDc3LCAKKyAgICAxMjcyODUsIDEyMTI0OSwgMTE4ODgwLCAwLCA2NzYwNCwgNjc2ODMsIDEyNzIzNSwgNTczLCAxMjcyODEsIDEyMDU0MywgCisgICAgMTE0MTcsIDkyNjYxLCAxMTk4MTQsIDExOTMwOSwgNjc1OTksIDAsIDcyNDEwLCA2NzYwNywgMTE0ODIsIDEyODk2MSwgCisgICAgMzk4MSwgMzM1NywgMTI3MTY0LCA0MjIyMywgNDIwNywgMTI4OCwgNzg1MDMsIDc4ODM5LCA2NzcyOCwgNzc5MDcsIDExNTg5LCAKICAgICA0MjE5NSwgNzQ0NzcsIDExOTk5NywgMTI3MTc4LCA2NDYwMiwgNjc2MTgsIDkyNTM5LCAxMjEzNjYsIDQyNzg4LCA2ODQxNiwgCi0gICAgNjQ0ODAsIDE5NDg3NSwgODQyMywgMzM0OCwgNDQ4LCA2NjkwNywgOTcxNywgMTE5MzExLCAwLCA5OTcsIDAsIDAsIDkyNTc3LCAKLSAgICAwLCAxMTQ0MCwgMTEzNzksIDQyMDAwLCAxMzEzOSwgNDIyMjEsIDY1MDEzLCAxMjY5OTksIDEyNzc2MCwgNzIzOTAsIDAsIAotICAgIDExOTIyOCwgMTIwMzUsIDAsIDI4MTgsIDAsIDc0NDExLCA3Mzc5MywgOTgzMjc4LCA0MTcyLCA3MTI1MiwgMTE5OTkyLCAKLSAgICA4MzczLCAxMDg3MywgMTIxOTcsIDEyNTA3NCwgMTk1MDE0LCA5MjI2NSwgNjk3MDYsIDEyODU0MCwgNjgzNCwgNzQzNDcsIAotICAgIDc0OTU4LCAxMjkwMzMsIDEyNjk4MiwgNzQ1NjMsIDY0ODI4LCAxMTQxOSwgMTk0ODY4LCA3NjYsIDEyNTcsIDE5NDU5OCwgCi0gICAgMTE4ODQ1LCAxMTM4MSwgMzI2NSwgNjY2MTcsIDMyNzQsIDEyNjYyOSwgODMyNTQsIDcxODYxLCA5ODM5NTAsIDc0NTIyLCAKLSAgICA0MTk4OSwgMTIxMzE3LCAwLCAxMTM3NjksIDMyNjMsIDkxNzkyMiwgNjU2NzIsIDY5MjQzLCAzMjcwLCA2NDUzOSwgMTE0ODksIAotICAgIDkxNzkxMSwgMCwgMCwgNzExMjcsIDk1MDUsIDY1NTE4LCAxMjg0OTgsIDc1NiwgMTk0NjA1LCAwLCAwLCAxOTQ2MjEsIAotICAgIDcyNjEsIDkyNTQ3LCAxODYsIDAsIDExOTE1NiwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAKLSAgICAxMjgwMCwgOTgzOTAxLCA3NDIwMywgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCAKLSAgICA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCAKLSAgICA2ODMxMCwgNjQ1MjEsIDU2MjQsIDEyMDIyMCwgMTIwMjIxLCAxMTk5NTgsIDEyMDIyMywgMzYxNywgNjY2MzYsIDY0ODg2LCAKLSAgICA5NDA2MSwgNjg2NTksIDEyMDIxMywgMTIwMjE0LCAxODcyLCA2NjUwOCwgMTIwNDY3LCA0MTA3OSwgMTA3NDgsIDU1MDIsIAotICAgIDExOTMzMCwgNDQ1MiwgMTI4MDg4LCA5ODM3NzEsIDkyNTI2LCA0NTExLCAxMjA5NTgsIDk4Mzg3NywgNjQ2NzgsIDExNDI1LCAKLSAgICAwLCA0MzI0NSwgMTIzMSwgNjg4NjEsIDY5OTAzLCAwLCA5MDAzLCA4MTkyLCAwLCA1MzA1LCA5NjUzLCAxMDYxNiwgODY5NCwgCi0gICAgOTU0NiwgMCwgMTI4MzMyLCA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIAotICAgIDExOTYyNiwgNzgyMDIsIDY0MDU4LCA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCAKLSAgICA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIDAsIDEyMDc1NCwgMTE0MjcsIDI5MDIsIDY0MDQzLCA2NDA0MiwgNDM3NDksIAotICAgIDEwNzU2LCA2NDA0NywgNDI2MDYsIDY0MDQ1LCA2NDA0NCwgNDM5NzksIDEwMDc2LCA2NDA0MCwgNDMwNjAsIDE5NDk0MiwgCi0gICAgMTAzNCwgMzM5MiwgODMzMzYsIDQzMDkxLCA2NDAzMywgNjQwMzIsIDQyNzM1LCA0MzQ5OCwgNjQwMzcsIDY0MDM2LCAKLSAgICA2NDAzNSwgNDI5MSwgMTI5MTU3LCA2NDAxNSwgNjQwMTQsIDY0NjgxLCA4MzM5NCwgODMzOTUsIDc4MTQ1LCA3MTg5OCwgCi0gICAgNDMwOTAsIDgzMzkxLCAzNDc2LCA4OTczLCA2NDAxMiwgNDI0NzMsIDY0MDEwLCA2NDAwOCwgNjQwMDcsIDIwMDMsIDc3MDYsIAotICAgIDY0NTE3LCA3ODE1MywgMjUzOCwgNjQwMDksIDIwNCwgMCwgNDgwMiwgNDExMSwgODIzOSwgOTA5OCwgNDgwNSwgNjQwMDEsIAotICAgIDY0MDU3LCA3ODg1LCA3MjQ3LCA2NDA1NCwgOTgzMjY4LCAwLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgCi0gICAgMTEzMywgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIAotICAgIDQxMzMzLCA4MzI1OSwgODQ4OSwgMTk0MiwgOTE3OTIxLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgCi0gICAgMTA3NjAsIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgCi0gICAgNzgyNDQsIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMjEzNjEsIDc1ODIsIAotICAgIDc4MjUyLCA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCAKLSAgICA3NzkyMCwgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3ODUxOCwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIAotICAgIDc0NDU0LCAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIAotICAgIDY0MDMxLCA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgCi0gICAgODMzODAsIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDE5NDg0NCwgMCwgNDM1MSwgNjM0MywgNDMyNDcsIDExOTg4OCwgCi0gICAgNzAxNTMsIDExOTg4NiwgMTE5ODkxLCA3MjM4NywgMTE5ODg5LCAxMTQzMywgMTE5ODk1LCAxMTk4OTYsIDE5NDY1NSwgCi0gICAgNzgwMSwgNjU1NzgsIDgzMzYxLCAxMjkxNSwgNDM5NjgsIDMyOTcsIDk2OTksIDgzMzU3LCAxMTM1LCA4MzM1MCwgODMzNTEsIAotICAgIDgzMzUyLCAxOTk1LCA2NzIyLCA5ODM5MjUsIDEyODgxNSwgMjU1MiwgNDE1NDYsIDYwLCA2ODM5NCwgODY0OSwgNDE1NDksIAotICAgIDc4NDk2LCA3MjM4NiwgODMzNzEsIDY2ODIsIDgzMzY1LCA3ODY3OSwgNDM4MzMsIDQxNTQ3LCA5ODM2MzAsIDIwMTMsIAotICAgIDgzMzYyLCA3ODUzMCwgNzg1MzIsIDc4NTI4LCA3ODUyOSwgMTI4MzIsIDc4NDkzLCA4MDgxLCA4MzYyLCAzNTM3LCAKLSAgICAxMTk5MDgsIDkxMzcsIDcxNTUsIDg5OTksIDkxNzkwMSwgNzg1MzMsIDM0NjYsIDAsIDEyMTQ2NiwgMTk5NiwgMCwgMzQ1MywgCi0gICAgNjI4MiwgMCwgMjAwMiwgMjAwMCwgMTIwMTc1LCA1MzcsIDkyOTc2LCA0MTc5LCA2NTExOSwgMTk5OCwgMTIwNzQ2LCAxODQyLCAKLSAgICAwLCA5MjY3NCwgOTYyOCwgNjg0NDYsIDEyMDgxLCA5ODI2LCA2NDUwMiwgMTc2NywgMCwgOTgzMjQ4LCAxMjAwMDEsIAotICAgIDEyMDIwMSwgOTgzNjQ2LCAxMjQ5NzUsIDEyNzk1MiwgMzA1OSwgNDQwMjQsIDEyMDIwNCwgNDM0OTEsIDkyNjkzLCAwLCAKLSAgICAxMjE0NzIsIDkyNDUyLCA0MTAwLCA5MjAsIDE4MTEsIDEzNTUsIDQzMTg5LCAwLCAzNTkyLCAxMDA3OCwgMCwgNzgxNjIsIAotICAgIDExOTU1OCwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgMTk5NCwgOTI4MSwgMzI5NiwgCi0gICAgMTI4NjUsIDE5OTcsIDE4OTUsIAorICAgIDY0NDgwLCAxOTQ4NzUsIDg0MjMsIDMzNDgsIDQ0OCwgNjY5MDcsIDk3MTcsIDExOTMxMSwgMTAwNzM4LCA5OTcsIDExOTk5OCwgCisgICAgOTE3OTEwLCA5MjU3NywgMCwgMTE0NDAsIDExMzc5LCA0MjAwMCwgMTMxMzksIDQyMjIxLCA2NTAxMywgMTI2OTk5LCAKKyAgICAxMjc3NjAsIDcyMzkwLCAxMjA3MTMsIDExOTIyOCwgMTIwMzUsIDk4MzkwNiwgMjgxOCwgMCwgNzQ0MTEsIDczNzkzLCAKKyAgICAxMjk0MjQsIDQxNzIsIDcxMjUyLCAxMTk5OTIsIDgzNzMsIDEwODczLCAxMjE5NywgMTI1MDc0LCAxOTUwMTQsIDkyMjY1LCAKKyAgICA2OTcwNiwgMTAwODU4LCA2ODM0LCA3NDM0NywgNzQ5NTgsIDY5NjQ1LCAxMjY5ODIsIDc0NTYzLCA2NDgyOCwgMTE0MTksIAorICAgIDEyNjU3MCwgNzY2LCAxMjU3LCAxOTQ1OTgsIDExODg0NSwgMTEzODEsIDMyNjUsIDY2NjE3LCAzMjc0LCAxMjY2MjksIAorICAgIDgzMjU0LCA3MTg2MSwgOTgzOTUwLCA3Mjc5NiwgNDE5ODksIDEyMTMxNywgMTk0ODA2LCAzNDE4LCAzMjYzLCA5MTc5MjIsIAorICAgIDY1NjcyLCA2OTI0MywgMzI3MCwgNjQ1MzksIDExNDg5LCA5MTc5MTEsIDAsIDAsIDcxMTI3LCA5NTA1LCA2NTUxOCwgCisgICAgMTI4NDk4LCA3NTYsIDEyMDQwMCwgMTI1MjQzLCA5ODM3MDAsIDE5NDYyMSwgNzI2MSwgOTI1NDcsIDE4NiwgOTgzNzY5LCAKKyAgICA3Mjc3MSwgNTc3MCwgMTMxNzksIDY1ODMwLCAxMjYxMiwgMTI5NDksIDY0ODU2LCAxMjgwMCwgMTI3NTI5LCA3NDIwMywgCisgICAgNjQ3MTgsIDExNTA3LCA3ODY3MywgOTI0MzQsIDc0NjI2LCAxMTM3NjAsIDExNTc4LCA5ODM4MzcsIDExOTI5NiwgMTIwOTcwLCAKKyAgICAxMjExMjcsIDEyNTEwMSwgMCwgNzAwODMsIDkyNTQsIDY2ODc3LCAxNzk0LCA2ODMxMCwgNjQ1MjEsIDU2MjQsIDcyNzY2LCAKKyAgICAxMjAyMjEsIDExOTk1OCwgMTIwMjIzLCAzNjE3LCA2NjYzNiwgNjQ4ODYsIDk0MDYxLCA2ODY1OSwgMTIwMjEzLCAxMjAyMTQsIAorICAgIDE4NzIsIDY2NTA4LCAxMjA0NjcsIDQxMDc5LCAxMDc0OCwgNTUwMiwgMTE5MzMwLCA0NDUyLCAxMjgwODgsIDk4MzU2MCwgCisgICAgOTI1MjYsIDQ1MTEsIDEyMDk1OCwgOTgzODc3LCA2NDY3OCwgMTE0MjUsIDAsIDQzMjQ1LCAxMjMxLCA2ODg2MSwgNjk5MDMsIAorICAgIDk4MzY0MywgOTAwMywgODE5MiwgMCwgNTMwNSwgOTY1MywgMTA2MTYsIDg2OTQsIDk1NDYsIDk4MzIzNywgMTI4MzMyLCAKKyAgICA3MDQyMSwgMTIwMjAwLCA2NTIwNSwgMTIwMjAyLCA2NDA2MywgOTg3OCwgNzQ3ODAsIDExOTA1OCwgNzgyMDIsIDY0MDU4LCAKKyAgICA4Nzk5LCA0MjEzMSwgMTI4NjYyLCA2NDA2MiwgMTAyOCwgNjQwNjAsIDY0MDU5LCA4MzcsIDEwNTY3LCA3MjM4NCwgNDMxMDMsIAorICAgIDEwMDM1MiwgMTIwNzU0LCAxMTQyNywgMjkwMiwgNjQwNDMsIDY0MDQyLCA0Mzc0OSwgMTA3NTYsIDY0MDQ3LCA0MjYwNiwgCisgICAgNjQwNDUsIDY0MDQ0LCA0Mzk3OSwgMTAwNzYsIDY0MDQwLCA0MzA2MCwgMTAwMzU2LCAxMDM0LCAzMzkyLCA4MzMzNiwgCisgICAgNDMwOTEsIDY0MDMzLCA2NDAzMiwgNDI3MzUsIDQzNDk4LCA2NDAzNywgNjQwMzYsIDY0MDM1LCA0MjkxLCAxMjkxNTcsIAorICAgIDY0MDE1LCA2NDAxNCwgNjQ2ODEsIDgzMzk0LCA4MzM5NSwgNzgxNDUsIDcxODk4LCA0MzA5MCwgODMzOTEsIDM0NzYsIAorICAgIDg5NzMsIDY0MDEyLCA0MjQ3MywgNjQwMTAsIDY0MDA4LCA2NDAwNywgMjAwMywgNzcwNiwgNjQ1MTcsIDc4MTUzLCAyNTM4LCAKKyAgICA2NDAwOSwgMjA0LCAxMDA4NDEsIDQ4MDIsIDQxMTEsIDgyMzksIDkwOTgsIDQ4MDUsIDY0MDAxLCA2NDA1NywgNzg4NSwgCisgICAgNzI0NywgNjQwNTQsIDk4MzI2OCwgMTE4OTIxLCA0NzY3LCA5MzQzLCA2NDA0OSwgNjQwNDgsIDEyMDAzNCwgMTEzMywgCisgICAgNjQwNTMsIDY0MDUyLCA0MzQ1MywgNjQwNTAsIDQxMzQwLCAxMTg5NzUsIDgzMjYxLCAxMDAwNSwgMTIzMjksIDQxMzMzLCAKKyAgICA4MzI1OSwgODQ4OSwgMTk0MiwgMTAwODQzLCAxOTQ4MzQsIDQyNTIwLCA2NTUxMCwgMTI1MDQ0LCA2ODI5MSwgMTA3NjAsIAorICAgIDY0MDIzLCA2NDAyMiwgNjQwMjEsIDY1ODIsIDQzNjcwLCAxMjc3OTgsIDY0MDI1LCA5MTY3LCA0MjE1MSwgNzgyNDQsIAorICAgIDk4MzIzMiwgMjAyNiwgNjQwMTksIDY0MDE4LCA2NDAxNywgNjQwMTYsIDEyNzY4LCAxMDA1MzcsIDc1ODIsIDc4MjUyLCAKKyAgICA3ODI0OCwgNzc5MTQsIDc4MjQ2LCA3ODI0NywgMTIwNzkxLCA3NzkxNSwgNzg3NjYsIDY3ODgsIDEzMDk0LCA3NzkyMCwgCisgICAgNzUzMiwgNDE0MTQsIDc4NTIwLCAzMTc5LCA3MDc0NSwgNjQ3NjksIDc4NTE0LCA3ODUxNywgMTE0NjEsIDc0NDU0LCAKKyAgICAxMDc1MSwgOTA1MSwgMTIwNzIwLCA2NzA4LCAxMDUzNSwgMTE4OTU1LCA2ODIxOCwgNTUyNzQsIDIwMDgsIDY0MDMxLCAKKyAgICA2NDAzMCwgMjk0LCA0MTg3NCwgODMzODMsIDY0NzkwLCA2NTkyOSwgODMzNzYsIDgzMzM3LCA4MzM3OSwgODMzODAsIAorICAgIDY0MDI4LCA4MTQ2LCA2NDAyNiwgNDE3ODgsIDEwMDQwNiwgOTgzNjUwLCA0MzUxLCA2MzQzLCA0MzI0NywgMTE5ODg4LCAKKyAgICA3MDE1MywgMTAwNzUzLCA3ODczMywgNzIzODcsIDExOTg4OSwgMTE0MzMsIDEwMDU0NCwgMTE5ODk2LCAxOTQ2NTUsIDc4MDEsIAorICAgIDY1NTc4LCA4MzM2MSwgMTI5MTUsIDQzOTY4LCAzMjk3LCA5Njk5LCA4MzM1NywgMTEzNSwgODMzNTAsIDgzMzUxLCA4MzM1MiwgCisgICAgMTk5NSwgNjcyMiwgOTgzOTI1LCAxMjg4MTUsIDI1NTIsIDQxNTQ2LCA2MCwgNjgzOTQsIDg2NDksIDQxNTQ5LCA3ODQ5NiwgCisgICAgNzIzODYsIDgzMzcxLCA2NjgyLCA4MzM2NSwgNzg2NzksIDQzODMzLCA0MTU0NywgOTgzNjMwLCAyMDEzLCA4MzM2MiwgCisgICAgNzg1MzAsIDc4NTMyLCA3ODUyOCwgNzg1MjksIDEyODMyLCA3ODQ5MywgODA4MSwgODM2MiwgMzUzNywgMTE5OTA4LCA5MTM3LCAKKyAgICA3MTU1LCAyMjY0LCA5MTc5MDEsIDc4NTMzLCAzNDY2LCAxOTQ5ODcsIDEyMTAzOSwgMTk5NiwgOTgzNjc1LCAzNDUzLCAKKyAgICAzNDEyLCAwLCAyMDAyLCAyMDAwLCAxMjAxNzUsIDUzNywgOTI5NzYsIDQxNzksIDY1MTE5LCAxOTk4LCAxMjA3NDYsIDE4NDIsIAorICAgIDAsIDkyNjc0LCA5NjI4LCA2ODQ0NiwgMTIwODEsIDk4MjYsIDY0NTAyLCAxNzY3LCAzNDEzLCA5ODMyNDgsIDEyMDAwMSwgCisgICAgMTIwMjAxLCA5ODM2NDYsIDEyNDk3NSwgMTI3OTUyLCAzMDU5LCA0NDAyNCwgMTIwMjA0LCA0MzQ5MSwgOTI2OTMsIAorICAgIDEwMDU0NywgMTIxNDcyLCA5MjQ1MiwgNDEwMCwgOTIwLCAxODExLCAxMzU1LCA0MzE4OSwgMCwgMzU5MiwgMTAwNzgsIAorICAgIDEwMDM5NCwgNzgxNjIsIDEwMDg0NiwgODU5MiwgNjU4NzAsIDY2NDE3LCA3NDUwNCwgMTA3NDIsIDcyNDAwLCA0MjkxOCwgCisgICAgMTk5NCwgOTI4MSwgMzI5NiwgMTI4NjUsIDE5OTcsIDE4OTUsIAogfTsKIAogI2RlZmluZSBjb2RlX21hZ2ljIDQ3CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3dpbnJlcGFyc2UuaCBiL01vZHVsZXMvd2lucmVwYXJzZS5oCmluZGV4IDY2Zjc3NzUuLjI4MDQ5YzkgMTAwNjQ0Ci0tLSBhL01vZHVsZXMvd2lucmVwYXJzZS5oCisrKyBiL01vZHVsZXMvd2lucmVwYXJzZS5oCkBAIC0yLDcgKzIsNyBAQAogI2RlZmluZSBQeV9XSU5SRVBBUlNFX0gKIAogI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDxXaW5kb3dzLmg+CisjaW5jbHVkZSA8d2luZG93cy5oPgogCiAjaWZkZWYgX19jcGx1c3BsdXMKIGV4dGVybiAiQyIgewpAQCAtMTAsOSArMTAsMTAgQEAKIAogLyogVGhlIGZvbGxvd2luZyBzdHJ1Y3R1cmUgd2FzIGNvcGllZCBmcm9tCiAgICBodHRwOi8vbXNkbi5taWNyb3NvZnQuY29tL2VuLXVzL2xpYnJhcnkvZmY1NTIwMTIuYXNweCBhcyB0aGUgcmVxdWlyZWQKLSAgIGluY2x1ZGUgZG9lc24ndCBzZWVtIHRvIGJlIHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAotICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiAqLwotdHlwZWRlZiBzdHJ1Y3QgX1JFUEFSU0VfREFUQV9CVUZGRVIgeworICAgaW5jbHVkZSBrbVxudGlmcy5oIGlzbid0IHByZXNlbnQgaW4gdGhlIFdpbmRvd3MgU0RLIChhdCBsZWFzdCBhcyBpbmNsdWRlZAorICAgd2l0aCBWaXN1YWwgU3R1ZGlvIEV4cHJlc3MpLiBVc2UgdW5pcXVlIG5hbWVzIHRvIGF2b2lkIGNvbmZsaWN0aW5nIHdpdGgKKyAgIHRoZSBzdHJ1Y3R1cmUgYXMgZGVmaW5lZCBieSBNaW4gR1cuICovCit0eXBlZGVmIHN0cnVjdCB7CiAgICAgVUxPTkcgUmVwYXJzZVRhZzsKICAgICBVU0hPUlQgUmVwYXJzZURhdGFMZW5ndGg7CiAgICAgVVNIT1JUIFJlc2VydmVkOwpAQCAtMzgsMTEgKzM5LDExIEBACiAgICAgICAgICAgICBVQ0hBUiAgRGF0YUJ1ZmZlclsxXTsKICAgICAgICAgfSBHZW5lcmljUmVwYXJzZUJ1ZmZlcjsKICAgICB9OwotfSBSRVBBUlNFX0RBVEFfQlVGRkVSLCAqUFJFUEFSU0VfREFUQV9CVUZGRVI7Cit9IF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCAqX1B5X1BSRVBBUlNFX0RBVEFfQlVGRkVSOwogCi0jZGVmaW5lIFJFUEFSU0VfREFUQV9CVUZGRVJfSEVBREVSX1NJWkUgIEZJRUxEX09GRlNFVChSRVBBUlNFX0RBVEFfQlVGRkVSLFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdlbmVyaWNSZXBhcnNlQnVmZmVyKQotI2RlZmluZSBNQVhJTVVNX1JFUEFSU0VfREFUQV9CVUZGRVJfU0laRSAgKCAxNiAqIDEwMjQgKQorI2RlZmluZSBfUHlfUkVQQVJTRV9EQVRBX0JVRkZFUl9IRUFERVJfU0laRSBcCisgICAgRklFTERfT0ZGU0VUKF9QeV9SRVBBUlNFX0RBVEFfQlVGRkVSLCBHZW5lcmljUmVwYXJzZUJ1ZmZlcikKKyNkZWZpbmUgX1B5X01BWElNVU1fUkVQQVJTRV9EQVRBX0JVRkZFUl9TSVpFICAoIDE2ICogMTAyNCApCiAKICNpZmRlZiBfX2NwbHVzcGx1cwogfQpkaWZmIC0tZ2l0IGEvTW9kdWxlcy94eGxpbWl0ZWQuYyBiL01vZHVsZXMveHhsaW1pdGVkLmMKaW5kZXggNDBjMTc2MC4uYzFhOWJlOSAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eGxpbWl0ZWQuYworKysgYi9Nb2R1bGVzL3h4bGltaXRlZC5jCkBAIC04OSw3ICs4OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLVh4b19zZXRhdHRyKFh4b09iamVjdCAqc2VsZiwgY2hhciAqbmFtZSwgUHlPYmplY3QgKnYpCitYeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQogewogICAgIGlmIChzZWxmLT54X2F0dHIgPT0gTlVMTCkgewogICAgICAgICBzZWxmLT54X2F0dHIgPSBQeURpY3RfTmV3KCk7CmRpZmYgLS1naXQgYS9Nb2R1bGVzL3h4bW9kdWxlLmMgYi9Nb2R1bGVzL3h4bW9kdWxlLmMKaW5kZXggODUyMzBkOS4uMDc2NDQwNyAxMDA2NDQKLS0tIGEvTW9kdWxlcy94eG1vZHVsZS5jCisrKyBiL01vZHVsZXMveHhtb2R1bGUuYwpAQCAtNzYsNyArNzYsNyBAQAogfQogCiBzdGF0aWMgaW50Ci1YeG9fc2V0YXR0cihYeG9PYmplY3QgKnNlbGYsIGNoYXIgKm5hbWUsIFB5T2JqZWN0ICp2KQorWHhvX3NldGF0dHIoWHhvT2JqZWN0ICpzZWxmLCBjb25zdCBjaGFyICpuYW1lLCBQeU9iamVjdCAqdikKIHsKICAgICBpZiAoc2VsZi0+eF9hdHRyID09IE5VTEwpIHsKICAgICAgICAgc2VsZi0+eF9hdHRyID0gUHlEaWN0X05ldygpOwpkaWZmIC0tZ2l0IGEvTW9kdWxlcy96bGlibW9kdWxlLmMgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwppbmRleCBmY2NiNjE2Li5jZmU3Zjg4IDEwMDY0NAotLS0gYS9Nb2R1bGVzL3psaWJtb2R1bGUuYworKysgYi9Nb2R1bGVzL3psaWJtb2R1bGUuYwpAQCAtNTcsNyArNTcsNyBAQAogfSBjb21wb2JqZWN0OwogCiBzdGF0aWMgdm9pZAotemxpYl9lcnJvcih6X3N0cmVhbSB6c3QsIGludCBlcnIsIGNoYXIgKm1zZykKK3psaWJfZXJyb3Ioel9zdHJlYW0genN0LCBpbnQgZXJyLCBjb25zdCBjaGFyICptc2cpCiB7CiAgICAgY29uc3QgY2hhciAqem1zZyA9IFpfTlVMTDsKICAgICAvKiBJbiBjYXNlIG9mIGEgdmVyc2lvbiBtaXNtYXRjaCwgenN0Lm1zZyB3b24ndCBiZSBpbml0aWFsaXplZC4KQEAgLTE5OSwxOCArMTk5LDE4IEBACiAvKltjbGluaWMgaW5wdXRdCiB6bGliLmNvbXByZXNzCiAKLSAgICBieXRlczogUHlfYnVmZmVyCisgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIEJpbmFyeSBkYXRhIHRvIGJlIGNvbXByZXNzZWQuCi0gICAgbGV2ZWw6IGludChjX2RlZmF1bHQ9IlpfREVGQVVMVF9DT01QUkVTU0lPTiIpID0gWl9ERUZBVUxUX0NPTVBSRVNTSU9OCi0gICAgICAgIENvbXByZXNzaW9uIGxldmVsLCBpbiAwLTkuCiAgICAgLworICAgIGxldmVsOiBpbnQoY19kZWZhdWx0PSJaX0RFRkFVTFRfQ09NUFJFU1NJT04iKSA9IFpfREVGQVVMVF9DT01QUkVTU0lPTgorICAgICAgICBDb21wcmVzc2lvbiBsZXZlbCwgaW4gMC05IG9yIC0xLgogCiBSZXR1cm5zIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgY29tcHJlc3NlZCBkYXRhLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotemxpYl9jb21wcmVzc19pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X2J1ZmZlciAqYnl0ZXMsIGludCBsZXZlbCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1hZTY0YzJjMzA3NjMyMWEwIGlucHV0PWJlM2FiZTk5MzRiZGE0YjNdKi8KK3psaWJfY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCBsZXZlbCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kODA5MDZkNzNmNjI5NGM4IGlucHV0PTYzOGQ1NGI2MzE1ZGJlZDNdKi8KIHsKICAgICBQeU9iamVjdCAqUmV0VmFsID0gTlVMTDsKICAgICBCeXRlICppYnVmOwpAQCAtMjE4LDggKzIxOCw4IEBACiAgICAgaW50IGVyciwgZmx1c2g7CiAgICAgel9zdHJlYW0genN0OwogCi0gICAgaWJ1ZiA9IGJ5dGVzLT5idWY7Ci0gICAgaWJ1ZmxlbiA9IGJ5dGVzLT5sZW47CisgICAgaWJ1ZiA9IGRhdGEtPmJ1ZjsKKyAgICBpYnVmbGVuID0gZGF0YS0+bGVuOwogCiAgICAgenN0Lm9wYXF1ZSA9IE5VTEw7CiAgICAgenN0LnphbGxvYyA9IFB5WmxpYl9NYWxsb2M7CkBAIC0zMTgsMTEgKzMxOCwxMSBAQAogCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIENvbXByZXNzZWQgZGF0YS4KKyAgICAvCiAgICAgd2JpdHM6IGludChjX2RlZmF1bHQ9Ik1BWF9XQklUUyIpID0gTUFYX1dCSVRTCiAgICAgICAgIFRoZSB3aW5kb3cgYnVmZmVyIHNpemUgYW5kIGNvbnRhaW5lciBmb3JtYXQuCiAgICAgYnVmc2l6ZTogc3NpemVfdChjX2RlZmF1bHQ9IkRFRl9CVUZfU0laRSIpID0gREVGX0JVRl9TSVpFCiAgICAgICAgIFRoZSBpbml0aWFsIG91dHB1dCBidWZmZXIgc2l6ZS4KLSAgICAvCiAKIFJldHVybnMgYSBieXRlcyBvYmplY3QgY29udGFpbmluZyB0aGUgdW5jb21wcmVzc2VkIGRhdGEuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCkBAIC0zMzAsNyArMzMwLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX2RlY29tcHJlc3NfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9idWZmZXIgKmRhdGEsIGludCB3Yml0cywKICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgYnVmc2l6ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03N2M3ZTM1MTExZGM4YzQyIGlucHV0PWMxM2RkMmM1Njk2Y2QxN2ZdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03N2M3ZTM1MTExZGM4YzQyIGlucHV0PTIxOTYwOTM2MjA4ZTlhNWJdKi8KIHsKICAgICBQeU9iamVjdCAqUmV0VmFsID0gTlVMTDsKICAgICBCeXRlICppYnVmOwpAQCAtNzIxLDkgKzcyMSw5IEBACiAgICAgICAgICAgICBuZXdfZGF0YSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbmV3X3NpemUpOwogICAgICAgICAgICAgaWYgKG5ld19kYXRhID09IE5VTEwpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgUHlfTUVNQ1BZKFB5Qnl0ZXNfQVNfU1RSSU5HKG5ld19kYXRhKSwKKyAgICAgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhuZXdfZGF0YSksCiAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZi0+dW51c2VkX2RhdGEpLCBvbGRfc2l6ZSk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpICsgb2xkX3NpemUsCisgICAgICAgICAgICBtZW1jcHkoUHlCeXRlc19BU19TVFJJTkcobmV3X2RhdGEpICsgb2xkX3NpemUsCiAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+enN0Lm5leHRfaW4sIGxlZnRfc2l6ZSk7CiAgICAgICAgICAgICBQeV9TRVRSRUYoc2VsZi0+dW51c2VkX2RhdGEsIG5ld19kYXRhKTsKICAgICAgICAgICAgIHNlbGYtPnpzdC5hdmFpbF9pbiA9IDA7CkBAIC03NTAsMTEgKzc1MCwxMSBAQAogCiAgICAgZGF0YTogUHlfYnVmZmVyCiAgICAgICAgIFRoZSBiaW5hcnkgZGF0YSB0byBkZWNvbXByZXNzLgorICAgIC8KICAgICBtYXhfbGVuZ3RoOiBzc2l6ZV90ID0gMAogICAgICAgICBUaGUgbWF4aW11bSBhbGxvd2FibGUgbGVuZ3RoIG9mIHRoZSBkZWNvbXByZXNzZWQgZGF0YS4KICAgICAgICAgVW5jb25zdW1lZCBpbnB1dCBkYXRhIHdpbGwgYmUgc3RvcmVkIGluCiAgICAgICAgIHRoZSB1bmNvbnN1bWVkX3RhaWwgYXR0cmlidXRlLgotICAgIC8KIAogUmV0dXJuIGEgYnl0ZXMgb2JqZWN0IGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCB2ZXJzaW9uIG9mIHRoZSBkYXRhLgogCkBAIC03NjYsNyArNzY2LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB6bGliX0RlY29tcHJlc3NfZGVjb21wcmVzc19pbXBsKGNvbXBvYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqZGF0YSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhfbGVuZ3RoKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlNTE3M2M3NGU3MTAzNTIgaW5wdXQ9ZDZkZTliNTNjNDU2NmI4YV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTZlNTE3M2M3NGU3MTAzNTIgaW5wdXQ9Yjg1YTIxMmEwMTJiNzcwYV0qLwogewogICAgIGludCBlcnIgPSBaX09LOwogICAgIFB5X3NzaXplX3QgaWJ1Zmxlbiwgb2J1ZmxlbiA9IERFRl9CVUZfU0laRSwgaGFyZF9saW1pdDsKQEAgLTEzMzMsNyArMTMzMyw3IEBACiAiemxpYiBsaWJyYXJ5LCB3aGljaCBpcyBiYXNlZCBvbiBHTlUgemlwLlxuIgogIlxuIgogImFkbGVyMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGFuIEFkbGVyLTMyIGNoZWNrc3VtLlxuIgotImNvbXByZXNzKHN0cmluZ1ssIGxldmVsXSkgLS0gQ29tcHJlc3Mgc3RyaW5nLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIGluIDAtOS5cbiIKKyJjb21wcmVzcyhkYXRhWywgbGV2ZWxdKSAtLSBDb21wcmVzcyBkYXRhLCB3aXRoIGNvbXByZXNzaW9uIGxldmVsIDAtOSBvciAtMS5cbiIKICJjb21wcmVzc29iaihbbGV2ZWxbLCAuLi5dXSkgLS0gUmV0dXJuIGEgY29tcHJlc3NvciBvYmplY3QuXG4iCiAiY3JjMzIoc3RyaW5nWywgc3RhcnRdKSAtLSBDb21wdXRlIGEgQ1JDLTMyIGNoZWNrc3VtLlxuIgogImRlY29tcHJlc3Moc3RyaW5nLFt3Yml0c10sW2J1ZnNpemVdKSAtLSBEZWNvbXByZXNzZXMgYSBjb21wcmVzc2VkIHN0cmluZy5cbiIKZGlmZiAtLWdpdCBhL09iamVjdHMvYWJzdHJhY3QuYyBiL09iamVjdHMvYWJzdHJhY3QuYwppbmRleCA4ODIwNWJkLi43NDdlZGEwIDEwMDY0NAotLS0gYS9PYmplY3RzL2Fic3RyYWN0LmMKKysrIGIvT2JqZWN0cy9hYnN0cmFjdC5jCkBAIC0zMiw4ICszMiwxMCBAQAogewogICAgIFB5T2JqZWN0ICp2OwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgdiA9IChQeU9iamVjdCAqKW8tPm9iX3R5cGU7CiAgICAgUHlfSU5DUkVGKHYpOwogICAgIHJldHVybiB2OwpAQCAtMTM3LDEyICsxMzksMTYgQEAKIHsKICAgICBQeU1hcHBpbmdNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBrZXkgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IGtleSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX21hcHBpbmc7Ci0gICAgaWYgKG0gJiYgbS0+bXBfc3Vic2NyaXB0KQotICAgICAgICByZXR1cm4gbS0+bXBfc3Vic2NyaXB0KG8sIGtleSk7CisgICAgaWYgKG0gJiYgbS0+bXBfc3Vic2NyaXB0KSB7CisgICAgICAgIFB5T2JqZWN0ICppdGVtID0gbS0+bXBfc3Vic2NyaXB0KG8sIGtleSk7CisgICAgICAgIGFzc2VydCgoaXRlbSAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKKyAgICAgICAgcmV0dXJuIGl0ZW07CisgICAgfQogCiAgICAgaWYgKG8tPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlKSB7CiAgICAgICAgIGlmIChQeUluZGV4X0NoZWNrKGtleSkpIHsKQEAgLTY2OSwxMyArNjc1LDMxIEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgX1B5X0lERU5USUZJRVIoX19mb3JtYXRfXyk7CiAKKyAgICBpZiAoZm9ybWF0X3NwZWMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrKGZvcm1hdF9zcGVjKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiRm9ybWF0IHNwZWNpZmllciBtdXN0IGJlIGEgc3RyaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUoZm9ybWF0X3NwZWMpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogRmFzdCBwYXRoIGZvciBjb21tb24gdHlwZXMuICovCisgICAgaWYgKGZvcm1hdF9zcGVjID09IE5VTEwgfHwgUHlVbmljb2RlX0dFVF9MRU5HVEgoZm9ybWF0X3NwZWMpID09IDApIHsKKyAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikpIHsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgICAgICAgICAgcmV0dXJuIG9iajsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlMb25nX0NoZWNrRXhhY3Qob2JqKSkgeworICAgICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X1N0cihvYmopOworICAgICAgICB9CisgICAgfQorCiAgICAgLyogSWYgbm8gZm9ybWF0X3NwZWMgaXMgcHJvdmlkZWQsIHVzZSBhbiBlbXB0eSBzdHJpbmcgKi8KICAgICBpZiAoZm9ybWF0X3NwZWMgPT0gTlVMTCkgewogICAgICAgICBlbXB0eSA9IFB5VW5pY29kZV9OZXcoMCwgMCk7CiAgICAgICAgIGZvcm1hdF9zcGVjID0gZW1wdHk7CiAgICAgfQogCi0gICAgLyogRmluZCB0aGUgKHVuYm91bmQhKSBfX2Zvcm1hdF9fIG1ldGhvZCAoYSBib3Jyb3dlZCByZWZlcmVuY2UpICovCisgICAgLyogRmluZCB0aGUgKHVuYm91bmQhKSBfX2Zvcm1hdF9fIG1ldGhvZCAqLwogICAgIG1ldGggPSBfUHlPYmplY3RfTG9va3VwU3BlY2lhbChvYmosICZQeUlkX19fZm9ybWF0X18pOwogICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQpAQCAtMTEyMiw4ICsxMTQ2LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9uZWdhdGl2ZSkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfbmVnYXRpdmUpKG8pOwpAQCAtMTEzNiw4ICsxMTYyLDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9wb3NpdGl2ZSkKICAgICAgICAgcmV0dXJuICgqbS0+bmJfcG9zaXRpdmUpKG8pOwpAQCAtMTE1MCw4ICsxMTc4LDEwIEBACiB7CiAgICAgUHlOdW1iZXJNZXRob2RzICptOwogCi0gICAgaWYgKG8gPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQorCiAgICAgbSA9IG8tPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKICAgICBpZiAobSAmJiBtLT5uYl9pbnZlcnQpCiAgICAgICAgIHJldHVybiAoKm0tPm5iX2ludmVydCkobyk7CkBAIC0xMTY0LDggKzExOTQsMTAgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2Fic29sdXRlKQogICAgICAgICByZXR1cm4gbS0+bmJfYWJzb2x1dGUobyk7CkBAIC0xMTgxLDggKzEyMTMsMTAgQEAKIFB5TnVtYmVyX0luZGV4KFB5T2JqZWN0ICppdGVtKQogewogICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOwotICAgIGlmIChpdGVtID09IE5VTEwpCisgICAgaWYgKGl0ZW0gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIGlmIChQeUxvbmdfQ2hlY2soaXRlbSkpIHsKICAgICAgICAgUHlfSU5DUkVGKGl0ZW0pOwogICAgICAgICByZXR1cm4gaXRlbTsKQEAgLTEyNjUsNDIgKzEyOTksNTUgQEAKIFB5T2JqZWN0ICoKIFB5TnVtYmVyX0xvbmcoUHlPYmplY3QgKm8pCiB7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAgICAgUHlPYmplY3QgKnRydW5jX2Z1bmM7CiAgICAgUHlfYnVmZmVyIHZpZXc7CiAgICAgX1B5X0lERU5USUZJRVIoX190cnVuY19fKTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KKwogICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdChvKSkgewogICAgICAgICBQeV9JTkNSRUYobyk7CiAgICAgICAgIHJldHVybiBvOwogICAgIH0KICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgIGlmIChtICYmIG0tPm5iX2ludCkgeyAvKiBUaGlzIHNob3VsZCBpbmNsdWRlIHN1YmNsYXNzZXMgb2YgaW50ICovCi0gICAgICAgIHJldHVybiAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludChvKTsKKyAgICAgICAgcmVzdWx0ID0gKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQobyk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiAhUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICB0cnVuY19mdW5jID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwobywgJlB5SWRfX190cnVuY19fKTsKICAgICBpZiAodHJ1bmNfZnVuYykgewotICAgICAgICBQeU9iamVjdCAqdHJ1bmNhdGVkID0gUHlFdmFsX0NhbGxPYmplY3QodHJ1bmNfZnVuYywgTlVMTCk7Ci0gICAgICAgIFB5T2JqZWN0ICppbnRfaW5zdGFuY2U7CisgICAgICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHRydW5jX2Z1bmMsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYodHJ1bmNfZnVuYyk7Ci0gICAgICAgIGlmICh0cnVuY2F0ZWQgPT0gTlVMTCB8fCBQeUxvbmdfQ2hlY2sodHJ1bmNhdGVkKSkKLSAgICAgICAgICAgIHJldHVybiB0cnVuY2F0ZWQ7CisgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCBQeUxvbmdfQ2hlY2tFeGFjdChyZXN1bHQpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzdWx0OworICAgICAgICB9CisgICAgICAgIGlmIChQeUxvbmdfQ2hlY2socmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KICAgICAgICAgLyogX190cnVuY19fIGlzIHNwZWNpZmllZCB0byByZXR1cm4gYW4gSW50ZWdyYWwgdHlwZSwKICAgICAgICAgICAgYnV0IGludCgpIG5lZWRzIHRvIHJldHVybiBhbiBpbnQuICovCi0gICAgICAgIG0gPSB0cnVuY2F0ZWQtPm9iX3R5cGUtPnRwX2FzX251bWJlcjsKKyAgICAgICAgbSA9IHJlc3VsdC0+b2JfdHlwZS0+dHBfYXNfbnVtYmVyOwogICAgICAgICBpZiAobSA9PSBOVUxMIHx8IG0tPm5iX2ludCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCiAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICJfX3RydW5jX18gcmV0dXJuZWQgbm9uLUludGVncmFsICh0eXBlICUuMjAwcykiLAotICAgICAgICAgICAgICAgIHRydW5jYXRlZC0+b2JfdHlwZS0+dHBfbmFtZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodHJ1bmNhdGVkKTsKKyAgICAgICAgICAgICAgICByZXN1bHQtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7CiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQotICAgICAgICBpbnRfaW5zdGFuY2UgPSAoUHlPYmplY3QgKilfUHlMb25nX0Zyb21OYkludCh0cnVuY2F0ZWQpOwotICAgICAgICBQeV9ERUNSRUYodHJ1bmNhdGVkKTsKLSAgICAgICAgcmV0dXJuIGludF9pbnN0YW5jZTsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgKFB5T2JqZWN0ICopX1B5TG9uZ19Gcm9tTmJJbnQocmVzdWx0KSk7CisgICAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiAhUHlMb25nX0NoZWNrRXhhY3QocmVzdWx0KSkgeworICAgICAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgX1B5TG9uZ19Db3B5KChQeUxvbmdPYmplY3QgKilyZXN1bHQpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMzIyLDcgKzEzNjksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlQXJyYXlfR0VUX1NJWkUobyksIDEwKTsKIAogICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIobywgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPT0gMCkgewotICAgICAgICBQeU9iamVjdCAqcmVzdWx0LCAqYnl0ZXM7CisgICAgICAgIFB5T2JqZWN0ICpieXRlczsKIAogICAgICAgICAvKiBDb3B5IHRvIE5VTC10ZXJtaW5hdGVkIGJ1ZmZlci4gKi8KICAgICAgICAgYnl0ZXMgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjb25zdCBjaGFyICopdmlldy5idWYsIHZpZXcubGVuKTsKQEAgLTEzNDYsMjMgKzEzOTMsNDMgQEAKIHsKICAgICBQeU51bWJlck1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CisKKyAgICBpZiAoUHlGbG9hdF9DaGVja0V4YWN0KG8pKSB7CisgICAgICAgIFB5X0lOQ1JFRihvKTsKKyAgICAgICAgcmV0dXJuIG87CisgICAgfQogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19udW1iZXI7CiAgICAgaWYgKG0gJiYgbS0+bmJfZmxvYXQpIHsgLyogVGhpcyBzaG91bGQgaW5jbHVkZSBzdWJjbGFzc2VzIG9mIGZsb2F0ICovCiAgICAgICAgIFB5T2JqZWN0ICpyZXMgPSBtLT5uYl9mbG9hdChvKTsKLSAgICAgICAgaWYgKHJlcyAmJiAhUHlGbG9hdF9DaGVjayhyZXMpKSB7CisgICAgICAgIGRvdWJsZSB2YWw7CisgICAgICAgIGlmICghcmVzIHx8IFB5RmxvYXRfQ2hlY2tFeGFjdChyZXMpKSB7CisgICAgICAgICAgICByZXR1cm4gcmVzOworICAgICAgICB9CisgICAgICAgIGlmICghUHlGbG9hdF9DaGVjayhyZXMpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAiX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjIwMHMpIiwKLSAgICAgICAgICAgICAgcmVzLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJS41MHMuX19mbG9hdF9fIHJldHVybmVkIG5vbi1mbG9hdCAodHlwZSAlLjUwcykiLAorICAgICAgICAgICAgICAgICAgICAgICAgIG8tPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIHJldHVybiByZXM7CisgICAgICAgIC8qIElzc3VlICMyNjk4Mzogd2FybiBpZiAncmVzJyBub3Qgb2YgZXhhY3QgdHlwZSBmbG9hdC4gKi8KKyAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKS4gICIKKyAgICAgICAgICAgICAgICAiVGhlIGFiaWxpdHkgdG8gcmV0dXJuIGFuIGluc3RhbmNlIG9mIGEgc3RyaWN0IHN1YmNsYXNzIG9mIGZsb2F0ICIKKyAgICAgICAgICAgICAgICAiaXMgZGVwcmVjYXRlZCwgYW5kIG1heSBiZSByZW1vdmVkIGluIGEgZnV0dXJlIHZlcnNpb24gb2YgUHl0aG9uLiIsCisgICAgICAgICAgICAgICAgby0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShyZXMpOworICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZSh2YWwpOwogICAgIH0KICAgICBpZiAoUHlGbG9hdF9DaGVjayhvKSkgeyAvKiBBIGZsb2F0IHN1YmNsYXNzIHdpdGggbmJfZmxvYXQgPT0gTlVMTCAqLwotICAgICAgICBQeUZsb2F0T2JqZWN0ICpwbyA9IChQeUZsb2F0T2JqZWN0ICopbzsKLSAgICAgICAgcmV0dXJuIFB5RmxvYXRfRnJvbURvdWJsZShwby0+b2JfZnZhbCk7CisgICAgICAgIHJldHVybiBQeUZsb2F0X0Zyb21Eb3VibGUoUHlGbG9hdF9BU19ET1VCTEUobykpOwogICAgIH0KICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tU3RyaW5nKG8pOwogfQpAQCAtMTQzMCw4ICsxNDk3LDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2NvbmNhdCkKQEAgLTE0NTQsOCArMTUyMiw5IEBACiB7CiAgICAgUHlTZXF1ZW5jZU1ldGhvZHMgKm07CiAKLSAgICBpZiAobyA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtID0gby0+b2JfdHlwZS0+dHBfYXNfc2VxdWVuY2U7CiAgICAgaWYgKG0gJiYgbS0+c3FfcmVwZWF0KQpAQCAtMTQ4Myw4ICsxNTUyLDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKQorICAgIGlmIChzID09IE5VTEwgfHwgbyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgbSA9IHMtPm9iX3R5cGUtPnRwX2FzX3NlcXVlbmNlOwogICAgIGlmIChtICYmIG0tPnNxX2lucGxhY2VfY29uY2F0KQpAQCAtMTUwNyw4ICsxNTc3LDkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChvID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBvLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pbnBsYWNlX3JlcGVhdCkKQEAgLTE1MzYsMTYgKzE2MDcsMTkgQEAKIHsKICAgICBQeVNlcXVlbmNlTWV0aG9kcyAqbTsKIAotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKHMgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIG0gPSBzLT5vYl90eXBlLT50cF9hc19zZXF1ZW5jZTsKICAgICBpZiAobSAmJiBtLT5zcV9pdGVtKSB7CiAgICAgICAgIGlmIChpIDwgMCkgewogICAgICAgICAgICAgaWYgKG0tPnNxX2xlbmd0aCkgewogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbCA9ICgqbS0+c3FfbGVuZ3RoKShzKTsKLSAgICAgICAgICAgICAgICBpZiAobCA8IDApCisgICAgICAgICAgICAgICAgaWYgKGwgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGkgKz0gbDsKICAgICAgICAgICAgIH0KICAgICAgICAgfQpAQCAtMTU2MCw3ICsxNjM0LDkgQEAKIHsKICAgICBQeU1hcHBpbmdNZXRob2RzICptcDsKIAotICAgIGlmICghcykgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICBpZiAoIXMpIHsKKyAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBtcCA9IHMtPm9iX3R5cGUtPnRwX2FzX21hcHBpbmc7CiAgICAgaWYgKG1wICYmIG1wLT5tcF9zdWJzY3JpcHQpIHsKQEAgLTE2ODcsOCArMTc2Myw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBqOwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgLyogU3BlY2lhbC1jYXNlIHRoZSBjb21tb24gdHVwbGUgYW5kIGxpc3QgY2FzZXMsIGZvciBlZmZpY2llbmN5LiAqLwogICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QodikpIHsKQEAgLTE3NjgsOCArMTg0NSw5IEBACiAgICAgUHlPYmplY3QgKnJlc3VsdDsgIC8qIHJlc3VsdCBsaXN0ICovCiAgICAgUHlPYmplY3QgKnJ2OyAgICAgICAgICAvKiByZXR1cm4gdmFsdWUgZnJvbSBQeUxpc3RfRXh0ZW5kICovCiAKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICByZXN1bHQgPSBQeUxpc3RfTmV3KDApOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKQEAgLTE3ODksOCArMTg2Nyw5IEBACiB7CiAgICAgUHlPYmplY3QgKml0OwogCi0gICAgaWYgKHYgPT0gTlVMTCkKKyAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgaWYgKFB5TGlzdF9DaGVja0V4YWN0KHYpIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdCh2KSkgewogICAgICAgICBQeV9JTkNSRUYodik7CkBAIC0xOTczLDggKzIwNTIsOSBAQAogewogICAgIFB5T2JqZWN0ICpva2V5LCAqcjsKIAotICAgIGlmIChrZXkgPT0gTlVMTCkKKyAgICBpZiAoa2V5ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBva2V5ID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoa2V5KTsKICAgICBpZiAob2tleSA9PSBOVUxMKQpAQCAtMjE0Myw3ICsyMjIzLDcgQEAKIH0KIAogUHlPYmplY3QgKgotUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlPYmplY3RfQ2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiB7CiAgICAgdGVybmFyeWZ1bmMgY2FsbDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwpAQCAtMjE1Miw2ICsyMjMyLDggQEAKICAgICAgICBiZWNhdXNlIGl0IG1heSBjbGVhciBpdCAoZGlyZWN0bHkgb3IgaW5kaXJlY3RseSkgYW5kIHNvIHRoZQogICAgICAgIGNhbGxlciBsb3NlcyBpdHMgZXhjZXB0aW9uICovCiAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKKyAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CisgICAgYXNzZXJ0KGt3YXJncyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2FyZ3MpKTsKIAogICAgIGNhbGwgPSBmdW5jLT5vYl90eXBlLT50cF9jYWxsOwogICAgIGlmIChjYWxsID09IE5VTEwpIHsKQEAgLTIxNjMsMTA4ICsyMjQ1LDM0MyBAQAogICAgIGlmIChQeV9FbnRlclJlY3Vyc2l2ZUNhbGwoIiB3aGlsZSBjYWxsaW5nIGEgUHl0aG9uIG9iamVjdCIpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIHJlc3VsdCA9ICgqY2FsbCkoZnVuYywgYXJnLCBrdyk7CisgICAgcmVzdWx0ID0gKCpjYWxsKShmdW5jLCBhcmdzLCBrd2FyZ3MpOwogCiAgICAgUHlfTGVhdmVSZWN1cnNpdmVDYWxsKCk7CiAKICAgICByZXR1cm4gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoZnVuYywgcmVzdWx0LCBOVUxMKTsKIH0KIAorUHlPYmplY3QqCitfUHlTdGFja19Bc1R1cGxlKFB5T2JqZWN0ICoqc3RhY2ssIFB5X3NzaXplX3QgbmFyZ3MpCit7CisgICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlfc3NpemVfdCBpOworCisgICAgYXJncyA9IFB5VHVwbGVfTmV3KG5hcmdzKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaT0wOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXRlbSA9IHN0YWNrW2ldOworICAgICAgICBQeV9JTkNSRUYoaXRlbSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgaSwgaXRlbSk7CisgICAgfQorCisgICAgcmV0dXJuIGFyZ3M7Cit9CisKK1B5T2JqZWN0ICoKK19QeU9iamVjdF9GYXN0Q2FsbERpY3QoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmt3YXJncykKK3sKKyAgICB0ZXJuYXJ5ZnVuYyBjYWxsOworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBOVUxMOworCisgICAgLyogX1B5T2JqZWN0X0Zhc3RDYWxsRGljdCgpIG11c3Qgbm90IGJlIGNhbGxlZCB3aXRoIGFuIGV4Y2VwdGlvbiBzZXQsCisgICAgICAgYmVjYXVzZSBpdCBtYXkgY2xlYXIgaXQgKGRpcmVjdGx5IG9yIGluZGlyZWN0bHkpIGFuZCBzbyB0aGUKKyAgICAgICBjYWxsZXIgbG9zZXMgaXRzIGV4Y2VwdGlvbiAqLworICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgaWYgKFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgiIHdoaWxlIGNhbGxpbmcgYSBQeXRob24gb2JqZWN0IikpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgcmVzdWx0ID0gX1B5RnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIGFyZ3MsIG5hcmdzLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXN1bHQgPSBfUHlDRnVuY3Rpb25fRmFzdENhbGxEaWN0KGZ1bmMsIGFyZ3MsIG5hcmdzLCBrd2FyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlPYmplY3QgKnR1cGxlOworCisgICAgICAgIC8qIFNsb3ctcGF0aDogYnVpbGQgYSB0ZW1wb3JhcnkgdHVwbGUgKi8KKyAgICAgICAgY2FsbCA9IGZ1bmMtPm9iX3R5cGUtPnRwX2NhbGw7CisgICAgICAgIGlmIChjYWxsID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGNhbGxhYmxlIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorCisgICAgICAgIHR1cGxlID0gX1B5U3RhY2tfQXNUdXBsZShhcmdzLCBuYXJncyk7CisgICAgICAgIGlmICh0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH0KKworICAgICAgICByZXN1bHQgPSAoKmNhbGwpKGZ1bmMsIHR1cGxlLCBrd2FyZ3MpOworICAgICAgICBQeV9ERUNSRUYodHVwbGUpOworCisgICAgICAgIHJlc3VsdCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHJlc3VsdCwgTlVMTCk7CisgICAgfQorCitleGl0OgorICAgIFB5X0xlYXZlUmVjdXJzaXZlQ2FsbCgpOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworLyogUG9zaXRpb25hbCBhcmd1bWVudHMgYXJlIG9iaiBmb2xsb3dlZCBhcmdzLiAqLworUHlPYmplY3QgKgorX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChQeU9iamVjdCAqZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzhdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBhcmdjb3VudDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOworCisgICAgYXJnY291bnQgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOworICAgIGlmIChhcmdjb3VudCArIDEgPD0gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSkgeworICAgICAgICBzdGFjayA9IHNtYWxsX3N0YWNrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MoKGFyZ2NvdW50ICsgMSkgKiBzaXplb2YoUHlPYmplY3QgKikpOworICAgICAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorCisgICAgLyogdXNlIGJvcnJvd2VkIHJlZmVyZW5jZXMgKi8KKyAgICBzdGFja1swXSA9IG9iajsKKyAgICBtZW1jcHkoJnN0YWNrWzFdLAorICAgICAgICAgICAgICAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKSwKKyAgICAgICAgICAgICAgYXJnY291bnQgKiBzaXplb2YoUHlPYmplY3QgKikpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2ssIGFyZ2NvdW50ICsgMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncyk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCitQeU9iamVjdCAqCitfUHlTdGFja19Bc0RpY3QoUHlPYmplY3QgKip2YWx1ZXMsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5X3NzaXplX3Qgbmt3YXJncyA9IFB5VHVwbGVfR0VUX1NJWkUoa3duYW1lcyk7CisgICAgUHlPYmplY3QgKmt3ZGljdDsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBrd2RpY3QgPSBQeURpY3RfTmV3KCk7CisgICAgaWYgKGt3ZGljdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBua3dhcmdzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgaSk7CisgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9ICp2YWx1ZXMrKzsKKyAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpOworICAgICAgICBhc3NlcnQoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpID09IE5VTEwpOworICAgICAgICBpZiAoUHlEaWN0X1NldEl0ZW0oa3dkaWN0LCBrZXksIHZhbHVlKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4ga3dkaWN0OworfQorCitQeU9iamVjdCAqKgorX1B5U3RhY2tfVW5wYWNrRGljdChQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MsCisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqcF9rd25hbWVzLCBQeU9iamVjdCAqZnVuYykKK3sKKyAgICBQeU9iamVjdCAqKnN0YWNrLCAqKmt3c3RhY2s7CisgICAgUHlfc3NpemVfdCBua3dhcmdzOworICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgIFB5T2JqZWN0ICprZXksICp2YWx1ZTsKKyAgICBQeU9iamVjdCAqa3duYW1lczsKKworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrRXhhY3Qoa3dhcmdzKSk7CisKKyAgICBua3dhcmdzID0gKGt3YXJncyAhPSBOVUxMKSA/IFB5RGljdF9TaXplKGt3YXJncykgOiAwOworICAgIGlmICghbmt3YXJncykgeworICAgICAgICAqcF9rd25hbWVzID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIGFyZ3M7CisgICAgfQorCisgICAgaWYgKChzaXplX3QpbmFyZ3MgPiBQWV9TU0laRV9UX01BWCAvIHNpemVvZihzdGFja1swXSkgLSAoc2l6ZV90KW5rd2FyZ3MpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2MoKG5hcmdzICsgbmt3YXJncykgKiBzaXplb2Yoc3RhY2tbMF0pKTsKKyAgICBpZiAoc3RhY2sgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBrd25hbWVzID0gUHlUdXBsZV9OZXcobmt3YXJncyk7CisgICAgaWYgKGt3bmFtZXMgPT0gTlVMTCkgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgLyogQ29weSBwb3NpdGlvbiBhcmd1bWVudHMgKGJvcnJvd2VkIHJlZmVyZW5jZXMpICovCisgICAgbWVtY3B5KHN0YWNrLCBhcmdzLCBuYXJncyAqIHNpemVvZihzdGFja1swXSkpOworCisgICAga3dzdGFjayA9IHN0YWNrICsgbmFyZ3M7CisgICAgcG9zID0gaSA9IDA7CisgICAgLyogVGhpcyBsb29wIGRvZXNuJ3Qgc3VwcG9ydCBsb29rdXAgZnVuY3Rpb24gbXV0YXRpbmcgdGhlIGRpY3Rpb25hcnkKKyAgICAgICB0byBjaGFuZ2UgaXRzIHNpemUuIEl0J3MgYSBkZWxpYmVyYXRlIGNob2ljZSBmb3Igc3BlZWQsIHRoaXMgZnVuY3Rpb24gaXMKKyAgICAgICBjYWxsZWQgaW4gdGhlIHBlcmZvcm1hbmNlIGNyaXRpY2FsIGhvdCBjb2RlLiAqLworICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrZXksICZ2YWx1ZSkpIHsKKyAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa3duYW1lcywgaSwga2V5KTsKKyAgICAgICAgLyogVGhlIHN0YWNrIGNvbnRhaW5zIGJvcnJvd2VkIHJlZmVyZW5jZXMgKi8KKyAgICAgICAga3dzdGFja1tpXSA9IHZhbHVlOworICAgICAgICBpKys7CisgICAgfQorCisgICAgKnBfa3duYW1lcyA9IGt3bmFtZXM7CisgICAgcmV0dXJuIHN0YWNrOworfQorCitQeU9iamVjdCAqCitfUHlPYmplY3RfRmFzdENhbGxLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKipzdGFjaywgUHlfc3NpemVfdCBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICprd2RpY3QsICpyZXN1bHQ7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKworICAgIGFzc2VydChuYXJncyA+PSAwKTsKKyAgICBhc3NlcnQoa3duYW1lcyA9PSBOVUxMIHx8IFB5VHVwbGVfQ2hlY2tFeGFjdChrd25hbWVzKSk7CisgICAgYXNzZXJ0KChuYXJncyA9PSAwICYmIG5rd2FyZ3MgPT0gMCkgfHwgc3RhY2sgIT0gTlVMTCk7CisgICAgLyoga3duYW1lcyBtdXN0IG9ubHkgY29udGFpbnMgc3RyIHN0cmluZ3MsIG5vIHN1YmNsYXNzLCBhbmQgYWxsIGtleXMgbXVzdAorICAgICAgIGJlIHVuaXF1ZTogdGhlc2UgYXJlIGltcGxlbWVudGVkIGluIFB5dGhvbi9jZXZhbC5jIGFuZAorICAgICAgIF9QeUFyZ19QYXJzZVN0YWNrKCkuICovCisKKyAgICBpZiAoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGxLZXl3b3JkcyhmdW5jLCBzdGFjaywgbmFyZ3MsIGt3bmFtZXMpOworICAgIH0KKworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgeworICAgICAgICByZXR1cm4gX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICB9CisKKyAgICBpZiAobmt3YXJncyA+IDApIHsKKyAgICAgICAga3dkaWN0ID0gX1B5U3RhY2tfQXNEaWN0KHN0YWNrICsgbmFyZ3MsIGt3bmFtZXMpOworICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIG5hcmdzLCBrd2RpY3QpOworICAgIFB5X1hERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCiBzdGF0aWMgUHlPYmplY3QqCiBjYWxsX2Z1bmN0aW9uX3RhaWwoUHlPYmplY3QgKmNhbGxhYmxlLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqcmV0dmFsOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoYXJncyAhPSBOVUxMKTsKIAogICAgIGlmICghUHlUdXBsZV9DaGVjayhhcmdzKSkgewotICAgICAgICBQeU9iamVjdCAqYTsKLQotICAgICAgICBhID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgICAgIGlmIChhID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oYSwgMCwgYXJncyk7Ci0gICAgICAgIGFyZ3MgPSBhOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbEFyZzEoY2FsbGFibGUsIGFyZ3MpOwogICAgIH0KLSAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7CisgICAgfQogCi0gICAgUHlfREVDUkVGKGFyZ3MpOwotCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsRnVuY3Rpb24oUHlPYmplY3QgKmNhbGxhYmxlLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzOworICAgIFB5T2JqZWN0ICphcmdzLCAqcmVzdWx0OwogCi0gICAgaWYgKGNhbGxhYmxlID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKLQotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKLSAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICByZXR1cm4gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhjYWxsYWJsZSk7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKKyAgICB2YV9lbmQodmEpOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgcmVzdWx0ID0gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlPYmplY3QgKgogX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVChQeU9iamVjdCAqY2FsbGFibGUsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewogICAgIHZhX2xpc3QgdmE7Ci0gICAgUHlPYmplY3QgKmFyZ3M7CisgICAgUHlPYmplY3QgKmFyZ3MsICpyZXN1bHQ7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOwotCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KSB7Ci0gICAgICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwotICAgICAgICBhcmdzID0gX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVChmb3JtYXQsIHZhKTsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CiAKLSAgICByZXR1cm4gY2FsbF9mdW5jdGlvbl90YWlsKGNhbGxhYmxlLCBhcmdzKTsKKyAgICBpZiAoIWZvcm1hdCB8fCAhKmZvcm1hdCkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhjYWxsYWJsZSk7CisgICAgfQorCisgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7CisgICAgdmFfZW5kKHZhKTsKKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJlc3VsdCA9IGNhbGxfZnVuY3Rpb25fdGFpbChjYWxsYWJsZSwgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCoKIGNhbGxtZXRob2QoUHlPYmplY3QqIGZ1bmMsIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCB2YSwgaW50IGlzX3NpemVfdCkKIHsKLSAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKLSAgICBQeU9iamVjdCAqYXJnczsKKyAgICBQeU9iamVjdCAqYXJncywgKnJlc3VsdDsKKworICAgIGFzc2VydChmdW5jICE9IE5VTEwpOwogCiAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZ1bmMpKSB7CiAgICAgICAgIHR5cGVfZXJyb3IoImF0dHJpYnV0ZSBvZiB0eXBlICclLjIwMHMnIGlzIG5vdCBjYWxsYWJsZSIsIGZ1bmMpOwotICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgewotICAgICAgICBpZiAoaXNfc2l6ZV90KQotICAgICAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7CisgICAgaWYgKCFmb3JtYXQgfHwgISpmb3JtYXQpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwogCi0gICAgcmV0dmFsID0gY2FsbF9mdW5jdGlvbl90YWlsKGZ1bmMsIGFyZ3MpOworICAgIGlmIChpc19zaXplX3QpIHsKKyAgICAgICAgYXJncyA9IF9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQoZm9ybWF0LCB2YSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhcmdzID0gUHlfVmFCdWlsZFZhbHVlKGZvcm1hdCwgdmEpOworICAgIH0KKyAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KIAotICBleGl0OgotICAgIC8qIGFyZ3MgZ2V0cyBjb25zdW1lZCBpbiBjYWxsX2Z1bmN0aW9uX3RhaWwgKi8KLSAgICBQeV9YREVDUkVGKGZ1bmMpOwotCi0gICAgcmV0dXJuIHJldHZhbDsKKyAgICByZXN1bHQgPSBjYWxsX2Z1bmN0aW9uX3RhaWwoZnVuYywgYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTIyNzQsOCArMjU5MSw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyhvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjI4NCw2ICsyNjAyLDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIyOTUsOCArMjYxNCw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWwgPSBOVUxMOwogCi0gICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKG8gPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIG51bGxfZXJyb3IoKTsKKyAgICB9CiAKICAgICBmdW5jID0gX1B5T2JqZWN0X0dldEF0dHJJZChvLCBuYW1lKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQpAQCAtMjMwNSw2ICsyNjI1LDcgQEAKICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICByZXR2YWwgPSBjYWxsbWV0aG9kKGZ1bmMsIGZvcm1hdCwgdmEsIDApOwogICAgIHZhX2VuZCh2YSk7CisgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXR2YWw7CiB9CiAKQEAgLTIzMTYsOCArMjYzNyw5IEBACiAgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXR2YWw7CiAKLSAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkKKyAgICBpZiAobyA9PSBOVUxMIHx8IG5hbWUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIGZ1bmMgPSBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKG8sIG5hbWUpOwogICAgIGlmIChmdW5jID09IE5VTEwpCkBAIC0yMzI1LDYgKzI2NDcsNyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIApAQCAtMjMzNiw4ICsyNjU5LDkgQEAKICAgICBQeU9iamVjdCAqZnVuYyA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJldHZhbDsKIAotICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKQorICAgIGlmIChvID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQobywgbmFtZSk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewpAQCAtMjM0NiwzOSArMjY3MCw2MyBAQAogICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOwogICAgIHJldHZhbCA9IGNhbGxtZXRob2QoZnVuYywgZm9ybWF0LCB2YSwgMSk7CiAgICAgdmFfZW5kKHZhKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJldHZhbDsKIH0KIAotc3RhdGljIFB5T2JqZWN0ICoKLW9iamFyZ3NfbWt0dXBsZSh2YV9saXN0IHZhKQorc3RhdGljIFB5T2JqZWN0ICoqCitvYmphcmdzX21rc3RhY2soUHlPYmplY3QgKipzbWFsbF9zdGFjaywgUHlfc3NpemVfdCBzbWFsbF9zdGFja19zaXplLAorICAgICAgICAgICAgICAgIHZhX2xpc3QgdmEsIFB5X3NzaXplX3QgKnBfbmFyZ3MpCiB7Ci0gICAgaW50IGksIG4gPSAwOworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICB2YV9saXN0IGNvdW50dmE7Ci0gICAgUHlPYmplY3QgKnJlc3VsdCwgKnRtcDsKKyAgICBQeU9iamVjdCAqKnN0YWNrOwogCi0gICAgICAgIFB5X1ZBX0NPUFkoY291bnR2YSwgdmEpOworICAgIC8qIENvdW50IHRoZSBudW1iZXIgb2YgYXJndW1lbnRzICovCisgICAgdmFfY29weShjb3VudHZhLCB2YSk7CiAKLSAgICB3aGlsZSAoKChQeU9iamVjdCAqKXZhX2FyZyhjb3VudHZhLCBQeU9iamVjdCAqKSkgIT0gTlVMTCkKLSAgICAgICAgKytuOwotICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChyZXN1bHQgIT0gTlVMTCAmJiBuID4gMCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0gICAgICAgICAgICB0bXAgPSAoUHlPYmplY3QgKil2YV9hcmcodmEsIFB5T2JqZWN0ICopOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShyZXN1bHQsIGksIHRtcCk7Ci0gICAgICAgICAgICBQeV9JTkNSRUYodG1wKTsKKyAgICBuID0gMDsKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBQeU9iamVjdCAqYXJnID0gdmFfYXJnKGNvdW50dmEsIFB5T2JqZWN0ICopOworICAgICAgICBpZiAoYXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIG4rKzsKKyAgICB9CisgICAgKnBfbmFyZ3MgPSBuOworCisgICAgLyogQ29weSBhcmd1bWVudHMgKi8KKyAgICBpZiAobiA8PSBzbWFsbF9zdGFja19zaXplKSB7CisgICAgICAgIHN0YWNrID0gc21hbGxfc3RhY2s7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzdGFjayA9IFB5TWVtX01hbGxvYyhuICogc2l6ZW9mKHN0YWNrWzBdKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YV9lbmQoY291bnR2YSk7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KICAgICB9Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKKyAgICAgICAgc3RhY2tbaV0gPSB2YV9hcmcodmEsIFB5T2JqZWN0ICopOworICAgIH0KKyAgICB2YV9lbmQoY291bnR2YSk7CisgICAgcmV0dXJuIHN0YWNrOwogfQogCiBQeU9iamVjdCAqCiBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncyhQeU9iamVjdCAqY2FsbGFibGUsIFB5T2JqZWN0ICpuYW1lLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgY2FsbGFibGUgPSBQeU9iamVjdF9HZXRBdHRyKGNhbGxhYmxlLCBuYW1lKTsKICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKQEAgLTIzODYsMjggKzI3MzQsMzYgQEAKIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9DYWxsTWV0aG9kSWRPYmpBcmdzKFB5T2JqZWN0ICpjYWxsYWJsZSwKICAgICAgICAgc3RydWN0IF9QeV9JZGVudGlmaWVyICpuYW1lLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCB8fCBuYW1lID09IE5VTEwpCisgICAgaWYgKGNhbGxhYmxlID09IE5VTEwgfHwgbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBudWxsX2Vycm9yKCk7CisgICAgfQogCiAgICAgY2FsbGFibGUgPSBfUHlPYmplY3RfR2V0QXR0cklkKGNhbGxhYmxlLCBuYW1lKTsKICAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKQEAgLTI0MTUsMzggKzI3NzEsNTEgQEAKIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIG5hbWUpOwotICAgIGFyZ3MgPSBvYmphcmdzX21rdHVwbGUodmFyZ3MpOworICAgIHN0YWNrID0gb2JqYXJnc19ta3N0YWNrKHNtYWxsX3N0YWNrLCBQeV9BUlJBWV9MRU5HVEgoc21hbGxfc3RhY2spLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmdzLCAmbmFyZ3MpOwogICAgIHZhX2VuZCh2YXJncyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkgeworICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CiAgICAgICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBQeU9iamVjdF9DYWxsKGNhbGxhYmxlLCBhcmdzLCBOVUxMKTsKLSAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CisgICAgaWYgKHN0YWNrICE9IHNtYWxsX3N0YWNrKSB7CisgICAgICAgIFB5TWVtX0ZyZWUoc3RhY2spOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIFB5T2JqZWN0ICoKIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoUHlPYmplY3QgKmNhbGxhYmxlLCAuLi4pCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3MsICp0bXA7CisgICAgUHlPYmplY3QgKnNtYWxsX3N0YWNrWzVdOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CisgICAgUHlfc3NpemVfdCBuYXJnczsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIHZhX2xpc3QgdmFyZ3M7CiAKLSAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkKKyAgICBpZiAoY2FsbGFibGUgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gbnVsbF9lcnJvcigpOworICAgIH0KIAogICAgIC8qIGNvdW50IHRoZSBhcmdzICovCiAgICAgdmFfc3RhcnQodmFyZ3MsIGNhbGxhYmxlKTsKLSAgICBhcmdzID0gb2JqYXJnc19ta3R1cGxlKHZhcmdzKTsKKyAgICBzdGFjayA9IG9iamFyZ3NfbWtzdGFjayhzbWFsbF9zdGFjaywgUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJncywgJm5hcmdzKTsKICAgICB2YV9lbmQodmFyZ3MpOwotICAgIGlmIChhcmdzID09IE5VTEwpCisgICAgaWYgKHN0YWNrID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdG1wID0gUHlPYmplY3RfQ2FsbChjYWxsYWJsZSwgYXJncywgTlVMTCk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KIAotICAgIHJldHVybiB0bXA7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsKGNhbGxhYmxlLCBzdGFjaywgbmFyZ3MpOworICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMgYi9PYmplY3RzL2J5dGVhcnJheW9iamVjdC5jCmluZGV4IDZkNGM2YTEuLmM2ZDA3MDcgMTAwNjQ0Ci0tLSBhL09iamVjdHMvYnl0ZWFycmF5b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlYXJyYXlvYmplY3QuYwpAQCAtMjc4LDMxICsyNzgsNiBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKilyZXN1bHQ7CiB9CiAKLXN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZm9ybWF0KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBQeU9iamVjdCAqYnl0ZXNfaW4sICpieXRlc19vdXQsICpyZXM7Ci0gICAgY2hhciAqYnl0ZXN0cmluZzsKLQotICAgIGlmIChzZWxmID09IE5VTEwgfHwgIVB5Qnl0ZUFycmF5X0NoZWNrKHNlbGYpIHx8IGFyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGJ5dGVzdHJpbmcgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgYnl0ZXNfaW4gPSBQeUJ5dGVzX0Zyb21TdHJpbmcoYnl0ZXN0cmluZyk7Ci0gICAgaWYgKGJ5dGVzX2luID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGJ5dGVzX291dCA9IF9QeUJ5dGVzX0Zvcm1hdChieXRlc19pbiwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGJ5dGVzX2luKTsKLSAgICBpZiAoYnl0ZXNfb3V0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlcyA9IFB5Qnl0ZUFycmF5X0Zyb21PYmplY3QoYnl0ZXNfb3V0KTsKLSAgICBQeV9ERUNSRUYoYnl0ZXNfb3V0KTsKLSAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXM7Ci19Ci0KIC8qIEZ1bmN0aW9ucyBzdHVmZmVkIGludG8gdGhlIHR5cGUgb2JqZWN0ICovCiAKIHN0YXRpYyBQeV9zc2l6ZV90CkBAIC04MjAsMTcgKzc5NSwxNSBAQAogICAgIH0KIAogICAgIC8qIElzIGl0IGFuIGludD8gKi8KLSAgICBjb3VudCA9IFB5TnVtYmVyX0FzU3NpemVfdChhcmcsIFB5RXhjX092ZXJmbG93RXJyb3IpOwotICAgIGlmIChjb3VudCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgIGlmIChQeUluZGV4X0NoZWNrKGFyZykpIHsKKyAgICAgICAgY291bnQgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKKyAgICAgICAgaWYgKGNvdW50ID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICB9Ci0gICAgZWxzZSBpZiAoY291bnQgPCAwKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoY291bnQgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgaWYgKGNvdW50ID4gMCkgewogICAgICAgICAgICAgaWYgKFB5Qnl0ZUFycmF5X1Jlc2l6ZSgoUHlPYmplY3QgKilzZWxmLCBjb3VudCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMTExOSwxNjEgKzEwOTIsMjcgQEAKICNpbmNsdWRlICJzdHJpbmdsaWIvdHJhbnNtb2dyaWZ5LmgiCiAKIAotLyogVGhlIGZvbGxvd2luZyBQeV9MT0NBTF9JTkxJTkUgYW5kIFB5X0xPQ0FMIGZ1bmN0aW9ucwotd2VyZSBjb3BpZWQgZnJvbSB0aGUgb2xkIGNoYXIqIHN0eWxlIHN0cmluZyBvYmplY3QuICovCi0KLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgZWxzZSBpZiAoZW5kIDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgaWYgKHN0YXJ0IDwgMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWJ5dGVhcnJheV9maW5kX2ludGVybmFsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKLXsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9idWZmZXIgc3ViYnVmOwotICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgaWYgKHN1Ym9iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLSAgICBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7Ci0gICAgaWYgKGVuZCAtIHN0YXJ0IDwgc3ViX2xlbikKLSAgICAgICAgcmVzID0gLTE7Ci0gICAgZWxzZSBpZiAoc3ViX2xlbiA9PSAxCi0jaWZuZGVmIEhBVkVfTUVNUkNIUgotICAgICAgICAgICAgJiYgZGlyID4gMAotI2VuZGlmCi0gICAgKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgbmVlZGxlID0gKnN1YjsKLSAgICAgICAgaW50IG1vZGUgPSAoZGlyID4gMCkgPyBGQVNUX1NFQVJDSCA6IEZBU1RfUlNFQVJDSDsKLSAgICAgICAgcmVzID0gc3RyaW5nbGliX2Zhc3RzZWFyY2hfbWVtY2hyXzFjaGFyKAotICAgICAgICAgICAgUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAotICAgICAgICAgICAgbmVlZGxlLCBuZWVkbGUsIG1vZGUpOwotICAgICAgICBpZiAocmVzID49IDApCi0gICAgICAgICAgICByZXMgKz0gc3RhcnQ7Ci0gICAgfQotICAgIGVsc2UgewotICAgICAgICBpZiAoZGlyID4gMCkKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX3NsaWNlKAotICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIGxlbiwKLSAgICAgICAgICAgICAgICBzdWIsIHN1Yl9sZW4sIHN0YXJ0LCBlbmQpOwotICAgIH0KLQotICAgIGlmIChzdWJvYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1YmJ1Zik7Ci0KLSAgICByZXR1cm4gcmVzOwotfQotCi1QeURvY19TVFJWQVIoZmluZF9fZG9jX18sCi0iQi5maW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGxvd2VzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnNlY3Rpb24gc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQsZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2ZpbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gYnl0ZWFycmF5X2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2ZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLVB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCi0iQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnNlY3Rpb24gc3ViIGluXG5cCi1ieXRlcyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKLWFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NvdW50KFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeU9iamVjdCAqc3ViX29iajsKLSAgICBjb25zdCBjaGFyICpzdHIgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0KLSAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqY291bnRfb2JqOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc3ViX29iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKLQotICAgIGNvdW50X29iaiA9IFB5TG9uZ19Gcm9tU3NpemVfdCgKLSAgICAgICAgc3RyaW5nbGliX2NvdW50KHN0ciArIHN0YXJ0LCBlbmQgLSBzdGFydCwgc3ViLCBzdWJfbGVuLCBQWV9TU0laRV9UX01BWCkKLSAgICAgICAgKTsKLQotICAgIGlmIChzdWJfb2JqKQotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2c3ViKTsKLQotICAgIHJldHVybiBjb3VudF9vYmo7CisgICAgcmV0dXJuIF9QeV9ieXRlc19jb3VudChQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LmNsZWFyCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZW1vdmUgYWxsIGl0ZW1zIGZyb20gdGhlIGJ5dGVhcnJheS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9jbGVhcl9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZTUyNGZkMzMwYWJjZGMxOF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg1YzJmZTZhZWRlMDk1NmMgaW5wdXQ9ZWQ2ZWRhZTlkZTQ0N2FjNF0qLwogewogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgMCkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTEyODMsMjUzICsxMTIyLDcyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuY29weQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV0dXJuIGEgY29weSBvZiBCLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2NvcHlfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTZkNWQyOTc1YWEwZjMzZjNdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02OGNmYmNmZWQ0ODRjMTMyIGlucHV0PTY1OTdiMGMwMWJjY2FhOWVdKi8KIHsKICAgICByZXR1cm4gUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKChQeU9iamVjdCAqKXNlbGYpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSk7CiB9CiAKLVB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCi0iQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzZWN0aW9uIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9pbmRleChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfaW5kZXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKHJmaW5kX19kb2NfXywKLSJCLnJmaW5kKHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAotXG5cCi1SZXR1cm4gdGhlIGhpZ2hlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKLXN1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAotYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAotXG5cCi1SZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yZmluZChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmZpbmQoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKLQotUHlEb2NfU1RSVkFSKHJpbmRleF9fZG9jX18sCi0iQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLUxpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JpbmRleChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlYXJyYXlfZmluZF9pbnRlcm5hbChzZWxmLCBhcmdzLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMikKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmluZGV4KFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KIHN0YXRpYyBpbnQKIGJ5dGVhcnJheV9jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2YXJnOwotICAgICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlfU0laRShzZWxmKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyZy5idWYsIHZhcmcubGVuLCAwKTsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmFyZyk7Ci0gICAgICAgIHJldHVybiBwb3MgPj0gMDsKLSAgICB9Ci0gICAgaWYgKGl2YWwgPCAwIHx8IGl2YWwgPj0gMjU2KSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQotICAgIHJldHVybiBtZW1jaHIoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCAoaW50KSBpdmFsLCBQeV9TSVpFKHNlbGYpKSAhPSBOVUxMOworICAgIHJldHVybiBfUHlfYnl0ZXNfY29udGFpbnMoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJnKTsKIH0KIAotCi0vKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2Ygc2VsZgotICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucwotICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgotICovCi1QeV9MT0NBTChpbnQpCi1fYnl0ZWFycmF5X3RhaWxtYXRjaChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnN1YnN0ciwgUHlfc3NpemVfdCBzdGFydCwKLSAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBlbmQsIGludCBkaXJlY3Rpb24pCi17Ci0gICAgUHlfc3NpemVfdCBsZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBjb25zdCBjaGFyKiBzdHI7Ci0gICAgUHlfYnVmZmVyIHZzdWJzdHI7Ci0gICAgaW50IHJ2ID0gMDsKLQotICAgIHN0ciA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLQotICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmdnN1YnN0ciwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICByZXR1cm4gLTE7Ci0KLSAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOwotCi0gICAgaWYgKGRpcmVjdGlvbiA8IDApIHsKLSAgICAgICAgLyogc3RhcnRzd2l0aCAqLwotICAgICAgICBpZiAoc3RhcnQrdnN1YnN0ci5sZW4gPiBsZW4pIHsKLSAgICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGVuZHN3aXRoICovCi0gICAgICAgIGlmIChlbmQtc3RhcnQgPCB2c3Vic3RyLmxlbiB8fCBzdGFydCA+IGxlbikgewotICAgICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKGVuZC12c3Vic3RyLmxlbiA+IHN0YXJ0KQotICAgICAgICAgICAgc3RhcnQgPSBlbmQgLSB2c3Vic3RyLmxlbjsKLSAgICB9Ci0gICAgaWYgKGVuZC1zdGFydCA+PSB2c3Vic3RyLmxlbikKLSAgICAgICAgcnYgPSAhIG1lbWNtcChzdHIrc3RhcnQsIHZzdWJzdHIuYnVmLCB2c3Vic3RyLmxlbik7Ci0KLWRvbmU6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmdnN1YnN0cik7Ci0gICAgcmV0dXJuIHJ2OwotfQotCi0KLVB5RG9jX1NUUlZBUihzdGFydHN3aXRoX19kb2NfXywKLSJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3N0YXJ0c3dpdGgoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygic3RhcnRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgLTEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwgUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi1QeURvY19TVFJWQVIoZW5kc3dpdGhfX2RvY19fLAotIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9lbmRzd2l0aChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCBzdGFydCA9IDA7Ci0gICAgUHlfc3NpemVfdCBlbmQgPSBQWV9TU0laRV9UX01BWDsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGludCByZXN1bHQ7Ci0KLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCJlbmRzd2l0aCIsIGFyZ3MsICZzdWJvYmosICZzdGFydCwgJmVuZCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IF9ieXRlYXJyYXlfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgewotICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKLSAgICB9Ci0gICAgcmVzdWx0ID0gX2J5dGVhcnJheV90YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKSwgYXJncyk7CiB9CiAKIAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnRyYW5zbGF0ZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICB0YWJsZTogb2JqZWN0CiAgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCi0gICAgWwotICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKLSAgICBdCiAgICAgLworICAgIGRlbGV0ZSBhcyBkZWxldGVjaGFyczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCiAKIFJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogCi1BbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuCiBUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBncm91cF9yaWdodF8xLCBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmJlYmM4NmE5YTFmZjA4MyBpbnB1dD1iNzQ5YWQ4NWY0ODYwODI0XSovCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWI2YThmMDFjMmE3NGU0NDYgaW5wdXQ9Y2ZmZjk1NmQ0ZDEyN2E5Yl0qLwogewogICAgIGNoYXIgKmlucHV0LCAqb3V0cHV0OwogICAgIGNvbnN0IGNoYXIgKnRhYmxlX2NoYXJzOwpAQCAtMTU3Miw3ICsxMjMwLDcgQEAKICAgICByZXN1bHQgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIGlubGVuKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVBcnJheV9Bc1N0cmluZyhyZXN1bHQpOworICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGlucHV0X29iaik7CiAKICAgICBpZiAodmRlbC5sZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CkBAIC0xNTk4LDggKzEyNTYsNyBAQAogICAgIGZvciAoaSA9IGlubGVuOyAtLWkgPj0gMDsgKSB7CiAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqaW5wdXQrKyk7CiAgICAgICAgIGlmICh0cmFuc190YWJsZVtjXSAhPSAtMSkKLSAgICAgICAgICAgIGlmIChQeV9DSEFSTUFTSygqb3V0cHV0KysgPSAoY2hhcil0cmFuc190YWJsZVtjXSkgPT0gYykKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICAqb3V0cHV0KysgPSAoY2hhcil0cmFuc190YWJsZVtjXTsKICAgICB9CiAgICAgLyogRml4IHRoZSBzaXplIG9mIHRoZSByZXN1bHRpbmcgc3RyaW5nICovCiAgICAgaWYgKGlubGVuID4gMCkKQEAgLTE2NDIsNDkzICsxMjk5LDYgQEAKIH0KIAogCi0vKiBmaW5kIGFuZCBjb3VudCBjaGFyYWN0ZXJzIGFuZCBzdWJzdHJpbmdzICovCi0KLSNkZWZpbmUgZmluZGNoYXIodGFyZ2V0LCB0YXJnZXRfbGVuLCBjKSAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICgoY2hhciAqKW1lbWNocigoY29uc3Qgdm9pZCAqKSh0YXJnZXQpLCBjLCB0YXJnZXRfbGVuKSkKLQotCi0vKiBCeXRlcyBvcHMgbXVzdCByZXR1cm4gYSBzdHJpbmcsIGNyZWF0ZSBhIGNvcHkgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXR1cm5fc2VsZihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLXsKLSAgICAvKiBhbHdheXMgcmV0dXJuIGEgbmV3IGJ5dGVhcnJheSAqLwotICAgIHJldHVybiAoUHlCeXRlQXJyYXlPYmplY3QgKilQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKSwKLSAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpKTsKLX0KLQotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpCi1jb3VudGNoYXIoY29uc3QgY2hhciAqdGFyZ2V0LCBQeV9zc2l6ZV90IHRhcmdldF9sZW4sIGNoYXIgYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBQeV9zc2l6ZV90IGNvdW50PTA7Ci0gICAgY29uc3QgY2hhciAqc3RhcnQ9dGFyZ2V0OwotICAgIGNvbnN0IGNoYXIgKmVuZD10YXJnZXQrdGFyZ2V0X2xlbjsKLQotICAgIHdoaWxlICggKHN0YXJ0PWZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGMpKSAhPSBOVUxMICkgewotICAgICAgICBjb3VudCsrOwotICAgICAgICBpZiAoY291bnQgPj0gbWF4Y291bnQpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgc3RhcnQgKz0gMTsKLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotfQotCi0KLS8qIEFsZ29yaXRobXMgZm9yIGRpZmZlcmVudCBjYXNlcyBvZiBzdHJpbmcgcmVwbGFjZW1lbnQgKi8KLQotLyogbGVuKHNlbGYpPj0xLCBmcm9tPSIiLCBsZW4odG8pPj0xLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2VfaW50ZXJsZWF2ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaTsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIC8qIDEgYXQgdGhlIGVuZCBwbHVzIDEgYWZ0ZXIgZXZlcnkgY2hhcmFjdGVyOwotICAgICAgIGNvdW50ID0gbWluKG1heGNvdW50LCBzZWxmX2xlbiArIDEpICovCi0gICAgaWYgKG1heGNvdW50IDw9IHNlbGZfbGVuKQotICAgICAgICBjb3VudCA9IG1heGNvdW50OwotICAgIGVsc2UKLSAgICAgICAgLyogQ2FuJ3Qgb3ZlcmZsb3c6IHNlbGZfbGVuICsgMSA8PSBtYXhjb3VudCA8PSBQWV9TU0laRV9UX01BWC4gKi8KLSAgICAgICAgY291bnQgPSBzZWxmX2xlbiArIDE7Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgIHJlc3VsdF9sZW4gPSBjb3VudCAqIHRvX2xlbiArIHNlbGZfbGVuOyAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlIHN0cmluZyBpcyB0b28gbG9uZyIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0X2xlbiA9IGNvdW50ICogdG9fbGVuICsgc2VsZl9sZW47Ci0KLSAgICBpZiAoISAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgLyogVE9ETzogc3BlY2lhbCBjYXNlIHNpbmdsZSBjaGFyYWN0ZXIsIHdoaWNoIGRvZXNuJ3QgbmVlZCBtZW1jcHkgKi8KLQotICAgIC8qIExheSB0aGUgZmlyc3Qgb25lIGRvd24gKGd1YXJhbnRlZWQgdGhpcyB3aWxsIG9jY3VyKSAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgY291bnQgLT0gMTsKLQotICAgIGZvciAoaT0wOyBpPGNvdW50OyBpKyspIHsKLSAgICAgICAgKnJlc3VsdF9zKysgPSAqc2VsZl9zKys7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIH0KLQotICAgIC8qIENvcHkgdGhlIHJlc3Qgb2YgdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbi1pKTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIFNwZWNpYWwgY2FzZSBmb3IgZGVsZXRpbmcgYSBzaW5nbGUgY2hhcmFjdGVyICovCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgdG89IiIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gY291bnQ7ICAvKiBmcm9tX2xlbiA9PSAxICovCi0gICAgYXNzZXJ0KHJlc3VsdF9sZW4+PTApOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi0gICAgICAgICAgICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG5leHQgPSBmaW5kY2hhcihzdGFydCwgZW5kLXN0YXJ0LCBmcm9tX2MpOwotICAgICAgICBpZiAobmV4dCA9PSBOVUxMKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQsIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0KLSAgICBjb3VudCA9IHN0cmluZ2xpYl9jb3VudChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbWF4Y291bnQpOwotCi0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuIC0gKGNvdW50ICogZnJvbV9sZW4pOwotICAgIGFzc2VydCAocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgUHlCeXRlQXJyYXlfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwgKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKLQotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLQotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZUFycmF5T2JqZWN0ICopCi1yZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXJfaW5fcGxhY2UoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hhciBmcm9tX2MsIGNoYXIgdG9fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQsICpuZXh0OwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW47Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgbmV4dCA9IGZpbmRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYyk7Ci0KLSAgICBpZiAobmV4dCA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIE5vIG1hdGNoZXM7IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIE5lZWQgdG8gbWFrZSBhIG5ldyBieXRlcyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBzZWxmX2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQtc2VsZl9zKTsKLSAgICAqc3RhcnQgPSB0b19jOwotICAgIHN0YXJ0Kys7Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqbmV4dCA9IHRvX2M7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqdG9fcywgUHlfc3NpemVfdCB0b19sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnJlc3VsdF9zLCAqc3RhcnQsICplbmQ7Ci0gICAgY2hhciAqc2VsZl9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIG9mZnNldDsKLSAgICBQeUJ5dGVBcnJheU9iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBieXRlcyB3aWxsIGJlIHRoZSBzYW1lIHNpemUgKi8KLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgIGlmIChvZmZzZXQgPT0gLTEpIHsKLSAgICAgICAgLyogTm8gbWF0Y2hlczsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IGJ5dGVzICovCi0gICAgcmVzdWx0ID0gKFB5Qnl0ZUFycmF5T2JqZWN0ICopIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHNlbGZfbGVuKTsKLSAgICBpZiAocmVzdWx0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHJlc3VsdCk7Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzZWxmX3MsIHNlbGZfbGVuKTsKLQotICAgIC8qIGNoYW5nZSBldmVyeXRoaW5nIGluLXBsYWNlLCBzdGFydGluZyB3aXRoIHRoaXMgb25lICovCi0gICAgc3RhcnQgPSAgcmVzdWx0X3MgKyBvZmZzZXQ7Ci0gICAgUHlfTUVNQ1BZKHN0YXJ0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgc3RhcnQgKz0gZnJvbV9sZW47Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICggLS1tYXhjb3VudCA+IDApIHsKLSAgICAgICAgb2Zmc2V0ID0gc3RyaW5nbGliX2ZpbmQoc3RhcnQsIGVuZC1zdGFydCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgICAgIGlmIChvZmZzZXQ9PS0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIFB5X01FTUNQWShzdGFydCtvZmZzZXQsIHRvX3MsIGZyb21fbGVuKTsKLSAgICAgICAgc3RhcnQgKz0gb2Zmc2V0K2Zyb21fbGVuOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT0xLCBsZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlQXJyYXlPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywKLSAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIGNoYXIgKnN0YXJ0LCAqbmV4dCwgKmVuZDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCByZXN1bHRfbGVuOwotICAgIFB5X3NzaXplX3QgY291bnQ7Ci0gICAgUHlCeXRlQXJyYXlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBjb3VudGNoYXIoc2VsZl9zLCBzZWxmX2xlbiwgZnJvbV9jLCBtYXhjb3VudCk7Ci0gICAgaWYgKGNvdW50ID09IDApIHsKLSAgICAgICAgLyogbm8gbWF0Y2hlcywgcmV0dXJuIHVuY2hhbmdlZCAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogdXNlIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gY3VycmVudCBhbmQgbmV3LCBoZW5jZSB0aGUgIi0xIiAqLwotICAgIC8qICAgcmVzdWx0X2xlbiA9IHNlbGZfbGVuICsgY291bnQgKiAodG9fbGVuLTEpICAqLwotICAgIGFzc2VydChjb3VudCA+IDApOwotICAgIGlmICh0b19sZW4gLSAxID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSAxKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVBcnJheU9iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGlmIChuZXh0ID09IHN0YXJ0KSB7Ci0gICAgICAgICAgICAvKiByZXBsYWNlIHdpdGggdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ICs9IDE7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAvKiBjb3B5IHRoZSB1bmNoYW5nZWQgb2xkIHRoZW4gdGhlICd0bycgKi8KLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIG5leHQtc3RhcnQpOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gKG5leHQtc3RhcnQpOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCB0b19zLCB0b19sZW4pOwotICAgICAgICAgICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgICAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk+PTIsIGxlbih0byk+PTIsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmcoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZUFycmF5T2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVBcnJheV9HRVRfU0laRShzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiBDaGVjayBmb3Igb3ZlcmZsb3cgKi8KLSAgICAvKiAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tZnJvbV9sZW4pICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIGZyb21fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsICJyZXBsYWNlIGJ5dGVzIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4gLSBmcm9tX2xlbik7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlQXJyYXlPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVBcnJheV9BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQrb2Zmc2V0OwotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgYnl0ZXMgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBlbmQtc3RhcnQpOwotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQotCi1QeV9MT0NBTChQeUJ5dGVBcnJheU9iamVjdCAqKQotcmVwbGFjZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwKLSAgICAgICAgY29uc3QgY2hhciAqZnJvbV9zLCBQeV9zc2l6ZV90IGZyb21fbGVuLAotICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBpZiAobWF4Y291bnQgPCAwKSB7Ci0gICAgICAgIG1heGNvdW50ID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgfSBlbHNlIGlmIChtYXhjb3VudCA9PSAwIHx8IFB5Qnl0ZUFycmF5X0dFVF9TSVpFKHNlbGYpID09IDApIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBieXRlcyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKG1heGNvdW50ID09IDAgfHwKLSAgICAgICAgKGZyb21fbGVuID09IDAgJiYgdG9fbGVuID09IDApKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgYnl0ZXMgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gMCkgewotICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgYnl0ZXMgZXZlcnl3aGVyZS4gICAqLwotICAgICAgICAvKiAgICA+Pj4gIlB5dGhvbiIucmVwbGFjZSgiIiwgIi4iKSAgICAgKi8KLSAgICAgICAgLyogICAgJy5QLnkudC5oLm8ubi4nICAgICAgICAgICAgICAgICAgICovCi0gICAgICAgIHJldHVybiByZXBsYWNlX2ludGVybGVhdmUoc2VsZiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgfQotCi0gICAgLyogRXhjZXB0IGZvciAiIi5yZXBsYWNlKCIiLCAiQSIpID09ICJBIiB0aGVyZSBpcyBubyB3YXkgYmV5b25kIHRoaXMgKi8KLSAgICAvKiBwb2ludCBmb3IgYW4gZW1wdHkgc2VsZiBieXRlcyB0byBnZW5lcmF0ZSBhIG5vbi1lbXB0eSBieXRlcyAqLwotICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgYnl0ZXMgKi8KLSAgICBpZiAoUHlCeXRlQXJyYXlfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKHRvX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIGJ5dGVzICovCi0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcigKLSAgICAgICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBieXRlcyBoYXZlIHRoZSBzYW1lIGxlbmd0aCAqLwotCi0gICAgaWYgKGZyb21fbGVuID09IHRvX2xlbikgewotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZSgKLSAgICAgICAgICAgICAgICAgICAgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICB0b19zWzBdLAotICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zLCBmcm9tX2xlbiwgdG9fcywgdG9fbGVuLCBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLwotICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoc2VsZiwgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLX0KLQotCiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmVwbGFjZQogCkBAIC0yMTUwLDkgKzEzMjAsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICBQeV9idWZmZXIgKm5ldywgUHlfc3NpemVfdCBjb3VudCkKIC8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kMzk4ODRjNGRjNTk0MTJhIGlucHV0PWFhMzc5ZDk4ODYzN2M3ZmJdKi8KIHsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlQXJyYXlPYmplY3QgKikgc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQtPmJ1Ziwgb2xkLT5sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKltjbGluaWMgaW5wdXRdCkBAIC0yMjAwLDcgKzEzNzAsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZWFycmF5LnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBzZXA6IG9iamVjdAogICAgIC8KIApAQCAtMjIxNiw3ICsxMzg1LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9wYXJ0aXRpb24oUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDVkMjUyNWRkZDM1Zjk1NyBpbnB1dD03ZDdmZTM3YjE2OTZkNTA2XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDVkMjUyNWRkZDM1Zjk1NyBpbnB1dD04NmY4OTIyMzg5MmI3MGI1XSovCiB7CiAgICAgUHlPYmplY3QgKmJ5dGVzZXAsICpyZXN1bHQ7CiAKQEAgLTIyMzgsNyArMTQwNyw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKICAgICBzZXA6IG9iamVjdAogICAgIC8KIApAQCAtMjI1NCw3ICsxNDIyLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9ycGFydGl0aW9uKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9OWI4Y2Q1NDBjMWI3NTg1M10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTQ0MGRlM2M5NDI2MTE1ZTggaW5wdXQ9NWY0MDk0ZjJkZTg3YzhmM10qLwogewogICAgIFB5T2JqZWN0ICpieXRlc2VwLCAqcmVzdWx0OwogCkBAIC0yMzEyLDE0ICsxNDgwLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkucmV2ZXJzZQogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVBcnJheU9iamVjdCAqIikKLQogUmV2ZXJzZSB0aGUgb3JkZXIgb2YgdGhlIHZhbHVlcyBpbiBCIGluIHBsYWNlLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JldmVyc2VfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Zjc2MTZmMjlhYjMwOWQzIGlucHV0PTc5MzNhNDk5Yjg1OTdiZDFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05Zjc2MTZmMjlhYjMwOWQzIGlucHV0PTU0MzM1NjMxOWZjNzg1NTddKi8KIHsKICAgICBjaGFyIHN3YXAsICpoZWFkLCAqdGFpbDsKICAgICBQeV9zc2l6ZV90IGksIGosIG4gPSBQeV9TSVpFKHNlbGYpOwpAQCAtMjM0OCw3ICsxNTE0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5pbnNlcnQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaW5kZXg6IFB5X3NzaXplX3QKICAgICAgICAgVGhlIGluZGV4IHdoZXJlIHRoZSB2YWx1ZSBpcyB0byBiZSBpbnNlcnRlZC4KICAgICBpdGVtOiBieXRlc3ZhbHVlCkBAIC0yMzYwLDcgKzE1MjUsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X2luc2VydF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4LCBpbnQgaXRlbSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmM3NzVhNzBlN2IwN2I3IGlucHV0PTgzMzc2NjgzNmJhMzBlMWVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03NmM3NzVhNzBlN2IwN2I3IGlucHV0PWIyYjVkMDdlOWRlNmMwNzBdKi8KIHsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZjsKQEAgLTIzOTAsNyArMTU1NSw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuYXBwZW5kCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIGl0ZW06IGJ5dGVzdmFsdWUKICAgICAgICAgVGhlIGl0ZW0gdG8gYmUgYXBwZW5kZWQuCiAgICAgLwpAQCAtMjQwMCw3ICsxNTY0LDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9hcHBlbmRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgaW50IGl0ZW0pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD1hZTU2ZWE4NzM4MDQwN2NjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YTE1NGUxOWVkMTg4NmNiNiBpbnB1dD0yMGQ2YmVjM2QxMzQwNTkzXSovCiB7CiAgICAgUHlfc3NpemVfdCBuID0gUHlfU0laRShzZWxmKTsKIApAQCAtMjQyMCw3ICsxNTg0LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5leHRlbmQKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaXRlcmFibGVfb2ZfaW50czogb2JqZWN0CiAgICAgICAgIFRoZSBpdGVyYWJsZSBvZiBpdGVtcyB0byBhcHBlbmQuCiAgICAgLwpAQCAtMjQzMCw3ICsxNTkzLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9leHRlbmQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9pbnRzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MTU1ZGJlMjQ5MTcwYjEgaW5wdXQ9Y2U4M2E1ZDc1YjcwZDg1MF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk4MTU1ZGJlMjQ5MTcwYjEgaW5wdXQ9YzYxN2IzYTkzMjQ5YmEyOF0qLwogewogICAgIFB5T2JqZWN0ICppdCwgKml0ZW0sICpieXRlYXJyYXlfb2JqOwogICAgIFB5X3NzaXplX3QgYnVmX3NpemUgPSAwLCBsZW4gPSAwOwpAQCAtMjUxNSw3ICsxNjc4LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5wb3AKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgaW5kZXg6IFB5X3NzaXplX3QgPSAtMQogICAgICAgICBUaGUgaW5kZXggZnJvbSB3aGVyZSB0byByZW1vdmUgdGhlIGl0ZW0uCiAgICAgICAgIC0xICh0aGUgZGVmYXVsdCB2YWx1ZSkgbWVhbnMgcmVtb3ZlIHRoZSBsYXN0IGl0ZW0uCkBAIC0yNTI4LDcgKzE2OTAsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3BvcF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGluZGV4KQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwY2NkNDAxZjgwMjFkYTggaW5wdXQ9MDc5N2U2YzBjYTlkNWE4NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWUwY2NkNDAxZjgwMjFkYTggaW5wdXQ9MzU5MWRmMmQwNmMwZDIzN10qLwogewogICAgIGludCB2YWx1ZTsKICAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOwpAQCAtMjU2MCw3ICsxNzIyLDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5yZW1vdmUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCiAgICAgdmFsdWU6IGJ5dGVzdmFsdWUKICAgICAgICAgVGhlIHZhbHVlIHRvIHJlbW92ZS4KICAgICAvCkBAIC0yNTcwLDIwICsxNzMxLDIwIEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCB2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjU5ZTM3ODY2NzA5YzEzIGlucHV0PTQ3NTYwYjExZmQ4NTZjMjRdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1kNjU5ZTM3ODY2NzA5YzEzIGlucHV0PTEyMTgzMTI0MGNkNTFkZGZdKi8KIHsKLSAgICBQeV9zc2l6ZV90IG4gPSBQeV9TSVpFKHNlbGYpOworICAgIFB5X3NzaXplX3Qgd2hlcmUsIG4gPSBQeV9TSVpFKHNlbGYpOwogICAgIGNoYXIgKmJ1ZiA9IFB5Qnl0ZUFycmF5X0FTX1NUUklORyhzZWxmKTsKLSAgICBjaGFyICp3aGVyZSA9IG1lbWNocihidWYsIHZhbHVlLCBuKTsKIAotICAgIGlmICghd2hlcmUpIHsKKyAgICB3aGVyZSA9IHN0cmluZ2xpYl9maW5kX2NoYXIoYnVmLCBuLCB2YWx1ZSk7CisgICAgaWYgKHdoZXJlIDwgMCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgInZhbHVlIG5vdCBmb3VuZCBpbiBieXRlYXJyYXkiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmICghX2NhbnJlc2l6ZShzZWxmKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBtZW1tb3ZlKHdoZXJlLCB3aGVyZSArIDEsIGJ1ZiArIG4gLSB3aGVyZSk7CisgICAgbWVtbW92ZShidWYgKyB3aGVyZSwgYnVmICsgd2hlcmUgKyAxLCBuIC0gd2hlcmUpOwogICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUoKFB5T2JqZWN0ICopc2VsZiwgbiAtIDEpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTI1OTMsOCArMTc1NCw4IEBACiAvKiBYWFggVGhlc2UgdHdvIGhlbHBlcnMgY291bGQgYmUgb3B0aW1pemVkIGlmIGFyZ3NpemUgPT0gMSAqLwogCiBzdGF0aWMgUHlfc3NpemVfdAotbHN0cmlwX2hlbHBlcihjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCi0gICAgICAgICAgICAgIHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQorbHN0cmlwX2hlbHBlcihjb25zdCBjaGFyICpteXB0ciwgUHlfc3NpemVfdCBteXNpemUsCisgICAgICAgICAgICAgIGNvbnN0IHZvaWQgKmFyZ3B0ciwgUHlfc3NpemVfdCBhcmdzaXplKQogewogICAgIFB5X3NzaXplX3QgaSA9IDA7CiAgICAgd2hpbGUgKGkgPCBteXNpemUgJiYgbWVtY2hyKGFyZ3B0ciwgKHVuc2lnbmVkIGNoYXIpIG15cHRyW2ldLCBhcmdzaXplKSkKQEAgLTI2MDMsOCArMTc2NCw4IEBACiB9CiAKIHN0YXRpYyBQeV9zc2l6ZV90Ci1yc3RyaXBfaGVscGVyKGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKLSAgICAgICAgICAgICAgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCityc3RyaXBfaGVscGVyKGNvbnN0IGNoYXIgKm15cHRyLCBQeV9zc2l6ZV90IG15c2l6ZSwKKyAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqYXJncHRyLCBQeV9zc2l6ZV90IGFyZ3NpemUpCiB7CiAgICAgUHlfc3NpemVfdCBpID0gbXlzaXplIC0gMTsKICAgICB3aGlsZSAoaSA+PSAwICYmIG1lbWNocihhcmdwdHIsICh1bnNpZ25lZCBjaGFyKSBteXB0cltpXSwgYXJnc2l6ZSkpCkBAIC0yODA1LDI3ICsxOTY2LDEwIEBACiAgICAgICAgICk7CiB9CiAKLXN0YXRpYyBpbnQKLWhleF9kaWdpdF90b19pbnQoUHlfVUNTNCBjKQotewotICAgIGlmIChjID49IDEyOCkKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICByZXR1cm4gYyAtICcwJzsKLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5X0lTVVBQRVIoYykpCi0gICAgICAgICAgICBjID0gUHlfVE9MT1dFUihjKTsKLSAgICAgICAgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgcmV0dXJuIGMgLSAnYScgKyAxMDsKLSAgICB9Ci0gICAgcmV0dXJuIC0xOwotfQotCiAvKltjbGluaWMgaW5wdXRdCiBAY2xhc3NtZXRob2QKIGJ5dGVhcnJheS5mcm9taGV4CiAKLSAgICBjbHM6IHNlbGYodHlwZT0iUHlPYmplY3QqIikKICAgICBzdHJpbmc6IHVuaWNvZGUKICAgICAvCiAKQEAgLTI4MzYsNTEgKzE5ODAsMTUgQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9mcm9taGV4X2ltcGwoUHlPYmplY3QqY2xzLCBQeU9iamVjdCAqc3RyaW5nKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRmM2RhNjAxMjliMzcwMGMgaW5wdXQ9OTA3YmJkMmQzNGQ5MzY3YV0qLworYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzdHJpbmcpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OGYwZjBiNmQzMGZiM2JhMCBpbnB1dD1mMDMzYTE2ZDFmYjIxZjQ4XSovCiB7Ci0gICAgUHlPYmplY3QgKm5ld2J5dGVzOwotICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7Ci0gICAgaW50IHRvcCwgYm90OwotICAgIHZvaWQgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQ7Ci0KLSAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHN0cmluZykpOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHN0cmluZyk7Ci0gICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7Ci0gICAgaGV4bGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyaW5nKTsKLQotICAgIGJ5dGVzbGVuID0gaGV4bGVuLzI7IC8qIFRoaXMgb3ZlcmVzdGltYXRlcyBpZiB0aGVyZSBhcmUgc3BhY2VzICovCi0gICAgbmV3Ynl0ZXMgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBieXRlc2xlbik7Ci0gICAgaWYgKCFuZXdieXRlcykKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKG5ld2J5dGVzKTsKLSAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7Ci0gICAgICAgIC8qIHNraXAgb3ZlciBzcGFjZXMgaW4gdGhlIGlucHV0ICovCi0gICAgICAgIHdoaWxlIChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSA9PSAnICcpCi0gICAgICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID49IGhleGxlbikKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB0b3AgPSBoZXhfZGlnaXRfdG9faW50KFB5VW5pY29kZV9SRUFEKGtpbmQsIGRhdGEsIGkpKTsKLSAgICAgICAgYm90ID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKzEpKTsKLSAgICAgICAgaWYgKHRvcCA9PSAtMSB8fCBib3QgPT0gLTEpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiZnJvbWhleCgpIGFyZyBhdCBwb3NpdGlvbiAlemQiLCBpKTsKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmW2orK10gPSAodG9wIDw8IDQpICsgYm90OworICAgIFB5T2JqZWN0ICpyZXN1bHQgPSBfUHlCeXRlc19Gcm9tSGV4KHN0cmluZywgdHlwZSA9PSAmUHlCeXRlQXJyYXlfVHlwZSk7CisgICAgaWYgKHR5cGUgIT0gJlB5Qnl0ZUFycmF5X1R5cGUgJiYgcmVzdWx0ICE9IE5VTEwpIHsKKyAgICAgICAgUHlfU0VUUkVGKHJlc3VsdCwgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncygoUHlPYmplY3QgKil0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCwgTlVMTCkpOwogICAgIH0KLSAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKG5ld2J5dGVzLCBqKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0dXJuIG5ld2J5dGVzOwotCi0gIGVycm9yOgotICAgIFB5X0RFQ1JFRihuZXdieXRlcyk7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogUHlEb2NfU1RSVkFSKGhleF9fZG9jX18sCkBAIC0yOTM1LDE0ICsyMDQzLDEyIEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19yZWR1Y2VfXyBhcyBieXRlYXJyYXlfcmVkdWNlCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQotCiBSZXR1cm4gc3RhdGUgaW5mb3JtYXRpb24gZm9yIHBpY2tsaW5nLgogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlZHVjZV9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYmYzMDQwODY0NjRjYWIgaW5wdXQ9ZmJiMDdkZTRkMTAyYTAzYV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTUyYmYzMDQwODY0NjRjYWIgaW5wdXQ9NDRiNTczN2FkYTYyZGQzZl0qLwogewogICAgIHJldHVybiBfY29tbW9uX3JlZHVjZShzZWxmLCAyKTsKIH0KQEAgLTI5NTAsNyArMjA1Niw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlYXJyYXkuX19yZWR1Y2VfZXhfXyBhcyBieXRlYXJyYXlfcmVkdWNlX2V4CiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZUFycmF5T2JqZWN0ICoiKQogICAgIHByb3RvOiBpbnQgPSAwCiAgICAgLwogCkBAIC0yOTU5LDcgKzIwNjQsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3JlZHVjZV9leF9pbXBsKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBpbnQgcHJvdG8pCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJlYWMzMzM3NzE5NzUyMCBpbnB1dD0wZTA5MWE0MmNhNmRiZDkxXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTJlYWMzMzM3NzE5NzUyMCBpbnB1dD1mMTI5YmMxYTFhYTE1MWVlXSovCiB7CiAgICAgcmV0dXJuIF9jb21tb25fcmVkdWNlKHNlbGYsIHByb3RvKTsKIH0KQEAgLTI5NjcsMTQgKzIwNzIsMTIgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVhcnJheS5fX3NpemVvZl9fIGFzIGJ5dGVhcnJheV9zaXplb2YKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlQXJyYXlPYmplY3QgKiIpCi0KIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ5dGVhcnJheSBvYmplY3QgaW4gbWVtb3J5LCBpbiBieXRlcy4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zaXplb2ZfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZikKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzhhYmRkMTc5NTFjNDI3IGlucHV0PTZiMjNkMzA1MzYyYjQ2MmJdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD03MzhhYmRkMTc5NTFjNDI3IGlucHV0PWUyNzMyMGZkOThhNGJjNWFdKi8KIHsKICAgICBQeV9zc2l6ZV90IHJlczsKIApAQCAtMzAxNSwxOSArMjExOCwyMiBAQAogICAgIEJZVEVBUlJBWV9BUFBFTkRfTUVUSE9EREVGCiAgICAgeyJjYXBpdGFsaXplIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jYXBpdGFsaXplLCBNRVRIX05PQVJHUywKICAgICAgX1B5X2NhcGl0YWxpemVfX2RvY19ffSwKLSAgICB7ImNlbnRlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2VudGVyLCBNRVRIX1ZBUkFSR1MsIGNlbnRlcl9fZG9jX199LAorICAgIHsiY2VudGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9jZW50ZXIsIE1FVEhfVkFSQVJHUywgX1B5X2NlbnRlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9DTEVBUl9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfQ09QWV9NRVRIT0RERUYKLSAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9jb3VudCwgTUVUSF9WQVJBUkdTLCBjb3VudF9fZG9jX199LAorICAgIHsiY291bnQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2NvdW50LCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9jb3VudF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9ERUNPREVfTUVUSE9EREVGCi0gICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZW5kc3dpdGgsIE1FVEhfVkFSQVJHUywgZW5kc3dpdGhfX2RvY19ffSwKKyAgICB7ImVuZHN3aXRoIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKKyAgICAgX1B5X2V4cGFuZHRhYnNfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfRVhURU5EX01FVEhPRERFRgotICAgIHsiZmluZCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9maW5kLCBNRVRIX1ZBUkFSR1MsCisgICAgIF9QeV9maW5kX19kb2NfX30sCiAgICAgQllURUFSUkFZX0ZST01IRVhfTUVUSE9EREVGCiAgICAgeyJoZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAotICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2luZGV4LCBNRVRIX1ZBUkFSR1MsIGluZGV4X19kb2NfX30sCisgICAgeyJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfaW5kZXgsIE1FVEhfVkFSQVJHUywgX1B5X2luZGV4X19kb2NfX30sCiAgICAgQllURUFSUkFZX0lOU0VSVF9NRVRIT0RERUYKICAgICB7ImlzYWxudW0iLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzYWxudW0sIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXNhbG51bV9fZG9jX199LApAQCAtMzA0NCw3ICsyMTUwLDcgQEAKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAogICAgIEJZVEVBUlJBWV9KT0lOX01FVEhPRERFRgotICAgIHsibGp1c3QiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2xqdXN0LCBNRVRIX1ZBUkFSR1MsIGxqdXN0X19kb2NfX30sCisgICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgX1B5X2xqdXN0X19kb2NfX30sCiAgICAgeyJsb3dlciIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbG93ZXIsIE1FVEhfTk9BUkdTLCBfUHlfbG93ZXJfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfTFNUUklQX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9NQUtFVFJBTlNfTUVUSE9EREVGCkBAIC0zMDUzLDIzICsyMTU5LDIzIEBACiAgICAgQllURUFSUkFZX1JFTU9WRV9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUkVQTEFDRV9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUkVWRVJTRV9NRVRIT0RERUYKLSAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAotICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yaW5kZXgsIE1FVEhfVkFSQVJHUywgcmluZGV4X19kb2NfX30sCi0gICAgeyJyanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfcmp1c3QsIE1FVEhfVkFSQVJHUywgcmp1c3RfX2RvY19ffSwKKyAgICB7InJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yZmluZCwgTUVUSF9WQVJBUkdTLCBfUHlfcmZpbmRfX2RvY19ffSwKKyAgICB7InJpbmRleCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9yaW5kZXhfX2RvY19ffSwKKyAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfcmp1c3RfX2RvY19ffSwKICAgICBCWVRFQVJSQVlfUlBBUlRJVElPTl9NRVRIT0RERUYKICAgICBCWVRFQVJSQVlfUlNQTElUX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9SU1RSSVBfTUVUSE9EREVGCiAgICAgQllURUFSUkFZX1NQTElUX01FVEhPRERFRgogICAgIEJZVEVBUlJBWV9TUExJVExJTkVTX01FVEhPRERFRgogICAgIHsic3RhcnRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTICwKLSAgICAgc3RhcnRzd2l0aF9fZG9jX199LAorICAgICBfUHlfc3RhcnRzd2l0aF9fZG9jX199LAogICAgIEJZVEVBUlJBWV9TVFJJUF9NRVRIT0RERUYKICAgICB7InN3YXBjYXNlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9zd2FwY2FzZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9zd2FwY2FzZV9fZG9jX199LAogICAgIHsidGl0bGUiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3RpdGxlLCBNRVRIX05PQVJHUywgX1B5X3RpdGxlX19kb2NfX30sCiAgICAgQllURUFSUkFZX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAotICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCisgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgX1B5X3pmaWxsX19kb2NfX30sCiAgICAge05VTEx9CiB9OwogCkBAIC0zMDc4LDcgKzIxODQsNyBAQAogewogICAgIGlmICghUHlCeXRlQXJyYXlfQ2hlY2sodikpCiAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKLSAgICByZXR1cm4gYnl0ZWFycmF5X2Zvcm1hdCgoUHlCeXRlQXJyYXlPYmplY3QgKil2LCB3KTsKKyAgICByZXR1cm4gX1B5Qnl0ZXNfRm9ybWF0RXgoUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHYpLCBQeUJ5dGVBcnJheV9HRVRfU0laRSh2KSwgdywgMSk7CiB9CiAKIHN0YXRpYyBQeU51bWJlck1ldGhvZHMgYnl0ZWFycmF5X2FzX251bWJlciA9IHsKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNfbWV0aG9kcy5jIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKaW5kZXggYTI5OTkxNS4uZDVjNGZlNiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKKysrIGIvT2JqZWN0cy9ieXRlc19tZXRob2RzLmMKQEAgLTEsMyArMSw0IEBACisjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJieXRlc19tZXRob2RzLmgiCiAKQEAgLTI3Nyw3ICsyNzgsNyBAQAogY2hhcmFjdGVycywgYWxsIHJlbWFpbmluZyBjYXNlZCBjaGFyYWN0ZXJzIGhhdmUgbG93ZXJjYXNlLiIpOwogCiB2b2lkCi1fUHlfYnl0ZXNfdGl0bGUoY2hhciAqcmVzdWx0LCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbikKK19QeV9ieXRlc190aXRsZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKICAgICBpbnQgcHJldmlvdXNfaXNfY2FzZWQgPSAwOwpAQCAtMzA2LDcgKzMwNyw3IEBACiBhbmQgdGhlIHJlc3QgbG93ZXItY2FzZWQuIik7CiAKIHZvaWQKLV9QeV9ieXRlc19jYXBpdGFsaXplKGNoYXIgKnJlc3VsdCwgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCitfUHlfYnl0ZXNfY2FwaXRhbGl6ZShjaGFyICpyZXN1bHQsIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQogewogICAgIFB5X3NzaXplX3QgaTsKIApAQCAtMzM2LDcgKzMzNyw3IEBACiB0byBsb3dlcmNhc2UgQVNDSUkgYW5kIHZpY2UgdmVyc2EuIik7CiAKIHZvaWQKLV9QeV9ieXRlc19zd2FwY2FzZShjaGFyICpyZXN1bHQsIGNoYXIgKnMsIFB5X3NzaXplX3QgbGVuKQorX1B5X2J5dGVzX3N3YXBjYXNlKGNoYXIgKnJlc3VsdCwgY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBsZW4pCiB7CiAgICAgUHlfc3NpemVfdCBpOwogCkBAIC0zODcsMyArMzg4LDQyNyBAQAogCiAgICAgcmV0dXJuIHJlczsKIH0KKworI2RlZmluZSBGQVNUU0VBUkNIIGZhc3RzZWFyY2gKKyNkZWZpbmUgU1RSSU5HTElCKEYpIHN0cmluZ2xpYl8jI0YKKyNkZWZpbmUgU1RSSU5HTElCX0NIQVIgY2hhcgorI2RlZmluZSBTVFJJTkdMSUJfU0laRU9GX0NIQVIgMQorCisjaW5jbHVkZSAic3RyaW5nbGliL2Zhc3RzZWFyY2guaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvY291bnQuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZmluZC5oIgorCisvKgorV3JhcHMgc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoKSBhbmQgYWRkaXRpb25hbGx5IGNoZWNrcyB3aGV0aGVyIHRoZQorZmlyc3QgYXJndW1lbnQgaXMgYW4gaW50ZWdlciBpbiByYW5nZSgwLCAyNTYpLgorCitJZiB0aGlzIGlzIHRoZSBjYXNlLCB3cml0ZXMgdGhlIGludGVnZXIgdmFsdWUgdG8gdGhlIGJ5dGUgcGFyYW1ldGVyCithbmQgc2V0cyBzdWJvYmogdG8gTlVMTC4gT3RoZXJ3aXNlLCBzZXRzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBzdWJvYmoKK2FuZCBkb2Vzbid0IHRvdWNoIGJ5dGUuIFRoZSBvdGhlciBwYXJhbWV0ZXJzIGFyZSBzaW1pbGFyIHRvIHRob3NlIG9mCitzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygpLgorKi8KKworUHlfTE9DQUxfSU5MSU5FKGludCkKK3BhcnNlX2FyZ3NfZmluZHNfYnl0ZShjb25zdCBjaGFyICpmdW5jdGlvbl9uYW1lLCBQeU9iamVjdCAqYXJncywKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKnN1Ym9iaiwgY2hhciAqYnl0ZSwKKyAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpzdGFydCwgUHlfc3NpemVfdCAqZW5kKQoreworICAgIFB5T2JqZWN0ICp0bXBfc3Vib2JqOworICAgIFB5X3NzaXplX3QgaXZhbDsKKyAgICBQeU9iamVjdCAqZXJyOworCisgICAgaWYoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKGZ1bmN0aW9uX25hbWUsIGFyZ3MsICZ0bXBfc3Vib2JqLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kKSkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICBpZiAoIVB5TnVtYmVyX0NoZWNrKHRtcF9zdWJvYmopKSB7CisgICAgICAgICpzdWJvYmogPSB0bXBfc3Vib2JqOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisKKyAgICBpdmFsID0gUHlOdW1iZXJfQXNTc2l6ZV90KHRtcF9zdWJvYmosIFB5RXhjX092ZXJmbG93RXJyb3IpOworICAgIGlmIChpdmFsID09IC0xKSB7CisgICAgICAgIGVyciA9IFB5RXJyX09jY3VycmVkKCk7CisgICAgICAgIGlmIChlcnIgJiYgIVB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcyhlcnIsIFB5RXhjX092ZXJmbG93RXJyb3IpKSB7CisgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgKnN1Ym9iaiA9IHRtcF9zdWJvYmo7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGlmIChpdmFsIDwgMCB8fCBpdmFsID4gMjU1KSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYnl0ZSBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKnN1Ym9iaiA9IE5VTEw7CisgICAgKmJ5dGUgPSAoY2hhcilpdmFsOworICAgIHJldHVybiAxOworfQorCisvKiBoZWxwZXIgbWFjcm8gdG8gZml4dXAgc3RhcnQvZW5kIHNsaWNlIHZhbHVlcyAqLworI2RlZmluZSBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pICAgICAgICAgXAorICAgIGlmIChlbmQgPiBsZW4pICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVuZCA9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlbHNlIGlmIChlbmQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBlbmQgKz0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChlbmQgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZW5kID0gMDsgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBpZiAoc3RhcnQgPCAwKSB7ICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdGFydCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChzdGFydCA8IDApICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgc3RhcnQgPSAwOyAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK2ZpbmRfaW50ZXJuYWwoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwKKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsIGludCBkaXIpCit7CisgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBjaGFyIGJ5dGU7CisgICAgUHlfYnVmZmVyIHN1YmJ1ZjsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwLCBlbmQgPSBQWV9TU0laRV9UX01BWDsKKyAgICBQeV9zc2l6ZV90IHJlczsKKworICAgIGlmICghcGFyc2VfYXJnc19maW5kc19ieXRlKGZ1bmN0aW9uX25hbWUsIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN1Ym9iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiAtMjsKKworICAgIGlmIChzdWJvYmopIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJvYmosICZzdWJidWYsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMjsKKworICAgICAgICBzdWIgPSBzdWJidWYuYnVmOworICAgICAgICBzdWJfbGVuID0gc3ViYnVmLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworICAgIGlmIChlbmQgLSBzdGFydCA8IHN1Yl9sZW4pCisgICAgICAgIHJlcyA9IC0xOworICAgIGVsc2UgaWYgKHN1Yl9sZW4gPT0gMSkgeworICAgICAgICBpZiAoZGlyID4gMCkKKyAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9maW5kX2NoYXIoCisgICAgICAgICAgICAgICAgc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAorICAgICAgICAgICAgICAgICpzdWIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfcmZpbmRfY2hhcigKKyAgICAgICAgICAgICAgICBzdHIgKyBzdGFydCwgZW5kIC0gc3RhcnQsCisgICAgICAgICAgICAgICAgKnN1Yik7CisgICAgICAgIGlmIChyZXMgPj0gMCkKKyAgICAgICAgICAgIHJlcyArPSBzdGFydDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChkaXIgPiAwKQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX2ZpbmRfc2xpY2UoCisgICAgICAgICAgICAgICAgc3RyLCBsZW4sCisgICAgICAgICAgICAgICAgc3ViLCBzdWJfbGVuLCBzdGFydCwgZW5kKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzID0gc3RyaW5nbGliX3JmaW5kX3NsaWNlKAorICAgICAgICAgICAgICAgIHN0ciwgbGVuLAorICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7CisgICAgfQorCisgICAgaWYgKHN1Ym9iaikKKyAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKKworICAgIHJldHVybiByZXM7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2ZpbmRfX2RvY19fLAorIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzZWN0aW9uIHN1YiBpcyBmb3VuZCxcblwKK3N1Y2ggdGhhdCBzdWIgaXMgY29udGFpbmVkIHdpdGhpbiBCW3N0YXJ0LGVuZF0uICBPcHRpb25hbFxuXAorYXJndW1lbnRzIHN0YXJ0IGFuZCBlbmQgYXJlIGludGVycHJldGVkIGFzIGluIHNsaWNlIG5vdGF0aW9uLlxuXAorXG5cCitSZXR1cm4gLTEgb24gZmFpbHVyZS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX2ZpbmQoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAiZmluZCIsIGFyZ3MsICsxKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2luZGV4X19kb2NfXywKKyJCLmluZGV4KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitMaWtlIEIuZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfaW5kZXgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlfc3NpemVfdCByZXN1bHQgPSBmaW5kX2ludGVybmFsKHN0ciwgbGVuLCAiaW5kZXgiLCBhcmdzLCArMSk7CisgICAgaWYgKHJlc3VsdCA9PSAtMikKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJzdWJzZWN0aW9uIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yZmluZF9fZG9jX18sCisiQi5yZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKK1xuXAorUmV0dXJuIHRoZSBoaWdoZXN0IGluZGV4IGluIEIgd2hlcmUgc3Vic2VjdGlvbiBzdWIgaXMgZm91bmQsXG5cCitzdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydCxlbmRdLiAgT3B0aW9uYWxcblwKK2FyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKK1xuXAorUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19yZmluZChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGZpbmRfaW50ZXJuYWwoc3RyLCBsZW4sICJyZmluZCIsIGFyZ3MsIC0xKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X3JpbmRleF9fZG9jX18sCisiQi5yaW5kZXgoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCitcblwKK0xpa2UgQi5yZmluZCgpIGJ1dCByYWlzZSBWYWx1ZUVycm9yIHdoZW4gdGhlIHN1YnNlY3Rpb24gaXMgbm90IGZvdW5kLiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfcmluZGV4KGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sIFB5T2JqZWN0ICphcmdzKQoreworICAgIFB5X3NzaXplX3QgcmVzdWx0ID0gZmluZF9pbnRlcm5hbChzdHIsIGxlbiwgInJpbmRleCIsIGFyZ3MsIC0xKTsKKyAgICBpZiAocmVzdWx0ID09IC0yKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAocmVzdWx0ID09IC0xKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgInN1YnNlY3Rpb24gbm90IGZvdW5kIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICByZXR1cm4gUHlMb25nX0Zyb21Tc2l6ZV90KHJlc3VsdCk7Cit9CisKK1B5RG9jX1NUUlZBUl9zaGFyZWQoX1B5X2NvdW50X19kb2NfXywKKyJCLmNvdW50KHN1YlssIHN0YXJ0WywgZW5kXV0pIC0+IGludFxuXAorXG5cCitSZXR1cm4gdGhlIG51bWJlciBvZiBub24tb3ZlcmxhcHBpbmcgb2NjdXJyZW5jZXMgb2Ygc3Vic2VjdGlvbiBzdWIgaW5cblwKK2J5dGVzIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsIGFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZFxuXAorYXMgaW4gc2xpY2Ugbm90YXRpb24uIik7CisKK1B5T2JqZWN0ICoKK19QeV9ieXRlc19jb3VudChjb25zdCBjaGFyICpzdHIsIFB5X3NzaXplX3QgbGVuLCBQeU9iamVjdCAqYXJncykKK3sKKyAgICBQeU9iamVjdCAqc3ViX29iajsKKyAgICBjb25zdCBjaGFyICpzdWI7CisgICAgUHlfc3NpemVfdCBzdWJfbGVuOworICAgIGNoYXIgYnl0ZTsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisKKyAgICBQeV9idWZmZXIgdnN1YjsKKyAgICBQeU9iamVjdCAqY291bnRfb2JqOworCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX2J5dGUoImNvdW50IiwgYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3ViX29iaiwgJmJ5dGUsICZzdGFydCwgJmVuZCkpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgaWYgKHN1Yl9vYmopIHsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJfb2JqLCAmdnN1YiwgUHlCVUZfU0lNUExFKSAhPSAwKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAgICAgc3ViID0gdnN1Yi5idWY7CisgICAgICAgIHN1Yl9sZW4gPSB2c3ViLmxlbjsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHN1YiA9ICZieXRlOworICAgICAgICBzdWJfbGVuID0gMTsKKyAgICB9CisKKyAgICBBREpVU1RfSU5ESUNFUyhzdGFydCwgZW5kLCBsZW4pOworCisgICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAorICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQorICAgICAgICApOworCisgICAgaWYgKHN1Yl9vYmopCisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOworCisgICAgcmV0dXJuIGNvdW50X29iajsKK30KKworaW50CitfUHlfYnl0ZXNfY29udGFpbnMoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZykKK3sKKyAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBOVUxMKTsKKyAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgIFB5X2J1ZmZlciB2YXJnOworICAgICAgICBQeV9zc2l6ZV90IHBvczsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKHN0ciwgbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOworICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKKyAgICAgICAgcmV0dXJuIHBvcyA+PSAwOworICAgIH0KKyAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgcmV0dXJuIG1lbWNocihzdHIsIChpbnQpIGl2YWwsIGxlbikgIT0gTlVMTDsKK30KKworCisvKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2YgdGhlIGJ1ZmZlcgorICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucworICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgorICovCitzdGF0aWMgaW50Cit0YWlsbWF0Y2goY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKnN1YnN0ciwKKyAgICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKK3sKKyAgICBQeV9idWZmZXIgc3ViX3ZpZXcgPSB7TlVMTCwgTlVMTH07CisgICAgY29uc3QgY2hhciAqc3ViOworICAgIFB5X3NzaXplX3Qgc2xlbjsKKworICAgIGlmIChQeUJ5dGVzX0NoZWNrKHN1YnN0cikpIHsKKyAgICAgICAgc3ViID0gUHlCeXRlc19BU19TVFJJTkcoc3Vic3RyKTsKKyAgICAgICAgc2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc3Vic3RyKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoc3Vic3RyLCAmc3ViX3ZpZXcsIFB5QlVGX1NJTVBMRSkgIT0gMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgc3ViID0gc3ViX3ZpZXcuYnVmOworICAgICAgICBzbGVuID0gc3ViX3ZpZXcubGVuOworICAgIH0KKworICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbik7CisKKyAgICBpZiAoZGlyZWN0aW9uIDwgMCkgeworICAgICAgICAvKiBzdGFydHN3aXRoICovCisgICAgICAgIGlmIChzdGFydCArIHNsZW4gPiBsZW4pCisgICAgICAgICAgICBnb3RvIG5vdGZvdW5kOworICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGVuZHN3aXRoICovCisgICAgICAgIGlmIChlbmQgLSBzdGFydCA8IHNsZW4gfHwgc3RhcnQgPiBsZW4pCisgICAgICAgICAgICBnb3RvIG5vdGZvdW5kOworCisgICAgICAgIGlmIChlbmQgLSBzbGVuID4gc3RhcnQpCisgICAgICAgICAgICBzdGFydCA9IGVuZCAtIHNsZW47CisgICAgfQorICAgIGlmIChlbmQgLSBzdGFydCA8IHNsZW4pCisgICAgICAgIGdvdG8gbm90Zm91bmQ7CisgICAgaWYgKG1lbWNtcChzdHIgKyBzdGFydCwgc3ViLCBzbGVuKSAhPSAwKQorICAgICAgICBnb3RvIG5vdGZvdW5kOworCisgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOworICAgIHJldHVybiAxOworCitub3Rmb3VuZDoKKyAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZzdWJfdmlldyk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBQeU9iamVjdCAqCitfUHlfYnl0ZXNfdGFpbG1hdGNoKGNvbnN0IGNoYXIgKnN0ciwgUHlfc3NpemVfdCBsZW4sCisgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZ1bmN0aW9uX25hbWUsIFB5T2JqZWN0ICphcmdzLAorICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQoreworICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOworICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7CisgICAgUHlPYmplY3QgKnN1Ym9iajsKKyAgICBpbnQgcmVzdWx0OworCisgICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7CisgICAgICAgICAgICByZXN1bHQgPSB0YWlsbWF0Y2goc3RyLCBsZW4sIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGVsc2UgaWYgKHJlc3VsdCkgeworICAgICAgICAgICAgICAgIFB5X1JFVFVSTl9UUlVFOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICB9CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgbGVuLCBzdWJvYmosIHN0YXJ0LCBlbmQsIGRpcmVjdGlvbik7CisgICAgaWYgKHJlc3VsdCA9PSAtMSkgeworICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQorICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJXMgZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgb3IgYSB0dXBsZSBvZiBieXRlcywgIgorICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmN0aW9uX25hbWUsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBlbHNlCisgICAgICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfc3RhcnRzd2l0aF9fZG9jX18sCisiQi5zdGFydHN3aXRoKHByZWZpeFssIHN0YXJ0WywgZW5kXV0pIC0+IGJvb2xcblwKK1xuXAorUmV0dXJuIFRydWUgaWYgQiBzdGFydHMgd2l0aCB0aGUgc3BlY2lmaWVkIHByZWZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAorV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAorV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKK3ByZWZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKKworUHlPYmplY3QgKgorX1B5X2J5dGVzX3N0YXJ0c3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc190YWlsbWF0Y2goc3RyLCBsZW4sICJzdGFydHN3aXRoIiwgYXJncywgLTEpOworfQorCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9lbmRzd2l0aF9fZG9jX18sCisiQi5lbmRzd2l0aChzdWZmaXhbLCBzdGFydFssIGVuZF1dKSAtPiBib29sXG5cCitcblwKK1JldHVybiBUcnVlIGlmIEIgZW5kcyB3aXRoIHRoZSBzcGVjaWZpZWQgc3VmZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCitXaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCitXaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAorc3VmZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOworCitQeU9iamVjdCAqCitfUHlfYnl0ZXNfZW5kc3dpdGgoY29uc3QgY2hhciAqc3RyLCBQeV9zc2l6ZV90IGxlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgcmV0dXJuIF9QeV9ieXRlc190YWlsbWF0Y2goc3RyLCBsZW4sICJlbmRzd2l0aCIsIGFyZ3MsICsxKTsKK30KKworUHlEb2NfU1RSVkFSX3NoYXJlZChfUHlfZXhwYW5kdGFic19fZG9jX18sCisiQi5leHBhbmR0YWJzKHRhYnNpemU9OCkgLT4gY29weSBvZiBCXG5cCitcblwKK1JldHVybiBhIGNvcHkgb2YgQiB3aGVyZSBhbGwgdGFiIGNoYXJhY3RlcnMgYXJlIGV4cGFuZGVkIHVzaW5nIHNwYWNlcy5cblwKK0lmIHRhYnNpemUgaXMgbm90IGdpdmVuLCBhIHRhYiBzaXplIG9mIDggY2hhcmFjdGVycyBpcyBhc3N1bWVkLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9sanVzdF9fZG9jX18sCisiQi5sanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgbGVmdCBqdXN0aWZpZWQgaW4gYSBzdHJpbmcgb2YgbGVuZ3RoIHdpZHRoLiBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9yanVzdF9fZG9jX18sCisiQi5yanVzdCh3aWR0aFssIGZpbGxjaGFyXSkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUmV0dXJuIEIgcmlnaHQganVzdGlmaWVkIGluIGEgc3RyaW5nIG9mIGxlbmd0aCB3aWR0aC4gUGFkZGluZyBpc1xuIgorImRvbmUgdXNpbmcgdGhlIHNwZWNpZmllZCBmaWxsIGNoYXJhY3RlciAoZGVmYXVsdCBpcyBhIHNwYWNlKSIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV9jZW50ZXJfX2RvY19fLAorIkIuY2VudGVyKHdpZHRoWywgZmlsbGNoYXJdKSAtPiBjb3B5IG9mIEJcbiIKKyJcbiIKKyJSZXR1cm4gQiBjZW50ZXJlZCBpbiBhIHN0cmluZyBvZiBsZW5ndGggd2lkdGguICBQYWRkaW5nIGlzXG4iCisiZG9uZSB1c2luZyB0aGUgc3BlY2lmaWVkIGZpbGwgY2hhcmFjdGVyIChkZWZhdWx0IGlzIGEgc3BhY2UpLiIpOworCitQeURvY19TVFJWQVJfc2hhcmVkKF9QeV96ZmlsbF9fZG9jX18sCisiQi56ZmlsbCh3aWR0aCkgLT4gY29weSBvZiBCXG4iCisiXG4iCisiUGFkIGEgbnVtZXJpYyBzdHJpbmcgQiB3aXRoIHplcm9zIG9uIHRoZSBsZWZ0LCB0byBmaWxsIGEgZmllbGRcbiIKKyJvZiB0aGUgc3BlY2lmaWVkIHdpZHRoLiAgQiBpcyBuZXZlciB0cnVuY2F0ZWQuIik7CisKZGlmZiAtLWdpdCBhL09iamVjdHMvYnl0ZXNvYmplY3QuYyBiL09iamVjdHMvYnl0ZXNvYmplY3QuYwppbmRleCAzOTM0MzI4Li41OThmNmExIDEwMDY0NAotLS0gYS9PYmplY3RzL2J5dGVzb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9ieXRlc29iamVjdC5jCkBAIC05LDkgKzksOSBAQAogI2luY2x1ZGUgPHN0ZGRlZi5oPgogCiAvKltjbGluaWMgaW5wdXRdCi1jbGFzcyBieXRlcyAiUHlCeXRlc09iamVjdCoiICImUHlCeXRlc19UeXBlIgorY2xhc3MgYnl0ZXMgIlB5Qnl0ZXNPYmplY3QgKiIgIiZQeUJ5dGVzX1R5cGUiCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD0xYTFkOTEwMmFmYzFiMDBjXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZGEzOWEzZWU1ZTZiNGIwZCBpbnB1dD03YTIzOGY5NjVkNjQ4OTJiXSovCiAKICNpbmNsdWRlICJjbGluaWMvYnl0ZXNvYmplY3QuYy5oIgogCkBAIC0zMCw2ICszMCwxMCBAQAogKi8KICNkZWZpbmUgUHlCeXRlc09iamVjdF9TSVpFIChvZmZzZXRvZihQeUJ5dGVzT2JqZWN0LCBvYl9zdmFsKSArIDEpCiAKKy8qIEZvcndhcmQgZGVjbGFyYXRpb24gKi8KK1B5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyICpzdHIpOworCiAvKgogICAgRm9yIFB5Qnl0ZXNfRnJvbVN0cmluZygpLCB0aGUgcGFyYW1ldGVyIGBzdHInIHBvaW50cyB0byBhIG51bGwtdGVybWluYXRlZAogICAgc3RyaW5nIGNvbnRhaW5pbmcgZXhhY3RseSBgc2l6ZScgYnl0ZXMuCkBAIC0xMTYsNyArMTIwLDcgQEAKICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CiAKLSAgICBQeV9NRU1DUFkob3AtPm9iX3N2YWwsIHN0ciwgc2l6ZSk7CisgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBzdHIsIHNpemUpOwogICAgIC8qIHNoYXJlIHNob3J0IHN0cmluZ3MgKi8KICAgICBpZiAoc2l6ZSA9PSAxKSB7CiAgICAgICAgIGNoYXJhY3RlcnNbKnN0ciAmIFVDSEFSX01BWF0gPSBvcDsKQEAgLTE1OSw3ICsxNjMsNyBAQAogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKICAgICAodm9pZClQeU9iamVjdF9JTklUX1ZBUihvcCwgJlB5Qnl0ZXNfVHlwZSwgc2l6ZSk7CiAgICAgb3AtPm9iX3NoYXNoID0gLTE7Ci0gICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsLCBzdHIsIHNpemUrMSk7CisgICAgbWVtY3B5KG9wLT5vYl9zdmFsLCBzdHIsIHNpemUrMSk7CiAgICAgLyogc2hhcmUgc2hvcnQgc3RyaW5ncyAqLwogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgbnVsbHN0cmluZyA9IG9wOwpAQCAtMTc0LDE5MCArMTc4LDE4NCBAQAogUHlPYmplY3QgKgogUHlCeXRlc19Gcm9tRm9ybWF0Vihjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgdmFyZ3MpCiB7Ci0gICAgdmFfbGlzdCBjb3VudDsKLSAgICBQeV9zc2l6ZV90IG4gPSAwOwotICAgIGNvbnN0IGNoYXIqIGY7CiAgICAgY2hhciAqczsKLSAgICBQeU9iamVjdCogc3RyaW5nOworICAgIGNvbnN0IGNoYXIgKmY7CisgICAgY29uc3QgY2hhciAqcDsKKyAgICBQeV9zc2l6ZV90IHByZWM7CisgICAgaW50IGxvbmdmbGFnOworICAgIGludCBzaXplX3RmbGFnOworICAgIC8qIExvbmdlc3QgNjQtYml0IGZvcm1hdHRlZCBudW1iZXJzOgorICAgICAgIC0gIjE4NDQ2NzQ0MDczNzA5NTUxNjE1XDAiICgyMSBieXRlcykKKyAgICAgICAtICItOTIyMzM3MjAzNjg1NDc3NTgwOFwwIiAoMjEgYnl0ZXMpCisgICAgICAgRGVjaW1hbCB0YWtlcyB0aGUgbW9zdCBzcGFjZSAoaXQgaXNuJ3QgZW5vdWdoIGZvciBvY3RhbC4pCiAKLSAgICBQeV9WQV9DT1BZKGNvdW50LCB2YXJncyk7Ci0gICAgLyogc3RlcCAxOiBmaWd1cmUgb3V0IGhvdyBsYXJnZSBhIGJ1ZmZlciB3ZSBuZWVkICovCi0gICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmOwotICAgICAgICAgICAgd2hpbGUgKCorK2YgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKLSAgICAgICAgICAgICAgICA7CisgICAgICAgTG9uZ2VzdCA2NC1iaXQgcG9pbnRlciByZXByZXNlbnRhdGlvbjoKKyAgICAgICAiMHhmZmZmZmZmZmZmZmZmZmZmXDAiICgxOSBieXRlcykuICovCisgICAgY2hhciBidWZmZXJbMjFdOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAotICAgICAgICAgICAgLyogc2tpcCB0aGUgJ2wnIG9yICd6JyBpbiB7JWxkLCAlemQsICVsdSwgJXp1fSBzaW5jZQotICAgICAgICAgICAgICogdGhleSBkb24ndCBhZmZlY3QgdGhlIGFtb3VudCBvZiBzcGFjZSB3ZSByZXNlcnZlLgotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZiAoKCpmID09ICdsJyB8fCAqZiA9PSAneicpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkKLSAgICAgICAgICAgICAgICArK2Y7CisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKIAotICAgICAgICAgICAgc3dpdGNoICgqZikgewotICAgICAgICAgICAgY2FzZSAnYyc6Ci0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgaW50IGMgPSB2YV9hcmcoY291bnQsIGludCk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiAyNTUpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiUHlCeXRlc19Gcm9tRm9ybWF0VigpOiAlYyBmb3JtYXQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdHMgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMjU1XSIpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAnZCc6IGNhc2UgJ3UnOiBjYXNlICdpJzogY2FzZSAneCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiAyMCBieXRlcyBpcyBlbm91Z2ggdG8gaG9sZCBhIDY0LWJpdAotICAgICAgICAgICAgICAgICAgIGludGVnZXIuICBEZWNpbWFsIHRha2VzIHRoZSBtb3N0IHNwYWNlLgotICAgICAgICAgICAgICAgICAgIFRoaXMgaXNuJ3QgZW5vdWdoIGZvciBvY3RhbC4gKi8KLSAgICAgICAgICAgICAgICBuICs9IDIwOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncyc6Ci0gICAgICAgICAgICAgICAgcyA9IHZhX2FyZyhjb3VudCwgY2hhciopOwotICAgICAgICAgICAgICAgIG4gKz0gc3RybGVuKHMpOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSAncCc6Ci0gICAgICAgICAgICAgICAgKHZvaWQpIHZhX2FyZyhjb3VudCwgaW50KTsKLSAgICAgICAgICAgICAgICAvKiBtYXhpbXVtIDY0LWJpdCBwb2ludGVyIHJlcHJlc2VudGF0aW9uOgotICAgICAgICAgICAgICAgICAqIDB4ZmZmZmZmZmZmZmZmZmZmZgotICAgICAgICAgICAgICAgICAqIHNvIDE5IGNoYXJhY3RlcnMgaXMgZW5vdWdoLgotICAgICAgICAgICAgICAgICAqIFhYWCBJIGNvdW50IDE4IC0tIHdoYXQncyB0aGUgZXh0cmEgZm9yPwotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIG4gKz0gMTk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIC8qIGlmIHdlIHN0dW1ibGUgdXBvbiBhbiB1bmtub3duCi0gICAgICAgICAgICAgICAgICAgZm9ybWF0dGluZyBjb2RlLCBjb3B5IHRoZSByZXN0IG9mCi0gICAgICAgICAgICAgICAgICAgdGhlIGZvcm1hdCBzdHJpbmcgdG8gdGhlIG91dHB1dAotICAgICAgICAgICAgICAgICAgIHN0cmluZy4gKHdlIGNhbm5vdCBqdXN0IHNraXAgdGhlCi0gICAgICAgICAgICAgICAgICAgY29kZSwgc2luY2UgdGhlcmUncyBubyB3YXkgdG8ga25vdwotICAgICAgICAgICAgICAgICAgIHdoYXQncyBpbiB0aGUgYXJndW1lbnQgbGlzdCkgKi8KLSAgICAgICAgICAgICAgICBuICs9IHN0cmxlbihwKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4cGFuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICBuKys7Ci0gICAgfQotIGV4cGFuZDoKLSAgICAvKiBzdGVwIDI6IGZpbGwgdGhlIGJ1ZmZlciAqLwotICAgIC8qIFNpbmNlIHdlJ3ZlIGFuYWx5emVkIGhvdyBtdWNoIHNwYWNlIHdlIG5lZWQgZm9yIHRoZSB3b3JzdCBjYXNlLAotICAgICAgIHVzZSBzcHJpbnRmIGRpcmVjdGx5IGluc3RlYWQgb2YgdGhlIHNsb3dlciBQeU9TX3NucHJpbnRmLiAqLwotICAgIHN0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbik7Ci0gICAgaWYgKCFzdHJpbmcpCisgICAgcyA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIHN0cmxlbihmb3JtYXQpKTsKKyAgICBpZiAocyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIHMgPSBQeUJ5dGVzX0FzU3RyaW5nKHN0cmluZyk7CisjZGVmaW5lIFdSSVRFX0JZVEVTKHN0cikgXAorICAgIGRvIHsgXAorICAgICAgICBzID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzLCAoc3RyKSwgc3RybGVuKHN0cikpOyBcCisgICAgICAgIGlmIChzID09IE5VTEwpIFwKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7IFwKKyAgICB9IHdoaWxlICgwKQogCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgZisrKSB7Ci0gICAgICAgIGlmICgqZiA9PSAnJScpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoYXIqIHAgPSBmKys7CisgICAgICAgIGlmICgqZiAhPSAnJScpIHsKKyAgICAgICAgICAgICpzKysgPSAqZjsKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisKKyAgICAgICAgcCA9IGYrKzsKKworICAgICAgICAvKiBpZ25vcmUgdGhlIHdpZHRoIChleDogMTAgaW4gIiUxMHMiKSAqLworICAgICAgICB3aGlsZSAoUHlfSVNESUdJVCgqZikpCisgICAgICAgICAgICBmKys7CisKKyAgICAgICAgLyogcGFyc2UgdGhlIHByZWNpc2lvbiAoZXg6IDEwIGluICIlLjEwcyIpICovCisgICAgICAgIHByZWMgPSAwOworICAgICAgICBpZiAoKmYgPT0gJy4nKSB7CisgICAgICAgICAgICBmKys7CisgICAgICAgICAgICBmb3IgKDsgUHlfSVNESUdJVCgqZik7IGYrKykgeworICAgICAgICAgICAgICAgIHByZWMgPSAocHJlYyAqIDEwKSArICgqZiAtICcwJyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICB3aGlsZSAoKmYgJiYgKmYgIT0gJyUnICYmICFQeV9JU0FMUEhBKCpmKSkKKyAgICAgICAgICAgIGYrKzsKKworICAgICAgICAvKiBoYW5kbGUgdGhlIGxvbmcgZmxhZyAoJ2wnKSwgYnV0IG9ubHkgZm9yICVsZCBhbmQgJWx1LgorICAgICAgICAgICBvdGhlcnMgY2FuIGJlIGFkZGVkIHdoZW4gbmVjZXNzYXJ5LiAqLworICAgICAgICBsb25nZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAnbCcgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOworICAgICAgICAgICAgKytmOworICAgICAgICB9CisKKyAgICAgICAgLyogaGFuZGxlIHRoZSBzaXplX3QgZmxhZyAoJ3onKS4gKi8KKyAgICAgICAgc2l6ZV90ZmxhZyA9IDA7CisgICAgICAgIGlmICgqZiA9PSAneicgJiYgKGZbMV0gPT0gJ2QnIHx8IGZbMV0gPT0gJ3UnKSkgeworICAgICAgICAgICAgc2l6ZV90ZmxhZyA9IDE7CisgICAgICAgICAgICArK2Y7CisgICAgICAgIH0KKworICAgICAgICAvKiBzdWJ0cmFjdCBieXRlcyBwcmVhbGxvY2F0ZWQgZm9yIHRoZSBmb3JtYXQgc3RyaW5nCisgICAgICAgICAgIChleDogMiBmb3IgIiVzIikgKi8KKyAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IChmIC0gcCArIDEpOworCisgICAgICAgIHN3aXRjaCAoKmYpIHsKKyAgICAgICAgY2FzZSAnYyc6CisgICAgICAgIHsKKyAgICAgICAgICAgIGludCBjID0gdmFfYXJnKHZhcmdzLCBpbnQpOworICAgICAgICAgICAgaWYgKGMgPCAwIHx8IGMgPiAyNTUpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlB5Qnl0ZXNfRnJvbUZvcm1hdFYoKTogJWMgZm9ybWF0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImV4cGVjdHMgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMjU1XSIpOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKKyAgICAgICAgICAgICpzKysgPSAodW5zaWduZWQgY2hhciljOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsZCIsIHZhX2FyZyh2YXJncywgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgImQiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVkIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICd1JzoKKyAgICAgICAgICAgIGlmIChsb25nZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCisgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOworICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKKyAgICAgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHNpemVfdCkpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXUiLAorICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIHVuc2lnbmVkIGludCkpOworICAgICAgICAgICAgYXNzZXJ0KHN0cmxlbihidWZmZXIpIDwgc2l6ZW9mKGJ1ZmZlcikpOworICAgICAgICAgICAgV1JJVEVfQllURVMoYnVmZmVyKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgJ2knOgorICAgICAgICAgICAgc3ByaW50ZihidWZmZXIsICIlaSIsIHZhX2FyZyh2YXJncywgaW50KSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICBzcHJpbnRmKGJ1ZmZlciwgIiV4IiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKKyAgICAgICAgICAgIGFzc2VydChzdHJsZW4oYnVmZmVyKSA8IHNpemVvZihidWZmZXIpKTsKKyAgICAgICAgICAgIFdSSVRFX0JZVEVTKGJ1ZmZlcik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICdzJzoKKyAgICAgICAgewogICAgICAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICAgICAgaW50IGxvbmdmbGFnID0gMDsKLSAgICAgICAgICAgIGludCBzaXplX3RmbGFnID0gMDsKLSAgICAgICAgICAgIC8qIHBhcnNlIHRoZSB3aWR0aC5wcmVjaXNpb24gcGFydCAod2UncmUgb25seQotICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiB0aGUgcHJlY2lzaW9uIHZhbHVlLCBpZiBhbnkpICovCi0gICAgICAgICAgICBuID0gMDsKLSAgICAgICAgICAgIHdoaWxlIChQeV9JU0RJR0lUKCpmKSkKLSAgICAgICAgICAgICAgICBuID0gKG4qMTApICsgKmYrKyAtICcwJzsKLSAgICAgICAgICAgIGlmICgqZiA9PSAnLicpIHsKLSAgICAgICAgICAgICAgICBmKys7Ci0gICAgICAgICAgICAgICAgbiA9IDA7Ci0gICAgICAgICAgICAgICAgd2hpbGUgKFB5X0lTRElHSVQoKmYpKQotICAgICAgICAgICAgICAgICAgICBuID0gKG4qMTApICsgKmYrKyAtICcwJzsKKworICAgICAgICAgICAgcCA9IHZhX2FyZyh2YXJncywgY29uc3QgY2hhciopOworICAgICAgICAgICAgaSA9IHN0cmxlbihwKTsKKyAgICAgICAgICAgIGlmIChwcmVjID4gMCAmJiBpID4gcHJlYykKKyAgICAgICAgICAgICAgICBpID0gcHJlYzsKKyAgICAgICAgICAgIHMgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHMsIHAsIGkpOworICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgIHNwcmludGYoYnVmZmVyLCAiJXAiLCB2YV9hcmcodmFyZ3MsIHZvaWQqKSk7CisgICAgICAgICAgICBhc3NlcnQoc3RybGVuKGJ1ZmZlcikgPCBzaXplb2YoYnVmZmVyKSk7CisgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLworICAgICAgICAgICAgaWYgKGJ1ZmZlclsxXSA9PSAnWCcpCisgICAgICAgICAgICAgICAgYnVmZmVyWzFdID0gJ3gnOworICAgICAgICAgICAgZWxzZSBpZiAoYnVmZmVyWzFdICE9ICd4JykgeworICAgICAgICAgICAgICAgIG1lbW1vdmUoYnVmZmVyKzIsIGJ1ZmZlciwgc3RybGVuKGJ1ZmZlcikrMSk7CisgICAgICAgICAgICAgICAgYnVmZmVyWzBdID0gJzAnOworICAgICAgICAgICAgICAgIGJ1ZmZlclsxXSA9ICd4JzsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlICgqZiAmJiAqZiAhPSAnJScgJiYgIVB5X0lTQUxQSEEoKmYpKQotICAgICAgICAgICAgICAgIGYrKzsKLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgbG9uZyBmbGFnLCBidXQgb25seSBmb3IgJWxkIGFuZCAlbHUuCi0gICAgICAgICAgICAgICBvdGhlcnMgY2FuIGJlIGFkZGVkIHdoZW4gbmVjZXNzYXJ5LiAqLwotICAgICAgICAgICAgaWYgKCpmID09ICdsJyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScpKSB7Ci0gICAgICAgICAgICAgICAgbG9uZ2ZsYWcgPSAxOwotICAgICAgICAgICAgICAgICsrZjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIC8qIGhhbmRsZSB0aGUgc2l6ZV90IGZsYWcuICovCi0gICAgICAgICAgICBpZiAoKmYgPT0gJ3onICYmIChmWzFdID09ICdkJyB8fCBmWzFdID09ICd1JykpIHsKLSAgICAgICAgICAgICAgICBzaXplX3RmbGFnID0gMTsKLSAgICAgICAgICAgICAgICArK2Y7CisgICAgICAgICAgICBXUklURV9CWVRFUyhidWZmZXIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAnJSc6CisgICAgICAgICAgICB3cml0ZXIubWluX3NpemUrKzsKKyAgICAgICAgICAgICpzKysgPSAnJSc7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgaWYgKCpmID09IDApIHsKKyAgICAgICAgICAgICAgICAvKiBmaXggbWluX3NpemUgaWYgd2UgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplKys7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHN3aXRjaCAoKmYpIHsKLSAgICAgICAgICAgIGNhc2UgJ2MnOgotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGludCBjID0gdmFfYXJnKHZhcmdzLCBpbnQpOwotICAgICAgICAgICAgICAgIC8qIGMgaGFzIGJlZW4gY2hlY2tlZCBmb3Igb3ZlcmZsb3cgaW4gdGhlIGZpcnN0IHN0ZXAgKi8KLSAgICAgICAgICAgICAgICAqcysrID0gKHVuc2lnbmVkIGNoYXIpYzsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgJ2QnOgotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWxkIiwgdmFfYXJnKHZhcmdzLCBsb25nKSk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoc2l6ZV90ZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAiZCIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcodmFyZ3MsIFB5X3NzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiVkIiwgdmFfYXJnKHZhcmdzLCBpbnQpKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ3UnOgotICAgICAgICAgICAgICAgIGlmIChsb25nZmxhZykKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihzLCAiJWx1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgbG9uZykpOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiUiIFBZX0ZPUk1BVF9TSVpFX1QgInUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKHZhcmdzLCBzaXplX3QpKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIHNwcmludGYocywgIiV1IiwKLSAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZyh2YXJncywgdW5zaWduZWQgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdpJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlaSIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIleCIsIHZhX2FyZyh2YXJncywgaW50KSk7Ci0gICAgICAgICAgICAgICAgcyArPSBzdHJsZW4ocyk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdzJzoKLSAgICAgICAgICAgICAgICBwID0gdmFfYXJnKHZhcmdzLCBjaGFyKik7Ci0gICAgICAgICAgICAgICAgaSA9IHN0cmxlbihwKTsKLSAgICAgICAgICAgICAgICBpZiAobiA+IDAgJiYgaSA+IG4pCi0gICAgICAgICAgICAgICAgICAgIGkgPSBuOwotICAgICAgICAgICAgICAgIFB5X01FTUNQWShzLCBwLCBpKTsKLSAgICAgICAgICAgICAgICBzICs9IGk7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICdwJzoKLSAgICAgICAgICAgICAgICBzcHJpbnRmKHMsICIlcCIsIHZhX2FyZyh2YXJncywgdm9pZCopKTsKLSAgICAgICAgICAgICAgICAvKiAlcCBpcyBpbGwtZGVmaW5lZDogIGVuc3VyZSBsZWFkaW5nIDB4LiAqLwotICAgICAgICAgICAgICAgIGlmIChzWzFdID09ICdYJykKLSAgICAgICAgICAgICAgICAgICAgc1sxXSA9ICd4JzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChzWzFdICE9ICd4JykgewotICAgICAgICAgICAgICAgICAgICBtZW1tb3ZlKHMrMiwgcywgc3RybGVuKHMpKzEpOwotICAgICAgICAgICAgICAgICAgICBzWzBdID0gJzAnOwotICAgICAgICAgICAgICAgICAgICBzWzFdID0gJ3gnOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJyUnOgotICAgICAgICAgICAgICAgICpzKysgPSAnJSc7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHN0cmNweShzLCBwKTsKLSAgICAgICAgICAgICAgICBzICs9IHN0cmxlbihzKTsKLSAgICAgICAgICAgICAgICBnb3RvIGVuZDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAqcysrID0gKmY7CisgICAgICAgICAgICAvKiBpbnZhbGlkIGZvcm1hdCBzdHJpbmc6IGNvcHkgdW5mb3JtYXR0ZWQgc3RyaW5nIGFuZCBleGl0ICovCisgICAgICAgICAgICBXUklURV9CWVRFUyhwKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgcyk7CisgICAgICAgIH0KICAgICB9CiAKLSBlbmQ6Ci0gICAgX1B5Qnl0ZXNfUmVzaXplKCZzdHJpbmcsIHMgLSBQeUJ5dGVzX0FTX1NUUklORyhzdHJpbmcpKTsKLSAgICByZXR1cm4gc3RyaW5nOworI3VuZGVmIFdSSVRFX0JZVEVTCisKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHMpOworCisgZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlPYmplY3QgKgpAQCAtNDA5LDEyICs0MDcsMTQgQEAKIAogLyogUmV0dXJucyBhIG5ldyByZWZlcmVuY2UgdG8gYSBQeUJ5dGVzIG9iamVjdCwgb3IgTlVMTCBvbiBmYWlsdXJlLiAqLwogCi1zdGF0aWMgUHlPYmplY3QgKgotZm9ybWF0ZmxvYXQoUHlPYmplY3QgKnYsIGludCBmbGFncywgaW50IHByZWMsIGludCB0eXBlKQorc3RhdGljIGNoYXIqCitmb3JtYXRmbG9hdChQeU9iamVjdCAqdiwgaW50IGZsYWdzLCBpbnQgcHJlYywgaW50IHR5cGUsCisgICAgICAgICAgICBQeU9iamVjdCAqKnBfcmVzdWx0LCBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpzdHIpCiB7CiAgICAgY2hhciAqcDsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OworICAgIHNpemVfdCBsZW47CiAKICAgICB4ID0gUHlGbG9hdF9Bc0RvdWJsZSh2KTsKICAgICBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTQzMSw5ICs0MzEsMjIgQEAKIAogICAgIGlmIChwID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocCwgc3RybGVuKHApKTsKKworICAgIGxlbiA9IHN0cmxlbihwKTsKKyAgICBpZiAod3JpdGVyICE9IE5VTEwpIHsKKyAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgbGVuKTsKKyAgICAgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIG1lbWNweShzdHIsIHAsIGxlbik7CisgICAgICAgIFB5TWVtX0ZyZWUocCk7CisgICAgICAgIHN0ciArPSBsZW47CisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShwLCBsZW4pOwogICAgIFB5TWVtX0ZyZWUocCk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKyAgICAqcF9yZXN1bHQgPSByZXN1bHQ7CisgICAgcmV0dXJuIHN0cjsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTQ3MywxMSArNDg2LDExIEBACiBzdGF0aWMgaW50CiBieXRlX2NvbnZlcnRlcihQeU9iamVjdCAqYXJnLCBjaGFyICpwKQogewotICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19TaXplKGFyZykgPT0gMSkgeworICAgIGlmIChQeUJ5dGVzX0NoZWNrKGFyZykgJiYgUHlCeXRlc19HRVRfU0laRShhcmcpID09IDEpIHsKICAgICAgICAgKnAgPSBQeUJ5dGVzX0FTX1NUUklORyhhcmcpWzBdOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgZWxzZSBpZiAoUHlCeXRlQXJyYXlfQ2hlY2soYXJnKSAmJiBQeUJ5dGVBcnJheV9TaXplKGFyZykgPT0gMSkgeworICAgIGVsc2UgaWYgKFB5Qnl0ZUFycmF5X0NoZWNrKGFyZykgJiYgUHlCeXRlQXJyYXlfR0VUX1NJWkUoYXJnKSA9PSAxKSB7CiAgICAgICAgICpwID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKGFyZylbMF07CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KQEAgLTU1NywzNiArNTcwLDM2IEBACiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKLS8qIGZtdCUodjEsdjIsLi4uKSBpcyByb3VnaGx5IGVxdWl2YWxlbnQgdG8gc3ByaW50ZihmbXQsIHYxLCB2MiwgLi4uKQotCi0gICBGT1JNQVRCVUZMRU4gaXMgdGhlIGxlbmd0aCBvZiB0aGUgYnVmZmVyIGluIHdoaWNoIHRoZSBpbnRzICYKLSAgIGNoYXJzIGFyZSBmb3JtYXR0ZWQuIFhYWCBUaGlzIGlzIGEgbWFnaWMgbnVtYmVyLiBFYWNoIGZvcm1hdHRpbmcKLSAgIHJvdXRpbmUgZG9lcyBib3VuZHMgY2hlY2tpbmcgdG8gZW5zdXJlIG5vIG92ZXJmbG93LCBidXQgYSBiZXR0ZXIKLSAgIHNvbHV0aW9uIG1heSBiZSB0byBtYWxsb2MgYSBidWZmZXIgb2YgYXBwcm9wcmlhdGUgc2l6ZSBmb3IgZWFjaAotICAgZm9ybWF0LiBGb3Igbm93LCB0aGUgY3VycmVudCBzb2x1dGlvbiBpcyBzdWZmaWNpZW50LgotKi8KLSNkZWZpbmUgRk9STUFUQlVGTEVOIChzaXplX3QpMTIwCisvKiBmbXQlKHYxLHYyLC4uLikgaXMgcm91Z2hseSBlcXVpdmFsZW50IHRvIHNwcmludGYoZm10LCB2MSwgdjIsIC4uLikgKi8KIAogUHlPYmplY3QgKgotX1B5Qnl0ZXNfRm9ybWF0KFB5T2JqZWN0ICpmb3JtYXQsIFB5T2JqZWN0ICphcmdzKQorX1B5Qnl0ZXNfRm9ybWF0RXgoY29uc3QgY2hhciAqZm9ybWF0LCBQeV9zc2l6ZV90IGZvcm1hdF9sZW4sCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJncywgaW50IHVzZV9ieXRlYXJyYXkpCiB7Ci0gICAgY2hhciAqZm10LCAqcmVzOworICAgIGNvbnN0IGNoYXIgKmZtdDsKKyAgICBjaGFyICpyZXM7CiAgICAgUHlfc3NpemVfdCBhcmdsZW4sIGFyZ2lkeDsKLSAgICBQeV9zc2l6ZV90IHJlc2xlbiwgcmVzY250LCBmbXRjbnQ7CisgICAgUHlfc3NpemVfdCBmbXRjbnQ7CiAgICAgaW50IGFyZ3Nfb3duZWQgPSAwOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CiAgICAgUHlPYmplY3QgKmRpY3QgPSBOVUxMOwotICAgIGlmIChmb3JtYXQgPT0gTlVMTCB8fCAhUHlCeXRlc19DaGVjayhmb3JtYXQpIHx8IGFyZ3MgPT0gTlVMTCkgeworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIGlmIChhcmdzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBmbXQgPSBQeUJ5dGVzX0FTX1NUUklORyhmb3JtYXQpOwotICAgIGZtdGNudCA9IFB5Qnl0ZXNfR0VUX1NJWkUoZm9ybWF0KTsKLSAgICByZXNsZW4gPSByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgcmVzdWx0ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgoY2hhciAqKU5VTEwsIHJlc2xlbik7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQorICAgIGZtdCA9IGZvcm1hdDsKKyAgICBmbXRjbnQgPSBmb3JtYXRfbGVuOworCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICB3cml0ZXIudXNlX2J5dGVhcnJheSA9IHVzZV9ieXRlYXJyYXk7CisKKyAgICByZXMgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBmbXRjbnQpOworICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzID0gUHlCeXRlc19Bc1N0cmluZyhyZXN1bHQpOworICAgIGlmICghdXNlX2J5dGVhcnJheSkKKyAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDE7CisKICAgICBpZiAoUHlUdXBsZV9DaGVjayhhcmdzKSkgewogICAgICAgICBhcmdsZW4gPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBhcmdpZHggPSAwOwpAQCAtNjAwLDE4ICs2MTMsMjMgQEAKICAgICAgICAgIVB5Qnl0ZUFycmF5X0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgICAgICBkaWN0ID0gYXJnczsKICAgICB9CisKICAgICB3aGlsZSAoLS1mbXRjbnQgPj0gMCkgewogICAgICAgICBpZiAoKmZtdCAhPSAnJScpIHsKLSAgICAgICAgICAgIGlmICgtLXJlc2NudCA8IDApIHsKLSAgICAgICAgICAgICAgICByZXNjbnQgPSBmbXRjbnQgKyAxMDA7Ci0gICAgICAgICAgICAgICAgcmVzbGVuICs9IHJlc2NudDsKLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgLS1yZXNjbnQ7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAqcmVzKysgPSAqZm10Kys7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICAgICAgICAgIGNoYXIgKnBvczsKKworICAgICAgICAgICAgcG9zID0gc3RyY2hyKGZtdCArIDEsICclJyk7CisgICAgICAgICAgICBpZiAocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgbGVuID0gcG9zIC0gZm10OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGxlbiA9IGZvcm1hdF9sZW4gLSAoZm10IC0gZm9ybWF0KTsKKyAgICAgICAgICAgIGFzc2VydChsZW4gIT0gMCk7CisKKyAgICAgICAgICAgIG1lbWNweShyZXMsIGZtdCwgbGVuKTsKKyAgICAgICAgICAgIHJlcyArPSBsZW47CisgICAgICAgICAgICBmbXQgKz0gbGVuOworICAgICAgICAgICAgZm10Y250IC09IChsZW4gLSAxKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIC8qIEdvdCBhIGZvcm1hdCBzcGVjaWZpZXIgKi8KQEAgLTYyNiwxMCArNjQ0LDE0IEBACiAgICAgICAgICAgICBpbnQgc2lnbjsKICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuID0gMDsKICAgICAgICAgICAgIGNoYXIgb25lY2hhcjsgLyogRm9yIGJ5dGVfY29udmVydGVyKCkgKi8KKyAgICAgICAgICAgIFB5X3NzaXplX3QgYWxsb2M7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgICAgIGNoYXIgKmJlZm9yZTsKKyNlbmRpZgogCiAgICAgICAgICAgICBmbXQrKzsKICAgICAgICAgICAgIGlmICgqZm10ID09ICcoJykgewotICAgICAgICAgICAgICAgIGNoYXIgKmtleXN0YXJ0OworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmtleXN0YXJ0OwogICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qga2V5bGVuOwogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICAgICAgaW50IHBjb3VudCA9IDE7CkBAIC02NzMsNiArNjk1LDggQEAKICAgICAgICAgICAgICAgICBhcmdsZW4gPSAtMTsKICAgICAgICAgICAgICAgICBhcmdpZHggPSAtMjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogUGFyc2UgZmxhZ3MuIEV4YW1wbGU6ICIlK2kiID0+IGZsYWdzPUZfU0lHTi4gKi8KICAgICAgICAgICAgIHdoaWxlICgtLWZtdGNudCA+PSAwKSB7CiAgICAgICAgICAgICAgICAgc3dpdGNoIChjID0gKmZtdCsrKSB7CiAgICAgICAgICAgICAgICAgY2FzZSAnLSc6IGZsYWdzIHw9IEZfTEpVU1Q7IGNvbnRpbnVlOwpAQCAtNjgzLDYgKzcwNyw4IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYXJzZSB3aWR0aC4gRXhhbXBsZTogIiUxMHMiID0+IHdpZHRoPTEwICovCiAgICAgICAgICAgICBpZiAoYyA9PSAnKicpIHsKICAgICAgICAgICAgICAgICB2ID0gZ2V0bmV4dGFyZyhhcmdzLCBhcmdsZW4sICZhcmdpZHgpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCkBAIC03MTcsNiArNzQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSB3aWR0aCoxMCArIChjIC0gJzAnKTsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFBhcnNlIHByZWNpc2lvbi4gRXhhbXBsZTogIiUuM2YiID0+IHByZWM9MyAqLwogICAgICAgICAgICAgaWYgKGMgPT0gJy4nKSB7CiAgICAgICAgICAgICAgICAgcHJlYyA9IDA7CiAgICAgICAgICAgICAgICAgaWYgKC0tZm10Y250ID49IDApCkBAIC03NzEsMTMgKzc5OSwxOSBAQAogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGlmIChmbXRjbnQgPCAwKSB7CisgICAgICAgICAgICAgICAgLyogbGFzdCB3cml0ZXI6IGRpc2FibGUgd3JpdGVyIG92ZXJhbGxvY2F0aW9uICovCisgICAgICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IDA7CisgICAgICAgICAgICB9CisKICAgICAgICAgICAgIHNpZ24gPSAwOwogICAgICAgICAgICAgZmlsbCA9ICcgJzsKICAgICAgICAgICAgIHN3aXRjaCAoYykgewogICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICAgICAgcGJ1ZiA9ICIlIjsKLSAgICAgICAgICAgICAgICBsZW4gPSAxOwotICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICpyZXMrKyA9ICclJzsKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKwogICAgICAgICAgICAgY2FzZSAncic6CiAgICAgICAgICAgICAgICAgLy8gJXIgaXMgb25seSBmb3IgMi8zIGNvZGU7IDMgb25seSBjb2RlIHNob3VsZCB1c2UgJWEKICAgICAgICAgICAgIGNhc2UgJ2EnOgpAQCAtNzkwLDYgKzgyNCw3IEBACiAgICAgICAgICAgICAgICAgaWYgKHByZWMgPj0gMCAmJiBsZW4gPiBwcmVjKQogICAgICAgICAgICAgICAgICAgICBsZW4gPSBwcmVjOwogICAgICAgICAgICAgICAgIGJyZWFrOworCiAgICAgICAgICAgICBjYXNlICdzJzoKICAgICAgICAgICAgICAgICAvLyAlcyBpcyBvbmx5IGZvciAyLzMgY29kZTsgMyBvbmx5IGNvZGUgc2hvdWxkIHVzZSAlYgogICAgICAgICAgICAgY2FzZSAnYic6CkBAIC03OTksMTIgKzgzNCw0OSBAQAogICAgICAgICAgICAgICAgIGlmIChwcmVjID49IDAgJiYgbGVuID4gcHJlYykKICAgICAgICAgICAgICAgICAgICAgbGVuID0gcHJlYzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnaSc6CiAgICAgICAgICAgICBjYXNlICdkJzoKICAgICAgICAgICAgIGNhc2UgJ3UnOgogICAgICAgICAgICAgY2FzZSAnbyc6CiAgICAgICAgICAgICBjYXNlICd4JzoKICAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIGlmIChQeUxvbmdfQ2hlY2tFeGFjdCh2KQorICAgICAgICAgICAgICAgICAgICAmJiB3aWR0aCA9PSAtMSAmJiBwcmVjID09IC0xCisgICAgICAgICAgICAgICAgICAgICYmICEoZmxhZ3MgJiAoRl9TSUdOIHwgRl9CTEFOSykpCisgICAgICAgICAgICAgICAgICAgICYmIGMgIT0gJ1gnKQorICAgICAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRmFzdCBwYXRoICovCisgICAgICAgICAgICAgICAgICAgIGludCBhbHRlcm5hdGUgPSBmbGFncyAmIEZfQUxUOworICAgICAgICAgICAgICAgICAgICBpbnQgYmFzZTsKKworICAgICAgICAgICAgICAgICAgICBzd2l0Y2goYykKKyAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoMCAmJiAiJ3R5cGUnIG5vdCBpbiBbZGl1b3hYXSIpOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAnZCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdpJzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2UgPSA4OworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgY2FzZSAneCc6CisgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICdYJzoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGggKi8KKyAgICAgICAgICAgICAgICAgICAgd3JpdGVyLm1pbl9zaXplIC09IDI7IC8qIHNpemUgcHJlYWxsb2NhdGVkIGZvciAiJWQiICovCisgICAgICAgICAgICAgICAgICAgIHJlcyA9IF9QeUxvbmdfRm9ybWF0Qnl0ZXNXcml0ZXIoJndyaXRlciwgcmVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYsIGJhc2UsIGFsdGVybmF0ZSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKwogICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRsb25nKHYsIGZsYWdzLCBwcmVjLCBjKTsKICAgICAgICAgICAgICAgICBpZiAoIXRlbXApCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC04MTUsMTQgKzg4NywyNSBAQAogICAgICAgICAgICAgICAgIGlmIChmbGFncyAmIEZfWkVSTykKICAgICAgICAgICAgICAgICAgICAgZmlsbCA9ICcwJzsKICAgICAgICAgICAgICAgICBicmVhazsKKwogICAgICAgICAgICAgY2FzZSAnZSc6CiAgICAgICAgICAgICBjYXNlICdFJzoKICAgICAgICAgICAgIGNhc2UgJ2YnOgogICAgICAgICAgICAgY2FzZSAnRic6CiAgICAgICAgICAgICBjYXNlICdnJzoKICAgICAgICAgICAgIGNhc2UgJ0cnOgotICAgICAgICAgICAgICAgIHRlbXAgPSBmb3JtYXRmbG9hdCh2LCBmbGFncywgcHJlYywgYyk7Ci0gICAgICAgICAgICAgICAgaWYgKHRlbXAgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBpZiAod2lkdGggPT0gLTEgJiYgcHJlYyA9PSAtMQorICAgICAgICAgICAgICAgICAgICAmJiAhKGZsYWdzICYgKEZfU0lHTiB8IEZfQkxBTkspKSkKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMjsgLyogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICIlZiIgKi8KKyAgICAgICAgICAgICAgICAgICAgcmVzID0gZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsIE5VTEwsICZ3cml0ZXIsIHJlcyk7CisgICAgICAgICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmICghZm9ybWF0ZmxvYXQodiwgZmxhZ3MsIHByZWMsIGMsICZ0ZW1wLCBOVUxMLCByZXMpKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIHBidWYgPSBQeUJ5dGVzX0FTX1NUUklORyh0ZW1wKTsKICAgICAgICAgICAgICAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHRlbXApOwpAQCAtODMwLDIxICs5MTMsMjggQEAKICAgICAgICAgICAgICAgICBpZiAoZmxhZ3MgJiBGX1pFUk8pCiAgICAgICAgICAgICAgICAgICAgIGZpbGwgPSAnMCc7CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGNhc2UgJ2MnOgogICAgICAgICAgICAgICAgIHBidWYgPSAmb25lY2hhcjsKICAgICAgICAgICAgICAgICBsZW4gPSBieXRlX2NvbnZlcnRlcih2LCAmb25lY2hhcik7CiAgICAgICAgICAgICAgICAgaWYgKCFsZW4pCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgaWYgKHdpZHRoID09IC0xKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIEZhc3QgcGF0aCAqLworICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBvbmVjaGFyOworICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAidW5zdXBwb3J0ZWQgZm9ybWF0IGNoYXJhY3RlciAnJWMnICgweCV4KSAiCiAgICAgICAgICAgICAgICAgICAiYXQgaW5kZXggJXpkIiwKICAgICAgICAgICAgICAgICAgIGMsIGMsCi0gICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Bc1N0cmluZyhmb3JtYXQpKSk7CisgICAgICAgICAgICAgICAgICAoUHlfc3NpemVfdCkoZm10IC0gMSAtIGZvcm1hdCkpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CisKICAgICAgICAgICAgIGlmIChzaWduKSB7CiAgICAgICAgICAgICAgICAgaWYgKCpwYnVmID09ICctJyB8fCAqcGJ1ZiA9PSAnKycpIHsKICAgICAgICAgICAgICAgICAgICAgc2lnbiA9ICpwYnVmKys7CkBAIC04NTksMjkgKzk0OSwzMSBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKHdpZHRoIDwgbGVuKQogICAgICAgICAgICAgICAgIHdpZHRoID0gbGVuOwotICAgICAgICAgICAgaWYgKHJlc2NudCAtIChzaWduICE9IDApIDwgd2lkdGgpIHsKLSAgICAgICAgICAgICAgICByZXNsZW4gLT0gcmVzY250OwotICAgICAgICAgICAgICAgIHJlc2NudCA9IHdpZHRoICsgZm10Y250ICsgMTAwOwotICAgICAgICAgICAgICAgIHJlc2xlbiArPSByZXNjbnQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlc2xlbiA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlc3VsdCk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGVtcCk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbikpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCkKLSAgICAgICAgICAgICAgICAgICAgKyByZXNsZW4gLSByZXNjbnQ7CisKKyAgICAgICAgICAgIGFsbG9jID0gd2lkdGg7CisgICAgICAgICAgICBpZiAoc2lnbiAhPSAwICYmIGxlbiA9PSB3aWR0aCkKKyAgICAgICAgICAgICAgICBhbGxvYysrOworICAgICAgICAgICAgLyogMjogc2l6ZSBwcmVhbGxvY2F0ZWQgZm9yICVzICovCisgICAgICAgICAgICBpZiAoYWxsb2MgPiAyKSB7CisgICAgICAgICAgICAgICAgcmVzID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCByZXMsIGFsbG9jIC0gMik7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQorI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICBiZWZvcmUgPSByZXM7CisjZW5kaWYKKworICAgICAgICAgICAgLyogV3JpdGUgdGhlIHNpZ24gaWYgbmVlZGVkICovCiAgICAgICAgICAgICBpZiAoc2lnbikgewogICAgICAgICAgICAgICAgIGlmIChmaWxsICE9ICcgJykKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gc2lnbjsKLSAgICAgICAgICAgICAgICByZXNjbnQtLTsKICAgICAgICAgICAgICAgICBpZiAod2lkdGggPiBsZW4pCiAgICAgICAgICAgICAgICAgICAgIHdpZHRoLS07CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIFdyaXRlIHRoZSBudW1lcmljIHByZWZpeCBmb3IgIngiLCAiWCIgYW5kICJvIiBmb3JtYXRzCisgICAgICAgICAgICAgICBpZiB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZC4KKyAgICAgICAgICAgICAgIEZvciBleGFtcGxlLCB3cml0ZSAiMHgiIGZvciB0aGUgIiUjeCIgZm9ybWF0LiAqLwogICAgICAgICAgICAgaWYgKChmbGFncyAmIEZfQUxUKSAmJiAoYyA9PSAneCcgfHwgYyA9PSAnWCcpKSB7CiAgICAgICAgICAgICAgICAgYXNzZXJ0KHBidWZbMF0gPT0gJzAnKTsKICAgICAgICAgICAgICAgICBhc3NlcnQocGJ1ZlsxXSA9PSBjKTsKQEAgLTg4OSwxOCArOTgxLDIxIEBACiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9ICpwYnVmKys7CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHJlc2NudCAtPSAyOwogICAgICAgICAgICAgICAgIHdpZHRoIC09IDI7CiAgICAgICAgICAgICAgICAgaWYgKHdpZHRoIDwgMCkKICAgICAgICAgICAgICAgICAgICAgd2lkdGggPSAwOwogICAgICAgICAgICAgICAgIGxlbiAtPSAyOwogICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBQYWQgbGVmdCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBpZiBuZWVkZWQgKi8KICAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbiAmJiAhKGZsYWdzICYgRl9MSlVTVCkpIHsKLSAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIC0tcmVzY250OwotICAgICAgICAgICAgICAgICAgICAqcmVzKysgPSBmaWxsOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKC0td2lkdGggPiBsZW4pOworICAgICAgICAgICAgICAgIG1lbXNldChyZXMsIGZpbGwsIHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICByZXMgKz0gKHdpZHRoIC0gbGVuKTsKKyAgICAgICAgICAgICAgICB3aWR0aCA9IGxlbjsKICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgcGFkZGluZyB3aXRoIHNwYWNlczogd3JpdGUgc2lnbiBpZiBuZWVkZWQgYW5kL29yIG51bWVyaWMKKyAgICAgICAgICAgICAgIHByZWZpeCBpZiB0aGUgYWx0ZXJuYXRlIGZvcm0gaXMgdXNlZCAqLwogICAgICAgICAgICAgaWYgKGZpbGwgPT0gJyAnKSB7CiAgICAgICAgICAgICAgICAgaWYgKHNpZ24pCiAgICAgICAgICAgICAgICAgICAgICpyZXMrKyA9IHNpZ247CkBAIC05MTIsMTMgKzEwMDcsMTcgQEAKICAgICAgICAgICAgICAgICAgICAgKnJlcysrID0gKnBidWYrKzsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzLCBwYnVmLCBsZW4pOworCisgICAgICAgICAgICAvKiBDb3B5IGJ5dGVzICovCisgICAgICAgICAgICBtZW1jcHkocmVzLCBwYnVmLCBsZW4pOwogICAgICAgICAgICAgcmVzICs9IGxlbjsKLSAgICAgICAgICAgIHJlc2NudCAtPSBsZW47Ci0gICAgICAgICAgICB3aGlsZSAoLS13aWR0aCA+PSBsZW4pIHsKLSAgICAgICAgICAgICAgICAtLXJlc2NudDsKLSAgICAgICAgICAgICAgICAqcmVzKysgPSAnICc7CisKKyAgICAgICAgICAgIC8qIFBhZCByaWdodCB3aXRoIHRoZSBmaWxsIGNoYXJhY3RlciBpZiBuZWVkZWQgKi8KKyAgICAgICAgICAgIGlmICh3aWR0aCA+IGxlbikgeworICAgICAgICAgICAgICAgIG1lbXNldChyZXMsICcgJywgd2lkdGggLSBsZW4pOworICAgICAgICAgICAgICAgIHJlcyArPSAod2lkdGggLSBsZW4pOwogICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBpZiAoZGljdCAmJiAoYXJnaWR4IDwgYXJnbGVuKSAmJiBjICE9ICclJykgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CkBAIC05MjYsMjIgKzEwMjUsMzEgQEAKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKKworI2lmZGVmIFB5X0RFQlVHCisgICAgICAgICAgICAvKiBjaGVjayB0aGF0IHdlIGNvbXB1dGVkIHRoZSBleGFjdCBzaXplIGZvciB0aGlzIHdyaXRlICovCisgICAgICAgICAgICBhc3NlcnQoKHJlcyAtIGJlZm9yZSkgPT0gYWxsb2MpOworI2VuZGlmCiAgICAgICAgIH0gLyogJyUnICovCisKKyAgICAgICAgLyogSWYgb3ZlcmFsbG9jYXRpb24gd2FzIGRpc2FibGVkLCBlbnN1cmUgdGhhdCBpdCB3YXMgdGhlIGxhc3QKKyAgICAgICAgICAgd3JpdGUuIE90aGVyd2lzZSwgd2UgbWlzc2VkIGFuIG9wdGltaXphdGlvbiAqLworICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBmbXRjbnQgPCAwIHx8IHVzZV9ieXRlYXJyYXkpOwogICAgIH0gLyogdW50aWwgZW5kICovCisKICAgICBpZiAoYXJnaWR4IDwgYXJnbGVuICYmICFkaWN0KSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAibm90IGFsbCBhcmd1bWVudHMgY29udmVydGVkIGR1cmluZyBieXRlcyBmb3JtYXR0aW5nIik7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQorCiAgICAgaWYgKGFyZ3Nfb3duZWQpIHsKICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZyZXN1bHQsIHJlc2xlbiAtIHJlc2NudCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCByZXMpOwogCiAgZXJyb3I6Ci0gICAgUHlfREVDUkVGKHJlc3VsdCk7CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKICAgICBpZiAoYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgfQpAQCAtOTYxLDYgKzEwNjksNDIgQEAKICAgIHRoZSBzdHJpbmcgaXMgVVRGLTggZW5jb2RlZCBhbmQgc2hvdWxkIGJlIHJlLWVuY29kZWQgaW4gdGhlCiAgICBzcGVjaWZpZWQgZW5jb2RpbmcuICAqLwogCitzdGF0aWMgY2hhciAqCitfUHlCeXRlc19EZWNvZGVFc2NhcGVSZWNvZGUoY29uc3QgY2hhciAqKnMsIGNvbnN0IGNoYXIgKmVuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMsIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCBjaGFyICpwKQoreworICAgIFB5T2JqZWN0ICp1LCAqdzsKKyAgICBjb25zdCBjaGFyKiB0OworCisgICAgdCA9ICpzOworICAgIC8qIERlY29kZSBub24tQVNDSUkgYnl0ZXMgYXMgVVRGLTguICovCisgICAgd2hpbGUgKHQgPCBlbmQgJiYgKCp0ICYgMHg4MCkpCisgICAgICAgIHQrKzsKKyAgICB1ID0gUHlVbmljb2RlX0RlY29kZVVURjgoKnMsIHQgLSAqcywgZXJyb3JzKTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIFJlY29kZSB0aGVtIGluIHRhcmdldCBlbmNvZGluZy4gKi8KKyAgICB3ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1LCByZWNvZGVfZW5jb2RpbmcsIGVycm9ycyk7CisgICAgUHlfREVDUkVGKHUpOworICAgIGlmICAodyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBhc3NlcnQoUHlCeXRlc19DaGVjayh3KSk7CisKKyAgICAvKiBBcHBlbmQgYnl0ZXMgdG8gb3V0cHV0IGJ1ZmZlci4gKi8KKyAgICB3cml0ZXItPm1pbl9zaXplLS07ICAgLyogc3VidHJhY3QgMSBwcmVhbGxvY2F0ZWQgYnl0ZSAqLworICAgIHAgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKHdyaXRlciwgcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyh3KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKHcpKTsKKyAgICBQeV9ERUNSRUYodyk7CisgICAgaWYgKHAgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAqcyA9IHQ7CisgICAgcmV0dXJuIHA7Cit9CisKIFB5T2JqZWN0ICpQeUJ5dGVzX0RlY29kZUVzY2FwZShjb25zdCBjaGFyICpzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGxlbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzLApAQCAtOTY4LDU0ICsxMTEyLDQyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlY29kZV9lbmNvZGluZykKIHsKICAgICBpbnQgYzsKLSAgICBjaGFyICpwLCAqYnVmOworICAgIGNoYXIgKnA7CiAgICAgY29uc3QgY2hhciAqZW5kOwotICAgIFB5T2JqZWN0ICp2OwotICAgIFB5X3NzaXplX3QgbmV3bGVuID0gcmVjb2RlX2VuY29kaW5nID8gNCpsZW46bGVuOwotICAgIHYgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopTlVMTCwgbmV3bGVuKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisKKyAgICBwID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgbGVuKTsKKyAgICBpZiAocCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBwID0gYnVmID0gUHlCeXRlc19Bc1N0cmluZyh2KTsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKwogICAgIGVuZCA9IHMgKyBsZW47CiAgICAgd2hpbGUgKHMgPCBlbmQpIHsKICAgICAgICAgaWYgKCpzICE9ICdcXCcpIHsKICAgICAgICAgICBub25fZXNjOgotICAgICAgICAgICAgaWYgKHJlY29kZV9lbmNvZGluZyAmJiAoKnMgJiAweDgwKSkgewotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp1LCAqdzsKLSAgICAgICAgICAgICAgICBjaGFyICpyOwotICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHQ7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBybjsKLSAgICAgICAgICAgICAgICB0ID0gczsKLSAgICAgICAgICAgICAgICAvKiBEZWNvZGUgbm9uLUFTQ0lJIGJ5dGVzIGFzIFVURi04LiAqLwotICAgICAgICAgICAgICAgIHdoaWxlICh0IDwgZW5kICYmICgqdCAmIDB4ODApKSB0Kys7Ci0gICAgICAgICAgICAgICAgdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIHQgLSBzLCBlcnJvcnMpOwotICAgICAgICAgICAgICAgIGlmKCF1KSBnb3RvIGZhaWxlZDsKLQotICAgICAgICAgICAgICAgIC8qIFJlY29kZSB0aGVtIGluIHRhcmdldCBlbmNvZGluZy4gKi8KLSAgICAgICAgICAgICAgICB3ID0gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZygKLSAgICAgICAgICAgICAgICAgICAgdSwgcmVjb2RlX2VuY29kaW5nLCBlcnJvcnMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgICAgICAgICBpZiAoIXcpICAgICAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKLQotICAgICAgICAgICAgICAgIC8qIEFwcGVuZCBieXRlcyB0byBvdXRwdXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKHcpKTsKLSAgICAgICAgICAgICAgICByID0gUHlCeXRlc19BU19TVFJJTkcodyk7Ci0gICAgICAgICAgICAgICAgcm4gPSBQeUJ5dGVzX0dFVF9TSVpFKHcpOwotICAgICAgICAgICAgICAgIFB5X01FTUNQWShwLCByLCBybik7Ci0gICAgICAgICAgICAgICAgcCArPSBybjsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodyk7Ci0gICAgICAgICAgICAgICAgcyA9IHQ7Ci0gICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKCEocmVjb2RlX2VuY29kaW5nICYmICgqcyAmIDB4ODApKSkgewogICAgICAgICAgICAgICAgICpwKysgPSAqcysrOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbm9uLUFTQ0lJIGNoYXJhY3RlciBhbmQgbmVlZCB0byByZWNvZGUgKi8KKyAgICAgICAgICAgICAgICBwID0gX1B5Qnl0ZXNfRGVjb2RlRXNjYXBlUmVjb2RlKCZzLCBlbmQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsIHJlY29kZV9lbmNvZGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIsIHApOworICAgICAgICAgICAgICAgIGlmIChwID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KKwogICAgICAgICBzKys7Ci0gICAgICAgIGlmIChzPT1lbmQpIHsKKyAgICAgICAgaWYgKHMgPT0gZW5kKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiVHJhaWxpbmcgXFwgaW4gc3RyaW5nIik7CiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgfQorCiAgICAgICAgIHN3aXRjaCAoKnMrKykgewogICAgICAgICAvKiBYWFggVGhpcyBhc3N1bWVzIEFTQ0lJISAqLwogICAgICAgICBjYXNlICdcbic6IGJyZWFrOwpAQCAtMTA0MCwyOCArMTE3MiwxOCBAQAogICAgICAgICAgICAgKnArKyA9IGM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSAneCc6Ci0gICAgICAgICAgICBpZiAocysxIDwgZW5kICYmIFB5X0lTWERJR0lUKHNbMF0pICYmIFB5X0lTWERJR0lUKHNbMV0pKSB7Ci0gICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHggPSAwOwotICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICB4ID0gYyAtICcwJzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmIChQeV9JU0xPV0VSKGMpKQotICAgICAgICAgICAgICAgICAgICB4ID0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgeCA9IDEwICsgYyAtICdBJzsKLSAgICAgICAgICAgICAgICB4ID0geCA8PCA0OwotICAgICAgICAgICAgICAgIGMgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgICAgIGlmIChQeV9JU0RJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICB4ICs9IGMgLSAnMCc7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoUHlfSVNMT1dFUihjKSkKLSAgICAgICAgICAgICAgICAgICAgeCArPSAxMCArIGMgLSAnYSc7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICB4ICs9IDEwICsgYyAtICdBJzsKLSAgICAgICAgICAgICAgICAqcCsrID0geDsKLSAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGlmIChzKzEgPCBlbmQpIHsKKyAgICAgICAgICAgICAgICBpbnQgZGlnaXQxLCBkaWdpdDI7CisgICAgICAgICAgICAgICAgZGlnaXQxID0gX1B5TG9uZ19EaWdpdFZhbHVlW1B5X0NIQVJNQVNLKHNbMF0pXTsKKyAgICAgICAgICAgICAgICBkaWdpdDIgPSBfUHlMb25nX0RpZ2l0VmFsdWVbUHlfQ0hBUk1BU0soc1sxXSldOworICAgICAgICAgICAgICAgIGlmIChkaWdpdDEgPCAxNiAmJiBkaWdpdDIgPCAxNikgeworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKHVuc2lnbmVkIGNoYXIpKChkaWdpdDEgPDwgNCkgKyBkaWdpdDIpOworICAgICAgICAgICAgICAgICAgICBzICs9IDI7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGludmFsaWQgaGV4YWRlY2ltYWwgZGlnaXRzICovCisKICAgICAgICAgICAgIGlmICghZXJyb3JzIHx8IHN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIFxceCBlc2NhcGUgYXQgcG9zaXRpb24gJWQiLApAQCAtMTA4MywxOCArMTIwNSwyMCBAQAogICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgUHlfSVNYRElHSVQoc1swXSkpCiAgICAgICAgICAgICAgICAgcysrOyAvKiBhbmQgYSBoZXhkaWdpdCAqLwogICAgICAgICAgICAgYnJlYWs7CisKICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywgMSwgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsICooLS1zKSkgPCAwKQorICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOwogICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICBzLS07CiAgICAgICAgICAgICBnb3RvIG5vbl9lc2M7IC8qIGFuIGFyYml0cmFyeSBudW1iZXIgb2YgdW5lc2NhcGVkCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVURi04IGJ5dGVzIG1heSBmb2xsb3cuICovCiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHAtYnVmIDwgbmV3bGVuKQotICAgICAgICBfUHlCeXRlc19SZXNpemUoJnYsIHAgLSBidWYpOwotICAgIHJldHVybiB2OworCisgICAgcmV0dXJuIF9QeUJ5dGVzV3JpdGVyX0ZpbmlzaCgmd3JpdGVyLCBwKTsKKwogICBmYWlsZWQ6Ci0gICAgUHlfREVDUkVGKHYpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTEzNDksMTIgKzE0NzMsMTIgQEAKICAgICB9CiAgICAgaSA9IDA7CiAgICAgaWYgKGkgPCBzaXplKSB7Ci0gICAgICAgIFB5X01FTUNQWShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CisgICAgICAgIG1lbWNweShvcC0+b2Jfc3ZhbCwgYS0+b2Jfc3ZhbCwgUHlfU0laRShhKSk7CiAgICAgICAgIGkgPSBQeV9TSVpFKGEpOwogICAgIH0KICAgICB3aGlsZSAoaSA8IHNpemUpIHsKICAgICAgICAgaiA9IChpIDw9IHNpemUtaSkgID8gIGkgIDogIHNpemUtaTsKLSAgICAgICAgUHlfTUVNQ1BZKG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKKyAgICAgICAgbWVtY3B5KG9wLT5vYl9zdmFsK2ksIG9wLT5vYl9zdmFsLCBqKTsKICAgICAgICAgaSArPSBqOwogICAgIH0KICAgICByZXR1cm4gKFB5T2JqZWN0ICopIG9wOwpAQCAtMTM2MywyNCArMTQ4Nyw3IEBACiBzdGF0aWMgaW50CiBieXRlc19jb250YWlucyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGl2YWwgPSBQeU51bWJlcl9Bc1NzaXplX3QoYXJnLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICBpZiAoaXZhbCA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2YXJnOwotICAgICAgICBQeV9zc2l6ZV90IHBvczsKLSAgICAgICAgUHlFcnJfQ2xlYXIoKTsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihhcmcsICZ2YXJnLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIHBvcyA9IHN0cmluZ2xpYl9maW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeV9TSVpFKHNlbGYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJnLmJ1ZiwgdmFyZy5sZW4sIDApOwotICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2YXJnKTsKLSAgICAgICAgcmV0dXJuIHBvcyA+PSAwOwotICAgIH0KLSAgICBpZiAoaXZhbCA8IDAgfHwgaXZhbCA+PSAyNTYpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsICJieXRlIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotCi0gICAgcmV0dXJuIG1lbWNocihQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgKGludCkgaXZhbCwgUHlfU0laRShzZWxmKSkgIT0gTlVMTDsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvbnRhaW5zKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmcpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtMTM5Myw3ICsxNTAwLDcgQEAKICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nKCh1bnNpZ25lZCBjaGFyKWEtPm9iX3N2YWxbaV0pOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBieXRlc19jb21wYXJlX2VxKFB5Qnl0ZXNPYmplY3QgKmEsIFB5Qnl0ZXNPYmplY3QgKmIpCiB7CiAgICAgaW50IGNtcDsKQEAgLTE2MjcsOCArMTczNCw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD04YmRlNDRkYWNiMzZlZjJlIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01MjEyNmI1ODQ0YzFkOGVmIGlucHV0PThiODA5YjM5MDc0YWJiZmFdKi8KIHsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIG47CiAgICAgY29uc3QgY2hhciAqcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCAqc3ViOwpAQCAtMTY1Miw3ICsxNzU5LDYgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIGJ5dGVzLnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjY4LDcgKzE3NzQsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcGFydGl0aW9uX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpzZXApCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD1iYzg1NWRjNjNjYTk0OWRlXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZjUzMmIzOTJhMTdmZjY5NSBpbnB1dD02MWNjYTk1NTE5NDA2MDk5XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9wYXJ0aXRpb24oCiAgICAgICAgIChQeU9iamVjdCopIHNlbGYsCkBAIC0xNjgwLDcgKzE3ODYsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnBhcnRpdGlvbgogCi0gICAgc2VsZjogc2VsZih0eXBlPSJQeUJ5dGVzT2JqZWN0ICoiKQogICAgIHNlcDogUHlfYnVmZmVyCiAgICAgLwogCkBAIC0xNjk2LDcgKzE4MDEsNyBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5X2J1ZmZlciAqc2VwKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjU4OGZmZjI2MmE5MTcwZV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTE5MWIxMTRjYmIwMjhlNTAgaW5wdXQ9NjdmNjg5ZTYzYTYyZDQ3OF0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfcnBhcnRpdGlvbigKICAgICAgICAgKFB5T2JqZWN0Kikgc2VsZiwKQEAgLTE3MTQsOCArMTgxOSw4IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MGI2NTcwYjk3NzkxMWQ4OCBpbnB1dD0wZjg2YzlmMjhmN2Q3YjdiXSovCitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJhNjk4ZDllYTAxZTFjOGYgaW5wdXQ9MGY4NmM5ZjI4ZjdkN2I3Yl0qLwogewogICAgIFB5X3NzaXplX3QgbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKSwgbjsKICAgICBjb25zdCBjaGFyICpzID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7CkBAIC0xNzUzLDggKzE4NTgsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfam9pbihQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICppdGVyYWJsZV9vZl9ieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD02MzRhZmYxNDc2NGZmOTk3IGlucHV0PTdmZTM3N2I5NWJkNTQ5ZDJdKi8KK2J5dGVzX2pvaW4oUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKml0ZXJhYmxlX29mX2J5dGVzKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWEwNDZmMzc5ZjYyNmY2ZjggaW5wdXQ9N2ZlMzc3Yjk1YmQ1NDlkMl0qLwogewogICAgIHJldHVybiBzdHJpbmdsaWJfYnl0ZXNfam9pbigoUHlPYmplY3QqKXNlbGYsIGl0ZXJhYmxlX29mX2J5dGVzKTsKIH0KQEAgLTE3NjcsMTU4ICsxODcyLDMwIEBACiAgICAgcmV0dXJuIGJ5dGVzX2pvaW4oKFB5Qnl0ZXNPYmplY3QqKXNlcCwgeCk7CiB9CiAKLS8qIGhlbHBlciBtYWNybyB0byBmaXh1cCBzdGFydC9lbmQgc2xpY2UgdmFsdWVzICovCi0jZGVmaW5lIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbikgICAgICAgICBcCi0gICAgaWYgKGVuZCA+IGxlbikgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgZW5kID0gbGVuOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGVsc2UgaWYgKGVuZCA8IDApIHsgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIGVuZCArPSBsZW47ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKGVuZCA8IDApICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBlbmQgPSAwOyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlmIChzdGFydCA8IDApIHsgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgIHN0YXJ0ICs9IGxlbjsgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgaWYgKHN0YXJ0IDwgMCkgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICBzdGFydCA9IDA7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9Ci0KLVB5X0xPQ0FMX0lOTElORShQeV9zc2l6ZV90KQotYnl0ZXNfZmluZF9pbnRlcm5hbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgaW50IGRpcikKLXsKLSAgICBQeU9iamVjdCAqc3Vib2JqOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9idWZmZXIgc3ViYnVmOwotICAgIGNvbnN0IGNoYXIgKnN1YjsKLSAgICBQeV9zc2l6ZV90IGxlbiwgc3ViX2xlbjsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0PTAsIGVuZD1QWV9TU0laRV9UX01BWDsKLSAgICBQeV9zc2l6ZV90IHJlczsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfYnl0ZSgiZmluZC9yZmluZC9pbmRleC9yaW5kZXgiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCAmc3Vib2JqLCAmYnl0ZSwgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgaWYgKHN1Ym9iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Ym9iaiwgJnN1YmJ1ZiwgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0yOwotCi0gICAgICAgIHN1YiA9IHN1YmJ1Zi5idWY7Ci0gICAgICAgIHN1Yl9sZW4gPSBzdWJidWYubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLSAgICBsZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLSAgICBpZiAoZW5kIC0gc3RhcnQgPCBzdWJfbGVuKQotICAgICAgICByZXMgPSAtMTsKLSAgICBlbHNlIGlmIChzdWJfbGVuID09IDEKLSNpZm5kZWYgSEFWRV9NRU1SQ0hSCi0gICAgICAgICAgICAmJiBkaXIgPiAwCi0jZW5kaWYKLSAgICApIHsKLSAgICAgICAgdW5zaWduZWQgY2hhciBuZWVkbGUgPSAqc3ViOwotICAgICAgICBpbnQgbW9kZSA9IChkaXIgPiAwKSA/IEZBU1RfU0VBUkNIIDogRkFTVF9SU0VBUkNIOwotICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmFzdHNlYXJjaF9tZW1jaHJfMWNoYXIoCi0gICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSArIHN0YXJ0LCBlbmQgLSBzdGFydCwKLSAgICAgICAgICAgIG5lZWRsZSwgbmVlZGxlLCBtb2RlKTsKLSAgICAgICAgaWYgKHJlcyA+PSAwKQotICAgICAgICAgICAgcmVzICs9IHN0YXJ0OwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKGRpciA+IDApCi0gICAgICAgICAgICByZXMgPSBzdHJpbmdsaWJfZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICAgIHJlcyA9IHN0cmluZ2xpYl9yZmluZF9zbGljZSgKLSAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwgbGVuLAotICAgICAgICAgICAgICAgIHN1Yiwgc3ViX2xlbiwgc3RhcnQsIGVuZCk7Ci0gICAgfQotCi0gICAgaWYgKHN1Ym9iaikKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViYnVmKTsKLQotICAgIHJldHVybiByZXM7Ci19Ci0KLQotUHlEb2NfU1RSVkFSKGZpbmRfX2RvY19fLAotIkIuZmluZChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBsb3dlc3QgaW5kZXggaW4gQiB3aGVyZSBzdWJzdHJpbmcgc3ViIGlzIGZvdW5kLFxuXAotc3VjaCB0aGF0IHN1YiBpcyBjb250YWluZWQgd2l0aGluIEJbc3RhcnQ6ZW5kXS4gIE9wdGlvbmFsXG5cCi1hcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWQgYXMgaW4gc2xpY2Ugbm90YXRpb24uXG5cCi1cblwKLVJldHVybiAtMSBvbiBmYWlsdXJlLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgKzEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2ZpbmQoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCi0KLVB5RG9jX1NUUlZBUihpbmRleF9fZG9jX18sCi0iQi5pbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLmZpbmQoKSBidXQgcmFpc2UgVmFsdWVFcnJvciB3aGVuIHRoZSBzdWJzdHJpbmcgaXMgbm90IGZvdW5kLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfaW5kZXgoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlfc3NpemVfdCByZXN1bHQgPSBieXRlc19maW5kX2ludGVybmFsKHNlbGYsIGFyZ3MsICsxKTsKLSAgICBpZiAocmVzdWx0ID09IC0yKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAocmVzdWx0ID09IC0xKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgInN1YnN0cmluZyBub3QgZm91bmQiKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2luZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmZpbmRfX2RvY19fLAotIkIucmZpbmQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCi1cblwKLVJldHVybiB0aGUgaGlnaGVzdCBpbmRleCBpbiBCIHdoZXJlIHN1YnN0cmluZyBzdWIgaXMgZm91bmQsXG5cCi1zdWNoIHRoYXQgc3ViIGlzIGNvbnRhaW5lZCB3aXRoaW4gQltzdGFydDplbmRdLiAgT3B0aW9uYWxcblwKLWFyZ3VtZW50cyBzdGFydCBhbmQgZW5kIGFyZSBpbnRlcnByZXRlZCBhcyBpbiBzbGljZSBub3RhdGlvbi5cblwKLVxuXAotUmV0dXJuIC0xIG9uIGZhaWx1cmUuIik7Ci0KIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlc19yZmluZChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeUxvbmdfRnJvbVNzaXplX3QocmVzdWx0KTsKKyAgICByZXR1cm4gX1B5X2J5dGVzX3JmaW5kKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCi1QeURvY19TVFJWQVIocmluZGV4X19kb2NfXywKLSJCLnJpbmRleChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotTGlrZSBCLnJmaW5kKCkgYnV0IHJhaXNlIFZhbHVlRXJyb3Igd2hlbiB0aGUgc3Vic3RyaW5nIGlzIG5vdCBmb3VuZC4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JpbmRleChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdCA9IGJ5dGVzX2ZpbmRfaW50ZXJuYWwoc2VsZiwgYXJncywgLTEpOwotICAgIGlmIChyZXN1bHQgPT0gLTIpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChyZXN1bHQgPT0gLTEpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAic3Vic3RyaW5nIG5vdCBmb3VuZCIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tU3NpemVfdChyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfcmluZGV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCkBAIC0yMDA1LDcgKzE5ODIsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMuc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAxNiw3ICsxOTkyLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3N0cmlwX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmJ5dGVzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9MzdkYWE1ZmFkMTM5NWQ5NV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWM3YzIyOGQzYmQxMDRhMWIgaW5wdXQ9OGEzNTQ2NDBlNGUwYjNlZl0qLwogewogICAgIHJldHVybiBkb19hcmdzdHJpcChzZWxmLCBCT1RIU1RSSVAsIGJ5dGVzKTsKIH0KQEAgLTIwMjQsNyArMjAwMCw2IEBACiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy5sc3RyaXAKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICBieXRlczogb2JqZWN0ID0gTm9uZQogICAgIC8KIApAQCAtMjAzNSw3ICsyMDEwLDcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2xzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTg4ODExYjA5ZGZiYzI5ODhdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0yODYwMmU1ODZmNTI0ZTgyIGlucHV0PTliYWZmNDM5OGMzZjY4NTddKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgTEVGVFNUUklQLCBieXRlcyk7CiB9CkBAIC0yMDQzLDcgKzIwMTgsNiBAQAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucnN0cmlwCiAKLSAgICBzZWxmOiBzZWxmKHR5cGU9IlB5Qnl0ZXNPYmplY3QgKiIpCiAgICAgYnl0ZXM6IG9iamVjdCA9IE5vbmUKICAgICAvCiAKQEAgLTIwNTQsODEgKzIwMjgsMzcgQEAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX3JzdHJpcF9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpieXRlcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PThmOTNjOWNkMzYxZjAxNDBdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD01NDdlMzgxNWM5NTQ0N2RhIGlucHV0PWI3OGFmNDQ1YzcyN2UzMmJdKi8KIHsKICAgICByZXR1cm4gZG9fYXJnc3RyaXAoc2VsZiwgUklHSFRTVFJJUCwgYnl0ZXMpOwogfQogCiAKLVB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCi0iQi5jb3VudChzdWJbLCBzdGFydFssIGVuZF1dKSAtPiBpbnRcblwKLVxuXAotUmV0dXJuIHRoZSBudW1iZXIgb2Ygbm9uLW92ZXJsYXBwaW5nIG9jY3VycmVuY2VzIG9mIHN1YnN0cmluZyBzdWIgaW5cblwKLXN0cmluZyBCW3N0YXJ0OmVuZF0uICBPcHRpb25hbCBhcmd1bWVudHMgc3RhcnQgYW5kIGVuZCBhcmUgaW50ZXJwcmV0ZWRcblwKLWFzIGluIHNsaWNlIG5vdGF0aW9uLiIpOwotCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfY291bnQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7Ci0gICAgUHlPYmplY3QgKnN1Yl9vYmo7Ci0gICAgY29uc3QgY2hhciAqc3RyID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZiksICpzdWI7Ci0gICAgUHlfc3NpemVfdCBzdWJfbGVuOwotICAgIGNoYXIgYnl0ZTsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMCwgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0KLSAgICBQeV9idWZmZXIgdnN1YjsKLSAgICBQeU9iamVjdCAqY291bnRfb2JqOwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kc19ieXRlKCJjb3VudCIsIGFyZ3MsICZzdWJfb2JqLCAmYnl0ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBpZiAoc3ViX29iaikgewotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHN1Yl9vYmosICZ2c3ViLCBQeUJVRl9TSU1QTEUpICE9IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBzdWIgPSB2c3ViLmJ1ZjsKLSAgICAgICAgc3ViX2xlbiA9IHZzdWIubGVuOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgc3ViID0gJmJ5dGU7Ci0gICAgICAgIHN1Yl9sZW4gPSAxOwotICAgIH0KLQotICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotCi0gICAgY291bnRfb2JqID0gUHlMb25nX0Zyb21Tc2l6ZV90KAotICAgICAgICBzdHJpbmdsaWJfY291bnQoc3RyICsgc3RhcnQsIGVuZCAtIHN0YXJ0LCBzdWIsIHN1Yl9sZW4sIFBZX1NTSVpFX1RfTUFYKQotICAgICAgICApOwotCi0gICAgaWYgKHN1Yl9vYmopCi0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZzdWIpOwotCi0gICAgcmV0dXJuIGNvdW50X29iajsKKyAgICByZXR1cm4gX1B5X2J5dGVzX2NvdW50KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAogCiAvKltjbGluaWMgaW5wdXRdCiBieXRlcy50cmFuc2xhdGUKIAotICAgIHNlbGY6IHNlbGYodHlwZT0iUHlCeXRlc09iamVjdCAqIikKICAgICB0YWJsZTogb2JqZWN0CiAgICAgICAgIFRyYW5zbGF0aW9uIHRhYmxlLCB3aGljaCBtdXN0IGJlIGEgYnl0ZXMgb2JqZWN0IG9mIGxlbmd0aCAyNTYuCi0gICAgWwotICAgIGRlbGV0ZWNoYXJzOiBvYmplY3QKLSAgICBdCiAgICAgLworICAgIGRlbGV0ZSBhcyBkZWxldGVjaGFyczogb2JqZWN0KGNfZGVmYXVsdD0iTlVMTCIpID0gYicnCiAKIFJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLgogCi1BbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLgorQWxsIGNoYXJhY3RlcnMgb2NjdXJyaW5nIGluIHRoZSBvcHRpb25hbCBhcmd1bWVudCBkZWxldGUgYXJlIHJlbW92ZWQuCiBUaGUgcmVtYWluaW5nIGNoYXJhY3RlcnMgYXJlIG1hcHBlZCB0aHJvdWdoIHRoZSBnaXZlbiB0cmFuc2xhdGlvbiB0YWJsZS4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwgaW50IGdyb3VwX3JpZ2h0XzEsCitieXRlc190cmFuc2xhdGVfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqdGFibGUsCiAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MjMzZGY4NTBlYjUwYmY4ZCBpbnB1dD1kOGZhNTUxOWQ3Y2M0YmU3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDNiZTM0MzdmMTk1NjIxMSBpbnB1dD0wZWNkZjE1OWY2NTQyMzNjXSovCiB7CiAgICAgY2hhciAqaW5wdXQsICpvdXRwdXQ7CiAgICAgUHlfYnVmZmVyIHRhYmxlX3ZpZXcgPSB7TlVMTCwgTlVMTH07CkBAIC0yMTg5LDcgKzIxMTksNyBAQAogICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ0YWJsZV92aWV3KTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIG91dHB1dF9zdGFydCA9IG91dHB1dCA9IFB5Qnl0ZXNfQXNTdHJpbmcocmVzdWx0KTsKKyAgICBvdXRwdXRfc3RhcnQgPSBvdXRwdXQgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwogICAgIGlucHV0ID0gUHlCeXRlc19BU19TVFJJTkcoaW5wdXRfb2JqKTsKIAogICAgIGlmIChkZWxsZW4gPT0gMCAmJiB0YWJsZV9jaGFycyAhPSBOVUxMKSB7CkBAIC0yMjY1LDQ5OCArMjE5NSw2IEBACiAgICAgcmV0dXJuIF9QeV9ieXRlc19tYWtldHJhbnMoZnJtLCB0byk7CiB9CiAKLS8qIGZpbmQgYW5kIGNvdW50IGNoYXJhY3RlcnMgYW5kIHN1YnN0cmluZ3MgKi8KLQotI2RlZmluZSBmaW5kY2hhcih0YXJnZXQsIHRhcmdldF9sZW4sIGMpICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgKChjaGFyICopbWVtY2hyKChjb25zdCB2b2lkICopKHRhcmdldCksIGMsIHRhcmdldF9sZW4pKQotCi0vKiBTdHJpbmcgb3BzIG11c3QgcmV0dXJuIGEgc3RyaW5nLiAgKi8KLS8qIElmIHRoZSBvYmplY3QgaXMgc3ViY2xhc3Mgb2Ygc3RyaW5nLCBjcmVhdGUgYSBjb3B5ICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXR1cm5fc2VsZihQeUJ5dGVzT2JqZWN0ICpzZWxmKQotewotICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3Qoc2VsZikpIHsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gc2VsZjsKLSAgICB9Ci0gICAgcmV0dXJuIChQeUJ5dGVzT2JqZWN0ICopUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZSgKLSAgICAgICAgUHlCeXRlc19BU19TVFJJTkcoc2VsZiksCi0gICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikpOwotfQotCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWNvdW50Y2hhcihjb25zdCBjaGFyICp0YXJnZXQsIFB5X3NzaXplX3QgdGFyZ2V0X2xlbiwgY2hhciBjLCBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIFB5X3NzaXplX3QgY291bnQ9MDsKLSAgICBjb25zdCBjaGFyICpzdGFydD10YXJnZXQ7Ci0gICAgY29uc3QgY2hhciAqZW5kPXRhcmdldCt0YXJnZXRfbGVuOwotCi0gICAgd2hpbGUgKCAoc3RhcnQ9ZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgYykpICE9IE5VTEwgKSB7Ci0gICAgICAgIGNvdW50Kys7Ci0gICAgICAgIGlmIChjb3VudCA+PSBtYXhjb3VudCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdGFydCArPSAxOwotICAgIH0KLSAgICByZXR1cm4gY291bnQ7Ci19Ci0KLQotLyogQWxnb3JpdGhtcyBmb3IgZGlmZmVyZW50IGNhc2VzIG9mIHN0cmluZyByZXBsYWNlbWVudCAqLwotCi0vKiBsZW4oc2VsZik+PTEsIGZyb209IiIsIGxlbih0byk+PTEsIG1heGNvdW50Pj0xICovCi1QeV9MT0NBTChQeUJ5dGVzT2JqZWN0ICopCi1yZXBsYWNlX2ludGVybGVhdmUoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGNoYXIgKnNlbGZfcywgKnJlc3VsdF9zOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgaTsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICAvKiAxIGF0IHRoZSBlbmQgcGx1cyAxIGFmdGVyIGV2ZXJ5IGNoYXJhY3RlcjsKLSAgICAgICBjb3VudCA9IG1pbihtYXhjb3VudCwgc2VsZl9sZW4gKyAxKSAqLwotICAgIGlmIChtYXhjb3VudCA8PSBzZWxmX2xlbikKLSAgICAgICAgY291bnQgPSBtYXhjb3VudDsKLSAgICBlbHNlCi0gICAgICAgIC8qIENhbid0IG92ZXJmbG93OiBzZWxmX2xlbiArIDEgPD0gbWF4Y291bnQgPD0gUFlfU1NJWkVfVF9NQVguICovCi0gICAgICAgIGNvdW50ID0gc2VsZl9sZW4gKyAxOwotCi0gICAgLyogQ2hlY2sgZm9yIG92ZXJmbG93ICovCi0gICAgLyogICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gc2VsZl9sZW4pIC8gY291bnQpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmVwbGFjZW1lbnQgYnl0ZXMgYXJlIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICByZXN1bHRfbGVuID0gY291bnQgKiB0b19sZW4gKyBzZWxmX2xlbjsKLQotICAgIGlmICghIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIC8qIFRPRE86IHNwZWNpYWwgY2FzZSBzaW5nbGUgY2hhcmFjdGVyLCB3aGljaCBkb2Vzbid0IG5lZWQgbWVtY3B5ICovCi0KLSAgICAvKiBMYXkgdGhlIGZpcnN0IG9uZSBkb3duIChndWFyYW50ZWVkIHRoaXMgd2lsbCBvY2N1cikgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgcmVzdWx0X3MgKz0gdG9fbGVuOwotICAgIGNvdW50IC09IDE7Ci0KLSAgICBmb3IgKGk9MDsgaTxjb3VudDsgaSsrKSB7Ci0gICAgICAgICpyZXN1bHRfcysrID0gKnNlbGZfcysrOwotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICB9Ci0KLSAgICAvKiBDb3B5IHRoZSByZXN0IG9mIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHNlbGZfcywgc2VsZl9sZW4taSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBTcGVjaWFsIGNhc2UgZm9yIGRlbGV0aW5nIGEgc2luZ2xlIGNoYXJhY3RlciAqLwotLyogbGVuKHNlbGYpPj0xLCBsZW4oZnJvbSk9PTEsIHRvPSIiLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9kZWxldGVfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGZyb21fYywgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gY291bnRjaGFyKHNlbGZfcywgc2VsZl9sZW4sIGZyb21fYywgbWF4Y291bnQpOwotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSBjb3VudDsgIC8qIGZyb21fbGVuID09IDEgKi8KLSAgICBhc3NlcnQocmVzdWx0X2xlbj49MCk7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgc3RhcnQgPSBuZXh0KzE7Ci0gICAgfQotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgdG89IiIsIG1heGNvdW50Pj0xICovCi0KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2VfZGVsZXRlX3N1YnN0cmluZyhQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heGNvdW50KSB7Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudCwgb2Zmc2V0OwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLQotICAgIGNvdW50ID0gc3RyaW5nbGliX2NvdW50KHNlbGZfcywgc2VsZl9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9zLCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0KLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICByZXN1bHRfbGVuID0gc2VsZl9sZW4gLSAoY291bnQgKiBmcm9tX2xlbik7Ci0gICAgYXNzZXJ0IChyZXN1bHRfbGVuPj0wKTsKLQotICAgIGlmICggKHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopCi0gICAgICAgICAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCByZXN1bHRfbGVuKSkgPT0gTlVMTCApCi0gICAgICAgIHJldHVybiBOVUxMOwotCi0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotCi0gICAgc3RhcnQgPSBzZWxmX3M7Ci0gICAgZW5kID0gc2VsZl9zICsgc2VsZl9sZW47Ci0gICAgd2hpbGUgKGNvdW50LS0gPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0ID09IC0xKQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIG5leHQgPSBzdGFydCArIG9mZnNldDsKLQotICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLQotICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCtmcm9tX2xlbjsKLSAgICB9Ci0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09bGVuKHRvKT09MSwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3Rlcl9pbl9wbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLCBjaGFyIHRvX2MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kLCAqbmV4dDsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuOwotICAgIFB5Qnl0ZXNPYmplY3QgKnJlc3VsdDsKLQotICAgIC8qIFRoZSByZXN1bHQgc3RyaW5nIHdpbGwgYmUgdGhlIHNhbWUgc2l6ZSAqLwotICAgIHNlbGZfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotICAgIHNlbGZfbGVuID0gUHlCeXRlc19HRVRfU0laRShzZWxmKTsKLQotICAgIG5leHQgPSBmaW5kY2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MpOwotCi0gICAgaWYgKG5leHQgPT0gTlVMTCkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgKG5leHQtc2VsZl9zKTsKLSAgICAqc3RhcnQgPSB0b19jOwotICAgIHN0YXJ0Kys7Ci0gICAgZW5kID0gcmVzdWx0X3MgKyBzZWxmX2xlbjsKLQotICAgIHdoaWxlICgtLW1heGNvdW50ID4gMCkgewotICAgICAgICBuZXh0ID0gZmluZGNoYXIoc3RhcnQsIGVuZC1zdGFydCwgZnJvbV9jKTsKLSAgICAgICAgaWYgKG5leHQgPT0gTlVMTCkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAqbmV4dCA9IHRvX2M7Ci0gICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLS8qIGxlbihzZWxmKT49MSwgbGVuKGZyb20pPT1sZW4odG8pPj0yLCBtYXhjb3VudD49MSAqLwotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZV9zdWJzdHJpbmdfaW5fcGxhY2UoUHlCeXRlc09iamVjdCAqc2VsZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBtYXhjb3VudCkKLXsKLSAgICBjaGFyICpyZXN1bHRfcywgKnN0YXJ0LCAqZW5kOwotICAgIGNoYXIgKnNlbGZfczsKLSAgICBQeV9zc2l6ZV90IHNlbGZfbGVuLCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgLyogVGhlIHJlc3VsdCBzdHJpbmcgd2lsbCBiZSB0aGUgc2FtZSBzaXplICovCi0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzZWxmX3MsIHNlbGZfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMCk7Ci0gICAgaWYgKG9mZnNldCA9PSAtMSkgewotICAgICAgICAvKiBObyBtYXRjaGVzOyByZXR1cm4gdGhlIG9yaWdpbmFsIHN0cmluZyAqLwotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgLyogTmVlZCB0byBtYWtlIGEgbmV3IHN0cmluZyAqLwotICAgIHJlc3VsdCA9IChQeUJ5dGVzT2JqZWN0ICopIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2VsZl9sZW4pOwotICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0X3MgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXN1bHQpOwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc2VsZl9zLCBzZWxmX2xlbik7Ci0KLSAgICAvKiBjaGFuZ2UgZXZlcnl0aGluZyBpbi1wbGFjZSwgc3RhcnRpbmcgd2l0aCB0aGlzIG9uZSAqLwotICAgIHN0YXJ0ID0gIHJlc3VsdF9zICsgb2Zmc2V0OwotICAgIFB5X01FTUNQWShzdGFydCwgdG9fcywgZnJvbV9sZW4pOwotICAgIHN0YXJ0ICs9IGZyb21fbGVuOwotICAgIGVuZCA9IHJlc3VsdF9zICsgc2VsZl9sZW47Ci0KLSAgICB3aGlsZSAoIC0tbWF4Y291bnQgPiAwKSB7Ci0gICAgICAgIG9mZnNldCA9IHN0cmluZ2xpYl9maW5kKHN0YXJ0LCBlbmQtc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb21fcywgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDApOwotICAgICAgICBpZiAob2Zmc2V0PT0tMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBQeV9NRU1DUFkoc3RhcnQrb2Zmc2V0LCB0b19zLCBmcm9tX2xlbik7Ci0gICAgICAgIHN0YXJ0ICs9IG9mZnNldCtmcm9tX2xlbjsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT09MSwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc2luZ2xlX2NoYXJhY3RlcihQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgZnJvbV9jLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnRvX3MsIFB5X3NzaXplX3QgdG9fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCi17Ci0gICAgY2hhciAqc2VsZl9zLCAqcmVzdWx0X3M7Ci0gICAgY2hhciAqc3RhcnQsICpuZXh0LCAqZW5kOwotICAgIFB5X3NzaXplX3Qgc2VsZl9sZW4sIHJlc3VsdF9sZW47Ci0gICAgUHlfc3NpemVfdCBjb3VudDsKLSAgICBQeUJ5dGVzT2JqZWN0ICpyZXN1bHQ7Ci0KLSAgICBzZWxmX3MgPSBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKTsKLSAgICBzZWxmX2xlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0KLSAgICBjb3VudCA9IGNvdW50Y2hhcihzZWxmX3MsIHNlbGZfbGVuLCBmcm9tX2MsIG1heGNvdW50KTsKLSAgICBpZiAoY291bnQgPT0gMCkgewotICAgICAgICAvKiBubyBtYXRjaGVzLCByZXR1cm4gdW5jaGFuZ2VkICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICAvKiB1c2UgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiBjdXJyZW50IGFuZCBuZXcsIGhlbmNlIHRoZSAiLTEiICovCi0gICAgLyogICByZXN1bHRfbGVuID0gc2VsZl9sZW4gKyBjb3VudCAqICh0b19sZW4tMSkgICovCi0gICAgYXNzZXJ0KGNvdW50ID4gMCk7Ci0gICAgaWYgKHRvX2xlbiAtIDEgPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbiAtIDEpOwotCi0gICAgaWYgKCAocmVzdWx0ID0gKFB5Qnl0ZXNPYmplY3QgKikKLSAgICAgICAgICBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHJlc3VsdF9sZW4pKSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXN1bHRfcyA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlc3VsdCk7Ci0KLSAgICBzdGFydCA9IHNlbGZfczsKLSAgICBlbmQgPSBzZWxmX3MgKyBzZWxmX2xlbjsKLSAgICB3aGlsZSAoY291bnQtLSA+IDApIHsKLSAgICAgICAgbmV4dCA9IGZpbmRjaGFyKHN0YXJ0LCBlbmQtc3RhcnQsIGZyb21fYyk7Ci0gICAgICAgIGlmIChuZXh0ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSAxOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogY29weSB0aGUgdW5jaGFuZ2VkIG9sZCB0aGVuIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHN0YXJ0LCBuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IChuZXh0LXN0YXJ0KTsKLSAgICAgICAgICAgIFB5X01FTUNQWShyZXN1bHRfcywgdG9fcywgdG9fbGVuKTsKLSAgICAgICAgICAgIHJlc3VsdF9zICs9IHRvX2xlbjsKLSAgICAgICAgICAgIHN0YXJ0ID0gbmV4dCsxOwotICAgICAgICB9Ci0gICAgfQotICAgIC8qIENvcHkgdGhlIHJlbWFpbmRlciBvZiB0aGUgcmVtYWluaW5nIHN0cmluZyAqLwotICAgIFB5X01FTUNQWShyZXN1bHRfcywgc3RhcnQsIGVuZC1zdGFydCk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQotCi0vKiBsZW4oc2VsZik+PTEsIGxlbihmcm9tKT49MiwgbGVuKHRvKT49MiwgbWF4Y291bnQ+PTEgKi8KLVB5X0xPQ0FMKFB5Qnl0ZXNPYmplY3QgKikKLXJlcGxhY2Vfc3Vic3RyaW5nKFB5Qnl0ZXNPYmplY3QgKnNlbGYsCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpmcm9tX3MsIFB5X3NzaXplX3QgZnJvbV9sZW4sCi0gICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpIHsKLSAgICBjaGFyICpzZWxmX3MsICpyZXN1bHRfczsKLSAgICBjaGFyICpzdGFydCwgKm5leHQsICplbmQ7Ci0gICAgUHlfc3NpemVfdCBzZWxmX2xlbiwgcmVzdWx0X2xlbjsKLSAgICBQeV9zc2l6ZV90IGNvdW50LCBvZmZzZXQ7Ci0gICAgUHlCeXRlc09iamVjdCAqcmVzdWx0OwotCi0gICAgc2VsZl9zID0gUHlCeXRlc19BU19TVFJJTkcoc2VsZik7Ci0gICAgc2VsZl9sZW4gPSBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpOwotCi0gICAgY291bnQgPSBzdHJpbmdsaWJfY291bnQoc2VsZl9zLCBzZWxmX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLQotICAgIGlmIChjb3VudCA9PSAwKSB7Ci0gICAgICAgIC8qIG5vIG1hdGNoZXMsIHJldHVybiB1bmNoYW5nZWQgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIENoZWNrIGZvciBvdmVyZmxvdyAqLwotICAgIC8qICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbikgKi8KLSAgICBhc3NlcnQoY291bnQgPiAwKTsKLSAgICBpZiAodG9fbGVuIC0gZnJvbV9sZW4gPiAoUFlfU1NJWkVfVF9NQVggLSBzZWxmX2xlbikgLyBjb3VudCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJyZXBsYWNlbWVudCBieXRlcyBhcmUgdG9vIGxvbmciKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdF9sZW4gPSBzZWxmX2xlbiArIGNvdW50ICogKHRvX2xlbi1mcm9tX2xlbik7Ci0KLSAgICBpZiAoIChyZXN1bHQgPSAoUHlCeXRlc09iamVjdCAqKQotICAgICAgICAgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgcmVzdWx0X2xlbikpID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHJlc3VsdF9zID0gUHlCeXRlc19BU19TVFJJTkcocmVzdWx0KTsKLQotICAgIHN0YXJ0ID0gc2VsZl9zOwotICAgIGVuZCA9IHNlbGZfcyArIHNlbGZfbGVuOwotICAgIHdoaWxlIChjb3VudC0tID4gMCkgewotICAgICAgICBvZmZzZXQgPSBzdHJpbmdsaWJfZmluZChzdGFydCwgZW5kLXN0YXJ0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmcm9tX3MsIGZyb21fbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwKTsKLSAgICAgICAgaWYgKG9mZnNldCA9PSAtMSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBuZXh0ID0gc3RhcnQrb2Zmc2V0OwotICAgICAgICBpZiAobmV4dCA9PSBzdGFydCkgewotICAgICAgICAgICAgLyogcmVwbGFjZSB3aXRoIHRoZSAndG8nICovCi0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCArPSBmcm9tX2xlbjsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8qIGNvcHkgdGhlIHVuY2hhbmdlZCBvbGQgdGhlbiB0aGUgJ3RvJyAqLwotICAgICAgICAgICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgbmV4dC1zdGFydCk7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSAobmV4dC1zdGFydCk7Ci0gICAgICAgICAgICBQeV9NRU1DUFkocmVzdWx0X3MsIHRvX3MsIHRvX2xlbik7Ci0gICAgICAgICAgICByZXN1bHRfcyArPSB0b19sZW47Ci0gICAgICAgICAgICBzdGFydCA9IG5leHQrZnJvbV9sZW47Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgLyogQ29weSB0aGUgcmVtYWluZGVyIG9mIHRoZSByZW1haW5pbmcgc3RyaW5nICovCi0gICAgUHlfTUVNQ1BZKHJlc3VsdF9zLCBzdGFydCwgZW5kLXN0YXJ0KTsKLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLQotUHlfTE9DQUwoUHlCeXRlc09iamVjdCAqKQotcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLAotICAgIGNvbnN0IGNoYXIgKmZyb21fcywgUHlfc3NpemVfdCBmcm9tX2xlbiwKLSAgICBjb25zdCBjaGFyICp0b19zLCBQeV9zc2l6ZV90IHRvX2xlbiwKLSAgICBQeV9zc2l6ZV90IG1heGNvdW50KQotewotICAgIGlmIChtYXhjb3VudCA8IDApIHsKLSAgICAgICAgbWF4Y291bnQgPSBQWV9TU0laRV9UX01BWDsKLSAgICB9IGVsc2UgaWYgKG1heGNvdW50ID09IDAgfHwgUHlCeXRlc19HRVRfU0laRShzZWxmKSA9PSAwKSB7Ci0gICAgICAgIC8qIG5vdGhpbmcgdG8gZG87IHJldHVybiB0aGUgb3JpZ2luYWwgc3RyaW5nICovCi0gICAgICAgIHJldHVybiByZXR1cm5fc2VsZihzZWxmKTsKLSAgICB9Ci0KLSAgICBpZiAobWF4Y291bnQgPT0gMCB8fAotICAgICAgICAoZnJvbV9sZW4gPT0gMCAmJiB0b19sZW4gPT0gMCkpIHsKLSAgICAgICAgLyogbm90aGluZyB0byBkbzsgcmV0dXJuIHRoZSBvcmlnaW5hbCBzdHJpbmcgKi8KLSAgICAgICAgcmV0dXJuIHJldHVybl9zZWxmKHNlbGYpOwotICAgIH0KLQotICAgIC8qIEhhbmRsZSB6ZXJvLWxlbmd0aCBzcGVjaWFsIGNhc2VzICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gMCkgewotICAgICAgICAvKiBpbnNlcnQgdGhlICd0bycgc3RyaW5nIGV2ZXJ5d2hlcmUuICAgKi8KLSAgICAgICAgLyogICAgPj4+ICJQeXRob24iLnJlcGxhY2UoIiIsICIuIikgICAgICovCi0gICAgICAgIC8qICAgICcuUC55LnQuaC5vLm4uJyAgICAgICAgICAgICAgICAgICAqLwotICAgICAgICByZXR1cm4gcmVwbGFjZV9pbnRlcmxlYXZlKHNlbGYsIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0KLQotICAgIC8qIEV4Y2VwdCBmb3IgIiIucmVwbGFjZSgiIiwgIkEiKSA9PSAiQSIgdGhlcmUgaXMgbm8gd2F5IGJleW9uZCB0aGlzICovCi0gICAgLyogcG9pbnQgZm9yIGFuIGVtcHR5IHNlbGYgc3RyaW5nIHRvIGdlbmVyYXRlIGEgbm9uLWVtcHR5IHN0cmluZyAqLwotICAgIC8qIFNwZWNpYWwgY2FzZSBzbyB0aGUgcmVtYWluaW5nIGNvZGUgYWx3YXlzIGdldHMgYSBub24tZW1wdHkgc3RyaW5nICovCi0gICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZikgPT0gMCkgewotICAgICAgICByZXR1cm4gcmV0dXJuX3NlbGYoc2VsZik7Ci0gICAgfQotCi0gICAgaWYgKHRvX2xlbiA9PSAwKSB7Ci0gICAgICAgIC8qIGRlbGV0ZSBhbGwgb2NjdXJyZW5jZXMgb2YgJ2Zyb20nIHN0cmluZyAqLwotICAgICAgICBpZiAoZnJvbV9sZW4gPT0gMSkgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2VfZGVsZXRlX3NpbmdsZV9jaGFyYWN0ZXIoCi0gICAgICAgICAgICAgICAgc2VsZiwgZnJvbV9zWzBdLCBtYXhjb3VudCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9kZWxldGVfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbV9sZW4sIG1heGNvdW50KTsKLSAgICAgICAgfQotICAgIH0KLQotICAgIC8qIEhhbmRsZSBzcGVjaWFsIGNhc2Ugd2hlcmUgYm90aCBzdHJpbmdzIGhhdmUgdGhlIHNhbWUgbGVuZ3RoICovCi0KLSAgICBpZiAoZnJvbV9sZW4gPT0gdG9fbGVuKSB7Ci0gICAgICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgICAgICByZXR1cm4gcmVwbGFjZV9zaW5nbGVfY2hhcmFjdGVyX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsCi0gICAgICAgICAgICAgICAgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgIHRvX3NbMF0sCi0gICAgICAgICAgICAgICAgbWF4Y291bnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nX2luX3BsYWNlKAotICAgICAgICAgICAgICAgIHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICBtYXhjb3VudCk7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBPdGhlcndpc2UgdXNlIHRoZSBtb3JlIGdlbmVyaWMgYWxnb3JpdGhtcyAqLwotICAgIGlmIChmcm9tX2xlbiA9PSAxKSB7Ci0gICAgICAgIHJldHVybiByZXBsYWNlX3NpbmdsZV9jaGFyYWN0ZXIoc2VsZiwgZnJvbV9zWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvX3MsIHRvX2xlbiwgbWF4Y291bnQpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGxlbignZnJvbScpPj0yLCBsZW4oJ3RvJyk+PTEgKi8KLSAgICAgICAgcmV0dXJuIHJlcGxhY2Vfc3Vic3RyaW5nKHNlbGYsIGZyb21fcywgZnJvbV9sZW4sIHRvX3MsIHRvX2xlbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGNvdW50KTsKLSAgICB9Ci19Ci0KIAogLypbY2xpbmljIGlucHV0XQogYnl0ZXMucmVwbGFjZQpAQCAtMjc3NSwxNTYgKzIyMTMsMjggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5X2J1ZmZlciAqb2xkLCBQeV9idWZmZXIgKm5ldywKK2J5dGVzX3JlcGxhY2VfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCiAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBjb3VudCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00MDNkYzlkN2E4M2M1YTFkIGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTRmYTU4OGI2YjljMTA0IGlucHV0PWIyZmJiZjBiZjA0ZGU4ZTVdKi8KIHsKLSAgICByZXR1cm4gKFB5T2JqZWN0ICopcmVwbGFjZSgoUHlCeXRlc09iamVjdCAqKSBzZWxmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopbmV3LT5idWYsIG5ldy0+bGVuLCBjb3VudCk7CisgICAgcmV0dXJuIHN0cmluZ2xpYl9yZXBsYWNlKChQeU9iamVjdCAqKXNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopb2xkLT5idWYsIG9sZC0+bGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKW5ldy0+YnVmLCBuZXctPmxlbiwgY291bnQpOwogfQogCiAvKiogRW5kIERBTEtFICoqLwogCi0vKiBNYXRjaGVzIHRoZSBlbmQgKGRpcmVjdGlvbiA+PSAwKSBvciBzdGFydCAoZGlyZWN0aW9uIDwgMCkgb2Ygc2VsZgotICogYWdhaW5zdCBzdWJzdHIsIHVzaW5nIHRoZSBzdGFydCBhbmQgZW5kIGFyZ3VtZW50cy4gUmV0dXJucwotICogLTEgb24gZXJyb3IsIDAgaWYgbm90IGZvdW5kIGFuZCAxIGlmIGZvdW5kLgotICovCi1QeV9MT0NBTChpbnQpCi1fYnl0ZXNfdGFpbG1hdGNoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzdWJzdHIsIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwgaW50IGRpcmVjdGlvbikKLXsKLSAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZik7Ci0gICAgUHlfc3NpemVfdCBzbGVuOwotICAgIFB5X2J1ZmZlciBzdWJfdmlldyA9IHtOVUxMLCBOVUxMfTsKLSAgICBjb25zdCBjaGFyKiBzdWI7Ci0gICAgY29uc3QgY2hhciogc3RyOwotCi0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soc3Vic3RyKSkgewotICAgICAgICBzdWIgPSBQeUJ5dGVzX0FTX1NUUklORyhzdWJzdHIpOwotICAgICAgICBzbGVuID0gUHlCeXRlc19HRVRfU0laRShzdWJzdHIpOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzdWJzdHIsICZzdWJfdmlldywgUHlCVUZfU0lNUExFKSAhPSAwKQotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICBzdWIgPSBzdWJfdmlldy5idWY7Ci0gICAgICAgIHNsZW4gPSBzdWJfdmlldy5sZW47Ci0gICAgfQotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpOwotCi0gICAgQURKVVNUX0lORElDRVMoc3RhcnQsIGVuZCwgbGVuKTsKLQotICAgIGlmIChkaXJlY3Rpb24gPCAwKSB7Ci0gICAgICAgIC8qIHN0YXJ0c3dpdGggKi8KLSAgICAgICAgaWYgKHN0YXJ0K3NsZW4gPiBsZW4pCi0gICAgICAgICAgICBnb3RvIG5vdGZvdW5kOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIGVuZHN3aXRoICovCi0gICAgICAgIGlmIChlbmQtc3RhcnQgPCBzbGVuIHx8IHN0YXJ0ID4gbGVuKQotICAgICAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgICAgICBpZiAoZW5kLXNsZW4gPiBzdGFydCkKLSAgICAgICAgICAgIHN0YXJ0ID0gZW5kIC0gc2xlbjsKLSAgICB9Ci0gICAgaWYgKGVuZC1zdGFydCA8IHNsZW4pCi0gICAgICAgIGdvdG8gbm90Zm91bmQ7Ci0gICAgaWYgKG1lbWNtcChzdHIrc3RhcnQsIHN1Yiwgc2xlbikgIT0gMCkKLSAgICAgICAgZ290byBub3Rmb3VuZDsKLQotICAgIFB5QnVmZmVyX1JlbGVhc2UoJnN1Yl92aWV3KTsKLSAgICByZXR1cm4gMTsKLQotbm90Zm91bmQ6Ci0gICAgUHlCdWZmZXJfUmVsZWFzZSgmc3ViX3ZpZXcpOwotICAgIHJldHVybiAwOwotfQotCi0KLVB5RG9jX1NUUlZBUihzdGFydHN3aXRoX19kb2NfXywKLSJCLnN0YXJ0c3dpdGgocHJlZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIHN0YXJ0cyB3aXRoIHRoZSBzcGVjaWZpZWQgcHJlZml4LCBGYWxzZSBvdGhlcndpc2UuXG5cCi1XaXRoIG9wdGlvbmFsIHN0YXJ0LCB0ZXN0IEIgYmVnaW5uaW5nIGF0IHRoYXQgcG9zaXRpb24uXG5cCi1XaXRoIG9wdGlvbmFsIGVuZCwgc3RvcCBjb21wYXJpbmcgQiBhdCB0aGF0IHBvc2l0aW9uLlxuXAotcHJlZml4IGNhbiBhbHNvIGJlIGEgdHVwbGUgb2YgYnl0ZXMgdG8gdHJ5LiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZXNfc3RhcnRzd2l0aChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKLSAgICBQeV9zc2l6ZV90IGVuZCA9IFBZX1NTSVpFX1RfTUFYOwotICAgIFB5T2JqZWN0ICpzdWJvYmo7Ci0gICAgaW50IHJlc3VsdDsKLQotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHMoInN0YXJ0c3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgYnl0ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvciBhIHR1cGxlIG9mIGJ5dGVzLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKHJlc3VsdCk7CisgICAgcmV0dXJuIF9QeV9ieXRlc19zdGFydHN3aXRoKFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLCBhcmdzKTsKIH0KIAotCi1QeURvY19TVFJWQVIoZW5kc3dpdGhfX2RvY19fLAotIkIuZW5kc3dpdGgoc3VmZml4Wywgc3RhcnRbLCBlbmRdXSkgLT4gYm9vbFxuXAotXG5cCi1SZXR1cm4gVHJ1ZSBpZiBCIGVuZHMgd2l0aCB0aGUgc3BlY2lmaWVkIHN1ZmZpeCwgRmFsc2Ugb3RoZXJ3aXNlLlxuXAotV2l0aCBvcHRpb25hbCBzdGFydCwgdGVzdCBCIGJlZ2lubmluZyBhdCB0aGF0IHBvc2l0aW9uLlxuXAotV2l0aCBvcHRpb25hbCBlbmQsIHN0b3AgY29tcGFyaW5nIEIgYXQgdGhhdCBwb3NpdGlvbi5cblwKLXN1ZmZpeCBjYW4gYWxzbyBiZSBhIHR1cGxlIG9mIGJ5dGVzIHRvIHRyeS4iKTsKLQogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVzX2VuZHN3aXRoKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQogewotICAgIFB5X3NzaXplX3Qgc3RhcnQgPSAwOwotICAgIFB5X3NzaXplX3QgZW5kID0gUFlfU1NJWkVfVF9NQVg7Ci0gICAgUHlPYmplY3QgKnN1Ym9iajsKLSAgICBpbnQgcmVzdWx0OwotCi0gICAgaWYgKCFzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcygiZW5kc3dpdGgiLCBhcmdzLCAmc3Vib2JqLCAmc3RhcnQsICZlbmQpKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlUdXBsZV9DaGVjayhzdWJvYmopKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5VHVwbGVfR0VUX1NJWkUoc3Vib2JqKTsgaSsrKSB7Ci0gICAgICAgICAgICByZXN1bHQgPSBfYnl0ZXNfdGFpbG1hdGNoKHNlbGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0LCBlbmQsICsxKTsKLSAgICAgICAgICAgIGlmIChyZXN1bHQgPT0gLTEpCi0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICBlbHNlIGlmIChyZXN1bHQpIHsKLSAgICAgICAgICAgICAgICBQeV9SRVRVUk5fVFJVRTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBQeV9SRVRVUk5fRkFMU0U7Ci0gICAgfQotICAgIHJlc3VsdCA9IF9ieXRlc190YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIGJ5dGVzIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBieXRlcywgbm90ICVzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOworICAgIHJldHVybiBfUHlfYnl0ZXNfZW5kc3dpdGgoUHlCeXRlc19BU19TVFJJTkcoc2VsZiksIFB5Qnl0ZXNfR0VUX1NJWkUoc2VsZiksIGFyZ3MpOwogfQogCiAKQEAgLTI5NDQsOSArMjI1NCw5IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19kZWNvZGVfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAorYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MmQyMDE2ZmY4ZTBiYjE3NiBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NTY0OWE1M2RkZTI3YjMxNCBpbnB1dD05NTgxNzQ3NjlkMmE0MGNhXSovCiB7CiAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdCgoUHlPYmplY3QqKXNlbGYsIGVuY29kaW5nLCBlcnJvcnMpOwogfQpAQCAtMjk2NCw4ICsyMjc0LDggQEAKIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcykKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD05OTVjMzU5OGY3ODMzY2FkIGlucHV0PTdmNGFhYzY3MTQ0Zjk5NDRdKi8KK2J5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBpbnQga2VlcGVuZHMpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MzQ4NDE0OWE1ZDg4MGZmYiBpbnB1dD03ZjRhYWM2NzE0NGY5OTQ0XSovCiB7CiAgICAgcmV0dXJuIHN0cmluZ2xpYl9zcGxpdGxpbmVzKAogICAgICAgICAoUHlPYmplY3QqKSBzZWxmLCBQeUJ5dGVzX0FTX1NUUklORyhzZWxmKSwKQEAgLTI5NzMsMjIgKzIyODMsNiBAQAogICAgICAgICApOwogfQogCi1zdGF0aWMgaW50Ci1oZXhfZGlnaXRfdG9faW50KFB5X1VDUzQgYykKLXsKLSAgICBpZiAoYyA+PSAxMjgpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoUHlfSVNESUdJVChjKSkKLSAgICAgICAgcmV0dXJuIGMgLSAnMCc7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKGMpKQotICAgICAgICAgICAgYyA9IFB5X1RPTE9XRVIoYyk7Ci0gICAgICAgIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykKLSAgICAgICAgICAgIHJldHVybiBjIC0gJ2EnICsgMTA7Ci0gICAgfQotICAgIHJldHVybiAtMTsKLX0KLQogLypbY2xpbmljIGlucHV0XQogQGNsYXNzbWV0aG9kCiBieXRlcy5mcm9taGV4CkBAIC0zMDA2LDQ3ICsyMzAwLDg4IEBACiBieXRlc19mcm9taGV4X2ltcGwoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqc3RyaW5nKQogLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTA5NzNhY2M2MzY2MWJiMmUgaW5wdXQ9YmY0ZDFjMzYxNjcwYWNkM10qLwogewotICAgIFB5T2JqZWN0ICpuZXdzdHJpbmc7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IF9QeUJ5dGVzX0Zyb21IZXgoc3RyaW5nLCAwKTsKKyAgICBpZiAodHlwZSAhPSAmUHlCeXRlc19UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoKFB5T2JqZWN0ICopdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQsIE5VTEwpKTsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworUHlPYmplY3QqCitfUHlCeXRlc19Gcm9tSGV4KFB5T2JqZWN0ICpzdHJpbmcsIGludCB1c2VfYnl0ZWFycmF5KQorewogICAgIGNoYXIgKmJ1ZjsKLSAgICBQeV9zc2l6ZV90IGhleGxlbiwgYnl0ZXNsZW4sIGksIGo7Ci0gICAgaW50IHRvcCwgYm90OwotICAgIHZvaWQgKmRhdGE7Ci0gICAgdW5zaWduZWQgaW50IGtpbmQ7CisgICAgUHlfc3NpemVfdCBoZXhsZW4sIGludmFsaWRfY2hhcjsKKyAgICB1bnNpZ25lZCBpbnQgdG9wLCBib3Q7CisgICAgUHlfVUNTMSAqc3RyLCAqZW5kOworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgd3JpdGVyLnVzZV9ieXRlYXJyYXkgPSB1c2VfYnl0ZWFycmF5OwogCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVjayhzdHJpbmcpKTsKICAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cmluZykpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORChzdHJpbmcpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQShzdHJpbmcpOwogICAgIGhleGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cmluZyk7CiAKLSAgICBieXRlc2xlbiA9IGhleGxlbi8yOyAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLwotICAgIG5ld3N0cmluZyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgYnl0ZXNsZW4pOwotICAgIGlmICghbmV3c3RyaW5nKQorICAgIGlmICghUHlVbmljb2RlX0lTX0FTQ0lJKHN0cmluZykpIHsKKyAgICAgICAgdm9pZCAqZGF0YSA9IFB5VW5pY29kZV9EQVRBKHN0cmluZyk7CisgICAgICAgIHVuc2lnbmVkIGludCBraW5kID0gUHlVbmljb2RlX0tJTkQoc3RyaW5nKTsKKyAgICAgICAgUHlfc3NpemVfdCBpOworCisgICAgICAgIC8qIHNlYXJjaCBmb3IgdGhlIGZpcnN0IG5vbi1BU0NJSSBjaGFyYWN0ZXIgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGhleGxlbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPj0gMTI4KQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGludmFsaWRfY2hhciA9IGk7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHN0cmluZykgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgIHN0ciA9IFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CisKKyAgICAvKiBUaGlzIG92ZXJlc3RpbWF0ZXMgaWYgdGhlcmUgYXJlIHNwYWNlcyAqLworICAgIGJ1ZiA9IF9QeUJ5dGVzV3JpdGVyX0FsbG9jKCZ3cml0ZXIsIGhleGxlbiAvIDIpOworICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYnVmID0gUHlCeXRlc19BU19TVFJJTkcobmV3c3RyaW5nKTsKLSAgICBmb3IgKGkgPSBqID0gMDsgaSA8IGhleGxlbjsgaSArPSAyKSB7CisKKyAgICBlbmQgPSBzdHIgKyBoZXhsZW47CisgICAgd2hpbGUgKHN0ciA8IGVuZCkgewogICAgICAgICAvKiBza2lwIG92ZXIgc3BhY2VzIGluIHRoZSBpbnB1dCAqLwotICAgICAgICB3aGlsZSAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkgPT0gJyAnKQotICAgICAgICAgICAgaSsrOwotICAgICAgICBpZiAoaSA+PSBoZXhsZW4pCi0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgdG9wID0gaGV4X2RpZ2l0X3RvX2ludChQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgIGJvdCA9IGhleF9kaWdpdF90b19pbnQoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSsxKSk7Ci0gICAgICAgIGlmICh0b3AgPT0gLTEgfHwgYm90ID09IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAibm9uLWhleGFkZWNpbWFsIG51bWJlciBmb3VuZCBpbiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaSk7CisgICAgICAgIGlmICgqc3RyID09ICcgJykgeworICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgIHN0cisrOworICAgICAgICAgICAgfSB3aGlsZSAoKnN0ciA9PSAnICcpOworICAgICAgICAgICAgaWYgKHN0ciA+PSBlbmQpCisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3AgPSBfUHlMb25nX0RpZ2l0VmFsdWVbKnN0cl07CisgICAgICAgIGlmICh0b3AgPj0gMTYpIHsKKyAgICAgICAgICAgIGludmFsaWRfY2hhciA9IHN0ciAtIFB5VW5pY29kZV8xQllURV9EQVRBKHN0cmluZyk7CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICB9Ci0gICAgICAgIGJ1ZltqKytdID0gKHRvcCA8PCA0KSArIGJvdDsKKyAgICAgICAgc3RyKys7CisKKyAgICAgICAgYm90ID0gX1B5TG9uZ19EaWdpdFZhbHVlWypzdHJdOworICAgICAgICBpZiAoYm90ID49IDE2KSB7CisgICAgICAgICAgICBpbnZhbGlkX2NoYXIgPSBzdHIgLSBQeVVuaWNvZGVfMUJZVEVfREFUQShzdHJpbmcpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBzdHIrKzsKKworICAgICAgICAqYnVmKysgPSAodW5zaWduZWQgY2hhcikoKHRvcCA8PCA0KSArIGJvdCk7CiAgICAgfQotICAgIGlmIChqICE9IGJ5dGVzbGVuICYmIF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3c3RyaW5nLCBqKSA8IDApCi0gICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmV0dXJuIG5ld3N0cmluZzsKKworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgYnVmKTsKIAogICBlcnJvcjoKLSAgICBQeV9YREVDUkVGKG5ld3N0cmluZyk7CisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICJub24taGV4YWRlY2ltYWwgbnVtYmVyIGZvdW5kIGluICIKKyAgICAgICAgICAgICAgICAgImZyb21oZXgoKSBhcmcgYXQgcG9zaXRpb24gJXpkIiwgaW52YWxpZF9jaGFyKTsKKyAgICBfUHlCeXRlc1dyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQogCkBAIC0zMDc2LDE3ICsyNDExLDIwIEBACiAgICAgeyJfX2dldG5ld2FyZ3NfXyIsICAgICAgICAgIChQeUNGdW5jdGlvbilieXRlc19nZXRuZXdhcmdzLCAgTUVUSF9OT0FSR1N9LAogICAgIHsiY2FwaXRhbGl6ZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfY2FwaXRhbGl6ZSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9jYXBpdGFsaXplX19kb2NfX30sCi0gICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLCBjZW50ZXJfX2RvY19ffSwKLSAgICB7ImNvdW50IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2NvdW50LCBNRVRIX1ZBUkFSR1MsIGNvdW50X19kb2NfX30sCisgICAgeyJjZW50ZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2NlbnRlciwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY2VudGVyX19kb2NfX30sCisgICAgeyJjb3VudCIsIChQeUNGdW5jdGlvbilieXRlc19jb3VudCwgTUVUSF9WQVJBUkdTLAorICAgICBfUHlfY291bnRfX2RvY19ffSwKICAgICBCWVRFU19ERUNPREVfTUVUSE9EREVGCiAgICAgeyJlbmRzd2l0aCIsIChQeUNGdW5jdGlvbilieXRlc19lbmRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBlbmRzd2l0aF9fZG9jX199LAorICAgICBfUHlfZW5kc3dpdGhfX2RvY19ffSwKICAgICB7ImV4cGFuZHRhYnMiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2V4cGFuZHRhYnMsIE1FVEhfVkFSQVJHUyB8IE1FVEhfS0VZV09SRFMsCi0gICAgIGV4cGFuZHRhYnNfX2RvY19ffSwKLSAgICB7ImZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfZmluZCwgTUVUSF9WQVJBUkdTLCBmaW5kX19kb2NfX30sCisgICAgIF9QeV9leHBhbmR0YWJzX19kb2NfX30sCisgICAgeyJmaW5kIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2ZpbmQsIE1FVEhfVkFSQVJHUywKKyAgICAgX1B5X2ZpbmRfX2RvY19ffSwKICAgICBCWVRFU19GUk9NSEVYX01FVEhPRERFRgogICAgIHsiaGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2hleCwgTUVUSF9OT0FSR1MsIGhleF9fZG9jX199LAotICAgIHsiaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfaW5kZXgsIE1FVEhfVkFSQVJHUywgaW5kZXhfX2RvY19ffSwKKyAgICB7ImluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX2luZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9pbmRleF9fZG9jX199LAogICAgIHsiaXNhbG51bSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfaXNhbG51bSwgTUVUSF9OT0FSR1MsCiAgICAgIF9QeV9pc2FsbnVtX19kb2NfX30sCiAgICAgeyJpc2FscGhhIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9pc2FscGhhLCBNRVRIX05PQVJHUywKQEAgLTMxMDIsMzggKzI0NDAsNDAgQEAKICAgICB7ImlzdXBwZXIiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX2lzdXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfaXN1cHBlcl9fZG9jX199LAogICAgIEJZVEVTX0pPSU5fTUVUSE9EREVGCi0gICAgeyJsanVzdCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfbGp1c3QsIE1FVEhfVkFSQVJHUywgbGp1c3RfX2RvY19ffSwKKyAgICB7ImxqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfbGp1c3RfX2RvY19ffSwKICAgICB7Imxvd2VyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9sb3dlciwgTUVUSF9OT0FSR1MsIF9QeV9sb3dlcl9fZG9jX199LAogICAgIEJZVEVTX0xTVFJJUF9NRVRIT0RERUYKICAgICBCWVRFU19NQUtFVFJBTlNfTUVUSE9EREVGCiAgICAgQllURVNfUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JFUExBQ0VfTUVUSE9EREVGCi0gICAgeyJyZmluZCIsIChQeUNGdW5jdGlvbilieXRlc19yZmluZCwgTUVUSF9WQVJBUkdTLCByZmluZF9fZG9jX199LAotICAgIHsicmluZGV4IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3JpbmRleCwgTUVUSF9WQVJBUkdTLCByaW5kZXhfX2RvY19ffSwKLSAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCByanVzdF9fZG9jX199LAorICAgIHsicmZpbmQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmZpbmQsIE1FVEhfVkFSQVJHUywgX1B5X3JmaW5kX19kb2NfX30sCisgICAgeyJyaW5kZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmluZGV4LCBNRVRIX1ZBUkFSR1MsIF9QeV9yaW5kZXhfX2RvY19ffSwKKyAgICB7InJqdXN0IiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl9yanVzdCwgTUVUSF9WQVJBUkdTLCBfUHlfcmp1c3RfX2RvY19ffSwKICAgICBCWVRFU19SUEFSVElUSU9OX01FVEhPRERFRgogICAgIEJZVEVTX1JTUExJVF9NRVRIT0RERUYKICAgICBCWVRFU19SU1RSSVBfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRfTUVUSE9EREVGCiAgICAgQllURVNfU1BMSVRMSU5FU19NRVRIT0RERUYKICAgICB7InN0YXJ0c3dpdGgiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfc3RhcnRzd2l0aCwgTUVUSF9WQVJBUkdTLAotICAgICBzdGFydHN3aXRoX19kb2NfX30sCisgICAgIF9QeV9zdGFydHN3aXRoX19kb2NfX30sCiAgICAgQllURVNfU1RSSVBfTUVUSE9EREVGCiAgICAgeyJzd2FwY2FzZSIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfc3dhcGNhc2UsIE1FVEhfTk9BUkdTLAogICAgICBfUHlfc3dhcGNhc2VfX2RvY19ffSwKICAgICB7InRpdGxlIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl90aXRsZSwgTUVUSF9OT0FSR1MsIF9QeV90aXRsZV9fZG9jX199LAogICAgIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYKICAgICB7InVwcGVyIiwgKFB5Q0Z1bmN0aW9uKXN0cmluZ2xpYl91cHBlciwgTUVUSF9OT0FSR1MsIF9QeV91cHBlcl9fZG9jX199LAotICAgIHsiemZpbGwiLCAoUHlDRnVuY3Rpb24pc3RyaW5nbGliX3pmaWxsLCBNRVRIX1ZBUkFSR1MsIHpmaWxsX19kb2NfX30sCisgICAgeyJ6ZmlsbCIsIChQeUNGdW5jdGlvbilzdHJpbmdsaWJfemZpbGwsIE1FVEhfVkFSQVJHUywgX1B5X3pmaWxsX19kb2NfX30sCiAgICAge05VTEwsICAgICBOVUxMfSAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX21vZChQeU9iamVjdCAqdiwgUHlPYmplY3QgKncpCitieXRlc19tb2QoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgaWYgKCFQeUJ5dGVzX0NoZWNrKHYpKQorICAgIGlmICghUHlCeXRlc19DaGVjayhzZWxmKSkgewogICAgICAgICBQeV9SRVRVUk5fTk9USU1QTEVNRU5URUQ7Ci0gICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdCh2LCB3KTsKKyAgICB9CisgICAgcmV0dXJuIF9QeUJ5dGVzX0Zvcm1hdEV4KFB5Qnl0ZXNfQVNfU1RSSU5HKHNlbGYpLCBQeUJ5dGVzX0dFVF9TSVpFKHNlbGYpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmcsIDApOwogfQogCiBzdGF0aWMgUHlOdW1iZXJNZXRob2RzIGJ5dGVzX2FzX251bWJlciA9IHsKQEAgLTMyMjIsMTcgKzI1NjIsMTUgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIC8qIElzIGl0IGFuIGludGVnZXI/ICovCi0gICAgc2l6ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCh4LCBQeUV4Y19PdmVyZmxvd0Vycm9yKTsKLSAgICBpZiAoc2l6ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX092ZXJmbG93RXJyb3IpKQorICAgIGlmIChQeUluZGV4X0NoZWNrKHgpKSB7CisgICAgICAgIHNpemUgPSBQeU51bWJlcl9Bc1NzaXplX3QoeCwgUHlFeGNfT3ZlcmZsb3dFcnJvcik7CisgICAgICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgIH0KLSAgICBlbHNlIGlmIChzaXplIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIm5lZ2F0aXZlIGNvdW50Iik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBlbHNlIHsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAibmVnYXRpdmUgY291bnQiKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgICAgIG5ldyA9IF9QeUJ5dGVzX0Zyb21TaXplKHNpemUsIDEpOwogICAgICAgICBpZiAobmV3ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMyNDIsMTA4ICsyNTgwLDkzIEBACiAgICAgcmV0dXJuIFB5Qnl0ZXNfRnJvbU9iamVjdCh4KTsKIH0KIAotUHlPYmplY3QgKgotUHlCeXRlc19Gcm9tT2JqZWN0KFB5T2JqZWN0ICp4KQorc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUJ1ZmZlcihQeU9iamVjdCAqeCkKIHsKLSAgICBQeU9iamVjdCAqbmV3LCAqaXQ7CisgICAgUHlPYmplY3QgKm5ldzsKKyAgICBQeV9idWZmZXIgdmlldzsKKworICAgIGlmIChQeU9iamVjdF9HZXRCdWZmZXIoeCwgJnZpZXcsIFB5QlVGX0ZVTExfUk8pIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIHZpZXcubGVuKTsKKyAgICBpZiAoIW5ldykKKyAgICAgICAgZ290byBmYWlsOworICAgIGlmIChQeUJ1ZmZlcl9Ub0NvbnRpZ3VvdXMoKChQeUJ5dGVzT2JqZWN0ICopbmV3KS0+b2Jfc3ZhbCwKKyAgICAgICAgICAgICAgICAmdmlldywgdmlldy5sZW4sICdDJykgPCAwKQorICAgICAgICBnb3RvIGZhaWw7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIG5ldzsKKworZmFpbDoKKyAgICBQeV9YREVDUkVGKG5ldyk7CisgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKyNkZWZpbmUgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgR0VUX0lURU0pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeU9iamVjdCAqYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlfc3NpemVfdCBpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIFB5X3NzaXplX3QgdmFsdWU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjaGFyICpzdHI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgUHlPYmplY3QgKml0ZW07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBieXRlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgUHlfU0laRSh4KSk7ICAgICAgICAgICAgICAgIFwKKyAgICAgICAgaWYgKGJ5dGVzID09IE5VTEwpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICByZXR1cm4gTlVMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBzdHIgPSAoKFB5Qnl0ZXNPYmplY3QgKilieXRlcyktPm9iX3N2YWw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeV9TSVpFKHgpOyBpKyspIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaXRlbSA9IEdFVF9JVEVNKCh4KSwgaSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIHZhbHVlID0gUHlOdW1iZXJfQXNTc2l6ZV90KGl0ZW0sIE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJ5dGVzIG11c3QgYmUgaW4gcmFuZ2UoMCwgMjU2KSIpOyAgICAgICAgICBcCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKSB2YWx1ZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICByZXR1cm4gYnl0ZXM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZXJyb3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBQeV9ERUNSRUYoYnl0ZXMpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgcmV0dXJuIE5VTEw7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfSB3aGlsZSAoMCkKKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbUxpc3QoUHlPYmplY3QgKngpCit7CisgICAgX1B5Qnl0ZXNfRlJPTV9MSVNUX0JPRFkoeCwgUHlMaXN0X0dFVF9JVEVNKTsKK30KKworc3RhdGljIFB5T2JqZWN0KgorX1B5Qnl0ZXNfRnJvbVR1cGxlKFB5T2JqZWN0ICp4KQoreworICAgIF9QeUJ5dGVzX0ZST01fTElTVF9CT0RZKHgsIFB5VHVwbGVfR0VUX0lURU0pOworfQorCitzdGF0aWMgUHlPYmplY3QgKgorX1B5Qnl0ZXNfRnJvbUl0ZXJhdG9yKFB5T2JqZWN0ICppdCwgUHlPYmplY3QgKngpCit7CisgICAgY2hhciAqc3RyOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKLQotICAgIGlmICh4ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeUJ5dGVzX0NoZWNrRXhhY3QoeCkpIHsKLSAgICAgICAgUHlfSU5DUkVGKHgpOwotICAgICAgICByZXR1cm4geDsKLSAgICB9Ci0KLSAgICAvKiBVc2UgdGhlIG1vZGVybiBidWZmZXIgaW50ZXJmYWNlICovCi0gICAgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKHgpKSB7Ci0gICAgICAgIFB5X2J1ZmZlciB2aWV3OwotICAgICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKHgsICZ2aWV3LCBQeUJVRl9GVUxMX1JPKSA8IDApCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgbmV3ID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCB2aWV3Lmxlbik7Ci0gICAgICAgIGlmICghbmV3KQotICAgICAgICAgICAgZ290byBmYWlsOwotICAgICAgICBpZiAoUHlCdWZmZXJfVG9Db250aWd1b3VzKCgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnZpZXcsIHZpZXcubGVuLCAnQycpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gZmFpbDsKLSAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmdmlldyk7Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgICBmYWlsOgotICAgICAgICBQeV9YREVDUkVGKG5ldyk7Ci0gICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayh4KSkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IHVuaWNvZGUgb2JqZWN0IHRvIGJ5dGVzIik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChQeUxpc3RfQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOwotICAgICAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAgUHlfc3NpemVfdCB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCgKLSAgICAgICAgICAgICAgICBQeUxpc3RfR0VUX0lURU0oeCwgaSksIFB5RXhjX1ZhbHVlRXJyb3IpOwotICAgICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmICh2YWx1ZSA8IDAgfHwgdmFsdWUgPj0gMjU2KSB7Ci0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJieXRlcyBtdXN0IGJlIGluIHJhbmdlKDAsIDI1NikiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV3KTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKW5ldyktPm9iX3N2YWxbaV0gPSAoY2hhcikgdmFsdWU7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIG5ldzsKLSAgICB9Ci0gICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh4KSkgewotICAgICAgICBuZXcgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIFB5X1NJWkUoeCkpOwotICAgICAgICBpZiAobmV3ID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IFB5X1NJWkUoeCk7IGkrKykgewotICAgICAgICAgICAgUHlfc3NpemVfdCB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdCgKLSAgICAgICAgICAgICAgICBQeVR1cGxlX0dFVF9JVEVNKHgsIGkpLCBQeUV4Y19WYWx1ZUVycm9yKTsKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAodmFsdWUgPCAwIHx8IHZhbHVlID49IDI1NikgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYnl0ZXMgbXVzdCBiZSBpbiByYW5nZSgwLCAyNTYpIik7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKG5ldyk7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiBuZXc7Ci0gICAgfQorICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIC8qIEZvciBpdGVyYXRvciB2ZXJzaW9uLCBjcmVhdGUgYSBzdHJpbmcgb2JqZWN0IGFuZCByZXNpemUgYXMgbmVlZGVkICovCiAgICAgc2l6ZSA9IFB5T2JqZWN0X0xlbmd0aEhpbnQoeCwgNjQpOwogICAgIGlmIChzaXplID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIC8qIEFsbG9jYXRlIGFuIGV4dHJhIGJ5dGUgdG8gcHJldmVudCBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKCkgZnJvbQotICAgICAgIHJldHVybmluZyBhIHNoYXJlZCBlbXB0eSBieXRlcyBzdHJpbmcuIFRoaXMgcmVxdWlyZWQgYmVjYXVzZSB3ZQotICAgICAgIHdhbnQgdG8gY2FsbCBfUHlCeXRlc19SZXNpemUoKSB0aGUgcmV0dXJuZWQgb2JqZWN0LCB3aGljaCB3ZSBjYW4KLSAgICAgICBvbmx5IGRvIG9uIGJ5dGVzIG9iamVjdHMgd2l0aCByZWZjb3VudCA9PSAxLiAqLwotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHNpemUgPSAxOwotICAgIG5ldyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKG5ldyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhc3NlcnQoUHlfUkVGQ05UKG5ldykgPT0gMSk7CiAKLSAgICAvKiBHZXQgdGhlIGl0ZXJhdG9yICovCi0gICAgaXQgPSBQeU9iamVjdF9HZXRJdGVyKHgpOwotICAgIGlmIChpdCA9PSBOVUxMKQotICAgICAgICBnb3RvIGVycm9yOworICAgIF9QeUJ5dGVzV3JpdGVyX0luaXQoJndyaXRlcik7CisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfQWxsb2MoJndyaXRlciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKKyAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKIAogICAgIC8qIFJ1biB0aGUgaXRlcmF0b3IgdG8gZXhoYXVzdGlvbiAqLwogICAgIGZvciAoaSA9IDA7IDsgaSsrKSB7CkBAIC0zMzU5LDcgKzI2ODIsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgLyogSW50ZXJwcmV0IGl0IGFzIGFuIGludCAoX19pbmRleF9fKSAqLwotICAgICAgICB2YWx1ZSA9IFB5TnVtYmVyX0FzU3NpemVfdChpdGVtLCBQeUV4Y19WYWx1ZUVycm9yKTsKKyAgICAgICAgdmFsdWUgPSBQeU51bWJlcl9Bc1NzaXplX3QoaXRlbSwgTlVMTCk7CiAgICAgICAgIFB5X0RFQ1JFRihpdGVtKTsKICAgICAgICAgaWYgKHZhbHVlID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpCiAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMzM3MywyMSArMjY5Niw1OCBAQAogCiAgICAgICAgIC8qIEFwcGVuZCB0aGUgYnl0ZSAqLwogICAgICAgICBpZiAoaSA+PSBzaXplKSB7Ci0gICAgICAgICAgICBzaXplID0gMiAqIHNpemUgKyAxOwotICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3LCBzaXplKSA8IDApCi0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZSgmd3JpdGVyLCBzdHIsIHNpemUrMSk7CisgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICBzaXplID0gd3JpdGVyLmFsbG9jYXRlZDsKICAgICAgICAgfQotICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKiluZXcpLT5vYl9zdmFsW2ldID0gKGNoYXIpIHZhbHVlOworICAgICAgICAqc3RyKysgPSAoY2hhcikgdmFsdWU7CiAgICAgfQotICAgIF9QeUJ5dGVzX1Jlc2l6ZSgmbmV3LCBpKTsKIAotICAgIC8qIENsZWFuIHVwIGFuZCByZXR1cm4gc3VjY2VzcyAqLwotICAgIFB5X0RFQ1JFRihpdCk7Ci0gICAgcmV0dXJuIG5ldzsKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKCZ3cml0ZXIsIHN0cik7CiAKICAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihpdCk7Ci0gICAgUHlfWERFQ1JFRihuZXcpOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKK1B5T2JqZWN0ICoKK1B5Qnl0ZXNfRnJvbU9iamVjdChQeU9iamVjdCAqeCkKK3sKKyAgICBQeU9iamVjdCAqaXQsICpyZXN1bHQ7CisKKyAgICBpZiAoeCA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoUHlCeXRlc19DaGVja0V4YWN0KHgpKSB7CisgICAgICAgIFB5X0lOQ1JFRih4KTsKKyAgICAgICAgcmV0dXJuIHg7CisgICAgfQorCisgICAgLyogVXNlIHRoZSBtb2Rlcm4gYnVmZmVyIGludGVyZmFjZSAqLworICAgIGlmIChQeU9iamVjdF9DaGVja0J1ZmZlcih4KSkKKyAgICAgICAgcmV0dXJuIF9QeUJ5dGVzX0Zyb21CdWZmZXIoeCk7CisKKyAgICBpZiAoUHlMaXN0X0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tTGlzdCh4KTsKKworICAgIGlmIChQeVR1cGxlX0NoZWNrRXhhY3QoeCkpCisgICAgICAgIHJldHVybiBfUHlCeXRlc19Gcm9tVHVwbGUoeCk7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVjayh4KSkgeworICAgICAgICBpdCA9IFB5T2JqZWN0X0dldEl0ZXIoeCk7CisgICAgICAgIGlmIChpdCAhPSBOVUxMKSB7CisgICAgICAgICAgICByZXN1bHQgPSBfUHlCeXRlc19Gcm9tSXRlcmF0b3IoaXQsIHgpOworICAgICAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAiY2Fubm90IGNvbnZlcnQgJyUuMjAwcycgb2JqZWN0IHRvIGJ5dGVzIiwKKyAgICAgICAgICAgICAgICAgeC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTM0MDUsNyArMjc2NSw3IEBACiAgICAgbiA9IFB5Qnl0ZXNfR0VUX1NJWkUodG1wKTsKICAgICBwbmV3ID0gdHlwZS0+dHBfYWxsb2ModHlwZSwgbik7CiAgICAgaWYgKHBuZXcgIT0gTlVMTCkgewotICAgICAgICBQeV9NRU1DUFkoUHlCeXRlc19BU19TVFJJTkcocG5ldyksCisgICAgICAgIG1lbWNweShQeUJ5dGVzX0FTX1NUUklORyhwbmV3KSwKICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKHRtcCksIG4rMSk7CiAgICAgICAgICgoUHlCeXRlc09iamVjdCAqKXBuZXcpLT5vYl9zaGFzaCA9CiAgICAgICAgICAgICAoKFB5Qnl0ZXNPYmplY3QgKil0bXApLT5vYl9zaGFzaDsKQEAgLTM3NDcsMyArMzEwNywyODIgQEAKICAgICBfUHlPYmplY3RfR0NfVFJBQ0soaXQpOwogICAgIHJldHVybiAoUHlPYmplY3QgKilpdDsKIH0KKworCisvKiBfUHlCeXRlc1dyaXRlciBBUEkgKi8KKworI2lmZGVmIE1TX1dJTkRPV1MKKyAgIC8qIE9uIFdpbmRvd3MsIG92ZXJhbGxvY2F0ZSBieSA1MCUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiAyCisjZWxzZQorICAgLyogT24gTGludXgsIG92ZXJhbGxvY2F0ZSBieSAyNSUgaXMgdGhlIGJlc3QgZmFjdG9yICovCisjICBkZWZpbmUgT1ZFUkFMTE9DQVRFX0ZBQ1RPUiA0CisjZW5kaWYKKwordm9pZAorX1B5Qnl0ZXNXcml0ZXJfSW5pdChfUHlCeXRlc1dyaXRlciAqd3JpdGVyKQoreworICAgIC8qIFNldCBhbGwgYXR0cmlidXRlcyBiZWZvcmUgc21hbGxfYnVmZmVyIHRvIDAgKi8KKyAgICBtZW1zZXQod3JpdGVyLCAwLCBvZmZzZXRvZihfUHlCeXRlc1dyaXRlciwgc21hbGxfYnVmZmVyKSk7CisjaWZkZWYgUHlfREVCVUcKKyAgICBtZW1zZXQod3JpdGVyLT5zbWFsbF9idWZmZXIsIDB4Q0IsIHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcikpOworI2VuZGlmCit9CisKK3ZvaWQKK19QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlcikKK3sKKyAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7Cit9CisKK1B5X0xPQ0FMX0lOTElORShjaGFyKikKK19QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIpCit7CisgICAgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgPT0gTlVMTCk7CisgICAgICAgIHJldHVybiB3cml0ZXItPnNtYWxsX2J1ZmZlcjsKKyAgICB9CisgICAgZWxzZSBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgcmV0dXJuIFB5Qnl0ZUFycmF5X0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBhc3NlcnQod3JpdGVyLT5idWZmZXIgIT0gTlVMTCk7CisgICAgICAgIHJldHVybiBQeUJ5dGVzX0FTX1NUUklORyh3cml0ZXItPmJ1ZmZlcik7CisgICAgfQorfQorCitQeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKK19QeUJ5dGVzV3JpdGVyX0dldFNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQoreworICAgIGNoYXIgKnN0YXJ0ID0gX1B5Qnl0ZXNXcml0ZXJfQXNTdHJpbmcod3JpdGVyKTsKKyAgICBhc3NlcnQoc3RyICE9IE5VTEwpOworICAgIGFzc2VydChzdHIgPj0gc3RhcnQpOworICAgIGFzc2VydChzdHIgLSBzdGFydCA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgcmV0dXJuIHN0ciAtIHN0YXJ0OworfQorCitQeV9MT0NBTF9JTkxJTkUodm9pZCkKK19QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3koX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyKQoreworI2lmZGVmIFB5X0RFQlVHCisgICAgY2hhciAqc3RhcnQsICplbmQ7CisKKyAgICBpZiAod3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyKSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciA9PSBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmJ1ZmZlciAhPSBOVUxMKTsKKyAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVBcnJheV9DaGVja0V4YWN0KHdyaXRlci0+YnVmZmVyKSk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrRXhhY3Qod3JpdGVyLT5idWZmZXIpKTsKKyAgICAgICAgYXNzZXJ0KFB5X1JFRkNOVCh3cml0ZXItPmJ1ZmZlcikgPT0gMSk7CisgICAgfQorCisgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAvKiBieXRlYXJyYXkgaGFzIGl0cyBvd24gb3ZlcmFsbG9jYXRpb24gYWxnb3JpdGhtLAorICAgICAgICAgICB3cml0ZXIgb3ZlcmFsbG9jYXRpb24gbXVzdCBiZSBkaXNhYmxlZCAqLworICAgICAgICBhc3NlcnQoIXdyaXRlci0+b3ZlcmFsbG9jYXRlKTsKKyAgICB9CisKKyAgICBhc3NlcnQoMCA8PSB3cml0ZXItPmFsbG9jYXRlZCk7CisgICAgYXNzZXJ0KDAgPD0gd3JpdGVyLT5taW5fc2l6ZSAmJiB3cml0ZXItPm1pbl9zaXplIDw9IHdyaXRlci0+YWxsb2NhdGVkKTsKKyAgICAvKiB0aGUgbGFzdCBieXRlIG11c3QgYWx3YXlzIGJlIG51bGwgKi8KKyAgICBzdGFydCA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcik7CisgICAgYXNzZXJ0KHN0YXJ0W3dyaXRlci0+YWxsb2NhdGVkXSA9PSAwKTsKKworICAgIGVuZCA9IHN0YXJ0ICsgd3JpdGVyLT5hbGxvY2F0ZWQ7CisgICAgYXNzZXJ0KHN0ciAhPSBOVUxMKTsKKyAgICBhc3NlcnQoc3RhcnQgPD0gc3RyICYmIHN0ciA8PSBlbmQpOworI2VuZGlmCit9CisKK3ZvaWQqCitfUHlCeXRlc1dyaXRlcl9SZXNpemUoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqc3RyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgUHlfc3NpemVfdCBhbGxvY2F0ZWQsIHBvczsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIGFzc2VydCh3cml0ZXItPmFsbG9jYXRlZCA8IHNpemUpOworCisgICAgYWxsb2NhdGVkID0gc2l6ZTsKKyAgICBpZiAod3JpdGVyLT5vdmVyYWxsb2NhdGUKKyAgICAgICAgJiYgYWxsb2NhdGVkIDw9IChQWV9TU0laRV9UX01BWCAtIGFsbG9jYXRlZCAvIE9WRVJBTExPQ0FURV9GQUNUT1IpKSB7CisgICAgICAgIC8qIG92ZXJhbGxvY2F0ZSB0byBsaW1pdCB0aGUgbnVtYmVyIG9mIHJlYWxsb2MoKSAqLworICAgICAgICBhbGxvY2F0ZWQgKz0gYWxsb2NhdGVkIC8gT1ZFUkFMTE9DQVRFX0ZBQ1RPUjsKKyAgICB9CisKKyAgICBwb3MgPSBfUHlCeXRlc1dyaXRlcl9HZXRTaXplKHdyaXRlciwgc3RyKTsKKyAgICBpZiAoIXdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICBpZiAoUHlCeXRlQXJyYXlfUmVzaXplKHdyaXRlci0+YnVmZmVyLCBhbGxvY2F0ZWQpKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAvKiB3cml0ZXItPmFsbG9jYXRlZCBjYW4gYmUgc21hbGxlciB0aGFuIHdyaXRlci0+YnVmZmVyLT5vYl9hbGxvYywKKyAgICAgICAgICAgICAgIGJ1dCB3ZSBjYW5ub3QgdXNlIG9iX2FsbG9jIGJlY2F1c2UgYnl0ZXMgbWF5IG5lZWQgdG8gYmUgbW92ZWQKKyAgICAgICAgICAgICAgIHRvIHVzZSB0aGUgd2hvbGUgYnVmZmVyLiBieXRlYXJyYXkgdXNlcyBhbiBpbnRlcm5hbCBvcHRpbWl6YXRpb24KKyAgICAgICAgICAgICAgIHRvIGF2b2lkIG1vdmluZyBvciBjb3B5aW5nIGJ5dGVzIHdoZW4gYnl0ZXMgYXJlIHJlbW92ZWQgYXQgdGhlCisgICAgICAgICAgICAgICBiZWdpbm5pbmcgKGV4OiBkZWwgYnl0ZWFycmF5WzoxXSkuICovCisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZ3cml0ZXItPmJ1ZmZlciwgYWxsb2NhdGVkKSkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBjb252ZXJ0IGZyb20gc3RhY2sgYnVmZmVyIHRvIGJ5dGVzIG9iamVjdCBidWZmZXIgKi8KKyAgICAgICAgYXNzZXJ0KHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworCisgICAgICAgIGlmICh3cml0ZXItPnVzZV9ieXRlYXJyYXkpCisgICAgICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIGFsbG9jYXRlZCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHdyaXRlci0+YnVmZmVyID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCBhbGxvY2F0ZWQpOworICAgICAgICBpZiAod3JpdGVyLT5idWZmZXIgPT0gTlVMTCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgaWYgKHBvcyAhPSAwKSB7CisgICAgICAgICAgICBjaGFyICpkZXN0OworICAgICAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkKKyAgICAgICAgICAgICAgICBkZXN0ID0gUHlCeXRlQXJyYXlfQVNfU1RSSU5HKHdyaXRlci0+YnVmZmVyKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBkZXN0ID0gUHlCeXRlc19BU19TVFJJTkcod3JpdGVyLT5idWZmZXIpOworICAgICAgICAgICAgbWVtY3B5KGRlc3QsCisgICAgICAgICAgICAgICAgICAgICAgd3JpdGVyLT5zbWFsbF9idWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgcG9zKTsKKyAgICAgICAgfQorCisgICAgICAgIHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlciA9IDA7CisjaWZkZWYgUHlfREVCVUcKKyAgICAgICAgbWVtc2V0KHdyaXRlci0+c21hbGxfYnVmZmVyLCAweERCLCBzaXplb2Yod3JpdGVyLT5zbWFsbF9idWZmZXIpKTsKKyNlbmRpZgorICAgIH0KKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IGFsbG9jYXRlZDsKKworICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX0FzU3RyaW5nKHdyaXRlcikgKyBwb3M7CisgICAgX1B5Qnl0ZXNXcml0ZXJfQ2hlY2tDb25zaXN0ZW5jeSh3cml0ZXIsIHN0cik7CisgICAgcmV0dXJuIHN0cjsKKworZXJyb3I6CisgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyh3cml0ZXIpOworICAgIHJldHVybiBOVUxMOworfQorCit2b2lkKgorX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZShfUHlCeXRlc1dyaXRlciAqd3JpdGVyLCB2b2lkICpzdHIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICBQeV9zc2l6ZV90IG5ld19taW5fc2l6ZTsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICAvKiBub3RoaW5nIHRvIGRvICovCisgICAgICAgIHJldHVybiBzdHI7CisgICAgfQorCisgICAgaWYgKHdyaXRlci0+bWluX3NpemUgPiBQWV9TU0laRV9UX01BWCAtIHNpemUpIHsKKyAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKKyAgICAgICAgX1B5Qnl0ZXNXcml0ZXJfRGVhbGxvYyh3cml0ZXIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgbmV3X21pbl9zaXplID0gd3JpdGVyLT5taW5fc2l6ZSArIHNpemU7CisKKyAgICBpZiAobmV3X21pbl9zaXplID4gd3JpdGVyLT5hbGxvY2F0ZWQpCisgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1Jlc2l6ZSh3cml0ZXIsIHN0ciwgbmV3X21pbl9zaXplKTsKKworICAgIHdyaXRlci0+bWluX3NpemUgPSBuZXdfbWluX3NpemU7CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogQWxsb2NhdGUgdGhlIGJ1ZmZlciB0byB3cml0ZSBzaXplIGJ5dGVzLgorICAgUmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBiZWdpbm5pbmcgb2YgYnVmZmVyIGRhdGEuCisgICBSYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiBOVUxMIG9uIGVycm9yLiAqLwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX0FsbG9jKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIFB5X3NzaXplX3Qgc2l6ZSkKK3sKKyAgICAvKiBlbnN1cmUgdGhhdCBfUHlCeXRlc1dyaXRlcl9BbGxvYygpIGlzIG9ubHkgY2FsbGVkIG9uY2UgKi8KKyAgICBhc3NlcnQod3JpdGVyLT5taW5fc2l6ZSA9PSAwICYmIHdyaXRlci0+YnVmZmVyID09IE5VTEwpOworICAgIGFzc2VydChzaXplID49IDApOworCisgICAgd3JpdGVyLT51c2Vfc21hbGxfYnVmZmVyID0gMTsKKyNpZmRlZiBQeV9ERUJVRworICAgIHdyaXRlci0+YWxsb2NhdGVkID0gc2l6ZW9mKHdyaXRlci0+c21hbGxfYnVmZmVyKSAtIDE7CisgICAgLyogSW4gZGVidWcgbW9kZSwgZG9uJ3QgdXNlIHRoZSBmdWxsIHNtYWxsIGJ1ZmZlciBiZWNhdXNlIGl0IGlzIGxlc3MKKyAgICAgICBlZmZpY2llbnQgdGhhbiBieXRlcyBhbmQgYnl0ZWFycmF5IG9iamVjdHMgdG8gZGV0ZWN0IGJ1ZmZlciB1bmRlcmZsb3cKKyAgICAgICBhbmQgYnVmZmVyIG92ZXJmbG93LiBVc2UgMTAgYnl0ZXMgb2YgdGhlIHNtYWxsIGJ1ZmZlciB0byB0ZXN0IGFsc28KKyAgICAgICBjb2RlIHVzaW5nIHRoZSBzbWFsbGVyIGJ1ZmZlciBpbiBkZWJ1ZyBtb2RlLgorCisgICAgICAgRG9uJ3QgbW9kaWZ5IHRoZSBfUHlCeXRlc1dyaXRlciBzdHJ1Y3R1cmUgKHVzZSBhIHNob3J0ZXIgc21hbGwgYnVmZmVyKQorICAgICAgIGluIGRlYnVnIG1vZGUgdG8gYWxzbyBiZSBhYmxlIHRvIGRldGVjdCBzdGFjayBvdmVyZmxvdyB3aGVuIHJ1bm5pbmcKKyAgICAgICB0ZXN0cyBpbiBkZWJ1ZyBtb2RlLiBUaGUgX1B5Qnl0ZXNXcml0ZXIgaXMgbGFyZ2UgKG1vcmUgdGhhbiA1MTIgYnl0ZXMpLAorICAgICAgIGlmIFB5X0VudGVyUmVjdXJzaXZlQ2FsbCgpIGlzIG5vdCB1c2VkIGluIGRlZXAgQyBjYWxsYmFjaywgd2UgbWF5IGhpdCBhCisgICAgICAgc3RhY2sgb3ZlcmZsb3cuICovCisgICAgd3JpdGVyLT5hbGxvY2F0ZWQgPSBQeV9NSU4od3JpdGVyLT5hbGxvY2F0ZWQsIDEwKTsKKyAgICAvKiBfUHlCeXRlc1dyaXRlcl9DaGVja0NvbnNpc3RlbmN5KCkgcmVxdWlyZXMgdGhlIGxhc3QgYnl0ZSB0byBiZSAwLAorICAgICAgIHRvIGRldGVjdCBidWZmZXIgb3ZlcmZsb3cgKi8KKyAgICB3cml0ZXItPnNtYWxsX2J1ZmZlclt3cml0ZXItPmFsbG9jYXRlZF0gPSAwOworI2Vsc2UKKyAgICB3cml0ZXItPmFsbG9jYXRlZCA9IHNpemVvZih3cml0ZXItPnNtYWxsX2J1ZmZlcik7CisjZW5kaWYKKyAgICByZXR1cm4gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKK30KKworUHlPYmplY3QgKgorX1B5Qnl0ZXNXcml0ZXJfRmluaXNoKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIHZvaWQgKnN0cikKK3sKKyAgICBQeV9zc2l6ZV90IHNpemU7CisgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgIF9QeUJ5dGVzV3JpdGVyX0NoZWNrQ29uc2lzdGVuY3kod3JpdGVyLCBzdHIpOworCisgICAgc2l6ZSA9IF9QeUJ5dGVzV3JpdGVyX0dldFNpemUod3JpdGVyLCBzdHIpOworICAgIGlmIChzaXplID09IDAgJiYgIXdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CisgICAgICAgIC8qIEdldCB0aGUgZW1wdHkgYnl0ZSBzdHJpbmcgc2luZ2xldG9uICovCisgICAgICAgIHJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgfQorICAgIGVsc2UgaWYgKHdyaXRlci0+dXNlX3NtYWxsX2J1ZmZlcikgeworICAgICAgICBpZiAod3JpdGVyLT51c2VfYnl0ZWFycmF5KSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZSh3cml0ZXItPnNtYWxsX2J1ZmZlciwgc2l6ZSk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICByZXN1bHQgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKHdyaXRlci0+c21hbGxfYnVmZmVyLCBzaXplKTsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmVzdWx0ID0gd3JpdGVyLT5idWZmZXI7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKworICAgICAgICBpZiAoc2l6ZSAhPSB3cml0ZXItPmFsbG9jYXRlZCkgeworICAgICAgICAgICAgaWYgKHdyaXRlci0+dXNlX2J5dGVhcnJheSkgeworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVBcnJheV9SZXNpemUocmVzdWx0LCBzaXplKSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzdWx0LCBzaXplKSkgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQocmVzdWx0ID09IE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwordm9pZCoKK19QeUJ5dGVzV3JpdGVyX1dyaXRlQnl0ZXMoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgdm9pZCAqcHRyLAorICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpieXRlcywgUHlfc3NpemVfdCBzaXplKQoreworICAgIGNoYXIgKnN0ciA9IChjaGFyICopcHRyOworCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIG1lbWNweShzdHIsIGJ5dGVzLCBzaXplKTsKKyAgICBzdHIgKz0gc2l6ZTsKKworICAgIHJldHVybiBzdHI7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2NsYXNzb2JqZWN0LmMgYi9PYmplY3RzL2NsYXNzb2JqZWN0LmMKaW5kZXggNWU4YWM1OS4uYjBlZDAyMyAxMDA2NDQKLS0tIGEvT2JqZWN0cy9jbGFzc29iamVjdC5jCisrKyBiL09iamVjdHMvY2xhc3NvYmplY3QuYwpAQCAtMzAyLDM0ICszMDIsMTkgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLW1ldGhvZF9jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqYXJnLCBQeU9iamVjdCAqa3cpCittZXRob2RfY2FsbChQeU9iamVjdCAqbWV0aG9kLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKIHsKLSAgICBQeU9iamVjdCAqc2VsZiA9IFB5TWV0aG9kX0dFVF9TRUxGKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jOwogCi0gICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKKyAgICBzZWxmID0gUHlNZXRob2RfR0VUX1NFTEYobWV0aG9kKTsKICAgICBpZiAoc2VsZiA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIFB5X3NzaXplX3QgYXJnY291bnQgPSBQeVR1cGxlX1NpemUoYXJnKTsKLSAgICAgICAgUHlPYmplY3QgKm5ld2FyZyA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50ICsgMSk7Ci0gICAgICAgIGludCBpOwotICAgICAgICBpZiAobmV3YXJnID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgUHlfSU5DUkVGKHNlbGYpOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZywgMCwgc2VsZik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjb3VudDsgaSsrKSB7Ci0gICAgICAgICAgICBQeU9iamVjdCAqdiA9IFB5VHVwbGVfR0VUX0lURU0oYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X1hJTkNSRUYodik7Ci0gICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKG5ld2FyZywgaSsxLCB2KTsKLSAgICAgICAgfQotICAgICAgICBhcmcgPSBuZXdhcmc7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoKFB5T2JqZWN0ICopZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKKworICAgIGZ1bmMgPSBQeU1ldGhvZF9HRVRfRlVOQ1RJT04obWV0aG9kKTsKKworICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbF9QcmVwZW5kKGZ1bmMsIHNlbGYsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZWFycmF5b2JqZWN0LmMuaAppbmRleCBlODdhMjIxLi5jNzVhY2I3IDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9ieXRlYXJyYXlvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL2J5dGVhcnJheW9iamVjdC5jLmgKQEAgLTM5LDQ1ICszOSwzOCBAQAogfQogCiBQeURvY19TVFJWQVIoYnl0ZWFycmF5X3RyYW5zbGF0ZV9fZG9jX18sCi0idHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorInRyYW5zbGF0ZSgkc2VsZiwgdGFibGUsIC8sIGRlbGV0ZT1iXCdcJylcbiIKKyItLVxuIgorIlxuIgogIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgogIlxuIgogIiAgdGFibGVcbiIKICIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKICJcbiIKLSJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLlxuIgogIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9UUkFOU0xBVEVfTUVUSE9EREVGICAgIFwKLSAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX1ZBUkFSR1MsIGJ5dGVhcnJheV90cmFuc2xhdGVfX2RvY19ffSwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfdHJhbnNsYXRlLCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfdHJhbnNsYXRlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfdHJhbnNsYXRlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ3JvdXBfcmlnaHRfMSwgUHlPYmplY3QgKmRlbGV0ZWNoYXJzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X3RyYW5zbGF0ZShQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlYXJyYXlfdHJhbnNsYXRlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7IiIsICJkZWxldGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPfE86dHJhbnNsYXRlIiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqdGFibGU7Ci0gICAgaW50IGdyb3VwX3JpZ2h0XzEgPSAwOwogICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyA9IE5VTEw7CiAKLSAgICBzd2l0Y2ggKFB5VHVwbGVfR0VUX1NJWkUoYXJncykpIHsKLSAgICAgICAgY2FzZSAxOgotICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPOnRyYW5zbGF0ZSIsICZ0YWJsZSkpCi0gICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgMjoKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT086dHJhbnNsYXRlIiwgJnRhYmxlLCAmZGVsZXRlY2hhcnMpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGdyb3VwX3JpZ2h0XzEgPSAxOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiYnl0ZWFycmF5LnRyYW5zbGF0ZSByZXF1aXJlcyAxIHRvIDIgYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZ3JvdXBfcmlnaHRfMSwgZGVsZXRlY2hhcnMpOworICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV90cmFuc2xhdGVfaW1wbChzZWxmLCB0YWJsZSwgZGVsZXRlY2hhcnMpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CkBAIC0xMDgsMTcgKzEwMSwyMCBAQAogICAgIFB5X2J1ZmZlciB0byA9IHtOVUxMLCBOVUxMfTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAieSp5KjptYWtldHJhbnMiLAotICAgICAgICAmZnJtLCAmdG8pKQorICAgICAgICAmZnJtLCAmdG8pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCi0gICAgaWYgKGZybS5vYmopCisgICAgaWYgKGZybS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciB0byAqLwotICAgIGlmICh0by5vYmopCisgICAgaWYgKHRvLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRvKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTUyLDE3ICsxNDgsMjAgQEAKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKLSAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZXBsYWNlX2ltcGwoc2VsZiwgJm9sZCwgJm5ldywgY291bnQpOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIG9sZCAqLwotICAgIGlmIChvbGQub2JqKQorICAgIGlmIChvbGQub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmb2xkKTsKKyAgICB9CiAgICAgLyogQ2xlYW51cCBmb3IgbmV3ICovCi0gICAgaWYgKG5ldy5vYmopCisgICAgaWYgKG5ldy5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZuZXcpOworICAgIH0KIAogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9CkBAIC0xODIsMjMgKzE4MSwyNSBAQAogIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9TUExJVF9NRVRIT0RERUYgICAgXAotICAgIHsic3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3NwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9zcGxpdF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogYnl0ZWFycmF5X3NwbGl0X2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpzZXAsCiAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9zcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246c3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpzcGxpdCIsIF9rZXl3b3JkcywKLSAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNlcCwgJm1heHNwbGl0KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdF9pbXBsKHNlbGYsIHNlcCwgbWF4c3BsaXQpOwogCiBleGl0OgpAQCAtMjU0LDIzICsyNTUsMjUgQEAKICJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlYXJyYXkgYW5kIHdvcmtpbmcgdG8gdGhlIGZyb250LiIpOwogCiAjZGVmaW5lIEJZVEVBUlJBWV9SU1BMSVRfTUVUSE9EREVGICAgIFwKLSAgICB7InJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZWFycmF5X3JzcGxpdF9fZG9jX199LAorICAgIHsicnNwbGl0IiwgKFB5Q0Z1bmN0aW9uKWJ5dGVhcnJheV9yc3BsaXQsIE1FVEhfRkFTVENBTEwsIGJ5dGVhcnJheV9yc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9yc3BsaXRfaW1wbChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwKICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVhcnJheV9yc3BsaXQoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZWFycmF5X3JzcGxpdChQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpyc3BsaXQiLCBfa2V5d29yZHMsIDB9OwogICAgIFB5T2JqZWN0ICpzZXAgPSBQeV9Ob25lOwogICAgIFB5X3NzaXplX3QgbWF4c3BsaXQgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxPbjpyc3BsaXQiLCBfa2V5d29yZHMsCi0gICAgICAgICZzZXAsICZtYXhzcGxpdCkpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZzZXAsICZtYXhzcGxpdCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC0zMjAsOCArMzIzLDkgQEAKICAgICBpbnQgaXRlbTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAibk8mOmluc2VydCIsCi0gICAgICAgICZpbmRleCwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgICAgICAmaW5kZXgsIF9nZXRieXRldmFsdWUsICZpdGVtKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9pbnNlcnRfaW1wbChzZWxmLCBpbmRleCwgaXRlbSk7CiAKIGV4aXQ6CkBAIC0zNDksOCArMzUzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaXRlbTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6YXBwZW5kIiwgX2dldGJ5dGV2YWx1ZSwgJml0ZW0pKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2FwcGVuZF9pbXBsKHNlbGYsIGl0ZW0pOwogCiBleGl0OgpAQCAtMzk0LDggKzM5OSw5IEBACiAgICAgUHlfc3NpemVfdCBpbmRleCA9IC0xOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8bjpwb3AiLAotICAgICAgICAmaW5kZXgpKQorICAgICAgICAmaW5kZXgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3BvcF9pbXBsKHNlbGYsIGluZGV4KTsKIAogZXhpdDoKQEAgLTQyMyw4ICs0MjksOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB2YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6cmVtb3ZlIiwgX2dldGJ5dGV2YWx1ZSwgJnZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOnJlbW92ZSIsIF9nZXRieXRldmFsdWUsICZ2YWx1ZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfcmVtb3ZlX2ltcGwoc2VsZiwgdmFsdWUpOwogCiBleGl0OgpAQCAtNDUzLDggKzQ2MCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfc3RyaXBfaW1wbChzZWxmLCBieXRlcyk7CiAKIGV4aXQ6CkBAIC00ODMsOCArNDkxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImxzdHJpcCIsCiAgICAgICAgIDAsIDEsCi0gICAgICAgICZieXRlcykpCisgICAgICAgICZieXRlcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtNTEzLDggKzUyMiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X3JzdHJpcF9pbXBsKHNlbGYsIGJ5dGVzKTsKIAogZXhpdDoKQEAgLTUzNywyMyArNTQ3LDI1IEBACiAiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBCWVRFQVJSQVlfREVDT0RFX01FVEhPRERFRiAgICBcCi0gICAgeyJkZWNvZGUiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2RlY29kZSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVhcnJheV9kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfZGVjb2RlLCBNRVRIX0ZBU1RDQUxMLCBieXRlYXJyYXlfZGVjb2RlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBieXRlYXJyYXlfZGVjb2RlX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfZGVjb2RlKFB5Qnl0ZUFycmF5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVhcnJheV9kZWNvZGUoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlYXJyYXlfZGVjb2RlX2ltcGwoc2VsZiwgZW5jb2RpbmcsIGVycm9ycyk7CiAKIGV4aXQ6CkBAIC01ODMsMjEgKzU5NSwyMyBAQAogInRydWUuIik7CiAKICNkZWZpbmUgQllURUFSUkFZX1NQTElUTElORVNfTUVUSE9EREVGICAgIFwKLSAgICB7InNwbGl0bGluZXMiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlYXJyYXlfc3BsaXRsaW5lc19fZG9jX199LAorICAgIHsic3BsaXRsaW5lcyIsIChQeUNGdW5jdGlvbilieXRlYXJyYXlfc3BsaXRsaW5lcywgTUVUSF9GQVNUQ0FMTCwgYnl0ZWFycmF5X3NwbGl0bGluZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoUHlCeXRlQXJyYXlPYmplY3QgKnNlbGYsIGludCBrZWVwZW5kcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlYXJyYXlfc3BsaXRsaW5lcyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCitieXRlYXJyYXlfc3BsaXRsaW5lcyhQeUJ5dGVBcnJheU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtlZXBlbmRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmtlZXBlbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9zcGxpdGxpbmVzX2ltcGwoc2VsZiwga2VlcGVuZHMpOwogCiBleGl0OgpAQCAtNjE3LDE3ICs2MzEsMTggQEAKICAgICB7ImZyb21oZXgiLCAoUHlDRnVuY3Rpb24pYnl0ZWFycmF5X2Zyb21oZXgsIE1FVEhfT3xNRVRIX0NMQVNTLCBieXRlYXJyYXlfZnJvbWhleF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeU9iamVjdCpjbHMsIFB5T2JqZWN0ICpzdHJpbmcpOworYnl0ZWFycmF5X2Zyb21oZXhfaW1wbChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpzdHJpbmcpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZWFycmF5X2Zyb21oZXgoUHlUeXBlT2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCitieXRlYXJyYXlfZnJvbWhleChQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmcpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnN0cmluZzsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmZyb21oZXgiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2Zyb21oZXhfaW1wbCgoUHlPYmplY3QqKWNscywgc3RyaW5nKTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZWFycmF5X2Zyb21oZXhfaW1wbCh0eXBlLCBzdHJpbmcpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CkBAIC02NzAsOCArNjg1LDkgQEAKICAgICBpbnQgcHJvdG8gPSAwOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ8aTpfX3JlZHVjZV9leF9fIiwKLSAgICAgICAgJnByb3RvKSkKKyAgICAgICAgJnByb3RvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVhcnJheV9yZWR1Y2VfZXhfaW1wbChzZWxmLCBwcm90byk7CiAKIGV4aXQ6CkBAIC02OTUsNCArNzExLDQgQEAKIHsKICAgICByZXR1cm4gYnl0ZWFycmF5X3NpemVvZl9pbXBsKHNlbGYpOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk2NmMxNWZmMjJjNWUyNDMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTIyNTM0MmE2ODAzOTFiOWMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oIGIvT2JqZWN0cy9jbGluaWMvYnl0ZXNvYmplY3QuYy5oCmluZGV4IDVhMWE1ZTkuLmExMWViZDIgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL2J5dGVzb2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9ieXRlc29iamVjdC5jLmgKQEAgLTE3LDIyICsxNywyNCBAQAogIiAgICAtMSAodGhlIGRlZmF1bHQgdmFsdWUpIG1lYW5zIG5vIGxpbWl0LiIpOwogCiAjZGVmaW5lIEJZVEVTX1NQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIGJ5dGVzX3NwbGl0X19kb2NfX30sCisgICAgeyJzcGxpdCIsIChQeUNGdW5jdGlvbilieXRlc19zcGxpdCwgTUVUSF9GQVNUQ0FMTCwgYnl0ZXNfc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKK2J5dGVzX3NwbGl0X2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19zcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfc3BsaXQoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7InNlcCIsICJtYXhzcGxpdCIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7InxPbjpzcGxpdCIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNlcCA9IFB5X05vbmU7CiAgICAgUHlfc3NpemVfdCBtYXhzcGxpdCA9IC0xOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifE9uOnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfc3BsaXRfaW1wbChzZWxmLCBzZXAsIG1heHNwbGl0KTsKIAogZXhpdDoKQEAgLTY0LDE0ICs2NiwxNiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5X2J1ZmZlciBzZXAgPSB7TlVMTCwgTlVMTH07CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgInkqOnBhcnRpdGlvbiIsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cGFydGl0aW9uIiwgJnNlcCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19wYXJ0aXRpb25faW1wbChzZWxmLCAmc2VwKTsKIAogZXhpdDoKICAgICAvKiBDbGVhbnVwIGZvciBzZXAgKi8KLSAgICBpZiAoc2VwLm9iaikKKyAgICBpZiAoc2VwLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnNlcCk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTEwMSwxNCArMTA1LDE2IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfYnVmZmVyIHNlcCA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cnBhcnRpdGlvbiIsICZzZXApKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAieSo6cnBhcnRpdGlvbiIsICZzZXApKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnBhcnRpdGlvbl9pbXBsKHNlbGYsICZzZXApOwogCiBleGl0OgogICAgIC8qIENsZWFudXAgZm9yIHNlcCAqLwotICAgIGlmIChzZXAub2JqKQorICAgIGlmIChzZXAub2JqKSB7CiAgICAgICAgUHlCdWZmZXJfUmVsZWFzZSgmc2VwKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMTMwLDIyICsxMzYsMjQgQEAKICJTcGxpdHRpbmcgaXMgZG9uZSBzdGFydGluZyBhdCB0aGUgZW5kIG9mIHRoZSBieXRlcyBhbmQgd29ya2luZyB0byB0aGUgZnJvbnQuIik7CiAKICNkZWZpbmUgQllURVNfUlNQTElUX01FVEhPRERFRiAgICBcCi0gICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnl0ZXNfcnNwbGl0X19kb2NfX30sCisgICAgeyJyc3BsaXQiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcnNwbGl0LCBNRVRIX0ZBU1RDQUxMLCBieXRlc19yc3BsaXRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdF9pbXBsKFB5Qnl0ZXNPYmplY3Qqc2VsZiwgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCk7CitieXRlc19yc3BsaXRfaW1wbChQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqc2VwLCBQeV9zc2l6ZV90IG1heHNwbGl0KTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3JzcGxpdChQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfcnNwbGl0KFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJzZXAiLCAibWF4c3BsaXQiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8T246cnNwbGl0IiwgX2tleXdvcmRzLCAwfTsKICAgICBQeU9iamVjdCAqc2VwID0gUHlfTm9uZTsKICAgICBQeV9zc2l6ZV90IG1heHNwbGl0ID0gLTE7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ8T246cnNwbGl0IiwgX2tleXdvcmRzLAotICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmc2VwLCAmbWF4c3BsaXQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnNwbGl0X2ltcGwoc2VsZiwgc2VwLCBtYXhzcGxpdCk7CiAKIGV4aXQ6CkBAIC0xODksOCArMTk3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgInN0cmlwIiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJmJ5dGVzKSkKKyAgICAgICAgJmJ5dGVzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3N0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjE5LDggKzIyOCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJsc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfbHN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjQ5LDggKzI1OSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJyc3RyaXAiLAogICAgICAgICAwLCAxLAotICAgICAgICAmYnl0ZXMpKQorICAgICAgICAmYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfcnN0cmlwX2ltcGwoc2VsZiwgYnl0ZXMpOwogCiBleGl0OgpAQCAtMjU4LDQ1ICsyNjksMzggQEAKIH0KIAogUHlEb2NfU1RSVkFSKGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX18sCi0idHJhbnNsYXRlKHRhYmxlLCBbZGVsZXRlY2hhcnNdKVxuIgorInRyYW5zbGF0ZSgkc2VsZiwgdGFibGUsIC8sIGRlbGV0ZT1iXCdcJylcbiIKKyItLVxuIgorIlxuIgogIlJldHVybiBhIGNvcHkgd2l0aCBlYWNoIGNoYXJhY3RlciBtYXBwZWQgYnkgdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLlxuIgogIlxuIgogIiAgdGFibGVcbiIKICIgICAgVHJhbnNsYXRpb24gdGFibGUsIHdoaWNoIG11c3QgYmUgYSBieXRlcyBvYmplY3Qgb2YgbGVuZ3RoIDI1Ni5cbiIKICJcbiIKLSJBbGwgY2hhcmFjdGVycyBvY2N1cnJpbmcgaW4gdGhlIG9wdGlvbmFsIGFyZ3VtZW50IGRlbGV0ZWNoYXJzIGFyZSByZW1vdmVkLlxuIgorIkFsbCBjaGFyYWN0ZXJzIG9jY3VycmluZyBpbiB0aGUgb3B0aW9uYWwgYXJndW1lbnQgZGVsZXRlIGFyZSByZW1vdmVkLlxuIgogIlRoZSByZW1haW5pbmcgY2hhcmFjdGVycyBhcmUgbWFwcGVkIHRocm91Z2ggdGhlIGdpdmVuIHRyYW5zbGF0aW9uIHRhYmxlLiIpOwogCiAjZGVmaW5lIEJZVEVTX1RSQU5TTEFURV9NRVRIT0RERUYgICAgXAotICAgIHsidHJhbnNsYXRlIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3RyYW5zbGF0ZSwgTUVUSF9WQVJBUkdTLCBieXRlc190cmFuc2xhdGVfX2RvY19ffSwKKyAgICB7InRyYW5zbGF0ZSIsIChQeUNGdW5jdGlvbilieXRlc190cmFuc2xhdGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3RyYW5zbGF0ZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfdHJhbnNsYXRlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKnRhYmxlLCBpbnQgZ3JvdXBfcmlnaHRfMSwKK2J5dGVzX3RyYW5zbGF0ZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp0YWJsZSwKICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpkZWxldGVjaGFycyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCitieXRlc190cmFuc2xhdGUoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyIiLCAiZGVsZXRlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT3xPOnRyYW5zbGF0ZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnRhYmxlOwotICAgIGludCBncm91cF9yaWdodF8xID0gMDsKICAgICBQeU9iamVjdCAqZGVsZXRlY2hhcnMgPSBOVUxMOwogCi0gICAgc3dpdGNoIChQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTzp0cmFuc2xhdGUiLCAmdGFibGUpKQotICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIDI6Ci0gICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk9POnRyYW5zbGF0ZSIsICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkKLSAgICAgICAgICAgICAgICBnb3RvIGV4aXQ7Ci0gICAgICAgICAgICBncm91cF9yaWdodF8xID0gMTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImJ5dGVzLnRyYW5zbGF0ZSByZXF1aXJlcyAxIHRvIDIgYXJndW1lbnRzIik7Ci0gICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZ0YWJsZSwgJmRlbGV0ZWNoYXJzKSkgeworICAgICAgICBnb3RvIGV4aXQ7CiAgICAgfQotICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3RyYW5zbGF0ZV9pbXBsKHNlbGYsIHRhYmxlLCBncm91cF9yaWdodF8xLCBkZWxldGVjaGFycyk7CisgICAgcmV0dXJuX3ZhbHVlID0gYnl0ZXNfdHJhbnNsYXRlX2ltcGwoc2VsZiwgdGFibGUsIGRlbGV0ZWNoYXJzKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwpAQCAtMzI3LDE3ICszMzEsMjAgQEAKICAgICBQeV9idWZmZXIgdG8gPSB7TlVMTCwgTlVMTH07CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSo6bWFrZXRyYW5zIiwKLSAgICAgICAgJmZybSwgJnRvKSkKKyAgICAgICAgJmZybSwgJnRvKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX21ha2V0cmFuc19pbXBsKCZmcm0sICZ0byk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3IgZnJtICovCi0gICAgaWYgKGZybS5vYmopCisgICAgaWYgKGZybS5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZmcm0pOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciB0byAqLwotICAgIGlmICh0by5vYmopCisgICAgaWYgKHRvLm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnRvKTsKKyAgICB9CiAKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQpAQCAtMzU5LDExICszNjYsMTEgQEAKICAgICB7InJlcGxhY2UiLCAoUHlDRnVuY3Rpb24pYnl0ZXNfcmVwbGFjZSwgTUVUSF9WQVJBUkdTLCBieXRlc19yZXBsYWNlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCi1ieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBQeV9idWZmZXIgKm9sZCwgUHlfYnVmZmVyICpuZXcsCitieXRlc19yZXBsYWNlX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlfYnVmZmVyICpvbGQsIFB5X2J1ZmZlciAqbmV3LAogICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgY291bnQpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzKQorYnl0ZXNfcmVwbGFjZShQeUJ5dGVzT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeV9idWZmZXIgb2xkID0ge05VTEwsIE5VTEx9OwpAQCAtMzcxLDE3ICszNzgsMjAgQEAKICAgICBQeV9zc2l6ZV90IGNvdW50ID0gLTE7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInkqeSp8bjpyZXBsYWNlIiwKLSAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkKKyAgICAgICAgJm9sZCwgJm5ldywgJmNvdW50KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3JlcGxhY2VfaW1wbChzZWxmLCAmb2xkLCAmbmV3LCBjb3VudCk7CiAKIGV4aXQ6CiAgICAgLyogQ2xlYW51cCBmb3Igb2xkICovCi0gICAgaWYgKG9sZC5vYmopCisgICAgaWYgKG9sZC5vYmopIHsKICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZvbGQpOworICAgIH0KICAgICAvKiBDbGVhbnVwIGZvciBuZXcgKi8KLSAgICBpZiAobmV3Lm9iaikKKyAgICBpZiAobmV3Lm9iaikgewogICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJm5ldyk7CisgICAgfQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZTsKIH0KQEAgLTQwMiwyMyArNDEyLDI1IEBACiAiICAgIGNhbiBoYW5kbGUgVW5pY29kZURlY29kZUVycm9ycy4iKTsKIAogI2RlZmluZSBCWVRFU19ERUNPREVfTUVUSE9EREVGICAgIFwKLSAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlc19kZWNvZGUsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19kZWNvZGVfX2RvY19ffSwKKyAgICB7ImRlY29kZSIsIChQeUNGdW5jdGlvbilieXRlc19kZWNvZGUsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX2RlY29kZV9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgotYnl0ZXNfZGVjb2RlX2ltcGwoUHlCeXRlc09iamVjdCpzZWxmLCBjb25zdCBjaGFyICplbmNvZGluZywKK2J5dGVzX2RlY29kZV9pbXBsKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIGNvbnN0IGNoYXIgKmVuY29kaW5nLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX2RlY29kZShQeUJ5dGVzT2JqZWN0KnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQorYnl0ZXNfZGVjb2RlKFB5Qnl0ZXNPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJlbmNvZGluZyIsICJlcnJvcnMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8c3M6ZGVjb2RlIiwgX2tleXdvcmRzLCAwfTsKICAgICBjb25zdCBjaGFyICplbmNvZGluZyA9IE5VTEw7CiAgICAgY29uc3QgY2hhciAqZXJyb3JzID0gTlVMTDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgInxzczpkZWNvZGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZlbmNvZGluZywgJmVycm9ycykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZlbmNvZGluZywgJmVycm9ycykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19kZWNvZGVfaW1wbChzZWxmLCBlbmNvZGluZywgZXJyb3JzKTsKIAogZXhpdDoKQEAgLTQzNSwyMSArNDQ3LDIzIEBACiAidHJ1ZS4iKTsKIAogI2RlZmluZSBCWVRFU19TUExJVExJTkVTX01FVEhPRERFRiAgICBcCi0gICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCBieXRlc19zcGxpdGxpbmVzX19kb2NfX30sCisgICAgeyJzcGxpdGxpbmVzIiwgKFB5Q0Z1bmN0aW9uKWJ5dGVzX3NwbGl0bGluZXMsIE1FVEhfRkFTVENBTEwsIGJ5dGVzX3NwbGl0bGluZXNfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXNfaW1wbChQeUJ5dGVzT2JqZWN0KnNlbGYsIGludCBrZWVwZW5kcyk7CitieXRlc19zcGxpdGxpbmVzX2ltcGwoUHlCeXRlc09iamVjdCAqc2VsZiwgaW50IGtlZXBlbmRzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ5dGVzX3NwbGl0bGluZXMoUHlCeXRlc09iamVjdCpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J5dGVzX3NwbGl0bGluZXMoUHlCeXRlc09iamVjdCAqc2VsZiwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtlZXBlbmRzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2VlcGVuZHMiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJ8aTpzcGxpdGxpbmVzIiwgX2tleXdvcmRzLCAwfTsKICAgICBpbnQga2VlcGVuZHMgPSAwOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAifGk6c3BsaXRsaW5lcyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmtlZXBlbmRzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmtlZXBlbmRzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ5dGVzX3NwbGl0bGluZXNfaW1wbChzZWxmLCBrZWVwZW5kcyk7CiAKIGV4aXQ6CkBAIC00NzcsMTEgKzQ5MSwxMiBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpzdHJpbmc7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6ZnJvbWhleCIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpmcm9taGV4IiwgJnN0cmluZykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBieXRlc19mcm9taGV4X2ltcGwodHlwZSwgc3RyaW5nKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWJkMGNlOGYyNWQ3ZTE4ZjQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJkYzNjOTNjZmQyZGM0NDAgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jbGluaWMvZGljdG9iamVjdC5jLmggYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaAppbmRleCA1Mjg4YjlhLi5kMGNkZmMzIDEwMDY0NAotLS0gYS9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaAorKysgYi9PYmplY3RzL2NsaW5pYy9kaWN0b2JqZWN0LmMuaApAQCAtMjMsOCArMjMsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZnJvbWtleXMiLAogICAgICAgICAxLCAyLAotICAgICAgICAmaXRlcmFibGUsICZ2YWx1ZSkpCisgICAgICAgICZpdGVyYWJsZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGRpY3RfZnJvbWtleXNfaW1wbCh0eXBlLCBpdGVyYWJsZSwgdmFsdWUpOwogCiBleGl0OgpAQCAtMzksNCArNDAsNCBAQAogCiAjZGVmaW5lIERJQ1RfX19DT05UQUlOU19fX01FVEhPRERFRiAgICBcCiAgICAgeyJfX2NvbnRhaW5zX18iLCAoUHlDRnVuY3Rpb24pZGljdF9fX2NvbnRhaW5zX18sIE1FVEhfT3xNRVRIX0NPRVhJU1QsIGRpY3RfX19jb250YWluc19fX19kb2NfX30sCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9ZmU3NGQ2NzYzMzJmZGJhNiBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9OTI2MzI2MTA5ZTNkOTgzOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9PYmplY3RzL2NsaW5pYy91bmljb2Rlb2JqZWN0LmMuaCBiL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCmluZGV4IGQ0MmE3MDAuLjg5MWU5MGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCisrKyBiL09iamVjdHMvY2xpbmljL3VuaWNvZGVvYmplY3QuYy5oCkBAIC0zMSwxMSArMzEsMTIgQEAKICAgICBQeU9iamVjdCAqeiA9IE5VTEw7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk98VVU6bWFrZXRyYW5zIiwKLSAgICAgICAgJngsICZ5LCAmeikpCisgICAgICAgICZ4LCAmeSwgJnopKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gdW5pY29kZV9tYWtldHJhbnNfaW1wbCh4LCB5LCB6KTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTk0YWZmZGZmNWIyZGFmZjUgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTRhODZkZDEwOGQ5MmQxMDQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9jb2Rlb2JqZWN0LmMgYi9PYmplY3RzL2NvZGVvYmplY3QuYwppbmRleCA5ZGY4N2IwLi5iNmU1YmQzIDEwMDY0NAotLS0gYS9PYmplY3RzL2NvZGVvYmplY3QuYworKysgYi9PYmplY3RzL2NvZGVvYmplY3QuYwpAQCAtMSwzICsxLDUgQEAKKyNpbmNsdWRlIDxzdGRib29sLmg+CisKICNpbmNsdWRlICJQeXRob24uaCIKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3RydWN0bWVtYmVyLmgiCkBAIC01LDYgKzcsMTIgQEAKICNkZWZpbmUgTkFNRV9DSEFSUyBcCiAgICAgIjAxMjM0NTY3ODlBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5eiIKIAorLyogSG9sZGVyIGZvciBjb19leHRyYSBpbmZvcm1hdGlvbiAqLwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5X3NzaXplX3QgY2Vfc2l6ZTsKKyAgICB2b2lkICoqY2VfZXh0cmFzOworfSBfUHlDb2RlT2JqZWN0RXh0cmE7CisKIC8qIGFsbF9uYW1lX2NoYXJzKHMpOiB0cnVlIGlmZiBhbGwgY2hhcnMgaW4gcyBhcmUgdmFsaWQgTkFNRV9DSEFSUyAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzQsNyArMTQyLDcgQEAKICAgICAgICAgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gYXJnY291bnQgKyBrd29ubHlhcmdjb3VudCArCiAgICAgICAgICAgICAoKGZsYWdzICYgQ09fVkFSQVJHUykgIT0gMCkgKyAoKGZsYWdzICYgQ09fVkFSS0VZV09SRFMpICE9IDApOwogICAgICAgICBQeV9zc2l6ZV90IGFsbG9jX3NpemUgPSBzaXplb2YodW5zaWduZWQgY2hhcikgKiBuX2NlbGx2YXJzOwotICAgICAgICBpbnQgdXNlZF9jZWxsMmFyZyA9IDA7CisgICAgICAgIGJvb2wgdXNlZF9jZWxsMmFyZyA9IGZhbHNlOwogICAgICAgICBjZWxsMmFyZyA9IFB5TWVtX01BTExPQyhhbGxvY19zaXplKTsKICAgICAgICAgaWYgKGNlbGwyYXJnID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE0Nyw3ICsxNTUsNyBAQAogICAgICAgICAgICAgICAgIFB5T2JqZWN0ICphcmcgPSBQeVR1cGxlX0dFVF9JVEVNKHZhcm5hbWVzLCBqKTsKICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9Db21wYXJlKGNlbGwsIGFyZykpIHsKICAgICAgICAgICAgICAgICAgICAgY2VsbDJhcmdbaV0gPSBqOwotICAgICAgICAgICAgICAgICAgICB1c2VkX2NlbGwyYXJnID0gMTsKKyAgICAgICAgICAgICAgICAgICAgdXNlZF9jZWxsMmFyZyA9IHRydWU7CiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KQEAgLTE5MCw2ICsxOTgsNyBAQAogICAgIGNvLT5jb19sbm90YWIgPSBsbm90YWI7CiAgICAgY28tPmNvX3pvbWJpZWZyYW1lID0gTlVMTDsKICAgICBjby0+Y29fd2Vha3JlZmxpc3QgPSBOVUxMOworICAgIGNvLT5jb19leHRyYSA9IE5VTEw7CiAgICAgcmV0dXJuIGNvOwogfQogCkBAIC0zOTksNiArNDA4LDIxIEBACiBzdGF0aWMgdm9pZAogY29kZV9kZWFsbG9jKFB5Q29kZU9iamVjdCAqY28pCiB7CisgICAgaWYgKGNvLT5jb19leHRyYSAhPSBOVUxMKSB7CisgICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgICAgIF9QeUNvZGVPYmplY3RFeHRyYSAqY29fZXh0cmEgPSBjby0+Y29fZXh0cmE7CisKKyAgICAgICAgZm9yIChQeV9zc2l6ZV90IGkgPSAwOyBpIDwgY29fZXh0cmEtPmNlX3NpemU7IGkrKykgeworICAgICAgICAgICAgZnJlZWZ1bmMgZnJlZV9leHRyYSA9IHRzdGF0ZS0+Y29fZXh0cmFfZnJlZWZ1bmNzW2ldOworCisgICAgICAgICAgICBpZiAoZnJlZV9leHRyYSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgZnJlZV9leHRyYShjb19leHRyYS0+Y2VfZXh0cmFzW2ldKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIFB5TWVtX0ZSRUUoY28tPmNvX2V4dHJhKTsKKyAgICB9CisKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb2RlKTsKICAgICBQeV9YREVDUkVGKGNvLT5jb19jb25zdHMpOwogICAgIFB5X1hERUNSRUYoY28tPmNvX25hbWVzKTsKQEAgLTczMiw3ICs3NTYsOCBAQAogICAgICAgICBhZGRyICs9ICpwKys7CiAgICAgICAgIGlmIChhZGRyID4gYWRkcnEpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgbGluZSArPSAqcCsrOworICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcikqcDsKKyAgICAgICAgcCsrOwogICAgIH0KICAgICByZXR1cm4gbGluZTsKIH0KQEAgLTc2NywxNyArNzkyLDE5IEBACiAgICAgICAgIGlmIChhZGRyICsgKnAgPiBsYXN0aSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgIGlmICgqcCkKKyAgICAgICAgaWYgKChzaWduZWQgY2hhcikqcCkKICAgICAgICAgICAgIGJvdW5kcy0+YXBfbG93ZXIgPSBhZGRyOwotICAgICAgICBsaW5lICs9ICpwKys7CisgICAgICAgIGxpbmUgKz0gKHNpZ25lZCBjaGFyKSpwOworICAgICAgICBwKys7CiAgICAgICAgIC0tc2l6ZTsKICAgICB9CiAKICAgICBpZiAoc2l6ZSA+IDApIHsKICAgICAgICAgd2hpbGUgKC0tc2l6ZSA+PSAwKSB7CiAgICAgICAgICAgICBhZGRyICs9ICpwKys7Ci0gICAgICAgICAgICBpZiAoKnArKykKKyAgICAgICAgICAgIGlmICgoc2lnbmVkIGNoYXIpKnApCiAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBwKys7CiAgICAgICAgIH0KICAgICAgICAgYm91bmRzLT5hcF91cHBlciA9IGFkZHI7CiAgICAgfQpAQCAtNzg3LDMgKzgxNCw4MCBAQAogCiAgICAgcmV0dXJuIGxpbmU7CiB9CisKKworaW50CitfUHlDb2RlX0dldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICoqZXh0cmEpCit7CisgICAgYXNzZXJ0KCpleHRyYSA9PSBOVUxMKTsKKworICAgIGlmICghUHlDb2RlX0NoZWNrKGNvZGUpKSB7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgUHlDb2RlT2JqZWN0ICpvID0gKFB5Q29kZU9iamVjdCopIGNvZGU7CisgICAgX1B5Q29kZU9iamVjdEV4dHJhICpjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEqKSBvLT5jb19leHRyYTsKKworCisgICAgaWYgKGNvX2V4dHJhID09IE5VTEwgfHwgY29fZXh0cmEtPmNlX3NpemUgPD0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCisgICAgKmV4dHJhID0gY29fZXh0cmEtPmNlX2V4dHJhc1tpbmRleF07CisgICAgcmV0dXJuIDA7Cit9CisKKworaW50CitfUHlDb2RlX1NldEV4dHJhKFB5T2JqZWN0ICpjb2RlLCBQeV9zc2l6ZV90IGluZGV4LCB2b2lkICpleHRyYSkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOworCisgICAgaWYgKCFQeUNvZGVfQ2hlY2soY29kZSkgfHwgaW5kZXggPCAwIHx8CisgICAgICAgICAgICBpbmRleCA+PSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeUNvZGVPYmplY3QgKm8gPSAoUHlDb2RlT2JqZWN0KikgY29kZTsKKyAgICBfUHlDb2RlT2JqZWN0RXh0cmEgKmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSAqKSBvLT5jb19leHRyYTsKKworICAgIGlmIChjb19leHRyYSA9PSBOVUxMKSB7CisgICAgICAgIG8tPmNvX2V4dHJhID0gKF9QeUNvZGVPYmplY3RFeHRyYSopIFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHNpemVvZihfUHlDb2RlT2JqZWN0RXh0cmEpKTsKKyAgICAgICAgaWYgKG8tPmNvX2V4dHJhID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBjb19leHRyYSA9IChfUHlDb2RlT2JqZWN0RXh0cmEgKikgby0+Y29fZXh0cmE7CisKKyAgICAgICAgY29fZXh0cmEtPmNlX2V4dHJhcyA9IFB5TWVtX01hbGxvYygKKyAgICAgICAgICAgIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworICAgICAgICBpZiAoY29fZXh0cmEtPmNlX2V4dHJhcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICBjb19leHRyYS0+Y2Vfc2l6ZSA9IHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudDsKKworICAgICAgICBmb3IgKFB5X3NzaXplX3QgaSA9IDA7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIGlmIChjb19leHRyYS0+Y2Vfc2l6ZSA8PSBpbmRleCkgeworICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzID0gUHlNZW1fUmVhbGxvYygKKyAgICAgICAgICAgIGNvX2V4dHJhLT5jZV9leHRyYXMsIHRzdGF0ZS0+Y29fZXh0cmFfdXNlcl9jb3VudCAqIHNpemVvZih2b2lkKikpOworCisgICAgICAgIGlmIChjb19leHRyYS0+Y2VfZXh0cmFzID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorCisgICAgICAgIGNvX2V4dHJhLT5jZV9zaXplID0gdHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50OworCisgICAgICAgIGZvciAoUHlfc3NpemVfdCBpID0gY29fZXh0cmEtPmNlX3NpemU7IGkgPCBjb19leHRyYS0+Y2Vfc2l6ZTsgaSsrKSB7CisgICAgICAgICAgICBjb19leHRyYS0+Y2VfZXh0cmFzW2ldID0gTlVMTDsKKyAgICAgICAgfQorICAgIH0KKworICAgIGNvX2V4dHJhLT5jZV9leHRyYXNbaW5kZXhdID0gZXh0cmE7CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9PYmplY3RzL2NvbXBsZXhvYmplY3QuYyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCmluZGV4IGQ4MmM1ZWIuLjMxZTEyNzggMTAwNjQ0Ci0tLSBhL09iamVjdHMvY29tcGxleG9iamVjdC5jCisrKyBiL09iamVjdHMvY29tcGxleG9iamVjdC5jCkBAIC03NTksMjkgKzc1OSwxMiBAQAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWNvbXBsZXhfc3VidHlwZV9mcm9tX3N0cmluZyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICp2KQorY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqdHlwZSkKIHsKLSAgICBjb25zdCBjaGFyICpzLCAqc3RhcnQ7Ci0gICAgY2hhciAqZW5kOwogICAgIGRvdWJsZSB4PTAuMCwgeT0wLjAsIHo7CiAgICAgaW50IGdvdF9icmFja2V0PTA7Ci0gICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKLSAgICBQeV9zc2l6ZV90IGxlbjsKLQotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2sodikpIHsKLSAgICAgICAgc19idWZmZXIgPSBfUHlVbmljb2RlX1RyYW5zZm9ybURlY2ltYWxBbmRTcGFjZVRvQVNDSUkodik7Ci0gICAgICAgIGlmIChzX2J1ZmZlciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7Ci0gICAgICAgIGlmIChzID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKLSAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisgICAgY29uc3QgY2hhciAqc3RhcnQ7CisgICAgY2hhciAqZW5kOwogCiAgICAgLyogcG9zaXRpb24gb24gZmlyc3Qgbm9uYmxhbmsgKi8KICAgICBzdGFydCA9IHM7CkBAIC04MjIsNyArODA1LDcgQEAKICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfVmFsdWVFcnJvcikpCiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICBlbHNlCi0gICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChlbmQgIT0gcykgewogICAgICAgICAvKiBhbGwgNCBmb3JtcyBzdGFydGluZyB3aXRoIDxmbG9hdD4gbGFuZCBoZXJlICovCkBAIC04MzUsNyArODE4LDcgQEAKICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19WYWx1ZUVycm9yKSkKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKGVuZCAhPSBzKQogICAgICAgICAgICAgICAgIC8qIDxmbG9hdD48c2lnbmVkLWZsb2F0PmogKi8KQEAgLTg5MCwxOCArODczLDQ2IEBACiAgICAgaWYgKHMtc3RhcnQgIT0gbGVuKQogICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwogCi0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7Ci0gICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXModHlwZSwgeCwgeSk7CisgICAgcmV0dXJuIGNvbXBsZXhfc3VidHlwZV9mcm9tX2RvdWJsZXMoKFB5VHlwZU9iamVjdCAqKXR5cGUsIHgsIHkpOwogCiAgIHBhcnNlX2Vycm9yOgogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAiY29tcGxleCgpIGFyZyBpcyBhIG1hbGZvcm1lZCBzdHJpbmciKTsKLSAgZXJyb3I6Ci0gICAgUHlfWERFQ1JFRihzX2J1ZmZlcik7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCitjb21wbGV4X3N1YnR5cGVfZnJvbV9zdHJpbmcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqdikKK3sKKyAgICBjb25zdCBjaGFyICpzOworICAgIFB5T2JqZWN0ICpzX2J1ZmZlciA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5X3NzaXplX3QgbGVuOworCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayh2KSkgeworICAgICAgICBzX2J1ZmZlciA9IF9QeVVuaWNvZGVfVHJhbnNmb3JtRGVjaW1hbEFuZFNwYWNlVG9BU0NJSSh2KTsKKyAgICAgICAgaWYgKHNfYnVmZmVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHMgPSBQeVVuaWNvZGVfQXNVVEY4QW5kU2l6ZShzX2J1ZmZlciwgJmxlbik7CisgICAgICAgIGlmIChzID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICJjb21wbGV4KCkgYXJndW1lbnQgbXVzdCBiZSBhIHN0cmluZyBvciBhIG51bWJlciwgbm90ICclLjIwMHMnIiwKKyAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImNvbXBsZXgiLCB2LCB0eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxleF9mcm9tX3N0cmluZ19pbm5lcik7CisgIGV4aXQ6CisgICAgUHlfREVDUkVGKHNfYnVmZmVyKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgUHlPYmplY3QgKgogY29tcGxleF9uZXcoUHlUeXBlT2JqZWN0ICp0eXBlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7CiAgICAgUHlPYmplY3QgKnIsICppLCAqdG1wOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kZXNjcm9iamVjdC5jIGIvT2JqZWN0cy9kZXNjcm9iamVjdC5jCmluZGV4IGRhNjhlM2IuLjA3NmU3NDEgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZGVzY3JvYmplY3QuYworKysgYi9PYmplY3RzL2Rlc2Nyb2JqZWN0LmMKQEAgLTIyLDcgKzIyLDcgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNoYXIgKmZvcm1hdCkKK2Rlc2NyX3JlcHIoUHlEZXNjck9iamVjdCAqZGVzY3IsIGNvbnN0IGNoYXIgKmZvcm1hdCkKIHsKICAgICBQeU9iamVjdCAqbmFtZSA9IE5VTEw7CiAgICAgaWYgKGRlc2NyLT5kX25hbWUgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2soZGVzY3ItPmRfbmFtZSkpCkBAIC0yMTMsNyArMjEzLDcgQEAKIG1ldGhvZGRlc2NyX2NhbGwoUHlNZXRob2REZXNjck9iamVjdCAqZGVzY3IsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeV9zc2l6ZV90IGFyZ2M7Ci0gICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0OworICAgIFB5T2JqZWN0ICpzZWxmLCAqZnVuYywgKnJlc3VsdCwgKipzdGFjazsKIAogICAgIC8qIE1ha2Ugc3VyZSB0aGF0IHRoZSBmaXJzdCBhcmd1bWVudCBpcyBhY2NlcHRhYmxlIGFzICdzZWxmJyAqLwogICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKQEAgLTI0MiwxMyArMjQyLDggQEAKICAgICBmdW5jID0gUHlDRnVuY3Rpb25fTmV3RXgoZGVzY3ItPmRfbWV0aG9kLCBzZWxmLCBOVUxMKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICBzdGFjayA9ICZQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIDEpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgc3RhY2ssIGFyZ2MgLSAxLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KQEAgLTI1OCw3ICsyNTMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMjk1LDE0ICsyOTAsOSBAQAogICAgIGZ1bmMgPSBQeUNGdW5jdGlvbl9OZXdFeChkZXNjci0+ZF9tZXRob2QsIHNlbGYsIE5VTEwpOwogICAgIGlmIChmdW5jID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFyZ3MgPSBQeVR1cGxlX0dldFNsaWNlKGFyZ3MsIDEsIGFyZ2MpOwotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoZnVuYywgYXJncywga3dkcyk7CisgICAgc3RhY2sgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAxKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KGZ1bmMsIHN0YWNrLCBhcmdjIC0gMSwga3dkcyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0zMTAsNyArMzAwLDcgQEAKIHdyYXBwZXJkZXNjcl9jYWxsKFB5V3JhcHBlckRlc2NyT2JqZWN0ICpkZXNjciwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIFB5X3NzaXplX3QgYXJnYzsKLSAgICBQeU9iamVjdCAqc2VsZiwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKnNlbGYsICpmdW5jLCAqcmVzdWx0LCAqKnN0YWNrOwogCiAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IGFyZ3VtZW50IGlzIGFjY2VwdGFibGUgYXMgJ3NlbGYnICovCiAgICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwpAQCAtMzM5LDEzICszMjksOSBAQAogICAgIGZ1bmMgPSBQeVdyYXBwZXJfTmV3KChQeU9iamVjdCAqKWRlc2NyLCBzZWxmKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCBhcmdjKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKGZ1bmMsIGFyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihhcmdzKTsKKworICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBzdGFjaywgYXJnYyAtIDEsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQpAQCAtMTAzMyw3ICsxMDE5LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3cmFwcGVyX3JpY2hjb21wYXJlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG9wKQogewotICAgIFB5X2ludHB0cl90IHJlc3VsdDsKKyAgICBpbnRwdHJfdCByZXN1bHQ7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlXcmFwcGVyRGVzY3JPYmplY3QgKmFfZGVzY3IsICpiX2Rlc2NyOwogCmRpZmYgLS1naXQgYS9PYmplY3RzL2RpY3QtY29tbW9uLmggYi9PYmplY3RzL2RpY3QtY29tbW9uLmgKaW5kZXggMjkxMmViOS4uY2U5ZWRhYiAxMDA2NDQKLS0tIGEvT2JqZWN0cy9kaWN0LWNvbW1vbi5oCisrKyBiL09iamVjdHMvZGljdC1jb21tb24uaApAQCAtOCwxNSArOCw2OSBAQAogICAgIFB5T2JqZWN0ICptZV92YWx1ZTsgLyogVGhpcyBmaWVsZCBpcyBvbmx5IG1lYW5pbmdmdWwgZm9yIGNvbWJpbmVkIHRhYmxlcyAqLwogfSBQeURpY3RLZXlFbnRyeTsKIAotdHlwZWRlZiBQeURpY3RLZXlFbnRyeSAqKCpkaWN0X2xvb2t1cF9mdW5jKQotKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKTsKKy8qIGRpY3RfbG9va3VwX2Z1bmMoKSByZXR1cm5zIGluZGV4IG9mIGVudHJ5IHdoaWNoIGNhbiBiZSB1c2VkIGxpa2UgREtfRU5UUklFUyhkaylbaW5kZXhdLgorICogLTEgd2hlbiBubyBlbnRyeSBmb3VuZCwgLTMgd2hlbiBjb21wYXJlIHJhaXNlcyBlcnJvci4KKyAqLwordHlwZWRlZiBQeV9zc2l6ZV90ICgqZGljdF9sb29rdXBfZnVuYykKKyhQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyBQeV9zc2l6ZV90ICpoYXNocG9zKTsKIAorI2RlZmluZSBES0lYX0VNUFRZICgtMSkKKyNkZWZpbmUgREtJWF9EVU1NWSAoLTIpICAvKiBVc2VkIGludGVybmFsbHkgKi8KKyNkZWZpbmUgREtJWF9FUlJPUiAoLTMpCisKKy8qIFNlZSBkaWN0b2JqZWN0LmMgZm9yIGFjdHVhbCBsYXlvdXQgb2YgRGljdEtleXNPYmplY3QgKi8KIHN0cnVjdCBfZGljdGtleXNvYmplY3QgewogICAgIFB5X3NzaXplX3QgZGtfcmVmY250OworCisgICAgLyogU2l6ZSBvZiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcykuIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLiAqLwogICAgIFB5X3NzaXplX3QgZGtfc2l6ZTsKKworICAgIC8qIEZ1bmN0aW9uIHRvIGxvb2t1cCBpbiB0aGUgaGFzaCB0YWJsZSAoZGtfaW5kaWNlcyk6CisKKyAgICAgICAtIGxvb2tkaWN0KCk6IGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gREtJWF9FUlJPUiBpZiAoYW5kCisgICAgICAgICBvbmx5IGlmKSBhIGNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbi4KKworICAgICAgIC0gbG9va2RpY3RfdW5pY29kZSgpOiBzcGVjaWFsaXplZCB0byBVbmljb2RlIHN0cmluZyBrZXlzLCBjb21wYXJpc29uIG9mCisgICAgICAgICB3aGljaCBjYW4gbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4KKyAgICAgICAgIERLSVhfRVJST1IuCisKKyAgICAgICAtIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSgpOiBzaW1pbGFyIHRvIGxvb2tkaWN0X3VuaWNvZGUoKSBidXQgZnVydGhlcgorICAgICAgICAgc3BlY2lhbGl6ZWQgZm9yIFVuaWNvZGUgc3RyaW5nIGtleXMgdGhhdCBjYW5ub3QgYmUgdGhlIDxkdW1teT4gdmFsdWUuCisKKyAgICAgICAtIGxvb2tkaWN0X3NwbGl0KCk6IFZlcnNpb24gb2YgbG9va2RpY3QoKSBmb3Igc3BsaXQgdGFibGVzLiAqLwogICAgIGRpY3RfbG9va3VwX2Z1bmMgZGtfbG9va3VwOworCisgICAgLyogTnVtYmVyIG9mIHVzYWJsZSBlbnRyaWVzIGluIGRrX2VudHJpZXMuICovCiAgICAgUHlfc3NpemVfdCBka191c2FibGU7Ci0gICAgUHlEaWN0S2V5RW50cnkgZGtfZW50cmllc1sxXTsKKworICAgIC8qIE51bWJlciBvZiB1c2VkIGVudHJpZXMgaW4gZGtfZW50cmllcy4gKi8KKyAgICBQeV9zc2l6ZV90IGRrX25lbnRyaWVzOworCisgICAgLyogQWN0dWFsIGhhc2ggdGFibGUgb2YgZGtfc2l6ZSBlbnRyaWVzLiBJdCBob2xkcyBpbmRpY2VzIGluIGRrX2VudHJpZXMsCisgICAgICAgb3IgREtJWF9FTVBUWSgtMSkgb3IgREtJWF9EVU1NWSgtMikuCisKKyAgICAgICBJbmRpY2VzIG11c3QgYmU6IDAgPD0gaW5kaWNlIDwgVVNBQkxFX0ZSQUNUSU9OKGRrX3NpemUpLgorCisgICAgICAgVGhlIHNpemUgaW4gYnl0ZXMgb2YgYW4gaW5kaWNlIGRlcGVuZHMgb24gZGtfc2l6ZToKKworICAgICAgIC0gMSBieXRlIGlmIGRrX3NpemUgPD0gMHhmZiAoY2hhciopCisgICAgICAgLSAyIGJ5dGVzIGlmIGRrX3NpemUgPD0gMHhmZmZmIChpbnQxNl90KikKKyAgICAgICAtIDQgYnl0ZXMgaWYgZGtfc2l6ZSA8PSAweGZmZmZmZmZmIChpbnQzMl90KikKKyAgICAgICAtIDggYnl0ZXMgb3RoZXJ3aXNlIChpbnQ2NF90KikKKworICAgICAgIER5bmFtaWNhbGx5IHNpemVkLCA4IGlzIG1pbmltdW0uICovCisgICAgdW5pb24geworICAgICAgICBpbnQ4X3QgYXNfMVs4XTsKKyAgICAgICAgaW50MTZfdCBhc18yWzRdOworICAgICAgICBpbnQzMl90IGFzXzRbMl07CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICAgICAgaW50NjRfdCBhc184WzFdOworI2VuZGlmCisgICAgfSBka19pbmRpY2VzOworCisgICAgLyogIlB5RGljdEtleUVudHJ5IGRrX2VudHJpZXNbZGtfdXNhYmxlXTsiIGFycmF5IGZvbGxvd3M6CisgICAgICAgc2VlIHRoZSBES19FTlRSSUVTKCkgbWFjcm8gKi8KIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy9kaWN0b2JqZWN0LmMgYi9PYmplY3RzL2RpY3RvYmplY3QuYwppbmRleCBlNzlhYjM2Li4wM2M5NzNiIDEwMDY0NAotLS0gYS9PYmplY3RzL2RpY3RvYmplY3QuYworKysgYi9PYmplY3RzL2RpY3RvYmplY3QuYwpAQCAtMSw0ICsxLDMgQEAKLQogLyogRGljdGlvbmFyeSBvYmplY3QgaW1wbGVtZW50YXRpb24gdXNpbmcgYSBoYXNoIHRhYmxlICovCiAKIC8qIFRoZSBkaXN0cmlidXRpb24gaW5jbHVkZXMgYSBzZXBhcmF0ZSBmaWxlLCBPYmplY3RzL2RpY3Rub3Rlcy50eHQsCkBAIC03LDY4ICs2LDExMiBAQAogICAgdHVuaW5nIGRpY3Rpb25hcmllcywgYW5kIHNldmVyYWwgaWRlYXMgZm9yIHBvc3NpYmxlIG9wdGltaXphdGlvbnMuCiAqLwogCisvKiBQeURpY3RLZXlzT2JqZWN0CisKK1RoaXMgaW1wbGVtZW50cyB0aGUgZGljdGlvbmFyeSdzIGhhc2h0YWJsZS4KKworQXMgb2YgUHl0aG9uIDMuNiwgdGhpcyBpcyBjb21wYWN0IGFuZCBvcmRlcmVkLiBCYXNpYyBpZGVhIGlzIGRlc2NyaWJlZCBoZXJlLgoraHR0cHM6Ly9tb3JlcHlweS5ibG9nc3BvdC5jb20vMjAxNS8wMS9mYXN0ZXItbW9yZS1tZW1vcnktZWZmaWNpZW50LWFuZC1tb3JlLmh0bWwKKworbGF5b3V0OgorCisrLS0tLS0tLS0tLS0tLS0tKworfCBka19yZWZjbnQgICAgIHwKK3wgZGtfc2l6ZSAgICAgICB8Cit8IGRrX2xvb2t1cCAgICAgfAorfCBka191c2FibGUgICAgIHwKK3wgZGtfbmVudHJpZXMgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19pbmRpY2VzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworfCBka19lbnRyaWVzICAgIHwKK3wgICAgICAgICAgICAgICB8CisrLS0tLS0tLS0tLS0tLS0tKworCitka19pbmRpY2VzIGlzIGFjdHVhbCBoYXNodGFibGUuICBJdCBob2xkcyBpbmRleCBpbiBlbnRyaWVzLCBvciBES0lYX0VNUFRZKC0xKQorb3IgREtJWF9EVU1NWSgtMikuCitTaXplIG9mIGluZGljZXMgaXMgZGtfc2l6ZS4gIFR5cGUgb2YgZWFjaCBpbmRleCBpbiBpbmRpY2VzIGlzIHZhcnkgb24gZGtfc2l6ZToKKworKiBpbnQ4ICBmb3IgICAgICAgICAgZGtfc2l6ZSA8PSAxMjgKKyogaW50MTYgZm9yIDI1NiAgIDw9IGRrX3NpemUgPD0gMioqMTUKKyogaW50MzIgZm9yIDIqKjE2IDw9IGRrX3NpemUgPD0gMioqMzEKKyogaW50NjQgZm9yIDIqKjMyIDw9IGRrX3NpemUKKworZGtfZW50cmllcyBpcyBhcnJheSBvZiBQeURpY3RLZXlFbnRyeS4gIEl0J3Mgc2l6ZSBpcyBVU0FCTEVfRlJBQ1RJT04oZGtfc2l6ZSkuCitES19FTlRSSUVTKGRrKSBjYW4gYmUgdXNlZCB0byBnZXQgcG9pbnRlciB0byBlbnRyaWVzLgorCitOT1RFOiBTaW5jZSBuZWdhdGl2ZSB2YWx1ZSBpcyB1c2VkIGZvciBES0lYX0VNUFRZIGFuZCBES0lYX0RVTU1ZLCB0eXBlIG9mCitka19pbmRpY2VzIGVudHJ5IGlzIHNpZ25lZCBpbnRlZ2VyIGFuZCBpbnQxNiBpcyB1c2VkIGZvciB0YWJsZSB3aGljaAorZGtfc2l6ZSA9PSAyNTYuCisqLworCiAKIC8qCi1UaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGU6Ci0KLTEuIFVudXNlZC4gIG1lX2tleSA9PSBtZV92YWx1ZSA9PSBOVUxMCi0gICBEb2VzIG5vdCBob2xkIGFuIGFjdGl2ZSAoa2V5LCB2YWx1ZSkgcGFpciBub3cgYW5kIG5ldmVyIGRpZC4gIFVudXNlZCBjYW4KLSAgIHRyYW5zaXRpb24gdG8gQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIFRoaXMgaXMgdGhlIG9ubHkgY2FzZSBpbiB3aGljaAotICAgbWVfa2V5IGlzIE5VTEwsIGFuZCBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgotCi0yLiBBY3RpdmUuICBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfa2V5ICE9IGR1bW15IGFuZCBtZV92YWx1ZSAhPSBOVUxMCi0gICBIb2xkcyBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIuICBBY3RpdmUgY2FuIHRyYW5zaXRpb24gdG8gRHVtbXkgb3IKLSAgIFBlbmRpbmcgdXBvbiBrZXkgZGVsZXRpb24gKGZvciBjb21iaW5lZCBhbmQgc3BsaXQgdGFibGVzIHJlc3BlY3RpdmVseSkuCi0gICBUaGlzIGlzIHRoZSBvbmx5IGNhc2UgaW4gd2hpY2ggbWVfdmFsdWUgIT0gTlVMTC4KLQotMy4gRHVtbXkuICBtZV9rZXkgPT0gZHVtbXkgYW5kIG1lX3ZhbHVlID09IE5VTEwKLSAgIFByZXZpb3VzbHkgaGVsZCBhbiBhY3RpdmUgKGtleSwgdmFsdWUpIHBhaXIsIGJ1dCB0aGF0IHdhcyBkZWxldGVkIGFuZCBhbgotICAgYWN0aXZlIHBhaXIgaGFzIG5vdCB5ZXQgb3ZlcndyaXR0ZW4gdGhlIHNsb3QuICBEdW1teSBjYW4gdHJhbnNpdGlvbiB0bwotICAgQWN0aXZlIHVwb24ga2V5IGluc2VydGlvbi4gIER1bW15IHNsb3RzIGNhbm5vdCBiZSBtYWRlIFVudXNlZCBhZ2FpbgotICAgKGNhbm5vdCBoYXZlIG1lX2tleSBzZXQgdG8gTlVMTCksIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YKLSAgIGNvbGxpc2lvbiB3b3VsZCBoYXZlIG5vIHdheSB0byBrbm93IHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KLQotNC4gUGVuZGluZy4gTm90IHlldCBpbnNlcnRlZCBvciBkZWxldGVkIGZyb20gYSBzcGxpdC10YWJsZS4KLSAgIGtleSAhPSBOVUxMLCBrZXkgIT0gZHVtbXkgYW5kIHZhbHVlID09IE5VTEwKLQogVGhlIERpY3RPYmplY3QgY2FuIGJlIGluIG9uZSBvZiB0d28gZm9ybXMuCisKIEVpdGhlcjoKICAgQSBjb21iaW5lZCB0YWJsZToKICAgICBtYV92YWx1ZXMgPT0gTlVMTCwgZGtfcmVmY250ID09IDEuCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1lX3ZhbHVlIGZpZWxkIG9mIHRoZSBQeURpY3RLZXlzT2JqZWN0LgotICAgIFNsb3Qga2luZCA0IGlzIG5vdCBhbGxvd2VkIGkuZS4KLSAgICAgICAga2V5ICE9IE5VTEwsIGtleSAhPSBkdW1teSBhbmQgdmFsdWUgPT0gTlVMTCBpcyBpbGxlZ2FsLgogT3I6CiAgIEEgc3BsaXQgdGFibGU6CiAgICAgbWFfdmFsdWVzICE9IE5VTEwsIGRrX3JlZmNudCA+PSAxCiAgICAgVmFsdWVzIGFyZSBzdG9yZWQgaW4gdGhlIG1hX3ZhbHVlcyBhcnJheS4KLSAgICBPbmx5IHN0cmluZyAodW5pY29kZSkga2V5cyBhcmUgYWxsb3dlZCwgbm8gPGR1bW15PiBrZXlzIGFyZSBwcmVzZW50LgorICAgIE9ubHkgc3RyaW5nICh1bmljb2RlKSBrZXlzIGFyZSBhbGxvd2VkLgorICAgIEFsbCBkaWN0cyBzaGFyaW5nIHNhbWUga2V5IG11c3QgaGF2ZSBzYW1lIGluc2VydGlvbiBvcmRlci4KIAotTm90ZTogLnBvcGl0ZW0oKSBhYnVzZXMgdGhlIG1lX2hhc2ggZmllbGQgb2YgYW4gVW51c2VkIG9yIER1bW15IHNsb3QgdG8KLWhvbGQgYSBzZWFyY2ggZmluZ2VyLiAgVGhlIG1lX2hhc2ggZmllbGQgb2YgVW51c2VkIG9yIER1bW15IHNsb3RzIGhhcyBubwotbWVhbmluZyBvdGhlcndpc2UuIEFzIGEgY29uc2VxdWVuY2Ugb2YgdGhpcyBwb3BpdGVtIGFsd2F5cyBjb252ZXJ0cyB0aGUgZGljdAotdG8gdGhlIGNvbWJpbmVkLXRhYmxlIGZvcm0uCitUaGVyZSBhcmUgZm91ciBraW5kcyBvZiBzbG90cyBpbiB0aGUgdGFibGUgKHNsb3QgaXMgaW5kZXgsIGFuZAorREtfRU5UUklFUyhrZXlzKVtpbmRleF0gaWYgaW5kZXggPj0gMCk6CisKKzEuIFVudXNlZC4gIGluZGV4ID09IERLSVhfRU1QVFkKKyAgIERvZXMgbm90IGhvbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyIG5vdyBhbmQgbmV2ZXIgZGlkLiAgVW51c2VkIGNhbgorICAgdHJhbnNpdGlvbiB0byBBY3RpdmUgdXBvbiBrZXkgaW5zZXJ0aW9uLiAgVGhpcyBpcyBlYWNoIHNsb3QncyBpbml0aWFsIHN0YXRlLgorCisyLiBBY3RpdmUuICBpbmRleCA+PSAwLCBtZV9rZXkgIT0gTlVMTCBhbmQgbWVfdmFsdWUgIT0gTlVMTAorICAgSG9sZHMgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLiAgQWN0aXZlIGNhbiB0cmFuc2l0aW9uIHRvIER1bW15IG9yCisgICBQZW5kaW5nIHVwb24ga2V5IGRlbGV0aW9uIChmb3IgY29tYmluZWQgYW5kIHNwbGl0IHRhYmxlcyByZXNwZWN0aXZlbHkpLgorICAgVGhpcyBpcyB0aGUgb25seSBjYXNlIGluIHdoaWNoIG1lX3ZhbHVlICE9IE5VTEwuCisKKzMuIER1bW15LiAgaW5kZXggPT0gREtJWF9EVU1NWSAgKGNvbWJpbmVkIG9ubHkpCisgICBQcmV2aW91c2x5IGhlbGQgYW4gYWN0aXZlIChrZXksIHZhbHVlKSBwYWlyLCBidXQgdGhhdCB3YXMgZGVsZXRlZCBhbmQgYW4KKyAgIGFjdGl2ZSBwYWlyIGhhcyBub3QgeWV0IG92ZXJ3cml0dGVuIHRoZSBzbG90LiAgRHVtbXkgY2FuIHRyYW5zaXRpb24gdG8KKyAgIEFjdGl2ZSB1cG9uIGtleSBpbnNlcnRpb24uICBEdW1teSBzbG90cyBjYW5ub3QgYmUgbWFkZSBVbnVzZWQgYWdhaW4KKyAgIGVsc2UgdGhlIHByb2JlIHNlcXVlbmNlIGluIGNhc2Ugb2YgY29sbGlzaW9uIHdvdWxkIGhhdmUgbm8gd2F5IHRvIGtub3cKKyAgIHRoZXkgd2VyZSBvbmNlIGFjdGl2ZS4KKworNC4gUGVuZGluZy4gaW5kZXggPj0gMCwga2V5ICE9IE5VTEwsIGFuZCB2YWx1ZSA9PSBOVUxMICAoc3BsaXQgb25seSkKKyAgIE5vdCB5ZXQgaW5zZXJ0ZWQgaW4gc3BsaXQtdGFibGUuCiAqLwogCi0vKiBQeURpY3RfTUlOU0laRV9TUExJVCBpcyB0aGUgbWluaW11bSBzaXplIG9mIGEgc3BsaXQgZGljdGlvbmFyeS4KLSAqIEl0IG11c3QgYmUgYSBwb3dlciBvZiAyLCBhbmQgYXQgbGVhc3QgNC4KLSAqIFJlc2l6aW5nIG9mIHNwbGl0IGRpY3Rpb25hcmllcyBpcyB2ZXJ5IHJhcmUsIHNvIHRoZSBzYXZpbmcgbWVtb3J5IGlzIG1vcmUKLSAqIGltcG9ydGFudCB0aGFuIHRoZSBjb3N0IG9mIHJlc2l6aW5nLgotICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX1NQTElUIDQKKy8qCitQcmVzZXJ2aW5nIGluc2VydGlvbiBvcmRlcgogCi0vKiBQeURpY3RfTUlOU0laRV9DT01CSU5FRCBpcyB0aGUgc3RhcnRpbmcgc2l6ZSBmb3IgYW55IG5ldywgbm9uLXNwbGl0IGRpY3QuCitJdCdzIHNpbXBsZSBmb3IgY29tYmluZWQgdGFibGUuICBTaW5jZSBka19lbnRyaWVzIGlzIG1vc3RseSBhcHBlbmQgb25seSwgd2UgY2FuCitnZXQgaW5zZXJ0aW9uIG9yZGVyIGJ5IGp1c3QgaXRlcmF0aW5nIGRrX2VudHJpZXMuCisKK09uZSBleGNlcHRpb24gaXMgLnBvcGl0ZW0oKS4gIEl0IHJlbW92ZXMgbGFzdCBpdGVtIGluIGRrX2VudHJpZXMgYW5kIGRlY3JlbWVudAorZGtfbmVudHJpZXMgdG8gYWNoaWV2ZSBhbW9ydGl6ZWQgTygxKS4gIFNpbmNlIHRoZXJlIGFyZSBES0lYX0RVTU1ZIHJlbWFpbnMgaW4KK2RrX2luZGljZXMsIHdlIGNhbid0IGluY3JlbWVudCBka191c2FibGUgZXZlbiB0aG91Z2ggZGtfbmVudHJpZXMgaXMKK2RlY3JlbWVudGVkLgorCitJbiBzcGxpdCB0YWJsZSwgaW5zZXJ0aW5nIGludG8gcGVuZGluZyBlbnRyeSBpcyBhbGxvd2VkIG9ubHkgZm9yIGRrX2VudHJpZXNbaXhdCit3aGVyZSBpeCA9PSBtcC0+bWFfdXNlZC4gSW5zZXJ0aW5nIGludG8gb3RoZXIgaW5kZXggYW5kIGRlbGV0aW5nIGl0ZW0gY2F1c2UKK2NvbnZlcnRpbmcgdGhlIGRpY3QgdG8gdGhlIGNvbWJpbmVkIHRhYmxlLgorKi8KKworLyogUHlEaWN0X01JTlNJWkUgaXMgdGhlIHN0YXJ0aW5nIHNpemUgZm9yIGFueSBuZXcgZGljdC4KICAqIDggYWxsb3dzIGRpY3RzIHdpdGggbm8gbW9yZSB0aGFuIDUgYWN0aXZlIGVudHJpZXM7IGV4cGVyaW1lbnRzIHN1Z2dlc3RlZAogICogdGhpcyBzdWZmaWNlcyBmb3IgdGhlIG1ham9yaXR5IG9mIGRpY3RzIChjb25zaXN0aW5nIG1vc3RseSBvZiB1c3VhbGx5LXNtYWxsCiAgKiBkaWN0cyBjcmVhdGVkIHRvIHBhc3Mga2V5d29yZCBhcmd1bWVudHMpLgogICogTWFraW5nIHRoaXMgOCwgcmF0aGVyIHRoYW4gNCByZWR1Y2VzIHRoZSBudW1iZXIgb2YgcmVzaXplcyBmb3IgbW9zdAogICogZGljdGlvbmFyaWVzLCB3aXRob3V0IGFueSBzaWduaWZpY2FudCBleHRyYSBtZW1vcnkgdXNlLgogICovCi0jZGVmaW5lIFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEIDgKKyNkZWZpbmUgUHlEaWN0X01JTlNJWkUgOAogCiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAiZGljdC1jb21tb24uaCIKLSNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIgICAgLyogdG8gZ2V0IHVuaWNvZGVfZXEoKSAqLwogCiAvKltjbGluaWMgaW5wdXRdCiBjbGFzcyBkaWN0ICJQeURpY3RPYmplY3QgKiIgIiZQeURpY3RfVHlwZSIKQEAgLTE0MSw4ICsxODQsOCBAQAogaW50byBwbGF5LiAgVGhpcyBpcyBkb25lIGJ5IGluaXRpYWxpemluZyBhICh1bnNpZ25lZCkgdnJibCAicGVydHVyYiIgdG8gdGhlCiBmdWxsIGhhc2ggY29kZSwgYW5kIGNoYW5naW5nIHRoZSByZWN1cnJlbmNlIHRvOgogCi0gICAgaiA9ICg1KmopICsgMSArIHBlcnR1cmI7CiAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICBqID0gKDUqaikgKyAxICsgcGVydHVyYjsKICAgICB1c2UgaiAlIDIqKmkgYXMgdGhlIG5leHQgdGFibGUgaW5kZXg7CiAKIE5vdyB0aGUgcHJvYmUgc2VxdWVuY2UgZGVwZW5kcyAoZXZlbnR1YWxseSkgb24gZXZlcnkgYml0IGluIHRoZSBoYXNoIGNvZGUsCkBAIC0xNzcsNDEgKzIyMCwzOCBAQAogCiAqLwogCi0vKiBPYmplY3QgdXNlZCBhcyBkdW1teSBrZXkgdG8gZmlsbCBkZWxldGVkIGVudHJpZXMKLSAqIFRoaXMgY291bGQgYmUgYW55IHVuaXF1ZSBvYmplY3QsCi0gKiB1c2UgYSBjdXN0b20gdHlwZSBpbiBvcmRlciB0byBtaW5pbWlzZSBjb3VwbGluZy4KLSovCi1zdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdDsKLQotI2RlZmluZSBkdW1teSAoJl9kdW1teV9zdHJ1Y3QpCi0KLSNpZmRlZiBQeV9SRUZfREVCVUcKLVB5T2JqZWN0ICoKLV9QeURpY3RfRHVtbXkodm9pZCkKLXsKLSAgICByZXR1cm4gZHVtbXk7Ci19Ci0jZW5kaWYKLQogLyogZm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF91bmljb2RlKFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90IGxvb2tkaWN0KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgKmhhc2hwb3MpOworc3RhdGljIFB5X3NzaXplX3QgbG9va2RpY3RfdW5pY29kZShQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3RfdW5pY29kZV9ub2R1bW15KFB5RGljdE9iamVjdCAqbXAsIFB5T2JqZWN0ICprZXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpOwotc3RhdGljIFB5RGljdEtleUVudHJ5ICpsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcik7CisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqaGFzaHBvcyk7CitzdGF0aWMgUHlfc3NpemVfdCBsb29rZGljdF9zcGxpdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKTsKIAogc3RhdGljIGludCBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCk7CiAKLS8qIERpY3Rpb25hcnkgcmV1c2Ugc2NoZW1lIHRvIHNhdmUgY2FsbHMgdG8gbWFsbG9jLCBmcmVlLCBhbmQgbWVtc2V0ICovCisvKkdsb2JhbCBjb3VudGVyIHVzZWQgdG8gc2V0IG1hX3ZlcnNpb25fdGFnIGZpZWxkIG9mIGRpY3Rpb25hcnkuCisgKiBJdCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgdGhhdCBhIGRpY3Rpb25hcnkgaXMgY3JlYXRlZCBhbmQgZWFjaAorICogdGltZSB0aGF0IGEgZGljdGlvbmFyeSBpcyBtb2RpZmllZC4gKi8KK3N0YXRpYyB1aW50NjRfdCBweWRpY3RfZ2xvYmFsX3ZlcnNpb24gPSAwOworCisjZGVmaW5lIERJQ1RfTkVYVF9WRVJTSU9OKCkgKCsrcHlkaWN0X2dsb2JhbF92ZXJzaW9uKQorCisvKiBEaWN0aW9uYXJ5IHJldXNlIHNjaGVtZSB0byBzYXZlIGNhbGxzIHRvIG1hbGxvYyBhbmQgZnJlZSAqLwogI2lmbmRlZiBQeURpY3RfTUFYRlJFRUxJU1QKICNkZWZpbmUgUHlEaWN0X01BWEZSRUVMSVNUIDgwCiAjZW5kaWYKIHN0YXRpYyBQeURpY3RPYmplY3QgKmZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOwogc3RhdGljIGludCBudW1mcmVlID0gMDsKK3N0YXRpYyBQeURpY3RLZXlzT2JqZWN0ICprZXlzX2ZyZWVfbGlzdFtQeURpY3RfTUFYRlJFRUxJU1RdOworc3RhdGljIGludCBudW1mcmVla2V5cyA9IDA7CiAKICNpbmNsdWRlICJjbGluaWMvZGljdG9iamVjdC5jLmgiCiAKQEAgLTIxOSwxMiArMjU5LDE1IEBACiBQeURpY3RfQ2xlYXJGcmVlTGlzdCh2b2lkKQogewogICAgIFB5RGljdE9iamVjdCAqb3A7Ci0gICAgaW50IHJldCA9IG51bWZyZWU7CisgICAgaW50IHJldCA9IG51bWZyZWUgKyBudW1mcmVla2V5czsKICAgICB3aGlsZSAobnVtZnJlZSkgewogICAgICAgICBvcCA9IGZyZWVfbGlzdFstLW51bWZyZWVdOwogICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3Qob3ApKTsKICAgICAgICAgUHlPYmplY3RfR0NfRGVsKG9wKTsKICAgICB9CisgICAgd2hpbGUgKG51bWZyZWVrZXlzKSB7CisgICAgICAgIFB5T2JqZWN0X0ZSRUUoa2V5c19mcmVlX2xpc3RbLS1udW1mcmVla2V5c10pOworICAgIH0KICAgICByZXR1cm4gcmV0OwogfQogCkBAIC0yNDMsNDAgKzI4NiwxMTYgQEAKICAgICBQeURpY3RfQ2xlYXJGcmVlTGlzdCgpOwogfQogCisjZGVmaW5lIERLX1NJWkUoZGspICgoZGspLT5ka19zaXplKQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisjZGVmaW5lIERLX0lYU0laRShkaykgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoREtfU0laRShkaykgPD0gMHhmZiA/ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAxIDogREtfU0laRShkaykgPD0gMHhmZmZmID8gICAgICAgICAgICBcCisgICAgICAgICAgICAyIDogREtfU0laRShkaykgPD0gMHhmZmZmZmZmZiA/ICAgIFwKKyAgICAgICAgICAgICAgICA0IDogc2l6ZW9mKGludDY0X3QpKQorI2Vsc2UKKyNkZWZpbmUgREtfSVhTSVpFKGRrKSAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIChES19TSVpFKGRrKSA8PSAweGZmID8gICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIDEgOiBES19TSVpFKGRrKSA8PSAweGZmZmYgPyAgICAgICAgICAgIFwKKyAgICAgICAgICAgIDIgOiBzaXplb2YoaW50MzJfdCkpCisjZW5kaWYKKyNkZWZpbmUgREtfRU5UUklFUyhkaykgXAorICAgICgoUHlEaWN0S2V5RW50cnkqKSgmKGRrKS0+ZGtfaW5kaWNlcy5hc18xW0RLX1NJWkUoZGspICogREtfSVhTSVpFKGRrKV0pKQorCiAjZGVmaW5lIERLX0RFQlVHX0lOQ1JFRiBfUHlfSU5DX1JFRlRPVEFMIF9QeV9SRUZfREVCVUdfQ09NTUEKICNkZWZpbmUgREtfREVCVUdfREVDUkVGIF9QeV9ERUNfUkVGVE9UQUwgX1B5X1JFRl9ERUJVR19DT01NQQogCiAjZGVmaW5lIERLX0lOQ1JFRihkaykgKERLX0RFQlVHX0lOQ1JFRiArKyhkayktPmRrX3JlZmNudCkKICNkZWZpbmUgREtfREVDUkVGKGRrKSBpZiAoREtfREVCVUdfREVDUkVGICgtLShkayktPmRrX3JlZmNudCkgPT0gMCkgZnJlZV9rZXlzX29iamVjdChkaykKLSNkZWZpbmUgREtfU0laRShkaykgKChkayktPmRrX3NpemUpCiAjZGVmaW5lIERLX01BU0soZGspICgoKGRrKS0+ZGtfc2l6ZSktMSkKICNkZWZpbmUgSVNfUE9XRVJfT0ZfMih4KSAoKCh4KSAmICh4LTEpKSA9PSAwKQogCisvKiBsb29rdXAgaW5kaWNlcy4gIHJldHVybnMgREtJWF9FTVBUWSwgREtJWF9EVU1NWSwgb3IgaXggPj0wICovCitzdGF0aWMgaW5saW5lIFB5X3NzaXplX3QKK2RrX2dldF9pbmRleChQeURpY3RLZXlzT2JqZWN0ICprZXlzLCBQeV9zc2l6ZV90IGkpCit7CisgICAgUHlfc3NpemVfdCBzID0gREtfU0laRShrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGl4OworCisgICAgaWYgKHMgPD0gMHhmZikgeworICAgICAgICBpbnQ4X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzE7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisgICAgZWxzZSBpZiAocyA8PSAweGZmZmYpIHsKKyAgICAgICAgaW50MTZfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMjsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyNpZiBTSVpFT0ZfVk9JRF9QID4gNAorICAgIGVsc2UgaWYgKHMgPiAweGZmZmZmZmZmKSB7CisgICAgICAgIGludDY0X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzg7CisgICAgICAgIGl4ID0gaW5kaWNlc1tpXTsKKyAgICB9CisjZW5kaWYKKyAgICBlbHNlIHsKKyAgICAgICAgaW50MzJfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfNDsKKyAgICAgICAgaXggPSBpbmRpY2VzW2ldOworICAgIH0KKyAgICBhc3NlcnQoaXggPj0gREtJWF9EVU1NWSk7CisgICAgcmV0dXJuIGl4OworfQorCisvKiB3cml0ZSB0byBpbmRpY2VzLiAqLworc3RhdGljIGlubGluZSB2b2lkCitka19zZXRfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqa2V5cywgUHlfc3NpemVfdCBpLCBQeV9zc2l6ZV90IGl4KQoreworICAgIFB5X3NzaXplX3QgcyA9IERLX1NJWkUoa2V5cyk7CisKKyAgICBhc3NlcnQoaXggPj0gREtJWF9EVU1NWSk7CisKKyAgICBpZiAocyA8PSAweGZmKSB7CisgICAgICAgIGludDhfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfMTsKKyAgICAgICAgYXNzZXJ0KGl4IDw9IDB4N2YpOworICAgICAgICBpbmRpY2VzW2ldID0gKGNoYXIpaXg7CisgICAgfQorICAgIGVsc2UgaWYgKHMgPD0gMHhmZmZmKSB7CisgICAgICAgIGludDE2X3QgKmluZGljZXMgPSBrZXlzLT5ka19pbmRpY2VzLmFzXzI7CisgICAgICAgIGFzc2VydChpeCA8PSAweDdmZmYpOworICAgICAgICBpbmRpY2VzW2ldID0gKGludDE2X3QpaXg7CisgICAgfQorI2lmIFNJWkVPRl9WT0lEX1AgPiA0CisgICAgZWxzZSBpZiAocyA+IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgaW50NjRfdCAqaW5kaWNlcyA9IGtleXMtPmRrX2luZGljZXMuYXNfODsKKyAgICAgICAgaW5kaWNlc1tpXSA9IGl4OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBpbnQzMl90ICppbmRpY2VzID0ga2V5cy0+ZGtfaW5kaWNlcy5hc180OworICAgICAgICBhc3NlcnQoaXggPD0gMHg3ZmZmZmZmZik7CisgICAgICAgIGluZGljZXNbaV0gPSAoaW50MzJfdClpeDsKKyAgICB9Cit9CisKKwogLyogVVNBQkxFX0ZSQUNUSU9OIGlzIHRoZSBtYXhpbXVtIGRpY3Rpb25hcnkgbG9hZC4KLSAqIEN1cnJlbnRseSBzZXQgdG8gKDJuKzEpLzMuIEluY3JlYXNpbmcgdGhpcyByYXRpbyBtYWtlcyBkaWN0aW9uYXJpZXMgbW9yZQotICogZGVuc2UgcmVzdWx0aW5nIGluIG1vcmUgY29sbGlzaW9ucy4gIERlY3JlYXNpbmcgaXQgaW1wcm92ZXMgc3BhcnNlbmVzcwotICogYXQgdGhlIGV4cGVuc2Ugb2Ygc3ByZWFkaW5nIGVudHJpZXMgb3ZlciBtb3JlIGNhY2hlIGxpbmVzIGFuZCBhdCB0aGUKLSAqIGNvc3Qgb2YgdG90YWwgbWVtb3J5IGNvbnN1bWVkLgorICogSW5jcmVhc2luZyB0aGlzIHJhdGlvIG1ha2VzIGRpY3Rpb25hcmllcyBtb3JlIGRlbnNlIHJlc3VsdGluZyBpbiBtb3JlCisgKiBjb2xsaXNpb25zLiAgRGVjcmVhc2luZyBpdCBpbXByb3ZlcyBzcGFyc2VuZXNzIGF0IHRoZSBleHBlbnNlIG9mIHNwcmVhZGluZworICogaW5kaWNlcyBvdmVyIG1vcmUgY2FjaGUgbGluZXMgYW5kIGF0IHRoZSBjb3N0IG9mIHRvdGFsIG1lbW9yeSBjb25zdW1lZC4KICAqCiAgKiBVU0FCTEVfRlJBQ1RJT04gbXVzdCBvYmV5IHRoZSBmb2xsb3dpbmc6CiAgKiAgICAgKDAgPCBVU0FCTEVfRlJBQ1RJT04obikgPCBuKSBmb3IgYWxsIG4gPj0gMgogICoKLSAqIFVTQUJMRV9GUkFDVElPTiBzaG91bGQgYmUgdmVyeSBxdWljayB0byBjYWxjdWxhdGUuCi0gKiBGcmFjdGlvbnMgYXJvdW5kIDUvOCB0byAyLzMgc2VlbSB0byB3b3JrIHdlbGwgaW4gcHJhY3RpY2UuCisgKiBVU0FCTEVfRlJBQ1RJT04gc2hvdWxkIGJlIHF1aWNrIHRvIGNhbGN1bGF0ZS4KKyAqIEZyYWN0aW9ucyBhcm91bmQgMS8yIHRvIDIvMyBzZWVtIHRvIHdvcmsgd2VsbCBpbiBwcmFjdGljZS4KICAqLworI2RlZmluZSBVU0FCTEVfRlJBQ1RJT04obikgKCgobikgPDwgMSkvMykKIAotLyogVXNlICgybisxKS8zIHJhdGhlciB0aGFuIDJuKzMgYmVjYXVzZTogaXQgbWFrZXMgbm8gZGlmZmVyZW5jZSBmb3IKLSAqIGNvbWJpbmVkIHRhYmxlcyAodGhlIHR3byBmcmFjdGlvbnMgcm91bmQgdG8gdGhlIHNhbWUgbnVtYmVyIG4gPCApLAotICogYnV0IDIqNC8zIGlzIDIgd2hlcmVhcyAoMio0KzEpLzMgaXMgMyB3aGljaCBwb3RlbnRpYWxseSBzYXZlcyBxdWl0ZQotICogYSBsb3Qgb2Ygc3BhY2UgZm9yIHNtYWxsLCBzcGxpdCB0YWJsZXMgKi8KLSNkZWZpbmUgVVNBQkxFX0ZSQUNUSU9OKG4pICgoKChuKSA8PCAxKSsxKS8zKQorLyogRVNUSU1BVEVfU0laRSBpcyByZXZlcnNlIGZ1bmN0aW9uIG9mIFVTQUJMRV9GUkFDVElPTi4KKyAqIFRoaXMgY2FuIGJlIHVzZWQgdG8gcmVzZXJ2ZSBlbm91Z2ggc2l6ZSB0byBpbnNlcnQgbiBlbnRyaWVzIHdpdGhvdXQKKyAqIHJlc2l6aW5nLgorICovCisjZGVmaW5lIEVTVElNQVRFX1NJWkUobikgICgoKG4pKjMpID4+IDEpCiAKLS8qIEFsdGVybmF0aXZlIGZyYWN0aW9uIHRoYXQgaXMgb3RoZXJ3aXNlIGNsb3NlIGVub3VnaCB0byAoMm4rMSkvMyB0byBtYWtlCisvKiBBbHRlcm5hdGl2ZSBmcmFjdGlvbiB0aGF0IGlzIG90aGVyd2lzZSBjbG9zZSBlbm91Z2ggdG8gMm4vMyB0byBtYWtlCiAgKiBsaXR0bGUgZGlmZmVyZW5jZS4gOCAqIDIvMyA9PSA4ICogNS84ID09IDUuIDE2ICogMi8zID09IDE2ICogNS84ID09IDEwLgogICogMzIgKiAyLzMgPSAyMSwgMzIgKiA1LzggPSAyMC4KICAqIEl0cyBhZHZhbnRhZ2UgaXMgdGhhdCBpdCBpcyBmYXN0ZXIgdG8gY29tcHV0ZSBvbiBtYWNoaW5lcyB3aXRoIHNsb3cgZGl2aXNpb24uCiAgKiAjZGVmaW5lIFVTQUJMRV9GUkFDVElPTihuKSAoKChuKSA+PiAxKSArICgobikgPj4gMikgLSAoKG4pID4+IDMpKQotKi8KKyAqLwogCiAvKiBHUk9XVEhfUkFURS4gR3Jvd3RoIHJhdGUgdXBvbiBoaXR0aW5nIG1heGltdW0gbG9hZC4KICAqIEN1cnJlbnRseSBzZXQgdG8gdXNlZCoyICsgY2FwYWNpdHkvMi4KQEAgLTMwMCw2MSArNDE5LDE1NSBAQAogICogKHdoaWNoIGNhbm5vdCBmYWlsIGFuZCB0aHVzIGNhbiBkbyBubyBhbGxvY2F0aW9uKS4KICAqLwogc3RhdGljIFB5RGljdEtleXNPYmplY3QgZW1wdHlfa2V5c19zdHJ1Y3QgPSB7Ci0gICAgICAgIDIsIC8qIGRrX3JlZmNudCAxIGZvciB0aGlzIHN0cnVjdCwgMSBmb3IgZHVtbXlfc3RydWN0ICovCisgICAgICAgIDEsIC8qIGRrX3JlZmNudCAqLwogICAgICAgICAxLCAvKiBka19zaXplICovCiAgICAgICAgIGxvb2tkaWN0X3NwbGl0LCAvKiBka19sb29rdXAgKi8KICAgICAgICAgMCwgLyogZGtfdXNhYmxlIChpbW11dGFibGUpICovCi0gICAgICAgIHsKLSAgICAgICAgICAgIHsgMCwgMCwgMCB9IC8qIGRrX2VudHJpZXMgKGVtcHR5KSAqLwotICAgICAgICB9CisgICAgICAgIDAsIC8qIGRrX25lbnRyaWVzICovCisgICAgICAgIC5ka19pbmRpY2VzID0geyAuYXNfMSA9IHtES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLCBES0lYX0VNUFRZLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWSwgREtJWF9FTVBUWX19LAogfTsKIAogc3RhdGljIFB5T2JqZWN0ICplbXB0eV92YWx1ZXNbMV0gPSB7IE5VTEwgfTsKIAogI2RlZmluZSBQeV9FTVBUWV9LRVlTICZlbXB0eV9rZXlzX3N0cnVjdAogCisvKiBVbmNvbW1lbnQgdG8gY2hlY2sgdGhlIGRpY3QgY29udGVudCBpbiBfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKSAqLworLyogI2RlZmluZSBERUJVR19QWURJQ1QgKi8KKworCisjaWZkZWYgUHlfREVCVUcKK3N0YXRpYyBpbnQKK19QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShQeURpY3RPYmplY3QgKm1wKQoreworICAgIFB5RGljdEtleXNPYmplY3QgKmtleXMgPSBtcC0+bWFfa2V5czsKKyAgICBpbnQgc3BsaXR0ZWQgPSBfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApOworICAgIFB5X3NzaXplX3QgdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKGtleXMtPmRrX3NpemUpOworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKKyAgICBQeV9zc2l6ZV90IGk7CisjZW5kaWYKKworICAgIGFzc2VydCgwIDw9IG1wLT5tYV91c2VkICYmIG1wLT5tYV91c2VkIDw9IHVzYWJsZSk7CisgICAgYXNzZXJ0KElTX1BPV0VSX09GXzIoa2V5cy0+ZGtfc2l6ZSkpOworICAgIGFzc2VydCgwIDw9IGtleXMtPmRrX3VzYWJsZQorICAgICAgICAgICAmJiBrZXlzLT5ka191c2FibGUgPD0gdXNhYmxlKTsKKyAgICBhc3NlcnQoMCA8PSBrZXlzLT5ka19uZW50cmllcworICAgICAgICAgICAmJiBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworICAgIGFzc2VydChrZXlzLT5ka191c2FibGUgKyBrZXlzLT5ka19uZW50cmllcyA8PSB1c2FibGUpOworCisgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAvKiBjb21iaW5lZCB0YWJsZSAqLworICAgICAgICBhc3NlcnQoa2V5cy0+ZGtfcmVmY250ID09IDEpOworICAgIH0KKworI2lmZGVmIERFQlVHX1BZRElDVAorICAgIGZvciAoaT0wOyBpIDwga2V5cy0+ZGtfc2l6ZTsgaSsrKSB7CisgICAgICAgIFB5X3NzaXplX3QgaXggPSBka19nZXRfaW5kZXgoa2V5cywgaSk7CisgICAgICAgIGFzc2VydChES0lYX0RVTU1ZIDw9IGl4ICYmIGl4IDw9IHVzYWJsZSk7CisgICAgfQorCisgICAgZm9yIChpPTA7IGkgPCB1c2FibGU7IGkrKykgeworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnkgPSAmZW50cmllc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKmtleSA9IGVudHJ5LT5tZV9rZXk7CisKKyAgICAgICAgaWYgKGtleSAhPSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgeworICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoID0gKChQeUFTQ0lJT2JqZWN0ICopa2V5KS0+aGFzaDsKKyAgICAgICAgICAgICAgICBhc3NlcnQoaGFzaCAhPSAtMSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KGVudHJ5LT5tZV9oYXNoID09IGhhc2gpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgLyogdGVzdF9kaWN0IGZhaWxzIGlmIFB5T2JqZWN0X0hhc2goKSBpcyBjYWxsZWQgYWdhaW4gKi8KKyAgICAgICAgICAgICAgICBhc3NlcnQoZW50cnktPm1lX2hhc2ggIT0gLTEpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKCFzcGxpdHRlZCkgeworICAgICAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgIT0gTlVMTCk7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgICAgIGFzc2VydChlbnRyeS0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoc3BsaXR0ZWQpIHsKKyAgICAgICAgLyogc3BsaXR0ZWQgdGFibGUgKi8KKyAgICAgICAgZm9yIChpPTA7IGkgPCBtcC0+bWFfdXNlZDsgaSsrKSB7CisgICAgICAgICAgICBhc3NlcnQobXAtPm1hX3ZhbHVlc1tpXSAhPSBOVUxMKTsKKyAgICAgICAgfQorICAgIH0KKyNlbmRpZgorCisgICAgcmV0dXJuIDE7Cit9CisjZW5kaWYKKworCiBzdGF0aWMgUHlEaWN0S2V5c09iamVjdCAqbmV3X2tleXNfb2JqZWN0KFB5X3NzaXplX3Qgc2l6ZSkKIHsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpkazsKLSAgICBQeV9zc2l6ZV90IGk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGVzLCB1c2FibGU7CiAKLSAgICBhc3NlcnQoc2l6ZSA+PSBQeURpY3RfTUlOU0laRV9TUExJVCk7CisgICAgYXNzZXJ0KHNpemUgPj0gUHlEaWN0X01JTlNJWkUpOwogICAgIGFzc2VydChJU19QT1dFUl9PRl8yKHNpemUpKTsKLSAgICBkayA9IFB5TWVtX01BTExPQyhzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKwotICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiAoc2l6ZS0xKSk7Ci0gICAgaWYgKGRrID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICB1c2FibGUgPSBVU0FCTEVfRlJBQ1RJT04oc2l6ZSk7CisgICAgaWYgKHNpemUgPD0gMHhmZikgeworICAgICAgICBlcyA9IDE7CisgICAgfQorICAgIGVsc2UgaWYgKHNpemUgPD0gMHhmZmZmKSB7CisgICAgICAgIGVzID0gMjsKKyAgICB9CisjaWYgU0laRU9GX1ZPSURfUCA+IDQKKyAgICBlbHNlIGlmIChzaXplIDw9IDB4ZmZmZmZmZmYpIHsKKyAgICAgICAgZXMgPSA0OworICAgIH0KKyNlbmRpZgorICAgIGVsc2UgeworICAgICAgICBlcyA9IHNpemVvZihQeV9zc2l6ZV90KTsKKyAgICB9CisKKyAgICBpZiAoc2l6ZSA9PSBQeURpY3RfTUlOU0laRSAmJiBudW1mcmVla2V5cyA+IDApIHsKKyAgICAgICAgZGsgPSBrZXlzX2ZyZWVfbGlzdFstLW51bWZyZWVrZXlzXTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGRrID0gUHlPYmplY3RfTUFMTE9DKHNpemVvZihQeURpY3RLZXlzT2JqZWN0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgZXMgKiBzaXplCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CisgICAgICAgIGlmIChkayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KICAgICB9CiAgICAgREtfREVCVUdfSU5DUkVGIGRrLT5ka19yZWZjbnQgPSAxOwogICAgIGRrLT5ka19zaXplID0gc2l6ZTsKLSAgICBkay0+ZGtfdXNhYmxlID0gVVNBQkxFX0ZSQUNUSU9OKHNpemUpOwotICAgIGVwMCA9ICZkay0+ZGtfZW50cmllc1swXTsKLSAgICAvKiBIYXNoIHZhbHVlIG9mIHNsb3QgMCBpcyB1c2VkIGJ5IHBvcGl0ZW0sIHNvIGl0IG11c3QgYmUgaW5pdGlhbGl6ZWQgKi8KLSAgICBlcDAtPm1lX2hhc2ggPSAwOwotICAgIGZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspIHsKLSAgICAgICAgZXAwW2ldLm1lX2tleSA9IE5VTEw7Ci0gICAgICAgIGVwMFtpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgfQorICAgIGRrLT5ka191c2FibGUgPSB1c2FibGU7CiAgICAgZGstPmRrX2xvb2t1cCA9IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teTsKKyAgICBkay0+ZGtfbmVudHJpZXMgPSAwOworICAgIG1lbXNldCgmZGstPmRrX2luZGljZXMuYXNfMVswXSwgMHhmZiwgZXMgKiBzaXplKTsKKyAgICBtZW1zZXQoREtfRU5UUklFUyhkayksIDAsIHNpemVvZihQeURpY3RLZXlFbnRyeSkgKiB1c2FibGUpOwogICAgIHJldHVybiBkazsKIH0KIAogc3RhdGljIHZvaWQKIGZyZWVfa2V5c19vYmplY3QoUHlEaWN0S2V5c09iamVjdCAqa2V5cykKIHsKLSAgICBQeURpY3RLZXlFbnRyeSAqZW50cmllcyA9ICZrZXlzLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplbnRyaWVzID0gREtfRU5UUklFUyhrZXlzKTsKICAgICBQeV9zc2l6ZV90IGksIG47Ci0gICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUoa2V5cyk7IGkgPCBuOyBpKyspIHsKKyAgICBmb3IgKGkgPSAwLCBuID0ga2V5cy0+ZGtfbmVudHJpZXM7IGkgPCBuOyBpKyspIHsKICAgICAgICAgUHlfWERFQ1JFRihlbnRyaWVzW2ldLm1lX2tleSk7CiAgICAgICAgIFB5X1hERUNSRUYoZW50cmllc1tpXS5tZV92YWx1ZSk7CiAgICAgfQotICAgIFB5TWVtX0ZSRUUoa2V5cyk7CisgICAgaWYgKGtleXMtPmRrX3NpemUgPT0gUHlEaWN0X01JTlNJWkUgJiYgbnVtZnJlZWtleXMgPCBQeURpY3RfTUFYRlJFRUxJU1QpIHsKKyAgICAgICAga2V5c19mcmVlX2xpc3RbbnVtZnJlZWtleXMrK10gPSBrZXlzOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoa2V5cyk7CiB9CiAKICNkZWZpbmUgbmV3X3ZhbHVlcyhzaXplKSBQeU1lbV9ORVcoUHlPYmplY3QgKiwgc2l6ZSkKLQogI2RlZmluZSBmcmVlX3ZhbHVlcyh2YWx1ZXMpIFB5TWVtX0ZSRUUodmFsdWVzKQogCiAvKiBDb25zdW1lcyBhIHJlZmVyZW5jZSB0byB0aGUga2V5cyBvYmplY3QgKi8KQEAgLTM4MCw2ICs1OTMsOCBAQAogICAgIG1wLT5tYV9rZXlzID0ga2V5czsKICAgICBtcC0+bWFfdmFsdWVzID0gdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopbXA7CiB9CiAKQEAgLTM5MCw3ICs2MDUsNyBAQAogICAgIFB5T2JqZWN0ICoqdmFsdWVzOwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKIAotICAgIHNpemUgPSBES19TSVpFKGtleXMpOworICAgIHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSk7CiAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICBpZiAodmFsdWVzID09IE5VTEwpIHsKICAgICAgICAgREtfREVDUkVGKGtleXMpOwpAQCAtNDA1LDEyICs2MjAsNDQgQEAKIFB5T2JqZWN0ICoKIFB5RGljdF9OZXcodm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKICAgICByZXR1cm4gbmV3X2RpY3Qoa2V5cywgTlVMTCk7CiB9CiAKKy8qIFNlYXJjaCBpbmRleCBvZiBoYXNoIHRhYmxlIGZyb20gb2Zmc2V0IG9mIGVudHJ5IHRhYmxlICovCitzdGF0aWMgUHlfc3NpemVfdAorbG9va2RpY3RfaW5kZXgoUHlEaWN0S2V5c09iamVjdCAqaywgUHlfaGFzaF90IGhhc2gsIFB5X3NzaXplX3QgaW5kZXgpCit7CisgICAgc2l6ZV90IGk7CisgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKGspOworICAgIFB5X3NzaXplX3QgaXg7CisKKyAgICBpID0gKHNpemVfdCloYXNoICYgbWFzazsKKyAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICBpZiAoaXggPT0gaW5kZXgpIHsKKyAgICAgICAgcmV0dXJuIGk7CisgICAgfQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgIH0KKworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChrLCBpKTsKKyAgICAgICAgaWYgKGl4ID09IGluZGV4KSB7CisgICAgICAgICAgICByZXR1cm4gaTsKKyAgICAgICAgfQorICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CisgICAgICAgIH0KKyAgICB9CisgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLworICAgIHJldHVybiBES0lYX0VSUk9SOworfQorCiAvKgogVGhlIGJhc2ljIGxvb2t1cCBmdW5jdGlvbiB1c2VkIGJ5IGFsbCBvcGVyYXRpb25zLgogVGhpcyBpcyBiYXNlZCBvbiBBbGdvcml0aG0gRCBmcm9tIEtudXRoIFZvbC4gMywgU2VjLiA2LjQuCkBAIC00MjYsNTIgKzY3Myw2NCBAQAogY29udHJpYnV0aW9ucyBieSBSZWltZXIgQmVocmVuZHMsIEp5cmtpIEFsYWt1aWphbGEsIFZsYWRpbWlyIE1hcmFuZ296b3YgYW5kCiBDaHJpc3RpYW4gVGlzbWVyLgogCi1sb29rZGljdCgpIGlzIGdlbmVyYWwtcHVycG9zZSwgYW5kIG1heSByZXR1cm4gTlVMTCBpZiAoYW5kIG9ubHkgaWYpIGEKLWNvbXBhcmlzb24gcmFpc2VzIGFuIGV4Y2VwdGlvbiAodGhpcyB3YXMgbmV3IGluIFB5dGhvbiAyLjUpLgorbG9va2RpY3QoKSBpcyBnZW5lcmFsLXB1cnBvc2UsIGFuZCBtYXkgcmV0dXJuIERLSVhfRVJST1IgaWYgKGFuZCBvbmx5IGlmKSBhCitjb21wYXJpc29uIHJhaXNlcyBhbiBleGNlcHRpb24uCiBsb29rZGljdF91bmljb2RlKCkgYmVsb3cgaXMgc3BlY2lhbGl6ZWQgdG8gc3RyaW5nIGtleXMsIGNvbXBhcmlzb24gb2Ygd2hpY2ggY2FuCi1uZXZlciByYWlzZSBhbiBleGNlcHRpb247IHRoYXQgZnVuY3Rpb24gY2FuIG5ldmVyIHJldHVybiBOVUxMLgorbmV2ZXIgcmFpc2UgYW4gZXhjZXB0aW9uOyB0aGF0IGZ1bmN0aW9uIGNhbiBuZXZlciByZXR1cm4gREtJWF9FUlJPUi4KIGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSBpcyBmdXJ0aGVyIHNwZWNpYWxpemVkIGZvciBzdHJpbmcga2V5cyB0aGF0IGNhbm5vdCBiZQogdGhlIDxkdW1teT4gdmFsdWUuCi1Gb3IgYm90aCwgd2hlbiB0aGUga2V5IGlzbid0IGZvdW5kIGEgUHlEaWN0RW50cnkqIGlzIHJldHVybmVkCi13aGVyZSB0aGUga2V5IHdvdWxkIGhhdmUgYmVlbiBmb3VuZCwgKnZhbHVlX2FkZHIgcG9pbnRzIHRvIHRoZSBtYXRjaGluZyB2YWx1ZQotc2xvdC4KK0ZvciBib3RoLCB3aGVuIHRoZSBrZXkgaXNuJ3QgZm91bmQgYSBES0lYX0VNUFRZIGlzIHJldHVybmVkLiBoYXNocG9zIHJldHVybnMKK3doZXJlIHRoZSBrZXkgaW5kZXggc2hvdWxkIGJlIGluc2VydGVkLgogKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7Ci0gICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmZyZWVzbG90OwotICAgIHNpemVfdCBtYXNrOwotICAgIFB5RGljdEtleUVudHJ5ICplcDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIHNpemVfdCBpLCBtYXNrOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OwogICAgIGludCBjbXA7CisgICAgUHlEaWN0S2V5c09iamVjdCAqZGs7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMCwgKmVwOwogICAgIFB5T2JqZWN0ICpzdGFydGtleTsKIAogdG9wOgotICAgIG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBlcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07CisgICAgZGsgPSBtcC0+bWFfa2V5czsKKyAgICBtYXNrID0gREtfTUFTSyhkayk7CisgICAgZXAwID0gREtfRU5UUklFUyhkayk7CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7CisKKyAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpCi0gICAgICAgIGZyZWVzbG90ID0gZXA7CisgICAgaWYgKGl4ID09IERLSVhfRFVNTVkpIHsKKyAgICAgICAgZnJlZXNsb3QgPSBpOworICAgIH0KICAgICBlbHNlIHsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICByZXR1cm4gaXg7CisgICAgICAgIH0KICAgICAgICAgaWYgKGVwLT5tZV9oYXNoID09IGhhc2gpIHsKICAgICAgICAgICAgIHN0YXJ0a2V5ID0gZXAtPm1lX2tleTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBjbXAgPSBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2woc3RhcnRrZXksIGtleSwgUHlfRVEpOwogICAgICAgICAgICAgUHlfREVDUkVGKHN0YXJ0a2V5KTsKICAgICAgICAgICAgIGlmIChjbXAgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgaWYgKGVwMCA9PSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllcyAmJiBlcC0+bWVfa2V5ID09IHN0YXJ0a2V5KSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIERLSVhfRVJST1I7CisgICAgICAgICAgICBpZiAoZGsgPT0gbXAtPm1hX2tleXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgewogICAgICAgICAgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CkBAIC00NzksNDAgKzczOCw1MCBAQAogICAgICAgICAgICAgICAgIGdvdG8gdG9wOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGZyZWVzbG90ID0gTlVMTDsKKyAgICAgICAgZnJlZXNsb3QgPSAtMTsKICAgICB9CiAKLSAgICAvKiBJbiB0aGUgbG9vcCwgbWVfa2V5ID09IGR1bW15IGlzIGJ5IGZhciAoZmFjdG9yIG9mIDEwMHMpIHRoZQotICAgICAgIGxlYXN0IGxpa2VseSBvdXRjb21lLCBzbyB0ZXN0IGZvciB0aGF0IGxhc3QuICovCi0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCkgewotICAgICAgICAgICAgaWYgKGZyZWVzbG90ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGVwOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqdmFsdWVfYWRkciA9ICZmcmVlc2xvdC0+bWVfdmFsdWU7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZyZWVzbG90OworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9ICgoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMSkgJiBtYXNrOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChkaywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSAoZnJlZXNsb3QgPT0gLTEpID8gKFB5X3NzaXplX3QpaSA6IGZyZWVzbG90OwogICAgICAgICAgICAgfQorICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CiAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQotICAgICAgICBpZiAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiBlcC0+bWVfa2V5ICE9IGR1bW15KSB7CisgICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoKSB7CiAgICAgICAgICAgICBzdGFydGtleSA9IGVwLT5tZV9rZXk7CiAgICAgICAgICAgICBQeV9JTkNSRUYoc3RhcnRrZXkpOwogICAgICAgICAgICAgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKHN0YXJ0a2V5LCBrZXksIFB5X0VRKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihzdGFydGtleSk7CiAgICAgICAgICAgICBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gREtJWF9FUlJPUjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcDAgPT0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXMgJiYgZXAtPm1lX2tleSA9PSBzdGFydGtleSkgeworICAgICAgICAgICAgaWYgKGRrID09IG1wLT5tYV9rZXlzICYmIGVwLT5tZV9rZXkgPT0gc3RhcnRrZXkpIHsKICAgICAgICAgICAgICAgICBpZiAoY21wID4gMCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKQEAgLTUyMCw3MiArNzg5LDgwIEBACiAgICAgICAgICAgICAgICAgZ290byB0b3A7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoZXAtPm1lX2tleSA9PSBkdW1teSAmJiBmcmVlc2xvdCA9PSBOVUxMKQotICAgICAgICAgICAgZnJlZXNsb3QgPSBlcDsKICAgICB9CiAgICAgYXNzZXJ0KDApOyAgICAgICAgICAvKiBOT1QgUkVBQ0hFRCAqLwogICAgIHJldHVybiAwOwogfQogCiAvKiBTcGVjaWFsaXplZCB2ZXJzaW9uIGZvciBzdHJpbmctb25seSBrZXlzICovCi1zdGF0aWMgUHlEaWN0S2V5RW50cnkgKgorc3RhdGljIFB5X3NzaXplX3QKIGxvb2tkaWN0X3VuaWNvZGUoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIpCisgICAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwotICAgIFB5RGljdEtleUVudHJ5ICpmcmVlc2xvdDsKICAgICBzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaXgsIGZyZWVzbG90OworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOwogCisgICAgYXNzZXJ0KG1wLT5tYV92YWx1ZXMgPT0gTlVMTCk7CiAgICAgLyogTWFrZSBzdXJlIHRoaXMgZnVuY3Rpb24gZG9lc24ndCBoYXZlIHRvIGhhbmRsZSBub24tdW5pY29kZSBrZXlzLAogICAgICAgIGluY2x1ZGluZyBzdWJjbGFzc2VzIG9mIHN0cjsgZS5nLiwgb25lIHJlYXNvbiB0byBzdWJjbGFzcwogICAgICAgIHVuaWNvZGVzIGlzIHRvIG92ZXJyaWRlIF9fZXFfXywgYW5kIGZvciBzcGVlZCB3ZSBkb24ndCBjYXRlciB0bwogICAgICAgIHRoYXQgaGVyZS4gKi8KICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkpIHsKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwotICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkcik7CisgICAgICAgIHJldHVybiBsb29rZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZV9hZGRyLCBoYXNocG9zKTsKICAgICB9CiAgICAgaSA9IChzaXplX3QpaGFzaCAmIG1hc2s7Ci0gICAgZXAgPSAmZXAwW2ldOwotICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgcmV0dXJuIERLSVhfRU1QVFk7CiAgICAgfQotICAgIGlmIChlcC0+bWVfa2V5ID09IGR1bW15KQotICAgICAgICBmcmVlc2xvdCA9IGVwOworICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgIGZyZWVzbG90ID0gaTsKKyAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkgeworICAgICAgICBlcCA9ICZlcDBbaXhdOworICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMKTsKKyAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5CisgICAgICAgICAgICB8fCAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIHJldHVybiBpeDsKICAgICAgICAgfQotICAgICAgICBmcmVlc2xvdCA9IE5VTEw7CisgICAgICAgIGZyZWVzbG90ID0gLTE7CiAgICAgfQogCi0gICAgLyogSW4gdGhlIGxvb3AsIG1lX2tleSA9PSBkdW1teSBpcyBieSBmYXIgKGZhY3RvciBvZiAxMDBzKSB0aGUKLSAgICAgICBsZWFzdCBsaWtlbHkgb3V0Y29tZSwgc28gdGVzdCBmb3IgdGhhdCBsYXN0LiAqLwotICAgIGZvciAocGVydHVyYiA9IGhhc2g7IDsgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVCkgewotICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlmIChmcmVlc2xvdCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBlcDsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZnJlZXNsb3QtPm1lX3ZhbHVlOwotICAgICAgICAgICAgICAgIHJldHVybiBmcmVlc2xvdDsKKyAgICBmb3IgKHNpemVfdCBwZXJ0dXJiID0gaGFzaDs7KSB7CisgICAgICAgIHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQ7CisgICAgICAgIGkgPSBtYXNrICYgKChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxKTsKKyAgICAgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICpoYXNocG9zID0gKGZyZWVzbG90ID09IC0xKSA/IChQeV9zc2l6ZV90KWkgOiBmcmVlc2xvdDsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgICAgICB9CisgICAgICAgIGlmIChpeCA9PSBES0lYX0RVTU1ZKSB7CisgICAgICAgICAgICBpZiAoZnJlZXNsb3QgPT0gLTEpCisgICAgICAgICAgICAgICAgZnJlZXNsb3QgPSBpOworICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIH0KKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCk7CiAgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleQotICAgICAgICAgICAgfHwgKGVwLT5tZV9oYXNoID09IGhhc2gKLSAgICAgICAgICAgICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkKLSAgICAgICAgICAgICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgIHx8IChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKICAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKLSAgICAgICAgICAgIHJldHVybiBlcDsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gaXg7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkgJiYgZnJlZXNsb3QgPT0gTlVMTCkKLSAgICAgICAgICAgIGZyZWVzbG90ID0gZXA7CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KICAgICByZXR1cm4gMDsKQEAgLTU5Myw0MCArODcwLDYzIEBACiAKIC8qIEZhc3RlciB2ZXJzaW9uIG9mIGxvb2tkaWN0X3VuaWNvZGUgd2hlbiBpdCBpcyBrbm93biB0aGF0IG5vIDxkdW1teT4ga2V5cwogICogd2lsbCBiZSBwcmVzZW50LiAqLwotc3RhdGljIFB5RGljdEtleUVudHJ5ICoKK3N0YXRpYyBQeV9zc2l6ZV90CiBsb29rZGljdF91bmljb2RlX25vZHVtbXkoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaCwgUHlPYmplY3QgKioqdmFsdWVfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydChtcC0+bWFfdmFsdWVzID09IE5VTEwpOwogICAgIC8qIE1ha2Ugc3VyZSB0aGlzIGZ1bmN0aW9uIGRvZXNuJ3QgaGF2ZSB0byBoYW5kbGUgbm9uLXVuaWNvZGUga2V5cywKICAgICAgICBpbmNsdWRpbmcgc3ViY2xhc3NlcyBvZiBzdHI7IGUuZy4sIG9uZSByZWFzb24gdG8gc3ViY2xhc3MKICAgICAgICB1bmljb2RlcyBpcyB0byBvdmVycmlkZSBfX2VxX18sIGFuZCBmb3Igc3BlZWQgd2UgZG9uJ3QgY2F0ZXIgdG8KICAgICAgICB0aGF0IGhlcmUuICovCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7CiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICAgICAgcmV0dXJuIGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOworICAgICAgICByZXR1cm4gbG9va2RpY3QobXAsIGtleSwgaGFzaCwgdmFsdWVfYWRkciwgaGFzaHBvcyk7CiAgICAgfQogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8Ci0gICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICByZXR1cm4gZXA7CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGFzc2VydCAoaXggIT0gREtJWF9EVU1NWSk7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOworICAgICAgICByZXR1cm4gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7Ci0gICAgICAgIGkgPSAoaSA8PCAyKSArIGkgKyBwZXJ0dXJiICsgMTsKLSAgICAgICAgZXAgPSAmZXAwW2kgJiBtYXNrXTsKLSAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwgfHwgZXAtPm1lX2tleSA9PSBrZXkgfHwKKyAgICBlcCA9ICZlcDBbaXhdOworICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwpOworICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgaWYgKGVwLT5tZV9rZXkgPT0ga2V5IHx8CisgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgaWYgKGhhc2hwb3MgIT0gTlVMTCkKKyAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOworICAgICAgICByZXR1cm4gaXg7CisgICAgfQorICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgICAgIGFzc2VydCAoaXggIT0gREtJWF9EVU1NWSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgICAgICB9CisgICAgICAgIGVwID0gJmVwMFtpeF07CisgICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgICAgICBpZiAoZXAtPm1lX2tleSA9PSBrZXkgfHwKICAgICAgICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKKyAgICAgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAgICAgKmhhc2hwb3MgPSBpOwogICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmZXAtPm1lX3ZhbHVlOwotICAgICAgICAgICAgcmV0dXJuIGVwOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KQEAgLTYzOCwzOSArOTM4LDYyIEBACiAgKiBTcGxpdCB0YWJsZXMgb25seSBjb250YWluIHVuaWNvZGUga2V5cyBhbmQgbm8gZHVtbXkga2V5cywKICAqIHNvIGFsZ29yaXRobSBpcyB0aGUgc2FtZSBhcyBsb29rZGljdF91bmljb2RlX25vZHVtbXkuCiAgKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCitzdGF0aWMgUHlfc3NpemVfdAogbG9va2RpY3Rfc3BsaXQoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwKLSAgICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoLCBQeU9iamVjdCAqKip2YWx1ZV9hZGRyKQorICAgICAgICAgICAgICAgUHlfaGFzaF90IGhhc2gsIFB5T2JqZWN0ICoqKnZhbHVlX2FkZHIsIFB5X3NzaXplX3QgKmhhc2hwb3MpCiB7CiAgICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7CiAgICAgc2l6ZV90IG1hc2sgPSBES19NQVNLKG1wLT5tYV9rZXlzKTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOwogCisgICAgLyogbXAgbXVzdCBzcGxpdCB0YWJsZSAqLworICAgIGFzc2VydChtcC0+bWFfdmFsdWVzICE9IE5VTEwpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewotICAgICAgICBlcCA9IGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIpOwotICAgICAgICAvKiBsb29rZGljdCBleHBlY3RzIGEgY29tYmluZWQtdGFibGUsIHNvIGZpeCB2YWx1ZV9hZGRyICovCi0gICAgICAgIGkgPSBlcCAtIGVwMDsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgICAgICBpeCA9IGxvb2tkaWN0KG1wLCBrZXksIGhhc2gsIHZhbHVlX2FkZHIsIGhhc2hwb3MpOworICAgICAgICBpZiAoaXggPj0gMCkgeworICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpeF07CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIGl4OwogICAgIH0KKwogICAgIGkgPSAoc2l6ZV90KWhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICBpZiAoZXAtPm1lX2tleSA9PSBOVUxMIHx8IGVwLT5tZV9rZXkgPT0ga2V5IHx8Ci0gICAgICAgIChlcC0+bWVfaGFzaCA9PSBoYXNoICYmIHVuaWNvZGVfZXEoZXAtPm1lX2tleSwga2V5KSkpIHsKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgcmV0dXJuIGVwOworICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpKTsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgeworICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgKmhhc2hwb3MgPSBpOworICAgICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CisgICAgICAgIHJldHVybiBES0lYX0VNUFRZOwogICAgIH0KLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyA7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOwotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSA9PSBOVUxMIHx8IFB5VW5pY29kZV9DaGVja0V4YWN0KGVwLT5tZV9rZXkpKTsKLSAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gTlVMTCB8fCBlcC0+bWVfa2V5ID09IGtleSB8fAorICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICBlcCA9ICZlcDBbaXhdOworICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgUHlVbmljb2RlX0NoZWNrRXhhY3QoZXAtPm1lX2tleSkpOworICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAorICAgICAgICAoZXAtPm1lX2hhc2ggPT0gaGFzaCAmJiB1bmljb2RlX2VxKGVwLT5tZV9rZXksIGtleSkpKSB7CisgICAgICAgIGlmIChoYXNocG9zICE9IE5VTEwpCisgICAgICAgICAgICAqaGFzaHBvcyA9IGk7CisgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICByZXR1cm4gaXg7CisgICAgfQorICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOzspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOworICAgICAgICBpeCA9IGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaSk7CisgICAgICAgIGlmIChpeCA9PSBES0lYX0VNUFRZKSB7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gTlVMTDsKKyAgICAgICAgICAgIHJldHVybiBES0lYX0VNUFRZOworICAgICAgICB9CisgICAgICAgIGFzc2VydChpeCA+PSAwKTsKKyAgICAgICAgZXAgPSAmZXAwW2l4XTsKKyAgICAgICAgYXNzZXJ0KGVwLT5tZV9rZXkgIT0gTlVMTCAmJiBQeVVuaWNvZGVfQ2hlY2tFeGFjdChlcC0+bWVfa2V5KSk7CisgICAgICAgIGlmIChlcC0+bWVfa2V5ID09IGtleSB8fAogICAgICAgICAgICAgKGVwLT5tZV9oYXNoID09IGhhc2ggJiYgdW5pY29kZV9lcShlcC0+bWVfa2V5LCBrZXkpKSkgewotICAgICAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107Ci0gICAgICAgICAgICByZXR1cm4gZXA7CisgICAgICAgICAgICBpZiAoaGFzaHBvcyAhPSBOVUxMKQorICAgICAgICAgICAgICAgICpoYXNocG9zID0gaTsKKyAgICAgICAgICAgICp2YWx1ZV9hZGRyID0gJm1wLT5tYV92YWx1ZXNbaXhdOworICAgICAgICAgICAgcmV0dXJuIGl4OwogICAgICAgICB9CiAgICAgfQogICAgIGFzc2VydCgwKTsgICAgICAgICAgLyogTk9UIFJFQUNIRUQgKi8KQEAgLTcwNywyNyArMTAzMCwyNyBAQAogewogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKKyAgICBQeV9zc2l6ZV90IGksIG51bWVudHJpZXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVwMDsKIAogICAgIGlmICghUHlEaWN0X0NoZWNrRXhhY3Qob3ApIHx8ICFfUHlPYmplY3RfR0NfSVNfVFJBQ0tFRChvcCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKSBvcDsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgbnVtZW50cmllcyA9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1lbnRyaWVzOyBpKyspIHsKICAgICAgICAgICAgIGlmICgodmFsdWUgPSBtcC0+bWFfdmFsdWVzW2ldKSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoIV9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCgKLSAgICAgICAgICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KSk7CisgICAgICAgICAgICAgICAgYXNzZXJ0KCFfUHlPYmplY3RfR0NfTUFZX0JFX1RSQUNLRUQoZXAwW2ldLm1lX2tleSkpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtZW50cmllczsgaSsrKSB7CiAgICAgICAgICAgICBpZiAoKHZhbHVlID0gZXAwW2ldLm1lX3ZhbHVlKSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgaWYgKF9QeU9iamVjdF9HQ19NQVlfQkVfVFJBQ0tFRCh2YWx1ZSkgfHwKQEAgLTczOSwzMyArMTA2MiwzNSBAQAogfQogCiAvKiBJbnRlcm5hbCBmdW5jdGlvbiB0byBmaW5kIHNsb3QgZm9yIGFuIGl0ZW0gZnJvbSBpdHMgaGFzaAotICogd2hlbiBpdCBpcyBrbm93biB0aGF0IHRoZSBrZXkgaXMgbm90IHByZXNlbnQgaW4gdGhlIGRpY3QuCi0gKi8KLXN0YXRpYyBQeURpY3RLZXlFbnRyeSAqCisgICB3aGVuIGl0IGlzIGtub3duIHRoYXQgdGhlIGtleSBpcyBub3QgcHJlc2VudCBpbiB0aGUgZGljdC4KKworICAgVGhlIGRpY3QgbXVzdCBiZSBjb21iaW5lZC4gKi8KK3N0YXRpYyB2b2lkCiBmaW5kX2VtcHR5X3Nsb3QoUHlEaWN0T2JqZWN0ICptcCwgUHlPYmplY3QgKmtleSwgUHlfaGFzaF90IGhhc2gsCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKioqdmFsdWVfYWRkcikKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqKip2YWx1ZV9hZGRyLCBQeV9zc2l6ZV90ICpoYXNocG9zKQogewogICAgIHNpemVfdCBpOwotICAgIHNpemVfdCBwZXJ0dXJiOwogICAgIHNpemVfdCBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAsICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKIAorICAgIGFzc2VydCghX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7CisgICAgYXNzZXJ0KGhhc2hwb3MgIT0gTlVMTCk7CiAgICAgYXNzZXJ0KGtleSAhPSBOVUxMKTsKKwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkKICAgICAgICAgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9IGxvb2tkaWN0OwogICAgIGkgPSBoYXNoICYgbWFzazsKLSAgICBlcCA9ICZlcDBbaV07Ci0gICAgZm9yIChwZXJ0dXJiID0gaGFzaDsgZXAtPm1lX2tleSAhPSBOVUxMOyBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUKSB7CisgICAgaXggPSBka19nZXRfaW5kZXgobXAtPm1hX2tleXMsIGkpOworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOyBpeCAhPSBES0lYX0VNUFRZOykgeworICAgICAgICBwZXJ0dXJiID4+PSBQRVJUVVJCX1NISUZUOwogICAgICAgICBpID0gKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDE7Ci0gICAgICAgIGVwID0gJmVwMFtpICYgbWFza107CisgICAgICAgIGl4ID0gZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBpICYgbWFzayk7CiAgICAgfQorICAgIGVwID0gJmVwMFttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdOworICAgICpoYXNocG9zID0gaSAmIG1hc2s7CiAgICAgYXNzZXJ0KGVwLT5tZV92YWx1ZSA9PSBOVUxMKTsKLSAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgKnZhbHVlX2FkZHIgPSAmbXAtPm1hX3ZhbHVlc1tpICYgbWFza107Ci0gICAgZWxzZQotICAgICAgICAqdmFsdWVfYWRkciA9ICZlcC0+bWVfdmFsdWU7Ci0gICAgcmV0dXJuIGVwOworICAgICp2YWx1ZV9hZGRyID0gJmVwLT5tZV92YWx1ZTsKIH0KIAogc3RhdGljIGludApAQCAtNzg0LDU4ICsxMTA5LDg4IEBACiB7CiAgICAgUHlPYmplY3QgKm9sZF92YWx1ZTsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwotICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOworICAgIFB5RGljdEtleUVudHJ5ICplcCwgKmVwMDsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogCiAgICAgaWYgKG1wLT5tYV92YWx1ZXMgIT0gTlVMTCAmJiAhUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSkgewogICAgICAgICBpZiAoaW5zZXJ0aW9uX3Jlc2l6ZShtcCkgPCAwKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGVwID0gbXAtPm1hX2tleXMtPmRrX2xvb2t1cChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICBpeCA9IG1wLT5tYV9rZXlzLT5ka19sb29rdXAobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikgewogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQorCiAgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwgbXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCB2YWx1ZSk7Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKG9sZF92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgIGFzc2VydChlcC0+bWVfa2V5ICE9IE5VTEwgJiYgZXAtPm1lX2tleSAhPSBkdW1teSk7Ci0gICAgICAgICp2YWx1ZV9hZGRyID0gdmFsdWU7Ci0gICAgICAgIFB5X0RFQ1JFRihvbGRfdmFsdWUpOyAvKiB3aGljaCAqKkNBTioqIHJlLWVudGVyIChzZWUgaXNzdWUgIzIyNjUzKSAqLworCisgICAgLyogV2hlbiBpbnNlcnRpb24gb3JkZXIgaXMgZGlmZmVyZW50IGZyb20gc2hhcmVkIGtleSwgd2UgY2FuJ3Qgc2hhcmUKKyAgICAgKiB0aGUga2V5IGFueW1vcmUuICBDb252ZXJ0IHRoaXMgaW5zdGFuY2UgdG8gY29tYmluZSB0YWJsZS4KKyAgICAgKi8KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSAmJgorICAgICAgICAoKGl4ID49IDAgJiYgKnZhbHVlX2FkZHIgPT0gTlVMTCAmJiBtcC0+bWFfdXNlZCAhPSBpeCkgfHwKKyAgICAgICAgIChpeCA9PSBES0lYX0VNUFRZICYmIG1wLT5tYV91c2VkICE9IG1wLT5tYV9rZXlzLT5ka19uZW50cmllcykpKSB7CisgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIGl4ID0gREtJWF9FTVBUWTsKICAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIGlmIChlcC0+bWVfa2V5ID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka191c2FibGUgPD0gMCkgewotICAgICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZXAgPSBmaW5kX2VtcHR5X3Nsb3QobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworCisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpIHsKKyAgICAgICAgLyogSW5zZXJ0IGludG8gbmV3IHNsb3QuICovCisgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKKyAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLworICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgbXAtPm1hX2tleXMtPmRrX3VzYWJsZS0tOwotICAgICAgICAgICAgYXNzZXJ0KG1wLT5tYV9rZXlzLT5ka191c2FibGUgPj0gMCk7Ci0gICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwotICAgICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOworICAgICAgICAgICAgZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCAmaGFzaHBvcyk7CisgICAgICAgIH0KKyAgICAgICAgZXAwID0gREtfRU5UUklFUyhtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwID0gJmVwMFttcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXNdOworICAgICAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyk7CisgICAgICAgIFB5X0lOQ1JFRihrZXkpOworICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OworICAgICAgICBlcC0+bWVfaGFzaCA9IGhhc2g7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBhc3NlcnQgKG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9PSBOVUxMKTsKKyAgICAgICAgICAgIG1wLT5tYV92YWx1ZXNbbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzXSA9IHZhbHVlOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgaWYgKGVwLT5tZV9rZXkgPT0gZHVtbXkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKLSAgICAgICAgICAgICAgICBlcC0+bWVfa2V5ID0ga2V5OwotICAgICAgICAgICAgICAgIGVwLT5tZV9oYXNoID0gaGFzaDsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZHVtbXkpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBlcC0+bWVfdmFsdWUgPSB2YWx1ZTsKICAgICAgICAgfQogICAgICAgICBtcC0+bWFfdXNlZCsrOwotICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOwotICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBOVUxMICYmIGVwLT5tZV9rZXkgIT0gZHVtbXkpOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOworICAgICAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX3VzYWJsZSA+PSAwKTsKKyAgICAgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICBhc3NlcnQodmFsdWVfYWRkciAhPSBOVUxMKTsKKworICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGlmIChvbGRfdmFsdWUgIT0gTlVMTCkgeworICAgICAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisKKyAgICAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7IC8qIHdoaWNoICoqQ0FOKiogcmUtZW50ZXIgKHNlZSBpc3N1ZSAjMjI2NTMpICovCisgICAgICAgIHJldHVybiAwOworICAgIH0KKworICAgIC8qIHBlbmRpbmcgc3RhdGUgKi8KKyAgICBhc3NlcnQoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSk7CisgICAgYXNzZXJ0KGl4ID09IG1wLT5tYV91c2VkKTsKKyAgICAqdmFsdWVfYWRkciA9IHZhbHVlOworICAgIG1wLT5tYV91c2VkKys7CisgICAgbXAtPm1hX3ZlcnNpb25fdGFnID0gRElDVF9ORVhUX1ZFUlNJT04oKTsKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTg1NCwyNCArMTIwOSwyNCBAQAogICAgICAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgc2l6ZV90IGk7Ci0gICAgc2l6ZV90IHBlcnR1cmI7CiAgICAgUHlEaWN0S2V5c09iamVjdCAqayA9IG1wLT5tYV9rZXlzOwogICAgIHNpemVfdCBtYXNrID0gKHNpemVfdClES19TSVpFKGspLTE7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwMCA9ICZrLT5ka19lbnRyaWVzWzBdOworICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAKICAgICBhc3NlcnQoay0+ZGtfbG9va3VwICE9IE5VTEwpOwogICAgIGFzc2VydCh2YWx1ZSAhPSBOVUxMKTsKICAgICBhc3NlcnQoa2V5ICE9IE5VTEwpOwotICAgIGFzc2VydChrZXkgIT0gZHVtbXkpOwogICAgIGFzc2VydChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8IGstPmRrX2xvb2t1cCA9PSBsb29rZGljdCk7CiAgICAgaSA9IGhhc2ggJiBtYXNrOwotICAgIGVwID0gJmVwMFtpXTsKLSAgICBmb3IgKHBlcnR1cmIgPSBoYXNoOyBlcC0+bWVfa2V5ICE9IE5VTEw7IHBlcnR1cmIgPj49IFBFUlRVUkJfU0hJRlQpIHsKLSAgICAgICAgaSA9IChpIDw8IDIpICsgaSArIHBlcnR1cmIgKyAxOwotICAgICAgICBlcCA9ICZlcDBbaSAmIG1hc2tdOworICAgIGZvciAoc2l6ZV90IHBlcnR1cmIgPSBoYXNoOyBka19nZXRfaW5kZXgoaywgaSkgIT0gREtJWF9FTVBUWTspIHsKKyAgICAgICAgcGVydHVyYiA+Pj0gUEVSVFVSQl9TSElGVDsKKyAgICAgICAgaSA9IG1hc2sgJiAoKGkgPDwgMikgKyBpICsgcGVydHVyYiArIDEpOwogICAgIH0KKyAgICBlcCA9ICZlcDBbay0+ZGtfbmVudHJpZXNdOwogICAgIGFzc2VydChlcC0+bWVfdmFsdWUgPT0gTlVMTCk7CisgICAgZGtfc2V0X2luZGV4KGssIGksIGstPmRrX25lbnRyaWVzKTsKKyAgICBrLT5ka19uZW50cmllcysrOwogICAgIGVwLT5tZV9rZXkgPSBrZXk7CiAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwogICAgIGVwLT5tZV92YWx1ZSA9IHZhbHVlOwpAQCAtODkwLDEzICsxMjQ1LDEzIEBACiBzdGF0aWMgaW50CiBkaWN0cmVzaXplKFB5RGljdE9iamVjdCAqbXAsIFB5X3NzaXplX3QgbWludXNlZCkKIHsKLSAgICBQeV9zc2l6ZV90IG5ld3NpemU7CisgICAgUHlfc3NpemVfdCBpLCBuZXdzaXplOwogICAgIFB5RGljdEtleXNPYmplY3QgKm9sZGtleXM7CiAgICAgUHlPYmplY3QgKipvbGR2YWx1ZXM7Ci0gICAgUHlfc3NpemVfdCBpLCBvbGRzaXplOworICAgIFB5RGljdEtleUVudHJ5ICplcDA7CiAKLS8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLwotICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEOworICAgIC8qIEZpbmQgdGhlIHNtYWxsZXN0IHRhYmxlIHNpemUgPiBtaW51c2VkLiAqLworICAgIGZvciAobmV3c2l6ZSA9IFB5RGljdF9NSU5TSVpFOwogICAgICAgICAgbmV3c2l6ZSA8PSBtaW51c2VkICYmIG5ld3NpemUgPiAwOwogICAgICAgICAgbmV3c2l6ZSA8PD0gMSkKICAgICAgICAgOwpAQCAtOTE0LDU0ICsxMjY5LDQxIEBACiAgICAgfQogICAgIGlmIChvbGRrZXlzLT5ka19sb29rdXAgPT0gbG9va2RpY3QpCiAgICAgICAgIG1wLT5tYV9rZXlzLT5ka19sb29rdXAgPSBsb29rZGljdDsKLSAgICBvbGRzaXplID0gREtfU0laRShvbGRrZXlzKTsKICAgICBtcC0+bWFfdmFsdWVzID0gTlVMTDsKLSAgICAvKiBJZiBlbXB0eSB0aGVuIG5vdGhpbmcgdG8gY29weSBzbyBqdXN0IHJldHVybiAqLwotICAgIGlmIChvbGRzaXplID09IDEpIHsKLSAgICAgICAgYXNzZXJ0KG9sZGtleXMgPT0gUHlfRU1QVFlfS0VZUyk7Ci0gICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGVwMCA9IERLX0VOVFJJRVMob2xka2V5cyk7CiAgICAgLyogTWFpbiBsb29wIGJlbG93IGFzc3VtZXMgd2UgY2FuIHRyYW5zZmVyIHJlZmNvdW50IHRvIG5ldyBrZXlzCiAgICAgICogYW5kIHRoYXQgdmFsdWUgaXMgc3RvcmVkIGluIG1lX3ZhbHVlLgogICAgICAqIEluY3JlbWVudCByZWYtY291bnRzIGFuZCBjb3B5IHZhbHVlcyBoZXJlIHRvIGNvbXBlbnNhdGUKICAgICAgKiBUaGlzIChyZXNpemluZyBhIHNwbGl0IHRhYmxlKSBzaG91bGQgYmUgcmVsYXRpdmVseSByYXJlICovCiAgICAgaWYgKG9sZHZhbHVlcyAhPSBOVUxMKSB7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKICAgICAgICAgICAgIGlmIChvbGR2YWx1ZXNbaV0gIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihvbGRrZXlzLT5ka19lbnRyaWVzW2ldLm1lX2tleSk7Ci0gICAgICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IG9sZHZhbHVlc1tpXTsKKyAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZXAwW2ldLm1lX2tleSk7CisgICAgICAgICAgICAgICAgZXAwW2ldLm1lX3ZhbHVlID0gb2xkdmFsdWVzW2ldOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogICAgIC8qIE1haW4gbG9vcCAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJm9sZGtleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmVwMFtpXTsKICAgICAgICAgaWYgKGVwLT5tZV92YWx1ZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBhc3NlcnQoZXAtPm1lX2tleSAhPSBkdW1teSk7CiAgICAgICAgICAgICBpbnNlcnRkaWN0X2NsZWFuKG1wLCBlcC0+bWVfa2V5LCBlcC0+bWVfaGFzaCwgZXAtPm1lX3ZhbHVlKTsKICAgICAgICAgfQogICAgIH0KICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIC09IG1wLT5tYV91c2VkOwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewogICAgICAgICAvKiBOVUxMIG91dCBtZV92YWx1ZSBzbG90IGluIG9sZGtleXMsIGluIGNhc2UgaXQgd2FzIHNoYXJlZCAqLwotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgb2xkc2l6ZTsgaSsrKQotICAgICAgICAgICAgb2xka2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSA9IE5VTEw7Ci0gICAgICAgIGFzc2VydChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKTsKLSAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG9sZGtleXMtPmRrX25lbnRyaWVzOyBpKyspCisgICAgICAgICAgICBlcDBbaV0ubWVfdmFsdWUgPSBOVUxMOwogICAgICAgICBES19ERUNSRUYob2xka2V5cyk7CisgICAgICAgIGlmIChvbGR2YWx1ZXMgIT0gZW1wdHlfdmFsdWVzKSB7CisgICAgICAgICAgICBmcmVlX3ZhbHVlcyhvbGR2YWx1ZXMpOworICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfbG9va3VwICE9IGxvb2tkaWN0X3NwbGl0KTsKLSAgICAgICAgaWYgKG9sZGtleXMtPmRrX2xvb2t1cCAhPSBsb29rZGljdF91bmljb2RlX25vZHVtbXkpIHsKLSAgICAgICAgICAgIFB5RGljdEtleUVudHJ5ICplcDAgPSAmb2xka2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBvbGRzaXplOyBpKyspIHsKLSAgICAgICAgICAgICAgICBpZiAoZXAwW2ldLm1lX2tleSA9PSBkdW1teSkKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGR1bW15KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQogICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwotICAgICAgICBES19ERUJVR19ERUNSRUYgUHlNZW1fRlJFRShvbGRrZXlzKTsKKyAgICAgICAgREtfREVCVUdfREVDUkVGIFB5T2JqZWN0X0ZSRUUob2xka2V5cyk7CiAgICAgfQogICAgIHJldHVybiAwOwogfQpAQCAtOTkxLDggKzEzMzMsOCBAQAogICAgICAgICB9CiAgICAgICAgIGFzc2VydChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwID09IGxvb2tkaWN0X3VuaWNvZGVfbm9kdW1teSk7CiAgICAgICAgIC8qIENvcHkgdmFsdWVzIGludG8gYSBuZXcgYXJyYXkgKi8KLSAgICAgICAgZXAwID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdOwotICAgICAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgICAgICBzaXplID0gVVNBQkxFX0ZSQUNUSU9OKERLX1NJWkUobXAtPm1hX2tleXMpKTsKICAgICAgICAgdmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTWVtb3J5RXJyb3IsCkBAIC0xMDE1LDcgKzEzNTcsNyBAQAogewogICAgIFB5X3NzaXplX3QgbmV3c2l6ZTsKICAgICBQeURpY3RLZXlzT2JqZWN0ICpuZXdfa2V5czsKLSAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRV9DT01CSU5FRDsKKyAgICBmb3IgKG5ld3NpemUgPSBQeURpY3RfTUlOU0laRTsKICAgICAgICAgIG5ld3NpemUgPD0gbWludXNlZCAmJiBuZXdzaXplID4gMDsKICAgICAgICAgIG5ld3NpemUgPDw9IDEpCiAgICAgICAgIDsKQEAgLTEwMzksOCArMTM4MSw4IEBACiBQeURpY3RfR2V0SXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeDsKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0xMDY2LDE1ICsxNDA4LDE1IEBACiAgICAgICAgIC8qIHByZXNlcnZlIHRoZSBleGlzdGluZyBleGNlcHRpb24gKi8KICAgICAgICAgUHlPYmplY3QgKmVycl90eXBlLCAqZXJyX3ZhbHVlLCAqZXJyX3RiOwogICAgICAgICBQeUVycl9GZXRjaCgmZXJyX3R5cGUsICZlcnJfdmFsdWUsICZlcnJfdGIpOwotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKICAgICAgICAgLyogaWdub3JlIGVycm9ycyAqLwogICAgICAgICBQeUVycl9SZXN0b3JlKGVycl90eXBlLCBlcnJfdmFsdWUsIGVycl90Yik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKQorICAgICAgICBpZiAoaXggPCAwKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgICAgIGlmIChlcCA9PSBOVUxMKSB7CisgICAgICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICAgICAgaWYgKGl4IDwgMCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMDg1LDggKzE0MjcsOCBAQAogUHlPYmplY3QgKgogX1B5RGljdF9HZXRJdGVtX0tub3duSGFzaChQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIApAQCAtMTEwMywxNSArMTQ0NSwxNSBAQAogICAgICAgICAvKiBwcmVzZXJ2ZSB0aGUgZXhpc3RpbmcgZXhjZXB0aW9uICovCiAgICAgICAgIFB5T2JqZWN0ICplcnJfdHlwZSwgKmVycl92YWx1ZSwgKmVycl90YjsKICAgICAgICAgUHlFcnJfRmV0Y2goJmVycl90eXBlLCAmZXJyX3ZhbHVlLCAmZXJyX3RiKTsKLSAgICAgICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOworICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CiAgICAgICAgIC8qIGlnbm9yZSBlcnJvcnMgKi8KICAgICAgICAgUHlFcnJfUmVzdG9yZShlcnJfdHlwZSwgZXJyX3ZhbHVlLCBlcnJfdGIpOwotICAgICAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICAgICAgaWYgKGl4ID09IERLSVhfRU1QVFkpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgaWYgKGVwID09IE5VTEwpIHsKKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgICAgICBpZiAoaXggPT0gREtJWF9FTVBUWSkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9CkBAIC0xMTI2LDkgKzE0NjgsOSBAQAogUHlPYmplY3QgKgogUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogeworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7CiAgICAgUHlEaWN0T2JqZWN0Km1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CiAKICAgICBpZiAoIVB5RGljdF9DaGVjayhvcCkpIHsKQEAgLTExNDQsOCArMTQ4Niw4IEBACiAgICAgICAgIH0KICAgICB9CiAKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KQEAgLTExNjAsMzkgKzE1MDIsNDAgQEAKICAgICByZXR1cm4gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoZHAsIGt2KTsKIH0KIAotLyogRmFzdCB2ZXJzaW9uIG9mIGdsb2JhbCB2YWx1ZSBsb29rdXAuCisvKiBGYXN0IHZlcnNpb24gb2YgZ2xvYmFsIHZhbHVlIGxvb2t1cCAoTE9BRF9HTE9CQUwpLgogICogTG9va3VwIGluIGdsb2JhbHMsIHRoZW4gYnVpbHRpbnMuCisgKgorICogUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gTlVMTCBpZiBhbiBlcnJvciBvY2N1cnJlZCAoZXg6IGNvbXB1dGluZyB0aGUKKyAqIGtleSBoYXNoIGZhaWxlZCwga2V5IGNvbXBhcmlzb24gZmFpbGVkLCAuLi4pLiBSZXR1cm4gTlVMTCBpZiB0aGUga2V5IGRvZXNuJ3QKKyAqIGV4aXN0LiBSZXR1cm4gdGhlIHZhbHVlIGlmIHRoZSBrZXkgZXhpc3RzLgogICovCiBQeU9iamVjdCAqCiBfUHlEaWN0X0xvYWRHbG9iYWwoUHlEaWN0T2JqZWN0ICpnbG9iYWxzLCBQeURpY3RPYmplY3QgKmJ1aWx0aW5zLCBQeU9iamVjdCAqa2V5KQogewotICAgIFB5T2JqZWN0ICp4OwotICAgIGlmIChQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpKSB7Ci0gICAgICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKLSAgICAgICAgUHlfaGFzaF90IGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKilrZXkpLT5oYXNoOwotICAgICAgICBpZiAoaGFzaCAhPSAtMSkgewotICAgICAgICAgICAgUHlEaWN0S2V5RW50cnkgKmU7Ci0gICAgICAgICAgICBlID0gZ2xvYmFscy0+bWFfa2V5cy0+ZGtfbG9va3VwKGdsb2JhbHMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgICAgICAgICAgaWYgKGUgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgeCA9ICp2YWx1ZV9hZGRyOwotICAgICAgICAgICAgaWYgKHggIT0gTlVMTCkKLSAgICAgICAgICAgICAgICByZXR1cm4geDsKLSAgICAgICAgICAgIGUgPSBidWlsdGlucy0+bWFfa2V5cy0+ZGtfbG9va3VwKGJ1aWx0aW5zLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICAgICAgICAgIGlmIChlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAqdmFsdWVfYWRkcjsKLSAgICAgICAgICAgIHJldHVybiB4OwotICAgICAgICB9CisgICAgUHlfc3NpemVfdCBpeDsKKyAgICBQeV9oYXNoX3QgaGFzaDsKKyAgICBQeU9iamVjdCAqKnZhbHVlX2FkZHI7CisKKyAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KGtleSkgfHwKKyAgICAgICAgKGhhc2ggPSAoKFB5QVNDSUlPYmplY3QgKikga2V5KS0+aGFzaCkgPT0gLTEpCisgICAgeworICAgICAgICBoYXNoID0gUHlPYmplY3RfSGFzaChrZXkpOworICAgICAgICBpZiAoaGFzaCA9PSAtMSkKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB4ID0gUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IoKFB5T2JqZWN0ICopZ2xvYmFscywga2V5KTsKLSAgICBpZiAoeCAhPSBOVUxMKQotICAgICAgICByZXR1cm4geDsKLSAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKKworICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCisgICAgaXggPSBnbG9iYWxzLT5tYV9rZXlzLT5ka19sb29rdXAoZ2xvYmFscywga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcigoUHlPYmplY3QgKilidWlsdGlucywga2V5KTsKKyAgICBpZiAoaXggIT0gREtJWF9FTVBUWSAmJiAqdmFsdWVfYWRkciAhPSBOVUxMKQorICAgICAgICByZXR1cm4gKnZhbHVlX2FkZHI7CisKKyAgICAvKiBuYW1lc3BhY2UgMjogYnVpbHRpbnMgKi8KKyAgICBpeCA9IGJ1aWx0aW5zLT5tYV9rZXlzLT5ka19sb29rdXAoYnVpbHRpbnMsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA8IDApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHJldHVybiAqdmFsdWVfYWRkcjsKIH0KIAogLyogQ0FVVElPTjogUHlEaWN0X1NldEl0ZW0oKSBtdXN0IGd1YXJhbnRlZSB0aGF0IGl0IHdvbid0IHJlc2l6ZSB0aGUKQEAgLTEyNDcsMTYgKzE1OTAsOCBAQAogaW50CiBQeURpY3RfRGVsSXRlbShQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXkpCiB7Ci0gICAgUHlEaWN0T2JqZWN0ICptcDsKICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7Ci0gICAgUHlPYmplY3QgKm9sZF9rZXksICpvbGRfdmFsdWU7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCi0gICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKSB7Ci0gICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogICAgIGFzc2VydChrZXkpOwogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fAogICAgICAgICAoaGFzaCA9ICgoUHlBU0NJSU9iamVjdCAqKSBrZXkpLT5oYXNoKSA9PSAtMSkgewpAQCAtMTI2NCwzMSArMTU5OSwxNCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gLTE7Ci0gICAgaWYgKCp2YWx1ZV9hZGRyID09IE5VTEwpIHsKLSAgICAgICAgX1B5RXJyX1NldEtleUVycm9yKGtleSk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgKnZhbHVlX2FkZHIgPSBOVUxMOwotICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KLSAgICBQeV9ERUNSRUYob2xkX3ZhbHVlKTsKLSAgICByZXR1cm4gMDsKKworICAgIHJldHVybiBfUHlEaWN0X0RlbEl0ZW1fS25vd25IYXNoKG9wLCBrZXksIGhhc2gpOwogfQogCiBpbnQKIF9QeURpY3RfRGVsSXRlbV9Lbm93bkhhc2goUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5LCBQeV9oYXNoX3QgaGFzaCkKIHsKKyAgICBQeV9zc2l6ZV90IGhhc2hwb3MsIGl4OwogICAgIFB5RGljdE9iamVjdCAqbXA7CiAgICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICpvbGRfa2V5LCAqb2xkX3ZhbHVlOwpAQCAtMTMwMSwyNCArMTYxOSwzOCBAQAogICAgIGFzc2VydChrZXkpOwogICAgIGFzc2VydChoYXNoICE9IC0xKTsKICAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIC0xOwotICAgIGlmICgqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoZGtfZ2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zKSA9PSBpeCk7CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICAgICAgYXNzZXJ0KGl4ID49IDApOworICAgIH0KKwogICAgIG9sZF92YWx1ZSA9ICp2YWx1ZV9hZGRyOworICAgIGFzc2VydChvbGRfdmFsdWUgIT0gTlVMTCk7CiAgICAgKnZhbHVlX2FkZHIgPSBOVUxMOwogICAgIG1wLT5tYV91c2VkLS07Ci0gICAgaWYgKCFfUHlEaWN0X0hhc1NwbGl0VGFibGUobXApKSB7Ci0gICAgICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKLSAgICAgICAgb2xkX2tleSA9IGVwLT5tZV9rZXk7Ci0gICAgICAgIFB5X0lOQ1JFRihkdW1teSk7Ci0gICAgICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKLSAgICAgICAgUHlfREVDUkVGKG9sZF9rZXkpOwotICAgIH0KKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKKyAgICBka19zZXRfaW5kZXgobXAtPm1hX2tleXMsIGhhc2hwb3MsIERLSVhfRFVNTVkpOworICAgIEVOU1VSRV9BTExPV1NfREVMRVRJT05TKG1wKTsKKyAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKKyAgICBQeV9ERUNSRUYob2xkX2tleSk7CiAgICAgUHlfREVDUkVGKG9sZF92YWx1ZSk7CisKKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEzNDIsOSArMTY3NCwxMCBAQAogICAgIG1wLT5tYV9rZXlzID0gUHlfRU1QVFlfS0VZUzsKICAgICBtcC0+bWFfdmFsdWVzID0gZW1wdHlfdmFsdWVzOwogICAgIG1wLT5tYV91c2VkID0gMDsKKyAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOwogICAgIC8qIC4uLnRoZW4gY2xlYXIgdGhlIGtleXMgYW5kIHZhbHVlcyAqLwogICAgIGlmIChvbGR2YWx1ZXMgIT0gTlVMTCkgewotICAgICAgICBuID0gREtfU0laRShvbGRrZXlzKTsKKyAgICAgICAgbiA9IG9sZGtleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKQogICAgICAgICAgICAgUHlfQ0xFQVIob2xkdmFsdWVzW2ldKTsKICAgICAgICAgZnJlZV92YWx1ZXMob2xkdmFsdWVzKTsKQEAgLTEzNTQsNDIgKzE2ODcsNTkgQEAKICAgICAgICBhc3NlcnQob2xka2V5cy0+ZGtfcmVmY250ID09IDEpOwogICAgICAgIERLX0RFQ1JFRihvbGRrZXlzKTsKICAgICB9CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogfQogCi0vKiBSZXR1cm5zIC0xIGlmIG5vIG1vcmUgaXRlbXMgKG9yIG9wIGlzIG5vdCBhIGRpY3QpLAotICogaW5kZXggb2YgaXRlbSBvdGhlcndpc2UuIFN0b3JlcyB2YWx1ZSBpbiBwdmFsdWUKKy8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgorICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCisgKiBSZXR1cm4gMSBvbiBzdWNjZXNzLCByZXR1cm4gMCB3aGVuIHRoZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGRpY3Rpb25hcnkKKyAqIChvciBpZiBvcCBpcyBub3QgYSBkaWN0aW9uYXJ5KQogICovCi1QeV9MT0NBTF9JTkxJTkUoUHlfc3NpemVfdCkKLWRpY3RfbmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgaSwgUHlPYmplY3QgKipwdmFsdWUpCitpbnQKK19QeURpY3RfTmV4dChQeU9iamVjdCAqb3AsIFB5X3NzaXplX3QgKnBwb3MsIFB5T2JqZWN0ICoqcGtleSwKKyAgICAgICAgICAgICBQeU9iamVjdCAqKnB2YWx1ZSwgUHlfaGFzaF90ICpwaGFzaCkKIHsKLSAgICBQeV9zc2l6ZV90IG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKLQorICAgIFB5RGljdEtleUVudHJ5ICplbnRyeV9wdHI7CisgICAgUHlPYmplY3QgKnZhbHVlOwogCiAgICAgaWYgKCFQeURpY3RfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIHJldHVybiAwOwogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgIGlmIChpIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOworICAgIGkgPSAqcHBvczsKKyAgICBuID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOworICAgIGlmICgoc2l6ZV90KWkgPj0gKHNpemVfdCluKQorICAgICAgICByZXR1cm4gMDsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykgewotICAgICAgICB2YWx1ZV9wdHIgPSAmbXAtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZtcC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGVudHJ5X3B0ciA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpXTsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOworICAgICAgICBlbnRyeV9wdHIgPSAmREtfRU5UUklFUyhtcC0+bWFfa2V5cylbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiBlbnRyeV9wdHItPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVudHJ5X3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KLSAgICBtYXNrID0gREtfTUFTSyhtcC0+bWFfa2V5cyk7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOwotICAgIH0KLSAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgIHJldHVybiAtMTsKKyAgICAqcHBvcyA9IGkrMTsKKyAgICBpZiAocGtleSkKKyAgICAgICAgKnBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKKyAgICBpZiAocGhhc2gpCisgICAgICAgICpwaGFzaCA9IGVudHJ5X3B0ci0+bWVfaGFzaDsKICAgICBpZiAocHZhbHVlKQotICAgICAgICAqcHZhbHVlID0gKnZhbHVlX3B0cjsKLSAgICByZXR1cm4gaTsKKyAgICAgICAgKnB2YWx1ZSA9IHZhbHVlOworICAgIHJldHVybiAxOwogfQogCiAvKgpAQCAtMTM5OSw5ICsxNzQ5LDEyIEBACiAgKiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlOwogICogICAgIGkgPSAwOyAgICMgaW1wb3J0YW50ISAgaSBzaG91bGQgbm90IG90aGVyd2lzZSBiZSBjaGFuZ2VkIGJ5IHlvdQogICogICAgIHdoaWxlIChQeURpY3RfTmV4dCh5b3VyZGljdCwgJmksICZrZXksICZ2YWx1ZSkpIHsKLSAqICAgICAgICAgICAgICBSZWZlciB0byBib3Jyb3dlZCByZWZlcmVuY2VzIGluIGtleSBhbmQgdmFsdWUuCisgKiAgICAgICAgIFJlZmVyIHRvIGJvcnJvd2VkIHJlZmVyZW5jZXMgaW4ga2V5IGFuZCB2YWx1ZS4KICAqICAgICB9CiAgKgorICogUmV0dXJuIDEgb24gc3VjY2VzcywgcmV0dXJuIDAgd2hlbiB0aGUgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBkaWN0aW9uYXJ5CisgKiAob3IgaWYgb3AgaXMgbm90IGEgZGljdGlvbmFyeSkKKyAqCiAgKiBDQVVUSU9OOiAgSW4gZ2VuZXJhbCwgaXQgaXNuJ3Qgc2FmZSB0byB1c2UgUHlEaWN0X05leHQgaW4gYSBsb29wIHRoYXQKICAqIG11dGF0ZXMgdGhlIGRpY3QuICBPbmUgZXhjZXB0aW9uOiAgaXQgaXMgc2FmZSBpZiB0aGUgbG9vcCBtZXJlbHkgY2hhbmdlcwogICogdGhlIHZhbHVlcyBhc3NvY2lhdGVkIHdpdGggdGhlIGtleXMgKGJ1dCBkb2Vzbid0IGluc2VydCBuZXcga2V5cyBvcgpAQCAtMTQxMCwzNCArMTc2Myw3IEBACiBpbnQKIFB5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LCBQeU9iamVjdCAqKnB2YWx1ZSkKIHsKLSAgICBQeURpY3RPYmplY3QgKm1wOwotICAgIFB5X3NzaXplX3QgaSA9IGRpY3RfbmV4dChvcCwgKnBwb3MsIHB2YWx1ZSk7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBtcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICAqcHBvcyA9IGkrMTsKLSAgICBpZiAocGtleSkKLSAgICAgICAgKnBrZXkgPSBtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV9rZXk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KLS8qIEludGVybmFsIHZlcnNpb24gb2YgUHlEaWN0X05leHQgdGhhdCByZXR1cm5zIGEgaGFzaCB2YWx1ZSBpbiBhZGRpdGlvbgotICogdG8gdGhlIGtleSBhbmQgdmFsdWUuCi0gKi8KLWludAotX1B5RGljdF9OZXh0KFB5T2JqZWN0ICpvcCwgUHlfc3NpemVfdCAqcHBvcywgUHlPYmplY3QgKipwa2V5LAotICAgICAgICAgICAgIFB5T2JqZWN0ICoqcHZhbHVlLCBQeV9oYXNoX3QgKnBoYXNoKQotewotICAgIFB5RGljdE9iamVjdCAqbXA7Ci0gICAgUHlfc3NpemVfdCBpID0gZGljdF9uZXh0KG9wLCAqcHBvcywgcHZhbHVlKTsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIHJldHVybiAwOwotICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW9wOwotICAgICpwcG9zID0gaSsxOwotICAgICpwaGFzaCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX2hhc2g7Ci0gICAgaWYgKHBrZXkpCi0gICAgICAgICpwa2V5ID0gbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHJldHVybiAxOworICAgIHJldHVybiBfUHlEaWN0X05leHQob3AsIHBwb3MsIHBrZXksIHB2YWx1ZSwgTlVMTCk7CiB9CiAKIC8qIEludGVybmFsIHZlcnNpb24gb2YgZGljdC5wb3AoKS4gKi8KQEAgLTE0NDUsNiArMTc3MSw3IEBACiBfUHlEaWN0X1BvcChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqZGVmbHQpCiB7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBpeCwgaGFzaHBvczsKICAgICBQeU9iamVjdCAqb2xkX3ZhbHVlLCAqb2xkX2tleTsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwpAQCAtMTQ2MywxMSArMTc5MCwxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsICZoYXNocG9zKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKG9sZF92YWx1ZSA9PSBOVUxMKSB7CisgICAgaWYgKGl4ID09IERLSVhfRU1QVFkgfHwgKnZhbHVlX2FkZHIgPT0gTlVMTCkgewogICAgICAgICBpZiAoZGVmbHQpIHsKICAgICAgICAgICAgIFB5X0lOQ1JFRihkZWZsdCk7CiAgICAgICAgICAgICByZXR1cm4gZGVmbHQ7CkBAIC0xNDc1LDE1ICsxODAxLDI5IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CisKKyAgICAvLyBTcGxpdCB0YWJsZSBkb2Vzbid0IGFsbG93IGRlbGV0aW9uLiAgQ29tYmluZSBpdC4KKyAgICBpZiAoX1B5RGljdF9IYXNTcGxpdFRhYmxlKG1wKSkgeworICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgREtfU0laRShtcC0+bWFfa2V5cykpKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgICAgICBhc3NlcnQoaXggPj0gMCk7CisgICAgfQorCisgICAgb2xkX3ZhbHVlID0gKnZhbHVlX2FkZHI7CisgICAgYXNzZXJ0KG9sZF92YWx1ZSAhPSBOVUxMKTsKICAgICAqdmFsdWVfYWRkciA9IE5VTEw7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBpZiAoIV9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKLSAgICAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgICAgICBvbGRfa2V5ID0gZXAtPm1lX2tleTsKLSAgICAgICAgUHlfSU5DUkVGKGR1bW15KTsKLSAgICAgICAgZXAtPm1lX2tleSA9IGR1bW15OwotICAgICAgICBQeV9ERUNSRUYob2xkX2tleSk7Ci0gICAgfQorICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBES0lYX0RVTU1ZKTsKKyAgICBlcCA9ICZES19FTlRSSUVTKG1wLT5tYV9rZXlzKVtpeF07CisgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOworICAgIG9sZF9rZXkgPSBlcC0+bWVfa2V5OworICAgIGVwLT5tZV9rZXkgPSBOVUxMOworICAgIFB5X0RFQ1JFRihvbGRfa2V5KTsKKworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3kobXApKTsKICAgICByZXR1cm4gb2xkX3ZhbHVlOwogfQogCkBAIC0xNTA4LDcgKzE4NDgsNyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKmtleTsKICAgICAgICAgICAgIFB5X2hhc2hfdCBoYXNoOwogCi0gICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgUHlfU0laRShpdGVyYWJsZSkpKSB7CisgICAgICAgICAgICBpZiAoZGljdHJlc2l6ZShtcCwgRVNUSU1BVEVfU0laRShQeV9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTUyNyw3ICsxODY3LDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICprZXk7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKIAotICAgICAgICAgICAgaWYgKGRpY3RyZXNpemUobXAsIFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpIHsKKyAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCBFU1RJTUFURV9TSVpFKFB5U2V0X0dFVF9TSVpFKGl0ZXJhYmxlKSkpKSB7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgfQpAQCAtMTU4Nyw3ICsxOTI3LDcgQEAKICAgICBQeV9UUkFTSENBTl9TQUZFX0JFR0lOKG1wKQogICAgIGlmICh2YWx1ZXMgIT0gTlVMTCkgewogICAgICAgICBpZiAodmFsdWVzICE9IGVtcHR5X3ZhbHVlcykgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBmb3IgKGkgPSAwLCBuID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZnJlZV92YWx1ZXModmFsdWVzKTsKQEAgLTE2OTksOCArMjAzOSw4IEBACiBkaWN0X3N1YnNjcmlwdChQeURpY3RPYmplY3QgKm1wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5T2JqZWN0ICp2OworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlfaGFzaF90IGhhc2g7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMTcwOSwxMSArMjA0OSwxMCBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2ID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHYgPT0gTlVMTCkgeworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpIHsKICAgICAgICAgaWYgKCFQeURpY3RfQ2hlY2tFeGFjdChtcCkpIHsKICAgICAgICAgICAgIC8qIExvb2sgdXAgX19taXNzaW5nX18gbWV0aG9kIGlmIHdlJ3JlIGEgc3ViY2xhc3MuICovCiAgICAgICAgICAgICBQeU9iamVjdCAqbWlzc2luZywgKnJlczsKQEAgLTE3MzEsOCArMjA3MCw4IEBACiAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZWxzZQotICAgICAgICBQeV9JTkNSRUYodik7CisgICAgdiA9ICp2YWx1ZV9hZGRyOworICAgIFB5X0lOQ1JFRih2KTsKICAgICByZXR1cm4gdjsKIH0KIApAQCAtMTc3Miw4ICsyMTExLDggQEAKICAgICAgICAgUHlfREVDUkVGKHYpOwogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KLSAgICBlcCA9ICZtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1swXTsKLSAgICBzaXplID0gREtfU0laRShtcC0+bWFfa2V5cyk7CisgICAgZXAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBzaXplID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CiAgICAgICAgIHZhbHVlX3B0ciA9IG1wLT5tYV92YWx1ZXM7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKQEAgLTE4MDAsNiArMjEzOSw3IEBACiB7CiAgICAgUHlPYmplY3QgKnY7CiAgICAgUHlfc3NpemVfdCBpLCBqOworICAgIFB5RGljdEtleUVudHJ5ICplcDsKICAgICBQeV9zc2l6ZV90IHNpemUsIG4sIG9mZnNldDsKICAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIApAQCAtMTgxNSwxMyArMjE1NSwxNCBAQAogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGdvdG8gYWdhaW47CiAgICAgfQotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJm1wLT5tYV9rZXlzLT5ka19lbnRyaWVzWzBdLm1lX3ZhbHVlOworICAgICAgICB2YWx1ZV9wdHIgPSAmZXBbMF0ubWVfdmFsdWU7CiAgICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7CiAgICAgfQogICAgIGZvciAoaSA9IDAsIGogPSAwOyBpIDwgc2l6ZTsgaSsrKSB7CkBAIC0xODcyLDggKzIyMTMsOCBAQAogICAgICAgICBnb3RvIGFnYWluOwogICAgIH0KICAgICAvKiBOb3RoaW5nIHdlIGRvIGJlbG93IG1ha2VzIGFueSBmdW5jdGlvbiBjYWxscy4gKi8KLSAgICBlcCA9IG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzOwotICAgIHNpemUgPSBES19TSVpFKG1wLT5tYV9rZXlzKTsKKyAgICBlcCA9IERLX0VOVFJJRVMobXAtPm1hX2tleXMpOworICAgIHNpemUgPSBtcC0+bWFfa2V5cy0+ZGtfbmVudHJpZXM7CiAgICAgaWYgKG1wLT5tYV92YWx1ZXMpIHsKICAgICAgICAgdmFsdWVfcHRyID0gbXAtPm1hX3ZhbHVlczsKICAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOwpAQCAtMTkxNyw3ICsyMjU4LDggQEAKIH0KIAogc3RhdGljIGludAotZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsIGNoYXIgKm1ldGhuYW1lKQorZGljdF91cGRhdGVfY29tbW9uKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqbWV0aG5hbWUpCiB7CiAgICAgUHlPYmplY3QgKmFyZyA9IE5VTEw7CiAgICAgaW50IHJlc3VsdCA9IDA7CkBAIC0yMDE5LDYgKzIzNjEsNyBAQAogICAgIH0KIAogICAgIGkgPSAwOworICAgIGFzc2VydChfUHlEaWN0X0NoZWNrQ29uc2lzdGVuY3koKFB5RGljdE9iamVjdCAqKWQpKTsKICAgICBnb3RvIFJldHVybjsKIEZhaWw6CiAgICAgUHlfWERFQ1JFRihpdGVtKTsKQEAgLTIwMjksMTggKzIzNzIsMTQgQEAKICAgICByZXR1cm4gUHlfU0FGRV9ET1dOQ0FTVChpLCBQeV9zc2l6ZV90LCBpbnQpOwogfQogCi1pbnQKLVB5RGljdF9VcGRhdGUoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiKQotewotICAgIHJldHVybiBQeURpY3RfTWVyZ2UoYSwgYiwgMSk7Ci19Ci0KLWludAotUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQorc3RhdGljIGludAorZGljdF9tZXJnZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIsIGludCBvdmVycmlkZSkKIHsKICAgICBQeURpY3RPYmplY3QgKm1wLCAqb3RoZXI7CiAgICAgUHlfc3NpemVfdCBpLCBuOwotICAgIFB5RGljdEtleUVudHJ5ICplbnRyeTsKKyAgICBQeURpY3RLZXlFbnRyeSAqZW50cnksICplcDA7CisKKyAgICBhc3NlcnQoMCA8PSBvdmVycmlkZSAmJiBvdmVycmlkZSA8PSAyKTsKIAogICAgIC8qIFdlIGFjY2VwdCBmb3IgdGhlIGFyZ3VtZW50IGVpdGhlciBhIGNvbmNyZXRlIGRpY3Rpb25hcnkgb2JqZWN0LAogICAgICAqIG9yIGFuIGFic3RyYWN0ICJtYXBwaW5nIiBvYmplY3QuICBGb3IgdGhlIGZvcm1lciwgd2UgY2FuIGRvCkBAIC0yMDcwLDEwICsyNDA5LDExIEBACiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlICogMyA8IG90aGVyLT5tYV91c2VkICogMikKICAgICAgICAgICAgIGlmIChkaWN0cmVzaXplKG1wLCAobXAtPm1hX3VzZWQgKyBvdGhlci0+bWFfdXNlZCkqMikgIT0gMCkKICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUob3RoZXItPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGVwMCA9IERLX0VOVFJJRVMob3RoZXItPm1hX2tleXMpOworICAgICAgICBmb3IgKGkgPSAwLCBuID0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCAqdmFsdWU7CiAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICAgICAgICAgIGVudHJ5ID0gJm90aGVyLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldOworICAgICAgICAgICAgZW50cnkgPSAmZXAwW2ldOwogICAgICAgICAgICAga2V5ID0gZW50cnktPm1lX2tleTsKICAgICAgICAgICAgIGhhc2ggPSBlbnRyeS0+bWVfaGFzaDsKICAgICAgICAgICAgIGlmIChvdGhlci0+bWFfdmFsdWVzKQpAQCAtMjA4NSwxNCArMjQyNSwyMCBAQAogICAgICAgICAgICAgICAgIGludCBlcnIgPSAwOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICAgICAgaWYgKG92ZXJyaWRlIHx8IFB5RGljdF9HZXRJdGVtKGEsIGtleSkgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBpZiAob3ZlcnJpZGUgPT0gMSB8fCBfUHlEaWN0X0dldEl0ZW1fS25vd25IYXNoKGEsIGtleSwgaGFzaCkgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZXJyID0gaW5zZXJ0ZGljdChtcCwga2V5LCBoYXNoLCB2YWx1ZSk7CisgICAgICAgICAgICAgICAgZWxzZSBpZiAob3ZlcnJpZGUgIT0gMCkgeworICAgICAgICAgICAgICAgICAgICBfUHlFcnJfU2V0S2V5RXJyb3Ioa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGtleSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApCiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKIAotICAgICAgICAgICAgICAgIGlmIChuICE9IERLX1NJWkUob3RoZXItPm1hX2tleXMpKSB7CisgICAgICAgICAgICAgICAgaWYgKG4gIT0gb3RoZXItPm1hX2tleXMtPmRrX25lbnRyaWVzKSB7CiAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGljdCBtdXRhdGVkIGR1cmluZyB1cGRhdGUiKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjEyMSw3ICsyNDY3LDEzIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAKICAgICAgICAgZm9yIChrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKTsga2V5OyBrZXkgPSBQeUl0ZXJfTmV4dChpdGVyKSkgewotICAgICAgICAgICAgaWYgKCFvdmVycmlkZSAmJiBQeURpY3RfR2V0SXRlbShhLCBrZXkpICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAxICYmIFB5RGljdF9HZXRJdGVtKGEsIGtleSkgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChvdmVycmlkZSAhPSAwKSB7CisgICAgICAgICAgICAgICAgICAgIF9QeUVycl9TZXRLZXlFcnJvcihrZXkpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgfQpAQCAtMjE0NCw5ICsyNDk2LDI5IEBACiAgICAgICAgICAgICAvKiBJdGVyYXRvciBjb21wbGV0ZWQsIHZpYSBlcnJvciAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KChQeURpY3RPYmplY3QgKilhKSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKK2ludAorUHlEaWN0X1VwZGF0ZShQeU9iamVjdCAqYSwgUHlPYmplY3QgKmIpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgMSk7Cit9CisKK2ludAorUHlEaWN0X01lcmdlKFB5T2JqZWN0ICphLCBQeU9iamVjdCAqYiwgaW50IG92ZXJyaWRlKQoreworICAgIC8qIFhYWCBEZXByZWNhdGUgb3ZlcnJpZGUgbm90IGluICgwLCAxKS4gKi8KKyAgICByZXR1cm4gZGljdF9tZXJnZShhLCBiLCBvdmVycmlkZSAhPSAwKTsKK30KKworaW50CitfUHlEaWN0X01lcmdlRXgoUHlPYmplY3QgKmEsIFB5T2JqZWN0ICpiLCBpbnQgb3ZlcnJpZGUpCit7CisgICAgcmV0dXJuIGRpY3RfbWVyZ2UoYSwgYiwgb3ZlcnJpZGUpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZGljdF9jb3B5KFB5RGljdE9iamVjdCAqbXApCiB7CkBAIC0yMTY3LDcgKzI1MzksOSBAQAogICAgIG1wID0gKFB5RGljdE9iamVjdCAqKW87CiAgICAgaWYgKF9QeURpY3RfSGFzU3BsaXRUYWJsZShtcCkpIHsKICAgICAgICAgUHlEaWN0T2JqZWN0ICpzcGxpdF9jb3B5OwotICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlcyA9IG5ld192YWx1ZXMoREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeV9zc2l6ZV90IHNpemUgPSBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShtcC0+bWFfa2V5cykpOworICAgICAgICBQeU9iamVjdCAqKm5ld3ZhbHVlczsKKyAgICAgICAgbmV3dmFsdWVzID0gbmV3X3ZhbHVlcyhzaXplKTsKICAgICAgICAgaWYgKG5ld3ZhbHVlcyA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgIHNwbGl0X2NvcHkgPSBQeU9iamVjdF9HQ19OZXcoUHlEaWN0T2JqZWN0LCAmUHlEaWN0X1R5cGUpOwpAQCAtMjE3OSw3ICsyNTUzLDcgQEAKICAgICAgICAgc3BsaXRfY29weS0+bWFfa2V5cyA9IG1wLT5tYV9rZXlzOwogICAgICAgICBzcGxpdF9jb3B5LT5tYV91c2VkID0gbXAtPm1hX3VzZWQ7CiAgICAgICAgIERLX0lOQ1JFRihtcC0+bWFfa2V5cyk7Ci0gICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICBmb3IgKGkgPSAwLCBuID0gc2l6ZTsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gbXAtPm1hX3ZhbHVlc1tpXTsKICAgICAgICAgICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgICAgICAgICAgc3BsaXRfY29weS0+bWFfdmFsdWVzW2ldID0gdmFsdWU7CkBAIC0yMjUwLDggKzI2MjQsOCBAQAogICAgICAgICAvKiBjYW4ndCBiZSBlcXVhbCBpZiAjIG9mIGVudHJpZXMgZGlmZmVyICovCiAgICAgICAgIHJldHVybiAwOwogICAgIC8qIFNhbWUgIyBvZiBlbnRyaWVzIC0tIGNoZWNrIGFsbCBvZiAnZW0uICBFeGl0IGVhcmx5IG9uIGFueSBkaWZmLiAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBES19TSVpFKGEtPm1hX2tleXMpOyBpKyspIHsKLSAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJmEtPm1hX2tleXMtPmRrX2VudHJpZXNbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGEtPm1hX2tleXMtPmRrX25lbnRyaWVzOyBpKyspIHsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVwID0gJkRLX0VOVFJJRVMoYS0+bWFfa2V5cylbaV07CiAgICAgICAgIFB5T2JqZWN0ICphdmFsOwogICAgICAgICBpZiAoYS0+bWFfdmFsdWVzKQogICAgICAgICAgICAgYXZhbCA9IGEtPm1hX3ZhbHVlc1tpXTsKQEAgLTIyNjgsNyArMjY0Miw3IEBACiAgICAgICAgICAgICAvKiBkaXR0byBmb3Iga2V5ICovCiAgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICAgICAgICAgIC8qIHJldXNlIHRoZSBrbm93biBoYXNoIHZhbHVlICovCi0gICAgICAgICAgICBpZiAoKGItPm1hX2tleXMtPmRrX2xvb2t1cCkoYiwga2V5LCBlcC0+bWVfaGFzaCwgJnZhZGRyKSA9PSBOVUxMKQorICAgICAgICAgICAgaWYgKChiLT5tYV9rZXlzLT5ka19sb29rdXApKGIsIGtleSwgZXAtPm1lX2hhc2gsICZ2YWRkciwgTlVMTCkgPCAwKQogICAgICAgICAgICAgICAgIGJ2YWwgPSBOVUxMOwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAgIGJ2YWwgPSAqdmFkZHI7CkBAIC0yMzI2LDcgKzI3MDAsNyBAQAogewogICAgIHJlZ2lzdGVyIFB5RGljdE9iamVjdCAqbXAgPSBzZWxmOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrRXhhY3Qoa2V5KSB8fApAQCAtMjMzNSwxMCArMjcwOSwxMiBAQAogICAgICAgICBpZiAoaGFzaCA9PSAtMSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBlcCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkcik7Ci0gICAgaWYgKGVwID09IE5VTEwpCisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICByZXR1cm4gUHlCb29sX0Zyb21Mb25nKCp2YWx1ZV9hZGRyICE9IE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCisgICAgICAgIFB5X1JFVFVSTl9GQUxTRTsKKyAgICBQeV9SRVRVUk5fVFJVRTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTIzNDgsNyArMjcyNCw3IEBACiAgICAgUHlPYmplY3QgKmZhaWxvYmogPSBQeV9Ob25lOwogICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOwogICAgIFB5X2hhc2hfdCBoYXNoOwotICAgIFB5RGljdEtleUVudHJ5ICplcDsKKyAgICBQeV9zc2l6ZV90IGl4OwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImdldCIsIDEsIDIsICZrZXksICZmYWlsb2JqKSkKQEAgLTIzNjAsMTIgKzI3MzYsMTMgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIGlmIChlcCA9PSBOVUxMKQorICAgIGl4ID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyLCBOVUxMKTsKKyAgICBpZiAoaXggPT0gREtJWF9FUlJPUikKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgdmFsID0gKnZhbHVlX2FkZHI7Ci0gICAgaWYgKHZhbCA9PSBOVUxMKQorICAgIGlmIChpeCA9PSBES0lYX0VNUFRZIHx8ICp2YWx1ZV9hZGRyID09IE5VTEwpCiAgICAgICAgIHZhbCA9IGZhaWxvYmo7CisgICAgZWxzZQorICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICBQeV9JTkNSRUYodmFsKTsKICAgICByZXR1cm4gdmFsOwogfQpAQCAtMjM3Niw2ICsyNzUzLDcgQEAKICAgICBQeURpY3RPYmplY3QgKm1wID0gKFB5RGljdE9iamVjdCAqKWQ7CiAgICAgUHlPYmplY3QgKnZhbCA9IE5VTEw7CiAgICAgUHlfaGFzaF90IGhhc2g7CisgICAgUHlfc3NpemVfdCBoYXNocG9zLCBpeDsKICAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCkBAIC0yMzg5LDI2ICsyNzY3LDQwIEBACiAgICAgICAgIGlmIChoYXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICBpZiAoZXAgPT0gTlVMTCkKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB2YWwgPSAqdmFsdWVfYWRkcjsKLSAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICBpZiAoaXggPT0gREtJWF9FTVBUWSB8fCAqdmFsdWVfYWRkciA9PSBOVUxMKSB7CisgICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CiAgICAgICAgIGlmIChtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlIDw9IDApIHsKICAgICAgICAgICAgIC8qIE5lZWQgdG8gcmVzaXplLiAqLwotICAgICAgICAgICAgaWYgKGluc2VydGlvbl9yZXNpemUobXApIDwgMCkKKyAgICAgICAgICAgIGlmIChpbnNlcnRpb25fcmVzaXplKG1wKSA8IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgIGVwID0gZmluZF9lbXB0eV9zbG90KG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGZpbmRfZW1wdHlfc2xvdChtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgJmhhc2hwb3MpOwogICAgICAgICB9CisgICAgICAgIGl4ID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgICAgICBQeV9JTkNSRUYoZGVmYXVsdG9iaik7CiAgICAgICAgIFB5X0lOQ1JFRihrZXkpOwogICAgICAgICBNQUlOVEFJTl9UUkFDS0lORyhtcCwga2V5LCBkZWZhdWx0b2JqKTsKKyAgICAgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBoYXNocG9zLCBpeCk7CisgICAgICAgIGVwID0gJkRLX0VOVFJJRVMobXAtPm1hX2tleXMpW2l4XTsKICAgICAgICAgZXAtPm1lX2tleSA9IGtleTsKICAgICAgICAgZXAtPm1lX2hhc2ggPSBoYXNoOwotICAgICAgICAqdmFsdWVfYWRkciA9IGRlZmF1bHRvYmo7Ci0gICAgICAgIHZhbCA9IGRlZmF1bHRvYmo7CisgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzKSB7CisgICAgICAgICAgICBtcC0+bWFfdmFsdWVzW2l4XSA9IHZhbDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGVwLT5tZV92YWx1ZSA9IHZhbDsKKyAgICAgICAgfQogICAgICAgICBtcC0+bWFfa2V5cy0+ZGtfdXNhYmxlLS07CisgICAgICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcysrOwogICAgICAgICBtcC0+bWFfdXNlZCsrOworICAgICAgICBtcC0+bWFfdmVyc2lvbl90YWcgPSBESUNUX05FWFRfVkVSU0lPTigpOworICAgICAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KG1wKSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB2YWwgPSAqdmFsdWVfYWRkcjsKICAgICB9CiAgICAgcmV0dXJuIHZhbDsKIH0KQEAgLTI0NDgsMTEgKzI4NDAsMTAgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBkaWN0X3BvcGl0ZW0oUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9oYXNoX3QgaSA9IDA7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOworICAgIFB5X3NzaXplX3QgaSwgajsKKyAgICBQeURpY3RLZXlFbnRyeSAqZXAwLCAqZXA7CiAgICAgUHlPYmplY3QgKnJlczsKIAotCiAgICAgLyogQWxsb2NhdGUgdGhlIHJlc3VsdCB0dXBsZSBiZWZvcmUgY2hlY2tpbmcgdGhlIHNpemUuICBCZWxpZXZlIGl0CiAgICAgICogb3Igbm90LCB0aGlzIGFsbG9jYXRpb24gY291bGQgdHJpZ2dlciBhIGdhcmJhZ2UgY29sbGVjdGlvbiB3aGljaAogICAgICAqIGNvdWxkIGVtcHR5IHRoZSBkaWN0LCBzbyBpZiB3ZSBjaGVja2VkIHRoZSBzaXplIGZpcnN0IGFuZCB0aGF0CkBAIC0yNDc5LDYxICsyODcwLDU4IEBACiAgICAgICAgIH0KICAgICB9CiAgICAgRU5TVVJFX0FMTE9XU19ERUxFVElPTlMobXApOwotICAgIC8qIFNldCBlcCB0byAidGhlIGZpcnN0IiBkaWN0IGVudHJ5IHdpdGggYSB2YWx1ZS4gIFdlIGFidXNlIHRoZSBoYXNoCi0gICAgICogZmllbGQgb2Ygc2xvdCAwIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyOgotICAgICAqIElmIHNsb3QgMCBoYXMgYSB2YWx1ZSwgdXNlIHNsb3QgMC4KLSAgICAgKiBFbHNlIHNsb3QgMCBpcyBiZWluZyB1c2VkIHRvIGhvbGQgYSBzZWFyY2ggZmluZ2VyLAotICAgICAqIGFuZCB3ZSB1c2UgaXRzIGhhc2ggdmFsdWUgYXMgdGhlIGZpcnN0IGluZGV4IHRvIGxvb2suCi0gICAgICovCi0gICAgZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF07Ci0gICAgaWYgKGVwLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X3NzaXplX3QgbWFzayA9IERLX01BU0sobXAtPm1hX2tleXMpOwotICAgICAgICBpID0gZXAtPm1lX2hhc2g7Ci0gICAgICAgIC8qIFRoZSBoYXNoIGZpZWxkIG1heSBiZSBhIHJlYWwgaGFzaCB2YWx1ZSwgb3IgaXQgbWF5IGJlIGEKLSAgICAgICAgICogbGVnaXQgc2VhcmNoIGZpbmdlciwgb3IgaXQgbWF5IGJlIGEgb25jZS1sZWdpdCBzZWFyY2gKLSAgICAgICAgICogZmluZ2VyIHRoYXQncyBvdXQgb2YgYm91bmRzIG5vdyBiZWNhdXNlIGl0IHdyYXBwZWQgYXJvdW5kCi0gICAgICAgICAqIG9yIHRoZSB0YWJsZSBzaHJ1bmsgLS0gc2ltcGx5IG1ha2Ugc3VyZSBpdCdzIGluIGJvdW5kcyBub3cuCi0gICAgICAgICAqLwotICAgICAgICBpZiAoaSA+IG1hc2sgfHwgaSA8IDEpCi0gICAgICAgICAgICBpID0gMTsgICAgICAgICAgICAgIC8qIHNraXAgc2xvdCAwICovCi0gICAgICAgIHdoaWxlICgoZXAgPSAmbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0pLT5tZV92YWx1ZSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpKys7Ci0gICAgICAgICAgICBpZiAoaSA+IG1hc2spCi0gICAgICAgICAgICAgICAgaSA9IDE7Ci0gICAgICAgIH0KKworICAgIC8qIFBvcCBsYXN0IGl0ZW0gKi8KKyAgICBlcDAgPSBES19FTlRSSUVTKG1wLT5tYV9rZXlzKTsKKyAgICBpID0gbXAtPm1hX2tleXMtPmRrX25lbnRyaWVzIC0gMTsKKyAgICB3aGlsZSAoaSA+PSAwICYmIGVwMFtpXS5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgIGktLTsKICAgICB9CisgICAgYXNzZXJ0KGkgPj0gMCk7CisKKyAgICBlcCA9ICZlcDBbaV07CisgICAgaiA9IGxvb2tkaWN0X2luZGV4KG1wLT5tYV9rZXlzLCBlcC0+bWVfaGFzaCwgaSk7CisgICAgYXNzZXJ0KGogPj0gMCk7CisgICAgYXNzZXJ0KGRrX2dldF9pbmRleChtcC0+bWFfa2V5cywgaikgPT0gaSk7CisgICAgZGtfc2V0X2luZGV4KG1wLT5tYV9rZXlzLCBqLCBES0lYX0RVTU1ZKTsKKwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzLCAwLCBlcC0+bWVfa2V5KTsKICAgICBQeVR1cGxlX1NFVF9JVEVNKHJlcywgMSwgZXAtPm1lX3ZhbHVlKTsKLSAgICBQeV9JTkNSRUYoZHVtbXkpOwotICAgIGVwLT5tZV9rZXkgPSBkdW1teTsKKyAgICBlcC0+bWVfa2V5ID0gTlVMTDsKICAgICBlcC0+bWVfdmFsdWUgPSBOVUxMOworICAgIC8qIFdlIGNhbid0IGRrX3VzYWJsZSsrIHNpbmNlIHRoZXJlIGlzIERLSVhfRFVNTVkgaW4gaW5kaWNlcyAqLworICAgIG1wLT5tYV9rZXlzLT5ka19uZW50cmllcyA9IGk7CiAgICAgbXAtPm1hX3VzZWQtLTsKLSAgICBhc3NlcnQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfdmFsdWUgPT0gTlVMTCk7Ci0gICAgbXAtPm1hX2tleXMtPmRrX2VudHJpZXNbMF0ubWVfaGFzaCA9IGkgKyAxOyAgLyogbmV4dCBwbGFjZSB0byBzdGFydCAqLworICAgIG1wLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgYXNzZXJ0KF9QeURpY3RfQ2hlY2tDb25zaXN0ZW5jeShtcCkpOwogICAgIHJldHVybiByZXM7CiB9CiAKIHN0YXRpYyBpbnQKIGRpY3RfdHJhdmVyc2UoUHlPYmplY3QgKm9wLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKIHsKLSAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBpZiAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgewotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgREtfU0laRShtcC0+bWFfa2V5cyk7IGkrKykgewotICAgICAgICAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeV9WSVNJVChtcC0+bWFfa2V5cy0+ZGtfZW50cmllc1tpXS5tZV92YWx1ZSk7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5KTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbXAtPm1hX2tleXM7CisgICAgUHlEaWN0S2V5RW50cnkgKmVudHJpZXMgPSBES19FTlRSSUVTKGtleXMpOworICAgIFB5X3NzaXplX3QgaSwgbiA9IGtleXMtPmRrX25lbnRyaWVzOworCisgICAgaWYgKGtleXMtPmRrX2xvb2t1cCA9PSBsb29rZGljdCkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZW50cmllc1tpXS5tZV92YWx1ZSAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV92YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfVklTSVQoZW50cmllc1tpXS5tZV9rZXkpOwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIGlmIChtcC0+bWFfdmFsdWVzICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGZvciAoaSA9IDAsIG4gPSBES19TSVpFKG1wLT5tYV9rZXlzKTsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICAgICAgICAgIFB5X1ZJU0lUKG1wLT5tYV92YWx1ZXNbaV0pOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgZm9yIChpID0gMCwgbiA9IERLX1NJWkUobXAtPm1hX2tleXMpOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICAgICAgUHlfVklTSVQobXAtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWUpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgICAgICAgICAgIFB5X1ZJU0lUKGVudHJpZXNbaV0ubWVfdmFsdWUpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtMjU1MiwyMyArMjk0MCwzMSBAQAogUHlfc3NpemVfdAogX1B5RGljdF9TaXplT2YoUHlEaWN0T2JqZWN0ICptcCkKIHsKLSAgICBQeV9zc2l6ZV90IHNpemUsIHJlczsKKyAgICBQeV9zc2l6ZV90IHNpemUsIHVzYWJsZSwgcmVzOwogCiAgICAgc2l6ZSA9IERLX1NJWkUobXAtPm1hX2tleXMpOworICAgIHVzYWJsZSA9IFVTQUJMRV9GUkFDVElPTihzaXplKTsKKwogICAgIHJlcyA9IF9QeU9iamVjdF9TSVpFKFB5X1RZUEUobXApKTsKICAgICBpZiAobXAtPm1hX3ZhbHVlcykKLSAgICAgICAgcmVzICs9IHNpemUgKiBzaXplb2YoUHlPYmplY3QqKTsKKyAgICAgICAgcmVzICs9IHVzYWJsZSAqIHNpemVvZihQeU9iamVjdCopOwogICAgIC8qIElmIHRoZSBkaWN0aW9uYXJ5IGlzIHNwbGl0LCB0aGUga2V5cyBwb3J0aW9uIGlzIGFjY291bnRlZC1mb3IKICAgICAgICBpbiB0aGUgdHlwZSBvYmplY3QuICovCiAgICAgaWYgKG1wLT5tYV9rZXlzLT5ka19yZWZjbnQgPT0gMSkKLSAgICAgICAgcmVzICs9IHNpemVvZihQeURpY3RLZXlzT2JqZWN0KSArIChzaXplLTEpICogc2l6ZW9mKFB5RGljdEtleUVudHJ5KTsKKyAgICAgICAgcmVzICs9IChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgICAgICAtIFB5X01FTUJFUl9TSVpFKFB5RGljdEtleXNPYmplY3QsIGRrX2luZGljZXMpCisgICAgICAgICAgICAgICAgKyBES19JWFNJWkUobXAtPm1hX2tleXMpICogc2l6ZQorICAgICAgICAgICAgICAgICsgc2l6ZW9mKFB5RGljdEtleUVudHJ5KSAqIHVzYWJsZSk7CiAgICAgcmV0dXJuIHJlczsKIH0KIAogUHlfc3NpemVfdAogX1B5RGljdF9LZXlzU2l6ZShQeURpY3RLZXlzT2JqZWN0ICprZXlzKQogewotICAgIHJldHVybiBzaXplb2YoUHlEaWN0S2V5c09iamVjdCkgKyAoREtfU0laRShrZXlzKS0xKSAqIHNpemVvZihQeURpY3RLZXlFbnRyeSk7CisgICAgcmV0dXJuIChzaXplb2YoUHlEaWN0S2V5c09iamVjdCkKKyAgICAgICAgICAgIC0gUHlfTUVNQkVSX1NJWkUoUHlEaWN0S2V5c09iamVjdCwgZGtfaW5kaWNlcykKKyAgICAgICAgICAgICsgREtfSVhTSVpFKGtleXMpICogREtfU0laRShrZXlzKQorICAgICAgICAgICAgKyBVU0FCTEVfRlJBQ1RJT04oREtfU0laRShrZXlzKSkgKiBzaXplb2YoUHlEaWN0S2V5RW50cnkpKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTI2NTUsOCArMzA1MSw4IEBACiBQeURpY3RfQ29udGFpbnMoUHlPYmplY3QgKm9wLCBQeU9iamVjdCAqa2V5KQogewogICAgIFB5X2hhc2hfdCBoYXNoOworICAgIFB5X3NzaXplX3QgaXg7CiAgICAgUHlEaWN0T2JqZWN0ICptcCA9IChQeURpY3RPYmplY3QgKilvcDsKLSAgICBQeURpY3RLZXlFbnRyeSAqZXA7CiAgICAgUHlPYmplY3QgKip2YWx1ZV9hZGRyOwogCiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChrZXkpIHx8CkBAIC0yNjY1LDggKzMwNjEsMTAgQEAKICAgICAgICAgaWYgKGhhc2ggPT0gLTEpCiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGVwID0gKG1wLT5tYV9rZXlzLT5ka19sb29rdXApKG1wLCBrZXksIGhhc2gsICZ2YWx1ZV9hZGRyKTsKLSAgICByZXR1cm4gKGVwID09IE5VTEwpID8gLTEgOiAoKnZhbHVlX2FkZHIgIT0gTlVMTCk7CisgICAgaXggPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIsIE5VTEwpOworICAgIGlmIChpeCA9PSBES0lYX0VSUk9SKQorICAgICAgICByZXR1cm4gLTE7CisgICAgcmV0dXJuIChpeCAhPSBES0lYX0VNUFRZICYmICp2YWx1ZV9hZGRyICE9IE5VTEwpOwogfQogCiAvKiBJbnRlcm5hbCB2ZXJzaW9uIG9mIFB5RGljdF9Db250YWlucyB1c2VkIHdoZW4gdGhlIGhhc2ggdmFsdWUgaXMgYWxyZWFkeSBrbm93biAqLwpAQCAtMjY3NCwxMSArMzA3MiwxMyBAQAogX1B5RGljdF9Db250YWlucyhQeU9iamVjdCAqb3AsIFB5T2JqZWN0ICprZXksIFB5X2hhc2hfdCBoYXNoKQogewogICAgIFB5RGljdE9iamVjdCAqbXAgPSAoUHlEaWN0T2JqZWN0ICopb3A7Ci0gICAgUHlEaWN0S2V5RW50cnkgKmVwOwogICAgIFB5T2JqZWN0ICoqdmFsdWVfYWRkcjsKKyAgICBQeV9zc2l6ZV90IGl4OwogCi0gICAgZXAgPSAobXAtPm1hX2tleXMtPmRrX2xvb2t1cCkobXAsIGtleSwgaGFzaCwgJnZhbHVlX2FkZHIpOwotICAgIHJldHVybiAoZXAgPT0gTlVMTCkgPyAtMSA6ICgqdmFsdWVfYWRkciAhPSBOVUxMKTsKKyAgICBpeCA9IChtcC0+bWFfa2V5cy0+ZGtfbG9va3VwKShtcCwga2V5LCBoYXNoLCAmdmFsdWVfYWRkciwgTlVMTCk7CisgICAgaWYgKGl4ID09IERLSVhfRVJST1IpCisgICAgICAgIHJldHVybiAtMTsKKyAgICByZXR1cm4gKGl4ICE9IERLSVhfRU1QVFkgJiYgKnZhbHVlX2FkZHIgIT0gTlVMTCk7CiB9CiAKIC8qIEhhY2sgdG8gaW1wbGVtZW50ICJrZXkgaW4gZGljdCIgKi8KQEAgLTI3MTIsMTEgKzMxMTIsMTMgQEAKICAgICAgICAgX1B5T2JqZWN0X0dDX1VOVFJBQ0soZCk7CiAKICAgICBkLT5tYV91c2VkID0gMDsKLSAgICBkLT5tYV9rZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX0NPTUJJTkVEKTsKKyAgICBkLT5tYV92ZXJzaW9uX3RhZyA9IERJQ1RfTkVYVF9WRVJTSU9OKCk7CisgICAgZC0+bWFfa2V5cyA9IG5ld19rZXlzX29iamVjdChQeURpY3RfTUlOU0laRSk7CiAgICAgaWYgKGQtPm1hX2tleXMgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoc2VsZik7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KKyAgICBhc3NlcnQoX1B5RGljdF9DaGVja0NvbnNpc3RlbmN5KGQpKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMjkzNywxMyArMzMzOSwxMyBAQAogICAgIHtOVUxMLCAgICAgICAgICAgICAgTlVMTH0gICAgICAgICAgIC8qIHNlbnRpbmVsICovCiB9OwogCi1zdGF0aWMgUHlPYmplY3QgKmRpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKK3N0YXRpYyBQeU9iamVjdCoKK2RpY3RpdGVyX2l0ZXJuZXh0a2V5KGRpY3RpdGVyb2JqZWN0ICpkaSkKIHsKICAgICBQeU9iamVjdCAqa2V5OwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RLZXlzT2JqZWN0ICprOwogICAgIFB5RGljdE9iamVjdCAqZCA9IGRpLT5kaV9kaWN0OwotICAgIFB5T2JqZWN0ICoqdmFsdWVfcHRyOwogCiAgICAgaWYgKGQgPT0gTlVMTCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0yOTU3LDI3ICszMzU5LDMwIEBACiAgICAgfQogCiAgICAgaSA9IGRpLT5kaV9wb3M7Ci0gICAgaWYgKGkgPCAwKQotICAgICAgICBnb3RvIGZhaWw7CiAgICAgayA9IGQtPm1hX2tleXM7CisgICAgbiA9IGstPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IERLX0VOVFJJRVMoaylbaV0ubWVfa2V5OwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmstPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIG1hc2sgPSBES19TSVpFKGspLTE7Ci0gICAgd2hpbGUgKGkgPD0gbWFzayAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gKFB5T2JqZWN0ICoqKSgoKGNoYXIgKil2YWx1ZV9wdHIpICsgb2Zmc2V0KTsKLSAgICAgICAgaSsrOworICAgICAgICBQeURpY3RLZXlFbnRyeSAqZW50cnlfcHRyID0gJkRLX0VOVFJJRVMoaylbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiBlbnRyeV9wdHItPm1lX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgIGVudHJ5X3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIGtleSA9IGVudHJ5X3B0ci0+bWVfa2V5OwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwogICAgIGRpLT5sZW4tLTsKLSAgICBrZXkgPSBrLT5ka19lbnRyaWVzW2ldLm1lX2tleTsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICByZXR1cm4ga2V5OwogCkBAIC0zMDIwLDEyICszNDI1LDEyIEBACiAgICAgMCwKIH07CiAKLXN0YXRpYyBQeU9iamVjdCAqZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCitzdGF0aWMgUHlPYmplY3QgKgorZGljdGl0ZXJfaXRlcm5leHR2YWx1ZShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKnZhbHVlOwotICAgIFB5X3NzaXplX3QgaSwgbWFzaywgb2Zmc2V0OworICAgIFB5X3NzaXplX3QgaSwgbjsKICAgICBQeURpY3RPYmplY3QgKmQgPSBkaS0+ZGlfZGljdDsKLSAgICBQeU9iamVjdCAqKnZhbHVlX3B0cjsKIAogICAgIGlmIChkID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMzAzOSwyNiArMzQ0NCwyOSBAQAogICAgIH0KIAogICAgIGkgPSBkaS0+ZGlfcG9zOwotICAgIG1hc2sgPSBES19TSVpFKGQtPm1hX2tleXMpLTE7Ci0gICAgaWYgKGkgPCAwIHx8IGkgPiBtYXNrKQotICAgICAgICBnb3RvIGZhaWw7CisgICAgbiA9IGQtPm1hX2tleXMtPmRrX25lbnRyaWVzOwogICAgIGlmIChkLT5tYV92YWx1ZXMpIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX3ZhbHVlc1tpXTsKLSAgICAgICAgb2Zmc2V0ID0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICBQeU9iamVjdCAqKnZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07CisgICAgICAgIHdoaWxlIChpIDwgbiAmJiAqdmFsdWVfcHRyID09IE5VTEwpIHsKKyAgICAgICAgICAgIHZhbHVlX3B0cisrOworICAgICAgICAgICAgaSsrOworICAgICAgICB9CisgICAgICAgIGlmIChpID49IG4pCisgICAgICAgICAgICBnb3RvIGZhaWw7CisgICAgICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV9rZXlzLT5ka19lbnRyaWVzW2ldLm1lX3ZhbHVlOwotICAgICAgICBvZmZzZXQgPSBzaXplb2YoUHlEaWN0S2V5RW50cnkpOwotICAgIH0KLSAgICB3aGlsZSAoaSA8PSBtYXNrICYmICp2YWx1ZV9wdHIgPT0gTlVMTCkgewotICAgICAgICB2YWx1ZV9wdHIgPSAoUHlPYmplY3QgKiopKCgoY2hhciAqKXZhbHVlX3B0cikgKyBvZmZzZXQpOwotICAgICAgICBpKys7Ci0gICAgICAgIGlmIChpID4gbWFzaykKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQogICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICB2YWx1ZSA9IGVudHJ5X3B0ci0+bWVfdmFsdWU7CiAgICAgfQogICAgIGRpLT5kaV9wb3MgPSBpKzE7CiAgICAgZGktPmxlbi0tOwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIHJldHVybiB2YWx1ZTsKIApAQCAtMzA4OSw3ICszNDk3LDcgQEAKICAgICBQeU9iamVjdF9HZW5lcmljR2V0QXR0ciwgICAgICAgICAgICAgICAgICAgIC8qIHRwX2dldGF0dHJvICovCiAgICAgMCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiB0cF9zZXRhdHRybyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLC8qIHRwX2ZsYWdzICovCisgICAgUHlfVFBGTEFHU19ERUZBVUxUIHwgUHlfVFBGTEFHU19IQVZFX0dDLCAgICAvKiB0cF9mbGFncyAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfZG9jICovCiAgICAgKHRyYXZlcnNlcHJvYylkaWN0aXRlcl90cmF2ZXJzZSwgICAgICAgICAgICAvKiB0cF90cmF2ZXJzZSAqLwogICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogdHBfY2xlYXIgKi8KQEAgLTMxMDEsMTIgKzM1MDksMTIgQEAKICAgICAwLAogfTsKIAotc3RhdGljIFB5T2JqZWN0ICpkaWN0aXRlcl9pdGVybmV4dGl0ZW0oZGljdGl0ZXJvYmplY3QgKmRpKQorc3RhdGljIFB5T2JqZWN0ICoKK2RpY3RpdGVyX2l0ZXJuZXh0aXRlbShkaWN0aXRlcm9iamVjdCAqZGkpCiB7CiAgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqcmVzdWx0ID0gZGktPmRpX3Jlc3VsdDsKLSAgICBQeV9zc2l6ZV90IGksIG1hc2ssIG9mZnNldDsKKyAgICBQeV9zc2l6ZV90IGksIG47CiAgICAgUHlEaWN0T2JqZWN0ICpkID0gZGktPmRpX2RpY3Q7Ci0gICAgUHlPYmplY3QgKip2YWx1ZV9wdHI7CiAKICAgICBpZiAoZCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTMxMjAsMzcgKzM1MjgsNDEgQEAKICAgICB9CiAKICAgICBpID0gZGktPmRpX3BvczsKLSAgICBpZiAoaSA8IDApCi0gICAgICAgIGdvdG8gZmFpbDsKLSAgICBtYXNrID0gREtfU0laRShkLT5tYV9rZXlzKS0xOworICAgIG4gPSBkLT5tYV9rZXlzLT5ka19uZW50cmllczsKICAgICBpZiAoZC0+bWFfdmFsdWVzKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9ICZkLT5tYV92YWx1ZXNbaV07Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgUHlPYmplY3QgKip2YWx1ZV9wdHIgPSAmZC0+bWFfdmFsdWVzW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7CisgICAgICAgICAgICB2YWx1ZV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldLm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSAqdmFsdWVfcHRyOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgdmFsdWVfcHRyID0gJmQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfdmFsdWU7Ci0gICAgICAgIG9mZnNldCA9IHNpemVvZihQeURpY3RLZXlFbnRyeSk7Ci0gICAgfQotICAgIHdoaWxlIChpIDw9IG1hc2sgJiYgKnZhbHVlX3B0ciA9PSBOVUxMKSB7Ci0gICAgICAgIHZhbHVlX3B0ciA9IChQeU9iamVjdCAqKikoKChjaGFyICopdmFsdWVfcHRyKSArIG9mZnNldCk7Ci0gICAgICAgIGkrKzsKKyAgICAgICAgUHlEaWN0S2V5RW50cnkgKmVudHJ5X3B0ciA9ICZES19FTlRSSUVTKGQtPm1hX2tleXMpW2ldOworICAgICAgICB3aGlsZSAoaSA8IG4gJiYgZW50cnlfcHRyLT5tZV92YWx1ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBlbnRyeV9wdHIrKzsKKyAgICAgICAgICAgIGkrKzsKKyAgICAgICAgfQorICAgICAgICBpZiAoaSA+PSBuKQorICAgICAgICAgICAgZ290byBmYWlsOworICAgICAgICBrZXkgPSBlbnRyeV9wdHItPm1lX2tleTsKKyAgICAgICAgdmFsdWUgPSBlbnRyeV9wdHItPm1lX3ZhbHVlOwogICAgIH0KICAgICBkaS0+ZGlfcG9zID0gaSsxOwotICAgIGlmIChpID4gbWFzaykKLSAgICAgICAgZ290byBmYWlsOwotCisgICAgZGktPmxlbi0tOwogICAgIGlmIChyZXN1bHQtPm9iX3JlZmNudCA9PSAxKSB7CiAgICAgICAgIFB5X0lOQ1JFRihyZXN1bHQpOwogICAgICAgICBQeV9ERUNSRUYoUHlUdXBsZV9HRVRfSVRFTShyZXN1bHQsIDApKTsKICAgICAgICAgUHlfREVDUkVGKFB5VHVwbGVfR0VUX0lURU0ocmVzdWx0LCAxKSk7Ci0gICAgfSBlbHNlIHsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJlc3VsdCA9IFB5VHVwbGVfTmV3KDIpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgZGktPmxlbi0tOwotICAgIGtleSA9IGQtPm1hX2tleXMtPmRrX2VudHJpZXNbaV0ubWVfa2V5OwotICAgIHZhbHVlID0gKnZhbHVlX3B0cjsKICAgICBQeV9JTkNSRUYoa2V5KTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgIFB5VHVwbGVfU0VUX0lURU0ocmVzdWx0LCAwLCBrZXkpOyAgLyogc3RlYWxzIHJlZmVyZW5jZSAqLwpAQCAtMzc4OSw3ICs0MjAxLDcgQEAKIFB5RGljdEtleXNPYmplY3QgKgogX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3Modm9pZCkKIHsKLSAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFX1NQTElUKTsKKyAgICBQeURpY3RLZXlzT2JqZWN0ICprZXlzID0gbmV3X2tleXNfb2JqZWN0KFB5RGljdF9NSU5TSVpFKTsKICAgICBpZiAoa2V5cyA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTM4MjUsNyArNDIzNyw3IEBACiAKIGludAogX1B5T2JqZWN0RGljdF9TZXRJdGVtKFB5VHlwZU9iamVjdCAqdHAsIFB5T2JqZWN0ICoqZGljdHB0ciwKLSAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXksIFB5T2JqZWN0ICp2YWx1ZSkKKyAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5LCBQeU9iamVjdCAqdmFsdWUpCiB7CiAgICAgUHlPYmplY3QgKmRpY3Q7CiAgICAgaW50IHJlczsKQEAgLTM4NTQsNyArNDI2Niw4IEBACiAgICAgICAgICAgICAgICAgLyogRWl0aGVyIHVwZGF0ZSB0cC0+aHRfY2FjaGVkX2tleXMgb3IgZGVsZXRlIGl0ICovCiAgICAgICAgICAgICAgICAgaWYgKGNhY2hlZC0+ZGtfcmVmY250ID09IDEpIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gbWFrZV9rZXlzX3NoYXJlZChkaWN0KTsKLSAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgQ0FDSEVEX0tFWVModHApID0gTlVMTDsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgREtfREVDUkVGKGNhY2hlZCk7CkBAIC0zODg0LDUwICs0Mjk3LDMgQEAKIHsKICAgICBES19ERUNSRUYoa2V5cyk7CiB9Ci0KLQotLyogQVJHU1VTRUQgKi8KLXN0YXRpYyBQeU9iamVjdCAqCi1kdW1teV9yZXByKFB5T2JqZWN0ICpvcCkKLXsKLSAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmcoIjxkdW1teSBrZXk+Iik7Ci19Ci0KLS8qIEFSR1VTRUQgKi8KLXN0YXRpYyB2b2lkCi1kdW1teV9kZWFsbG9jKFB5T2JqZWN0KiBpZ25vcmUpCi17Ci0gICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgZ2V0IGNhbGxlZCwgYnV0IHdlIGFsc28gZG9uJ3Qgd2FudCB0byBTRUdWIGlmCi0gICAgICogd2UgYWNjaWRlbnRhbGx5IGRlY3JlZiBkdW1teS1rZXkgb3V0IG9mIGV4aXN0ZW5jZS4KLSAgICAgKi8KLSAgICBQeV9GYXRhbEVycm9yKCJkZWFsbG9jYXRpbmcgPGR1bW15IGtleT4iKTsKLX0KLQotc3RhdGljIFB5VHlwZU9iamVjdCBQeURpY3REdW1teV9UeXBlID0gewotICAgIFB5VmFyT2JqZWN0X0hFQURfSU5JVCgmUHlUeXBlX1R5cGUsIDApCi0gICAgIjxkdW1teSBrZXk+IHR5cGUiLAotICAgIDAsCi0gICAgMCwKLSAgICBkdW1teV9kZWFsbG9jLCAgICAgIC8qdHBfZGVhbGxvYyovIC8qbmV2ZXIgY2FsbGVkKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfcHJpbnQqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9nZXRhdHRyKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0ciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX3Jlc2VydmVkKi8KLSAgICBkdW1teV9yZXByLCAgICAgICAgIC8qdHBfcmVwciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX251bWJlciovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2FzX3NlcXVlbmNlKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfbWFwcGluZyovCi0gICAgMCwgICAgICAgICAgICAgICAgICAvKnRwX2hhc2ggKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfY2FsbCAqLwotICAgIDAsICAgICAgICAgICAgICAgICAgLyp0cF9zdHIgKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfZ2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfc2V0YXR0cm8gKi8KLSAgICAwLCAgICAgICAgICAgICAgICAgIC8qdHBfYXNfYnVmZmVyICovCi0gICAgUHlfVFBGTEFHU19ERUZBVUxULCAvKnRwX2ZsYWdzICovCi19OwotCi1zdGF0aWMgUHlPYmplY3QgX2R1bW15X3N0cnVjdCA9IHsKLSAgX1B5T2JqZWN0X0VYVFJBX0lOSVQKLSAgMiwgJlB5RGljdER1bW15X1R5cGUKLX07Ci0KZGlmZiAtLWdpdCBhL09iamVjdHMvZW51bW9iamVjdC5jIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKaW5kZXggYzQ1OGNmZS4uZGFlMTY2ZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9lbnVtb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9lbnVtb2JqZWN0LmMKQEAgLTI1MCw2ICsyNTAsMTMgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICByZXZlcnNlZF9tZXRoID0gX1B5T2JqZWN0X0xvb2t1cFNwZWNpYWwoc2VxLCAmUHlJZF9fX3JldmVyc2VkX18pOworICAgIGlmIChyZXZlcnNlZF9tZXRoID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAgaWYgKHJldmVyc2VkX21ldGggIT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhyZXZlcnNlZF9tZXRoLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKHJldmVyc2VkX21ldGgpOwpAQCAtMjU5LDggKzI2Niw5IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKCFQeVNlcXVlbmNlX0NoZWNrKHNlcSkpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJhcmd1bWVudCB0byByZXZlcnNlZCgpIG11c3QgYmUgYSBzZXF1ZW5jZSIpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgcmV2ZXJzaWJsZSIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlcSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKZGlmZiAtLWdpdCBhL09iamVjdHMvZXhjZXB0aW9ucy5jIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKaW5kZXggOTgxZWFkMi4uZjYzZjA2YSAxMDA2NDQKLS0tIGEvT2JqZWN0cy9leGNlcHRpb25zLmMKKysrIGIvT2JqZWN0cy9leGNlcHRpb25zLmMKQEAgLTU5LDE1ICs1OSwxMSBAQAogc3RhdGljIGludAogQmFzZUV4Y2VwdGlvbl9pbml0KFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAoIV9QeUFyZ19Ob0tleXdvcmRzKFB5X1RZUEUoc2VsZiktPnRwX25hbWUsIGt3ZHMpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICB0bXAgPSBzZWxmLT5hcmdzOwotICAgIHNlbGYtPmFyZ3MgPSBhcmdzOwotICAgIFB5X0lOQ1JFRihzZWxmLT5hcmdzKTsKLSAgICBQeV9YREVDUkVGKHRtcCk7CisgICAgUHlfSU5DUkVGKGFyZ3MpOworICAgIFB5X1hTRVRSRUYoc2VsZi0+YXJncywgYXJncyk7CiAKICAgICByZXR1cm4gMDsKIH0KQEAgLTIzNCw3ICsyMzAsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgUHlfWElOQ1JFRih0Yik7CisgICAgUHlfSU5DUkVGKHRiKTsKICAgICBQeV9YU0VUUkVGKHNlbGYtPnRyYWNlYmFjaywgdGIpOwogICAgIHJldHVybiAwOwogfQpAQCAtMzI4LDExICszMjQsMTAgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNhdXNlICovCiB2b2lkCi1QeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jYXVzZSA9ICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlOwotICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlID0gY2F1c2U7CitQeUV4Y2VwdGlvbl9TZXRDYXVzZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmNhdXNlKQorewogICAgICgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPnN1cHByZXNzX2NvbnRleHQgPSAxOwotICAgIFB5X1hERUNSRUYob2xkX2NhdXNlKTsKKyAgICBQeV9YU0VUUkVGKCgoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZiktPmNhdXNlLCBjYXVzZSk7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTM0NCwxMCArMzM5LDkgQEAKIAogLyogU3RlYWxzIGEgcmVmZXJlbmNlIHRvIGNvbnRleHQgKi8KIHZvaWQKLVB5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KSB7Ci0gICAgUHlPYmplY3QgKm9sZF9jb250ZXh0ID0gKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dDsKLSAgICAoKFB5QmFzZUV4Y2VwdGlvbk9iamVjdCAqKXNlbGYpLT5jb250ZXh0ID0gY29udGV4dDsKLSAgICBQeV9YREVDUkVGKG9sZF9jb250ZXh0KTsKK1B5RXhjZXB0aW9uX1NldENvbnRleHQoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICpjb250ZXh0KQoreworICAgIFB5X1hTRVRSRUYoKChQeUJhc2VFeGNlcHRpb25PYmplY3QgKilzZWxmKS0+Y29udGV4dCwgY29udGV4dCk7CiB9CiAKIApAQCAtNzE0LDYgKzcwOCwxMyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZS4iKTsKIAogLyoKKyAqICAgIE1vZHVsZU5vdEZvdW5kRXJyb3IgZXh0ZW5kcyBJbXBvcnRFcnJvcgorICovCisKK01pZGRsaW5nRXh0ZW5kc0V4Y2VwdGlvbihQeUV4Y19JbXBvcnRFcnJvciwgTW9kdWxlTm90Rm91bmRFcnJvciwgSW1wb3J0RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgIk1vZHVsZSBub3QgZm91bmQuIik7CisKKy8qCiAgKiAgICBPU0Vycm9yIGV4dGVuZHMgRXhjZXB0aW9uCiAgKi8KIApAQCAtOTkzLDcgKzk5NCw3IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIFB5X1hERUNSRUYoYXJncyk7CisgICAgUHlfREVDUkVGKGFyZ3MpOwogICAgIHJldHVybiAtMTsKIH0KIApAQCAtMTA3Myw4ICsxMDc0LDcgQEAKICAgICB9CiAgICAgaWYgKHNlbGYtPm15ZXJybm8gJiYgc2VsZi0+c3RyZXJyb3IpCiAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiW0Vycm5vICVTXSAlUyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLT5teWVycm5vID8gc2VsZi0+bXllcnJubzogUHlfTm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYtPnN0cmVycm9yID8gc2VsZi0+c3RyZXJyb3I6IFB5X05vbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi0+bXllcnJubywgc2VsZi0+c3RyZXJyb3IpOwogICAgIHJldHVybiBCYXNlRXhjZXB0aW9uX3N0cigoUHlCYXNlRXhjZXB0aW9uT2JqZWN0ICopc2VsZik7CiB9CiAKQEAgLTI0NzgsNiArMjQ3OCw3IEBACiAgICAgUFJFX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQUkVfSU5JVChLZXlib2FyZEludGVycnVwdCkKICAgICBQUkVfSU5JVChJbXBvcnRFcnJvcikKKyAgICBQUkVfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBSRV9JTklUKE9TRXJyb3IpCiAgICAgUFJFX0lOSVQoRU9GRXJyb3IpCiAgICAgUFJFX0lOSVQoUnVudGltZUVycm9yKQpAQCAtMjU1MCw2ICsyNTUxLDcgQEAKICAgICBQT1NUX0lOSVQoU3lzdGVtRXhpdCkKICAgICBQT1NUX0lOSVQoS2V5Ym9hcmRJbnRlcnJ1cHQpCiAgICAgUE9TVF9JTklUKEltcG9ydEVycm9yKQorICAgIFBPU1RfSU5JVChNb2R1bGVOb3RGb3VuZEVycm9yKQogICAgIFBPU1RfSU5JVChPU0Vycm9yKQogICAgIElOSVRfQUxJQVMoRW52aXJvbm1lbnRFcnJvciwgT1NFcnJvcikKICAgICBJTklUX0FMSUFTKElPRXJyb3IsIE9TRXJyb3IpCkBAIC0yNjEyLDcgKzI2MTQsOSBAQAogICAgIEFERF9FUlJOTyhCbG9ja2luZ0lPRXJyb3IsIEVXT1VMREJMT0NLKTsKICAgICBQT1NUX0lOSVQoQnJva2VuUGlwZUVycm9yKTsKICAgICBBRERfRVJSTk8oQnJva2VuUGlwZUVycm9yLCBFUElQRSk7CisjaWZkZWYgRVNIVVRET1dOCiAgICAgQUREX0VSUk5PKEJyb2tlblBpcGVFcnJvciwgRVNIVVRET1dOKTsKKyNlbmRpZgogICAgIFBPU1RfSU5JVChDaGlsZFByb2Nlc3NFcnJvcik7CiAgICAgQUREX0VSUk5PKENoaWxkUHJvY2Vzc0Vycm9yLCBFQ0hJTEQpOwogICAgIFBPU1RfSU5JVChDb25uZWN0aW9uQWJvcnRlZEVycm9yKTsKZGlmZiAtLWdpdCBhL09iamVjdHMvZmlsZW9iamVjdC5jIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKaW5kZXggMjM0ZDA3ZS4uZjQ0MjQxOCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9maWxlb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9maWxlb2JqZWN0LmMKQEAgLTEyNyw3ICsxMjcsNyBAQAogaW50CiBQeUZpbGVfV3JpdGVPYmplY3QoUHlPYmplY3QgKnYsIFB5T2JqZWN0ICpmLCBpbnQgZmxhZ3MpCiB7Ci0gICAgUHlPYmplY3QgKndyaXRlciwgKnZhbHVlLCAqYXJncywgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqd3JpdGVyLCAqdmFsdWUsICpyZXN1bHQ7CiAgICAgX1B5X0lERU5USUZJRVIod3JpdGUpOwogCiAgICAgaWYgKGYgPT0gTlVMTCkgewpAQCAtMTQ2LDE0ICsxNDYsNyBAQAogICAgICAgICBQeV9ERUNSRUYod3JpdGVyKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRih3cml0ZXIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7Ci0gICAgUHlfREVDUkVGKGFyZ3MpOworICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsQXJnMSh3cml0ZXIsIHZhbHVlKTsKICAgICBQeV9ERUNSRUYodmFsdWUpOwogICAgIFB5X0RFQ1JFRih3cml0ZXIpOwogICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKZGlmZiAtLWdpdCBhL09iamVjdHMvZmxvYXRvYmplY3QuYyBiL09iamVjdHMvZmxvYXRvYmplY3QuYwppbmRleCBkOTJiZWMzLi4wZjM3NjE4IDEwMDY0NAotLS0gYS9PYmplY3RzL2Zsb2F0b2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mbG9hdG9iamVjdC5jCkBAIC0xMjQsMTEgKzEyNCw0MyBAQAogICAgIHJldHVybiAoUHlPYmplY3QgKikgb3A7CiB9CiAKK3N0YXRpYyBQeU9iamVjdCAqCitmbG9hdF9mcm9tX3N0cmluZ19pbm5lcihjb25zdCBjaGFyICpzLCBQeV9zc2l6ZV90IGxlbiwgdm9pZCAqb2JqKQoreworICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKmVuZDsKKyAgICBjb25zdCBjaGFyICpsYXN0ID0gcyArIGxlbjsKKyAgICAvKiBzdHJpcCBzcGFjZSAqLworICAgIHdoaWxlIChzIDwgbGFzdCAmJiBQeV9JU1NQQUNFKCpzKSkgeworICAgICAgICBzKys7CisgICAgfQorCisgICAgd2hpbGUgKHMgPCBsYXN0IC0gMSAmJiBQeV9JU1NQQUNFKGxhc3RbLTFdKSkgeworICAgICAgICBsYXN0LS07CisgICAgfQorCisgICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KKyAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQorICAgICAqIGZpbmUuICovCisgICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKKyAgICBpZiAoZW5kICE9IGxhc3QpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCisgICAgICAgICAgICAgICAgICAgICAiJVIiLCBvYmopOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICByZXR1cm4gUHlGbG9hdF9Gcm9tRG91YmxlKHgpOworICAgIH0KK30KKwogUHlPYmplY3QgKgogUHlGbG9hdF9Gcm9tU3RyaW5nKFB5T2JqZWN0ICp2KQogewotICAgIGNvbnN0IGNoYXIgKnMsICpsYXN0LCAqZW5kOwotICAgIGRvdWJsZSB4OworICAgIGNvbnN0IGNoYXIgKnM7CiAgICAgUHlPYmplY3QgKnNfYnVmZmVyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjsKICAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKQEAgLTE2OSwyNyArMjAxLDggQEAKICAgICAgICAgICAgIFB5X1RZUEUodiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgbGFzdCA9IHMgKyBsZW47Ci0gICAgLyogc3RyaXAgc3BhY2UgKi8KLSAgICB3aGlsZSAocyA8IGxhc3QgJiYgUHlfSVNTUEFDRSgqcykpCi0gICAgICAgIHMrKzsKLSAgICB3aGlsZSAocyA8IGxhc3QgLSAxICYmIFB5X0lTU1BBQ0UobGFzdFstMV0pKQotICAgICAgICBsYXN0LS07Ci0gICAgLyogV2UgZG9uJ3QgY2FyZSBhYm91dCBvdmVyZmxvdyBvciB1bmRlcmZsb3cuICBJZiB0aGUgcGxhdGZvcm0KLSAgICAgKiBzdXBwb3J0cyB0aGVtLCBpbmZpbml0aWVzIGFuZCBzaWduZWQgemVyb2VzIChvbiB1bmRlcmZsb3cpIGFyZQotICAgICAqIGZpbmUuICovCi0gICAgeCA9IFB5T1Nfc3RyaW5nX3RvX2RvdWJsZShzLCAoY2hhciAqKikmZW5kLCBOVUxMKTsKLSAgICBpZiAoZW5kICE9IGxhc3QpIHsKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiY291bGQgbm90IGNvbnZlcnQgc3RyaW5nIHRvIGZsb2F0OiAiCi0gICAgICAgICAgICAgICAgICAgICAiJVIiLCB2KTsKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICB9Ci0gICAgZWxzZSBpZiAoeCA9PSAtMS4wICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSBQeUZsb2F0X0Zyb21Eb3VibGUoeCk7Ci0KKyAgICByZXN1bHQgPSBfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKHMsIGxlbiwgImZsb2F0IiwgdiwgdiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsb2F0X2Zyb21fc3RyaW5nX2lubmVyKTsKICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICBQeV9YREVDUkVGKHNfYnVmZmVyKTsKICAgICByZXR1cm4gcmVzdWx0OwpAQCAtMjE1LDM1ICsyMjgsNDkgQEAKIFB5RmxvYXRfQXNEb3VibGUoUHlPYmplY3QgKm9wKQogewogICAgIFB5TnVtYmVyTWV0aG9kcyAqbmI7Ci0gICAgUHlGbG9hdE9iamVjdCAqZm87CisgICAgUHlPYmplY3QgKnJlczsKICAgICBkb3VibGUgdmFsOwogCi0gICAgaWYgKG9wICYmIFB5RmxvYXRfQ2hlY2sob3ApKQotICAgICAgICByZXR1cm4gUHlGbG9hdF9BU19ET1VCTEUoKFB5RmxvYXRPYmplY3QqKSBvcCk7Ci0KICAgICBpZiAob3AgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9CYWRBcmd1bWVudCgpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogCi0gICAgaWYgKChuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXIpID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImEgZmxvYXQgaXMgcmVxdWlyZWQiKTsKKyAgICBpZiAoUHlGbG9hdF9DaGVjayhvcCkpIHsKKyAgICAgICAgcmV0dXJuIFB5RmxvYXRfQVNfRE9VQkxFKG9wKTsKKyAgICB9CisKKyAgICBuYiA9IFB5X1RZUEUob3ApLT50cF9hc19udW1iZXI7CisgICAgaWYgKG5iID09IE5VTEwgfHwgbmItPm5iX2Zsb2F0ID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIm11c3QgYmUgcmVhbCBudW1iZXIsIG5vdCAlLjUwcyIsCisgICAgICAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKLSAgICBmbyA9IChQeUZsb2F0T2JqZWN0KikgKCpuYi0+bmJfZmxvYXQpIChvcCk7Ci0gICAgaWYgKGZvID09IE5VTEwpCi0gICAgICAgIHJldHVybiAtMTsKLSAgICBpZiAoIVB5RmxvYXRfQ2hlY2soZm8pKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmbyk7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibmJfZmxvYXQgc2hvdWxkIHJldHVybiBmbG9hdCBvYmplY3QiKTsKKyAgICByZXMgPSAoKm5iLT5uYl9mbG9hdCkgKG9wKTsKKyAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KKyAgICBpZiAoIVB5RmxvYXRfQ2hlY2tFeGFjdChyZXMpKSB7CisgICAgICAgIGlmICghUHlGbG9hdF9DaGVjayhyZXMpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICIlLjUwcy5fX2Zsb2F0X18gcmV0dXJuZWQgbm9uLWZsb2F0ICh0eXBlICUuNTBzKSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgb3AtPm9iX3R5cGUtPnRwX25hbWUsIHJlcy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICBQeV9ERUNSRUYocmVzKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAgICAgIiUuNTBzLl9fZmxvYXRfXyByZXR1cm5lZCBub24tZmxvYXQgKHR5cGUgJS41MHMpLiAgIgorICAgICAgICAgICAgICAgICJUaGUgYWJpbGl0eSB0byByZXR1cm4gYW4gaW5zdGFuY2Ugb2YgYSBzdHJpY3Qgc3ViY2xhc3Mgb2YgZmxvYXQgIgorICAgICAgICAgICAgICAgICJpcyBkZXByZWNhdGVkLCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgdmVyc2lvbiBvZiBQeXRob24uIiwKKyAgICAgICAgICAgICAgICBvcC0+b2JfdHlwZS0+dHBfbmFtZSwgcmVzLT5vYl90eXBlLT50cF9uYW1lKSkgeworICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICB9CiAKLSAgICB2YWwgPSBQeUZsb2F0X0FTX0RPVUJMRShmbyk7Ci0gICAgUHlfREVDUkVGKGZvKTsKLQorICAgIHZhbCA9IFB5RmxvYXRfQVNfRE9VQkxFKHJlcyk7CisgICAgUHlfREVDUkVGKHJlcyk7CiAgICAgcmV0dXJuIHZhbDsKIH0KIApAQCAtMTE5NSw3ICsxMjIyLDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmbG9hdF9mcm9taGV4KFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdF9hc19mbG9hdCwgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIGRvdWJsZSB4OwogICAgIGxvbmcgZXhwLCB0b3BfZXhwLCBsc2IsIGtleV9kaWdpdDsKICAgICBjaGFyICpzLCAqY29lZmZfc3RhcnQsICpzX3N0b3JlLCAqY29lZmZfZW5kLCAqZXhwX3N0YXJ0LCAqc19lbmQ7CkBAIC0xNDEwLDExICsxNDM3LDEwIEBACiAgICAgICAgIHMrKzsKICAgICBpZiAocyAhPSBzX2VuZCkKICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICByZXN1bHRfYXNfZmxvYXQgPSBQeV9CdWlsZFZhbHVlKCIoZCkiLCBuZWdhdGUgPyAteCA6IHgpOwotICAgIGlmIChyZXN1bHRfYXNfZmxvYXQgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbE9iamVjdChjbHMsIHJlc3VsdF9hc19mbG9hdCk7Ci0gICAgUHlfREVDUkVGKHJlc3VsdF9hc19mbG9hdCk7CisgICAgcmVzdWx0ID0gUHlGbG9hdF9Gcm9tRG91YmxlKG5lZ2F0ZSA/IC14IDogeCk7CisgICAgaWYgKGNscyAhPSAoUHlPYmplY3QgKikmUHlGbG9hdF9UeXBlICYmIHJlc3VsdCAhPSBOVUxMKSB7CisgICAgICAgIFB5X1NFVFJFRihyZXN1bHQsIFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MoY2xzLCByZXN1bHQsIE5VTEwpKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIAogICBvdmVyZmxvd19lcnJvcjoKQEAgLTE0NTEsMjkgKzE0NzcsMjMgQEAKICAgICBpbnQgZXhwb25lbnQ7CiAgICAgaW50IGk7CiAKLSAgICBQeU9iamVjdCAqcHJldjsKICAgICBQeU9iamVjdCAqcHlfZXhwb25lbnQgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpudW1lcmF0b3IgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpkZW5vbWluYXRvciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlc3VsdF9wYWlyID0gTlVMTDsKICAgICBQeU51bWJlck1ldGhvZHMgKmxvbmdfbWV0aG9kcyA9IFB5TG9uZ19UeXBlLnRwX2FzX251bWJlcjsKIAotI2RlZmluZSBJTlBMQUNFX1VQREFURShvYmosIGNhbGwpIFwKLSAgICBwcmV2ID0gb2JqOyBcCi0gICAgb2JqID0gY2FsbDsgXAotICAgIFB5X0RFQ1JFRihwcmV2KTsgXAotCiAgICAgQ09OVkVSVF9UT19ET1VCTEUodiwgc2VsZik7CiAKICAgICBpZiAoUHlfSVNfSU5GSU5JVFkoc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBpbmZpbml0eSB0byBmbG9hdC5hc19pbnRlZ2VyX3JhdGlvLiIpOwotICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImNhbm5vdCBjb252ZXJ0IEluZmluaXR5IHRvIGludGVnZXIgcmF0aW8iKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIGlmIChQeV9JU19OQU4oc2VsZikpIHsKLSAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGFzcyBOYU4gdG8gZmxvYXQuYXNfaW50ZWdlcl9yYXRpby4iKTsKLSAgICAgIHJldHVybiBOVUxMOworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjYW5ub3QgY29udmVydCBOYU4gdG8gaW50ZWdlciByYXRpbyIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBQeUZQRV9TVEFSVF9QUk9URUNUKCJhc19pbnRlZ2VyX3JhdGlvIiwgZ290byBlcnJvcik7CkBAIC0xNDg5LDI5ICsxNTA5LDMxIEBACiAgICAgICAgdG8gYmUgdHJ1bmNhdGVkIGJ5IFB5TG9uZ19Gcm9tRG91YmxlKCkuICovCiAKICAgICBudW1lcmF0b3IgPSBQeUxvbmdfRnJvbURvdWJsZShmbG9hdF9wYXJ0KTsKLSAgICBpZiAobnVtZXJhdG9yID09IE5VTEwpIGdvdG8gZXJyb3I7CisgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOworICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKFB5X0FCUyhleHBvbmVudCkpOworICAgIGlmIChweV9leHBvbmVudCA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogZm9sZCBpbiAyKipleHBvbmVudCAqLwotICAgIGRlbm9taW5hdG9yID0gUHlMb25nX0Zyb21Mb25nKDEpOwotICAgIHB5X2V4cG9uZW50ID0gUHlMb25nX0Zyb21Mb25nKGxhYnMoKGxvbmcpZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKLSAgICBJTlBMQUNFX1VQREFURShweV9leHBvbmVudCwKLSAgICAgICAgICAgICAgICAgICBsb25nX21ldGhvZHMtPm5iX2xzaGlmdChkZW5vbWluYXRvciwgcHlfZXhwb25lbnQpKTsKLSAgICBpZiAocHlfZXhwb25lbnQgPT0gTlVMTCkgZ290byBlcnJvcjsKICAgICBpZiAoZXhwb25lbnQgPiAwKSB7Ci0gICAgICAgIElOUExBQ0VfVVBEQVRFKG51bWVyYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9tdWx0aXBseShudW1lcmF0b3IsIHB5X2V4cG9uZW50KSk7Ci0gICAgICAgIGlmIChudW1lcmF0b3IgPT0gTlVMTCkgZ290byBlcnJvcjsKKyAgICAgICAgUHlfU0VUUkVGKG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgIGxvbmdfbWV0aG9kcy0+bmJfbHNoaWZ0KG51bWVyYXRvciwgcHlfZXhwb25lbnQpKTsKKyAgICAgICAgaWYgKG51bWVyYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIFB5X0RFQ1JFRihkZW5vbWluYXRvcik7Ci0gICAgICAgIGRlbm9taW5hdG9yID0gcHlfZXhwb25lbnQ7Ci0gICAgICAgIHB5X2V4cG9uZW50ID0gTlVMTDsKKyAgICAgICAgUHlfU0VUUkVGKGRlbm9taW5hdG9yLAorICAgICAgICAgICAgICAgICAgbG9uZ19tZXRob2RzLT5uYl9sc2hpZnQoZGVub21pbmF0b3IsIHB5X2V4cG9uZW50KSk7CisgICAgICAgIGlmIChkZW5vbWluYXRvciA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKICAgICByZXN1bHRfcGFpciA9IFB5VHVwbGVfUGFjaygyLCBudW1lcmF0b3IsIGRlbm9taW5hdG9yKTsKIAotI3VuZGVmIElOUExBQ0VfVVBEQVRFCiBlcnJvcjoKICAgICBQeV9YREVDUkVGKHB5X2V4cG9uZW50KTsKICAgICBQeV9YREVDUkVGKGRlbm9taW5hdG9yKTsKQEAgLTE5NjYsOCArMTk4OCwxMjAgQEAKIAogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIF9QeUZsb2F0X3tQYWNrLFVucGFja317NCw4fS4gIFNlZSBmbG9hdG9iamVjdC5oLgorICogX1B5RmxvYXRfe1BhY2ssVW5wYWNrfXsyLDQsOH0uICBTZWUgZmxvYXRvYmplY3QuaC4KKyAqIFRvIG1hdGNoIHRoZSBOUFlfSEFMRl9ST1VORF9USUVTX1RPX0VWRU4gYmVoYXZpb3IgaW46CisgKiBodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvYmxvYi9tYXN0ZXIvbnVtcHkvY29yZS9zcmMvbnB5bWF0aC9oYWxmZmxvYXQuYworICogV2UgdXNlOgorICogICAgICAgYml0cyA9ICh1bnNpZ25lZCBzaG9ydClmOyAgICBOb3RlIHRoZSB0cnVuY2F0aW9uCisgKiAgICAgICBpZiAoKGYgLSBiaXRzID4gMC41KSB8fCAoZiAtIGJpdHMgPT0gMC41ICYmIGJpdHMgJSAyKSkgeworICogICAgICAgICAgIGJpdHMrKzsKKyAqICAgICAgIH0KICAqLworCitpbnQKK19QeUZsb2F0X1BhY2syKGRvdWJsZSB4LCB1bnNpZ25lZCBjaGFyICpwLCBpbnQgbGUpCit7CisgICAgdW5zaWduZWQgY2hhciBzaWduOworICAgIGludCBlOworICAgIGRvdWJsZSBmOworICAgIHVuc2lnbmVkIHNob3J0IGJpdHM7CisgICAgaW50IGluY3IgPSAxOworCisgICAgaWYgKHggPT0gMC4wKSB7CisgICAgICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAtMS4wKTsKKyAgICAgICAgZSA9IDA7CisgICAgICAgIGJpdHMgPSAwOworICAgIH0KKyAgICBlbHNlIGlmIChQeV9JU19JTkZJTklUWSh4KSkgeworICAgICAgICBzaWduID0gKHggPCAwLjApOworICAgICAgICBlID0gMHgxZjsKKyAgICAgICAgYml0cyA9IDA7CisgICAgfQorICAgIGVsc2UgaWYgKFB5X0lTX05BTih4KSkgeworICAgICAgICAvKiBUaGVyZSBhcmUgMjA0NiBkaXN0aW5jdCBoYWxmLXByZWNpc2lvbiBOYU5zICgxMDIyIHNpZ25hbGluZyBhbmQKKyAgICAgICAgICAgMTAyNCBxdWlldCksIGJ1dCB0aGVyZSBhcmUgb25seSB0d28gcXVpZXQgTmFOcyB0aGF0IGRvbid0IGFyaXNlIGJ5CisgICAgICAgICAgIHF1aWV0aW5nIGEgc2lnbmFsaW5nIE5hTjsgd2UgZ2V0IHRob3NlIGJ5IHNldHRpbmcgdGhlIHRvcG1vc3QgYml0CisgICAgICAgICAgIG9mIHRoZSBmcmFjdGlvbiBmaWVsZCBhbmQgY2xlYXJpbmcgYWxsIG90aGVyIGZyYWN0aW9uIGJpdHMuIFdlCisgICAgICAgICAgIGNob29zZSB0aGUgb25lIHdpdGggdGhlIGFwcHJvcHJpYXRlIHNpZ24uICovCisgICAgICAgIHNpZ24gPSAoY29weXNpZ24oMS4wLCB4KSA9PSAtMS4wKTsKKyAgICAgICAgZSA9IDB4MWY7CisgICAgICAgIGJpdHMgPSA1MTI7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBzaWduID0gKHggPCAwLjApOworICAgICAgICBpZiAoc2lnbikgeworICAgICAgICAgICAgeCA9IC14OworICAgICAgICB9CisKKyAgICAgICAgZiA9IGZyZXhwKHgsICZlKTsKKyAgICAgICAgaWYgKGYgPCAwLjUgfHwgZiA+PSAxLjApIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZnJleHAoKSByZXN1bHQgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKworICAgICAgICAvKiBOb3JtYWxpemUgZiB0byBiZSBpbiB0aGUgcmFuZ2UgWzEuMCwgMi4wKSAqLworICAgICAgICBmICo9IDIuMDsKKyAgICAgICAgZS0tOworCisgICAgICAgIGlmIChlID49IDE2KSB7CisgICAgICAgICAgICBnb3RvIE92ZXJmbG93OworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGUgPCAtMjUpIHsKKyAgICAgICAgICAgIC8qIHx4fCA8IDIqKi0yNS4gVW5kZXJmbG93IHRvIHplcm8uICovCisgICAgICAgICAgICBmID0gMC4wOworICAgICAgICAgICAgZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoZSA8IC0xNCkgeworICAgICAgICAgICAgLyogfHh8IDwgMioqLTE0LiBHcmFkdWFsIHVuZGVyZmxvdyAqLworICAgICAgICAgICAgZiA9IGxkZXhwKGYsIDE0ICsgZSk7CisgICAgICAgICAgICBlID0gMDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIC8qIGlmICghKGUgPT0gMCAmJiBmID09IDAuMCkpICovIHsKKyAgICAgICAgICAgIGUgKz0gMTU7CisgICAgICAgICAgICBmIC09IDEuMDsgLyogR2V0IHJpZCBvZiBsZWFkaW5nIDEgKi8KKyAgICAgICAgfQorCisgICAgICAgIGYgKj0gMTAyNC4wOyAvKiAyKioxMCAqLworICAgICAgICAvKiBSb3VuZCB0byBldmVuICovCisgICAgICAgIGJpdHMgPSAodW5zaWduZWQgc2hvcnQpZjsgLyogTm90ZSB0aGUgdHJ1bmNhdGlvbiAqLworICAgICAgICBhc3NlcnQoYml0cyA8IDEwMjQpOworICAgICAgICBhc3NlcnQoZSA8IDMxKTsKKyAgICAgICAgaWYgKChmIC0gYml0cyA+IDAuNSkgfHwgKChmIC0gYml0cyA9PSAwLjUpICYmIChiaXRzICUgMiA9PSAxKSkpIHsKKyAgICAgICAgICAgICsrYml0czsKKyAgICAgICAgICAgIGlmIChiaXRzID09IDEwMjQpIHsKKyAgICAgICAgICAgICAgICAvKiBUaGUgY2FycnkgcHJvcGFnYXRlZCBvdXQgb2YgYSBzdHJpbmcgb2YgMTAgMSBiaXRzLiAqLworICAgICAgICAgICAgICAgIGJpdHMgPSAwOworICAgICAgICAgICAgICAgICsrZTsKKyAgICAgICAgICAgICAgICBpZiAoZSA9PSAzMSkKKyAgICAgICAgICAgICAgICAgICAgZ290byBPdmVyZmxvdzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKworICAgIGJpdHMgfD0gKGUgPDwgMTApIHwgKHNpZ24gPDwgMTUpOworCisgICAgLyogV3JpdGUgb3V0IHJlc3VsdC4gKi8KKyAgICBpZiAobGUpIHsKKyAgICAgICAgcCArPSAxOworICAgICAgICBpbmNyID0gLTE7CisgICAgfQorCisgICAgLyogRmlyc3QgYnl0ZSAqLworICAgICpwID0gKHVuc2lnbmVkIGNoYXIpKChiaXRzID4+IDgpICYgMHhGRik7CisgICAgcCArPSBpbmNyOworCisgICAgLyogU2Vjb25kIGJ5dGUgKi8KKyAgICAqcCA9ICh1bnNpZ25lZCBjaGFyKShiaXRzICYgMHhGRik7CisKKyAgICByZXR1cm4gMDsKKworICBPdmVyZmxvdzoKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfT3ZlcmZsb3dFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgImZsb2F0IHRvbyBsYXJnZSB0byBwYWNrIHdpdGggZSBmb3JtYXQiKTsKKyAgICByZXR1cm4gLTE7Cit9CisKIGludAogX1B5RmxvYXRfUGFjazQoZG91YmxlIHgsIHVuc2lnbmVkIGNoYXIgKnAsIGludCBsZSkKIHsKQEAgLTIyMDMsNiArMjMzNyw3NiBAQAogfQogCiBkb3VibGUKK19QeUZsb2F0X1VucGFjazIoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQoreworICAgIHVuc2lnbmVkIGNoYXIgc2lnbjsKKyAgICBpbnQgZTsKKyAgICB1bnNpZ25lZCBpbnQgZjsKKyAgICBkb3VibGUgeDsKKyAgICBpbnQgaW5jciA9IDE7CisKKyAgICBpZiAobGUpIHsKKyAgICAgICAgcCArPSAxOworICAgICAgICBpbmNyID0gLTE7CisgICAgfQorCisgICAgLyogRmlyc3QgYnl0ZSAqLworICAgIHNpZ24gPSAoKnAgPj4gNykgJiAxOworICAgIGUgPSAoKnAgJiAweDdDKSA+PiAyOworICAgIGYgPSAoKnAgJiAweDAzKSA8PCA4OworICAgIHAgKz0gaW5jcjsKKworICAgIC8qIFNlY29uZCBieXRlICovCisgICAgZiB8PSAqcDsKKworICAgIGlmIChlID09IDB4MWYpIHsKKyNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCisgICAgICAgIGlmIChmID09IDApIHsKKyAgICAgICAgICAgIC8qIEluZmluaXR5ICovCisgICAgICAgICAgICByZXR1cm4gc2lnbiA/IC1QeV9IVUdFX1ZBTCA6IFB5X0hVR0VfVkFMOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogTmFOICovCisjaWZkZWYgUHlfTkFOCisgICAgICAgICAgICByZXR1cm4gc2lnbiA/IC1QeV9OQU4gOiBQeV9OQU47CisjZWxzZQorICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgIFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgImNhbid0IHVucGFjayBJRUVFIDc1NCBOYU4gIgorICAgICAgICAgICAgICAgICJvbiBwbGF0Zm9ybSB0aGF0IGRvZXMgbm90IHN1cHBvcnQgTmFOcyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworI2VuZGlmICAvKiAjaWZkZWYgUHlfTkFOICovCisgICAgICAgIH0KKyNlbHNlCisgICAgICAgIGlmIChmID09IDApIHsKKyAgICAgICAgICAgIC8qIEluZmluaXR5ICovCisgICAgICAgICAgICByZXR1cm4gX1B5X2RnX2luZmluaXR5KHNpZ24pOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogTmFOICovCisgICAgICAgICAgICByZXR1cm4gX1B5X2RnX3N0ZG5hbihzaWduKTsKKyAgICAgICAgfQorI2VuZGlmICAvKiAjaWZkZWYgUFlfTk9fU0hPUlRfRkxPQVRfUkVQUiAqLworICAgIH0KKworICAgIHggPSAoZG91YmxlKWYgLyAxMDI0LjA7CisKKyAgICBpZiAoZSA9PSAwKSB7CisgICAgICAgIGUgPSAtMTQ7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICB4ICs9IDEuMDsKKyAgICAgICAgZSAtPSAxNTsKKyAgICB9CisgICAgeCA9IGxkZXhwKHgsIGUpOworCisgICAgaWYgKHNpZ24pCisgICAgICAgIHggPSAteDsKKworICAgIHJldHVybiB4OworfQorCitkb3VibGUKIF9QeUZsb2F0X1VucGFjazQoY29uc3QgdW5zaWduZWQgY2hhciAqcCwgaW50IGxlKQogewogICAgIGlmIChmbG9hdF9mb3JtYXQgPT0gdW5rbm93bl9mb3JtYXQpIHsKZGlmZiAtLWdpdCBhL09iamVjdHMvZnJhbWVvYmplY3QuYyBiL09iamVjdHMvZnJhbWVvYmplY3QuYwppbmRleCA5YWFkZDYxLi42MmY5ZjM0IDEwMDY0NAotLS0gYS9PYmplY3RzL2ZyYW1lb2JqZWN0LmMKKysrIGIvT2JqZWN0cy9mcmFtZW9iamVjdC5jCkBAIC0xMzcsNyArMTM3LDcgQEAKICAgICAgICAgbmV3X2xhc3RpID0gLTE7CiAgICAgICAgIGZvciAob2Zmc2V0ID0gMDsgb2Zmc2V0IDwgbG5vdGFiX2xlbjsgb2Zmc2V0ICs9IDIpIHsKICAgICAgICAgICAgIGFkZHIgKz0gbG5vdGFiW29mZnNldF07Ci0gICAgICAgICAgICBsaW5lICs9IGxub3RhYltvZmZzZXQrMV07CisgICAgICAgICAgICBsaW5lICs9IChzaWduZWQgY2hhcilsbm90YWJbb2Zmc2V0KzFdOwogICAgICAgICAgICAgaWYgKGxpbmUgPj0gbmV3X2xpbmVubykgewogICAgICAgICAgICAgICAgIG5ld19sYXN0aSA9IGFkZHI7CiAgICAgICAgICAgICAgICAgbmV3X2xpbmVubyA9IGxpbmU7CkBAIC0xODksNyArMTg5LDcgQEAKICAgICBtZW1zZXQoYmxvY2tzdGFjaywgJ1wwJywgc2l6ZW9mKGJsb2Nrc3RhY2spKTsKICAgICBtZW1zZXQoaW5fZmluYWxseSwgJ1wwJywgc2l6ZW9mKGluX2ZpbmFsbHkpKTsKICAgICBibG9ja3N0YWNrX3RvcCA9IDA7Ci0gICAgZm9yIChhZGRyID0gMDsgYWRkciA8IGNvZGVfbGVuOyBhZGRyKyspIHsKKyAgICBmb3IgKGFkZHIgPSAwOyBhZGRyIDwgY29kZV9sZW47IGFkZHIgKz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpIHsKICAgICAgICAgdW5zaWduZWQgY2hhciBvcCA9IGNvZGVbYWRkcl07CiAgICAgICAgIHN3aXRjaCAob3ApIHsKICAgICAgICAgY2FzZSBTRVRVUF9MT09QOgpAQCAtMjUxLDEwICsyNTEsNiBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAgICAgICAgfQotCi0gICAgICAgIGlmIChvcCA+PSBIQVZFX0FSR1VNRU5UKSB7Ci0gICAgICAgICAgICBhZGRyICs9IDI7Ci0gICAgICAgIH0KICAgICB9CiAKICAgICAvKiBWZXJpZnkgdGhhdCB0aGUgYmxvY2tzdGFjayB0cmFja2luZyBjb2RlIGRpZG4ndCBnZXQgbG9zdC4gKi8KQEAgLTI3Nyw3ICsyNzMsNyBAQAogICAgICAqIGNhbiB0ZWxsIHdoZXRoZXIgdGhlIGp1bXAgZ29lcyBpbnRvIGFueSBibG9ja3Mgd2l0aG91dCBjb21pbmcgb3V0CiAgICAgICogYWdhaW4gLSBpbiB0aGF0IGNhc2Ugd2UgcmFpc2UgYW4gZXhjZXB0aW9uIGJlbG93LiAqLwogICAgIGRlbHRhX2libG9jayA9IDA7Ci0gICAgZm9yIChhZGRyID0gbWluX2FkZHI7IGFkZHIgPCBtYXhfYWRkcjsgYWRkcisrKSB7CisgICAgZm9yIChhZGRyID0gbWluX2FkZHI7IGFkZHIgPCBtYXhfYWRkcjsgYWRkciArPSBzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICB1bnNpZ25lZCBjaGFyIG9wID0gY29kZVthZGRyXTsKICAgICAgICAgc3dpdGNoIChvcCkgewogICAgICAgICBjYXNlIFNFVFVQX0xPT1A6CkBAIC0yOTQsMTAgKzI5MCw2IEBACiAgICAgICAgIH0KIAogICAgICAgICBtaW5fZGVsdGFfaWJsb2NrID0gUHlfTUlOKG1pbl9kZWx0YV9pYmxvY2ssIGRlbHRhX2libG9jayk7Ci0KLSAgICAgICAgaWYgKG9wID49IEhBVkVfQVJHVU1FTlQpIHsKLSAgICAgICAgICAgIGFkZHIgKz0gMjsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIERlcml2ZSB0aGUgYWJzb2x1dGUgaWJsb2NrIHZhbHVlcyBmcm9tIHRoZSBkZWx0YXMuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL2Z1bmNvYmplY3QuYyBiL09iamVjdHMvZnVuY29iamVjdC5jCmluZGV4IDRjZDY1OTAuLjY5Y2Q5NzMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvZnVuY29iamVjdC5jCisrKyBiL09iamVjdHMvZnVuY29iamVjdC5jCkBAIC0yNDksNyArMjQ5LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2NvZGUoUHlGdW5jdGlvbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwogICAgIFB5X3NzaXplX3QgbmZyZWUsIG5jbG9zdXJlOwogCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBmLmZ1bmNfY29kZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKQEAgLTI3MCwxMCArMjY5LDggQEAKICAgICAgICAgICAgICAgICAgICAgIG5jbG9zdXJlLCBuZnJlZSk7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfY29kZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2NvZGUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2NvZGUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjg3LDggKzI4NCw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9uYW1lKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5mdW5jX25hbWUgb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTI5NiwxMCArMjkxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX25hbWVfXyBtdXN0IGJlIHNldCB0byBhIHN0cmluZyBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19uYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmZ1bmNfbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfbmFtZSwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0zMTMsOCArMzA2LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X3F1YWxuYW1lKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIC8qIE5vdCBsZWdhbCB0byBkZWwgZi5fX3F1YWxuYW1lX18gb3IgdG8gc2V0IGl0IHRvIGFueXRoaW5nCiAgICAgICogb3RoZXIgdGhhbiBhIHN0cmluZyBvYmplY3QuICovCiAgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgIVB5VW5pY29kZV9DaGVjayh2YWx1ZSkpIHsKQEAgLTMyMiwxMCArMzEzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX3F1YWxuYW1lX18gbXVzdCBiZSBzZXQgdG8gYSBzdHJpbmcgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfcXVhbG5hbWU7CiAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19xdWFsbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfcXVhbG5hbWUsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzQzLDggKzMzMiw2IEBACiBzdGF0aWMgaW50CiBmdW5jX3NldF9kZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICAvKiBMZWdhbCB0byBkZWwgZi5mdW5jX2RlZmF1bHRzLgogICAgICAqIENhbiBvbmx5IHNldCBmdW5jX2RlZmF1bHRzIHRvIE5VTEwgb3IgYSB0dXBsZS4gKi8KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKQEAgLTM1NCwxMCArMzQxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJfX2RlZmF1bHRzX18gbXVzdCBiZSBzZXQgdG8gYSB0dXBsZSBvYmplY3QiKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICB0bXAgPSBvcC0+ZnVuY19kZWZhdWx0czsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19kZWZhdWx0cyA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5mdW5jX2RlZmF1bHRzLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTM3NSw4ICszNjAsNiBAQAogc3RhdGljIGludAogZnVuY19zZXRfa3dkZWZhdWx0cyhQeUZ1bmN0aW9uT2JqZWN0ICpvcCwgUHlPYmplY3QgKnZhbHVlKQogewotICAgIFB5T2JqZWN0ICp0bXA7Ci0KICAgICBpZiAodmFsdWUgPT0gUHlfTm9uZSkKICAgICAgICAgdmFsdWUgPSBOVUxMOwogICAgIC8qIExlZ2FsIHRvIGRlbCBmLmZ1bmNfa3dkZWZhdWx0cy4KQEAgLTM4NiwxMCArMzY5LDggQEAKICAgICAgICAgICAgICJfX2t3ZGVmYXVsdHNfXyBtdXN0IGJlIHNldCB0byBhIGRpY3Qgb2JqZWN0Iik7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9Ci0gICAgdG1wID0gb3AtPmZ1bmNfa3dkZWZhdWx0czsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICBvcC0+ZnVuY19rd2RlZmF1bHRzID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfa3dkZWZhdWx0cywgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC00MDgsOCArMzg5LDYgQEAKIHN0YXRpYyBpbnQKIGZ1bmNfc2V0X2Fubm90YXRpb25zKFB5RnVuY3Rpb25PYmplY3QgKm9wLCBQeU9iamVjdCAqdmFsdWUpCiB7Ci0gICAgUHlPYmplY3QgKnRtcDsKLQogICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQogICAgICAgICB2YWx1ZSA9IE5VTEw7CiAgICAgLyogTGVnYWwgdG8gZGVsIGYuZnVuY19hbm5vdGF0aW9ucy4KQEAgLTQyMCwxMCArMzk5LDggQEAKICAgICAgICAgICAgICJfX2Fubm90YXRpb25zX18gbXVzdCBiZSBzZXQgdG8gYSBkaWN0IG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5mdW5jX2Fubm90YXRpb25zOwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwotICAgIG9wLT5mdW5jX2Fubm90YXRpb25zID0gdmFsdWU7Ci0gICAgUHlfWERFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmZ1bmNfYW5ub3RhdGlvbnMsIHZhbHVlKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvT2JqZWN0cy9nZW5vYmplY3QuYyBiL09iamVjdHMvZ2Vub2JqZWN0LmMKaW5kZXggOTE3MmU2YS4uN2ExZTlmZCAxMDA2NDQKLS0tIGEvT2JqZWN0cy9nZW5vYmplY3QuYworKysgYi9PYmplY3RzL2dlbm9iamVjdC5jCkBAIC01LDcgKzUsMTUgQEAKICNpbmNsdWRlICJzdHJ1Y3RtZW1iZXIuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKIAotc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpOworc3RhdGljIFB5T2JqZWN0ICpnZW5fY2xvc2UoUHlHZW5PYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKmFzeW5jX2dlbl9hc2VuZF9uZXcoUHlBc3luY0dlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqYXN5bmNfZ2VuX2F0aHJvd19uZXcoUHlBc3luY0dlbk9iamVjdCAqLCBQeU9iamVjdCAqKTsKKworc3RhdGljIGNoYXIgKk5PTl9JTklUX0NPUk9fTVNHID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGNvcm91dGluZSI7CisKK3N0YXRpYyBjaGFyICpBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRyA9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiYXN5bmMgZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7CiAKIHN0YXRpYyBpbnQKIGdlbl90cmF2ZXJzZShQeUdlbk9iamVjdCAqZ2VuLCB2aXNpdHByb2MgdmlzaXQsIHZvaWQgKmFyZykKQEAgLTI4LDYgKzM2LDI2IEBACiAgICAgICAgIC8qIEdlbmVyYXRvciBpc24ndCBwYXVzZWQsIHNvIG5vIG5lZWQgdG8gY2xvc2UgKi8KICAgICAgICAgcmV0dXJuOwogCisgICAgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChzZWxmKSkgeworICAgICAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ2VuID0gKFB5QXN5bmNHZW5PYmplY3QqKXNlbGY7CisgICAgICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBhZ2VuLT5hZ19maW5hbGl6ZXI7CisgICAgICAgIGlmIChmaW5hbGl6ZXIgJiYgIWFnZW4tPmFnX2Nsb3NlZCkgeworICAgICAgICAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZlcnJvcl90eXBlLCAmZXJyb3JfdmFsdWUsICZlcnJvcl90cmFjZWJhY2spOworCisgICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGZpbmFsaXplciwgc2VsZiwgTlVMTCk7CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShzZWxmKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcyk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBSZXN0b3JlIHRoZSBzYXZlZCBleGNlcHRpb24uICovCisgICAgICAgICAgICBQeUVycl9SZXN0b3JlKGVycm9yX3R5cGUsIGVycm9yX3ZhbHVlLCBlcnJvcl90cmFjZWJhY2spOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisgICAgfQorCiAgICAgLyogU2F2ZSB0aGUgY3VycmVudCBleGNlcHRpb24sIGlmIGFueS4gKi8KICAgICBQeUVycl9GZXRjaCgmZXJyb3JfdHlwZSwgJmVycm9yX3ZhbHVlLCAmZXJyb3JfdHJhY2ViYWNrKTsKIApAQCAtNzQsNiArMTAyLDEyIEBACiAgICAgICAgIHJldHVybjsgICAgICAgICAgICAgICAgICAgICAvKiByZXN1cnJlY3RlZC4gIDooICovCiAKICAgICBfUHlPYmplY3RfR0NfVU5UUkFDSyhzZWxmKTsKKyAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgLyogV2UgaGF2ZSB0byBoYW5kbGUgdGhpcyBjYXNlIGZvciBhc3luY2hyb25vdXMgZ2VuZXJhdG9ycworICAgICAgICAgICByaWdodCBoZXJlLCBiZWNhdXNlIHRoaXMgY29kZSBoYXMgdG8gYmUgYmV0d2VlbiBVTlRSQUNLCisgICAgICAgICAgIGFuZCBHQ19EZWwuICovCisgICAgICAgIFB5X0NMRUFSKCgoUHlBc3luY0dlbk9iamVjdCopZ2VuKS0+YWdfZmluYWxpemVyKTsKKyAgICB9CiAgICAgaWYgKGdlbi0+Z2lfZnJhbWUgIT0gTlVMTCkgewogICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2dlbiA9IE5VTEw7CiAgICAgICAgIFB5X0NMRUFSKGdlbi0+Z2lfZnJhbWUpOwpAQCAtODQsNiArMTE4LDMzIEBACiAgICAgUHlPYmplY3RfR0NfRGVsKGdlbik7CiB9CiAKK3N0YXRpYyB2b2lkCitnZW5fY2hhaW5fcnVudGltZV9lcnJvcihjb25zdCBjaGFyICptc2cpCit7CisgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnZhbDIsICp0YjsKKworICAgIC8qIFRPRE86IFRoaXMgYWJvdXQgcmV3cml0aW5nIHVzaW5nIF9QeUVycl9DaGFpbkV4Y2VwdGlvbnMuICovCisKKyAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOworICAgIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbigmZXhjLCAmdmFsLCAmdGIpOworICAgIGlmICh0YiAhPSBOVUxMKSB7CisgICAgICAgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjayh2YWwsIHRiKTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYoZXhjKTsKKyAgICBQeV9YREVDUkVGKHRiKTsKKworICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsIG1zZyk7CisgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbDIsICZ0Yik7CisgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOworCisgICAgUHlfSU5DUkVGKHZhbCk7CisgICAgUHlFeGNlcHRpb25fU2V0Q2F1c2UodmFsMiwgdmFsKTsKKyAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbDIsIHZhbCk7CisKKyAgICBQeUVycl9SZXN0b3JlKGV4YywgdmFsMiwgdGIpOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogZ2VuX3NlbmRfZXgoUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZywgaW50IGV4YywgaW50IGNsb3NpbmcpCiB7CkBAIC05Myw4ICsxNTQsMTIgQEAKIAogICAgIGlmIChnZW4tPmdpX3J1bm5pbmcpIHsKICAgICAgICAgY2hhciAqbXNnID0gImdlbmVyYXRvciBhbHJlYWR5IGV4ZWN1dGluZyI7Ci0gICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBhbHJlYWR5IGV4ZWN1dGluZyI7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgIG1zZyA9ICJhc3luYyBnZW5lcmF0b3IgYWxyZWFkeSBleGVjdXRpbmciOworICAgICAgICB9CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCBtc2cpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0xMDYsMTAgKzE3MSwxNiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAogICAgICAgICAgICAgICAgIFB5RXhjX1J1bnRpbWVFcnJvciwKICAgICAgICAgICAgICAgICAiY2Fubm90IHJldXNlIGFscmVhZHkgYXdhaXRlZCBjb3JvdXRpbmUiKTsKLSAgICAgICAgfSBlbHNlIGlmIChhcmcgJiYgIWV4YykgeworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGFyZyAmJiAhZXhjKSB7CiAgICAgICAgICAgICAvKiBgZ2VuYCBpcyBhbiBleGhhdXN0ZWQgZ2VuZXJhdG9yOgogICAgICAgICAgICAgICAgb25seSBzZXQgZXhjZXB0aW9uIGlmIGNhbGxlZCBmcm9tIHNlbmQoKS4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KQEAgLTExOCw5ICsxODksMTMgQEAKICAgICAgICAgaWYgKGFyZyAmJiBhcmcgIT0gUHlfTm9uZSkgewogICAgICAgICAgICAgY2hhciAqbXNnID0gImNhbid0IHNlbmQgbm9uLU5vbmUgdmFsdWUgdG8gYSAiCiAgICAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGdlbmVyYXRvciI7Ci0gICAgICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICAgICAgbXNnID0gTk9OX0lOSVRfQ09ST19NU0c7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgICAgIG1zZyA9ICJjYW4ndCBzZW5kIG5vbi1Ob25lIHZhbHVlIHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICJqdXN0LXN0YXJ0ZWQgY29yb3V0aW5lIjsKKyAgICAgICAgICAgICAgICAgICAgICAianVzdC1zdGFydGVkIGFzeW5jIGdlbmVyYXRvciI7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCBtc2cpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KQEAgLTE1MiwxMCArMjI3LDIwIEBACiAgICAgaWYgKHJlc3VsdCAmJiBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBQeV9Ob25lKSB7CiAgICAgICAgICAgICAvKiBEZWxheSBleGNlcHRpb24gaW5zdGFudGlhdGlvbiBpZiB3ZSBjYW4gKi8KLSAgICAgICAgICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfU3RvcEl0ZXJhdGlvbik7Ci0gICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXROb25lKFB5RXhjX1N0b3BJdGVyYXRpb24pOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlPYmplY3QgKmUgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1N0b3BJdGVyYXRpb24sIHJlc3VsdCwgTlVMTCk7CisKKyAgICAgICAgICAgIC8qIEFzeW5jIGdlbmVyYXRvcnMgY2Fubm90IHJldHVybiBhbnl0aGluZyBidXQgTm9uZSAqLworICAgICAgICAgICAgYXNzZXJ0KCFQeUFzeW5jR2VuX0NoZWNrRXhhY3QoZ2VuKSk7CisKICAgICAgICAgICAgIGlmIChlICE9IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfU3RvcEl0ZXJhdGlvbiwgZSk7CiAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGUpOwpAQCAtMTY3LDM0ICsyNTIsNDQgQEAKICAgICAgICAgLyogQ2hlY2sgZm9yIF9fZnV0dXJlX18gZ2VuZXJhdG9yX3N0b3AgYW5kIGNvbmRpdGlvbmFsbHkgdHVybgogICAgICAgICAgKiBhIGxlYWtpbmcgU3RvcEl0ZXJhdGlvbiBpbnRvIFJ1bnRpbWVFcnJvciAod2l0aCBpdHMgY2F1c2UKICAgICAgICAgICogc2V0IGFwcHJvcHJpYXRlbHkpLiAqLwotICAgICAgICBpZiAoKChQeUNvZGVPYmplY3QgKilnZW4tPmdpX2NvZGUpLT5jb19mbGFncyAmCi0gICAgICAgICAgICAgIChDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgfCBDT19DT1JPVVRJTkUgfCBDT19JVEVSQUJMRV9DT1JPVVRJTkUpKQorCisgICAgICAgIGNvbnN0IGludCBjaGVja19zdG9wX2l0ZXJfZXJyb3JfZmxhZ3MgPSBDT19GVVRVUkVfR0VORVJBVE9SX1NUT1AgfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09fQ09ST1VUSU5FIHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIENPX0lURVJBQkxFX0NPUk9VVElORSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT19BU1lOQ19HRU5FUkFUT1I7CisKKyAgICAgICAgaWYgKGdlbi0+Z2lfY29kZSAhPSBOVUxMICYmCisgICAgICAgICAgICAoKFB5Q29kZU9iamVjdCAqKWdlbi0+Z2lfY29kZSktPmNvX2ZsYWdzICYKKyAgICAgICAgICAgICAgICBjaGVja19zdG9wX2l0ZXJfZXJyb3JfZmxhZ3MpCiAgICAgICAgIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp2YWwyLCAqdGI7Ci0gICAgICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKLSAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICAgICAgLyogYGdlbmAgaXMgZWl0aGVyOgorICAgICAgICAgICAgICAgICAgKiBhIGdlbmVyYXRvciB3aXRoIENPX0ZVVFVSRV9HRU5FUkFUT1JfU1RPUCBmbGFnOworICAgICAgICAgICAgICAgICAgKiBhIGNvcm91dGluZTsKKyAgICAgICAgICAgICAgICAgICogYSBnZW5lcmF0b3Igd2l0aCBDT19JVEVSQUJMRV9DT1JPVVRJTkUgZmxhZworICAgICAgICAgICAgICAgICAgICAoZGVjb3JhdGVkIHdpdGggdHlwZXMuY29yb3V0aW5lIGRlY29yYXRvcik7CisgICAgICAgICAgICAgICAgICAqIGFuIGFzeW5jIGdlbmVyYXRvci4KKyAgICAgICAgICAgICovCisgICAgICAgICAgICBjb25zdCBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIHJhaXNlZCBTdG9wSXRlcmF0aW9uIjsKKyAgICAgICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKSB7CiAgICAgICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSByYWlzZWQgU3RvcEl0ZXJhdGlvbiI7Ci0gICAgICAgICAgICBQeUVycl9GZXRjaCgmZXhjLCAmdmFsLCAmdGIpOwotICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwsICZ0Yik7Ci0gICAgICAgICAgICBpZiAodGIgIT0gTlVMTCkKLSAgICAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sodmFsLCB0Yik7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZXhjKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOwotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKLSAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwyLCAmdGIpOwotICAgICAgICAgICAgUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uKCZleGMsICZ2YWwyLCAmdGIpOwotICAgICAgICAgICAgUHlfSU5DUkVGKHZhbCk7Ci0gICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDYXVzZSh2YWwyLCB2YWwpOwotICAgICAgICAgICAgUHlFeGNlcHRpb25fU2V0Q29udGV4dCh2YWwyLCB2YWwpOwotICAgICAgICAgICAgUHlFcnJfUmVzdG9yZShleGMsIHZhbDIsIHRiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikgeworICAgICAgICAgICAgICAgIG1zZyA9ICJhc3luYyBnZW5lcmF0b3IgcmFpc2VkIFN0b3BJdGVyYXRpb24iOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogUmFpc2UgYSBSdW50aW1lRXJyb3IgKi8KKyAgICAgICAgICAgIGdlbl9jaGFpbl9ydW50aW1lX2Vycm9yKG1zZyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvKiBgZ2VuYCBpcyBhbiBvcmRpbmFyeSBnZW5lcmF0b3Igd2l0aG91dAorICAgICAgICAgICAgICAgQ09fRlVUVVJFX0dFTkVSQVRPUl9TVE9QIGZsYWcuCisgICAgICAgICAgICAqLworCiAgICAgICAgICAgICBQeU9iamVjdCAqZXhjLCAqdmFsLCAqdGI7CiAKICAgICAgICAgICAgIC8qIFBvcCB0aGUgZXhjZXB0aW9uIGJlZm9yZSBpc3N1aW5nIGEgd2FybmluZy4gKi8KICAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CiAKLSAgICAgICAgICAgIGlmIChQeUVycl9XYXJuRm9ybWF0KFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZ2VuZXJhdG9yICclLjUwUycgcmFpc2VkIFN0b3BJdGVyYXRpb24iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuLT5naV9xdWFsbmFtZSkpIHsKICAgICAgICAgICAgICAgICAvKiBXYXJuaW5nIHdhcyBjb252ZXJ0ZWQgdG8gYW4gZXJyb3IuICovCkBAIC0yMDcsNiArMzAyLDE1IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgZWxzZSBpZiAoUHlBc3luY0dlbl9DaGVja0V4YWN0KGdlbikgJiYgIXJlc3VsdCAmJgorICAgICAgICAgICAgIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfU3RvcEFzeW5jSXRlcmF0aW9uKSkKKyAgICB7CisgICAgICAgIC8qIGNvZGUgaW4gYGdlbmAgcmFpc2VkIGEgU3RvcEFzeW5jSXRlcmF0aW9uIGVycm9yOgorICAgICAgICAgICByYWlzZSBhIFJ1bnRpbWVFcnJvci4KKyAgICAgICAgKi8KKyAgICAgICAgY29uc3QgY2hhciAqbXNnID0gImFzeW5jIGdlbmVyYXRvciByYWlzZWQgU3RvcEFzeW5jSXRlcmF0aW9uIjsKKyAgICAgICAgZ2VuX2NoYWluX3J1bnRpbWVfZXJyb3IobXNnKTsKKyAgICB9CiAKICAgICBpZiAoIXJlc3VsdCB8fCBmLT5mX3N0YWNrdG9wID09IE5VTEwpIHsKICAgICAgICAgLyogZ2VuZXJhdG9yIGNhbid0IGJlIHJlcnVuLCBzbyByZWxlYXNlIHRoZSBmcmFtZSAqLwpAQCAtMjUzLDE4ICszNTcsMjAgQEAKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBfUHlfSURFTlRJRklFUihjbG9zZSk7CiAKLSAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikpIHsKKyAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CiAgICAgICAgIHJldHZhbCA9IGdlbl9jbG9zZSgoUHlHZW5PYmplY3QgKil5ZiwgTlVMTCk7CiAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICB9IGVsc2UgeworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUHlPYmplY3QgKm1ldGggPSBfUHlPYmplY3RfR2V0QXR0cklkKHlmLCAmUHlJZF9jbG9zZSk7CiAgICAgICAgIGlmIChtZXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpCiAgICAgICAgICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHlmKTsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR2YWwgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb24obWV0aCwgIiIpOworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhtZXRoKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgICAgIGlmIChyZXR2YWwgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC0yODQsNyArMzkwLDcgQEAKICAgICAgICAgUHlPYmplY3QgKmJ5dGVjb2RlID0gZi0+Zl9jb2RlLT5jb19jb2RlOwogICAgICAgICB1bnNpZ25lZCBjaGFyICpjb2RlID0gKHVuc2lnbmVkIGNoYXIgKilQeUJ5dGVzX0FTX1NUUklORyhieXRlY29kZSk7CiAKLSAgICAgICAgaWYgKGNvZGVbZi0+Zl9sYXN0aSArIDFdICE9IFlJRUxEX0ZST00pCisgICAgICAgIGlmIChjb2RlW2YtPmZfbGFzdGkgKyBzaXplb2YoX1B5X0NPREVVTklUKV0gIT0gWUlFTERfRlJPTSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB5ZiA9IGYtPmZfc3RhY2t0b3BbLTFdOwogICAgICAgICBQeV9JTkNSRUYoeWYpOwpAQCAtMzExLDggKzQxNywxMSBAQAogICAgIHJldHZhbCA9IGdlbl9zZW5kX2V4KGdlbiwgUHlfTm9uZSwgMSwgMSk7CiAgICAgaWYgKHJldHZhbCkgewogICAgICAgICBjaGFyICptc2cgPSAiZ2VuZXJhdG9yIGlnbm9yZWQgR2VuZXJhdG9yRXhpdCI7Ci0gICAgICAgIGlmIChQeUNvcm9fQ2hlY2tFeGFjdChnZW4pKQorICAgICAgICBpZiAoUHlDb3JvX0NoZWNrRXhhY3QoZ2VuKSkgewogICAgICAgICAgICAgbXNnID0gImNvcm91dGluZSBpZ25vcmVkIEdlbmVyYXRvckV4aXQiOworICAgICAgICB9IGVsc2UgaWYgKFB5QXN5bmNHZW5fQ2hlY2tFeGFjdChnZW4pKSB7CisgICAgICAgICAgICBtc2cgPSBBU1lOQ19HRU5fSUdOT1JFRF9FWElUX01TRzsKKyAgICAgICAgfQogICAgICAgICBQeV9ERUNSRUYocmV0dmFsKTsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgbXNnKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0zMzIsMjEgKzQ0MSwyMiBAQAogcmV0dXJuIG5leHQgeWllbGRlZCB2YWx1ZSBvciByYWlzZSBTdG9wSXRlcmF0aW9uLiIpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotZ2VuX3Rocm93KFB5R2VuT2JqZWN0ICpnZW4sIFB5T2JqZWN0ICphcmdzKQorX2dlbl90aHJvdyhQeUdlbk9iamVjdCAqZ2VuLCBpbnQgY2xvc2Vfb25fZ2VuZXhpdCwKKyAgICAgICAgICAgUHlPYmplY3QgKnR5cCwgUHlPYmplY3QgKnZhbCwgUHlPYmplY3QgKnRiKQogewotICAgIFB5T2JqZWN0ICp0eXA7Ci0gICAgUHlPYmplY3QgKnRiID0gTlVMTDsKLSAgICBQeU9iamVjdCAqdmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqeWYgPSBfUHlHZW5feWYoZ2VuKTsKICAgICBfUHlfSURFTlRJRklFUih0aHJvdyk7CiAKLSAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ0aHJvdyIsIDEsIDMsICZ0eXAsICZ2YWwsICZ0YikpCi0gICAgICAgIHJldHVybiBOVUxMOwotCiAgICAgaWYgKHlmKSB7CiAgICAgICAgIFB5T2JqZWN0ICpyZXQ7CiAgICAgICAgIGludCBlcnI7Ci0gICAgICAgIGlmIChQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXModHlwLCBQeUV4Y19HZW5lcmF0b3JFeGl0KSkgeworICAgICAgICBpZiAoUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzKHR5cCwgUHlFeGNfR2VuZXJhdG9yRXhpdCkgJiYKKyAgICAgICAgICAgIGNsb3NlX29uX2dlbmV4aXQKKyAgICAgICAgKSB7CisgICAgICAgICAgICAvKiBBc3luY2hyb25vdXMgZ2VuZXJhdG9ycyAqc2hvdWxkIG5vdCogYmUgY2xvc2VkIHJpZ2h0IGF3YXkuCisgICAgICAgICAgICAgICBXZSBoYXZlIHRvIGFsbG93IHNvbWUgYXdhaXRzIHRvIHdvcmsgaXQgdGhyb3VnaCwgaGVuY2UgdGhlCisgICAgICAgICAgICAgICBgY2xvc2Vfb25fZ2VuZXhpdGAgcGFyYW1ldGVyIGhlcmUuCisgICAgICAgICAgICAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKICAgICAgICAgICAgIGVyciA9IGdlbl9jbG9zZV9pdGVyKHlmKTsKICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDA7CkBAIC0zNTUsMTEgKzQ2NSwxNiBAQAogICAgICAgICAgICAgICAgIHJldHVybiBnZW5fc2VuZF9leChnZW4sIFB5X05vbmUsIDEsIDApOwogICAgICAgICAgICAgZ290byB0aHJvd19oZXJlOwogICAgICAgICB9Ci0gICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHlmKSkgeworICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdCh5ZikgfHwgUHlDb3JvX0NoZWNrRXhhY3QoeWYpKSB7CisgICAgICAgICAgICAvKiBgeWZgIGlzIGEgZ2VuZXJhdG9yIG9yIGEgY29yb3V0aW5lLiAqLwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMTsKLSAgICAgICAgICAgIHJldCA9IGdlbl90aHJvdygoUHlHZW5PYmplY3QgKil5ZiwgYXJncyk7CisgICAgICAgICAgICAvKiBDbG9zZSB0aGUgZ2VuZXJhdG9yIHRoYXQgd2UgYXJlIGN1cnJlbnRseSBpdGVyYXRpbmcgd2l0aAorICAgICAgICAgICAgICAgJ3lpZWxkIGZyb20nIG9yIGF3YWl0aW5nIG9uIHdpdGggJ2F3YWl0Jy4gKi8KKyAgICAgICAgICAgIHJldCA9IF9nZW5fdGhyb3coKFB5R2VuT2JqZWN0ICopeWYsIGNsb3NlX29uX2dlbmV4aXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cCwgdmFsLCB0Yik7CiAgICAgICAgICAgICBnZW4tPmdpX3J1bm5pbmcgPSAwOwogICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLyogYHlmYCBpcyBhbiBpdGVyYXRvciBvciBhIGNvcm91dGluZS1saWtlIG9iamVjdC4gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICptZXRoID0gX1B5T2JqZWN0X0dldEF0dHJJZCh5ZiwgJlB5SWRfdGhyb3cpOwogICAgICAgICAgICAgaWYgKG1ldGggPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKQEAgLTM3MSw3ICs0ODYsNyBAQAogICAgICAgICAgICAgICAgIGdvdG8gdGhyb3dfaGVyZTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGdlbi0+Z2lfcnVubmluZyA9IDE7Ci0gICAgICAgICAgICByZXQgPSBQeU9iamVjdF9DYWxsT2JqZWN0KG1ldGgsIGFyZ3MpOworICAgICAgICAgICAgcmV0ID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhtZXRoLCB0eXAsIHZhbCwgdGIsIE5VTEwpOwogICAgICAgICAgICAgZ2VuLT5naV9ydW5uaW5nID0gMDsKICAgICAgICAgICAgIFB5X0RFQ1JFRihtZXRoKTsKICAgICAgICAgfQpAQCAtMzgzLDcgKzQ5OCw3IEBACiAgICAgICAgICAgICBhc3NlcnQocmV0ID09IHlmKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXQpOwogICAgICAgICAgICAgLyogVGVybWluYXRpb24gcmVwZXRpdGlvbiBvZiBZSUVMRF9GUk9NICovCi0gICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpKys7CisgICAgICAgICAgICBnZW4tPmdpX2ZyYW1lLT5mX2xhc3RpICs9IHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgICAgICAgICAgaWYgKF9QeUdlbl9GZXRjaFN0b3BJdGVyYXRpb25WYWx1ZSgmdmFsKSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgcmV0ID0gZ2VuX3NlbmRfZXgoZ2VuLCB2YWwsIDAsIDApOwogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWwpOwpAQCAtNDU0LDYgKzU2OSwyMSBAQAogCiAKIHN0YXRpYyBQeU9iamVjdCAqCitnZW5fdGhyb3coUHlHZW5PYmplY3QgKmdlbiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnR5cDsKKyAgICBQeU9iamVjdCAqdGIgPSBOVUxMOworICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOworCisgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAidGhyb3ciLCAxLCAzLCAmdHlwLCAmdmFsLCAmdGIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIHJldHVybiBfZ2VuX3Rocm93KGdlbiwgMSwgdHlwLCB2YWwsIHRiKTsKK30KKworCitzdGF0aWMgUHlPYmplY3QgKgogZ2VuX2l0ZXJuZXh0KFB5R2VuT2JqZWN0ICpnZW4pCiB7CiAgICAgcmV0dXJuIGdlbl9zZW5kX2V4KGdlbiwgTlVMTCwgMCwgMCk7CkBAIC01MjYsOCArNjU2LDYgQEAKIHN0YXRpYyBpbnQKIGdlbl9zZXRfbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uZ2lfbmFtZSBvciB0byBzZXQgaXQgdG8gYW55dGhpbmcKICAgICAgKiBvdGhlciB0aGFuIGEgc3RyaW5nIG9iamVjdC4gKi8KICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKHZhbHVlKSkgewpAQCAtNTM1LDEwICs2NjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIl9fbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9uYW1lOwogICAgIFB5X0lOQ1JFRih2YWx1ZSk7Ci0gICAgb3AtPmdpX25hbWUgPSB2YWx1ZTsKLSAgICBQeV9ERUNSRUYodG1wKTsKKyAgICBQeV9YU0VUUkVGKG9wLT5naV9uYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTU1Miw4ICs2NzgsNiBAQAogc3RhdGljIGludAogZ2VuX3NldF9xdWFsbmFtZShQeUdlbk9iamVjdCAqb3AsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqdG1wOwotCiAgICAgLyogTm90IGxlZ2FsIHRvIGRlbCBnZW4uX19xdWFsbmFtZV9fIG9yIHRvIHNldCBpdCB0byBhbnl0aGluZwogICAgICAqIG90aGVyIHRoYW4gYSBzdHJpbmcgb2JqZWN0LiAqLwogICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8ICFQeVVuaWNvZGVfQ2hlY2sodmFsdWUpKSB7CkBAIC01NjEsMTAgKzY4NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiX19xdWFsbmFtZV9fIG11c3QgYmUgc2V0IHRvIGEgc3RyaW5nIG9iamVjdCIpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIHRtcCA9IG9wLT5naV9xdWFsbmFtZTsKICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgIG9wLT5naV9xdWFsbmFtZSA9IHZhbHVlOwotICAgIFB5X0RFQ1JFRih0bXApOworICAgIFB5X1hTRVRSRUYob3AtPmdpX3F1YWxuYW1lLCB2YWx1ZSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMDUsMjEgKzExMjcsMjEgQEAKIAogdHlwZWRlZiBzdHJ1Y3QgewogICAgIFB5T2JqZWN0X0hFQUQKLSAgICBQeU9iamVjdCAqYXdfYWl0ZXI7CisgICAgUHlPYmplY3QgKmFnc19haXRlcjsKIH0gUHlBSXRlcldyYXBwZXI7CiAKIAogc3RhdGljIFB5T2JqZWN0ICoKIGFpdGVyX3dyYXBwZXJfaXRlcm5leHQoUHlBSXRlcldyYXBwZXIgKmF3KQogewotICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBhdy0+YXdfYWl0ZXIpOworICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19TdG9wSXRlcmF0aW9uLCBhdy0+YWdzX2FpdGVyKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGludAogYWl0ZXJfd3JhcHBlcl90cmF2ZXJzZShQeUFJdGVyV3JhcHBlciAqYXcsIHZpc2l0cHJvYyB2aXNpdCwgdm9pZCAqYXJnKQogewotICAgIFB5X1ZJU0lUKChQeU9iamVjdCAqKWF3LT5hd19haXRlcik7CisgICAgUHlfVklTSVQoKFB5T2JqZWN0ICopYXctPmFnc19haXRlcik7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTEwMjcsNyArMTE0OSw3IEBACiBhaXRlcl93cmFwcGVyX2RlYWxsb2MoUHlBSXRlcldyYXBwZXIgKmF3KQogewogICAgIF9QeU9iamVjdF9HQ19VTlRSQUNLKChQeU9iamVjdCAqKWF3KTsKLSAgICBQeV9DTEVBUihhdy0+YXdfYWl0ZXIpOworICAgIFB5X0NMRUFSKGF3LT5hZ3NfYWl0ZXIpOwogICAgIFB5T2JqZWN0X0dDX0RlbChhdyk7CiB9CiAKQEAgLTEwODksNyArMTIxMSw4MTcgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogICAgIFB5X0lOQ1JFRihhaXRlcik7Ci0gICAgYXctPmF3X2FpdGVyID0gYWl0ZXI7CisgICAgYXctPmFnc19haXRlciA9IGFpdGVyOwogICAgIF9QeU9iamVjdF9HQ19UUkFDSyhhdyk7CiAgICAgcmV0dXJuIChQeU9iamVjdCAqKWF3OwogfQorCisKKy8qID09PT09PT09PSBBc3luY2hyb25vdXMgR2VuZXJhdG9ycyA9PT09PT09PT0gKi8KKworCit0eXBlZGVmIGVudW0geworICAgIEFXQUlUQUJMRV9TVEFURV9JTklULCAgIC8qIG5ldyBhd2FpdGFibGUsIGhhcyBub3QgeWV0IGJlZW4gaXRlcmF0ZWQgKi8KKyAgICBBV0FJVEFCTEVfU1RBVEVfSVRFUiwgICAvKiBiZWluZyBpdGVyYXRlZCAqLworICAgIEFXQUlUQUJMRV9TVEFURV9DTE9TRUQsIC8qIGNsb3NlZCAqLworfSBBd2FpdGFibGVTdGF0ZTsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5QXN5bmNHZW5PYmplY3QgKmFnc19nZW47CisKKyAgICAvKiBDYW4gYmUgTlVMTCwgd2hlbiBpbiB0aGUgX19hbmV4dF9fKCkgbW9kZQorICAgICAgIChlcXVpdmFsZW50IG9mICJhc2VuZChOb25lKSIpICovCisgICAgUHlPYmplY3QgKmFnc19zZW5kdmFsOworCisgICAgQXdhaXRhYmxlU3RhdGUgYWdzX3N0YXRlOworfSBQeUFzeW5jR2VuQVNlbmQ7CisKKwordHlwZWRlZiBzdHJ1Y3QgeworICAgIFB5T2JqZWN0X0hFQUQKKyAgICBQeUFzeW5jR2VuT2JqZWN0ICphZ3RfZ2VuOworCisgICAgLyogQ2FuIGJlIE5VTEwsIHdoZW4gaW4gdGhlICJhY2xvc2UoKSIgbW9kZQorICAgICAgIChlcXVpdmFsZW50IG9mICJhdGhyb3coR2VuZXJhdG9yRXhpdCkiKSAqLworICAgIFB5T2JqZWN0ICphZ3RfYXJnczsKKworICAgIEF3YWl0YWJsZVN0YXRlIGFndF9zdGF0ZTsKK30gUHlBc3luY0dlbkFUaHJvdzsKKworCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3RfSEVBRAorICAgIFB5T2JqZWN0ICphZ3dfdmFsOworfSBfUHlBc3luY0dlbldyYXBwZWRWYWx1ZTsKKworCisjaWZuZGVmIF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUCisjZGVmaW5lIF9QeUFzeW5jR2VuX01BWEZSRUVMSVNUIDgwCisjZW5kaWYKKworLyogRnJlZWxpc3RzIGJvb3N0IHBlcmZvcm1hbmNlIDYtMTAlOyB0aGV5IGFsc28gcmVkdWNlIG1lbW9yeQorICAgZnJhZ21lbnRhdGlvbiwgYXMgX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWUgYW5kIFB5QXN5bmNHZW5BU2VuZAorICAgYXJlIHNob3J0LWxpdmluZyBvYmplY3RzIHRoYXQgYXJlIGluc3RhbnRpYXRlZCBmb3IgZXZlcnkKKyAgIF9fYW5leHRfXyBjYWxsLgorKi8KKworc3RhdGljIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlICphZ192YWx1ZV9mcmVlbGlzdFtfUHlBc3luY0dlbl9NQVhGUkVFTElTVF07CitzdGF0aWMgaW50IGFnX3ZhbHVlX2ZyZWVsaXN0X2ZyZWUgPSAwOworCitzdGF0aWMgUHlBc3luY0dlbkFTZW5kICphZ19hc2VuZF9mcmVlbGlzdFtfUHlBc3luY0dlbl9NQVhGUkVFTElTVF07CitzdGF0aWMgaW50IGFnX2FzZW5kX2ZyZWVsaXN0X2ZyZWUgPSAwOworCisjZGVmaW5lIF9QeUFzeW5jR2VuV3JhcHBlZFZhbHVlX0NoZWNrRXhhY3QobykgXAorICAgICAgICAgICAgICAgICAgICAoUHlfVFlQRShvKSA9PSAmX1B5QXN5bmNHZW5XcmFwcGVkVmFsdWVfVHlwZSkKKworI2RlZmluZSBQeUFzeW5jR2VuQVNlbmRfQ2hlY2tFeGFjdChvKSBcCisgICAgICAgICAgICAgICAgICAgIChQeV9UWVBFKG8pID09ICZfUHlBc3luY0dlbkFTZW5kX1R5cGUpCisKKworc3RhdGljIGludAorYXN5bmNfZ2VuX3RyYXZlcnNlKFB5QXN5bmNHZW5PYmplY3QgKmdlbiwgdmlzaXRwcm9jIHZpc2l0LCB2b2lkICphcmcpCit7CisgICAgUHlfVklTSVQoZ2VuLT5hZ19maW5hbGl6ZXIpOworICAgIHJldHVybiBnZW5fdHJhdmVyc2UoKFB5R2VuT2JqZWN0KilnZW4sIHZpc2l0LCBhcmcpOworfQorCisKK3N0YXRpYyBQeU9iamVjdCAqCithc3luY19nZW5fcmVwcihQeUFzeW5jR2VuT2JqZWN0ICpvKQoreworICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiPGFzeW5jX2dlbmVyYXRvciBvYmplY3QgJVMgYXQgJXA+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+b2JfcmVmY250ICE9IDEpIHsKICAgICAgICAgUHlfWERFQ1JFRihuZXdpdGVtKTsKQEAgLTE2Myw5ICsxNzIsNyBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHAgPSAoKFB5VHVwbGVPYmplY3QgKilvcCkgLT4gb2JfaXRlbSArIGk7Ci0gICAgb2xkaXRlbSA9ICpwOwotICAgICpwID0gbmV3aXRlbTsKLSAgICBQeV9YREVDUkVGKG9sZGl0ZW0pOworICAgIFB5X1hTRVRSRUYoKnAsIG5ld2l0ZW0pOwogICAgIHJldHVybiAwOwogfQogCkBAIC00NDYsOSArNDUzLDkgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogI2RlZmluZSBiICgoUHlUdXBsZU9iamVjdCAqKWJiKQotICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKLSAgICBpZiAoc2l6ZSA8IDApCisgICAgaWYgKFB5X1NJWkUoYSkgPiBQWV9TU0laRV9UX01BWCAtIFB5X1NJWkUoYikpCiAgICAgICAgIHJldHVybiBQeUVycl9Ob01lbW9yeSgpOworICAgIHNpemUgPSBQeV9TSVpFKGEpICsgUHlfU0laRShiKTsKICAgICBucCA9IChQeVR1cGxlT2JqZWN0ICopIFB5VHVwbGVfTmV3KHNpemUpOwogICAgIGlmIChucCA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvT2JqZWN0cy90eXBlb2JqZWN0LmMgYi9PYmplY3RzL3R5cGVvYmplY3QuYwppbmRleCBlOTM4NGFiLi4xMDIxYTc1IDEwMDY0NAotLS0gYS9PYmplY3RzL3R5cGVvYmplY3QuYworKysgYi9PYmplY3RzL3R5cGVvYmplY3QuYwpAQCAtNTMsMTAgKzUzLDEyIEBACiBfUHlfSURFTlRJRklFUihfX2dldGF0dHJpYnV0ZV9fKTsKIF9QeV9JREVOVElGSUVSKF9fZ2V0aXRlbV9fKTsKIF9QeV9JREVOVElGSUVSKF9faGFzaF9fKTsKK19QeV9JREVOVElGSUVSKF9faW5pdF9zdWJjbGFzc19fKTsKIF9QeV9JREVOVElGSUVSKF9fbGVuX18pOwogX1B5X0lERU5USUZJRVIoX19tb2R1bGVfXyk7CiBfUHlfSURFTlRJRklFUihfX25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX25ld19fKTsKK19QeV9JREVOVElGSUVSKF9fc2V0X25hbWVfXyk7CiBfUHlfSURFTlRJRklFUihfX3NldGl0ZW1fXyk7CiBfUHlfSURFTlRJRklFUihidWlsdGlucyk7CiAKQEAgLTQ1MiwyNyArNDU0LDMwIEBACiBzdGF0aWMgUHlPYmplY3QgKgogdHlwZV9tb2R1bGUoUHlUeXBlT2JqZWN0ICp0eXBlLCB2b2lkICpjb250ZXh0KQogewotICAgIGNoYXIgKnM7CisgICAgUHlPYmplY3QgKm1vZDsKIAogICAgIGlmICh0eXBlLT50cF9mbGFncyAmIFB5X1RQRkxBR1NfSEVBUFRZUEUpIHsKLSAgICAgICAgUHlPYmplY3QgKm1vZCA9IF9QeURpY3RfR2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18pOwotICAgICAgICBpZiAoIW1vZCkgeworICAgICAgICBtb2QgPSBfUHlEaWN0X0dldEl0ZW1JZCh0eXBlLT50cF9kaWN0LCAmUHlJZF9fX21vZHVsZV9fKTsKKyAgICAgICAgaWYgKG1vZCA9PSBOVUxMKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfQXR0cmlidXRlRXJyb3IsICJfX21vZHVsZV9fIik7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIFB5X1hJTkNSRUYobW9kKTsKLSAgICAgICAgcmV0dXJuIG1vZDsKKyAgICAgICAgUHlfSU5DUkVGKG1vZCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqbmFtZTsKLSAgICAgICAgcyA9IHN0cnJjaHIodHlwZS0+dHBfbmFtZSwgJy4nKTsKLSAgICAgICAgaWYgKHMgIT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoCisgICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHJyY2hyKHR5cGUtPnRwX25hbWUsICcuJyk7CisgICAgICAgIGlmIChzICE9IE5VTEwpIHsKKyAgICAgICAgICAgIG1vZCA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZSgKICAgICAgICAgICAgICAgICB0eXBlLT50cF9uYW1lLCAoUHlfc3NpemVfdCkocyAtIHR5cGUtPnRwX25hbWUpKTsKLSAgICAgICAgbmFtZSA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX2J1aWx0aW5zKTsKLSAgICAgICAgUHlfWElOQ1JFRihuYW1lKTsKLSAgICAgICAgcmV0dXJuIG5hbWU7CisgICAgICAgICAgICBpZiAobW9kICE9IE5VTEwpCisgICAgICAgICAgICAgICAgUHlVbmljb2RlX0ludGVybkluUGxhY2UoJm1vZCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBtb2QgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9idWlsdGlucyk7CisgICAgICAgICAgICBQeV9YSU5DUkVGKG1vZCk7CisgICAgICAgIH0KICAgICB9CisgICAgcmV0dXJuIG1vZDsKIH0KIAogc3RhdGljIGludApAQCAtNTAwLDcgKzUwNSw3IEBACiAgICAgICAgICAgICBQeUVycl9TZXRPYmplY3QoUHlFeGNfQXR0cmlidXRlRXJyb3IsIG1lc3NhZ2UpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWElOQ1JFRihtb2QpOworICAgIFB5X0lOQ1JFRihtb2QpOwogICAgIHJldHVybiBtb2Q7CiB9CiAKQEAgLTU0Nyw4ICs1NTIsOCBAQAogCiBzdGF0aWMgUHlUeXBlT2JqZWN0ICpiZXN0X2Jhc2UoUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IG1yb19pbnRlcm5hbChQeVR5cGVPYmplY3QgKiwgUHlPYmplY3QgKiopOwotUHlfTE9DQUxfSU5MSU5FKGludCkgdHlwZV9pc19zdWJ0eXBlX2Jhc2VfY2hhaW4oUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKLXN0YXRpYyBpbnQgY29tcGF0aWJsZV9mb3JfYXNzaWdubWVudChQeVR5cGVPYmplY3QgKiwgUHlUeXBlT2JqZWN0ICosIGNoYXIgKik7CitzdGF0aWMgaW50IHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqLCBQeVR5cGVPYmplY3QgKik7CitzdGF0aWMgaW50IGNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBhZGRfc3ViY2xhc3MoUHlUeXBlT2JqZWN0KiwgUHlUeXBlT2JqZWN0Kik7CiBzdGF0aWMgaW50IGFkZF9hbGxfc3ViY2xhc3NlcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICpiYXNlcyk7CiBzdGF0aWMgdm9pZCByZW1vdmVfc3ViY2xhc3MoUHlUeXBlT2JqZWN0ICosIFB5VHlwZU9iamVjdCAqKTsKQEAgLTg4OCwyNSArODkzLDMzIEBACiAjZW5kaWYKIAogICAgIG9iaiA9IHR5cGUtPnRwX25ldyh0eXBlLCBhcmdzLCBrd2RzKTsKLSAgICBpZiAob2JqICE9IE5VTEwpIHsKLSAgICAgICAgLyogVWdseSBleGNlcHRpb246IHdoZW4gdGhlIGNhbGwgd2FzIHR5cGUoc29tZXRoaW5nKSwKLSAgICAgICAgICAgZG9uJ3QgY2FsbCB0cF9pbml0IG9uIHRoZSByZXN1bHQuICovCi0gICAgICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgotICAgICAgICAgICAgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKLSAgICAgICAgICAgIChrd2RzID09IE5VTEwgfHwKLSAgICAgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCi0gICAgICAgICAgIGl0IHdvbid0IGJlIGluaXRpYWxpemVkLiAqLwotICAgICAgICBpZiAoIVB5VHlwZV9Jc1N1YnR5cGUoUHlfVFlQRShvYmopLCB0eXBlKSkKLSAgICAgICAgICAgIHJldHVybiBvYmo7Ci0gICAgICAgIHR5cGUgPSBQeV9UWVBFKG9iaik7Ci0gICAgICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGludCByZXMgPSB0eXBlLT50cF9pbml0KG9iaiwgYXJncywga3dkcyk7Ci0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOwotICAgICAgICAgICAgICAgIG9iaiA9IE5VTEw7Ci0gICAgICAgICAgICB9CisgICAgb2JqID0gX1B5X0NoZWNrRnVuY3Rpb25SZXN1bHQoKFB5T2JqZWN0Kil0eXBlLCBvYmosIE5VTEwpOworICAgIGlmIChvYmogPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisKKyAgICAvKiBVZ2x5IGV4Y2VwdGlvbjogd2hlbiB0aGUgY2FsbCB3YXMgdHlwZShzb21ldGhpbmcpLAorICAgICAgIGRvbid0IGNhbGwgdHBfaW5pdCBvbiB0aGUgcmVzdWx0LiAqLworICAgIGlmICh0eXBlID09ICZQeVR5cGVfVHlwZSAmJgorICAgICAgICBQeVR1cGxlX0NoZWNrKGFyZ3MpICYmIFB5VHVwbGVfR0VUX1NJWkUoYXJncykgPT0gMSAmJgorICAgICAgICAoa3dkcyA9PSBOVUxMIHx8CisgICAgICAgICAoUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpID09IDApKSkKKyAgICAgICAgcmV0dXJuIG9iajsKKworICAgIC8qIElmIHRoZSByZXR1cm5lZCBvYmplY3QgaXMgbm90IGFuIGluc3RhbmNlIG9mIHR5cGUsCisgICAgICAgaXQgd29uJ3QgYmUgaW5pdGlhbGl6ZWQuICovCisgICAgaWYgKCFQeVR5cGVfSXNTdWJ0eXBlKFB5X1RZUEUob2JqKSwgdHlwZSkpCisgICAgICAgIHJldHVybiBvYmo7CisKKyAgICB0eXBlID0gUHlfVFlQRShvYmopOworICAgIGlmICh0eXBlLT50cF9pbml0ICE9IE5VTEwpIHsKKyAgICAgICAgaW50IHJlcyA9IHR5cGUtPnRwX2luaXQob2JqLCBhcmdzLCBrd2RzKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIGFzc2VydChQeUVycl9PY2N1cnJlZCgpKTsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihvYmopOworICAgICAgICAgICAgb2JqID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAgICAgICAgIH0KICAgICB9CiAgICAgcmV0dXJuIG9iajsKQEAgLTEzMjQsNyArMTMzNyw3IEBACiAKIC8qIHR5cGUgdGVzdCB3aXRoIHN1YmNsYXNzaW5nIHN1cHBvcnQgKi8KIAotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbnQKIHR5cGVfaXNfc3VidHlwZV9iYXNlX2NoYWluKFB5VHlwZU9iamVjdCAqYSwgUHlUeXBlT2JqZWN0ICpiKQogewogICAgIGRvIHsKQEAgLTE0MTIsMzYgKzE0MjUsMzggQEAKICAgIGFzIGxvb2t1cF9tZXRob2QgdG8gY2FjaGUgdGhlIGludGVybmVkIG5hbWUgc3RyaW5nIG9iamVjdC4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjaGFyICpmb3JtYXQsIC4uLikKK2NhbGxfbWV0aG9kKFB5T2JqZWN0ICpvLCBfUHlfSWRlbnRpZmllciAqbmFtZWlkLCBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKIHsKICAgICB2YV9saXN0IHZhOwotICAgIFB5T2JqZWN0ICphcmdzLCAqZnVuYyA9IDAsICpyZXR2YWw7Ci0gICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CisgICAgUHlPYmplY3QgKmZ1bmMgPSBOVUxMLCAqcmV0dmFsOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShvLCBuYW1laWQpOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKLSAgICAgICAgdmFfZW5kKHZhKTsKICAgICAgICAgaWYgKCFQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgUHlFcnJfU2V0T2JqZWN0KFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBuYW1laWQtPm9iamVjdCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkKKyAgICBpZiAoZm9ybWF0ICYmICpmb3JtYXQpIHsKKyAgICAgICAgUHlPYmplY3QgKmFyZ3M7CisKKyAgICAgICAgdmFfc3RhcnQodmEsIGZvcm1hdCk7CiAgICAgICAgIGFyZ3MgPSBQeV9WYUJ1aWxkVmFsdWUoZm9ybWF0LCB2YSk7Ci0gICAgZWxzZQotICAgICAgICBhcmdzID0gUHlUdXBsZV9OZXcoMCk7CisgICAgICAgIHZhX2VuZCh2YSk7CiAKLSAgICB2YV9lbmQodmEpOworICAgICAgICBpZiAoYXJncyA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAKLSAgICBpZiAoYXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7CisgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHZhbCA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CiAgICAgfQogCi0gICAgYXNzZXJ0KFB5VHVwbGVfQ2hlY2soYXJncykpOwotICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0KLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogCiAgICAgcmV0dXJuIHJldHZhbDsKQEAgLTE0NTAsMzYgKzE0NjUsMzggQEAKIC8qIENsb25lIG9mIGNhbGxfbWV0aG9kKCkgdGhhdCByZXR1cm5zIE5vdEltcGxlbWVudGVkIHdoZW4gdGhlIGxvb2t1cCBmYWlscy4gKi8KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfbWF5YmUoUHlPYmplY3QgKm8sIF9QeV9JZGVudGlmaWVyICpuYW1laWQsIGNoYXIgKmZvcm1hdCwgLi4uKQorY2FsbF9tYXliZShQeU9iamVjdCAqbywgX1B5X0lkZW50aWZpZXIgKm5hbWVpZCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCiB7CiAgICAgdmFfbGlzdCB2YTsKLSAgICBQeU9iamVjdCAqYXJncywgKmZ1bmMgPSAwLCAqcmV0dmFsOwotICAgIHZhX3N0YXJ0KHZhLCBmb3JtYXQpOworICAgIFB5T2JqZWN0ICpmdW5jID0gTlVMTCwgKnJldHZhbDsKIAogICAgIGZ1bmMgPSBsb29rdXBfbWF5YmUobywgbmFtZWlkKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIHZhX2VuZCh2YSk7CiAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIFB5X1JFVFVSTl9OT1RJTVBMRU1FTlRFRDsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgaWYgKGZvcm1hdCAmJiAqZm9ybWF0KQorICAgIGlmIChmb3JtYXQgJiYgKmZvcm1hdCkgeworICAgICAgICBQeU9iamVjdCAqYXJnczsKKworICAgICAgICB2YV9zdGFydCh2YSwgZm9ybWF0KTsKICAgICAgICAgYXJncyA9IFB5X1ZhQnVpbGRWYWx1ZShmb3JtYXQsIHZhKTsKLSAgICBlbHNlCi0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKKyAgICAgICAgdmFfZW5kKHZhKTsKIAotICAgIHZhX2VuZCh2YSk7CisgICAgICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKIAotICAgIGlmIChhcmdzID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKGZ1bmMpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKKyAgICAgICAgUHlfREVDUkVGKGFyZ3MpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxOb0FyZyhmdW5jKTsKICAgICB9CiAKLSAgICBhc3NlcnQoUHlUdXBsZV9DaGVjayhhcmdzKSk7Ci0gICAgcmV0dmFsID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLQotICAgIFB5X0RFQ1JFRihhcmdzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAKICAgICByZXR1cm4gcmV0dmFsOwpAQCAtMTUzMSw3ICsxNTQ4LDYgQEAKICAgICBQeU9iamVjdCAqbmFtZSA9IF9QeU9iamVjdF9HZXRBdHRySWQoY2xzLCAmUHlJZF9fX25hbWVfXyk7CiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeV9YREVDUkVGKG5hbWUpOwogICAgICAgICBuYW1lID0gUHlPYmplY3RfUmVwcihjbHMpOwogICAgIH0KICAgICBpZiAobmFtZSA9PSBOVUxMKQpAQCAtMjAyNSw2ICsyMDQxLDggQEAKIHN0YXRpYyBpbnQgb2JqZWN0X2luaXQoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IHVwZGF0ZV9zbG90KFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZpeHVwX3Nsb3RfZGlzcGF0Y2hlcnMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBzZXRfbmFtZXMoUHlUeXBlT2JqZWN0ICopOworc3RhdGljIGludCBpbml0X3N1YmNsYXNzKFB5VHlwZU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogLyoKICAqIEhlbHBlcnMgZm9yICBfX2RpY3RfXyBkZXNjcmlwdG9yLiAgV2UgZG9uJ3Qgd2FudCB0byBleHBvc2UgdGhlIGRpY3RzCkBAIC0yMDg5LDcgKzIxMDcsNyBAQAogc3RhdGljIGludAogc3VidHlwZV9zZXRkaWN0KFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICp2YWx1ZSwgdm9pZCAqY29udGV4dCkKIHsKLSAgICBQeU9iamVjdCAqZGljdCwgKipkaWN0cHRyOworICAgIFB5T2JqZWN0ICoqZGljdHB0cjsKICAgICBQeVR5cGVPYmplY3QgKmJhc2U7CiAKICAgICBiYXNlID0gZ2V0X2J1aWx0aW5fYmFzZV93aXRoX2RpY3QoUHlfVFlQRShvYmopKTsKQEAgLTIxMjAsMTAgKzIxMzgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgIm5vdCBhICclLjIwMHMnIiwgUHlfVFlQRSh2YWx1ZSktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gLTE7CiAgICAgfQotICAgIGRpY3QgPSAqZGljdHB0cjsKICAgICBQeV9YSU5DUkVGKHZhbHVlKTsKLSAgICAqZGljdHB0ciA9IHZhbHVlOwotICAgIFB5X1hERUNSRUYoZGljdCk7CisgICAgUHlfWFNFVFJFRigqZGljdHB0ciwgdmFsdWUpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yMjAyLDcgKzIyMTgsOCBAQAogICAgIGFzc2VydChhcmdzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSk7CiAgICAgYXNzZXJ0KGt3ZHMgPT0gTlVMTCB8fCBQeURpY3RfQ2hlY2soa3dkcykpOwogCi0gICAgaWYgKGt3ZHMgIT0gTlVMTCAmJiBQeURpY3RfQ2hlY2soa3dkcykgJiYgUHlEaWN0X1NpemUoa3dkcykgIT0gMCkgeworICAgIGlmIChrd2RzICE9IE5VTEwgJiYgUHlUdXBsZV9DaGVjayhhcmdzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpID09IDEgJiYKKyAgICAgICAgUHlEaWN0X0NoZWNrKGt3ZHMpICYmIFB5RGljdF9TaXplKGt3ZHMpICE9IDApIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJ0eXBlLl9faW5pdF9fKCkgdGFrZXMgbm8ga2V5d29yZCBhcmd1bWVudHMiKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtMjI2OSw4ICsyMjg2LDcgQEAKIHR5cGVfbmV3KFB5VHlwZU9iamVjdCAqbWV0YXR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKICAgICBQeU9iamVjdCAqbmFtZSwgKmJhc2VzID0gTlVMTCwgKm9yaWdfZGljdCwgKmRpY3QgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsibmFtZSIsICJiYXNlcyIsICJkaWN0IiwgMH07Ci0gICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHM7CisgICAgUHlPYmplY3QgKnF1YWxuYW1lLCAqc2xvdHMgPSBOVUxMLCAqdG1wLCAqbmV3c2xvdHMsICpjZWxsOwogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IE5VTEwsICpiYXNlLCAqdG1wdHlwZSwgKndpbm5lcjsKICAgICBQeUhlYXBUeXBlT2JqZWN0ICpldDsKICAgICBQeU1lbWJlckRlZiAqbXA7CkBAIC0yMjc4LDE2ICsyMjk0LDE5IEBACiAgICAgaW50IGosIG1heV9hZGRfZGljdCwgbWF5X2FkZF93ZWFrLCBhZGRfZGljdCwgYWRkX3dlYWs7CiAgICAgX1B5X0lERU5USUZJRVIoX19xdWFsbmFtZV9fKTsKICAgICBfUHlfSURFTlRJRklFUihfX3Nsb3RzX18pOworICAgIF9QeV9JREVOVElGSUVSKF9fY2xhc3NjZWxsX18pOwogCiAgICAgYXNzZXJ0KGFyZ3MgIT0gTlVMTCAmJiBQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKICAgICBhc3NlcnQoa3dkcyA9PSBOVUxMIHx8IFB5RGljdF9DaGVjayhrd2RzKSk7CiAKICAgICAvKiBTcGVjaWFsIGNhc2U6IHR5cGUoeCkgc2hvdWxkIHJldHVybiB4LT5vYl90eXBlICovCi0gICAgeworICAgIC8qIFdlIG9ubHkgd2FudCB0eXBlIGl0c2VsZiB0byBhY2NlcHQgdGhlIG9uZS1hcmd1bWVudCBmb3JtICgjMjcxNTcpCisgICAgICAgTm90ZTogV2UgZG9uJ3QgY2FsbCBQeVR5cGVfQ2hlY2tFeGFjdCBhcyB0aGF0IGFsc28gYWxsb3dzIHN1YmNsYXNzZXMgKi8KKyAgICBpZiAobWV0YXR5cGUgPT0gJlB5VHlwZV9UeXBlKSB7CiAgICAgICAgIGNvbnN0IFB5X3NzaXplX3QgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IG5rd2RzID0ga3dkcyA9PSBOVUxMID8gMCA6IFB5RGljdF9TaXplKGt3ZHMpOwogCi0gICAgICAgIGlmIChQeVR5cGVfQ2hlY2tFeGFjdChtZXRhdHlwZSkgJiYgbmFyZ3MgPT0gMSAmJiBua3dkcyA9PSAwKSB7CisgICAgICAgIGlmIChuYXJncyA9PSAxICYmIG5rd2RzID09IDApIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp4ID0gUHlUdXBsZV9HRVRfSVRFTShhcmdzLCAwKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihQeV9UWVBFKHgpKTsKICAgICAgICAgICAgIHJldHVybiAoUHlPYmplY3QgKikgUHlfVFlQRSh4KTsKQEAgLTIyOTYsNyArMjMxNSw3IEBACiAgICAgICAgIC8qIFNGIGJ1ZyA0NzUzMjcgLS0gaWYgdGhhdCBkaWRuJ3QgdHJpZ2dlciwgd2UgbmVlZCAzCiAgICAgICAgICAgIGFyZ3VtZW50cy4gYnV0IFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyBiZWxvdyBtYXkgZ2l2ZQogICAgICAgICAgICBhIG1zZyBzYXlpbmcgdHlwZSgpIG5lZWRzIGV4YWN0bHkgMy4gKi8KLSAgICAgICAgaWYgKG5hcmdzICsgbmt3ZHMgIT0gMykgeworICAgICAgICBpZiAobmFyZ3MgIT0gMykgewogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHlwZSgpIHRha2VzIDEgb3IgMyBhcmd1bWVudHMiKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjMwNCwxMCArMjMyMyw4IEBACiAgICAgfQogCiAgICAgLyogQ2hlY2sgYXJndW1lbnRzOiAobmFtZSwgYmFzZXMsIGRpY3QpICovCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIlVPIU8hOnR5cGUiLCBrd2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5VHVwbGVfVHlwZSwgJmJhc2VzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeURpY3RfVHlwZSwgJm9yaWdfZGljdCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVTyFPITp0eXBlLl9fbmV3X18iLCAmbmFtZSwgJlB5VHVwbGVfVHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgJmJhc2VzLCAmUHlEaWN0X1R5cGUsICZvcmlnX2RpY3QpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAogICAgIC8qIERldGVybWluZSB0aGUgcHJvcGVyIG1ldGF0eXBlIHRvIGRlYWwgd2l0aCB0aGlzOiAqLwpAQCAtMjU0NCw3ICsyNTYxLDcgQEAKICAgICB9CiAgICAgZXQtPmh0X3F1YWxuYW1lID0gcXVhbG5hbWUgPyBxdWFsbmFtZSA6IGV0LT5odF9uYW1lOwogICAgIFB5X0lOQ1JFRihldC0+aHRfcXVhbG5hbWUpOwotICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIFB5RGljdF9EZWxJdGVtKGRpY3QsIFB5SWRfX19xdWFsbmFtZV9fLm9iamVjdCkgPCAwKQorICAgIGlmIChxdWFsbmFtZSAhPSBOVUxMICYmIF9QeURpY3RfRGVsSXRlbUlkKGRpY3QsICZQeUlkX19fcXVhbG5hbWVfXykgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgLyogU2V0IHRwX2RvYyB0byBhIGNvcHkgb2YgZGljdFsnX19kb2NfXyddLCBpZiB0aGUgbGF0dGVyIGlzIHRoZXJlCkBAIC0yNTg3LDYgKzI2MDQsMjAgQEAKICAgICAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgfQogCisgICAgLyogU3BlY2lhbC1jYXNlIF9faW5pdF9zdWJjbGFzc19fOiBpZiBpdCdzIGEgcGxhaW4gZnVuY3Rpb24sCisgICAgICAgbWFrZSBpdCBhIGNsYXNzbWV0aG9kICovCisgICAgdG1wID0gX1B5RGljdF9HZXRJdGVtSWQoZGljdCwgJlB5SWRfX19pbml0X3N1YmNsYXNzX18pOworICAgIGlmICh0bXAgIT0gTlVMTCAmJiBQeUZ1bmN0aW9uX0NoZWNrKHRtcCkpIHsKKyAgICAgICAgdG1wID0gUHlDbGFzc01ldGhvZF9OZXcodG1wKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgaWYgKF9QeURpY3RfU2V0SXRlbUlkKGRpY3QsICZQeUlkX19faW5pdF9zdWJjbGFzc19fLCB0bXApIDwgMCkgeworICAgICAgICAgICAgUHlfREVDUkVGKHRtcCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIFB5X0RFQ1JFRih0bXApOworICAgIH0KKwogICAgIC8qIEFkZCBkZXNjcmlwdG9ycyBmb3IgY3VzdG9tIHNsb3RzIGZyb20gX19zbG90c19fLCBvciBmb3IgX19kaWN0X18gKi8KICAgICBtcCA9IFB5SGVhcFR5cGVfR0VUX01FTUJFUlMoZXQpOwogICAgIHNsb3RvZmZzZXQgPSBiYXNlLT50cF9iYXNpY3NpemU7CkBAIC0yNjU2LDYgKzI2ODcsMTQgQEAKICAgICBlbHNlCiAgICAgICAgIHR5cGUtPnRwX2ZyZWUgPSBQeU9iamVjdF9EZWw7CiAKKyAgICAvKiBzdG9yZSB0eXBlIGluIGNsYXNzJyBjZWxsICovCisgICAgY2VsbCA9IF9QeURpY3RfR2V0SXRlbUlkKGRpY3QsICZQeUlkX19fY2xhc3NjZWxsX18pOworICAgIGlmIChjZWxsICE9IE5VTEwgJiYgUHlDZWxsX0NoZWNrKGNlbGwpKSB7CisgICAgICAgIFB5Q2VsbF9TZXQoY2VsbCwgKFB5T2JqZWN0ICopIHR5cGUpOworICAgICAgICBfUHlEaWN0X0RlbEl0ZW1JZChkaWN0LCAmUHlJZF9fX2NsYXNzY2VsbF9fKTsKKyAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICB9CisKICAgICAvKiBJbml0aWFsaXplIHRoZSByZXN0ICovCiAgICAgaWYgKFB5VHlwZV9SZWFkeSh0eXBlKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjY3LDYgKzI3MDYsMTIgQEAKICAgICAgICAgZXQtPmh0X2NhY2hlZF9rZXlzID0gX1B5RGljdF9OZXdLZXlzRm9yQ2xhc3MoKTsKICAgICB9CiAKKyAgICBpZiAoc2V0X25hbWVzKHR5cGUpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIGlmIChpbml0X3N1YmNsYXNzKHR5cGUsIGt3ZHMpIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKwogICAgIFB5X0RFQ1JFRihkaWN0KTsKICAgICByZXR1cm4gKFB5T2JqZWN0ICopdHlwZTsKIApAQCAtMjY3OCw3ICsyNzIzLDcgQEAKICAgICByZXR1cm4gTlVMTDsKIH0KIAotc3RhdGljIHNob3J0IHNsb3RvZmZzZXRzW10gPSB7CitzdGF0aWMgY29uc3Qgc2hvcnQgc2xvdG9mZnNldHNbXSA9IHsKICAgICAtMSwgLyogaW52YWxpZCBzbG90ICovCiAjaW5jbHVkZSAidHlwZXNsb3RzLmluYyIKIH07CkBAIC0yODAzLDEzICsyODQ4LDE2IEBACiAgICAgLyogU2V0IHR5cGUuX19tb2R1bGVfXyAqLwogICAgIHMgPSBzdHJyY2hyKHNwZWMtPm5hbWUsICcuJyk7CiAgICAgaWYgKHMgIT0gTlVMTCkgeworICAgICAgICBpbnQgZXJyOwogICAgICAgICBtb2RuYW1lID0gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKAogICAgICAgICAgICAgICAgIHNwZWMtPm5hbWUsIChQeV9zc2l6ZV90KShzIC0gc3BlYy0+bmFtZSkpOwogICAgICAgICBpZiAobW9kbmFtZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KLSAgICAgICAgX1B5RGljdF9TZXRJdGVtSWQodHlwZS0+dHBfZGljdCwgJlB5SWRfX19tb2R1bGVfXywgbW9kbmFtZSk7CisgICAgICAgIGVyciA9IF9QeURpY3RfU2V0SXRlbUlkKHR5cGUtPnRwX2RpY3QsICZQeUlkX19fbW9kdWxlX18sIG1vZG5hbWUpOwogICAgICAgICBQeV9ERUNSRUYobW9kbmFtZSk7CisgICAgICAgIGlmIChlcnIgIT0gMCkKKyAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCiAgICAgICAgICAgICAgICAgImJ1aWx0aW4gdHlwZSAlLjIwMHMgaGFzIG5vIF9fbW9kdWxlX18gYXR0cmlidXRlIiwKQEAgLTM2MTEsNyArMzY1OSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLWNvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY2hhciogYXR0cikKK2NvbXBhdGlibGVfZm9yX2Fzc2lnbm1lbnQoUHlUeXBlT2JqZWN0KiBvbGR0bywgUHlUeXBlT2JqZWN0KiBuZXd0bywgY29uc3QgY2hhciogYXR0cikKIHsKICAgICBQeVR5cGVPYmplY3QgKm5ld2Jhc2UsICpvbGRiYXNlOwogCkBAIC0zNzg3LDcgKzM4MzUsNyBAQAogICAgIHJldHVybiBQeUltcG9ydF9JbXBvcnQoY29weXJlZ19zdHIpOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVR5cGVfR2V0U2xvdE5hbWVzKFB5VHlwZU9iamVjdCAqY2xzKQogewogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtMzg0MCw3ICszODg4LDcgQEAKICAgICByZXR1cm4gc2xvdG5hbWVzOwogfQogCi1QeV9MT0NBTChQeU9iamVjdCAqKQorc3RhdGljIFB5T2JqZWN0ICoKIF9QeU9iamVjdF9HZXRTdGF0ZShQeU9iamVjdCAqb2JqLCBpbnQgcmVxdWlyZWQpCiB7CiAgICAgUHlPYmplY3QgKnN0YXRlOwpAQCAtMzg4Nyw2ICszOTM1LDI0IEBACiAgICAgICAgIH0KIAogICAgICAgICBhc3NlcnQoc2xvdG5hbWVzID09IFB5X05vbmUgfHwgUHlMaXN0X0NoZWNrKHNsb3RuYW1lcykpOworICAgICAgICBpZiAocmVxdWlyZWQpIHsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgYmFzaWNzaXplID0gUHlCYXNlT2JqZWN0X1R5cGUudHBfYmFzaWNzaXplOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfZGljdG9mZnNldCkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfd2Vha2xpc3RvZmZzZXQpCisgICAgICAgICAgICAgICAgYmFzaWNzaXplICs9IHNpemVvZihQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSkKKyAgICAgICAgICAgICAgICBiYXNpY3NpemUgKz0gc2l6ZW9mKFB5T2JqZWN0ICopICogUHlfU0laRShzbG90bmFtZXMpOworICAgICAgICAgICAgaWYgKG9iai0+b2JfdHlwZS0+dHBfYmFzaWNzaXplID4gYmFzaWNzaXplKSB7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHNsb3RuYW1lcyk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN0YXRlKTsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FuJ3QgcGlja2xlICUuMjAwcyBvYmplY3RzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShvYmopLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCiAgICAgICAgIGlmIChzbG90bmFtZXMgIT0gUHlfTm9uZSAmJiBQeV9TSVpFKHNsb3RuYW1lcykgPiAwKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqc2xvdHM7CiAgICAgICAgICAgICBQeV9zc2l6ZV90IHNsb3RuYW1lc19zaXplLCBpOwpAQCAtMzk0MSw3ICs0MDA3LDcgQEAKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLyogSWYgd2UgZm91bmQgc29tZSBzbG90IGF0dHJpYnV0ZXMsIHBhY2sgdGhlbSBpbiBhIHR1cGxlIGFsb25nCi0gICAgICAgICAgICAgICB0aGUgb3JnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KKyAgICAgICAgICAgICAgIHRoZSBvcmlnaW5hbCBhdHRyaWJ1dGUgZGljdGlvbmFyeS4gKi8KICAgICAgICAgICAgIGlmIChQeURpY3RfU2l6ZShzbG90cykgPiAwKSB7CiAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN0YXRlMjsKIApAQCAtMzk2OCw3ICs0MDM0LDcgQEAKICAgICByZXR1cm4gc3RhdGU7CiB9CiAKLVB5X0xPQ0FMKGludCkKK3N0YXRpYyBpbnQKIF9QeU9iamVjdF9HZXROZXdBcmd1bWVudHMoUHlPYmplY3QgKm9iaiwgUHlPYmplY3QgKiphcmdzLCBQeU9iamVjdCAqKmt3YXJncykKIHsKICAgICBQeU9iamVjdCAqZ2V0bmV3YXJncywgKmdldG5ld2FyZ3NfZXg7CkBAIC00MDY0LDcgKzQxMzAsNyBAQAogICAgIHJldHVybiAwOwogfQogCi1QeV9MT0NBTChpbnQpCitzdGF0aWMgaW50CiBfUHlPYmplY3RfR2V0SXRlbXNJdGVyKFB5T2JqZWN0ICpvYmosIFB5T2JqZWN0ICoqbGlzdGl0ZW1zLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmRpY3RpdGVtcykKIHsKQEAgLTQxMTAsNyArNDE3Niw3IEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1yZWR1Y2VfbmV3b2JqKFB5T2JqZWN0ICpvYmosIGludCBwcm90bykKK3JlZHVjZV9uZXdvYmooUHlPYmplY3QgKm9iaikKIHsKICAgICBQeU9iamVjdCAqYXJncyA9IE5VTEwsICprd2FyZ3MgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpjb3B5cmVnOwpAQCAtNDE2Myw3ICs0MjI5LDcgQEAKICAgICAgICAgfQogICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0KLSAgICBlbHNlIGlmIChwcm90byA+PSA0KSB7CisgICAgZWxzZSBpZiAoYXJncyAhPSBOVUxMKSB7CiAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fbmV3b2JqX2V4X18pOwogCiAgICAgICAgIG5ld29iaiA9IF9QeU9iamVjdF9HZXRBdHRySWQoY29weXJlZywgJlB5SWRfX19uZXdvYmpfZXhfXyk7CkBAIC00MTgyLDEzICs0MjQ4LDkgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAibXVzdCB1c2UgcHJvdG9jb2wgNCBvciBncmVhdGVyIHRvIGNvcHkgdGhpcyAiCi0gICAgICAgICAgICAgICAgICAgICAgICAib2JqZWN0OyBzaW5jZSBfX2dldG5ld2FyZ3NfZXhfXyByZXR1cm5lZCAiCi0gICAgICAgICAgICAgICAgICAgICAgICAia2V5d29yZCBhcmd1bWVudHMuIik7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKKyAgICAgICAgLyogYXJncyA9PSBOVUxMICovCiAgICAgICAgIFB5X0RFQ1JFRihrd2FyZ3MpOwotICAgICAgICBQeV9ERUNSRUYoY29weXJlZyk7CisgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKQEAgLTQyMzYsNyArNDI5OCw3IEBACiAgICAgUHlPYmplY3QgKmNvcHlyZWcsICpyZXM7CiAKICAgICBpZiAocHJvdG8gPj0gMikKLSAgICAgICAgcmV0dXJuIHJlZHVjZV9uZXdvYmooc2VsZiwgcHJvdG8pOworICAgICAgICByZXR1cm4gcmVkdWNlX25ld29iaihzZWxmKTsKIAogICAgIGNvcHlyZWcgPSBpbXBvcnRfY29weXJlZygpOwogICAgIGlmICghY29weXJlZykKQEAgLTQzMTgsNiArNDM4MCwxOCBAQAogIk5vdEltcGxlbWVudGVkLCB0aGUgbm9ybWFsIGFsZ29yaXRobSBpcyB1c2VkLiAgT3RoZXJ3aXNlLCBpdFxuIgogIm92ZXJyaWRlcyB0aGUgbm9ybWFsIGFsZ29yaXRobSAoYW5kIHRoZSBvdXRjb21lIGlzIGNhY2hlZCkuXG4iKTsKIAorc3RhdGljIFB5T2JqZWN0ICoKK29iamVjdF9pbml0X3N1YmNsYXNzKFB5T2JqZWN0ICpjbHMsIFB5T2JqZWN0ICphcmcpCit7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKK1B5RG9jX1NUUlZBUihvYmplY3RfaW5pdF9zdWJjbGFzc19kb2MsCisiVGhpcyBtZXRob2QgaXMgY2FsbGVkIHdoZW4gYSBjbGFzcyBpcyBzdWJjbGFzc2VkLlxuIgorIlxuIgorIlRoZSBkZWZhdWx0IGltcGxlbWVudGF0aW9uIGRvZXMgbm90aGluZy4gSXQgbWF5IGJlXG4iCisib3ZlcnJpZGRlbiB0byBleHRlbmQgc3ViY2xhc3Nlcy5cbiIpOworCiAvKgogICAgZnJvbSBQRVAgMzEwMSwgdGhpcyBjb2RlIGltcGxlbWVudHM6CiAKQEAgLTQ0MjIsNiArNDQ5Niw4IEBACiAgICAgIFB5RG9jX1NUUigiaGVscGVyIGZvciBwaWNrbGUiKX0sCiAgICAgeyJfX3N1YmNsYXNzaG9va19fIiwgb2JqZWN0X3N1YmNsYXNzaG9vaywgTUVUSF9DTEFTUyB8IE1FVEhfVkFSQVJHUywKICAgICAgb2JqZWN0X3N1YmNsYXNzaG9va19kb2N9LAorICAgIHsiX19pbml0X3N1YmNsYXNzX18iLCBvYmplY3RfaW5pdF9zdWJjbGFzcywgTUVUSF9DTEFTUyB8IE1FVEhfTk9BUkdTLAorICAgICBvYmplY3RfaW5pdF9zdWJjbGFzc19kb2N9LAogICAgIHsiX19mb3JtYXRfXyIsIG9iamVjdF9mb3JtYXQsIE1FVEhfVkFSQVJHUywKICAgICAgUHlEb2NfU1RSKCJkZWZhdWx0IG9iamVjdCBmb3JtYXR0ZXIiKX0sCiAgICAgeyJfX3NpemVvZl9fIiwgb2JqZWN0X3NpemVvZiwgTUVUSF9OT0FSR1MsCkBAIC01MzczLDcgKzU0NDksNyBAQAogLyogSGVscGVyIHRvIGNoZWNrIGZvciBvYmplY3QuX19zZXRhdHRyX18gb3IgX19kZWxhdHRyX18gYXBwbGllZCB0byBhIHR5cGUuCiAgICBUaGlzIGlzIGNhbGxlZCB0aGUgQ2FybG8gVmVycmUgaGFjayBhZnRlciBpdHMgZGlzY292ZXJlci4gKi8KIHN0YXRpYyBpbnQKLWhhY2tjaGVjayhQeU9iamVjdCAqc2VsZiwgc2V0YXR0cm9mdW5jIGZ1bmMsIGNoYXIgKndoYXQpCitoYWNrY2hlY2soUHlPYmplY3QgKnNlbGYsIHNldGF0dHJvZnVuYyBmdW5jLCBjb25zdCBjaGFyICp3aGF0KQogewogICAgIFB5VHlwZU9iamVjdCAqdHlwZSA9IFB5X1RZUEUoc2VsZik7CiAgICAgd2hpbGUgKHR5cGUgJiYgdHlwZS0+dHBfZmxhZ3MgJiBQeV9UUEZMQUdTX0hFQVBUWVBFKQpAQCAtNTY2MCw3ICs1NzM2LDcgQEAKIEZVTkNOQU1FKFB5T2JqZWN0ICpzZWxmKSBcCiB7IFwKICAgICBfUHlfc3RhdGljX3N0cmluZyhpZCwgT1BTVFIpOyBcCi0gICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZpZCwgIigpIik7IFwKKyAgICByZXR1cm4gY2FsbF9tZXRob2Qoc2VsZiwgJmlkLCBOVUxMKTsgXAogfQogCiAjZGVmaW5lIFNMT1QxKEZVTkNOQU1FLCBPUFNUUiwgQVJHMVRZUEUsIEFSR0NPREVTKSBcCkBAIC01NzUzLDcgKzU4MjksNyBAQAogc3RhdGljIFB5X3NzaXplX3QKIHNsb3Rfc3FfbGVuZ3RoKFB5T2JqZWN0ICpzZWxmKQogewotICAgIFB5T2JqZWN0ICpyZXMgPSBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2xlbl9fLCAiKCkiKTsKKyAgICBQeU9iamVjdCAqcmVzID0gY2FsbF9tZXRob2Qoc2VsZiwgJlB5SWRfX19sZW5fXywgTlVMTCk7CiAgICAgUHlfc3NpemVfdCBsZW47CiAKICAgICBpZiAocmVzID09IE5VTEwpCkBAIC01Nzc0LDM4ICs1ODUwLDM5IEBACiBzdGF0aWMgUHlPYmplY3QgKgogc2xvdF9zcV9pdGVtKFB5T2JqZWN0ICpzZWxmLCBQeV9zc2l6ZV90IGkpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMsICphcmdzID0gTlVMTCwgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZnVuYywgKml2YWwgPSBOVUxMLCAqcmV0dmFsID0gTlVMTDsKICAgICBkZXNjcmdldGZ1bmMgZjsKIAogICAgIGZ1bmMgPSBfUHlUeXBlX0xvb2t1cElkKFB5X1RZUEUoc2VsZiksICZQeUlkX19fZ2V0aXRlbV9fKTsKLSAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGlmICgoZiA9IFB5X1RZUEUoZnVuYyktPnRwX2Rlc2NyX2dldCkgPT0gTlVMTCkKLSAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBmdW5jID0gZihmdW5jLCBzZWxmLCAoUHlPYmplY3QgKikoUHlfVFlQRShzZWxmKSkpOwotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGl2YWwgPSBQeUxvbmdfRnJvbVNzaXplX3QoaSk7Ci0gICAgICAgIGlmIChpdmFsICE9IE5VTEwpIHsKLSAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygxKTsKLSAgICAgICAgICAgIGlmIChhcmdzICE9IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIGl2YWwpOwotICAgICAgICAgICAgICAgIHJldHZhbCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJncywgTlVMTCk7Ci0gICAgICAgICAgICAgICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGZ1bmMpOwotICAgICAgICAgICAgICAgIHJldHVybiByZXR2YWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSB7CisgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewogICAgICAgICBQeU9iamVjdCAqZ2V0aXRlbV9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdChQeUV4Y19BdHRyaWJ1dGVFcnJvciwgZ2V0aXRlbV9zdHIpOworICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9Ci0gICAgUHlfWERFQ1JFRihhcmdzKTsKLSAgICBQeV9YREVDUkVGKGl2YWwpOwotICAgIFB5X1hERUNSRUYoZnVuYyk7CisKKyAgICBmID0gUHlfVFlQRShmdW5jKS0+dHBfZGVzY3JfZ2V0OworICAgIGlmIChmID09IE5VTEwpIHsKKyAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZnVuYyA9IGYoZnVuYywgc2VsZiwgKFB5T2JqZWN0ICopKFB5X1RZUEUoc2VsZikpKTsKKyAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBpdmFsID0gUHlMb25nX0Zyb21Tc2l6ZV90KGkpOworICAgIGlmIChpdmFsID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbEFyZzEoZnVuYywgaXZhbCk7CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIFB5X0RFQ1JFRihpdmFsKTsKKyAgICByZXR1cm4gcmV0dmFsOworCitlcnJvcjoKKyAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKQEAgLTU4MjcsMTkgKzU5MDQsMjAgQEAKIHN0YXRpYyBpbnQKIHNsb3Rfc3FfY29udGFpbnMoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICp2YWx1ZSkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKnJlcywgKmFyZ3M7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAgICAgaW50IHJlc3VsdCA9IC0xOwogICAgIF9QeV9JREVOVElGSUVSKF9fY29udGFpbnNfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fY29udGFpbnNfXyk7CisgICAgaWYgKGZ1bmMgPT0gUHlfTm9uZSkgeworICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAiJyUuMjAwcycgb2JqZWN0IGlzIG5vdCBhIGNvbnRhaW5lciIsCisgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHNlbGYpLT50cF9uYW1lKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBpZiAoZnVuYyAhPSBOVUxMKSB7Ci0gICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdmFsdWUpOwotICAgICAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICAgICAgcmVzID0gTlVMTDsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICB9CisgICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCB2YWx1ZSk7CiAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICAgICAgaWYgKHJlcyAhPSBOVUxMKSB7CiAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTU5MTAsNDQgKzU5ODgsNTQgQEAKIHN0YXRpYyBpbnQKIHNsb3RfbmJfYm9vbChQeU9iamVjdCAqc2VsZikKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3M7Ci0gICAgaW50IHJlc3VsdCA9IC0xOworICAgIFB5T2JqZWN0ICpmdW5jLCAqdmFsdWU7CisgICAgaW50IHJlc3VsdDsKICAgICBpbnQgdXNpbmdfbGVuID0gMDsKICAgICBfUHlfSURFTlRJRklFUihfX2Jvb2xfXyk7CiAKICAgICBmdW5jID0gbG9va3VwX21heWJlKHNlbGYsICZQeUlkX19fYm9vbF9fKTsKICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKICAgICAgICAgZnVuYyA9IGxvb2t1cF9tYXliZShzZWxmLCAmUHlJZF9fX2xlbl9fKTsKLSAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBQeUVycl9PY2N1cnJlZCgpID8gLTEgOiAxOworICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CisgICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkgeworICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CiAgICAgICAgIHVzaW5nX2xlbiA9IDE7CiAgICAgfQotICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICBpZiAoYXJncyAhPSBOVUxMKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICBpZiAodGVtcCAhPSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAodXNpbmdfbGVuKSB7Ci0gICAgICAgICAgICAgICAgLyogZW5mb3JjZWQgYnkgc2xvdF9uYl9sZW4gKi8KLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodGVtcCkpIHsKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodGVtcCk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiX19ib29sX18gc2hvdWxkIHJldHVybiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICJib29sLCByZXR1cm5lZCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodGVtcCktPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIHJlc3VsdCA9IC0xOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHRlbXApOwotICAgICAgICB9CisKKyAgICB2YWx1ZSA9IF9QeU9iamVjdF9DYWxsTm9BcmcoZnVuYyk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgZ290byBlcnJvcjsKICAgICB9CisKKyAgICBpZiAodXNpbmdfbGVuKSB7CisgICAgICAgIC8qIGJvb2wgdHlwZSBlbmZvcmNlZCBieSBzbG90X25iX2xlbiAqLworICAgICAgICByZXN1bHQgPSBQeU9iamVjdF9Jc1RydWUodmFsdWUpOworICAgIH0KKyAgICBlbHNlIGlmIChQeUJvb2xfQ2hlY2sodmFsdWUpKSB7CisgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0lzVHJ1ZSh2YWx1ZSk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIl9fYm9vbF9fIHNob3VsZCByZXR1cm4gIgorICAgICAgICAgICAgICAgICAgICAgImJvb2wsIHJldHVybmVkICVzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUodmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgcmVzdWx0ID0gLTE7CisgICAgfQorCisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgcmV0dXJuIHJlc3VsdDsKKworZXJyb3I6CisgICAgUHlfREVDUkVGKGZ1bmMpOworICAgIHJldHVybiAtMTsKIH0KIAogCkBAIC01OTU1LDcgKzYwNDMsNyBAQAogc2xvdF9uYl9pbmRleChQeU9iamVjdCAqc2VsZikKIHsKICAgICBfUHlfSURFTlRJRklFUihfX2luZGV4X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sICIoKSIpOworICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX2luZGV4X18sIE5VTEwpOwogfQogCiAKQEAgLTYxOTIsMjAgKzYyODAsMTQgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX3JpY2hjb21wYXJlKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqb3RoZXIsIGludCBvcCkKIHsKLSAgICBQeU9iamVjdCAqZnVuYywgKmFyZ3MsICpyZXM7CisgICAgUHlPYmplY3QgKmZ1bmMsICpyZXM7CiAKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmbmFtZV9vcFtvcF0pOwogICAgIGlmIChmdW5jID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgUHlfUkVUVVJOX05PVElNUExFTUVOVEVEOwogICAgIH0KLSAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIG90aGVyKTsKLSAgICBpZiAoYXJncyA9PSBOVUxMKQotICAgICAgICByZXMgPSBOVUxMOwotICAgIGVsc2UgewotICAgICAgICByZXMgPSBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIE5VTEwpOwotICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgfQorICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsQXJnMShmdW5jLCBvdGhlcik7CiAgICAgUHlfREVDUkVGKGZ1bmMpOwogICAgIHJldHVybiByZXM7CiB9CkBAIC02MjE3LDE2ICs2Mjk5LDIwIEBACiAgICAgX1B5X0lERU5USUZJRVIoX19pdGVyX18pOwogCiAgICAgZnVuYyA9IGxvb2t1cF9tZXRob2Qoc2VsZiwgJlB5SWRfX19pdGVyX18pOworICAgIGlmIChmdW5jID09IFB5X05vbmUpIHsKKyAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgaXRlcmFibGUiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzZWxmKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgICAgIGFyZ3MgPSByZXMgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgaWYgKGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbChmdW5jLCBhcmdzLCBOVUxMKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmdzKTsKLSAgICAgICAgfQorICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE5vQXJnKGZ1bmMpOwogICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CiAgICAgICAgIHJldHVybiByZXM7CiAgICAgfQorCiAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBmdW5jID0gbG9va3VwX21ldGhvZChzZWxmLCAmUHlJZF9fX2dldGl0ZW1fXyk7CiAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewpAQCAtNjI0Myw3ICs2MzI5LDcgQEAKIHNsb3RfdHBfaXRlcm5leHQoUHlPYmplY3QgKnNlbGYpCiB7CiAgICAgX1B5X0lERU5USUZJRVIoX19uZXh0X18pOwotICAgIHJldHVybiBjYWxsX21ldGhvZChzZWxmLCAmUHlJZF9fX25leHRfXywgIigpIik7CisgICAgcmV0dXJuIGNhbGxfbWV0aG9kKHNlbGYsICZQeUlkX19fbmV4dF9fLCBOVUxMKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTYzMTIsMjkgKzYzOTgsMTYgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBzbG90X3RwX25ldyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBQeU9iamVjdCAqZnVuYzsKLSAgICBQeU9iamVjdCAqbmV3YXJncywgKng7Ci0gICAgUHlfc3NpemVfdCBpLCBuOworICAgIFB5T2JqZWN0ICpmdW5jLCAqcmVzdWx0OwogCiAgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoKFB5T2JqZWN0ICopdHlwZSwgJlB5SWRfX19uZXdfXyk7Ci0gICAgaWYgKGZ1bmMgPT0gTlVMTCkKKyAgICBpZiAoZnVuYyA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGFzc2VydChQeVR1cGxlX0NoZWNrKGFyZ3MpKTsKLSAgICBuID0gUHlUdXBsZV9HRVRfU0laRShhcmdzKTsKLSAgICBuZXdhcmdzID0gUHlUdXBsZV9OZXcobisxKTsKLSAgICBpZiAobmV3YXJncyA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBQeV9JTkNSRUYodHlwZSk7Ci0gICAgUHlUdXBsZV9TRVRfSVRFTShuZXdhcmdzLCAwLCAoUHlPYmplY3QgKil0eXBlKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgIHggPSBQeVR1cGxlX0dFVF9JVEVNKGFyZ3MsIGkpOwotICAgICAgICBQeV9JTkNSRUYoeCk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmV3YXJncywgaSsxLCB4KTsKICAgICB9Ci0gICAgeCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgbmV3YXJncywga3dkcyk7Ci0gICAgUHlfREVDUkVGKG5ld2FyZ3MpOworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxfUHJlcGVuZChmdW5jLCAoUHlPYmplY3QgKil0eXBlLCBhcmdzLCBrd2RzKTsKICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgcmV0dXJuIHg7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTY5MzcsNiArNzAxMCw1OSBAQAogICAgIH0KIH0KIAorLyogQ2FsbCBfX3NldF9uYW1lX18gb24gYWxsIGRlc2NyaXB0b3JzIGluIGEgbmV3bHkgZ2VuZXJhdGVkIHR5cGUgKi8KK3N0YXRpYyBpbnQKK3NldF9uYW1lcyhQeVR5cGVPYmplY3QgKnR5cGUpCit7CisgICAgUHlPYmplY3QgKmtleSwgKnZhbHVlLCAqc2V0X25hbWUsICp0bXA7CisgICAgUHlfc3NpemVfdCBpID0gMDsKKworICAgIHdoaWxlIChQeURpY3RfTmV4dCh0eXBlLT50cF9kaWN0LCAmaSwgJmtleSwgJnZhbHVlKSkgeworICAgICAgICBzZXRfbmFtZSA9IGxvb2t1cF9tYXliZSh2YWx1ZSwgJlB5SWRfX19zZXRfbmFtZV9fKTsKKyAgICAgICAgaWYgKHNldF9uYW1lICE9IE5VTEwpIHsKKyAgICAgICAgICAgIHRtcCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Moc2V0X25hbWUsIHR5cGUsIGtleSwgTlVMTCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoc2V0X25hbWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYodG1wKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCisvKiBDYWxsIF9faW5pdF9zdWJjbGFzc19fIG9uIHRoZSBwYXJlbnQgb2YgYSBuZXdseSBnZW5lcmF0ZWQgdHlwZSAqLworc3RhdGljIGludAoraW5pdF9zdWJjbGFzcyhQeVR5cGVPYmplY3QgKnR5cGUsIFB5T2JqZWN0ICprd2RzKQoreworICAgIFB5T2JqZWN0ICpzdXBlciwgKmZ1bmMsICpyZXN1bHQ7CisgICAgUHlPYmplY3QgKmFyZ3NbMl0gPSB7KFB5T2JqZWN0ICopdHlwZSwgKFB5T2JqZWN0ICopdHlwZX07CisKKyAgICBzdXBlciA9IF9QeU9iamVjdF9GYXN0Q2FsbCgoUHlPYmplY3QgKikmUHlTdXBlcl9UeXBlLCBhcmdzLCAyKTsKKyAgICBpZiAoc3VwZXIgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgZnVuYyA9IF9QeU9iamVjdF9HZXRBdHRySWQoc3VwZXIsICZQeUlkX19faW5pdF9zdWJjbGFzc19fKTsKKyAgICBQeV9ERUNSRUYoc3VwZXIpOworICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworCisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChmdW5jLCBOVUxMLCAwLCBrd2RzKTsKKyAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBQeV9ERUNSRUYocmVzdWx0KTsKKyAgICByZXR1cm4gMDsKK30KKwogLyogcmVjdXJzZV9kb3duX3N1YmNsYXNzZXMoKSBhbmQgdXBkYXRlX3N1YmNsYXNzZXMoKSBhcmUgbXV0dWFsbHkKICAgIHJlY3Vyc2l2ZSBmdW5jdGlvbnMgdG8gY2FsbCBhIGNhbGxiYWNrIGZvciBhbGwgc3ViY2xhc3NlcywKICAgIGJ1dCByZWZyYWluaW5nIGZyb20gcmVjdXJzaW5nIGludG8gc3ViY2xhc3NlcyB0aGF0IGRlZmluZSAnbmFtZScuICovCmRpZmYgLS1naXQgYS9PYmplY3RzL3VuaWNvZGVvYmplY3QuYyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCmluZGV4IDE5NTQ5Y2QuLmFkZWVjOGMgMTAwNjQ0Ci0tLSBhL09iamVjdHMvdW5pY29kZW9iamVjdC5jCisrKyBiL09iamVjdHMvdW5pY29kZW9iamVjdC5jCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUHl0aG9uLmgiCiAjaW5jbHVkZSAidWNuaGFzaC5oIgogI2luY2x1ZGUgImJ5dGVzX21ldGhvZHMuaCIKKyNpbmNsdWRlICJzdHJpbmdsaWIvZXEuaCIKIAogI2lmZGVmIE1TX1dJTkRPV1MKICNpbmNsdWRlIDx3aW5kb3dzLmg+CkBAIC0xNjIsNiArMTYzLDE0IEBACiAgICAgICAgICAgICAqX3RvKysgPSAodG9fdHlwZSkgKl9pdGVyKys7ICAgICAgICAgICAgICAgIFwKICAgICB9IHdoaWxlICgwKQogCisjaWZkZWYgTVNfV0lORE9XUworICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKKyNlbHNlCisgICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KKyMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKKyNlbmRpZgorCiAvKiBUaGlzIGRpY3Rpb25hcnkgaG9sZHMgYWxsIGludGVybmVkIHVuaWNvZGUgc3RyaW5ncy4gIE5vdGUgdGhhdCByZWZlcmVuY2VzCiAgICB0byBzdHJpbmdzIGluIHRoaXMgZGljdGlvbmFyeSBhcmUgKm5vdCogY291bnRlZCBpbiB0aGUgc3RyaW5nJ3Mgb2JfcmVmY250LgogICAgV2hlbiB0aGUgaW50ZXJuZWQgc3RyaW5nIHJlYWNoZXMgYSByZWZjbnQgb2YgMCB0aGUgc3RyaW5nIGRlYWxsb2NhdGlvbgpAQCAtMTk1LDcgKzIwNCw3IEBACiAgICAgfSB3aGlsZSAoMCkKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbiAqLwotUHlfTE9DQUxfSU5MSU5FKGludCkKK3N0YXRpYyBpbmxpbmUgaW50CiBfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZShfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsIFB5X1VDUzQgY2gpOwogCiAvKiBMaXN0IG9mIHN0YXRpYyBzdHJpbmdzLiAqLwpAQCAtMjYzLDcgKzI3Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnJlYXNvbik7CiAKIC8qIFNhbWUgZm9yIGxpbmVicmVha3MgKi8KLXN0YXRpYyB1bnNpZ25lZCBjaGFyIGFzY2lpX2xpbmVicmVha1tdID0geworc3RhdGljIGNvbnN0IHVuc2lnbmVkIGNoYXIgYXNjaWlfbGluZWJyZWFrW10gPSB7CiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKIC8qICAgICAgICAgMHgwMDBBLCAqIExJTkUgRkVFRCAqLwogLyogICAgICAgICAweDAwMEIsICogTElORSBUQUJVTEFUSU9OICovCkBAIC0yOTIsNiArMzAxLDQ1IEBACiAKICNpbmNsdWRlICJjbGluaWMvdW5pY29kZW9iamVjdC5jLmgiCiAKK3R5cGVkZWYgZW51bSB7CisgICAgX1B5X0VSUk9SX1VOS05PV049MCwKKyAgICBfUHlfRVJST1JfU1RSSUNULAorICAgIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEUsCisgICAgX1B5X0VSUk9SX1JFUExBQ0UsCisgICAgX1B5X0VSUk9SX0lHTk9SRSwKKyAgICBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRSwKKyAgICBfUHlfRVJST1JfU1VSUk9HQVRFUEFTUywKKyAgICBfUHlfRVJST1JfWE1MQ0hBUlJFRlJFUExBQ0UsCisgICAgX1B5X0VSUk9SX09USEVSCit9IF9QeV9lcnJvcl9oYW5kbGVyOworCitzdGF0aWMgX1B5X2Vycm9yX2hhbmRsZXIKK2dldF9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycykKK3sKKyAgICBpZiAoZXJyb3JzID09IE5VTEwgfHwgc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVFJJQ1Q7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlZXNjYXBlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1JFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAiaWdub3JlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0lHTk9SRTsKKyAgICB9CisgICAgaWYgKHN0cmNtcChlcnJvcnMsICJiYWNrc2xhc2hyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX0JBQ0tTTEFTSFJFUExBQ0U7CisgICAgfQorICAgIGlmIChzdHJjbXAoZXJyb3JzLCAic3Vycm9nYXRlcGFzcyIpID09IDApIHsKKyAgICAgICAgcmV0dXJuIF9QeV9FUlJPUl9TVVJST0dBVEVQQVNTOworICAgIH0KKyAgICBpZiAoc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikgPT0gMCkgeworICAgICAgICByZXR1cm4gX1B5X0VSUk9SX1hNTENIQVJSRUZSRVBMQUNFOworICAgIH0KKyAgICByZXR1cm4gX1B5X0VSUk9SX09USEVSOworfQorCiAvKiBUaGUgbWF4IHVuaWNvZGUgdmFsdWUgaXMgYWx3YXlzIDB4MTBGRkZGIHdoaWxlIHVzaW5nIHRoZSBQRVAtMzkzIEFQSS4KICAgIFRoaXMgZnVuY3Rpb24gaXMga2VwdCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eSB3aXRoIHRoZSBvbGQgQVBJLiAqLwogUHlfVU5JQ09ERQpAQCAtNTIxLDYgKzU2OSwxMjkgQEAKICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQ29weSh1bmljb2RlKTsKIH0KIAorLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJiYWNrc2xhc2hyZXBsYWNlIiBlcnJvciBoYW5kbGVyIGZvciA4LWJpdCBlbmNvZGluZ3M6CisgICBBU0NJSSwgTGF0aW4xLCBVVEYtOCwgZXRjLiAqLworc3RhdGljIGNoYXIqCitiYWNrc2xhc2hyZXBsYWNlKF9QeUJ5dGVzV3JpdGVyICp3cml0ZXIsIGNoYXIgKnN0ciwKKyAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDB4MTAwKQorICAgICAgICAgICAgaW5jciA9IDIrMjsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOworICAgICAgICAgICAgaW5jciA9IDIrODsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gaW5jcikgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgImVuY29kZWQgcmVzdWx0IGlzIHRvbyBsb25nIGZvciBhIFB5dGhvbiBzdHJpbmciKTsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHNpemUgKz0gaW5jcjsKKyAgICB9CisKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9QcmVwYXJlKHdyaXRlciwgc3RyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgKnN0cisrID0gJ1xcJzsKKyAgICAgICAgaWYgKGNoID49IDB4MDAwMTAwMDApIHsKKyAgICAgICAgICAgICpzdHIrKyA9ICdVJzsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjI4KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MjQpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4yMCkmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjE2KSYweGZdOworICAgICAgICAgICAgKnN0cisrID0gUHlfaGV4ZGlnaXRzWyhjaD4+MTIpJjB4Zl07CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj44KSYweGZdOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwKSB7CisgICAgICAgICAgICAqc3RyKysgPSAndSc7CisgICAgICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj4xMikmMHhmXTsKKyAgICAgICAgICAgICpzdHIrKyA9IFB5X2hleGRpZ2l0c1soY2g+PjgpJjB4Zl07CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnN0cisrID0gJ3gnOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbKGNoPj40KSYweGZdOworICAgICAgICAqc3RyKysgPSBQeV9oZXhkaWdpdHNbY2gmMHhmXTsKKyAgICB9CisgICAgcmV0dXJuIHN0cjsKK30KKworLyogSW1wbGVtZW50YXRpb24gb2YgdGhlICJ4bWxjaGFycmVmcmVwbGFjZSIgZXJyb3IgaGFuZGxlciBmb3IgOC1iaXQgZW5jb2RpbmdzOgorICAgQVNDSUksIExhdGluMSwgVVRGLTgsIGV0Yy4gKi8KK3N0YXRpYyBjaGFyKgoreG1sY2hhcnJlZnJlcGxhY2UoX1B5Qnl0ZXNXcml0ZXIgKndyaXRlciwgY2hhciAqc3RyLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnVuaWNvZGUsIFB5X3NzaXplX3QgY29sbHN0YXJ0LCBQeV9zc2l6ZV90IGNvbGxlbmQpCit7CisgICAgUHlfc3NpemVfdCBzaXplLCBpOworICAgIFB5X1VDUzQgY2g7CisgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kOworICAgIHZvaWQgKmRhdGE7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0lTX1JFQURZKHVuaWNvZGUpKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworCisgICAgc2l6ZSA9IDA7CisgICAgLyogZGV0ZXJtaW5lIHJlcGxhY2VtZW50IHNpemUgKi8KKyAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgUHlfc3NpemVfdCBpbmNyOworCisgICAgICAgIGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSk7CisgICAgICAgIGlmIChjaCA8IDEwKQorICAgICAgICAgICAgaW5jciA9IDIrMSsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzIrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrMysxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNCsxOworICAgICAgICBlbHNlIGlmIChjaCA8IDEwMDAwMCkKKyAgICAgICAgICAgIGluY3IgPSAyKzUrMTsKKyAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDAwKQorICAgICAgICAgICAgaW5jciA9IDIrNisxOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICBpbmNyID0gMis3KzE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJlbmNvZGVkIHJlc3VsdCBpcyB0b28gbG9uZyBmb3IgYSBQeXRob24gc3RyaW5nIik7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICBzaXplICs9IGluY3I7CisgICAgfQorCisgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfUHJlcGFyZSh3cml0ZXIsIHN0ciwgc2l6ZSk7CisgICAgaWYgKHN0ciA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKworICAgIC8qIGdlbmVyYXRlIHJlcGxhY2VtZW50ICovCisgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7CisgICAgICAgIHN0ciArPSBzcHJpbnRmKHN0ciwgIiYjJWQ7IiwgUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgaSkpOworICAgIH0KKyAgICByZXR1cm4gc3RyOworfQorCiAvKiAtLS0gQmxvb20gRmlsdGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKiBzdHVmZiB0byBpbXBsZW1lbnQgc2ltcGxlICJibG9vbSBmaWx0ZXJzIiBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzLgpAQCAtNTQ5LDcgKzcyMCw3IEBACiAgICAgKChjaCkgPCAxMjhVID8gYXNjaWlfbGluZWJyZWFrWyhjaCldIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiAgICAgIChCTE9PTShibG9vbV9saW5lYnJlYWssIChjaCkpICYmIFB5X1VOSUNPREVfSVNMSU5FQlJFQUsoY2gpKSkKIAotUHlfTE9DQUxfSU5MSU5FKEJMT09NX01BU0spCitzdGF0aWMgaW5saW5lIEJMT09NX01BU0sKIG1ha2VfYmxvb21fbWFzayhpbnQga2luZCwgdm9pZCogcHRyLCBQeV9zc2l6ZV90IGxlbikKIHsKICNkZWZpbmUgQkxPT01fVVBEQVRFKFRZUEUsIE1BU0ssIFBUUiwgTEVOKSAgICAgICAgICAgICBcCkBAIC01ODcsNiArNzU4LDE4IEBACiAjdW5kZWYgQkxPT01fVVBEQVRFCiB9CiAKK3N0YXRpYyBpbnQKK2Vuc3VyZV91bmljb2RlKFB5T2JqZWN0ICpvYmopCit7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2sob2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIFB5VW5pY29kZV9SRUFEWShvYmopOworfQorCiAvKiBDb21waWxhdGlvbiBvZiB0ZW1wbGF0ZWQgcm91dGluZXMgKi8KIAogI2luY2x1ZGUgInN0cmluZ2xpYi9hc2NpaWxpYi5oIgpAQCAtNjQzLDMxICs4MjYsMzEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBmaXh1cChQeU9iamVjdCAqc2VsZiwgUHlfVUNTNCAoKmZpeGZjdCkoUHlPYmplY3QgKnMpKTsKIAotUHlfTE9DQUxfSU5MSU5FKFB5X3NzaXplX3QpIGZpbmRjaGFyKGNvbnN0IHZvaWQgKnMsIGludCBraW5kLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGlyZWN0aW9uKQorc3RhdGljIGlubGluZSBQeV9zc2l6ZV90CitmaW5kY2hhcihjb25zdCB2b2lkICpzLCBpbnQga2luZCwKKyAgICAgICAgIFB5X3NzaXplX3Qgc2l6ZSwgUHlfVUNTNCBjaCwKKyAgICAgICAgIGludCBkaXJlY3Rpb24pCiB7Ci0gICAgaW50IG1vZGUgPSAoZGlyZWN0aW9uID09IDEpID8gRkFTVF9TRUFSQ0ggOiBGQVNUX1JTRUFSQ0g7Ci0KICAgICBzd2l0Y2ggKGtpbmQpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgotICAgICAgICB7Ci0gICAgICAgICAgICBQeV9VQ1MxIGNoMSA9IChQeV9VQ1MxKSBjaDsKLSAgICAgICAgICAgIGlmIChjaDEgPT0gY2gpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfZmFzdHNlYXJjaCgoUHlfVUNTMSAqKSBzLCBzaXplLCAmY2gxLCAxLCAwLCBtb2RlKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKChQeV9VQ1MxKSBjaCAhPSBjaCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgaWYgKGRpcmVjdGlvbiA+IDApCisgICAgICAgICAgICByZXR1cm4gdWNzMWxpYl9maW5kX2NoYXIoKFB5X1VDUzEgKikgcywgc2l6ZSwgKFB5X1VDUzEpIGNoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmV0dXJuIHVjczFsaWJfcmZpbmRfY2hhcigoUHlfVUNTMSAqKSBzLCBzaXplLCAoUHlfVUNTMSkgY2gpOwogICAgIGNhc2UgUHlVbmljb2RlXzJCWVRFX0tJTkQ6Ci0gICAgICAgIHsKLSAgICAgICAgICAgIFB5X1VDUzIgY2gyID0gKFB5X1VDUzIpIGNoOwotICAgICAgICAgICAgaWYgKGNoMiA9PSBjaCkKLSAgICAgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9mYXN0c2VhcmNoKChQeV9VQ1MyICopIHMsIHNpemUsICZjaDIsIDEsIDAsIG1vZGUpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQorICAgICAgICBpZiAoKFB5X1VDUzIpIGNoICE9IGNoKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3MybGliX2ZpbmRfY2hhcigoUHlfVUNTMiAqKSBzLCBzaXplLCAoUHlfVUNTMikgY2gpOworICAgICAgICBlbHNlCisgICAgICAgICAgICByZXR1cm4gdWNzMmxpYl9yZmluZF9jaGFyKChQeV9VQ1MyICopIHMsIHNpemUsIChQeV9VQ1MyKSBjaCk7CiAgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDoKLSAgICAgICAgcmV0dXJuIHVjczRsaWJfZmFzdHNlYXJjaCgoUHlfVUNTNCAqKSBzLCBzaXplLCAmY2gsIDEsIDAsIG1vZGUpOworICAgICAgICBpZiAoZGlyZWN0aW9uID4gMCkKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX2ZpbmRfY2hhcigoUHlfVUNTNCAqKSBzLCBzaXplLCBjaCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJldHVybiB1Y3M0bGliX3JmaW5kX2NoYXIoKFB5X1VDUzQgKikgcywgc2l6ZSwgY2gpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIGFzc2VydCgwKTsKICAgICAgICAgcmV0dXJuIC0xOwpAQCAtODY1LDcgKzEwNDgsNyBAQAogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGNvcHlfbGVuZ3RoID0gX1B5VW5pY29kZV9XU1RSX0xFTkdUSCh1bmljb2RlKTsKICAgICAgICAgY29weV9sZW5ndGggPSBQeV9NSU4oY29weV9sZW5ndGgsIGxlbmd0aCk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1dTVFIodyksIF9QeVVuaWNvZGVfV1NUUih1bmljb2RlKSwKKyAgICAgICAgbWVtY3B5KF9QeVVuaWNvZGVfV1NUUih3KSwgX1B5VW5pY29kZV9XU1RSKHVuaWNvZGUpLAogICAgICAgICAgICAgICAgICAgY29weV9sZW5ndGggKiBzaXplb2Yod2NoYXJfdCkpOwogICAgICAgICByZXR1cm4gdzsKICAgICB9CkBAIC0xMjUyLDcgKzE0MzUsNyBAQAogICAgICAgICAgICAgaWYgKG1heF9jaGFyID49IDEyOCkKICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KLSAgICAgICAgUHlfTUVNQ1BZKChjaGFyKil0b19kYXRhICsgdG9fa2luZCAqIHRvX3N0YXJ0LAorICAgICAgICBtZW1jcHkoKGNoYXIqKXRvX2RhdGEgKyB0b19raW5kICogdG9fc3RhcnQsCiAgICAgICAgICAgICAgICAgICAoY2hhciopZnJvbV9kYXRhICsgZnJvbV9raW5kICogZnJvbV9zdGFydCwKICAgICAgICAgICAgICAgICAgIHRvX2tpbmQgKiBob3dfbWFueSk7CiAgICAgfQpAQCAtMTg0NSw3ICsyMDI4LDcgQEAKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKICNpZiBQeV9VTklDT0RFX1NJWkUgPT0gMgotICAgICAgICBQeV9NRU1DUFkoUHlVbmljb2RlXzJCWVRFX0RBVEEodW5pY29kZSksIHUsIHNpemUgKiAyKTsKKyAgICAgICAgbWVtY3B5KFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogMik7CiAjZWxzZQogICAgICAgICBfUHlVbmljb2RlX0NPTlZFUlRfQllURVMoUHlfVU5JQ09ERSwgUHlfVUNTMiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdSwgdSArIHNpemUsIFB5VW5pY29kZV8yQllURV9EQVRBKHVuaWNvZGUpKTsKQEAgLTE4NTgsNyArMjA0MSw3IEBACiAgICAgICAgIHVuaWNvZGVfY29udmVydF93Y2hhcl90b191Y3M0KHUsIHUgKyBzaXplLCB1bmljb2RlKTsKICNlbHNlCiAgICAgICAgIGFzc2VydChudW1fc3Vycm9nYXRlcyA9PSAwKTsKLSAgICAgICAgUHlfTUVNQ1BZKFB5VW5pY29kZV80QllURV9EQVRBKHVuaWNvZGUpLCB1LCBzaXplICogNCk7CisgICAgICAgIG1lbWNweShQeVVuaWNvZGVfNEJZVEVfREFUQSh1bmljb2RlKSwgdSwgc2l6ZSAqIDQpOwogI2VuZGlmCiAgICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xOTYwLDcgKzIxNDMsNyBAQAogICAgIH0KIH0KIAotUHlfTE9DQUxfSU5MSU5FKFB5X1VDUzQpCitzdGF0aWMgaW5saW5lIFB5X1VDUzQKIGFsaWduX21heGNoYXIoUHlfVUNTNCBtYXhjaGFyKQogewogICAgIGlmIChtYXhjaGFyIDw9IDEyNykKQEAgLTIxNjksNyArMjM1Miw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGFzc2VydChQeVVuaWNvZGVfS0lORChjb3B5KSA9PSBQeVVuaWNvZGVfS0lORCh1bmljb2RlKSk7CiAKLSAgICBQeV9NRU1DUFkoUHlVbmljb2RlX0RBVEEoY29weSksIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShQeVVuaWNvZGVfREFUQShjb3B5KSwgUHlVbmljb2RlX0RBVEEodW5pY29kZSksCiAgICAgICAgICAgICAgIGxlbmd0aCAqIFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KGNvcHksIDEpKTsKICAgICByZXR1cm4gY29weTsKQEAgLTIyNzUsNyArMjQ1OCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBhc3NlcnQoa2luZCA9PSBQeVVuaWNvZGVfNEJZVEVfS0lORCk7Ci0gICAgICAgIFB5X01FTUNQWSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CisgICAgICAgIG1lbWNweSh0YXJnZXQsIGRhdGEsIGxlbiAqIHNpemVvZihQeV9VQ1M0KSk7CiAgICAgfQogICAgIGlmIChjb3B5X251bGwpCiAgICAgICAgIHRhcmdldFtsZW5dID0gMDsKQEAgLTI0NTgsMTMgKzI2NDEsMTEgQEAKICAgICAgICAgICAgIGxvbmdmbGFnID0gMTsKICAgICAgICAgICAgICsrZjsKICAgICAgICAgfQotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgICAgIGVsc2UgaWYgKGZbMV0gPT0gJ2wnICYmCiAgICAgICAgICAgICAgICAgIChmWzJdID09ICdkJyB8fCBmWzJdID09ICd1JyB8fCBmWzJdID09ICdpJykpIHsKICAgICAgICAgICAgIGxvbmdsb25nZmxhZyA9IDE7CiAgICAgICAgICAgICBmICs9IDI7CiAgICAgICAgIH0KLSNlbmRpZgogICAgIH0KICAgICAvKiBoYW5kbGUgdGhlIHNpemVfdCBmbGFnLiAqLwogICAgIGVsc2UgaWYgKCpmID09ICd6JyAmJiAoZlsxXSA9PSAnZCcgfHwgZlsxXSA9PSAndScgfHwgZlsxXSA9PSAnaScpKSB7CkBAIC0yNTAyLDExICsyNjgzLDkgQEAKICAgICAgICAgICAgIGlmIChsb25nZmxhZykKICAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsdSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCB1bnNpZ25lZCBsb25nKSk7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgICAgIGVsc2UgaWYgKGxvbmdsb25nZmxhZykKLSAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiUiIFBZX0ZPUk1BVF9MT05HX0xPTkcgInUiLAotICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgUFlfTE9OR19MT05HKSk7Ci0jZW5kaWYKKyAgICAgICAgICAgICAgICBsZW4gPSBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLAorICAgICAgICAgICAgICAgICAgICAgICAgdmFfYXJnKCp2YXJncywgdW5zaWduZWQgbG9uZyBsb25nKSk7CiAgICAgICAgICAgICBlbHNlIGlmIChzaXplX3RmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX1NJWkVfVCAidSIsCiAgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBzaXplX3QpKTsKQEAgLTI1MjEsMTEgKzI3MDAsOSBAQAogICAgICAgICAgICAgaWYgKGxvbmdmbGFnKQogICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIGxvbmcpKTsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwogICAgICAgICAgICAgZWxzZSBpZiAobG9uZ2xvbmdmbGFnKQotICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJSIgUFlfRk9STUFUX0xPTkdfTE9ORyAiaSIsCi0gICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgICAgIGxlbiA9IHNwcmludGYoYnVmZmVyLCAiJWxsaSIsCisgICAgICAgICAgICAgICAgICAgICAgICB2YV9hcmcoKnZhcmdzLCBsb25nIGxvbmcpKTsKICAgICAgICAgICAgIGVsc2UgaWYgKHNpemVfdGZsYWcpCiAgICAgICAgICAgICAgICAgbGVuID0gc3ByaW50ZihidWZmZXIsICIlIiBQWV9GT1JNQVRfU0laRV9UICJpIiwKICAgICAgICAgICAgICAgICAgICAgICAgIHZhX2FyZygqdmFyZ3MsIFB5X3NzaXplX3QpKTsKQEAgLTI3MDEsOSArMjg3OCw4IEBACiAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzdHJsZW4oZm9ybWF0KSArIDEwMDsKICAgICB3cml0ZXIub3ZlcmFsbG9jYXRlID0gMTsKIAotICAgIC8qIHZhX2xpc3QgbWF5IGJlIGFuIGFycmF5IChvZiAxIGl0ZW0pIG9uIHNvbWUgcGxhdGZvcm1zIChleDogQU1ENjQpLgotICAgICAgIENvcHkgaXQgdG8gYmUgYWJsZSB0byBwYXNzIGEgcmVmZXJlbmNlIHRvIGEgc3ViZnVuY3Rpb24uICovCi0gICAgUHlfVkFfQ09QWSh2YXJnczIsIHZhcmdzKTsKKyAgICAvLyBDb3B5IHZhcmFncyB0byBiZSBhYmxlIHRvIHBhc3MgYSByZWZlcmVuY2UgdG8gYSBzdWJmdW5jdGlvbi4KKyAgICB2YV9jb3B5KHZhcmdzMiwgdmFyZ3MpOwogCiAgICAgZm9yIChmID0gZm9ybWF0OyAqZjsgKSB7CiAgICAgICAgIGlmICgqZiA9PSAnJScpIHsKQEAgLTI3MzksOSArMjkxNSwxMSBAQAogICAgICAgICAgICAgZiA9IHA7CiAgICAgICAgIH0KICAgICB9CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZ3cml0ZXIpOwogCiAgIGZhaWw6CisgICAgdmFfZW5kKHZhcmdzMik7CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtMjc5MCw3ICsyOTY4LDcgQEAKICAgICAgICAgICAgIHNpemUgPSByZXMgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXMgPSBzaXplOwotICAgICAgICBQeV9NRU1DUFkodywgd3N0ciwgc2l6ZSAqIHNpemVvZih3Y2hhcl90KSk7CisgICAgICAgIG1lbWNweSh3LCB3c3RyLCBzaXplICogc2l6ZW9mKHdjaGFyX3QpKTsKICAgICAgICAgcmV0dXJuIHJlczsKICAgICB9CiAgICAgZWxzZQpAQCAtMjkwNyw3ICszMDg1LDcgQEAKICAgICAvKiBSZXRyaWV2ZSBhIGJ5dGVzIGJ1ZmZlciB2aWV3IHRocm91Z2ggdGhlIFBFUCAzMTE4IGJ1ZmZlciBpbnRlcmZhY2UgKi8KICAgICBpZiAoUHlPYmplY3RfR2V0QnVmZmVyKG9iaiwgJmJ1ZmZlciwgUHlCVUZfU0lNUExFKSA8IDApIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICJjb2VyY2luZyB0byBzdHI6IG5lZWQgYSBieXRlcy1saWtlIG9iamVjdCwgJS44MHMgZm91bmQiLAorICAgICAgICAgICAgICAgICAgICAgImRlY29kaW5nIHRvIHN0cjogbmVlZCBhIGJ5dGVzLWxpa2Ugb2JqZWN0LCAlLjgwcyBmb3VuZCIsCiAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG9iaiktPnRwX25hbWUpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CkBAIC0yOTIyLDkgKzMxMDAsOSBAQAogICAgIHJldHVybiB2OwogfQogCi0vKiBDb252ZXJ0IGVuY29kaW5nIHRvIGxvd2VyIGNhc2UgYW5kIHJlcGxhY2UgJ18nIHdpdGggJy0nIGluIG9yZGVyIHRvCi0gICBjYXRjaCBlLmcuIFVURl84LiBSZXR1cm4gMCBvbiBlcnJvciAoZW5jb2RpbmcgaXMgbG9uZ2VyIHRoYW4gbG93ZXJfbGVuLTEpLAotICAgMSBvbiBzdWNjZXNzLiAqLworLyogTm9ybWFsaXplIGFuIGVuY29kaW5nIG5hbWU6IHNpbWlsYXIgdG8gZW5jb2RpbmdzLm5vcm1hbGl6ZV9lbmNvZGluZygpLCBidXQKKyAgIGFsc28gY29udmVydCB0byBsb3dlcmNhc2UuIFJldHVybiAxIG9uIHN1Y2Nlc3MsIG9yIDAgb24gZXJyb3IgKGVuY29kaW5nIGlzCisgICBsb25nZXIgdGhhbiBsb3dlcl9sZW4tMSkuICovCiBpbnQKIF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoY29uc3QgY2hhciAqZW5jb2RpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKmxvd2VyLApAQCAtMjkzMywzMCArMzExMSwzOSBAQAogICAgIGNvbnN0IGNoYXIgKmU7CiAgICAgY2hhciAqbDsKICAgICBjaGFyICpsX2VuZDsKKyAgICBpbnQgcHVuY3Q7CiAKLSAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgewotICAgICAgICAvKiA2ID09IHN0cmxlbigidXRmLTgiKSArIDEgKi8KLSAgICAgICAgaWYgKGxvd2VyX2xlbiA8IDYpCi0gICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgc3RyY3B5KGxvd2VyLCAidXRmLTgiKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQorICAgIGFzc2VydChlbmNvZGluZyAhPSBOVUxMKTsKKwogICAgIGUgPSBlbmNvZGluZzsKICAgICBsID0gbG93ZXI7CiAgICAgbF9lbmQgPSAmbG93ZXJbbG93ZXJfbGVuIC0gMV07Ci0gICAgd2hpbGUgKCplKSB7Ci0gICAgICAgIGlmIChsID09IGxfZW5kKQotICAgICAgICAgICAgcmV0dXJuIDA7Ci0gICAgICAgIGlmIChQeV9JU1VQUEVSKCplKSkgewotICAgICAgICAgICAgKmwrKyA9IFB5X1RPTE9XRVIoKmUrKyk7CisgICAgcHVuY3QgPSAwOworICAgIHdoaWxlICgxKSB7CisgICAgICAgIGNoYXIgYyA9ICplOworICAgICAgICBpZiAoYyA9PSAwKSB7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmICgqZSA9PSAnXycpIHsKLSAgICAgICAgICAgICpsKysgPSAnLSc7Ci0gICAgICAgICAgICBlKys7CisKKyAgICAgICAgaWYgKFB5X0lTQUxOVU0oYykgfHwgYyA9PSAnLicpIHsKKyAgICAgICAgICAgIGlmIChwdW5jdCAmJiBsICE9IGxvd2VyKSB7CisgICAgICAgICAgICAgICAgaWYgKGwgPT0gbF9lbmQpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICpsKysgPSAnXyc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBwdW5jdCA9IDA7CisKKyAgICAgICAgICAgIGlmIChsID09IGxfZW5kKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAqbCsrID0gUHlfVE9MT1dFUihjKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICpsKysgPSAqZSsrOworICAgICAgICAgICAgcHVuY3QgPSAxOwogICAgICAgICB9CisKKyAgICAgICAgZSsrOwogICAgIH0KICAgICAqbCA9ICdcMCc7CiAgICAgcmV0dXJuIDE7CkBAIC0yOTcwLDI4ICszMTU3LDUxIEBACiB7CiAgICAgUHlPYmplY3QgKmJ1ZmZlciA9IE5VTEwsICp1bmljb2RlOwogICAgIFB5X2J1ZmZlciBpbmZvOwotICAgIGNoYXIgbG93ZXJbMTFdOyAgLyogRW5vdWdoIGZvciBhbnkgZW5jb2Rpbmcgc2hvcnRjdXQgKi8KKyAgICBjaGFyIGJ1Zmxvd2VyWzExXTsgICAvKiBzdHJsZW4oImlzby04ODU5LTFcMCIpID09IDExLCBsb25nZXN0IHNob3J0Y3V0ICovCisKKyAgICBpZiAoZW5jb2RpbmcgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOworICAgIH0KIAogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBlcnJvcnMsIE5VTEwpOwotICAgICAgICBlbHNlIGlmICgoc3RyY21wKGxvd2VyLCAibGF0aW4tMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwKSB8fAotICAgICAgICAgICAgICAgICAoc3RyY21wKGxvd2VyLCAiaXNvLTg4NTktMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc284ODU5LTEiKSA9PSAwKSkKLSAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xKHMsIHNpemUsIGVycm9ycyk7Ci0jaWZkZWYgSEFWRV9NQkNTCi0gICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7Ci0jZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVBU0NJSShzLCBzaXplLCBlcnJvcnMpOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMTYiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYxNihzLCBzaXplLCBlcnJvcnMsIDApOwotICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJ1dGYtMzIiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEYzMihzLCBzaXplLCBlcnJvcnMsIDApOworICAgIGlmIChfUHlfbm9ybWFsaXplX2VuY29kaW5nKGVuY29kaW5nLCBidWZsb3dlciwgc2l6ZW9mKGJ1Zmxvd2VyKSkpIHsKKyAgICAgICAgY2hhciAqbG93ZXIgPSBidWZsb3dlcjsKKworICAgICAgICAvKiBGYXN0IHBhdGhzICovCisgICAgICAgIGlmIChsb3dlclswXSA9PSAndScgJiYgbG93ZXJbMV0gPT0gJ3QnICYmIGxvd2VyWzJdID09ICdmJykgeworICAgICAgICAgICAgbG93ZXIgKz0gMzsKKyAgICAgICAgICAgIGlmICgqbG93ZXIgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgLyogTWF0Y2ggInV0ZjgiIGFuZCAidXRmXzgiICovCisgICAgICAgICAgICAgICAgbG93ZXIrKzsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKGxvd2VyWzBdID09ICc4JyAmJiBsb3dlclsxXSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWwocywgc2l6ZSwgZXJyb3JzLCBOVUxMKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMTYocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICczJyAmJiBsb3dlclsxXSA9PSAnMicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGMzIocywgc2l6ZSwgZXJyb3JzLCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGlmIChzdHJjbXAobG93ZXIsICJhc2NpaSIpID09IDAKKyAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJ1c19hc2NpaSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUFTQ0lJKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVNQkNTKHMsIHNpemUsIGVycm9ycyk7CisgICAgICAgICAgICB9CisgICAgI2VuZGlmCisgICAgICAgICAgICBlbHNlIGlmIChzdHJjbXAobG93ZXIsICJsYXRpbjEiKSA9PSAwCisgICAgICAgICAgICAgICAgICAgICB8fCBzdHJjbXAobG93ZXIsICJsYXRpbl8xIikgPT0gMAorICAgICAgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAiaXNvXzg4NTlfMSIpID09IDAKKyAgICAgICAgICAgICAgICAgICAgIHx8IHN0cmNtcChsb3dlciwgImlzbzg4NTlfMSIpID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBzaXplLCBlcnJvcnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQogCiAgICAgLyogRGVjb2RlIHZpYSB0aGUgY29kZWMgcmVnaXN0cnkgKi8KQEAgLTMxNzEsMjQgKzMzODEsMjIgQEAKIHN0YXRpYyBpbnQKIGxvY2FsZV9lcnJvcl9oYW5kbGVyKGNvbnN0IGNoYXIgKmVycm9ycywgaW50ICpzdXJyb2dhdGVlc2NhcGUpCiB7Ci0gICAgaWYgKGVycm9ycyA9PSBOVUxMKSB7CisgICAgX1B5X2Vycm9yX2hhbmRsZXIgZXJyb3JfaGFuZGxlciA9IGdldF9lcnJvcl9oYW5kbGVyKGVycm9ycyk7CisgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKQorICAgIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAwOwogICAgICAgICByZXR1cm4gMDsKLSAgICB9Ci0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN0cmljdCIpID09IDApIHsKLSAgICAgICAgKnN1cnJvZ2F0ZWVzY2FwZSA9IDA7Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBpZiAoc3RyY21wKGVycm9ycywgInN1cnJvZ2F0ZWVzY2FwZSIpID09IDApIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVVJST0dBVEVFU0NBUEU6CiAgICAgICAgICpzdXJyb2dhdGVlc2NhcGUgPSAxOwogICAgICAgICByZXR1cm4gMDsKKyAgICBkZWZhdWx0OgorICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJvbmx5ICdzdHJpY3QnIGFuZCAnc3Vycm9nYXRlZXNjYXBlJyBlcnJvciBoYW5kbGVycyAiCisgICAgICAgICAgICAgICAgICAgICAiYXJlIHN1cHBvcnRlZCwgbm90ICclcyciLAorICAgICAgICAgICAgICAgICAgICAgZXJyb3JzKTsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLSAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKLSAgICAgICAgICAgICAgICAgIm9ubHkgJ3N0cmljdCcgYW5kICdzdXJyb2dhdGVlc2NhcGUnIGVycm9yIGhhbmRsZXJzICIKLSAgICAgICAgICAgICAgICAgImFyZSBzdXBwb3J0ZWQsIG5vdCAnJXMnIiwKLSAgICAgICAgICAgICAgICAgZXJyb3JzKTsKLSAgICByZXR1cm4gLTE7CiB9CiAKIFB5T2JqZWN0ICoKQEAgLTMzMDQsMTAgKzM1MTIsOCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChQeU9iamVjdCAqdW5pY29kZSkKIHsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgTlVMTCk7Ci0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN1cnJvZ2F0ZWVzY2FwZSIpOworI2lmIGRlZmluZWQoX19BUFBMRV9fKQorICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzMyMiwxMCArMzUyOCwxMCBAQAogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nICYmIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCkgewogICAgICAgICByZXR1cm4gUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZyh1bmljb2RlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3Vycm9nYXRlZXNjYXBlIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIHJldHVybiBQeVVuaWNvZGVfRW5jb2RlTG9jYWxlKHVuaWNvZGUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVMb2NhbGUodW5pY29kZSwgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMpOwogICAgIH0KICNlbmRpZgogfQpAQCAtMzMzNiwzNCArMzU0Miw1NiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgY2hhciBsb3dlclsxMV07ICAvKiBFbm91Z2ggZm9yIGFueSBlbmNvZGluZyBzaG9ydGN1dCAqLworICAgIGNoYXIgYnVmbG93ZXJbMTFdOyAgIC8qIHN0cmxlbigiaXNvXzg4NTlfMVwwIikgPT0gMTEsIGxvbmdlc3Qgc2hvcnRjdXQgKi8KIAogICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHVuaWNvZGUpKSB7CiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIGlmIChlbmNvZGluZyA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0FzVVRGOFN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgIH0KKwogICAgIC8qIFNob3J0Y3V0cyBmb3IgY29tbW9uIGRlZmF1bHQgZW5jb2RpbmdzICovCi0gICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGxvd2VyLCBzaXplb2YobG93ZXIpKSkgewotICAgICAgICBpZiAoKHN0cmNtcChsb3dlciwgInV0Zi04IikgPT0gMCkgfHwKLSAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJ1dGY4IikgPT0gMCkpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChlcnJvcnMgPT0gTlVMTCB8fCBzdHJjbXAoZXJyb3JzLCAic3RyaWN0IikgPT0gMCkKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgTlVMTCk7Ci0gICAgICAgICAgICBlbHNlCisgICAgaWYgKF9QeV9ub3JtYWxpemVfZW5jb2RpbmcoZW5jb2RpbmcsIGJ1Zmxvd2VyLCBzaXplb2YoYnVmbG93ZXIpKSkgeworICAgICAgICBjaGFyICpsb3dlciA9IGJ1Zmxvd2VyOworCisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGxvd2VyWzBdID09ICd1JyAmJiBsb3dlclsxXSA9PSAndCcgJiYgbG93ZXJbMl0gPT0gJ2YnKSB7CisgICAgICAgICAgICBsb3dlciArPSAzOworICAgICAgICAgICAgaWYgKCpsb3dlciA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAvKiBNYXRjaCAidXRmOCIgYW5kICJ1dGZfOCIgKi8KKyAgICAgICAgICAgICAgICBsb3dlcisrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICBpZiAobG93ZXJbMF0gPT0gJzgnICYmIGxvd2VyWzFdID09IDApIHsKICAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKGxvd2VyWzBdID09ICcxJyAmJiBsb3dlclsxXSA9PSAnNicgJiYgbG93ZXJbMl0gPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBfUHlVbmljb2RlX0VuY29kZVVURjE2KHVuaWNvZGUsIGVycm9ycywgMCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChsb3dlclswXSA9PSAnMycgJiYgbG93ZXJbMV0gPT0gJzInICYmIGxvd2VyWzJdID09IDApIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5VW5pY29kZV9FbmNvZGVVVEYzMih1bmljb2RlLCBlcnJvcnMsIDApOworICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKChzdHJjbXAobG93ZXIsICJsYXRpbi0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImxhdGluMSIpID09IDApIHx8Ci0gICAgICAgICAgICAgICAgIChzdHJjbXAobG93ZXIsICJpc28tODg1OS0xIikgPT0gMCkgfHwKLSAgICAgICAgICAgICAgICAgKHN0cmNtcChsb3dlciwgImlzbzg4NTktMSIpID09IDApKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKLSNpZmRlZiBIQVZFX01CQ1MKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibWJjcyIpID09IDApCi0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0VuY29kZUNvZGVQYWdlKENQX0FDUCwgdW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwCisgICAgICAgICAgICAgICAgfHwgc3RyY21wKGxvd2VyLCAidXNfYXNjaWkiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgfQorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICAgICAgICAgIGVsc2UgaWYgKHN0cmNtcChsb3dlciwgIm1iY3MiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9FbmNvZGVDb2RlUGFnZShDUF9BQ1AsIHVuaWNvZGUsIGVycm9ycyk7CisgICAgICAgICAgICB9CiAjZW5kaWYKLSAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAiYXNjaWkiKSA9PSAwKQotICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNBU0NJSVN0cmluZyh1bmljb2RlLCBlcnJvcnMpOworICAgICAgICAgICAgZWxzZSBpZiAoc3RyY21wKGxvd2VyLCAibGF0aW4xIikgPT0gMCB8fAorICAgICAgICAgICAgICAgICAgICAgc3RyY21wKGxvd2VyLCAibGF0aW5fMSIpID09IDAgfHwKKyAgICAgICAgICAgICAgICAgICAgIHN0cmNtcChsb3dlciwgImlzb184ODU5XzEiKSA9PSAwIHx8CisgICAgICAgICAgICAgICAgICAgICBzdHJjbXAobG93ZXIsICJpc284ODU5XzEiKSA9PSAwKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIF9QeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmcodW5pY29kZSwgZXJyb3JzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEVuY29kZSB2aWEgdGhlIGNvZGVjIHJlZ2lzdHJ5ICovCkBAIC0zNTg4LDEwICszODE2LDggQEAKIFB5T2JqZWN0KgogUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdEFuZFNpemUoY29uc3QgY2hhciAqcywgUHlfc3NpemVfdCBzaXplKQogewotI2lmZGVmIEhBVkVfTUJDUwotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlTUJDUyhzLCBzaXplLCBOVUxMKTsKLSNlbGlmIGRlZmluZWQoX19BUFBMRV9fKQotICAgIHJldHVybiBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiLCBOVUxMKTsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKKyAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBzaXplLCBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycywgTlVMTCk7CiAjZWxzZQogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaW50ZXJwID0gUHlUaHJlYWRTdGF0ZV9HRVQoKS0+aW50ZXJwOwogICAgIC8qIEJvb3RzdHJhcCBjaGVjazogaWYgdGhlIGZpbGVzeXN0ZW0gY29kZWMgaXMgaW1wbGVtZW50ZWQgaW4gUHl0aG9uLCB3ZQpAQCAtMzYwNCwxMiArMzgzMCwyNCBAQAogICAgICAgIGNhbm5vdCBvbmx5IHJlbHkgb24gaXQ6IGNoZWNrIGFsc28gaW50ZXJwLT5mc2NvZGVjX2luaXRpYWxpemVkIGZvcgogICAgICAgIHN1YmludGVycHJldGVycy4gKi8KICAgICBpZiAoUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyAmJiBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQpIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGUocywgc2l6ZSwKKyAgICAgICAgUHlPYmplY3QgKnJlcyA9IFB5VW5pY29kZV9EZWNvZGUocywgc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInN1cnJvZ2F0ZWVzY2FwZSIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyk7CisjaWZkZWYgTVNfV0lORE9XUworICAgICAgICBpZiAoIXJlcyAmJiBQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcikpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpleGMsICp2YWwsICp0YjsKKyAgICAgICAgICAgIFB5RXJyX0ZldGNoKCZleGMsICZ2YWwsICZ0Yik7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICJmaWxlc3lzdGVtIHBhdGggYnl0ZXMgd2VyZSBub3QgY29ycmVjdGx5IGVuY29kZWQgd2l0aCAnJXMnLiAiIFwKKyAgICAgICAgICAgICAgICAiUGxlYXNlIHJlcG9ydCB0aGlzIGF0IGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUyNzc4MSIsCisgICAgICAgICAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyk7CisgICAgICAgICAgICBfUHlFcnJfQ2hhaW5FeGNlcHRpb25zKGV4YywgdmFsLCB0Yik7CisgICAgICAgIH0KKyNlbmRpZgorICAgICAgICByZXR1cm4gcmVzOwogICAgIH0KICAgICBlbHNlIHsKLSAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsICJzdXJyb2dhdGVlc2NhcGUiKTsKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9EZWNvZGVMb2NhbGVBbmRTaXplKHMsIHNpemUsIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKICAgICB9CiAjZW5kaWYKIH0KQEAgLTM2MTgsNiArMzg1Niw3IEBACiBpbnQKIFB5VW5pY29kZV9GU0NvbnZlcnRlcihQeU9iamVjdCogYXJnLCB2b2lkKiBhZGRyKQogeworICAgIFB5T2JqZWN0ICpwYXRoID0gTlVMTDsKICAgICBQeU9iamVjdCAqb3V0cHV0ID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTM2MjYsMjQgKzM4NjUsMjIgQEAKICAgICAgICAgKihQeU9iamVjdCoqKWFkZHIgPSBOVUxMOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5Qnl0ZXNfQ2hlY2soYXJnKSkgewotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgIHBhdGggPSBQeU9TX0ZTUGF0aChhcmcpOworICAgIGlmIChwYXRoID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIDA7CiAgICAgfQotICAgIGVsc2UgewotICAgICAgICBhcmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChhcmcpOwotICAgICAgICBpZiAoIWFyZykKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0KGFyZyk7Ci0gICAgICAgIFB5X0RFQ1JFRihhcmcpOwotICAgICAgICBpZiAoIW91dHB1dCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSkgewotICAgICAgICAgICAgUHlfREVDUkVGKG91dHB1dCk7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAiZW5jb2RlciBmYWlsZWQgdG8gcmV0dXJuIGJ5dGVzIik7CisgICAgaWYgKFB5Qnl0ZXNfQ2hlY2socGF0aCkpIHsKKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSB7ICAvLyBQeU9TX0ZTUGF0aCgpIGd1YXJhbnRlZXMgaXRzIHJldHVybmVkIHZhbHVlIGlzIGJ5dGVzIG9yIHN0ci4KKyAgICAgICAgb3V0cHV0ID0gUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdChwYXRoKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOworICAgICAgICBpZiAoIW91dHB1dCkgewogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIH0KKyAgICAgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sob3V0cHV0KSk7CiAgICAgfQorCiAgICAgc2l6ZSA9IFB5Qnl0ZXNfR0VUX1NJWkUob3V0cHV0KTsKICAgICBkYXRhID0gUHlCeXRlc19BU19TVFJJTkcob3V0cHV0KTsKICAgICBpZiAoKHNpemVfdClzaXplICE9IHN0cmxlbihkYXRhKSkgewpAQCAtMzY1OSwzNiArMzg5Niw2MCBAQAogaW50CiBQeVVuaWNvZGVfRlNEZWNvZGVyKFB5T2JqZWN0KiBhcmcsIHZvaWQqIGFkZHIpCiB7CisgICAgaW50IGlzX2J1ZmZlciA9IDA7CisgICAgUHlPYmplY3QgKnBhdGggPSBOVUxMOwogICAgIFB5T2JqZWN0ICpvdXRwdXQgPSBOVUxMOwogICAgIGlmIChhcmcgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYoKihQeU9iamVjdCoqKWFkZHIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9DaGVjayhhcmcpKSB7Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoYXJnKSA9PSAtMSkKKworICAgIGlzX2J1ZmZlciA9IFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZyk7CisgICAgaWYgKCFpc19idWZmZXIpIHsKKyAgICAgICAgcGF0aCA9IFB5T1NfRlNQYXRoKGFyZyk7CisgICAgICAgIGlmIChwYXRoID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBhcmc7Ci0gICAgICAgIFB5X0lOQ1JFRihvdXRwdXQpOworICAgICAgICB9CiAgICAgfQotICAgIGVsc2UgaWYgKFB5T2JqZWN0X0NoZWNrQnVmZmVyKGFyZykpIHsKLSAgICAgICAgYXJnID0gUHlCeXRlc19Gcm9tT2JqZWN0KGFyZyk7Ci0gICAgICAgIGlmICghYXJnKQorICAgIGVsc2UgeworICAgICAgICBwYXRoID0gYXJnOworICAgICAgICBQeV9JTkNSRUYoYXJnKTsKKyAgICB9CisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHBhdGgpKSB7CisgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocGF0aCkgPT0gLTEpIHsKKyAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhhcmcpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0dFVF9TSVpFKGFyZykpOwotICAgICAgICBQeV9ERUNSRUYoYXJnKTsKLSAgICAgICAgaWYgKCFvdXRwdXQpCisgICAgICAgIH0KKyAgICAgICAgb3V0cHV0ID0gcGF0aDsKKyAgICB9CisgICAgZWxzZSBpZiAoUHlCeXRlc19DaGVjayhwYXRoKSB8fCBpc19idWZmZXIpIHsKKyAgICAgICAgUHlPYmplY3QgKnBhdGhfYnl0ZXMgPSBOVUxMOworCisgICAgICAgIGlmICghUHlCeXRlc19DaGVjayhwYXRoKSAmJgorICAgICAgICAgICAgUHlFcnJfV2FybkZvcm1hdChQeUV4Y19EZXByZWNhdGlvbldhcm5pbmcsIDEsCisgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKICAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhvdXRwdXQpKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYob3V0cHV0KTsKLSAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJkZWNvZGVyIGZhaWxlZCB0byByZXR1cm4gdW5pY29kZSIpOworICAgICAgICB9CisgICAgICAgIHBhdGhfYnl0ZXMgPSBQeUJ5dGVzX0Zyb21PYmplY3QocGF0aCk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoKTsKKyAgICAgICAgaWYgKCFwYXRoX2J5dGVzKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBvdXRwdXQgPSBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZShQeUJ5dGVzX0FTX1NUUklORyhwYXRoX2J5dGVzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19HRVRfU0laRShwYXRoX2J5dGVzKSk7CisgICAgICAgIFB5X0RFQ1JFRihwYXRoX2J5dGVzKTsKKyAgICAgICAgaWYgKCFvdXRwdXQpIHsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgInBhdGggc2hvdWxkIGJlIHN0cmluZyBvciBieXRlcywgbm90ICUuMjAwcyIsCisgICAgICAgICAgICAgICAgICAgICAicGF0aCBzaG91bGQgYmUgc3RyaW5nLCBieXRlcywgb3Igb3MuUGF0aExpa2UsIG5vdCAlLjIwMHMiLAogICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShhcmcpLT50cF9uYW1lKTsKKyAgICAgICAgUHlfREVDUkVGKHBhdGgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvdXRwdXQpID09IC0xKSB7CkBAIC0zNzIwLDcgKzM5ODEsNyBAQAogCiAgICAgaWYgKFB5VW5pY29kZV9VVEY4KHVuaWNvZGUpID09IE5VTEwpIHsKICAgICAgICAgYXNzZXJ0KCFQeVVuaWNvZGVfSVNfQ09NUEFDVF9BU0NJSSh1bmljb2RlKSk7Ci0gICAgICAgIGJ5dGVzID0gX1B5VW5pY29kZV9Bc1VURjhTdHJpbmcodW5pY29kZSwgInN0cmljdCIpOworICAgICAgICBieXRlcyA9IF9QeVVuaWNvZGVfQXNVVEY4U3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogICAgICAgICBpZiAoYnl0ZXMgPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICBfUHlVbmljb2RlX1VURjgodW5pY29kZSkgPSBQeU9iamVjdF9NQUxMT0MoUHlCeXRlc19HRVRfU0laRShieXRlcykgKyAxKTsKQEAgLTM3MzAsNyArMzk5MSw3IEBACiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgfQogICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpID0gUHlCeXRlc19HRVRfU0laRShieXRlcyk7Ci0gICAgICAgIFB5X01FTUNQWShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCisgICAgICAgIG1lbWNweShfUHlVbmljb2RlX1VURjgodW5pY29kZSksCiAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhieXRlcyksCiAgICAgICAgICAgICAgICAgICBfUHlVbmljb2RlX1VURjhfTEVOR1RIKHVuaWNvZGUpICsgMSk7CiAgICAgICAgIFB5X0RFQ1JFRihieXRlcyk7CkBAIC0zOTcwLDcgKzQyMzEsNyBAQAogICAgIFB5X0NMRUFSKCpleGNlcHRpb25PYmplY3QpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogLyogZXJyb3IgaGFuZGxpbmcgY2FsbGJhY2sgaGVscGVyOgogICAgYnVpbGQgYXJndW1lbnRzLCBjYWxsIHRoZSBjYWxsYmFjayBhbmQgY2hlY2sgdGhlIGFyZ3VtZW50cywKICAgIGlmIG5vIGV4Y2VwdGlvbiBvY2N1cnJlZCwgY29weSB0aGUgcmVwbGFjZW1lbnQgdG8gdGhlIG91dHB1dApAQCAtMzk4Niw3ICs0MjQ3LDcgQEAKICAgICBQeV9zc2l6ZV90ICplbmRpbnBvcywgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsIGNvbnN0IGNoYXIgKippbnB0ciwKICAgICBQeU9iamVjdCAqKm91dHB1dCwgUHlfc3NpemVfdCAqb3V0cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO2RlY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeU9iamVjdCAqcmVzdHVwbGUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsKQEAgLTQwODQsNyArNDM0NSw3IEBACiAgICAgUHlfWERFQ1JFRihyZXN0dXBsZSk7CiAgICAgcmV0dXJuIC0xOwogfQotI2VuZGlmICAgLyogSEFWRV9NQkNTICovCisjZW5kaWYgICAvKiBNU19XSU5ET1dTICovCiAKIHN0YXRpYyBpbnQKIHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKQEAgLTQwOTQsNyArNDM1NSw3IEBACiAgICAgUHlfc3NpemVfdCAqZW5kaW5wb3MsIFB5T2JqZWN0ICoqZXhjZXB0aW9uT2JqZWN0LCBjb25zdCBjaGFyICoqaW5wdHIsCiAgICAgX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyIC8qIFB5T2JqZWN0ICoqb3V0cHV0LCBQeV9zc2l6ZV90ICpvdXRwb3MgKi8pCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk8hbjtkZWNvZGluZyBlcnJvciBoYW5kbGVyIG11c3QgcmV0dXJuIChzdHIsIGludCkgdHVwbGUiOworICAgIHN0YXRpYyBjb25zdCBjaGFyICphcmdwYXJzZSA9ICJPIW47ZGVjb2RpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKIAogICAgIFB5T2JqZWN0ICpyZXN0dXBsZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKnJlcHVuaWNvZGUgPSBOVUxMOwpAQCAtNDcwMCw4ICs0OTYxLDkgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CiAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBjb25zdCBjaGFyICplcnJtc2cgPSAiIjsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOworICAgIF9QeV9lcnJvcl9oYW5kbGVyIGVycm9yX2hhbmRsZXIgPSBfUHlfRVJST1JfVU5LTk9XTjsKIAogICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgaWYgKGNvbnN1bWVkKQpAQCAtNDcyNiw2ICs0OTg4LDcgQEAKICAgICB3aGlsZSAocyA8IGVuZCkgewogICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQga2luZCA9IHdyaXRlci5raW5kOworCiAgICAgICAgIGlmIChraW5kID09IFB5VW5pY29kZV8xQllURV9LSU5EKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHdyaXRlci5idWZmZXIpKQogICAgICAgICAgICAgICAgIGNoID0gYXNjaWlsaWJfdXRmOF9kZWNvZGUoJnMsIGVuZCwgd3JpdGVyLmRhdGEsICZ3cml0ZXIucG9zKTsKQEAgLTQ3NjQsMjQgKzUwMjcsNTYgQEAKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAotICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgIGVycm9yX2hhbmRsZXIgPSBnZXRfZXJyb3JfaGFuZGxlcihlcnJvcnMpOworCisgICAgICAgIHN3aXRjaCAoZXJyb3JfaGFuZGxlcikgeworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1dyaXRlQ2hhcklubGluZSgmd3JpdGVyLCAweGZmZmQpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBzICs9IChlbmRpbnBvcyAtIHN0YXJ0aW5wb3MpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisKKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgZm9yIChpPXN0YXJ0aW5wb3M7IGk8ZW5kaW5wb3M7IGkrKykgeworICAgICAgICAgICAgICAgIGNoID0gKFB5X1VDUzQpKHVuc2lnbmVkIGNoYXIpKHN0YXJ0c1tpXSk7CisgICAgICAgICAgICAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci5raW5kLCB3cml0ZXIuZGF0YSwgd3JpdGVyLnBvcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2ggKyAweGRjMDApOworICAgICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHMgKz0gKGVuZGlucG9zIC0gc3RhcnRpbnBvcyk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBpZiAodW5pY29kZV9kZWNvZGVfY2FsbF9lcnJvcmhhbmRsZXJfd3JpdGVyKAorICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgInV0Zi04IiwgZXJybXNnLAorICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKKyAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICB9CiAgICAgfQogCiBFbmQ6CiAgICAgaWYgKGNvbnN1bWVkKQogICAgICAgICAqY29uc3VtZWQgPSBzIC0gc3RhcnRzOwogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKIG9uRXJyb3I6Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC01MDczLDcgKzUzNjgsNyBAQAogICAgIGNvbnN0IHZvaWQgKmRhdGE7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnY7Ci0gICAgUFlfVUlOVDMyX1QgKm91dDsKKyAgICB1aW50MzJfdCAqb3V0OwogI2lmIFBZX0xJVFRMRV9FTkRJQU4KICAgICBpbnQgbmF0aXZlX29yZGVyaW5nID0gYnl0ZW9yZGVyIDw9IDA7CiAjZWxzZQpAQCAtNTEwNCw3ICs1Mzk5LDcgQEAKIAogICAgIC8qIG91dHB1dCBidWZmZXIgaXMgNC1ieXRlcyBhbGlnbmVkICovCiAgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKHYpLCA0KSk7Ci0gICAgb3V0ID0gKFBZX1VJTlQzMl9UICopUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgb3V0ID0gKHVpbnQzMl90ICopUHlCeXRlc19BU19TVFJJTkcodik7CiAgICAgaWYgKGJ5dGVvcmRlciA9PSAwKQogICAgICAgICAqb3V0KysgPSAweEZFRkY7CiAgICAgaWYgKGxlbiA9PSAwKQpAQCAtNTE3MCw3ICs1NDY1LDcgQEAKIAogICAgICAgICAvKiBmb3VyIGJ5dGVzIGFyZSByZXNlcnZlZCBmb3IgZWFjaCBzdXJyb2dhdGUgKi8KICAgICAgICAgaWYgKG1vcmV1bml0cyA+IDEpIHsKLSAgICAgICAgICAgIFB5X3NzaXplX3Qgb3V0cG9zID0gb3V0IC0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodik7CisgICAgICAgICAgICBQeV9zc2l6ZV90IG91dHBvcyA9IG91dCAtICh1aW50MzJfdCopIFB5Qnl0ZXNfQVNfU1RSSU5HKHYpOwogICAgICAgICAgICAgUHlfc3NpemVfdCBtb3JlYnl0ZXMgPSA0ICogKG1vcmV1bml0cyAtIDEpOwogICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfR0VUX1NJWkUodikgPiBQWV9TU0laRV9UX01BWCAtIG1vcmVieXRlcykgewogICAgICAgICAgICAgICAgIC8qIGludGVnZXIgb3ZlcmZsb3cgKi8KQEAgLTUxNzksMTEgKzU0NzQsMTEgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnYsIFB5Qnl0ZXNfR0VUX1NJWkUodikgKyBtb3JlYnl0ZXMpIDwgMCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgb3V0ID0gKFBZX1VJTlQzMl9UKikgUHlCeXRlc19BU19TVFJJTkcodikgKyBvdXRwb3M7CisgICAgICAgICAgICBvdXQgPSAodWludDMyX3QqKSBQeUJ5dGVzX0FTX1NUUklORyh2KSArIG91dHBvczsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTQzNCwzNiArNTcyOSw0NSBAQAogICAgIGlmIChraW5kID09IFB5VW5pY29kZV80QllURV9LSU5EKSB7CiAgICAgICAgIGNvbnN0IFB5X1VDUzQgKmluID0gKGNvbnN0IFB5X1VDUzQgKilkYXRhOwogICAgICAgICBjb25zdCBQeV9VQ1M0ICplbmQgPSBpbiArIGxlbjsKLSAgICAgICAgd2hpbGUgKGluIDwgZW5kKQotICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApCisgICAgICAgIHdoaWxlIChpbiA8IGVuZCkgeworICAgICAgICAgICAgaWYgKCppbisrID49IDB4MTAwMDApIHsKICAgICAgICAgICAgICAgICBwYWlycysrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgfQotICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIDIgLSBwYWlycyAtIChieXRlb3JkZXIgPT0gMCkpCisgICAgaWYgKGxlbiA+IFBZX1NTSVpFX1RfTUFYIC8gMiAtIHBhaXJzIC0gKGJ5dGVvcmRlciA9PSAwKSkgewogICAgICAgICByZXR1cm4gUHlFcnJfTm9NZW1vcnkoKTsKKyAgICB9CiAgICAgbnNpemUgPSBsZW4gKyBwYWlycyArIChieXRlb3JkZXIgPT0gMCk7CiAgICAgdiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgbnNpemUgKiAyKTsKLSAgICBpZiAodiA9PSBOVUxMKQorICAgIGlmICh2ID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgLyogb3V0cHV0IGJ1ZmZlciBpcyAyLWJ5dGVzIGFsaWduZWQgKi8KICAgICBhc3NlcnQoX1B5X0lTX0FMSUdORUQoUHlCeXRlc19BU19TVFJJTkcodiksIDIpKTsKICAgICBvdXQgPSAodW5zaWduZWQgc2hvcnQgKilQeUJ5dGVzX0FTX1NUUklORyh2KTsKLSAgICBpZiAoYnl0ZW9yZGVyID09IDApCisgICAgaWYgKGJ5dGVvcmRlciA9PSAwKSB7CiAgICAgICAgICpvdXQrKyA9IDB4RkVGRjsKLSAgICBpZiAobGVuID09IDApCisgICAgfQorICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICBnb3RvIGRvbmU7CisgICAgfQogCiAgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpIHsKICAgICAgICAgdWNzMWxpYl91dGYxNl9lbmNvZGUoKGNvbnN0IFB5X1VDUzEgKilkYXRhLCBsZW4sICZvdXQsIG5hdGl2ZV9vcmRlcmluZyk7CiAgICAgICAgIGdvdG8gZG9uZTsKICAgICB9CiAKLSAgICBpZiAoYnl0ZW9yZGVyIDwgMCkKKyAgICBpZiAoYnl0ZW9yZGVyIDwgMCkgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYtbGUiOwotICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApCisgICAgfQorICAgIGVsc2UgaWYgKGJ5dGVvcmRlciA+IDApIHsKICAgICAgICAgZW5jb2RpbmcgPSAidXRmLTE2LWJlIjsKLSAgICBlbHNlCisgICAgfQorICAgIGVsc2UgewogICAgICAgICBlbmNvZGluZyA9ICJ1dGYtMTYiOworICAgIH0KIAogICAgIHBvcyA9IDA7CiAgICAgd2hpbGUgKHBvcyA8IGxlbikgewpAQCAtNTUyNiw3ICs1ODMwLDcgQEAKICAgICAgICAgfQogCiAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShvdXQsIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcCksIHJlcHNpemUpOworICAgICAgICAgICAgbWVtY3B5KG91dCwgUHlCeXRlc19BU19TVFJJTkcocmVwKSwgcmVwc2l6ZSk7CiAgICAgICAgICAgICBvdXQgKz0gbW9yZXVuaXRzOwogICAgICAgICB9IGVsc2UgLyogcmVwIGlzIHVuaWNvZGUgKi8gewogICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwpAQCAtNTU3OSw2MSArNTg4Myw2IEBACiAKIC8qIC0tLSBVbmljb2RlIEVzY2FwZSBDb2RlYyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCi0vKiBIZWxwZXIgZnVuY3Rpb24gZm9yIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlLCBkZXRlcm1pbmVzCi0gICBpZiBhbGwgdGhlIGVzY2FwZXMgaW4gdGhlIHN0cmluZyBtYWtlIGl0IHN0aWxsIGEgdmFsaWQgQVNDSUkgc3RyaW5nLgotICAgUmV0dXJucyAtMSBpZiBhbnkgZXNjYXBlcyB3ZXJlIGZvdW5kIHdoaWNoIGNhdXNlIHRoZSBzdHJpbmcgdG8KLSAgIHBvcCBvdXQgb2YgQVNDSUkgcmFuZ2UuICBPdGhlcndpc2UgcmV0dXJucyB0aGUgbGVuZ3RoIG9mIHRoZQotICAgcmVxdWlyZWQgYnVmZmVyIHRvIGhvbGQgdGhlIHN0cmluZy4KLSAgICovCi1zdGF0aWMgUHlfc3NpemVfdAotbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBjb25zdCB1bnNpZ25lZCBjaGFyICpwID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilzOwotICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmVuZCA9IHAgKyBzaXplOwotICAgIFB5X3NzaXplX3QgbGVuZ3RoID0gMDsKLQotICAgIGlmIChzaXplIDwgMCkKLSAgICAgICAgcmV0dXJuIC0xOwotCi0gICAgZm9yICg7IHAgPCBlbmQ7ICsrcCkgewotICAgICAgICBpZiAoKnAgPiAxMjcpIHsKLSAgICAgICAgICAgIC8qIE5vbi1BU0NJSSAqLwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCpwICE9ICdcXCcpIHsKLSAgICAgICAgICAgIC8qIE5vcm1hbCBjaGFyYWN0ZXIgKi8KLSAgICAgICAgICAgICsrbGVuZ3RoOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyogQmFja3NsYXNoLWVzY2FwZSwgY2hlY2sgbmV4dCBjaGFyICovCi0gICAgICAgICAgICArK3A7Ci0gICAgICAgICAgICAvKiBFc2NhcGUgc2VxdWVuY2UgcmVhY2hlcyB0aWxsIGVuZCBvZiBzdHJpbmcgb3IKLSAgICAgICAgICAgICAgIG5vbi1BU0NJSSBmb2xsb3ctdXAuICovCi0gICAgICAgICAgICBpZiAocCA+PSBlbmQgfHwgKnAgPiAxMjcpCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgc3dpdGNoICgqcCkgewotICAgICAgICAgICAgY2FzZSAnXG4nOgotICAgICAgICAgICAgICAgIC8qIGJhY2tzbGFzaCArIFxuIHJlc3VsdCBpbiB6ZXJvIGNoYXJhY3RlcnMgKi8KLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGNhc2UgJ1xcJzogY2FzZSAnXCcnOiBjYXNlICdcIic6Ci0gICAgICAgICAgICBjYXNlICdiJzogY2FzZSAnZic6IGNhc2UgJ3QnOgotICAgICAgICAgICAgY2FzZSAnbic6IGNhc2UgJ3InOiBjYXNlICd2JzogY2FzZSAnYSc6Ci0gICAgICAgICAgICAgICAgKytsZW5ndGg7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKLSAgICAgICAgICAgIGNhc2UgJzQnOiBjYXNlICc1JzogY2FzZSAnNic6IGNhc2UgJzcnOgotICAgICAgICAgICAgY2FzZSAneCc6IGNhc2UgJ3UnOiBjYXNlICdVJzogY2FzZSAnTic6Ci0gICAgICAgICAgICAgICAgLyogdGhlc2UgZG8gbm90IGd1YXJhbnRlZSBBU0NJSSBjaGFyYWN0ZXJzICovCi0gICAgICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICAgICAgZGVmYXVsdDoKLSAgICAgICAgICAgICAgICAvKiBjb3VudCB0aGUgYmFja3NsYXNoICsgdGhlIG90aGVyIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgICAgIGxlbmd0aCArPSAyOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBsZW5ndGg7Ci19Ci0KIHN0YXRpYyBfUHlVbmljb2RlX05hbWVfQ0FQSSAqdWNuaGFzaF9DQVBJID0gTlVMTDsKIAogUHlPYmplY3QgKgpAQCAtNTY0MiwyMTggKzU4OTEsMjE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY2hhciogbWVzc2FnZTsKLSAgICBQeV9VQ1M0IGNociA9IDB4ZmZmZmZmZmY7IC8qIGluIGNhc2UgJ2dldGNvZGUnIG1lc3NlcyB1cCAqLwogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIFB5X3NzaXplX3QgbGVuOwogCi0gICAgbGVuID0gbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKHMsIHNpemUpOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICBpZiAoc2l6ZSA9PSAwKSB7CiAgICAgICAgIF9QeV9SRVRVUk5fVU5JQ09ERV9FTVBUWSgpOwotCi0gICAgLyogQWZ0ZXIgbGVuZ3RoX29mX2VzY2FwZWRfYXNjaWlfc3RyaW5nKCkgdGhlcmUgYXJlIHR3byBhbHRlcm5hdGl2ZXMsCi0gICAgICAgZWl0aGVyIHRoZSBzdHJpbmcgaXMgcHVyZSBBU0NJSSB3aXRoIG5hbWVkIGVzY2FwZXMgbGlrZSBcbiwgZXRjLgotICAgICAgIGFuZCB3ZSBkZXRlcm1pbmVkIGl0J3MgZXhhY3Qgc2l6ZSAoY29tbW9uIGNhc2UpCi0gICAgICAgb3IgaXQgY29udGFpbnMgXHgsIFx1LCAuLi4gZXNjYXBlIHNlcXVlbmNlcy4gIHRoZW4gd2UgY3JlYXRlIGEKLSAgICAgICBsZWdhY3kgd2NoYXIgc3RyaW5nIGFuZCByZXNpemUgaXQgYXQgdGhlIGVuZCBvZiB0aGlzIGZ1bmN0aW9uLiAqLworICAgIH0KKyAgICAvKiBFc2NhcGVkIHN0cmluZ3Mgd2lsbCBhbHdheXMgYmUgbG9uZ2VyIHRoYW4gdGhlIHJlc3VsdGluZworICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCisgICAgICAgbGVuZ3RoIGFmdGVyIGNvbnZlcnNpb24gdG8gdGhlIHRydWUgdmFsdWUuCisgICAgICAgKGJ1dCBpZiB0aGUgZXJyb3IgY2FsbGJhY2sgcmV0dXJucyBhIGxvbmcgcmVwbGFjZW1lbnQgc3RyaW5nCisgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICBpZiAobGVuID4gMCkgewotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IGxlbjsKLSAgICB9Ci0gICAgZWxzZSB7Ci0gICAgICAgIC8qIEVzY2FwZWQgc3RyaW5ncyB3aWxsIGFsd2F5cyBiZSBsb25nZXIgdGhhbiB0aGUgcmVzdWx0aW5nCi0gICAgICAgICAgIFVuaWNvZGUgc3RyaW5nLCBzbyB3ZSBzdGFydCB3aXRoIHNpemUgaGVyZSBhbmQgdGhlbiByZWR1Y2UgdGhlCi0gICAgICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLgotICAgICAgICAgICAoYnV0IGlmIHRoZSBlcnJvciBjYWxsYmFjayByZXR1cm5zIGEgbG9uZyByZXBsYWNlbWVudCBzdHJpbmcKLSAgICAgICAgICAgd2UnbGwgaGF2ZSB0byBhbGxvY2F0ZSBtb3JlIHNwYWNlKSAqLwotICAgICAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBzaXplOworICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc2l6ZSwgMTI3KSA8IDApIHsKKyAgICAgICAgZ290byBvbkVycm9yOwogICAgIH0KIAotICAgIGlmIChzaXplID09IDApCi0gICAgICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKICAgICBlbmQgPSBzICsgc2l6ZTsKLQogICAgIHdoaWxlIChzIDwgZW5kKSB7Ci0gICAgICAgIHVuc2lnbmVkIGNoYXIgYzsKLSAgICAgICAgUHlfVUNTNCB4OwotICAgICAgICBpbnQgZGlnaXRzOworICAgICAgICB1bnNpZ25lZCBjaGFyIGMgPSAodW5zaWduZWQgY2hhcikgKnMrKzsKKyAgICAgICAgUHlfVUNTNCBjaDsKKyAgICAgICAgaW50IGNvdW50OworICAgICAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7CisgICAgICAgIFB5X3NzaXplX3QgZW5kaW5wb3M7CisgICAgICAgIGNvbnN0IGNoYXIgKm1lc3NhZ2U7CisKKyNkZWZpbmUgV1JJVEVfQVNDSUlfQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGRvIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gMTI3KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgIFwKKyAgICAgICAgICAgIH0gd2hpbGUoMCkKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzOwotICAgICAgICAgICAgcysrOwotICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIHgpIDwgMCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIGlmIChjICE9ICdcXCcpIHsKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoYyk7CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogCi0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgc3RhcnRpbnBvcyA9IHMgLSBzdGFydHMgLSAxOwogICAgICAgICAvKiBcIC0gRXNjYXBlcyAqLwotICAgICAgICBzKys7Ci0gICAgICAgIGMgPSAqcysrOwotICAgICAgICBpZiAocyA+IGVuZCkKLSAgICAgICAgICAgIGMgPSAnXDAnOyAvKiBJbnZhbGlkIGFmdGVyIFwgKi8KKyAgICAgICAgaWYgKHMgPj0gZW5kKSB7CisgICAgICAgICAgICBtZXNzYWdlID0gIlxcIGF0IGVuZCBvZiBzdHJpbmciOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfQorICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpICpzKys7CiAKKyAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CiAgICAgICAgIHN3aXRjaCAoYykgewogCiAgICAgICAgICAgICAvKiBceCBlc2NhcGVzICovCi0jZGVmaW5lIFdSSVRFQ0hBUihjaCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICBkbyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIChjaCkpIDwgMCkgICAgXAotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAgfSB3aGlsZSgwKQotCi0gICAgICAgIGNhc2UgJ1xuJzogYnJlYWs7Ci0gICAgICAgIGNhc2UgJ1xcJzogV1JJVEVDSEFSKCdcXCcpOyBicmVhazsKLSAgICAgICAgY2FzZSAnXCcnOiBXUklURUNIQVIoJ1wnJyk7IGJyZWFrOwotICAgICAgICBjYXNlICdcIic6IFdSSVRFQ0hBUignXCInKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ2InOiBXUklURUNIQVIoJ1xiJyk7IGJyZWFrOworICAgICAgICBjYXNlICdcbic6IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcXCc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xcJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcJyc6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wnJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdcIic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1wiJyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICdiJzogV1JJVEVfQVNDSUlfQ0hBUignXGInKTsgY29udGludWU7CiAgICAgICAgIC8qIEZGICovCi0gICAgICAgIGNhc2UgJ2YnOiBXUklURUNIQVIoJ1wwMTQnKTsgYnJlYWs7Ci0gICAgICAgIGNhc2UgJ3QnOiBXUklURUNIQVIoJ1x0Jyk7IGJyZWFrOwotICAgICAgICBjYXNlICduJzogV1JJVEVDSEFSKCdcbicpOyBicmVhazsKLSAgICAgICAgY2FzZSAncic6IFdSSVRFQ0hBUignXHInKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2YnOiBXUklURV9BU0NJSV9DSEFSKCdcMDE0Jyk7IGNvbnRpbnVlOworICAgICAgICBjYXNlICd0JzogV1JJVEVfQVNDSUlfQ0hBUignXHQnKTsgY29udGludWU7CisgICAgICAgIGNhc2UgJ24nOiBXUklURV9BU0NJSV9DSEFSKCdcbicpOyBjb250aW51ZTsKKyAgICAgICAgY2FzZSAncic6IFdSSVRFX0FTQ0lJX0NIQVIoJ1xyJyk7IGNvbnRpbnVlOwogICAgICAgICAvKiBWVCAqLwotICAgICAgICBjYXNlICd2JzogV1JJVEVDSEFSKCdcMDEzJyk7IGJyZWFrOworICAgICAgICBjYXNlICd2JzogV1JJVEVfQVNDSUlfQ0hBUignXDAxMycpOyBjb250aW51ZTsKICAgICAgICAgLyogQkVMLCBub3QgY2xhc3NpYyBDICovCi0gICAgICAgIGNhc2UgJ2EnOiBXUklURUNIQVIoJ1wwMDcnKTsgYnJlYWs7CisgICAgICAgIGNhc2UgJ2EnOiBXUklURV9BU0NJSV9DSEFSKCdcMDA3Jyk7IGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBcT09PIChvY3RhbCkgZXNjYXBlcyAqLwogICAgICAgICBjYXNlICcwJzogY2FzZSAnMSc6IGNhc2UgJzInOiBjYXNlICczJzoKICAgICAgICAgY2FzZSAnNCc6IGNhc2UgJzUnOiBjYXNlICc2JzogY2FzZSAnNyc6Ci0gICAgICAgICAgICB4ID0gc1stMV0gLSAnMCc7CisgICAgICAgICAgICBjaCA9IGMgLSAnMCc7CiAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7Ci0gICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7Ci0gICAgICAgICAgICAgICAgaWYgKHMgPCBlbmQgJiYgJzAnIDw9ICpzICYmICpzIDw9ICc3JykKLSAgICAgICAgICAgICAgICAgICAgeCA9ICh4PDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgY2ggPSAoY2g8PDMpICsgKnMrKyAtICcwJzsKKyAgICAgICAgICAgICAgICBpZiAocyA8IGVuZCAmJiAnMCcgPD0gKnMgJiYgKnMgPD0gJzcnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoID0gKGNoPDwzKSArICpzKysgLSAnMCc7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgV1JJVEVDSEFSKHgpOwotICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICAvKiBoZXggZXNjYXBlcyAqLwogICAgICAgICAgICAgLyogXHhYWCAqLwogICAgICAgICBjYXNlICd4JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDI7CisgICAgICAgICAgICBjb3VudCA9IDI7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHhYWCBlc2NhcGUiOwogICAgICAgICAgICAgZ290byBoZXhlc2NhcGU7CiAKICAgICAgICAgICAgIC8qIFx1WFhYWCAqLwogICAgICAgICBjYXNlICd1JzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDQ7CisgICAgICAgICAgICBjb3VudCA9IDQ7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXHVYWFhYIGVzY2FwZSI7CiAgICAgICAgICAgICBnb3RvIGhleGVzY2FwZTsKIAogICAgICAgICAgICAgLyogXFVYWFhYWFhYWCAqLwogICAgICAgICBjYXNlICdVJzoKLSAgICAgICAgICAgIGRpZ2l0cyA9IDg7CisgICAgICAgICAgICBjb3VudCA9IDg7CiAgICAgICAgICAgICBtZXNzYWdlID0gInRydW5jYXRlZCBcXFVYWFhYWFhYWCBlc2NhcGUiOwogICAgICAgICBoZXhlc2NhcGU6Ci0gICAgICAgICAgICBjaHIgPSAwOwotICAgICAgICAgICAgaWYgKGVuZCAtIHMgPCBkaWdpdHMpIHsKLSAgICAgICAgICAgICAgICAvKiBjb3VudCBvbmx5IGhleCBkaWdpdHMgKi8KLSAgICAgICAgICAgICAgICBmb3IgKDsgcyA8IGVuZDsgKytzKSB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFQeV9JU1hESUdJVChjKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBmb3IgKDsgZGlnaXRzLS07ICsrcykgeworICAgICAgICAgICAgZm9yIChjaCA9IDA7IGNvdW50ICYmIHMgPCBlbmQ7ICsrcywgLS1jb3VudCkgewogICAgICAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgICAgICBpZiAoIVB5X0lTWERJR0lUKGMpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIGNociA9IChjaHI8PDQpICYgfjB4RjsKLSAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpCi0gICAgICAgICAgICAgICAgICAgIGNociArPSBjIC0gJzAnOwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgICAgICBjaHIgKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgY2hyICs9IDEwICsgYyAtICdBJzsKKyAgICAgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgICAgICBpZiAoYyA+PSAnMCcgJiYgYyA8PSAnOScpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICcwJzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnYScgJiYgYyA8PSAnZicpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggKz0gYyAtICgnYScgLSAxMCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ0EnICYmIGMgPD0gJ0YnKSB7CisgICAgICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ0EnIC0gMTApOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKGNociA9PSAweGZmZmZmZmZmICYmIFB5RXJyX09jY3VycmVkKCkpCi0gICAgICAgICAgICAgICAgLyogX2RlY29kaW5nX2Vycm9yIHdpbGwgaGF2ZSBhbHJlYWR5IHdyaXR0ZW4gaW50byB0aGUKLSAgICAgICAgICAgICAgICAgICB0YXJnZXQgYnVmZmVyLiAqLwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBzdG9yZToKLSAgICAgICAgICAgIC8qIHdoZW4gd2UgZ2V0IGhlcmUsIGNociBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLwotICAgICAgICAgICAgbWVzc2FnZSA9ICJpbGxlZ2FsIFVuaWNvZGUgY2hhcmFjdGVyIjsKLSAgICAgICAgICAgIGlmIChjaHIgPiBNQVhfVU5JQ09ERSkKKyAgICAgICAgICAgIGlmIChjb3VudCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBXUklURUNIQVIoY2hyKTsKLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiB3aGVuIHdlIGdldCBoZXJlLCBjaCBpcyBhIDMyLWJpdCB1bmljb2RlIGNoYXJhY3RlciAqLworICAgICAgICAgICAgaWYgKGNoID4gTUFYX1VOSUNPREUpIHsKKyAgICAgICAgICAgICAgICBtZXNzYWdlID0gImlsbGVnYWwgVW5pY29kZSBjaGFyYWN0ZXIiOworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgY29udGludWU7CiAKICAgICAgICAgICAgIC8qIFxOe25hbWV9ICovCiAgICAgICAgIGNhc2UgJ04nOgotICAgICAgICAgICAgbWVzc2FnZSA9ICJtYWxmb3JtZWQgXFxOIGNoYXJhY3RlciBlc2NhcGUiOwogICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgLyogbG9hZCB0aGUgdW5pY29kZSBkYXRhIG1vZHVsZSAqLwogICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSSA9IChfUHlVbmljb2RlX05hbWVfQ0FQSSAqKVB5Q2Fwc3VsZV9JbXBvcnQoCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVEYXRhX0NBUFNVTEVfTkFNRSwgMSk7Ci0gICAgICAgICAgICAgICAgaWYgKHVjbmhhc2hfQ0FQSSA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIHVjbmhhc2hFcnJvcjsKKyAgICAgICAgICAgICAgICBpZiAodWNuaGFzaF9DQVBJID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlxcTiBlc2NhcGVzIG5vdCBzdXBwb3J0ZWQgKGNhbid0IGxvYWQgdW5pY29kZWRhdGEgbW9kdWxlKSIKKyAgICAgICAgICAgICAgICAgICAgICAgICk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAibWFsZm9ybWVkIFxcTiBjaGFyYWN0ZXIgZXNjYXBlIjsKICAgICAgICAgICAgIGlmICgqcyA9PSAneycpIHsKLSAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9IHMrMTsKKyAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzdGFydCA9ICsrczsKKyAgICAgICAgICAgICAgICBzaXplX3QgbmFtZWxlbjsKICAgICAgICAgICAgICAgICAvKiBsb29rIGZvciB0aGUgY2xvc2luZyBicmFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlICgqcyAhPSAnfScgJiYgcyA8IGVuZCkKKyAgICAgICAgICAgICAgICB3aGlsZSAocyA8IGVuZCAmJiAqcyAhPSAnfScpCiAgICAgICAgICAgICAgICAgICAgIHMrKzsKLSAgICAgICAgICAgICAgICBpZiAocyA+IHN0YXJ0ICYmIHMgPCBlbmQgJiYgKnMgPT0gJ30nKSB7CisgICAgICAgICAgICAgICAgbmFtZWxlbiA9IHMgLSBzdGFydDsKKyAgICAgICAgICAgICAgICBpZiAobmFtZWxlbiAmJiBzIDwgZW5kKSB7CiAgICAgICAgICAgICAgICAgICAgIC8qIGZvdW5kIGEgbmFtZS4gIGxvb2sgaXQgdXAgaW4gdGhlIHVuaWNvZGUgZGF0YWJhc2UgKi8KLSAgICAgICAgICAgICAgICAgICAgbWVzc2FnZSA9ICJ1bmtub3duIFVuaWNvZGUgY2hhcmFjdGVyIG5hbWUiOwogICAgICAgICAgICAgICAgICAgICBzKys7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChzIC0gc3RhcnQgLSAxIDw9IElOVF9NQVggJiYKLSAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCkocy1zdGFydC0xKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmY2hyLCAwKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gc3RvcmU7CisgICAgICAgICAgICAgICAgICAgIGNoID0gMHhmZmZmZmZmZjsgLyogaW4gY2FzZSAnZ2V0Y29kZScgbWVzc2VzIHVwICovCisgICAgICAgICAgICAgICAgICAgIGlmIChuYW1lbGVuIDw9IElOVF9NQVggJiYKKyAgICAgICAgICAgICAgICAgICAgICAgIHVjbmhhc2hfQ0FQSS0+Z2V0Y29kZShOVUxMLCBzdGFydCwgKGludCluYW1lbGVuLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZjaCwgMCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7CisgICAgICAgICAgICAgICAgICAgICAgICBXUklURV9DSEFSKGNoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAidW5rbm93biBVbmljb2RlIGNoYXJhY3RlciBuYW1lIjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICBpZiAocyA+IGVuZCkgewotICAgICAgICAgICAgICAgIG1lc3NhZ2UgPSAiXFwgYXQgZW5kIG9mIHN0cmluZyI7Ci0gICAgICAgICAgICAgICAgcy0tOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBXUklURUNIQVIoJ1xcJyk7Ci0gICAgICAgICAgICAgICAgV1JJVEVDSEFSKCh1bnNpZ25lZCBjaGFyKXNbLTFdKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgaWYgKFB5RXJyX1dhcm5Gb3JtYXQoUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgZXNjYXBlIHNlcXVlbmNlICdcXCVjJyIsIGMpIDwgMCkKKyAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICBXUklURV9BU0NJSV9DSEFSKCdcXCcpOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGNvbnRpbnVlOwogCiAgICAgICBlcnJvcjoKICAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBlbmQgLSBzICsgd3JpdGVyLnBvczsKICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCiAgICAgICAgICAgICAgICAgInVuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAogICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAotICAgICAgICAgICAgICAgICZ3cml0ZXIpKQorICAgICAgICAgICAgICAgICZ3cml0ZXIpKSB7CiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgIGNvbnRpbnVlOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgd3JpdGVyLm1pbl9sZW5ndGgsIDEyNykgPCAwKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKworI3VuZGVmIFdSSVRFX0FTQ0lJX0NIQVIKKyN1bmRlZiBXUklURV9DSEFSCiAgICAgfQotI3VuZGVmIFdSSVRFQ0hBUgogCiAgICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOwogICAgIFB5X1hERUNSRUYoZXhjKTsKICAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9GaW5pc2goJndyaXRlcik7CiAKLSAgdWNuaGFzaEVycm9yOgotICAgIFB5RXJyX1NldFN0cmluZygKLSAgICAgICAgUHlFeGNfVW5pY29kZUVycm9yLAotICAgICAgICAiXFxOIGVzY2FwZXMgbm90IHN1cHBvcnRlZCAoY2FuJ3QgbG9hZCB1bmljb2RlZGF0YSBtb2R1bGUpIgotICAgICAgICApOwotICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7Ci0gICAgUHlfWERFQ1JFRihleGMpOwotICAgIHJldHVybiBOVUxMOwotCiAgIG9uRXJyb3I6CiAgICAgX1B5VW5pY29kZVdyaXRlcl9EZWFsbG9jKCZ3cml0ZXIpOwogICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKQEAgLTU4NzQsOSArNjEyMCw5IEBACiAgICAgUHlfc3NpemVfdCBpLCBsZW47CiAgICAgUHlPYmplY3QgKnJlcHI7CiAgICAgY2hhciAqcDsKLSAgICBpbnQga2luZDsKKyAgICBlbnVtIFB5VW5pY29kZV9LaW5kIGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKLSAgICBQeV9zc2l6ZV90IGV4cGFuZHNpemUgPSAwOworICAgIFB5X3NzaXplX3QgZXhwYW5kc2l6ZTsKIAogICAgIC8qIEluaXRpYWwgYWxsb2NhdGlvbiBpcyBiYXNlZCBvbiB0aGUgbG9uZ2VzdC1wb3NzaWJsZSBjaGFyYWN0ZXIKICAgICAgICBlc2NhcGUuCkBAIC01ODkwLDYwICs2MTM2LDcxIEBACiAgICAgICAgIFB5RXJyX0JhZEFyZ3VtZW50KCk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHVuaWNvZGUpID09IC0xKQorICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pY29kZSk7Ci0gICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwotICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKLSAgICBzd2l0Y2ggKGtpbmQpIHsKLSAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBleHBhbmRzaXplID0gNDsgYnJlYWs7Ci0gICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogZXhwYW5kc2l6ZSA9IDY7IGJyZWFrOwotICAgIGNhc2UgUHlVbmljb2RlXzRCWVRFX0tJTkQ6IGV4cGFuZHNpemUgPSAxMDsgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKGxlbiA9PSAwKQorICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHVuaWNvZGUpOworICAgIGlmIChsZW4gPT0gMCkgewogICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAwKTsKKyAgICB9CiAKLSAgICBpZiAobGVuID4gKFBZX1NTSVpFX1RfTUFYIC0gMiAtIDEpIC8gZXhwYW5kc2l6ZSkKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQodW5pY29kZSk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpOworICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CisgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLworICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CisgICAgaWYgKGxlbiA+IChQWV9TU0laRV9UX01BWCAtIDIgLSAxKSAvIGV4cGFuZHNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KLSAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIGV4cGFuZHNpemUqbGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyAxKTsKLSAgICBpZiAocmVwciA9PSBOVUxMKQorICAgIH0KKyAgICByZXByID0gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShOVUxMLCAyICsgZXhwYW5kc2l6ZSAqIGxlbiArIDEpOworICAgIGlmIChyZXByID09IE5VTEwpIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCiAgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwotCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKIAotICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KLSAgICAgICAgaWYgKGNoID09ICdcXCcpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICB9CisgICAgICAgIC8qIFUrMDAwMC1VKzAwZmYgcmFuZ2UgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgIGlmIChjaCA+PSAnICcgJiYgY2ggPCAxMjcpIHsKKyAgICAgICAgICAgICAgICBpZiAoY2ggIT0gJ1xcJykgeworICAgICAgICAgICAgICAgICAgICAvKiBDb3B5IHByaW50YWJsZSBVUyBBU0NJSSBhcy1pcyAqLworICAgICAgICAgICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAvKiBFc2NhcGUgYmFja3NsYXNoZXMgKi8KKyAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMjEtYml0IGNoYXJhY3RlcnMgdG8gJ1xVMDB4eHh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDB4MTAwMDApIHsKLSAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSk7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnVSc7Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI0KSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDEyKSAmIDB4MDAwMDAwMEZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweDAwMDAwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDAwMDAwRl07Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQorICAgICAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGNoID09ICdcdCcpIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3QnOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwKysgPSAnXFwnOworICAgICAgICAgICAgICAgICpwKysgPSAnbic7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjaCA9PSAnXHInKSB7CisgICAgICAgICAgICAgICAgKnArKyA9ICdcXCc7CisgICAgICAgICAgICAgICAgKnArKyA9ICdyJzsKKyAgICAgICAgICAgIH0KIAotICAgICAgICAvKiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1eHh4eCcgKi8KLSAgICAgICAgaWYgKGNoID49IDI1NikgeworICAgICAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgYW5kIDgtYml0IGNoYXJhY3RlcnMgdG8gJ1x4SEgnICovCisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICAgICAqcCsrID0gJ3gnOworICAgICAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKKyAgICAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzW2NoICYgMHgwMDBGXTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CisgICAgICAgICAgICAvKiBVKzAxMDAtVStmZmZmICovCiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweDAwMEZdOwpAQCAtNTk1MSwzNyArNjIwOCwyOCBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMEZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDB4MDAwRl07CiAgICAgICAgIH0KKyAgICAgICAgLyogVSswMTAwMDAtVSsxMGZmZmYgcmFuZ2U6IE1hcCAyMS1iaXQgY2hhcmFjdGVycyB0byAnXFUwMEhISEhISCcgKi8KKyAgICAgICAgZWxzZSB7CiAKLSAgICAgICAgLyogTWFwIHNwZWNpYWwgd2hpdGVzcGFjZSB0byAnXHQnLCBcbicsICdccicgKi8KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1x0JykgeworICAgICAgICAgICAgLyogTWFrZSBzdXJlIHRoYXQgdGhlIGZpcnN0IHR3byBkaWdpdHMgYXJlIHplcm8gKi8KKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAndCc7CisgICAgICAgICAgICAqcCsrID0gJ1UnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSAnMCc7CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyMCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHgwMDAwMDAwRl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiA4KSAmIDB4MDAwMDAwMEZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweDAwMDAwMDBGXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMDAwMDBGXTsKICAgICAgICAgfQotICAgICAgICBlbHNlIGlmIChjaCA9PSAnXG4nKSB7Ci0gICAgICAgICAgICAqcCsrID0gJ1xcJzsKLSAgICAgICAgICAgICpwKysgPSAnbic7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAoY2ggPT0gJ1xyJykgewotICAgICAgICAgICAgKnArKyA9ICdcXCc7Ci0gICAgICAgICAgICAqcCsrID0gJ3InOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogTWFwIG5vbi1wcmludGFibGUgVVMgQVNDSUkgdG8gJ1x4aGgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoIDwgJyAnIHx8IGNoID49IDB4N0YpIHsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICd4JzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHgwMDBGXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAweDAwMEZdOwotICAgICAgICB9Ci0KLSAgICAgICAgLyogQ29weSBldmVyeXRoaW5nIGVsc2UgYXMtaXMgKi8KLSAgICAgICAgZWxzZQotICAgICAgICAgICAgKnArKyA9IChjaGFyKSBjaDsKICAgICB9CiAKICAgICBhc3NlcnQocCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpID4gMCk7Ci0gICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApCisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC01OTkxLDggKzYyMzksMTAgQEAKIHsKICAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5T2JqZWN0ICp0bXAgPSBQeVVuaWNvZGVfRnJvbVVuaWNvZGUocywgc2l6ZSk7Ci0gICAgaWYgKHRtcCA9PSBOVUxMKQorICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKICAgICByZXN1bHQgPSBQeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nKHRtcCk7CiAgICAgUHlfREVDUkVGKHRtcCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTYwMDYsOTUgKzYyNTYsMTA3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7CiAgICAgY29uc3QgY2hhciAqc3RhcnRzID0gczsKLSAgICBQeV9zc2l6ZV90IHN0YXJ0aW5wb3M7Ci0gICAgUHlfc3NpemVfdCBlbmRpbnBvczsKICAgICBfUHlVbmljb2RlV3JpdGVyIHdyaXRlcjsKICAgICBjb25zdCBjaGFyICplbmQ7Ci0gICAgY29uc3QgY2hhciAqYnM7CiAgICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAKLSAgICBpZiAoc2l6ZSA9PSAwKQorICAgIGlmIChzaXplID09IDApIHsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CisgICAgfQogCiAgICAgLyogRXNjYXBlZCBzdHJpbmdzIHdpbGwgYWx3YXlzIGJlIGxvbmdlciB0aGFuIHRoZSByZXN1bHRpbmcKICAgICAgICBVbmljb2RlIHN0cmluZywgc28gd2Ugc3RhcnQgd2l0aCBzaXplIGhlcmUgYW5kIHRoZW4gcmVkdWNlIHRoZQogICAgICAgIGxlbmd0aCBhZnRlciBjb252ZXJzaW9uIHRvIHRoZSB0cnVlIHZhbHVlLiAoQnV0IGRlY29kaW5nIGVycm9yCiAgICAgICAgaGFuZGxlciBtaWdodCBoYXZlIHRvIHJlc2l6ZSB0aGUgc3RyaW5nKSAqLwogICAgIF9QeVVuaWNvZGVXcml0ZXJfSW5pdCgmd3JpdGVyKTsKLSAgICB3cml0ZXIubWluX2xlbmd0aCA9IHNpemU7CisgICAgIHdyaXRlci5taW5fbGVuZ3RoID0gc2l6ZTsKKyAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCZ3cml0ZXIsIHNpemUsIDEyNykgPCAwKSB7CisgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICB9CiAKICAgICBlbmQgPSBzICsgc2l6ZTsKICAgICB3aGlsZSAocyA8IGVuZCkgewotICAgICAgICB1bnNpZ25lZCBjaGFyIGM7Ci0gICAgICAgIFB5X1VDUzQgeDsKLSAgICAgICAgaW50IGk7CisgICAgICAgIHVuc2lnbmVkIGNoYXIgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBQeV9VQ1M0IGNoOwogICAgICAgICBpbnQgY291bnQ7CisgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRpbnBvczsKKyAgICAgICAgUHlfc3NpemVfdCBlbmRpbnBvczsKKyAgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZTsKKworI2RlZmluZSBXUklURV9DSEFSKGNoKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGlmIChjaCA8PSB3cml0ZXIubWF4Y2hhcikgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBhc3NlcnQod3JpdGVyLnBvcyA8IHdyaXRlci5zaXplKTsgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssIGNoKTsgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIGVsc2UgaWYgKF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKCZ3cml0ZXIsIGNoKSA8IDApIHsgXAorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSB3aGlsZSgwKQogCiAgICAgICAgIC8qIE5vbi1lc2NhcGUgY2hhcmFjdGVycyBhcmUgaW50ZXJwcmV0ZWQgYXMgVW5pY29kZSBvcmRpbmFscyAqLwotICAgICAgICBpZiAoKnMgIT0gJ1xcJykgewotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgaWYgKGMgIT0gJ1xcJyB8fCBzID49IGVuZCkgeworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIHN0YXJ0aW5wb3MgPSBzLXN0YXJ0czsKIAotICAgICAgICAvKiBcdS1lc2NhcGVzIGFyZSBvbmx5IGludGVycHJldGVkIGlmZiB0aGUgbnVtYmVyIG9mIGxlYWRpbmcKLSAgICAgICAgICAgYmFja3NsYXNoZXMgaWYgb2RkICovCi0gICAgICAgIGJzID0gczsKLSAgICAgICAgZm9yICg7cyA8IGVuZDspIHsKLSAgICAgICAgICAgIGlmICgqcyAhPSAnXFwnKQotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgeCA9ICh1bnNpZ25lZCBjaGFyKSpzKys7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgYyA9ICh1bnNpZ25lZCBjaGFyKSAqcysrOworICAgICAgICBpZiAoYyA9PSAndScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gNDsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcdVhYWFggZXNjYXBlIjsKICAgICAgICAgfQotICAgICAgICBpZiAoKChzIC0gYnMpICYgMSkgPT0gMCB8fAotICAgICAgICAgICAgcyA+PSBlbmQgfHwKLSAgICAgICAgICAgICgqcyAhPSAndScgJiYgKnMgIT0gJ1UnKSkgewotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLSAgICAgICAgd3JpdGVyLnBvcy0tOwotICAgICAgICBjb3VudCA9ICpzPT0ndScgPyA0IDogODsKLSAgICAgICAgcysrOwotCi0gICAgICAgIC8qIFx1WFhYWCB3aXRoIDQgaGV4IGRpZ2l0cywgXFV4eHh4eHh4eCB3aXRoIDggKi8KLSAgICAgICAgZm9yICh4ID0gMCwgaSA9IDA7IGkgPCBjb3VudDsgKytpLCArK3MpIHsKLSAgICAgICAgICAgIGMgPSAodW5zaWduZWQgY2hhcikqczsKLSAgICAgICAgICAgIGlmICghUHlfSVNYRElHSVQoYykpIHsKLSAgICAgICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJ0cnVuY2F0ZWQgXFx1WFhYWCIsCi0gICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICZ3cml0ZXIpKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICAgICAgZ290byBuZXh0Qnl0ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHggPSAoeDw8NCkgJiB+MHhGOwotICAgICAgICAgICAgaWYgKGMgPj0gJzAnICYmIGMgPD0gJzknKQotICAgICAgICAgICAgICAgIHggKz0gYyAtICcwJzsKLSAgICAgICAgICAgIGVsc2UgaWYgKGMgPj0gJ2EnICYmIGMgPD0gJ2YnKQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ2EnOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHggKz0gMTAgKyBjIC0gJ0EnOwotICAgICAgICB9Ci0gICAgICAgIGlmICh4IDw9IE1BWF9VTklDT0RFKSB7Ci0gICAgICAgICAgICBpZiAoX1B5VW5pY29kZVdyaXRlcl9Xcml0ZUNoYXJJbmxpbmUoJndyaXRlciwgeCkgPCAwKQotICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgZWxzZSBpZiAoYyA9PSAnVScpIHsKKyAgICAgICAgICAgIGNvdW50ID0gODsKKyAgICAgICAgICAgIG1lc3NhZ2UgPSAidHJ1bmNhdGVkIFxcVVhYWFhYWFhYIGVzY2FwZSI7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBlbmRpbnBvcyA9IHMtc3RhcnRzOwotICAgICAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKLSAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JIYW5kbGVyLAotICAgICAgICAgICAgICAgICAgICAicmF3dW5pY29kZWVzY2FwZSIsICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiLAotICAgICAgICAgICAgICAgICAgICAmc3RhcnRzLCAmZW5kLCAmc3RhcnRpbnBvcywgJmVuZGlucG9zLCAmZXhjLCAmcywKLSAgICAgICAgICAgICAgICAgICAgJndyaXRlcikpCi0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgYXNzZXJ0KHdyaXRlci5wb3MgPCB3cml0ZXIuc2l6ZSk7CisgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUod3JpdGVyLmtpbmQsIHdyaXRlci5kYXRhLCB3cml0ZXIucG9zKyssICdcXCcpOworICAgICAgICAgICAgV1JJVEVfQ0hBUihjKTsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICBuZXh0Qnl0ZToKLSAgICAgICAgOworICAgICAgICBzdGFydGlucG9zID0gcyAtIHN0YXJ0cyAtIDI7CisKKyAgICAgICAgLyogXHVISEhIIHdpdGggNCBoZXggZGlnaXRzLCBcVTAwSEhISEhIIHdpdGggOCAqLworICAgICAgICBmb3IgKGNoID0gMDsgY291bnQgJiYgcyA8IGVuZDsgKytzLCAtLWNvdW50KSB7CisgICAgICAgICAgICBjID0gKHVuc2lnbmVkIGNoYXIpKnM7CisgICAgICAgICAgICBjaCA8PD0gNDsKKyAgICAgICAgICAgIGlmIChjID49ICcwJyAmJiBjIDw9ICc5JykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAnMCc7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIGlmIChjID49ICdhJyAmJiBjIDw9ICdmJykgeworICAgICAgICAgICAgICAgIGNoICs9IGMgLSAoJ2EnIC0gMTApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoYyA+PSAnQScgJiYgYyA8PSAnRicpIHsKKyAgICAgICAgICAgICAgICBjaCArPSBjIC0gKCdBJyAtIDEwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGlmICghY291bnQpIHsKKyAgICAgICAgICAgIGlmIChjaCA8PSBNQVhfVU5JQ09ERSkgeworICAgICAgICAgICAgICAgIFdSSVRFX0NIQVIoY2gpOworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWVzc2FnZSA9ICJcXFV4eHh4eHh4eCBvdXQgb2YgcmFuZ2UiOworICAgICAgICB9CisKKyAgICAgICAgZW5kaW5wb3MgPSBzLXN0YXJ0czsKKyAgICAgICAgd3JpdGVyLm1pbl9sZW5ndGggPSBlbmQgLSBzICsgd3JpdGVyLnBvczsKKyAgICAgICAgaWYgKHVuaWNvZGVfZGVjb2RlX2NhbGxfZXJyb3JoYW5kbGVyX3dyaXRlcigKKyAgICAgICAgICAgICAgICBlcnJvcnMsICZlcnJvckhhbmRsZXIsCisgICAgICAgICAgICAgICAgInJhd3VuaWNvZGVlc2NhcGUiLCBtZXNzYWdlLAorICAgICAgICAgICAgICAgICZzdGFydHMsICZlbmQsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAorICAgICAgICAgICAgICAgICZ3cml0ZXIpKSB7CisgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSgmd3JpdGVyLCB3cml0ZXIubWluX2xlbmd0aCwgMTI3KSA8IDApIHsKKyAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICAgICAgfQorCisjdW5kZWYgV1JJVEVfQ0hBUgogICAgIH0KICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwpAQCAtNjEwNSw2ICs2MzY3LDcgQEAKICAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOworCiB9CiAKIApAQCAtNjExMyw3ICs2Mzc2LDYgQEAKIHsKICAgICBQeU9iamVjdCAqcmVwcjsKICAgICBjaGFyICpwOwotICAgIGNoYXIgKnE7CiAgICAgUHlfc3NpemVfdCBleHBhbmRzaXplLCBwb3M7CiAgICAgaW50IGtpbmQ7CiAgICAgdm9pZCAqZGF0YTsKQEAgLTYxMjMsNDMgKzYzODUsNDEgQEAKICAgICAgICAgUHlFcnJfQmFkQXJndW1lbnQoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCisgICAgaWYgKFB5VW5pY29kZV9SRUFEWSh1bmljb2RlKSA9PSAtMSkgewogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHVuaWNvZGUpOwogICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh1bmljb2RlKTsKICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh1bmljb2RlKTsKKyAgICBpZiAoa2luZCA9PSBQeVVuaWNvZGVfMUJZVEVfS0lORCkgeworICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShkYXRhLCBsZW4pOworICAgIH0KKwogICAgIC8qIDQgYnl0ZSBjaGFyYWN0ZXJzIGNhbiB0YWtlIHVwIDEwIGJ5dGVzLCAyIGJ5dGUgY2hhcmFjdGVycyBjYW4gdGFrZSB1cCA2CiAgICAgICAgYnl0ZXMsIGFuZCAxIGJ5dGUgY2hhcmFjdGVycyA0LiAqLwogICAgIGV4cGFuZHNpemUgPSBraW5kICogMiArIDI7CiAKLSAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyBleHBhbmRzaXplKQorICAgIGlmIChsZW4gPiBQWV9TU0laRV9UX01BWCAvIGV4cGFuZHNpemUpIHsKICAgICAgICAgcmV0dXJuIFB5RXJyX05vTWVtb3J5KCk7Ci0KKyAgICB9CiAgICAgcmVwciA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgZXhwYW5kc2l6ZSAqIGxlbik7Ci0gICAgaWYgKHJlcHIgPT0gTlVMTCkKKyAgICBpZiAocmVwciA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChsZW4gPT0gMCkKKyAgICB9CisgICAgaWYgKGxlbiA9PSAwKSB7CiAgICAgICAgIHJldHVybiByZXByOworICAgIH0KIAotICAgIHAgPSBxID0gUHlCeXRlc19BU19TVFJJTkcocmVwcik7CisgICAgcCA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpOwogICAgIGZvciAocG9zID0gMDsgcG9zIDwgbGVuOyBwb3MrKykgewogICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKLSAgICAgICAgLyogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVXh4eHh4eHh4JyAqLwotICAgICAgICBpZiAoY2ggPj0gMHgxMDAwMCkgewotICAgICAgICAgICAgYXNzZXJ0KGNoIDw9IE1BWF9VTklDT0RFKTsKLSAgICAgICAgICAgICpwKysgPSAnXFwnOwotICAgICAgICAgICAgKnArKyA9ICdVJzsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDI4KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAyNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMjApICYgMHhmXTsKLSAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDE2KSAmIDB4Zl07Ci0gICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gOCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwotICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKKworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBDb3B5IDgtYml0IGNoYXJhY3RlcnMgYXMtaXMgKi8KKyAgICAgICAgaWYgKGNoIDwgMHgxMDApIHsKKyAgICAgICAgICAgICpwKysgPSAoY2hhcikgY2g7CiAgICAgICAgIH0KLSAgICAgICAgLyogTWFwIDE2LWJpdCBjaGFyYWN0ZXJzIHRvICdcdXh4eHgnICovCi0gICAgICAgIGVsc2UgaWYgKGNoID49IDI1NikgeworICAgICAgICAvKiBVKzAwMDAtVSswMGZmIHJhbmdlOiBNYXAgMTYtYml0IGNoYXJhY3RlcnMgdG8gJ1x1SEhISCcgKi8KKyAgICAgICAgZWxzZSBpZiAoY2ggPCAweDEwMDAwKSB7CiAgICAgICAgICAgICAqcCsrID0gJ1xcJzsKICAgICAgICAgICAgICpwKysgPSAndSc7CiAgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxMikgJiAweGZdOwpAQCAtNjE2NywxNCArNjQyNywyNiBAQAogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gNCkgJiAweGZdOwogICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1tjaCAmIDE1XTsKICAgICAgICAgfQotICAgICAgICAvKiBDb3B5IGV2ZXJ5dGhpbmcgZWxzZSBhcy1pcyAqLwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqcCsrID0gKGNoYXIpIGNoOworICAgICAgICAvKiBVKzAxMDAwMC1VKzEwZmZmZiByYW5nZTogTWFwIDMyLWJpdCBjaGFyYWN0ZXJzIHRvICdcVTAwSEhISEhIJyAqLworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChjaCA8PSBNQVhfVU5JQ09ERSAmJiBNQVhfVU5JQ09ERSA8PSAweDEwZmZmZik7CisgICAgICAgICAgICAqcCsrID0gJ1xcJzsKKyAgICAgICAgICAgICpwKysgPSAnVSc7CisgICAgICAgICAgICAqcCsrID0gJzAnOworICAgICAgICAgICAgKnArKyA9ICcwJzsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDIwKSAmIDB4Zl07CisgICAgICAgICAgICAqcCsrID0gUHlfaGV4ZGlnaXRzWyhjaCA+PiAxNikgJiAweGZdOworICAgICAgICAgICAgKnArKyA9IFB5X2hleGRpZ2l0c1soY2ggPj4gMTIpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDgpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbKGNoID4+IDQpICYgMHhmXTsKKyAgICAgICAgICAgICpwKysgPSBQeV9oZXhkaWdpdHNbY2ggJiAxNV07CisgICAgICAgIH0KICAgICB9CiAKLSAgICBhc3NlcnQocCA+IHEpOwotICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcHIsIHAgLSBxKSA8IDApCisgICAgYXNzZXJ0KHAgPiBQeUJ5dGVzX0FTX1NUUklORyhyZXByKSk7CisgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVwciwgcCAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcHIpKSA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICAgIHJldHVybiByZXByOwogfQogCkBAIC02MzUyLDcgKzY2MjQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydHBvcywgUHlfc3NpemVfdCBlbmRwb3MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90ICpuZXdwb3MpCiB7Ci0gICAgc3RhdGljIGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKmFyZ3BhcnNlID0gIk9uO2VuY29kaW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ci9ieXRlcywgaW50KSB0dXBsZSI7CiAgICAgUHlfc3NpemVfdCBsZW47CiAgICAgUHlPYmplY3QgKnJlc3R1cGxlOwogICAgIFB5T2JqZWN0ICpyZXN1bmljb2RlOwpAQCAtNjQwNiwyNSArNjY3OCwyMiBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHVuaWNvZGVfZW5jb2RlX3VjczEoUHlPYmplY3QgKnVuaWNvZGUsCiAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmVycm9ycywKLSAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGxpbWl0KQorICAgICAgICAgICAgICAgICAgICBjb25zdCBQeV9VQ1M0IGxpbWl0KQogewogICAgIC8qIGlucHV0IHN0YXRlICovCiAgICAgUHlfc3NpemVfdCBwb3M9MCwgc2l6ZTsKICAgICBpbnQga2luZDsKICAgICB2b2lkICpkYXRhOwotICAgIC8qIG91dHB1dCBvYmplY3QgKi8KLSAgICBQeU9iamVjdCAqcmVzOwogICAgIC8qIHBvaW50ZXIgaW50byB0aGUgb3V0cHV0ICovCiAgICAgY2hhciAqc3RyOwotICAgIC8qIGN1cnJlbnQgb3V0cHV0IHBvc2l0aW9uICovCi0gICAgUHlfc3NpemVfdCByZXNzaXplOwogICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nID0gKGxpbWl0ID09IDI1NikgPyAibGF0aW4tMSIgOiAiYXNjaWkiOwogICAgIGNvbnN0IGNoYXIgKnJlYXNvbiA9IChsaW1pdCA9PSAyNTYpID8gIm9yZGluYWwgbm90IGluIHJhbmdlKDI1NikiIDogIm9yZGluYWwgbm90IGluIHJhbmdlKDEyOCkiOwotICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOworICAgIFB5T2JqZWN0ICplcnJvcl9oYW5kbGVyX29iaiA9IE5VTEw7CiAgICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7Ci0gICAgLyogdGhlIGZvbGxvd2luZyB2YXJpYWJsZSBpcyB1c2VkIGZvciBjYWNoaW5nIHN0cmluZyBjb21wYXJpc29ucwotICAgICAqIC0xPW5vdCBpbml0aWFsaXplZCwgMD11bmtub3duLCAxPXN0cmljdCwgMj1yZXBsYWNlLCAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CisgICAgUHlPYmplY3QgKnJlcCA9IE5VTEw7CisgICAgLyogb3V0cHV0IG9iamVjdCAqLworICAgIF9QeUJ5dGVzV3JpdGVyIHdyaXRlcjsKIAogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkodW5pY29kZSkgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtNjQzNSwxODYgKzY3MDQsMTU3IEBACiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwogICAgIGlmIChzaXplID09IDApCiAgICAgICAgIHJldHVybiBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKE5VTEwsIDApOwotICAgIHJlcyA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgc2l6ZSk7Ci0gICAgaWYgKHJlcyA9PSBOVUxMKQorCisgICAgX1B5Qnl0ZXNXcml0ZXJfSW5pdCgmd3JpdGVyKTsKKyAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9BbGxvYygmd3JpdGVyLCBzaXplKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgcmVzc2l6ZSA9IHNpemU7CiAKICAgICB3aGlsZSAocG9zIDwgc2l6ZSkgewotICAgICAgICBQeV9VQ1M0IGMgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBwb3MpOworICAgICAgICBQeV9VQ1M0IGNoID0gUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgcG9zKTsKIAogICAgICAgICAvKiBjYW4gd2UgZW5jb2RlIHRoaXM/ICovCi0gICAgICAgIGlmIChjPGxpbWl0KSB7CisgICAgICAgIGlmIChjaCA8IGxpbWl0KSB7CiAgICAgICAgICAgICAvKiBubyBvdmVyZmxvdyBjaGVjaywgYmVjYXVzZSB3ZSBrbm93IHRoYXQgdGhlIHNwYWNlIGlzIGVub3VnaCAqLwotICAgICAgICAgICAgKnN0cisrID0gKGNoYXIpYzsKKyAgICAgICAgICAgICpzdHIrKyA9IChjaGFyKWNoOwogICAgICAgICAgICAgKytwb3M7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBQeV9zc2l6ZV90IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlOwotICAgICAgICAgICAgUHlfc3NpemVfdCByZXBzaXplLCBuZXdwb3MsIHJlc3BvcywgaTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbmV3cG9zLCBpOwogICAgICAgICAgICAgLyogc3RhcnRwb3MgZm9yIGNvbGxlY3RpbmcgdW5lbmNvZGFibGUgY2hhcnMgKi8KICAgICAgICAgICAgIFB5X3NzaXplX3QgY29sbHN0YXJ0ID0gcG9zOwotICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gcG9zOworICAgICAgICAgICAgUHlfc3NpemVfdCBjb2xsZW5kID0gY29sbHN0YXJ0ICsgMTsKICAgICAgICAgICAgIC8qIGZpbmQgYWxsIHVuZWNvZGFibGUgY2hhcmFjdGVycyAqLworCiAgICAgICAgICAgICB3aGlsZSAoKGNvbGxlbmQgPCBzaXplKSAmJiAoUHlVbmljb2RlX1JFQUQoa2luZCwgZGF0YSwgY29sbGVuZCkgPj0gbGltaXQpKQogICAgICAgICAgICAgICAgICsrY29sbGVuZDsKKworICAgICAgICAgICAgLyogT25seSBvdmVyYWxsb2NhdGUgdGhlIGJ1ZmZlciBpZiBpdCdzIG5vdCB0aGUgbGFzdCB3cml0ZSAqLworICAgICAgICAgICAgd3JpdGVyLm92ZXJhbGxvY2F0ZSA9IChjb2xsZW5kIDwgc2l6ZSk7CisKICAgICAgICAgICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwIChpZiBub3QgZG9uZSB5ZXQsIGkuZS4gaXQncyB0aGUgZmlyc3QgZXJyb3IpICovCi0gICAgICAgICAgICBpZiAoa25vd25fZXJyb3JIYW5kbGVyPT0tMSkgewotICAgICAgICAgICAgICAgIGlmICgoZXJyb3JzPT1OVUxMKSB8fCAoIXN0cmNtcChlcnJvcnMsICJzdHJpY3QiKSkpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDE7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDI7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChlcnJvcnMsICJpZ25vcmUiKSkKLSAgICAgICAgICAgICAgICAgICAga25vd25fZXJyb3JIYW5kbGVyID0gMzsKLSAgICAgICAgICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInhtbGNoYXJyZWZyZXBsYWNlIikpCi0gICAgICAgICAgICAgICAgICAgIGtub3duX2Vycm9ySGFuZGxlciA9IDQ7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBrbm93bl9lcnJvckhhbmRsZXIgPSAwOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgc3dpdGNoIChrbm93bl9lcnJvckhhbmRsZXIpIHsKLSAgICAgICAgICAgIGNhc2UgMTogLyogc3RyaWN0ICovCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfVU5LTk9XTikKKyAgICAgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICAgICAgc3dpdGNoIChlcnJvcl9oYW5kbGVyKSB7CisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kLCByZWFzb24pOwogICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgIGNhc2UgMjogLyogcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHdoaWxlIChjb2xsc3RhcnQrKyA8IGNvbGxlbmQpCi0gICAgICAgICAgICAgICAgICAgICpzdHIrKyA9ICc/JzsgLyogZmFsbCB0aHJvdWdoICovCi0gICAgICAgICAgICBjYXNlIDM6IC8qIGlnbm9yZSAqLworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgorICAgICAgICAgICAgICAgIG1lbXNldChzdHIsICc/JywgY29sbGVuZCAtIGNvbGxzdGFydCk7CisgICAgICAgICAgICAgICAgc3RyICs9IChjb2xsZW5kIC0gY29sbHN0YXJ0KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggaWdub3JlIGVycm9yIGhhbmRsZXIgKi8KKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX0lHTk9SRToKICAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOwogICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgY2FzZSA0OiAvKiB4bWxjaGFycmVmcmVwbGFjZSAqLwotICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIC8qIGRldGVybWluZSByZXBsYWNlbWVudCBzaXplICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gY29sbHN0YXJ0OyBpIDwgY29sbGVuZDsgKytpKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBpbmNyOwotICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPCAxMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzErMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMisyKzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzMrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzQrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAoY2ggPCAxMDAwMDApCi0gICAgICAgICAgICAgICAgICAgICAgICBpbmNyID0gMis1KzE7Ci0gICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKGNoIDwgMTAwMDAwMCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGluY3IgPSAyKzYrMTsKLSAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwotICAgICAgICAgICAgICAgICAgICAgICAgaW5jciA9IDIrNysxOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIGluY3IpCi0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG92ZXJmbG93OwotICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gaW5jcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgc3RyID0gUHlCeXRlc19BU19TVFJJTkcocmVzKSArIHJlc3BvczsKLSAgICAgICAgICAgICAgICAgICAgcmVzc2l6ZSA9IHJlcXVpcmVkc2l6ZTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKi8KLSAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHNwcmludGYoc3RyLCAiJiMlZDsiLCBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSk7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvckhhbmRsZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuY29kaW5nLCByZWFzb24sIHVuaWNvZGUsICZleGMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCB8fCAoUHlVbmljb2RlX0NoZWNrKHJlcHVuaWNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX1JFQURZKHJlcHVuaWNvZGUpID09IC0xKSkKKworICAgICAgICAgICAgY2FzZSBfUHlfRVJST1JfQkFDS1NMQVNIUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IGJhY2tzbGFzaHJlcGxhY2UoJndyaXRlciwgc3RyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZSwgY29sbHN0YXJ0LCBjb2xsZW5kKTsKKyAgICAgICAgICAgICAgICBpZiAoc3RyID09IE5VTEwpCiAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICBpZiAoUHlCeXRlc19DaGVjayhyZXB1bmljb2RlKSkgewotICAgICAgICAgICAgICAgICAgICAvKiBEaXJlY3RseSBjb3B5IGJ5dGVzIHJlc3VsdCB0byBvdXRwdXQuICovCi0gICAgICAgICAgICAgICAgICAgIHJlcHNpemUgPSBQeUJ5dGVzX1NpemUocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChyZXBzaXplID4gMSkgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogTWFrZSByb29tIGZvciBhbGwgYWRkaXRpb25hbCBieXRlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgICAgIHJlc3BvcyA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocmVzc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gcmVwc2l6ZSAtIDEpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVzc2l6ZStyZXBzaXplLTEpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcykgKyByZXNwb3M7Ci0gICAgICAgICAgICAgICAgICAgICAgICByZXNzaXplICs9IHJlcHNpemUtMTsKKyAgICAgICAgICAgICAgICBwb3MgPSBjb2xsZW5kOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gKGNvbGxlbmQgLSBjb2xsc3RhcnQpOworICAgICAgICAgICAgICAgIHN0ciA9IHhtbGNoYXJyZWZyZXBsYWNlKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1bmljb2RlLCBjb2xsc3RhcnQsIGNvbGxlbmQpOworICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAgICAgIHBvcyA9IGNvbGxlbmQ7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNhc2UgX1B5X0VSUk9SX1NVUlJPR0FURUVTQ0FQRToKKyAgICAgICAgICAgICAgICBmb3IgKGkgPSBjb2xsc3RhcnQ7IGkgPCBjb2xsZW5kOyArK2kpIHsKKyAgICAgICAgICAgICAgICAgICAgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNoIDwgMHhkYzgwIHx8IDB4ZGNmZiA8IGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBOb3QgYSBVVEYtOGIgc3Vycm9nYXRlICovCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBtZW1jcHkoc3RyLCBQeUJ5dGVzX0FzU3RyaW5nKHJlcHVuaWNvZGUpLCByZXBzaXplKTsKLSAgICAgICAgICAgICAgICAgICAgc3RyICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgICAgIHBvcyA9IG5ld3BvczsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgICAgICAqc3RyKysgPSAoY2hhcikoY2ggLSAweGRjMDApOworICAgICAgICAgICAgICAgICAgICArK3BvczsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKGkgPj0gY29sbGVuZCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIG5lZWQgbW9yZSBzcGFjZT8gKGF0IGxlYXN0IGVub3VnaCBmb3Igd2hhdCB3ZQotICAgICAgICAgICAgICAgICAgIGhhdmUrdGhlIHJlcGxhY2VtZW50K3RoZSByZXN0IG9mIHRoZSBzdHJpbmcsIHNvCi0gICAgICAgICAgICAgICAgICAgd2Ugd29uJ3QgaGF2ZSB0byBjaGVjayBzcGFjZSBmb3IgZW5jb2RhYmxlIGNoYXJhY3RlcnMpICovCi0gICAgICAgICAgICAgICAgcmVzcG9zID0gc3RyIC0gUHlCeXRlc19BU19TVFJJTkcocmVzKTsKLSAgICAgICAgICAgICAgICByZXBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVwdW5pY29kZSk7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplID0gcmVzcG9zOwotICAgICAgICAgICAgICAgIGlmIChyZXF1aXJlZHNpemUgPiBQWV9TU0laRV9UX01BWCAtIHJlcHNpemUpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gb3ZlcmZsb3c7Ci0gICAgICAgICAgICAgICAgcmVxdWlyZWRzaXplICs9IHJlcHNpemU7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IFBZX1NTSVpFX1RfTUFYIC0gKHNpemUgLSBjb2xsZW5kKSkKLSAgICAgICAgICAgICAgICAgICAgZ290byBvdmVyZmxvdzsKLSAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgKz0gc2l6ZSAtIGNvbGxlbmQ7Ci0gICAgICAgICAgICAgICAgaWYgKHJlcXVpcmVkc2l6ZSA+IHJlc3NpemUpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKHJlc3NpemUgPD0gUFlfU1NJWkVfVF9NQVgvMiAmJiByZXF1aXJlZHNpemUgPCAyKnJlc3NpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZHNpemUgPSAyKnJlc3NpemU7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJnJlcywgcmVxdWlyZWRzaXplKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGNvbGxzdGFydCA9IHBvczsKKyAgICAgICAgICAgICAgICBhc3NlcnQoY29sbHN0YXJ0ICE9IGNvbGxlbmQpOworICAgICAgICAgICAgICAgIC8qIGZhbGxiYWNrIHRvIGdlbmVyYWwgZXJyb3IgaGFuZGxpbmcgKi8KKworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICByZXAgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsICZlcnJvcl9oYW5kbGVyX29iaiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmNvZGluZywgcmVhc29uLCB1bmljb2RlLCAmZXhjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbGxzdGFydCwgY29sbGVuZCwgJm5ld3Bvcyk7CisgICAgICAgICAgICAgICAgaWYgKHJlcCA9PSBOVUxMKQorICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAvKiBzdWJ0cmFjdCBwcmVhbGxvY2F0ZWQgYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICB3cml0ZXIubWluX3NpemUgLT0gMTsKKworICAgICAgICAgICAgICAgIGlmIChQeUJ5dGVzX0NoZWNrKHJlcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgLyogRGlyZWN0bHkgY29weSBieXRlcyByZXN1bHQgdG8gb3V0cHV0LiAqLworICAgICAgICAgICAgICAgICAgICBzdHIgPSBfUHlCeXRlc1dyaXRlcl9Xcml0ZUJ5dGVzKCZ3cml0ZXIsIHN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhyZXApLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfR0VUX1NJWkUocmVwKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICBzdHIgPSBQeUJ5dGVzX0FTX1NUUklORyhyZXMpICsgcmVzcG9zOwotICAgICAgICAgICAgICAgICAgICByZXNzaXplID0gcmVxdWlyZWRzaXplOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiB0aGVyZSBpcyBhbnl0aGluZyB1bmVuY29kYWJsZSBpbiB0aGUgcmVwbGFjZW1lbnQKLSAgICAgICAgICAgICAgICAgICBhbmQgY29weSBpdCB0byB0aGUgb3V0cHV0ICovCi0gICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwdW5pY29kZSwgaSk7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChjID49IGxpbWl0KSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICByYWlzZV9lbmNvZGVfZXhjZXB0aW9uKCZleGMsIGVuY29kaW5nLCB1bmljb2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrKHJlcCkpOworCisgICAgICAgICAgICAgICAgICAgIGlmIChQeVVuaWNvZGVfUkVBRFkocmVwKSA8IDApCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9JU19BU0NJSShyZXApKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBGYXN0IHBhdGg6IGFsbCBjaGFyYWN0ZXJzIGFyZSBzbWFsbGVyIHRoYW4gbGltaXQgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydChsaW1pdCA+PSAxMjgpOworICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KFB5VW5pY29kZV9LSU5EKHJlcCkgPT0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworICAgICAgICAgICAgICAgICAgICAgICAgc3RyID0gX1B5Qnl0ZXNXcml0ZXJfV3JpdGVCeXRlcygmd3JpdGVyLCBzdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9EQVRBKHJlcCksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCkpOwogICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljOworICAgICAgICAgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgcmVwc2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHJlcCk7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ciA9IF9QeUJ5dGVzV3JpdGVyX1ByZXBhcmUoJndyaXRlciwgc3RyLCByZXBzaXplKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIGNoZWNrIGlmIHRoZXJlIGlzIGFueXRoaW5nIHVuZW5jb2RhYmxlIGluIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnQgYW5kIGNvcHkgaXQgdG8gdGhlIG91dHB1dCAqLworICAgICAgICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgcmVwc2l6ZS0tPjA7ICsraSwgKytzdHIpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaCA9IFB5VW5pY29kZV9SRUFEX0NIQVIocmVwLCBpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoY2ggPj0gbGltaXQpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2VfZW5jb2RlX2V4Y2VwdGlvbigmZXhjLCBlbmNvZGluZywgdW5pY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3MsIHBvcysxLCByZWFzb24pOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICpzdHIgPSAoY2hhciljaDsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBwb3MgPSBuZXdwb3M7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlcHVuaWNvZGUpOworICAgICAgICAgICAgICAgIFB5X0NMRUFSKHJlcCk7CiAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8qIElmIG92ZXJhbGxvY2F0aW9uIHdhcyBkaXNhYmxlZCwgZW5zdXJlIHRoYXQgaXQgd2FzIHRoZSBsYXN0CisgICAgICAgICAgICAgICB3cml0ZS4gT3RoZXJ3aXNlLCB3ZSBtaXNzZWQgYW4gb3B0aW1pemF0aW9uICovCisgICAgICAgICAgICBhc3NlcnQod3JpdGVyLm92ZXJhbGxvY2F0ZSB8fCBwb3MgPT0gc2l6ZSk7CiAgICAgICAgIH0KICAgICB9Ci0gICAgLyogUmVzaXplIGlmIHdlIGFsbG9jYXRlZCB0byBtdWNoICovCi0gICAgc2l6ZSA9IHN0ciAtIFB5Qnl0ZXNfQVNfU1RSSU5HKHJlcyk7Ci0gICAgaWYgKHNpemUgPCByZXNzaXplKSB7IC8qIElmIHRoaXMgZmFsbHMgcmVzIHdpbGwgYmUgTlVMTCAqLwotICAgICAgICBhc3NlcnQoc2l6ZSA+PSAwKTsKLSAgICAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmcmVzLCBzaXplKSA8IDApCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgfQogCi0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIFB5X1hERUNSRUYoZXhjKTsKLSAgICByZXR1cm4gcmVzOwotCi0gIG92ZXJmbG93OgotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19PdmVyZmxvd0Vycm9yLAotICAgICAgICAgICAgICAgICAgICAiZW5jb2RlZCByZXN1bHQgaXMgdG9vIGxvbmcgZm9yIGEgUHl0aG9uIHN0cmluZyIpOworICAgIHJldHVybiBfUHlCeXRlc1dyaXRlcl9GaW5pc2goJndyaXRlciwgc3RyKTsKIAogICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihyZXApOworICAgIF9QeUJ5dGVzV3JpdGVyX0RlYWxsb2MoJndyaXRlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjY3NCw4ICs2OTE0LDkgQEAKICAgICBQeV9zc2l6ZV90IGVuZGlucG9zOwogICAgIFB5X3NzaXplX3Qgb3V0cG9zOwogICAgIGNvbnN0IGNoYXIgKmU7Ci0gICAgUHlPYmplY3QgKmVycm9ySGFuZGxlciA9IE5VTEw7CisgICAgUHlPYmplY3QgKmVycm9yX2hhbmRsZXJfb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAKICAgICBpZiAoc2l6ZSA9PSAwKQogICAgICAgICBfUHlfUkVUVVJOX1VOSUNPREVfRU1QVFkoKTsKQEAgLTY3MDQsMTIgKzY5NDUsNDIgQEAKICAgICAgICAgICAgIFB5VW5pY29kZV9XUklURShraW5kLCBkYXRhLCB3cml0ZXIucG9zLCBjKTsKICAgICAgICAgICAgIHdyaXRlci5wb3MrKzsKICAgICAgICAgICAgICsrczsKKyAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgeworCisgICAgICAgIC8qIGJ5dGUgb3V0c2l6ZSByYW5nZSAweDAwLi4weDdmOiBjYWxsIHRoZSBlcnJvciBoYW5kbGVyICovCisKKyAgICAgICAgaWYgKGVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICAgICBlcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgICAgICBzd2l0Y2ggKGVycm9yX2hhbmRsZXIpCisgICAgICAgIHsKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfUkVQTEFDRToKKyAgICAgICAgY2FzZSBfUHlfRVJST1JfU1VSUk9HQVRFRVNDQVBFOgorICAgICAgICAgICAgLyogRmFzdC1wYXRoOiB0aGUgZXJyb3IgaGFuZGxlciBvbmx5IHdyaXRlcyBvbmUgY2hhcmFjdGVyLAorICAgICAgICAgICAgICAgYnV0IHdlIG1heSBzd2l0Y2ggdG8gVUNTMiBhdCB0aGUgZmlyc3Qgd3JpdGUgKi8KKyAgICAgICAgICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kKCZ3cml0ZXIsIFB5VW5pY29kZV8yQllURV9LSU5EKSA8IDApCisgICAgICAgICAgICAgICAgZ290byBvbkVycm9yOworICAgICAgICAgICAga2luZCA9IHdyaXRlci5raW5kOworICAgICAgICAgICAgZGF0YSA9IHdyaXRlci5kYXRhOworCisgICAgICAgICAgICBpZiAoZXJyb3JfaGFuZGxlciA9PSBfUHlfRVJST1JfUkVQTEFDRSkKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgMHhmZmZkKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBQeVVuaWNvZGVfV1JJVEUoa2luZCwgZGF0YSwgd3JpdGVyLnBvcywgYyArIDB4ZGMwMCk7CisgICAgICAgICAgICB3cml0ZXIucG9zKys7CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIF9QeV9FUlJPUl9JR05PUkU6CisgICAgICAgICAgICArK3M7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgc3RhcnRpbnBvcyA9IHMtc3RhcnRzOwogICAgICAgICAgICAgZW5kaW5wb3MgPSBzdGFydGlucG9zICsgMTsKICAgICAgICAgICAgIGlmICh1bmljb2RlX2RlY29kZV9jYWxsX2Vycm9yaGFuZGxlcl93cml0ZXIoCi0gICAgICAgICAgICAgICAgICAgIGVycm9ycywgJmVycm9ySGFuZGxlciwKKyAgICAgICAgICAgICAgICAgICAgZXJyb3JzLCAmZXJyb3JfaGFuZGxlcl9vYmosCiAgICAgICAgICAgICAgICAgICAgICJhc2NpaSIsICJvcmRpbmFsIG5vdCBpbiByYW5nZSgxMjgpIiwKICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0cywgJmUsICZzdGFydGlucG9zLCAmZW5kaW5wb3MsICZleGMsICZzLAogICAgICAgICAgICAgICAgICAgICAmd3JpdGVyKSkKQEAgLTY3MTgsMTMgKzY5ODksMTMgQEAKICAgICAgICAgICAgIGRhdGEgPSB3cml0ZXIuZGF0YTsKICAgICAgICAgfQogICAgIH0KLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBfUHlVbmljb2RlV3JpdGVyX0ZpbmlzaCgmd3JpdGVyKTsKIAogICBvbkVycm9yOgogICAgIF9QeVVuaWNvZGVXcml0ZXJfRGVhbGxvYygmd3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGVycm9ySGFuZGxlcik7CisgICAgUHlfWERFQ1JFRihlcnJvcl9oYW5kbGVyX29iaik7CiAgICAgUHlfWERFQ1JFRihleGMpOwogICAgIHJldHVybiBOVUxMOwogfQpAQCAtNjc2Nyw3ICs3MDM4LDcgQEAKICAgICByZXR1cm4gX1B5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nKHVuaWNvZGUsIE5VTEwpOwogfQogCi0jaWZkZWYgSEFWRV9NQkNTCisjaWZkZWYgTVNfV0lORE9XUwogCiAvKiAtLS0gTUJDUyBjb2RlY3MgZm9yIFdpbmRvd3MgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjc3OSw3ICs3MDUwLDcgQEAKICMgIGRlZmluZSBXQ19FUlJfSU5WQUxJRF9DSEFSUyAweDAwODAKICNlbmRpZgogCi1zdGF0aWMgY2hhcioKK3N0YXRpYyBjb25zdCBjaGFyKgogY29kZV9wYWdlX25hbWUoVUlOVCBjb2RlX3BhZ2UsIFB5T2JqZWN0ICoqb2JqKQogewogICAgICpvYmogPSBOVUxMOwpAQCAtNjg4Nyw3ICs3MTU4LDcgQEAKICAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKICAgICBQeU9iamVjdCAqZXhjID0gTlVMTDsKICAgICBQeU9iamVjdCAqZW5jb2Rpbmdfb2JqID0gTlVMTDsKLSAgICBjaGFyICplbmNvZGluZzsKKyAgICBjb25zdCBjaGFyICplbmNvZGluZzsKICAgICBEV09SRCBlcnI7CiAgICAgaW50IHJldCA9IC0xOwogCkBAIC03MTIzLDcgKzczOTQsNiBAQAogICAgIEJPT0wgdXNlZERlZmF1bHRDaGFyID0gRkFMU0U7CiAgICAgQk9PTCAqcHVzZWREZWZhdWx0Q2hhciA9ICZ1c2VkRGVmYXVsdENoYXI7CiAgICAgaW50IG91dHNpemU7Ci0gICAgUHlPYmplY3QgKmV4YyA9IE5VTEw7CiAgICAgd2NoYXJfdCAqcDsKICAgICBQeV9zc2l6ZV90IHNpemU7CiAgICAgY29uc3QgRFdPUkQgZmxhZ3MgPSBlbmNvZGVfY29kZV9wYWdlX2ZsYWdzKGNvZGVfcGFnZSwgTlVMTCk7CkBAIC03MjMyLDcgKzc1MDIsNyBAQAogICAgIFB5T2JqZWN0ICplcnJvckhhbmRsZXIgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwogICAgIFB5T2JqZWN0ICplbmNvZGluZ19vYmogPSBOVUxMOwotICAgIGNoYXIgKmVuY29kaW5nOworICAgIGNvbnN0IGNoYXIgKmVuY29kaW5nOwogICAgIFB5X3NzaXplX3QgbmV3cG9zLCBuZXdvdXRzaXplOwogICAgIFB5T2JqZWN0ICpyZXA7CiAgICAgaW50IHJldCA9IC0xOwpAQCAtNzQ4Nyw3ICs3NzU3LDcgQEAKIAogI3VuZGVmIE5FRURfUkVUUlkKIAotI2VuZGlmIC8qIEhBVkVfTUJDUyAqLworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogLyogLS0tIENoYXJhY3RlciBNYXBwaW5nIENvZGVjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKQEAgLTgwOTAsNyArODM2MCw3IEBACiBjaGFybWFwX2VuY29kaW5nX2Vycm9yKAogICAgIFB5T2JqZWN0ICp1bmljb2RlLCBQeV9zc2l6ZV90ICppbnBvcywgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgUHlPYmplY3QgKipleGNlcHRpb25PYmplY3QsCi0gICAgaW50ICprbm93bl9lcnJvckhhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JIYW5kbGVyLCBjb25zdCBjaGFyICplcnJvcnMsCisgICAgX1B5X2Vycm9yX2hhbmRsZXIgKmVycm9yX2hhbmRsZXIsIFB5T2JqZWN0ICoqZXJyb3JfaGFuZGxlcl9vYmosIGNvbnN0IGNoYXIgKmVycm9ycywKICAgICBQeU9iamVjdCAqKnJlcywgUHlfc3NpemVfdCAqcmVzcG9zKQogewogICAgIFB5T2JqZWN0ICpyZXB1bmljb2RlID0gTlVMTDsgLyogaW5pdGlhbGl6ZSB0byBwcmV2ZW50IGdjYyB3YXJuaW5nICovCkBAIC04MTM3LDIzICs4NDA3LDE1IEBACiAgICAgfQogICAgIC8qIGNhY2hlIGNhbGxiYWNrIG5hbWUgbG9va3VwCiAgICAgICogKGlmIG5vdCBkb25lIHlldCwgaS5lLiBpdCdzIHRoZSBmaXJzdCBlcnJvcikgKi8KLSAgICBpZiAoKmtub3duX2Vycm9ySGFuZGxlcj09LTEpIHsKLSAgICAgICAgaWYgKChlcnJvcnM9PU5VTEwpIHx8ICghc3RyY21wKGVycm9ycywgInN0cmljdCIpKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAxOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgInJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSAyOwotICAgICAgICBlbHNlIGlmICghc3RyY21wKGVycm9ycywgImlnbm9yZSIpKQotICAgICAgICAgICAgKmtub3duX2Vycm9ySGFuZGxlciA9IDM7Ci0gICAgICAgIGVsc2UgaWYgKCFzdHJjbXAoZXJyb3JzLCAieG1sY2hhcnJlZnJlcGxhY2UiKSkKLSAgICAgICAgICAgICprbm93bl9lcnJvckhhbmRsZXIgPSA0OwotICAgICAgICBlbHNlCi0gICAgICAgICAgICAqa25vd25fZXJyb3JIYW5kbGVyID0gMDsKLSAgICB9Ci0gICAgc3dpdGNoICgqa25vd25fZXJyb3JIYW5kbGVyKSB7Ci0gICAgY2FzZSAxOiAvKiBzdHJpY3QgKi8KKyAgICBpZiAoKmVycm9yX2hhbmRsZXIgPT0gX1B5X0VSUk9SX1VOS05PV04pCisgICAgICAgICplcnJvcl9oYW5kbGVyID0gZ2V0X2Vycm9yX2hhbmRsZXIoZXJyb3JzKTsKKworICAgIHN3aXRjaCAoKmVycm9yX2hhbmRsZXIpIHsKKyAgICBjYXNlIF9QeV9FUlJPUl9TVFJJQ1Q6CiAgICAgICAgIHJhaXNlX2VuY29kZV9leGNlcHRpb24oZXhjZXB0aW9uT2JqZWN0LCBlbmNvZGluZywgdW5pY29kZSwgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCByZWFzb24pOwogICAgICAgICByZXR1cm4gLTE7Ci0gICAgY2FzZSAyOiAvKiByZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9SRVBMQUNFOgogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3M8Y29sbGVuZHBvczsgKytjb2xscG9zKSB7CiAgICAgICAgICAgICB4ID0gY2hhcm1hcGVuY29kZV9vdXRwdXQoJz8nLCBtYXBwaW5nLCByZXMsIHJlc3Bvcyk7CiAgICAgICAgICAgICBpZiAoeD09ZW5jX0VYQ0VQVElPTikgewpAQCAtODE2NSwxMCArODQyNywxMSBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIC8qIGZhbGwgdGhyb3VnaCAqLwotICAgIGNhc2UgMzogLyogaWdub3JlICovCisgICAgY2FzZSBfUHlfRVJST1JfSUdOT1JFOgogICAgICAgICAqaW5wb3MgPSBjb2xsZW5kcG9zOwogICAgICAgICBicmVhazsKLSAgICBjYXNlIDQ6IC8qIHhtbGNoYXJyZWZyZXBsYWNlICovCisKKyAgICBjYXNlIF9QeV9FUlJPUl9YTUxDSEFSUkVGUkVQTEFDRToKICAgICAgICAgLyogZ2VuZXJhdGUgcmVwbGFjZW1lbnQgKHRlbXBvcmFyaWx5IChtaXMpdXNlcyBwKSAqLwogICAgICAgICBmb3IgKGNvbGxwb3MgPSBjb2xsc3RhcnRwb3M7IGNvbGxwb3MgPCBjb2xsZW5kcG9zOyArK2NvbGxwb3MpIHsKICAgICAgICAgICAgIGNoYXIgYnVmZmVyWzIrMjkrMSsxXTsKQEAgLTgxODYsOCArODQ0OSw5IEBACiAgICAgICAgIH0KICAgICAgICAgKmlucG9zID0gY29sbGVuZHBvczsKICAgICAgICAgYnJlYWs7CisKICAgICBkZWZhdWx0OgotICAgICAgICByZXB1bmljb2RlID0gdW5pY29kZV9lbmNvZGVfY2FsbF9lcnJvcmhhbmRsZXIoZXJyb3JzLCBlcnJvckhhbmRsZXIsCisgICAgICAgIHJlcHVuaWNvZGUgPSB1bmljb2RlX2VuY29kZV9jYWxsX2Vycm9yaGFuZGxlcihlcnJvcnMsIGVycm9yX2hhbmRsZXJfb2JqLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW5jb2RpbmcsIHJlYXNvbiwgdW5pY29kZSwgZXhjZXB0aW9uT2JqZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sbHN0YXJ0cG9zLCBjb2xsZW5kcG9zLCAmbmV3cG9zKTsKICAgICAgICAgaWYgKHJlcHVuaWNvZGUgPT0gTlVMTCkKQEAgLTgyNTAsMTIgKzg1MTQsOSBAQAogICAgIFB5X3NzaXplX3Qgc2l6ZTsKICAgICAvKiBjdXJyZW50IG91dHB1dCBwb3NpdGlvbiAqLwogICAgIFB5X3NzaXplX3QgcmVzcG9zID0gMDsKLSAgICBQeU9iamVjdCAqZXJyb3JIYW5kbGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZXJyb3JfaGFuZGxlcl9vYmogPSBOVUxMOwogICAgIFB5T2JqZWN0ICpleGMgPSBOVUxMOwotICAgIC8qIHRoZSBmb2xsb3dpbmcgdmFyaWFibGUgaXMgdXNlZCBmb3IgY2FjaGluZyBzdHJpbmcgY29tcGFyaXNvbnMKLSAgICAgKiAtMT1ub3QgaW5pdGlhbGl6ZWQsIDA9dW5rbm93biwgMT1zdHJpY3QsIDI9cmVwbGFjZSwKLSAgICAgKiAzPWlnbm9yZSwgND14bWxjaGFycmVmcmVwbGFjZSAqLwotICAgIGludCBrbm93bl9lcnJvckhhbmRsZXIgPSAtMTsKKyAgICBfUHlfZXJyb3JfaGFuZGxlciBlcnJvcl9oYW5kbGVyID0gX1B5X0VSUk9SX1VOS05PV047CiAgICAgdm9pZCAqZGF0YTsKICAgICBpbnQga2luZDsKIApAQCAtODI4Niw3ICs4NTQ3LDcgQEAKICAgICAgICAgaWYgKHg9PWVuY19GQUlMRUQpIHsgLyogdW5lbmNvZGFibGUgY2hhcmFjdGVyICovCiAgICAgICAgICAgICBpZiAoY2hhcm1hcF9lbmNvZGluZ19lcnJvcih1bmljb2RlLCAmaW5wb3MsIG1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmZXhjLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmtub3duX2Vycm9ySGFuZGxlciwgJmVycm9ySGFuZGxlciwgZXJyb3JzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmVycm9yX2hhbmRsZXIsICZlcnJvcl9oYW5kbGVyX29iaiwgZXJyb3JzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnJlcywgJnJlc3BvcykpIHsKICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgICAgICAgICB9CkBAIC04MzAyLDEzICs4NTYzLDEzIEBACiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAKICAgICBQeV9YREVDUkVGKGV4Yyk7Ci0gICAgUHlfWERFQ1JFRihlcnJvckhhbmRsZXIpOworICAgIFB5X1hERUNSRUYoZXJyb3JfaGFuZGxlcl9vYmopOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKICAgICBQeV9YREVDUkVGKHJlcyk7CiAgICAgUHlfWERFQ1JFRihleGMpOwotICAgIFB5X1hERUNSRUYoZXJyb3JIYW5kbGVyKTsKKyAgICBQeV9YREVDUkVGKGVycm9yX2hhbmRsZXJfb2JqKTsKICAgICByZXR1cm4gTlVMTDsKIH0KIApAQCAtODM3NSw3ICs4NjM2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnRwb3MsIFB5X3NzaXplX3QgZW5kcG9zLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqbmV3cG9zKQogewotICAgIHN0YXRpYyBjaGFyICphcmdwYXJzZSA9ICJPIW47dHJhbnNsYXRpbmcgZXJyb3IgaGFuZGxlciBtdXN0IHJldHVybiAoc3RyLCBpbnQpIHR1cGxlIjsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqYXJncGFyc2UgPSAiTyFuO3RyYW5zbGF0aW5nIGVycm9yIGhhbmRsZXIgbXVzdCByZXR1cm4gKHN0ciwgaW50KSB0dXBsZSI7CiAKICAgICBQeV9zc2l6ZV90IGlfbmV3cG9zOwogICAgIFB5T2JqZWN0ICpyZXN0dXBsZTsKQEAgLTg2MzIsNyArODg5Myw3IEBACiAgICAgcmV0dXJuIHJlczsKIH0KIAotUHlPYmplY3QgKgorc3RhdGljIFB5T2JqZWN0ICoKIF9QeVVuaWNvZGVfVHJhbnNsYXRlQ2hhcm1hcChQeU9iamVjdCAqaW5wdXQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm1hcHBpbmcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXJyb3JzKQpAQCAtODY2MSwxMCArODkyMiw4IEBACiAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKGlucHV0KTsKICAgICBzaXplID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoaW5wdXQpOwogCi0gICAgaWYgKHNpemUgPT0gMCkgewotICAgICAgICBQeV9JTkNSRUYoaW5wdXQpOwotICAgICAgICByZXR1cm4gaW5wdXQ7Ci0gICAgfQorICAgIGlmIChzaXplID09IDApCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChpbnB1dCk7CiAKICAgICAvKiBhbGxvY2F0ZSBlbm91Z2ggZm9yIGEgc2ltcGxlIDE6MSB0cmFuc2xhdGlvbiB3aXRob3V0CiAgICAgICAgcmVwbGFjZW1lbnRzLCBpZiB3ZSBuZWVkIG1vcmUsIHdlJ2xsIHJlc2l6ZSAqLwpAQCAtODc3NSwxNCArOTAzNCw5IEBACiAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICptYXBwaW5nLAogICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJvcnMpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgcmVzdWx0ID0gX1B5VW5pY29kZV9UcmFuc2xhdGVDaGFybWFwKHN0ciwgbWFwcGluZywgZXJyb3JzKTsKLSAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBfUHlVbmljb2RlX1RyYW5zbGF0ZUNoYXJtYXAoc3RyLCBtYXBwaW5nLCBlcnJvcnMpOwogfQogCiBzdGF0aWMgUHlfVUNTNApAQCAtODk2NCw5ICs5MjE4LDEwIEBACiAgICAgfQogCiBzdGF0aWMgUHlfc3NpemVfdAotYW55X2ZpbmRfc2xpY2UoaW50IGRpcmVjdGlvbiwgUHlPYmplY3QqIHMxLCBQeU9iamVjdCogczIsCithbnlfZmluZF9zbGljZShQeU9iamVjdCogczEsIFB5T2JqZWN0KiBzMiwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhcnQsCi0gICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCkKKyAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAorICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKICAgICBpbnQga2luZDEsIGtpbmQyOwogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwpAQCAtOTEzNSw1NCArOTM5MCwzNSBAQAogICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kKQogewogICAgIFB5X3NzaXplX3QgcmVzdWx0OwotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzdWJfb2JqOwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSA9IE5VTEwsICpidWYyID0gTlVMTDsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgc3ViX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKCFzdWJfb2JqKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1Yl9vYmopID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHJfb2JqKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KIAotICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7Ci0gICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJfb2JqKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKKyAgICBraW5kMSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAKLSAgICBsZW4xID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyX29iaik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yl9vYmopOworICAgIGxlbjEgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOworICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHIpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yl9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQogCi0gICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwotICAgIGJ1ZjIgPSBQeVVuaWNvZGVfREFUQShzdWJfb2JqKTsKKyAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yl9vYmosIGtpbmQxKTsKKyAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1YnN0ciwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCiAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6Ci0gICAgICAgIGlmIChQeVVuaWNvZGVfSVNfQVNDSUkoc3RyX29iaikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1Yl9vYmopKQorICAgICAgICBpZiAoUHlVbmljb2RlX0lTX0FTQ0lJKHN0cikgJiYgUHlVbmljb2RlX0lTX0FTQ0lJKHN1YnN0cikpCiAgICAgICAgICAgICByZXN1bHQgPSBhc2NpaWxpYl9jb3VudCgKICAgICAgICAgICAgICAgICAoKFB5X1VDUzEqKWJ1ZjEpICsgc3RhcnQsIGVuZCAtIHN0YXJ0LAogICAgICAgICAgICAgICAgIGJ1ZjIsIGxlbjIsIFBZX1NTSVpFX1RfTUFYCkBAIC05MjA5LDE2ICs5NDQ1LDExIEBACiAgICAgICAgIGFzc2VydCgwKTsgcmVzdWx0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwotCiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCiAgICAgcmV0dXJuIHJlc3VsdDsKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoc3ViX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSAmJiBidWYyKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogICAgIHJldHVybiAtMTsKQEAgLTkyMjYsMzUgKzk0NTcsMTUgQEAKIAogUHlfc3NpemVfdAogUHlVbmljb2RlX0ZpbmQoUHlPYmplY3QgKnN0ciwKLSAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIsCisgICAgICAgICAgICAgICBQeU9iamVjdCAqc3Vic3RyLAogICAgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFydCwKICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgZW5kLAogICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKCFzdHIpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwKQogICAgICAgICByZXR1cm4gLTI7Ci0gICAgc3ViID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3ViKTsKLSAgICBpZiAoIXN1YikgewotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKLSAgICAgICAgcmV0dXJuIC0yOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YikgPT0gLTEgfHwgUHlVbmljb2RlX1JFQURZKHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTI7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoZGlyZWN0aW9uLAotICAgICAgICBzdHIsIHN1Yiwgc3RhcnQsIGVuZAotICAgICAgICApOwotCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBhbnlfZmluZF9zbGljZShzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogUHlfc3NpemVfdApAQCAtOTM1NywyMiArOTU2OCwxMCBAQAogICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGVuZCwKICAgICAgICAgICAgICAgICAgICAgaW50IGRpcmVjdGlvbikKIHsKLSAgICBQeV9zc2l6ZV90IHJlc3VsdDsKLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cik7Ci0gICAgaWYgKHN0ciA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzdWJzdHIpIDwgMCkKICAgICAgICAgcmV0dXJuIC0xOwotICAgIHN1YnN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN1YnN0cik7Ci0gICAgaWYgKHN1YnN0ciA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gdGFpbG1hdGNoKHN0ciwgc3Vic3RyLAotICAgICAgICAgICAgICAgICAgICAgICBzdGFydCwgZW5kLCBkaXJlY3Rpb24pOwotICAgIFB5X0RFQ1JFRihzdHIpOwotICAgIFB5X0RFQ1JFRihzdWJzdHIpOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHRhaWxtYXRjaChzdHIsIHN1YnN0ciwgc3RhcnQsIGVuZCwgZGlyZWN0aW9uKTsKIH0KIAogLyogQXBwbHkgZml4ZmN0IGZpbHRlciB0byB0aGUgVW5pY29kZSBvYmplY3Qgc2VsZiBhbmQgcmV0dXJuIGEKQEAgLTk2NzQsMjAgKzk4NzMsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9Kb2luKFB5T2JqZWN0ICpzZXBhcmF0b3IsIFB5T2JqZWN0ICpzZXEpCiB7Ci0gICAgUHlPYmplY3QgKnNlcCA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCBzZXBsZW47Ci0gICAgUHlPYmplY3QgKnJlcyA9IE5VTEw7IC8qIHRoZSByZXN1bHQgKi8KLSAgICBQeU9iamVjdCAqZnNlcTsgICAgICAgICAgLyogUHlTZXF1ZW5jZV9GYXN0KHNlcSkgKi8KLSAgICBQeV9zc2l6ZV90IHNlcWxlbjsgICAgICAgLyogbGVuKGZzZXEpIC0tIG51bWJlciBvZiBpdGVtcyBpbiBzZXF1ZW5jZSAqLworICAgIFB5T2JqZWN0ICpyZXM7CisgICAgUHlPYmplY3QgKmZzZXE7CisgICAgUHlfc3NpemVfdCBzZXFsZW47CiAgICAgUHlPYmplY3QgKippdGVtczsKLSAgICBQeU9iamVjdCAqaXRlbTsKLSAgICBQeV9zc2l6ZV90IHN6LCBpLCByZXNfb2Zmc2V0OwotICAgIFB5X1VDUzQgbWF4Y2hhcjsKLSAgICBQeV9VQ1M0IGl0ZW1fbWF4Y2hhcjsKLSAgICBpbnQgdXNlX21lbWNweTsKLSAgICB1bnNpZ25lZCBjaGFyICpyZXNfZGF0YSA9IE5VTEwsICpzZXBfZGF0YSA9IE5VTEw7Ci0gICAgUHlPYmplY3QgKmxhc3Rfb2JqOwotICAgIHVuc2lnbmVkIGludCBraW5kID0gMDsKIAogICAgIGZzZXEgPSBQeVNlcXVlbmNlX0Zhc3Qoc2VxLCAiY2FuIG9ubHkgam9pbiBhbiBpdGVyYWJsZSIpOwogICAgIGlmIChmc2VxID09IE5VTEwpIHsKQEAgLTk2OTgsMjEgKzk4ODcsMzkgQEAKICAgICAgKiBzbyB3ZSBhcmUgc3VyZSB0aGF0IGZzZXEgd29uJ3QgYmUgbXV0YXRlZC4KICAgICAgKi8KIAorICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIHNlcWxlbiA9IFB5U2VxdWVuY2VfRmFzdF9HRVRfU0laRShmc2VxKTsKKyAgICByZXMgPSBfUHlVbmljb2RlX0pvaW5BcnJheShzZXBhcmF0b3IsIGl0ZW1zLCBzZXFsZW4pOworICAgIFB5X0RFQ1JFRihmc2VxKTsKKyAgICByZXR1cm4gcmVzOworfQorCitQeU9iamVjdCAqCitfUHlVbmljb2RlX0pvaW5BcnJheShQeU9iamVjdCAqc2VwYXJhdG9yLCBQeU9iamVjdCAqKml0ZW1zLCBQeV9zc2l6ZV90IHNlcWxlbikKK3sKKyAgICBQeU9iamVjdCAqcmVzID0gTlVMTDsgLyogdGhlIHJlc3VsdCAqLworICAgIFB5T2JqZWN0ICpzZXAgPSBOVUxMOworICAgIFB5X3NzaXplX3Qgc2VwbGVuOworICAgIFB5T2JqZWN0ICppdGVtOworICAgIFB5X3NzaXplX3Qgc3osIGksIHJlc19vZmZzZXQ7CisgICAgUHlfVUNTNCBtYXhjaGFyOworICAgIFB5X1VDUzQgaXRlbV9tYXhjaGFyOworICAgIGludCB1c2VfbWVtY3B5OworICAgIHVuc2lnbmVkIGNoYXIgKnJlc19kYXRhID0gTlVMTCwgKnNlcF9kYXRhID0gTlVMTDsKKyAgICBQeU9iamVjdCAqbGFzdF9vYmo7CisgICAgdW5zaWduZWQgaW50IGtpbmQgPSAwOworCiAgICAgLyogSWYgZW1wdHkgc2VxdWVuY2UsIHJldHVybiB1IiIuICovCiAgICAgaWYgKHNlcWxlbiA9PSAwKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihmc2VxKTsKICAgICAgICAgX1B5X1JFVFVSTl9VTklDT0RFX0VNUFRZKCk7CiAgICAgfQogCiAgICAgLyogSWYgc2luZ2xldG9uIHNlcXVlbmNlIHdpdGggYW4gZXhhY3QgVW5pY29kZSwgcmV0dXJuIHRoYXQuICovCiAgICAgbGFzdF9vYmogPSBOVUxMOwotICAgIGl0ZW1zID0gUHlTZXF1ZW5jZV9GYXN0X0lURU1TKGZzZXEpOwogICAgIGlmIChzZXFsZW4gPT0gMSkgewogICAgICAgICBpZiAoUHlVbmljb2RlX0NoZWNrRXhhY3QoaXRlbXNbMF0pKSB7CiAgICAgICAgICAgICByZXMgPSBpdGVtc1swXTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihyZXMpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZzZXEpOwogICAgICAgICAgICAgcmV0dXJuIHJlczsKICAgICAgICAgfQogICAgICAgICBzZXBsZW4gPSAwOwpAQCAtOTgxMCw3ICsxMDAxNyw3IEBACiAKICAgICAgICAgICAgIC8qIENvcHkgaXRlbSwgYW5kIG1heWJlIHRoZSBzZXBhcmF0b3IuICovCiAgICAgICAgICAgICBpZiAoaSAmJiBzZXBsZW4gIT0gMCkgewotICAgICAgICAgICAgICAgIFB5X01FTUNQWShyZXNfZGF0YSwKKyAgICAgICAgICAgICAgICBtZW1jcHkocmVzX2RhdGEsCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlcF9kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBraW5kICogc2VwbGVuKTsKICAgICAgICAgICAgICAgICByZXNfZGF0YSArPSBraW5kICogc2VwbGVuOwpAQCAtOTgxOCw3ICsxMDAyNSw3IEBACiAKICAgICAgICAgICAgIGl0ZW1sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChpdGVtKTsKICAgICAgICAgICAgIGlmIChpdGVtbGVuICE9IDApIHsKLSAgICAgICAgICAgICAgICBQeV9NRU1DUFkocmVzX2RhdGEsCisgICAgICAgICAgICAgICAgbWVtY3B5KHJlc19kYXRhLAogICAgICAgICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfREFUQShpdGVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAga2luZCAqIGl0ZW1sZW4pOwogICAgICAgICAgICAgICAgIHJlc19kYXRhICs9IGtpbmQgKiBpdGVtbGVuOwpAQCAtOTg0NywxMyArMTAwNTQsMTEgQEAKICAgICAgICAgYXNzZXJ0KHJlc19vZmZzZXQgPT0gUHlVbmljb2RlX0dFVF9MRU5HVEgocmVzKSk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKGZzZXEpOwogICAgIFB5X1hERUNSRUYoc2VwKTsKICAgICBhc3NlcnQoX1B5VW5pY29kZV9DaGVja0NvbnNpc3RlbmN5KHJlcywgMSkpOwogICAgIHJldHVybiByZXM7CiAKICAgb25FcnJvcjoKLSAgICBQeV9ERUNSRUYoZnNlcSk7CiAgICAgUHlfWERFQ1JFRihzZXApOwogICAgIFB5X1hERUNSRUYocmVzKTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTk5NzgsMTMgKzEwMTgzLDggQEAKIHsKICAgICBQeU9iamVjdCAqbGlzdDsKIAotICAgIHN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cmluZyk7Ci0gICAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJpbmcpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKICAgICBzd2l0Y2ggKFB5VW5pY29kZV9LSU5EKHN0cmluZykpIHsKICAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOgpAQCAtMTAwMTEsNyArMTAyMTEsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgICAgIGxpc3QgPSAwOwogICAgIH0KLSAgICBQeV9ERUNSRUYoc3RyaW5nKTsKICAgICByZXR1cm4gbGlzdDsKIH0KIApAQCAtMTA1NzIsMjggKzEwNzcxLDI3IEBACiB9CiAKIAotLyogQXJndW1lbnQgY29udmVydGVyLiAgQ29lcmNlcyB0byBhIHNpbmdsZSB1bmljb2RlIGNoYXJhY3RlciAqLworLyogQXJndW1lbnQgY29udmVydGVyLiBBY2NlcHRzIGEgc2luZ2xlIFVuaWNvZGUgY2hhcmFjdGVyLiAqLwogCiBzdGF0aWMgaW50CiBjb252ZXJ0X3VjKFB5T2JqZWN0ICpvYmosIHZvaWQgKmFkZHIpCiB7CiAgICAgUHlfVUNTNCAqZmlsbGNoYXJsb2MgPSAoUHlfVUNTNCAqKWFkZHI7Ci0gICAgUHlPYmplY3QgKnVuaW9iajsKIAotICAgIHVuaW9iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KG9iaik7Ci0gICAgaWYgKHVuaW9iaiA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGZpbGwgY2hhcmFjdGVyIGNhbm5vdCBiZSBjb252ZXJ0ZWQgdG8gVW5pY29kZSIpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKG9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJUaGUgZmlsbCBjaGFyYWN0ZXIgbXVzdCBiZSBhIHVuaWNvZGUgY2hhcmFjdGVyLCAiCisgICAgICAgICAgICAgICAgICAgICAibm90ICUuMTAwcyIsIFB5X1RZUEUob2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgodW5pb2JqKSAhPSAxKSB7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShvYmopIDwgMCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgaWYgKFB5VW5pY29kZV9HRVRfTEVOR1RIKG9iaikgIT0gMSkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBmaWxsIGNoYXJhY3RlciBtdXN0IGJlIGV4YWN0bHkgb25lIGNoYXJhY3RlciBsb25nIik7Ci0gICAgICAgIFB5X0RFQ1JFRih1bmlvYmopOwogICAgICAgICByZXR1cm4gMDsKICAgICB9Ci0gICAgKmZpbGxjaGFybG9jID0gUHlVbmljb2RlX1JFQURfQ0hBUih1bmlvYmosIDApOwotICAgIFB5X0RFQ1JFRih1bmlvYmopOworICAgICpmaWxsY2hhcmxvYyA9IFB5VW5pY29kZV9SRUFEX0NIQVIob2JqLCAwKTsKICAgICByZXR1cm4gMTsKIH0KIApAQCAtMTA3NDMsNyArMTA5NDEsNyBAQAogI3VuZGVmIENPTVBBUkUKIH0KIAotUHlfTE9DQUwoaW50KQorc3RhdGljIGludAogdW5pY29kZV9jb21wYXJlX2VxKFB5T2JqZWN0ICpzdHIxLCBQeU9iamVjdCAqc3RyMikKIHsKICAgICBpbnQga2luZDsKQEAgLTEwOTA5LDU5ICsxMTEwNyw0OSBAQAogfQogCiBpbnQKLVB5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqY29udGFpbmVyLCBQeU9iamVjdCAqZWxlbWVudCkKK19QeVVuaWNvZGVfRVEoUHlPYmplY3QgKmFhLCBQeU9iamVjdCAqYmIpCiB7Ci0gICAgUHlPYmplY3QgKnN0ciwgKnN1YjsKKyAgICByZXR1cm4gdW5pY29kZV9lcShhYSwgYmIpOworfQorCitpbnQKK1B5VW5pY29kZV9Db250YWlucyhQeU9iamVjdCAqc3RyLCBQeU9iamVjdCAqc3Vic3RyKQorewogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogICAgIGludCByZXN1bHQ7CiAKLSAgICAvKiBDb2VyY2UgdGhlIHR3byBhcmd1bWVudHMgKi8KLSAgICBzdWIgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChlbGVtZW50KTsKLSAgICBpZiAoIXN1YikgeworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cikpIHsKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlcyIsCi0gICAgICAgICAgICAgICAgICAgICBlbGVtZW50LT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICInaW4gPHN0cmluZz4nIHJlcXVpcmVzIHN0cmluZyBhcyBsZWZ0IG9wZXJhbmQsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHIpLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KLQotICAgIHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGNvbnRhaW5lcik7Ci0gICAgaWYgKCFzdHIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHIpID09IC0xKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgfQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHIpIDwgMCkKKyAgICAgICAgcmV0dXJuIC0xOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzdHIpOwotICAgIGtpbmQyID0gUHlVbmljb2RlX0tJTkQoc3ViKTsKLSAgICBpZiAoa2luZDEgPCBraW5kMikgewotICAgICAgICBQeV9ERUNSRUYoc3ViKTsKLSAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzdWJzdHIpOworICAgIGlmIChraW5kMSA8IGtpbmQyKQogICAgICAgICByZXR1cm4gMDsKLSAgICB9CiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN0cik7Ci0gICAgbGVuMiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHN1Yik7Ci0gICAgaWYgKGxlbjEgPCBsZW4yKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICBQeV9ERUNSRUYoc3RyKTsKKyAgICBsZW4yID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoc3Vic3RyKTsKKyAgICBpZiAobGVuMSA8IGxlbjIpCiAgICAgICAgIHJldHVybiAwOwotICAgIH0KICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc3RyKTsKLSAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3ViKTsKKyAgICBidWYyID0gUHlVbmljb2RlX0RBVEEoc3Vic3RyKTsKICAgICBpZiAobGVuMiA9PSAxKSB7CiAgICAgICAgIFB5X1VDUzQgY2ggPSBQeVVuaWNvZGVfUkVBRChraW5kMiwgYnVmMiwgMCk7CiAgICAgICAgIHJlc3VsdCA9IGZpbmRjaGFyKChjb25zdCBjaGFyICopYnVmMSwga2luZDEsIGxlbjEsIGNoLCAxKSAhPSAtMTsKLSAgICAgICAgUHlfREVDUkVGKHN1Yik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpIHsKLSAgICAgICAgYnVmMiA9IF9QeVVuaWNvZGVfQXNLaW5kKHN1Yiwga2luZDEpOwotICAgICAgICBpZiAoIWJ1ZjIpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWIpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN0cik7CisgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHIsIGtpbmQxKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9CiAgICAgfQogCiAgICAgc3dpdGNoIChraW5kMSkgewpAQCAtMTA5NzksOSArMTExNjcsNiBAQAogICAgICAgICBhc3NlcnQoMCk7CiAgICAgfQogCi0gICAgUHlfREVDUkVGKHN0cik7Ci0gICAgUHlfREVDUkVGKHN1Yik7Ci0KICAgICBpZiAoa2luZDIgIT0ga2luZDEpCiAgICAgICAgIFB5TWVtX0ZyZWUoYnVmMik7CiAKQEAgLTEwOTkzLDU2ICsxMTE3OCw0MCBAQAogUHlPYmplY3QgKgogUHlVbmljb2RlX0NvbmNhdChQeU9iamVjdCAqbGVmdCwgUHlPYmplY3QgKnJpZ2h0KQogewotICAgIFB5T2JqZWN0ICp1ID0gTlVMTCwgKnYgPSBOVUxMLCAqdzsKKyAgICBQeU9iamVjdCAqcmVzdWx0OwogICAgIFB5X1VDUzQgbWF4Y2hhciwgbWF4Y2hhcjI7Ci0gICAgUHlfc3NpemVfdCB1X2xlbiwgdl9sZW4sIG5ld19sZW47CisgICAgUHlfc3NpemVfdCBsZWZ0X2xlbiwgcmlnaHRfbGVuLCBuZXdfbGVuOwogCi0gICAgLyogQ29lcmNlIHRoZSB0d28gYXJndW1lbnRzICovCi0gICAgdSA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGxlZnQpOwotICAgIGlmICh1ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKLSAgICB2ID0gUHlVbmljb2RlX0Zyb21PYmplY3QocmlnaHQpOwotICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgIGdvdG8gb25FcnJvcjsKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUobGVmdCkgPCAwIHx8IGVuc3VyZV91bmljb2RlKHJpZ2h0KSA8IDApCisgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgLyogU2hvcnRjdXRzICovCi0gICAgaWYgKHYgPT0gdW5pY29kZV9lbXB0eSkgewotICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgIHJldHVybiB1OwotICAgIH0KLSAgICBpZiAodSA9PSB1bmljb2RlX2VtcHR5KSB7Ci0gICAgICAgIFB5X0RFQ1JFRih1KTsKLSAgICAgICAgcmV0dXJuIHY7Ci0gICAgfQorICAgIGlmIChsZWZ0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChyaWdodCk7CisgICAgaWYgKHJpZ2h0ID09IHVuaWNvZGVfZW1wdHkpCisgICAgICAgIHJldHVybiBQeVVuaWNvZGVfRnJvbU9iamVjdChsZWZ0KTsKIAotICAgIHVfbGVuID0gUHlVbmljb2RlX0dFVF9MRU5HVEgodSk7Ci0gICAgdl9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh2KTsKLSAgICBpZiAodV9sZW4gPiBQWV9TU0laRV9UX01BWCAtIHZfbGVuKSB7CisgICAgbGVmdF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChsZWZ0KTsKKyAgICByaWdodF9sZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChyaWdodCk7CisgICAgaWYgKGxlZnRfbGVuID4gUFlfU1NJWkVfVF9NQVggLSByaWdodF9sZW4pIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5ncyBhcmUgdG9vIGxhcmdlIHRvIGNvbmNhdCIpOwotICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBuZXdfbGVuID0gdV9sZW4gKyB2X2xlbjsKKyAgICBuZXdfbGVuID0gbGVmdF9sZW4gKyByaWdodF9sZW47CiAKLSAgICBtYXhjaGFyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHUpOwotICAgIG1heGNoYXIyID0gUHlVbmljb2RlX01BWF9DSEFSX1ZBTFVFKHYpOworICAgIG1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUobGVmdCk7CisgICAgbWF4Y2hhcjIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUocmlnaHQpOwogICAgIG1heGNoYXIgPSBQeV9NQVgobWF4Y2hhciwgbWF4Y2hhcjIpOwogCiAgICAgLyogQ29uY2F0IHRoZSB0d28gVW5pY29kZSBzdHJpbmdzICovCi0gICAgdyA9IFB5VW5pY29kZV9OZXcobmV3X2xlbiwgbWF4Y2hhcik7Ci0gICAgaWYgKHcgPT0gTlVMTCkKLSAgICAgICAgZ290byBvbkVycm9yOwotICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHcsIDAsIHUsIDAsIHVfbGVuKTsKLSAgICBfUHlVbmljb2RlX0Zhc3RDb3B5Q2hhcmFjdGVycyh3LCB1X2xlbiwgdiwgMCwgdl9sZW4pOwotICAgIFB5X0RFQ1JFRih1KTsKLSAgICBQeV9ERUNSRUYodik7Ci0gICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeSh3LCAxKSk7Ci0gICAgcmV0dXJuIHc7Ci0KLSAgb25FcnJvcjoKLSAgICBQeV9YREVDUkVGKHUpOwotICAgIFB5X1hERUNSRUYodik7Ci0gICAgcmV0dXJuIE5VTEw7CisgICAgcmVzdWx0ID0gUHlVbmljb2RlX05ldyhuZXdfbGVuLCBtYXhjaGFyKTsKKyAgICBpZiAocmVzdWx0ID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgMCwgbGVmdCwgMCwgbGVmdF9sZW4pOworICAgIF9QeVVuaWNvZGVfRmFzdENvcHlDaGFyYWN0ZXJzKHJlc3VsdCwgbGVmdF9sZW4sIHJpZ2h0LCAwLCByaWdodF9sZW4pOworICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3kocmVzdWx0LCAxKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogdm9pZApAQCAtMTExMzMsNiArMTEzMDIsMjUgQEAKICAgICBQeV9YREVDUkVGKHJpZ2h0KTsKIH0KIAorLyoKK1dyYXBzIHN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzKCkgYW5kIGFkZGl0aW9uYWxseSBlbnN1cmVzIHRoYXQgdGhlCitmaXJzdCBhcmd1bWVudCBpcyBhIHVuaWNvZGUgb2JqZWN0LgorKi8KKworc3RhdGljIGlubGluZSBpbnQKK3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZShjb25zdCBjaGFyICogZnVuY3Rpb25fbmFtZSwgUHlPYmplY3QgKmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCAqc3RhcnQsIFB5X3NzaXplX3QgKmVuZCkKK3sKKyAgICBpZihzdHJpbmdsaWJfcGFyc2VfYXJnc19maW5kcyhmdW5jdGlvbl9uYW1lLCBhcmdzLCBzdWJzdHJpbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhcnQsIGVuZCkpIHsKKyAgICAgICAgaWYgKGVuc3VyZV91bmljb2RlKCpzdWJzdHJpbmcpIDwgMCkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIFB5RG9jX1NUUlZBUihjb3VudF9fZG9jX18sCiAgICAgICAgICAgICAgIlMuY291bnQoc3ViWywgc3RhcnRbLCBlbmRdXSkgLT4gaW50XG5cCiBcblwKQEAgLTExMTUxLDMxICsxMTMzOSwyNiBAQAogICAgIHZvaWQgKmJ1ZjEsICpidWYyOwogICAgIFB5X3NzaXplX3QgbGVuMSwgbGVuMiwgaXJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiY291bnQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJjb3VudCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAga2luZDEgPSBQeVVuaWNvZGVfS0lORChzZWxmKTsKICAgICBraW5kMiA9IFB5VW5pY29kZV9LSU5EKHN1YnN0cmluZyk7Ci0gICAgaWYgKGtpbmQxIDwga2luZDIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGtpbmQxIDwga2luZDIpCiAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmcoMCk7Ci0gICAgfQorCiAgICAgbGVuMSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHNlbGYpOwogICAgIGxlbjIgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdWJzdHJpbmcpOwogICAgIEFESlVTVF9JTkRJQ0VTKHN0YXJ0LCBlbmQsIGxlbjEpOwotICAgIGlmIChlbmQgLSBzdGFydCA8IGxlbjIpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKGVuZCAtIHN0YXJ0IDwgbGVuMikKICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygwKTsKLSAgICB9CisKICAgICBidWYxID0gUHlVbmljb2RlX0RBVEEoc2VsZik7CiAgICAgYnVmMiA9IFB5VW5pY29kZV9EQVRBKHN1YnN0cmluZyk7CiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKSB7CiAgICAgICAgIGJ1ZjIgPSBfUHlVbmljb2RlX0FzS2luZChzdWJzdHJpbmcsIGtpbmQxKTsKLSAgICAgICAgaWYgKCFidWYyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICAgICAgaWYgKCFidWYyKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KICAgICB9CiAgICAgc3dpdGNoIChraW5kMSkgewogICAgIGNhc2UgUHlVbmljb2RlXzFCWVRFX0tJTkQ6CkBAIC0xMTIwNSw4ICsxMTM4OCw2IEBACiAgICAgaWYgKGtpbmQyICE9IGtpbmQxKQogICAgICAgICBQeU1lbV9GcmVlKGJ1ZjIpOwogCi0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0KICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC0xMTM0MCwyMiArMTE1MjEsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJmaW5kIiwgYXJncywgJnN1YnN0cmluZywgJnN0YXJ0LCAmZW5kKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN1YnN0cmluZykgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAotICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKDEsIHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCk7Ci0KLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZShzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIDEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTQyOCwyMiArMTE2MDAsMTMgQEAKICAgICBQeV9zc2l6ZV90IHN0YXJ0ID0gMDsKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoImluZGV4IiwgYXJncywgJnN1YnN0cmluZywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnN0YXJ0LCAmZW5kKSkKKyAgICBpZiAoIXBhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgiaW5kZXgiLCBhcmdzLCAmc3Vic3RyaW5nLCAmc3RhcnQsICZlbmQpKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc3Vic3RyaW5nKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQogCi0gICAgcmVzdWx0ID0gYW55X2ZpbmRfc2xpY2UoMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgMSk7CiAKICAgICBpZiAocmVzdWx0ID09IC0yKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTExOTU3LDcgKzEyMTIwLDcgQEAKICNkZWZpbmUgQk9USFNUUklQIDIKIAogLyogQXJyYXlzIGluZGV4ZWQgYnkgYWJvdmUgKi8KLXN0YXRpYyBjb25zdCBjaGFyICpzdHJpcGZvcm1hdFtdID0geyJ8Tzpsc3RyaXAiLCAifE86cnN0cmlwIiwgInxPOnN0cmlwIn07CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IHN0cmlwZm9ybWF0W10gPSB7InxPOmxzdHJpcCIsICJ8Tzpyc3RyaXAiLCAifE86c3RyaXAifTsKIAogI2RlZmluZSBTVFJJUE5BTUUoaSkgKHN0cmlwZm9ybWF0W2ldKzMpCiAKQEAgLTEyMjM4LDExICsxMjQwMSwxMSBAQAogICAgICAgICBQeV9zc2l6ZV90IGRvbmUgPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdHIpOwogICAgICAgICBjb25zdCBQeV9zc2l6ZV90IGNoYXJfc2l6ZSA9IFB5VW5pY29kZV9LSU5EKHN0cik7CiAgICAgICAgIGNoYXIgKnRvID0gKGNoYXIgKikgUHlVbmljb2RlX0RBVEEodSk7Ci0gICAgICAgIFB5X01FTUNQWSh0bywgUHlVbmljb2RlX0RBVEEoc3RyKSwKKyAgICAgICAgbWVtY3B5KHRvLCBQeVVuaWNvZGVfREFUQShzdHIpLAogICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAqIGNoYXJfc2l6ZSk7CiAgICAgICAgIHdoaWxlIChkb25lIDwgbmNoYXJzKSB7CiAgICAgICAgICAgICBuID0gKGRvbmUgPD0gbmNoYXJzLWRvbmUpID8gZG9uZSA6IG5jaGFycy1kb25lOwotICAgICAgICAgICAgUHlfTUVNQ1BZKHRvICsgKGRvbmUgKiBjaGFyX3NpemUpLCB0bywgbiAqIGNoYXJfc2l6ZSk7CisgICAgICAgICAgICBtZW1jcHkodG8gKyAoZG9uZSAqIGNoYXJfc2l6ZSksIHRvLCBuICogY2hhcl9zaXplKTsKICAgICAgICAgICAgIGRvbmUgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTEyMjUyLDQwICsxMjQxNSwxNSBAQAogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUmVwbGFjZShQeU9iamVjdCAqb2JqLAotICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKnN1Ym9iaiwKLSAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXBsb2JqLAorUHlVbmljb2RlX1JlcGxhY2UoUHlPYmplY3QgKnN0ciwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWJzdHIsCisgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVwbHN0ciwKICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbWF4Y291bnQpCiB7Ci0gICAgUHlPYmplY3QgKnNlbGY7Ci0gICAgUHlPYmplY3QgKnN0cjE7Ci0gICAgUHlPYmplY3QgKnN0cjI7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHNlbGYgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChvYmopOwotICAgIGlmIChzZWxmID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cikgPCAwIHx8IGVuc3VyZV91bmljb2RlKHN1YnN0cikgPCAwIHx8CisgICAgICAgICAgICBlbnN1cmVfdW5pY29kZShyZXBsc3RyKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdHIxID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgc3RyMiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHJlcGxvYmopOwotICAgIGlmIChzdHIyID09IE5VTEwpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlbGYpOwotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xIHx8Ci0gICAgICAgIFB5VW5pY29kZV9SRUFEWShzdHIxKSA9PSAtMSB8fAotICAgICAgICBQeVVuaWNvZGVfUkVBRFkoc3RyMikgPT0gLTEpCi0gICAgICAgIHJlc3VsdCA9IE5VTEw7Ci0gICAgZWxzZQotICAgICAgICByZXN1bHQgPSByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKLSAgICBQeV9ERUNSRUYoc2VsZik7Ci0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHN0ciwgc3Vic3RyLCByZXBsc3RyLCBtYXhjb3VudCk7CiB9CiAKIFB5RG9jX1NUUlZBUihyZXBsYWNlX19kb2NfXywKQEAgLTEyMzAxLDI4ICsxMjQzOSwxMiBAQAogICAgIFB5T2JqZWN0ICpzdHIxOwogICAgIFB5T2JqZWN0ICpzdHIyOwogICAgIFB5X3NzaXplX3QgbWF4Y291bnQgPSAtMTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPT3xuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJVVXxuOnJlcGxhY2UiLCAmc3RyMSwgJnN0cjIsICZtYXhjb3VudCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoc2VsZikgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHN0cjEgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdHIxKTsKLSAgICBpZiAoc3RyMSA9PSBOVUxMKQotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzdHIyID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyMik7Ci0gICAgaWYgKHN0cjIgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoc3RyMSk7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLSAgICBpZiAoUHlVbmljb2RlX1JFQURZKHN0cjEpID09IC0xIHx8IFB5VW5pY29kZV9SRUFEWShzdHIyKSA9PSAtMSkKLSAgICAgICAgcmVzdWx0ID0gTlVMTDsKLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IHJlcGxhY2Uoc2VsZiwgc3RyMSwgc3RyMiwgbWF4Y291bnQpOwotCi0gICAgUHlfREVDUkVGKHN0cjEpOwotICAgIFB5X0RFQ1JFRihzdHIyKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiByZXBsYWNlKHNlbGYsIHN0cjEsIHN0cjIsIG1heGNvdW50KTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTEyNTA3LDIyICsxMjYyOSwxMyBAQAogICAgIFB5X3NzaXplX3QgZW5kID0gMDsKICAgICBQeV9zc2l6ZV90IHJlc3VsdDsKIAotICAgIGlmICghc3RyaW5nbGliX3BhcnNlX2FyZ3NfZmluZHNfdW5pY29kZSgicmZpbmQiLCBhcmdzLCAmc3Vic3RyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RhcnQsICZlbmQpKQorICAgIGlmICghcGFyc2VfYXJnc19maW5kc191bmljb2RlKCJyZmluZCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjU0NCwyMiArMTI2NTcsMTMgQEAKICAgICBQeV9zc2l6ZV90IGVuZCA9IDA7CiAgICAgUHlfc3NpemVfdCByZXN1bHQ7CiAKLSAgICBpZiAoIXN0cmluZ2xpYl9wYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZzdGFydCwgJmVuZCkpCisgICAgaWYgKCFwYXJzZV9hcmdzX2ZpbmRzX3VuaWNvZGUoInJpbmRleCIsIGFyZ3MsICZzdWJzdHJpbmcsICZzdGFydCwgJmVuZCkpCiAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZWxmKSA9PSAtMSkgewotICAgICAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICBpZiAoUHlVbmljb2RlX1JFQURZKHNlbGYpID09IC0xKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzdWJzdHJpbmcpID09IC0xKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CiAKLSAgICByZXN1bHQgPSBhbnlfZmluZF9zbGljZSgtMSwgc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kKTsKLQotICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOworICAgIHJlc3VsdCA9IGFueV9maW5kX3NsaWNlKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgLTEpOwogCiAgICAgaWYgKHJlc3VsdCA9PSAtMikKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMjU5OSwyNCArMTI3MDMsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9TcGxpdChQeU9iamVjdCAqcywgUHlPYmplY3QgKnNlcCwgUHlfc3NpemVfdCBtYXhzcGxpdCkKIHsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotCi0gICAgcyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHMpOwotICAgIGlmIChzID09IE5VTEwpCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHMpIDwgMCB8fCAoc2VwICE9IE5VTEwgJiYgZW5zdXJlX3VuaWNvZGUoc2VwKSA8IDApKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoc2VwICE9IE5VTEwpIHsKLSAgICAgICAgc2VwID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwKTsKLSAgICAgICAgaWYgKHNlcCA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgIH0KIAotICAgIHJlc3VsdCA9IHNwbGl0KHMsIHNlcCwgbWF4c3BsaXQpOwotCi0gICAgUHlfREVDUkVGKHMpOwotICAgIFB5X1hERUNSRUYoc2VwKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0X19kb2NfXywKQEAgLTEyNjQxLDM1ICsxMjczMSwyNiBAQAogCiAgICAgaWYgKHN1YnN0cmluZyA9PSBQeV9Ob25lKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgTlVMTCwgbWF4Y291bnQpOwotICAgIGVsc2UgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQorCisgICAgaWYgKFB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKQogICAgICAgICByZXR1cm4gc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1NwbGl0KHNlbGYsIHN1YnN0cmluZywgbWF4Y291bnQpOworCisgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgIm11c3QgYmUgc3RyIG9yIE5vbmUsIG5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOworICAgIHJldHVybiBOVUxMOwogfQogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfaW4sIFB5T2JqZWN0ICpzZXBfaW4pCitQeVVuaWNvZGVfUGFydGl0aW9uKFB5T2JqZWN0ICpzdHJfb2JqLCBQeU9iamVjdCAqc2VwX29iaikKIHsKLSAgICBQeU9iamVjdCogc3RyX29iajsKLSAgICBQeU9iamVjdCogc2VwX29iajsKICAgICBQeU9iamVjdCogb3V0OwogICAgIGludCBraW5kMSwga2luZDI7CiAgICAgdm9pZCAqYnVmMSwgKmJ1ZjI7CiAgICAgUHlfc3NpemVfdCBsZW4xLCBsZW4yOwogCi0gICAgc3RyX29iaiA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHN0cl9pbik7Ci0gICAgaWYgKCFzdHJfb2JqKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzdHJfb2JqKSA8IDAgfHwgZW5zdXJlX3VuaWNvZGUoc2VwX29iaikgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBzZXBfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc2VwX2luKTsKLSAgICBpZiAoIXNlcF9vYmopIHsKLSAgICAgICAgUHlfREVDUkVGKHN0cl9vYmopOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9Ci0gICAgaWYgKFB5VW5pY29kZV9SRUFEWShzZXBfb2JqKSA9PSAtMSB8fCBQeVVuaWNvZGVfUkVBRFkoc3RyX29iaikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyNjgzLDggKzEyNzY0LDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCBzdHJfb2JqLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5KTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI2OTIsNyArMTI3NzEsNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjcxMywzOSArMTI3OTIsMjMgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogCiBQeU9iamVjdCAqCi1QeVVuaWNvZGVfUlBhcnRpdGlvbihQeU9iamVjdCAqc3RyX2luLCBQeU9iamVjdCAqc2VwX2luKQorUHlVbmljb2RlX1JQYXJ0aXRpb24oUHlPYmplY3QgKnN0cl9vYmosIFB5T2JqZWN0ICpzZXBfb2JqKQogewotICAgIFB5T2JqZWN0KiBzdHJfb2JqOwotICAgIFB5T2JqZWN0KiBzZXBfb2JqOwogICAgIFB5T2JqZWN0KiBvdXQ7CiAgICAgaW50IGtpbmQxLCBraW5kMjsKICAgICB2b2lkICpidWYxLCAqYnVmMjsKICAgICBQeV9zc2l6ZV90IGxlbjEsIGxlbjI7CiAKLSAgICBzdHJfb2JqID0gUHlVbmljb2RlX0Zyb21PYmplY3Qoc3RyX2luKTsKLSAgICBpZiAoIXN0cl9vYmopCisgICAgaWYgKGVuc3VyZV91bmljb2RlKHN0cl9vYmopIDwgMCB8fCBlbnN1cmVfdW5pY29kZShzZXBfb2JqKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHNlcF9vYmogPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzZXBfaW4pOwotICAgIGlmICghc2VwX29iaikgewotICAgICAgICBQeV9ERUNSRUYoc3RyX29iaik7Ci0gICAgICAgIHJldHVybiBOVUxMOwotICAgIH0KIAogICAgIGtpbmQxID0gUHlVbmljb2RlX0tJTkQoc3RyX29iaik7CiAgICAga2luZDIgPSBQeVVuaWNvZGVfS0lORChzZXBfb2JqKTsKQEAgLTEyNzU5LDggKzEyODIyLDYgQEAKICAgICAgICAgICAgIG91dCA9IFB5VHVwbGVfUGFjaygzLCB1bmljb2RlX2VtcHR5LCB1bmljb2RlX2VtcHR5LCBzdHJfb2JqKTsKICAgICAgICAgICAgIFB5X0RFQ1JFRih1bmljb2RlX2VtcHR5KTsKICAgICAgICAgfQotICAgICAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKICAgICAgICAgcmV0dXJuIG91dDsKICAgICB9CiAgICAgYnVmMSA9IFB5VW5pY29kZV9EQVRBKHN0cl9vYmopOwpAQCAtMTI3NjgsNyArMTI4MjksNyBAQAogICAgIGlmIChraW5kMiAhPSBraW5kMSkgewogICAgICAgICBidWYyID0gX1B5VW5pY29kZV9Bc0tpbmQoc2VwX29iaiwga2luZDEpOwogICAgICAgICBpZiAoIWJ1ZjIpCi0gICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKICAgICBzd2l0Y2ggKGtpbmQxKSB7CkBAIC0xMjc4OSwxOCArMTI4NTAsMTAgQEAKICAgICAgICAgb3V0ID0gMDsKICAgICB9CiAKLSAgICBQeV9ERUNSRUYoc2VwX29iaik7Ci0gICAgUHlfREVDUkVGKHN0cl9vYmopOwogICAgIGlmIChraW5kMiAhPSBraW5kMSkKICAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKIAogICAgIHJldHVybiBvdXQ7Ci0gIG9uRXJyb3I6Ci0gICAgUHlfREVDUkVGKHNlcF9vYmopOwotICAgIFB5X0RFQ1JFRihzdHJfb2JqKTsKLSAgICBpZiAoa2luZDIgIT0ga2luZDEgJiYgYnVmMikKLSAgICAgICAgUHlNZW1fRnJlZShidWYyKTsKLSAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHBhcnRpdGlvbl9fZG9jX18sCkBAIC0xMjgzMiwyNCArMTI4ODUsMTAgQEAKIFB5T2JqZWN0ICoKIFB5VW5pY29kZV9SU3BsaXQoUHlPYmplY3QgKnMsIFB5T2JqZWN0ICpzZXAsIFB5X3NzaXplX3QgbWF4c3BsaXQpCiB7Ci0gICAgUHlPYmplY3QgKnJlc3VsdDsKLQotICAgIHMgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzKTsKLSAgICBpZiAocyA9PSBOVUxMKQorICAgIGlmIChlbnN1cmVfdW5pY29kZShzKSA8IDAgfHwgKHNlcCAhPSBOVUxMICYmIGVuc3VyZV91bmljb2RlKHNlcCkgPCAwKSkKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgaWYgKHNlcCAhPSBOVUxMKSB7Ci0gICAgICAgIHNlcCA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KHNlcCk7Ci0gICAgICAgIGlmIChzZXAgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICB9CiAKLSAgICByZXN1bHQgPSByc3BsaXQocywgc2VwLCBtYXhzcGxpdCk7Ci0KLSAgICBQeV9ERUNSRUYocyk7Ci0gICAgUHlfWERFQ1JFRihzZXApOwotICAgIHJldHVybiByZXN1bHQ7CisgICAgcmV0dXJuIHJzcGxpdChzLCBzZXAsIG1heHNwbGl0KTsKIH0KIAogUHlEb2NfU1RSVkFSKHJzcGxpdF9fZG9jX18sCkBAIC0xMjg3NCwxMCArMTI5MTMsMTQgQEAKIAogICAgIGlmIChzdWJzdHJpbmcgPT0gUHlfTm9uZSkKICAgICAgICAgcmV0dXJuIHJzcGxpdChzZWxmLCBOVUxMLCBtYXhjb3VudCk7Ci0gICAgZWxzZSBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCisKKyAgICBpZiAoUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpCiAgICAgICAgIHJldHVybiByc3BsaXQoc2VsZiwgc3Vic3RyaW5nLCBtYXhjb3VudCk7Ci0gICAgZWxzZQotICAgICAgICByZXR1cm4gUHlVbmljb2RlX1JTcGxpdChzZWxmLCBzdWJzdHJpbmcsIG1heGNvdW50KTsKKworICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICJtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKIH0KIAogUHlEb2NfU1RSVkFSKHNwbGl0bGluZXNfX2RvY19fLApAQCAtMTMxNTgsMTEgKzEzMjAxLDE1IEBACiAgICAgaWYgKFB5VHVwbGVfQ2hlY2soc3Vib2JqKSkgewogICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKHN1Ym9iaik7IGkrKykgewotICAgICAgICAgICAgc3Vic3RyaW5nID0gUHlVbmljb2RlX0Zyb21PYmplY3QoUHlUdXBsZV9HRVRfSVRFTShzdWJvYmosIGkpKTsKLSAgICAgICAgICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkKKyAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKTsKKyAgICAgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1YnN0cmluZykpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidHVwbGUgZm9yIHN0YXJ0c3dpdGggbXVzdCBvbmx5IGNvbnRhaW4gc3RyLCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzdWJzdHJpbmcpLT50cF9uYW1lKTsKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsIC0xKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdWJzdHJpbmcpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGlmIChyZXN1bHQpIHsKQEAgLTEzMTcyLDE1ICsxMzIxOSwxMyBAQAogICAgICAgICAvKiBub3RoaW5nIG1hdGNoZWQgKi8KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiYSB0dXBsZSBvZiBzdHIsIG5vdCAlcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CisgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2soc3Vib2JqKSkgeworICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgInN0YXJ0c3dpdGggZmlyc3QgYXJnIG11c3QgYmUgc3RyIG9yICIKKyAgICAgICAgICAgICAgICAgICAgICJhIHR1cGxlIG9mIHN0ciwgbm90ICUuMTAwcyIsIFB5X1RZUEUoc3Vib2JqKS0+dHBfbmFtZSk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vic3RyaW5nLCBzdGFydCwgZW5kLCAtMSk7Ci0gICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CisgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1Ym9iaiwgc3RhcnQsIGVuZCwgLTEpOwogICAgIGlmIChyZXN1bHQgPT0gLTEpCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIHJldHVybiBQeUJvb2xfRnJvbUxvbmcocmVzdWx0KTsKQEAgLTEzMjEwLDEyICsxMzI1NSwxNSBAQAogICAgIGlmIChQeVR1cGxlX0NoZWNrKHN1Ym9iaikpIHsKICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgUHlUdXBsZV9HRVRfU0laRShzdWJvYmopOyBpKyspIHsKLSAgICAgICAgICAgIHN1YnN0cmluZyA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KAotICAgICAgICAgICAgICAgIFB5VHVwbGVfR0VUX0lURU0oc3Vib2JqLCBpKSk7Ci0gICAgICAgICAgICBpZiAoc3Vic3RyaW5nID09IE5VTEwpCisgICAgICAgICAgICBzdWJzdHJpbmcgPSBQeVR1cGxlX0dFVF9JVEVNKHN1Ym9iaiwgaSk7CisgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhzdWJzdHJpbmcpKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInR1cGxlIGZvciBlbmRzd2l0aCBtdXN0IG9ubHkgY29udGFpbiBzdHIsICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5vdCAlLjEwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKHN1YnN0cmluZyktPnRwX25hbWUpOwogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmVzdWx0ID0gdGFpbG1hdGNoKHNlbGYsIHN1YnN0cmluZywgc3RhcnQsIGVuZCwgKzEpOwotICAgICAgICAgICAgUHlfREVDUkVGKHN1YnN0cmluZyk7CiAgICAgICAgICAgICBpZiAocmVzdWx0ID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICAgICAgaWYgKHJlc3VsdCkgewpAQCAtMTMyMjQsNjEgKzEzMjcyLDY3IEBACiAgICAgICAgIH0KICAgICAgICAgUHlfUkVUVVJOX0ZBTFNFOwogICAgIH0KLSAgICBzdWJzdHJpbmcgPSBQeVVuaWNvZGVfRnJvbU9iamVjdChzdWJvYmopOwotICAgIGlmIChzdWJzdHJpbmcgPT0gTlVMTCkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKQotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgImVuZHN3aXRoIGZpcnN0IGFyZyBtdXN0IGJlIHN0ciBvciAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJXMiLCBQeV9UWVBFKHN1Ym9iaiktPnRwX25hbWUpOworICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHN1Ym9iaikpIHsKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJlbmRzd2l0aCBmaXJzdCBhcmcgbXVzdCBiZSBzdHIgb3IgIgorICAgICAgICAgICAgICAgICAgICAgImEgdHVwbGUgb2Ygc3RyLCBub3QgJS4xMDBzIiwgUHlfVFlQRShzdWJvYmopLT50cF9uYW1lKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIHJlc3VsdCA9IHRhaWxtYXRjaChzZWxmLCBzdWJzdHJpbmcsIHN0YXJ0LCBlbmQsICsxKTsKLSAgICBQeV9ERUNSRUYoc3Vic3RyaW5nKTsKKyAgICByZXN1bHQgPSB0YWlsbWF0Y2goc2VsZiwgc3Vib2JqLCBzdGFydCwgZW5kLCArMSk7CiAgICAgaWYgKHJlc3VsdCA9PSAtMSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgcmV0dXJuIFB5Qm9vbF9Gcm9tTG9uZyhyZXN1bHQpOwogfQogCi1QeV9MT0NBTF9JTkxJTkUodm9pZCkKK3N0YXRpYyBpbmxpbmUgdm9pZAogX1B5VW5pY29kZVdyaXRlcl9VcGRhdGUoX1B5VW5pY29kZVdyaXRlciAqd3JpdGVyKQogewotICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkKKyAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOworICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKKworICAgIGlmICghd3JpdGVyLT5yZWFkb25seSkgeworICAgICAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiAgICAgICAgIHdyaXRlci0+c2l6ZSA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHdyaXRlci0+YnVmZmVyKTsKKyAgICB9CiAgICAgZWxzZSB7CisgICAgICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgICAgIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmQoKSB3aWxsIGNvcHkgdGhlIGJ1ZmZlci4gKi8KKyAgICAgICAgd3JpdGVyLT5raW5kID0gUHlVbmljb2RlX1dDSEFSX0tJTkQ7CisgICAgICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOworCiAgICAgICAgIC8qIENvcHktb24td3JpdGUgbW9kZTogc2V0IGJ1ZmZlciBzaXplIHRvIDAgc28KICAgICAgICAgICogX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlKCkgd2lsbCBjb3B5IChhbmQgZW5sYXJnZSkgdGhlIGJ1ZmZlciBvbgogICAgICAgICAgKiBuZXh0IHdyaXRlLiAqLwogICAgICAgICB3cml0ZXItPnNpemUgPSAwOwogICAgIH0KLSAgICB3cml0ZXItPm1heGNoYXIgPSBQeVVuaWNvZGVfTUFYX0NIQVJfVkFMVUUod3JpdGVyLT5idWZmZXIpOwotICAgIHdyaXRlci0+ZGF0YSA9IFB5VW5pY29kZV9EQVRBKHdyaXRlci0+YnVmZmVyKTsKLSAgICB3cml0ZXItPmtpbmQgPSBQeVVuaWNvZGVfS0lORCh3cml0ZXItPmJ1ZmZlcik7CiB9CiAKIHZvaWQKIF9QeVVuaWNvZGVXcml0ZXJfSW5pdChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIpCiB7CiAgICAgbWVtc2V0KHdyaXRlciwgMCwgc2l6ZW9mKCp3cml0ZXIpKTsKLSNpZmRlZiBQeV9ERUJVRwotICAgIHdyaXRlci0+a2luZCA9IDU7ICAgIC8qIGludmFsaWQga2luZCAqLwotI2VuZGlmCisKKyAgICAvKiBBU0NJSSBpcyB0aGUgYmFyZSBtaW5pbXVtICovCiAgICAgd3JpdGVyLT5taW5fY2hhciA9IDEyNzsKKworICAgIC8qIHVzZSBhIHZhbHVlIHNtYWxsZXIgdGhhbiBQeVVuaWNvZGVfMUJZVEVfS0lORCgpIHNvCisgICAgICAgX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlS2luZCgpIHdpbGwgY29weSB0aGUgYnVmZmVyLiAqLworICAgIHdyaXRlci0+a2luZCA9IFB5VW5pY29kZV9XQ0hBUl9LSU5EOworICAgIGFzc2VydCh3cml0ZXItPmtpbmQgPD0gUHlVbmljb2RlXzFCWVRFX0tJTkQpOwogfQogCiBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUludGVybmFsKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuZ3RoLCBQeV9VQ1M0IG1heGNoYXIpCiB7Ci0jaWZkZWYgTVNfV0lORE9XUwotICAgLyogT24gV2luZG93cywgb3ZlcmFsbG9jYXRlIGJ5IDUwJSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDIKLSNlbHNlCi0gICAvKiBPbiBMaW51eCwgb3ZlcmFsbG9jYXRlIGJ5IDI1JSBpcyB0aGUgYmVzdCBmYWN0b3IgKi8KLSMgIGRlZmluZSBPVkVSQUxMT0NBVEVfRkFDVE9SIDQKLSNlbmRpZgogICAgIFB5X3NzaXplX3QgbmV3bGVuOwogICAgIFB5T2JqZWN0ICpuZXdidWZmZXI7CiAKLSAgICBhc3NlcnQobGVuZ3RoID4gMCk7CisgICAgYXNzZXJ0KG1heGNoYXIgPD0gTUFYX1VOSUNPREUpOworCisgICAgLyogZW5zdXJlIHRoYXQgdGhlIF9QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZSBtYWNybyB3YXMgdXNlZCAqLworICAgIGFzc2VydCgobWF4Y2hhciA+IHdyaXRlci0+bWF4Y2hhciAmJiBsZW5ndGggPj0gMCkKKyAgICAgICAgICAgfHwgbGVuZ3RoID4gMCk7CiAKICAgICBpZiAobGVuZ3RoID4gUFlfU1NJWkVfVF9NQVggLSB3cml0ZXItPnBvcykgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwpAQCAtMTMzNDQsOSArMTMzOTgsMzIgQEAKICN1bmRlZiBPVkVSQUxMT0NBVEVfRkFDVE9SCiB9CiAKLVB5X0xPQ0FMX0lOTElORShpbnQpCitpbnQKK19QeVVuaWNvZGVXcml0ZXJfUHJlcGFyZUtpbmRJbnRlcm5hbChfUHlVbmljb2RlV3JpdGVyICp3cml0ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBQeVVuaWNvZGVfS2luZCBraW5kKQoreworICAgIFB5X1VDUzQgbWF4Y2hhcjsKKworICAgIC8qIGVuc3VyZSB0aGF0IHRoZSBfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmVLaW5kIG1hY3JvIHdhcyB1c2VkICovCisgICAgYXNzZXJ0KHdyaXRlci0+a2luZCA8IGtpbmQpOworCisgICAgc3dpdGNoIChraW5kKQorICAgIHsKKyAgICBjYXNlIFB5VW5pY29kZV8xQllURV9LSU5EOiBtYXhjaGFyID0gMHhmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDogbWF4Y2hhciA9IDB4ZmZmZjsgYnJlYWs7CisgICAgY2FzZSBQeVVuaWNvZGVfNEJZVEVfS0lORDogbWF4Y2hhciA9IDB4MTBmZmZmOyBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgICBhc3NlcnQoMCAmJiAiaW52YWxpZCBraW5kIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICByZXR1cm4gX1B5VW5pY29kZVdyaXRlcl9QcmVwYXJlSW50ZXJuYWwod3JpdGVyLCAwLCBtYXhjaGFyKTsKK30KKworc3RhdGljIGlubGluZSBpbnQKIF9QeVVuaWNvZGVXcml0ZXJfV3JpdGVDaGFySW5saW5lKF9QeVVuaWNvZGVXcml0ZXIgKndyaXRlciwgUHlfVUNTNCBjaCkKIHsKKyAgICBhc3NlcnQoY2ggPD0gTUFYX1VOSUNPREUpOwogICAgIGlmIChfUHlVbmljb2RlV3JpdGVyX1ByZXBhcmUod3JpdGVyLCAxLCBjaCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlVbmljb2RlX1dSSVRFKHdyaXRlci0+a2luZCwgd3JpdGVyLT5kYXRhLCB3cml0ZXItPnBvcywgY2gpOwpAQCAtMTM0NTksNyArMTM1MzYsNyBAQAogICAgICAgICBjb25zdCBQeV9VQ1MxICpzdHIgPSAoY29uc3QgUHlfVUNTMSAqKWFzY2lpOwogICAgICAgICBQeV9VQ1MxICpkYXRhID0gd3JpdGVyLT5kYXRhOwogCi0gICAgICAgIFB5X01FTUNQWShkYXRhICsgd3JpdGVyLT5wb3MsIHN0ciwgbGVuKTsKKyAgICAgICAgbWVtY3B5KGRhdGEgKyB3cml0ZXItPnBvcywgc3RyLCBsZW4pOwogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBQeVVuaWNvZGVfMkJZVEVfS0lORDoKQEAgLTEzNTE0LDE3ICsxMzU5MSwyNiBAQAogICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA9PSB3cml0ZXItPnBvcyk7CiAgICAgICAgIHJldHVybiBzdHI7CiAgICAgfQotICAgIGlmIChQeVVuaWNvZGVfR0VUX0xFTkdUSCh3cml0ZXItPmJ1ZmZlcikgIT0gd3JpdGVyLT5wb3MpIHsKLSAgICAgICAgUHlPYmplY3QgKm5ld2J1ZmZlcjsKLSAgICAgICAgbmV3YnVmZmVyID0gcmVzaXplX2NvbXBhY3Qod3JpdGVyLT5idWZmZXIsIHdyaXRlci0+cG9zKTsKLSAgICAgICAgaWYgKG5ld2J1ZmZlciA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7Ci0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgfQotICAgICAgICB3cml0ZXItPmJ1ZmZlciA9IG5ld2J1ZmZlcjsKKyAgICBpZiAod3JpdGVyLT5wb3MgPT0gMCkgeworICAgICAgICBQeV9DTEVBUih3cml0ZXItPmJ1ZmZlcik7CisKKyAgICAgICAgLyogR2V0IHRoZSBlbXB0eSBVbmljb2RlIHN0cmluZyBzaW5nbGV0b24gKCcnKSAqLworICAgICAgICBfUHlfSU5DUkVGX1VOSUNPREVfRU1QVFkoKTsKKyAgICAgICAgc3RyICA9IHVuaWNvZGVfZW1wdHk7CiAgICAgfQotICAgIHN0ciA9IHdyaXRlci0+YnVmZmVyOwotICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKyAgICBlbHNlIHsKKyAgICAgICAgc3RyID0gd3JpdGVyLT5idWZmZXI7CisgICAgICAgIHdyaXRlci0+YnVmZmVyID0gTlVMTDsKKworICAgICAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSAhPSB3cml0ZXItPnBvcykgeworICAgICAgICAgICAgUHlPYmplY3QgKnN0cjI7CisgICAgICAgICAgICBzdHIyID0gcmVzaXplX2NvbXBhY3Qoc3RyLCB3cml0ZXItPnBvcyk7CisgICAgICAgICAgICBpZiAoc3RyMiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgc3RyID0gc3RyMjsKKyAgICAgICAgfQorICAgIH0KKwogICAgIGFzc2VydChfUHlVbmljb2RlX0NoZWNrQ29uc2lzdGVuY3koc3RyLCAxKSk7CiAgICAgcmV0dXJuIHVuaWNvZGVfcmVzdWx0X3JlYWR5KHN0cik7CiB9CkBAIC0xNDY2NSwxMyArMTQ3NTEsMTAgQEAKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCi0gICAgY3R4LmZtdHN0ciA9IFB5VW5pY29kZV9Gcm9tT2JqZWN0KGZvcm1hdCk7Ci0gICAgaWYgKGN0eC5mbXRzdHIgPT0gTlVMTCkKKyAgICBpZiAoZW5zdXJlX3VuaWNvZGUoZm9ybWF0KSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChQeVVuaWNvZGVfUkVBRFkoY3R4LmZtdHN0cikgPT0gLTEpIHsKLSAgICAgICAgUHlfREVDUkVGKGN0eC5mbXRzdHIpOwotICAgICAgICByZXR1cm4gTlVMTDsKLSAgICB9CisKKyAgICBjdHguZm10c3RyID0gZm9ybWF0OwogICAgIGN0eC5mbXRkYXRhID0gUHlVbmljb2RlX0RBVEEoY3R4LmZtdHN0cik7CiAgICAgY3R4LmZtdGtpbmQgPSBQeVVuaWNvZGVfS0lORChjdHguZm10c3RyKTsKICAgICBjdHguZm10Y250ID0gUHlVbmljb2RlX0dFVF9MRU5HVEgoY3R4LmZtdHN0cik7CkBAIC0xNDczMSwxMSArMTQ4MTQsOSBAQAogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwogICAgIH0KLSAgICBQeV9ERUNSRUYoY3R4LmZtdHN0cik7CiAgICAgcmV0dXJuIF9QeVVuaWNvZGVXcml0ZXJfRmluaXNoKCZjdHgud3JpdGVyKTsKIAogICBvbkVycm9yOgotICAgIFB5X0RFQ1JFRihjdHguZm10c3RyKTsKICAgICBfUHlVbmljb2RlV3JpdGVyX0RlYWxsb2MoJmN0eC53cml0ZXIpOwogICAgIGlmIChjdHguYXJnc19vd25lZCkgewogICAgICAgICBQeV9ERUNSRUYoY3R4LmFyZ3MpOwpAQCAtMTQ4NTIsNyArMTQ5MzMsNyBAQAogICAgICAgICBfUHlVbmljb2RlX1dTVFIoc2VsZikgPSAod2NoYXJfdCAqKWRhdGE7CiAgICAgfQogCi0gICAgUHlfTUVNQ1BZKGRhdGEsIFB5VW5pY29kZV9EQVRBKHVuaWNvZGUpLAorICAgIG1lbWNweShkYXRhLCBQeVVuaWNvZGVfREFUQSh1bmljb2RlKSwKICAgICAgICAgICAgICAga2luZCAqIChsZW5ndGggKyAxKSk7CiAgICAgYXNzZXJ0KF9QeVVuaWNvZGVfQ2hlY2tDb25zaXN0ZW5jeShzZWxmLCAxKSk7CiAjaWZkZWYgUHlfREVCVUcKQEAgLTE1MDEzLDI2ICsxNTA5NCwxOCBAQAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAgICAgfQotICAgIC8qIEl0IG1pZ2h0IGJlIHRoYXQgdGhlIEdldEl0ZW0gY2FsbCBmYWlscyBldmVuCi0gICAgICAgdGhvdWdoIHRoZSBrZXkgaXMgcHJlc2VudCBpbiB0aGUgZGljdGlvbmFyeSwKLSAgICAgICBuYW1lbHkgd2hlbiB0aGlzIGhhcHBlbnMgZHVyaW5nIGEgc3RhY2sgb3ZlcmZsb3cuICovCiAgICAgUHlfQUxMT1dfUkVDVVJTSU9OCi0gICAgdCA9IFB5RGljdF9HZXRJdGVtKGludGVybmVkLCBzKTsKKyAgICB0ID0gUHlEaWN0X1NldERlZmF1bHQoaW50ZXJuZWQsIHMsIHMpOwogICAgIFB5X0VORF9BTExPV19SRUNVUlNJT04KLQotICAgIGlmICh0KSB7CisgICAgaWYgKHQgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIGlmICh0ICE9IHMpIHsKICAgICAgICAgUHlfSU5DUkVGKHQpOwogICAgICAgICBQeV9TRVRSRUYoKnAsIHQpOwogICAgICAgICByZXR1cm47CiAgICAgfQotCi0gICAgUHlUaHJlYWRTdGF0ZV9HRVQoKS0+cmVjdXJzaW9uX2NyaXRpY2FsID0gMTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW0oaW50ZXJuZWQsIHMsIHMpIDwgMCkgewotICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICBQeVRocmVhZFN0YXRlX0dFVCgpLT5yZWN1cnNpb25fY3JpdGljYWwgPSAwOwotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIFB5VGhyZWFkU3RhdGVfR0VUKCktPnJlY3Vyc2lvbl9jcml0aWNhbCA9IDA7CiAgICAgLyogVGhlIHR3byByZWZlcmVuY2VzIGluIGludGVybmVkIGFyZSBub3QgY291bnRlZCBieSByZWZjbnQuCiAgICAgICAgVGhlIGRlYWxsb2NhdG9yIHdpbGwgdGFrZSBjYXJlIG9mIHRoaXMgKi8KICAgICBQeV9SRUZDTlQocykgLT0gMjsKZGlmZiAtLWdpdCBhL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaCBiL09iamVjdHMvdW5pY29kZXR5cGVfZGIuaAppbmRleCA3Yzc4MGI2Li4zOWFmOTIwIDEwMDY0NAotLS0gYS9PYmplY3RzL3VuaWNvZGV0eXBlX2RiLmgKKysrIGIvT2JqZWN0cy91bmljb2RldHlwZV9kYi5oCkBAIC0yNDQsMTA5ICsyNDQsMTE5IEBACiAgICAgezE2Nzc3NTYyLCAxNzgyNjEzNiwgMTY3Nzc1NjIsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3Nzc1NjUsIDE3ODI2MTM5LCAxNjc3NzU2NSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAzODQwfSwKKyAgICB7MCwgMCwgMCwgMCwgMCwgNTg4OH0sCisgICAgezE2Nzc3NTY4LCAxNzgyNjE0MiwgMTY3Nzc1NjgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1NzEsIDE3ODI2MTQ1LCAxNjc3NzU3MSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU3NCwgMTc4MjYxNDgsIDE2Nzc3NTc0LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTc3LCAxNzgyNjE1MSwgMTY3Nzc1NzcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODAsIDE3ODI2MTU0LCAxNjc3NzU4MCwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU4MywgMTc4MjYxNTcsIDE2Nzc3NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NTg2LCAxNzgyNjE2MCwgMTY3Nzc1ODYsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3Nzc1ODksIDE3ODI2MTYzLCAxNjc3NzU4OSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzU5MiwgMTc4MjYxNjYsIDE2Nzc3NTkyLCAwLCAwLCAyNjM3N30sCiAgICAgezM1MzMyLCAwLCAzNTMzMiwgMCwgMCwgOTk5M30sCiAgICAgezM4MTQsIDAsIDM4MTQsIDAsIDAsIDk5OTN9LAotICAgIHszMzU1NDc4NSwgMTg4NzQ3MTgsIDMzNTU0Nzg1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0NzkwLCAxODg3NDcyMywgMzM1NTQ3OTAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ3OTUsIDE4ODc0NzI4LCAzMzU1NDc5NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDgwMCwgMTg4NzQ3MzMsIDMzNTU0ODAwLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODA1LCAxODg3NDczOCwgMzM1NTQ4MDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3Nzc1OTMsIDE3ODI2MTY3LCAxNjc3NzU5MywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3NzU5NywgMTg4NzQ3NDYsIDE2Nzc3NTk3LCAwLCAwLCAyNjQ5N30sCisgICAgezMzNTU0ODEyLCAxODg3NDc0NSwgMzM1NTQ4MTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MTcsIDE4ODc0NzUwLCAzMzU1NDgxNywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDgyMiwgMTg4NzQ3NTUsIDMzNTU0ODIyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODI3LCAxODg3NDc2MCwgMzM1NTQ4MjcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4MzIsIDE4ODc0NzY1LCAzMzU1NDgzMiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3NzYyMCwgMTc4MjYxOTQsIDE2Nzc3NjIwLCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc3NjI0LCAxODg3NDc3MywgMTY3Nzc2MjQsIDAsIDAsIDI2NDk3fSwKICAgICB7OCwgMCwgOCwgMCwgMCwgOTk5M30sCiAgICAgezAsIC04LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU0ODE3LCAxODg3NDc1MCwgMzM1NTQ4MTcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIwMzksIDE5OTIzMzMxLCA1MDMzMjAzOSwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjA0NiwgMTk5MjMzMzgsIDUwMzMyMDQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyMDUzLCAxOTkyMzM0NSwgNTAzMzIwNTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4NDQsIDE4ODc0Nzc3LCAzMzU1NDg0NCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjA2NiwgMTk5MjMzNTgsIDUwMzMyMDY2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyMDczLCAxOTkyMzM2NSwgNTAzMzIwNzMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzIwODAsIDE5OTIzMzcyLCA1MDMzMjA4MCwgMCwgMCwgMjYzNzd9LAogICAgIHs3NCwgMCwgNzQsIDAsIDAsIDk5OTN9LAogICAgIHs4NiwgMCwgODYsIDAsIDAsIDk5OTN9LAogICAgIHsxMDAsIDAsIDEwMCwgMCwgMCwgOTk5M30sCiAgICAgezEyOCwgMCwgMTI4LCAwLCAwLCA5OTkzfSwKICAgICB7MTEyLCAwLCAxMTIsIDAsIDAsIDk5OTN9LAogICAgIHsxMjYsIDAsIDEyNiwgMCwgMCwgOTk5M30sCi0gICAgezMzNTU0ODQzLCAxODg3NDc3NiwgMTY3Nzc2MjksIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NDksIDE4ODc0NzgyLCAxNjc3NzYzNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg1NSwgMTg4NzQ3ODgsIDE2Nzc3NjQxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODYxLCAxODg3NDc5NCwgMTY3Nzc2NDcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4NjcsIDE4ODc0ODAwLCAxNjc3NzY1MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg3MywgMTg4NzQ4MDYsIDE2Nzc3NjU5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0ODc5LCAxODg3NDgxMiwgMTY3Nzc2NjUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ4ODUsIDE4ODc0ODE4LCAxNjc3NzY3MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDg5MSwgMTg4NzQ4MjQsIDE2Nzc3Njc3LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0ODk3LCAxODg3NDgzMCwgMTY3Nzc2ODMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MDMsIDE4ODc0ODM2LCAxNjc3NzY4OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkwOSwgMTg4NzQ4NDIsIDE2Nzc3Njk1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTE1LCAxODg3NDg0OCwgMTY3Nzc3MDEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MjEsIDE4ODc0ODU0LCAxNjc3NzcwNywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDkyNywgMTg4NzQ4NjAsIDE2Nzc3NzEzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU0OTMzLCAxODg3NDg2NiwgMTY3Nzc3MTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5MzksIDE4ODc0ODcyLCAxNjc3NzcyNSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk0NSwgMTg4NzQ4NzgsIDE2Nzc3NzMxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTUxLCAxODg3NDg4NCwgMTY3Nzc3MzcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NTcsIDE4ODc0ODkwLCAxNjc3Nzc0MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk2MywgMTg4NzQ4OTYsIDE2Nzc3NzQ5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTY5LCAxODg3NDkwMiwgMTY3Nzc3NTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTQ5NzUsIDE4ODc0OTA4LCAxNjc3Nzc2MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NDk4MSwgMTg4NzQ5MTQsIDE2Nzc3NzY3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU0OTg3LCAxODg3NDkyMCwgMTY3Nzc3NzMsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTQ5OTMsIDE4ODc0OTI2LCAxNjc3Nzc3OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NDk5OSwgMTg4NzQ5MzIsIDE2Nzc3Nzg1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDA1LCAxODg3NDkzOCwgMTY3Nzc3OTEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMTEsIDE4ODc0OTQ0LCAxNjc3Nzc5NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAxNywgMTg4NzQ5NTAsIDE2Nzc3ODAzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDIzLCAxODg3NDk1NiwgMTY3Nzc4MDksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUwMjksIDE4ODc0OTYyLCAxNjc3NzgxNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTAzNSwgMTg4NzQ5NjgsIDE2Nzc3ODIxLCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDQxLCAxODg3NDk3NCwgMTY3Nzc4MjcsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNDcsIDE4ODc0OTgwLCAxNjc3NzgzMywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA1MywgMTg4NzQ5ODYsIDE2Nzc3ODM5LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDU5LCAxODg3NDk5MiwgMTY3Nzc4NDUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwNjUsIDE4ODc0OTk4LCAxNjc3Nzg1MSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTA3MSwgMTg4NzUwMDQsIDE2Nzc3ODU3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MDc3LCAxODg3NTAxMCwgMTY3Nzc4NjMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUwODMsIDE4ODc1MDE2LCAxNjc3Nzg2OSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTA4OSwgMTg4NzUwMjIsIDE2Nzc3ODc1LCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MDk1LCAxODg3NTAyOCwgMTY3Nzc4ODEsIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMDEsIDE4ODc1MDM0LCAxNjc3Nzg4NywgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEwNywgMTg4NzUwNDAsIDE2Nzc3ODkzLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTEzLCAxODg3NTA0NiwgMTY3Nzc4OTksIDAsIDAsIDI2NDMzfSwKLSAgICB7MzM1NTUxMTksIDE4ODc1MDUyLCAxNjc3NzkwNSwgMCwgMCwgMjY0MzN9LAotICAgIHszMzU1NTEyNSwgMTg4NzUwNTgsIDE2Nzc3OTExLCAwLCAwLCAyNjQzM30sCi0gICAgezMzNTU1MTMxLCAxODg3NTA2NCwgMzM1NTUxMzMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxMzgsIDE4ODc1MDcxLCAxNjc3NzkyNCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE0NCwgMTg4NzUwNzcsIDMzNTU1MTQ2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTUxLCAxODg3NTA4NCwgMzM1NTUxNTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzIzNzMsIDE5OTIzNjY1LCA1MDMzMjM3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg3MCwgMTg4NzQ4MDMsIDE2Nzc3NjU2LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODc2LCAxODg3NDgwOSwgMTY3Nzc2NjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ4ODIsIDE4ODc0ODE1LCAxNjc3NzY2OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDg4OCwgMTg4NzQ4MjEsIDE2Nzc3Njc0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0ODk0LCAxODg3NDgyNywgMTY3Nzc2ODAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MDAsIDE4ODc0ODMzLCAxNjc3NzY4NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDkwNiwgMTg4NzQ4MzksIDE2Nzc3NjkyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTEyLCAxODg3NDg0NSwgMTY3Nzc2OTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5MTgsIDE4ODc0ODUxLCAxNjc3NzcwNCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDkyNCwgMTg4NzQ4NTcsIDE2Nzc3NzEwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTMwLCAxODg3NDg2MywgMTY3Nzc3MTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5MzYsIDE4ODc0ODY5LCAxNjc3NzcyMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk0MiwgMTg4NzQ4NzUsIDE2Nzc3NzI4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTQ4LCAxODg3NDg4MSwgMTY3Nzc3MzQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTQ5NTQsIDE4ODc0ODg3LCAxNjc3Nzc0MCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NDk2MCwgMTg4NzQ4OTMsIDE2Nzc3NzQ2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU0OTY2LCAxODg3NDg5OSwgMTY3Nzc3NTIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5NzIsIDE4ODc0OTA1LCAxNjc3Nzc1OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk3OCwgMTg4NzQ5MTEsIDE2Nzc3NzY0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU0OTg0LCAxODg3NDkxNywgMTY3Nzc3NzAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTQ5OTAsIDE4ODc0OTIzLCAxNjc3Nzc3NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NDk5NiwgMTg4NzQ5MjksIDE2Nzc3NzgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDAyLCAxODg3NDkzNSwgMTY3Nzc3ODgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwMDgsIDE4ODc0OTQxLCAxNjc3Nzc5NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTAxNCwgMTg4NzQ5NDcsIDE2Nzc3ODAwLCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDIwLCAxODg3NDk1MywgMTY3Nzc4MDYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwMjYsIDE4ODc0OTU5LCAxNjc3NzgxMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTAzMiwgMTg4NzQ5NjUsIDE2Nzc3ODE4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDM4LCAxODg3NDk3MSwgMTY3Nzc4MjQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNDQsIDE4ODc0OTc3LCAxNjc3NzgzMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTA1MCwgMTg4NzQ5ODMsIDE2Nzc3ODM2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MDU2LCAxODg3NDk4OSwgMTY3Nzc4NDIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUwNjIsIDE4ODc0OTk1LCAxNjc3Nzg0OCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA2OCwgMTg4NzUwMDEsIDE2Nzc3ODU0LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDc0LCAxODg3NTAwNywgMTY3Nzc4NjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwODAsIDE4ODc1MDEzLCAxNjc3Nzg2NiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTA4NiwgMTg4NzUwMTksIDE2Nzc3ODcyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MDkyLCAxODg3NTAyNSwgMTY3Nzc4NzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUwOTgsIDE4ODc1MDMxLCAxNjc3Nzg4NCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTEwNCwgMTg4NzUwMzcsIDE2Nzc3ODkwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTEwLCAxODg3NTA0MywgMTY3Nzc4OTYsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMTYsIDE4ODc1MDQ5LCAxNjc3NzkwMiwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTEyMiwgMTg4NzUwNTUsIDE2Nzc3OTA4LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTI4LCAxODg3NTA2MSwgMTY3Nzc5MTQsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxMzQsIDE4ODc1MDY3LCAxNjc3NzkyMCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE0MCwgMTg4NzUwNzMsIDE2Nzc3OTI2LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MTQ2LCAxODg3NTA3OSwgMTY3Nzc5MzIsIDAsIDAsIDI2NDMzfSwKKyAgICB7MzM1NTUxNTIsIDE4ODc1MDg1LCAxNjc3NzkzOCwgMCwgMCwgMjY0MzN9LAorICAgIHszMzU1NTE1OCwgMTg4NzUwOTEsIDMzNTU1MTYwLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MTY1LCAxODg3NTA5OCwgMTY3Nzc5NTEsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxNzEsIDE4ODc1MTA0LCAzMzU1NTE3MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTE3OCwgMTg4NzUxMTEsIDMzNTU1MTc4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDAwLCAxOTkyMzY5MiwgNTAzMzI0MDMsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTc0LCAwLCAwLCAwLCAxMDExM30sCi0gICAgezMzNTU1MTY2LCAxODg3NTA5OSwgMTY3Nzc5NTIsIDAsIDAsIDI2NDMzfSwKLSAgICB7MTY3Nzc5NTUsIDE3ODI2NTI5LCAxNjc3Nzk1NSwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE3NSwgMTg4NzUxMDgsIDMzNTU1MTc3LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MTgyLCAxODg3NTExNSwgMTY3Nzc5NjgsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUxODgsIDE4ODc1MTIxLCAzMzU1NTE5MCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTE5NSwgMTg4NzUxMjgsIDMzNTU1MTk1LCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDE3LCAxOTkyMzcwOSwgNTAzMzI0MjAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUxOTMsIDE4ODc1MTI2LCAxNjc3Nzk3OSwgMCwgMCwgMjY0MzN9LAorICAgIHsxNjc3Nzk4MiwgMTc4MjY1NTYsIDE2Nzc3OTgyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjAyLCAxODg3NTEzNSwgMzM1NTUyMDQsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyMDksIDE4ODc1MTQyLCAxNjc3Nzk5NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTIxNSwgMTg4NzUxNDgsIDMzNTU1MjE3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjIyLCAxODg3NTE1NSwgMzM1NTUyMjIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NDQsIDE5OTIzNzM2LCA1MDMzMjQ0NywgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtODYsIDAsIDAsIDAsIDEwMTEzfSwKLSAgICB7MzM1NTUyMTAsIDE4ODc1MTQzLCAxNjc3Nzk5NiwgMCwgMCwgMjY0MzN9LAotICAgIHs1MDMzMjQzMywgMTk5MjM3MjUsIDUwMzMyNDMzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNDQwLCAxOTkyMzczMiwgNTAzMzI0NDAsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyMzAsIDE4ODc1MTYzLCAzMzU1NTIzMCwgMCwgMCwgMjYzNzd9LAotICAgIHs1MDMzMjQ1MiwgMTk5MjM3NDQsIDUwMzMyNDUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjM3LCAxODg3NTE3MCwgMTY3NzgwMjMsIDAsIDAsIDI2NDMzfSwKKyAgICB7NTAzMzI0NjAsIDE5OTIzNzUyLCA1MDMzMjQ2MCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ2NywgMTk5MjM3NTksIDUwMzMyNDY3LCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MjU3LCAxODg3NTE5MCwgMzM1NTUyNTcsIDAsIDAsIDI2Mzc3fSwKKyAgICB7NTAzMzI0NzksIDE5OTIzNzcxLCA1MDMzMjQ3OSwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAtMTAwLCAwLCAwLCAwLCAxMDExM30sCi0gICAgezUwMzMyNDU5LCAxOTkyMzc1MSwgNTAzMzI0NTksIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0NjYsIDE5OTIzNzU4LCA1MDMzMjQ2NiwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI1NiwgMTg4NzUxODksIDMzNTU1MjU2LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjYxLCAxODg3NTE5NCwgMzM1NTUyNjEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI0ODMsIDE5OTIzNzc1LCA1MDMzMjQ4MywgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjQ4NiwgMTk5MjM3NzgsIDUwMzMyNDg2LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNDkzLCAxOTkyMzc4NSwgNTAzMzI0OTMsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUyODMsIDE4ODc1MjE2LCAzMzU1NTI4MywgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTI4OCwgMTg4NzUyMjEsIDMzNTU1Mjg4LCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyNTEwLCAxOTkyMzgwMiwgNTAzMzI1MTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MCwgLTExMiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTI3MywgMTg4NzUyMDYsIDMzNTU1Mjc1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1MjgwLCAxODg3NTIxMywgMTY3NzgwNjYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTUyODYsIDE4ODc1MjE5LCAzMzU1NTI4OCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTI5MywgMTg4NzUyMjYsIDMzNTU1MjkzLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNTE1LCAxOTkyMzgwNywgNTAzMzI1MTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMDAsIDE4ODc1MjMzLCAzMzU1NTMwMiwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTMwNywgMTg4NzUyNDAsIDE2Nzc4MDkzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1MzEzLCAxODg3NTI0NiwgMzM1NTUzMTUsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTUzMjAsIDE4ODc1MjUzLCAzMzU1NTMyMCwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjU0MiwgMTk5MjM4MzQsIDUwMzMyNTQ1LCAwLCAwLCAyNjM3N30sCiAgICAgezAsIC0xMjgsIDAsIDAsIDAsIDEwMTEzfSwKICAgICB7MCwgLTEyNiwgMCwgMCwgMCwgMTAxMTN9LAotICAgIHszMzU1NTMwOCwgMTg4NzUyNDEsIDE2Nzc4MDk0LCAwLCAwLCAyNjQzM30sCisgICAgezMzNTU1MzM1LCAxODg3NTI2OCwgMTY3NzgxMjEsIDAsIDAsIDI2NDMzfSwKICAgICB7MCwgMCwgMCwgMCwgMCwgMzA3Nn0sCiAgICAgezAsIDAsIDAsIDAsIDQsIDMwNzZ9LAogICAgIHswLCAwLCAwLCAwLCA1LCAzMDc2fSwKQEAgLTM4OCwxNSArMzk4LDYgQEAKICAgICB7MCwgLTQyMjYxLCAwLCAwLCAwLCAxMDExM30sCiAgICAgezAsIDkyOCwgMCwgMCwgMCwgMTAxMTN9LAogICAgIHstOTI4LCAwLCAtOTI4LCAwLCAwLCA5OTkzfSwKLSAgICB7MTY3NzgwOTcsIDE3ODI2NjcxLCAxNjc3ODA5NywgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwMCwgMTc4MjY2NzQsIDE2Nzc4MTAwLCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTAzLCAxNzgyNjY3NywgMTY3NzgxMDMsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMDYsIDE3ODI2NjgwLCAxNjc3ODEwNiwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODEwOSwgMTc4MjY2ODMsIDE2Nzc4MTA5LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTEyLCAxNzgyNjY4NiwgMTY3NzgxMTIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MTY3NzgxMTUsIDE3ODI2Njg5LCAxNjc3ODExNSwgMCwgMCwgMjYzNzd9LAotICAgIHsxNjc3ODExOCwgMTc4MjY2OTIsIDE2Nzc4MTE4LCAwLCAwLCAyNjM3N30sCi0gICAgezE2Nzc4MTIxLCAxNzgyNjY5NSwgMTY3NzgxMjEsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgxMjQsIDE3ODI2Njk4LCAxNjc3ODEyNCwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODEyNywgMTc4MjY3MDEsIDE2Nzc4MTI3LCAwLCAwLCAyNjM3N30sCiAgICAgezE2Nzc4MTMwLCAxNzgyNjcwNCwgMTY3NzgxMzAsIDAsIDAsIDI2Mzc3fSwKQEAgLTQ2OCwyMiArNDY5LDMzIEBACiAgICAgezE2Nzc4MzI4LCAxNzgyNjkwMiwgMTY3NzgzMjgsIDAsIDAsIDI2Mzc3fSwKICAgICB7MTY3NzgzMzEsIDE3ODI2OTA1LCAxNjc3ODMzMSwgMCwgMCwgMjYzNzd9LAogICAgIHsxNjc3ODMzNCwgMTc4MjY5MDgsIDE2Nzc4MzM0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NTU0LCAxODg3NTQ4NywgMzM1NTU1NTYsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU1NjEsIDE4ODc1NDk0LCAzMzU1NTU2MywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTU2OCwgMTg4NzU1MDEsIDMzNTU1NTcwLCAwLCAwLCAyNjM3N30sCi0gICAgezUwMzMyNzkyLCAxOTkyNDA4NCwgNTAzMzI3OTUsIDAsIDAsIDI2Mzc3fSwKLSAgICB7NTAzMzI4MDIsIDE5OTI0MDk0LCA1MDMzMjgwNSwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODMzNywgMTc4MjY5MTEsIDE2Nzc4MzM3LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQwLCAxNzgyNjkxNCwgMTY3NzgzNDAsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNDMsIDE3ODI2OTE3LCAxNjc3ODM0MywgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM0NiwgMTc4MjY5MjAsIDE2Nzc4MzQ2LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzQ5LCAxNzgyNjkyMywgMTY3NzgzNDksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNTIsIDE3ODI2OTI2LCAxNjc3ODM1MiwgMCwgMCwgMjYzNzd9LAorICAgIHsxNjc3ODM1NSwgMTc4MjY5MjksIDE2Nzc4MzU1LCAwLCAwLCAyNjM3N30sCisgICAgezE2Nzc4MzU4LCAxNzgyNjkzMiwgMTY3NzgzNTgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MTY3NzgzNjEsIDE3ODI2OTM1LCAxNjc3ODM2MSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTU4MSwgMTg4NzU1MTQsIDMzNTU1NTgzLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NTg4LCAxODg3NTUyMSwgMzM1NTU1OTAsIDAsIDAsIDI2Mzc3fSwKICAgICB7MzM1NTU1OTUsIDE4ODc1NTI4LCAzMzU1NTU5NywgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYwMiwgMTg4NzU1MzUsIDMzNTU1NjA0LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjA5LCAxODg3NTU0MiwgMzM1NTU2MTEsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MTYsIDE4ODc1NTQ5LCAzMzU1NTYxOCwgMCwgMCwgMjYzNzd9LAotICAgIHszMzU1NTYyMywgMTg4NzU1NTYsIDMzNTU1NjI1LCAwLCAwLCAyNjM3N30sCi0gICAgezMzNTU1NjMwLCAxODg3NTU2MywgMzM1NTU2MzIsIDAsIDAsIDI2Mzc3fSwKLSAgICB7MzM1NTU2MzcsIDE4ODc1NTcwLCAzMzU1NTYzOSwgMCwgMCwgMjYzNzd9LAorICAgIHs1MDMzMjgxOSwgMTk5MjQxMTEsIDUwMzMyODIyLCAwLCAwLCAyNjM3N30sCisgICAgezUwMzMyODI5LCAxOTkyNDEyMSwgNTAzMzI4MzIsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2MjIsIDE4ODc1NTU1LCAzMzU1NTYyNCwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTYyOSwgMTg4NzU1NjIsIDMzNTU1NjMxLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjM2LCAxODg3NTU2OSwgMzM1NTU2MzgsIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NDMsIDE4ODc1NTc2LCAzMzU1NTY0NSwgMCwgMCwgMjYzNzd9LAorICAgIHszMzU1NTY1MCwgMTg4NzU1ODMsIDMzNTU1NjUyLCAwLCAwLCAyNjM3N30sCisgICAgezMzNTU1NjU3LCAxODg3NTU5MCwgMzM1NTU2NTksIDAsIDAsIDI2Mzc3fSwKKyAgICB7MzM1NTU2NjQsIDE4ODc1NTk3LCAzMzU1NTY2NiwgMCwgMCwgMjYzNzd9LAogICAgIHswLCAwLCAwLCAwLCAwLCAxMDI1fSwKICAgICB7MCwgMCwgMCwgMCwgMCwgNTYzM30sCiAgICAgezAsIDQwLCAwLCAwLCAwLCAxMDExM30sCiAgICAgey00MCwgMCwgLTQwLCAwLCAwLCA5OTkzfSwKKyAgICB7MCwgMzQsIDAsIDAsIDAsIDEwMTEzfSwKKyAgICB7LTM0LCAwLCAtMzQsIDAsIDAsIDk5OTN9LAogICAgIHswLCAwLCAwLCAwLCAwLCA5MzQ0fSwKIH07CiAKQEAgLTg0MCw2ICs4NTIsMzMgQEAKICAgICA1MTE3LAogICAgIDUxMDksCiAgICAgNTEwOSwKKyAgICA3Mjk2LAorICAgIDEwNzQsCisgICAgMTA0MiwKKyAgICA3Mjk3LAorICAgIDEwNzYsCisgICAgMTA0NCwKKyAgICA3Mjk4LAorICAgIDEwODYsCisgICAgMTA1NCwKKyAgICA3Mjk5LAorICAgIDEwODksCisgICAgMTA1NywKKyAgICA3MzAwLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAxLAorICAgIDEwOTAsCisgICAgMTA1OCwKKyAgICA3MzAyLAorICAgIDEwOTgsCisgICAgMTA2NiwKKyAgICA3MzAzLAorICAgIDExMjMsCisgICAgMTEyMiwKKyAgICA3MzA0LAorICAgIDQyNTcxLAorICAgIDQyNTcwLAogICAgIDc4MzAsCiAgICAgMTA0LAogICAgIDgxNywKQEAgLTE3MzYsNjkgKzE3NzUsNjggQEAKICAgICAxMzEsIDEzMiwgMTMzLCAxMzQsIDM0LCAxMzUsIDEzNiwgMTM3LCAxMzgsIDEzOSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIAogICAgIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMTQ5LCAxNTAsIDE1MSwgMTQ1LCAzNCwgMzQsIDE1MiwgMTQ1LCAxNTMsIDE1NCwgMTU1LCAKICAgICAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE0NSwgMTQ1LCAxNjMsIDE0NSwgMTQ1LCAxNDUsIDE2NCwgCi0gICAgMTY1LCAxNjYsIDE2NywgMTY4LCAxNjksIDE3MCwgMTQ1LCAxNDUsIDE3MSwgMTQ1LCAxNzIsIDE3MywgMTc0LCAxNzUsIAotICAgIDE0NSwgMTQ1LCAxNzYsIDE0NSwgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMTc4LCAxNzksIDM0LCAxODAsIDE0NSwgMTQ1LCAKKyAgICAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNDUsIDE3MSwgMTcyLCAxNDUsIDE3MywgMTc0LCAxNzUsIDE3NiwgCisgICAgMTQ1LCAxNDUsIDE3NywgMTQ1LCAxNDUsIDE0NSwgMTc4LCAxNDUsIDE0NSwgMTc5LCAxODAsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE4MiwgMzQsIDE4MywgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODEsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAxODQsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMzQsIDM0LCAzNCwgMzQsIDE4MiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAzNCwgMzQsIDM0LCAzNCwgMTg1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODMsIDE4NCwgMTg1LCAxODYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE4NywgMTg4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDM0LCAzNCwgMzQsIDM0LCAxODYsIDE4NywgMTg4LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE5MCwgMTkxLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDE5MiwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAxOTMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxOTQsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxOTUsIDE5NiwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxODksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxOTAsIDE5MSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDY0LCAxOTIsIAotICAgIDE5MywgMTk0LCAxOTUsIDE0NSwgMTk2LCAxNDUsIDE5NywgMTk4LCAxOTksIDIwMCwgMjAxLCAyMDIsIDIwMywgMjA0LCA2NCwgCi0gICAgNjQsIDY0LCA2NCwgMjA1LCAyMDYsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAzNCwgMjA3LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDIwOCwgCi0gICAgMjA5LCAxNDUsIDE0NSwgMjEwLCAyMTEsIDIxMiwgMjEzLCAyMTQsIDE0NSwgNjQsIDIxNSwgNjQsIDY0LCAyMTYsIDIxNywgCi0gICAgNjQsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMjIyLCAyMjMsIDIyNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjI1LCAyMjYsIDIyNywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIyOCwgMzQsIDIyOSwgMjMwLCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDE0NSwgNjQsIDE5NywgMTk4LCAxOTksIDIwMCwgMTQ1LCAyMDEsIDE0NSwgMjAyLCAyMDMsIDIwNCwgMjA1LCAyMDYsIDIwNywgCisgICAgMjA4LCAyMDksIDY0LCA2NCwgNjQsIDY0LCAyMTAsIDIxMSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAyMTIsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDM0LCAyMTMsIDIxNCwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMjE1LCAyMTYsIDE0NSwgMTQ1LCAyMTcsIDIxOCwgMjE5LCAyMjAsIDIyMSwgMTQ1LCA2NCwgMjIyLCA2NCwgCisgICAgNjQsIDY0LCA2NCwgNjQsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMjMwLCAyMzEsIDIzMiwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgODcsIDIzMywgMzQsIDIzNCwgMjM1LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzMSwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDM0LCAyMzIsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNiwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzcsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAogICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAotICAgIDIzMywgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAzNCwgMjM4LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIAorICAgIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzksIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDIzNSwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCi0gICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyMzYsIDM0LCAyMzcsIDM0LCAKKyAgICAzNCwgMzQsIDM0LCAyNDAsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCiAgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgCisgICAgMjQxLCAzNCwgMjQyLCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKICAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAKLSAgICAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMjM4LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCisgICAgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAzNCwgMzQsIDM0LCAyNDMsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzMSwgMzQsIDM0LCAyMzksIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMzQsIDIzNiwgMzQsIDM0LCAyNDQsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIApAQCAtMjIwMSw4ICsyMjM5LDggQEAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKLSAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAyNDAsIDE0NSwgMjQxLCAyNDIsIDE0NSwgCi0gICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAorICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDI0NSwgMTQ1LCAKKyAgICAyNDYsIDI0NywgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCkBAIC0yMjM4LDcgKzIyNzYsNyBAQAogICAgIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAKICAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgCiAgICAgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxNDUsIAotICAgIDE0NSwgMTQ1LCAxNDUsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKKyAgICAxNDUsIDE0NSwgMTQ1LCAxNDUsIDE0NSwgMTQ1LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMjc0LDcgKzIzMTIsNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAxMjcsIDEyNywgMTI3LCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCkBAIC0yMzExLDcgKzIzNDksNyBAQAogICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAKICAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgCiAgICAgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIAotICAgIDEyNywgMTI3LCAxMjcsIDEyNywgMjQzLCAKKyAgICAxMjcsIDEyNywgMTI3LCAxMjcsIDEyNywgMTI3LCAxMjcsIDI0OCwgCiB9OwogCiBzdGF0aWMgdW5zaWduZWQgc2hvcnQgaW5kZXgyW10gPSB7CkBAIC0yMzQ3LDcgKzIzODUsNyBAQAogICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNjUsIAogICAgIDMwLCAzMSwgNjYsIDY3LCA2OCwgNjgsIDMwLCAzMSwgNjksIDcwLCA3MSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgMjAsIDc3LCA3NywgMjAsIDc4LCAyMCwgNzksIDgwLCAyMCwgMjAsIAotICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgMjAsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAorICAgIDIwLCA3NywgODEsIDIwLCA4MiwgMjAsIDgzLCA4NCwgMjAsIDg1LCA4NiwgODQsIDg3LCA4OCwgMjAsIDIwLCA4NiwgMjAsIAogICAgIDg5LCA5MCwgMjAsIDIwLCA5MSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDkyLCAyMCwgMjAsIDkzLCAyMCwgMjAsIAogICAgIDkzLCAyMCwgMjAsIDIwLCA5NCwgOTMsIDk1LCA5NiwgOTYsIDk3LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDk4LCAyMCwgNTUsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgOTksIDEwMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKQEAgLTI0MzUsMTUyICsyNDczLDE1MiBAQAogICAgIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCA1NSwgMTgsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNTUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCA1LCA1LCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIAotICAgIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAxOCwgMjUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAyNSwgMTgsIDE4LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCAxMDIsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAKLSAgICAyNSwgMCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjUsIDAsIDAsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIAotICAgIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIAotICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDI1LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAKLSAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgCi0gICAgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAxOCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCisgICAgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI1LCAyNSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDE4LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyNSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAwLCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgCi0gICAgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjUsIDE4LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAwLCAKLSAgICAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAwLCA1NSwgNTUsIAotICAgIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCi0gICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAwLCAyNSwgMTgsIDE4LCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAxOCwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAxOCwgMCwgMTgsIDE4LCAyNSwgMCwgMCwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCA3LCA4LCA5LCAxMCwgCisgICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMjUsIDU1LCAxOCwgMjUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDE4LCAxOCwgMCwgMTgsIDE4LCAyNSwgMjUsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgMjUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAxOCwgMTgsIDAsIDAsIDE4LCAxOCwgCisgICAgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1NSwgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIAorICAgIDU1LCAwLCAwLCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMCwgMCwgMCwgMTgsIAorICAgIDE4LCAxOCwgMCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAxOCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgCisgICAgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDE4LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAyNSwgMjUsIAorICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI1LCAyNSwgMCwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIAorICAgIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgNSwgNTUsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgNTUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAwLCAyNSwgMTgsIAorICAgIDE4LCAwLCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgMCwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCA1NSwgCisgICAgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAwLCAxOCwgMTgsIDE4LCAwLCAxOCwgMTgsIDE4LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDE4LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIAotICAgIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgCi0gICAgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDE4LCAxOCwgMTgsIDAsIDE4LCAxOCwgMTgsIDI1LCA1NSwgNSwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgMTgsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDcsIAorICAgIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAxOCwgMTgsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDAsIDAsIDAsIDAsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDAsIDI1LCAwLCAxOCwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKKyAgICAxNCwgMTUsIDE2LCAwLCAwLCAxOCwgMTgsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMTAyLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAotICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDAsIAotICAgIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgMTM4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDU1LCAwLCAwLCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDEwMiwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIAotICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDI1LCA1LCAyNSwgNSwgMjUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDEzOCwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAxMDIsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgCisgICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCAKKyAgICAyNSwgNSwgMjUsIDUsIDI1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIAorICAgIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCisgICAgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgCisgICAgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAKKyAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgCisgICAgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAorICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIAotICAgIDI1LCAyNSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAxOCwgMTgsIDI1LCAyNSwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDU1LCAxOCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDE4LCAxOCwgMTgsIDI1LCA1LCA1LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIAotICAgIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAKLSAgICAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMTM5LCAxMzksIDEzOSwgMCwgCi0gICAgMTM5LCAwLCAwLCAwLCAwLCAwLCAxMzksIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAxMDIsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgCi0gICAgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIAotICAgIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAKLSAgICAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgCi0gICAgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIAotICAgIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAKLSAgICAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgCi0gICAgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAKLSAgICAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDI1LCAyNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTQwLCAxNDEsIDE0MiwgMTQzLCAxNDQsIDE0NSwgMTQ2LCAxNDcsIDE0OCwgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMTQ5LCAxNTAsIDE1MSwgMTUyLCAxNTMsIDE1NCwgMTU1LCAxNTYsIDE1NywgMTU4LCAxNTksIDE2MCwgCisgICAgMTYxLCAxNjIsIDE2MywgMTY0LCAxNjUsIDE2NiwgMTY3LCAxNjgsIDE2OSwgMTcwLCAxNzEsIDE3MiwgMTczLCAxNzQsIAorICAgIDE3NSwgMTc2LCAxNzcsIDE3OCwgMTc5LCAxODAsIDE4MSwgMTgyLCAxODMsIDE4NCwgMTg1LCAxODYsIDE4NywgMTg4LCAKKyAgICAxODksIDE5MCwgMTkxLCAxOTIsIDE5MywgMTk0LCAxOTUsIDE5NiwgMTk3LCAxOTgsIDE5OSwgMjAwLCAyMDEsIDIwMiwgCisgICAgMjAzLCAyMDQsIDIwNSwgMjA2LCAyMDcsIDIwOCwgMjA5LCAyMTAsIDIxMSwgMjEyLCAyMTMsIDIxNCwgMjE1LCAyMTYsIAorICAgIDIxNywgMjE4LCAyMTksIDIyMCwgMjIxLCAyMjIsIDIyMywgMjI0LCAyMjUsIDIyNiwgMjI3LCAyMjgsIDIyOSwgMjMwLCAKKyAgICAyMzEsIDIzMiwgMjMzLCAyMzQsIDAsIDAsIDIzNSwgMjM2LCAyMzcsIDIzOCwgMjM5LCAyNDAsIDAsIDAsIDUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0yNTkzLDEwOSArMjYzMSwxMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgMjQxLCAyNDEsIDI0MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDI1LCAyNSwgMjUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIAorICAgIDI0MSwgMjQxLCAyNDEsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCAyNSwgCisgICAgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDEwMiwgNSwgNSwgNSwgNSwgNTUsIDI1LCAwLCAKLSAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDI1LCAyNSwgMjUsIDIxLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMTgsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCAxMDIsIDUsIDUsIDUsIDUsIDU1LCAyNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCAyMSwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMTAyLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMjQyLCAyNDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIAotICAgIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgCisgICAgMTgsIDE4LCAwLCAwLCAwLCAwLCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAwLCAwLCAKKyAgICAwLCAwLCA1LCAwLCAwLCAwLCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDE0MCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDAsIDAsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIAorICAgIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCA3LCA4LCA5LCAKKyAgICAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDI1LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMCwgMCwgMjUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMTAyLCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgNTUsIDU1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAKKyAgICAxMywgMTQsIDE1LCAxNiwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAxOCwgMjUsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCA1LCA1LCAyNDMsIDI0NCwgCisgICAgMjQ1LCAyNDYsIDI0NywgMjQ4LCAyNDksIDI1MCwgMjUxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDI1LCA1NSwgNTUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDI1LCAxOCwgMjUsIDI1LCAxOCwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgMjUsIDI1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgCi0gICAgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKLSAgICAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDEwMiwgMTAyLCAxMDIsIAotICAgIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDU1LCA1NSwgMCwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCA1NSwgNTUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCiAgICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAotICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKLSAgICAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI0MiwgMjAsIAotICAgIDIwLCAyMCwgMjQzLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAKLSAgICAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIAorICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgMjAsIAorICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDI1MiwgMjAsIDIwLCAyMCwgMjUzLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIAogICAgIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgCi0gICAgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAxMDEsIDEwMSwgMTAxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKQEAgLTI3MDQsNDkgKzI3NDMsNDkgQEAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKICAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAyNDQsIDI0NSwgMjQ2LCAyNDcsIDI0OCwgMjQ5LCAyMCwgMjAsIDI1MCwgMjAsIDMwLCAzMSwgMzAsIAorICAgIDMxLCAyNTQsIDI1NSwgMjU2LCAyNTcsIDI1OCwgMjU5LCAyMCwgMjAsIDI2MCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgCi0gICAgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAwLCAwLCAyNTIsIDI1MiwgMjUyLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAwLCAwLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUyLCAyNTIsIAotICAgIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMCwgCi0gICAgMCwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMCwgMCwgMjUzLCAyNTEsIDI1NCwgMjUxLCAyNTUsIDI1MSwgMjU2LCAKLSAgICAyNTEsIDAsIDI1MiwgMCwgMjUyLCAwLCAyNTIsIDAsIDI1MiwgMjUxLCAyNTEsIDI1MSwgMjUxLCAyNTEsIDI1MSwgMjUxLCAKLSAgICAyNTEsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTIsIDI1MiwgMjUyLCAyNTcsIDI1NywgMjU4LCAyNTgsIDI1OCwgCi0gICAgMjU4LCAyNTksIDI1OSwgMjYwLCAyNjAsIDI2MSwgMjYxLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjQsIDI2NSwgMjY2LCAKLSAgICAyNjcsIDI2OCwgMjY5LCAyNzAsIDI3MSwgMjcyLCAyNzMsIDI3NCwgMjc1LCAyNzYsIDI3NywgMjc4LCAyNzksIDI4MCwgCi0gICAgMjgxLCAyODIsIDI4MywgMjg0LCAyODUsIDI4NiwgMjg3LCAyODgsIDI4OSwgMjkwLCAyOTEsIDI5MiwgMjkzLCAyOTQsIAotICAgIDI5NSwgMjk2LCAyOTcsIDI5OCwgMjk5LCAzMDAsIDMwMSwgMzAyLCAzMDMsIDMwNCwgMzA1LCAzMDYsIDMwNywgMzA4LCAKLSAgICAzMDksIDMxMCwgMjUxLCAyNTEsIDMxMSwgMzEyLCAzMTMsIDAsIDMxNCwgMzE1LCAyNTIsIDI1MiwgMzE2LCAzMTYsIDMxNywgCi0gICAgNiwgMzE4LCA2LCA2LCA2LCAzMTksIDMyMCwgMzIxLCAwLCAzMjIsIDMyMywgMzI0LCAzMjQsIDMyNCwgMzI0LCAzMjUsIDYsIAotICAgIDYsIDYsIDI1MSwgMjUxLCAzMjYsIDMyNywgMCwgMCwgMzI4LCAzMjksIDI1MiwgMjUyLCAzMzAsIDMzMCwgMCwgNiwgNiwgNiwgCi0gICAgMjUxLCAyNTEsIDMzMSwgMzMyLCAzMzMsIDEyNiwgMzM0LCAzMzUsIDI1MiwgMjUyLCAzMzYsIDMzNiwgMTMwLCA2LCA2LCA2LCAKLSAgICAwLCAwLCAzMzcsIDMzOCwgMzM5LCAwLCAzNDAsIDM0MSwgMzQyLCAzNDIsIDM0MywgMzQzLCAzNDQsIDYsIDYsIDAsIDIsIDIsIAotICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgCi0gICAgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAKLSAgICAyMSwgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNDUsIDEwMSwgCi0gICAgMCwgMCwgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNDUsIDI2LCAyMiwgMjMsIAotICAgIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKKyAgICAzMSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIAorICAgIDI2MiwgMjYyLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAwLCAwLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgCisgICAgMjYyLCAwLCAwLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYyLCAyNjIsIDI2MiwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjIsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMCwgMCwgMjYyLCAKKyAgICAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMCwgMCwgMjYzLCAyNjEsIDI2NCwgMjYxLCAyNjUsIDI2MSwgMjY2LCAyNjEsIDAsIAorICAgIDI2MiwgMCwgMjYyLCAwLCAyNjIsIDAsIDI2MiwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MSwgMjYxLCAyNjEsIDI2MiwgCisgICAgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjIsIDI2MiwgMjYyLCAyNjcsIDI2NywgMjY4LCAyNjgsIDI2OCwgMjY4LCAyNjksIAorICAgIDI2OSwgMjcwLCAyNzAsIDI3MSwgMjcxLCAyNzIsIDI3MiwgMCwgMCwgMjczLCAyNzQsIDI3NSwgMjc2LCAyNzcsIDI3OCwgCisgICAgMjc5LCAyODAsIDI4MSwgMjgyLCAyODMsIDI4NCwgMjg1LCAyODYsIDI4NywgMjg4LCAyODksIDI5MCwgMjkxLCAyOTIsIAorICAgIDI5MywgMjk0LCAyOTUsIDI5NiwgMjk3LCAyOTgsIDI5OSwgMzAwLCAzMDEsIDMwMiwgMzAzLCAzMDQsIDMwNSwgMzA2LCAKKyAgICAzMDcsIDMwOCwgMzA5LCAzMTAsIDMxMSwgMzEyLCAzMTMsIDMxNCwgMzE1LCAzMTYsIDMxNywgMzE4LCAzMTksIDMyMCwgCisgICAgMjYxLCAyNjEsIDMyMSwgMzIyLCAzMjMsIDAsIDMyNCwgMzI1LCAyNjIsIDI2MiwgMzI2LCAzMjYsIDMyNywgNiwgMzI4LCA2LCAKKyAgICA2LCA2LCAzMjksIDMzMCwgMzMxLCAwLCAzMzIsIDMzMywgMzM0LCAzMzQsIDMzNCwgMzM0LCAzMzUsIDYsIDYsIDYsIDI2MSwgCisgICAgMjYxLCAzMzYsIDMzNywgMCwgMCwgMzM4LCAzMzksIDI2MiwgMjYyLCAzNDAsIDM0MCwgMCwgNiwgNiwgNiwgMjYxLCAyNjEsIAorICAgIDM0MSwgMzQyLCAzNDMsIDEyNiwgMzQ0LCAzNDUsIDI2MiwgMjYyLCAzNDYsIDM0NiwgMTMwLCA2LCA2LCA2LCAwLCAwLCAKKyAgICAzNDcsIDM0OCwgMzQ5LCAwLCAzNTAsIDM1MSwgMzUyLCAzNTIsIDM1MywgMzUzLCAzNTQsIDYsIDYsIDAsIDIsIDIsIDIsIDIsIAorICAgIDIsIDIsIDIsIDIsIDIsIDIsIDIsIDIxLCAyMSwgMjEsIDIxLCAyMSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNSwgNSwgNiwgMywgMywgMjEsIDIxLCAyMSwgMjEsIDIxLCAyLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyLCAyMSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAzNTUsIDEwMSwgMCwgCisgICAgMCwgMzU2LCAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgNSwgNSwgNSwgNSwgNSwgMTAxLCAzNTUsIDI2LCAyMiwgMjMsIAorICAgIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDUsIDUsIDUsIDUsIDUsIDAsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAKICAgICAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMTAxLCAxMDEsIDEwMSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDYsIDYsIDYsIDYsIDI1LCA2LCA2LCA2LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICA1LCA1LCAxMjAsIDUsIDUsIDUsIDUsIDEyMCwgNSwgNSwgMjAsIDEyMCwgMTIwLCAxMjAsIDIwLCAyMCwgMTIwLCAxMjAsIAotICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzUyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMTIwLCA1LCAzNTMsIDUsIDEyMCwgNSwgMzU0LCAzNTUsIDEyMCwgMTIwLCAzNTIsIDIwLCAxMjAsIDEyMCwgMzU2LCAxMjAsIAorICAgIDEyMCwgMjAsIDUsIDEyMCwgNSwgNSwgMzYyLCAxMjAsIDEyMCwgMTIwLCAxMjAsIDEyMCwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMTIwLCA1LCAzNjMsIDUsIDEyMCwgNSwgMzY0LCAzNjUsIDEyMCwgMTIwLCAzNjIsIDIwLCAxMjAsIDEyMCwgMzY2LCAxMjAsIAogICAgIDIwLCA1NSwgNTUsIDU1LCA1NSwgMjAsIDUsIDUsIDIwLCAyMCwgMTIwLCAxMjAsIDUsIDUsIDUsIDUsIDUsIDEyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDUsIDUsIDUsIDUsIDM1NywgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgCi0gICAgMzU4LCAzNTgsIDM1OCwgMzU4LCAzNTgsIDM1OCwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIAotICAgIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAzNTksIDM1OSwgMzU5LCAyNDEsIDI0MSwgMjQxLCAzMCwgMzEsIDI0MSwgMjQxLCAKKyAgICAyMCwgMjAsIDIwLCA1LCA1LCA1LCA1LCAzNjcsIDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIAorICAgIDM2OCwgMzY4LCAzNjgsIDM2OCwgMzY4LCAzNjgsIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAKKyAgICAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMzY5LCAzNjksIDM2OSwgMjQxLCAyNDEsIDI0MSwgMzAsIDMxLCAyNDEsIDI0MSwgCiAgICAgMjQxLCAyNDEsIDI3LCA1LCA1LCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI3NjIsMjggKzI4MDEsMjggQEAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIAotICAgIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAKLSAgICAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzU2LCAKKyAgICAzNTcsIDM1OCwgMzU5LCAzNjAsIDM2MSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgCisgICAgMjIsIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAogICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAKLSAgICAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgMzYwLCAzNjAsIDM2MCwgCi0gICAgMzYwLCAzNjAsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIAotICAgIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAzNjEsIDM2MSwgMzYxLCAKLSAgICAzNDUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAKLSAgICAzNDksIDM1MCwgMzUxLCAyNywgMzQ1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIAorICAgIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAzNzAsIDM3MCwgMzcwLCAKKyAgICAzNzAsIDM3MCwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgCisgICAgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIDM3MSwgMzcxLCAzNzEsIAorICAgIDM1NSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAzNTUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNiwgMjIsIAotICAgIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgMzUxLCAyNywgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAKLSAgICAzNTAsIDM1MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAyNiwgMjIsIAorICAgIDIzLCAzNTYsIDM1NywgMzU4LCAzNTksIDM2MCwgMzYxLCAyNywgMjYsIDIyLCAyMywgMzU2LCAzNTcsIDM1OCwgMzU5LCAKKyAgICAzNjAsIDM2MSwgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMjgwNSwxOCArMjg0NCwxOCBAQAogICAgIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAKICAgICAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgCiAgICAgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDEzNiwgMTM2LCAxMzYsIDAsIAotICAgIDMwLCAzMSwgMzYyLCAzNjMsIDM2NCwgMzY1LCAzNjYsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDM2NywgMzY4LCAzNjksIAotICAgIDM3MCwgMjAsIDMwLCAzMSwgMjAsIDMwLCAzMSwgMjAsIDIwLCAyMCwgMjAsIDIwLCAxMDEsIDEwMSwgMzcxLCAzNzEsIDMwLCAKKyAgICAzMCwgMzEsIDM3MiwgMzczLCAzNzQsIDM3NSwgMzc2LCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAKKyAgICAzODAsIDIwLCAzMCwgMzEsIDIwLCAzMCwgMzEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMTAxLCAxMDEsIDM4MSwgMzgxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMjAsIDUsIDUsIDUsIDUsIDUsIDUsIDMwLCAzMSwgMzAsIDMxLCAKLSAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzNzIsIDM3MiwgMzcyLCAKLSAgICAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgCi0gICAgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIAotICAgIDM3MiwgMzcyLCAzNzIsIDM3MiwgMzcyLCAzNzIsIDM3MiwgMCwgMzcyLCAwLCAwLCAwLCAwLCAwLCAzNzIsIDAsIDAsIDU1LCAKKyAgICAyNSwgMjUsIDI1LCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDI3LCA1LCA1LCAzODIsIDM4MiwgMzgyLCAKKyAgICAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgCisgICAgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIAorICAgIDM4MiwgMzgyLCAzODIsIDM4MiwgMzgyLCAzODIsIDM4MiwgMCwgMzgyLCAwLCAwLCAwLCAwLCAwLCAzODIsIDAsIDAsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4MjksOCArMjg2OCw4IEBACiAgICAgNTUsIDU1LCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKICAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDM3MywgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzgzLCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKQEAgLTI4ODIsMTQgKzI5MjEsMTQgQEAKICAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI4OTgsNyArMjkzNyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MDgsNyArMjk0Nyw3IEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTI5MTYsNDcgKzI5NTUsNDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAzNzQsIAotICAgIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMzg0LCAKKyAgICA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgMzc0LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAzNzQsIDM3NCwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDM4NCwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk2NCw3ICszMDAzLDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk3MywxNCArMzAxMiwxNCBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMjk4OCw4ICszMDI3LDggQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAzNzQsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCAzNzQsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMzg0LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDM4NCwgMzg0LCAzODQsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzAwMiwxMSArMzA0MSwxMSBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMwMTQsMTAgKzMwNTMsMTAgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDI1LDcgKzMwNjQsNyBAQAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMDMzLDQwICszMDcyLDQwIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMTA2LDI2ICszMTQ1LDI2IEBACiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCiAgICAgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgCi0gICAgMzEsIDMwLCAzMSwgMTAxLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDMwLCAzMSwgMzAsIDMxLCAzNzUsIDMwLCAKLSAgICAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAxMDIsIDYsIDYsIDMwLCAzMSwgMzc2LCAyMCwgNTUsIDMwLCAKKyAgICAzMSwgMzAsIDMxLCAxMDEsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDM4NSwgMzAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDEwMiwgNiwgNiwgMzAsIDMxLCAzODYsIDIwLCA1NSwgMzAsIAogICAgIDMxLCAzMCwgMzEsIDIwLCAyMCwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIAotICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzNzcsIDM3OCwgMzc5LCAzODAsIDAsIDAsIDM4MSwgMzgyLCAzODMsIDM4NCwgCi0gICAgMzAsIDMxLCAzMCwgMzEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDMxLCAzMCwgMzEsIDMwLCAzMSwgMzAsIDMxLCAzODcsIDM4OCwgMzg5LCAzOTAsIDM4NywgMCwgMzkxLCAzOTIsIDM5MywgCisgICAgMzk0LCAzMCwgMzEsIDMwLCAzMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDEwMSwgMTAxLCAKLSAgICAyMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDI1LCAxOCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICAxMDEsIDEwMSwgMjAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgNTUsIDU1LCA1NSwgMjUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAyNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAxOCwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDUsIDUsIDU1LCA1LCA1NSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKICAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAKQEAgLTMxNTgsMTQgKzMxOTcsMTQgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAogICAgIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMzg1LCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCAyMCwgNiwgMTAxLCAxMDEsIDEwMSwgMTAxLCAyMCwgMjAsIAotICAgIDIwLCAyMCwgMjAsIDIwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAzODYsIDM4NywgMzg4LCAzODksIDM5MCwgCi0gICAgMzkxLCAzOTIsIDM5MywgMzk0LCAzOTUsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCA0MDEsIDQwMiwgNDAzLCA0MDQsIAotICAgIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgNDE1LCA0MTYsIDQxNywgNDE4LCAKLSAgICA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIDQyOSwgNDMwLCA0MzEsIDQzMiwgCi0gICAgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCA0NDMsIDQ0NCwgNDQ1LCA0NDYsIAotICAgIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgNDU3LCA0NTgsIDQ1OSwgNDYwLCAKLSAgICA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMjAsIDIwLCAzOTUsIDIwLCAyMCwgMjAsIDIwLCAyMCwgMjAsIDIwLCA2LCAxMDEsIDEwMSwgMTAxLCAxMDEsIDIwLCAyMCwgCisgICAgMjAsIDIwLCAyMCwgMjAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDM5NiwgMzk3LCAzOTgsIDM5OSwgNDAwLCAKKyAgICA0MDEsIDQwMiwgNDAzLCA0MDQsIDQwNSwgNDA2LCA0MDcsIDQwOCwgNDA5LCA0MTAsIDQxMSwgNDEyLCA0MTMsIDQxNCwgCisgICAgNDE1LCA0MTYsIDQxNywgNDE4LCA0MTksIDQyMCwgNDIxLCA0MjIsIDQyMywgNDI0LCA0MjUsIDQyNiwgNDI3LCA0MjgsIAorICAgIDQyOSwgNDMwLCA0MzEsIDQzMiwgNDMzLCA0MzQsIDQzNSwgNDM2LCA0MzcsIDQzOCwgNDM5LCA0NDAsIDQ0MSwgNDQyLCAKKyAgICA0NDMsIDQ0NCwgNDQ1LCA0NDYsIDQ0NywgNDQ4LCA0NDksIDQ1MCwgNDUxLCA0NTIsIDQ1MywgNDU0LCA0NTUsIDQ1NiwgCisgICAgNDU3LCA0NTgsIDQ1OSwgNDYwLCA0NjEsIDQ2MiwgNDYzLCA0NjQsIDQ2NSwgNDY2LCA0NjcsIDQ2OCwgNDY5LCA0NzAsIAorICAgIDQ3MSwgNDcyLCA0NzMsIDQ3NCwgNDc1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgMjUsIDE4LCAxOCwgNSwgMTgsIDI1LCAwLCAwLCA3LCAKICAgICA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKQEAgLTMxODYsMTUgKzMyMjUsMTUgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIwOCw5ICszMjQ3LDkgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NjYsIDQ2NywgNDY4LCA0NjksIAotICAgIDQ3MCwgNDcxLCA0NzIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ3MywgNDc0LCA0NzUsIDQ3NiwgCi0gICAgNDc3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0NzYsIDQ3NywgNDc4LCA0NzksIAorICAgIDQ4MCwgNDgxLCA0ODIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDQ4MywgNDg0LCA0ODUsIDQ4NiwgCisgICAgNDg3LCAwLCAwLCAwLCAwLCAwLCA1NSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIApAQCAtMzIyNyw3ICszMjY2LDcgQEAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA0NzgsIDQ3OCwgNDc4LCA0NzgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDQ4OCwgNDg4LCA0ODgsIDQ4OCwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjQyLDEzICszMjgxLDEzIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDQ3OCwgNDc4LCA1LCA1LCAwLCAwLCAyNSwgMjUsIDI1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNDg4LCA0ODgsIDUsIDUsIDAsIDAsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIDE4LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxOCwgMTgsIDE4LCA1LCA1LCA2LCAwLCA1LCA2LCA1LCA1LCAKICAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAKLSAgICA0NzgsIDU1LCA0NzgsIDU1LCA0NzgsIDAsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIDQ3OCwgNTUsIAorICAgIDQ4OCwgNTUsIDQ4OCwgNTUsIDQ4OCwgMCwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgNDg4LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCkBAIC0zMjY0LDcgKzMzMDMsNyBAQAogICAgIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxMDIsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDQ3OSwgNDc5LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNDg5LCA0ODksIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA2LCA1LCA1LCA1LCAwLCA1LCAKQEAgLTMyOTAsNyArMzMyOSw3IEBACiAgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKICAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNywgMjcsIDI3LCAyNywgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMjcsIDI3LCA1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNywgMjcsIDUsIDUsIDUsIDAsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIApAQCAtMzMyMCwyOTcgKzMzNTksMzMyIEBACiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDI0MSwgMjQxLCAyNDEsIAogICAgIDI0MSwgMjQxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0ODAsIDQ4MCwgCi0gICAgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIAotICAgIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCAKLSAgICA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MCwgNDgwLCA0ODAsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgCi0gICAgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIAotICAgIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCAKLSAgICA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNDgxLCA0ODEsIDQ4MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIAorICAgIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgCisgICAgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIAorICAgIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCA0OTAsIDQ5MCwgNDkwLCAKKyAgICA0OTAsIDQ5MCwgNDkwLCA0OTAsIDAsIDAsIDAsIDAsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCAKKyAgICA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgCisgICAgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDQ5MSwgNDkxLCA0OTEsIDAsIAorICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAKLSAgICAwLCAwLCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAyNSwgMjYsIDIyLCAyMywgMzQ2LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNywgMjcsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDI1LCAwLCAwLCAwLCAKLSAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKLSAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCi0gICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAotICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAotICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKLSAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCi0gICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMjYsIDIyLCAyMywgMzQ2LCAzNDcsIDM0OCwgMzQ5LCAzNTAsIDM1MSwgMjcsIDI3LCAyNywgMjcsIAotICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAotICAgIDAsIDE4LCAyNSwgMTgsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAyNiwgMjIsIDIzLCAzNDYsIDM0NywgMzQ4LCAzNDksIDM1MCwgCi0gICAgMzUxLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCAxOCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDE4LCAxOCwgCi0gICAgMjUsIDI1LCA1LCA1LCAyMSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAKLSAgICAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDI1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCA1LCA1LCA1LCAKLSAgICA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMjUsIDI1LCAxOCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAKLSAgICAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgMjUsIDI1LCAyNSwgNSwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDU1LCA1LCAKLSAgICA1NSwgNSwgNSwgNSwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKLSAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgCi0gICAgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAwLCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjUsIDU1LCAxOCwgCi0gICAgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAwLCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAKLSAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNTUsIDU1LCAKLSAgICA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDE4LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDE4LCAyNSwgCi0gICAgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDUsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgCi0gICAgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIAotICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAKLSAgICAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKLSAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKLSAgICAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKLSAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCi0gICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAotICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMjcsIDI3LCA1NSwgNTUsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgNTUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMjUsIDI2LCAyMiwgMjMsIDM1NiwgMjcsIDI3LCAyNywgMjcsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjcsIDI3LCA1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAKKyAgICAyNSwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMjcsIDI3LCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAyNywgCisgICAgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDcsIDgsIDksIDEwLCAxMSwgCi0gICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgCisgICAgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIAorICAgIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAKKyAgICAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAxMDgsIDEwOCwgMTA4LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAKKyAgICAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgCisgICAgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIAorICAgIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAxMTUsIDExNSwgMTE1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAzNjEsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAxOCwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAyNywgMjcsIDI3LCAyNywgCi0gICAgMjcsIDI3LCAyNywgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIAorICAgIDM1OSwgMzYwLCAzNjEsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAKKyAgICAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMTgsIDE4LCAyNSwgMjUsIDUsIDUsIDIxLCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIAorICAgIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgCisgICAgMTYsIDUsIDUsIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMjUsIDUsIDUsIDU1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAyNSwgMjUsIDE4LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIDI1LCA1LCAwLCAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAKKyAgICAxNiwgNTUsIDUsIDU1LCA1LCA1LCA1LCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIAorICAgIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMjUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgMTgsIDE4LCAKKyAgICAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgCisgICAgMjUsIDU1LCAxOCwgMTgsIDI1LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMTgsIDE4LCAwLCAwLCAxOCwgMTgsIDE4LCAwLCAwLCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMTgsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAwLCAKKyAgICAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgCisgICAgMjUsIDI1LCAxOCwgMjUsIDU1LCA1NSwgNTUsIDU1LCA1LCA1LCA1LCA1LCA1LCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgCisgICAgMTQsIDE1LCAxNiwgMCwgNSwgMCwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCAKKyAgICAxOCwgMTgsIDE4LCAxOCwgMjUsIDI1LCAxOCwgMjUsIDI1LCA1NSwgNTUsIDUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCA3LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsIDE1LCAxNiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAxOCwgMTgsIDE4LCAyNSwgMjUsIAorICAgIDI1LCAyNSwgMCwgMCwgMTgsIDE4LCAxOCwgMTgsIDI1LCAyNSwgMTgsIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNTUsIDU1LCA1NSwgNTUsIDI1LCAyNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMTgsIDE4LCAxOCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMTgsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICA1LCA1LCA1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAyNSwgMTgsIDI1LCAxOCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDE4LCAyNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMTgsIDE4LCAyNSwgMjUsIDI1LCAyNSwgMTgsIAorICAgIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDI3LCAKKyAgICAyNywgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAxNywgMTcsIDE3LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAKKyAgICAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDE5LCAxOSwgMTksIDcsIDgsIDksIDEwLCAxMSwgCisgICAgMTIsIDEzLCAxNCwgMTUsIDE2LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDE4LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMTgsIDI1LCA1NSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAKKyAgICAxNSwgMTYsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAKKyAgICAyNywgMjcsIDI3LCAwLCAwLCAwLCA1LCA1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCAwLCAwLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMTgsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAxOCwgMjUsIDI1LCAKKyAgICAxOCwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAKKyAgICAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgCisgICAgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIAorICAgIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDI0MSwgMjQxLCAyNDEsIDAsIDUsIDUsIDUsIAorICAgIDUsIDUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIDE0LCAxNSwgMTYsIDAsIDAsIDAsIDAsIDUsIDUsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNywgOCwgOSwgMTAsIDExLCAxMiwgMTMsIAorICAgIDE0LCAxNSwgMTYsIDAsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNTUsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCiAgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgCi0gICAgMTgsIDE4LCAxOCwgMTgsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIAorICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMTAyLCAKKyAgICAxMDIsIDEwMiwgMTAyLCAxMDIsIDEwMiwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAxMDIsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAogICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCA1LCAyNSwgMjUsIDUsIDIxLCAKLSAgICAyMSwgMjEsIDIxLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDUsIDI1LCAyNSwgNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAogICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAotICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgMTgsIAotICAgIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIAotICAgIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKLSAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDAsIDAsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIAorICAgIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDUsIDE4LCAxOCwgMjUsIDI1LCAyNSwgNSwgNSwgNSwgCisgICAgMTgsIDE4LCAxOCwgMTgsIDE4LCAxOCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDUsIDUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAKKyAgICA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCA1LCAyNSwgMjUsIAogICAgIDI1LCAyNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCkBAIC0zNzAwLDIxOCArMzc3NCwyMjEgQEAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKKyAgICAyNSwgMjUsIDAsIDI1LCAyNSwgMCwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCAwLCAwLCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAKLSAgICAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgNTUsIDAsIDAsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCAKLSAgICA1NSwgMCwgNTUsIDAsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDAsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIAorICAgIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI3LCAyNywgMjcsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCAKKyAgICA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgCisgICAgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIDQ5MiwgNDkyLCA0OTIsIAorICAgIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCAKKyAgICA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgCisgICAgNDkzLCA0OTMsIDQ5MywgNDkzLCA0OTMsIDQ5MywgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDAsIDAsIDAsIDAsIDAsIAorICAgIDcsIDgsIDksIDEwLCAxMSwgMTIsIDEzLCAxNCwgMTUsIDE2LCAwLCAwLCAwLCAwLCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKKyAgICAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCAKKyAgICA1NSwgMCwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgMCwgNTUsIDAsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMCwgMCwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgCisgICAgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAwLCA1NSwgMCwgMCwgNTUsIDAsIDU1LCAwLCA1NSwgMCwgNTUsIDAsIDU1LCAwLCAKKyAgICA1NSwgNTUsIDAsIDU1LCAwLCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgNTUsIDU1LCAKICAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAKLSAgICAwLCA1NSwgNTUsIDU1LCAwLCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMzQ1LCAzNDUsIDI2LCAyMiwgMjMsIDM0NiwgMzQ3LCAzNDgsIDM0OSwgMzUwLCAzNTEsIDI3LCAyNywgMCwgMCwgMCwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMzU1LCAzNTUsIDI2LCAyMiwgMjMsIDM1NiwgMzU3LCAzNTgsIDM1OSwgMzYwLCAKKyAgICAzNjEsIDI3LCAyNywgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDUsIDUsIDUsIDUsIDUsIDUsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIAorICAgIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA1LCA1LCAwLCAwLCAwLCAwLCA0OTQsIDQ5NCwgNDk0LCAKKyAgICA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgCisgICAgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNDk0LCA0OTQsIDQ5NCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDUsIDUsIDUsIDUsIDUsIDUsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCAKLSAgICA0ODIsIDQ4MiwgNDgyLCA1LCA1LCAwLCAwLCAwLCAwLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgCi0gICAgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNDgyLCA0ODIsIAotICAgIDQ4MiwgNDgyLCA0ODIsIDQ4MiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNiwgNiwgNiwgNiwgNiwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCiAgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCiAgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgCi0gICAgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgCisgICAgNSwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgNSwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNSwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgMzg0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzg0LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKKyAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM4NCwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzODQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCisgICAgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1LCA1LCA1LCA1LCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCA1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgMzc0LCA1NSwgCiAgICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCAzNzQsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMzc0LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgMzc0LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDM3NCwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCAKLSAgICA1NSwgMCwgMCwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIAotICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAorICAgIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAogICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIAotICAgIDAsIDAsIDAsIDAsIDAsIDAsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgCi0gICAgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDU1LCA1NSwgNTUsIDAsIDAsIDAsIAorICAgIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDAsIDIxLCAwLCAwLCAwLCAwLCAKICAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAKLSAgICAyMSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCi0gICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIAorICAgIDAsIDAsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCiAgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgCi0gICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDIxLCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCisgICAgMjEsIDIxLCAyMSwgMjEsIDIxLCAyMSwgMjEsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCkBAIC0zOTI0LDEzICs0MDAxLDEzIEBACiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCiAgICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgCi0gICAgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAwLCAwLCAKLSAgICAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAxLCAKKyAgICAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMjUsIDI1LCAyNSwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgCisgICAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCiAgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgCi0gICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCisgICAgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMSwgMCwgMCwgCiB9OwogCiAvKiBSZXR1cm5zIHRoZSBudW1lcmljIHZhbHVlIGFzIGRvdWJsZSBmb3IgVW5pY29kZSBjaGFyYWN0ZXJzCkBAIC0zOTk2LDExICs0MDczLDEzIEBACiAgICAgY2FzZSAweDExMTM2OgogICAgIGNhc2UgMHgxMTFEMDoKICAgICBjYXNlIDB4MTEyRjA6CisgICAgY2FzZSAweDExNDUwOgogICAgIGNhc2UgMHgxMTREMDoKICAgICBjYXNlIDB4MTE2NTA6CiAgICAgY2FzZSAweDExNkMwOgogICAgIGNhc2UgMHgxMTczMDoKICAgICBjYXNlIDB4MTE4RTA6CisgICAgY2FzZSAweDExQzUwOgogICAgIGNhc2UgMHgxNkE2MDoKICAgICBjYXNlIDB4MTZCNTA6CiAgICAgY2FzZSAweDFEN0NFOgpAQCAtNDAwOCw2ICs0MDg3LDcgQEAKICAgICBjYXNlIDB4MUQ3RTI6CiAgICAgY2FzZSAweDFEN0VDOgogICAgIGNhc2UgMHgxRDdGNjoKKyAgICBjYXNlIDB4MUU5NTA6CiAgICAgY2FzZSAweDFGMTAwOgogICAgIGNhc2UgMHgxRjEwMToKICAgICBjYXNlIDB4MUYxMEI6CkBAIC00MTA4LDExICs0MTg4LDE0IEBACiAgICAgY2FzZSAweDExMUQxOgogICAgIGNhc2UgMHgxMTFFMToKICAgICBjYXNlIDB4MTEyRjE6CisgICAgY2FzZSAweDExNDUxOgogICAgIGNhc2UgMHgxMTREMToKICAgICBjYXNlIDB4MTE2NTE6CiAgICAgY2FzZSAweDExNkMxOgogICAgIGNhc2UgMHgxMTczMToKICAgICBjYXNlIDB4MTE4RTE6CisgICAgY2FzZSAweDExQzUxOgorICAgIGNhc2UgMHgxMUM1QToKICAgICBjYXNlIDB4MTI0MTU6CiAgICAgY2FzZSAweDEyNDFFOgogICAgIGNhc2UgMHgxMjQyQzoKQEAgLTQxMjgsMTcgKzQyMTEsMjIgQEAKICAgICBjYXNlIDB4MUQ3RUQ6CiAgICAgY2FzZSAweDFEN0Y3OgogICAgIGNhc2UgMHgxRThDNzoKKyAgICBjYXNlIDB4MUU5NTE6CiAgICAgY2FzZSAweDFGMTAyOgogICAgIGNhc2UgMHgyMDkyQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMDsKKyAgICBjYXNlIDB4MEQ1QzoKICAgICBjYXNlIDB4MjE1MjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMC4wOwogICAgIGNhc2UgMHgxMDlGNjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC8xMi4wOwogICAgIGNhc2UgMHgwOUY0OgogICAgIGNhc2UgMHgwQjc1OgorICAgIGNhc2UgMHgwRDc2OgogICAgIGNhc2UgMHhBODMzOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzE2LjA7CisgICAgY2FzZSAweDBENTg6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMTYwLjA7CiAgICAgY2FzZSAweDAwQkQ6CiAgICAgY2FzZSAweDBCNzM6CiAgICAgY2FzZSAweDBENzQ6CkBAIC00MTUyLDYgKzQyNDAsOCBAQAogICAgIGNhc2UgMHgxMEU3QjoKICAgICBjYXNlIDB4MTI0NjQ6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvMi4wOworICAgIGNhc2UgMHgwRDVCOgorICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzIwLjA7CiAgICAgY2FzZSAweDIxNTM6CiAgICAgY2FzZSAweDEwRTdEOgogICAgIGNhc2UgMHgxMjQ1QToKQEAgLTQxNzAsNiArNDI2MCw5IEBACiAgICAgY2FzZSAweDEyNDYyOgogICAgIGNhc2UgMHgxMjQ2MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC80LjA7CisgICAgY2FzZSAweDBENTk6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAxLjAvNDAuMDsKKyAgICBjYXNlIDB4MEQ1RToKICAgICBjYXNlIDB4MjE1NToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEuMC81LjA7CiAgICAgY2FzZSAweDIxNTk6CkBAIC00MTc5LDYgKzQyNzIsNyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMS4wLzcuMDsKICAgICBjYXNlIDB4MDlGNToKICAgICBjYXNlIDB4MEI3NjoKKyAgICBjYXNlIDB4MEQ3NzoKICAgICBjYXNlIDB4MjE1QjoKICAgICBjYXNlIDB4QTgzNDoKICAgICBjYXNlIDB4MTI0NUY6CkBAIC00MjM2LDYgKzQzMzAsNyBAQAogICAgIGNhc2UgMHgxMTFFQToKICAgICBjYXNlIDB4MTE3M0E6CiAgICAgY2FzZSAweDExOEVBOgorICAgIGNhc2UgMHgxMUM2MzoKICAgICBjYXNlIDB4MTZCNUI6CiAgICAgY2FzZSAweDFEMzY5OgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMTAuMDsKQEAgLTQyNjksNiArNDM2NCw3IEBACiAgICAgY2FzZSAweDEwRTcyOgogICAgIGNhc2UgMHgxMTA2NDoKICAgICBjYXNlIDB4MTExRjM6CisgICAgY2FzZSAweDExQzZDOgogICAgIGNhc2UgMHgxNkI1QzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDEwMC4wOwogICAgIGNhc2UgMHgwQkYyOgpAQCAtNDQ3MCwxMSArNDU2NiwxNCBAQAogICAgIGNhc2UgMHgxMTFEMjoKICAgICBjYXNlIDB4MTExRTI6CiAgICAgY2FzZSAweDExMkYyOgorICAgIGNhc2UgMHgxMTQ1MjoKICAgICBjYXNlIDB4MTE0RDI6CiAgICAgY2FzZSAweDExNjUyOgogICAgIGNhc2UgMHgxMTZDMjoKICAgICBjYXNlIDB4MTE3MzI6CiAgICAgY2FzZSAweDExOEUyOgorICAgIGNhc2UgMHgxMUM1MjoKKyAgICBjYXNlIDB4MTFDNUI6CiAgICAgY2FzZSAweDEyNDAwOgogICAgIGNhc2UgMHgxMjQxNjoKICAgICBjYXNlIDB4MTI0MUY6CkBAIC00NDk0LDYgKzQ1OTMsNyBAQAogICAgIGNhc2UgMHgxRDdFRToKICAgICBjYXNlIDB4MUQ3Rjg6CiAgICAgY2FzZSAweDFFOEM4OgorICAgIGNhc2UgMHgxRTk1MjoKICAgICBjYXNlIDB4MUYxMDM6CiAgICAgY2FzZSAweDIyMzkwOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMi4wOwpAQCAtNDUzNyw2ICs0NjM3LDcgQEAKICAgICBjYXNlIDB4MTExRUI6CiAgICAgY2FzZSAweDExNzNCOgogICAgIGNhc2UgMHgxMThFQjoKKyAgICBjYXNlIDB4MTFDNjQ6CiAgICAgY2FzZSAweDFEMzZBOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMjAuMDsKICAgICBjYXNlIDB4MTAxMUE6CkBAIC00NjU3LDExICs0NzU4LDE0IEBACiAgICAgY2FzZSAweDExMUQzOgogICAgIGNhc2UgMHgxMTFFMzoKICAgICBjYXNlIDB4MTEyRjM6CisgICAgY2FzZSAweDExNDUzOgogICAgIGNhc2UgMHgxMTREMzoKICAgICBjYXNlIDB4MTE2NTM6CiAgICAgY2FzZSAweDExNkMzOgogICAgIGNhc2UgMHgxMTczMzoKICAgICBjYXNlIDB4MTE4RTM6CisgICAgY2FzZSAweDExQzUzOgorICAgIGNhc2UgMHgxMUM1QzoKICAgICBjYXNlIDB4MTI0MDE6CiAgICAgY2FzZSAweDEyNDA4OgogICAgIGNhc2UgMHgxMjQxNzoKQEAgLTQ2ODYsNiArNDc5MCw3IEBACiAgICAgY2FzZSAweDFEN0VGOgogICAgIGNhc2UgMHgxRDdGOToKICAgICBjYXNlIDB4MUU4Qzk6CisgICAgY2FzZSAweDFFOTUzOgogICAgIGNhc2UgMHgxRjEwNDoKICAgICBjYXNlIDB4MjBBRkQ6CiAgICAgY2FzZSAweDIwQjE5OgpAQCAtNDY5NiwxMCArNDgwMSwxMyBAQAogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzEyLjA7CiAgICAgY2FzZSAweDA5RjY6CiAgICAgY2FzZSAweDBCNzc6CisgICAgY2FzZSAweDBENzg6CiAgICAgY2FzZSAweEE4MzU6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMTYuMDsKICAgICBjYXNlIDB4MEYyQjoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC8yLjA7CisgICAgY2FzZSAweDBENUQ6CisgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvMjAuMDsKICAgICBjYXNlIDB4MDBCRToKICAgICBjYXNlIDB4MDlGODoKICAgICBjYXNlIDB4MEI3NDoKQEAgLTQ3MTEsNiArNDgxOSw4IEBACiAgICAgICAgIHJldHVybiAoZG91YmxlKSAzLjAvNS4wOwogICAgIGNhc2UgMHgyMTVDOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgMy4wLzguMDsKKyAgICBjYXNlIDB4MEQ1QToKKyAgICAgICAgcmV0dXJuIChkb3VibGUpIDMuMC84MC4wOwogICAgIGNhc2UgMHgxMzc0OgogICAgIGNhc2UgMHgzMDNBOgogICAgIGNhc2UgMHgzMjRBOgpAQCAtNDcyNCw2ICs0ODM0LDcgQEAKICAgICBjYXNlIDB4MTEwNUQ6CiAgICAgY2FzZSAweDExMUVDOgogICAgIGNhc2UgMHgxMThFQzoKKyAgICBjYXNlIDB4MTFDNjU6CiAgICAgY2FzZSAweDFEMzZCOgogICAgIGNhc2UgMHgyMDk4MzoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDMwLjA7CkBAIC00ODM2LDExICs0OTQ3LDE0IEBACiAgICAgY2FzZSAweDExMUQ0OgogICAgIGNhc2UgMHgxMTFFNDoKICAgICBjYXNlIDB4MTEyRjQ6CisgICAgY2FzZSAweDExNDU0OgogICAgIGNhc2UgMHgxMTRENDoKICAgICBjYXNlIDB4MTE2NTQ6CiAgICAgY2FzZSAweDExNkM0OgogICAgIGNhc2UgMHgxMTczNDoKICAgICBjYXNlIDB4MTE4RTQ6CisgICAgY2FzZSAweDExQzU0OgorICAgIGNhc2UgMHgxMUM1RDoKICAgICBjYXNlIDB4MTI0MDI6CiAgICAgY2FzZSAweDEyNDA5OgogICAgIGNhc2UgMHgxMjQwRjoKQEAgLTQ4NjYsNiArNDk4MCw3IEBACiAgICAgY2FzZSAweDFEN0YwOgogICAgIGNhc2UgMHgxRDdGQToKICAgICBjYXNlIDB4MUU4Q0E6CisgICAgY2FzZSAweDFFOTU0OgogICAgIGNhc2UgMHgxRjEwNToKICAgICBjYXNlIDB4MjAwNjQ6CiAgICAgY2FzZSAweDIwMEUyOgpAQCAtNDg4Niw2ICs1MDAxLDcgQEAKICAgICBjYXNlIDB4MTEwNUU6CiAgICAgY2FzZSAweDExMUVEOgogICAgIGNhc2UgMHgxMThFRDoKKyAgICBjYXNlIDB4MTFDNjY6CiAgICAgY2FzZSAweDEyNDY3OgogICAgIGNhc2UgMHgxRDM2QzoKICAgICBjYXNlIDB4MjA5OEM6CkBAIC01MDA1LDExICs1MTIxLDE0IEBACiAgICAgY2FzZSAweDExMUQ1OgogICAgIGNhc2UgMHgxMTFFNToKICAgICBjYXNlIDB4MTEyRjU6CisgICAgY2FzZSAweDExNDU1OgogICAgIGNhc2UgMHgxMTRENToKICAgICBjYXNlIDB4MTE2NTU6CiAgICAgY2FzZSAweDExNkM1OgogICAgIGNhc2UgMHgxMTczNToKICAgICBjYXNlIDB4MTE4RTU6CisgICAgY2FzZSAweDExQzU1OgorICAgIGNhc2UgMHgxMUM1RToKICAgICBjYXNlIDB4MTI0MDM6CiAgICAgY2FzZSAweDEyNDBBOgogICAgIGNhc2UgMHgxMjQxMDoKQEAgLTUwMzEsNiArNTE1MCw3IEBACiAgICAgY2FzZSAweDFEN0YxOgogICAgIGNhc2UgMHgxRDdGQjoKICAgICBjYXNlIDB4MUU4Q0I6CisgICAgY2FzZSAweDFFOTU1OgogICAgIGNhc2UgMHgxRjEwNjoKICAgICBjYXNlIDB4MjAxMjE6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA1LjA7CkBAIC01MDY3LDYgKzUxODcsNyBAQAogICAgIGNhc2UgMHgxMTA1RjoKICAgICBjYXNlIDB4MTExRUU6CiAgICAgY2FzZSAweDExOEVFOgorICAgIGNhc2UgMHgxMUM2NzoKICAgICBjYXNlIDB4MTI0Njg6CiAgICAgY2FzZSAweDFEMzZEOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNTAuMDsKQEAgLTUxNzIsMTEgKzUyOTMsMTQgQEAKICAgICBjYXNlIDB4MTExRDY6CiAgICAgY2FzZSAweDExMUU2OgogICAgIGNhc2UgMHgxMTJGNjoKKyAgICBjYXNlIDB4MTE0NTY6CiAgICAgY2FzZSAweDExNEQ2OgogICAgIGNhc2UgMHgxMTY1NjoKICAgICBjYXNlIDB4MTE2QzY6CiAgICAgY2FzZSAweDExNzM2OgogICAgIGNhc2UgMHgxMThFNjoKKyAgICBjYXNlIDB4MTFDNTY6CisgICAgY2FzZSAweDExQzVGOgogICAgIGNhc2UgMHgxMjQwNDoKICAgICBjYXNlIDB4MTI0MEI6CiAgICAgY2FzZSAweDEyNDExOgpAQCAtNTE5NCw2ICs1MzE4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjI6CiAgICAgY2FzZSAweDFEN0ZDOgogICAgIGNhc2UgMHgxRThDQzoKKyAgICBjYXNlIDB4MUU5NTY6CiAgICAgY2FzZSAweDFGMTA3OgogICAgIGNhc2UgMHgyMEFFQToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYuMDsKQEAgLTUyMDgsNiArNTMzMyw3IEBACiAgICAgY2FzZSAweDExMDYwOgogICAgIGNhc2UgMHgxMTFFRjoKICAgICBjYXNlIDB4MTE4RUY6CisgICAgY2FzZSAweDExQzY4OgogICAgIGNhc2UgMHgxRDM2RToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDYwLjA7CiAgICAgY2FzZSAweDEwMTFFOgpAQCAtNTI5MywxMSArNTQxOSwxNCBAQAogICAgIGNhc2UgMHgxMTFENzoKICAgICBjYXNlIDB4MTExRTc6CiAgICAgY2FzZSAweDExMkY3OgorICAgIGNhc2UgMHgxMTQ1NzoKICAgICBjYXNlIDB4MTE0RDc6CiAgICAgY2FzZSAweDExNjU3OgogICAgIGNhc2UgMHgxMTZDNzoKICAgICBjYXNlIDB4MTE3Mzc6CiAgICAgY2FzZSAweDExOEU3OgorICAgIGNhc2UgMHgxMUM1NzoKKyAgICBjYXNlIDB4MTFDNjA6CiAgICAgY2FzZSAweDEyNDA1OgogICAgIGNhc2UgMHgxMjQwQzoKICAgICBjYXNlIDB4MTI0MTI6CkBAIC01MzE2LDYgKzU0NDUsNyBAQAogICAgIGNhc2UgMHgxRDdGMzoKICAgICBjYXNlIDB4MUQ3RkQ6CiAgICAgY2FzZSAweDFFOENEOgorICAgIGNhc2UgMHgxRTk1NzoKICAgICBjYXNlIDB4MUYxMDg6CiAgICAgY2FzZSAweDIwMDAxOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNy4wOwpAQCAtNTMzNCw2ICs1NDY0LDcgQEAKICAgICBjYXNlIDB4MTEwNjE6CiAgICAgY2FzZSAweDExMUYwOgogICAgIGNhc2UgMHgxMThGMDoKKyAgICBjYXNlIDB4MTFDNjk6CiAgICAgY2FzZSAweDFEMzZGOgogICAgICAgICByZXR1cm4gKGRvdWJsZSkgNzAuMDsKICAgICBjYXNlIDB4MTAxMUY6CkBAIC01NDE3LDExICs1NTQ4LDE0IEBACiAgICAgY2FzZSAweDExMUQ4OgogICAgIGNhc2UgMHgxMTFFODoKICAgICBjYXNlIDB4MTEyRjg6CisgICAgY2FzZSAweDExNDU4OgogICAgIGNhc2UgMHgxMTREODoKICAgICBjYXNlIDB4MTE2NTg6CiAgICAgY2FzZSAweDExNkM4OgogICAgIGNhc2UgMHgxMTczODoKICAgICBjYXNlIDB4MTE4RTg6CisgICAgY2FzZSAweDExQzU4OgorICAgIGNhc2UgMHgxMUM2MToKICAgICBjYXNlIDB4MTI0MDY6CiAgICAgY2FzZSAweDEyNDBEOgogICAgIGNhc2UgMHgxMjQxMzoKQEAgLTU0MzksNiArNTU3Myw3IEBACiAgICAgY2FzZSAweDFEN0Y0OgogICAgIGNhc2UgMHgxRDdGRToKICAgICBjYXNlIDB4MUU4Q0U6CisgICAgY2FzZSAweDFFOTU4OgogICAgIGNhc2UgMHgxRjEwOToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDguMDsKICAgICBjYXNlIDB4MTA5RkQ6CkBAIC01NDUxLDYgKzU1ODYsNyBAQAogICAgIGNhc2UgMHgxMTA2MjoKICAgICBjYXNlIDB4MTExRjE6CiAgICAgY2FzZSAweDExOEYxOgorICAgIGNhc2UgMHgxMUM2QToKICAgICBjYXNlIDB4MUQzNzA6CiAgICAgICAgIHJldHVybiAoZG91YmxlKSA4MC4wOwogICAgIGNhc2UgMHgxMDEyMDoKQEAgLTU1MzUsMTEgKzU2NzEsMTQgQEAKICAgICBjYXNlIDB4MTExRDk6CiAgICAgY2FzZSAweDExMUU5OgogICAgIGNhc2UgMHgxMTJGOToKKyAgICBjYXNlIDB4MTE0NTk6CiAgICAgY2FzZSAweDExNEQ5OgogICAgIGNhc2UgMHgxMTY1OToKICAgICBjYXNlIDB4MTE2Qzk6CiAgICAgY2FzZSAweDExNzM5OgogICAgIGNhc2UgMHgxMThFOToKKyAgICBjYXNlIDB4MTFDNTk6CisgICAgY2FzZSAweDExQzYyOgogICAgIGNhc2UgMHgxMjQwNzoKICAgICBjYXNlIDB4MTI0MEU6CiAgICAgY2FzZSAweDEyNDE0OgpAQCAtNTU1OSw2ICs1Njk4LDcgQEAKICAgICBjYXNlIDB4MUQ3RjU6CiAgICAgY2FzZSAweDFEN0ZGOgogICAgIGNhc2UgMHgxRThDRjoKKyAgICBjYXNlIDB4MUU5NTk6CiAgICAgY2FzZSAweDFGMTBBOgogICAgIGNhc2UgMHgyRjg5MDoKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkuMDsKQEAgLTU1NzQsNiArNTcxNCw3IEBACiAgICAgY2FzZSAweDExMDYzOgogICAgIGNhc2UgMHgxMTFGMjoKICAgICBjYXNlIDB4MTE4RjI6CisgICAgY2FzZSAweDExQzZCOgogICAgIGNhc2UgMHgxRDM3MToKICAgICAgICAgcmV0dXJuIChkb3VibGUpIDkwLjA7CiAgICAgY2FzZSAweDEwMTIxOgpkaWZmIC0tZ2l0IGEvT2JqZWN0cy93ZWFrcmVmb2JqZWN0LmMgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwppbmRleCA3ZTZmMzY0Li5hYjZiMjM1IDEwMDY0NAotLS0gYS9PYmplY3RzL3dlYWtyZWZvYmplY3QuYworKysgYi9PYmplY3RzL3dlYWtyZWZvYmplY3QuYwpAQCAtMjY1LDcgKzI2NSw3IEBACiB9CiAKIHN0YXRpYyBpbnQKLXBhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKK3BhcnNlX3dlYWtyZWZfaW5pdF9hcmdzKGNvbnN0IGNoYXIgKmZ1bmNuYW1lLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncywKICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICoqb2JwLCBQeU9iamVjdCAqKmNhbGxiYWNrcCkKIHsKICAgICByZXR1cm4gUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgZnVuY25hbWUsIDEsIDIsIG9icCwgY2FsbGJhY2twKTsKQEAgLTQ1Myw3ICs0NTMsNyBAQAogICAgIG1ldGhvZChQeU9iamVjdCAqcHJveHkpIHsgXAogICAgICAgICAgICAgX1B5X0lERU5USUZJRVIoc3BlY2lhbCk7IFwKICAgICAgICAgICAgIFVOV1JBUChwcm94eSk7IFwKLSAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCAiIik7IFwKKyAgICAgICAgICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChwcm94eSwgJlB5SWRfIyNzcGVjaWFsLCBOVUxMKTsgXAogICAgICAgICB9CiAKIApkaWZmIC0tZ2l0IGEvUEMvX21zaS5jIGIvUEMvX21zaS5jCmluZGV4IDllN2UzNmQuLjc4OWIwNGYgMTAwNjQ0Ci0tLSBhL1BDL19tc2kuYworKysgYi9QQy9fbXNpLmMKQEAgLTEwNDYsMTIgKzEwNDYsMTIgQEAKICAgICBpZiAobSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fQ1JFQVRFRElSRUNUIiwgKGludClNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChpbnQpTVNJREJPUEVOX0NSRUFURSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9ESVJFQ1QiLCAoaW50KU1TSURCT1BFTl9ESVJFQ1QpOwotICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fUkVBRE9OTFkiLCAoaW50KU1TSURCT1BFTl9SRUFET05MWSk7Ci0gICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChpbnQpTVNJREJPUEVOX1RSQU5TQUNUKTsKLSAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX1BBVENIRklMRSIsIChpbnQpTVNJREJPUEVOX1BBVENIRklMRSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9DUkVBVEVESVJFQ1QiLCAobG9uZylNU0lEQk9QRU5fQ1JFQVRFRElSRUNUKTsKKyAgICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudChtLCAiTVNJREJPUEVOX0NSRUFURSIsIChsb25nKU1TSURCT1BFTl9DUkVBVEUpOworICAgIFB5TW9kdWxlX0FkZEludENvbnN0YW50KG0sICJNU0lEQk9QRU5fRElSRUNUIiwgKGxvbmcpTVNJREJPUEVOX0RJUkVDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9SRUFET05MWSIsIChsb25nKU1TSURCT1BFTl9SRUFET05MWSk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9UUkFOU0FDVCIsIChsb25nKU1TSURCT1BFTl9UUkFOU0FDVCk7CisgICAgUHlNb2R1bGVfQWRkSW50Q29uc3RhbnQobSwgIk1TSURCT1BFTl9QQVRDSEZJTEUiLCAobG9uZylNU0lEQk9QRU5fUEFUQ0hGSUxFKTsKIAogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fTkFNRVMpOwogICAgIFB5TW9kdWxlX0FkZEludE1hY3JvKG0sIE1TSUNPTElORk9fVFlQRVMpOwpkaWZmIC0tZ2l0IGEvUEMvX3Rlc3Rjb25zb2xlLmMgYi9QQy9fdGVzdGNvbnNvbGUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzkzNjc5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvX3Rlc3Rjb25zb2xlLmMKQEAgLTAsMCArMSwxMzEgQEAKKworLyogVGVzdGluZyBtb2R1bGUgZm9yIG11bHRpLXBoYXNlIGluaXRpYWxpemF0aW9uIG9mIGV4dGVuc2lvbiBtb2R1bGVzIChQRVAgNDg5KQorICovCisKKyNpbmNsdWRlICJQeXRob24uaCIKKworI2lmZGVmIE1TX1dJTkRPV1MKKworI2luY2x1ZGUgIi4uXG1vZHVsZXNcX2lvXF9pb21vZHVsZS5oIgorCisjZGVmaW5lIFdJTjMyX0xFQU5fQU5EX01FQU4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZmNudGwuaD4KKworIC8qIFRoZSBmdWxsIGRlZmluaXRpb24gaXMgaW4gaW9tb2R1bGUuIFdlIHJlcHJvZHVjZQorIGVub3VnaCBoZXJlIHRvIGdldCB0aGUgaGFuZGxlLCB3aGljaCBpcyBhbGwgd2Ugd2FudC4gKi8KK3R5cGVkZWYgc3RydWN0IHsKKyAgICBQeU9iamVjdF9IRUFECisgICAgSEFORExFIGhhbmRsZTsKK30gd2luY29uc29sZWlvOworCisKK3N0YXRpYyBpbnQgZXhlY2Z1bmMoUHlPYmplY3QgKm0pCit7CisgICAgcmV0dXJuIDA7Cit9CisKK1B5TW9kdWxlRGVmX1Nsb3QgdGVzdGNvbnNvbGVfc2xvdHNbXSA9IHsKKyAgICB7UHlfbW9kX2V4ZWMsIGV4ZWNmdW5jfSwKKyAgICB7MCwgTlVMTH0sCit9OworCisvKltjbGluaWMgaW5wdXRdCittb2R1bGUgX3Rlc3Rjb25zb2xlCisKK190ZXN0Y29uc29sZS53cml0ZV9pbnB1dAorICAgIGZpbGU6IG9iamVjdAorICAgIHM6IFB5Qnl0ZXNPYmplY3QKKworV3JpdGVzIFVURi0xNi1MRSBlbmNvZGVkIGJ5dGVzIHRvIHRoZSBjb25zb2xlIGFzIGlmIHR5cGVkIGJ5IGEgdXNlci4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlCeXRlc09iamVjdCAqcykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD00OGY5NTYzZGIzNGFlZGIzIGlucHV0PTRjNzc0ZjJkMDU3NzBiYzZdKi8KK3sKKyAgICBJTlBVVF9SRUNPUkQgKnJlYyA9IE5VTEw7CisgICAgCisgICAgaWYgKCFQeVdpbmRvd3NDb25zb2xlSU9fQ2hlY2soZmlsZSkpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIHJhdyBjb25zb2xlIG9iamVjdCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBjb25zdCB3Y2hhcl90ICpwID0gKGNvbnN0IHdjaGFyX3QgKilQeUJ5dGVzX0FTX1NUUklORyhzKTsKKyAgICBEV09SRCBzaXplID0gKERXT1JEKVB5Qnl0ZXNfR0VUX1NJWkUocykgLyBzaXplb2Yod2NoYXJfdCk7CisKKyAgICByZWMgPSAoSU5QVVRfUkVDT1JEKilQeU1lbV9NYWxsb2Moc2l6ZW9mKElOUFVUX1JFQ09SRCkgKiBzaXplKTsKKyAgICBpZiAoIXJlYykKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICBtZW1zZXQocmVjLCAwLCBzaXplb2YoSU5QVVRfUkVDT1JEKSAqIHNpemUpOworICAgIAorICAgIElOUFVUX1JFQ09SRCAqcHJlYyA9IHJlYzsKKyAgICBmb3IgKERXT1JEIGkgPSAwOyBpIDwgc2l6ZTsgKytpLCArK3AsICsrcHJlYykgeworICAgICAgICBwcmVjLT5FdmVudFR5cGUgPSBLRVlfRVZFTlQ7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LmJLZXlEb3duID0gVFJVRTsKKyAgICAgICAgcHJlYy0+RXZlbnQuS2V5RXZlbnQud1JlcGVhdENvdW50ID0gMTA7CisgICAgICAgIHByZWMtPkV2ZW50LktleUV2ZW50LnVDaGFyLlVuaWNvZGVDaGFyID0gKnA7CisgICAgfQorCisgICAgSEFORExFIGhJbnB1dCA9ICgod2luY29uc29sZWlvKilmaWxlKS0+aGFuZGxlOworICAgIERXT1JEIHRvdGFsID0gMDsKKyAgICB3aGlsZSAodG90YWwgPCBzaXplKSB7CisgICAgICAgIERXT1JEIHdyb3RlOworICAgICAgICBpZiAoIVdyaXRlQ29uc29sZUlucHV0VyhoSW5wdXQsICZyZWNbdG90YWxdLCAoc2l6ZSAtIHRvdGFsKSwgJndyb3RlKSkgeworICAgICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHRvdGFsICs9IHdyb3RlOworICAgIH0KKworICAgIFB5TWVtX0ZyZWUoKHZvaWQqKXJlYyk7CisgICAgCisgICAgUHlfUkVUVVJOX05PTkU7CitlcnJvcjoKKyAgICBpZiAocmVjKQorICAgICAgICBQeU1lbV9GcmVlKCh2b2lkKilyZWMpOworICAgIHJldHVybiBOVUxMOworfQorCisvKltjbGluaWMgaW5wdXRdCitfdGVzdGNvbnNvbGUucmVhZF9vdXRwdXQKKyAgICBmaWxlOiBvYmplY3QKKworUmVhZHMgYSBzdHIgZnJvbSB0aGUgY29uc29sZSBhcyB3cml0dGVuIHRvIHN0ZG91dC4KK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKQorLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTg3NjMxMGQ4MWE3M2U2ZDIgaW5wdXQ9YjM1MjFmNjRiMWI1NThlM10qLworeworICAgIFB5X1JFVFVSTl9OT05FOworfQorCisjaW5jbHVkZSAiY2xpbmljXF90ZXN0Y29uc29sZS5jLmgiCisKK1B5TWV0aG9kRGVmIHRlc3Rjb25zb2xlX21ldGhvZHNbXSA9IHsKKyAgICBfVEVTVENPTlNPTEVfV1JJVEVfSU5QVVRfTUVUSE9EREVGCisgICAgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgIHtOVUxMLCBOVUxMfQorfTsKKworc3RhdGljIFB5TW9kdWxlRGVmIHRlc3Rjb25zb2xlX2RlZiA9IHsKKyAgICBQeU1vZHVsZURlZl9IRUFEX0lOSVQsICAgICAgICAgICAgICAgICAgICAgIC8qIG1fYmFzZSAqLworICAgICJfdGVzdGNvbnNvbGUiLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9uYW1lICovCisgICAgUHlEb2NfU1RSKCJUZXN0IG1vZHVsZSBmb3IgdGhlIFdpbmRvd3MgY29uc29sZSIpLCAvKiBtX2RvYyAqLworICAgIDAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogbV9zaXplICovCisgICAgdGVzdGNvbnNvbGVfbWV0aG9kcywgICAgICAgICAgICAgICAgICAgICAgICAvKiBtX21ldGhvZHMgKi8KKyAgICB0ZXN0Y29uc29sZV9zbG90cywgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fc2xvdHMgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fdHJhdmVyc2UgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fY2xlYXIgKi8KKyAgICBOVUxMLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG1fZnJlZSAqLworfTsKKworUHlNT0RJTklUX0ZVTkMKK1B5SW5pdF9fdGVzdGNvbnNvbGUoUHlPYmplY3QgKnNwZWMpCit7CisgICAgcmV0dXJuIFB5TW9kdWxlRGVmX0luaXQoJnRlc3Rjb25zb2xlX2RlZik7Cit9CisKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCmRpZmYgLS1naXQgYS9QQy9iZGlzdF93aW5pbnN0L2luc3RhbGwuYyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCmluZGV4IDYwYmVlMzAuLmZkOTc3ZjUgMTAwNjQ0Ci0tLSBhL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCisrKyBiL1BDL2JkaXN0X3dpbmluc3QvaW5zdGFsbC5jCkBAIC03MTgsNyArNzE4LDcgQEAKICAqIDEgaWYgdGhlIFB5dGhvbi1kbGwgZG9lcyBub3QgZXhwb3J0IHRoZSBmdW5jdGlvbnMgd2UgbmVlZAogICogMiBpZiBubyBpbnN0YWxsLXNjcmlwdCBpcyBzcGVjaWZpZWQgaW4gcGF0aG5hbWUKICAqIDMgaWYgdGhlIGluc3RhbGwtc2NyaXB0IGZpbGUgY291bGQgbm90IGJlIG9wZW5lZAotICogdGhlIHJldHVybiB2YWx1ZSBvZiBQeVJ1bl9TaW1wbGVTdHJpbmcoKSBvdGhlcndpc2UsCisgKiB0aGUgcmV0dXJuIHZhbHVlIG9mIFB5UnVuX1NpbXBsZVN0cmluZygpIG9yIFB5X0ZpbmFsaXplRXgoKSBvdGhlcndpc2UsCiAgKiB3aGljaCBpcyAwIGlmIGV2ZXJ5dGhpbmcgaXMgb2ssIC0xIGlmIGFuIGV4Y2VwdGlvbiBoYWQgb2NjdXJyZWQKICAqIGluIHRoZSBpbnN0YWxsLXNjcmlwdC4KICAqLwpAQCAtNzMxLDcgKzczMSw3IEBACiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfSW5pdGlhbGl6ZSwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5U3lzX1NldEFyZ3YsIChpbnQsIHdjaGFyX3QgKiopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5UnVuX1NpbXBsZVN0cmluZywgKGNoYXIgKikpOwotICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0ZpbmFsaXplLCAodm9pZCkpOworICAgIERFQ0xQUk9DKGhQeXRob24sIGludCwgUHlfRmluYWxpemVFeCwgKHZvaWQpKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeV9CdWlsZFZhbHVlLCAoY2hhciAqLCAuLi4pKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCBQeU9iamVjdCAqLCBQeUNGdW5jdGlvbl9OZXcsCiAgICAgICAgICAgICAgKFB5TWV0aG9kRGVmICosIFB5T2JqZWN0ICopKTsKQEAgLTczOSw3ICs3MzksNyBAQAogICAgIERFQ0xQUk9DKGhQeXRob24sIFB5T2JqZWN0ICosIFB5RXJyX0Zvcm1hdCwgKFB5T2JqZWN0ICosIGNoYXIgKikpOwogCiAgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeVN5c19TZXRBcmd2Ci0gICAgICAgIHx8ICFQeVJ1bl9TaW1wbGVTdHJpbmcgfHwgIVB5X0ZpbmFsaXplKQorICAgICAgICB8fCAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeV9GaW5hbGl6ZUV4KQogICAgICAgICByZXR1cm4gMTsKIAogICAgIGlmICghUHlfQnVpbGRWYWx1ZSB8fCAhUHlBcmdfUGFyc2VUdXBsZSB8fCAhUHlFcnJfRm9ybWF0KQpAQCAtNzg2LDcgKzc4Niw5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9Ci0gICAgUHlfRmluYWxpemUoKTsKKyAgICBpZiAoUHlfRmluYWxpemVFeCgpIDwgMCkgeworICAgICAgICByZXN1bHQgPSAtMTsKKyAgICB9CiAKICAgICBjbG9zZShmaCk7CiAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTg0OCwxMSArODUwLDExIEBACiAgICAgaW50IHJjOwogICAgIERFQ0xQUk9DKGhQeXRob24sIHZvaWQsIFB5X0luaXRpYWxpemUsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgdm9pZCwgUHlfU2V0UHJvZ3JhbU5hbWUsICh3Y2hhcl90ICopKTsKLSAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeV9GaW5hbGl6ZSwgKHZvaWQpKTsKKyAgICBERUNMUFJPQyhoUHl0aG9uLCBpbnQsIFB5X0ZpbmFsaXplRXgsICh2b2lkKSk7CiAgICAgREVDTFBST0MoaFB5dGhvbiwgaW50LCBQeVJ1bl9TaW1wbGVTdHJpbmcsIChjaGFyICopKTsKICAgICBERUNMUFJPQyhoUHl0aG9uLCB2b2lkLCBQeUVycl9QcmludCwgKHZvaWQpKTsKIAotICAgIGlmICghUHlfSW5pdGlhbGl6ZSB8fCAhUHlfU2V0UHJvZ3JhbU5hbWUgfHwgIVB5X0ZpbmFsaXplIHx8CisgICAgaWYgKCFQeV9Jbml0aWFsaXplIHx8ICFQeV9TZXRQcm9ncmFtTmFtZSB8fCAhUHlfRmluYWxpemVFeCB8fAogICAgICAgICAhUHlSdW5fU2ltcGxlU3RyaW5nIHx8ICFQeUVycl9QcmludCkKICAgICAgICAgcmV0dXJuIC0xOwogCkBAIC04NjIsNyArODY0LDkgQEAKICAgICByYyA9IFB5UnVuX1NpbXBsZVN0cmluZyhzY3JpcHQpOwogICAgIGlmIChyYykKICAgICAgICAgUHlFcnJfUHJpbnQoKTsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHJjID0gLTE7CisgICAgfQogICAgIHJldHVybiByYzsKIH0KIApkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmggYi9QQy9jbGluaWMvX3Rlc3Rjb25zb2xlLmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mzg2MGNmCi0tLSAvZGV2L251bGwKKysrIGIvUEMvY2xpbmljL190ZXN0Y29uc29sZS5jLmgKQEAgLTAsMCArMSw4MiBAQAorLypbY2xpbmljIGlucHV0XQorcHJlc2VydmUKK1tjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KKworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKworUHlEb2NfU1RSVkFSKF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX18sCisid3JpdGVfaW5wdXQoJG1vZHVsZSwgLywgZmlsZSwgcylcbiIKKyItLVxuIgorIlxuIgorIldyaXRlcyBVVEYtMTYtTEUgZW5jb2RlZCBieXRlcyB0byB0aGUgY29uc29sZSBhcyBpZiB0eXBlZCBieSBhIHVzZXIuIik7CisKKyNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRiAgICBcCisgICAgeyJ3cml0ZV9pbnB1dCIsIChQeUNGdW5jdGlvbilfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXQsIE1FVEhfRkFTVENBTEwsIF90ZXN0Y29uc29sZV93cml0ZV9pbnB1dF9fZG9jX199LAorCitzdGF0aWMgUHlPYmplY3QgKgorX3Rlc3Rjb25zb2xlX3dyaXRlX2lucHV0X2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzT2JqZWN0ICpzKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV93cml0ZV9pbnB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCAicyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9TOndyaXRlX2lucHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKyAgICBQeUJ5dGVzT2JqZWN0ICpzOworCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICZmaWxlLCAmcykpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfd3JpdGVfaW5wdXRfaW1wbChtb2R1bGUsIGZpbGUsIHMpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisKK1B5RG9jX1NUUlZBUihfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19fLAorInJlYWRfb3V0cHV0KCRtb2R1bGUsIC8sIGZpbGUpXG4iCisiLS1cbiIKKyJcbiIKKyJSZWFkcyBhIHN0ciBmcm9tIHRoZSBjb25zb2xlIGFzIHdyaXR0ZW4gdG8gc3Rkb3V0LiIpOworCisjZGVmaW5lIF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYgICAgXAorICAgIHsicmVhZF9vdXRwdXQiLCAoUHlDRnVuY3Rpb24pX3Rlc3Rjb25zb2xlX3JlYWRfb3V0cHV0LCBNRVRIX0ZBU1RDQUxMLCBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfX2RvY19ffSwKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpmaWxlKTsKKworc3RhdGljIFB5T2JqZWN0ICoKK190ZXN0Y29uc29sZV9yZWFkX291dHB1dChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZpbGUiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPOnJlYWRfb3V0cHV0IiwgX2tleXdvcmRzLCAwfTsKKyAgICBQeU9iamVjdCAqZmlsZTsKKworICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmZmlsZSkpIHsKKyAgICAgICAgZ290byBleGl0OworICAgIH0KKyAgICByZXR1cm5fdmFsdWUgPSBfdGVzdGNvbnNvbGVfcmVhZF9vdXRwdXRfaW1wbChtb2R1bGUsIGZpbGUpOworCitleGl0OgorICAgIHJldHVybiByZXR1cm5fdmFsdWU7Cit9CisKKyNlbmRpZiAvKiBkZWZpbmVkKE1TX1dJTkRPV1MpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1dSSVRFX0lOUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9XUklURV9JTlBVVF9NRVRIT0RERUYpICovCisKKyNpZm5kZWYgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorICAgICNkZWZpbmUgX1RFU1RDT05TT0xFX1JFQURfT1VUUFVUX01FVEhPRERFRgorI2VuZGlmIC8qICFkZWZpbmVkKF9URVNUQ09OU09MRV9SRUFEX09VVFBVVF9NRVRIT0RERUYpICovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9M2E4ZGMwYzQyMTgwN2M0MSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvbXN2Y3J0bW9kdWxlLmMuaCBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCmluZGV4IGU3YTcyYzQuLjY5MzVjYWQgMTAwNjQ0Ci0tLSBhL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCisrKyBiL1BDL2NsaW5pYy9tc3ZjcnRtb2R1bGUuYy5oCkBAIC01MSw4ICs1MSw5IEBACiAgICAgbG9uZyBuYnl0ZXM7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgImlpbDpsb2NraW5nIiwKLSAgICAgICAgJmZkLCAmbW9kZSwgJm5ieXRlcykpCisgICAgICAgICZmZCwgJm1vZGUsICZuYnl0ZXMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2xvY2tpbmdfaW1wbChtb2R1bGUsIGZkLCBtb2RlLCBuYnl0ZXMpOwogCiBleGl0OgpAQCAtODUsMTEgKzg2LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpzZXRtb2RlIiwKLSAgICAgICAgJmZkLCAmZmxhZ3MpKQorICAgICAgICAmZmQsICZmbGFncykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X3NldG1vZGVfaW1wbChtb2R1bGUsIGZkLCBmbGFncyk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTExMCwyMiArMTEzLDI0IEBACiAgICAgeyJvcGVuX29zZmhhbmRsZSIsIChQeUNGdW5jdGlvbiltc3ZjcnRfb3Blbl9vc2ZoYW5kbGUsIE1FVEhfVkFSQVJHUywgbXN2Y3J0X29wZW5fb3NmaGFuZGxlX19kb2NfX30sCiAKIHN0YXRpYyBsb25nCi1tc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9pbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7Cittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCiBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGUoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKmFyZ3MpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfaW50cHRyX3QgaGFuZGxlOworICAgIGludHB0cl90IGhhbmRsZTsKICAgICBpbnQgZmxhZ3M7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICIiX1B5X1BBUlNFX0lOVFBUUiJpOm9wZW5fb3NmaGFuZGxlIiwKLSAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkKKyAgICAgICAgJmhhbmRsZSwgJmZsYWdzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGhhbmRsZSwgZmxhZ3MpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xNDMsNyArMTQ4LDcgQEAKICNkZWZpbmUgTVNWQ1JUX0dFVF9PU0ZIQU5ETEVfTUVUSE9EREVGICAgIFwKICAgICB7ImdldF9vc2ZoYW5kbGUiLCAoUHlDRnVuY3Rpb24pbXN2Y3J0X2dldF9vc2ZoYW5kbGUsIE1FVEhfTywgbXN2Y3J0X2dldF9vc2ZoYW5kbGVfX2RvY19ffSwKIAotc3RhdGljIFB5X2ludHB0cl90CitzdGF0aWMgaW50cHRyX3QKIG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTE1MSwxMyArMTU2LDE1IEBACiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgaW50IGZkOwotICAgIFB5X2ludHB0cl90IF9yZXR1cm5fdmFsdWU7CisgICAgaW50cHRyX3QgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpnZXRfb3NmaGFuZGxlIiwgJmZkKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImk6Z2V0X29zZmhhbmRsZSIsICZmZCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2dldF9vc2ZoYW5kbGVfaW1wbChtb2R1bGUsIGZkKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Wb2lkUHRyKCh2b2lkICopX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0xODMsOCArMTkwLDkgQEAKICAgICBsb25nIF9yZXR1cm5fdmFsdWU7CiAKICAgICBfcmV0dXJuX3ZhbHVlID0gbXN2Y3J0X2tiaGl0X2ltcGwobW9kdWxlKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzExLDggKzMxOSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgY2hhciBjaGFyX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJjOnB1dGNoIiwgJmNoYXJfdmFsdWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiYzpwdXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXRjaF9pbXBsKG1vZHVsZSwgY2hhcl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ2LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgdW5pY29kZV9jaGFyOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJDOnB1dHdjaCIsICZ1bmljb2RlX2NoYXIpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiQzpwdXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9wdXR3Y2hfaW1wbChtb2R1bGUsIHVuaWNvZGVfY2hhcik7CiAKIGV4aXQ6CkBAIC0zNjcsOCArMzc3LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBjaGFyIGNoYXJfdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgImM6dW5nZXRjaCIsICZjaGFyX3ZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldGNoX2ltcGwobW9kdWxlLCBjaGFyX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Myw4ICs0MDQsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIGludCB1bmljb2RlX2NoYXI7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIkM6dW5nZXR3Y2giLCAmdW5pY29kZV9jaGFyKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF91bmdldHdjaF9pbXBsKG1vZHVsZSwgdW5pY29kZV9jaGFyKTsKIAogZXhpdDoKQEAgLTQyNiwxMSArNDM4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRGaWxlIiwKLSAgICAgICAgJnR5cGUsICZmaWxlKSkKKyAgICAgICAgJnR5cGUsICZmaWxlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0RmlsZV9pbXBsKG1vZHVsZSwgdHlwZSwgZmlsZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTQ2NCwxMSArNDc4LDEzIEBACiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpDcnRTZXRSZXBvcnRNb2RlIiwKLSAgICAgICAgJnR5cGUsICZtb2RlKSkKKyAgICAgICAgJnR5cGUsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfQ3J0U2V0UmVwb3J0TW9kZV9pbXBsKG1vZHVsZSwgdHlwZSwgbW9kZSk7Ci0gICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQorICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5TG9uZ19Gcm9tTG9uZyhfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTUwMCwxMSArNTE2LDEzIEBACiAgICAgaW50IG1vZGU7CiAgICAgbG9uZyBfcmV0dXJuX3ZhbHVlOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOnNldF9lcnJvcl9tb2RlIiwgJm1vZGUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpzZXRfZXJyb3JfbW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSBtc3ZjcnRfc2V0X2Vycm9yX21vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC01MzEsOCArNTQ5LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICB1bnNpZ25lZCBpbnQgbW9kZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiSTpTZXRFcnJvck1vZGUiLCAmbW9kZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJJOlNldEVycm9yTW9kZSIsICZtb2RlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IG1zdmNydF9TZXRFcnJvck1vZGVfaW1wbChtb2R1bGUsIG1vZGUpOwogCiBleGl0OgpAQCAtNTUwLDQgKzU2OSw0IEBACiAjaWZuZGVmIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICAgICAjZGVmaW5lIE1TVkNSVF9TRVRfRVJST1JfTU9ERV9NRVRIT0RERUYKICNlbmRpZiAvKiAhZGVmaW5lZChNU1ZDUlRfU0VUX0VSUk9SX01PREVfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTJhNzk0YzUyMGQ2YWU4ODcgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWFlMDRlMmI1MGVlZjhiNjMgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUEMvY2xpbmljL3dpbnJlZy5jLmggYi9QQy9jbGluaWMvd2lucmVnLmMuaAppbmRleCBmNmFlMmMwLi5jN2Q1YjllIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2lucmVnLmMuaAorKysgYi9QQy9jbGluaWMvd2lucmVnLmMuaApAQCAtNzcsMjQgKzc3LDI2IEBACiAiXG4iKTsKIAogI2RlZmluZSBXSU5SRUdfSEtFWVRZUEVfX19FWElUX19fTUVUSE9EREVGICAgIFwKLSAgICB7Il9fZXhpdF9fIiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXywgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19fZG9jX199LAorICAgIHsiX19leGl0X18iLCAoUHlDRnVuY3Rpb24pd2lucmVnX0hLRVlUeXBlX19fZXhpdF9fLCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfSEtFWVR5cGVfX19leGl0X19fX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKFB5SEtFWU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmV4Y190eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV4Y192YWx1ZSwgUHlPYmplY3QgKnRyYWNlYmFjayk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfSEtFWVR5cGVfX19leGl0X18oUHlIS0VZT2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19IS0VZVHlwZV9fX2V4aXRfXyhQeUhLRVlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgc3RhdGljIGNoYXIgKl9rZXl3b3Jkc1tdID0geyJleGNfdHlwZSIsICJleGNfdmFsdWUiLCAidHJhY2ViYWNrIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsiZXhjX3R5cGUiLCAiZXhjX3ZhbHVlIiwgInRyYWNlYmFjayIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKmV4Y190eXBlOwogICAgIFB5T2JqZWN0ICpleGNfdmFsdWU7CiAgICAgUHlPYmplY3QgKnRyYWNlYmFjazsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PTzpfX2V4aXRfXyIsIF9rZXl3b3JkcywKLSAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmV4Y190eXBlLCAmZXhjX3ZhbHVlLCAmdHJhY2ViYWNrKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19IS0VZVHlwZV9fX2V4aXRfX19pbXBsKHNlbGYsIGV4Y190eXBlLCBleGNfdmFsdWUsIHRyYWNlYmFjayk7CiAKIGV4aXQ6CkBAIC0xNDcsMTEgKzE0OSwxMyBAQAogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiWk8mOkNvbm5lY3RSZWdpc3RyeSIsCi0gICAgICAgICZjb21wdXRlcl9uYW1lLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgICAgICAmY29tcHV0ZXJfbmFtZSwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIF9yZXR1cm5fdmFsdWUgPSB3aW5yZWdfQ29ubmVjdFJlZ2lzdHJ5X2ltcGwobW9kdWxlLCBjb21wdXRlcl9uYW1lLCBrZXkpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTE5MiwxMSArMTk2LDEzIEBACiAgICAgSEtFWSBfcmV0dXJuX3ZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6Q3JlYXRlS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19DcmVhdGVLZXlfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMjI5LDI5ICsyMzUsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfQ1JFQVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkNyZWF0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19DcmVhdGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19DcmVhdGVLZXlFeF9fZG9jX199LAorICAgIHsiQ3JlYXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0NyZWF0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfQ3JlYXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIEhLRVkKIHdpbnJlZ19DcmVhdGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19DcmVhdGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOkNyZWF0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9XUklURTsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6Q3JlYXRlS2V5RXgiLCBfa2V5d29yZHMsCi0gICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpCisgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXksICZyZXNlcnZlZCwgJmFjY2VzcykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICBfcmV0dXJuX3ZhbHVlID0gd2lucmVnX0NyZWF0ZUtleUV4X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTI5MCw4ICsyOTksOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mdTpEZWxldGVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5KSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRGVsZXRlS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXkpOwogCiBleGl0OgpAQCAtMzI0LDI1ICszMzQsMjcgQEAKICJPbiB1bnN1cHBvcnRlZCBXaW5kb3dzIHZlcnNpb25zLCBOb3RJbXBsZW1lbnRlZEVycm9yIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfREVMRVRFS0VZRVhfTUVUSE9EREVGICAgIFwKLSAgICB7IkRlbGV0ZUtleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19EZWxldGVLZXlFeCwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19EZWxldGVLZXlFeF9fZG9jX199LAorICAgIHsiRGVsZXRlS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX0RlbGV0ZUtleUV4LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfRGVsZXRlS2V5RXhfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKIHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgICAgUkVHU0FNIGFjY2VzcywgaW50IHJlc2VydmVkKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK3dpbnJlZ19EZWxldGVLZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAiYWNjZXNzIiwgInJlc2VydmVkIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZ1fGlpOkRlbGV0ZUtleUV4IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfV09XNjRfNjRLRVk7CiAgICAgaW50IHJlc2VydmVkID0gMDsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mdXxpaTpEZWxldGVLZXlFeCIsIF9rZXl3b3JkcywKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmFjY2VzcywgJnJlc2VydmVkKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVLZXlFeF9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBhY2Nlc3MsIHJlc2VydmVkKTsKIAogZXhpdDoKQEAgLTM3NCw4ICszODYsOSBAQAogICAgIFB5X1VOSUNPREUgKnZhbHVlOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6RGVsZXRlVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZ2YWx1ZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EZWxldGVWYWx1ZV9pbXBsKG1vZHVsZSwga2V5LCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC00MTEsOCArNDI0LDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtS2V5IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmaW5kZXgpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW51bUtleV9pbXBsKG1vZHVsZSwga2V5LCBpbmRleCk7CiAKIGV4aXQ6CkBAIC00NTcsOCArNDcxLDkgQEAKICAgICBpbnQgaW5kZXg7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8maTpFbnVtVmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZpbmRleCkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJmluZGV4KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FbnVtVmFsdWVfaW1wbChtb2R1bGUsIGtleSwgaW5kZXgpOwogCiBleGl0OgpAQCAtNDgzLDggKzQ5OCw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlfVU5JQ09ERSAqc3RyaW5nOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJ1OkV4cGFuZEVudmlyb25tZW50U3RyaW5ncyIsICZzdHJpbmcpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAidTpFeHBhbmRFbnZpcm9ubWVudFN0cmluZ3MiLCAmc3RyaW5nKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19FeHBhbmRFbnZpcm9ubWVudFN0cmluZ3NfaW1wbChtb2R1bGUsIHN0cmluZyk7CiAKIGV4aXQ6CkBAIC01MjIsOCArNTM4LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6Rmx1c2hLZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX0ZsdXNoS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgpAQCAtNTc0LDggKzU5MSw5IEBACiAgICAgUHlfVU5JQ09ERSAqZmlsZV9uYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJnV1OkxvYWRLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmZmlsZV9uYW1lKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJmZpbGVfbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfTG9hZEtleV9pbXBsKG1vZHVsZSwga2V5LCBzdWJfa2V5LCBmaWxlX25hbWUpOwogCiBleGl0OgpAQCAtNjAyLDI5ICs2MjAsMzIgQEAKICJJZiB0aGUgZnVuY3Rpb24gZmFpbHMsIGFuIE9TRXJyb3IgZXhjZXB0aW9uIGlzIHJhaXNlZC4iKTsKIAogI2RlZmluZSBXSU5SRUdfT1BFTktFWV9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleSIsIChQeUNGdW5jdGlvbil3aW5yZWdfT3BlbktleSwgTUVUSF9WQVJBUkdTfE1FVEhfS0VZV09SRFMsIHdpbnJlZ19PcGVuS2V5X19kb2NfX30sCisgICAgeyJPcGVuS2V5IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5LCBNRVRIX0ZBU1RDQUxMLCB3aW5yZWdfT3BlbktleV9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBIS0VZIGtleSwgUHlfVU5JQ09ERSAqc3ViX2tleSwKICAgICAgICAgICAgICAgICAgICAgaW50IHJlc2VydmVkLCBSRUdTQU0gYWNjZXNzKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnJlZ19PcGVuS2V5KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXkoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKLSAgICBzdGF0aWMgY2hhciAqX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImtleSIsICJzdWJfa2V5IiwgInJlc2VydmVkIiwgImFjY2VzcyIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7Ik8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLCAwfTsKICAgICBIS0VZIGtleTsKICAgICBQeV9VTklDT0RFICpzdWJfa2V5OwogICAgIGludCByZXNlcnZlZCA9IDA7CiAgICAgUkVHU0FNIGFjY2VzcyA9IEtFWV9SRUFEOwogICAgIEhLRVkgX3JldHVybl92YWx1ZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk8mWnxpaTpPcGVuS2V5IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5X2ltcGwobW9kdWxlLCBrZXksIHN1Yl9rZXksIHJlc2VydmVkLCBhY2Nlc3MpOwotICAgIGlmIChfcmV0dXJuX3ZhbHVlID09IE5VTEwpCisgICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IFB5SEtFWV9Gcm9tSEtFWShfcmV0dXJuX3ZhbHVlKTsKIAogZXhpdDoKQEAgLTY1MSwyOSArNjcyLDMyIEBACiAiSWYgdGhlIGZ1bmN0aW9uIGZhaWxzLCBhbiBPU0Vycm9yIGV4Y2VwdGlvbiBpcyByYWlzZWQuIik7CiAKICNkZWZpbmUgV0lOUkVHX09QRU5LRVlFWF9NRVRIT0RERUYgICAgXAotICAgIHsiT3BlbktleUV4IiwgKFB5Q0Z1bmN0aW9uKXdpbnJlZ19PcGVuS2V5RXgsIE1FVEhfVkFSQVJHU3xNRVRIX0tFWVdPUkRTLCB3aW5yZWdfT3BlbktleUV4X19kb2NfX30sCisgICAgeyJPcGVuS2V5RXgiLCAoUHlDRnVuY3Rpb24pd2lucmVnX09wZW5LZXlFeCwgTUVUSF9GQVNUQ0FMTCwgd2lucmVnX09wZW5LZXlFeF9fZG9jX199LAogCiBzdGF0aWMgSEtFWQogd2lucmVnX09wZW5LZXlFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICpzdWJfa2V5LAogICAgICAgICAgICAgICAgICAgICAgIGludCByZXNlcnZlZCwgUkVHU0FNIGFjY2Vzcyk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5yZWdfT3BlbktleUV4KFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQord2lucmVnX09wZW5LZXlFeChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsia2V5IiwgInN1Yl9rZXkiLCAicmVzZXJ2ZWQiLCAiYWNjZXNzIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiTyZafGlpOk9wZW5LZXlFeCIsIF9rZXl3b3JkcywgMH07CiAgICAgSEtFWSBrZXk7CiAgICAgUHlfVU5JQ09ERSAqc3ViX2tleTsKICAgICBpbnQgcmVzZXJ2ZWQgPSAwOwogICAgIFJFR1NBTSBhY2Nlc3MgPSBLRVlfUkVBRDsKICAgICBIS0VZIF9yZXR1cm5fdmFsdWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJPJlp8aWk6T3BlbktleUV4IiwgX2tleXdvcmRzLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmcmVzZXJ2ZWQsICZhY2Nlc3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgX3JldHVybl92YWx1ZSA9IHdpbnJlZ19PcGVuS2V5RXhfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgcmVzZXJ2ZWQsIGFjY2Vzcyk7Ci0gICAgaWYgKF9yZXR1cm5fdmFsdWUgPT0gTlVMTCkKKyAgICBpZiAoX3JldHVybl92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlIS0VZX0Zyb21IS0VZKF9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtNzA3LDggKzczMSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5SW5mb0tleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJPJjpRdWVyeUluZm9LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5SW5mb0tleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTc0OSw4ICs3NzQsOSBAQAogICAgIFB5X1VOSUNPREUgKnN1Yl9rZXk7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWjpRdWVyeVZhbHVlIiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJnN1Yl9rZXkpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSk7CiAKIGV4aXQ6CkBAIC03ODcsOCArODEzLDkgQEAKICAgICBQeV9VTklDT0RFICpuYW1lOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlo6UXVlcnlWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmbmFtZSkpCisgICAgICAgIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1F1ZXJ5VmFsdWVFeF9pbXBsKG1vZHVsZSwga2V5LCBuYW1lKTsKIAogZXhpdDoKQEAgLTgzMCw4ICs4NTcsOSBAQAogICAgIFB5X1VOSUNPREUgKmZpbGVfbmFtZTsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyZ1OlNhdmVLZXkiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKQorICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZmaWxlX25hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2lucmVnX1NhdmVLZXlfaW1wbChtb2R1bGUsIGtleSwgZmlsZV9uYW1lKTsKIAogZXhpdDoKQEAgLTg4Myw4ICs5MTEsOSBAQAogICAgIFB5X3NzaXplX2NsZWFuX3QgdmFsdWVfbGVuZ3RoOwogCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJPJlprdSM6U2V0VmFsdWUiLAotICAgICAgICBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXksICZzdWJfa2V5LCAmdHlwZSwgJnZhbHVlLCAmdmFsdWVfbGVuZ3RoKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmc3ViX2tleSwgJnR5cGUsICZ2YWx1ZSwgJnZhbHVlX2xlbmd0aCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfU2V0VmFsdWVfaW1wbChtb2R1bGUsIGtleSwgc3ViX2tleSwgdHlwZSwgdmFsdWUsIHZhbHVlX2xlbmd0aCk7CiAKIGV4aXQ6CkBAIC05MDcsNyArOTM2LDcgQEAKICIgICAgQW4gaW50ZWdlciB0aGF0IHNwZWNpZmllcyB0aGUgdHlwZSBvZiB0aGUgZGF0YSwgb25lIG9mOlxuIgogIiAgICBSRUdfQklOQVJZIC0tIEJpbmFyeSBkYXRhIGluIGFueSBmb3JtLlxuIgogIiAgICBSRUdfRFdPUkQgLS0gQSAzMi1iaXQgbnVtYmVyLlxuIgotIiAgICBSRUdfRFdPUkRfTElUVExFX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuXG4iCisiICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4gRXF1aXZhbGVudCB0byBSRUdfRFdPUkRcbiIKICIgICAgUkVHX0RXT1JEX0JJR19FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGJpZy1lbmRpYW4gZm9ybWF0LlxuIgogIiAgICBSRUdfRVhQQU5EX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZyB0aGF0IGNvbnRhaW5zIHVuZXhwYW5kZWRcbiIKICIgICAgICAgICAgICAgICAgICAgICByZWZlcmVuY2VzIHRvIGVudmlyb25tZW50IHZhcmlhYmxlcyAoZm9yIGV4YW1wbGUsXG4iCkBAIC05MTcsNiArOTQ2LDggQEAKICIgICAgICAgICAgICAgICAgICAgIGJ5IHR3byBudWxsIGNoYXJhY3RlcnMuICBOb3RlIHRoYXQgUHl0aG9uIGhhbmRsZXNcbiIKICIgICAgICAgICAgICAgICAgICAgIHRoaXMgdGVybWluYXRpb24gYXV0b21hdGljYWxseS5cbiIKICIgICAgUkVHX05PTkUgLS0gTm8gZGVmaW5lZCB2YWx1ZSB0eXBlLlxuIgorIiAgICBSRUdfUVdPUkQgLS0gQSA2NC1iaXQgbnVtYmVyLlxuIgorIiAgICBSRUdfUVdPUkRfTElUVExFX0VORElBTiAtLSBBIDY0LWJpdCBudW1iZXIgaW4gbGl0dGxlLWVuZGlhbiBmb3JtYXQuIEVxdWl2YWxlbnQgdG8gUkVHX1FXT1JELlxuIgogIiAgICBSRUdfUkVTT1VSQ0VfTElTVCAtLSBBIGRldmljZS1kcml2ZXIgcmVzb3VyY2UgbGlzdC5cbiIKICIgICAgUkVHX1NaIC0tIEEgbnVsbC10ZXJtaW5hdGVkIHN0cmluZy5cbiIKICIgIHZhbHVlXG4iCkBAIC05NTAsOCArOTgxLDkgQEAKICAgICBQeU9iamVjdCAqdmFsdWU7CiAKICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIk8mWk9rTzpTZXRWYWx1ZUV4IiwKLSAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkKKyAgICAgICAgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5LCAmdmFsdWVfbmFtZSwgJnJlc2VydmVkLCAmdHlwZSwgJnZhbHVlKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19TZXRWYWx1ZUV4X2ltcGwobW9kdWxlLCBrZXksIHZhbHVlX25hbWUsIHJlc2VydmVkLCB0eXBlLCB2YWx1ZSk7CiAKIGV4aXQ6CkBAIC05ODUsOCArMTAxNyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkRpc2FibGVSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnJlZ19EaXNhYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwMTgsOCArMTA1MSw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgSEtFWSBrZXk7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOkVuYWJsZVJlZmxlY3Rpb25LZXkiLCBjbGluaWNfSEtFWV9jb252ZXJ0ZXIsICZrZXkpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6RW5hYmxlUmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfRW5hYmxlUmVmbGVjdGlvbktleV9pbXBsKG1vZHVsZSwga2V5KTsKIAogZXhpdDoKQEAgLTEwNDksMTEgKzEwODMsMTIgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBIS0VZIGtleTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiTyY6UXVlcnlSZWZsZWN0aW9uS2V5IiwgY2xpbmljX0hLRVlfY29udmVydGVyLCAma2V5KSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIk8mOlF1ZXJ5UmVmbGVjdGlvbktleSIsIGNsaW5pY19IS0VZX2NvbnZlcnRlciwgJmtleSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSB3aW5yZWdfUXVlcnlSZWZsZWN0aW9uS2V5X2ltcGwobW9kdWxlLCBrZXkpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9N2I4OTQwYTIzZjYwNWRkYyBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTZkZDA2YmU2ZTE0Yjg2ZSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jbGluaWMvd2luc291bmQuYy5oIGIvUEMvY2xpbmljL3dpbnNvdW5kLmMuaAppbmRleCBiMDBiNDQyLi41MmQyNWIyIDEwMDY0NAotLS0gYS9QQy9jbGluaWMvd2luc291bmQuYy5oCisrKyBiL1BDL2NsaW5pYy93aW5zb3VuZC5jLmgKQEAgLTMsNyArMyw3IEBACiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIFB5RG9jX1NUUlZBUih3aW5zb3VuZF9QbGF5U291bmRfX2RvY19fLAotIlBsYXlTb3VuZCgkbW9kdWxlLCBzb3VuZCwgZmxhZ3MsIC8pXG4iCisiUGxheVNvdW5kKCRtb2R1bGUsIC8sIHNvdW5kLCBmbGFncylcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgUGxheVNvdW5kIEFQSS5cbiIKQEAgLTE0LDIxICsxNCwyNCBAQAogIiAgICBGbGFnIHZhbHVlcywgb3JlZCB0b2dldGhlci4gIFNlZSBtb2R1bGUgZG9jdW1lbnRhdGlvbi4iKTsKIAogI2RlZmluZSBXSU5TT1VORF9QTEFZU09VTkRfTUVUSE9EREVGICAgIFwKLSAgICB7IlBsYXlTb3VuZCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9QbGF5U291bmQsIE1FVEhfVkFSQVJHUywgd2luc291bmRfUGxheVNvdW5kX19kb2NfX30sCisgICAgeyJQbGF5U291bmQiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfUGxheVNvdW5kLCBNRVRIX0ZBU1RDQUxMLCB3aW5zb3VuZF9QbGF5U291bmRfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX1BsYXlTb3VuZF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIFB5X1VOSUNPREUgKnNvdW5kLCBpbnQgZmxhZ3MpOword2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdW5kLCBpbnQgZmxhZ3MpOwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfUGxheVNvdW5kKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgUHlfVU5JQ09ERSAqc291bmQ7CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291bmQiLCAiZmxhZ3MiLCBOVUxMfTsKKyAgICBzdGF0aWMgX1B5QXJnX1BhcnNlciBfcGFyc2VyID0geyJPaTpQbGF5U291bmQiLCBfa2V5d29yZHMsIDB9OworICAgIFB5T2JqZWN0ICpzb3VuZDsKICAgICBpbnQgZmxhZ3M7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIlppOlBsYXlTb3VuZCIsCi0gICAgICAgICZzb3VuZCwgJmZsYWdzKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdW5kLCAmZmxhZ3MpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfUGxheVNvdW5kX2ltcGwobW9kdWxlLCBzb3VuZCwgZmxhZ3MpOwogCiBleGl0OgpAQCAtMzYsNyArMzksNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfQmVlcF9fZG9jX18sCi0iQmVlcCgkbW9kdWxlLCBmcmVxdWVuY3ksIGR1cmF0aW9uLCAvKVxuIgorIkJlZXAoJG1vZHVsZSwgLywgZnJlcXVlbmN5LCBkdXJhdGlvbilcbiIKICItLVxuIgogIlxuIgogIkEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuXG4iCkBAIC00OCwyMSArNTEsMjQgQEAKICIgICAgSG93IGxvbmcgdGhlIHNvdW5kIHNob3VsZCBwbGF5LCBpbiBtaWxsaXNlY29uZHMuIik7CiAKICNkZWZpbmUgV0lOU09VTkRfQkVFUF9NRVRIT0RERUYgICAgXAotICAgIHsiQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9CZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX0JlZXBfX2RvY19ffSwKKyAgICB7IkJlZXAiLCAoUHlDRnVuY3Rpb24pd2luc291bmRfQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfQmVlcF9fZG9jX199LAogCiBzdGF0aWMgUHlPYmplY3QgKgogd2luc291bmRfQmVlcF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIGludCBmcmVxdWVuY3ksIGludCBkdXJhdGlvbik7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9CZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICphcmdzKQord2luc291bmRfQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOworICAgIHN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgX2tleXdvcmRzW10gPSB7ImZyZXF1ZW5jeSIsICJkdXJhdGlvbiIsIE5VTEx9OworICAgIHN0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7ImlpOkJlZXAiLCBfa2V5d29yZHMsIDB9OwogICAgIGludCBmcmVxdWVuY3k7CiAgICAgaW50IGR1cmF0aW9uOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpaTpCZWVwIiwKLSAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJmZyZXF1ZW5jeSwgJmR1cmF0aW9uKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX0JlZXBfaW1wbChtb2R1bGUsIGZyZXF1ZW5jeSwgZHVyYXRpb24pOwogCiBleGl0OgpAQCAtNzAsNyArNzYsNyBAQAogfQogCiBQeURvY19TVFJWQVIod2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19fLAotIk1lc3NhZ2VCZWVwKCRtb2R1bGUsIHg9TUJfT0ssIC8pXG4iCisiTWVzc2FnZUJlZXAoJG1vZHVsZSwgLywgdHlwZT1NQl9PSylcbiIKICItLVxuIgogIlxuIgogIkNhbGwgV2luZG93cyBNZXNzYWdlQmVlcCh4KS5cbiIKQEAgLTc4LDIzICs4NCwyNiBAQAogInggZGVmYXVsdHMgdG8gTUJfT0suIik7CiAKICNkZWZpbmUgV0lOU09VTkRfTUVTU0FHRUJFRVBfTUVUSE9EREVGICAgIFwKLSAgICB7Ik1lc3NhZ2VCZWVwIiwgKFB5Q0Z1bmN0aW9uKXdpbnNvdW5kX01lc3NhZ2VCZWVwLCBNRVRIX1ZBUkFSR1MsIHdpbnNvdW5kX01lc3NhZ2VCZWVwX19kb2NfX30sCisgICAgeyJNZXNzYWdlQmVlcCIsIChQeUNGdW5jdGlvbil3aW5zb3VuZF9NZXNzYWdlQmVlcCwgTUVUSF9GQVNUQ0FMTCwgd2luc291bmRfTWVzc2FnZUJlZXBfX2RvY19ffSwKIAogc3RhdGljIFB5T2JqZWN0ICoKLXdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHgpOword2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgdHlwZSk7CiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9NZXNzYWdlQmVlcChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncykKK3dpbnNvdW5kX01lc3NhZ2VCZWVwKFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBuYXJncywgUHlPYmplY3QgKmt3bmFtZXMpCiB7CiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7Ci0gICAgaW50IHggPSBNQl9PSzsKKyAgICBzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0geyJ0eXBlIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsifGk6TWVzc2FnZUJlZXAiLCBfa2V5d29yZHMsIDB9OworICAgIGludCB0eXBlID0gTUJfT0s7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgInxpOk1lc3NhZ2VCZWVwIiwKLSAgICAgICAgJngpKQorICAgIGlmICghX1B5QXJnX1BhcnNlU3RhY2soYXJncywgbmFyZ3MsIGt3bmFtZXMsICZfcGFyc2VyLAorICAgICAgICAmdHlwZSkpIHsKICAgICAgICAgZ290byBleGl0OwotICAgIHJldHVybl92YWx1ZSA9IHdpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwobW9kdWxlLCB4KTsKKyAgICB9CisgICAgcmV0dXJuX3ZhbHVlID0gd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChtb2R1bGUsIHR5cGUpOwogCiBleGl0OgogICAgIHJldHVybiByZXR1cm5fdmFsdWU7CiB9Ci0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YzBiMjkwZGFmMjMzMGRjOSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmZlMTZiMmI4YjQ5MGNiMSBpbnB1dD1hOTA0OTA1NDAxM2ExYjc3XSovCmRpZmYgLS1naXQgYS9QQy9jb25maWcuYyBiL1BDL2NvbmZpZy5jCmluZGV4IDY2YmY0NTguLjQzZDllMjAgMTAwNjQ0Ci0tLSBhL1BDL2NvbmZpZy5jCisrKyBiL1BDL2NvbmZpZy5jCkBAIC0yMyw2ICsyMyw4IEBACiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhMSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X19zaGEyNTYodm9pZCk7CiBleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fc2hhNTEyKHZvaWQpOworZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfX3NoYTModm9pZCk7CitleHRlcm4gUHlPYmplY3QqIFB5SW5pdF9fYmxha2UyKHZvaWQpOwogZXh0ZXJuIFB5T2JqZWN0KiBQeUluaXRfdGltZSh2b2lkKTsKIGV4dGVybiBQeU9iamVjdCogUHlJbml0X190aHJlYWQodm9pZCk7CiAjaWZkZWYgV0lOMzIKQEAgLTk2LDYgKzk4LDggQEAKICAgICB7Il9zaGExIiwgUHlJbml0X19zaGExfSwKICAgICB7Il9zaGEyNTYiLCBQeUluaXRfX3NoYTI1Nn0sCiAgICAgeyJfc2hhNTEyIiwgUHlJbml0X19zaGE1MTJ9LAorICAgIHsiX3NoYTMiLCBQeUluaXRfX3NoYTN9LAorICAgIHsiX2JsYWtlMiIsIFB5SW5pdF9fYmxha2UyfSwKICAgICB7InRpbWUiLCBQeUluaXRfdGltZX0sCiAjaWZkZWYgV0lUSF9USFJFQUQKICAgICB7Il90aHJlYWQiLCBQeUluaXRfX3RocmVhZH0sCmRpZmYgLS1naXQgYS9QQy9nZXRwYXRocC5jIGIvUEMvZ2V0cGF0aHAuYwppbmRleCBjN2RkZjFlLi4zMWY5NzNlIDEwMDY0NAotLS0gYS9QQy9nZXRwYXRocC5jCisrKyBiL1BDL2dldHBhdGhwLmMKQEAgLTYsNyArNiw5IEBACiAgICBQQVRIIFJVTEVTIEZPUiBXSU5ET1dTOgogICAgVGhpcyBkZXNjcmliZXMgaG93IHN5cy5wYXRoIGlzIGZvcm1lZCBvbiBXaW5kb3dzLiAgSXQgZGVzY3JpYmVzIHRoZQogICAgZnVuY3Rpb25hbGl0eSwgbm90IHRoZSBpbXBsZW1lbnRhdGlvbiAoaWUsIHRoZSBvcmRlciBpbiB3aGljaCB0aGVzZQotICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KQorICAgYXJlIGFjdHVhbGx5IGZldGNoZWQgaXMgZGlmZmVyZW50KS4gVGhlIHByZXNlbmNlIG9mIGEgcHl0aG9uLl9wdGggb3IKKyAgIHB5dGhvblhZLl9wdGggZmlsZSBhbG9uZ3NpZGUgdGhlIHByb2dyYW0gb3ZlcnJpZGVzIHRoZXNlIHJ1bGVzIC0gc2VlCisgICBiZWxvdy4KIAogICAgKiBQeXRob24gYWx3YXlzIGFkZHMgYW4gZW1wdHkgZW50cnkgYXQgdGhlIHN0YXJ0LCB3aGljaCBjb3JyZXNwb25kcwogICAgICB0byB0aGUgY3VycmVudCBkaXJlY3RvcnkuCkBAIC0yMyw5ICsyNSw5IEBACiAKICAgICogV2UgYXR0ZW1wdCB0byBsb2NhdGUgdGhlICJQeXRob24gSG9tZSIgLSBpZiB0aGUgUFlUSE9OSE9NRSBlbnYgdmFyCiAgICAgIGlzIHNldCwgd2UgYmVsaWV2ZSBpdC4gIE90aGVyd2lzZSwgd2UgdXNlIHRoZSBwYXRoIG9mIG91ciBob3N0IC5FWEUncwotICAgICB0byB0cnkgYW5kIGxvY2F0ZSBvdXIgImxhbmRtYXJrIiAobGliXFxvcy5weSkgYW5kIGRlZHVjZSBvdXIgaG9tZS4KKyAgICAgdG8gdHJ5IGFuZCBsb2NhdGUgb25lIG9mIG91ciAibGFuZG1hcmtzIiBhbmQgZGVkdWNlIG91ciBob21lLgogICAgICAtIElmIHdlIERPIGhhdmUgYSBQeXRob24gSG9tZTogVGhlIHJlbGV2YW50IHN1Yi1kaXJlY3RvcmllcyAoTGliLAotICAgICAgIHBsYXQtd2luLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKKyAgICAgICBETExzLCBldGMpIGFyZSBiYXNlZCBvbiB0aGUgUHl0aG9uIEhvbWUKICAgICAgLSBJZiB3ZSBETyBOT1QgaGF2ZSBhIFB5dGhvbiBIb21lLCB0aGUgY29yZSBQeXRob24gUGF0aCBpcwogICAgICAgIGxvYWRlZCBmcm9tIHRoZSByZWdpc3RyeS4gIFRoaXMgaXMgdGhlIG1haW4gUHl0aG9uUGF0aCBrZXksCiAgICAgICAgYW5kIGJvdGggSEtMTSBhbmQgSEtDVSBhcmUgY29tYmluZWQgdG8gZm9ybSB0aGUgcGF0aCkKQEAgLTMzLDcgKzM1LDIzIEBACiAgICAqIElmZiAtIHdlIGNhbiBub3QgbG9jYXRlIHRoZSBQeXRob24gSG9tZSwgaGF2ZSBub3QgaGFkIGEgUFlUSE9OUEFUSAogICAgICBzcGVjaWZpZWQsIGFuZCBjYW4ndCBsb2NhdGUgYW55IFJlZ2lzdHJ5IGVudHJpZXMgKGllLCB3ZSBoYXZlIF9ub3RoaW5nXwogICAgICB3ZSBjYW4gYXNzdW1lIGlzIGEgZ29vZCBwYXRoKSwgYSBkZWZhdWx0IHBhdGggd2l0aCByZWxhdGl2ZSBlbnRyaWVzIGlzCi0gICAgIHVzZWQgKGVnLiAuXExpYjsuXHBsYXQtd2luLCBldGMpCisgICAgIHVzZWQgKGVnLiAuXExpYjsuXERMTHMsIGV0YykKKworCisgICBJZiBhICcuX3B0aCcgZmlsZSBleGlzdHMgYWRqYWNlbnQgdG8gdGhlIGV4ZWN1dGFibGUgd2l0aCB0aGUgc2FtZSBiYXNlIG5hbWUKKyAgIChlLmcuIHB5dGhvbi5fcHRoIGFkamFjZW50IHRvIHB5dGhvbi5leGUpIG9yIGFkamFjZW50IHRvIHRoZSBzaGFyZWQgbGlicmFyeQorICAgKGUuZy4gcHl0aG9uMzYuX3B0aCBhZGphY2VudCB0byBweXRob24zNi5kbGwpLCBpdCBpcyB1c2VkIGluIHByZWZlcmVuY2UgdG8KKyAgIHRoZSBhYm92ZSBwcm9jZXNzLiBUaGUgc2hhcmVkIGxpYnJhcnkgZmlsZSB0YWtlcyBwcmVjZWRlbmNlIG92ZXIgdGhlCisgICBleGVjdXRhYmxlLiBUaGUgcGF0aCBmaWxlIG11c3QgY29udGFpbiBhIGxpc3Qgb2YgcGF0aHMgdG8gYWRkIHRvIHN5cy5wYXRoLAorICAgb25lIHBlciBsaW5lLiBFYWNoIHBhdGggaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIHRoZSBmaWxlLgorICAgQmxhbmsgbGluZXMgYW5kIGNvbW1lbnRzIGJlZ2lubmluZyB3aXRoICcjJyBhcmUgcGVybWl0dGVkLgorCisgICBJbiB0aGUgcHJlc2VuY2Ugb2YgdGhpcyAuX3B0aCBmaWxlLCBubyBvdGhlciBwYXRocyBhcmUgYWRkZWQgdG8gdGhlIHNlYXJjaAorICAgcGF0aCwgdGhlIHJlZ2lzdHJ5IGZpbmRlciBpcyBub3QgZW5hYmxlZCwgc2l0ZS5weSBpcyBub3QgaW1wb3J0ZWQgYW5kCisgICBpc29sYXRlZCBtb2RlIGlzIGVuYWJsZWQuIFRoZSBzaXRlIHBhY2thZ2UgY2FuIGJlIGVuYWJsZWQgYnkgaW5jbHVkaW5nIGEKKyAgIGxpbmUgcmVhZGluZyAiaW1wb3J0IHNpdGUiOyBubyBvdGhlciBpbXBvcnRzIGFyZSByZWNvZ25pemVkLiBBbnkgaW52YWxpZAorICAgZW50cnkgKG90aGVyIHRoYW4gZGlyZWN0b3JpZXMgdGhhdCBkbyBub3QgZXhpc3QpIHdpbGwgcmVzdWx0IGluIGltbWVkaWF0ZQorICAgdGVybWluYXRpb24gb2YgdGhlIHByb2dyYW0uCiAKIAogICBUaGUgZW5kIHJlc3VsdCBvZiBhbGwgdGhpcyBpczoKQEAgLTUyLDcgKzcwLDExIEBACiAgICAgc29tZSBkZWZhdWx0LCBidXQgcmVsYXRpdmUsIHBhdGhzLgogCiAgICogQW4gZW1iZWRkaW5nIGFwcGxpY2F0aW9uIGNhbiB1c2UgUHlfU2V0UGF0aCgpIHRvIG92ZXJyaWRlIGFsbCBvZgotICAgIHRoZXNlIGF1dGhvbWF0aWMgcGF0aCBjb21wdXRhdGlvbnMuCisgICAgdGhlc2UgYXV0b21hdGljIHBhdGggY29tcHV0YXRpb25zLgorCisgICogQW4gaW5zdGFsbCBvZiBQeXRob24gY2FuIGZ1bGx5IHNwZWNpZnkgdGhlIGNvbnRlbnRzIG9mIHN5cy5wYXRoIHVzaW5nCisgICAgZWl0aGVyIGEgJ0VYRU5BTUUuX3B0aCcgb3IgJ0RMTE5BTUUuX3B0aCcgZmlsZSwgb3B0aW9uYWxseSBpbmNsdWRpbmcKKyAgICAiaW1wb3J0IHNpdGUiIHRvIGVuYWJsZSB0aGUgc2l0ZSBtb2R1bGUuCiAKICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIApAQCAtNjEsMTAgKzgzLDEzIEBACiAjaW5jbHVkZSAib3NkZWZzLmgiCiAjaW5jbHVkZSA8d2NoYXIuaD4KIAotI2lmZGVmIE1TX1dJTkRPV1MKLSNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaWZuZGVmIE1TX1dJTkRPV1MKKyNlcnJvciBnZXRwYXRocC5jIHNob3VsZCBvbmx5IGJlIGJ1aWx0IG9uIFdpbmRvd3MKICNlbmRpZgogCisjaW5jbHVkZSA8d2luZG93cy5oPgorI2luY2x1ZGUgPFNobHdhcGkuaD4KKwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNlbmRpZiAvKiBIQVZFX1NZU19UWVBFU19IICovCkBAIC0xMjIsNiArMTQ3LDMzIEBACiAgICAgZGlyW2ldID0gJ1wwJzsKIH0KIAorc3RhdGljIGludAorY2hhbmdlX2V4dCh3Y2hhcl90ICpkZXN0LCBjb25zdCB3Y2hhcl90ICpzcmMsIGNvbnN0IHdjaGFyX3QgKmV4dCkKK3sKKyAgICBzaXplX3Qgc3JjX2xlbiA9IHdjc25sZW5fcyhzcmMsIE1BWFBBVEhMRU4rMSk7CisgICAgc2l6ZV90IGkgPSBzcmNfbGVuOworICAgIGlmIChpID49IE1BWFBBVEhMRU4rMSkKKyAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyByZWR1Y2UoKSIpOworCisgICAgd2hpbGUgKGkgPiAwICYmIHNyY1tpXSAhPSAnLicgJiYgIWlzX3NlcChzcmNbaV0pKQorICAgICAgICAtLWk7CisKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICAgIGRlc3RbMF0gPSAnXDAnOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKGlzX3NlcChzcmNbaV0pKQorICAgICAgICBpID0gc3JjX2xlbjsKKworICAgIGlmICh3Y3NuY3B5X3MoZGVzdCwgTUFYUEFUSExFTisxLCBzcmMsIGkpIHx8CisgICAgICAgIHdjc2NhdF9zKGRlc3QsIE1BWFBBVEhMRU4rMSwgZXh0KSkgeworICAgICAgICBkZXN0WzBdID0gJ1wwJzsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIHJldHVybiAwOworfQogCiBzdGF0aWMgaW50CiBleGlzdHMod2NoYXJfdCAqZmlsZW5hbWUpCkBAIC0xMzUsNyArMTg3LDcgQEAKIHN0YXRpYyBpbnQKIGlzbW9kdWxlKHdjaGFyX3QgKmZpbGVuYW1lLCBpbnQgdXBkYXRlX2ZpbGVuYW1lKSAvKiBJcyBtb2R1bGUgLS0gY2hlY2sgZm9yIC5weWMvLnB5byB0b28gKi8KIHsKLSAgICBpbnQgbjsKKyAgICBzaXplX3QgbjsKIAogICAgIGlmIChleGlzdHMoZmlsZW5hbWUpKQogICAgICAgICByZXR1cm4gMTsKQEAgLTE2MywyNCArMjE1LDMwIEBACiAgICB0aGFuIE1BWFBBVEhMRU4gY2hhcmFjdGVycyBhdCBleGl0LiAgSWYgc3R1ZmYgaXMgdG9vIGxvbmcsIG9ubHkgYXMgbXVjaCBvZgogICAgc3R1ZmYgYXMgZml0cyB3aWxsIGJlIGFwcGVuZGVkLgogKi8KKworc3RhdGljIGludCBfUGF0aENjaENvbWJpbmVFeF9Jbml0aWFsaXplZCA9IDA7Cit0eXBlZGVmIEhSRVNVTFQoX19zdGRjYWxsICpQUGF0aENjaENvbWJpbmVFeCkoUFdTVFIgcHN6UGF0aE91dCwgc2l6ZV90IGNjaFBhdGhPdXQsIFBDV1NUUiBwc3pQYXRoSW4sIFBDV1NUUiBwc3pNb3JlLCB1bnNpZ25lZCBsb25nIGR3RmxhZ3MpOworc3RhdGljIFBQYXRoQ2NoQ29tYmluZUV4IF9QYXRoQ2NoQ29tYmluZUV4OworCiBzdGF0aWMgdm9pZAogam9pbih3Y2hhcl90ICpidWZmZXIsIGNvbnN0IHdjaGFyX3QgKnN0dWZmKQogewotICAgIHNpemVfdCBuOwotICAgIGlmIChpc19zZXAoc3R1ZmZbMF0pIHx8Ci0gICAgICAgICh3Y3NubGVuX3Moc3R1ZmYsIDQpID49IDMgJiYgc3R1ZmZbMV0gPT0gJzonICYmIGlzX3NlcChzdHVmZlsyXSkpKSB7Ci0gICAgICAgIGlmICh3Y3NjcHlfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJidWZmZXIgb3ZlcmZsb3cgaW4gZ2V0cGF0aHAuYydzIGpvaW4oKSIpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4X0luaXRpYWxpemVkID09IDApIHsKKyAgICAgICAgSE1PRFVMRSBwYXRoYXBpID0gTG9hZExpYnJhcnlXKEwiYXBpLW1zLXdpbi1jb3JlLXBhdGgtbDEtMS0wLmRsbCIpOworICAgICAgICBpZiAocGF0aGFwaSkKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gKFBQYXRoQ2NoQ29tYmluZUV4KUdldFByb2NBZGRyZXNzKHBhdGhhcGksICJQYXRoQ2NoQ29tYmluZUV4Iik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIF9QYXRoQ2NoQ29tYmluZUV4ID0gTlVMTDsKKyAgICAgICAgX1BhdGhDY2hDb21iaW5lRXhfSW5pdGlhbGl6ZWQgPSAxOwogICAgIH0KIAotICAgIG4gPSB3Y3NubGVuX3MoYnVmZmVyLCBNQVhQQVRITEVOKzEpOwotICAgIGlmIChuID4gMCAmJiAhaXNfc2VwKGJ1ZmZlcltuIC0gMV0pICYmIG4gPCBNQVhQQVRITEVOKSB7Ci0gICAgICAgIGJ1ZmZlcltuXSA9IFNFUDsKLSAgICAgICAgYnVmZmVyW24gKyAxXSA9ICdcMCc7CisgICAgaWYgKF9QYXRoQ2NoQ29tYmluZUV4KSB7CisgICAgICAgIGlmIChGQUlMRUQoX1BhdGhDY2hDb21iaW5lRXgoYnVmZmVyLCBNQVhQQVRITEVOKzEsIGJ1ZmZlciwgc3R1ZmYsIDApKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CisgICAgfSBlbHNlIHsKKyAgICAgICAgaWYgKCFQYXRoQ29tYmluZVcoYnVmZmVyLCBidWZmZXIsIHN0dWZmKSkKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiAgICAgfQotICAgIGlmICh3Y3NjYXRfcyhidWZmZXIsIE1BWFBBVEhMRU4rMSwgc3R1ZmYpICE9IDApCi0gICAgICAgIFB5X0ZhdGFsRXJyb3IoImJ1ZmZlciBvdmVyZmxvdyBpbiBnZXRwYXRocC5jJ3Mgam9pbigpIik7CiB9CiAKIC8qIGdvdGxhbmRtYXJrIG9ubHkgY2FsbGVkIGJ5IHNlYXJjaF9mb3JfcHJlZml4LCB3aGljaCBlbnN1cmVzCkBAIC0xODgsNyArMjQ2LDcgQEAKICAgICdsYW5kbWFyaycgY2FuIG5vdCBvdmVyZmxvdyBwcmVmaXggaWYgdG9vIGxvbmcuCiAqLwogc3RhdGljIGludAotZ290bGFuZG1hcmsod2NoYXJfdCAqbGFuZG1hcmspCitnb3RsYW5kbWFyayhjb25zdCB3Y2hhcl90ICpsYW5kbWFyaykKIHsKICAgICBpbnQgb2s7CiAgICAgUHlfc3NpemVfdCBuID0gd2Nzbmxlbl9zKHByZWZpeCwgTUFYUEFUSExFTik7CkBAIC0yMDIsNyArMjYwLDcgQEAKIC8qIGFzc3VtZXMgYXJndjBfcGF0aCBpcyBNQVhQQVRITEVOKzEgYnl0ZXMgbG9uZywgYWxyZWFkeSBcMCB0ZXJtJ2QuCiAgICBhc3N1bXB0aW9uIHByb3ZpZGVkIGJ5IG9ubHkgY2FsbGVyLCBjYWxjdWxhdGVfcGF0aCgpICovCiBzdGF0aWMgaW50Ci1zZWFyY2hfZm9yX3ByZWZpeCh3Y2hhcl90ICphcmd2MF9wYXRoLCB3Y2hhcl90ICpsYW5kbWFyaykKK3NlYXJjaF9mb3JfcHJlZml4KHdjaGFyX3QgKmFyZ3YwX3BhdGgsIGNvbnN0IHdjaGFyX3QgKmxhbmRtYXJrKQogewogICAgIC8qIFNlYXJjaCBmcm9tIGFyZ3YwX3BhdGgsIHVudGlsIGxhbmRtYXJrIGlzIGZvdW5kICovCiAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOICsgMSwgYXJndjBfcGF0aCk7CkBAIC0yMTQsNyArMjcyLDYgQEAKICAgICByZXR1cm4gMDsKIH0KIAotI2lmZGVmIE1TX1dJTkRPV1MKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECiAKIC8qIGEgc3RyaW5nIGxvYWRlZCBmcm9tIHRoZSBETEwgYXQgc3RhcnR1cC4qLwpAQCAtMzY5LDcgKzQyNiw2IEBACiAgICAgcmV0dXJuIHJldHZhbDsKIH0KICNlbmRpZiAvKiBQeV9FTkFCTEVfU0hBUkVEICovCi0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwogCiBzdGF0aWMgdm9pZAogZ2V0X3Byb2dwYXRoKHZvaWQpCkBAIC0zNzgsNyArNDM0LDYgQEAKICAgICB3Y2hhcl90ICpwYXRoID0gX3dnZXRlbnYoTCJQQVRIIik7CiAgICAgd2NoYXJfdCAqcHJvZyA9IFB5X0dldFByb2dyYW1OYW1lKCk7CiAKLSNpZmRlZiBNU19XSU5ET1dTCiAjaWZkZWYgUHlfRU5BQkxFX1NIQVJFRAogICAgIGV4dGVybiBIQU5ETEUgUHlXaW5fRExMaE1vZHVsZTsKICAgICAvKiBzdGF0aWMgaW5pdCBvZiBwcm9ncGF0aCBlbnN1cmVzIGZpbmFsIGNoYXIgcmVtYWlucyBcMCAqLwpAQCAtMzkwLDcgKzQ0NSw2IEBACiAjZW5kaWYKICAgICBpZiAoR2V0TW9kdWxlRmlsZU5hbWVXKE5VTEwsIHByb2dwYXRoLCBNQVhQQVRITEVOKSkKICAgICAgICAgcmV0dXJuOwotI2VuZGlmCiAgICAgaWYgKHByb2cgPT0gTlVMTCB8fCAqcHJvZyA9PSAnXDAnKQogICAgICAgICBwcm9nID0gTCJweXRob24iOwogCkBAIC00ODMsNiArNTM3LDgxIEBACiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorc3RhdGljIGludAorcmVhZF9wdGhfZmlsZShjb25zdCB3Y2hhcl90ICpwYXRoLCB3Y2hhcl90ICpwcmVmaXgsIGludCAqaXNvbGF0ZWQsIGludCAqbm9zaXRlKQoreworICAgIEZJTEUgKnNwX2ZpbGUgPSBfUHlfd2ZvcGVuKHBhdGgsIEwiciIpOworICAgIGlmIChzcF9maWxlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHdjc2NweV9zKHByZWZpeCwgTUFYUEFUSExFTisxLCBwYXRoKTsKKyAgICByZWR1Y2UocHJlZml4KTsKKyAgICAqaXNvbGF0ZWQgPSAxOworICAgICpub3NpdGUgPSAxOworCisgICAgc2l6ZV90IGJ1ZnNpeiA9IE1BWFBBVEhMRU47CisgICAgc2l6ZV90IHByZWZpeGxlbiA9IHdjc2xlbihwcmVmaXgpOworCisgICAgd2NoYXJfdCAqYnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd01hbGxvYyhidWZzaXogKiBzaXplb2Yod2NoYXJfdCkpOworICAgIGJ1ZlswXSA9ICdcMCc7CisKKyAgICB3aGlsZSAoIWZlb2Yoc3BfZmlsZSkpIHsKKyAgICAgICAgY2hhciBsaW5lW01BWFBBVEhMRU4gKyAxXTsKKyAgICAgICAgY2hhciAqcCA9IGZnZXRzKGxpbmUsIE1BWFBBVEhMRU4gKyAxLCBzcF9maWxlKTsKKyAgICAgICAgaWYgKCFwKQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGlmICgqcCA9PSAnXDAnIHx8ICpwID09ICcjJykKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICB3aGlsZSAoKisrcCkgeworICAgICAgICAgICAgaWYgKCpwID09ICdccicgfHwgKnAgPT0gJ1xuJykgeworICAgICAgICAgICAgICAgICpwID0gJ1wwJzsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGlmIChzdHJjbXAobGluZSwgImltcG9ydCBzaXRlIikgPT0gMCkgeworICAgICAgICAgICAgKm5vc2l0ZSA9IDA7CisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgfSBlbHNlIGlmIChzdHJuY21wKGxpbmUsICJpbXBvcnQgIiwgNykgPT0gMCkgeworICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigib25seSAnaW1wb3J0IHNpdGUnIGlzIHN1cHBvcnRlZCBpbiAuX3B0aCBmaWxlIik7CisgICAgICAgIH0KKworICAgICAgICBEV09SRCB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIE5VTEwsIDApOworICAgICAgICB3Y2hhcl90ICp3bGluZSA9ICh3Y2hhcl90KilQeU1lbV9SYXdNYWxsb2MoKHduICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICB3biA9IE11bHRpQnl0ZVRvV2lkZUNoYXIoQ1BfVVRGOCwgMCwgbGluZSwgLTEsIHdsaW5lLCB3biArIDEpOworICAgICAgICB3bGluZVt3bl0gPSAnXDAnOworCisgICAgICAgIHdoaWxlICh3biArIHByZWZpeGxlbiArIDQgPiBidWZzaXopIHsKKyAgICAgICAgICAgIGJ1ZnNpeiArPSBNQVhQQVRITEVOOworICAgICAgICAgICAgYnVmID0gKHdjaGFyX3QqKVB5TWVtX1Jhd1JlYWxsb2MoYnVmLCAoYnVmc2l6ICsgMSkgKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKCFidWYpIHsKKyAgICAgICAgICAgICAgICBQeU1lbV9SYXdGcmVlKHdsaW5lKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgaWYgKGJ1ZlswXSkKKyAgICAgICAgICAgIHdjc2NhdF9zKGJ1ZiwgYnVmc2l6LCBMIjsiKTsKKworICAgICAgICB3Y2hhcl90ICpiID0gJmJ1Zlt3Y3NsZW4oYnVmKV07CisgICAgICAgIHdjc2NhdF9zKGJ1ZiwgYnVmc2l6LCBwcmVmaXgpOworICAgICAgICBqb2luKGIsIHdsaW5lKTsKKworICAgICAgICBQeU1lbV9SYXdGcmVlKHdsaW5lKTsKKyAgICB9CisKKyAgICBtb2R1bGVfc2VhcmNoX3BhdGggPSBidWY7CisKKyAgICBmY2xvc2Uoc3BfZmlsZSk7CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5TWVtX1Jhd0ZyZWUoYnVmKTsKKyAgICBmY2xvc2Uoc3BfZmlsZSk7CisgICAgcmV0dXJuIC0xOworfQorCisKIHN0YXRpYyB2b2lkCiBjYWxjdWxhdGVfcGF0aCh2b2lkKQogewpAQCAtNDkyLDMyICs2MjEsMzMgQEAKICAgICB3Y2hhcl90ICpweXRob25ob21lID0gUHlfR2V0UHl0aG9uSG9tZSgpOwogICAgIHdjaGFyX3QgKmVudnBhdGggPSBOVUxMOwogCi0jaWZkZWYgTVNfV0lORE9XUwogICAgIGludCBza2lwaG9tZSwgc2tpcGRlZmF1bHQ7CiAgICAgd2NoYXJfdCAqbWFjaGluZXBhdGggPSBOVUxMOwogICAgIHdjaGFyX3QgKnVzZXJwYXRoID0gTlVMTDsKICAgICB3Y2hhcl90IHppcF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgaW50IGFwcGxvY2FsID0gMDsKIAogICAgIGlmICghUHlfSWdub3JlRW52aXJvbm1lbnRGbGFnKSB7CiAgICAgICAgIGVudnBhdGggPSBfd2dldGVudihMIlBZVEhPTlBBVEgiKTsKICAgICB9Ci0jZWxzZQotICAgIGNoYXIgKl9lbnZwYXRoID0gUHlfR0VURU5WKCJQWVRIT05QQVRIIik7Ci0gICAgd2NoYXJfdCB3ZW52cGF0aFtNQVhQQVRITEVOKzFdOwotICAgIGlmIChfZW52cGF0aCkgewotICAgICAgICBzaXplX3QgciA9IG1ic3Rvd2NzKHdlbnZwYXRoLCBfZW52cGF0aCwgTUFYUEFUSExFTisxKTsKLSAgICAgICAgZW52cGF0aCA9IHdlbnZwYXRoOwotICAgICAgICBpZiAociA9PSAoc2l6ZV90KS0xIHx8IHIgPj0gTUFYUEFUSExFTikKLSAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOwotICAgIH0KLSNlbmRpZgogCiAgICAgZ2V0X3Byb2dwYXRoKCk7CiAgICAgLyogcHJvZ3BhdGggZ3VhcmFudGVlZCBcMCB0ZXJtaW5hdGVkIGluIE1BWFBBVEgrMSBieXRlcy4gKi8KICAgICB3Y3NjcHlfcyhhcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEsIHByb2dwYXRoKTsKICAgICByZWR1Y2UoYXJndjBfcGF0aCk7CiAKKyAgICAvKiBTZWFyY2ggZm9yIGEgc3lzLnBhdGggZmlsZSAqLworICAgIHsKKyAgICAgICAgd2NoYXJfdCBzcGJ1ZmZlcltNQVhQQVRITEVOKzFdOworCisgICAgICAgIGlmICgoZGxscGF0aFswXSAmJiAhY2hhbmdlX2V4dChzcGJ1ZmZlciwgZGxscGF0aCwgTCIuX3B0aCIpICYmIGV4aXN0cyhzcGJ1ZmZlcikpIHx8CisgICAgICAgICAgICAocHJvZ3BhdGhbMF0gJiYgIWNoYW5nZV9leHQoc3BidWZmZXIsIHByb2dwYXRoLCBMIi5fcHRoIikgJiYgZXhpc3RzKHNwYnVmZmVyKSkpIHsKKworICAgICAgICAgICAgaWYgKCFyZWFkX3B0aF9maWxlKHNwYnVmZmVyLCBwcmVmaXgsICZQeV9Jc29sYXRlZEZsYWcsICZQeV9Ob1NpdGVGbGFnKSkgeworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgIH0KKwogICAgIC8qIFNlYXJjaCBmb3IgYW4gZW52aXJvbm1lbnQgY29uZmlndXJhdGlvbiBmaWxlLCBmaXJzdCBpbiB0aGUKICAgICAgICBleGVjdXRhYmxlJ3MgZGlyZWN0b3J5IGFuZCB0aGVuIGluIHRoZSBwYXJlbnQgZGlyZWN0b3J5LgogICAgICAgIElmIGZvdW5kLCBvcGVuIGl0IGZvciB1c2Ugd2hlbiBzZWFyY2hpbmcgZm9yIHByZWZpeGVzLgpAQCAtNTQzLDE3ICs2NzMsNiBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICAgIGlmIChlbnZfZmlsZSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBMb29rIGZvciBhbiAnYXBwbG9jYWwnIHZhcmlhYmxlIGFuZCwgaWYgdHJ1ZSwgaWdub3JlIGFsbCByZWdpc3RyeQotICAgICAgICAgICAgICoga2V5cyBhbmQgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBidXQgcmV0YWluIHRoZSBkZWZhdWx0IHBhdGhzCi0gICAgICAgICAgICAgKiAoRExMcywgTGliKSBhbmQgdGhlIHppcCBmaWxlLiBTZXR0aW5nIHB5dGhvbmhvbWUgaGVyZSBzdXBwcmVzc2VzCi0gICAgICAgICAgICAgKiB0aGUgc2VhcmNoIGZvciBMQU5ETUFSSyBiZWxvdyBhbmQgb3ZlcnJpZGVzICVQWVRIT05IT01FJS4KLSAgICAgICAgICAgICAqLwotICAgICAgICAgICAgaWYgKGZpbmRfZW52X2NvbmZpZ192YWx1ZShlbnZfZmlsZSwgTCJhcHBsb2NhbCIsIHRtcGJ1ZmZlcikgJiYKLSAgICAgICAgICAgICAgICAoYXBwbG9jYWwgPSAod2NzaWNtcCh0bXBidWZmZXIsIEwidHJ1ZSIpID09IDApKSkgewotICAgICAgICAgICAgICAgIGVudnBhdGggPSBOVUxMOwotICAgICAgICAgICAgICAgIHB5dGhvbmhvbWUgPSBhcmd2MF9wYXRoOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgCiAgICAgICAgICAgICAvKiBMb29rIGZvciBhICdob21lJyB2YXJpYWJsZSBhbmQgc2V0IGFyZ3YwX3BhdGggdG8gaXQsIGlmIGZvdW5kICovCiAgICAgICAgICAgICBpZiAoZmluZF9lbnZfY29uZmlnX3ZhbHVlKGVudl9maWxlLCBMImhvbWUiLCB0bXBidWZmZXIpKSB7CiAgICAgICAgICAgICAgICAgd2NzY3B5X3MoYXJndjBfcGF0aCwgTUFYUEFUSExFTisxLCB0bXBidWZmZXIpOwpAQCAtNTYzLDggKzY4MiwxNSBAQAogICAgICAgICB9CiAgICAgfQogCisgICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggZnJvbSBETEwgb3IgZXhlIHBhdGggKi8KKyAgICBjaGFuZ2VfZXh0KHppcF9wYXRoLCBkbGxwYXRoWzBdID8gZGxscGF0aCA6IHByb2dwYXRoLCBMIi56aXAiKTsKKwogICAgIGlmIChweXRob25ob21lID09IE5VTEwgfHwgKnB5dGhvbmhvbWUgPT0gJ1wwJykgewotICAgICAgICBpZiAoc2VhcmNoX2Zvcl9wcmVmaXgoYXJndjBfcGF0aCwgTEFORE1BUkspKQorICAgICAgICBpZiAoemlwX3BhdGhbMF0gJiYgZXhpc3RzKHppcF9wYXRoKSkgeworICAgICAgICAgICAgd2NzY3B5X3MocHJlZml4LCBNQVhQQVRITEVOKzEsIHppcF9wYXRoKTsKKyAgICAgICAgICAgIHJlZHVjZShwcmVmaXgpOworICAgICAgICAgICAgcHl0aG9uaG9tZSA9IHByZWZpeDsKKyAgICAgICAgfSBlbHNlIGlmIChzZWFyY2hfZm9yX3ByZWZpeChhcmd2MF9wYXRoLCBMQU5ETUFSSykpCiAgICAgICAgICAgICBweXRob25ob21lID0gcHJlZml4OwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBweXRob25ob21lID0gTlVMTDsKQEAgLTU3NiwzMCArNzAyLDE1IEBACiAgICAgICAgIGVudnBhdGggPSBOVUxMOwogCiAKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgLyogQ2FsY3VsYXRlIHppcCBhcmNoaXZlIHBhdGggZnJvbSBETEwgb3IgZXhlIHBhdGggKi8KLSAgICBpZiAod2NzY3B5X3MoemlwX3BhdGgsIE1BWFBBVEhMRU4rMSwgZGxscGF0aFswXSA/IGRsbHBhdGggOiBwcm9ncGF0aCkpCi0gICAgICAgIC8qIGV4Y2VlZGVkIGJ1ZmZlciBsZW5ndGggLSBpZ25vcmUgemlwX3BhdGggKi8KLSAgICAgICAgemlwX3BhdGhbMF0gPSAnXDAnOwotICAgIGVsc2UgewotICAgICAgICB3Y2hhcl90ICpkb3QgPSB3Y3NyY2hyKHppcF9wYXRoLCAnLicpOwotICAgICAgICBpZiAoIWRvdCB8fCB3Y3NjcHlfcyhkb3QsIE1BWFBBVEhMRU4rMSAtIChkb3QgLSB6aXBfcGF0aCksIEwiLnppcCIpKQotICAgICAgICAgICAgLyogZXhjZWVkZWQgYnVmZmVyIGxlbmd0aCAtIGlnbm9yZSB6aXBfcGF0aCAqLwotICAgICAgICAgICAgemlwX3BhdGhbMF0gPSBMJ1wwJzsKLSAgICB9Ci0KICAgICBza2lwaG9tZSA9IHB5dGhvbmhvbWU9PU5VTEwgPyAwIDogMTsKICNpZmRlZiBQeV9FTkFCTEVfU0hBUkVECi0gICAgaWYgKCFhcHBsb2NhbCkgewotICAgICAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7Ci0gICAgICAgIHVzZXJwYXRoID0gZ2V0cHl0aG9ucmVncGF0aChIS0VZX0NVUlJFTlRfVVNFUiwgc2tpcGhvbWUpOwotICAgIH0KKyAgICBtYWNoaW5lcGF0aCA9IGdldHB5dGhvbnJlZ3BhdGgoSEtFWV9MT0NBTF9NQUNISU5FLCBza2lwaG9tZSk7CisgICAgdXNlcnBhdGggPSBnZXRweXRob25yZWdwYXRoKEhLRVlfQ1VSUkVOVF9VU0VSLCBza2lwaG9tZSk7CiAjZW5kaWYKICAgICAvKiBXZSBvbmx5IHVzZSB0aGUgZGVmYXVsdCByZWxhdGl2ZSBQWVRIT05QQVRIIGlmIHdlIGhhdmVudAogICAgICAgIGFueXRoaW5nIGJldHRlciB0byB1c2UhICovCiAgICAgc2tpcGRlZmF1bHQgPSBlbnZwYXRoIT1OVUxMIHx8IHB5dGhvbmhvbWUhPU5VTEwgfHwgXAogICAgICAgICAgICAgICAgICAgbWFjaGluZXBhdGghPU5VTEwgfHwgdXNlcnBhdGghPU5VTEw7Ci0jZW5kaWYKIAogICAgIC8qIFdlIG5lZWQgdG8gY29uc3RydWN0IGEgcGF0aCBmcm9tIHRoZSBmb2xsb3dpbmcgcGFydHMuCiAgICAgICAgKDEpIHRoZSBQWVRIT05QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlLCBpZiBzZXQ7CkBAIC02MTIsNyArNzIzLDYgQEAKICAgICAgICBFeHRyYSBydWxlczoKICAgICAgICAtIElmIFBZVEhPTkhPTUUgaXMgc2V0IChpbiBhbnkgd2F5KSBpdGVtICgzKSBpcyBpZ25vcmVkLgogICAgICAgIC0gSWYgcmVnaXN0cnkgdmFsdWVzIGFyZSB1c2VkLCAoNCkgYW5kICg1KSBhcmUgaWdub3JlZC4KLSAgICAgICAtIElmIGFwcGxvY2FsIGlzIHNldCwgKDEpLCAoMyksIGFuZCByZWdpc3RyeSB2YWx1ZXMgYXJlIGlnbm9yZWQKICAgICAqLwogCiAgICAgLyogQ2FsY3VsYXRlIHNpemUgb2YgcmV0dXJuIGJ1ZmZlciAqLwpAQCAtNjI5LDEzICs3MzksMTEgQEAKICAgICAgICAgYnVmc3ogPSAwOwogICAgIGJ1ZnN6ICs9IHdjc2xlbihQWVRIT05QQVRIKSArIDE7CiAgICAgYnVmc3ogKz0gd2NzbGVuKGFyZ3YwX3BhdGgpICsgMTsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFhcHBsb2NhbCAmJiB1c2VycGF0aCkKKyAgICBpZiAodXNlcnBhdGgpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbih1c2VycGF0aCkgKyAxOwotICAgIGlmICghYXBwbG9jYWwgJiYgbWFjaGluZXBhdGgpCisgICAgaWYgKG1hY2hpbmVwYXRoKQogICAgICAgICBidWZzeiArPSB3Y3NsZW4obWFjaGluZXBhdGgpICsgMTsKICAgICBidWZzeiArPSB3Y3NsZW4oemlwX3BhdGgpICsgMTsKLSNlbmRpZgogICAgIGlmIChlbnZwYXRoICE9IE5VTEwpCiAgICAgICAgIGJ1ZnN6ICs9IHdjc2xlbihlbnZwYXRoKSArIDE7CiAKQEAgLTY1MSwxMCArNzU5LDggQEAKICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiVXNpbmcgZGVmYXVsdCBzdGF0aWMgcGF0aC5cbiIpOwogICAgICAgICAgICAgbW9kdWxlX3NlYXJjaF9wYXRoID0gUFlUSE9OUEFUSDsKICAgICAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKICAgICAgICAgUHlNZW1fUmF3RnJlZShtYWNoaW5lcGF0aCk7CiAgICAgICAgIFB5TWVtX1Jhd0ZyZWUodXNlcnBhdGgpOwotI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNjY0LDcgKzc3MCw2IEBACiAgICAgICAgIGJ1ZiA9IHdjc2NocihidWYsIEwnXDAnKTsKICAgICAgICAgKmJ1ZisrID0gREVMSU07CiAgICAgfQotI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoemlwX3BhdGhbMF0pIHsKICAgICAgICAgaWYgKHdjc2NweV9zKGJ1ZiwgYnVmc3ogLSAoYnVmIC0gbW9kdWxlX3NlYXJjaF9wYXRoKSwgemlwX3BhdGgpKQogICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiYnVmZmVyIG92ZXJmbG93IGluIGdldHBhdGhwLmMncyBjYWxjdWxhdGVfcGF0aCgpIik7CkBAIC02OTIsMTUgKzc5Nyw3IEBACiAgICAgICAgICAgICBidWYgPSB3Y3NjaHIoYnVmLCBMJ1wwJyk7CiAgICAgICAgICAgICAqYnVmKysgPSBERUxJTTsKICAgICAgICAgfQotICAgIH0KLSNlbHNlCi0gICAgaWYgKHB5dGhvbmhvbWUgPT0gTlVMTCkgewotICAgICAgICB3Y3NjcHkoYnVmLCBQWVRIT05QQVRIKTsKLSAgICAgICAgYnVmID0gd2NzY2hyKGJ1ZiwgTCdcMCcpOwotICAgICAgICAqYnVmKysgPSBERUxJTTsKLSAgICB9Ci0jZW5kaWYgLyogTVNfV0lORE9XUyAqLwotICAgIGVsc2UgeworICAgIH0gZWxzZSB7CiAgICAgICAgIHdjaGFyX3QgKnAgPSBQWVRIT05QQVRIOwogICAgICAgICB3Y2hhcl90ICpxOwogICAgICAgICBzaXplX3QgbjsKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLmljbnMgYi9QQy9pY29ucy9sYXVuY2hlci5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YTkxN2YKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9sYXVuY2hlci5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLmljbyBiL1BDL2ljb25zL2xhdW5jaGVyLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGUzYzY5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL2xhdW5jaGVyLnN2ZyBiL1BDL2ljb25zL2xhdW5jaGVyLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTkwYjBkCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvbGF1bmNoZXIuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLXdoaXRle2ZpbGw6I2ZmZn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5ncmFwaC1saWdodGdyZXl7ZmlsbDojZGZkZmRmfS5zdDB7ZmlsbDojMDA3OGQ3fS5zdDF7ZmlsbDojZmZmfS5zdDJ7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qze2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDVINVYzaDI1djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjkuOTcyIDI2Ljk3Mkg1LjAyOVY1aC45NDJ2MjEuMDI4aDIzLjA1N1Y1aC45NDN2MjEuOTcyeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLW91dCIgZD0iTTI5IDV2MjFINlY1aDIzeiIvPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDRsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMy40aC0xLjJ2MS4yaDEuMlYzLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJncmFwaC1saWdodGdyZXkiIGQ9Ik02IDVoMjN2Mkg2eiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNC41IDIzdjYiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMTEuNDI5IDEzLjAxOWExOS44OCAxOS44OCAwIDAgMCAuMDcxLTEuNjQ1YzAtNC4yMjMtMS4zMjktOC4xNjUtMy41NTYtMTAuNTQ1TDcuMTcgMEg1LjgzbC0uNzc0LjgyOUMyLjgyOSAzLjIwOSAxLjUgNy4xNTEgMS41IDExLjM3NGMwIC40NTMuMDIzLjkuMDUzIDEuMzQ1Qy44ODcgMTMuNDcyLjM1NyAxNC40MzggMCAxNS41MzN2Ni42MDNMLjIyOSAyM0gzdjdoMnYyaDN2LTFoMnYtOGgyLjc3MmwuMzk0LTEuNDg4Yy4yMjItLjg0Mi4zMzUtMS43MTQuMzM1LTIuNTkyLS4wMDEtMi40MTktLjgwMy00LjUzNC0yLjA3Mi01LjkwMXoiLz48cGF0aCBjbGFzcz0ic3QwIiBkPSJNNi41IDIydjlNOC41IDIzdjciLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNNSAyOUg0di02aDF2NnptMi02SDZ2OGgxdi04em0yIDBIOHY3aDF2LTd6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMTAuMzgxIDEzLjM4Yy4wNy0uNjU4LjExOS0xLjMyNS4xMTktMi4wMDYgMC0zLjk3NS0xLjIyOS03LjY2Mi0zLjI4Ni05Ljg2Mkw2LjUuNzQ4bC0uNzE0Ljc2M0MzLjcyOSAzLjcxMiAyLjUgNy4zOTkgMi41IDExLjM3NGMwIC42ODEuMDQ5IDEuMzQ4LjExOSAyLjAwNkMxLjMzOSAxNC41MjEuNSAxNi41NTIuNSAxOC45MmMwIC43OTMuMTAyIDEuNTc4LjMwMiAyLjMzNkwuOTk5IDIyaDEuOTY2bC4wNzItLjkyMmMuMDgxLTEuMDQ2LjQ3MS0xLjk2Ni45OTMtMi41MDMuNDg3IDEuMDE5IDEuMDcgMS45MjkgMS43NTYgMi42NjJMNi41IDIybC43MTQtLjc2M2MuNjg2LS43MzMgMS4yNjktMS42NDMgMS43NTYtMi42NjIuNTIyLjUzNy45MTIgMS40NTcuOTkzIDIuNTAzbC4wNzIuOTIyaDEuOTY2bC4xOTctLjc0NGMuMi0uNzU4LjMwMi0xLjU0My4zMDItMi4zMzYgMC0yLjM2OC0uODM5LTQuMzk5LTIuMTE5LTUuNTR6Ii8+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMy42MTkgMTcuNjE1Yy0uODU0LjY3Mi0xLjQ2NCAxLjkxMy0xLjU3OSAzLjM4NWgtLjI3MmE4LjE4NCA4LjE4NCAwIDAgMS0uMjY4LTIuMDhjMC0xLjcyMi41MDUtMy4yNTkgMS4yOTctNC4yNzIuMTg3IDEuMDUuNDY1IDIuMDQ1LjgyMiAyLjk2N3ptNi41ODUtMi45NjdhMTYuMTQ1IDE2LjE0NSAwIDAgMS0uODIyIDIuOTY3Yy44NTQuNjcxIDEuNDY0IDEuOTEzIDEuNTc5IDMuMzg1aC4yNzJhOC4xODQgOC4xODQgMCAwIDAgLjI2OC0yLjA4Yy0uMDAxLTEuNzIyLS41MDYtMy4yNTktMS4yOTctNC4yNzJ6TTMuNSAxMS4zNzRjMCAzLjgzNyAxLjE5OCA3LjIgMyA5LjEyOCAxLjgwMi0xLjkyNyAzLTUuMjkxIDMtOS4xMjhzLTEuMTk4LTcuMi0zLTkuMTI4Yy0xLjgwMiAxLjkyOC0zIDUuMjkxLTMgOS4xMjh6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTcuNSA3YTEgMSAwIDEgMS0yIDAgMSAxIDAgMCAxIDIgMHoiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS41OTYgMjMuOTYxYy0uMzUgMS4wNTMtMS4wMDEgMy4wMTUtMy4yNDcgMy4wMTVoLTEuM3YxLjMzN2MwIC45MDUtLjM5MiAyLjUzNy0zLjAyMSAzLjI5OGE5LjIxMyA5LjIxMyAwIDAgMS0yLjU5LjM5Yy0uODMgMC0xLjY2OC0uMTI4LTIuNTY0LS4zOTItMS45MTgtLjU2My0zLjAxNy0xLjc2NS0zLjAxNy0zLjI5NnYtMS4zMzdoLTEuMTU1Yy0xLjY5OCAwLTIuOTQzLTEuMTI5LTMuNDE2LTMuMDk4LS40NjktMS45NDYtLjQ2OS0zLjE5NSAwLTUuMTQxLjQ1MS0xLjg4MSAxLjk2LTMuMDk4IDMuODQ1LTMuMDk4aC43MjZ2LTEuMzM3YzAtMi4wMDUuOTA1LTIuOTgyIDMuMTI2LTMuMzc0LjcyOS0uMTMgMS41NDktLjIgMi4zNjctLjIwM2guMDA0Yy45MjUgMCAxLjc2MS4wNjcgMi41Ni4yMDEgMS44MTYuMzAzIDMuMTM0IDEuNzIzIDMuMTM0IDMuMzc2djEuMzM3aDEuM2MxLjE0MiAwIDIuNjM2LjUzNiAzLjI3IDMuMDkyLjUxNiAyLjA3My41MSAzLjYzNy0uMDIyIDUuMjN6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF83XyIgY2xhc3M9InN0MiIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwNyAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfN18iIGNsYXNzPSJzdDMiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NEgyOC4zNDhjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LmljbnMgYi9QQy9pY29ucy9weS5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkYzRlMjkKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weS5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LmljbyBiL1BDL2ljb25zL3B5LmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDhhNzliCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5LnN2ZyBiL1BDL2ljb25zL3B5LnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTI0ZTgzCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHkuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLXZzby1iZ3tmaWxsOiM2NTY1NjV9Lmljb24tdnNvLWxpZ2h0Z3JleXtmaWxsOiNiZmJmYmZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMjYgOC4wMDlWMjlIN1YzaDE0LjA1M0wyNiA4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxwYXRoIGNsYXNzPSJpY29uLXZzby1saWdodGdyZXkiIGQ9Ik0xNyA3SDlWNmg4djF6bTAgMkg5djFoOFY5em03IDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xem0wIDNIOXYxaDE1di0xeiIgaWQ9Imljb25GZyIvPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNjYgMjQuMDYzQzMxLjMxMiAyNS4xMTYgMzAuNjYxIDI3IDI4LjQxMyAyN0gyN3YxLjMxM2MwIC45MDUtLjMzNSAyLjUzNy0yLjk2NSAzLjI5OC0uOTA0LjI2MS0xLjY5NC4zODktMi41MzEuMzg5LS44MyAwLTEuNjMtLjEyOC0yLjUyNi0uMzkyQzE3LjA2MSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yMzJjLTEuNjk5IDAtMi45NDQtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44NjYtMi44NDUgMy4wODctMy4yMzguNzI3LS4xMjggMS41MDYtLjA2NSAyLjMyNy0uMDY1aC4wMDNjLjkyMSAwIDEuNzAzLS4wNyAyLjUwNC4wNjQgMS44MTguMzAyIDMuMDc5IDEuNTg1IDMuMDc5IDMuMjM5VjE2aDEuNDEzYzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OS0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjMyIiB5MT0iLTI4OC42NjgiIHgyPSI1NDEuMDE3IiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF8yXyIgY2xhc3M9InN0MCIgZD0iTTIxLjQxOSAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg3IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODctLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4yNDUiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS41NjkiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzJfIiBjbGFzcz0ic3QxIiBkPSJNMjYuNjg3IDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NkgyMS41MnYtLjU4NEgyOC40MTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTgzIDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OWMwLS40ODQuMzg4LS44NzQuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5pY25zIGIvUEMvaWNvbnMvcHljLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBkYTlhMQotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5Yy5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5pY28gYi9QQy9pY29ucy9weWMuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc0ZGRlODEKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5Yy5zdmcgYi9QQy9pY29ucy9weWMuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjM2U5ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWMuc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi12c28tYmd7ZmlsbDojNjU2NTY1fS5pY29uLXZzLWJne2ZpbGw6IzQyNDI0Mn0uaWNvbi12cy1ncmVlbntmaWxsOiMzOTN9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtYmciIGQ9Ik0yMS4wNTMgM0g3djI2aDE5VjguMDA5eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzby1iZyIgZD0iTTIxLjQ3MSAySDZ2MjhoMjFWNy41OTlMMjEuNDcxIDJ6TTIxIDNoLjA1M2w0LjkzOSA1SDIxVjN6bTUgMjZIN1YzaDEzdjZoNnYyMHoiLz48L2c+PHBhdGggY2xhc3M9Imljb24tdnMtZ3JlZW4iIGQ9Ik0xMCAxNkg5di0xaDF2MXptMS4wMTEgNUg5djFoMi4wMzJhOC4zNjggOC4zNjggMCAwIDEtLjAyMS0xek0xNCAxMGgyVjloLTJ2MXptLTMtNEg5djFoMlY2em0wIDZIOXYxaDJ2LTF6bTItM0g5djFoNFY5em00LTN2MWgxVjZoLTF6bS0zIDZoLTJ2MWgydi0xem0xLTZoLTJ2MWgyVjZ6bS00IDEwaDF2LTFoLTF2MXptNC00djFoMnYtMWgtMnptLTIgNGgzdi0xaC0zdjF6bS00IDJ2MWgzdi0xSDl6bTAgNnYxaDN2LTFIOXoiIGlkPSJpY29uRmciLz48ZyBpZD0iY29sb3JJbXBvcnRhbmNlIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTMxLjY2IDI0LjA2M0MzMS4zMTIgMjUuMTE2IDMwLjY2MSAyNyAyOC40MTMgMjdIMjd2MS4zMTNjMCAuOTA1LS4zMzUgMi41MzctMi45NjUgMy4yOTgtLjkwNC4yNjEtMS42OTQuMzg5LTIuNTMxLjM4OS0uODMgMC0xLjYzLS4xMjgtMi41MjYtLjM5MkMxNy4wNjEgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjMyYy0xLjY5OSAwLTIuOTQ0LTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODY2LTIuODQ1IDMuMDg3LTMuMjM4LjcyNy0uMTI4IDEuNTA2LS4wNjUgMi4zMjctLjA2NWguMDAzYy45MjEgMCAxLjcwMy0uMDcgMi41MDQuMDY0IDEuODE4LjMwMiAzLjA3OSAxLjU4NSAzLjA3OSAzLjIzOVYxNmgxLjQxM2MxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4zMiIgeTE9Ii0yODguNjY4IiB4Mj0iNTQxLjAxNyIgeTI9Ii0zMDQuNzU0IiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjNWE5ZmQ0Ii8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjMzA2OTk4Ii8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NDhfNF8iIGNsYXNzPSJzdDAiIGQ9Ik0yMS40MTkgMTEuNzI1Yy0uNzg2LjAwNC0xLjUzNy4wNzEtMi4xOTcuMTg4LTEuOTQ2LjM0NC0yLjI5OSAxLjA2My0yLjI5OSAyLjM5djEuNzUzaDQuNTk4di41ODRoLTYuMzI0Yy0xLjMzNiAwLTIuNTA3LjgwMy0yLjg3MyAyLjMzMS0uNDIyIDEuNzUxLS40NDEgMi44NDQgMCA0LjY3My4zMjcgMS4zNjEgMS4xMDggMi4zMzEgMi40NDQgMi4zMzFoMS41ODF2LTIuMTAxYzAtMS41MTggMS4zMTMtMi44NTcgMi44NzMtMi44NTdoNC41OTNjMS4yNzggMCAyLjI5OS0xLjA1MyAyLjI5OS0yLjMzN3YtNC4zNzljMC0xLjI0Ni0xLjA1MS0yLjE4Mi0yLjI5OS0yLjM5LS43OS0uMTMtMS42MS0uMTg5LTIuMzk2LS4xODZ6bS0yLjQ4NyAxLjQxYy40NzUgMCAuODYzLjM5NC44NjMuODc5YS44Ny44NyAwIDAgMS0uODYzLjg3NC44NjguODY4IDAgMCAxLS44NjMtLjg3NGMwLS40ODUuMzg3LS44NzkuODYzLS44Nzl6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk1MF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1NDguMjQ1IiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNTY5IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF80XyIgY2xhc3M9InN0MSIgZD0iTTI2LjY4NyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZIMjEuNTJ2LS41ODRIMjguNDEyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4MyAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzljMC0uNDg0LjM4OC0uODc0Ljg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuaWNucyBiL1BDL2ljb25zL3B5ZC5pY25zCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkM2QyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weWQuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuaWNvIGIvUEMvaWNvbnMvcHlkLmljbwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZjZjYjYwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weWQuc3ZnIGIvUEMvaWNvbnMvcHlkLnN2ZwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2VmZjZhCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvcHlkLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12cy1vdXR7ZmlsbDojZjZmNmY2fS5pY29uLWYxMi1ob3Zlci1iZ3tmaWxsOiNkOWViZjd9Lmljb24tZjEyLWx0Z3JleS1kaXNhYmxlZHtmaWxsOiNhYmFiYWN9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDojOWNhMmE3fS5zdDF7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qye2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdnMtb3V0IiBkPSJNMjEuMDUzIDNIN3YyNmgxOVY4LjAwOXoiLz48cGF0aCBjbGFzcz0iaWNvbi12c28tYmciIGQ9Ik0yMS40NzEgMkg2djI4aDIxVjcuNTk5TDIxLjQ3MSAyek0yMSAzaC4wNTNsNC45MzkgNUgyMVYzem01IDI2SDdWM2gxM3Y2aDZ2MjB6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJzdDAiIGQ9Ik0xMy43ODQgMTcuNzA1Yy0xLjI5NiAwLTIuMzUtMS4wNTQtMi4zNS0yLjM1czEuMDU0LTIuMzUgMi4zNS0yLjM1IDIuMzUgMS4wNTQgMi4zNSAyLjM1LTEuMDU0IDIuMzUtMi4zNSAyLjM1em0wLTQuNWMtMS4xODYgMC0yLjE1Ljk2NC0yLjE1IDIuMTVzLjk2NCAyLjE1MSAyLjE1IDIuMTUxIDIuMTUtLjk2NSAyLjE1LTIuMTUxLS45NjQtMi4xNS0yLjE1LTIuMTV6Ii8+PHBhdGggY2xhc3M9Imljb24tZjEyLWhvdmVyLWJnIiBkPSJNMTguMDUgMTYuMTIyYy4wMTYtLjA2OS4wMzEtLjEzOS4wNDMtLjIwOWwxLjM3Ni0uNjE4LS4xMDMtMS4wMTUtMS40Ny0uMzNjLS4wMjUtLjA2OC0uMDU2LS4xMzQtLjA4Ni0uMTk5bC0uMDI2LS4wNTYuODkyLTEuMjM2LS41OTUtLjgyNy0xLjQ1LjQ1M2MtLjA2OS0uMDYxLS4xNDEtLjExOC0uMjEzLS4xNzVsLjE1MS0xLjUxMS0uOTI5LS40MTgtMS4wMzIgMS4xMjEtLjA1Ni0uMDEzYTMuMDg5IDMuMDg5IDAgMCAwLS4yMTctLjA0NWwtLjYxOC0xLjM3NC0xLjAxNS4xMDQtLjMyOSAxLjQ3MmMtLjA0OS4wMTktLjA5Ni4wNC0uMTQzLjA2M2wtLjA1Ni4wMjUtMS4yMjUtLjkwNy0uODM1LjU4Ni40MzUgMS40NTdjLS4wNi4wNjctLjEyMy4xMzgtLjE4Mi4yMTJsLTEuNTA2LS4xNzItLjQyOS45MjVMOS41NCAxNC40OGwtLjAwNS4wMjRhNC4xMjcgNC4xMjcgMCAwIDAtLjA1MS4yNDZsLTEuMzg3LjYwNi4wOTIgMS4wMTUgMS40NjMuMzQ2Yy4wMjQuMDY3LjA1NS4xMzIuMDg0LjE5NGwuMDMuMDY3LS44NiAxLjE3LS4wNDIuMDU5LjU4OC44MzIgMS40NTYtLjQ0Yy4wNy4wNjMuMTM4LjEyMi4yMDkuMTc4bC0uMTY3IDEuNTA4LjkyNi40MjdMMTIuOTIgMTkuNmwuMDQ4LjAxYy4wNzQuMDE3LjE0OS4wMzQuMjI2LjA0NmwuNjA5IDEuMzg1IDEuMDE1LS4wOTUuMzQyLTEuNDY2Yy4wNzUtLjAyNy4xNDctLjA2MS4yMTYtLjA5M2wuMDY3LS4wMzEgMS4yMzUuODkyLjgyNy0uNTk1LS40NTItMS40NWMuMDYyLS4wNzEuMTItLjE0Mi4xNzYtLjIxNWwxLjUxMi4xNTEuNDE4LS45MjktMS4xMjItMS4wMzMuMDEzLS4wNTV6bS00LjI2NiAxLjU4M2MtMS4yOTYgMC0yLjM1LTEuMDU0LTIuMzUtMi4zNXMxLjA1NC0yLjM1IDIuMzUtMi4zNSAyLjM1IDEuMDU0IDIuMzUgMi4zNS0xLjA1NCAyLjM1LTIuMzUgMi4zNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItbHRncmV5LWRpc2FibGVkIiBkPSJNMTMuODAzIDIxLjA0bC0uNjA5LTEuMzg0YTMuMDggMy4wOCAwIDAgMS0uMjM2LS4wNDhsLS4wMzgtLjAwOC0xLjA0MyAxLjExMS0uOTI1LS40MjcuMTY3LTEuNTA3YTQuMDEzIDQuMDEzIDAgMCAxLS4yMDktLjE3OWwtMS40NTYuNDM5LS41ODgtLjgzMi45MDItMS4yMjgtLjAzMy0uMDcyYy0uMDI4LS4wNjEtLjA1OC0uMTI0LS4wODItLjE5bC0xLjQ2My0uMzQ0LS4wOTEtMS4wMTUgMS4zODctLjYwNWMuMDEyLS4wNzguMDMtLjE1NC4wNDctLjIzMWwuMDA5LS4wMzktMS4xMDktMS4wNDUuNDI4LS45MjUgMS41MDcuMTdjLjA1OC0uMDcyLjExOC0uMTQuMTgzLS4yMTFsLS40MzUtMS40NTguODM0LS41ODUgMS4yMjUuOTA3LjA1Mi0uMDI0Yy4wNDgtLjAyMi4wOTctLjA0NC4xNDctLjA2M2wuMzI5LTEuNDczIDEuMDE0LS4xMDQuNjIgMS4zNzVhMi4zODkgMi4zODkgMCAwIDEgLjI3MS4wNThsMS4wMzItMS4xMjIuOTMuNDE4LS4xNTMgMS41MTFjLjA3My4wNTUuMTQzLjExMy4yMTQuMTc0bDEuNDUtLjQ1My41OTUuODI3LS44OTIgMS4yMzZhLjguOCAwIDAgMSAuMDI0LjA1M2MuMDMuMDY0LjA2Mi4xMzEuMDg3LjIwMWwxLjQ3MS4zMzIuMTAzIDEuMDE0LTEuMzc2LjYxOGMtLjAxMi4wNzEtLjAyNy4xNC0uMDQzLjIwOGwtLjAxNC4wNTggMS4xMjIgMS4wMzMtLjQxOS45MjktMS41MTEtLjE1MmEzLjg1MSAzLjg1MSAwIDAgMS0uMTc2LjIxNWwuNDUyIDEuNDUtLjgyNy41OTUtMS4yMzYtLjg5Mi0uMDcuMDMyYTIuOTQgMi45NCAwIDAgMS0uMjEyLjA5MmwtLjM0MSAxLjQ2NS0xLjAxNS4wOTV6bS0uOTUxLTEuNjZsLjE1MS4wMzNjLjA4OS4wMjEuMTc5LjA0Mi4yNzIuMDUzbC4wNTYuMDA3LjU5NyAxLjM1NC43MjgtLjA2Ny4zMzMtMS40MzUuMDU0LS4wMThjLjA4My0uMDI1LjE2MS0uMDYyLjI0NC0uMTAxLjA0Mi0uMDIuMDg0LS4wMzkuMTI3LS4wNTdsLjA1Mi0uMDIyIDEuMjExLjg3NC41OTMtLjQyNy0uNDQyLTEuNDIxLjAzOC0uMDQzYy4wODUtLjA5NC4xNjMtLjE4OC4yMzYtLjI4OGwuMDMzLS4wNDYgMS40OC4xNS4zLS42NjctMS4wOTktMS4wMTIuMDEyLS4wNTUuMDI1LS4xMTdjLjAxOS0uMDguMDM3LS4xNi4wNDctLjI0NGwuMDA3LS4wNTYgMS4zNDgtLjYwNS0uMDczLS43MjgtMS40NDEtLjMyNC0uMDE4LS4wNTVjLS4wMjUtLjA4MS0uMDYxLS4xNTctLjA5Ni0uMjMzYTIuMTQ1IDIuMTQ1IDAgMCAxLS4wNS0uMTA5bC0uMDIyLS4wNTIuODc0LTEuMjEyLS40MjctLjU5My0xLjQyLjQ0My0uMDQyLS4wMzhhMy44OTYgMy44OTYgMCAwIDAtLjI4OC0uMjM1TDE2LjIwNyAxMmwuMTQ5LTEuNDgtLjY2Ny0uMy0xLjAxMiAxLjEtLjA1Ni0uMDExYy0uMDQtLjAwOC0uMDgtLjAxOC0uMTE5LS4wMjctLjA4Mi0uMDE5LS4xNjItLjAzOC0uMjQ2LS4wNDhsLS4wNTYtLjAwNS0uNjA3LTEuMzQ2LS43MjcuMDc0LS4zMjMgMS40NDEtLjA1NC4wMThjLS4wNjMuMDItLjEyMS4wNDctLjE4LjA3NC0uMDM3LjAxNy0uMDczLjAzNC0uMTExLjA0OWwtLjA1Mi4wMjItMS4yLS44OS0uNTk5LjQyLjQyNiAxLjQyOS0uMDM4LjA0MmE0LjA3IDQuMDcgMCAwIDAtLjI0NC4yODRsLS4wMzQuMDQ1LTEuNDc2LS4xNjctLjMwNy42NjMgMS4wODYgMS4wMjQtLjAzNC4xNTFjLS4wMi4wODktLjA0MS4xNzctLjA1Mi4yNjlsLS4wMDcuMDU2LTEuMzU4LjU5My4wNjYuNzI4IDEuNDMxLjMzNy4wMTcuMDU1Yy4wMjQuMDc3LjA1OC4xNDguMDkxLjIyLjAyMS4wNDMuMDQxLjA4Ni4wNTkuMTMxbC4wMjIuMDUyLS44ODUgMS4yMDMuNDIyLjU5OCAxLjQyNi0uNDMyLjA0Mi4wMzhjLjA4My4wNzUuMTc5LjE2My4yODIuMjRsLjA0NS4wMzUtLjE2MyAxLjQ3Ni42NjQuMzA2IDEuMDI0LTEuMDg3ek0yMC45MTggMjIuOTcyYTEuMzUgMS4zNSAwIDEgMSAuMDAxLTIuNjk5IDEuMzUgMS4zNSAwIDAgMS0uMDAxIDIuNjk5em0wLTIuNWMtLjYzNCAwLTEuMTUuNTE3LTEuMTUgMS4xNXMuNTE3IDEuMTUgMS4xNSAxLjE1IDEuMTUtLjUxNyAxLjE1LTEuMTUtLjUxNi0xLjE1LTEuMTUtMS4xNXoiLz48cGF0aCBjbGFzcz0iaWNvbi1mMTItaG92ZXItYmciIGQ9Ik0yNC45MDEgMjIuMDI4di0uODEybC0xLjI2OS0uNDIzYTIuNzQ3IDIuNzQ3IDAgMCAwLS4yMS0uNTA1bC41OTktMS4xOTYtLjU3NC0uNTc0LTEuMTk2LjU5OWEyLjgxIDIuODEgMCAwIDAtLjUwNS0uMjA5bC0uNDIzLTEuMjY4aC0uODExbC0uNDIzIDEuMjY4YTIuODEgMi44MSAwIDAgMC0uNTA1LjIwOWwtMS4xOTctLjU5OS0uNTczLjU3NC41OTkgMS4xOTZhMi43NDcgMi43NDcgMCAwIDAtLjIxLjUwNWwtMS4yNjguNDIzdi44MTJsMS4yNjguNDIyYy4wNTQuMTc1LjEyNC4zNDUuMjEuNTA2bC0uNTk5IDEuMTk2LjU3My41NzQgMS4xOTctLjZjLjE2MS4wODcuMzMxLjE1Ny41MDUuMjFsLjQyMyAxLjI2OWguODExbC40MjMtMS4yNjljLjE3NC0uMDUzLjM0My0uMTIzLjUwNS0uMjFsMS4xOTYuNi41NzQtLjU3NC0uNTk5LTEuMTk2Yy4wODYtLjE2MS4xNTYtLjMzMS4yMS0uNTA2bDEuMjY5LS40MjJ6bS0zLjk4My45NDNjLS43NDQgMC0xLjM1LS42MDYtMS4zNS0xLjM1IDAtLjc0NC42MDUtMS4zNSAxLjM1LTEuMzUuNzQ0IDAgMS4zNS42MDUgMS4zNSAxLjM1IDAgLjc0NS0uNjA2IDEuMzUtMS4zNSAxLjM1eiIvPjxwYXRoIGNsYXNzPSJpY29uLWYxMi1sdGdyZXktZGlzYWJsZWQiIGQ9Ik0yMS4zMjMgMjUuNjA0aC0uODExbC0uNDIzLTEuMjY5YTIuODE0IDIuODE0IDAgMCAxLS41MDUtLjIwOWwtMS4xOTcuNTk5LS41NzMtLjU3NC41OTktMS4xOTZhMi43NDcgMi43NDcgMCAwIDEtLjIxLS41MDVsLTEuMjY5LS40MjN2LS44MTJsMS4yNjktLjQyMmMuMDU0LS4xNzUuMTI0LS4zNDUuMjEtLjUwNmwtLjU5OS0xLjE5Ni41NzMtLjU3MyAxLjE5Ny41OTljLjE2MS0uMDg3LjMzMS0uMTU3LjUwNS0uMjFsLjQyMy0xLjI2OWguODExbC40MjMgMS4yNjljLjE3NC4wNTMuMzQ0LjEyMy41MDUuMjFsMS4xOTYtLjU5OS41NzQuNTczLS41OTkgMS4xOTZjLjA4Ni4xNjEuMTU2LjMzMS4yMS41MDZsMS4yNjkuNDIydi44MTJsLTEuMjY5LjQyM2EyLjc0NyAyLjc0NyAwIDAgMS0uMjEuNTA1bC41OTkgMS4xOTYtLjU3NC41NzQtMS4xOTYtLjU5OWEyLjgxNCAyLjgxNCAwIDAgMS0uNTA1LjIwOWwtLjQyMyAxLjI2OXptLS42NjYtLjE5OWguNTIxbC40MTEtMS4yMzIuMDUxLS4wMTVjLjE5My0uMDU0LjM4Mi0uMTMyLjU2LS4yMzFsLjA0Ni0uMDI2IDEuMTYyLjU4MS4zNjktLjM2OS0uNTgtMS4xNjIuMDI2LS4wNDZjLjA5OS0uMTc4LjE3Ny0uMzY2LjIzMi0uNTZsLjAxNC0uMDUxIDEuMjMyLS40MTF2LS41MjNsLTEuMjMyLS40MS0uMDE0LS4wNTFhMi44MSAyLjgxIDAgMCAwLS4yMzItLjU2MWwtLjAyNi0uMDQ2LjU4LTEuMTYyLS4zNjktLjM2OC0xLjE2Mi41OC0uMDQ2LS4wMjZhMi42MjcgMi42MjcgMCAwIDAtLjU2LS4yMzJsLS4wNS0uMDE0LS40MTEtMS4yMzJoLS41MjFsLS40MTEgMS4yMzItLjA1MS4wMTRhMi43NTggMi43NTggMCAwIDAtLjU2LjIzMmwtLjA0Ni4wMjYtMS4xNjMtLjU4LS4zNjguMzY4LjU4IDEuMTYyLS4wMjYuMDQ2YTIuNjc1IDIuNjc1IDAgMCAwLS4yMzIuNTYxbC0uMDE0LjA1MS0xLjIzMi40MXYuNTIybDEuMjMyLjQxMS4wMTQuMDUxYy4wNTYuMTkzLjEzNC4zODIuMjMyLjU2bC4wMjYuMDQ2LS41OCAxLjE2Mi4zNjguMzY5IDEuMTYzLS41ODEuMDQ2LjAyNmMuMTc4LjEuMzY2LjE3OC41Ni4yMzFsLjA1MS4wMTUuNDEgMS4yMzN6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNjYgMjQuMDYzQzMxLjMxMiAyNS4xMTYgMzAuNjYxIDI3IDI4LjQxMyAyN0gyN3YxLjMxM2MwIC45MDUtLjMzNSAyLjUzNy0yLjk2NSAzLjI5OC0uOTA0LjI2MS0xLjY5NC4zODktMi41MzEuMzg5LS44MyAwLTEuNjMtLjEyOC0yLjUyNi0uMzkyQzE3LjA2MSAzMS4wNDUgMTYgMjkuODQ0IDE2IDI4LjMxM1YyN2gtMS4yMzJjLTEuNjk5IDAtMi45NDQtMS4xNDEtMy40MTYtMy4xMS0uNDY5LTEuOTQ2LS40NjktMy4wMjEgMC00Ljk2Ny40NTEtMS44ODEgMS45Ni0yLjkyMyAzLjg0NS0yLjkyM0gxNnYtMS42OTdjMC0yLjAwNS44NjYtMi44NDUgMy4wODctMy4yMzguNzI3LS4xMjggMS41MDYtLjA2NSAyLjMyNy0uMDY1aC4wMDNjLjkyMSAwIDEuNzAzLS4wNyAyLjUwNC4wNjQgMS44MTguMzAyIDMuMDc5IDEuNTg1IDMuMDc5IDMuMjM5VjE2aDEuNDEzYzEuMTQyIDAgMi42MzYuMzU2IDMuMjcgMi45MTIuNTE1IDIuMDcyLjUwOSAzLjU1OC0uMDIzIDUuMTUxeiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NDhfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTIyLjMyIiB5MT0iLTI4OC42NjgiIHgyPSI1NDEuMDE3IiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF81XyIgY2xhc3M9InN0MSIgZD0iTTIxLjQxOSAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OCAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg3IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODctLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4yNDUiIHkxPSItMzE0LjQ4OSIgeDI9IjU0MS41NjkiIHkyPSItMzA1LjA0MyIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iI2ZmZDQzYiIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iI2ZmZTg3MyIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTUwXzVfIiBjbGFzcz0ic3QyIiBkPSJNMjYuNjg3IDE2LjY0djIuMDQyYzAgMS41ODMtMS4zNDIgMi45MTUtMi44NzMgMi45MTVoLTQuNTkzYy0xLjI1OCAwLTIuMjk5IDEuMDc3LTIuMjk5IDIuMzM3djQuMzc5YzAgMS4yNDYgMS4wODQgMS45NzkgMi4yOTkgMi4zMzcgMS40NTYuNDI4IDIuODUxLjUwNSA0LjU5MyAwIDEuMTU4LS4zMzUgMi4yOTktMS4wMSAyLjI5OS0yLjMzN1YyNi41NkgyMS41MnYtLjU4NEgyOC40MTJjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTgzIDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OWMwLS40ODQuMzg4LS44NzQuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5pY25zIGIvUEMvaWNvbnMvcHl0aG9uLmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmM1M2UwMgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbi5pY25zCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5pY28gYi9QQy9pY29ucy9weXRob24uaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4YTM4ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uaWNvCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL2ljb25zL3B5dGhvbi5zdmcgYi9QQy9pY29ucy9weXRob24uc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyM2U1YTMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob24uc3ZnCkBAIC0wLDAgKzEgQEAKKzxzdmcgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB2aWV3Qm94PSIwIDAgMzIgMzIiPjxzdHlsZT4uaWNvbi1jYW52YXMtdHJhbnNwYXJlbnR7b3BhY2l0eTowO2ZpbGw6I2Y2ZjZmNn0uaWNvbi13aGl0ZXtmaWxsOiNmZmZ9Lmljb24tdnNvLWJne2ZpbGw6IzY1NjU2NX0uaWNvbi12aXN1YWxzdHVkaW8tb25saW5le2ZpbGw6IzAwN2FjY30uaWNvbi12cy1iZ3tmaWxsOiM0MjQyNDJ9Lmljb24tdnMtZ3JlZW57ZmlsbDojMzkzfS5zdDB7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qxe2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDRIMlYyaDI4djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdnNvLWJnIiBkPSJNMjkgNHYyMUgzVjRIMnYyMmgyOFY0eiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLWJnIiBkPSJNMTAgNEgzdjIxaDI2VjR6Ii8+PC9nPjxnIGlkPSJpY29uRmciPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMjkuMTQxIDNsLjQyOS40MjktLjE0LjE0Mi0uNDMtLjQzLS40My40My0uMTQtLjE0Mi40MjktLjQyOS0uNDI5LS40MjkuMTQxLS4xNDIuNDI5LjQzLjQzLS40My4xNDEuMTQyLS40My40Mjl6TTI3LjYgMi40aC0xLjJ2MS4yaDEuMlYyLjR6bS0xIC4yaC44di44aC0uOHYtLjh6bS0xLjEzOS44aC0xdi4yaDF2LS4yeiIvPjxwYXRoIGNsYXNzPSJpY29uLXZzLWdyZWVuIiBkPSJNMTYgMTRINXYtMWgxMS4wMzFjLS4wMTQuMDQ0LS4wMzEgMS0uMDMxIDF6bS00LTVINXYxaDdWOXptLTcgOHYxaDh2LTFINXoiLz48L2c+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0zMS41OTYgMjQuMDYzQzMxLjI0NiAyNS4xMTYgMzAuNTk1IDI3IDI4LjM0OSAyN0gyN3YxLjMxM2MwIC45MDUtLjM2OCAyLjUzNy0yLjk5NiAzLjI5OC0uOTA0LjI2MS0xLjcyOC4zODktMi41NjYuMzg5LS44MyAwLTEuNTk3LS4xMjgtMi40OTItLjM5MkMxNy4wMjkgMzEuMDQ1IDE2IDI5Ljg0NCAxNiAyOC4zMTNWMjdoLTEuMjk3Yy0xLjY5OCAwLTIuOTQzLTEuMTQxLTMuNDE2LTMuMTEtLjQ2OS0xLjk0Ni0uNDY5LTMuMDIxIDAtNC45NjcuNDUxLTEuODgxIDEuOTYtMi45MjMgMy44NDUtMi45MjNIMTZ2LTEuNjk3YzAtMi4wMDUuODM0LTIuODQ1IDMuMDU0LTMuMjM4LjcyOC0uMTI4IDEuNDc0LS4wNjUgMi4yOTYtLjA2NWguMDAzYy45MjEgMCAxLjczNS0uMDcgMi41MzcuMDY0IDEuODE2LjMwMyAzLjExIDEuNTg1IDMuMTEgMy4yNFYxNmgxLjM0OWMxLjE0MiAwIDIuNjM2LjM1NiAzLjI3IDIuOTEyLjUxNSAyLjA3Mi41MDkgMy41NTgtLjAyMyA1LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzNfIiBjbGFzcz0ic3QwIiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA3IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc5IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF8zXyIgY2xhc3M9InN0MSIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0aDYuODkyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LmljbnMgYi9QQy9pY29ucy9weXRob253LmljbnMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTM1NGNmOAotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3B5dGhvbncuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LmljbyBiL1BDL2ljb25zL3B5dGhvbncuaWNvCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxOTVkNDMKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9weXRob253LnN2ZyBiL1BDL2ljb25zL3B5dGhvbncuc3ZnCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjYjI2MDcKLS0tIC9kZXYvbnVsbAorKysgYi9QQy9pY29ucy9weXRob253LnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5pY29uLXZpc3VhbHN0dWRpby1vbmxpbmV7ZmlsbDojMDA3YWNjfS5ncmFwaC1saWdodGdyZXl7ZmlsbDojZGZkZmRmfS5zdDB7ZmlsbDojZjZmNmY2fS5zdDF7ZmlsbDojNjU2NTY1fS5zdDJ7ZmlsbDojYmZiZmJmfS5zdDN7ZmlsbDojZmZmfS5zdDR7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Q1e2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9ImdyYXBoLWxpZ2h0Z3JleSIgZD0iTTI5IDdIM1Y1aDI2djJ6Ii8+PHBhdGggY2xhc3M9Imljb24tdmlzdWFsc3R1ZGlvLW9ubGluZSIgZD0iTTMwIDVIMlYzaDI4djJ6Ii8+PHBhdGggY2xhc3M9Imljb24td2hpdGUiIGQ9Ik0yOS4xNDEgNGwuNDI5LjQyOS0uMTQuMTQyLS40My0uNDMtLjQzLjQzLS4xNC0uMTQyLjQyOS0uNDI5LS40MjktLjQyOS4xNDEtLjE0Mi40MjkuNDMuNDMtLjQzLjE0MS4xNDItLjQzLjQyOXpNMjcuNiAzLjRoLTEuMnYxLjJoMS4yVjMuNHptLTEgLjJoLjh2LjhoLS44di0uOHptLTEuMTM5LjhoLTF2LjJoMXYtLjJ6Ii8+PHBhdGggY2xhc3M9InN0MCIgZD0iTTMgN2gyNnYxOUgzeiIvPjxwYXRoIGNsYXNzPSJzdDEiIGQ9Ik0yOSA1djIxSDNWNUgydjIyaDI4VjV6Ii8+PHBhdGggY2xhc3M9InN0MSIgZD0iTTQgNS43NWgydi41SDR6Ii8+PC9nPjxwYXRoIGNsYXNzPSJzdDIiIGQ9Ik0xMiAxMUg1di0xaDd2MXptLTcgN3YxaDExdi0xSDV6bTAtNHYxaDExdi0xSDV6IiBpZD0iaWNvbkZnIi8+PGcgaWQ9ImNvbG9ySW1wb3J0YW5jZSI+PHBhdGggY2xhc3M9InN0MyIgZD0iTTMxLjYxOCAxOC45MTJDMzAuOTg0IDE2LjM1NiAyOS40OSAxNiAyOC4zNDkgMTZIMjd2LTEuNjk3YzAtMS42NTQtMS4yOTQtMi45MzctMy4xMS0zLjI0LS44MDItLjEzMy0xLjYxNy0uMDYzLTIuNTM3LS4wNjNoLS4wMDNjLS44MjEgMC0xLjU2OC0uMDYzLTIuMjk1LjA2NS0yLjIyMS4zOTMtMy4wNTUgMS4yMzMtMy4wNTUgMy4yMzhWMTZoLS44NjhjLTEuODg1IDAtMy4zOTQgMS4wNDItMy44NDUgMi45MjQtLjQ2OSAxLjk0Ni0uNDY5IDMuMDIyIDAgNC45NjdDMTEuNzYgMjUuODU5IDEzLjAwNSAyNyAxNC43MDMgMjdIMTZ2MS4zMTNjMCAxLjUzMSAxLjAyOSAyLjczMiAyLjk0NiAzLjI5Ni44OTYuMjYzIDEuNjYyLjM5MSAyLjQ5Mi4zOTEuODM4IDAgMS42NjEtLjEyOCAyLjU2NS0uMzlDMjYuNjMyIDMwLjg1IDI3IDI5LjIxOCAyNyAyOC4zMTNWMjdoMS4zNDljMi4yNDYgMCAyLjg5Ny0xLjg4NCAzLjI0Ny0yLjkzNy41MzItMS41OTIuNTM4LTMuMDc5LjAyMi01LjE1MXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTQ4XzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjUyMi4yMDUiIHkxPSItMjg4LjY2OCIgeDI9IjU0MC45MDIiIHkyPSItMzA0Ljc1NCIgZ3JhZGllbnRUcmFuc2Zvcm09Im1hdHJpeCguNTYyNSAwIDAgLS41NjggLTI4Mi4yNzIgLTE1MS42OSkiPjxzdG9wIG9mZnNldD0iMCIgc3RvcC1jb2xvcj0iIzVhOWZkNCIvPjxzdG9wIG9mZnNldD0iMSIgc3RvcC1jb2xvcj0iIzMwNjk5OCIvPjwvbGluZWFyR3JhZGllbnQ+PHBhdGggaWQ9InBhdGgxOTQ4XzZfIiBjbGFzcz0ic3Q0IiBkPSJNMjEuMzU0IDExLjcyNWMtLjc4Ni4wMDQtMS41MzcuMDcxLTIuMTk3LjE4OC0xLjk0Ni4zNDQtMi4yOTkgMS4wNjMtMi4yOTkgMi4zOXYxLjc1M2g0LjU5OHYuNTg0aC02LjMyNGMtMS4zMzYgMC0yLjUwNy44MDMtMi44NzMgMi4zMzEtLjQyMiAxLjc1MS0uNDQxIDIuODQ0IDAgNC42NzMuMzI3IDEuMzYxIDEuMTA3IDIuMzMxIDIuNDQ0IDIuMzMxaDEuNTgxdi0yLjEwMWMwLTEuNTE4IDEuMzEzLTIuODU3IDIuODczLTIuODU3aDQuNTkzYzEuMjc4IDAgMi4yOTktMS4wNTMgMi4yOTktMi4zMzd2LTQuMzc5YzAtMS4yNDYtMS4wNTEtMi4xODItMi4yOTktMi4zOS0uNzktLjEzLTEuNjEtLjE4OS0yLjM5Ni0uMTg2em0tMi40ODYgMS40MWMuNDc1IDAgLjg2My4zOTQuODYzLjg3OWEuODcuODcgMCAwIDEtLjg2My44NzQuODY4Ljg2OCAwIDAgMS0uODYzLS44NzRjMC0uNDg1LjM4Ni0uODc5Ljg2My0uODc5eiIvPjxsaW5lYXJHcmFkaWVudCBpZD0icGF0aDE5NTBfMV8iIGdyYWRpZW50VW5pdHM9InVzZXJTcGFjZU9uVXNlIiB4MT0iNTQ4LjEzIiB5MT0iLTMxNC40ODkiIHgyPSI1NDEuNDU0IiB5Mj0iLTMwNS4wNDMiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiNmZmQ0M2IiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiNmZmU4NzMiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk1MF82XyIgY2xhc3M9InN0NSIgZD0iTTI2LjYyMyAxNi42NHYyLjA0MmMwIDEuNTgzLTEuMzQyIDIuOTE1LTIuODczIDIuOTE1aC00LjU5M2MtMS4yNTggMC0yLjI5OSAxLjA3Ny0yLjI5OSAyLjMzN3Y0LjM3OWMwIDEuMjQ2IDEuMDg0IDEuOTc5IDIuMjk5IDIuMzM3IDEuNDU2LjQyOCAyLjg1MS41MDUgNC41OTMgMCAxLjE1OC0uMzM1IDIuMjk5LTEuMDEgMi4yOTktMi4zMzdWMjYuNTZoLTQuNTkzdi0uNTg0aDYuODkyYzEuMzM2IDAgMS44MzQtLjkzMiAyLjI5OS0yLjMzMS40OC0xLjQ0LjQ2LTIuODI2IDAtNC42NzMtLjMzLTEuMzMtLjk2MS0yLjMzMS0yLjI5OS0yLjMzMWgtMS43MjV6bS0yLjU4NCAxMS4wODljLjQ3NyAwIC44NjMuMzkxLjg2My44NzRhLjg3MS44NzEgMCAwIDEtLjg2My44NzkuODcyLjg3MiAwIDAgMS0uODYzLS44NzkuODcuODcgMCAwIDEgLjg2My0uODc0eiIvPjwvZz48L3N2Zz4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5pY25zIGIvUEMvaWNvbnMvc2V0dXAuaWNucwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjBlNmIwCi0tLSAvZGV2L251bGwKKysrIGIvUEMvaWNvbnMvc2V0dXAuaWNucwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5pY28gYi9QQy9pY29ucy9zZXR1cC5pY28KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU0MzY0YgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLmljbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9pY29ucy9zZXR1cC5zdmcgYi9QQy9pY29ucy9zZXR1cC5zdmcKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDYxMzg1NgotLS0gL2Rldi9udWxsCisrKyBiL1BDL2ljb25zL3NldHVwLnN2ZwpAQCAtMCwwICsxIEBACis8c3ZnIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgdmlld0JveD0iMCAwIDMyIDMyIj48c3R5bGU+Lmljb24tY2FudmFzLXRyYW5zcGFyZW50e29wYWNpdHk6MDtmaWxsOiNmNmY2ZjZ9Lmljb24tdmlzdWFsc3R1ZGlvLW9ubGluZXtmaWxsOiMwMDdhY2N9Lmljb24tZGlzYWJsZWQtZ3JleXtmaWxsOiM4NDg0ODR9Lmljb24td2hpdGV7ZmlsbDojZmZmfS5zdDB7ZmlsbDojZjBlZmYxfS5zdDF7ZmlsbDojNDI0MjQyfS5zdDJ7ZmlsbDp1cmwoI3BhdGgxOTQ4XzFfKX0uc3Qze2ZpbGw6dXJsKCNwYXRoMTk1MF8xXyl9PC9zdHlsZT48cGF0aCBjbGFzcz0iaWNvbi1jYW52YXMtdHJhbnNwYXJlbnQiIGQ9Ik0zMiAzMkgwVjBoMzJ2MzJ6IiBpZD0iY2FudmFzIi8+PGcgaWQ9Imljb25CZyI+PHBhdGggY2xhc3M9InN0MCIgZD0iTTE4IDh2MTBIMVY4aDE3em0tMS4xOTEgMTUuNTcyYTEuMDA0IDEuMDA0IDAgMCAwLS45MDMtLjU3MkgyLjkwN2MtLjM4NSAwLS43NC4yMjUtLjkwMy41NzJMLjg4NiAyNS45MjhBLjc0OC43NDggMCAwIDAgMS41NjMgMjdIMTcuMjVhLjc0OC43NDggMCAwIDAgLjY3Ny0xLjA3MmwtMS4xMTgtMi4zNTZ6Ii8+PHBhdGggY2xhc3M9Imljb24tZGlzYWJsZWQtZ3JleSIgZD0iTTE3LjkyNyAyNS45MjlsLTEuMTE4LTIuMzU2YTEuMDAzIDEuMDAzIDAgMCAwLS45MDMtLjU3M0gyLjkwN2MtLjM4NSAwLS43NC4yMjUtLjkwMy41NzJMLjg4NiAyNS45MjhBLjc0OC43NDggMCAwIDAgMS41NjMgMjdIMTcuMjVhLjc0Ny43NDcgMCAwIDAgLjYzMy0uMzQ5Ljc0Ni43NDYgMCAwIDAgLjA0NC0uNzIyek0xLjk1OSAyNmwuOTQ5LTJoMTIuOTk4bC45NDkgMkgxLjk1OXpNNiAyMnYtMWgzdi0yaDF2MmgzdjFINnoiLz48cGF0aCBjbGFzcz0ic3QxIiBkPSJNMCA3djEyaDE5VjdIMHptMTggMTFIMVY4aDE3djEweiIvPjwvZz48ZyBpZD0iaWNvbkZnIj48cGF0aCBjbGFzcz0iaWNvbi13aGl0ZSIgZD0iTTEyIDZWMEg3djZIMi43NTVMOS41IDEzLjQ5NSAxNi4yNDUgNnoiLz48cGF0aCBjbGFzcz0iaWNvbi12aXN1YWxzdHVkaW8tb25saW5lIiBkPSJNOCA0aDN2M2gzbC00LjUgNUw1IDdoM1Y0em0zLTJIOHYxaDNWMnptMC0ySDh2MWgzVjB6Ii8+PC9nPjxnIGlkPSJjb2xvckltcG9ydGFuY2UiPjxwYXRoIGNsYXNzPSJpY29uLXdoaXRlIiBkPSJNMzEuNTk2IDI0LjA2M0MzMS4yNDYgMjUuMTE2IDMwLjU5NSAyNyAyOC4zNDkgMjdIMjd2MS4zMTNjMCAuOTA1LS4zNjggMi41MzctMi45OTcgMy4yOTgtLjkwMy4yNjEtMS43MjcuMzg5LTIuNTY1LjM4OS0uODMgMC0xLjU5Ny0uMTI4LTIuNDkzLS4zOTJDMTcuMDI5IDMxLjA0NSAxNiAyOS44NDQgMTYgMjguMzEzVjI3aC0xLjI5NmMtMS42OTggMC0yLjk0NC0xLjE0MS0zLjQxNy0zLjExLS40NjktMS45NDQtLjQ2OS0zLjAyIDAtNC45NjcuNDUxLTEuODgxIDEuOTYxLTIuOTIzIDMuODQ1LTIuOTIzSDE2di0xLjY5N2MwLTIuMDA1LjgzNC0yLjg0NSAzLjA1NC0zLjIzOC43MjgtLjEyOCAxLjQ3NC0uMDY1IDIuMjk2LS4wNjVoLjAwM2MuOTIxIDAgMS43MzUtLjA3IDIuNTM3LjA2NCAxLjgxNi4zMDMgMy4xMSAxLjU4NSAzLjExIDMuMjRWMTZoMS4zNDljMS4xNDIgMCAyLjYzNi4zNTYgMy4yNyAyLjkxMi41MTUgMi4wNzIuNTA5IDMuNTU5LS4wMjMgNS4xNTF6Ii8+PGxpbmVhckdyYWRpZW50IGlkPSJwYXRoMTk0OF8xXyIgZ3JhZGllbnRVbml0cz0idXNlclNwYWNlT25Vc2UiIHgxPSI1MjIuMjA1IiB5MT0iLTI4OC42NjgiIHgyPSI1NDAuOTAyIiB5Mj0iLTMwNC43NTQiIGdyYWRpZW50VHJhbnNmb3JtPSJtYXRyaXgoLjU2MjUgMCAwIC0uNTY4IC0yODIuMjcyIC0xNTEuNjkpIj48c3RvcCBvZmZzZXQ9IjAiIHN0b3AtY29sb3I9IiM1YTlmZDQiLz48c3RvcCBvZmZzZXQ9IjEiIHN0b3AtY29sb3I9IiMzMDY5OTgiLz48L2xpbmVhckdyYWRpZW50PjxwYXRoIGlkPSJwYXRoMTk0OF85XyIgY2xhc3M9InN0MiIgZD0iTTIxLjM1NCAxMS43MjVjLS43ODYuMDA0LTEuNTM3LjA3MS0yLjE5Ny4xODgtMS45NDYuMzQ0LTIuMjk5IDEuMDYzLTIuMjk5IDIuMzl2MS43NTNoNC41OTh2LjU4NGgtNi4zMjRjLTEuMzM2IDAtMi41MDcuODAzLTIuODczIDIuMzMxLS40MjIgMS43NTEtLjQ0MSAyLjg0NCAwIDQuNjczLjMyNyAxLjM2MSAxLjEwOCAyLjMzMSAyLjQ0NCAyLjMzMWgxLjU4MXYtMi4xMDFjMC0xLjUxOCAxLjMxMy0yLjg1NyAyLjg3My0yLjg1N2g0LjU5M2MxLjI3OSAwIDIuMjk5LTEuMDUzIDIuMjk5LTIuMzM3di00LjM3OWMwLTEuMjQ2LTEuMDUxLTIuMTgyLTIuMjk5LTIuMzktLjc5LS4xMy0xLjYxLS4xODktMi4zOTYtLjE4NnptLTIuNDg2IDEuNDFjLjQ3NSAwIC44NjMuMzk0Ljg2My44NzlhLjg3Ljg3IDAgMCAxLS44NjMuODc0Ljg2OC44NjggMCAwIDEtLjg2My0uODc0YzAtLjQ4NS4zODYtLjg3OS44NjMtLjg3OXoiLz48bGluZWFyR3JhZGllbnQgaWQ9InBhdGgxOTUwXzFfIiBncmFkaWVudFVuaXRzPSJ1c2VyU3BhY2VPblVzZSIgeDE9IjU0OC4xMyIgeTE9Ii0zMTQuNDg5IiB4Mj0iNTQxLjQ1NCIgeTI9Ii0zMDUuMDQzIiBncmFkaWVudFRyYW5zZm9ybT0ibWF0cml4KC41NjI1IDAgMCAtLjU2OCAtMjgyLjI3MiAtMTUxLjY5KSI+PHN0b3Agb2Zmc2V0PSIwIiBzdG9wLWNvbG9yPSIjZmZkNDNiIi8+PHN0b3Agb2Zmc2V0PSIxIiBzdG9wLWNvbG9yPSIjZmZlODczIi8+PC9saW5lYXJHcmFkaWVudD48cGF0aCBpZD0icGF0aDE5NTBfOV8iIGNsYXNzPSJzdDMiIGQ9Ik0yNi42MjMgMTYuNjR2Mi4wNDJjMCAxLjU4My0xLjM0MiAyLjkxNS0yLjg3MyAyLjkxNWgtNC41OTNjLTEuMjU4IDAtMi4yOTkgMS4wNzctMi4yOTkgMi4zMzd2NC4zNzljMCAxLjI0NiAxLjA4NCAxLjk3OSAyLjI5OSAyLjMzNyAxLjQ1Ni40MjggMi44NTEuNTA1IDQuNTkzIDAgMS4xNTgtLjMzNSAyLjI5OS0xLjAxIDIuMjk5LTIuMzM3VjI2LjU2aC00LjU5M3YtLjU4NEgyOC4zNDhjMS4zMzYgMCAxLjgzNC0uOTMyIDIuMjk5LTIuMzMxLjQ4LTEuNDQuNDYtMi44MjYgMC00LjY3My0uMzMtMS4zMy0uOTYxLTIuMzMxLTIuMjk5LTIuMzMxaC0xLjcyNXptLTIuNTg0IDExLjA4OWMuNDc3IDAgLjg2My4zOTEuODYzLjg3NGEuODcxLjg3MSAwIDAgMS0uODYzLjg3OS44NzIuODcyIDAgMCAxLS44NjMtLjg3OS44Ny44NyAwIDAgMSAuODYzLS44NzR6Ii8+PC9nPjwvc3ZnPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmMgYi9QQy9sYXVuY2hlci5jCmluZGV4IDQwZDRjYjUuLmQxMWRmNDMgMTAwNjQ0Ci0tLSBhL1BDL2xhdW5jaGVyLmMKKysrIGIvUEMvbGF1bmNoZXIuYwpAQCAtOTgsNyArOTgsNyBAQAogICAgIE1lc3NhZ2VCb3goTlVMTCwgbWVzc2FnZSwgVEVYVCgiUHl0aG9uIExhdW5jaGVyIGlzIHNvcnJ5IHRvIHNheSAuLi4iKSwKICAgICAgICAgICAgICAgIE1CX09LKTsKICNlbmRpZgotICAgIEV4aXRQcm9jZXNzKHJjKTsKKyAgICBleGl0KHJjKTsKIH0KIAogLyoKQEAgLTQ2NSw3ICs0NjUsNyBAQAogfQogCiBzdGF0aWMgSU5TVEFMTEVEX1BZVEhPTiAqCi1sb2NhdGVfcHl0aG9uKHdjaGFyX3QgKiB3YW50ZWRfdmVyKQorbG9jYXRlX3B5dGhvbih3Y2hhcl90ICogd2FudGVkX3ZlciwgQk9PTCBmcm9tX3NoZWJhbmcpCiB7CiAgICAgc3RhdGljIHdjaGFyX3QgY29uZmlnX2tleSBbXSA9IHsgTCJweXRob25YIiB9OwogICAgIHN0YXRpYyB3Y2hhcl90ICogbGFzdF9jaGFyID0gJmNvbmZpZ19rZXlbc2l6ZW9mKGNvbmZpZ19rZXkpIC8KQEAgLTQ5NywxMCArNDk3LDE3IEBACiAgICAgICAgIGNvbmZpZ3VyZWRfdmFsdWUgPSBnZXRfY29uZmlndXJlZF92YWx1ZShjb25maWdfa2V5KTsKICAgICAgICAgaWYgKGNvbmZpZ3VyZWRfdmFsdWUpCiAgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGNvbmZpZ3VyZWRfdmFsdWUpOworICAgICAgICAvKiBOb3QgZm91bmQgYSB2YWx1ZSB5ZXQgLSB0cnkgYnkgbWFqb3IgdmVyc2lvbi4KKyAgICAgICAgICogSWYgd2UncmUgbG9va2luZyBmb3IgYW4gaW50ZXJwcmV0ZXIgc3BlY2lmaWVkIGluIGEgc2hlYmFuZyBsaW5lLAorICAgICAgICAgKiB3ZSB3YW50IHRvIHRyeSBQeXRob24gMiBmaXJzdCwgdGhlbiBQeXRob24gMyAoZm9yIFVuaXggYW5kIGJhY2t3YXJkCisgICAgICAgICAqIGNvbXBhdGliaWxpdHkpLiBJZiB3ZSdyZSBiZWluZyBjYWxsZWQgaW50ZXJhY3RpdmVseSwgYXNzdW1lIHRoZSB1c2VyCisgICAgICAgICAqIHdhbnRzIHRoZSBsYXRlc3QgdmVyc2lvbiBhdmFpbGFibGUsIHNvIHRyeSBQeXRob24gMyBmaXJzdCwgdGhlbgorICAgICAgICAgKiBQeXRob24gMi4KKyAgICAgICAgICovCiAgICAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oTCIyIik7CisgICAgICAgICAgICByZXN1bHQgPSBmaW5kX3B5dGhvbl9ieV92ZXJzaW9uKGZyb21fc2hlYmFuZyA/IEwiMiIgOiBMIjMiKTsKICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICAgICAgcmVzdWx0ID0gZmluZF9weXRob25fYnlfdmVyc2lvbihMIjMiKTsKKyAgICAgICAgICAgIHJlc3VsdCA9IGZpbmRfcHl0aG9uX2J5X3ZlcnNpb24oZnJvbV9zaGViYW5nID8gTCIzIiA6IEwiMiIpOwogICAgICAgICBkZWJ1ZyhMInNlYXJjaCBmb3IgZGVmYXVsdCBQeXRob24gZm91bmQgIik7CiAgICAgICAgIGlmIChyZXN1bHQpIHsKICAgICAgICAgICAgIGRlYnVnKEwidmVyc2lvbiAlbHMgYXQgJyVscydcbiIsCkBAIC02NTUsNyArNjYyLDcgQEAKICAgICBpZiAoIW9rKQogICAgICAgICBlcnJvcihSQ19DUkVBVEVfUFJPQ0VTUywgTCJGYWlsZWQgdG8gZ2V0IGV4aXQgY29kZSBvZiBwcm9jZXNzIik7CiAgICAgZGVidWcoTCJjaGlsZCBwcm9jZXNzIGV4aXQgY29kZTogJWRcbiIsIHJjKTsKLSAgICBFeGl0UHJvY2VzcyhyYyk7CisgICAgZXhpdChyYyk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMDgyLDcgKzEwODksNyBAQAogICAgIHsgMzE5MCwgMzIzMCwgTCIzLjMiIH0sCiAgICAgeyAzMjUwLCAzMzEwLCBMIjMuNCIgfSwKICAgICB7IDMzMjAsIDMzNTEsIEwiMy41IiB9LAotICAgIHsgMzM2MCwgMzM2MSwgTCIzLjYiIH0sCisgICAgeyAzMzYwLCAzMzc5LCBMIjMuNiIgfSwKICAgICB7IDAgfQogfTsKIApAQCAtMTA5NCw3ICsxMTAxLDcgQEAKIAogICAgIGZvciAobXAgPSBtYWdpY192YWx1ZXM7IG1wLT5taW47IG1wKyspIHsKICAgICAgICAgaWYgKChtYWdpYyA+PSBtcC0+bWluKSAmJiAobWFnaWMgPD0gbXAtPm1heCkpIHsKLSAgICAgICAgICAgIHJlc3VsdCA9IGxvY2F0ZV9weXRob24obXAtPnZlcnNpb24pOworICAgICAgICAgICAgcmVzdWx0ID0gbG9jYXRlX3B5dGhvbihtcC0+dmVyc2lvbiwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CkBAIC0xMTE0LDcgKzExMjEsNyBAQAogICovCiAgICAgRklMRSAqIGZwOwogICAgIGVycm5vX3QgcmMgPSBfd2ZvcGVuX3MoJmZwLCAqYXJndiwgTCJyYiIpOwotICAgIHVuc2lnbmVkIGNoYXIgYnVmZmVyW0JVRlNJWkVdOworICAgIGNoYXIgYnVmZmVyW0JVRlNJWkVdOwogICAgIHdjaGFyX3Qgc2hlYmFuZ19saW5lW0JVRlNJWkUgKyAxXTsKICAgICBzaXplX3QgcmVhZDsKICAgICBjaGFyICpwOwpAQCAtMTEzNiw3ICsxMTQzLDggQEAKICAgICAgICAgZmNsb3NlKGZwKTsKIAogICAgICAgICBpZiAoKHJlYWQgPj0gNCkgJiYgKGJ1ZmZlclszXSA9PSAnXG4nKSAmJiAoYnVmZmVyWzJdID09ICdccicpKSB7Ci0gICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKGJ1ZmZlclsxXSA8PCA4IHwgYnVmZmVyWzBdKSAmIDB4RkZGRik7CisgICAgICAgICAgICBpcCA9IGZpbmRfYnlfbWFnaWMoKCgodW5zaWduZWQgY2hhcilidWZmZXJbMV0pIDw8IDggfAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgY2hhcilidWZmZXJbMF0pICYgMHhGRkZGKTsKICAgICAgICAgICAgIGlmIChpcCAhPSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZGVidWcoTCJzY3JpcHQgZmlsZSBpcyBjb21waWxlZCBhZ2FpbnN0IFB5dGhvbiAlbHNcbiIsCiAgICAgICAgICAgICAgICAgICAgICAgaXAtPnZlcnNpb24pOwpAQCAtMTI3OCw3ICsxMjg2LDcgQEAKIGZvbGxvd2VkIGJ5IGEgdmFsaWQgdmVyc2lvbiBzcGVjaWZpZXIuXG5QbGVhc2UgY2hlY2sgdGhlIGRvY3VtZW50YXRpb24uIiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kKTsKICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRPRE8gY291bGQgY2FsbCB2YWxpZGF0ZV92ZXJzaW9uKGNvbW1hbmQpICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCk7CisgICAgICAgICAgICAgICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oY29tbWFuZCwgVFJVRSk7CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yKFJDX05PX1BZVEhPTiwgTCJSZXF1ZXN0ZWQgUHl0aG9uIHZlcnNpb24gXAogKCVscykgaXMgbm90IGluc3RhbGxlZCIsIGNvbW1hbmQpOwpAQCAtMTM2Miw2ICsxMzcwLDcgQEAKICAgICB3Y2hhcl90ICogYXZbMl07CiAjZW5kaWYKIAorICAgIHNldHZidWYoc3RkZXJyLCAoY2hhciAqKU5VTEwsIF9JT05CRiwgMCk7CiAgICAgd3AgPSBnZXRfZW52KEwiUFlMQVVOQ0hfREVCVUciKTsKICAgICBpZiAoKHdwICE9IE5VTEwpICYmICgqd3AgIT0gTCdcMCcpKQogICAgICAgICBsb2dfZnAgPSBzdGRlcnI7CkBAIC0xNDgzLDcgKzE0OTIsNyBAQAogICAgICAgICBwbGVuID0gd2NzbGVuKHApOwogICAgICAgICB2YWxpZCA9ICgqcCA9PSBMJy0nKSAmJiB2YWxpZGF0ZV92ZXJzaW9uKCZwWzFdKTsKICAgICAgICAgaWYgKHZhbGlkKSB7Ci0gICAgICAgICAgICBpcCA9IGxvY2F0ZV9weXRob24oJnBbMV0pOworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKCZwWzFdLCBGQUxTRSk7CiAgICAgICAgICAgICBpZiAoaXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBlcnJvcihSQ19OT19QWVRIT04sIEwiUmVxdWVzdGVkIFB5dGhvbiB2ZXJzaW9uICglbHMpIG5vdCBcCiBpbnN0YWxsZWQiLCAmcFsxXSk7CkBAIC0xNTEwLDcgKzE1MTksNyBAQAogCiAgICAgICAgIC8qIElmIHdlIGRpZG4ndCBmaW5kIG9uZSwgbG9vayBmb3IgdGhlIGRlZmF1bHQgUHl0aG9uICovCiAgICAgICAgIGlmIChleGVjdXRhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgIGlwID0gbG9jYXRlX3B5dGhvbihMIiIpOworICAgICAgICAgICAgaXAgPSBsb2NhdGVfcHl0aG9uKEwiIiwgRkFMU0UpOwogICAgICAgICAgICAgaWYgKGlwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZXJyb3IoUkNfTk9fUFlUSE9OLCBMIkNhbid0IGZpbmQgYSBkZWZhdWx0IFB5dGhvbi4iKTsKICAgICAgICAgICAgIGV4ZWN1dGFibGUgPSBpcC0+ZXhlY3V0YWJsZTsKZGlmZiAtLWdpdCBhL1BDL2xhdW5jaGVyLmljbyBiL1BDL2xhdW5jaGVyLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFkN2Q1Ny4uMDAwMDAwMAotLS0gYS9QQy9sYXVuY2hlci5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9tc3ZjcnRtb2R1bGUuYyBiL1BDL21zdmNydG1vZHVsZS5jCmluZGV4IGIwNzM5ZDAuLmM5ZDFlNmMgMTAwNjQ0Ci0tLSBhL1BDL21zdmNydG1vZHVsZS5jCisrKyBiL1BDL21zdmNydG1vZHVsZS5jCkBAIC0zMywxMiArMzMsMTIgQEAKICNlbmRpZgogCiAvKltweXRob24gaW5wdXRdCi1jbGFzcyBQeV9pbnRwdHJfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQeV9pbnRwdHJfdCcKK2NsYXNzIGludHB0cl90X2NvbnZlcnRlcihDQ29udmVydGVyKToKKyAgICB0eXBlID0gJ2ludHB0cl90JwogICAgIGZvcm1hdF91bml0ID0gJyJfUHlfUEFSU0VfSU5UUFRSIicKIAogY2xhc3MgaGFuZGxlX3JldHVybl9jb252ZXJ0ZXIobG9uZ19yZXR1cm5fY29udmVydGVyKToKLSAgICB0eXBlID0gJ1B5X2ludHB0cl90JworICAgIHR5cGUgPSAnaW50cHRyX3QnCiAgICAgY2FzdCA9ICcodm9pZCAqKScKICAgICBjb252ZXJzaW9uX2ZuID0gJ1B5TG9uZ19Gcm9tVm9pZFB0cicKIApAQCAtNTksNyArNTksNyBAQAogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgKICAgICAgICAgICAgICdyZXR1cm5fdmFsdWUgPSBQeVVuaWNvZGVfRnJvbU9yZGluYWwoX3JldHVybl92YWx1ZSk7XG4nKQogW3B5dGhvbiBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwotLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9NmE1NGZjNGU3M2QwYjM2N10qLworLypbcHl0aG9uIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWRhMzlhM2VlNWU2YjRiMGQgaW5wdXQ9YjU5ZjE2NjNkYmExMTk5N10qLwogCiAvKltjbGluaWMgaW5wdXRdCiBtb2R1bGUgbXN2Y3J0CkBAIC0xNDgsNyArMTQ4LDcgQEAKIC8qW2NsaW5pYyBpbnB1dF0KIG1zdmNydC5vcGVuX29zZmhhbmRsZSAtPiBsb25nCiAKLSAgICBoYW5kbGU6IFB5X2ludHB0cl90CisgICAgaGFuZGxlOiBpbnRwdHJfdAogICAgIGZsYWdzOiBpbnQKICAgICAvCiAKQEAgLTE2MCw4ICsxNjAsOCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgbG9uZwotbXN2Y3J0X29wZW5fb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlfaW50cHRyX3QgaGFuZGxlLCBpbnQgZmxhZ3MpCi0vKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9YmY2NWU0MjIyNDNhMzlmOSBpbnB1dD00ZDg1MTZlZDMyZGI4ZjY1XSovCittc3ZjcnRfb3Blbl9vc2ZoYW5kbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnRwdHJfdCBoYW5kbGUsIGludCBmbGFncykKKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jZWRlODcxYmY5MzlkNmUzIGlucHV0PWNiMjEwOGJiZWE4NDUxNGVdKi8KIHsKICAgICBpbnQgZmQ7CiAKQEAgLTE4MywyMiArMTgzLDE3IEBACiBSYWlzZXMgSU9FcnJvciBpZiBmZCBpcyBub3QgcmVjb2duaXplZC4KIFtjbGluaWMgc3RhcnQgZ2VuZXJhdGVkIGNvZGVdKi8KIAotc3RhdGljIFB5X2ludHB0cl90CitzdGF0aWMgaW50cHRyX3QKIG1zdmNydF9nZXRfb3NmaGFuZGxlX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZkKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVhYzQ3NjQzMzM4YzBiYWEgaW5wdXQ9YzdkMThkMDJjODAxN2VjMV0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTdjZTc2MWRkMGRlMmI1MDMgaW5wdXQ9YzdkMThkMDJjODAxN2VjMV0qLwogewotICAgIFB5X2ludHB0cl90IGhhbmRsZSA9IC0xOworICAgIGludHB0cl90IGhhbmRsZSA9IC0xOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKLSAgICB9Ci0gICAgZWxzZSB7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgICAgICBoYW5kbGUgPSBfZ2V0X29zZmhhbmRsZShmZCk7CisgICAgaGFuZGxlID0gX2dldF9vc2ZoYW5kbGUoZmQpOwogICAgIF9QeV9FTkRfU1VQUFJFU1NfSVBICi0gICAgICAgIGlmIChoYW5kbGUgPT0gLTEpCi0gICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfSU9FcnJvcik7Ci0gICAgfQorICAgIGlmIChoYW5kbGUgPT0gLTEpCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19JT0Vycm9yKTsKIAogICAgIHJldHVybiBoYW5kbGU7CiB9CkBAIC01NDAsNyArNTM1LDYgQEAKICNlbmRpZgogCiAgICAgLyogY29uc3RhbnRzIGZvciB0aGUgY3J0IHZlcnNpb25zICovCi0gICAgKHZvaWQpc3Q7CiAjaWZkZWYgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOCiAgICAgc3QgPSBQeU1vZHVsZV9BZGRTdHJpbmdDb25zdGFudChtLCAiVkNfQVNTRU1CTFlfUFVCTElDS0VZVE9LRU4iLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1ZDX0FTU0VNQkxZX1BVQkxJQ0tFWVRPS0VOKTsKQEAgLTU2Niw2ICs1NjAsOCBAQAogICAgIHN0ID0gUHlNb2R1bGVfQWRkT2JqZWN0KG0sICJDUlRfQVNTRU1CTFlfVkVSU0lPTiIsIHZlcnNpb24pOwogICAgIGlmIChzdCA8IDApIHJldHVybiBOVUxMOwogI2VuZGlmCisgICAgLyogbWFrZSBjb21waWxlciB3YXJuaW5nIHF1aWV0IGlmIHN0IGlzIHVudXNlZCAqLworICAgICh2b2lkKXN0OwogCiAgICAgcmV0dXJuIG07CiB9CmRpZmYgLS1naXQgYS9QQy9weS5pY28gYi9QQy9weS5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNTdhZWYuLjAwMDAwMDAKLS0tIGEvUEMvcHkuaWNvCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvUEMvcHljLmljbyBiL1BDL3B5Yy5pY28KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YmQyYjEuLjAwMDAwMDAKLS0tIGEvUEMvcHljLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1BDL3B5Y29uLmljbyBiL1BDL3B5Y29uLmljbwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWFiNjI5ZS4uMDAwMDAwMAotLS0gYS9QQy9weWNvbi5pY28KKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9QQy9weWNvbmZpZy5oIGIvUEMvcHljb25maWcuaAppbmRleCBhYzRmOGYyLi42NGU3YWVjIDEwMDY0NAotLS0gYS9QQy9weWNvbmZpZy5oCisrKyBiL1BDL3B5Y29uZmlnLmgKQEAgLTE0LDcgKzE0LDYgQEAKIE1TX1dJTjY0IC0gQ29kZSBzcGVjaWZpYyB0byB0aGUgTVMgV2luNjQgQVBJCiBNU19XSU4zMiAtIENvZGUgc3BlY2lmaWMgdG8gdGhlIE1TIFdpbjMyIChhbmQgV2luNjQpIEFQSSAob2Jzb2xldGUsIHRoaXMgY292ZXJzIGFsbCBzdXBwb3J0ZWQgQVBJcykKIE1TX1dJTkRPV1MgLSBDb2RlIHNwZWNpZmljIHRvIFdpbmRvd3MsIGJ1dCBhbGwgdmVyc2lvbnMuCi1NU19XSU5DRSAtIENvZGUgc3BlY2lmaWMgdG8gV2luZG93cyBDRQogUHlfRU5BQkxFX1NIQVJFRCAtIENvZGUgaWYgdGhlIFB5dGhvbiBjb3JlIGlzIGJ1aWx0IGFzIGEgRExMLgogCiBBbHNvIG5vdGUgdGhhdCBuZWl0aGVyICJfTV9JWDg2IiBvciAiX01TQ19WRVIiIHNob3VsZCBiZSB1c2VkIGZvcgpAQCAtMzAsMTAgKzI5LDYgQEAKIAogKi8KIAotI2lmZGVmIF9XSU4zMl9XQ0UKLSNkZWZpbmUgTVNfV0lOQ0UKLSNlbmRpZgotCiAvKiBEZXByZWNhdGVkIFVTRV9ETF9FWFBPUlQgbWFjcm8gLSBwbGVhc2UgdXNlIFB5X0JVSUxEX0NPUkUgKi8KICNpZmRlZiBVU0VfRExfRVhQT1JUCiAjCWRlZmluZSBQeV9CVUlMRF9DT1JFCkBAIC01Myw4ICs0OCw2IEBACiAjZGVmaW5lIF9DUlRfTk9OU1REQ19OT19ERVBSRUNBVEUgMQogI2VuZGlmCiAKLS8qIFdpbmRvd3MgQ0UgZG9lcyBub3QgaGF2ZSB0aGVzZSAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0lPX0gKICNkZWZpbmUgSEFWRV9TWVNfVVRJTUVfSAogI2RlZmluZSBIQVZFX1RFTVBOQU0KQEAgLTYyLDExICs1NSw4IEBACiAjZGVmaW5lIEhBVkVfVE1QTkFNCiAjZGVmaW5lIEhBVkVfQ0xPQ0sKICNkZWZpbmUgSEFWRV9TVFJFUlJPUgotI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0lPX0gKICNpbmNsdWRlIDxpby5oPgotI2VuZGlmCiAKICNkZWZpbmUgSEFWRV9IWVBPVAogI2RlZmluZSBIQVZFX1NUUkZUSU1FCkBAIC04NiwxNyArNzYsNiBAQAogI2RlZmluZSBVU0VfU09DS0VUCiAjZW5kaWYKIAotLyogQ0U2IGRvZXNuJ3QgaGF2ZSBzdHJkdXAoKSBidXQgX3N0cmR1cCgpLiBBc3N1bWUgdGhlIHNhbWUgZm9yIGVhcmxpZXIgdmVyc2lvbnMuICovCi0jaWYgZGVmaW5lZChNU19XSU5DRSkKLSMgIGluY2x1ZGUgPHN0ZGxpYi5oPgotIyAgZGVmaW5lIHN0cmR1cCBfc3RyZHVwCi0jZW5kaWYKLQotI2lmZGVmIE1TX1dJTkNFCi0vKiBXaW5kb3dzIENFIGRvZXMgbm90IHN1cHBvcnQgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCi0jZGVmaW5lIGdldGVudih2KSAoTlVMTCkKLSNkZWZpbmUgZW52aXJvbiAoTlVMTCkKLSNlbmRpZgogCiAvKiBDb21waWxlciBzcGVjaWZpYyBkZWZpbmVzICovCiAKQEAgLTI4Niw3ICsyNjUsNiBAQAogI2VuZGlmCiAKIC8qIDY0IGJpdCBpbnRzIGFyZSB1c3VhbGx5IHNwZWx0IF9faW50NjQgdW5sZXNzIGNvbXBpbGVyIGhhcyBvdmVycmlkZGVuICovCi0jZGVmaW5lIEhBVkVfTE9OR19MT05HIDEKICNpZm5kZWYgUFlfTE9OR19MT05HCiAjCWRlZmluZSBQWV9MT05HX0xPTkcgX19pbnQ2NAogIwlkZWZpbmUgUFlfTExPTkdfTUFYIF9JNjRfTUFYCkBAIC0zMTIsMTEgKzI5MCwxMSBAQAogCQkJdGhlaXIgTWFrZWZpbGUgKG90aGVyIGNvbXBpbGVycyBhcmUgZ2VuZXJhbGx5CiAJCQl0YWtlbiBjYXJlIG9mIGJ5IGRpc3R1dGlscy4pICovCiAjCQkJaWYgZGVmaW5lZChfREVCVUcpCi0jCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMzVfZC5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM2X2QubGliIikKICMJCQllbGlmIGRlZmluZWQoUHlfTElNSVRFRF9BUEkpCiAjCQkJCXByYWdtYSBjb21tZW50KGxpYiwicHl0aG9uMy5saWIiKQogIwkJCWVsc2UKLSMJCQkJcHJhZ21hIGNvbW1lbnQobGliLCJweXRob24zNS5saWIiKQorIwkJCQlwcmFnbWEgY29tbWVudChsaWIsInB5dGhvbjM2LmxpYiIpCiAjCQkJZW5kaWYgLyogX0RFQlVHICovCiAjCQllbmRpZiAvKiBfTVNDX1ZFUiAqLwogIwllbmRpZiAvKiBQeV9CVUlMRF9DT1JFICovCkBAIC0zODcsMzkgKzM2NSwxMCBAQAogCiAvKiBkZWZpbmUgc2lnbmVkIGFuZCB1bnNpZ25lZCBleGFjdC13aWR0aCAzMi1iaXQgYW5kIDY0LWJpdCB0eXBlcywgdXNlZCBpbiB0aGUKICAgIGltcGxlbWVudGF0aW9uIG9mIFB5dGhvbiBpbnRlZ2Vycy4gKi8KLSNpZm5kZWYgUFlfVUlOVDMyX1QKLSNpZiBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxCi0jZGVmaW5lIFBZX1VJTlQzMl9UIHVuc2lnbmVkIGludAotI2VsaWYgU0laRU9GX0xPTkcgPT0gNAotI2RlZmluZSBIQVZFX1VJTlQzMl9UIDEKLSNkZWZpbmUgUFlfVUlOVDMyX1QgdW5zaWduZWQgbG9uZwotI2VuZGlmCi0jZW5kaWYKLQotI2lmbmRlZiBQWV9VSU5UNjRfVAotI2lmIFNJWkVPRl9MT05HX0xPTkcgPT0gOAotI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEKLSNkZWZpbmUgUFlfVUlOVDY0X1QgdW5zaWduZWQgUFlfTE9OR19MT05HCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFBZX0lOVDMyX1QKLSNpZiBTSVpFT0ZfSU5UID09IDQKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNkZWZpbmUgUFlfSU5UMzJfVCBpbnQKLSNlbGlmIFNJWkVPRl9MT05HID09IDQKLSNkZWZpbmUgSEFWRV9JTlQzMl9UIDEKLSNkZWZpbmUgUFlfSU5UMzJfVCBsb25nCi0jZW5kaWYKLSNlbmRpZgotCi0jaWZuZGVmIFBZX0lOVDY0X1QKLSNpZiBTSVpFT0ZfTE9OR19MT05HID09IDgKLSNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEKLSNkZWZpbmUgUFlfSU5UNjRfVCBQWV9MT05HX0xPTkcKLSNlbmRpZgotI2VuZGlmCisjZGVmaW5lIFBZX1VJTlQzMl9UIHVpbnQzMl90CisjZGVmaW5lIFBZX1VJTlQ2NF9UIHVpbnQ2NF90CisjZGVmaW5lIFBZX0lOVDMyX1QgaW50MzJfdAorI2RlZmluZSBQWV9JTlQ2NF9UIGludDY0X3QKIAogLyogRmFpcmx5IHN0YW5kYXJkIGZyb20gaGVyZSEgKi8KIApAQCAtNDQ4LDE0ICszOTcsMTAgQEAKIC8qICNkZWZpbmUgY29uc3QgICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8Y29uaW8uaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfQ09OSU9fSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxkaXJlY3QuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRElSRUNUX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBkaXJlbnQuaC4gICovCiAvKiAjZGVmaW5lIERJUkVOVCAxICovCkBAIC01MjgsOSArNDczLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9BTFRaT05FICovCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgcHV0ZW52IGZ1bmN0aW9uLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9QVVRFTlYKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBzdXBwb3J0cyBmdW5jdGlvbiBwcm90b3R5cGVzICovCiAjZGVmaW5lIEhBVkVfUFJPVE9UWVBFUwpAQCAtNTU4LDkgKzUwMSw3IEBACiAjZGVmaW5lIEhBVkVfRFlOQU1JQ19MT0FESU5HCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSBmdGltZS4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfRlRJTUUKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgZ2V0cGVlcm5hbWUuICAqLwogI2RlZmluZSBIQVZFX0dFVFBFRVJOQU1FCkBAIC01NjksOSArNTEwLDcgQEAKIC8qICN1bmRlZiBIQVZFX0dFVFBHUlAgKi8KIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHBpZC4gICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfR0VUUElECi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIGdldHRpbWVvZmRheS4gICovCiAvKiAjdW5kZWYgSEFWRV9HRVRUSU1FT0ZEQVkgKi8KQEAgLTYzMywxNCArNTcyLDEwIEBACiAjZW5kaWYKIAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB3Y3Njb2xsJyBmdW5jdGlvbi4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9XQ1NDT0xMIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHdjc3hmcm0nIGZ1bmN0aW9uLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX1dDU1hGUk0gMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB0aGUgemxpYiBsaWJyYXJ5IGhhcyBpbmZsYXRlQ29weSAqLwogI2RlZmluZSBIQVZFX1pMSUJfQ09QWSAxCkBAIC02NDksMjQgKzU4NCwxNiBAQAogLyogI3VuZGVmIEhBVkVfRExGQ05fSCAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPGVycm5vLmg+IGhlYWRlciBmaWxlLiAqLwotI2lmbmRlZiBNU19XSU5DRQogI2RlZmluZSBIQVZFX0VSUk5PX0ggMQotI2VuZGlmCiAKIC8qIERlZmluZSBpZiB5b3UgaGF2ZSB0aGUgPGZjbnRsLmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9GQ05UTF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHByb2Nlc3MuaD4gaGVhZGVyIGZpbGUuICovCi0jaWZuZGVmIE1TX1dJTkNFCiAjZGVmaW5lIEhBVkVfUFJPQ0VTU19IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHNpZ25hbC5oPiBoZWFkZXIgZmlsZS4gKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TSUdOQUxfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3RkYXJnLmg+IHByb3RvdHlwZXMuICAqLwogI2RlZmluZSBIQVZFX1NUREFSR19QUk9UT1RZUEVTCkBAIC02ODQsOSArNjExLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9TWVNfU0VMRUNUX0ggMSAqLwogCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy9zdGF0Lmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TWVNfU1RBVF9IIDEKLSNlbmRpZgogCiAvKiBEZWZpbmUgaWYgeW91IGhhdmUgdGhlIDxzeXMvdGltZS5oPiBoZWFkZXIgZmlsZS4gICovCiAvKiAjZGVmaW5lIEhBVkVfU1lTX1RJTUVfSCAxICovCkBAIC02OTUsOSArNjIwLDcgQEAKIC8qICNkZWZpbmUgSEFWRV9TWVNfVElNRVNfSCAxICovCiAKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlciBmaWxlLiAgKi8KLSNpZm5kZWYgTVNfV0lOQ0UKICNkZWZpbmUgSEFWRV9TWVNfVFlQRVNfSCAxCi0jZW5kaWYKIAogLyogRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3VuLmg+IGhlYWRlciBmaWxlLiAgKi8KIC8qICNkZWZpbmUgSEFWRV9TWVNfVU5fSCAxICovCkBAIC03MjAsNiArNjQzLDkgQEAKIC8qIFRoZSBzaXplIG9mIGB3Y2hhcl90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfV0NIQVJfVCAyCiAKKy8qIFRoZSBzaXplIG9mIGBfQm9vbCcsIGFzIGNvbXB1dGVkIGJ5IHNpemVvZi4gKi8KKyNkZWZpbmUgU0laRU9GX19CT09MIDEKKwogLyogVGhlIHNpemUgb2YgYHBpZF90JywgYXMgY29tcHV0ZWQgYnkgc2l6ZW9mLiAqLwogI2RlZmluZSBTSVpFT0ZfUElEX1QgU0laRU9GX0lOVAogCmRpZmYgLS1naXQgYS9QQy9weWxhdW5jaGVyLnJjIGIvUEMvcHlsYXVuY2hlci5yYwppbmRleCBhOGRiMGE4Li4zZGEzNDQ1IDEwMDY0NAotLS0gYS9QQy9weWxhdW5jaGVyLnJjCisrKyBiL1BDL3B5bGF1bmNoZXIucmMKQEAgLTcsOSArNywxMyBAQAogI2luY2x1ZGUgPHdpbnVzZXIuaD4KIDEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKIAotMSBJQ09OIERJU0NBUkRBQkxFICJsYXVuY2hlci5pY28iIAotMiBJQ09OIERJU0NBUkRBQkxFICJweS5pY28iIAotMyBJQ09OIERJU0NBUkRBQkxFICJweWMuaWNvIiAKKzEgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNcbGF1bmNoZXIuaWNvIiAKKzIgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHkuaWNvIiAKKzMgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNccHljLmljbyIgCis0IElDT04gRElTQ0FSREFCTEUgImljb25zXHB5ZC5pY28iIAorNSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob24uaWNvIgorNiBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob253LmljbyIKKzcgSUNPTiBESVNDQVJEQUJMRSAiaWNvbnNcc2V0dXAuaWNvIiAKIAogLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KIC8vCmRpZmYgLS1naXQgYS9QQy9weXRob24ubWFuaWZlc3QgYi9QQy9weXRob24ubWFuaWZlc3QKaW5kZXggZDZlNGJiYS4uNGU3M2Q2MCAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uLm1hbmlmZXN0CisrKyBiL1BDL3B5dGhvbi5tYW5pZmVzdApAQCAtMTYsMTAgKzE2LDE1IEBACiAgICAgICA8c3VwcG9ydGVkT1MgSWQ9Ins4ZTBmN2ExMi1iZmIzLTRmZTgtYjlhNS00OGZkNTBhMTVhOWF9Ii8+CiAgICAgPC9hcHBsaWNhdGlvbj4gCiAgIDwvY29tcGF0aWJpbGl0eT4KKyAgPGFwcGxpY2F0aW9uIHhtbG5zPSJ1cm46c2NoZW1hcy1taWNyb3NvZnQtY29tOmFzbS52MyI+CisgICAgPHdpbmRvd3NTZXR0aW5ncz4KKyAgICAgIDxsb25nUGF0aEF3YXJlIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL1NNSS8yMDE2L1dpbmRvd3NTZXR0aW5ncyI+dHJ1ZTwvbG9uZ1BhdGhBd2FyZT4KKyAgICA8L3dpbmRvd3NTZXR0aW5ncz4KKyAgPC9hcHBsaWNhdGlvbj4KICAgPGRlcGVuZGVuY3k+CiAgICAgPGRlcGVuZGVudEFzc2VtYmx5PgogICAgICAgPGFzc2VtYmx5SWRlbnRpdHkgdHlwZT0id2luMzIiIG5hbWU9Ik1pY3Jvc29mdC5XaW5kb3dzLkNvbW1vbi1Db250cm9scyIKICAgICAgICAgICAgICAgICAgICAgICAgIHZlcnNpb249IjYuMC4wLjAiIHByb2Nlc3NvckFyY2hpdGVjdHVyZT0iKiIgcHVibGljS2V5VG9rZW49IjY1OTViNjQxNDRjY2YxZGYiIGxhbmd1YWdlPSIqIiAvPgogICAgIDwvZGVwZW5kZW50QXNzZW1ibHk+CiAgIDwvZGVwZW5kZW5jeT4KLTwvYXNzZW1ibHk+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9hc3NlbWJseT4KZGlmZiAtLWdpdCBhL1BDL3B5dGhvbjMuZGVmIGIvUEMvcHl0aG9uMy5kZWYKaW5kZXggODhjMDc0Mi4uZThkMmQ4YyAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uMy5kZWYKKysrIGIvUEMvcHl0aG9uMy5kZWYKQEAgLTIsNzEyICsyLDcxMyBAQAogOyBJdCBpcyB1c2VkIHdoZW4gYnVpbGRpbmcgcHl0aG9uM2RsbC52Y3hwcm9qCiBMSUJSQVJZCSJweXRob24zIgogRVhQT1JUUwotICBQeUFyZ19QYXJzZT1weXRob24zNS5QeUFyZ19QYXJzZQotICBQeUFyZ19QYXJzZVR1cGxlPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGUKLSAgUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM1LlB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcwotICBQeUFyZ19VbnBhY2tUdXBsZT1weXRob24zNS5QeUFyZ19VbnBhY2tUdXBsZQotICBQeUFyZ19WYVBhcnNlPXB5dGhvbjM1LlB5QXJnX1ZhUGFyc2UKLSAgUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHM9cHl0aG9uMzUuUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHMKLSAgUHlBcmdfVmFsaWRhdGVLZXl3b3JkQXJndW1lbnRzPXB5dGhvbjM1LlB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cwotICBQeUJhc2VPYmplY3RfVHlwZT1weXRob24zNS5QeUJhc2VPYmplY3RfVHlwZSBEQVRBCi0gIFB5Qm9vbF9Gcm9tTG9uZz1weXRob24zNS5QeUJvb2xfRnJvbUxvbmcKLSAgUHlCb29sX1R5cGU9cHl0aG9uMzUuUHlCb29sX1R5cGUgREFUQQotICBQeUJ5dGVBcnJheUl0ZXJfVHlwZT1weXRob24zNS5QeUJ5dGVBcnJheUl0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZUFycmF5X0FzU3RyaW5nPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0FzU3RyaW5nCi0gIFB5Qnl0ZUFycmF5X0NvbmNhdD1weXRob24zNS5QeUJ5dGVBcnJheV9Db25jYXQKLSAgUHlCeXRlQXJyYXlfRnJvbU9iamVjdD1weXRob24zNS5QeUJ5dGVBcnJheV9Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM1LlB5Qnl0ZUFycmF5X0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZUFycmF5X1Jlc2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9SZXNpemUKLSAgUHlCeXRlQXJyYXlfU2l6ZT1weXRob24zNS5QeUJ5dGVBcnJheV9TaXplCi0gIFB5Qnl0ZUFycmF5X1R5cGU9cHl0aG9uMzUuUHlCeXRlQXJyYXlfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNJdGVyX1R5cGU9cHl0aG9uMzUuUHlCeXRlc0l0ZXJfVHlwZSBEQVRBCi0gIFB5Qnl0ZXNfQXNTdHJpbmc9cHl0aG9uMzUuUHlCeXRlc19Bc1N0cmluZwotICBQeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0FzU3RyaW5nQW5kU2l6ZQotICBQeUJ5dGVzX0NvbmNhdD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdAotICBQeUJ5dGVzX0NvbmNhdEFuZERlbD1weXRob24zNS5QeUJ5dGVzX0NvbmNhdEFuZERlbAotICBQeUJ5dGVzX0RlY29kZUVzY2FwZT1weXRob24zNS5QeUJ5dGVzX0RlY29kZUVzY2FwZQotICBQeUJ5dGVzX0Zyb21Gb3JtYXQ9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0Ci0gIFB5Qnl0ZXNfRnJvbUZvcm1hdFY9cHl0aG9uMzUuUHlCeXRlc19Gcm9tRm9ybWF0VgotICBQeUJ5dGVzX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlCeXRlc19Gcm9tT2JqZWN0Ci0gIFB5Qnl0ZXNfRnJvbVN0cmluZz1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmcKLSAgUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNS5QeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5Qnl0ZXNfUmVwcj1weXRob24zNS5QeUJ5dGVzX1JlcHIKLSAgUHlCeXRlc19TaXplPXB5dGhvbjM1LlB5Qnl0ZXNfU2l6ZQotICBQeUJ5dGVzX1R5cGU9cHl0aG9uMzUuUHlCeXRlc19UeXBlIERBVEEKLSAgUHlDRnVuY3Rpb25fQ2FsbD1weXRob24zNS5QeUNGdW5jdGlvbl9DYWxsCi0gIFB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3Q9cHl0aG9uMzUuUHlDRnVuY3Rpb25fQ2xlYXJGcmVlTGlzdAotICBQeUNGdW5jdGlvbl9HZXRGbGFncz1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGbGFncwotICBQeUNGdW5jdGlvbl9HZXRGdW5jdGlvbj1weXRob24zNS5QeUNGdW5jdGlvbl9HZXRGdW5jdGlvbgotICBQeUNGdW5jdGlvbl9HZXRTZWxmPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX0dldFNlbGYKLSAgUHlDRnVuY3Rpb25fTmV3PXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX05ldwotICBQeUNGdW5jdGlvbl9OZXdFeD1weXRob24zNS5QeUNGdW5jdGlvbl9OZXdFeAotICBQeUNGdW5jdGlvbl9UeXBlPXB5dGhvbjM1LlB5Q0Z1bmN0aW9uX1R5cGUgREFUQQotICBQeUNhbGxJdGVyX05ldz1weXRob24zNS5QeUNhbGxJdGVyX05ldwotICBQeUNhbGxJdGVyX1R5cGU9cHl0aG9uMzUuUHlDYWxsSXRlcl9UeXBlIERBVEEKLSAgUHlDYWxsYWJsZV9DaGVjaz1weXRob24zNS5QeUNhbGxhYmxlX0NoZWNrCi0gIFB5Q2Fwc3VsZV9HZXRDb250ZXh0PXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRDb250ZXh0Ci0gIFB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXREZXN0cnVjdG9yCi0gIFB5Q2Fwc3VsZV9HZXROYW1lPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXROYW1lCi0gIFB5Q2Fwc3VsZV9HZXRQb2ludGVyPXB5dGhvbjM1LlB5Q2Fwc3VsZV9HZXRQb2ludGVyCi0gIFB5Q2Fwc3VsZV9JbXBvcnQ9cHl0aG9uMzUuUHlDYXBzdWxlX0ltcG9ydAotICBQeUNhcHN1bGVfSXNWYWxpZD1weXRob24zNS5QeUNhcHN1bGVfSXNWYWxpZAotICBQeUNhcHN1bGVfTmV3PXB5dGhvbjM1LlB5Q2Fwc3VsZV9OZXcKLSAgUHlDYXBzdWxlX1NldENvbnRleHQ9cHl0aG9uMzUuUHlDYXBzdWxlX1NldENvbnRleHQKLSAgUHlDYXBzdWxlX1NldERlc3RydWN0b3I9cHl0aG9uMzUuUHlDYXBzdWxlX1NldERlc3RydWN0b3IKLSAgUHlDYXBzdWxlX1NldE5hbWU9cHl0aG9uMzUuUHlDYXBzdWxlX1NldE5hbWUKLSAgUHlDYXBzdWxlX1NldFBvaW50ZXI9cHl0aG9uMzUuUHlDYXBzdWxlX1NldFBvaW50ZXIKLSAgUHlDYXBzdWxlX1R5cGU9cHl0aG9uMzUuUHlDYXBzdWxlX1R5cGUgREFUQQotICBQeUNsYXNzTWV0aG9kRGVzY3JfVHlwZT1weXRob24zNS5QeUNsYXNzTWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5Q29kZWNfQmFja3NsYXNoUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19EZWNvZGU9cHl0aG9uMzUuUHlDb2RlY19EZWNvZGUKLSAgUHlDb2RlY19EZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfRGVjb2RlcgotICBQeUNvZGVjX0VuY29kZT1weXRob24zNS5QeUNvZGVjX0VuY29kZQotICBQeUNvZGVjX0VuY29kZXI9cHl0aG9uMzUuUHlDb2RlY19FbmNvZGVyCi0gIFB5Q29kZWNfSWdub3JlRXJyb3JzPXB5dGhvbjM1LlB5Q29kZWNfSWdub3JlRXJyb3JzCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxEZWNvZGVyCi0gIFB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyPXB5dGhvbjM1LlB5Q29kZWNfSW5jcmVtZW50YWxFbmNvZGVyCi0gIFB5Q29kZWNfS25vd25FbmNvZGluZz1weXRob24zNS5QeUNvZGVjX0tub3duRW5jb2RpbmcKLSAgUHlDb2RlY19Mb29rdXBFcnJvcj1weXRob24zNS5QeUNvZGVjX0xvb2t1cEVycm9yCi0gIFB5Q29kZWNfUmVnaXN0ZXI9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlcgotICBQeUNvZGVjX1JlZ2lzdGVyRXJyb3I9cHl0aG9uMzUuUHlDb2RlY19SZWdpc3RlckVycm9yCi0gIFB5Q29kZWNfUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1JlcGxhY2VFcnJvcnMKLSAgUHlDb2RlY19TdHJlYW1SZWFkZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1SZWFkZXIKLSAgUHlDb2RlY19TdHJlYW1Xcml0ZXI9cHl0aG9uMzUuUHlDb2RlY19TdHJlYW1Xcml0ZXIKLSAgUHlDb2RlY19TdHJpY3RFcnJvcnM9cHl0aG9uMzUuUHlDb2RlY19TdHJpY3RFcnJvcnMKLSAgUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycz1weXRob24zNS5QeUNvZGVjX1hNTENoYXJSZWZSZXBsYWNlRXJyb3JzCi0gIFB5Q29tcGxleF9Gcm9tRG91Ymxlcz1weXRob24zNS5QeUNvbXBsZXhfRnJvbURvdWJsZXMKLSAgUHlDb21wbGV4X0ltYWdBc0RvdWJsZT1weXRob24zNS5QeUNvbXBsZXhfSW1hZ0FzRG91YmxlCi0gIFB5Q29tcGxleF9SZWFsQXNEb3VibGU9cHl0aG9uMzUuUHlDb21wbGV4X1JlYWxBc0RvdWJsZQotICBQeUNvbXBsZXhfVHlwZT1weXRob24zNS5QeUNvbXBsZXhfVHlwZSBEQVRBCi0gIFB5RGVzY3JfTmV3Q2xhc3NNZXRob2Q9cHl0aG9uMzUuUHlEZXNjcl9OZXdDbGFzc01ldGhvZAotICBQeURlc2NyX05ld0dldFNldD1weXRob24zNS5QeURlc2NyX05ld0dldFNldAotICBQeURlc2NyX05ld01lbWJlcj1weXRob24zNS5QeURlc2NyX05ld01lbWJlcgotICBQeURlc2NyX05ld01ldGhvZD1weXRob24zNS5QeURlc2NyX05ld01ldGhvZAotICBQeURpY3RJdGVtc19UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZW1zX1R5cGUgREFUQQotICBQeURpY3RJdGVySXRlbV9UeXBlPXB5dGhvbjM1LlB5RGljdEl0ZXJJdGVtX1R5cGUgREFUQQotICBQeURpY3RJdGVyS2V5X1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlcktleV9UeXBlIERBVEEKLSAgUHlEaWN0SXRlclZhbHVlX1R5cGU9cHl0aG9uMzUuUHlEaWN0SXRlclZhbHVlX1R5cGUgREFUQQotICBQeURpY3RLZXlzX1R5cGU9cHl0aG9uMzUuUHlEaWN0S2V5c19UeXBlIERBVEEKLSAgUHlEaWN0UHJveHlfTmV3PXB5dGhvbjM1LlB5RGljdFByb3h5X05ldwotICBQeURpY3RQcm94eV9UeXBlPXB5dGhvbjM1LlB5RGljdFByb3h5X1R5cGUgREFUQQotICBQeURpY3RWYWx1ZXNfVHlwZT1weXRob24zNS5QeURpY3RWYWx1ZXNfVHlwZSBEQVRBCi0gIFB5RGljdF9DbGVhcj1weXRob24zNS5QeURpY3RfQ2xlYXIKLSAgUHlEaWN0X0NvbnRhaW5zPXB5dGhvbjM1LlB5RGljdF9Db250YWlucwotICBQeURpY3RfQ29weT1weXRob24zNS5QeURpY3RfQ29weQotICBQeURpY3RfRGVsSXRlbT1weXRob24zNS5QeURpY3RfRGVsSXRlbQotICBQeURpY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfRGVsSXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbT1weXRob24zNS5QeURpY3RfR2V0SXRlbQotICBQeURpY3RfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeURpY3RfR2V0SXRlbVN0cmluZwotICBQeURpY3RfR2V0SXRlbVdpdGhFcnJvcj1weXRob24zNS5QeURpY3RfR2V0SXRlbVdpdGhFcnJvcgotICBQeURpY3RfSXRlbXM9cHl0aG9uMzUuUHlEaWN0X0l0ZW1zCi0gIFB5RGljdF9LZXlzPXB5dGhvbjM1LlB5RGljdF9LZXlzCi0gIFB5RGljdF9NZXJnZT1weXRob24zNS5QeURpY3RfTWVyZ2UKLSAgUHlEaWN0X01lcmdlRnJvbVNlcTI9cHl0aG9uMzUuUHlEaWN0X01lcmdlRnJvbVNlcTIKLSAgUHlEaWN0X05ldz1weXRob24zNS5QeURpY3RfTmV3Ci0gIFB5RGljdF9OZXh0PXB5dGhvbjM1LlB5RGljdF9OZXh0Ci0gIFB5RGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtCi0gIFB5RGljdF9TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5RGljdF9TZXRJdGVtU3RyaW5nCi0gIFB5RGljdF9TaXplPXB5dGhvbjM1LlB5RGljdF9TaXplCi0gIFB5RGljdF9UeXBlPXB5dGhvbjM1LlB5RGljdF9UeXBlIERBVEEKLSAgUHlEaWN0X1VwZGF0ZT1weXRob24zNS5QeURpY3RfVXBkYXRlCi0gIFB5RGljdF9WYWx1ZXM9cHl0aG9uMzUuUHlEaWN0X1ZhbHVlcwotICBQeUVsbGlwc2lzX1R5cGU9cHl0aG9uMzUuUHlFbGxpcHNpc19UeXBlIERBVEEKLSAgUHlFbnVtX1R5cGU9cHl0aG9uMzUuUHlFbnVtX1R5cGUgREFUQQotICBQeUVycl9CYWRBcmd1bWVudD1weXRob24zNS5QeUVycl9CYWRBcmd1bWVudAotICBQeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzUuUHlFcnJfQmFkSW50ZXJuYWxDYWxsCi0gIFB5RXJyX0NoZWNrU2lnbmFscz1weXRob24zNS5QeUVycl9DaGVja1NpZ25hbHMKLSAgUHlFcnJfQ2xlYXI9cHl0aG9uMzUuUHlFcnJfQ2xlYXIKLSAgUHlFcnJfRGlzcGxheT1weXRob24zNS5QeUVycl9EaXNwbGF5Ci0gIFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcwotICBQeUVycl9GZXRjaD1weXRob24zNS5QeUVycl9GZXRjaAotICBQeUVycl9Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfRm9ybWF0Ci0gIFB5RXJyX0Zvcm1hdFY9cHl0aG9uMzUuUHlFcnJfRm9ybWF0VgotICBQeUVycl9HaXZlbkV4Y2VwdGlvbk1hdGNoZXM9cHl0aG9uMzUuUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzCi0gIFB5RXJyX05ld0V4Y2VwdGlvbj1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb24KLSAgUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYz1weXRob24zNS5QeUVycl9OZXdFeGNlcHRpb25XaXRoRG9jCi0gIFB5RXJyX05vTWVtb3J5PXB5dGhvbjM1LlB5RXJyX05vTWVtb3J5Ci0gIFB5RXJyX05vcm1hbGl6ZUV4Y2VwdGlvbj1weXRob24zNS5QeUVycl9Ob3JtYWxpemVFeGNlcHRpb24KLSAgUHlFcnJfT2NjdXJyZWQ9cHl0aG9uMzUuUHlFcnJfT2NjdXJyZWQKLSAgUHlFcnJfUHJpbnQ9cHl0aG9uMzUuUHlFcnJfUHJpbnQKLSAgUHlFcnJfUHJpbnRFeD1weXRob24zNS5QeUVycl9QcmludEV4Ci0gIFB5RXJyX1Byb2dyYW1UZXh0PXB5dGhvbjM1LlB5RXJyX1Byb2dyYW1UZXh0Ci0gIFB5RXJyX1Jlc3RvcmU9cHl0aG9uMzUuUHlFcnJfUmVzdG9yZQotICBQeUVycl9TZXRGcm9tRXJybm89cHl0aG9uMzUuUHlFcnJfU2V0RnJvbUVycm5vCi0gIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZT1weXRob24zNS5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWUKLSAgUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdAotICBQeUVycl9TZXRJbnRlcnJ1cHQ9cHl0aG9uMzUuUHlFcnJfU2V0SW50ZXJydXB0Ci0gIFB5RXJyX1NldE5vbmU9cHl0aG9uMzUuUHlFcnJfU2V0Tm9uZQotICBQeUVycl9TZXRPYmplY3Q9cHl0aG9uMzUuUHlFcnJfU2V0T2JqZWN0Ci0gIFB5RXJyX1NldFN0cmluZz1weXRob24zNS5QeUVycl9TZXRTdHJpbmcKLSAgUHlFcnJfU3ludGF4TG9jYXRpb249cHl0aG9uMzUuUHlFcnJfU3ludGF4TG9jYXRpb24KLSAgUHlFcnJfV2FybkV4PXB5dGhvbjM1LlB5RXJyX1dhcm5FeAotICBQeUVycl9XYXJuRXhwbGljaXQ9cHl0aG9uMzUuUHlFcnJfV2FybkV4cGxpY2l0Ci0gIFB5RXJyX1dhcm5Gb3JtYXQ9cHl0aG9uMzUuUHlFcnJfV2FybkZvcm1hdAotICBQeUVycl9Xcml0ZVVucmFpc2FibGU9cHl0aG9uMzUuUHlFcnJfV3JpdGVVbnJhaXNhYmxlCi0gIFB5RXZhbF9BY3F1aXJlTG9jaz1weXRob24zNS5QeUV2YWxfQWNxdWlyZUxvY2sKLSAgUHlFdmFsX0FjcXVpcmVUaHJlYWQ9cHl0aG9uMzUuUHlFdmFsX0FjcXVpcmVUaHJlYWQKLSAgUHlFdmFsX0NhbGxGdW5jdGlvbj1weXRob24zNS5QeUV2YWxfQ2FsbEZ1bmN0aW9uCi0gIFB5RXZhbF9DYWxsTWV0aG9kPXB5dGhvbjM1LlB5RXZhbF9DYWxsTWV0aG9kCi0gIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzPXB5dGhvbjM1LlB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzCi0gIFB5RXZhbF9FdmFsQ29kZT1weXRob24zNS5QeUV2YWxfRXZhbENvZGUKLSAgUHlFdmFsX0V2YWxDb2RlRXg9cHl0aG9uMzUuUHlFdmFsX0V2YWxDb2RlRXgKLSAgUHlFdmFsX0V2YWxGcmFtZT1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lCi0gIFB5RXZhbF9FdmFsRnJhbWVFeD1weXRob24zNS5QeUV2YWxfRXZhbEZyYW1lRXgKLSAgUHlFdmFsX0dldEJ1aWx0aW5zPXB5dGhvbjM1LlB5RXZhbF9HZXRCdWlsdGlucwotICBQeUV2YWxfR2V0Q2FsbFN0YXRzPXB5dGhvbjM1LlB5RXZhbF9HZXRDYWxsU3RhdHMKLSAgUHlFdmFsX0dldEZyYW1lPXB5dGhvbjM1LlB5RXZhbF9HZXRGcmFtZQotICBQeUV2YWxfR2V0RnVuY0Rlc2M9cHl0aG9uMzUuUHlFdmFsX0dldEZ1bmNEZXNjCi0gIFB5RXZhbF9HZXRGdW5jTmFtZT1weXRob24zNS5QeUV2YWxfR2V0RnVuY05hbWUKLSAgUHlFdmFsX0dldEdsb2JhbHM9cHl0aG9uMzUuUHlFdmFsX0dldEdsb2JhbHMKLSAgUHlFdmFsX0dldExvY2Fscz1weXRob24zNS5QeUV2YWxfR2V0TG9jYWxzCi0gIFB5RXZhbF9Jbml0VGhyZWFkcz1weXRob24zNS5QeUV2YWxfSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlSW5pdFRocmVhZHM9cHl0aG9uMzUuUHlFdmFsX1JlSW5pdFRocmVhZHMKLSAgUHlFdmFsX1JlbGVhc2VMb2NrPXB5dGhvbjM1LlB5RXZhbF9SZWxlYXNlTG9jawotICBQeUV2YWxfUmVsZWFzZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVsZWFzZVRocmVhZAotICBQeUV2YWxfUmVzdG9yZVRocmVhZD1weXRob24zNS5QeUV2YWxfUmVzdG9yZVRocmVhZAotICBQeUV2YWxfU2F2ZVRocmVhZD1weXRob24zNS5QeUV2YWxfU2F2ZVRocmVhZAotICBQeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkPXB5dGhvbjM1LlB5RXZhbF9UaHJlYWRzSW5pdGlhbGl6ZWQKLSAgUHlFeGNfQXJpdGhtZXRpY0Vycm9yPXB5dGhvbjM1LlB5RXhjX0FyaXRobWV0aWNFcnJvciBEQVRBCi0gIFB5RXhjX0Fzc2VydGlvbkVycm9yPXB5dGhvbjM1LlB5RXhjX0Fzc2VydGlvbkVycm9yIERBVEEKLSAgUHlFeGNfQXR0cmlidXRlRXJyb3I9cHl0aG9uMzUuUHlFeGNfQXR0cmlidXRlRXJyb3IgREFUQQotICBQeUV4Y19CYXNlRXhjZXB0aW9uPXB5dGhvbjM1LlB5RXhjX0Jhc2VFeGNlcHRpb24gREFUQQotICBQeUV4Y19CdWZmZXJFcnJvcj1weXRob24zNS5QeUV4Y19CdWZmZXJFcnJvciBEQVRBCi0gIFB5RXhjX0J5dGVzV2FybmluZz1weXRob24zNS5QeUV4Y19CeXRlc1dhcm5pbmcgREFUQQotICBQeUV4Y19EZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nIERBVEEKLSAgUHlFeGNfRU9GRXJyb3I9cHl0aG9uMzUuUHlFeGNfRU9GRXJyb3IgREFUQQotICBQeUV4Y19FbnZpcm9ubWVudEVycm9yPXB5dGhvbjM1LlB5RXhjX0Vudmlyb25tZW50RXJyb3IgREFUQQotICBQeUV4Y19FeGNlcHRpb249cHl0aG9uMzUuUHlFeGNfRXhjZXB0aW9uIERBVEEKLSAgUHlFeGNfRmxvYXRpbmdQb2ludEVycm9yPXB5dGhvbjM1LlB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvciBEQVRBCi0gIFB5RXhjX0Z1dHVyZVdhcm5pbmc9cHl0aG9uMzUuUHlFeGNfRnV0dXJlV2FybmluZyBEQVRBCi0gIFB5RXhjX0dlbmVyYXRvckV4aXQ9cHl0aG9uMzUuUHlFeGNfR2VuZXJhdG9yRXhpdCBEQVRBCi0gIFB5RXhjX0lPRXJyb3I9cHl0aG9uMzUuUHlFeGNfSU9FcnJvciBEQVRBCi0gIFB5RXhjX0ltcG9ydEVycm9yPXB5dGhvbjM1LlB5RXhjX0ltcG9ydEVycm9yIERBVEEKLSAgUHlFeGNfSW1wb3J0V2FybmluZz1weXRob24zNS5QeUV4Y19JbXBvcnRXYXJuaW5nIERBVEEKLSAgUHlFeGNfSW5kZW50YXRpb25FcnJvcj1weXRob24zNS5QeUV4Y19JbmRlbnRhdGlvbkVycm9yIERBVEEKLSAgUHlFeGNfSW5kZXhFcnJvcj1weXRob24zNS5QeUV4Y19JbmRleEVycm9yIERBVEEKLSAgUHlFeGNfS2V5RXJyb3I9cHl0aG9uMzUuUHlFeGNfS2V5RXJyb3IgREFUQQotICBQeUV4Y19LZXlib2FyZEludGVycnVwdD1weXRob24zNS5QeUV4Y19LZXlib2FyZEludGVycnVwdCBEQVRBCi0gIFB5RXhjX0xvb2t1cEVycm9yPXB5dGhvbjM1LlB5RXhjX0xvb2t1cEVycm9yIERBVEEKLSAgUHlFeGNfTWVtb3J5RXJyb3I9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3IgREFUQQotICBQeUV4Y19NZW1vcnlFcnJvckluc3Q9cHl0aG9uMzUuUHlFeGNfTWVtb3J5RXJyb3JJbnN0IERBVEEKLSAgUHlFeGNfTmFtZUVycm9yPXB5dGhvbjM1LlB5RXhjX05hbWVFcnJvciBEQVRBCi0gIFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3I9cHl0aG9uMzUuUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciBEQVRBCi0gIFB5RXhjX09TRXJyb3I9cHl0aG9uMzUuUHlFeGNfT1NFcnJvciBEQVRBCi0gIFB5RXhjX092ZXJmbG93RXJyb3I9cHl0aG9uMzUuUHlFeGNfT3ZlcmZsb3dFcnJvciBEQVRBCi0gIFB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmc9cHl0aG9uMzUuUHlFeGNfUGVuZGluZ0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCi0gIFB5RXhjX1JlY3Vyc2lvbkVycm9ySW5zdD1weXRob24zNS5QeUV4Y19SZWN1cnNpb25FcnJvckluc3QgREFUQQotICBQeUV4Y19SZWZlcmVuY2VFcnJvcj1weXRob24zNS5QeUV4Y19SZWZlcmVuY2VFcnJvciBEQVRBCi0gIFB5RXhjX1J1bnRpbWVFcnJvcj1weXRob24zNS5QeUV4Y19SdW50aW1lRXJyb3IgREFUQQotICBQeUV4Y19SdW50aW1lV2FybmluZz1weXRob24zNS5QeUV4Y19SdW50aW1lV2FybmluZyBEQVRBCi0gIFB5RXhjX1N0b3BJdGVyYXRpb249cHl0aG9uMzUuUHlFeGNfU3RvcEl0ZXJhdGlvbiBEQVRBCi0gIFB5RXhjX1N5bnRheEVycm9yPXB5dGhvbjM1LlB5RXhjX1N5bnRheEVycm9yIERBVEEKLSAgUHlFeGNfU3ludGF4V2FybmluZz1weXRob24zNS5QeUV4Y19TeW50YXhXYXJuaW5nIERBVEEKLSAgUHlFeGNfU3lzdGVtRXJyb3I9cHl0aG9uMzUuUHlFeGNfU3lzdGVtRXJyb3IgREFUQQotICBQeUV4Y19TeXN0ZW1FeGl0PXB5dGhvbjM1LlB5RXhjX1N5c3RlbUV4aXQgREFUQQotICBQeUV4Y19UYWJFcnJvcj1weXRob24zNS5QeUV4Y19UYWJFcnJvciBEQVRBCi0gIFB5RXhjX1R5cGVFcnJvcj1weXRob24zNS5QeUV4Y19UeXBlRXJyb3IgREFUQQotICBQeUV4Y19VbmJvdW5kTG9jYWxFcnJvcj1weXRob24zNS5QeUV4Y19VbmJvdW5kTG9jYWxFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVEZWNvZGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlRW5jb2RlRXJyb3I9cHl0aG9uMzUuUHlFeGNfVW5pY29kZUVuY29kZUVycm9yIERBVEEKLSAgUHlFeGNfVW5pY29kZUVycm9yPXB5dGhvbjM1LlB5RXhjX1VuaWNvZGVFcnJvciBEQVRBCi0gIFB5RXhjX1VuaWNvZGVUcmFuc2xhdGVFcnJvcj1weXRob24zNS5QeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3IgREFUQQotICBQeUV4Y19Vbmljb2RlV2FybmluZz1weXRob24zNS5QeUV4Y19Vbmljb2RlV2FybmluZyBEQVRBCi0gIFB5RXhjX1VzZXJXYXJuaW5nPXB5dGhvbjM1LlB5RXhjX1VzZXJXYXJuaW5nIERBVEEKLSAgUHlFeGNfVmFsdWVFcnJvcj1weXRob24zNS5QeUV4Y19WYWx1ZUVycm9yIERBVEEKLSAgUHlFeGNfV2FybmluZz1weXRob24zNS5QeUV4Y19XYXJuaW5nIERBVEEKLSAgUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3I9cHl0aG9uMzUuUHlFeGNfWmVyb0RpdmlzaW9uRXJyb3IgREFUQQotICBQeUV4Y2VwdGlvbl9HZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9HZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9HZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldENvbnRleHQKLSAgUHlFeGNlcHRpb25fR2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX0dldFRyYWNlYmFjawotICBQeUV4Y2VwdGlvbl9TZXRDYXVzZT1weXRob24zNS5QeUV4Y2VwdGlvbl9TZXRDYXVzZQotICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0PXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldENvbnRleHQKLSAgUHlFeGNlcHRpb25fU2V0VHJhY2ViYWNrPXB5dGhvbjM1LlB5RXhjZXB0aW9uX1NldFRyYWNlYmFjawotICBQeUZpbGVfRnJvbUZkPXB5dGhvbjM1LlB5RmlsZV9Gcm9tRmQKLSAgUHlGaWxlX0dldExpbmU9cHl0aG9uMzUuUHlGaWxlX0dldExpbmUKLSAgUHlGaWxlX1dyaXRlT2JqZWN0PXB5dGhvbjM1LlB5RmlsZV9Xcml0ZU9iamVjdAotICBQeUZpbGVfV3JpdGVTdHJpbmc9cHl0aG9uMzUuUHlGaWxlX1dyaXRlU3RyaW5nCi0gIFB5RmlsdGVyX1R5cGU9cHl0aG9uMzUuUHlGaWx0ZXJfVHlwZSBEQVRBCi0gIFB5RmxvYXRfQXNEb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Bc0RvdWJsZQotICBQeUZsb2F0X0Zyb21Eb3VibGU9cHl0aG9uMzUuUHlGbG9hdF9Gcm9tRG91YmxlCi0gIFB5RmxvYXRfRnJvbVN0cmluZz1weXRob24zNS5QeUZsb2F0X0Zyb21TdHJpbmcKLSAgUHlGbG9hdF9HZXRJbmZvPXB5dGhvbjM1LlB5RmxvYXRfR2V0SW5mbwotICBQeUZsb2F0X0dldE1heD1weXRob24zNS5QeUZsb2F0X0dldE1heAotICBQeUZsb2F0X0dldE1pbj1weXRob24zNS5QeUZsb2F0X0dldE1pbgotICBQeUZsb2F0X1R5cGU9cHl0aG9uMzUuUHlGbG9hdF9UeXBlIERBVEEKLSAgUHlGcm96ZW5TZXRfTmV3PXB5dGhvbjM1LlB5RnJvemVuU2V0X05ldwotICBQeUZyb3plblNldF9UeXBlPXB5dGhvbjM1LlB5RnJvemVuU2V0X1R5cGUgREFUQQotICBQeUdDX0NvbGxlY3Q9cHl0aG9uMzUuUHlHQ19Db2xsZWN0Ci0gIFB5R0lMU3RhdGVfRW5zdXJlPXB5dGhvbjM1LlB5R0lMU3RhdGVfRW5zdXJlCi0gIFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlPXB5dGhvbjM1LlB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlCi0gIFB5R0lMU3RhdGVfUmVsZWFzZT1weXRob24zNS5QeUdJTFN0YXRlX1JlbGVhc2UKLSAgUHlHZXRTZXREZXNjcl9UeXBlPXB5dGhvbjM1LlB5R2V0U2V0RGVzY3JfVHlwZSBEQVRBCi0gIFB5SW1wb3J0X0FkZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9BZGRNb2R1bGUKLSAgUHlJbXBvcnRfQXBwZW5kSW5pdHRhYj1weXRob24zNS5QeUltcG9ydF9BcHBlbmRJbml0dGFiCi0gIFB5SW1wb3J0X0NsZWFudXA9cHl0aG9uMzUuUHlJbXBvcnRfQ2xlYW51cAotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZT1weXRob24zNS5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZQotICBQeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4PXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlRXgKLSAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVXaXRoUGF0aG5hbWVzPXB5dGhvbjM1LlB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcwotICBQeUltcG9ydF9HZXRJbXBvcnRlcj1weXRob24zNS5QeUltcG9ydF9HZXRJbXBvcnRlcgotICBQeUltcG9ydF9HZXRNYWdpY051bWJlcj1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY051bWJlcgotICBQeUltcG9ydF9HZXRNYWdpY1RhZz1weXRob24zNS5QeUltcG9ydF9HZXRNYWdpY1RhZwotICBQeUltcG9ydF9HZXRNb2R1bGVEaWN0PXB5dGhvbjM1LlB5SW1wb3J0X0dldE1vZHVsZURpY3QKLSAgUHlJbXBvcnRfSW1wb3J0PXB5dGhvbjM1LlB5SW1wb3J0X0ltcG9ydAotICBQeUltcG9ydF9JbXBvcnRGcm96ZW5Nb2R1bGU9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlCi0gIFB5SW1wb3J0X0ltcG9ydE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGUKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWw9cHl0aG9uMzUuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTGV2ZWwKLSAgUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaz1weXRob24zNS5QeUltcG9ydF9JbXBvcnRNb2R1bGVOb0Jsb2NrCi0gIFB5SW1wb3J0X1JlbG9hZE1vZHVsZT1weXRob24zNS5QeUltcG9ydF9SZWxvYWRNb2R1bGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX0NsZWFyPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcgotICBQeUludGVycHJldGVyU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUKLSAgUHlJbnRlcnByZXRlclN0YXRlX05ldz1weXRob24zNS5QeUludGVycHJldGVyU3RhdGVfTmV3Ci0gIFB5SXRlcl9OZXh0PXB5dGhvbjM1LlB5SXRlcl9OZXh0Ci0gIFB5TGlzdEl0ZXJfVHlwZT1weXRob24zNS5QeUxpc3RJdGVyX1R5cGUgREFUQQotICBQeUxpc3RSZXZJdGVyX1R5cGU9cHl0aG9uMzUuUHlMaXN0UmV2SXRlcl9UeXBlIERBVEEKLSAgUHlMaXN0X0FwcGVuZD1weXRob24zNS5QeUxpc3RfQXBwZW5kCi0gIFB5TGlzdF9Bc1R1cGxlPXB5dGhvbjM1LlB5TGlzdF9Bc1R1cGxlCi0gIFB5TGlzdF9HZXRJdGVtPXB5dGhvbjM1LlB5TGlzdF9HZXRJdGVtCi0gIFB5TGlzdF9HZXRTbGljZT1weXRob24zNS5QeUxpc3RfR2V0U2xpY2UKLSAgUHlMaXN0X0luc2VydD1weXRob24zNS5QeUxpc3RfSW5zZXJ0Ci0gIFB5TGlzdF9OZXc9cHl0aG9uMzUuUHlMaXN0X05ldwotICBQeUxpc3RfUmV2ZXJzZT1weXRob24zNS5QeUxpc3RfUmV2ZXJzZQotICBQeUxpc3RfU2V0SXRlbT1weXRob24zNS5QeUxpc3RfU2V0SXRlbQotICBQeUxpc3RfU2V0U2xpY2U9cHl0aG9uMzUuUHlMaXN0X1NldFNsaWNlCi0gIFB5TGlzdF9TaXplPXB5dGhvbjM1LlB5TGlzdF9TaXplCi0gIFB5TGlzdF9Tb3J0PXB5dGhvbjM1LlB5TGlzdF9Tb3J0Ci0gIFB5TGlzdF9UeXBlPXB5dGhvbjM1LlB5TGlzdF9UeXBlIERBVEEKLSAgUHlMb25nUmFuZ2VJdGVyX1R5cGU9cHl0aG9uMzUuUHlMb25nUmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeUxvbmdfQXNEb3VibGU9cHl0aG9uMzUuUHlMb25nX0FzRG91YmxlCi0gIFB5TG9uZ19Bc0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzTG9uZwotICBQeUxvbmdfQXNMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93Ci0gIFB5TG9uZ19Bc0xvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Bc0xvbmdMb25nCi0gIFB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3c9cHl0aG9uMzUuUHlMb25nX0FzTG9uZ0xvbmdBbmRPdmVyZmxvdwotICBQeUxvbmdfQXNTaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU2l6ZV90Ci0gIFB5TG9uZ19Bc1NzaXplX3Q9cHl0aG9uMzUuUHlMb25nX0FzU3NpemVfdAotICBQeUxvbmdfQXNVbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nCi0gIFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmc9cHl0aG9uMzUuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzaz1weXRob24zNS5QeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nTWFzawotICBQeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrPXB5dGhvbjM1LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ01hc2sKLSAgUHlMb25nX0FzVm9pZFB0cj1weXRob24zNS5QeUxvbmdfQXNWb2lkUHRyCi0gIFB5TG9uZ19Gcm9tRG91YmxlPXB5dGhvbjM1LlB5TG9uZ19Gcm9tRG91YmxlCi0gIFB5TG9uZ19Gcm9tTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmcKLSAgUHlMb25nX0Zyb21Mb25nTG9uZz1weXRob24zNS5QeUxvbmdfRnJvbUxvbmdMb25nCi0gIFB5TG9uZ19Gcm9tU2l6ZV90PXB5dGhvbjM1LlB5TG9uZ19Gcm9tU2l6ZV90Ci0gIFB5TG9uZ19Gcm9tU3NpemVfdD1weXRob24zNS5QeUxvbmdfRnJvbVNzaXplX3QKLSAgUHlMb25nX0Zyb21TdHJpbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21TdHJpbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmc9cHl0aG9uMzUuUHlMb25nX0Zyb21VbnNpZ25lZExvbmcKLSAgUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nPXB5dGhvbjM1LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZwotICBQeUxvbmdfRnJvbVZvaWRQdHI9cHl0aG9uMzUuUHlMb25nX0Zyb21Wb2lkUHRyCi0gIFB5TG9uZ19HZXRJbmZvPXB5dGhvbjM1LlB5TG9uZ19HZXRJbmZvCi0gIFB5TG9uZ19UeXBlPXB5dGhvbjM1LlB5TG9uZ19UeXBlIERBVEEKLSAgUHlNYXBfVHlwZT1weXRob24zNS5QeU1hcF9UeXBlIERBVEEKLSAgUHlNYXBwaW5nX0NoZWNrPXB5dGhvbjM1LlB5TWFwcGluZ19DaGVjawotICBQeU1hcHBpbmdfR2V0SXRlbVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfR2V0SXRlbVN0cmluZwotICBQeU1hcHBpbmdfSGFzS2V5PXB5dGhvbjM1LlB5TWFwcGluZ19IYXNLZXkKLSAgUHlNYXBwaW5nX0hhc0tleVN0cmluZz1weXRob24zNS5QeU1hcHBpbmdfSGFzS2V5U3RyaW5nCi0gIFB5TWFwcGluZ19JdGVtcz1weXRob24zNS5QeU1hcHBpbmdfSXRlbXMKLSAgUHlNYXBwaW5nX0tleXM9cHl0aG9uMzUuUHlNYXBwaW5nX0tleXMKLSAgUHlNYXBwaW5nX0xlbmd0aD1weXRob24zNS5QeU1hcHBpbmdfTGVuZ3RoCi0gIFB5TWFwcGluZ19TZXRJdGVtU3RyaW5nPXB5dGhvbjM1LlB5TWFwcGluZ19TZXRJdGVtU3RyaW5nCi0gIFB5TWFwcGluZ19TaXplPXB5dGhvbjM1LlB5TWFwcGluZ19TaXplCi0gIFB5TWFwcGluZ19WYWx1ZXM9cHl0aG9uMzUuUHlNYXBwaW5nX1ZhbHVlcwotICBQeU1lbV9GcmVlPXB5dGhvbjM1LlB5TWVtX0ZyZWUKLSAgUHlNZW1fTWFsbG9jPXB5dGhvbjM1LlB5TWVtX01hbGxvYwotICBQeU1lbV9SZWFsbG9jPXB5dGhvbjM1LlB5TWVtX1JlYWxsb2MKLSAgUHlNZW1iZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWVtYmVyRGVzY3JfVHlwZSBEQVRBCi0gIFB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0PXB5dGhvbjM1LlB5TWVtb3J5Vmlld19Gcm9tT2JqZWN0Ci0gIFB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19HZXRDb250aWd1b3VzCi0gIFB5TWVtb3J5Vmlld19UeXBlPXB5dGhvbjM1LlB5TWVtb3J5Vmlld19UeXBlIERBVEEKLSAgUHlNZXRob2REZXNjcl9UeXBlPXB5dGhvbjM1LlB5TWV0aG9kRGVzY3JfVHlwZSBEQVRBCi0gIFB5TW9kdWxlX0FkZEludENvbnN0YW50PXB5dGhvbjM1LlB5TW9kdWxlX0FkZEludENvbnN0YW50Ci0gIFB5TW9kdWxlX0FkZE9iamVjdD1weXRob24zNS5QeU1vZHVsZV9BZGRPYmplY3QKLSAgUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQ9cHl0aG9uMzUuUHlNb2R1bGVfQWRkU3RyaW5nQ29uc3RhbnQKLSAgUHlNb2R1bGVfQ3JlYXRlMj1weXRob24zNS5QeU1vZHVsZV9DcmVhdGUyCi0gIFB5TW9kdWxlX0dldERlZj1weXRob24zNS5QeU1vZHVsZV9HZXREZWYKLSAgUHlNb2R1bGVfR2V0RGljdD1weXRob24zNS5QeU1vZHVsZV9HZXREaWN0Ci0gIFB5TW9kdWxlX0dldEZpbGVuYW1lPXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lCi0gIFB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0PXB5dGhvbjM1LlB5TW9kdWxlX0dldEZpbGVuYW1lT2JqZWN0Ci0gIFB5TW9kdWxlX0dldE5hbWU9cHl0aG9uMzUuUHlNb2R1bGVfR2V0TmFtZQotICBQeU1vZHVsZV9HZXRTdGF0ZT1weXRob24zNS5QeU1vZHVsZV9HZXRTdGF0ZQotICBQeU1vZHVsZV9OZXc9cHl0aG9uMzUuUHlNb2R1bGVfTmV3Ci0gIFB5TW9kdWxlX1R5cGU9cHl0aG9uMzUuUHlNb2R1bGVfVHlwZSBEQVRBCi0gIFB5TW9kdWxlRGVmX0luaXQ9cHl0aG9uMzUuUHlNb2R1bGVEZWZfSW5pdAotICBQeU1vZHVsZURlZl9UeXBlPXB5dGhvbjM1LlB5TW9kdWxlRGVmX1R5cGUgREFUQQotICBQeU51bGxJbXBvcnRlcl9UeXBlPXB5dGhvbjM1LlB5TnVsbEltcG9ydGVyX1R5cGUgREFUQQotICBQeU51bWJlcl9BYnNvbHV0ZT1weXRob24zNS5QeU51bWJlcl9BYnNvbHV0ZQotICBQeU51bWJlcl9BZGQ9cHl0aG9uMzUuUHlOdW1iZXJfQWRkCi0gIFB5TnVtYmVyX0FuZD1weXRob24zNS5QeU51bWJlcl9BbmQKLSAgUHlOdW1iZXJfQXNTc2l6ZV90PXB5dGhvbjM1LlB5TnVtYmVyX0FzU3NpemVfdAotICBQeU51bWJlcl9DaGVjaz1weXRob24zNS5QeU51bWJlcl9DaGVjawotICBQeU51bWJlcl9EaXZtb2Q9cHl0aG9uMzUuUHlOdW1iZXJfRGl2bW9kCi0gIFB5TnVtYmVyX0Zsb2F0PXB5dGhvbjM1LlB5TnVtYmVyX0Zsb2F0Ci0gIFB5TnVtYmVyX0Zsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0Zsb29yRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VBZGQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZUFkZAotICBQeU51bWJlcl9JblBsYWNlQW5kPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VBbmQKLSAgUHlOdW1iZXJfSW5QbGFjZUZsb29yRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZQotICBQeU51bWJlcl9JblBsYWNlTHNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VMc2hpZnQKLSAgUHlOdW1iZXJfSW5QbGFjZU11bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VNdWx0aXBseQotICBQeU51bWJlcl9JblBsYWNlT3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZU9yCi0gIFB5TnVtYmVyX0luUGxhY2VQb3dlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUG93ZXIKLSAgUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9JblBsYWNlUmVtYWluZGVyCi0gIFB5TnVtYmVyX0luUGxhY2VSc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVJzaGlmdAotICBQeU51bWJlcl9JblBsYWNlU3VidHJhY3Q9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0Ci0gIFB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlPXB5dGhvbjM1LlB5TnVtYmVyX0luUGxhY2VUcnVlRGl2aWRlCi0gIFB5TnVtYmVyX0luUGxhY2VYb3I9cHl0aG9uMzUuUHlOdW1iZXJfSW5QbGFjZVhvcgotICBQeU51bWJlcl9JbmRleD1weXRob24zNS5QeU51bWJlcl9JbmRleAotICBQeU51bWJlcl9JbnZlcnQ9cHl0aG9uMzUuUHlOdW1iZXJfSW52ZXJ0Ci0gIFB5TnVtYmVyX0xvbmc9cHl0aG9uMzUuUHlOdW1iZXJfTG9uZwotICBQeU51bWJlcl9Mc2hpZnQ9cHl0aG9uMzUuUHlOdW1iZXJfTHNoaWZ0Ci0gIFB5TnVtYmVyX011bHRpcGx5PXB5dGhvbjM1LlB5TnVtYmVyX011bHRpcGx5Ci0gIFB5TnVtYmVyX05lZ2F0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX05lZ2F0aXZlCi0gIFB5TnVtYmVyX09yPXB5dGhvbjM1LlB5TnVtYmVyX09yCi0gIFB5TnVtYmVyX1Bvc2l0aXZlPXB5dGhvbjM1LlB5TnVtYmVyX1Bvc2l0aXZlCi0gIFB5TnVtYmVyX1Bvd2VyPXB5dGhvbjM1LlB5TnVtYmVyX1Bvd2VyCi0gIFB5TnVtYmVyX1JlbWFpbmRlcj1weXRob24zNS5QeU51bWJlcl9SZW1haW5kZXIKLSAgUHlOdW1iZXJfUnNoaWZ0PXB5dGhvbjM1LlB5TnVtYmVyX1JzaGlmdAotICBQeU51bWJlcl9TdWJ0cmFjdD1weXRob24zNS5QeU51bWJlcl9TdWJ0cmFjdAotICBQeU51bWJlcl9Ub0Jhc2U9cHl0aG9uMzUuUHlOdW1iZXJfVG9CYXNlCi0gIFB5TnVtYmVyX1RydWVEaXZpZGU9cHl0aG9uMzUuUHlOdW1iZXJfVHJ1ZURpdmlkZQotICBQeU51bWJlcl9Yb3I9cHl0aG9uMzUuUHlOdW1iZXJfWG9yCi0gIFB5T1NfQWZ0ZXJGb3JrPXB5dGhvbjM1LlB5T1NfQWZ0ZXJGb3JrCi0gIFB5T1NfSW5pdEludGVycnVwdHM9cHl0aG9uMzUuUHlPU19Jbml0SW50ZXJydXB0cwotICBQeU9TX0lucHV0SG9vaz1weXRob24zNS5QeU9TX0lucHV0SG9vayBEQVRBCi0gIFB5T1NfSW50ZXJydXB0T2NjdXJyZWQ9cHl0aG9uMzUuUHlPU19JbnRlcnJ1cHRPY2N1cnJlZAotICBQeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyPXB5dGhvbjM1LlB5T1NfUmVhZGxpbmVGdW5jdGlvblBvaW50ZXIgREFUQQotICBQeU9TX2RvdWJsZV90b19zdHJpbmc9cHl0aG9uMzUuUHlPU19kb3VibGVfdG9fc3RyaW5nCi0gIFB5T1NfZ2V0c2lnPXB5dGhvbjM1LlB5T1NfZ2V0c2lnCi0gIFB5T1NfbXlzdHJpY21wPXB5dGhvbjM1LlB5T1NfbXlzdHJpY21wCi0gIFB5T1NfbXlzdHJuaWNtcD1weXRob24zNS5QeU9TX215c3RybmljbXAKLSAgUHlPU19zZXRzaWc9cHl0aG9uMzUuUHlPU19zZXRzaWcKLSAgUHlPU19zbnByaW50Zj1weXRob24zNS5QeU9TX3NucHJpbnRmCi0gIFB5T1Nfc3RyaW5nX3RvX2RvdWJsZT1weXRob24zNS5QeU9TX3N0cmluZ190b19kb3VibGUKLSAgUHlPU19zdHJ0b2w9cHl0aG9uMzUuUHlPU19zdHJ0b2wKLSAgUHlPU19zdHJ0b3VsPXB5dGhvbjM1LlB5T1Nfc3RydG91bAotICBQeU9TX3ZzbnByaW50Zj1weXRob24zNS5QeU9TX3ZzbnByaW50ZgotICBQeU9iamVjdF9BU0NJST1weXRob24zNS5QeU9iamVjdF9BU0NJSQotICBQeU9iamVjdF9Bc0NoYXJCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNDaGFyQnVmZmVyCi0gIFB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3I9cHl0aG9uMzUuUHlPYmplY3RfQXNGaWxlRGVzY3JpcHRvcgotICBQeU9iamVjdF9Bc1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0FzV3JpdGVCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQXNXcml0ZUJ1ZmZlcgotICBQeU9iamVjdF9CeXRlcz1weXRob24zNS5QeU9iamVjdF9CeXRlcwotICBQeU9iamVjdF9DYWxsPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGwKLSAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbgotICBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MKLSAgUHlPYmplY3RfQ2FsbE1ldGhvZD1weXRob24zNS5QeU9iamVjdF9DYWxsTWV0aG9kCi0gIFB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzPXB5dGhvbjM1LlB5T2JqZWN0X0NhbGxNZXRob2RPYmpBcmdzCi0gIFB5T2JqZWN0X0NhbGxPYmplY3Q9cHl0aG9uMzUuUHlPYmplY3RfQ2FsbE9iamVjdAotICBQeU9iamVjdF9DaGVja1JlYWRCdWZmZXI9cHl0aG9uMzUuUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyCi0gIFB5T2JqZWN0X0NsZWFyV2Vha1JlZnM9cHl0aG9uMzUuUHlPYmplY3RfQ2xlYXJXZWFrUmVmcwotICBQeU9iamVjdF9EZWxJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0RlbEl0ZW0KLSAgUHlPYmplY3RfRGVsSXRlbVN0cmluZz1weXRob24zNS5QeU9iamVjdF9EZWxJdGVtU3RyaW5nCi0gIFB5T2JqZWN0X0Rpcj1weXRob24zNS5QeU9iamVjdF9EaXIKLSAgUHlPYmplY3RfRm9ybWF0PXB5dGhvbjM1LlB5T2JqZWN0X0Zvcm1hdAotICBQeU9iamVjdF9GcmVlPXB5dGhvbjM1LlB5T2JqZWN0X0ZyZWUKLSAgUHlPYmplY3RfR0NfRGVsPXB5dGhvbjM1LlB5T2JqZWN0X0dDX0RlbAotICBQeU9iamVjdF9HQ19UcmFjaz1weXRob24zNS5QeU9iamVjdF9HQ19UcmFjawotICBQeU9iamVjdF9HQ19VblRyYWNrPXB5dGhvbjM1LlB5T2JqZWN0X0dDX1VuVHJhY2sKLSAgUHlPYmplY3RfR2VuZXJpY0dldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY0dldEF0dHIKLSAgUHlPYmplY3RfR2VuZXJpY1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfR2VuZXJpY1NldEF0dHIKLSAgUHlPYmplY3RfR2V0QXR0cj1weXRob24zNS5QeU9iamVjdF9HZXRBdHRyCi0gIFB5T2JqZWN0X0dldEF0dHJTdHJpbmc9cHl0aG9uMzUuUHlPYmplY3RfR2V0QXR0clN0cmluZwotICBQeU9iamVjdF9HZXRJdGVtPXB5dGhvbjM1LlB5T2JqZWN0X0dldEl0ZW0KLSAgUHlPYmplY3RfR2V0SXRlcj1weXRob24zNS5QeU9iamVjdF9HZXRJdGVyCi0gIFB5T2JqZWN0X0hhc0F0dHI9cHl0aG9uMzUuUHlPYmplY3RfSGFzQXR0cgotICBQeU9iamVjdF9IYXNBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X0hhc0F0dHJTdHJpbmcKLSAgUHlPYmplY3RfSGFzaD1weXRob24zNS5QeU9iamVjdF9IYXNoCi0gIFB5T2JqZWN0X0hhc2hOb3RJbXBsZW1lbnRlZD1weXRob24zNS5QeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQKLSAgUHlPYmplY3RfSW5pdD1weXRob24zNS5QeU9iamVjdF9Jbml0Ci0gIFB5T2JqZWN0X0luaXRWYXI9cHl0aG9uMzUuUHlPYmplY3RfSW5pdFZhcgotICBQeU9iamVjdF9Jc0luc3RhbmNlPXB5dGhvbjM1LlB5T2JqZWN0X0lzSW5zdGFuY2UKLSAgUHlPYmplY3RfSXNTdWJjbGFzcz1weXRob24zNS5QeU9iamVjdF9Jc1N1YmNsYXNzCi0gIFB5T2JqZWN0X0lzVHJ1ZT1weXRob24zNS5QeU9iamVjdF9Jc1RydWUKLSAgUHlPYmplY3RfTGVuZ3RoPXB5dGhvbjM1LlB5T2JqZWN0X0xlbmd0aAotICBQeU9iamVjdF9NYWxsb2M9cHl0aG9uMzUuUHlPYmplY3RfTWFsbG9jCi0gIFB5T2JqZWN0X05vdD1weXRob24zNS5QeU9iamVjdF9Ob3QKLSAgUHlPYmplY3RfUmVhbGxvYz1weXRob24zNS5QeU9iamVjdF9SZWFsbG9jCi0gIFB5T2JqZWN0X1JlcHI9cHl0aG9uMzUuUHlPYmplY3RfUmVwcgotICBQeU9iamVjdF9SaWNoQ29tcGFyZT1weXRob24zNS5QeU9iamVjdF9SaWNoQ29tcGFyZQotICBQeU9iamVjdF9SaWNoQ29tcGFyZUJvb2w9cHl0aG9uMzUuUHlPYmplY3RfUmljaENvbXBhcmVCb29sCi0gIFB5T2JqZWN0X1NlbGZJdGVyPXB5dGhvbjM1LlB5T2JqZWN0X1NlbGZJdGVyCi0gIFB5T2JqZWN0X1NldEF0dHI9cHl0aG9uMzUuUHlPYmplY3RfU2V0QXR0cgotICBQeU9iamVjdF9TZXRBdHRyU3RyaW5nPXB5dGhvbjM1LlB5T2JqZWN0X1NldEF0dHJTdHJpbmcKLSAgUHlPYmplY3RfU2V0SXRlbT1weXRob24zNS5QeU9iamVjdF9TZXRJdGVtCi0gIFB5T2JqZWN0X1NpemU9cHl0aG9uMzUuUHlPYmplY3RfU2l6ZQotICBQeU9iamVjdF9TdHI9cHl0aG9uMzUuUHlPYmplY3RfU3RyCi0gIFB5T2JqZWN0X1R5cGU9cHl0aG9uMzUuUHlPYmplY3RfVHlwZSBEQVRBCi0gIFB5T0RpY3RfRGVsSXRlbT1weXRob24zNS5QeU9EaWN0X0RlbEl0ZW0KLSAgUHlPRGljdF9OZXc9cHl0aG9uMzUuUHlPRGljdF9OZXcKLSAgUHlPRGljdF9TZXRJdGVtPXB5dGhvbjM1LlB5T0RpY3RfU2V0SXRlbQotICBQeU9EaWN0X1R5cGU9cHl0aG9uMzUuUHlPRGljdF9UeXBlIERBVEEKLSAgUHlPRGljdEl0ZW1zX1R5cGU9cHl0aG9uMzUuUHlPRGljdEl0ZW1zX1R5cGUgREFUQQotICBQeU9EaWN0SXRlcl9UeXBlPXB5dGhvbjM1LlB5T0RpY3RJdGVyX1R5cGUgREFUQQotICBQeU9EaWN0S2V5c19UeXBlPXB5dGhvbjM1LlB5T0RpY3RLZXlzX1R5cGUgREFUQQotICBQeU9EaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzUuUHlPRGljdFZhbHVlc19UeXBlIERBVEEKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3M9cHl0aG9uMzUuUHlQYXJzZXJfU2ltcGxlUGFyc2VGaWxlRmxhZ3MKLSAgUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncz1weXRob24zNS5QeVBhcnNlcl9TaW1wbGVQYXJzZVN0cmluZ0ZsYWdzCi0gIFB5UHJvcGVydHlfVHlwZT1weXRob24zNS5QeVByb3BlcnR5X1R5cGUgREFUQQotICBQeVJhbmdlSXRlcl9UeXBlPXB5dGhvbjM1LlB5UmFuZ2VJdGVyX1R5cGUgREFUQQotICBQeVJhbmdlX1R5cGU9cHl0aG9uMzUuUHlSYW5nZV9UeXBlIERBVEEKLSAgUHlSZXZlcnNlZF9UeXBlPXB5dGhvbjM1LlB5UmV2ZXJzZWRfVHlwZSBEQVRBCi0gIFB5U2VxSXRlcl9OZXc9cHl0aG9uMzUuUHlTZXFJdGVyX05ldwotICBQeVNlcUl0ZXJfVHlwZT1weXRob24zNS5QeVNlcUl0ZXJfVHlwZSBEQVRBCi0gIFB5U2VxdWVuY2VfQ2hlY2s9cHl0aG9uMzUuUHlTZXF1ZW5jZV9DaGVjawotICBQeVNlcXVlbmNlX0NvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0NvbmNhdAotICBQeVNlcXVlbmNlX0NvbnRhaW5zPXB5dGhvbjM1LlB5U2VxdWVuY2VfQ29udGFpbnMKLSAgUHlTZXF1ZW5jZV9Db3VudD1weXRob24zNS5QeVNlcXVlbmNlX0NvdW50Ci0gIFB5U2VxdWVuY2VfRGVsSXRlbT1weXRob24zNS5QeVNlcXVlbmNlX0RlbEl0ZW0KLSAgUHlTZXF1ZW5jZV9EZWxTbGljZT1weXRob24zNS5QeVNlcXVlbmNlX0RlbFNsaWNlCi0gIFB5U2VxdWVuY2VfRmFzdD1weXRob24zNS5QeVNlcXVlbmNlX0Zhc3QKLSAgUHlTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0SXRlbQotICBQeVNlcXVlbmNlX0dldFNsaWNlPXB5dGhvbjM1LlB5U2VxdWVuY2VfR2V0U2xpY2UKLSAgUHlTZXF1ZW5jZV9Jbj1weXRob24zNS5QeVNlcXVlbmNlX0luCi0gIFB5U2VxdWVuY2VfSW5QbGFjZUNvbmNhdD1weXRob24zNS5QeVNlcXVlbmNlX0luUGxhY2VDb25jYXQKLSAgUHlTZXF1ZW5jZV9JblBsYWNlUmVwZWF0PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdAotICBQeVNlcXVlbmNlX0luZGV4PXB5dGhvbjM1LlB5U2VxdWVuY2VfSW5kZXgKLSAgUHlTZXF1ZW5jZV9MZW5ndGg9cHl0aG9uMzUuUHlTZXF1ZW5jZV9MZW5ndGgKLSAgUHlTZXF1ZW5jZV9MaXN0PXB5dGhvbjM1LlB5U2VxdWVuY2VfTGlzdAotICBQeVNlcXVlbmNlX1JlcGVhdD1weXRob24zNS5QeVNlcXVlbmNlX1JlcGVhdAotICBQeVNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRJdGVtCi0gIFB5U2VxdWVuY2VfU2V0U2xpY2U9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TZXRTbGljZQotICBQeVNlcXVlbmNlX1NpemU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9TaXplCi0gIFB5U2VxdWVuY2VfVHVwbGU9cHl0aG9uMzUuUHlTZXF1ZW5jZV9UdXBsZQotICBQeVNldEl0ZXJfVHlwZT1weXRob24zNS5QeVNldEl0ZXJfVHlwZSBEQVRBCi0gIFB5U2V0X0FkZD1weXRob24zNS5QeVNldF9BZGQKLSAgUHlTZXRfQ2xlYXI9cHl0aG9uMzUuUHlTZXRfQ2xlYXIKLSAgUHlTZXRfQ29udGFpbnM9cHl0aG9uMzUuUHlTZXRfQ29udGFpbnMKLSAgUHlTZXRfRGlzY2FyZD1weXRob24zNS5QeVNldF9EaXNjYXJkCi0gIFB5U2V0X05ldz1weXRob24zNS5QeVNldF9OZXcKLSAgUHlTZXRfUG9wPXB5dGhvbjM1LlB5U2V0X1BvcAotICBQeVNldF9TaXplPXB5dGhvbjM1LlB5U2V0X1NpemUKLSAgUHlTZXRfVHlwZT1weXRob24zNS5QeVNldF9UeXBlIERBVEEKLSAgUHlTbGljZV9HZXRJbmRpY2VzPXB5dGhvbjM1LlB5U2xpY2VfR2V0SW5kaWNlcwotICBQeVNsaWNlX0dldEluZGljZXNFeD1weXRob24zNS5QeVNsaWNlX0dldEluZGljZXNFeAotICBQeVNsaWNlX05ldz1weXRob24zNS5QeVNsaWNlX05ldwotICBQeVNsaWNlX1R5cGU9cHl0aG9uMzUuUHlTbGljZV9UeXBlIERBVEEKLSAgUHlTb3J0V3JhcHBlcl9UeXBlPXB5dGhvbjM1LlB5U29ydFdyYXBwZXJfVHlwZSBEQVRBCi0gIFB5U3RhdGVfRmluZE1vZHVsZT1weXRob24zNS5QeVN0YXRlX0ZpbmRNb2R1bGUKLSAgUHlTdGF0ZV9BZGRNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9BZGRNb2R1bGUKLSAgUHlTdGF0ZV9SZW1vdmVNb2R1bGU9cHl0aG9uMzUuUHlTdGF0ZV9SZW1vdmVNb2R1bGUKLSAgUHlTdHJ1Y3RTZXF1ZW5jZV9HZXRJdGVtPXB5dGhvbjM1LlB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbQotICBQeVN0cnVjdFNlcXVlbmNlX05ldz1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX05ldwotICBQeVN0cnVjdFNlcXVlbmNlX05ld1R5cGU9cHl0aG9uMzUuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlCi0gIFB5U3RydWN0U2VxdWVuY2VfU2V0SXRlbT1weXRob24zNS5QeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW0KLSAgUHlTdXBlcl9UeXBlPXB5dGhvbjM1LlB5U3VwZXJfVHlwZSBEQVRBCi0gIFB5U3lzX0FkZFdhcm5PcHRpb249cHl0aG9uMzUuUHlTeXNfQWRkV2Fybk9wdGlvbgotICBQeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZT1weXRob24zNS5QeVN5c19BZGRXYXJuT3B0aW9uVW5pY29kZQotICBQeVN5c19Gb3JtYXRTdGRlcnI9cHl0aG9uMzUuUHlTeXNfRm9ybWF0U3RkZXJyCi0gIFB5U3lzX0Zvcm1hdFN0ZG91dD1weXRob24zNS5QeVN5c19Gb3JtYXRTdGRvdXQKLSAgUHlTeXNfR2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX0dldE9iamVjdAotICBQeVN5c19IYXNXYXJuT3B0aW9ucz1weXRob24zNS5QeVN5c19IYXNXYXJuT3B0aW9ucwotICBQeVN5c19SZXNldFdhcm5PcHRpb25zPXB5dGhvbjM1LlB5U3lzX1Jlc2V0V2Fybk9wdGlvbnMKLSAgUHlTeXNfU2V0QXJndj1weXRob24zNS5QeVN5c19TZXRBcmd2Ci0gIFB5U3lzX1NldEFyZ3ZFeD1weXRob24zNS5QeVN5c19TZXRBcmd2RXgKLSAgUHlTeXNfU2V0T2JqZWN0PXB5dGhvbjM1LlB5U3lzX1NldE9iamVjdAotICBQeVN5c19TZXRQYXRoPXB5dGhvbjM1LlB5U3lzX1NldFBhdGgKLSAgUHlTeXNfV3JpdGVTdGRlcnI9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRlcnIKLSAgUHlTeXNfV3JpdGVTdGRvdXQ9cHl0aG9uMzUuUHlTeXNfV3JpdGVTdGRvdXQKLSAgUHlUaHJlYWRTdGF0ZV9DbGVhcj1weXRob24zNS5QeVRocmVhZFN0YXRlX0NsZWFyCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfRGVsZXRlCi0gIFB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudD1weXRob24zNS5QeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQKLSAgUHlUaHJlYWRTdGF0ZV9HZXQ9cHl0aG9uMzUuUHlUaHJlYWRTdGF0ZV9HZXQKLSAgUHlUaHJlYWRTdGF0ZV9HZXREaWN0PXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfR2V0RGljdAotICBQeVRocmVhZFN0YXRlX05ldz1weXRob24zNS5QeVRocmVhZFN0YXRlX05ldwotICBQeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU2V0QXN5bmNFeGMKLSAgUHlUaHJlYWRTdGF0ZV9Td2FwPXB5dGhvbjM1LlB5VGhyZWFkU3RhdGVfU3dhcAotICBQeVRyYWNlQmFja19IZXJlPXB5dGhvbjM1LlB5VHJhY2VCYWNrX0hlcmUKLSAgUHlUcmFjZUJhY2tfUHJpbnQ9cHl0aG9uMzUuUHlUcmFjZUJhY2tfUHJpbnQKLSAgUHlUcmFjZUJhY2tfVHlwZT1weXRob24zNS5QeVRyYWNlQmFja19UeXBlIERBVEEKLSAgUHlUdXBsZUl0ZXJfVHlwZT1weXRob24zNS5QeVR1cGxlSXRlcl9UeXBlIERBVEEKLSAgUHlUdXBsZV9DbGVhckZyZWVMaXN0PXB5dGhvbjM1LlB5VHVwbGVfQ2xlYXJGcmVlTGlzdAotICBQeVR1cGxlX0dldEl0ZW09cHl0aG9uMzUuUHlUdXBsZV9HZXRJdGVtCi0gIFB5VHVwbGVfR2V0U2xpY2U9cHl0aG9uMzUuUHlUdXBsZV9HZXRTbGljZQotICBQeVR1cGxlX05ldz1weXRob24zNS5QeVR1cGxlX05ldwotICBQeVR1cGxlX1BhY2s9cHl0aG9uMzUuUHlUdXBsZV9QYWNrCi0gIFB5VHVwbGVfU2V0SXRlbT1weXRob24zNS5QeVR1cGxlX1NldEl0ZW0KLSAgUHlUdXBsZV9TaXplPXB5dGhvbjM1LlB5VHVwbGVfU2l6ZQotICBQeVR1cGxlX1R5cGU9cHl0aG9uMzUuUHlUdXBsZV9UeXBlIERBVEEKLSAgUHlUeXBlX0NsZWFyQ2FjaGU9cHl0aG9uMzUuUHlUeXBlX0NsZWFyQ2FjaGUKLSAgUHlUeXBlX0Zyb21TcGVjPXB5dGhvbjM1LlB5VHlwZV9Gcm9tU3BlYwotICBQeVR5cGVfRnJvbVNwZWNXaXRoQmFzZXM9cHl0aG9uMzUuUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzCi0gIFB5VHlwZV9HZW5lcmljQWxsb2M9cHl0aG9uMzUuUHlUeXBlX0dlbmVyaWNBbGxvYwotICBQeVR5cGVfR2VuZXJpY05ldz1weXRob24zNS5QeVR5cGVfR2VuZXJpY05ldwotICBQeVR5cGVfR2V0RmxhZ3M9cHl0aG9uMzUuUHlUeXBlX0dldEZsYWdzCi0gIFB5VHlwZV9HZXRTbG90PXB5dGhvbjM1LlB5VHlwZV9HZXRTbG90Ci0gIFB5VHlwZV9Jc1N1YnR5cGU9cHl0aG9uMzUuUHlUeXBlX0lzU3VidHlwZQotICBQeVR5cGVfTW9kaWZpZWQ9cHl0aG9uMzUuUHlUeXBlX01vZGlmaWVkCi0gIFB5VHlwZV9SZWFkeT1weXRob24zNS5QeVR5cGVfUmVhZHkKLSAgUHlUeXBlX1R5cGU9cHl0aG9uMzUuUHlUeXBlX1R5cGUgREFUQQotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9DcmVhdGU9cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldEVuY29kaW5nCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZURlY29kZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmNvZGluZwotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3QKLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbgotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRTdGFydAotICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kCi0gIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNS5QeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb24KLSAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzUuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0U3RhcnQKLSAgUHlVbmljb2RlSXRlcl9UeXBlPXB5dGhvbjM1LlB5VW5pY29kZUl0ZXJfVHlwZSBEQVRBCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0T2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdAotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRSZWFzb249cHl0aG9uMzUuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uCi0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0PXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFN0YXJ0Ci0gIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldEVuZD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQKLSAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0UmVhc29uPXB5dGhvbjM1LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbgotICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydD1weXRob24zNS5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRTdGFydAotICBQeVVuaWNvZGVfQXBwZW5kPXB5dGhvbjM1LlB5VW5pY29kZV9BcHBlbmQKLSAgUHlVbmljb2RlX0FwcGVuZEFuZERlbD1weXRob24zNS5QeVVuaWNvZGVfQXBwZW5kQW5kRGVsCi0gIFB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc0FTQ0lJU3RyaW5nCi0gIFB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzQ2hhcm1hcFN0cmluZwotICBQeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0PXB5dGhvbjM1LlB5VW5pY29kZV9Bc0RlY29kZWRPYmplY3QKLSAgUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGU9cHl0aG9uMzUuUHlVbmljb2RlX0FzRGVjb2RlZFVuaWNvZGUKLSAgUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdD1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzRW5jb2RlZFN0cmluZwotICBQeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZT1weXRob24zNS5QeVVuaWNvZGVfQXNFbmNvZGVkVW5pY29kZQotICBQeVVuaWNvZGVfQXNMYXRpbjFTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzUuUHlVbmljb2RlX0FzUmF3VW5pY29kZUVzY2FwZVN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYxNlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYxNlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEYzMlN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVVEYzMlN0cmluZwotICBQeVVuaWNvZGVfQXNVVEY4U3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1VURjhTdHJpbmcKLSAgUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQXNVbmljb2RlRXNjYXBlU3RyaW5nCi0gIFB5VW5pY29kZV9Bc1dpZGVDaGFyPXB5dGhvbjM1LlB5VW5pY29kZV9Bc1dpZGVDaGFyCi0gIFB5VW5pY29kZV9DbGVhckZyZWVsaXN0PXB5dGhvbjM1LlB5VW5pY29kZV9DbGVhckZyZWVsaXN0Ci0gIFB5VW5pY29kZV9Db21wYXJlPXB5dGhvbjM1LlB5VW5pY29kZV9Db21wYXJlCi0gIFB5VW5pY29kZV9Db25jYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0NvbmNhdAotICBQeVVuaWNvZGVfQ29udGFpbnM9cHl0aG9uMzUuUHlVbmljb2RlX0NvbnRhaW5zCi0gIFB5VW5pY29kZV9Db3VudD1weXRob24zNS5QeVVuaWNvZGVfQ291bnQKLSAgUHlVbmljb2RlX0RlY29kZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlCi0gIFB5VW5pY29kZV9EZWNvZGVBU0NJST1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlQVNDSUkKLSAgUHlVbmljb2RlX0RlY29kZUNoYXJtYXA9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUNoYXJtYXAKLSAgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHRBbmRTaXplCi0gIFB5VW5pY29kZV9EZWNvZGVMYXRpbjE9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZUxhdGluMQotICBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZT1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZQotICBQeVVuaWNvZGVfRGVjb2RlVVRGMTY9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjE2Ci0gIFB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEYxNlN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVVEYzMj1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGMzIKLSAgUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWw9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjMyU3RhdGVmdWwKLSAgUHlVbmljb2RlX0RlY29kZVVURjg9cHl0aG9uMzUuUHlVbmljb2RlX0RlY29kZVVURjgKLSAgUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bD1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsCi0gIFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlCi0gIFB5VW5pY29kZV9GU0NvbnZlcnRlcj1weXRob24zNS5QeVVuaWNvZGVfRlNDb252ZXJ0ZXIKLSAgUHlVbmljb2RlX0ZTRGVjb2Rlcj1weXRob24zNS5QeVVuaWNvZGVfRlNEZWNvZGVyCi0gIFB5VW5pY29kZV9GaW5kPXB5dGhvbjM1LlB5VW5pY29kZV9GaW5kCi0gIFB5VW5pY29kZV9Gb3JtYXQ9cHl0aG9uMzUuUHlVbmljb2RlX0Zvcm1hdAotICBQeVVuaWNvZGVfRnJvbUVuY29kZWRPYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0PXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tRm9ybWF0Ci0gIFB5VW5pY29kZV9Gcm9tRm9ybWF0Vj1weXRob24zNS5QeVVuaWNvZGVfRnJvbUZvcm1hdFYKLSAgUHlVbmljb2RlX0Zyb21PYmplY3Q9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21PYmplY3QKLSAgUHlVbmljb2RlX0Zyb21PcmRpbmFsPXB5dGhvbjM1LlB5VW5pY29kZV9Gcm9tT3JkaW5hbAotICBQeVVuaWNvZGVfRnJvbVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfRnJvbVN0cmluZwotICBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplCi0gIFB5VW5pY29kZV9Gcm9tV2lkZUNoYXI9cHl0aG9uMzUuUHlVbmljb2RlX0Zyb21XaWRlQ2hhcgotICBQeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9HZXREZWZhdWx0RW5jb2RpbmcKLSAgUHlVbmljb2RlX0dldFNpemU9cHl0aG9uMzUuUHlVbmljb2RlX0dldFNpemUKLSAgUHlVbmljb2RlX0lzSWRlbnRpZmllcj1weXRob24zNS5QeVVuaWNvZGVfSXNJZGVudGlmaWVyCi0gIFB5VW5pY29kZV9Kb2luPXB5dGhvbjM1LlB5VW5pY29kZV9Kb2luCi0gIFB5VW5pY29kZV9QYXJ0aXRpb249cHl0aG9uMzUuUHlVbmljb2RlX1BhcnRpdGlvbgotICBQeVVuaWNvZGVfUlBhcnRpdGlvbj1weXRob24zNS5QeVVuaWNvZGVfUlBhcnRpdGlvbgotICBQeVVuaWNvZGVfUlNwbGl0PXB5dGhvbjM1LlB5VW5pY29kZV9SU3BsaXQKLSAgUHlVbmljb2RlX1JlcGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX1JlcGxhY2UKLSAgUHlVbmljb2RlX1Jlc2l6ZT1weXRob24zNS5QeVVuaWNvZGVfUmVzaXplCi0gIFB5VW5pY29kZV9SaWNoQ29tcGFyZT1weXRob24zNS5QeVVuaWNvZGVfUmljaENvbXBhcmUKLSAgUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZz1weXRob24zNS5QeVVuaWNvZGVfU2V0RGVmYXVsdEVuY29kaW5nCi0gIFB5VW5pY29kZV9TcGxpdD1weXRob24zNS5QeVVuaWNvZGVfU3BsaXQKLSAgUHlVbmljb2RlX1NwbGl0bGluZXM9cHl0aG9uMzUuUHlVbmljb2RlX1NwbGl0bGluZXMKLSAgUHlVbmljb2RlX1RhaWxtYXRjaD1weXRob24zNS5QeVVuaWNvZGVfVGFpbG1hdGNoCi0gIFB5VW5pY29kZV9UcmFuc2xhdGU9cHl0aG9uMzUuUHlVbmljb2RlX1RyYW5zbGF0ZQotICBQeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcD1weXRob24zNS5QeVVuaWNvZGVfQnVpbGRFbmNvZGluZ01hcAotICBQeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZz1weXRob24zNS5QeVVuaWNvZGVfQ29tcGFyZVdpdGhBU0NJSVN0cmluZwotICBQeVVuaWNvZGVfRGVjb2RlVVRGNz1weXRob24zNS5QeVVuaWNvZGVfRGVjb2RlVVRGNwotICBQeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsPXB5dGhvbjM1LlB5VW5pY29kZV9EZWNvZGVVVEY3U3RhdGVmdWwKLSAgUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdD1weXRob24zNS5QeVVuaWNvZGVfRW5jb2RlRlNEZWZhdWx0Ci0gIFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nPXB5dGhvbjM1LlB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nCi0gIFB5VW5pY29kZV9JbnRlcm5JbW1vcnRhbD1weXRob24zNS5QeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWwKLSAgUHlVbmljb2RlX0ludGVybkluUGxhY2U9cHl0aG9uMzUuUHlVbmljb2RlX0ludGVybkluUGxhY2UKLSAgUHlVbmljb2RlX1R5cGU9cHl0aG9uMzUuUHlVbmljb2RlX1R5cGUgREFUQQotICBQeVdlYWtyZWZfR2V0T2JqZWN0PXB5dGhvbjM1LlB5V2Vha3JlZl9HZXRPYmplY3QgREFUQQotICBQeVdlYWtyZWZfTmV3UHJveHk9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1Byb3h5Ci0gIFB5V2Vha3JlZl9OZXdSZWY9cHl0aG9uMzUuUHlXZWFrcmVmX05ld1JlZgotICBQeVdyYXBwZXJEZXNjcl9UeXBlPXB5dGhvbjM1LlB5V3JhcHBlckRlc2NyX1R5cGUgREFUQQotICBQeVdyYXBwZXJfTmV3PXB5dGhvbjM1LlB5V3JhcHBlcl9OZXcKLSAgUHlaaXBfVHlwZT1weXRob24zNS5QeVppcF9UeXBlIERBVEEKLSAgUHlfQWRkUGVuZGluZ0NhbGw9cHl0aG9uMzUuUHlfQWRkUGVuZGluZ0NhbGwKLSAgUHlfQXRFeGl0PXB5dGhvbjM1LlB5X0F0RXhpdAotICBQeV9CdWlsZFZhbHVlPXB5dGhvbjM1LlB5X0J1aWxkVmFsdWUKLSAgUHlfQ29tcGlsZVN0cmluZz1weXRob24zNS5QeV9Db21waWxlU3RyaW5nCi0gIFB5X0RlY1JlZj1weXRob24zNS5QeV9EZWNSZWYKLSAgUHlfRW5kSW50ZXJwcmV0ZXI9cHl0aG9uMzUuUHlfRW5kSW50ZXJwcmV0ZXIKLSAgUHlfRXhpdD1weXRob24zNS5QeV9FeGl0Ci0gIFB5X0ZhdGFsRXJyb3I9cHl0aG9uMzUuUHlfRmF0YWxFcnJvcgotICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9GaW5hbGl6ZT1weXRob24zNS5QeV9GaW5hbGl6ZQotICBQeV9HZXRCdWlsZEluZm89cHl0aG9uMzUuUHlfR2V0QnVpbGRJbmZvCi0gIFB5X0dldENvbXBpbGVyPXB5dGhvbjM1LlB5X0dldENvbXBpbGVyCi0gIFB5X0dldENvcHlyaWdodD1weXRob24zNS5QeV9HZXRDb3B5cmlnaHQKLSAgUHlfR2V0RXhlY1ByZWZpeD1weXRob24zNS5QeV9HZXRFeGVjUHJlZml4Ci0gIFB5X0dldFBhdGg9cHl0aG9uMzUuUHlfR2V0UGF0aAotICBQeV9HZXRQbGF0Zm9ybT1weXRob24zNS5QeV9HZXRQbGF0Zm9ybQotICBQeV9HZXRQcmVmaXg9cHl0aG9uMzUuUHlfR2V0UHJlZml4Ci0gIFB5X0dldFByb2dyYW1GdWxsUGF0aD1weXRob24zNS5QeV9HZXRQcm9ncmFtRnVsbFBhdGgKLSAgUHlfR2V0UHJvZ3JhbU5hbWU9cHl0aG9uMzUuUHlfR2V0UHJvZ3JhbU5hbWUKLSAgUHlfR2V0UHl0aG9uSG9tZT1weXRob24zNS5QeV9HZXRQeXRob25Ib21lCi0gIFB5X0dldFJlY3Vyc2lvbkxpbWl0PXB5dGhvbjM1LlB5X0dldFJlY3Vyc2lvbkxpbWl0Ci0gIFB5X0dldFZlcnNpb249cHl0aG9uMzUuUHlfR2V0VmVyc2lvbgotICBQeV9IYXNGaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nPXB5dGhvbjM1LlB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgREFUQQotICBQeV9JbmNSZWY9cHl0aG9uMzUuUHlfSW5jUmVmCi0gIFB5X0luaXRpYWxpemU9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZQotICBQeV9Jbml0aWFsaXplRXg9cHl0aG9uMzUuUHlfSW5pdGlhbGl6ZUV4Ci0gIFB5X0lzSW5pdGlhbGl6ZWQ9cHl0aG9uMzUuUHlfSXNJbml0aWFsaXplZAotICBQeV9NYWluPXB5dGhvbjM1LlB5X01haW4KLSAgUHlfTWFrZVBlbmRpbmdDYWxscz1weXRob24zNS5QeV9NYWtlUGVuZGluZ0NhbGxzCi0gIFB5X05ld0ludGVycHJldGVyPXB5dGhvbjM1LlB5X05ld0ludGVycHJldGVyCi0gIFB5X1JlcHJFbnRlcj1weXRob24zNS5QeV9SZXByRW50ZXIKLSAgUHlfUmVwckxlYXZlPXB5dGhvbjM1LlB5X1JlcHJMZWF2ZQotICBQeV9TZXRQcm9ncmFtTmFtZT1weXRob24zNS5QeV9TZXRQcm9ncmFtTmFtZQotICBQeV9TZXRQeXRob25Ib21lPXB5dGhvbjM1LlB5X1NldFB5dGhvbkhvbWUKLSAgUHlfU2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzUuUHlfU2V0UmVjdXJzaW9uTGltaXQKLSAgUHlfU3ltdGFibGVTdHJpbmc9cHl0aG9uMzUuUHlfU3ltdGFibGVTdHJpbmcKLSAgUHlfVmFCdWlsZFZhbHVlPXB5dGhvbjM1LlB5X1ZhQnVpbGRWYWx1ZQotICBfUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM1Ll9QeUVycl9CYWRJbnRlcm5hbENhbGwKLSAgX1B5T2JqZWN0X0NhbGxGdW5jdGlvbl9TaXplVD1weXRob24zNS5fUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUCi0gIF9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUPXB5dGhvbjM1Ll9QeU9iamVjdF9DYWxsTWV0aG9kX1NpemVUCi0gIF9QeU9iamVjdF9HQ19NYWxsb2M9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX01hbGxvYwotICBfUHlPYmplY3RfR0NfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9HQ19OZXcKLSAgX1B5T2JqZWN0X0dDX05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfR0NfTmV3VmFyCi0gIF9QeU9iamVjdF9HQ19SZXNpemU9cHl0aG9uMzUuX1B5T2JqZWN0X0dDX1Jlc2l6ZQotICBfUHlPYmplY3RfTmV3PXB5dGhvbjM1Ll9QeU9iamVjdF9OZXcKLSAgX1B5T2JqZWN0X05ld1Zhcj1weXRob24zNS5fUHlPYmplY3RfTmV3VmFyCi0gIF9QeVN0YXRlX0FkZE1vZHVsZT1weXRob24zNS5fUHlTdGF0ZV9BZGRNb2R1bGUKLSAgX1B5VGhyZWFkU3RhdGVfSW5pdD1weXRob24zNS5fUHlUaHJlYWRTdGF0ZV9Jbml0Ci0gIF9QeVRocmVhZFN0YXRlX1ByZWFsbG9jPXB5dGhvbjM1Ll9QeVRocmVhZFN0YXRlX1ByZWFsbG9jCi0gIF9QeVRyYXNoX2RlbGV0ZV9sYXRlcj1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbGF0ZXIgREFUQQotICBfUHlUcmFzaF9kZWxldGVfbmVzdGluZz1weXRob24zNS5fUHlUcmFzaF9kZWxldGVfbmVzdGluZyBEQVRBCi0gIF9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0PXB5dGhvbjM1Ll9QeVRyYXNoX2RlcG9zaXRfb2JqZWN0Ci0gIF9QeVRyYXNoX2Rlc3Ryb3lfY2hhaW49cHl0aG9uMzUuX1B5VHJhc2hfZGVzdHJveV9jaGFpbgotICBfUHlXZWFrcmVmX0NhbGxhYmxlUHJveHlUeXBlPXB5dGhvbjM1Ll9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGUgREFUQQotICBfUHlXZWFrcmVmX1Byb3h5VHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1Byb3h5VHlwZSBEQVRBCi0gIF9QeVdlYWtyZWZfUmVmVHlwZT1weXRob24zNS5fUHlXZWFrcmVmX1JlZlR5cGUgREFUQQotICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfQnVpbGRWYWx1ZV9TaXplVAotICBfUHlfQ2hlY2tSZWN1cnNpb25MaW1pdD1weXRob24zNS5fUHlfQ2hlY2tSZWN1cnNpb25MaW1pdCBEQVRBCi0gIF9QeV9DaGVja1JlY3Vyc2l2ZUNhbGw9cHl0aG9uMzUuX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbAotICBfUHlfRGVhbGxvYz1weXRob24zNS5fUHlfRGVhbGxvYwotICBfUHlfRWxsaXBzaXNPYmplY3Q9cHl0aG9uMzUuX1B5X0VsbGlwc2lzT2JqZWN0IERBVEEKLSAgX1B5X0ZhbHNlU3RydWN0PXB5dGhvbjM1Ll9QeV9GYWxzZVN0cnVjdCBEQVRBCi0gIF9QeV9Ob25lU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob25lU3RydWN0IERBVEEKLSAgX1B5X05vdEltcGxlbWVudGVkU3RydWN0PXB5dGhvbjM1Ll9QeV9Ob3RJbXBsZW1lbnRlZFN0cnVjdCBEQVRBCi0gIF9QeV9Td2FwcGVkT3A9cHl0aG9uMzUuX1B5X1N3YXBwZWRPcCBEQVRBCi0gIF9QeV9UcnVlU3RydWN0PXB5dGhvbjM1Ll9QeV9UcnVlU3RydWN0IERBVEEKLSAgX1B5X1ZhQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNS5fUHlfVmFCdWlsZFZhbHVlX1NpemVUCi0gIF9QeUFyZ19QYXJzZV9TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQ9cHl0aG9uMzUuX1B5QXJnX1BhcnNlVHVwbGVfU2l6ZVQKLSAgX1B5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlX1NpemVUPXB5dGhvbjM1Ll9QeUFyZ19WYVBhcnNlX1NpemVUCi0gIF9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVD1weXRob24zNS5fUHlBcmdfVmFQYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKLSAgX1B5X0J1aWxkVmFsdWVfU2l6ZVQ9cHl0aG9uMzUuX1B5X0J1aWxkVmFsdWVfU2l6ZVQKKyAgUHlBcmdfUGFyc2U9cHl0aG9uMzYuUHlBcmdfUGFyc2UKKyAgUHlBcmdfUGFyc2VUdXBsZT1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlCisgIFB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3Jkcz1weXRob24zNi5QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMKKyAgUHlBcmdfVW5wYWNrVHVwbGU9cHl0aG9uMzYuUHlBcmdfVW5wYWNrVHVwbGUKKyAgUHlBcmdfVmFQYXJzZT1weXRob24zNi5QeUFyZ19WYVBhcnNlCisgIFB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzPXB5dGhvbjM2LlB5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzCisgIFB5QXJnX1ZhbGlkYXRlS2V5d29yZEFyZ3VtZW50cz1weXRob24zNi5QeUFyZ19WYWxpZGF0ZUtleXdvcmRBcmd1bWVudHMKKyAgUHlCYXNlT2JqZWN0X1R5cGU9cHl0aG9uMzYuUHlCYXNlT2JqZWN0X1R5cGUgREFUQQorICBQeUJvb2xfRnJvbUxvbmc9cHl0aG9uMzYuUHlCb29sX0Zyb21Mb25nCisgIFB5Qm9vbF9UeXBlPXB5dGhvbjM2LlB5Qm9vbF9UeXBlIERBVEEKKyAgUHlCeXRlQXJyYXlJdGVyX1R5cGU9cHl0aG9uMzYuUHlCeXRlQXJyYXlJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVBcnJheV9Bc1N0cmluZz1weXRob24zNi5QeUJ5dGVBcnJheV9Bc1N0cmluZworICBQeUJ5dGVBcnJheV9Db25jYXQ9cHl0aG9uMzYuUHlCeXRlQXJyYXlfQ29uY2F0CisgIFB5Qnl0ZUFycmF5X0Zyb21PYmplY3Q9cHl0aG9uMzYuUHlCeXRlQXJyYXlfRnJvbU9iamVjdAorICBQeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZT1weXRob24zNi5QeUJ5dGVBcnJheV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVBcnJheV9SZXNpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfUmVzaXplCisgIFB5Qnl0ZUFycmF5X1NpemU9cHl0aG9uMzYuUHlCeXRlQXJyYXlfU2l6ZQorICBQeUJ5dGVBcnJheV9UeXBlPXB5dGhvbjM2LlB5Qnl0ZUFycmF5X1R5cGUgREFUQQorICBQeUJ5dGVzSXRlcl9UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNJdGVyX1R5cGUgREFUQQorICBQeUJ5dGVzX0FzU3RyaW5nPXB5dGhvbjM2LlB5Qnl0ZXNfQXNTdHJpbmcKKyAgUHlCeXRlc19Bc1N0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Bc1N0cmluZ0FuZFNpemUKKyAgUHlCeXRlc19Db25jYXQ9cHl0aG9uMzYuUHlCeXRlc19Db25jYXQKKyAgUHlCeXRlc19Db25jYXRBbmREZWw9cHl0aG9uMzYuUHlCeXRlc19Db25jYXRBbmREZWwKKyAgUHlCeXRlc19EZWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlCeXRlc19EZWNvZGVFc2NhcGUKKyAgUHlCeXRlc19Gcm9tRm9ybWF0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdAorICBQeUJ5dGVzX0Zyb21Gb3JtYXRWPXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbUZvcm1hdFYKKyAgUHlCeXRlc19Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5Qnl0ZXNfRnJvbU9iamVjdAorICBQeUJ5dGVzX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nCisgIFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemU9cHl0aG9uMzYuUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeUJ5dGVzX1JlcHI9cHl0aG9uMzYuUHlCeXRlc19SZXByCisgIFB5Qnl0ZXNfU2l6ZT1weXRob24zNi5QeUJ5dGVzX1NpemUKKyAgUHlCeXRlc19UeXBlPXB5dGhvbjM2LlB5Qnl0ZXNfVHlwZSBEQVRBCisgIFB5Q0Z1bmN0aW9uX0NhbGw9cHl0aG9uMzYuUHlDRnVuY3Rpb25fQ2FsbAorICBQeUNGdW5jdGlvbl9DbGVhckZyZWVMaXN0PXB5dGhvbjM2LlB5Q0Z1bmN0aW9uX0NsZWFyRnJlZUxpc3QKKyAgUHlDRnVuY3Rpb25fR2V0RmxhZ3M9cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RmxhZ3MKKyAgUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb249cHl0aG9uMzYuUHlDRnVuY3Rpb25fR2V0RnVuY3Rpb24KKyAgUHlDRnVuY3Rpb25fR2V0U2VsZj1weXRob24zNi5QeUNGdW5jdGlvbl9HZXRTZWxmCisgIFB5Q0Z1bmN0aW9uX05ldz1weXRob24zNi5QeUNGdW5jdGlvbl9OZXcKKyAgUHlDRnVuY3Rpb25fTmV3RXg9cHl0aG9uMzYuUHlDRnVuY3Rpb25fTmV3RXgKKyAgUHlDRnVuY3Rpb25fVHlwZT1weXRob24zNi5QeUNGdW5jdGlvbl9UeXBlIERBVEEKKyAgUHlDYWxsSXRlcl9OZXc9cHl0aG9uMzYuUHlDYWxsSXRlcl9OZXcKKyAgUHlDYWxsSXRlcl9UeXBlPXB5dGhvbjM2LlB5Q2FsbEl0ZXJfVHlwZSBEQVRBCisgIFB5Q2FsbGFibGVfQ2hlY2s9cHl0aG9uMzYuUHlDYWxsYWJsZV9DaGVjaworICBQeUNhcHN1bGVfR2V0Q29udGV4dD1weXRob24zNi5QeUNhcHN1bGVfR2V0Q29udGV4dAorICBQeUNhcHN1bGVfR2V0RGVzdHJ1Y3Rvcj1weXRob24zNi5QeUNhcHN1bGVfR2V0RGVzdHJ1Y3RvcgorICBQeUNhcHN1bGVfR2V0TmFtZT1weXRob24zNi5QeUNhcHN1bGVfR2V0TmFtZQorICBQeUNhcHN1bGVfR2V0UG9pbnRlcj1weXRob24zNi5QeUNhcHN1bGVfR2V0UG9pbnRlcgorICBQeUNhcHN1bGVfSW1wb3J0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9JbXBvcnQKKyAgUHlDYXBzdWxlX0lzVmFsaWQ9cHl0aG9uMzYuUHlDYXBzdWxlX0lzVmFsaWQKKyAgUHlDYXBzdWxlX05ldz1weXRob24zNi5QeUNhcHN1bGVfTmV3CisgIFB5Q2Fwc3VsZV9TZXRDb250ZXh0PXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRDb250ZXh0CisgIFB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXREZXN0cnVjdG9yCisgIFB5Q2Fwc3VsZV9TZXROYW1lPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXROYW1lCisgIFB5Q2Fwc3VsZV9TZXRQb2ludGVyPXB5dGhvbjM2LlB5Q2Fwc3VsZV9TZXRQb2ludGVyCisgIFB5Q2Fwc3VsZV9UeXBlPXB5dGhvbjM2LlB5Q2Fwc3VsZV9UeXBlIERBVEEKKyAgUHlDbGFzc01ldGhvZERlc2NyX1R5cGU9cHl0aG9uMzYuUHlDbGFzc01ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeUNvZGVjX0JhY2tzbGFzaFJlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19CYWNrc2xhc2hSZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfRGVjb2RlPXB5dGhvbjM2LlB5Q29kZWNfRGVjb2RlCisgIFB5Q29kZWNfRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0RlY29kZXIKKyAgUHlDb2RlY19FbmNvZGU9cHl0aG9uMzYuUHlDb2RlY19FbmNvZGUKKyAgUHlDb2RlY19FbmNvZGVyPXB5dGhvbjM2LlB5Q29kZWNfRW5jb2RlcgorICBQeUNvZGVjX0lnbm9yZUVycm9ycz1weXRob24zNi5QeUNvZGVjX0lnbm9yZUVycm9ycworICBQeUNvZGVjX0luY3JlbWVudGFsRGVjb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRGVjb2RlcgorICBQeUNvZGVjX0luY3JlbWVudGFsRW5jb2Rlcj1weXRob24zNi5QeUNvZGVjX0luY3JlbWVudGFsRW5jb2RlcgorICBQeUNvZGVjX0tub3duRW5jb2Rpbmc9cHl0aG9uMzYuUHlDb2RlY19Lbm93bkVuY29kaW5nCisgIFB5Q29kZWNfTG9va3VwRXJyb3I9cHl0aG9uMzYuUHlDb2RlY19Mb29rdXBFcnJvcgorICBQeUNvZGVjX1JlZ2lzdGVyPXB5dGhvbjM2LlB5Q29kZWNfUmVnaXN0ZXIKKyAgUHlDb2RlY19SZWdpc3RlckVycm9yPXB5dGhvbjM2LlB5Q29kZWNfUmVnaXN0ZXJFcnJvcgorICBQeUNvZGVjX1JlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19SZXBsYWNlRXJyb3JzCisgIFB5Q29kZWNfU3RyZWFtUmVhZGVyPXB5dGhvbjM2LlB5Q29kZWNfU3RyZWFtUmVhZGVyCisgIFB5Q29kZWNfU3RyZWFtV3JpdGVyPXB5dGhvbjM2LlB5Q29kZWNfU3RyZWFtV3JpdGVyCisgIFB5Q29kZWNfU3RyaWN0RXJyb3JzPXB5dGhvbjM2LlB5Q29kZWNfU3RyaWN0RXJyb3JzCisgIFB5Q29kZWNfWE1MQ2hhclJlZlJlcGxhY2VFcnJvcnM9cHl0aG9uMzYuUHlDb2RlY19YTUxDaGFyUmVmUmVwbGFjZUVycm9ycworICBQeUNvbXBsZXhfRnJvbURvdWJsZXM9cHl0aG9uMzYuUHlDb21wbGV4X0Zyb21Eb3VibGVzCisgIFB5Q29tcGxleF9JbWFnQXNEb3VibGU9cHl0aG9uMzYuUHlDb21wbGV4X0ltYWdBc0RvdWJsZQorICBQeUNvbXBsZXhfUmVhbEFzRG91YmxlPXB5dGhvbjM2LlB5Q29tcGxleF9SZWFsQXNEb3VibGUKKyAgUHlDb21wbGV4X1R5cGU9cHl0aG9uMzYuUHlDb21wbGV4X1R5cGUgREFUQQorICBQeURlc2NyX05ld0NsYXNzTWV0aG9kPXB5dGhvbjM2LlB5RGVzY3JfTmV3Q2xhc3NNZXRob2QKKyAgUHlEZXNjcl9OZXdHZXRTZXQ9cHl0aG9uMzYuUHlEZXNjcl9OZXdHZXRTZXQKKyAgUHlEZXNjcl9OZXdNZW1iZXI9cHl0aG9uMzYuUHlEZXNjcl9OZXdNZW1iZXIKKyAgUHlEZXNjcl9OZXdNZXRob2Q9cHl0aG9uMzYuUHlEZXNjcl9OZXdNZXRob2QKKyAgUHlEaWN0SXRlbXNfVHlwZT1weXRob24zNi5QeURpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlEaWN0SXRlckl0ZW1fVHlwZT1weXRob24zNi5QeURpY3RJdGVySXRlbV9UeXBlIERBVEEKKyAgUHlEaWN0SXRlcktleV9UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZXJLZXlfVHlwZSBEQVRBCisgIFB5RGljdEl0ZXJWYWx1ZV9UeXBlPXB5dGhvbjM2LlB5RGljdEl0ZXJWYWx1ZV9UeXBlIERBVEEKKyAgUHlEaWN0S2V5c19UeXBlPXB5dGhvbjM2LlB5RGljdEtleXNfVHlwZSBEQVRBCisgIFB5RGljdFByb3h5X05ldz1weXRob24zNi5QeURpY3RQcm94eV9OZXcKKyAgUHlEaWN0UHJveHlfVHlwZT1weXRob24zNi5QeURpY3RQcm94eV9UeXBlIERBVEEKKyAgUHlEaWN0VmFsdWVzX1R5cGU9cHl0aG9uMzYuUHlEaWN0VmFsdWVzX1R5cGUgREFUQQorICBQeURpY3RfQ2xlYXI9cHl0aG9uMzYuUHlEaWN0X0NsZWFyCisgIFB5RGljdF9Db250YWlucz1weXRob24zNi5QeURpY3RfQ29udGFpbnMKKyAgUHlEaWN0X0NvcHk9cHl0aG9uMzYuUHlEaWN0X0NvcHkKKyAgUHlEaWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlEaWN0X0RlbEl0ZW0KKyAgUHlEaWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X0RlbEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW09cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW0KKyAgUHlEaWN0X0dldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW1TdHJpbmcKKyAgUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3I9cHl0aG9uMzYuUHlEaWN0X0dldEl0ZW1XaXRoRXJyb3IKKyAgUHlEaWN0X0l0ZW1zPXB5dGhvbjM2LlB5RGljdF9JdGVtcworICBQeURpY3RfS2V5cz1weXRob24zNi5QeURpY3RfS2V5cworICBQeURpY3RfTWVyZ2U9cHl0aG9uMzYuUHlEaWN0X01lcmdlCisgIFB5RGljdF9NZXJnZUZyb21TZXEyPXB5dGhvbjM2LlB5RGljdF9NZXJnZUZyb21TZXEyCisgIFB5RGljdF9OZXc9cHl0aG9uMzYuUHlEaWN0X05ldworICBQeURpY3RfTmV4dD1weXRob24zNi5QeURpY3RfTmV4dAorICBQeURpY3RfU2V0SXRlbT1weXRob24zNi5QeURpY3RfU2V0SXRlbQorICBQeURpY3RfU2V0SXRlbVN0cmluZz1weXRob24zNi5QeURpY3RfU2V0SXRlbVN0cmluZworICBQeURpY3RfU2l6ZT1weXRob24zNi5QeURpY3RfU2l6ZQorICBQeURpY3RfVHlwZT1weXRob24zNi5QeURpY3RfVHlwZSBEQVRBCisgIFB5RGljdF9VcGRhdGU9cHl0aG9uMzYuUHlEaWN0X1VwZGF0ZQorICBQeURpY3RfVmFsdWVzPXB5dGhvbjM2LlB5RGljdF9WYWx1ZXMKKyAgUHlFbGxpcHNpc19UeXBlPXB5dGhvbjM2LlB5RWxsaXBzaXNfVHlwZSBEQVRBCisgIFB5RW51bV9UeXBlPXB5dGhvbjM2LlB5RW51bV9UeXBlIERBVEEKKyAgUHlFcnJfQmFkQXJndW1lbnQ9cHl0aG9uMzYuUHlFcnJfQmFkQXJndW1lbnQKKyAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsPXB5dGhvbjM2LlB5RXJyX0JhZEludGVybmFsQ2FsbAorICBQeUVycl9DaGVja1NpZ25hbHM9cHl0aG9uMzYuUHlFcnJfQ2hlY2tTaWduYWxzCisgIFB5RXJyX0NsZWFyPXB5dGhvbjM2LlB5RXJyX0NsZWFyCisgIFB5RXJyX0Rpc3BsYXk9cHl0aG9uMzYuUHlFcnJfRGlzcGxheQorICBQeUVycl9FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM2LlB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMKKyAgUHlFcnJfRmV0Y2g9cHl0aG9uMzYuUHlFcnJfRmV0Y2gKKyAgUHlFcnJfRm9ybWF0PXB5dGhvbjM2LlB5RXJyX0Zvcm1hdAorICBQeUVycl9Gb3JtYXRWPXB5dGhvbjM2LlB5RXJyX0Zvcm1hdFYKKyAgUHlFcnJfR2l2ZW5FeGNlcHRpb25NYXRjaGVzPXB5dGhvbjM2LlB5RXJyX0dpdmVuRXhjZXB0aW9uTWF0Y2hlcworICBQeUVycl9OZXdFeGNlcHRpb249cHl0aG9uMzYuUHlFcnJfTmV3RXhjZXB0aW9uCisgIFB5RXJyX05ld0V4Y2VwdGlvbldpdGhEb2M9cHl0aG9uMzYuUHlFcnJfTmV3RXhjZXB0aW9uV2l0aERvYworICBQeUVycl9Ob01lbW9yeT1weXRob24zNi5QeUVycl9Ob01lbW9yeQorICBQeUVycl9Ob3JtYWxpemVFeGNlcHRpb249cHl0aG9uMzYuUHlFcnJfTm9ybWFsaXplRXhjZXB0aW9uCisgIFB5RXJyX09jY3VycmVkPXB5dGhvbjM2LlB5RXJyX09jY3VycmVkCisgIFB5RXJyX1ByaW50PXB5dGhvbjM2LlB5RXJyX1ByaW50CisgIFB5RXJyX1ByaW50RXg9cHl0aG9uMzYuUHlFcnJfUHJpbnRFeAorICBQeUVycl9Qcm9ncmFtVGV4dD1weXRob24zNi5QeUVycl9Qcm9ncmFtVGV4dAorICBQeUVycl9SZXN0b3JlPXB5dGhvbjM2LlB5RXJyX1Jlc3RvcmUKKyAgUHlFcnJfU2V0RnJvbUVycm5vPXB5dGhvbjM2LlB5RXJyX1NldEZyb21FcnJubworICBQeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWU9cHl0aG9uMzYuUHlFcnJfU2V0RnJvbUVycm5vV2l0aEZpbGVuYW1lCisgIFB5RXJyX1NldEZyb21FcnJub1dpdGhGaWxlbmFtZU9iamVjdD1weXRob24zNi5QeUVycl9TZXRGcm9tRXJybm9XaXRoRmlsZW5hbWVPYmplY3QKKyAgUHlFcnJfU2V0SW50ZXJydXB0PXB5dGhvbjM2LlB5RXJyX1NldEludGVycnVwdAorICBQeUVycl9TZXROb25lPXB5dGhvbjM2LlB5RXJyX1NldE5vbmUKKyAgUHlFcnJfU2V0T2JqZWN0PXB5dGhvbjM2LlB5RXJyX1NldE9iamVjdAorICBQeUVycl9TZXRTdHJpbmc9cHl0aG9uMzYuUHlFcnJfU2V0U3RyaW5nCisgIFB5RXJyX1N5bnRheExvY2F0aW9uPXB5dGhvbjM2LlB5RXJyX1N5bnRheExvY2F0aW9uCisgIFB5RXJyX1dhcm5FeD1weXRob24zNi5QeUVycl9XYXJuRXgKKyAgUHlFcnJfV2FybkV4cGxpY2l0PXB5dGhvbjM2LlB5RXJyX1dhcm5FeHBsaWNpdAorICBQeUVycl9XYXJuRm9ybWF0PXB5dGhvbjM2LlB5RXJyX1dhcm5Gb3JtYXQKKyAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlPXB5dGhvbjM2LlB5RXJyX1dyaXRlVW5yYWlzYWJsZQorICBQeUV2YWxfQWNxdWlyZUxvY2s9cHl0aG9uMzYuUHlFdmFsX0FjcXVpcmVMb2NrCisgIFB5RXZhbF9BY3F1aXJlVGhyZWFkPXB5dGhvbjM2LlB5RXZhbF9BY3F1aXJlVGhyZWFkCisgIFB5RXZhbF9DYWxsRnVuY3Rpb249cHl0aG9uMzYuUHlFdmFsX0NhbGxGdW5jdGlvbgorICBQeUV2YWxfQ2FsbE1ldGhvZD1weXRob24zNi5QeUV2YWxfQ2FsbE1ldGhvZAorICBQeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3Jkcz1weXRob24zNi5QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcworICBQeUV2YWxfRXZhbENvZGU9cHl0aG9uMzYuUHlFdmFsX0V2YWxDb2RlCisgIFB5RXZhbF9FdmFsQ29kZUV4PXB5dGhvbjM2LlB5RXZhbF9FdmFsQ29kZUV4CisgIFB5RXZhbF9FdmFsRnJhbWU9cHl0aG9uMzYuUHlFdmFsX0V2YWxGcmFtZQorICBQeUV2YWxfRXZhbEZyYW1lRXg9cHl0aG9uMzYuUHlFdmFsX0V2YWxGcmFtZUV4CisgIFB5RXZhbF9HZXRCdWlsdGlucz1weXRob24zNi5QeUV2YWxfR2V0QnVpbHRpbnMKKyAgUHlFdmFsX0dldENhbGxTdGF0cz1weXRob24zNi5QeUV2YWxfR2V0Q2FsbFN0YXRzCisgIFB5RXZhbF9HZXRGcmFtZT1weXRob24zNi5QeUV2YWxfR2V0RnJhbWUKKyAgUHlFdmFsX0dldEZ1bmNEZXNjPXB5dGhvbjM2LlB5RXZhbF9HZXRGdW5jRGVzYworICBQeUV2YWxfR2V0RnVuY05hbWU9cHl0aG9uMzYuUHlFdmFsX0dldEZ1bmNOYW1lCisgIFB5RXZhbF9HZXRHbG9iYWxzPXB5dGhvbjM2LlB5RXZhbF9HZXRHbG9iYWxzCisgIFB5RXZhbF9HZXRMb2NhbHM9cHl0aG9uMzYuUHlFdmFsX0dldExvY2FscworICBQeUV2YWxfSW5pdFRocmVhZHM9cHl0aG9uMzYuUHlFdmFsX0luaXRUaHJlYWRzCisgIFB5RXZhbF9SZUluaXRUaHJlYWRzPXB5dGhvbjM2LlB5RXZhbF9SZUluaXRUaHJlYWRzCisgIFB5RXZhbF9SZWxlYXNlTG9jaz1weXRob24zNi5QeUV2YWxfUmVsZWFzZUxvY2sKKyAgUHlFdmFsX1JlbGVhc2VUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1JlbGVhc2VUaHJlYWQKKyAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1Jlc3RvcmVUaHJlYWQKKyAgUHlFdmFsX1NhdmVUaHJlYWQ9cHl0aG9uMzYuUHlFdmFsX1NhdmVUaHJlYWQKKyAgUHlFdmFsX1RocmVhZHNJbml0aWFsaXplZD1weXRob24zNi5QeUV2YWxfVGhyZWFkc0luaXRpYWxpemVkCisgIFB5RXhjX0FyaXRobWV0aWNFcnJvcj1weXRob24zNi5QeUV4Y19Bcml0aG1ldGljRXJyb3IgREFUQQorICBQeUV4Y19Bc3NlcnRpb25FcnJvcj1weXRob24zNi5QeUV4Y19Bc3NlcnRpb25FcnJvciBEQVRBCisgIFB5RXhjX0F0dHJpYnV0ZUVycm9yPXB5dGhvbjM2LlB5RXhjX0F0dHJpYnV0ZUVycm9yIERBVEEKKyAgUHlFeGNfQmFzZUV4Y2VwdGlvbj1weXRob24zNi5QeUV4Y19CYXNlRXhjZXB0aW9uIERBVEEKKyAgUHlFeGNfQnVmZmVyRXJyb3I9cHl0aG9uMzYuUHlFeGNfQnVmZmVyRXJyb3IgREFUQQorICBQeUV4Y19CeXRlc1dhcm5pbmc9cHl0aG9uMzYuUHlFeGNfQnl0ZXNXYXJuaW5nIERBVEEKKyAgUHlFeGNfRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0RlcHJlY2F0aW9uV2FybmluZyBEQVRBCisgIFB5RXhjX0VPRkVycm9yPXB5dGhvbjM2LlB5RXhjX0VPRkVycm9yIERBVEEKKyAgUHlFeGNfRW52aXJvbm1lbnRFcnJvcj1weXRob24zNi5QeUV4Y19FbnZpcm9ubWVudEVycm9yIERBVEEKKyAgUHlFeGNfRXhjZXB0aW9uPXB5dGhvbjM2LlB5RXhjX0V4Y2VwdGlvbiBEQVRBCisgIFB5RXhjX0Zsb2F0aW5nUG9pbnRFcnJvcj1weXRob24zNi5QeUV4Y19GbG9hdGluZ1BvaW50RXJyb3IgREFUQQorICBQeUV4Y19GdXR1cmVXYXJuaW5nPXB5dGhvbjM2LlB5RXhjX0Z1dHVyZVdhcm5pbmcgREFUQQorICBQeUV4Y19HZW5lcmF0b3JFeGl0PXB5dGhvbjM2LlB5RXhjX0dlbmVyYXRvckV4aXQgREFUQQorICBQeUV4Y19JT0Vycm9yPXB5dGhvbjM2LlB5RXhjX0lPRXJyb3IgREFUQQorICBQeUV4Y19JbXBvcnRFcnJvcj1weXRob24zNi5QeUV4Y19JbXBvcnRFcnJvciBEQVRBCisgIFB5RXhjX0ltcG9ydFdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfSW1wb3J0V2FybmluZyBEQVRBCisgIFB5RXhjX0luZGVudGF0aW9uRXJyb3I9cHl0aG9uMzYuUHlFeGNfSW5kZW50YXRpb25FcnJvciBEQVRBCisgIFB5RXhjX0luZGV4RXJyb3I9cHl0aG9uMzYuUHlFeGNfSW5kZXhFcnJvciBEQVRBCisgIFB5RXhjX0tleUVycm9yPXB5dGhvbjM2LlB5RXhjX0tleUVycm9yIERBVEEKKyAgUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQ9cHl0aG9uMzYuUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQgREFUQQorICBQeUV4Y19Mb29rdXBFcnJvcj1weXRob24zNi5QeUV4Y19Mb29rdXBFcnJvciBEQVRBCisgIFB5RXhjX01lbW9yeUVycm9yPXB5dGhvbjM2LlB5RXhjX01lbW9yeUVycm9yIERBVEEKKyAgUHlFeGNfTWVtb3J5RXJyb3JJbnN0PXB5dGhvbjM2LlB5RXhjX01lbW9yeUVycm9ySW5zdCBEQVRBCisgIFB5RXhjX05hbWVFcnJvcj1weXRob24zNi5QeUV4Y19OYW1lRXJyb3IgREFUQQorICBQeUV4Y19Ob3RJbXBsZW1lbnRlZEVycm9yPXB5dGhvbjM2LlB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IgREFUQQorICBQeUV4Y19PU0Vycm9yPXB5dGhvbjM2LlB5RXhjX09TRXJyb3IgREFUQQorICBQeUV4Y19PdmVyZmxvd0Vycm9yPXB5dGhvbjM2LlB5RXhjX092ZXJmbG93RXJyb3IgREFUQQorICBQeUV4Y19QZW5kaW5nRGVwcmVjYXRpb25XYXJuaW5nPXB5dGhvbjM2LlB5RXhjX1BlbmRpbmdEZXByZWNhdGlvbldhcm5pbmcgREFUQQorICBQeUV4Y19SZWN1cnNpb25FcnJvckluc3Q9cHl0aG9uMzYuUHlFeGNfUmVjdXJzaW9uRXJyb3JJbnN0IERBVEEKKyAgUHlFeGNfUmVmZXJlbmNlRXJyb3I9cHl0aG9uMzYuUHlFeGNfUmVmZXJlbmNlRXJyb3IgREFUQQorICBQeUV4Y19SdW50aW1lRXJyb3I9cHl0aG9uMzYuUHlFeGNfUnVudGltZUVycm9yIERBVEEKKyAgUHlFeGNfUnVudGltZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfUnVudGltZVdhcm5pbmcgREFUQQorICBQeUV4Y19TdG9wSXRlcmF0aW9uPXB5dGhvbjM2LlB5RXhjX1N0b3BJdGVyYXRpb24gREFUQQorICBQeUV4Y19TeW50YXhFcnJvcj1weXRob24zNi5QeUV4Y19TeW50YXhFcnJvciBEQVRBCisgIFB5RXhjX1N5bnRheFdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfU3ludGF4V2FybmluZyBEQVRBCisgIFB5RXhjX1N5c3RlbUVycm9yPXB5dGhvbjM2LlB5RXhjX1N5c3RlbUVycm9yIERBVEEKKyAgUHlFeGNfU3lzdGVtRXhpdD1weXRob24zNi5QeUV4Y19TeXN0ZW1FeGl0IERBVEEKKyAgUHlFeGNfVGFiRXJyb3I9cHl0aG9uMzYuUHlFeGNfVGFiRXJyb3IgREFUQQorICBQeUV4Y19UeXBlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVHlwZUVycm9yIERBVEEKKyAgUHlFeGNfVW5ib3VuZExvY2FsRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5ib3VuZExvY2FsRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlRGVjb2RlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZURlY29kZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZUVuY29kZUVycm9yPXB5dGhvbjM2LlB5RXhjX1VuaWNvZGVFbmNvZGVFcnJvciBEQVRBCisgIFB5RXhjX1VuaWNvZGVFcnJvcj1weXRob24zNi5QeUV4Y19Vbmljb2RlRXJyb3IgREFUQQorICBQeUV4Y19Vbmljb2RlVHJhbnNsYXRlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVW5pY29kZVRyYW5zbGF0ZUVycm9yIERBVEEKKyAgUHlFeGNfVW5pY29kZVdhcm5pbmc9cHl0aG9uMzYuUHlFeGNfVW5pY29kZVdhcm5pbmcgREFUQQorICBQeUV4Y19Vc2VyV2FybmluZz1weXRob24zNi5QeUV4Y19Vc2VyV2FybmluZyBEQVRBCisgIFB5RXhjX1ZhbHVlRXJyb3I9cHl0aG9uMzYuUHlFeGNfVmFsdWVFcnJvciBEQVRBCisgIFB5RXhjX1dhcm5pbmc9cHl0aG9uMzYuUHlFeGNfV2FybmluZyBEQVRBCisgIFB5RXhjX1plcm9EaXZpc2lvbkVycm9yPXB5dGhvbjM2LlB5RXhjX1plcm9EaXZpc2lvbkVycm9yIERBVEEKKyAgUHlFeGNlcHRpb25fR2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fR2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fR2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX0dldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9HZXRUcmFjZWJhY2sKKyAgUHlFeGNlcHRpb25fU2V0Q2F1c2U9cHl0aG9uMzYuUHlFeGNlcHRpb25fU2V0Q2F1c2UKKyAgUHlFeGNlcHRpb25fU2V0Q29udGV4dD1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRDb250ZXh0CisgIFB5RXhjZXB0aW9uX1NldFRyYWNlYmFjaz1weXRob24zNi5QeUV4Y2VwdGlvbl9TZXRUcmFjZWJhY2sKKyAgUHlGaWxlX0Zyb21GZD1weXRob24zNi5QeUZpbGVfRnJvbUZkCisgIFB5RmlsZV9HZXRMaW5lPXB5dGhvbjM2LlB5RmlsZV9HZXRMaW5lCisgIFB5RmlsZV9Xcml0ZU9iamVjdD1weXRob24zNi5QeUZpbGVfV3JpdGVPYmplY3QKKyAgUHlGaWxlX1dyaXRlU3RyaW5nPXB5dGhvbjM2LlB5RmlsZV9Xcml0ZVN0cmluZworICBQeUZpbHRlcl9UeXBlPXB5dGhvbjM2LlB5RmlsdGVyX1R5cGUgREFUQQorICBQeUZsb2F0X0FzRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfQXNEb3VibGUKKyAgUHlGbG9hdF9Gcm9tRG91YmxlPXB5dGhvbjM2LlB5RmxvYXRfRnJvbURvdWJsZQorICBQeUZsb2F0X0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlGbG9hdF9Gcm9tU3RyaW5nCisgIFB5RmxvYXRfR2V0SW5mbz1weXRob24zNi5QeUZsb2F0X0dldEluZm8KKyAgUHlGbG9hdF9HZXRNYXg9cHl0aG9uMzYuUHlGbG9hdF9HZXRNYXgKKyAgUHlGbG9hdF9HZXRNaW49cHl0aG9uMzYuUHlGbG9hdF9HZXRNaW4KKyAgUHlGbG9hdF9UeXBlPXB5dGhvbjM2LlB5RmxvYXRfVHlwZSBEQVRBCisgIFB5RnJvemVuU2V0X05ldz1weXRob24zNi5QeUZyb3plblNldF9OZXcKKyAgUHlGcm96ZW5TZXRfVHlwZT1weXRob24zNi5QeUZyb3plblNldF9UeXBlIERBVEEKKyAgUHlHQ19Db2xsZWN0PXB5dGhvbjM2LlB5R0NfQ29sbGVjdAorICBQeUdJTFN0YXRlX0Vuc3VyZT1weXRob24zNi5QeUdJTFN0YXRlX0Vuc3VyZQorICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZT1weXRob24zNi5QeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZQorICBQeUdJTFN0YXRlX1JlbGVhc2U9cHl0aG9uMzYuUHlHSUxTdGF0ZV9SZWxlYXNlCisgIFB5R2V0U2V0RGVzY3JfVHlwZT1weXRob24zNi5QeUdldFNldERlc2NyX1R5cGUgREFUQQorICBQeUltcG9ydF9BZGRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfQWRkTW9kdWxlCisgIFB5SW1wb3J0X0FwcGVuZEluaXR0YWI9cHl0aG9uMzYuUHlJbXBvcnRfQXBwZW5kSW5pdHRhYgorICBQeUltcG9ydF9DbGVhbnVwPXB5dGhvbjM2LlB5SW1wb3J0X0NsZWFudXAKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGUKKyAgUHlJbXBvcnRfRXhlY0NvZGVNb2R1bGVFeD1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZUV4CisgIFB5SW1wb3J0X0V4ZWNDb2RlTW9kdWxlV2l0aFBhdGhuYW1lcz1weXRob24zNi5QeUltcG9ydF9FeGVjQ29kZU1vZHVsZVdpdGhQYXRobmFtZXMKKyAgUHlJbXBvcnRfR2V0SW1wb3J0ZXI9cHl0aG9uMzYuUHlJbXBvcnRfR2V0SW1wb3J0ZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXI9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TWFnaWNOdW1iZXIKKyAgUHlJbXBvcnRfR2V0TWFnaWNUYWc9cHl0aG9uMzYuUHlJbXBvcnRfR2V0TWFnaWNUYWcKKyAgUHlJbXBvcnRfR2V0TW9kdWxlRGljdD1weXRob24zNi5QeUltcG9ydF9HZXRNb2R1bGVEaWN0CisgIFB5SW1wb3J0X0ltcG9ydD1weXRob24zNi5QeUltcG9ydF9JbXBvcnQKKyAgUHlJbXBvcnRfSW1wb3J0RnJvemVuTW9kdWxlPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydEZyb3plbk1vZHVsZQorICBQeUltcG9ydF9JbXBvcnRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0TW9kdWxlCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsPXB5dGhvbjM2LlB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsCisgIFB5SW1wb3J0X0ltcG9ydE1vZHVsZU5vQmxvY2s9cHl0aG9uMzYuUHlJbXBvcnRfSW1wb3J0TW9kdWxlTm9CbG9jaworICBQeUltcG9ydF9SZWxvYWRNb2R1bGU9cHl0aG9uMzYuUHlJbXBvcnRfUmVsb2FkTW9kdWxlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9DbGVhcj1weXRob24zNi5QeUludGVycHJldGVyU3RhdGVfQ2xlYXIKKyAgUHlJbnRlcnByZXRlclN0YXRlX0RlbGV0ZT1weXRob24zNi5QeUludGVycHJldGVyU3RhdGVfRGVsZXRlCisgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9OZXc9cHl0aG9uMzYuUHlJbnRlcnByZXRlclN0YXRlX05ldworICBQeUl0ZXJfTmV4dD1weXRob24zNi5QeUl0ZXJfTmV4dAorICBQeUxpc3RJdGVyX1R5cGU9cHl0aG9uMzYuUHlMaXN0SXRlcl9UeXBlIERBVEEKKyAgUHlMaXN0UmV2SXRlcl9UeXBlPXB5dGhvbjM2LlB5TGlzdFJldkl0ZXJfVHlwZSBEQVRBCisgIFB5TGlzdF9BcHBlbmQ9cHl0aG9uMzYuUHlMaXN0X0FwcGVuZAorICBQeUxpc3RfQXNUdXBsZT1weXRob24zNi5QeUxpc3RfQXNUdXBsZQorICBQeUxpc3RfR2V0SXRlbT1weXRob24zNi5QeUxpc3RfR2V0SXRlbQorICBQeUxpc3RfR2V0U2xpY2U9cHl0aG9uMzYuUHlMaXN0X0dldFNsaWNlCisgIFB5TGlzdF9JbnNlcnQ9cHl0aG9uMzYuUHlMaXN0X0luc2VydAorICBQeUxpc3RfTmV3PXB5dGhvbjM2LlB5TGlzdF9OZXcKKyAgUHlMaXN0X1JldmVyc2U9cHl0aG9uMzYuUHlMaXN0X1JldmVyc2UKKyAgUHlMaXN0X1NldEl0ZW09cHl0aG9uMzYuUHlMaXN0X1NldEl0ZW0KKyAgUHlMaXN0X1NldFNsaWNlPXB5dGhvbjM2LlB5TGlzdF9TZXRTbGljZQorICBQeUxpc3RfU2l6ZT1weXRob24zNi5QeUxpc3RfU2l6ZQorICBQeUxpc3RfU29ydD1weXRob24zNi5QeUxpc3RfU29ydAorICBQeUxpc3RfVHlwZT1weXRob24zNi5QeUxpc3RfVHlwZSBEQVRBCisgIFB5TG9uZ1JhbmdlSXRlcl9UeXBlPXB5dGhvbjM2LlB5TG9uZ1JhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlMb25nX0FzRG91YmxlPXB5dGhvbjM2LlB5TG9uZ19Bc0RvdWJsZQorICBQeUxvbmdfQXNMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmcKKyAgUHlMb25nX0FzTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmdBbmRPdmVyZmxvdworICBQeUxvbmdfQXNMb25nTG9uZz1weXRob24zNi5QeUxvbmdfQXNMb25nTG9uZworICBQeUxvbmdfQXNMb25nTG9uZ0FuZE92ZXJmbG93PXB5dGhvbjM2LlB5TG9uZ19Bc0xvbmdMb25nQW5kT3ZlcmZsb3cKKyAgUHlMb25nX0FzU2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Bc1NpemVfdAorICBQeUxvbmdfQXNTc2l6ZV90PXB5dGhvbjM2LlB5TG9uZ19Bc1NzaXplX3QKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZworICBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nPXB5dGhvbjM2LlB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2s9cHl0aG9uMzYuUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZ01hc2sKKyAgUHlMb25nX0FzVW5zaWduZWRMb25nTWFzaz1weXRob24zNi5QeUxvbmdfQXNVbnNpZ25lZExvbmdNYXNrCisgIFB5TG9uZ19Bc1ZvaWRQdHI9cHl0aG9uMzYuUHlMb25nX0FzVm9pZFB0cgorICBQeUxvbmdfRnJvbURvdWJsZT1weXRob24zNi5QeUxvbmdfRnJvbURvdWJsZQorICBQeUxvbmdfRnJvbUxvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21Mb25nCisgIFB5TG9uZ19Gcm9tTG9uZ0xvbmc9cHl0aG9uMzYuUHlMb25nX0Zyb21Mb25nTG9uZworICBQeUxvbmdfRnJvbVNpemVfdD1weXRob24zNi5QeUxvbmdfRnJvbVNpemVfdAorICBQeUxvbmdfRnJvbVNzaXplX3Q9cHl0aG9uMzYuUHlMb25nX0Zyb21Tc2l6ZV90CisgIFB5TG9uZ19Gcm9tU3RyaW5nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tU3RyaW5nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nPXB5dGhvbjM2LlB5TG9uZ19Gcm9tVW5zaWduZWRMb25nCisgIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZz1weXRob24zNi5QeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcKKyAgUHlMb25nX0Zyb21Wb2lkUHRyPXB5dGhvbjM2LlB5TG9uZ19Gcm9tVm9pZFB0cgorICBQeUxvbmdfR2V0SW5mbz1weXRob24zNi5QeUxvbmdfR2V0SW5mbworICBQeUxvbmdfVHlwZT1weXRob24zNi5QeUxvbmdfVHlwZSBEQVRBCisgIFB5TWFwX1R5cGU9cHl0aG9uMzYuUHlNYXBfVHlwZSBEQVRBCisgIFB5TWFwcGluZ19DaGVjaz1weXRob24zNi5QeU1hcHBpbmdfQ2hlY2sKKyAgUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX0dldEl0ZW1TdHJpbmcKKyAgUHlNYXBwaW5nX0hhc0tleT1weXRob24zNi5QeU1hcHBpbmdfSGFzS2V5CisgIFB5TWFwcGluZ19IYXNLZXlTdHJpbmc9cHl0aG9uMzYuUHlNYXBwaW5nX0hhc0tleVN0cmluZworICBQeU1hcHBpbmdfSXRlbXM9cHl0aG9uMzYuUHlNYXBwaW5nX0l0ZW1zCisgIFB5TWFwcGluZ19LZXlzPXB5dGhvbjM2LlB5TWFwcGluZ19LZXlzCisgIFB5TWFwcGluZ19MZW5ndGg9cHl0aG9uMzYuUHlNYXBwaW5nX0xlbmd0aAorICBQeU1hcHBpbmdfU2V0SXRlbVN0cmluZz1weXRob24zNi5QeU1hcHBpbmdfU2V0SXRlbVN0cmluZworICBQeU1hcHBpbmdfU2l6ZT1weXRob24zNi5QeU1hcHBpbmdfU2l6ZQorICBQeU1hcHBpbmdfVmFsdWVzPXB5dGhvbjM2LlB5TWFwcGluZ19WYWx1ZXMKKyAgUHlNZW1fRnJlZT1weXRob24zNi5QeU1lbV9GcmVlCisgIFB5TWVtX01hbGxvYz1weXRob24zNi5QeU1lbV9NYWxsb2MKKyAgUHlNZW1fUmVhbGxvYz1weXRob24zNi5QeU1lbV9SZWFsbG9jCisgIFB5TWVtYmVyRGVzY3JfVHlwZT1weXRob24zNi5QeU1lbWJlckRlc2NyX1R5cGUgREFUQQorICBQeU1lbW9yeVZpZXdfRnJvbU9iamVjdD1weXRob24zNi5QeU1lbW9yeVZpZXdfRnJvbU9iamVjdAorICBQeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cz1weXRob24zNi5QeU1lbW9yeVZpZXdfR2V0Q29udGlndW91cworICBQeU1lbW9yeVZpZXdfVHlwZT1weXRob24zNi5QeU1lbW9yeVZpZXdfVHlwZSBEQVRBCisgIFB5TWV0aG9kRGVzY3JfVHlwZT1weXRob24zNi5QeU1ldGhvZERlc2NyX1R5cGUgREFUQQorICBQeU1vZHVsZV9BZGRJbnRDb25zdGFudD1weXRob24zNi5QeU1vZHVsZV9BZGRJbnRDb25zdGFudAorICBQeU1vZHVsZV9BZGRPYmplY3Q9cHl0aG9uMzYuUHlNb2R1bGVfQWRkT2JqZWN0CisgIFB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50PXB5dGhvbjM2LlB5TW9kdWxlX0FkZFN0cmluZ0NvbnN0YW50CisgIFB5TW9kdWxlX0NyZWF0ZTI9cHl0aG9uMzYuUHlNb2R1bGVfQ3JlYXRlMgorICBQeU1vZHVsZV9HZXREZWY9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGVmCisgIFB5TW9kdWxlX0dldERpY3Q9cHl0aG9uMzYuUHlNb2R1bGVfR2V0RGljdAorICBQeU1vZHVsZV9HZXRGaWxlbmFtZT1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZQorICBQeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdD1weXRob24zNi5QeU1vZHVsZV9HZXRGaWxlbmFtZU9iamVjdAorICBQeU1vZHVsZV9HZXROYW1lPXB5dGhvbjM2LlB5TW9kdWxlX0dldE5hbWUKKyAgUHlNb2R1bGVfR2V0U3RhdGU9cHl0aG9uMzYuUHlNb2R1bGVfR2V0U3RhdGUKKyAgUHlNb2R1bGVfTmV3PXB5dGhvbjM2LlB5TW9kdWxlX05ldworICBQeU1vZHVsZV9UeXBlPXB5dGhvbjM2LlB5TW9kdWxlX1R5cGUgREFUQQorICBQeU1vZHVsZURlZl9Jbml0PXB5dGhvbjM2LlB5TW9kdWxlRGVmX0luaXQKKyAgUHlNb2R1bGVEZWZfVHlwZT1weXRob24zNi5QeU1vZHVsZURlZl9UeXBlIERBVEEKKyAgUHlOdWxsSW1wb3J0ZXJfVHlwZT1weXRob24zNi5QeU51bGxJbXBvcnRlcl9UeXBlIERBVEEKKyAgUHlOdW1iZXJfQWJzb2x1dGU9cHl0aG9uMzYuUHlOdW1iZXJfQWJzb2x1dGUKKyAgUHlOdW1iZXJfQWRkPXB5dGhvbjM2LlB5TnVtYmVyX0FkZAorICBQeU51bWJlcl9BbmQ9cHl0aG9uMzYuUHlOdW1iZXJfQW5kCisgIFB5TnVtYmVyX0FzU3NpemVfdD1weXRob24zNi5QeU51bWJlcl9Bc1NzaXplX3QKKyAgUHlOdW1iZXJfQ2hlY2s9cHl0aG9uMzYuUHlOdW1iZXJfQ2hlY2sKKyAgUHlOdW1iZXJfRGl2bW9kPXB5dGhvbjM2LlB5TnVtYmVyX0Rpdm1vZAorICBQeU51bWJlcl9GbG9hdD1weXRob24zNi5QeU51bWJlcl9GbG9hdAorICBQeU51bWJlcl9GbG9vckRpdmlkZT1weXRob24zNi5QeU51bWJlcl9GbG9vckRpdmlkZQorICBQeU51bWJlcl9JblBsYWNlQWRkPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VBZGQKKyAgUHlOdW1iZXJfSW5QbGFjZUFuZD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlQW5kCisgIFB5TnVtYmVyX0luUGxhY2VGbG9vckRpdmlkZT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlRmxvb3JEaXZpZGUKKyAgUHlOdW1iZXJfSW5QbGFjZUxzaGlmdD1weXRob24zNi5QeU51bWJlcl9JblBsYWNlTHNoaWZ0CisgIFB5TnVtYmVyX0luUGxhY2VNdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlTXVsdGlwbHkKKyAgUHlOdW1iZXJfSW5QbGFjZU9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VPcgorICBQeU51bWJlcl9JblBsYWNlUG93ZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVBvd2VyCisgIFB5TnVtYmVyX0luUGxhY2VSZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfSW5QbGFjZVJlbWFpbmRlcgorICBQeU51bWJlcl9JblBsYWNlUnNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VSc2hpZnQKKyAgUHlOdW1iZXJfSW5QbGFjZVN1YnRyYWN0PXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VTdWJ0cmFjdAorICBQeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZT1weXRob24zNi5QeU51bWJlcl9JblBsYWNlVHJ1ZURpdmlkZQorICBQeU51bWJlcl9JblBsYWNlWG9yPXB5dGhvbjM2LlB5TnVtYmVyX0luUGxhY2VYb3IKKyAgUHlOdW1iZXJfSW5kZXg9cHl0aG9uMzYuUHlOdW1iZXJfSW5kZXgKKyAgUHlOdW1iZXJfSW52ZXJ0PXB5dGhvbjM2LlB5TnVtYmVyX0ludmVydAorICBQeU51bWJlcl9Mb25nPXB5dGhvbjM2LlB5TnVtYmVyX0xvbmcKKyAgUHlOdW1iZXJfTHNoaWZ0PXB5dGhvbjM2LlB5TnVtYmVyX0xzaGlmdAorICBQeU51bWJlcl9NdWx0aXBseT1weXRob24zNi5QeU51bWJlcl9NdWx0aXBseQorICBQeU51bWJlcl9OZWdhdGl2ZT1weXRob24zNi5QeU51bWJlcl9OZWdhdGl2ZQorICBQeU51bWJlcl9Pcj1weXRob24zNi5QeU51bWJlcl9PcgorICBQeU51bWJlcl9Qb3NpdGl2ZT1weXRob24zNi5QeU51bWJlcl9Qb3NpdGl2ZQorICBQeU51bWJlcl9Qb3dlcj1weXRob24zNi5QeU51bWJlcl9Qb3dlcgorICBQeU51bWJlcl9SZW1haW5kZXI9cHl0aG9uMzYuUHlOdW1iZXJfUmVtYWluZGVyCisgIFB5TnVtYmVyX1JzaGlmdD1weXRob24zNi5QeU51bWJlcl9Sc2hpZnQKKyAgUHlOdW1iZXJfU3VidHJhY3Q9cHl0aG9uMzYuUHlOdW1iZXJfU3VidHJhY3QKKyAgUHlOdW1iZXJfVG9CYXNlPXB5dGhvbjM2LlB5TnVtYmVyX1RvQmFzZQorICBQeU51bWJlcl9UcnVlRGl2aWRlPXB5dGhvbjM2LlB5TnVtYmVyX1RydWVEaXZpZGUKKyAgUHlOdW1iZXJfWG9yPXB5dGhvbjM2LlB5TnVtYmVyX1hvcgorICBQeU9TX0FmdGVyRm9yaz1weXRob24zNi5QeU9TX0FmdGVyRm9yaworICBQeU9TX0luaXRJbnRlcnJ1cHRzPXB5dGhvbjM2LlB5T1NfSW5pdEludGVycnVwdHMKKyAgUHlPU19JbnB1dEhvb2s9cHl0aG9uMzYuUHlPU19JbnB1dEhvb2sgREFUQQorICBQeU9TX0ludGVycnVwdE9jY3VycmVkPXB5dGhvbjM2LlB5T1NfSW50ZXJydXB0T2NjdXJyZWQKKyAgUHlPU19SZWFkbGluZUZ1bmN0aW9uUG9pbnRlcj1weXRob24zNi5QeU9TX1JlYWRsaW5lRnVuY3Rpb25Qb2ludGVyIERBVEEKKyAgUHlPU19kb3VibGVfdG9fc3RyaW5nPXB5dGhvbjM2LlB5T1NfZG91YmxlX3RvX3N0cmluZworICBQeU9TX2dldHNpZz1weXRob24zNi5QeU9TX2dldHNpZworICBQeU9TX215c3RyaWNtcD1weXRob24zNi5QeU9TX215c3RyaWNtcAorICBQeU9TX215c3RybmljbXA9cHl0aG9uMzYuUHlPU19teXN0cm5pY21wCisgIFB5T1Nfc2V0c2lnPXB5dGhvbjM2LlB5T1Nfc2V0c2lnCisgIFB5T1Nfc25wcmludGY9cHl0aG9uMzYuUHlPU19zbnByaW50ZgorICBQeU9TX3N0cmluZ190b19kb3VibGU9cHl0aG9uMzYuUHlPU19zdHJpbmdfdG9fZG91YmxlCisgIFB5T1Nfc3RydG9sPXB5dGhvbjM2LlB5T1Nfc3RydG9sCisgIFB5T1Nfc3RydG91bD1weXRob24zNi5QeU9TX3N0cnRvdWwKKyAgUHlPU192c25wcmludGY9cHl0aG9uMzYuUHlPU192c25wcmludGYKKyAgUHlPYmplY3RfQVNDSUk9cHl0aG9uMzYuUHlPYmplY3RfQVNDSUkKKyAgUHlPYmplY3RfQXNDaGFyQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzQ2hhckJ1ZmZlcgorICBQeU9iamVjdF9Bc0ZpbGVEZXNjcmlwdG9yPXB5dGhvbjM2LlB5T2JqZWN0X0FzRmlsZURlc2NyaXB0b3IKKyAgUHlPYmplY3RfQXNSZWFkQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9Bc1dyaXRlQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0FzV3JpdGVCdWZmZXIKKyAgUHlPYmplY3RfQnl0ZXM9cHl0aG9uMzYuUHlPYmplY3RfQnl0ZXMKKyAgUHlPYmplY3RfQ2FsbD1weXRob24zNi5QeU9iamVjdF9DYWxsCisgIFB5T2JqZWN0X0NhbGxGdW5jdGlvbj1weXRob24zNi5QeU9iamVjdF9DYWxsRnVuY3Rpb24KKyAgUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncz1weXRob24zNi5QeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzCisgIFB5T2JqZWN0X0NhbGxNZXRob2Q9cHl0aG9uMzYuUHlPYmplY3RfQ2FsbE1ldGhvZAorICBQeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncz1weXRob24zNi5QeU9iamVjdF9DYWxsTWV0aG9kT2JqQXJncworICBQeU9iamVjdF9DYWxsT2JqZWN0PXB5dGhvbjM2LlB5T2JqZWN0X0NhbGxPYmplY3QKKyAgUHlPYmplY3RfQ2hlY2tSZWFkQnVmZmVyPXB5dGhvbjM2LlB5T2JqZWN0X0NoZWNrUmVhZEJ1ZmZlcgorICBQeU9iamVjdF9DbGVhcldlYWtSZWZzPXB5dGhvbjM2LlB5T2JqZWN0X0NsZWFyV2Vha1JlZnMKKyAgUHlPYmplY3RfRGVsSXRlbT1weXRob24zNi5QeU9iamVjdF9EZWxJdGVtCisgIFB5T2JqZWN0X0RlbEl0ZW1TdHJpbmc9cHl0aG9uMzYuUHlPYmplY3RfRGVsSXRlbVN0cmluZworICBQeU9iamVjdF9EaXI9cHl0aG9uMzYuUHlPYmplY3RfRGlyCisgIFB5T2JqZWN0X0Zvcm1hdD1weXRob24zNi5QeU9iamVjdF9Gb3JtYXQKKyAgUHlPYmplY3RfRnJlZT1weXRob24zNi5QeU9iamVjdF9GcmVlCisgIFB5T2JqZWN0X0dDX0RlbD1weXRob24zNi5QeU9iamVjdF9HQ19EZWwKKyAgUHlPYmplY3RfR0NfVHJhY2s9cHl0aG9uMzYuUHlPYmplY3RfR0NfVHJhY2sKKyAgUHlPYmplY3RfR0NfVW5UcmFjaz1weXRob24zNi5QeU9iamVjdF9HQ19VblRyYWNrCisgIFB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNHZXRBdHRyCisgIFB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0dlbmVyaWNTZXRBdHRyCisgIFB5T2JqZWN0X0dldEF0dHI9cHl0aG9uMzYuUHlPYmplY3RfR2V0QXR0cgorICBQeU9iamVjdF9HZXRBdHRyU3RyaW5nPXB5dGhvbjM2LlB5T2JqZWN0X0dldEF0dHJTdHJpbmcKKyAgUHlPYmplY3RfR2V0SXRlbT1weXRob24zNi5QeU9iamVjdF9HZXRJdGVtCisgIFB5T2JqZWN0X0dldEl0ZXI9cHl0aG9uMzYuUHlPYmplY3RfR2V0SXRlcgorICBQeU9iamVjdF9IYXNBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X0hhc0F0dHIKKyAgUHlPYmplY3RfSGFzQXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9IYXNBdHRyU3RyaW5nCisgIFB5T2JqZWN0X0hhc2g9cHl0aG9uMzYuUHlPYmplY3RfSGFzaAorICBQeU9iamVjdF9IYXNoTm90SW1wbGVtZW50ZWQ9cHl0aG9uMzYuUHlPYmplY3RfSGFzaE5vdEltcGxlbWVudGVkCisgIFB5T2JqZWN0X0luaXQ9cHl0aG9uMzYuUHlPYmplY3RfSW5pdAorICBQeU9iamVjdF9Jbml0VmFyPXB5dGhvbjM2LlB5T2JqZWN0X0luaXRWYXIKKyAgUHlPYmplY3RfSXNJbnN0YW5jZT1weXRob24zNi5QeU9iamVjdF9Jc0luc3RhbmNlCisgIFB5T2JqZWN0X0lzU3ViY2xhc3M9cHl0aG9uMzYuUHlPYmplY3RfSXNTdWJjbGFzcworICBQeU9iamVjdF9Jc1RydWU9cHl0aG9uMzYuUHlPYmplY3RfSXNUcnVlCisgIFB5T2JqZWN0X0xlbmd0aD1weXRob24zNi5QeU9iamVjdF9MZW5ndGgKKyAgUHlPYmplY3RfTWFsbG9jPXB5dGhvbjM2LlB5T2JqZWN0X01hbGxvYworICBQeU9iamVjdF9Ob3Q9cHl0aG9uMzYuUHlPYmplY3RfTm90CisgIFB5T2JqZWN0X1JlYWxsb2M9cHl0aG9uMzYuUHlPYmplY3RfUmVhbGxvYworICBQeU9iamVjdF9SZXByPXB5dGhvbjM2LlB5T2JqZWN0X1JlcHIKKyAgUHlPYmplY3RfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlPYmplY3RfUmljaENvbXBhcmUKKyAgUHlPYmplY3RfUmljaENvbXBhcmVCb29sPXB5dGhvbjM2LlB5T2JqZWN0X1JpY2hDb21wYXJlQm9vbAorICBQeU9iamVjdF9TZWxmSXRlcj1weXRob24zNi5QeU9iamVjdF9TZWxmSXRlcgorICBQeU9iamVjdF9TZXRBdHRyPXB5dGhvbjM2LlB5T2JqZWN0X1NldEF0dHIKKyAgUHlPYmplY3RfU2V0QXR0clN0cmluZz1weXRob24zNi5QeU9iamVjdF9TZXRBdHRyU3RyaW5nCisgIFB5T2JqZWN0X1NldEl0ZW09cHl0aG9uMzYuUHlPYmplY3RfU2V0SXRlbQorICBQeU9iamVjdF9TaXplPXB5dGhvbjM2LlB5T2JqZWN0X1NpemUKKyAgUHlPYmplY3RfU3RyPXB5dGhvbjM2LlB5T2JqZWN0X1N0cgorICBQeU9iamVjdF9UeXBlPXB5dGhvbjM2LlB5T2JqZWN0X1R5cGUgREFUQQorICBQeU9EaWN0X0RlbEl0ZW09cHl0aG9uMzYuUHlPRGljdF9EZWxJdGVtCisgIFB5T0RpY3RfTmV3PXB5dGhvbjM2LlB5T0RpY3RfTmV3CisgIFB5T0RpY3RfU2V0SXRlbT1weXRob24zNi5QeU9EaWN0X1NldEl0ZW0KKyAgUHlPRGljdF9UeXBlPXB5dGhvbjM2LlB5T0RpY3RfVHlwZSBEQVRBCisgIFB5T0RpY3RJdGVtc19UeXBlPXB5dGhvbjM2LlB5T0RpY3RJdGVtc19UeXBlIERBVEEKKyAgUHlPRGljdEl0ZXJfVHlwZT1weXRob24zNi5QeU9EaWN0SXRlcl9UeXBlIERBVEEKKyAgUHlPRGljdEtleXNfVHlwZT1weXRob24zNi5QeU9EaWN0S2V5c19UeXBlIERBVEEKKyAgUHlPRGljdFZhbHVlc19UeXBlPXB5dGhvbjM2LlB5T0RpY3RWYWx1ZXNfVHlwZSBEQVRBCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzPXB5dGhvbjM2LlB5UGFyc2VyX1NpbXBsZVBhcnNlRmlsZUZsYWdzCisgIFB5UGFyc2VyX1NpbXBsZVBhcnNlU3RyaW5nRmxhZ3M9cHl0aG9uMzYuUHlQYXJzZXJfU2ltcGxlUGFyc2VTdHJpbmdGbGFncworICBQeVByb3BlcnR5X1R5cGU9cHl0aG9uMzYuUHlQcm9wZXJ0eV9UeXBlIERBVEEKKyAgUHlSYW5nZUl0ZXJfVHlwZT1weXRob24zNi5QeVJhbmdlSXRlcl9UeXBlIERBVEEKKyAgUHlSYW5nZV9UeXBlPXB5dGhvbjM2LlB5UmFuZ2VfVHlwZSBEQVRBCisgIFB5UmV2ZXJzZWRfVHlwZT1weXRob24zNi5QeVJldmVyc2VkX1R5cGUgREFUQQorICBQeVNlcUl0ZXJfTmV3PXB5dGhvbjM2LlB5U2VxSXRlcl9OZXcKKyAgUHlTZXFJdGVyX1R5cGU9cHl0aG9uMzYuUHlTZXFJdGVyX1R5cGUgREFUQQorICBQeVNlcXVlbmNlX0NoZWNrPXB5dGhvbjM2LlB5U2VxdWVuY2VfQ2hlY2sKKyAgUHlTZXF1ZW5jZV9Db25jYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db25jYXQKKyAgUHlTZXF1ZW5jZV9Db250YWlucz1weXRob24zNi5QeVNlcXVlbmNlX0NvbnRhaW5zCisgIFB5U2VxdWVuY2VfQ291bnQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9Db3VudAorICBQeVNlcXVlbmNlX0RlbEl0ZW09cHl0aG9uMzYuUHlTZXF1ZW5jZV9EZWxJdGVtCisgIFB5U2VxdWVuY2VfRGVsU2xpY2U9cHl0aG9uMzYuUHlTZXF1ZW5jZV9EZWxTbGljZQorICBQeVNlcXVlbmNlX0Zhc3Q9cHl0aG9uMzYuUHlTZXF1ZW5jZV9GYXN0CisgIFB5U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNi5QeVNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTZXF1ZW5jZV9HZXRTbGljZT1weXRob24zNi5QeVNlcXVlbmNlX0dldFNsaWNlCisgIFB5U2VxdWVuY2VfSW49cHl0aG9uMzYuUHlTZXF1ZW5jZV9JbgorICBQeVNlcXVlbmNlX0luUGxhY2VDb25jYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9JblBsYWNlQ29uY2F0CisgIFB5U2VxdWVuY2VfSW5QbGFjZVJlcGVhdD1weXRob24zNi5QeVNlcXVlbmNlX0luUGxhY2VSZXBlYXQKKyAgUHlTZXF1ZW5jZV9JbmRleD1weXRob24zNi5QeVNlcXVlbmNlX0luZGV4CisgIFB5U2VxdWVuY2VfTGVuZ3RoPXB5dGhvbjM2LlB5U2VxdWVuY2VfTGVuZ3RoCisgIFB5U2VxdWVuY2VfTGlzdD1weXRob24zNi5QeVNlcXVlbmNlX0xpc3QKKyAgUHlTZXF1ZW5jZV9SZXBlYXQ9cHl0aG9uMzYuUHlTZXF1ZW5jZV9SZXBlYXQKKyAgUHlTZXF1ZW5jZV9TZXRJdGVtPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2V0SXRlbQorICBQeVNlcXVlbmNlX1NldFNsaWNlPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2V0U2xpY2UKKyAgUHlTZXF1ZW5jZV9TaXplPXB5dGhvbjM2LlB5U2VxdWVuY2VfU2l6ZQorICBQeVNlcXVlbmNlX1R1cGxlPXB5dGhvbjM2LlB5U2VxdWVuY2VfVHVwbGUKKyAgUHlTZXRJdGVyX1R5cGU9cHl0aG9uMzYuUHlTZXRJdGVyX1R5cGUgREFUQQorICBQeVNldF9BZGQ9cHl0aG9uMzYuUHlTZXRfQWRkCisgIFB5U2V0X0NsZWFyPXB5dGhvbjM2LlB5U2V0X0NsZWFyCisgIFB5U2V0X0NvbnRhaW5zPXB5dGhvbjM2LlB5U2V0X0NvbnRhaW5zCisgIFB5U2V0X0Rpc2NhcmQ9cHl0aG9uMzYuUHlTZXRfRGlzY2FyZAorICBQeVNldF9OZXc9cHl0aG9uMzYuUHlTZXRfTmV3CisgIFB5U2V0X1BvcD1weXRob24zNi5QeVNldF9Qb3AKKyAgUHlTZXRfU2l6ZT1weXRob24zNi5QeVNldF9TaXplCisgIFB5U2V0X1R5cGU9cHl0aG9uMzYuUHlTZXRfVHlwZSBEQVRBCisgIFB5U2xpY2VfR2V0SW5kaWNlcz1weXRob24zNi5QeVNsaWNlX0dldEluZGljZXMKKyAgUHlTbGljZV9HZXRJbmRpY2VzRXg9cHl0aG9uMzYuUHlTbGljZV9HZXRJbmRpY2VzRXgKKyAgUHlTbGljZV9OZXc9cHl0aG9uMzYuUHlTbGljZV9OZXcKKyAgUHlTbGljZV9UeXBlPXB5dGhvbjM2LlB5U2xpY2VfVHlwZSBEQVRBCisgIFB5U29ydFdyYXBwZXJfVHlwZT1weXRob24zNi5QeVNvcnRXcmFwcGVyX1R5cGUgREFUQQorICBQeVN0YXRlX0ZpbmRNb2R1bGU9cHl0aG9uMzYuUHlTdGF0ZV9GaW5kTW9kdWxlCisgIFB5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfQWRkTW9kdWxlCisgIFB5U3RhdGVfUmVtb3ZlTW9kdWxlPXB5dGhvbjM2LlB5U3RhdGVfUmVtb3ZlTW9kdWxlCisgIFB5U3RydWN0U2VxdWVuY2VfR2V0SXRlbT1weXRob24zNi5QeVN0cnVjdFNlcXVlbmNlX0dldEl0ZW0KKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXc9cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9OZXcKKyAgUHlTdHJ1Y3RTZXF1ZW5jZV9OZXdUeXBlPXB5dGhvbjM2LlB5U3RydWN0U2VxdWVuY2VfTmV3VHlwZQorICBQeVN0cnVjdFNlcXVlbmNlX1NldEl0ZW09cHl0aG9uMzYuUHlTdHJ1Y3RTZXF1ZW5jZV9TZXRJdGVtCisgIFB5U3VwZXJfVHlwZT1weXRob24zNi5QeVN1cGVyX1R5cGUgREFUQQorICBQeVN5c19BZGRXYXJuT3B0aW9uPXB5dGhvbjM2LlB5U3lzX0FkZFdhcm5PcHRpb24KKyAgUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGU9cHl0aG9uMzYuUHlTeXNfQWRkV2Fybk9wdGlvblVuaWNvZGUKKyAgUHlTeXNfRm9ybWF0U3RkZXJyPXB5dGhvbjM2LlB5U3lzX0Zvcm1hdFN0ZGVycgorICBQeVN5c19Gb3JtYXRTdGRvdXQ9cHl0aG9uMzYuUHlTeXNfRm9ybWF0U3Rkb3V0CisgIFB5U3lzX0dldE9iamVjdD1weXRob24zNi5QeVN5c19HZXRPYmplY3QKKyAgUHlTeXNfSGFzV2Fybk9wdGlvbnM9cHl0aG9uMzYuUHlTeXNfSGFzV2Fybk9wdGlvbnMKKyAgUHlTeXNfUmVzZXRXYXJuT3B0aW9ucz1weXRob24zNi5QeVN5c19SZXNldFdhcm5PcHRpb25zCisgIFB5U3lzX1NldEFyZ3Y9cHl0aG9uMzYuUHlTeXNfU2V0QXJndgorICBQeVN5c19TZXRBcmd2RXg9cHl0aG9uMzYuUHlTeXNfU2V0QXJndkV4CisgIFB5U3lzX1NldE9iamVjdD1weXRob24zNi5QeVN5c19TZXRPYmplY3QKKyAgUHlTeXNfU2V0UGF0aD1weXRob24zNi5QeVN5c19TZXRQYXRoCisgIFB5U3lzX1dyaXRlU3RkZXJyPXB5dGhvbjM2LlB5U3lzX1dyaXRlU3RkZXJyCisgIFB5U3lzX1dyaXRlU3Rkb3V0PXB5dGhvbjM2LlB5U3lzX1dyaXRlU3Rkb3V0CisgIFB5VGhyZWFkU3RhdGVfQ2xlYXI9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9DbGVhcgorICBQeVRocmVhZFN0YXRlX0RlbGV0ZT1weXRob24zNi5QeVRocmVhZFN0YXRlX0RlbGV0ZQorICBQeVRocmVhZFN0YXRlX0RlbGV0ZUN1cnJlbnQ9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9EZWxldGVDdXJyZW50CisgIFB5VGhyZWFkU3RhdGVfR2V0PXB5dGhvbjM2LlB5VGhyZWFkU3RhdGVfR2V0CisgIFB5VGhyZWFkU3RhdGVfR2V0RGljdD1weXRob24zNi5QeVRocmVhZFN0YXRlX0dldERpY3QKKyAgUHlUaHJlYWRTdGF0ZV9OZXc9cHl0aG9uMzYuUHlUaHJlYWRTdGF0ZV9OZXcKKyAgUHlUaHJlYWRTdGF0ZV9TZXRBc3luY0V4Yz1weXRob24zNi5QeVRocmVhZFN0YXRlX1NldEFzeW5jRXhjCisgIFB5VGhyZWFkU3RhdGVfU3dhcD1weXRob24zNi5QeVRocmVhZFN0YXRlX1N3YXAKKyAgUHlUcmFjZUJhY2tfSGVyZT1weXRob24zNi5QeVRyYWNlQmFja19IZXJlCisgIFB5VHJhY2VCYWNrX1ByaW50PXB5dGhvbjM2LlB5VHJhY2VCYWNrX1ByaW50CisgIFB5VHJhY2VCYWNrX1R5cGU9cHl0aG9uMzYuUHlUcmFjZUJhY2tfVHlwZSBEQVRBCisgIFB5VHVwbGVJdGVyX1R5cGU9cHl0aG9uMzYuUHlUdXBsZUl0ZXJfVHlwZSBEQVRBCisgIFB5VHVwbGVfQ2xlYXJGcmVlTGlzdD1weXRob24zNi5QeVR1cGxlX0NsZWFyRnJlZUxpc3QKKyAgUHlUdXBsZV9HZXRJdGVtPXB5dGhvbjM2LlB5VHVwbGVfR2V0SXRlbQorICBQeVR1cGxlX0dldFNsaWNlPXB5dGhvbjM2LlB5VHVwbGVfR2V0U2xpY2UKKyAgUHlUdXBsZV9OZXc9cHl0aG9uMzYuUHlUdXBsZV9OZXcKKyAgUHlUdXBsZV9QYWNrPXB5dGhvbjM2LlB5VHVwbGVfUGFjaworICBQeVR1cGxlX1NldEl0ZW09cHl0aG9uMzYuUHlUdXBsZV9TZXRJdGVtCisgIFB5VHVwbGVfU2l6ZT1weXRob24zNi5QeVR1cGxlX1NpemUKKyAgUHlUdXBsZV9UeXBlPXB5dGhvbjM2LlB5VHVwbGVfVHlwZSBEQVRBCisgIFB5VHlwZV9DbGVhckNhY2hlPXB5dGhvbjM2LlB5VHlwZV9DbGVhckNhY2hlCisgIFB5VHlwZV9Gcm9tU3BlYz1weXRob24zNi5QeVR5cGVfRnJvbVNwZWMKKyAgUHlUeXBlX0Zyb21TcGVjV2l0aEJhc2VzPXB5dGhvbjM2LlB5VHlwZV9Gcm9tU3BlY1dpdGhCYXNlcworICBQeVR5cGVfR2VuZXJpY0FsbG9jPXB5dGhvbjM2LlB5VHlwZV9HZW5lcmljQWxsb2MKKyAgUHlUeXBlX0dlbmVyaWNOZXc9cHl0aG9uMzYuUHlUeXBlX0dlbmVyaWNOZXcKKyAgUHlUeXBlX0dldEZsYWdzPXB5dGhvbjM2LlB5VHlwZV9HZXRGbGFncworICBQeVR5cGVfR2V0U2xvdD1weXRob24zNi5QeVR5cGVfR2V0U2xvdAorICBQeVR5cGVfSXNTdWJ0eXBlPXB5dGhvbjM2LlB5VHlwZV9Jc1N1YnR5cGUKKyAgUHlUeXBlX01vZGlmaWVkPXB5dGhvbjM2LlB5VHlwZV9Nb2RpZmllZAorICBQeVR5cGVfUmVhZHk9cHl0aG9uMzYuUHlUeXBlX1JlYWR5CisgIFB5VHlwZV9UeXBlPXB5dGhvbjM2LlB5VHlwZV9UeXBlIERBVEEKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfQ3JlYXRlPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0NyZWF0ZQorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmNvZGluZworICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZURlY29kZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZURlY29kZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVEZWNvZGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRGVjb2RlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5jb2RpbmcKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX0dldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0T2JqZWN0CisgIFB5VW5pY29kZUVuY29kZUVycm9yX0dldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVFbmNvZGVFcnJvcl9HZXRSZWFzb24KKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfR2V0U3RhcnQKKyAgUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0RW5kPXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldEVuZAorICBQeVVuaWNvZGVFbmNvZGVFcnJvcl9TZXRSZWFzb249cHl0aG9uMzYuUHlVbmljb2RlRW5jb2RlRXJyb3JfU2V0UmVhc29uCisgIFB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0PXB5dGhvbjM2LlB5VW5pY29kZUVuY29kZUVycm9yX1NldFN0YXJ0CisgIFB5VW5pY29kZUl0ZXJfVHlwZT1weXRob24zNi5QeVVuaWNvZGVJdGVyX1R5cGUgREFUQQorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRPYmplY3QKKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfR2V0UmVhc29uPXB5dGhvbjM2LlB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX0dldFJlYXNvbgorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydD1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9HZXRTdGFydAorICBQeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRFbmQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0RW5kCisgIFB5VW5pY29kZVRyYW5zbGF0ZUVycm9yX1NldFJlYXNvbj1weXRob24zNi5QeVVuaWNvZGVUcmFuc2xhdGVFcnJvcl9TZXRSZWFzb24KKyAgUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQ9cHl0aG9uMzYuUHlVbmljb2RlVHJhbnNsYXRlRXJyb3JfU2V0U3RhcnQKKyAgUHlVbmljb2RlX0FwcGVuZD1weXRob24zNi5QeVVuaWNvZGVfQXBwZW5kCisgIFB5VW5pY29kZV9BcHBlbmRBbmREZWw9cHl0aG9uMzYuUHlVbmljb2RlX0FwcGVuZEFuZERlbAorICBQeVVuaWNvZGVfQXNBU0NJSVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNBU0NJSVN0cmluZworICBQeVVuaWNvZGVfQXNDaGFybWFwU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0NoYXJtYXBTdHJpbmcKKyAgUHlVbmljb2RlX0FzRGVjb2RlZE9iamVjdD1weXRob24zNi5QeVVuaWNvZGVfQXNEZWNvZGVkT2JqZWN0CisgIFB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0RlY29kZWRVbmljb2RlCisgIFB5VW5pY29kZV9Bc0VuY29kZWRPYmplY3Q9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfQXNFbmNvZGVkU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcKKyAgUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0FzRW5jb2RlZFVuaWNvZGUKKyAgUHlVbmljb2RlX0FzTGF0aW4xU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc0xhdGluMVN0cmluZworICBQeVVuaWNvZGVfQXNSYXdVbmljb2RlRXNjYXBlU3RyaW5nPXB5dGhvbjM2LlB5VW5pY29kZV9Bc1Jhd1VuaWNvZGVFc2NhcGVTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMTZTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGMTZTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGMzJTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVVRGMzJTdHJpbmcKKyAgUHlVbmljb2RlX0FzVVRGOFN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfQXNVVEY4U3RyaW5nCisgIFB5VW5pY29kZV9Bc1VuaWNvZGVFc2NhcGVTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0FzVW5pY29kZUVzY2FwZVN0cmluZworICBQeVVuaWNvZGVfQXNXaWRlQ2hhcj1weXRob24zNi5QeVVuaWNvZGVfQXNXaWRlQ2hhcgorICBQeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdD1weXRob24zNi5QeVVuaWNvZGVfQ2xlYXJGcmVlbGlzdAorICBQeVVuaWNvZGVfQ29tcGFyZT1weXRob24zNi5QeVVuaWNvZGVfQ29tcGFyZQorICBQeVVuaWNvZGVfQ29uY2F0PXB5dGhvbjM2LlB5VW5pY29kZV9Db25jYXQKKyAgUHlVbmljb2RlX0NvbnRhaW5zPXB5dGhvbjM2LlB5VW5pY29kZV9Db250YWlucworICBQeVVuaWNvZGVfQ291bnQ9cHl0aG9uMzYuUHlVbmljb2RlX0NvdW50CisgIFB5VW5pY29kZV9EZWNvZGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZQorICBQeVVuaWNvZGVfRGVjb2RlQVNDSUk9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUFTQ0lJCisgIFB5VW5pY29kZV9EZWNvZGVDaGFybWFwPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVDaGFybWFwCisgIFB5VW5pY29kZV9EZWNvZGVGU0RlZmF1bHQ9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlRlNEZWZhdWx0QW5kU2l6ZQorICBQeVVuaWNvZGVfRGVjb2RlTGF0aW4xPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVMYXRpbjEKKyAgUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGU9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVJhd1VuaWNvZGVFc2NhcGUKKyAgUHlVbmljb2RlX0RlY29kZVVURjE2PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYxNgorICBQeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGMTZTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVVRGMzI9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjMyCisgIFB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsPXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEYzMlN0YXRlZnVsCisgIFB5VW5pY29kZV9EZWNvZGVVVEY4PXB5dGhvbjM2LlB5VW5pY29kZV9EZWNvZGVVVEY4CisgIFB5VW5pY29kZV9EZWNvZGVVVEY4U3RhdGVmdWw9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bAorICBQeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZT1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVW5pY29kZUVzY2FwZQorICBQeVVuaWNvZGVfRlNDb252ZXJ0ZXI9cHl0aG9uMzYuUHlVbmljb2RlX0ZTQ29udmVydGVyCisgIFB5VW5pY29kZV9GU0RlY29kZXI9cHl0aG9uMzYuUHlVbmljb2RlX0ZTRGVjb2RlcgorICBQeVVuaWNvZGVfRmluZD1weXRob24zNi5QeVVuaWNvZGVfRmluZAorICBQeVVuaWNvZGVfRm9ybWF0PXB5dGhvbjM2LlB5VW5pY29kZV9Gb3JtYXQKKyAgUHlVbmljb2RlX0Zyb21FbmNvZGVkT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tRW5jb2RlZE9iamVjdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdD1weXRob24zNi5QeVVuaWNvZGVfRnJvbUZvcm1hdAorICBQeVVuaWNvZGVfRnJvbUZvcm1hdFY9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21Gb3JtYXRWCisgIFB5VW5pY29kZV9Gcm9tT2JqZWN0PXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tT2JqZWN0CisgIFB5VW5pY29kZV9Gcm9tT3JkaW5hbD1weXRob24zNi5QeVVuaWNvZGVfRnJvbU9yZGluYWwKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0Zyb21TdHJpbmcKKyAgUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tU3RyaW5nQW5kU2l6ZQorICBQeVVuaWNvZGVfRnJvbVdpZGVDaGFyPXB5dGhvbjM2LlB5VW5pY29kZV9Gcm9tV2lkZUNoYXIKKyAgUHlVbmljb2RlX0dldERlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeVVuaWNvZGVfR2V0RGVmYXVsdEVuY29kaW5nCisgIFB5VW5pY29kZV9HZXRTaXplPXB5dGhvbjM2LlB5VW5pY29kZV9HZXRTaXplCisgIFB5VW5pY29kZV9Jc0lkZW50aWZpZXI9cHl0aG9uMzYuUHlVbmljb2RlX0lzSWRlbnRpZmllcgorICBQeVVuaWNvZGVfSm9pbj1weXRob24zNi5QeVVuaWNvZGVfSm9pbgorICBQeVVuaWNvZGVfUGFydGl0aW9uPXB5dGhvbjM2LlB5VW5pY29kZV9QYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JQYXJ0aXRpb249cHl0aG9uMzYuUHlVbmljb2RlX1JQYXJ0aXRpb24KKyAgUHlVbmljb2RlX1JTcGxpdD1weXRob24zNi5QeVVuaWNvZGVfUlNwbGl0CisgIFB5VW5pY29kZV9SZXBsYWNlPXB5dGhvbjM2LlB5VW5pY29kZV9SZXBsYWNlCisgIFB5VW5pY29kZV9SZXNpemU9cHl0aG9uMzYuUHlVbmljb2RlX1Jlc2l6ZQorICBQeVVuaWNvZGVfUmljaENvbXBhcmU9cHl0aG9uMzYuUHlVbmljb2RlX1JpY2hDb21wYXJlCisgIFB5VW5pY29kZV9TZXREZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlVbmljb2RlX1NldERlZmF1bHRFbmNvZGluZworICBQeVVuaWNvZGVfU3BsaXQ9cHl0aG9uMzYuUHlVbmljb2RlX1NwbGl0CisgIFB5VW5pY29kZV9TcGxpdGxpbmVzPXB5dGhvbjM2LlB5VW5pY29kZV9TcGxpdGxpbmVzCisgIFB5VW5pY29kZV9UYWlsbWF0Y2g9cHl0aG9uMzYuUHlVbmljb2RlX1RhaWxtYXRjaAorICBQeVVuaWNvZGVfVHJhbnNsYXRlPXB5dGhvbjM2LlB5VW5pY29kZV9UcmFuc2xhdGUKKyAgUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXA9cHl0aG9uMzYuUHlVbmljb2RlX0J1aWxkRW5jb2RpbmdNYXAKKyAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmc9cHl0aG9uMzYuUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcKKyAgUHlVbmljb2RlX0RlY29kZVVURjc9cHl0aG9uMzYuUHlVbmljb2RlX0RlY29kZVVURjcKKyAgUHlVbmljb2RlX0RlY29kZVVURjdTdGF0ZWZ1bD1weXRob24zNi5QeVVuaWNvZGVfRGVjb2RlVVRGN1N0YXRlZnVsCisgIFB5VW5pY29kZV9FbmNvZGVGU0RlZmF1bHQ9cHl0aG9uMzYuUHlVbmljb2RlX0VuY29kZUZTRGVmYXVsdAorICBQeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZz1weXRob24zNi5QeVVuaWNvZGVfSW50ZXJuRnJvbVN0cmluZworICBQeVVuaWNvZGVfSW50ZXJuSW1tb3J0YWw9cHl0aG9uMzYuUHlVbmljb2RlX0ludGVybkltbW9ydGFsCisgIFB5VW5pY29kZV9JbnRlcm5JblBsYWNlPXB5dGhvbjM2LlB5VW5pY29kZV9JbnRlcm5JblBsYWNlCisgIFB5VW5pY29kZV9UeXBlPXB5dGhvbjM2LlB5VW5pY29kZV9UeXBlIERBVEEKKyAgUHlXZWFrcmVmX0dldE9iamVjdD1weXRob24zNi5QeVdlYWtyZWZfR2V0T2JqZWN0IERBVEEKKyAgUHlXZWFrcmVmX05ld1Byb3h5PXB5dGhvbjM2LlB5V2Vha3JlZl9OZXdQcm94eQorICBQeVdlYWtyZWZfTmV3UmVmPXB5dGhvbjM2LlB5V2Vha3JlZl9OZXdSZWYKKyAgUHlXcmFwcGVyRGVzY3JfVHlwZT1weXRob24zNi5QeVdyYXBwZXJEZXNjcl9UeXBlIERBVEEKKyAgUHlXcmFwcGVyX05ldz1weXRob24zNi5QeVdyYXBwZXJfTmV3CisgIFB5WmlwX1R5cGU9cHl0aG9uMzYuUHlaaXBfVHlwZSBEQVRBCisgIFB5X0FkZFBlbmRpbmdDYWxsPXB5dGhvbjM2LlB5X0FkZFBlbmRpbmdDYWxsCisgIFB5X0F0RXhpdD1weXRob24zNi5QeV9BdEV4aXQKKyAgUHlfQnVpbGRWYWx1ZT1weXRob24zNi5QeV9CdWlsZFZhbHVlCisgIFB5X0NvbXBpbGVTdHJpbmc9cHl0aG9uMzYuUHlfQ29tcGlsZVN0cmluZworICBQeV9EZWNSZWY9cHl0aG9uMzYuUHlfRGVjUmVmCisgIFB5X0VuZEludGVycHJldGVyPXB5dGhvbjM2LlB5X0VuZEludGVycHJldGVyCisgIFB5X0V4aXQ9cHl0aG9uMzYuUHlfRXhpdAorICBQeV9GYXRhbEVycm9yPXB5dGhvbjM2LlB5X0ZhdGFsRXJyb3IKKyAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZz1weXRob24zNi5QeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nIERBVEEKKyAgUHlfRmluYWxpemU9cHl0aG9uMzYuUHlfRmluYWxpemUKKyAgUHlfRmluYWxpemVFeD1weXRob24zNi5QeV9GaW5hbGl6ZUV4CisgIFB5X0dldEJ1aWxkSW5mbz1weXRob24zNi5QeV9HZXRCdWlsZEluZm8KKyAgUHlfR2V0Q29tcGlsZXI9cHl0aG9uMzYuUHlfR2V0Q29tcGlsZXIKKyAgUHlfR2V0Q29weXJpZ2h0PXB5dGhvbjM2LlB5X0dldENvcHlyaWdodAorICBQeV9HZXRFeGVjUHJlZml4PXB5dGhvbjM2LlB5X0dldEV4ZWNQcmVmaXgKKyAgUHlfR2V0UGF0aD1weXRob24zNi5QeV9HZXRQYXRoCisgIFB5X0dldFBsYXRmb3JtPXB5dGhvbjM2LlB5X0dldFBsYXRmb3JtCisgIFB5X0dldFByZWZpeD1weXRob24zNi5QeV9HZXRQcmVmaXgKKyAgUHlfR2V0UHJvZ3JhbUZ1bGxQYXRoPXB5dGhvbjM2LlB5X0dldFByb2dyYW1GdWxsUGF0aAorICBQeV9HZXRQcm9ncmFtTmFtZT1weXRob24zNi5QeV9HZXRQcm9ncmFtTmFtZQorICBQeV9HZXRQeXRob25Ib21lPXB5dGhvbjM2LlB5X0dldFB5dGhvbkhvbWUKKyAgUHlfR2V0UmVjdXJzaW9uTGltaXQ9cHl0aG9uMzYuUHlfR2V0UmVjdXJzaW9uTGltaXQKKyAgUHlfR2V0VmVyc2lvbj1weXRob24zNi5QeV9HZXRWZXJzaW9uCisgIFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2Rpbmc9cHl0aG9uMzYuUHlfSGFzRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyBEQVRBCisgIFB5X0luY1JlZj1weXRob24zNi5QeV9JbmNSZWYKKyAgUHlfSW5pdGlhbGl6ZT1weXRob24zNi5QeV9Jbml0aWFsaXplCisgIFB5X0luaXRpYWxpemVFeD1weXRob24zNi5QeV9Jbml0aWFsaXplRXgKKyAgUHlfSXNJbml0aWFsaXplZD1weXRob24zNi5QeV9Jc0luaXRpYWxpemVkCisgIFB5X01haW49cHl0aG9uMzYuUHlfTWFpbgorICBQeV9NYWtlUGVuZGluZ0NhbGxzPXB5dGhvbjM2LlB5X01ha2VQZW5kaW5nQ2FsbHMKKyAgUHlfTmV3SW50ZXJwcmV0ZXI9cHl0aG9uMzYuUHlfTmV3SW50ZXJwcmV0ZXIKKyAgUHlfUmVwckVudGVyPXB5dGhvbjM2LlB5X1JlcHJFbnRlcgorICBQeV9SZXByTGVhdmU9cHl0aG9uMzYuUHlfUmVwckxlYXZlCisgIFB5X1NldFByb2dyYW1OYW1lPXB5dGhvbjM2LlB5X1NldFByb2dyYW1OYW1lCisgIFB5X1NldFB5dGhvbkhvbWU9cHl0aG9uMzYuUHlfU2V0UHl0aG9uSG9tZQorICBQeV9TZXRSZWN1cnNpb25MaW1pdD1weXRob24zNi5QeV9TZXRSZWN1cnNpb25MaW1pdAorICBQeV9TeW10YWJsZVN0cmluZz1weXRob24zNi5QeV9TeW10YWJsZVN0cmluZworICBQeV9WYUJ1aWxkVmFsdWU9cHl0aG9uMzYuUHlfVmFCdWlsZFZhbHVlCisgIF9QeUVycl9CYWRJbnRlcm5hbENhbGw9cHl0aG9uMzYuX1B5RXJyX0JhZEludGVybmFsQ2FsbAorICBfUHlPYmplY3RfQ2FsbEZ1bmN0aW9uX1NpemVUPXB5dGhvbjM2Ll9QeU9iamVjdF9DYWxsRnVuY3Rpb25fU2l6ZVQKKyAgX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQ9cHl0aG9uMzYuX1B5T2JqZWN0X0NhbGxNZXRob2RfU2l6ZVQKKyAgX1B5T2JqZWN0X0dDX01hbGxvYz1weXRob24zNi5fUHlPYmplY3RfR0NfTWFsbG9jCisgIF9QeU9iamVjdF9HQ19OZXc9cHl0aG9uMzYuX1B5T2JqZWN0X0dDX05ldworICBfUHlPYmplY3RfR0NfTmV3VmFyPXB5dGhvbjM2Ll9QeU9iamVjdF9HQ19OZXdWYXIKKyAgX1B5T2JqZWN0X0dDX1Jlc2l6ZT1weXRob24zNi5fUHlPYmplY3RfR0NfUmVzaXplCisgIF9QeU9iamVjdF9OZXc9cHl0aG9uMzYuX1B5T2JqZWN0X05ldworICBfUHlPYmplY3RfTmV3VmFyPXB5dGhvbjM2Ll9QeU9iamVjdF9OZXdWYXIKKyAgX1B5U3RhdGVfQWRkTW9kdWxlPXB5dGhvbjM2Ll9QeVN0YXRlX0FkZE1vZHVsZQorICBfUHlUaHJlYWRTdGF0ZV9Jbml0PXB5dGhvbjM2Ll9QeVRocmVhZFN0YXRlX0luaXQKKyAgX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2M9cHl0aG9uMzYuX1B5VGhyZWFkU3RhdGVfUHJlYWxsb2MKKyAgX1B5VHJhc2hfZGVsZXRlX2xhdGVyPXB5dGhvbjM2Ll9QeVRyYXNoX2RlbGV0ZV9sYXRlciBEQVRBCisgIF9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nPXB5dGhvbjM2Ll9QeVRyYXNoX2RlbGV0ZV9uZXN0aW5nIERBVEEKKyAgX1B5VHJhc2hfZGVwb3NpdF9vYmplY3Q9cHl0aG9uMzYuX1B5VHJhc2hfZGVwb3NpdF9vYmplY3QKKyAgX1B5VHJhc2hfZGVzdHJveV9jaGFpbj1weXRob24zNi5fUHlUcmFzaF9kZXN0cm95X2NoYWluCisgIF9QeVdlYWtyZWZfQ2FsbGFibGVQcm94eVR5cGU9cHl0aG9uMzYuX1B5V2Vha3JlZl9DYWxsYWJsZVByb3h5VHlwZSBEQVRBCisgIF9QeVdlYWtyZWZfUHJveHlUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUHJveHlUeXBlIERBVEEKKyAgX1B5V2Vha3JlZl9SZWZUeXBlPXB5dGhvbjM2Ll9QeVdlYWtyZWZfUmVmVHlwZSBEQVRBCisgIF9QeV9CdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9CdWlsZFZhbHVlX1NpemVUCisgIF9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0PXB5dGhvbjM2Ll9QeV9DaGVja1JlY3Vyc2lvbkxpbWl0IERBVEEKKyAgX1B5X0NoZWNrUmVjdXJzaXZlQ2FsbD1weXRob24zNi5fUHlfQ2hlY2tSZWN1cnNpdmVDYWxsCisgIF9QeV9EZWFsbG9jPXB5dGhvbjM2Ll9QeV9EZWFsbG9jCisgIF9QeV9FbGxpcHNpc09iamVjdD1weXRob24zNi5fUHlfRWxsaXBzaXNPYmplY3QgREFUQQorICBfUHlfRmFsc2VTdHJ1Y3Q9cHl0aG9uMzYuX1B5X0ZhbHNlU3RydWN0IERBVEEKKyAgX1B5X05vbmVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vbmVTdHJ1Y3QgREFUQQorICBfUHlfTm90SW1wbGVtZW50ZWRTdHJ1Y3Q9cHl0aG9uMzYuX1B5X05vdEltcGxlbWVudGVkU3RydWN0IERBVEEKKyAgX1B5X1N3YXBwZWRPcD1weXRob24zNi5fUHlfU3dhcHBlZE9wIERBVEEKKyAgX1B5X1RydWVTdHJ1Y3Q9cHl0aG9uMzYuX1B5X1RydWVTdHJ1Y3QgREFUQQorICBfUHlfVmFCdWlsZFZhbHVlX1NpemVUPXB5dGhvbjM2Ll9QeV9WYUJ1aWxkVmFsdWVfU2l6ZVQKKyAgX1B5QXJnX1BhcnNlX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZV9TaXplVD1weXRob24zNi5fUHlBcmdfUGFyc2VUdXBsZV9TaXplVAorICBfUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VfU2l6ZVQ9cHl0aG9uMzYuX1B5QXJnX1ZhUGFyc2VfU2l6ZVQKKyAgX1B5QXJnX1ZhUGFyc2VUdXBsZUFuZEtleXdvcmRzX1NpemVUPXB5dGhvbjM2Ll9QeUFyZ19WYVBhcnNlVHVwbGVBbmRLZXl3b3Jkc19TaXplVAorICBfUHlfQnVpbGRWYWx1ZV9TaXplVD1weXRob24zNi5fUHlfQnVpbGRWYWx1ZV9TaXplVApkaWZmIC0tZ2l0IGEvUEMvcHl0aG9uX2V4ZS5yYyBiL1BDL3B5dGhvbl9leGUucmMKaW5kZXggOTE3ODVhMS4uYWUwYjAyOSAxMDA2NDQKLS0tIGEvUEMvcHl0aG9uX2V4ZS5yYworKysgYi9QQy9weXRob25fZXhlLnJjCkBAIC03LDcgKzcsNyBAQAogI2luY2x1ZGUgPHdpbnVzZXIuaD4KIDEgUlRfTUFOSUZFU1QgInB5dGhvbi5tYW5pZmVzdCIKIAotMSBJQ09OIERJU0NBUkRBQkxFICJweWNvbi5pY28iIAorMSBJQ09OIERJU0NBUkRBQkxFICJpY29uc1xweXRob24uaWNvIiAKIAogCiAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLwpkaWZmIC0tZ2l0IGEvUEMvcHl0aG9ud19leGUucmMgYi9QQy9weXRob253X2V4ZS5yYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OGJmMzU5Ci0tLSAvZGV2L251bGwKKysrIGIvUEMvcHl0aG9ud19leGUucmMKQEAgLTAsMCArMSw0OSBAQAorLy8gUmVzb3VyY2Ugc2NyaXB0IGZvciBQeXRob24gY29uc29sZSBFWEVzLgorCisjaW5jbHVkZSAicHl0aG9uX3Zlcl9yYy5oIgorCisvLyBJbmNsdWRlIHRoZSBtYW5pZmVzdCBmaWxlIHRoYXQgaW5kaWNhdGVzIHdlIHN1cHBvcnQgYWxsCisvLyBjdXJyZW50IHZlcnNpb25zIG9mIFdpbmRvd3MuCisjaW5jbHVkZSA8d2ludXNlci5oPgorMSBSVF9NQU5JRkVTVCAicHl0aG9uLm1hbmlmZXN0IgorCisxIElDT04gRElTQ0FSREFCTEUgImljb25zXHB5dGhvbncuaWNvIiAKKworCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLworLy8KKy8vIFZlcnNpb24KKy8vCisKK1ZTX1ZFUlNJT05fSU5GTyBWRVJTSU9OSU5GTworIEZJTEVWRVJTSU9OIFBZVkVSU0lPTjY0CisgUFJPRFVDVFZFUlNJT04gUFlWRVJTSU9ONjQKKyBGSUxFRkxBR1NNQVNLIDB4M2ZMCisjaWZkZWYgX0RFQlVHCisgRklMRUZMQUdTIFZTX0ZGX0RFQlVHCisjZWxzZQorIEZJTEVGTEFHUyAweDBMCisjZW5kaWYKKyBGSUxFT1MgVk9TX19XSU5ET1dTMzIKKyBGSUxFVFlQRSBWRlRfQVBQCisgRklMRVNVQlRZUEUgMHgwTAorQkVHSU4KKyAgICBCTE9DSyAiU3RyaW5nRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgQkxPQ0sgIjAwMDAwNGIwIgorICAgICAgICBCRUdJTgorICAgICAgICAgICAgVkFMVUUgIkNvbXBhbnlOYW1lIiwgUFlUSE9OX0NPTVBBTlkgIlwwIgorICAgICAgICAgICAgVkFMVUUgIkZpbGVEZXNjcmlwdGlvbiIsICJQeXRob25cMCIKKyAgICAgICAgICAgIFZBTFVFICJGaWxlVmVyc2lvbiIsIFBZVEhPTl9WRVJTSU9OCisgICAgICAgICAgICBWQUxVRSAiSW50ZXJuYWxOYW1lIiwgIlB5dGhvbiBBcHBsaWNhdGlvblwwIgorICAgICAgICAgICAgVkFMVUUgIkxlZ2FsQ29weXJpZ2h0IiwgUFlUSE9OX0NPUFlSSUdIVCAiXDAiCisgICAgICAgICAgICBWQUxVRSAiT3JpZ2luYWxGaWxlbmFtZSIsICJweXRob253IiBQWVRIT05fREVCVUdfRVhUICIuZXhlXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdE5hbWUiLCAiUHl0aG9uXDAiCisgICAgICAgICAgICBWQUxVRSAiUHJvZHVjdFZlcnNpb24iLCBQWVRIT05fVkVSU0lPTgorICAgICAgICBFTkQKKyAgICBFTkQKKyAgICBCTE9DSyAiVmFyRmlsZUluZm8iCisgICAgQkVHSU4KKyAgICAgICAgVkFMVUUgIlRyYW5zbGF0aW9uIiwgMHgwLCAxMjAwCisgICAgRU5ECitFTkQKZGlmZiAtLWdpdCBhL1BDL3Rlc3RweS5weSBiL1BDL3Rlc3RweS5weQppbmRleCA0ZWYzZDRmLi43MDlmMzVjIDEwMDY0NAotLS0gYS9QQy90ZXN0cHkucHkKKysrIGIvUEMvdGVzdHB5LnB5CkBAIC0yNiw1ICsyNiw1IEBACiAgICAgICAgICAgICAjIEFkZCB0aGUgInRlc3QiIGRpcmVjdG9yeSB0byBQWVRIT05QQVRILgogICAgICAgICAgICAgc3lzLnBhdGggPSBzeXMucGF0aCArIFt0ZXN0XQogCi1pbXBvcnQgcmVncnRlc3QgIyBTdGFuZGFyZCBQeXRob24gdGVzdGVyLgotcmVncnRlc3QubWFpbigpCitpbXBvcnQgbGlicmVncnRlc3QgIyBTdGFuZGFyZCBQeXRob24gdGVzdGVyLgorbGlicmVncnRlc3QubWFpbigpCmRpZmYgLS1naXQgYS9QQy93aW5yZWcuYyBiL1BDL3dpbnJlZy5jCmluZGV4IGYwOGQ5YTQuLjk1MjQ4MzggMTAwNjQ0Ci0tLSBhL1BDL3dpbnJlZy5jCisrKyBiL1BDL3dpbnJlZy5jCkBAIC01NDksNyArNTQ5LDcgQEAKICAgICAgICAgICAgIGlmICh2YWx1ZSAhPSBQeV9Ob25lICYmICFQeUxvbmdfQ2hlY2sodmFsdWUpKQogICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoRFdPUkQsIDEpOwotICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmPT1OVUxMKXsKKyAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1ZiA9PSBOVUxMKXsKICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgICAgICAgIH0KQEAgLTU2Myw2ICs1NjMsMjQgQEAKICAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZkLCBzaXplb2YoRFdPUkQpKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFJFR19RV09SRDoKKyAgICAgICAgICBpZiAodmFsdWUgIT0gUHlfTm9uZSAmJiAhUHlMb25nX0NoZWNrKHZhbHVlKSkKKyAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKERXT1JENjQsIDEpOworICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpeworICAgICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CisgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICAgICAgfQorICAgICAgICAgICAgKnJldERhdGFTaXplID0gc2l6ZW9mKERXT1JENjQpOworICAgICAgICAgICAgaWYgKHZhbHVlID09IFB5X05vbmUpIHsKKyAgICAgICAgICAgICAgICBEV09SRDY0IHplcm8gPSAwOworICAgICAgICAgICAgICAgIG1lbWNweSgqcmV0RGF0YUJ1ZiwgJnplcm8sIHNpemVvZihEV09SRDY0KSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBEV09SRDY0IGQgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBtZW1jcHkoKnJldERhdGFCdWYsICZkLCBzaXplb2YoRFdPUkQ2NCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CiAgICAgICAgICAgICB7CkBAIC02MTksNyArNjM3LDcgQEAKICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUgPSBzaXplICsgMjsKICAgICAgICAgICAgICAgICAqcmV0RGF0YUJ1ZiA9IChCWVRFICopUHlNZW1fTkVXKGNoYXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqcmV0RGF0YVNpemUpOwotICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpewogICAgICAgICAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgICAgICAgICAgICAgfQpAQCAtNjY1LDcgKzY4Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKIAogICAgICAgICAgICAgICAgICpyZXREYXRhQnVmID0gKEJZVEUgKilQeU1lbV9ORVcoY2hhciwgdmlldy5sZW4pOwotICAgICAgICAgICAgICAgIGlmICgqcmV0RGF0YUJ1Zj09TlVMTCl7CisgICAgICAgICAgICAgICAgaWYgKCpyZXREYXRhQnVmID09IE5VTEwpewogICAgICAgICAgICAgICAgICAgICBQeUJ1ZmZlcl9SZWxlYXNlKCZ2aWV3KTsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtNjkwLDcgKzcwOCwxMyBAQAogICAgICAgICAgICAgaWYgKHJldERhdGFTaXplID09IDApCiAgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoMCk7CiAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmcoKihpbnQgKilyZXREYXRhQnVmKTsKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZygqKERXT1JEICopcmV0RGF0YUJ1Zik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBSRUdfUVdPUkQ6CisgICAgICAgICAgICBpZiAocmV0RGF0YVNpemUgPT0gMCkKKyAgICAgICAgICAgICAgICBvYkRhdGEgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoMCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgb2JEYXRhID0gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKCooRFdPUkQ2NCAqKXJldERhdGFCdWYpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgUkVHX1NaOgogICAgICAgICBjYXNlIFJFR19FWFBBTkRfU1o6CkBAIC0xNTk5LDcgKzE2MjMsNyBAQAogICAgICAgICBBbiBpbnRlZ2VyIHRoYXQgc3BlY2lmaWVzIHRoZSB0eXBlIG9mIHRoZSBkYXRhLCBvbmUgb2Y6CiAgICAgICAgIFJFR19CSU5BUlkgLS0gQmluYXJ5IGRhdGEgaW4gYW55IGZvcm0uCiAgICAgICAgIFJFR19EV09SRCAtLSBBIDMyLWJpdCBudW1iZXIuCi0gICAgICAgIFJFR19EV09SRF9MSVRUTEVfRU5ESUFOIC0tIEEgMzItYml0IG51bWJlciBpbiBsaXR0bGUtZW5kaWFuIGZvcm1hdC4KKyAgICAgICAgUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSAzMi1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19EV09SRAogICAgICAgICBSRUdfRFdPUkRfQklHX0VORElBTiAtLSBBIDMyLWJpdCBudW1iZXIgaW4gYmlnLWVuZGlhbiBmb3JtYXQuCiAgICAgICAgIFJFR19FWFBBTkRfU1ogLS0gQSBudWxsLXRlcm1pbmF0ZWQgc3RyaW5nIHRoYXQgY29udGFpbnMgdW5leHBhbmRlZAogICAgICAgICAgICAgICAgICAgICAgICAgIHJlZmVyZW5jZXMgdG8gZW52aXJvbm1lbnQgdmFyaWFibGVzIChmb3IgZXhhbXBsZSwKQEAgLTE2MDksNiArMTYzMyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBieSB0d28gbnVsbCBjaGFyYWN0ZXJzLiAgTm90ZSB0aGF0IFB5dGhvbiBoYW5kbGVzCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzIHRlcm1pbmF0aW9uIGF1dG9tYXRpY2FsbHkuCiAgICAgICAgIFJFR19OT05FIC0tIE5vIGRlZmluZWQgdmFsdWUgdHlwZS4KKyAgICAgICAgUkVHX1FXT1JEIC0tIEEgNjQtYml0IG51bWJlci4KKyAgICAgICAgUkVHX1FXT1JEX0xJVFRMRV9FTkRJQU4gLS0gQSA2NC1iaXQgbnVtYmVyIGluIGxpdHRsZS1lbmRpYW4gZm9ybWF0LiBFcXVpdmFsZW50IHRvIFJFR19RV09SRC4KICAgICAgICAgUkVHX1JFU09VUkNFX0xJU1QgLS0gQSBkZXZpY2UtZHJpdmVyIHJlc291cmNlIGxpc3QuCiAgICAgICAgIFJFR19TWiAtLSBBIG51bGwtdGVybWluYXRlZCBzdHJpbmcuCiAgICAgdmFsdWU6IG9iamVjdApAQCAtMTYzMSw3ICsxNjU3LDcgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5yZWdfU2V0VmFsdWVFeF9pbXBsKFB5T2JqZWN0ICptb2R1bGUsIEhLRVkga2V5LCBQeV9VTklDT0RFICp2YWx1ZV9uYW1lLAogICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqcmVzZXJ2ZWQsIERXT1JEIHR5cGUsIFB5T2JqZWN0ICp2YWx1ZSkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODhjODQyNmI2YzAwZWM3IGlucHV0PWYxYjE2Y2JjYzNlZDQxMDFdKi8KKy8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD1jODhjODQyNmI2YzAwZWM3IGlucHV0PTkwMGE5ZTM5OTBiZmIxOTZdKi8KIHsKICAgICBCWVRFICpkYXRhOwogICAgIERXT1JEIGxlbjsKQEAgLTE5MTgsNiArMTk0NCw4IEBACiAgICAgQUREX0lOVChSRUdfRFdPUkQpOwogICAgIEFERF9JTlQoUkVHX0RXT1JEX0xJVFRMRV9FTkRJQU4pOwogICAgIEFERF9JTlQoUkVHX0RXT1JEX0JJR19FTkRJQU4pOworICAgIEFERF9JTlQoUkVHX1FXT1JEKTsKKyAgICBBRERfSU5UKFJFR19RV09SRF9MSVRUTEVfRU5ESUFOKTsKICAgICBBRERfSU5UKFJFR19MSU5LKTsKICAgICBBRERfSU5UKFJFR19NVUxUSV9TWik7CiAgICAgQUREX0lOVChSRUdfUkVTT1VSQ0VfTElTVCk7CmRpZmYgLS1naXQgYS9QQy93aW5zb3VuZC5jIGIvUEMvd2luc291bmQuYwppbmRleCA2Yjc5ZDIzLi43ZmVlYmNiIDEwMDY0NAotLS0gYS9QQy93aW5zb3VuZC5jCisrKyBiL1BDL3dpbnNvdW5kLmMKQEAgLTUyLDcgKzUyLDcgQEAKICJTTkRfTk9XQUlUIC0gUmV0dXJuIGltbWVkaWF0ZWx5IGlmIHRoZSBzb3VuZCBkcml2ZXIgaXMgYnVzeVxuIiAvLyBXaXRob3V0IGFueSBlcnJvcnMKICJcbiIKICJCZWVwKGZyZXF1ZW5jeSwgZHVyYXRpb24pIC0gTWFrZSBhIGJlZXAgdGhyb3VnaCB0aGUgUEMgc3BlYWtlci5cbiIKLSJNZXNzYWdlQmVlcCh4KSAtIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcC4iKTsKKyJNZXNzYWdlQmVlcCh0eXBlKSAtIENhbGwgV2luZG93cyBNZXNzYWdlQmVlcC4iKTsKIAogLypbY2xpbmljIGlucHV0XQogbW9kdWxlIHdpbnNvdW5kCkBAIC02NCwzMiArNjQsNTggQEAKIC8qW2NsaW5pYyBpbnB1dF0KIHdpbnNvdW5kLlBsYXlTb3VuZAogCi0gICAgc291bmQ6IFB5X1VOSUNPREUoYWNjZXB0PXtzdHIsIE5vbmVUeXBlfSkKKyAgICBzb3VuZDogb2JqZWN0CiAgICAgICAgIFRoZSBzb3VuZCB0byBwbGF5OyBhIGZpbGVuYW1lLCBkYXRhLCBvciBOb25lLgogICAgIGZsYWdzOiBpbnQKICAgICAgICAgRmxhZyB2YWx1ZXMsIG9yZWQgdG9nZXRoZXIuICBTZWUgbW9kdWxlIGRvY3VtZW50YXRpb24uCi0gICAgLwogCiBBIHdyYXBwZXIgYXJvdW5kIHRoZSBXaW5kb3dzIFBsYXlTb3VuZCBBUEkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCi13aW5zb3VuZF9QbGF5U291bmRfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeV9VTklDT0RFICpzb3VuZCwgaW50IGZsYWdzKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWVjMjRiM2EyYjQzNjgzNzggaW5wdXQ9MzQxMWIxYjdjMWYzNmQ5M10qLword2luc291bmRfUGxheVNvdW5kX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgUHlPYmplY3QgKnNvdW5kLCBpbnQgZmxhZ3MpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9NDlhMGZkMTZhMzcyZWJlYiBpbnB1dD1jNjNlMWYyZDg0OGRhMmYyXSovCiB7CiAgICAgaW50IG9rOworICAgIHdjaGFyX3QgKndzb3VuZDsKKyAgICBQeV9idWZmZXIgdmlldyA9IHtOVUxMLCBOVUxMfTsKIAotICAgIGlmIChmbGFncyAmIFNORF9BU1lOQyAmJiBmbGFncyAmIFNORF9NRU1PUlkpIHsKLSAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbwotICAgICAgICAgICAgcHJldmVudCBTTkRfTE9PUCBmcm9tIG1lbW9yeS4gKi8KLSAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoc291bmQgPT0gUHlfTm9uZSkgeworICAgICAgICB3c291bmQgPSBOVUxMOworICAgIH0gZWxzZSBpZiAoZmxhZ3MgJiBTTkRfTUVNT1JZKSB7CisgICAgICAgIGlmIChmbGFncyAmIFNORF9BU1lOQykgeworICAgICAgICAgICAgLyogU2lkZXN0ZXAgcmVmZXJlbmNlIGNvdW50aW5nIGhlYWRhY2hlOyB1bmZvcnR1bmF0ZWx5IHRoaXMgYWxzbworICAgICAgICAgICAgICAgIHByZXZlbnQgU05EX0xPT1AgZnJvbSBtZW1vcnkuICovCisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgcGxheSBhc3luY2hyb25vdXNseSBmcm9tIG1lbW9yeSIpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKFB5T2JqZWN0X0dldEJ1ZmZlcihzb3VuZCwgJnZpZXcsIFB5QlVGX1NJTVBMRSkgPCAwKSB7CisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgfQorICAgICAgICB3c291bmQgPSAod2NoYXJfdCAqKXZpZXcuYnVmOworICAgIH0gZWxzZSB7CisgICAgICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHNvdW5kKSkgeworICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAiJ3NvdW5kJyBtdXN0IGJlIHN0ciBvciBOb25lLCBub3QgJyVzJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShzb3VuZCktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgd3NvdW5kID0gUHlVbmljb2RlX0FzV2lkZUNoYXJTdHJpbmcoc291bmQsIE5VTEwpOworICAgICAgICBpZiAod3NvdW5kID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CiAgICAgfQogCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgb2sgPSBQbGF5U291bmRXKHNvdW5kLCBOVUxMLCBmbGFncyk7CisgICAgb2sgPSBQbGF5U291bmRXKHdzb3VuZCwgTlVMTCwgZmxhZ3MpOwogICAgIFB5X0VORF9BTExPV19USFJFQURTCisgICAgaWYgKHZpZXcub2JqKSB7CisgICAgICAgIFB5QnVmZmVyX1JlbGVhc2UoJnZpZXcpOworICAgIH0gZWxzZSBpZiAoc291bmQgIT0gUHlfTm9uZSkgeworICAgICAgICBQeU1lbV9GcmVlKHdzb3VuZCk7CisgICAgfQogICAgIGlmICghb2spIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkZhaWxlZCB0byBwbGF5IHNvdW5kIik7CiAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTA1LDE0ICsxMzEsMTMgQEAKICAgICAgICAgTXVzdCBiZSBpbiB0aGUgcmFuZ2UgMzcgdGhyb3VnaCAzMiw3NjcuCiAgICAgZHVyYXRpb246IGludAogICAgICAgICBIb3cgbG9uZyB0aGUgc291bmQgc2hvdWxkIHBsYXksIGluIG1pbGxpc2Vjb25kcy4KLSAgICAvCiAKIEEgd3JhcHBlciBhcm91bmQgdGhlIFdpbmRvd3MgQmVlcCBBUEkuCiBbY2xpbmljIHN0YXJ0IGdlbmVyYXRlZCBjb2RlXSovCiAKIHN0YXRpYyBQeU9iamVjdCAqCiB3aW5zb3VuZF9CZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IGZyZXF1ZW5jeSwgaW50IGR1cmF0aW9uKQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzMjM4MmU1MmVlOWIyZmIgaW5wdXQ9NjI4YTk5ZDJkZGY3Mzc5OF0qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWYzMjM4MmU1MmVlOWIyZmIgaW5wdXQ9NDBlMzYwY2ZhMDBhNWNmMF0qLwogewogICAgIEJPT0wgb2s7CiAKQEAgLTEzNiw4ICsxNjEsNyBAQAogLypbY2xpbmljIGlucHV0XQogd2luc291bmQuTWVzc2FnZUJlZXAKIAotICAgIHg6IGludChjX2RlZmF1bHQ9Ik1CX09LIikgPSBNQl9PSwotICAgIC8KKyAgICB0eXBlOiBpbnQoY19kZWZhdWx0PSJNQl9PSyIpID0gTUJfT0sKIAogQ2FsbCBXaW5kb3dzIE1lc3NhZ2VCZWVwKHgpLgogCkBAIC0xNDUsMTAgKzE2OSwyMCBAQAogW2NsaW5pYyBzdGFydCBnZW5lcmF0ZWQgY29kZV0qLwogCiBzdGF0aWMgUHlPYmplY3QgKgotd2luc291bmRfTWVzc2FnZUJlZXBfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBpbnQgeCkKLS8qW2NsaW5pYyBlbmQgZ2VuZXJhdGVkIGNvZGU6IG91dHB1dD0xYWQ4OWU0ZDhkMzBhOTU3IGlucHV0PWE3NzZjOGE4NWM5ODUzZjZdKi8KK3dpbnNvdW5kX01lc3NhZ2VCZWVwX2ltcGwoUHlPYmplY3QgKm1vZHVsZSwgaW50IHR5cGUpCisvKltjbGluaWMgZW5kIGdlbmVyYXRlZCBjb2RlOiBvdXRwdXQ9MTIwODc1NDU1MTIxMTIxZiBpbnB1dD1kYjE4NWY3NDFhZTIxNDAxXSovCiB7Ci0gICAgTWVzc2FnZUJlZXAoeCk7CisgICAgQk9PTCBvazsKKworICAgIFB5X0JFR0lOX0FMTE9XX1RIUkVBRFMKKyAgICBvayA9IE1lc3NhZ2VCZWVwKHR5cGUpOworICAgIFB5X0VORF9BTExPV19USFJFQURTCisKKyAgICBpZiAoIW9rKSB7CisgICAgICAgIFB5RXJyX1NldEV4Y0Zyb21XaW5kb3dzRXJyKFB5RXhjX1J1bnRpbWVFcnJvciwgMCk7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKwogICAgIFB5X1JFVFVSTl9OT05FOwogfQogCmRpZmYgLS1naXQgYS9QQ2J1aWxkL19sem1hLnZjeHByb2ogYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKaW5kZXggMWYwNjk2ZGEuLjdlYzI2OTIgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvX2x6bWEudmN4cHJvagorKysgYi9QQ2J1aWxkL19sem1hLnZjeHByb2oKQEAgLTYxLDEzICs2MSwxMSBAQAogICA8L1Byb3BlcnR5R3JvdXA+CiAgIDxJdGVtRGVmaW5pdGlvbkdyb3VwPgogICAgIDxDbENvbXBpbGU+Ci0gICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpaW5jbHVkZTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgorICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChsem1hRGlyKXNyYy9saWJsem1hL2FwaTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgogICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPldJTjMyO19GSUxFX09GRlNFVF9CSVRTPTY0O19DUlRfU0VDVVJFX05PX0RFUFJFQ0FURTtfQ1JUX05PTlNURENfTk9fREVQUkVDQVRFO0xaTUFfQVBJX1NUQVRJQzslKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTwvUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPExpbms+Ci0gICAgICA8QWRkaXRpb25hbERlcGVuZGVuY2llcyBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJ1dpbjMyJyI+JChsem1hRGlyKVxiaW5faTQ4NlxsaWJsem1hLmE7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJyA9PSAneDY0JyI+JChsem1hRGlyKVxiaW5feDg2LTY0XGxpYmx6bWEuYTslKEFkZGl0aW9uYWxEZXBlbmRlbmNpZXMpPC9BZGRpdGlvbmFsRGVwZW5kZW5jaWVzPgotICAgICAgPEltYWdlSGFzU2FmZUV4Y2VwdGlvbkhhbmRsZXJzPmZhbHNlPC9JbWFnZUhhc1NhZmVFeGNlcHRpb25IYW5kbGVycz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPiQoT3V0RGlyKS9saWJsem1hJChQeURlYnVnRXh0KS5saWI8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CiAgICAgPC9MaW5rPgogICA8L0l0ZW1EZWZpbml0aW9uR3JvdXA+CiAgIDxJdGVtR3JvdXA+CkBAIC04MSw4ICs3OSwxMiBAQAogICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CiAgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgogICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJsaWJsem1hLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+ezEyNzI4MjUwLTE2ZUMtNGRjNi05NGQ3LWUyMWRkODg5NDdmOH08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KICAgPC9JdGVtR3JvdXA+CiAgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CiAgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CiAgIDwvSW1wb3J0R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvaiBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2oKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM1MWNlZAotLS0gL2Rldi9udWxsCisrKyBiL1BDYnVpbGQvX3Rlc3Rjb25zb2xlLnZjeHByb2oKQEAgLTAsMCArMSw4MyBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iRGVidWd8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPkRlYnVnPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdJbnN0cnVtZW50fHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR0luc3RydW1lbnQ8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5QR1VwZGF0ZTwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUEdVcGRhdGV8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+e0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX08L1Byb2plY3RHdWlkPgorICAgIDxLZXl3b3JkPldpbjMyUHJvajwvS2V5d29yZD4KKyAgICA8Um9vdE5hbWVzcGFjZT5fdGVzdGNvbnNvbGU8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+ZmFsc2U8L1N1cHBvcnRQR08+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSJweXRob24ucHJvcHMiIC8+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLkRlZmF1bHQucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+RHluYW1pY0xpYnJhcnk8L0NvbmZpZ3VyYXRpb25UeXBlPgorICAgIDxDaGFyYWN0ZXJTZXQ+Tm90U2V0PC9DaGFyYWN0ZXJTZXQ+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxQcm9wZXJ0eUdyb3VwPgorICAgIDxUYXJnZXRFeHQ+LnB5ZDwvVGFyZ2V0RXh0PgorICA8L1Byb3BlcnR5R3JvdXA+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8SXRlbURlZmluaXRpb25Hcm91cD4KKyAgICA8Q2xDb21waWxlPgorICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPl9DT05TT0xFOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgICA8TGluaz4KKyAgICAgIDxTdWJTeXN0ZW0+Q29uc29sZTwvU3ViU3lzdGVtPgorICAgIDwvTGluaz4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUENcX3Rlc3Rjb25zb2xlLmMiIC8+CisgIDwvSXRlbUdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX250LnJjIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8UHJvamVjdFJlZmVyZW5jZSBJbmNsdWRlPSJweXRob25jb3JlLnZjeHByb2oiPgorICAgICAgPFByb2plY3Q+e2NmN2FjM2QxLWUyZGYtNDFkMi1iZWE2LTFlMjU1NmNkZWEyNn08L1Byb2plY3Q+CisgICAgICA8UmVmZXJlbmNlT3V0cHV0QXNzZW1ibHk+ZmFsc2U8L1JlZmVyZW5jZU91dHB1dEFzc2VtYmx5PgorICAgIDwvUHJvamVjdFJlZmVyZW5jZT4KKyAgPC9JdGVtR3JvdXA+CisgIDxJbXBvcnQgUHJvamVjdD0iJChWQ1RhcmdldHNQYXRoKVxNaWNyb3NvZnQuQ3BwLnRhcmdldHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uVGFyZ2V0cyI+CisgIDwvSW1wb3J0R3JvdXA+Cis8L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvai5maWx0ZXJzIGIvUENidWlsZC9fdGVzdGNvbnNvbGUudmN4cHJvai5maWx0ZXJzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjUxMDEKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL190ZXN0Y29uc29sZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTAsMCArMSwyMiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IFRvb2xzVmVyc2lvbj0iNC4wIiB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS9kZXZlbG9wZXIvbXNidWlsZC8yMDAzIj4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8RmlsdGVyIEluY2x1ZGU9IlNvdXJjZSBGaWxlcyI+CisgICAgICA8VW5pcXVlSWRlbnRpZmllcj57NEZDNzM3RjEtQzdBNS00Mzc2LUEwNjYtMkEzMkQ3NTJBMkZGfTwvVW5pcXVlSWRlbnRpZmllcj4KKyAgICAgIDxFeHRlbnNpb25zPmNwcDtjO2NjO2N4eDtkZWY7b2RsO2lkbDtocGo7YmF0O2FzbTthc214PC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iSGVhZGVyIEZpbGVzIj4KKyAgICAgIDxVbmlxdWVJZGVudGlmaWVyPns5Mzk5NTM4MC04OUJELTRiMDQtODhFQi02MjVGQkU1MkVCRkJ9PC9VbmlxdWVJZGVudGlmaWVyPgorICAgICAgPEV4dGVuc2lvbnM+aDtocHA7aHh4O2htO2lubDtpbmM7eHNkPC9FeHRlbnNpb25zPgorICAgIDwvRmlsdGVyPgorICAgIDxGaWx0ZXIgSW5jbHVkZT0iUmVzb3VyY2UgRmlsZXMiPgorICAgICAgPFVuaXF1ZUlkZW50aWZpZXI+ezY3REE2QUI2LUY4MDAtNGMwOC04QjdBLTgzQkIxMjFBQUQwMX08L1VuaXF1ZUlkZW50aWZpZXI+CisgICAgICA8RXh0ZW5zaW9ucz5yYztpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGU7cmVzeDt0aWZmO3RpZjtwbmc7d2F2O21mY3JpYmJvbi1tczwvRXh0ZW5zaW9ucz4KKyAgICA8L0ZpbHRlcj4KKyAgPC9JdGVtR3JvdXA+CisgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF90ZXN0bXVsdGlwaGFzZS5jIj4KKyAgICAgIDxGaWx0ZXI+U291cmNlIEZpbGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CisgIDwvSXRlbUdyb3VwPgorPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL1BDYnVpbGQvYnVpbGRfcGdvLmJhdCBiL1BDYnVpbGQvYnVpbGRfcGdvLmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODcyYzM4Mi4uMDAwMDAwMAotLS0gYS9QQ2J1aWxkL2J1aWxkX3Bnby5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLUBlY2hvIG9mZg0KLWVjaG8uRGVwcmVjYXRpb25XYXJuaW5nOg0KLWVjaG8uICAgIFRoaXMgc2NyaXB0IGlzIGRlcHJlY2F0ZWQsIHVzZSBgYnVpbGQuYmF0IC0tcGdvYCBpbnN0ZWFkLg0KLWVjaG8uDQotDQotY2FsbCAiJX5kcDBidWlsZC5iYXQiIC0tcGdvICUqDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdCBiL1BDYnVpbGQvZ2V0X2V4dGVybmFscy5iYXQKaW5kZXggMWMzY2RlZS4uYTUxODViZSAxMDA2NDQKLS0tIGEvUENidWlsZC9nZXRfZXh0ZXJuYWxzLmJhdAorKysgYi9QQ2J1aWxkL2dldF9leHRlcm5hbHMuYmF0CkBAIC01NSwxMSArNTUsMTEgQEAKIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiemlwMi0xLjAuNg0KIGlmIE5PVCAiJUluY2x1ZGVTU0wlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICBuYXNtLTIuMTEuMDYNCiBpZiBOT1QgIiVJbmNsdWRlU1NMJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgb3BlbnNzbC0xLjAuMmoNCi1zZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3FsaXRlLTMuOC4xMS4wDQotaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRjbC1jb3JlLTguNi40LjINCi1pZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGstOC42LjQuMg0KK3NldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcWxpdGUtMy4xNC4yLjANCitpZiBOT1QgIiVJbmNsdWRlVGtpbnRlciUiPT0iZmFsc2UiIHNldCBsaWJyYXJpZXM9JWxpYnJhcmllcyUgdGNsLWNvcmUtOC42LjYuMA0KK2lmIE5PVCAiJUluY2x1ZGVUa2ludGVyJSI9PSJmYWxzZSIgc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSB0ay04LjYuNi4wDQogaWYgTk9UICIlSW5jbHVkZVRraW50ZXIlIj09ImZhbHNlIiBzZXQgbGlicmFyaWVzPSVsaWJyYXJpZXMlIHRpeC04LjQuMy42DQotc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMC41DQorc2V0IGxpYnJhcmllcz0lbGlicmFyaWVzJSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHh6LTUuMi4yDQogDQogZm9yICUlZSBpbiAoJWxpYnJhcmllcyUpIGRvICgNCiAgICAgaWYgZXhpc3QgJSVlICgNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvaiBiL1BDYnVpbGQvbGlibHptYS52Y3hwcm9qCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMWY5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9QQ2J1aWxkL2xpYmx6bWEudmN4cHJvagpAQCAtMCwwICsxLDIxNiBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KKzxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgorICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5EZWJ1ZzwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT5XaW4zMjwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgICA8UHJvamVjdENvbmZpZ3VyYXRpb24gSW5jbHVkZT0iUmVsZWFzZXxXaW4zMiI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8V2luMzIiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdJbnN0cnVtZW50PC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR0luc3RydW1lbnR8eDY0Ij4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHSW5zdHJ1bWVudDwvQ29uZmlndXJhdGlvbj4KKyAgICAgIDxQbGF0Zm9ybT54NjQ8L1BsYXRmb3JtPgorICAgIDwvUHJvamVjdENvbmZpZ3VyYXRpb24+CisgICAgPFByb2plY3RDb25maWd1cmF0aW9uIEluY2x1ZGU9IlBHVXBkYXRlfFdpbjMyIj4KKyAgICAgIDxDb25maWd1cmF0aW9uPlBHVXBkYXRlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPldpbjMyPC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJQR1VwZGF0ZXx4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+UEdVcGRhdGU8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3x4NjQiPgorICAgICAgPENvbmZpZ3VyYXRpb24+RGVidWc8L0NvbmZpZ3VyYXRpb24+CisgICAgICA8UGxhdGZvcm0+eDY0PC9QbGF0Zm9ybT4KKyAgICA8L1Byb2plY3RDb25maWd1cmF0aW9uPgorICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJSZWxlYXNlfHg2NCI+CisgICAgICA8Q29uZmlndXJhdGlvbj5SZWxlYXNlPC9Db25maWd1cmF0aW9uPgorICAgICAgPFBsYXRmb3JtPng2NDwvUGxhdGZvcm0+CisgICAgPC9Qcm9qZWN0Q29uZmlndXJhdGlvbj4KKyAgPC9JdGVtR3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJHbG9iYWxzIj4KKyAgICA8UHJvamVjdEd1aWQ+ezEyNzI4MjUwLTE2RUMtNERDNi05NEQ3LUUyMUREODg5NDdGOH08L1Byb2plY3RHdWlkPgorICAgIDxSb290TmFtZXNwYWNlPmxpYmx6bWE8L1Jvb3ROYW1lc3BhY2U+CisgICAgPFN1cHBvcnRQR08+dHJ1ZTwvU3VwcG9ydFBHTz4KKyAgPC9Qcm9wZXJ0eUdyb3VwPgorCisgIDxJbXBvcnQgUHJvamVjdD0icHl0aG9uLnByb3BzIiAvPgorICA8SW1wb3J0IFByb2plY3Q9IiQoVkNUYXJnZXRzUGF0aClcTWljcm9zb2Z0LkNwcC5EZWZhdWx0LnByb3BzIiAvPgorCisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJDb25maWd1cmF0aW9uIj4KKyAgICA8Q29uZmlndXJhdGlvblR5cGU+U3RhdGljTGlicmFyeTwvQ29uZmlndXJhdGlvblR5cGU+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAucHJvcHMiIC8+CisgIDxJbXBvcnRHcm91cCBMYWJlbD0iRXh0ZW5zaW9uU2V0dGluZ3MiPgorICA8L0ltcG9ydEdyb3VwPgorICA8SW1wb3J0R3JvdXAgTGFiZWw9IlByb3BlcnR5U2hlZXRzIj4KKyAgICA8SW1wb3J0IFByb2plY3Q9IiQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcyIgQ29uZGl0aW9uPSJleGlzdHMoJyQoVXNlclJvb3REaXIpXE1pY3Jvc29mdC5DcHAuJChQbGF0Zm9ybSkudXNlci5wcm9wcycpIiBMYWJlbD0iTG9jYWxBcHBEYXRhUGxhdGZvcm0iIC8+CisgICAgPEltcG9ydCBQcm9qZWN0PSJweXByb2plY3QucHJvcHMiIC8+CisgIDwvSW1wb3J0R3JvdXA+CisgIDxQcm9wZXJ0eUdyb3VwIExhYmVsPSJVc2VyTWFjcm9zIiAvPgorICA8UHJvcGVydHlHcm91cD4KKyAgICA8X1Byb2plY3RGaWxlVmVyc2lvbj4xMC4wLjMwMzE5LjE8L19Qcm9qZWN0RmlsZVZlcnNpb24+CisgIDwvUHJvcGVydHlHcm91cD4KKyAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CisgICAgPENsQ29tcGlsZT4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5XSU4zMjtIQVZFX0NPTkZJR19IO19ERUJVRztfTElCOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwzPC9XYXJuaW5nTGV2ZWw+CisgICAgICA8RGVidWdJbmZvcm1hdGlvbkZvcm1hdD5Qcm9ncmFtRGF0YWJhc2U8L0RlYnVnSW5mb3JtYXRpb25Gb3JtYXQ+CisgICAgICA8T3B0aW1pemF0aW9uPkRpc2FibGVkPC9PcHRpbWl6YXRpb24+CisgICAgICA8QWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4kKGx6bWFEaXIpd2luZG93czskKGx6bWFEaXIpc3JjL2xpYmx6bWEvY29tbW9uOyQobHptYURpcilzcmMvY29tbW9uOyQobHptYURpcilzcmMvbGlibHptYS9hcGk7JChsem1hRGlyKXNyYy9saWJsem1hL2NoZWNrOyQobHptYURpcilzcmMvbGlibHptYS9kZWx0YTskKGx6bWFEaXIpc3JjL2xpYmx6bWEvbHo7JChsem1hRGlyKXNyYy9saWJsem1hL2x6bWE7JChsem1hRGlyKXNyYy9saWJsem1hL3JhbmdlY29kZXI7JChsem1hRGlyKXNyYy9saWJsem1hL3NpbXBsZTwvQWRkaXRpb25hbEluY2x1ZGVEaXJlY3Rvcmllcz4KKyAgICA8L0NsQ29tcGlsZT4KKyAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgorICA8SXRlbUdyb3VwPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xjb21tb25cdHVrbGliX2NwdWNvcmVzLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzMyX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfZmFzdC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcc2hhMjU2LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYWxvbmVfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxhdXRvX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX2hlYWRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGJsb2NrX3V0aWwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfYnVmZmVyX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9kZWNvZGVyX21lbXVzYWdlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGVhc3lfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X2VuY29kZXJfbWVtdXNhZ2UuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZWFzeV9wcmVzZXQuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cZmlsdGVyX2J1ZmZlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9idWZmZXJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9mbGFnc19lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGhhcmR3YXJlX2NwdXRocmVhZHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caGFyZHdhcmVfcGh5c21lbS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxpbmRleF9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25caW5kZXhfaGFzaC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxvdXRxdWV1ZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxzdHJlYW1fYnVmZmVyX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2J1ZmZlcl9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9lbmNvZGVyX210LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cc3RyZWFtX2ZsYWdzX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2RlY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cdmxpX3NpemUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcZmFzdHBvc190YWJsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZGVjb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYTJfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2VuY29kZXIuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX2Zhc3QuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlcl9vcHRpbXVtX25vcm1hbC5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByZXNldHMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfbWYuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHByaWNlX3RhYmxlLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXGFybS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxhcm10aHVtYi5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxpYTY0LmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHBvd2VycGMuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2NvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9kZWNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNpbXBsZV9lbmNvZGVyLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHNwYXJjLmMiIC8+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcc2ltcGxlXHg4Ni5jIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXG15dGhyZWFkLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblxzeXNkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY29uZmlnLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfY3B1Y29yZXMuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcY29tbW9uXHR1a2xpYl9pbnRlZ2VyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGNvbW1vblx0dWtsaWJfcGh5c21lbS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcYmFzZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJjai5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGJsb2NrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcY2hlY2suaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxjb250YWluZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxkZWx0YS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGZpbHRlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXGhhcmR3YXJlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcaW5kZXguaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxhcGlcbHptYVxpbmRleF9oYXNoLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcbHptYTEyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcc3RyZWFtX2ZsYWdzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcYXBpXGx6bWFcdmVyc2lvbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGFwaVxsem1hXHZsaS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNoZWNrLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjMzJfdGFibGVfYmUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmMzMl90YWJsZV9sZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNoZWNrXGNyYzY0X3RhYmxlX2JlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY2hlY2tcY3JjNjRfdGFibGVfbGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjaGVja1xjcmNfbWFjcm9zLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGFsb25lX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfYnVmZmVyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cYmxvY2tfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxibG9ja19lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGNvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxlYXN5X3ByZXNldC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGNvbW1vblxmaWx0ZXJfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGZpbHRlcl9lbmNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4LmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXGluZGV4X2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxjb21tb25cbWVtY21wbGVuLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXG91dHF1ZXVlLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcY29tbW9uXHN0cmVhbV9mbGFnc19jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9jb21tb24uaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxkZWx0YVxkZWx0YV9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcZGVsdGFcZGVsdGFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGRlbHRhXGRlbHRhX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGZhc3Rwb3MuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWEyX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfY29tbW9uLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHptYVxsem1hX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxsem1hXGx6bWFfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6bWFcbHptYV9lbmNvZGVyX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxselxsel9kZWNvZGVyLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIkKGx6bWFEaXIpc3JjXGxpYmx6bWFcbHpcbHpfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXGx6XGx6X2VuY29kZXJfaGFzaF90YWJsZS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccHJpY2UuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxyYW5nZWNvZGVyXHJhbmdlX2NvbW1vbi5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZGVjb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHJhbmdlY29kZXJccmFuZ2VfZW5jb2Rlci5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iJChsem1hRGlyKXNyY1xsaWJsem1hXHNpbXBsZVxzaW1wbGVfY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2RlY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX2VuY29kZXIuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcilzcmNcbGlibHptYVxzaW1wbGVcc2ltcGxlX3ByaXZhdGUuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9IiQobHptYURpcil3aW5kb3dzXGNvbmZpZy5oIiAvPgorICA8L0l0ZW1Hcm91cD4KKyAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KKyAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KKyAgPC9JbXBvcnRHcm91cD4KKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvb3BlbnNzbC5wcm9wcyBiL1BDYnVpbGQvb3BlbnNzbC5wcm9wcwppbmRleCBlMzVjMGQ5Li4wZGU0ZTQzIDEwMDY0NAotLS0gYS9QQ2J1aWxkL29wZW5zc2wucHJvcHMKKysrIGIvUENidWlsZC9vcGVuc3NsLnByb3BzCkBAIC0xOSw2ICsxOSw3IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfVEhSRUFEUyIgLz4KICAgICA8IS0tIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX1NZU05BTUVfV0lOMzIiIC8+IC0tPgogICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucyBJbmNsdWRlPSJPUEVOU1NMX0lBMzJfU1NFMiIgLz4KKyAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iT1BFTlNTTF9CTl9BU01fR0YybSIgLz4KICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMgSW5jbHVkZT0iU0hBMV9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTI1Nl9BU00iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlNIQTUxMl9BU00iIC8+CkBAIC0zOCw3ICszOSw2IEBACiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfTk9fRFlOQU1JQ19FTkdJTkUiIC8+CiAgIDwvSXRlbUdyb3VwPgogICA8SXRlbUdyb3VwIENvbmRpdGlvbj0iJyQoUGxhdGZvcm0pJz09J1dpbjMyJyI+Ci0gICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX0dGMm0iIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX1BBUlRfV09SRFMiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9Ik9QRU5TU0xfQk5fQVNNX01PTlQiIC8+CiAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zIEluY2x1ZGU9IlJNRDE2MF9BU00iIC8+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQucHJvaiBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCmluZGV4IGMzMjA0MzQuLmUyNmJjNzAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcGNidWlsZC5wcm9qCisrKyBiL1BDYnVpbGQvcGNidWlsZC5wcm9qCkBAIC02MSw3ICs2MSw3IEBACiAgICAgPEV4dGVuc2lvbk1vZHVsZXMgSW5jbHVkZT0iQChFeHRlcm5hbE1vZHVsZXMtPiclKElkZW50aXR5KScpIiBDb25kaXRpb249IiQoSW5jbHVkZUV4dGVybmFscykiIC8+CiAgICAgPFByb2plY3RzIEluY2x1ZGU9IkAoRXh0ZW5zaW9uTW9kdWxlcy0+JyUoSWRlbnRpdHkpLnZjeHByb2onKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVFeHRlbnNpb25zKSIgLz4KICAgICA8IS0tIFRlc3QgbW9kdWxlcyAtLT4KLSAgICA8VGVzdE1vZHVsZXMgSW5jbHVkZT0iX2N0eXBlc190ZXN0O190ZXN0YnVmZmVyO190ZXN0Y2FwaTtfdGVzdGVtYmVkO190ZXN0aW1wb3J0bXVsdGlwbGU7X3Rlc3RtdWx0aXBoYXNlIiAvPgorICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJfY3R5cGVzX3Rlc3Q7X3Rlc3RidWZmZXI7X3Rlc3RjYXBpO190ZXN0ZW1iZWQ7X3Rlc3RpbXBvcnRtdWx0aXBsZTtfdGVzdG11bHRpcGhhc2U7X3Rlc3Rjb25zb2xlIiAvPgogICAgIDxUZXN0TW9kdWxlcyBJbmNsdWRlPSJ4eGxpbWl0ZWQiIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbiknID09ICdSZWxlYXNlJyIgLz4KICAgICA8UHJvamVjdHMgSW5jbHVkZT0iQChUZXN0TW9kdWxlcy0+JyUoSWRlbnRpdHkpLnZjeHByb2onKSIgQ29uZGl0aW9uPSIkKEluY2x1ZGVUZXN0cykiPgogICAgICAgPCEtLSBEaXNhYmxlIHBhcmFsbGVsIGJ1aWxkIGZvciB0ZXN0IG1vZHVsZXMgLS0+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3BjYnVpbGQuc2xuIGIvUENidWlsZC9wY2J1aWxkLnNsbgppbmRleCA0MmE0ZDJiLi43YWRkNTFlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3BjYnVpbGQuc2xuCisrKyBiL1BDYnVpbGQvcGNidWlsZC5zbG4KQEAgLTkyLDYgKzkyLDggQEAKIEVuZFByb2plY3QNCiBQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gInB5c2hlbGxleHQiLCAicHlzaGVsbGV4dC52Y3hwcm9qIiwgInswRjZFRTRBNC1DNzVGLTQ1NzgtQjRCMy0yRDY0RjRCOUI3ODJ9Ig0KIEVuZFByb2plY3QNCitQcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gIl90ZXN0Y29uc29sZSIsICJfdGVzdGNvbnNvbGUudmN4cHJvaiIsICJ7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfSINCitFbmRQcm9qZWN0DQogR2xvYmFsDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Db25maWd1cmF0aW9uUGxhdGZvcm1zKSA9IHByZVNvbHV0aW9uDQogCQlEZWJ1Z3xXaW4zMiA9IERlYnVnfFdpbjMyDQpAQCAtNzA4LDYgKzcxMCwyMiBAQAogCQl7MEY2RUU0QTQtQzc1Ri00NTc4LUI0QjMtMkQ2NEY0QjlCNzgyfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQogCQl7MEY2RUU0QTQtQzc1Ri00NTc4LUI0QjMtMkQ2NEY0QjlCNzgyfS5SZWxlYXNlfHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KIAkJezBGNkVFNEE0LUM3NUYtNDU3OC1CNEIzLTJENjRGNEI5Qjc4Mn0uUmVsZWFzZXx4NjQuQnVpbGQuMCA9IFJlbGVhc2V8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5EZWJ1Z3xXaW4zMi5BY3RpdmVDZmcgPSBEZWJ1Z3xXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uRGVidWd8V2luMzIuQnVpbGQuMCA9IERlYnVnfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5EZWJ1Z3x4NjQuQWN0aXZlQ2ZnID0gRGVidWd8eDY0DQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5EZWJ1Z3x4NjQuQnVpbGQuMCA9IERlYnVnfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdJbnN0cnVtZW50fFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHSW5zdHJ1bWVudHxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdJbnN0cnVtZW50fHg2NC5BY3RpdmVDZmcgPSBSZWxlYXNlfHg2NA0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUEdJbnN0cnVtZW50fHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHVXBkYXRlfFdpbjMyLkFjdGl2ZUNmZyA9IFJlbGVhc2V8V2luMzINCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHVXBkYXRlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQorCQl7QjI0NEU3ODctQzQ0NS00NDFDLUJERjQtNUE0RjFBM0ExRTUxfS5QR1VwZGF0ZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlBHVXBkYXRlfHg2NC5CdWlsZC4wID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KKwkJe0IyNDRFNzg3LUM0NDUtNDQxQy1CREY0LTVBNEYxQTNBMUU1MX0uUmVsZWFzZXx4NjQuQWN0aXZlQ2ZnID0gUmVsZWFzZXx4NjQNCisJCXtCMjQ0RTc4Ny1DNDQ1LTQ0MUMtQkRGNC01QTRGMUEzQTFFNTF9LlJlbGVhc2V8eDY0LkJ1aWxkLjAgPSBSZWxlYXNlfHg2NA0KIAlFbmRHbG9iYWxTZWN0aW9uDQogCUdsb2JhbFNlY3Rpb24oU29sdXRpb25Qcm9wZXJ0aWVzKSA9IHByZVNvbHV0aW9uDQogCQlIaWRlU29sdXRpb25Ob2RlID0gRkFMU0UNCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3ByZXBhcmVfc3NsLmJhdCBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CmluZGV4IDFiZTczZTYuLjJmNDFhZTggMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CisrKyBiL1BDYnVpbGQvcHJlcGFyZV9zc2wuYmF0CkBAIC0zLDEwICszLDEwIEBACiAgIGlmICIlMSIgRVFVICJEZWJ1ZyIgKA0KICAgICBzaGlmdA0KICAgICBzZXQgSE9TVF9QWVRIT049cHl0aG9uX2QuZXhlDQotICAgIGlmIG5vdCBleGlzdCBweXRob24zNV9kLmRsbCBleGl0IDENCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM2X2QuZGxsIGV4aXQgMQ0KICAgKSBFTFNFICgNCiAgICAgc2V0IEhPU1RfUFlUSE9OPXB5dGhvbi5leGUNCi0gICAgaWYgbm90IGV4aXN0IHB5dGhvbjM1LmRsbCBleGl0IDENCisgICAgaWYgbm90IGV4aXN0IHB5dGhvbjM2LmRsbCBleGl0IDENCiAgICkNCiApDQogJUhPU1RfUFlUSE9OJSAiJX5kcDBwcmVwYXJlX3NzbC5weSIgJTENCmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5cHJvamVjdC5wcm9wcyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCmluZGV4IGQxYWM5OTguLjcwMTIxNzAgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCisrKyBiL1BDYnVpbGQvcHlwcm9qZWN0LnByb3BzCkBAIC03LDcgKzcsNiBAQAogICAgIDxPdXREaXIgQ29uZGl0aW9uPSIhSGFzVHJhaWxpbmdTbGFzaCgkKE91dERpcikpIj4kKE91dERpcilcPC9PdXREaXI+CiAgICAgPFB5X0ludERpciBDb25kaXRpb249IickKFB5X0ludERpciknID09ICcnIj4kKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSlvYmpcPC9QeV9JbnREaXI+CiAgICAgPEludERpcj4kKFB5X0ludERpcilcJChBcmNoTmFtZSlfJChDb25maWd1cmF0aW9uKVwkKFByb2plY3ROYW1lKVw8L0ludERpcj4KLSAgICA8SW50RGlyIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoUHlfSW50RGlyKVwkKEFyY2hOYW1lKV9QR09cJChQcm9qZWN0TmFtZSlcPC9JbnREaXI+CiAgICAgPFRhcmdldE5hbWUgQ29uZGl0aW9uPSInJChUYXJnZXROYW1lKScgPT0gJyciPiQoUHJvamVjdE5hbWUpPC9UYXJnZXROYW1lPgogICAgIDxUYXJnZXROYW1lPiQoVGFyZ2V0TmFtZSkkKFB5RGVidWdFeHQpPC9UYXJnZXROYW1lPgogICAgIDxHZW5lcmF0ZU1hbmlmZXN0PmZhbHNlPC9HZW5lcmF0ZU1hbmlmZXN0PgpAQCAtMTQ4LDExICsxNDcsMTMgQEAKICAgICAgICAgICAgICBUYXJnZXRzPSJDbGVhbkFsbCIgLz4KICAgPC9UYXJnZXQ+CiAKLSAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPgotICAgIDxTaWduVG9vbFBhdGggQ29uZGl0aW9uPSInJChTaWduVG9vbFBhdGgpJyA9PSAnJyBvciAhRXhpc3RzKCQoU2lnblRvb2xQYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290ODEpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+Ci0gICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QpXGJpblx4ODZcc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+Ci0gICAgPFNpZ25Ub29sUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTaWduVG9vbFBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU09GVFdBUkVcTWljcm9zb2Z0XE1pY3Jvc29mdCBTREtzXFdpbmRvd3NcdjcuMUFASW5zdGFsbGF0aW9uRm9sZGVyKVxCaW5cc2lnbnRvb2wuZXhlPC9TaWduVG9vbFBhdGg+Ci0gICAgPF9TaWduQ29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNpZ25Ub29sUGF0aCkpIj4iJChTaWduVG9vbFBhdGgpIiBzaWduIC9xIC9uICIkKFNpZ25pbmdDZXJ0aWZpY2F0ZSkiIC9mZCBzaGEyNTYgL3QgaHR0cDovL3RpbWVzdGFtcC52ZXJpc2lnbi5jb20vc2NyaXB0cy90aW1lc3RhbXAuZGxsIC9kICJQeXRob24gJChQeXRob25WZXJzaW9uKSI8L19TaWduQ29tbWFuZD4KKyAgPFByb3BlcnR5R3JvdXA+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSInJChTZGtCaW5QYXRoKScgPT0gJycgb3IgIUV4aXN0cygkKFNka0JpblBhdGgpKSI+JChyZWdpc3RyeTpIS0VZX0xPQ0FMX01BQ0hJTkVcU29mdHdhcmVcTWljcm9zb2Z0XFdpbmRvd3MgS2l0c1xJbnN0YWxsZWQgUm9vdHNAS2l0c1Jvb3QxMClcYmluXHg4NjwvU2RrQmluUGF0aD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNvZnR3YXJlXE1pY3Jvc29mdFxXaW5kb3dzIEtpdHNcSW5zdGFsbGVkIFJvb3RzQEtpdHNSb290ODEpXGJpblx4ODY8L1Nka0JpblBhdGg+CisgICAgPFNka0JpblBhdGggQ29uZGl0aW9uPSIhRXhpc3RzKCQoU2RrQmluUGF0aCkpIj4kKHJlZ2lzdHJ5OkhLRVlfTE9DQUxfTUFDSElORVxTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93cyBLaXRzXEluc3RhbGxlZCBSb290c0BLaXRzUm9vdClcYmluXHg4NjwvU2RrQmluUGF0aD4KKyAgICA8U2RrQmluUGF0aCBDb25kaXRpb249IiFFeGlzdHMoJChTZGtCaW5QYXRoKSkiPiQocmVnaXN0cnk6SEtFWV9MT0NBTF9NQUNISU5FXFNPRlRXQVJFXE1pY3Jvc29mdFxNaWNyb3NvZnQgU0RLc1xXaW5kb3dzXHY3LjFBQEluc3RhbGxhdGlvbkZvbGRlcilcQmluXDwvU2RrQmluUGF0aD4KKyAgICA8X1NpZ25Db21tYW5kIENvbmRpdGlvbj0iRXhpc3RzKCQoU2RrQmluUGF0aCkpIGFuZCAnJChTaWduaW5nQ2VydGlmaWNhdGUpJyAhPSAnJyBhbmQgJChTdXBwb3J0U2lnbmluZykiPiIkKFNka0JpblBhdGgpXHNpZ250b29sLmV4ZSIgc2lnbiAvcSAvbiAiJChTaWduaW5nQ2VydGlmaWNhdGUpIiAvZmQgc2hhMjU2IC90IGh0dHA6Ly90aW1lc3RhbXAudmVyaXNpZ24uY29tL3NjcmlwdHMvdGltZXN0YW1wLmRsbCAvZCAiUHl0aG9uICQoUHl0aG9uVmVyc2lvbikiPC9fU2lnbkNvbW1hbmQ+CisgICAgPF9NYWtlQ2F0Q29tbWFuZCBDb25kaXRpb249IkV4aXN0cygkKFNka0JpblBhdGgpKSI+IiQoU2RrQmluUGF0aClcbWFrZWNhdC5leGUiPC9fTWFrZUNhdENvbW1hbmQ+CiAgIDwvUHJvcGVydHlHcm91cD4KICAgCiAgIDxUYXJnZXQgTmFtZT0iX1NpZ25CdWlsZCIgQWZ0ZXJUYXJnZXRzPSJBZnRlckJ1aWxkIiBDb25kaXRpb249IickKFNpZ25pbmdDZXJ0aWZpY2F0ZSknICE9ICcnIGFuZCAkKFN1cHBvcnRTaWduaW5nKSI+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3B5dGhvbi5wcm9wcyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCmluZGV4IDE1NTM3MzEuLmRkZTk0ZjcgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uLnByb3BzCisrKyBiL1BDYnVpbGQvcHl0aG9uLnByb3BzCkBAIC0yNSw3ICsyNSw2IEBACiAgICAgLS0+CiAgICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnJyBhbmQgJChQbGF0Zm9ybSkgPT0gJ3g2NCciPmFtZDY0PC9BcmNoTmFtZT4KICAgICA8QXJjaE5hbWUgQ29uZGl0aW9uPSInJChBcmNoTmFtZSknID09ICcnIj53aW4zMjwvQXJjaE5hbWU+Ci0gICAgPEFyY2hOYW1lIENvbmRpdGlvbj0iJChDb25maWd1cmF0aW9uKSA9PSAnUEdJbnN0cnVtZW50JyBvciAkKENvbmZpZ3VyYXRpb24pID09ICdQR1VwZGF0ZSciPiQoQXJjaE5hbWUpLXBnbzwvQXJjaE5hbWU+CiAgICAgCiAgICAgPCEtLSBSb290IGRpcmVjdG9yeSBvZiB0aGUgcmVwb3NpdG9yeSAtLT4KICAgICA8UHlTb3VyY2VQYXRoIENvbmRpdGlvbj0iJyQoUHlTb3VyY2VQYXRoKScgPT0gJyciPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpXC4uXCkpPC9QeVNvdXJjZVBhdGg+CkBAIC00Myw5ICs0Miw5IEBACiAgICAgCiAgICAgPCEtLSBEaXJlY3RvcmllcyBvZiBleHRlcm5hbCBwcm9qZWN0cy4gdGNsdGsgaXMgaGFuZGxlZCBpbiB0Y2x0ay5wcm9wcyAtLT4KICAgICA8RXh0ZXJuYWxzRGlyPiQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RnVsbFBhdGgoYCQoUHlTb3VyY2VQYXRoKWV4dGVybmFsc1xgKSk8L0V4dGVybmFsc0Rpcj4KLSAgICA8c3FsaXRlM0Rpcj4kKEV4dGVybmFsc0RpcilzcWxpdGUtMy44LjExLjBcPC9zcWxpdGUzRGlyPgorICAgIDxzcWxpdGUzRGlyPiQoRXh0ZXJuYWxzRGlyKXNxbGl0ZS0zLjE0LjIuMFw8L3NxbGl0ZTNEaXI+CiAgICAgPGJ6MkRpcj4kKEV4dGVybmFsc0RpciliemlwMi0xLjAuNlw8L2J6MkRpcj4KLSAgICA8bHptYURpcj4kKEV4dGVybmFsc0Rpcil4ei01LjAuNVw8L2x6bWFEaXI+CisgICAgPGx6bWFEaXI+JChFeHRlcm5hbHNEaXIpeHotNS4yLjJcPC9sem1hRGlyPgogICAgIDxvcGVuc3NsRGlyPiQoRXh0ZXJuYWxzRGlyKW9wZW5zc2wtMS4wLjJqXDwvb3BlbnNzbERpcj4KICAgICA8b3BlbnNzbEluY2x1ZGVEaXI+JChvcGVuc3NsRGlyKWluY2x1ZGUzMjwvb3BlbnNzbEluY2x1ZGVEaXI+CiAgICAgPG9wZW5zc2xJbmNsdWRlRGlyIENvbmRpdGlvbj0iJyQoQXJjaE5hbWUpJyA9PSAnYW1kNjQnIj4kKG9wZW5zc2xEaXIpaW5jbHVkZTY0PC9vcGVuc3NsSW5jbHVkZURpcj4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKaW5kZXggZTVlOTZhZC4uYWE2YmE3NCAxMDA2NDQKLS0tIGEvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2oKQEAgLTEsNCArMSw0IEBACi3vu788P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0idXRmLTgiPz4KIDxQcm9qZWN0IERlZmF1bHRUYXJnZXRzPSJCdWlsZCIgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwIExhYmVsPSJQcm9qZWN0Q29uZmlndXJhdGlvbnMiPgogICAgIDxQcm9qZWN0Q29uZmlndXJhdGlvbiBJbmNsdWRlPSJEZWJ1Z3xXaW4zMiI+CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICA8UHJlcHJvY2Vzc29yRGVmaW5pdGlvbnM+X1VTUkRMTDtQeV9CVUlMRF9DT1JFO1B5X0VOQUJMRV9TSEFSRUQ7TVNfRExMX0lEPSIkKFN5c1dpblZlcikiOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KLSAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliO3dzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KKyAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPnZlcnNpb24ubGliO3NobHdhcGkubGliO3dzMl8zMi5saWI7JShBZGRpdGlvbmFsRGVwZW5kZW5jaWVzKTwvQWRkaXRpb25hbERlcGVuZGVuY2llcz4KICAgICAgIDxCYXNlQWRkcmVzcz4weDFlMDAwMDAwPC9CYXNlQWRkcmVzcz4KICAgICA8L0xpbms+CiAgIDwvSXRlbURlZmluaXRpb25Hcm91cD4KQEAgLTEyNCw2ICsxMjQsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvZGljdG9iamVjdC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cSW5jbHVkZVxvcGNvZGUuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiIC8+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zbW9kdWxlLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhdGNobGV2ZWwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVccGdlbi5oIiAvPgpAQCAtMjA5LDkgKzIxMCwxNCBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblxpbXBvcnRkbC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHRocmVhZF9udC5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHdvcmRjb2RlX2hlbHBlcnMuaCIgLz4KICAgPC9JdGVtR3JvdXA+CiAgIDxJdGVtR3JvdXA+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9hc3luY2lvbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9iaXNlY3Rtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJtb2R1bGUuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJiX2ltcGwuYyIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2JsYWtlMlxibGFrZTJzX2ltcGwuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2NvZGVjc21vZHVsZS5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29sbGVjdGlvbnNtb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Nzdi5jIiAvPgpAQCAtMjIzLDYgKzIyOSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9tYXRoLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9waWNrbGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc2hhM1xzaGEzbW9kdWxlLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0YXQuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3N0cnVjdC5jIiAvPgpAQCAtMjY0LDYgKzI3MSw3IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xidWZmZXJlZGlvLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xpb2Jhc2UuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2lvXHRleHRpby5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cd2luY29uc29sZWlvLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9pb1xfaW9tb2R1bGUuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcemxpYlxhZGxlcjMyLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXHpsaWJcY29tcHJlc3MuYyIgLz4KQEAgLTM0OSw2ICszNTcsNyBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNldmFsLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29kZWNzLmMiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29tcGlsZS5jIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR0cmFjZV9zdHVicy5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGR5bmFtaWNfYW5ub3RhdGlvbnMuYyIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5sb2FkX3dpbi5jIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cUHl0aG9uXGVycm9ycy5jIiAvPgpAQCAtNDE2LDQgKzQyNSw0IEBACiAgIDxUYXJnZXQgTmFtZT0iX1dhcm5BYm91dFRvb2xzZXQiIEJlZm9yZVRhcmdldHM9IlByZXBhcmVGb3JCdWlsZCIgQ29uZGl0aW9uPSIkKFBsYXRmb3JtVG9vbHNldCkgIT0gJ3YxNDAnIj4KICAgICA8V2FybmluZyBUZXh0PSJUb29sc2V0ICQoUGxhdGZvcm1Ub29sc2V0KSBpcyBub3QgdXNlZCBmb3Igb2ZmaWNpYWwgYnVpbGRzLiBZb3VyIGJ1aWxkIG1heSBoYXZlIGVycm9ycyBvciBpbmNvbXBhdGliaWxpdGllcy4iIC8+CiAgIDwvVGFyZ2V0PgotPC9Qcm9qZWN0PgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKKzwvUHJvamVjdD4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMgYi9QQ2J1aWxkL3B5dGhvbmNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDgzN2I3MzYuLmE0NWI5ZDkgMTAwNjQ0Ci0tLSBhL1BDYnVpbGQvcHl0aG9uY29yZS52Y3hwcm9qLmZpbHRlcnMKKysrIGIvUENidWlsZC9weXRob25jb3JlLnZjeHByb2ouZmlsdGVycwpAQCAtMSw0ICsxLDQgQEAKLe+7vzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9InV0Zi04Ij8+Cis8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgogPFByb2plY3QgVG9vbHNWZXJzaW9uPSI0LjAiIHhtbG5zPSJodHRwOi8vc2NoZW1hcy5taWNyb3NvZnQuY29tL2RldmVsb3Blci9tc2J1aWxkLzIwMDMiPgogICA8SXRlbUdyb3VwPgogICAgIDxGaWx0ZXIgSW5jbHVkZT0iSW5jbHVkZSI+CkBAIC0xNzcsNiArMTc3LDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXEluY2x1ZGVcb3NkZWZzLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXG9zbW9kdWxlLmgiPgorICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxJbmNsdWRlXHBhcnNldG9rLmgiPgogICAgICAgPEZpbHRlcj5JbmNsdWRlPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CkBAIC00MjAsNiArNDIzLDkgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXFB5dGhvblx0aHJlYWRfbnQuaCI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXHdvcmRjb2RlX2hlbHBlcnMuaCI+CisgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5cUHl0aG9uXGNvbmR2YXIuaCI+CiAgICAgICA8RmlsdGVyPlB5dGhvbjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtNDQwLDkgKzQ0NiwyMSBAQAogICAgIDwvQ2xJbmNsdWRlPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2FzeW5jaW9tb2R1bGUuYyI+CisgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX2Jpc2VjdG1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMm1vZHVsZS5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMmJfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfYmxha2UyXGJsYWtlMnNfaW1wbC5jIj4KKyAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfY29kZWNzbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC00NzYsNiArNDk0LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXE1vZHVsZXNcX3JhbmRvbW1vZHVsZS5jIj4KICAgICAgIDxGaWx0ZXI+TW9kdWxlczwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfc2hhM1xzaGEzbW9kdWxlLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzPC9GaWx0ZXI+CisgICAgPC9DbENvbXBpbGU+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxNb2R1bGVzXF9zcmUuYyI+CiAgICAgICA8RmlsdGVyPk1vZHVsZXM8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTU4Nyw2ICs2MDgsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cdGV4dGlvLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cd2luY29uc29sZWlvLmMiPgorICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5cTW9kdWxlc1xfaW9cX2lvbW9kdWxlLmMiPgogICAgICAgPEZpbHRlcj5Nb2R1bGVzXF9pbzwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtODI3LDYgKzg1MSw5IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cY29tcGlsZS5jIj4KICAgICAgIDxGaWx0ZXI+UHl0aG9uPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxQeXRob25cZHRyYWNlX3N0dWJzLmMiPgorICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFB5dGhvblxkeW5hbWljX2Fubm90YXRpb25zLmMiPgogICAgICAgPEZpbHRlcj5QeXRob248L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KQEAgLTk4MCw0ICsxMDA3LDQgQEAKICAgICAgIDxGaWx0ZXI+UmVzb3VyY2UgRmlsZXM8L0ZpbHRlcj4KICAgICA8L1Jlc291cmNlQ29tcGlsZT4KICAgPC9JdGVtR3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC9weXRob253LnZjeHByb2ogYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagppbmRleCBjYWVkMWU4Li5lNDBmNjZjIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagorKysgYi9QQ2J1aWxkL3B5dGhvbncudmN4cHJvagpAQCAtNjIsNyArNjIsNyBAQAogICAgIDwvTGluaz4KICAgPC9JdGVtRGVmaW5pdGlvbkdyb3VwPgogICA8SXRlbUdyb3VwPgotICAgIDxSZXNvdXJjZUNvbXBpbGUgSW5jbHVkZT0iLi5cUENccHl0aG9uX2V4ZS5yYyIgLz4KKyAgICA8UmVzb3VyY2VDb21waWxlIEluY2x1ZGU9Ii4uXFBDXHB5dGhvbndfZXhlLnJjIiAvPgogICA8L0l0ZW1Hcm91cD4KICAgPEl0ZW1Hcm91cD4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXFBDXFdpbk1haW4uYyIgLz4KZGlmZiAtLWdpdCBhL1BDYnVpbGQvcmVhZG1lLnR4dCBiL1BDYnVpbGQvcmVhZG1lLnR4dAppbmRleCAyNDYyMDEyLi5jMDRiYTRlIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3JlYWRtZS50eHQKKysrIGIvUENidWlsZC9yZWFkbWUudHh0CkBAIC00OCw3ICs0OCw3IEBACiAgICAgVXNlZCB0byBidWlsZCBQeXRob24gd2l0aCBleHRyYSBkZWJ1Z2dpbmcgY2FwYWJpbGl0aWVzLCBlcXVpdmFsZW50DQogICAgIHRvIHVzaW5nIC4vY29uZmlndXJlIC0td2l0aC1weWRlYnVnIG9uIFVOSVguICBBbGwgYmluYXJpZXMgYnVpbHQNCiAgICAgdXNpbmcgdGhpcyBjb25maWd1cmF0aW9uIGhhdmUgIl9kIiBhZGRlZCB0byB0aGVpciBuYW1lOg0KLSAgICBweXRob24zNV9kLmRsbCwgcHl0aG9uX2QuZXhlLCBwYXJzZXJfZC5weWQsIGFuZCBzbyBvbi4gIEJvdGggdGhlDQorICAgIHB5dGhvbjM2X2QuZGxsLCBweXRob25fZC5leGUsIHBhcnNlcl9kLnB5ZCwgYW5kIHNvIG9uLiAgQm90aCB0aGUNCiAgICAgYnVpbGQgYW5kIHJ0IChydW4gdGVzdCkgYmF0Y2ggZmlsZXMgaW4gdGhpcyBkaXJlY3RvcnkgYWNjZXB0IGEgLWQNCiAgICAgb3B0aW9uIGZvciBkZWJ1ZyBidWlsZHMuICBJZiB5b3UgYXJlIGJ1aWxkaW5nIFB5dGhvbiB0byBoZWxwIHdpdGgNCiAgICAgZGV2ZWxvcG1lbnQgb2YgQ1B5dGhvbiwgeW91IHdpbGwgbW9zdCBsaWtlbHkgdXNlIHRoaXMgY29uZmlndXJhdGlvbi4NCkBAIC0yMDQsMTEgKzIwNCwxMSBAQAogICAgIGZ1bmN0aW9uYWxpdHkgdG8gX3NzbCBvciBfaGFzaGxpYi4gVGhleSB3aWxsIG5vdCBjbGVhbiB1cCB0aGVpciBvdXRwdXQNCiAgICAgd2l0aCB0aGUgbm9ybWFsIENsZWFuIHRhcmdldDsgQ2xlYW5BbGwgc2hvdWxkIGJlIHVzZWQgaW5zdGVhZC4NCiBfc3FsaXRlMw0KLSAgICBXcmFwcyBTUUxpdGUgMy44LjExLjAsIHdoaWNoIGlzIGl0c2VsZiBidWlsdCBieSBzcWxpdGUzLnZjeHByb2oNCisgICAgV3JhcHMgU1FMaXRlIDMuMTQuMi4wLCB3aGljaCBpcyBpdHNlbGYgYnVpbHQgYnkgc3FsaXRlMy52Y3hwcm9qDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy5zcWxpdGUub3JnLw0KIF90a2ludGVyDQotICAgIFdyYXBzIHZlcnNpb24gOC42LjQgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQorICAgIFdyYXBzIHZlcnNpb24gOC42LjYgb2YgdGhlIFRrIHdpbmRvd2luZyBzeXN0ZW0uDQogICAgIEhvbWVwYWdlOg0KICAgICAgICAgaHR0cDovL3d3dy50Y2wudGsvDQogDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9ydC5iYXQgYi9QQ2J1aWxkL3J0LmJhdAppbmRleCAyZDkzYjgwLi43ZDRkMDcxIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3J0LmJhdAorKysgYi9QQ2J1aWxkL3J0LmJhdApAQCAtNDIsNyArNDIsNyBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RhcmdzPSVyZWdydGVzdGFyZ3MlICUxKSAmIHNoaWZ0ICYgZ290byBDaGVja09wdHMNCiANCiBzZXQgZXhlPSVwcmVmaXglcHl0aG9uJXN1ZmZpeCUuZXhlDQotc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAiJXBjYnVpbGQlLi5cbGliXHRlc3RccmVncnRlc3QucHkiICVyZWdydGVzdGFyZ3MlDQorc2V0IGNtZD0iJWV4ZSUiICVkYXNoTyUgLVdkIC1FIC1iYiAtbSB0ZXN0ICVyZWdydGVzdGFyZ3MlDQogaWYgZGVmaW5lZCBxbW9kZSBnb3RvIFFtb2RlDQogDQogZWNobyBEZWxldGluZyAucHljLy5weW8gZmlsZXMgLi4uDQpkaWZmIC0tZ2l0IGEvUENidWlsZC9zcWxpdGUzLnZjeHByb2ogYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagppbmRleCBjODQxYzVhLi40ZjViMTk2IDEwMDY0NAotLS0gYS9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagorKysgYi9QQ2J1aWxkL3NxbGl0ZTMudmN4cHJvagpAQCAtNjYsNyArNjYsNyBAQAogICA8SXRlbURlZmluaXRpb25Hcm91cD4KICAgICA8Q2xDb21waWxlPgogICAgICAgPEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXM+JChzcWxpdGUzRGlyKTslKEFkZGl0aW9uYWxJbmNsdWRlRGlyZWN0b3JpZXMpPC9BZGRpdGlvbmFsSW5jbHVkZURpcmVjdG9yaWVzPgotICAgICAgPFByZXByb2Nlc3NvckRlZmluaXRpb25zPlNRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz5TUUxJVEVfRU5BQkxFX0ZUUzQ7U1FMSVRFX0VOQUJMRV9GVFM1O1NRTElURV9BUEk9X19kZWNsc3BlYyhkbGxleHBvcnQpOyUoUHJlcHJvY2Vzc29yRGVmaW5pdGlvbnMpPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICAgIDxXYXJuaW5nTGV2ZWw+TGV2ZWwxPC9XYXJuaW5nTGV2ZWw+CiAgICAgPC9DbENvbXBpbGU+CiAgICAgPFJlc291cmNlQ29tcGlsZT4KQEAgLTg2LDQgKzg2LDQgQEAKICAgPEltcG9ydCBQcm9qZWN0PSIkKFZDVGFyZ2V0c1BhdGgpXE1pY3Jvc29mdC5DcHAudGFyZ2V0cyIgLz4KICAgPEltcG9ydEdyb3VwIExhYmVsPSJFeHRlbnNpb25UYXJnZXRzIj4KICAgPC9JbXBvcnRHcm91cD4KLTwvUHJvamVjdD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCis8L1Byb2plY3Q+CmRpZmYgLS1naXQgYS9QQ2J1aWxkL3RjbHRrLnByb3BzIGIvUENidWlsZC90Y2x0ay5wcm9wcwppbmRleCAxMWRiZmZiLi41N2JiOThhIDEwMDY0NAotLS0gYS9QQ2J1aWxkL3RjbHRrLnByb3BzCisrKyBiL1BDYnVpbGQvdGNsdGsucHJvcHMKQEAgLTQsOCArNCw4IEBACiAgIDxQcm9wZXJ0eUdyb3VwPgogICAgIDxUY2xNYWpvclZlcnNpb24+ODwvVGNsTWFqb3JWZXJzaW9uPgogICAgIDxUY2xNaW5vclZlcnNpb24+NjwvVGNsTWlub3JWZXJzaW9uPgotICAgIDxUY2xQYXRjaExldmVsPjQ8L1RjbFBhdGNoTGV2ZWw+Ci0gICAgPFRjbFJldmlzaW9uPjI8L1RjbFJldmlzaW9uPgorICAgIDxUY2xQYXRjaExldmVsPjY8L1RjbFBhdGNoTGV2ZWw+CisgICAgPFRjbFJldmlzaW9uPjA8L1RjbFJldmlzaW9uPgogICAgIDxUa01ham9yVmVyc2lvbj4kKFRjbE1ham9yVmVyc2lvbik8L1RrTWFqb3JWZXJzaW9uPgogICAgIDxUa01pbm9yVmVyc2lvbj4kKFRjbE1pbm9yVmVyc2lvbik8L1RrTWlub3JWZXJzaW9uPgogICAgIDxUa1BhdGNoTGV2ZWw+JChUY2xQYXRjaExldmVsKTwvVGtQYXRjaExldmVsPgpAQCAtNDIsNCArNDIsNCBAQAogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjExMCciPiQoQnVpbGREaXJUb3ApX1ZDMTE8L0J1aWxkRGlyVG9wPgogICAgIDxCdWlsZERpclRvcCBDb25kaXRpb249IiQoUGxhdGZvcm1Ub29sc2V0KSA9PSAndjEwMCciPiQoQnVpbGREaXJUb3ApX1ZDMTA8L0J1aWxkRGlyVG9wPgogICA8L1Byb3BlcnR5R3JvdXA+Ci08L1Byb2plY3Q+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorPC9Qcm9qZWN0PgpkaWZmIC0tZ2l0IGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvaiBiL1BDYnVpbGQveHhsaW1pdGVkLnZjeHByb2oKaW5kZXggMDE0NGZhOS4uOWRiZGM3NyAxMDA2NDQKLS0tIGEvUENidWlsZC94eGxpbWl0ZWQudmN4cHJvagorKysgYi9QQ2J1aWxkL3h4bGltaXRlZC52Y3hwcm9qCkBAIC02Miw3ICs2Miw3IEBACiAgIDwvUHJvcGVydHlHcm91cD4KICAgPEl0ZW1EZWZpbml0aW9uR3JvdXA+CiAgICAgPENsQ29tcGlsZT4KLSAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDUwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KKyAgICAgIDxQcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4lKFByZXByb2Nlc3NvckRlZmluaXRpb25zKTtQeV9MSU1JVEVEX0FQST0weDAzMDYwMDAwPC9QcmVwcm9jZXNzb3JEZWZpbml0aW9ucz4KICAgICA8L0NsQ29tcGlsZT4KICAgICA8TGluaz4KICAgICAgIDxBZGRpdGlvbmFsRGVwZW5kZW5jaWVzPndzb2NrMzIubGliOyUoQWRkaXRpb25hbERlcGVuZGVuY2llcyk8L0FkZGl0aW9uYWxEZXBlbmRlbmNpZXM+CmRpZmYgLS1naXQgYS9QYXJzZXIvUHl0aG9uLmFzZGwgYi9QYXJzZXIvUHl0aG9uLmFzZGwKaW5kZXggY2QwODMyZC4uZjQ3MGFkMSAxMDA2NDQKLS0tIGEvUGFyc2VyL1B5dGhvbi5hc2RsCisrKyBiL1BhcnNlci9QeXRob24uYXNkbApAQCAtMSw0ICsxLDggQEAKLS0tIEFTREwncyBzaXggYnVpbHRpbiB0eXBlcyBhcmUgaWRlbnRpZmllciwgaW50LCBzdHJpbmcsIGJ5dGVzLCBvYmplY3QsIHNpbmdsZXRvbgorLS0gQVNETCdzIDcgYnVpbHRpbiB0eXBlcyBhcmU6CistLSBpZGVudGlmaWVyLCBpbnQsIHN0cmluZywgYnl0ZXMsIG9iamVjdCwgc2luZ2xldG9uLCBjb25zdGFudAorLS0KKy0tIHNpbmdsZXRvbjogTm9uZSwgVHJ1ZSBvciBGYWxzZQorLS0gY29uc3RhbnQgY2FuIGJlIE5vbmUsIHdoZXJlYXMgTm9uZSBtZWFucyAibm8gdmFsdWUiIGZvciBvYmplY3QuCiAKIG1vZHVsZSBQeXRob24KIHsKQEAgLTI0LDYgKzI4LDggQEAKICAgICAgICAgICB8IERlbGV0ZShleHByKiB0YXJnZXRzKQogICAgICAgICAgIHwgQXNzaWduKGV4cHIqIHRhcmdldHMsIGV4cHIgdmFsdWUpCiAgICAgICAgICAgfCBBdWdBc3NpZ24oZXhwciB0YXJnZXQsIG9wZXJhdG9yIG9wLCBleHByIHZhbHVlKQorICAgICAgICAgIC0tICdzaW1wbGUnIGluZGljYXRlcyB0aGF0IHdlIGFubm90YXRlIHNpbXBsZSBuYW1lIHdpdGhvdXQgcGFyZW5zCisgICAgICAgICAgfCBBbm5Bc3NpZ24oZXhwciB0YXJnZXQsIGV4cHIgYW5ub3RhdGlvbiwgZXhwcj8gdmFsdWUsIGludCBzaW1wbGUpCiAKICAgICAgICAgICAtLSB1c2UgJ29yZWxzZScgYmVjYXVzZSBlbHNlIGlzIGEga2V5d29yZCBpbiB0YXJnZXQgbGFuZ3VhZ2VzCiAgICAgICAgICAgfCBGb3IoZXhwciB0YXJnZXQsIGV4cHIgaXRlciwgc3RtdCogYm9keSwgc3RtdCogb3JlbHNlKQpAQCAtNzEsOSArNzcsMTIgQEAKICAgICAgICAgIHwgQ2FsbChleHByIGZ1bmMsIGV4cHIqIGFyZ3MsIGtleXdvcmQqIGtleXdvcmRzKQogICAgICAgICAgfCBOdW0ob2JqZWN0IG4pIC0tIGEgbnVtYmVyIGFzIGEgUHlPYmplY3QuCiAgICAgICAgICB8IFN0cihzdHJpbmcgcykgLS0gbmVlZCB0byBzcGVjaWZ5IHJhdywgdW5pY29kZSwgZXRjPworICAgICAgICAgfCBGb3JtYXR0ZWRWYWx1ZShleHByIHZhbHVlLCBpbnQ/IGNvbnZlcnNpb24sIGV4cHI/IGZvcm1hdF9zcGVjKQorICAgICAgICAgfCBKb2luZWRTdHIoZXhwciogdmFsdWVzKQogICAgICAgICAgfCBCeXRlcyhieXRlcyBzKQogICAgICAgICAgfCBOYW1lQ29uc3RhbnQoc2luZ2xldG9uIHZhbHVlKQogICAgICAgICAgfCBFbGxpcHNpcworICAgICAgICAgfCBDb25zdGFudChjb25zdGFudCB2YWx1ZSkKIAogICAgICAgICAgLS0gdGhlIGZvbGxvd2luZyBleHByZXNzaW9uIGNhbiBhcHBlYXIgaW4gYXNzaWdubWVudCBjb250ZXh0CiAgICAgICAgICB8IEF0dHJpYnV0ZShleHByIHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dCBjdHgpCkBAIC0xMDEsNyArMTEwLDcgQEAKIAogICAgIGNtcG9wID0gRXEgfCBOb3RFcSB8IEx0IHwgTHRFIHwgR3QgfCBHdEUgfCBJcyB8IElzTm90IHwgSW4gfCBOb3RJbgogCi0gICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMpCisgICAgY29tcHJlaGVuc2lvbiA9IChleHByIHRhcmdldCwgZXhwciBpdGVyLCBleHByKiBpZnMsIGludCBpc19hc3luYykKIAogICAgIGV4Y2VwdGhhbmRsZXIgPSBFeGNlcHRIYW5kbGVyKGV4cHI/IHR5cGUsIGlkZW50aWZpZXI/IG5hbWUsIHN0bXQqIGJvZHkpCiAgICAgICAgICAgICAgICAgICAgIGF0dHJpYnV0ZXMgKGludCBsaW5lbm8sIGludCBjb2xfb2Zmc2V0KQpkaWZmIC0tZ2l0IGEvUGFyc2VyL2FzZGwucHkgYi9QYXJzZXIvYXNkbC5weQppbmRleCAxMjFjZGFiLi42MmY1YzE5IDEwMDY0NAotLS0gYS9QYXJzZXIvYXNkbC5weQorKysgYi9QYXJzZXIvYXNkbC5weQpAQCAtMzMsNyArMzMsOCBAQAogIyBTZWUgdGhlIEVCTkYgYXQgdGhlIHRvcCBvZiB0aGUgZmlsZSB0byB1bmRlcnN0YW5kIHRoZSBsb2dpY2FsIGNvbm5lY3Rpb24KICMgYmV0d2VlbiB0aGUgdmFyaW91cyBub2RlIHR5cGVzLgogCi1idWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbid9CitidWlsdGluX3R5cGVzID0geydpZGVudGlmaWVyJywgJ3N0cmluZycsICdieXRlcycsICdpbnQnLCAnb2JqZWN0JywgJ3NpbmdsZXRvbicsCisgICAgICAgICAgICAgICAgICdjb25zdGFudCd9CiAKIGNsYXNzIEFTVDoKICAgICBkZWYgX19yZXByX18oc2VsZik6CmRpZmYgLS1naXQgYS9QYXJzZXIvYXNkbF9jLnB5IGIvUGFyc2VyL2FzZGxfYy5weQpvbGQgbW9kZSAxMDA3NTUKbmV3IG1vZGUgMTAwNjQ0CmluZGV4IGFjOWQyYjYuLjcyNWQ3M2IKLS0tIGEvUGFyc2VyL2FzZGxfYy5weQorKysgYi9QYXJzZXIvYXNkbF9jLnB5CkBAIC04NDEsNiArODQxLDcgQEAKICAgICByZXR1cm4gKFB5T2JqZWN0KilvOwogfQogI2RlZmluZSBhc3Qyb2JqX3NpbmdsZXRvbiBhc3Qyb2JqX29iamVjdAorI2RlZmluZSBhc3Qyb2JqX2NvbnN0YW50IGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfaWRlbnRpZmllciBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX3N0cmluZyBhc3Qyb2JqX29iamVjdAogI2RlZmluZSBhc3Qyb2JqX2J5dGVzIGFzdDJvYmpfb2JqZWN0CkBAIC04NzgsNiArODc5LDE5IEBACiAgICAgcmV0dXJuIDA7CiB9CiAKK3N0YXRpYyBpbnQgb2JqMmFzdF9jb25zdGFudChQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCit7CisgICAgaWYgKG9iaikgeworICAgICAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChhcmVuYSwgb2JqKSA8IDApIHsKKyAgICAgICAgICAgICpvdXQgPSBOVUxMOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgICAgIFB5X0lOQ1JFRihvYmopOworICAgIH0KKyAgICAqb3V0ID0gb2JqOworICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgaW50IG9iajJhc3RfaWRlbnRpZmllcihQeU9iamVjdCogb2JqLCBQeU9iamVjdCoqIG91dCwgUHlBcmVuYSogYXJlbmEpCiB7CiAgICAgaWYgKCFQeVVuaWNvZGVfQ2hlY2tFeGFjdChvYmopICYmIG9iaiAhPSBQeV9Ob25lKSB7CkBAIC05MTMsNyArOTI3LDcgQEAKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQogCi0gICAgaSA9IChpbnQpUHlMb25nX0FzTG9uZyhvYmopOworICAgIGkgPSBfUHlMb25nX0FzSW50KG9iaik7CiAgICAgaWYgKGkgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgcmV0dXJuIDE7CiAgICAgKm91dCA9IGk7CmRpZmYgLS1naXQgYS9QYXJzZXIvZ3JhbW1hci5jIGIvUGFyc2VyL2dyYW1tYXIuYwppbmRleCBiNTk4Mjk0Li43NWZkNWI5IDEwMDY0NAotLS0gYS9QYXJzZXIvZ3JhbW1hci5jCisrKyBiL1BhcnNlci9ncmFtbWFyLmMKQEAgLTI4LDYgKzI4LDIzIEBACiAgICAgcmV0dXJuIGc7CiB9CiAKK3ZvaWQKK2ZyZWVncmFtbWFyKGdyYW1tYXIgKmcpCit7CisgICAgaW50IGk7CisgICAgZm9yIChpID0gMDsgaSA8IGctPmdfbmRmYXM7IGkrKykgeworICAgICAgICBmcmVlKGctPmdfZGZhW2ldLmRfbmFtZSk7CisgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgZy0+Z19kZmFbaV0uZF9uc3RhdGVzOyBqKyspCisgICAgICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGVbal0uc19hcmMpOworICAgICAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhW2ldLmRfc3RhdGUpOworICAgIH0KKyAgICBQeU9iamVjdF9GUkVFKGctPmdfZGZhKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgZy0+Z19sbC5sbF9ubGFiZWxzOyBpKyspCisgICAgICAgIGZyZWUoZy0+Z19sbC5sbF9sYWJlbFtpXS5sYl9zdHIpOworICAgIFB5T2JqZWN0X0ZSRUUoZy0+Z19sbC5sbF9sYWJlbCk7CisgICAgUHlPYmplY3RfRlJFRShnKTsKK30KKwogZGZhICoKIGFkZGRmYShncmFtbWFyICpnLCBpbnQgdHlwZSwgY29uc3QgY2hhciAqbmFtZSkKIHsKQEAgLTYzLDcgKzgwLDcgQEAKICAgICBzLT5zX3VwcGVyID0gMDsKICAgICBzLT5zX2FjY2VsID0gTlVMTDsKICAgICBzLT5zX2FjY2VwdCA9IDA7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QocyAtIGQtPmRfc3RhdGUsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKHMgLSBkLT5kX3N0YXRlLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogdm9pZApAQCAtMTA1LDcgKzEyMiw3IEBACiAgICAgaWYgKFB5X0RlYnVnRmxhZykKICAgICAgICAgcHJpbnRmKCJMYWJlbCBAICU4cCwgJWQ6ICVzXG4iLCBsbCwgbGwtPmxsX25sYWJlbHMsCiAgICAgICAgICAgICAgICBQeUdyYW1tYXJfTGFiZWxSZXByKGxiKSk7Ci0gICAgcmV0dXJuIFB5X1NBRkVfRE9XTkNBU1QobGIgLSBsbC0+bGxfbGFiZWwsIFB5X2ludHB0cl90LCBpbnQpOworICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxiIC0gbGwtPmxsX2xhYmVsLCBpbnRwdHJfdCwgaW50KTsKIH0KIAogLyogU2FtZSwgYnV0IHJhdGhlciBkaWVzIHRoYW4gYWRkcyAqLwpAQCAtMTIyLDcgKzEzOSwxMyBAQAogICAgIH0KICAgICBmcHJpbnRmKHN0ZGVyciwgIkxhYmVsICVkLyclcycgbm90IGZvdW5kXG4iLCB0eXBlLCBzdHIpOwogICAgIFB5X0ZhdGFsRXJyb3IoImdyYW1tYXIuYzpmaW5kbGFiZWwoKSIpOworCisgICAgLyogUHlfRmF0YWxFcnJvcigpIGlzIGRlY2xhcmVkIHdpdGggX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkuCisgICAgICAgR0NDIGVtaXRzIGEgd2FybmluZyB3aXRob3V0ICJyZXR1cm4gMDsiIChjb21waWxlciBidWchKSwgYnV0IENsYW5nIGlzCisgICAgICAgc21hcnRlciBhbmQgZW1pdHMgYSB3YXJuaW5nIG9uIHRoZSByZXR1cm4uLi4gKi8KKyNpZm5kZWYgX19jbGFuZ19fCiAgICAgcmV0dXJuIDA7IC8qIE1ha2UgZ2NjIC1XYWxsIGhhcHB5ICovCisjZW5kaWYKIH0KIAogLyogRm9yd2FyZCAqLwpkaWZmIC0tZ2l0IGEvUGFyc2VyL215cmVhZGxpbmUuYyBiL1BhcnNlci9teXJlYWRsaW5lLmMKaW5kZXggMjhjN2I2ZC4uZTQwOTUxYyAxMDA2NDQKLS0tIGEvUGFyc2VyL215cmVhZGxpbmUuYworKysgYi9QYXJzZXIvbXlyZWFkbGluZS5jCkBAIC00MSwxMCArNDEsNyBAQAogICAgICAgICAgICAgKHZvaWQpKFB5T1NfSW5wdXRIb29rKSgpOwogICAgICAgICBlcnJubyA9IDA7CiAgICAgICAgIGNsZWFyZXJyKGZwKTsKLSAgICAgICAgaWYgKF9QeVZlcmlmeV9mZChmaWxlbm8oZnApKSkKLSAgICAgICAgICAgIHAgPSBmZ2V0cyhidWYsIGxlbiwgZnApOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBwID0gTlVMTDsKKyAgICAgICAgcCA9IGZnZXRzKGJ1ZiwgbGVuLCBmcCk7CiAgICAgICAgIGlmIChwICE9IE5VTEwpCiAgICAgICAgICAgICByZXR1cm4gMDsgLyogTm8gZXJyb3IgKi8KICAgICAgICAgZXJyID0gZXJybm87CkBAIC0xMDEsNiArOTgsMTAwIEBACiAgICAgLyogTk9UUkVBQ0hFRCAqLwogfQogCisjaWZkZWYgTVNfV0lORE9XUworLyogUmVhZGxpbmUgaW1wbGVtZW50YXRpb24gdXNpbmcgUmVhZENvbnNvbGVXICovCisKK2V4dGVybiBjaGFyIF9nZXRfY29uc29sZV90eXBlKEhBTkRMRSBoYW5kbGUpOworCitjaGFyICoKK19QeU9TX1dpbmRvd3NDb25zb2xlUmVhZGxpbmUoSEFORExFIGhTdGRJbikKK3sKKyAgICBzdGF0aWMgd2NoYXJfdCB3YnVmX2xvY2FsWzEwMjQgKiAxNl07CisgICAgY29uc3QgRFdPUkQgY2h1bmtfc2l6ZSA9IDEwMjQ7CisKKyAgICBEV09SRCBuX3JlYWQsIHRvdGFsX3JlYWQsIHdidWZsZW4sIHU4bGVuOworICAgIHdjaGFyX3QgKndidWY7CisgICAgY2hhciAqYnVmID0gTlVMTDsKKyAgICBpbnQgZXJyID0gMDsKKworICAgIG5fcmVhZCA9IDA7CisgICAgdG90YWxfcmVhZCA9IDA7CisgICAgd2J1ZiA9IHdidWZfbG9jYWw7CisgICAgd2J1ZmxlbiA9IHNpemVvZih3YnVmX2xvY2FsKSAvIHNpemVvZih3YnVmX2xvY2FsWzBdKSAtIDE7CisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgaWYgKCFSZWFkQ29uc29sZVcoaFN0ZEluLCAmd2J1Zlt0b3RhbF9yZWFkXSwgd2J1ZmxlbiAtIHRvdGFsX3JlYWQsICZuX3JlYWQsIE5VTEwpKSB7CisgICAgICAgICAgICBlcnIgPSBHZXRMYXN0RXJyb3IoKTsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBpZiAobl9yZWFkID09IDApIHsKKyAgICAgICAgICAgIGludCBzOworICAgICAgICAgICAgZXJyID0gR2V0TGFzdEVycm9yKCk7CisgICAgICAgICAgICBpZiAoZXJyICE9IEVSUk9SX09QRVJBVElPTl9BQk9SVEVEKQorICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgIGVyciA9IDA7CisgICAgICAgICAgICBIQU5ETEUgaEludGVycnVwdEV2ZW50ID0gX1B5T1NfU2lnaW50RXZlbnQoKTsKKyAgICAgICAgICAgIGlmIChXYWl0Rm9yU2luZ2xlT2JqZWN0RXgoaEludGVycnVwdEV2ZW50LCAxMDAsIEZBTFNFKQorICAgICAgICAgICAgICAgICAgICA9PSBXQUlUX09CSkVDVF8wKSB7CisgICAgICAgICAgICAgICAgUmVzZXRFdmVudChoSW50ZXJydXB0RXZlbnQpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1Jlc3RvcmVUaHJlYWQoX1B5T1NfUmVhZGxpbmVUU3RhdGUpOworI2VuZGlmCisgICAgICAgICAgICAgICAgcyA9IFB5RXJyX0NoZWNrU2lnbmFscygpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgICAgICAgICAgUHlFdmFsX1NhdmVUaHJlYWQoKTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChzIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgfQorICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICB0b3RhbF9yZWFkICs9IG5fcmVhZDsKKyAgICAgICAgaWYgKHRvdGFsX3JlYWQgPT0gMCB8fCB3YnVmW3RvdGFsX3JlYWQgLSAxXSA9PSBMJ1xuJykgeworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICAgICAgd2J1ZmxlbiArPSBjaHVua19zaXplOworICAgICAgICBpZiAod2J1ZiA9PSB3YnVmX2xvY2FsKSB7CisgICAgICAgICAgICB3YnVmW3RvdGFsX3JlYWRdID0gJ1wwJzsKKyAgICAgICAgICAgIHdidWYgPSAod2NoYXJfdCopUHlNZW1fUmF3TWFsbG9jKHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgICAgICAgICAgaWYgKHdidWYpCisgICAgICAgICAgICAgICAgd2NzY3B5X3Mod2J1Ziwgd2J1Zmxlbiwgd2J1Zl9sb2NhbCk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZQorICAgICAgICAgICAgd2J1ZiA9ICh3Y2hhcl90KilQeU1lbV9SYXdSZWFsbG9jKHdidWYsIHdidWZsZW4gKiBzaXplb2Yod2NoYXJfdCkpOworICAgIH0KKworICAgIGlmICh3YnVmWzBdID09ICdceDFhJykgeworICAgICAgICBidWYgPSBQeU1lbV9SYXdNYWxsb2MoMSk7CisgICAgICAgIGlmIChidWYpCisgICAgICAgICAgICBidWZbMF0gPSAnXDAnOworICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQorCisgICAgdThsZW4gPSBXaWRlQ2hhclRvTXVsdGlCeXRlKENQX1VURjgsIDAsIHdidWYsIHRvdGFsX3JlYWQsIE5VTEwsIDAsIE5VTEwsIE5VTEwpOworICAgIGJ1ZiA9IFB5TWVtX1Jhd01hbGxvYyh1OGxlbiArIDEpOworICAgIHU4bGVuID0gV2lkZUNoYXJUb011bHRpQnl0ZShDUF9VVEY4LCAwLCB3YnVmLCB0b3RhbF9yZWFkLCBidWYsIHU4bGVuLCBOVUxMLCBOVUxMKTsKKyAgICBidWZbdThsZW5dID0gJ1wwJzsKKworZXhpdDoKKyAgICBpZiAod2J1ZiAhPSB3YnVmX2xvY2FsKQorICAgICAgICBQeU1lbV9SYXdGcmVlKHdidWYpOworCisgICAgaWYgKGVycikgeworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIFB5RXZhbF9SZXN0b3JlVGhyZWFkKF9QeU9TX1JlYWRsaW5lVFN0YXRlKTsKKyNlbmRpZgorICAgICAgICBQeUVycl9TZXRGcm9tV2luZG93c0VycihlcnIpOworI2lmZGVmIFdJVEhfVEhSRUFECisgICAgICAgIFB5RXZhbF9TYXZlVGhyZWFkKCk7CisjZW5kaWYKKyAgICB9CisKKyAgICByZXR1cm4gYnVmOworfQorCisjZW5kaWYKKwogCiAvKiBSZWFkbGluZSBpbXBsZW1lbnRhdGlvbiB1c2luZyBmZ2V0cygpICovCiAKQEAgLTExMCw2ICsyMDEsNDUgQEAKICAgICBzaXplX3QgbjsKICAgICBjaGFyICpwLCAqcHI7CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKCFQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnICYmIHN5c19zdGRpbiA9PSBzdGRpbikgeworICAgICAgICBIQU5ETEUgaFN0ZEluLCBoU3RkRXJyOworCisgICAgICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKKyAgICAgICAgaFN0ZEluID0gKEhBTkRMRSlfZ2V0X29zZmhhbmRsZShmaWxlbm8oc3lzX3N0ZGluKSk7CisgICAgICAgIGhTdGRFcnIgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZpbGVubyhzdGRlcnIpKTsKKyAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKKworICAgICAgICBpZiAoX2dldF9jb25zb2xlX3R5cGUoaFN0ZEluKSA9PSAncicpIHsKKyAgICAgICAgICAgIGZmbHVzaChzeXNfc3Rkb3V0KTsKKyAgICAgICAgICAgIGlmIChwcm9tcHQpIHsKKyAgICAgICAgICAgICAgICBpZiAoX2dldF9jb25zb2xlX3R5cGUoaFN0ZEVycikgPT0gJ3cnKSB7CisgICAgICAgICAgICAgICAgICAgIHdjaGFyX3QgKndidWY7CisgICAgICAgICAgICAgICAgICAgIGludCB3bGVuOworICAgICAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBwcm9tcHQsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDApOworICAgICAgICAgICAgICAgICAgICBpZiAod2xlbiAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHdidWYgPSBQeU1lbV9SYXdNYWxsb2Mod2xlbiAqIHNpemVvZih3Y2hhcl90KSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB3bGVuID0gTXVsdGlCeXRlVG9XaWRlQ2hhcihDUF9VVEY4LCAwLCBwcm9tcHQsIC0xLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3YnVmLCB3bGVuKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh3bGVuKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRFdPUkQgbjsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZmx1c2goc3RkZXJyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBXcml0ZUNvbnNvbGVXKGhTdGRFcnIsIHdidWYsIHdsZW4sICZuLCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvbXB0KTsKKyAgICAgICAgICAgICAgICAgICAgZmZsdXNoKHN0ZGVycik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgY2xlYXJlcnIoc3lzX3N0ZGluKTsKKyAgICAgICAgICAgIHJldHVybiBfUHlPU19XaW5kb3dzQ29uc29sZVJlYWRsaW5lKGhTdGRJbik7CisgICAgICAgIH0KKyAgICB9CisjZW5kaWYKKwogICAgIG4gPSAxMDA7CiAgICAgcCA9IChjaGFyICopUHlNZW1fUmF3TWFsbG9jKG4pOwogICAgIGlmIChwID09IE5VTEwpCmRpZmYgLS1naXQgYS9QYXJzZXIvbm9kZS5jIGIvUGFyc2VyL25vZGUuYwppbmRleCAwMDEwMzI0Li4yNDBkMjkwIDEwMDY0NAotLS0gYS9QYXJzZXIvbm9kZS5jCisrKyBiL1BhcnNlci9ub2RlLmMKQEAgLTkxLDcgKzkxLDcgQEAKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IDAgfHwgcmVxdWlyZWRfY2FwYWNpdHkgPCAwKQogICAgICAgICByZXR1cm4gRV9PVkVSRkxPVzsKICAgICBpZiAoY3VycmVudF9jYXBhY2l0eSA8IHJlcXVpcmVkX2NhcGFjaXR5KSB7Ci0gICAgICAgIGlmICgoc2l6ZV90KXJlcXVpcmVkX2NhcGFjaXR5ID4gUFlfU0laRV9NQVggLyBzaXplb2Yobm9kZSkpIHsKKyAgICAgICAgaWYgKChzaXplX3QpcmVxdWlyZWRfY2FwYWNpdHkgPiBTSVpFX01BWCAvIHNpemVvZihub2RlKSkgewogICAgICAgICAgICAgcmV0dXJuIEVfTk9NRU07CiAgICAgICAgIH0KICAgICAgICAgbiA9IG4xLT5uX2NoaWxkOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3BhcnNlci5jIGIvUGFyc2VyL3BhcnNlci5jCmluZGV4IDU2ZWM1MTQuLjQxMDcyYzQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wYXJzZXIuYworKysgYi9QYXJzZXIvcGFyc2VyLmMKQEAgLTE0MCwyMSArMTQwLDIwIEBACiAgICAgaW50IG4gPSBnLT5nX2xsLmxsX25sYWJlbHM7CiAKICAgICBpZiAodHlwZSA9PSBOQU1FKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKnMgPSBzdHI7CiAgICAgICAgIGxhYmVsICpsID0gZy0+Z19sbC5sbF9sYWJlbDsKICAgICAgICAgaW50IGk7CiAgICAgICAgIGZvciAoaSA9IG47IGkgPiAwOyBpLS0sIGwrKykgewogICAgICAgICAgICAgaWYgKGwtPmxiX3R5cGUgIT0gTkFNRSB8fCBsLT5sYl9zdHIgPT0gTlVMTCB8fAotICAgICAgICAgICAgICAgIGwtPmxiX3N0clswXSAhPSBzWzBdIHx8Ci0gICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgcykgIT0gMCkKKyAgICAgICAgICAgICAgICBsLT5sYl9zdHJbMF0gIT0gc3RyWzBdIHx8CisgICAgICAgICAgICAgICAgc3RyY21wKGwtPmxiX3N0ciwgc3RyKSAhPSAwKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogI2lmZGVmIFBZX1BBUlNFUl9SRVFVSVJFU19GVVRVUkVfS0VZV09SRAogI2lmIDAKICAgICAgICAgICAgIC8qIExlYXZpbmcgdGhpcyBpbiBhcyBhbiBleGFtcGxlICovCiAgICAgICAgICAgICBpZiAoIShwcy0+cF9mbGFncyAmIENPX0ZVVFVSRV9XSVRIX1NUQVRFTUVOVCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoc1swXSA9PSAndycgJiYgc3RyY21wKHMsICJ3aXRoIikgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAoc3RyWzBdID09ICd3JyAmJiBzdHJjbXAoc3RyLCAid2l0aCIpID09IDApCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAvKiBub3QgYSBrZXl3b3JkIHlldCAqLwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKHNbMF0gPT0gJ2EnICYmIHN0cmNtcChzLCAiYXMiKSA9PSAwKQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKHN0clswXSA9PSAnYScgJiYgc3RyY21wKHN0ciwgImFzIikgPT0gMCkKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7IC8qIG5vdCBhIGtleXdvcmQgeWV0ICovCiAgICAgICAgICAgICB9CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1BhcnNlci9wYXJzZXRvay5jIGIvUGFyc2VyL3BhcnNldG9rLmMKaW5kZXggNjI5ZGVlNS4uMWY0NjdkNiAxMDA2NDQKLS0tIGEvUGFyc2VyL3BhcnNldG9rLmMKKysrIGIvUGFyc2VyL3BhcnNldG9rLmMKQEAgLTE2MSwxMCArMTYxLDEwIEBACiAKICNpZmRlZiBQWV9QQVJTRVJfUkVRVUlSRVNfRlVUVVJFX0tFWVdPUkQKICNpZiAwCi1zdGF0aWMgY2hhciB3aXRoX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIHdpdGhfbXNnW10gPQogIiVzOiVkOiBXYXJuaW5nOiAnd2l0aCcgd2lsbCBiZWNvbWUgYSByZXNlcnZlZCBrZXl3b3JkIGluIFB5dGhvbiAyLjZcbiI7CiAKLXN0YXRpYyBjaGFyIGFzX21zZ1tdID0KK3N0YXRpYyBjb25zdCBjaGFyIGFzX21zZ1tdID0KICIlczolZDogV2FybmluZzogJ2FzJyB3aWxsIGJlY29tZSBhIHJlc2VydmVkIGtleXdvcmQgaW4gUHl0aG9uIDIuNlxuIjsKIAogc3RhdGljIHZvaWQKQEAgLTI1NSw3ICsyNTUsNyBAQAogI2VuZGlmCiAgICAgICAgIGlmIChhID49IHRvay0+bGluZV9zdGFydCkKICAgICAgICAgICAgIGNvbF9vZmZzZXQgPSBQeV9TQUZFX0RPV05DQVNUKGEgLSB0b2stPmxpbmVfc3RhcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9pbnRwdHJfdCwgaW50KTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludHB0cl90LCBpbnQpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBjb2xfb2Zmc2V0ID0gLTE7CiAKZGlmZiAtLWdpdCBhL1BhcnNlci9wZ2VuLmMgYi9QYXJzZXIvcGdlbi5jCmluZGV4IGYzMDMxYWUuLjY0NTFhMWQgMTAwNjQ0Ci0tLSBhL1BhcnNlci9wZ2VuLmMKKysrIGIvUGFyc2VyL3BnZW4uYwpAQCAtMTE3LDYgKzExNywxNiBAQAogICAgIHJldHVybiBncjsKIH0KIAorc3RhdGljIHZvaWQKK2ZyZWVuZmFncmFtbWFyKG5mYWdyYW1tYXIgKmdyKQoreworICAgIGZvciAoaW50IGkgPSAwOyBpIDwgZ3ItPmdyX25uZmFzOyBpKyspIHsKKyAgICAgICAgUHlPYmplY3RfRlJFRShnci0+Z3JfbmZhW2ldLT5uZl9zdGF0ZSk7CisgICAgfQorICAgIFB5T2JqZWN0X0ZSRUUoZ3ItPmdyX25mYSk7CisgICAgUHlPYmplY3RfRlJFRShncik7Cit9CisKIHN0YXRpYyBuZmEgKgogYWRkbmZhKG5mYWdyYW1tYXIgKmdyLCBjaGFyICpuYW1lKQogewpAQCAtMTM0LDcgKzE0NCw3IEBACiAKICNpZmRlZiBQeV9ERUJVRwogCi1zdGF0aWMgY2hhciBSRVFORk1UW10gPSAibWV0YWNvbXBpbGU6IGxlc3MgdGhhbiAlZCBjaGlsZHJlblxuIjsKK3N0YXRpYyBjb25zdCBjaGFyIFJFUU5GTVRbXSA9ICJtZXRhY29tcGlsZTogbGVzcyB0aGFuICVkIGNoaWxkcmVuXG4iOwogCiAjZGVmaW5lIFJFUU4oaSwgY291bnQpIGRvIHsgXAogICAgIGlmIChpIDwgY291bnQpIHsgXApAQCAtMzc5LDcgKzM4OSw3IEBACiAKIC8qIEZvcndhcmQgKi8KIHN0YXRpYyB2b2lkIHByaW50c3NkZmEoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSwgaW50IG5iaXRzLAotICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjaGFyICptc2cpOworICAgICAgICAgICAgICAgICAgICAgICBsYWJlbGxpc3QgKmxsLCBjb25zdCBjaGFyICptc2cpOwogc3RhdGljIHZvaWQgc2ltcGxpZnkoaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiBzdGF0aWMgdm9pZCBjb252ZXJ0KGRmYSAqZCwgaW50IHh4X25zdGF0ZXMsIHNzX3N0YXRlICp4eF9zdGF0ZSk7CiAKQEAgLTQ4OCwxMyArNDk4LDE3IEBACiAKICAgICBjb252ZXJ0KGQsIHh4X25zdGF0ZXMsIHh4X3N0YXRlKTsKIAotICAgIC8qIFhYWCBjbGVhbnVwICovCisgICAgZm9yIChpbnQgaSA9IDA7IGkgPCB4eF9uc3RhdGVzOyBpKyspIHsKKyAgICAgICAgZm9yIChpbnQgaiA9IDA7IGogPCB4eF9zdGF0ZVtpXS5zc19uYXJjczsgaisrKQorICAgICAgICAgICAgZGVsYml0c2V0KHh4X3N0YXRlW2ldLnNzX2FyY1tqXS5zYV9iaXRzZXQpOworICAgICAgICBQeU9iamVjdF9GUkVFKHh4X3N0YXRlW2ldLnNzX2FyYyk7CisgICAgfQogICAgIFB5T2JqZWN0X0ZSRUUoeHhfc3RhdGUpOwogfQogCiBzdGF0aWMgdm9pZAogcHJpbnRzc2RmYShpbnQgeHhfbnN0YXRlcywgc3Nfc3RhdGUgKnh4X3N0YXRlLCBpbnQgbmJpdHMsCi0gICAgICAgICAgIGxhYmVsbGlzdCAqbGwsIGNoYXIgKm1zZykKKyAgICAgICAgICAgbGFiZWxsaXN0ICpsbCwgY29uc3QgY2hhciAqbXNnKQogewogICAgIGludCBpLCBpYml0LCBpYXJjOwogICAgIHNzX3N0YXRlICp5eTsKQEAgLTY2OSw3ICs2ODMsNyBAQAogICAgIGcgPSBtYWtldGFibGVzKGdyKTsKICAgICB0cmFuc2xhdGVsYWJlbHMoZyk7CiAgICAgYWRkZmlyc3RzZXRzKGcpOwotICAgIFB5T2JqZWN0X0ZSRUUoZ3IpOworICAgIGZyZWVuZmFncmFtbWFyKGdyKTsKICAgICByZXR1cm4gZzsKIH0KIApkaWZmIC0tZ2l0IGEvUGFyc2VyL3BnZW5tYWluLmMgYi9QYXJzZXIvcGdlbm1haW4uYwppbmRleCAwZjA1NWQ2Li5lMzg2MjQ4IDEwMDY0NAotLS0gYS9QYXJzZXIvcGdlbm1haW4uYworKysgYi9QYXJzZXIvcGdlbm1haW4uYwpAQCAtMjcsNyArMjcsNyBAQAogaW50IFB5X0lnbm9yZUVudmlyb25tZW50RmxhZzsKIAogLyogRm9yd2FyZCAqLwotZ3JhbW1hciAqZ2V0Z3JhbW1hcihjaGFyICpmaWxlbmFtZSk7CitncmFtbWFyICpnZXRncmFtbWFyKGNvbnN0IGNoYXIgKmZpbGVuYW1lKTsKIAogdm9pZCBQeV9FeGl0KGludCkgX1B5X05PX1JFVFVSTjsKIApAQCAtMzcsNiArMzcsMTUgQEAKICAgICBleGl0KHN0cyk7CiB9CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorLyogTmVlZGVkIGJ5IG9ibWFsbG9jLmMgKi8KK2ludCBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCit7IHJldHVybiAxOyB9CisjZW5kaWYKKwordm9pZCBfUHlNZW1fRHVtcFRyYWNlYmFjayhpbnQgZmQsIGNvbnN0IHZvaWQgKnB0cikKK3t9CisKIGludAogbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiB7CkBAIC03MSwxMiArODAsMTMgQEAKICAgICAgICAgcHJpbnRmKCJXcml0aW5nICVzIC4uLlxuIiwgZ3JhbWluaXRfaCk7CiAgICAgcHJpbnRub250ZXJtaW5hbHMoZywgZnApOwogICAgIGZjbG9zZShmcCk7CisgICAgZnJlZWdyYW1tYXIoZyk7CiAgICAgUHlfRXhpdCgwKTsKICAgICByZXR1cm4gMDsgLyogTWFrZSBnY2MgLVdhbGwgaGFwcHkgKi8KIH0KIAogZ3JhbW1hciAqCi1nZXRncmFtbWFyKGNoYXIgKmZpbGVuYW1lKQorZ2V0Z3JhbW1hcihjb25zdCBjaGFyICpmaWxlbmFtZSkKIHsKICAgICBGSUxFICpmcDsKICAgICBub2RlICpuOwpkaWZmIC0tZ2l0IGEvUGFyc2VyL3Rva2VuaXplci5jIGIvUGFyc2VyL3Rva2VuaXplci5jCmluZGV4IDYxMmNiMjMuLjgzMTcyOTMgMTAwNjQ0Ci0tLSBhL1BhcnNlci90b2tlbml6ZXIuYworKysgYi9QYXJzZXIvdG9rZW5pemVyLmMKQEAgLTIwMiw4ICsyMDIsOCBAQAogfQogCiAKLXN0YXRpYyBjaGFyICoKLWdldF9ub3JtYWxfbmFtZShjaGFyICpzKSAgICAgICAgLyogZm9yIHV0Zi04IGFuZCBsYXRpbi0xICovCitzdGF0aWMgY29uc3QgY2hhciAqCitnZXRfbm9ybWFsX25hbWUoY29uc3QgY2hhciAqcykgIC8qIGZvciB1dGYtOCBhbmQgbGF0aW4tMSAqLwogewogICAgIGNoYXIgYnVmWzEzXTsKICAgICBpbnQgaTsKQEAgLTI2NCw3ICsyNjQsNyBAQAogCiAgICAgICAgICAgICBpZiAoYmVnaW4gPCB0KSB7CiAgICAgICAgICAgICAgICAgY2hhciogciA9IG5ld19zdHJpbmcoYmVnaW4sIHQgLSBiZWdpbiwgdG9rKTsKLSAgICAgICAgICAgICAgICBjaGFyKiBxOworICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIqIHE7CiAgICAgICAgICAgICAgICAgaWYgKCFyKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgICAgICBxID0gZ2V0X25vcm1hbF9uYW1lKHIpOwpAQCAtMTMzNSw2ICsxMzM1LDI4IEBACiB9CiAjZW5kaWYKIAorc3RhdGljIGludAordG9rX2RlY2ltYWxfdGFpbChzdHJ1Y3QgdG9rX3N0YXRlICp0b2spCit7CisgICAgaW50IGM7CisKKyAgICB3aGlsZSAoMSkgeworICAgICAgICBkbyB7CisgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICBpZiAoYyAhPSAnXycpIHsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgaWYgKCFpc2RpZ2l0KGMpKSB7CisgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGM7Cit9CisKIC8qIEdldCBuZXh0IHRva2VuLCBhZnRlciBzcGFjZSBzdHJpcHBpbmcgZXRjLiAqLwogCiBzdGF0aWMgaW50CkBAIC0xMzU1LDE3ICsxMzc3LDIwIEBACiAgICAgICAgIHRvay0+YXRib2wgPSAwOwogICAgICAgICBmb3IgKDs7KSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSAnICcpCisgICAgICAgICAgICBpZiAoYyA9PSAnICcpIHsKICAgICAgICAgICAgICAgICBjb2wrKywgYWx0Y29sKys7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdcdCcpIHsKICAgICAgICAgICAgICAgICBjb2wgPSAoY29sL3Rvay0+dGFic2l6ZSArIDEpICogdG9rLT50YWJzaXplOwogICAgICAgICAgICAgICAgIGFsdGNvbCA9IChhbHRjb2wvdG9rLT5hbHR0YWJzaXplICsgMSkKICAgICAgICAgICAgICAgICAgICAgKiB0b2stPmFsdHRhYnNpemU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIGlmIChjID09ICdcMDE0JykgLyogQ29udHJvbC1MIChmb3JtZmVlZCkgKi8KKyAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ1wwMTQnKSAgey8qIENvbnRyb2wtTCAoZm9ybWZlZWQpICovCiAgICAgICAgICAgICAgICAgY29sID0gYWx0Y29sID0gMDsgLyogRm9yIEVtYWNzIHVzZXJzICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CiAgICAgICAgIGlmIChjID09ICcjJyB8fCBjID09ICdcbicpIHsKQEAgLTEzNzQsMTAgKzEzOTksMTIgQEAKICAgICAgICAgICAgICAgIG5vdCBwYXNzZWQgdG8gdGhlIHBhcnNlciBhcyBORVdMSU5FIHRva2VucywKICAgICAgICAgICAgICAgIGV4Y2VwdCAqdG90YWxseSogZW1wdHkgbGluZXMgaW4gaW50ZXJhY3RpdmUKICAgICAgICAgICAgICAgIG1vZGUsIHdoaWNoIHNpZ25hbCB0aGUgZW5kIG9mIGEgY29tbWFuZCBncm91cC4gKi8KLSAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChjb2wgPT0gMCAmJiBjID09ICdcbicgJiYgdG9rLT5wcm9tcHQgIT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGJsYW5rbGluZSA9IDA7IC8qIExldCBpdCB0aHJvdWdoICovCi0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBibGFua2xpbmUgPSAxOyAvKiBJZ25vcmUgY29tcGxldGVseSAqLworICAgICAgICAgICAgfQogICAgICAgICAgICAgLyogV2UgY2FuJ3QganVtcCBiYWNrIHJpZ2h0IGhlcmUgc2luY2Ugd2Ugc3RpbGwKICAgICAgICAgICAgICAgIG1heSBuZWVkIHRvIHNraXAgdG8gdGhlIGVuZCBvZiBhIGNvbW1lbnQgKi8KICAgICAgICAgfQpAQCAtMTM4NSw4ICsxNDEyLDkgQEAKICAgICAgICAgICAgIGlmIChjb2wgPT0gdG9rLT5pbmRzdGFja1t0b2stPmluZGVudF0pIHsKICAgICAgICAgICAgICAgICAvKiBObyBjaGFuZ2UgKi8KICAgICAgICAgICAgICAgICBpZiAoYWx0Y29sICE9IHRvay0+YWx0aW5kc3RhY2tbdG9rLT5pbmRlbnRdKSB7Ci0gICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKQorICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjb2wgPiB0b2stPmluZHN0YWNrW3Rvay0+aW5kZW50XSkgewpAQCAtMTM5Nyw4ICsxNDI1LDkgQEAKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGlmIChhbHRjb2wgPD0gdG9rLT5hbHRpbmRzdGFja1t0b2stPmluZGVudF0pIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpCisgICAgICAgICAgICAgICAgICAgIGlmIChpbmRlbnRlcnJvcih0b2spKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB0b2stPnBlbmRpbisrOwogICAgICAgICAgICAgICAgIHRvay0+aW5kc3RhY2tbKyt0b2stPmluZGVudF0gPSBjb2w7CkBAIC0xNDE3LDggKzE0NDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgaWYgKGFsdGNvbCAhPSB0b2stPmFsdGluZHN0YWNrW3Rvay0+aW5kZW50XSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoaW5kZW50ZXJyb3IodG9rKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKGluZGVudGVycm9yKHRvaykpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogICAgICAgICB9CkBAIC0xNDY0LDkgKzE0OTQsMTEgQEAKICAgICB0b2stPnN0YXJ0ID0gdG9rLT5jdXIgLSAxOwogCiAgICAgLyogU2tpcCBjb21tZW50ICovCi0gICAgaWYgKGMgPT0gJyMnKQotICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQorICAgIGlmIChjID09ICcjJykgeworICAgICAgICB3aGlsZSAoYyAhPSBFT0YgJiYgYyAhPSAnXG4nKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgIH0KKyAgICB9CiAKICAgICAvKiBDaGVjayBmb3IgRU9GIGFuZCBlcnJvcnMgbm93ICovCiAgICAgaWYgKGMgPT0gRU9GKSB7CkBAIC0xNDc3LDMxICsxNTA5LDQxIEBACiAgICAgbm9uYXNjaWkgPSAwOwogICAgIGlmIChpc19wb3RlbnRpYWxfaWRlbnRpZmllcl9zdGFydChjKSkgewogICAgICAgICAvKiBQcm9jZXNzIGIiIiwgciIiLCB1IiIsIGJyIiIgYW5kIHJiIiIgKi8KLSAgICAgICAgaW50IHNhd19iID0gMCwgc2F3X3IgPSAwLCBzYXdfdSA9IDA7CisgICAgICAgIGludCBzYXdfYiA9IDAsIHNhd19yID0gMCwgc2F3X3UgPSAwLCBzYXdfZiA9IDA7CiAgICAgICAgIHdoaWxlICgxKSB7Ci0gICAgICAgICAgICBpZiAoIShzYXdfYiB8fCBzYXdfdSkgJiYgKGMgPT0gJ2InIHx8IGMgPT0gJ0InKSkKKyAgICAgICAgICAgIGlmICghKHNhd19iIHx8IHNhd191IHx8IHNhd19mKSAmJiAoYyA9PSAnYicgfHwgYyA9PSAnQicpKQogICAgICAgICAgICAgICAgIHNhd19iID0gMTsKICAgICAgICAgICAgIC8qIFNpbmNlIHRoaXMgaXMgYSBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBzdXBwb3J0IGxpdGVyYWwgd2UgZG9uJ3QKICAgICAgICAgICAgICAgIHdhbnQgdG8gc3VwcG9ydCBpdCBpbiBhcmJpdHJhcnkgb3JkZXIgbGlrZSBieXRlIGxpdGVyYWxzLiAqLwotICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfYiB8fCBzYXdfdSB8fCBzYXdfcikgJiYgKGMgPT0gJ3UnIHx8IGMgPT0gJ1UnKSkKKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2IgfHwgc2F3X3UgfHwgc2F3X3IgfHwgc2F3X2YpCisgICAgICAgICAgICAgICAgICAgICAmJiAoYyA9PSAndSd8fCBjID09ICdVJykpIHsKICAgICAgICAgICAgICAgICBzYXdfdSA9IDE7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICAvKiB1ciIiIGFuZCBydSIiIGFyZSBub3Qgc3VwcG9ydGVkICovCi0gICAgICAgICAgICBlbHNlIGlmICghKHNhd19yIHx8IHNhd191KSAmJiAoYyA9PSAncicgfHwgYyA9PSAnUicpKQorICAgICAgICAgICAgZWxzZSBpZiAoIShzYXdfciB8fCBzYXdfdSkgJiYgKGMgPT0gJ3InIHx8IGMgPT0gJ1InKSkgewogICAgICAgICAgICAgICAgIHNhd19yID0gMTsKLSAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKCEoc2F3X2YgfHwgc2F3X2IgfHwgc2F3X3UpICYmIChjID09ICdmJyB8fCBjID09ICdGJykpIHsKKyAgICAgICAgICAgICAgICBzYXdfZiA9IDE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICciJyB8fCBjID09ICdcJycpCisgICAgICAgICAgICBpZiAoYyA9PSAnIicgfHwgYyA9PSAnXCcnKSB7CiAgICAgICAgICAgICAgICAgZ290byBsZXR0ZXJfcXVvdGU7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgd2hpbGUgKGlzX3BvdGVudGlhbF9pZGVudGlmaWVyX2NoYXIoYykpIHsKLSAgICAgICAgICAgIGlmIChjID49IDEyOCkKKyAgICAgICAgICAgIGlmIChjID49IDEyOCkgewogICAgICAgICAgICAgICAgIG5vbmFzY2lpID0gMTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKICAgICAgICAgfQogICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgIGlmIChub25hc2NpaSAmJiAhdmVyaWZ5X2lkZW50aWZpZXIodG9rKSkKKyAgICAgICAgaWYgKG5vbmFzY2lpICYmICF2ZXJpZnlfaWRlbnRpZmllcih0b2spKSB7CiAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgfQogICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICpwX2VuZCA9IHRvay0+Y3VyOwogCkBAIC0xNTEwLDEwICsxNTUyLDEyIEBACiAgICAgICAgICAgICAvKiBDdXJyZW50IHRva2VuIGxlbmd0aCBpcyA1LiAqLwogICAgICAgICAgICAgaWYgKHRvay0+YXN5bmNfZGVmKSB7CiAgICAgICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGFuICdhc3luYyBkZWYnIGZ1bmN0aW9uLiAqLwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICBpZiAobWVtY21wKHRvay0+c3RhcnQsICJhc3luYyIsIDUpID09IDApIHsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEFTWU5DOwotICAgICAgICAgICAgICAgIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImF3YWl0IiwgNSkgPT0gMCkKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgaWYgKG1lbWNtcCh0b2stPnN0YXJ0LCAiYXdhaXQiLCA1KSA9PSAwKSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBBV0FJVDsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChtZW1jbXAodG9rLT5zdGFydCwgImFzeW5jIiwgNSkgPT0gMCkgewogICAgICAgICAgICAgICAgIC8qIFRoZSBjdXJyZW50IHRva2VuIGlzICdhc3luYycuCkBAIC0xNTQ2LDggKzE1OTAsOSBAQAogICAgIC8qIE5ld2xpbmUgKi8KICAgICBpZiAoYyA9PSAnXG4nKSB7CiAgICAgICAgIHRvay0+YXRib2wgPSAxOwotICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKQorICAgICAgICBpZiAoYmxhbmtsaW5lIHx8IHRvay0+bGV2ZWwgPiAwKSB7CiAgICAgICAgICAgICBnb3RvIG5leHRsaW5lOworICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXIgLSAxOyAvKiBMZWF2ZSAnXG4nIG91dCBvZiB0aGUgc3RyaW5nICovCiAgICAgICAgIHRvay0+Y29udF9saW5lID0gMDsKQEAgLTE1NzAsMTEgKzE2MTUsMTMgQEAKICAgICAgICAgICAgICAgICAqcF9zdGFydCA9IHRvay0+c3RhcnQ7CiAgICAgICAgICAgICAgICAgKnBfZW5kID0gdG9rLT5jdXI7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVMTElQU0lTOwotICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCAnLicpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwogICAgICAgICB9CiAgICAgICAgICpwX3N0YXJ0ID0gdG9rLT5zdGFydDsKQEAgLTE1ODcsNjQgKzE2MzQsOTQgQEAKICAgICAgICAgaWYgKGMgPT0gJzAnKSB7CiAgICAgICAgICAgICAvKiBIZXgsIG9jdGFsIG9yIGJpbmFyeSAtLSBtYXliZS4gKi8KICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgIGlmIChjID09ICcuJykKLSAgICAgICAgICAgICAgICBnb3RvIGZyYWN0aW9uOwotICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQotICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OwogICAgICAgICAgICAgaWYgKGMgPT0gJ3gnIHx8IGMgPT0gJ1gnKSB7Ci0KICAgICAgICAgICAgICAgICAvKiBIZXggKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKCFpc3hkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOwotICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOwotICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB9IHdoaWxlIChpc3hkaWdpdChjKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09ICdfJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmICghaXN4ZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYyk7CisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzeGRpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICdfJyk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChjID09ICdvJyB8fCBjID09ICdPJykgewogICAgICAgICAgICAgICAgIC8qIE9jdGFsICovCiAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIGlmIChjIDwgJzAnIHx8IGMgPj0gJzgnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKCcwJyA8PSBjICYmIGMgPCAnOCcpOworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBpZiAoYyA8ICcwJyB8fCBjID49ICc4JykgeworICAgICAgICAgICAgICAgICAgICAgICAgdG9rLT5kb25lID0gRV9UT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGRvIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgfSB3aGlsZSAoJzAnIDw9IGMgJiYgYyA8ICc4Jyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnYicgfHwgYyA9PSAnQicpIHsKICAgICAgICAgICAgICAgICAvKiBCaW5hcnkgKi8KICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7Ci0gICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47Ci0gICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47Ci0gICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgIH0gd2hpbGUgKGMgPT0gJzAnIHx8IGMgPT0gJzEnKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gJ18nKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgIT0gJzAnICYmIGMgIT0gJzEnKSB7CisgICAgICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX1RPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZG8geworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOworICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChjID09ICcwJyB8fCBjID09ICcxJyk7CisgICAgICAgICAgICAgICAgfSB3aGlsZSAoYyA9PSAnXycpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgaW50IG5vbnplcm8gPSAwOwogICAgICAgICAgICAgICAgIC8qIG1heWJlIG9sZC1zdHlsZSBvY3RhbDsgYyBpcyBmaXJzdCBjaGFyIG9mIGl0ICovCiAgICAgICAgICAgICAgICAgLyogaW4gYW55IGNhc2UsIGFsbG93ICcwJyBhcyBhIGxpdGVyYWwgKi8KLSAgICAgICAgICAgICAgICB3aGlsZSAoYyA9PSAnMCcpCi0gICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaXNkaWdpdChjKSkgewotICAgICAgICAgICAgICAgICAgICBub256ZXJvID0gMTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoMSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXycpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICghaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIGlmIChjICE9ICcwJykgeworICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoYyA9PSAnLicpCisgICAgICAgICAgICAgICAgaWYgKGlzZGlnaXQoYykpIHsKKyAgICAgICAgICAgICAgICAgICAgbm9uemVybyA9IDE7CisgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfZGVjaW1hbF90YWlsKHRvayk7CisgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZnJhY3Rpb247Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2UnIHx8IGMgPT0gJ0UnKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhwb25lbnQ7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoYyA9PSAnaicgfHwgYyA9PSAnSicpCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKSB7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gaW1hZ2luYXJ5OworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBlbHNlIGlmIChub256ZXJvKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIE9sZC1zdHlsZSBvY3RhbDogbm93IGRpc2FsbG93ZWQuICovCiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfVE9LRU47CiAgICAgICAgICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CkBAIC0xNjUzLDE3ICsxNzMwLDIyIEBACiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAvKiBEZWNpbWFsICovCi0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgfSB3aGlsZSAoaXNkaWdpdChjKSk7CisgICAgICAgICAgICBjID0gdG9rX2RlY2ltYWxfdGFpbCh0b2spOworICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgIHJldHVybiBFUlJPUlRPS0VOOworICAgICAgICAgICAgfQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIC8qIEFjY2VwdCBmbG9hdGluZyBwb2ludCBudW1iZXJzLiAqLwogICAgICAgICAgICAgICAgIGlmIChjID09ICcuJykgeworICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGZyYWN0aW9uOgogICAgICAgICAgICAgICAgICAgICAvKiBGcmFjdGlvbiAqLwotICAgICAgICAgICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICAgICAgICAgIH0gd2hpbGUgKGlzZGlnaXQoYykpOworICAgICAgICAgICAgICAgICAgICBpZiAoaXNkaWdpdChjKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChjID09IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBpZiAoYyA9PSAnZScgfHwgYyA9PSAnRScpIHsKICAgICAgICAgICAgICAgICAgICAgaW50IGU7CkBAIC0xNjg1LDE0ICsxNzY3LDE2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAqcF9lbmQgPSB0b2stPmN1cjsKICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVU1CRVI7CiAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgZG8gewotICAgICAgICAgICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwotICAgICAgICAgICAgICAgICAgICB9IHdoaWxlIChpc2RpZ2l0KGMpKTsKKyAgICAgICAgICAgICAgICAgICAgYyA9IHRva19kZWNpbWFsX3RhaWwodG9rKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGMgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKGMgPT0gJ2onIHx8IGMgPT0gJ0onKQorICAgICAgICAgICAgICAgIGlmIChjID09ICdqJyB8fCBjID09ICdKJykgewogICAgICAgICAgICAgICAgICAgICAvKiBJbWFnaW5hcnkgcGFydCAqLwogICAgICAgICBpbWFnaW5hcnk6CiAgICAgICAgICAgICAgICAgICAgIGMgPSB0b2tfbmV4dGModG9rKTsKKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgdG9rX2JhY2t1cCh0b2ssIGMpOwpAQCAtMTcxMiwyMiArMTc5NiwyNyBAQAogICAgICAgICBjID0gdG9rX25leHRjKHRvayk7CiAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICBjID0gdG9rX25leHRjKHRvayk7Ci0gICAgICAgICAgICBpZiAoYyA9PSBxdW90ZSkKKyAgICAgICAgICAgIGlmIChjID09IHF1b3RlKSB7CiAgICAgICAgICAgICAgICAgcXVvdGVfc2l6ZSA9IDM7Ci0gICAgICAgICAgICBlbHNlCisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSA9IDE7ICAgICAvKiBlbXB0eSBzdHJpbmcgZm91bmQgKi8KKyAgICAgICAgICAgIH0KICAgICAgICAgfQotICAgICAgICBpZiAoYyAhPSBxdW90ZSkKKyAgICAgICAgaWYgKGMgIT0gcXVvdGUpIHsKICAgICAgICAgICAgIHRva19iYWNrdXAodG9rLCBjKTsKKyAgICAgICAgfQogCiAgICAgICAgIC8qIEdldCByZXN0IG9mIHN0cmluZyAqLwogICAgICAgICB3aGlsZSAoZW5kX3F1b3RlX3NpemUgIT0gcXVvdGVfc2l6ZSkgewogICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOwogICAgICAgICAgICAgaWYgKGMgPT0gRU9GKSB7Ci0gICAgICAgICAgICAgICAgaWYgKHF1b3RlX3NpemUgPT0gMykKKyAgICAgICAgICAgICAgICBpZiAocXVvdGVfc2l6ZSA9PSAzKSB7CiAgICAgICAgICAgICAgICAgICAgIHRvay0+ZG9uZSA9IEVfRU9GUzsKLSAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgICAgICB0b2stPmRvbmUgPSBFX0VPTFM7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIHRvay0+Y3VyID0gdG9rLT5pbnA7CiAgICAgICAgICAgICAgICAgcmV0dXJuIEVSUk9SVE9LRU47CiAgICAgICAgICAgICB9CkBAIC0xNzM2LDEyICsxODI1LDE0IEBACiAgICAgICAgICAgICAgICAgdG9rLT5jdXIgPSB0b2stPmlucDsKICAgICAgICAgICAgICAgICByZXR1cm4gRVJST1JUT0tFTjsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChjID09IHF1b3RlKQorICAgICAgICAgICAgaWYgKGMgPT0gcXVvdGUpIHsKICAgICAgICAgICAgICAgICBlbmRfcXVvdGVfc2l6ZSArPSAxOworICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgZW5kX3F1b3RlX3NpemUgPSAwOwotICAgICAgICAgICAgICAgIGlmIChjID09ICdcXCcpCi0gICAgICAgICAgICAgICAgYyA9IHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICBpZiAoYyA9PSAnXFwnKSB7CisgICAgICAgICAgICAgICAgICAgIHRva19uZXh0Yyh0b2spOyAgLyogc2tpcCBlc2NhcGVkIGNoYXIgKi8KKyAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtMTc3MSw3ICsxODYyLDggQEAKICAgICAgICAgICAgIGludCB0b2tlbjMgPSBQeVRva2VuX1RocmVlQ2hhcnMoYywgYzIsIGMzKTsKICAgICAgICAgICAgIGlmICh0b2tlbjMgIT0gT1ApIHsKICAgICAgICAgICAgICAgICB0b2tlbiA9IHRva2VuMzsKLSAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB0b2tfYmFja3VwKHRvaywgYzMpOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgKnBfc3RhcnQgPSB0b2stPnN0YXJ0OwpkaWZmIC0tZ2l0IGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyBiL1Byb2dyYW1zL19mcmVlemVfaW1wb3J0bGliLmMKaW5kZXggMDc5Mzk4NC4uMTA2OTk2NiAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYworKysgYi9Qcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jCkBAIC01OCw3ICs1OCw3IEBACiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY2Fubm90IGZzdGF0ICclcydcbiIsIGlucGF0aCk7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQotICAgIHRleHRfc2l6ZSA9IHN0YXR1cy5zdF9zaXplOworICAgIHRleHRfc2l6ZSA9IChzaXplX3Qpc3RhdHVzLnN0X3NpemU7CiAgICAgdGV4dCA9IChjaGFyICopIG1hbGxvYyh0ZXh0X3NpemUgKyAxKTsKICAgICBpZiAodGV4dCA9PSBOVUxMKSB7CiAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiY291bGQgbm90IGFsbG9jYXRlICVsZCBieXRlc1xuIiwgKGxvbmcpIHRleHRfc2l6ZSk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMgYi9Qcm9ncmFtcy9fdGVzdGVtYmVkLmMKaW5kZXggYWI2YThjNy4uMzk2ODM5OSAxMDA2NDQKLS0tIGEvUHJvZ3JhbXMvX3Rlc3RlbWJlZC5jCisrKyBiL1Byb2dyYW1zL190ZXN0ZW1iZWQuYwpAQCAtNDEsNyArNDEsNyBAQAogI2VuZGlmCiAgICAgaW50IGksIGo7CiAKLSAgICBmb3IgKGk9MDsgaTwzOyBpKyspIHsKKyAgICBmb3IgKGk9MDsgaTwxNTsgaSsrKSB7CiAgICAgICAgIHByaW50ZigiLS0tIFBhc3MgJWQgLS0tXG4iLCBpKTsKICAgICAgICAgX3Rlc3RlbWJlZF9QeV9Jbml0aWFsaXplKCk7CiAgICAgICAgIG1haW5zdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CmRpZmYgLS1naXQgYS9Qcm9ncmFtcy9weXRob24uYyBiL1Byb2dyYW1zL3B5dGhvbi5jCmluZGV4IDM3YjEwYjguLmE3YWZiYzcgMTAwNjQ0Ci0tLSBhL1Byb2dyYW1zL3B5dGhvbi5jCisrKyBiL1Byb2dyYW1zL3B5dGhvbi5jCkBAIC0yNCw2ICsyNCw5IEBACiAgICAgaW50IGksIHJlczsKICAgICBjaGFyICpvbGRsb2M7CiAKKyAgICAvKiBGb3JjZSBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gYm9vdHN0cmFwIFB5dGhvbiAqLworICAgICh2b2lkKV9QeU1lbV9TZXR1cEFsbG9jYXRvcnMoIm1hbGxvYyIpOworCiAgICAgYXJndl9jb3B5ID0gKHdjaGFyX3QgKiopUHlNZW1fUmF3TWFsbG9jKHNpemVvZih3Y2hhcl90KikgKiAoYXJnYysxKSk7CiAgICAgYXJndl9jb3B5MiA9ICh3Y2hhcl90ICoqKVB5TWVtX1Jhd01hbGxvYyhzaXplb2Yod2NoYXJfdCopICogKGFyZ2MrMSkpOwogICAgIGlmICghYXJndl9jb3B5IHx8ICFhcmd2X2NvcHkyKSB7CkBAIC02Miw3ICs2NSwxMyBAQAogCiAgICAgc2V0bG9jYWxlKExDX0FMTCwgb2xkbG9jKTsKICAgICBQeU1lbV9SYXdGcmVlKG9sZGxvYyk7CisKICAgICByZXMgPSBQeV9NYWluKGFyZ2MsIGFyZ3ZfY29weSk7CisKKyAgICAvKiBGb3JjZSBhZ2FpbiBtYWxsb2MoKSBhbGxvY2F0b3IgdG8gcmVsZWFzZSBtZW1vcnkgYmxvY2tzIGFsbG9jYXRlZAorICAgICAgIGJlZm9yZSBQeV9NYWluKCkgKi8KKyAgICAodm9pZClfUHlNZW1fU2V0dXBBbGxvY2F0b3JzKCJtYWxsb2MiKTsKKwogICAgIGZvciAoaSA9IDA7IGkgPCBhcmdjOyBpKyspIHsKICAgICAgICAgUHlNZW1fUmF3RnJlZShhcmd2X2NvcHkyW2ldKTsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vUHl0aG9uLWFzdC5jIGIvUHl0aG9uL1B5dGhvbi1hc3QuYwppbmRleCBhZDUzYmEzNS4uZTA2MDdiYSAxMDA2NDQKLS0tIGEvUHl0aG9uL1B5dGhvbi1hc3QuYworKysgYi9QeXRob24vUHl0aG9uLWFzdC5jCkBAIC04Niw2ICs4NiwxNSBAQAogICAgICJvcCIsCiAgICAgInZhbHVlIiwKIH07CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpBbm5Bc3NpZ25fdHlwZTsKK19QeV9JREVOVElGSUVSKGFubm90YXRpb24pOworX1B5X0lERU5USUZJRVIoc2ltcGxlKTsKK3N0YXRpYyBjaGFyICpBbm5Bc3NpZ25fZmllbGRzW109eworICAgICJ0YXJnZXQiLAorICAgICJhbm5vdGF0aW9uIiwKKyAgICAidmFsdWUiLAorICAgICJzaW1wbGUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkZvcl90eXBlOwogX1B5X0lERU5USUZJRVIoaXRlcik7CiBfUHlfSURFTlRJRklFUihvcmVsc2UpOwpAQCAtMjg1LDYgKzI5NCwxOCBAQAogc3RhdGljIGNoYXIgKlN0cl9maWVsZHNbXT17CiAgICAgInMiLAogfTsKK3N0YXRpYyBQeVR5cGVPYmplY3QgKkZvcm1hdHRlZFZhbHVlX3R5cGU7CitfUHlfSURFTlRJRklFUihjb252ZXJzaW9uKTsKK19QeV9JREVOVElGSUVSKGZvcm1hdF9zcGVjKTsKK3N0YXRpYyBjaGFyICpGb3JtYXR0ZWRWYWx1ZV9maWVsZHNbXT17CisgICAgInZhbHVlIiwKKyAgICAiY29udmVyc2lvbiIsCisgICAgImZvcm1hdF9zcGVjIiwKK307CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpKb2luZWRTdHJfdHlwZTsKK3N0YXRpYyBjaGFyICpKb2luZWRTdHJfZmllbGRzW109eworICAgICJ2YWx1ZXMiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkJ5dGVzX3R5cGU7CiBzdGF0aWMgY2hhciAqQnl0ZXNfZmllbGRzW109ewogICAgICJzIiwKQEAgLTI5NCw2ICszMTUsMTAgQEAKICAgICAidmFsdWUiLAogfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkVsbGlwc2lzX3R5cGU7CitzdGF0aWMgUHlUeXBlT2JqZWN0ICpDb25zdGFudF90eXBlOworc3RhdGljIGNoYXIgKkNvbnN0YW50X2ZpZWxkc1tdPXsKKyAgICAidmFsdWUiLAorfTsKIHN0YXRpYyBQeVR5cGVPYmplY3QgKkF0dHJpYnV0ZV90eXBlOwogX1B5X0lERU5USUZJRVIoYXR0cik7CiBfUHlfSURFTlRJRklFUihjdHgpOwpAQCAtNDEwLDEwICs0MzUsMTIgQEAKIHN0YXRpYyBQeVR5cGVPYmplY3QgKmNvbXByZWhlbnNpb25fdHlwZTsKIHN0YXRpYyBQeU9iamVjdCogYXN0Mm9ial9jb21wcmVoZW5zaW9uKHZvaWQqKTsKIF9QeV9JREVOVElGSUVSKGlmcyk7CitfUHlfSURFTlRJRklFUihpc19hc3luYyk7CiBzdGF0aWMgY2hhciAqY29tcHJlaGVuc2lvbl9maWVsZHNbXT17CiAgICAgInRhcmdldCIsCiAgICAgIml0ZXIiLAogICAgICJpZnMiLAorICAgICJpc19hc3luYyIsCiB9Owogc3RhdGljIFB5VHlwZU9iamVjdCAqZXhjZXB0aGFuZGxlcl90eXBlOwogc3RhdGljIGNoYXIgKmV4Y2VwdGhhbmRsZXJfYXR0cmlidXRlc1tdID0gewpAQCAtNDUwLDcgKzQ3Nyw2IEBACiAgICAgImNvbF9vZmZzZXQiLAogfTsKIF9QeV9JREVOVElGSUVSKGFyZyk7Ci1fUHlfSURFTlRJRklFUihhbm5vdGF0aW9uKTsKIHN0YXRpYyBjaGFyICphcmdfZmllbGRzW109ewogICAgICJhcmciLAogICAgICJhbm5vdGF0aW9uIiwKQEAgLTY5Nyw2ICs3MjMsNyBAQAogICAgIHJldHVybiAoUHlPYmplY3QqKW87CiB9CiAjZGVmaW5lIGFzdDJvYmpfc2luZ2xldG9uIGFzdDJvYmpfb2JqZWN0CisjZGVmaW5lIGFzdDJvYmpfY29uc3RhbnQgYXN0Mm9ial9vYmplY3QKICNkZWZpbmUgYXN0Mm9ial9pZGVudGlmaWVyIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfc3RyaW5nIGFzdDJvYmpfb2JqZWN0CiAjZGVmaW5lIGFzdDJvYmpfYnl0ZXMgYXN0Mm9ial9vYmplY3QKQEAgLTczNCw2ICs3NjEsMTkgQEAKICAgICByZXR1cm4gMDsKIH0KIAorc3RhdGljIGludCBvYmoyYXN0X2NvbnN0YW50KFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKK3sKKyAgICBpZiAob2JqKSB7CisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGFyZW5hLCBvYmopIDwgMCkgeworICAgICAgICAgICAgKm91dCA9IE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgUHlfSU5DUkVGKG9iaik7CisgICAgfQorICAgICpvdXQgPSBvYmo7CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQgb2JqMmFzdF9pZGVudGlmaWVyKFB5T2JqZWN0KiBvYmosIFB5T2JqZWN0Kiogb3V0LCBQeUFyZW5hKiBhcmVuYSkKIHsKICAgICBpZiAoIVB5VW5pY29kZV9DaGVja0V4YWN0KG9iaikgJiYgb2JqICE9IFB5X05vbmUpIHsKQEAgLTc2OSw3ICs4MDksNyBAQAogICAgICAgICByZXR1cm4gMTsKICAgICB9CiAKLSAgICBpID0gKGludClQeUxvbmdfQXNMb25nKG9iaik7CisgICAgaSA9IF9QeUxvbmdfQXNJbnQob2JqKTsKICAgICBpZiAoaSA9PSAtMSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICByZXR1cm4gMTsKICAgICAqb3V0ID0gaTsKQEAgLTg0Myw2ICs4ODMsOCBAQAogICAgIGlmICghQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEF1Z0Fzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBdWdBc3NpZ24iLCBzdG10X3R5cGUsIEF1Z0Fzc2lnbl9maWVsZHMsIDMpOwogICAgIGlmICghQXVnQXNzaWduX3R5cGUpIHJldHVybiAwOworICAgIEFubkFzc2lnbl90eXBlID0gbWFrZV90eXBlKCJBbm5Bc3NpZ24iLCBzdG10X3R5cGUsIEFubkFzc2lnbl9maWVsZHMsIDQpOworICAgIGlmICghQW5uQXNzaWduX3R5cGUpIHJldHVybiAwOwogICAgIEZvcl90eXBlID0gbWFrZV90eXBlKCJGb3IiLCBzdG10X3R5cGUsIEZvcl9maWVsZHMsIDQpOwogICAgIGlmICghRm9yX3R5cGUpIHJldHVybiAwOwogICAgIEFzeW5jRm9yX3R5cGUgPSBtYWtlX3R5cGUoIkFzeW5jRm9yIiwgc3RtdF90eXBlLCBBc3luY0Zvcl9maWVsZHMsIDQpOwpAQCAtOTE3LDYgKzk1OSwxMSBAQAogICAgIGlmICghTnVtX3R5cGUpIHJldHVybiAwOwogICAgIFN0cl90eXBlID0gbWFrZV90eXBlKCJTdHIiLCBleHByX3R5cGUsIFN0cl9maWVsZHMsIDEpOwogICAgIGlmICghU3RyX3R5cGUpIHJldHVybiAwOworICAgIEZvcm1hdHRlZFZhbHVlX3R5cGUgPSBtYWtlX3R5cGUoIkZvcm1hdHRlZFZhbHVlIiwgZXhwcl90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9ybWF0dGVkVmFsdWVfZmllbGRzLCAzKTsKKyAgICBpZiAoIUZvcm1hdHRlZFZhbHVlX3R5cGUpIHJldHVybiAwOworICAgIEpvaW5lZFN0cl90eXBlID0gbWFrZV90eXBlKCJKb2luZWRTdHIiLCBleHByX3R5cGUsIEpvaW5lZFN0cl9maWVsZHMsIDEpOworICAgIGlmICghSm9pbmVkU3RyX3R5cGUpIHJldHVybiAwOwogICAgIEJ5dGVzX3R5cGUgPSBtYWtlX3R5cGUoIkJ5dGVzIiwgZXhwcl90eXBlLCBCeXRlc19maWVsZHMsIDEpOwogICAgIGlmICghQnl0ZXNfdHlwZSkgcmV0dXJuIDA7CiAgICAgTmFtZUNvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIk5hbWVDb25zdGFudCIsIGV4cHJfdHlwZSwKQEAgLTkyNCw2ICs5NzEsOCBAQAogICAgIGlmICghTmFtZUNvbnN0YW50X3R5cGUpIHJldHVybiAwOwogICAgIEVsbGlwc2lzX3R5cGUgPSBtYWtlX3R5cGUoIkVsbGlwc2lzIiwgZXhwcl90eXBlLCBOVUxMLCAwKTsKICAgICBpZiAoIUVsbGlwc2lzX3R5cGUpIHJldHVybiAwOworICAgIENvbnN0YW50X3R5cGUgPSBtYWtlX3R5cGUoIkNvbnN0YW50IiwgZXhwcl90eXBlLCBDb25zdGFudF9maWVsZHMsIDEpOworICAgIGlmICghQ29uc3RhbnRfdHlwZSkgcmV0dXJuIDA7CiAgICAgQXR0cmlidXRlX3R5cGUgPSBtYWtlX3R5cGUoIkF0dHJpYnV0ZSIsIGV4cHJfdHlwZSwgQXR0cmlidXRlX2ZpZWxkcywgMyk7CiAgICAgaWYgKCFBdHRyaWJ1dGVfdHlwZSkgcmV0dXJuIDA7CiAgICAgU3Vic2NyaXB0X3R5cGUgPSBtYWtlX3R5cGUoIlN1YnNjcmlwdCIsIGV4cHJfdHlwZSwgU3Vic2NyaXB0X2ZpZWxkcywgMyk7CkBAIC0xMTAxLDcgKzExNTAsNyBAQAogICAgIE5vdEluX3NpbmdsZXRvbiA9IFB5VHlwZV9HZW5lcmljTmV3KE5vdEluX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgIGlmICghTm90SW5fc2luZ2xldG9uKSByZXR1cm4gMDsKICAgICBjb21wcmVoZW5zaW9uX3R5cGUgPSBtYWtlX3R5cGUoImNvbXByZWhlbnNpb24iLCAmQVNUX3R5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXByZWhlbnNpb25fZmllbGRzLCAzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcHJlaGVuc2lvbl9maWVsZHMsIDQpOwogICAgIGlmICghY29tcHJlaGVuc2lvbl90eXBlKSByZXR1cm4gMDsKICAgICBpZiAoIWFkZF9hdHRyaWJ1dGVzKGNvbXByZWhlbnNpb25fdHlwZSwgTlVMTCwgMCkpIHJldHVybiAwOwogICAgIGV4Y2VwdGhhbmRsZXJfdHlwZSA9IG1ha2VfdHlwZSgiZXhjZXB0aGFuZGxlciIsICZBU1RfdHlwZSwgTlVMTCwgMCk7CkBAIC0xMzcwLDYgKzE0MTksMzQgQEAKIH0KIAogc3RtdF90eQorQW5uQXNzaWduKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGFubm90YXRpb24sIGV4cHJfdHkgdmFsdWUsIGludCBzaW1wbGUsIGludAorICAgICAgICAgIGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIHN0bXRfdHkgcDsKKyAgICBpZiAoIXRhcmdldCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWVsZCB0YXJnZXQgaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgaWYgKCFhbm5vdGF0aW9uKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIGFubm90YXRpb24gaXMgcmVxdWlyZWQgZm9yIEFubkFzc2lnbiIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChzdG10X3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBBbm5Bc3NpZ25fa2luZDsKKyAgICBwLT52LkFubkFzc2lnbi50YXJnZXQgPSB0YXJnZXQ7CisgICAgcC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiA9IGFubm90YXRpb247CisgICAgcC0+di5Bbm5Bc3NpZ24udmFsdWUgPSB2YWx1ZTsKKyAgICBwLT52LkFubkFzc2lnbi5zaW1wbGUgPSBzaW1wbGU7CisgICAgcC0+bGluZW5vID0gbGluZW5vOworICAgIHAtPmNvbF9vZmZzZXQgPSBjb2xfb2Zmc2V0OworICAgIHJldHVybiBwOworfQorCitzdG10X3R5CiBGb3IoZXhwcl90eSB0YXJnZXQsIGV4cHJfdHkgaXRlciwgYXNkbF9zZXEgKiBib2R5LCBhc2RsX3NlcSAqIG9yZWxzZSwgaW50CiAgICAgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCiB7CkBAIC0yMDYzLDYgKzIxNDAsNDIgQEAKIH0KIAogZXhwcl90eQorRm9ybWF0dGVkVmFsdWUoZXhwcl90eSB2YWx1ZSwgaW50IGNvbnZlcnNpb24sIGV4cHJfdHkgZm9ybWF0X3NwZWMsIGludCBsaW5lbm8sCisgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIGlmICghdmFsdWUpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1ZhbHVlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmllbGQgdmFsdWUgaXMgcmVxdWlyZWQgZm9yIEZvcm1hdHRlZFZhbHVlIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgICBwID0gKGV4cHJfdHkpUHlBcmVuYV9NYWxsb2MoYXJlbmEsIHNpemVvZigqcCkpOworICAgIGlmICghcCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgcC0+a2luZCA9IEZvcm1hdHRlZFZhbHVlX2tpbmQ7CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSA9IHZhbHVlOworICAgIHAtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbiA9IGNvbnZlcnNpb247CisgICAgcC0+di5Gb3JtYXR0ZWRWYWx1ZS5mb3JtYXRfc3BlYyA9IGZvcm1hdF9zcGVjOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQorSm9pbmVkU3RyKGFzZGxfc2VxICogdmFsdWVzLCBpbnQgbGluZW5vLCBpbnQgY29sX29mZnNldCwgUHlBcmVuYSAqYXJlbmEpCit7CisgICAgZXhwcl90eSBwOworICAgIHAgPSAoZXhwcl90eSlQeUFyZW5hX01hbGxvYyhhcmVuYSwgc2l6ZW9mKCpwKSk7CisgICAgaWYgKCFwKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwLT5raW5kID0gSm9pbmVkU3RyX2tpbmQ7CisgICAgcC0+di5Kb2luZWRTdHIudmFsdWVzID0gdmFsdWVzOworICAgIHAtPmxpbmVubyA9IGxpbmVubzsKKyAgICBwLT5jb2xfb2Zmc2V0ID0gY29sX29mZnNldDsKKyAgICByZXR1cm4gcDsKK30KKworZXhwcl90eQogQnl0ZXMoYnl0ZXMgcywgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGV4cHJfdHkgcDsKQEAgLTIxMTQsNiArMjIyNywyNSBAQAogfQogCiBleHByX3R5CitDb25zdGFudChjb25zdGFudCB2YWx1ZSwgaW50IGxpbmVubywgaW50IGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGV4cHJfdHkgcDsKKyAgICBpZiAoIXZhbHVlKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgImZpZWxkIHZhbHVlIGlzIHJlcXVpcmVkIGZvciBDb25zdGFudCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcCA9IChleHByX3R5KVB5QXJlbmFfTWFsbG9jKGFyZW5hLCBzaXplb2YoKnApKTsKKyAgICBpZiAoIXApCisgICAgICAgIHJldHVybiBOVUxMOworICAgIHAtPmtpbmQgPSBDb25zdGFudF9raW5kOworICAgIHAtPnYuQ29uc3RhbnQudmFsdWUgPSB2YWx1ZTsKKyAgICBwLT5saW5lbm8gPSBsaW5lbm87CisgICAgcC0+Y29sX29mZnNldCA9IGNvbF9vZmZzZXQ7CisgICAgcmV0dXJuIHA7Cit9CisKK2V4cHJfdHkKIEF0dHJpYnV0ZShleHByX3R5IHZhbHVlLCBpZGVudGlmaWVyIGF0dHIsIGV4cHJfY29udGV4dF90eSBjdHgsIGludCBsaW5lbm8sIGludAogICAgICAgICAgIGNvbF9vZmZzZXQsIFB5QXJlbmEgKmFyZW5hKQogewpAQCAtMjMxNSw3ICsyNDQ3LDggQEAKIH0KIAogY29tcHJlaGVuc2lvbl90eQotY29tcHJlaGVuc2lvbihleHByX3R5IHRhcmdldCwgZXhwcl90eSBpdGVyLCBhc2RsX3NlcSAqIGlmcywgUHlBcmVuYSAqYXJlbmEpCitjb21wcmVoZW5zaW9uKGV4cHJfdHkgdGFyZ2V0LCBleHByX3R5IGl0ZXIsIGFzZGxfc2VxICogaWZzLCBpbnQgaXNfYXN5bmMsCisgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIGNvbXByZWhlbnNpb25fdHkgcDsKICAgICBpZiAoIXRhcmdldCkgewpAQCAtMjMzNCw2ICsyNDY3LDcgQEAKICAgICBwLT50YXJnZXQgPSB0YXJnZXQ7CiAgICAgcC0+aXRlciA9IGl0ZXI7CiAgICAgcC0+aWZzID0gaWZzOworICAgIHAtPmlzX2FzeW5jID0gaXNfYXN5bmM7CiAgICAgcmV0dXJuIHA7CiB9CiAKQEAgLTI2NDgsNiArMjc4MiwzMCBAQAogICAgICAgICAgICAgZ290byBmYWlsZWQ7CiAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CiAgICAgICAgIGJyZWFrOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEFubkFzc2lnbl90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi50YXJnZXQpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF90YXJnZXQsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkFubkFzc2lnbi5hbm5vdGF0aW9uKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfYW5ub3RhdGlvbiwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIHZhbHVlID0gYXN0Mm9ial9leHByKG8tPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuQW5uQXNzaWduLnNpbXBsZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3NpbXBsZSwgdmFsdWUpID09IC0xKQorICAgICAgICAgICAgZ290byBmYWlsZWQ7CisgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRm9yX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEZvcl90eXBlLCBOVUxMLCBOVUxMKTsKICAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOwpAQCAtMzE2NCw2ICszMzIyLDM0IEBACiAgICAgICAgICAgICBnb3RvIGZhaWxlZDsKICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhGb3JtYXR0ZWRWYWx1ZV90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfdmFsdWUsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfaW50KG8tPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbik7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2NvbnZlcnNpb24sIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfZXhwcihvLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgaWYgKCF2YWx1ZSkgZ290byBmYWlsZWQ7CisgICAgICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfZm9ybWF0X3NwZWMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhKb2luZWRTdHJfdHlwZSwgTlVMTCwgTlVMTCk7CisgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKKyAgICAgICAgdmFsdWUgPSBhc3Qyb2JqX2xpc3Qoby0+di5Kb2luZWRTdHIudmFsdWVzLCBhc3Qyb2JqX2V4cHIpOworICAgICAgICBpZiAoIXZhbHVlKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgaWYgKF9QeU9iamVjdF9TZXRBdHRySWQocmVzdWx0LCAmUHlJZF92YWx1ZXMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgICAgICBicmVhazsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6CiAgICAgICAgIHJlc3VsdCA9IFB5VHlwZV9HZW5lcmljTmV3KEJ5dGVzX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zMTg2LDYgKzMzNzIsMTUgQEAKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoRWxsaXBzaXNfdHlwZSwgTlVMTCwgTlVMTCk7CiAgICAgICAgIGlmICghcmVzdWx0KSBnb3RvIGZhaWxlZDsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXN1bHQgPSBQeVR5cGVfR2VuZXJpY05ldyhDb25zdGFudF90eXBlLCBOVUxMLCBOVUxMKTsKKyAgICAgICAgaWYgKCFyZXN1bHQpIGdvdG8gZmFpbGVkOworICAgICAgICB2YWx1ZSA9IGFzdDJvYmpfY29uc3RhbnQoby0+di5Db25zdGFudC52YWx1ZSk7CisgICAgICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX3ZhbHVlLCB2YWx1ZSkgPT0gLTEpCisgICAgICAgICAgICBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKICAgICAgICAgcmVzdWx0ID0gUHlUeXBlX0dlbmVyaWNOZXcoQXR0cmlidXRlX3R5cGUsIE5VTEwsIE5VTEwpOwogICAgICAgICBpZiAoIXJlc3VsdCkgZ290byBmYWlsZWQ7CkBAIC0zNTMxLDYgKzM3MjYsMTEgQEAKICAgICBpZiAoX1B5T2JqZWN0X1NldEF0dHJJZChyZXN1bHQsICZQeUlkX2lmcywgdmFsdWUpID09IC0xKQogICAgICAgICBnb3RvIGZhaWxlZDsKICAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIHZhbHVlID0gYXN0Mm9ial9pbnQoby0+aXNfYXN5bmMpOworICAgIGlmICghdmFsdWUpIGdvdG8gZmFpbGVkOworICAgIGlmIChfUHlPYmplY3RfU2V0QXR0cklkKHJlc3VsdCwgJlB5SWRfaXNfYXN5bmMsIHZhbHVlKSA9PSAtMSkKKyAgICAgICAgZ290byBmYWlsZWQ7CisgICAgUHlfREVDUkVGKHZhbHVlKTsKICAgICByZXR1cm4gcmVzdWx0OwogZmFpbGVkOgogICAgIFB5X1hERUNSRUYodmFsdWUpOwpAQCAtNDQ1OCw2ICs0NjU4LDY0IEBACiAgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUFubkFzc2lnbl90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgZXhwcl90eSB0YXJnZXQ7CisgICAgICAgIGV4cHJfdHkgYW5ub3RhdGlvbjsKKyAgICAgICAgZXhwcl90eSB2YWx1ZTsKKyAgICAgICAgaW50IHNpbXBsZTsKKworICAgICAgICBpZiAoX1B5T2JqZWN0X0hhc0F0dHJJZChvYmosICZQeUlkX3RhcmdldCkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdGFyZ2V0KTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdGFyZ2V0LCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInRhcmdldFwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbikpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfYW5ub3RhdGlvbik7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKHRtcCwgJmFubm90YXRpb24sIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiYW5ub3RhdGlvblwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZ2YWx1ZSwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICB2YWx1ZSA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9zaW1wbGUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3NpbXBsZSk7CisgICAgICAgICAgICBpZiAodG1wID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmc2ltcGxlLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZXF1aXJlZCBmaWVsZCBcInNpbXBsZVwiIG1pc3NpbmcgZnJvbSBBbm5Bc3NpZ24iKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBBbm5Bc3NpZ24odGFyZ2V0LCBhbm5vdGF0aW9uLCB2YWx1ZSwgc2ltcGxlLCBsaW5lbm8sIGNvbF9vZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilGb3JfdHlwZSk7CiAgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKICAgICAgICAgcmV0dXJuIDE7CkBAIC02MjA1LDYgKzY0NjMsOTAgQEAKICAgICAgICAgaWYgKCpvdXQgPT0gTlVMTCkgZ290byBmYWlsZWQ7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKyAgICBpc2luc3RhbmNlID0gUHlPYmplY3RfSXNJbnN0YW5jZShvYmosIChQeU9iamVjdCopRm9ybWF0dGVkVmFsdWVfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgIGludCBjb252ZXJzaW9uOworICAgICAgICBleHByX3R5IGZvcm1hdF9zcGVjOworCisgICAgICAgIGlmIChfUHlPYmplY3RfSGFzQXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX3ZhbHVlKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2V4cHIodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gRm9ybWF0dGVkVmFsdWUiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9jb252ZXJzaW9uKSkgeworICAgICAgICAgICAgaW50IHJlczsKKyAgICAgICAgICAgIHRtcCA9IF9QeU9iamVjdF9HZXRBdHRySWQob2JqLCAmUHlJZF9jb252ZXJzaW9uKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICByZXMgPSBvYmoyYXN0X2ludCh0bXAsICZjb252ZXJzaW9uLCBhcmVuYSk7CisgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGNvbnZlcnNpb24gPSAwOworICAgICAgICB9CisgICAgICAgIGlmIChleGlzdHNfbm90X25vbmUob2JqLCAmUHlJZF9mb3JtYXRfc3BlYykpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfZm9ybWF0X3NwZWMpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfZXhwcih0bXAsICZmb3JtYXRfc3BlYywgYXJlbmEpOworICAgICAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIFB5X0NMRUFSKHRtcCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBmb3JtYXRfc3BlYyA9IE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEZvcm1hdHRlZFZhbHVlKHZhbHVlLCBjb252ZXJzaW9uLCBmb3JtYXRfc3BlYywgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSk7CisgICAgaWYgKGlzaW5zdGFuY2UgPT0gLTEpIHsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorICAgIGlmIChpc2luc3RhbmNlKSB7CisgICAgICAgIGFzZGxfc2VxKiB2YWx1ZXM7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZXMpKSB7CisgICAgICAgICAgICBpbnQgcmVzOworICAgICAgICAgICAgUHlfc3NpemVfdCBsZW47CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWVzKTsKKyAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBpZiAoIVB5TGlzdF9DaGVjayh0bXApKSB7CisgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIG11c3QgYmUgYSBsaXN0LCBub3QgYSAlLjIwMHMiLCB0bXAtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbGVuID0gUHlMaXN0X0dFVF9TSVpFKHRtcCk7CisgICAgICAgICAgICB2YWx1ZXMgPSBfUHlfYXNkbF9zZXFfbmV3KGxlbiwgYXJlbmEpOworICAgICAgICAgICAgaWYgKHZhbHVlcyA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsdWU7CisgICAgICAgICAgICAgICAgcmVzID0gb2JqMmFzdF9leHByKFB5TGlzdF9HRVRfSVRFTSh0bXAsIGkpLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzICE9IDApIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIGlmIChsZW4gIT0gUHlMaXN0X0dFVF9TSVpFKHRtcCkpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwgIkpvaW5lZFN0ciBmaWVsZCBcInZhbHVlc1wiIGNoYW5nZWQgc2l6ZSBkdXJpbmcgaXRlcmF0aW9uIik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZmFpbGVkOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBhc2RsX3NlcV9TRVQodmFsdWVzLCBpLCB2YWx1ZSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVzXCIgbWlzc2luZyBmcm9tIEpvaW5lZFN0ciIpOworICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgIH0KKyAgICAgICAgKm91dCA9IEpvaW5lZFN0cih2YWx1ZXMsIGxpbmVubywgY29sX29mZnNldCwgYXJlbmEpOworICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilCeXRlc190eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTYyNTksNiArNjYwMSwyOCBAQAogICAgICAgICBpZiAoKm91dCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorICAgIGlzaW5zdGFuY2UgPSBQeU9iamVjdF9Jc0luc3RhbmNlKG9iaiwgKFB5T2JqZWN0KilDb25zdGFudF90eXBlKTsKKyAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgeworICAgICAgICByZXR1cm4gMTsKKyAgICB9CisgICAgaWYgKGlzaW5zdGFuY2UpIHsKKyAgICAgICAgY29uc3RhbnQgdmFsdWU7CisKKyAgICAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF92YWx1ZSkpIHsKKyAgICAgICAgICAgIGludCByZXM7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfR2V0QXR0cklkKG9iaiwgJlB5SWRfdmFsdWUpOworICAgICAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgICAgIHJlcyA9IG9iajJhc3RfY29uc3RhbnQodG1wLCAmdmFsdWUsIGFyZW5hKTsKKyAgICAgICAgICAgIGlmIChyZXMgIT0gMCkgZ290byBmYWlsZWQ7CisgICAgICAgICAgICBQeV9DTEVBUih0bXApOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwidmFsdWVcIiBtaXNzaW5nIGZyb20gQ29uc3RhbnQiKTsKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICB9CisgICAgICAgICpvdXQgPSBDb25zdGFudCh2YWx1ZSwgbGluZW5vLCBjb2xfb2Zmc2V0LCBhcmVuYSk7CisgICAgICAgIGlmICgqb3V0ID09IE5VTEwpIGdvdG8gZmFpbGVkOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CiAgICAgaXNpbnN0YW5jZSA9IFB5T2JqZWN0X0lzSW5zdGFuY2Uob2JqLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKTsKICAgICBpZiAoaXNpbnN0YW5jZSA9PSAtMSkgewogICAgICAgICByZXR1cm4gMTsKQEAgLTY5ODcsNiArNzM1MSw3IEBACiAgICAgZXhwcl90eSB0YXJnZXQ7CiAgICAgZXhwcl90eSBpdGVyOwogICAgIGFzZGxfc2VxKiBpZnM7CisgICAgaW50IGlzX2FzeW5jOwogCiAgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF90YXJnZXQpKSB7CiAgICAgICAgIGludCByZXM7CkBAIC03MDM4LDcgKzc0MDMsMTggQEAKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgInJlcXVpcmVkIGZpZWxkIFwiaWZzXCIgbWlzc2luZyBmcm9tIGNvbXByZWhlbnNpb24iKTsKICAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgICpvdXQgPSBjb21wcmVoZW5zaW9uKHRhcmdldCwgaXRlciwgaWZzLCBhcmVuYSk7CisgICAgaWYgKF9QeU9iamVjdF9IYXNBdHRySWQob2JqLCAmUHlJZF9pc19hc3luYykpIHsKKyAgICAgICAgaW50IHJlczsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0dldEF0dHJJZChvYmosICZQeUlkX2lzX2FzeW5jKTsKKyAgICAgICAgaWYgKHRtcCA9PSBOVUxMKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgcmVzID0gb2JqMmFzdF9pbnQodG1wLCAmaXNfYXN5bmMsIGFyZW5hKTsKKyAgICAgICAgaWYgKHJlcyAhPSAwKSBnb3RvIGZhaWxlZDsKKyAgICAgICAgUHlfQ0xFQVIodG1wKTsKKyAgICB9IGVsc2UgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVHlwZUVycm9yLCAicmVxdWlyZWQgZmllbGQgXCJpc19hc3luY1wiIG1pc3NpbmcgZnJvbSBjb21wcmVoZW5zaW9uIik7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICAqb3V0ID0gY29tcHJlaGVuc2lvbih0YXJnZXQsIGl0ZXIsIGlmcywgaXNfYXN5bmMsIGFyZW5hKTsKICAgICByZXR1cm4gMDsKIGZhaWxlZDoKICAgICBQeV9YREVDUkVGKHRtcCk7CkBAIC03NTAyLDYgKzc4NzgsOCBAQAogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXVnQXNzaWduIiwgKFB5T2JqZWN0KilBdWdBc3NpZ25fdHlwZSkgPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkFubkFzc2lnbiIsIChQeU9iamVjdCopQW5uQXNzaWduX3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJGb3IiLCAoUHlPYmplY3QqKUZvcl90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQXN5bmNGb3IiLCAoUHlPYmplY3QqKUFzeW5jRm9yX3R5cGUpIDwgMCkKICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC03NTYyLDEyICs3OTQwLDE4IEBACiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJDYWxsIiwgKFB5T2JqZWN0KilDYWxsX3R5cGUpIDwgMCkgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJOdW0iLCAoUHlPYmplY3QqKU51bV90eXBlKSA8IDApIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3RyIiwgKFB5T2JqZWN0KilTdHJfdHlwZSkgPCAwKSByZXR1cm4gTlVMTDsKKyAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkZvcm1hdHRlZFZhbHVlIiwKKyAgICAgICAgKFB5T2JqZWN0KilGb3JtYXR0ZWRWYWx1ZV90eXBlKSA8IDApIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiSm9pbmVkU3RyIiwgKFB5T2JqZWN0KilKb2luZWRTdHJfdHlwZSkgPCAwKQorICAgICAgICByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkJ5dGVzIiwgKFB5T2JqZWN0KilCeXRlc190eXBlKSA8IDApIHJldHVybgogICAgICAgICBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiTmFtZUNvbnN0YW50IiwgKFB5T2JqZWN0KilOYW1lQ29uc3RhbnRfdHlwZSkgPAogICAgICAgICAwKSByZXR1cm4gTlVMTDsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZCwgIkVsbGlwc2lzIiwgKFB5T2JqZWN0KilFbGxpcHNpc190eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiQ29uc3RhbnQiLCAoUHlPYmplY3QqKUNvbnN0YW50X3R5cGUpIDwgMCkKKyAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJBdHRyaWJ1dGUiLCAoUHlPYmplY3QqKUF0dHJpYnV0ZV90eXBlKSA8IDApCiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhkLCAiU3Vic2NyaXB0IiwgKFB5T2JqZWN0KilTdWJzY3JpcHRfdHlwZSkgPCAwKQpkaWZmIC0tZ2l0IGEvUHl0aG9uL193YXJuaW5ncy5jIGIvUHl0aG9uL193YXJuaW5ncy5jCmluZGV4IDk3OGJhZDEuLjQwZjVjOGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9fd2FybmluZ3MuYworKysgYi9QeXRob24vX3dhcm5pbmdzLmMKQEAgLTQwLDEyICs0MCwxMSBAQAogICAgQSBOVUxMIHJldHVybiB2YWx1ZSBjYW4gbWVhbiBmYWxzZSBvciBhbiBlcnJvci4KICovCiBzdGF0aWMgUHlPYmplY3QgKgotZ2V0X3dhcm5pbmdzX2F0dHIoY29uc3QgY2hhciAqYXR0cikKK2dldF93YXJuaW5nc19hdHRyKGNvbnN0IGNoYXIgKmF0dHIsIGludCB0cnlfaW1wb3J0KQogewogICAgIHN0YXRpYyBQeU9iamVjdCAqd2FybmluZ3Nfc3RyID0gTlVMTDsKICAgICBQeU9iamVjdCAqYWxsX21vZHVsZXM7Ci0gICAgUHlPYmplY3QgKndhcm5pbmdzX21vZHVsZTsKLSAgICBpbnQgcmVzdWx0OworICAgIFB5T2JqZWN0ICp3YXJuaW5nc19tb2R1bGUsICpvYmo7CiAKICAgICBpZiAod2FybmluZ3Nfc3RyID09IE5VTEwpIHsKICAgICAgICAgd2FybmluZ3Nfc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIndhcm5pbmdzIik7CkBAIC01MywxNSArNTIsMzQgQEAKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOwotICAgIHJlc3VsdCA9IFB5RGljdF9Db250YWlucyhhbGxfbW9kdWxlcywgd2FybmluZ3Nfc3RyKTsKLSAgICBpZiAocmVzdWx0ID09IC0xIHx8IHJlc3VsdCA9PSAwKQotICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOwotICAgIGlmICghUHlPYmplY3RfSGFzQXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpKQorICAgIC8qIGRvbid0IHRyeSB0byBpbXBvcnQgYWZ0ZXIgdGhlIHN0YXJ0IG9mIHRoZSBQeXRob24gZmluYWxsaXphdGlvbiAqLworICAgIGlmICh0cnlfaW1wb3J0ICYmIF9QeV9GaW5hbGl6aW5nID09IE5VTEwpIHsKKyAgICAgICAgd2FybmluZ3NfbW9kdWxlID0gUHlJbXBvcnRfSW1wb3J0KHdhcm5pbmdzX3N0cik7CisgICAgICAgIGlmICh3YXJuaW5nc19tb2R1bGUgPT0gTlVMTCkgeworICAgICAgICAgICAgLyogRmFsbGJhY2sgdG8gdGhlIEMgaW1wbGVtZW50YXRpb24gaWYgd2UgY2Fubm90IGdldAorICAgICAgICAgICAgICAgdGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiAqLworICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBQeU9iamVjdF9HZXRBdHRyU3RyaW5nKHdhcm5pbmdzX21vZHVsZSwgYXR0cik7CisgICAgICAgIH0KKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGFsbF9tb2R1bGVzID0gUHlJbXBvcnRfR2V0TW9kdWxlRGljdCgpOworCisgICAgICAgIHdhcm5pbmdzX21vZHVsZSA9IFB5RGljdF9HZXRJdGVtKGFsbF9tb2R1bGVzLCB3YXJuaW5nc19zdHIpOworICAgICAgICBpZiAod2FybmluZ3NfbW9kdWxlID09IE5VTEwpCisgICAgICAgICAgICByZXR1cm4gTlVMTDsKKworICAgICAgICBQeV9JTkNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICB9CisKKyAgICBpZiAoIVB5T2JqZWN0X0hhc0F0dHJTdHJpbmcod2FybmluZ3NfbW9kdWxlLCBhdHRyKSkgeworICAgICAgICBQeV9ERUNSRUYod2FybmluZ3NfbW9kdWxlKTsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgb2JqID0gUHlPYmplY3RfR2V0QXR0clN0cmluZyh3YXJuaW5nc19tb2R1bGUsIGF0dHIpOworICAgIFB5X0RFQ1JFRih3YXJuaW5nc19tb2R1bGUpOworICAgIHJldHVybiBvYmo7CiB9CiAKIApAQCAtNzAsNyArODgsNyBAQAogewogICAgIFB5T2JqZWN0ICpyZWdpc3RyeTsKIAotICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIpOworICAgIHJlZ2lzdHJ5ID0gZ2V0X3dhcm5pbmdzX2F0dHIoIm9uY2VyZWdpc3RyeSIsIDApOwogICAgIGlmIChyZWdpc3RyeSA9PSBOVUxMKSB7CiAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC04Nyw3ICsxMDUsNyBAQAogewogICAgIFB5T2JqZWN0ICpkZWZhdWx0X2FjdGlvbjsKIAotICAgIGRlZmF1bHRfYWN0aW9uID0gZ2V0X3dhcm5pbmdzX2F0dHIoImRlZmF1bHRhY3Rpb24iKTsKKyAgICBkZWZhdWx0X2FjdGlvbiA9IGdldF93YXJuaW5nc19hdHRyKCJkZWZhdWx0YWN0aW9uIiwgMCk7CiAgICAgaWYgKGRlZmF1bHRfYWN0aW9uID09IE5VTEwpIHsKICAgICAgICAgaWYgKFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTEwLDcgKzEyOCw3IEBACiAgICAgUHlfc3NpemVfdCBpOwogICAgIFB5T2JqZWN0ICp3YXJuaW5nc19maWx0ZXJzOwogCi0gICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIik7CisgICAgd2FybmluZ3NfZmlsdGVycyA9IGdldF93YXJuaW5nc19hdHRyKCJmaWx0ZXJzIiwgMCk7CiAgICAgaWYgKHdhcm5pbmdzX2ZpbHRlcnMgPT0gTlVMTCkgewogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMjg3LDggKzMwNSw4IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1zaG93X3dhcm5pbmcoUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqdGV4dCwgUHlPYmplY3QKLSAgICAgICAgICAgICAgICAqY2F0ZWdvcnksIFB5T2JqZWN0ICpzb3VyY2VsaW5lKQorc2hvd193YXJuaW5nKFB5T2JqZWN0ICpmaWxlbmFtZSwgaW50IGxpbmVubywgUHlPYmplY3QgKnRleHQsCisgICAgICAgICAgICAgUHlPYmplY3QgKmNhdGVnb3J5LCBQeU9iamVjdCAqc291cmNlbGluZSkKIHsKICAgICBQeU9iamVjdCAqZl9zdGRlcnI7CiAgICAgUHlPYmplY3QgKm5hbWU7CkBAIC0zNTksMTAgKzM3Nyw2NCBAQAogICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKK3N0YXRpYyBpbnQKK2NhbGxfc2hvd193YXJuaW5nKFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlPYmplY3QgKnRleHQsIFB5T2JqZWN0ICptZXNzYWdlLAorICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZpbGVuYW1lLCBpbnQgbGluZW5vLCBQeU9iamVjdCAqbGluZW5vX29iaiwKKyAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2VsaW5lLCBQeU9iamVjdCAqc291cmNlKQoreworICAgIFB5T2JqZWN0ICpzaG93X2ZuLCAqbXNnLCAqcmVzLCAqd2Fybm1zZ19jbHMgPSBOVUxMOworCisgICAgLyogSWYgdGhlIHNvdXJjZSBwYXJhbWV0ZXIgaXMgc2V0LCB0cnkgdG8gZ2V0IHRoZSBQeXRob24gaW1wbGVtZW50YXRpb24uCisgICAgICAgVGhlIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBpcyBhYmxlIHRvIGxvZyB0aGUgdHJhY2ViYWNrIHdoZXJlIHRoZSBzb3VyY2UKKyAgICAgICB3YXMgYWxsb2NhdGVkLCB3aGVyZWFzIHRoZSBDIGltcGxlbWVudGF0aW9uIGRvZXNudC4gKi8KKyAgICBzaG93X2ZuID0gZ2V0X3dhcm5pbmdzX2F0dHIoIl9zaG93d2Fybm1zZyIsIHNvdXJjZSAhPSBOVUxMKTsKKyAgICBpZiAoc2hvd19mbiA9PSBOVUxMKSB7CisgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIVB5Q2FsbGFibGVfQ2hlY2soc2hvd19mbikpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAid2FybmluZ3MuX3Nob3d3YXJubXNnKCkgbXVzdCBiZSBzZXQgdG8gYSBjYWxsYWJsZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIHdhcm5tc2dfY2xzID0gZ2V0X3dhcm5pbmdzX2F0dHIoIldhcm5pbmdNZXNzYWdlIiwgMCk7CisgICAgaWYgKHdhcm5tc2dfY2xzID09IE5VTEwpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1J1bnRpbWVFcnJvciwKKyAgICAgICAgICAgICAgICAidW5hYmxlIHRvIGdldCB3YXJuaW5ncy5XYXJuaW5nTWVzc2FnZSIpOworICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG1zZyA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3Mod2Fybm1zZ19jbHMsIG1lc3NhZ2UsIGNhdGVnb3J5LAorICAgICAgICAgICAgZmlsZW5hbWUsIGxpbmVub19vYmosIFB5X05vbmUsIFB5X05vbmUsIHNvdXJjZSwKKyAgICAgICAgICAgIE5VTEwpOworICAgIFB5X0RFQ1JFRih3YXJubXNnX2Nscyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2ZuLCBtc2csIE5VTEwpOworICAgIFB5X0RFQ1JFRihzaG93X2ZuKTsKKyAgICBQeV9ERUNSRUYobXNnKTsKKworICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIC0xOworCisgICAgUHlfREVDUkVGKHJlcyk7CisgICAgcmV0dXJuIDA7CisKK2Vycm9yOgorICAgIFB5X1hERUNSRUYoc2hvd19mbik7CisgICAgcmV0dXJuIC0xOworfQorCiBzdGF0aWMgUHlPYmplY3QgKgogd2Fybl9leHBsaWNpdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAogICAgICAgICAgICAgICBQeU9iamVjdCAqZmlsZW5hbWUsIGludCBsaW5lbm8sCi0gICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUpCisgICAgICAgICAgICAgIFB5T2JqZWN0ICptb2R1bGUsIFB5T2JqZWN0ICpyZWdpc3RyeSwgUHlPYmplY3QgKnNvdXJjZWxpbmUsCisgICAgICAgICAgICAgIFB5T2JqZWN0ICpzb3VyY2UpCiB7CiAgICAgUHlPYmplY3QgKmtleSA9IE5VTEwsICp0ZXh0ID0gTlVMTCwgKnJlc3VsdCA9IE5VTEwsICpsaW5lbm9fb2JqID0gTlVMTDsKICAgICBQeU9iamVjdCAqaXRlbSA9IE5VTEw7CkBAIC00NzAsMzEgKzU0Miw5IEBACiAgICAgaWYgKHJjID09IDEpICAvKiBBbHJlYWR5IHdhcm5lZCBmb3IgdGhpcyBtb2R1bGUuICovCiAgICAgICAgIGdvdG8gcmV0dXJuX25vbmU7CiAgICAgaWYgKHJjID09IDApIHsKLSAgICAgICAgUHlPYmplY3QgKnNob3dfZnhuID0gZ2V0X3dhcm5pbmdzX2F0dHIoInNob3d3YXJuaW5nIik7Ci0gICAgICAgIGlmIChzaG93X2Z4biA9PSBOVUxMKSB7Ci0gICAgICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgICAgICBzaG93X3dhcm5pbmcoZmlsZW5hbWUsIGxpbmVubywgdGV4dCwgY2F0ZWdvcnksIHNvdXJjZWxpbmUpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKLQotICAgICAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKHNob3dfZnhuKSkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ3YXJuaW5ncy5zaG93d2FybmluZygpIG11c3QgYmUgc2V0IHRvIGEgIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2FsbGFibGUiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc2hvd19meG4pOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKLSAgICAgICAgICAgIH0KLQotICAgICAgICAgICAgcmVzID0gUHlPYmplY3RfQ2FsbEZ1bmN0aW9uT2JqQXJncyhzaG93X2Z4biwgbWVzc2FnZSwgY2F0ZWdvcnksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSwgbGluZW5vX29iaiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwotICAgICAgICAgICAgUHlfREVDUkVGKHNob3dfZnhuKTsKLSAgICAgICAgICAgIFB5X1hERUNSRUYocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGNhbGxfc2hvd193YXJuaW5nKGNhdGVnb3J5LCB0ZXh0LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZW5vX29iaiwgc291cmNlbGluZSwgc291cmNlKSA8IDApCisgICAgICAgICAgICBnb3RvIGNsZWFudXA7CiAgICAgfQogICAgIGVsc2UgLyogaWYgKHJjID09IC0xKSAqLwogICAgICAgICBnb3RvIGNsZWFudXA7CkBAIC03MzgsNyArNzg4LDggQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWRvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCkKK2RvX3dhcm4oUHlPYmplY3QgKm1lc3NhZ2UsIFB5T2JqZWN0ICpjYXRlZ29yeSwgUHlfc3NpemVfdCBzdGFja19sZXZlbCwKKyAgICAgICAgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqZmlsZW5hbWUsICptb2R1bGUsICpyZWdpc3RyeSwgKnJlczsKICAgICBpbnQgbGluZW5vOwpAQCAtNzQ3LDcgKzc5OCw3IEBACiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLCByZWdpc3RyeSwKLSAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgc291cmNlKTsKICAgICBQeV9ERUNSRUYoZmlsZW5hbWUpOwogICAgIFB5X0RFQ1JFRihyZWdpc3RyeSk7CiAgICAgUHlfREVDUkVGKG1vZHVsZSk7CkBAIC03NTcsMjUgKzgwOCwyNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIHdhcm5pbmdzX3dhcm4oUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dkcykKIHsKLSAgICBzdGF0aWMgY2hhciAqa3dfbGlzdFtdID0geyAibWVzc2FnZSIsICJjYXRlZ29yeSIsICJzdGFja2xldmVsIiwgMCB9OwotICAgIFB5T2JqZWN0ICptZXNzYWdlLCAqY2F0ZWdvcnkgPSBOVUxMOworICAgIHN0YXRpYyBjaGFyICprd19saXN0W10gPSB7Im1lc3NhZ2UiLCAiY2F0ZWdvcnkiLCAic3RhY2tsZXZlbCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic291cmNlIiwgTlVMTH07CisgICAgUHlPYmplY3QgKm1lc3NhZ2UsICpjYXRlZ29yeSA9IE5VTEwsICpzb3VyY2UgPSBOVUxMOwogICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwgPSAxOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T246d2FybiIsIGt3X2xpc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT3xPbk86d2FybiIsIGt3X2xpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJnN0YWNrX2xldmVsLCAmc291cmNlKSkKICAgICAgICAgcmV0dXJuIE5VTEw7CiAKICAgICBjYXRlZ29yeSA9IGdldF9jYXRlZ29yeShtZXNzYWdlLCBjYXRlZ29yeSk7CiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIHJldHVybiBOVUxMOwotICAgIHJldHVybiBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmV0dXJuIGRvX3dhcm4obWVzc2FnZSwgY2F0ZWdvcnksIHN0YWNrX2xldmVsLCBzb3VyY2UpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgogd2FybmluZ3Nfd2Fybl9leHBsaWNpdChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewogICAgIHN0YXRpYyBjaGFyICprd2RfbGlzdFtdID0geyJtZXNzYWdlIiwgImNhdGVnb3J5IiwgImZpbGVuYW1lIiwgImxpbmVubyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtb2R1bGUiLCAicmVnaXN0cnkiLCAibW9kdWxlX2dsb2JhbHMiLCAwfTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm1vZHVsZSIsICJyZWdpc3RyeSIsICJtb2R1bGVfZ2xvYmFscyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJzb3VyY2UiLCAwfTsKICAgICBQeU9iamVjdCAqbWVzc2FnZTsKICAgICBQeU9iamVjdCAqY2F0ZWdvcnk7CiAgICAgUHlPYmplY3QgKmZpbGVuYW1lOwpAQCAtNzgzLDEwICs4MzYsMTEgQEAKICAgICBQeU9iamVjdCAqbW9kdWxlID0gTlVMTDsKICAgICBQeU9iamVjdCAqcmVnaXN0cnkgPSBOVUxMOwogICAgIFB5T2JqZWN0ICptb2R1bGVfZ2xvYmFscyA9IE5VTEw7CisgICAgUHlPYmplY3QgKnNvdXJjZW9iaiA9IE5VTEw7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2RzLCAiT09VaXxPT086d2Fybl9leHBsaWNpdCIsCisgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk9PVWl8T09PTzp3YXJuX2V4cGxpY2l0IiwKICAgICAgICAgICAgICAgICBrd2RfbGlzdCwgJm1lc3NhZ2UsICZjYXRlZ29yeSwgJmZpbGVuYW1lLCAmbGluZW5vLCAmbW9kdWxlLAotICAgICAgICAgICAgICAgICZyZWdpc3RyeSwgJm1vZHVsZV9nbG9iYWxzKSkKKyAgICAgICAgICAgICAgICAmcmVnaXN0cnksICZtb2R1bGVfZ2xvYmFscywgJnNvdXJjZW9iaikpCiAgICAgICAgIHJldHVybiBOVUxMOwogCiAgICAgaWYgKG1vZHVsZV9nbG9iYWxzKSB7CkBAIC04NDIsMTQgKzg5NiwxNCBAQAogCiAgICAgICAgIC8qIEhhbmRsZSB0aGUgd2FybmluZy4gKi8KICAgICAgICAgcmV0dXJuZWQgPSB3YXJuX2V4cGxpY2l0KGNhdGVnb3J5LCBtZXNzYWdlLCBmaWxlbmFtZSwgbGluZW5vLCBtb2R1bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgc291cmNlX2xpbmUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVnaXN0cnksIHNvdXJjZV9saW5lLCBzb3VyY2VvYmopOwogICAgICAgICBQeV9ERUNSRUYoc291cmNlX2xpc3QpOwogICAgICAgICByZXR1cm4gcmV0dXJuZWQ7CiAgICAgfQogCiAgc3RhbmRhcmRfY2FsbDoKICAgICByZXR1cm4gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywgbW9kdWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICByZWdpc3RyeSwgTlVMTCwgc291cmNlb2JqKTsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKQEAgLTg2NCwxNCArOTE4LDE0IEBACiAKIHN0YXRpYyBpbnQKIHdhcm5fdW5pY29kZShQeU9iamVjdCAqY2F0ZWdvcnksIFB5T2JqZWN0ICptZXNzYWdlLAotICAgICAgICAgICAgIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwpCisgICAgICAgICAgICAgUHlfc3NpemVfdCBzdGFja19sZXZlbCwgUHlPYmplY3QgKnNvdXJjZSkKIHsKICAgICBQeU9iamVjdCAqcmVzOwogCiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAKLSAgICByZXMgPSBkb193YXJuKG1lc3NhZ2UsIGNhdGVnb3J5LCBzdGFja19sZXZlbCk7CisgICAgcmVzID0gZG9fd2FybihtZXNzYWdlLCBjYXRlZ29yeSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC04NzksMTIgKzkzMywyOCBAQAogICAgIHJldHVybiAwOwogfQogCitzdGF0aWMgaW50CitfUHlFcnJfV2FybkZvcm1hdFYoUHlPYmplY3QgKnNvdXJjZSwKKyAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IHZhcmdzKQoreworICAgIFB5T2JqZWN0ICptZXNzYWdlOworICAgIGludCByZXM7CisKKyAgICBtZXNzYWdlID0gUHlVbmljb2RlX0Zyb21Gb3JtYXRWKGZvcm1hdCwgdmFyZ3MpOworICAgIGlmIChtZXNzYWdlID09IE5VTEwpCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJlcyA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwsIHNvdXJjZSk7CisgICAgUHlfREVDUkVGKG1lc3NhZ2UpOworICAgIHJldHVybiByZXM7Cit9CisKIGludAogUHlFcnJfV2FybkZvcm1hdChQeU9iamVjdCAqY2F0ZWdvcnksIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCiAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQogewotICAgIGludCByZXQ7Ci0gICAgUHlPYmplY3QgKm1lc3NhZ2U7CisgICAgaW50IHJlczsKICAgICB2YV9saXN0IHZhcmdzOwogCiAjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwpAQCAtODkyLDI1ICs5NjIsMzggQEAKICNlbHNlCiAgICAgdmFfc3RhcnQodmFyZ3MpOwogI2VuZGlmCi0gICAgbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0Vihmb3JtYXQsIHZhcmdzKTsKLSAgICBpZiAobWVzc2FnZSAhPSBOVUxMKSB7Ci0gICAgICAgIHJldCA9IHdhcm5fdW5pY29kZShjYXRlZ29yeSwgbWVzc2FnZSwgc3RhY2tfbGV2ZWwpOwotICAgICAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmV0ID0gLTE7CisgICAgcmVzID0gX1B5RXJyX1dhcm5Gb3JtYXRWKE5VTEwsIGNhdGVnb3J5LCBzdGFja19sZXZlbCwgZm9ybWF0LCB2YXJncyk7CiAgICAgdmFfZW5kKHZhcmdzKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiByZXM7CiB9CiAKIGludAorUHlFcnJfUmVzb3VyY2VXYXJuaW5nKFB5T2JqZWN0ICpzb3VyY2UsIFB5X3NzaXplX3Qgc3RhY2tfbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCit7CisgICAgaW50IHJlczsKKyAgICB2YV9saXN0IHZhcmdzOworCisjaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUworICAgIHZhX3N0YXJ0KHZhcmdzLCBmb3JtYXQpOworI2Vsc2UKKyAgICB2YV9zdGFydCh2YXJncyk7CisjZW5kaWYKKyAgICByZXMgPSBfUHlFcnJfV2FybkZvcm1hdFYoc291cmNlLCBQeUV4Y19SZXNvdXJjZVdhcm5pbmcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWNrX2xldmVsLCBmb3JtYXQsIHZhcmdzKTsKKyAgICB2YV9lbmQodmFyZ3MpOworICAgIHJldHVybiByZXM7Cit9CisKKworaW50CiBQeUVycl9XYXJuRXgoUHlPYmplY3QgKmNhdGVnb3J5LCBjb25zdCBjaGFyICp0ZXh0LCBQeV9zc2l6ZV90IHN0YWNrX2xldmVsKQogewogICAgIGludCByZXQ7CiAgICAgUHlPYmplY3QgKm1lc3NhZ2UgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyh0ZXh0KTsKICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7Ci0gICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCk7CisgICAgcmV0ID0gd2Fybl91bmljb2RlKGNhdGVnb3J5LCBtZXNzYWdlLCBzdGFja19sZXZlbCwgTlVMTCk7CiAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgIHJldHVybiByZXQ7CiB9CkBAIC05MjEsNyArMTAwNCw3IEBACiAjdW5kZWYgUHlFcnJfV2FybgogCiBQeUFQSV9GVU5DKGludCkKLVB5RXJyX1dhcm4oUHlPYmplY3QgKmNhdGVnb3J5LCBjaGFyICp0ZXh0KQorUHlFcnJfV2FybihQeU9iamVjdCAqY2F0ZWdvcnksIGNvbnN0IGNoYXIgKnRleHQpCiB7CiAgICAgcmV0dXJuIFB5RXJyX1dhcm5FeChjYXRlZ29yeSwgdGV4dCwgMSk7CiB9CkBAIC05MzYsNyArMTAxOSw3IEBACiAgICAgaWYgKGNhdGVnb3J5ID09IE5VTEwpCiAgICAgICAgIGNhdGVnb3J5ID0gUHlFeGNfUnVudGltZVdhcm5pbmc7CiAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgIG1vZHVsZSwgcmVnaXN0cnksIE5VTEwpOworICAgICAgICAgICAgICAgICAgICAgICAgbW9kdWxlLCByZWdpc3RyeSwgTlVMTCwgTlVMTCk7CiAgICAgaWYgKHJlcyA9PSBOVUxMKQogICAgICAgICByZXR1cm4gLTE7CiAgICAgUHlfREVDUkVGKHJlcyk7CkBAIC0xMDAwLDcgKzEwODMsNyBAQAogICAgIGlmIChtZXNzYWdlICE9IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKnJlczsKICAgICAgICAgcmVzID0gd2Fybl9leHBsaWNpdChjYXRlZ29yeSwgbWVzc2FnZSwgZmlsZW5hbWUsIGxpbmVubywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtb2R1bGUsIHJlZ2lzdHJ5LCBOVUxMLCBOVUxMKTsKICAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwogICAgICAgICBpZiAocmVzICE9IE5VTEwpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2FzZGwuYyBiL1B5dGhvbi9hc2RsLmMKaW5kZXggZGYzODdiMi4uYzIxMTA3OCAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzZGwuYworKysgYi9QeXRob24vYXNkbC5jCkBAIC05LDE0ICs5LDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgbiA9IChzaXplID8gKHNpemVvZih2b2lkICopICogKHNpemUgLSAxKSkgOiAwKTsKIAogICAgIC8qIGNoZWNrIGlmIHNpemUgY2FuIGJlIGFkZGVkIHNhZmVseSAqLwotICAgIGlmIChuID4gUFlfU0laRV9NQVggLSBzaXplb2YoYXNkbF9zZXEpKSB7CisgICAgaWYgKG4gPiBTSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQpAQCAtNDAsMTQgKzQwLDE0IEBACiAKICAgICAvKiBjaGVjayBzaXplIGlzIHNhbmUgKi8KICAgICBpZiAoc2l6ZSA8IDAgfHwKLSAgICAgICAgKHNpemUgJiYgKCgoc2l6ZV90KXNpemUgLSAxKSA+IChQWV9TSVpFX01BWCAvIHNpemVvZih2b2lkICopKSkpKSB7CisgICAgICAgIChzaXplICYmICgoKHNpemVfdClzaXplIC0gMSkgPiAoU0laRV9NQVggLyBzaXplb2Yodm9pZCAqKSkpKSkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KICAgICBuID0gKHNpemUgPyAoc2l6ZW9mKHZvaWQgKikgKiAoc2l6ZSAtIDEpKSA6IDApOwogCiAgICAgLyogY2hlY2sgaWYgc2l6ZSBjYW4gYmUgYWRkZWQgc2FmZWx5ICovCi0gICAgaWYgKG4gPiBQWV9TSVpFX01BWCAtIHNpemVvZihhc2RsX3NlcSkpIHsKKyAgICBpZiAobiA+IFNJWkVfTUFYIC0gc2l6ZW9mKGFzZGxfc2VxKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CmRpZmYgLS1naXQgYS9QeXRob24vYXN0LmMgYi9QeXRob24vYXN0LmMKaW5kZXggNmRhMzNmNy4uNzZkYWY2ZiAxMDA2NDQKLS0tIGEvUHl0aG9uL2FzdC5jCisrKyBiL1B5dGhvbi9hc3QuYwpAQCAtMTMyLDYgKzEzMiw1MiBAQAogfQogCiBzdGF0aWMgaW50Cit2YWxpZGF0ZV9jb25zdGFudChQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IFB5X05vbmUgfHwgdmFsdWUgPT0gUHlfRWxsaXBzaXMpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5TG9uZ19DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlGbG9hdF9DaGVja0V4YWN0KHZhbHVlKQorICAgICAgICAgICAgfHwgUHlDb21wbGV4X0NoZWNrRXhhY3QodmFsdWUpCisgICAgICAgICAgICB8fCBQeUJvb2xfQ2hlY2sodmFsdWUpCisgICAgICAgICAgICB8fCBQeVVuaWNvZGVfQ2hlY2tFeGFjdCh2YWx1ZSkKKyAgICAgICAgICAgIHx8IFB5Qnl0ZXNfQ2hlY2tFeGFjdCh2YWx1ZSkpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKFB5VHVwbGVfQ2hlY2tFeGFjdCh2YWx1ZSkgfHwgUHlGcm96ZW5TZXRfQ2hlY2tFeGFjdCh2YWx1ZSkpIHsKKyAgICAgICAgUHlPYmplY3QgKml0OworCisgICAgICAgIGl0ID0gUHlPYmplY3RfR2V0SXRlcih2YWx1ZSk7CisgICAgICAgIGlmIChpdCA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuIDA7CisKKyAgICAgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUHlJdGVyX05leHQoaXQpOworICAgICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChpdGVtKSkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpdCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgUHlfREVDUkVGKGl0KTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIHZhbGlkYXRlX2V4cHIoZXhwcl90eSBleHAsIGV4cHJfY29udGV4dF90eSBjdHgpCiB7CiAgICAgaW50IGNoZWNrX2N0eCA9IDE7CkBAIC0yNDAsNiArMjg2LDE0IEBACiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9leHByKGV4cC0+di5DYWxsLmZ1bmMsIExvYWQpICYmCiAgICAgICAgICAgICB2YWxpZGF0ZV9leHBycyhleHAtPnYuQ2FsbC5hcmdzLCBMb2FkLCAwKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfa2V5d29yZHMoZXhwLT52LkNhbGwua2V5d29yZHMpOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKKyAgICAgICAgaWYgKCF2YWxpZGF0ZV9jb25zdGFudChleHAtPnYuQ29uc3RhbnQudmFsdWUpKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICJnb3QgYW4gaW52YWxpZCB0eXBlIGluIENvbnN0YW50OiAlcyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgUHlfVFlQRShleHAtPnYuQ29uc3RhbnQudmFsdWUpLT50cF9uYW1lKTsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAxOwogICAgIGNhc2UgTnVtX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKm4gPSBleHAtPnYuTnVtLm47CiAgICAgICAgIGlmICghUHlMb25nX0NoZWNrRXhhY3QobikgJiYgIVB5RmxvYXRfQ2hlY2tFeGFjdChuKSAmJgpAQCAtMjU3LDYgKzMxMSwxNCBAQAogICAgICAgICB9CiAgICAgICAgIHJldHVybiAxOwogICAgIH0KKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcnMoZXhwLT52LkpvaW5lZFN0ci52YWx1ZXMsIExvYWQsIDApOworICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKKyAgICAgICAgaWYgKHZhbGlkYXRlX2V4cHIoZXhwLT52LkZvcm1hdHRlZFZhbHVlLnZhbHVlLCBMb2FkKSA9PSAwKQorICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGlmIChleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpCisgICAgICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihleHAtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMsIExvYWQpOworICAgICAgICByZXR1cm4gMTsKICAgICBjYXNlIEJ5dGVzX2tpbmQ6IHsKICAgICAgICAgUHlPYmplY3QgKmIgPSBleHAtPnYuQnl0ZXMuczsKICAgICAgICAgaWYgKCFQeUJ5dGVzX0NoZWNrRXhhY3QoYikpIHsKQEAgLTMzNSw2ICszOTcsMTcgQEAKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi50YXJnZXQsIFN0b3JlKSAmJgogICAgICAgICAgICAgdmFsaWRhdGVfZXhwcihzdG10LT52LkF1Z0Fzc2lnbi52YWx1ZSwgTG9hZCk7CisgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgaWYgKHN0bXQtPnYuQW5uQXNzaWduLnRhcmdldC0+a2luZCAhPSBOYW1lX2tpbmQgJiYKKyAgICAgICAgICAgIHN0bXQtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiQW5uQXNzaWduIHdpdGggc2ltcGxlIG5vbi1OYW1lIHRhcmdldCIpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24udGFyZ2V0LCBTdG9yZSkgJiYKKyAgICAgICAgICAgICAgICghc3RtdC0+di5Bbm5Bc3NpZ24udmFsdWUgfHwKKyAgICAgICAgICAgICAgICB2YWxpZGF0ZV9leHByKHN0bXQtPnYuQW5uQXNzaWduLnZhbHVlLCBMb2FkKSkgJiYKKyAgICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbiwgTG9hZCk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IudGFyZ2V0LCBTdG9yZSkgJiYKICAgICAgICAgICAgIHZhbGlkYXRlX2V4cHIoc3RtdC0+di5Gb3IuaXRlciwgTG9hZCkgJiYKQEAgLTQxMyw4ICs0ODYsOCBAQAogICAgIGNhc2UgSW1wb3J0X2tpbmQ6CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnQubmFtZXMsICJuYW1lcyIsICJJbXBvcnQiKTsKICAgICBjYXNlIEltcG9ydEZyb21fa2luZDoKLSAgICAgICAgaWYgKHN0bXQtPnYuSW1wb3J0RnJvbS5sZXZlbCA8IC0xKSB7Ci0gICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIkltcG9ydEZyb20gbGV2ZWwgbGVzcyB0aGFuIC0xIik7CisgICAgICAgIGlmIChzdG10LT52LkltcG9ydEZyb20ubGV2ZWwgPCAwKSB7CisgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfVmFsdWVFcnJvciwgIk5lZ2F0aXZlIEltcG9ydEZyb20gbGV2ZWwiKTsKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiB2YWxpZGF0ZV9ub25lbXB0eV9zZXEoc3RtdC0+di5JbXBvcnRGcm9tLm5hbWVzLCAibmFtZXMiLCAiSW1wb3J0RnJvbSIpOwpAQCAtNTEyLDggKzU4NSw3IEBACiAKIC8qIERhdGEgc3RydWN0dXJlIHVzZWQgaW50ZXJuYWxseSAqLwogc3RydWN0IGNvbXBpbGluZyB7Ci0gICAgY2hhciAqY19lbmNvZGluZzsgLyogc291cmNlIGVuY29kaW5nICovCi0gICAgUHlBcmVuYSAqY19hcmVuYTsgLyogYXJlbmEgZm9yIGFsbG9jYXRpbmcgbWVtZW9yeSAqLworICAgIFB5QXJlbmEgKmNfYXJlbmE7IC8qIEFyZW5hIGZvciBhbGxvY2F0aW5nIG1lbW9yeS4gKi8KICAgICBQeU9iamVjdCAqY19maWxlbmFtZTsgLyogZmlsZW5hbWUgKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemU7IC8qIE5vcm1hbGl6YXRpb24gZnVuY3Rpb24gZnJvbSB1bmljb2RlZGF0YS4gKi8KICAgICBQeU9iamVjdCAqY19ub3JtYWxpemVfYXJnczsgLyogTm9ybWFsaXphdGlvbiBhcmd1bWVudCB0dXBsZS4gKi8KQEAgLTUzNSw5ICs2MDcsNyBAQAogc3RhdGljIGV4cHJfdHkgYXN0X2Zvcl9jYWxsKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqLCBleHByX3R5KTsKIAogc3RhdGljIFB5T2JqZWN0ICpwYXJzZW51bWJlcihzdHJ1Y3QgY29tcGlsaW5nICosIGNvbnN0IGNoYXIgKik7Ci1zdGF0aWMgUHlPYmplY3QgKnBhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbiwgaW50ICpieXRlc21vZGUpOwotc3RhdGljIFB5T2JqZWN0ICpwYXJzZXN0cnBsdXMoc3RydWN0IGNvbXBpbGluZyAqLCBjb25zdCBub2RlICpuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICpieXRlc21vZGUpOworc3RhdGljIGV4cHJfdHkgcGFyc2VzdHJwbHVzKHN0cnVjdCBjb21waWxpbmcgKiwgY29uc3Qgbm9kZSAqbik7CiAKICNkZWZpbmUgQ09NUF9HRU5FWFAgICAwCiAjZGVmaW5lIENPTVBfTElTVENPTVAgMQpAQCAtNzAxLDIzICs3NzEsMTEgQEAKICAgICBjLmNfYXJlbmEgPSBhcmVuYTsKICAgICAvKiBib3Jyb3dlZCByZWZlcmVuY2UgKi8KICAgICBjLmNfZmlsZW5hbWUgPSBmaWxlbmFtZTsKLSAgICBjLmNfbm9ybWFsaXplID0gYy5jX25vcm1hbGl6ZV9hcmdzID0gTlVMTDsKLSAgICBpZiAoZmxhZ3MgJiYgZmxhZ3MtPmNmX2ZsYWdzICYgUHlDRl9TT1VSQ0VfSVNfVVRGOCkgewotICAgICAgICBjLmNfZW5jb2RpbmcgPSAidXRmLTgiOwotICAgICAgICBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0jaWYgMAotICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJlbmNvZGluZyBkZWNsYXJhdGlvbiBpbiBVbmljb2RlIHN0cmluZyIpOwotICAgICAgICAgICAgZ290byBvdXQ7Ci0jZW5kaWYKLSAgICAgICAgICAgIG4gPSBDSElMRChuLCAwKTsKLSAgICAgICAgfQotICAgIH0gZWxzZSBpZiAoVFlQRShuKSA9PSBlbmNvZGluZ19kZWNsKSB7Ci0gICAgICAgIGMuY19lbmNvZGluZyA9IFNUUihuKTsKKyAgICBjLmNfbm9ybWFsaXplID0gTlVMTDsKKyAgICBjLmNfbm9ybWFsaXplX2FyZ3MgPSBOVUxMOworCisgICAgaWYgKFRZUEUobikgPT0gZW5jb2RpbmdfZGVjbCkKICAgICAgICAgbiA9IENISUxEKG4sIDApOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFBFUCAzMTIwICovCi0gICAgICAgIGMuY19lbmNvZGluZyA9ICJ1dGYtOCI7Ci0gICAgfQogCiAgICAgayA9IDA7CiAgICAgc3dpdGNoIChUWVBFKG4pKSB7CkBAIC04NjQsNyArOTIyLDcgQEAKICAgICB9CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyKiBGT1JCSURERU5bXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgRk9SQklEREVOW10gPSB7CiAgICAgIk5vbmUiLAogICAgICJUcnVlIiwKICAgICAiRmFsc2UiLApAQCAtODgwLDggKzkzOCwyOCBAQAogICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwogICAgICAgICByZXR1cm4gMTsKICAgICB9CisgICAgaWYgKFB5VW5pY29kZV9Db21wYXJlV2l0aEFTQ0lJU3RyaW5nKG5hbWUsICJhc3luYyIpID09IDAgfHwKKyAgICAgICAgUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgImF3YWl0IikgPT0gMCkKKyAgICB7CisgICAgICAgIFB5T2JqZWN0ICptZXNzYWdlID0gUHlVbmljb2RlX0Zyb21TdHJpbmcoCisgICAgICAgICAgICAiJ2FzeW5jJyBhbmQgJ2F3YWl0JyB3aWxsIGJlY29tZSByZXNlcnZlZCBrZXl3b3JkcyIKKyAgICAgICAgICAgICIgaW4gUHl0aG9uIDMuNyIpOworICAgICAgICBpZiAobWVzc2FnZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgICAgICBpZiAoUHlFcnJfV2FybkV4cGxpY2l0T2JqZWN0KAorICAgICAgICAgICAgICAgIFB5RXhjX0RlcHJlY2F0aW9uV2FybmluZywKKyAgICAgICAgICAgICAgICBtZXNzYWdlLAorICAgICAgICAgICAgICAgIGMtPmNfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgTElORU5PKG4pLAorICAgICAgICAgICAgICAgIE5VTEwsCisgICAgICAgICAgICAgICAgTlVMTCkgPCAwKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgfQorICAgIH0KICAgICBpZiAoZnVsbF9jaGVja3MpIHsKLSAgICAgICAgY29uc3QgY2hhciAqKnA7CisgICAgICAgIGNvbnN0IGNoYXIgKiBjb25zdCAqcDsKICAgICAgICAgZm9yIChwID0gRk9SQklEREVOOyAqcDsgcCsrKSB7CiAgICAgICAgICAgICBpZiAoUHlVbmljb2RlX0NvbXBhcmVXaXRoQVNDSUlTdHJpbmcobmFtZSwgKnApID09IDApIHsKICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImFzc2lnbm1lbnQgdG8ga2V5d29yZCIpOwpAQCAtOTQzLDEzICsxMDIxLDggQEAKICAgICAgICAgICAgIHMgPSBlLT52Lkxpc3QuZWx0czsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIFR1cGxlX2tpbmQ6Ci0gICAgICAgICAgICBpZiAoYXNkbF9zZXFfTEVOKGUtPnYuVHVwbGUuZWx0cykpICB7Ci0gICAgICAgICAgICAgICAgZS0+di5UdXBsZS5jdHggPSBjdHg7Ci0gICAgICAgICAgICAgICAgcyA9IGUtPnYuVHVwbGUuZWx0czsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICIoKSI7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICBlLT52LlR1cGxlLmN0eCA9IGN0eDsKKyAgICAgICAgICAgIHMgPSBlLT52LlR1cGxlLmVsdHM7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBMYW1iZGFfa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJsYW1iZGEiOwpAQCAtOTg2LDYgKzEwNTksOCBAQAogICAgICAgICBjYXNlIE51bV9raW5kOgogICAgICAgICBjYXNlIFN0cl9raW5kOgogICAgICAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgICAgIGNhc2UgSm9pbmVkU3RyX2tpbmQ6CisgICAgICAgIGNhc2UgRm9ybWF0dGVkVmFsdWVfa2luZDoKICAgICAgICAgICAgIGV4cHJfbmFtZSA9ICJsaXRlcmFsIjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIE5hbWVDb25zdGFudF9raW5kOgpAQCAtMTI1OSwxNiArMTMzNCwyMCBAQAogICAgICAgIGFuZCB2YXJhcmdzbGlzdCAobGFtYmRhIGRlZmluaXRpb24pLgogCiAgICAgICAgcGFyYW1ldGVyczogJygnIFt0eXBlZGFyZ3NsaXN0XSAnKScKLSAgICAgICB0eXBlZGFyZ3NsaXN0OiAoKHRmcGRlZiBbJz0nIHRlc3RdICcsJykqCi0gICAgICAgICAgICgnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgJyoqJyB0ZnBkZWZdCi0gICAgICAgICAgIHwgJyoqJyB0ZnBkZWYpCi0gICAgICAgICAgIHwgdGZwZGVmIFsnPScgdGVzdF0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQorICAgICAgIHR5cGVkYXJnc2xpc3Q6ICh0ZnBkZWYgWyc9JyB0ZXN0XSAoJywnIHRmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbCisgICAgICAgICAgICAgICAnKicgW3RmcGRlZl0gKCcsJyB0ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWycqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgICAgICAgICB8ICcqKicgdGZwZGVmIFsnLCddXV0KKyAgICAgICAgIHwgJyonIFt0ZnBkZWZdICgnLCcgdGZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHRmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqKicgdGZwZGVmIFsnLCddKQogICAgICAgIHRmcGRlZjogTkFNRSBbJzonIHRlc3RdCi0gICAgICAgdmFyYXJnc2xpc3Q6ICgodmZwZGVmIFsnPScgdGVzdF0gJywnKSoKLSAgICAgICAgICAgKCcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogIFsnLCcgJyoqJyB2ZnBkZWZdCi0gICAgICAgICAgIHwgJyoqJyB2ZnBkZWYpCi0gICAgICAgICAgIHwgdmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCddKQorICAgICAgIHZhcmFyZ3NsaXN0OiAodmZwZGVmIFsnPScgdGVzdF0gKCcsJyB2ZnBkZWYgWyc9JyB0ZXN0XSkqIFsnLCcgWworICAgICAgICAgICAgICAgJyonIFt2ZnBkZWZdICgnLCcgdmZwZGVmIFsnPScgdGVzdF0pKiBbJywnIFsnKionIHZmcGRlZiBbJywnXV1dCisgICAgICAgICAgICAgfCAnKionIHZmcGRlZiBbJywnXV1dCisgICAgICAgICB8ICcqJyBbdmZwZGVmXSAoJywnIHZmcGRlZiBbJz0nIHRlc3RdKSogWycsJyBbJyoqJyB2ZnBkZWYgWycsJ11dXQorICAgICAgICAgfCAnKionIHZmcGRlZiBbJywnXQorICAgICAgICkKICAgICAgICB2ZnBkZWY6IE5BTUUKKwogICAgICovCiAgICAgaW50IGksIGosIGssIG5wb3NhcmdzID0gMCwgbmt3b25seWFyZ3MgPSAwOwogICAgIGludCBucG9zZGVmYXVsdHMgPSAwLCBmb3VuZF9kZWZhdWx0ID0gMDsKQEAgLTEzNzAsNyArMTQ0OSw4IEBACiAgICAgICAgICAgICAgICAgaSArPSAyOyAvKiB0aGUgbmFtZSBhbmQgdGhlIGNvbW1hICovCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFNUQVI6Ci0gICAgICAgICAgICAgICAgaWYgKGkrMSA+PSBOQ0gobikpIHsKKyAgICAgICAgICAgICAgICBpZiAoaSsxID49IE5DSChuKSB8fAorICAgICAgICAgICAgICAgICAgICAoaSsyID09IE5DSChuKSAmJiBUWVBFKENISUxEKG4sIGkrMSkpID09IENPTU1BKSkgewogICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgQ0hJTEQobiwgaSksCiAgICAgICAgICAgICAgICAgICAgICAgICAibmFtZWQgYXJndW1lbnRzIG11c3QgZm9sbG93IGJhcmUgKiIpOwogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTE2ODcsMTQgKzE3NjcsMjEgQEAKIGNvdW50X2NvbXBfZm9ycyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewogICAgIGludCBuX2ZvcnMgPSAwOworICAgIGludCBpc19hc3luYzsKIAogICBjb3VudF9jb21wX2ZvcjoKKyAgICBpc19hc3luYyA9IDA7CiAgICAgbl9mb3JzKys7CiAgICAgUkVRKG4sIGNvbXBfZm9yKTsKLSAgICBpZiAoTkNIKG4pID09IDUpCi0gICAgICAgIG4gPSBDSElMRChuLCA0KTsKLSAgICBlbHNlCisgICAgaWYgKFRZUEUoQ0hJTEQobiwgMCkpID09IEFTWU5DKSB7CisgICAgICAgIGlzX2FzeW5jID0gMTsKKyAgICB9CisgICAgaWYgKE5DSChuKSA9PSAoNSArIGlzX2FzeW5jKSkgeworICAgICAgICBuID0gQ0hJTEQobiwgNCArIGlzX2FzeW5jKTsKKyAgICB9CisgICAgZWxzZSB7CiAgICAgICAgIHJldHVybiBuX2ZvcnM7CisgICAgfQogICBjb3VudF9jb21wX2l0ZXI6CiAgICAgUkVRKG4sIGNvbXBfaXRlcik7CiAgICAgbiA9IENISUxEKG4sIDApOwpAQCAtMTc1NywxNCArMTg0NCwxOSBAQAogICAgICAgICBhc2RsX3NlcSAqdDsKICAgICAgICAgZXhwcl90eSBleHByZXNzaW9uLCBmaXJzdDsKICAgICAgICAgbm9kZSAqZm9yX2NoOworICAgICAgICBpbnQgaXNfYXN5bmMgPSAwOwogCiAgICAgICAgIFJFUShuLCBjb21wX2Zvcik7CiAKLSAgICAgICAgZm9yX2NoID0gQ0hJTEQobiwgMSk7CisgICAgICAgIGlmIChUWVBFKENISUxEKG4sIDApKSA9PSBBU1lOQykgeworICAgICAgICAgICAgaXNfYXN5bmMgPSAxOworICAgICAgICB9CisKKyAgICAgICAgZm9yX2NoID0gQ0hJTEQobiwgMSArIGlzX2FzeW5jKTsKICAgICAgICAgdCA9IGFzdF9mb3JfZXhwcmxpc3QoYywgZm9yX2NoLCBTdG9yZSk7CiAgICAgICAgIGlmICghdCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBleHByZXNzaW9uID0gYXN0X2Zvcl9leHByKGMsIENISUxEKG4sIDMpKTsKKyAgICAgICAgZXhwcmVzc2lvbiA9IGFzdF9mb3JfZXhwcihjLCBDSElMRChuLCAzICsgaXNfYXN5bmMpKTsKICAgICAgICAgaWYgKCFleHByZXNzaW9uKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAKQEAgLTE3NzIsMTkgKzE4NjQsMjAgQEAKICAgICAgICAgICAgKHggZm9yIHgsIGluIC4uLikgaGFzIDEgZWxlbWVudCBpbiB0LCBidXQgc3RpbGwgcmVxdWlyZXMgYSBUdXBsZS4gKi8KICAgICAgICAgZmlyc3QgPSAoZXhwcl90eSlhc2RsX3NlcV9HRVQodCwgMCk7CiAgICAgICAgIGlmIChOQ0goZm9yX2NoKSA9PSAxKQotICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oZmlyc3QsIGV4cHJlc3Npb24sIE5VTEwsIGMtPmNfYXJlbmEpOworICAgICAgICAgICAgY29tcCA9IGNvbXByZWhlbnNpb24oZmlyc3QsIGV4cHJlc3Npb24sIE5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc19hc3luYywgYy0+Y19hcmVuYSk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKFR1cGxlKHQsIFN0b3JlLCBmaXJzdC0+bGluZW5vLCBmaXJzdC0+Y29sX29mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjLT5jX2FyZW5hKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByZXNzaW9uLCBOVUxMLCBjLT5jX2FyZW5hKTsKKyAgICAgICAgICAgIGNvbXAgPSBjb21wcmVoZW5zaW9uKFR1cGxlKHQsIFN0b3JlLCBmaXJzdC0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlyc3QtPmNvbF9vZmZzZXQsIGMtPmNfYXJlbmEpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcmVzc2lvbiwgTlVMTCwgaXNfYXN5bmMsIGMtPmNfYXJlbmEpOwogICAgICAgICBpZiAoIWNvbXApCiAgICAgICAgICAgICByZXR1cm4gTlVMTDsKIAotICAgICAgICBpZiAoTkNIKG4pID09IDUpIHsKKyAgICAgICAgaWYgKE5DSChuKSA9PSAoNSArIGlzX2FzeW5jKSkgewogICAgICAgICAgICAgaW50IGosIG5faWZzOwogICAgICAgICAgICAgYXNkbF9zZXEgKmlmczsKIAotICAgICAgICAgICAgbiA9IENISUxEKG4sIDQpOworICAgICAgICAgICAgbiA9IENISUxEKG4sIDQgKyBpc19hc3luYyk7CiAgICAgICAgICAgICBuX2lmcyA9IGNvdW50X2NvbXBfaWZzKGMsIG4pOwogICAgICAgICAgICAgaWYgKG5faWZzID09IC0xKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwpAQCAtMTk5Myw3ICsyMDg2LDYgQEAKICAgICAgICB8ICcuLi4nIHwgJ05vbmUnIHwgJ1RydWUnIHwgJ0ZhbHNlJwogICAgICovCiAgICAgbm9kZSAqY2ggPSBDSElMRChuLCAwKTsKLSAgICBpbnQgYnl0ZXNtb2RlID0gMDsKIAogICAgIHN3aXRjaCAoVFlQRShjaCkpIHsKICAgICBjYXNlIE5BTUU6IHsKQEAgLTIwMTUsNyArMjEwNyw3IEBACiAgICAgICAgIHJldHVybiBOYW1lKG5hbWUsIExvYWQsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKICAgICB9CiAgICAgY2FzZSBTVFJJTkc6IHsKLSAgICAgICAgUHlPYmplY3QgKnN0ciA9IHBhcnNlc3RycGx1cyhjLCBuLCAmYnl0ZXNtb2RlKTsKKyAgICAgICAgZXhwcl90eSBzdHIgPSBwYXJzZXN0cnBsdXMoYywgbik7CiAgICAgICAgIGlmICghc3RyKSB7CiAgICAgICAgICAgICBjb25zdCBjaGFyICplcnJ0eXBlID0gTlVMTDsKICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX1VuaWNvZGVFcnJvcikpCkBAIC0yMDMyLDYgKzIxMjQsNyBAQAogICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksICIoJXMpICVzIiwgZXJydHlwZSwgcyk7CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihlcnJzdHIpOwogICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICAgICAgICAgIFB5T1Nfc25wcmludGYoYnVmLCBzaXplb2YoYnVmKSwgIiglcykgdW5rbm93biBlcnJvciIsIGVycnR5cGUpOwogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgYnVmKTsKQEAgLTIwNDEsMTQgKzIxMzQsNyBAQAogICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKFB5QXJlbmFfQWRkUHlPYmplY3QoYy0+Y19hcmVuYSwgc3RyKSA8IDApIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGJ5dGVzbW9kZSkKLSAgICAgICAgICAgIHJldHVybiBCeXRlcyhzdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgcmV0dXJuIFN0cihzdHIsIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgcmV0dXJuIHN0cjsKICAgICB9CiAgICAgY2FzZSBOVU1CRVI6IHsKICAgICAgICAgUHlPYmplY3QgKnB5bnVtID0gcGFyc2VudW1iZXIoYywgU1RSKGNoKSk7CkBAIC0yODA1LDggKzI4OTEsOSBAQAogYXN0X2Zvcl9leHByX3N0bXQoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKIHsKICAgICBSRVEobiwgZXhwcl9zdG10KTsKLSAgICAvKiBleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KQotICAgICAgICAgICAgICAgIHwgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdCkpKikKKyAgICAvKiBleHByX3N0bXQ6IHRlc3RsaXN0X3N0YXJfZXhwciAoYW5uYXNzaWduIHwgYXVnYXNzaWduICh5aWVsZF9leHByfHRlc3RsaXN0KSB8CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCc9JyAoeWllbGRfZXhwcnx0ZXN0bGlzdF9zdGFyX2V4cHIpKSopCisgICAgICAgYW5uYXNzaWduOiAnOicgdGVzdCBbJz0nIHRlc3RdCiAgICAgICAgdGVzdGxpc3Rfc3Rhcl9leHByOiAodGVzdHxzdGFyX2V4cHIpICgnLCcgdGVzdHxzdGFyX2V4cHIpKiBbJywnXQogICAgICAgIGF1Z2Fzc2lnbjogJys9JyB8ICctPScgfCAnKj0nIHwgJ0A9JyB8ICcvPScgfCAnJT0nIHwgJyY9JyB8ICd8PScgfCAnXj0nCiAgICAgICAgICAgICAgICAgfCAnPDw9JyB8ICc+Pj0nIHwgJyoqPScgfCAnLy89JwpAQCAtMjg1OCw2ICsyOTQ1LDc2IEBACiAKICAgICAgICAgcmV0dXJuIEF1Z0Fzc2lnbihleHByMSwgbmV3b3BlcmF0b3IsIGV4cHIyLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CiAgICAgfQorICAgIGVsc2UgaWYgKFRZUEUoQ0hJTEQobiwgMSkpID09IGFubmFzc2lnbikgeworICAgICAgICBleHByX3R5IGV4cHIxLCBleHByMiwgZXhwcjM7CisgICAgICAgIG5vZGUgKmNoID0gQ0hJTEQobiwgMCk7CisgICAgICAgIG5vZGUgKmRlZXAsICphbm4gPSBDSElMRChuLCAxKTsKKyAgICAgICAgaW50IHNpbXBsZSA9IDE7CisKKyAgICAgICAgLyogd2Uga2VlcCB0cmFjayBvZiBwYXJlbnMgdG8gcXVhbGlmeSAoeCkgYXMgZXhwcmVzc2lvbiBub3QgbmFtZSAqLworICAgICAgICBkZWVwID0gY2g7CisgICAgICAgIHdoaWxlIChOQ0goZGVlcCkgPT0gMSkgeworICAgICAgICAgICAgZGVlcCA9IENISUxEKGRlZXAsIDApOworICAgICAgICB9CisgICAgICAgIGlmIChOQ0goZGVlcCkgPiAwICYmIFRZUEUoQ0hJTEQoZGVlcCwgMCkpID09IExQQVIpIHsKKyAgICAgICAgICAgIHNpbXBsZSA9IDA7CisgICAgICAgIH0KKyAgICAgICAgZXhwcjEgPSBhc3RfZm9yX3Rlc3RsaXN0KGMsIGNoKTsKKyAgICAgICAgaWYgKCFleHByMSkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgc3dpdGNoIChleHByMS0+a2luZCkgeworICAgICAgICAgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgICAgICAgICAgICAgaWYgKGZvcmJpZGRlbl9uYW1lKGMsIGV4cHIxLT52Lk5hbWUuaWQsIG4sIDApKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHByMS0+di5OYW1lLmN0eCA9IFN0b3JlOworICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgICAgICAgICBpZiAoZm9yYmlkZGVuX25hbWUoYywgZXhwcjEtPnYuQXR0cmlidXRlLmF0dHIsIG4sIDEpKSB7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBleHByMS0+di5BdHRyaWJ1dGUuY3R4ID0gU3RvcmU7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIFN1YnNjcmlwdF9raW5kOgorICAgICAgICAgICAgICAgIGV4cHIxLT52LlN1YnNjcmlwdC5jdHggPSBTdG9yZTsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIGNhc2UgTGlzdF9raW5kOgorICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBjaCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIm9ubHkgc2luZ2xlIHRhcmdldCAobm90IGxpc3QpIGNhbiBiZSBhbm5vdGF0ZWQiKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIGNhc2UgVHVwbGVfa2luZDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJvbmx5IHNpbmdsZSB0YXJnZXQgKG5vdCB0dXBsZSkgY2FuIGJlIGFubm90YXRlZCIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICJpbGxlZ2FsIHRhcmdldCBmb3IgYW5ub3RhdGlvbiIpOworICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisKKyAgICAgICAgaWYgKGV4cHIxLT5raW5kICE9IE5hbWVfa2luZCkgeworICAgICAgICAgICAgc2ltcGxlID0gMDsKKyAgICAgICAgfQorICAgICAgICBjaCA9IENISUxEKGFubiwgMSk7CisgICAgICAgIGV4cHIyID0gYXN0X2Zvcl9leHByKGMsIGNoKTsKKyAgICAgICAgaWYgKCFleHByMikgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgaWYgKE5DSChhbm4pID09IDIpIHsKKyAgICAgICAgICAgIHJldHVybiBBbm5Bc3NpZ24oZXhwcjEsIGV4cHIyLCBOVUxMLCBzaW1wbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJTkVOTyhuKSwgbi0+bl9jb2xfb2Zmc2V0LCBjLT5jX2FyZW5hKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGNoID0gQ0hJTEQoYW5uLCAzKTsKKyAgICAgICAgICAgIGV4cHIzID0gYXN0X2Zvcl9leHByKGMsIGNoKTsKKyAgICAgICAgICAgIGlmICghZXhwcjMpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBBbm5Bc3NpZ24oZXhwcjEsIGV4cHIyLCBleHByMywgc2ltcGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisgICAgICAgIH0KKyAgICB9CiAgICAgZWxzZSB7CiAgICAgICAgIGludCBpOwogICAgICAgICBhc2RsX3NlcSAqdGFyZ2V0czsKQEAgLTI5OTIsOSArMzE0OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgZmxvd19zdG10OiAlZCIsIFRZUEUoY2gpKTsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLQotICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwgInVuaGFuZGxlZCBmbG93IHN0YXRlbWVudCIpOwotICAgIHJldHVybiBOVUxMOwogfQogCiBzdGF0aWMgYWxpYXNfdHkKQEAgLTMyMDgsMTQgKzMzNjIsMTQgQEAKICAgICAgICAgICAgIGFsaWFzX3R5IGltcG9ydF9hbGlhcyA9IGFsaWFzX2Zvcl9pbXBvcnRfbmFtZShjLCBuLCAxKTsKICAgICAgICAgICAgIGlmICghaW1wb3J0X2FsaWFzKQogICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCAwLCBpbXBvcnRfYWxpYXMpOworICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIDAsIGltcG9ydF9hbGlhcyk7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgTkNIKG4pOyBpICs9IDIpIHsKICAgICAgICAgICAgICAgICBhbGlhc190eSBpbXBvcnRfYWxpYXMgPSBhbGlhc19mb3JfaW1wb3J0X25hbWUoYywgQ0hJTEQobiwgaSksIDEpOwogICAgICAgICAgICAgICAgIGlmICghaW1wb3J0X2FsaWFzKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXFfU0VUKGFsaWFzZXMsIGkgLyAyLCBpbXBvcnRfYWxpYXMpOworICAgICAgICAgICAgICAgIGFzZGxfc2VxX1NFVChhbGlhc2VzLCBpIC8gMiwgaW1wb3J0X2FsaWFzKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgICBpZiAobW9kICE9IE5VTEwpCkBAIC0zODgxLDcgKzQwMzUsNyBAQAogfQogCiBzdGF0aWMgUHlPYmplY3QgKgotcGFyc2VudW1iZXIoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcykKK3BhcnNlbnVtYmVyX3JhdyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzKQogewogICAgIGNvbnN0IGNoYXIgKmVuZDsKICAgICBsb25nIHg7CkBAIC0zOTI0LDYgKzQwNzgsMzEgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK3BhcnNlbnVtYmVyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IGNoYXIgKnMpCit7CisgICAgY2hhciAqZHVwLCAqZW5kOworICAgIFB5T2JqZWN0ICpyZXMgPSBOVUxMOworCisgICAgYXNzZXJ0KHMgIT0gTlVMTCk7CisKKyAgICBpZiAoc3RyY2hyKHMsICdfJykgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gcGFyc2VudW1iZXJfcmF3KGMsIHMpOworICAgIH0KKyAgICAvKiBDcmVhdGUgYSBkdXBsaWNhdGUgd2l0aG91dCB1bmRlcnNjb3Jlcy4gKi8KKyAgICBkdXAgPSBQeU1lbV9NYWxsb2Moc3RybGVuKHMpICsgMSk7CisgICAgZW5kID0gZHVwOworICAgIGZvciAoOyAqczsgcysrKSB7CisgICAgICAgIGlmICgqcyAhPSAnXycpIHsKKyAgICAgICAgICAgICplbmQrKyA9ICpzOworICAgICAgICB9CisgICAgfQorICAgICplbmQgPSAnXDAnOworICAgIHJlcyA9IHBhcnNlbnVtYmVyX3JhdyhjLCBkdXApOworICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICByZXR1cm4gcmVzOworfQorCitzdGF0aWMgUHlPYmplY3QgKgogZGVjb2RlX3V0Zjgoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqKnNQdHIsIGNvbnN0IGNoYXIgKmVuZCkKIHsKICAgICBjb25zdCBjaGFyICpzLCAqdDsKQEAgLTM5MzUsODQgKzQxMTQsODYyIEBACiB9CiAKIHN0YXRpYyBQeU9iamVjdCAqCi1kZWNvZGVfdW5pY29kZShzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBjaGFyICpzLCBzaXplX3QgbGVuLCBpbnQgcmF3bW9kZSwgY29uc3QgY2hhciAqZW5jb2RpbmcpCitkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3QgY2hhciAqcywgc2l6ZV90IGxlbikKIHsKICAgICBQeU9iamVjdCAqdiwgKnU7CiAgICAgY2hhciAqYnVmOwogICAgIGNoYXIgKnA7CiAgICAgY29uc3QgY2hhciAqZW5kOwogCi0gICAgaWYgKGVuY29kaW5nID09IE5VTEwpIHsKLSAgICAgICAgdSA9IE5VTEw7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLyogY2hlY2sgZm9yIGludGVnZXIgb3ZlcmZsb3cgKi8KLSAgICAgICAgaWYgKGxlbiA+IFBZX1NJWkVfTUFYIC8gNikKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICAvKiAiw6QiICgyIGJ5dGVzKSBtYXkgYmVjb21lICJcVTAwMDAwMEU0IiAoMTAgYnl0ZXMpLCBvciAxOjUKLSAgICAgICAgICAgIlzDpCIgKDMgYnl0ZXMpIG1heSBiZWNvbWUgIlx1MDA1Y1xVMDAwMDAwRTQiICgxNiBieXRlcyksIG9yIH4xOjYgKi8KLSAgICAgICAgdSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBsZW4gKiA2KTsKLSAgICAgICAgaWYgKHUgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICBwID0gYnVmID0gUHlCeXRlc19Bc1N0cmluZyh1KTsKLSAgICAgICAgZW5kID0gcyArIGxlbjsKLSAgICAgICAgd2hpbGUgKHMgPCBlbmQpIHsKLSAgICAgICAgICAgIGlmICgqcyA9PSAnXFwnKSB7Ci0gICAgICAgICAgICAgICAgKnArKyA9ICpzKys7Ci0gICAgICAgICAgICAgICAgaWYgKCpzICYgMHg4MCkgewotICAgICAgICAgICAgICAgICAgICBzdHJjcHkocCwgInUwMDVjIik7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gNTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoKnMgJiAweDgwKSB7IC8qIFhYWCBpbmVmZmljaWVudCAqLwotICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp3OwotICAgICAgICAgICAgICAgIGludCBraW5kOwotICAgICAgICAgICAgICAgIHZvaWQgKmRhdGE7Ci0gICAgICAgICAgICAgICAgUHlfc3NpemVfdCBsZW4sIGk7Ci0gICAgICAgICAgICAgICAgdyA9IGRlY29kZV91dGY4KGMsICZzLCBlbmQpOwotICAgICAgICAgICAgICAgIGlmICh3ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHUpOwotICAgICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAga2luZCA9IFB5VW5pY29kZV9LSU5EKHcpOwotICAgICAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh3KTsKLSAgICAgICAgICAgICAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSCh3KTsKLSAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKLSAgICAgICAgICAgICAgICAgICAgUHlfVUNTNCBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKLSAgICAgICAgICAgICAgICAgICAgc3ByaW50ZihwLCAiXFxVJTA4eCIsIGNocik7Ci0gICAgICAgICAgICAgICAgICAgIHAgKz0gMTA7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIC8qIFNob3VsZCBiZSBpbXBvc3NpYmxlIHRvIG92ZXJmbG93ICovCi0gICAgICAgICAgICAgICAgYXNzZXJ0KHAgLSBidWYgPD0gUHlfU0laRSh1KSk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHcpOwotICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAvKiBjaGVjayBmb3IgaW50ZWdlciBvdmVyZmxvdyAqLworICAgIGlmIChsZW4gPiBTSVpFX01BWCAvIDYpCisgICAgICAgIHJldHVybiBOVUxMOworICAgIC8qICLDpCIgKDIgYnl0ZXMpIG1heSBiZWNvbWUgIlxVMDAwMDAwRTQiICgxMCBieXRlcyksIG9yIDE6NQorICAgICAgICJcw6QiICgzIGJ5dGVzKSBtYXkgYmVjb21lICJcdTAwNWNcVTAwMDAwMEU0IiAoMTYgYnl0ZXMpLCBvciB+MTo2ICovCisgICAgdSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKilOVUxMLCBsZW4gKiA2KTsKKyAgICBpZiAodSA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBwID0gYnVmID0gUHlCeXRlc19Bc1N0cmluZyh1KTsKKyAgICBlbmQgPSBzICsgbGVuOworICAgIHdoaWxlIChzIDwgZW5kKSB7CisgICAgICAgIGlmICgqcyA9PSAnXFwnKSB7CisgICAgICAgICAgICAqcCsrID0gKnMrKzsKKyAgICAgICAgICAgIGlmICgqcyAmIDB4ODApIHsKKyAgICAgICAgICAgICAgICBzdHJjcHkocCwgInUwMDVjIik7CisgICAgICAgICAgICAgICAgcCArPSA1OwogICAgICAgICAgICAgfQogICAgICAgICB9Ci0gICAgICAgIGxlbiA9IHAgLSBidWY7Ci0gICAgICAgIHMgPSBidWY7CisgICAgICAgIGlmICgqcyAmIDB4ODApIHsgLyogWFhYIGluZWZmaWNpZW50ICovCisgICAgICAgICAgICBQeU9iamVjdCAqdzsKKyAgICAgICAgICAgIGludCBraW5kOworICAgICAgICAgICAgdm9pZCAqZGF0YTsKKyAgICAgICAgICAgIFB5X3NzaXplX3QgbGVuLCBpOworICAgICAgICAgICAgdyA9IGRlY29kZV91dGY4KGMsICZzLCBlbmQpOworICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih1KTsKKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGtpbmQgPSBQeVVuaWNvZGVfS0lORCh3KTsKKyAgICAgICAgICAgIGRhdGEgPSBQeVVuaWNvZGVfREFUQSh3KTsKKyAgICAgICAgICAgIGxlbiA9IFB5VW5pY29kZV9HRVRfTEVOR1RIKHcpOworICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgUHlfVUNTNCBjaHIgPSBQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKTsKKyAgICAgICAgICAgICAgICBzcHJpbnRmKHAsICJcXFUlMDh4IiwgY2hyKTsKKyAgICAgICAgICAgICAgICBwICs9IDEwOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogU2hvdWxkIGJlIGltcG9zc2libGUgdG8gb3ZlcmZsb3cgKi8KKyAgICAgICAgICAgIGFzc2VydChwIC0gYnVmIDw9IFB5X1NJWkUodSkpOworICAgICAgICAgICAgUHlfREVDUkVGKHcpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgKnArKyA9ICpzKys7CisgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKHJhd21vZGUpCi0gICAgICAgIHYgPSBQeVVuaWNvZGVfRGVjb2RlUmF3VW5pY29kZUVzY2FwZShzLCBsZW4sIE5VTEwpOwotICAgIGVsc2UKLSAgICAgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCk7CisgICAgbGVuID0gcCAtIGJ1ZjsKKyAgICBzID0gYnVmOworCisgICAgdiA9IFB5VW5pY29kZV9EZWNvZGVVbmljb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCk7CiAgICAgUHlfWERFQ1JFRih1KTsKICAgICByZXR1cm4gdjsKIH0KIAotLyogcyBpcyBhIFB5dGhvbiBzdHJpbmcgbGl0ZXJhbCwgaW5jbHVkaW5nIHRoZSBicmFja2V0aW5nIHF1b3RlIGNoYXJhY3RlcnMsCi0gKiBhbmQgciAmL29yIGIgcHJlZml4ZXMgKGlmIGFueSksIGFuZCBlbWJlZGRlZCBlc2NhcGUgc2VxdWVuY2VzIChpZiBhbnkpLgotICogcGFyc2VzdHIgcGFyc2VzIGl0LCBhbmQgcmV0dXJucyB0aGUgZGVjb2RlZCBQeXRob24gc3RyaW5nIG9iamVjdC4KLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlc3RyKHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4sIGludCAqYnl0ZXNtb2RlKQorLyogQ29tcGlsZSB0aGlzIGV4cHJlc3Npb24gaW4gdG8gYW4gZXhwcl90eS4gIEFkZCBwYXJlbnMgYXJvdW5kIHRoZQorICAgZXhwcmVzc2lvbiwgaW4gb3JkZXIgdG8gYWxsb3cgbGVhZGluZyBzcGFjZXMgaW4gdGhlIGV4cHJlc3Npb24uICovCitzdGF0aWMgZXhwcl90eQorZnN0cmluZ19jb21waWxlX2V4cHIoY29uc3QgY2hhciAqZXhwcl9zdGFydCwgY29uc3QgY2hhciAqZXhwcl9lbmQsCisgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQorCit7CisgICAgaW50IGFsbF93aGl0ZXNwYWNlID0gMTsKKyAgICBpbnQga2luZDsKKyAgICB2b2lkICpkYXRhOworICAgIFB5Q29tcGlsZXJGbGFncyBjZjsKKyAgICBtb2RfdHkgbW9kOworICAgIGNoYXIgKnN0cjsKKyAgICBQeU9iamVjdCAqbzsKKyAgICBQeV9zc2l6ZV90IGxlbjsKKyAgICBQeV9zc2l6ZV90IGk7CisKKyAgICBhc3NlcnQoZXhwcl9lbmQgPj0gZXhwcl9zdGFydCk7CisgICAgYXNzZXJ0KCooZXhwcl9zdGFydC0xKSA9PSAneycpOworICAgIGFzc2VydCgqZXhwcl9lbmQgPT0gJ30nIHx8ICpleHByX2VuZCA9PSAnIScgfHwgKmV4cHJfZW5kID09ICc6Jyk7CisKKyAgICAvKiBXZSBrbm93IHRoZXJlIGFyZSBubyBlc2NhcGVzIGhlcmUsIGJlY2F1c2UgYmFja3NsYXNoZXMgYXJlIG5vdCBhbGxvd2VkLAorICAgICAgIGFuZCB3ZSBrbm93IGl0J3MgdXRmLTggZW5jb2RlZCAocGVyIFBFUCAyNjMpLiAgQnV0LCBpbiBvcmRlciB0byBjaGVjaworICAgICAgIHRoYXQgZWFjaCBjaGFyIGlzIG5vdCB3aGl0ZXNwYWNlLCB3ZSBuZWVkIHRvIGRlY29kZSBpdCB0byB1bmljb2RlLgorICAgICAgIFdoaWNoIGlzIHVuZm9ydHVuYXRlLCBidXQgc3VjaCBpcyBsaWZlLiAqLworCisgICAgLyogSWYgdGhlIHN1YnN0cmluZyBpcyBhbGwgd2hpdGVzcGFjZSwgaXQncyBhbiBlcnJvci4gIFdlIG5lZWQgdG8gY2F0Y2gKKyAgICAgICB0aGlzIGhlcmUsIGFuZCBub3Qgd2hlbiB3ZSBjYWxsIFB5UGFyc2VyX0FTVEZyb21TdHJpbmcsIGJlY2F1c2UgdHVybmluZworICAgICAgIHRoZSBleHByZXNzaW9uICcnIGluIHRvICcoKScgd291bGQgZ28gZnJvbSBiZWluZyBpbnZhbGlkIHRvIHZhbGlkLiAqLworICAgIC8qIE5vdGUgdGhhdCB0aGlzIGNvZGUgc2F5cyBhbiBlbXB0eSBzdHJpbmcgaXMgYWxsIHdoaXRlc3BhY2UuICBUaGF0J3MKKyAgICAgICBpbXBvcnRhbnQuICBUaGVyZSdzIGEgdGVzdCBmb3IgaXQ6IGYne30nLiAqLworICAgIG8gPSBQeVVuaWNvZGVfRGVjb2RlVVRGOChleHByX3N0YXJ0LCBleHByX2VuZC1leHByX3N0YXJ0LCBOVUxMKTsKKyAgICBpZiAobyA9PSBOVUxMKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICBsZW4gPSBQeVVuaWNvZGVfR0VUX0xFTkdUSChvKTsKKyAgICBraW5kID0gUHlVbmljb2RlX0tJTkQobyk7CisgICAgZGF0YSA9IFB5VW5pY29kZV9EQVRBKG8pOworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgeworICAgICAgICBpZiAoIVB5X1VOSUNPREVfSVNTUEFDRShQeVVuaWNvZGVfUkVBRChraW5kLCBkYXRhLCBpKSkpIHsKKyAgICAgICAgICAgIGFsbF93aGl0ZXNwYWNlID0gMDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorICAgIFB5X0RFQ1JFRihvKTsKKyAgICBpZiAoYWxsX3doaXRlc3BhY2UpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZW1wdHkgZXhwcmVzc2lvbiBub3QgYWxsb3dlZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBSZXVzZSBsZW4gdG8gYmUgdGhlIGxlbmd0aCBvZiB0aGUgdXRmLTggaW5wdXQgc3RyaW5nLiAqLworICAgIGxlbiA9IGV4cHJfZW5kIC0gZXhwcl9zdGFydDsKKyAgICAvKiBBbGxvY2F0ZSAzIGV4dHJhIGJ5dGVzOiBvcGVuIHBhcmVuLCBjbG9zZSBwYXJlbiwgbnVsbCBieXRlLiAqLworICAgIHN0ciA9IFB5TWVtX1Jhd01hbGxvYyhsZW4gKyAzKTsKKyAgICBpZiAoc3RyID09IE5VTEwpCisgICAgICAgIHJldHVybiBOVUxMOworCisgICAgc3RyWzBdID0gJygnOworICAgIG1lbWNweShzdHIrMSwgZXhwcl9zdGFydCwgbGVuKTsKKyAgICBzdHJbbGVuKzFdID0gJyknOworICAgIHN0cltsZW4rMl0gPSAwOworCisgICAgY2YuY2ZfZmxhZ3MgPSBQeUNGX09OTFlfQVNUOworICAgIG1vZCA9IFB5UGFyc2VyX0FTVEZyb21TdHJpbmcoc3RyLCAiPGZzdHJpbmc+IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X2V2YWxfaW5wdXQsICZjZiwgYy0+Y19hcmVuYSk7CisgICAgUHlNZW1fUmF3RnJlZShzdHIpOworICAgIGlmICghbW9kKQorICAgICAgICByZXR1cm4gTlVMTDsKKyAgICByZXR1cm4gbW9kLT52LkV4cHJlc3Npb24uYm9keTsKK30KKworLyogUmV0dXJuIC0xIG9uIGVycm9yLgorCisgICBSZXR1cm4gMCBpZiB3ZSByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIGxpdGVyYWwuCisKKyAgIFJldHVybiAxIGlmIHdlIGhhdmVuJ3QgcmVhY2hlZCB0aGUgZW5kIG9mIHRoZSBsaXRlcmFsLCBidXQgd2Ugd2FudAorICAgdGhlIGNhbGxlciB0byBwcm9jZXNzIHRoZSBsaXRlcmFsIHVwIHRvIHRoaXMgcG9pbnQuIFVzZWQgZm9yCisgICBkb3VibGVkIGJyYWNlcy4KKyovCitzdGF0aWMgaW50Citmc3RyaW5nX2ZpbmRfbGl0ZXJhbChjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmxpdGVyYWwsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgLyogR2V0IGFueSBsaXRlcmFsIHN0cmluZy4gSXQgZW5kcyB3aGVuIHdlIGhpdCBhbiB1bi1kb3VibGVkIGxlZnQKKyAgICAgICBicmFjZSAod2hpY2ggaXNuJ3QgcGFydCBvZiBhIHVuaWNvZGUgbmFtZSBlc2NhcGUgc3VjaCBhcworICAgICAgICJcTntFVUxFUiBDT05TVEFOVH0iKSwgb3IgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiAqLworCisgICAgY29uc3QgY2hhciAqbGl0ZXJhbF9zdGFydCA9ICpzdHI7CisgICAgY29uc3QgY2hhciAqbGl0ZXJhbF9lbmQ7CisgICAgaW50IGluX25hbWVkX2VzY2FwZSA9IDA7CisgICAgaW50IHJlc3VsdCA9IDA7CisKKyAgICBhc3NlcnQoKmxpdGVyYWwgPT0gTlVMTCk7CisgICAgZm9yICg7ICpzdHIgPCBlbmQ7ICgqc3RyKSsrKSB7CisgICAgICAgIGNoYXIgY2ggPSAqKnN0cjsKKyAgICAgICAgaWYgKCFpbl9uYW1lZF9lc2NhcGUgJiYgY2ggPT0gJ3snICYmICgqc3RyKS1saXRlcmFsX3N0YXJ0ID49IDIgJiYKKyAgICAgICAgICAgICooKnN0ci0yKSA9PSAnXFwnICYmICooKnN0ci0xKSA9PSAnTicpIHsKKyAgICAgICAgICAgIGluX25hbWVkX2VzY2FwZSA9IDE7CisgICAgICAgIH0gZWxzZSBpZiAoaW5fbmFtZWRfZXNjYXBlICYmIGNoID09ICd9JykgeworICAgICAgICAgICAgaW5fbmFtZWRfZXNjYXBlID0gMDsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAneycgfHwgY2ggPT0gJ30nKSB7CisgICAgICAgICAgICAvKiBDaGVjayBmb3IgZG91YmxlZCBicmFjZXMsIGJ1dCBvbmx5IGF0IHRoZSB0b3AgbGV2ZWwuIElmCisgICAgICAgICAgICAgICB3ZSBjaGVja2VkIGF0IGV2ZXJ5IGxldmVsLCB0aGVuIGYnezA6ezN9fScgd291bGQgZmFpbAorICAgICAgICAgICAgICAgd2l0aCB0aGUgdHdvIGNsb3NpbmcgYnJhY2VzLiAqLworICAgICAgICAgICAgaWYgKHJlY3Vyc2VfbHZsID09IDApIHsKKyAgICAgICAgICAgICAgICBpZiAoKnN0cisxIDwgZW5kICYmICooKnN0cisxKSA9PSBjaCkgeworICAgICAgICAgICAgICAgICAgICAvKiBXZSdyZSBnb2luZyB0byB0ZWxsIHRoZSBjYWxsZXIgdGhhdCB0aGUgbGl0ZXJhbCBlbmRzCisgICAgICAgICAgICAgICAgICAgICAgIGhlcmUsIGJ1dCB0aGF0IHRoZXkgc2hvdWxkIGNvbnRpbnVlIHNjYW5uaW5nLiBCdXQgYWxzbworICAgICAgICAgICAgICAgICAgICAgICBza2lwIG92ZXIgdGhlIHNlY29uZCBicmFjZSB3aGVuIHdlIHJlc3VtZSBzY2FubmluZy4gKi8KKyAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQgPSAqc3RyKzE7CisgICAgICAgICAgICAgICAgICAgICpzdHIgKz0gMjsKKyAgICAgICAgICAgICAgICAgICAgcmVzdWx0ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBkb25lOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIC8qIFdoZXJlIGEgc2luZ2xlICd7JyBpcyB0aGUgc3RhcnQgb2YgYSBuZXcgZXhwcmVzc2lvbiwgYQorICAgICAgICAgICAgICAgICAgIHNpbmdsZSAnfScgaXMgbm90IGFsbG93ZWQuICovCisgICAgICAgICAgICAgICAgaWYgKGNoID09ICd9JykgeworICAgICAgICAgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBzaW5nbGUgJ30nIGlzIG5vdCBhbGxvd2VkIik7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBXZSdyZSBlaXRoZXIgYXQgYSAneycsIHdoaWNoIG1lYW5zIHdlJ3JlIHN0YXJ0aW5nIGFub3RoZXIKKyAgICAgICAgICAgICAgIGV4cHJlc3Npb247IG9yIGEgJ30nLCB3aGljaCBtZWFucyB3ZSdyZSBhdCB0aGUgZW5kIG9mIHRoaXMKKyAgICAgICAgICAgICAgIGYtc3RyaW5nIChmb3IgYSBuZXN0ZWQgZm9ybWF0X3NwZWMpLiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKyAgICB9CisgICAgbGl0ZXJhbF9lbmQgPSAqc3RyOworICAgIGFzc2VydCgqc3RyIDw9IGVuZCk7CisgICAgYXNzZXJ0KCpzdHIgPT0gZW5kIHx8ICoqc3RyID09ICd7JyB8fCAqKnN0ciA9PSAnfScpOworZG9uZToKKyAgICBpZiAobGl0ZXJhbF9zdGFydCAhPSBsaXRlcmFsX2VuZCkgeworICAgICAgICBpZiAocmF3KQorICAgICAgICAgICAgKmxpdGVyYWwgPSBQeVVuaWNvZGVfRGVjb2RlVVRGOFN0YXRlZnVsKGxpdGVyYWxfc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGl0ZXJhbF9lbmQtbGl0ZXJhbF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOVUxMLCBOVUxMKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKmxpdGVyYWwgPSBkZWNvZGVfdW5pY29kZV93aXRoX2VzY2FwZXMoYywgbGl0ZXJhbF9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpdGVyYWxfZW5kLWxpdGVyYWxfc3RhcnQpOworICAgICAgICBpZiAoISpsaXRlcmFsKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gcmVzdWx0OworfQorCisvKiBGb3J3YXJkIGRlY2xhcmF0aW9uIGJlY2F1c2UgcGFyc2luZyBpcyByZWN1cnNpdmUuICovCitzdGF0aWMgZXhwcl90eQorZnN0cmluZ19wYXJzZShjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbik7CisKKy8qIFBhcnNlIHRoZSBmLXN0cmluZyBhdCAqc3RyLCBlbmRpbmcgYXQgZW5kLiAgV2Uga25vdyAqc3RyIHN0YXJ0cyBhbgorICAgZXhwcmVzc2lvbiAoc28gaXQgbXVzdCBiZSBhICd7JykuIFJldHVybnMgdGhlIEZvcm1hdHRlZFZhbHVlIG5vZGUsCisgICB3aGljaCBpbmNsdWRlcyB0aGUgZXhwcmVzc2lvbiwgY29udmVyc2lvbiBjaGFyYWN0ZXIsIGFuZAorICAgZm9ybWF0X3NwZWMgZXhwcmVzc2lvbi4KKworICAgTm90ZSB0aGF0IEkgZG9uJ3QgZG8gYSBwZXJmZWN0IGpvYiBoZXJlOiBJIGRvbid0IG1ha2Ugc3VyZSB0aGF0IGEKKyAgIGNsb3NpbmcgYnJhY2UgZG9lc24ndCBtYXRjaCBhbiBvcGVuaW5nIHBhcmVuLCBmb3IgZXhhbXBsZS4gSXQKKyAgIGRvZXNuJ3QgbmVlZCB0byBlcnJvciBvbiBhbGwgaW52YWxpZCBleHByZXNzaW9ucywganVzdCBjb3JyZWN0bHkKKyAgIGZpbmQgdGhlIGVuZCBvZiBhbGwgdmFsaWQgb25lcy4gQW55IGVycm9ycyBpbnNpZGUgdGhlIGV4cHJlc3Npb24KKyAgIHdpbGwgYmUgY2F1Z2h0IHdoZW4gd2UgcGFyc2UgaXQgbGF0ZXIuICovCitzdGF0aWMgaW50Citmc3RyaW5nX2ZpbmRfZXhwcihjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgIGV4cHJfdHkgKmV4cHJlc3Npb24sIHN0cnVjdCBjb21waWxpbmcgKmMsIGNvbnN0IG5vZGUgKm4pCit7CisgICAgLyogUmV0dXJuIC0xIG9uIGVycm9yLCBlbHNlIDAuICovCisKKyAgICBjb25zdCBjaGFyICpleHByX3N0YXJ0OworICAgIGNvbnN0IGNoYXIgKmV4cHJfZW5kOworICAgIGV4cHJfdHkgc2ltcGxlX2V4cHJlc3Npb247CisgICAgZXhwcl90eSBmb3JtYXRfc3BlYyA9IE5VTEw7IC8qIE9wdGlvbmFsIGZvcm1hdCBzcGVjaWZpZXIuICovCisgICAgaW50IGNvbnZlcnNpb24gPSAtMTsgLyogVGhlIGNvbnZlcnNpb24gY2hhci4gLTEgaWYgbm90IHNwZWNpZmllZC4gKi8KKworICAgIC8qIDAgaWYgd2UncmUgbm90IGluIGEgc3RyaW5nLCBlbHNlIHRoZSBxdW90ZSBjaGFyIHdlJ3JlIHRyeWluZyB0bworICAgICAgIG1hdGNoIChzaW5nbGUgb3IgZG91YmxlIHF1b3RlKS4gKi8KKyAgICBjaGFyIHF1b3RlX2NoYXIgPSAwOworCisgICAgLyogSWYgd2UncmUgaW5zaWRlIGEgc3RyaW5nLCAxPW5vcm1hbCwgMz10cmlwbGUtcXVvdGVkLiAqLworICAgIGludCBzdHJpbmdfdHlwZSA9IDA7CisKKyAgICAvKiBLZWVwIHRyYWNrIG9mIG5lc3RpbmcgbGV2ZWwgZm9yIGJyYWNlcy9wYXJlbnMvYnJhY2tldHMgaW4KKyAgICAgICBleHByZXNzaW9ucy4gKi8KKyAgICBQeV9zc2l6ZV90IG5lc3RlZF9kZXB0aCA9IDA7CisKKyAgICAvKiBDYW4gb25seSBuZXN0IG9uZSBsZXZlbCBkZWVwLiAqLworICAgIGlmIChyZWN1cnNlX2x2bCA+PSAyKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cHJlc3Npb25zIG5lc3RlZCB0b28gZGVlcGx5Iik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICAvKiBUaGUgZmlyc3QgY2hhciBtdXN0IGJlIGEgbGVmdCBicmFjZSwgb3Igd2Ugd291bGRuJ3QgaGF2ZSBnb3R0ZW4KKyAgICAgICBoZXJlLiBTa2lwIG92ZXIgaXQuICovCisgICAgYXNzZXJ0KCoqc3RyID09ICd7Jyk7CisgICAgKnN0ciArPSAxOworCisgICAgZXhwcl9zdGFydCA9ICpzdHI7CisgICAgZm9yICg7ICpzdHIgPCBlbmQ7ICgqc3RyKSsrKSB7CisgICAgICAgIGNoYXIgY2g7CisKKyAgICAgICAgLyogTG9vcCBpbnZhcmlhbnRzLiAqLworICAgICAgICBhc3NlcnQobmVzdGVkX2RlcHRoID49IDApOworICAgICAgICBhc3NlcnQoKnN0ciA+PSBleHByX3N0YXJ0ICYmICpzdHIgPCBlbmQpOworICAgICAgICBpZiAocXVvdGVfY2hhcikKKyAgICAgICAgICAgIGFzc2VydChzdHJpbmdfdHlwZSA9PSAxIHx8IHN0cmluZ190eXBlID09IDMpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBhc3NlcnQoc3RyaW5nX3R5cGUgPT0gMCk7CisKKyAgICAgICAgY2ggPSAqKnN0cjsKKyAgICAgICAgLyogTm93aGVyZSBpbnNpZGUgYW4gZXhwcmVzc2lvbiBpcyBhIGJhY2tzbGFzaCBhbGxvd2VkLiAqLworICAgICAgICBpZiAoY2ggPT0gJ1xcJykgeworICAgICAgICAgICAgLyogRXJyb3I6IGNhbid0IGluY2x1ZGUgYSBiYWNrc2xhc2ggY2hhcmFjdGVyLCBpbnNpZGUKKyAgICAgICAgICAgICAgIHBhcmVucyBvciBzdHJpbmdzIG9yIG5vdC4gKi8KKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY2Fubm90IGluY2x1ZGUgYSBiYWNrc2xhc2giKTsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQorICAgICAgICBpZiAocXVvdGVfY2hhcikgeworICAgICAgICAgICAgLyogV2UncmUgaW5zaWRlIGEgc3RyaW5nLiBTZWUgaWYgd2UncmUgYXQgdGhlIGVuZC4gKi8KKyAgICAgICAgICAgIC8qIFRoaXMgY29kZSBuZWVkcyB0byBpbXBsZW1lbnQgdGhlIHNhbWUgbm9uLWVycm9yIGxvZ2ljCisgICAgICAgICAgICAgICBhcyB0b2tfZ2V0IGZyb20gdG9rZW5pemVyLmMsIGF0IHRoZSBsZXR0ZXJfcXVvdGUKKyAgICAgICAgICAgICAgIGxhYmVsLiBUbyBhY3R1YWxseSBzaGFyZSB0aGF0IGNvZGUgd291bGQgYmUgYQorICAgICAgICAgICAgICAgbmlnaHRtYXJlLiBCdXQsIGl0J3MgdW5saWtlbHkgdG8gY2hhbmdlIGFuZCBpcyBzbWFsbCwKKyAgICAgICAgICAgICAgIHNvIGR1cGxpY2F0ZSBpdCBoZXJlLiBOb3RlIHdlIGRvbid0IG5lZWQgdG8gY2F0Y2ggYWxsCisgICAgICAgICAgICAgICBvZiB0aGUgZXJyb3JzLCBzaW5jZSB0aGV5J2xsIGJlIGNhdWdodCB3aGVuIHBhcnNpbmcgdGhlCisgICAgICAgICAgICAgICBleHByZXNzaW9uLiBXZSBqdXN0IG5lZWQgdG8gbWF0Y2ggdGhlIG5vbi1lcnJvcgorICAgICAgICAgICAgICAgY2FzZXMuIFRodXMgd2UgY2FuIGlnbm9yZSBcbiBpbiBzaW5nbGUtcXVvdGVkIHN0cmluZ3MsCisgICAgICAgICAgICAgICBmb3IgZXhhbXBsZS4gT3Igbm9uLXRlcm1pbmF0ZWQgc3RyaW5ncy4gKi8KKyAgICAgICAgICAgIGlmIChjaCA9PSBxdW90ZV9jaGFyKSB7CisgICAgICAgICAgICAgICAgLyogRG9lcyB0aGlzIG1hdGNoIHRoZSBzdHJpbmdfdHlwZSAoc2luZ2xlIG9yIHRyaXBsZQorICAgICAgICAgICAgICAgICAgIHF1b3RlZCk/ICovCisgICAgICAgICAgICAgICAgaWYgKHN0cmluZ190eXBlID09IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCpzdHIrMiA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2ggJiYgKigqc3RyKzIpID09IGNoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBXZSdyZSBhdCB0aGUgZW5kIG9mIGEgdHJpcGxlIHF1b3RlZCBzdHJpbmcuICovCisgICAgICAgICAgICAgICAgICAgICAgICAqc3RyICs9IDI7CisgICAgICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICBxdW90ZV9jaGFyID0gMDsKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgLyogV2UncmUgYXQgdGhlIGVuZCBvZiBhIG5vcm1hbCBzdHJpbmcuICovCisgICAgICAgICAgICAgICAgICAgIHF1b3RlX2NoYXIgPSAwOworICAgICAgICAgICAgICAgICAgICBzdHJpbmdfdHlwZSA9IDA7CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXCcnIHx8IGNoID09ICciJykgeworICAgICAgICAgICAgLyogSXMgdGhpcyBhIHRyaXBsZSBxdW90ZWQgc3RyaW5nPyAqLworICAgICAgICAgICAgaWYgKCpzdHIrMiA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gY2ggJiYgKigqc3RyKzIpID09IGNoKSB7CisgICAgICAgICAgICAgICAgc3RyaW5nX3R5cGUgPSAzOworICAgICAgICAgICAgICAgICpzdHIgKz0gMjsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogU3RhcnQgb2YgYSBub3JtYWwgc3RyaW5nLiAqLworICAgICAgICAgICAgICAgIHN0cmluZ190eXBlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIFN0YXJ0IGxvb2tpbmcgZm9yIHRoZSBlbmQgb2YgdGhlIHN0cmluZy4gKi8KKyAgICAgICAgICAgIHF1b3RlX2NoYXIgPSBjaDsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnWycgfHwgY2ggPT0gJ3snIHx8IGNoID09ICcoJykgeworICAgICAgICAgICAgbmVzdGVkX2RlcHRoKys7CisgICAgICAgIH0gZWxzZSBpZiAobmVzdGVkX2RlcHRoICE9IDAgJiYKKyAgICAgICAgICAgICAgICAgICAoY2ggPT0gJ10nIHx8IGNoID09ICd9JyB8fCBjaCA9PSAnKScpKSB7CisgICAgICAgICAgICBuZXN0ZWRfZGVwdGgtLTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA9PSAnIycpIHsKKyAgICAgICAgICAgIC8qIEVycm9yOiBjYW4ndCBpbmNsdWRlIGEgY29tbWVudCBjaGFyYWN0ZXIsIGluc2lkZSBwYXJlbnMKKyAgICAgICAgICAgICAgIG9yIG5vdC4gKi8KKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmcgZXhwcmVzc2lvbiBwYXJ0IGNhbm5vdCBpbmNsdWRlICcjJyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9IGVsc2UgaWYgKG5lc3RlZF9kZXB0aCA9PSAwICYmCisgICAgICAgICAgICAgICAgICAgKGNoID09ICchJyB8fCBjaCA9PSAnOicgfHwgY2ggPT0gJ30nKSkgeworICAgICAgICAgICAgLyogRmlyc3QsIHRlc3QgZm9yIHRoZSBzcGVjaWFsIGNhc2Ugb2YgIiE9Ii4gU2luY2UgJz0nIGlzCisgICAgICAgICAgICAgICBub3QgYW4gYWxsb3dlZCBjb252ZXJzaW9uIGNoYXJhY3Rlciwgbm90aGluZyBpcyBsb3N0IGluCisgICAgICAgICAgICAgICB0aGlzIHRlc3QuICovCisgICAgICAgICAgICBpZiAoY2ggPT0gJyEnICYmICpzdHIrMSA8IGVuZCAmJiAqKCpzdHIrMSkgPT0gJz0nKSB7CisgICAgICAgICAgICAgICAgLyogVGhpcyBpc24ndCBhIGNvbnZlcnNpb24gY2hhcmFjdGVyLCBqdXN0IGNvbnRpbnVlLiAqLworICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogTm9ybWFsIHdheSBvdXQgb2YgdGhpcyBsb29wLiAqLworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBKdXN0IGNvbnN1bWUgdGhpcyBjaGFyIGFuZCBsb29wIGFyb3VuZC4gKi8KKyAgICAgICAgfQorICAgIH0KKyAgICBleHByX2VuZCA9ICpzdHI7CisgICAgLyogSWYgd2UgbGVhdmUgdGhpcyBsb29wIGluIGEgc3RyaW5nIG9yIHdpdGggbWlzbWF0Y2hlZCBwYXJlbnMsIHdlCisgICAgICAgZG9uJ3QgY2FyZS4gV2UnbGwgZ2V0IGEgc3ludGF4IGVycm9yIHdoZW4gY29tcGlsaW5nIHRoZQorICAgICAgIGV4cHJlc3Npb24uIEJ1dCwgd2UgY2FuIHByb2R1Y2UgYSBiZXR0ZXIgZXJyb3IgbWVzc2FnZSwgc28KKyAgICAgICBsZXQncyBqdXN0IGRvIHRoYXQuKi8KKyAgICBpZiAocXVvdGVfY2hhcikgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiB1bnRlcm1pbmF0ZWQgc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKG5lc3RlZF9kZXB0aCkgeworICAgICAgICBhc3RfZXJyb3IoYywgbiwgImYtc3RyaW5nOiBtaXNtYXRjaGVkICcoJywgJ3snLCBvciAnWyciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgZ290byB1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc7CisKKyAgICAvKiBDb21waWxlIHRoZSBleHByZXNzaW9uIGFzIHNvb24gYXMgcG9zc2libGUsIHNvIHdlIHNob3cgZXJyb3JzCisgICAgICAgcmVsYXRlZCB0byB0aGUgZXhwcmVzc2lvbiBiZWZvcmUgZXJyb3JzIHJlbGF0ZWQgdG8gdGhlCisgICAgICAgY29udmVyc2lvbiBvciBmb3JtYXRfc3BlYy4gKi8KKyAgICBzaW1wbGVfZXhwcmVzc2lvbiA9IGZzdHJpbmdfY29tcGlsZV9leHByKGV4cHJfc3RhcnQsIGV4cHJfZW5kLCBjLCBuKTsKKyAgICBpZiAoIXNpbXBsZV9leHByZXNzaW9uKQorICAgICAgICByZXR1cm4gLTE7CisKKyAgICAvKiBDaGVjayBmb3IgYSBjb252ZXJzaW9uIGNoYXIsIGlmIHByZXNlbnQuICovCisgICAgaWYgKCoqc3RyID09ICchJykgeworICAgICAgICAqc3RyICs9IDE7CisgICAgICAgIGlmICgqc3RyID49IGVuZCkKKyAgICAgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworCisgICAgICAgIGNvbnZlcnNpb24gPSAqKnN0cjsKKyAgICAgICAgKnN0ciArPSAxOworCisgICAgICAgIC8qIFZhbGlkYXRlIHRoZSBjb252ZXJzaW9uLiAqLworICAgICAgICBpZiAoIShjb252ZXJzaW9uID09ICdzJyB8fCBjb252ZXJzaW9uID09ICdyJworICAgICAgICAgICAgICB8fCBjb252ZXJzaW9uID09ICdhJykpIHsKKyAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGludmFsaWQgY29udmVyc2lvbiBjaGFyYWN0ZXI6ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWQgJ3MnLCAncicsIG9yICdhJyIpOworICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisgICAgfQorCisgICAgLyogQ2hlY2sgZm9yIHRoZSBmb3JtYXQgc3BlYywgaWYgcHJlc2VudC4gKi8KKyAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgIGdvdG8gdW5leHBlY3RlZF9lbmRfb2Zfc3RyaW5nOworICAgIGlmICgqKnN0ciA9PSAnOicpIHsKKyAgICAgICAgKnN0ciArPSAxOworICAgICAgICBpZiAoKnN0ciA+PSBlbmQpCisgICAgICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgICAgICAvKiBQYXJzZSB0aGUgZm9ybWF0IHNwZWMuICovCisgICAgICAgIGZvcm1hdF9zcGVjID0gZnN0cmluZ19wYXJzZShzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCsxLCBjLCBuKTsKKyAgICAgICAgaWYgKCFmb3JtYXRfc3BlYykKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisKKyAgICBpZiAoKnN0ciA+PSBlbmQgfHwgKipzdHIgIT0gJ30nKQorICAgICAgICBnb3RvIHVuZXhwZWN0ZWRfZW5kX29mX3N0cmluZzsKKworICAgIC8qIFdlJ3JlIGF0IGEgcmlnaHQgYnJhY2UuIENvbnN1bWUgaXQuICovCisgICAgYXNzZXJ0KCpzdHIgPCBlbmQpOworICAgIGFzc2VydCgqKnN0ciA9PSAnfScpOworICAgICpzdHIgKz0gMTsKKworICAgIC8qIEFuZCBub3cgY3JlYXRlIHRoZSBGb3JtYXR0ZWRWYWx1ZSBub2RlIHRoYXQgcmVwcmVzZW50cyB0aGlzCisgICAgICAgZW50aXJlIGV4cHJlc3Npb24gd2l0aCB0aGUgY29udmVyc2lvbiBhbmQgZm9ybWF0IHNwZWMuICovCisgICAgKmV4cHJlc3Npb24gPSBGb3JtYXR0ZWRWYWx1ZShzaW1wbGVfZXhwcmVzc2lvbiwgY29udmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdF9zcGVjLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMtPmNfYXJlbmEpOworICAgIGlmICghKmV4cHJlc3Npb24pCisgICAgICAgIHJldHVybiAtMTsKKworICAgIHJldHVybiAwOworCit1bmV4cGVjdGVkX2VuZF9vZl9zdHJpbmc6CisgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogZXhwZWN0aW5nICd9JyIpOworICAgIHJldHVybiAtMTsKK30KKworLyogUmV0dXJuIC0xIG9uIGVycm9yLgorCisgICBSZXR1cm4gMCBpZiB3ZSBoYXZlIGEgbGl0ZXJhbCAocG9zc2libGUgemVybyBsZW5ndGgpIGFuZCBhbgorICAgZXhwcmVzc2lvbiAoemVybyBsZW5ndGggaWYgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLgorCisgICBSZXR1cm4gMSBpZiB3ZSBoYXZlIGEgbGl0ZXJhbCwgYnV0IG5vIGV4cHJlc3Npb24sIGFuZCB3ZSB3YW50IHRoZQorICAgY2FsbGVyIHRvIGNhbGwgdXMgYWdhaW4uIFRoaXMgaXMgdXNlZCB0byBkZWFsIHdpdGggZG91YmxlZAorICAgYnJhY2VzLgorCisgICBXaGVuIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBvbiB0aGUgc3RyaW5nICdhe3tiezB9YycsIHRoaXMgZnVuY3Rpb24KKyAgIHdpbGwgcmV0dXJuOgorCisgICAxLiB0aGUgbGl0ZXJhbCAnYXsnIHdpdGggbm8gZXhwcmVzc2lvbiwgYW5kIGEgcmV0dXJuIHZhbHVlCisgICAgICBvZiAxLiBEZXNwaXRlIHRoZSBmYWN0IHRoYXQgdGhlcmUncyBubyBleHByZXNzaW9uLCB0aGUgcmV0dXJuCisgICAgICB2YWx1ZSBvZiAxIG1lYW5zIHdlJ3JlIG5vdCBmaW5pc2hlZCB5ZXQuCisKKyAgIDIuIHRoZSBsaXRlcmFsICdiJyBhbmQgdGhlIGV4cHJlc3Npb24gJzAnLCB3aXRoIGEgcmV0dXJuIHZhbHVlIG9mCisgICAgICAwLiBUaGUgZmFjdCB0aGF0IHRoZXJlJ3MgYW4gZXhwcmVzc2lvbiBtZWFucyB3ZSdyZSBub3QgZmluaXNoZWQuCisKKyAgIDMuIGxpdGVyYWwgJ2MnIHdpdGggbm8gZXhwcmVzc2lvbiBhbmQgYSByZXR1cm4gdmFsdWUgb2YgMC4gVGhlCisgICAgICBjb21iaW5hdGlvbiBvZiB0aGUgcmV0dXJuIHZhbHVlIG9mIDAgd2l0aCBubyBleHByZXNzaW9uIG1lYW5zCisgICAgICB3ZSdyZSBmaW5pc2hlZC4KKyovCitzdGF0aWMgaW50Citmc3RyaW5nX2ZpbmRfbGl0ZXJhbF9hbmRfZXhwcihjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgcmVjdXJzZV9sdmwsIFB5T2JqZWN0ICoqbGl0ZXJhbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgKmV4cHJlc3Npb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIGludCByZXN1bHQ7CisKKyAgICBhc3NlcnQoKmxpdGVyYWwgPT0gTlVMTCAmJiAqZXhwcmVzc2lvbiA9PSBOVUxMKTsKKworICAgIC8qIEdldCBhbnkgbGl0ZXJhbCBzdHJpbmcuICovCisgICAgcmVzdWx0ID0gZnN0cmluZ19maW5kX2xpdGVyYWwoc3RyLCBlbmQsIHJhdywgbGl0ZXJhbCwgcmVjdXJzZV9sdmwsIGMsIG4pOworICAgIGlmIChyZXN1bHQgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworCisgICAgYXNzZXJ0KHJlc3VsdCA9PSAwIHx8IHJlc3VsdCA9PSAxKTsKKworICAgIGlmIChyZXN1bHQgPT0gMSkKKyAgICAgICAgLyogV2UgaGF2ZSBhIGxpdGVyYWwsIGJ1dCBkb24ndCBsb29rIGF0IHRoZSBleHByZXNzaW9uLiAqLworICAgICAgICByZXR1cm4gMTsKKworICAgIGlmICgqc3RyID49IGVuZCB8fCAqKnN0ciA9PSAnfScpCisgICAgICAgIC8qIFdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBvciB0aGUgZW5kIG9mIGEgbmVzdGVkCisgICAgICAgICAgIGYtc3RyaW5nOiBubyBleHByZXNzaW9uLiBUaGUgdG9wLWxldmVsIGVycm9yIGNhc2Ugd2hlcmUgd2UKKyAgICAgICAgICAgZXhwZWN0IHRvIGJlIGF0IHRoZSBlbmQgb2YgdGhlIHN0cmluZyBidXQgd2UncmUgYXQgYSAnfScgaXMKKyAgICAgICAgICAgaGFuZGxlZCBsYXRlci4gKi8KKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICAvKiBXZSBtdXN0IG5vdyBiZSB0aGUgc3RhcnQgb2YgYW4gZXhwcmVzc2lvbiwgb24gYSAneycuICovCisgICAgYXNzZXJ0KCoqc3RyID09ICd7Jyk7CisKKyAgICBpZiAoZnN0cmluZ19maW5kX2V4cHIoc3RyLCBlbmQsIHJhdywgcmVjdXJzZV9sdmwsIGV4cHJlc3Npb24sIGMsIG4pIDwgMCkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIHJldHVybiAwOworCitlcnJvcjoKKyAgICBQeV9DTEVBUigqbGl0ZXJhbCk7CisgICAgcmV0dXJuIC0xOworfQorCisjZGVmaW5lIEVYUFJMSVNUX05fQ0FDSEVEICA2NAorCit0eXBlZGVmIHN0cnVjdCB7CisgICAgLyogSW5jcmVtZW50YWxseSBidWlsZCBhbiBhcnJheSBvZiBleHByX3R5LCBzbyBiZSB1c2VkIGluIGFuCisgICAgICAgYXNkbF9zZXEuIENhY2hlIHNvbWUgc21hbGwgYnV0IHJlYXNvbmFibHkgc2l6ZWQgbnVtYmVyIG9mCisgICAgICAgZXhwcl90eSdzLCBhbmQgdGhlbiBhZnRlciB0aGF0IHN0YXJ0IGR5bmFtaWNhbGx5IGFsbG9jYXRpbmcsCisgICAgICAgZG91YmxpbmcgdGhlIG51bWJlciBhbGxvY2F0ZWQgZWFjaCB0aW1lLiBOb3RlIHRoYXQgdGhlIGYtc3RyaW5nCisgICAgICAgZid7MH1hezF9JyBjb250YWlucyAzIGV4cHJfdHknczogMiBGb3JtYXR0ZWRWYWx1ZSdzLCBhbmQgb25lCisgICAgICAgU3RyIGZvciB0aGUgbGl0ZXJhbCAnYScuIFNvIHlvdSBhZGQgZXhwcl90eSdzIGFib3V0IHR3aWNlIGFzCisgICAgICAgZmFzdCBhcyB5b3UgYWRkIGV4cmVzc2lvbnMgaW4gYW4gZi1zdHJpbmcuICovCisKKyAgICBQeV9zc2l6ZV90IGFsbG9jYXRlZDsgIC8qIE51bWJlciB3ZSd2ZSBhbGxvY2F0ZWQuICovCisgICAgUHlfc3NpemVfdCBzaXplOyAgICAgICAvKiBOdW1iZXIgd2UndmUgdXNlZC4gKi8KKyAgICBleHByX3R5ICAgICpwOyAgICAgICAgIC8qIFBvaW50ZXIgdG8gdGhlIG1lbW9yeSB3ZSdyZSBhY3R1YWxseQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXNpbmcuIFdpbGwgcG9pbnQgdG8gJ2RhdGEnIHVudGlsIHdlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFydCBkeW5hbWljYWxseSBhbGxvY2F0aW5nLiAqLworICAgIGV4cHJfdHkgICAgZGF0YVtFWFBSTElTVF9OX0NBQ0hFRF07Cit9IEV4cHJMaXN0OworCisjaWZkZWYgTkRFQlVHCisjZGVmaW5lIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCkKKyNlbHNlCitzdGF0aWMgdm9pZAorRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhFeHByTGlzdCAqbCkKK3sKKyAgICAvKiBDaGVjayBvdXIgaW52YXJpYW50cy4gTWFrZSBzdXJlIHRoaXMgb2JqZWN0IGlzICJsaXZlIiwgYW5kCisgICAgICAgaGFzbid0IGJlZW4gZGVhbGxvY2F0ZWQuICovCisgICAgYXNzZXJ0KGwtPnNpemUgPj0gMCk7CisgICAgYXNzZXJ0KGwtPnAgIT0gTlVMTCk7CisgICAgaWYgKGwtPnNpemUgPD0gRVhQUkxJU1RfTl9DQUNIRUQpCisgICAgICAgIGFzc2VydChsLT5kYXRhID09IGwtPnApOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitFeHByTGlzdF9Jbml0KEV4cHJMaXN0ICpsKQoreworICAgIGwtPmFsbG9jYXRlZCA9IEVYUFJMSVNUX05fQ0FDSEVEOworICAgIGwtPnNpemUgPSAwOworCisgICAgLyogVW50aWwgd2Ugc3RhcnQgYWxsb2NhdGluZyBkeW5hbWljYWxseSwgcCBwb2ludHMgdG8gZGF0YS4gKi8KKyAgICBsLT5wID0gbC0+ZGF0YTsKKworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7Cit9CisKK3N0YXRpYyBpbnQKK0V4cHJMaXN0X0FwcGVuZChFeHByTGlzdCAqbCwgZXhwcl90eSBleHApCit7CisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cyhsKTsKKyAgICBpZiAobC0+c2l6ZSA+PSBsLT5hbGxvY2F0ZWQpIHsKKyAgICAgICAgLyogV2UgbmVlZCB0byBhbGxvYyAob3IgcmVhbGxvYykgdGhlIG1lbW9yeS4gKi8KKyAgICAgICAgUHlfc3NpemVfdCBuZXdfc2l6ZSA9IGwtPmFsbG9jYXRlZCAqIDI7CisKKyAgICAgICAgLyogU2VlIGlmIHdlJ3ZlIGV2ZXIgYWxsb2NhdGVkIGFueXRoaW5nIGR5bmFtaWNhbGx5LiAqLworICAgICAgICBpZiAobC0+cCA9PSBsLT5kYXRhKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICAvKiBXZSdyZSBzdGlsbCB1c2luZyB0aGUgY2FjaGVkIGRhdGEuIFN3aXRjaCB0bworICAgICAgICAgICAgICAgYWxsb2MtaW5nLiAqLworICAgICAgICAgICAgbC0+cCA9IFB5TWVtX1Jhd01hbGxvYyhzaXplb2YoZXhwcl90eSkgKiBuZXdfc2l6ZSk7CisgICAgICAgICAgICBpZiAoIWwtPnApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAgLyogQ29weSB0aGUgY2FjaGVkIGRhdGEgaW50byB0aGUgbmV3IGJ1ZmZlci4gKi8KKyAgICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBsLT5zaXplOyBpKyspCisgICAgICAgICAgICAgICAgbC0+cFtpXSA9IGwtPmRhdGFbaV07CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBKdXN0IHJlYWxsb2MuICovCisgICAgICAgICAgICBleHByX3R5ICp0bXAgPSBQeU1lbV9SYXdSZWFsbG9jKGwtPnAsIHNpemVvZihleHByX3R5KSAqIG5ld19zaXplKTsKKyAgICAgICAgICAgIGlmICghdG1wKSB7CisgICAgICAgICAgICAgICAgUHlNZW1fUmF3RnJlZShsLT5wKTsKKyAgICAgICAgICAgICAgICBsLT5wID0gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBsLT5wID0gdG1wOworICAgICAgICB9CisKKyAgICAgICAgbC0+YWxsb2NhdGVkID0gbmV3X3NpemU7CisgICAgICAgIGFzc2VydChsLT5hbGxvY2F0ZWQgPT0gMiAqIGwtPnNpemUpOworICAgIH0KKworICAgIGwtPnBbbC0+c2l6ZSsrXSA9IGV4cDsKKworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyB2b2lkCitFeHByTGlzdF9EZWFsbG9jKEV4cHJMaXN0ICpsKQoreworICAgIEV4cHJMaXN0X2NoZWNrX2ludmFyaWFudHMobCk7CisKKyAgICAvKiBJZiB0aGVyZSdzIGJlZW4gYW4gZXJyb3IsIG9yIHdlJ3ZlIG5ldmVyIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCwKKyAgICAgICBkbyBub3RoaW5nLiAqLworICAgIGlmICghbC0+cCB8fCBsLT5wID09IGwtPmRhdGEpIHsKKyAgICAgICAgLyogRG8gbm90aGluZy4gKi8KKyAgICB9IGVsc2UgeworICAgICAgICAvKiBXZSBoYXZlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gRnJlZSB0aGUgbWVtb3J5LiAqLworICAgICAgICBQeU1lbV9SYXdGcmVlKGwtPnApOworICAgIH0KKyAgICBsLT5wID0gTlVMTDsKKyAgICBsLT5zaXplID0gLTE7Cit9CisKK3N0YXRpYyBhc2RsX3NlcSAqCitFeHByTGlzdF9GaW5pc2goRXhwckxpc3QgKmwsIFB5QXJlbmEgKmFyZW5hKQoreworICAgIGFzZGxfc2VxICpzZXE7CisKKyAgICBFeHByTGlzdF9jaGVja19pbnZhcmlhbnRzKGwpOworCisgICAgLyogQWxsb2NhdGUgdGhlIGFzZGxfc2VxIGFuZCBjb3B5IHRoZSBleHByZXNzaW9ucyBpbiB0byBpdC4gKi8KKyAgICBzZXEgPSBfUHlfYXNkbF9zZXFfbmV3KGwtPnNpemUsIGFyZW5hKTsKKyAgICBpZiAoc2VxKSB7CisgICAgICAgIFB5X3NzaXplX3QgaTsKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IGwtPnNpemU7IGkrKykKKyAgICAgICAgICAgIGFzZGxfc2VxX1NFVChzZXEsIGksIGwtPnBbaV0pOworICAgIH0KKyAgICBFeHByTGlzdF9EZWFsbG9jKGwpOworICAgIHJldHVybiBzZXE7Cit9CisKKy8qIFRoZSBGc3RyaW5nUGFyc2VyIGlzIGRlc2lnbmVkIHRvIGFkZCBhIG1peCBvZiBzdHJpbmdzIGFuZAorICAgZi1zdHJpbmdzLCBhbmQgY29uY2F0IHRoZW0gdG9nZXRoZXIgYXMgbmVlZGVkLiBVbHRpbWF0ZWx5LCBpdAorICAgZ2VuZXJhdGVzIGFuIGV4cHJfdHkuICovCit0eXBlZGVmIHN0cnVjdCB7CisgICAgUHlPYmplY3QgKmxhc3Rfc3RyOworICAgIEV4cHJMaXN0IGV4cHJfbGlzdDsKK30gRnN0cmluZ1BhcnNlcjsKKworI2lmZGVmIE5ERUJVRworI2RlZmluZSBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpCisjZWxzZQorc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBpZiAoc3RhdGUtPmxhc3Rfc3RyKQorICAgICAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RhdGUtPmxhc3Rfc3RyKSk7CisgICAgRXhwckxpc3RfY2hlY2tfaW52YXJpYW50cygmc3RhdGUtPmV4cHJfbGlzdCk7Cit9CisjZW5kaWYKKworc3RhdGljIHZvaWQKK0ZzdHJpbmdQYXJzZXJfSW5pdChGc3RyaW5nUGFyc2VyICpzdGF0ZSkKK3sKKyAgICBzdGF0ZS0+bGFzdF9zdHIgPSBOVUxMOworICAgIEV4cHJMaXN0X0luaXQoJnN0YXRlLT5leHByX2xpc3QpOworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitGc3RyaW5nUGFyc2VyX0RlYWxsb2MoRnN0cmluZ1BhcnNlciAqc3RhdGUpCit7CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKworICAgIFB5X1hERUNSRUYoc3RhdGUtPmxhc3Rfc3RyKTsKKyAgICBFeHByTGlzdF9EZWFsbG9jKCZzdGF0ZS0+ZXhwcl9saXN0KTsKK30KKworLyogTWFrZSBhIFN0ciBub2RlLCBidXQgZGVjcmVmIHRoZSBQeVVuaWNvZGUgb2JqZWN0IGJlaW5nIGFkZGVkLiAqLworc3RhdGljIGV4cHJfdHkKK21ha2Vfc3RyX25vZGVfYW5kX2RlbChQeU9iamVjdCAqKnN0ciwgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSogbikKK3sKKyAgICBQeU9iamVjdCAqcyA9ICpzdHI7CisgICAgKnN0ciA9IE5VTEw7CisgICAgYXNzZXJ0KFB5VW5pY29kZV9DaGVja0V4YWN0KHMpKTsKKyAgICBpZiAoUHlBcmVuYV9BZGRQeU9iamVjdChjLT5jX2FyZW5hLCBzKSA8IDApIHsKKyAgICAgICAgUHlfREVDUkVGKHMpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIFN0cihzLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7Cit9CisKKy8qIEFkZCBhIG5vbi1mLXN0cmluZyAodGhhdCBpcywgYSByZWd1bGFyIGxpdGVyYWwgc3RyaW5nKS4gc3RyIGlzCisgICBkZWNyZWYnZC4gKi8KK3N0YXRpYyBpbnQKK0ZzdHJpbmdQYXJzZXJfQ29uY2F0QW5kRGVsKEZzdHJpbmdQYXJzZXIgKnN0YXRlLCBQeU9iamVjdCAqc3RyKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICBhc3NlcnQoUHlVbmljb2RlX0NoZWNrRXhhY3Qoc3RyKSk7CisKKyAgICBpZiAoUHlVbmljb2RlX0dFVF9MRU5HVEgoc3RyKSA9PSAwKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdHIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICAvKiBXZSBkaWRuJ3QgaGF2ZSBhIHN0cmluZyBiZWZvcmUsIHNvIGp1c3QgcmVtZW1iZXIgdGhpcyBvbmUuICovCisgICAgICAgIHN0YXRlLT5sYXN0X3N0ciA9IHN0cjsKKyAgICB9IGVsc2UgeworICAgICAgICAvKiBDb25jYXRlbmF0ZSB0aGlzIHdpdGggdGhlIHByZXZpb3VzIHN0cmluZy4gKi8KKyAgICAgICAgUHlVbmljb2RlX0FwcGVuZEFuZERlbCgmc3RhdGUtPmxhc3Rfc3RyLCBzdHIpOworICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgRnN0cmluZ1BhcnNlcl9jaGVja19pbnZhcmlhbnRzKHN0YXRlKTsKKyAgICByZXR1cm4gMDsKK30KKworLyogUGFyc2UgYW4gZi1zdHJpbmcuIFRoZSBmLXN0cmluZyBpcyBpbiAqc3RyIHRvIGVuZCwgd2l0aCBubworICAgJ2YnIG9yIHF1b3Rlcy4gKi8KK3N0YXRpYyBpbnQKK0ZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZyhGc3RyaW5nUGFyc2VyICpzdGF0ZSwgY29uc3QgY2hhciAqKnN0ciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICplbmQsIGludCByYXcsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQoreworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisKKyAgICAvKiBQYXJzZSB0aGUgZi1zdHJpbmcuICovCisgICAgd2hpbGUgKDEpIHsKKyAgICAgICAgUHlPYmplY3QgKmxpdGVyYWwgPSBOVUxMOworICAgICAgICBleHByX3R5IGV4cHJlc3Npb24gPSBOVUxMOworCisgICAgICAgIC8qIElmIHRoZXJlJ3MgYSB6ZXJvIGxlbmd0aCBsaXRlcmFsIGluIGZyb250IG9mIHRoZQorICAgICAgICAgICBleHByZXNzaW9uLCBsaXRlcmFsIHdpbGwgYmUgTlVMTC4gSWYgd2UncmUgYXQgdGhlIGVuZCBvZgorICAgICAgICAgICB0aGUgZi1zdHJpbmcsIGV4cHJlc3Npb24gd2lsbCBiZSBOVUxMICh1bmxlc3MgcmVzdWx0ID09IDEsCisgICAgICAgICAgIHNlZSBiZWxvdykuICovCisgICAgICAgIGludCByZXN1bHQgPSBmc3RyaW5nX2ZpbmRfbGl0ZXJhbF9hbmRfZXhwcihzdHIsIGVuZCwgcmF3LCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZsaXRlcmFsLCAmZXhwcmVzc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGMsIG4pOworICAgICAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgICAgIHJldHVybiAtMTsKKworICAgICAgICAvKiBBZGQgdGhlIGxpdGVyYWwsIGlmIGFueS4gKi8KKyAgICAgICAgaWYgKCFsaXRlcmFsKSB7CisgICAgICAgICAgICAvKiBEbyBub3RoaW5nLiBKdXN0IGxlYXZlIGxhc3Rfc3RyIGFsb25lIChhbmQgcG9zc2libHkKKyAgICAgICAgICAgICAgIE5VTEwpLiAqLworICAgICAgICB9IGVsc2UgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIHN0YXRlLT5sYXN0X3N0ciA9IGxpdGVyYWw7CisgICAgICAgICAgICBsaXRlcmFsID0gTlVMTDsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8qIFdlIGhhdmUgYSBsaXRlcmFsLCBjb25jYXRlbmF0ZSBpdC4gKi8KKyAgICAgICAgICAgIGFzc2VydChQeVVuaWNvZGVfR0VUX0xFTkdUSChsaXRlcmFsKSAhPSAwKTsKKyAgICAgICAgICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbChzdGF0ZSwgbGl0ZXJhbCkgPCAwKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGxpdGVyYWwgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIGFzc2VydCghc3RhdGUtPmxhc3Rfc3RyIHx8CisgICAgICAgICAgICAgICBQeVVuaWNvZGVfR0VUX0xFTkdUSChzdGF0ZS0+bGFzdF9zdHIpICE9IDApOworCisgICAgICAgIC8qIFdlJ3ZlIGRlYWx0IHdpdGggdGhlIGxpdGVyYWwgbm93LiBJdCBjYW4ndCBiZSBsZWFrZWQgb24gZnVydGhlcgorICAgICAgICAgICBlcnJvcnMuICovCisgICAgICAgIGFzc2VydChsaXRlcmFsID09IE5VTEwpOworCisgICAgICAgIC8qIFNlZSBpZiB3ZSBzaG91bGQganVzdCBsb29wIGFyb3VuZCB0byBnZXQgdGhlIG5leHQgbGl0ZXJhbAorICAgICAgICAgICBhbmQgZXhwcmVzc2lvbiwgd2hpbGUgaWdub3JpbmcgdGhlIGV4cHJlc3Npb24gdGhpcworICAgICAgICAgICB0aW1lLiBUaGlzIGlzIHVzZWQgZm9yIHVuLWRvdWJsaW5nIGJyYWNlcywgYXMgYW4KKyAgICAgICAgICAgb3B0aW1pemF0aW9uLiAqLworICAgICAgICBpZiAocmVzdWx0ID09IDEpCisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBpZiAoIWV4cHJlc3Npb24pCisgICAgICAgICAgICAvKiBXZSdyZSBkb25lIHdpdGggdGhpcyBmLXN0cmluZy4gKi8KKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIC8qIFdlIGtub3cgd2UgaGF2ZSBhbiBleHByZXNzaW9uLiBDb252ZXJ0IGFueSBleGlzdGluZyBzdHJpbmcKKyAgICAgICAgICAgdG8gYSBTdHIgbm9kZS4gKi8KKyAgICAgICAgaWYgKCFzdGF0ZS0+bGFzdF9zdHIpIHsKKyAgICAgICAgICAgIC8qIERvIG5vdGhpbmcuIE5vIHByZXZpb3VzIGxpdGVyYWwuICovCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvKiBDb252ZXJ0IHRoZSBleGlzdGluZyBsYXN0X3N0ciBsaXRlcmFsIHRvIGEgU3RyIG5vZGUuICovCisgICAgICAgICAgICBleHByX3R5IHN0ciA9IG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8IEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgc3RyKSA8IDApCisgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICB9CisKKyAgICAgICAgaWYgKEV4cHJMaXN0X0FwcGVuZCgmc3RhdGUtPmV4cHJfbGlzdCwgZXhwcmVzc2lvbikgPCAwKQorICAgICAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIC8qIElmIHJlY3Vyc2VfbHZsIGlzIHplcm8sIHRoZW4gd2UgbXVzdCBiZSBhdCB0aGUgZW5kIG9mIHRoZQorICAgICAgIHN0cmluZy4gT3RoZXJ3aXNlLCB3ZSBtdXN0IGJlIGF0IGEgcmlnaHQgYnJhY2UuICovCisKKyAgICBpZiAocmVjdXJzZV9sdmwgPT0gMCAmJiAqc3RyIDwgZW5kLTEpIHsKKyAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJmLXN0cmluZzogdW5leHBlY3RlZCBlbmQgb2Ygc3RyaW5nIik7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgaWYgKHJlY3Vyc2VfbHZsICE9IDAgJiYgKipzdHIgIT0gJ30nKSB7CisgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiZi1zdHJpbmc6IGV4cGVjdGluZyAnfSciKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIEZzdHJpbmdQYXJzZXJfY2hlY2tfaW52YXJpYW50cyhzdGF0ZSk7CisgICAgcmV0dXJuIDA7Cit9CisKKy8qIENvbnZlcnQgdGhlIHBhcnRpYWwgc3RhdGUgcmVmbGVjdGVkIGluIGxhc3Rfc3RyIGFuZCBleHByX2xpc3QgdG8gYW4KKyAgIGV4cHJfdHkuIFRoZSBleHByX3R5IGNhbiBiZSBhIFN0ciwgb3IgYSBKb2luZWRTdHIuICovCitzdGF0aWMgZXhwcl90eQorRnN0cmluZ1BhcnNlcl9GaW5pc2goRnN0cmluZ1BhcnNlciAqc3RhdGUsIHN0cnVjdCBjb21waWxpbmcgKmMsCisgICAgICAgICAgICAgICAgICAgICBjb25zdCBub2RlICpuKQoreworICAgIGFzZGxfc2VxICpzZXE7CisKKyAgICBGc3RyaW5nUGFyc2VyX2NoZWNrX2ludmFyaWFudHMoc3RhdGUpOworCisgICAgLyogSWYgd2UncmUganVzdCBhIGNvbnN0YW50IHN0cmluZyB3aXRoIG5vIGV4cHJlc3Npb25zLCByZXR1cm4KKyAgICAgICB0aGF0LiAqLworICAgIGlmKHN0YXRlLT5leHByX2xpc3Quc2l6ZSA9PSAwKSB7CisgICAgICAgIGlmICghc3RhdGUtPmxhc3Rfc3RyKSB7CisgICAgICAgICAgICAvKiBDcmVhdGUgYSB6ZXJvIGxlbmd0aCBzdHJpbmcuICovCisgICAgICAgICAgICBzdGF0ZS0+bGFzdF9zdHIgPSBQeVVuaWNvZGVfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgMCk7CisgICAgICAgICAgICBpZiAoIXN0YXRlLT5sYXN0X3N0cikKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIHJldHVybiBtYWtlX3N0cl9ub2RlX2FuZF9kZWwoJnN0YXRlLT5sYXN0X3N0ciwgYywgbik7CisgICAgfQorCisgICAgLyogQ3JlYXRlIGEgU3RyIG5vZGUgb3V0IG9mIGxhc3Rfc3RyLCBpZiBuZWVkZWQuIEl0IHdpbGwgYmUgdGhlCisgICAgICAgbGFzdCBub2RlIGluIG91ciBleHByZXNzaW9uIGxpc3QuICovCisgICAgaWYgKHN0YXRlLT5sYXN0X3N0cikgeworICAgICAgICBleHByX3R5IHN0ciA9IG1ha2Vfc3RyX25vZGVfYW5kX2RlbCgmc3RhdGUtPmxhc3Rfc3RyLCBjLCBuKTsKKyAgICAgICAgaWYgKCFzdHIgfHwgRXhwckxpc3RfQXBwZW5kKCZzdGF0ZS0+ZXhwcl9saXN0LCBzdHIpIDwgMCkKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIC8qIFRoaXMgaGFzIGFscmVhZHkgYmVlbiBmcmVlZC4gKi8KKyAgICBhc3NlcnQoc3RhdGUtPmxhc3Rfc3RyID09IE5VTEwpOworCisgICAgc2VxID0gRXhwckxpc3RfRmluaXNoKCZzdGF0ZS0+ZXhwcl9saXN0LCBjLT5jX2FyZW5hKTsKKyAgICBpZiAoIXNlcSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgIC8qIElmIHRoZXJlJ3Mgb25seSBvbmUgZXhwcmVzc2lvbiwgcmV0dXJuIGl0LiBPdGhlcndpc2UsIHdlIG5lZWQKKyAgICAgICB0byBqb2luIHRoZW0gdG9nZXRoZXIuICovCisgICAgaWYgKHNlcS0+c2l6ZSA9PSAxKQorICAgICAgICByZXR1cm4gc2VxLT5lbGVtZW50c1swXTsKKworICAgIHJldHVybiBKb2luZWRTdHIoc2VxLCBMSU5FTk8obiksIG4tPm5fY29sX29mZnNldCwgYy0+Y19hcmVuYSk7CisKK2Vycm9yOgorICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYyhzdGF0ZSk7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIEdpdmVuIGFuIGYtc3RyaW5nICh3aXRoIG5vICdmJyBvciBxdW90ZXMpIHRoYXQncyBpbiAqc3RyIGFuZCBlbmRzCisgICBhdCBlbmQsIHBhcnNlIGl0IGludG8gYW4gZXhwcl90eS4gIFJldHVybiBOVUxMIG9uIGVycm9yLiAgQWRqdXN0CisgICBzdHIgdG8gcG9pbnQgcGFzdCB0aGUgcGFyc2VkIHBvcnRpb24uICovCitzdGF0aWMgZXhwcl90eQorZnN0cmluZ19wYXJzZShjb25zdCBjaGFyICoqc3RyLCBjb25zdCBjaGFyICplbmQsIGludCByYXcsIGludCByZWN1cnNlX2x2bCwKKyAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGluZyAqYywgY29uc3Qgbm9kZSAqbikKK3sKKyAgICBGc3RyaW5nUGFyc2VyIHN0YXRlOworCisgICAgRnN0cmluZ1BhcnNlcl9Jbml0KCZzdGF0ZSk7CisgICAgaWYgKEZzdHJpbmdQYXJzZXJfQ29uY2F0RnN0cmluZygmc3RhdGUsIHN0ciwgZW5kLCByYXcsIHJlY3Vyc2VfbHZsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYywgbikgPCAwKSB7CisgICAgICAgIEZzdHJpbmdQYXJzZXJfRGVhbGxvYygmc3RhdGUpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICByZXR1cm4gRnN0cmluZ1BhcnNlcl9GaW5pc2goJnN0YXRlLCBjLCBuKTsKK30KKworLyogbiBpcyBhIFB5dGhvbiBzdHJpbmcgbGl0ZXJhbCwgaW5jbHVkaW5nIHRoZSBicmFja2V0aW5nIHF1b3RlCisgICBjaGFyYWN0ZXJzLCBhbmQgciwgYiwgdSwgJi9vciBmIHByZWZpeGVzIChpZiBhbnkpLCBhbmQgZW1iZWRkZWQKKyAgIGVzY2FwZSBzZXF1ZW5jZXMgKGlmIGFueSkuIHBhcnNlc3RyIHBhcnNlcyBpdCwgYW5kIHNldHMgKnJlc3VsdCB0bworICAgZGVjb2RlZCBQeXRob24gc3RyaW5nIG9iamVjdC4gIElmIHRoZSBzdHJpbmcgaXMgYW4gZi1zdHJpbmcsIHNldAorICAgKmZzdHIgYW5kICpmc3RybGVuIHRvIHRoZSB1bnBhcnNlZCBzdHJpbmcgb2JqZWN0LiAgUmV0dXJuIDAgaWYgbm8KKyAgIGVycm9ycyBvY2N1cnJlZC4KKyovCitzdGF0aWMgaW50CitwYXJzZXN0cihzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSwgaW50ICpyYXdtb2RlLAorICAgICAgICAgUHlPYmplY3QgKipyZXN1bHQsIGNvbnN0IGNoYXIgKipmc3RyLCBQeV9zc2l6ZV90ICpmc3RybGVuKQogewogICAgIHNpemVfdCBsZW47CiAgICAgY29uc3QgY2hhciAqcyA9IFNUUihuKTsKICAgICBpbnQgcXVvdGUgPSBQeV9DSEFSTUFTSygqcyk7Ci0gICAgaW50IHJhd21vZGUgPSAwOwotICAgIGludCBuZWVkX2VuY29kaW5nOworICAgIGludCBmbW9kZSA9IDA7CisgICAgKmJ5dGVzbW9kZSA9IDA7CisgICAgKnJhd21vZGUgPSAwOworICAgICpyZXN1bHQgPSBOVUxMOworICAgICpmc3RyID0gTlVMTDsKICAgICBpZiAoUHlfSVNBTFBIQShxdW90ZSkpIHsKLSAgICAgICAgd2hpbGUgKCEqYnl0ZXNtb2RlIHx8ICFyYXdtb2RlKSB7CisgICAgICAgIHdoaWxlICghKmJ5dGVzbW9kZSB8fCAhKnJhd21vZGUpIHsKICAgICAgICAgICAgIGlmIChxdW90ZSA9PSAnYicgfHwgcXVvdGUgPT0gJ0InKSB7CiAgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOwogICAgICAgICAgICAgICAgICpieXRlc21vZGUgPSAxOwpAQCAtNDAyMiwxMTQgKzQ5NzksMTY5IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIGlmIChxdW90ZSA9PSAncicgfHwgcXVvdGUgPT0gJ1InKSB7CiAgICAgICAgICAgICAgICAgcXVvdGUgPSAqKytzOwotICAgICAgICAgICAgICAgIHJhd21vZGUgPSAxOworICAgICAgICAgICAgICAgICpyYXdtb2RlID0gMTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgaWYgKHF1b3RlID09ICdmJyB8fCBxdW90ZSA9PSAnRicpIHsKKyAgICAgICAgICAgICAgICBxdW90ZSA9ICorK3M7CisgICAgICAgICAgICAgICAgZm1vZGUgPSAxOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9CisgICAgaWYgKGZtb2RlICYmICpieXRlc21vZGUpIHsKKyAgICAgICAgUHlFcnJfQmFkSW50ZXJuYWxDYWxsKCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAgICAgaWYgKHF1b3RlICE9ICdcJycgJiYgcXVvdGUgIT0gJ1wiJykgewogICAgICAgICBQeUVycl9CYWRJbnRlcm5hbENhbGwoKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CisgICAgLyogU2tpcCB0aGUgbGVhZGluZyBxdW90ZSBjaGFyLiAqLwogICAgIHMrKzsKICAgICBsZW4gPSBzdHJsZW4ocyk7CiAgICAgaWYgKGxlbiA+IElOVF9NQVgpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX092ZXJmbG93RXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAic3RyaW5nIHRvIHBhcnNlIGlzIHRvbyBsb25nIik7Ci0gICAgICAgIHJldHVybiBOVUxMOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChzWy0tbGVuXSAhPSBxdW90ZSkgeworICAgICAgICAvKiBMYXN0IHF1b3RlIGNoYXIgbXVzdCBtYXRjaCB0aGUgZmlyc3QuICovCiAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KICAgICBpZiAobGVuID49IDQgJiYgc1swXSA9PSBxdW90ZSAmJiBzWzFdID09IHF1b3RlKSB7CisgICAgICAgIC8qIEEgdHJpcGxlIHF1b3RlZCBzdHJpbmcuIFdlJ3ZlIGFscmVhZHkgc2tpcHBlZCBvbmUgcXVvdGUgYXQKKyAgICAgICAgICAgdGhlIHN0YXJ0IGFuZCBvbmUgYXQgdGhlIGVuZCBvZiB0aGUgc3RyaW5nLiBOb3cgc2tpcCB0aGUKKyAgICAgICAgICAgdHdvIGF0IHRoZSBzdGFydC4gKi8KICAgICAgICAgcyArPSAyOwogICAgICAgICBsZW4gLT0gMjsKKyAgICAgICAgLyogQW5kIGNoZWNrIHRoYXQgdGhlIGxhc3QgdHdvIG1hdGNoLiAqLwogICAgICAgICBpZiAoc1stLWxlbl0gIT0gcXVvdGUgfHwgc1stLWxlbl0gIT0gcXVvdGUpIHsKICAgICAgICAgICAgIFB5RXJyX0JhZEludGVybmFsQ2FsbCgpOwotICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KICAgICB9Ci0gICAgaWYgKCEqYnl0ZXNtb2RlICYmICFyYXdtb2RlKSB7Ci0gICAgICAgIHJldHVybiBkZWNvZGVfdW5pY29kZShjLCBzLCBsZW4sIHJhd21vZGUsIGMtPmNfZW5jb2RpbmcpOworCisgICAgaWYgKGZtb2RlKSB7CisgICAgICAgIC8qIEp1c3QgcmV0dXJuIHRoZSBieXRlcy4gVGhlIGNhbGxlciB3aWxsIHBhcnNlIHRoZSByZXN1bHRpbmcKKyAgICAgICAgICAgc3RyaW5nLiAqLworICAgICAgICAqZnN0ciA9IHM7CisgICAgICAgICpmc3RybGVuID0gbGVuOworICAgICAgICByZXR1cm4gMDsKICAgICB9CisKKyAgICAvKiBOb3QgYW4gZi1zdHJpbmcuICovCisgICAgLyogQXZvaWQgaW52b2tpbmcgZXNjYXBlIGRlY29kaW5nIHJvdXRpbmVzIGlmIHBvc3NpYmxlLiAqLworICAgICpyYXdtb2RlID0gKnJhd21vZGUgfHwgc3RyY2hyKHMsICdcXCcpID09IE5VTEw7CiAgICAgaWYgKCpieXRlc21vZGUpIHsKLSAgICAgICAgLyogRGlzYWxsb3cgbm9uLWFzY2lpIGNoYXJhY3RlcnMgKGJ1dCBub3QgZXNjYXBlcykgKi8KKyAgICAgICAgLyogRGlzYWxsb3cgbm9uLUFTQ0lJIGNoYXJhY3RlcnMuICovCiAgICAgICAgIGNvbnN0IGNoYXIgKmNoOwogICAgICAgICBmb3IgKGNoID0gczsgKmNoOyBjaCsrKSB7CiAgICAgICAgICAgICBpZiAoUHlfQ0hBUk1BU0soKmNoKSA+PSAweDgwKSB7CiAgICAgICAgICAgICAgICAgYXN0X2Vycm9yKGMsIG4sICJieXRlcyBjYW4gb25seSBjb250YWluIEFTQ0lJICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpdGVyYWwgY2hhcmFjdGVycy4iKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCpyYXdtb2RlKQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUocywgbGVuKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgKnJlc3VsdCA9IFB5Qnl0ZXNfRGVjb2RlRXNjYXBlKHMsIGxlbiwgTlVMTCwgLyogaWdub3JlZCAqLyAwLCBOVUxMKTsKKyAgICB9IGVsc2UgeworICAgICAgICBpZiAoKnJhd21vZGUpCisgICAgICAgICAgICAqcmVzdWx0ID0gUHlVbmljb2RlX0RlY29kZVVURjhTdGF0ZWZ1bChzLCBsZW4sIE5VTEwsIE5VTEwpOworICAgICAgICBlbHNlCisgICAgICAgICAgICAqcmVzdWx0ID0gZGVjb2RlX3VuaWNvZGVfd2l0aF9lc2NhcGVzKGMsIHMsIGxlbik7CiAgICAgfQotICAgIG5lZWRfZW5jb2RpbmcgPSAoISpieXRlc21vZGUgJiYgYy0+Y19lbmNvZGluZyAhPSBOVUxMICYmCi0gICAgICAgICAgICAgICAgICAgICBzdHJjbXAoYy0+Y19lbmNvZGluZywgInV0Zi04IikgIT0gMCk7Ci0gICAgaWYgKHJhd21vZGUgfHwgc3RyY2hyKHMsICdcXCcpID09IE5VTEwpIHsKLSAgICAgICAgaWYgKG5lZWRfZW5jb2RpbmcpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp2LCAqdSA9IFB5VW5pY29kZV9EZWNvZGVVVEY4KHMsIGxlbiwgTlVMTCk7Ci0gICAgICAgICAgICBpZiAodSA9PSBOVUxMIHx8ICEqYnl0ZXNtb2RlKQotICAgICAgICAgICAgICAgIHJldHVybiB1OwotICAgICAgICAgICAgdiA9IFB5VW5pY29kZV9Bc0VuY29kZWRTdHJpbmcodSwgYy0+Y19lbmNvZGluZywgTlVMTCk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYodSk7Ci0gICAgICAgICAgICByZXR1cm4gdjsKLSAgICAgICAgfSBlbHNlIGlmICgqYnl0ZXNtb2RlKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlCeXRlc19Gcm9tU3RyaW5nQW5kU2l6ZShzLCBsZW4pOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcChjLT5jX2VuY29kaW5nLCAidXRmLTgiKSA9PSAwKSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0Zyb21TdHJpbmdBbmRTaXplKHMsIGxlbik7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICByZXR1cm4gUHlVbmljb2RlX0RlY29kZUxhdGluMShzLCBsZW4sIE5VTEwpOwotICAgICAgICB9Ci0gICAgfQotICAgIHJldHVybiBQeUJ5dGVzX0RlY29kZUVzY2FwZShzLCBsZW4sIE5VTEwsIDEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZWVkX2VuY29kaW5nID8gYy0+Y19lbmNvZGluZyA6IE5VTEwpOworICAgIHJldHVybiAqcmVzdWx0ID09IE5VTEwgPyAtMSA6IDA7CiB9CiAKLS8qIEJ1aWxkIGEgUHl0aG9uIHN0cmluZyBvYmplY3Qgb3V0IG9mIGEgU1RSSU5HKyBhdG9tLiAgVGhpcyB0YWtlcyBjYXJlIG9mCi0gKiBjb21waWxlLXRpbWUgbGl0ZXJhbCBjYXRlbmF0aW9uLCBjYWxsaW5nIHBhcnNlc3RyKCkgb24gZWFjaCBwaWVjZSwgYW5kCi0gKiBwYXN0aW5nIHRoZSBpbnRlcm1lZGlhdGUgcmVzdWx0cyB0b2dldGhlci4KLSAqLwotc3RhdGljIFB5T2JqZWN0ICoKLXBhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuLCBpbnQgKmJ5dGVzbW9kZSkKKy8qIEFjY2VwdHMgYSBTVFJJTkcrIGF0b20sIGFuZCBwcm9kdWNlcyBhbiBleHByX3R5IG5vZGUuIFJ1biB0aHJvdWdoCisgICBlYWNoIFNUUklORyBhdG9tLCBhbmQgcHJvY2VzcyBpdCBhcyBuZWVkZWQuIEZvciBieXRlcywganVzdAorICAgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlciwgYW5kIHRoZSByZXN1bHQgd2lsbCBiZSBhIEJ5dGVzIG5vZGUuIEZvcgorICAgbm9ybWFsIHN0cmluZ3MgYW5kIGYtc3RyaW5ncywgY29uY2F0ZW5hdGUgdGhlbSB0b2dldGhlci4gVGhlIHJlc3VsdAorICAgd2lsbCBiZSBhIFN0ciBub2RlIGlmIHRoZXJlIHdlcmUgbm8gZi1zdHJpbmdzOyBhIEZvcm1hdHRlZFZhbHVlCisgICBub2RlIGlmIHRoZXJlJ3MganVzdCBhbiBmLXN0cmluZyAod2l0aCBubyBsZWFkaW5nIG9yIHRyYWlsaW5nCisgICBsaXRlcmFscyksIG9yIGEgSm9pbmVkU3RyIG5vZGUgaWYgdGhlcmUgYXJlIG11bHRpcGxlIGYtc3RyaW5ncyBvcgorICAgYW55IGxpdGVyYWxzIGludm9sdmVkLiAqLworc3RhdGljIGV4cHJfdHkKK3BhcnNlc3RycGx1cyhzdHJ1Y3QgY29tcGlsaW5nICpjLCBjb25zdCBub2RlICpuKQogewotICAgIFB5T2JqZWN0ICp2OworICAgIGludCBieXRlc21vZGUgPSAwOworICAgIFB5T2JqZWN0ICpieXRlc19zdHIgPSBOVUxMOwogICAgIGludCBpOwotICAgIFJFUShDSElMRChuLCAwKSwgU1RSSU5HKTsKLSAgICB2ID0gcGFyc2VzdHIoYywgQ0hJTEQobiwgMCksIGJ5dGVzbW9kZSk7Ci0gICAgaWYgKHYgIT0gTlVMTCkgewotICAgICAgICAvKiBTdHJpbmcgbGl0ZXJhbCBjb25jYXRlbmF0aW9uICovCi0gICAgICAgIGZvciAoaSA9IDE7IGkgPCBOQ0gobik7IGkrKykgewotICAgICAgICAgICAgUHlPYmplY3QgKnM7Ci0gICAgICAgICAgICBpbnQgc3ViYm0gPSAwOwotICAgICAgICAgICAgcyA9IHBhcnNlc3RyKGMsIENISUxEKG4sIGkpLCAmc3ViYm0pOwotICAgICAgICAgICAgaWYgKHMgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICBpZiAoKmJ5dGVzbW9kZSAhPSBzdWJibSkgewotICAgICAgICAgICAgICAgIGFzdF9lcnJvcihjLCBuLCAiY2Fubm90IG1peCBieXRlcyBhbmQgbm9uYnl0ZXMgbGl0ZXJhbHMiKTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYocyk7Ci0gICAgICAgICAgICAgICAgZ290byBvbkVycm9yOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKFB5Qnl0ZXNfQ2hlY2sodikgJiYgUHlCeXRlc19DaGVjayhzKSkgewotICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQ29uY2F0QW5kRGVsKCZ2LCBzKTsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqdGVtcCA9IFB5VW5pY29kZV9Db25jYXQodiwgcyk7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKHMpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gdGVtcDsKLSAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQotICAgICAgICAgICAgICAgICAgICBnb3RvIG9uRXJyb3I7CisKKyAgICBGc3RyaW5nUGFyc2VyIHN0YXRlOworICAgIEZzdHJpbmdQYXJzZXJfSW5pdCgmc3RhdGUpOworCisgICAgZm9yIChpID0gMDsgaSA8IE5DSChuKTsgaSsrKSB7CisgICAgICAgIGludCB0aGlzX2J5dGVzbW9kZTsKKyAgICAgICAgaW50IHRoaXNfcmF3bW9kZTsKKyAgICAgICAgUHlPYmplY3QgKnM7CisgICAgICAgIGNvbnN0IGNoYXIgKmZzdHI7CisgICAgICAgIFB5X3NzaXplX3QgZnN0cmxlbiA9IC0xOyAgLyogU2lsZW5jZSBhIGNvbXBpbGVyIHdhcm5pbmcuICovCisKKyAgICAgICAgUkVRKENISUxEKG4sIGkpLCBTVFJJTkcpOworICAgICAgICBpZiAocGFyc2VzdHIoYywgQ0hJTEQobiwgaSksICZ0aGlzX2J5dGVzbW9kZSwgJnRoaXNfcmF3bW9kZSwgJnMsCisgICAgICAgICAgICAgICAgICAgICAmZnN0ciwgJmZzdHJsZW4pICE9IDApCisgICAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIC8qIENoZWNrIHRoYXQgd2UncmUgbm90IG1peGluZyBieXRlcyB3aXRoIHVuaWNvZGUuICovCisgICAgICAgIGlmIChpICE9IDAgJiYgYnl0ZXNtb2RlICE9IHRoaXNfYnl0ZXNtb2RlKSB7CisgICAgICAgICAgICBhc3RfZXJyb3IoYywgbiwgImNhbm5vdCBtaXggYnl0ZXMgYW5kIG5vbmJ5dGVzIGxpdGVyYWxzIik7CisgICAgICAgICAgICBQeV9ERUNSRUYocyk7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICB9CisgICAgICAgIGJ5dGVzbW9kZSA9IHRoaXNfYnl0ZXNtb2RlOworCisgICAgICAgIGlmIChmc3RyICE9IE5VTEwpIHsKKyAgICAgICAgICAgIGludCByZXN1bHQ7CisgICAgICAgICAgICBhc3NlcnQocyA9PSBOVUxMICYmICFieXRlc21vZGUpOworICAgICAgICAgICAgLyogVGhpcyBpcyBhbiBmLXN0cmluZy4gUGFyc2UgYW5kIGNvbmNhdGVuYXRlIGl0LiAqLworICAgICAgICAgICAgcmVzdWx0ID0gRnN0cmluZ1BhcnNlcl9Db25jYXRGc3RyaW5nKCZzdGF0ZSwgJmZzdHIsIGZzdHIrZnN0cmxlbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzX3Jhd21vZGUsIDAsIGMsIG4pOworICAgICAgICAgICAgaWYgKHJlc3VsdCA8IDApCisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIGFzc2VydChieXRlc21vZGUgPyBQeUJ5dGVzX0NoZWNrRXhhY3QocykgOgorICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9DaGVja0V4YWN0KHMpKTsKKworICAgICAgICAgICAgLyogQSBzdHJpbmcgb3IgYnl0ZSBzdHJpbmcuICovCisgICAgICAgICAgICBhc3NlcnQocyAhPSBOVUxMICYmIGZzdHIgPT0gTlVMTCk7CisgICAgICAgICAgICBpZiAoYnl0ZXNtb2RlKSB7CisgICAgICAgICAgICAgICAgLyogRm9yIGJ5dGVzLCBjb25jYXQgYXMgd2UgZ28uICovCisgICAgICAgICAgICAgICAgaWYgKGkgPT0gMCkgeworICAgICAgICAgICAgICAgICAgICAvKiBGaXJzdCB0aW1lLCBqdXN0IHJlbWVtYmVyIHRoaXMgdmFsdWUuICovCisgICAgICAgICAgICAgICAgICAgIGJ5dGVzX3N0ciA9IHM7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlCeXRlc19Db25jYXRBbmREZWwoJmJ5dGVzX3N0ciwgcyk7CisgICAgICAgICAgICAgICAgICAgIGlmICghYnl0ZXNfc3RyKQorICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGFzc2VydChzICE9IE5VTEwgJiYgZnN0ciA9PSBOVUxMKTsKKyAgICAgICAgICAgICAgICAvKiBUaGlzIGlzIGEgcmVndWxhciBzdHJpbmcuIENvbmNhdGVuYXRlIGl0LiAqLworICAgICAgICAgICAgICAgIGlmIChGc3RyaW5nUGFyc2VyX0NvbmNhdEFuZERlbCgmc3RhdGUsIHMpIDwgMCkKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0KLSAgICByZXR1cm4gdjsKKyAgICBpZiAoYnl0ZXNtb2RlKSB7CisgICAgICAgIC8qIEp1c3QgcmV0dXJuIHRoZSBieXRlcyBvYmplY3QgYW5kIHdlJ3JlIGRvbmUuICovCisgICAgICAgIGlmIChQeUFyZW5hX0FkZFB5T2JqZWN0KGMtPmNfYXJlbmEsIGJ5dGVzX3N0cikgPCAwKQorICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgcmV0dXJuIEJ5dGVzKGJ5dGVzX3N0ciwgTElORU5PKG4pLCBuLT5uX2NvbF9vZmZzZXQsIGMtPmNfYXJlbmEpOworICAgIH0KIAotICBvbkVycm9yOgotICAgIFB5X1hERUNSRUYodik7CisgICAgLyogV2UncmUgbm90IGEgYnl0ZXMgc3RyaW5nLCBieXRlc19zdHIgc2hvdWxkIG5ldmVyIGhhdmUgYmVlbiBzZXQuICovCisgICAgYXNzZXJ0KGJ5dGVzX3N0ciA9PSBOVUxMKTsKKworICAgIHJldHVybiBGc3RyaW5nUGFyc2VyX0ZpbmlzaCgmc3RhdGUsIGMsIG4pOworCitlcnJvcjoKKyAgICBQeV9YREVDUkVGKGJ5dGVzX3N0cik7CisgICAgRnN0cmluZ1BhcnNlcl9EZWFsbG9jKCZzdGF0ZSk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vYmx0aW5tb2R1bGUuYyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCmluZGV4IDlmNWRiMmEuLmNlZTAxM2YgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9ibHRpbm1vZHVsZS5jCisrKyBiL1B5dGhvbi9ibHRpbm1vZHVsZS5jCkBAIC0yMSwxNiArMjEsMTggQEAKICAgIERvbid0IGZvcmdldCB0byBtb2RpZnkgUHlVbmljb2RlX0RlY29kZUZTRGVmYXVsdCgpIGlmIHlvdSB0b3VjaCBhbnkgb2YgdGhlCiAgICB2YWx1ZXMgZm9yIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmchCiAqLwotI2lmZGVmIEhBVkVfTUJDUwotY29uc3QgY2hhciAqUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyNpZiBkZWZpbmVkKF9fQVBQTEVfXykKK2NvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwotI2VsaWYgZGVmaW5lZChfX0FQUExFX18pCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCisvKiBtYXkgYmUgY2hhbmdlZCBieSBpbml0ZnNlbmNvZGluZygpLCBidXQgc2hvdWxkIG5ldmVyIGJlIGZyZWUoKWQgKi8KIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAxOwogI2Vsc2UKIGNvbnN0IGNoYXIgKlB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSBOVUxMOyAvKiBzZXQgYnkgaW5pdGZzZW5jb2RpbmcoKSAqLwogaW50IFB5X0hhc0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAwOwogI2VuZGlmCitjb25zdCBjaGFyICpQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJzdXJyb2dhdGVlc2NhcGUiOwogCiBfUHlfSURFTlRJRklFUihfX2J1aWx0aW5zX18pOwogX1B5X0lERU5USUZJRVIoX19kaWN0X18pOwpAQCAtNTIsNyArNTQsNyBAQAogc3RhdGljIFB5T2JqZWN0ICoKIGJ1aWx0aW5fX19idWlsZF9jbGFzc19fKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3ZHMpCiB7Ci0gICAgUHlPYmplY3QgKmZ1bmMsICpuYW1lLCAqYmFzZXMsICpta3csICptZXRhLCAqd2lubmVyLCAqcHJlcCwgKm5zLCAqY2VsbDsKKyAgICBQeU9iamVjdCAqZnVuYywgKm5hbWUsICpiYXNlcywgKm1rdywgKm1ldGEsICp3aW5uZXIsICpwcmVwLCAqbnMsICpub25lOwogICAgIFB5T2JqZWN0ICpjbHMgPSBOVUxMOwogICAgIFB5X3NzaXplX3QgbmFyZ3M7CiAgICAgaW50IGlzY2xhc3MgPSAwOyAgIC8qIGluaXRpYWxpemUgdG8gcHJldmVudCBnY2Mgd2FybmluZyAqLwpAQCAtMTU1LDE2ICsxNTcsOCBAQAogICAgICAgICB9CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBQeU9iamVjdCAqcGFyZ3MgPSBQeVR1cGxlX1BhY2soMiwgbmFtZSwgYmFzZXMpOwotICAgICAgICBpZiAocGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgUHlfREVDUkVGKHByZXApOwotICAgICAgICAgICAgUHlfREVDUkVGKG1ldGEpOwotICAgICAgICAgICAgUHlfWERFQ1JFRihta3cpOwotICAgICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOwotICAgICAgICB9Ci0gICAgICAgIG5zID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMocHJlcCwgcGFyZ3MsIG1rdyk7Ci0gICAgICAgIFB5X0RFQ1JFRihwYXJncyk7CisgICAgICAgIFB5T2JqZWN0ICpwYXJnc1syXSA9IHtuYW1lLCBiYXNlc307CisgICAgICAgIG5zID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChwcmVwLCBwYXJncywgMiwgbWt3KTsKICAgICAgICAgUHlfREVDUkVGKHByZXApOwogICAgIH0KICAgICBpZiAobnMgPT0gTlVMTCkgewpAQCAtMTczLDE5ICsxNjcsMTMgQEAKICAgICAgICAgUHlfREVDUkVGKGJhc2VzKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGNlbGwgPSBQeUV2YWxfRXZhbENvZGVFeChQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpLCBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpLCBucywKKyAgICBub25lID0gUHlFdmFsX0V2YWxDb2RlRXgoUHlGdW5jdGlvbl9HRVRfQ09ERShmdW5jKSwgUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKSwgbnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsIDAsIE5VTEwsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYykpOwotICAgIGlmIChjZWxsICE9IE5VTEwpIHsKLSAgICAgICAgUHlPYmplY3QgKm1hcmdzOwotICAgICAgICBtYXJncyA9IFB5VHVwbGVfUGFjaygzLCBuYW1lLCBiYXNlcywgbnMpOwotICAgICAgICBpZiAobWFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgY2xzID0gUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMobWV0YSwgbWFyZ3MsIG1rdyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYobWFyZ3MpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChjbHMgIT0gTlVMTCAmJiBQeUNlbGxfQ2hlY2soY2VsbCkpCi0gICAgICAgICAgICBQeUNlbGxfU2V0KGNlbGwsIGNscyk7Ci0gICAgICAgIFB5X0RFQ1JFRihjZWxsKTsKKyAgICBpZiAobm9uZSAhPSBOVUxMKSB7CisgICAgICAgIFB5T2JqZWN0ICptYXJnc1szXSA9IHtuYW1lLCBiYXNlcywgbnN9OworICAgICAgICBjbHMgPSBfUHlPYmplY3RfRmFzdENhbGxEaWN0KG1ldGEsIG1hcmdzLCAzLCBta3cpOworICAgICAgICBQeV9ERUNSRUYobm9uZSk7CiAgICAgfQogICAgIFB5X0RFQ1JFRihucyk7CiAgICAgUHlfREVDUkVGKG1ldGEpOwpAQCAtMzMxLDcgKzMxOSw3IEBACiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGNtcCA9PSAxKSB7CisgICAgICAgIGlmIChjbXAgPiAwKSB7CiAgICAgICAgICAgICBQeV9ERUNSRUYoaXQpOwogICAgICAgICAgICAgUHlfUkVUVVJOX1RSVUU7CiAgICAgICAgIH0KQEAgLTQ2OSw2ICs0NTcsNyBAQAogICAgIFB5T2JqZWN0ICppdCA9IGx6LT5pdDsKICAgICBsb25nIG9rOwogICAgIFB5T2JqZWN0ICooKml0ZXJuZXh0KShQeU9iamVjdCAqKTsKKyAgICBpbnQgY2hlY2t0cnVlID0gbHotPmZ1bmMgPT0gUHlfTm9uZSB8fCBsei0+ZnVuYyA9PSAoUHlPYmplY3QgKikmUHlCb29sX1R5cGU7CiAKICAgICBpdGVybmV4dCA9ICpQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQ7CiAgICAgZm9yICg7OykgewpAQCAtNDc2LDEyICs0NjUsMTEgQEAKICAgICAgICAgaWYgKGl0ZW0gPT0gTlVMTCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogCi0gICAgICAgIGlmIChsei0+ZnVuYyA9PSBQeV9Ob25lIHx8IGx6LT5mdW5jID09IChQeU9iamVjdCAqKSZQeUJvb2xfVHlwZSkgeworICAgICAgICBpZiAoY2hlY2t0cnVlKSB7CiAgICAgICAgICAgICBvayA9IFB5T2JqZWN0X0lzVHJ1ZShpdGVtKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpnb29kOwotICAgICAgICAgICAgZ29vZCA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbk9iakFyZ3MobHotPmZ1bmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVtLCBOVUxMKTsKKyAgICAgICAgICAgIGdvb2QgPSBQeU9iamVjdF9DYWxsRnVuY3Rpb25PYmpBcmdzKGx6LT5mdW5jLCBpdGVtLCBOVUxMKTsKICAgICAgICAgICAgIGlmIChnb29kID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoaXRlbSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CkBAIC0xMTY4LDI2ICsxMTU2LDQzIEBACiBzdGF0aWMgUHlPYmplY3QgKgogbWFwX25leHQobWFwb2JqZWN0ICpseikKIHsKLSAgICBQeU9iamVjdCAqdmFsOwotICAgIFB5T2JqZWN0ICphcmd0dXBsZTsKLSAgICBQeU9iamVjdCAqcmVzdWx0OwotICAgIFB5X3NzaXplX3QgbnVtYXJncywgaTsKKyAgICBQeU9iamVjdCAqc21hbGxfc3RhY2tbNV07CisgICAgUHlPYmplY3QgKipzdGFjazsKKyAgICBQeV9zc2l6ZV90IG5pdGVycywgbmFyZ3MsIGk7CisgICAgUHlPYmplY3QgKnJlc3VsdCA9IE5VTEw7CiAKLSAgICBudW1hcmdzID0gUHlUdXBsZV9TaXplKGx6LT5pdGVycyk7Ci0gICAgYXJndHVwbGUgPSBQeVR1cGxlX05ldyhudW1hcmdzKTsKLSAgICBpZiAoYXJndHVwbGUgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBmb3IgKGk9MCA7IGk8bnVtYXJncyA7IGkrKykgewotICAgICAgICB2YWwgPSBQeUl0ZXJfTmV4dChQeVR1cGxlX0dFVF9JVEVNKGx6LT5pdGVycywgaSkpOwotICAgICAgICBpZiAodmFsID09IE5VTEwpIHsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihhcmd0dXBsZSk7CisgICAgbml0ZXJzID0gUHlUdXBsZV9HRVRfU0laRShsei0+aXRlcnMpOworICAgIGlmIChuaXRlcnMgPD0gKFB5X3NzaXplX3QpUHlfQVJSQVlfTEVOR1RIKHNtYWxsX3N0YWNrKSkgeworICAgICAgICBzdGFjayA9IHNtYWxsX3N0YWNrOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgc3RhY2sgPSBQeU1lbV9NYWxsb2Mobml0ZXJzICogc2l6ZW9mKHN0YWNrWzBdKSk7CisgICAgICAgIGlmIChzdGFjayA9PSBOVUxMKSB7CisgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIH0KLSAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShhcmd0dXBsZSwgaSwgdmFsKTsKICAgICB9Ci0gICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChsei0+ZnVuYywgYXJndHVwbGUsIE5VTEwpOwotICAgIFB5X0RFQ1JFRihhcmd0dXBsZSk7CisKKyAgICBuYXJncyA9IDA7CisgICAgZm9yIChpPTA7IGkgPCBuaXRlcnM7IGkrKykgeworICAgICAgICBQeU9iamVjdCAqaXQgPSBQeVR1cGxlX0dFVF9JVEVNKGx6LT5pdGVycywgaSk7CisgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBQeV9UWVBFKGl0KS0+dHBfaXRlcm5leHQoaXQpOworICAgICAgICBpZiAodmFsID09IE5VTEwpIHsKKyAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgfQorICAgICAgICBzdGFja1tpXSA9IHZhbDsKKyAgICAgICAgbmFyZ3MrKzsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwobHotPmZ1bmMsIHN0YWNrLCBuYXJncyk7CisKK2V4aXQ6CisgICAgZm9yIChpPTA7IGkgPCBuYXJnczsgaSsrKSB7CisgICAgICAgIFB5X0RFQ1JFRihzdGFja1tpXSk7CisgICAgfQorICAgIGlmIChzdGFjayAhPSBzbWFsbF9zdGFjaykgeworICAgICAgICBQeU1lbV9GcmVlKHN0YWNrKTsKKyAgICB9CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIApAQCAtMTc3OSw3ICsxNzg0LDcgQEAKICAgICAgICAgaWYgKGRvX2ZsdXNoID09IC0xKQogICAgICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgICAgIGVsc2UgaWYgKGRvX2ZsdXNoKSB7Ci0gICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbGUsICZQeUlkX2ZsdXNoLCBOVUxMKTsKICAgICAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKICAgICAgICAgICAgIGVsc2UKQEAgLTE4NDUsNyArMTg1MCw3IEBACiAgICAgfQogCiAgICAgLyogRmlyc3Qgb2YgYWxsLCBmbHVzaCBzdGRlcnIgKi8KLSAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTE4NTQsNyArMTg1OSw3IEBACiAgICAgLyogV2Ugc2hvdWxkIG9ubHkgdXNlIChHTlUpIHJlYWRsaW5lIGlmIFB5dGhvbidzIHN5cy5zdGRpbiBhbmQKICAgICAgICBzeXMuc3Rkb3V0IGFyZSB0aGUgc2FtZSBhcyBDJ3Mgc3RkaW4gYW5kIHN0ZG91dCwgYmVjYXVzZSB3ZQogICAgICAgIG5lZWQgdG8gcGFzcyBpdCB0aG9zZS4gKi8KLSAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZpbiwgJlB5SWRfZmlsZW5vLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmaW4sICZQeUlkX2ZpbGVubywgTlVMTCk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIHR0eSA9IDA7CkBAIC0xODY3LDcgKzE4NzIsNyBAQAogICAgICAgICB0dHkgPSBmZCA9PSBmaWxlbm8oc3RkaW4pICYmIGlzYXR0eShmZCk7CiAgICAgfQogICAgIGlmICh0dHkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9maWxlbm8sICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9maWxlbm8sIE5VTEwpOwogICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgICAgICB0dHkgPSAwOwpAQCAtMTkwMiw3ICsxOTA3LDcgQEAKICAgICAgICAgc3RkaW5fZXJyb3JzX3N0ciA9IF9QeVVuaWNvZGVfQXNTdHJpbmcoc3RkaW5fZXJyb3JzKTsKICAgICAgICAgaWYgKCFzdGRpbl9lbmNvZGluZ19zdHIgfHwgIXN0ZGluX2Vycm9yc19zdHIpCiAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7Ci0gICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmICh0bXAgPT0gTlVMTCkKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAgICAgICAgIGVsc2UKQEAgLTE5MjksOSArMTkzNCw4IEBACiAgICAgICAgICAgICBQeV9DTEVBUihzdHJpbmdwbyk7CiAgICAgICAgICAgICBpZiAocG8gPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7Ci0gICAgICAgICAgICBwcm9tcHRzdHIgPSBQeUJ5dGVzX0FzU3RyaW5nKHBvKTsKLSAgICAgICAgICAgIGlmIChwcm9tcHRzdHIgPT0gTlVMTCkKLSAgICAgICAgICAgICAgICBnb3RvIF9yZWFkbGluZV9lcnJvcnM7CisgICAgICAgICAgICBhc3NlcnQoUHlCeXRlc19DaGVjayhwbykpOworICAgICAgICAgICAgcHJvbXB0c3RyID0gUHlCeXRlc19BU19TVFJJTkcocG8pOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgcG8gPSBOVUxMOwpAQCAtMTk4Myw3ICsxOTg3LDcgQEAKICAgICAgICAgaWYgKFB5RmlsZV9Xcml0ZU9iamVjdChwcm9tcHQsIGZvdXQsIFB5X1BSSU5UX1JBVykgIT0gMCkKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvdXQsICZQeUlkX2ZsdXNoLCAiIik7CisgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgaWYgKHRtcCA9PSBOVUxMKQogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgIGVsc2UKQEAgLTIwODcsMTAgKzIwOTEsMTEgQEAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX3NvcnRlZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2RzKQogewotICAgIFB5T2JqZWN0ICpuZXdsaXN0LCAqdiwgKnNlcSwgKmtleWZ1bmM9TlVMTCwgKm5ld2FyZ3M7CisgICAgUHlPYmplY3QgKm5ld2xpc3QsICp2LCAqc2VxLCAqa2V5ZnVuYz1OVUxMLCAqKm5ld2FyZ3M7CiAgICAgUHlPYmplY3QgKmNhbGxhYmxlOwogICAgIHN0YXRpYyBjaGFyICprd2xpc3RbXSA9IHsiaXRlcmFibGUiLCAia2V5IiwgInJldmVyc2UiLCAwfTsKICAgICBpbnQgcmV2ZXJzZTsKKyAgICBQeV9zc2l6ZV90IG5hcmdzOwogCiAgICAgLyogYXJncyAxLTMgc2hvdWxkIG1hdGNoIGxpc3Rzb3J0IGluIE9iamVjdHMvbGlzdG9iamVjdC5jICovCiAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dkcywgIk98T2k6c29ydGVkIiwKQEAgLTIxMDcsMTUgKzIxMTIsOSBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAKLSAgICBuZXdhcmdzID0gUHlUdXBsZV9HZXRTbGljZShhcmdzLCAxLCA0KTsKLSAgICBpZiAobmV3YXJncyA9PSBOVUxMKSB7Ci0gICAgICAgIFB5X0RFQ1JFRihuZXdsaXN0KTsKLSAgICAgICAgUHlfREVDUkVGKGNhbGxhYmxlKTsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotCi0gICAgdiA9IFB5T2JqZWN0X0NhbGwoY2FsbGFibGUsIG5ld2FyZ3MsIGt3ZHMpOwotICAgIFB5X0RFQ1JFRihuZXdhcmdzKTsKKyAgICBuZXdhcmdzID0gJlB5VHVwbGVfR0VUX0lURU0oYXJncywgMSk7CisgICAgbmFyZ3MgPSBQeVR1cGxlX0dFVF9TSVpFKGFyZ3MpIC0gMTsKKyAgICB2ID0gX1B5T2JqZWN0X0Zhc3RDYWxsRGljdChjYWxsYWJsZSwgbmV3YXJncywgbmFyZ3MsIGt3ZHMpOwogICAgIFB5X0RFQ1JFRihjYWxsYWJsZSk7CiAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICBQeV9ERUNSRUYobmV3bGlzdCk7CkBAIC0yNzEwLDEwICsyNzA5LDEwIEBACiAgICAgU0VUQlVJTFRJTigiemlwIiwgICAgICAgICAgICAgICAgICAgJlB5WmlwX1R5cGUpOwogICAgIGRlYnVnID0gUHlCb29sX0Zyb21Mb25nKFB5X09wdGltaXplRmxhZyA9PSAwKTsKICAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoZGljdCwgIl9fZGVidWdfXyIsIGRlYnVnKSA8IDApIHsKLSAgICAgICAgUHlfWERFQ1JFRihkZWJ1Zyk7CisgICAgICAgIFB5X0RFQ1JFRihkZWJ1Zyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KLSAgICBQeV9YREVDUkVGKGRlYnVnKTsKKyAgICBQeV9ERUNSRUYoZGVidWcpOwogCiAgICAgcmV0dXJuIG1vZDsKICN1bmRlZiBBRERfVE9fQUxMCmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWwuYyBiL1B5dGhvbi9jZXZhbC5jCmluZGV4IGU5ZDBjYmIuLjgyY2M5YTIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jZXZhbC5jCisrKyBiL1B5dGhvbi9jZXZhbC5jCkBAIC0xNSw4NyArMTUsMTIgQEAKICNpbmNsdWRlICJkaWN0b2JqZWN0LmgiCiAjaW5jbHVkZSAiZnJhbWVvYmplY3QuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJweWR0cmFjZS5oIgogI2luY2x1ZGUgInNldG9iamVjdC5oIgogI2luY2x1ZGUgInN0cnVjdG1lbWJlci5oIgogCiAjaW5jbHVkZSA8Y3R5cGUuaD4KIAotI2lmbmRlZiBXSVRIX1RTQwotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhcikKLQotI2Vsc2UKLQotdHlwZWRlZiB1bnNpZ25lZCBsb25nIGxvbmcgdWludDY0OwotCi0vKiBQb3dlclBDIHN1cHBvcnQuCi0gICAiX19wcGNfXyIgYXBwZWFycyB0byBiZSB0aGUgcHJlcHJvY2Vzc29yIGRlZmluaXRpb24gdG8gZGV0ZWN0IG9uIE9TIFgsIHdoZXJlYXMKLSAgICJfX3Bvd2VycGNfXyIgYXBwZWFycyB0byBiZSB0aGUgY29ycmVjdCBvbmUgZm9yIExpbnV4IHdpdGggR0NDCi0qLwotI2lmIGRlZmluZWQoX19wcGNfXykgfHwgZGVmaW5lZCAoX19wb3dlcnBjX18pCi0KLSNkZWZpbmUgUkVBRF9USU1FU1RBTVAodmFyKSBwcGNfZ2V0Y291bnRlcigmdmFyKQotCi1zdGF0aWMgdm9pZAotcHBjX2dldGNvdW50ZXIodWludDY0ICp2KQotewotICAgIHVuc2lnbmVkIGxvbmcgdGJ1LCB0YiwgdGJ1MjsKLQotICBsb29wOgotICAgIGFzbSB2b2xhdGlsZSAoIm1mdGJ1ICUwIiA6ICI9ciIgKHRidSkgKTsKLSAgICBhc20gdm9sYXRpbGUgKCJtZnRiICAlMCIgOiAiPXIiICh0YikgICk7Ci0gICAgYXNtIHZvbGF0aWxlICgibWZ0YnUgJTAiIDogIj1yIiAodGJ1MikpOwotICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0KHRidSAhPSB0YnUyLCAwKSkgZ290byBsb29wOwotCi0gICAgLyogVGhlIHNsaWdodGx5IHBlY3VsaWFyIHdheSBvZiB3cml0aW5nIHRoZSBuZXh0IGxpbmVzIGlzCi0gICAgICAgY29tcGlsZWQgYmV0dGVyIGJ5IEdDQyB0aGFuIGFueSBvdGhlciB3YXkgSSB0cmllZC4gKi8KLSAgICAoKGxvbmcqKSh2KSlbMF0gPSB0YnU7Ci0gICAgKChsb25nKikodikpWzFdID0gdGI7Ci19Ci0KLSNlbGlmIGRlZmluZWQoX19pMzg2X18pCi0KLS8qIHRoaXMgaXMgZm9yIGxpbnV4L3g4NiAoYW5kIHByb2JhYmx5IGFueSBvdGhlciBHQ0MveDg2IGNvbWJvKSAqLwotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhbCkgXAotICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXygicmR0c2MiIDogIj1BIiAodmFsKSkKLQotI2VsaWYgZGVmaW5lZChfX3g4Nl82NF9fKQotCi0vKiBmb3IgZ2NjL3g4Nl82NCwgdGhlICJBIiBjb25zdHJhaW50IGluIERJIG1vZGUgbWVhbnMgKmVpdGhlciogcmF4ICpvciogcmR4OwotICAgbm90IGVkeDplYXggYXMgaXQgZG9lcyBmb3IgaTM4Ni4gIFNpbmNlIHJkdHNjIHB1dHMgaXRzIHJlc3VsdCBpbiBlZHg6ZWF4Ci0gICBldmVuIGluIDY0LWJpdCBtb2RlLCB3ZSBuZWVkIHRvIHVzZSAiYSIgYW5kICJkIiBmb3IgdGhlIGxvd2VyIGFuZCB1cHBlcgotICAgMzItYml0IHBpZWNlcyBvZiB0aGUgcmVzdWx0LiAqLwotCi0jZGVmaW5lIFJFQURfVElNRVNUQU1QKHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB1bnNpZ25lZCBpbnQgaCwgbDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIF9fYXNtX18gX192b2xhdGlsZV9fKCJyZHRzYyIgOiAiPWEiIChsKSwgIj1kIiAoaCkpOyBcCi0gICAgKHZhbCkgPSAoKHVpbnQ2NClsKSB8ICgoKHVpbnQ2NCloKSA8PCAzMik7ICAgICAgICAgIFwKLSAgICB9IHdoaWxlKDApCi0KLQotI2Vsc2UKLQotI2Vycm9yICJEb24ndCBrbm93IGhvdyB0byBpbXBsZW1lbnQgdGltZXN0YW1wIGNvdW50ZXIgZm9yIHRoaXMgYXJjaGl0ZWN0dXJlIgotCi0jZW5kaWYKLQotdm9pZCBkdW1wX3RzYyhpbnQgb3Bjb2RlLCBpbnQgdGlja2VkLCB1aW50NjQgaW5zdDAsIHVpbnQ2NCBpbnN0MSwKLSAgICAgICAgICAgICAgdWludDY0IGxvb3AwLCB1aW50NjQgbG9vcDEsIHVpbnQ2NCBpbnRyMCwgdWludDY0IGludHIxKQotewotICAgIHVpbnQ2NCBpbnRyLCBpbnN0LCBsb29wOwotICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7Ci0gICAgaWYgKCF0c3RhdGUtPmludGVycC0+dHNjZHVtcCkKLSAgICAgICAgcmV0dXJuOwotICAgIGludHIgPSBpbnRyMSAtIGludHIwOwotICAgIGluc3QgPSBpbnN0MSAtIGluc3QwIC0gaW50cjsKLSAgICBsb29wID0gbG9vcDEgLSBsb29wMCAtIGludHI7Ci0gICAgZnByaW50ZihzdGRlcnIsICJvcGNvZGU9JTAzZCB0PSVkIGluc3Q9JTA2bGxkIGxvb3A9JTA2bGxkXG4iLAotICAgICAgICAgICAgb3Bjb2RlLCB0aWNrZWQsIGluc3QsIGxvb3ApOwotfQotCi0jZW5kaWYKLQogLyogVHVybiB0aGlzIG9uIGlmIHlvdXIgY29tcGlsZXIgY2hva2VzIG9uIHRoZSBiaWcgc3dpdGNoOiAqLwogLyogI2RlZmluZSBDQVNFX1RPT19CSUcgMSAqLwogCkBAIC0xMDgsMjQgKzMzLDEzIEBACiB0eXBlZGVmIFB5T2JqZWN0ICooKmNhbGxwcm9jKShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogLyogRm9yd2FyZCBkZWNsYXJhdGlvbnMgKi8KLSNpZmRlZiBXSVRIX1RTQwotc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIGludCwgdWludDY0KiwgdWludDY0Kik7Ci0jZWxzZQotc3RhdGljIFB5T2JqZWN0ICogY2FsbF9mdW5jdGlvbihQeU9iamVjdCAqKiosIGludCk7Ci0jZW5kaWYKLXN0YXRpYyBQeU9iamVjdCAqIGZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCwgaW50KTsKLXN0YXRpYyBQeU9iamVjdCAqIGRvX2NhbGwoUHlPYmplY3QgKiwgUHlPYmplY3QgKioqLCBpbnQsIGludCk7Ci1zdGF0aWMgUHlPYmplY3QgKiBleHRfZG9fY2FsbChQeU9iamVjdCAqLCBQeU9iamVjdCAqKiosIGludCwgaW50LCBpbnQpOwotc3RhdGljIFB5T2JqZWN0ICogdXBkYXRlX2tleXdvcmRfYXJncyhQeU9iamVjdCAqLCBpbnQsIFB5T2JqZWN0ICoqKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKik7Ci1zdGF0aWMgUHlPYmplY3QgKiB1cGRhdGVfc3Rhcl9hcmdzKGludCwgaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKiopOwotc3RhdGljIFB5T2JqZWN0ICogbG9hZF9hcmdzKFB5T2JqZWN0ICoqKiwgaW50KTsKLSNkZWZpbmUgQ0FMTF9GTEFHX1ZBUiAxCi0jZGVmaW5lIENBTExfRkxBR19LVyAyCitzdGF0aWMgUHlPYmplY3QgKiBjYWxsX2Z1bmN0aW9uKFB5T2JqZWN0ICoqKiwgUHlfc3NpemVfdCwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICosIFB5T2JqZWN0ICoqLCBQeV9zc2l6ZV90LCBQeU9iamVjdCAqKTsKK3N0YXRpYyBQeU9iamVjdCAqIGRvX2NhbGxfY29yZShQeU9iamVjdCAqLCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIAogI2lmZGVmIExMVFJBQ0UKIHN0YXRpYyBpbnQgbGx0cmFjZTsKLXN0YXRpYyBpbnQgcHJ0cmFjZShQeU9iamVjdCAqLCBjaGFyICopOworc3RhdGljIGludCBwcnRyYWNlKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKik7CiAjZW5kaWYKIHN0YXRpYyBpbnQgY2FsbF90cmFjZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqLCBQeUZyYW1lT2JqZWN0ICosCkBAIC0xMzcsMTQgKzUxLDE4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKik7CiBzdGF0aWMgaW50IG1heWJlX2NhbGxfbGluZV90cmFjZShQeV90cmFjZWZ1bmMsIFB5T2JqZWN0ICosCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICosIFB5RnJhbWVPYmplY3QgKiwgaW50ICosIGludCAqLCBpbnQgKik7CitzdGF0aWMgdm9pZCBtYXliZV9kdHJhY2VfbGluZShQeUZyYW1lT2JqZWN0ICosIGludCAqLCBpbnQgKiwgaW50ICopOworc3RhdGljIHZvaWQgZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KFB5RnJhbWVPYmplY3QgKik7CitzdGF0aWMgdm9pZCBkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKFB5RnJhbWVPYmplY3QgKik7CiAKIHN0YXRpYyBQeU9iamVjdCAqIGNtcF9vdXRjb21lKGludCwgUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CitzdGF0aWMgUHlPYmplY3QgKiBpbXBvcnRfbmFtZShQeUZyYW1lT2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICosIFB5T2JqZWN0ICopOwogc3RhdGljIFB5T2JqZWN0ICogaW1wb3J0X2Zyb20oUHlPYmplY3QgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgaW50IGltcG9ydF9hbGxfZnJvbShQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyB2b2lkIGZvcm1hdF9leGNfY2hlY2tfYXJnKFB5T2JqZWN0ICosIGNvbnN0IGNoYXIgKiwgUHlPYmplY3QgKik7CiBzdGF0aWMgdm9pZCBmb3JtYXRfZXhjX3VuYm91bmQoUHlDb2RlT2JqZWN0ICpjbywgaW50IG9wYXJnKTsKIHN0YXRpYyBQeU9iamVjdCAqIHVuaWNvZGVfY29uY2F0ZW5hdGUoUHlPYmplY3QgKiwgUHlPYmplY3QgKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqLCB1bnNpZ25lZCBjaGFyICopOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICosIGNvbnN0IF9QeV9DT0RFVU5JVCAqKTsKIHN0YXRpYyBQeU9iamVjdCAqIHNwZWNpYWxfbG9va3VwKFB5T2JqZWN0ICosIF9QeV9JZGVudGlmaWVyICopOwogCiAjZGVmaW5lIE5BTUVfRVJST1JfTVNHIFwKQEAgLTc5NiwxMSArNzE0LDE4IEBACiBQeU9iamVjdCAqCiBQeUV2YWxfRXZhbEZyYW1lRXgoUHlGcmFtZU9iamVjdCAqZiwgaW50IHRocm93ZmxhZykKIHsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmludGVycC0+ZXZhbF9mcmFtZShmLCB0aHJvd2ZsYWcpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0V2YWxGcmFtZURlZmF1bHQoUHlGcmFtZU9iamVjdCAqZiwgaW50IHRocm93ZmxhZykKK3sKICNpZmRlZiBEWFBBSVJTCiAgICAgaW50IGxhc3RvcGNvZGUgPSAwOwogI2VuZGlmCiAgICAgUHlPYmplY3QgKipzdGFja19wb2ludGVyOyAgLyogTmV4dCBmcmVlIHNsb3QgaW4gdmFsdWUgc3RhY2sgKi8KLSAgICB1bnNpZ25lZCBjaGFyICpuZXh0X2luc3RyOworICAgIGNvbnN0IF9QeV9DT0RFVU5JVCAqbmV4dF9pbnN0cjsKICAgICBpbnQgb3Bjb2RlOyAgICAgICAgLyogQ3VycmVudCBvcGNvZGUgKi8KICAgICBpbnQgb3Bhcmc7ICAgICAgICAgLyogQ3VycmVudCBvcGNvZGUgYXJndW1lbnQsIGlmIGFueSAqLwogICAgIGVudW0gd2h5X2NvZGUgd2h5OyAvKiBSZWFzb24gZm9yIGJsb2NrIHN0YWNrIHVud2luZCAqLwpAQCAtODE4LDcgKzc0Myw3IEBACiAgICAgICAgdGltZSBpdCBpcyB0ZXN0ZWQuICovCiAgICAgaW50IGluc3RyX3ViID0gLTEsIGluc3RyX2xiID0gMCwgaW5zdHJfcHJldiA9IC0xOwogCi0gICAgdW5zaWduZWQgY2hhciAqZmlyc3RfaW5zdHI7CisgICAgY29uc3QgX1B5X0NPREVVTklUICpmaXJzdF9pbnN0cjsKICAgICBQeU9iamVjdCAqbmFtZXM7CiAgICAgUHlPYmplY3QgKmNvbnN0czsKIApAQCAtODg2LDI0ICs4MTEsMTAgQEAKIC8qIEltcG9ydCB0aGUgc3RhdGljIGp1bXAgdGFibGUgKi8KICNpbmNsdWRlICJvcGNvZGVfdGFyZ2V0cy5oIgogCi0vKiBUaGlzIG1hY3JvIGlzIHVzZWQgd2hlbiBzZXZlcmFsIG9wY29kZXMgZGVmZXIgdG8gdGhlIHNhbWUgaW1wbGVtZW50YXRpb24KLSAgIChlLmcuIFNFVFVQX0xPT1AsIFNFVFVQX0ZJTkFMTFkpICovCi0jZGVmaW5lIFRBUkdFVF9XSVRIX0lNUEwob3AsIGltcGwpIFwKLSAgICBUQVJHRVRfIyNvcDogXAotICAgICAgICBvcGNvZGUgPSBvcDsgXAotICAgICAgICBpZiAoSEFTX0FSRyhvcCkpIFwKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOyBcCi0gICAgY2FzZSBvcDogXAotICAgICAgICBnb3RvIGltcGw7IFwKLQogI2RlZmluZSBUQVJHRVQob3ApIFwKICAgICBUQVJHRVRfIyNvcDogXAotICAgICAgICBvcGNvZGUgPSBvcDsgXAotICAgICAgICBpZiAoSEFTX0FSRyhvcCkpIFwKLSAgICAgICAgICAgIG9wYXJnID0gTkVYVEFSRygpOyBcCiAgICAgY2FzZSBvcDoKIAotCiAjZGVmaW5lIERJU1BBVENIKCkgXAogICAgIHsgXAogICAgICAgICBpZiAoIV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZldmFsX2JyZWFrZXIpKSB7ICAgICAgXApAQCAtOTE1LDE4ICs4MjYsMjAgQEAKICNpZmRlZiBMTFRSQUNFCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBcCiAgICAgeyBcCi0gICAgICAgIGlmICghbGx0cmFjZSAmJiAhX1B5X1RyYWNpbmdQb3NzaWJsZSkgeyBcCisgICAgICAgIGlmICghbGx0cmFjZSAmJiAhX1B5X1RyYWNpbmdQb3NzaWJsZSAmJiAhUHlEVHJhY2VfTElORV9FTkFCTEVEKCkpIHsgXAogICAgICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOyBcCi0gICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1sqbmV4dF9pbnN0cisrXTsgXAorICAgICAgICAgICAgTkVYVE9QQVJHKCk7IFwKKyAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzW29wY29kZV07IFwKICAgICAgICAgfSBcCiAgICAgICAgIGdvdG8gZmFzdF9uZXh0X29wY29kZTsgXAogICAgIH0KICNlbHNlCiAjZGVmaW5lIEZBU1RfRElTUEFUQ0goKSBcCiAgICAgeyBcCi0gICAgICAgIGlmICghX1B5X1RyYWNpbmdQb3NzaWJsZSkgeyBcCisgICAgICAgIGlmICghX1B5X1RyYWNpbmdQb3NzaWJsZSAmJiAhUHlEVHJhY2VfTElORV9FTkFCTEVEKCkpIHsgXAogICAgICAgICAgICAgZi0+Zl9sYXN0aSA9IElOU1RSX09GRlNFVCgpOyBcCi0gICAgICAgICAgICBnb3RvICpvcGNvZGVfdGFyZ2V0c1sqbmV4dF9pbnN0cisrXTsgXAorICAgICAgICAgICAgTkVYVE9QQVJHKCk7IFwKKyAgICAgICAgICAgIGdvdG8gKm9wY29kZV90YXJnZXRzW29wY29kZV07IFwKICAgICAgICAgfSBcCiAgICAgICAgIGdvdG8gZmFzdF9uZXh0X29wY29kZTsgXAogICAgIH0KQEAgLTkzNSwxMCArODQ4LDcgQEAKICNlbHNlCiAjZGVmaW5lIFRBUkdFVChvcCkgXAogICAgIGNhc2Ugb3A6Ci0jZGVmaW5lIFRBUkdFVF9XSVRIX0lNUEwob3AsIGltcGwpIFwKLSAgICAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmdzIGFib3V0IGBpbXBsYCB1bnVzZWQgKi8gXAotICAgIGlmICgwKSBnb3RvIGltcGw7IFwKLSAgICBjYXNlIG9wOgorCiAjZGVmaW5lIERJU1BBVENIKCkgY29udGludWUKICNkZWZpbmUgRkFTVF9ESVNQQVRDSCgpIGdvdG8gZmFzdF9uZXh0X29wY29kZQogI2VuZGlmCkBAIC05NTIsNzAgKzg2MiwzMyBAQAogI2RlZmluZSBHRVRJVEVNKHYsIGkpIFB5VHVwbGVfR2V0SXRlbSgodiksIChpKSkKICNlbmRpZgogCi0jaWZkZWYgV0lUSF9UU0MKLS8qIFVzZSBQZW50aXVtIHRpbWVzdGFtcCBjb3VudGVyIHRvIG1hcmsgY2VydGFpbiBldmVudHM6Ci0gICBpbnN0MCAtLSBiZWdpbm5pbmcgb2Ygc3dpdGNoIHN0YXRlbWVudCBmb3Igb3Bjb2RlIGRpc3BhdGNoCi0gICBpbnN0MSAtLSBlbmQgb2Ygc3dpdGNoIHN0YXRlbWVudCAobWF5IGJlIHNraXBwZWQpCi0gICBsb29wMCAtLSB0aGUgdG9wIG9mIHRoZSBtYWlubG9vcAotICAgbG9vcDEgLS0gcGxhY2Ugd2hlcmUgY29udHJvbCByZXR1cm5zIGFnYWluIHRvIHRvcCBvZiBtYWlubG9vcAotICAgICAgICAgICAgKG1heSBiZSBza2lwcGVkKQotICAgaW50cjEgLS0gYmVnaW5uaW5nIG9mIGxvbmcgaW50ZXJydXB0aW9uCi0gICBpbnRyMiAtLSBlbmQgb2YgbG9uZyBpbnRlcnJ1cHRpb24KLQotICAgTWFueSBvcGNvZGVzIGNhbGwgb3V0IHRvIGhlbHBlciBDIGZ1bmN0aW9ucy4gIEluIHNvbWUgY2FzZXMsIHRoZQotICAgdGltZSBpbiB0aG9zZSBmdW5jdGlvbnMgc2hvdWxkIGJlIGNvdW50ZWQgdG93YXJkcyB0aGUgdGltZSBmb3IgdGhlCi0gICBvcGNvZGUsIGJ1dCBub3QgaW4gYWxsIGNhc2VzLiAgRm9yIGV4YW1wbGUsIGEgQ0FMTF9GVU5DVElPTiBvcGNvZGUKLSAgIGNhbGxzIGFub3RoZXIgUHl0aG9uIGZ1bmN0aW9uOyB0aGVyZSdzIG5vIHBvaW50IGluIGNoYXJnZSBhbGwgdGhlCi0gICBieXRlY29kZSBleGVjdXRlZCBieSB0aGUgY2FsbGVkIGZ1bmN0aW9uIHRvIHRoZSBjYWxsZXIuCi0KLSAgIEl0J3MgaGFyZCB0byBtYWtlIGEgdXNlZnVsIGp1ZGdlbWVudCBzdGF0aWNhbGx5LiAgSW4gdGhlIHByZXNlbmNlCi0gICBvZiBvcGVyYXRvciBvdmVybG9hZGluZywgaXQncyBpbXBvc3NpYmxlIHRvIHRlbGwgaWYgYSBjYWxsIHdpbGwKLSAgIGV4ZWN1dGUgbmV3IFB5dGhvbiBjb2RlIG9yIG5vdC4KLQotICAgSXQncyBhIGNhc2UtYnktY2FzZSBqdWRnZW1lbnQuICBJJ2xsIHVzZSBpbnRyMSBmb3IgdGhlIGZvbGxvd2luZwotICAgY2FzZXM6Ci0KLSAgIElNUE9SVF9TVEFSCi0gICBJTVBPUlRfRlJPTQotICAgQ0FMTF9GVU5DVElPTiAoYW5kIGZyaWVuZHMpCi0KLSAqLwotICAgIHVpbnQ2NCBpbnN0MCwgaW5zdDEsIGxvb3AwLCBsb29wMSwgaW50cjAgPSAwLCBpbnRyMSA9IDA7Ci0gICAgaW50IHRpY2tlZCA9IDA7Ci0KLSAgICBSRUFEX1RJTUVTVEFNUChpbnN0MCk7Ci0gICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwotICAgIFJFQURfVElNRVNUQU1QKGxvb3AwKTsKLSAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7Ci0KLSAgICAvKiBzaHV0IHVwIHRoZSBjb21waWxlciAqLwotICAgIG9wY29kZSA9IDA7Ci0jZW5kaWYKLQogLyogQ29kZSBhY2Nlc3MgbWFjcm9zICovCiAKLSNkZWZpbmUgSU5TVFJfT0ZGU0VUKCkgICgoaW50KShuZXh0X2luc3RyIC0gZmlyc3RfaW5zdHIpKQotI2RlZmluZSBORVhUT1AoKSAgICAgICAgKCpuZXh0X2luc3RyKyspCi0jZGVmaW5lIE5FWFRBUkcoKSAgICAgICAobmV4dF9pbnN0ciArPSAyLCAobmV4dF9pbnN0clstMV08PDgpICsgbmV4dF9pbnN0clstMl0pCi0jZGVmaW5lIFBFRUtBUkcoKSAgICAgICAoKG5leHRfaW5zdHJbMl08PDgpICsgbmV4dF9pbnN0clsxXSkKLSNkZWZpbmUgSlVNUFRPKHgpICAgICAgIChuZXh0X2luc3RyID0gZmlyc3RfaW5zdHIgKyAoeCkpCi0jZGVmaW5lIEpVTVBCWSh4KSAgICAgICAobmV4dF9pbnN0ciArPSAoeCkpCisvKiBUaGUgaW50ZWdlciBvdmVyZmxvdyBpcyBjaGVja2VkIGJ5IGFuIGFzc2VydGlvbiBiZWxvdy4gKi8KKyNkZWZpbmUgSU5TVFJfT0ZGU0VUKCkgIChzaXplb2YoX1B5X0NPREVVTklUKSAqIChpbnQpKG5leHRfaW5zdHIgLSBmaXJzdF9pbnN0cikpCisjZGVmaW5lIE5FWFRPUEFSRygpICBkbyB7IFwKKyAgICAgICAgX1B5X0NPREVVTklUIHdvcmQgPSAqbmV4dF9pbnN0cjsgXAorICAgICAgICBvcGNvZGUgPSBfUHlfT1BDT0RFKHdvcmQpOyBcCisgICAgICAgIG9wYXJnID0gX1B5X09QQVJHKHdvcmQpOyBcCisgICAgICAgIG5leHRfaW5zdHIrKzsgXAorICAgIH0gd2hpbGUgKDApCisjZGVmaW5lIEpVTVBUTyh4KSAgICAgICAobmV4dF9pbnN0ciA9IGZpcnN0X2luc3RyICsgKHgpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkpCisjZGVmaW5lIEpVTVBCWSh4KSAgICAgICAobmV4dF9pbnN0ciArPSAoeCkgLyBzaXplb2YoX1B5X0NPREVVTklUKSkKIAogLyogT3BDb2RlIHByZWRpY3Rpb24gbWFjcm9zCiAgICAgU29tZSBvcGNvZGVzIHRlbmQgdG8gY29tZSBpbiBwYWlycyB0aHVzIG1ha2luZyBpdCBwb3NzaWJsZSB0bwogICAgIHByZWRpY3QgdGhlIHNlY29uZCBjb2RlIHdoZW4gdGhlIGZpcnN0IGlzIHJ1bi4gIEZvciBleGFtcGxlLAotICAgIENPTVBBUkVfT1AgaXMgb2Z0ZW4gZm9sbG93ZWQgYnkgSlVNUF9JRl9GQUxTRSBvciBKVU1QX0lGX1RSVUUuICBBbmQsCi0gICAgdGhvc2Ugb3Bjb2RlcyBhcmUgb2Z0ZW4gZm9sbG93ZWQgYnkgYSBQT1BfVE9QLgorICAgIENPTVBBUkVfT1AgaXMgb2Z0ZW4gZm9sbG93ZWQgYnkgUE9QX0pVTVBfSUZfRkFMU0Ugb3IgUE9QX0pVTVBfSUZfVFJVRS4KIAogICAgIFZlcmlmeWluZyB0aGUgcHJlZGljdGlvbiBjb3N0cyBhIHNpbmdsZSBoaWdoLXNwZWVkIHRlc3Qgb2YgYSByZWdpc3RlcgogICAgIHZhcmlhYmxlIGFnYWluc3QgYSBjb25zdGFudC4gIElmIHRoZSBwYWlyaW5nIHdhcyBnb29kLCB0aGVuIHRoZQogICAgIHByb2Nlc3NvcidzIG93biBpbnRlcm5hbCBicmFuY2ggcHJlZGljYXRpb24gaGFzIGEgaGlnaCBsaWtlbGlob29kIG9mCiAgICAgc3VjY2VzcywgcmVzdWx0aW5nIGluIGEgbmVhcmx5IHplcm8tb3ZlcmhlYWQgdHJhbnNpdGlvbiB0byB0aGUKICAgICBuZXh0IG9wY29kZS4gIEEgc3VjY2Vzc2Z1bCBwcmVkaWN0aW9uIHNhdmVzIGEgdHJpcCB0aHJvdWdoIHRoZSBldmFsLWxvb3AKLSAgICBpbmNsdWRpbmcgaXRzIHR3byB1bnByZWRpY3RhYmxlIGJyYW5jaGVzLCB0aGUgSEFTX0FSRyB0ZXN0IGFuZCB0aGUKLSAgICBzd2l0Y2gtY2FzZS4gIENvbWJpbmVkIHdpdGggdGhlIHByb2Nlc3NvcidzIGludGVybmFsIGJyYW5jaCBwcmVkaWN0aW9uLAotICAgIGEgc3VjY2Vzc2Z1bCBQUkVESUNUIGhhcyB0aGUgZWZmZWN0IG9mIG1ha2luZyB0aGUgdHdvIG9wY29kZXMgcnVuIGFzIGlmCi0gICAgdGhleSB3ZXJlIGEgc2luZ2xlIG5ldyBvcGNvZGUgd2l0aCB0aGUgYm9kaWVzIGNvbWJpbmVkLgorICAgIGluY2x1ZGluZyBpdHMgdW5wcmVkaWN0YWJsZSBzd2l0Y2gtY2FzZSBicmFuY2guICBDb21iaW5lZCB3aXRoIHRoZQorICAgIHByb2Nlc3NvcidzIGludGVybmFsIGJyYW5jaCBwcmVkaWN0aW9uLCBhIHN1Y2Nlc3NmdWwgUFJFRElDVCBoYXMgdGhlCisgICAgZWZmZWN0IG9mIG1ha2luZyB0aGUgdHdvIG9wY29kZXMgcnVuIGFzIGlmIHRoZXkgd2VyZSBhIHNpbmdsZSBuZXcgb3Bjb2RlCisgICAgd2l0aCB0aGUgYm9kaWVzIGNvbWJpbmVkLgogCiAgICAgSWYgY29sbGVjdGluZyBvcGNvZGUgc3RhdGlzdGljcywgeW91ciBjaG9pY2VzIGFyZSB0byBlaXRoZXIga2VlcCB0aGUKICAgICBwcmVkaWN0aW9ucyB0dXJuZWQtb24gYW5kIGludGVycHJldCB0aGUgcmVzdWx0cyBhcyBpZiBzb21lIG9wY29kZXMKQEAgLTEwMzAsMTMgKzkwMywxOSBAQAogCiAjaWYgZGVmaW5lZChEWU5BTUlDX0VYRUNVVElPTl9QUk9GSUxFKSB8fCBVU0VfQ09NUFVURURfR09UT1MKICNkZWZpbmUgUFJFRElDVChvcCkgICAgICAgICAgICAgaWYgKDApIGdvdG8gUFJFRF8jI29wCi0jZGVmaW5lIFBSRURJQ1RFRChvcCkgICAgICAgICAgIFBSRURfIyNvcDoKLSNkZWZpbmUgUFJFRElDVEVEX1dJVEhfQVJHKG9wKSAgUFJFRF8jI29wOgogI2Vsc2UKLSNkZWZpbmUgUFJFRElDVChvcCkgICAgICAgICAgICAgaWYgKCpuZXh0X2luc3RyID09IG9wKSBnb3RvIFBSRURfIyNvcAotI2RlZmluZSBQUkVESUNURUQob3ApICAgICAgICAgICBQUkVEXyMjb3A6IG5leHRfaW5zdHIrKwotI2RlZmluZSBQUkVESUNURURfV0lUSF9BUkcob3ApICBQUkVEXyMjb3A6IG9wYXJnID0gUEVFS0FSRygpOyBuZXh0X2luc3RyICs9IDMKKyNkZWZpbmUgUFJFRElDVChvcCkgXAorICAgIGRveyBcCisgICAgICAgIF9QeV9DT0RFVU5JVCB3b3JkID0gKm5leHRfaW5zdHI7IFwKKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERSh3b3JkKTsgXAorICAgICAgICBpZiAob3Bjb2RlID09IG9wKXsgXAorICAgICAgICAgICAgb3BhcmcgPSBfUHlfT1BBUkcod29yZCk7IFwKKyAgICAgICAgICAgIG5leHRfaW5zdHIrKzsgXAorICAgICAgICAgICAgZ290byBQUkVEXyMjb3A7IFwKKyAgICAgICAgfSBcCisgICAgfSB3aGlsZSgwKQogI2VuZGlmCisjZGVmaW5lIFBSRURJQ1RFRChvcCkgICAgICAgICAgIFBSRURfIyNvcDoKIAogCiAvKiBTdGFjayBtYW5pcHVsYXRpb24gbWFjcm9zICovCkBAIC0xMTAwLDcgKzk3OSw3IEBACiAgICAgfQogCiAjZGVmaW5lIFVOV0lORF9FWENFUFRfSEFORExFUihiKSBcCi0gICAgeyBcCisgICAgZG8geyBcCiAgICAgICAgIFB5T2JqZWN0ICp0eXBlLCAqdmFsdWUsICp0cmFjZWJhY2s7IFwKICAgICAgICAgYXNzZXJ0KFNUQUNLX0xFVkVMKCkgPj0gKGIpLT5iX2xldmVsICsgMyk7IFwKICAgICAgICAgd2hpbGUgKFNUQUNLX0xFVkVMKCkgPiAoYiktPmJfbGV2ZWwgKyAzKSB7IFwKQEAgLTExMTYsNyArOTk1LDcgQEAKICAgICAgICAgUHlfWERFQ1JFRih0eXBlKTsgXAogICAgICAgICBQeV9YREVDUkVGKHZhbHVlKTsgXAogICAgICAgICBQeV9YREVDUkVGKHRyYWNlYmFjayk7IFwKLSAgICB9CisgICAgfSB3aGlsZSgwKQogCiAvKiBTdGFydCBvZiBjb2RlICovCiAKQEAgLTExNjAsMjEgKzEwMzksMjQgQEAKICAgICAgICAgfQogICAgIH0KIAorICAgIGlmIChQeURUcmFjZV9GVU5DVElPTl9FTlRSWV9FTkFCTEVEKCkpCisgICAgICAgIGR0cmFjZV9mdW5jdGlvbl9lbnRyeShmKTsKKwogICAgIGNvID0gZi0+Zl9jb2RlOwogICAgIG5hbWVzID0gY28tPmNvX25hbWVzOwogICAgIGNvbnN0cyA9IGNvLT5jb19jb25zdHM7CiAgICAgZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICBmcmVldmFycyA9IGYtPmZfbG9jYWxzcGx1cyArIGNvLT5jb19ubG9jYWxzOwotICAgIGZpcnN0X2luc3RyID0gKHVuc2lnbmVkIGNoYXIqKSBQeUJ5dGVzX0FTX1NUUklORyhjby0+Y29fY29kZSk7Ci0gICAgLyogQW4gZXhwbGFuYXRpb24gaXMgaW4gb3JkZXIgZm9yIHRoZSBuZXh0IGxpbmUuCisgICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2soY28tPmNvX2NvZGUpKTsKKyAgICBhc3NlcnQoUHlCeXRlc19HRVRfU0laRShjby0+Y29fY29kZSkgPD0gSU5UX01BWCk7CisgICAgYXNzZXJ0KFB5Qnl0ZXNfR0VUX1NJWkUoY28tPmNvX2NvZGUpICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgYXNzZXJ0KF9QeV9JU19BTElHTkVEKFB5Qnl0ZXNfQVNfU1RSSU5HKGNvLT5jb19jb2RlKSwgc2l6ZW9mKF9QeV9DT0RFVU5JVCkpKTsKKyAgICBmaXJzdF9pbnN0ciA9IChfUHlfQ09ERVVOSVQgKikgUHlCeXRlc19BU19TVFJJTkcoY28tPmNvX2NvZGUpOworICAgIC8qCisgICAgICAgZi0+Zl9sYXN0aSByZWZlcnMgdG8gdGhlIGluZGV4IG9mIHRoZSBsYXN0IGluc3RydWN0aW9uLAorICAgICAgIHVubGVzcyBpdCdzIC0xIGluIHdoaWNoIGNhc2UgbmV4dF9pbnN0ciBzaG91bGQgYmUgZmlyc3RfaW5zdHIuCiAKLSAgICAgICBmLT5mX2xhc3RpIG5vdyByZWZlcnMgdG8gdGhlIGluZGV4IG9mIHRoZSBsYXN0IGluc3RydWN0aW9uCi0gICAgICAgZXhlY3V0ZWQuICBZb3UgbWlnaHQgdGhpbmsgdGhpcyB3YXMgb2J2aW91cyBmcm9tIHRoZSBuYW1lLCBidXQKLSAgICAgICB0aGlzIHdhc24ndCBhbHdheXMgdHJ1ZSBiZWZvcmUgMi4zISAgUHlGcmFtZV9OZXcgbm93IHNldHMKLSAgICAgICBmLT5mX2xhc3RpIHRvIC0xIChpLmUuIHRoZSBpbmRleCAqYmVmb3JlKiB0aGUgZmlyc3QgaW5zdHJ1Y3Rpb24pCi0gICAgICAgYW5kIFlJRUxEX1ZBTFVFIGRvZXNuJ3QgZmlkZGxlIHdpdGggZl9sYXN0aSBhbnkgbW9yZS4gIFNvIHRoaXMKLSAgICAgICBkb2VzIHdvcmsuICBQcm9taXNlLgotICAgICAgIFlJRUxEX0ZST00gc2V0cyBmX2xhc3RpIHRvIGl0c2VsZiwgaW4gb3JkZXIgdG8gcmVwZWF0ZWQgeWllbGQKKyAgICAgICBZSUVMRF9GUk9NIHNldHMgZl9sYXN0aSB0byBpdHNlbGYsIGluIG9yZGVyIHRvIHJlcGVhdGVkbHkgeWllbGQKICAgICAgICBtdWx0aXBsZSB2YWx1ZXMuCiAKICAgICAgICBXaGVuIHRoZSBQUkVESUNUKCkgbWFjcm9zIGFyZSBlbmFibGVkLCBzb21lIG9wY29kZSBwYWlycyBmb2xsb3cgaW4KQEAgLTExODMsMTUgKzEwNjUsMjAgQEAKICAgICAgICB3ZXJlIGEgc2luZ2xlIG5ldyBvcGNvZGU7IGFjY29yZGluZ2x5LGYtPmZfbGFzdGkgd2lsbCBwb2ludCB0bwogICAgICAgIHRoZSBmaXJzdCBjb2RlIGluIHRoZSBwYWlyIChmb3IgaW5zdGFuY2UsIEdFVF9JVEVSIGZvbGxvd2VkIGJ5CiAgICAgICAgRk9SX0lURVIgaXMgZWZmZWN0aXZlbHkgYSBzaW5nbGUgb3Bjb2RlIGFuZCBmLT5mX2xhc3RpIHdpbGwgcG9pbnQKLSAgICAgICBhdCB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21iaW5lZCBwYWlyLikKKyAgICAgICB0byB0aGUgYmVnaW5uaW5nIG9mIHRoZSBjb21iaW5lZCBwYWlyLikKICAgICAqLwotICAgIG5leHRfaW5zdHIgPSBmaXJzdF9pbnN0ciArIGYtPmZfbGFzdGkgKyAxOworICAgIGFzc2VydChmLT5mX2xhc3RpID49IC0xKTsKKyAgICBuZXh0X2luc3RyID0gZmlyc3RfaW5zdHI7CisgICAgaWYgKGYtPmZfbGFzdGkgPj0gMCkgeworICAgICAgICBhc3NlcnQoZi0+Zl9sYXN0aSAlIHNpemVvZihfUHlfQ09ERVVOSVQpID09IDApOworICAgICAgICBuZXh0X2luc3RyICs9IGYtPmZfbGFzdGkgLyBzaXplb2YoX1B5X0NPREVVTklUKSArIDE7CisgICAgfQogICAgIHN0YWNrX3BvaW50ZXIgPSBmLT5mX3N0YWNrdG9wOwogICAgIGFzc2VydChzdGFja19wb2ludGVyICE9IE5VTEwpOwogICAgIGYtPmZfc3RhY2t0b3AgPSBOVUxMOyAgICAgICAvKiByZW1haW5zIE5VTEwgdW5sZXNzIHlpZWxkIHN1c3BlbmRzIGZyYW1lICovCiAgICAgZi0+Zl9leGVjdXRpbmcgPSAxOwogCi0gICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUpKSB7CisgICAgaWYgKGNvLT5jb19mbGFncyAmIChDT19HRU5FUkFUT1IgfCBDT19DT1JPVVRJTkUgfCBDT19BU1lOQ19HRU5FUkFUT1IpKSB7CiAgICAgICAgIGlmICghdGhyb3dmbGFnICYmIGYtPmZfZXhjX3R5cGUgIT0gTlVMTCAmJiBmLT5mX2V4Y190eXBlICE9IFB5X05vbmUpIHsKICAgICAgICAgICAgIC8qIFdlIHdlcmUgaW4gYW4gZXhjZXB0IGhhbmRsZXIgd2hlbiB3ZSBsZWZ0LAogICAgICAgICAgICAgICAgcmVzdG9yZSB0aGUgZXhjZXB0aW9uIHN0YXRlIHdoaWNoIHdhcyBwdXQgYXNpZGUKQEAgLTEyMTksMjMgKzExMDYsNiBAQAogI2VuZGlmCiAKICAgICBmb3IgKDs7KSB7Ci0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgaWYgKGluc3QxID09IDApIHsKLSAgICAgICAgICAgIC8qIEFsbW9zdCBzdXJlbHksIHRoZSBvcGNvZGUgZXhlY3V0ZWQgYSBicmVhawotICAgICAgICAgICAgICAgb3IgYSBjb250aW51ZSwgcHJldmVudGluZyBpbnN0MSBmcm9tIGJlaW5nIHNldAotICAgICAgICAgICAgICAgb24gdGhlIHdheSBvdXQgb2YgdGhlIGxvb3AuCi0gICAgICAgICAgICAqLwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwotICAgICAgICAgICAgbG9vcDEgPSBpbnN0MTsKLSAgICAgICAgfQotICAgICAgICBkdW1wX3RzYyhvcGNvZGUsIHRpY2tlZCwgaW5zdDAsIGluc3QxLCBsb29wMCwgbG9vcDEsCi0gICAgICAgICAgICAgICAgIGludHIwLCBpbnRyMSk7Ci0gICAgICAgIHRpY2tlZCA9IDA7Ci0gICAgICAgIGluc3QxID0gMDsKLSAgICAgICAgaW50cjAgPSAwOwotICAgICAgICBpbnRyMSA9IDA7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKGxvb3AwKTsKLSNlbmRpZgogICAgICAgICBhc3NlcnQoc3RhY2tfcG9pbnRlciA+PSBmLT5mX3ZhbHVlc3RhY2spOyAvKiBlbHNlIHVuZGVyZmxvdyAqLwogICAgICAgICBhc3NlcnQoU1RBQ0tfTEVWRUwoKSA8PSBjby0+Y29fc3RhY2tzaXplKTsgIC8qIGVsc2Ugb3ZlcmZsb3cgKi8KICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKQEAgLTEyNDksMTQgKzExMTksMTEgQEAKICAgICAgICAgICAgUHlfTWFrZVBlbmRpbmdDYWxscygpIGFib3ZlLiAqLwogCiAgICAgICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmZXZhbF9icmVha2VyKSkgewotICAgICAgICAgICAgaWYgKCpuZXh0X2luc3RyID09IFNFVFVQX0ZJTkFMTFkpIHsKKyAgICAgICAgICAgIGlmIChfUHlfT1BDT0RFKCpuZXh0X2luc3RyKSA9PSBTRVRVUF9GSU5BTExZKSB7CiAgICAgICAgICAgICAgICAgLyogTWFrZSB0aGUgbGFzdCBvcGNvZGUgYmVmb3JlCiAgICAgICAgICAgICAgICAgICAgYSB0cnk6IGZpbmFsbHk6IGJsb2NrIHVuaW50ZXJydXB0aWJsZS4gKi8KICAgICAgICAgICAgICAgICBnb3RvIGZhc3RfbmV4dF9vcGNvZGU7CiAgICAgICAgICAgICB9Ci0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgIHRpY2tlZCA9IDE7Ci0jZW5kaWYKICAgICAgICAgICAgIGlmIChfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmcGVuZGluZ2NhbGxzX3RvX2RvKSkgewogICAgICAgICAgICAgICAgIGlmIChQeV9NYWtlUGVuZGluZ0NhbGxzKCkgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMTI5Niw2ICsxMTYzLDkgQEAKICAgICBmYXN0X25leHRfb3Bjb2RlOgogICAgICAgICBmLT5mX2xhc3RpID0gSU5TVFJfT0ZGU0VUKCk7CiAKKyAgICAgICAgaWYgKFB5RFRyYWNlX0xJTkVfRU5BQkxFRCgpKQorICAgICAgICAgICAgbWF5YmVfZHRyYWNlX2xpbmUoZiwgJmluc3RyX2xiLCAmaW5zdHJfdWIsICZpbnN0cl9wcmV2KTsKKwogICAgICAgICAvKiBsaW5lLWJ5LWxpbmUgdHJhY2luZyBzdXBwb3J0ICovCiAKICAgICAgICAgaWYgKF9QeV9UcmFjaW5nUG9zc2libGUgJiYKQEAgLTEzMjIsMTEgKzExOTIsNyBAQAogCiAgICAgICAgIC8qIEV4dHJhY3Qgb3Bjb2RlIGFuZCBhcmd1bWVudCAqLwogCi0gICAgICAgIG9wY29kZSA9IE5FWFRPUCgpOwotICAgICAgICBvcGFyZyA9IDA7ICAgLyogYWxsb3dzIG9wYXJnIHRvIGJlIHN0b3JlZCBpbiBhIHJlZ2lzdGVyIGJlY2F1c2UKLSAgICAgICAgICAgIGl0IGRvZXNuJ3QgaGF2ZSB0byBiZSByZW1lbWJlcmVkIGFjcm9zcyBhIGZ1bGwgbG9vcCAqLwotICAgICAgICBpZiAoSEFTX0FSRyhvcGNvZGUpKQotICAgICAgICAgICAgb3BhcmcgPSBORVhUQVJHKCk7CisgICAgICAgIE5FWFRPUEFSRygpOwogICAgIGRpc3BhdGNoX29wY29kZToKICNpZmRlZiBEWU5BTUlDX0VYRUNVVElPTl9QUk9GSUxFCiAjaWZkZWYgRFhQQUlSUwpAQCAtMTM1MSw5ICsxMjE3LDYgQEAKICAgICAgICAgfQogI2VuZGlmCiAKLSAgICAgICAgLyogTWFpbiBzd2l0Y2ggb24gb3Bjb2RlICovCi0gICAgICAgIFJFQURfVElNRVNUQU1QKGluc3QwKTsKLQogICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogCiAgICAgICAgIC8qIEJFV0FSRSEKQEAgLTEzNzcsNiArMTI0MCw3IEBACiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgIH0KIAorICAgICAgICBQUkVESUNURUQoTE9BRF9DT05TVCk7CiAgICAgICAgIFRBUkdFVChMT0FEX0NPTlNUKSB7CiAgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWUgPSBHRVRJVEVNKGNvbnN0cywgb3BhcmcpOwogICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKQEAgLTEzODQsNyArMTI0OCw3IEBACiAgICAgICAgICAgICBGQVNUX0RJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoU1RPUkVfRkFTVCk7CisgICAgICAgIFBSRURJQ1RFRChTVE9SRV9GQVNUKTsKICAgICAgICAgVEFSR0VUKFNUT1JFX0ZBU1QpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IFBPUCgpOwogICAgICAgICAgICAgU0VUTE9DQUwob3BhcmcsIHZhbHVlKTsKQEAgLTE4NjMsNiArMTcyNyw2MSBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChTVE9SRV9BTk5PVEFUSU9OKSB7CisgICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgUHlPYmplY3QgKmFubl9kaWN0OworICAgICAgICAgICAgUHlPYmplY3QgKmFubiA9IFBPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgaWYgKGYtPmZfbG9jYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgd2hlbiBzdG9yaW5nIGFubm90YXRpb24iKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgLyogZmlyc3QgdHJ5IHRvIGdldCBfX2Fubm90YXRpb25zX18gZnJvbSBsb2NhbHMuLi4gKi8KKyAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2xvY2FscykpIHsKKyAgICAgICAgICAgICAgICBhbm5fZGljdCA9IF9QeURpY3RfR2V0SXRlbUlkKGYtPmZfbG9jYWxzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJlB5SWRfX19hbm5vdGF0aW9uc19fKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTmFtZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5X0lOQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqYW5uX3N0ciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX19fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICAgICAgaWYgKGFubl9zdHIgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgYW5uX2RpY3QgPSBQeU9iamVjdF9HZXRJdGVtKGYtPmZfbG9jYWxzLCBhbm5fc3RyKTsKKyAgICAgICAgICAgICAgICBpZiAoYW5uX2RpY3QgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19OYW1lRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9fYW5ub3RhdGlvbnNfXyBub3QgZm91bmQiKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiAuLi5pZiBzdWNjZWVkZWQsIF9fYW5ub3RhdGlvbnNfX1tuYW1lXSA9IGFubiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGFubl9kaWN0KSkgeworICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGFubl9kaWN0LCBuYW1lLCBhbm4pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0SXRlbShhbm5fZGljdCwgbmFtZSwgYW5uKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICBQeV9ERUNSRUYoYW5uKTsKKyAgICAgICAgICAgIGlmIChlcnIgIT0gMCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKERFTEVURV9TVUJTQ1IpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzdWIgPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpjb250YWluZXIgPSBTRUNPTkQoKTsKQEAgLTIwMDYsNiArMTkyNSw3IEBACiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIFNFVF9UT1AoYXdhaXRhYmxlKTsKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTIwMTYsNDEgKzE5MzYsNTIgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICphaXRlciA9IFRPUCgpOwogICAgICAgICAgICAgUHlUeXBlT2JqZWN0ICp0eXBlID0gUHlfVFlQRShhaXRlcik7CiAKLSAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKQotICAgICAgICAgICAgICAgIGdldHRlciA9IHR5cGUtPnRwX2FzX2FzeW5jLT5hbV9hbmV4dDsKLQotICAgICAgICAgICAgaWYgKGdldHRlciAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgbmV4dF9pdGVyID0gKCpnZXR0ZXIpKGFpdGVyKTsKLSAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgIGlmIChQeUFzeW5jR2VuX0NoZWNrRXhhY3QoYWl0ZXIpKSB7CisgICAgICAgICAgICAgICAgYXdhaXRhYmxlID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0KGFpdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlcXVpcmVzIGFuIGl0ZXJhdG9yIHdpdGggIgotICAgICAgICAgICAgICAgICAgICAiX19hbmV4dF9fIG1ldGhvZCwgZ290ICUuMTAwcyIsCi0gICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgIGlmICh0eXBlLT50cF9hc19hc3luYyAhPSBOVUxMKXsKKyAgICAgICAgICAgICAgICAgICAgZ2V0dGVyID0gdHlwZS0+dHBfYXNfYXN5bmMtPmFtX2FuZXh0OworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgYXdhaXRhYmxlID0gX1B5Q29yb19HZXRBd2FpdGFibGVJdGVyKG5leHRfaXRlcik7Ci0gICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoCi0gICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKLSAgICAgICAgICAgICAgICAgICAgImZyb20gX19hbmV4dF9fOiAlLjEwMHMiLAotICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKG5leHRfaXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgICAgIGlmIChnZXR0ZXIgIT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBuZXh0X2l0ZXIgPSAoKmdldHRlcikoYWl0ZXIpOworICAgICAgICAgICAgICAgICAgICBpZiAobmV4dF9pdGVyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICInYXN5bmMgZm9yJyByZXF1aXJlcyBhbiBpdGVyYXRvciB3aXRoICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJfX2FuZXh0X18gbWV0aG9kLCBnb3QgJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuZXh0X2l0ZXIpOwotICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBhd2FpdGFibGUgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIobmV4dF9pdGVyKTsKKyAgICAgICAgICAgICAgICBpZiAoYXdhaXRhYmxlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KAorICAgICAgICAgICAgICAgICAgICAgICAgUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIidhc3luYyBmb3InIHJlY2VpdmVkIGFuIGludmFsaWQgb2JqZWN0ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICJmcm9tIF9fYW5leHRfXzogJS4xMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X1RZUEUobmV4dF9pdGVyKS0+dHBfbmFtZSk7CisKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG5leHRfaXRlcik7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBQVVNIKGF3YWl0YWJsZSk7CisgICAgICAgICAgICBQUkVESUNUKExPQURfQ09OU1QpOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFBSRURJQ1RFRChHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgVEFSR0VUKEdFVF9BV0FJVEFCTEUpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyYWJsZSA9IFRPUCgpOwogICAgICAgICAgICAgUHlPYmplY3QgKml0ZXIgPSBfUHlDb3JvX0dldEF3YWl0YWJsZUl0ZXIoaXRlcmFibGUpOwpAQCAtMjA3OCwyMSArMjAwOSwyMiBAQAogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9CiAKKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKFlJRUxEX0ZST00pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqcmVjaWV2ZXIgPSBUT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZWNlaXZlciA9IFRPUCgpOwogICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgIGlmIChQeUdlbl9DaGVja0V4YWN0KHJlY2lldmVyKSB8fCBQeUNvcm9fQ2hlY2tFeGFjdChyZWNpZXZlcikpIHsKLSAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlHZW5fU2VuZCgoUHlHZW5PYmplY3QgKilyZWNpZXZlciwgdik7CisgICAgICAgICAgICBpZiAoUHlHZW5fQ2hlY2tFeGFjdChyZWNlaXZlcikgfHwgUHlDb3JvX0NoZWNrRXhhY3QocmVjZWl2ZXIpKSB7CisgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5R2VuX1NlbmQoKFB5R2VuT2JqZWN0ICopcmVjZWl2ZXIsIHYpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBfUHlfSURFTlRJRklFUihzZW5kKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2lldmVyKS0+dHBfaXRlcm5leHQocmVjaWV2ZXIpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBQeV9UWVBFKHJlY2VpdmVyKS0+dHBfaXRlcm5leHQocmVjZWl2ZXIpOwogICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgcmV0dmFsID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZE9iakFyZ3MocmVjaWV2ZXIsICZQeUlkX3NlbmQsIHYsIE5VTEwpOworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkT2JqQXJncyhyZWNlaXZlciwgJlB5SWRfc2VuZCwgdiwgTlVMTCk7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgICAgICBpZiAocmV0dmFsID09IE5VTEwpIHsKQEAgLTIxMDMsNyArMjAzNSw3IEBACiAgICAgICAgICAgICAgICAgZXJyID0gX1B5R2VuX0ZldGNoU3RvcEl0ZXJhdGlvblZhbHVlKCZ2YWwpOwogICAgICAgICAgICAgICAgIGlmIChlcnIgPCAwKQogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihyZWNpZXZlcik7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJlY2VpdmVyKTsKICAgICAgICAgICAgICAgICBTRVRfVE9QKHZhbCk7CiAgICAgICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgICAgIH0KQEAgLTIxMTEsMTIgKzIwNDMsMjMgQEAKICAgICAgICAgICAgIGYtPmZfc3RhY2t0b3AgPSBzdGFja19wb2ludGVyOwogICAgICAgICAgICAgd2h5ID0gV0hZX1lJRUxEOwogICAgICAgICAgICAgLyogYW5kIHJlcGVhdC4uLiAqLwotICAgICAgICAgICAgZi0+Zl9sYXN0aS0tOworICAgICAgICAgICAgZi0+Zl9sYXN0aSAtPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKICAgICAgICAgfQogCiAgICAgICAgIFRBUkdFVChZSUVMRF9WQUxVRSkgewogICAgICAgICAgICAgcmV0dmFsID0gUE9QKCk7CisKKyAgICAgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19BU1lOQ19HRU5FUkFUT1IpIHsKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqdyA9IF9QeUFzeW5jR2VuVmFsdWVXcmFwcGVyTmV3KHJldHZhbCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHJldHZhbCk7CisgICAgICAgICAgICAgICAgaWYgKHcgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICByZXR2YWwgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICByZXR2YWwgPSB3OworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICBmLT5mX3N0YWNrdG9wID0gc3RhY2tfcG9pbnRlcjsKICAgICAgICAgICAgIHdoeSA9IFdIWV9ZSUVMRDsKICAgICAgICAgICAgIGdvdG8gZmFzdF95aWVsZDsKQEAgLTIxMzMsNiArMjA3Niw3IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKFBPUF9CTE9DSyk7CiAgICAgICAgIFRBUkdFVChQT1BfQkxPQ0spIHsKICAgICAgICAgICAgIFB5VHJ5QmxvY2sgKmIgPSBQeUZyYW1lX0Jsb2NrUG9wKGYpOwogICAgICAgICAgICAgVU5XSU5EX0JMT0NLKGIpOwpAQCAtMjI0OSw3ICsyMTkzLDcgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBQUkVESUNURURfV0lUSF9BUkcoVU5QQUNLX1NFUVVFTkNFKTsKKyAgICAgICAgUFJFRElDVEVEKFVOUEFDS19TRVFVRU5DRSk7CiAgICAgICAgIFRBUkdFVChVTlBBQ0tfU0VRVUVOQ0UpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpzZXEgPSBQT1AoKSwgKml0ZW0sICoqaXRlbXM7CiAgICAgICAgICAgICBpZiAoUHlUdXBsZV9DaGVja0V4YWN0KHNlcSkgJiYKQEAgLTIzNTgsNyArMjMwMiw3IEBACiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBlbHNlIHsKICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwgJiYgX1B5RXJyX09DQ1VSUkVEKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwpAQCAtMjM5OCwyNiArMjM0MiwzMyBAQAogICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqdjsKICAgICAgICAgICAgIGlmIChQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2dsb2JhbHMpCi0gICAgICAgICAgICAgICAgJiYgUHlEaWN0X0NoZWNrRXhhY3QoZi0+Zl9idWlsdGlucykpIHsKKyAgICAgICAgICAgICAgICAmJiBQeURpY3RfQ2hlY2tFeGFjdChmLT5mX2J1aWx0aW5zKSkKKyAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICB2ID0gX1B5RGljdF9Mb2FkR2xvYmFsKChQeURpY3RPYmplY3QgKilmLT5mX2dsb2JhbHMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoUHlEaWN0T2JqZWN0ICopZi0+Zl9idWlsdGlucywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUpOwogICAgICAgICAgICAgICAgIGlmICh2ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFfUHlFcnJfT0NDVVJSRUQoKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgLyogX1B5RGljdF9Mb2FkR2xvYmFsKCkgcmV0dXJucyBOVUxMIHdpdGhvdXQgcmFpc2luZworICAgICAgICAgICAgICAgICAgICAgICAgICogYW4gZXhjZXB0aW9uIGlmIHRoZSBrZXkgZG9lc24ndCBleGlzdCAqLwogICAgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0X2V4Y19jaGVja19hcmcoUHlFeGNfTmFtZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTkFNRV9FUlJPUl9NU0csIG5hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIFB5X0lOQ1JFRih2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIC8qIFNsb3ctcGF0aCBpZiBnbG9iYWxzIG9yIGJ1aWx0aW5zIGlzIG5vdCBhIGRpY3QgKi8KKworICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAxOiBnbG9iYWxzICovCiAgICAgICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0dldEl0ZW0oZi0+Zl9nbG9iYWxzLCBuYW1lKTsKICAgICAgICAgICAgICAgICBpZiAodiA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlFcnJvcikpCiAgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwogCisgICAgICAgICAgICAgICAgICAgIC8qIG5hbWVzcGFjZSAyOiBidWlsdGlucyAqLwogICAgICAgICAgICAgICAgICAgICB2ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2J1aWx0aW5zLCBuYW1lKTsKICAgICAgICAgICAgICAgICAgICAgaWYgKHYgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQpAQCAtMjQ3Nyw3ICsyNDI4LDcgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgICAgIHZhbHVlID0gUHlPYmplY3RfR2V0SXRlbShsb2NhbHMsIG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgICAgICBpZiAoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5RXJyb3IpKQogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKQEAgLTI1MTYsNiArMjQ2NywyNCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChCVUlMRF9TVFJJTkcpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpzdHI7CisgICAgICAgICAgICBQeU9iamVjdCAqZW1wdHkgPSBQeVVuaWNvZGVfTmV3KDAsIDApOworICAgICAgICAgICAgaWYgKGVtcHR5ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgc3RyID0gX1B5VW5pY29kZV9Kb2luQXJyYXkoZW1wdHksIHN0YWNrX3BvaW50ZXIgLSBvcGFyZywgb3BhcmcpOworICAgICAgICAgICAgUHlfREVDUkVGKGVtcHR5KTsKKyAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgd2hpbGUgKC0tb3BhcmcgPj0gMCkgeworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVtID0gUE9QKCk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKGl0ZW0pOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUFVTSChzdHIpOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCiAgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKnR1cCA9IFB5VHVwbGVfTmV3KG9wYXJnKTsKICAgICAgICAgICAgIGlmICh0dXAgPT0gTlVMTCkKQEAgLTI1NDAsMTMgKzI1MDksMTQgQEAKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIAotICAgICAgICBUQVJHRVRfV0lUSF9JTVBMKEJVSUxEX1RVUExFX1VOUEFDSywgX2J1aWxkX2xpc3RfdW5wYWNrKQotICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spCi0gICAgICAgIF9idWlsZF9saXN0X3VucGFjazogewotICAgICAgICAgICAgaW50IGNvbnZlcnRfdG9fdHVwbGUgPSBvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLOwotICAgICAgICAgICAgaW50IGk7CisgICAgICAgIFRBUkdFVChCVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMKQorICAgICAgICBUQVJHRVQoQlVJTERfVFVQTEVfVU5QQUNLKQorICAgICAgICBUQVJHRVQoQlVJTERfTElTVF9VTlBBQ0spIHsKKyAgICAgICAgICAgIGludCBjb252ZXJ0X3RvX3R1cGxlID0gb3Bjb2RlICE9IEJVSUxEX0xJU1RfVU5QQUNLOworICAgICAgICAgICAgUHlfc3NpemVfdCBpOwogICAgICAgICAgICAgUHlPYmplY3QgKnN1bSA9IFB5TGlzdF9OZXcoMCk7CiAgICAgICAgICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlOworCiAgICAgICAgICAgICBpZiAoc3VtID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMjU1NSw2ICsyNTI1LDE2IEBACiAKICAgICAgICAgICAgICAgICBub25lX3ZhbCA9IF9QeUxpc3RfRXh0ZW5kKChQeUxpc3RPYmplY3QgKilzdW0sIFBFRUsoaSkpOwogICAgICAgICAgICAgICAgIGlmIChub25lX3ZhbCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGlmIChvcGNvZGUgPT0gQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19UeXBlRXJyb3IpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoMSArIG9wYXJnKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGFuIGl0ZXJhYmxlLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBFRUsoaSktPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwogICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgICAgIH0KQEAgLTI1OTksNyArMjU3OSw3IEBACiAgICAgICAgIH0KIAogICAgICAgICBUQVJHRVQoQlVJTERfU0VUX1VOUEFDSykgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlTZXRfTmV3KE5VTEwpOwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CkBAIC0yNjE4LDcgKzI1OTgsNyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKEJVSUxEX01BUCkgewotICAgICAgICAgICAgaW50IGk7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CiAgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpCiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKQEAgLTI2NDEsODcgKzI2MjEsMTYyIEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTCwgX2J1aWxkX21hcF91bnBhY2spCi0gICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKQotICAgICAgICBfYnVpbGRfbWFwX3VucGFjazogewotICAgICAgICAgICAgaW50IHdpdGhfY2FsbCA9IG9wY29kZSA9PSBCVUlMRF9NQVBfVU5QQUNLX1dJVEhfQ0FMTDsKLSAgICAgICAgICAgIGludCBudW1fbWFwczsKLSAgICAgICAgICAgIGludCBpOworICAgICAgICBUQVJHRVQoU0VUVVBfQU5OT1RBVElPTlMpIHsKKyAgICAgICAgICAgIF9QeV9JREVOVElGSUVSKF9fYW5ub3RhdGlvbnNfXyk7CisgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgUHlPYmplY3QgKmFubl9kaWN0OworICAgICAgICAgICAgaWYgKGYtPmZfbG9jYWxzID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJubyBsb2NhbHMgZm91bmQgd2hlbiBzZXR0aW5nIHVwIGFubm90YXRpb25zIik7CisgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIC8qIGNoZWNrIGlmIF9fYW5ub3RhdGlvbnNfXyBpbiBsb2NhbHMoKS4uLiAqLworICAgICAgICAgICAgaWYgKFB5RGljdF9DaGVja0V4YWN0KGYtPmZfbG9jYWxzKSkgeworICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gX1B5RGljdF9HZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fZGljdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIC8qIC4uLmlmIG5vdCwgY3JlYXRlIGEgbmV3IG9uZSAqLworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gX1B5RGljdF9TZXRJdGVtSWQoZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICZQeUlkX19fYW5ub3RhdGlvbnNfXywgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBkbyB0aGUgc2FtZSBpZiBsb2NhbHMoKSBpcyBub3QgYSBkaWN0ICovCisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubl9zdHIgPSBfUHlVbmljb2RlX0Zyb21JZCgmUHlJZF9fX2Fubm90YXRpb25zX18pOworICAgICAgICAgICAgICAgIGlmIChhbm5fc3RyID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFubl9kaWN0ID0gUHlPYmplY3RfR2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0cik7CisgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeUVycl9DbGVhcigpOworICAgICAgICAgICAgICAgICAgICBhbm5fZGljdCA9IFB5RGljdF9OZXcoKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGFubl9kaWN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgZXJyID0gUHlPYmplY3RfU2V0SXRlbShmLT5mX2xvY2FscywgYW5uX3N0ciwgYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5uX2RpY3QpOworICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5fZGljdCk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9DT05TVF9LRVlfTUFQKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqbWFwOworICAgICAgICAgICAgUHlPYmplY3QgKmtleXMgPSBUT1AoKTsKKyAgICAgICAgICAgIGlmICghUHlUdXBsZV9DaGVja0V4YWN0KGtleXMpIHx8CisgICAgICAgICAgICAgICAgUHlUdXBsZV9HRVRfU0laRShrZXlzKSAhPSAoUHlfc3NpemVfdClvcGFyZykgeworICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImJhZCBCVUlMRF9DT05TVF9LRVlfTUFQIGtleXMgYXJndW1lbnQiKTsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgbWFwID0gX1B5RGljdF9OZXdQcmVzaXplZCgoUHlfc3NpemVfdClvcGFyZyk7CisgICAgICAgICAgICBpZiAobWFwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKKyAgICAgICAgICAgICAgICBpbnQgZXJyOworICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprZXkgPSBQeVR1cGxlX0dFVF9JVEVNKGtleXMsIG9wYXJnIC0gaSk7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gUEVFSyhpICsgMSk7CisgICAgICAgICAgICAgICAgZXJyID0gUHlEaWN0X1NldEl0ZW0obWFwLCBrZXksIHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKG1hcCk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgd2hpbGUgKG9wYXJnLS0pIHsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYoUE9QKCkpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgUFVTSChtYXApOworICAgICAgICAgICAgRElTUEFUQ0goKTsKKyAgICAgICAgfQorCisgICAgICAgIFRBUkdFVChCVUlMRF9NQVBfVU5QQUNLKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CiAgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlEaWN0X05ldygpOwogICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICBpZiAod2l0aF9jYWxsKSB7Ci0gICAgICAgICAgICAgICAgbnVtX21hcHMgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgICAgICBudW1fbWFwcyA9IG9wYXJnOwotICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmb3IgKGkgPSBudW1fbWFwczsgaSA+IDA7IGktLSkgeworICAgICAgICAgICAgZm9yIChpID0gb3Bhcmc7IGkgPiAwOyBpLS0pIHsKICAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gUEVFSyhpKTsKLSAgICAgICAgICAgICAgICBpZiAod2l0aF9jYWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICppbnRlcnNlY3Rpb24gPSBfUHlEaWN0Vmlld19JbnRlcnNlY3Qoc3VtLCBhcmcpOwotCi0gICAgICAgICAgICAgICAgICAgIGlmIChpbnRlcnNlY3Rpb24gPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpIHx8Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIVB5TWFwcGluZ19DaGVjayhhcmcpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSAoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihzdW0pOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotCi0gICAgICAgICAgICAgICAgICAgIGlmIChQeVNldF9HRVRfU0laRShpbnRlcnNlY3Rpb24pKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IGlkeCA9IDA7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqa2V5OwotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZnVuYyA9IFBFRUsoZnVuY3Rpb25fbG9jYXRpb24gKyBudW1fbWFwcyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9oYXNoX3QgaGFzaDsKLSAgICAgICAgICAgICAgICAgICAgICAgIF9QeVNldF9OZXh0RW50cnkoaW50ZXJzZWN0aW9uLCAmaWR4LCAma2V5LCAmaGFzaCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMga2V5d29yZHMgbXVzdCBiZSBzdHJpbmdzIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGdvdCBtdWx0aXBsZSAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidmFsdWVzIGZvciBrZXl3b3JkIGFyZ3VtZW50ICclVSciLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga2V5KTsKLSAgICAgICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOwotICAgICAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHN1bSk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihpbnRlcnNlY3Rpb24pOwotICAgICAgICAgICAgICAgIH0KLQogICAgICAgICAgICAgICAgIGlmIChQeURpY3RfVXBkYXRlKHN1bSwgYXJnKSA8IDApIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfQXR0cmlidXRlRXJyb3IpKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAod2l0aF9jYWxsKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZ1bmN0aW9uX2xvY2F0aW9uID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQRUVLKGZ1bmN0aW9uX2xvY2F0aW9uICsgbnVtX21hcHMpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJtdXN0IGJlIGEgbWFwcGluZywgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiclLjIwMHMnIG9iamVjdCBpcyBub3QgYSBtYXBwaW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKKyAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKQorICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CisgICAgICAgICAgICBQVVNIKHN1bSk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKKyAgICAgICAgVEFSR0VUKEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMKSB7CisgICAgICAgICAgICBQeV9zc2l6ZV90IGk7CisgICAgICAgICAgICBQeU9iamVjdCAqc3VtID0gUHlEaWN0X05ldygpOworICAgICAgICAgICAgaWYgKHN1bSA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgICAgICAgIGZvciAoaSA9IG9wYXJnOyBpID4gMDsgaS0tKSB7CisgICAgICAgICAgICAgICAgUHlPYmplY3QgKmFyZyA9IFBFRUsoaSk7CisgICAgICAgICAgICAgICAgaWYgKF9QeURpY3RfTWVyZ2VFeChzdW0sIGFyZywgMikgPCAwKSB7CisgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jID0gUEVFSygyICsgb3BhcmcpOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19BdHRyaWJ1dGVFcnJvcikpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMlLjIwMHMgYXJndW1lbnQgYWZ0ZXIgKiogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmV4YywgKnZhbCwgKnRiOworICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRmV0Y2goJmV4YywgJnZhbCwgJnRiKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmICh2YWwgJiYgUHlUdXBsZV9DaGVjayh2YWwpICYmIFB5VHVwbGVfR0VUX1NJWkUodmFsKSA9PSAxKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFB5VHVwbGVfR0VUX0lURU0odmFsLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIVB5VW5pY29kZV9DaGVjayhrZXkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBrZXl3b3JkcyBtdXN0IGJlIHN0cmluZ3MiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYykpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBnb3QgbXVsdGlwbGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGtleXdvcmQgYXJndW1lbnQgJyVVJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jRGVzYyhmdW5jKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrZXkpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGV4Yyk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRih2YWwpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1hERUNSRUYodGIpOwogICAgICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICInJS4yMDBzJyBvYmplY3QgaXMgbm90IGEgbWFwcGluZyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmctPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1Jlc3RvcmUoZXhjLCB2YWwsIHRiKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoc3VtKTsKQEAgLTI3MjksNyArMjc4NCw3IEBACiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICB3aGlsZSAobnVtX21hcHMtLSkKKyAgICAgICAgICAgIHdoaWxlIChvcGFyZy0tKQogICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihQT1AoKSk7CiAgICAgICAgICAgICBQVVNIKHN1bSk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwpAQCAtMjc3OCw0NSArMjgzMywxMyBAQAogICAgICAgICB9CiAKICAgICAgICAgVEFSR0VUKElNUE9SVF9OQU1FKSB7Ci0gICAgICAgICAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpmcm9tLCAqbGV2ZWwsICphcmdzLCAqcmVzOwotICAgICAgICAgICAgaWYgKGZ1bmMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19JbXBvcnRFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIl9faW1wb3J0X18gbm90IGZvdW5kIik7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKLSAgICAgICAgICAgIGZyb20gPSBQT1AoKTsKLSAgICAgICAgICAgIGxldmVsID0gVE9QKCk7Ci0gICAgICAgICAgICBpZiAoUHlMb25nX0FzTG9uZyhsZXZlbCkgIT0gLTEgfHwgUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2dsb2JhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZi0+Zl9sb2NhbHMgPT0gTlVMTCA/Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSA6IGYtPmZfbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyb20sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGV2ZWwpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soNCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmLT5mX2xvY2FscyA9PSBOVUxMID8KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJvbSk7CisgICAgICAgICAgICBQeU9iamVjdCAqZnJvbWxpc3QgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpsZXZlbCA9IFRPUCgpOworICAgICAgICAgICAgUHlPYmplY3QgKnJlczsKKyAgICAgICAgICAgIHJlcyA9IGltcG9ydF9uYW1lKGYsIG5hbWUsIGZyb21saXN0LCBsZXZlbCk7CiAgICAgICAgICAgICBQeV9ERUNSRUYobGV2ZWwpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZyb20pOwotICAgICAgICAgICAgaWYgKGFyZ3MgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICBTVEFDS0FESigtMSk7Ci0gICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIwKTsKLSAgICAgICAgICAgIHJlcyA9IFB5RXZhbF9DYWxsT2JqZWN0KGZ1bmMsIGFyZ3MpOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOwotICAgICAgICAgICAgUHlfREVDUkVGKGFyZ3MpOwotICAgICAgICAgICAgUHlfREVDUkVGKGZ1bmMpOworICAgICAgICAgICAgUHlfREVDUkVGKGZyb21saXN0KTsKICAgICAgICAgICAgIFNFVF9UT1AocmVzKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjgzNSw5ICsyODU4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIm5vIGxvY2FscyBmb3VuZCBkdXJpbmcgJ2ltcG9ydCAqJyIpOwogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7CiAgICAgICAgICAgICBlcnIgPSBpbXBvcnRfYWxsX2Zyb20obG9jYWxzLCBmcm9tKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKICAgICAgICAgICAgIFB5RnJhbWVfTG9jYWxzVG9GYXN0KGYsIDApOwogICAgICAgICAgICAgUHlfREVDUkVGKGZyb20pOwogICAgICAgICAgICAgaWYgKGVyciAhPSAwKQpAQCAtMjg0OSw5ICsyODcwLDcgQEAKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gR0VUSVRFTShuYW1lcywgb3BhcmcpOwogICAgICAgICAgICAgUHlPYmplY3QgKmZyb20gPSBUT1AoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICpyZXM7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7CiAgICAgICAgICAgICByZXMgPSBpbXBvcnRfZnJvbShmcm9tLCBuYW1lKTsKLSAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKGludHIxKTsKICAgICAgICAgICAgIFBVU0gocmVzKTsKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwpAQCAtMjg2Myw3ICsyODgyLDcgQEAKICAgICAgICAgICAgIEZBU1RfRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhQT1BfSlVNUF9JRl9GQUxTRSk7CisgICAgICAgIFBSRURJQ1RFRChQT1BfSlVNUF9JRl9GQUxTRSk7CiAgICAgICAgIFRBUkdFVChQT1BfSlVNUF9JRl9GQUxTRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBQT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7CkBAIC0yODg3LDcgKzI5MDYsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhQT1BfSlVNUF9JRl9UUlVFKTsKKyAgICAgICAgUFJFRElDVEVEKFBPUF9KVU1QX0lGX1RSVUUpOwogICAgICAgICBUQVJHRVQoUE9QX0pVTVBfSUZfVFJVRSkgewogICAgICAgICAgICAgUHlPYmplY3QgKmNvbmQgPSBQT1AoKTsKICAgICAgICAgICAgIGludCBlcnI7CkBAIC0yOTY0LDcgKzI5ODMsNyBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFBSRURJQ1RFRF9XSVRIX0FSRyhKVU1QX0FCU09MVVRFKTsKKyAgICAgICAgUFJFRElDVEVEKEpVTVBfQUJTT0xVVEUpOwogICAgICAgICBUQVJHRVQoSlVNUF9BQlNPTFVURSkgewogICAgICAgICAgICAgSlVNUFRPKG9wYXJnKTsKICNpZiBGQVNUX0xPT1BTCkBAIC0yOTkwLDYgKzMwMDksNyBAQAogICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgUFJFRElDVChGT1JfSVRFUik7CisgICAgICAgICAgICBQUkVESUNUKENBTExfRlVOQ1RJT04pOwogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCkBAIC0zMDE4LDEwICszMDM4LDExIEBACiAgICAgICAgICAgICAgICAgaWYgKGl0ZXIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFBSRURJQ1QoTE9BRF9DT05TVCk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgUFJFRElDVEVEX1dJVEhfQVJHKEZPUl9JVEVSKTsKKyAgICAgICAgUFJFRElDVEVEKEZPUl9JVEVSKTsKICAgICAgICAgVEFSR0VUKEZPUl9JVEVSKSB7CiAgICAgICAgICAgICAvKiBiZWZvcmU6IFtpdGVyXTsgYWZ0ZXI6IFtpdGVyLCBpdGVyKCldICpvciogW10gKi8KICAgICAgICAgICAgIFB5T2JqZWN0ICppdGVyID0gVE9QKCk7CkBAIC0zMDQzLDYgKzMwNjQsNyBAQAogICAgICAgICAgICAgU1RBQ0tBREooLTEpOwogICAgICAgICAgICAgUHlfREVDUkVGKGl0ZXIpOwogICAgICAgICAgICAgSlVNUEJZKG9wYXJnKTsKKyAgICAgICAgICAgIFBSRURJQ1QoUE9QX0JMT0NLKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzA1OSwxMCArMzA4MSw5IEBACiAgICAgICAgICAgICBnb3RvIGZhc3RfYmxvY2tfZW5kOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChTRVRVUF9MT09QLCBfc2V0dXBfZmluYWxseSkKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChTRVRVUF9FWENFUFQsIF9zZXR1cF9maW5hbGx5KQotICAgICAgICBUQVJHRVQoU0VUVVBfRklOQUxMWSkKLSAgICAgICAgX3NldHVwX2ZpbmFsbHk6IHsKKyAgICAgICAgVEFSR0VUKFNFVFVQX0xPT1ApCisgICAgICAgIFRBUkdFVChTRVRVUF9FWENFUFQpCisgICAgICAgIFRBUkdFVChTRVRVUF9GSU5BTExZKSB7CiAgICAgICAgICAgICAvKiBOT1RFOiBJZiB5b3UgYWRkIGFueSBuZXcgYmxvY2stc2V0dXAgb3Bjb2RlcyB0aGF0CiAgICAgICAgICAgICAgICBhcmUgbm90IHRyeS9leGNlcHQvZmluYWxseSBoYW5kbGVycywgeW91IG1heSBuZWVkCiAgICAgICAgICAgICAgICB0byB1cGRhdGUgdGhlIFB5R2VuX05lZWRzRmluYWxpemluZygpIGZ1bmN0aW9uLgpAQCAtMzA5Myw2ICszMTE0LDcgQEAKICAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgUFVTSChyZXMpOworICAgICAgICAgICAgUFJFRElDVChHRVRfQVdBSVRBQkxFKTsKICAgICAgICAgICAgIERJU1BBVENIKCk7CiAgICAgICAgIH0KIApAQCAtMzI0MSwxNzggKzMyNjMsMTM1IEBACiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKKyAgICAgICAgUFJFRElDVEVEKENBTExfRlVOQ1RJT04pOwogICAgICAgICBUQVJHRVQoQ0FMTF9GVU5DVElPTikgewogICAgICAgICAgICAgUHlPYmplY3QgKipzcCwgKnJlczsKICAgICAgICAgICAgIFBDQUxMKFBDQUxMX0FMTCk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0jaWZkZWYgV0lUSF9UU0MKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgJmludHIwLCAmaW50cjEpOwotI2Vsc2UKLSAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZyk7Ci0jZW5kaWYKKyAgICAgICAgICAgIHJlcyA9IGNhbGxfZnVuY3Rpb24oJnNwLCBvcGFyZywgTlVMTCk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7CiAgICAgICAgICAgICBQVVNIKHJlcyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCisgICAgICAgICAgICBpZiAocmVzID09IE5VTEwpIHsKICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCi0gICAgICAgIFRBUkdFVF9XSVRIX0lNUEwoQ0FMTF9GVU5DVElPTl9WQVIsIF9jYWxsX2Z1bmN0aW9uX3Zhcl9rdykKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChDQUxMX0ZVTkNUSU9OX0tXLCBfY2FsbF9mdW5jdGlvbl92YXJfa3cpCi0gICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX1ZBUl9LVykKLSAgICAgICAgX2NhbGxfZnVuY3Rpb25fdmFyX2t3OiB7Ci0gICAgICAgICAgICBpbnQgbmEgPSBvcGFyZyAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICAgICAgICAgIGludCBmbGFncyA9IChvcGNvZGUgLSBDQUxMX0ZVTkNUSU9OKSAmIDM7Ci0gICAgICAgICAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgICAgICAgICAgUHlPYmplY3QgKipwZnVuYywgKmZ1bmMsICoqc3AsICpyZXM7CisgICAgICAgIFRBUkdFVChDQUxMX0ZVTkNUSU9OX0tXKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqKnNwLCAqcmVzLCAqbmFtZXM7CisKKyAgICAgICAgICAgIG5hbWVzID0gUE9QKCk7CisgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KG5hbWVzKSAmJiBQeVR1cGxlX0dFVF9TSVpFKG5hbWVzKSA8PSBvcGFyZyk7CiAgICAgICAgICAgICBQQ0FMTChQQ0FMTF9BTEwpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikKLSAgICAgICAgICAgICAgICBuKys7Ci0gICAgICAgICAgICBpZiAoZmxhZ3MgJiBDQUxMX0ZMQUdfS1cpCi0gICAgICAgICAgICAgICAgbisrOwotICAgICAgICAgICAgcGZ1bmMgPSBzdGFja19wb2ludGVyIC0gbiAtIDE7Ci0gICAgICAgICAgICBmdW5jID0gKnBmdW5jOwotCi0gICAgICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykKLSAgICAgICAgICAgICAgICAmJiBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKSAhPSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKnNlbGYgPSBQeU1ldGhvZF9HRVRfU0VMRihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoc2VsZik7Ci0gICAgICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgUHlfU0VUUkVGKCpwZnVuYywgc2VsZik7Ci0gICAgICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgICAgICAvKiBuKys7ICovCi0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYoZnVuYyk7CiAgICAgICAgICAgICBzcCA9IHN0YWNrX3BvaW50ZXI7Ci0gICAgICAgICAgICBSRUFEX1RJTUVTVEFNUChpbnRyMCk7Ci0gICAgICAgICAgICByZXMgPSBleHRfZG9fY2FsbChmdW5jLCAmc3AsIGZsYWdzLCBuYSwgbmspOwotICAgICAgICAgICAgUkVBRF9USU1FU1RBTVAoaW50cjEpOworICAgICAgICAgICAgcmVzID0gY2FsbF9mdW5jdGlvbigmc3AsIG9wYXJnLCBuYW1lcyk7CiAgICAgICAgICAgICBzdGFja19wb2ludGVyID0gc3A7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0KLSAgICAgICAgICAgIHdoaWxlIChzdGFja19wb2ludGVyID4gcGZ1bmMpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbyA9IFBPUCgpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihvKTsKLSAgICAgICAgICAgIH0KICAgICAgICAgICAgIFBVU0gocmVzKTsKLSAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkKKyAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisKKyAgICAgICAgICAgIGlmIChyZXMgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKLSAgICAgICAgVEFSR0VUX1dJVEhfSU1QTChNQUtFX0NMT1NVUkUsIF9tYWtlX2Z1bmN0aW9uKQotICAgICAgICBUQVJHRVQoTUFLRV9GVU5DVElPTikKLSAgICAgICAgX21ha2VfZnVuY3Rpb246IHsKLSAgICAgICAgICAgIGludCBwb3NkZWZhdWx0cyA9IG9wYXJnICYgMHhmZjsKLSAgICAgICAgICAgIGludCBrd2RlZmF1bHRzID0gKG9wYXJnPj44KSAmIDB4ZmY7Ci0gICAgICAgICAgICBpbnQgbnVtX2Fubm90YXRpb25zID0gKG9wYXJnID4+IDE2KSAmIDB4N2ZmZjsKKyAgICAgICAgVEFSR0VUKENBTExfRlVOQ1RJT05fRVgpIHsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpmdW5jLCAqY2FsbGFyZ3MsICprd2FyZ3MgPSBOVUxMLCAqcmVzdWx0OworICAgICAgICAgICAgUENBTEwoUENBTExfQUxMKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBrd2FyZ3MgPSBQT1AoKTsKKyAgICAgICAgICAgICAgICBpZiAoIVB5RGljdF9DaGVja0V4YWN0KGt3YXJncykpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmQgPSBQeURpY3RfTmV3KCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChkID09IE5VTEwpCisgICAgICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgICAgICBpZiAoUHlEaWN0X1VwZGF0ZShkLCBrd2FyZ3MpICE9IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQorICAgICAgICAgICAgICAgICAgICAgICAgICogZXJyb3IgKHBlcmNvbGF0ZWQgZnJvbSBhbiBhdHRlbXB0CisgICAgICAgICAgICAgICAgICAgICAgICAgKiB0byBnZXQgJ2tleXMnIGF0dHJpYnV0ZSkgaW5zdGVhZCBvZgorICAgICAgICAgICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKKyAgICAgICAgICAgICAgICAgICAgICAgICAqIGlzIG5vdCBhIG1hcHBpbmcuCisgICAgICAgICAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmMgPSBTRUNPTkQoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICoqICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYSBtYXBwaW5nLCBub3QgJS4yMDBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY0Rlc2MoZnVuYyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3YXJncy0+b2JfdHlwZS0+dHBfbmFtZSk7CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoa3dhcmdzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGt3YXJncyk7CisgICAgICAgICAgICAgICAgICAgIGt3YXJncyA9IGQ7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChrd2FyZ3MpKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGNhbGxhcmdzID0gUE9QKCk7CisgICAgICAgICAgICBmdW5jID0gVE9QKCk7CisgICAgICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2tFeGFjdChjYWxsYXJncykpIHsKKyAgICAgICAgICAgICAgICBpZiAoUHlfVFlQRShjYWxsYXJncyktPnRwX2l0ZXIgPT0gTlVMTCAmJgorICAgICAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soY2FsbGFyZ3MpKSB7CisgICAgICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIm11c3QgYmUgYW4gaXRlcmFibGUsIG5vdCAlLjIwMHMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2FsbGFyZ3MtPm9iX3R5cGUtPnRwX25hbWUpOworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeV9TRVRSRUYoY2FsbGFyZ3MsIFB5U2VxdWVuY2VfVHVwbGUoY2FsbGFyZ3MpKTsKKyAgICAgICAgICAgICAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGFzc2VydChQeVR1cGxlX0NoZWNrRXhhY3QoY2FsbGFyZ3MpKTsKIAotICAgICAgICAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gUE9QKCk7IC8qIHF1YWxuYW1lICovCi0gICAgICAgICAgICBQeU9iamVjdCAqY29kZSA9IFBPUCgpOyAvKiBjb2RlIG9iamVjdCAqLwotICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMgPSBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2RlLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihjb2RlKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihxdWFsbmFtZSk7CisgICAgICAgICAgICByZXN1bHQgPSBkb19jYWxsX2NvcmUoZnVuYywgY2FsbGFyZ3MsIGt3YXJncyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgICAgICBQeV9ERUNSRUYoY2FsbGFyZ3MpOworICAgICAgICAgICAgUHlfWERFQ1JFRihrd2FyZ3MpOwogCi0gICAgICAgICAgICBpZiAoZnVuYyA9PSBOVUxMKQorICAgICAgICAgICAgU0VUX1RPUChyZXN1bHQpOworICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIERJU1BBVENIKCk7CisgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBNQUtFX0NMT1NVUkUpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqY2xvc3VyZSA9IFBPUCgpOwotICAgICAgICAgICAgICAgIGlmIChQeUZ1bmN0aW9uX1NldENsb3N1cmUoZnVuYywgY2xvc3VyZSkgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzIGJ5dGVjb2RlIGlzIGNvcnJ1cHQuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGNsb3N1cmUpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoY2xvc3VyZSk7CisgICAgICAgIFRBUkdFVChNQUtFX0ZVTkNUSU9OKSB7CisgICAgICAgICAgICBQeU9iamVjdCAqcXVhbG5hbWUgPSBQT1AoKTsKKyAgICAgICAgICAgIFB5T2JqZWN0ICpjb2Rlb2JqID0gUE9QKCk7CisgICAgICAgICAgICBQeUZ1bmN0aW9uT2JqZWN0ICpmdW5jID0gKFB5RnVuY3Rpb25PYmplY3QgKikKKyAgICAgICAgICAgICAgICBQeUZ1bmN0aW9uX05ld1dpdGhRdWFsTmFtZShjb2Rlb2JqLCBmLT5mX2dsb2JhbHMsIHF1YWxuYW1lKTsKKworICAgICAgICAgICAgUHlfREVDUkVGKGNvZGVvYmopOworICAgICAgICAgICAgUHlfREVDUkVGKHF1YWxuYW1lKTsKKyAgICAgICAgICAgIGlmIChmdW5jID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpZiAobnVtX2Fubm90YXRpb25zID4gMCkgewotICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFtZV9peDsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBQT1AoKTsgLyogbmFtZXMgb2YgYXJncyB3aXRoIGFubm90YXRpb25zICovCi0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmFubnMgPSBQeURpY3RfTmV3KCk7Ci0gICAgICAgICAgICAgICAgaWYgKGFubnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIG5hbWVfaXggPSBQeVR1cGxlX1NpemUobmFtZXMpOwotICAgICAgICAgICAgICAgIGFzc2VydChudW1fYW5ub3RhdGlvbnMgPT0gbmFtZV9peCsxKTsKLSAgICAgICAgICAgICAgICB3aGlsZSAobmFtZV9peCA+IDApIHsKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUsICp2YWx1ZTsKLSAgICAgICAgICAgICAgICAgICAgaW50IGVycjsKLSAgICAgICAgICAgICAgICAgICAgLS1uYW1lX2l4OwotICAgICAgICAgICAgICAgICAgICBuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShuYW1lcywgbmFtZV9peCk7Ci0gICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7Ci0gICAgICAgICAgICAgICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGFubnMsIG5hbWUsIHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICAgICAgaWYgKGVyciAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoYW5ucyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYobmFtZXMpOwotCi0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMoZnVuYywgYW5ucykgIT0gMCkgewotICAgICAgICAgICAgICAgICAgICAvKiBDYW4ndCBoYXBwZW4gdW5sZXNzCi0gICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fU2V0QW5ub3RhdGlvbnMgY2hhbmdlcy4gKi8KLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGFubnMpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhbm5zKTsKKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDgpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYyAtPmZ1bmNfY2xvc3VyZSA9IFBPUCgpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKG9wYXJnICYgMHgwNCkgeworICAgICAgICAgICAgICAgIGFzc2VydChQeURpY3RfQ2hlY2tFeGFjdChUT1AoKSkpOworICAgICAgICAgICAgICAgIGZ1bmMtPmZ1bmNfYW5ub3RhdGlvbnMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDIpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X0NoZWNrRXhhY3QoVE9QKCkpKTsKKyAgICAgICAgICAgICAgICBmdW5jLT5mdW5jX2t3ZGVmYXVsdHMgPSBQT1AoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChvcGFyZyAmIDB4MDEpIHsKKyAgICAgICAgICAgICAgICBhc3NlcnQoUHlUdXBsZV9DaGVja0V4YWN0KFRPUCgpKSk7CisgICAgICAgICAgICAgICAgZnVuYy0+ZnVuY19kZWZhdWx0cyA9IFBPUCgpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAvKiBYWFggTWF5YmUgdGhpcyBzaG91bGQgYmUgYSBzZXBhcmF0ZSBvcGNvZGU/ICovCi0gICAgICAgICAgICBpZiAoa3dkZWZhdWx0cyA+IDApIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqZGVmcyA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgICAgICBpZiAoZGVmcyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgd2hpbGUgKC0ta3dkZWZhdWx0cyA+PSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2ID0gUE9QKCk7IC8qIGRlZmF1bHQgdmFsdWUgKi8KLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmtleSA9IFBPUCgpOyAvKiBrdyBvbmx5IGFyZyBuYW1lICovCi0gICAgICAgICAgICAgICAgICAgIGludCBlcnIgPSBQeURpY3RfU2V0SXRlbShkZWZzLCBrZXksIHYpOwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICAgICAgICAgICAgICBpZiAoZXJyICE9IDApIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihkZWZzKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgaWYgKFB5RnVuY3Rpb25fU2V0S3dEZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXRLd0RlZmF1bHRzIGNoYW5nZXMuICovCi0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAocG9zZGVmYXVsdHMgPiAwKSB7Ci0gICAgICAgICAgICAgICAgUHlPYmplY3QgKmRlZnMgPSBQeVR1cGxlX05ldyhwb3NkZWZhdWx0cyk7Ci0gICAgICAgICAgICAgICAgaWYgKGRlZnMgPT0gTlVMTCkgewotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZnVuYyk7Ci0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIHdoaWxlICgtLXBvc2RlZmF1bHRzID49IDApCi0gICAgICAgICAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oZGVmcywgcG9zZGVmYXVsdHMsIFBPUCgpKTsKLSAgICAgICAgICAgICAgICBpZiAoUHlGdW5jdGlvbl9TZXREZWZhdWx0cyhmdW5jLCBkZWZzKSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIENhbid0IGhhcHBlbiB1bmxlc3MKLSAgICAgICAgICAgICAgICAgICAgICAgUHlGdW5jdGlvbl9TZXREZWZhdWx0cyBjaGFuZ2VzLiAqLwotICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYoZGVmcyk7Ci0gICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKLSAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGRlZnMpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUFVTSChmdW5jKTsKKyAgICAgICAgICAgIFBVU0goKFB5T2JqZWN0ICopZnVuYyk7CiAgICAgICAgICAgICBESVNQQVRDSCgpOwogICAgICAgICB9CiAKQEAgLTM0MzQsOSArMzQxMyw2OCBAQAogICAgICAgICAgICAgRElTUEFUQ0goKTsKICAgICAgICAgfQogCisgICAgICAgIFRBUkdFVChGT1JNQVRfVkFMVUUpIHsKKyAgICAgICAgICAgIC8qIEhhbmRsZXMgZi1zdHJpbmcgdmFsdWUgZm9ybWF0dGluZy4gKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisgICAgICAgICAgICBQeU9iamVjdCAqZm10X3NwZWM7CisgICAgICAgICAgICBQeU9iamVjdCAqdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqKCpjb252X2ZuKShQeU9iamVjdCAqKTsKKyAgICAgICAgICAgIGludCB3aGljaF9jb252ZXJzaW9uID0gb3BhcmcgJiBGVkNfTUFTSzsKKyAgICAgICAgICAgIGludCBoYXZlX2ZtdF9zcGVjID0gKG9wYXJnICYgRlZTX01BU0spID09IEZWU19IQVZFX1NQRUM7CisKKyAgICAgICAgICAgIGZtdF9zcGVjID0gaGF2ZV9mbXRfc3BlYyA/IFBPUCgpIDogTlVMTDsKKyAgICAgICAgICAgIHZhbHVlID0gUE9QKCk7CisKKyAgICAgICAgICAgIC8qIFNlZSBpZiBhbnkgY29udmVyc2lvbiBpcyBzcGVjaWZpZWQuICovCisgICAgICAgICAgICBzd2l0Y2ggKHdoaWNoX2NvbnZlcnNpb24pIHsKKyAgICAgICAgICAgIGNhc2UgRlZDX1NUUjogICBjb252X2ZuID0gUHlPYmplY3RfU3RyOyAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBGVkNfUkVQUjogIGNvbnZfZm4gPSBQeU9iamVjdF9SZXByOyAgYnJlYWs7CisgICAgICAgICAgICBjYXNlIEZWQ19BU0NJSTogY29udl9mbiA9IFB5T2JqZWN0X0FTQ0lJOyBicmVhazsKKworICAgICAgICAgICAgLyogTXVzdCBiZSAwIChtZWFuaW5nIG5vIGNvbnZlcnNpb24pLCBzaW5jZSBvbmx5IGZvdXIKKyAgICAgICAgICAgICAgIHZhbHVlcyBhcmUgYWxsb3dlZCBieSAob3BhcmcgJiBGVkNfTUFTSykuICovCisgICAgICAgICAgICBkZWZhdWx0OiAgICAgICAgY29udl9mbiA9IE5VTEw7ICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGNvbnZlcnNpb24gZnVuY3Rpb24sIGNhbGwgaXQgYW5kIHJlcGxhY2UKKyAgICAgICAgICAgICAgIHZhbHVlIHdpdGggdGhhdCByZXN1bHQuIE90aGVyd2lzZSwganVzdCB1c2UgdmFsdWUsCisgICAgICAgICAgICAgICB3aXRob3V0IGNvbnZlcnNpb24uICovCisgICAgICAgICAgICBpZiAoY29udl9mbiAhPSBOVUxMKSB7CisgICAgICAgICAgICAgICAgcmVzdWx0ID0gY29udl9mbih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKKyAgICAgICAgICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHZhbHVlID0gcmVzdWx0OworICAgICAgICAgICAgfQorCisgICAgICAgICAgICAvKiBJZiB2YWx1ZSBpcyBhIHVuaWNvZGUgb2JqZWN0LCBhbmQgdGhlcmUncyBubyBmbXRfc3BlYywKKyAgICAgICAgICAgICAgIHRoZW4gd2Uga25vdyB0aGUgcmVzdWx0IG9mIGZvcm1hdCh2YWx1ZSkgaXMgdmFsdWUKKyAgICAgICAgICAgICAgIGl0c2VsZi4gSW4gdGhhdCBjYXNlLCBza2lwIGNhbGxpbmcgZm9ybWF0KCkuIEkgcGxhbiB0bworICAgICAgICAgICAgICAgbW92ZSB0aGlzIG9wdGltaXphdGlvbiBpbiB0byBQeU9iamVjdF9Gb3JtYXQoKQorICAgICAgICAgICAgICAgaXRzZWxmLiAqLworICAgICAgICAgICAgaWYgKFB5VW5pY29kZV9DaGVja0V4YWN0KHZhbHVlKSAmJiBmbXRfc3BlYyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogRG8gbm90aGluZywganVzdCB0cmFuc2ZlciBvd25lcnNoaXAgdG8gcmVzdWx0LiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IHZhbHVlOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvKiBBY3R1YWxseSBjYWxsIGZvcm1hdCgpLiAqLworICAgICAgICAgICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0Zvcm1hdCh2YWx1ZSwgZm10X3NwZWMpOworICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7CisgICAgICAgICAgICAgICAgUHlfWERFQ1JFRihmbXRfc3BlYyk7CisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBQVVNIKHJlc3VsdCk7CisgICAgICAgICAgICBESVNQQVRDSCgpOworICAgICAgICB9CisKICAgICAgICAgVEFSR0VUKEVYVEVOREVEX0FSRykgewotICAgICAgICAgICAgb3Bjb2RlID0gTkVYVE9QKCk7Ci0gICAgICAgICAgICBvcGFyZyA9IG9wYXJnPDwxNiB8IE5FWFRBUkcoKTsKKyAgICAgICAgICAgIGludCBvbGRvcGFyZyA9IG9wYXJnOworICAgICAgICAgICAgTkVYVE9QQVJHKCk7CisgICAgICAgICAgICBvcGFyZyB8PSBvbGRvcGFyZyA8PCA4OwogICAgICAgICAgICAgZ290byBkaXNwYXRjaF9vcGNvZGU7CiAgICAgICAgIH0KIApAQCAtMzQ2Myw3ICszNTAxLDYgQEAKICAgICAgICAgYXNzZXJ0KDApOwogCiBlcnJvcjoKLSAgICAgICAgUkVBRF9USU1FU1RBTVAoaW5zdDEpOwogCiAgICAgICAgIGFzc2VydCh3aHkgPT0gV0hZX05PVCk7CiAgICAgICAgIHdoeSA9IFdIWV9FWENFUFRJT047CkBAIC0zNTY3LDcgKzM2MDQsNiBAQAogCiAgICAgICAgIGlmICh3aHkgIT0gV0hZX05PVCkKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSRUFEX1RJTUVTVEFNUChsb29wMSk7CiAKICAgICAgICAgYXNzZXJ0KCFQeUVycl9PY2N1cnJlZCgpKTsKIApAQCAtMzU4Niw3ICszNjIyLDcgQEAKICAgICBhc3NlcnQoKHJldHZhbCAhPSBOVUxMKSBeIChQeUVycl9PY2N1cnJlZCgpICE9IE5VTEwpKTsKIAogZmFzdF95aWVsZDoKLSAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSkpIHsKKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKIAogICAgICAgICAvKiBUaGUgcHVycG9zZSBvZiB0aGlzIGJsb2NrIGlzIHRvIHB1dCBhc2lkZSB0aGUgZ2VuZXJhdG9yJ3MgZXhjZXB0aW9uCiAgICAgICAgICAgIHN0YXRlIGFuZCByZXN0b3JlIHRoYXQgb2YgdGhlIGNhbGxpbmcgZnJhbWUuIElmIHRoZSBjdXJyZW50CkBAIC0zNTk3LDkgKzM2MzMsMTEgQEAKICAgICAgICAgICAgc3RhdGUgY2FtZSBpbnRvIGV4aXN0ZW5jZSBpbiB0aGlzIGZyYW1lLiAoQW4gdW5jYXVnaHQgZXhjZXB0aW9uCiAgICAgICAgICAgIHdvdWxkIGhhdmUgd2h5ID09IFdIWV9FWENFUFRJT04sIGFuZCB3ZSB3b3VsZG4ndCBiZSBoZXJlKS4gKi8KICAgICAgICAgaW50IGk7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKQotICAgICAgICAgICAgaWYgKGYtPmZfYmxvY2tzdGFja1tpXS5iX3R5cGUgPT0gRVhDRVBUX0hBTkRMRVIpCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBmLT5mX2libG9jazsgaSsrKSB7CisgICAgICAgICAgICBpZiAoZi0+Zl9ibG9ja3N0YWNrW2ldLmJfdHlwZSA9PSBFWENFUFRfSEFORExFUikgewogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICAgIGlmIChpID09IGYtPmZfaWJsb2NrKQogICAgICAgICAgICAgLyogV2UgZGlkIG5vdCBjcmVhdGUgdGhpcyBleGNlcHRpb24uICovCiAgICAgICAgICAgICByZXN0b3JlX2FuZF9jbGVhcl9leGNfc3RhdGUodHN0YXRlLCBmKTsKQEAgLTM2NDAsNiArMzY3OCw4IEBACiAKICAgICAvKiBwb3AgZnJhbWUgKi8KIGV4aXRfZXZhbF9mcmFtZToKKyAgICBpZiAoUHlEVHJhY2VfRlVOQ1RJT05fUkVUVVJOX0VOQUJMRUQoKSkKKyAgICAgICAgZHRyYWNlX2Z1bmN0aW9uX3JldHVybihmKTsKICAgICBQeV9MZWF2ZVJlY3Vyc2l2ZUNhbGwoKTsKICAgICBmLT5mX2V4ZWN1dGluZyA9IDA7CiAgICAgdHN0YXRlLT5mcmFtZSA9IGYtPmZfYmFjazsKQEAgLTM3MTAsMTIgKzM3NTAsMTIgQEAKIH0KIAogc3RhdGljIHZvaWQKLW1pc3NpbmdfYXJndW1lbnRzKFB5Q29kZU9iamVjdCAqY28sIGludCBtaXNzaW5nLCBpbnQgZGVmY291bnQsCittaXNzaW5nX2FyZ3VtZW50cyhQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IG1pc3NpbmcsIFB5X3NzaXplX3QgZGVmY291bnQsCiAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMpCiB7Ci0gICAgaW50IGksIGogPSAwOwotICAgIGludCBzdGFydCwgZW5kOwotICAgIGludCBwb3NpdGlvbmFsID0gZGVmY291bnQgIT0gLTE7CisgICAgUHlfc3NpemVfdCBpLCBqID0gMDsKKyAgICBQeV9zc2l6ZV90IHN0YXJ0LCBlbmQ7CisgICAgaW50IHBvc2l0aW9uYWwgPSAoZGVmY291bnQgIT0gLTEpOwogICAgIGNvbnN0IGNoYXIgKmtpbmQgPSBwb3NpdGlvbmFsID8gInBvc2l0aW9uYWwiIDogImtleXdvcmQtb25seSI7CiAgICAgUHlPYmplY3QgKm1pc3NpbmdfbmFtZXM7CiAKQEAgLTM3NDgsMzMgKzM3ODgsMzkgQEAKIH0KIAogc3RhdGljIHZvaWQKLXRvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgaW50IGdpdmVuLCBpbnQgZGVmY291bnQsIFB5T2JqZWN0ICoqZmFzdGxvY2FscykKK3Rvb19tYW55X3Bvc2l0aW9uYWwoUHlDb2RlT2JqZWN0ICpjbywgUHlfc3NpemVfdCBnaXZlbiwgUHlfc3NpemVfdCBkZWZjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzKQogewogICAgIGludCBwbHVyYWw7Ci0gICAgaW50IGt3b25seV9naXZlbiA9IDA7Ci0gICAgaW50IGk7CisgICAgUHlfc3NpemVfdCBrd29ubHlfZ2l2ZW4gPSAwOworICAgIFB5X3NzaXplX3QgaTsKICAgICBQeU9iamVjdCAqc2lnLCAqa3dvbmx5X3NpZzsKKyAgICBQeV9zc2l6ZV90IGNvX2FyZ2NvdW50ID0gY28tPmNvX2FyZ2NvdW50OwogCiAgICAgYXNzZXJ0KChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSA9PSAwKTsKICAgICAvKiBDb3VudCBtaXNzaW5nIGtleXdvcmQtb25seSBhcmdzLiAqLwotICAgIGZvciAoaSA9IGNvLT5jb19hcmdjb3VudDsgaSA8IGNvLT5jb19hcmdjb3VudCArIGNvLT5jb19rd29ubHlhcmdjb3VudDsgaSsrKQotICAgICAgICBpZiAoR0VUTE9DQUwoaSkgIT0gTlVMTCkKKyAgICBmb3IgKGkgPSBjb19hcmdjb3VudDsgaSA8IGNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OyBpKyspIHsKKyAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpIHsKICAgICAgICAgICAgIGt3b25seV9naXZlbisrOworICAgICAgICB9CisgICAgfQogICAgIGlmIChkZWZjb3VudCkgewotICAgICAgICBpbnQgYXRsZWFzdCA9IGNvLT5jb19hcmdjb3VudCAtIGRlZmNvdW50OworICAgICAgICBQeV9zc2l6ZV90IGF0bGVhc3QgPSBjb19hcmdjb3VudCAtIGRlZmNvdW50OwogICAgICAgICBwbHVyYWwgPSAxOwotICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiZnJvbSAlZCB0byAlZCIsIGF0bGVhc3QsIGNvLT5jb19hcmdjb3VudCk7CisgICAgICAgIHNpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KCJmcm9tICV6ZCB0byAlemQiLCBhdGxlYXN0LCBjb19hcmdjb3VudCk7CiAgICAgfQogICAgIGVsc2UgewotICAgICAgICBwbHVyYWwgPSBjby0+Y29fYXJnY291bnQgIT0gMTsKLSAgICAgICAgc2lnID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoIiVkIiwgY28tPmNvX2FyZ2NvdW50KTsKKyAgICAgICAgcGx1cmFsID0gKGNvX2FyZ2NvdW50ICE9IDEpOworICAgICAgICBzaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgiJXpkIiwgY29fYXJnY291bnQpOwogICAgIH0KICAgICBpZiAoc2lnID09IE5VTEwpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoa3dvbmx5X2dpdmVuKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJWQga2V5d29yZC1vbmx5IGFyZ3VtZW50JXMpIjsKLSAgICAgICAga3dvbmx5X3NpZyA9IFB5VW5pY29kZV9Gcm9tRm9ybWF0KGZvcm1hdCwgZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiLCBrd29ubHlfZ2l2ZW4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dvbmx5X2dpdmVuICE9IDEgPyAicyIgOiAiIik7CisgICAgICAgIGNvbnN0IGNoYXIgKmZvcm1hdCA9ICIgcG9zaXRpb25hbCBhcmd1bWVudCVzIChhbmQgJXpkIGtleXdvcmQtb25seSBhcmd1bWVudCVzKSI7CisgICAgICAgIGt3b25seV9zaWcgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdChmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaXZlbiAhPSAxID8gInMiIDogIiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBrd29ubHlfZ2l2ZW4gIT0gMSA/ICJzIiA6ICIiKTsKICAgICAgICAgaWYgKGt3b25seV9zaWcgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlfREVDUkVGKHNpZyk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNzg2LDcgKzM4MzIsNyBAQAogICAgICAgICBhc3NlcnQoa3dvbmx5X3NpZyAhPSBOVUxMKTsKICAgICB9CiAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlZCVVICVzIGdpdmVuIiwKKyAgICAgICAgICAgICAgICAgIiVVKCkgdGFrZXMgJVUgcG9zaXRpb25hbCBhcmd1bWVudCVzIGJ1dCAlemQlVSAlcyBnaXZlbiIsCiAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAogICAgICAgICAgICAgICAgICBzaWcsCiAgICAgICAgICAgICAgICAgIHBsdXJhbCA/ICJzIiA6ICIiLApAQCAtMzgwMywyMCArMzg0OSwyMiBAQAogCiBzdGF0aWMgUHlPYmplY3QgKgogX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKFB5T2JqZWN0ICpfY28sIFB5T2JqZWN0ICpnbG9iYWxzLCBQeU9iamVjdCAqbG9jYWxzLAotICAgICAgICAgICBQeU9iamVjdCAqKmFyZ3MsIGludCBhcmdjb3VudCwgUHlPYmplY3QgKiprd3MsIGludCBrd2NvdW50LAotICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIGludCBkZWZjb3VudCwgUHlPYmplY3QgKmt3ZGVmcywgUHlPYmplY3QgKmNsb3N1cmUsCisgICAgICAgICAgIFB5T2JqZWN0ICoqYXJncywgUHlfc3NpemVfdCBhcmdjb3VudCwKKyAgICAgICAgICAgUHlPYmplY3QgKiprd25hbWVzLCBQeU9iamVjdCAqKmt3YXJncywKKyAgICAgICAgICAgUHlfc3NpemVfdCBrd2NvdW50LCBpbnQga3dzdGVwLAorICAgICAgICAgICBQeU9iamVjdCAqKmRlZnMsIFB5X3NzaXplX3QgZGVmY291bnQsCisgICAgICAgICAgIFB5T2JqZWN0ICprd2RlZnMsIFB5T2JqZWN0ICpjbG9zdXJlLAogICAgICAgICAgICBQeU9iamVjdCAqbmFtZSwgUHlPYmplY3QgKnF1YWxuYW1lKQogewogICAgIFB5Q29kZU9iamVjdCogY28gPSAoUHlDb2RlT2JqZWN0KilfY287CiAgICAgUHlGcmFtZU9iamVjdCAqZjsKICAgICBQeU9iamVjdCAqcmV0dmFsID0gTlVMTDsKICAgICBQeU9iamVjdCAqKmZhc3Rsb2NhbHMsICoqZnJlZXZhcnM7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgUHlPYmplY3QgKngsICp1OwotICAgIGludCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OwotICAgIGludCBpOwotICAgIGludCBuID0gYXJnY291bnQ7Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7CisgICAgY29uc3QgUHlfc3NpemVfdCB0b3RhbF9hcmdzID0gY28tPmNvX2FyZ2NvdW50ICsgY28tPmNvX2t3b25seWFyZ2NvdW50OworICAgIFB5X3NzaXplX3QgaSwgbjsKKyAgICBQeU9iamVjdCAqa3dkaWN0OwogCiAgICAgaWYgKGdsb2JhbHMgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCkBAIC0zODI0LDM2ICszODcyLDUwIEBACiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAorICAgIC8qIENyZWF0ZSB0aGUgZnJhbWUgKi8KKyAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogICAgIGFzc2VydCh0c3RhdGUgIT0gTlVMTCk7Ci0gICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7CiAgICAgZiA9IFB5RnJhbWVfTmV3KHRzdGF0ZSwgY28sIGdsb2JhbHMsIGxvY2Fscyk7Ci0gICAgaWYgKGYgPT0gTlVMTCkKKyAgICBpZiAoZiA9PSBOVUxMKSB7CiAgICAgICAgIHJldHVybiBOVUxMOwotCisgICAgfQogICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CiAgICAgZnJlZXZhcnMgPSBmLT5mX2xvY2Fsc3BsdXMgKyBjby0+Y29fbmxvY2FsczsKIAotICAgIC8qIFBhcnNlIGFyZ3VtZW50cy4gKi8KKyAgICAvKiBDcmVhdGUgYSBkaWN0aW9uYXJ5IGZvciBrZXl3b3JkIHBhcmFtZXRlcnMgKCoqa3dhZ3MpICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUktFWVdPUkRTKSB7CiAgICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICAgICAgaWYgKGt3ZGljdCA9PSBOVUxMKQogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICBpID0gdG90YWxfYXJnczsKLSAgICAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpCisgICAgICAgIGlmIChjby0+Y29fZmxhZ3MgJiBDT19WQVJBUkdTKSB7CiAgICAgICAgICAgICBpKys7CisgICAgICAgIH0KICAgICAgICAgU0VUTE9DQUwoaSwga3dkaWN0KTsKICAgICB9Ci0gICAgaWYgKGFyZ2NvdW50ID4gY28tPmNvX2FyZ2NvdW50KQorICAgIGVsc2UgeworICAgICAgICBrd2RpY3QgPSBOVUxMOworICAgIH0KKworICAgIC8qIENvcHkgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBsb2NhbCB2YXJpYWJsZXMgKi8KKyAgICBpZiAoYXJnY291bnQgPiBjby0+Y29fYXJnY291bnQpIHsKICAgICAgICAgbiA9IGNvLT5jb19hcmdjb3VudDsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIG4gPSBhcmdjb3VudDsKKyAgICB9CiAgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewogICAgICAgICB4ID0gYXJnc1tpXTsKICAgICAgICAgUHlfSU5DUkVGKHgpOwogICAgICAgICBTRVRMT0NBTChpLCB4KTsKICAgICB9CisKKyAgICAvKiBQYWNrIG90aGVyIHBvc2l0aW9uYWwgYXJndW1lbnRzIGludG8gdGhlICphcmdzIGFyZ3VtZW50ICovCiAgICAgaWYgKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpIHsKICAgICAgICAgdSA9IFB5VHVwbGVfTmV3KGFyZ2NvdW50IC0gbik7Ci0gICAgICAgIGlmICh1ID09IE5VTEwpCisgICAgICAgIGlmICh1ID09IE5VTEwpIHsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgfQogICAgICAgICBTRVRMT0NBTCh0b3RhbF9hcmdzLCB1KTsKICAgICAgICAgZm9yIChpID0gbjsgaSA8IGFyZ2NvdW50OyBpKyspIHsKICAgICAgICAgICAgIHggPSBhcmdzW2ldOwpAQCAtMzg2MSw2OSArMzkyMyw4MiBAQAogICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTSh1LCBpLW4sIHgpOwogICAgICAgICB9CiAgICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBrd2NvdW50OyBpKyspIHsKKworICAgIC8qIEhhbmRsZSBrZXl3b3JkIGFyZ3VtZW50cyBwYXNzZWQgYXMgdHdvIHN0cmlkZWQgYXJyYXlzICovCisgICAga3djb3VudCAqPSBrd3N0ZXA7CisgICAgZm9yIChpID0gMDsgaSA8IGt3Y291bnQ7IGkgKz0ga3dzdGVwKSB7CiAgICAgICAgIFB5T2JqZWN0ICoqY29fdmFybmFtZXM7Ci0gICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3dzWzIqaV07Ci0gICAgICAgIFB5T2JqZWN0ICp2YWx1ZSA9IGt3c1syKmkgKyAxXTsKLSAgICAgICAgaW50IGo7CisgICAgICAgIFB5T2JqZWN0ICprZXl3b3JkID0ga3duYW1lc1tpXTsKKyAgICAgICAgUHlPYmplY3QgKnZhbHVlID0ga3dhcmdzW2ldOworICAgICAgICBQeV9zc2l6ZV90IGo7CisKICAgICAgICAgaWYgKGtleXdvcmQgPT0gTlVMTCB8fCAhUHlVbmljb2RlX0NoZWNrKGtleXdvcmQpKSB7CiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGtleXdvcmRzIG11c3QgYmUgc3RyaW5ncyIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgLyogU3BlZWQgaGFjazogZG8gcmF3IHBvaW50ZXIgY29tcGFyZXMuIEFzIG5hbWVzIGFyZQogICAgICAgICAgICBub3JtYWxseSBpbnRlcm5lZCB0aGlzIHNob3VsZCBhbG1vc3QgYWx3YXlzIGhpdC4gKi8KICAgICAgICAgY29fdmFybmFtZXMgPSAoKFB5VHVwbGVPYmplY3QgKikoY28tPmNvX3Zhcm5hbWVzKSktPm9iX2l0ZW07CiAgICAgICAgIGZvciAoaiA9IDA7IGogPCB0b3RhbF9hcmdzOyBqKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpubSA9IGNvX3Zhcm5hbWVzW2pdOwotICAgICAgICAgICAgaWYgKG5tID09IGtleXdvcmQpCisgICAgICAgICAgICBQeU9iamVjdCAqbmFtZSA9IGNvX3Zhcm5hbWVzW2pdOworICAgICAgICAgICAgaWYgKG5hbWUgPT0ga2V5d29yZCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKwogICAgICAgICAvKiBTbG93IGZhbGxiYWNrLCBqdXN0IGluIGNhc2UgKi8KICAgICAgICAgZm9yIChqID0gMDsgaiA8IHRvdGFsX2FyZ3M7IGorKykgewotICAgICAgICAgICAgUHlPYmplY3QgKm5tID0gY29fdmFybmFtZXNbal07Ci0gICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKAotICAgICAgICAgICAgICAgIGtleXdvcmQsIG5tLCBQeV9FUSk7Ci0gICAgICAgICAgICBpZiAoY21wID4gMCkKKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gY29fdmFybmFtZXNbal07CisgICAgICAgICAgICBpbnQgY21wID0gUHlPYmplY3RfUmljaENvbXBhcmVCb29sKCBrZXl3b3JkLCBuYW1lLCBQeV9FUSk7CisgICAgICAgICAgICBpZiAoY21wID4gMCkgewogICAgICAgICAgICAgICAgIGdvdG8ga3dfZm91bmQ7Ci0gICAgICAgICAgICBlbHNlIGlmIChjbXAgPCAwKQorICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSBpZiAoY21wIDwgMCkgewogICAgICAgICAgICAgICAgIGdvdG8gZmFpbDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQorCiAgICAgICAgIGlmIChqID49IHRvdGFsX2FyZ3MgJiYga3dkaWN0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiVVKCkgZ290IGFuIHVuZXhwZWN0ZWQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJyVTJyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgY28tPmNvX25hbWUsIGtleXdvcmQpOwogICAgICAgICAgICAgZ290byBmYWlsOwogICAgICAgICB9CisKICAgICAgICAgaWYgKFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5d29yZCwgdmFsdWUpID09IC0xKSB7CiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIH0KICAgICAgICAgY29udGludWU7CisKICAgICAgIGt3X2ZvdW5kOgogICAgICAgICBpZiAoR0VUTE9DQUwoaikgIT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJVUoKSBnb3QgbXVsdGlwbGUgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJ2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleXdvcmQpOworICAgICAgICAgICAgICAgICAgICAgICAgICIlVSgpIGdvdCBtdWx0aXBsZSB2YWx1ZXMgZm9yIGFyZ3VtZW50ICclUyciLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNvLT5jb19uYW1lLCBrZXl3b3JkKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKICAgICAgICAgfQogICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwogICAgICAgICBTRVRMT0NBTChqLCB2YWx1ZSk7CiAgICAgfQorCisgICAgLyogQ2hlY2sgdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyAqLwogICAgIGlmIChhcmdjb3VudCA+IGNvLT5jb19hcmdjb3VudCAmJiAhKGNvLT5jb19mbGFncyAmIENPX1ZBUkFSR1MpKSB7CiAgICAgICAgIHRvb19tYW55X3Bvc2l0aW9uYWwoY28sIGFyZ2NvdW50LCBkZWZjb3VudCwgZmFzdGxvY2Fscyk7CiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CisKKyAgICAvKiBBZGQgbWlzc2luZyBwb3NpdGlvbmFsIGFyZ3VtZW50cyAoY29weSBkZWZhdWx0IHZhbHVlcyBmcm9tIGRlZnMpICovCiAgICAgaWYgKGFyZ2NvdW50IDwgY28tPmNvX2FyZ2NvdW50KSB7Ci0gICAgICAgIGludCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7Ci0gICAgICAgIGludCBtaXNzaW5nID0gMDsKLSAgICAgICAgZm9yIChpID0gYXJnY291bnQ7IGkgPCBtOyBpKyspCi0gICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkKKyAgICAgICAgUHlfc3NpemVfdCBtID0gY28tPmNvX2FyZ2NvdW50IC0gZGVmY291bnQ7CisgICAgICAgIFB5X3NzaXplX3QgbWlzc2luZyA9IDA7CisgICAgICAgIGZvciAoaSA9IGFyZ2NvdW50OyBpIDwgbTsgaSsrKSB7CisgICAgICAgICAgICBpZiAoR0VUTE9DQUwoaSkgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIG1pc3NpbmcrKzsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAgICBpZiAobWlzc2luZykgewogICAgICAgICAgICAgbWlzc2luZ19hcmd1bWVudHMoY28sIG1pc3NpbmcsIGRlZmNvdW50LCBmYXN0bG9jYWxzKTsKICAgICAgICAgICAgIGdvdG8gZmFpbDsKQEAgLTM5NDAsOCArNDAxNSwxMCBAQAogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQorCisgICAgLyogQWRkIG1pc3Npbmcga2V5d29yZCBhcmd1bWVudHMgKGNvcHkgZGVmYXVsdCB2YWx1ZXMgZnJvbSBrd2RlZnMpICovCiAgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA+IDApIHsKLSAgICAgICAgaW50IG1pc3NpbmcgPSAwOworICAgICAgICBQeV9zc2l6ZV90IG1pc3NpbmcgPSAwOwogICAgICAgICBmb3IgKGkgPSBjby0+Y29fYXJnY291bnQ7IGkgPCB0b3RhbF9hcmdzOyBpKyspIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lOwogICAgICAgICAgICAgaWYgKEdFVExPQ0FMKGkpICE9IE5VTEwpCkBAIC0zOTgyLDEzICs0MDU5LDE2IEBACiAgICAgICAgICAgICBnb3RvIGZhaWw7CiAgICAgICAgIFNFVExPQ0FMKGNvLT5jb19ubG9jYWxzICsgaSwgYyk7CiAgICAgfQorCisgICAgLyogQ29weSBjbG9zdXJlIHZhcmlhYmxlcyB0byBmcmVlIHZhcmlhYmxlcyAqLwogICAgIGZvciAoaSA9IDA7IGkgPCBQeVR1cGxlX0dFVF9TSVpFKGNvLT5jb19mcmVldmFycyk7ICsraSkgewogICAgICAgICBQeU9iamVjdCAqbyA9IFB5VHVwbGVfR0VUX0lURU0oY2xvc3VyZSwgaSk7CiAgICAgICAgIFB5X0lOQ1JFRihvKTsKICAgICAgICAgZnJlZXZhcnNbUHlUdXBsZV9HRVRfU0laRShjby0+Y29fY2VsbHZhcnMpICsgaV0gPSBvOwogICAgIH0KIAotICAgIGlmIChjby0+Y29fZmxhZ3MgJiAoQ09fR0VORVJBVE9SIHwgQ09fQ09ST1VUSU5FKSkgeworICAgIC8qIEhhbmRsZSBnZW5lcmF0b3IvY29yb3V0aW5lL2FzeW5jaHJvbm91cyBnZW5lcmF0b3IgKi8KKyAgICBpZiAoY28tPmNvX2ZsYWdzICYgKENPX0dFTkVSQVRPUiB8IENPX0NPUk9VVElORSB8IENPX0FTWU5DX0dFTkVSQVRPUikpIHsKICAgICAgICAgUHlPYmplY3QgKmdlbjsKICAgICAgICAgUHlPYmplY3QgKmNvcm9fd3JhcHBlciA9IHRzdGF0ZS0+Y29yb3V0aW5lX3dyYXBwZXI7CiAgICAgICAgIGludCBpc19jb3JvID0gY28tPmNvX2ZsYWdzICYgQ09fQ09ST1VUSU5FOwpAQCAtNDAxMyw2ICs0MDkzLDggQEAKICAgICAgICAgICogYW5kIHJldHVybiB0aGF0IGFzIHRoZSB2YWx1ZS4gKi8KICAgICAgICAgaWYgKGlzX2Nvcm8pIHsKICAgICAgICAgICAgIGdlbiA9IFB5Q29yb19OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOworICAgICAgICB9IGVsc2UgaWYgKGNvLT5jb19mbGFncyAmIENPX0FTWU5DX0dFTkVSQVRPUikgeworICAgICAgICAgICAgZ2VuID0gUHlBc3luY0dlbl9OZXcoZiwgbmFtZSwgcXVhbG5hbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZ2VuID0gUHlHZW5fTmV3V2l0aFF1YWxOYW1lKGYsIG5hbWUsIHF1YWxuYW1lKTsKICAgICAgICAgfQpAQCAtNDA1Miw4ICs0MTM0LDEwIEBACiAgICAgICAgICAgIFB5T2JqZWN0ICoqZGVmcywgaW50IGRlZmNvdW50LCBQeU9iamVjdCAqa3dkZWZzLCBQeU9iamVjdCAqY2xvc3VyZSkKIHsKICAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKF9jbywgZ2xvYmFscywgbG9jYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgYXJnY291bnQsIGt3cywga3djb3VudCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LCBrd2RlZnMsIGNsb3N1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLCBhcmdjb3VudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGt3cywga3dzICsgMSwga3djb3VudCwgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZnMsIGRlZmNvdW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkZWZzLCBjbG9zdXJlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCwgTlVMTCk7CiB9CiAKQEAgLTQzMTIsNyArNDM5Niw3IEBACiAKICNpZmRlZiBMTFRSQUNFCiBzdGF0aWMgaW50Ci1wcnRyYWNlKFB5T2JqZWN0ICp2LCBjaGFyICpzdHIpCitwcnRyYWNlKFB5T2JqZWN0ICp2LCBjb25zdCBjaGFyICpzdHIpCiB7CiAgICAgcHJpbnRmKCIlcyAiLCBzdHIpOwogICAgIGlmIChQeU9iamVjdF9QcmludCh2LCBzdGRvdXQsIDApICE9IDApCkBAIC00NDg5LDYgKzQ1NzMsMzggQEAKICAgICByZXR1cm4gdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcjsKIH0KIAordm9pZAorX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihQeU9iamVjdCAqZmlyc3RpdGVyKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisKKyAgICBQeV9YSU5DUkVGKGZpcnN0aXRlcik7CisgICAgUHlfWFNFVFJFRih0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXIsIGZpcnN0aXRlcik7Cit9CisKK1B5T2JqZWN0ICoKK19QeUV2YWxfR2V0QXN5bmNHZW5GaXJzdGl0ZXIodm9pZCkKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworICAgIHJldHVybiB0c3RhdGUtPmFzeW5jX2dlbl9maXJzdGl0ZXI7Cit9CisKK3ZvaWQKK19QeUV2YWxfU2V0QXN5bmNHZW5GaW5hbGl6ZXIoUHlPYmplY3QgKmZpbmFsaXplcikKK3sKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOworCisgICAgUHlfWElOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5X1hTRVRSRUYodHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyLCBmaW5hbGl6ZXIpOworfQorCitQeU9iamVjdCAqCitfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKHZvaWQpCit7CisgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKKyAgICByZXR1cm4gdHN0YXRlLT5hc3luY19nZW5fZmluYWxpemVyOworfQorCiBQeU9iamVjdCAqCiBQeUV2YWxfR2V0QnVpbHRpbnModm9pZCkKIHsKQEAgLTQ1NjEsMTAgKzQ2NzcsOCBAQAogICAgVGhlIGFyZyBtdXN0IGJlIGEgdHVwbGUgb3IgTlVMTC4gIFRoZSBrdyBtdXN0IGJlIGEgZGljdCBvciBOVUxMLiAqLwogCiBQeU9iamVjdCAqCi1QeUV2YWxfQ2FsbE9iamVjdFdpdGhLZXl3b3JkcyhQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKmFyZywgUHlPYmplY3QgKmt3KQorUHlFdmFsX0NhbGxPYmplY3RXaXRoS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3dhcmdzKQogewotICAgIFB5T2JqZWN0ICpyZXN1bHQ7Ci0KICNpZmRlZiBQeV9ERUJVRwogICAgIC8qIFB5RXZhbF9DYWxsT2JqZWN0V2l0aEtleXdvcmRzKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uCiAgICAgICAgc2V0LiBJdCByYWlzZXMgYSBuZXcgZXhjZXB0aW9uIGlmIHBhcmFtZXRlcnMgYXJlIGludmFsaWQgb3IgaWYKQEAgLTQ1NzIsMzAgKzQ2ODYsMjMgQEAKICAgICBhc3NlcnQoIVB5RXJyX09jY3VycmVkKCkpOwogI2VuZGlmCiAKLSAgICBpZiAoYXJnID09IE5VTEwpIHsKLSAgICAgICAgYXJnID0gUHlUdXBsZV9OZXcoMCk7Ci0gICAgICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgIGlmIChhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZnVuYywgTlVMTCwgMCwga3dhcmdzKTsKICAgICB9Ci0gICAgZWxzZSBpZiAoIVB5VHVwbGVfQ2hlY2soYXJnKSkgeworCisgICAgaWYgKCFQeVR1cGxlX0NoZWNrKGFyZ3MpKSB7CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJndW1lbnQgbGlzdCBtdXN0IGJlIGEgdHVwbGUiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQotICAgIGVsc2UKLSAgICAgICAgUHlfSU5DUkVGKGFyZyk7CiAKLSAgICBpZiAoa3cgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3KSkgeworICAgIGlmIChrd2FyZ3MgIT0gTlVMTCAmJiAhUHlEaWN0X0NoZWNrKGt3YXJncykpIHsKICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKICAgICAgICAgICAgICAgICAgICAgICAgICJrZXl3b3JkIGxpc3QgbXVzdCBiZSBhIGRpY3Rpb25hcnkiKTsKLSAgICAgICAgUHlfREVDUkVGKGFyZyk7CiAgICAgICAgIHJldHVybiBOVUxMOwogICAgIH0KIAotICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgYXJnLCBrdyk7Ci0gICAgUHlfREVDUkVGKGFyZyk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OworICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGFyZ3MsIGt3YXJncyk7CiB9CiAKIGNvbnN0IGNoYXIgKgpAQCAtNDYyNCwyMSArNDczMSw2IEBACiAgICAgICAgIHJldHVybiAiIG9iamVjdCI7CiB9CiAKLXN0YXRpYyB2b2lkCi1lcnJfYXJncyhQeU9iamVjdCAqZnVuYywgaW50IGZsYWdzLCBpbnQgbmFyZ3MpCi17Ci0gICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MpCi0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAiJS4yMDBzKCkgdGFrZXMgbm8gYXJndW1lbnRzICglZCBnaXZlbikiLAotICAgICAgICAgICAgICAgICAgICAgKChQeUNGdW5jdGlvbk9iamVjdCAqKWZ1bmMpLT5tX21sLT5tbF9uYW1lLAotICAgICAgICAgICAgICAgICAgICAgbmFyZ3MpOwotICAgIGVsc2UKLSAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICIlLjIwMHMoKSB0YWtlcyBleGFjdGx5IG9uZSBhcmd1bWVudCAoJWQgZ2l2ZW4pIiwKLSAgICAgICAgICAgICAgICAgICAgICgoUHlDRnVuY3Rpb25PYmplY3QgKilmdW5jKS0+bV9tbC0+bWxfbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgIG5hcmdzKTsKLX0KLQogI2RlZmluZSBDX1RSQUNFKHgsIGNhbGwpIFwKIGlmICh0c3RhdGUtPnVzZV90cmFjaW5nICYmIHRzdGF0ZS0+Y19wcm9maWxlZnVuYykgeyBcCiAgICAgaWYgKGNhbGxfdHJhY2UodHN0YXRlLT5jX3Byb2ZpbGVmdW5jLCB0c3RhdGUtPmNfcHJvZmlsZW9iaiwgXApAQCAtNDY3MSw2MCArNDc2MywyNSBAQAogICAgIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLWNhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBvcGFyZwotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgICAgICAgICAgLCB1aW50NjQqIHBpbnRyMCwgdWludDY0KiBwaW50cjEKLSNlbmRpZgotICAgICAgICAgICAgICAgICkKK2NhbGxfZnVuY3Rpb24oUHlPYmplY3QgKioqcHBfc3RhY2ssIFB5X3NzaXplX3Qgb3BhcmcsIFB5T2JqZWN0ICprd25hbWVzKQogewotICAgIGludCBuYSA9IG9wYXJnICYgMHhmZjsKLSAgICBpbnQgbmsgPSAob3Bhcmc+PjgpICYgMHhmZjsKLSAgICBpbnQgbiA9IG5hICsgMiAqIG5rOwotICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG4gLSAxOworICAgIFB5T2JqZWN0ICoqcGZ1bmMgPSAoKnBwX3N0YWNrKSAtIG9wYXJnIC0gMTsKICAgICBQeU9iamVjdCAqZnVuYyA9ICpwZnVuYzsKICAgICBQeU9iamVjdCAqeCwgKnc7CisgICAgUHlfc3NpemVfdCBua3dhcmdzID0gKGt3bmFtZXMgPT0gTlVMTCkgPyAwIDogUHlUdXBsZV9HRVRfU0laRShrd25hbWVzKTsKKyAgICBQeV9zc2l6ZV90IG5hcmdzID0gb3BhcmcgLSBua3dhcmdzOworICAgIFB5T2JqZWN0ICoqc3RhY2s7CiAKICAgICAvKiBBbHdheXMgZGlzcGF0Y2ggUHlDRnVuY3Rpb24gZmlyc3QsIGJlY2F1c2UgdGhlc2UgYXJlCiAgICAgICAgcHJlc3VtZWQgdG8gYmUgdGhlIG1vc3QgZnJlcXVlbnQgY2FsbGFibGUgb2JqZWN0LgogICAgICovCi0gICAgaWYgKFB5Q0Z1bmN0aW9uX0NoZWNrKGZ1bmMpICYmIG5rID09IDApIHsKLSAgICAgICAgaW50IGZsYWdzID0gUHlDRnVuY3Rpb25fR0VUX0ZMQUdTKGZ1bmMpOworICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewogICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwogCiAgICAgICAgIFBDQUxMKFBDQUxMX0NGVU5DVElPTik7Ci0gICAgICAgIGlmIChmbGFncyAmIChNRVRIX05PQVJHUyB8IE1FVEhfTykpIHsKLSAgICAgICAgICAgIFB5Q0Z1bmN0aW9uIG1ldGggPSBQeUNGdW5jdGlvbl9HRVRfRlVOQ1RJT04oZnVuYyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqc2VsZiA9IFB5Q0Z1bmN0aW9uX0dFVF9TRUxGKGZ1bmMpOwotICAgICAgICAgICAgaWYgKGZsYWdzICYgTUVUSF9OT0FSR1MgJiYgbmEgPT0gMCkgewotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLE5VTEwpKTsKIAotICAgICAgICAgICAgICAgIHggPSBfUHlfQ2hlY2tGdW5jdGlvblJlc3VsdChmdW5jLCB4LCBOVUxMKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgaWYgKGZsYWdzICYgTUVUSF9PICYmIG5hID09IDEpIHsKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgKCptZXRoKShzZWxmLGFyZykpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihhcmcpOwotCi0gICAgICAgICAgICAgICAgeCA9IF9QeV9DaGVja0Z1bmN0aW9uUmVzdWx0KGZ1bmMsIHgsIE5VTEwpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgZXJyX2FyZ3MoZnVuYywgZmxhZ3MsIG5hKTsKLSAgICAgICAgICAgICAgICB4ID0gTlVMTDsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpjYWxsYXJnczsKLSAgICAgICAgICAgIGNhbGxhcmdzID0gbG9hZF9hcmdzKHBwX3N0YWNrLCBuYSk7Ci0gICAgICAgICAgICBpZiAoY2FsbGFyZ3MgIT0gTlVMTCkgewotICAgICAgICAgICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjApOwotICAgICAgICAgICAgICAgIENfVFJBQ0UoeCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLGNhbGxhcmdzLE5VTEwpKTsKLSAgICAgICAgICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIxKTsKLSAgICAgICAgICAgICAgICBQeV9YREVDUkVGKGNhbGxhcmdzKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHggPSBOVUxMOwotICAgICAgICAgICAgfQotICAgICAgICB9CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisgICAgICAgIENfVFJBQ0UoeCwgX1B5Q0Z1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKSk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykgJiYgUHlNZXRob2RfR0VUX1NFTEYoZnVuYykgIT0gTlVMTCkgewpAQCAtNDczNiwyMSArNDc5MywyNiBAQAogICAgICAgICAgICAgZnVuYyA9IFB5TWV0aG9kX0dFVF9GVU5DVElPTihmdW5jKTsKICAgICAgICAgICAgIFB5X0lOQ1JFRihmdW5jKTsKICAgICAgICAgICAgIFB5X1NFVFJFRigqcGZ1bmMsIHNlbGYpOwotICAgICAgICAgICAgbmErKzsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBuYXJncysrOworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfSU5DUkVGKGZ1bmMpOwotICAgICAgICBSRUFEX1RJTUVTVEFNUCgqcGludHIwKTsKLSAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpCi0gICAgICAgICAgICB4ID0gZmFzdF9mdW5jdGlvbihmdW5jLCBwcF9zdGFjaywgbiwgbmEsIG5rKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgeCA9IGRvX2NhbGwoZnVuYywgcHBfc3RhY2ssIG5hLCBuayk7Ci0gICAgICAgIFJFQURfVElNRVNUQU1QKCpwaW50cjEpOwotICAgICAgICBQeV9ERUNSRUYoZnVuYyk7CisgICAgICAgIH0KIAotICAgICAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisgICAgICAgIHN0YWNrID0gKCpwcF9zdGFjaykgLSBuYXJncyAtIG5rd2FyZ3M7CisKKyAgICAgICAgaWYgKFB5RnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgICAgIHggPSBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB4ID0gX1B5T2JqZWN0X0Zhc3RDYWxsS2V5d29yZHMoZnVuYywgc3RhY2ssIG5hcmdzLCBrd25hbWVzKTsKKyAgICAgICAgfQorCisgICAgICAgIFB5X0RFQ1JFRihmdW5jKTsKICAgICB9CiAKKyAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CisKICAgICAvKiBDbGVhciB0aGUgc3RhY2sgb2YgdGhlIGZ1bmN0aW9uIG9iamVjdC4gIEFsc28gcmVtb3ZlcwogICAgICAgIHRoZSBhcmd1bWVudHMgaW4gY2FzZSB0aGV5IHdlcmVuJ3QgY29uc3VtZWQgYWxyZWFkeQogICAgICAgIChmYXN0X2Z1bmN0aW9uKCkgYW5kIGVycl9hcmdzKCkgbGVhdmUgdGhlbSBvbiB0aGUgc3RhY2spLgpAQCAtNDc2MSw3ICs0ODIzLDYgQEAKICAgICAgICAgUENBTEwoUENBTExfUE9QKTsKICAgICB9CiAKLSAgICBhc3NlcnQoKHggIT0gTlVMTCkgXiAoUHlFcnJfT2NjdXJyZWQoKSAhPSBOVUxMKSk7CiAgICAgcmV0dXJuIHg7CiB9CiAKQEAgLTQ3NzQsMTU5ICs0ODM1LDE5NyBAQAogICAgZG9uZSBiZWZvcmUgZXZhbHVhdGluZyB0aGUgZnJhbWUuCiAqLwogCitzdGF0aWMgUHlPYmplY3QqCitfUHlGdW5jdGlvbl9GYXN0Q2FsbChQeUNvZGVPYmplY3QgKmNvLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqZ2xvYmFscykKK3sKKyAgICBQeUZyYW1lT2JqZWN0ICpmOworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7CisgICAgUHlPYmplY3QgKipmYXN0bG9jYWxzOworICAgIFB5X3NzaXplX3QgaTsKKyAgICBQeU9iamVjdCAqcmVzdWx0OworCisgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKKyAgICBhc3NlcnQoZ2xvYmFscyAhPSBOVUxMKTsKKyAgICAvKiBYWFggUGVyaGFwcyB3ZSBzaG91bGQgY3JlYXRlIGEgc3BlY2lhbGl6ZWQKKyAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKKyAgICAgICB0YWtlIGJ1aWx0aW5zIHdpdGhvdXQgc2FuaXR5IGNoZWNraW5nIHRoZW0uCisgICAgICAgKi8KKyAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOworICAgIGYgPSBQeUZyYW1lX05ldyh0c3RhdGUsIGNvLCBnbG9iYWxzLCBOVUxMKTsKKyAgICBpZiAoZiA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGZhc3Rsb2NhbHMgPSBmLT5mX2xvY2Fsc3BsdXM7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbmFyZ3M7IGkrKykgeworICAgICAgICBQeV9JTkNSRUYoKmFyZ3MpOworICAgICAgICBmYXN0bG9jYWxzW2ldID0gKmFyZ3MrKzsKKyAgICB9CisgICAgcmVzdWx0ID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7CisKKyAgICArK3RzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworICAgIFB5X0RFQ1JFRihmKTsKKyAgICAtLXRzdGF0ZS0+cmVjdXJzaW9uX2RlcHRoOworCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKwogc3RhdGljIFB5T2JqZWN0ICoKLWZhc3RfZnVuY3Rpb24oUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqKnBwX3N0YWNrLCBpbnQgbiwgaW50IG5hLCBpbnQgbmspCitmYXN0X2Z1bmN0aW9uKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKnN0YWNrLAorICAgICAgICAgICAgICBQeV9zc2l6ZV90IG5hcmdzLCBQeU9iamVjdCAqa3duYW1lcykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvID0gKFB5Q29kZU9iamVjdCAqKVB5RnVuY3Rpb25fR0VUX0NPREUoZnVuYyk7CiAgICAgUHlPYmplY3QgKmdsb2JhbHMgPSBQeUZ1bmN0aW9uX0dFVF9HTE9CQUxTKGZ1bmMpOwogICAgIFB5T2JqZWN0ICphcmdkZWZzID0gUHlGdW5jdGlvbl9HRVRfREVGQVVMVFMoZnVuYyk7Ci0gICAgUHlPYmplY3QgKmt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOwotICAgIFB5T2JqZWN0ICpuYW1lID0gKChQeUZ1bmN0aW9uT2JqZWN0ICopZnVuYykgLT4gZnVuY19uYW1lOwotICAgIFB5T2JqZWN0ICpxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7Ci0gICAgUHlPYmplY3QgKipkID0gTlVMTDsKLSAgICBpbnQgbmQgPSAwOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICoqZDsKKyAgICBQeV9zc2l6ZV90IG5rd2FyZ3MgPSAoa3duYW1lcyA9PSBOVUxMKSA/IDAgOiBQeVR1cGxlX0dFVF9TSVpFKGt3bmFtZXMpOworICAgIFB5X3NzaXplX3QgbmQ7CisKKyAgICBhc3NlcnQoUHlGdW5jdGlvbl9DaGVjayhmdW5jKSk7CisgICAgYXNzZXJ0KG5hcmdzID49IDApOworICAgIGFzc2VydChrd25hbWVzID09IE5VTEwgfHwgUHlUdXBsZV9DaGVja0V4YWN0KGt3bmFtZXMpKTsKKyAgICBhc3NlcnQoKG5hcmdzID09IDAgJiYgbmt3YXJncyA9PSAwKSB8fCBzdGFjayAhPSBOVUxMKTsKKyAgICAvKiBrd25hbWVzIG11c3Qgb25seSBjb250YWlucyBzdHIgc3RyaW5ncywgbm8gc3ViY2xhc3MsIGFuZCBhbGwga2V5cyBtdXN0CisgICAgICAgYmUgdW5pcXVlICovCiAKICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7CiAgICAgUENBTEwoUENBTExfRkFTVF9GVU5DVElPTik7Ci0gICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbiAmJgotICAgICAgICBjby0+Y29fa3dvbmx5YXJnY291bnQgPT0gMCAmJiBuaz09MCAmJgotICAgICAgICBjby0+Y29fZmxhZ3MgPT0gKENPX09QVElNSVpFRCB8IENPX05FV0xPQ0FMUyB8IENPX05PRlJFRSkpIHsKLSAgICAgICAgUHlGcmFtZU9iamVjdCAqZjsKLSAgICAgICAgUHlPYmplY3QgKnJldHZhbCA9IE5VTEw7Ci0gICAgICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR0VUKCk7Ci0gICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscywgKipzdGFjazsKLSAgICAgICAgaW50IGk7CiAKLSAgICAgICAgUENBTEwoUENBTExfRkFTVEVSX0ZVTkNUSU9OKTsKLSAgICAgICAgYXNzZXJ0KGdsb2JhbHMgIT0gTlVMTCk7Ci0gICAgICAgIC8qIFhYWCBQZXJoYXBzIHdlIHNob3VsZCBjcmVhdGUgYSBzcGVjaWFsaXplZAotICAgICAgICAgICBQeUZyYW1lX05ldygpIHRoYXQgZG9lc24ndCB0YWtlIGxvY2FscywgYnV0IGRvZXMKLSAgICAgICAgICAgdGFrZSBidWlsdGlucyB3aXRob3V0IHNhbml0eSBjaGVja2luZyB0aGVtLgotICAgICAgICAqLwotICAgICAgICBhc3NlcnQodHN0YXRlICE9IE5VTEwpOwotICAgICAgICBmID0gUHlGcmFtZV9OZXcodHN0YXRlLCBjbywgZ2xvYmFscywgTlVMTCk7Ci0gICAgICAgIGlmIChmID09IE5VTEwpCi0gICAgICAgICAgICByZXR1cm4gTlVMTDsKLQotICAgICAgICBmYXN0bG9jYWxzID0gZi0+Zl9sb2NhbHNwbHVzOwotICAgICAgICBzdGFjayA9ICgqcHBfc3RhY2spIC0gbjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICBQeV9JTkNSRUYoKnN0YWNrKTsKLSAgICAgICAgICAgIGZhc3Rsb2NhbHNbaV0gPSAqc3RhY2srKzsKKyAgICBpZiAoY28tPmNvX2t3b25seWFyZ2NvdW50ID09IDAgJiYgbmt3YXJncyA9PSAwICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIGlmIChhcmdkZWZzID09IE5VTEwgJiYgY28tPmNvX2FyZ2NvdW50ID09IG5hcmdzKSB7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBuYXJncywgZ2xvYmFscyk7CiAgICAgICAgIH0KLSAgICAgICAgcmV0dmFsID0gUHlFdmFsX0V2YWxGcmFtZUV4KGYsMCk7Ci0gICAgICAgICsrdHN0YXRlLT5yZWN1cnNpb25fZGVwdGg7Ci0gICAgICAgIFB5X0RFQ1JFRihmKTsKLSAgICAgICAgLS10c3RhdGUtPnJlY3Vyc2lvbl9kZXB0aDsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKKyAgICAgICAgZWxzZSBpZiAobmFyZ3MgPT0gMCAmJiBhcmdkZWZzICE9IE5VTEwKKyAgICAgICAgICAgICAgICAgJiYgY28tPmNvX2FyZ2NvdW50ID09IFB5X1NJWkUoYXJnZGVmcykpIHsKKyAgICAgICAgICAgIC8qIGZ1bmN0aW9uIGNhbGxlZCB3aXRoIG5vIGFyZ3VtZW50cywgYnV0IGFsbCBwYXJhbWV0ZXJzIGhhdmUKKyAgICAgICAgICAgICAgIGEgZGVmYXVsdCB2YWx1ZTogdXNlIGRlZmF1bHQgdmFsdWVzIGFzIGFyZ3VtZW50cyAuKi8KKyAgICAgICAgICAgIHN0YWNrID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIHN0YWNrLCBQeV9TSVpFKGFyZ2RlZnMpLCBnbG9iYWxzKTsKKyAgICAgICAgfQogICAgIH0KKworICAgIGt3ZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0tXX0RFRkFVTFRTKGZ1bmMpOworICAgIGNsb3N1cmUgPSBQeUZ1bmN0aW9uX0dFVF9DTE9TVVJFKGZ1bmMpOworICAgIG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX25hbWU7CisgICAgcXVhbG5hbWUgPSAoKFB5RnVuY3Rpb25PYmplY3QgKilmdW5jKSAtPiBmdW5jX3F1YWxuYW1lOworCiAgICAgaWYgKGFyZ2RlZnMgIT0gTlVMTCkgewogICAgICAgICBkID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CiAgICAgICAgIG5kID0gUHlfU0laRShhcmdkZWZzKTsKICAgICB9Ci0gICAgcmV0dXJuIF9QeUV2YWxfRXZhbENvZGVXaXRoTmFtZSgoUHlPYmplY3QqKWNvLCBnbG9iYWxzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKFB5T2JqZWN0ICopTlVMTCwgKCpwcF9zdGFjayktbiwgbmEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKnBwX3N0YWNrKS0yKm5rLCBuaywgZCwgbmQsIGt3ZGVmcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBxdWFsbmFtZSk7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi11cGRhdGVfa2V5d29yZF9hcmdzKFB5T2JqZWN0ICpvcmlnX2t3ZGljdCwgaW50IG5rLCBQeU9iamVjdCAqKipwcF9zdGFjaywKLSAgICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmZ1bmMpCi17Ci0gICAgUHlPYmplY3QgKmt3ZGljdCA9IE5VTEw7Ci0gICAgaWYgKG9yaWdfa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIGt3ZGljdCA9IFB5RGljdF9OZXcoKTsKICAgICBlbHNlIHsKLSAgICAgICAga3dkaWN0ID0gUHlEaWN0X0NvcHkob3JpZ19rd2RpY3QpOwotICAgICAgICBQeV9ERUNSRUYob3JpZ19rd2RpY3QpOworICAgICAgICBkID0gTlVMTDsKKyAgICAgICAgbmQgPSAwOwogICAgIH0KLSAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIHdoaWxlICgtLW5rID49IDApIHsKLSAgICAgICAgaW50IGVycjsKLSAgICAgICAgUHlPYmplY3QgKnZhbHVlID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeU9iamVjdCAqa2V5ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoUHlEaWN0X0dldEl0ZW0oa3dkaWN0LCBrZXkpICE9IE5VTEwpIHsKLSAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyVzIGdvdCBtdWx0aXBsZSB2YWx1ZXMgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJmb3Iga2V5d29yZCBhcmd1bWVudCAnJVUnIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeUV2YWxfR2V0RnVuY05hbWUoZnVuYyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgIGtleSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa2V5KTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKKyAgICByZXR1cm4gX1B5RXZhbF9FdmFsQ29kZVdpdGhOYW1lKChQeU9iamVjdCopY28sIGdsb2JhbHMsIChQeU9iamVjdCAqKU5VTEwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFjaywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBua3dhcmdzID8gJlB5VHVwbGVfR0VUX0lURU0oa3duYW1lcywgMCkgOiBOVUxMLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgKyBuYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5rd2FyZ3MsIDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLCAoaW50KW5kLCBrd2RlZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbG9zdXJlLCBuYW1lLCBxdWFsbmFtZSk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsS2V5d29yZHMoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICoqc3RhY2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQoreworICAgIHJldHVybiBmYXN0X2Z1bmN0aW9uKGZ1bmMsIHN0YWNrLCBuYXJncywga3duYW1lcyk7Cit9CisKK1B5T2JqZWN0ICoKK19QeUZ1bmN0aW9uX0Zhc3RDYWxsRGljdChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKiphcmdzLCBQeV9zc2l6ZV90IG5hcmdzLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICprd2FyZ3MpCit7CisgICAgUHlDb2RlT2JqZWN0ICpjbyA9IChQeUNvZGVPYmplY3QgKilQeUZ1bmN0aW9uX0dFVF9DT0RFKGZ1bmMpOworICAgIFB5T2JqZWN0ICpnbG9iYWxzID0gUHlGdW5jdGlvbl9HRVRfR0xPQkFMUyhmdW5jKTsKKyAgICBQeU9iamVjdCAqYXJnZGVmcyA9IFB5RnVuY3Rpb25fR0VUX0RFRkFVTFRTKGZ1bmMpOworICAgIFB5T2JqZWN0ICprd2RlZnMsICpjbG9zdXJlLCAqbmFtZSwgKnF1YWxuYW1lOworICAgIFB5T2JqZWN0ICprd3R1cGxlLCAqKms7CisgICAgUHlPYmplY3QgKipkOworICAgIFB5X3NzaXplX3QgbmQsIG5rOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBhc3NlcnQoZnVuYyAhPSBOVUxMKTsKKyAgICBhc3NlcnQobmFyZ3MgPj0gMCk7CisgICAgYXNzZXJ0KG5hcmdzID09IDAgfHwgYXJncyAhPSBOVUxMKTsKKyAgICBhc3NlcnQoa3dhcmdzID09IE5VTEwgfHwgUHlEaWN0X0NoZWNrKGt3YXJncykpOworCisgICAgUENBTEwoUENBTExfRlVOQ1RJT04pOworICAgIFBDQUxMKFBDQUxMX0ZBU1RfRlVOQ1RJT04pOworCisgICAgaWYgKGNvLT5jb19rd29ubHlhcmdjb3VudCA9PSAwICYmCisgICAgICAgIChrd2FyZ3MgPT0gTlVMTCB8fCBQeURpY3RfU2l6ZShrd2FyZ3MpID09IDApICYmCisgICAgICAgIGNvLT5jb19mbGFncyA9PSAoQ09fT1BUSU1JWkVEIHwgQ09fTkVXTE9DQUxTIHwgQ09fTk9GUkVFKSkKKyAgICB7CisgICAgICAgIC8qIEZhc3QgcGF0aHMgKi8KKyAgICAgICAgaWYgKGFyZ2RlZnMgPT0gTlVMTCAmJiBjby0+Y29fYXJnY291bnQgPT0gbmFyZ3MpIHsKKyAgICAgICAgICAgIHJldHVybiBfUHlGdW5jdGlvbl9GYXN0Q2FsbChjbywgYXJncywgbmFyZ3MsIGdsb2JhbHMpOworICAgICAgICB9CisgICAgICAgIGVsc2UgaWYgKG5hcmdzID09IDAgJiYgYXJnZGVmcyAhPSBOVUxMCisgICAgICAgICAgICAgICAgICYmIGNvLT5jb19hcmdjb3VudCA9PSBQeV9TSVpFKGFyZ2RlZnMpKSB7CisgICAgICAgICAgICAvKiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBubyBhcmd1bWVudHMsIGJ1dCBhbGwgcGFyYW1ldGVycyBoYXZlCisgICAgICAgICAgICAgICBhIGRlZmF1bHQgdmFsdWU6IHVzZSBkZWZhdWx0IHZhbHVlcyBhcyBhcmd1bWVudHMgLiovCisgICAgICAgICAgICBhcmdzID0gJlB5VHVwbGVfR0VUX0lURU0oYXJnZGVmcywgMCk7CisgICAgICAgICAgICByZXR1cm4gX1B5RnVuY3Rpb25fRmFzdENhbGwoY28sIGFyZ3MsIFB5X1NJWkUoYXJnZGVmcyksIGdsb2JhbHMpOworICAgICAgICB9CisgICAgfQorCisgICAgaWYgKGt3YXJncyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgcG9zLCBpOworICAgICAgICBuayA9IFB5RGljdF9TaXplKGt3YXJncyk7CisKKyAgICAgICAga3d0dXBsZSA9IFB5VHVwbGVfTmV3KDIgKiBuayk7CisgICAgICAgIGlmIChrd3R1cGxlID09IE5VTEwpIHsKICAgICAgICAgICAgIHJldHVybiBOVUxMOwogICAgICAgICB9Ci0gICAgICAgIGVyciA9IFB5RGljdF9TZXRJdGVtKGt3ZGljdCwga2V5LCB2YWx1ZSk7Ci0gICAgICAgIFB5X0RFQ1JFRihrZXkpOwotICAgICAgICBQeV9ERUNSRUYodmFsdWUpOwotICAgICAgICBpZiAoZXJyKSB7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoa3dkaWN0KTsKLSAgICAgICAgICAgIHJldHVybiBOVUxMOworCisgICAgICAgIGsgPSAmUHlUdXBsZV9HRVRfSVRFTShrd3R1cGxlLCAwKTsKKyAgICAgICAgcG9zID0gaSA9IDA7CisgICAgICAgIHdoaWxlIChQeURpY3RfTmV4dChrd2FyZ3MsICZwb3MsICZrW2ldLCAma1tpKzFdKSkgeworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaV0pOworICAgICAgICAgICAgUHlfSU5DUkVGKGtbaSsxXSk7CisgICAgICAgICAgICBpICs9IDI7CiAgICAgICAgIH0KKyAgICAgICAgbmsgPSBpIC8gMjsKICAgICB9Ci0gICAgcmV0dXJuIGt3ZGljdDsKKyAgICBlbHNlIHsKKyAgICAgICAga3d0dXBsZSA9IE5VTEw7CisgICAgICAgIGsgPSBOVUxMOworICAgICAgICBuayA9IDA7CisgICAgfQorCisgICAga3dkZWZzID0gUHlGdW5jdGlvbl9HRVRfS1dfREVGQVVMVFMoZnVuYyk7CisgICAgY2xvc3VyZSA9IFB5RnVuY3Rpb25fR0VUX0NMT1NVUkUoZnVuYyk7CisgICAgbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfbmFtZTsKKyAgICBxdWFsbmFtZSA9ICgoUHlGdW5jdGlvbk9iamVjdCAqKWZ1bmMpIC0+IGZ1bmNfcXVhbG5hbWU7CisKKyAgICBpZiAoYXJnZGVmcyAhPSBOVUxMKSB7CisgICAgICAgIGQgPSAmUHlUdXBsZV9HRVRfSVRFTShhcmdkZWZzLCAwKTsKKyAgICAgICAgbmQgPSBQeV9TSVpFKGFyZ2RlZnMpOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgZCA9IE5VTEw7CisgICAgICAgIG5kID0gMDsKKyAgICB9CisKKyAgICByZXN1bHQgPSBfUHlFdmFsX0V2YWxDb2RlV2l0aE5hbWUoKFB5T2JqZWN0KiljbywgZ2xvYmFscywgKFB5T2JqZWN0ICopTlVMTCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncywgbmFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGssIGsgKyAxLCBuaywgMiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZCwgbmQsIGt3ZGVmcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2xvc3VyZSwgbmFtZSwgcXVhbG5hbWUpOworICAgIFB5X1hERUNSRUYoa3d0dXBsZSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKLXVwZGF0ZV9zdGFyX2FyZ3MoaW50IG5zdGFjaywgaW50IG5zdGFyLCBQeU9iamVjdCAqc3RhcmFyZywKLSAgICAgICAgICAgICAgICAgUHlPYmplY3QgKioqcHBfc3RhY2spCitkb19jYWxsX2NvcmUoUHlPYmplY3QgKmZ1bmMsIFB5T2JqZWN0ICpjYWxsYXJncywgUHlPYmplY3QgKmt3ZGljdCkKIHsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MsICp3OwotCi0gICAgY2FsbGFyZ3MgPSBQeVR1cGxlX05ldyhuc3RhY2sgKyBuc3Rhcik7Ci0gICAgaWYgKGNhbGxhcmdzID09IE5VTEwpIHsKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICAgIGlmIChuc3RhcikgewotICAgICAgICBpbnQgaTsKLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG5zdGFyOyBpKyspIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICphID0gUHlUdXBsZV9HRVRfSVRFTShzdGFyYXJnLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihhKTsKLSAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjayArIGksIGEpOwotICAgICAgICB9Ci0gICAgfQotICAgIHdoaWxlICgtLW5zdGFjayA+PSAwKSB7Ci0gICAgICAgIHcgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIFB5VHVwbGVfU0VUX0lURU0oY2FsbGFyZ3MsIG5zdGFjaywgdyk7Ci0gICAgfQotICAgIHJldHVybiBjYWxsYXJnczsKLX0KLQotc3RhdGljIFB5T2JqZWN0ICoKLWxvYWRfYXJncyhQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hKQotewotICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9OZXcobmEpOwotICAgIFB5T2JqZWN0ICp3OwotCi0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgd2hpbGUgKC0tbmEgPj0gMCkgewotICAgICAgICB3ID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIG5hLCB3KTsKLSAgICB9Ci0gICAgcmV0dXJuIGFyZ3M7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1kb19jYWxsKFB5T2JqZWN0ICpmdW5jLCBQeU9iamVjdCAqKipwcF9zdGFjaywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgUHlPYmplY3QgKmNhbGxhcmdzID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChuayA+IDApIHsKLSAgICAgICAga3dkaWN0ID0gdXBkYXRlX2tleXdvcmRfYXJncyhOVUxMLCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGNhbGxfZmFpbDsKLSAgICB9Ci0gICAgY2FsbGFyZ3MgPSBsb2FkX2FyZ3MocHBfc3RhY2ssIG5hKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBjYWxsX2ZhaWw7CiAjaWZkZWYgQ0FMTF9QUk9GSUxFCiAgICAgLyogQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSB0byBsb29rIGF0IHRoZSB0eXBlIG9mIGZ1bmMgdG8KICAgICAgICB1cGRhdGUgdGhlIGNhbGwgc3RhdHMgcHJvcGVybHkuICBEbyBpdCBoZXJlIHNvIGFzIHRvIGF2b2lkCkBAIC00OTQzLDExNSArNTA0MiwxNiBAQAogICAgIGVsc2UKICAgICAgICAgUENBTEwoUENBTExfT1RIRVIpOwogI2VuZGlmCisKICAgICBpZiAoUHlDRnVuY3Rpb25fQ2hlY2soZnVuYykpIHsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKICAgICAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gUHlUaHJlYWRTdGF0ZV9HRVQoKTsKICAgICAgICAgQ19UUkFDRShyZXN1bHQsIFB5Q0Z1bmN0aW9uX0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCkpOworICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KLSAgICBlbHNlCi0gICAgICAgIHJlc3VsdCA9IFB5T2JqZWN0X0NhbGwoZnVuYywgY2FsbGFyZ3MsIGt3ZGljdCk7Ci1jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBQeU9iamVjdCAqCi1leHRfZG9fY2FsbChQeU9iamVjdCAqZnVuYywgUHlPYmplY3QgKioqcHBfc3RhY2ssIGludCBmbGFncywgaW50IG5hLCBpbnQgbmspCi17Ci0gICAgaW50IG5zdGFyID0gMDsKLSAgICBQeU9iamVjdCAqY2FsbGFyZ3MgPSBOVUxMOwotICAgIFB5T2JqZWN0ICpzdGFyYXJnID0gTlVMTDsKLSAgICBQeU9iamVjdCAqa3dkaWN0ID0gTlVMTDsKLSAgICBQeU9iamVjdCAqcmVzdWx0ID0gTlVMTDsKLQotICAgIGlmIChmbGFncyAmIENBTExfRkxBR19LVykgewotICAgICAgICBrd2RpY3QgPSBFWFRfUE9QKCpwcF9zdGFjayk7Ci0gICAgICAgIGlmICghUHlEaWN0X0NoZWNrKGt3ZGljdCkpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICpkOwotICAgICAgICAgICAgZCA9IFB5RGljdF9OZXcoKTsKLSAgICAgICAgICAgIGlmIChkID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgaWYgKFB5RGljdF9VcGRhdGUoZCwga3dkaWN0KSAhPSAwKSB7Ci0gICAgICAgICAgICAgICAgUHlfREVDUkVGKGQpOwotICAgICAgICAgICAgICAgIC8qIFB5RGljdF9VcGRhdGUgcmFpc2VzIGF0dHJpYnV0ZQotICAgICAgICAgICAgICAgICAqIGVycm9yIChwZXJjb2xhdGVkIGZyb20gYW4gYXR0ZW1wdAotICAgICAgICAgICAgICAgICAqIHRvIGdldCAna2V5cycgYXR0cmlidXRlKSBpbnN0ZWFkIG9mCi0gICAgICAgICAgICAgICAgICogYSB0eXBlIGVycm9yIGlmIGl0cyBzZWNvbmQgYXJndW1lbnQKLSAgICAgICAgICAgICAgICAgKiBpcyBub3QgYSBtYXBwaW5nLgotICAgICAgICAgICAgICAgICAqLwotICAgICAgICAgICAgICAgIGlmIChQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0F0dHJpYnV0ZUVycm9yKSkgewotICAgICAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiUuMjAwcyUuMjAwcyBhcmd1bWVudCBhZnRlciAqKiAiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhIG1hcHBpbmcsIG5vdCAlLjIwMHMiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNOYW1lKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAga3dkaWN0LT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKGt3ZGljdCk7Ci0gICAgICAgICAgICBrd2RpY3QgPSBkOwotICAgICAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBQeU9iamVjdF9DYWxsKGZ1bmMsIGNhbGxhcmdzLCBrd2RpY3QpOwogICAgIH0KLSAgICBpZiAobmsgPiAwKSB7Ci0gICAgICAgIGt3ZGljdCA9IHVwZGF0ZV9rZXl3b3JkX2FyZ3Moa3dkaWN0LCBuaywgcHBfc3RhY2ssIGZ1bmMpOwotICAgICAgICBpZiAoa3dkaWN0ID09IE5VTEwpCi0gICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgfQotCi0gICAgaWYgKGZsYWdzICYgQ0FMTF9GTEFHX1ZBUikgewotICAgICAgICBzdGFyYXJnID0gRVhUX1BPUCgqcHBfc3RhY2spOwotICAgICAgICBpZiAoIVB5VHVwbGVfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgIFB5T2JqZWN0ICp0ID0gTlVMTDsKLSAgICAgICAgICAgIGlmIChQeV9UWVBFKHN0YXJhcmcpLT50cF9pdGVyID09IE5VTEwgJiYKLSAgICAgICAgICAgICAgICAgICAgIVB5U2VxdWVuY2VfQ2hlY2soc3RhcmFyZykpIHsKLSAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVHlwZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiJS4yMDBzJS4yMDBzIGFyZ3VtZW50IGFmdGVyICogIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibXVzdCBiZSBhbiBpdGVyYWJsZSwgbm90ICUuMjAwcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5RXZhbF9HZXRGdW5jTmFtZShmdW5jKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlFdmFsX0dldEZ1bmNEZXNjKGZ1bmMpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGFyYXJnLT5vYl90eXBlLT50cF9uYW1lKTsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB0ID0gUHlTZXF1ZW5jZV9UdXBsZShzdGFyYXJnKTsKLSAgICAgICAgICAgIGlmICh0ID09IE5VTEwpIHsKLSAgICAgICAgICAgICAgICBnb3RvIGV4dF9jYWxsX2ZhaWw7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBQeV9ERUNSRUYoc3RhcmFyZyk7Ci0gICAgICAgICAgICBzdGFyYXJnID0gdDsKLSAgICAgICAgfQotICAgICAgICBuc3RhciA9IFB5VHVwbGVfR0VUX1NJWkUoc3RhcmFyZyk7Ci0gICAgfQotICAgIGNhbGxhcmdzID0gdXBkYXRlX3N0YXJfYXJncyhuYSwgbnN0YXIsIHN0YXJhcmcsIHBwX3N0YWNrKTsKLSAgICBpZiAoY2FsbGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBleHRfY2FsbF9mYWlsOwotI2lmZGVmIENBTExfUFJPRklMRQotICAgIC8qIEF0IHRoaXMgcG9pbnQsIHdlIGhhdmUgdG8gbG9vayBhdCB0aGUgdHlwZSBvZiBmdW5jIHRvCi0gICAgICAgdXBkYXRlIHRoZSBjYWxsIHN0YXRzIHByb3Blcmx5LiAgRG8gaXQgaGVyZSBzbyBhcyB0byBhdm9pZAotICAgICAgIGV4cG9zaW5nIHRoZSBjYWxsIHN0YXRzIG1hY2hpbmVyeSBvdXRzaWRlIGNldmFsLmMKLSAgICAqLwotICAgIGlmIChQeUZ1bmN0aW9uX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9GVU5DVElPTik7Ci0gICAgZWxzZSBpZiAoUHlNZXRob2RfQ2hlY2soZnVuYykpCi0gICAgICAgIFBDQUxMKFBDQUxMX01FVEhPRCk7Ci0gICAgZWxzZSBpZiAoUHlUeXBlX0NoZWNrKGZ1bmMpKQotICAgICAgICBQQ0FMTChQQ0FMTF9UWVBFKTsKLSAgICBlbHNlIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkKLSAgICAgICAgUENBTEwoUENBTExfQ0ZVTkNUSU9OKTsKLSAgICBlbHNlCi0gICAgICAgIFBDQUxMKFBDQUxMX09USEVSKTsKLSNlbmRpZgotICAgIGlmIChQeUNGdW5jdGlvbl9DaGVjayhmdW5jKSkgewotICAgICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotICAgICAgICBDX1RSQUNFKHJlc3VsdCwgUHlDRnVuY3Rpb25fQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KSk7Ci0gICAgfQotICAgIGVsc2UKLSAgICAgICAgcmVzdWx0ID0gUHlPYmplY3RfQ2FsbChmdW5jLCBjYWxsYXJncywga3dkaWN0KTsKLWV4dF9jYWxsX2ZhaWw6Ci0gICAgUHlfWERFQ1JFRihjYWxsYXJncyk7Ci0gICAgUHlfWERFQ1JFRihrd2RpY3QpOwotICAgIFB5X1hERUNSRUYoc3RhcmFyZyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogLyogRXh0cmFjdCBhIHNsaWNlIGluZGV4IGZyb20gYSBQeUxvbmcgb3IgYW4gb2JqZWN0IHdpdGggdGhlCkBAIC01MTQxLDYgKzUxNDEsNDYgQEAKIH0KIAogc3RhdGljIFB5T2JqZWN0ICoKK2ltcG9ydF9uYW1lKFB5RnJhbWVPYmplY3QgKmYsIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqZnJvbWxpc3QsIFB5T2JqZWN0ICpsZXZlbCkKK3sKKyAgICBfUHlfSURFTlRJRklFUihfX2ltcG9ydF9fKTsKKyAgICBQeU9iamVjdCAqaW1wb3J0X2Z1bmMsICpyZXM7CisgICAgUHlPYmplY3QqIHN0YWNrWzVdOworCisgICAgaW1wb3J0X2Z1bmMgPSBfUHlEaWN0X0dldEl0ZW1JZChmLT5mX2J1aWx0aW5zLCAmUHlJZF9fX2ltcG9ydF9fKTsKKyAgICBpZiAoaW1wb3J0X2Z1bmMgPT0gTlVMTCkgeworICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfSW1wb3J0RXJyb3IsICJfX2ltcG9ydF9fIG5vdCBmb3VuZCIpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICAvKiBGYXN0IHBhdGggZm9yIG5vdCBvdmVybG9hZGVkIF9faW1wb3J0X18uICovCisgICAgaWYgKGltcG9ydF9mdW5jID09IFB5VGhyZWFkU3RhdGVfR0VUKCktPmludGVycC0+aW1wb3J0X2Z1bmMpIHsKKyAgICAgICAgaW50IGlsZXZlbCA9IF9QeUxvbmdfQXNJbnQobGV2ZWwpOworICAgICAgICBpZiAoaWxldmVsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKKyAgICAgICAgICAgIHJldHVybiBOVUxMOworICAgICAgICB9CisgICAgICAgIHJlcyA9IFB5SW1wb3J0X0ltcG9ydE1vZHVsZUxldmVsT2JqZWN0KAorICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfZ2xvYmFscywKKyAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHMsCisgICAgICAgICAgICAgICAgICAgICAgICBmcm9tbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGlsZXZlbCk7CisgICAgICAgIHJldHVybiByZXM7CisgICAgfQorCisgICAgUHlfSU5DUkVGKGltcG9ydF9mdW5jKTsKKworICAgIHN0YWNrWzBdID0gbmFtZTsKKyAgICBzdGFja1sxXSA9IGYtPmZfZ2xvYmFsczsKKyAgICBzdGFja1syXSA9IGYtPmZfbG9jYWxzID09IE5VTEwgPyBQeV9Ob25lIDogZi0+Zl9sb2NhbHM7CisgICAgc3RhY2tbM10gPSBmcm9tbGlzdDsKKyAgICBzdGFja1s0XSA9IGxldmVsOworICAgIHJlcyA9IF9QeU9iamVjdF9GYXN0Q2FsbChpbXBvcnRfZnVuYywgc3RhY2ssIDUpOworICAgIFB5X0RFQ1JFRihpbXBvcnRfZnVuYyk7CisgICAgcmV0dXJuIHJlczsKK30KKworc3RhdGljIFB5T2JqZWN0ICoKIGltcG9ydF9mcm9tKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqbmFtZSkKIHsKICAgICBQeU9iamVjdCAqeDsKQEAgLTUyNzYsNyArNTMxNiw3IEBACiAKIHN0YXRpYyBQeU9iamVjdCAqCiB1bmljb2RlX2NvbmNhdGVuYXRlKFB5T2JqZWN0ICp2LCBQeU9iamVjdCAqdywKLSAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgdW5zaWduZWQgY2hhciAqbmV4dF9pbnN0cikKKyAgICAgICAgICAgICAgICAgICAgUHlGcmFtZU9iamVjdCAqZiwgY29uc3QgX1B5X0NPREVVTklUICpuZXh0X2luc3RyKQogewogICAgIFB5T2JqZWN0ICpyZXM7CiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAyKSB7CkBAIC01Mjg2LDEwICs1MzI2LDExIEBACiAgICAgICAgICAqICd2YXJpYWJsZScuICBXZSB0cnkgdG8gZGVsZXRlIHRoZSB2YXJpYWJsZSBub3cgdG8gcmVkdWNlCiAgICAgICAgICAqIHRoZSByZWZjbnQgdG8gMS4KICAgICAgICAgICovCi0gICAgICAgIHN3aXRjaCAoKm5leHRfaW5zdHIpIHsKKyAgICAgICAgaW50IG9wY29kZSwgb3Bhcmc7CisgICAgICAgIE5FWFRPUEFSRygpOworICAgICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFNUT1JFX0ZBU1Q6CiAgICAgICAgIHsKLSAgICAgICAgICAgIGludCBvcGFyZyA9IFBFRUtBUkcoKTsKICAgICAgICAgICAgIFB5T2JqZWN0ICoqZmFzdGxvY2FscyA9IGYtPmZfbG9jYWxzcGx1czsKICAgICAgICAgICAgIGlmIChHRVRMT0NBTChvcGFyZykgPT0gdikKICAgICAgICAgICAgICAgICBTRVRMT0NBTChvcGFyZywgTlVMTCk7CkBAIC01Mjk5LDcgKzUzNDAsNyBAQAogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqKmZyZWV2YXJzID0gKGYtPmZfbG9jYWxzcGx1cyArCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGYtPmZfY29kZS0+Y29fbmxvY2Fscyk7Ci0gICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW1BFRUtBUkcoKV07CisgICAgICAgICAgICBQeU9iamVjdCAqYyA9IGZyZWV2YXJzW29wYXJnXTsKICAgICAgICAgICAgIGlmIChQeUNlbGxfR0VUKGMpID09IHYpCiAgICAgICAgICAgICAgICAgUHlDZWxsX1NldChjLCBOVUxMKTsKICAgICAgICAgICAgIGJyZWFrOwpAQCAtNTMwNyw3ICs1MzQ4LDcgQEAKICAgICAgICAgY2FzZSBTVE9SRV9OQU1FOgogICAgICAgICB7CiAgICAgICAgICAgICBQeU9iamVjdCAqbmFtZXMgPSBmLT5mX2NvZGUtPmNvX25hbWVzOwotICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBQRUVLQVJHKCkpOworICAgICAgICAgICAgUHlPYmplY3QgKm5hbWUgPSBHRVRJVEVNKG5hbWVzLCBvcGFyZyk7CiAgICAgICAgICAgICBQeU9iamVjdCAqbG9jYWxzID0gZi0+Zl9sb2NhbHM7CiAgICAgICAgICAgICBpZiAoUHlEaWN0X0NoZWNrRXhhY3QobG9jYWxzKSAmJgogICAgICAgICAgICAgICAgIFB5RGljdF9HZXRJdGVtKGxvY2FscywgbmFtZSkgPT0gdikgewpAQCAtNTM2NywzICs1NDA4LDc5IEBACiB9CiAKICNlbmRpZgorCitQeV9zc2l6ZV90CitfUHlFdmFsX1JlcXVlc3RDb2RlRXh0cmFJbmRleChmcmVlZnVuYyBmcmVlKQoreworICAgIFB5VGhyZWFkU3RhdGUgKnRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfR2V0KCk7CisgICAgUHlfc3NpemVfdCBuZXdfaW5kZXg7CisKKyAgICBpZiAodHN0YXRlLT5jb19leHRyYV91c2VyX2NvdW50ID09IE1BWF9DT19FWFRSQV9VU0VSUyAtIDEpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICBuZXdfaW5kZXggPSB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQrKzsKKyAgICB0c3RhdGUtPmNvX2V4dHJhX2ZyZWVmdW5jc1tuZXdfaW5kZXhdID0gZnJlZTsKKyAgICByZXR1cm4gbmV3X2luZGV4OworfQorCitzdGF0aWMgdm9pZAorZHRyYWNlX2Z1bmN0aW9uX2VudHJ5KFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9FTlRSWShmaWxlbmFtZSwgZnVuY25hbWUsIGxpbmVubyk7Cit9CisKK3N0YXRpYyB2b2lkCitkdHJhY2VfZnVuY3Rpb25fcmV0dXJuKFB5RnJhbWVPYmplY3QgKmYpCit7CisgICAgY2hhciogZmlsZW5hbWU7CisgICAgY2hhciogZnVuY25hbWU7CisgICAgaW50IGxpbmVubzsKKworICAgIGZpbGVuYW1lID0gUHlVbmljb2RlX0FzVVRGOChmLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICBmdW5jbmFtZSA9IFB5VW5pY29kZV9Bc1VURjgoZi0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGYtPmZfY29kZSwgZi0+Zl9sYXN0aSk7CisKKyAgICBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oZmlsZW5hbWUsIGZ1bmNuYW1lLCBsaW5lbm8pOworfQorCisvKiBEVHJhY2UgZXF1aXZhbGVudCBvZiBtYXliZV9jYWxsX2xpbmVfdHJhY2UuICovCitzdGF0aWMgdm9pZAorbWF5YmVfZHRyYWNlX2xpbmUoUHlGcmFtZU9iamVjdCAqZnJhbWUsCisgICAgICAgICAgICAgICAgICBpbnQgKmluc3RyX2xiLCBpbnQgKmluc3RyX3ViLCBpbnQgKmluc3RyX3ByZXYpCit7CisgICAgaW50IGxpbmUgPSBmcmFtZS0+Zl9saW5lbm87CisgICAgY2hhciAqY29fZmlsZW5hbWUsICpjb19uYW1lOworCisgICAgLyogSWYgdGhlIGxhc3QgaW5zdHJ1Y3Rpb24gZXhlY3V0ZWQgaXNuJ3QgaW4gdGhlIGN1cnJlbnQKKyAgICAgICBpbnN0cnVjdGlvbiB3aW5kb3csIHJlc2V0IHRoZSB3aW5kb3cuCisgICAgKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPCAqaW5zdHJfbGIgfHwgZnJhbWUtPmZfbGFzdGkgPj0gKmluc3RyX3ViKSB7CisgICAgICAgIFB5QWRkclBhaXIgYm91bmRzOworICAgICAgICBsaW5lID0gX1B5Q29kZV9DaGVja0xpbmVOdW1iZXIoZnJhbWUtPmZfY29kZSwgZnJhbWUtPmZfbGFzdGksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmYm91bmRzKTsKKyAgICAgICAgKmluc3RyX2xiID0gYm91bmRzLmFwX2xvd2VyOworICAgICAgICAqaW5zdHJfdWIgPSBib3VuZHMuYXBfdXBwZXI7CisgICAgfQorICAgIC8qIElmIHRoZSBsYXN0IGluc3RydWN0aW9uIGZhbGxzIGF0IHRoZSBzdGFydCBvZiBhIGxpbmUgb3IgaWYKKyAgICAgICBpdCByZXByZXNlbnRzIGEganVtcCBiYWNrd2FyZHMsIHVwZGF0ZSB0aGUgZnJhbWUncyBsaW5lCisgICAgICAgbnVtYmVyIGFuZCBjYWxsIHRoZSB0cmFjZSBmdW5jdGlvbi4gKi8KKyAgICBpZiAoZnJhbWUtPmZfbGFzdGkgPT0gKmluc3RyX2xiIHx8IGZyYW1lLT5mX2xhc3RpIDwgKmluc3RyX3ByZXYpIHsKKyAgICAgICAgZnJhbWUtPmZfbGluZW5vID0gbGluZTsKKyAgICAgICAgY29fZmlsZW5hbWUgPSBQeVVuaWNvZGVfQXNVVEY4KGZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgaWYgKCFjb19maWxlbmFtZSkKKyAgICAgICAgICAgIGNvX2ZpbGVuYW1lID0gIj8iOworICAgICAgICBjb19uYW1lID0gUHlVbmljb2RlX0FzVVRGOChmcmFtZS0+Zl9jb2RlLT5jb19uYW1lKTsKKyAgICAgICAgaWYgKCFjb19uYW1lKQorICAgICAgICAgICAgY29fbmFtZSA9ICI/IjsKKyAgICAgICAgUHlEVHJhY2VfTElORShjb19maWxlbmFtZSwgY29fbmFtZSwgbGluZSk7CisgICAgfQorICAgICppbnN0cl9wcmV2ID0gZnJhbWUtPmZfbGFzdGk7Cit9CmRpZmYgLS1naXQgYS9QeXRob24vY2V2YWxfZ2lsLmggYi9QeXRob24vY2V2YWxfZ2lsLmgKaW5kZXggOGQzOGVlOS4uYTNiNDUwYiAxMDA2NDQKLS0tIGEvUHl0aG9uL2NldmFsX2dpbC5oCisrKyBiL1B5dGhvbi9jZXZhbF9naWwuaApAQCAtMTc4LDcgKzE3OCw3IEBACiAgICAgICAgIC8qIFN1Yi1pbnRlcnByZXRlciBzdXBwb3J0OiB0aHJlYWRzIG1pZ2h0IGhhdmUgYmVlbiBzd2l0Y2hlZAogICAgICAgICAgICB1bmRlciBvdXIgZmVldCB1c2luZyBQeVRocmVhZFN0YXRlX1N3YXAoKS4gRml4IHRoZSBHSUwgbGFzdAogICAgICAgICAgICBob2xkZXIgdmFyaWFibGUgc28gdGhhdCBvdXIgaGV1cmlzdGljcyB3b3JrLiAqLwotICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKFB5X3VpbnRwdHJfdCl0c3RhdGUpOworICAgICAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJmdpbF9sYXN0X2hvbGRlciwgKHVpbnRwdHJfdCl0c3RhdGUpOwogICAgIH0KIAogICAgIE1VVEVYX0xPQ0soZ2lsX211dGV4KTsKQEAgLTI0MCw3ICsyNDAsNyBAQAogICAgIF9QeV9BTk5PVEFURV9SV0xPQ0tfQUNRVUlSRUQoJmdpbF9sb2NrZWQsIC8qaXNfd3JpdGU9Ki8xKTsKIAogICAgIGlmICh0c3RhdGUgIT0gKFB5VGhyZWFkU3RhdGUqKV9QeV9hdG9taWNfbG9hZF9yZWxheGVkKCZnaWxfbGFzdF9ob2xkZXIpKSB7Ci0gICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAoUHlfdWludHB0cl90KXRzdGF0ZSk7CisgICAgICAgIF9QeV9hdG9taWNfc3RvcmVfcmVsYXhlZCgmZ2lsX2xhc3RfaG9sZGVyLCAodWludHB0cl90KXRzdGF0ZSk7CiAgICAgICAgICsrZ2lsX3N3aXRjaF9udW1iZXI7CiAgICAgfQogCmRpZmYgLS1naXQgYS9QeXRob24vY2xpbmljL2JsdGlubW9kdWxlLmMuaCBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCmluZGV4IDRlMmIxZjEuLmM4OGRlZWYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCisrKyBiL1B5dGhvbi9jbGluaWMvYmx0aW5tb2R1bGUuYy5oCkBAIC05Myw4ICs5Myw5IEBACiAgICAgUHlPYmplY3QgKmZvcm1hdF9zcGVjID0gTlVMTDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiT3xVOmZvcm1hdCIsCi0gICAgICAgICZ2YWx1ZSwgJmZvcm1hdF9zcGVjKSkKKyAgICAgICAgJnZhbHVlLCAmZm9ybWF0X3NwZWMpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9mb3JtYXRfaW1wbChtb2R1bGUsIHZhbHVlLCBmb3JtYXRfc3BlYyk7CiAKIGV4aXQ6CkBAIC0xMTksOCArMTIwLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBpbnQgaTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiaTpjaHIiLCAmaSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJpOmNociIsICZpKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fY2hyX2ltcGwobW9kdWxlLCBpKTsKIAogZXhpdDoKQEAgLTE0Niw3ICsxNDgsNyBAQAogImluIGFkZGl0aW9uIHRvIGFueSBmZWF0dXJlcyBleHBsaWNpdGx5IHNwZWNpZmllZC4iKTsKIAogI2RlZmluZSBCVUlMVElOX0NPTVBJTEVfTUVUSE9EREVGICAgIFwKLSAgICB7ImNvbXBpbGUiLCAoUHlDRnVuY3Rpb24pYnVpbHRpbl9jb21waWxlLCBNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUywgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCisgICAgeyJjb21waWxlIiwgKFB5Q0Z1bmN0aW9uKWJ1aWx0aW5fY29tcGlsZSwgTUVUSF9GQVNUQ0FMTCwgYnVpbHRpbl9jb21waWxlX19kb2NfX30sCiAKIHN0YXRpYyBQeU9iamVjdCAqCiBidWlsdGluX2NvbXBpbGVfaW1wbChQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqc291cmNlLCBQeU9iamVjdCAqZmlsZW5hbWUsCkBAIC0xNTQsMTAgKzE1NiwxMSBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IG9wdGltaXplKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKLWJ1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqYXJncywgUHlPYmplY3QgKmt3YXJncykKK2J1aWx0aW5fY29tcGlsZShQeU9iamVjdCAqbW9kdWxlLCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQogewogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwotICAgIHN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBfa2V5d29yZHNbXSA9IHsic291cmNlIiwgImZpbGVuYW1lIiwgIm1vZGUiLCAiZmxhZ3MiLCAiZG9udF9pbmhlcml0IiwgIm9wdGltaXplIiwgTlVMTH07CisgICAgc3RhdGljIF9QeUFyZ19QYXJzZXIgX3BhcnNlciA9IHsiT08mc3xpaWk6Y29tcGlsZSIsIF9rZXl3b3JkcywgMH07CiAgICAgUHlPYmplY3QgKnNvdXJjZTsKICAgICBQeU9iamVjdCAqZmlsZW5hbWU7CiAgICAgY29uc3QgY2hhciAqbW9kZTsKQEAgLTE2NSw5ICsxNjgsMTAgQEAKICAgICBpbnQgZG9udF9pbmhlcml0ID0gMDsKICAgICBpbnQgb3B0aW1pemUgPSAtMTsKIAotICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKGFyZ3MsIGt3YXJncywgIk9PJnN8aWlpOmNvbXBpbGUiLCBfa2V5d29yZHMsCi0gICAgICAgICZzb3VyY2UsIFB5VW5pY29kZV9GU0RlY29kZXIsICZmaWxlbmFtZSwgJm1vZGUsICZmbGFncywgJmRvbnRfaW5oZXJpdCwgJm9wdGltaXplKSkKKyAgICBpZiAoIV9QeUFyZ19QYXJzZVN0YWNrKGFyZ3MsIG5hcmdzLCBrd25hbWVzLCAmX3BhcnNlciwKKyAgICAgICAgJnNvdXJjZSwgUHlVbmljb2RlX0ZTRGVjb2RlciwgJmZpbGVuYW1lLCAmbW9kZSwgJmZsYWdzLCAmZG9udF9pbmhlcml0LCAmb3B0aW1pemUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9jb21waWxlX2ltcGwobW9kdWxlLCBzb3VyY2UsIGZpbGVuYW1lLCBtb2RlLCBmbGFncywgZG9udF9pbmhlcml0LCBvcHRpbWl6ZSk7CiAKIGV4aXQ6CkBAIC0xOTUsOCArMTk5LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImRpdm1vZCIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZ4LCAmeSkpCisgICAgICAgICZ4LCAmeSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2Rpdm1vZF9pbXBsKG1vZHVsZSwgeCwgeSk7CiAKIGV4aXQ6CkBAIC0yMzIsOCArMjM3LDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImV2YWwiLAogICAgICAgICAxLCAzLAotICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpCisgICAgICAgICZzb3VyY2UsICZnbG9iYWxzLCAmbG9jYWxzKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IGJ1aWx0aW5fZXZhbF9pbXBsKG1vZHVsZSwgc291cmNlLCBnbG9iYWxzLCBsb2NhbHMpOwogCiBleGl0OgpAQCAtMjY5LDggKzI3NSw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJleGVjIiwKICAgICAgICAgMSwgMywKLSAgICAgICAgJnNvdXJjZSwgJmdsb2JhbHMsICZsb2NhbHMpKQorICAgICAgICAmc291cmNlLCAmZ2xvYmFscywgJmxvY2FscykpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2V4ZWNfaW1wbChtb2R1bGUsIHNvdXJjZSwgZ2xvYmFscywgbG9jYWxzKTsKIAogZXhpdDoKQEAgLTMyMSw4ICszMjgsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaGFzYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9oYXNhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtMzY2LDggKzM3NCw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJzZXRhdHRyIiwKICAgICAgICAgMywgMywKLSAgICAgICAgJm9iaiwgJm5hbWUsICZ2YWx1ZSkpCisgICAgICAgICZvYmosICZuYW1lLCAmdmFsdWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9zZXRhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUsIHZhbHVlKTsKIAogZXhpdDoKQEAgLTM5Nyw4ICs0MDYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiZGVsYXR0ciIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZuYW1lKSkKKyAgICAgICAgJm9iaiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9kZWxhdHRyX2ltcGwobW9kdWxlLCBvYmosIG5hbWUpOwogCiBleGl0OgpAQCAtNTA2LDggKzUxNiw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJwb3ciLAogICAgICAgICAyLCAzLAotICAgICAgICAmeCwgJnksICZ6KSkKKyAgICAgICAgJngsICZ5LCAmeikpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3Bvd19pbXBsKG1vZHVsZSwgeCwgeSwgeik7CiAKIGV4aXQ6CkBAIC01NDAsOCArNTUxLDkgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlucHV0IiwKICAgICAgICAgMCwgMSwKLSAgICAgICAgJnByb21wdCkpCisgICAgICAgICZwcm9tcHQpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pbnB1dF9pbXBsKG1vZHVsZSwgcHJvbXB0KTsKIAogZXhpdDoKQEAgLTU4NCw4ICs1OTYsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAic3VtIiwKICAgICAgICAgMSwgMiwKLSAgICAgICAgJml0ZXJhYmxlLCAmc3RhcnQpKQorICAgICAgICAmaXRlcmFibGUsICZzdGFydCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX3N1bV9pbXBsKG1vZHVsZSwgaXRlcmFibGUsIHN0YXJ0KTsKIAogZXhpdDoKQEAgLTYxOCw4ICs2MzEsOSBAQAogCiAgICAgaWYgKCFQeUFyZ19VbnBhY2tUdXBsZShhcmdzLCAiaXNpbnN0YW5jZSIsCiAgICAgICAgIDIsIDIsCi0gICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpCisgICAgICAgICZvYmosICZjbGFzc19vcl90dXBsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBidWlsdGluX2lzaW5zdGFuY2VfaW1wbChtb2R1bGUsIG9iaiwgY2xhc3Nfb3JfdHVwbGUpOwogCiBleGl0OgpAQCAtNjUyLDExICs2NjYsMTIgQEAKIAogICAgIGlmICghUHlBcmdfVW5wYWNrVHVwbGUoYXJncywgImlzc3ViY2xhc3MiLAogICAgICAgICAyLCAyLAotICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKQorICAgICAgICAmY2xzLCAmY2xhc3Nfb3JfdHVwbGUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gYnVpbHRpbl9pc3N1YmNsYXNzX2ltcGwobW9kdWxlLCBjbHMsIGNsYXNzX29yX3R1cGxlKTsKIAogZXhpdDoKICAgICByZXR1cm4gcmV0dXJuX3ZhbHVlOwogfQotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwMzEyNzBiNjRjNzk0YjggaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTYzNDgzZGViNzU4MDVmN2MgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oIGIvUHl0aG9uL2NsaW5pYy9pbXBvcnQuYy5oCmluZGV4IDA1ZDc5YWMuLmIzNDYwYjAgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jbGluaWMvaW1wb3J0LmMuaAorKysgYi9QeXRob24vY2xpbmljL2ltcG9ydC5jLmgKQEAgLTg5LDggKzg5LDkgQEAKICAgICBQeU9iamVjdCAqcGF0aDsKIAogICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZShhcmdzLCAiTyFVOl9maXhfY29fZmlsZW5hbWUiLAotICAgICAgICAmUHlDb2RlX1R5cGUsICZjb2RlLCAmcGF0aCkpCisgICAgICAgICZQeUNvZGVfVHlwZSwgJmNvZGUsICZwYXRoKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfX2ZpeF9jb19maWxlbmFtZV9pbXBsKG1vZHVsZSwgY29kZSwgcGF0aCk7CiAKIGV4aXQ6CkBAIC0xNDIsOCArMTQzLDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppbml0X2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aW5pdF9mcm96ZW4iLCAmbmFtZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2luaXRfZnJvemVuX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTE2OCw4ICsxNzAsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmdldF9mcm96ZW5fb2JqZWN0IiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTpnZXRfZnJvemVuX29iamVjdCIsICZuYW1lKSkgewogICAgICAgICBnb3RvIGV4aXQ7CisgICAgfQogICAgIHJldHVybl92YWx1ZSA9IF9pbXBfZ2V0X2Zyb3plbl9vYmplY3RfaW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMTk0LDggKzE5Nyw5IEBACiAgICAgUHlPYmplY3QgKnJldHVybl92YWx1ZSA9IE5VTEw7CiAgICAgUHlPYmplY3QgKm5hbWU7CiAKLSAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuX3BhY2thZ2UiLCAmbmFtZSkpCisgICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbl9wYWNrYWdlIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5fcGFja2FnZV9pbXBsKG1vZHVsZSwgbmFtZSk7CiAKIGV4aXQ6CkBAIC0yMjAsOCArMjI0LDkgQEAKICAgICBQeU9iamVjdCAqcmV0dXJuX3ZhbHVlID0gTlVMTDsKICAgICBQeU9iamVjdCAqbmFtZTsKIAotICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKQorICAgIGlmICghUHlBcmdfUGFyc2UoYXJnLCAiVTppc19idWlsdGluIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19idWlsdGluX2ltcGwobW9kdWxlLCBuYW1lKTsKIAogZXhpdDoKQEAgLTI0Niw4ICsyNTEsOSBAQAogICAgIFB5T2JqZWN0ICpyZXR1cm5fdmFsdWUgPSBOVUxMOwogICAgIFB5T2JqZWN0ICpuYW1lOwogCi0gICAgaWYgKCFQeUFyZ19QYXJzZShhcmcsICJVOmlzX2Zyb3plbiIsICZuYW1lKSkKKyAgICBpZiAoIVB5QXJnX1BhcnNlKGFyZywgIlU6aXNfZnJvemVuIiwgJm5hbWUpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gX2ltcF9pc19mcm96ZW5faW1wbChtb2R1bGUsIG5hbWUpOwogCiBleGl0OgpAQCAtMjc3LDggKzI4Myw5IEBACiAKICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJjcmVhdGVfZHluYW1pYyIsCiAgICAgICAgIDEsIDIsCi0gICAgICAgICZzcGVjLCAmZmlsZSkpCisgICAgICAgICZzcGVjLCAmZmlsZSkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBfaW1wX2NyZWF0ZV9keW5hbWljX2ltcGwobW9kdWxlLCBzcGVjLCBmaWxlKTsKIAogZXhpdDoKQEAgLTMwOCw4ICszMTUsOSBAQAogICAgIGludCBfcmV0dXJuX3ZhbHVlOwogCiAgICAgX3JldHVybl92YWx1ZSA9IF9pbXBfZXhlY19keW5hbWljX2ltcGwobW9kdWxlLCBtb2QpOwotICAgIGlmICgoX3JldHVybl92YWx1ZSA9PSAtMSkgJiYgUHlFcnJfT2NjdXJyZWQoKSkKKyAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpIHsKICAgICAgICAgZ290byBleGl0OworICAgIH0KICAgICByZXR1cm5fdmFsdWUgPSBQeUxvbmdfRnJvbUxvbmcoKGxvbmcpX3JldHVybl92YWx1ZSk7CiAKIGV4aXQ6CkBAIC0zMzcsOCArMzQ1LDkgQEAKICAgICBpbnQgX3JldHVybl92YWx1ZTsKIAogICAgIF9yZXR1cm5fdmFsdWUgPSBfaW1wX2V4ZWNfYnVpbHRpbl9pbXBsKG1vZHVsZSwgbW9kKTsKLSAgICBpZiAoKF9yZXR1cm5fdmFsdWUgPT0gLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgaWYgKChfcmV0dXJuX3ZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKSB7CiAgICAgICAgIGdvdG8gZXhpdDsKKyAgICB9CiAgICAgcmV0dXJuX3ZhbHVlID0gUHlMb25nX0Zyb21Mb25nKChsb25nKV9yZXR1cm5fdmFsdWUpOwogCiBleGl0OgpAQCAtMzUyLDQgKzM2MSw0IEBACiAjaWZuZGVmIF9JTVBfRVhFQ19EWU5BTUlDX01FVEhPRERFRgogICAgICNkZWZpbmUgX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGCiAjZW5kaWYgLyogIWRlZmluZWQoX0lNUF9FWEVDX0RZTkFNSUNfTUVUSE9EREVGKSAqLwotLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PTkwYWQ2ZTU4MzNlNjE3MGQgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLworLypbY2xpbmljIGVuZCBnZW5lcmF0ZWQgY29kZTogb3V0cHV0PWQyNGQ3ZjczNzAyYTkwN2YgaW5wdXQ9YTkwNDkwNTQwMTNhMWI3N10qLwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2NvbXBpbGUuYyBiL1B5dGhvbi9jb21waWxlLmMKaW5kZXggOTNmNDdlMC4uYzBjODFlMSAxMDA2NDQKLS0tIGEvUHl0aG9uL2NvbXBpbGUuYworKysgYi9QeXRob24vY29tcGlsZS5jCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiY29kZS5oIgogI2luY2x1ZGUgInN5bXRhYmxlLmgiCiAjaW5jbHVkZSAib3Bjb2RlLmgiCisjaW5jbHVkZSAid29yZGNvZGVfaGVscGVycy5oIgogCiAjZGVmaW5lIERFRkFVTFRfQkxPQ0tfU0laRSAxNgogI2RlZmluZSBERUZBVUxUX0JMT0NLUyA4CkBAIC00Myw3ICs0NCw2IEBACiBzdHJ1Y3QgaW5zdHIgewogICAgIHVuc2lnbmVkIGlfamFicyA6IDE7CiAgICAgdW5zaWduZWQgaV9qcmVsIDogMTsKLSAgICB1bnNpZ25lZCBpX2hhc2FyZyA6IDE7CiAgICAgdW5zaWduZWQgY2hhciBpX29wY29kZTsKICAgICBpbnQgaV9vcGFyZzsKICAgICBzdHJ1Y3QgYmFzaWNibG9ja18gKmlfdGFyZ2V0OyAvKiB0YXJnZXQgYmxvY2sgKGlmIGp1bXAgaW5zdHJ1Y3Rpb24pICovCkBAIC0xNzEsNyArMTcxLDYgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfbyhzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeU9iamVjdCAqLCBQeU9iamVjdCAqKTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaShzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBQeV9zc2l6ZV90KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYWRkb3BfaihzdHJ1Y3QgY29tcGlsZXIgKiwgaW50LCBiYXNpY2Jsb2NrICosIGludCk7Ci1zdGF0aWMgYmFzaWNibG9jayAqY29tcGlsZXJfdXNlX25ld19ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKik7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2Vycm9yKHN0cnVjdCBjb21waWxlciAqLCBjb25zdCBjaGFyICopOwogc3RhdGljIGludCBjb21waWxlcl9uYW1lb3Aoc3RydWN0IGNvbXBpbGVyICosIGlkZW50aWZpZXIsIGV4cHJfY29udGV4dF90eSk7CiAKQEAgLTE4MCw2ICsxNzksNyBAQAogc3RhdGljIGludCBjb21waWxlcl92aXNpdF9rZXl3b3JkKHN0cnVjdCBjb21waWxlciAqLCBrZXl3b3JkX3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfdmlzaXRfZXhwcihzdHJ1Y3QgY29tcGlsZXIgKiwgZXhwcl90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX2F1Z2Fzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CitzdGF0aWMgaW50IGNvbXBpbGVyX2FubmFzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSk7CiBzdGF0aWMgaW50IGNvbXBpbGVyX3Zpc2l0X3NsaWNlKHN0cnVjdCBjb21waWxlciAqLCBzbGljZV90eSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl9jb250ZXh0X3R5KTsKIApAQCAtMTk2LDEyICsxOTYsMjIgQEAKIHN0YXRpYyBpbnQgY29tcGlsZXJfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfd2l0aChzdHJ1Y3QgY29tcGlsZXIgKiwgc3RtdF90eSwgaW50KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfYXN5bmNfZm9yKHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKLXN0YXRpYyBpbnQgY29tcGlsZXJfY2FsbF9oZWxwZXIoc3RydWN0IGNvbXBpbGVyICpjLCBQeV9zc2l6ZV90IG4sCitzdGF0aWMgaW50IGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywgaW50IG4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqa2V5d29yZHMpOwogc3RhdGljIGludCBjb21waWxlcl90cnlfZXhjZXB0KHN0cnVjdCBjb21waWxlciAqLCBzdG10X3R5KTsKIHN0YXRpYyBpbnQgY29tcGlsZXJfc2V0X3F1YWxuYW1lKHN0cnVjdCBjb21waWxlciAqKTsKIAorc3RhdGljIGludCBjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKTsKKworc3RhdGljIGludCBjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IGNvbXBpbGVyICpjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgaW50IGdlbl9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhwcl90eSBlbHQsIGV4cHJfdHkgdmFsLCBpbnQgdHlwZSk7CisKIHN0YXRpYyBQeUNvZGVPYmplY3QgKmFzc2VtYmxlKHN0cnVjdCBjb21waWxlciAqLCBpbnQgYWRkTm9uZSk7CiBzdGF0aWMgUHlPYmplY3QgKl9fZG9jX187CiAKQEAgLTQ3Nyw5ICs0ODcsOSBAQAogewogICAgIGJhc2ljYmxvY2sgKmJsb2NrOwogICAgIGZvciAoYmxvY2sgPSB1LT51X2Jsb2NrczsgYmxvY2sgIT0gTlVMTDsgYmxvY2sgPSBibG9jay0+Yl9saXN0KSB7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhjYmNiY2JjYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhmYmZiZmJmYik7Ci0gICAgICAgIGFzc2VydCgodm9pZCAqKWJsb2NrICE9ICh2b2lkICopMHhkYmRiZGJkYik7CisgICAgICAgIGFzc2VydCgodWludHB0cl90KWJsb2NrICE9IDB4Y2JjYmNiY2JVKTsKKyAgICAgICAgYXNzZXJ0KCh1aW50cHRyX3QpYmxvY2sgIT0gMHhmYmZiZmJmYlUpOworICAgICAgICBhc3NlcnQoKHVpbnRwdHJfdClibG9jayAhPSAweGRiZGJkYmRiVSk7CiAgICAgICAgIGlmIChibG9jay0+Yl9pbnN0ciAhPSBOVUxMKSB7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaWFsbG9jID4gMCk7CiAgICAgICAgICAgICBhc3NlcnQoYmxvY2stPmJfaXVzZWQgPiAwKTsKQEAgLTUyMyw2ICs1MzMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IHNjb3BlX3R5cGUsIHZvaWQgKmtleSwgaW50IGxpbmVubykKIHsKICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCAqdTsKKyAgICBiYXNpY2Jsb2NrICpibG9jazsKIAogICAgIHUgPSAoc3RydWN0IGNvbXBpbGVyX3VuaXQgKilQeU9iamVjdF9NYWxsb2Moc2l6ZW9mKAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgY29tcGlsZXJfdW5pdCkpOwpAQCAtNjIwLDggKzYzMSwxMSBAQAogICAgIGMtPnUgPSB1OwogCiAgICAgYy0+Y19uZXN0bGV2ZWwrKzsKLSAgICBpZiAoY29tcGlsZXJfdXNlX25ld19ibG9jayhjKSA9PSBOVUxMKQorCisgICAgYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgaWYgKGJsb2NrID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOworICAgIGMtPnUtPnVfY3VyYmxvY2sgPSBibG9jazsKIAogICAgIGlmICh1LT51X3Njb3BlX3R5cGUgIT0gQ09NUElMRVJfU0NPUEVfTU9EVUxFKSB7CiAgICAgICAgIGlmICghY29tcGlsZXJfc2V0X3F1YWxuYW1lKGMpKQpAQCAtNzMxLDYgKzc0NSw3IEBACiAgICAgcmV0dXJuIDE7CiB9CiAKKwogLyogQWxsb2NhdGUgYSBuZXcgYmxvY2sgYW5kIHJldHVybiBhIHBvaW50ZXIgdG8gaXQuCiAgICBSZXR1cm5zIE5VTEwgb24gZXJyb3IuCiAqLwpAQCAtNzU1LDE2ICs3NzAsNiBAQAogfQogCiBzdGF0aWMgYmFzaWNibG9jayAqCi1jb21waWxlcl91c2VfbmV3X2Jsb2NrKHN0cnVjdCBjb21waWxlciAqYykKLXsKLSAgICBiYXNpY2Jsb2NrICpibG9jayA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKLSAgICBpZiAoYmxvY2sgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgYy0+dS0+dV9jdXJibG9jayA9IGJsb2NrOwotICAgIHJldHVybiBibG9jazsKLX0KLQotc3RhdGljIGJhc2ljYmxvY2sgKgogY29tcGlsZXJfbmV4dF9ibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMpCiB7CiAgICAgYmFzaWNibG9jayAqYmxvY2sgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CkBAIC04MTAsNyArODE1LDcgQEAKICAgICAgICAgb2xkc2l6ZSA9IGItPmJfaWFsbG9jICogc2l6ZW9mKHN0cnVjdCBpbnN0cik7CiAgICAgICAgIG5ld3NpemUgPSBvbGRzaXplIDw8IDE7CiAKLSAgICAgICAgaWYgKG9sZHNpemUgPiAoUFlfU0laRV9NQVggPj4gMSkpIHsKKyAgICAgICAgaWYgKG9sZHNpemUgPiAoU0laRV9NQVggPj4gMSkpIHsKICAgICAgICAgICAgIFB5RXJyX05vTWVtb3J5KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KQEAgLTkzOSw2ICs5NDQsOCBAQAogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBjYXNlIElNUE9SVF9TVEFSOgogICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICBjYXNlIFNFVFVQX0FOTk9UQVRJT05TOgorICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGNhc2UgWUlFTERfVkFMVUU6CiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY2FzZSBZSUVMRF9GUk9NOgpAQCAtOTc2LDE2ICs5ODMsMTkgQEAKICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgY2FzZSBCVUlMRF9MSVNUOgogICAgICAgICBjYXNlIEJVSUxEX1NFVDoKKyAgICAgICAgY2FzZSBCVUlMRF9TVFJJTkc6CiAgICAgICAgICAgICByZXR1cm4gMS1vcGFyZzsKICAgICAgICAgY2FzZSBCVUlMRF9MSVNUX1VOUEFDSzoKICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRV9VTlBBQ0s6CisgICAgICAgIGNhc2UgQlVJTERfVFVQTEVfVU5QQUNLX1dJVEhfQ0FMTDoKICAgICAgICAgY2FzZSBCVUlMRF9TRVRfVU5QQUNLOgogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0s6Ci0gICAgICAgICAgICByZXR1cm4gMSAtIG9wYXJnOwogICAgICAgICBjYXNlIEJVSUxEX01BUF9VTlBBQ0tfV0lUSF9DQUxMOgotICAgICAgICAgICAgcmV0dXJuIDEgLSAob3BhcmcgJiAweEZGKTsKKyAgICAgICAgICAgIHJldHVybiAxIC0gb3Bhcmc7CiAgICAgICAgIGNhc2UgQlVJTERfTUFQOgogICAgICAgICAgICAgcmV0dXJuIDEgLSAyKm9wYXJnOworICAgICAgICBjYXNlIEJVSUxEX0NPTlNUX0tFWV9NQVA6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIExPQURfQVRUUjoKICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICBjYXNlIENPTVBBUkVfT1A6CkBAIC0xMDIzLDIyICsxMDMzLDIwIEBACiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIGNhc2UgREVMRVRFX0ZBU1Q6CiAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgY2FzZSBTVE9SRV9BTk5PVEFUSU9OOgorICAgICAgICAgICAgcmV0dXJuIC0xOwogCiAgICAgICAgIGNhc2UgUkFJU0VfVkFSQVJHUzoKICAgICAgICAgICAgIHJldHVybiAtb3Bhcmc7Ci0jZGVmaW5lIE5BUkdTKG8pICgoKG8pICUgMjU2KSArIDIqKCgobykgLyAyNTYpICUgMjU2KSkKICAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyk7Ci0gICAgICAgIGNhc2UgQ0FMTF9GVU5DVElPTl9WQVI6CisgICAgICAgICAgICByZXR1cm4gLW9wYXJnOwogICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fS1c6Ci0gICAgICAgICAgICByZXR1cm4gLU5BUkdTKG9wYXJnKS0xOwotICAgICAgICBjYXNlIENBTExfRlVOQ1RJT05fVkFSX0tXOgotICAgICAgICAgICAgcmV0dXJuIC1OQVJHUyhvcGFyZyktMjsKKyAgICAgICAgICAgIHJldHVybiAtb3BhcmctMTsKKyAgICAgICAgY2FzZSBDQUxMX0ZVTkNUSU9OX0VYOgorICAgICAgICAgICAgcmV0dXJuIC0gKChvcGFyZyAmIDB4MDEpICE9IDApIC0gKChvcGFyZyAmIDB4MDIpICE9IDApOwogICAgICAgICBjYXNlIE1BS0VfRlVOQ1RJT046Ci0gICAgICAgICAgICByZXR1cm4gLTEgLU5BUkdTKG9wYXJnKSAtICgob3BhcmcgPj4gMTYpICYgMHhmZmZmKTsKLSAgICAgICAgY2FzZSBNQUtFX0NMT1NVUkU6Ci0gICAgICAgICAgICByZXR1cm4gLTIgLSBOQVJHUyhvcGFyZykgLSAoKG9wYXJnID4+IDE2KSAmIDB4ZmZmZik7Ci0jdW5kZWYgTkFSR1MKKyAgICAgICAgICAgIHJldHVybiAtMSAtICgob3BhcmcgJiAweDAxKSAhPSAwKSAtICgob3BhcmcgJiAweDAyKSAhPSAwKSAtCisgICAgICAgICAgICAgICAgKChvcGFyZyAmIDB4MDQpICE9IDApIC0gKChvcGFyZyAmIDB4MDgpICE9IDApOwogICAgICAgICBjYXNlIEJVSUxEX1NMSUNFOgogICAgICAgICAgICAgaWYgKG9wYXJnID09IDMpCiAgICAgICAgICAgICAgICAgcmV0dXJuIC0yOwpAQCAtMTA2Niw2ICsxMDc0LDEwIEBACiAgICAgICAgICAgICByZXR1cm4gMTsKICAgICAgICAgY2FzZSBHRVRfWUlFTERfRlJPTV9JVEVSOgogICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGNhc2UgRk9STUFUX1ZBTFVFOgorICAgICAgICAgICAgLyogSWYgdGhlcmUncyBhIGZtdF9zcGVjIG9uIHRoZSBzdGFjaywgd2UgZ28gZnJvbSAyLT4xLAorICAgICAgICAgICAgICAgZWxzZSAxLT4xLiAqLworICAgICAgICAgICAgcmV0dXJuIChvcGFyZyAmIEZWU19NQVNLKSA9PSBGVlNfSEFWRV9TUEVDID8gLTEgOiAwOwogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgICAgcmV0dXJuIFBZX0lOVkFMSURfU1RBQ0tfRUZGRUNUOwogICAgIH0KQEAgLTEwODIsMTMgKzEwOTQsMTQgQEAKICAgICBiYXNpY2Jsb2NrICpiOwogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOworICAgIGFzc2VydCghSEFTX0FSRyhvcGNvZGUpKTsKICAgICBvZmYgPSBjb21waWxlcl9uZXh0X2luc3RyKGMsIGMtPnUtPnVfY3VyYmxvY2spOwogICAgIGlmIChvZmYgPCAwKQogICAgICAgICByZXR1cm4gMDsKICAgICBiID0gYy0+dS0+dV9jdXJibG9jazsKICAgICBpID0gJmItPmJfaW5zdHJbb2ZmXTsKICAgICBpLT5pX29wY29kZSA9IG9wY29kZTsKLSAgICBpLT5pX2hhc2FyZyA9IDA7CisgICAgaS0+aV9vcGFyZyA9IDA7CiAgICAgaWYgKG9wY29kZSA9PSBSRVRVUk5fVkFMVUUpCiAgICAgICAgIGItPmJfcmV0dXJuID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CkBAIC0xMTY1LDEwICsxMTc4LDE1IEBACiAgICAgc3RydWN0IGluc3RyICppOwogICAgIGludCBvZmY7CiAKLSAgICAvKiBJbnRlZ2VyIGFyZ3VtZW50cyBhcmUgbGltaXQgdG8gMTYtYml0LiBUaGVyZSBpcyBhbiBleHRlbnNpb24gZm9yIDMyLWJpdAotICAgICAgIGludGVnZXIgYXJndW1lbnRzLiAqLwotICAgIGFzc2VydCgoLTIxNDc0ODM2NDctMSkgPD0gb3BhcmcpOwotICAgIGFzc2VydChvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKKyAgICAvKiBvcGFyZyB2YWx1ZSBpcyB1bnNpZ25lZCwgYnV0IGEgc2lnbmVkIEMgaW50IGlzIHVzdWFsbHkgdXNlZCB0byBzdG9yZQorICAgICAgIGl0IGluIHRoZSBDIGNvZGUgKGxpa2UgUHl0aG9uL2NldmFsLmMpLgorCisgICAgICAgTGltaXQgdG8gMzItYml0IHNpZ25lZCBDIGludCAocmF0aGVyIHRoYW4gSU5UX01BWCkgZm9yIHBvcnRhYmlsaXR5LgorCisgICAgICAgVGhlIGFyZ3VtZW50IG9mIGEgY29uY3JldGUgYnl0ZWNvZGUgaW5zdHJ1Y3Rpb24gaXMgbGltaXRlZCB0byA4LWJpdC4KKyAgICAgICBFWFRFTkRFRF9BUkcgaXMgdXNlZCBmb3IgMTYsIDI0LCBhbmQgMzItYml0IGFyZ3VtZW50cy4gKi8KKyAgICBhc3NlcnQoSEFTX0FSRyhvcGNvZGUpKTsKKyAgICBhc3NlcnQoMCA8PSBvcGFyZyAmJiBvcGFyZyA8PSAyMTQ3NDgzNjQ3KTsKIAogICAgIG9mZiA9IGNvbXBpbGVyX25leHRfaW5zdHIoYywgYy0+dS0+dV9jdXJibG9jayk7CiAgICAgaWYgKG9mZiA8IDApCkBAIC0xMTc2LDcgKzExOTQsNiBAQAogICAgIGkgPSAmYy0+dS0+dV9jdXJibG9jay0+Yl9pbnN0cltvZmZdOwogICAgIGktPmlfb3Bjb2RlID0gb3Bjb2RlOwogICAgIGktPmlfb3BhcmcgPSBQeV9TQUZFX0RPV05DQVNUKG9wYXJnLCBQeV9zc2l6ZV90LCBpbnQpOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBjb21waWxlcl9zZXRfbGluZW5vKGMsIG9mZik7CiAgICAgcmV0dXJuIDE7CiB9CkBAIC0xMTg3LDYgKzEyMDQsNyBAQAogICAgIHN0cnVjdCBpbnN0ciAqaTsKICAgICBpbnQgb2ZmOwogCisgICAgYXNzZXJ0KEhBU19BUkcob3Bjb2RlKSk7CiAgICAgYXNzZXJ0KGIgIT0gTlVMTCk7CiAgICAgb2ZmID0gY29tcGlsZXJfbmV4dF9pbnN0cihjLCBjLT51LT51X2N1cmJsb2NrKTsKICAgICBpZiAob2ZmIDwgMCkKQEAgLTExOTQsNyArMTIxMiw2IEBACiAgICAgaSA9ICZjLT51LT51X2N1cmJsb2NrLT5iX2luc3RyW29mZl07CiAgICAgaS0+aV9vcGNvZGUgPSBvcGNvZGU7CiAgICAgaS0+aV90YXJnZXQgPSBiOwotICAgIGktPmlfaGFzYXJnID0gMTsKICAgICBpZiAoYWJzb2x1dGUpCiAgICAgICAgIGktPmlfamFicyA9IDE7CiAgICAgZWxzZQpAQCAtMTIwMywyMiArMTIyMCwxMiBAQAogICAgIHJldHVybiAxOwogfQogCi0vKiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiBORVdfQkxPQ0sgYW5kIE5FWFRfQkxPQ0sgaXMgc3VidGxlLiAgKEknZAotICAgbGlrZSB0byBmaW5kIGJldHRlciBuYW1lcy4pICBORVdfQkxPQ0soKSBjcmVhdGVzIGEgbmV3IGJsb2NrIGFuZCBzZXRzCi0gICBpdCBhcyB0aGUgY3VycmVudCBibG9jay4gIE5FWFRfQkxPQ0soKSBhbHNvIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcAotICAgZnJvbSB0aGUgY3VycmVudCBibG9jayB0byB0aGUgbmV3IGJsb2NrLgorLyogTkVYVF9CTE9DSygpIGNyZWF0ZXMgYW4gaW1wbGljaXQganVtcCBmcm9tIHRoZSBjdXJyZW50IGJsb2NrCisgICB0byB0aGUgbmV3IGJsb2NrLgorCisgICBUaGUgcmV0dXJucyBpbnNpZGUgdGhpcyBtYWNybyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKKyAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiBMb2NhbCBvYmplY3RzIHNob3VsZCB1c2UgdGhlIGFyZW5hLgogKi8KLQotLyogVGhlIHJldHVybnMgaW5zaWRlIHRoZXNlIG1hY3JvcyBtYWtlIGl0IGltcG9zc2libGUgdG8gZGVjcmVmIG9iamVjdHMKLSAgIGNyZWF0ZWQgaW4gdGhlIGxvY2FsIGZ1bmN0aW9uLiAgTG9jYWwgb2JqZWN0cyBzaG91bGQgdXNlIHRoZSBhcmVuYS4KLSovCi0KLQotI2RlZmluZSBORVdfQkxPQ0soQykgeyBcCi0gICAgaWYgKGNvbXBpbGVyX3VzZV9uZXdfYmxvY2soKEMpKSA9PSBOVUxMKSBcCi0gICAgICAgIHJldHVybiAwOyBcCi19Ci0KICNkZWZpbmUgTkVYVF9CTE9DSyhDKSB7IFwKICAgICBpZiAoY29tcGlsZXJfbmV4dF9ibG9jaygoQykpID09IE5VTEwpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEyNDEsNiArMTI0OCwxNSBAQAogICAgICAgICByZXR1cm4gMDsgXAogfQogCisvKiBTYW1lIGFzIEFERE9QX08sIGJ1dCBzdGVhbHMgYSByZWZlcmVuY2UuICovCisjZGVmaW5lIEFERE9QX04oQywgT1AsIE8sIFRZUEUpIHsgXAorICAgIGlmICghY29tcGlsZXJfYWRkb3BfbygoQyksIChPUCksIChDKS0+dS0+dV8gIyMgVFlQRSwgKE8pKSkgeyBcCisgICAgICAgIFB5X0RFQ1JFRigoTykpOyBcCisgICAgICAgIHJldHVybiAwOyBcCisgICAgfSBcCisgICAgUHlfREVDUkVGKChPKSk7IFwKK30KKwogI2RlZmluZSBBRERPUF9OQU1FKEMsIE9QLCBPLCBUWVBFKSB7IFwKICAgICBpZiAoIWNvbXBpbGVyX2FkZG9wX25hbWUoKEMpLCAoT1ApLCAoQyktPnUtPnVfICMjIFRZUEUsIChPKSkpIFwKICAgICAgICAgcmV0dXJuIDA7IFwKQEAgLTEzMDksMTAgKzEzMjUsMTEwIEBACiB7CiAgICAgaWYgKHMtPmtpbmQgIT0gRXhwcl9raW5kKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gcy0+di5FeHByLnZhbHVlLT5raW5kID09IFN0cl9raW5kOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gU3RyX2tpbmQpCisgICAgICAgIHJldHVybiAxOworICAgIGlmIChzLT52LkV4cHIudmFsdWUtPmtpbmQgPT0gQ29uc3RhbnRfa2luZCkKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9DaGVja0V4YWN0KHMtPnYuRXhwci52YWx1ZS0+di5Db25zdGFudC52YWx1ZSk7CisgICAgcmV0dXJuIDA7CiB9CiAKLS8qIENvbXBpbGUgYSBzZXF1ZW5jZSBvZiBzdGF0ZW1lbnRzLCBjaGVja2luZyBmb3IgYSBkb2NzdHJpbmcuICovCitzdGF0aWMgaW50Citpc19jb25zdChleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgIGNhc2UgTnVtX2tpbmQ6CisgICAgY2FzZSBTdHJfa2luZDoKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgIGNhc2UgTmFtZUNvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiAxOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiAwOworICAgIH0KK30KKworc3RhdGljIFB5T2JqZWN0ICoKK2dldF9jb25zdF92YWx1ZShleHByX3R5IGUpCit7CisgICAgc3dpdGNoIChlLT5raW5kKSB7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5Db25zdGFudC52YWx1ZTsKKyAgICBjYXNlIE51bV9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5OdW0ubjsKKyAgICBjYXNlIFN0cl9raW5kOgorICAgICAgICByZXR1cm4gZS0+di5TdHIuczsKKyAgICBjYXNlIEJ5dGVzX2tpbmQ6CisgICAgICAgIHJldHVybiBlLT52LkJ5dGVzLnM7CisgICAgY2FzZSBFbGxpcHNpc19raW5kOgorICAgICAgICByZXR1cm4gUHlfRWxsaXBzaXM7CisgICAgY2FzZSBOYW1lQ29uc3RhbnRfa2luZDoKKyAgICAgICAgcmV0dXJuIGUtPnYuTmFtZUNvbnN0YW50LnZhbHVlOworICAgIGRlZmF1bHQ6CisgICAgICAgIGFzc2VydCghaXNfY29uc3QoZSkpOworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9Cit9CisKKy8qIFNlYXJjaCBpZiB2YXJpYWJsZSBhbm5vdGF0aW9ucyBhcmUgcHJlc2VudCBzdGF0aWNhbGx5IGluIGEgYmxvY2suICovCisKK3N0YXRpYyBpbnQKK2ZpbmRfYW5uKGFzZGxfc2VxICpzdG10cykKK3sKKyAgICBpbnQgaSwgaiwgcmVzID0gMDsKKyAgICBzdG10X3R5IHN0OworCisgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihzdG10cyk7IGkrKykgeworICAgICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgaSk7CisgICAgICAgIHN3aXRjaCAoc3QtPmtpbmQpIHsKKyAgICAgICAgY2FzZSBBbm5Bc3NpZ25fa2luZDoKKyAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICBjYXNlIEZvcl9raW5kOgorICAgICAgICAgICAgcmVzID0gZmluZF9hbm4oc3QtPnYuRm9yLmJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Gb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEFzeW5jRm9yX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5Bc3luY0Zvci5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuQXN5bmNGb3Iub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdoaWxlX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5XaGlsZS5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuV2hpbGUub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIElmX2tpbmQ6CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5JZi5ib2R5KSB8fAorICAgICAgICAgICAgICAgICAgZmluZF9hbm4oc3QtPnYuSWYub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFdpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LldpdGguYm9keSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBBc3luY1dpdGhfa2luZDoKKyAgICAgICAgICAgIHJlcyA9IGZpbmRfYW5uKHN0LT52LkFzeW5jV2l0aC5ib2R5KTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIFRyeV9raW5kOgorICAgICAgICAgICAgZm9yIChqID0gMDsgaiA8IGFzZGxfc2VxX0xFTihzdC0+di5UcnkuaGFuZGxlcnMpOyBqKyspIHsKKyAgICAgICAgICAgICAgICBleGNlcHRoYW5kbGVyX3R5IGhhbmRsZXIgPSAoZXhjZXB0aGFuZGxlcl90eSlhc2RsX3NlcV9HRVQoCisgICAgICAgICAgICAgICAgICAgIHN0LT52LlRyeS5oYW5kbGVycywgaik7CisgICAgICAgICAgICAgICAgaWYgKGZpbmRfYW5uKGhhbmRsZXItPnYuRXhjZXB0SGFuZGxlci5ib2R5KSkgeworICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXMgPSBmaW5kX2FubihzdC0+di5UcnkuYm9keSkgfHwKKyAgICAgICAgICAgICAgICAgIGZpbmRfYW5uKHN0LT52LlRyeS5maW5hbGJvZHkpIHx8CisgICAgICAgICAgICAgICAgICBmaW5kX2FubihzdC0+di5Ucnkub3JlbHNlKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmVzID0gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAocmVzKSB7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KKyAgICByZXR1cm4gcmVzOworfQorCisvKiBDb21waWxlIGEgc2VxdWVuY2Ugb2Ygc3RhdGVtZW50cywgY2hlY2tpbmcgZm9yIGEgZG9jc3RyaW5nCisgICBhbmQgZm9yIGFubm90YXRpb25zLiAqLwogCiBzdGF0aWMgaW50CiBjb21waWxlcl9ib2R5KHN0cnVjdCBjb21waWxlciAqYywgYXNkbF9zZXEgKnN0bXRzKQpAQCAtMTMyMCw2ICsxNDM2LDE5IEBACiAgICAgaW50IGkgPSAwOwogICAgIHN0bXRfdHkgc3Q7CiAKKyAgICAvKiBTZXQgY3VycmVudCBsaW5lIG51bWJlciB0byB0aGUgbGluZSBudW1iZXIgb2YgZmlyc3Qgc3RhdGVtZW50LgorICAgICAgIFRoaXMgd2F5IGxpbmUgbnVtYmVyIGZvciBTRVRVUF9BTk5PVEFUSU9OUyB3aWxsIGFsd2F5cworICAgICAgIGNvaW5jaWRlIHdpdGggdGhlIGxpbmUgbnVtYmVyIG9mIGZpcnN0ICJyZWFsIiBzdGF0ZW1lbnQgaW4gbW9kdWxlLgorICAgICAgIElmIGJvZHkgaXMgZW1weSwgdGhlbiBsaW5lbm8gd2lsbCBiZSBzZXQgbGF0ZXIgaW4gYXNzZW1ibGUuICovCisgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgJiYKKyAgICAgICAgIWMtPnUtPnVfbGluZW5vICYmIGFzZGxfc2VxX0xFTihzdG10cykpIHsKKyAgICAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoc3RtdHMsIDApOworICAgICAgICBjLT51LT51X2xpbmVubyA9IHN0LT5saW5lbm87CisgICAgfQorICAgIC8qIEV2ZXJ5IGFubm90YXRlZCBjbGFzcyBhbmQgbW9kdWxlIHNob3VsZCBoYXZlIF9fYW5ub3RhdGlvbnNfXy4gKi8KKyAgICBpZiAoZmluZF9hbm4oc3RtdHMpKSB7CisgICAgICAgIEFERE9QKGMsIFNFVFVQX0FOTk9UQVRJT05TKTsKKyAgICB9CiAgICAgaWYgKCFhc2RsX3NlcV9MRU4oc3RtdHMpKQogICAgICAgICByZXR1cm4gMTsKICAgICBzdCA9IChzdG10X3R5KWFzZGxfc2VxX0dFVChzdG10cywgMCk7CkBAIC0xMzU3LDYgKzE0ODYsOSBAQAogICAgICAgICB9CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgSW50ZXJhY3RpdmVfa2luZDoKKyAgICAgICAgaWYgKGZpbmRfYW5uKG1vZC0+di5JbnRlcmFjdGl2ZS5ib2R5KSkgeworICAgICAgICAgICAgQURET1AoYywgU0VUVVBfQU5OT1RBVElPTlMpOworICAgICAgICB9CiAgICAgICAgIGMtPmNfaW50ZXJhY3RpdmUgPSAxOwogICAgICAgICBWSVNJVF9TRVFfSU5fU0NPUEUoYywgc3RtdCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbW9kLT52LkludGVyYWN0aXZlLmJvZHkpOwpAQCAtMTQyNiw1MyArMTU1OCw1MCBAQAogfQogCiBzdGF0aWMgaW50Ci1jb21waWxlcl9tYWtlX2Nsb3N1cmUoc3RydWN0IGNvbXBpbGVyICpjLCBQeUNvZGVPYmplY3QgKmNvLCBQeV9zc2l6ZV90IGFyZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKK2NvbXBpbGVyX21ha2VfY2xvc3VyZShzdHJ1Y3QgY29tcGlsZXIgKmMsIFB5Q29kZU9iamVjdCAqY28sIFB5X3NzaXplX3QgZmxhZ3MsIFB5T2JqZWN0ICpxdWFsbmFtZSkKIHsKICAgICBQeV9zc2l6ZV90IGksIGZyZWUgPSBQeUNvZGVfR2V0TnVtRnJlZShjbyk7CiAgICAgaWYgKHF1YWxuYW1lID09IE5VTEwpCiAgICAgICAgIHF1YWxuYW1lID0gY28tPmNvX25hbWU7CiAKLSAgICBpZiAoZnJlZSA9PSAwKSB7Ci0gICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgKFB5T2JqZWN0KiljbywgY29uc3RzKTsKLSAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBxdWFsbmFtZSwgY29uc3RzKTsKLSAgICAgICAgQURET1BfSShjLCBNQUtFX0ZVTkNUSU9OLCBhcmdzKTsKLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgfQotICAgIGZvciAoaSA9IDA7IGkgPCBmcmVlOyArK2kpIHsKLSAgICAgICAgLyogQnlwYXNzIGNvbV9hZGRvcF92YXJuYW1lIGJlY2F1c2UgaXQgd2lsbCBnZW5lcmF0ZQotICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgotICAgICAgICAqLwotICAgICAgICBQeU9iamVjdCAqbmFtZSA9IFB5VHVwbGVfR0VUX0lURU0oY28tPmNvX2ZyZWV2YXJzLCBpKTsKLSAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKKyAgICBpZiAoZnJlZSkgeworICAgICAgICBmb3IgKGkgPSAwOyBpIDwgZnJlZTsgKytpKSB7CisgICAgICAgICAgICAvKiBCeXBhc3MgY29tX2FkZG9wX3Zhcm5hbWUgYmVjYXVzZSBpdCB3aWxsIGdlbmVyYXRlCisgICAgICAgICAgICAgICBMT0FEX0RFUkVGIGJ1dCBMT0FEX0NMT1NVUkUgaXMgbmVlZGVkLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIFB5T2JqZWN0ICpuYW1lID0gUHlUdXBsZV9HRVRfSVRFTShjby0+Y29fZnJlZXZhcnMsIGkpOworICAgICAgICAgICAgaW50IGFyZywgcmVmdHlwZTsKIAotICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCi0gICAgICAgICAgIGZyZWUgdmFyaWFibGUgdGhhdCBoYXMgdGhlIHNhbWUgbmFtZSBhcyBhIG1ldGhvZCwKLSAgICAgICAgICAgdGhlIG5hbWUgd2lsbCBiZSBjb25zaWRlcmVkIGZyZWUgKmFuZCogbG9jYWwgaW4gdGhlCi0gICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCi0gICAgICAgICAgIHdlbGwgYXMgYnkgdGhlIG5vcm1hbCBuYW1lIGxvb29rdXAgbG9naWMuCi0gICAgICAgICovCi0gICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7Ci0gICAgICAgIGlmIChyZWZ0eXBlID09IENFTEwpCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfY2VsbHZhcnMsIG5hbWUpOwotICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCi0gICAgICAgICAgICBhcmcgPSBjb21waWxlcl9sb29rdXBfYXJnKGMtPnUtPnVfZnJlZXZhcnMsIG5hbWUpOwotICAgICAgICBpZiAoYXJnID09IC0xKSB7Ci0gICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKLSAgICAgICAgICAgICAgICAibG9va3VwICVzIGluICVzICVkICVkXG4iCi0gICAgICAgICAgICAgICAgImZyZWV2YXJzIG9mICVzOiAlc1xuIiwKLSAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAotICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoYy0+dS0+dV9uYW1lKSwKLSAgICAgICAgICAgICAgICByZWZ0eXBlLCBhcmcsCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCi0gICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChQeU9iamVjdF9SZXByKGNvLT5jb19mcmVldmFycykpKTsKLSAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImNvbXBpbGVyX21ha2VfY2xvc3VyZSgpIik7CisgICAgICAgICAgICAvKiBTcGVjaWFsIGNhc2U6IElmIGEgY2xhc3MgY29udGFpbnMgYSBtZXRob2Qgd2l0aCBhCisgICAgICAgICAgICAgICBmcmVlIHZhcmlhYmxlIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMgYSBtZXRob2QsCisgICAgICAgICAgICAgICB0aGUgbmFtZSB3aWxsIGJlIGNvbnNpZGVyZWQgZnJlZSAqYW5kKiBsb2NhbCBpbiB0aGUKKyAgICAgICAgICAgICAgIGNsYXNzLiAgSXQgc2hvdWxkIGJlIGhhbmRsZWQgYnkgdGhlIGNsb3N1cmUsIGFzCisgICAgICAgICAgICAgICB3ZWxsIGFzIGJ5IHRoZSBub3JtYWwgbmFtZSBsb29va3VwIGxvZ2ljLgorICAgICAgICAgICAgKi8KKyAgICAgICAgICAgIHJlZnR5cGUgPSBnZXRfcmVmX3R5cGUoYywgbmFtZSk7CisgICAgICAgICAgICBpZiAocmVmdHlwZSA9PSBDRUxMKQorICAgICAgICAgICAgICAgIGFyZyA9IGNvbXBpbGVyX2xvb2t1cF9hcmcoYy0+dS0+dV9jZWxsdmFycywgbmFtZSk7CisgICAgICAgICAgICBlbHNlIC8qIChyZWZ0eXBlID09IEZSRUUpICovCisgICAgICAgICAgICAgICAgYXJnID0gY29tcGlsZXJfbG9va3VwX2FyZyhjLT51LT51X2ZyZWV2YXJzLCBuYW1lKTsKKyAgICAgICAgICAgIGlmIChhcmcgPT0gLTEpIHsKKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwKKyAgICAgICAgICAgICAgICAgICAgImxvb2t1cCAlcyBpbiAlcyAlZCAlZFxuIgorICAgICAgICAgICAgICAgICAgICAiZnJlZXZhcnMgb2YgJXM6ICVzXG4iLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KFB5T2JqZWN0X1JlcHIobmFtZSkpLAorICAgICAgICAgICAgICAgICAgICBQeVVuaWNvZGVfQXNVVEY4KGMtPnUtPnVfbmFtZSksCisgICAgICAgICAgICAgICAgICAgIHJlZnR5cGUsIGFyZywKKyAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0FzVVRGOChjby0+Y29fbmFtZSksCisgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Bc1VURjgoUHlPYmplY3RfUmVwcihjby0+Y29fZnJlZXZhcnMpKSk7CisgICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiY29tcGlsZXJfbWFrZV9jbG9zdXJlKCkiKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOwogICAgICAgICB9Ci0gICAgICAgIEFERE9QX0koYywgTE9BRF9DTE9TVVJFLCBhcmcpOworICAgICAgICBmbGFncyB8PSAweDA4OworICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBmcmVlKTsKICAgICB9Ci0gICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgZnJlZSk7CiAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCAoUHlPYmplY3QqKWNvLCBjb25zdHMpOwogICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgcXVhbG5hbWUsIGNvbnN0cyk7Ci0gICAgQURET1BfSShjLCBNQUtFX0NMT1NVUkUsIGFyZ3MpOworICAgIEFERE9QX0koYywgTUFLRV9GVU5DVElPTiwgZmxhZ3MpOwogICAgIHJldHVybiAxOwogfQogCkBAIC0xNDk0LDI2ICsxNjIzLDYwIEBACiBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprd29ubHlhcmdzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmt3X2RlZmF1bHRzKQogewotICAgIC8qIFJldHVybiB0aGUgbnVtYmVyIG9mIGRlZmF1bHRzICsgMS4KLSAgICAgICBSZXR1cm5zIDAgb24gZXJyb3IuCi0gICAgICovCi0gICAgaW50IGksIGRlZmF1bHRfY291bnQgPSAwOworICAgIC8qIFB1c2ggYSBkaWN0IG9mIGtleXdvcmQtb25seSBkZWZhdWx0IHZhbHVlcy4KKworICAgICAgIFJldHVybiAwIG9uIGVycm9yLCAtMSBpZiBubyBkaWN0IHB1c2hlZCwgMSBpZiBhIGRpY3QgaXMgcHVzaGVkLgorICAgICAgICovCisgICAgaW50IGk7CisgICAgUHlPYmplY3QgKmtleXMgPSBOVUxMOworCiAgICAgZm9yIChpID0gMDsgaSA8IGFzZGxfc2VxX0xFTihrd29ubHlhcmdzKTsgaSsrKSB7CiAgICAgICAgIGFyZ190eSBhcmcgPSBhc2RsX3NlcV9HRVQoa3dvbmx5YXJncywgaSk7CiAgICAgICAgIGV4cHJfdHkgZGVmYXVsdF8gPSBhc2RsX3NlcV9HRVQoa3dfZGVmYXVsdHMsIGkpOwogICAgICAgICBpZiAoZGVmYXVsdF8pIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICptYW5nbGVkID0gX1B5X01hbmdsZShjLT51LT51X3ByaXZhdGUsIGFyZy0+YXJnKTsKLSAgICAgICAgICAgIGlmICghbWFuZ2xlZCkKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgbWFuZ2xlZCwgY29uc3RzKTsKLSAgICAgICAgICAgIFB5X0RFQ1JFRihtYW5nbGVkKTsKLSAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIGlmICghbWFuZ2xlZCkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBkZWZhdWx0X2NvdW50Kys7CisgICAgICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAga2V5cyA9IFB5TGlzdF9OZXcoMSk7CisgICAgICAgICAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUxpc3RfU0VUX0lURU0oa2V5cywgMCwgbWFuZ2xlZCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBpbnQgcmVzID0gUHlMaXN0X0FwcGVuZChrZXlzLCBtYW5nbGVkKTsKKyAgICAgICAgICAgICAgICBQeV9ERUNSRUYobWFuZ2xlZCk7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZXhwcihjLCBkZWZhdWx0XykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQotICAgIHJldHVybiBkZWZhdWx0X2NvdW50ICsgMTsKKyAgICBpZiAoa2V5cyAhPSBOVUxMKSB7CisgICAgICAgIFB5X3NzaXplX3QgZGVmYXVsdF9jb3VudCA9IFB5TGlzdF9HRVRfU0laRShrZXlzKTsKKyAgICAgICAgUHlPYmplY3QgKmtleXNfdHVwbGUgPSBQeUxpc3RfQXNUdXBsZShrZXlzKTsKKyAgICAgICAgUHlfREVDUkVGKGtleXMpOworICAgICAgICBpZiAoa2V5c190dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXNfdHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgZGVmYXVsdF9jb3VudCk7CisgICAgICAgIGFzc2VydChkZWZhdWx0X2NvdW50ID4gMCk7CisgICAgICAgIHJldHVybiAxOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKworZXJyb3I6CisgICAgUHlfWERFQ1JFRihrZXlzKTsKKyAgICByZXR1cm4gMDsKIH0KIAogc3RhdGljIGludApAQCAtMTU1NiwxMSArMTcxOSwxMCBAQAogY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgcmV0dXJucykKIHsKLSAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9ucyBhbmQgYSBsaXN0IG9mIHRoZSBhcmd1bWVudCBuYW1lcy4gUmV0dXJuIHRoZSAjCi0gICAgICAgb2YgaXRlbXMgcHVzaGVkICsgMS4gVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUKLSAgICAgICBzb3VyY2UgY29kZS4KKyAgICAvKiBQdXNoIGFyZyBhbm5vdGF0aW9uIGRpY3QuCisgICAgICAgVGhlIGV4cHJlc3Npb25zIGFyZSBldmFsdWF0ZWQgb3V0LW9mLW9yZGVyIHdydCB0aGUgc291cmNlIGNvZGUuCiAKLSAgICAgICBNb3JlIHRoYW4gMl4xNi0xIGFubm90YXRpb25zIGlzIGEgU3ludGF4RXJyb3IuIFJldHVybnMgMCBvbiBlcnJvci4KKyAgICAgICBSZXR1cm4gMCBvbiBlcnJvciwgLTEgaWYgbm8gZGljdCBwdXNoZWQsIDEgaWYgYSBkaWN0IGlzIHB1c2hlZC4KICAgICAgICAqLwogICAgIHN0YXRpYyBpZGVudGlmaWVyIHJldHVybl9zdHI7CiAgICAgUHlPYmplY3QgKm5hbWVzOwpAQCAtMTU5MiwzMiArMTc1NCwyMCBAQAogICAgIH0KIAogICAgIGxlbiA9IFB5TGlzdF9HRVRfU0laRShuYW1lcyk7Ci0gICAgaWYgKGxlbiA+IDY1NTM0KSB7Ci0gICAgICAgIC8qIGxlbiBtdXN0IGZpdCBpbiAxNiBiaXRzLCBhbmQgbGVuIGlzIGluY3JlbWVudGVkIGJlbG93ICovCi0gICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeW50YXhFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJ0b28gbWFueSBhbm5vdGF0aW9ucyIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgIH0KICAgICBpZiAobGVuKSB7Ci0gICAgICAgIC8qIGNvbnZlcnQgbmFtZXMgdG8gYSB0dXBsZSBhbmQgcGxhY2Ugb24gc3RhY2sgKi8KLSAgICAgICAgUHlPYmplY3QgKmVsdDsKLSAgICAgICAgUHlfc3NpemVfdCBpOwotICAgICAgICBQeU9iamVjdCAqcyA9IFB5VHVwbGVfTmV3KGxlbik7Ci0gICAgICAgIGlmICghcykKLSAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewotICAgICAgICAgICAgZWx0ID0gUHlMaXN0X0dFVF9JVEVNKG5hbWVzLCBpKTsKLSAgICAgICAgICAgIFB5X0lOQ1JFRihlbHQpOwotICAgICAgICAgICAgUHlUdXBsZV9TRVRfSVRFTShzLCBpLCBlbHQpOworICAgICAgICBQeU9iamVjdCAqa2V5dHVwbGUgPSBQeUxpc3RfQXNUdXBsZShuYW1lcyk7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIGlmIChrZXl0dXBsZSA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQotICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIHMsIGNvbnN0cyk7Ci0gICAgICAgIFB5X0RFQ1JFRihzKTsKLSAgICAgICAgbGVuKys7IC8qIGluY2x1ZGUgdGhlIGp1c3QtcHVzaGVkIHR1cGxlICovCisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5dHVwbGUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbGVuKTsKKyAgICAgICAgcmV0dXJuIDE7CiAgICAgfQotICAgIFB5X0RFQ1JFRihuYW1lcyk7Ci0KLSAgICAvKiBXZSBqdXN0IGNoZWNrZWQgdGhhdCBsZW4gPD0gNjU1MzUsIHNlZSBhYm92ZSAqLwotICAgIHJldHVybiBQeV9TQUZFX0RPV05DQVNUKGxlbiArIDEsIFB5X3NzaXplX3QsIGludCk7CisgICAgZWxzZSB7CisgICAgICAgIFB5X0RFQ1JFRihuYW1lcyk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CiAKIGVycm9yOgogICAgIFB5X0RFQ1JFRihuYW1lcyk7CkBAIC0xNjI1LDYgKzE3NzUsMzYgQEAKIH0KIAogc3RhdGljIGludAorY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOworICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykpOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgUHlfc3NpemVfdAorY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoc3RydWN0IGNvbXBpbGVyICpjLCBhcmd1bWVudHNfdHkgYXJncykKK3sKKyAgICBQeV9zc2l6ZV90IGZ1bmNmbGFncyA9IDA7CisgICAgaWYgKGFyZ3MtPmRlZmF1bHRzICYmIGFzZGxfc2VxX0xFTihhcmdzLT5kZWZhdWx0cykgPiAwKSB7CisgICAgICAgIGlmICghY29tcGlsZXJfdmlzaXRfZGVmYXVsdHMoYywgYXJncykpCisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIGZ1bmNmbGFncyB8PSAweDAxOworICAgIH0KKyAgICBpZiAoYXJncy0+a3dvbmx5YXJncykgeworICAgICAgICBpbnQgcmVzID0gY29tcGlsZXJfdmlzaXRfa3dvbmx5ZGVmYXVsdHMoYywgYXJncy0+a3dvbmx5YXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MtPmt3X2RlZmF1bHRzKTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KKyAgICAgICAgZWxzZSBpZiAocmVzID4gMCkgeworICAgICAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDI7CisgICAgICAgIH0KKyAgICB9CisgICAgcmV0dXJuIGZ1bmNmbGFnczsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfZnVuY3Rpb24oc3RydWN0IGNvbXBpbGVyICpjLCBzdG10X3R5IHMsIGludCBpc19hc3luYykKIHsKICAgICBQeUNvZGVPYmplY3QgKmNvOwpAQCAtMTYzNSwxMiArMTgxNSwxMSBAQAogICAgIGFzZGxfc2VxKiBkZWNvczsKICAgICBhc2RsX3NlcSAqYm9keTsKICAgICBzdG10X3R5IHN0OwotICAgIFB5X3NzaXplX3QgaSwgbiwgYXJnbGVuZ3RoOwotICAgIGludCBkb2NzdHJpbmcsIGt3X2RlZmF1bHRfY291bnQgPSAwOwotICAgIGludCBudW1fYW5ub3RhdGlvbnM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBmdW5jZmxhZ3M7CisgICAgaW50IGRvY3N0cmluZzsKKyAgICBpbnQgYW5ub3RhdGlvbnM7CiAgICAgaW50IHNjb3BlX3R5cGU7CiAKLQogICAgIGlmIChpc19hc3luYykgewogICAgICAgICBhc3NlcnQocy0+a2luZCA9PSBBc3luY0Z1bmN0aW9uRGVmX2tpbmQpOwogCkBAIC0xNjY1LDMwICsxODQ0LDMyIEBACiAKICAgICBpZiAoIWNvbXBpbGVyX2RlY29yYXRvcnMoYywgZGVjb3MpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYXJncy0+ZGVmYXVsdHMpCi0gICAgICAgIFZJU0lUX1NFUShjLCBleHByLCBhcmdzLT5kZWZhdWx0cyk7Ci0gICAgaWYgKGFyZ3MtPmt3b25seWFyZ3MpIHsKLSAgICAgICAgaW50IHJlcyA9IGNvbXBpbGVyX3Zpc2l0X2t3b25seWRlZmF1bHRzKGMsIGFyZ3MtPmt3b25seWFyZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLT5rd19kZWZhdWx0cyk7Ci0gICAgICAgIGlmIChyZXMgPT0gMCkKLSAgICAgICAgICAgIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKLSAgICB9Ci0gICAgbnVtX2Fubm90YXRpb25zID0gY29tcGlsZXJfdmlzaXRfYW5ub3RhdGlvbnMoYywgYXJncywgcmV0dXJucyk7Ci0gICAgaWYgKG51bV9hbm5vdGF0aW9ucyA9PSAwKQotICAgICAgICByZXR1cm4gMDsKLSAgICBudW1fYW5ub3RhdGlvbnMtLTsKLSAgICBhc3NlcnQoKG51bV9hbm5vdGF0aW9ucyAmIDB4RkZGRikgPT0gbnVtX2Fubm90YXRpb25zKTsKIAotICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjb3BlX3R5cGUsICh2b2lkICopcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubykpCisgICAgZnVuY2ZsYWdzID0gY29tcGlsZXJfZGVmYXVsdF9hcmd1bWVudHMoYywgYXJncyk7CisgICAgaWYgKGZ1bmNmbGFncyA9PSAtMSkgewogICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBhbm5vdGF0aW9ucyA9IGNvbXBpbGVyX3Zpc2l0X2Fubm90YXRpb25zKGMsIGFyZ3MsIHJldHVybnMpOworICAgIGlmIChhbm5vdGF0aW9ucyA9PSAwKSB7CisgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICBlbHNlIGlmIChhbm5vdGF0aW9ucyA+IDApIHsKKyAgICAgICAgZnVuY2ZsYWdzIHw9IDB4MDQ7CisgICAgfQorCisgICAgaWYgKCFjb21waWxlcl9lbnRlcl9zY29wZShjLCBuYW1lLCBzY29wZV90eXBlLCAodm9pZCAqKXMsIHMtPmxpbmVubykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQogCiAgICAgc3QgPSAoc3RtdF90eSlhc2RsX3NlcV9HRVQoYm9keSwgMCk7CiAgICAgZG9jc3RyaW5nID0gY29tcGlsZXJfaXNkb2NzdHJpbmcoc3QpOwotICAgIGlmIChkb2NzdHJpbmcgJiYgYy0+Y19vcHRpbWl6ZSA8IDIpCi0gICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICBpZiAoZG9jc3RyaW5nICYmIGMtPmNfb3B0aW1pemUgPCAyKSB7CisgICAgICAgIGlmIChzdC0+di5FeHByLnZhbHVlLT5raW5kID09IENvbnN0YW50X2tpbmQpCisgICAgICAgICAgICBmaXJzdF9jb25zdCA9IHN0LT52LkV4cHIudmFsdWUtPnYuQ29uc3RhbnQudmFsdWU7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGZpcnN0X2NvbnN0ID0gc3QtPnYuRXhwci52YWx1ZS0+di5TdHIuczsKKyAgICB9CiAgICAgaWYgKGNvbXBpbGVyX2FkZF9vKGMsIGMtPnUtPnVfY29uc3RzLCBmaXJzdF9jb25zdCkgPCAwKSAgICAgIHsKICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKICAgICAgICAgcmV0dXJuIDA7CkBAIC0xNzEyLDEyICsxODkzLDcgQEAKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGFyZ2xlbmd0aCB8PSBudW1fYW5ub3RhdGlvbnMgPDwgMTY7Ci0gICAgaWYgKGlzX2FzeW5jKQotICAgICAgICBjby0+Y29fZmxhZ3MgfD0gQ09fQ09ST1VUSU5FOwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTE3OTIsNyArMTk2OCw3IEBACiAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgfQogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9uZWVkc19jbGFzc19jbG9zdXJlKSB7Ci0gICAgICAgICAgICAvKiByZXR1cm4gdGhlIChlbXB0eSkgX19jbGFzc19fIGNlbGwgKi8KKyAgICAgICAgICAgIC8qIHN0b3JlIF9fY2xhc3NjZWxsX18gaW50byBjbGFzcyBuYW1lc3BhY2UgKi8KICAgICAgICAgICAgIHN0ciA9IFB5VW5pY29kZV9JbnRlcm5Gcm9tU3RyaW5nKCJfX2NsYXNzX18iKTsKICAgICAgICAgICAgIGlmIChzdHIgPT0gTlVMTCkgewogICAgICAgICAgICAgICAgIGNvbXBpbGVyX2V4aXRfc2NvcGUoYyk7CkBAIC0xODA1LDE1ICsxOTgxLDIwIEBACiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBhc3NlcnQoaSA9PSAwKTsKLSAgICAgICAgICAgIC8qIFJldHVybiB0aGUgY2VsbCB3aGVyZSB0byBzdG9yZSBfX2NsYXNzX18gKi8KKwogICAgICAgICAgICAgQURET1BfSShjLCBMT0FEX0NMT1NVUkUsIGkpOworICAgICAgICAgICAgc3RyID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIl9fY2xhc3NjZWxsX18iKTsKKyAgICAgICAgICAgIGlmICghc3RyIHx8ICFjb21waWxlcl9uYW1lb3AoYywgc3RyLCBTdG9yZSkpIHsKKyAgICAgICAgICAgICAgICBQeV9YREVDUkVGKHN0cik7CisgICAgICAgICAgICAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFB5X0RFQ1JFRihzdHIpOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLyogVGhpcyBoYXBwZW5zIHdoZW4gbm9ib2R5IHJlZmVyZW5jZXMgdGhlIGNlbGwuICovCiAgICAgICAgICAgICBhc3NlcnQoUHlEaWN0X1NpemUoYy0+dS0+dV9jZWxsdmFycykgPT0gMCk7Ci0gICAgICAgICAgICAvKiBUaGlzIGhhcHBlbnMgd2hlbiBub2JvZHkgcmVmZXJlbmNlcyB0aGUgY2VsbC4gUmV0dXJuIE5vbmUuICovCi0gICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CiAgICAgICAgIH0KLSAgICAgICAgQURET1BfSU5fU0NPUEUoYywgUkVUVVJOX1ZBTFVFKTsKICAgICAgICAgLyogY3JlYXRlIHRoZSBjb2RlIG9iamVjdCAqLwogICAgICAgICBjbyA9IGFzc2VtYmxlKGMsIDEpOwogICAgIH0KQEAgLTE4NzcsOCArMjA1OCw3IEBACiAgICAgUHlDb2RlT2JqZWN0ICpjbzsKICAgICBQeU9iamVjdCAqcXVhbG5hbWU7CiAgICAgc3RhdGljIGlkZW50aWZpZXIgbmFtZTsKLSAgICBpbnQga3dfZGVmYXVsdF9jb3VudCA9IDA7Ci0gICAgUHlfc3NpemVfdCBhcmdsZW5ndGg7CisgICAgUHlfc3NpemVfdCBmdW5jZmxhZ3M7CiAgICAgYXJndW1lbnRzX3R5IGFyZ3MgPSBlLT52LkxhbWJkYS5hcmdzOwogICAgIGFzc2VydChlLT5raW5kID09IExhbWJkYV9raW5kKTsKIApAQCAtMTg4OCwxNCArMjA2OCwxMSBAQAogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCi0gICAgaWYgKGFyZ3MtPmRlZmF1bHRzKQotICAgICAgICBWSVNJVF9TRVEoYywgZXhwciwgYXJncy0+ZGVmYXVsdHMpOwotICAgIGlmIChhcmdzLT5rd29ubHlhcmdzKSB7Ci0gICAgICAgIGludCByZXMgPSBjb21waWxlcl92aXNpdF9rd29ubHlkZWZhdWx0cyhjLCBhcmdzLT5rd29ubHlhcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy0+a3dfZGVmYXVsdHMpOwotICAgICAgICBpZiAocmVzID09IDApIHJldHVybiAwOwotICAgICAgICBrd19kZWZhdWx0X2NvdW50ID0gcmVzIC0gMTsKKyAgICBmdW5jZmxhZ3MgPSBjb21waWxlcl9kZWZhdWx0X2FyZ3VtZW50cyhjLCBhcmdzKTsKKyAgICBpZiAoZnVuY2ZsYWdzID09IC0xKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfTEFNQkRBLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZvaWQgKillLCBlLT5saW5lbm8pKQogICAgICAgICByZXR1cm4gMDsKQEAgLTE5MjEsOSArMjA5OCw3IEBACiAgICAgaWYgKGNvID09IE5VTEwpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgYXJnbGVuZ3RoID0gYXNkbF9zZXFfTEVOKGFyZ3MtPmRlZmF1bHRzKTsKLSAgICBhcmdsZW5ndGggfD0ga3dfZGVmYXVsdF9jb3VudCA8PCA4OwotICAgIGNvbXBpbGVyX21ha2VfY2xvc3VyZShjLCBjbywgYXJnbGVuZ3RoLCBxdWFsbmFtZSk7CisgICAgY29tcGlsZXJfbWFrZV9jbG9zdXJlKGMsIGNvLCBmdW5jZmxhZ3MsIHF1YWxuYW1lKTsKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKQEAgLTIwMDIsMTQgKzIxNzcsMTQgQEAKIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2FzeW5jX2ZvcihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKLSAgICBzdGF0aWMgUHlPYmplY3QgKnN0b3BpdGVyX2Vycm9yID0gTlVMTDsKKyAgICBfUHlfSURFTlRJRklFUihTdG9wQXN5bmNJdGVyYXRpb24pOworCiAgICAgYmFzaWNibG9jayAqdHJ5LCAqZXhjZXB0LCAqZW5kLCAqYWZ0ZXJfdHJ5LCAqdHJ5X2NsZWFudXAsCiAgICAgICAgICAgICAgICAqYWZ0ZXJfbG9vcCwgKmFmdGVyX2xvb3BfZWxzZTsKIAotICAgIGlmIChzdG9waXRlcl9lcnJvciA9PSBOVUxMKSB7Ci0gICAgICAgIHN0b3BpdGVyX2Vycm9yID0gUHlVbmljb2RlX0ludGVybkZyb21TdHJpbmcoIlN0b3BBc3luY0l0ZXJhdGlvbiIpOwotICAgICAgICBpZiAoc3RvcGl0ZXJfZXJyb3IgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgIFB5T2JqZWN0ICpzdG9wX2FpdGVyX2Vycm9yID0gX1B5VW5pY29kZV9Gcm9tSWQoJlB5SWRfU3RvcEFzeW5jSXRlcmF0aW9uKTsKKyAgICBpZiAoc3RvcF9haXRlcl9lcnJvciA9PSBOVUxMKSB7CisgICAgICAgIHJldHVybiAwOwogICAgIH0KIAogICAgIHRyeSA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKQEAgLTIwNTEsNyArMjIyNiw3IEBACiAKICAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBleGNlcHQpOwogICAgIEFERE9QKGMsIERVUF9UT1ApOwotICAgIEFERE9QX08oYywgTE9BRF9HTE9CQUwsIHN0b3BpdGVyX2Vycm9yLCBuYW1lcyk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOwogICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CiAKQEAgLTI1OTksNiArMjc3NCwyNSBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl92aXNpdF9zdG10X2V4cHIoc3RydWN0IGNvbXBpbGVyICpjLCBleHByX3R5IHZhbHVlKQoreworICAgIGlmIChjLT5jX2ludGVyYWN0aXZlICYmIGMtPmNfbmVzdGxldmVsIDw9IDEpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgdmFsdWUpOworICAgICAgICBBRERPUChjLCBQUklOVF9FWFBSKTsKKyAgICAgICAgcmV0dXJuIDE7CisgICAgfQorCisgICAgaWYgKGlzX2NvbnN0KHZhbHVlKSkgeworICAgICAgICAvKiBpZ25vcmUgY29uc3RhbnQgc3RhdGVtZW50ICovCisgICAgICAgIHJldHVybiAxOworICAgIH0KKworICAgIFZJU0lUKGMsIGV4cHIsIHZhbHVlKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAogY29tcGlsZXJfdmlzaXRfc3RtdChzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKIHsKICAgICBQeV9zc2l6ZV90IGksIG47CkBAIC0yNjE3LDYgKzI4MTEsOSBAQAogICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV90eXBlICE9IEZ1bmN0aW9uQmxvY2spCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidyZXR1cm4nIG91dHNpZGUgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKHMtPnYuUmV0dXJuLnZhbHVlKSB7CisgICAgICAgICAgICBpZiAoYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmUgJiYgYy0+dS0+dV9zdGUtPnN0ZV9nZW5lcmF0b3IpCisgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKAorICAgICAgICAgICAgICAgICAgICBjLCAiJ3JldHVybicgd2l0aCB2YWx1ZSBpbiBhc3luYyBnZW5lcmF0b3IiKTsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuUmV0dXJuLnZhbHVlKTsKICAgICAgICAgfQogICAgICAgICBlbHNlCkBAIC0yNjM4LDYgKzI4MzUsOCBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICByZXR1cm4gY29tcGlsZXJfYXVnYXNzaWduKGMsIHMpOworICAgIGNhc2UgQW5uQXNzaWduX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9hbm5hc3NpZ24oYywgcyk7CiAgICAgY2FzZSBGb3Jfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2ZvcihjLCBzKTsKICAgICBjYXNlIFdoaWxlX2tpbmQ6CkBAIC0yNjY4LDE2ICsyODY3LDcgQEAKICAgICBjYXNlIE5vbmxvY2FsX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgRXhwcl9raW5kOgotICAgICAgICBpZiAoYy0+Y19pbnRlcmFjdGl2ZSAmJiBjLT5jX25lc3RsZXZlbCA8PSAxKSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCBzLT52LkV4cHIudmFsdWUpOwotICAgICAgICAgICAgQURET1AoYywgUFJJTlRfRVhQUik7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAocy0+di5FeHByLnZhbHVlLT5raW5kICE9IFN0cl9raW5kICYmCi0gICAgICAgICAgICAgICAgIHMtPnYuRXhwci52YWx1ZS0+a2luZCAhPSBOdW1fa2luZCkgewotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5FeHByLnZhbHVlKTsKLSAgICAgICAgICAgIEFERE9QKGMsIFBPUF9UT1ApOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOworICAgICAgICByZXR1cm4gY29tcGlsZXJfdmlzaXRfc3RtdF9leHByKGMsIHMtPnYuRXhwci52YWx1ZSk7CiAgICAgY2FzZSBQYXNzX2tpbmQ6CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQnJlYWtfa2luZDoKQEAgLTMwNzksOSArMzI2OSw1MyBAQAogfQogCiBzdGF0aWMgaW50CithcmVfYWxsX2l0ZW1zX2NvbnN0KGFzZGxfc2VxICpzZXEsIFB5X3NzaXplX3QgYmVnaW4sIFB5X3NzaXplX3QgZW5kKQoreworICAgIFB5X3NzaXplX3QgaTsKKyAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkga2V5ID0gKGV4cHJfdHkpYXNkbF9zZXFfR0VUKHNlcSwgaSk7CisgICAgICAgIGlmIChrZXkgPT0gTlVMTCB8fCAhaXNfY29uc3Qoa2V5KSkKKyAgICAgICAgICAgIHJldHVybiAwOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY29tcGlsZXJfc3ViZGljdChzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSwgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAgUHlPYmplY3QgKmtleXMsICprZXk7CisgICAgaWYgKG4gPiAxICYmIGFyZV9hbGxfaXRlbXNfY29uc3QoZS0+di5EaWN0LmtleXMsIGJlZ2luLCBlbmQpKSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CisgICAgICAgIH0KKyAgICAgICAga2V5cyA9IFB5VHVwbGVfTmV3KG4pOworICAgICAgICBpZiAoa2V5cyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrZXkgPSBnZXRfY29uc3RfdmFsdWUoKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC5rZXlzLCBpKSk7CisgICAgICAgICAgICBQeV9JTkNSRUYoa2V5KTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0oa2V5cywgaSAtIGJlZ2luLCBrZXkpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwga2V5cywgY29uc3RzKTsKKyAgICAgICAgQURET1BfSShjLCBCVUlMRF9DT05TVF9LRVlfTUFQLCBuKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIGZvciAoaSA9IGJlZ2luOyBpIDwgZW5kOyBpKyspIHsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkpOworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgKGV4cHJfdHkpYXNkbF9zZXFfR0VUKGUtPnYuRGljdC52YWx1ZXMsIGkpKTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9JKGMsIEJVSUxEX01BUCwgbik7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9kaWN0KHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQogewotICAgIFB5X3NzaXplX3QgaSwgbiwgY29udGFpbmVycywgZWxlbWVudHM7CisgICAgUHlfc3NpemVfdCBpLCBuLCBlbGVtZW50czsKKyAgICBpbnQgY29udGFpbmVyczsKICAgICBpbnQgaXNfdW5wYWNraW5nID0gMDsKICAgICBuID0gYXNkbF9zZXFfTEVOKGUtPnYuRGljdC52YWx1ZXMpOwogICAgIGNvbnRhaW5lcnMgPSAwOwpAQCAtMzA4OSw3ICszMzIzLDggQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CiAgICAgICAgIGlzX3VucGFja2luZyA9IChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3Qua2V5cywgaSkgPT0gTlVMTDsKICAgICAgICAgaWYgKGVsZW1lbnRzID09IDB4RkZGRiB8fCAoZWxlbWVudHMgJiYgaXNfdW5wYWNraW5nKSkgewotICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3ViZGljdChjLCBlLCBpIC0gZWxlbWVudHMsIGkpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgY29udGFpbmVycysrOwogICAgICAgICAgICAgZWxlbWVudHMgPSAwOwogICAgICAgICB9CkBAIC0zMDk4LDEzICszMzMzLDEyIEBACiAgICAgICAgICAgICBjb250YWluZXJzKys7CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBWSVNJVChjLCBleHByLCAoZXhwcl90eSlhc2RsX3NlcV9HRVQoZS0+di5EaWN0LmtleXMsIGkpKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIChleHByX3R5KWFzZGxfc2VxX0dFVChlLT52LkRpY3QudmFsdWVzLCBpKSk7CiAgICAgICAgICAgICBlbGVtZW50cysrOwogICAgICAgICB9CiAgICAgfQogICAgIGlmIChlbGVtZW50cyB8fCBjb250YWluZXJzID09IDApIHsKLSAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIGVsZW1lbnRzKTsKKyAgICAgICAgaWYgKCFjb21waWxlcl9zdWJkaWN0KGMsIGUsIG4gLSBlbGVtZW50cywgbikpCisgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgY29udGFpbmVycysrOwogICAgIH0KICAgICAvKiBJZiB0aGVyZSBpcyBtb3JlIHRoYW4gb25lIGRpY3QsIHRoZXkgbmVlZCB0byBiZSBtZXJnZWQgaW50byBhIG5ldwpAQCAtMzE3MywyOCArMzQwNywxMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZS0+di5DYWxsLmtleXdvcmRzKTsKIH0KIAorc3RhdGljIGludAorY29tcGlsZXJfam9pbmVkX3N0cihzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICBWSVNJVF9TRVEoYywgZXhwciwgZS0+di5Kb2luZWRTdHIudmFsdWVzKTsKKyAgICBBRERPUF9JKGMsIEJVSUxEX1NUUklORywgYXNkbF9zZXFfTEVOKGUtPnYuSm9pbmVkU3RyLnZhbHVlcykpOworICAgIHJldHVybiAxOworfQorCisvKiBVc2VkIHRvIGltcGxlbWVudCBmLXN0cmluZ3MuIEZvcm1hdCBhIHNpbmdsZSB2YWx1ZS4gKi8KK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2Zvcm1hdHRlZF92YWx1ZShzdHJ1Y3QgY29tcGlsZXIgKmMsIGV4cHJfdHkgZSkKK3sKKyAgICAvKiBPdXIgb3BhcmcgZW5jb2RlcyAyIHBpZWNlcyBvZiBpbmZvcm1hdGlvbjogdGhlIGNvbnZlcnNpb24KKyAgICAgICBjaGFyYWN0ZXIsIGFuZCB3aGV0aGVyIG9yIG5vdCBhIGZvcm1hdF9zcGVjIHdhcyBwcm92aWRlZC4KKworICAgICAgIENvbnZlcnQgdGhlIGNvbnZlcnNpb24gY2hhciB0byAyIGJpdHM6CisgICAgICAgTm9uZTogMDAwICAweDAgIEZWQ19OT05FCisgICAgICAgIXMgIDogMDAxICAweDEgIEZWQ19TVFIKKyAgICAgICAhciAgOiAwMTAgIDB4MiAgRlZDX1JFUFIKKyAgICAgICAhYSAgOiAwMTEgIDB4MyAgRlZDX0FTQ0lJCisKKyAgICAgICBuZXh0IGJpdCBpcyB3aGV0aGVyIG9yIG5vdCB3ZSBoYXZlIGEgZm9ybWF0IHNwZWM6CisgICAgICAgeWVzIDogMTAwICAweDQKKyAgICAgICBubyAgOiAwMDAgIDB4MAorICAgICovCisKKyAgICBpbnQgb3Bhcmc7CisKKyAgICAvKiBFdmFsdWF0ZSB0aGUgZXhwcmVzc2lvbiB0byBiZSBmb3JtYXR0ZWQuICovCisgICAgVklTSVQoYywgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisKKyAgICBzd2l0Y2ggKGUtPnYuRm9ybWF0dGVkVmFsdWUuY29udmVyc2lvbikgeworICAgIGNhc2UgJ3MnOiBvcGFyZyA9IEZWQ19TVFI7ICAgYnJlYWs7CisgICAgY2FzZSAncic6IG9wYXJnID0gRlZDX1JFUFI7ICBicmVhazsKKyAgICBjYXNlICdhJzogb3BhcmcgPSBGVkNfQVNDSUk7IGJyZWFrOworICAgIGNhc2UgLTE6ICBvcGFyZyA9IEZWQ19OT05FOyAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIlVucmVjb2duaXplZCBjb252ZXJzaW9uIGNoYXJhY3RlciIpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgaWYgKGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpIHsKKyAgICAgICAgLyogRXZhbHVhdGUgdGhlIGZvcm1hdCBzcGVjLCBhbmQgdXBkYXRlIG91ciBvcGNvZGUgYXJnLiAqLworICAgICAgICBWSVNJVChjLCBleHByLCBlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKTsKKyAgICAgICAgb3BhcmcgfD0gRlZTX0hBVkVfU1BFQzsKKyAgICB9CisKKyAgICAvKiBBbmQgcHVzaCBvdXIgb3Bjb2RlIGFuZCBvcGFyZyAqLworICAgIEFERE9QX0koYywgRk9STUFUX1ZBTFVFLCBvcGFyZyk7CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX3N1Ymt3YXJncyhzdHJ1Y3QgY29tcGlsZXIgKmMsIGFzZGxfc2VxICprZXl3b3JkcywgUHlfc3NpemVfdCBiZWdpbiwgUHlfc3NpemVfdCBlbmQpCit7CisgICAgUHlfc3NpemVfdCBpLCBuID0gZW5kIC0gYmVnaW47CisgICAga2V5d29yZF90eSBrdzsKKyAgICBQeU9iamVjdCAqa2V5cywgKmtleTsKKyAgICBhc3NlcnQobiA+IDApOworICAgIGlmIChuID4gMSkgeworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIGtleXMgPSBQeVR1cGxlX05ldyhuKTsKKyAgICAgICAgaWYgKGtleXMgPT0gTlVMTCkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgZm9yIChpID0gYmVnaW47IGkgPCBlbmQ7IGkrKykgeworICAgICAgICAgICAga2V5ID0gKChrZXl3b3JkX3R5KSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpKS0+YXJnOworICAgICAgICAgICAgUHlfSU5DUkVGKGtleSk7CisgICAgICAgICAgICBQeVR1cGxlX1NFVF9JVEVNKGtleXMsIGkgLSBiZWdpbiwga2V5KTsKKyAgICAgICAgfQorICAgICAgICBBRERPUF9OKGMsIExPQURfQ09OU1QsIGtleXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQlVJTERfQ09OU1RfS0VZX01BUCwgbik7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBhIGZvciBsb29wIG9ubHkgZXhlY3V0ZXMgb25jZSAqLworICAgICAgICBmb3IgKGkgPSBiZWdpbjsgaSA8IGVuZDsgaSsrKSB7CisgICAgICAgICAgICBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGt3LT5hcmcsIGNvbnN0cyk7CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBrdy0+dmFsdWUpOworICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuKTsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKIC8qIHNoYXJlZCBjb2RlIGJldHdlZW4gY29tcGlsZXJfY2FsbCBhbmQgY29tcGlsZXJfY2xhc3MgKi8KIHN0YXRpYyBpbnQKIGNvbXBpbGVyX2NhbGxfaGVscGVyKHN0cnVjdCBjb21waWxlciAqYywKLSAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QgbiwgLyogQXJncyBhbHJlYWR5IHB1c2hlZCAqLworICAgICAgICAgICAgICAgICAgICAgaW50IG4sIC8qIEFyZ3MgYWxyZWFkeSBwdXNoZWQgKi8KICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICphcmdzLAogICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmtleXdvcmRzKQogewotICAgIGludCBjb2RlID0gMDsKLSAgICBQeV9zc2l6ZV90IG5lbHRzLCBpLCBuc2Vlbiwgbmt3OworICAgIFB5X3NzaXplX3QgaSwgbnNlZW4sIG5lbHRzLCBua3dlbHRzOworICAgIGludCBtdXN0ZGljdHVucGFjayA9IDA7CiAKICAgICAvKiB0aGUgbnVtYmVyIG9mIHR1cGxlcyBhbmQgZGljdGlvbmFyaWVzIG9uIHRoZSBzdGFjayAqLwogICAgIFB5X3NzaXplX3QgbnN1YmFyZ3MgPSAwLCBuc3Via3dhcmdzID0gMDsKIAotICAgIG5rdyA9IDA7Ci0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBuZWx0cyA9IGFzZGxfc2VxX0xFTihhcmdzKTsKKyAgICBua3dlbHRzID0gYXNkbF9zZXFfTEVOKGtleXdvcmRzKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBua3dlbHRzOyBpKyspIHsKKyAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgIGlmIChrdy0+YXJnID09IE5VTEwpIHsKKyAgICAgICAgICAgIG11c3RkaWN0dW5wYWNrID0gMTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgfQorCisgICAgbnNlZW4gPSBuOyAgLyogdGhlIG51bWJlciBvZiBwb3NpdGlvbmFsIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgbmVsdHM7IGkrKykgewogICAgICAgICBleHByX3R5IGVsdCA9IGFzZGxfc2VxX0dFVChhcmdzLCBpKTsKICAgICAgICAgaWYgKGVsdC0+a2luZCA9PSBTdGFycmVkX2tpbmQpIHsKICAgICAgICAgICAgIC8qIEEgc3Rhci1hcmcuIElmIHdlJ3ZlIHNlZW4gcG9zaXRpb25hbCBhcmd1bWVudHMsCi0gICAgICAgICAgICAgICBwYWNrIHRoZSBwb3NpdGlvbmFsIGFyZ3VtZW50cyBpbnRvIGEKLSAgICAgICAgICAgICAgIHR1cGxlLiAqLworICAgICAgICAgICAgICAgcGFjayB0aGUgcG9zaXRpb25hbCBhcmd1bWVudHMgaW50byBhIHR1cGxlLiAqLwogICAgICAgICAgICAgaWYgKG5zZWVuKSB7CiAgICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9UVVBMRSwgbnNlZW4pOwogICAgICAgICAgICAgICAgIG5zZWVuID0gMDsKQEAgLTMyMDMsOTIgKzM1MzMsNzggQEAKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdC0+di5TdGFycmVkLnZhbHVlKTsKICAgICAgICAgICAgIG5zdWJhcmdzKys7CiAgICAgICAgIH0KLSAgICAgICAgZWxzZSBpZiAobnN1YmFyZ3MpIHsKLSAgICAgICAgICAgIC8qIFdlJ3ZlIHNlZW4gc3Rhci1hcmdzIGFscmVhZHksIHNvIHdlCi0gICAgICAgICAgICAgICBjb3VudCB0b3dhcmRzIGl0ZW1zLXRvLXBhY2staW50by10dXBsZS4gKi8KKyAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOwogICAgICAgICAgICAgbnNlZW4rKzsKICAgICAgICAgfQotICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnRzIGJlZm9yZSBzdGFyLWFyZ3VtZW50cwotICAgICAgICAgICAgICAgYXJlIGxlZnQgb24gdGhlIHN0YWNrLiAqLwotICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKLSAgICAgICAgICAgIG4rKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfVFVQTEUsIG5zZWVuKTsKLSAgICAgICAgbnN1YmFyZ3MrKzsKLSAgICB9Ci0gICAgaWYgKG5zdWJhcmdzKSB7Ci0gICAgICAgIGNvZGUgfD0gMTsKLSAgICAgICAgaWYgKG5zdWJhcmdzID4gMSkgewotICAgICAgICAgICAgLyogSWYgd2UgZW5kZWQgdXAgd2l0aCBtb3JlIHRoYW4gb25lIHN0YXJhcmcsIHdlIG5lZWQKLSAgICAgICAgICAgICAgIHRvIGNvbmNhdGVuYXRlIHRoZW0gaW50byBhIHNpbmdsZSBzZXF1ZW5jZS4gKi8KLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTElTVF9VTlBBQ0ssIG5zdWJhcmdzKTsKLSAgICAgICAgfQogICAgIH0KIAogICAgIC8qIFNhbWUgZGFuY2UgYWdhaW4gZm9yIGtleXdvcmQgYXJndW1lbnRzICovCi0gICAgbnNlZW4gPSAwOyAgLyogdGhlIG51bWJlciBvZiBrZXl3b3JkIGFyZ3VtZW50cyBvbiB0aGUgc3RhY2sgZm9sbG93aW5nICovCi0gICAgbmVsdHMgPSBhc2RsX3NlcV9MRU4oa2V5d29yZHMpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuZWx0czsgaSsrKSB7Ci0gICAgICAgIGtleXdvcmRfdHkga3cgPSBhc2RsX3NlcV9HRVQoa2V5d29yZHMsIGkpOwotICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAvKiBBIGtleXdvcmQgYXJndW1lbnQgdW5wYWNraW5nLiAqLwotICAgICAgICAgICAgaWYgKG5zZWVuKSB7Ci0gICAgICAgICAgICAgICAgQURET1BfSShjLCBCVUlMRF9NQVAsIG5zZWVuKTsKLSAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgaWYgKG5zdWJhcmdzIHx8IG11c3RkaWN0dW5wYWNrKSB7CisgICAgICAgIGlmIChuc2VlbikgeworICAgICAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcgcG9zaXRpb25hbCBhcmd1bWVudHMuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCBuc2Vlbik7CisgICAgICAgICAgICBuc3ViYXJncysrOworICAgICAgICB9CisgICAgICAgIGlmIChuc3ViYXJncyA+IDEpIHsKKyAgICAgICAgICAgIC8qIElmIHdlIGVuZGVkIHVwIHdpdGggbW9yZSB0aGFuIG9uZSBzdGFyYXJnLCB3ZSBuZWVkCisgICAgICAgICAgICAgICB0byBjb25jYXRlbmF0ZSB0aGVtIGludG8gYSBzaW5nbGUgc2VxdWVuY2UuICovCisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJhcmdzKTsKKyAgICAgICAgfQorICAgICAgICBlbHNlIGlmIChuc3ViYXJncyA9PSAwKSB7CisgICAgICAgICAgICBBRERPUF9JKGMsIEJVSUxEX1RVUExFLCAwKTsKKyAgICAgICAgfQorICAgICAgICBuc2VlbiA9IDA7ICAvKiB0aGUgbnVtYmVyIG9mIGtleXdvcmQgYXJndW1lbnRzIG9uIHRoZSBzdGFjayBmb2xsb3dpbmcgKi8KKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG5rd2VsdHM7IGkrKykgeworICAgICAgICAgICAga2V5d29yZF90eSBrdyA9IGFzZGxfc2VxX0dFVChrZXl3b3JkcywgaSk7CisgICAgICAgICAgICBpZiAoa3ctPmFyZyA9PSBOVUxMKSB7CisgICAgICAgICAgICAgICAgLyogQSBrZXl3b3JkIGFyZ3VtZW50IHVucGFja2luZy4gKi8KKyAgICAgICAgICAgICAgICBpZiAobnNlZW4pIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFjb21waWxlcl9zdWJrd2FyZ3MoYywga2V5d29yZHMsIGkgLSBuc2VlbiwgaSkpCisgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOworICAgICAgICAgICAgICAgICAgICBuc2VlbiA9IDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7CiAgICAgICAgICAgICAgICAgbnN1Ymt3YXJncysrOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgVklTSVQoYywgZXhwciwga3ctPnZhbHVlKTsKKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIG5zZWVuKys7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5zZWVuKSB7CisgICAgICAgICAgICAvKiBQYWNrIHVwIGFueSB0cmFpbGluZyBrZXl3b3JkIGFyZ3VtZW50cy4gKi8KKyAgICAgICAgICAgIGlmICghY29tcGlsZXJfc3Via3dhcmdzKGMsIGtleXdvcmRzLCBua3dlbHRzIC0gbnNlZW4sIG5rd2VsdHMpKQorICAgICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgICAgbnN1Ymt3YXJncysrOwogICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKG5zdWJrd2FyZ3MpIHsKLSAgICAgICAgICAgIC8qIEEga2V5d29yZCBhcmd1bWVudCBhbmQgd2UgYWxyZWFkeSBoYXZlIGEgZGljdC4gKi8KLSAgICAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwga3ctPmFyZywgY29uc3RzKTsKLSAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGt3LT52YWx1ZSk7Ci0gICAgICAgICAgICBuc2VlbisrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgLyoga2V5d29yZCBhcmd1bWVudCAqLwotICAgICAgICAgICAgVklTSVQoYywga2V5d29yZCwga3cpCi0gICAgICAgICAgICBua3crKzsKLSAgICAgICAgfQotICAgIH0KLSAgICBpZiAobnNlZW4pIHsKLSAgICAgICAgLyogUGFjayB1cCBhbnkgdHJhaWxpbmcga2V5d29yZCBhcmd1bWVudHMuICovCi0gICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQLCBuc2Vlbik7Ci0gICAgICAgIG5zdWJrd2FyZ3MrKzsKLSAgICB9Ci0gICAgaWYgKG5zdWJrd2FyZ3MpIHsKLSAgICAgICAgY29kZSB8PSAyOwogICAgICAgICBpZiAobnN1Ymt3YXJncyA+IDEpIHsKICAgICAgICAgICAgIC8qIFBhY2sgaXQgYWxsIHVwICovCi0gICAgICAgICAgICBpbnQgZnVuY3Rpb25fcG9zID0gbiArIChjb2RlICYgMSkgKyAyICogbmt3ICsgMTsKLSAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MgfCAoZnVuY3Rpb25fcG9zIDw8IDgpKTsKKyAgICAgICAgICAgIEFERE9QX0koYywgQlVJTERfTUFQX1VOUEFDS19XSVRIX0NBTEwsIG5zdWJrd2FyZ3MpOwogICAgICAgICB9CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9FWCwgbnN1Ymt3YXJncyA+IDApOworICAgICAgICByZXR1cm4gMTsKICAgICB9Ci0gICAgYXNzZXJ0KG4gPCAxPDw4KTsKLSAgICBhc3NlcnQobmt3IDwgMTw8MjQpOwotICAgIG4gfD0gbmt3IDw8IDg7Ci0KLSAgICBzd2l0Y2ggKGNvZGUpIHsKLSAgICBjYXNlIDA6Ci0gICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTiwgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMToKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX1ZBUiwgbik7Ci0gICAgICAgIGJyZWFrOwotICAgIGNhc2UgMjoKLSAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OX0tXLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgY2FzZSAzOgotICAgICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT05fVkFSX0tXLCBuKTsKLSAgICAgICAgYnJlYWs7CisgICAgZWxzZSBpZiAobmt3ZWx0cykgeworICAgICAgICBQeU9iamVjdCAqbmFtZXM7CisgICAgICAgIFZJU0lUX1NFUShjLCBrZXl3b3JkLCBrZXl3b3Jkcyk7CisgICAgICAgIG5hbWVzID0gUHlUdXBsZV9OZXcobmt3ZWx0cyk7CisgICAgICAgIGlmIChuYW1lcyA9PSBOVUxMKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbmt3ZWx0czsgaSsrKSB7CisgICAgICAgICAgICBrZXl3b3JkX3R5IGt3ID0gYXNkbF9zZXFfR0VUKGtleXdvcmRzLCBpKTsKKyAgICAgICAgICAgIFB5X0lOQ1JFRihrdy0+YXJnKTsKKyAgICAgICAgICAgIFB5VHVwbGVfU0VUX0lURU0obmFtZXMsIGksIGt3LT5hcmcpOworICAgICAgICB9CisgICAgICAgIEFERE9QX04oYywgTE9BRF9DT05TVCwgbmFtZXMsIGNvbnN0cyk7CisgICAgICAgIEFERE9QX0koYywgQ0FMTF9GVU5DVElPTl9LVywgbiArIG5lbHRzICsgbmt3ZWx0cyk7CisgICAgICAgIHJldHVybiAxOwogICAgIH0KLSAgICByZXR1cm4gMTsKKyAgICBlbHNlIHsKKyAgICAgICAgQURET1BfSShjLCBDQUxMX0ZVTkNUSU9OLCBuICsgbmVsdHMpOworICAgICAgICByZXR1cm4gMTsKKyAgICB9CiB9CiAKIApAQCAtMzMwNywxMSArMzYyMywyOCBAQAogICAgIC0gaXRlcmF0ZSBvdmVyIHRoZSBnZW5lcmF0b3Igc2VxdWVuY2UgaW5zdGVhZCBvZiB1c2luZyByZWN1cnNpb24KICovCiAKKwogc3RhdGljIGludAogY29tcGlsZXJfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3Ioc3RydWN0IGNvbXBpbGVyICpjLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQogeworICAgIGNvbXByZWhlbnNpb25fdHkgZ2VuOworICAgIGdlbiA9IChjb21wcmVoZW5zaW9uX3R5KWFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCBnZW5faW5kZXgpOworICAgIGlmIChnZW4tPmlzX2FzeW5jKSB7CisgICAgICAgIHJldHVybiBjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcigKKyAgICAgICAgICAgIGMsIGdlbmVyYXRvcnMsIGdlbl9pbmRleCwgZWx0LCB2YWwsIHR5cGUpOworICAgIH0gZWxzZSB7CisgICAgICAgIHJldHVybiBjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKAorICAgICAgICAgICAgYywgZ2VuZXJhdG9ycywgZ2VuX2luZGV4LCBlbHQsIHZhbCwgdHlwZSk7CisgICAgfQorfQorCitzdGF0aWMgaW50Citjb21waWxlcl9zeW5jX2NvbXByZWhlbnNpb25fZ2VuZXJhdG9yKHN0cnVjdCBjb21waWxlciAqYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNkbF9zZXEgKmdlbmVyYXRvcnMsIGludCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgZWx0LCBleHByX3R5IHZhbCwgaW50IHR5cGUpCit7CiAgICAgLyogZ2VuZXJhdGUgY29kZSBmb3IgdGhlIGl0ZXJhdG9yLCB0aGVuIGVhY2ggb2YgdGhlIGlmcywKICAgICAgICBhbmQgdGhlbiB3cml0ZSB0byB0aGUgZWxlbWVudCAqLwogCkBAIC0zMzk4LDIwICszNzMxLDE2NyBAQAogfQogCiBzdGF0aWMgaW50Citjb21waWxlcl9hc3luY19jb21wcmVoZW5zaW9uX2dlbmVyYXRvcihzdHJ1Y3QgY29tcGlsZXIgKmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxICpnZW5lcmF0b3JzLCBpbnQgZ2VuX2luZGV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHByX3R5IGVsdCwgZXhwcl90eSB2YWwsIGludCB0eXBlKQoreworICAgIF9QeV9JREVOVElGSUVSKFN0b3BBc3luY0l0ZXJhdGlvbik7CisKKyAgICBjb21wcmVoZW5zaW9uX3R5IGdlbjsKKyAgICBiYXNpY2Jsb2NrICphbmNob3IsICpza2lwLCAqaWZfY2xlYW51cCwgKnRyeSwKKyAgICAgICAgICAgICAgICphZnRlcl90cnksICpleGNlcHQsICp0cnlfY2xlYW51cDsKKyAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICBQeU9iamVjdCAqc3RvcF9haXRlcl9lcnJvciA9IF9QeVVuaWNvZGVfRnJvbUlkKCZQeUlkX1N0b3BBc3luY0l0ZXJhdGlvbik7CisgICAgaWYgKHN0b3BfYWl0ZXJfZXJyb3IgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICB0cnkgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYWZ0ZXJfdHJ5ID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIHRyeV9jbGVhbnVwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGV4Y2VwdCA9IGNvbXBpbGVyX25ld19ibG9jayhjKTsKKyAgICBza2lwID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworICAgIGlmX2NsZWFudXAgPSBjb21waWxlcl9uZXdfYmxvY2soYyk7CisgICAgYW5jaG9yID0gY29tcGlsZXJfbmV3X2Jsb2NrKGMpOworCisgICAgaWYgKHNraXAgPT0gTlVMTCB8fCBpZl9jbGVhbnVwID09IE5VTEwgfHwgYW5jaG9yID09IE5VTEwgfHwKKyAgICAgICAgICAgIHRyeSA9PSBOVUxMIHx8IGFmdGVyX3RyeSA9PSBOVUxMIHx8CisgICAgICAgICAgICBleGNlcHQgPT0gTlVMTCB8fCBhZnRlcl90cnkgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyAgICBnZW4gPSAoY29tcHJlaGVuc2lvbl90eSlhc2RsX3NlcV9HRVQoZ2VuZXJhdG9ycywgZ2VuX2luZGV4KTsKKworICAgIGlmIChnZW5faW5kZXggPT0gMCkgeworICAgICAgICAvKiBSZWNlaXZlIG91dGVybW9zdCBpdGVyIGFzIGFuIGltcGxpY2l0IGFyZ3VtZW50ICovCisgICAgICAgIGMtPnUtPnVfYXJnY291bnQgPSAxOworICAgICAgICBBRERPUF9JKGMsIExPQURfRkFTVCwgMCk7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICAvKiBTdWItaXRlciAtIGNhbGN1bGF0ZSBvbiB0aGUgZmx5ICovCisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGdlbi0+aXRlcik7CisgICAgICAgIEFERE9QKGMsIEdFVF9BSVRFUik7CisgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgUHlfTm9uZSwgY29uc3RzKTsKKyAgICAgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgfQorCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5KTsKKworCisgICAgQURET1BfSlJFTChjLCBTRVRVUF9FWENFUFQsIGV4Y2VwdCk7CisgICAgaWYgKCFjb21waWxlcl9wdXNoX2ZibG9jayhjLCBFWENFUFQsIHRyeSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgQURET1AoYywgR0VUX0FORVhUKTsKKyAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgQURET1AoYywgWUlFTERfRlJPTSk7CisgICAgVklTSVQoYywgZXhwciwgZ2VuLT50YXJnZXQpOworICAgIEFERE9QKGMsIFBPUF9CTE9DSyk7CisgICAgY29tcGlsZXJfcG9wX2ZibG9jayhjLCBFWENFUFQsIHRyeSk7CisgICAgQURET1BfSlJFTChjLCBKVU1QX0ZPUldBUkQsIGFmdGVyX3RyeSk7CisKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGV4Y2VwdCk7CisgICAgQURET1AoYywgRFVQX1RPUCk7CisgICAgQURET1BfTyhjLCBMT0FEX0dMT0JBTCwgc3RvcF9haXRlcl9lcnJvciwgbmFtZXMpOworICAgIEFERE9QX0koYywgQ09NUEFSRV9PUCwgUHlDbXBfRVhDX01BVENIKTsKKyAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCB0cnlfY2xlYW51cCk7CisKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKyAgICBBRERPUChjLCBQT1BfRVhDRVBUKTsgLyogZm9yIFNFVFVQX0VYQ0VQVCAqLworICAgIEFERE9QX0pBQlMoYywgSlVNUF9BQlNPTFVURSwgYW5jaG9yKTsKKworCisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgdHJ5X2NsZWFudXApOworICAgIEFERE9QKGMsIEVORF9GSU5BTExZKTsKKworICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIGFmdGVyX3RyeSk7CisKKyAgICBuID0gYXNkbF9zZXFfTEVOKGdlbi0+aWZzKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgIGV4cHJfdHkgZSA9IChleHByX3R5KWFzZGxfc2VxX0dFVChnZW4tPmlmcywgaSk7CisgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUpOworICAgICAgICBBRERPUF9KQUJTKGMsIFBPUF9KVU1QX0lGX0ZBTFNFLCBpZl9jbGVhbnVwKTsKKyAgICAgICAgTkVYVF9CTE9DSyhjKTsKKyAgICB9CisKKyAgICBpZiAoKytnZW5faW5kZXggPCBhc2RsX3NlcV9MRU4oZ2VuZXJhdG9ycykpCisgICAgICAgIGlmICghY29tcGlsZXJfY29tcHJlaGVuc2lvbl9nZW5lcmF0b3IoYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5lcmF0b3JzLCBnZW5faW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWx0LCB2YWwsIHR5cGUpKQorICAgICAgICByZXR1cm4gMDsKKworICAgIC8qIG9ubHkgYXBwZW5kIGFmdGVyIHRoZSBsYXN0IGZvciBnZW5lcmF0b3IgKi8KKyAgICBpZiAoZ2VuX2luZGV4ID49IGFzZGxfc2VxX0xFTihnZW5lcmF0b3JzKSkgeworICAgICAgICAvKiBjb21wcmVoZW5zaW9uIHNwZWNpZmljIGNvZGUgKi8KKyAgICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgQ09NUF9HRU5FWFA6CisgICAgICAgICAgICBWSVNJVChjLCBleHByLCBlbHQpOworICAgICAgICAgICAgQURET1AoYywgWUlFTERfVkFMVUUpOworICAgICAgICAgICAgQURET1AoYywgUE9QX1RPUCk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX0xJU1RDT01QOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgTElTVF9BUFBFTkQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgQ09NUF9TRVRDT01QOgorICAgICAgICAgICAgVklTSVQoYywgZXhwciwgZWx0KTsKKyAgICAgICAgICAgIEFERE9QX0koYywgU0VUX0FERCwgZ2VuX2luZGV4ICsgMSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBDT01QX0RJQ1RDT01QOgorICAgICAgICAgICAgLyogV2l0aCAnZFtrXSA9IHYnLCB2IGlzIGV2YWx1YXRlZCBiZWZvcmUgaywgc28gd2UgZG8KKyAgICAgICAgICAgICAgIHRoZSBzYW1lLiAqLworICAgICAgICAgICAgVklTSVQoYywgZXhwciwgdmFsKTsKKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGVsdCk7CisgICAgICAgICAgICBBRERPUF9JKGMsIE1BUF9BREQsIGdlbl9pbmRleCArIDEpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorCisgICAgICAgIGNvbXBpbGVyX3VzZV9uZXh0X2Jsb2NrKGMsIHNraXApOworICAgIH0KKyAgICBjb21waWxlcl91c2VfbmV4dF9ibG9jayhjLCBpZl9jbGVhbnVwKTsKKyAgICBBRERPUF9KQUJTKGMsIEpVTVBfQUJTT0xVVEUsIHRyeSk7CisgICAgY29tcGlsZXJfdXNlX25leHRfYmxvY2soYywgYW5jaG9yKTsKKyAgICBBRERPUChjLCBQT1BfVE9QKTsKKworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9jb21wcmVoZW5zaW9uKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlLCBpbnQgdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmllciBuYW1lLCBhc2RsX3NlcSAqZ2VuZXJhdG9ycywgZXhwcl90eSBlbHQsCiAgICAgICAgICAgICAgICAgICAgICAgIGV4cHJfdHkgdmFsKQogewogICAgIFB5Q29kZU9iamVjdCAqY28gPSBOVUxMOwotICAgIGV4cHJfdHkgb3V0ZXJtb3N0X2l0ZXI7CisgICAgY29tcHJlaGVuc2lvbl90eSBvdXRlcm1vc3Q7CiAgICAgUHlPYmplY3QgKnF1YWxuYW1lID0gTlVMTDsKKyAgICBpbnQgaXNfYXN5bmNfZnVuY3Rpb24gPSBjLT51LT51X3N0ZS0+c3RlX2Nvcm91dGluZTsKKyAgICBpbnQgaXNfYXN5bmNfZ2VuZXJhdG9yID0gMDsKIAotICAgIG91dGVybW9zdF9pdGVyID0gKChjb21wcmVoZW5zaW9uX3R5KQotICAgICAgICAgICAgICAgICAgICAgIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKSktPml0ZXI7CisgICAgb3V0ZXJtb3N0ID0gKGNvbXByZWhlbnNpb25fdHkpIGFzZGxfc2VxX0dFVChnZW5lcmF0b3JzLCAwKTsKIAogICAgIGlmICghY29tcGlsZXJfZW50ZXJfc2NvcGUoYywgbmFtZSwgQ09NUElMRVJfU0NPUEVfQ09NUFJFSEVOU0lPTiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2b2lkICopZSwgZS0+bGluZW5vKSkKKyAgICB7CiAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgaXNfYXN5bmNfZ2VuZXJhdG9yID0gYy0+dS0+dV9zdGUtPnN0ZV9jb3JvdXRpbmU7CisKKyAgICBpZiAoaXNfYXN5bmNfZ2VuZXJhdG9yICYmICFpc19hc3luY19mdW5jdGlvbikgeworICAgICAgICBpZiAoZS0+bGluZW5vID4gYy0+dS0+dV9saW5lbm8pIHsKKyAgICAgICAgICAgIGMtPnUtPnVfbGluZW5vID0gZS0+bGluZW5vOworICAgICAgICAgICAgYy0+dS0+dV9saW5lbm9fc2V0ID0gMDsKKyAgICAgICAgfQorICAgICAgICBjb21waWxlcl9lcnJvcihjLCAiYXN5bmNocm9ub3VzIGNvbXByZWhlbnNpb24gb3V0c2lkZSBvZiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICJhbiBhc3luY2hyb25vdXMgZnVuY3Rpb24iKTsKKyAgICAgICAgZ290byBlcnJvcl9pbl9zY29wZTsKKyAgICB9CiAKICAgICBpZiAodHlwZSAhPSBDT01QX0dFTkVYUCkgewogICAgICAgICBpbnQgb3A7CkBAIC0zNDU0LDkgKzM5MzQsMjQgQEAKICAgICBQeV9ERUNSRUYocXVhbG5hbWUpOwogICAgIFB5X0RFQ1JFRihjbyk7CiAKLSAgICBWSVNJVChjLCBleHByLCBvdXRlcm1vc3RfaXRlcik7Ci0gICAgQURET1AoYywgR0VUX0lURVIpOworICAgIFZJU0lUKGMsIGV4cHIsIG91dGVybW9zdC0+aXRlcik7CisKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBBRERPUChjLCBHRVRfQUlURVIpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0gZWxzZSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9JVEVSKTsKKyAgICB9CisKICAgICBBRERPUF9JKGMsIENBTExfRlVOQ1RJT04sIDEpOworCisgICAgaWYgKGlzX2FzeW5jX2dlbmVyYXRvciAmJiB0eXBlICE9IENPTVBfR0VORVhQKSB7CisgICAgICAgIEFERE9QKGMsIEdFVF9BV0FJVEFCTEUpOworICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIFB5X05vbmUsIGNvbnN0cyk7CisgICAgICAgIEFERE9QKGMsIFlJRUxEX0ZST00pOworICAgIH0KKwogICAgIHJldHVybiAxOwogZXJyb3JfaW5fc2NvcGU6CiAgICAgY29tcGlsZXJfZXhpdF9zY29wZShjKTsKQEAgLTM1MzEsNyArNDAyNiw2IEBACiBzdGF0aWMgaW50CiBjb21waWxlcl92aXNpdF9rZXl3b3JkKHN0cnVjdCBjb21waWxlciAqYywga2V5d29yZF90eSBrKQogewotICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgay0+YXJnLCBjb25zdHMpOwogICAgIFZJU0lUKGMsIGV4cHIsIGstPnZhbHVlKTsKICAgICByZXR1cm4gMTsKIH0KQEAgLTM1NDksNiArNDA0Myw4IEBACiAgICAgc3dpdGNoIChlLT5raW5kKSB7CiAgICAgY2FzZSBFbGxpcHNpc19raW5kOgogICAgICAgICByZXR1cm4gMTsKKyAgICBjYXNlIENvbnN0YW50X2tpbmQ6CisgICAgICAgIHJldHVybiBQeU9iamVjdF9Jc1RydWUoZS0+di5Db25zdGFudC52YWx1ZSk7CiAgICAgY2FzZSBOdW1fa2luZDoKICAgICAgICAgcmV0dXJuIFB5T2JqZWN0X0lzVHJ1ZShlLT52Lk51bS5uKTsKICAgICBjYXNlIFN0cl9raW5kOgpAQCAtMzU5Miw5ICs0MDg4LDkgQEAKICAgICAgICBCTE9DSwogICAgZmluYWxseToKICAgICAgICBpZiBhbiBleGNlcHRpb24gd2FzIHJhaXNlZDoKLSAgICAgICBleGMgPSBjb3B5IG9mIChleGNlcHRpb24sIGluc3RhbmNlLCB0cmFjZWJhY2spCisgICAgICAgICAgIGV4YyA9IGNvcHkgb2YgKGV4Y2VwdGlvbiwgaW5zdGFuY2UsIHRyYWNlYmFjaykKICAgICAgICBlbHNlOgotICAgICAgIGV4YyA9IChOb25lLCBOb25lLCBOb25lKQorICAgICAgICAgICBleGMgPSAoTm9uZSwgTm9uZSwgTm9uZSkKICAgICAgICBpZiBub3QgKGF3YWl0IGV4aXQoKmV4YykpOgogICAgICAgICAgICByYWlzZQogICovCkBAIC0zNzk0LDggKzQyOTAsNiBAQAogICAgIGNhc2UgWWllbGRfa2luZDoKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICIneWllbGQnIG91dHNpZGUgZnVuY3Rpb24iKTsKLSAgICAgICAgaWYgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9BU1lOQ19GVU5DVElPTikKLSAgICAgICAgICAgIHJldHVybiBjb21waWxlcl9lcnJvcihjLCAiJ3lpZWxkJyBpbnNpZGUgYXN5bmMgZnVuY3Rpb24iKTsKICAgICAgICAgaWYgKGUtPnYuWWllbGQudmFsdWUpIHsKICAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuWWllbGQudmFsdWUpOwogICAgICAgICB9CkBAIC0zODIwLDExICs0MzE0LDggQEAKICAgICAgICAgaWYgKGMtPnUtPnVfc3RlLT5zdGVfdHlwZSAhPSBGdW5jdGlvbkJsb2NrKQogICAgICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2Vycm9yKGMsICInYXdhaXQnIG91dHNpZGUgZnVuY3Rpb24iKTsKIAotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCi0gICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoCi0gICAgICAgICAgICAgICAgYywgIidhd2FpdCcgZXhwcmVzc2lvbnMgaW4gY29tcHJlaGVuc2lvbnMgYXJlIG5vdCBzdXBwb3J0ZWQiKTsKLQotICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OKQorICAgICAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0FTWU5DX0ZVTkNUSU9OICYmCisgICAgICAgICAgICAgICAgYy0+dS0+dV9zY29wZV90eXBlICE9IENPTVBJTEVSX1NDT1BFX0NPTVBSRUhFTlNJT04pCiAgICAgICAgICAgICByZXR1cm4gY29tcGlsZXJfZXJyb3IoYywgIidhd2FpdCcgb3V0c2lkZSBhc3luYyBmdW5jdGlvbiIpOwogCiAgICAgICAgIFZJU0lUKGMsIGV4cHIsIGUtPnYuQXdhaXQudmFsdWUpOwpAQCAtMzgzNiwxMiArNDMyNywxOSBAQAogICAgICAgICByZXR1cm4gY29tcGlsZXJfY29tcGFyZShjLCBlKTsKICAgICBjYXNlIENhbGxfa2luZDoKICAgICAgICAgcmV0dXJuIGNvbXBpbGVyX2NhbGwoYywgZSk7CisgICAgY2FzZSBDb25zdGFudF9raW5kOgorICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuQ29uc3RhbnQudmFsdWUsIGNvbnN0cyk7CisgICAgICAgIGJyZWFrOwogICAgIGNhc2UgTnVtX2tpbmQ6CiAgICAgICAgIEFERE9QX08oYywgTE9BRF9DT05TVCwgZS0+di5OdW0ubiwgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBTdHJfa2luZDoKICAgICAgICAgQURET1BfTyhjLCBMT0FEX0NPTlNULCBlLT52LlN0ci5zLCBjb25zdHMpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICByZXR1cm4gY29tcGlsZXJfam9pbmVkX3N0cihjLCBlKTsKKyAgICBjYXNlIEZvcm1hdHRlZFZhbHVlX2tpbmQ6CisgICAgICAgIHJldHVybiBjb21waWxlcl9mb3JtYXR0ZWRfdmFsdWUoYywgZSk7CiAgICAgY2FzZSBCeXRlc19raW5kOgogICAgICAgICBBRERPUF9PKGMsIExPQURfQ09OU1QsIGUtPnYuQnl0ZXMucywgY29uc3RzKTsKICAgICAgICAgYnJlYWs7CkBAIC0zOTc2LDYgKzQ0NzQsMTQ0IEBACiB9CiAKIHN0YXRpYyBpbnQKK2NoZWNrX2Fubl9leHByKHN0cnVjdCBjb21waWxlciAqYywgZXhwcl90eSBlKQoreworICAgIFZJU0lUKGMsIGV4cHIsIGUpOworICAgIEFERE9QKGMsIFBPUF9UT1ApOworICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5vdGF0aW9uKHN0cnVjdCBjb21waWxlciAqYywgc3RtdF90eSBzKQoreworICAgIC8qIEFubm90YXRpb25zIGFyZSBvbmx5IGV2YWx1YXRlZCBpbiBhIG1vZHVsZSBvciBjbGFzcy4gKi8KKyAgICBpZiAoYy0+dS0+dV9zY29wZV90eXBlID09IENPTVBJTEVSX1NDT1BFX01PRFVMRSB8fAorICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpIHsKKyAgICAgICAgcmV0dXJuIGNoZWNrX2Fubl9leHByKGMsIHMtPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgIH0KKyAgICByZXR1cm4gMTsKK30KKworc3RhdGljIGludAorY2hlY2tfYW5uX3NsaWNlKHN0cnVjdCBjb21waWxlciAqYywgc2xpY2VfdHkgc2wpCit7CisgICAgc3dpdGNoKHNsLT5raW5kKSB7CisgICAgY2FzZSBJbmRleF9raW5kOgorICAgICAgICByZXR1cm4gY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuSW5kZXgudmFsdWUpOworICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgaWYgKHNsLT52LlNsaWNlLmxvd2VyICYmICFjaGVja19hbm5fZXhwcihjLCBzbC0+di5TbGljZS5sb3dlcikpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGlmIChzbC0+di5TbGljZS51cHBlciAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2UudXBwZXIpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBpZiAoc2wtPnYuU2xpY2Uuc3RlcCAmJiAhY2hlY2tfYW5uX2V4cHIoYywgc2wtPnYuU2xpY2Uuc3RlcCkpIHsKKyAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHNsaWNlIGtpbmQiKTsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CitjaGVja19hbm5fc3Vic2NyKHN0cnVjdCBjb21waWxlciAqYywgc2xpY2VfdHkgc2wpCit7CisgICAgLyogV2UgY2hlY2sgdGhhdCBldmVyeXRoaW5nIGluIGEgc3Vic2NyaXB0IGlzIGRlZmluZWQgYXQgcnVudGltZS4gKi8KKyAgICBQeV9zc2l6ZV90IGksIG47CisKKyAgICBzd2l0Y2ggKHNsLT5raW5kKSB7CisgICAgY2FzZSBJbmRleF9raW5kOgorICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgaWYgKCFjaGVja19hbm5fc2xpY2UoYywgc2wpKSB7CisgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKKyAgICBjYXNlIEV4dFNsaWNlX2tpbmQ6CisgICAgICAgIG4gPSBhc2RsX3NlcV9MRU4oc2wtPnYuRXh0U2xpY2UuZGltcyk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICAgIHNsaWNlX3R5IHN1YnNsID0gKHNsaWNlX3R5KWFzZGxfc2VxX0dFVChzbC0+di5FeHRTbGljZS5kaW1zLCBpKTsKKyAgICAgICAgICAgIHN3aXRjaCAoc3Vic2wtPmtpbmQpIHsKKyAgICAgICAgICAgIGNhc2UgSW5kZXhfa2luZDoKKyAgICAgICAgICAgIGNhc2UgU2xpY2Vfa2luZDoKKyAgICAgICAgICAgICAgICBpZiAoIWNoZWNrX2Fubl9zbGljZShjLCBzdWJzbCkpIHsKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgY2FzZSBFeHRTbGljZV9raW5kOgorICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfU3lzdGVtRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHRlbmRlZCBzbGljZSBpbnZhbGlkIGluIG5lc3RlZCBzbGljZSIpOworICAgICAgICAgICAgICAgIHJldHVybiAwOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeXN0ZW1FcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICJpbnZhbGlkIHN1YnNjcmlwdCBraW5kICVkIiwgc2wtPmtpbmQpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisgICAgcmV0dXJuIDE7Cit9CisKK3N0YXRpYyBpbnQKK2NvbXBpbGVyX2FubmFzc2lnbihzdHJ1Y3QgY29tcGlsZXIgKmMsIHN0bXRfdHkgcykKK3sKKyAgICBleHByX3R5IHRhcmcgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgUHlPYmplY3QqIG1hbmdsZWQ7CisKKyAgICBhc3NlcnQocy0+a2luZCA9PSBBbm5Bc3NpZ25fa2luZCk7CisKKyAgICAvKiBXZSBwZXJmb3JtIHRoZSBhY3R1YWwgYXNzaWdubWVudCBmaXJzdC4gKi8KKyAgICBpZiAocy0+di5Bbm5Bc3NpZ24udmFsdWUpIHsKKyAgICAgICAgVklTSVQoYywgZXhwciwgcy0+di5Bbm5Bc3NpZ24udmFsdWUpOworICAgICAgICBWSVNJVChjLCBleHByLCB0YXJnKTsKKyAgICB9CisgICAgc3dpdGNoICh0YXJnLT5raW5kKSB7CisgICAgY2FzZSBOYW1lX2tpbmQ6CisgICAgICAgIC8qIElmIHdlIGhhdmUgYSBzaW1wbGUgbmFtZSBpbiBhIG1vZHVsZSBvciBjbGFzcywgc3RvcmUgYW5ub3RhdGlvbi4gKi8KKyAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnNpbXBsZSAmJgorICAgICAgICAgICAgKGMtPnUtPnVfc2NvcGVfdHlwZSA9PSBDT01QSUxFUl9TQ09QRV9NT0RVTEUgfHwKKyAgICAgICAgICAgICBjLT51LT51X3Njb3BlX3R5cGUgPT0gQ09NUElMRVJfU0NPUEVfQ0xBU1MpKSB7CisgICAgICAgICAgICBtYW5nbGVkID0gX1B5X01hbmdsZShjLT51LT51X3ByaXZhdGUsIHRhcmctPnYuTmFtZS5pZCk7CisgICAgICAgICAgICBpZiAoIW1hbmdsZWQpIHsKKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIFZJU0lUKGMsIGV4cHIsIHMtPnYuQW5uQXNzaWduLmFubm90YXRpb24pOworICAgICAgICAgICAgLyogQURET1BfTiBkZWNyZWZzIGl0cyBhcmd1bWVudCAqLworICAgICAgICAgICAgQURET1BfTihjLCBTVE9SRV9BTk5PVEFUSU9OLCBtYW5nbGVkLCBuYW1lcyk7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBBdHRyaWJ1dGVfa2luZDoKKyAgICAgICAgaWYgKCFzLT52LkFubkFzc2lnbi52YWx1ZSAmJgorICAgICAgICAgICAgIWNoZWNrX2Fubl9leHByKGMsIHRhcmctPnYuQXR0cmlidXRlLnZhbHVlKSkgeworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgY2FzZSBTdWJzY3JpcHRfa2luZDoKKyAgICAgICAgaWYgKCFzLT52LkFubkFzc2lnbi52YWx1ZSAmJgorICAgICAgICAgICAgKCFjaGVja19hbm5fZXhwcihjLCB0YXJnLT52LlN1YnNjcmlwdC52YWx1ZSkgfHwKKyAgICAgICAgICAgICAhY2hlY2tfYW5uX3N1YnNjcihjLCB0YXJnLT52LlN1YnNjcmlwdC5zbGljZSkpKSB7CisgICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgImludmFsaWQgbm9kZSB0eXBlICglZCkgZm9yIGFubm90YXRlZCBhc3NpZ25tZW50IiwKKyAgICAgICAgICAgICAgICAgICAgIHRhcmctPmtpbmQpOworICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIC8qIEFubm90YXRpb24gaXMgZXZhbHVhdGVkIGxhc3QuICovCisgICAgaWYgKCFzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYgIWNoZWNrX2Fubm90YXRpb24oYywgcykpIHsKKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorICAgIHJldHVybiAxOworfQorCitzdGF0aWMgaW50CiBjb21waWxlcl9wdXNoX2ZibG9jayhzdHJ1Y3QgY29tcGlsZXIgKmMsIGVudW0gZmJsb2NrdHlwZSB0LCBiYXNpY2Jsb2NrICpiKQogewogICAgIHN0cnVjdCBmYmxvY2tpbmZvICpmOwpAQCAtNDI3Myw3ICs0OTA5LDcgQEAKICAgICBhLT5hX2xub3RhYiA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoTlVMTCwgREVGQVVMVF9MTk9UQUJfU0laRSk7CiAgICAgaWYgKCFhLT5hX2xub3RhYikKICAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKChzaXplX3QpbmJsb2NrcyA+IFBZX1NJWkVfTUFYIC8gc2l6ZW9mKGJhc2ljYmxvY2sgKikpIHsKKyAgICBpZiAoKHNpemVfdCluYmxvY2tzID4gU0laRV9NQVggLyBzaXplb2YoYmFzaWNibG9jayAqKSkgewogICAgICAgICBQeUVycl9Ob01lbW9yeSgpOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CkBAIC00Mjk1LDE4ICs0OTMxLDYgQEAKICAgICAgICAgUHlPYmplY3RfRnJlZShhLT5hX3Bvc3RvcmRlcik7CiB9CiAKLS8qIFJldHVybiB0aGUgc2l6ZSBvZiBhIGJhc2ljIGJsb2NrIGluIGJ5dGVzLiAqLwotCi1zdGF0aWMgaW50Ci1pbnN0cnNpemUoc3RydWN0IGluc3RyICppbnN0cikKLXsKLSAgICBpZiAoIWluc3RyLT5pX2hhc2FyZykKLSAgICAgICAgcmV0dXJuIDE7ICAgICAgICAgICAgICAgLyogMSBieXRlIGZvciB0aGUgb3Bjb2RlKi8KLSAgICBpZiAoaW5zdHItPmlfb3BhcmcgPiAweGZmZmYpCi0gICAgICAgIHJldHVybiA2OyAgICAgICAgICAgICAgIC8qIDEgKG9wY29kZSkgKyAxIChFWFRFTkRFRF9BUkcgb3Bjb2RlKSArIDIgKG9wYXJnKSArIDIob3BhcmcgZXh0ZW5kZWQpICovCi0gICAgcmV0dXJuIDM7ICAgICAgICAgICAgICAgICAgIC8qIDEgKG9wY29kZSkgKyAyIChvcGFyZykgKi8KLX0KLQogc3RhdGljIGludAogYmxvY2tzaXplKGJhc2ljYmxvY2sgKmIpCiB7CkBAIC00MzE0LDcgKzQ5MzgsNyBAQAogICAgIGludCBzaXplID0gMDsKIAogICAgIGZvciAoaSA9IDA7IGkgPCBiLT5iX2l1c2VkOyBpKyspCi0gICAgICAgIHNpemUgKz0gaW5zdHJzaXplKCZiLT5iX2luc3RyW2ldKTsKKyAgICAgICAgc2l6ZSArPSBpbnN0cnNpemUoYi0+Yl9pbnN0cltpXS5pX29wYXJnKTsKICAgICByZXR1cm4gc2l6ZTsKIH0KIApAQCAtNDMyOSwxMSArNDk1MywxMCBAQAogICAgIFB5X3NzaXplX3QgbGVuOwogICAgIHVuc2lnbmVkIGNoYXIgKmxub3RhYjsKIAotICAgIGRfYnl0ZWNvZGUgPSBhLT5hX29mZnNldCAtIGEtPmFfbGluZW5vX29mZjsKKyAgICBkX2J5dGVjb2RlID0gKGEtPmFfb2Zmc2V0IC0gYS0+YV9saW5lbm9fb2ZmKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpOwogICAgIGRfbGluZW5vID0gaS0+aV9saW5lbm8gLSBhLT5hX2xpbmVubzsKIAogICAgIGFzc2VydChkX2J5dGVjb2RlID49IDApOwotICAgIGFzc2VydChkX2xpbmVubyA+PSAwKTsKIAogICAgIGlmKGRfYnl0ZWNvZGUgPT0gMCAmJiBkX2xpbmVubyA9PSAwKQogICAgICAgICByZXR1cm4gMTsKQEAgLTQzNjMsOSArNDk4NiwyMSBAQAogICAgICAgICBkX2J5dGVjb2RlIC09IG5jb2RlcyAqIDI1NTsKICAgICAgICAgYS0+YV9sbm90YWJfb2ZmICs9IG5jb2RlcyAqIDI7CiAgICAgfQotICAgIGFzc2VydChkX2J5dGVjb2RlIDw9IDI1NSk7Ci0gICAgaWYgKGRfbGluZW5vID4gMjU1KSB7Ci0gICAgICAgIGludCBqLCBuYnl0ZXMsIG5jb2RlcyA9IGRfbGluZW5vIC8gMjU1OworICAgIGFzc2VydCgwIDw9IGRfYnl0ZWNvZGUgJiYgZF9ieXRlY29kZSA8PSAyNTUpOworCisgICAgaWYgKGRfbGluZW5vIDwgLTEyOCB8fCAxMjcgPCBkX2xpbmVubykgeworICAgICAgICBpbnQgaiwgbmJ5dGVzLCBuY29kZXMsIGs7CisgICAgICAgIGlmIChkX2xpbmVubyA8IDApIHsKKyAgICAgICAgICAgIGsgPSAtMTI4OworICAgICAgICAgICAgLyogdXNlIGRpdmlzaW9uIG9uIHBvc2l0aXZlIG51bWJlcnMgKi8KKyAgICAgICAgICAgIG5jb2RlcyA9ICgtZF9saW5lbm8pIC8gMTI4OworICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgayA9IDEyNzsKKyAgICAgICAgICAgIG5jb2RlcyA9IGRfbGluZW5vIC8gMTI3OworICAgICAgICB9CisgICAgICAgIGRfbGluZW5vIC09IG5jb2RlcyAqIGs7CisgICAgICAgIGFzc2VydChuY29kZXMgPj0gMSk7CiAgICAgICAgIG5ieXRlcyA9IGEtPmFfbG5vdGFiX29mZiArIDIgKiBuY29kZXM7CiAgICAgICAgIGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9sbm90YWIpOwogICAgICAgICBpZiAobmJ5dGVzID49IGxlbikgewpAQCAtNDM4MywxNSArNTAxOCwxNSBAQAogICAgICAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciAqKQogICAgICAgICAgICAgICAgICAgIFB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfbG5vdGFiKSArIGEtPmFfbG5vdGFiX29mZjsKICAgICAgICAgKmxub3RhYisrID0gZF9ieXRlY29kZTsKLSAgICAgICAgKmxub3RhYisrID0gMjU1OworICAgICAgICAqbG5vdGFiKysgPSBrOwogICAgICAgICBkX2J5dGVjb2RlID0gMDsKICAgICAgICAgZm9yIChqID0gMTsgaiA8IG5jb2RlczsgaisrKSB7CiAgICAgICAgICAgICAqbG5vdGFiKysgPSAwOwotICAgICAgICAgICAgKmxub3RhYisrID0gMjU1OworICAgICAgICAgICAgKmxub3RhYisrID0gazsKICAgICAgICAgfQotICAgICAgICBkX2xpbmVubyAtPSBuY29kZXMgKiAyNTU7CiAgICAgICAgIGEtPmFfbG5vdGFiX29mZiArPSBuY29kZXMgKiAyOwogICAgIH0KKyAgICBhc3NlcnQoLTEyOCA8PSBkX2xpbmVubyAmJiBkX2xpbmVubyA8PSAxMjcpOwogCiAgICAgbGVuID0gUHlCeXRlc19HRVRfU0laRShhLT5hX2xub3RhYik7CiAgICAgaWYgKGEtPmFfbG5vdGFiX29mZiArIDIgPj0gbGVuKSB7CkBAIC00NDIzLDM4ICs1MDU4LDIzIEBACiBzdGF0aWMgaW50CiBhc3NlbWJsZV9lbWl0KHN0cnVjdCBhc3NlbWJsZXIgKmEsIHN0cnVjdCBpbnN0ciAqaSkKIHsKLSAgICBpbnQgc2l6ZSwgYXJnID0gMCwgZXh0ID0gMDsKKyAgICBpbnQgc2l6ZSwgYXJnID0gMDsKICAgICBQeV9zc2l6ZV90IGxlbiA9IFB5Qnl0ZXNfR0VUX1NJWkUoYS0+YV9ieXRlY29kZSk7Ci0gICAgY2hhciAqY29kZTsKKyAgICBfUHlfQ09ERVVOSVQgKmNvZGU7CiAKLSAgICBzaXplID0gaW5zdHJzaXplKGkpOwotICAgIGlmIChpLT5pX2hhc2FyZykgewotICAgICAgICBhcmcgPSBpLT5pX29wYXJnOwotICAgICAgICBleHQgPSBhcmcgPj4gMTY7Ci0gICAgfQorICAgIGFyZyA9IGktPmlfb3Bhcmc7CisgICAgc2l6ZSA9IGluc3Ryc2l6ZShhcmcpOwogICAgIGlmIChpLT5pX2xpbmVubyAmJiAhYXNzZW1ibGVfbG5vdGFiKGEsIGkpKQogICAgICAgICByZXR1cm4gMDsKLSAgICBpZiAoYS0+YV9vZmZzZXQgKyBzaXplID49IGxlbikgeworICAgIGlmIChhLT5hX29mZnNldCArIHNpemUgPj0gbGVuIC8gKGludClzaXplb2YoX1B5X0NPREVVTklUKSkgewogICAgICAgICBpZiAobGVuID4gUFlfU1NJWkVfVF9NQVggLyAyKQogICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgIGlmIChfUHlCeXRlc19SZXNpemUoJmEtPmFfYnl0ZWNvZGUsIGxlbiAqIDIpIDwgMCkKICAgICAgICAgICAgIHJldHVybiAwOwogICAgIH0KLSAgICBjb2RlID0gUHlCeXRlc19BU19TVFJJTkcoYS0+YV9ieXRlY29kZSkgKyBhLT5hX29mZnNldDsKKyAgICBjb2RlID0gKF9QeV9DT0RFVU5JVCAqKVB5Qnl0ZXNfQVNfU1RSSU5HKGEtPmFfYnl0ZWNvZGUpICsgYS0+YV9vZmZzZXQ7CiAgICAgYS0+YV9vZmZzZXQgKz0gc2l6ZTsKLSAgICBpZiAoc2l6ZSA9PSA2KSB7Ci0gICAgICAgIGFzc2VydChpLT5pX2hhc2FyZyk7Ci0gICAgICAgICpjb2RlKysgPSAoY2hhcilFWFRFTkRFRF9BUkc7Ci0gICAgICAgICpjb2RlKysgPSBleHQgJiAweGZmOwotICAgICAgICAqY29kZSsrID0gZXh0ID4+IDg7Ci0gICAgICAgIGFyZyAmPSAweGZmZmY7Ci0gICAgfQotICAgICpjb2RlKysgPSBpLT5pX29wY29kZTsKLSAgICBpZiAoaS0+aV9oYXNhcmcpIHsKLSAgICAgICAgYXNzZXJ0KHNpemUgPT0gMyB8fCBzaXplID09IDYpOwotICAgICAgICAqY29kZSsrID0gYXJnICYgMHhmZjsKLSAgICAgICAgKmNvZGUrKyA9IGFyZyA+PiA4OwotICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZSwgaS0+aV9vcGNvZGUsIGFyZywgc2l6ZSk7CiAgICAgcmV0dXJuIDE7CiB9CiAKQEAgLTQ0NjIsNyArNTA4Miw3IEBACiBhc3NlbWJsZV9qdW1wX29mZnNldHMoc3RydWN0IGFzc2VtYmxlciAqYSwgc3RydWN0IGNvbXBpbGVyICpjKQogewogICAgIGJhc2ljYmxvY2sgKmI7Ci0gICAgaW50IGJzaXplLCB0b3RzaXplLCBleHRlbmRlZF9hcmdfY291bnQgPSAwLCBsYXN0X2V4dGVuZGVkX2FyZ19jb3VudDsKKyAgICBpbnQgYnNpemUsIHRvdHNpemUsIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGU7CiAgICAgaW50IGk7CiAKICAgICAvKiBDb21wdXRlIHRoZSBzaXplIG9mIGVhY2ggYmxvY2sgYW5kIGZpeHVwIGp1bXAgYXJncy4KQEAgLTQ0NzUsMjcgKzUwOTUsMjcgQEAKICAgICAgICAgICAgIGItPmJfb2Zmc2V0ID0gdG90c2l6ZTsKICAgICAgICAgICAgIHRvdHNpemUgKz0gYnNpemU7CiAgICAgICAgIH0KLSAgICAgICAgbGFzdF9leHRlbmRlZF9hcmdfY291bnQgPSBleHRlbmRlZF9hcmdfY291bnQ7Ci0gICAgICAgIGV4dGVuZGVkX2FyZ19jb3VudCA9IDA7CisgICAgICAgIGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUgPSAwOwogICAgICAgICBmb3IgKGIgPSBjLT51LT51X2Jsb2NrczsgYiAhPSBOVUxMOyBiID0gYi0+Yl9saXN0KSB7CiAgICAgICAgICAgICBic2l6ZSA9IGItPmJfb2Zmc2V0OwogICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGItPmJfaXVzZWQ7IGkrKykgewogICAgICAgICAgICAgICAgIHN0cnVjdCBpbnN0ciAqaW5zdHIgPSAmYi0+Yl9pbnN0cltpXTsKKyAgICAgICAgICAgICAgICBpbnQgaXNpemUgPSBpbnN0cnNpemUoaW5zdHItPmlfb3BhcmcpOwogICAgICAgICAgICAgICAgIC8qIFJlbGF0aXZlIGp1bXBzIGFyZSBjb21wdXRlZCByZWxhdGl2ZSB0bwogICAgICAgICAgICAgICAgICAgIHRoZSBpbnN0cnVjdGlvbiBwb2ludGVyIGFmdGVyIGZldGNoaW5nCiAgICAgICAgICAgICAgICAgICAgdGhlIGp1bXAgaW5zdHJ1Y3Rpb24uCiAgICAgICAgICAgICAgICAgKi8KLSAgICAgICAgICAgICAgICBic2l6ZSArPSBpbnN0cnNpemUoaW5zdHIpOwotICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qYWJzKQorICAgICAgICAgICAgICAgIGJzaXplICs9IGlzaXplOworICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9qYWJzIHx8IGluc3RyLT5pX2pyZWwpIHsKICAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgPSBpbnN0ci0+aV90YXJnZXQtPmJfb2Zmc2V0OwotICAgICAgICAgICAgICAgIGVsc2UgaWYgKGluc3RyLT5pX2pyZWwpIHsKLSAgICAgICAgICAgICAgICAgICAgaW50IGRlbHRhID0gaW5zdHItPmlfdGFyZ2V0LT5iX29mZnNldCAtIGJzaXplOwotICAgICAgICAgICAgICAgICAgICBpbnN0ci0+aV9vcGFyZyA9IGRlbHRhOworICAgICAgICAgICAgICAgICAgICBpZiAoaW5zdHItPmlfanJlbCkgeworICAgICAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgLT0gYnNpemU7CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaW5zdHItPmlfb3BhcmcgKj0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CisgICAgICAgICAgICAgICAgICAgIGlmIChpbnN0cnNpemUoaW5zdHItPmlfb3BhcmcpICE9IGlzaXplKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBleHRlbmRlZF9hcmdfcmVjb21waWxlID0gMTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGlmIChpbnN0ci0+aV9vcGFyZyA+IDB4ZmZmZikKLSAgICAgICAgICAgICAgICAgICAgZXh0ZW5kZWRfYXJnX2NvdW50Kys7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNDUwNSw3ICs1MTI1LDcgQEAKIAogICAgICAgICBUaGUgaXNzdWUgaXMgdGhhdCBpbiB0aGUgZmlyc3QgbG9vcCBibG9ja3NpemUoKSBpcyBjYWxsZWQKICAgICAgICAgd2hpY2ggY2FsbHMgaW5zdHJzaXplKCkgd2hpY2ggcmVxdWlyZXMgaV9vcGFyZyBiZSBzZXQKLSAgICAgICAgYXBwcm9wcmlhdGVseS4gICAgICAgICAgVGhlcmUgaXMgYSBib290c3RyYXAgcHJvYmxlbSBiZWNhdXNlCisgICAgICAgIGFwcHJvcHJpYXRlbHkuIFRoZXJlIGlzIGEgYm9vdHN0cmFwIHByb2JsZW0gYmVjYXVzZQogICAgICAgICBpX29wYXJnIGlzIGNhbGN1bGF0ZWQgaW4gdGhlIHNlY29uZCBsb29wIGFib3ZlLgogCiAgICAgICAgIFNvIHdlIGxvb3AgdW50aWwgd2Ugc3RvcCBzZWVpbmcgbmV3IEVYVEVOREVEX0FSR3MuCkBAIC00NTEzLDcgKzUxMzMsNyBAQAogICAgICAgICBvbmVzIGluIGp1bXAgaW5zdHJ1Y3Rpb25zLiAgU28gdGhpcyBzaG91bGQgY29udmVyZ2UKICAgICAgICAgZmFpcmx5IHF1aWNrbHkuCiAgICAgKi8KLSAgICB9IHdoaWxlIChsYXN0X2V4dGVuZGVkX2FyZ19jb3VudCAhPSBleHRlbmRlZF9hcmdfY291bnQpOworICAgIH0gd2hpbGUgKGV4dGVuZGVkX2FyZ19yZWNvbXBpbGUpOwogfQogCiBzdGF0aWMgUHlPYmplY3QgKgpAQCAtNDU0OSw4ICs1MTY5LDEyIEBACiAgICAgICAgIGZsYWdzIHw9IENPX05FV0xPQ0FMUyB8IENPX09QVElNSVpFRDsKICAgICAgICAgaWYgKHN0ZS0+c3RlX25lc3RlZCkKICAgICAgICAgICAgIGZsYWdzIHw9IENPX05FU1RFRDsKLSAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvcikKKyAgICAgICAgaWYgKHN0ZS0+c3RlX2dlbmVyYXRvciAmJiAhc3RlLT5zdGVfY29yb3V0aW5lKQogICAgICAgICAgICAgZmxhZ3MgfD0gQ09fR0VORVJBVE9SOworICAgICAgICBpZiAoIXN0ZS0+c3RlX2dlbmVyYXRvciAmJiBzdGUtPnN0ZV9jb3JvdXRpbmUpCisgICAgICAgICAgICBmbGFncyB8PSBDT19DT1JPVVRJTkU7CisgICAgICAgIGlmIChzdGUtPnN0ZV9nZW5lcmF0b3IgJiYgc3RlLT5zdGVfY29yb3V0aW5lKQorICAgICAgICAgICAgZmxhZ3MgfD0gQ09fQVNZTkNfR0VORVJBVE9SOwogICAgICAgICBpZiAoc3RlLT5zdGVfdmFyYXJncykKICAgICAgICAgICAgIGZsYWdzIHw9IENPX1ZBUkFSR1M7CiAgICAgICAgIGlmIChzdGUtPnN0ZV92YXJrZXl3b3JkcykKQEAgLTQ2NTksOSArNTI4Myw5IEBACiAgICAgY2hhciBhcmdbMTI4XTsKIAogICAgICphcmcgPSAnXDAnOwotICAgIGlmIChpLT5pX2hhc2FyZykKKyAgICBpZiAoSEFTX0FSRyhpLT5pX29wY29kZSkpIHsKICAgICAgICAgc3ByaW50ZihhcmcsICJhcmc6ICVkICIsIGktPmlfb3BhcmcpOwotCisgICAgfQogICAgIGZwcmludGYoc3RkZXJyLCAibGluZTogJWQsIG9wY29kZTogJWQgJXMlcyVzXG4iLAogICAgICAgICAgICAgICAgICAgICBpLT5pX2xpbmVubywgaS0+aV9vcGNvZGUsIGFyZywgamFicywganJlbCk7CiB9CkBAIC00NzExLDcgKzUzMzUsNyBAQAogCiAgICAgLyogU2V0IGZpcnN0bGluZW5vIGlmIGl0IHdhc24ndCBleHBsaWNpdGx5IHNldC4gKi8KICAgICBpZiAoIWMtPnUtPnVfZmlyc3RsaW5lbm8pIHsKLSAgICAgICAgaWYgKGVudHJ5YmxvY2sgJiYgZW50cnlibG9jay0+Yl9pbnN0cikKKyAgICAgICAgaWYgKGVudHJ5YmxvY2sgJiYgZW50cnlibG9jay0+Yl9pbnN0ciAmJiBlbnRyeWJsb2NrLT5iX2luc3RyLT5pX2xpbmVubykKICAgICAgICAgICAgIGMtPnUtPnVfZmlyc3RsaW5lbm8gPSBlbnRyeWJsb2NrLT5iX2luc3RyLT5pX2xpbmVubzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgYy0+dS0+dV9maXJzdGxpbmVubyA9IDE7CkBAIC00NzMzLDcgKzUzNTcsNyBAQAogCiAgICAgaWYgKF9QeUJ5dGVzX1Jlc2l6ZSgmYS5hX2xub3RhYiwgYS5hX2xub3RhYl9vZmYpIDwgMCkKICAgICAgICAgZ290byBlcnJvcjsKLSAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfYnl0ZWNvZGUsIGEuYV9vZmZzZXQpIDwgMCkKKyAgICBpZiAoX1B5Qnl0ZXNfUmVzaXplKCZhLmFfYnl0ZWNvZGUsIGEuYV9vZmZzZXQgKiBzaXplb2YoX1B5X0NPREVVTklUKSkgPCAwKQogICAgICAgICBnb3RvIGVycm9yOwogCiAgICAgY28gPSBtYWtlY29kZShjLCAmYSk7CkBAIC00NzQ5LDQgKzUzNzMsMyBAQAogewogICAgIHJldHVybiBQeUFTVF9Db21waWxlRXgobW9kLCBmaWxlbmFtZSwgZmxhZ3MsIC0xLCBhcmVuYSk7CiB9Ci0KZGlmZiAtLWdpdCBhL1B5dGhvbi9jb25kdmFyLmggYi9QeXRob24vY29uZHZhci5oCmluZGV4IGNlZDkxMGYuLjlhNzFiMTcgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9jb25kdmFyLmgKKysrIGIvUHl0aG9uL2NvbmR2YXIuaApAQCAtODksNyArODksNyBAQAogCiAvKiByZXR1cm4gMCBmb3Igc3VjY2VzcywgMSBvbiB0aW1lb3V0LCAtMSBvbiBlcnJvciAqLwogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmNvbmQsIFB5TVVURVhfVCAqbXV0LCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjb25kLCBQeU1VVEVYX1QgKm11dCwgbG9uZyBsb25nIHVzKQogewogICAgIGludCByOwogICAgIHN0cnVjdCB0aW1lc3BlYyB0czsKQEAgLTI3MCw3ICsyNzAsNyBAQAogfQogCiBQeV9MT0NBTF9JTkxJTkUoaW50KQotUHlDT05EX1RJTUVEV0FJVChQeUNPTkRfVCAqY3YsIFB5TVVURVhfVCAqY3MsIFBZX0xPTkdfTE9ORyB1cykKK1B5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBsb25nIGxvbmcgdXMpCiB7CiAgICAgcmV0dXJuIF9QeUNPTkRfV0FJVF9NUyhjdiwgY3MsIChEV09SRCkodXMvMTAwMCkpOwogfQpAQCAtMzYzLDcgKzM2Myw3IEBACiAgKiAyIHRvIGluZGljYXRlIHRoYXQgd2UgZG9uJ3Qga25vdy4KICAqLwogUHlfTE9DQUxfSU5MSU5FKGludCkKLVB5Q09ORF9USU1FRFdBSVQoUHlDT05EX1QgKmN2LCBQeU1VVEVYX1QgKmNzLCBQWV9MT05HX0xPTkcgdXMpCitQeUNPTkRfVElNRURXQUlUKFB5Q09ORF9UICpjdiwgUHlNVVRFWF9UICpjcywgbG9uZyBsb25nIHVzKQogewogICAgIHJldHVybiBTbGVlcENvbmRpdGlvblZhcmlhYmxlU1JXKGN2LCBjcywgKERXT1JEKSh1cy8xMDAwKSwgMCkgPyAyIDogLTE7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vZHRvYS5jIGIvUHl0aG9uL2R0b2EuYwppbmRleCAzZGE1NDZlLi5lZmNhZGMzIDEwMDY0NAotLS0gYS9QeXRob24vZHRvYS5jCisrKyBiL1B5dGhvbi9kdG9hLmMKQEAgLTE1MSwxOCArMTUxLDkgQEAKICNlbmRpZgogCiAKLSNpZiBkZWZpbmVkKEhBVkVfVUlOVDMyX1QpICYmIGRlZmluZWQoSEFWRV9JTlQzMl9UKQotdHlwZWRlZiBQWV9VSU5UMzJfVCBVTG9uZzsKLXR5cGVkZWYgUFlfSU5UMzJfVCBMb25nOwotI2Vsc2UKLSNlcnJvciAiRmFpbGVkIHRvIGZpbmQgYW4gZXhhY3Qtd2lkdGggMzItYml0IGludGVnZXIgdHlwZSIKLSNlbmRpZgotCi0jaWYgZGVmaW5lZChIQVZFX1VJTlQ2NF9UKQotI2RlZmluZSBVTExvbmcgUFlfVUlOVDY0X1QKLSNlbHNlCi0jdW5kZWYgVUxMb25nCi0jZW5kaWYKK3R5cGVkZWYgdWludDMyX3QgVUxvbmc7Cit0eXBlZGVmIGludDMyX3QgTG9uZzsKK3R5cGVkZWYgdWludDY0X3QgVUxMb25nOwogCiAjdW5kZWYgREVCVUcKICNpZmRlZiBQeV9ERUJVRwpAQCAtNDU3LDEzICs0NDgsOCBAQAogbXVsdGFkZChCaWdpbnQgKmIsIGludCBtLCBpbnQgYSkgICAgICAgLyogbXVsdGlwbHkgYnkgbSBhbmQgYWRkIGEgKi8KIHsKICAgICBpbnQgaSwgd2RzOwotI2lmZGVmIFVMTG9uZwogICAgIFVMb25nICp4OwogICAgIFVMTG9uZyBjYXJyeSwgeTsKLSNlbHNlCi0gICAgVUxvbmcgY2FycnksICp4LCB5OwotICAgIFVMb25nIHhpLCB6OwotI2VuZGlmCiAgICAgQmlnaW50ICpiMTsKIAogICAgIHdkcyA9IGItPndkczsKQEAgLTQ3MSwxNyArNDU3LDkgQEAKICAgICBpID0gMDsKICAgICBjYXJyeSA9IGE7CiAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICB5ID0gKnggKiAoVUxMb25nKW0gKyBjYXJyeTsKICAgICAgICAgY2FycnkgPSB5ID4+IDMyOwogICAgICAgICAqeCsrID0gKFVMb25nKSh5ICYgRkZGRkZGRkYpOwotI2Vsc2UKLSAgICAgICAgeGkgPSAqeDsKLSAgICAgICAgeSA9ICh4aSAmIDB4ZmZmZikgKiBtICsgY2Fycnk7Ci0gICAgICAgIHogPSAoeGkgPj4gMTYpICogbSArICh5ID4+IDE2KTsKLSAgICAgICAgY2FycnkgPSB6ID4+IDE2OwotICAgICAgICAqeCsrID0gKHogPDwgMTYpICsgKHkgJiAweGZmZmYpOwotI2VuZGlmCiAgICAgfQogICAgIHdoaWxlKCsraSA8IHdkcyk7CiAgICAgaWYgKGNhcnJ5KSB7CkBAIC02NDIsMTIgKzYyMCw3IEBACiAgICAgaW50IGssIHdhLCB3Yiwgd2M7CiAgICAgVUxvbmcgKngsICp4YSwgKnhhZSwgKnhiLCAqeGJlLCAqeGMsICp4YzA7CiAgICAgVUxvbmcgeTsKLSNpZmRlZiBVTExvbmcKICAgICBVTExvbmcgY2FycnksIHo7Ci0jZWxzZQotICAgIFVMb25nIGNhcnJ5LCB6OwotICAgIFVMb25nIHoyOwotI2VuZGlmCiAKICAgICBpZiAoKCFhLT54WzBdICYmIGEtPndkcyA9PSAxKSB8fCAoIWItPnhbMF0gJiYgYi0+d2RzID09IDEpKSB7CiAgICAgICAgIGMgPSBCYWxsb2MoMCk7CkBAIC02NzksNyArNjUyLDYgQEAKICAgICB4YiA9IGItPng7CiAgICAgeGJlID0geGIgKyB3YjsKICAgICB4YzAgPSBjLT54OwotI2lmZGVmIFVMTG9uZwogICAgIGZvcig7IHhiIDwgeGJlOyB4YzArKykgewogICAgICAgICBpZiAoKHkgPSAqeGIrKykpIHsKICAgICAgICAgICAgIHggPSB4YTsKQEAgLTY5NCwzOSArNjY2LDYgQEAKICAgICAgICAgICAgICp4YyA9IChVTG9uZyljYXJyeTsKICAgICAgICAgfQogICAgIH0KLSNlbHNlCi0gICAgZm9yKDsgeGIgPCB4YmU7IHhiKyssIHhjMCsrKSB7Ci0gICAgICAgIGlmICh5ID0gKnhiICYgMHhmZmZmKSB7Ci0gICAgICAgICAgICB4ID0geGE7Ci0gICAgICAgICAgICB4YyA9IHhjMDsKLSAgICAgICAgICAgIGNhcnJ5ID0gMDsKLSAgICAgICAgICAgIGRvIHsKLSAgICAgICAgICAgICAgICB6ID0gKCp4ICYgMHhmZmZmKSAqIHkgKyAoKnhjICYgMHhmZmZmKSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0geiA+PiAxNjsKLSAgICAgICAgICAgICAgICB6MiA9ICgqeCsrID4+IDE2KSAqIHkgKyAoKnhjID4+IDE2KSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0gejIgPj4gMTY7Ci0gICAgICAgICAgICAgICAgU3RvcmVpbmMoeGMsIHoyLCB6KTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIHdoaWxlKHggPCB4YWUpOwotICAgICAgICAgICAgKnhjID0gY2Fycnk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKHkgPSAqeGIgPj4gMTYpIHsKLSAgICAgICAgICAgIHggPSB4YTsKLSAgICAgICAgICAgIHhjID0geGMwOwotICAgICAgICAgICAgY2FycnkgPSAwOwotICAgICAgICAgICAgejIgPSAqeGM7Ci0gICAgICAgICAgICBkbyB7Ci0gICAgICAgICAgICAgICAgeiA9ICgqeCAmIDB4ZmZmZikgKiB5ICsgKCp4YyA+PiAxNikgKyBjYXJyeTsKLSAgICAgICAgICAgICAgICBjYXJyeSA9IHogPj4gMTY7Ci0gICAgICAgICAgICAgICAgU3RvcmVpbmMoeGMsIHosIHoyKTsKLSAgICAgICAgICAgICAgICB6MiA9ICgqeCsrID4+IDE2KSAqIHkgKyAoKnhjICYgMHhmZmZmKSArIGNhcnJ5OwotICAgICAgICAgICAgICAgIGNhcnJ5ID0gejIgPj4gMTY7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICB3aGlsZSh4IDwgeGFlKTsKLSAgICAgICAgICAgICp4YyA9IHoyOwotICAgICAgICB9Ci0gICAgfQotI2VuZGlmCiAgICAgZm9yKHhjMCA9IGMtPngsIHhjID0geGMwICsgd2M7IHdjID4gMCAmJiAhKi0teGM7IC0td2MpIDsKICAgICBjLT53ZHMgPSB3YzsKICAgICByZXR1cm4gYzsKQEAgLTc0Nyw3ICs2ODYsNyBAQAogewogICAgIEJpZ2ludCAqYjEsICpwNSwgKnA1MTsKICAgICBpbnQgaTsKLSAgICBzdGF0aWMgaW50IHAwNVszXSA9IHsgNSwgMjUsIDEyNSB9OworICAgIHN0YXRpYyBjb25zdCBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CiAKICAgICBpZiAoKGkgPSBrICYgMykpIHsKICAgICAgICAgYiA9IG11bHRhZGQoYiwgcDA1W2ktMV0sIDApOwpAQCAtODAzLDcgKzc0Miw3IEBACiB7CiAgICAgQmlnaW50ICpiMSwgKnA1LCAqcDUxOwogICAgIGludCBpOwotICAgIHN0YXRpYyBpbnQgcDA1WzNdID0geyA1LCAyNSwgMTI1IH07CisgICAgc3RhdGljIGNvbnN0IGludCBwMDVbM10gPSB7IDUsIDI1LCAxMjUgfTsKIAogICAgIGlmICgoaSA9IGsgJiAzKSkgewogICAgICAgICBiID0gbXVsdGFkZChiLCBwMDVbaS0xXSwgMCk7CkBAIC05MzUsMTIgKzg3NCw3IEBACiAgICAgQmlnaW50ICpjOwogICAgIGludCBpLCB3YSwgd2I7CiAgICAgVUxvbmcgKnhhLCAqeGFlLCAqeGIsICp4YmUsICp4YzsKLSNpZmRlZiBVTExvbmcKICAgICBVTExvbmcgYm9ycm93LCB5OwotI2Vsc2UKLSAgICBVTG9uZyBib3Jyb3csIHk7Ci0gICAgVUxvbmcgejsKLSNlbmRpZgogCiAgICAgaSA9IGNtcChhLGIpOwogICAgIGlmICghaSkgewpAQCAtOTcxLDcgKzkwNSw2IEBACiAgICAgeGJlID0geGIgKyB3YjsKICAgICB4YyA9IGMtPng7CiAgICAgYm9ycm93ID0gMDsKLSNpZmRlZiBVTExvbmcKICAgICBkbyB7CiAgICAgICAgIHkgPSAoVUxMb25nKSp4YSsrIC0gKnhiKysgLSBib3Jyb3c7CiAgICAgICAgIGJvcnJvdyA9IHkgPj4gMzIgJiAoVUxvbmcpMTsKQEAgLTk4MywyMyArOTE2LDYgQEAKICAgICAgICAgYm9ycm93ID0geSA+PiAzMiAmIChVTG9uZykxOwogICAgICAgICAqeGMrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKICAgICB9Ci0jZWxzZQotICAgIGRvIHsKLSAgICAgICAgeSA9ICgqeGEgJiAweGZmZmYpIC0gKCp4YiAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgIHogPSAoKnhhKysgPj4gMTYpIC0gKCp4YisrID4+IDE2KSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgU3RvcmVpbmMoeGMsIHosIHkpOwotICAgIH0KLSAgICB3aGlsZSh4YiA8IHhiZSk7Ci0gICAgd2hpbGUoeGEgPCB4YWUpIHsKLSAgICAgICAgeSA9ICgqeGEgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICB6ID0gKCp4YSsrID4+IDE2KSAtIGJvcnJvdzsKLSAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgU3RvcmVpbmMoeGMsIHosIHkpOwotICAgIH0KLSNlbmRpZgogICAgIHdoaWxlKCEqLS14YykKICAgICAgICAgd2EtLTsKICAgICBjLT53ZHMgPSB3YTsKQEAgLTEyNDQsMTIgKzExNjAsNyBAQAogewogICAgIGludCBuOwogICAgIFVMb25nICpieCwgKmJ4ZSwgcSwgKnN4LCAqc3hlOwotI2lmZGVmIFVMTG9uZwogICAgIFVMTG9uZyBib3Jyb3csIGNhcnJ5LCB5LCB5czsKLSNlbHNlCi0gICAgVUxvbmcgYm9ycm93LCBjYXJyeSwgeSwgeXM7Ci0gICAgVUxvbmcgc2ksIHosIHpzOwotI2VuZGlmCiAKICAgICBuID0gUy0+d2RzOwogI2lmZGVmIERFQlVHCkBAIC0xMjcxLDIzICsxMTgyLDExIEBACiAgICAgICAgIGJvcnJvdyA9IDA7CiAgICAgICAgIGNhcnJ5ID0gMDsKICAgICAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICAgICAgeXMgPSAqc3grKyAqIChVTExvbmcpcSArIGNhcnJ5OwogICAgICAgICAgICAgY2FycnkgPSB5cyA+PiAzMjsKICAgICAgICAgICAgIHkgPSAqYnggLSAoeXMgJiBGRkZGRkZGRikgLSBib3Jyb3c7CiAgICAgICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICAgICAqYngrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKLSNlbHNlCi0gICAgICAgICAgICBzaSA9ICpzeCsrOwotICAgICAgICAgICAgeXMgPSAoc2kgJiAweGZmZmYpICogcSArIGNhcnJ5OwotICAgICAgICAgICAgenMgPSAoc2kgPj4gMTYpICogcSArICh5cyA+PiAxNik7Ci0gICAgICAgICAgICBjYXJyeSA9IHpzID4+IDE2OwotICAgICAgICAgICAgeSA9ICgqYnggJiAweGZmZmYpIC0gKHlzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh5ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICB6ID0gKCpieCA+PiAxNikgLSAoenMgJiAweGZmZmYpIC0gYm9ycm93OwotICAgICAgICAgICAgYm9ycm93ID0gKHogJiAweDEwMDAwKSA+PiAxNjsKLSAgICAgICAgICAgIFN0b3JlaW5jKGJ4LCB6LCB5KTsKLSNlbmRpZgogICAgICAgICB9CiAgICAgICAgIHdoaWxlKHN4IDw9IHN4ZSk7CiAgICAgICAgIGlmICghKmJ4ZSkgewpAQCAtMTMwNCwyMyArMTIwMywxMSBAQAogICAgICAgICBieCA9IGItPng7CiAgICAgICAgIHN4ID0gUy0+eDsKICAgICAgICAgZG8gewotI2lmZGVmIFVMTG9uZwogICAgICAgICAgICAgeXMgPSAqc3grKyArIGNhcnJ5OwogICAgICAgICAgICAgY2FycnkgPSB5cyA+PiAzMjsKICAgICAgICAgICAgIHkgPSAqYnggLSAoeXMgJiBGRkZGRkZGRikgLSBib3Jyb3c7CiAgICAgICAgICAgICBib3Jyb3cgPSB5ID4+IDMyICYgKFVMb25nKTE7CiAgICAgICAgICAgICAqYngrKyA9IChVTG9uZykoeSAmIEZGRkZGRkZGKTsKLSNlbHNlCi0gICAgICAgICAgICBzaSA9ICpzeCsrOwotICAgICAgICAgICAgeXMgPSAoc2kgJiAweGZmZmYpICsgY2Fycnk7Ci0gICAgICAgICAgICB6cyA9IChzaSA+PiAxNikgKyAoeXMgPj4gMTYpOwotICAgICAgICAgICAgY2FycnkgPSB6cyA+PiAxNjsKLSAgICAgICAgICAgIHkgPSAoKmJ4ICYgMHhmZmZmKSAtICh5cyAmIDB4ZmZmZikgLSBib3Jyb3c7Ci0gICAgICAgICAgICBib3Jyb3cgPSAoeSAmIDB4MTAwMDApID4+IDE2OwotICAgICAgICAgICAgeiA9ICgqYnggPj4gMTYpIC0gKHpzICYgMHhmZmZmKSAtIGJvcnJvdzsKLSAgICAgICAgICAgIGJvcnJvdyA9ICh6ICYgMHgxMDAwMCkgPj4gMTY7Ci0gICAgICAgICAgICBTdG9yZWluYyhieCwgeiwgeSk7Ci0jZW5kaWYKICAgICAgICAgfQogICAgICAgICB3aGlsZShzeCA8PSBzeGUpOwogICAgICAgICBieCA9IGItPng7CkBAIC0yMzE1LDcgKzIyMDIsNyBAQAogfQogCiBzdGF0aWMgY2hhciAqCi1ucnZfYWxsb2MoY2hhciAqcywgY2hhciAqKnJ2ZSwgaW50IG4pCitucnZfYWxsb2MoY29uc3QgY2hhciAqcywgY2hhciAqKnJ2ZSwgaW50IG4pCiB7CiAgICAgY2hhciAqcnYsICp0OwogCmRpZmYgLS1naXQgYS9QeXRob24vZHRyYWNlX3N0dWJzLmMgYi9QeXRob24vZHRyYWNlX3N0dWJzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA1MTM2MwotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi9kdHJhY2Vfc3R1YnMuYwpAQCAtMCwwICsxLDI0IEBACisjaW5jbHVkZSA8UHl0aG9uLmg+CisjaW5jbHVkZSAicHlkdHJhY2UuaCIKKworI2lmbmRlZiBXSVRIX0RUUkFDRQorZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0xJTkUoY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0ZVTkNUSU9OX0VOVFJZKGNvbnN0IGNoYXIgKmFyZzAsIGNvbnN0IGNoYXIgKmFyZzEsIGludCBhcmcyKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9GVU5DVElPTl9SRVRVUk4oY29uc3QgY2hhciAqYXJnMCwgY29uc3QgY2hhciAqYXJnMSwgaW50IGFyZzIpOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0dDX1NUQVJUKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9HQ19ET05FKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ORVdfU1RBUlQoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX05FV19ET05FKGludCBhcmcwKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBQeURUcmFjZV9JTlNUQU5DRV9ERUxFVEVfU1RBUlQoaW50IGFyZzApOworZXh0ZXJuIGlubGluZSB2b2lkIFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9ET05FKGludCBhcmcwKTsKKworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfTElORV9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfRlVOQ1RJT05fRU5UUllfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0ZVTkNUSU9OX1JFVFVSTl9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfR0NfU1RBUlRfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0dDX0RPTkVfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX05FV19TVEFSVF9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfTkVXX0RPTkVfRU5BQkxFRCh2b2lkKTsKK2V4dGVybiBpbmxpbmUgaW50IFB5RFRyYWNlX0lOU1RBTkNFX0RFTEVURV9TVEFSVF9FTkFCTEVEKHZvaWQpOworZXh0ZXJuIGlubGluZSBpbnQgUHlEVHJhY2VfSU5TVEFOQ0VfREVMRVRFX0RPTkVfRU5BQkxFRCh2b2lkKTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvUHl0aG9uL2R5bmxvYWRfd2luLmMgYi9QeXRob24vZHlubG9hZF93aW4uYwppbmRleCBmMmM3OTZlLi4wNTA1MGNmIDEwMDY0NAotLS0gYS9QeXRob24vZHlubG9hZF93aW4uYworKysgYi9QeXRob24vZHlubG9hZF93aW4uYwpAQCAtMjQsMTIgKzI0LDEwIEBACiAjZGVmaW5lIFBZRF9ERUJVR19TVUZGSVggIiIKICNlbmRpZgogCi0jZGVmaW5lIFNUUklOR0laRTIoeCkgI3gKLSNkZWZpbmUgU1RSSU5HSVpFKHgpIFNUUklOR0laRTIoeCkKICNpZmRlZiBQWURfUExBVEZPUk1fVEFHCi0jZGVmaW5lIFBZRF9UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5jcCIgU1RSSU5HSVpFKFBZX01BSk9SX1ZFUlNJT04pIFNUUklOR0laRShQWV9NSU5PUl9WRVJTSU9OKSAiLSIgUFlEX1BMQVRGT1JNX1RBRyAiLnB5ZCIKKyNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBQeV9TVFJJTkdJRlkoUFlfTUFKT1JfVkVSU0lPTikgUHlfU1RSSU5HSUZZKFBZX01JTk9SX1ZFUlNJT04pICItIiBQWURfUExBVEZPUk1fVEFHICIucHlkIgogI2Vsc2UKLSNkZWZpbmUgUFlEX1RBR0dFRF9TVUZGSVggUFlEX0RFQlVHX1NVRkZJWCAiLmNwIiBTVFJJTkdJWkUoUFlfTUFKT1JfVkVSU0lPTikgU1RSSU5HSVpFKFBZX01JTk9SX1ZFUlNJT04pICIucHlkIgorI2RlZmluZSBQWURfVEFHR0VEX1NVRkZJWCBQWURfREVCVUdfU1VGRklYICIuY3AiIFB5X1NUUklOR0lGWShQWV9NQUpPUl9WRVJTSU9OKSBQeV9TVFJJTkdJRlkoUFlfTUlOT1JfVkVSU0lPTikgIi5weWQiCiAjZW5kaWYKIAogI2RlZmluZSBQWURfVU5UQUdHRURfU1VGRklYIFBZRF9ERUJVR19TVUZGSVggIi5weWQiCkBAIC00Myw3ICs0MSw3IEBACiAvKiBDYXNlIGluc2Vuc2l0aXZlIHN0cmluZyBjb21wYXJlLCB0byBhdm9pZCBhbnkgZGVwZW5kZW5jaWVzIG9uIHBhcnRpY3VsYXIKICAgIEMgUlRMIGltcGxlbWVudGF0aW9ucyAqLwogCi1zdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNoYXIgKnN0cmluZzEsIGNoYXIgKnN0cmluZzIpCitzdGF0aWMgaW50IHN0cmNhc2VjbXAgKGNvbnN0IGNoYXIgKnN0cmluZzEsIGNvbnN0IGNoYXIgKnN0cmluZzIpCiB7CiAgICAgaW50IGZpcnN0LCBzZWNvbmQ7CiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9lcnJvcnMuYyBiL1B5dGhvbi9lcnJvcnMuYwppbmRleCBlMTUxY2FiLi4xM2FlNmI0IDEwMDY0NAotLS0gYS9QeXRob24vZXJyb3JzLmMKKysrIGIvUHl0aG9uL2Vycm9ycy5jCkBAIC01Miw2ICs1MiwyMCBAQAogICAgIFB5X1hERUNSRUYob2xkdHJhY2ViYWNrKTsKIH0KIAorc3RhdGljIFB5T2JqZWN0KgorX1B5RXJyX0NyZWF0ZUV4Y2VwdGlvbihQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqdmFsdWUpCit7CisgICAgaWYgKHZhbHVlID09IE5VTEwgfHwgdmFsdWUgPT0gUHlfTm9uZSkgeworICAgICAgICByZXR1cm4gX1B5T2JqZWN0X0NhbGxOb0FyZyhleGNlcHRpb24pOworICAgIH0KKyAgICBlbHNlIGlmIChQeVR1cGxlX0NoZWNrKHZhbHVlKSkgeworICAgICAgICByZXR1cm4gUHlPYmplY3RfQ2FsbChleGNlcHRpb24sIHZhbHVlLCBOVUxMKTsKKyAgICB9CisgICAgZWxzZSB7CisgICAgICAgIHJldHVybiBfUHlPYmplY3RfQ2FsbEFyZzEoZXhjZXB0aW9uLCB2YWx1ZSk7CisgICAgfQorfQorCiB2b2lkCiBQeUVycl9TZXRPYmplY3QoUHlPYmplY3QgKmV4Y2VwdGlvbiwgUHlPYmplY3QgKnZhbHVlKQogewpAQCAtNjYsNiArODAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgZXhjZXB0aW9uKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KKwogICAgIFB5X1hJTkNSRUYodmFsdWUpOwogICAgIGV4Y192YWx1ZSA9IHRzdGF0ZS0+ZXhjX3ZhbHVlOwogICAgIGlmIChleGNfdmFsdWUgIT0gTlVMTCAmJiBleGNfdmFsdWUgIT0gUHlfTm9uZSkgewpAQCAtNzMsMjggKzg4LDIxIEBACiAgICAgICAgIFB5X0lOQ1JFRihleGNfdmFsdWUpOwogICAgICAgICBpZiAodmFsdWUgPT0gTlVMTCB8fCAhUHlFeGNlcHRpb25JbnN0YW5jZV9DaGVjayh2YWx1ZSkpIHsKICAgICAgICAgICAgIC8qIFdlIG11c3Qgbm9ybWFsaXplIHRoZSB2YWx1ZSByaWdodCBub3cgKi8KLSAgICAgICAgICAgIFB5T2JqZWN0ICphcmdzLCAqZml4ZWRfdmFsdWU7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIC8qIElzc3VlICMyMzU3MTogUHlFdmFsX0NhbGxPYmplY3QoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbgorICAgICAgICAgICAgLyogSXNzdWUgIzIzNTcxOiBmdW5jdGlvbnMgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4KICAgICAgICAgICAgICAgIGV4Y2VwdGlvbiBzZXQgKi8KICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBOVUxMIHx8IHZhbHVlID09IFB5X05vbmUpCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfTmV3KDApOwotICAgICAgICAgICAgZWxzZSBpZiAoUHlUdXBsZV9DaGVjayh2YWx1ZSkpIHsKLSAgICAgICAgICAgICAgICBQeV9JTkNSRUYodmFsdWUpOwotICAgICAgICAgICAgICAgIGFyZ3MgPSB2YWx1ZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBhcmdzID0gUHlUdXBsZV9QYWNrKDEsIHZhbHVlKTsKLSAgICAgICAgICAgIGZpeGVkX3ZhbHVlID0gYXJncyA/Ci0gICAgICAgICAgICAgICAgUHlFdmFsX0NhbGxPYmplY3QoZXhjZXB0aW9uLCBhcmdzKSA6IE5VTEw7Ci0gICAgICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOworICAgICAgICAgICAgZml4ZWRfdmFsdWUgPSBfUHlFcnJfQ3JlYXRlRXhjZXB0aW9uKGV4Y2VwdGlvbiwgdmFsdWUpOwogICAgICAgICAgICAgUHlfWERFQ1JFRih2YWx1ZSk7Ci0gICAgICAgICAgICBpZiAoZml4ZWRfdmFsdWUgPT0gTlVMTCkKKyAgICAgICAgICAgIGlmIChmaXhlZF92YWx1ZSA9PSBOVUxMKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgfQorCiAgICAgICAgICAgICB2YWx1ZSA9IGZpeGVkX3ZhbHVlOwogICAgICAgICB9CisKICAgICAgICAgLyogQXZvaWQgcmVmZXJlbmNlIGN5Y2xlcyB0aHJvdWdoIHRoZSBjb250ZXh0IGNoYWluLgogICAgICAgICAgICBUaGlzIGlzIE8oY2hhaW4gbGVuZ3RoKSBidXQgY29udGV4dCBjaGFpbnMgYXJlCiAgICAgICAgICAgIHVzdWFsbHkgdmVyeSBzaG9ydC4gU2Vuc2l0aXZlIHJlYWRlcnMgbWF5IHRyeQpAQCAtMTEwLDcgKzExOCw4IEBACiAgICAgICAgICAgICAgICAgbyA9IGNvbnRleHQ7CiAgICAgICAgICAgICB9CiAgICAgICAgICAgICBQeUV4Y2VwdGlvbl9TZXRDb250ZXh0KHZhbHVlLCBleGNfdmFsdWUpOwotICAgICAgICB9IGVsc2UgeworICAgICAgICB9CisgICAgICAgIGVsc2UgewogICAgICAgICAgICAgUHlfREVDUkVGKGV4Y192YWx1ZSk7CiAgICAgICAgIH0KICAgICB9CkBAIC0yNTgsMjUgKzI2NywxNSBAQAogICAgICAgICAgICBjbGFzcy4KICAgICAgICAgKi8KICAgICAgICAgaWYgKCFpbmNsYXNzIHx8ICFpc19zdWJjbGFzcykgewotICAgICAgICAgICAgUHlPYmplY3QgKmFyZ3MsICpyZXM7CisgICAgICAgICAgICBQeU9iamVjdCAqZml4ZWRfdmFsdWU7CiAKLSAgICAgICAgICAgIGlmICh2YWx1ZSA9PSBQeV9Ob25lKQotICAgICAgICAgICAgICAgIGFyZ3MgPSBQeVR1cGxlX05ldygwKTsKLSAgICAgICAgICAgIGVsc2UgaWYgKFB5VHVwbGVfQ2hlY2sodmFsdWUpKSB7Ci0gICAgICAgICAgICAgICAgUHlfSU5DUkVGKHZhbHVlKTsKLSAgICAgICAgICAgICAgICBhcmdzID0gdmFsdWU7CisgICAgICAgICAgICBmaXhlZF92YWx1ZSA9IF9QeUVycl9DcmVhdGVFeGNlcHRpb24odHlwZSwgdmFsdWUpOworICAgICAgICAgICAgaWYgKGZpeGVkX3ZhbHVlID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGZpbmFsbHk7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgYXJncyA9IFB5VHVwbGVfUGFjaygxLCB2YWx1ZSk7CiAKLSAgICAgICAgICAgIGlmIChhcmdzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAgICAgcmVzID0gUHlFdmFsX0NhbGxPYmplY3QodHlwZSwgYXJncyk7Ci0gICAgICAgICAgICBQeV9ERUNSRUYoYXJncyk7Ci0gICAgICAgICAgICBpZiAocmVzID09IE5VTEwpCi0gICAgICAgICAgICAgICAgZ290byBmaW5hbGx5OwogICAgICAgICAgICAgUHlfREVDUkVGKHZhbHVlKTsKLSAgICAgICAgICAgIHZhbHVlID0gcmVzOworICAgICAgICAgICAgdmFsdWUgPSBmaXhlZF92YWx1ZTsKICAgICAgICAgfQogICAgICAgICAvKiBpZiB0aGUgY2xhc3Mgb2YgdGhlIGluc3RhbmNlIGRvZXNuJ3QgZXhhY3RseSBtYXRjaCB0aGUKICAgICAgICAgICAgY2xhc3Mgb2YgdGhlIHR5cGUsIGJlbGlldmUgdGhlIGluc3RhbmNlCkBAIC02OTgsNTEgKzY5Nyw2MSBAQAogI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KIAogUHlPYmplY3QgKgotUHlFcnJfU2V0SW1wb3J0RXJyb3IoUHlPYmplY3QgKm1zZywgUHlPYmplY3QgKm5hbWUsIFB5T2JqZWN0ICpwYXRoKQorUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeU9iamVjdCAqZXhjZXB0aW9uLCBQeU9iamVjdCAqbXNnLAorICAgIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKIHsKLSAgICBQeU9iamVjdCAqYXJncywgKmt3YXJncywgKmVycm9yOworICAgIGludCBpc3N1YmNsYXNzOworICAgIFB5T2JqZWN0ICprd2FyZ3MsICplcnJvcjsKIAotICAgIGlmIChtc2cgPT0gTlVMTCkKKyAgICBpc3N1YmNsYXNzID0gUHlPYmplY3RfSXNTdWJjbGFzcyhleGNlcHRpb24sIFB5RXhjX0ltcG9ydEVycm9yKTsKKyAgICBpZiAoaXNzdWJjbGFzcyA8IDApIHsKICAgICAgICAgcmV0dXJuIE5VTEw7Ci0KLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICB9CisgICAgZWxzZSBpZiAoIWlzc3ViY2xhc3MpIHsKKyAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwgImV4cGVjdGVkIGEgc3ViY2xhc3Mgb2YgSW1wb3J0RXJyb3IiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAga3dhcmdzID0gUHlEaWN0X05ldygpOwotICAgIGlmIChrd2FyZ3MgPT0gTlVMTCkgewotICAgICAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgaWYgKG1zZyA9PSBOVUxMKSB7CisgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJleHBlY3RlZCBhIG1lc3NhZ2UgYXJndW1lbnQiKTsKICAgICAgICAgcmV0dXJuIE5VTEw7CiAgICAgfQogCiAgICAgaWYgKG5hbWUgPT0gTlVMTCkgewogICAgICAgICBuYW1lID0gUHlfTm9uZTsKICAgICB9Ci0KICAgICBpZiAocGF0aCA9PSBOVUxMKSB7CiAgICAgICAgIHBhdGggPSBQeV9Ob25lOwogICAgIH0KIAotICAgIFB5X0lOQ1JFRihtc2cpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMCwgbXNnKTsKLQotICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKQorICAgIGt3YXJncyA9IFB5RGljdF9OZXcoKTsKKyAgICBpZiAoa3dhcmdzID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICAgIGlmIChQeURpY3RfU2V0SXRlbVN0cmluZyhrd2FyZ3MsICJuYW1lIiwgbmFtZSkgPCAwKSB7CiAgICAgICAgIGdvdG8gZG9uZTsKLSAgICBpZiAoUHlEaWN0X1NldEl0ZW1TdHJpbmcoa3dhcmdzLCAicGF0aCIsIHBhdGgpIDwgMCkKKyAgICB9CisgICAgaWYgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGt3YXJncywgInBhdGgiLCBwYXRoKSA8IDApIHsKICAgICAgICAgZ290byBkb25lOworICAgIH0KIAotICAgIGVycm9yID0gUHlPYmplY3RfQ2FsbChQeUV4Y19JbXBvcnRFcnJvciwgYXJncywga3dhcmdzKTsKKyAgICBlcnJvciA9IF9QeU9iamVjdF9GYXN0Q2FsbERpY3QoZXhjZXB0aW9uLCAmbXNnLCAxLCBrd2FyZ3MpOwogICAgIGlmIChlcnJvciAhPSBOVUxMKSB7CiAgICAgICAgIFB5RXJyX1NldE9iamVjdCgoUHlPYmplY3QgKilQeV9UWVBFKGVycm9yKSwgZXJyb3IpOwogICAgICAgICBQeV9ERUNSRUYoZXJyb3IpOwogICAgIH0KIAogZG9uZToKLSAgICBQeV9ERUNSRUYoYXJncyk7CiAgICAgUHlfREVDUkVGKGt3YXJncyk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CiAKK1B5T2JqZWN0ICoKK1B5RXJyX1NldEltcG9ydEVycm9yKFB5T2JqZWN0ICptc2csIFB5T2JqZWN0ICpuYW1lLCBQeU9iamVjdCAqcGF0aCkKK3sKKyAgICByZXR1cm4gUHlFcnJfU2V0SW1wb3J0RXJyb3JTdWJjbGFzcyhQeUV4Y19JbXBvcnRFcnJvciwgbXNnLCBuYW1lLCBwYXRoKTsKK30KKwogdm9pZAogX1B5RXJyX0JhZEludGVybmFsQ2FsbChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGxpbmVubykKIHsKZGlmZiAtLWdpdCBhL1B5dGhvbi9maWxldXRpbHMuYyBiL1B5dGhvbi9maWxldXRpbHMuYwppbmRleCAyM2VlZDcxLi5lM2JmYjBjIDEwMDY0NAotLS0gYS9QeXRob24vZmlsZXV0aWxzLmMKKysrIGIvUHl0aG9uL2ZpbGV1dGlscy5jCkBAIC00NCw3ICs0NCw3IEBACiAjZW5kaWYKICAgICBpbnQgdmFsaWQ7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAotICAgIHZhbGlkID0gX1B5VmVyaWZ5X2ZkKGZkKSAmJiBpc2F0dHkoZmQpOworICAgIHZhbGlkID0gaXNhdHR5KGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogICAgIGlmICghdmFsaWQpCiAgICAgICAgIFB5X1JFVFVSTl9OT05FOwpAQCAtMTA0LDIzICsxMDQsMjQgQEAKICAgICBjaGFyICpsb2M7CiAjaWYgZGVmaW5lZChIQVZFX0xBTkdJTkZPX0gpICYmIGRlZmluZWQoQ09ERVNFVCkKICAgICBjaGFyICpjb2Rlc2V0LCAqKmFsaWFzOwotICAgIGNoYXIgZW5jb2RpbmdbMTAwXTsKKyAgICBjaGFyIGVuY29kaW5nWzIwXTsgICAvKiBsb25nZXN0IG5hbWU6ICJpc29fNjQ2Lmlydl8xOTkxXDAiICovCiAgICAgaW50IGlzX2FzY2lpOwogICAgIHVuc2lnbmVkIGludCBpOwogICAgIGNoYXIqIGFzY2lpX2FsaWFzZXNbXSA9IHsKICAgICAgICAgImFzY2lpIiwKKyAgICAgICAgLyogQWxpYXNlcyBmcm9tIExpYi9lbmNvZGluZ3MvYWxpYXNlcy5weSAqLwogICAgICAgICAiNjQ2IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMtNC0xOTY4IiwKLSAgICAgICAgImFuc2kteDMuNC0xOTg2IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTY4IiwKKyAgICAgICAgImFuc2lfeDMuNF8xOTg2IiwKKyAgICAgICAgImFuc2lfeDNfNF8xOTY4IiwKICAgICAgICAgImNwMzY3IiwKICAgICAgICAgImNzYXNjaWkiLAogICAgICAgICAiaWJtMzY3IiwKLSAgICAgICAgImlzbzY0Ni11cyIsCi0gICAgICAgICJpc28tNjQ2Lmlydi0xOTkxIiwKLSAgICAgICAgImlzby1pci02IiwKKyAgICAgICAgImlzbzY0Nl91cyIsCisgICAgICAgICJpc29fNjQ2Lmlydl8xOTkxIiwKKyAgICAgICAgImlzb19pcl82IiwKICAgICAgICAgInVzIiwKLSAgICAgICAgInVzLWFzY2lpIiwKKyAgICAgICAgInVzX2FzY2lpIiwKICAgICAgICAgTlVMTAogICAgIH07CiAjZW5kaWYKQEAgLTYxMywxMyArNjE0LDkgQEAKICAgICBIQU5ETEUgaDsKICAgICBpbnQgdHlwZTsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkKLSAgICAgICAgaCA9IElOVkFMSURfSEFORExFX1ZBTFVFOwotICAgIGVsc2UgewotICAgICAgICBfUHlfQkVHSU5fU1VQUFJFU1NfSVBICi0gICAgICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKLSAgICAgICAgX1B5X0VORF9TVVBQUkVTU19JUEgKLSAgICB9CisgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIGggPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKKyAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSAogCiAgICAgaWYgKGggPT0gSU5WQUxJRF9IQU5ETEVfVkFMVUUpIHsKICAgICAgICAgLyogZXJybm8gaXMgYWxyZWFkeSBzZXQgYnkgX2dldF9vc2ZoYW5kbGUsIGJ1dCB3ZSBhbHNvIHNldApAQCAtNjgzLDYgKzY4MCwxMCBAQAogewogICAgIGludCByZXM7CiAKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCiAgICAgcmVzID0gX1B5X2ZzdGF0X25vcmFpc2UoZmQsIHN0YXR1cyk7CiAgICAgUHlfRU5EX0FMTE9XX1RIUkVBRFMKQEAgLTczOCwxMiArNzM5LDYgQEAKICAgICBIQU5ETEUgaGFuZGxlOwogICAgIERXT1JEIGZsYWdzOwogCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtNzk0LDcgKzc4OSw3IEBACiAgICAgaW50IHJlcXVlc3Q7CiAgICAgaW50IGVycjsKICNlbmRpZgotICAgIGludCBmbGFnczsKKyAgICBpbnQgZmxhZ3MsIG5ld19mbGFnczsKICAgICBpbnQgcmVzOwogI2VuZGlmCiAKQEAgLTgxNSwxMiArODEwLDYgQEAKICAgICB9CiAKICNpZmRlZiBNU19XSU5ET1dTCi0gICAgaWYgKCFfUHlWZXJpZnlfZmQoZmQpKSB7Ci0gICAgICAgIGlmIChyYWlzZSkKLSAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICAgICBoYW5kbGUgPSAoSEFORExFKV9nZXRfb3NmaGFuZGxlKGZkKTsKICAgICBfUHlfRU5EX1NVUFBSRVNTX0lQSApAQCAtODg1LDEwICs4NzQsMTggQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIGlmIChpbmhlcml0YWJsZSkKLSAgICAgICAgZmxhZ3MgJj0gfkZEX0NMT0VYRUM7Ci0gICAgZWxzZQotICAgICAgICBmbGFncyB8PSBGRF9DTE9FWEVDOworICAgIGlmIChpbmhlcml0YWJsZSkgeworICAgICAgICBuZXdfZmxhZ3MgPSBmbGFncyAmIH5GRF9DTE9FWEVDOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgbmV3X2ZsYWdzID0gZmxhZ3MgfCBGRF9DTE9FWEVDOworICAgIH0KKworICAgIGlmIChuZXdfZmxhZ3MgPT0gZmxhZ3MpIHsKKyAgICAgICAgLyogRkRfQ0xPRVhFQyBmbGFnIGFscmVhZHkgc2V0L2NsZWFyZWQ6IG5vdGhpbmcgdG8gZG8gKi8KKyAgICAgICAgcmV0dXJuIDA7CisgICAgfQorCiAgICAgcmVzID0gZmNudGwoZmQsIEZfU0VURkQsIGZsYWdzKTsKICAgICBpZiAocmVzIDwgMCkgewogICAgICAgICBpZiAocmFpc2UpCkBAIC0xMTY5LDE5ICsxMTY2LDE1IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAorI2lmZGVmIFdJVEhfVEhSRUFECisgICAgYXNzZXJ0KFB5R0lMU3RhdGVfQ2hlY2soKSk7CisjZW5kaWYKKwogICAgIC8qIF9QeV9yZWFkKCkgbXVzdCBub3QgYmUgY2FsbGVkIHdpdGggYW4gZXhjZXB0aW9uIHNldCwgb3RoZXJ3aXNlIHRoZQogICAgICAqIGNhbGxlciBtYXkgdGhpbmsgdGhhdCByZWFkKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwogICAgIGFzc2VydCghUHlFcnJfT2NjdXJyZWQoKSk7CiAKLSAgICBpZiAoIV9QeVZlcmlmeV9mZChmZCkpIHsKLSAgICAgICAgLyogc2F2ZS9yZXN0b3JlIGVycm5vIGJlY2F1c2UgUHlFcnJfU2V0RnJvbUVycm5vKCkgY2FuIG1vZGlmeSBpdCAqLwotICAgICAgICBlcnIgPSBlcnJubzsKLSAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICBlcnJubyA9IGVycjsKLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogI2lmZGVmIE1TX1dJTkRPV1MKICAgICBpZiAoY291bnQgPiBJTlRfTUFYKSB7CiAgICAgICAgIC8qIE9uIFdpbmRvd3MsIHRoZSBjb3VudCBwYXJhbWV0ZXIgb2YgcmVhZCgpIGlzIGFuIGludCAqLwpAQCAtMTIzNSwxNiArMTIyOCw2IEBACiAgICAgaW50IGVycjsKICAgICBpbnQgYXN5bmNfZXJyID0gMDsKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBpZiAoZ2lsX2hlbGQpIHsKLSAgICAgICAgICAgIC8qIHNhdmUvcmVzdG9yZSBlcnJubyBiZWNhdXNlIFB5RXJyX1NldEZyb21FcnJubygpIGNhbiBtb2RpZnkgaXQgKi8KLSAgICAgICAgICAgIGVyciA9IGVycm5vOwotICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwotICAgICAgICAgICAgZXJybm8gPSBlcnI7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIC0xOwotICAgIH0KLQogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKICNpZmRlZiBNU19XSU5ET1dTCiAgICAgaWYgKGNvdW50ID4gMzI3NjcgJiYgaXNhdHR5KGZkKSkgewpAQCAtMTMyNCw2ICsxMzA3LDEwIEBACiBQeV9zc2l6ZV90CiBfUHlfd3JpdGUoaW50IGZkLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBjb3VudCkKIHsKKyNpZmRlZiBXSVRIX1RIUkVBRAorICAgIGFzc2VydChQeUdJTFN0YXRlX0NoZWNrKCkpOworI2VuZGlmCisKICAgICAvKiBfUHlfd3JpdGUoKSBtdXN0IG5vdCBiZSBjYWxsZWQgd2l0aCBhbiBleGNlcHRpb24gc2V0LCBvdGhlcndpc2UgdGhlCiAgICAgICogY2FsbGVyIG1heSB0aGluayB0aGF0IHdyaXRlKCkgd2FzIGludGVycnVwdGVkIGJ5IGEgc2lnbmFsIGFuZCB0aGUgc2lnbmFsCiAgICAgICogaGFuZGxlciByYWlzZWQgYW4gZXhjZXB0aW9uLiAqLwpAQCAtMTQ3MywxMCArMTQ2MCw5IEBACiAgICAgRFdPUkQgZnR5cGU7CiAjZW5kaWYKIAotICAgIGlmICghX1B5VmVyaWZ5X2ZkKGZkKSkgewotICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBhc3NlcnQoUHlHSUxTdGF0ZV9DaGVjaygpKTsKKyNlbmRpZgogCiAjaWZkZWYgTVNfV0lORE9XUwogICAgIF9QeV9CRUdJTl9TVVBQUkVTU19JUEgKQEAgLTE2MDAsODQgKzE1ODYsMyBAQAogICAgIHJldHVybiAtMTsKIH0KICNlbmRpZgotCi0jaWYgZGVmaW5lZCBfTVNDX1ZFUiAmJiBfTVNDX1ZFUiA+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+aW1wb3J0X2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5VTEwpOwogICAgIH0KLSAgICBnb3RvIGVycm9yOwogCi0gIGVycm9yX3dpdGhfdW5sb2NrOgotI2lmZGVmIFdJVEhfVEhSRUFECi0gICAgaWYgKF9QeUltcG9ydF9SZWxlYXNlTG9jaygpIDwgMCkgewotICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLCAibm90IGhvbGRpbmcgdGhlIGltcG9ydCBsb2NrIik7Ci0gICAgfQotI2VuZGlmCiAgIGVycm9yOgogICAgIFB5X1hERUNSRUYoYWJzX25hbWUpOwotICAgIFB5X1hERUNSRUYoYnVpbHRpbnNfaW1wb3J0KTsKICAgICBQeV9YREVDUkVGKG1vZCk7CiAgICAgUHlfWERFQ1JFRihwYWNrYWdlKTsKLSAgICBQeV9YREVDUkVGKGdsb2JhbHMpOwotICAgIFB5X1hERUNSRUYoZnJvbWxpc3QpOwogICAgIGlmIChmaW5hbF9tb2QgPT0gTlVMTCkKICAgICAgICAgcmVtb3ZlX2ltcG9ydGxpYl9mcmFtZXMoKTsKICAgICByZXR1cm4gZmluYWxfbW9kOwpAQCAtMTk1OSwxOSArMTk0NiwxNSBAQAogCiAgICAgZGVmID0gUHlNb2R1bGVfR2V0RGVmKG1vZCk7CiAgICAgaWYgKGRlZiA9PSBOVUxMKSB7Ci0gICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQorCiAgICAgc3RhdGUgPSBQeU1vZHVsZV9HZXRTdGF0ZShtb2QpOwotICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKSB7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CiAgICAgaWYgKHN0YXRlKSB7CiAgICAgICAgIC8qIEFscmVhZHkgaW5pdGlhbGl6ZWQ7IHNraXAgcmVsb2FkICovCiAgICAgICAgIHJldHVybiAwOwogICAgIH0KKwogICAgIHJldHVybiBQeU1vZHVsZV9FeGVjRGVmKG1vZCwgZGVmKTsKIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGRsLmMgYi9QeXRob24vaW1wb3J0ZGwuYwppbmRleCAxYWE1ODVkLi5hYzAzMjg5IDEwMDY0NAotLS0gYS9QeXRob24vaW1wb3J0ZGwuYworKysgYi9QeXRob24vaW1wb3J0ZGwuYwpAQCAtMjMsOCArMjMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBGSUxFICpmcCk7CiAjZW5kaWYKIAotc3RhdGljIGNvbnN0IGNoYXIgKmFzY2lpX29ubHlfcHJlZml4ID0gIlB5SW5pdCI7Ci1zdGF0aWMgY29uc3QgY2hhciAqbm9uYXNjaWlfcHJlZml4ID0gIlB5SW5pdFUiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBhc2NpaV9vbmx5X3ByZWZpeCA9ICJQeUluaXQiOworc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCBub25hc2NpaV9wcmVmaXggPSAiUHlJbml0VSI7CiAKIC8qIEdldCB0aGUgdmFyaWFibGUgcGFydCBvZiBhIG1vZHVsZSdzIGV4cG9ydCBzeW1ib2wgbmFtZS4KICAqIFJldHVybnMgYSBieXRlcyBpbnN0YW5jZS4gRm9yIG5vbi1BU0NJSS1uYW1lZCBtb2R1bGVzLCB0aGUgbmFtZSBpcwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYi5oIGIvUHl0aG9uL2ltcG9ydGxpYi5oCmluZGV4IGE1ZmM5MzYuLjc0OTdmMjIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWIuaAorKysgYi9QeXRob24vaW1wb3J0bGliLmgKQEAgLTEsMTk4OCArMSwxODI0IEBACiAvKiBBdXRvLWdlbmVyYXRlZCBieSBQcm9ncmFtcy9fZnJlZXplX2ltcG9ydGxpYi5jICovCiBjb25zdCB1bnNpZ25lZCBjaGFyIF9QeV9NX19pbXBvcnRsaWJbXSA9IHsKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw2LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjksMiwwLDAsMTAwLDAsMCw5MCwwLDAsCi0gICAgMTAwLDEsMCw5NywxLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsOTAsCi0gICAgMiwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDMsMCw3MSwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCwxMDAsNywwLDEzMSwyLDAsOTAsNCwKLSAgICAwLDEwNSwwLDAsOTAsNSwwLDEwNSwwLDAsOTAsNiwwLDcxLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDEwMCw5LDAsMTAxLDcsMCwxMzEsMywwLAotICAgIDkwLDgsMCw3MSwxMDAsMTAsMCwxMDAsMTEsMCwxMzIsMCwwLDEwMCwxMSwwLAotICAgIDEzMSwyLDAsOTAsOSwwLDcxLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwwLDAsCi0gICAgMTAwLDEzLDAsMTMxLDIsMCw5MCwxMCwwLDcxLDEwMCwxNCwwLDEwMCwxNSwwLAotICAgIDEzMiwwLDAsMTAwLDE1LDAsMTMxLDIsMCw5MCwxMSwwLDEwMCwxNiwwLDEwMCwKLSAgICAxNywwLDEzMiwwLDAsOTAsMTIsMCwxMDAsMTgsMCwxMDAsMTksMCwxMzIsMCwKLSAgICAwLDkwLDEzLDAsMTAwLDIwLDAsMTAwLDIxLDAsMTMyLDAsMCw5MCwxNCwwLAotICAgIDEwMCwyMiwwLDEwMCwyMywwLDEwMCwyNCwwLDEwMCwyNSwwLDEzMiwwLDEsOTAsCi0gICAgMTUsMCwxMDAsMjYsMCwxMDAsMjcsMCwxMzIsMCwwLDkwLDE2LDAsMTAwLDI4LAotICAgIDAsMTAwLDI5LDAsMTMyLDAsMCw5MCwxNywwLDEwMCwzMCwwLDEwMCwzMSwwLAotICAgIDEzMiwwLDAsOTAsMTgsMCwxMDAsMzIsMCwxMDAsMzMsMCwxMzIsMCwwLDkwLAotICAgIDE5LDAsNzEsMTAwLDM0LDAsMTAwLDM1LDAsMTMyLDAsMCwxMDAsMzUsMCwxMzEsCi0gICAgMiwwLDkwLDIwLDAsNzEsMTAwLDM2LDAsMTAwLDM3LDAsMTMyLDAsMCwxMDAsCi0gICAgMzcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDM4LDAsMTAwLDEsMCwxMDAsMzksCi0gICAgMCwxMDAsMSwwLDEwMCw0MCwwLDEwMCw0MSwwLDEzMiwwLDIsOTAsMjIsMCwKLSAgICAxMDEsMjMsMCwxMzEsMCwwLDkwLDI0LDAsMTAwLDEsMCwxMDAsMSwwLDEwMCwKLSAgICA0MiwwLDEwMCw0MywwLDEzMiwyLDAsOTAsMjUsMCwxMDAsNDQsMCwxMDAsNDUsCi0gICAgMCwxMDAsNDYsMCwxMDAsNDcsMCwxMzIsMCwxLDkwLDI2LDAsMTAwLDQ4LDAsCi0gICAgMTAwLDQ5LDAsMTMyLDAsMCw5MCwyNywwLDEwMCw1MCwwLDEwMCw1MSwwLDEzMiwKLSAgICAwLDAsOTAsMjgsMCwxMDAsNTIsMCwxMDAsNTMsMCwxMzIsMCwwLDkwLDI5LAotICAgIDAsMTAwLDU0LDAsMTAwLDU1LDAsMTMyLDAsMCw5MCwzMCwwLDEwMCw1NiwwLAotICAgIDEwMCw1NywwLDEzMiwwLDAsOTAsMzEsMCwxMDAsNTgsMCwxMDAsNTksMCwxMzIsCi0gICAgMCwwLDkwLDMyLDAsNzEsMTAwLDYwLDAsMTAwLDYxLDAsMTMyLDAsMCwxMDAsCi0gICAgNjEsMCwxMzEsMiwwLDkwLDMzLDAsNzEsMTAwLDYyLDAsMTAwLDYzLDAsMTMyLAotICAgIDAsMCwxMDAsNjMsMCwxMzEsMiwwLDkwLDM0LDAsNzEsMTAwLDY0LDAsMTAwLAotICAgIDY1LDAsMTMyLDAsMCwxMDAsNjUsMCwxMzEsMiwwLDkwLDM1LDAsMTAwLDY2LAotICAgIDAsMTAwLDY3LDAsMTMyLDAsMCw5MCwzNiwwLDEwMCw2OCwwLDEwMCw2OSwwLAotICAgIDEzMiwwLDAsOTAsMzcsMCwxMDAsMSwwLDEwMCw3MCwwLDEwMCw3MSwwLDEzMiwKLSAgICAxLDAsOTAsMzgsMCwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwwLDkwLDM5LAotICAgIDAsMTAwLDc0LDAsOTAsNDAsMCwxMDEsNDAsMCwxMDAsNzUsMCwyMyw5MCw0MSwKLSAgICAwLDEwMCw3NiwwLDEwMCw3NywwLDEzMiwwLDAsOTAsNDIsMCwxMDAsNzgsMCwKLSAgICAxMDAsNzksMCwxMzIsMCwwLDkwLDQzLDAsMTAwLDEsMCwxMDAsODAsMCwxMDAsCi0gICAgODEsMCwxMDAsODIsMCwxMzIsMiwwLDkwLDQ0LDAsMTAwLDgzLDAsMTAwLDg0LAotICAgIDAsMTMyLDAsMCw5MCw0NSwwLDEwMCw4NSwwLDEwMCw4NiwwLDEzMiwwLDAsCi0gICAgOTAsNDYsMCwxMDAsMSwwLDEwMCwxLDAsMTAyLDAsMCwxMDAsODAsMCwxMDAsCi0gICAgODcsMCwxMDAsODgsMCwxMzIsNCwwLDkwLDQ3LDAsMTAwLDg5LDAsMTAwLDkwLAotICAgIDAsMTMyLDAsMCw5MCw0OCwwLDEwMCw5MSwwLDEwMCw5MiwwLDEzMiwwLDAsCi0gICAgOTAsNDksMCwxMDAsOTMsMCwxMDAsOTQsMCwxMzIsMCwwLDkwLDUwLDAsMTAwLAotICAgIDEsMCw4Myw0MSw5NSw5Nyw4MywxLDAsMCw2NywxMTEsMTE0LDEwMSwzMiwxMDUsCi0gICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMCwxMCw4NCwxMDQsMTA1LDExNSwzMiwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDc4LDc5LDg0LDMyLDEwOSwxMDEsOTcsCi0gICAgMTEwLDExNiwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDEwOCwKLSAgICAxMjEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCwzMywzMiw3MywxMTYsMzIsMTA0LAotICAgIDk3LDExNSwzMiw5OCwxMDEsMTAxLDExMCwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLAotICAgIDMyLDExNSwxMTcsOTksMTA0LDEwLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTYsMzIsOTksOTcsCi0gICAgMTEwLDMyLDk4LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsMTEyLDEwMSwKLSAgICAxMDAsMzIsMTA1LDExMCwxMTYsMTExLDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsOTcsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwKLSAgICAxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLDY1LAotICAgIDExNSwxMCwxMTUsMTE3LDk5LDEwNCwzMiwxMDUsMTE2LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiwxMTEsMTAyLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsCi0gICAgMTE2LDEwMSwxMTUsMzIsMTA1LDExMCwzMiwxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMTAsCi0gICAgMTE5LDExMSwxMTQsMTA3LDQ2LDMyLDc5LDExMCwxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTE3LDExNSwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5NywKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNyw5OCwxMDgsMTA1LDk5LDQ1LDEwMiw5Nyw5OSwKLSAgICAxMDUsMTEwLDEwMywzMiwxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTYsCi0gICAgMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsNzgsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNywwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsOTIsMCwwLDAsMTIwLDY2LDAsMTAwLDEsMCwxMDAsMiwKLSAgICAwLDEwMCwzLDAsMTAwLDQsMCwxMDMsNCwwLDY4LDkzLDQ2LDAsMTI1LDIsCi0gICAgMCwxMTYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNCwxOSwwLAotICAgIDExNiwxLDAsMTI0LDAsMCwxMjQsMiwwLDExNiwyLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTMxLDMsMCwxLDExMywxOSwwLDg3LDEyNCwwLDAsCi0gICAgMTA2LDMsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDMsMCwxMzEsMSwwLDEsCi0gICAgMTAwLDUsMCw4Myw0MSw2LDEyMiw0Nyw4MywxMDUsMTA5LDExMiwxMDgsMTAxLDMyLDExNSwKLSAgICAxMTcsOTgsMTE1LDExNiwxMDUsMTE2LDExNywxMTYsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMTEsMTExLDEwOCwxMTUsNDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw0NiwyMTgsMTAsOTUsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsOTUsOTUsMjE4LDgsOTUsOTUsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDEyLDk1LAotICAgIDk1LDExMywxMTcsOTcsMTA4LDExMCw5NywxMDksMTAxLDk1LDk1LDIxOCw3LDk1LDk1LDEwMCwKLSAgICAxMTEsOTksOTUsOTUsNzgsNDEsNSwyMTgsNywxMDQsOTcsMTE1LDk3LDExNiwxMTYsMTE0LAotICAgIDIxOCw3LDExNSwxMDEsMTE2LDk3LDExNiwxMTYsMTE0LDIxOCw3LDEwMywxMDEsMTE2LDk3LDExNiwKLSAgICAxMTYsMTE0LDIxOCw4LDk1LDk1LDEwMCwxMDUsOTksMTE2LDk1LDk1LDIxOCw2LDExNywxMTIsCi0gICAgMTAwLDk3LDExNiwxMDEsNDEsMyw5MCwzLDExMCwxMDEsMTE5LDkwLDMsMTExLDEwOCwxMDAsCi0gICAgMjE4LDcsMTE0LDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxNjksMCwxMTQsMTAsMCwwLDAsCi0gICAgMjUwLDI5LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDEwOCwxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDYyLDIxOCwKLSAgICA1LDk1LDExOSwxMTQsOTcsMTEyLDI3LDAsMCwwLDExNSw4LDAsMCwwLDAsCi0gICAgMiwyNSwxLDE1LDEsMjksMSwxMTQsMTIsMCwwLDAsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMTYsMTIxLDExMiwKLSAgICAxMDEsMjE4LDMsMTE1LDEyMSwxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTEsOTUsCi0gICAgMTEwLDEwMSwxMTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzUsMCwwLDAsMTE1LDIsCi0gICAgMCwwLDAsMCwxLDExNCwxNiwwLDAsMCw5OSwwLDAsMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1OCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LAotICAgIDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDgzLDQxLDksCi0gICAgMjE4LDEzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCwxMjIsCi0gICAgNjMsNzcsOTcsMTEwLDk3LDEwMywxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTEsMTE1LAotICAgIDExNSwxMDUsOTgsMTA4LDEwMSwzMiw5OSwxMDgsMTAxLDk3LDExMCw0NSwxMTcsMTEyLDMyLDExMSwKLSAgICAxMDIsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQ2LAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwxLDAsMTI0LDAsMCwKLSAgICA5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDEsMjE4LDUsOTUsMTEwLAotICAgIDk3LDEwOSwxMDEsNDEsMiwyMTgsNCwxMTUsMTAxLDEwOCwxMDIsMTE0LDE1LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw0MywwLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDEsMTIyLDIyLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsCi0gICAgMTExLDk3LDEwMCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMjUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDExNiwxLDAsMTA2LAotICAgIDIsMCwxMDcsNiwwLDEyNCwwLDAsOTUsMywwLDEwMCwwLDAsODMsNDEsCi0gICAgMSw3OCw0MSw0LDExNCwxOCwwLDAsMCwxMTQsMTQsMCwwLDAsMjE4LDcsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDIxOCwxMCw5NSwxMDUsMTE1LDk1LDExNCwxMDEsMTA4LAotICAgIDExMSw5NywxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCi0gICAgMTAxLDExNCw5NSw5NSw0NiwwLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTEwLDExNiwxMDEsMTE0LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDExLDAsMCwwLDcxLDAsMCwwLDExNSw3NywwLAotICAgIDAsMCwxMTYsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLAotICAgIDAsNjgsMTMxLDEsMCwxMzEsMSwwLDExNCw3MywwLDEyNCwwLDAsMTA2LDEsCi0gICAgMCwxMiwxMTQsNzMsMCwxMjEsMTcsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDAsCi0gICAgMCwxMDYsNCwwLDYxLDg3LDExMCwxOCwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsNzIsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsCi0gICAgMyw3OCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLAotICAgIDAsMCwwLDExNSwwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywKLSAgICAxNywwLDEyNSwxLDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwKLSAgICAxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsCi0gICAgMiwyMTgsMiw0Niw0OCwyMTgsMyw5NywxMTQsMTAzLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwKLSAgICAxMjAsMTEyLDExNCw2Miw1MCwwLDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLAotICAgIDQxLDk1LDc3LDk3LDExMCw5NywxMDMsMTAxLDgyLDEwMSwxMDgsMTExLDk3LDEwMCw0Niw5NSwKLSAgICA5NSwxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAotICAgIDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2Miw0MSw2LDIxOCwzLDk3LDExMCwKLSAgICAxMjEsMTE0LDIyLDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsMCwwLDAsCi0gICAgMTE0LDE4LDAsMCwwLDIxOCw4LDc1LDEwMSwxMjEsNjksMTE0LDExNCwxMTEsMTE0LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDEwMSwKLSAgICAxMjAsMTA1LDExNiw5NSw5NSw0OSwwLDAsMCwxMTUsMTAsMCwwLDAsMCwxLAotICAgIDM1LDEsMywxLDE3LDEsMTMsMSwxMjIsMjIsOTUsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsODIsMTAxLDEwOCwxMTEsOTcsMTAwLDQ2LDk1LDk1LDEwMSwxMjAsMTA1LDExNiw5NSw5NSwKLSAgICA3OCw0MSw3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsCi0gICAgMCwwLDExNCwzLDAsMCwwLDExNCwyMCwwLDAsMCwxMTQsMjMsMCwwLAotICAgIDAsMTE0LDMwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTcsMCwwLDAsMzksCi0gICAgMCwwLDAsMTE1LDgsMCwwLDAsMTIsMiw2LDIsMTIsMywxMiwzLAotICAgIDExNCwxNywwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDY0LDAsMCwwLDExNSwxNiwwLDAsMCwxMDEsCi0gICAgMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjksMTE0LDExNCwxMTEsCi0gICAgMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwzMSwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwxMiwxLDExNCwzMSwwLDAsMCw5OSwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwKLSAgICAwLDExNSw4MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsCi0gICAgMCw5MCw0LDAsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLAotICAgIDEwMCw2LDAsMTAwLDcsMCwxMzIsMCwwLDkwLDYsMCwxMDAsOCwwLDEwMCwKLSAgICA5LDAsMTMyLDAsMCw5MCw3LDAsMTAwLDEwLDAsMTAwLDExLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDEyLDAsODMsNDEsMTMsMjE4LDExLDk1LDc3LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsMTY5LDY1LDMyLDExNCwxMDEsOTksMTE3LDExNCwKLSAgICAxMTUsMTA1LDExOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsCi0gICAgMTE1LDMyLDk3LDk4LDEwOCwxMDEsMzIsMTE2LDExMSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LAotICAgIDMyLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDExNSwxMCwzMiwzMiwzMiwzMiw0MCwKLSAgICAxMDEsNDYsMTAzLDQ2LDMyLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMzIsNDksMzIsMTE2LDExNCwKLSAgICAxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNywxMTUsMzIsNjUsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDY2LDQ0LDMyLDk3LDExMCwxMDAsCi0gICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCwzMiw1MCwzMiwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDExNiw5NywxMDcsMTAxLDMyLDEwOCwxMTEsOTksCi0gICAgMTA3LDExNSwzMiw2NiwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNjUsNDEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNzAsMCwwLDAsMTE2LDAsMCwxMDYsCi0gICAgMSwwLDEzMSwwLDAsMTI0LDAsMCw5NSwyLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDk1LDQsMCwxMDAsMCwwLDEyNCwwLDAsOTUsNSwwLDEwMCwxLDAsMTI0LAotICAgIDAsMCw5NSw2LDAsMTAwLDEsMCwxMjQsMCwwLDk1LDcsMCwxMDAsMCwKLSAgICAwLDgzLDQxLDIsNzgsMjMzLDAsMCwwLDAsNDEsOCwyMTgsNyw5NSwxMTYsCi0gICAgMTA0LDExNCwxMDEsOTcsMTAwLDkwLDEzLDk3LDEwOCwxMDgsMTExLDk5LDk3LDExNiwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMjE4LDQsMTA4LDExMSw5OSwxMDcsMjE4LDYsMTE5LDk3LDEwNywxMDEsCi0gICAgMTE3LDExMiwxMTQsMTUsMCwwLDAsMjE4LDUsMTExLDExOSwxMTAsMTAxLDExNCwyMTgsNSwKLSAgICA5OSwxMTEsMTE3LDExMCwxMTYsMjE4LDcsMTE5LDk3LDEwNSwxMTYsMTAxLDExNCwxMTUsNDEsMiwKLSAgICAxMTQsMTksMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyMCwwLDAsMCw3NCwwLAotICAgIDAsMCwxMTUsMTIsMCwwLDAsMCwxLDE1LDEsMTUsMSw5LDEsOSwKLSAgICAxLDksMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsNCwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMjUsMiwwLDEyMCw2MCwwLDExNiwzLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMjQsMywwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsNTUsMCwxMDAsMSwwLDgzLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMjUsMiwwLDEyNCwyLDAsMTI0LDEsMCwxMDcsMiwwLDExNCwyNCwwLDEwMCwKLSAgICAyLDAsODMsMTEzLDI0LDAsODcsMTAwLDAsMCw4Myw0MSwzLDc4LDcwLDg0LAotICAgIDQxLDUsMTE0LDM0LDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwxMDAsMTAxLAotICAgIDExMCwxMTYsMTE0LDM3LDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LDEwNywxMDUsCi0gICAgMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDE5LDAsMCwKLSAgICAwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEyLAotICAgIDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsODIsMCwwLDAsCi0gICAgMTE1LDE4LDAsMCwwLDAsMiwxMiwxLDksMSwzLDEsMTUsMSwxMiwKLSAgICAxLDQsMSw5LDEsMTIsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwKLSAgICAxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTYsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDIxMCwwLDAsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTMxLDAsMCwxMjUsMSwwLDEyNCwwLDAsMTE2LDIsMCwxMjQsMSwwLAotICAgIDYwLDEyMiwxNzMsMCwxMjAsMTY2LDAsMTI0LDAsMCwxMDYsMywwLDE0MywxMjQsMCwKLSAgICAxLDEyNCwwLDAsMTA2LDQsMCwxMDAsMSwwLDEwNywyLDAsMTE1LDY4LDAsCi0gICAgMTI0LDAsMCwxMDYsNSwwLDEyNCwxLDAsMTA3LDIsMCwxMTQsOTYsMCwxMjQsCi0gICAgMSwwLDEyNCwwLDAsOTUsNSwwLDEyNCwwLDAsNCwxMDYsNCwwLDEwMCwKLSAgICAyLDAsNTUsMiw5NSw0LDAsMTAwLDMsMCw4MywxMjQsMCwwLDEwNiw2LAotICAgIDAsMTMxLDAsMCwxMTQsMTI0LDAsMTE2LDcsMCwxMDAsNCwwLDEyNCwwLDAsCi0gICAgMjIsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLAotICAgIDEwMCw1LDAsMTMxLDEsMCwxMTQsMTU3LDAsMTI0LDAsMCw0LDEwNiwxMCwwLAotICAgIDEwMCwyLDAsNTUsMiw5NSwxMCwwLDg3LDEwMCw2LDAsODEsODIsODgsMTI0LAotICAgIDAsMCwxMDYsOCwwLDEwNiw5LDAsMTMxLDAsMCwxLDEyNCwwLDAsMTA2LAotICAgIDgsMCwxMDYsMTEsMCwxMzEsMCwwLDEsMTEzLDI4LDAsODcsODcsMTAwLDYsCi0gICAgMCwxMTYsMiwwLDEyNCwxLDAsNjEsODgsMTAwLDYsMCw4Myw0MSw3LDEyMiwKLSAgICAxODUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNjUsOTksMTEzLDExNywxMDUsMTE0LAotICAgIDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk5LAotICAgIDEwNyw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTEyLDExMSwxMTYsMTAxLDExMCwxMTYsMTA1LAotICAgIDk3LDEwOCwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDEwMCwKLSAgICAxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCw0NCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw5NywzMiw5NSw2OCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDY5LDExNCwxMTQsMTExLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDUsMTE1LDMyLDk3LDEwOCwxMTksOTcsCi0gICAgMTIxLDExNSwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDEwMCwzMiw5NywxMTAsMTAwLDMyLAotICAgIDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTAxLDEwMCwKLSAgICA0NiwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMzMsMCwwLDAsMjMzLAotICAgIDEsMCwwLDAsODQsMTIyLDIzLDEwMCwxMDEsOTcsMTAwLDEwOCwxMTEsOTksMTA3LDMyLAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMzcsMTE0LDcwLDc4LAotICAgIDQxLDEyLDExNCwzNCwwLDAsMCwxMTQsNDAsMCwwLDAsMTE0LDQxLDAsMCwKLSAgICAwLDExNCwzNSwwLDAsMCwxMTQsMzgsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDExNCw0NCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDM2LDAsMCwwLDIxOCwKLSAgICA3LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTE0LDM5LDAsMCwwLDIxOCw3LDExNCwKLSAgICAxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsNDYsMCwwLDAsOTQsMCwwLDAsMTE1LDMyLDAsMCwwLDAsCi0gICAgNiwxMiwxLDEwLDEsMywxLDMsMSwxMCwxLDMwLDEsOSwxLDE1LAotICAgIDEsNCwxLDEyLDEsMTYsMSwxOCwxLDIyLDIsMTMsMSwyMSwyLDEyMiwKLSAgICAxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCwxMCwwLDAsMCw2NywwLDAsMCwxMTUsMTU3LDAsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMiwwLAotICAgIDE0MywxMjksMCwxLDEyNCwwLDAsMTA2LDMsMCwxMjQsMSwwLDEwNywzLDAsCi0gICAgMTE0LDQ5LDAsMTE2LDQsMCwxMDAsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsCi0gICAgMCwwLDEwNiw1LDAsMTAwLDIsMCwxMDcsNCwwLDExNSw3MCwwLDExNiw2LAotICAgIDAsMTMwLDEsMCwxMjQsMCwwLDQsMTA2LDUsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNSwwLDEyNCwwLDAsMTA2LDUsMCwxMDAsMiwwLDEwNywyLDAsMTE0LAotICAgIDE0NiwwLDEwMCwwLDAsMTI0LDAsMCw5NSwzLDAsMTI0LDAsMCwxMDYsNywKLSAgICAwLDExNCwxNDYsMCwxMjQsMCwwLDQsMTA2LDcsMCwxMDAsMywwLDU2LDIsCi0gICAgOTUsNywwLDEyNCwwLDAsMTA2LDgsMCwxMDYsOSwwLDEzMSwwLDAsMSwKLSAgICA4NywxMDAsMCwwLDgxLDgyLDg4LDEwMCwwLDAsODMsNDEsNCw3OCwxMjIsMzEsCi0gICAgOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNywKLSAgICAxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LDExMSw5OSwxMDcsMTE0LAotICAgIDMzLDAsMCwwLDExNCw0NSwwLDAsMCw0MSwxMCwxMTQsMzQsMCwwLDAsCi0gICAgMTE0LDQwLDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LAotICAgIDEyLDgyLDExNywxMTAsMTE2LDEwNSwxMDksMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwKLSAgICAwLDAsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwxMTAsNjksMTE0LDExNCwKLSAgICAxMTEsMTE0LDExNCwzOSwwLDAsMCwxMTQsMzYsMCwwLDAsMTE0LDQ3LDAsMCwKLSAgICAwLDQxLDIsMTE0LDE5LDAsMCwwLDExNCw0MywwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLAotICAgIDAsMTE5LDAsMCwwLDExNSwyMiwwLDAsMCwwLDEsMTIsMSwxMCwxLAotICAgIDE1LDEsMTIsMSwyMSwxLDE1LDEsMTUsMSw5LDEsOSwxLDE1LDEsCi0gICAgMTIyLDE5LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0NiwxMTQsMTAxLAotICAgIDEwOCwxMDEsOTcsMTE1LDEwMSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwyNSwwLDAsMCwxMDAsCi0gICAgMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwwLDExNiwyLDAsMTI0LDAsCi0gICAgMCwxMzEsMSwwLDEzMSwyLDAsODMsNDEsMiw3OCwxMjIsMjMsOTUsNzcsMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LAotICAgIDExNiwzMiwxMjMsMTI1LDQxLDMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMTQsMTUsCi0gICAgMCwwLDAsMjE4LDIsMTA1LDEwMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsOCw5NSwKLSAgICA5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMTMyLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMSwxMjIsMjAsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LAotICAgIDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw3OCw0MSw5LDExNCwxLDAsMCwwLAotICAgIDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDExNCwKLSAgICAyMCwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywKLSAgICAwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwzMiwwLDAsCi0gICAgMCw2OCwwLDAsMCwxMTUsMTIsMCwwLDAsMTIsNCw2LDIsMTIsOCwKLSAgICAxMiwxMiwxMiwyNSwxMiwxMywxMTQsMzIsMCwwLDAsOTksMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwKLSAgICAxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDAsCi0gICAgNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsMCwxMDAsOSwKLSAgICAwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLDIxOCwxNiw5NSwKLSAgICA2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDEyMiwKLSAgICA4Niw2NSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEwMSwzMiw5NSw3NywxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDc2LDExMSw5OSwxMDcsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLDExMCwxMTYsCi0gICAgMzIsMTAyLDExMSwxMTQsMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMDAsMTE1LDMyLDExOSwxMDUsMTE2LDEwNCwxMTEsMTE3LDExNiwxMCwzMiwzMiwzMiwzMiwxMDksCi0gICAgMTE3LDEwOCwxMTYsMTA1LDQ1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE1LAotICAgIDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLDAsMCwKLSAgICAwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDEsMCwxMjQsMCwwLAotICAgIDk1LDEsMCwxMDAsMCwwLDgzLDQxLDIsNzgsMTE0LDMzLDAsMCwwLDQxLAotICAgIDIsMTE0LDE1LDAsMCwwLDExNCwzOCwwLDAsMCw0MSwyLDExNCwxOSwwLAotICAgIDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCi0gICAgMCwxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDE0MCwwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsOSwxLDEyMiwyNSw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCisgICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCw2NCwwLDAsMCwxMTUsMjAyLDEsMCwwLDEwMCwwLDkwLDAsMTAwLDEsCisgICAgOTcsMSwxMDAsMiwxMDAsMywxMzIsMCw5MCwyLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDkwLDMsMTA1LDAsOTAsNCwxMDUsMCw5MCw1LDcxLDAsMTAwLDYsMTAwLDcsCisgICAgMTMyLDAsMTAwLDcsMTAxLDYsMTMxLDMsOTAsNyw3MSwwLDEwMCw4LDEwMCw5LAorICAgIDEzMiwwLDEwMCw5LDEzMSwyLDkwLDgsNzEsMCwxMDAsMTAsMTAwLDExLDEzMiwwLAorICAgIDEwMCwxMSwxMzEsMiw5MCw5LDcxLDAsMTAwLDEyLDEwMCwxMywxMzIsMCwxMDAsMTMsCisgICAgMTMxLDIsOTAsMTAsMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMSwxMDAsMTYsMTAwLDE3LAorICAgIDEzMiwwLDkwLDEyLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTMsMTAwLDIwLDEwMCwyMSwKKyAgICAxNTYsMSwxMDAsMjIsMTAwLDIzLDEzMiwyLDkwLDE0LDEwMCwyNCwxMDAsMjUsMTMyLDAsCisgICAgOTAsMTUsMTAwLDI2LDEwMCwyNywxMzIsMCw5MCwxNiwxMDAsMjgsMTAwLDI5LDEzMiwwLAorICAgIDkwLDE3LDEwMCwzMCwxMDAsMzEsMTMyLDAsOTAsMTgsNzEsMCwxMDAsMzIsMTAwLDMzLAorICAgIDEzMiwwLDEwMCwzMywxMzEsMiw5MCwxOSw3MSwwLDEwMCwzNCwxMDAsMzUsMTMyLDAsCisgICAgMTAwLDM1LDEzMSwyLDkwLDIwLDEwMCwxLDEwMCwxLDEwMCwzNiwxNTYsMiwxMDAsMzcsCisgICAgMTAwLDM4LDEzMiwyLDkwLDIxLDEwMSwyMiwxMzEsMCw5MCwyMywxMDAsOTIsMTAwLDM5LAorICAgIDEwMCw0MCwxMzIsMSw5MCwyNCwxMDAsNDEsMTAwLDQyLDE1NiwxLDEwMCw0MywxMDAsNDQsCisgICAgMTMyLDIsOTAsMjUsMTAwLDQ1LDEwMCw0NiwxMzIsMCw5MCwyNiwxMDAsNDcsMTAwLDQ4LAorICAgIDEzMiwwLDkwLDI3LDEwMCw0OSwxMDAsNTAsMTMyLDAsOTAsMjgsMTAwLDUxLDEwMCw1MiwKKyAgICAxMzIsMCw5MCwyOSwxMDAsNTMsMTAwLDU0LDEzMiwwLDkwLDMwLDEwMCw1NSwxMDAsNTYsCisgICAgMTMyLDAsOTAsMzEsNzEsMCwxMDAsNTcsMTAwLDU4LDEzMiwwLDEwMCw1OCwxMzEsMiwKKyAgICA5MCwzMiw3MSwwLDEwMCw1OSwxMDAsNjAsMTMyLDAsMTAwLDYwLDEzMSwyLDkwLDMzLAorICAgIDcxLDAsMTAwLDYxLDEwMCw2MiwxMzIsMCwxMDAsNjIsMTMxLDIsOTAsMzQsMTAwLDYzLAorICAgIDEwMCw2NCwxMzIsMCw5MCwzNSwxMDAsNjUsMTAwLDY2LDEzMiwwLDkwLDM2LDEwMCw5MywKKyAgICAxMDAsNjcsMTAwLDY4LDEzMiwxLDkwLDM3LDEwMCw2OSwxMDAsNzAsMTMyLDAsOTAsMzgsCisgICAgMTAwLDcxLDkwLDM5LDEwMSwzOSwxMDAsNzIsMjMsMCw5MCw0MCwxMDAsNzMsMTAwLDc0LAorICAgIDEzMiwwLDkwLDQxLDEwMCw3NSwxMDAsNzYsMTMyLDAsOTAsNDIsMTAwLDk0LDEwMCw3OCwKKyAgICAxMDAsNzksMTMyLDEsOTAsNDMsMTAwLDgwLDEwMCw4MSwxMzIsMCw5MCw0NCwxMDAsODIsCisgICAgMTAwLDgzLDEzMiwwLDkwLDQ1LDEwMCwxLDEwMCwxLDEwMiwwLDEwMCw3NywxMDIsNCwKKyAgICAxMDAsODQsMTAwLDg1LDEzMiwxLDkwLDQ2LDEwMCw4NiwxMDAsODcsMTMyLDAsOTAsNDcsCisgICAgMTAwLDg4LDEwMCw4OSwxMzIsMCw5MCw0OCwxMDAsOTAsMTAwLDkxLDEzMiwwLDkwLDQ5LAorICAgIDEwMCwxLDgzLDAsNDEsOTUsOTcsODMsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLAorICAgIDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLAorICAgIDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLAorICAgIDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LAorICAgIDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwKKyAgICAxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LAorICAgIDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiwKKyAgICA2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLAorICAgIDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiw3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsCisgICAgMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsCisgICAgOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsCisgICAgOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDc4LDk5LAorICAgIDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDcsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCw0MCwxMDAsNiw2OCwwLDkzLAorICAgIDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwyLDExNCw2LDExNiwxLDEyNCwKKyAgICAwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwyLDEzMSwzLDEsMCwxMTMsCisgICAgNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwxLDEwNiwzLDEzMSwxLDEsCisgICAgMCwxMDAsNSw4MywwLDQxLDcsMTIyLDQ3LDgzLDEwNSwxMDksMTEyLDEwOCwxMDEsMzIsCisgICAgMTE1LDExNyw5OCwxMTUsMTE2LDEwNSwxMTYsMTE3LDExNiwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDExMSwxMTEsMTA4LDExNSw0NiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDk1LAorICAgIDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQ2LDIxOCwxMCw5NSw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSw5NSwyMTgsOCw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwyMTgsMTIsCisgICAgOTUsOTUsMTEzLDExNyw5NywxMDgsMTEwLDk3LDEwOSwxMDEsOTUsOTUsMjE4LDcsOTUsOTUsCisgICAgMTAwLDExMSw5OSw5NSw5NSw3OCw0MSw0LDExNCwwLDAsMCwwLDExNCwxLDAsCisgICAgMCwwLDExNCwyLDAsMCwwLDExNCwzLDAsMCwwLDQxLDUsMjE4LDcsCisgICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKKyAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAorICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCisgICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsCisgICAgMTY5LDAsMTE0LDEwLDAsMCwwLDI1MCwyOSw2MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiw2MiwyMTgsNSw5NSwxMTksMTE0LDk3LDExMiwyNywwLDAsCisgICAgMCwxMTUsOCwwLDAsMCwwLDIsMTAsMSwxMCwxLDIyLDEsMTE0LDEyLAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDExNiwKKyAgICAxLDEzMSwxLDEyNCwwLDEzMSwxLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw0LAorICAgIDExNiwxMjEsMTEyLDEwMSwyMTgsMywxMTUsMTIxLDExNSw0MSwxLDIxOCw0LDExMCw5NywxMDksCisgICAgMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLAorICAgIDIxOCwxMSw5NSwxMTAsMTAxLDExOSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzNSwwLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTE0LDE2LDAsMCwwLDk5LDAsMCwKKyAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNjQsMCwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsCisgICAgMSw4MywwLDQxLDIsMjE4LDE0LDk1LDY4LDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDc4LDQxLDMsMTE0LDEsMCwwLDAsMTE0LDAsMCwKKyAgICAwLDAsMTE0LDIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNywwLDAsMCwKKyAgICA0NywwLDAsMCwxMTUsMiwwLDAsMCw4LDEsMTE0LDE3LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDU2LDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsCisgICAgMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwxMDAsNywxMzIsMCw5MCw2LDEwMCw4LAorICAgIDEwMCw5LDEzMiwwLDkwLDcsMTAwLDEwLDEwMCwxMSwxMzIsMCw5MCw4LDEwMCwxMiwKKyAgICA4MywwLDQxLDEzLDIxOCwxMSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwKKyAgICAxMDcsMTIyLDE2OSw2NSwzMiwxMTQsMTAxLDk5LDExNywxMTQsMTE1LDEwNSwxMTgsMTAxLDMyLDEwOCwKKyAgICAxMTEsOTksMTA3LDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDExNSwzMiw5Nyw5OCwxMDgsMTAxLAorICAgIDMyLDExNiwxMTEsMzIsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiwzMiwxMDAsMTAxLDk3LDEwMCwxMDgsCisgICAgMTExLDk5LDEwNywxMTUsMTAsMzIsMzIsMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwxMTYsCisgICAgMTA0LDExNCwxMDEsOTcsMTAwLDMyLDQ5LDMyLDExNiwxMTQsMTIxLDEwNSwxMTAsMTAzLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDk3LDEwNywxMDEsMzIsMTA4LDExMSw5OSwxMDcsMTE1LDMyLDY1LDMyLDExNiwKKyAgICAxMDQsMTAxLDExMCwzMiw2Niw0NCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTE0LDEwMSw5NywKKyAgICAxMDAsMzIsNTAsMzIsMTE2LDExNCwxMjEsMTA1LDExMCwxMDMsMzIsMTE2LDExMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsOTcsMTA3LDEwMSwzMiwxMDgsMTExLDk5LDEwNywxMTUsMzIsNjYsMzIsMTE2LAorICAgIDEwNCwxMDEsMTEwLDMyLDY1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDk5LDIsMCwwLAorICAgIDAsMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDQ4LDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNCwwLDk1LDIsCisgICAgMTE2LDAsMTA2LDEsMTMxLDAsMTI0LDAsOTUsMywxMjQsMSwxMjQsMCw5NSw0LAorICAgIDEwMCwwLDEyNCwwLDk1LDUsMTAwLDEsMTI0LDAsOTUsNiwxMDAsMSwxMjQsMCwKKyAgICA5NSw3LDEwMCwwLDgzLDAsNDEsMiw3OCwyMzMsMCwwLDAsMCw0MSw4LAorICAgIDIxOCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTAsMTMsOTcsMTA4LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwMSw5NSwxMDgsMTExLDk5LDEwNywyMTgsNCwxMDgsMTExLDk5LDEwNywyMTgsNiwKKyAgICAxMTksOTcsMTA3LDEwMSwxMTcsMTEyLDExNCwxNSwwLDAsMCwyMTgsNSwxMTEsMTE5LDExMCwKKyAgICAxMDEsMTE0LDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwyMTgsNywxMTksOTcsMTA1LDExNiwxMDEsCisgICAgMTE0LDExNSw0MSwyLDIxOCw0LDExNSwxMDEsMTA4LDEwMiwxMTQsMTUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDU3LDAsMCwwLDExNSwxMiwwLDAsCisgICAgMCwwLDEsMTAsMSwxMCwxLDYsMSw2LDEsNiwxLDEyMiwyMCw5NSwKICAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsMTA1LDExMCwxMDUsCi0gICAgMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAotICAgIDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsMCwwLDEyNCwwLDAsCi0gICAgNCwxMDYsMCwwLDEwMCwxLDAsNTUsMiw5NSwwLDAsMTAwLDIsMCw4MywKLSAgICA0MSwzLDc4LDExNCw0NSwwLDAsMCw4NCw0MSwxLDExNCwzOCwwLDAsMCwKLSAgICA0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsNDYsMCwwLDAsMTQ0LDAsMCwwLDExNSwKLSAgICA0LDAsMCwwLDAsMSwxNSwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwxMjEsCi0gICAgNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsMTA1LAotICAgIDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsNDYsMCwwLDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDEwMCwxLDAsMTA3LDIsMCwxMTQsMjcsMCwxMTYsMSwwLDEwMCwyLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwwLDAsNCwxMDYsMCwwLDEwMCwzLAotICAgIDAsNTYsMiw5NSwwLDAsMTAwLDAsMCw4Myw0MSw0LDc4LDExNCwzMywwLAotICAgIDAsMCwxMjIsMzEsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDExNCwxMDEsMTA4LDEwMSw5NywKLSAgICAxMTUsMTAxLDMyLDExNywxMTAsNDUsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMTE0LDQ1LDAsMCwwLDQxLDIsMTE0LDM4LDAsMCwwLDExNCwKLSAgICA0OCwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDcsMCwwLDAsMTQ4LAotICAgIDAsMCwwLDExNSw2LDAsMCwwLDAsMSwxNSwxLDEyLDEsMTIyLDI0LAorICAgIDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMDYsMiwxMjUsMiwxMjAsNDQsMTE2LDMsMTA2LAorICAgIDQsMTI0LDIsMTMxLDEsMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDM4LDEwMCwKKyAgICAxLDgzLDAsMTI0LDMsMTA2LDIsMTI1LDIsMTI0LDIsMTI0LDEsMTA3LDIsMTE0LAorICAgIDE2LDEwMCwyLDgzLDAsMTEzLDE2LDg3LDAsMTAwLDAsODMsMCw0MSwzLDc4LAorICAgIDcwLDg0LDQxLDUsMTE0LDIwLDAsMCwwLDIxOCw5LDEwMywxMDEsMTE2LDk1LDEwNSwKKyAgICAxMDAsMTAxLDExMCwxMTYsMTE0LDIzLDAsMCwwLDIxOCwxMiw5NSw5OCwxMDgsMTExLDk5LAorICAgIDEwNywxMDUsMTEwLDEwMyw5NSwxMTEsMTEwLDIxOCwzLDEwMywxMDEsMTE2LDQxLDQsMTE0LDI2LAorICAgIDAsMCwwLDkwLDIsMTA5LDEwMSwyMTgsMywxMTYsMTA1LDEwMCwxMTQsMjEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMjE4LDEyLDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LDExMSw5OSwxMDcsNjUsMCwKKyAgICAwLDAsMTE1LDE4LDAsMCwwLDAsMiw4LDEsNiwxLDIsMSwxMCwKKyAgICAxLDgsMSw0LDEsNiwxLDgsMSwxMjIsMjQsOTUsNzcsMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDEwNCw5NywxMTUsOTUsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDE2OCwwLDAsMCwxMTYsMCwxMDYsCisgICAgMSwxMzEsMCwxMjUsMSwxMjQsMCwxMTYsMiwxMjQsMSw2MCwwLDEyMiwxMzgsMTIwLAorICAgIDEzMiwxMjQsMCwxMDYsMywxNDMsOTYsMSwwLDEyNCwwLDEwNiw0LDEwMCwxLDEwNywKKyAgICAyLDExNSw0OCwxMjQsMCwxMDYsNSwxMjQsMSwxMDcsMiwxMTQsNzIsMTI0LDEsMTI0LAorICAgIDAsOTUsNSwxMjQsMCw0LDAsMTA2LDQsMTAwLDIsNTUsMCwyLDAsOTUsCisgICAgNCwxMDAsMyw4MywwLDEyNCwwLDEwNiw2LDEzMSwwLDExNCw5MiwxMTYsNywxMDAsCisgICAgNCwxMjQsMCwyMiwwLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw4LDEwNiw5LDEwMCwKKyAgICA1LDEzMSwxLDExNCwxMTgsMTI0LDAsNCwwLDEwNiwxMCwxMDAsMiw1NSwwLDIsCisgICAgMCw5NSwxMCw4NywwLDEwMCw2LDgxLDAsODIsMCw4OCwwLDEyNCwwLDEwNiwKKyAgICA4LDEwNiw5LDEzMSwwLDEsMCwxMjQsMCwxMDYsOCwxMDYsMTEsMTMxLDAsMSwKKyAgICAwLDExMywyMCw4NywwLDg3LDAsMTAwLDYsMTE2LDIsMTI0LDEsNjEsMCw4OCwKKyAgICAwLDEwMCw2LDgzLDAsNDEsNywxMjIsMTg1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDY1LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LAorICAgIDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsMTAwLDEwMSw5NywxMDAsMTA4LAorICAgIDExMSw5OSwxMDcsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsNDQsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsOTcsMzIsOTUsNjgsMTAxLDk3LDEwMCwKKyAgICAxMDgsMTExLDk5LDEwNyw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LAorICAgIDExNSwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc5LDExNiwxMDQsCisgICAgMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSwxMDcsCisgICAgMzIsMTA1LDExNSwzMiw5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsOTcsOTksMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwxMDAsMzIsOTcsMTEwLDEwMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDE5LDAsMCwwLDIzMywxLDAsMCwwLDg0LDEyMiwyMywxMDAsCisgICAgMTAxLDk3LDEwMCwxMDgsMTExLDk5LDEwNywzMiwxMDAsMTAxLDExNiwxMDEsOTksMTE2LDEwMSwxMDAsCisgICAgMzIsOTgsMTIxLDMyLDM3LDExNCw3MCw3OCw0MSwxMiwxMTQsMjAsMCwwLDAsMTE0LAorICAgIDI4LDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDI0LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsMTE0LDE3LDAsCisgICAgMCwwLDExNCwyMiwwLDAsMCwyMTgsNyw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLAorICAgIDExNCwyNSwwLDAsMCwyMTgsNywxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw0MSwyLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDM0LDAsMCwwLDc3LDAsCisgICAgMCwwLDExNSwzMiwwLDAsMCwwLDYsOCwxLDgsMSwyLDEsMiwKKyAgICAxLDgsMSwyMCwxLDYsMSwxNCwxLDQsMSw4LDEsMTIsMSwxMiwKKyAgICAxLDI0LDIsMTAsMSwxOCwyLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDc2LDExMSw5OSwxMDcsNDYsOTcsOTksMTEzLDExNywxMDUsMTE0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIyLDAsMCwwLDExNiwwLDEwNiwxLDEzMSwwLDEyNSwxLDEyNCwwLAorICAgIDEwNiwyLDE0Myw5OCwxLDAsMTI0LDAsMTA2LDMsMTI0LDEsMTA3LDMsMTE0LDM0LAorICAgIDExNiw0LDEwMCwxLDEzMSwxLDEzMCwxLDEyNCwwLDEwNiw1LDEwMCwyLDEwNyw0LAorICAgIDExNSw0OCwxMTYsNiwxMzAsMSwxMjQsMCw0LDAsMTA2LDUsMTAwLDMsNTYsMCwKKyAgICAyLDAsOTUsNSwxMjQsMCwxMDYsNSwxMDAsMiwxMDcsMiwxMTQsMTA4LDEwMCwwLAorICAgIDEyNCwwLDk1LDMsMTI0LDAsMTA2LDcsMTE0LDEwOCwxMjQsMCw0LDAsMTA2LDcsCisgICAgMTAwLDMsNTYsMCwyLDAsOTUsNywxMjQsMCwxMDYsOCwxMDYsOSwxMzEsMCwKKyAgICAxLDAsODcsMCwxMDAsMCw4MSwwLDgyLDAsODgsMCwxMDAsMCw4MywwLAorICAgIDQxLDQsNzgsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsMTAwLDMyLAorICAgIDEwOCwxMTEsOTksMTA3LDExNCwxOSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsMTAsCisgICAgMTE0LDIwLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LAorICAgIDIzLDAsMCwwLDIxOCwxMiw4MiwxMTcsMTEwLDExNiwxMDUsMTA5LDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDI0LDAsMCwwLDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjUsMCwwLDAsMTE0LDIyLDAsMCwKKyAgICAwLDExNCwzNSwwLDAsMCw0MSwyLDExNCwyNiwwLDAsMCwxMTQsMzEsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEwMiwwLDAsMCwxMTUsMjIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw4LDEsMTQsMSwxNCwxLDEwLDEsNiwKKyAgICAxLDYsMSwxNCwxLDEyMiwxOSw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSwKKyAgICA5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LDEsMTE2LDIsMTI0LDAsCisgICAgMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyMyw5NSw3NywxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLAorICAgIDEyMywxMjUsNDEsMywyMTgsNiwxMDIsMTExLDExNCwxMDksOTcsMTE2LDExNCwxNSwwLDAsCisgICAgMCwyMTgsMiwxMDUsMTAwLDQxLDEsMTE0LDI2LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDk1LDk1LDExNCwKKyAgICAxMDEsMTEyLDExNCw5NSw5NSwxMTUsMCwwLDAsMTE1LDIsMCwwLDAsMCwxLAorICAgIDEyMiwyMCw5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsOTUsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDc4LDQxLDksMTE0LDEsMCwwLDAsMTE0LDAsCisgICAgMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LDI3LDAsCisgICAgMCwwLDExNCwzMiwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LDM1LDAsMCwKKyAgICAwLDExNCw0MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE4LDAsMCwwLDUxLAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCw4LDQsNCwyLDgsOCw4LDEyLAorICAgIDgsMjUsOCwxMywxMTQsMTgsMCwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsNDgsCisgICAgMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLAorICAgIDIsMTAwLDMsMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCwKKyAgICA2LDEwMCw3LDEzMiwwLDkwLDYsMTAwLDgsMTAwLDksMTMyLDAsOTAsNywxMDAsCisgICAgMTAsODMsMCw0MSwxMSwyMTgsMTYsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywxMjIsODYsNjUsMzIsMTE1LDEwNSwxMDksMTEyLDEwOCwKKyAgICAxMDEsMzIsOTUsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDMyLDEwMSwxMTMsCisgICAgMTE3LDEwNSwxMTgsOTcsMTA4LDEwMSwxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDgwLDEyMSwxMTYsCisgICAgMTA0LDExMSwxMTAsMzIsOTgsMTE3LDEwNSwxMDgsMTAwLDExNSwzMiwxMTksMTA1LDExNiwxMDQsMTExLAorICAgIDExNywxMTYsMTAsMzIsMzIsMzIsMzIsMTA5LDExNywxMDgsMTE2LDEwNSw0NSwxMTYsMTA0LDExNCwKKyAgICAxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiw0Niw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwKKyAgICAxLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwyLDc4LDExNCwxOSwwLDAsCisgICAgMCw0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjQsMCwwLDAsNDEsMiwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxMjMsMCwwLAorICAgIDAsMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwKKyAgICAxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTI0LAorICAgIDAsNCwwLDEwNiwwLDEwMCwxLDU1LDAsMiwwLDk1LDAsMTAwLDIsODMsCisgICAgMCw0MSwzLDc4LDExNCwzMywwLDAsMCw4NCw0MSwxLDExNCwyNCwwLDAsCisgICAgMCw0MSwxLDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMzQsMCwwLDAsMTI3LDAsMCwwLAorICAgIDExNSw0LDAsMCwwLDAsMSwxNCwxLDEyMiwyNCw5NSw2OCwxMTcsMTA5LDEwOSwKKyAgICAxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDQ2LDk3LDk5LDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsCisgICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDAsMTA2LAorICAgIDAsMTAwLDEsMTA3LDIsMTE0LDE4LDExNiwxLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwKKyAgICAwLDQsMCwxMDYsMCwxMDAsMyw1NiwwLDIsMCw5NSwwLDEwMCwwLDgzLAorICAgIDAsNDEsNCw3OCwxMTQsMTksMCwwLDAsMTIyLDMxLDk5LDk3LDExMCwxMTAsMTExLAorICAgIDExNiwzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTcsMTEwLDQ1LDk3LDk5LDExMywKKyAgICAxMTcsMTA1LDExNCwxMDEsMTAwLDMyLDEwOCwxMTEsOTksMTA3LDExNCwzMywwLDAsMCw0MSwKKyAgICAyLDExNCwyNCwwLDAsMCwxMTQsMzYsMCwwLDAsNDEsMSwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAorICAgIDAsMTE0LDM1LDAsMCwwLDEzMSwwLDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDI0LDk1LDY4LDExNywxMDksMTA5LDEyMSw3NywxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNDYsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsNCwwLDAsMCwKKyAgICA2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDAsMTA2LAorICAgIDEsMTE2LDIsMTI0LDAsMTMxLDEsMTMxLDIsODMsMCw0MSwyLDc4LDEyMiwyOCwKICAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQ2LDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDQsMCwwLDAsNjcsMCwwLDAsMTE1LDI1LDAsCi0gICAgMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTE2LDIsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDIsMCw4Myw0MSwyLDc4LDEyMiwyOCwKLSAgICA5NSw2OCwxMTcsMTA5LDEwOSwxMjEsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LAotICAgIDQwLDEyMywzMywxMTQsMTI1LDQxLDMyLDk3LDExNiwzMiwxMjMsMTI1LDQxLDMsMTE0LDUwLAotICAgIDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsNTEsMCwwLDAsNDEsMSwxMTQsCi0gICAgMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCi0gICAgMCwwLDAsMTE0LDUyLDAsMCwwLDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgNDAsMTIzLDMzLDExNCwxMjUsNDEsMzIsOTcsMTE2LDMyLDEyMywxMjUsNDEsMywxMTQsMzgsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwzOSwwLDAsMCw0MSwxLDExNCwKKyAgICAyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsNDAsMCwwLDAsMTM2LDAsMCwwLDExNSwyLDAsMCwKICAgICAwLDAsMSwxMjIsMjUsOTUsNjgsMTE3LDEwOSwxMDksMTIxLDc3LDExMSwxMDAsMTE3LDEwOCwKICAgICAxMDEsNzYsMTExLDk5LDEwNyw0Niw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsNzgsNDEsCiAgICAgOCwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCwKLSAgICA0NywwLDAsMCwxMTQsNTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MywwLAotICAgIDAsMCwxMzYsMCwwLDAsMTE1LDEwLDAsMCwwLDEyLDIsNiwyLDEyLAotICAgIDQsMTIsNCwxMiw1LDExNCw1MywwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMTE0LDMsMCwwLDAsMTE0LDI3LDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsCisgICAgMzUsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNDEsMCwKKyAgICAwLDAsMTE5LDAsMCwwLDExNSwxMCwwLDAsMCw4LDIsNCwyLDgsCisgICAgNCw4LDQsOCw1LDExNCw0MSwwLDAsMCw5OSwwLDAsMCwwLDAsCiAgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKLSAgICA1MiwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwKLSAgICAxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsCi0gICAgNCwwLDEzMiwwLDAsOTAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwKLSAgICAwLDkwLDUsMCwxMDAsNywwLDgzLDQxLDgsMjE4LDE4LDk1LDc3LDExMSwxMDAsCisgICAgMzYsMCwwLDAsMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiwwLDkwLDMsMTAwLDMsMTAwLDQsMTMyLDAsOTAsNCwxMDAsNSwxMDAsNiwKKyAgICAxMzIsMCw5MCw1LDEwMCw3LDgzLDAsNDEsOCwyMTgsMTgsOTUsNzcsMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw5OSwyLAogICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwwLDAsOTUsMCwKLSAgICAwLDEwMCwwLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDAsMCw4Myw0MSwxLAotICAgIDc4LDQxLDIsMTE0LDE4LDAsMCwwLDIxOCw1LDk1LDEwOCwxMTEsOTksMTA3LDQxLAotICAgIDIsMTE0LDE5LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsMTU5LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDAsMSw5LDEsMTIyLDI3LDk1LDc3LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsCi0gICAgNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLDAsMCwwLAotICAgIDAsMCwxLDAsMCwwLDEwLDAsMCwwLDY3LDAsMCwwLDExNSw1MywKLSAgICAwLDAsMCwxMjIsMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDEyNCwwLDAsOTUsMiwwLDg3LDEwMCwwLDAsMTE2LDMsMCwxMDYsCi0gICAgNCwwLDEzMSwwLDAsMSw4OCwxMjQsMCwwLDEwNiwyLDAsMTA2LDUsMCwKLSAgICAxMzEsMCwwLDEsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLDYsMjE4LDE2LDk1LAotICAgIDEwMywxMDEsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCwKLSAgICAxOCwwLDAsMCwxMTQsNTUsMCwwLDAsMjE4LDQsOTUsMTA1LDEwOSwxMTIsMjE4LAotICAgIDEyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0NiwwLAotICAgIDAsMCw0MSwxLDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMjMsMCwwLDAsMTYzLDAsMCwKLSAgICAwLDExNSw4LDAsMCwwLDAsMSwzLDEsMjIsMiwxMSwxLDEyMiwyOCwKLSAgICA5NSw3NywxMTEsMTAwLDExNywxMDgsMTAxLDc2LDExMSw5OSwxMDcsNzcsOTcsMTEwLDk3LDEwMywKLSAgICAxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDMsMCwwLDAsMSwwLDAsMCw3OSwwLDAsCi0gICAgMCwxMTUsMTcsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDExNCw1NSwwLDAsCi0gICAgMCwxMTQsNDcsMCwwLDAsNDEsMywxMTQsMTksMCwwLDAsMTE0LDI5LDAsCi0gICAgMCwwLDkwLDYsMTA3LDExOSw5NywxMTQsMTAzLDExNSwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMzAsMCwwLDAsMTcwLDAsCi0gICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwKLSAgICAxMDEsMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwKLSAgICAwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsCi0gICAgMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDU0LDAsMCwwLAotICAgIDE1NywwLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsCi0gICAgNTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLAotICAgIDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsMTM5LDAsMCwwLDEwMCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTcsMCwxMTYsMCwwLDEzNiwwLDAsMjUsMTMxLDAsCi0gICAgMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsCi0gICAgNDMsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsMTAwLDEsMCwKLSAgICAxMDcsOCwwLDExNCwxMzUsMCwxMTYsMiwwLDEwMCwxLDAsMTA3LDgsMCwxMTQsCi0gICAgODMsMCwxMTYsMywwLDEzNiwwLDAsMTMxLDEsMCwxMjUsMSwwLDExMCwxMiwKLSAgICAwLDExNiw0LDAsMTM2LDAsMCwxMzEsMSwwLDEyNSwxLDAsMTM1LDAsMCwKLSAgICAxMDIsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMzQsMCwwLDEyNSwyLDAsMTE2LAotICAgIDUsMCwxMDYsNiwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLDExNiwwLAotICAgIDAsMTM2LDAsMCw2MCwxMjQsMSwwLDgzLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LAotICAgIDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LAotICAgIDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LAotICAgIDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODMsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwKLSAgICAxMTEsMTEwLDEwOCwxMjEsMzIsOTgsMTAxLDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTksCi0gICAgMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA4LAotICAgIDExMSw5OSwxMDcsMzIsMTE2LDk3LDEwNywxMDEsMTEwLDQ2LDc4LDk5LDEsMCwwLDAsCi0gICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsMTksMCwwLDAsCi0gICAgMTE1LDExLDAsMCwwLDExNiwwLDAsMTM2LDAsMCw2MSwxMDAsMCwwLDgzLAotICAgIDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LAotICAgIDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsOTUsNDEsMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMiw5OSw5OCwxOTAsMCwKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LAotICAgIDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsNywxMTQsNTksMCwwLDAsMTE0LDI4LAotICAgIDAsMCwwLDExNCwzNCwwLDAsMCwxMTQsNTMsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDIxOCw4LDk1LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDkwLDMsMTE0LDEwMSwKLSAgICAxMDIsNDEsMywxMTQsMTUsMCwwLDAsMTE0LDM1LDAsMCwwLDExNCw2MSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCw1NiwwLDAsMCwxNzYsMCwwLDAsMTE1LDI0LDAsMCwKLSAgICAwLDAsNCw2LDEsMywxLDE3LDEsMTMsMSw1LDEsMTIsMSwxMiwKLSAgICAxLDE1LDIsMTIsMSwxOCwyLDIyLDEsMTE0LDU2LDAsMCwwLDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3MSwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMzEsMCwwLDEsMTIxLDE0LAotICAgIDAsMTI0LDEsMCwxMDYsMywwLDEzMSwwLDAsMSw4NywxMTAsMTgsMCw0LAotICAgIDExNiw0LDAsMTA3LDEwLDAsMTE0LDU2LDAsMSwxLDEsODksMTEwLDExLDAsCi0gICAgODgsMTI0LDEsMCwxMDYsNSwwLDEzMSwwLDAsMSwxMDAsMSwwLDgzLDQxLAotICAgIDIsOTcsMjEsMSwwLDAsODIsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsCi0gICAgMTA4LDExMSw5OSwxMDcsNDQsMzIsOTcsMTEwLDEwMCwzMiw5Nyw5OSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE0LDEwMSwxMDgsMTAxLDk3LDExNSwxMDEsMzIsCi0gICAgMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA4LAorICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwxMjQsMCw5NSwwLDEwMCwwLAorICAgIDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsMjE4LDUsOTUsCisgICAgMTEwLDk3LDEwOSwxMDEsMjE4LDUsOTUsMTA4LDExMSw5OSwxMDcsNDEsMiwxMTQsMjYsMCwKKyAgICAwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNywwLDAsMCwxNDIsMCwwLDAsMTE1LAorICAgIDQsMCwwLDAsMCwxLDYsMSwxMjIsMjcsOTUsNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw3NiwxMTEsOTksMTA3LDc3LDk3LDExMCw5NywxMDMsMTAxLDExNCw0Niw5NSw5NSwxMDUsCisgICAgMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwKKyAgICAwLDAsMTAsMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMiwKKyAgICAxNiwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwyLDg3LDAsMTAwLAorICAgIDAsMTE2LDMsMTA2LDQsMTMxLDAsMSwwLDg4LDAsMTI0LDAsMTA2LDIsMTA2LAorICAgIDUsMTMxLDAsMSwwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCwxNiwKKyAgICA5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsMTExLDk5LDEwNywKKyAgICAxMTQsNDMsMCwwLDAsMTE0LDQ0LDAsMCwwLDIxOCw0LDk1LDEwNSwxMDksMTEyLAorICAgIDIxOCwxMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSw5NSwxMDgsMTExLDk5LDEwNywxMTQsMzQsCisgICAgMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDksOTUsOTUsMTAxLDExMCwxMTYsCisgICAgMTAxLDExNCw5NSw5NSwxNDYsMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDIsCisgICAgMSwxNiwyLDEwLDEsMTIyLDI4LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLAorICAgIDk5LDEwNyw3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLAorICAgIDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwKKyAgICAxLDAsMCwwLDc5LDAsMCwwLDExNSwxNCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMDYsMSwxMzEsMCwxLDAsMTAwLDAsODMsMCw0MSwxLDc4LDQxLDIsCisgICAgMTE0LDQ0LDAsMCwwLDExNCwzNSwwLDAsMCw0MSwzLDExNCwyNiwwLDAsCisgICAgMCwyMTgsNCw5NywxMTQsMTAzLDExNSw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsCisgICAgOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDE1MywwLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEsMTIyLDI3LDk1LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzYsMTExLDk5LDEwNywKKyAgICA3Nyw5NywxMTAsOTcsMTAzLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LAorICAgIDc4LDQxLDYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDI3LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTAsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw0MiwwLDAsMCwxNDAsMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsOCwyLDgsNCw4LDcsMTE0LDQyLDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDMsCisgICAgMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDAsMSwxMjUsMSwxMjEsMTQsMTE2LDAsCisgICAgMTM2LDAsMjUsMCwxMzEsMCwxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsCisgICAgMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsCisgICAgMTI0LDEsMTAwLDEsMTA3LDgsMTE0LDEwMiwxMTYsMiwxMDAsMSwxMDcsOCwxMTQsNjYsCisgICAgMTE2LDMsMTM2LDAsMTMxLDEsMTI1LDEsMTEwLDgsMTE2LDQsMTM2LDAsMTMxLDEsCisgICAgMTI1LDEsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDgsMTI1LDIsMTE2LDUsCisgICAgMTA2LDYsMTI0LDEsMTI0LDIsMTMxLDIsMTE2LDAsMTM2LDAsNjAsMCwxMjQsMSwKKyAgICA4MywwLDQxLDQsMTIyLDEwOSw3MSwxMDEsMTE2LDMyLDExMSwxMTQsMzIsOTksMTE0LDEwMSwKKyAgICA5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwOCwKICAgICAxMTEsOTksMTA3LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMywxMDUsMTE4LDEwMSwxMTAsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMzIsMzIsMzIsCi0gICAgMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiwxMDEsMTEwLDExNSwxMTcsMTE0LDEwMSwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAzMiwxMDUsMTE1LDMyLDk5LDExMSwxMDksMTEyLDEwOCwxMDEsMTE2LDEwMSwxMDgsMTIxLDMyLDEwNSwKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCw0NCwzMiwxMDUsMTEwLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDEwMSwxMTgsMTAxLDExMCwxMTYsMzIsMTA1LDExNiwzMiwKLSAgICAxMDUsMTE1LDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5NywxMTAsMTExLDExNiwxMDQsMTAxLDExNCwzMiwxMTYsMTA0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDgzLDEwNCwxMTEsMTE3LDEwOCwxMDAsCi0gICAgMzIsMTExLDExMCwxMDgsMTIxLDMyLDk4LDEwMSwzMiw5OSw5NywxMDgsMTA4LDEwMSwxMDAsMzIsCi0gICAgMTE5LDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwOCwxMTEsOTksMTA3LDMyLDExNiw5NywxMDcsMTAxLDExMCw0Niw3OCw0MSw2LDExNCw1NiwKLSAgICAwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDU4LDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCwxMTQsMzEsMCwwLDAsMTE0LDQ3LDAsMCwwLDQxLDIsMTE0LDE1LAotICAgIDAsMCwwLDExNCwzNSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTksOTUsMTA4LDExMSw5OSwxMDcsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNyw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxOTUsMCwwLDAsCi0gICAgMTE1LDE0LDAsMCwwLDAsNywxMiwxLDEwLDEsMywxLDE0LDEsMTMsCi0gICAgMyw1LDIsMTE0LDYzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwzLDAsMCwwLDMsMCwwLDAsNzksMCwwLDAsMTE1LDEzLDAsCi0gICAgMCwwLDEyNCwwLDAsMTI0LDEsMCwxMjQsMiwwLDE0MiwwLDAsODMsNDEsCi0gICAgMSw5Nyw0NiwxLDAsMCwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSw5NSwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0Niw5OSwzMiwxMTksMTA1LDEwOCwxMDgsMzIsOTcsCi0gICAgMTA4LDExOSw5NywxMjEsMTE1LDMyLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDMyLDExNSwxMDEsMTEzLAotICAgIDExNywxMDEsMTEwLDk5LDEwMSwxMTUsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMDUsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTE2LAotICAgIDEwNCw5NywxMTYsMzIsMTAxLDExMCwxMDAsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDk3LDMyLDk5LAotICAgIDk3LDEwOCwxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAyLDExNywxMTAsOTksCi0gICAgMTE2LDEwNSwxMTEsMTEwLDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExNSwxMDEsMzIsMTA1LDExNiwKLSAgICAzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCwzMiwxMTEsMTAyLDMyLDk3LDMyLDExMCwxMTEsCi0gICAgMTE0LDEwOSw5NywxMDgsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTEwLDMyLDExMiwxMDgsOTcsCi0gICAgOTksMTAxLDExNSwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKLSAgICA5OCwxMCwzMiwzMiwzMiwzMiwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDMyLDEwNSwxMTAsMTE2LAotICAgIDExNCwxMTEsMTAwLDExNyw5OSwxMDEsMTE1LDMyLDExNywxMTAsMTE5LDk3LDExMCwxMTYsMTAxLDEwMCwKLSAgICAzMiwxMTAsMTExLDEwNSwxMTUsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiwKLSAgICAxMTksMTA0LDEwMSwxMTAsMzIsMTAxLDEyMCwxMDEsOTksMTE3LDExNiwxMDUsMTEwLDEwMywxMCwzMiwKLSAgICAzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0MSwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMTQsMTAsMCwwLDAsNDEsMywyMTgsMSwxMDIsMTE0LDI5LAotICAgIDAsMCwwLDkwLDQsMTA3LDExOSwxMDAsMTE1LDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwyNSw5NSw5OSw5NywxMDgsMTA4LDk1LAotICAgIDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwKLSAgICAxMTgsMTAxLDEwMCwyMTQsMCwwLDAsMTE1LDIsMCwwLDAsMCw4LDExNCw2NSwKLSAgICAwLDAsMCwyMTgsOSwxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDExNCw0NSwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA0LDAsMCwwLDcxLDAsMCwwLDExNSw3NSwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEwNyw1LDAsMTE0LDcxLDAsMTI0LAotICAgIDAsMCwxMDYsMywwLDEwMCw2LDAsMTMxLDEsMCwxMTUsNDMsMCwxMDAsMywKLSAgICAwLDEyNCwwLDAsMjMsMTI1LDAsMCwxMTYsNCwwLDEyNCwwLDAsMTA2LDUsCi0gICAgMCwxMjQsMiwwLDE0MCwwLDAsMTAwLDQsMCwxMTYsMCwwLDEwNiw2LDAsCi0gICAgMTMxLDEsMSwxLDEwMCw1LDAsODMsNDEsNywxMjIsNjEsODAsMTE0LDEwNSwxMTAsCi0gICAgMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsMTE1LDExNiwxMDAsMTAxLDExNCwxMTQsMzIsMTA1LDEwMiwzMiw0NSwxMTgsNDcsODAsODksCi0gICAgODQsNzIsNzksNzgsODYsNjksODIsNjYsNzksODMsNjksMzIsMTA1LDExNSwzMiwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTAxLDEwMCwzMiwxMTEsMTEwLDQ2LDI1MCwxLDM1LDI1MCw3LDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEyMiwyLDM1LDMyLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAotICAgIDQxLDIsMTE0LDY3LDAsMCwwLDExNCw2OCwwLDAsMCw0MSw3LDExNCwxNCwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwKKyAgICAzMiwzMiw4MywxMDQsMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsCisgICAgMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LAorICAgIDEwMSwxMTAsNDYsNzgsOTksMSwwLDAsMCwwLDAsMCwwLDEsMCwwLAorICAgIDAsMiwwLDAsMCwxOSwwLDAsMCwxMTUsMTAsMCwwLDAsMTE2LDAsCisgICAgMTM2LDAsNjEsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwyMTgsMTMsOTUsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTA4LDExMSw5OSwxMDcsMTE1LDQxLDEsMjE4LDEsCisgICAgOTUsNDEsMSwxMTQsMTUsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwyMTgsMiw5OSw5OCwxNzMsMCwwLDAsMTE1LDIsMCwwLDAsMCwKKyAgICAxLDEyMiwyOCw5NSwxMDMsMTAxLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMDgsCisgICAgMTExLDk5LDEwNyw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTksOTgsNDEsCisgICAgNywxMTQsNTEsMCwwLDAsMjE4LDgsNzUsMTAxLDEyMSw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgMTE0LDIwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsMTgsMCwwLDAsMjE4LAorICAgIDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTAsMywxMTQsMTAxLDEwMiw0MSwzLAorICAgIDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDUzLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCw0MSwxLDExNCwxNSwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDQ1LDAsMCwwLDE1OSwwLDAsMCwxMTUsMjQsMCwwLDAsMCw0LAorICAgIDQsMSwyLDEsMTQsMSwxNCwxLDYsMSw4LDEsOCwxLDEwLDIsCisgICAgOCwxLDEyLDIsMTYsMSwxMTQsNDUsMCwwLDAsOTksMSwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDYyLDAsMCwwLDExNiwwLDEyNCwwLDEzMSwxLDEyNSwxLDExNiwxLDEwNiwKKyAgICAyLDEzMSwwLDEsMCwxMjEsMTIsMTI0LDEsMTA2LDMsMTMxLDAsMSwwLDg3LAorICAgIDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDQ4LDEsMCwxLDAsMSwKKyAgICAwLDg5LDAsMTEwLDEwLDg4LDAsMTI0LDEsMTA2LDUsMTMxLDAsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiw5NywyMSwxLDAsMCw4MiwxMDEsMTA4LDEwMSw5NywxMTUsCisgICAgMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0NCwzMiw5NywxMTAsMTAwLDMyLDk3LDk5LAorICAgIDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiwxMTQsMTAxLDEwOCwxMDEsCisgICAgOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSwzMiwxMDgsMTExLDk5LDEwNywzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDMsMTA1LAorICAgIDExOCwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDQ2LAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsCisgICAgMTAwLDMyLDExNiwxMTEsMzIsMTAxLDExMCwxMTUsMTE3LDExNCwxMDEsMzIsOTcsMzIsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTA5LDExMiwxMDgsMTAxLDExNiwxMDEsCisgICAgMTA4LDEyMSwzMiwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwxMDAsNDQsMzIsCisgICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDEsMTE4LDEwMSwxMTAsMTE2LAorICAgIDMyLDEwNSwxMTYsMzIsMTA1LDExNSwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsCisgICAgMTExLDExNCwxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsOTcsMTEwLDExMSwxMTYsMTA0LDEwMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MywxMDQsCisgICAgMTExLDExNywxMDgsMTAwLDMyLDExMSwxMTAsMTA4LDEyMSwzMiw5OCwxMDEsMzIsOTksOTcsMTA4LAorICAgIDEwOCwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKKyAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNywzMiwxMTYsOTcsMTA3LDEwMSwxMTAsNDYsNzgsCisgICAgNDEsNiwxMTQsNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0NywwLDAsCisgICAgMCwxMTQsMzQsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwzNSwwLDAsMCwKKyAgICA0MSwyLDExNCwxNSwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE5LDk1LDEwOCwxMTEsCisgICAgOTksMTA3LDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTc4LDAsMCwwLDExNSwxNCwwLDAsMCwwLDcsOCwxLDgsMSwyLAorICAgIDEsMTIsMSwxNCwzLDYsMiwxMTQsNTYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDMsMCwwLDAsMywwLDAsMCw3OSwwLDAsCisgICAgMCwxMTUsMTAsMCwwLDAsMTI0LDAsMTI0LDEsMTI0LDIsMTQyLDEsODMsMCwKKyAgICA0MSwxLDk3LDQ2LDEsMCwwLDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDk1LDEwNSwxMDksCisgICAgMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsOTUsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwxMDUsCisgICAgMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDk5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwKKyAgICA5NywxMDgsMTE5LDk3LDEyMSwxMTUsMzIsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDExNSwxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTAyLDExNCw5NywxMDksMTAxLDExNSwzMiwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDEsMTEwLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsOTcsMzIsCisgICAgOTksOTcsMTA4LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDIsMTE3LDExMCwKKyAgICA5OSwxMTYsMTA1LDExMSwxMTAsMTAsMTAsMzIsMzIsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDUsCisgICAgMTE2LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDMyLDExMSwxMDIsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTQsMTA5LDk3LDEwOCwzMiw5OSw5NywxMDgsMTA4LDMyLDEwNSwxMTAsMzIsMTEyLDEwOCwKKyAgICA5Nyw5OSwxMDEsMTE1LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExMCw5OSwxMDgsMTE3LAorICAgIDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsCisgICAgMTA1LDk4LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsMzIsMTA1LDExMCwKKyAgICAxMTYsMTE0LDExMSwxMDAsMTE3LDk5LDEwMSwxMTUsMzIsMTE3LDExMCwxMTksOTcsMTEwLDExNiwxMDEsCisgICAgMTAwLDMyLDExMCwxMTEsMTA1LDExNSwxMDEsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExNiwxMTQsOTcsOTksMTAxLDk4LDk3LDk5LDEwNywzMiw0MCwxMDEsNDYsMTAzLDQ2LAorICAgIDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDEsMTIwLDEwMSw5OSwxMTcsMTE2LDEwNSwxMTAsMTAzLDEwLAorICAgIDMyLDMyLDMyLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDQxLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxMCwwLDAsMCw0MSwzLDIxOCwxLDEwMiwxMTQsCisgICAgNDksMCwwLDAsOTAsNCwxMDcsMTE5LDEwMCwxMTUsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsCisgICAgOTUsMTE5LDEwNSwxMTYsMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksCisgICAgMTExLDExOCwxMDEsMTAwLDE5NywwLDAsMCwxMTUsMiwwLDAsMCwwLDgsMTE0LAorICAgIDU4LDAsMCwwLDExNCwzMywwLDAsMCw0MSwxLDIxOCw5LDExOCwxMDEsMTE0LAorICAgIDk4LDExMSwxMTUsMTA1LDExNiwxMjEsOTksMSwwLDAsMCwxLDAsMCwwLDMsCisgICAgMCwwLDAsNSwwLDAsMCw3MSwwLDAsMCwxMTUsNTQsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTA2LDIsMTI0LDEsMTA3LDUsMTE0LDUwLDEyNCwwLDEwNiwzLAorICAgIDEwMCw2LDEzMSwxLDExNSwzMCwxMDAsMywxMjQsMCwyMywwLDEyNSwwLDExNiw0LAorICAgIDEyNCwwLDEwNiw1LDEyNCwyLDE0MiwwLDExNiwwLDEwNiw2LDEwMCw0LDE0MSwyLAorICAgIDEsMCwxMDAsNSw4MywwLDQxLDcsMTIyLDYxLDgwLDExNCwxMDUsMTEwLDExNiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwzMiwxMTYsMTExLDMyLDExNSwKKyAgICAxMTYsMTAwLDEwMSwxMTQsMTE0LDMyLDEwNSwxMDIsMzIsNDUsMTE4LDQ3LDgwLDg5LDg0LDcyLAorICAgIDc5LDc4LDg2LDY5LDgyLDY2LDc5LDgzLDY5LDMyLDEwNSwxMTUsMzIsMTE2LDExNywxMTQsCisgICAgMTEwLDEwMSwxMDAsMzIsMTExLDExMCw0NiwyNTAsMSwzNSwyNTAsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMjIsMiwzNSwzMiw0MSwxLDkwLDQsMTAyLDEwNSwxMDgsMTAxLDc4LAorICAgIDQxLDIsMTE0LDYwLDAsMCwwLDExNCw2MSwwLDAsMCw0MSw3LDExNCwxNCwKICAgICAwLDAsMCwyMTgsNSwxMDIsMTA4LDk3LDEwMywxMTUsMjE4LDcsMTE4LDEwMSwxMTQsOTgsCiAgICAgMTExLDExNSwxMDEsMjE4LDEwLDExNSwxMTYsOTcsMTE0LDExNiwxMTUsMTE5LDEwNSwxMTYsMTA0LDIxOCwKLSAgICA1LDExMiwxMTQsMTA1LDExMCwxMTYsMTE0LDUwLDAsMCwwLDIxOCw2LDExNSwxMTYsMTAwLAotICAgIDEwMSwxMTQsMTE0LDQxLDMsMjE4LDcsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDY2LAotICAgIDAsMCwwLDExNCwyOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwzOCwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwKKyAgICAxMDEsMTE0LDExNCw0MSwzLDIxOCw3LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDExNCw1OSwKKyAgICAwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAogICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsCi0gICAgMTAxLDk1LDEwOSwxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIyNSwwLDAsMCwxMTUsOCwwLAotICAgIDAsMCwwLDIsMTgsMSwxNSwxLDEwLDEsMTE0LDc1LDAsMCwwLDk5LAorICAgIDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwyMDgsMCwwLDAsMTE1LDgsMCwKKyAgICAwLDAsMCwyLDEyLDEsMTAsMSw4LDEsMTE0LDY4LDAsMCwwLDk5LAogICAgIDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCwxMTUsMzUsMCwwLDAsMTM1LDAsMCwxMDIsMSwwLDEwMCwKLSAgICAxLDAsMTAwLDIsMCwxMzQsMCwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsMSwKLSAgICAwLDEzNiwwLDAsMTMxLDIsMCwxLDEyNCwxLDAsODMsNDEsMywxMjIsNDksCi0gICAgNjgsMTAxLDk5LDExMSwxMTQsOTcsMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwKLSAgICAxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKLSAgICA0Niw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCi0gICAgMCwwLDE5LDAsMCwwLDExNSw1NSwwLDAsMCwxMjQsMSwwLDExNiwwLAotICAgIDAsMTA2LDEsMCwxMDcsNywwLDExNCw0MiwwLDExNiwyLDAsMTAwLDEsMCwKLSAgICAxMDYsMywwLDEyNCwxLDAsMTMxLDEsMCwxMDAsMiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsODMsNDEsMyw3OCwxMjIsMjksMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5NywzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsNCwxMTQsMTQsMCwwLDAsCi0gICAgMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsCi0gICAgMTE0LDExMSwxMTQsMTE0LDUwLDAsMCwwLDQxLDIsMTE0LDE5LDAsMCwwLDIxOCwKLSAgICA4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLAotICAgIDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsMjM1LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwKLSAgICAxNSwxLDE4LDEsOSwxLDEyMiw1Miw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsCi0gICAgMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLAotICAgIDAsMCwwLDQxLDIsMTE0LDc5LDAsMCwwLDExNCw4MCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDExLDAsMCwwLAotICAgIDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDIzMywwLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTgsNSwKLSAgICAxMywxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsMTE1LDM1LDAsMCwKLSAgICAwLDEzNSwwLDAsMTAyLDEsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwKLSAgICAxMjUsMSwwLDExNiwwLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwKLSAgICAxMjQsMSwwLDgzLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsCi0gICAgMTE0LDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsCi0gICAgMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDIsMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsNTUsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwxLDAsMTMxLDEsMCwxMTUsNDIsMCwKLSAgICAxMTYsMiwwLDEwMCwxLDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwxLDAsMTAwLAotICAgIDIsMCwxMjQsMSwwLDEzMSwxLDEsMTMwLDEsMCwxMzYsMCwwLDEyNCwwLAotICAgIDAsMTI0LDEsMCwxMzEsMiwwLDgzLDQxLDMsNzgsMTIyLDI3LDEyMywzMywxMTQsCi0gICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwKLSAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDE1LDAsMCwwLDQxLDQsMTE0LAotICAgIDU3LDAsMCwwLDIxOCw5LDEwNSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMTE0LAotICAgIDc3LDAsMCwwLDExNCw1MCwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsNzgsMCwwLDAsNDEsMSwxMTQsNzksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAzLDAsMCwwLDExNSwyNiwwLDAsMCwxMzUsMCwxMDIsMSwxMDAsMSwxMDAsCisgICAgMiwxMzIsOCwxMjUsMSwxMTYsMCwxMjQsMSwxMzYsMCwxMzEsMiwxLDAsMTI0LAorICAgIDEsODMsMCw0MSwzLDEyMiw0OSw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKKyAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMCwKKyAgICA5NywxMDksMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk4LAorICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDQ2LDk5LDIsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDQsMCwwLDAsMTksMCwwLDAsMTE1LDM4LDAsCisgICAgMCwwLDEyNCwxLDExNiwwLDEwNiwxLDEwNyw3LDExNCwyOCwxMTYsMiwxMDAsMSwKKyAgICAxMDYsMywxMjQsMSwxMzEsMSwxMjQsMSwxMDAsMiwxNDEsMiwxMzAsMSwxMzYsMCwKKyAgICAxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDQxLDMsNzgsMTIyLDI5LDEyMywzMywxMTQsCisgICAgMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LAorICAgIDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsMTUsMCwwLAorICAgIDAsNDEsNCwxMTQsMTQsMCwwLDAsMjE4LDIwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExMCw5NywxMDksMTAxLDExNSwyMTgsMTEsCisgICAgNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDM4LDAsMCwwLAorICAgIDQxLDIsMTE0LDI2LDAsMCwwLDIxOCw4LDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LAorICAgIDEwMSw0MSwxLDIxOCwzLDEwMiwxMjAsMTEwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDI1LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMjE4LDAsMCwKKyAgICAwLDExNSw4LDAsMCwwLDAsMSwxMCwxLDEwLDEsOCwxLDEyMiw1MiwKKyAgICA5NSwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsCisgICAgMTEwLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwxMTQsMTAxLDExMywxMTcsCisgICAgMTA1LDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExOSwxMTQsOTcsCisgICAgMTEyLDExMiwxMDEsMTE0LDQxLDEsMTE0LDEyLDAsMCwwLDQxLDIsMTE0LDcyLDAsCisgICAgMCwwLDExNCw3MywwLDAsMCwxMTQsMTAsMCwwLDAsNDEsMSwxMTQsNzIsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTQsMTAxLDExMywxMTcsMTA1LAorICAgIDExNCwxMDEsMTE1LDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDIxNiwwLDAsMCwxMTUsCisgICAgNiwwLDAsMCwwLDIsMTIsNSwxMCwxLDExNCw3NCwwLDAsMCw5OSwKKyAgICAxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLAorICAgIDMsMCwwLDAsMTE1LDI2LDAsMCwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwKKyAgICAyLDEzMiw4LDEyNSwxLDExNiwwLDEyNCwxLDEzNiwwLDEzMSwyLDEsMCwxMjQsCisgICAgMSw4MywwLDQxLDMsMTIyLDQ3LDY4LDEwMSw5OSwxMTEsMTE0LDk3LDExNiwxMTEsMTE0LAorICAgIDMyLDExNiwxMTEsMzIsMTE4LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDIsCisgICAgMCwwLDAsNCwwLDAsMCwxOSwwLDAsMCwxMTUsMzgsMCwwLDAsCisgICAgMTE2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTE1LDI4LDExNiwyLDEwMCwxLDEwNiwzLAorICAgIDEyNCwxLDEzMSwxLDEyNCwxLDEwMCwyLDE0MSwyLDEzMCwxLDEzNiwwLDEyNCwwLAorICAgIDEyNCwxLDEzMSwyLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsCisgICAgMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSw0LDExNCwKKyAgICA0NiwwLDAsMCwyMTgsOSwxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDExNCwKKyAgICA3MCwwLDAsMCwxMTQsMzgsMCwwLDAsNDEsMiwxMTQsMjYsMCwwLDAsCisgICAgMTE0LDcxLDAsMCwwLDQxLDEsMTE0LDcyLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDI0LDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwKICAgICAxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsCi0gICAgMjQ2LDAsMCwwLDExNSw4LDAsMCwwLDAsMSwxNSwxLDE4LDEsOSwKKyAgICAyMjksMCwwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSw4LAogICAgIDEsMTIyLDUwLDk1LDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsCiAgICAgMTIyLDEwMSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsCiAgICAgMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTE5LDExNCwKLSAgICA5NywxMTIsMTEyLDEwMSwxMTQsNDEsMSwxMTQsMTIsMCwwLDAsNDEsMiwxMTQsNzksCi0gICAgMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxMCwwLDAsMCw0MSwxLDExNCwKLSAgICA3OSwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDExNCwxMDEsMTEzLDExNywKLSAgICAxMDUsMTE0LDEwMSwxMTUsOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMjQ0LDAsMCwwLDExNSwKLSAgICA2LDAsMCwwLDAsMiwxOCw1LDEzLDEsMTE0LDg0LDAsMCwwLDk5LAorICAgIDk3LDExMiwxMTIsMTAxLDExNCw0MSwxLDExNCwxMiwwLDAsMCw0MSwyLDExNCw3MiwKKyAgICAwLDAsMCwxMTQsNzYsMCwwLDAsMTE0LDEwLDAsMCwwLDQxLDEsMTE0LAorICAgIDcyLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTYsOTUsMTE0LDEwMSwxMTMsMTE3LAorICAgIDEwNSwxMTQsMTAxLDExNSw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwyMjcsMCwwLDAsMTE1LAorICAgIDYsMCwwLDAsMCwyLDEyLDUsMTAsMSwxMTQsNzcsMCwwLDAsOTksCiAgICAgMiwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsODEsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsMTMxLDIsMCwxMjUsMiwwLDEyNCwxLDAsMTE2LDEsMCwxMDYsMiwKLSAgICAwLDEwNyw2LDAsMTE0LDY3LDAsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsCi0gICAgMjUsMTI1LDMsMCwxMTYsMywwLDEyNCwyLDAsMTI0LDMsMCwxMzEsMiwwLAotICAgIDEsMTE2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMjUsODMsMTE2LDQsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiwxMjgsNzYsMTExLAotICAgIDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsCi0gICAgMTE1LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LAotICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsCi0gICAgNSwyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwyMTgsNSw5NSwKLSAgICAxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LDExNCwxOSwwLAotICAgIDAsMCwxMTQsNzgsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDYsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwwLDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDYsMTUsMSwxNSwxLDEzLDEsMTMsMSwxMSwyLDExNCw5MCwwLDAsCi0gICAgMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwzNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNiwxLDAsMCwxMTYsMCwwLDEyNCwwLAotICAgIDAsMTAwLDEsMCwxMDAsMCwwLDEzMSwzLDAsMTI1LDEsMCwxMTYsMSwwLAotICAgIDEyNCwxLDAsMTAwLDIsMCwxMzEsMiwwLDExNCw3MSwwLDEyMSwxNywwLDEyNCwKLSAgICAxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsODMsODcsMTEwLDE4LDAsCi0gICAgNCwxMTYsMywwLDEwNywxMCwwLDExNCw3MCwwLDEsMSwxLDg5LDExMCwxLAotICAgIDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwyLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxMDQsMCwxLDEsMSw4OSwKLSAgICAxMTAsMjMsMCw4OCwxMjQsMiwwLDEwMCwwLDAsMTA3LDksMCwxMTQsMTI3LDAsCi0gICAgMTE2LDYsMCwxMjQsMiwwLDEzMSwxLDAsODMsMTIxLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsNywwLDEyNSwzLDAsODcsMTEwLDI0LDAsNCwxMTYsNSwwLDEwNywxMCwKLSAgICAwLDExNCwxNjYsMCwxLDEsMSwxMDAsMywwLDEyNSwzLDAsODksMTEwLDEsCi0gICAgMCw4OCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw4LDAsMTI1LDQsMCw4NywxMTAsCi0gICAgNTksMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDI0MSwwLDEsMSwxLDEyNCwKLSAgICAxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwyMjEsMCwxMDAsNCwwLDEwNiw5LAotICAgIDAsMTI0LDMsMCwxMzEsMSwwLDgzLDEwMCw1LDAsMTA2LDksMCwxMjQsMywKLSAgICAwLDEyNCwxLDAsMTMxLDIsMCw4Myw4OSwxMTAsMTcsMCw4OCwxMDAsNiwwLAotICAgIDEwNiw5LDAsMTI0LDMsMCwxMjQsNCwwLDEzMSwyLDAsODMsMTAwLDAsMCwKLSAgICA4Myw0MSw3LDc4LDIxOCwxMCw5NSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LAotICAgIDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsMjUwLDEsNjMsCi0gICAgMTIyLDEzLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDYyLDEyMiwKLSAgICAyMCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMjMsCi0gICAgMzMsMTE0LDEyNSw0MSw2MiwxMjIsMjMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLAotICAgIDMzLDExNCwxMjUsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDYyLDQxLDEwLAotICAgIDExNCw2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw5MiwwLDAsMCwyMTgsCi0gICAgOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsMjE4LDgsOTUsOTUsMTE1LDExMiwKLSAgICAxMDEsOTksOTUsOTUsMjE4LDE0LDY1LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDIyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTE1LDExMiwxMDEsOTksMTE0LDEsMCwwLAotICAgIDAsMjE4LDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDExNCw1MCwwLDAsMCwKLSAgICA0MSw1LDExNCw4OSwwLDAsMCwyMTgsNiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwKLSAgICA4OCwwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDgsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDIxOCwxMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgMTYsMSwwLDAsMTE1LDQ2LDAsMCwwLDAsMiwxOCwxLDE1LDQsMywKLSAgICAxLDE3LDEsMTMsMSw1LDEsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSwxMCw0LDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTMsMSwxMywKLSAgICAxLDEyLDEsMTMsMiwyMSwyLDExNCwxMDEsMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNTIsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwwLDAsOTAsMywwLDEwMCwzLAotICAgIDAsMTAwLDQsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMyLDAsMCw5MCw1LDAsMTAwLDcsMCw4Myw0MSw4LDIxOCwxNyw5NSwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsOTksCi0gICAgMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTI0LDEsMCwxMjQsMCwwLDk1LAotICAgIDAsMCwxMjQsMSwwLDEwNiwxLDAsMTI0LDAsMCw5NSwyLDAsMTAwLDAsCi0gICAgMCw4Myw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE0LDk1LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDE5LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjAsMCwwLDAsNTQsMSwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAorICAgIDY3LDAsMCwwLDExNSw2NCwwLDAsMCwxMTYsMCwxMjQsMSwxMjQsMCwxMzEsCisgICAgMiwxMjUsMiwxMjQsMSwxMTYsMSwxMDYsMiwxMDcsNiwxMTQsNTIsMTE2LDEsMTA2LAorICAgIDIsMTI0LDEsMjUsMCwxMjUsMywxMTYsMywxMjQsMiwxMjQsMywxMzEsMiwxLAorICAgIDAsMTE2LDEsMTA2LDIsMTI0LDEsMjUsMCw4MywwLDExMCw4LDExNiw0LDEyNCwKKyAgICAyLDEzMSwxLDgzLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwxMjgsNzYsMTExLDk3LAorICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTAsMTE2LDExMSwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsCisgICAgMTE0LDExMCwzMiwxMDUsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAorICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwKKyAgICAyMTgsMTYsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOCwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTE0LDE0LDAsMCwwLDIxOCw3LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAyMTgsNSw5NSwxMDEsMTIwLDEwMSw5OSwyMTgsNSw5NSwxMDgsMTExLDk3LDEwMCw0MSw0LAorICAgIDExNCwyNiwwLDAsMCwxMTQsNzEsMCwwLDAsMjE4LDQsMTE1LDExMiwxMDEsOTksCisgICAgMjE4LDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSwyMzksMCwwLDAsMTE1LDEyLAorICAgIDAsMCwwLDAsNiwxMCwxLDEwLDEsMTAsMSwxMCwxLDEyLDIsMTE0LAorICAgIDg0LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwKKyAgICAwLDM1LDAsMCwwLDY3LDAsMCwwLDExNSwyMTgsMCwwLDAsMTE2LDAsCisgICAgMTI0LDAsMTAwLDEsMTAwLDAsMTMxLDMsMTI1LDEsMTE2LDEsMTI0LDEsMTAwLDIsCisgICAgMTMxLDIsMTE0LDU0LDEyMSwxMCwxMjQsMSwxMDYsMiwxMjQsMCwxMzEsMSw4MywwLAorICAgIDQsMCwxMTYsMywxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDIsODgsMCwxMjEsMTAsMTI0LDAsMTA2LDQsMTI1LDIsODcsMCwxMTAsMjAsCisgICAgNCwwLDExNiw1LDEwNywxMCwxMTQsODQsMSwwLDEsMCwxLDAsODksMCwKKyAgICAxMTAsMTgsODgsMCwxMjQsMiwxMDAsMCwxMDcsOSwxMTQsMTAyLDExNiw2LDEyNCwyLAorICAgIDEzMSwxLDgzLDAsMTIxLDEwLDEyNCwwLDEwNiw3LDEyNSwzLDg3LDAsMTEwLDI0LAorICAgIDQsMCwxMTYsNSwxMDcsMTAsMTE0LDEzNiwxLDAsMSwwLDEsMCwxMDAsMywKKyAgICAxMjUsMyw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLDEyNCwwLDEwNiw4LDEyNSw0LAorICAgIDg3LDAsMTEwLDUyLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDIwMCwxLDAsMSwwLAorICAgIDEsMCwxMjQsMSwxMDAsMCwxMDcsOCwxMTQsMTg0LDEwMCw0LDEwNiw5LDEyNCwzLAorICAgIDEzMSwxLDgzLDAsMTEwLDEyLDEwMCw1LDEwNiw5LDEyNCwzLDEyNCwxLDEzMSwyLAorICAgIDgzLDAsODksMCwxMTAsMTQsODgsMCwxMDAsNiwxMDYsOSwxMjQsMywxMjQsNCwKKyAgICAxMzEsMiw4MywwLDEwMCwwLDgzLDAsNDEsNyw3OCwyMTgsMTAsOTUsOTUsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5NSw5NSwyMTgsMTEsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsCisgICAgMTE0LDEwMSwxMTIsMTE0LDI1MCwxLDYzLDEyMiwxMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSw2MiwxMjIsMjAsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTIzLDMzLDExNCwxMjUsMzIsNDAsMTIzLDMzLDExNCwxMjUsNDEsNjIsMTIyLDIzLDYwLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSw2Miw0MSwxMCwxMTQsNiwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsODYsMCwwLDAsMjE4LDksNjksMTIwLDk5LDEwMSwxMTIsMTE2LDEwNSwxMTEsCisgICAgMTEwLDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LDk1LDk1LDIxOCwxNCw2NSwxMTYsMTE2LAorICAgIDExNCwxMDUsOTgsMTE3LDExNiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDIxOCwyMiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwKKyAgICAxMTIsMTAxLDk5LDExNCwxLDAsMCwwLDIxOCw4LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICA5NSw5NSwxMTQsMzgsMCwwLDAsNDEsNSwxMTQsODMsMCwwLDAsMjE4LDYsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLAorICAgIDIxOCw4LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTIsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDI1NSwwLDAsMCwxMTUsNDYsMCwwLDAsCisgICAgMCwyLDEyLDEsMTAsNCwyLDEsMTAsMSwxNCwxLDYsMSwyLDEsCisgICAgMTAsMSwxNCwxLDYsMiw4LDEsOCw0LDIsMSwxMCwxLDE0LDEsCisgICAgMTAsMSwyLDEsMTAsMSwxNCwxLDgsMSwxMiwyLDE4LDIsMTE0LDk1LAorICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsNjQsMCwwLDAsMTE1LDM2LDAsMCwwLDEwMSwwLDkwLAorICAgIDEsMTAwLDAsOTAsMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCwKKyAgICA0LDEzMiwwLDkwLDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNyw4MywKKyAgICAwLDQxLDgsMjE4LDE3LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LDEwMSwxMDAsOTUsCisgICAgMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxOCwwLDAsMCwKKyAgICAxMjQsMSwxMjQsMCw5NSwwLDEyNCwxLDEwNiwxLDEyNCwwLDk1LDIsMTAwLDAsCisgICAgODMsMCw0MSwxLDc4LDQxLDMsMjE4LDcsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMTE0LDg5LDAsMCwwLDIxOCw1LDk1LDExNSwxMTIsMTAxLDk5LDQxLDIsMTE0LDI2LAorICAgIDAsMCwwLDExNCw4MywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMjcsMCwwLDAsMzcsMSwwLDAsCisgICAgMTE1LDQsMCwwLDAsMCwxLDYsMSwxMjIsMjYsOTUsMTA1LDExMCwxMTUsMTE2LAogICAgIDk3LDEwOCwxMDgsMTAxLDEwMCw5NSwxMTUsOTcsMTAyLDEwMSwxMDgsMTIxLDQ2LDk1LDk1LDEwNSwKICAgICAxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLAotICAgIDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMDAsCi0gICAgMSwwLDEyNCwwLDAsMTA2LDAsMCw5NSwxLDAsMTI0LDAsMCwxMDYsMiwKLSAgICAwLDExNiwzLDAsMTA2LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDUsMCwKLSAgICA2MCwxMDAsMCwwLDgzLDQxLDIsNzgsODQsNDEsNiwxMTQsMTA0LDAsMCwwLAotICAgIDIxOCwxMyw5NSwxMDUsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwNSwxMTAsMTAzLDExNCwKLSAgICAxMDMsMCwwLDAsMTE0LDE0LDAsMCwwLDExNCwyMSwwLDAsMCwxMTQsMTUsCi0gICAgMCwwLDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDIzLDAsMCwwLDU4LDEsCi0gICAgMCwwLDExNSw0LDAsMCwwLDAsNCwxMiwxLDEyMiwyNyw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsCi0gICAgOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCwxNywwLDAsMCw3MSwwLDAsMCwxMTUsMTIxLDAsCi0gICAgMCwwLDEyMiwxMDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwMCwxLDAsMTAwLDIsMCwxMzIsMCwwLDEyNCwxLDAsNjgsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDExNCw3OCwwLDEyMSwxNywwLDExNiwyLDAsMTA2LDMsMCwKLSAgICAxMjQsMiwwLDEwNiw0LDAsNjEsODcsMTEzLDEwMCwwLDQsMTE2LDUsMCwxMDcsCi0gICAgMTAsMCwxMTQsNzQsMCwxLDEsMSw4OSwxMTMsMTAwLDAsODgsMTEwLDIyLDAsCi0gICAgMTE2LDYsMCwxMDAsMywwLDEyNCwyLDAsMTA2LDQsMCwxMjQsMiwwLDEwNiwKLSAgICA3LDAsMTMxLDMsMCwxLDg3LDEwMCwwLDAsMTAwLDQsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsOTUsOCwwLDg4LDEwMCwwLDAsODMsNDEsNSw3OCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwKLSAgICAwLDAsMCwxMTUsMjcsMCwwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLAotICAgIDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw5LDAsODYsMSwxMTMsMywwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMjQsMCwKLSAgICAwLDAsMTE0LDI1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwyNiwwLDAsMCw2OCwxLDAsMCwxMTUsCi0gICAgMiwwLDAsMCw2LDAsMTIyLDQ1LDk1LDEwNSwxMTAsMTE1LDExNiw5NywxMDgsMTA4LAotICAgIDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLDEwNSwxMTYsCi0gICAgOTUsOTUsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLAotICAgIDEwMSwxMjAsMTEyLDExNCw2MiwxMjIsMTgsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMzUsMzIsMTIzLDMzLDExNCwxMjUsNzAsNDEsOSwxMTQsMTA0LDAsMCwKLSAgICAwLDExNCwyNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLAotICAgIDExNCwxNSwwLDAsMCwxMTQsMjgsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCwKLSAgICA5OSwwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDMsMTE0LDE5LDAsMCwwLAotICAgIDExNCwyOSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLDAsMCwwLDY1LDEsCi0gICAgMCwwLDExNSwxOCwwLDAsMCwwLDEsMywxLDksMSwyNSwxLDMsCi0gICAgMSwxNywxLDEzLDEsOCwyLDI2LDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsCi0gICAgMTIwLDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLAotICAgIDAsMCwxMTQsMiwwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDIzLDAsMCwKLSAgICAwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw1MiwKLSAgICAxLDAsMCwxMTUsNiwwLDAsMCwxMiwyLDEyLDQsMTIsNywxMTQsMTAyLAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDgsMCwwLDAsNjQsMCwwLDAsMTE1LDE3MiwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTAwLDQsMCwxMDAsMywwLDEwMCw1LDAsMTAwLDMsCi0gICAgMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMyw5MCw0LDAsMTAwLDgsMCwKLSAgICAxMDAsOSwwLDEzMiwwLDAsOTAsNSwwLDEwMCwxMCwwLDEwMCwxMSwwLDEzMiwKLSAgICAwLDAsOTAsNiwwLDEwMSw3LDAsMTAwLDEyLDAsMTAwLDEzLDAsMTMyLDAsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsOCwwLDEwNiw5LDAsMTAwLDE0LDAsCi0gICAgMTAwLDEzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDgsMCwxMDEsNywwLDEwMCwKLSAgICAxNSwwLDEwMCwxNiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw3LAotICAgIDAsMTAwLDE3LDAsMTAwLDE4LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsCi0gICAgMTAxLDExLDAsMTA2LDksMCwxMDAsMTksMCwxMDAsMTgsMCwxMzIsMCwwLDEzMSwKLSAgICAxLDAsOTAsMTEsMCwxMDAsMywwLDgzLDQxLDIwLDIxOCwxMCw3NywxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTcsMjA4LDUsMCwwLDg0LDEwNCwxMDEsMzIsCi0gICAgMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDExNywxMTUsMTAxLDEwMCwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMyw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2NSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTE1LDExMiwKLSAgICAxMDEsOTksMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLDExMCwKLSAgICAzMiw5Nyw5OCwxMTEsMTE3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw0NiwzMiwzMiw3MCwxMTEsMTE0LDEwLDMyLDMyLDMyLDMyLDEwMCw5NywxMTYsOTcsCi0gICAgMzIsOTcsMTE1LDExNSwxMTEsOTksMTA1LDk3LDExNiwxMDEsMTAwLDMyLDExOSwxMDUsMTE2LDEwNCwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTEwLDk5LAotICAgIDEwOCwxMTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsNDQsMzIsMTE3LAotICAgIDExNSwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDEwLDMyLDMyLAotICAgIDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgMTEwLDk3LDEwOSwxMDEsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiw5Nyw5OCwxMTUsCi0gICAgMTExLDEwOCwxMTcsMTE2LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDEwLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTE5LDEwNCwxMDEsCi0gICAgMTEwLDMyLDEwOCwxMTEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDk2LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTYsMzIsCi0gICAgMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwKLSAgICAxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDEwNSwxMTAsNDYsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAwLDEwMSwxMTQsMTA1LDExOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDUsMTE1LDk1LAotICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NiwzMiwxMDAsMTAxLDExNiwxMDEsMTE0LDEwOSwxMDUsCi0gICAgMTEwLDEwMSwxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwxMDEsMTAwLDMyLAotICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTEsMTE0LDEwLDMyLDMyLDMyLAotICAgIDMyLDExMCwxMTEsMTE2LDQ2LDMyLDMyLDc5LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwKLSAgICAxMTYsMTAxLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsOTYsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsOTYsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDk2LDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDk2LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsOTksMzIsMTA4LAotICAgIDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDk4LDEyMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwKLSAgICAxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLAotICAgIDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwNSwxMTAsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMDUsMTE1LDMyLDk3LDExOCw5NywxMDUsMTA4LDk3LDk4LDEwOCwxMDEsNDYsMzIsCi0gICAgMzIsODcsMTA0LDEwMSwxMTAsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwNSwKLSAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTExLDExNCwxMDUsMTAzLDEwNSwKLSAgICAxMTAsMzIsMTE5LDEwNSwxMDgsMTA4LDMyLDEwOSw5NywxMTYsOTksMTA0LDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDk2LDEwNCw5NywxMTUsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgOTYsMzIsMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMTE1LDMyLDExNiwxMDQsOTcsMTE2LAotICAgIDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwzNCwxMTEsMTE0LDEwNSwxMDMsMTA1LAotICAgIDExMCwzNCwzMiwxMTQsMTAxLDEwMiwxMDgsMTAxLDk5LDExNiwxMTUsMzIsOTcsMzIsMTA4LDExMSwKLSAgICA5OSw5NywxMTYsMTA1LDExMSwxMTAsNDYsMTAsMzIsMzIsMzIsMzIsODcsMTA0LDEwMSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTUsMzIsODQsMTE0LDExNywxMDEsNDQsMzIsOTYsCi0gICAgOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwKLSAgICAxMTcsMTE2LDEwMSwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDEwMSwxMTYsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsCi0gICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMDUsMTAyLDMyLDk3LDExMCwxMjEsNDYsMzIsMzIsNzMsMTE2LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDExNSwKLSAgICAzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDk2LDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgMTAwLDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiw5NiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LAotICAgIDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsCi0gICAgOTYsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDExMywxMTcsMTAxLDExMCw5OSwKLSAgICAxMDEsMzIsMTExLDEwMiwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTA1LDEwMSwKLSAgICAxMTUsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsCi0gICAgMTE5LDEwNCwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExNSwKLSAgICAxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDMyLDMyLDczLDEwMiwzMiwxMTUsCi0gICAgMTAxLDExNiw0NCwzMiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMTUsCi0gICAgMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsODQsMTE0LDExNywKLSAgICAxMDEsNDUsNDUsOTcsMTEwLDEwMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTEsMTE2LDEwNCwKLSAgICAxMDEsMTE0LDExOSwxMDUsMTE1LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4MCw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTE2LDEwNCw5NywxMTYsMzIsNDAsMTA5LAotICAgIDk3LDEyMSw0MSwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywKLSAgICAxMDgsMTAxLDExNSw0NiwzMiwzMiw3MywxMDIsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMTAsCi0gICAgMzIsMzIsMzIsMzIsMTA0LDk3LDExNSwzMiw5NywzMiwxMTAsMTExLDExMCw0NSw3OCwxMTEsCi0gICAgMTEwLDEwMSwzMiwxMTgsOTcsMTA4LDExNywxMDEsMzIsMTA1LDExMCwzMiw5NiwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsOTYsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsCi0gICAgMTE5LDEwNSwxMDgsMTA4LDMyLDk5LDExMSwxMTAsMTE1LDEwNSwxMDAsMTAxLDExNCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKLSAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTEwLDEwOCwKLSAgICAxMjEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE1LDMyLDQwLDExNSwxMDEsMTAxLDMyLDEwNSwKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsNDYsOTcsOTgsOTksNDYsNzcsMTAxLDExNiwKLSAgICA5Nyw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsOTcsMTEwLDEwMCwxMCwKLSAgICAzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAotICAgIDk5LDQ2LDgwLDk3LDExNiwxMDQsNjksMTEwLDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsMTA5LDExMSwxMDAsMTA1LDEwMiwxMjEsCi0gICAgMzIsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDMyLDEwNSwxMTAsMTE1LDExNiwKLSAgICA5NywxMTAsOTksMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwyMTgsNiwxMTEsMTE0LAotICAgIDEwNSwxMDMsMTA1LDExMCw3OCwyMTgsMTIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LAotICAgIDMsMCwwLDAsMywwLDAsMCw2LDAsMCwwLDIsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDc5LDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwKLSAgICAwLDAsMTI0LDIsMCwxMjQsMCwwLDk1LDEsMCwxMjQsMywwLDEyNCwwLAotICAgIDAsOTUsMiwwLDEyNCw0LDAsMTI0LDAsMCw5NSwzLDAsMTI0LDUsMCwKLSAgICAxMTQsNDgsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDAsMCwxMjQsMCwwLDk1LAotICAgIDQsMCwxMDAsMSwwLDEyNCwwLDAsOTUsNSwwLDEwMCwwLDAsMTI0LDAsCi0gICAgMCw5NSw2LDAsMTAwLDAsMCw4Myw0MSwyLDc4LDcwLDQxLDcsMTE0LDE1LAotICAgIDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwKLSAgICAwLDAsMjE4LDI2LDExNSwxMTcsOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSwKLSAgICA5NywxMTQsOTksMTA0LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSwyMTgsMTMsCi0gICAgOTUsMTE1LDEwMSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCw3LDk1LAotICAgIDk5LDk3LDk5LDEwNCwxMDEsMTAwLDQxLDYsMTE0LDE5LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwxMDksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDIwLDAsMCwwLDExNiwxLDAsMCwxMTUsMTQsCi0gICAgMCwwLDAsMCwyLDksMSw5LDEsOSwxLDksMSwyMSwzLDksCi0gICAgMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LAotICAgIDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNDcsMCwwLDAsCi0gICAgMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsMSwwLDEwMCwKLSAgICAyLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwyLDAsMTMxLDEsMCwxMDMsMiwKLSAgICAwLDEyNSwxLDAsMTI0LDAsMCwxMDYsMywwLDEwMCwwLDAsMTA3LDksMCwKLSAgICAxMTQsNzYsMCwxMjQsMSwwLDEwNiw0LDAsMTAwLDMsMCwxMDYsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDMsMCwxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMCwwLDEwNiwKLSAgICA1LDAsMTAwLDAsMCwxMDcsOSwwLDExNCwxMTYsMCwxMjQsMSwwLDEwNiw0LAotICAgIDAsMTAwLDQsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMDAsNSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsNiwwLAotICAgIDEwNiw3LDAsMTAwLDYsMCwxMDYsOCwwLDEyNCwxLDAsMTMxLDEsMCwxMzEsCi0gICAgMiwwLDgzLDQxLDcsNzgsMTIyLDksMTEwLDk3LDEwOSwxMDEsNjEsMTIzLDMzLDExNCwKLSAgICAxMjUsMTIyLDExLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDExLAotICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDYxLDEyMywzMywxMTQsMTI1LDEyMiwyOSwxMTUsMTE3LDk4LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCw5NSwxMDgsMTExLAotICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsNjEsMTIzLDEyNSwxMjIsNiwxMjMsMTI1LDQwLDEyMywKLSAgICAxMjUsNDEsMTIyLDIsNDQsMzIsNDEsOSwxMTQsNTAsMCwwLDAsMTE0LDE1LDAsCi0gICAgMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsMCwwLDIxOCw2LDk3LDExMiwKLSAgICAxMTIsMTAxLDExMCwxMDAsMTE0LDExMCwwLDAsMCwyMTgsOSw5NSw5NSw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSw5NSw5NSwxMTQsMSwwLDAsMCwyMTgsNCwxMDYsMTExLDEwNSwxMTAsNDEsCi0gICAgMiwxMTQsMTksMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwxMCwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw1MiwwLDAsMCwxMjgsCi0gICAgMSwwLDAsMTE1LDE2LDAsMCwwLDAsMSwxNSwxLDIxLDEsMTUsMSwKLSAgICAyNSwxLDE1LDEsMTIsMSwxMywxLDEyMiwxOSw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDgzLDExMiwxMDEsOTksNDYsOTUsOTUsMTE0LDEwMSwxMTIsMTE0LDk1LDk1LDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDExLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxNDUsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNSwyLDAsCi0gICAgMTIxLDEwNywwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMSwwLDEwNiwxLDAsMTA3LAotICAgIDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTA2LDIsCi0gICAgMCwxMDcsMiwwLDExMSwxMTQsMCwxMjQsMCwwLDEwNiwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwNywyLDAsMTExLDExNCwwLDEyNCwyLDAsMTI0LDEsMCwxMDYsCi0gICAgMCwwLDEwNywyLDAsMTExLDExNCwwLDEyNCwwLDAsMTA2LDQsMCwxMjQsMSwKLSAgICAwLDEwNiw0LDAsMTA3LDIsMCwxMTEsMTE0LDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEyNCwxLDAsMTA2LDUsMCwxMDcsMiwwLDgzLDg3LDExMCwyMiwwLDQsMTE2LAotICAgIDYsMCwxMDcsMTAsMCwxMTQsMTQwLDAsMSwxLDEsMTAwLDEsMCw4Myw4OSwKLSAgICAxMTAsMSwwLDg4LDEwMCwwLDAsODMsNDEsMiw3OCw3MCw0MSw3LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTA3LDAsCi0gICAgMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDIxOCwxMiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5NiwwLDAsMCw0MSwzLDExNCwKLSAgICAxOSwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsOTAsNCwxMTUsMTA5LDExNSwKLSAgICAxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCi0gICAgMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMzgsMSwwLDAsMTE1LDIwLDAsMCwKLSAgICAwLDAsMSw5LDEsMywxLDE4LDEsMTgsMSwxOCwxLDE1LDEsMTgsCi0gICAgMSwyMCwxLDEzLDEsMTIyLDE3LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSwKLSAgICA5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDg1LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDc4LAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEwMCwwLDAsMTA3LDksMCwxMTQsNzgsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTE0LDc4LDAsMTE2LDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDU3LDAsMTE2LDQsMCwxMzAsMSwwLDExNiwzLDAsMTA2LDUsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCwxMjQsMCwwLDk1LDAsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsODMsNDEsMSw3OCw0MSw2LDExNCwxMTIsMCwwLAotICAgIDAsMTE0LDEwNywwLDAsMCwxMTQsMTExLDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsCi0gICAgMTExLDExNiwxMTUsMTE2LDExNCw5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LAotICAgIDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCwKLSAgICA2OSwxMTQsMTE0LDExMSwxMTQsOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMDAsNDEsMSwxMTQsMTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExNiwwLDAsMCwxNTAsMSwwLAotICAgIDAsMTE1LDEyLDAsMCwwLDAsMiwxNSwxLDI0LDEsMTIsMSw2LDEsCi0gICAgMjEsMSwxMjIsMTcsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk5LAotICAgIDk3LDk5LDEwNCwxMDEsMTAwLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEzLDAsMCwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCw5NSwwLDAsMTAwLDAsMCw4Myw0MSwxLDc4LDQxLAotICAgIDEsMTE0LDExMiwwLDAsMCw0MSwyLDExNCwxOSwwLDAsMCwxMTQsMTE2LDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTU5LDEsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwzNSwwLDEyNCwwLDAsMTA2LDEsMCwKLSAgICAxMDYsMiwwLDEwMCwyLDAsMTMxLDEsMCwxMDAsMywwLDI1LDgzLDEyNCwwLAotICAgIDAsMTA2LDEsMCw4MywxMDAsMSwwLDgzLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDI4LDAsMCwwLDEwMCwKKyAgICAxLDEyNCwwLDEwNiwwLDk1LDEsMTI0LDAsMTA2LDIsMTE2LDMsMTA2LDQsMTI0LAorICAgIDAsMTA2LDAsMTA2LDUsNjAsMCwxMDAsMCw4MywwLDQxLDIsNzgsODQsNDEsCisgICAgNiwxMTQsOTgsMCwwLDAsMjE4LDEzLDk1LDEwNSwxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAorICAgIDEwNSwxMjIsMTA1LDExMCwxMDMsMTE0LDk3LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsCisgICAgNzksMCwwLDAsMTE0LDE1LDAsMCwwLDQxLDEsMTE0LDI2LDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICA0OCwwLDAsMCw0MSwxLDAsMCwxMTUsNCwwLDAsMCwwLDQsOCwKKyAgICAxLDEyMiwyNyw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsMTAwLDk1LDExNSw5NywKKyAgICAxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDExMCwxMTYsMTAxLDExNCw5NSw5NSw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxNywwLDAsMCw3MSwKKyAgICAwLDAsMCwxMTUsOTgsMCwwLDAsMTIyLDgyLDEyNCwwLDEwNiwwLDEyNSwyLAorICAgIDExNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwxLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgMTE0LDY0LDEyMSwxNCwxMTYsMiwxMDYsMywxMjQsMiwxMDYsNCw2MSwwLDg3LDAsCisgICAgMTEzLDgwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDYwLDEsMCwxLDAsMSwwLAorICAgIDg5LDAsMTEzLDgwLDg4LDAsMTEwLDE2LDExNiw2LDEwMCwzLDEyNCwyLDEwNiw0LAorICAgIDEyNCwyLDEwNiw3LDEzMSwzLDEsMCw4NywwLDEwMCwwLDEwMCw0LDEyNCwwLAorICAgIDEwNiwwLDk1LDgsODgsMCwxMDAsMCw4MywwLDQxLDUsNzgsOTksMSwwLAorICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCwxMTUsMCwKKyAgICAwLDAsMTE1LDIyLDAsMCwwLDEyNCwwLDkzLDE0LDEyNSwxLDEyNCwxLDEwMCwKKyAgICAwLDEwNyw5LDg2LDAsMSwwLDExMywyLDEwMCwwLDgzLDAsNDEsMSw3OCwKKyAgICAxMTQsMTAsMCwwLDAsNDEsMiw5MCwyLDQ2LDQ4LDkwLDMsOTcsMTE0LDEwMywKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyNTAsCisgICAgOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsNTEsMSwwLDAsMTE1LDIsCisgICAgMCwwLDAsNCwwLDEyMiw0NSw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMDEsCisgICAgMTAwLDk1LDExNSw5NywxMDIsMTAxLDEwOCwxMjEsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LAorICAgIDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTIyLDE4LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEyMywzMywxMTQsCisgICAgMTI1LDMyLDM1LDMyLDEyMywzMywxMTQsMTI1LDcwLDQxLDksMTE0LDk4LDAsMCwwLAorICAgIDIxOCwzLDk3LDExMCwxMjEsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDU0LDAsMCwwLDExNCw2OCwwLDAsMCwxMTQsOTMsCisgICAgMCwwLDAsMTE0LDk5LDAsMCwwLDQxLDMsMTE0LDI2LDAsMCwwLDExNCwKKyAgICA0OSwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDUwLDAsMCwwLDQ4LDEsMCwKKyAgICAwLDExNSwxOCwwLDAsMCwwLDEsMiwxLDYsMSwxOCwxLDIsMSwKKyAgICAxNCwxLDE0LDEsOCwyLDIwLDIsMTIyLDI2LDk1LDEwNSwxMTAsMTE1LDExNiw5NywKKyAgICAxMDgsMTA4LDEwMSwxMDAsOTUsMTE1LDk3LDEwMiwxMDEsMTA4LDEyMSw0Niw5NSw5NSwxMDEsMTIwLAorICAgIDEwNSwxMTYsOTUsOTUsNzgsNDEsNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsCisgICAgMCwxMTQsMiwwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQ4LDAsMCwwLAorICAgIDExNCw1MCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDk2LDAsMCwwLDM1LDEsCisgICAgMCwwLDExNSw2LDAsMCwwLDgsMiw4LDQsOCw3LDExNCw5NiwwLAorICAgIDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw0LAorICAgIDAsMCwwLDY0LDAsMCwwLDExNSwxMTQsMCwwLDAsMTAxLDAsOTAsMSwKKyAgICAxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDIsMTAwLDIsMTAwLDMsCisgICAgMTU2LDMsMTAwLDQsMTAwLDUsMTMyLDIsOTAsNCwxMDAsNiwxMDAsNywxMzIsMCwKKyAgICA5MCw1LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDYsMTAxLDcsMTAwLDEwLDEwMCwxMSwKKyAgICAxMzIsMCwxMzEsMSw5MCw4LDEwMSw4LDEwNiw5LDEwMCwxMiwxMDAsMTEsMTMyLDAsCisgICAgMTMxLDEsOTAsOCwxMDEsNywxMDAsMTMsMTAwLDE0LDEzMiwwLDEzMSwxLDkwLDEwLAorICAgIDEwMSw3LDEwMCwxNSwxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTEsMTAxLDExLDEwNiw5LAorICAgIDEwMCwxNywxMDAsMTYsMTMyLDAsMTMxLDEsOTAsMTEsMTAwLDIsODMsMCw0MSwxOCwKKyAgICAyMTgsMTAsNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDk3LDIwOCw1LDAsCisgICAgMCw4NCwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDIsMTExLDExNCwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiwxMTcsMTE1LDEwMSwxMDAsMzIsMTAyLDExMSwxMTQsMzIsMTA4LDExMSw5NywxMDAsMTA1LDExMCwKKyAgICAxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTExLDExNCwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LDEwOSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsOTcsOTgsMTExLDExNywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMzIsMzIsNzAsMTExLDExNCwxMCwzMiwzMiwzMiwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDk3LDExNSwxMTUsMTExLDk5LDEwNSw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgNDQsMzIsMTA1LDExMCw5OSwxMDgsMTE3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDQ0LDMyLDExNywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LAorICAgIDM5LDExNSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDExMCw5NywxMDksMTAxLDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsOTcsOTgsMTE1LDExMSwxMDgsMTE3LDExNiwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsCisgICAgMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiwKKyAgICA5NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDExNywxMTUsCisgICAgMTAxLDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDgsMTExLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwzMiwzMiw5NiwxMTIsOTcsMTE0LAorICAgIDEwMSwxMTAsMTE2LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsCisgICAgMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LAorICAgIDExNSwzMiwxMDUsMTEwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsMTEwLAorICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTE0LDEwNSwxMTgsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwKKyAgICAxMDksMzIsMTE2LDEwNCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsOTYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTYsMzIsMTAwLDEwMSwKKyAgICAxMTYsMTAxLDExNCwxMDksMTA1LDExMCwxMDEsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLAorICAgIDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTExLAorICAgIDExNCwxMCwzMiwzMiwzMiwzMiwxMTAsMTExLDExNiw0NiwzMiwzMiw3OSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDExNCwKKyAgICAxMDEsMTAyLDEwOCwxMDEsOTksMTE2LDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDk2LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDk2LDMyLDk3LDExNiwxMTYsMTE0LDEwNSwKKyAgICA5OCwxMTcsMTE2LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMTEsMTE0LDEwNSwxMDMsCisgICAgMTA1LDExMCw5NiwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwKKyAgICAxMDIsMTA1LDk5LDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNywxMTUsMTAxLAorICAgIDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwKKyAgICAxMDIsMTE0LDExMSwxMDksMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExNiwxMTEsMTAsMzIsMzIsCisgICAgMzIsMzIsMTA4LDExMSw5NywxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsNDQsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTEwLDEwMiwxMTEsMTE0LAorICAgIDEwOSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA1LDExNSwzMiw5NywxMTgsOTcsMTA1LDEwOCw5NywKKyAgICA5OCwxMDgsMTAxLDQ2LDMyLDMyLDg3LDEwNCwxMDEsMTEwLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDExNSwxMDEsMTE2LDQ0LDMyLAorICAgIDExMSwxMTQsMTA1LDEwMywxMDUsMTEwLDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMDksOTcsMTE2LDk5LAorICAgIDEwNCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksCisgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk2LDMyLDEwNSwxMTAsMTAwLDEwNSw5OSw5NywxMTYsMTAxLDExNSwKKyAgICAzMiwxMTYsMTA0LDk3LDExNiwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMzQsCisgICAgMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsMzQsMzIsMTE0LDEwMSwxMDIsMTA4LDEwMSw5OSwxMTYsMTE1LAorICAgIDMyLDk3LDMyLDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDg3LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDUsMTE1LDMyLDg0LDExNCwKKyAgICAxMTcsMTAxLDQ0LDMyLDk2LDk1LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSw5NSw5NiwzMiw5NywKKyAgICAxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDExNSwxMDEsMTE2LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDk2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk2LDMyLDEwNSwxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSw5Nyw5OSwxMDQsMTAxLDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTA1LDEwMiwzMiw5NywxMTAsMTIxLAorICAgIDQ2LDMyLDMyLDczLDExNiwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTE0LDExNCwxMDEsMTE1LAorICAgIDExMiwxMTEsMTEwLDEwMCwxMTUsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiw5Niw5NSw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSw5NiwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsCisgICAgMTE3LDExNiwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSwKKyAgICAxMTMsMTE3LDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAxLAorICAgIDExMCwxMTYsMTE0LDEwNSwxMDEsMTE1LDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsMTE1LDEwMSwKKyAgICA5NywxMTQsOTksMTA0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDUsMTEwLDEwMywzMiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0NiwzMiwKKyAgICAzMiw3MywxMDIsMzIsMTE1LDEwMSwxMTYsNDQsMzIsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LAorICAgIDk3LDEwMywxMDEsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDEwLDMyLDMyLAorICAgIDMyLDMyLDg0LDExNCwxMTcsMTAxLDQ1LDQ1LDk3LDExMCwxMDAsMzIsNzAsOTcsMTA4LDExNSwKKyAgICAxMDEsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LDExNSwxMDEsNDYsMTAsMTAsMzIsMzIsCisgICAgMzIsMzIsODAsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LAorICAgIDEwNSwxMDksMTEyLDEwOCwxMjEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDExNiwxMDQsCisgICAgOTcsMTE2LDMyLDQwLDEwOSw5NywxMjEsNDEsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExNywKKyAgICA5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDYsMzIsMzIsNzMsMTAyLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDEwLDMyLDMyLDMyLDMyLDEwNCw5NywxMTUsMzIsOTcsMzIsMTEwLAorICAgIDExMSwxMTAsNDUsNzgsMTExLDExMCwxMDEsMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTAsCisgICAgMzIsOTYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCwKKyAgICA5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk2LDQ0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwLDMyLDMyLDMyLDMyLDExNSwxMjEsCisgICAgMTE1LDExNiwxMDEsMTA5LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OSwxMTEsMTEwLDExNSwxMDUsMTAwLAorICAgIDEwMSwxMTQsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLAorICAgIDk3LDExNSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDc5LDExMCwxMDgsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwzMiw0MCwKKyAgICAxMTUsMTAxLDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk3LDk4LAorICAgIDk5LDQ2LDc3LDEwMSwxMTYsOTcsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LAorICAgIDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LAorICAgIDEwNSw5OCw0Niw5Nyw5OCw5OSw0Niw4MCw5NywxMTYsMTA0LDY5LDExMCwxMTYsMTE0LDEyMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwOSwKKyAgICAxMTEsMTAwLDEwNSwxMDIsMTIxLDMyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSwKKyAgICAzMiwxMDUsMTEwLDExNSwxMTYsOTcsMTEwLDk5LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsNzgsNDEsMywyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCwyMTgsMTIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw5NSwxMTUsMTE2LDk3LDExNiwxMDEsMjE4LDEwLDEwNSwxMTUsOTUsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk5LDMsMCwwLDAsMywwLDAsMCw2LAorICAgIDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDU0LDAsMCwwLAorICAgIDEyNCwxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LDAsOTUsMSwxMjQsMywxMjQsMCwKKyAgICA5NSwyLDEyNCw0LDEyNCwwLDk1LDMsMTI0LDUsMTE0LDMyLDEwMywwLDExMCwyLAorICAgIDEwMCwwLDEyNCwwLDk1LDQsMTAwLDEsMTI0LDAsOTUsNSwxMDAsMCwxMjQsMCwKKyAgICA5NSw2LDEwMCwwLDgzLDAsNDEsMiw3OCw3MCw0MSw3LDExNCwxNSwwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCwyNiwxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMjE4LDEzLDk1LDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSw5NywxMTYsMTE2LDExNCwyMTgsNyw5NSw5OSw5NywKKyAgICA5OSwxMDQsMTAxLDEwMCw0MSw2LDExNCwyNiwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDEwNCwwLDAsMCwxMTQsCisgICAgMTA1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwyNywwLDAsMCw5OSwxLDAsMCwxMTUsMTQsMCwwLAorICAgIDAsMCwyLDYsMSw2LDEsNiwxLDYsMSwxNCwzLDYsMSwxMjIsCisgICAgMTksNzcsMTExLDEwMCwxMTcsMTA4LDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDEwNSwxMTAsCisgICAgMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxMDIsMCwwLDAsMTAwLDEsCisgICAgMTA2LDAsMTI0LDAsMTA2LDEsMTMxLDEsMTAwLDIsMTA2LDAsMTI0LDAsMTA2LDIsCisgICAgMTMxLDEsMTAzLDIsMTI1LDEsMTI0LDAsMTA2LDMsMTAwLDAsMTA3LDksMTE0LDUyLAorICAgIDEyNCwxLDEwNiw0LDEwMCwzLDEwNiwwLDEyNCwwLDEwNiwzLDEzMSwxLDEzMSwxLAorICAgIDEsMCwxMjQsMCwxMDYsNSwxMDAsMCwxMDcsOSwxMTQsODAsMTI0LDEsMTA2LDQsCisgICAgMTAwLDQsMTA2LDAsMTI0LDAsMTA2LDUsMTMxLDEsMTMxLDEsMSwwLDEwMCw1LAorICAgIDEwNiwwLDEyNCwwLDEwNiw2LDEwNiw3LDEwMCw2LDEwNiw4LDEyNCwxLDEzMSwxLAorICAgIDEzMSwyLDgzLDAsNDEsNyw3OCwxMjIsOSwxMTAsOTcsMTA5LDEwMSw2MSwxMjMsMzMsCisgICAgMTE0LDEyNSwxMjIsMTEsMTA4LDExMSw5NywxMDAsMTAxLDExNCw2MSwxMjMsMzMsMTE0LDEyNSwxMjIsCisgICAgMTEsMTExLDExNCwxMDUsMTAzLDEwNSwxMTAsNjEsMTIzLDMzLDExNCwxMjUsMTIyLDI5LDExNSwxMTcsCisgICAgOTgsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDEwOCwKKyAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNSw2MSwxMjMsMTI1LDEyMiw2LDEyMywxMjUsNDAsCisgICAgMTIzLDEyNSw0MSwxMjIsMiw0NCwzMiw0MSw5LDExNCwzOCwwLDAsMCwxMTQsMTUsCisgICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMjE4LDYsOTcsCisgICAgMTEyLDExMiwxMDEsMTEwLDEwMCwxMTQsMTA2LDAsMCwwLDIxOCw5LDk1LDk1LDk5LDEwOCwKKyAgICA5NywxMTUsMTE1LDk1LDk1LDExNCwxLDAsMCwwLDIxOCw0LDEwNiwxMTEsMTA1LDExMCwKKyAgICA0MSwyLDExNCwyNiwwLDAsMCwxMTQsNDksMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDQwLDAsMCwwLAorICAgIDExMSwxLDAsMCwxMTUsMTYsMCwwLDAsMCwxLDEwLDEsMTQsMSwxMCwKKyAgICAxLDE4LDEsMTAsMSw4LDEsMTAsMSwxMjIsMTksNzcsMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw4MywxMTIsMTAxLDk5LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw5OSwyLAorICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxMSwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTAyLDAsMCwwLDEyNCwwLDEwNiwwLDEyNSwyLDEyMSw3MCwKKyAgICAxMjQsMCwxMDYsMSwxMjQsMSwxMDYsMSwxMDcsMiwxMTEsNzYsMTI0LDAsMTA2LDIsCisgICAgMTI0LDEsMTA2LDIsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiwzLDEyNCwxLDEwNiwzLAorICAgIDEwNywyLDExMSw3NiwxMjQsMiwxMjQsMSwxMDYsMCwxMDcsMiwxMTEsNzYsMTI0LDAsCisgICAgMTA2LDQsMTI0LDEsMTA2LDQsMTA3LDIsMTExLDc2LDEyNCwwLDEwNiw1LDEyNCwxLAorICAgIDEwNiw1LDEwNywyLDgzLDAsNCwwLDExNiw2LDEwNywxMCwxMTQsOTYsMSwwLAorICAgIDEsMCwxLDAsMTAwLDEsODMsMCw4OCwwLDEwMCwwLDgzLDAsNDEsMiwKKyAgICA3OCw3MCw0MSw3LDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw5MywKKyAgICAwLDAsMCwxMTQsMTAzLDAsMCwwLDIxOCw2LDk5LDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDIxOCwxMiwxMDQsOTcsMTE1LDk1LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCw5MCwKKyAgICAwLDAsMCw0MSwzLDExNCwyNiwwLDAsMCw5MCw1LDExMSwxMTYsMTA0LDEwMSwKKyAgICAxMTQsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwxMjEsMSwKKyAgICAwLDAsMTE1LDIwLDAsMCwwLDAsMSw2LDEsMiwxLDEyLDEsMTIsCisgICAgMSwxMiwxLDEwLDEsMTIsMSwxMiwxLDE0LDEsMTIyLDE3LDc3LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0Niw5NSw5NSwxMDEsMTEzLDk1LDk1LDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDU4LDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwwLDEwNyw4LAorICAgIDExNCw1MiwxMjQsMCwxMDYsMSwxMDAsMCwxMDcsOSwxMTQsNTIsMTI0LDAsMTA2LDIsCisgICAgMTE0LDUyLDExNiwzLDEwMCwwLDEwNyw4LDExNCwzOCwxMTYsNCwxMzAsMSwxMTYsMywKKyAgICAxMDYsNSwxMjQsMCwxMDYsMSwxMzEsMSwxMjQsMCw5NSwwLDEyNCwwLDEwNiwwLAorICAgIDgzLDAsNDEsMSw3OCw0MSw2LDExNCwxMDgsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsMTA3LDAsMCwwLDIxOCwxOSw5NSw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCwKKyAgICA5NywxMTIsOTUsMTAxLDEyMCwxMTYsMTAxLDExNCwxMTAsOTcsMTA4LDIxOCwxOSw3OCwxMTEsMTE2LAorICAgIDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsCisgICAgOTAsMTEsOTUsMTAzLDEwMSwxMTYsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsNDEsMSwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDExMiwwLDAsMCwxMzMsMSwwLDAsMTE1LDEyLDAsMCwKKyAgICAwLDAsMiwxMCwxLDE2LDEsOCwxLDQsMSwxNCwxLDEyMiwxNyw3NywKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsOTksOTcsOTksMTA0LDEwMSwxMDAsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsMTAsMCwwLDAsMTI0LDEsMTI0LDAsOTUsMCwKKyAgICAxMDAsMCw4MywwLDQxLDEsNzgsNDEsMSwxMTQsMTA4LDAsMCwwLDQxLDIsCisgICAgMTE0LDI2LDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExMiwwLDAsMCwxNDIsMSwKKyAgICAwLDAsMTE1LDIsMCwwLDAsMCwyLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDEyNCwwLDEwNiwwLDEwMCwxLDEwNyw4LDExNCwyOCwxMjQsMCwxMDYsCisgICAgMSwxMDYsMiwxMDAsMiwxMzEsMSwxMDAsMywyNSwwLDgzLDAsMTEwLDYsMTI0LAorICAgIDAsMTA2LDEsODMsMCwxMDAsMSw4MywwLDQxLDQsMTIyLDMyLDg0LDEwNCwxMDEsCiAgICAgMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwKICAgICAxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0Niw3OCwyMTgsMSwKLSAgICA0NiwxMTQsMzMsMCwwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxNSwwLAorICAgIDQ2LDExNCwxOSwwLDAsMCw0MSwzLDExNCwxMDYsMCwwLDAsMTE0LDE1LDAsCiAgICAgMCwwLDIxOCwxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCw0MSwxLAotICAgIDExNCwxOSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE2MywxLDAsMCwKLSAgICAxMTUsNiwwLDAsMCwwLDMsMTUsMSwyMCwyLDEyMiwxNyw3NywxMTEsMTAwLAorICAgIDExNCwyNiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDE0NiwxLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDMsMTAsMSwxOCwyLDEyMiwxNyw3NywxMTEsMTAwLAogICAgIDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5OSwxLAogICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw3LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwKLSAgICAxLDc4LDQxLDEsMTE0LDExMSwwLDAsMCw0MSwxLDExNCwxOSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMTE3LDAsMCwwLDE3MSwxLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLAotICAgIDIzLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw0NiwxMDQsOTcsMTE1LDk1LAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE5LDAsCi0gICAgMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LAotICAgIDExNCwxMTEsMCwwLDAsNDEsMiwxMTQsMTksMCwwLDAsMjE4LDUsMTE4LDk3LAotICAgIDEwOCwxMTcsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsCi0gICAgMCwwLDExNCwxMTcsMCwwLDAsMTc1LDEsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSwxMiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwKLSAgICAwLDAsMCwxMTQsMywwLDAsMCwxMTQsMjAsMCwwLDAsMTE0LDUyLDAsCi0gICAgMCwwLDExNCwxMTgsMCwwLDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LAotICAgIDEyMSwxMTQsMTE2LDAsMCwwLDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMjMsCi0gICAgMCwwLDAsMTE0LDExNywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDEwNiwwLDAsCi0gICAgMCw3OSwxLDAsMCwxMTUsMjAsMCwwLDAsMTIsMzUsNiwyLDE1LDEsCi0gICAgMTUsMTEsMTIsMTAsMTIsMTIsMTgsOSwyMSw0LDE4LDgsMTgsNCwxMTQsMTA2LAotICAgIDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LDEwOSwwLDAsMCw5OSwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNiwwLDAsMCwxNSwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsMjE3LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMDAsMSwwLAotICAgIDEzMSwyLDAsMTE0LDExMCwwLDExNiwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCwKLSAgICAzMywwLDExNiwyLDAsMTMwLDEsMCwxMTYsMSwwLDEwNiwzLDAsMTI1LDQsCi0gICAgMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsNzAsMCwxMjQsNCwwLAotICAgIDEyNCwwLDAsMTAwLDMsMCwxMjQsMSwwLDEzMSwxLDEsODMsMTI0LDMsMCwKLSAgICAxMTQsODIsMCwxMDMsMCwwLDExMCwzLDAsMTAwLDIsMCwxMjUsNSwwLDEyNCwKLSAgICA0LDAsMTI0LDAsMCwxMDAsMywwLDEyNCwxLDAsMTAwLDQsMCwxMjQsNSwKLSAgICAwLDEzMSwxLDIsODMsMTI0LDMsMCwxMDAsMiwwLDEwNyw4LDAsMTE0LDE5MiwKLSAgICAwLDExNiwwLDAsMTI0LDEsMCwxMDAsNSwwLDEzMSwyLDAsMTE0LDE4NiwwLAotICAgIDEyMSwxOSwwLDEyNCwxLDAsMTA2LDQsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LAotICAgIDMsMCw4NywxMTMsMTkyLDAsNCwxMTYsNSwwLDEwNywxMCwwLDExNCwxODIsMCwKLSAgICAxLDEsMSwxMDAsMiwwLDEyNSwzLDAsODksMTEzLDE5MiwwLDg4LDExMCw2LAotICAgIDAsMTAwLDYsMCwxMjUsMywwLDExNiw2LDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEwMCw3LDAsMTI0LDIsMCwxMDAsNSwwLDEyNCwzLDAsMTMxLDIsMiw4MywKLSAgICA0MSw4LDEyMiw1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LDk3LDExNSwxMDEsMTAwLDMyLDExMSwKLSAgICAxMTAsMzIsMTE4LDk3LDExNCwxMDUsMTExLDExNywxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsNDYsOTAsMTIsMTAzLDEwMSwxMTYsOTUsMTAyLAotICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDExNCw5OSwwLDAsMCwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwxMDksMCwwLDAsNzAsMTE0LDEwNywwLDAsMCw0MSw3LDExNCwKLSAgICA0LDAsMCwwLDExNCwxMTksMCwwLDAsMTE0LDEyMCwwLDAsMCwyMTgsMjMsCi0gICAgMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSw5NSwxMDgsCi0gICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTA5LDAsMCwwLDExNCw3NywwLDAsCi0gICAgMCwxMTQsMTA2LDAsMCwwLDQxLDYsMTE0LDE1LDAsMCwwLDExNCw5OSwwLAotICAgIDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDEyOCwwLDAsCi0gICAgMCw5MCw2LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODUsMCwwLDAsMTgwLDEsMCwKLSAgICAwLDExNSwzNCwwLDAsMCwwLDIsMTUsMSwxMiwxLDYsMSw5LDIsCi0gICAgMTIsMSwxNiwxLDE4LDEsMTUsMSw3LDIsMTIsMSwxNSwxLDMsMSwKLSAgICAxOSwxLDEzLDEsMTQsMyw2LDIsMTE0LDg1LDAsMCwwLDk5LDMsMCwKLSAgICAwLDAsMCwwLDAsMCw4LDAsMCwwLDUzLDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSwxMTgsMSwwLDAsMTIxLDEzLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwzLDAsODcsMTEwLDE4LDAsNCwxMTYsMSwwLDEwNywxMCwwLDExNCwzMywKLSAgICAwLDEsMSwxLDg5LDExMCwxNywwLDg4LDEyNCwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOSwwLDExNCw1MCwwLDEyNCwzLDAsODMsMTI0LDAsMCwxMDYsMiwwLDEyNSwKLSAgICA0LDAsMTI0LDEsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwNSwwLDEyMSwxMywKLSAgICAwLDEyNCwwLDAsMTA2LDMsMCwxMjUsMSwwLDg3LDExMCwxOCwwLDQsMTE2LAotICAgIDEsMCwxMDcsMTAsMCwxMTQsMTA0LDAsMSwxLDEsODksMTEwLDEsMCw4OCwKLSAgICAxMjEsMTMsMCwxMjQsMCwwLDEwNiw0LDAsMTI1LDUsMCw4NywxMTAsMjQsMCwKLSAgICA0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDE0NCwwLDEsMSwxLDEwMCwwLDAsCi0gICAgMTI1LDUsMCw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTAwLDAsMCwxMDcsOCwKLSAgICAwLDExNCwyMTgsMCwxMjQsNSwwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMjEyLDAsCi0gICAgMTIxLDEzLDAsMTI0LDEsMCwxMDYsNSwwLDEyNSwyLDAsODcsMTEzLDIxOCwwLAotICAgIDQsMTE2LDEsMCwxMDcsMTAsMCwxMTQsMjA4LDAsMSwxLDEsMTAwLDAsMCwKLSAgICAxMjUsMiwwLDg5LDExMywyMTgsMCw4OCwxMTAsNiwwLDEyNCw1LDAsMTI1LDIsCi0gICAgMCwxMjEsMTMsMCwxMjQsMCwwLDEwNiw2LDAsMTI1LDYsMCw4NywxMTAsMjQsCi0gICAgMCw0LDExNiwxLDAsMTA3LDEwLDAsMTE0LDEsMSwxLDEsMSwxMDAsMCwKLSAgICAwLDEyNSw2LDAsODksMTEwLDEsMCw4OCwxMjEsMTksMCwxMTYsNywwLDEyNCwKLSAgICAwLDAsMTA2LDgsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMSwwLDEwNywxMCwwLDExNCw0NywxLDEsMSwxLDEwMCwwLDAsMTI1LAotICAgIDcsMCw4OSwxMTAsMSwwLDg4LDExNiw5LDAsMTI0LDQsMCwxMjQsMSwwLAotICAgIDEwMCwxLDAsMTI0LDIsMCwxMzEsMiwxLDEyNSwzLDAsMTI0LDUsMCwxMDAsCi0gICAgMCwwLDEwNyw4LDAsMTE0LDg3LDEsMTAwLDIsMCwxMTAsMywwLDEwMCwzLAotICAgIDAsMTI0LDMsMCw5NSwxMCwwLDEyNCw2LDAsMTI0LDMsMCw5NSwxMSwwLAotICAgIDEyNCw3LDAsMTI0LDMsMCw5NSwxMiwwLDEyNCwzLDAsODMsNDEsNCw3OCwKLSAgICAxMTQsMTA3LDAsMCwwLDcwLDg0LDQxLDEzLDExNCw5NSwwLDAsMCwxMTQsOTYsCi0gICAgMCwwLDAsMTE0LDEsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5OCwwLAotICAgIDAsMCw5MCw3LDk1LDc5LDgyLDczLDcxLDczLDc4LDIxOCwxMCw5NSw5NSw5OSwKLSAgICA5Nyw5OSwxMDQsMTAxLDEwMCw5NSw5NSwyMTgsNCwxMDgsMTA1LDExNSwxMTYsMjE4LDgsOTUsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMTE0LDEwNiwwLDAsMCwxMTQsMTExLDAsMCwKLSAgICAwLDExNCwxMTYsMCwwLDAsMTE0LDExMCwwLDAsMCw0MSw4LDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsODgsMCwwLAotICAgIDAsMTE0LDE1LDAsMCwwLDkwLDgsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCi0gICAgMTE0LDExNiwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxNyw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjA5LDEsMCwwLAotICAgIDExNSw3MiwwLDAsMCwwLDIsMywxLDEzLDEsMTMsMSw1LDIsMTIsCi0gICAgMSw0LDIsOSwxLDEyLDEsMywxLDEzLDEsMTMsMiw1LDEsMywKLSAgICAxLDEzLDEsMTMsMSwxMSwxLDEyLDEsMTIsMSwzLDEsMTMsMSwxMywKLSAgICAxLDE0LDIsNiwxLDMsMSwxMywxLDEzLDEsMTEsMSwzLDEsMTksCi0gICAgMSwxMywxLDExLDIsMjEsMSwyNywxLDksMSw5LDEsMTE0LDEzMiwwLAotICAgIDAsMCwyMTgsOCwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLDcwLDk5LDIsMCwKLSAgICAwLDAsMSwwLDAsMCw1LDAsMCwwLDU5LDAsMCwwLDY3LDAsCi0gICAgMCwwLDExNSw1NCwyLDAsMCwxMjQsMiwwLDExNSwzMCwwLDExNiwwLDAsCi0gICAgMTI0LDEsMCwxMDAsMSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNywKLSAgICA4LDAsMTE0LDY3LDAsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwxLAotICAgIDAsOTUsMiwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsCi0gICAgNjYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDk3LDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwKLSAgICAwLDAsMTA3LDgsMCwxMTQsMjIxLDAsMTI0LDAsMCwxMDYsNCwwLDEyNSwzLAotICAgIDAsMTI0LDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDE4NywwLDEyNCwwLDAsCi0gICAgMTA2LDUsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE4NywwLDExNiw2LDAsMTAwLAotICAgIDAsMCwxMDcsOCwwLDExNCwxNTEsMCwxMTYsNywwLDEzMCwxLDAsMTE2LDYsCi0gICAgMCwxMDYsOCwwLDEyNSw0LDAsMTI0LDQsMCwxMDYsOSwwLDEyNCw0LDAsCi0gICAgMTMxLDEsMCwxMjUsMywwLDEyNCwwLDAsMTA2LDUsMCwxMjQsMywwLDk1LAotICAgIDEwLDAsMTIxLDEzLDAsMTI0LDMsMCwxMjQsMSwwLDk1LDExLDAsODcsMTEwLAotICAgIDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwyMjAsMCwxLDEsMSw4OSwKLSAgICAxMTAsMSwwLDg4LDEyNCwyLDAsMTE1LDI1MSwwLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsMywwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDMyLDEsMTIxLDE2LDAsMTI0LDAsMCwxMDYsMTIsMCwxMjQsMSwwLDk1LDEzLAotICAgIDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCwzMSwxLDEsCi0gICAgMSwxLDg5LDExMCwxLDAsODgsMTIxLDEzLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDk1LDE0LDAsODcsMTEwLDE4LDAsNCwxMTYsMywwLDEwNywxMCwwLDExNCw2NSwKLSAgICAxLDEsMSwxLDg5LDExMCwxLDAsODgsMTI0LDIsMCwxMTUsOTYsMSwxMTYsCi0gICAgMCwwLDEyNCwxLDAsMTAwLDQsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwxNDgsMSwxMjQsMCwwLDEwNiw1LDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCwxNDgsMSwxMjEsMTYsMCwxMjQsMCwwLDEwNiw1LDAsMTI0LAotICAgIDEsMCw5NSwxNSwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTQ3LDEsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMCwwLDEwNiwxNiwKLSAgICAwLDExNCw1MCwyLDEyNCwyLDAsMTE1LDE4NywxLDExNiwwLDAsMTI0LDEsMCwKLSAgICAxMDAsNSwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LAotICAgIDIyNCwxLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE3LDAsMTI0LDEsMCw5NSwxOCwKLSAgICAwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsMjIzLDEsMSwKLSAgICAxLDEsODksMTEwLDEsMCw4OCwxMjQsMiwwLDExNSwyNTQsMSwxMTYsMCwwLAotICAgIDEyNCwxLDAsMTAwLDYsMCwxMDAsMCwwLDEzMSwzLDAsMTAwLDAsMCwxMDcsCi0gICAgOCwwLDExNCw1MCwyLDEyNCwwLDAsMTA2LDE5LDAsMTAwLDAsMCwxMDcsOSwKLSAgICAwLDExNCw1MCwyLDEyMSwxNiwwLDEyNCwwLDAsMTA2LDE5LDAsMTI0LDEsMCwKLSAgICA5NSwyMCwwLDg3LDExMCwxOCwwLDQsMTE2LDMsMCwxMDcsMTAsMCwxMTQsNDksCi0gICAgMiwxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCwxLDAsODMsNDEsNyw3OCwKLSAgICAxMTQsMSwwLDAsMCwxMTQsOTEsMCwwLDAsMjE4LDExLDk1LDk1LDExMiw5NywKLSAgICA5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTMxLDAsMCwwLDExNCw5OCwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwwLAotICAgIDAsMCwxMTQsMSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk5LDAsMCwKLSAgICAwLDExNCwxMTAsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIwLDAsMCwwLAotICAgIDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiw5NywKLSAgICAxMTYsMTA0LDExNCw5MSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxMzQsMCwwLAotICAgIDAsMTE0LDk1LDAsMCwwLDExNCwxMzEsMCwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTA3LDAsMCwwLDExNCw5OCwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwKLSAgICAxMjksMCwwLDAsNDEsNSwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLAotICAgIDExNCwxMzMsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LAotICAgIDk1LDEwNSwxMTAsMTA1LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSw5NywxMTYsMTE2LAotICAgIDExNCwxMTUsMjU0LDEsMCwwLDExNSw5MiwwLDAsMCwwLDQsMzAsMSwzLAotICAgIDEsMTYsMSwxMywxLDUsMiwzMCwxLDksMSwxMiwyLDE1LDEsMTIsCi0gICAgMSw2LDEsOSwyLDE1LDEsMTIsMSwzLDEsMTMsMSwxMywxLDUsCi0gICAgMiwzMCwxLDMsMSwxNiwxLDEzLDEsNSwyLDMsMSwxMywxLDEzLAotICAgIDEsNSwyLDMwLDEsMTUsMSwzLDEsMTYsMSwxMywxLDUsMiw5LAotICAgIDEsMzAsMSwzLDEsMTYsMSwxMywxLDUsMiwzMCwxLDE1LDEsMywKLSAgICAxLDE2LDEsMTMsMSw1LDEsMTE0LDEzNywwLDAsMCw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCw1LDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwxMjksMCwwLDAsMTAwLDEsMCwxMjUsMSwwLDExNiwwLDAsMTI0LAotICAgIDAsMCwxMDYsMSwwLDEwMCwyLDAsMTMxLDIsMCwxMTQsNDUsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTA2LDIsMCwxMjQsMCwwLDEzMSwxLDAsMTI1LDEsMCwKLSAgICAxMTAsNDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMDAsMywwLDEzMSwKLSAgICAyLDAsMTE0LDg1LDAsMTE2LDMsMCwxMDYsNCwwLDEwMCw0LDAsMTE2LDUsCi0gICAgMCwxMDAsNSwwLDEwMCw2LDAsMTMxLDIsMSwxLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwxMTIsMCwxMTYsNiwwLDEyNCwwLDAsMTA2LDcsMCwKLSAgICAxMzEsMSwwLDEyNSwxLDAsMTE2LDgsMCwxMjQsMCwwLDEyNCwxLDAsMTMxLAotICAgIDIsMCwxLDEyNCwxLDAsODMsNDEsNywxMjIsNDMsNjcsMTE0LDEwMSw5NywxMTYsCi0gICAgMTAxLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDk3LDExNSwxMDEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMTEsMTE4LDEwNSwxMDAsMTAxLDEwMCwKLSAgICAzMiwxMTUsMTEyLDEwMSw5OSw0Niw3OCwyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMjIsODcsMTE1LDExNiw5NywxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDEwNSwxMTAsCi0gICAgMzIsODAsMTIxLDExNiwxMDQsMTExLDExMCwzMiw1MSw0Niw1NCw0NCwzMiwxMDgsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDExNSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwNSwxMTAsMTAzLDMyLDEwMSwxMjAsCi0gICAgMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwKLSAgICAzMiw5NywxMDgsMTE1LDExMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiw5OSwxMTQsMTAxLAotICAgIDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsOTAsMTAsMTE1LDExNiwKLSAgICA5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwyMzMsMiwwLDAsMCw0MSw5LDExNCwKLSAgICA0LDAsMCwwLDExNCw5OSwwLDAsMCwxMTQsMTM4LDAsMCwwLDIxOCw5LAotICAgIDk1LDExOSw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDExNSwyMTgsNCwxMTksOTcsMTE0LDExMCwyMTgsCi0gICAgMTgsNjgsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDUsMTExLDExMCw4Nyw5NywxMTQsMTEwLAotICAgIDEwNSwxMTAsMTAzLDExNCwxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzNywwLAotICAgIDAsMCw0MSwyLDExNCw4OCwwLDAsMCwxMTQsODksMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw1OCwKLSAgICAyLDAsMCwxMTUsMjAsMCwwLDAsMCwzLDYsMSwxOCwzLDIxLDEsCi0gICAgMTgsMSw5LDIsMTMsMSwxMiwxLDE1LDEsMTMsMSwxMTQsMTQ0LDAsMCwKLSAgICAwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDE0OSwwLDAsMCwxMjQsMCwwLDEwNiwwLAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDEwMCwyLDAsMTEwLDYsMCwKLSAgICAxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjQsMCwwLDEwNiwxLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCw5NSwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMSwKLSAgICAwLDEwNyw4LDAsMTE0LDczLDAsMTAwLDMsMCwxMDYsMywwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCw4MywxMDAsNCwwLDEwNiwzLDAsMTI0LDEsMCwxMjQsMCwwLAotICAgIDEwNiwyLDAsMTMxLDIsMCw4MywxMTAsNTAsMCwxMjQsMCwwLDEwNiw0LDAsCi0gICAgMTE0LDEyMywwLDEwMCw1LDAsMTA2LDMsMCwxMjQsMSwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMiwwLDgzLDEwMCw2LDAsMTA2LDMsMCwxMjQsMCwwLDEwNiwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsODMsMTAwLDEsMCw4MywKLSAgICA0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNCwKLSAgICAxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDExNiwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw5MywwLDAsMCwKLSAgICAxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLAotICAgIDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywKLSAgICAzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNjIsMTIyLDE4LAotICAgIDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDEyMywxMjUsCi0gICAgNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsOTksCi0gICAgMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMTcsMCwwLDAsNDEsMiwxMTQsCi0gICAgODgsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5NywwLDAsMCw3NiwyLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMCwzLDMwLDEsMTUsMSwxNSwxLDEzLDIsCi0gICAgMjIsMiw5LDEsMTksMiwxMTQsOTcsMCwwLDAsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDI1MywwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDIsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTMxLDAsMCwxLDExNiwzLDAsMTI0LDIsMCwxMzEsMSwKLSAgICAwLDE0MywyMDgsMCwxLDExNiw0LDAsMTA2LDUsMCwxMDYsNiwwLDEyNCwyLAotICAgIDAsMTMxLDEsMCwxMjQsMSwwLDEwNyw5LDAsMTE0LDg5LDAsMTAwLDEsMCwKLSAgICAxMDYsNywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsMywwLDExNiw4LDAsMTI0LAotICAgIDMsMCwxMDAsMiwwLDEyNCwyLDAsMTMxLDEsMSwxMzAsMSwwLDEyNCwwLAotICAgIDAsMTA2LDksMCwxMDAsMywwLDEwNyw4LDAsMTE0LDE2MywwLDEyNCwwLDAsCi0gICAgMTA2LDEwLDAsMTAwLDMsMCwxMDcsOCwwLDExNCwxNDAsMCwxMTYsOCwwLDEwMCwKLSAgICA0LDAsMTAwLDIsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDEsMSwxMzAsMSwKLSAgICAwLDExNiwxMSwwLDEyNCwwLDAsMTI0LDEsMCwxMDAsNSwwLDEwMCw2LDAsCi0gICAgMTMxLDIsMSwxLDEyNCwxLDAsODMsMTE2LDExLDAsMTI0LDAsMCwxMjQsMSwKLSAgICAwLDEwMCw1LDAsMTAwLDYsMCwxMzEsMiwxLDEsMTE2LDEyLDAsMTI0LDAsCi0gICAgMCwxMDYsOSwwLDEwMCw3LDAsMTMxLDIsMCwxMTUsMjE5LDAsMTI0LDAsMCwKLSAgICAxMDYsOSwwLDEwNiwxMywwLDEyNCwyLDAsMTMxLDEsMCwxLDExMCwxNiwwLAotICAgIDEyNCwwLDAsMTA2LDksMCwxMDYsMTQsMCwxMjQsMSwwLDEzMSwxLDAsMSwKLSAgICA4NywxMDAsMywwLDgxLDgyLDg4LDExNiw0LDAsMTA2LDUsMCwxMjQsMiwwLAotICAgIDI1LDgzLDQxLDgsMTIyLDUxLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMDUsCi0gICAgMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwxMTUsMzIsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDExNCwxNSwwLDAsMCw3OCwxMjIsCi0gICAgMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LAotICAgIDEzMywwLDAsMCw4NCwxMTQsMTM5LDAsMCwwLDQxLDE1LDExNCwxNSwwLDAsCi0gICAgMCwxMTQsNTcsMCwwLDAsMjE4LDEyLDk3LDk5LDExMywxMTcsMTA1LDExNCwxMDEsOTUsCi0gICAgMTA4LDExMSw5OSwxMDcsMTE0LDU0LDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMjEsCi0gICAgMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw1MCwwLDAsMCwxMTQsNzcsMCwKLSAgICAwLDAsMTE0LDk5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDEzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMTE0LDEzOSwwLDAsMCw0MSw0LDExNCw4OCwwLDAsMCwxMTQsCi0gICAgODksMCwwLDAsMTE0LDE1LDAsMCwwLDIxOCwzLDEwOSwxMTUsMTAzLDExNCwxMCwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw4NiwwLAotICAgIDAsMCw5MywyLDAsMCwxMTUsMzIsMCwwLDAsMCwyLDksMSwxMCwKLSAgICAxLDEzLDEsMjQsMSwxNSwxLDE4LDEsMTUsMSwxNSwxLDIxLDIsMTksCi0gICAgMSw0LDEsMTksMSwxOCw0LDE5LDIsMjMsMSwxMTQsODYsMCwwLDAsCi0gICAgOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMjcsMCwwLAotICAgIDAsNjcsMCwwLDAsMTE1LDMsMSwwLDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsMSwxMTYsMywwLAotICAgIDEwNiw0LDAsMTI0LDAsMCwxMDYsMiwwLDI1LDEyNSwxLDAsMTE2LDUsMCwKLSAgICAxMjQsMSwwLDEwMCwxLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LAotICAgIDgsMCwxMTQsOTYsMCwxMjEsMTYsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsCi0gICAgMCw5NSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLDEwNywxMCwwLDExNCwKLSAgICA5NSwwLDEsMSwxLDg5LDExMCwxLDAsODgsMTE2LDUsMCwxMjQsMSwwLAotICAgIDEwMCwyLDAsMTAwLDAsMCwxMzEsMywwLDEwMCwwLDAsMTA3LDgsMCwxMTQsCi0gICAgMTk3LDAsMTIxLDU2LDAsMTI0LDEsMCwxMDYsOCwwLDEyNCwxLDAsOTUsOSwKLSAgICAwLDExNiwxMCwwLDEyNCwxLDAsMTAwLDMsMCwxMzEsMiwwLDExNSwxNzUsMCwKLSAgICAxMjQsMCwwLDEwNiwyLDAsMTA2LDExLDAsMTAwLDQsMCwxMzEsMSwwLDEwMCwKLSAgICA1LDAsMjUsMTI0LDEsMCw5NSw5LDAsODcsMTEwLDE4LDAsNCwxMTYsNywKLSAgICAwLDEwNywxMCwwLDExNCwxOTYsMCwxLDEsMSw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA1LDAsMTI0LDEsMCwxMDAsNiwwLDEwMCwwLDAsMTMxLDMsMCwxMDAsMCwKLSAgICAwLDEwNyw4LDAsMTE0LDI1NSwwLDEyMSwxMywwLDEyNCwwLDAsMTI0LDEsMCwKLSAgICA5NSwxMiwwLDg3LDExMCwxOCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMjU0LAotICAgIDAsMSwxLDEsODksMTEwLDEsMCw4OCwxMjQsMSwwLDgzLDQxLDcsNzgsCi0gICAgMTE0LDkxLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzMSwwLDAsMCwxMTQsCi0gICAgMTIxLDAsMCwwLDExNCwzMywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsMTMsCi0gICAgMTE0LDk5LDAsMCwwLDExNCwxNDYsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwKLSAgICAxNCwwLDAsMCwxMTQsMjEsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDkxLAotICAgIDAsMCwwLDExNCw5NiwwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTM0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCwxMjIsMCwwLDAsMTE0LDk1LDAsMCwKLSAgICAwLDQxLDIsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMjUsOTUsMTA4LAotICAgIDExMSw5NywxMDAsOTUsOTgsOTcsOTksMTA3LDExOSw5NywxMTQsMTAwLDk1LDk5LDExMSwxMDksCi0gICAgMTEyLDk3LDExNiwxMDUsOTgsMTA4LDEwMSwxMTgsMiwwLDAsMTE1LDQwLDAsMCwwLAotICAgIDAsNCwxOSwyLDE2LDEsMjQsMSwzLDEsMTYsMSwxMywxLDUsMSwKLSAgICAyNCwxLDMsNCwxMiwxLDE1LDEsMjksMSwxMywxLDUsMSwyNCwxLAotICAgIDMsMSwxMywxLDEzLDEsNSwxLDExNCwxNDgsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDE1OSwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDAsMCwKLSAgICAxMDcsOSwwLDExNCw0MywwLDExNiwxLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwKLSAgICAxLDAsMTMxLDIsMCwxMTUsNDMsMCwxMTYsMiwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCw4MywxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwxMjUsMSwwLDExNiw0LAotICAgIDAsMTI0LDEsMCwxMzEsMSwwLDE0Myw3NSwwLDEsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEwMCwwLDAsMTA3LDgsMCwxMTQsMTIyLDAsMTI0LDAsMCwxMDYsNSwwLAotICAgIDEwMCwwLDAsMTA3LDgsMCwxMTQsMTM4LDAsMTE2LDYsMCwxMDAsMiwwLDEwMCwKLSAgICAzLDAsMTI0LDAsMCwxMDYsNywwLDEzMSwxLDEsMTMwLDEsMCwxMTAsMTYsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDgsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgMSw4NywxMDAsMCwwLDgxLDgyLDg4LDExNiw5LDAsMTA2LDEwLDAsMTI0LDAsCi0gICAgMCwxMDYsNywwLDI1LDgzLDQxLDQsNzgsMTE0LDEzOSwwLDAsMCwxMjIsMTQsCi0gICAgMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE0LDE1LAotICAgIDAsMCwwLDQxLDExLDExNCw5OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgMTQ4LDAsMCwwLDExNCwxNDQsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTEwLAotICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzOSwwLAotICAgIDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLDAsMCwwLDQxLDIsMTE0LDg4LAotICAgIDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCi0gICAgMCwwLDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTA4LDExMSw5NywxMDAsOTUsMTE3LAotICAgIDExMCwxMDgsMTExLDk5LDEwNywxMDEsMTAwLDE0NywyLDAsMCwxMTUsMjAsMCwwLDAsCi0gICAgMCwyLDE1LDIsMTgsMSwxMCwyLDEyLDEsMTMsMSwxNSwxLDE1LDEsCi0gICAgMjQsMywyMyw1LDExNCwxNDksMCwwLDAsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDEsMCwwLDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsNDcsCi0gICAgMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwwLDAsMSwxMTYsMiwwLAotICAgIDEyNCwwLDAsMTA2LDMsMCwxMzEsMSwwLDE0MywxNSwwLDEsMTE2LDQsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE5MSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDk3LDMyLDExMCwKLSAgICAxMDEsMTE5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICA0NCwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTUsMTEyLDEwMSw5OSwzOSwxMTUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMCwxMCwKLSAgICAzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTAwLDEwMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTA1LAotICAgIDExNiwxMTUsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywKLSAgICAxMDgsMTE0LDEwMSw5NywxMDAsMTIxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsOTcsMTE2LDMyLDEwMSwxMjAsMTA1LDExNSwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTAzLDEwMSwxMTYsMTE1LAotICAgIDEwLDMyLDMyLDMyLDMyLDk5LDEwOCwxMTEsOTgsOTgsMTAxLDExNCwxMDEsMTAwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDc4LDQxLDUsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwKLSAgICAwLDAsMTE0LDU0LDAsMCwwLDExNCwxNSwwLDAsMCwxMTQsMTQ5LDAsMCwKLSAgICAwLDQxLDEsMTE0LDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKLSAgICAwLDAsMTE0LDExLDAsMCwwLDExNCw4NywwLDAsMCwxNzAsMiwwLDAsCi0gICAgMTE1LDYsMCwwLDAsMCw5LDEwLDEsMTYsMSwxMTQsODcsMCwwLDAsCi0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNSwwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjA1LDAsMCwwLDEwMSwwLDAsOTAsMSwwLAotICAgIDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMSw0LDAsMTAwLAotICAgIDIsMCwxMDAsMywwLDEzMiwwLDAsMTMxLDEsMCw5MCw1LDAsMTAxLDYsCi0gICAgMCwxMDAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMDAsNiwwLDEzMiwyLDAsCi0gICAgMTMxLDEsMCw5MCw3LDAsMTAxLDYsMCwxMDAsNCwwLDEwMCw3LDAsMTAwLAotICAgIDgsMCwxMzIsMSwwLDEzMSwxLDAsOTAsOCwwLDEwMSw2LDAsMTAwLDksCi0gICAgMCwxMDAsMTAsMCwxMzIsMCwwLDEzMSwxLDAsOTAsOSwwLDEwMSw2LDAsCi0gICAgMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLAotICAgIDYsMCwxMDEsMTEsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMCwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCw5MCwxMiwwLDEwMSw2LDAsMTAxLDExLDAsMTAwLDE1LDAsCi0gICAgMTAwLDE2LDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTMsMCwxMDEsCi0gICAgNiwwLDEwMSwxMSwwLDEwMCwxNywwLDEwMCwxOCwwLDEzMiwwLDAsMTMxLDEsCi0gICAgMCwxMzEsMSwwLDkwLDE0LDAsMTAxLDYsMCwxMDEsMTUsMCwxMzEsMSwwLAotICAgIDkwLDE2LDAsMTAwLDQsMCw4Myw0MSwxOSwyMTgsMTUsNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDEyMiwxNDQsNzcsMTAxLDExNiw5NywKLSAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICAxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjUsMTA4LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsCi0gICAgMTExLDEwMCwxMTUsMzIsOTcsMTE0LDEwMSwzMiwxMDEsMTA1LDExNiwxMDQsMTAxLDExNCwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSwzMiwxMTEsMTE0LDMyLDExNSwxMTYsOTcsMTE2LDEwNSw5OSwzMiwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTUsMzIsMTE2LDExMSwzMiw5NywxMTgsMTExLDEwNSwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMTAsMzIsMzIsMzIsMzIsCi0gICAgMTA1LDExMCwxMTUsMTE2LDk3LDExMCwxMTYsMTA1LDk3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgOTksMTA4LDk3LDExNSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTAwLDEsMCwxMDYsMCwwLDEyNCwwLDAsMTA2LAotICAgIDEsMCwxMzEsMSwwLDgzLDQxLDIsMTIyLDExNSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTAxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsCi0gICAgMTE0LDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOSw5Nyw5OSwxMDQsMTA1LDExMCwxMDEsMTE0LDEyMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA2LDExMSw5OCwzMiwxMDUsMTE2LDExNSwxMDEsCi0gICAgMTA4LDEwMiw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsMjQsNjAsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsNDAsOTgsMTE3LDEwNSwKLSAgICAxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsNjIsNDEsMiwxMTQsNTAsMCwwLDAsMTE0LDEsCi0gICAgMCwwLDAsNDEsMSwxMTQsODksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDkyLDAsMCwwLDE5NSwyLAotICAgIDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsNzgsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsNTgsMCwwLAotICAgIDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDE2LDAsMTAwLDAsMCwKLSAgICA4MywxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCw1MCwwLAotICAgIDExNiwyLDAsMTI0LDEsMCwxMjQsMCwwLDEwMCwxLDAsMTAwLDIsMCwxMzEsCi0gICAgMiwxLDgzLDEwMCwwLDAsODMsMTAwLDAsMCw4Myw0MSwzLDc4LDExNCwxMDcsCi0gICAgMCwwLDAsMTIyLDgsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsNDEsMywxMTQsCi0gICAgNTcsMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICAxMTQsODUsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3OCwwLDAsCi0gICAgMCwyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwyMDQsMiwwLDAsMTE1LDEwLDAsCi0gICAgMCwwLDAsMiwxMiwxLDQsMSwxNSwxLDE5LDIsMTIyLDI1LDY2LDExNywKLSAgICAxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsNDEsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMiwwLAotICAgIDEyNSwzLDAsMTI0LDMsMCwxMDAsMSwwLDEwNyw5LDAsMTE0LDM3LDAsMTI0LAotICAgIDMsMCwxMDYsMSwwLDgzLDEwMCwxLDAsODMsNDEsMiwxMjIsMTc1LDcwLDEwNSwKLSAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiwxMDUsMTE1LDMyLDEwMSwxMTgsCi0gICAgMTAxLDExNCwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMDQsMTAxLAotICAgIDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiwKLSAgICA5OSwxMTEsMTEwLDExNSwxMDUsMTAwLDEwMSwxMTQsMTAxLDEwMCwzMiw5NywzMiwxMDIsOTcsMTA1LAotICAgIDEwOCwxMTcsMTE0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKLSAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSwKLSAgICA5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwKLSAgICAxMTQsMTU0LDAsMCwwLDExNCw5OSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLAotICAgIDAsMTE0LDc4LDAsMCwwLDExNCwxNTIsMCwwLDAsMTE0LDg4LDAsMCwwLAorICAgIDAsMCwwLDExNSw2LDAsMCwwLDEyNCwwLDEwNiwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwxLDExNCwxMDcsMCwwLDAsNDEsMSwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDExMywKKyAgICAwLDAsMCwxNTQsMSwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyMywKKyAgICA3NywxMTEsMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksNDYsMTA0LDk3LDExNSw5NSwxMDgsCisgICAgMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5OSwyLDAsMCwwLDAsMCwwLDAsCisgICAgMiwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNCwwLDAsCisgICAgMCwxMTYsMCwxMjQsMSwxMzEsMSwxMjQsMCw5NSwxLDEwMCwwLDgzLDAsNDEsCisgICAgMSw3OCw0MSwyLDIxOCw0LDk4LDExMSwxMTEsMTA4LDExNCwxMDcsMCwwLDAsNDEsCisgICAgMiwxMTQsMjYsMCwwLDAsMjE4LDUsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCwxMCwwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMTMsMCwwLAorICAgIDAsMTU4LDEsMCwwLDExNSwyLDAsMCwwLDAsMiw0MSwxMiwxMTQsMSwKKyAgICAwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwxMTQsMywwLAorICAgIDAsMCwxMTQsMjcsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCwxMTQsMCwwLAorICAgIDAsMjE4LDgsMTEyLDExNCwxMTEsMTEyLDEwMSwxMTQsMTE2LDEyMSwxMTQsMTEyLDAsMCwwLAorICAgIDIxOCw2LDExNSwxMDEsMTE2LDExNiwxMDEsMTE0LDExNCwxMTksMCwwLDAsMTE0LDExMywwLAorICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTEsMCwwLDAsMTE0LDEwMiwwLDAsMCw2MiwxLDAsMCwxMTUsCisgICAgMjAsMCwwLDAsOCwzNSw0LDIsNCwxLDE0LDExLDgsMTAsOCwxMiwKKyAgICAxMiw5LDE0LDQsMTIsOCwxMiw0LDExNCwxMDIsMCwwLDAsNDEsMiwxMTQsCisgICAgMTAzLDAsMCwwLDExNCwxMDUsMCwwLDAsOTksMiwwLDAsMCwyLDAsCisgICAgMCwwLDYsMCwwLDAsMTQsMCwwLDAsNjcsMCwwLDAsMTE1LDE1NCwKKyAgICAwLDAsMCwxMTYsMCwxMjQsMSwxMDAsMSwxMzEsMiwxMTQsNzQsMTE2LDEsMTAwLAorICAgIDIsMTA3LDgsMTE0LDIyLDExNiwyLDEzMCwxLDExNiwxLDEwNiwzLDEyNSw0LDEyNCwKKyAgICAzLDEwMCwyLDEwNyw4LDExNCw0OCwxMjQsNCwxMjQsMCwxMjQsMSwxMDAsMywxNDEsCisgICAgMiw4MywwLDEyNCwzLDExNCw1NiwxMDMsMCwxMTAsMiwxMDAsMiwxMjUsNSwxMjQsCisgICAgNCwxMjQsMCwxMjQsMSwxMjQsNSwxMDAsNCwxNDEsMyw4MywwLDEyNCwzLDEwMCwKKyAgICAyLDEwNyw4LDExNCwxMzgsMTE2LDAsMTI0LDEsMTAwLDUsMTMxLDIsMTE0LDEzNCwxMjEsCisgICAgMTQsMTI0LDEsMTA2LDQsMTI0LDAsMTMxLDEsMTI1LDMsODcsMCwxMTMsMTM4LDQsCisgICAgMCwxMTYsNSwxMDcsMTAsMTE0LDEzMCwxLDAsMSwwLDEsMCwxMDAsMiwxMjUsCisgICAgMyw4OSwwLDExMywxMzgsODgsMCwxMTAsNCwxMDAsNiwxMjUsMywxMTYsNiwxMjQsCisgICAgMCwxMjQsMSwxMjQsMiwxMjQsMywxMDAsNywxNDEsNCw4MywwLDQxLDgsMTIyLAorICAgIDUzLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTgsCisgICAgOTcsMTE0LDEwNSwxMTEsMTE3LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwOSwxMDEsCisgICAgMTE2LDEwNCwxMTEsMTAwLDExNSw0Niw5MCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsNzgsNDEsMSwxMTQsOTMsMCwwLDAsNDEsMiwxMTQsOTMsCisgICAgMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMTA1LDAsMCwwLDcwLDQxLDIsCisgICAgMTE0LDEwMywwLDAsMCwxMTQsMTA1LDAsMCwwLDQxLDcsMTE0LDQsMCwwLAorICAgIDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDIxOCwyMywxMTUsMTEyLDEwMSwKKyAgICA5OSw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDEwOCwxMTEsOTksOTcsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNCwxMDUsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxMDIsCisgICAgMCwwLDAsNDEsNiwxMTQsMTUsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwKKyAgICAxMDMsMCwwLDAsMTE0LDEwNSwwLDAsMCwxMTQsMTI0LDAsMCwwLDkwLDYsCisgICAgMTE1LDEwMSw5NywxMTQsOTksMTA0LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDExNCw3OCwwLDAsMCwxNjMsMSwwLDAsMTE1LDM0LAorICAgIDAsMCwwLDAsMiwxMCwxLDgsMSw0LDEsNiwyLDgsMSwxMiwKKyAgICAxLDEyLDEsNiwxLDgsMiw4LDEsMTAsMSwyLDEsMTQsMSwxNCwKKyAgICAxLDEyLDMsNCwyLDExNCw3OCwwLDAsMCw5OSwzLDAsMCwwLDAsCisgICAgMCwwLDAsOCwwLDAsMCw1MywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNTYsMSwwLDAsMTIxLDEwLDEyNCwwLDEwNiwwLDEyNSwzLDg3LDAsMTEwLDIwLAorICAgIDQsMCwxMTYsMSwxMDcsMTAsMTE0LDMwLDEsMCwxLDAsMSwwLDg5LDAsCisgICAgMTEwLDE0LDg4LDAsMTI0LDMsMTAwLDAsMTA3LDksMTE0LDQ0LDEyNCwzLDgzLDAsCisgICAgMTI0LDAsMTA2LDIsMTI1LDQsMTI0LDEsMTAwLDAsMTA3LDgsMTE0LDkwLDEyMSwxMCwKKyAgICAxMjQsMCwxMDYsMywxMjUsMSw4NywwLDExMCwyMCw0LDAsMTE2LDEsMTA3LDEwLAorICAgIDExNCw4OCwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTIxLDEwLAorICAgIDEyNCwwLDEwNiw0LDEyNSw1LDg3LDAsMTEwLDI0LDQsMCwxMTYsMSwxMDcsMTAsCisgICAgMTE0LDEyNCwxLDAsMSwwLDEsMCwxMDAsMCwxMjUsNSw4OSwwLDExMCwyLAorICAgIDg4LDAsMTI0LDIsMTAwLDAsMTA3LDgsMTE0LDE4NCwxMjQsNSwxMDAsMCwxMDcsOCwKKyAgICAxMTQsMTgwLDEyMSwxMCwxMjQsMSwxMDYsNSwxMjUsMiw4NywwLDExMywxODQsNCwwLAorICAgIDExNiwxLDEwNywxMCwxMTQsMTc2LDEsMCwxLDAsMSwwLDEwMCwwLDEyNSwyLAorICAgIDg5LDAsMTEzLDE4NCw4OCwwLDExMCw0LDEyNCw1LDEyNSwyLDEyMSwxMCwxMjQsMCwKKyAgICAxMDYsNiwxMjUsNiw4NywwLDExMCwyNCw0LDAsMTE2LDEsMTA3LDEwLDExNCwyMTgsCisgICAgMSwwLDEsMCwxLDAsMTAwLDAsMTI1LDYsODksMCwxMTAsMiw4OCwwLAorICAgIDEyMSwxNCwxMTYsNywxMjQsMCwxMDYsOCwxMzEsMSwxMjUsNyw4NywwLDExMCwyNiwKKyAgICA0LDAsMTE2LDEsMTA3LDEwLDE0NCwxLDExNCw0LDEsMCwxLDAsMSwwLAorICAgIDEwMCwwLDEyNSw3LDg5LDAsMTEwLDIsODgsMCwxMTYsOSwxMjQsNCwxMjQsMSwKKyAgICAxMjQsMiwxMDAsMSwxNDEsMywxMjUsMywxMjQsNSwxMDAsMCwxMDcsOCwxNDQsMSwKKyAgICAxMTQsMzQsMTAwLDIsMTEwLDIsMTAwLDMsMTI0LDMsOTUsMTAsMTI0LDYsMTI0LDMsCisgICAgOTUsMTEsMTI0LDcsMTI0LDMsOTUsMTIsMTI0LDMsODMsMCw0MSw0LDc4LDQxLAorICAgIDEsMTE0LDEwMywwLDAsMCw3MCw4NCw0MSwxMywxMTQsODksMCwwLDAsMTE0LAorICAgIDkwLDAsMCwwLDExNCwxLDAsMCwwLDExNCw4NSwwLDAsMCwxMTQsOTIsCisgICAgMCwwLDAsOTAsNyw5NSw3OSw4Miw3Myw3MSw3Myw3OCwyMTgsMTAsOTUsOTUsCisgICAgOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsMjE4LDQsMTA4LDEwNSwxMTUsMTE2LDIxOCw4LAorICAgIDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxMDIsMCwwLDAsMTE0LDEwNywwLAorICAgIDAsMCwxMTQsMTEyLDAsMCwwLDExNCwxMDYsMCwwLDAsNDEsOCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDgyLDAsCisgICAgMCwwLDExNCwxNSwwLDAsMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsCisgICAgMTEwLDExNCwxMTIsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsMTE1LDExMiwxMDEsCisgICAgOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE5MiwxLDAsCisgICAgMCwxMTUsNzIsMCwwLDAsMCwyLDIsMSwxMCwxLDE0LDEsNiwyLAorICAgIDgsMSw0LDIsNiwxLDgsMSwyLDEsMTAsMSwxNCwyLDYsMSwKKyAgICAyLDEsMTAsMSwxNCwxLDEwLDEsOCwxLDgsMSwyLDEsMTAsMSwKKyAgICAxNCwxLDEyLDIsNCwxLDIsMSwxMCwxLDE0LDEsMTAsMSwyLDEsCisgICAgMTQsMSwxNiwxLDEwLDIsMTQsMSwyMCwxLDYsMSw2LDEsMTE0LDEyOCwKKyAgICAwLDAsMCw3MCw0MSwxLDIxOCw4LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsCisgICAgOTksMiwwLDAsMCwxLDAsMCwwLDUsMCwwLDAsNTksMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDIxMiwxLDAsMCwxMjQsMiwxMTUsMjAsMTE2LDAsCisgICAgMTI0LDEsMTAwLDEsMTAwLDAsMTMxLDMsMTAwLDAsMTA3LDgsMTE0LDU0LDEyMSwxMiwKKyAgICAxMjQsMCwxMDYsMSwxMjQsMSw5NSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMywKKyAgICAxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiwxMTUsNzQsMTE2LDAsMTI0LDEsMTAwLDIsMTAwLDAsMTMxLDMsMTAwLDAsCisgICAgMTA3LDgsMTE0LDE2NiwxMjQsMCwxMDYsNCwxMjUsMywxMjQsMywxMDAsMCwxMDcsOCwKKyAgICAxMTQsMTM0LDEyNCwwLDEwNiw1LDEwMCwwLDEwNyw5LDExNCwxMzQsMTE2LDYsMTAwLDAsCisgICAgMTA3LDgsMTE0LDExMCwxMTYsNywxMzAsMSwxMTYsNiwxMDYsOCwxMjUsNCwxMjQsNCwKKyAgICAxMDYsOSwxMjQsNCwxMzEsMSwxMjUsMywxMjQsMCwxMDYsNSwxMjQsMyw5NSwxMCwKKyAgICAxMjEsMTAsMTI0LDMsMTI0LDEsOTUsMTEsODcsMCwxMTAsMjAsNCwwLDExNiwzLAorICAgIDEwNywxMCwxMTQsMTY0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMjQsMiwxMTUsMTg2LDExNiwwLDEyNCwxLDEwMCwzLDEwMCwwLDEzMSwzLDEwMCwwLAorICAgIDEwNyw4LDExNCwyMjAsMTIxLDEyLDEyNCwwLDEwNiwxMiwxMjQsMSw5NSwxMyw4NywwLAorICAgIDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwyMTgsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDEyMSwxMCwxMjQsMCwxMjQsMSw5NSwxNCw4NywwLAorICAgIDExMCwyMCw0LDAsMTE2LDMsMTA3LDEwLDExNCwyNTAsMSwwLDEsMCwxLDAsCisgICAgODksMCwxMTAsMiw4OCwwLDEyNCwyLDE0NCwxLDExNSwyMCwxMTYsMCwxMjQsMSwKKyAgICAxMDAsNCwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxNDQsMSwxMTQsNjgsMTI0LDAsCisgICAgMTA2LDUsMTAwLDAsMTA3LDksMTQ0LDEsMTE0LDY4LDEyMSwxMiwxMjQsMCwxMDYsNSwKKyAgICAxMjQsMSw5NSwxNSw4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLAorICAgIDExNCw2NiwxLDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDAsCisgICAgMTA2LDE2LDE0NCwxLDExNCwyMDgsMTI0LDIsMTQ0LDEsMTE1LDEwMCwxMTYsMCwxMjQsMSwKKyAgICAxMDAsNSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxNDQsMSwxMTQsMTM2LDEyMSwxMiwKKyAgICAxMjQsMCwxMDYsMTcsMTI0LDEsOTUsMTgsODcsMCwxMTAsMjIsNCwwLDExNiwzLAorICAgIDEwNywxMCwxNDQsMSwxMTQsMTM0LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsCisgICAgODgsMCwxMjQsMiwxNDQsMSwxMTUsMTYwLDExNiwwLDEyNCwxLDEwMCw2LDEwMCwwLAorICAgIDEzMSwzLDEwMCwwLDEwNyw4LDE0NCwxLDExNCwyMDgsMTI0LDAsMTA2LDE5LDEwMCwwLAorICAgIDEwNyw5LDE0NCwxLDExNCwyMDgsMTIxLDEyLDEyNCwwLDEwNiwxOSwxMjQsMSw5NSwyMCwKKyAgICA4NywwLDExMCwyMiw0LDAsMTE2LDMsMTA3LDEwLDE0NCwxLDExNCwyMDYsMSwwLAorICAgIDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDEyNCwxLDgzLDAsNDEsNywKKyAgICA3OCwxMTQsMSwwLDAsMCwxMTQsODUsMCwwLDAsMjE4LDExLDk1LDk1LDExMiwKKyAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwxMTQsMTI3LDAsMCwwLDExNCw5MiwwLAorICAgIDAsMCwxMTQsMTI1LDAsMCwwLDQxLDIxLDExNCw2LDAsMCwwLDExNCwxNSwKKyAgICAwLDAsMCwxMTQsMSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDkzLDAsCisgICAgMCwwLDExNCwxMDYsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwKKyAgICAwLDIxOCwxNiw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwyMTgsNyw5NSw5NSwxMTAsMTAxLDExOSw5NSw5NSw5MCw1LDk1LDExMiwKKyAgICA5NywxMTYsMTA0LDExNCw4NSwwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCwxMzAsMCwKKyAgICAwLDAsMTE0LDg5LDAsMCwwLDExNCwxMjcsMCwwLDAsMTE0LDExMywwLDAsCisgICAgMCwxMTQsMTAzLDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsMTEyLDAsMCwwLAorICAgIDExNCwxMjUsMCwwLDAsNDEsNSwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwKKyAgICAwLDExNCwxMjksMCwwLDAsMTE0LDkzLDAsMCwwLDExNCwxMzEsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDExLDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwyMTMsMiwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMCw5LDE4LDEsMTIyLDI3LDY2LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsCi0gICAgMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjcsMCwwLDAsCi0gICAgMTI0LDEsMCwxMDYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMDcsNywwLDExNCwKLSAgICA1MSwwLDExNiwzLDAsMTAwLDEsMCwxMDYsNCwwLDEyNCwxLDAsMTA2LDAsCi0gICAgMCwxMzEsMSwwLDEwMCwyLDAsMTI0LDEsMCwxMDYsMCwwLDEzMSwxLDEsCi0gICAgMTMwLDEsMCwxMTYsNSwwLDExNiw2LDAsMTA2LDcsMCwxMjQsMSwwLDEzMSwKLSAgICAyLDAsODMsNDEsMywxMjIsMjQsNjcsMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDMyLAotICAgIDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyMiwKLSAgICAyOSwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDk4LAotICAgIDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNSwKLSAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDc2LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LAotICAgIDAsMCwwLDExNCw1NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwwLDAsMTE0LAotICAgIDg4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMzgsMCwwLDAsMjI1LDIsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMywxOCwxLDIxLDEsMTIsMSwxMjIsMjksNjYsMTE3LDEwNSwxMDgsMTE2LAotICAgIDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAotICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLAotICAgIDAsMCwxMTYsMCwwLDExNiwxLDAsMTA2LDIsMCwxMjQsMSwwLDEzMSwyLAotICAgIDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDIyLDY5LDEyMCwxMDEsOTksMzIsOTcsCisgICAgMTgsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk3LDExNiwKKyAgICAxMTYsMTE0LDExNSwyMzcsMSwwLDAsMTE1LDkyLDAsMCwwLDAsNCwyMCwxLAorICAgIDIsMSwxMiwxLDE0LDEsNiwyLDIwLDEsNiwxLDgsMiwxMCwxLAorICAgIDgsMSw0LDEsNiwyLDEwLDEsOCwxLDIsMSwxMCwxLDE0LDEsCisgICAgNiwyLDIwLDEsMiwxLDEyLDEsMTQsMSw2LDIsMiwxLDEwLDEsCisgICAgMTQsMSw2LDIsMjQsMSwxMiwxLDIsMSwxMiwxLDE2LDEsNiwyLAorICAgIDgsMSwyNCwxLDIsMSwxMiwxLDE2LDEsNiwyLDI0LDEsMTIsMSwKKyAgICAyLDEsMTIsMSwxNiwxLDYsMSwxMTQsMTMzLDAsMCwwLDk5LDEsMCwKKyAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwKKyAgICAwLDAsMTE1LDgyLDAsMCwwLDEwMCwxLDEyNSwxLDExNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEwMCwyLDEzMSwyLDExNCwzMCwxMjQsMCwxMDYsMSwxMDYsMiwxMjQsMCwxMzEsCisgICAgMSwxMjUsMSwxMTAsMjAsMTE2LDAsMTI0LDAsMTA2LDEsMTAwLDMsMTMxLDIsMTE0LAorICAgIDUwLDExNiwzLDEwMCw0LDEzMSwxLDEzMCwxLDEyNCwxLDEwMCwxLDEwNyw4LDExNCwKKyAgICA2OCwxMTYsNCwxMjQsMCwxMDYsNSwxMzEsMSwxMjUsMSwxMTYsNiwxMjQsMCwxMjQsCisgICAgMSwxMzEsMiwxLDAsMTI0LDEsODMsMCw0MSw1LDEyMiw0Myw2NywxMTQsMTAxLAorICAgIDk3LDExNiwxMDEsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LAorICAgIDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE0LDExMSwxMTgsMTA1LDEwMCwKKyAgICAxMDEsMTAwLDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LDIxOCwxMyw5OSwxMTQsMTAxLDk3LDExNiwKKyAgICAxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDEyMiw2NiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwzMiwxMTYsCisgICAgMTA0LDk3LDExNiwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLDEwMSwzMiwxMDEsMTIwLDEwMSw5OSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTcsMTA4LAorICAgIDExNSwxMTEsMzIsMTAwLDEwMSwxMDIsMTA1LDExMCwxMDEsMzIsOTksMTE0LDEwMSw5NywxMTYsMTAxLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDQxLDcsMTE0LDQsMCwwLDAsCisgICAgMTE0LDkzLDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwKKyAgICAxNiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE0LDEzMywwLDAsMCw0MSwyLAorICAgIDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDEwOSwxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTUsMTEyLDEwMSw5OSw0MSwyLDAsMCwxMTUsCisgICAgMTgsMCwwLDAsMCwzLDQsMSwxMiwzLDE0LDEsMTIsMSw4LDIsCisgICAgOCwxLDEwLDEsMTAsMSwxMTQsMTM2LDAsMCwwLDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDExMCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMDcsOCwxMTQsMTQsMTAwLAorICAgIDIsMTEwLDQsMTI0LDAsMTA2LDAsMTI1LDEsMTI0LDAsMTA2LDEsMTAwLDEsMTA3LAorICAgIDgsMTE0LDY4LDEyNCwwLDEwNiwyLDEwMCwxLDEwNyw4LDExNCw1MiwxMDAsMywxMDYsCisgICAgMywxMjQsMSwxMzEsMSw4MywwLDExMywxMDYsMTAwLDQsMTA2LDMsMTI0LDEsMTI0LAorICAgIDAsMTA2LDIsMTMxLDIsODMsMCwxMTAsMzgsMTI0LDAsMTA2LDQsMTE0LDkwLDEwMCwKKyAgICA1LDEwNiwzLDEyNCwxLDEyNCwwLDEwNiwxLDEzMSwyLDgzLDAsMTEwLDE2LDEwMCwKKyAgICA2LDEwNiwzLDEyNCwwLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwyLDgzLDAsMTAwLAorICAgIDEsODMsMCw0MSw3LDEyMiwzOCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNCwxMDEsMTEyLDExNCwzMiwxMTYsMTExLDMyLDExNywxMTUsMTAxLDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDc4LDExNCw4NywKKyAgICAwLDAsMCwxMjIsMTMsNjAsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwKKyAgICAxMjUsNjIsMTIyLDIwLDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LAorICAgIDMyLDQwLDEyMywzMywxMTQsMTI1LDQxLDYyLDEyMiwyMyw2MCwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsCisgICAgNjIsMTIyLDE4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDQwLDEyMywxMjUsNDEsNjIsNDEsNSwxMTQsMTUsMCwwLDAsMTE0LDEwMywwLDAsCisgICAgMCwxMTQsOTMsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwxMTMsMCwwLDAsCisgICAgNDEsMiwxMTQsODIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMCwwLDAsCisgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCw5MSwwLDAsMCwKKyAgICA1OCwyLDAsMCwxMTUsMTYsMCwwLDAsMCwzLDIwLDEsMTAsMSwxMCwKKyAgICAxLDEyLDIsMTYsMiw2LDEsMTYsMiwxMTQsOTEsMCwwLDAsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMTIsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE4NiwwLDAsMCwxMjQsMCwxMDYsMCwxMjUsMiwxMTYsMSwKKyAgICAxMDYsMiwxMzEsMCwxLDAsMTE2LDMsMTI0LDIsMTMxLDEsMTQzLDE0OCwxLDAsCisgICAgMTE2LDQsMTA2LDUsMTA2LDYsMTI0LDIsMTMxLDEsMTI0LDEsMTA3LDksMTE0LDYyLAorICAgIDEwMCwxLDEwNiw3LDEyNCwyLDEzMSwxLDEyNSwzLDExNiw4LDEyNCwzLDEyNCwyLAorICAgIDEwMCwyLDE0MSwyLDEzMCwxLDEyNCwwLDEwNiw5LDEwMCwzLDEwNyw4LDExNCwxMTQsCisgICAgMTI0LDAsMTA2LDEwLDEwMCwzLDEwNyw4LDExNCw5NiwxMTYsOCwxMDAsNCwxMjQsMCwKKyAgICAxMDYsMCwxMDAsMiwxNDEsMiwxMzAsMSwxMTYsMTEsMTI0LDAsMTI0LDEsMTAwLDUsCisgICAgMTAwLDYsMTQxLDMsMSwwLDEyNCwxLDgzLDAsMTE2LDExLDEyNCwwLDEyNCwxLAorICAgIDEwMCw1LDEwMCw2LDE0MSwzLDEsMCwxMTYsMTIsMTI0LDAsMTA2LDksMTAwLDcsCisgICAgMTMxLDIsMTE1LDE1NCwxMjQsMCwxMDYsOSwxMDYsMTMsMTI0LDIsMTMxLDEsMSwwLAorICAgIDExMCwxMiwxMjQsMCwxMDYsOSwxMDYsMTQsMTI0LDEsMTMxLDEsMSwwLDg3LDAsCisgICAgMTAwLDMsODEsMCw4MiwwLDg4LDAsMTE2LDQsMTA2LDUsMTI0LDIsMjUsMCwKKyAgICA4MywwLDQxLDgsMTIyLDcwLDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTE1LDExMiwxMDEsOTksMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LAorICAgIDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExMCwzMiw5NywxMTAsMzIsCisgICAgMTAxLDEyMCwxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzOSwKKyAgICAxMTUsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTIyLDMwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExMCwxMTEsMTE2LDMyLDEwNSwxMTAsCisgICAgMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LAorICAgIDAsMCwwLDc4LDEyMiwxNCwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSwKKyAgICA5NywxMDAsMTAxLDExNCw4NCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDEzNSwwLDAsCisgICAgMCw0MSwxNSwxMTQsMTUsMCwwLDAsMTE0LDQ2LDAsMCwwLDIxOCwxMiw5NywKKyAgICA5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDk1LDEwOCwxMTEsOTksMTA3LDExNCw0MiwwLDAsMCwKKyAgICAxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsCisgICAgMzgsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCw5MywwLDAsMCwxMTQsMTA2LAorICAgIDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDQsMCwwLDAsMjE4LDExLDEwOCwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsNDEsCisgICAgNCwxMTQsODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCwxNSwwLDAsMCwKKyAgICAyMTgsMywxMDksMTE1LDEwMywxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsODAsMCwwLDAsNzUsMiwwLDAsMTE1LDMyLDAsCisgICAgMCwwLDAsMiw2LDEsOCwxLDEwLDEsMTYsMSwxMCwxLDEyLDEsCisgICAgMTAsMSwxMCwxLDE0LDIsMTQsMSw0LDEsMTQsMSwxMiw0LDE0LDIsCisgICAgMjIsMSwxMTQsODAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMjcsMCwwLDAsNjcsMCwwLDAsMTE1LDIwNiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjQsMCwxMDYsMiwxMzEsMSwxLDAsMTE2LAorICAgIDMsMTA2LDQsMTI0LDAsMTA2LDIsMjUsMCwxMjUsMSwxMTYsNSwxMjQsMSwxMDAsCisgICAgMSwxMDAsMCwxMzEsMywxMDAsMCwxMDcsOCwxMTQsNzYsMTIxLDEyLDEyNCwwLDEwNiwKKyAgICAwLDEyNCwxLDk1LDYsODcsMCwxMTAsMjAsNCwwLDExNiw3LDEwNywxMCwxMTQsCisgICAgNzQsMSwwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDExNiw1LDEyNCwKKyAgICAxLDEwMCwyLDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwxNTQsMTIxLDQwLDEyNCwKKyAgICAxLDEwNiw4LDEyNCwxLDk1LDksMTE2LDEwLDEyNCwxLDEwMCwzLDEzMSwyLDExNSwKKyAgICAxMzAsMTI0LDAsMTA2LDIsMTA2LDExLDEwMCw0LDEzMSwxLDEwMCw1LDI1LDAsMTI0LAorICAgIDEsOTUsOSw4NywwLDExMCwyMCw0LDAsMTE2LDcsMTA3LDEwLDExNCwxNTIsMSwKKyAgICAwLDEsMCwxLDAsODksMCwxMTAsMiw4OCwwLDExNiw1LDEyNCwxLDEwMCwKKyAgICA2LDEwMCwwLDEzMSwzLDEwMCwwLDEwNyw4LDExNCwyMDIsMTIxLDEwLDEyNCwwLDEyNCwKKyAgICAxLDk1LDEyLDg3LDAsMTEwLDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDIwMCwxLAorICAgIDAsMSwwLDEsMCw4OSwwLDExMCwyLDg4LDAsMTI0LDEsODMsMCw0MSwKKyAgICA3LDc4LDExNCw4NSwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMjcsMCwwLAorICAgIDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsMTE0LDg5LDAsMCwwLAorICAgIDQxLDEzLDExNCw5MywwLDAsMCwxMTQsMTM4LDAsMCwwLDExNCwxNSwwLDAsCisgICAgMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDExNCw4NSwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDEsMCwwLDAsMTE0LAorICAgIDEzMCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCw4OSwKKyAgICAwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDI1LAorICAgIDk1LDEwOCwxMTEsOTcsMTAwLDk1LDk4LDk3LDk5LDEwNywxMTksOTcsMTE0LDEwMCw5NSw5OSwKKyAgICAxMTEsMTA5LDExMiw5NywxMTYsMTA1LDk4LDEwOCwxMDEsMTAwLDIsMCwwLDExNSw0MCwwLAorICAgIDAsMCwwLDQsMTQsMiwxMiwxLDE2LDEsMiwxLDEyLDEsMTQsMSwKKyAgICA2LDEsMTYsMSwyLDQsOCwxLDEwLDEsMjIsMSwxNCwxLDYsMSwKKyAgICAxNiwxLDIsMSwxMCwxLDE0LDEsNiwxLDExNCwxNDAsMCwwLDAsOTksCisgICAgMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDExOCwwLDAsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsCisgICAgOSwxMTQsMzAsMTE2LDEsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDIsMTE1LDMwLDExNiwKKyAgICAyLDEyNCwwLDEzMSwxLDgzLDAsMTE2LDMsMTI0LDAsMTMxLDEsMTI1LDEsMTE2LAorICAgIDQsMTI0LDEsMTMxLDEsMTQzLDU0LDEsMCwxMjQsMCwxMDYsMCwxMDAsMCwxMDcsCisgICAgOCwxMTQsODQsMTI0LDAsMTA2LDUsMTAwLDAsMTA3LDgsMTE0LDk2LDExNiw2LDEwMCwKKyAgICAyLDEyNCwwLDEwNiw3LDEwMCwzLDE0MSwyLDEzMCwxLDExMCwxMiwxMjQsMCwxMDYsCisgICAgMCwxMDYsOCwxMjQsMSwxMzEsMSwxLDAsODcsMCwxMDAsMCw4MSwwLDgyLAorICAgIDAsODgsMCwxMTYsOSwxMDYsMTAsMTI0LDAsMTA2LDcsMjUsMCw4MywwLDQxLAorICAgIDQsNzgsMTE0LDEzNSwwLDAsMCwxMjIsMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTAsMTAzLAorICAgIDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDEsMSwxMTQsMTUsMCwwLDAsNDEsMTEsCisgICAgMTE0LDkzLDAsMCwwLDExNCw0LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LAorICAgIDEzNiwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDEwNiwwLDAsMCwxMTQsNzAsCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxMzUsMCwwLDAsMTE0LDE0LDAsCisgICAgMCwwLDExNCw3OSwwLDAsMCw0MSwyLDExNCw4MiwwLDAsMCwxMTQsODMsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwKKyAgICAwLDAsMjE4LDE0LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwxMDcsCisgICAgMTAxLDEwMCwxMjksMiwwLDAsMTE1LDIwLDAsMCwwLDAsMiwxMCwyLDEyLAorICAgIDEsOCwyLDgsMSwxMCwxLDEwLDEsMTAsMSwxNiwzLDIyLDUsMTE0LAorICAgIDE0MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsCisgICAgMCw5LDAsMCwwLDY3LDAsMCwwLDExNSwzOCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMzEsMCwxLDAsMTE2LDIsMTI0LDAsMTA2LDMsMTMxLDEsMTQzLDEwLAorICAgIDEsMCwxMTYsNCwxMjQsMCwxMzEsMSw4MywwLDgxLDAsODIsMCw4OCwwLAorICAgIDEwMCwxLDgzLDAsNDEsMiwxMjIsMTkxLDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsOTcsCisgICAgMzIsMTEwLDEwMSwxMTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsCisgICAgOTksMTE2LDQ0LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsCisgICAgMTAxLDMyLDExNSwxMTIsMTAxLDk5LDM5LDExNSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDAsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDczLDEwMiwzMiw5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LAorICAgIDMyLDk3LDEwOCwxMTQsMTAxLDk3LDEwMCwxMjEsMzIsMTA1LDExMCwzMiwxMTUsMTIxLDExNSw0NiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTAxLDEyMCwKKyAgICAxMDUsMTE1LDExNiwxMDUsMTEwLDEwMywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDMsMTAxLAorICAgIDExNiwxMTUsMTAsMzIsMzIsMzIsMzIsOTksMTA4LDExMSw5OCw5OCwxMDEsMTE0LDEwMSwxMDAsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsNDEsNSwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDEzNywwLDAsMCwxMTQsNDIsMCwwLDAsMTE0LDE1LDAsMCwwLDExNCwxNDEsCisgICAgMCwwLDAsNDEsMSwxMTQsODIsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDgxLDAsMCwwLDE1MiwyLAorICAgIDAsMCwxMTUsNiwwLDAsMCwwLDksOCwxLDEyLDEsMTE0LDgxLDAsCisgICAgMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsCisgICAgMCwwLDAsNjQsMCwwLDAsMTE1LDEzNiwwLDAsMCwxMDEsMCw5MCwxLAorICAgIDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwKKyAgICAxMzEsMSw5MCw1LDEwMSw2LDEwMCwxOSwxMDAsNSwxMDAsNiwxMzIsMSwxMzEsMSwKKyAgICA5MCw3LDEwMSw2LDEwMCwyMCwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSw5MCw4LAorICAgIDEwMSw2LDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw2LDEwMCwxMSwKKyAgICAxMDAsMTIsMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAxLDExLDEwMCwxMywxMDAsMTQsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTIsMTAxLDYsMTAxLDExLDEwMCwxNSwxMDAsMTYsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTMsMTAxLDYsMTAxLDExLDEwMCwxNywxMDAsMTgsCisgICAgMTMyLDAsMTMxLDEsMTMxLDEsOTAsMTQsMTAxLDYsMTAxLDE1LDEzMSwxLDkwLDE2LAorICAgIDEwMCw0LDgzLDAsNDEsMjEsMjE4LDE1LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQ0LDc3LDEwMSwxMTYsOTcsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LAorICAgIDMyLDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LAorICAgIDExNiw5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLAorICAgIDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsCisgICAgMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLAorICAgIDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LAorICAgIDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyNCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwKKyAgICAxMjMsMzMsMTE0LDEyNSwzMiw0MCw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCw0MSw2MiwKKyAgICA0MSwyLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsMCw0MSwxLDExNCw4MywKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAorICAgIDAsMCwxMTQsODYsMCwwLDAsMTc3LDIsMCwwLDExNSwyLDAsMCwwLAorICAgIDAsNywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDEsMTE0LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCw3OCwKKyAgICA5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsMCw1LDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0NiwwLDAsMCwxMjQsMiwxMDAsMCwxMDcsOSwKKyAgICAxMTQsMTIsMTAwLDAsODMsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMTQsMzgsCisgICAgMTE2LDIsMTI0LDEsMTI0LDAsMTAwLDEsMTAwLDIsMTQxLDMsODMsMCwxMTAsNCwKKyAgICAxMDAsMCw4MywwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsOCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsNDUsMTA1LDExMCw0MSwxLDExNCwxMDMsMCwwLDAsNDEsMywxMTQsNDYsCisgICAgMCwwLDAsOTAsMTAsMTA1LDExNSw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwxMTQsCisgICAgNzgsMCwwLDAsNDEsNCwyMTgsMyw5OSwxMDgsMTE1LDExNCw3MSwwLDAsMCwKKyAgICAyMTgsNCwxMTIsOTcsMTE2LDEwNCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw5LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxODYsMiwwLDAsMTE1LDEwLDAsMCwKKyAgICAwLDAsMiw4LDEsNCwxLDEwLDEsMTYsMiwxMjIsMjUsNjYsMTE3LDEwNSwKKyAgICAxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwKKyAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMCwwLDAsMCwKKyAgICAxMjQsMCwxMDYsMCwxMjQsMSwxMjQsMiwxMzEsMiwxMjUsMywxMjQsMywxMDAsMSwKKyAgICAxMDcsOSwxMTQsMjYsMTI0LDMsMTA2LDEsODMsMCwxMDAsMSw4MywwLDQxLDIsCisgICAgMTIyLDE3NSw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw3MywxMDIsMzIsMzksMTEyLDk3LDExNiwxMDQsMzksMzIsMTA1LAorICAgIDExNSwzMiwxMDEsMTE4LDEwMSwxMTQsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5NywxMTQsOTksMTA0LAorICAgIDMyLDEwNSwxMTUsMzIsOTksMTExLDExMCwxMTUsMTA1LDEwMCwxMDEsMTE0LDEwMSwxMDAsMzIsOTcsCisgICAgMzIsMTAyLDk3LDEwNSwxMDgsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAorICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAorICAgIDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwKKyAgICAxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDc4LDQxLDIsMTE0LDE0NiwwLDAsMCwxMTQsOTMsMCwwLDAsNDEsNCwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwKKyAgICA4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDE5NSwyLDAsMCwxMTUsNCwwLDAsMCwwLDksMTIsMSwxMjIsMjcsNjYsCisgICAgMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMiwKKyAgICAxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsCisgICAgMCwwLDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICA0NiwwLDAsMCwxMjQsMSwxMDYsMCwxMTYsMSwxMDYsMiwxMDcsNywxMTQsMzQsCisgICAgMTE2LDMsMTAwLDEsMTA2LDQsMTI0LDEsMTA2LDAsMTMxLDEsMTI0LDEsMTA2LDAsCisgICAgMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDUsMTE2LDYsMTA2LDcsMTI0LDEsMTMxLDIsCisgICAgODMsMCw0MSwzLDEyMiwyNCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMzIsOTgsCisgICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDI5LAorICAgIDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMzIsOTgsMTE3LAorICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDEsMSwxMTQsCisgICAgMTUsMCwwLDAsNDEsOCwxMTQsMTUsMCwwLDAsMTE0LDE0LDAsMCwwLAorICAgIDExNCw2OSwwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDM4LDAsMCwwLDExNCwKKyAgICA1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTQsOTksMTE0LDEwMSw5NywxMTYsCisgICAgMTAxLDk1LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDQxLDIsMTE0LDI2LDAsMCwwLAorICAgIDExNCw4MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKKyAgICAxMSwwLDAsMCwxMTQsMTM0LDAsMCwwLDIwNywyLDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDMsMTIsMSwxMiwxLDEwLDEsMTIyLDI5LDY2LDExNywxMDUsMTA4LAorICAgIDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0Niw5OSwxMTQsMTAxLDk3LAorICAgIDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTI0LDEsMTMxLDIsMSwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsMjIsNjksMTIwLDEwMSw5OSwzMiw5NywzMiw5OCwxMTcsCisgICAgMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSwzLAorICAgIDExNCw1OCwwLDAsMCwxMTQsNDYsMCwwLDAsOTAsMTIsMTAxLDEyMCwxMDEsOTksCisgICAgOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMjYsMCwwLDAsMTE0LAorICAgIDgzLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAorICAgIDAsMCwwLDExNCwxMzUsMCwwLDAsMjE1LDIsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLAorICAgIDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwKICAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA3OCw0MSwzLDExNCw2NSwwLDAsMCwxMTQsNTcsMCwwLDAsOTAsMTIsMTAxLAotICAgIDEyMCwxMDEsOTksOTUsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNDEsMiwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDg5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLDAsMjMzLDIsMCwwLDExNSwKLSAgICAyLDAsMCwwLDAsMywxMjIsMjcsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsCi0gICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAotICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCwKLSAgICA4Myw0MSwyLDEyMiw1Nyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLAotICAgIDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwKLSAgICAzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMTE1LDQ2LDc4LDExNCwKLSAgICAxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLAotICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwKLSAgICA4LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDIzOCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDQsMTIyLDI0LDY2LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTYsCi0gICAgODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAotICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKLSAgICAxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsMTAzLDEwMSwxMTYsOTUsMTE1LAotICAgIDExMSwxMTcsMTE0LDk5LDEwMSwyNDQsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAorICAgIDExNSwzMiwxMDAsMTExLDMyLDExMCwxMTEsMTE2LDMyLDEwNCw5NywxMTgsMTAxLDMyLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwxMTUsNDYsNzgsMTE0LDEwLDAsMCwKKyAgICAwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDgsMTAzLDEwMSwKKyAgICAxMTYsOTUsOTksMTExLDEwMCwxMDEsMjIwLDIsMCwwLDExNSwyLDAsMCwwLDAsCisgICAgNCwxMjIsMjQsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Niw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwKKyAgICAxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTAwLDExMSwzMiwKKyAgICAxMTAsMTExLDExNiwzMiwxMDQsOTcsMTE4LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAorICAgIDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwKKyAgICAwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsCisgICAgOTksMTAxLDIyNiwyLDAsMCwxMTUsMiwwLDAsMCwwLDQsMTIyLDI2LDY2LAorICAgIDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsCisgICAgMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiw1Miw4MiwxMDEsMTE2LDExNywxMTQsCisgICAgMTEwLDMyLDcwLDk3LDEwOCwxMTUsMTAxLDMyLDk3LDExNSwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTE0LDEwMSwzMiwKKyAgICAxMTAsMTAxLDExOCwxMDEsMTE0LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTUsNDYsNzAsCisgICAgMTE0LDEwLDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDEwNSwwLDAsMCwyMzIsMiwwLDAsMTE1LDIsMCwwLDAsMCw0LAogICAgIDEyMiwyNiw2NiwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsNTIsODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiw5NywxMTUsMzIsOTgsMTE3LAotICAgIDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LAotICAgIDExNCwxMDEsMzIsMTEwLDEwMSwxMTgsMTAxLDExNCwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCi0gICAgMTE1LDQ2LDcwLDExNCwxMCwwLDAsMCw0MSwyLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLAotICAgIDAsMCwwLDExNCwxMDksMCwwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwKLSAgICAwLDAsNCwxMjIsMjYsNjYsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsNzMsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLAotICAgIDE3LDExNCwxLDAsMCwwLDExNCwwLDAsMCwwLDExNCwyLDAsMCwwLAotICAgIDExNCwzLDAsMCwwLDIxOCwxMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMTA5LDEwMSwxMTYsCi0gICAgMTA0LDExMSwxMDAsMTE0LDkyLDAsMCwwLDIxOCwxMSw5OSwxMDgsOTcsMTE1LDExNSwxMDksCi0gICAgMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsMTU0LDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LAotICAgIDEzOCwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsMTU2LAotICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDEwOSwwLDAsMCwxMTQsOTAsMCwKLSAgICAwLDAsMTE0LDE0NiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE1MCwwLDAsMCwKLSAgICAxODYsMiwwLDAsMTE1LDMwLDAsMCwwLDEyLDcsNiwyLDE4LDksMywKLSAgICAxLDIxLDgsMywxLDE4LDExLDE4LDgsMTgsNSwzLDEsMjEsNSwzLAotICAgIDEsMjEsNSwzLDEsMjEsNSwxMTQsMTUwLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDIxMSwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDkwLDMsMCwxMDEsNCwwLDEwMCwyLDAsMTAwLDMsCi0gICAgMCwxMzIsMCwwLDEzMSwxLDAsOTAsNSwwLDEwMSw2LDAsMTAwLDQsMCwKLSAgICAxMDAsNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMiwwLDEzMSwxLDAsOTAsCi0gICAgNywwLDEwMSw2LDAsMTAwLDQsMCwxMDAsNywwLDEwMCw4LDAsMTMyLDEsCi0gICAgMCwxMzEsMSwwLDkwLDgsMCwxMDEsNiwwLDEwMCw5LDAsMTAwLDEwLDAsCi0gICAgMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDEsNCwwLDEwMCwxMSwwLDEwMCwKLSAgICAxMiwwLDEzMiwwLDAsMTMxLDEsMCw5MCwxMCwwLDEwMSw2LDAsMTAwLDEzLAotICAgIDAsMTAwLDE0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDExLDAsMTAxLDYsMCwKLSAgICAxMDEsMTIsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwwLDEzMSwxLDAsMTMxLAotICAgIDEsMCw5MCwxMywwLDEwMSw2LDAsMTAxLDEyLDAsMTAwLDE3LDAsMTAwLDE4LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDEzMSwxLDAsOTAsMTQsMCwxMDEsNiwwLAotICAgIDEwMSwxMiwwLDEwMCwxOSwwLDEwMCwyMCwwLDEzMiwwLDAsMTMxLDEsMCwxMzEsCi0gICAgMSwwLDkwLDE1LDAsMTAwLDQsMCw4Myw0MSwyMSwyMTgsMTQsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTIyLDE0Miw3NywxMDEsMTE2LAotICAgIDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwMiwxMTEsCi0gICAgMTE0LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsCi0gICAgMTAwLDExNSwzMiw5NywxMTQsMTAxLDMyLDEwMSwxMDUsMTE2LDEwNCwxMDEsMTE0LDMyLDk5LDEwOCwKLSAgICA5NywxMTUsMTE1LDMyLDExMSwxMTQsMzIsMTE1LDExNiw5NywxMTYsMTA1LDk5LDMyLDEwOSwxMDEsCi0gICAgMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsMTExLDMyLDk3LDExOCwxMTEsMTA1LDEwMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsOTcsMTEwLDExNiwxMDUsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiw5OSwKLSAgICAxMDgsOTcsMTE1LDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5OSwxLDAsMCwwLAotICAgIDAsMCwwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLAotICAgIDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMDYsMSwKLSAgICAwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCi0gICAgMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwKLSAgICAxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsCi0gICAgMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsCi0gICAgMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsCi0gICAgMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsCi0gICAgMTAxLDExMCw0MSw2Miw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMSwwLDAsMCwKLSAgICA0MSwxLDIxOCwxLDEwOSwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLDExMiwxMTQsCi0gICAgNzgsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNSwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsNDIsMCwwLDAsMTE2LDAsMCwxMDYsMSwKLSAgICAwLDEyNCwxLDAsMTMxLDEsMCwxMTQsMzQsMCwxMTYsMiwwLDEyNCwxLDAsCi0gICAgMTI0LDAsMCwxMDAsMSwwLDEwMCwyLDAsMTMxLDIsMSw4MywxMDAsMCwwLAotICAgIDgzLDEwMCwwLDAsODMsNDEsMyw3OCwxMTQsMTA3LDAsMCwwLDkwLDYsMTAyLAotICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNDEsMywxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwKLSAgICAwLDExNCw4NSwwLDAsMCw0MSw0LDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsCi0gICAgMCwwLDExNCwxNTIsMCwwLDAsMTE0LDE1MywwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU0LDAsMCwwLAotICAgIDIxLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxNSwxLDE5LDIsMTIyLAotICAgIDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAotICAgIDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwyMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDExNCwKLSAgICAxOSwwLDEyNCwwLDAsODMsMTAwLDEsMCw4Myw0MSwyLDEyMiw5Myw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCisgICAgMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQxLDIsNzgsNzgsCisgICAgNDEsMSw3OCw0MSwxNywxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsCisgICAgMiwwLDAsMCwxMTQsMywwLDAsMCwyMTgsMTIsMTE1LDExNiw5NywxMTYsMTA1LAorICAgIDk5LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCw4NiwwLDAsMCwyMTgsMTEsOTksMTA4LAorICAgIDk3LDExNSwxMTUsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDE0NiwwLDAsMCwxMTQsMTQ3LAorICAgIDAsMCwwLDExNCwxMzQsMCwwLDAsMTE0LDEzNSwwLDAsMCwxMTQsNzQsMCwKKyAgICAwLDAsMTE0LDE0OCwwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwxMDUsMCwwLAorICAgIDAsMTE0LDg0LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxNDIsMCwwLDAsMTY4LDIsMCwwLDExNSwzMCwwLDAsMCw4LDcsNCwKKyAgICAyLDEyLDksMiwxLDEyLDgsMiwxLDEyLDExLDEyLDgsMTIsNSwyLAorICAgIDEsMTQsNSwyLDEsMTQsNSwyLDEsMTQsNSwxMTQsMTQyLDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDE0MCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSwKKyAgICA5MCw1LDEwMSw2LDEwMCwyMSwxMDAsNSwxMDAsNiwxMzIsMSwxMzEsMSw5MCw3LAorICAgIDEwMSw2LDEwMCwyMiwxMDAsNywxMDAsOCwxMzIsMSwxMzEsMSw5MCw4LDEwMSw2LAorICAgIDEwMCw5LDEwMCwxMCwxMzIsMCwxMzEsMSw5MCw5LDEwMSw0LDEwMCwxMSwxMDAsMTIsCisgICAgMTMyLDAsMTMxLDEsOTAsMTAsMTAxLDYsMTAwLDEzLDEwMCwxNCwxMzIsMCwxMzEsMSwKKyAgICA5MCwxMSwxMDEsNiwxMDEsMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxMywxMDEsNiwxMDEsMTIsMTAwLDE3LDEwMCwxOCwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxNCwxMDEsNiwxMDEsMTIsMTAwLDE5LDEwMCwyMCwxMzIsMCwxMzEsMSwxMzEsMSwKKyAgICA5MCwxNSwxMDAsNCw4MywwLDQxLDIzLDIxOCwxNCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLAorICAgIDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCwxMjIsMTQyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTAyLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLAorICAgIDMyLDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE1LDMyLAorICAgIDk3LDExNCwxMDEsMzIsMTAxLDEwNSwxMTYsMTA0LDEwMSwxMTQsMzIsOTksMTA4LDk3LDExNSwxMTUsCisgICAgMzIsMTExLDExNCwzMiwxMTUsMTE2LDk3LDExNiwxMDUsOTksMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMTE4LDExMSwxMDUsMTAwLDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICA5NywxMTAsMTE2LDEwNSw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDk5LDEwOCw5NywxMTUsCisgICAgMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDEyLDAsCisgICAgMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLDAsNDEsMiwKKyAgICAxMjIsMTE1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LAorICAgIDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LAorICAgIDEwNCwxMDUsMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwKKyAgICAxMDYsMTExLDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDEyMiwyMiw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsCisgICAgMzMsMTE0LDEyNSwzMiw0MCwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw0MSw2Miw0MSwyLDExNCwKKyAgICAzOCwwLDAsMCwxMTQsMSwwLDAsMCw0MSwxLDIxOCwxLDEwOSwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsODYsMCwKKyAgICAwLDAsMjUwLDIsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTA5LDExMSwKKyAgICAxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDc4LDk5LDQsMCwwLDAsMCwKKyAgICAwLDAsMCw0LDAsMCwwLDUsMCwwLDAsNjcsMCwwLDAsMTE1LAorICAgIDM0LDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDExNCwyNiwxMTYsMiwKKyAgICAxMjQsMSwxMjQsMCwxMDAsMSwxMDAsMiwxNDEsMyw4MywwLDExMCw0LDEwMCwwLAorICAgIDgzLDAsMTAwLDAsODMsMCw0MSwzLDc4LDkwLDYsMTAyLDExNCwxMTEsMTIyLDEwMSwKKyAgICAxMTAsNDEsMSwxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA3NSwwLDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwxMTQsMTQzLDAsMCwwLAorICAgIDExNCw3MSwwLDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKKyAgICAwLDAsMCwzLDMsMCwwLDExNSw2LDAsMCwwLDAsMiwxMCwxLAorICAgIDE2LDIsMTIyLDI0LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSw5OSwzLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwyLDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSwxOCwwLDAsMCwxMTYsMCwxMDYsMSwxMjQsMSwxMzEsMSwxMTQsMTQsCisgICAgMTI0LDAsODMsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDkzLDcwLDEwNSwxMTAsMTAwLAorICAgIDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAorICAgIDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSwKKyAgICA5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw0MCw0MSwzMiwxMDUsMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCw0MSwyLDExNCw0NiwwLDAsCisgICAgMCwxMTQsNzUsMCwwLDAsNDEsMywxMTQsMTQzLDAsMCwwLDExNCw3MSwwLAorICAgIDAsMCwxMTQsMTQ0LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMTE0LDExLDAsMCwwLDExNCwxNDcsMCwwLDAsMTAsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw3LDEyMiwyNiw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwKKyAgICAxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAorICAgIDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsCisgICAgMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCwKKyAgICAxMCwwLDAsMCw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDgyLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMzQsMCwwLDAsMTksMywwLDAsMTE1LDAsMCwwLDAsMTIyLDI4LDcwLAorICAgIDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDk5LDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLAorICAgIDExNSw2NCwwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMjUsMSwxMTYsMiwxMDYsCisgICAgMywxMjQsMSwxMzEsMSwxMTUsMzYsMTE2LDQsMTAwLDEsMTA2LDUsMTI0LDEsMTMxLAorICAgIDEsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLDEsMTE2LDYsMTE2LDIsMTA2LDcsMTI0LAorICAgIDEsMTMxLDIsMTI1LDIsMTE2LDgsMTI0LDIsMTI0LDAsMTA2LDksMTMxLDIsMSwKKyAgICAwLDEwMCwwLDgzLDAsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLDExNCwxNSwwLDAsMCw0MSwxMCwxMTQsODksCisgICAgMCwwLDAsMTE0LDE1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNzUsMCwKKyAgICAwLDAsMTE0LDcwLDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsNTgsMCwwLAorICAgIDAsMjE4LDE3LDEwMywxMDEsMTE2LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMSw5OCwKKyAgICAxMDYsMTAxLDk5LDExNiwyMTgsNCwxMDEsMTIwLDEwMSw5OSwxMTQsNywwLDAsMCw0MSwKKyAgICAzLDExNCw4MywwLDAsMCwxMTQsMTUsMCwwLDAsMjE4LDQsOTksMTExLDEwMCwKKyAgICAxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsCisgICAgMTE0LDEzNSwwLDAsMCwyMywzLDAsMCwxMTUsMTIsMCwwLDAsMCwyLAorICAgIDgsMSwxMCwxLDEwLDEsOCwxLDEyLDEsMTIyLDI2LDcwLDExNCwxMTEsMTIyLAorICAgIDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LAorICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLAorICAgIDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMSwxMjIsOTUsNzYsMTExLAorICAgIDk3LDEwMCwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsCiAgICAgMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwxMDQsMTA1LAogICAgIDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwKLSAgICAxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDIsMTA1LDExMCwKLSAgICAxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsCi0gICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsNDEsMiwxMTQsNTcsCi0gICAgMCwwLDAsMTE0LDgyLDAsMCwwLDQxLDMsMTE0LDE1MSwwLDAsMCwxMTQsCi0gICAgNzgsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLAotICAgIDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU1LDAsMCwwLDI4LDMsMCwKLSAgICAwLDExNSwyLDAsMCwwLDAsNywxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCwKLSAgICA3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsCi0gICAgMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKLSAgICAwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsCi0gICAgMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0NiwKLSAgICA3OCwxMTQsMTAsMCwwLDAsNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw4OCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsCi0gICAgMCwxMTQsMTM4LDAsMCwwLDM3LDMsMCwwLDExNSwwLDAsMCwwLDEyMiwKLSAgICAyOCw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKLSAgICA5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAotICAgIDAsMCwxMTUsOTIsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEwNiwxLDAsCi0gICAgMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMzEsMSwwLDExNSwKLSAgICA1NCwwLDExNiw0LDAsMTAwLDEsMCwxMDYsNSwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsMSwxMzAsMSwwLDExNiw2LDAsCi0gICAgMTE2LDIsMCwxMDYsNywwLDEyNCwxLDAsMTMxLDIsMCwxMjUsMiwwLDExNiwKLSAgICA4LDAsMTI0LDIsMCwxMjQsMCwwLDEwNiw5LDAsMTMxLDIsMCwxLDEwMCwKLSAgICAwLDAsODMsNDEsMyw3OCwxMjIsMjcsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw5NywzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsMTUsMCwwLDAsNDEsMTAsMTE0LDk1LDAsMCwwLDExNCwKLSAgICAxNSwwLDAsMCwxMTQsNTcsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCw3NywKLSAgICAwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LDY1LDAsMCwwLDIxOCwxNywxMDMsCi0gICAgMTAxLDExNiw5NSwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCw5NSwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsCi0gICAgMjE4LDQsMTAxLDEyMCwxMDEsOTksMTE0LDcsMCwwLDAsNDEsMywxMTQsODksMCwKLSAgICAwLDAsMTE0LDE1LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxMzksMCwwLAotICAgIDAsNDEsMywwLDAsMTE1LDEyLDAsMCwwLDAsMiwxMiwxLDE1LDEsCi0gICAgMTgsMSw5LDEsMTgsMSwxMjIsMjYsNzAsMTE0LDExMSwxMjIsMTAxLDExMCw3MywxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTMxLDIsMCw4Myw0MSwxLDEyMiw5NSw3NiwxMTEsOTcsCi0gICAgMTAwLDMyLDk3LDMyLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LAotICAgIDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKLSAgICA5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LAotICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LDkwLAotICAgIDAsMCwwLDQxLDIsMTE0LDE1MSwwLDAsMCwxMTQsNzgsMCwwLDAsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDE0NiwKLSAgICAwLDAsMCw1MCwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLDI2LAotICAgIDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDEzLDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMjQsMSwwLDEzMSwxLDAsCi0gICAgODMsNDEsMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKLSAgICAxMDEsNDYsNDEsMiwxMTQsNTcsMCwwLDAsMTE0LDE2MiwwLDAsMCw0MSwyLAotICAgIDExNCwxNTEsMCwwLDAsMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwxNTYsMCwwLDAsNTksMywKLSAgICAwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiwKLSAgICA5NywxMTUsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsCi0gICAgNDEsMiwxMTQsMTUxLDAsMCwwLDExNCw3OCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTU3LDAsMCwwLAotICAgIDY1LDMsMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsCi0gICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDgzLDQxLDEsMTIyLAotICAgIDQ2LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDIsMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwKLSAgICAyLDExNCw1NywwLDAsMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsCi0gICAgMTEwLDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNTEsMCwwLDAsCi0gICAgMTE0LDc4LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAotICAgIDExLDAsMCwwLDExNCwxMDksMCwwLDAsNzEsMywwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCw0LDEyMiwyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwKLSAgICAxNiwxMTQsMSwwLDAsMCwxMTQsMCwwLDAsMCwxMTQsMiwwLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw5MiwwLDAsMCwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCwxNTQsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTM4LAotICAgIDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsODQsMCwKLSAgICAwLDAsMTE0LDE1NiwwLDAsMCwxMTQsMTU3LDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDExNCwxNjAsMCwwLDAsMywzLDAsMCwxMTUsMzAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTgsOSwzLDEsMjEsNiwzLDEsMTgsCi0gICAgOCwxOCw0LDE4LDksMTgsOSwzLDEsMjEsNSwzLDEsMjEsNSwzLAotICAgIDEsMTE0LDE2MCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSw0NiwwLDAsMCwKLSAgICAxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLAotICAgIDMsMCwxMDAsMiwwLDEwMCwzLDAsMTMyLDAsMCw5MCw0LDAsMTAwLDQsCi0gICAgMCwxMDAsNSwwLDEzMiwwLDAsOTAsNSwwLDEwMCw2LDAsODMsNDEsNywKLSAgICAyMTgsMTgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMjAsMTE2LDEyMiwzNiw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwzMiwxMDksOTcsCi0gICAgMTEwLDk3LDEwMywxMDEsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDEwNSwxMDksCi0gICAgMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDk5LDEsMCwwLDAsMCwKLSAgICAwLDAsMCwxLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LAotICAgIDE0LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLAotICAgIDIsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsNDEsMSwxMTQsMTksMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMTE0LDIzLDAsMCwwLDg0LDMsMCwwLDExNSwyLDAsMCwwLDAsCi0gICAgMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LDY3LDExMSwKLSAgICAxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsOTUsOTksCi0gICAgNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEzMSwKLSAgICAwLDAsMSwxMDAsMSwwLDgzLDQxLDIsMTIyLDYwLDgyLDEwMSwxMDgsMTAxLDk3LAorICAgIDEwMSw5OSw5NywxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLAorICAgIDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsCisgICAgOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDQxLDEsMTE0LAorICAgIDg0LDAsMCwwLDQxLDIsMTE0LDE0MywwLDAsMCwxMTQsNzEsMCwwLDAsCisgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LAorICAgIDEzOCwwLDAsMCwzMiwzLDAsMCwxMTUsMiwwLDAsMCwwLDcsMTIyLAorICAgIDI2LDcwLDExNCwxMTEsMTIyLDEwMSwxMTAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDQ2LAorICAgIDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk5LDIsMCwwLDAsCisgICAgMCwwLDAsMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwxLDEzMSwxLDgzLDAsNDEsCisgICAgMSwxMjIsNDUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsCisgICAgMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsCisgICAgNDEsMiwxMTQsNDYsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSwyLDExNCwxNDMsCisgICAgMCwwLDAsMTE0LDcxLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDExNCwxNDgsMCwwLDAsNDEsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCw0LDEyMiwyMyw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLAorICAgIDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwKKyAgICAwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwKKyAgICAxMjIsNTQsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsCisgICAgMzIsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAorICAgIDEwMCwxMTEsMzIsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsMTAsMCwwLDAsNDEsMiwKKyAgICAxMTQsMTQzLDAsMCwwLDExNCw3MSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTQ5LDAsMCwwLDQ3LDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsNCwxMjIsMjUsNzAsMTE0LDExMSwxMjIsMTAxLAorICAgIDExMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwKKyAgICAxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMjQsMSwxMzEsMSw4MywwLDQxLDEsMTIyLDQ2LDgyLDEwMSwxMTYsMTE3LAorICAgIDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsCisgICAgMTE0LDExMSwxMjIsMTAxLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLAorICAgIDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw0MSwyLDExNCw0NiwwLDAsCisgICAgMCw5MCwxNywxMDUsMTE1LDk1LDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw0MSwyLDExNCwxNDMsMCwwLDAsMTE0LDcxLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDExNCwKKyAgICAxMDUsMCwwLDAsNTMsMywwLDAsMTE1LDIsMCwwLDAsMCw0LDEyMiwKKyAgICAyNSw3MCwxMTQsMTExLDEyMiwxMDEsMTEwLDczLDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLDExNCw0NiwKKyAgICAxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0MSwyLDc4LDc4LDQxLDEsCisgICAgNzgsNDEsMTYsMTE0LDEsMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwKKyAgICAwLDAsMTE0LDMsMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODYsMCwwLAorICAgIDAsMTE0LDE1MSwwLDAsMCwxMTQsMTQ2LDAsMCwwLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDEzNCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwxMzgsMCwwLDAsMTE0LAorICAgIDc3LDAsMCwwLDExNCwxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsMTA1LAorICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsCisgICAgMCwwLDExNCwxMSwwLDAsMCwxMTQsMTUyLDAsMCwwLDI0MSwyLDAsMCwKKyAgICAxMTUsMzAsMCwwLDAsOCw3LDQsMiwxMiw5LDIsMSwxMiw2LDIsCisgICAgMSwxMiw4LDEyLDQsMTIsOSwxMiw5LDIsMSwxNCw1LDIsMSwxNCwKKyAgICA1LDIsMSwxMTQsMTUyLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDIsMCwwLDAsNjQsMCwwLDAsMTE1LDMyLDAsCisgICAgMCwwLDEwMSwwLDkwLDEsMTAwLDAsOTAsMiwxMDAsMSw5MCwzLDEwMCwyLAorICAgIDEwMCwzLDEzMiwwLDkwLDQsMTAwLDQsMTAwLDUsMTMyLDAsOTAsNSwxMDAsNiwKKyAgICA4MywwLDQxLDcsMjE4LDE4LDk1LDczLDEwOSwxMTIsMTExLDExNCwxMTYsNzYsMTExLDk5LAorICAgIDEwNyw2NywxMTEsMTEwLDExNiwxMDEsMTIwLDExNiwxMjIsMzYsNjcsMTExLDExMCwxMTYsMTAxLDEyMCwKKyAgICAxMTYsMzIsMTA5LDk3LDExMCw5NywxMDMsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw5OSwxLAorICAgIDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwxLDAsMCwwLDY3LAorICAgIDAsMCwwLDExNSwxMiwwLDAsMCwxMTYsMCwxMDYsMSwxMzEsMCwxLDAsCisgICAgMTAwLDEsODMsMCw0MSwyLDEyMiwyNCw2NSw5OSwxMTMsMTE3LDEwNSwxMTQsMTAxLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LAorICAgIDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwxMzcsMCwwLDAsNDEsMSwxMTQsCisgICAgMjYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsCisgICAgMCwwLDAsMTE0LDQ4LDAsMCwwLDY2LDMsMCwwLDExNSwyLDAsMCwKKyAgICAwLDAsMiwxMjIsMjgsOTUsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw3NiwxMTEsOTksMTA3LAorICAgIDY3LDExMSwxMTAsMTE2LDEwMSwxMjAsMTE2LDQ2LDk1LDk1LDEwMSwxMTAsMTE2LDEwMSwxMTQsOTUsCisgICAgOTUsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsMSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTA2LDEsMTMxLAorICAgIDAsMSwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsNjAsODIsMTAxLDEwOCwxMDEsOTcsCiAgICAgMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDgsMTExLAogICAgIDk5LDEwNywzMiwxMTQsMTAxLDEwMyw5NywxMTQsMTAwLDEwOCwxMDEsMTE1LDExNSwzMiwxMTEsMTAyLAogICAgIDMyLDk3LDExMCwxMjEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMDEsMTIwLDk5LDEwMSwKLSAgICAxMTIsMTE2LDEwNSwxMTEsMTEwLDExNSw0Niw3OCw0MSwyLDExNCw1NywwLDAsMCwxMTQsCi0gICAgNTgsMCwwLDAsNDEsNCwxMTQsMTksMCwwLDAsOTAsOCwxMDEsMTIwLDk5LAorICAgIDExMiwxMTYsMTA1LDExMSwxMTAsMTE1LDQ2LDc4LDQxLDIsMTE0LDQ2LDAsMCwwLDExNCwKKyAgICA0NywwLDAsMCw0MSw0LDExNCwyNiwwLDAsMCw5MCw4LDEwMSwxMjAsOTksCiAgICAgOTUsMTE2LDEyMSwxMTIsMTAxLDkwLDksMTAxLDEyMCw5OSw5NSwxMTgsOTcsMTA4LDExNywxMDEsCiAgICAgOTAsMTMsMTAxLDEyMCw5OSw5NSwxMTYsMTE0LDk3LDk5LDEwMSw5OCw5Nyw5OSwxMDcsMTE0LAotICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMTE0LDMwLAotICAgIDAsMCwwLDg4LDMsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMjcsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsNTAsCisgICAgMCwwLDAsNzAsMywwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwyNywKICAgICA5NSw3MywxMDksMTEyLDExMSwxMTQsMTE2LDc2LDExMSw5OSwxMDcsNjcsMTExLDExMCwxMTYsMTAxLAogICAgIDEyMCwxMTYsNDYsOTUsOTUsMTAxLDEyMCwxMDUsMTE2LDk1LDk1LDc4LDQxLDYsMTE0LDEsCiAgICAgMCwwLDAsMTE0LDAsMCwwLDAsMTE0LDIsMCwwLDAsMTE0LDMsMCwKLSAgICAwLDAsMTE0LDIzLDAsMCwwLDExNCwzMCwwLDAsMCwxMTQsMTAsMCwwLAorICAgIDAsMCwxMTQsNDgsMCwwLDAsMTE0LDUwLDAsMCwwLDExNCwxMCwwLDAsCiAgICAgMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwKLSAgICAxMTQsMTY1LDAsMCwwLDgwLDMsMCwwLDExNSw2LDAsMCwwLDEyLDIsCi0gICAgNiwyLDEyLDQsMTE0LDE2NSwwLDAsMCw5OSwzLDAsMCwwLDAsMCwKLSAgICAwLDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4OCwKLSAgICAwLDAsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDEsMCwxMjQsMiwwLDEwMCwKLSAgICAyLDAsMjQsMTMxLDIsMCwxMjUsMywwLDExNiwxLDAsMTI0LDMsMCwxMzEsCi0gICAgMSwwLDEyNCwyLDAsMTA3LDAsMCwxMTQsNTIsMCwxMTYsMiwwLDEwMCwzLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwzLDAsMTAwLDQsMCwyNSwxMjUsNCwKLSAgICAwLDEyNCwwLDAsMTE0LDg0LDAsMTAwLDUsMCwxMDYsMywwLDEyNCw0LDAsCi0gICAgMTI0LDAsMCwxMzEsMiwwLDgzLDEyNCw0LDAsODMsNDEsNiwxMjIsNTAsODIsCi0gICAgMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsOTcsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsCi0gICAgMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExNiwxMTEsCi0gICAgMzIsOTcsMTEwLDMyLDk3LDk4LDExNSwxMTEsMTA4LDExNywxMTYsMTAxLDMyLDExMSwxMTAsMTAxLAotICAgIDQ2LDExNCwxMjEsMCwwLDAsMTE0LDQ1LDAsMCwwLDEyMiw1MCw5NywxMTYsMTE2LAotICAgIDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwKLSAgICAxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OCwxMDEsMTIxLDExMSwxMTAsMTAwLDMyLDExNiwxMTEsCi0gICAgMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDExNCwKLSAgICAzMywwLDAsMCwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsNDEsNCwyMTgsNiwxMTQsCi0gICAgMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMywxMDgsMTAxLDExMCwyMTgsMTAsODYsOTcsMTA4LDExNywKLSAgICAxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCw0MSw1LDExNCwxNSwwLAotICAgIDAsMCwyMTgsNywxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMjE4LDUsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCw5MCw0LDk4LDEwNSwxMTYsMTE1LDkwLDQsOTgsOTcsMTE1LDEwMSwxMTQsMTAsCi0gICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsCi0gICAgMTE0LDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDk1LDExMCw5NywxMDksMTAxLDkzLDMsMCwwLAotICAgIDExNSwxMCwwLDAsMCwwLDIsMjIsMSwxOCwxLDEyLDEsMTAsMSwxMTQsCi0gICAgMTcxLDAsMCwwLDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwKLSAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDQ3LDAsMCwwLDEyNCwwLAotICAgIDAsMTA2LDAsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLAotICAgIDEyNCwzLDAsMTAwLDAsMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwwLDAsODMsCi0gICAgMTE2LDEsMCwxMjQsMSwwLDEyNCwzLDAsMTMxLDIsMCw4Myw0MSwxLDc4LAotICAgIDQxLDIsMTE0LDE1NSwwLDAsMCwxMTQsODUsMCwwLDAsNDEsNCwyMTgsNiwKLSAgICAxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwKLSAgICAxMTQsOTksMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsCi0gICAgMTEsMCwwLDAsMjE4LDE3LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwKLSAgICA5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsMTAyLDMsMCwwLDExNSw4LDAsMCwwLAotICAgIDAsMywxOCwxLDEyLDEsNCwxLDExNCwxNzMsMCwwLDAsOTksMywwLAotICAgIDAsMCwwLDAsMCwwLDksMCwwLDAsMjcsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDQyLDEsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLAotICAgIDEwNyw5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLAotICAgIDExNiwyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLAotICAgIDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwwLDEwNyw2LDAsMTI1LDMsMCwxMjAsCi0gICAgMjM1LDAsMTE2LDAsMCwxMDYsMSwwLDY4LDkzLDIyMCwwLDEyNSw0LDAsMTE2LAotICAgIDYsMCwxMzEsMCwwLDE0Myw5MCwwLDEsMTIxLDEzLDAsMTI0LDQsMCwxMDYsCi0gICAgNywwLDEyNSw1LDAsODcsMTEwLDUxLDAsNCwxMTYsOCwwLDEwNywxMCwwLAotICAgIDExNCwxNDgsMCwxLDEsMSwxMTYsOSwwLDEyNCw0LDAsMTI0LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwzLDAsMTI1LDYsMCwxMjQsNiwwLDEwMCwxLDAsMTA3LDgsCi0gICAgMCwxMTQsMTQ0LDAsMTE5LDY2LDAsODksMTEwLDE5LDAsODgsMTI0LDUsMCwxMjQsCi0gICAgMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSw2LDAsODcsMTAwLAotICAgIDEsMCw4MSw4Miw4OCwxMjQsNiwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNjYsCi0gICAgMCwxMjQsMywwLDEyLDExNCwyNiwxLDEyNCwwLDAsMTE2LDAsMCwxMDYsNSwKLSAgICAwLDEwNyw2LDAsMTE0LDI2LDEsMTE2LDAsMCwxMDYsNSwwLDEyNCwwLDAsCi0gICAgMjUsMTI1LDcsMCwxMjEsMTMsMCwxMjQsNywwLDEwNiwxMCwwLDEyNSw4LDAsCi0gICAgODcsMTEwLDIyLDAsNCwxMTYsOCwwLDEwNywxMCwwLDExNCwyLDEsMSwxLAotICAgIDEsMTI0LDYsMCw4Myw4OSwxMTMsMzAsMSw4OCwxMjQsOCwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsMTksMSwxMjQsNiwwLDgzLDEyNCw4LDAsODMsMTEzLDY2LAotICAgIDAsMTI0LDYsMCw4MywxMTMsNjYsMCw4NywxMDAsMSwwLDgzLDEwMCwxLDAsCi0gICAgODMsNDEsMywxMjIsMjMsNzAsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMzksMTE1LDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsNzgsMTIyLDIyLDExNSwKLSAgICAxMjEsMTE1LDQ2LDEwOSwxMDEsMTE2LDk3LDk1LDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSwxMSwxMTQsMTQsMCwwLDAsMjE4LDksMTA5LDEwMSwKLSAgICAxMTYsOTcsOTUsMTEyLDk3LDExNiwxMDQsMTE0LDE0MSwwLDAsMCwxMTQsMTQyLDAsMCwKLSAgICAwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCi0gICAgMTE0LDIxLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsCi0gICAgOTYsMCwwLDAsMTE0LDE3MywwLDAsMCwxMTQsOTUsMCwwLDAsNDEsOSwKLSAgICAxMTQsMTUsMCwwLDAsMTE0LDE1MiwwLDAsMCwxMTQsMTUzLDAsMCwwLDkwLAotICAgIDksMTA1LDExNSw5NSwxMTQsMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDg5LDAsMCwwLDExNCw5NSwKLSAgICAwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLAotICAgIDAsMCwyMTgsMTAsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDExMSwzLAotICAgIDAsMCwxMTUsNDgsMCwwLDAsMCwyLDI1LDEsMTYsNCwxNSwxLDE2LAotICAgIDEsMTAsMSwzLDEsMTMsMSwxMywxLDE4LDEsMTIsMSw4LDIsMjUsCi0gICAgMSwxMiwyLDIyLDEsMTMsMSwzLDEsMTMsMSwxMyw0LDksMiwxMiwKLSAgICAxLDQsMiw3LDIsOCwyLDExNCwxNzYsMCwwLDAsOTksMywwLDAsCi0gICAgMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTg1LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEzMSwKLSAgICAyLDAsMTE1LDQyLDAsMTE2LDIsMCwxMDAsMSwwLDEwNiwzLDAsMTE2LDQsCi0gICAgMCwxMjQsMCwwLDEzMSwxLDAsMTMxLDEsMCwxMzEsMSwwLDEzMCwxLDAsCi0gICAgMTI0LDIsMCwxMDAsMiwwLDEwNywwLDAsMTE0LDY2LDAsMTE2LDUsMCwxMDAsCi0gICAgMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDQsCi0gICAgMCwxMTQsMTUwLDAsMTE2LDAsMCwxMjQsMSwwLDExNiwxLDAsMTMxLDIsMCwKLSAgICAxMTUsMTA4LDAsMTE2LDIsMCwxMDAsNCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsCi0gICAgNDIsMCwxMjQsMSwwLDExNiw2LDAsMTA2LDcsMCwxMDcsNywwLDExNCwxNTAsCi0gICAgMCwxMDAsNSwwLDEyNSwzLDAsMTE2LDgsMCwxMjQsMywwLDEwNiwzLDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMCwwLDEyLAotICAgIDExNCwxODEsMCwxMjQsMiwwLDEwMCwyLDAsMTA3LDIsMCwxMTQsMTgxLDAsMTE2LAotICAgIDUsMCwxMDAsNiwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsNywwLDgzLDQxLAotICAgIDgsMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsMTAxLDM0LDQ2LDEyMiwKLSAgICAzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMDksMTE3LDExNSwKLSAgICAxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsMTE2LDMyLDEyMywxMjUsCi0gICAgMTE0LDMzLDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDEwOSwxMTcsMTE1LAotICAgIDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LDk1LDExMiw5Nyw5OSwKLSAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsMTAxLDExNiwzMiwxMTYsCi0gICAgMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw2MSw4MCw5NywxMTQsMTAxLAotICAgIDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLAotICAgIDExMSwxMTYsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwKLSAgICAxMTYsMzIsMTEyLDEwMSwxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCi0gICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLAotICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDksMjE4LAotICAgIDEwLDEwNSwxMTUsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMjE4LDMsMTE1LDExNiwxMTQsCi0gICAgMjE4LDksODQsMTIxLDExMiwxMDEsNjksMTE0LDExNCwxMTEsMTE0LDExNCw1MCwwLDAsMCwKLSAgICAxMTQsMTMsMCwwLDAsMTE0LDE2OCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LAotICAgIDIxLDAsMCwwLDIxOCwxMSw4MywxMjEsMTE1LDExNiwxMDEsMTA5LDY5LDExNCwxMTQsMTExLAotICAgIDExNCw0MSw0LDExNCwxNSwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwKLSAgICAwLDAsMTE0LDE0NywwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwyMTgsMTMsOTUsMTE1LDk3LDExMCwxMDUsMTE2LDEyMSw5NSwKLSAgICA5OSwxMDQsMTAxLDk5LDEwNywxNTEsMywwLDAsMTE1LDI0LDAsMCwwLDAsMiwKLSAgICAxNSwxLDI3LDEsMTIsMSwxMiwxLDEyLDEsMTUsMSwxNSwxLDE1LDEsCi0gICAgNiwyLDIxLDEsMTksMSwxMTQsMTgxLDAsMCwwLDEyMiwxNiw3OCwxMTEsMzIsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTAwLDMyLDEyMiw0LDEyMywKLSAgICAzMywxMTQsMTI1LDk5LDIsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLAotICAgIDEyLDAsMCwwLDY3LDAsMCwwLDExNSw0MCwxLDAsMCwxMDAsMCwwLAotICAgIDEyNSwyLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMDAsCi0gICAgMiwwLDI1LDEyNSwzLDAsMTI0LDMsMCwxMTQsMTc1LDAsMTI0LDMsMCwxMTYsCi0gICAgMSwwLDEwNiwyLDAsMTA3LDcsMCwxMTQsNTksMCwxMTYsMywwLDEyNCwxLAotICAgIDAsMTI0LDMsMCwxMzEsMiwwLDEsMTI0LDAsMCwxMTYsMSwwLDEwNiwyLAotICAgIDAsMTA3LDYsMCwxMTQsODUsMCwxMTYsMSwwLDEwNiwyLDAsMTI0LDAsMCwKLSAgICAyNSw4MywxMTYsMSwwLDEwNiwyLDAsMTI0LDMsMCwyNSwxMjUsNCwwLDEyMSwKLSAgICAxMywwLDEyNCw0LDAsMTA2LDQsMCwxMjUsMiwwLDg3LDExMCw2MSwwLDQsCi0gICAgMTE2LDUsMCwxMDcsMTAsMCwxMTQsMTc0LDAsMSwxLDEsMTE2LDYsMCwxMDAsCi0gICAgMywwLDIzLDEwNiw3LDAsMTI0LDAsMCwxMjQsMywwLDEzMSwyLDAsMTI1LAotICAgIDUsMCwxMTYsOCwwLDEyNCw1LDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLAotICAgIDEsMTAwLDAsMCwxMzAsMiwwLDg5LDExMCwxLDAsODgsMTE2LDksMCwxMjQsCi0gICAgMCwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLDAsCi0gICAgMCwxMDcsOCwwLDExNCwyMzIsMCwxMTYsOCwwLDExNiw2LDAsMTA2LDcsMCwKLSAgICAxMjQsMCwwLDEzMSwxLDAsMTAwLDQsMCwxMjQsMCwwLDEzMSwxLDEsMTMwLAotICAgIDEsMCwxMTAsMTIsMCwxMTYsMTAsMCwxMjQsNiwwLDEzMSwxLDAsMTI1LDcsCi0gICAgMCwxMjQsMywwLDExNCwzNiwxLDExNiwxLDAsMTA2LDIsMCwxMjQsMywwLAotICAgIDI1LDEyNSw0LDAsMTE2LDExLDAsMTI0LDQsMCwxMjQsMCwwLDEwNiwwLDAsCi0gICAgMTAwLDEsMCwxMzEsMSwwLDEwMCw1LDAsMjUsMTI0LDcsMCwxMzEsMywwLAotICAgIDEsMTI0LDcsMCw4Myw0MSw2LDc4LDExNCwxMjEsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDEyMiwyMyw1OSwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTUsMCwwLDAsCi0gICAgMTE0LDE0MCwwLDAsMCw0MSwxMiwxMTQsMTIyLDAsMCwwLDExNCwxNCwwLDAsCi0gICAgMCwxMTQsMjEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCwxMzEsMCwwLDAsCi0gICAgMTE0LDk2LDAsMCwwLDIxOCw4LDk1LDY5LDgyLDgyLDk1LDc3LDgzLDcxLDExNCwKLSAgICA1MCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTQ5LAotICAgIDAsMCwwLDExNCw1LDAsMCwwLDQxLDgsMTE0LDE1LDAsMCwwLDIxOCwKLSAgICA3LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDExNCwxNTIsMCwwLDAsMTE0LDEyMywwLAotICAgIDAsMCw5MCwxMywxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDExNCwxNDcsMCwwLDAsMTE0LDg4LDAsMCwwLDExNCw4OSwwLDAsMCwKKyAgICAxMTQsMTU3LDAsMCwwLDYyLDMsMCwwLDExNSw2LDAsMCwwLDgsMiwKKyAgICA0LDIsOCw0LDExNCwxNTcsMCwwLDAsOTksMywwLDAsMCwwLDAsCisgICAgMCwwLDUsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNjQsCisgICAgMCwwLDAsMTI0LDEsMTA2LDAsMTAwLDEsMTI0LDIsMTAwLDIsMjQsMCwxMzEsCisgICAgMiwxMjUsMywxMTYsMSwxMjQsMywxMzEsMSwxMjQsMiwxMDcsMCwxMTQsMzYsMTE2LAorICAgIDIsMTAwLDMsMTMxLDEsMTMwLDEsMTI0LDMsMTAwLDQsMjUsMCwxMjUsNCwxMjQsCisgICAgMCwxMTQsNjAsMTAwLDUsMTA2LDMsMTI0LDQsMTI0LDAsMTMxLDIsODMsMCwxMjQsCisgICAgNCw4MywwLDQxLDYsMTIyLDUwLDgyLDEwMSwxMTUsMTExLDEwOCwxMTgsMTAxLDMyLDk3LAorICAgIDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiw5Nyw5OCwxMTUsMTExLAorICAgIDEwOCwxMTcsMTE2LDEwMSwzMiwxMTEsMTEwLDEwMSw0NiwxMTQsMTE3LDAsMCwwLDExNCwzMywKKyAgICAwLDAsMCwxMjIsNTAsOTcsMTE2LDExNiwxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCwzMiwxMTQsCisgICAgMTAxLDEwOCw5NywxMTYsMTA1LDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsOTgsCisgICAgMTAxLDEyMSwxMTEsMTEwLDEwMCwzMiwxMTYsMTExLDExMiw0NSwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAorICAgIDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwxMTQsMTksMCwwLDAsMTIyLDUsMTIzLDEyNSwKKyAgICA0NiwxMjMsMTI1LDQxLDQsMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsMjE4LDMsMTA4LAorICAgIDEwMSwxMTAsMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsCisgICAgMCwwLDAsNDEsNSwxMTQsMTUsMCwwLDAsMjE4LDcsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDIxOCw1LDEwOCwxMDEsMTE4LDEwMSwxMDgsOTAsNCw5OCwxMDUsMTE2LDExNSwKKyAgICA5MCw0LDk4LDk3LDExNSwxMDEsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwKKyAgICAxMTQsMTEsMCwwLDAsMjE4LDEzLDk1LDExNCwxMDEsMTE1LDExMSwxMDgsMTE4LDEwMSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw3NSwzLDAsMCwxMTUsMTAsMCwwLDAsMCwyLDE2LAorICAgIDEsMTIsMSw4LDEsOCwxLDExNCwxNjMsMCwwLDAsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMzQsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLDIsCisgICAgMTI1LDMsMTI0LDMsMTAwLDAsMTA3LDgsMTE0LDI0LDEwMCwwLDgzLDAsMTE2LDEsCisgICAgMTI0LDEsMTI0LDMsMTMxLDIsODMsMCw0MSwxLDc4LDQxLDIsMTE0LDE0NywwLAorICAgIDAsMCwxMTQsNzgsMCwwLDAsNDEsNCwyMTgsNiwxMDIsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTQsMTUsMCwwLDAsMTE0LDE0NCwwLDAsMCwxMTQsOTMsMCwwLDAsCiAgICAgMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LAotICAgIDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LAotICAgIDExNywxMTAsMTA4LDExMSw5OSwxMDcsMTAxLDEwMCwxNzEsMywwLDAsMTE1LDQyLDAsMCwKLSAgICAwLDAsMSw2LDEsMTksMSw2LDEsMTUsMSwxMywyLDE1LDEsMTEsCi0gICAgMSwxMywxLDMsMSwxMywxLDEzLDEsMjIsMSwyNiwxLDE1LDEsMTIsCi0gICAgMSwzMCwyLDEyLDEsNiwyLDEzLDEsMjksMSwxMTQsMTg0LDAsMCwwLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDEwLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwzNywwLDAsMCwxMTYsMCwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxNDMsMTgsMCwxLDExNiwxLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODcsMTAwLDEsMCw4MSw4Miw4OCwxMDAsMSwwLDgzLDQxLAotICAgIDIsMTIyLDU0LDcwLDEwNSwxMTAsMTAwLDMyLDk3LDExMCwxMDAsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsOTcsMTEwLDEwMCwKLSAgICAzMiwxMTQsMTAxLDEwOCwxMDEsOTcsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiwzMiwxMDgsMTExLDk5LDEwNyw0Niw3OCw0MSwyLDExNCw1NCwwLDAsCi0gICAgMCwxMTQsMTg0LDAsMCwwLDQxLDIsMTE0LDE1LDAsMCwwLDExNCwxODMsMCwKLSAgICAwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLAotICAgIDAsMjE4LDE0LDk1LDEwMiwxMDUsMTEwLDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsCi0gICAgMTAwLDE5OCwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsMTMsMSwxMTQsMTg1LAotICAgIDAsMCwwLDExNCwzMywwLDAsMCw5OSwzLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxNjYsMCwKLSAgICAwLDAsMTE2LDAsMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywKLSAgICAwLDEsMTI0LDIsMCwxMDAsMSwwLDEwNyw0LDAsMTE0LDQ2LDAsMTE2LDEsCi0gICAgMCwxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMzEsMywwLDEyNSwwLDAsCi0gICAgMTE2LDIsMCwxMDYsMywwLDEzMSwwLDAsMSwxMjQsMCwwLDExNiw0LDAsCi0gICAgMTA2LDUsMCwxMDcsNywwLDExNCw4NCwwLDExNiw2LDAsMTI0LDAsMCwxMTYsCi0gICAgNywwLDEzMSwyLDAsODMsMTE2LDQsMCwxMDYsNSwwLDEyNCwwLDAsMjUsCi0gICAgMTI1LDMsMCwxMjQsMywwLDEwMCwyLDAsMTA3LDgsMCwxMTQsMTUyLDAsMTE2LAotICAgIDIsMCwxMDYsOCwwLDEzMSwwLDAsMSwxMDAsMywwLDEwNiw5LDAsMTI0LAotICAgIDAsMCwxMzEsMSwwLDEyNSw0LDAsMTE2LDEwLDAsMTI0LDQsMCwxMDAsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMSwxMzAsMSwwLDExNiwxMSwwLDEyNCwwLDAsCi0gICAgMTMxLDEsMCwxLDEyNCwzLDAsODMsNDEsNSw5Nyw1MCwxLDAsMCw3MywKLSAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsOTgsOTcsMTE1LDEwMSwKLSAgICAxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTE2LDEwNCwxMDEsMzIsOTksCi0gICAgOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksNDQsMzIsOTcsMTEwLDEwMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsCi0gICAgMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLAotICAgIDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LAotICAgIDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwxMTAsMTExLDEwOSwxMDUsMTEwLDk3LAotICAgIDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDk3LAotICAgIDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwKLSAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5NywKLSAgICAxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDQ2LDMyLDg0LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsMTAxLDExNSwzMiwxMTUsMTAxLDExNiwKLSAgICAxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LAotICAgIDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTQsMzMsMCwwLDAsNzgsMTIyLDQwLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwxMDEsMTAwLDU5LDMyLDc4LDExMSwKLSAgICAxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDExNCwxNSwwLDAsMCw0MSwxMiwxMTQsMTgxLDAsMCwwLDExNCwxNzEsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDExNCwxNDUsMCwwLDAsMTE0LDE0LDAsMCwKLSAgICAwLDExNCwyMSwwLDAsMCwxMTQsMTg1LDAsMCwwLDIxOCwxMSw5NSwxMDMsOTksCi0gICAgMTAwLDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNCw1OCwwLDAsMCwxMTQsNTAsMCwKLSAgICAwLDAsMTE0LDc3LDAsMCwwLDExNCw2MywwLDAsMCw0MSw1LDExNCwxNSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDg5LDAsCi0gICAgMCwwLDExNCw3NCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKLSAgICAwLDExNCwxMSwwLDAsMCwxMTQsMTg2LDAsMCwwLDIwNCwzLDAsMCwxMTUsCi0gICAgMjgsMCwwLDAsMCw5LDE2LDEsMTIsMSwxOCwxLDEwLDEsMTUsMSwKLSAgICAxMywxLDEzLDEsMTIsMSwxMCwxLDYsMSw5LDEsMTgsMSwxMCwxLAotICAgIDExNCwxODYsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDIzOSwwLDAsMCwxMTYsCi0gICAgMCwwLDEyNCwwLDAsMTAwLDEsMCwxMzEsMiwwLDExNCwyMzUsMCwxMDAsMiwKLSAgICAwLDEyNCwxLDAsMTA3LDYsMCwxMTQsODMsMCwxMTYsMSwwLDEyNCwxLDAsCi0gICAgMTMxLDEsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LDIsMCwxMDAsMiwwLDEzMSwKLSAgICAxLDAsMSwxMTYsMCwwLDEyNCwwLDAsMTAwLDMsMCwxMzEsMiwwLDExNCwKLSAgICA4MywwLDEyNCwxLDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTMxLDEsCi0gICAgMCwxLDEyMCwxNDksMCwxMjQsMSwwLDY4LDkzLDE0MSwwLDEyNSwzLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEyNCwzLDAsMTMxLDIsMCwxMTUsOTAsMCwxMDAsNCwKLSAgICAwLDEwNiw1LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTMxLDIsMCwKLSAgICAxMjUsNCwwLDEyMSwxNywwLDExNiw3LDAsMTI0LDIsMCwxMjQsNCwwLDEzMSwKLSAgICAyLDAsMSw4NywxMTMsOTAsMCw0LDExNiw4LDAsMTA3LDEwLDAsMTE0LDIzMCwKLSAgICAwLDEsMTI1LDUsMCwxLDEyMiw0NywwLDExNiw5LDAsMTI0LDUsMCwxMzEsCi0gICAgMSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLDAsMTE0LDIwOSwwLDEyNCw1LAotICAgIDAsMTA2LDEyLDAsMTI0LDQsMCwxMDcsMiwwLDExNCwyMDksMCwxMTksOTAsMCwKLSAgICAxMzAsMCwwLDg3LDg5LDEwMCw1LDAsMTAwLDUsMCwxMjUsNSwwLDEyNiw1LAotICAgIDAsODgsMTEzLDkwLDAsODgsMTEzLDkwLDAsODcsMTI0LDAsMCw4Myw0MSw2LAotICAgIDEyMiwyMzgsNzAsMTA1LDEwMywxMTcsMTE0LDEwMSwzMiwxMTEsMTE3LDExNiwzMiwxMTksMTA0LDk3LAotICAgIDExNiwzMiw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw5NSwzMiwxMTUsMTA0LDExMSwKLSAgICAxMTcsMTA4LDEwMCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCw0NiwxMCwxMCwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDMyLDExMiw5NywxMTQsCi0gICAgOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDk5LDk3LDEwOCwxMDgsCi0gICAgOTcsOTgsMTA4LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE2LDk3LDEwNywxMDEsMTE1LAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDExMSwxMDIsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw0NiwzMiw3MywxMTYsMzIsMTA1LDExNSwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTAwLDEwMSw5OSwxMTEsMTE3LDExMiwxMDgsMTAxLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsCi0gICAgOTcsMTE1LDExNSwxMTcsMTA5LDEwNSwxMTAsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKLSAgICAxMDUsOTgsMzksMTE1LDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMDUsCi0gICAgMTE1LDMyLDEwMCwxMDEsMTE1LDEwNSwxMTQsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTQsMTMxLDAsMCwwLDI1MCwxLDQyLDIxOCw3LDk1LDk1LDk3LDEwOCwxMDgsOTUsCi0gICAgOTUsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDc4LDQxLDEzLDExNCw0LDAsMCwwLAotICAgIDExNCwxMzAsMCwwLDAsMjE4LDYsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMjE4LDYsMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMDAsMTE0LDE4OCwwLDAsMCwxMTQsNTAsMCwwLDAsMTE0LAotICAgIDEsMCwwLDAsMTE0LDY1LDAsMCwwLDExNCw3NywwLDAsMCwxMTQsMTc4LAotICAgIDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsMTUsOTUsNjksODIsODIsOTUsNzcsCi0gICAgODMsNzEsOTUsODAsODIsNjksNzAsNzMsODgsMTE0LDE1LDAsMCwwLDQxLDYsCi0gICAgMTE0LDg5LDAsMCwwLDIxOCw4LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMTE0LAotICAgIDE4MywwLDAsMCwyMTgsMSwxMjAsOTAsOSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LAotICAgIDEwOSwxMDEsOTAsMywxMDEsMTIwLDk5LDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLAotICAgIDAsMTE0LDExLDAsMCwwLDIxOCwxNiw5NSwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDk1LAotICAgIDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMjI4LDMsMCwwLDExNSwzNCwwLDAsCi0gICAgMCwwLDEwLDE1LDEsMTIsMSwxMiwxLDEzLDEsMTUsMSwxNiwxLDEzLAotICAgIDEsMTUsMSwyMSwxLDMsMSwxNywxLDE4LDQsMjEsMSwxNSwxLDMsCi0gICAgMSwyNiwxLDExNCwxOTQsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNzIsMCwKLSAgICAwLDAsMTI0LDAsMCwxMDYsMCwwLDEwMCwxLDAsMTMxLDEsMCwxMjUsMSwKLSAgICAwLDEyNCwxLDAsMTAwLDIsMCwxMDcsOCwwLDExNCw2OCwwLDEyNCwwLDAsCi0gICAgMTAwLDMsMCwyNSwxMjUsMSwwLDEwMCw0LDAsMTI0LDAsMCwxMDcsNywwLAotICAgIDExNCw2OCwwLDEyNCwxLDAsMTA2LDEsMCwxMDAsNSwwLDEzMSwxLDAsMTAwLAotICAgIDYsMCwyNSwxMjUsMSwwLDEyNCwxLDAsODMsNDEsNywxMjIsMTY3LDY3LDk3LAotICAgIDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMzIsMTE5LDEwNCw5NywxMTYsMzIsOTUsOTUsMTEyLAotICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLAotICAgIDk4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw5NSw5NSwxMTIsOTcsOTksMTA3LDk3LAotICAgIDEwMywxMDEsOTUsOTUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMDMsMTE3LDk3LDExNCwKLSAgICA5NywxMTAsMTE2LDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDEwNSwxMTAsMTAxLDEwMCwzMiwxMTEsMTE0LDMyLDk5LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCi0gICAgMzIsMTE1LDEwMSwxMTYsMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMCwzMiwzMiwzMiwKLSAgICAzMiwxMTYsMTExLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDMyLDExNiwxMDQsCi0gICAgOTcsMTE2LDMyLDEwNSwxMTYsMTE1LDMyLDExMiwxMTQsMTExLDExMiwxMDEsMTE0LDMyLDExOCw5NywKLSAgICAxMDgsMTE3LDEwMSwzMiwxMDUsMTE1LDMyLDExNywxMTAsMTA3LDExMCwxMTEsMTE5LDExMCw0NiwxMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTQsMTM0LDAsMCwwLDc4LDExNCwxLDAsMCwwLAotICAgIDExNCwxMzEsMCwwLDAsMTE0LDEyMSwwLDAsMCwxMTQsMzMsMCwwLDAsNDEsCi0gICAgMiwxMTQsNDIsMCwwLDAsMTE0LDEyMiwwLDAsMCw0MSwyLDIxOCw3LDEwMywKLSAgICAxMDgsMTExLDk4LDk3LDEwOCwxMTUsMTE0LDE2OSwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTcsOTUsOTksOTcsMTA4LAotICAgIDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSw0LDQsMCwKLSAgICAwLDExNSwxMiwwLDAsMCwwLDcsMTUsMSwxMiwxLDEwLDEsMTIsMSwKLSAgICAxOSwxLDExNCwxOTYsMCwwLDAsOTksNSwwLDAsMCwwLDAsMCwwLAotICAgIDksMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsMjI3LDAsMCwKLSAgICAwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyNywwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw1LDAsMTEwLDU0LDAsMTI0LDEsMCwxMDAsCi0gICAgMiwwLDEwNyw5LDAsMTE0LDQ1LDAsMTI0LDEsMCwxMTAsMywwLDEwNSwwLAotICAgIDAsMTI1LDYsMCwxMTYsMSwwLDEyNCw2LDAsMTMxLDEsMCwxMjUsNywwLAotICAgIDExNiwwLDAsMTI0LDAsMCwxMjQsNywwLDEyNCw0LDAsMTMxLDMsMCwxMjUsCi0gICAgNSwwLDEyNCwzLDAsMTE1LDIwNywwLDEyNCw0LDAsMTAwLDEsMCwxMDcsMiwKLSAgICAwLDExNCwxMjIsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMDAsMywwLAotICAgIDEzMSwxLDAsMTAwLDEsMCwyNSwxMzEsMSwwLDgzLDEyNCwwLDAsMTE1LDEzMiwKLSAgICAwLDEyNCw1LDAsODMsMTE2LDMsMCwxMjQsMCwwLDEzMSwxLDAsMTE2LDMsCi0gICAgMCwxMjQsMCwwLDEwNiwyLDAsMTAwLDMsMCwxMzEsMSwwLDEwMCwxLDAsCi0gICAgMjUsMTMxLDEsMCwyNCwxMjUsOCwwLDExNiw0LDAsMTA2LDUsMCwxMjQsNSwKLSAgICAwLDEwNiw2LDAsMTAwLDIsMCwxMTYsMywwLDEyNCw1LDAsMTA2LDYsMCwKLSAgICAxMzEsMSwwLDEyNCw4LDAsMjQsMTMzLDIsMCwyNSwyNSw4MywxMTAsMTYsMCwKLSAgICAxMTYsNywwLDEyNCw1LDAsMTI0LDMsMCwxMTYsMCwwLDEzMSwzLDAsODMsCi0gICAgMTAwLDIsMCw4Myw0MSw0LDk3LDIxNSwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDg0LDEwNCwxMDEsMzIsMzksMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDExNSwzOSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwxMDAsMzIsCi0gICAgMTE2LDExMSwzMiwxMDUsMTEwLDEwMiwxMDEsMTE0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTEsOTksOTksCi0gICAgMTE3LDExNCwxMTQsMTA1LDExMCwxMDMsMzIsMTAyLDExNCwxMTEsMTA5LDEwLDMyLDMyLDMyLDMyLAotICAgIDExNiwxMTEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwzMiwxMTQsMTAxLDEwOCw5NywxMTYsMTA1LAotICAgIDExOCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTE1LDQ2LDMyLDg0LDEwNCwxMDEsMzIsCi0gICAgMzksMTA4LDExMSw5OSw5NywxMDgsMTE1LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAotICAgIDExNiwzMiwxMDUsMTE1LDMyLDEwNSwxMDMsMTEwLDExMSwxMTQsMTAxLDEwMCw0NiwzMiw4NCwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDM5LDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsMzksCi0gICAgMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCi0gICAgMTA1LDEwMSwxMTUsMzIsMTE5LDEwNCw5NywxMTYsMzIsMTE1LDEwNCwxMTEsMTE3LDEwOCwxMDAsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiwzMiw5NywxMTUsMzIsOTcsMTE2LDExNiwxMTQsMTA1LDk4LDExNywKLSAgICAxMTYsMTAxLDExNSwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDUsMTA5LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDEsMTAwLDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsCi0gICAgMTA5LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLAotICAgIDYwLDEwMiwxMTQsMTExLDEwOSwxMDgsMTA1LDExNSwxMTYsNjIsOTYsOTYsNDEsNDYsMzIsMzIsCi0gICAgODQsMTA0LDEwMSwzMiwzOSwxMDgsMTAxLDExOCwxMDEsMTA4LDM5LDEwLDMyLDMyLDMyLDMyLAotICAgIDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsCi0gICAgMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLAotICAgIDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTA1LDEwOSwxMTIsMTExLAotICAgIDExNCwxMTYsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEwNSwxMTAsMzIsOTcsMzIsMTE0LDEwMSwxMDgsCi0gICAgOTcsMTE2LDEwNSwxMTgsMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAotICAgIDMyLDQwLDEwMSw0NiwxMDMsNDYsMzIsOTYsOTYsMTAyLDExNCwxMTEsMTA5LDMyLDQ2LDQ2LAotICAgIDExMiwxMDcsMTAzLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOSwxMTEsMTAwLDk2LDk2LAotICAgIDMyLDExOSwxMTEsMTE3LDEwOCwxMDAsMzIsMTA0LDk3LDExOCwxMDEsMzIsOTcsMzIsMzksMTA4LAotICAgIDEwMSwxMTgsMTAxLDEwOCwzOSwzMiwxMTEsMTAyLDMyLDUwLDQxLDQ2LDEwLDEwLDMyLDMyLAotICAgIDMyLDMyLDExNCwzMywwLDAsMCw3OCwxMTQsMTIxLDAsMCwwLDQxLDgsMTE0LAotICAgIDE4NiwwLDAsMCwxMTQsMTk2LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwKLSAgICAxMTYsMTA1LDExMSwxMTAsMTE0LDE2NywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDIxLAotICAgIDAsMCwwLDExNCwxLDAsMCwwLDExNCwxOTQsMCwwLDAsNDEsOSwxMTQsCi0gICAgMTUsMCwwLDAsMTE0LDE5NSwwLDAsMCwyMTgsNiwxMDgsMTExLDk5LDk3LDEwOCwKLSAgICAxMTUsMTE0LDE5MiwwLDAsMCwxMTQsMTcwLDAsMCwwLDExNCw4OSwwLDAsMCwKLSAgICA5MCw4LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsOTUsMTE0LDE2OSwwLDAsMCw5MCwKLSAgICA3LDk5LDExNywxMTYsOTUsMTExLDEwMiwxMDIsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTEsMCwwLDAsMjE4LDEwLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCi0gICAgMTE2LDk1LDk1LDE5LDQsMCwwLDExNSwyNiwwLDAsMCwwLDExLDEyLDEsCi0gICAgMTUsMiwyNCwxLDEyLDEsMTgsMSw2LDMsMTIsMSwyMywxLDYsMSwKLSAgICA0LDQsMzUsMyw0MCwyLDExNCwxOTksMCwwLDAsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNTMsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsCi0gICAgMCwxMjUsMSwwLDEyNCwxLDAsMTAwLDAsMCwxMDcsOCwwLDExNCw0MywwLAotICAgIDExNiwyLDAsMTAwLDEsMCwxMjQsMCwwLDIzLDEzMSwxLDAsMTMwLDEsMCwKLSAgICAxMTYsMywwLDEyNCwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwyNSwxMTAsCi0gICAgMTExLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDExMCw5NywxMDksMTAxLDEwMCwzMiw0MSw0LDExNCwxNTAsMCwwLDAsMTE0LAotICAgIDE1NCwwLDAsMCwxMTQsNzcsMCwwLDAsMTE0LDE0OSwwLDAsMCw0MSwyLAotICAgIDExNCwxNSwwLDAsMCwxMTQsODgsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwKLSAgICAxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE4LDk1LDk4LDExNywxMDUsMTA4LAotICAgIDExNiwxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSw1NCw0LDAsCi0gICAgMCwxMTUsOCwwLDAsMCwwLDEsMTUsMSwxMiwxLDE2LDEsMTE0LDIwMCwKLSAgICAwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsCi0gICAgMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDc0LDEsMCwwLDEyNCwxLDAsCi0gICAgOTcsMCwwLDEyNCwwLDAsOTcsMSwwLDExNiwyLDAsMTE2LDEsMCwxMzEsCi0gICAgMSwwLDEyNSwyLDAsMTIwLDEyMywwLDExNiwxLDAsMTA2LDMsMCwxMDYsNCwKLSAgICAwLDEzMSwwLDAsNjgsOTMsMTA2LDAsOTIsMiwwLDEyNSwzLDAsMTI1LDQsCi0gICAgMCwxMTYsNSwwLDEyNCw0LDAsMTI0LDIsMCwxMzEsMiwwLDExNCw0MCwwLAotICAgIDEyNCwzLDAsMTE2LDEsMCwxMDYsNiwwLDEwNyw2LDAsMTE0LDkxLDAsMTE2LAotICAgIDcsMCwxMjUsNSwwLDExMCwyNywwLDExNiwwLDAsMTA2LDgsMCwxMjQsMywKLSAgICAwLDEzMSwxLDAsMTE0LDQwLDAsMTE2LDksMCwxMjUsNSwwLDExMCwzLDAsCi0gICAgMTEzLDQwLDAsMTE2LDEwLDAsMTI0LDQsMCwxMjQsNSwwLDEzMSwyLDAsMTI1LAotICAgIDYsMCwxMTYsMTEsMCwxMjQsNiwwLDEyNCw0LDAsMTMxLDIsMCwxLDExMywKLSAgICA0MCwwLDg3LDExNiwxLDAsMTA2LDMsMCwxMTYsMTIsMCwyNSwxMjUsNywwLAotICAgIDEyMCw3MywwLDEwMCw1LDAsNjgsOTMsNjUsMCwxMjUsOCwwLDEyNCw4LDAsCi0gICAgMTE2LDEsMCwxMDYsMywwLDEwNyw3LDAsMTE0LDIwNiwwLDExNiwxMywwLDEyNCwKLSAgICA4LDAsMTMxLDEsMCwxMjUsOSwwLDExMCwxMywwLDExNiwxLDAsMTA2LDMsCi0gICAgMCwxMjQsOCwwLDI1LDEyNSw5LDAsMTE2LDE0LDAsMTI0LDcsMCwxMjQsOCwKLSAgICAwLDEyNCw5LDAsMTMxLDMsMCwxLDExMywxNzAsMCw4NywxMjEsMTYsMCwxMTYsCi0gICAgMTMsMCwxMDAsMiwwLDEzMSwxLDAsMTI1LDEwLDAsODcsMTEwLDI0LDAsNCwKLSAgICAxMTYsMTUsMCwxMDcsMTAsMCwxMTQsMjUsMSwxLDEsMSwxMDAsMywwLDEyNSwKLSAgICAxMCwwLDg5LDExMCwxLDAsODgsMTE2LDE0LDAsMTI0LDcsMCwxMDAsMiwwLAotICAgIDEyNCwxMCwwLDEzMSwzLDAsMSwxMTYsMTMsMCwxMDAsNCwwLDEzMSwxLDAsCi0gICAgMTI1LDExLDAsMTE2LDE0LDAsMTI0LDcsMCwxMDAsNCwwLDEyNCwxMSwwLDEzMSwKLSAgICAzLDAsMSwxMDAsMywwLDgzLDQxLDYsMTIyLDI1MCw4MywxMDEsMTE2LDExNywxMTIsCi0gICAgMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzMiw5OCwxMjEsMzIsMTA1LDEwOSwKLSAgICAxMTIsMTExLDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsOTgsCi0gICAgMTE3LDEwNSwxMDgsMTE2LDQ1LDEwNSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTA1LDExMCwxMDYsMTAxLDk5LDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAotICAgIDEwMSwxMDksMTAsMzIsMzIsMzIsMzIsMTA1LDExMCwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwMywxMDgsMTExLDk4LDk3LDEwOCwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMTUsMzIsMTE1LDEyMSwxMTUsMzIsMTA1LDExNSwKLSAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsOTksOTksMTAxLDExNSwxMTUsMzIsOTcsCi0gICAgMTEwLDEwMCwzMiw5NSwxMDUsMTA5LDExMiwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDExNiwxMTEsMzIsMTA4LDExMSw5NywxMDAsMzIsOTgsMTE3LDEwNSwxMDgsMTE2LDQ1LAotICAgIDEwNSwxMTAsMTAsMzIsMzIsMzIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLAotICAgIDExNiwxMDQsMTExLDExNSwxMDEsMzIsMTE2LDExOSwxMTEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgMTE1LDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTAxLDEyMCwxMTIsMTA4LDEwNSw5OSwKLSAgICAxMDUsMTE2LDEwOCwxMjEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCwzMiwxMDUsMTEwLDQ2LDEwLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNCwxNDEsMCwwLDAsMTE0LDM0LDAsMCwwLDc4LAotICAgIDExNCw2MiwwLDAsMCw0MSwxLDExNCwxNDEsMCwwLDAsNDEsMTYsMTE0LDU3LAotICAgIDAsMCwwLDExNCwxNCwwLDAsMCwxMTQsMTMsMCwwLDAsMTE0LDIxLDAsCi0gICAgMCwwLDIxOCw1LDEwNSwxMTYsMTAxLDEwOSwxMTUsMTE0LDE3NywwLDAsMCwxMTQsNzYsCi0gICAgMCwwLDAsMTE0LDE1MCwwLDAsMCwxMTQsODIsMCwwLDAsMTE0LDE2MCwwLAotICAgIDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsMTE0LDEsMCwwLAotICAgIDAsMTE0LDIwMCwwLDAsMCwxMTQsNSwwLDAsMCwxMTQsNzcsMCwwLDAsCi0gICAgNDEsMTIsMjE4LDEwLDExNSwxMjEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDIxOCwxMSwKLSAgICA5NSwxMDUsMTA5LDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDE1LDAsMCwwLDExNCw4OSwwLAotICAgIDAsMCwxMTQsOTksMCwwLDAsMTE0LDg4LDAsMCwwLDkwLDExLDExNSwxMDEsCi0gICAgMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCwKLSAgICA5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDE0LDExOSwxMDEsOTcsMTA3LDExNCwxMDEsMTAyLDk1LAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCi0gICAgMTE0LDExLDAsMCwwLDIxOCw2LDk1LDExNSwxMDEsMTE2LDExNywxMTIsNjEsNCwwLAotICAgIDAsMTE1LDUwLDAsMCwwLDAsOSw2LDEsNiwzLDEyLDEsMjgsMSwKLSAgICAxNSwxLDE1LDEsOSwxLDE1LDEsOSwyLDMsMSwxNSwxLDE3LDMsCi0gICAgMTMsMSwxMywxLDE1LDEsMTUsMiwxMywxLDIwLDMsMywxLDE2LDEsCi0gICAgMTMsMiwxMSwxLDE2LDMsMTIsMSwxMTQsMjA0LDAsMCwwLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDg3LDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNCwwLAotICAgIDEzMSwxLDAsMSwxMTYsMSwwLDEwNiwyLDAsMTA2LDMsMCwxMTYsNSwwLAotICAgIDEzMSwxLDAsMSwxMDAsMSwwLDEwMCwyLDAsMTA4LDYsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsOTcsNywwLDEyNCwyLDAsMTA2LDgsMCwxMTYsMSwwLDEwNiwKLSAgICA5LDAsMTE2LDEwLDAsMjUsMTMxLDEsMCwxLDEwMCwyLDAsODMsNDEsMywKLSAgICAxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKLSAgICAxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDUsMTA5LDExMiwKLSAgICAxMTEsMTE0LDExNiw0NiwxMTQsMzMsMCwwLDAsNzgsNDEsMTEsMTE0LDIwNCwwLDAsCi0gICAgMCwxMTQsMTQsMCwwLDAsMTE0LDE3NCwwLDAsMCwxMTQsMTEzLDAsMCwwLAotICAgIDExNCwxNTAsMCwwLDAsMTE0LDE2MCwwLDAsMCwyMTgsMjYsOTUsMTAyLDExNCwxMTEsCi0gICAgMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw5NSwxMDEsMTIwLAotICAgIDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExOSwwLDAsMCwyMTgsOCw5NSwxMDUsMTEwLAotICAgIDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsMjEsMCwwLDAsMTE0LDEsMCwwLDAsNDEsCi0gICAgMywxMTQsMjAyLDAsMCwwLDExNCwyMDMsMCwwLDAsMTE0LDIwNSwwLDAsMCwKLSAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsCi0gICAgMjA2LDAsMCwwLDEwOCw0LDAsMCwxMTUsMTIsMCwwLDAsMCwyLDEzLAotICAgIDIsMTYsMSwxNiwzLDEyLDEsNiwxLDExNCwyMDYsMCwwLDAsNDEsNTEsCi0gICAgMTE0LDMsMCwwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTIsMCwwLDAsMTE0LAotICAgIDE2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsNTksMCwwLDAsMTE0LDQxLAotICAgIDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDMyLDAsCi0gICAgMCwwLDExNCw1MywwLDAsMCwxMTQsNTQsMCwwLDAsMTE0LDU2LDAsMCwKLSAgICAwLDExNCw2MywwLDAsMCwxMTQsNjUsMCwwLDAsMTE0LDc1LDAsMCwwLAotICAgIDExNCw4MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDkwLDAsMCwwLDExNCwKLSAgICAxMDEsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMTA2LDAsMCwwLDExNCw4NSwKLSAgICAwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSwKLSAgICA4MCw4NSw3Niw2NSw4NCw2OSwxMTQsMTMyLDAsMCwwLDExNCwxMzcsMCwwLDAsCi0gICAgMTE0LDE0NCwwLDAsMCwxMTQsOTcsMCwwLDAsMTE0LDg2LDAsMCwwLDExNCwKLSAgICAxNDgsMCwwLDAsMTE0LDE0OSwwLDAsMCwxMTQsODcsMCwwLDAsMTE0LDE1MCwKLSAgICAwLDAsMCwxMTQsMTYwLDAsMCwwLDExNCwxNjUsMCwwLDAsMTE0LDE3MSwwLAotICAgIDAsMCwxMTQsMTczLDAsMCwwLDExNCwxNzYsMCwwLDAsMTE0LDE4MSwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCwxODIsMCwwLDAsMTE0LDE4NCwwLDAsMCwKLSAgICAxMTQsMTg1LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDE5NCwwLDAsMCwxMTQsCi0gICAgMTk2LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMjA0LAotICAgIDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMCwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDExLDAsMCwwLDIxOCw4LDYwLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDk2LDAsMCwwLDYsCi0gICAgMTcsNiwyLDEyLDgsMTIsNCwxOSwyMCw2LDIsNiwzLDIyLDQsMTksCi0gICAgNjgsMTksMjEsMTksMTksMTIsMTksMTIsMTksMTIsMTEsMTgsOCwxMiwxMSwxMiwKLSAgICAxMiwxMiwxNiwxMiwzNiwxOSwyNywxOSwxMDEsMjQsMjYsOSwzLDE4LDQ1LDE4LAotICAgIDYwLDEyLDE4LDEyLDE3LDEyLDI1LDEyLDI5LDEyLDIzLDEyLDE2LDE5LDczLDE5LAotICAgIDc3LDE5LDEzLDEyLDksMTIsOSwxNSw0MCwxMiwxNyw2LDEsMTAsMiwxMiwKLSAgICAyNywxMiw2LDE4LDI0LDEyLDMyLDEyLDE1LDI0LDM1LDEyLDcsMTIsNDcsCisgICAgMTcsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk1LDEwOCwxMDEsMTAzLDk3LAorICAgIDk5LDEyMSw4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDMsMTIsMSw4LAorICAgIDEsNCwxLDExNCwxNjUsMCwwLDAsOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDEwLDAsMCwwLDI3LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwKKyAgICAwLDAsMTE2LDAsMTA2LDEsMTI1LDMsMTI0LDMsMTAwLDEsMTA3LDgsMTE0LDIyLAorICAgIDExNiwyLDEwMCwyLDEzMSwxLDEzMCwxLDEyNCwzLDExNSwzOCwxMTYsMywxMDYsNCwKKyAgICAxMDAsMywxMTYsNSwxMzEsMiwxLDAsMTI0LDAsMTE2LDAsMTA2LDYsMTA3LDYsCisgICAgMTI1LDQsMTIwLDE5MCwxMjQsMyw2OCwwLDkzLDE3OCwxMjUsNSwxMTYsNywxMzEsMCwKKyAgICAxNDMsNzIsMSwwLDEyMSwxMCwxMjQsNSwxMDYsOCwxMjUsNiw4NywwLDExMCw0MiwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDExNCwxMTgsMSwwLDEsMCwxLDAsMTE2LDEwLAorICAgIDEyNCw1LDEyNCwwLDEyNCwxLDEzMSwzLDEyNSw3LDEyNCw3LDEwMCwxLDEwNyw4LAorICAgIDExNCwxMTQsMTE5LDU0LDg5LDAsMTEwLDE0LDg4LDAsMTI0LDYsMTI0LDAsMTI0LDEsCisgICAgMTI0LDIsMTMxLDMsMTI1LDcsODcsMCwxMDAsMSw4MSwwLDgyLDAsODgsMCwKKyAgICAxMjQsNywxMDAsMSwxMDcsOSwxMTQsNTQsMTI0LDQsMTIsMCwxMTQsMjI4LDEyNCwwLAorICAgIDExNiwwLDEwNiw2LDEwNyw2LDExNCwyMjgsMTE2LDAsMTA2LDYsMTI0LDAsMjUsMCwKKyAgICAxMjUsOCwxMjEsMTAsMTI0LDgsMTA2LDExLDEyNSw5LDg3LDAsMTEwLDIwLDQsMCwKKyAgICAxMTYsOSwxMDcsMTAsMTE0LDIwNiwxLDAsMSwwLDEsMCwxMjQsNyw4MywwLAorICAgIDg4LDAsMTI0LDksMTAwLDEsMTA3LDgsMTE0LDIyMiwxMjQsNyw4MywwLDExMywyMzIsCisgICAgMTI0LDksODMsMCwxMTMsNTQsMTI0LDcsODMsMCwxMTMsNTQsODcsMCwxMDAsMSwKKyAgICA4MywwLDEwMCwxLDgzLDAsNDEsNCwxMjIsMjEsNzAsMTA1LDExMCwxMDAsMzIsOTcsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExNSwxMTIsMTAxLDk5LDQ2LDc4LAorICAgIDEyMiw1MywxMTUsMTIxLDExNSw0NiwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LDEwNCwzMiwKKyAgICAxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsMzIsCisgICAgMTA1LDExNSwzMiwxMDgsMTA1LDEwNywxMDEsMTA4LDEyMSwzMiwxMTUsMTA0LDExNywxMTYsMTE2LDEwNSwKKyAgICAxMTAsMTAzLDMyLDEwMCwxMTEsMTE5LDExMCwxMjIsMjIsMTE1LDEyMSwxMTUsNDYsMTA5LDEwMSwxMTYsCisgICAgOTcsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTA1LDExNSwzMiwxMDEsMTA5LDExMiwxMTYsMTIxLDQxLAorICAgIDEyLDExNCwxNCwwLDAsMCwyMTgsOSwxMDksMTAxLDExNiw5Nyw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCwxMTQsNzAsMCwwLDAsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsCisgICAgMTE1LDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxMyw3MywxMDksMTEyLDExMSwxMTQsMTE2LDg3LAorICAgIDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE0LDc5LDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDE0NiwwLDAsMCwxMTQsOTAsMCwwLDAsMTE0LDE2NSwwLDAsMCwxMTQsCisgICAgODksMCwwLDAsNDEsMTAsMTE0LDE1LDAsMCwwLDExNCwxNDQsMCwwLDAsCisgICAgMTE0LDE0NSwwLDAsMCwxMTQsMTY2LDAsMCwwLDkwLDksMTA1LDExNSw5NSwxMTQsCisgICAgMTAxLDEwOCwxMTEsOTcsMTAwLDExNCwxNjQsMCwwLDAsMTE0LDE0NiwwLDAsMCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw4OSwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsMTAsOTUsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDkzLDMsMCwwLDExNSw1NCwwLAorICAgIDAsMCwwLDIsNiwxLDgsMiw4LDMsNCwxLDEyLDUsMTAsMSwKKyAgICAxMCwxLDgsMSwyLDEsMTAsMSwxNCwxLDEyLDEsOCwxLDgsMiwKKyAgICAyMiwxLDgsMiwxNiwxLDEwLDEsMiwxLDEwLDEsMTQsNCw2LDIsCisgICAgOCwxLDYsMiw2LDIsOCwyLDExNCwxNzAsMCwwLDAsOTksMywwLAorICAgIDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTQwLDAsMCwwLDExNiwwLDEyNCwwLDExNiwxLDEzMSwyLDExNSwKKyAgICAyOCwxMTYsMiwxMDAsMSwxMDYsMywxMTYsNCwxMjQsMCwxMzEsMSwxMzEsMSwxMzEsCisgICAgMSwxMzAsMSwxMjQsMiwxMDAsMiwxMDcsMCwxMTQsNDQsMTE2LDUsMTAwLDMsMTMxLAorICAgIDEsMTMwLDEsMTI0LDIsMTAwLDIsMTA3LDQsMTE0LDExNCwxMTYsMCwxMjQsMSwxMTYsCisgICAgMSwxMzEsMiwxMTUsNzIsMTE2LDIsMTAwLDQsMTMxLDEsMTMwLDEsMTEwLDQyLDEyNCwKKyAgICAxLDExNSw4NiwxMTYsNiwxMDAsNSwxMzEsMSwxMzAsMSwxMTAsMjgsMTI0LDEsMTE2LAorICAgIDcsMTA2LDgsMTA3LDcsMTE0LDExNCwxMDAsNiwxMjUsMywxMTYsOSwxMjQsMywxMDYsCisgICAgMywxMjQsMSwxMzEsMSwxMzEsMSwxMzAsMSwxMjQsMCwxMiwwLDExNCwxMzYsMTI0LAorICAgIDIsMTAwLDIsMTA3LDIsMTE0LDEzNiwxMTYsNSwxMDAsNywxMzEsMSwxMzAsMSwxMDAsCisgICAgOCw4MywwLDQxLDksMTIyLDI4LDg2LDEwMSwxMTQsMTA1LDEwMiwxMjEsMzIsOTcsMTE0LAorICAgIDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywxMTQsMTAxLDMyLDM0LDExNSw5NywxMTAsCisgICAgMTAxLDM0LDQ2LDEyMiwzMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsMTAxLDMyLDExNSwxMTYsMTE0LDQ0LDMyLDExMCwxMTEsCisgICAgMTE2LDMyLDEyMywxMjUsMTE0LDE5LDAsMCwwLDEyMiwxOCwxMDgsMTAxLDExOCwxMDEsMTA4LAorICAgIDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsNjIsNjEsMzIsNDgsMTIyLDMxLDk1LAorICAgIDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTAsMTExLDExNiwzMiwxMTUsCisgICAgMTAxLDExNiwzMiwxMTYsMTExLDMyLDk3LDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEyMiw1NCwKKyAgICA5NywxMTYsMTE2LDEwMSwxMDksMTEyLDExNiwxMDEsMTAwLDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsCisgICAgMTE4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEwLAorICAgIDExMSwzMiwxMDcsMTEwLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTEyLAorICAgIDk3LDk5LDEwNyw5NywxMDMsMTAxLDEyMiw2MSw4MCw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTEwLDExMSwxMTYsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDEwMCw0NCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTEyLDEwMSwKKyAgICAxMTQsMTAyLDExMSwxMTQsMTA5LDMyLDExNCwxMDEsMTA4LDk3LDExNiwxMDUsMTE4LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMTEsMTE0LDExNiwxMjIsMTcsNjksMTA5LDExMiwxMTYsMTIxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDc4LDQxLDEwLDIxOCwxMCwxMDUsMTE1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw5LDg0LDEyMSwKKyAgICAxMTIsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMzgsMCwwLDAsMTE0LDEzLDAsMCwKKyAgICAwLDExNCwxNjAsMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNCwwLDAsMCwKKyAgICAxMTQsNzksMCwwLDAsMjE4LDExLDgzLDEyMSwxMTUsMTE2LDEwMSwxMDksNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDQxLDQsMTE0LDE1LDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LDE2MiwKKyAgICAwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDExLDAsMCwwLDIxOCwxMyw5NSwxMTUsOTcsMTEwLDEwNSwxMTYsMTIxLAorICAgIDk1LDk5LDEwNCwxMDEsOTksMTA3LDE0MCwzLDAsMCwxMTUsMjgsMCwwLDAsMCwKKyAgICAyLDEwLDEsMTgsMSw4LDEsOCwxLDgsMSwxMCwxLDEwLDEsNCwKKyAgICAxLDEwLDIsMTAsMSw0LDIsMTQsMSwxNCwxLDExNCwxNzUsMCwwLDAsCisgICAgMTIyLDE2LDc4LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKKyAgICAxMDAsMzIsMTIyLDQsMTIzLDMzLDExNCwxMjUsOTksMiwwLDAsMCwwLDAsMCwKKyAgICAwLDgsMCwwLDAsMTIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyMCwwLAorICAgIDAsMCwxMDAsMCwxMjUsMiwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMDAsMiwKKyAgICAyNSwwLDEyNSwzLDEyNCwzLDExNCwxMzQsMTI0LDMsMTE2LDEsMTA2LDIsMTA3LDcsCisgICAgMTE0LDQyLDExNiwzLDEyNCwxLDEyNCwzLDEzMSwyLDEsMCwxMjQsMCwxMTYsMSwKKyAgICAxMDYsMiwxMDcsNiwxMTQsNjIsMTE2LDEsMTA2LDIsMTI0LDAsMjUsMCw4MywwLAorICAgIDExNiwxLDEwNiwyLDEyNCwzLDI1LDAsMTI1LDQsMTIxLDEwLDEyNCw0LDEwNiw0LAorICAgIDEyNSwyLDg3LDAsMTEwLDUwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDEzMiwxLDAsCisgICAgMSwwLDEsMCwxMTYsNiwxMDAsMywyMywwLDEwNiw3LDEyNCwwLDEyNCwzLAorICAgIDEzMSwyLDEyNSw1LDExNiw4LDEyNCw1LDEyNCwwLDEwMCw0LDE0MSwyLDEwMCwwLAorICAgIDEzMCwyLDg5LDAsMTEwLDIsODgsMCwxMTYsOSwxMjQsMCwxMjQsMiwxMzEsMiwKKyAgICAxMjUsNiwxMjQsNiwxMDAsMCwxMDcsOCwxMTQsMTcyLDExNiw4LDExNiw2LDEwNiw3LAorICAgIDEyNCwwLDEzMSwxLDEyNCwwLDEwMCw0LDE0MSwyLDEzMCwxLDExMCw4LDExNiwxMCwKKyAgICAxMjQsNiwxMzEsMSwxMjUsNywxMjQsMywxMTQsMjE2LDExNiwxLDEwNiwyLDEyNCwzLAorICAgIDI1LDAsMTI1LDQsMTE2LDExLDEyNCw0LDEyNCwwLDEwNiwwLDEwMCwxLDEzMSwxLAorICAgIDEwMCw1LDI1LDAsMTI0LDcsMTMxLDMsMSwwLDEyNCw3LDgzLDAsNDEsNiwKKyAgICA3OCwxMTQsMTE3LDAsMCwwLDExNCwxOSwwLDAsMCwxMjIsMjMsNTksMzIsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwxMTIsOTcsOTksCisgICAgMTA3LDk3LDEwMywxMDEsNDEsMSwxMTQsMTUsMCwwLDAsMjMzLDIsMCwwLDAsCisgICAgNDEsMTIsMTE0LDExOCwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwKKyAgICAwLDExNCw1OCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCw5MCwwLDAsMCwKKyAgICAyMTgsOCw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSwxMTQsMzgsMCwwLDAsMjE4LAorICAgIDE5LDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsNzgsMTExLDExNiw3MCwxMTEsMTE3LDExMCwxMDAsNjksCisgICAgMTE0LDExNCwxMTEsMTE0LDExNCwxNzAsMCwwLDAsMTE0LDE0MSwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMCw0MSw4LDExNCwxNSwwLDAsMCwyMTgsNywxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiw5NSwxMTQsMTQ0LDAsMCwwLDExNCwxMTksMCwwLDAsOTAsMTMsMTEyLAorICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTM5LDAsMCwKKyAgICAwLDExNCw4MiwwLDAsMCwxMTQsODMsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSw5NywxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDk1LDExNywxMTAsMTA4LDExMSw5OSwKKyAgICAxMDcsMTAxLDEwMCwxNjMsMywwLDAsMTE1LDQyLDAsMCwwLDAsMSw0LDEsCisgICAgMTQsMSw0LDEsMTAsMSwxMCwyLDEwLDEsMTAsMSwxMCwxLDIsMSwKKyAgICAxMCwxLDE0LDEsMTYsMSwyMCwxLDEwLDEsOCwxLDIwLDIsOCwxLAorICAgIDQsMiwxMCwxLDIyLDEsMTE0LDE4MCwwLDAsMCw5OSwyLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwxMCwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsMzAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTQzLDEyLDEsMCwxMTYsCisgICAgMSwxMjQsMCwxMjQsMSwxMzEsMiw4MywwLDgxLDAsODIsMCw4OCwwLDEwMCwKKyAgICAxLDgzLDAsNDEsMiwxMjIsNTQsNzAsMTA1LDExMCwxMDAsMzIsOTcsMTEwLDEwMCwzMiwKKyAgICAxMDgsMTExLDk3LDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NCwKKyAgICAzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTA4LDEwMSw5NywxMTUsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwOCwxMTEsOTksMTA3LDQ2LDc4LDQxLDIsCisgICAgMTE0LDQyLDAsMCwwLDExNCwxODAsMCwwLDAsNDEsMiwxMTQsMTUsMCwwLAorICAgIDAsMTE0LDE3OSwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLAorICAgIDExNCwxMSwwLDAsMCwyMTgsMTQsOTUsMTAyLDEwNSwxMTAsMTAwLDk1LDk3LDExMCwxMDAsCisgICAgOTUsMTA4LDExMSw5NywxMDAsMTkwLDMsMCwwLDExNSw0LDAsMCwwLDAsMiwKKyAgICAxMCwxLDExNCwxODEsMCwwLDAsMTE0LDE5LDAsMCwwLDk5LDMsMCwwLAorICAgIDAsMCwwLDAsMCw1LDAsMCwwLDQsMCwwLDAsNjcsMCwwLAorICAgIDAsMTE1LDEyMCwwLDAsMCwxMTYsMCwxMjQsMCwxMjQsMSwxMjQsMiwxMzEsMywKKyAgICAxLDAsMTI0LDIsMTAwLDEsMTA3LDQsMTE0LDMyLDExNiwxLDEyNCwwLDEyNCwxLAorICAgIDEyNCwyLDEzMSwzLDEyNSwwLDExNiwyLDEwNiwzLDEzMSwwLDEsMCwxMjQsMCwKKyAgICAxMTYsNCwxMDYsNSwxMDcsNywxMTQsNjAsMTE2LDYsMTI0LDAsMTE2LDcsMTMxLDIsCisgICAgODMsMCwxMTYsNCwxMDYsNSwxMjQsMCwyNSwwLDEyNSwzLDEyNCwzLDEwMCwyLAorICAgIDEwNyw4LDExNCwxMDgsMTE2LDIsMTA2LDgsMTMxLDAsMSwwLDEwMCwzLDEwNiw5LAorICAgIDEyNCwwLDEzMSwxLDEyNSw0LDExNiwxMCwxMjQsNCwxMjQsMCwxMDAsNCwxNDEsMiwKKyAgICAxMzAsMSwxMTYsMTEsMTI0LDAsMTMxLDEsMSwwLDEyNCwzLDgzLDAsNDEsNSwKKyAgICA5Nyw1MCwxLDAsMCw3MywxMDksMTEyLDExMSwxMTQsMTE2LDMyLDk3LDExMCwxMDAsMzIsCisgICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsCisgICAgOTcsMTA5LDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsCisgICAgMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsMTA4LDEwOCwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLAorICAgIDMyLDk4LDEwMSwxMDUsMTEwLDEwMywzMiwxMDksOTcsMTAwLDEwMSwzMiwxMDIsMTE0LDExMSwxMDksCisgICAgNDQsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDgsMTAxLDExOCwxMDEsMTA4LDMyLAorICAgIDk3LDEwMCwxMDYsMTE3LDExNSwxMTYsMTA5LDEwMSwxMTAsMTE2LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDExNCwKKyAgICAxMDEsOTcsMTE2LDEwMSwxMTUsMTE2LDMyLDk5LDExMSwxMDksMTA5LDExMSwxMTAsMzIsMTAwLDEwMSwKKyAgICAxMTAsMTExLDEwOSwxMDUsMTEwLDk3LDExNiwxMTEsMTE0LDMyLDExMSwxMDIsMzIsMTAyLDExNywxMTAsCisgICAgOTksMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwxMDUsMTE2LDEyMSwxMCwzMiwzMiwzMiwzMiw5OCwKKyAgICAxMDEsMTE2LDExOSwxMDEsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwzMiw5NywxMTAsMTAwLDMyLDk1LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsCisgICAgMTE2LDk1LDk1LDQ2LDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwNSwxMTAsOTksMTA4LDExNywxMDAsCisgICAgMTAxLDExNSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsOTUsOTUsMTEyLDk3LDk5LAorICAgIDEwNyw5NywxMDMsMTAxLDk1LDk1LDMyLDEwNSwxMDIsMTAsMzIsMzIsMzIsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDAsMTA1LDEwMCwzMiwxMTAsMTExLDExNiwKKyAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiwxMTQsMTksMCwwLDAsNzgsMTIyLDQwLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExMSwxMDIsMzIsMTIzLDEyNSwzMiwxMDQsOTcsMTA4LDExNiwKKyAgICAxMDEsMTAwLDU5LDMyLDc4LDExMSwxMTAsMTAxLDMyLDEwNSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQxLDEsMTE0LDE1LDAsMCwwLDQxLDEyLAorICAgIDExNCwxNzUsMCwwLDAsMTE0LDE2MywwLDAsMCwxMTQsNDYsMCwwLDAsMTE0LAorICAgIDEzNywwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDc5LDAsMCwwLDExNCwxODEsCisgICAgMCwwLDAsMjE4LDExLDk1LDEwMyw5OSwxMDAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTE0LDQ3LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwKKyAgICA1NiwwLDAsMCw0MSw1LDExNCwxNSwwLDAsMCwxMTQsMTYxLDAsMCwwLAorICAgIDExNCwxNjIsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw2NywwLDAsMCwxMTQsCisgICAgMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwxMTQsMTgyLAorICAgIDAsMCwwLDE5NiwzLDAsMCwxMTUsMjgsMCwwLDAsMCw5LDEyLDEsCisgICAgOCwxLDEyLDEsOCwxLDEwLDEsMTAsMSwxMCwxLDgsMSw4LDEsCisgICAgNCwxLDYsMSwxMiwxLDgsMSwxMTQsMTgyLDAsMCwwLDk5LDMsMCwKKyAgICAwLDAsMCwwLDAsMCw2LDAsMCwwLDE3LDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwxNjQsMCwwLDAsMTE2LDAsMTI0LDAsMTAwLDEsMTMxLDIsMTE0LAorICAgIDE2MCwxMDAsMiwxMjQsMSwxMDcsNiwxMTQsNTgsMTE2LDEsMTI0LDEsMTMxLDEsMTI1LAorICAgIDEsMTI0LDEsMTA2LDIsMTAwLDIsMTMxLDEsMSwwLDExNiwwLDEyNCwwLDEwMCwKKyAgICAzLDEzMSwyLDExNCw1OCwxMjQsMSwxMDYsMywxMjQsMCwxMDYsNCwxMzEsMSwxLAorICAgIDAsMTIwLDEwMCwxMjQsMSw2OCwwLDkzLDkyLDEyNSwzLDExNiwwLDEyNCwwLDEyNCwKKyAgICAzLDEzMSwyLDExNSw2NCwxMDAsNCwxMDYsNSwxMjQsMCwxMDYsNiwxMjQsMywxMzEsCisgICAgMiwxMjUsNCwxMjEsMTQsMTE2LDcsMTI0LDIsMTI0LDQsMTMxLDIsMSwwLDg3LAorICAgIDAsMTEzLDY0LDQsMCwxMTYsOCwxMDcsMTAsMTE0LDE1NCwxLDAsMTI1LDUsMSwKKyAgICAwLDEyMiwyMCwxMjQsNSwxMDYsOSwxMjQsNCwxMDcsMiwxMTQsMTM2LDExOSw2NCwxMzAsCisgICAgMCw4NywwLDg5LDAsMTAwLDUsMTAwLDUsMTI1LDUsMTI2LDUsODgsMCwxMTMsCisgICAgNjQsODgsMCwxMTMsNjQsODcsMCwxMjQsMCw4MywwLDQxLDYsMTIyLDIzOCw3MCwKKyAgICAxMDUsMTAzLDExNywxMTQsMTAxLDMyLDExMSwxMTcsMTE2LDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LAorICAgIDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDk1LDk1LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLAorICAgIDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsOTUsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAorICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsOTcsMzIsOTksOTcsMTA4LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsOTcsMTA3LDEwMSwxMTUsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsMTExLDEwMiwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTYsMTExLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDMyLAorICAgIDczLDExNiwzMiwxMDUsMTE1LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMDAsMzIsMTE2LAorICAgIDExMSwzMiwxMDAsMTAxLDk5LDExMSwxMTcsMTEyLDEwOCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywxMTUsMTE1LAorICAgIDExNywxMDksMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCwzOSwKKyAgICAxMTUsMTAsMzIsMzIsMzIsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwNSwxMTUsMzIsMTAwLAorICAgIDEwMSwxMTUsMTA1LDExNCwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDExNCwxMjcsMCwKKyAgICAwLDAsMjUwLDEsNDIsMjE4LDcsOTUsOTUsOTcsMTA4LDEwOCw5NSw5NSwxMjIsNSwKKyAgICAxMjMsMTI1LDQ2LDEyMywxMjUsNzgsNDEsMTAsMTE0LDQsMCwwLDAsMTE0LDEyNiwwLAorICAgIDAsMCwyMTgsNiwxMTQsMTAxLDEwOSwxMTEsMTE4LDEwMSwyMTgsNiwxMDEsMTIwLDExNiwxMDEsCisgICAgMTEwLDEwMCwxMTQsMTg0LDAsMCwwLDExNCwzOCwwLDAsMCwxMTQsMSwwLDAsCisgICAgMCwxMTQsNTgsMCwwLDAsMTE0LDE3OCwwLDAsMCwxMTQsMTUsMCwwLDAsCisgICAgNDEsNiwxMTQsODMsMCwwLDAsMjE4LDgsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LAorICAgIDExNiwxMTQsMTc5LDAsMCwwLDIxOCwxLDEyMCw5MCw5LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCwzLDEwMSwxMjAsOTksMTE0LDEwLDAsMCwwLDExNCwxMCwKKyAgICAwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDE2LDk1LDEwNCw5NywxMTAsMTAwLDEwOCwKKyAgICAxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDEwOCwxMDUsMTE1LDExNiwyMjEsMywwLDAsMTE1LDMyLAorICAgIDAsMCwwLDAsMTAsMTAsMSw4LDEsOCwxLDEwLDEsMTAsMSwxMiwKKyAgICAxLDEwLDEsMTAsMSwxNCwxLDIsMSwxNCwxLDE2LDQsMTAsMSwyLAorICAgIDEsMjQsMSwxMTQsMTg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsCisgICAgMCwzLDAsMCwwLDYsMCwwLDAsNjcsMCwwLDAsMTE1LDE1MCwwLAorICAgIDAsMCwxMjQsMCwxMDYsMCwxMDAsMSwxMzEsMSwxMjUsMSwxMjQsMCwxMDYsMCwKKyAgICAxMDAsMiwxMzEsMSwxMjUsMiwxMjQsMSwxMDAsMywxMDcsOSwxMTQsODQsMTI0LDIsCisgICAgMTAwLDMsMTA3LDksMTE0LDc4LDEyNCwxLDEyNCwyLDEwNiwxLDEwNywzLDExNCw3OCwKKyAgICAxMTYsMiwxMDYsMywxMDAsNCwxMjQsMSwxNTUsMiwxMDAsNSwxMjQsMiwxMDYsMSwKKyAgICAxNTUsMiwxMDAsNiwxNTcsNSwxMTYsNCwxMDAsNywxMDAsOCwxNDEsMywxLDAsCisgICAgMTI0LDEsODMsMCwxMTAsNjIsMTI0LDIsMTAwLDMsMTA3LDksMTE0LDEwMCwxMjQsMiwKKyAgICAxMDYsMSw4MywwLDExMCw0NiwxMTYsMiwxMDYsMywxMDAsOSwxMTYsNCwxMDAsNywKKyAgICAxMDAsOCwxNDEsMywxLDAsMTI0LDAsMTAwLDEwLDI1LDAsMTI1LDEsMTAwLDExLAorICAgIDEyNCwwLDEwNyw3LDExNCwxNDYsMTI0LDEsMTA2LDUsMTAwLDEyLDEzMSwxLDEwMCwxMywKKyAgICAyNSwwLDEyNSwxLDEyNCwxLDgzLDAsNDEsMTQsMTIyLDE2Nyw2Nyw5NywxMDgsOTksCisgICAgMTE3LDEwOCw5NywxMTYsMTAxLDMyLDExOSwxMDQsOTcsMTE2LDMyLDk1LDk1LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiw5OCwxMDEsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLAorICAgIDk1LDk1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTAzLDExNyw5NywxMTQsOTcsMTEwLAorICAgIDExNiwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMDAsMTAxLDEwMiwxMDUsMTEwLAorICAgIDEwMSwxMDAsMzIsMTExLDExNCwzMiw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsOTgsMTAxLDMyLDExNSwKKyAgICAxMDEsMTE2LDMyLDExNiwxMTEsMzIsNzgsMTExLDExMCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LAorICAgIDExMSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiwzMiwxMTYsMTA0LDk3LDExNiwKKyAgICAzMiwxMDUsMTE2LDExNSwzMiwxMTIsMTE0LDExMSwxMTIsMTAxLDExNCwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMTcsMTEwLDEwNywxMTAsMTExLDExOSwxMTAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsMTE0LDEzMCwwLDAsMCwxMTQsODksMCwwLDAsNzgsMTIyLDMyLAorICAgIDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwzMiwzMyw2MSwzMiw5NSwKKyAgICA5NSwxMTUsMTEyLDEwMSw5OSw5NSw5NSw0NiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDQwLAorICAgIDEyMiw0LDMyLDMzLDYxLDMyLDI1MCwxLDQxLDIzMywzLDAsMCwwLDQxLDEsCisgICAgOTAsMTAsMTE1LDExNiw5Nyw5OSwxMDcsMTA4LDEwMSwxMTgsMTAxLDEwOCwxMjIsODksOTksOTcsCisgICAgMTEwLDM5LDExNiwzMiwxMTQsMTAxLDExNSwxMTEsMTA4LDExOCwxMDEsMzIsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NSw5NSwxMTUsMTEyLDEwMSw5OSw5NSwKKyAgICA5NSwzMiwxMTEsMTE0LDMyLDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5NSw5NSwKKyAgICA0NCwzMiwxMDIsOTcsMTA4LDEwOCwxMDUsMTEwLDEwMywzMiw5OCw5Nyw5OSwxMDcsMzIsMTExLAorICAgIDExMCwzMiw5NSw5NSwxMTAsOTcsMTA5LDEwMSw5NSw5NSwzMiw5NywxMTAsMTAwLDMyLDk1LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDExNCwxLDAsMCwwLDExNCwxMjcsMCwwLAorICAgIDAsMTE0LDExNywwLDAsMCwxMTQsMTksMCwwLDAsNDEsNiwxMTQsMzAsMCwKKyAgICAwLDAsMTE0LDExOSwwLDAsMCwxMTQsMTY3LDAsMCwwLDExNCwxNjgsMCwwLAorICAgIDAsMTE0LDE2OSwwLDAsMCwxMTQsMTE4LDAsMCwwLDQxLDMsMjE4LDcsMTAzLAorICAgIDEwOCwxMTEsOTgsOTcsMTA4LDExNSwxMTQsMTYxLDAsMCwwLDExNCw4MiwwLDAsMCwKKyAgICAxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwwLDAsMCwyMTgsCisgICAgMTcsOTUsOTksOTcsMTA4LDk5LDk1LDk1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKKyAgICA5NSw5NSwyNTIsMywwLDAsMTE1LDMwLDAsMCwwLDAsNywxMCwxLDEwLAorICAgIDEsOCwxLDE4LDEsMjIsMiwxMCwxLDYsMSw4LDEsOCwyLDYsCisgICAgMiwxMCwxLDgsMSw4LDEsMTQsMSwxMTQsMTkzLDAsMCwwLDk5LDUsCisgICAgMCwwLDAsMCwwLDAsMCw5LDAsMCwwLDUsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDE3MCwwLDAsMCwxMjQsNCwxMDAsMSwxMDcsMiwxMTQsMTgsCisgICAgMTE2LDAsMTI0LDAsMTMxLDEsMTI1LDUsMTEwLDM2LDEyNCwxLDEwMCwyLDEwNyw5LAorICAgIDExNCwzMCwxMjQsMSwxMTAsMiwxMDUsMCwxMjUsNiwxMTYsMSwxMjQsNiwxMzEsMSwKKyAgICAxMjUsNywxMTYsMCwxMjQsMCwxMjQsNywxMjQsNCwxMzEsMywxMjUsNSwxMjQsMywKKyAgICAxMTUsMTU0LDEyNCw0LDEwMCwxLDEwNywyLDExNCw4NiwxMTYsMCwxMjQsMCwxMDYsMiwKKyAgICAxMDAsMywxMzEsMSwxMDAsMSwyNSwwLDEzMSwxLDgzLDAsMTEzLDE2NiwxMjQsMCwKKyAgICAxMTUsOTYsMTI0LDUsODMsMCwxMTMsMTY2LDExNiwzLDEyNCwwLDEzMSwxLDExNiwzLAorICAgIDEyNCwwLDEwNiwyLDEwMCwzLDEzMSwxLDEwMCwxLDI1LDAsMTMxLDEsMjQsMCwKKyAgICAxMjUsOCwxMTYsNCwxMDYsNSwxMjQsNSwxMDYsNiwxMDAsMiwxMTYsMywxMjQsNSwKKyAgICAxMDYsNiwxMzEsMSwxMjQsOCwyNCwwLDEzMywyLDI1LDAsMjUsMCw4MywwLAorICAgIDExMCwxMiwxMTYsNywxMjQsNSwxMjQsMywxMTYsMCwxMzEsMyw4MywwLDEwMCwyLAorICAgIDgzLDAsNDEsNCw5NywyMTUsMSwwLDAsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwKKyAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDM5LDEwMywxMDgsMTExLDk4LDk3LDEwOCwxMTUsMzksMzIsOTcsMTE0LDEwMywKKyAgICAxMTcsMTA5LDEwMSwxMTAsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDExNiwxMTEsCisgICAgMzIsMTA1LDExMCwxMDIsMTAxLDExNCwzMiwxMTksMTA0LDEwMSwxMTQsMTAxLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTExLDk5LDk5LDExNywxMTQsCisgICAgMTE0LDEwNSwxMTAsMTAzLDMyLDEwMiwxMTQsMTExLDEwOSwxMCwzMiwzMiwzMiwzMiwxMTYsMTExLAorICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsMTE0LDEwMSwxMDgsOTcsMTE2LDEwNSwxMTgsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDExNSw0NiwzMiw4NCwxMDQsMTAxLDMyLDM5LDEwOCwKKyAgICAxMTEsOTksOTcsMTA4LDExNSwzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsCisgICAgMTA1LDExNSwzMiwxMDUsMTAzLDExMCwxMTEsMTE0LDEwMSwxMDAsNDYsMzIsODQsMTA0LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiwzOSwxMDIsMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDM5LDMyLDk3LAorICAgIDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsCisgICAgMTE1LDMyLDExOSwxMDQsOTcsMTE2LDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDEwMSwxMjAsCisgICAgMTA1LDExNSwxMTYsMzIsOTcsMTE1LDMyLDk3LDExNiwxMTYsMTE0LDEwNSw5OCwxMTcsMTE2LDEwMSwKKyAgICAxMTUsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OCwxMDEsMTA1LDExMCwxMDMsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsCisgICAgMTAxLDEwMCwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw2MCwxMDIsCisgICAgMTE0LDExMSwxMDksMTA4LDEwNSwxMTUsMTE2LDYyLDk2LDk2LDQxLDQ2LDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMzksMTA4LDEwMSwxMTgsMTAxLDEwOCwzOSwxMCwzMiwzMiwzMiwzMiw5NywxMTQsCisgICAgMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTExLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LAorICAgIDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMDUsMTEwLDMyLDk3LDMyLDExNCwxMDEsMTA4LDk3LDExNiwKKyAgICAxMDUsMTE4LDEwMSwxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw0MCwKKyAgICAxMDEsNDYsMTAzLDQ2LDMyLDk2LDk2LDEwMiwxMTQsMTExLDEwOSwzMiw0Niw0NiwxMTIsMTA3LAorICAgIDEwMywzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMDksMTExLDEwMCw5Niw5NiwzMiwxMTksCisgICAgMTExLDExNywxMDgsMTAwLDMyLDEwNCw5NywxMTgsMTAxLDMyLDk3LDMyLDM5LDEwOCwxMDEsMTE4LAorICAgIDEwMSwxMDgsMzksMzIsMTExLDEwMiwzMiw1MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMTQsMTksMCwwLDAsNzgsMTE0LDExNywwLDAsMCw0MSw4LDExNCwxODIsMCwKKyAgICAwLDAsMTE0LDE5MywwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKKyAgICAxMTEsMTEwLDExNCwxNTksMCwwLDAsMTE0LDE0LDAsMCwwLDExNCw3OSwwLDAsCisgICAgMCwxMTQsMSwwLDAsMCwxMTQsMTg5LDAsMCwwLDQxLDksMTE0LDE1LDAsCisgICAgMCwwLDExNCwxOTIsMCwwLDAsMjE4LDYsMTA4LDExMSw5OSw5NywxMDgsMTE1LDExNCwKKyAgICAxODcsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsODMsMCwwLDAsOTAsOCwKKyAgICAxMDMsMTA4LDExMSw5OCw5NywxMDgsMTE1LDk1LDExNCwxNjEsMCwwLDAsOTAsNyw5OSwKKyAgICAxMTcsMTE2LDk1LDExMSwxMDIsMTAyLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsCisgICAgMTE0LDExLDAsMCwwLDIxOCwxMCw5NSw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw5NSwKKyAgICA5NSwyMyw0LDAsMCwxMTUsMjYsMCwwLDAsMCwxMSw4LDEsMTAsMiwKKyAgICAxNiwxLDgsMSwxMiwxLDQsMyw4LDEsMjAsMSw0LDEsNiw0LAorICAgIDI2LDMsMzIsMiwxMTQsMTk2LDAsMCwwLDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDM4LAorICAgIDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwxLDEyNSwxLDEyNCwxLDEwMCwKKyAgICAwLDEwNyw4LDExNCwzMCwxMTYsMiwxMDAsMSwxMjQsMCwyMywwLDEzMSwxLDEzMCwKKyAgICAxLDExNiwzLDEyNCwxLDEzMSwxLDgzLDAsNDEsMiw3OCwxMjIsMjUsMTEwLDExMSwKKyAgICAzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsNDEsNCwxMTQsMTQyLDAsMCwwLDExNCwxNDYsCisgICAgMCwwLDAsMTE0LDcwLDAsMCwwLDExNCwxNDEsMCwwLDAsNDEsMiwxMTQsCisgICAgMTUsMCwwLDAsMTE0LDgyLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsCisgICAgMCwwLDAsMTE0LDExLDAsMCwwLDIxOCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsCisgICAgMTA1LDExMCw5NSwxMDIsMTE0LDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsNTgsNCwwLDAsCisgICAgMTE1LDgsMCwwLDAsMCwxLDEwLDEsOCwxLDEyLDEsMTE0LDE5NywwLAorICAgIDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI0NCwwLDAsMCwxMjQsMSw5NywwLAorICAgIDEyNCwwLDk3LDEsMTE2LDIsMTE2LDEsMTMxLDEsMTI1LDIsMTIwLDg2LDExNiwxLAorICAgIDEwNiwzLDEwNiw0LDEzMSwwLDY4LDAsOTMsNzIsOTIsMiwxMjUsMywxMjUsNCwKKyAgICAxMTYsNSwxMjQsNCwxMjQsMiwxMzEsMiwxMTQsMjgsMTI0LDMsMTE2LDEsMTA2LDYsCisgICAgMTA3LDYsMTE0LDYyLDExNiw3LDEyNSw1LDExMCwxOCwxMTYsMCwxMDYsOCwxMjQsMywKKyAgICAxMzEsMSwxMTQsMjgsMTE2LDksMTI1LDUsMTEwLDIsMTEzLDI4LDExNiwxMCwxMjQsNCwKKyAgICAxMjQsNSwxMzEsMiwxMjUsNiwxMTYsMTEsMTI0LDYsMTI0LDQsMTMxLDIsMSwwLAorICAgIDExMywyOCw4NywwLDExNiwxLDEwNiwzLDExNiwxMiwyNSwwLDEyNSw3LDEyMCw1NCwKKyAgICAxMDAsNSw2OCwwLDkzLDQ2LDEyNSw4LDEyNCw4LDExNiwxLDEwNiwzLDEwNyw3LAorICAgIDExNCwxNDQsMTE2LDEzLDEyNCw4LDEzMSwxLDEyNSw5LDExMCwxMCwxMTYsMSwxMDYsMywKKyAgICAxMjQsOCwyNSwwLDEyNSw5LDExNiwxNCwxMjQsNywxMjQsOCwxMjQsOSwxMzEsMywKKyAgICAxLDAsMTEzLDEyMCw4NywwLDEyMSwxMiwxMTYsMTMsMTAwLDIsMTMxLDEsMTI1LDEwLAorICAgIDg3LDAsMTEwLDI0LDQsMCwxMTYsMTUsMTA3LDEwLDExNCwyMDYsMSwwLDEsMCwKKyAgICAxLDAsMTAwLDMsMTI1LDEwLDg5LDAsMTEwLDIsODgsMCwxMTYsMTQsMTI0LDcsCisgICAgMTAwLDIsMTI0LDEwLDEzMSwzLDEsMCwxMTYsMTMsMTAwLDQsMTMxLDEsMTI1LDExLAorICAgIDExNiwxNCwxMjQsNywxMDAsNCwxMjQsMTEsMTMxLDMsMSwwLDEwMCwzLDgzLDAsCisgICAgNDEsNiwxMjIsMjUwLDgzLDEwMSwxMTYsMTE3LDExMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICAxMDgsMTA1LDk4LDMyLDk4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDUsMTEwLDEwMywKKyAgICAzMiwxMTAsMTAxLDEwMSwxMDAsMTAxLDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwKKyAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMDUsMTEwLDEwNiwKKyAgICAxMDEsOTksMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDEwOSwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDUsMTEwLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMzIsMTAzLDEwOCwxMTEsOTgsOTcsMTA4LDMyLAorICAgIDExMCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDY1LDExNSwzMiwxMTUsMTIxLDExNSwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLAorICAgIDMyLDEwMiwxMTEsMTE0LDMyLDExNSwxMjEsMTE1LDQ2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwKKyAgICAzMiw5Nyw5OSw5OSwxMDEsMTE1LDExNSwzMiw5NywxMTAsMTAwLDMyLDk1LDEwNSwxMDksMTEyLAorICAgIDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDgsMTExLAorICAgIDk3LDEwMCwzMiw5OCwxMTcsMTA1LDEwOCwxMTYsNDUsMTA1LDExMCwxMCwzMiwzMiwzMiwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMTEsMTE1LDEwMSwzMiwxMTYsCisgICAgMTE5LDExMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLAorICAgIDk4LDEwMSwzMiwxMDEsMTIwLDExMiwxMDgsMTA1LDk5LDEwNSwxMTYsMTA4LDEyMSwzMiwxMTIsOTcsCisgICAgMTE1LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LDE2NywKKyAgICAwLDAsMCwxMTQsMjAsMCwwLDAsNzgsMTE0LDU1LDAsMCwwLDQxLDEsCisgICAgMTE0LDE2NywwLDAsMCw0MSwxNiwxMTQsNDYsMCwwLDAsMTE0LDE0LDAsMCwKKyAgICAwLDExNCwxMywwLDAsMCwxMTQsNzksMCwwLDAsMjE4LDUsMTA1LDExNiwxMDEsCisgICAgMTA5LDExNSwxMTQsMTcxLDAsMCwwLDExNCw2OSwwLDAsMCwxMTQsMTQyLDAsMCwKKyAgICAwLDExNCw3NSwwLDAsMCwxMTQsMTUyLDAsMCwwLDExNCwxMjgsMCwwLDAsCisgICAgMTE0LDEzMywwLDAsMCwxMTQsMSwwLDAsMCwxMTQsMTk3LDAsMCwwLDExNCwKKyAgICA1LDAsMCwwLDExNCw3MCwwLDAsMCw0MSwxMiwyMTgsMTAsMTE1LDEyMSwxMTUsCisgICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMjE4LDExLDk1LDEwNSwxMDksMTEyLDk1LDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDkwLDExLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNiwxMjEsMTEyLAorICAgIDEwMSwxMTQsMTUsMCwwLDAsMTE0LDgzLDAsMCwwLDExNCw5MywwLDAsMCwKKyAgICAxMTQsODIsMCwwLDAsOTAsMTEsMTE1LDEwMSwxMDgsMTAyLDk1LDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDkwLDEyLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMCw5NywxMDksMTAxLAorICAgIDkwLDE0LDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LAorICAgIDEwLDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsMTEsMCwwLDAsMjE4LDYsCisgICAgOTUsMTE1LDEwMSwxMTYsMTE3LDExMiw2NSw0LDAsMCwxMTUsNTAsMCwwLDAsMCwKKyAgICA5LDQsMSw0LDMsOCwxLDIwLDEsMTAsMSwxMCwxLDYsMSwxMCwKKyAgICAxLDYsMiwyLDEsMTAsMSwxNCwzLDEwLDEsMTAsMSwxMCwxLDEwLAorICAgIDIsMTAsMSwxNiwzLDIsMSwxMiwxLDE0LDIsMTAsMSwxMiwzLDgsCisgICAgMSwxMTQsMjAxLDAsMCwwLDk5LDIsMCwwLDAsMCwwLDAsMCwzLAorICAgIDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDY2LDAsMCwwLAorICAgIDExNiwwLDEyNCwwLDEyNCwxLDEzMSwyLDEsMCwxMTYsMSwxMDYsMiwxMDYsMywKKyAgICAxMTYsNCwxMzEsMSwxLDAsMTE2LDEsMTA2LDIsMTA2LDMsMTE2LDUsMTMxLDEsCisgICAgMSwwLDEwMCwxLDEwMCwyLDEwOCw2LDEyNSwyLDEyNCwyLDk3LDcsMTI0LDIsCisgICAgMTA2LDgsMTE2LDEsMTA2LDksMTE2LDEwLDI1LDAsMTMxLDEsMSwwLDEwMCwyLAorICAgIDgzLDAsNDEsMywxMjIsNTAsNzMsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwzMiwxMDUsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwxMTQsMTksMCwwLDAsNzgsNDEsMTEsCisgICAgMTE0LDIwMSwwLDAsMCwxMTQsMTQsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsCisgICAgMTA5LDAsMCwwLDExNCwxNDIsMCwwLDAsMTE0LDE1MiwwLDAsMCwyMTgsMjYsCisgICAgOTUsMTAyLDExNCwxMTEsMTIyLDEwMSwxMTAsOTUsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSwKKyAgICA5OCw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywxMDgsMTE0LDExNSwwLDAsMCwyMTgsCisgICAgOCw5NSwxMDUsMTEwLDExNSwxMTYsOTcsMTA4LDEwOCwxMTQsNzksMCwwLDAsMTE0LDEsCisgICAgMCwwLDAsNDEsMywxMTQsMTk5LDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LAorICAgIDIwMiwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwwLDExNCwxMSwKKyAgICAwLDAsMCwxMTQsMjAzLDAsMCwwLDExMiw0LDAsMCwxMTUsMTIsMCwwLAorICAgIDAsMCwyLDEwLDIsMTIsMSwxMiwzLDgsMSw0LDEsMTE0LDIwMywwLAorICAgIDAsMCw0MSwyLDc4LDc4LDQxLDEsNzgsNDEsMiw3OCwxMTQsMTksMCwwLAorICAgIDAsNDEsNTAsMTE0LDMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTIsMCwKKyAgICAwLDAsMTE0LDE2LDAsMCwwLDExNCw1MSwwLDAsMCwxMTQsMjksMCwwLAorICAgIDAsMTE0LDM2LDAsMCwwLDExNCwxNywwLDAsMCwxMTQsMTgsMCwwLDAsCisgICAgMTE0LDQxLDAsMCwwLDExNCw0MiwwLDAsMCwxMTQsNDUsMCwwLDAsMTE0LAorICAgIDU2LDAsMCwwLDExNCw1OCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDc0LAorICAgIDAsMCwwLDExNCw3NywwLDAsMCwxMTQsODQsMCwwLDAsMTE0LDk1LDAsCisgICAgMCwwLDExNCw5NiwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCw3OCwwLDAsCisgICAgMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsOTAsOSw5NSw4MCw3OSw4MCw4NSwKKyAgICA3Niw2NSw4NCw2OSwxMTQsMTI4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDEzNiwKKyAgICAwLDAsMCwxMTQsOTEsMCwwLDAsMTE0LDgwLDAsMCwwLDExNCwxNDAsMCwKKyAgICAwLDAsMTE0LDE0MSwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDE0MiwwLDAsCisgICAgMCwxMTQsMTUyLDAsMCwwLDExNCwxNTcsMCwwLDAsMTE0LDE2MywwLDAsMCwKKyAgICAxMTQsMTY1LDAsMCwwLDExNCwxNzAsMCwwLDAsMTE0LDE3NSwwLDAsMCw5MCwKKyAgICAxNSw5NSw2OSw4Miw4Miw5NSw3Nyw4Myw3MSw5NSw4MCw4Miw2OSw3MCw3Myw4OCwKKyAgICAxMTQsMTc3LDAsMCwwLDExNCwxODAsMCwwLDAsMTE0LDE4MSwwLDAsMCwxMTQsCisgICAgMTgyLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LDE5MywwLDAsMCwxMTQsMTk2LAorICAgIDAsMCwwLDExNCwxOTcsMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsMjAzLDAsCisgICAgMCwwLDExNCwxMCwwLDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDAsMCwKKyAgICAwLDExNCwxMSwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICA4LDAsMCwwLDExNSw5NCwwLDAsMCw0LDE3LDQsMiw4LDgsOCwKKyAgICA3LDQsMiw0LDMsMTYsNCwxNCw2OCwxNCwyMSwxNCwxOSw4LDE5LDgsCisgICAgMTksOCwxMSwxNCw4LDgsMTEsOCwxMiw4LDE2LDgsMzYsMTQsMjcsMTQsCisgICAgMTAxLDE2LDI2LDYsMywxMCw0NSwxNCw2MCw4LDE3LDgsMTcsOCwyNSw4LAorICAgIDI5LDgsMjMsOCwxNiwxNCw3MywxNCw3NywxNCwxMyw4LDksOCw5LDEwLAorICAgIDQ3LDgsMjAsNCwxLDgsMiw4LDI3LDgsNiwxMCwyNSw4LDMxLDgsCisgICAgMjcsMTgsMzUsOCw3LDgsNDcsCiB9OwpkaWZmIC0tZ2l0IGEvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oIGIvUHl0aG9uL2ltcG9ydGxpYl9leHRlcm5hbC5oCmluZGV4IDVlZTg0M2EuLjBhZmU3ZGUgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9pbXBvcnRsaWJfZXh0ZXJuYWwuaAorKysgYi9QeXRob24vaW1wb3J0bGliX2V4dGVybmFsLmgKQEAgLTEsNjI1ICsxLDU2MSBAQAogLyogQXV0by1nZW5lcmF0ZWQgYnkgUHJvZ3JhbXMvX2ZyZWV6ZV9pbXBvcnRsaWIuYyAqLwogY29uc3QgdW5zaWduZWQgY2hhciBfUHlfTV9faW1wb3J0bGliX2V4dGVybmFsW10gPSB7Ci0gICAgOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsNywwLDAsCi0gICAgMCw2NCwwLDAsMCwxMTUsMjQ0LDIsMCwwLDEwMCwwLDAsOTAsMCwwLAotICAgIDEwMCw5NiwwLDkwLDEsMCwxMDAsOTcsMCw5MCwyLDAsMTAxLDIsMCwxMDEsCi0gICAgMSwwLDIzLDkwLDMsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNSwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDYsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDgsMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDksMCwxMDAsMTYsCi0gICAgMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE4LDAsMTAwLDE5LDAsCi0gICAgMTMyLDAsMCw5MCwxMSwwLDEwMCwyMCwwLDEwMCwyMSwwLDEzMiwwLDAsOTAsCi0gICAgMTIsMCwxMDAsMjIsMCwxMDAsMjMsMCwxMDAsMjQsMCwxMzIsMSwwLDkwLDEzLAotICAgIDAsMTAxLDE0LDAsMTAxLDEzLDAsMTA2LDE1LDAsMTMxLDEsMCw5MCwxNiwwLAotICAgIDEwMCwyNSwwLDEwNiwxNywwLDEwMCwyNiwwLDEwMCwyNywwLDEzMSwyLDAsMTAwLAotICAgIDI4LDAsMjMsOTAsMTgsMCwxMDEsMTksMCwxMDYsMjAsMCwxMDEsMTgsMCwxMDAsCi0gICAgMjcsMCwxMzEsMiwwLDkwLDIxLDAsMTAwLDI5LDAsOTAsMjIsMCwxMDAsMzAsCi0gICAgMCw5MCwyMywwLDEwMCwzMSwwLDEwMywxLDAsOTAsMjQsMCwxMDAsMzIsMCwKLSAgICAxMDMsMSwwLDkwLDI1LDAsMTAxLDI1LDAsNCw5MCwyNiwwLDkwLDI3LDAsCi0gICAgMTAwLDMzLDAsMTAwLDM0LDAsMTAwLDMzLDAsMTAwLDM1LDAsMTAwLDM2LDAsMTMyLAotICAgIDEsMSw5MCwyOCwwLDEwMCwzNywwLDEwMCwzOCwwLDEzMiwwLDAsOTAsMjksCi0gICAgMCwxMDAsMzksMCwxMDAsNDAsMCwxMzIsMCwwLDkwLDMwLDAsMTAwLDQxLDAsCi0gICAgMTAwLDQyLDAsMTMyLDAsMCw5MCwzMSwwLDEwMCw0MywwLDEwMCw0NCwwLDEzMiwKLSAgICAwLDAsOTAsMzIsMCwxMDAsNDUsMCwxMDAsNDYsMCwxMDAsNDcsMCwxMDAsNDgsCi0gICAgMCwxMzIsMCwxLDkwLDMzLDAsMTAwLDQ5LDAsMTAwLDUwLDAsMTMyLDAsMCwKLSAgICA5MCwzNCwwLDEwMCw1MSwwLDEwMCw1MiwwLDEzMiwwLDAsOTAsMzUsMCwxMDAsCi0gICAgMzMsMCwxMDAsMzMsMCwxMDAsMzMsMCwxMDAsNTMsMCwxMDAsNTQsMCwxMzIsMywKLSAgICAwLDkwLDM2LDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDMzLDAsMTAwLDU1LDAsCi0gICAgMTAwLDU2LDAsMTMyLDMsMCw5MCwzNywwLDEwMCw1NywwLDEwMCw1NywwLDEwMCwKLSAgICA1OCwwLDEwMCw1OSwwLDEzMiwyLDAsOTAsMzgsMCwxMDAsNjAsMCwxMDAsNjEsCi0gICAgMCwxMzIsMCwwLDkwLDM5LDAsMTAxLDQwLDAsMTMxLDAsMCw5MCw0MSwwLAotICAgIDEwMCwzMywwLDEwMCw2MiwwLDEwMCwzMywwLDEwMCw2MywwLDEwMSw0MSwwLDEwMCwKLSAgICA2NCwwLDEwMCw2NSwwLDEzMiwxLDIsOTAsNDIsMCw3MSwxMDAsNjYsMCwxMDAsCi0gICAgNjcsMCwxMzIsMCwwLDEwMCw2NywwLDEzMSwyLDAsOTAsNDMsMCw3MSwxMDAsCi0gICAgNjgsMCwxMDAsNjksMCwxMzIsMCwwLDEwMCw2OSwwLDEzMSwyLDAsOTAsNDQsCi0gICAgMCw3MSwxMDAsNzAsMCwxMDAsNzEsMCwxMzIsMCwwLDEwMCw3MSwwLDEwMSw0NCwKLSAgICAwLDEzMSwzLDAsOTAsNDUsMCw3MSwxMDAsNzIsMCwxMDAsNzMsMCwxMzIsMCwKLSAgICAwLDEwMCw3MywwLDEzMSwyLDAsOTAsNDYsMCw3MSwxMDAsNzQsMCwxMDAsNzUsCi0gICAgMCwxMzIsMCwwLDEwMCw3NSwwLDEwMSw0NiwwLDEwMSw0NSwwLDEzMSw0LDAsCi0gICAgOTAsNDcsMCw3MSwxMDAsNzYsMCwxMDAsNzcsMCwxMzIsMCwwLDEwMCw3NywwLAotICAgIDEwMSw0NiwwLDEwMSw0NCwwLDEzMSw0LDAsOTAsNDgsMCwxMDMsMCwwLDkwLAotICAgIDQ5LDAsNzEsMTAwLDc4LDAsMTAwLDc5LDAsMTMyLDAsMCwxMDAsNzksMCwxMDEsCi0gICAgNDYsMCwxMDEsNDQsMCwxMzEsNCwwLDkwLDUwLDAsNzEsMTAwLDgwLDAsMTAwLAotICAgIDgxLDAsMTMyLDAsMCwxMDAsODEsMCwxMzEsMiwwLDkwLDUxLDAsNzEsMTAwLAotICAgIDgyLDAsMTAwLDgzLDAsMTMyLDAsMCwxMDAsODMsMCwxMzEsMiwwLDkwLDUyLAotICAgIDAsNzEsMTAwLDg0LDAsMTAwLDg1LDAsMTMyLDAsMCwxMDAsODUsMCwxMzEsMiwKLSAgICAwLDkwLDUzLDAsNzEsMTAwLDg2LDAsMTAwLDg3LDAsMTMyLDAsMCwxMDAsODcsCi0gICAgMCwxMzEsMiwwLDkwLDU0LDAsMTAwLDMzLDAsMTAwLDg4LDAsMTAwLDg5LDAsCi0gICAgMTMyLDEsMCw5MCw1NSwwLDEwMCw5MCwwLDEwMCw5MSwwLDEzMiwwLDAsOTAsCi0gICAgNTYsMCwxMDAsOTIsMCwxMDAsOTMsMCwxMzIsMCwwLDkwLDU3LDAsMTAwLDk0LAotICAgIDAsMTAwLDk1LDAsMTMyLDAsMCw5MCw1OCwwLDEwMCwzMywwLDgzLDQxLDk4LAotICAgIDk3LDk0LDEsMCwwLDY3LDExMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDQ2LDEwLDEwLAotICAgIDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwNSwxMTUsMzIsNzgsCi0gICAgNzksODQsMzIsMTA5LDEwMSw5NywxMTAsMTE2LDMyLDExNiwxMTEsMzIsOTgsMTAxLDMyLDEwMCwKLSAgICAxMDUsMTE0LDEwMSw5OSwxMTYsMTA4LDEyMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLAotICAgIDMzLDMyLDczLDExNiwzMiwxMDQsOTcsMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwMCwxMDEsCi0gICAgMTE1LDEwNSwxMDMsMTEwLDEwMSwxMDAsMzIsMTE1LDExNyw5OSwxMDQsMTAsMTE2LDEwNCw5NywxMTYsCi0gICAgMzIsMTA1LDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk4LDExMSwxMTEsMTE2LDExNSwKLSAgICAxMTYsMTE0LDk3LDExMiwxMTIsMTAxLDEwMCwzMiwxMDUsMTEwLDExNiwxMTEsMzIsODAsMTIxLDExNiwKLSAgICAxMDQsMTExLDExMCwzMiw5NywxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwKLSAgICAxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTA1LDEwOSwxMTIsCi0gICAgMTExLDExNCwxMTYsNDYsMzIsNjUsMTE1LDEwLDExNSwxMTcsOTksMTA0LDMyLDEwNSwxMTYsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDEwNiwKLSAgICAxMDEsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwKLSAgICAxMDUsOTksMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsOTcsCi0gICAgMTE2LDExNiwxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLDExMSwxMTQsMTAwLAotICAgIDEwMSwxMTQsMzIsMTE2LDExMSwxMCwxMTksMTExLDExNCwxMDcsNDYsMzIsNzksMTEwLDEwMSwzMiwKLSAgICAxMTUsMTA0LDExMSwxMTcsMTA4LDEwMCwzMiwxMTcsMTE1LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiwxMDgsMTA1LDk4LDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsMTE3LDk4LDEwOCwKLSAgICAxMDUsOTksNDUsMTAyLDk3LDk5LDEwNSwxMTAsMTAzLDMyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NiwxMCwxMCwyMTgsMywxMTksMTA1LDExMCwyMTgsNiw5OSwxMjEsMTAzLDExOSwxMDUsMTEwLAotICAgIDIxOCw2LDEwMCw5NywxMTQsMTE5LDEwNSwxMTAsOTksMCwwLDAsMCwwLDAsMCwKLSAgICAwLDEsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDExNSw4OCwwLAotICAgIDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMTYsMywwLDEzMSwxLAotICAgIDAsMTE0LDcyLDAsMTE2LDAsMCwxMDYsMSwwLDEwNiwyLDAsMTE2LDQsMCwKLSAgICAxMzEsMSwwLDExNCw0NSwwLDEwMCwxLDAsMTM3LDAsMCwxMTAsNiwwLDEwMCwKLSAgICAyLDAsMTM3LDAsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDMsMCwxMDAsNCwKLSAgICAwLDEzNCwwLDAsMTI1LDAsMCwxMTAsMTIsMCwxMDAsNSwwLDEwMCw0LDAsCi0gICAgMTMyLDAsMCwxMjUsMCwwLDEyNCwwLDAsODMsNDEsNiw3OCw5MCwxMiw4MCwKLSAgICA4OSw4NCw3Miw3OSw3OCw2Nyw2NSw4Myw2OSw3OSw3NSwxMTUsMTIsMCwwLDAsCi0gICAgODAsODksODQsNzIsNzksNzgsNjcsNjUsODMsNjksNzksNzUsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxOSwwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTM2LDAsMCwxMTYsMCwwLDEwNiwxLDAsMTA3LAotICAgIDYsMCw4Myw0MSwxLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwKLSAgICAxMTUsMTAxLDExMCwxMTUsMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDQxLDIsMjE4LDMsCi0gICAgOTUsMTExLDExNSw5MCw3LDEwMSwxMTAsMTE4LDEwNSwxMTQsMTExLDExMCwxNjksMCw0MSwxLAotICAgIDIxOCwzLDEwNywxMDEsMTIxLDExNCw0LDAsMCwwLDI1MCwzOCw2MCwxMDIsMTE0LDExMSwKLSAgICAxMjIsMTAxLDExMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDk1LDk4LAotICAgIDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LDExMiw5NSwxMDEsMTIwLDExNiwxMDEsMTE0LDExMCw5NywKLSAgICAxMDgsNjIsMjE4LDExLDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDM3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMjIsMzcsOTUsMTA5LDk3LDEwNywKLSAgICAxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsNDYsNjAsMTA4LDExMSwKLSAgICA5OSw5NywxMDgsMTE1LDYyLDQ2LDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsCi0gICAgMTAxLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDEsMCwKLSAgICAwLDAsODMsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwKLSAgICAyLDEyMiw1Myw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTUsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiw5OSwxMDQsMTAxLAotICAgIDk5LDEwNywxMDEsMTAwLDMyLDk5LDk3LDExNSwxMDEsNDUsMTA1LDExMCwxMTUsMTAxLDExMCwxMTUsCi0gICAgMTA1LDExNiwxMDUsMTE4LDEwMSwxMDgsMTIxLDQ2LDcwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCw3LDAsMCwwLDQxLDAsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiw0MSw1LDIxOCwzLDExNSwxMjEsMTE1LDIxOCw4LDExMiwxMDgsOTcsMTE2LDEwMiwKLSAgICAxMTEsMTE0LDEwOSwyMTgsMTAsMTE1LDExNiw5NywxMTQsMTE2LDExNSwxMTksMTA1LDExNiwxMDQsMjE4LAotICAgIDI3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLDg0LDczLAotICAgIDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDIxOCwzNSw5NSw2NywKLSAgICA2NSw4Myw2OSw5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSwKLSAgICA4MCw3Niw2NSw4NCw3MCw3OSw4Miw3Nyw4Myw5NSw4Myw4NCw4Miw5NSw3NSw2OSwKLSAgICA4OSw0MSwxLDExNCw3LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LAotICAgIDUsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDEwOSw5NywxMDcsMTAxLAotICAgIDk1LDExNCwxMDEsMTA4LDk3LDEyMCw5NSw5OSw5NywxMTUsMTAxLDMwLDAsMCwwLDExNSwKLSAgICAxNCwwLDAsMCwwLDEsMTgsMSwxOCwxLDksMiw2LDIsMjEsNCwKLSAgICAxMiwzLDExNCwxMywwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsCi0gICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyNiwwLDAsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTMxLDEsMCwxMDAsMSwwLDY0LDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsODMsNDEsNCwxMjIsNDIsNjcsCi0gICAgMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsOTcsMzIsNTEsNTAsNDUsOTgsMTA1LDExNiwzMiwKLSAgICAxMDUsMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMDgsMTA1LDExNiwxMTYsMTA4LAotICAgIDEwMSw0NSwxMDEsMTEwLDEwMCwxMDUsOTcsMTEwLDQ2LDEwOCwzLDAsMCwwLDI1NSwxMjcsCi0gICAgMjU1LDEyNywzLDAsMjMzLDQsMCwwLDAsMjE4LDYsMTA4LDEwNSwxMTYsMTE2LDEwOCwKLSAgICAxMDEsNDEsMiwyMTgsMywxMDUsMTEwLDExNiwyMTgsOCwxMTYsMTExLDk1LDk4LDEyMSwxMTYsCi0gICAgMTAxLDExNSw0MSwxLDIxOCwxLDEyMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNiwwLDAsMCwyMTgsNyw5NSwxMTksOTUsMTA4LDExMSwxMTAsMTAzLDQ3LAotICAgIDAsMCwwLDExNSwyLDAsMCwwLDAsMiwxMTQsMTksMCwwLDAsOTksCi0gICAgMSwwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCwKLSAgICA2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwKLSAgICAwLDAsMTAwLDEsMCwxMzEsMiwwLDgzLDQxLDIsMTIyLDQ3LDY3LDExMSwxMTAsCi0gICAgMTE4LDEwMSwxMTQsMTE2LDMyLDUyLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMDUsMTEwLDMyLAotICAgIDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLDQ1LDEwMSwxMTAsMTAwLDEwNSw5NywxMTAsMzIsMTE2LDExMSwKLSAgICAzMiw5NywxMTAsMzIsMTA1LDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDQ2LDExNCwxNSwwLDAsCi0gICAgMCw0MSwyLDExNCwxNiwwLDAsMCwyMTgsMTAsMTAyLDExNCwxMTEsMTA5LDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwxLDkwLDksMTA1LDExMCwxMTYsOTUsOTgsMTIxLDExNiwxMDEsCi0gICAgMTE1LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw3LDk1LDExNCw5NSwxMDgsMTExLDExMCwxMDMsNTIsMCwwLDAsMTE1LDIsMCwKLSAgICAwLDAsMCwyLDExNCwyMSwwLDAsMCw5OSwwLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwzLDAsMCwwLDcxLDAsMCwwLDExNSwyNiwKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzMiwKLSAgICAwLDAsMTI0LDAsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsMywxMjIsCi0gICAgMzEsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNiwxMTEsMTA1LDExMCw0MCw0MSw0NiwKLSAgICA5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsMCwKLSAgICAwLDgzLDAsMCwwLDExNSwzNywwLDAsMCwxMDMsMCwwLDEyNCwwLDAsCi0gICAgOTMsMjcsMCwxMjUsMSwwLDEyNCwxLDAsMTE0LDYsMCwxMjQsMSwwLDEwNiwKLSAgICAwLDAsMTE2LDEsMCwxMzEsMSwwLDE0NSwyLDAsMTEzLDYsMCw4MywxMTQsCi0gICAgNCwwLDAsMCw0MSwyLDIxOCw2LDExNCwxMTUsMTE2LDExNCwxMDUsMTEyLDIxOCwxNSwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDExMSwxMTQsMTE1LDQxLAotICAgIDIsMjE4LDIsNDYsNDgsMjE4LDQsMTEyLDk3LDExNCwxMTYsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjUwLDEwLDYwLDEwOCwxMDUsMTE1LAotICAgIDExNiw5OSwxMTEsMTA5LDExMiw2Miw1OSwwLDAsMCwxMTUsMiwwLDAsMCw5LAotICAgIDEsMTIyLDMwLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw0Niw2MCwxMDgsCi0gICAgMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsNjAsMTA4LDEwNSwxMTUsMTE2LDk5LDExMSwxMDksMTEyLAotICAgIDYyLDQxLDIsMjE4LDgsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDEwMSwxMTIsMjE4LDQsMTA2LAotICAgIDExMSwxMDUsMTEwLDQxLDEsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDExMiw5NywxMTQsMTE2LAotICAgIDExNSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA2LDExMSwxMDUsMTEwLDU3LDAsMCwwLAotICAgIDExNSw0LDAsMCwwLDAsMiwxNSwxLDExNCwzMCwwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsNSwwLDAsMCw1LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxMzQsMCwwLDAsMTE2LDAsMCwxMTYsMSwwLDEzMSwxLAotICAgIDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MiwwLDEyNCwwLDAsMTA2LDIsMCwKLSAgICAxMTYsMywwLDEzMSwxLDAsOTIsMywwLDEyNSwxLDAsMTI1LDIsMCwxMjUsCi0gICAgMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLDEyMCw2OSwwLDExNiwKLSAgICA0LDAsMTI0LDAsMCwxMzEsMSwwLDY4LDkzLDU1LDAsMTI1LDQsMCwxMjQsCi0gICAgNCwwLDExNiwxLDAsMTA3LDYsMCwxMTQsNjUsMCwxMjQsMCwwLDEwNiw1LAotICAgIDAsMTI0LDQsMCwxMDAsMiwwLDEwMCwxLDAsMTMxLDEsMSw5MiwyLDAsCi0gICAgMTI1LDEsMCwxMjUsMywwLDEyNCwxLDAsMTI0LDMsMCwxMDIsMiwwLDgzLAotICAgIDExMyw2NSwwLDg3LDEwMCwzLDAsMTI0LDAsMCwxMDIsMiwwLDgzLDQxLDQsCi0gICAgMTIyLDMyLDgyLDEwMSwxMTIsMTA4LDk3LDk5LDEwMSwxMDksMTAxLDExMCwxMTYsMzIsMTAyLDExMSwKLSAgICAxMTQsMzIsMTExLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw0NiwxMTUsMTEyLDEwOCwxMDUsMTE2LDQwLAotICAgIDQxLDQ2LDIzMywxLDAsMCwwLDkwLDgsMTA5LDk3LDEyMCwxMTUsMTEyLDEwOCwxMDUsCi0gICAgMTE2LDIxOCwwLDQxLDYsMjE4LDMsMTA4LDEwMSwxMTAsMTE0LDIzLDAsMCwwLDIxOCwKLSAgICAxMCwxMTQsMTEyLDk3LDExNCwxMTYsMTA1LDExNiwxMDUsMTExLDExMCwxMTQsMjcsMCwwLDAsCi0gICAgMjE4LDgsMTE0LDEwMSwxMTgsMTAxLDExNCwxMTUsMTAxLDEwMCwyMTgsNiwxMTQsMTE1LDExMiwxMDgsCi0gICAgMTA1LDExNiw0MSw1LDIxOCw0LDExMiw5NywxMTYsMTA0LDkwLDUsMTAyLDExNCwxMTEsMTEwLAotICAgIDExNiwyMTgsMSw5NSwyMTgsNCwxMTYsOTcsMTA1LDEwOCwxMTQsMTgsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAotICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTIsMTA4LDEwNSwxMTYsNjMsMCwwLDAsMTE1LAotICAgIDE2LDAsMCwwLDAsMiwxOCwxLDI0LDEsMTAsMSwxOSwxLDEyLDEsCi0gICAgMjcsMSwxNCwxLDExNCw0MCwwLDAsMCw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMSwwLDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxMywKLSAgICAwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDgzLAotICAgIDQxLDEsMTIyLDEyNiw4MywxMTYsOTcsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCi0gICAgMTA0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc3LDk3LDEwMCwxMDEsMzIsOTcsMzIsMTE1LAotICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMDEsMzIsMTAyLDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLAotICAgIDMyLDExNiwxMTEsMzIsMTA5LDk3LDEwNywxMDEsMzIsMTA1LDExNiwzMiwxMDEsOTcsMTE1LDEwNSwKLSAgICAxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMDUsCi0gICAgMTEwLDMyLDEwMSwxMjAsMTEyLDEwMSwxMTQsMTA1LDEwOSwxMDEsMTEwLDExNiwxMTUsMTAsMzIsMzIsCi0gICAgMzIsMzIsNDAsMTAxLDQ2LDEwMyw0NiwzMiw5OSw5Nyw5OSwxMDQsMTAxLDMyLDExNSwxMTYsCi0gICAgOTcsMTE2LDMyLDExNCwxMDEsMTE1LDExNywxMDgsMTE2LDExNSw0MSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiw0MSwyLDExNCwzLDAsMCwwLDkwLDQsMTE1LDExNiw5NywxMTYsNDEsCi0gICAgMSwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsCi0gICAgMTE2LDc1LDAsMCwwLDExNSwyLDAsMCwwLDAsNywxMTQsNDEsMCwwLAotICAgIDAsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMTEsMCwKLSAgICAwLDAsNjcsMCwwLDAsMTE1LDU4LDAsMCwwLDEyMSwxNiwwLDExNiwwLAotICAgIDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDIyLDAsNCwxMTYsCi0gICAgMSwwLDEwNywxMCwwLDExNCw0MCwwLDEsMSwxLDEwMCwxLDAsODMsODksCi0gICAgMTEwLDEsMCw4OCwxMjQsMiwwLDEwNiwyLDAsMTAwLDIsMCw2NCwxMjQsMSwKLSAgICAwLDEwNywyLDAsODMsNDEsMywxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwKLSAgICAxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwKLSAgICAxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsCi0gICAgNDEsMywxMTQsNDEsMCwwLDAsMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LAotICAgIDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLAotICAgIDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCw5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLAotICAgIDExMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsCi0gICAgMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwwLDExNSwxMCwwLDAsMCwwLDIsMywKLSAgICAxLDE2LDEsMTMsMSw5LDEsMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDUsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDI0OCwxLDAsMCwxMDAsMCw5MCwwLDEwMCw5MSwKKyAgICA5MCwxLDEwMCw5Miw5MCwyLDEwMSwyLDEwMSwxLDIzLDAsOTAsMywxMDAsNCwKKyAgICAxMDAsNSwxMzIsMCw5MCw0LDEwMCw2LDEwMCw3LDEzMiwwLDkwLDUsMTAwLDgsCisgICAgMTAwLDksMTMyLDAsOTAsNiwxMDAsMTAsMTAwLDExLDEzMiwwLDkwLDcsMTAwLDEyLAorICAgIDEwMCwxMywxMzIsMCw5MCw4LDEwMCwxNCwxMDAsMTUsMTMyLDAsOTAsOSwxMDAsMTYsCisgICAgMTAwLDE3LDEzMiwwLDkwLDEwLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTEsMTAwLDIwLAorICAgIDEwMCwyMSwxMzIsMCw5MCwxMiwxMDAsOTMsMTAwLDIzLDEwMCwyNCwxMzIsMSw5MCwxMywKKyAgICAxMDEsMTQsMTAxLDEzLDEwNiwxNSwxMzEsMSw5MCwxNiwxMDAsMjUsMTA2LDE3LDEwMCwyNiwKKyAgICAxMDAsMjcsMTMxLDIsMTAwLDI4LDIzLDAsOTAsMTgsMTAxLDE5LDEwNiwyMCwxMDEsMTgsCisgICAgMTAwLDI3LDEzMSwyLDkwLDIxLDEwMCwyOSw5MCwyMiwxMDAsMzAsOTAsMjMsMTAwLDMxLAorICAgIDEwMywxLDkwLDI0LDEwMCwzMiwxMDMsMSw5MCwyNSwxMDEsMjUsNCwwLDkwLDI2LAorICAgIDkwLDI3LDEwMCw5NCwxMDAsMzMsMTAwLDM0LDE1NiwxLDEwMCwzNSwxMDAsMzYsMTMyLDMsCisgICAgOTAsMjgsMTAwLDM3LDEwMCwzOCwxMzIsMCw5MCwyOSwxMDAsMzksMTAwLDQwLDEzMiwwLAorICAgIDkwLDMwLDEwMCw0MSwxMDAsNDIsMTMyLDAsOTAsMzEsMTAwLDQzLDEwMCw0NCwxMzIsMCwKKyAgICA5MCwzMiwxMDAsNDUsMTAwLDQ2LDEzMiwwLDkwLDMzLDEwMCw0NywxMDAsNDgsMTMyLDAsCisgICAgOTAsMzQsMTAwLDk1LDEwMCw0OSwxMDAsNTAsMTMyLDEsOTAsMzUsMTAwLDk2LDEwMCw1MSwKKyAgICAxMDAsNTIsMTMyLDEsOTAsMzYsMTAwLDk3LDEwMCw1NCwxMDAsNTUsMTMyLDEsOTAsMzcsCisgICAgMTAwLDU2LDEwMCw1NywxMzIsMCw5MCwzOCwxMDEsMzksMTMxLDAsOTAsNDAsMTAwLDk4LAorICAgIDEwMCwzMywxMDEsNDAsMTAwLDU4LDE1NiwyLDEwMCw1OSwxMDAsNjAsMTMyLDMsOTAsNDEsCisgICAgNzEsMCwxMDAsNjEsMTAwLDYyLDEzMiwwLDEwMCw2MiwxMzEsMiw5MCw0Miw3MSwwLAorICAgIDEwMCw2MywxMDAsNjQsMTMyLDAsMTAwLDY0LDEzMSwyLDkwLDQzLDcxLDAsMTAwLDY1LAorICAgIDEwMCw2NiwxMzIsMCwxMDAsNjYsMTAxLDQzLDEzMSwzLDkwLDQ0LDcxLDAsMTAwLDY3LAorICAgIDEwMCw2OCwxMzIsMCwxMDAsNjgsMTMxLDIsOTAsNDUsNzEsMCwxMDAsNjksMTAwLDcwLAorICAgIDEzMiwwLDEwMCw3MCwxMDEsNDUsMTAxLDQ0LDEzMSw0LDkwLDQ2LDcxLDAsMTAwLDcxLAorICAgIDEwMCw3MiwxMzIsMCwxMDAsNzIsMTAxLDQ1LDEwMSw0MywxMzEsNCw5MCw0NywxMDMsMCwKKyAgICA5MCw0OCw3MSwwLDEwMCw3MywxMDAsNzQsMTMyLDAsMTAwLDc0LDEwMSw0NSwxMDEsNDMsCisgICAgMTMxLDQsOTAsNDksNzEsMCwxMDAsNzUsMTAwLDc2LDEzMiwwLDEwMCw3NiwxMzEsMiwKKyAgICA5MCw1MCw3MSwwLDEwMCw3NywxMDAsNzgsMTMyLDAsMTAwLDc4LDEzMSwyLDkwLDUxLAorICAgIDcxLDAsMTAwLDc5LDEwMCw4MCwxMzIsMCwxMDAsODAsMTMxLDIsOTAsNTIsNzEsMCwKKyAgICAxMDAsODEsMTAwLDgyLDEzMiwwLDEwMCw4MiwxMzEsMiw5MCw1MywxMDAsOTksMTAwLDgzLAorICAgIDEwMCw4NCwxMzIsMSw5MCw1NCwxMDAsODUsMTAwLDg2LDEzMiwwLDkwLDU1LDEwMCw4NywKKyAgICAxMDAsODgsMTMyLDAsOTAsNTYsMTAwLDg5LDEwMCw5MCwxMzIsMCw5MCw1NywxMDAsMzMsCisgICAgODMsMCw0MSwxMDAsOTcsOTQsMSwwLDAsNjcsMTExLDExNCwxMDEsMzIsMTA1LDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNDYsMTAsMTAsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsCisgICAgMTA1LDExNSwzMiw3OCw3OSw4NCwzMiwxMDksMTAxLDk3LDExMCwxMTYsMzIsMTE2LDExMSwzMiwKKyAgICA5OCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMDgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwKKyAgICAxMTQsMTE2LDEwMSwxMDAsMzMsMzIsNzMsMTE2LDMyLDEwNCw5NywxMTUsMzIsOTgsMTAxLDEwMSwKKyAgICAxMTAsMzIsMTAwLDEwMSwxMTUsMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTUsMTE3LDk5LDEwNCwxMCwKKyAgICAxMTYsMTA0LDk3LDExNiwzMiwxMDUsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTgsCisgICAgMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExMiwxMDEsMTAwLDMyLDEwNSwxMTAsMTE2LDExMSwKKyAgICAzMiw4MCwxMjEsMTE2LDEwNCwxMTEsMTEwLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsCisgICAgMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiw0NiwzMiw2NSwxMTUsMTAsMTE1LDExNyw5OSwxMDQsCisgICAgMzIsMTA1LDExNiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwNSwxMTAsMTA2LDEwMSw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSw5OSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsMzIsOTcsCisgICAgMTEwLDEwMCwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsCisgICAgMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDEwLDExOSwxMTEsMTE0LDEwNyw0NiwzMiwKKyAgICA3OSwxMTAsMTAxLDMyLDExNSwxMDQsMTExLDExNywxMDgsMTAwLDMyLDExNywxMTUsMTAxLDMyLDEwNSwKKyAgICAxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTcsMTE1LDMyLDExNiwxMDQsMTAxLDMyLAorICAgIDExMiwxMTcsOTgsMTA4LDEwNSw5OSw0NSwxMDIsOTcsOTksMTA1LDExMCwxMDMsMzIsMTE4LDEwMSwKKyAgICAxMTQsMTE1LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDIxOCwzLDExOSwxMDUsMTEwLDIxOCw2LDk5LDEyMSwKKyAgICAxMDMsMTE5LDEwNSwxMTAsMjE4LDYsMTAwLDk3LDExNCwxMTksMTA1LDExMCw5OSwwLDAsMCwKKyAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDMsMCwwLAorICAgIDAsMTE1LDYwLDAsMCwwLDExNiwwLDEwNiwxLDEwNiwyLDExNiwzLDEzMSwxLAorICAgIDExNCw0OCwxMTYsMCwxMDYsMSwxMDYsMiwxMTYsNCwxMzEsMSwxMTQsMzAsMTAwLDEsCisgICAgMTM3LDAsMTEwLDQsMTAwLDIsMTM3LDAsMTM1LDAsMTAyLDEsMTAwLDMsMTAwLDQsCisgICAgMTMyLDgsMTI1LDAsMTEwLDgsMTAwLDUsMTAwLDQsMTMyLDAsMTI1LDAsMTI0LDAsCisgICAgODMsMCw0MSw2LDc4LDkwLDEyLDgwLDg5LDg0LDcyLDc5LDc4LDY3LDY1LDgzLAorICAgIDY5LDc5LDc1LDExNSwxMiwwLDAsMCw4MCw4OSw4NCw3Miw3OSw3OCw2Nyw2NSwKKyAgICA4Myw2OSw3OSw3NSw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwyLDAsMCwwLDE5LDAsMCwwLDExNSwxMCwwLDAsMCwxMzYsMCwKKyAgICAxMTYsMCwxMDYsMSwxMDcsNiw4MywwLDQxLDEsMTIyLDUzLDg0LDExNCwxMTcsMTAxLAorICAgIDMyLDEwNSwxMDIsMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LAorICAgIDExNSwxMTYsMzIsOTgsMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsCisgICAgMTE1LDEwMSw0NSwxMDUsMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsCisgICAgNDYsNDEsMiwyMTgsMyw5NSwxMTEsMTE1LDkwLDcsMTAxLDExMCwxMTgsMTA1LDExNCwxMTEsCisgICAgMTEwLDE2OSwwLDQxLDEsMjE4LDMsMTA3LDEwMSwxMjEsMTE0LDQsMCwwLDAsMjUwLAorICAgIDM4LDYwLDEwMiwxMTQsMTExLDEyMiwxMDEsMTEwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwKKyAgICAxMDUsOTgsNDYsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwMSwxMjAsCisgICAgMTE2LDEwMSwxMTQsMTEwLDk3LDEwOCw2MiwyMTgsMTEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LAorICAgIDk5LDk3LDExNSwxMDEsMzcsMCwwLDAsMTE1LDIsMCwwLDAsMCwyLDEyMiwKKyAgICAzNyw5NSwxMDksOTcsMTA3LDEwMSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsOTUsOTksOTcsMTE1LAorICAgIDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE0LDEwMSwxMDgsOTcsCisgICAgMTIwLDk1LDk5LDk3LDExNSwxMDEsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMSwwLDAsMCw4MywwLDAsMCwxMTUsNCwwLDAsMCwKKyAgICAxMDAsMSw4MywwLDQxLDIsMTIyLDUzLDg0LDExNCwxMTcsMTAxLDMyLDEwNSwxMDIsMzIsCisgICAgMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNSwzMiwxMDksMTE3LDExNSwxMTYsMzIsOTgsCisgICAgMTAxLDMyLDk5LDEwNCwxMDEsOTksMTA3LDEwMSwxMDAsMzIsOTksOTcsMTE1LDEwMSw0NSwxMDUsCisgICAgMTEwLDExNSwxMDEsMTEwLDExNSwxMDUsMTE2LDEwNSwxMTgsMTAxLDEwOCwxMjEsNDYsNzAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDcsMCwwLDAsNDEsMCwwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwyLDQxLDUsMjE4LDMsMTE1LDEyMSwxMTUsMjE4LDgsCisgICAgMTEyLDEwOCw5NywxMTYsMTAyLDExMSwxMTQsMTA5LDIxOCwxMCwxMTUsMTE2LDk3LDExNCwxMTYsMTE1LAorICAgIDExOSwxMDUsMTE2LDEwNCwyMTgsMjcsOTUsNjcsNjUsODMsNjksOTUsNzMsNzgsODMsNjksCisgICAgNzgsODMsNzMsODQsNzMsODYsNjksOTUsODAsNzYsNjUsODQsNzAsNzksODIsNzcsCisgICAgODMsMjE4LDM1LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLDY5LDc4LDgzLDczLAorICAgIDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLDc3LDgzLDk1LDgzLAorICAgIDg0LDgyLDk1LDc1LDY5LDg5LDQxLDEsMTE0LDcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsNDEsMSwxMTQsNSwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsCisgICAgOTUsMTA5LDk3LDEwNywxMDEsOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDk1LDk5LDk3LDExNSwxMDEsCisgICAgMzAsMCwwLDAsMTE1LDE0LDAsMCwwLDAsMSwxMiwxLDEyLDEsNiwKKyAgICAyLDQsMiwxNCw0LDgsMywxMTQsMTMsMCwwLDAsOTksMSwwLDAsCiAgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTMsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLAotICAgIDIsMCw4Myw0MSwyLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwKLSAgICAxMTAsMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LAotICAgIDExNSwxMDIsMTA1LDEwOCwxMDEsNDYsMTA1LDAsMTI4LDAsMCw0MSwxLDExNCw0NSwwLAotICAgIDAsMCw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA1LDExNSwxMDIsMTA1LDEwOCwxMDEsOTQsMCwwLDAsMTE1LDIsMCwwLDAsMCwKLSAgICAyLDExNCw0NiwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMSwKLSAgICAwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzMSwwLDAsMCwKLSAgICAxMjQsMCwwLDExNSwxOCwwLDExNiwwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwKLSAgICAwLDAsMTE2LDIsMCwxMjQsMCwwLDEwMCwxLDAsMTMxLDIsMCw4Myw0MSwKLSAgICAyLDEyMiwzMCw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsMTE2LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA1LDExNSwxMDAsMTA1LDExNCwKLSAgICA0NiwxMDUsMCw2NCwwLDAsNDEsMywxMTQsMywwLDAsMCwyMTgsNiwxMDMsCi0gICAgMTAxLDExNiw5OSwxMTksMTAwLDExNCw0NSwwLDAsMCw0MSwxLDExNCwzNywwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA1LDExNSwxMDAsMTA1LDExNCw5OSwwLDAsCi0gICAgMCwxMTUsNiwwLDAsMCwwLDIsNiwxLDEyLDEsMTE0LDQ4LDAsMCwKLSAgICAwLDEwNSwxODIsMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsCi0gICAgMCwwLDAsMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE5MywwLDAsMCwKLSAgICAxMDAsMSwwLDEwNiwwLDAsMTI0LDAsMCwxMTYsMSwwLDEyNCwwLDAsMTMxLAotICAgIDEsMCwxMzEsMiwwLDEyNSwzLDAsMTE2LDIsMCwxMDYsMywwLDEyNCwzLAotICAgIDAsMTE2LDIsMCwxMDYsNCwwLDExNiwyLDAsMTA2LDUsMCw2NiwxMTYsMiwKLSAgICAwLDEwNiw2LDAsNjYsMTI0LDIsMCwxMDAsMiwwLDY0LDEzMSwzLDAsMTI1LAotICAgIDQsMCwxMjEsNjEsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsMywKLSAgICAwLDEzMSwyLDAsMTQzLDIwLDAsMTI1LDUsMCwxMjQsNSwwLDEwNiw5LDAsCi0gICAgMTI0LDEsMCwxMzEsMSwwLDEsODcsMTAwLDQsMCw4MSw4Miw4OCwxMTYsMiwKLSAgICAwLDEwNiwxMCwwLDEyNCwzLDAsMTI0LDAsMCwxMzEsMiwwLDEsODcsMTEwLAotICAgIDU5LDAsNCwxMTYsMTEsMCwxMDcsMTAsMCwxMTQsMTg4LDAsMSwxLDEsMTIxLAotICAgIDE3LDAsMTE2LDIsMCwxMDYsMTIsMCwxMjQsMywwLDEzMSwxLDAsMSw4NywKLSAgICAxMTAsMTgsMCw0LDExNiwxMSwwLDEwNywxMCwwLDExNCwxODAsMCwxLDEsMSwKLSAgICA4OSwxMTAsMSwwLDg4LDEzMCwwLDAsODksMTEwLDEsMCw4OCwxMDAsNCwwLAotICAgIDgzLDQxLDUsMTIyLDE2Miw2NiwxMDEsMTE1LDExNiw0NSwxMDEsMTAyLDEwMiwxMTEsMTE0LDExNiwKLSAgICAzMiwxMDIsMTE3LDExMCw5OSwxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMTksMTE0LDEwNSwKLSAgICAxMTYsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTE2LDExMSwzMiw5NywzMiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiw5NywxMTYsMTExLDEwOSwxMDUsOTksOTcsMTA4LDEwOCwxMjEsNDYsMTAsMzIsMzIsCi0gICAgMzIsMzIsNjYsMTAxLDMyLDExMiwxMTQsMTAxLDExMiw5NywxMTQsMTAxLDEwMCwzMiwxMTYsMTExLAotICAgIDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDEsMzIsOTcsMzIsNzAsMTA1LDEwOCwxMDEsNjksMTIwLAotICAgIDEwNSwxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDEwMiwzMiw5OSwxMTEsMTEwLAotICAgIDk5LDExNywxMTQsMTE0LDEwMSwxMTAsMTE2LDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwKLSAgICAxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDExNiwxMDEsMTA5LDExMiwxMTEsCi0gICAgMTE0LDk3LDExNCwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTAxLDEwMCw0NiwxMjIsNSwxMjMsMTI1LDQ2LDEyMywxMjUsMTA1LDE4MiwKLSAgICAxLDAsMCw5MCwyLDExOSw5OCw3OCw0MSwxMywyMTgsNiwxMDIsMTExLDExNCwxMDksCi0gICAgOTcsMTE2LDIxOCwyLDEwNSwxMDAsMTE0LDMsMCwwLDAsOTAsNCwxMTEsMTEyLDEwMSwKLSAgICAxMTAsOTAsNiw3OSw5NSw2OSw4OCw2Nyw3Niw5MCw3LDc5LDk1LDY3LDgyLDY5LAotICAgIDY1LDg0LDkwLDgsNzksOTUsODcsODIsNzksNzgsNzYsODksMjE4LDMsOTUsMTA1LAotICAgIDExMSwyMTgsNiw3MCwxMDUsMTA4LDEwMSw3Myw3OSwyMTgsNSwxMTksMTE0LDEwNSwxMTYsMTAxLAotICAgIDIxOCw3LDExNCwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTE0LDQyLDAsMCwwLDkwLDYsCi0gICAgMTE3LDExMCwxMDgsMTA1LDExMCwxMDcsNDEsNiwxMTQsMzcsMCwwLDAsMjE4LDQsMTAwLAotICAgIDk3LDExNiw5NywxMTQsNDQsMCwwLDAsOTAsOCwxMTIsOTcsMTE2LDEwNCw5NSwxMTYsCi0gICAgMTA5LDExMiw5MCwyLDEwMiwxMDAsMjE4LDQsMTAyLDEwNSwxMDgsMTAxLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMyw5NSwxMTksMTE0LAotICAgIDEwNSwxMTYsMTAxLDk1LDk3LDExNiwxMTEsMTA5LDEwNSw5OSwxMDYsMCwwLDAsMTE1LDI2LAotICAgIDAsMCwwLDAsNSwyNCwxLDksMSwzMywxLDMsMywyMSwxLDIwLAotICAgIDEsMjAsMSwxMywxLDMsMSwxNywxLDEzLDEsNSwxLDExNCw1NywwLAotICAgIDAsMCwxMDUsMjMsMTMsMCwwLDIzMywyLDAsMCwwLDExNCwxNSwwLDAsCi0gICAgMCwxMTUsMiwwLDAsMCwxMywxMCw5MCwxMSw5NSw5NSwxMTIsMTIxLDk5LDk3LAotICAgIDk5LDEwNCwxMDEsOTUsOTUsMTIyLDQsMTExLDExMiwxMTYsNDUsMTIyLDMsNDYsMTEyLDEyMSwKLSAgICAxMjIsNCw0NiwxMTIsMTIxLDk5LDc4LDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCisgICAgMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTMxLDEsMTAwLDEsNjQsMCwKKyAgICAxMDYsMSwxMDAsMiwxMDAsMywxMzEsMiw4MywwLDQxLDQsMTIyLDQyLDY3LDExMSwKKyAgICAxMTAsMTE4LDEwMSwxMTQsMTE2LDMyLDk3LDMyLDUxLDUwLDQ1LDk4LDEwNSwxMTYsMzIsMTA1LAorICAgIDExMCwxMTYsMTAxLDEwMywxMDEsMTE0LDMyLDExNiwxMTEsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwxMDEsCisgICAgNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCw0NiwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwKKyAgICAxMjcsMywwLDIzMyw0LDAsMCwwLDIxOCw2LDEwOCwxMDUsMTE2LDExNiwxMDgsMTAxLAorICAgIDQxLDIsMjE4LDMsMTA1LDExMCwxMTYsMjE4LDgsMTE2LDExMSw5NSw5OCwxMjEsMTE2LDEwMSwKKyAgICAxMTUsNDEsMSwyMTgsMSwxMjAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE5LDk1LDEwOCwxMTEsMTEwLDEwMyw0NywwLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LDE5LDAsMCwwLDk5LDEsCisgICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDMsMCwwLDAsNjcsCisgICAgMCwwLDAsMTE1LDEyLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEwMCwxLAorICAgIDEzMSwyLDgzLDAsNDEsMiwxMjIsNDcsNjcsMTExLDExMCwxMTgsMTAxLDExNCwxMTYsMzIsCisgICAgNTIsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDEwNSwxMTAsMzIsMTA4LDEwNSwxMTYsMTE2LDEwOCwKKyAgICAxMDEsNDUsMTAxLDExMCwxMDAsMTA1LDk3LDExMCwzMiwxMTYsMTExLDMyLDk3LDExMCwzMiwxMDUsCisgICAgMTEwLDExNiwxMDEsMTAzLDEwMSwxMTQsNDYsMTE0LDE1LDAsMCwwLDQxLDIsMTE0LDE2LAorICAgIDAsMCwwLDIxOCwxMCwxMDIsMTE0LDExMSwxMDksOTUsOTgsMTIxLDExNiwxMDEsMTE1LDQxLAorICAgIDEsOTAsOSwxMDUsMTEwLDExNiw5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsMTE0LDk1LAorICAgIDEwOCwxMTEsMTEwLDEwMyw1MiwwLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTE0LAorICAgIDIxLDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwxLDAsMCwKKyAgICAwLDMsMCwwLDAsNzEsMCwwLDAsMTE1LDIwLDAsMCwwLDExNiwwLAorICAgIDEwNiwxLDEwMCwxLDEwMCwyLDEzMiwwLDEyNCwwLDY4LDAsMTMxLDEsMTMxLDEsCisgICAgODMsMCw0MSwzLDEyMiwzMSw4MiwxMDEsMTEyLDEwOCw5Nyw5OSwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDMyLDEwMiwxMTEsMTE0LDMyLDExMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsMTA2LDExMSwKKyAgICAxMDUsMTEwLDQwLDQxLDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDQsMCwwLDAsODMsMCwwLDAsMTE1LDI2LDAsMCwwLDEwMywKKyAgICAwLDEyNCwwLDkzLDE4LDEyNSwxLDEyNCwxLDExNCw0LDEyNCwxLDEwNiwwLDExNiwKKyAgICAxLDEzMSwxLDE0NSwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMiwKKyAgICAyMTgsNiwxMTQsMTE1LDExNiwxMTQsMTA1LDExMiwyMTgsMTUsMTEyLDk3LDExNiwxMDQsOTUsMTE1LAorICAgIDEwMSwxMTIsOTcsMTE0LDk3LDExNiwxMTEsMTE0LDExNSw0MSwyLDIxOCwyLDQ2LDQ4LDIxOCwKKyAgICA0LDExMiw5NywxMTQsMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDI1MCwxMCw2MCwxMDgsMTA1LDExNSwxMTYsOTksMTExLDEwOSwxMTIsNjIsCisgICAgNTksMCwwLDAsMTE1LDIsMCwwLDAsNiwxLDEyMiwzMCw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDYsMTExLDEwNSwxMTAsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLAorICAgIDQ2LDYwLDEwOCwxMDUsMTE1LDExNiw5OSwxMTEsMTA5LDExMiw2Miw0MSwyLDIxOCw4LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDExNSwxMDEsMTEyLDIxOCw0LDEwNiwxMTEsMTA1LDExMCw0MSwxLDIxOCwKKyAgICAxMCwxMTIsOTcsMTE2LDEwNCw5NSwxMTIsOTcsMTE0LDExNiwxMTUsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEwLDk1LDExMiw5NywxMTYsCisgICAgMTA0LDk1LDEwNiwxMTEsMTA1LDExMCw1NywwLDAsMCwxMTUsNCwwLDAsMCwwLAorICAgIDIsMTAsMSwxMTQsMzAsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDUsMCwwLDAsNSwwLDAsMCw2NywwLDAsMCwxMTUsOTYsMCwKKyAgICAwLDAsMTE2LDAsMTE2LDEsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDM2LDEyNCwwLAorICAgIDEwNiwyLDExNiwzLDEzMSwxLDkyLDMsMTI1LDEsMTI1LDIsMTI1LDMsMTI0LDEsCisgICAgMTI0LDMsMTAyLDIsODMsMCwxMjAsNTAsMTE2LDQsMTI0LDAsMTMxLDEsNjgsMCwKKyAgICA5MywzOCwxMjUsNCwxMjQsNCwxMTYsMSwxMDcsNiwxMTQsNDYsMTI0LDAsMTA2LDUsCisgICAgMTI0LDQsMTAwLDEsMTAwLDIsMTQxLDIsOTIsMiwxMjUsMSwxMjUsMywxMjQsMSwKKyAgICAxMjQsMywxMDIsMiw4MywwLDExMyw0Niw4NywwLDEwMCwzLDEyNCwwLDEwMiwyLAorICAgIDgzLDAsNDEsNCwxMjIsMzIsODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDExNSwxMTIsCisgICAgMTA4LDEwNSwxMTYsNDAsNDEsNDYsMjMzLDEsMCwwLDAsNDEsMSw5MCw4LDEwOSwKKyAgICA5NywxMjAsMTE1LDExMiwxMDgsMTA1LDExNiwyMTgsMCw0MSw2LDIxOCwzLDEwOCwxMDEsMTEwLAorICAgIDExNCwyMywwLDAsMCwyMTgsMTAsMTE0LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwKKyAgICAxMTAsMTE0LDI3LDAsMCwwLDIxOCw4LDExNCwxMDEsMTE4LDEwMSwxMTQsMTE1LDEwMSwxMDAsCisgICAgMjE4LDYsMTE0LDExNSwxMTIsMTA4LDEwNSwxMTYsNDEsNSwyMTgsNCwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMiwxMTQsMTExLDExMCwxMTYsMjE4LDEsOTUsMjE4LDQsMTE2LDk3LDEwNSwxMDgsCisgICAgMTE0LDE4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTEyLDEwOCwxMDUsCisgICAgMTE2LDYzLDAsMCwwLDExNSwxNiwwLDAsMCwwLDIsMTIsMSwxNiwxLAorICAgIDgsMSwxNCwxLDgsMSwxOCwxLDEyLDEsMTE0LDQwLDAsMCwwLDk5LAorICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsCisgICAgNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwwLDEwNiwxLDEyNCwwLDEzMSwKKyAgICAxLDgzLDAsNDEsMSwxMjIsMTI2LDgzLDExNiw5NywxMTYsMzIsMTE2LDEwNCwxMDEsMzIsCisgICAgMTEyLDk3LDExNiwxMDQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzcsOTcsMTAwLDEwMSwzMiwKKyAgICA5NywzMiwxMTUsMTAxLDExMiw5NywxMTQsOTcsMTE2LDEwMSwzMiwxMDIsMTE3LDExMCw5OSwxMTYsCisgICAgMTA1LDExMSwxMTAsMzIsMTE2LDExMSwzMiwxMDksOTcsMTA3LDEwMSwzMiwxMDUsMTE2LDMyLDEwMSwKKyAgICA5NywxMTUsMTA1LDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsCisgICAgMTAxLDMyLDEwNSwxMTAsMzIsMTAxLDEyMCwxMTIsMTAxLDExNCwxMDUsMTA5LDEwMSwxMTAsMTE2LDExNSwKKyAgICAxMCwzMiwzMiwzMiwzMiw0MCwxMDEsNDYsMTAzLDQ2LDMyLDk5LDk3LDk5LDEwNCwxMDEsCisgICAgMzIsMTE1LDExNiw5NywxMTYsMzIsMTE0LDEwMSwxMTUsMTE3LDEwOCwxMTYsMTE1LDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDQxLDIsMTE0LDMsMCwwLDAsOTAsNCwxMTUsMTE2LAorICAgIDk3LDExNiw0MSwxLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgMTE1LDExNiw5NywxMTYsNzUsMCwwLDAsMTE1LDIsMCwwLDAsMCw3LDExNCwKKyAgICA0MSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNDgsMCwwLDAsMTIxLDEyLAorICAgIDExNiwwLDEyNCwwLDEzMSwxLDEyNSwyLDg3LDAsMTEwLDIwLDQsMCwxMTYsMSwKKyAgICAxMDcsMTAsMTE0LDMyLDEsMCwxLDAsMSwwLDEwMCwxLDgzLDAsODgsMCwKKyAgICAxMjQsMiwxMDYsMiwxMDAsMiw2NCwwLDEyNCwxLDEwNywyLDgzLDAsNDEsMywKKyAgICAxMjIsNDksODQsMTAxLDExNSwxMTYsMzIsMTE5LDEwNCwxMDEsMTE2LDEwNCwxMDEsMTE0LDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDExMiwxMDEsOTksMTA1LDEwMiwxMDUsMTAxLDEwMCwzMiwxMDksMTExLDEwMCwxMDEsMzIsMTE2LDEyMSwKKyAgICAxMTIsMTAxLDQ2LDcwLDEwNSwwLDI0MCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsCisgICAgMjE4LDcsNzksODMsNjksMTE0LDExNCwxMTEsMTE0LDIxOCw3LDExNSwxMTYsOTUsMTA5LDExMSwKKyAgICAxMDAsMTAxLDQxLDMsMTE0LDM3LDAsMCwwLDIxOCw0LDEwOSwxMTEsMTAwLDEwMSw5MCwKKyAgICA5LDExNSwxMTYsOTcsMTE2LDk1LDEwNSwxMTAsMTAyLDExMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTgsOTUsMTEyLDk3LDExNiwxMDQsCisgICAgOTUsMTA1LDExNSw5NSwxMDksMTExLDEwMCwxMDEsOTUsMTE2LDEyMSwxMTIsMTAxLDg1LDAsMCwKKyAgICAwLDExNSwxMCwwLDAsMCwwLDIsMiwxLDEyLDEsMTQsMSw2LDEsCisgICAgMTE0LDQ1LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDEwLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzEsODIsMTAxLDExMiwKKyAgICAxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTEsMTE1LDQ2LAorICAgIDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwwLDEyOCwwLAorICAgIDAsNDEsMSwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAyLDEwNSwxMDgsMTAxLDk0LDAsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMiwxMTQsNDYsMCwwLDAsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMjIsMCwwLDAsMTI0LDAsMTE1LDEyLDExNiwwLDEwNiwxLDEzMSwwLAorICAgIDEyNSwwLDExNiwyLDEyNCwwLDEwMCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsMzAsCisgICAgODIsMTAxLDExMiwxMDgsOTcsOTksMTAxLDEwOSwxMDEsMTEwLDExNiwzMiwxMDIsMTExLDExNCwzMiwKKyAgICAxMTEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDQ2LDEwNSwxMTUsMTAwLDEwNSwxMTQsNDYsMTA1LDAsCisgICAgNjQsMCwwLDQxLDMsMTE0LDMsMCwwLDAsMjE4LDYsMTAzLDEwMSwxMTYsOTksCisgICAgMTE5LDEwMCwxMTQsNDUsMCwwLDAsNDEsMSwxMTQsMzcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMTUsMTAwLDEwNSwxMTQsOTksMCwwLDAsMTE1LDYsCisgICAgMCwwLDAsMCwyLDQsMSw4LDEsMTE0LDQ4LDAsMCwwLDIzMywxODIsCisgICAgMSwwLDAsOTksMywwLDAsMCwwLDAsMCwwLDYsMCwwLDAsCisgICAgMTcsMCwwLDAsNjcsMCwwLDAsMTE1LDE2MiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMTYsMSwxMjQsMCwxMzEsMSwxMzEsMiwxMjUsMywxMTYsMiwxMDYsCisgICAgMywxMjQsMywxMTYsMiwxMDYsNCwxMTYsMiwxMDYsNSw2NiwwLDExNiwyLDEwNiwKKyAgICA2LDY2LDAsMTI0LDIsMTAwLDIsNjQsMCwxMzEsMywxMjUsNCwxMjEsNTAsMTE2LAorICAgIDcsMTA2LDgsMTI0LDQsMTAwLDMsMTMxLDIsMTQzLDE2LDEyNSw1LDEyNCw1LDEwNiwKKyAgICA5LDEyNCwxLDEzMSwxLDEsMCw4NywwLDEwMCw0LDgxLDAsODIsMCw4OCwKKyAgICAwLDExNiwyLDEwNiwxMCwxMjQsMywxMjQsMCwxMzEsMiwxLDAsODcsMCwxMTAsCisgICAgNTgsNCwwLDExNiwxMSwxMDcsMTAsMTE0LDE1NiwxLDAsMSwwLDEsMCwxMjEsCisgICAgMTQsMTE2LDIsMTA2LDEyLDEyNCwzLDEzMSwxLDEsMCw4NywwLDExMCwyMCw0LAorICAgIDAsMTE2LDExLDEwNywxMCwxMTQsMTQ4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLAorICAgIDIsODgsMCwxMzAsMCw4OSwwLDExMCwyLDg4LDAsMTAwLDQsODMsMCw0MSwKKyAgICA1LDEyMiwxNjIsNjYsMTAxLDExNSwxMTYsNDUsMTAxLDEwMiwxMDIsMTExLDExNCwxMTYsMzIsMTAyLAorICAgIDExNywxMTAsOTksMTE2LDEwNSwxMTEsMTEwLDMyLDExNiwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwKKyAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgOTcsMTE2LDExMSwxMDksMTA1LDk5LDk3LDEwOCwxMDgsMTIxLDQ2LDEwLDMyLDMyLDMyLDMyLAorICAgIDY2LDEwMSwzMiwxMTIsMTE0LDEwMSwxMTIsOTcsMTE0LDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDQsCisgICAgOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDk3LDMyLDcwLDEwNSwxMDgsMTAxLDY5LDEyMCwxMDUsMTE1LAorICAgIDExNiwxMTUsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMDIsMzIsOTksMTExLDExMCw5OSwxMTcsCisgICAgMTE0LDExNCwxMDEsMTEwLDExNiwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwKKyAgICAzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTAxLDEwOSwxMTIsMTExLDExNCw5NywKKyAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDExNiwxMTYsMTAxLDEwOSwKKyAgICAxMTIsMTE2LDEwMSwxMDAsNDYsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDEwNSwxODIsMSwwLAorICAgIDAsOTAsMiwxMTksOTgsNzgsNDEsMTMsMjE4LDYsMTAyLDExMSwxMTQsMTA5LDk3LDExNiwKKyAgICAyMTgsMiwxMDUsMTAwLDExNCwzLDAsMCwwLDkwLDQsMTExLDExMiwxMDEsMTEwLDkwLAorICAgIDYsNzksOTUsNjksODgsNjcsNzYsOTAsNyw3OSw5NSw2Nyw4Miw2OSw2NSw4NCwKKyAgICA5MCw4LDc5LDk1LDg3LDgyLDc5LDc4LDc2LDg5LDIxOCwzLDk1LDEwNSwxMTEsMjE4LAorICAgIDYsNzAsMTA1LDEwOCwxMDEsNzMsNzksMjE4LDUsMTE5LDExNCwxMDUsMTE2LDEwMSwyMTgsNywKKyAgICAxMTQsMTAxLDExMiwxMDgsOTcsOTksMTAxLDExNCw0MiwwLDAsMCw5MCw2LDExNywxMTAsCisgICAgMTA4LDEwNSwxMTAsMTA3LDQxLDYsMTE0LDM3LDAsMCwwLDIxOCw0LDEwMCw5NywxMTYsCisgICAgOTcsMTE0LDQ0LDAsMCwwLDkwLDgsMTEyLDk3LDExNiwxMDQsOTUsMTE2LDEwOSwxMTIsCisgICAgOTAsMiwxMDIsMTAwLDIxOCw0LDEwMiwxMDUsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsOTUsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSw5NSw5NywxMTYsMTExLDEwOSwxMDUsOTksMTA2LDAsMCwwLDExNSwyNiwwLDAsCisgICAgMCwwLDUsMTYsMSw2LDEsMjYsMSwyLDMsMTQsMSwyMCwxLDE2LAorICAgIDEsMTQsMSwyLDEsMTQsMSwxNCwxLDYsMSwxMTQsNTgsMCwwLDAsCisgICAgMTA1LDUwLDEzLDAsMCwyMzMsMiwwLDAsMCwxMTQsMTUsMCwwLDAsMTE1LAorICAgIDIsMCwwLDAsMTMsMTAsOTAsMTEsOTUsOTUsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDk1LDEyMiw0LDExMSwxMTIsMTE2LDQ1LDEyMiwzLDQ2LDExMiwxMjEsMTIyLDQsCisgICAgNDYsMTEyLDEyMSw5OSw3OCw0MSwxLDIxOCwxMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsCiAgICAgOTcsMTE2LDEwNSwxMTEsMTEwLDk5LDIsMCwwLDAsMSwwLDAsMCwxMSwwLAotICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSw4NywxLDAsMCwxMjQsCi0gICAgMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsNzYsMCwxMTYsMCwwLDEwNiwxLAotICAgIDAsMTAwLDIsMCwxMTYsMiwwLDEzMSwyLDAsMSwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsNTgsMCwxMDAsMywwLDEyNSwzLDAsMTE2LDMsMCwKLSAgICAxMjQsMywwLDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDExNCw3MCwwLDEwMCwKLSAgICA0LDAsMTEwLDMsMCwxMDAsNSwwLDEyNSwyLDAsMTE2LDQsMCwxMjQsMCwKLSAgICAwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LDUsMCwxMjQsNSwwLAotICAgIDEwNiw1LDAsMTAwLDYsMCwxMzEsMSwwLDkyLDMsMCwxMjUsNiwwLDEyNSwKLSAgICA3LDAsMTI1LDgsMCwxMTYsNiwwLDEwNiw3LDAsMTA2LDgsMCwxMjUsOSwKLSAgICAwLDEyNCw5LDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxNTQsMCwxMTYsOSwwLAotICAgIDEwMCw3LDAsMTMxLDEsMCwxMzAsMSwwLDEwMCw0LDAsMTA2LDEwLDAsMTI0LAotICAgIDYsMCwxMTQsMTcyLDAsMTI0LDYsMCwxMTAsMywwLDEyNCw4LDAsMTI0LDcsCi0gICAgMCwxMjQsOSwwLDEwMywzLDAsMTMxLDEsMCwxMjUsMTAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTA3LDgsMCwxMTQsMjQxLDAsMTE2LDYsMCwxMDYsMTEsMCwxMDYsCi0gICAgMTIsMCwxMDAsOCwwLDEwNywyLDAsMTE0LDIyOSwwLDEwMCw0LDAsMTI1LDIsCi0gICAgMCwxMTAsMTIsMCwxMTYsNiwwLDEwNiwxMSwwLDEwNiwxMiwwLDEyNSwyLDAsCi0gICAgMTE2LDEzLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwyLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEwNywzLDAsMTE0LDYzLDEsMTI0LDIsMCwxMDYsMTQsMCwxMzEsMCwKLSAgICAwLDExNSw0MiwxLDExNiwxNSwwLDEwMCw5LDAsMTA2LDE2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMTMwLDEsMCwxMDAsMTAsMCwxMDYsMTYsMCwxMjQsCi0gICAgMTAsMCwxMTYsMTcsMCwxMjQsMiwwLDEzMSwzLDAsMTI1LDEwLDAsMTE2LDE4LAotICAgIDAsMTI0LDQsMCwxMTYsMTksMCwxMjQsMTAsMCwxMTYsMjAsMCwxMDAsOCwwLAotICAgIDI1LDIzLDEzMSwzLDAsODMsNDEsMTEsOTcsMjU0LDIsMCwwLDcxLDEwNSwxMTgsCi0gICAgMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDk3LAotICAgIDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ0LDMyLDExNCwxMDEsMTE2LDExNywxMTQsCi0gICAgMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTA1LDExNiwKLSAgICAxMTUsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDAsCi0gICAgMTExLDEwMSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTEwLDEwMSwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgMTAxLDEyMCwxMDUsMTE1LDExNiw1OSwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTE1LDEwNSwxMDksMTEyLAotICAgIDEwOCwxMjEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKLSAgICA5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LDEwNCwxMDEsMTAsMzIsMzIsMzIsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTksOTcsMTA4LDk5LDExNywxMDgsOTcsCi0gICAgMTE2LDEwMSwxMDAsMzIsOTcsMTE1LDMyLDEwNSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLAotICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE5LDEwMSwxMTQsMTAxLDMyLDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwzOSwKLSAgICAxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExMiw5NywKLSAgICAxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiw5OSwxMTEsMTEwLDExNiwxMTQsMTExLDEwOCwxMTUsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDExNCwxMDEsMTE1LDExNywxMDksMTAxLDEwMCwzMiwxMTEsMTEyLAotICAgIDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsCi0gICAgMzIsMTExLDEwMiwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMzIsNzMsMTAyLDMyLDM5LDExMSwKLSAgICAxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTA1LDExNSwzMiwKLSAgICAxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSw0NCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTE2LAotICAgIDExNCwxMDUsMTEwLDEwMywzMiwxMTQsMTAxLDExMiwxMTQsMTAxLDExNSwxMDEsMTEwLDExNiw5NywxMTYsCi0gICAgMTA1LDExMSwxMTAsMTAsMzIsMzIsMzIsMzIsMTExLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw5NywKLSAgICAxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsMTA1LDExNSwzMiwxMTYsOTcsMTA3LDEwMSwxMTAsCi0gICAgMzIsOTcsMTEwLDEwMCwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExNiwxMTEsCi0gICAgMzIsOTgsMTAxLDMyLDk3LDEwOCwxMTIsMTA0LDk3LDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LAotICAgIDMyLDQwLDEwMSwxMDgsMTE1LDEwMSwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwKLSAgICAxMTQsMTAsMzIsMzIsMzIsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLAotICAgIDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LDExNCw5NywxMDksMTAxLAotICAgIDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTAxLAotICAgIDEwMCw0NiwzMiw3MywxMDIsMzIsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw3OCwxMTEsMTEwLDEwMSwKLSAgICA0NCwxMCwzMiwzMiwzMiwzMiw5NywzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMTgsOTcsMTA4LAotICAgIDExNywxMDEsMzIsMTA1LDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsOTcsMTA5LDEwMSwzMiw5NywKLSAgICAxMTUsMzIsMTE1LDEwMSwxMTYsMTE2LDEwNSwxMTAsMTAzLDMyLDM5LDExMSwxMTIsMTE2LDEwNSwxMDksCi0gICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDEsMTA5LDExMiwxMTYsMTIxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsMTAzLDEwLDMyLDMyLDMyLAotICAgIDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsOTcsMzIsNzAsOTcsMTA4LDExNSwxMDEsMzIsMTE4LAotICAgIDk3LDEwOCwxMTcsMTAxLDMyLDEwNSwxMTUsMzIsMTAxLDExMywxMTcsMTA1LDExOCw5NywxMDgsMTAxLAotICAgIDExMCwxMTYsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLAotICAgIDM5LDQ5LDM5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDczLDEwMiwzMiwxMTUsMTIxLDExNSwKLSAgICA0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsCi0gICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwKLSAgICAxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwKLSAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywKLSAgICAxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDcwLDExNiwxMDQsCi0gICAgMTAxLDMyLDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwxMDAsMTAxLAotICAgIDMyLDExMiw5NywxMTQsOTcsMTA5LDEwMSwxMTYsMTAxLDExNCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCi0gICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNTksMzIsMTE3LDExNSwxMDEsMzIsMzksMTExLAotICAgIDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTEwLDExNSwKLSAgICAxMTYsMTAxLDk3LDEwMCwxMjIsNTAsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwKLSAgICAxMTQsMTA1LDEwMCwxMDEsMzIsMTExLDExNCwzMiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsCi0gICAgMTE2LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTcsMTE1LDExNiwzMiw5OCwxMDEsMzIsMTE1LDEwMSwxMTYsCi0gICAgMzIsMTE2LDExMSwzMiw3OCwxMTEsMTEwLDEwMSwxMTQsMzIsMCwwLDAsMTE0LDMxLDAsCi0gICAgMCwwLDIxOCwxLDQ2LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLAotICAgIDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwKLSAgICAxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMjMzLDAsMCwwLDAsCi0gICAgMTIyLDI0LDEyMywzMywxMTQsMTI1LDMyLDEwNSwxMTUsMzIsMTEwLDExMSwxMTYsMzIsOTcsMTA4LAotICAgIDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMTIyLDcsMTIzLDEyNSw0NiwxMjMsCi0gICAgMTI1LDEyMywxMjUsNDEsMjEsMjE4LDksOTUsMTE5LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMTE1LAotICAgIDIxOCw0LDExOSw5NywxMTQsMTEwLDIxOCwxOCw2OCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDg3LDk3LDExNCwxMTAsMTA1LDExMCwxMDMsMjE4LDksODQsMTIxLDExMiwxMDEsCi0gICAgNjksMTE0LDExNCwxMTEsMTE0LDExNCw0MCwwLDAsMCwxMTQsMzQsMCwwLDAsMTE0LAotICAgIDgsMCwwLDAsMjE4LDE0LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LAotICAgIDExNiwxMDUsMTExLDExMCwyMTgsOSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsMjE4LAotICAgIDE5LDc4LDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsMjgsMCwwLDAsMjE4LDUsMTAyLDEwOCw5NywxMDMsMTE1LAotICAgIDIxOCw4LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsMjE4LDMsMTE1LDExNiwxMTQsMjE4LAotICAgIDcsMTA1LDExNSw5NywxMDgsMTEwLDExNywxMDksMjE4LDEwLDg2LDk3LDEwOCwxMTcsMTAxLDY5LAotICAgIDExNCwxMTQsMTExLDExNCwxMTQsNDksMCwwLDAsMjE4LDQsOTUsNzksODAsODQsMTE0LAotICAgIDMwLDAsMCwwLDIxOCw4LDk1LDgwLDg5LDY3LDY1LDY3LDcyLDY5LDIxOCwxNywKLSAgICA2Niw4OSw4NCw2OSw2Nyw3OSw2OCw2OSw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSwKLSAgICA4Myw0MSwxMSwxMTQsMzcsMCwwLDAsOTAsMTQsMTAwLDEwMSw5OCwxMTcsMTAzLDk1LAotICAgIDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMTE0LDU5LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMDEsMTE1LDExNSw5NywxMDMsMTAxLDIxOCw0LDEwNCwxMDEsOTcsMTAwLDExNCwzOSwwLDAsCi0gICAgMCw5MCw0LDk4LDk3LDExNSwxMDEsMjE4LDMsMTE1LDEwMSwxMTIsMjE4LDQsMTE0LDEwMSwKLSAgICAxMTUsMTE2LDkwLDMsMTE2LDk3LDEwMyw5MCwxNSw5NywxMDgsMTA5LDExMSwxMTUsMTE2LDk1LAotICAgIDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsCi0gICAgMTE0LDExMSwxMDksOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNTQsMCwwLDAsMTE1LDQ2LAotICAgIDAsMCwwLDAsMTgsMTIsMSw5LDEsNywxLDEyLDEsNiwxLDEyLAotICAgIDEsMTgsMSwxOCwxLDI0LDEsMTIsMSwxMiwxLDEyLDEsMzYsMSwxMiwKLSAgICAxLDE4LDEsOSwyLDEyLDEsMTIsMSwxMiwxLDEyLDEsMjEsMSwyMSwKLSAgICAxLDExNCw4MSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsOCwKLSAgICAwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw2MiwxLDAsMCwKLSAgICAxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LAotICAgIDMwLDAsMTE2LDMsMCwxMDAsMiwwLDEzMSwxLDAsMTMwLDEsMCwxMTYsNCwKLSAgICAwLDEyNCwwLDAsMTMxLDEsMCw5MiwyLDAsMTI1LDEsMCwxMjUsMiwwLAotICAgIDExNiw0LDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMSwwLDEyNSwKLSAgICAzLDAsMTI0LDMsMCwxMTYsNSwwLDEwNywzLDAsMTE0LDEwMiwwLDExNiw2LAotICAgIDAsMTAwLDMsMCwxMDYsNywwLDExNiw1LDAsMTI0LDAsMCwxMzEsMiwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiw4LDAsMTAwLDQsMCwxMzEsCi0gICAgMSwwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMTEsMCwxMDcsNywwLDExNCwxNTMsCi0gICAgMCwxMTYsNiwwLDEwMCw3LDAsMTA2LDcsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMzAsMSwwLDExMCwxMjUsMCwxMjQsNCwwLDEwMCw2LDAsMTA3LAotICAgIDIsMCwxMTQsMjIsMSwxMjQsMiwwLDEwNiw5LDAsMTAwLDQsMCwxMDAsNSwKLSAgICAwLDEzMSwyLDAsMTAwLDEyLDAsMjUsMTI1LDUsMCwxMjQsNSwwLDEwNiwxMCwKLSAgICAwLDExNiwxMSwwLDEzMSwxLDAsMTE1LDIyMywwLDExNiw2LDAsMTAwLDgsMCwKLSAgICAxMDYsNywwLDExNiwxMSwwLDEzMSwxLDAsMTMxLDEsMCwxMzAsMSwwLDEyNCwKLSAgICA1LDAsMTE2LDEyLDAsMTE2LDExLDAsMTMxLDEsMCwxMDAsMSwwLDEzMywyLAotICAgIDAsMjUsMTI1LDYsMCwxMjQsNiwwLDEwNiwxMywwLDEzMSwwLDAsMTE1LDIyLAotICAgIDEsMTE2LDYsMCwxMDAsOSwwLDEwNiw3LDAsMTI0LDUsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMiwwLDEwNiwxNCwwLDEwMCw0LDAsMTMxLAotICAgIDEsMCwxMDAsMTAsMCwyNSwxMjUsNywwLDExNiwxNSwwLDEyNCwxLDAsMTI0LAotICAgIDcsMCwxMTYsMTYsMCwxMDAsMTAsMCwyNSwyMywxMzEsMiwwLDgzLDQxLDEzLAotICAgIDk3LDExMCwxLDAsMCw3MSwxMDUsMTE4LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiw0NiwxMTIsMTIxLDk5LDQ2LDMyLDEwMiwKLSAgICAxMDUsMTA4LDEwMSw0NCwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDEwNSwxMTYsMTE1LDMyLDQ2LDExMiwxMjEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsNDYsCi0gICAgMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsCi0gICAgMTE2LDMyLDExMCwxMDEsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMjAsMTA1LDExNSwxMTYsNTksCi0gICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDExNSwxMDUsMTA5LDExMiwxMDgsMTIxLDMyLDExNCwxMDEsMTE2LAotICAgIDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLAotICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsCi0gICAgMTAxLDMyLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsMTAwLDMyLDExNiwxMTEsMzIsCi0gICAgOTksMTExLDExNCwxMTQsMTAxLDExNSwxMTIsMTExLDExMCwxMDAsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiw0NiwxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiwzMiw3MywxMDIsCi0gICAgMzIsMTEyLDk3LDExNiwxMDQsMzIsMTAwLDExMSwxMDEsMTE1LDEwLDMyLDMyLDMyLDMyLDExMCwKLSAgICAxMTEsMTE2LDMyLDk5LDExMSwxMTAsMTAyLDExMSwxMTQsMTA5LDMyLDExNiwxMTEsMzIsODAsNjksCi0gICAgODAsMzIsNTEsNDksNTIsNTUsNDcsNTIsNTYsNTYsMzIsMTAyLDExMSwxMTQsMTA5LDk3LAotICAgIDExNiw0NCwzMiw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNSwKLSAgICAxMDgsMTA4LDMyLDk4LDEwMSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LDMyLDczLDEwMiwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsCi0gICAgMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMzIsMTE2LDEwNCwxMDEsMTEwLDMyLDc4LAotICAgIDExMSwxMTYsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LAotICAgIDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiwKLSAgICA5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwxMjIsMzcsMTIzLDEyNSwzMiwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMTEsMTE2LDExNiwxMTEsMTA5LDQ1LDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsCi0gICAgMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMjMzLDMsMCwwLDAsCi0gICAgMTIyLDMzLDEwMSwxMjAsMTEyLDEwMSw5OSwxMTYsMTAxLDEwMCwzMiwxMTEsMTEwLDEwOCwxMjEsMzIsCi0gICAgNTAsMzIsMTExLDExNCwzMiw1MSwzMiwxMDAsMTExLDExNiwxMTUsMzIsMTA1LDExMCwzMiwxMjMsCi0gICAgMzMsMTE0LDEyNSwxMjIsNTcsMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsMTEwLDk3LDEwOSwxMDEsMzIsMTAwLDExMSwxMDEsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDExNSwKLSAgICAxMTYsOTcsMTE0LDExNiwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDUyLAotICAgIDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsCi0gICAgMTAxLDEwOCwzMiwxMjMsMzMsMTE0LDEyNSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LAotICAgIDExMCwzMiw5NywxMDgsMTEyLDEwNCw5NywxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwzMiwxMTgsCi0gICAgOTcsMTA4LDExNywxMDEsMTE0LDYxLDAsMCwwLDYyLDIsMCwwLDAsMTE0LDU4LAotICAgIDAsMCwwLDExNCw4MiwwLDAsMCwyMzMsMjU0LDI1NSwyNTUsMjU1LDQxLDE3LDExNCwKLSAgICA4LDAsMCwwLDExNCw2NiwwLDAsMCwxMTQsNjcsMCwwLDAsMTE0LDY4LAotICAgIDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNzUsMCwwLDAsMTE0LDczLDAsCi0gICAgMCwwLDExNCw0OSwwLDAsMCwyMTgsNSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDM2LAotICAgIDAsMCwwLDExNCwxMCwwLDAsMCwxMTQsNzQsMCwwLDAsMTE0LDMzLDAsCi0gICAgMCwwLDExNCw3MiwwLDAsMCwyMTgsOSwxMTIsOTcsMTE0LDExNiwxMDUsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNCwzMCwwLDAsMCwyMTgsMTUsODMsNzksODUsODIsNjcsNjksOTUsCi0gICAgODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsOCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDc4LDAsMCwwLDkwLDE2LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5NSwxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTAsNywxMTIsMTIxLDk5LDk3LDk5LDEwNCwxMDEsOTAsCi0gICAgOSwxMDAsMTExLDExNiw5NSw5OSwxMTEsMTE3LDExMCwxMTYsMTE0LDU5LDAsMCwwLDkwLAotICAgIDksMTExLDExMiwxMTYsOTUsMTA4LDEwMSwxMTgsMTAxLDEwOCw5MCwxMyw5OCw5NywxMTUsMTAxLAotICAgIDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKLSAgICA5NSwxMDIsMTE0LDExMSwxMDksOTUsOTksOTcsOTksMTA0LDEwMSw0MiwxLDAsMCwxMTUsCi0gICAgNDQsMCwwLDAsMCw5LDE4LDEsMTIsMSwxOCwxLDE4LDEsMTIsMSwKLSAgICA5LDEsMTUsMSwxNSwxLDEyLDEsOSwxLDE1LDEsMTIsMSwyMiwxLAotICAgIDE1LDEsOSwxLDEyLDEsMjIsMSwxMiwxLDksMSwxMiwxLDE5LDEsCi0gICAgMTE0LDg3LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxNjQsMCwwLDAsMTE2LAotICAgIDAsMCwxMjQsMCwwLDEzMSwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCwyMiwKLSAgICAwLDEwMCwyLDAsODMsMTI0LDAsMCwxMDYsMSwwLDEwMCwzLDAsMTMxLDEsCi0gICAgMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMiwxMTUsODEsMCwxMjQsMywwLDEwNiwyLDAsMTMxLDAsMCwxMDAsNywwLAotICAgIDEwMCw4LDAsMTMzLDIsMCwyNSwxMDAsNiwwLDEwNywzLDAsMTE0LDg1LDAsCi0gICAgMTI0LDAsMCw4MywxMjEsMTYsMCwxMTYsMywwLDEyNCwwLDAsMTMxLDEsMCwKLSAgICAxMjUsNCwwLDg3LDExMCw0MCwwLDQsMTE2LDQsMCwxMTYsNSwwLDEwMiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDE0MywwLDEsMSwxLDEyNCwwLDAsMTAwLDIsMCwKLSAgICAxMDAsOSwwLDEzMywyLDAsMjUsMTI1LDQsMCw4OSwxMTAsMSwwLDg4LDExNiwKLSAgICA2LDAsMTI0LDQsMCwxMzEsMSwwLDExNCwxNjAsMCwxMjQsNCwwLDgzLDEyNCwKLSAgICAwLDAsODMsNDEsMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsCi0gICAgMTAxLDQxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsCi0gICAgMTEwLDk5LDExNiwxMDUsMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LAotICAgIDExNCwxMDEsMTA4LDEyMSwzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwKLSAgICAxMDAsMTE1LDQ1LDk5LDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwKLSAgICAzMiwxMDIsMTExLDExNCwxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LAotICAgIDExNiw5NSw2OSwxMjAsMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgODcsMTA1LDExNiwxMDQsNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLAotICAgIDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE0LDYxLDAsMCwwLDc4LDExNCw2MCwwLDAsMCwxMTQsODIsCi0gICAgMCwwLDAsMTE0LDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsCi0gICAgMjU1LDIzMywyNTUsMjU1LDI1NSwyNTUsMTE0LDg5LDAsMCwwLDQxLDcsMTE0LDMzLDAsCi0gICAgMCwwLDExNCwzNCwwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4NywKLSAgICAwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDczLDAsMCwwLDExNCw0NiwwLAotICAgIDAsMCw0MSw1LDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCwxMTQsODAsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLAotICAgIDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgOTUsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDYsMCwwLDAsMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwKLSAgICAxMDEsMTAyLDEwNSwxMDgsMTAxLDc1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsCi0gICAgMTgsMSw0LDEsMjQsMSwzNSwxLDQsMSwzLDEsMTYsMSwxOSwxLAotICAgIDIxLDEsMTE0LDkzLDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwKLSAgICAxLDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSw5MiwwLDAsCi0gICAgMCwxMjQsMCwwLDEwNiwwLDAsMTE2LDEsMCwxMTYsMiwwLDEzMSwxLDAsCi0gICAgMTMxLDEsMCwxMTQsNTksMCwxMjEsMTQsMCwxMTYsMywwLDEyNCwwLDAsMTMxLAotICAgIDEsMCw4Myw4NywxMTMsODgsMCw0LDExNiw0LDAsMTA3LDEwLDAsMTE0LDU1LAotICAgIDAsMSwxLDEsODksMTEzLDg4LDAsODgsMTEwLDI5LDAsMTI0LDAsMCwxMDYsCi0gICAgMCwwLDExNiwxLDAsMTE2LDUsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDg0LAotICAgIDAsMTI0LDAsMCw4MywxMDAsMCwwLDgzLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICA0MSw2LDIxOCw4LDEwMSwxMTAsMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywKLSAgICAxMTIsMTA4LDEwMSwxMTQsODYsMCwwLDAsMTE0LDgxLDAsMCwwLDExNCw2OCwwLAotICAgIDAsMCwxMTQsNzYsMCwwLDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLAotICAgIDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDExLDk1LDEwMywxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk0LAotICAgIDEsMCwwLDExNSwxNiwwLDAsMCwwLDEsMjEsMSwzLDEsMTQsMSwKLSAgICAxMywxLDgsMSwyMSwxLDQsMiwxMTQsOTcsMCwwLDAsOTksMSwwLAotICAgIDAsMCwwLDAsMCwwLDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDYwLDAsMCwwLDEyMSwxOSwwLDExNiwwLDAsMTI0LDAsMCwKLSAgICAxMzEsMSwwLDEwNiwxLDAsMTI1LDEsMCw4NywxMTAsMjQsMCw0LDExNiwyLAotICAgIDAsMTA3LDEwLDAsMTE0LDQ1LDAsMSwxLDEsMTAwLDEsMCwxMjUsMSwwLAotICAgIDg5LDExMCwxLDAsODgsMTI0LDEsMCwxMDAsMiwwLDc5LDEyNSwxLDAsMTI0LAotICAgIDEsMCw4Myw0MSwzLDEyMiw1MSw2Nyw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLAotICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDEwMSwzMiwxMTIsMTAxLDExNCwxMDksMTA1LDExNSwKLSAgICAxMTUsMTA1LDExMSwxMTAsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDk4LDEyMSwxMTYsMTAxLAotICAgIDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMDUsMTgyLDEsMCwwLDIzMywKLSAgICAxMjgsMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMTE0LDQzLDAsMCwwLAotICAgIDExNCw0MiwwLDAsMCw0MSwyLDExNCwzNywwLDAsMCwxMTQsNDQsMCwwLAorICAgIDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwyNDQsMCwwLDAsMTI0LAorICAgIDEsMTAwLDEsMTA3LDksMTE0LDUyLDExNiwwLDEwNiwxLDEwMCwyLDExNiwyLDEzMSwKKyAgICAyLDEsMCwxMjQsMiwxMDAsMSwxMDcsOSwxMTQsNDAsMTAwLDMsMTI1LDMsMTE2LAorICAgIDMsMTI0LDMsMTMxLDEsMTMwLDEsMTI0LDEsMTE0LDQ4LDEwMCw0LDExMCwyLDEwMCwKKyAgICA1LDEyNSwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEyNSwwLDExNiw2LDEyNCwKKyAgICAwLDEzMSwxLDkyLDIsMTI1LDQsMTI1LDUsMTI0LDUsMTA2LDcsMTAwLDYsMTMxLAorICAgIDEsOTIsMywxMjUsNiwxMjUsNywxMjUsOCwxMTYsOCwxMDYsOSwxMDYsMTAsMTI1LAorICAgIDksMTI0LDksMTAwLDEsMTA3LDgsMTE0LDExNCwxMTYsMTEsMTAwLDcsMTMxLDEsMTMwLAorICAgIDEsMTAwLDQsMTA2LDEyLDEyNCw2LDExNCwxMjYsMTI0LDYsMTEwLDIsMTI0LDgsMTI0LAorICAgIDcsMTI0LDksMTAzLDMsMTMxLDEsMTI1LDEwLDEyNCwyLDEwMCwxLDEwNyw4LDExNCwKKyAgICAxNzIsMTE2LDgsMTA2LDEzLDEwNiwxNCwxMDAsOCwxMDcsMiwxMTQsMTY0LDEwMCw0LDEyNSwKKyAgICAyLDExMCw4LDExNiw4LDEwNiwxMywxMDYsMTQsMTI1LDIsMTE2LDE1LDEyNCwyLDEzMSwKKyAgICAxLDEyNSwyLDEyNCwyLDEwMCw0LDEwNywzLDExNCwyMjQsMTI0LDIsMTA2LDE2LDEzMSwKKyAgICAwLDExNSwyMTAsMTE2LDE3LDEwMCw5LDEwNiwxOCwxMjQsMiwxMzEsMSwxMzEsMSwxMzAsCisgICAgMSwxMDAsMTAsMTA2LDE4LDEyNCwxMCwxMTYsMTksMTI0LDIsMTMxLDMsMTI1LDEwLDExNiwKKyAgICAyMCwxMjQsNCwxMTYsMjEsMTI0LDEwLDExNiwyMiwxMDAsOCwyNSwwLDIzLDAsMTMxLAorICAgIDMsODMsMCw0MSwxMSw5NywyNTQsMiwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLAorICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLAorICAgIDEyMSwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiw0NiwKKyAgICAxMTIsMTIxLDk5LDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwKKyAgICAzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLDEwNSwKKyAgICAxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwzMiwKKyAgICAxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsCisgICAgMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwzMiwzMiwzMiw0NiwxMTIsMTIxLDk5LAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiw5NywxMTUsMzIsMTA1LDEwMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLDMyLDEwMiwKKyAgICAxMDUsMTA4LDEwMSwzMiwxMTksMTAxLDExNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDM5LDExMSwxMTIsMTE2LAorICAgIDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzksMzIsMTEyLDk3LDExNCw5NywxMDksCisgICAgMTAxLDExNiwxMDEsMTE0LDMyLDk5LDExMSwxMTAsMTE2LDExNCwxMTEsMTA4LDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTIsMTE0LDEwMSwxMTUsMTE3LDEwOSwxMDEsMTAwLDMyLDExMSwxMTIsMTE2LDEwNSwxMDksCisgICAgMTA1LDEyMiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTA4LDEwMSwxMTgsMTAxLDEwOCwzMiwxMTEsMTAyLAorICAgIDEwLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsCisgICAgMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwzMiw3MywxMDIsMzIsMzksMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDk3LDExNiwxMDUsMTExLDExMCwzOSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTYsMTE0LDEwNSwxMTAsCisgICAgMTAzLDMyLDExNCwxMDEsMTEyLDExNCwxMDEsMTE1LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDk3LDExNCwxMDMsMTE3LAorICAgIDEwOSwxMDEsMTEwLDExNiwzMiwxMDUsMTE1LDMyLDExNiw5NywxMDcsMTAxLDExMCwzMiw5NywxMTAsCisgICAgMTAwLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTE2LDExMSwzMiw5OCwxMDEsCisgICAgMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwxMDUsOTksMzIsNDAsMTAxLAorICAgIDEwOCwxMTUsMTAxLDMyLDg2LDk3LDEwOCwxMTcsMTAxLDY5LDExNCwxMTQsMTExLDExNCwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDEsNDYsMTAsMTAsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwKKyAgICAxMDEsMTE0LDExNCwxMDUsMTAwLDEwMSwzMiwxMTIsOTcsMTE0LDk3LDEwOSwxMDEsMTE2LDEwMSwxMTQsCisgICAgMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLAorICAgIDczLDEwMiwzMiwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDc4LDExMSwxMTAsMTAxLDQ0LDEwLDMyLAorICAgIDMyLDMyLDMyLDk3LDMyLDg0LDExNCwxMTcsMTAxLDMyLDExOCw5NywxMDgsMTE3LDEwMSwzMiwKKyAgICAxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExNSw5NywxMDksMTAxLDMyLDk3LDExNSwzMiwxMTUsCisgICAgMTAxLDExNiwxMTYsMTA1LDExMCwxMDMsMzIsMzksMTExLDExMiwxMTYsMTA1LDEwOSwxMDUsMTIyLDk3LAorICAgIDExNiwxMDUsMTExLDExMCwzOSwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMSwxMDksMTEyLAorICAgIDExNiwxMjEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsMTAsMzIsMzIsMzIsMzIsMTE5LDEwNCwKKyAgICAxMDUsMTA4LDEwMSwzMiw5NywzMiw3MCw5NywxMDgsMTE1LDEwMSwzMiwxMTgsOTcsMTA4LDExNywKKyAgICAxMDEsMzIsMTA1LDExNSwzMiwxMDEsMTEzLDExNywxMDUsMTE4LDk3LDEwOCwxMDEsMTEwLDExNiwzMiwKKyAgICAxMTYsMTExLDMyLDExNSwxMDEsMTE2LDExNiwxMDUsMTEwLDEwMywzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDExNiwxMTEsMzIsMzksNDksMzksCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksCisgICAgMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwKKyAgICAxMDQsMTAxLDk1LDExNiw5NywxMDMsMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwzMiwxMTYsCisgICAgMTA0LDEwMSwxMTAsMzIsNzgsMTExLDExNiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAorICAgIDEwMSwxMDAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLAorICAgIDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsNzAsMTE2LDEwNCwxMDEsMzIsMTAwLAorICAgIDEwMSw5OCwxMTcsMTAzLDk1LDExMSwxMTgsMTAxLDExNCwxMTQsMTA1LDEwMCwxMDEsMzIsMTEyLDk3LAorICAgIDExNCw5NywxMDksMTAxLDExNiwxMDEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSwKKyAgICA5OSw5NywxMTYsMTAxLDEwMCw1OSwzMiwxMTcsMTE1LDEwMSwzMiwzOSwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLDM5LDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsCisgICAgMTAwLDEyMiw1MCwxMDAsMTAxLDk4LDExNywxMDMsOTUsMTExLDExOCwxMDEsMTE0LDExNCwxMDUsMTAwLAorICAgIDEwMSwzMiwxMTEsMTE0LDMyLDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiw5NywxMTYsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExNywxMTUsMTE2LDMyLDk4LDEwMSwzMiwxMTUsMTAxLDExNiwzMiwxMTYsMTExLAorICAgIDMyLDc4LDExMSwxMTAsMTAxLDExNCwzMiwwLDAsMCwxMTQsMzEsMCwwLDAsMjE4LAorICAgIDEsNDYsMTIyLDM2LDExNSwxMjEsMTE1LDQ2LDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsCisgICAgMTE2LDk3LDExNiwxMDUsMTExLDExMCw0Niw5OSw5Nyw5OSwxMDQsMTAxLDk1LDExNiw5NywxMDMsCisgICAgMzIsMTA1LDExNSwzMiw3OCwxMTEsMTEwLDEwMSwyMzMsMCwwLDAsMCwxMjIsMjQsMTIzLAorICAgIDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywxMDgsMTEyLDEwNCw5NywKKyAgICAxMTAsMTE3LDEwOSwxMDEsMTE0LDEwNSw5OSwxMjIsNywxMjMsMTI1LDQ2LDEyMywxMjUsMTIzLDEyNSwKKyAgICA0MSwyMywyMTgsOSw5NSwxMTksOTcsMTE0LDExMCwxMDUsMTEwLDEwMywxMTUsMjE4LDQsMTE5LAorICAgIDk3LDExNCwxMTAsMjE4LDE4LDY4LDEwMSwxMTIsMTE0LDEwMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsCisgICAgODcsOTcsMTE0LDExMCwxMDUsMTEwLDEwMywyMTgsOSw4NCwxMjEsMTEyLDEwMSw2OSwxMTQsMTE0LAorICAgIDExMSwxMTQsMTE0LDMsMCwwLDAsMjE4LDYsMTAyLDExNSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgNDAsMCwwLDAsMTE0LDM0LDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxNCwKKyAgICAxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMjE4LDksCisgICAgOTksOTcsOTksMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDIxOCwxOSw3OCwxMTEsMTE2LDczLDEwOSwKKyAgICAxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDI4LAorICAgIDAsMCwwLDIxOCw1LDEwMiwxMDgsOTcsMTAzLDExNSwyMTgsOCwxMTEsMTEyLDExNiwxMDUsCisgICAgMTA5LDEwNSwxMjIsMTAxLDIxOCwzLDExNSwxMTYsMTE0LDIxOCw3LDEwNSwxMTUsOTcsMTA4LDExMCwKKyAgICAxMTcsMTA5LDIxOCwxMCw4Niw5NywxMDgsMTE3LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDUwLAorICAgIDAsMCwwLDIxOCw0LDk1LDc5LDgwLDg0LDExNCwzMCwwLDAsMCwyMTgsOCwKKyAgICA5NSw4MCw4OSw2Nyw2NSw2Nyw3Miw2OSwyMTgsMTcsNjYsODksODQsNjksNjcsNzksCisgICAgNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsNDEsMTEsMTE0LDM3LDAsCisgICAgMCwwLDkwLDE0LDEwMCwxMDEsOTgsMTE3LDEwMyw5NSwxMTEsMTE4LDEwMSwxMTQsMTE0LDEwNSwKKyAgICAxMDAsMTAxLDExNCw2MCwwLDAsMCwyMTgsNywxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwKKyAgICAyMTgsNCwxMDQsMTAxLDk3LDEwMCwxMTQsMzksMCwwLDAsOTAsNCw5OCw5NywxMTUsCisgICAgMTAxLDIxOCwzLDExNSwxMDEsMTEyLDIxOCw0LDExNCwxMDEsMTE1LDExNiw5MCwzLDExNiw5NywKKyAgICAxMDMsOTAsMTUsOTcsMTA4LDEwOSwxMTEsMTE1LDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE3LDk5LDk3LDk5LDEwNCwxMDEsOTUsMTAyLDExNCwxMTEsMTA5LDk1LDExNSwxMTEsCisgICAgMTE3LDExNCw5OSwxMDEsNiwxLDAsMCwxMTUsNDgsMCwwLDAsMCwxOCw4LAorICAgIDEsNiwxLDYsMSw4LDEsNCwxLDgsMSwxMiwxLDEwLDEsMTIsCisgICAgMSwxNiwxLDgsMSw4LDEsOCwxLDI0LDEsOCwxLDEyLDEsNiwKKyAgICAyLDgsMSw4LDEsOCwxLDgsMSwxNCwxLDE0LDEsMTE0LDgzLDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw4LDAsMCwwLDUsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDIzMCwwLDAsMCwxMTYsMCwxMDYsMSwKKyAgICAxMDYsMiwxMDAsMSwxMDcsOCwxMTQsMjAsMTE2LDMsMTAwLDIsMTMxLDEsMTMwLDEsCisgICAgMTE2LDQsMTA2LDUsMTI0LDAsMTMxLDEsMTI1LDAsMTE2LDYsMTI0LDAsMTMxLDEsCisgICAgOTIsMiwxMjUsMSwxMjUsMiwxMTYsNiwxMjQsMSwxMzEsMSw5MiwyLDEyNSwxLAorICAgIDEyNSwzLDEyNCwzLDExNiw3LDEwNywzLDExNCw3OCwxMTYsOCwxMDAsMywxMDYsOSwKKyAgICAxMTYsNywxMjQsMCwxMzEsMiwxMzEsMSwxMzAsMSwxMjQsMiwxMDYsMTAsMTAwLDQsCisgICAgMTMxLDEsMTI1LDQsMTI0LDQsMTAwLDExLDEwNyw3LDExNCwxMTIsMTE2LDgsMTAwLDcsCisgICAgMTA2LDksMTI0LDIsMTMxLDEsMTMxLDEsMTMwLDEsMTEwLDg2LDEyNCw0LDEwMCw2LAorICAgIDEwNywyLDExNCwxOTgsMTI0LDIsMTA2LDExLDEwMCw0LDEwMCw1LDEzMSwyLDEwMCwxMiwKKyAgICAyNSwwLDEyNSw1LDEyNCw1LDEwNiwxMiwxMTYsMTMsMTMxLDEsMTE1LDE2MCwxMTYsOCwKKyAgICAxMDAsOCwxMDYsOSwxMTYsMTMsMTMxLDEsMTMxLDEsMTMwLDEsMTI0LDUsMTE2LDE0LAorICAgIDExNiwxMywxMzEsMSwxMDAsMSwxMzMsMiwyNSwwLDEyNSw2LDEyNCw2LDEwNiwxNSwKKyAgICAxMzEsMCwxMTUsMTk4LDExNiw4LDEwMCw5LDEwNiw5LDEyNCw1LDEzMSwxLDEzMSwxLAorICAgIDEzMCwxLDEyNCwyLDEwNiwxNiwxMDAsNCwxMzEsMSwxMDAsMTAsMjUsMCwxMjUsNywKKyAgICAxMTYsMTcsMTI0LDEsMTI0LDcsMTE2LDE4LDEwMCwxMCwyNSwwLDIzLDAsMTMxLDIsCisgICAgODMsMCw0MSwxMyw5NywxMTAsMSwwLDAsNzEsMTA1LDExOCwxMDEsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsOTcsMzIsNDYsMTEyLDEyMSwKKyAgICA5OSw0NiwzMiwxMDIsMTA1LDEwOCwxMDEsNDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMDUsMTE2LDExNSwzMiwKKyAgICA0NiwxMTIsMTIxLDMyLDEwMiwxMDUsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTAxLDMyLDQ2LDExMiwxMjEsOTksMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwMCwxMTEsMTAxLAorICAgIDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTAsMTAxLDEwMSwxMDAsMzIsMTE2LDExMSwzMiwxMDEsMTIwLAorICAgIDEwNSwxMTUsMTE2LDU5LDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMTUsMTA1LDEwOSwxMTIsMTA4LDEyMSwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwxMCwzMiwzMiwzMiwzMiwxMTYsMTA0LDEwMSwzMiw0NiwxMTIsMTIxLAorICAgIDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5OSw5NywxMDgsOTksMTE3LDEwOCw5NywxMTYsMTAxLDEwMCwKKyAgICAzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwxMTUsMTEyLDExMSwxMTAsMTAwLDMyLDExNiwKKyAgICAxMTEsMzIsMTE2LDEwNCwxMDEsMzIsNDYsMTEyLDEyMSw5OSwzMiwxMDIsMTA1LDEwOCwxMDEsNDYsCisgICAgMzIsMzIsNzMsMTAyLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMCwxMTEsMTAxLDExNSwxMCwzMiwKKyAgICAzMiwzMiwzMiwxMTAsMTExLDExNiwzMiw5OSwxMTEsMTEwLDEwMiwxMTEsMTE0LDEwOSwzMiwxMTYsCisgICAgMTExLDMyLDgwLDY5LDgwLDMyLDUxLDQ5LDUyLDU1LDQ3LDUyLDU2LDU2LDMyLDEwMiwKKyAgICAxMTEsMTE0LDEwOSw5NywxMTYsNDQsMzIsODYsOTcsMTA4LDExNywxMDEsNjksMTE0LDExNCwxMTEsCisgICAgMTE0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiw5OCwxMDEsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwKKyAgICA0NiwzMiw3MywxMDIsMTAsMzIsMzIsMzIsMzIsMTE1LDEyMSwxMTUsNDYsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDk5LDk3LDk5LDEwNCwKKyAgICAxMDEsOTUsMTE2LDk3LDEwMywzMiwxMDUsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDMyLDExNiwxMDQsCisgICAgMTAxLDExMCwzMiw3OCwxMTEsMTE2LDczLDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLAorICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDEyMiwzNiwxMTUsMTIxLDExNSw0NiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsNDYsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSwxMTYsOTcsMTAzLDMyLDEwNSwxMTUsMzIsNzgsMTExLDExMCwxMDEsMTIyLDM3LAorICAgIDEyMywxMjUsMzIsMTEwLDExMSwxMTYsMzIsOTgsMTExLDExNiwxMTYsMTExLDEwOSw0NSwxMDgsMTAxLAorICAgIDExOCwxMDEsMTA4LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA1LDExMCwKKyAgICAzMiwxMjMsMzMsMTE0LDEyNSwxMTQsNjEsMCwwLDAsMTE0LDU5LDAsMCwwLDIzMywKKyAgICAzLDAsMCwwLDEyMiwzMywxMDEsMTIwLDExMiwxMDEsOTksMTE2LDEwMSwxMDAsMzIsMTExLAorICAgIDExMCwxMDgsMTIxLDMyLDUwLDMyLDExMSwxMTQsMzIsNTEsMzIsMTAwLDExMSwxMTYsMTE1LDMyLAorICAgIDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLDU3LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsCisgICAgMzIsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiwxMTUsMTE2LDk3LDExNCwxMTYsMzIsMTE5LDEwNSwxMTYsMTA0LDMyLDEyMywzMywKKyAgICAxMTQsMTI1LDEyMiw1MiwxMTEsMTEyLDExNiwxMDUsMTA5LDEwNSwxMjIsOTcsMTE2LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOCwxMDEsMTE4LDEwMSwxMDgsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTA1LDExNSwzMiwxMTAsCisgICAgMTExLDExNiwzMiw5NywxMTAsMzIsOTcsMTA4LDExMiwxMDQsOTcsMTEwLDExNywxMDksMTAxLDExNCwKKyAgICAxMDUsOTksMzIsMTE4LDk3LDEwOCwxMTcsMTAxLDExNCw2MiwwLDAsMCw2MiwyLDAsCisgICAgMCwwLDExNCw1OSwwLDAsMCwxMTQsODQsMCwwLDAsMjMzLDI1NCwyNTUsMjU1LAorICAgIDI1NSw0MSwxOSwxMTQsOCwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDY5LDAsCisgICAgMCwwLDExNCw3MCwwLDAsMCwxMTQsMywwLDAsMCwxMTQsNjcsMCwwLAorICAgIDAsMTE0LDQwLDAsMCwwLDExNCw3NywwLDAsMCwxMTQsNzUsMCwwLDAsCisgICAgMTE0LDUwLDAsMCwwLDIxOCw1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsMzYsMCwwLAorICAgIDAsMTE0LDEwLDAsMCwwLDExNCw3NiwwLDAsMCwxMTQsMzMsMCwwLDAsCisgICAgMTE0LDc0LDAsMCwwLDIxOCw5LDExMiw5NywxMTQsMTE2LDEwNSwxMTYsMTA1LDExMSwxMTAsCisgICAgMTE0LDMwLDAsMCwwLDIxOCwxNSw4Myw3OSw4NSw4Miw2Nyw2OSw5NSw4Myw4NSwKKyAgICA3MCw3MCw3Myw4OCw2OSw4Myw0MSw4LDExNCwzNywwLDAsMCwxMTQsODAsMCwKKyAgICAwLDAsOTAsMTYsMTEyLDEyMSw5OSw5Nyw5OSwxMDQsMTAxLDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSw5MCw3LDExMiwxMjEsOTksOTcsOTksMTA0LDEwMSw5MCw5LDEwMCwKKyAgICAxMTEsMTE2LDk1LDk5LDExMSwxMTcsMTEwLDExNiwxMTQsNjAsMCwwLDAsOTAsOSwxMTEsCisgICAgMTEyLDExNiw5NSwxMDgsMTAxLDExOCwxMDEsMTA4LDkwLDEzLDk4LDk3LDExNSwxMDEsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDIxOCwxNywxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwMiwKKyAgICAxMTQsMTExLDEwOSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDUxLDEsMCwwLDExNSw0NiwwLAorICAgIDAsMCwwLDksMTIsMSw4LDEsMTAsMSwxMiwxLDEyLDEsOCwxLAorICAgIDYsMSwxMCwxLDEwLDEsOCwxLDYsMSwxMCwxLDgsMSwxNiwxLAorICAgIDEwLDEsNiwxLDgsMSwxNiwxLDgsMSw2LDEsOCwxLDE0LDEsCisgICAgMTE0LDg5LDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsCisgICAgMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwxMjgsMCwwLDAsMTE2LAorICAgIDAsMTI0LDAsMTMxLDEsMTAwLDEsMTA3LDIsMTE0LDE2LDEwMCwyLDgzLDAsMTI0LAorICAgIDAsMTA2LDEsMTAwLDMsMTMxLDEsOTIsMywxMjUsMSwxMjUsMiwxMjUsMywxMjQsCisgICAgMSwxMiwwLDExNSw1OCwxMjQsMywxMDYsMiwxMzEsMCwxMDAsNywxMDAsOCwxMzMsCisgICAgMiwyNSwwLDEwMCw2LDEwNywzLDExNCw2MiwxMjQsMCw4MywwLDEyMSwxMiwxMTYsCisgICAgMywxMjQsMCwxMzEsMSwxMjUsNCw4NywwLDExMCwzNiw0LDAsMTE2LDQsMTE2LAorICAgIDUsMTAyLDIsMTA3LDEwLDExNCwxMTAsMSwwLDEsMCwxLDAsMTI0LDAsMTAwLAorICAgIDIsMTAwLDksMTMzLDIsMjUsMCwxMjUsNCw4OSwwLDExMCwyLDg4LDAsMTE2LAorICAgIDYsMTI0LDQsMTMxLDEsMTE0LDEyNCwxMjQsNCw4MywwLDEyNCwwLDgzLDAsNDEsCisgICAgMTAsMTIyLDE4OCw2NywxMTEsMTEwLDExOCwxMDEsMTE0LDExNiwzMiw5NywzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywxMTYsMTA0LAorICAgIDMyLDQwLDEwNSwxMDIsMzIsMTEyLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDQxLDQ2LDEwLAorICAgIDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwMiwxMTcsMTEwLDk5LDExNiwxMDUsCisgICAgMTExLDExMCwzMiwxMDEsMTIwLDEwNSwxMTUsMTE2LDExNSwzMiwxMTIsMTE3LDExNCwxMDEsMTA4LDEyMSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiw5OCw5Nyw5OSwxMDcsMTE5LDk3LDExNCwxMDAsMTE1LDQ1LDk5LAorICAgIDExMSwxMDksMTEyLDk3LDExNiwxMDUsOTgsMTA1LDEwOCwxMDUsMTE2LDEyMSwzMiwxMDIsMTExLDExNCwKKyAgICAxMCwzMiwzMiwzMiwzMiw4MCwxMjEsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw5NSw2OSwxMjAsCisgICAgMTAxLDk5LDY3LDExMSwxMDAsMTAxLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODcsMTA1LDExNiwxMDQsCisgICAgNzAsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE1LDQwLDQxLDMyLDEwNSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsNjcsMzIsNjUsODAsNzMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAorICAgIDYyLDAsMCwwLDc4LDExNCw2MSwwLDAsMCwxMTQsODQsMCwwLDAsMTE0LAorICAgIDMxLDAsMCwwLDkwLDIsMTEyLDEyMSwyMzMsMjUzLDI1NSwyNTUsMjU1LDIzMywyNTUsMjU1LAorICAgIDI1NSwyNTUsMTE0LDkxLDAsMCwwLDQxLDcsMTE0LDMzLDAsMCwwLDExNCwzNCwKKyAgICAwLDAsMCwyMTgsNSwxMDgsMTExLDExOSwxMDEsMTE0LDExNCw4OSwwLDAsMCwxMTQsCisgICAgNzAsMCwwLDAsMTE0LDc1LDAsMCwwLDExNCw0NiwwLDAsMCw0MSw1LAorICAgIDIxOCwxMyw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsCisgICAgODIsMCwwLDAsMTE0LDM4LDAsMCwwLDkwLDksMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMTUsMTA1LDExMSwxMTAsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTEyLDk3LDExNiwKKyAgICAxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMjE4LDE1LDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTAyLDEwNSwxMDgsCisgICAgMTAxLDg1LDEsMCwwLDExNSwyMCwwLDAsMCwwLDcsMTIsMSw0LDEsCisgICAgMTYsMSwyNiwxLDQsMSwyLDEsMTIsMSwxOCwxLDE4LDEsMTE0LDk1LAorICAgIDAsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLAorICAgIDExLDAsMCwwLDY3LDAsMCwwLDExNSw3NCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMTYsMSwxMTYsMiwxMzEsMSwxMzEsMSwxMTQsNDYsMTIxLDgsMTE2LDMsMTI0LAorICAgIDAsMTMxLDEsODMsMCw0LDAsMTE2LDQsMTA3LDEwLDExNCw0MiwxLDAsMSwKKyAgICAwLDEsMCw4OSwwLDExMyw3MCw4OCwwLDExMCwyNCwxMjQsMCwxMDYsMCwxMTYsCisgICAgMSwxMTYsNSwxMzEsMSwxMzEsMSwxMTQsNjYsMTI0LDAsODMsMCwxMTAsNCwxMDAsCisgICAgMCw4MywwLDEwMCwwLDgzLDAsNDEsMSw3OCw0MSw2LDIxOCw4LDEwMSwxMTAsCisgICAgMTAwLDExNSwxMTksMTA1LDExNiwxMDQsMjE4LDUsMTE2LDExNywxMTIsMTA4LDEwMSwxMTQsODgsMCwKKyAgICAwLDAsMTE0LDgzLDAsMCwwLDExNCw3MCwwLDAsMCwxMTQsNzgsMCwwLAorICAgIDAsNDEsMSwyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LDEwMywKKyAgICAxMDEsMTE2LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDEwNCwxLDAsMCwxMTUsMTYsMCwKKyAgICAwLDAsMCwxLDE0LDEsMiwxLDgsMSwxNCwxLDgsMSwxNCwxLAorICAgIDYsMiwxMTQsOTksMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDIsMCwwLDAsMTEsMCwwLDAsNjcsMCwwLDAsMTE1LDUyLDAsMCwKKyAgICAwLDEyMSwxNCwxMTYsMCwxMjQsMCwxMzEsMSwxMDYsMSwxMjUsMSw4NywwLDExMCwKKyAgICAyNCw0LDAsMTE2LDIsMTA3LDEwLDExNCwzOCwxLDAsMSwwLDEsMCwxMDAsCisgICAgMSwxMjUsMSw4OSwwLDExMCwyLDg4LDAsMTI0LDEsMTAwLDIsNzksMCwxMjUsCisgICAgMSwxMjQsMSw4MywwLDQxLDMsMTIyLDUxLDY3LDk3LDEwOCw5OSwxMTcsMTA4LDk3LAorICAgIDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTAxLDMyLDExMiwxMDEsMTE0LDEwOSwKKyAgICAxMDUsMTE1LDExNSwxMDUsMTExLDExMCwxMTUsMzIsMTAyLDExMSwxMTQsMzIsOTcsMzIsOTgsMTIxLAorICAgIDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDQ2LDEwNSwxODIsMSwwLAorICAgIDAsMjMzLDEyOCwwLDAsMCw0MSwzLDExNCw0MSwwLDAsMCwxMTQsNDMsMCwKKyAgICAwLDAsMTE0LDQyLDAsMCwwLDQxLDIsMTE0LDM3LDAsMCwwLDExNCw0NCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAorICAgIDAsMCwyMTgsMTAsOTUsOTksOTcsMTA4LDk5LDk1LDEwOSwxMTEsMTAwLDEwMSwxMTYsMSwKKyAgICAwLDAsMTE1LDEyLDAsMCwwLDAsMiwyLDEsMTQsMSwxNCwxLDEwLAorICAgIDMsOCwxLDExNCwxMDEsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDMsMCwwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsNjgsMCwKKyAgICAwLDAsMTAwLDYsMTM1LDAsMTAyLDEsMTAwLDIsMTAwLDMsMTMyLDksMTI1LDEsCisgICAgMTIxLDEwLDExNiwwLDEwNiwxLDEyNSwyLDg3LDAsMTEwLDI4LDQsMCwxMTYsMiwKKyAgICAxMDcsMTAsMTE0LDUyLDEsMCwxLDAsMSwwLDEwMCw0LDEwMCw1LDEzMiwwLAorICAgIDEyNSwyLDg5LDAsMTEwLDIsODgsMCwxMjQsMiwxMjQsMSwxMzYsMCwxMzEsMiwKKyAgICAxLDAsMTI0LDEsODMsMCw0MSw3LDEyMiwyNTIsNjgsMTAxLDk5LDExMSwxMTQsOTcsCisgICAgMTE2LDExMSwxMTQsMzIsMTE2LDExMSwzMiwxMTgsMTAxLDExNCwxMDUsMTAyLDEyMSwzMiwxMTYsMTA0LAorICAgIDk3LDExNiwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OCwxMDEsCisgICAgMTA1LDExMCwxMDMsMzIsMTE0LDEwMSwxMTMsMTE3LDEwMSwxMTUsMTE2LDEwMSwxMDAsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMTEsMTEwLDEwMSwzMiwxMTYsMTA0LAorICAgIDEwMSwxMCwzMiwzMiwzMiwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LDk3LDExMCwKKyAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTQsMTE1LDExNiwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsCisgICAgMzIsNDAsMTE1LDEwMSwxMDgsMTAyLDQxLDMyLDEwOSwxMTcsMTE1LDExNiwzMiwxMDAsMTAxLDEwMiwKKyAgICAxMDUsMTEwLDEwMSwzMiw5NSwxMTAsOTcsMTA5LDEwMSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDEwMSw5OSwxMTEsMTEwLDEwMCwzMiw5NywxMTQsMTAzLDExNywxMDksCisgICAgMTAxLDExMCwxMTYsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiw5OSwxMTEsMTA5LDExMiw5NywKKyAgICAxMTQsMTAxLDEwMCwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDQ2LDMyLDczLDEwMiwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTA5LDExMiw5NywxMTQsMTA1LDExNSwxMTEsMTEwLDMyLDEwMiwKKyAgICA5NywxMDUsMTA4LDExNSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiwKKyAgICA2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTA1LDExNSwzMiwxMTQsOTcsMTA1LDExNSwxMDEsMTAwLDQ2LAorICAgIDEwLDEwLDMyLDMyLDMyLDMyLDc4LDk5LDIsMCwwLDAsMCwwLDAsMCwKKyAgICA0LDAsMCwwLDQsMCwwLDAsMzEsMCwwLDAsMTE1LDY2LDAsMCwKKyAgICAwLDEyNCwxLDEwMCwwLDEwNyw4LDExNCwxNiwxMjQsMCwxMDYsMCwxMjUsMSwxMTAsCisgICAgMzIsMTI0LDAsMTA2LDAsMTI0LDEsMTA3LDMsMTE0LDQ4LDExNiwxLDEwMCwxLDEyNCwKKyAgICAwLDEwNiwwLDEyNCwxLDEwMiwyLDIyLDAsMTI0LDEsMTAwLDIsMTQxLDIsMTMwLAorICAgIDEsMTM2LDAsMTI0LDAsMTI0LDEsMTAyLDIsMTI0LDIsMTU4LDIsMTI0LDMsMTQyLAorICAgIDEsODMsMCw0MSwzLDc4LDEyMiwzMCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDM3LDExNSwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsMTA0LDk3LDExMCwKKyAgICAxMDAsMTA4LDEwMSwzMiwzNywxMTUsNDEsMSwyMTgsNCwxMTAsOTcsMTA5LDEwMSw0MSwyLAorICAgIDExNCwxMDIsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwKKyAgICAxMTEsMTE0LDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDIsMCwwLDAsMjE4LAorICAgIDQsOTcsMTE0LDEwMywxMTUsOTAsNiwxMDcsMTE5LDk3LDExNCwxMDMsMTE1LDQxLDEsMjE4LAorICAgIDYsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMjE4LDE5LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwKKyAgICAxMTQsOTcsMTEyLDExMiwxMDEsMTE0LDEzNiwxLDAsMCwxMTUsMTIsMCwwLDAsMCwKKyAgICAxLDgsMSw4LDEsMTAsMSw0LDEsMTgsMSwxMjIsNDAsOTUsOTksMTA0LAorICAgIDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LAorICAgIDYyLDQ2LDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDk1LDExOSwxMTQsCisgICAgOTcsMTEyLDExMiwxMDEsMTE0LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDcsMCwwLDAsODMsMCwwLDAsMTE1LDYwLDAsMCwwLDEyMCwKKyAgICA0MCwxMDAsNSw2OCwwLDkzLDMyLDEyNSwyLDExNiwwLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDExNCw2LDExNiwxLDEyNCwwLDEyNCwyLDExNiwyLDEyNCwxLDEyNCwyLDEzMSwKKyAgICAyLDEzMSwzLDEsMCwxMTMsNiw4NywwLDEyNCwwLDEwNiwzLDEwNiw0LDEyNCwKKyAgICAxLDEwNiwzLDEzMSwxLDEsMCwxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLAorICAgIDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCw5NywKKyAgICAxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LDEwMSwKKyAgICA5NSw5NSwyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDQsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCw0MSw1LDIxOCw3LDEwNCw5NywxMTUsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTE1LDEwMSwKKyAgICAxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDcsMTAzLDEwMSwxMTYsOTcsMTE2LDExNiwxMTQsMjE4LDgsCisgICAgOTUsOTUsMTAwLDEwNSw5OSwxMTYsOTUsOTUsMjE4LDYsMTE3LDExMiwxMDAsOTcsMTE2LDEwMSwKKyAgICA0MSwzLDkwLDMsMTEwLDEwMSwxMTksOTAsMywxMTEsMTA4LDEwMCwxMTQsNTUsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMjE4LDEwLDk1LDk5LDk3LDEwOCw5OSw5NSwxMDksMTExLDEwMCwxMDEsMTA2LDEsMCwwLAotICAgIDExNSwxMiwwLDAsMCwwLDIsMywxLDE5LDEsMTMsMSwxMSwzLDEwLAotICAgIDEsMTE0LDk5LDAsMCwwLDIxOCw5LDExOCwxMDEsMTE0LDk4LDExMSwxMTUsMTA1LDExNiwKLSAgICAxMjEsMTE0LDMxLDAsMCwwLDk5LDEsMCwwLDAsMSwwLDAsMCwzLAotICAgIDAsMCwwLDQsMCwwLDAsNzEsMCwwLDAsMTE1LDc1LDAsMCwwLAotICAgIDExNiwwLDAsMTA2LDEsMCwxMDYsMiwwLDEyNCwxLDAsMTA3LDUsMCwxMTQsCi0gICAgNzEsMCwxMjQsMCwwLDEwNiwzLDAsMTAwLDYsMCwxMzEsMSwwLDExNSw0MywKLSAgICAwLDEwMCwzLDAsMTI0LDAsMCwyMywxMjUsMCwwLDExNiw0LDAsMTI0LDAsCi0gICAgMCwxMDYsNSwwLDEyNCwyLDAsMTQwLDAsMCwxMDAsNCwwLDExNiwwLDAsCi0gICAgMTA2LDYsMCwxMzEsMSwxLDEsMTAwLDUsMCw4Myw0MSw3LDEyMiw2MSw4MCwKLSAgICAxMTQsMTA1LDExMCwxMTYsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsCi0gICAgMzIsMTE2LDExMSwzMiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCwzMiwxMDUsMTAyLDMyLDQ1LDExOCwKLSAgICA0Nyw4MCw4OSw4NCw3Miw3OSw3OCw4Niw2OSw4Miw2Niw3OSw4Myw2OSwzMiwxMDUsCi0gICAgMTE1LDMyLDExNiwxMTcsMTE0LDExMCwxMDEsMTAwLDMyLDExMSwxMTAsNDYsMjUwLDEsMzUsMjUwLAotICAgIDcsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTIyLDIsMzUsMzIsMTE0LDU2LDAsMCwKLSAgICAwLDc4LDQxLDIsMTE0LDEwMSwwLDAsMCwxMTQsMTAyLDAsMCwwLDQxLDcsCi0gICAgMTE0LDgsMCwwLDAsMTE0LDY5LDAsMCwwLDIxOCw3LDExOCwxMDEsMTE0LDk4LAotICAgIDExMSwxMTUsMTAxLDExNCwxMCwwLDAsMCwyMTgsNSwxMTIsMTE0LDEwNSwxMTAsMTE2LDExNCwKLSAgICA0OSwwLDAsMCwyMTgsNiwxMTUsMTE2LDEwMCwxMDEsMTE0LDExNCw0MSwzLDExNCw3NywKLSAgICAwLDAsMCwxMTQsMTAwLDAsMCwwLDIxOCw0LDk3LDExNCwxMDMsMTE1LDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwKLSAgICAxMTgsMTAxLDExNCw5OCwxMTEsMTE1LDEwMSw5NSwxMDksMTAxLDExNSwxMTUsOTcsMTAzLDEwMSwxMTgsCi0gICAgMSwwLDAsMTE1LDgsMCwwLDAsMCwyLDE4LDEsMTUsMSwxMCwxLAotICAgIDExNCwxMDcsMCwwLDAsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwKLSAgICAwLDAsMTEsMCwwLDAsMywwLDAsMCwxMTUsODQsMCwwLDAsMTAwLAotICAgIDEsMCwxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwxLAotICAgIDAsMTI1LDEsMCwxMjEsMTMsMCwxMTYsMCwwLDEwNiwxLDAsMTI1LDIsMCwKLSAgICA4NywxMTAsMzAsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDY2LDAsMSwxLAotICAgIDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI1LDIsMCw4OSwxMTAsMSwKLSAgICAwLDg4LDEyNCwyLDAsMTI0LDEsMCwxMzYsMCwwLDEzMSwyLDAsMSwxMjQsCi0gICAgMSwwLDgzLDQxLDYsMTIyLDI1Miw2OCwxMDEsOTksMTExLDExNCw5NywxMTYsMTExLDExNCwKLSAgICAzMiwxMTYsMTExLDMyLDExOCwxMDEsMTE0LDEwNSwxMDIsMTIxLDMyLDExNiwxMDQsOTcsMTE2LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEwMSwxMDUsMTEwLDEwMywKLSAgICAzMiwxMTQsMTAxLDExMywxMTcsMTAxLDExNSwxMTYsMTAxLDEwMCwzMiwxMDksOTcsMTE2LDk5LDEwNCwKLSAgICAxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMSwxMTAsMTAxLDMyLDExNiwxMDQsMTAxLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsOTksOTcsMTEwLDMyLDEwNCw5NywKLSAgICAxMTAsMTAwLDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDIsCi0gICAgMTA1LDExNCwxMTUsMTE2LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwzMiw0MCwxMTUsCi0gICAgMTAxLDEwOCwxMDIsNDEsMzIsMTA5LDExNywxMTUsMTE2LDMyLDEwMCwxMDEsMTAyLDEwNSwxMTAsMTAxLAotICAgIDMyLDk1LDExMCw5NywxMDksMTAxLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTUsMTAxLDk5LDExMSwxMTAsMTAwLDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLDExNiwKLSAgICAzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDEsMTAwLAotICAgIDMyLDk3LDEwMyw5NywxMDUsMTEwLDExNSwxMTYsNDYsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk5LDExMSwxMDksMTEyLDk3LDExNCwxMDUsMTE1LDExMSwxMTAsMzIsMTAyLDk3LDEwNSwxMDgsCi0gICAgMTE1LDMyLDExNiwxMDQsMTAxLDExMCwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCi0gICAgMzIsMzIsMzIsNzgsOTksMiwwLDAsMCwwLDAsMCwwLDQsMCwwLAotICAgIDAsNSwwLDAsMCwzMSwwLDAsMCwxMTUsODksMCwwLDAsMTI0LDEsCi0gICAgMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDI0LDAsMTI0LDAsMCwxMDYsMCwwLAotICAgIDEyNSwxLDAsMTEwLDQ2LDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA3LAotICAgIDMsMCwxMTQsNzAsMCwxMTYsMSwwLDEwMCwxLDAsMTI0LDAsMCwxMDYsMCwKLSAgICAwLDEyNCwxLDAsMTAyLDIsMCwyMiwxMDAsMiwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxNDIsMiwwLDgzLDQxLDMsNzgsMTIyLDMwLDEwOCwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMzcsMTE1LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwKLSAgICAzMiwxMDQsOTcsMTEwLDEwMCwxMDgsMTAxLDMyLDM3LDExNSwyMTgsNCwxMTAsOTcsMTA5LDEwMSwKLSAgICA0MSwyLDExNCwxMDgsMCwwLDAsMjE4LDExLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksCi0gICAgMTE0LDExNCwxMTEsMTE0LDQxLDQsMjE4LDQsMTE1LDEwMSwxMDgsMTAyLDExNCwxMDgsMCwwLAotICAgIDAsMTE0LDEwNiwwLDAsMCw5MCw2LDEwNywxMTksOTcsMTE0LDEwMywxMTUsNDEsMSwKLSAgICAyMTgsNiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsMTksOTUsOTksMTA0LDEwMSw5OSwxMDcsOTUsMTEwLDk3LDEwOSwxMDEsOTUsCi0gICAgMTE5LDExNCw5NywxMTIsMTEyLDEwMSwxMTQsMTM0LDEsMCwwLDExNSwxMiwwLDAsMCwKLSAgICAwLDEsMTIsMSwxMiwxLDE1LDEsNiwxLDI1LDEsMTIyLDQwLDk1LDk5LAotICAgIDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LAotICAgIDExNSw2Miw0Niw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSw5NSwxMTksCi0gICAgMTE0LDk3LDExMiwxMTIsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCw3LDAsMCwwLDgzLDAsMCwwLDExNSw5MiwwLDAsMCwKLSAgICAxMjAsNjYsMCwxMDAsMSwwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEwMywKLSAgICA0LDAsNjgsOTMsNDYsMCwxMjUsMiwwLDExNiwwLDAsMTI0LDEsMCwxMjQsCi0gICAgMiwwLDEzMSwyLDAsMTE0LDE5LDAsMTE2LDEsMCwxMjQsMCwwLDEyNCwyLAotICAgIDAsMTE2LDIsMCwxMjQsMSwwLDEyNCwyLDAsMTMxLDIsMCwxMzEsMywwLAotICAgIDEsMTEzLDE5LDAsODcsMTI0LDAsMCwxMDYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwxMDYsMywwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDUsNzgsMjE4LAotICAgIDEwLDk1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDk1LDIxOCw4LDk1LDk1LDExMCwKLSAgICA5NywxMDksMTAxLDk1LDk1LDIxOCwxMiw5NSw5NSwxMTMsMTE3LDk3LDEwOCwxMTAsOTcsMTA5LAotICAgIDEwMSw5NSw5NSwyMTgsNyw5NSw5NSwxMDAsMTExLDk5LDk1LDk1LDQxLDUsMjE4LDcsCi0gICAgMTA0LDk3LDExNSw5NywxMTYsMTE2LDExNCwyMTgsNywxMTUsMTAxLDExNiw5NywxMTYsMTE2LDExNCwKLSAgICAyMTgsNywxMDMsMTAxLDExNiw5NywxMTYsMTE2LDExNCwyMTgsOCw5NSw5NSwxMDAsMTA1LDk5LAotICAgIDExNiw5NSw5NSwyMTgsNiwxMTcsMTEyLDEwMCw5NywxMTYsMTAxLDQxLDMsOTAsMywxMTAsCi0gICAgMTAxLDExOSw5MCwzLDExMSwxMDgsMTAwLDExNCw1NCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsNSw5NSwxMTksMTE0LAotICAgIDk3LDExMiwxNDUsMSwwLDAsMTE1LDgsMCwwLDAsMCwxLDI1LDEsMTUsCi0gICAgMSwyOSwxLDEyMiwyNiw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwxMTAsOTcsMTA5LDEwMSwKLSAgICA0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsOTUsMTE5LDExNCw5NywxMTIsNDEsCi0gICAgMywyMTgsMTAsOTUsOTgsMTExLDExMSwxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDExNCwxMjIsMCwKLSAgICAwLDAsMjE4LDksNzgsOTcsMTA5LDEwMSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMywxMTQsCi0gICAgMTExLDAsMCwwLDExNCwxMTIsMCwwLDAsMTE0LDEyMiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTEsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LAotICAgIDExLDk1LDk5LDEwNCwxMDEsOTksMTA3LDk1LDExMCw5NywxMDksMTAxLDEyNiwxLDAsMCwKLSAgICAxMTUsMTQsMCwwLDAsMCw4LDIxLDcsMywxLDEzLDEsMTMsMiwxNywKLSAgICA1LDEzLDEsMTE0LDEyNSwwLDAsMCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsNSwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw4NCwwLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDkyLDIsCi0gICAgMCwxMjUsMiwwLDEyNSwzLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsCi0gICAgMTE0LDgwLDAsMTE2LDEsMCwxMjQsMywwLDEzMSwxLDAsMTE0LDgwLDAsMTAwLAotICAgIDIsMCwxMjUsNCwwLDExNiwyLDAsMTA2LDMsMCwxMjQsNCwwLDEwNiw0LAotICAgIDAsMTI0LDMsMCwxMDAsMywwLDI1LDEzMSwxLDAsMTE2LDUsMCwxMzEsMiwKLSAgICAwLDEsMTI0LDIsMCw4Myw0MSw0LDEyMiwxNTUsODQsMTE0LDEyMSwzMiwxMTYsMTExLAorICAgIDIxOCw1LDk1LDExOSwxMTQsOTcsMTEyLDE0NywxLDAsMCwxMTUsOCwwLDAsMCwKKyAgICAwLDEsMTAsMSwxMCwxLDIyLDEsMTIyLDI2LDk1LDk5LDEwNCwxMDEsOTksMTA3LAorICAgIDk1LDExMCw5NywxMDksMTAxLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw5NSwKKyAgICAxMTksMTE0LDk3LDExMiw0MSwxLDc4LDQxLDMsMjE4LDEwLDk1LDk4LDExMSwxMTEsMTE2LAorICAgIDExNSwxMTYsMTE0LDk3LDExMiwxMTQsMTE3LDAsMCwwLDIxOCw5LDc4LDk3LDEwOSwxMDEsCisgICAgNjksMTE0LDExNCwxMTEsMTE0LDQxLDMsMTE0LDEwNiwwLDAsMCwxMTQsMTA3LDAsMCwKKyAgICAwLDExNCwxMTcsMCwwLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsMTA2LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSw5OSwxMDQsMTAxLDk5LDEwNyw5NSwKKyAgICAxMTAsOTcsMTA5LDEwMSwxMjgsMSwwLDAsMTE1LDE0LDAsMCwwLDAsOCwxNCwKKyAgICA3LDIsMSwxMCwxLDE0LDIsMTQsNSwxMCwxLDExNCwxMjAsMCwwLDAsCisgICAgOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNCwwLDAsCisgICAgMCw2NywwLDAsMCwxMTUsNjAsMCwwLDAsMTI0LDAsMTA2LDAsMTI0LDEsCisgICAgMTMxLDEsOTIsMiwxMjUsMiwxMjUsMywxMjQsMiwxMDAsMSwxMDcsOCwxMTQsNTYsCisgICAgMTE2LDEsMTI0LDMsMTMxLDEsMTE0LDU2LDEwMCwyLDEyNSw0LDExNiwyLDEwNiwzLAorICAgIDEyNCw0LDEwNiw0LDEyNCwzLDEwMCwzLDI1LDAsMTMxLDEsMTE2LDUsMTMxLDIsCisgICAgMSwwLDEyNCwyLDgzLDAsNDEsNCwxMjIsMTU1LDg0LDExNCwxMjEsMzIsMTE2LDExMSwKICAgICAzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMDIsCiAgICAgMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAogICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk4LDEyMSwzMiwxMDAsMTAxLDEwOCwxMDEsMTAzLApAQCAtNjMyLDEzNTQgKzU2OCwxMjkxIEBACiAgICAgMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDQ0LDc4LDExMSwxMTYsMzIsMTA1LDEwOSwxMTIsMTExLAogICAgIDExNCwxMTYsMTA1LDExMCwxMDMsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwKICAgICAxMjMsMTI1LDU4LDMyLDEwOSwxMDUsMTE1LDExNSwxMDUsMTEwLDEwMywzMiw5NSw5NSwxMDUsMTEwLAotICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYxLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAotICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjIsMCwKLSAgICAwLDAsMTE0LDYzLDAsMCwwLDExNCw0OSwwLDAsMCwyMTgsMTMsNzMsMTA5LAotICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDExMCwwLAorICAgIDEwNSwxMTYsOTUsOTUsMTE0LDYyLDAsMCwwLDQxLDYsMjE4LDExLDEwMiwxMDUsMTEwLAorICAgIDEwMCw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNCwzMywwLDAsMCwxMTQsNjMsMCwKKyAgICAwLDAsMTE0LDY0LDAsMCwwLDExNCw1MCwwLDAsMCwyMTgsMTMsNzMsMTA5LAorICAgIDExMiwxMTEsMTE0LDExNiw4Nyw5NywxMTQsMTEwLDEwNSwxMTAsMTAzLDQxLDUsMTE0LDEwNCwwLAogICAgIDAsMCwyMTgsOCwxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMjE4LDYsMTA4LDExMSwKICAgICA5NywxMDAsMTAxLDExNCwyMTgsOCwxMTIsMTExLDExNCwxMTYsMTA1LDExMSwxMTAsMTE1LDIxOCwzLAogICAgIDEwOSwxMTUsMTAzLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCiAgICAgMCwwLDIxOCwxNyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgOTUsMTE1LDEwNCwxMDUsMTA5LDE1NCwxLDAsMCwxMTUsMTAsMCwwLDAsMCwxMCwKLSAgICAyMSwxLDI0LDEsNiwxLDI5LDEsMTE0LDEzMiwwLDAsMCw5OSw0LDAsCi0gICAgMCwwLDAsMCwwLDAsMTEsMCwwLDAsMTksMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDI0MCwxLDAsMCwxMDUsMCwwLDEyNSw0LDAsMTI0LDIsMCwKLSAgICAxMDAsMSwwLDEwNyw5LDAsMTE0LDMxLDAsMTI0LDIsMCwxMjQsNCwwLDEwMCwKLSAgICAyLDAsNjAsMTEwLDYsMCwxMDAsMywwLDEyNSwyLDAsMTI0LDMsMCwxMDAsCi0gICAgMSwwLDEwNyw5LDAsMTE0LDU5LDAsMTI0LDMsMCwxMjQsNCwwLDEwMCw0LAotICAgIDAsNjAsMTI0LDAsMCwxMDAsMSwwLDEwMCw1LDAsMTMzLDIsMCwyNSwxMjUsCi0gICAgNSwwLDEyNCwwLDAsMTAwLDUsMCwxMDAsNiwwLDEzMywyLDAsMjUsMTI1LAotICAgIDYsMCwxMjQsMCwwLDEwMCw2LDAsMTAwLDcsMCwxMzMsMiwwLDI1LDEyNSwKLSAgICA3LDAsMTI0LDUsMCwxMTYsMCwwLDEwNywzLDAsMTE0LDE2OCwwLDEwMCw4LAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEyNCw1LDAsMTMxLDIsMCwxMjUsOCwwLAotICAgIDExNiwyLDAsMTAwLDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLAotICAgIDEyNCw4LDAsMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTEwLDExOSwwLDExNiwKLSAgICA0LDAsMTI0LDYsMCwxMzEsMSwwLDEwMCw1LDAsMTA3LDMsMCwxMTQsMjI5LAotICAgIDAsMTAwLDEwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwKLSAgICAxMTYsMiwwLDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwKLSAgICAxMjQsOCwwLDEzMSwxLDAsMTMwLDEsMCwxMTAsNTgsMCwxMTYsNCwwLDEyNCwKLSAgICA3LDAsMTMxLDEsMCwxMDAsNSwwLDEwNywzLDAsMTE0LDMxLDEsMTAwLDExLAotICAgIDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDgsMCwxMTYsMiwwLAotICAgIDEwMCw5LDAsMTI0LDgsMCwxMzEsMiwwLDEsMTE2LDUsMCwxMjQsOCwwLAotICAgIDEzMSwxLDAsMTMwLDEsMCwxMjQsMSwwLDEwMCwxLDAsMTA3LDksMCwxMTQsCi0gICAgMjI2LDEsMTIxLDIwLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwxMiwwLDI1LDEzMSwKLSAgICAxLDAsMTI1LDksMCw4NywxMTAsMTgsMCw0LDExNiw3LDAsMTA3LDEwLDAsCi0gICAgMTE0LDgzLDEsMSwxLDEsODksMTEwLDYyLDAsODgsMTE2LDgsMCwxMjQsNiwKLSAgICAwLDEzMSwxLDAsMTI0LDksMCwxMDcsMywwLDExNCwxNDUsMSwxMDAsMTMsMCwKLSAgICAxMDYsMSwwLDEyNCwyLDAsMTMxLDEsMCwxMjUsOCwwLDExNiwyLDAsMTAwLAotICAgIDksMCwxMjQsOCwwLDEzMSwyLDAsMSwxMTYsMywwLDEyNCw4LDAsMTI0LAotICAgIDQsMCwxNDEsMSwwLDEzMCwxLDAsMTIxLDE4LDAsMTI0LDEsMCwxMDAsMTQsCi0gICAgMCwyNSwxMDAsMTUsMCw2NCwxMjUsMTAsMCw4NywxMTAsMTgsMCw0LDExNiw3LAotICAgIDAsMTA3LDEwLDAsMTE0LDE4MywxLDEsMSwxLDg5LDExMCw0MywwLDg4LDExNiwKLSAgICA4LDAsMTI0LDcsMCwxMzEsMSwwLDEyNCwxMCwwLDEwNywzLDAsMTE0LDIyNiwKLSAgICAxLDExNiwzLDAsMTAwLDEzLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI0LDQsMCwxNDEsMSwwLDEzMCwxLDAsMTI0LDAsMCwxMDAsNywwLDEwMCwKLSAgICAxLDAsMTMzLDIsMCwyNSw4Myw0MSwxNiw5NywxMjIsMSwwLDAsODYsOTcsCi0gICAgMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDQsMTAxLDk3LDEwMCwxMDEsCi0gICAgMTE0LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNSwxMTUsMTAxLDEwMCw0NSwKLSAgICAxMDUsMTEwLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDk3LDEwMyw5NywxMDUsCi0gICAgMTEwLDExNSwxMTYsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTUsMTE2LDk3LDExNiwxMTUsCi0gICAgMzIsNDAsMTA1LDEwMiwxMCwzMiwzMiwzMiwzMiwxMDMsMTA1LDExOCwxMDEsMTEwLDQxLDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsCi0gICAgOTksOTcsMTEwLDMyLDk4LDEwMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsCi0gICAgOTgsMTIxLDMyLDk5LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDQwLDQxLDQ2LDEwLDEwLDMyLAotICAgIDMyLDMyLDMyLDY1LDEwOCwxMDgsMzIsMTExLDExNiwxMDQsMTAxLDExNCwzMiw5NywxMTQsMTAzLAotICAgIDExNywxMDksMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE3LDExNSwxMDEsMTAwLDMyLAotICAgIDExNiwxMTEsMzIsMTAxLDExMCwxMDQsOTcsMTEwLDk5LDEwMSwzMiwxMDEsMTE0LDExNCwxMTEsMTE0LAotICAgIDMyLDExNCwxMDEsMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDczLDEwOSwxMTIsMTExLDExNCwxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMDUsMTE1LDMyLAotICAgIDEwNSwxMTAsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwzMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiwxMTYsMTExLDMyLDk4LDEwMSwzMiwxMTUsMTE2LDk3LAotICAgIDEwOCwxMDEsNDYsMzIsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsCi0gICAgMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsCi0gICAgMTAwLDk3LDExNiw5NywzMiwxMDUsMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LDExMSwKLSAgICAzMiw5OCwxMDEsMTAsMzIsMzIsMzIsMzIsMTE2LDExNCwxMTcsMTEwLDk5LDk3LDExNiwxMDEsCi0gICAgMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDc4LDExNCwxMDgsMCwwLDAsMTIyLDEwLAotICAgIDYwLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDYyLDExNCwzNywwLDAsMCwxMTQsCi0gICAgMTQsMCwwLDAsMjMzLDgsMCwwLDAsMjMzLDEyLDAsMCwwLDEyMiwzMCwKLSAgICA5OCw5NywxMDAsMzIsMTA5LDk3LDEwMywxMDUsOTksMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwKLSAgICAzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LDEyMiwyLAotICAgIDEyMywxMjUsMTIyLDQzLDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsCi0gICAgMTE5LDEwNCwxMDUsMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsMTIyLAotICAgIDQ4LDExNCwxMDEsOTcsOTksMTA0LDEwMSwxMDAsMzIsNjksNzksNzAsMzIsMTE5LDEwNCwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMTQsMTAxLDk3LDEwMCwxMDUsMTEwLDEwMywzMiwxMTUsMTA1LDEyMiwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwKLSAgICAxMjUsMjE4LDUsMTA5LDExNiwxMDUsMTA5LDEwMSwxMjIsMjYsOTgsMTIxLDExNiwxMDEsOTksMTExLAotICAgIDEwMCwxMDEsMzIsMTA1LDExNSwzMiwxMTUsMTE2LDk3LDEwOCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTIzLDMzLDExNCwxMjUsMjE4LDQsMTE1LDEwNSwxMjIsMTAxLDEwOCwzLDAsMCwwLDI1NSwKLSAgICAxMjcsMjU1LDEyNywzLDAsNDEsOSwyMTgsMTIsNzcsNjUsNzEsNzMsNjcsOTUsNzgsCi0gICAgODUsNzcsNjYsNjksODIsMTE0LDQ5LDAsMCwwLDExNCwxMDcsMCwwLDAsMTE0LAotICAgIDEwOSwwLDAsMCwxMTQsMzMsMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LAotICAgIDExNCwxMTEsMTE0LDExNCwxNiwwLDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsCi0gICAgMTExLDExNCwxMTQsMjEsMCwwLDAsNDEsMTEsMTE0LDU1LDAsMCwwLDIxOCwxMiwKLSAgICAxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTA4LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCw5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LAotICAgIDEwNSwxMDgsMTE1LDkwLDUsMTA5LDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwKLSAgICAxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiw5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsCi0gICAgMTA1LDEyMiwxMDEsMTE0LDc3LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LAotICAgIDEwNSwxMjIsMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDIxOCwyNSw5NSwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsCi0gICAgMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSw5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MSwxLDAsCi0gICAgMCwxMTUsNzYsMCwwLDAsMCwxMSw2LDEsMTIsMSwxMywzLDYsMSwKLSAgICAxMiwxLDEwLDEsMTYsMSwxNiwxLDE2LDEsMTIsMSwxOCwxLDEzLDEsCi0gICAgMTgsMSwxOCwxLDE1LDEsMTMsMSwxNSwxLDE4LDEsMTUsMSwxMywxLAotICAgIDEyLDEsMTIsMSwzLDEsMjAsMSwxMywxLDUsMiwxOCwxLDE1LDEsCi0gICAgMTMsMSwxNSwxLDMsMSwxOCwxLDEzLDEsNSwyLDE4LDEsMTUsMSwKLSAgICA5LDEsMTE0LDE0MywwLDAsMCw5OSw0LDAsMCwwLDAsMCwwLDAsCi0gICAgNSwwLDAsMCw2LDAsMCwwLDY3LDAsMCwwLDExNSwxMTIsMCwwLAotICAgIDAsMTE2LDAsMCwxMDYsMSwwLDEyNCwwLDAsMTMxLDEsMCwxMjUsNCwwLAotICAgIDExNiwyLDAsMTI0LDQsMCwxMTYsMywwLDEzMSwyLDAsMTE0LDc1LDAsMTE2LAotICAgIDQsMCwxMDAsMSwwLDEyNCwyLDAsMTMxLDIsMCwxLDEyNCwzLDAsMTAwLAotICAgIDIsMCwxMDcsOSwwLDExNCw3MSwwLDExNiw1LDAsMTA2LDYsMCwxMjQsNCwKLSAgICAwLDEyNCwzLDAsMTMxLDIsMCwxLDEyNCw0LDAsODMsMTE2LDcsMCwxMDAsCi0gICAgMywwLDEwNiw4LDAsMTI0LDIsMCwxMzEsMSwwLDEwMCw0LDAsMTI0LDEsCi0gICAgMCwxMDAsNSwwLDEyNCwyLDAsMTMxLDEsMiwxMzAsMSwwLDEwMCwyLDAsCi0gICAgODMsNDEsNiwxMjIsNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwKLSAgICAxMDEsOTksMTExLDEwMCwxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwKLSAgICAxMDAsMzIsOTgsMTIxLDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LAotICAgIDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsCi0gICAgNDYsMTIyLDIxLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsCi0gICAgMTE0LDExMSwxMDksMzIsMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksCi0gICAgMTExLDEwMCwxMDEsMzIsMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMTE0LDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsOSwyMTgsNywKLSAgICAxMDksOTcsMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwKLSAgICAxMDUsMTE1LDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw5NSwxMTYsMTIxLDExMiwxMDEsMTE0LDEwNywwLDAsMCwyMTgsNCw5NSwxMDUsMTA5LAotICAgIDExMiw5MCwxNiw5NSwxMDIsMTA1LDEyMCw5NSw5OSwxMTEsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCwKLSAgICA5NywxMDksMTAxLDExNCwxMDksMCwwLDAsMTE0LDQ5LDAsMCwwLDQxLDUsMTE0LAotICAgIDU1LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCw5MiwKLSAgICAwLDAsMCwyMTgsNCw5OSwxMTEsMTAwLDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTcsOTUsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMjI2LDEsMCwwLDExNSwKLSAgICAxNiwwLDAsMCwwLDIsMTUsMSwxNSwxLDEzLDEsMTIsMSwxNiwxLAotICAgIDQsMiwxOCwxLDExNCwxNDksMCwwLDAsMTE0LDYxLDAsMCwwLDk5LDMsCi0gICAgMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDc2LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMzEsMSwKLSAgICAwLDEyNSwzLDAsMTI0LDMsMCwxMDYsMiwwLDExNiwzLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDEzMSwxLDAsMSwxMjQsMywwLDEwNiwyLDAsMTE2LDMsMCwKLSAgICAxMjQsMiwwLDEzMSwxLDAsMTMxLDEsMCwxLDEyNCwzLDAsMTA2LDIsMCwKLSAgICAxMTYsNCwwLDEwNiw1LDAsMTI0LDAsMCwxMzEsMSwwLDEzMSwxLDAsMSwKLSAgICAxMjQsMywwLDgzLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLAotICAgIDk3LDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLAotICAgIDExNiwxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsCi0gICAgMTE5LDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLAotICAgIDMyLDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLAotICAgIDk3LDExNCwxMTQsOTcsMTIxLDExNCwxMzcsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLAotICAgIDExMCwxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDQsMCwwLDAsOTAsNSwxMDAsMTE3LAotICAgIDEwOSwxMTIsMTE1LDQxLDQsMTE0LDE0OCwwLDAsMCwxMTQsMTM1LDAsMCwwLDExNCwKLSAgICAxNDIsMCwwLDAsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKLSAgICAxMTYsMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDIzOCwxLDAsMCwxMTUsCi0gICAgMTAsMCwwLDAsMCwzLDEyLDEsMTksMSwxOSwxLDIyLDEsMTE0LDE1MiwKLSAgICAwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsNSwwLDAsMCwKLSAgICA0LDAsMCwwLDY3LDAsMCwwLDExNSw4OSwwLDAsMCwxMDAsMSwwLAotICAgIDEwMCwyLDAsMTA4LDAsMCwxMjUsMSwwLDExNiwxLDAsMTA2LDIsMCwxMjQsCi0gICAgMCwwLDEzMSwxLDAsMTA2LDMsMCwxMjUsMiwwLDEyNCwxLDAsMTA2LDQsCi0gICAgMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTYsMSwwLDEwNiw1LDAsCi0gICAgMTAwLDIsMCwxMDAsMywwLDEzMSwyLDAsMTI1LDQsMCwxMjQsNCwwLDEwNiwKLSAgICA2LDAsMTI0LDAsMCwxMDYsNiwwLDEyNCwzLDAsMTAwLDEsMCwyNSwxMzEsCi0gICAgMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsMTIxLDY4LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICAzMiw5OCwxMjEsMTE2LDEwMSwxMTUsMzIsMTE0LDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsCi0gICAgMTA1LDExMCwxMDMsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICA5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExNSwKLSAgICAxMTYsMTE0LDEwNSwxMTAsMTAzLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg1LDExMCwxMDUsMTE4LAotICAgIDEwMSwxMTQsMTE1LDk3LDEwOCwzMiwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwxMDEsMzIsMTE1LDExNywKLSAgICAxMTIsMTEyLDExMSwxMTQsMTE2LDMyLDEwNSwxMTUsMzIsMTE3LDExNSwxMDEsMTAwLDMyLDEwNSwxMTAsCi0gICAgMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwMSw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDQ2LDEwLDMyLAotICAgIDMyLDMyLDMyLDExNCw2MSwwLDAsMCw3OCw4NCw0MSw3LDIxOCw4LDExNiwxMTEsCi0gICAgMTA3LDEwMSwxMTAsMTA1LDEyMiwxMDEsMTE0LDUxLDAsMCwwLDkwLDcsNjYsMTIxLDExNiwKLSAgICAxMDEsMTE1LDczLDc5LDkwLDgsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDkwLDE1LAotICAgIDEwMCwxMDEsMTE2LDEwMSw5OSwxMTYsOTUsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLAotICAgIDI1LDczLDExMCw5OSwxMTQsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMDgsNzgsMTAxLDExOSwxMDgsCi0gICAgMTA1LDExMCwxMDEsNjgsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMTgsNiwxMDAsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDQxLDUsMjE4LDEyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsOTgsMTIxLDExNiwKLSAgICAxMDEsMTE1LDExNCwxNTMsMCwwLDAsOTAsMjEsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwKLSAgICA5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTE0LDEwMSw5NywxMDAsMTA4LDEwNSwxMTAsMTAxLDIxOCw4LAotICAgIDEwMSwxMTAsOTksMTExLDEwMCwxMDUsMTEwLDEwMyw5MCwxNSwxMTAsMTAxLDExOSwxMDgsMTA1LDExMCwKLSAgICAxMDEsOTUsMTAwLDEwMSw5OSwxMTEsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEzLDEwMCwxMDEsOTksMTExLDEwMCwxMDEsCi0gICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwyNDgsMSwwLDAsMTE1LDEwLDAsMCwwLAotICAgIDAsNSwxMiwxLDE4LDEsMTUsMSwxOCwxLDExNCwxNTcsMCwwLDAsMTE0LAotICAgIDEyOSwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwKLSAgICAxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LAotICAgIDk5LDIsMCwwLDAsMiwwLDAsMCw5LDAsMCwwLDE5LDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw4OSwxLDAsMCwxMjQsMSwwLDEwMCwxLDAsCi0gICAgMTA3LDgsMCwxMTQsNzMsMCwxMDAsMiwwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMiwwLDEwMCwzLDAsMTMxLDIsMCwxMTQsNzMsMCwxMjEsMTksMCwxMjQsMiwKLSAgICAwLDEwNiwxLDAsMTI0LDAsMCwxMzEsMSwwLDEyNSwxLDAsODcsMTEwLDE4LAotICAgIDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw3MiwwLDEsMSwxLDg5LDExMCwKLSAgICAxLDAsODgsMTE2LDMsMCwxMDYsNCwwLDEyNCwwLDAsMTI0LDIsMCwxMDAsCi0gICAgNCwwLDEyNCwxLDAsMTMxLDIsMSwxMjUsNCwwLDEwMCw1LDAsMTI0LDQsCi0gICAgMCw5NSw1LDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDE5NCwwLAotICAgIDEyMCw3MywwLDExNiw2LDAsMTMxLDAsMCw2OCw5Myw1OCwwLDkyLDIsMCwKLSAgICAxMjUsNSwwLDEyNSw2LDAsMTI0LDEsMCwxMDYsNywwLDExNiw4LDAsMTI0LAotICAgIDYsMCwxMzEsMSwwLDEzMSwxLDAsMTE0LDEyOCwwLDEyNCw1LDAsMTI0LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMTI1LDIsMCwxMjQsMiwwLDEyNCw0LDAsCi0gICAgOTUsOSwwLDgwLDExMywxMjgsMCw4NywxMDAsMSwwLDgzLDEyNCwzLDAsMTE2LAotICAgIDEwLDAsMTA3LDgsMCwxMTQsMjMsMSwxMTYsMCwwLDEyNCwyLDAsMTAwLDYsCi0gICAgMCwxMzEsMiwwLDExNCwzMiwxLDEyMSwxOSwwLDEyNCwyLDAsMTA2LDExLDAsCi0gICAgMTI0LDAsMCwxMzEsMSwwLDEyNSw3LDAsODcsMTEwLDE4LDAsNCwxMTYsMiwKLSAgICAwLDEwNywxMCwwLDExNCw0LDEsMSwxLDEsODksMTEzLDMyLDEsODgsMTI0LAotICAgIDcsMCwxMTQsMzIsMSwxMDMsMCwwLDEyNCw0LDAsOTUsMTIsMCwxMTAsOSwKLSAgICAwLDEyNCwzLDAsMTI0LDQsMCw5NSwxMiwwLDEyNCw0LDAsMTA2LDEyLDAsCi0gICAgMTAzLDAsMCwxMDcsMiwwLDExNCw4NSwxLDEyNCwxLDAsMTE0LDg1LDEsMTE2LAotICAgIDEzLDAsMTI0LDEsMCwxMzEsMSwwLDEwMCw3LDAsMjUsMTI1LDgsMCwxMjQsCi0gICAgNCwwLDEwNiwxMiwwLDEwNiwxNCwwLDEyNCw4LDAsMTMxLDEsMCwxLDEyNCwKLSAgICA0LDAsODMsNDEsOCw5Nyw2MSwxLDAsMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDMyLDk4LAotICAgIDk3LDExNSwxMDEsMTAwLDMyLDExMSwxMTAsMzIsOTcsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwOCwKLSAgICAxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDExMSwKLSAgICAzMiwxMDUsMTEwLDEwMCwxMDUsOTksOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiwKLSAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0NCwzMiwxMTUsMTAxLDExNiwxMCwzMiwzMiwzMiwzMiwKLSAgICAxMTUsMTE3LDk4LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE2LDExMSwzMiw5NywzMiwKLSAgICAxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsCi0gICAgMTIxLDMyLDExMiw5NywxMTYsMTA0LDExNSw0NiwzMiwzMiw2NSwxMTAsMTAsMzIsMzIsMzIsCi0gICAgMzIsMTAxLDEwOSwxMTIsMTE2LDEyMSwzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTA1LDExNSwzMiwxMTUsCi0gICAgMTE3LDEwMiwxMDIsMTA1LDk5LDEwNSwxMDEsMTEwLDExNiw0NCwzMiwxMTYsMTA0LDExMSwxMTcsMTAzLAotICAgIDEwNCwzMiwxMDUsMTE2LDExNSwzMiwxMTAsMTExLDExNiwzMiwxMTEsMTE2LDEwNCwxMDEsMTE0LDExOSwKLSAgICAxMDUsMTE1LDEwMSwzMiwxMTcsMTE1LDEwMSwxMDIsMTE3LDEwOCwzMiwxMTYsMTExLDMyLDExNiwxMDQsCi0gICAgMTAxLDEwLDMyLDMyLDMyLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDMyLDExNSwxMjEsMTE1LAotICAgIDExNiwxMDEsMTA5LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA4LDExMSwKLSAgICA5NywxMDAsMTAxLDExNCwzMiwxMDksMTE3LDExNSwxMTYsMzIsMTE2LDk3LDEwNywxMDEsMzIsOTcsCi0gICAgMzIsMTE1LDExMiwxMDEsOTksMzIsOTcsMTE1LDMyLDEwNSwxMTYsMTE1LDMyLDExMSwxMTAsMTA4LAotICAgIDEyMSwzMiw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDAsNDEsMzIsOTcsMTE0LDEwMywKLSAgICA0NiwxMCwxMCwzMiwzMiwzMiwzMiw3OCwxMjIsOSw2MCwxMTcsMTEwLDEwNywxMTAsMTExLAotICAgIDExOSwxMTAsNjIsMjE4LDEyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LAotICAgIDEwMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwxMTIsCi0gICAgOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYxLDAsMCwwLDQxLDE1LDExNCwxMTcsMCwKLSAgICAwLDAsMTE0LDE1OSwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxMjMsMCwwLAotICAgIDAsMjE4LDEwLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsODMsMTEyLDEwMSw5OSw5MCwxMyw5NSwKLSAgICAxMTUsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsOTcsMTE2LDExNiwxMTQsMjE4LDI3LDk1LDEwMywKLSAgICAxMDEsMTE2LDk1LDExNSwxMTcsMTEyLDExMiwxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwMiwxMDUsMTA4LAotICAgIDEwMSw5NSwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsOTQsMCwwLDAsMTE0LDk1LAotICAgIDAsMCwwLDExNCwxMjksMCwwLDAsMjE4LDksOTUsODAsNzksODAsODUsNzYsCi0gICAgNjUsODQsNjksMTE0LDE2MSwwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCw0MCwwLAotICAgIDAsMCwyMTgsNiw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDQxLDksMTE0LDEwOCwwLDAsCi0gICAgMCw5MCw4LDEwOCwxMTEsOTksOTcsMTE2LDEwNSwxMTEsMTEwLDExNCwxMjksMCwwLDAsCi0gICAgMTE0LDE1OCwwLDAsMCwyMTgsNCwxMTUsMTEyLDEwMSw5OSwyMTgsMTIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw5NSw5OSwxMDgsOTcsMTE1LDExNSwyMTgsOCwxMTUsMTE3LDEwMiwxMDIsMTA1LAotICAgIDEyMCwxMDEsMTE1LDExNCwxNjEsMCwwLDAsOTAsNywxMDAsMTA1LDExNCwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyMTgsMjMsMTE1LDExMiwxMDEsOTksOTUsMTAyLDExNCwxMTEsMTA5LDk1LDEwMiwxMDUsMTA4LDEwMSwKLSAgICA5NSwxMDgsMTExLDk5LDk3LDExNiwxMDUsMTExLDExMCw5LDIsMCwwLDExNSw2MCwwLAotICAgIDAsMCwwLDEyLDEyLDQsNiwxLDE1LDIsMywxLDE5LDEsMTMsMSwKLSAgICA1LDgsMjQsMSw5LDMsMTIsMSwyMiwxLDIxLDEsMTUsMSw5LDEsCi0gICAgNSwyLDQsMywxMiwyLDE1LDEsMywxLDE5LDEsMTMsMSw1LDIsCi0gICAgNiwxLDEyLDIsOSwxLDE1LDEsNiwxLDE2LDEsMTYsMiwxMTQsMTY5LAotICAgIDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAotICAgIDUsMCwwLDAsNjQsMCwwLDAsMTE1LDEyMSwwLDAsMCwxMDEsMCwwLAotICAgIDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDkwLDMsMCwxMDAsCi0gICAgMiwwLDkwLDQsMCwxMDAsMywwLDkwLDUsMCwxMDAsNCwwLDkwLDYsCi0gICAgMCwxMDEsNywwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDEzMSwxLDAsCi0gICAgOTAsOCwwLDEwMSw3LDAsMTAwLDcsMCwxMDAsOCwwLDEzMiwwLDAsMTMxLAotICAgIDEsMCw5MCw5LDAsMTAxLDcsMCwxMDAsOSwwLDEwMCw5LDAsMTAwLDEwLAotICAgIDAsMTAwLDExLDAsMTMyLDIsMCwxMzEsMSwwLDkwLDEwLDAsMTAxLDcsMCwKLSAgICAxMDAsOSwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwxLDAsMTMxLDEsMCw5MCwKLSAgICAxMSwwLDEwMCw5LDAsODMsNDEsMTQsMjE4LDIxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksCi0gICAgMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwKLSAgICA2Miw3NywxMDEsMTE2LDk3LDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsCi0gICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiwxMDAsMTAxLAotICAgIDk5LDEwOCw5NywxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDg3LDEwNSwKLSAgICAxMTAsMTAwLDExMSwxMTksMTE1LDMyLDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNDYsMTIyLAotICAgIDU5LDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsCi0gICAgOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwxMTUsCi0gICAgOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSwxMjIsNjUsODMsMTExLAotICAgIDEwMiwxMTYsMTE5LDk3LDExNCwxMDEsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw5Miw4MCwxMjEsCi0gICAgMTE2LDEwNCwxMTEsMTEwLDY3LDExMSwxMTQsMTAxLDkyLDEyMywxMTUsMTIxLDExNSw5NSwxMTgsMTAxLAotICAgIDExNCwxMTUsMTA1LDExMSwxMTAsMTI1LDkyLDc3LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDkyLDEyMywKLSAgICAxMDIsMTE3LDEwOCwxMDgsMTEwLDk3LDEwOSwxMDEsMTI1LDkyLDY4LDEwMSw5OCwxMTcsMTAzLDcwLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDExLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSw2NywwLDAsMCwxMjEsMjMsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTE2LDAsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDIsMCw4MywKLSAgICA4NywxMTAsMzcsMCw0LDExNiwzLDAsMTA3LDEwLDAsMTE0LDYyLDAsMSwxLAotICAgIDEsMTE2LDAsMCwxMDYsMSwwLDExNiwwLDAsMTA2LDQsMCwxMjQsMSwwLAotICAgIDEzMSwyLDAsODMsODksMTEwLDEsMCw4OCwxMDAsMCwwLDgzLDQxLDEsNzgsCi0gICAgNDEsNSwyMTgsNyw5NSwxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5MCw3LDc5LDExMiwxMDEsCi0gICAgMTEwLDc1LDEwMSwxMjEsOTAsMTcsNzIsNzUsNjksODksOTUsNjcsODUsODIsODIsNjksCi0gICAgNzgsODQsOTUsODUsODMsNjksODIsMTE0LDQyLDAsMCwwLDkwLDE4LDcyLDc1LAotICAgIDY5LDg5LDk1LDc2LDc5LDY3LDY1LDc2LDk1LDc3LDY1LDY3LDcyLDczLDc4LDY5LAotICAgIDQxLDIsMjE4LDMsOTksMTA4LDExNSwxMTQsNSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTQsOTUsMTExLDExMiwKLSAgICAxMDEsMTEwLDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsODcsMiwwLDAsMTE1LAotICAgIDgsMCwwLDAsMCwyLDMsMSwyMywxLDEzLDEsMTIyLDM2LDg3LDEwNSwKKyAgICA5NSwxMTUsMTA0LDEwNSwxMDksMTU2LDEsMCwwLDExNSwxMCwwLDAsMCwwLDEwLAorICAgIDE0LDEsMTYsMSw0LDEsMjIsMSwxMTQsMTI3LDAsMCwwLDk5LDQsMCwKKyAgICAwLDAsMCwwLDAsMCwxMSwwLDAsMCwyMiwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMTM2LDEsMCwwLDEwNSwwLDEyNSw0LDEyNCwyLDEwMCwxLDEwNywKKyAgICA5LDExNCwyMiwxMjQsMiwxMjQsNCwxMDAsMiw2MCwwLDExMCw0LDEwMCwzLDEyNSwKKyAgICAyLDEyNCwzLDEwMCwxLDEwNyw5LDExNCw0MiwxMjQsMywxMjQsNCwxMDAsNCw2MCwKKyAgICAwLDEyNCwwLDEwMCwxLDEwMCw1LDEzMywyLDI1LDAsMTI1LDUsMTI0LDAsMTAwLAorICAgIDUsMTAwLDYsMTMzLDIsMjUsMCwxMjUsNiwxMjQsMCwxMDAsNiwxMDAsNywxMzMsCisgICAgMiwyNSwwLDEyNSw3LDEyNCw1LDExNiwwLDEwNywzLDExNCwxMjQsMTAwLDgsMTA2LAorICAgIDEsMTI0LDIsMTI0LDUsMTMxLDIsMTI1LDgsMTE2LDIsMTA2LDMsMTAwLDksMTI0LAorICAgIDgsMTMxLDIsMSwwLDExNiw0LDEyNCw4LDEwMiwxLDEyNCw0LDE0MiwxLDEzMCwKKyAgICAxLDExMCw4NiwxMTYsNSwxMjQsNiwxMzEsMSwxMDAsNSwxMDcsMywxMTQsMTY4LDEwMCwKKyAgICAxMCwxMDYsMSwxMjQsMiwxMzEsMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsCisgICAgOCwxMzEsMiwxLDAsMTE2LDYsMTI0LDgsMTMxLDEsMTMwLDEsMTEwLDQyLDExNiwKKyAgICA1LDEyNCw3LDEzMSwxLDEwMCw1LDEwNywzLDExNCwyMTAsMTAwLDExLDEwNiwxLDEyNCwKKyAgICAyLDEzMSwxLDEyNSw4LDExNiwyLDEwNiwzLDEwMCw5LDEyNCw4LDEzMSwyLDEsCisgICAgMCwxMTYsNiwxMjQsOCwxMzEsMSwxMzAsMSwxMjQsMSwxMDAsMSwxMDcsOSwxNDQsCisgICAgMSwxMTQsMTI0LDEyMSwxNiwxMTYsNywxMjQsMSwxMDAsMTIsMjUsMCwxMzEsMSwxMjUsCisgICAgOSw4NywwLDExMCwyMiw0LDAsMTE2LDgsMTA3LDEwLDE0NCwxLDExNCwyLDEsCisgICAgMCwxLDAsMSwwLDg5LDAsMTEwLDUwLDg4LDAsMTE2LDksMTI0LDYsMTMxLAorICAgIDEsMTI0LDksMTA3LDMsMTQ0LDEsMTE0LDUyLDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsOCwxMTYsMiwxMDYsMywxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LAorICAgIDQsMTI0LDgsMTAyLDEsMTI0LDQsMTQyLDEsMTMwLDEsMTIxLDE2LDEyNCwxLDEwMCwKKyAgICAxNCwyNSwwLDEwMCwxNSw2NCwwLDEyNSwxMCw4NywwLDExMCwyMiw0LDAsMTE2LAorICAgIDgsMTA3LDEwLDE0NCwxLDExNCw5MCwxLDAsMSwwLDEsMCw4OSwwLDExMCwKKyAgICAzNCw4OCwwLDExNiw5LDEyNCw3LDEzMSwxLDEyNCwxMCwxMDcsMywxNDQsMSwxMTQsCisgICAgMTI0LDExNiw0LDEwMCwxMywxMDYsMSwxMjQsMiwxMzEsMSwxMDIsMSwxMjQsNCwxNDIsCisgICAgMSwxMzAsMSwxMjQsMCwxMDAsNywxMDAsMSwxMzMsMiwyNSwwLDgzLDAsNDEsCisgICAgMTYsOTcsMTIyLDEsMCwwLDg2LDk3LDEwOCwxMDUsMTAwLDk3LDExNiwxMDEsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTA0LDEwMSw5NywxMDAsMTAxLDExNCwzMiwxMTEsMTAyLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDExMiw5NywxMTUsMTE1LDEwMSwxMDAsNDUsMTA1LDExMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwKKyAgICAxMTEsMTAwLDEwMSwzMiw5NywxMDMsOTcsMTA1LDExMCwxMTUsMTE2LDMyLDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsOTUsMTE1LDExNiw5NywxMTYsMTE1LDMyLDQwLDEwNSwxMDIsMTAsMzIsMzIsMzIsCisgICAgMzIsMTAzLDEwNSwxMTgsMTAxLDExMCw0MSwzMiw5NywxMTAsMTAwLDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKKyAgICAxMDAsMTAxLDMyLDExNiwxMDQsOTcsMTE2LDMyLDk5LDk3LDExMCwzMiw5OCwxMDEsMzIsOTksCisgICAgMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OSwxMTEsMTA5LDExMiwxMDUsCisgICAgMTA4LDEwMSw0MCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw2NSwxMDgsMTA4LDMyLDExMSwKKyAgICAxMTYsMTA0LDEwMSwxMTQsMzIsOTcsMTE0LDEwMywxMTcsMTA5LDEwMSwxMTAsMTE2LDExNSwzMiw5NywKKyAgICAxMTQsMTAxLDMyLDExNywxMTUsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDEwMSwxMTAsMTA0LDk3LDExMCwKKyAgICA5OSwxMDEsMzIsMTAxLDExNCwxMTQsMTExLDExNCwzMiwxMTQsMTAxLDExMiwxMTEsMTE0LDExNiwxMDUsCisgICAgMTEwLDEwMyw0NiwxMCwxMCwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDExMSwxMTQsMTE2LDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSw5NywxMDMsMTA1LDk5LDMyLDExMCwxMTcsCisgICAgMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExNSwzMiwxMDUsMTEwLDk5LDExMSwxMTQsMTE0LDEwMSw5OSwKKyAgICAxMTYsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSwzMiwxMDUsMTE1LDEwLDMyLDMyLDMyLDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsMTE2LAorICAgIDExMSwzMiw5OCwxMDEsMzIsMTE1LDExNiw5NywxMDgsMTAxLDQ2LDMyLDY5LDc5LDcwLDY5LAorICAgIDExNCwxMTQsMTExLDExNCwzMiwxMDUsMTE1LDMyLDExNCw5NywxMDUsMTE1LDEwMSwxMDAsMzIsMTE5LAorICAgIDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsOTcsMzIsMTA1LDExNSwzMiwKKyAgICAxMDIsMTExLDExNywxMTAsMTAwLDMyLDExNiwxMTEsMzIsOTgsMTAxLDEwLDMyLDMyLDMyLDMyLAorICAgIDExNiwxMTQsMTE3LDExMCw5OSw5NywxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKKyAgICA3OCwxMTQsMTAyLDAsMCwwLDEyMiwxMCw2MCw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLAorICAgIDEwMSw2MiwxMTQsMzcsMCwwLDAsMTE0LDE0LDAsMCwwLDIzMyw4LDAsMCwKKyAgICAwLDIzMywxMiwwLDAsMCwxMjIsMzAsOTgsOTcsMTAwLDMyLDEwOSw5NywxMDMsMTA1LAorICAgIDk5LDMyLDExMCwxMTcsMTA5LDk4LDEwMSwxMTQsMzIsMTA1LDExMCwzMiwxMjMsMzMsMTE0LDEyNSwKKyAgICA1OCwzMiwxMjMsMzMsMTE0LDEyNSwxMjIsMiwxMjMsMTI1LDEyMiw0MywxMTQsMTAxLDk3LDk5LAorICAgIDEwNCwxMDEsMTAwLDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSwKKyAgICA5NywxMDAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNSwxMDksMTAxLDExNSwxMTYsOTcsMTA5LDExMiwzMiwKKyAgICAxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDEyMiw0OCwxMTQsMTAxLDk3LDk5LDEwNCwxMDEsMTAwLAorICAgIDMyLDY5LDc5LDcwLDMyLDExOSwxMDQsMTA1LDEwOCwxMDEsMzIsMTE0LDEwMSw5NywxMDAsMTA1LAorICAgIDExMCwxMDMsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDExMSwxMDIsMzIsMTE1LDExMSwxMTcsMTE0LDk5LAorICAgIDEwMSwzMiwxMDUsMTEwLDMyLDEyMywzMywxMTQsMTI1LDIxOCw1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTIyLDI2LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwNSwxMTUsMzIsMTE1LDExNiwKKyAgICA5NywxMDgsMTAxLDMyLDEwMiwxMTEsMTE0LDMyLDEyMywzMywxMTQsMTI1LDIxOCw0LDExNSwxMDUsCisgICAgMTIyLDEwMSwxMDgsMywwLDAsMCwyNTUsMTI3LDI1NSwxMjcsMywwLDQxLDEwLDIxOCwKKyAgICAxMiw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsNTAsMCwKKyAgICAwLDAsMTE0LDExOCwwLDAsMCwyMTgsMTYsOTUsMTE4LDEwMSwxMTQsOTgsMTExLDExNSwKKyAgICAxMDEsOTUsMTA5LDEwMSwxMTUsMTE1LDk3LDEwMywxMDEsMTE0LDEwMywwLDAsMCwxMTQsMzMsCisgICAgMCwwLDAsMjE4LDgsNjksNzksNzAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxNiwwLAorICAgIDAsMCwyMTgsOCw3NSwxMDEsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsMjEsMCwwLAorICAgIDAsNDEsMTEsMTE0LDU2LDAsMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAorICAgIDk1LDExNSwxMTYsOTcsMTE2LDExNSwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwKKyAgICA5MCwxMSwxMDEsMTIwLDk5LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LDkwLDUsMTA5LAorICAgIDk3LDEwMywxMDUsOTksOTAsMTMsMTE0LDk3LDExOSw5NSwxMTYsMTA1LDEwOSwxMDEsMTE1LDExNiwKKyAgICA5NywxMDksMTEyLDkwLDgsMTE0LDk3LDExOSw5NSwxMTUsMTA1LDEyMiwxMDEsMTE0LDc5LDAsCisgICAgMCwwLDIxOCwxMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMjE4LDExLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE1LDEwNSwxMjIsMTAxLDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyNSw5NSwxMTgsCisgICAgOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKKyAgICA5NSwxMDQsMTAxLDk3LDEwMCwxMDEsMTE0LDE3MywxLDAsMCwxMTUsNzYsMCwwLDAsCisgICAgMCwxMSw0LDEsOCwxLDEwLDMsNCwxLDgsMSw4LDEsMTIsMSwKKyAgICAxMiwxLDEyLDEsOCwxLDEyLDEsMTIsMSwxNCwxLDEyLDEsMTAsMSwKKyAgICAxMiwxLDEwLDEsMTIsMSwxMCwxLDEyLDEsOCwxLDEwLDEsMiwxLAorICAgIDE2LDEsMTYsMSw2LDIsMTQsMSwxMCwxLDEyLDEsMTIsMSwyLDEsCisgICAgMTYsMSwxNiwxLDYsMiwxNCwxLDEyLDEsNiwxLDExNCwxMzksMCwwLAorICAgIDAsOTksNCwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsNSwwLAorICAgIDAsMCw2NywwLDAsMCwxMTUsODIsMCwwLDAsMTE2LDAsMTA2LDEsMTI0LAorICAgIDAsMTMxLDEsMTI1LDQsMTE2LDIsMTI0LDQsMTE2LDMsMTMxLDIsMTE0LDU4LDExNiwKKyAgICA0LDEwNiw1LDEwMCwxLDEyNCwyLDEzMSwyLDEsMCwxMjQsMywxMDAsMiwxMDcsCisgICAgOSwxMTQsNTIsMTE2LDYsMTA2LDcsMTI0LDQsMTI0LDMsMTMxLDIsMSwwLDEyNCwKKyAgICA0LDgzLDAsMTEwLDIwLDExNiw4LDEwMCwzLDEwNiw5LDEyNCwyLDEzMSwxLDEyNCwKKyAgICAxLDEyNCwyLDEwMCw0LDE0MSwzLDEzMCwxLDEwMCwyLDgzLDAsNDEsNSwxMjIsCisgICAgNjAsNjcsMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwKKyAgICAxMDEsMzIsOTcsMTE1LDMyLDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLAorICAgIDMyLDk1LDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LAorICAgIDExMSwxMDAsMTAxLDk1LDEwNCwxMDEsOTcsMTAwLDEwMSwxMTQsNDAsNDEsNDYsMTIyLDIxLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsCisgICAgMTIzLDMzLDExNCwxMjUsNzgsMTIyLDIzLDc4LDExMSwxMTAsNDUsOTksMTExLDEwMCwxMDEsMzIsCisgICAgMTExLDk4LDEwNiwxMDEsOTksMTE2LDMyLDEwNSwxMTAsMzIsMTIzLDMzLDExNCwxMjUsNDEsMiwKKyAgICAxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwxMCwyMTgsNywxMDksOTcsCisgICAgMTE0LDExNSwxMDQsOTcsMTA4LDkwLDUsMTA4LDExMSw5NywxMDAsMTE1LDIxOCwxMCwxMDUsMTE1LAorICAgIDEwNSwxMTAsMTE1LDExNiw5NywxMTAsOTksMTAxLDIxOCwxMCw5NSw5OSwxMTEsMTAwLDEwMSw5NSwKKyAgICAxMTYsMTIxLDExMiwxMDEsMTE0LDExOCwwLDAsMCwxMTQsMTMzLDAsMCwwLDIxOCw0LAorICAgIDk1LDEwNSwxMDksMTEyLDkwLDE2LDk1LDEwMiwxMDUsMTIwLDk1LDk5LDExMSw5NSwxMDIsMTA1LAorICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsMTE0LDEwMywwLDAsMCwxMTQsNTAsMCwwLDAsCisgICAgNDEsNSwxMTQsNTYsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsOTMsMCwwLAorICAgIDAsMTE0LDk0LDAsMCwwLDIxOCw0LDk5LDExMSwxMDAsMTAxLDExNCw0LDAsMCwKKyAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsCisgICAgMTA5LDExMiwxMDUsMTA4LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwyMjgsMSwKKyAgICAwLDAsMTE1LDE2LDAsMCwwLDAsMiwxMCwxLDEwLDEsMTIsMSw4LAorICAgIDEsMTIsMSw2LDIsMTAsMSwxMTQsMTQ1LDAsMCwwLDExNCw2MiwwLDAsCisgICAgMCw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsCisgICAgMCwwLDY3LDAsMCwwLDExNSw1NiwwLDAsMCwxMTYsMCwxMTYsMSwxMzEsCisgICAgMSwxMjUsMywxMjQsMywxMDYsMiwxMTYsMywxMjQsMSwxMzEsMSwxMzEsMSwxLAorICAgIDAsMTI0LDMsMTA2LDIsMTE2LDMsMTI0LDIsMTMxLDEsMTMxLDEsMSwwLDEyNCwKKyAgICAzLDEwNiwyLDExNiw0LDEwNiw1LDEyNCwwLDEzMSwxLDEzMSwxLDEsMCwxMjQsCisgICAgMyw4MywwLDQxLDEsMTIyLDgwLDY3LDExMSwxMDksMTEyLDEwNSwxMDgsMTAxLDMyLDk3LAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDUsMTEwLDExNiwKKyAgICAxMTEsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsMTAyLDExMSwxMTQsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwNSwxMTAsMTAzLDMyLDExMSwxMTcsMTE2LDMyLDExNiwxMTEsMzIsOTcsMzIsCisgICAgOTgsMTIxLDExNiwxMDEsNDUsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsMTAwLDEwLDMyLDMyLAorICAgIDMyLDMyLDEwMiwxMDUsMTA4LDEwMSw0Niw0MSw2LDIxOCw5LDk4LDEyMSwxMTYsMTAxLDk3LAorICAgIDExNCwxMTQsOTcsMTIxLDExNCwxMzIsMCwwLDAsMjE4LDYsMTAxLDEyMCwxMTYsMTAxLDExMCwKKyAgICAxMDAsMTE0LDE5LDAsMCwwLDExNCwxNDAsMCwwLDAsOTAsNSwxMDAsMTE3LDEwOSwKKyAgICAxMTIsMTE1LDQxLDQsMTE0LDE0NCwwLDAsMCwxMTQsMTMwLDAsMCwwLDExNCwxMzgsCisgICAgMCwwLDAsMTE0LDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCwxNyw5NSw5OSwxMTEsMTAwLDEwMSw5NSwxMTYsCisgICAgMTExLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDI0MCwxLDAsMCwxMTUsMTAsCisgICAgMCwwLDAsMCwzLDgsMSwxNCwxLDE0LDEsMTYsMSwxMTQsMTQ4LDAsCisgICAgMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCw1LDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDYyLDAsMCwwLDEwMCwxLDEwMCwyLAorICAgIDEwOCwwLDEyNSwxLDExNiwxLDEwNiwyLDEyNCwwLDEzMSwxLDEwNiwzLDEyNSwyLAorICAgIDEyNCwxLDEwNiw0LDEyNCwyLDEzMSwxLDEyNSwzLDExNiwxLDEwNiw1LDEwMCwyLAorICAgIDEwMCwzLDEzMSwyLDEyNSw0LDEyNCw0LDEwNiw2LDEyNCwwLDEwNiw2LDEyNCwzLAorICAgIDEwMCwxLDI1LDAsMTMxLDEsMTMxLDEsODMsMCw0MSw0LDEyMiwxMjEsNjgsMTAxLAorICAgIDk5LDExMSwxMDAsMTAxLDMyLDk4LDEyMSwxMTYsMTAxLDExNSwzMiwxMTQsMTAxLDExMiwxMTQsMTAxLAorICAgIDExNSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LAorICAgIDExMSwxMDAsMTAxLDMyLDk3LDExMCwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgODUsMTEwLDEwNSwxMTgsMTAxLDExNCwxMTUsOTcsMTA4LDMyLDExMCwxMDEsMTE5LDEwOCwxMDUsMTEwLAorICAgIDEwMSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMzIsMTA1LDExNSwzMiwxMTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsMTAxLDk5LDExMSwxMDAsMTA1LDExMCwKKyAgICAxMDMsNDYsMTAsMzIsMzIsMzIsMzIsMTE0LDYyLDAsMCwwLDc4LDg0LDQxLDcsCisgICAgMjE4LDgsMTE2LDExMSwxMDcsMTAxLDExMCwxMDUsMTIyLDEwMSwxMTQsNTIsMCwwLDAsOTAsCisgICAgNyw2NiwxMjEsMTE2LDEwMSwxMTUsNzMsNzksOTAsOCwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LAorICAgIDExMCwxMDEsOTAsMTUsMTAwLDEwMSwxMTYsMTAxLDk5LDExNiw5NSwxMDEsMTEwLDk5LDExMSwxMDAsCisgICAgMTA1LDExMCwxMDMsOTAsMjUsNzMsMTEwLDk5LDExNCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDEwOCwKKyAgICA3OCwxMDEsMTE5LDEwOCwxMDUsMTEwLDEwMSw2OCwxMDEsOTksMTExLDEwMCwxMDEsMTE0LDIxOCw2LAorICAgIDEwMCwxMDEsOTksMTExLDEwMCwxMDEsNDEsNSwyMTgsMTIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwKKyAgICA5NSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDE0OSwwLDAsMCw5MCwyMSwxMTUsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMTQsMTAxLDk3LDEwMCwxMDgsMTA1LAorICAgIDExMCwxMDEsMjE4LDgsMTAxLDExMCw5OSwxMTEsMTAwLDEwNSwxMTAsMTAzLDkwLDE1LDExMCwxMDEsCisgICAgMTE5LDEwOCwxMDUsMTEwLDEwMSw5NSwxMDAsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTMsMTAwLDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDI1MCwxLDAsMCwxMTUsCisgICAgMTAsMCwwLDAsMCw1LDgsMSwxMiwxLDEwLDEsMTIsMSwxMTQsMTUzLAorICAgIDAsMCwwLDQxLDIsMTE0LDEyNCwwLDAsMCwyMTgsMjYsMTE1LDExNyw5OCwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTA4LDExMSw5OSwKKyAgICA5NywxMTYsMTA1LDExMSwxMTAsMTE1LDk5LDIsMCwwLDAsMiwwLDAsMCw5LAorICAgIDAsMCwwLDE5LDAsMCwwLDY3LDAsMCwwLDExNSwxOCwxLDAsMCwKKyAgICAxMjQsMSwxMDAsMSwxMDcsOCwxMTQsNjAsMTAwLDIsMTI1LDEsMTE2LDAsMTI0LDIsCisgICAgMTAwLDMsMTMxLDIsMTE0LDcwLDEyMSwxNCwxMjQsMiwxMDYsMSwxMjQsMCwxMzEsMSwKKyAgICAxMjUsMSw4NywwLDExMyw3MCw0LDAsMTE2LDIsMTA3LDEwLDExNCw1NiwxLDAsCisgICAgMSwwLDEsMCw4OSwwLDExMyw3MCw4OCwwLDExMCwxMCwxMTYsMywxMDYsNCwKKyAgICAxMjQsMSwxMzEsMSwxMjUsMSwxMTYsNSwxMDYsNiwxMjQsMCwxMjQsMiwxMjQsMSwKKyAgICAxMDAsNCwxNDEsMywxMjUsNCwxMDAsNSwxMjQsNCw5NSw3LDEyNCwyLDEwMCwxLAorICAgIDEwNyw4LDExNCwxNTYsMTIwLDU0LDExNiw4LDEzMSwwLDY4LDAsOTMsNDAsOTIsMiwKKyAgICAxMjUsNSwxMjUsNiwxMjQsMSwxMDYsOSwxMTYsMTAsMTI0LDYsMTMxLDEsMTMxLDEsCisgICAgMTE0LDEwOCwxMjQsNSwxMjQsMCwxMjQsMSwxMzEsMiwxMjUsMiwxMjQsMiwxMjQsNCwKKyAgICA5NSwxMSw4MCwwLDExMywxMDgsODcsMCwxMDAsMSw4MywwLDEyNCwzLDExNiwxMiwKKyAgICAxMDcsOCwxMTQsMjIyLDExNiwwLDEyNCwyLDEwMCw2LDEzMSwyLDExNCwyMjgsMTIxLDE0LAorICAgIDEyNCwyLDEwNiwxMywxMjQsMCwxMzEsMSwxMjUsNyw4NywwLDExMCwyMCw0LDAsCisgICAgMTE2LDIsMTA3LDEwLDExNCwyMDgsMSwwLDEsMCwxLDAsODksMCwxMTMsMjI4LAorICAgIDg4LDAsMTI0LDcsMTE0LDIyOCwxMDMsMCwxMjQsNCw5NSwxNCwxMTAsNiwxMjQsMywKKyAgICAxMjQsNCw5NSwxNCwxMjQsNCwxMDYsMTQsMTAzLDAsMTA3LDIsMTQ0LDEsMTE0LDE0LAorICAgIDEyNCwxLDE0NCwxLDExNCwxNCwxMTYsMTUsMTI0LDEsMTMxLDEsMTAwLDcsMjUsMCwKKyAgICAxMjUsOCwxMjQsNCwxMDYsMTQsMTA2LDE2LDEyNCw4LDEzMSwxLDEsMCwxMjQsNCwKKyAgICA4MywwLDQxLDgsOTcsNjEsMSwwLDAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKKyAgICA5NywzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwzMiw5OCw5NywKKyAgICAxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMTEsMzIsCisgICAgMTA1LDExMCwxMDAsMTA1LDk5LDk3LDExNiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTA1LDExNSwzMiw5NywzMiwxMTIsOTcsCisgICAgOTksMTA3LDk3LDEwMywxMDEsNDQsMzIsMTE1LDEwMSwxMTYsMTAsMzIsMzIsMzIsMzIsMTE1LAorICAgIDExNyw5OCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsCisgICAgMTA4LDExMSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMTE1LDMyLDExNiwxMTEsMzIsOTcsMzIsMTA4LAorICAgIDEwNSwxMTUsMTE2LDMyLDExMSwxMDIsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwxMTUsNDYsMzIsMzIsNjUsMTEwLDEwLDMyLDMyLDMyLDMyLAorICAgIDEwMSwxMDksMTEyLDExNiwxMjEsMzIsMTA4LDEwNSwxMTUsMTE2LDMyLDEwNSwxMTUsMzIsMTE1LDExNywKKyAgICAxMDIsMTAyLDEwNSw5OSwxMDUsMTAxLDExMCwxMTYsNDQsMzIsMTE2LDEwNCwxMTEsMTE3LDEwMywxMDQsCisgICAgMzIsMTA1LDExNiwxMTUsMzIsMTEwLDExMSwxMTYsMzIsMTExLDExNiwxMDQsMTAxLDExNCwxMTksMTA1LAorICAgIDExNSwxMDEsMzIsMTE3LDExNSwxMDEsMTAyLDExNywxMDgsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwKKyAgICAxMCwzMiwzMiwzMiwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiwxMTUsMTIxLDExNSwxMTYsCisgICAgMTAxLDEwOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsMzIsMTA5LDExNywxMTUsMTE2LDMyLDExNiw5NywxMDcsMTAxLDMyLDk3LDMyLAorICAgIDExNSwxMTIsMTAxLDk5LDMyLDk3LDExNSwzMiwxMDUsMTE2LDExNSwzMiwxMTEsMTEwLDEwOCwxMjEsCisgICAgMzIsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQwLDQxLDMyLDk3LDExNCwxMDMsNDYsCisgICAgMTAsMTAsMzIsMzIsMzIsMzIsNzgsMTIyLDksNjAsMTE3LDExMCwxMDcsMTEwLDExMSwxMTksCisgICAgMTEwLDYyLDIxOCwxMiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsCisgICAgNDEsMSwyMTgsNiwxMTEsMTE0LDEwNSwxMDMsMTA1LDExMCw4NCwyMTgsMTAsMTA1LDExNSw5NSwKKyAgICAxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMTE0LDYyLDAsMCwwLDQxLDE3LDExNCwxMTIsCisgICAgMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwzLDAsCisgICAgMCwwLDExNCw2NywwLDAsMCwxMTQsMTE4LDAsMCwwLDIxOCwxMCw3NywxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDgzLDExMiwxMDEsOTksOTAsMTMsOTUsMTE1LDEwMSwxMTYsOTUsMTAyLAorICAgIDEwNSwxMDgsMTAxLDk3LDExNiwxMTYsMTE0LDIxOCwyNyw5NSwxMDMsMTAxLDExNiw5NSwxMTUsMTE3LAorICAgIDExMiwxMTIsMTExLDExNCwxMTYsMTAxLDEwMCw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCwxMTUsMTE0LDk2LDAsMCwwLDExNCw5NywwLDAsMCwxMTQsMTI0LAorICAgIDAsMCwwLDIxOCw5LDk1LDgwLDc5LDgwLDg1LDc2LDY1LDg0LDY5LDExNCwxNTcsCisgICAgMCwwLDAsMTE0LDE1NCwwLDAsMCwxMTQsNDAsMCwwLDAsMjE4LDYsOTcsCisgICAgMTEyLDExMiwxMDEsMTEwLDEwMCw0MSw5LDExNCwxMDIsMCwwLDAsOTAsOCwxMDgsMTExLAorICAgIDk5LDk3LDExNiwxMDUsMTExLDExMCwxMTQsMTI0LDAsMCwwLDExNCwxNTQsMCwwLDAsCisgICAgMjE4LDQsMTE1LDExMiwxMDEsOTksMjE4LDEyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsOTksCisgICAgMTA4LDk3LDExNSwxMTUsMjE4LDgsMTE1LDExNywxMDIsMTAyLDEwNSwxMjAsMTAxLDExNSwxMTQsMTU3LAorICAgIDAsMCwwLDkwLDcsMTAwLDEwNSwxMTQsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDExNSwxMTIsMTAxLAorICAgIDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsMTA4LDExMSw5OSw5NywKKyAgICAxMTYsMTA1LDExMSwxMTAsMTEsMiwwLDAsMTE1LDYyLDAsMCwwLDAsMTIsOCwKKyAgICA0LDQsMSwxMCwyLDIsMSwxNCwxLDE0LDEsOCwyLDEwLDgsMTYsCisgICAgMSw2LDMsOCwxLDE2LDEsMTQsMSwxMCwxLDYsMSw2LDIsNCwKKyAgICAzLDgsMiwxMCwxLDIsMSwxNCwxLDE0LDEsNiwyLDQsMSw4LAorICAgIDIsNiwxLDEyLDEsNiwxLDEyLDEsMTIsMiwxMTQsMTY1LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDgwLDAsMCwwLDEwMSwwLDkwLDEsMTAwLDAsCisgICAgOTAsMiwxMDAsMSw5MCwzLDEwMCwyLDkwLDQsMTAwLDMsOTAsNSwxMDAsNCwKKyAgICA5MCw2LDEwMSw3LDEwMCw1LDEwMCw2LDEzMiwwLDEzMSwxLDkwLDgsMTAxLDcsCisgICAgMTAwLDcsMTAwLDgsMTMyLDAsMTMxLDEsOTAsOSwxMDEsNywxMDAsMTQsMTAwLDEwLAorICAgIDEwMCwxMSwxMzIsMSwxMzEsMSw5MCwxMCwxMDEsNywxMDAsMTUsMTAwLDEyLDEwMCwxMywKKyAgICAxMzIsMSwxMzEsMSw5MCwxMSwxMDAsOSw4MywwLDQxLDE2LDIxOCwyMSw4NywxMDUsCiAgICAgMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwKLSAgICAxMDAsMTAxLDExNCw0Niw5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsCi0gICAgMTE0LDEyMSw5OSwyLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwxNiwKLSAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTQzLDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMTQsMjEsMCwxMjQsMCwwLDEwNiwxLDAsMTI1LDIsMCwxMTAsOSwKLSAgICAwLDEyNCwwLDAsMTA2LDIsMCwxMjUsMiwwLDEyNCwyLDAsMTA2LDMsMCwKLSAgICAxMDAsMSwwLDEyNCwxLDAsMTAwLDIsMCwxMTYsNCwwLDEwNiw1LDAsMTAwLAotICAgIDAsMCwxMDAsMywwLDEzMywyLDAsMjUsMTMxLDAsMiwxMjUsMywwLDEyMSwKLSAgICA0NywwLDEyNCwwLDAsMTA2LDYsMCwxMjQsMywwLDEzMSwxLDAsMTQzLDI1LAotICAgIDAsMTI1LDQsMCwxMTYsNywwLDEwNiw4LDAsMTI0LDQsMCwxMDAsNCwwLAotICAgIDEzMSwyLDAsMTI1LDUsMCw4NywxMDAsMCwwLDgxLDgyLDg4LDg3LDExMCwyMiwKLSAgICAwLDQsMTE2LDksMCwxMDcsMTAsMCwxMTQsMTM4LDAsMSwxLDEsMTAwLDAsCi0gICAgMCw4Myw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsODMsNDEsNSw3OCwxMTQsMTI4LAotICAgIDAsMCwwLDkwLDExLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwKLSAgICAxMTQsODIsMCwwLDAsMTE0LDMyLDAsMCwwLDQxLDEwLDIxOCwxMSw2OCw2OSwKLSAgICA2Niw4NSw3MSw5NSw2Niw4NSw3Myw3Niw2OCwyMTgsMTgsODIsNjksNzEsNzMsODMsCi0gICAgODQsODIsODksOTUsNzUsNjksODksOTUsNjgsNjksNjYsODUsNzEsMjE4LDEyLDgyLAotICAgIDY5LDcxLDczLDgzLDg0LDgyLDg5LDk1LDc1LDY5LDg5LDExNCw0OSwwLDAsMCwKLSAgICAxMTQsOCwwLDAsMCwyMTgsNywxMTgsMTAxLDExNCwxMTUsMTA1LDExMSwxMTAsMTE0LDE3MywKLSAgICAwLDAsMCwxMTQsMTcxLDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LDEyMSw4NiwKLSAgICA5NywxMDgsMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTcyLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5NSwKLSAgICAxMDcsMTAxLDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwyMTgsOCwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LDk5LDEwNCwKLSAgICA5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk0LDIsMCwwLDExNSwyMiwwLAotICAgIDAsMCwwLDIsOSwxLDEyLDIsOSwxLDE1LDEsMjIsMSwzLDEsCi0gICAgMTgsMSwyOSwxLDEzLDEsOSwxLDEyMiwzOCw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LAotICAgIDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKLSAgICA5NSwxMTUsMTAxLDk3LDExNCw5OSwxMDQsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSwKLSAgICA3OCw5OSw0LDAsMCwwLDAsMCwwLDAsOCwwLDAsMCwxNCwwLAotICAgIDAsMCw2NywwLDAsMCwxMTUsMTU4LDAsMCwwLDEyNCwwLDAsMTA2LDAsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDQsMCwxMjQsNCwwLDEwMCwwLDAsCi0gICAgMTA3LDgsMCwxMTQsMzEsMCwxMDAsMCwwLDgzLDEyMSwxNCwwLDExNiwxLDAsCi0gICAgMTI0LDQsMCwxMzEsMSwwLDEsODcsMTEwLDIyLDAsNCwxMTYsMiwwLDEwNywKLSAgICAxMCwwLDExNCw2OSwwLDEsMSwxLDEwMCwwLDAsODMsODksMTEwLDEsMCwKLSAgICA4OCwxMjAsODEsMCwxMTYsMywwLDEzMSwwLDAsNjgsOTMsNzAsMCw5MiwyLAotICAgIDAsMTI1LDUsMCwxMjUsNiwwLDEyNCw0LDAsMTA2LDQsMCwxMTYsNSwwLAotICAgIDEyNCw2LDAsMTMxLDEsMCwxMzEsMSwwLDExNCw4MCwwLDExNiw2LDAsMTA2LAotICAgIDcsMCwxMjQsMSwwLDEyNCw1LDAsMTI0LDEsMCwxMjQsNCwwLDEzMSwyLAotICAgIDAsMTAwLDEsMCwxMjQsNCwwLDEzMSwyLDEsMTI1LDcsMCwxMjQsNywwLAotICAgIDgzLDExMyw4MCwwLDg3LDEwMCwwLDAsODMsNDEsMiw3OCwxMTQsMTYwLDAsMCwKLSAgICAwLDQxLDgsMTE0LDE3OSwwLDAsMCwxMTQsNDEsMCwwLDAsMTE0LDQyLDAsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDk0LDAsMCwwLDExNCw5NSwwLDAsCi0gICAgMCwxMTQsMTIzLDAsMCwwLDIxOCwxNiwxMTUsMTEyLDEwMSw5OSw5NSwxMDIsMTE0LDExMSwKLSAgICAxMDksOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0MSw4LDExNCwxNzIsMCwwLDAsMTE0LAotICAgIDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMjE4LDYsMTE2LDk3LDExNCwxMDMsMTAxLAotICAgIDExNiwxMTQsMTc4LDAsMCwwLDExNCwxMjksMCwwLDAsMTE0LDE2OCwwLDAsMCwKLSAgICAxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDIxOCw5LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsMTEyLDEwMSw5OSwxMDksCi0gICAgMiwwLDAsMTE1LDI2LDAsMCwwLDAsMiwxNSwxLDEyLDEsNCwxLAotICAgIDMsMSwxNCwxLDEzLDEsOSwxLDIyLDEsMjEsMSw5LDEsMTUsMSwKLSAgICA5LDEsMTIyLDMxLDg3LDEwNSwxMTAsMTAwLDExMSwxMTksMTE1LDgyLDEwMSwxMDMsMTA1LDExNSwKLSAgICAxMTYsMTE0LDEyMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTUsCi0gICAgMTEyLDEwMSw5OSw5OSwzLDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSw0NSwwLDAsMCwxMjQsMCwwLAotICAgIDEwNiwwLDAsMTI0LDEsMCwxMjQsMiwwLDEzMSwyLDAsMTI1LDMsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTA3LDksMCwxMTQsMzcsMCwxMjQsMywwLDEwNiwxLAotICAgIDAsODMsMTAwLDEsMCw4MywxMDAsMSwwLDgzLDQxLDIsMTIyLDEwOCw3MCwxMDUsCi0gICAgMTEwLDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMDAsMzIsCi0gICAgMTA1LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDUsMTE1LDMyLDEwOSwKLSAgICAxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTIsMTE0LDEwMSw5OSw5NywKLSAgICAxMTYsMTAxLDEwMCw0NiwzMiwzMiw4NSwxMTUsMTAxLDMyLDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDIsMTE0LDE4MiwwLAotICAgIDAsMCwxMTQsMTI5LDAsMCwwLDQxLDQsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDIsMTA1LAotICAgIDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTI1LDIsMCwwLDExNSw4LDAsCi0gICAgMCwwLDAsNywxOCwxLDEyLDEsNywyLDEyMiwzMyw4NywxMDUsMTEwLDEwMCwKKyAgICAxMDAsMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsCisgICAgMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKKyAgICAxMTUsMzIsMTAwLDEwMSw5OSwxMDgsOTcsMTE0LDEwMSwxMDAsMzIsMTA1LDExMCwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSwzMiwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwKKyAgICAxMTQsMTIxLDQ2LDEyMiw1OSw4MywxMTEsMTAyLDExNiwxMTksOTcsMTE0LDEwMSw5Miw4MCwxMjEsCisgICAgMTE2LDEwNCwxMTEsMTEwLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwxMTAsNjcsMTExLDExNCwxMDEsOTIsCisgICAgMTIzLDExNSwxMjEsMTE1LDk1LDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCwxMjUsOTIsNzcsMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSwxMTUsOTIsMTIzLDEwMiwxMTcsMTA4LDEwOCwxMTAsOTcsMTA5LDEwMSwxMjUsCisgICAgMTIyLDY1LDgzLDExMSwxMDIsMTE2LDExOSw5NywxMTQsMTAxLDkyLDgwLDEyMSwxMTYsMTA0LDExMSwKKyAgICAxMTAsOTIsODAsMTIxLDExNiwxMDQsMTExLDExMCw2NywxMTEsMTE0LDEwMSw5MiwxMjMsMTE1LDEyMSwKKyAgICAxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwxMTEsMTEwLDEyNSw5Miw3NywxMTEsMTAwLDExNywxMDgsCisgICAgMTAxLDExNSw5MiwxMjMsMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDEyNSw5Miw2OCwxMDEsCisgICAgOTgsMTE3LDEwMyw3MCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsCisgICAgMCwxMSwwLDAsMCw2NywwLDAsMCwxMTUsNTAsMCwwLDAsMTIxLDE0LAorICAgIDExNiwwLDEwNiwxLDExNiwwLDEwNiwyLDEyNCwxLDEzMSwyLDgzLDAsNCwwLAorICAgIDExNiwzLDEwNywxMCwxMTQsNDQsMSwwLDEsMCwxLDAsMTE2LDAsMTA2LDEsCisgICAgMTE2LDAsMTA2LDQsMTI0LDEsMTMxLDIsODMsMCw4OCwwLDEwMCwwLDgzLDAsCisgICAgNDEsMSw3OCw0MSw1LDIxOCw3LDk1LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDkwLDcsCisgICAgNzksMTEyLDEwMSwxMTAsNzUsMTAxLDEyMSw5MCwxNyw3Miw3NSw2OSw4OSw5NSw2Nyw4NSwKKyAgICA4Miw4Miw2OSw3OCw4NCw5NSw4NSw4Myw2OSw4MiwxMTQsNDIsMCwwLDAsOTAsCisgICAgMTgsNzIsNzUsNjksODksOTUsNzYsNzksNjcsNjUsNzYsOTUsNzcsNjUsNjcsNzIsCisgICAgNzMsNzgsNjksNDEsMiwyMTgsMyw5OSwxMDgsMTE1LDExNCw1LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwKKyAgICA5NSwxMTEsMTEyLDEwMSwxMTAsOTUsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LDEyMSw5MSwyLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDIsMiwxLDE0LDEsMTQsMSwxMjIsCisgICAgMzYsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLAorICAgIDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTExLDExMiwxMDEsMTEwLDk1LDExNCwxMDEsMTAzLAorICAgIDEwNSwxMTUsMTE2LDExNCwxMjEsOTksMiwwLDAsMCwwLDAsMCwwLDYsMCwKKyAgICAwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDExMiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMTQsMTQsMTI0LDAsMTA2LDEsMTI1LDIsMTEwLDYsMTI0LDAsMTA2LAorICAgIDIsMTI1LDIsMTI0LDIsMTA2LDMsMTI0LDEsMTAwLDEsMTE2LDQsMTA2LDUsMTAwLAorICAgIDAsMTAwLDIsMTMzLDIsMjUsMCwyMiwwLDEwMCwzLDE0MSwyLDEyNSwzLDEyMSwKKyAgICAzOCwxMjQsMCwxMDYsNiwxMjQsMywxMzEsMSwxNDMsMTgsMTI1LDQsMTE2LDcsMTA2LAorICAgIDgsMTI0LDQsMTAwLDQsMTMxLDIsMTI1LDUsODcsMCwxMDAsMCw4MSwwLDgyLAorICAgIDAsODgsMCw4NywwLDExMCwyMCw0LDAsMTE2LDksMTA3LDEwLDExNCwxMDYsMSwKKyAgICAwLDEsMCwxLDAsMTAwLDAsODMsMCw4OCwwLDEyNCw1LDgzLDAsNDEsCisgICAgNSw3OCwxMjIsNSwzNywxMDAsNDYsMzcsMTAwLDExNCw1OSwwLDAsMCw0MSwyLAorICAgIDExNCwxMjMsMCwwLDAsOTAsMTEsMTE1LDEyMSwxMTUsOTUsMTE4LDEwMSwxMTQsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDExNCwzMiwwLDAsMCw0MSwxMCwyMTgsMTEsNjgsNjksNjYsODUsNzEsCisgICAgOTUsNjYsODUsNzMsNzYsNjgsMjE4LDE4LDgyLDY5LDcxLDczLDgzLDg0LDgyLDg5LAorICAgIDk1LDc1LDY5LDg5LDk1LDY4LDY5LDY2LDg1LDcxLDIxOCwxMiw4Miw2OSw3MSw3MywKKyAgICA4Myw4NCw4Miw4OSw5NSw3NSw2OSw4OSwxMTQsNTAsMCwwLDAsMTE0LDgsMCwKKyAgICAwLDAsMjE4LDEyLDExOCwxMDEsMTE0LDExNSwxMDUsMTExLDExMCw5NSwxMDUsMTEwLDEwMiwxMTEsCisgICAgMTE0LDE2OSwwLDAsMCwxMTQsMTY3LDAsMCwwLDkwLDEwLDgxLDExNywxMDEsMTE0LAorICAgIDEyMSw4Niw5NywxMDgsMTE3LDEwMSwxMTQsNDIsMCwwLDAsNDEsNiwxMTQsMTY4LDAsCisgICAgMCwwLDExNCwxMjMsMCwwLDAsOTAsMTIsMTE0LDEwMSwxMDMsMTA1LDExNSwxMTYsMTE0LAorICAgIDEyMSw5NSwxMDcsMTAxLDEyMSwxMTQsNSwwLDAsMCw5MCw0LDEwNCwxMDcsMTAxLDEyMSwKKyAgICAyMTgsOCwxMDIsMTA1LDEwOCwxMDEsMTEyLDk3LDExNiwxMDQsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE2LDk1LDExNSwxMDEsOTcsMTE0LAorICAgIDk5LDEwNCw5NSwxMTQsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDk4LDIsMCwwLDExNSwKKyAgICAyMiwwLDAsMCwwLDIsNiwxLDgsMiw2LDEsNiwxLDIyLDEsCisgICAgMiwxLDEyLDEsMjYsMSwxNCwxLDYsMSwxMjIsMzgsODcsMTA1LDExMCwxMDAsCiAgICAgMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwKLSAgICAxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQxLDEyLDExNCwKLSAgICAxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsCi0gICAgMCwwLDAsMTE0LDE3NiwwLDAsMCwxMTQsMTc1LDAsMCwwLDExNCwxNzQsMCwKLSAgICAwLDAsMjE4LDExLDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwKLSAgICAxNzMsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxODMsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE3MCwwLDAsMCw3NSwyLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsMiw2LDMsNiwzLDYsMiw2LDIsMTgsCi0gICAgNywxOCwxNSwzLDEsMjEsMTUsMywxLDExNCwxNzAsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsNzAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsCi0gICAgMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLAotICAgIDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLAotICAgIDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDgsCi0gICAgMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLDgzLDQxLDExLAotICAgIDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsMTIyLAotICAgIDgzLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwxMTUsMzIsMTExLDEwMiwzMiw5OSwKLSAgICAxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsCi0gICAgMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsMTAsMzIsMzIsMzIsMzIsODMsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsCi0gICAgMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLAotICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsODgsMCwwLDAsMTE2LDAsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMzEsMSwwLDEzMSwxLDAsCi0gICAgMTAwLDEsMCwyNSwxMjUsMiwwLDEyNCwyLDAsMTA2LDIsMCwxMDAsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMDAsMywwLDI1LDEyNSwzLDAsMTI0LDEsMCwKLSAgICAxMDYsMywwLDEwMCwyLDAsMTMxLDEsMCwxMDAsNCwwLDI1LDEyNSw0LDAsCi0gICAgMTI0LDMsMCwxMDAsNSwwLDEwNywyLDAsMTExLDg3LDAsMTI0LDQsMCwxMDAsCi0gICAgNSwwLDEwNywzLDAsODMsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwKLSAgICAxMTYsMTAxLDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLAotICAgIDExMCwzMiwxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwKLSAgICAzMiw5OSwxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsCi0gICAgMTE2LDExNywxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsCi0gICAgMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LAotICAgIDEwMSwxMTAsOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjAsMCwwLAotICAgIDAsMTE0LDYxLDAsMCwwLDExNCw1OCwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsCi0gICAgMTEwLDEwNSwxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1OSwwLDAsCi0gICAgMCwxMTQsMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDExMCwwLAotICAgIDAsMCwxMTQsMTI4LDAsMCwwLDExNCw5NiwwLDAsMCw5MCwxMywxMDIsMTA1LAotICAgIDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsCi0gICAgMTA4LDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwxNjEsMCwwLDAsMTQ0LDIsMCwwLDExNSw4LAotICAgIDAsMCwwLDAsMywyNSwxLDIyLDEsMTksMSwxMjIsMjQsOTUsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LAotICAgIDk5LDEwNyw5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLAotICAgIDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywKLSAgICAxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCwKLSAgICA0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE2NiwKKyAgICAxMTQsNDYsOTUsMTE1LDEwMSw5NywxMTQsOTksMTA0LDk1LDExNCwxMDEsMTAzLDEwNSwxMTUsMTE2LAorICAgIDExNCwxMjEsNzgsOTksNCwwLDAsMCwwLDAsMCwwLDgsMCwwLDAsCisgICAgMTQsMCwwLDAsNjcsMCwwLDAsMTE1LDEyMCwwLDAsMCwxMjQsMCwxMDYsCisgICAgMCwxMjQsMSwxMzEsMSwxMjUsNCwxMjQsNCwxMDAsMCwxMDcsOCwxMTQsMjIsMTAwLAorICAgIDAsODMsMCwxMjEsMTIsMTE2LDEsMTI0LDQsMTMxLDEsMSwwLDg3LDAsMTEwLAorICAgIDIwLDQsMCwxMTYsMiwxMDcsMTAsMTE0LDU0LDEsMCwxLDAsMSwwLDEwMCwKKyAgICAwLDgzLDAsODgsMCwxMjAsNTgsMTE2LDMsMTMxLDAsNjgsMCw5Myw0OCw5MiwKKyAgICAyLDEyNSw1LDEyNSw2LDEyNCw0LDEwNiw0LDExNiw1LDEyNCw2LDEzMSwxLDEzMSwKKyAgICAxLDExNCw2NCwxMTYsNiwxMDYsNywxMjQsMSwxMjQsNSwxMjQsMSwxMjQsNCwxMzEsCisgICAgMiwxMjQsNCwxMDAsMSwxNDEsMywxMjUsNywxMjQsNyw4MywwLDExMyw2NCw4NywKKyAgICAwLDEwMCwwLDgzLDAsNDEsMiw3OCw0MSwxLDExNCwxNTYsMCwwLDAsNDEsCisgICAgOCwxMTQsMTc1LDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsNDIsMCwwLDAsCisgICAgMTE0LDE1OSwwLDAsMCwxMTQsOTYsMCwwLDAsMTE0LDk3LDAsMCwwLDExNCwKKyAgICAxMTgsMCwwLDAsMjE4LDE2LDExNSwxMTIsMTAxLDk5LDk1LDEwMiwxMTQsMTExLDEwOSw5NSwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQxLDgsMTE0LDE2OCwwLDAsMCwxMTQsMTIzLDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwyMTgsNiwxMTYsOTcsMTE0LDEwMywxMDEsMTE2LDExNCwKKyAgICAxNzQsMCwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTY0LDAsMCwwLDExNCwxNjIsCiAgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDEzLDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSwxNTIsMiwwLDAsMTE1LDAsMCwwLDAsMTIyLDI3LDk1LDc2LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLAotICAgIDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsODAsMCwwLAotICAgIDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTA2LDEsMCwxMzEsMSwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMSwwLDEwNyw4LDAsMTE0LDU0LDAsMTE2LAotICAgIDIsMCwxMDAsMiwwLDEwNiwzLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLAotICAgIDAsMTMxLDEsMCwxMzAsMSwwLDExNiw0LDAsMTA2LDUsMCwxMTYsNiwwLAotICAgIDEyNCwyLDAsMTI0LDEsMCwxMDYsNywwLDEzMSwzLDAsMSwxMDAsMSwwLAotICAgIDgzLDQxLDMsMTIyLDE5LDY5LDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMzIsMTE2LDEwNCwxMDEsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsNzgsMTIyLDUyLDk5LDk3LDExMCwxMTAsMTExLAotICAgIDExNiwzMiwxMDgsMTExLDk3LDEwMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsCi0gICAgMTE0LDEyNSwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsCi0gICAgNDAsNDEsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDc4LDExMSwxMTAsMTAxLDQxLAotICAgIDgsMjE4LDgsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTA5LDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDIxOCwKLSAgICAyNSw5NSw5OSw5NywxMDgsMTA4LDk1LDExOSwxMDUsMTE2LDEwNCw5NSwxMDIsMTE0LDk3LDEwOSwKLSAgICAxMDEsMTE1LDk1LDExNCwxMDEsMTA5LDExMSwxMTgsMTAxLDEwMCwyMTgsNCwxMDEsMTIwLDEwMSw5OSwKLSAgICAxMTQsMTIwLDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwyMTgsNiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwxMTQsMTQ4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSwxMDEsMTIwLDEwMSw5OSw5NSwxMDksCi0gICAgMTExLDEwMCwxMTcsMTA4LDEwMSwxNTUsMiwwLDAsMTE1LDEwLDAsMCwwLDAsMiwKLSAgICAxOCwxLDEyLDEsOSwxLDE1LDEsMTIyLDI1LDk1LDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwKLSAgICAzLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwwLAotICAgIDEwNiwxLDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMSw3OCwKLSAgICA0MSwyLDExNCwxMjMsMCwwLDAsMjE4LDE3LDk1LDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNSwxMDQsMTA1LDEwOSw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwyMTgsMTEsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAotICAgIDEwOCwxMDEsMTYzLDIsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjUsOTUsCi0gICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwOCwxMTEsOTcsCi0gICAgMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDgsMTE0LDExNCwwLDAsMCwKLSAgICAxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDExNiwwLDAsMCwxMTQsCi0gICAgMTYxLDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDE5MiwwLDAsMCwxMTQsMTk0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwxODUsMCwwLDAsMTM5LDIsMCwwLAotICAgIDExNSwxMCwwLDAsMCwxMiwzLDYsMiwxMiw4LDEyLDMsMTIsOCwxMTQsCi0gICAgMTg1LDAsMCwwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKLSAgICAwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCwKLSAgICAwLDkwLDEsMCwxMDAsMCwwLDkwLDIsMCwxMDAsMSwwLDEwMCwyLDAsCi0gICAgMTMyLDAsMCw5MCwzLDAsMTAwLDMsMCwxMDAsNCwwLDEzMiwwLDAsOTAsCi0gICAgNCwwLDEwMCw1LDAsMTAwLDYsMCwxMzIsMCwwLDkwLDUsMCwxMDAsNywKLSAgICAwLDEwMCw4LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDksMCwxMDAsMTAsMCwKLSAgICAxMzIsMCwwLDkwLDcsMCwxMDAsMTEsMCwxMDAsMTgsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwxLDkwLDgsMCwxMDAsMTUsMCwxMDAsMTYsMCwxMzIsMCwKLSAgICAwLDkwLDksMCwxMDAsMTcsMCw4Myw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSwxMCwwLAotICAgIDAsMCwxMTYsMCwwLDEzMCwxLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwxNzgsCi0gICAgNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTE2LDEwNCw5NywxMTYsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTYsMTA1LAotICAgIDEwOSwxMDEsMzIsNDAsOTcsMTEwLDMyLDEwNSwxMTAsMTE2LDQxLDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNSwxMTIsMTAxLDk5LAotICAgIDEwNSwxMDIsMTA1LDEwMSwxMDAsMzIsMTEyLDk3LDExNiwxMDQsNDQsMzIsMTE5LDEwNCwxMDEsMTE0LAotICAgIDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNSwxMTYsMTE0LDQ2LAotICAgIDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwKLSAgICAzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsCi0gICAgMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsNzgsNDEsMSwyMTgsNyw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsNDEsMiwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsCi0gICAgMTA5LDExNiwxMDUsMTA5LDEwMSwxNjksMiwwLDAsMTE1LDIsMCwwLDAsMCw2LAotICAgIDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiwKLSAgICA5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsCi0gICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTksCi0gICAgMCwwLDAsMTAwLDEsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDEsMCwxMzEsCi0gICAgMSwwLDEwNSwxLDAsODMsNDEsMiw5NywxNzAsMSwwLDAsNzksMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsCi0gICAgMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LDEwMSwxMTYsOTcsMTAwLDk3LDExNiwKLSAgICA5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsCi0gICAgMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwxMDgsMTAxLDMyLDEwNywxMDEsMTIxLAotICAgIDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMDksMTE2LAotICAgIDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLDk3LDExNiwxMTEsMTE0LDEyMSw0MSwKLSAgICAzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsMTA5LDEwMSwxMTQsMTA1LDk5LDMyLAotICAgIDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsMTExLDEwMiwzMiwxMDgsOTcsMTE1LAotICAgIDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDk5LDk3LAotICAgIDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw0NSwzMiwKLSAgICAzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LAotICAgIDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsCi0gICAgMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwKLSAgICAxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLAotICAgIDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LAotICAgIDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE2LAotICAgIDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgyLAotICAgIDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwKLSAgICAxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDk5LDk3LDExMCwxMTAsCi0gICAgMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMDAsNDYsMTAsMzIsCi0gICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzNSwwLDAsMCw0MSwxLDExNCwxOTcsCi0gICAgMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTAsCi0gICAgMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDE3NywyLDAsMCwxMTUsMiwKLSAgICAwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LAotICAgIDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwxMTYsOTcsMTE2LDExNSw5OSw0LAotICAgIDAsMCwwLDAsMCwwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI0LDIsCi0gICAgMCwxMjQsMywwLDEzMSwyLDAsODMsNDEsMSwxMjIsMjI4LDc5LDExMiwxMTYsMTA1LAotICAgIDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LAotICAgIDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwKLSAgICAxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LAotICAgIDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwKLSAgICA5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwKLSAgICAxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMzIsODQsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDExMiw5NywKLSAgICAxMTYsMTA0LDMyLDEwNSwxMTUsMzIsMTEwLDEwMSwxMDEsMTAwLDEwMSwxMDAsMzIsMTA1LDExMCwzMiwKLSAgICAxMTEsMTE0LDEwMCwxMDEsMTE0LDMyLDExNiwxMTEsMzIsOTksMTExLDExNCwxMTQsMTAxLDk5LDExNiwKLSAgICAxMDgsMTIxLDMyLDExNiwxMTQsOTcsMTEwLDExNSwxMDIsMTAxLDExNCwzMiwxMTIsMTAxLDExNCwxMDksCi0gICAgMTA1LDExNSwxMTUsMTA1LDExMSwxMTAsMTE1LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDQxLDEsMjE4LDgsMTE1LDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5Nyw0MSw0LDExNCwxMTAsCi0gICAgMCwwLDAsMTE0LDkyLDAsMCwwLDkwLDEwLDk5LDk3LDk5LDEwNCwxMDEsOTUsCi0gICAgMTEyLDk3LDExNiwxMDQsMTE0LDU1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNSw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDE5MCwyLDAsMCwxMTUsMiwwLAotICAgIDAsMCwwLDgsMTIyLDI4LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsNDYsOTUsOTksOTcsOTksMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCi0gICAgMTAwLDEwMSw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsCi0gICAgNDEsMiwxMjIsMTUwLDc5LDExMiwxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LAotICAgIDEwNCwxMTEsMTAwLDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMTksMTE0LDEwNSwxMTYsMTAxLDExNSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDQwLDk4LDEyMSwxMTYsMTAxLDExNSw0MSwzMiwxMTYsMTExLAotICAgIDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw0MCw5NywzMiwKLSAgICAxMTUsMTE2LDExNCw0MSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywKLSAgICAxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwKLSAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExOSwxMTQsMTA1LDExNiwxMDUsMTEwLDEwMywzMiwxMTEsCi0gICAgMTAyLDMyLDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwxMTUsCi0gICAgNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzgsMTE0LDQsMCwwLDAsCi0gICAgNDEsMywxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTUsMCwwLAorICAgIDAsMCwyMTgsOSwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksMTEzLDIsMCwKKyAgICAwLDExNSwyNiwwLDAsMCwwLDIsMTAsMSw4LDEsNCwxLDIsMSwKKyAgICAxMiwxLDE0LDEsNiwxLDE2LDEsMTQsMSw2LDEsOCwxLDgsMSwKKyAgICAxMjIsMzEsODcsMTA1LDExMCwxMDAsMTExLDExOSwxMTUsODIsMTAxLDEwMywxMDUsMTE1LDExNiwxMTQsCisgICAgMTIxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLAorICAgIDk5LDk5LDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwKKyAgICAwLDAsNjcsMCwwLDAsMTE1LDM2LDAsMCwwLDEyNCwwLDEwNiwwLDEyNCwKKyAgICAxLDEyNCwyLDEzMSwyLDEyNSwzLDEyNCwzLDEwMCwxLDEwNyw5LDExNCwyOCwxMjQsCisgICAgMywxMDYsMSw4MywwLDExMCw0LDEwMCwxLDgzLDAsMTAwLDEsODMsMCw0MSwKKyAgICAyLDEyMiwxMDgsNzAsMTA1LDExMCwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTEwLAorICAgIDk3LDEwOSwxMDEsMTAwLDMyLDEwNSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTE0LDEwMSwxMDMsMTA1LAorICAgIDExNSwxMTYsMTE0LDEyMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwKKyAgICA0MSwyLDExNCwxNzgsMCwwLDAsMTE0LDEyNCwwLDAsMCw0MSw0LDExNCwxNjgsCisgICAgMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE2MiwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCisgICAgMCwyMTgsMTEsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDEyOSwyLAorICAgIDAsMCwxMTUsOCwwLDAsMCwwLDcsMTIsMSw4LDEsOCwyLDEyMiwKKyAgICAzMyw4NywxMDUsMTEwLDEwMCwxMTEsMTE5LDExNSw4MiwxMDEsMTAzLDEwNSwxMTUsMTE2LDExNCwxMjEsCisgICAgNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDEsMiw3OCw3OCw0MSwxLDc4LDQxLDEyLDExNCwxMDksMCwwLDAsCisgICAgMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LAorICAgIDE3MiwwLDAsMCwxMTQsMTcxLDAsMCwwLDExNCwxNzAsMCwwLDAsMjE4LDExLAorICAgIDk5LDEwOCw5NywxMTUsMTE1LDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNCwxNjksMCwwLDAsCisgICAgMTE0LDE3NSwwLDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxNzksMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE2NiwwLDAsMCw3OSwyLDAsMCwxMTUsMjAsMCwwLAorICAgIDAsOCwyLDQsMyw0LDMsNCwyLDQsMiwxMiw3LDEyLDE1LDIsCisgICAgMSwxMiwxNSwyLDEsMTE0LDE2NiwwLDAsMCw5OSwwLDAsMCwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsMCwwLDExNSwKKyAgICA0OCwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywKKyAgICAxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsCisgICAgMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LAorICAgIDEwMCwxMCw4MywwLDQxLDExLDIxOCwxMyw5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsCisgICAgOTcsMTE1LDEwNSw5OSwxMTUsMTIyLDgzLDY2LDk3LDExNSwxMDEsMzIsOTksMTA4LDk3LDExNSwKKyAgICAxMTUsMzIsMTExLDEwMiwzMiw5OSwxMTEsMTA5LDEwOSwxMTEsMTEwLDMyLDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDk4LDEyMSwzMiw5OCwxMTEsMTE2LDEwNCwzMiwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk3LDExMCwxMDAsCisgICAgMTAsMzIsMzIsMzIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwKKyAgICAxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTksMiwwLDAsMCwwLAorICAgIDAsMCwwLDUsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsCisgICAgNjQsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTI0LDEsMTMxLDEsMTMxLDEsCisgICAgMTAwLDEsMjUsMCwxMjUsMiwxMjQsMiwxMDYsMiwxMDAsMiwxMDAsMSwxMzEsMiwKKyAgICAxMDAsMywyNSwwLDEyNSwzLDEyNCwxLDEwNiwzLDEwMCwyLDEzMSwxLDEwMCw0LAorICAgIDI1LDAsMTI1LDQsMTI0LDMsMTAwLDUsMTA3LDIsMTExLDYyLDEyNCw0LDEwMCw1LAorICAgIDEwNywzLDgzLDAsNDEsNiwxMjIsMTQxLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLAorICAgIDMyLDEwNSwxMDksMTEyLDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwKKyAgICAxMTEsMTAyLDMyLDczLDExMCwxMTUsMTEyLDEwMSw5OSwxMTYsNzYsMTExLDk3LDEwMCwxMDEsMTE0LAorICAgIDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDMyLDk4LDEyMSwzMiw5OSwKKyAgICAxMDQsMTAxLDk5LDEwNywxMDUsMTEwLDEwMywzMiwxMDUsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNCwxMDEsMTE2LDExNywKKyAgICAxMTQsMTEwLDEwMSwxMDAsMzIsOTgsMTIxLDMyLDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwKKyAgICAxMTAsOTcsMTA5LDEwMSwzMiwxMDQsOTcsMTE1LDMyLDk3LDMyLDEwMiwxMDUsMTA4LDEwMSwxMTAsCisgICAgOTcsMTA5LDEwMSwzMiwxMTEsMTAyLDMyLDM5LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSwKKyAgICA0NiwxMTIsMTIxLDM5LDQ2LDExNCwzMSwwLDAsMCwxMTQsNjEsMCwwLDAsMTE0LAorICAgIDYyLDAsMCwwLDExNCw1OSwwLDAsMCwyMTgsOCw5NSw5NSwxMDUsMTEwLDEwNSwKKyAgICAxMTYsOTUsOTUsNDEsNCwxMTQsNDAsMCwwLDAsMTE0LDE1NSwwLDAsMCwxMTQsCisgICAgMzYsMCwwLDAsMTE0LDM0LDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMTIzLDAsMCwwLDExNCw5OCwwLDAsMCw5MCwxMywxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTUsOTgsOTcsMTE1LDEwMSw5MCw5LDExNiw5NywxMDUsMTA4LDk1LAorICAgIDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxNTcsMCwwLDAsMTQ4LDIsMCwwLDExNSw4LDAsMCwKKyAgICAwLDAsMywxOCwxLDE2LDEsMTQsMSwxMjIsMjQsOTUsNzYsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDEwNSwxMTUsOTUsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLAorICAgIDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsCisgICAgMCw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLDk3LDExNywxMDgsMTE2LAorICAgIDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsMTExLDExMCw0Niw3OCwKKyAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDE2MiwwLDAsCiAgICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk5LDAsMCwwLDIwMCwyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjEsCi0gICAgODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTAxLDExNiwKLSAgICA5NSwxMDAsOTcsMTE2LDk3LDk5LDIsMCwwLDAsMCwwLDAsMCw1LDAsCi0gICAgMCwwLDE2LDAsMCwwLDY3LDAsMCwwLDExNSwxMDUsMCwwLDAsMTI0LAotICAgIDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEyMSwxOSwKLSAgICAwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsMTI1LDMsMCwKLSAgICA4NywxMTAsNTgsMCw0LDExNiwyLDAsMTA3LDEwLDAsMTE0LDk0LDAsMSwxMjUsCi0gICAgNCwwLDEsMTIyLDI2LDAsMTE2LDMsMCwxMDAsMSwwLDEwMCwyLDAsMTI0LAotICAgIDEsMCwxMzEsMSwxLDEyNCw0LDAsMTMwLDIsMCw4Nyw4OSwxMDAsMywwLAotICAgIDEwMCwzLDAsMTI1LDQsMCwxMjYsNCwwLDg4LDExMCwxLDAsODgsMTE2LDQsCi0gICAgMCwxMjQsMywwLDEzMSwxLDAsODMsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwKLSAgICAxMTQsMTAxLDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LAotICAgIDEwNSwxMTEsMTEwLDMyLDExMSwxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwKLSAgICAxMjIsMzksMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsCi0gICAgMTA1LDEwOCw5Nyw5OCwxMDgsMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsCi0gICAgMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQwLDQxLDExNCwxMDgsMCwwLDAsNzgsNDEsCi0gICAgNSwxMTQsMTU5LDAsMCwwLDIxOCw4LDEwMywxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsCi0gICAgMTE0LDQyLDAsMCwwLDExNCwxMDksMCwwLDAsMTE0LDE1NywwLDAsMCw0MSwKLSAgICA1LDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsCi0gICAgMTE0LDE1NSwwLDAsMCwyMTgsMywxMDEsMTIwLDk5LDExNCw0LDAsMCwwLDExNCwKLSAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMCwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIwNywyLDAsMCwxMTUsMTQsMCwwLDAsMCwyLAotICAgIDE1LDEsMywxLDE5LDEsMTgsMSw5LDEsMzEsMSwxMjIsMjMsODMsMTExLAotICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsCi0gICAgMTExLDExNywxMTQsOTksMTAxLDIxOCw5LDk1LDExMSwxMTIsMTE2LDEwNSwxMDksMTA1LDEyMiwxMDEsCi0gICAgMTE0LDMxLDAsMCwwLDk5LDMsMCwwLDAsMSwwLDAsMCw0LDAsCi0gICAgMCwwLDksMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMTYsMiwwLDEyNCwxLDAsMTI0LDIsMCwxMDAsMSwKLSAgICAwLDEwMCwyLDAsMTAwLDMsMCwxMDAsNCwwLDEyNCwzLDAsMTMxLDQsMiwKLSAgICA4Myw0MSw1LDEyMiwxMzAsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsMzIsOTksMTExLDEwOSwxMTIsCi0gICAgMTA1LDEwOCwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMzksCi0gICAgMTAwLDk3LDExNiw5NywzOSwzMiw5NywxMTQsMTAzLDExNywxMDksMTAxLDExMCwxMTYsMzIsOTksCi0gICAgOTcsMTEwLDMyLDk4LDEwMSwzMiw5NywxMTAsMTIxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwKLSAgICAzMiwxMTYsMTIxLDExMiwxMDEsMzIsMTE2LDEwNCw5NywxMTYsMzIsOTksMTExLDEwOSwxMTIsMTA1LAotICAgIDEwOCwxMDEsNDAsNDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDExNSw0NiwxMCwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsMTkwLDAsMCwwLDIxOCwxMiwxMDAsMTExLAotICAgIDExMCwxMTYsOTUsMTA1LDExMCwxMDQsMTAxLDExNCwxMDUsMTE2LDg0LDExNCw3MCwwLDAsMCwKLSAgICA0MSwzLDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwyMTgsNyw5OSwxMTEsCi0gICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDU1LDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjA0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCwxMTUsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsMjE3LDIsMCwwLDExNSw0LAotICAgIDAsMCwwLDAsNSwyMSwxLDEyMiwyNyw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsCi0gICAgMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMTEsMTE3LDExNCw5OSwxMDEsOTUsMTE2LDExMSw5NSwKLSAgICA5OSwxMTEsMTAwLDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMTAsMCwwLAotICAgIDAsNDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE3NCwxLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwyLDAsMTAwLDEsMCwKLSAgICAxMjUsMywwLDEyMSwxNiwwLDExNiwxLDAsMTI0LDIsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsODcsMTEwLDI0LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCw2MywwLAotICAgIDEsMSwxLDEwMCwxLDAsMTI1LDQsMCw4OSwxMTAsMjAyLDAsODgsMTIxLDE5LAotICAgIDAsMTI0LDAsMCwxMDYsMywwLDEyNCwyLDAsMTMxLDEsMCwxMjUsNSwwLAotICAgIDg3LDExMCwxOCwwLDQsMTE2LDQsMCwxMDcsMTAsMCwxMTQsMTAzLDAsMSwxLAotICAgIDEsODksMTEwLDE2MiwwLDg4LDExNiw1LDAsMTI0LDUsMCwxMDAsMiwwLDI1LAotICAgIDEzMSwxLDAsMTI1LDMsMCwxMjEsMTksMCwxMjQsMCwwLDEwNiw2LDAsMTI0LAotICAgIDQsMCwxMzEsMSwwLDEyNSw2LDAsODcsMTEwLDE4LDAsNCwxMTYsNywwLAotICAgIDEwNywxMCwwLDExNCwxNTksMCwxLDEsMSw4OSwxMTAsMTA2LDAsODgsMTIxLDM0LAotICAgIDAsMTE2LDgsMCwxMjQsNiwwLDEwMCwzLDAsMTI0LDUsMCwxMDAsNCwwLAotICAgIDEyNCwxLDAsMTAwLDUsMCwxMjQsNCwwLDEzMSwxLDMsMTI1LDcsMCw4NywKLSAgICAxMTAsMjQsMCw0LDExNiw5LDAsMTE2LDEwLDAsMTAyLDIsMCwxMDcsMTAsMCwKLSAgICAxMTQsMjIwLDAsMSwxLDEsODksMTEwLDQ1LDAsODgsMTE2LDExLDAsMTAwLDYsCi0gICAgMCwxMjQsNCwwLDEyNCwyLDAsMTMxLDMsMCwxLDExNiwxMiwwLDEyNCw3LAotICAgIDAsMTAwLDQsMCwxMjQsMSwwLDEwMCw3LDAsMTI0LDQsMCwxMDAsOCwwLAotICAgIDEyNCwyLDAsMTMxLDEsMyw4MywxMjQsMCwwLDEwNiw2LDAsMTI0LDIsMCwKLSAgICAxMzEsMSwwLDEyNSw4LDAsMTI0LDAsMCwxMDYsMTMsMCwxMjQsOCwwLDEyNCwKLSAgICAyLDAsMTMxLDIsMCwxMjUsOSwwLDExNiwxMSwwLDEwMCw5LDAsMTI0LDIsCi0gICAgMCwxMzEsMiwwLDEsMTE2LDE0LDAsMTA2LDE1LDAsMTIsMTE0LDE3MCwxLDEyNCwKLSAgICA0LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNzAsMSwxMjQsMywwLDEwMCwxLAotICAgIDAsMTA3LDksMCwxMTQsMTcwLDEsMTE2LDE2LDAsMTI0LDksMCwxMjQsMywwLAotICAgIDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMzEsMywwLDEyNSw2LDAsMTIxLAotICAgIDM2LDAsMTI0LDAsMCwxMDYsMTgsMCwxMjQsMiwwLDEyNCw0LDAsMTI0LDYsCi0gICAgMCwxMzEsMywwLDEsMTE2LDExLDAsMTAwLDEwLDAsMTI0LDQsMCwxMzEsMiwKLSAgICAwLDEsODcsMTEwLDE4LDAsNCwxMTYsMiwwLDEwNywxMCwwLDExNCwxNjksMSwKLSAgICAxLDEsMSw4OSwxMTAsMSwwLDg4LDEyNCw5LDAsODMsNDEsMTEsMTIyLDE5MCwKLSAgICA2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCi0gICAgMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiw3MywxMTAsMTE1LDExMiwxMDEsCi0gICAgOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAotICAgIDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4MiwxMDEsOTcsMTAwLAotICAgIDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMzIsCi0gICAgMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMTUsMTE2LAotICAgIDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksCi0gICAgMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMCwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwKLSAgICA0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLDEwOSwxMTcsMTE1LDExNiwzMiwKLSAgICA5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMTQsCi0gICAgMTM1LDAsMCwwLDExNCwxNDAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTIyLDEzLDEyMywxMjUsMzIsMTA5LDk3LDExNiw5OSwxMDQsMTAxLDExNSwzMiwKLSAgICAxMjMsMTI1LDExNCw5MSwwLDAsMCwxMTQsOTIsMCwwLDAsMTIyLDE5LDk5LDExMSwKLSAgICAxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDEyNSwxMjIsMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwxOSwxMTQsCi0gICAgMTU5LDAsMCwwLDExNCw4MSwwLDAsMCwxMTQsNjgsMCwwLDAsMTE0LDE5OCwKLSAgICAwLDAsMCwxMTQsMTk2LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAxLDAsCi0gICAgMCwwLDExNCw0MiwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwxMDksMCwwLAotICAgIDAsMTE0LDEzOCwwLDAsMCwxMTQsMTA3LDAsMCwwLDExNCwxNDksMCwwLDAsCi0gICAgMTE0LDIwNywwLDAsMCwxMTQsOCwwLDAsMCwyMTgsMTksMTAwLDExMSwxMTAsMTE2LAotICAgIDk1LDExOSwxMTQsMTA1LDExNiwxMDEsOTUsOTgsMTIxLDExNiwxMDEsOTksMTExLDEwMCwxMDEsMTE0LAotICAgIDE1MiwwLDAsMCwxMTQsMzMsMCwwLDAsMTE0LDIwMCwwLDAsMCw0MSwxMCwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDkyLDAsMCwwLDExNCwKLSAgICAxNDEsMCwwLDAsMTE0LDkxLDAsMCwwLDIxOCwyLDExNSwxMTYsMTE0LDU1LDAsCi0gICAgMCwwLDIxOCwxMCw5OCwxMjEsMTE2LDEwMSwxMTUsOTUsMTAwLDk3LDExNiw5NywxMTQsMTU1LAotICAgIDAsMCwwLDkwLDExLDk5LDExMSwxMDAsMTAxLDk1LDExMSw5OCwxMDYsMTAxLDk5LDExNiwKKyAgICAyMTgsMTMsOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1NiwKKyAgICAyLDAsMCwxMTUsMCwwLDAsMCwxMjIsMjcsOTUsNzYsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDY2LDk3LDExNSwxMDUsOTksMTE1LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMDYsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsCisgICAgOCwxMTQsMzYsMTE2LDIsMTAwLDIsMTA2LDMsMTI0LDEsMTA2LDEsMTMxLDEsMTMxLAorICAgIDEsMTMwLDEsMTE2LDQsMTA2LDUsMTE2LDYsMTI0LDIsMTI0LDEsMTA2LDcsMTMxLAorICAgIDMsMSwwLDEwMCwxLDgzLDAsNDEsMywxMjIsMTksNjksMTIwLDEwMSw5OSwxMTcsCisgICAgMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0Niw3OCwxMjIsCisgICAgNTIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDEwOCwxMTEsOTcsMTAwLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0MCw0MSwzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsCisgICAgMzIsNzgsMTExLDExMCwxMDEsNDEsOCwyMTgsOCwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLAorICAgIDEwMSwxMTQsMTA5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LDUwLDAsMCwwLAorICAgIDExNCwxMTgsMCwwLDAsMjE4LDI1LDk1LDk5LDk3LDEwOCwxMDgsOTUsMTE5LDEwNSwxMTYsCisgICAgMTA0LDk1LDEwMiwxMTQsOTcsMTA5LDEwMSwxMTUsOTUsMTE0LDEwMSwxMDksMTExLDExOCwxMDEsMTAwLAorICAgIDIxOCw0LDEwMSwxMjAsMTAxLDk5LDExNCwxMTUsMCwwLDAsNDEsMywxMTQsMTA0LDAsCisgICAgMCwwLDIxOCw2LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNCwxNDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLAorICAgIDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE1OSwyLDAsMCwxMTUsCisgICAgMTAsMCwwLDAsMCwyLDEyLDEsOCwxLDYsMSwxMCwxLDEyMiwyNSwKKyAgICA5NSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNjYsOTcsMTE1LDEwNSw5OSwxMTUsNDYsMTAxLDEyMCwKKyAgICAxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTIsCisgICAgMCwwLDAsMTE2LDAsMTA2LDEsMTI0LDAsMTI0LDEsMTMxLDIsODMsMCw0MSwKKyAgICAxLDEyMiwyNiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsCisgICAgMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsNDEsMiwxMTQsCisgICAgMTE4LDAsMCwwLDIxOCwxNyw5NSwxMDgsMTExLDk3LDEwMCw5NSwxMDksMTExLDEwMCwxMTcsCisgICAgMTA4LDEwMSw5NSwxMTUsMTA0LDEwNSwxMDksNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKKyAgICAwLDAsMjE4LDExLDEwOCwxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDE2NywKKyAgICAyLDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDI1LDk1LDc2LDExMSw5NywKKyAgICAxMDAsMTAxLDExNCw2Niw5NywxMTUsMTA1LDk5LDExNSw0NiwxMDgsMTExLDk3LDEwMCw5NSwxMDksCisgICAgMTExLDEwMCwxMTcsMTA4LDEwMSw3OCw0MSw4LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLAorICAgIDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE1NywwLDAsCisgICAgMCwxMTQsMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE5MCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTgxLDAsMCwwLDE0MywyLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsOCwzLDQsMiw4LDgsOCwzLDgsOCwxMTQsMTgxLDAsMCwKKyAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwKKyAgICAwLDAsNjQsMCwwLDAsMTE1LDc0LDAsMCwwLDEwMSwwLDkwLDEsMTAwLAorICAgIDAsOTAsMiwxMDAsMSwxMDAsMiwxMzIsMCw5MCwzLDEwMCwzLDEwMCw0LDEzMiwKKyAgICAwLDkwLDQsMTAwLDUsMTAwLDYsMTMyLDAsOTAsNSwxMDAsNywxMDAsOCwxMzIsCisgICAgMCw5MCw2LDEwMCw5LDEwMCwxMCwxMzIsMCw5MCw3LDEwMCwxOCwxMDAsMTIsMTU2LAorICAgIDEsMTAwLDEzLDEwMCwxNCwxMzIsMiw5MCw4LDEwMCwxNSwxMDAsMTYsMTMyLDAsOTAsCisgICAgOSwxMDAsMTcsODMsMCw0MSwxOSwyMTgsMTIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLAorICAgIDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw4LDAsMCwwLDExNiwKKyAgICAwLDEzMCwxLDEwMCwxLDgzLDAsNDEsMiwxMjIsMTc4LDc5LDExMiwxMTYsMTA1LDExMSwKKyAgICAxMTAsOTcsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExNiwxMDQsOTcsMTE2LDMyLAorICAgIDExNCwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMDUsCisgICAgMTAyLDEwNSw5OSw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTE2LDEwNSwxMDksMTAxLDMyLDQwLDk3LAorICAgIDExMCwzMiwxMDUsMTEwLDExNiw0MSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLAorICAgIDMyLDExMiw5NywxMTYsMTA0LDQ0LDMyLDExOSwxMDQsMTAxLDExNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTA1LDExNSwzMiw5NywzMiwxMTUsMTE2LDExNCw0NiwxMCwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiw4Miw5NywxMDUsMTE1LDEwMSwxMTUsMzIsNzMsNzksNjksMTE0LAorICAgIDExNCwxMTEsMTE0LDMyLDExOSwxMDQsMTAxLDExMCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5OSw5NywxMTAsMTEwLDExMSwxMTYsMzIsOTgsMTAxLDMyLDEwNCw5NywxMTAsMTAwLAorICAgIDEwOCwxMDEsMTAwLDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLDEsCisgICAgMjE4LDcsNzMsNzksNjksMTE0LDExNCwxMTEsMTE0LDQxLDIsMTE0LDEwNCwwLDAsMCwKKyAgICAxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMjE4LDEwLDExMiw5NywxMTYsMTA0LDk1LDEwOSwxMTYsMTA1LDEwOSwxMDEsCisgICAgMTc0LDIsMCwwLDExNSwyLDAsMCwwLDAsNiwxMjIsMjMsODMsMTExLDExNywKKyAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDksCisgICAgMTE2LDEwNSwxMDksMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwKKyAgICAwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDE0LDAsMCwwLDEwMCwxLAorICAgIDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLDEwNSwxLDgzLDAsNDEsMiw5NywxNzAsCisgICAgMSwwLDAsNzksMTEyLDExNiwxMDUsMTExLDExMCw5NywxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LAorICAgIDExMSwxMDAsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTA1LDExMCwxMDMsMzIsOTcsMzIsMTA5LAorICAgIDEwMSwxMTYsOTcsMTAwLDk3LDExNiw5NywzMiwxMDAsMTA1LDk5LDExNiwzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNiwxMTEsMzIsOTgsCisgICAgMTIxLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDQwLDExNSwxMTYsMTE0LDQxLAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDgwLDExMSwxMTUsMTE1LDEwNSw5OCwKKyAgICAxMDgsMTAxLDMyLDEwNywxMDEsMTIxLDExNSw1OCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw0NSwzMiwzOSwxMDksMTE2LDEwNSwxMDksMTAxLDM5LDMyLDQwLDEwOSw5NywxMTAsMTAwLAorICAgIDk3LDExNiwxMTEsMTE0LDEyMSw0MSwzMiwxMDUsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDExMCwxMTcsCisgICAgMTA5LDEwMSwxMTQsMTA1LDk5LDMyLDExNiwxMDUsMTA5LDEwMSwxMTUsMTE2LDk3LDEwOSwxMTIsMzIsCisgICAgMTExLDEwMiwzMiwxMDgsOTcsMTE1LDExNiwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDEwLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LDExMSwxMDAsMTAxLDMyLDEwOSwxMTEsCisgICAgMTAwLDEwNSwxMDIsMTA1LDk5LDk3LDExNiwxMDUsMTExLDExMCw1OSwxMCwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiw0NSwzMiwzOSwxMTUsMTA1LDEyMiwxMDEsMzksMzIsNDAsMTExLDExMiwKKyAgICAxMTYsMTA1LDExMSwxMTAsOTcsMTA4LDQxLDMyLDEwNSwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTE1LAorICAgIDEwNSwxMjIsMTAxLDMyLDEwNSwxMTAsMzIsOTgsMTIxLDExNiwxMDEsMTE1LDMyLDExMSwxMDIsMzIsCisgICAgMTE2LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0NiwKKyAgICAxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw3MywxMDksMTEyLDEwOCwxMDEsMTA5LAorICAgIDEwMSwxMTAsMTE2LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsCisgICAgMTExLDEwMCwzMiw5NywxMDgsMTA4LDExMSwxMTksMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE2LDExMSwzMiwxMTQsMTAxLDk3LDEwMCwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDgyLDk3LDEwNSwxMTUsMTAxLDExNSwzMiw3Myw3OSw2OSwxMTQsCisgICAgMTE0LDExMSwxMTQsMzIsMTE5LDEwNCwxMDEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsCisgICAgMTA0LDMyLDk5LDk3LDExMCwxMTAsMTExLDExNiwzMiw5OCwxMDEsMzIsMTA0LDk3LDExMCwxMDAsCisgICAgMTA4LDEwMSwxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEzMCwwLAorICAgIDAsMCw0MSwxLDExNCwxOTMsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLAorICAgIDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LAorICAgIDE4MiwyLDAsMCwxMTUsMiwwLDAsMCwwLDExLDEyMiwyMyw4MywxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExMiw5NywxMTYsMTA0LDk1LDExNSwKKyAgICAxMTYsOTcsMTE2LDExNSw5OSw0LDAsMCwwLDAsMCwwLDAsNCwwLDAsCisgICAgMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMjQsMCwKKyAgICAxMDYsMCwxMjQsMiwxMjQsMywxMzEsMiw4MywwLDQxLDEsMTIyLDIyOCw3OSwxMTIsCisgICAgMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiwKKyAgICA0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsCisgICAgMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsCisgICAgMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwKKyAgICAxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSwKKyAgICA5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLAorICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwKKyAgICAxMTIsOTcsMTE2LDEwNCwzMiwxMDUsMTE1LDMyLDExMCwxMDEsMTAxLDEwMCwxMDEsMTAwLDMyLDEwNSwKKyAgICAxMTAsMzIsMTExLDExNCwxMDAsMTAxLDExNCwzMiwxMTYsMTExLDMyLDk5LDExMSwxMTQsMTE0LDEwMSwKKyAgICA5OSwxMTYsMTA4LDEyMSwzMiwxMTYsMTE0LDk3LDExMCwxMTUsMTAyLDEwMSwxMTQsMzIsMTEyLDEwMSwKKyAgICAxMTQsMTA5LDEwNSwxMTUsMTE1LDEwNSwxMTEsMTEwLDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiw0MSwxLDIxOCw4LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNDEsNCwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCw5NCwwLDAsMCw5MCwxMCw5OSw5Nyw5OSwxMDQsCisgICAgMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCw1NiwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTUsOTUsOTksOTcsOTksCisgICAgMTA0LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwxOTUsMiwwLDAsMTE1LAorICAgIDIsMCwwLDAsMCw4LDEyMiwyOCw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSwKKyAgICA4MywwLDQxLDIsMTIyLDE1MCw3OSwxMTIsMTE2LDEwNSwxMTEsMTEwLDk3LDEwOCwzMiwxMDksCisgICAgMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTE5LDExNCwxMDUsMTE2LAorICAgIDEwMSwxMTUsMzIsMTAwLDk3LDExNiw5NywzMiw0MCw5OCwxMjEsMTE2LDEwMSwxMTUsNDEsMzIsCisgICAgMTE2LDExMSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsNDAsCisgICAgOTcsMzIsMTE1LDExNiwxMTQsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsNzMsMTA5LDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LAorICAgIDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsOTcsMTA4LDEwOCwxMTEsMTE5LDExNSwKKyAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTksMTE0LDEwNSwxMTYsMTA1LDExMCwxMDMsCisgICAgMzIsMTExLDEwMiwzMiw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsMTAwLDEwMSwzMiwxMDIsMTA1LDEwOCwKKyAgICAxMDEsMTE1LDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDExNCw0LDAsCisgICAgMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDU2LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDExNCwxOTUsMCwwLDAsMjA1LDIsMCwwLDExNSwwLDAsMCwwLAorICAgIDEyMiwyMSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKKyAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsOTksMiwwLDAsMCwwLDAsMCwwLAorICAgIDUsMCwwLDAsMTYsMCwwLDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwKKyAgICAwLDEyNCwwLDEwNiwwLDEyNCwxLDEzMSwxLDEyNSwyLDEyMSwxNCwxMjQsMCwxMDYsCisgICAgMSwxMjQsMiwxMzEsMSwxMjUsMyw4NywwLDExMCw0OCw0LDAsMTE2LDIsMTA3LAorICAgIDEwLDExNCw3MiwxLDAsMTI1LDQsMSwwLDEyMiwyMCwxMTYsMywxMDAsMSwxMjQsCisgICAgMSwxMDAsMiwxNDEsMiwxMjQsNCwxMzAsMiw4NywwLDg5LDAsMTAwLDMsMTAwLAorICAgIDMsMTI1LDQsMTI2LDQsODgsMCwxMTAsMiw4OCwwLDExNiw0LDEyNCwzLDEzMSwKKyAgICAxLDgzLDAsNDEsNCwxMjIsNTIsNjcsMTExLDExMCw5OSwxMTQsMTAxLDExNiwxMDEsMzIsCisgICAgMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsMTEwLDMyLDExMSwKKyAgICAxMDIsMzIsNzMsMTEwLDExNSwxMTIsMTAxLDk5LDExNiw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw0NiwxMjIsMzksMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwzMiwxMTAsMTExLDExNiwzMiw5NywxMTgsOTcsMTA1LDEwOCw5Nyw5OCwxMDgsCisgICAgMTAxLDMyLDExNiwxMDQsMTE0LDExMSwxMTcsMTAzLDEwNCwzMiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsCisgICAgMTE2LDk3LDQwLDQxLDQxLDEsMTE0LDEwMiwwLDAsMCw3OCw0MSw1LDExNCwxNTUsCisgICAgMCwwLDAsMjE4LDgsMTAzLDEwMSwxMTYsOTUsMTAwLDk3LDExNiw5NywxMTQsNDIsMCwKKyAgICAwLDAsMTE0LDEwMywwLDAsMCwxMTQsMTUzLDAsMCwwLDQxLDUsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTUxLDAsCisgICAgMCwwLDIxOCwzLDEwMSwxMjAsOTksMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDEwLDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMjEyLDIsMCwwLDExNSwxNCwwLDAsMCwwLDIsMTAsMSwyLAorICAgIDEsMTQsMSwxNiwxLDQsMSwyOCwxLDEyMiwyMyw4MywxMTEsMTE3LDExNCw5OSwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwxMTEsMTE3LDExNCwKKyAgICA5OSwxMDEsMTE0LDMxLDAsMCwwLDQxLDEsMjE4LDksOTUsMTExLDExMiwxMTYsMTA1LAorICAgIDEwOSwxMDUsMTIyLDEwMSw5OSwzLDAsMCwwLDEsMCwwLDAsNCwwLDAsCisgICAgMCw4LDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwKKyAgICAxMDYsMSwxMTYsMiwxMjQsMSwxMjQsMiwxMDAsMSwxMDAsMiwxMjQsMywxMDAsMywKKyAgICAxNDEsNiw4MywwLDQxLDQsMTIyLDEzMCw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwKKyAgICAxMDQsMTAxLDMyLDk5LDExMSwxMDAsMTAxLDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiw5OSwKKyAgICAxMTEsMTA5LDExMiwxMDUsMTA4LDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMTEsMTE3LAorICAgIDExNCw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LAorICAgIDEwMSwzMiwzOSwxMDAsOTcsMTE2LDk3LDM5LDMyLDk3LDExNCwxMDMsMTE3LDEwOSwxMDEsMTEwLAorICAgIDExNiwzMiw5OSw5NywxMTAsMzIsOTgsMTAxLDMyLDk3LDExMCwxMjEsMzIsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDMyLDExNiwxMjEsMTEyLDEwMSwzMiwxMTYsMTA0LDk3LDExNiwzMiw5OSwxMTEsCisgICAgMTA5LDExMiwxMDUsMTA4LDEwMSw0MCw0MSwzMiwxMTUsMTE3LDExMiwxMTIsMTExLDExNCwxMTYsMTE1LAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDExNCwxODYsMCwwLDAsODQsCisgICAgNDEsMiwyMTgsMTIsMTAwLDExMSwxMTAsMTE2LDk1LDEwNSwxMTAsMTA0LDEwMSwxMTQsMTA1LDExNiwKKyAgICAxMTQsNzIsMCwwLDAsNDEsMywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLAorICAgIDAsMjE4LDcsOTksMTExLDEwOSwxMTIsMTA1LDEwOCwxMDEsNDEsNCwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCw1NiwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwMCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsCisgICAgMTQsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5NSwxMTYsMTExLDk1LDk5LDExMSwxMDAsMTAxLDIyMiwKKyAgICAyLDAsMCwxMTUsNCwwLDAsMCwwLDUsMTIsMSwxMjIsMjcsODMsMTExLAorICAgIDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMTUsMTExLDExNywxMTQsOTksCisgICAgMTAxLDk1LDExNiwxMTEsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwwLDAsCisgICAgMCwwLDEwLDAsMCwwLDQzLDAsMCwwLDY3LDAsMCwwLDExNSw5NCwKKyAgICAxLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMDAsMSwxMjUsCisgICAgMywxMjEsMTIsMTE2LDEsMTI0LDIsMTMxLDEsMTI1LDQsODcsMCwxMTAsMjQsNCwKKyAgICAwLDExNiwyLDEwNywxMCwxMTQsNTAsMSwwLDEsMCwxLDAsMTAwLDEsMTI1LAorICAgIDQsODksMCwxMTAsMTYyLDg4LDAsMTIxLDE0LDEyNCwwLDEwNiwzLDEyNCwyLDEzMSwKKyAgICAxLDEyNSw1LDg3LDAsMTEwLDIwLDQsMCwxMTYsNCwxMDcsMTAsMTE0LDg2LDEsCisgICAgMCwxLDAsMSwwLDg5LDAsMTEwLDEyNiw4OCwwLDExNiw1LDEyNCw1LDEwMCwKKyAgICAyLDI1LDAsMTMxLDEsMTI1LDMsMTIxLDE0LDEyNCwwLDEwNiw2LDEyNCw0LDEzMSwKKyAgICAxLDEyNSw2LDg3LDAsMTEwLDIwLDQsMCwxMTYsNywxMDcsMTAsMTE0LDEzNCwxLAorICAgIDAsMSwwLDEsMCw4OSwwLDExMCw3OCw4OCwwLDEyMSwyMCwxMTYsOCwxMjQsCisgICAgNiwxMjQsNSwxMjQsMSwxMjQsNCwxMDAsMywxNDEsNCwxMjUsNyw4NywwLDExMCwKKyAgICAyNCw0LDAsMTE2LDksMTE2LDEwLDEwMiwyLDEwNywxMCwxMTQsMTgwLDEsMCwxLAorICAgIDAsMSwwLDg5LDAsMTEwLDMyLDg4LDAsMTE2LDExLDEwNiwxMiwxMDAsNCwxMjQsCisgICAgNCwxMjQsMiwxMzEsMywxLDAsMTE2LDEzLDEyNCw3LDEyNCwxLDEyNCw0LDEyNCwKKyAgICAyLDEwMCw1LDE0MSw0LDgzLDAsMTI0LDAsMTA2LDYsMTI0LDIsMTMxLDEsMTI1LAorICAgIDgsMTI0LDAsMTA2LDE0LDEyNCw4LDEyNCwyLDEzMSwyLDEyNSw5LDExNiwxMSwxMDYsCisgICAgMTIsMTAwLDYsMTI0LDIsMTMxLDIsMSwwLDExNiwxNSwxMDYsMTYsMTIsMCwxNDQsCisgICAgMSwxMTQsOTAsMTI0LDQsMTAwLDEsMTA3LDksMTQ0LDEsMTE0LDkwLDEyNCwzLDEwMCwKKyAgICAxLDEwNyw5LDE0NCwxLDExNCw5MCwxMTYsMTcsMTI0LDksMTI0LDMsMTE2LDE4LDEyNCwKKyAgICA4LDEzMSwxLDEzMSwzLDEyNSw2LDEyMSwzMCwxMjQsMCwxMDYsMTksMTI0LDIsMTI0LAorICAgIDQsMTI0LDYsMTMxLDMsMSwwLDExNiwxMSwxMDYsMTIsMTAwLDcsMTI0LDQsMTMxLAorICAgIDIsMSwwLDg3LDAsMTEwLDIyLDQsMCwxMTYsMiwxMDcsMTAsMTQ0LDEsMTE0LAorICAgIDg4LDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwxMjQsOSw4MywKKyAgICAwLDQxLDgsMTIyLDE5MCw2NywxMTEsMTEwLDk5LDExNCwxMDEsMTE2LDEwMSwzMiwxMDUsMTA5LAorICAgIDExMiwxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiw5NywxMTYsMTA1LDExMSwxMTAsMzIsMTExLDEwMiwzMiwKKyAgICA3MywxMTAsMTE1LDExMiwxMDEsOTksMTE2LDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSw5OSwxMTEsMTAwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiw4MiwxMDEsOTcsMTAwLDEwNSwxMTAsMTAzLDMyLDExMSwxMDIsMzIsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsMTAxLDExNSwzMiwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMTUsMTE2LDk3LDExNiwxMTUsMzIsMTE2LDExMSwzMiw5OCwxMDEsMzIsMTA1LAorICAgIDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwzMiw4NCwxMTEsMzIsMTE5LAorICAgIDExNCwxMDUsMTE2LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw5OCwxMjEsMTE2LAorICAgIDEwMSw5OSwxMTEsMTAwLDEwMSw0NCwzMiwxMTUsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDMyLAorICAgIDEwOSwxMTcsMTE1LDExNiwzMiw5NywxMDgsMTE1LDExMSwzMiw5OCwxMDEsMzIsMTA1LDEwOSwxMTIsCisgICAgMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw3OCwxMTQsMTMwLDAsMCwwLDQxLDMsMTE0LDEzNiwwLDAsMCwKKyAgICAxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwxMjIsMTMsMTIzLDEyNSwzMiwxMDksCisgICAgOTcsMTE2LDk5LDEwNCwxMDEsMTE1LDMyLDEyMywxMjUsNDEsMywxMTQsMTAyLDAsMCwwLAorICAgIDExNCw5MywwLDAsMCwxMTQsOTQsMCwwLDAsMTIyLDE5LDk5LDExMSwxMDAsMTAxLAorICAgIDMyLDExMSw5OCwxMDYsMTAxLDk5LDExNiwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDEyNSwxMjIsCisgICAgMTAsMTE5LDExNCwxMTEsMTE2LDEwMSwzMiwxMjMsMzMsMTE0LDEyNSw0MSwyMCwxMTQsMTU1LDAsCisgICAgMCwwLDExNCw4MywwLDAsMCwxMTQsNzAsMCwwLDAsMTE0LDE5NCwwLDAsCisgICAgMCwxMTQsMTkyLDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMTk3LDAsMCwwLAorICAgIDExNCw0MiwwLDAsMCwxMTQsMTM5LDAsMCwwLDExNCwxMDMsMCwwLDAsMTE0LAorICAgIDEzNCwwLDAsMCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsMCwwLDAsMTE0LDE0NSwKKyAgICAwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCw4LDAsMCwwLDIxOCwxOSwxMDAsCisgICAgMTExLDExMCwxMTYsOTUsMTE5LDExNCwxMDUsMTE2LDEwMSw5NSw5OCwxMjEsMTE2LDEwMSw5OSwxMTEsCisgICAgMTAwLDEwMSwxMTQsMTQ4LDAsMCwwLDExNCwzMywwLDAsMCwxMTQsMTk2LDAsMCwKKyAgICAwLDQxLDEwLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMTE0LDEzNywwLDAsMCwxMTQsOTMsMCwwLDAsMjE4LDIsMTE1LDExNiwKKyAgICAxMTQsNTYsMCwwLDAsMjE4LDEwLDk4LDEyMSwxMTYsMTAxLDExNSw5NSwxMDAsOTcsMTE2LAorICAgIDk3LDExNCwxNTEsMCwwLDAsOTAsMTEsOTksMTExLDEwMCwxMDEsOTUsMTExLDk4LDEwNiwKKyAgICAxMDEsOTksMTE2LDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCisgICAgMCwwLDExNCwxODQsMCwwLDAsMjMwLDIsMCwwLDExNSw3OCwwLDAsMCwKKyAgICAwLDcsMTAsMSw0LDEsMiwxLDEyLDEsMTQsMSwxMCwyLDIsMSwKKyAgICAxNCwxLDE0LDEsNiwyLDEyLDEsMiwxLDE0LDEsMTQsMSw2LDIsCisgICAgMiwxLDQsMSw0LDEsMTIsMSwxOCwxLDYsMiw4LDEsNiwxLAorICAgIDYsMSwyLDEsOCwxLDEwLDEsMTIsMSwxMiwxLDIwLDEsMTAsMSwKKyAgICA2LDEsMTAsMSwyLDEsMTQsMSwxNiwxLDE2LDEsNiwxLDEyMiwyMSwKKyAgICA4MywxMTEsMTE3LDExNCw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LAorICAgIDk1LDk5LDExMSwxMDAsMTAxLDc4LDExNCw5MSwwLDAsMCw0MSwxMCwxMTQsMTA5LDAsCisgICAgMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTkzLDAsMCwKKyAgICAwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwxMTQsMTk1LDAsMCwwLAorICAgIDExNCwxOTksMCwwLDAsMTE0LDIwMywwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAorICAgIDAsMCwwLDExNCwxOTEsMCwwLDAsMTcyLDIsMCwwLDExNSwxNCwwLDAsCisgICAgMCw4LDIsOCw4LDgsMTMsOCwxMCw4LDcsOCwxMCwxNCw4LDExNCwKKyAgICAxOTEsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsNCwwLDAsMCwwLDAsMCwwLDExNSw4MCwwLDAsMCwxMDEsMCwKKyAgICA5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCwKKyAgICA5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsCisgICAgOTAsNiwxMDEsNywxMzUsMCwxMDIsMSwxMDAsOCwxMDAsOSwxMzIsOCwxMzEsMSwKKyAgICA5MCw4LDEwMSw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsMTMxLDEsOTAsOSwxMDAsMTIsCisgICAgMTAwLDEzLDEzMiwwLDkwLDEwLDEzNSwwLDkwLDExLDEwMCwxNCw4MywwLDQxLDE1LAorICAgIDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDEwMyw2Niw5NywKKyAgICAxMTUsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDk5LAorICAgIDEwOCw5NywxMTUsMTE1LDMyLDExOSwxMDQsMTA1LDk5LDEwNCwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLAorICAgIDEwOSwxMDEsMTEwLDExNiwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAzMiwxMTIsMTE0LDExMSwxMTYsMTExLDk5LDExMSwxMDgsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsCisgICAgMTE1LDMyLDExNiwxMDQsOTcsMTE2LDEwLDMyLDMyLDMyLDMyLDExNCwxMDEsMTEzLDExNywxMDUsCisgICAgMTE0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwxMDksMzIsMTE3LAorICAgIDExNSw5NywxMDMsMTAxLDQ2LDk5LDMsMCwwLDAsMCwwLDAsMCwzLDAsCisgICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEyNCwKKyAgICAxLDEyNCwwLDk1LDAsMTI0LDIsMTI0LDAsOTUsMSwxMDAsMSw4MywwLDQxLAorICAgIDIsMTIyLDc1LDY3LDk3LDk5LDEwNCwxMDEsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMzIsOTcsMTEwLDEwMCwzMiwxMTYsMTA0LDEwMSwKKyAgICAzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiwxMDIsMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwxMCwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw3OCw0MSwKKyAgICAyLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDQxLDMsMTE0LDEwNCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLAorICAgIDMxLDMsMCwwLDExNSw0LDAsMCwwLDAsMyw2LDEsMTIyLDE5LDcwLAorICAgIDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsCisgICAgOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjQsMCwwLDAsMTI0LDAsMTA2LDAsCisgICAgMTI0LDEsMTA2LDAsMTA3LDIsMTExLDIyLDEyNCwwLDEwNiwxLDEyNCwxLDEwNiwxLAorICAgIDEwNywyLDgzLDAsNDEsMSw3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywKKyAgICAxMTUsMTE1LDk1LDk1LDExNCwxMTUsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLAorICAgIDIxOCw1LDExMSwxMTYsMTA0LDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzNywzLAorICAgIDAsMCwxMTUsNCwwLDAsMCwwLDEsMTIsMSwxMjIsMTcsNzAsMTA1LDEwOCwKKyAgICAxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwKKyAgICAwLDAsMCwwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMjAsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDEsCisgICAgMTE2LDAsMTI0LDAsMTA2LDIsMTMxLDEsNjUsMCw4MywwLDQxLDEsNzgsNDEsCisgICAgMywyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsCisgICAgMCw0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsCisgICAgOTUsNDEsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsCisgICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsCisgICAgOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMywwLAorICAgIDAsMCwzLDAsMCwwLDExNSwxNiwwLDAsMCwxMTYsMCwxMTYsMSwxMjQsCisgICAgMCwxMzEsMiwxMDYsMiwxMjQsMSwxMzEsMSw4MywwLDQxLDEsMTIyLDEwMCw3NiwKKyAgICAxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLAorICAgIDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LAorICAgIDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LAorICAgIDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsCisgICAgMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsNDEsMywyMTgsNSwxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMDcsMCwwLAorICAgIDAsMTE0LDE5MCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAorICAgIDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE5MCwwLDAsMCw0NCwzLDAsMCwxMTUsMiwwLDAsCisgICAgMCwwLDEwLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCisgICAgMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNiwwLDAsMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLAorICAgIDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LAorICAgIDEwMSwzMiw5NywxMTUsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsCisgICAgNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCwKKyAgICA1NiwzLDAsMCwxMTUsMiwwLDAsMCwwLDMsMTIyLDIzLDcwLDEwNSwxMDgsCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDIsMTA1LDEwOCwxMDEsCisgICAgMTEwLDk3LDEwOSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsOSwwLDAsMCw2NywwLDAsMCwxMTUsMzIsMCwwLDAsMTE2LDAsCisgICAgMTA2LDEsMTI0LDEsMTAwLDEsMTMxLDIsMTQzLDEwLDEyNSwyLDEyNCwyLDEwNiwyLAorICAgIDEzMSwwLDgzLDAsODEsMCw4MiwwLDg4LDAsMTAwLDIsODMsMCw0MSwzLAorICAgIDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDEwMCw5NywxMTYsCisgICAgOTcsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExMiw5NywxMTYsMTA0LDMyLDk3LDExNSwzMiwxMTQsCisgICAgOTcsMTE5LDMyLDk4LDEyMSwxMTYsMTAxLDExNSw0NiwyMTgsMSwxMTQsNzgsNDEsMywxMTQsCisgICAgNTIsMCwwLDAsMTE0LDUzLDAsMCwwLDkwLDQsMTE0LDEwMSw5NywxMDAsNDEsCisgICAgMywxMTQsMTA0LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNTcsMCwwLDAsCiAgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwyMjUsMiwwLDAsMTE1LDc4LDAsMCwwLDAsNywxNSwKLSAgICAxLDYsMSwzLDEsMTYsMSwxMywxLDExLDIsMywxLDE5LDEsMTMsCi0gICAgMSw1LDIsMTYsMSwzLDEsMTksMSwxMywxLDUsMiwzLDEsOSwKLSAgICAxLDEyLDEsMTMsMSwxOSwxLDUsMiw5LDEsNywxLDE1LDEsNiwKLSAgICAxLDcsMSwxNSwxLDE4LDEsMTMsMSwyMiwxLDEyLDEsOSwxLDE1LAotICAgIDEsMywxLDE5LDEsMTcsMSwxMywxLDUsMSwxMjIsMjEsODMsMTExLDExNywKLSAgICAxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsCi0gICAgMTAwLDEwMSw3OCwxMTQsODksMCwwLDAsNDEsMTAsMTE0LDExNCwwLDAsMCwxMTQsCi0gICAgMTEzLDAsMCwwLDExNCwxMTUsMCwwLDAsMTE0LDE5NywwLDAsMCwxMTQsMTk4LAotICAgIDAsMCwwLDExNCwyMDAsMCwwLDAsMTE0LDE5OSwwLDAsMCwxMTQsMjAzLDAsCi0gICAgMCwwLDExNCwyMDcsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMTk1LDAsMCwwLDE2NywyLDAsMCwxMTUsMTQsMCwwLDAsMTIsMiwKLSAgICAxMiw4LDEyLDEzLDEyLDEwLDEyLDcsMTIsMTAsMTgsOCwxMTQsMTk1LDAsMCwKLSAgICAwLDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwKLSAgICAwLDAsMCwwLDAsMCwxMTUsMTEyLDAsMCwwLDEwMSwwLDAsOTAsMSwKLSAgICAwLDEwMCwwLDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsCi0gICAgMTAwLDMsMCwxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLAotICAgIDAsMCw5MCw1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwKLSAgICAwLDEwMSw3LDAsMTM1LDAsMCwxMDIsMSwwLDEwMCw4LDAsMTAwLDksMCwKLSAgICAxMzQsMCwwLDEzMSwxLDAsOTAsOCwwLDEwMSw3LDAsMTAwLDEwLDAsMTAwLAotICAgIDExLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDksMCwxMDAsMTIsMCwxMDAsMTMsCi0gICAgMCwxMzIsMCwwLDkwLDEwLDAsMTM1LDAsMCw4Myw0MSwxNCwyMTgsMTAsNzAsCi0gICAgMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiwxMDMsNjYsOTcsMTE1LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5OSwxMDgsOTcsMTE1LAotICAgIDExNSwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwKLSAgICAxMTYsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTEyLDExNCwKLSAgICAxMTEsMTE2LDExMSw5OSwxMTEsMTA4LDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDExNSwzMiwxMTYsCi0gICAgMTA0LDk3LDExNiwxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDExMywxMTcsMTA1LDExNCwxMDEsMzIsCi0gICAgMTAyLDEwNSwxMDgsMTAxLDMyLDExNSwxMjEsMTE1LDExNiwxMDEsMTA5LDMyLDExNywxMTUsOTcsMTAzLAotICAgIDEwMSw0Niw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwyMiwwLDAsMCwxMjQsMSwwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEyNCwyLDAsMTI0LDAsMCw5NSwxLDAsMTAwLDEsCi0gICAgMCw4Myw0MSwyLDEyMiw3NSw2Nyw5Nyw5OSwxMDQsMTAxLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDExMCw5NywxMDksMTAxLDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LDEwMSwzMiwKLSAgICAxMDIsMTA1LDEwOCwxMDEsMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwKLSAgICAxMDEsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDYsNzgsNDEsMiwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwKLSAgICAwLDAsMCwyNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDMsOSwxLAotICAgIDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA1LAotICAgIDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsMCwwLDEyNCwKLSAgICAwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsMCwxMTEsMzMsCi0gICAgMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLDEwNywyLDAsCi0gICAgODMsNDEsMSw3OCw0MSwyLDIxOCw5LDk1LDk1LDk5LDEwOCw5NywxMTUsMTE1LDk1LAotICAgIDk1LDExNCwxMjAsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDIxOCw1LDExMSwKLSAgICAxMTYsMTA0LDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDYsOTUsOTUsMTAxLDExMyw5NSw5NSwzMiwzLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEsMTgsMSwxMjIsMTcsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwMSwxMTMsOTUsOTUsOTksMSwwLDAsMCwKLSAgICAwLDAsMCwwLDEsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsMjYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsCi0gICAgMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsMSwwLDY1LDgzLDQxLAotICAgIDEsNzgsNDEsMywyMTgsNCwxMDQsOTcsMTE1LDEwNCwxMTQsMTA4LDAsMCwwLDExNCwKLSAgICAzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsMzYsMywwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LAotICAgIDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMywwLDAsMCwzLDAsMCwwLDExNSwyMiwwLDAsMCwxMTYsMCwKLSAgICAwLDExNiwxLDAsMTI0LDAsMCwxMzEsMiwwLDEwNiwyLDAsMTI0LDEsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsMTIyLDEwMCw3NiwxMTEsOTcsMTAwLDMyLDk3LDMyLDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEwMiwxMTQsMTExLDEwOSwzMiw5NywzMiwxMDIsMTA1LDEwOCwKLSAgICAxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsCi0gICAgMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLAotICAgIDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsMTAxLDEyMCwxMDEsOTksCi0gICAgOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDAsNDEsMzIsMTA1LDExMCwxMTUsMTE2LDEwMSw5NywKLSAgICAxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNDEsMywyMTgsNSwKLSAgICAxMTUsMTE3LDExMiwxMDEsMTE0LDExNCwyMTEsMCwwLDAsMTE0LDE5NCwwLDAsMCw0MSwKLSAgICAyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCw0MSwxLDExNCwyMTIsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NCwwLDAsCi0gICAgMCwzOSwzLDAsMCwxMTUsMiwwLDAsMCwwLDEwLDEyMiwyMiw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA4LDExMSw5NywxMDAsOTUsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAotICAgIDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNywwLDAsMCwxMjQsMCwKLSAgICAwLDEwNiwwLDAsODMsNDEsMSwxMjIsNTgsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMTYsMTExLDMyLDExNiwxMDQsMTAxLDMyLAotICAgIDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDk3LDExNSwzMiwxMDIsCi0gICAgMTExLDExNywxMTAsMTAwLDMyLDk4LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsCi0gICAgMTAxLDExNCw0Niw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxMTAsMCwwLAotICAgIDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKLSAgICAxMTQsNiwwLDAsMCwxMTQsMTU5LDAsMCwwLDUxLDMsMCwwLDExNSwyLAotICAgIDAsMCwwLDAsMywxMjIsMjMsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsCi0gICAgMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMywwLDAsMCw5LDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSw0MiwwLDAsMCwxMTYsMCwwLDEwNiwxLDAsMTI0LDEsCi0gICAgMCwxMDAsMSwwLDEzMSwyLDAsMTQzLDE3LDAsMTI1LDIsMCwxMjQsMiwwLAotICAgIDEwNiwyLDAsMTMxLDAsMCw4Myw4NywxMDAsMiwwLDgxLDgyLDg4LDEwMCwyLAotICAgIDAsODMsNDEsMywxMjIsMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTIsOTcsMTE2LDEwNCwzMiwKLSAgICA5NywxMTUsMzIsMTE0LDk3LDExOSwzMiw5OCwxMjEsMTE2LDEwMSwxMTUsNDYsMjE4LDEsMTE0LAotICAgIDc4LDQxLDMsMTE0LDUxLDAsMCwwLDExNCw1MiwwLDAsMCw5MCw0LDExNCwKLSAgICAxMDEsOTcsMTAwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LAotICAgIDU2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwyMDEsMCwwLDAsNTYsMywwLDAsMTE1LDQsMCwwLAotICAgIDAsMCwyLDIxLDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMDAsOTcsMTE2LDk3LDQxLDExLDExNCwxMTQsMCwwLAotICAgIDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsCi0gICAgMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LAotICAgIDEyNSwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCwxNTksMCwwLDAsMTE0LDIwMSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwKLSAgICAyMTIsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIxMSwwLDAsMCwyMSwzLAotICAgIDAsMCwxMTUsMTQsMCwwLDAsMTIsMyw2LDIsMTIsNiwxMiw0LDEyLAotICAgIDMsMjQsMTIsMTgsNSwxMTQsMjExLDAsMCwwLDk5LDAsMCwwLDAsMCwKLSAgICAwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNjQsMCwwLDAsMTE1LAotICAgIDY0LDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLDAsOTAsMiwwLAotICAgIDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwxMzIsMCwwLDkwLAotICAgIDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCw1LDAsMTAwLDYsCi0gICAgMCwxMDAsNywwLDEwMCw4LDAsMTAwLDksMCwxMzIsMCwxLDkwLDYsMCwKLSAgICAxMDAsMTAsMCw4Myw0MSwxMSwyMTgsMTYsODMsMTExLDExNywxMTQsOTksMTAxLDcwLDEwNSwKLSAgICAxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwxMjIsNjIsNjcsMTExLDExMCw5OSwxMTQsMTAxLAotICAgIDExNiwxMDEsMzIsMTA1LDEwOSwxMTIsMTA4LDEwMSwxMDksMTAxLDExMCwxMTYsOTcsMTE2LDEwNSwxMTEsCi0gICAgMTEwLDMyLDExMSwxMDIsMzIsODMsMTExLDExNywxMTQsOTksMTAxLDc2LDExMSw5NywxMDAsMTAxLAotICAgIDExNCwzMiwxMTcsMTE1LDEwNSwxMTAsMTAzLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSw0Niw5OSwyLDAsMCwwLDAsMCwwLAotICAgIDAsMywwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNCwwLAotICAgIDAsMCwxMTYsMCwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMiwwLDEwMCwxLAotICAgIDAsMTI0LDIsMCwxMDYsMSwwLDEwMCwyLDAsMTI0LDIsMCwxMDYsMiwwLAotICAgIDEwNSwyLDAsODMsNDEsMywxMjIsMzMsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiwxMDksMTAxLDExNiw5NywxMDAsOTcsMTE2LDk3LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDQ2LDExNCwxMzUsMCwwLDAsMTE0LDEzNiwKKyAgICAxOTcsMCwwLDAsNjEsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDE0LAorICAgIDEsMTIyLDE5LDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLAorICAgIDExNiw5NSwxMDAsOTcsMTE2LDk3LDc4LDQxLDEyLDExNCwxMDksMCwwLDAsMTE0LDEwOCwKKyAgICAwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLAorICAgIDAsMCwxMTQsMjEwLDAsMCwwLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwwLDAsCisgICAgMCwxMTQsMTkwLDAsMCwwLDExNCwxNTUsMCwwLDAsMTE0LDE5NywwLDAsMCwKKyAgICA5MCwxMyw5NSw5NSw5OSwxMDgsOTcsMTE1LDExNSw5OSwxMDEsMTA4LDEwOCw5NSw5NSwxMTQsCisgICAgNCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwxLDExNCwyMDgsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDIwNywwLDAsMCwyNiwzLDAsMCwxMTUsMTQsCisgICAgMCwwLDAsOCwzLDQsMiw4LDYsOCw0LDgsMywxNiwxMiwxMiwKKyAgICA1LDExNCwyMDcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsCisgICAgMCwwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsNDYsMCwwLDAsCisgICAgMTAxLDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsCisgICAgMTMyLDAsOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDEwMCw3LAorICAgIDE1NiwxLDEwMCw4LDEwMCw5LDEzMiwyLDkwLDYsMTAwLDEwLDgzLDAsNDEsMTEsCisgICAgMjE4LDE2LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsMTIyLDYyLDY3LDExMSwxMTAsOTksMTE0LDEwMSwxMTYsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDEwOCwxMDEsMTA5LDEwMSwxMTAsMTE2LDk3LDExNiwxMDUsMTExLDExMCwzMiwxMTEsMTAyLDMyLDgzLAorICAgIDExMSwxMTcsMTE0LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMzIsMTE3LDExNSwxMDUsMTEwLAorICAgIDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsMTE1LDEyMSwxMTUsMTE2LDEwMSwKKyAgICAxMDksNDYsOTksMiwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMjIsMCwwLDAsMTE2LDAsMTI0LDEsCisgICAgMTMxLDEsMTI1LDIsMTI0LDIsMTA2LDEsMTI0LDIsMTA2LDIsMTAwLDEsMTU2LDIsCisgICAgODMsMCw0MSwyLDEyMiwzMyw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDExNiwxMDQsMTAxLAorICAgIDMyLDEwOSwxMDEsMTE2LDk3LDEwMCw5NywxMTYsOTcsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwKKyAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsNDYsNDEsMiwxMTQsMTMwLDAsMCwwLDExNCwxMzEsCiAgICAgMCwwLDAsNDEsMywxMTQsNDEsMCwwLDAsMjE4LDgsMTE1LDExNiw5NSwxMDksCiAgICAgMTE2LDEwNSwxMDksMTAxLDkwLDcsMTE1LDExNiw5NSwxMTUsMTA1LDEyMiwxMDEsNDEsMywxMTQsCi0gICAgMTEwLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTgsMCwKLSAgICAwLDAsNjYsMywwLDAsMTE1LDQsMCwwLDAsMCwyLDEyLDEsMTIyLAorICAgIDEwNCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDIwNSwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk0LDAsCisgICAgMCwwLDcxLDMsMCwwLDExNSw0LDAsMCwwLDAsMiw4LDEsMTIyLAogICAgIDI3LDgzLDExMSwxMTcsMTE0LDk5LDEwMSw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwKICAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTE1LDExNiw5NywxMTYsMTE1LDk5LDQsMCwwLAogICAgIDAsMCwwLDAsMCw1LDAsMCwwLDUsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDM0LDAsMCwwLDExNiwwLDAsMTI0LDEsMCwxMzEsMSwwLDEyNSwKLSAgICA0LDAsMTI0LDAsMCwxMDYsMSwwLDEyNCwyLDAsMTI0LDMsMCwxMDAsMSwKLSAgICAwLDEyNCw0LDAsMTMxLDIsMSw4Myw0MSwyLDc4LDIxOCw1LDk1LDEwOSwxMTEsCi0gICAgMTAwLDEwMSw0MSwyLDExNCw5OSwwLDAsMCwxMTQsMTk5LDAsMCwwLDQxLDUsCi0gICAgMTE0LDExMCwwLDAsMCwxMTQsOTIsMCwwLDAsMTE0LDkxLDAsMCwwLDExNCwKLSAgICA1NSwwLDAsMCwxMTQsNDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIwMCwwLDAsMCw3MSwzLDAsCi0gICAgMCwxMTUsNCwwLDAsMCwwLDIsMTIsMSwxMjIsMzIsODMsMTExLDExNywxMTQsCi0gICAgOTksMTAxLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5OSw5NywKLSAgICA5OSwxMDQsMTAxLDk1LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLDExNCwyMjEsMCwwLAotICAgIDAsMTA1LDE4MiwxLDAsMCw5OSwzLDAsMCwwLDEsMCwwLDAsOSwKLSAgICAwLDAsMCwxNywwLDAsMCw2NywwLDAsMCwxMTUsNTMsMSwwLDAsCi0gICAgMTE2LDAsMCwxMjQsMSwwLDEzMSwxLDAsOTIsMiwwLDEyNSw0LDAsMTI1LAotICAgIDUsMCwxMDMsMCwwLDEyNSw2LDAsMTIwLDU0LDAsMTI0LDQsMCwxMTQsODAsCi0gICAgMCwxMTYsMSwwLDEyNCw0LDAsMTMxLDEsMCwxMiwxMTQsODAsMCwxMTYsMCwKLSAgICAwLDEyNCw0LDAsMTMxLDEsMCw5MiwyLDAsMTI1LDQsMCwxMjUsNywwLAotICAgIDEyNCw2LDAsMTA2LDIsMCwxMjQsNywwLDEzMSwxLDAsMSwxMTMsMjcsMCwKLSAgICA4NywxMjAsMTMyLDAsMTE2LDMsMCwxMjQsNiwwLDEzMSwxLDAsNjgsOTMsMTE4LAotICAgIDAsMTI1LDcsMCwxMTYsNCwwLDEyNCw0LDAsMTI0LDcsMCwxMzEsMiwwLAotICAgIDEyNSw0LDAsMTIxLDE3LDAsMTE2LDUsMCwxMDYsNiwwLDEyNCw0LDAsMTMxLAotICAgIDEsMCwxLDg3LDExMyw5NCwwLDQsMTE2LDcsMCwxMDcsMTAsMCwxMTQsMTU1LAotICAgIDAsMSwxLDEsMTE5LDk0LDAsODksMTEzLDk0LDAsNCwxMTYsOCwwLDEwNywKLSAgICAxMCwwLDExNCwyMTEsMCwxLDEyNSw4LDAsMSwxMjIsMjUsMCwxMTYsOSwwLAotICAgIDEwMCwxLDAsMTI0LDQsMCwxMjQsOCwwLDEzMSwzLDAsMSwxMDAsMiwwLAotICAgIDgzLDg3LDg5LDEwMCwyLDAsMTAwLDIsMCwxMjUsOCwwLDEyNiw4LDAsODgsCi0gICAgMTEzLDk0LDAsODgsMTEzLDk0LDAsODcsMTIxLDMzLDAsMTE2LDEwLDAsMTI0LDEsCi0gICAgMCwxMjQsMiwwLDEyNCwzLDAsMTMxLDMsMCwxLDExNiw5LDAsMTAwLDMsCi0gICAgMCwxMjQsMSwwLDEzMSwyLDAsMSw4NywxMTAsNTMsMCw0LDExNiw4LDAsCi0gICAgMTA3LDEwLDAsMTE0LDQ4LDEsMSwxMjUsOCwwLDEsMTIyLDIxLDAsMTE2LDksCi0gICAgMCwxMDAsMSwwLDEyNCwxLDAsMTI0LDgsMCwxMzEsMywwLDEsODcsODksCi0gICAgMTAwLDIsMCwxMDAsMiwwLDEyNSw4LDAsMTI2LDgsMCw4OCwxMTAsMSwwLAotICAgIDg4LDEwMCwyLDAsODMsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LAotICAgIDEyMSwxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLAotICAgIDEwNSwxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsCi0gICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsCi0gICAgMTI1LDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LAotICAgIDQxLDExLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2NSwwLDAsCi0gICAgMCwxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLAotICAgIDkwLDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwKLSAgICAxMTUsMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMDcsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDQxLDksMTE0LDExMCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDU1LDAsMCwwLDExNCwyMjEsMCwwLDAsMjE4LDYsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwxMTQsOTYsMCwwLDAsMTE0LDI5LDAsMCwwLDExNCwKLSAgICAyNSwwLDAsMCwxMTQsMjAyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNzYsMywwLAotICAgIDAsMTE1LDM4LDAsMCwwLDAsMiwxOCwxLDYsMiwyMiwxLDE4LDEsCi0gICAgMTcsMiwxOSwxLDE1LDEsMywxLDE3LDEsMTMsMiw3LDEsMTgsMywKLSAgICAxNiwxLDI3LDEsMywxLDE2LDEsMTcsMSwxOCwyLDEyMiwyNSw4MywxMTEsCi0gICAgMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwKLSAgICAxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsNDEsNywxMTQsMTE0LDAsMCwwLDExNCwKLSAgICAxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxOTgsCi0gICAgMCwwLDAsMTE0LDIwMCwwLDAsMCwxMTQsMTk5LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKLSAgICAwLDExNCwyMTksMCwwLDAsNjIsMywwLDAsMTE1LDgsMCwwLDAsMTIsCi0gICAgMiw2LDIsMTIsNSwxMiw1LDExNCwyMTksMCwwLDAsOTksMCwwLDAsCi0gICAgMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwwLDAsCi0gICAgMCwxMTUsNDYsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwKLSAgICAyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLAotICAgIDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwKLSAgICAxMDAsNiwwLDgzLDQxLDcsMjE4LDIwLDgzLDExMSwxMTcsMTE0LDk5LDEwMSwxMDgsMTAxLAotICAgIDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw0NSw3NiwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwKLSAgICAxMDEsMTE1LDMyLDExNSwxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDMyLDEwMiwxMDUsCi0gICAgMTA4LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMTUsNDYsOTksMiwwLDAsMCwKLSAgICAwLDAsMCwwLDUsMCwwLDAsNiwwLDAsMCw2NywwLDAsMCwKLSAgICAxMTUsNzYsMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEyNCwxLDAsMTMxLDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDEsMCwxMjQsMiwwLDEzMSwxLDAsCi0gICAgMTI1LDMsMCwxMTYsMiwwLDEyNCwzLDAsMTAwLDEsMCwxMjQsMSwwLDEwMCwKLSAgICAyLDAsMTI0LDIsMCwxMzEsMSwyLDEyNSw0LDAsMTE2LDMsMCwxMjQsNCwKLSAgICAwLDEwMCwxLDAsMTI0LDEsMCwxMDAsMywwLDEyNCwyLDAsMTMxLDEsMiwKLSAgICA4Myw0MSw0LDc4LDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw5MSwKLSAgICAwLDAsMCw0MSw0LDExNCwxNTksMCwwLDAsMTE0LDIwMSwwLDAsMCwxMTQsCi0gICAgMTQzLDAsMCwwLDExNCwxNDksMCwwLDAsNDEsNSwxMTQsMTEwLDAsMCwwLAotICAgIDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw1NSwwLDAsMCwxMTQsCi0gICAgMjEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LAotICAgIDAsMCwwLDExNCwxODgsMCwwLDAsMTA5LDMsMCwwLDExNSw4LDAsMCwKLSAgICAwLDAsMSwxNSwxLDE1LDEsMjQsMSwxMjIsMjksODMsMTExLDExNywxMTQsOTksCisgICAgMCwxMTUsMjQsMCwwLDAsMTE2LDAsMTI0LDEsMTMxLDEsMTI1LDQsMTI0LDAsCisgICAgMTA2LDEsMTI0LDIsMTI0LDMsMTI0LDQsMTAwLDEsMTQxLDMsODMsMCw0MSwyLAorICAgIDc4LDQxLDEsMjE4LDUsOTUsMTA5LDExMSwxMDAsMTAxLDQxLDIsMTE0LDEwMSwwLDAsCisgICAgMCwxMTQsMTk1LDAsMCwwLDQxLDUsMTE0LDEwNCwwLDAsMCwxMTQsOTQsMCwKKyAgICAwLDAsMTE0LDkzLDAsMCwwLDExNCw1NiwwLDAsMCwxMTQsNDQsMCwwLAorICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCisgICAgMTE0LDE5NiwwLDAsMCw3NiwzLDAsMCwxMTUsNCwwLDAsMCwwLDIsCisgICAgOCwxLDEyMiwzMiw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk5LDk3LDk5LDEwNCwxMDEsOTUsOTgsMTIxLDExNiwxMDEsCisgICAgOTksMTExLDEwMCwxMDEsMTA1LDE4MiwxLDAsMCw0MSwxLDExNCwyMTcsMCwwLDAsCisgICAgOTksMywwLDAsMCwxLDAsMCwwLDksMCwwLDAsMTcsMCwwLAorICAgIDAsNjcsMCwwLDAsMTE1LDI1MCwwLDAsMCwxMTYsMCwxMjQsMSwxMzEsMSwKKyAgICA5MiwyLDEyNSw0LDEyNSw1LDEwMywwLDEyNSw2LDEyMCw0MCwxMjQsNCwxMTQsNTYsCisgICAgMTE2LDEsMTI0LDQsMTMxLDEsMTIsMCwxMTQsNTYsMTE2LDAsMTI0LDQsMTMxLDEsCisgICAgOTIsMiwxMjUsNCwxMjUsNywxMjQsNiwxMDYsMiwxMjQsNywxMzEsMSwxLDAsCisgICAgMTEzLDE4LDg3LDAsMTIwLDEwOCwxMTYsMywxMjQsNiwxMzEsMSw2OCwwLDkzLDk2LAorICAgIDEyNSw3LDExNiw0LDEyNCw0LDEyNCw3LDEzMSwyLDEyNSw0LDEyMSwxNCwxMTYsNSwKKyAgICAxMDYsNiwxMjQsNCwxMzEsMSwxLDAsODcsMCwxMTMsNjgsNCwwLDExNiw3LAorICAgIDEwNywxMCwxMTQsMTE4LDEsMCwxLDAsMSwwLDExOSw2OCw4OSwwLDExMyw2OCwKKyAgICA0LDAsMTE2LDgsMTA3LDEwLDExNCwxNjIsMSwwLDEyNSw4LDEsMCwxMjIsMTgsCisgICAgMTE2LDksMTA2LDEwLDEwMCwxLDEyNCw0LDEyNCw4LDEzMSwzLDEsMCwxMDAsMiwKKyAgICA4MywwLDEwMCwyLDEyNSw4LDEyNiw4LDg4LDAsMTEzLDY4LDg4LDAsMTEzLDY4LAorICAgIDg3LDAsMTIxLDI4LDExNiwxMSwxMjQsMSwxMjQsMiwxMjQsMywxMzEsMywxLDAsCisgICAgMTE2LDksMTA2LDEwLDEwMCwzLDEyNCwxLDEzMSwyLDEsMCw4NywwLDExMCw0OCwKKyAgICA0LDAsMTE2LDgsMTA3LDEwLDExNCwyNDQsMSwwLDEyNSw4LDEsMCwxMjIsMjAsCisgICAgMTE2LDksMTA2LDEwLDEwMCwxLDEyNCwxLDEyNCw4LDEzMSwzLDEsMCw4NywwLAorICAgIDg5LDAsMTAwLDIsMTAwLDIsMTI1LDgsMTI2LDgsODgsMCwxMTAsMiw4OCwwLAorICAgIDEwMCwyLDgzLDAsNDEsNCwxMjIsMjcsODcsMTE0LDEwNSwxMTYsMTAxLDMyLDk4LDEyMSwKKyAgICAxMTYsMTAxLDExNSwzMiwxMDAsOTcsMTE2LDk3LDMyLDExNiwxMTEsMzIsOTcsMzIsMTAyLDEwNSwKKyAgICAxMDgsMTAxLDQ2LDEyMiwyNyw5OSwxMTEsMTE3LDEwOCwxMDAsMzIsMTEwLDExMSwxMTYsMzIsOTksCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDMyLDEyMywzMywxMTQsMTI1LDU4LDMyLDEyMywzMywxMTQsMTI1LAorICAgIDc4LDEyMiwxMiw5OSwxMTQsMTAxLDk3LDExNiwxMDEsMTAwLDMyLDEyMywzMywxMTQsMTI1LDQxLAorICAgIDEyLDExNCw0MCwwLDAsMCwxMTQsNDgsMCwwLDAsMTE0LDE2MSwwLDAsMCwKKyAgICAxMTQsMzUsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCwzLDAsMCwwLDkwLAorICAgIDUsMTA5LDEwNywxMDAsMTA1LDExNCwyMTgsMTUsNzAsMTA1LDEwOCwxMDEsNjksMTIwLDEwNSwxMTUsCisgICAgMTE2LDExNSw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDQyLDAsMCwwLDExNCwxMTgsMCwwLAorICAgIDAsMTE0LDEzMywwLDAsMCwxMTQsNTgsMCwwLDAsNDEsOSwxMTQsMTA0LDAsCisgICAgMCwwLDExNCwzNywwLDAsMCwxMTQsNTYsMCwwLDAsMTE0LDIxNywwLDAsCisgICAgMCwyMTgsNiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDExNCw5OCwwLDAsMCwxMTQsMjksCisgICAgMCwwLDAsMTE0LDI1LDAsMCwwLDExNCwxOTgsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE5NSwwLDAsCisgICAgMCw4MSwzLDAsMCwxMTUsNDIsMCwwLDAsMCwyLDEyLDEsNCwyLAorICAgIDE2LDEsMTIsMSwxNCwyLDE0LDEsMTAsMSwyLDEsMTQsMSwxNCwyLAorICAgIDYsMSwxNiwzLDYsMSw4LDEsMjAsMSwyLDEsMTIsMSwxNiwxLAorICAgIDE2LDIsOCwxLDEyMiwyNSw4MywxMTEsMTE3LDExNCw5OSwxMDEsNzAsMTA1LDEwOCwxMDEsCisgICAgNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDExNSwxMDEsMTE2LDk1LDEwMCw5NywxMTYsOTcsNzgsCisgICAgNDEsNywxMTQsMTA5LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDExMCwwLDAsCisgICAgMCwxMTQsMTExLDAsMCwwLDExNCwxOTQsMCwwLDAsMTE0LDE5NiwwLDAsMCwKKyAgICAxMTQsMTk1LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTUsMCwwLDAsNjcsMywKKyAgICAwLDAsMTE1LDgsMCwwLDAsOCwyLDQsMiw4LDUsOCw1LDExNCwKKyAgICAyMTUsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw2NCwwLDAsMCwxMTUsMzIsMCwwLDAsMTAxLDAsCisgICAgOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDkwLDMsMTAwLDIsMTAwLDMsMTMyLDAsCisgICAgOTAsNCwxMDAsNCwxMDAsNSwxMzIsMCw5MCw1LDEwMCw2LDgzLDAsNDEsNywKKyAgICAyMTgsMjAsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsMTA4LDEwMSwKKyAgICA3NiwxMTEsOTcsMTAwLDEwMSwxMTQsMTIyLDQ1LDc2LDExMSw5NywxMDAsMTAxLDExNCwzMiwxMTksCisgICAgMTA0LDEwNSw5OSwxMDQsMzIsMTA0LDk3LDExMCwxMDAsMTA4LDEwMSwxMTUsMzIsMTE1LDExMSwxMTcsCisgICAgMTE0LDk5LDEwMSwxMDgsMTAxLDExNSwxMTUsMzIsMTAyLDEwNSwxMDgsMTAxLDMyLDEwNSwxMDksMTEyLAorICAgIDExMSwxMTQsMTE2LDExNSw0Niw5OSwyLDAsMCwwLDAsMCwwLDAsNSwwLAorICAgIDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSw0OCwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMCwxMDYsMSwxMjQsMiwxMzEsCisgICAgMSwxMjUsMywxMTYsMiwxMjQsMywxMjQsMSwxMjQsMiwxMDAsMSwxNDEsMywxMjUsCisgICAgNCwxMTYsMywxMjQsNCwxMjQsMSwxMjQsMiwxMDAsMiwxNDEsMyw4MywwLDQxLAorICAgIDMsNzgsNDEsMiwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwyLAorICAgIDExNCwxMDIsMCwwLDAsMTE0LDkzLDAsMCwwLDQxLDQsMTE0LDE1NSwwLDAsCisgICAgMCwxMTQsMTk3LDAsMCwwLDExNCwxMzksMCwwLDAsMTE0LDE0NSwwLDAsMCwKKyAgICA0MSw1LDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsMTE0LDU2LDAsMCwwLDExNCwyMDYsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NCwwLDAsMCwxMTYsCisgICAgMywwLDAsMTE1LDgsMCwwLDAsMCwxLDEwLDEsMTAsMSwxNCwxLAorICAgIDEyMiwyOSw4MywxMTEsMTE3LDExNCw5OSwxMDEsMTA4LDEwMSwxMTUsMTE1LDcwLDEwNSwxMDgsMTAxLAorICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKKyAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAorICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDgzLDAsNDEsMiwxMjIsCisgICAgMzksODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw3OCwxMTEsMTEwLDEwMSwzMiw5NywxMTUsMzIsCisgICAgMTE2LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMzIsMTE1LDExMSwxMTcsMTE0LAorICAgIDk5LDEwMSwzMiw5OSwxMTEsMTAwLDEwMSw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLAorICAgIDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTk5LDAsMCwwLDEyMiwzLAorICAgIDAsMCwxMTUsMiwwLDAsMCwwLDIsMTIyLDMxLDgzLDExMSwxMTcsMTE0LDk5LAogICAgIDEwMSwxMDgsMTAxLDExNSwxMTUsNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LAotICAgIDEwMywxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwKLSAgICAwLDAsMTAwLDEsMCw4Myw0MSwyLDEyMiwzOSw4MiwxMDEsMTE2LDExNywxMTQsMTEwLAotICAgIDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwxMTYsMTA0LDEwMSwxMTQsMTAxLDMyLDEwNSwKLSAgICAxMTUsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDk5LDExMSwxMDAsMTAxLAotICAgIDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyMDMsMCwwLDAsMTE1LDMsMCwwLDExNSwyLDAsMCwwLAotICAgIDAsMiwxMjIsMzEsODMsMTExLDExNywxMTQsOTksMTAxLDEwOCwxMDEsMTE1LDExNSw3MCwxMDUsCi0gICAgMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsMTE1LDExMSwxMTcsCi0gICAgMTE0LDk5LDEwMSw3OCw0MSw2LDExNCwxMTQsMCwwLDAsMTE0LDExMywwLDAsMCwKLSAgICAxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLDAsMTE0LDE4OCwwLDAsMCwxMTQsCi0gICAgMjAzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTA1LDMsMCwKLSAgICAwLDExNSw2LDAsMCwwLDEyLDIsNiwyLDEyLDYsMTE0LDIyNCwwLDAsCi0gICAgMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwzLDAsCi0gICAgMCwwLDY0LDAsMCwwLDExNSwxMzYsMCwwLDAsMTAxLDAsMCw5MCwxLAotICAgIDAsMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwKLSAgICAxMDAsMywwLDEzMiwwLDAsOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsCi0gICAgMCwwLDkwLDUsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw2LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsNywwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEzMiwwLDAsOTAsOCwwLDEwMCwxMiwwLDEwMCwxMywwLDEzMiwKLSAgICAwLDAsOTAsOSwwLDEwMCwxNCwwLDEwMCwxNSwwLDEzMiwwLDAsOTAsMTAsCi0gICAgMCwxMDAsMTYsMCwxMDAsMTcsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsCi0gICAgMTAwLDE4LDAsMTAwLDE5LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLAotICAgIDIwLDAsODMsNDEsMjEsMjE4LDE5LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDEyMiw5Myw3NiwxMTEsOTcsMTAwLAotICAgIDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCi0gICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDg0LAotICAgIDEwNCwxMDEsMzIsOTksMTExLDExMCwxMTUsMTE2LDExNCwxMTcsOTksMTE2LDExMSwxMTQsMzIsMTA1LAotICAgIDExNSwzMiwxMDAsMTAxLDExNSwxMDUsMTAzLDExMCwxMDEsMTAwLDMyLDExNiwxMTEsMzIsMTE5LDExMSwKLSAgICAxMTQsMTA3LDMyLDExOSwxMDUsMTE2LDEwNCwzMiw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwKLSAgICAxMDEsMTE0LDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDk5LDMsMCwwLDAsMCwwLAotICAgIDAsMCwzLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDIyLAotICAgIDAsMCwwLDEyNCwxLDAsMTI0LDAsMCw5NSwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMCwwLDk1LDEsMCwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMTA4LAotICAgIDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDEwOCwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4NiwwLDAsMCwxMzIsMywwLAotICAgIDAsMTE1LDQsMCwwLDAsMCwxLDksMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDIsMCwwLDAsMCwwLDAsCi0gICAgMCwyLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDM0LDAsCi0gICAgMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsMSwwLDEwNiwwLDAsMTA3LDIsCi0gICAgMCwxMTEsMzMsMCwxMjQsMCwwLDEwNiwxLDAsMTI0LDEsMCwxMDYsMSwwLAotICAgIDEwNywyLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMTIsMCwwLDAsMTE0LDEyMCwKLSAgICAwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDIxMywwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjE0LAotICAgIDAsMCwwLDEzNiwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsMTgsMSwKLSAgICAxMjIsMjYsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwKLSAgICAxMTEsOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwKLSAgICAwLDAsMCwwLDAsMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwKLSAgICAwLDExNSwyNiwwLDAsMCwxMTYsMCwwLDEyNCwwLDAsMTA2LDEsMCwxMzEsCi0gICAgMSwwLDExNiwwLDAsMTI0LDAsMCwxMDYsMiwwLDEzMSwxLDAsNjUsODMsCi0gICAgNDEsMSw3OCw0MSwzLDExNCwyMTUsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsCi0gICAgMzcsMCwwLDAsNDEsMSwxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTYsMCwwLDAsMTQwLAotICAgIDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsNjksMTIwLDExNiwxMDEsCi0gICAgMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDMsMCwwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsNDcsMCwKLSAgICAwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDEzMSwyLDAsMTI1LDIsMCwxMTYsNCwwLDEwMCwxLDAsMTI0LDEsMCwKLSAgICAxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLDEsMTI0LDIsMCwKLSAgICA4Myw0MSwyLDEyMiwzOCw2NywxMTQsMTAxLDk3LDExNiwxMDEsMzIsOTcsMTEwLDMyLDExNywKLSAgICAxMTAsMTA1LDExNiwxMDUsOTcsMTA4LDEwNSwxMjIsMTAxLDEwMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLAotICAgIDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsMzgsMTAxLDEyMCwxMTYsCi0gICAgMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLAotICAgIDExNCwxMjUsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLAotICAgIDMzLDExNCwxMjUsNDEsNywxMTQsMTIzLDAsMCwwLDExNCwxODksMCwwLDAsMTE0LAotICAgIDE0NywwLDAsMCw5MCwxNCw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTAwLDEyMSwxMTAsCi0gICAgOTcsMTA5LDEwNSw5OSwxMTQsMTA3LDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDQxLDMsMTE0LDExMCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxOTEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxNDMsMywwLDAsMTE1LDEwLDAsMCwKLSAgICAwLDAsMiw2LDEsMTUsMSw2LDEsMTYsMSwxMjIsMzMsNjksMTIwLDExNiwKKyAgICAxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDc4LDQxLDYsMTE0LDEwOSwwLAorICAgIDAsMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsCisgICAgMCwxMTQsMTg0LDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAorICAgIDIyMCwwLDAsMCwxMTIsMywwLDAsMTE1LDYsMCwwLDAsOCwyLDQsCisgICAgMiw4LDYsMTE0LDIyMCwwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLAorICAgIDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLDExNSw5MiwwLAorICAgIDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwKKyAgICAxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAwLDYsCisgICAgMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsMCw5MCw3LDEwMCwxMCwKKyAgICAxMDAsMTEsMTMyLDAsOTAsOCwxMDAsMTIsMTAwLDEzLDEzMiwwLDkwLDksMTAwLDE0LAorICAgIDEwMCwxNSwxMzIsMCw5MCwxMCwxMDAsMTYsMTAwLDE3LDEzMiwwLDkwLDExLDEwMSwxMiwKKyAgICAxMDAsMTgsMTAwLDE5LDEzMiwwLDEzMSwxLDkwLDEzLDEwMCwyMCw4MywwLDQxLDIxLAorICAgIDIxOCwxOSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCwxMjIsOTMsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCisgICAgMTE0LDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywKKyAgICAxMDgsMTAxLDExNSw0NiwxMCwxMCwzMiwzMiwzMiwzMiw4NCwxMDQsMTAxLDMyLDk5LDExMSwKKyAgICAxMTAsMTE1LDExNiwxMTQsMTE3LDk5LDExNiwxMTEsMTE0LDMyLDEwNSwxMTUsMzIsMTAwLDEwMSwxMTUsCisgICAgMTA1LDEwMywxMTAsMTAxLDEwMCwzMiwxMTYsMTExLDMyLDExOSwxMTEsMTE0LDEwNywzMiwxMTksMTA1LAorICAgIDExNiwxMDQsMzIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMCwxMCwKKyAgICAzMiwzMiwzMiwzMiw5OSwzLDAsMCwwLDAsMCwwLDAsMywwLDAsCisgICAgMCwyLDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMjQsMSwKKyAgICAxMjQsMCw5NSwwLDEyNCwyLDEyNCwwLDk1LDEsMTAwLDAsODMsMCw0MSwxLAorICAgIDc4LDQxLDIsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMywxMTQsCisgICAgMTA0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODIsMCwKKyAgICAwLDAsMTM5LDMsMCwwLDExNSw0LDAsMCwwLDAsMSw2LDEsMTIyLAorICAgIDI4LDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAorICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwyLDAsCisgICAgMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LDAsCisgICAgMCwwLDExNSwyNCwwLDAsMCwxMjQsMCwxMDYsMCwxMjQsMSwxMDYsMCwxMDcsCisgICAgMiwxMTEsMjIsMTI0LDAsMTA2LDEsMTI0LDEsMTA2LDEsMTA3LDIsODMsMCw0MSwKKyAgICAxLDc4LDQxLDIsMTE0LDIwOCwwLDAsMCwxMTQsMTE1LDAsMCwwLDQxLDIsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMjA5LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMTAsMCwwLDAsMTQzLDMsCisgICAgMCwwLDExNSw0LDAsMCwwLDAsMSwxMiwxLDEyMiwyNiw2OSwxMjAsMTE2LAogICAgIDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCwKLSAgICA0Niw5OSwxMTQsMTAxLDk3LDExNiwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwKLSAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsNCwwLDAsMCw2NywKLSAgICAwLDAsMCwxMTUsNDUsMCwwLDAsMTE2LDAsMCwxMDYsMSwwLDExNiwyLAotICAgIDAsMTA2LDMsMCwxMjQsMSwwLDEzMSwyLDAsMSwxMTYsNCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsNSwwLDEyNCwwLDAsMTA2LDYsMCwxMzEsMywwLAotICAgIDEsMTAwLDIsMCw4Myw0MSwzLDEyMiwzMCw3MywxMTAsMTA1LDExNiwxMDUsOTcsMTA4LAotICAgIDEwNSwxMjIsMTAxLDMyLDk3LDExMCwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwKLSAgICAzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMjIsNDAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LAotICAgIDExMSwxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTIzLDMzLDExNCwxMjUsMzIsMTAxLAotICAgIDEyMCwxMDEsOTksMTE3LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSw3OCw0MSw3LDExNCwxMjMsMCwwLDAsMTE0LDE4OSwwLDAsMCwxMTQsMTQ3LAotICAgIDAsMCwwLDkwLDEyLDEwMSwxMjAsMTAxLDk5LDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsCi0gICAgOTksMTE0LDEwNywwLDAsMCwxMTQsMTA4LDAsMCwwLDExNCwzNywwLDAsMCwKLSAgICA0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDE5MSwwLDAsMCwxMTQsNCwwLDAsCi0gICAgMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTkyLDAsMCwwLAotICAgIDE1MSwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTksMSw2LDEsMTIyLAotICAgIDMxLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsNzAsMTA1LDEwOCwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDEwMSwxMjAsMTAxLDk5LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAotICAgIDk5LDIsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsMCwwLAotICAgIDAsMywwLDAsMCwxMTUsNDgsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLAotICAgIDEwNiwxLDAsMTMxLDEsMCwxMDAsMSwwLDI1LDEzNywwLDAsMTE2LDIsMCwKLSAgICAxMzUsMCwwLDEwMiwxLDAsMTAwLDIsMCwxMDAsMywwLDEzNCwwLDAsMTE2LAotICAgIDMsMCw2OCwxMzEsMSwwLDEzMSwxLDAsODMsNDEsNCwxMjIsNDksODIsMTAxLAotICAgIDExNiwxMTcsMTE0LDExMCwzMiw4NCwxMTQsMTE3LDEwMSwzMiwxMDUsMTAyLDMyLDExNiwxMDQsMTAxLAotICAgIDMyLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsCi0gICAgMTAxLDMyLDEwNSwxMTUsMzIsOTcsMzIsMTEyLDk3LDk5LDEwNyw5NywxMDMsMTAxLDQ2LDExNCwKLSAgICAzMSwwLDAsMCw5OSwxLDAsMCwwLDAsMCwwLDAsMiwwLDAsCi0gICAgMCw0LDAsMCwwLDUxLDAsMCwwLDExNSwzMSwwLDAsMCwxMjQsMCwKLSAgICAwLDkzLDIxLDAsMTI1LDEsMCwxMzYsMCwwLDEwMCwwLDAsMTI0LDEsMCwKLSAgICAyMywxMDcsMiwwLDg2LDEsMTEzLDMsMCwxMDAsMSwwLDgzLDQxLDIsMTE0LAotICAgIDE4NiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCisgICAgNDYsOTUsOTUsMTAxLDExMyw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsCisgICAgMSwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwyMCwwLDAsCisgICAgMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMSwxMTYsMCwxMjQsMCwxMDYsMiwxMzEsCisgICAgMSw2NSwwLDgzLDAsNDEsMSw3OCw0MSwzLDExNCwyMTEsMCwwLDAsMTE0LAorICAgIDEwMiwwLDAsMCwxMTQsMzcsMCwwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKKyAgICAyMTIsMCwwLDAsMTQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsCisgICAgMjgsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsCisgICAgOTcsMTAwLDEwMSwxMTQsNDYsOTUsOTUsMTA0LDk3LDExNSwxMDQsOTUsOTUsOTksMiwwLAorICAgIDAsMCwwLDAsMCwwLDMsMCwwLDAsNCwwLDAsMCw2NywwLAorICAgIDAsMCwxMTUsMzYsMCwwLDAsMTE2LDAsMTA2LDEsMTE2LDIsMTA2LDMsMTI0LAorICAgIDEsMTMxLDIsMTI1LDIsMTE2LDAsMTA2LDQsMTAwLDEsMTI0LDEsMTA2LDUsMTI0LAorICAgIDAsMTA2LDYsMTMxLDMsMSwwLDEyNCwyLDgzLDAsNDEsMiwxMjIsMzgsNjcsCisgICAgMTE0LDEwMSw5NywxMTYsMTAxLDMyLDk3LDExMCwzMiwxMTcsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKKyAgICAxMDUsMTIyLDEwMSwxMDAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDM4LDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLAorICAgIDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDEwOCwxMTEsOTcsCisgICAgMTAwLDEwMSwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDEyMywzMywxMTQsMTI1LDQxLDcsMTE0LAorICAgIDExOCwwLDAsMCwxMTQsMTg1LDAsMCwwLDExNCwxNDMsMCwwLDAsOTAsMTQsCisgICAgOTksMTE0LDEwMSw5NywxMTYsMTAxLDk1LDEwMCwxMjEsMTEwLDk3LDEwOSwxMDUsOTksMTE0LDEzMywKKyAgICAwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCw0MSwzLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDE2MiwwLDAsMCwxMTQsMTg3LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODMsMCwKKyAgICAwLDAsMTUwLDMsMCwwLDExNSwxMCwwLDAsMCwwLDIsNCwxLDEwLAorICAgIDEsNiwxLDEyLDEsMTIyLDMzLDY5LDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsCisgICAgNzAsMTA1LDEwOCwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LAorICAgIDEwMSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLAorICAgIDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwzNiwwLAorICAgIDAsMCwxMTYsMCwxMDYsMSwxMTYsMiwxMDYsMywxMjQsMSwxMzEsMiwxLDAsCisgICAgMTE2LDAsMTA2LDQsMTAwLDEsMTI0LDAsMTA2LDUsMTI0LDAsMTA2LDYsMTMxLDMsCisgICAgMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsMzAsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LAorICAgIDEwOCwxMDUsMTIyLDEwMSwzMiw5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwKKyAgICAxMTAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTIyLDQwLDEwMSwxMjAsMTE2LDEwMSwxMTAsMTE1LAorICAgIDEwNSwxMTEsMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLAorICAgIDEwMSwxMjAsMTAxLDk5LDExNywxMTYsMTAxLDEwMCwzMiwxMDIsMTE0LDExMSwxMDksMzIsMTIzLDMzLAorICAgIDExNCwxMjUsNzgsNDEsNywxMTQsMTE4LDAsMCwwLDExNCwxODUsMCwwLDAsMTE0LAorICAgIDE0MywwLDAsMCw5MCwxMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDAsMTIxLDExMCw5NywxMDksCisgICAgMTA1LDk5LDExNCwxMzMsMCwwLDAsMTE0LDEwMiwwLDAsMCwxMTQsMzcsMCwwLAorICAgIDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4OCwwLDAsCisgICAgMCwxNTgsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE0LDEsNiwxLAorICAgIDEyMiwzMSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAorICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw0LDAsCisgICAgMCwwLDMsMCwwLDAsMTE1LDM2LDAsMCwwLDExNiwwLDEyNCwwLDEwNiwKKyAgICAxLDEzMSwxLDEwMCwxLDI1LDAsMTM3LDAsMTE2LDIsMTM1LDAsMTAyLDEsMTAwLAorICAgIDIsMTAwLDMsMTMyLDgsMTE2LDMsNjgsMCwxMzEsMSwxMzEsMSw4MywwLDQxLAorICAgIDQsMTIyLDQ5LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsODQsMTE0LDExNywxMDEsMzIsMTA1LAorICAgIDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExMiw5Nyw5OSwxMDcsCisgICAgOTcsMTAzLDEwMSw0NiwxMTQsMzEsMCwwLDAsOTksMSwwLDAsMCwwLDAsCisgICAgMCwwLDIsMCwwLDAsNCwwLDAsMCw1MSwwLDAsMCwxMTUsMjYsCisgICAgMCwwLDAsMTI0LDAsOTMsMTgsMTI1LDEsMTM2LDAsMTAwLDAsMTI0LDEsMjMsCisgICAgMCwxMDcsMiw4NiwwLDEsMCwxMTMsMiwxMDAsMSw4MywwLDQxLDIsMTE0LAorICAgIDE4MiwwLDAsMCw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsCiAgICAgMCwyMTgsNiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw0MSwxLDIxOCw5LDEwMiwxMDUsMTA4LAogICAgIDEwMSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAyNTAsOSw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTYwLDMsMCwwLDExNSwKLSAgICAyLDAsMCwwLDYsMSwxMjIsNDksNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAorICAgIDI1MCw5LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxNjcsMywwLDAsMTE1LAorICAgIDIsMCwwLDAsNCwxLDEyMiw0OSw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsCiAgICAgMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiwKICAgICA5Nyw5OSwxMDcsOTcsMTAzLDEwMSw0Niw2MCwxMDgsMTExLDk5LDk3LDEwOCwxMTUsNjIsNDYsCiAgICAgNjAsMTAzLDEwMSwxMTAsMTAxLDEyMCwxMTIsMTE0LDYyLDQxLDQsMTE0LDQwLDAsMCwwLAogICAgIDExNCwzNywwLDAsMCwyMTgsMyw5NywxMTAsMTIxLDIxOCwxOCw2OSw4OCw4NCw2OSwKICAgICA3OCw4Myw3Myw3OSw3OCw5NSw4Myw4NSw3MCw3MCw3Myw4OCw2OSw4Myw0MSwyLAotICAgIDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAxLDExNCwyMjcsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE2MSwwLDAsMCwKLSAgICAxNTcsMywwLDAsMTE1LDYsMCwwLDAsMCwyLDE5LDEsMTgsMSwxMjIsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDQxLAorICAgIDEsMTE0LDIyMywwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTU3LDAsMCwwLAorICAgIDE2NCwzLDAsMCwxMTUsNiwwLDAsMCwwLDIsMTQsMSwxMiwxLDEyMiwKICAgICAzMCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSwKICAgICA5NywxMDAsMTAxLDExNCw0NiwxMDUsMTE1LDk1LDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSw5OSwKICAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwKICAgICA2Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKICAgICA5NywxMTAsMzIsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMzIsMTA5LDExMSwxMDAsCiAgICAgMTE3LDEwOCwxMDEsMzIsOTksOTcsMTEwLDExMCwxMTEsMTE2LDMyLDk5LDExNCwxMDEsOTcsMTE2LAogICAgIDEwMSwzMiw5NywzMiw5OSwxMTEsMTAwLDEwMSwzMiwxMTEsOTgsMTA2LDEwMSw5OSwxMTYsNDYsCi0gICAgNzgsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwKKyAgICA3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMTE0LDEyMywwLAogICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsCi0gICAgMCwxMTQsMTg4LDAsMCwwLDE2MywzLDAsMCwxMTUsMiwwLDAsMCwwLAorICAgIDAsMTE0LDE4NCwwLDAsMCwxNzAsMywwLDAsMTE1LDIsMCwwLDAsMCwKICAgICAyLDEyMiwyOCw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLAogICAgIDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSw5OSwxMTEsMTAwLDEwMSw5OSwKICAgICAyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLDAsMCwwLAotICAgIDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwxLDAsODMsNDEsMiwxMjIsCisgICAgNjcsMCwwLDAsMTE1LDQsMCwwLDAsMTAwLDEsODMsMCw0MSwyLDEyMiwKICAgICA1Myw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDMyLDc4LDExMSwxMTAsMTAxLDMyLDk3LDExNSwzMiwKICAgICAxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLDExMCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKICAgICAxMTUsMzIsMTA0LDk3LDExOCwxMDEsMzIsMTEwLDExMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLAotICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCi0gICAgMCwwLDExNCw2LDAsMCwwLDExNCwyMDMsMCwwLDAsMTY3LDMsMCwwLAorICAgIDMyLDk5LDExMSwxMDAsMTAxLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDEwNCwKKyAgICAwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsMTc0LDMsMCwwLAogICAgIDExNSwyLDAsMCwwLDAsMiwxMjIsMzAsNjksMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsCiAgICAgMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsCiAgICAgOTUsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsCi0gICAgMiwwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw3LDAsMCwKLSAgICAwLDEyNCwwLDAsMTA2LDAsMCw4Myw0MSwxLDEyMiw1OCw4MiwxMDEsMTE2LDExNywKLSAgICAxMTQsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDExNiwxMTEsMzIsMTE2LAotICAgIDEwNCwxMDEsMzIsMTE1LDExMSwxMTcsMTE0LDk5LDEwMSwzMiwxMDIsMTA1LDEwOCwxMDEsMzIsOTcsCi0gICAgMTE1LDMyLDEwMiwxMTEsMTE3LDExMCwxMDAsMzIsOTgsMTIxLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwKLSAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNTksMCwwLDAsMTcxLDMsMCwKLSAgICAwLDExNSwyLDAsMCwwLDAsMywxMjIsMzIsNjksMTIwLDExNiwxMDEsMTEwLDExNSwKLSAgICAxMDUsMTExLDExMCw3MCwxMDUsMTA4LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAzLDEwMSwKLSAgICAxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksMTAxLDc4LDQxLDE0LDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxMTYsMCwwLAotICAgIDAsMTE0LDE4NiwwLDAsMCwxMTQsMjE0LDAsMCwwLDExNCwyMTYsMCwwLDAsCi0gICAgMTE0LDE4NywwLDAsMCwxMTQsMTkyLDAsMCwwLDExNCwxNjEsMCwwLDAsMTE0LAotICAgIDE4OCwwLDAsMCwxMTQsMjAzLDAsMCwwLDExNCwxMjUsMCwwLDAsMTE0LDE1OSwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI1LDAsMCwwLDEyNCwzLDAsMCwKLSAgICAxMTUsMjAsMCwwLDAsMTIsNiw2LDIsMTIsNCwxMiw0LDEyLDMsMTIsCi0gICAgOCwxMiw2LDEyLDYsMTIsNCwxMiw0LDExNCwyMjUsMCwwLDAsOTksMCwKLSAgICAwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCw2NCwKLSAgICAwLDAsMCwxMTUsMTMwLDAsMCwwLDEwMSwwLDAsOTAsMSwwLDEwMCwwLAotICAgIDAsOTAsMiwwLDEwMCwxLDAsOTAsMywwLDEwMCwyLDAsMTAwLDMsMCwKLSAgICAxMzIsMCwwLDkwLDQsMCwxMDAsNCwwLDEwMCw1LDAsMTMyLDAsMCw5MCwKLSAgICA1LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsOTAsNiwwLDEwMCw4LAotICAgIDAsMTAwLDksMCwxMzIsMCwwLDkwLDcsMCwxMDAsMTAsMCwxMDAsMTEsMCwKLSAgICAxMzIsMCwwLDkwLDgsMCwxMDAsMTIsMCwxMDAsMTMsMCwxMzIsMCwwLDkwLAotICAgIDksMCwxMDAsMTQsMCwxMDAsMTUsMCwxMzIsMCwwLDkwLDEwLDAsMTAwLDE2LAotICAgIDAsMTAwLDE3LDAsMTMyLDAsMCw5MCwxMSwwLDEwMCwxOCwwLDEwMCwxOSwwLAotICAgIDEzMiwwLDAsOTAsMTIsMCwxMDAsMjAsMCw4Myw0MSwyMSwyMTgsMTQsOTUsNzgsCi0gICAgOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwKLSAgICAwLDgyLDEwMSwxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywKLSAgICAxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwKLSAgICAxMTUsMzIsMTEyLDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwKLSAgICAzMiwxMTYsMTA0LDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwKLSAgICAxMCwzMiwzMiwzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwKLSAgICAzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLAotICAgIDk3LDExMCwxMDAsMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LAotICAgIDExNiwzMiwxMDgsMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LAotICAgIDExNiwxMDQsOTUsOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LAotICAgIDMyLDk5LDEwNCw5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwKLSAgICAxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLAotICAgIDEwNSwxMTUsMzIsMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsCi0gICAgMzIsMzIsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwKLSAgICAxMDEsMTE4LDEwMSwxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsCi0gICAgMTAxLDMyLDExMiw5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksCi0gICAgMTE1LDMyLDExMiw5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwKLSAgICAxMTUsNDYsMTEyLDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLAotICAgIDQsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsNTIsMCwwLAotICAgIDAsMTI0LDEsMCwxMjQsMCwwLDk1LDAsMCwxMjQsMiwwLDEyNCwwLDAsCi0gICAgOTUsMSwwLDExNiwyLDAsMTI0LDAsMCwxMDYsMywwLDEzMSwwLDAsMTMxLAotICAgIDEsMCwxMjQsMCwwLDk1LDQsMCwxMjQsMywwLDEyNCwwLDAsOTUsNSwKLSAgICAwLDEwMCwwLDAsODMsNDEsMSw3OCw0MSw2LDIxOCw1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDIxOCw1LDk1LDExMiw5NywxMTYsMTA0LDExNCw5NSwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTAzLDEwMSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCwyMTgsCi0gICAgMTcsOTUsMTA4LDk3LDExNSwxMTYsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsCi0gICAgMTE2LDEwNCwyMTgsMTIsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsCi0gICAgNDEsNCwxMTQsMTEwLDAsMCwwLDExNCwxMDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDIxOCwxMSwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsCi0gICAgMCwwLDE4NCwzLDAsMCwxMTUsOCwwLDAsMCwwLDEsOSwxLDksCi0gICAgMSwyMSwxLDEyMiwyMyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLAotICAgIDk3LDExNiwxMDQsNDYsOTUsOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDk5LDEsMCwwLAotICAgIDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDUzLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDYsMSwwLDEwMCwKLSAgICAxLDAsMTMxLDEsMCw5MiwzLDAsMTI1LDEsMCwxMjUsMiwwLDEyNSwzLAotICAgIDAsMTI0LDIsMCwxMDAsMiwwLDEwNywyLDAsMTE0LDQzLDAsMTAwLDYsMCwKLSAgICA4MywxMjQsMSwwLDEwMCw1LDAsMTAyLDIsMCw4Myw0MSw3LDEyMiw2Miw4MiwKLSAgICAxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMTYsMTE3LDExMiwxMDgsMTAxLDMyLDExMSwKLSAgICAxMDIsMzIsNDAsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwKLSAgICA0NSwxMTAsOTcsMTA5LDEwMSw0NCwzMiwxMTIsOTcsMTE0LDEwMSwxMTAsMTE2LDQ1LDExMiw5NywKLSAgICAxMTYsMTA0LDQ1LDk3LDExNiwxMTYsMTE0LDQ1LDExMCw5NywxMDksMTAxLDQxLDExNCw2MCwwLAotICAgIDAsMCwxMTQsMzIsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDM3LDAsMCwKLSAgICAwLDkwLDgsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsNDEsMiwxMTQsOCwwLAotICAgIDAsMCwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMjMyLDAsMCwwLDExNCwzNCwKLSAgICAwLDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDIyMywwLDAsMCwyMTgsCi0gICAgMywxMDAsMTExLDExNiw5MCwyLDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDYsMCwwLDAsMjE4LDIzLDk1LDEwMiwxMDUsMTEwLDEwMCw5NSwxMTIsCi0gICAgOTcsMTE0LDEwMSwxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk1LDExMCw5NywxMDksMTAxLDExNSwKLSAgICAxOTAsMywwLDAsMTE1LDgsMCwwLDAsMCwyLDI3LDEsMTIsMiw0LAotICAgIDMsMTIyLDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsCi0gICAgOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsCi0gICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCi0gICAgMCwwLDAsMTI0LDAsMCwxMDYsMCwwLDEzMSwwLDAsOTIsMiwwLDEyNSwKLSAgICAxLDAsMTI1LDIsMCwxMTYsMSwwLDExNiwyLDAsMTA2LDMsMCwxMjQsMSwKLSAgICAwLDI1LDEyNCwyLDAsMTMxLDIsMCw4Myw0MSwxLDc4LDQxLDQsMTE0LDIzOSwKLSAgICAwLDAsMCwxMTQsMTE5LDAsMCwwLDExNCw4LDAsMCwwLDIxOCw3LDEwOSwKLSAgICAxMTEsMTAwLDExNywxMDgsMTAxLDExNSw0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTgsMTEyLAotICAgIDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSw5MCwxNCwxMTIsOTcsMTE2LDEwNCw5NSw5NywxMTYsMTE2LDExNCw5NSwxMTAsOTcsMTA5LAotICAgIDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwKLSAgICAxMTQsMjM0LDAsMCwwLDIwMCwzLDAsMCwxMTUsNCwwLDAsMCwwLDEsCi0gICAgMTgsMSwxMjIsMzEsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywKLSAgICAxMTYsMTA0LDQ2LDk1LDEwMywxMDEsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLAotICAgIDk3LDExNiwxMDQsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsCi0gICAgMywwLDAsMCw2NywwLDAsMCwxMTUsMTE4LDAsMCwwLDExNiwwLDAsCi0gICAgMTI0LDAsMCwxMDYsMSwwLDEzMSwwLDAsMTMxLDEsMCwxMjUsMSwwLDEyNCwKLSAgICAxLDAsMTI0LDAsMCwxMDYsMiwwLDEwNywzLDAsMTE0LDExMSwwLDEyNCwwLAotICAgIDAsMTA2LDMsMCwxMjQsMCwwLDEwNiw0LDAsMTI0LDEsMCwxMzEsMiwwLAotICAgIDEyNSwyLDAsMTI0LDIsMCwxMDAsMCwwLDEwNyw5LDAsMTE0LDEwMiwwLDEyNCwKLSAgICAyLDAsMTA2LDUsMCwxMDAsMCwwLDEwNyw4LDAsMTE0LDEwMiwwLDEyNCwyLAotICAgIDAsMTA2LDYsMCwxMTQsMTAyLDAsMTI0LDIsMCwxMDYsNiwwLDEyNCwwLDAsCi0gICAgOTUsNywwLDEyNCwxLDAsMTI0LDAsMCw5NSwyLDAsMTI0LDAsMCwxMDYsCi0gICAgNywwLDgzLDQxLDEsNzgsNDEsOCwxMTQsOTUsMCwwLDAsMTE0LDIzNCwwLAotICAgIDAsMCwxMTQsMjM1LDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDIzMiwwLDAsCi0gICAgMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDIzMywwLDAsMCwKLSAgICA0MSwzLDExNCwxMTAsMCwwLDAsOTAsMTEsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwKLSAgICAxMTIsOTcsMTE2LDEwNCwxMTQsMTY2LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiw5NSwxMTQsMTAxLDk5LDk3LDEwOCwKLSAgICA5OSwxMTcsMTA4LDk3LDExNiwxMDEsMjA0LDMsMCwwLDExNSwxNiwwLDAsMCwwLAotICAgIDIsMTgsMSwxNSwxLDIxLDMsMjcsMSw5LDEsMTIsMSw5LDEsMTIyLAotICAgIDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSwxMTQsMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsCi0gICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLAotICAgIDAsMCwxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwKLSAgICAxMTQsMTE0LDI0MSwwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsCi0gICAgMTA1LDExNiwxMDEsMTE0LDk1LDk1LDIxNywzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSwxMDUsMTE2LDEwMSwxMTQsOTUsOTUsOTksMSwwLDAsMCwwLAorICAgIDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsNiwwLDAsCisgICAgMCwxMjQsMCwxMDYsMCw4MywwLDQxLDEsMTIyLDU4LDgyLDEwMSwxMTYsMTE3LDExNCwKKyAgICAxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMTUsMTExLDExNywxMTQsOTksMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiw5NywxMTUsCisgICAgMzIsMTAyLDExMSwxMTcsMTEwLDEwMCwzMiw5OCwxMjEsMzIsMTE2LDEwNCwxMDEsMzIsMTAyLDEwNSwKKyAgICAxMTAsMTAwLDEwMSwxMTQsNDYsNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsMTA0LAorICAgIDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDE1NSwwLDAsMCwxNzgsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwzLDEyMiwzMiw2OSwxMjAsMTE2LDEwMSwxMTAsMTE1LDEwNSwKKyAgICAxMTEsMTEwLDcwLDEwNSwxMDgsMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDMsMTAxLDExNiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDEsMTEwLDk3LDEwOSwxMDEsNzgsNDEsMTQsMTE0LDEwOSwwLDAsCisgICAgMCwxMTQsMTA4LDAsMCwwLDExNCwxMTAsMCwwLDAsMTE0LDExMSwwLDAsMCwKKyAgICAxMTQsMTgyLDAsMCwwLDExNCwyMTAsMCwwLDAsMTE0LDIxMiwwLDAsMCwxMTQsCisgICAgMTgzLDAsMCwwLDExNCwxODgsMCwwLDAsMTE0LDE1NywwLDAsMCwxMTQsMTg0LAorICAgIDAsMCwwLDExNCwxOTksMCwwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTU1LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwKKyAgICAwLDExNCw2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTMxLDMsMCwwLDExNSwKKyAgICAyMCwwLDAsMCw4LDYsNCwyLDgsNCw4LDQsOCwzLDgsOCwKKyAgICA4LDYsOCw2LDgsNCw4LDQsMTE0LDIyMSwwLDAsMCw5OSwwLDAsCisgICAgMCwwLDAsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDY0LDAsCisgICAgMCwwLDExNSw5NiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLDkwLDIsMTAwLAorICAgIDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCw0LDEwMCw0LDEwMCw1LDEzMiwKKyAgICAwLDkwLDUsMTAwLDYsMTAwLDcsMTMyLDAsOTAsNiwxMDAsOCwxMDAsOSwxMzIsCisgICAgMCw5MCw3LDEwMCwxMCwxMDAsMTEsMTMyLDAsOTAsOCwxMDAsMTIsMTAwLDEzLDEzMiwKKyAgICAwLDkwLDksMTAwLDE0LDEwMCwxNSwxMzIsMCw5MCwxMCwxMDAsMTYsMTAwLDE3LDEzMiwKKyAgICAwLDkwLDExLDEwMCwxOCwxMDAsMTksMTMyLDAsOTAsMTIsMTAwLDIwLDEwMCwyMSwxMzIsCisgICAgMCw5MCwxMywxMDAsMjIsODMsMCw0MSwyMywyMTgsMTQsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDk3LDM4LDEsMCwwLDgyLDEwMSwKKyAgICAxMTIsMTE0LDEwMSwxMTUsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDMyLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzOSwxMTUsMzIsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsMzIsMzIsNzMsMTE2LDMyLDExNywxMTUsMTAxLDExNSwzMiwxMTYsMTA0LAorICAgIDEwMSwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMCwzMiwzMiwKKyAgICAzMiwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiwxMDUsMTE2LDExNSwzMiwxMTIsOTcsCisgICAgMTE0LDEwMSwxMTAsMTE2LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ0LDMyLDk3LDExMCwxMDAsCisgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNiwxMDQsMTAxLDExNCwxMDEsMzIsMTA1LDExNiwzMiwxMDgsCisgICAgMTExLDExMSwxMDcsMTE1LDMyLDExNywxMTIsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNCwxMDEsCisgICAgMTEwLDExNiwzOSwxMTUsMTAsMzIsMzIsMzIsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsCisgICAgOTUsNDYsMzIsMzIsODcsMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDk5LDEwNCwKKyAgICA5NywxMTAsMTAzLDEwMSwxMTUsNDQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzksMTE1LDMyLDExMSwxMTksMTEwLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwNSwxMTUsMzIsCisgICAgMTE0LDEwMSw5OSwxMTEsMTA5LDExMiwxMTcsMTE2LDEwMSwxMDAsNDQsMTAsMzIsMzIsMzIsMzIsCisgICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTIsOTcsMTE2LDEwNCw5NSwxMDIsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0NiwzMiwzMiw3MCwxMTEsMTE0LDMyLDExNiwxMTEsMTEyLDQ1LDEwOCwxMDEsMTE4LDEwMSwKKyAgICAxMDgsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDQ0LDMyLDExNiwxMDQsMTAxLDMyLDExMiwKKyAgICA5NywxMTQsMTAxLDExMCwxMTYsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzksMTE1LDMyLDExMiwKKyAgICA5NywxMTYsMTA0LDEwLDMyLDMyLDMyLDMyLDEwNSwxMTUsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLAorICAgIDk3LDExNiwxMDQsNDYsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMzYsMCwwLDAsMTI0LDEsCisgICAgMTI0LDAsOTUsMCwxMjQsMiwxMjQsMCw5NSwxLDExNiwyLDEyNCwwLDEwNiwzLAorICAgIDEzMSwwLDEzMSwxLDEyNCwwLDk1LDQsMTI0LDMsMTI0LDAsOTUsNSwxMDAsMCwKKyAgICA4MywwLDQxLDEsNzgsNDEsNiwyMTgsNSw5NSwxMTAsOTcsMTA5LDEwMSwyMTgsNSwKKyAgICA5NSwxMTIsOTcsMTE2LDEwNCwxMTQsOTcsMCwwLDAsMjE4LDE2LDk1LDEwMywxMDEsMTE2LAorICAgIDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LDE3LDk1LDEwOCwKKyAgICA5NywxMTUsMTE2LDk1LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LDExNiwxMDQsMjE4LAorICAgIDEyLDk1LDExMiw5NywxMTYsMTA0LDk1LDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDQxLDQsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTAyLDAsMCwwLDExNCwzNywwLDAsMCwyMTgsMTEsCisgICAgMTEyLDk3LDExNiwxMDQsOTUsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsCisgICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE4MiwwLDAsMCwxOTEsCisgICAgMywwLDAsMTE1LDgsMCwwLDAsMCwxLDYsMSw2LDEsMTQsMSwKKyAgICAxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LAorICAgIDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiw5NSw5NSw5OSwxLDAsMCwwLDAsMCwKKyAgICAwLDAsNCwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwzOCwKKyAgICAwLDAsMCwxMjQsMCwxMDYsMCwxMDYsMSwxMDAsMSwxMzEsMSw5MiwzLDEyNSwKKyAgICAxLDEyNSwyLDEyNSwzLDEyNCwyLDEwMCwyLDEwNywyLDExNCwzMCwxMDAsNiw4MywKKyAgICAwLDEyNCwxLDEwMCw1LDEwMiwyLDgzLDAsNDEsNywxMjIsNjIsODIsMTAxLDExNiwKKyAgICAxMTcsMTE0LDExMCwxMTUsMzIsOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiwxMTEsMTAyLDMyLAorICAgIDQwLDExMiw5NywxMTQsMTAxLDExMCwxMTYsNDUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDUsMTEwLAorICAgIDk3LDEwOSwxMDEsNDQsMzIsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw0NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA0NSw5NywxMTYsMTE2LDExNCw0NSwxMTAsOTcsMTA5LDEwMSw0MSwxMTQsNjEsMCwwLDAsCisgICAgMTE0LDMyLDAsMCwwLDExNCw4LDAsMCwwLDExNCwzNywwLDAsMCw5MCwKKyAgICA4LDk1LDk1LDExMiw5NywxMTYsMTA0LDk1LDk1LDQxLDIsMTE0LDgsMCwwLDAsCisgICAgMTE0LDM3LDAsMCwwLDQxLDIsMTE0LDIyOCwwLDAsMCwxMTQsMzQsMCwwLAorICAgIDAsNDEsNCwxMTQsMTA0LDAsMCwwLDExNCwyMTksMCwwLDAsMjE4LDMsMTAwLAorICAgIDExMSwxMTYsOTAsMiwxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw2LDAsMCwwLDIxOCwyMyw5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwKKyAgICAxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTk3LDMsCisgICAgMCwwLDExNSw4LDAsMCwwLDAsMiwxOCwxLDgsMiw0LDMsMTIyLAorICAgIDM4LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKKyAgICA5NSwxMDIsMTA1LDExMCwxMDAsOTUsMTEyLDk3LDExNCwxMDEsMTEwLDExNiw5NSwxMTIsOTcsMTE2LAorICAgIDEwNCw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsOTksMSwwLDAsMCwwLDAsMCwwLAorICAgIDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjgsMCwwLAorICAgIDAsMTI0LDAsMTA2LDAsMTMxLDAsOTIsMiwxMjUsMSwxMjUsMiwxMTYsMSwxMTYsCisgICAgMiwxMDYsMywxMjQsMSwyNSwwLDEyNCwyLDEzMSwyLDgzLDAsNDEsMSw3OCwKKyAgICA0MSw0LDExNCwyMzUsMCwwLDAsMTE0LDExNCwwLDAsMCwxMTQsOCwwLDAsCisgICAgMCwyMTgsNywxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTUsNDEsMywxMTQsMTA0LDAsMCwKKyAgICAwLDkwLDE4LDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsOTAsMTQsMTEyLDk3LDExNiwxMDQsOTUsOTcsMTE2LDExNiwxMTQsCisgICAgOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDYsMCwwLDAsMTE0LDIzMCwwLDAsMCwyMDcsMywwLDAsMTE1LDQsMCwKKyAgICAwLDAsMCwxLDEyLDEsMTIyLDMxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMDMsMTAxLDExNiw5NSwxMTIsOTcsMTE0LDEwMSwKKyAgICAxMTAsMTE2LDk1LDExMiw5NywxMTYsMTA0LDk5LDEsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDgwLDAsMCwKKyAgICAwLDExNiwwLDEyNCwwLDEwNiwxLDEzMSwwLDEzMSwxLDEyNSwxLDEyNCwxLDEyNCwKKyAgICAwLDEwNiwyLDEwNywzLDExNCw3NCwxMjQsMCwxMDYsMywxMjQsMCwxMDYsNCwxMjQsCisgICAgMSwxMzEsMiwxMjUsMiwxMjQsMiwxMDAsMCwxMDcsOSwxMTQsNjgsMTI0LDIsMTA2LAorICAgIDUsMTAwLDAsMTA3LDgsMTE0LDY4LDEyNCwyLDEwNiw2LDExNCw2OCwxMjQsMiwxMDYsCisgICAgNiwxMjQsMCw5NSw3LDEyNCwxLDEyNCwwLDk1LDIsMTI0LDAsMTA2LDcsODMsCisgICAgMCw0MSwxLDc4LDQxLDgsMTE0LDk3LDAsMCwwLDExNCwyMzAsMCwwLDAsCisgICAgMTE0LDIzMSwwLDAsMCwxMTQsMjMyLDAsMCwwLDExNCwyMjgsMCwwLDAsMTE0LAorICAgIDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwwLDExNCwyMjksMCwwLDAsNDEsMywKKyAgICAxMTQsMTA0LDAsMCwwLDkwLDExLDExMiw5NywxMTQsMTAxLDExMCwxMTYsOTUsMTEyLDk3LAorICAgIDExNiwxMDQsMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsMTIsOTUsMTE0LDEwMSw5OSw5NywxMDgsOTksMTE3LAorICAgIDEwOCw5NywxMTYsMTAxLDIxMSwzLDAsMCwxMTUsMTYsMCwwLDAsMCwyLDEyLAorICAgIDEsMTAsMSwxNCwzLDE4LDEsNiwxLDgsMSw2LDEsMTIyLDI3LDk1LAorICAgIDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSwxMTQsCisgICAgMTAxLDk5LDk3LDEwOCw5OSwxMTcsMTA4LDk3LDExNiwxMDEsOTksMSwwLDAsMCwwLAogICAgIDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDAsMCwKLSAgICAxMzEsMSwwLDgzLDQxLDEsNzgsNDEsMiwxMTQsMzMsMCwwLDAsMTE0LDI0MSwKLSAgICAwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDcsOTUsOTUsMTA4LDEwMSwxMTAsCi0gICAgOTUsOTUsMjIwLDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjIsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LAotICAgIDEwOCwxMDEsMTEwLDk1LDk1LDk5LDEsMCwwLDAsMCwwLDAsMCwxLDAsCi0gICAgMCwwLDIsMCwwLDAsNjcsMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwKLSAgICAxLDAsMTA2LDAsMCwxMjQsMCwwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwKLSAgICAyLDc4LDEyMiwyMCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDgwLDk3LAotICAgIDExNiwxMDQsNDAsMTIzLDMzLDExNCwxMjUsNDEsNDEsMiwxMTQsNDksMCwwLDAsMTE0LAotICAgIDIzMywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTE0LDEwMSwKLSAgICAxMTIsMTE0LDk1LDk1LDIyMywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLAotICAgIDIzLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0NiwKLSAgICA5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwKLSAgICAwLDAsMTI0LDEsMCwxMjQsMCwwLDEwNiwwLDAsMTMxLDAsMCwxMDcsNiwKLSAgICAwLDgzLDQxLDEsNzgsNDEsMSwxMTQsMjQxLDAsMCwwLDQxLDIsMTE0LDExMCwKLSAgICAwLDAsMCwyMTgsNCwxMDUsMTE2LDEwMSwxMDksMTE0LDQsMCwwLDAsMTE0LDQsCi0gICAgMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDEyLDk1LDk1LDk5LDExMSwxMTAsMTE2LAotICAgIDk3LDEwNSwxMTAsMTE1LDk1LDk1LDIyNiwzLDAsMCwxMTUsMiwwLDAsMCwwLAotICAgIDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LAotICAgIDEwNCw0Niw5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSw5OSwyLAotICAgIDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLDAsMCwwLDY3LAotICAgIDAsMCwwLDExNSwyMCwwLDAsMCwxMjQsMCwwLDEwNiwwLDAsMTA2LDEsCi0gICAgMCwxMjQsMSwwLDEzMSwxLDAsMSwxMDAsMCwwLDgzLDQxLDEsNzgsNDEsCi0gICAgMiwxMTQsMjMzLDAsMCwwLDExNCwxNjUsMCwwLDAsNDEsMiwxMTQsMTEwLDAsCi0gICAgMCwwLDExNCwyNDYsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAotICAgIDAsMTE0LDYsMCwwLDAsMTE0LDE2NSwwLDAsMCwyMjksMywwLDAsMTE1LAotICAgIDIsMCwwLDAsMCwxLDEyMiwyMSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsCi0gICAgOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTcsMTEyLDExMiwxMDEsMTEwLDEwMCw3OCw0MSwxMywKLSAgICAxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsMTE0LDExNSwwLDAsMCwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LDIzOSwwLDAsMCwxMTQsMjM0LAotICAgIDAsMCwwLDExNCwyNDEsMCwwLDAsMTE0LDI0MywwLDAsMCwxMTQsMjQ0LDAsCi0gICAgMCwwLDExNCwyNDUsMCwwLDAsMTE0LDI0NywwLDAsMCwxMTQsMTY1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCwyMzEsMCwwLDAsMTc3LDMsMCwwLDExNSwyMCwKLSAgICAwLDAsMCwxMiw1LDYsMiwxMiw2LDEyLDEwLDEyLDQsMTIsMTMsMTIsCi0gICAgMywxMiwzLDEyLDMsMTIsMywxMTQsMjMxLDAsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsNjQsMCwwLAotICAgIDAsMTE1LDExOCwwLDAsMCwxMDEsMCwwLDkwLDEsMCwxMDAsMCwwLDkwLAotICAgIDIsMCwxMDAsMSwwLDEwMCwyLDAsMTMyLDAsMCw5MCwzLDAsMTAxLDQsCi0gICAgMCwxMDAsMywwLDEwMCw0LDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwKLSAgICAxMDAsNSwwLDEwMCw2LDAsMTMyLDAsMCw5MCw2LDAsMTAwLDcsMCwxMDAsCi0gICAgOCwwLDEzMiwwLDAsOTAsNywwLDEwMCw5LDAsMTAwLDEwLDAsMTMyLDAsCi0gICAgMCw5MCw4LDAsMTAwLDExLDAsMTAwLDEyLDAsMTMyLDAsMCw5MCw5LDAsCi0gICAgMTAwLDEzLDAsMTAwLDE0LDAsMTMyLDAsMCw5MCwxMCwwLDEwMCwxNSwwLDEwMCwKLSAgICAxNiwwLDEzMiwwLDAsOTAsMTEsMCwxMDAsMTcsMCw4Myw0MSwxOCwyMTgsMTYsCi0gICAgOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsNCwwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsMjUsMCwwLDAsMTE2LDAsMCwxMjQsMSwwLAotICAgIDEyNCwyLDAsMTI0LDMsMCwxMzEsMywwLDEyNCwwLDAsOTUsMSwwLDEwMCwKLSAgICAwLDAsODMsNDEsMSw3OCw0MSwyLDExNCwyMzEsMCwwLDAsMTE0LDIzMywwLAotICAgIDAsMCw0MSw0LDExNCwxMTAsMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMzcsCi0gICAgMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg2LDAsMCwwLDIzNSwzLDAsMCwKLSAgICAxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiwKLSAgICA5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKKyAgICAxMiwwLDAsMCwxMTYsMCwxMjQsMCwxMDYsMSwxMzEsMCwxMzEsMSw4MywwLAorICAgIDQxLDEsNzgsNDEsMiwyMTgsNCwxMDUsMTE2LDEwMSwxMTQsMTE0LDIzNywwLDAsMCwKKyAgICA0MSwxLDExNCwxMDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLAorICAgIDAsMTE0LDYsMCwwLDAsMjE4LDgsOTUsOTUsMTA1LDExNiwxMDEsMTE0LDk1LDk1LAorICAgIDIyNCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIzLDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDUsMTE2LAorICAgIDEwMSwxMTQsOTUsOTUsOTksMywwLDAsMCwwLDAsMCwwLDMsMCwwLAorICAgIDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMTQsMCwwLDAsMTI0LDIsCisgICAgMTI0LDAsMTA2LDAsMTI0LDEsNjAsMCwxMDAsMCw4MywwLDQxLDEsNzgsNDEsCisgICAgMSwxMTQsMjI5LDAsMCwwLDQxLDMsMTE0LDEwNCwwLDAsMCwyMTgsNSwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTIwLDExNCwzNywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTEsOTUsOTUsMTE1LDEwMSwxMTYsMTA1LAorICAgIDExNiwxMDEsMTA5LDk1LDk1LDIyNywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsCisgICAgMTIyLDI2LDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCwKKyAgICA0Niw5NSw5NSwxMTUsMTAxLDExNiwxMDUsMTE2LDEwMSwxMDksOTUsOTUsOTksMSwwLDAsCisgICAgMCwwLDAsMCwwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsCisgICAgMCwxMTUsMTIsMCwwLDAsMTE2LDAsMTI0LDAsMTA2LDEsMTMxLDAsMTMxLDEsCisgICAgODMsMCw0MSwxLDc4LDQxLDIsMTE0LDMzLDAsMCwwLDExNCwyMzcsMCwwLAorICAgIDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsCisgICAgMCwwLDExNCw2LDAsMCwwLDIxOCw3LDk1LDk1LDEwOCwxMDEsMTEwLDk1LDk1LAorICAgIDIzMCwzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIyLDk1LDc4LDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NSw5NSwxMDgsMTAxLAorICAgIDExMCw5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICAyLDAsMCwwLDY3LDAsMCwwLDExNSwxMiwwLDAsMCwxMDAsMSwxMDYsCisgICAgMCwxMjQsMCwxMDYsMSwxMzEsMSw4MywwLDQxLDIsNzgsMTIyLDIwLDk1LDc4LAorICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0MCwxMjMsMzMsMTE0LAorICAgIDEyNSw0MSw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMjI5LDAsMCwwLDQxLDEsCisgICAgMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwyMTgsOCw5NSw5NSwxMTQsMTAxLDExMiwxMTQsOTUsOTUsMjMzLDMsCisgICAgMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjMsOTUsNzgsOTcsMTA5LDEwMSwKKyAgICAxMTUsMTEyLDk3LDk5LDEwMSw4MCw5NywxMTYsMTA0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCwKICAgICA5NSw5NSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxNiwwLDAsMCwxMDAsMSwwLDEwNiwKLSAgICAwLDAsMTI0LDEsMCwxMDYsMSwwLDEzMSwxLDAsODMsNDEsMiwxMjIsMTE1LAotICAgIDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMzIsMTE0LDEwMSwxMTIsMTE0LDMyLDEwMiwxMTEsMTE0LDMyLAotICAgIDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDg0LDEwNCwxMDEsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCi0gICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAotICAgIDg0LDEwNCwxMDEsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMzIsMTA5LDk3LDk5LDEwNCwxMDUsCi0gICAgMTEwLDEwMSwxMTQsMTIxLDMyLDEwMCwxMTEsMTAxLDExNSwzMiwxMTYsMTA0LDEwMSwzMiwxMDYsMTExLAotICAgIDk4LDMyLDEwNSwxMTYsMTE1LDEwMSwxMDgsMTAyLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDEyMiwyNSw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiwxMjMsMzMsMTE0LAotICAgIDEyNSwzMiw0MCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw2Miw0MSwyLAotICAgIDExNCw0OSwwLDAsMCwxMTQsMTE0LDAsMCwwLDQxLDIsMTE0LDE3MiwwLDAsCi0gICAgMCwxMTQsMTkxLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDIxOCwxMSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsMTAxLAotICAgIDExMiwxMTQsMjM4LDMsMCwwLDExNSwyLDAsMCwwLDAsNywxMjIsMjgsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTUsMTE0LDEwMSwxMTIsMTE0LDk5LDIsMCwwLDAsCi0gICAgMCwwLDAsMCwyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsCi0gICAgMTE1LDQsMCwwLDAsMTAwLDEsMCw4Myw0MSwyLDc4LDg0LDExNCw0LDAsCi0gICAgMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNjEsMCwKLSAgICAwLDAsMjQ3LDMsMCwwLDExNSwyLDAsMCwwLDAsMSwxMjIsMjcsOTUsCi0gICAgNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsCi0gICAgMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsOTksMiwwLDAsMCwwLAotICAgIDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwxMTUsCi0gICAgNCwwLDAsMCwxMDAsMSwwLDgzLDQxLDIsNzgsMTE0LDMyLDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDQxLDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsMTIsMCwwLDAsMTI0LDEsMTI0LDAsCisgICAgMTA2LDAsMTMxLDAsMTA3LDYsODMsMCw0MSwxLDc4LDQxLDEsMTE0LDIzNywwLAorICAgIDAsMCw0MSwyLDExNCwxMDQsMCwwLDAsMjE4LDQsMTA1LDExNiwxMDEsMTA5LDExNCwKKyAgICA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMiwKKyAgICA5NSw5NSw5OSwxMTEsMTEwLDExNiw5NywxMDUsMTEwLDExNSw5NSw5NSwyMzYsMywwLDAsCisgICAgMTE1LDIsMCwwLDAsMCwxLDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsCisgICAgOTcsOTksMTAxLDgwLDk3LDExNiwxMDQsNDYsOTUsOTUsOTksMTExLDExMCwxMTYsOTcsMTA1LAorICAgIDExMCwxMTUsOTUsOTUsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLAorICAgIDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTI0LDAsCisgICAgMTA2LDAsMTA2LDEsMTI0LDEsMTMxLDEsMSwwLDEwMCwwLDgzLDAsNDEsMSwKKyAgICA3OCw0MSwyLDExNCwyMjksMCwwLDAsMTE0LDE2MSwwLDAsMCw0MSwyLDExNCwKKyAgICAxMDQsMCwwLDAsMTE0LDI0NCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwKKyAgICAwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTYxLDAsMCwwLDIzOSwzLDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDIxLDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsODAsOTcsMTE2LDEwNCw0Niw5NywxMTIsMTEyLDEwMSwxMTAsMTAwLDc4LAorICAgIDQxLDE0LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjM1LDAsMCwwLAorICAgIDExNCwyMzAsMCwwLDAsMTE0LDIzNywwLDAsMCwxMTQsMjM5LDAsMCwwLDExNCwKKyAgICAyNDEsMCwwLDAsMTE0LDI0MiwwLDAsMCwxMTQsMjQzLDAsMCwwLDExNCwyNDUsCisgICAgMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI3LDAsMCwKKyAgICAwLDE4NCwzLDAsMCwxMTUsMjIsMCwwLDAsOCw1LDQsMiw4LDYsCisgICAgOCwxMCw4LDQsOCwxMyw4LDMsOCwzLDgsMyw4LDMsOCwzLAorICAgIDExNCwyMjcsMCwwLDAsOTksMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCw2NCwwLDAsMCwxMTUsODAsMCwwLDAsMTAxLAorICAgIDAsOTAsMSwxMDAsMCw5MCwyLDEwMCwxLDEwMCwyLDEzMiwwLDkwLDMsMTAxLAorICAgIDQsMTAwLDMsMTAwLDQsMTMyLDAsMTMxLDEsOTAsNSwxMDAsNSwxMDAsNiwxMzIsCisgICAgMCw5MCw2LDEwMCw3LDEwMCw4LDEzMiwwLDkwLDcsMTAwLDksMTAwLDEwLDEzMiwKKyAgICAwLDkwLDgsMTAwLDExLDEwMCwxMiwxMzIsMCw5MCw5LDEwMCwxMywxMDAsMTQsMTMyLAorICAgIDAsOTAsMTAsMTAwLDE1LDEwMCwxNiwxMzIsMCw5MCwxMSwxMDAsMTcsODMsMCw0MSwKKyAgICAxOCwyMTgsMTYsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsCisgICAgMTAwLDEwMSwxMTQsOTksNCwwLDAsMCwwLDAsMCwwLDQsMCwwLDAsCisgICAgNCwwLDAsMCw2NywwLDAsMCwxMTUsMTgsMCwwLDAsMTE2LDAsMTI0LAorICAgIDEsMTI0LDIsMTI0LDMsMTMxLDMsMTI0LDAsOTUsMSwxMDAsMCw4MywwLDQxLAorICAgIDEsNzgsNDEsMiwxMTQsMjI3LDAsMCwwLDExNCwyMjksMCwwLDAsNDEsNCwKKyAgICAxMTQsMTA0LDAsMCwwLDExNCwxMDIsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwKKyAgICAyMzMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCisgICAgMCwwLDAsMTE0LDE4MiwwLDAsMCwyNDUsMywwLDAsMTE1LDIsMCwwLAorICAgIDAsMCwxLDEyMiwyNSw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMiwKKyAgICAwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMiwwLDAsMCw2NywKKyAgICAwLDAsMCwxMTUsMTIsMCwwLDAsMTAwLDEsMTA2LDAsMTI0LDEsMTA2LDEsCisgICAgMTMxLDEsODMsMCw0MSwyLDEyMiwxMTUsODIsMTAxLDExNiwxMTcsMTE0LDExMCwzMiwxMTQsCisgICAgMTAxLDExMiwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LAorICAgIDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsMTA0LDEwMSwKKyAgICAzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsCisgICAgOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODQsMTA0LDEwMSwzMiwxMDUsMTA5LDExMiwxMTEsCisgICAgMTE0LDExNiwzMiwxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsMzIsMTAwLDExMSwxMDEsCisgICAgMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwNiwxMTEsOTgsMzIsMTA1LDExNiwxMTUsMTAxLDEwOCwxMDIsCisgICAgNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTIyLDI1LDYwLDEwOSwxMTEsCisgICAgMTAwLDExNywxMDgsMTAxLDMyLDEyMywzMywxMTQsMTI1LDMyLDQwLDExMCw5NywxMDksMTAxLDExNSwKKyAgICAxMTIsOTcsOTksMTAxLDQxLDYyLDQxLDIsMTE0LDUwLDAsMCwwLDExNCwxMDksMCwKKyAgICAwLDAsNDEsMiwxMTQsMTY4LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDEwOSwKKyAgICAxMTEsMTAwLDExNywxMDgsMTAxLDk1LDExNCwxMDEsMTEyLDExNCwyNDgsMywwLDAsMTE1LDIsCisgICAgMCwwLDAsMCw3LDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksCisgICAgMTAxLDc2LDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5NSwxMTQsCisgICAgMTAxLDExMiwxMTQsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMSwwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywKKyAgICAwLDQxLDIsNzgsODQsMTE0LDQsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwKKyAgICAwLDExNCwxMjMsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMTE0LDE1NywwLDAsMCwxLDQsMCwwLDExNSwyLAorICAgIDAsMCwwLDAsMSwxMjIsMjcsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LAorICAgIDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTA1LDExNSw5NSwxMTIsOTcsOTksMTA3LDk3LAorICAgIDEwMywxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsMSwKKyAgICAwLDAsMCw2NywwLDAsMCwxMTUsNCwwLDAsMCwxMDAsMSw4MywwLAorICAgIDQxLDIsNzgsMTE0LDMyLDAsMCwwLDExNCw0LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTksMCwwLDAsNCw0LDAsCisgICAgMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI3LDk1LDc4LDk3LDEwOSwxMDEsMTE1LAorICAgIDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywxMDEsMTE2LDk1LDExNSwKKyAgICAxMTEsMTE3LDExNCw5OSwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsNiwwLDAsMCw2NywwLDAsMCwxMTUsMTYsMCwwLDAsMTE2LAorICAgIDAsMTAwLDEsMTAwLDIsMTAwLDMsMTAwLDQsMTAwLDUsMTQxLDQsODMsMCw0MSwKKyAgICA2LDc4LDExNCwzMiwwLDAsMCwxMjIsOCw2MCwxMTUsMTE2LDExNCwxMDUsMTEwLDEwMywKKyAgICA2MiwxMTQsMTg2LDAsMCwwLDg0LDQxLDEsMTE0LDIwMSwwLDAsMCw0MSwxLAorICAgIDExNCwyMDIsMCwwLDAsNDEsMiwxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLAogICAgIDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwyNTAsMywwLDAsMTE1LDIsMCwwLDAsMCwxLAotICAgIDEyMiwyNyw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCw0NiwxMDMsMTAxLDExNiw5NSwxMTUsMTExLDExNywxMTQsOTksMTAxLDk5LDIsMCwKLSAgICAwLDAsMCwwLDAsMCwyLDAsMCwwLDYsMCwwLDAsNjcsMCwKLSAgICAwLDAsMTE1LDIyLDAsMCwwLDExNiwwLDAsMTAwLDEsMCwxMDAsMiwwLAotICAgIDEwMCwzLDAsMTAwLDQsMCwxMDAsNSwwLDEzMSwzLDEsODMsNDEsNiw3OCwKLSAgICAxMTQsMzIsMCwwLDAsMTIyLDgsNjAsMTE1LDExNiwxMTQsMTA1LDExMCwxMDMsNjIsMTE0LAotICAgIDE5MCwwLDAsMCwxMTQsMjA1LDAsMCwwLDg0LDQxLDEsMTE0LDIwNiwwLDAsCi0gICAgMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LDEyOCwwLDAsMCwxMTQsNCwwLAotICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwKLSAgICAwLDI1MywzLDAsMCwxMTUsMiwwLDAsMCwwLDEsMTIyLDI1LDk1LDc4LAotICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwMywKLSAgICAxMDEsMTE2LDk1LDk5LDExMSwxMDAsMTAxLDk5LDIsMCwwLDAsMCwwLDAsMCwKLSAgICAyLDAsMCwwLDEsMCwwLDAsNjcsMCwwLDAsMTE1LDQsMCwwLAotICAgIDAsMTAwLDEsMCw4Myw0MSwyLDEyMiw0Miw4NSwxMTUsMTAxLDMyLDEwMCwxMDEsMTAyLAotICAgIDk3LDExNywxMDgsMTE2LDMyLDExNSwxMDEsMTA5LDk3LDExMCwxMTYsMTA1LDk5LDExNSwzMiwxMDIsCi0gICAgMTExLDExNCwzMiwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwzMiw5OSwxMTQsMTAxLDk3LDExNiwxMDUsCi0gICAgMTExLDExMCw0Niw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsCi0gICAgMTE0LDE2NiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCi0gICAgNiwwLDAsMCwxMTQsMTg3LDAsMCwwLDAsNCwwLDAsMTE1LDAsMCwKLSAgICAwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwxMDksMTExLDEwMCwxMTcsCi0gICAgMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwxLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLDEwMCwwLDAsODMsCi0gICAgNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMTAsMCwwLDAsMTE0LAotICAgIDE5MSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwKLSAgICAwLDAsMCwxMTQsMTkyLDAsMCwwLDMsNCwwLDAsMTE1LDIsMCwwLAotICAgIDAsMCwxLDEyMiwyOCw5NSw3OCw5NywxMDksMTAxLDExNSwxMTIsOTcsOTksMTAxLDc2LAotICAgIDExMSw5NywxMDAsMTAxLDExNCw0NiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LAotICAgIDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwwLDAsMCwzLDAsCi0gICAgMCwwLDY3LDAsMCwwLDExNSwzMiwwLDAsMCwxMTYsMCwwLDEwMCwxLAotICAgIDAsMTI0LDAsMCwxMDYsMSwwLDEzMSwyLDAsMSwxMTYsMiwwLDEwNiwzLAotICAgIDAsMTI0LDAsMCwxMjQsMSwwLDEzMSwyLDAsODMsNDEsMiwxMjIsOTgsNzYsCi0gICAgMTExLDk3LDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwKLSAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLAotICAgIDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwKLSAgICAzMiwxMDEsMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsCi0gICAgMTEwLDExNSwxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwxMjIsMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsCi0gICAgMTE3LDEwOCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsCi0gICAgMTEyLDk3LDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTA3LDAsMCwwLAotICAgIDExNCwyMzMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMTkzLDAsMCwwLDQxLAotICAgIDIsMTE0LDExMCwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTQsMCwwLDAsNiwKLSAgICA0LDAsMCwxMTUsNCwwLDAsMCwwLDcsMTYsMSwxMjIsMjgsOTUsNzgsCisgICAgMTE0LDE4NCwwLDAsMCw3LDQsMCwwLDExNSwyLDAsMCwwLDAsMSwKKyAgICAxMjIsMjUsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLAorICAgIDEwMSwxMTQsNDYsMTAzLDEwMSwxMTYsOTUsOTksMTExLDEwMCwxMDEsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDIsMCwwLDAsMSwwLDAsMCw2NywwLDAsMCwKKyAgICAxMTUsNCwwLDAsMCwxMDAsMSw4MywwLDQxLDIsMTIyLDQyLDg1LDExNSwxMDEsCisgICAgMzIsMTAwLDEwMSwxMDIsOTcsMTE3LDEwOCwxMTYsMzIsMTE1LDEwMSwxMDksOTcsMTEwLDExNiwxMDUsCisgICAgOTksMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDMyLDk5LDExNCwKKyAgICAxMDEsOTcsMTE2LDEwNSwxMTEsMTEwLDQ2LDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxODMsMCwwLDAsMTAsNCwwLAorICAgIDAsMTE1LDAsMCwwLDAsMTIyLDMwLDk1LDc4LDk3LDEwOSwxMDEsMTE1LDExMiw5NywKKyAgICA5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDk5LDExNCwxMDEsOTcsMTE2LDEwMSw5NSwKKyAgICAxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5OSwyLDAsMCwwLDAsMCwwLDAsMiwKKyAgICAwLDAsMCwxLDAsMCwwLDY3LDAsMCwwLDExNSw0LDAsMCwwLAorICAgIDEwMCwwLDgzLDAsNDEsMSw3OCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxMDQsCisgICAgMCwwLDAsMTE0LDE4NywwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMTg4LDAsMCwwLDEzLDQsMCwwLAorICAgIDExNSwyLDAsMCwwLDAsMSwxMjIsMjgsOTUsNzgsOTcsMTA5LDEwMSwxMTUsMTEyLAorICAgIDk3LDk5LDEwMSw3NiwxMTEsOTcsMTAwLDEwMSwxMTQsNDYsMTAxLDEyMCwxMDEsOTksOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTksMiwwLDAsMCwwLDAsMCwwLDIsMCwKKyAgICAwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMjYsMCwwLDAsMTE2LAorICAgIDAsMTA2LDEsMTAwLDEsMTI0LDAsMTA2LDIsMTMxLDIsMSwwLDExNiwwLDEwNiwKKyAgICAzLDEyNCwwLDEyNCwxLDEzMSwyLDgzLDAsNDEsMiwxMjIsOTgsNzYsMTExLDk3LAorICAgIDEwMCwzMiw5NywzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwzMiwxMDksMTExLAorICAgIDEwMCwxMTcsMTA4LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiw4NCwKKyAgICAxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LDMyLDEwMCwxMDEsCisgICAgMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LDEwMSwzMiwxMDEsCisgICAgMTIwLDEwMSw5OSw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MCw0MSwzMiwxMDUsMTEwLDExNSwKKyAgICAxMTYsMTAxLDk3LDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMjIsCisgICAgMzgsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwKKyAgICAxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDEwMCwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTEyLDk3LAorICAgIDExNiwxMDQsMzIsMTIzLDMzLDExNCwxMjUsNDEsNCwxMTQsMTE4LDAsMCwwLDExNCwxMzMsCisgICAgMCwwLDAsMTE0LDIyOSwwLDAsMCwxMTQsMTg5LDAsMCwwLDQxLDIsMTE0LAorICAgIDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwxOTAsMCwwLDAsMTYsNCwwLAorICAgIDAsMTE1LDYsMCwwLDAsMCw3LDYsMSw4LDEsMTIyLDI4LDk1LDc4LAogICAgIDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNzYsMTExLDk3LDEwMCwxMDEsMTE0LDQ2LDEwOCwKLSAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMTQsMCwKLSAgICAwLDAsMTE0LDExMywwLDAsMCwxMTQsMTE1LDAsMCwwLDExNCwxODYsMCwwLAotICAgIDAsMTE0LDE4NCwwLDAsMCwxMTQsMjQ5LDAsMCwwLDExNCwxNjEsMCwwLDAsCi0gICAgMTE0LDIwMywwLDAsMCwxMTQsMTg4LDAsMCwwLDExNCwxODcsMCwwLDAsMTE0LAotICAgIDE5MiwwLDAsMCwxMTQsMTk0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDgsMCwKLSAgICAwLDAsMjM0LDMsMCwwLDExNSwxNiwwLDAsMCwxMiwxLDEyLDMsMTgsCi0gICAgOSwxMiwzLDEyLDMsMTIsMywxMiwzLDEyLDMsMTE0LDI0OCwwLDAsMCwKLSAgICA5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCw1LDAsMCwKLSAgICAwLDY0LDAsMCwwLDExNSwxNjAsMCwwLDAsMTAxLDAsMCw5MCwxLDAsCi0gICAgMTAwLDAsMCw5MCwyLDAsMTAwLDEsMCw5MCwzLDAsMTAxLDQsMCwxMDAsCi0gICAgMiwwLDEwMCwzLDAsMTMyLDAsMCwxMzEsMSwwLDkwLDUsMCwxMDEsNCwKLSAgICAwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDEzMSwxLDAsOTAsNiwwLAotICAgIDEwMSw0LDAsMTAwLDYsMCwxMDAsNywwLDEzMiwwLDAsMTMxLDEsMCw5MCwKLSAgICA3LDAsMTAxLDQsMCwxMDAsOCwwLDEwMCw5LDAsMTMyLDAsMCwxMzEsMSwKLSAgICAwLDkwLDgsMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxMSwwLDEwMCwxMiwwLAotICAgIDEzMiwxLDAsMTMxLDEsMCw5MCw5LDAsMTAxLDQsMCwxMDAsMTAsMCwxMDAsCi0gICAgMTAsMCwxMDAsMTMsMCwxMDAsMTQsMCwxMzIsMiwwLDEzMSwxLDAsOTAsMTAsCi0gICAgMCwxMDEsNCwwLDEwMCwxMCwwLDEwMCwxNSwwLDEwMCwxNiwwLDEzMiwxLDAsCi0gICAgMTMxLDEsMCw5MCwxMSwwLDEwMCwxMCwwLDgzLDQxLDE3LDIxOCwxMCw4MCw5NywKLSAgICAxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTIyLDYyLDc3LDEwMSwxMTYsOTcsMzIsMTEyLAotICAgIDk3LDExNiwxMDQsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMzIsMTAyLDExMSwxMTQsMzIsMTE1LAotICAgIDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsOTcsMTEwLDEwMCwzMiwxMTIsOTcsOTksMTA3LAotICAgIDk3LDEwMywxMDEsMzIsOTUsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTUsMzIsOTcsMTE2LDExNiwKLSAgICAxMTQsMTA1LDk4LDExNywxMTYsMTAxLDExNSw0Niw5OSwxLDAsMCwwLDAsMCwwLAotICAgIDAsMiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSw1NSwwLAotICAgIDAsMCwxMjAsNDgsMCwxMTYsMCwwLDEwNiwxLDAsMTA2LDIsMCwxMzEsMCwKLSAgICAwLDY4LDkzLDMxLDAsMTI1LDEsMCwxMTYsMywwLDEyNCwxLDAsMTAwLDEsCi0gICAgMCwxMzEsMiwwLDExNCwxNiwwLDEyNCwxLDAsMTA2LDQsMCwxMzEsMCwwLAotICAgIDEsMTEzLDE2LDAsODcsMTAwLDIsMCw4Myw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LAotICAgIDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLAotICAgIDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLAotICAgIDMyLDExMSwxMTAsMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwKLSAgICAxMTQsMTIxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LAotICAgIDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwKLSAgICAxMDgsMTAxLDEwOSwxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywKLSAgICAxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsCi0gICAgMTE0LDgsMCwwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwKLSAgICAxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywKLSAgICAxMDEsMTE1LDExNCwxMTcsMCwwLDAsMTE0LDI1MSwwLDAsMCw0MSwyLDExNCwxNzIsCi0gICAgMCwwLDAsMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsCi0gICAgMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDI1MSwwLDAsMCwyMywKLSAgICA0LDAsMCwxMTUsNiwwLDAsMCwwLDQsMjIsMSwxNSwxLDEyMiwyOCwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LAotICAgIDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwKLSAgICAwLDAsMCwwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTA3LDAsMCwwLDExNiwwLDAsMTA2LDEsMCwxMDAsMSwwLDEwNywKLSAgICA5LDAsMTE0LDQxLDAsMTE2LDAsMCwxMDYsMSwwLDEyLDExNCw0MSwwLDExNiwKLSAgICAyLDAsMTA2LDMsMCwxMDAsMiwwLDExNiw0LDAsMTMxLDIsMCwxLDEyMCwKLSAgICA1OSwwLDExNiwwLDAsMTA2LDEsMCw2OCw5Myw0NCwwLDEyNSwyLDAsMTIxLAotICAgIDE0LDAsMTI0LDIsMCwxMjQsMSwwLDEzMSwxLDAsODMsODcsMTEzLDUxLDAsCi0gICAgNCwxMTYsNSwwLDEwNywxMCwwLDExNCw5NCwwLDEsMSwxLDExOSw1MSwwLAotICAgIDg5LDExMyw1MSwwLDg4LDExMyw1MSwwLDg3LDEwMCwxLDAsODMsMTAwLDEsMCwKLSAgICA4Myw0MSwzLDEyMiwxMTMsODMsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTE1LDEwMSwxMTMsMTE3LAotICAgIDEwMSwxMTAsOTksMTAxLDMyLDExMSwxMDIsMzIsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDIsMTExLAotICAgIDExNCwzMiw5NywzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwzOSwKLSAgICAxMTIsOTcsMTE2LDEwNCwzOSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICA3MywxMDIsMzIsMzksMTA0LDExMSwxMTEsMTA3LDExNSwzOSwzMiwxMDUsMTE1LDMyLDEwMiw5NywKLSAgICAxMDgsMTE1LDEwMSwzMiwxMTYsMTA0LDEwMSwxMTAsMzIsMTE3LDExNSwxMDEsMzIsMTE1LDEyMSwxMTUsCi0gICAgNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSw0NiwxMCwxMCwzMiwzMiwKLSAgICAzMiwzMiwzMiwzMiwzMiwzMiw3OCwxMjIsMjMsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwKLSAgICAxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDExNSwzMiwxMDUsMTE1LDMyLDEwMSwxMDksMTEyLDExNiwxMjEsCi0gICAgNDEsNiwxMTQsOCwwLDAsMCwyMTgsMTAsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwxMTQsNjIsMCwwLDAsMTE0LDYzLDAsMCwwLDExNCwxMjcsMCwKLSAgICAwLDAsMTE0LDEwOSwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsMTE0LDM3LAotICAgIDAsMCwwLDkwLDQsMTA0LDExMSwxMTEsMTA3LDExNCw0LDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKLSAgICAxMDQsMTExLDExMSwxMDcsMTE1LDMxLDQsMCwwLDExNSwxNiwwLDAsMCwwLDcsCi0gICAgMjUsMSwxNiwxLDE2LDEsMywxLDE0LDEsMTMsMSwxMiwyLDEyMiwyMiwKLSAgICA4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTEyLDk3LDExNiwxMDQsCi0gICAgOTUsMTA0LDExMSwxMTEsMTA3LDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywKLSAgICAwLDAsMCwxOSwwLDAsMCw2NywwLDAsMCwxMTUsMTIzLDAsMCwwLAotICAgIDEyNCwxLDAsMTAwLDEsMCwxMDcsMiwwLDExNCw1MywwLDEyMSwxNiwwLDExNiwKLSAgICAwLDAsMTA2LDEsMCwxMzEsMCwwLDEyNSwxLDAsODcsMTEwLDIyLDAsNCwKLSAgICAxMTYsMiwwLDEwNywxMCwwLDExNCw1MiwwLDEsMSwxLDEwMCwyLDAsODMsCi0gICAgODksMTEwLDEsMCw4OCwxMjEsMTcsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsCi0gICAgMCwyNSwxMjUsMiwwLDg3LDExMCw0NiwwLDQsMTE2LDUsMCwxMDcsMTAsMCwKLSAgICAxMTQsMTE4LDAsMSwxLDEsMTI0LDAsMCwxMDYsNiwwLDEyNCwxLDAsMTMxLAotICAgIDEsMCwxMjUsMiwwLDEyNCwyLDAsMTE2LDMsMCwxMDYsNCwwLDEyNCwxLAotICAgIDAsNjAsODksMTEwLDEsMCw4OCwxMjQsMiwwLDgzLDQxLDMsMTIyLDIxMCw3MSwKKyAgICAxMTEsOTcsMTAwLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDc4LDQxLDEyLDExNCwxMDksMCwKKyAgICAwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwwLDExNCwxODIsMCwwLAorICAgIDAsMTE0LDE4MCwwLDAsMCwxMTQsMjQ3LDAsMCwwLDExNCwxNTcsMCwwLDAsCisgICAgMTE0LDE5OSwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LAorICAgIDE4OCwwLDAsMCwxMTQsMTkwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDYsMCwKKyAgICAwLDAsMjQ0LDMsMCwwLDExNSwxNiwwLDAsMCw4LDEsOCwzLDEyLAorICAgIDksOCwzLDgsMyw4LDMsOCwzLDgsMywxMTQsMjQ2LDAsMCwwLAorICAgIDk5LDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwwLDQsMCwwLAorICAgIDAsNjQsMCwwLDAsMTE1LDEwNiwwLDAsMCwxMDEsMCw5MCwxLDEwMCwwLAorICAgIDkwLDIsMTAwLDEsOTAsMywxMDEsNCwxMDAsMiwxMDAsMywxMzIsMCwxMzEsMSwKKyAgICA5MCw1LDEwMSw0LDEwMCw0LDEwMCw1LDEzMiwwLDEzMSwxLDkwLDYsMTAxLDQsCisgICAgMTAwLDYsMTAwLDcsMTMyLDAsMTMxLDEsOTAsNywxMDEsNCwxMDAsOCwxMDAsOSwKKyAgICAxMzIsMCwxMzEsMSw5MCw4LDEwMSw0LDEwMCwxNywxMDAsMTEsMTAwLDEyLDEzMiwxLAorICAgIDEzMSwxLDkwLDksMTAxLDQsMTAwLDE4LDEwMCwxMywxMDAsMTQsMTMyLDEsMTMxLDEsCisgICAgOTAsMTAsMTAxLDQsMTAwLDE5LDEwMCwxNSwxMDAsMTYsMTMyLDEsMTMxLDEsOTAsMTEsCisgICAgMTAwLDEwLDgzLDAsNDEsMjAsMjE4LDEwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsCisgICAgMTAxLDExNCwxMjIsNjIsNzcsMTAxLDExNiw5NywzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDIsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCwzMiwxMDIsMTExLDExNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDEwNCwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwzMiw5NSw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5NSwzMiw5NywxMTYsMTE2LDExNCwxMDUsOTgsMTE3LDExNiwxMDEsCisgICAgMTE1LDQ2LDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsMCwwLDQsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDQyLDAsMCwwLDEyMCwzNiwxMTYsMCwKKyAgICAxMDYsMSwxMDYsMiwxMzEsMCw2OCwwLDkzLDIyLDEyNSwxLDExNiwzLDEyNCwxLAorICAgIDEwMCwxLDEzMSwyLDExNCwxMiwxMjQsMSwxMDYsNCwxMzEsMCwxLDAsMTEzLDEyLAorICAgIDg3LDAsMTAwLDIsODMsMCw0MSwzLDEyMiwxMjUsNjcsOTcsMTA4LDEwOCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LAorICAgIDk5LDEwNCwxMDEsMTE1LDQwLDQxLDMyLDEwOSwxMDEsMTE2LDEwNCwxMTEsMTAwLDMyLDExMSwxMTAsCisgICAgMzIsOTcsMTA4LDEwOCwzMiwxMTIsOTcsMTE2LDEwNCwzMiwxMDEsMTEwLDExNiwxMTQsMTIxLDMyLAorICAgIDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKKyAgICAxMTUsMTE2LDExMSwxMTQsMTAxLDEwMCwzMiwxMDUsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywKKyAgICAxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LAorICAgIDEwMSwxMTUsMzIsNDAsMTE5LDEwNCwxMDEsMTE0LDEwMSwzMiwxMDUsMTA5LDExMiwxMDgsMTAxLDEwOSwKKyAgICAxMDEsMTEwLDExNiwxMDEsMTAwLDQxLDQ2LDIxOCwxNywxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCwKKyAgICA5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwxMDEsMTE1LDc4LDQxLDUsMTE0LDgsMCwKKyAgICAwLDAsMjE4LDE5LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsNiwxMTgsOTcsMTA4LDExNywxMDEsMTE1LDExNCwKKyAgICAxMTIsMCwwLDAsMTE0LDI0OSwwLDAsMCw0MSwyLDExNCwxNjgsMCwwLDAsCisgICAgMjE4LDYsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsMTE0LDQsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDYsMCwwLDAsMTE0LDI0OSwwLDAsMCwzNCw0LDAsMCwKKyAgICAxMTUsNiwwLDAsMCwwLDQsMTYsMSwxMCwxLDEyMiwyOCw4MCw5NywxMTYsCisgICAgMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsCisgICAgMTE2LDEwMSw5NSw5OSw5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwKKyAgICAwLDAsMywwLDAsMCwxMiwwLDAsMCw2NywwLDAsMCwxMTUsODYsCisgICAgMCwwLDAsMTE2LDAsMTA2LDEsMTAwLDEsMTA3LDksMTE0LDMwLDExNiwwLDEwNiwKKyAgICAxLDEyLDAsMTE0LDMwLDExNiwyLDEwNiwzLDEwMCwyLDExNiw0LDEzMSwyLDEsCisgICAgMCwxMjAsNTAsMTE2LDAsMTA2LDEsNjgsMCw5MywzNiwxMjUsMiwxMjEsOCwxMjQsCisgICAgMiwxMjQsMSwxMzEsMSw4MywwLDQsMCwxMTYsNSwxMDcsMTAsMTE0LDcyLDEsCisgICAgMCwxLDAsMSwwLDExOSwzOCw4OSwwLDExMywzOCw4OCwwLDExMywzOCw4NywKKyAgICAwLDEwMCwxLDgzLDAsMTAwLDEsODMsMCw0MSwzLDEyMiw0Niw4MywxMDEsOTcsCisgICAgMTE0LDk5LDEwNCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwKKyAgICAxMDcsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDk3LDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLAorICAgIDEwMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDQ2LDc4LDEyMiwyMywxMTUsMTIxLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDMyLDEwNSwxMTUsMzIsCisgICAgMTAxLDEwOSwxMTIsMTE2LDEyMSw0MSw2LDExNCw4LDAsMCwwLDIxOCwxMCwxMTIsOTcsCisgICAgMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTE1LDExNCw2MywwLDAsMCwxMTQsNjQsMCwKKyAgICAwLDAsMTE0LDEyMiwwLDAsMCwxMTQsMTAzLDAsMCwwLDQxLDMsMTE0LDE2OCwKKyAgICAwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMDQsMTExLDExMSwxMDcsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDExLDk1LAorICAgIDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsNDIsNCwwLDAsMTE1LDE2LAorICAgIDAsMCwwLDAsMywxOCwxLDEyLDEsMTIsMSwyLDEsOCwxLDE0LAorICAgIDEsMTIsMiwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDk1LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsOTksMiwwLDAsMCwKKyAgICAwLDAsMCwwLDMsMCwwLDAsMTksMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEwMiwwLDAsMCwxMjQsMSwxMDAsMSwxMDcsMiwxMTQsNDIsMTIxLDEyLDExNiwKKyAgICAwLDEwNiwxLDEzMSwwLDEyNSwxLDg3LDAsMTEwLDIwLDQsMCwxMTYsMiwxMDcsCisgICAgMTAsMTE0LDQwLDEsMCwxLDAsMSwwLDEwMCwyLDgzLDAsODgsMCwxMjEsCisgICAgMTQsMTE2LDMsMTA2LDQsMTI0LDEsMjUsMCwxMjUsMiw4NywwLDExMCw0MCw0LAorICAgIDAsMTE2LDUsMTA3LDEwLDExNCw5NiwxLDAsMSwwLDEsMCwxMjQsMCwxMDYsCisgICAgNiwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMTYsMywxMDYsNCwxMjQsMSw2MCwKKyAgICAwLDg5LDAsMTEwLDIsODgsMCwxMjQsMiw4MywwLDQxLDMsMTIyLDIxMCw3MSwKICAgICAxMDEsMTE2LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTEwLDEwMCwxMDEsMTE0LDMyLDEwMiwxMTEsCiAgICAgMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LDMyLDEwMSwxMTAsMTE2LDExNCwxMjEsCiAgICAgMzIsMTAyLDExNCwxMTEsMTA5LDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwKQEAgLTE5OTUsNjExICsxODY4LDU3MCBAQAogICAgIDEwMSwzMiw3OCwxMTEsMTEwLDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwKICAgICAzMiwxMTQsMzIsMCwwLDAsNzgsNDEsNywxMTQsMywwLDAsMCwxMTQsNDcsCiAgICAgMCwwLDAsMjE4LDE3LDcwLDEwNSwxMDgsMTAxLDc4LDExMSwxMTYsNzAsMTExLDExNywxMTAsCi0gICAgMTAwLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsMjUyLDAsMCwwLAotICAgIDExNCwxMzksMCwwLDAsMTE0LDAsMSwwLDAsNDEsMywxMTQsMTcyLDAsMCwKLSAgICAwLDExNCwzNywwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDEwMCw2OSwxMTQsMTE0LDExMSwxMTQsMTE0LDgsMCwwLDAsMTE0LDI1MCwwLDAsMCwKKyAgICAxMTQsMTM1LDAsMCwwLDExNCwyNTQsMCwwLDAsNDEsMywxMTQsMTY4LDAsMCwKKyAgICAwLDExNCwzNywwLDAsMCwxMTQsMjUyLDAsMCwwLDExNCw0LDAsMCwwLAogICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwyMCw5NSwxMTIsOTcsMTE2LAogICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDgsNCwwLDAsMTE1LDIyLDAsMCwwLDAsOCwxMiwxLDMsMSwxNiwKLSAgICAxLDEzLDMsOSwxLDMsMSwxNywxLDEzLDEsMTUsMSwxOCwxLDEyMiwKKyAgICA1NSw0LDAsMCwxMTUsMjIsMCwwLDAsMCw4LDgsMSwyLDEsMTIsCisgICAgMSwxNCwzLDYsMSwyLDEsMTQsMSwxNCwxLDEwLDEsMTYsMSwxMjIsCiAgICAgMzEsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDExMiw5NywxMTYsCiAgICAgMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsOTUsOTksOTcsOTksMTA0LDEwMSwKICAgICA5OSwzLDAsMCwwLDAsMCwwLDAsNiwwLDAsMCwzLDAsMCwKLSAgICAwLDY3LDAsMCwwLDExNSwxMTksMCwwLDAsMTE2LDAsMCwxMjQsMiwwLAotICAgIDEwMCwxLDAsMTMxLDIsMCwxMTQsMzksMCwxMjQsMiwwLDEwNiwxLDAsMTI0LAotICAgIDEsMCwxMzEsMSwwLDkyLDIsMCwxMjUsMywwLDEyNSw0LDAsMTEwLDIxLAotICAgIDAsMTI0LDIsMCwxMDYsMiwwLDEyNCwxLDAsMTMxLDEsMCwxMjUsMywwLAotICAgIDEwMywwLDAsMTI1LDQsMCwxMjQsMywwLDEwMCwwLDAsMTA3LDksMCwxMTQsCi0gICAgODgsMCwxMTYsMywwLDEwNiw0LDAsMTI0LDEsMCwxMjQsMywwLDEzMSwyLAotICAgIDAsODMsMTE2LDMsMCwxMDYsNSwwLDEyNCwxLDAsMTAwLDAsMCwxMzEsMiwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMjQsNSwwLDk1LDYsMCwxMjQsNSwwLAotICAgIDgzLDQxLDIsNzgsMTE0LDEyNiwwLDAsMCw0MSw3LDExNCwxMTcsMCwwLDAsCi0gICAgMTE0LDEyNiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCwxMjMsMCwwLDAsMTE0LAotICAgIDE4MCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCwxNTgsMCwwLDAsNDEsNiwKLSAgICAxMTQsMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDI1NCwwLDAsMCwxMTQsCi0gICAgMTI5LDAsMCwwLDExNCwxMzAsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwyMTgsMTYsOTUsCi0gICAgMTA4LDEwMSwxMDMsOTcsOTksMTIxLDk1LDEwMywxMDEsMTE2LDk1LDExNSwxMTIsMTAxLDk5LDcwLAotICAgIDQsMCwwLDExNSwxOCwwLDAsMCwwLDQsMTUsMSwyNCwyLDE1LDEsCi0gICAgNiwxLDEyLDEsMTYsMSwxOCwxLDksMSwxMjIsMjcsODAsOTcsMTE2LDEwNCwKLSAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwOCwxMDEsMTAzLDk3LDk5LDEyMSw5NSwxMDMsCi0gICAgMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw3OCw5OSw0LDAsMCwwLDAsMCwwLAotICAgIDAsOSwwLDAsMCw1LDAsMCwwLDY3LDAsMCwwLDExNSwyNDMsMCwKLSAgICAwLDAsMTAzLDAsMCwxMjUsNCwwLDEyMCwyMzAsMCwxMjQsMiwwLDY4LDkzLAotICAgIDE5MSwwLDEyNSw1LDAsMTE2LDAsMCwxMjQsNSwwLDExNiwxLDAsMTE2LDIsCi0gICAgMCwxMDIsMiwwLDEzMSwyLDAsMTE1LDQzLDAsMTEzLDEzLDAsMTI0LDAsMCwKLSAgICAxMDYsMywwLDEyNCw1LDAsMTMxLDEsMCwxMjUsNiwwLDEyNCw2LDAsMTAwLAotICAgIDEsMCwxMDcsOSwwLDExNCwxMywwLDExNiw0LDAsMTI0LDYsMCwxMDAsMiwKLSAgICAwLDEzMSwyLDAsMTE0LDEwNiwwLDEyNCw2LDAsMTA2LDUsMCwxMjQsMSwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNywwLDExMCwxOCwwLDEyNCwwLDAsMTA2LAotICAgIDYsMCwxMjQsMSwwLDEyNCw2LDAsMTMxLDIsMCwxMjUsNywwLDEyNCw3LAotICAgIDAsMTAwLDEsMCwxMDcsOCwwLDExNCwxMzksMCwxMTMsMTMsMCwxMjQsNywwLAotICAgIDEwNiw3LDAsMTAwLDEsMCwxMDcsOSwwLDExNCwxNTgsMCwxMjQsNywwLDgzLAotICAgIDEyNCw3LDAsMTA2LDgsMCwxMjUsOCwwLDEyNCw4LDAsMTAwLDEsMCwxMDcsCi0gICAgOCwwLDExNCwxOTEsMCwxMTYsOSwwLDEwMCwzLDAsMTMxLDEsMCwxMzAsMSwKLSAgICAwLDEyNCw0LDAsMTA2LDEwLDAsMTI0LDgsMCwxMzEsMSwwLDEsMTEzLDEzLAotICAgIDAsODcsMTE2LDExLDAsMTA2LDEyLDAsMTI0LDEsMCwxMDAsMSwwLDEzMSwyLAotICAgIDAsMTI1LDcsMCwxMjQsNCwwLDEyNCw3LDAsOTUsOCwwLDEyNCw3LDAsCi0gICAgODMsMTAwLDEsMCw4Myw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwxMTYsMTA0LAotICAgIDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LDEwOSwxMDEsCi0gICAgMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsMzIsMTE2LAotICAgIDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwxMDcsOTcsCi0gICAgMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTgyLDAsMCwwLDEyMiwxOSwKLSAgICAxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQ1LDAsMCwwLDExNCw3MSwwLDAsMCwyMTgsCi0gICAgNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDIsMSwwLDAsMTE0LDExNywwLDAsMCwKLSAgICAxMTQsMTgyLDAsMCwwLDExNCwzLDEsMCwwLDExNCwxMjksMCwwLDAsMTE0LAotICAgIDE1OCwwLDAsMCwxMTQsMTA5LDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LDEyMywKLSAgICAwLDAsMCwxMTQsMTYyLDAsMCwwLDQxLDksMTE0LDE3MiwwLDAsMCwxMTQsCi0gICAgMTI4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTgxLDAsMCwwLDIxOCwxNCwKLSAgICAxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCw5MCw1LAotICAgIDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1NCwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwKLSAgICAxMzAsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksODUsNCwKLSAgICAwLDAsMTE1LDQwLDAsMCwwLDAsNSw2LDEsMTMsMSwyMSwxLDMsCi0gICAgMSwxNSwxLDEyLDEsMTUsMSwyMSwyLDE4LDEsMTIsMSwzLDEsMTUsCi0gICAgMSw0LDEsOSwxLDEyLDEsMTIsNSwxNywyLDE4LDEsOSwxLDEyMiwKLSAgICAyMCw4MCw5NywxMTYsMTA0LDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAzLDEwMSwxMTYsCi0gICAgOTUsMTE1LDExMiwxMDEsOTksOTksNCwwLDAsMCwwLDAsMCwwLDYsMCwKLSAgICAwLDAsNCwwLDAsMCw2NywwLDAsMCwxMTUsMTQwLDAsMCwwLDEyNCwKLSAgICAyLDAsMTAwLDEsMCwxMDcsOCwwLDExNCwyMSwwLDExNiwwLDAsMTA2LDEsCi0gICAgMCwxMjUsMiwwLDEyNCwwLDAsMTA2LDIsMCwxMjQsMSwwLDEyNCwyLDAsCi0gICAgMTI0LDMsMCwxMzEsMywwLDEyNSw0LDAsMTI0LDQsMCwxMDAsMSwwLDEwNywKLSAgICA4LDAsMTE0LDU4LDAsMTAwLDEsMCw4MywxMjQsNCwwLDEwNiwzLDAsMTAwLAotICAgIDEsMCwxMDcsOCwwLDExNCwxMzIsMCwxMjQsNCwwLDEwNiw0LDAsMTI1LDUsCi0gICAgMCwxMjQsNSwwLDExNCwxMjUsMCwxMDAsMiwwLDEyNCw0LDAsOTUsNSwwLAotICAgIDExNiw2LDAsMTI0LDEsMCwxMjQsNSwwLDEyNCwwLDAsMTA2LDIsMCwxMzEsCi0gICAgMywwLDEyNCw0LDAsOTUsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4MywKLSAgICAxMTAsNCwwLDEyNCw0LDAsODMsMTAwLDEsMCw4Myw0MSwzLDEyMiw5OCwxMDIsCi0gICAgMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLAorICAgIDAsNjcsMCwwLDAsMTE1LDgyLDAsMCwwLDExNiwwLDEyNCwyLDEwMCwxLAorICAgIDEzMSwyLDExNCwyNiwxMjQsMiwxMDYsMSwxMjQsMSwxMzEsMSw5MiwyLDEyNSwzLAorICAgIDEyNSw0LDExMCwxNCwxMjQsMiwxMDYsMiwxMjQsMSwxMzEsMSwxMjUsMywxMDMsMCwKKyAgICAxMjUsNCwxMjQsMywxMDAsMCwxMDcsOSwxMTQsNjAsMTE2LDMsMTA2LDQsMTI0LDEsCisgICAgMTI0LDMsMTMxLDIsODMsMCwxMTYsMywxMDYsNSwxMjQsMSwxMDAsMCwxMzEsMiwKKyAgICAxMjUsNSwxMjQsNCwxMjQsNSw5NSw2LDEyNCw1LDgzLDAsNDEsMiw3OCwxMTQsCisgICAgMTIxLDAsMCwwLDQxLDcsMTE0LDExMiwwLDAsMCwxMTQsMTIxLDAsMCwwLAorICAgIDExNCwxNzksMCwwLDAsMTE0LDExOCwwLDAsMCwxMTQsMTc2LDAsMCwwLDExNCwKKyAgICAxNTgsMCwwLDAsMTE0LDE1NCwwLDAsMCw0MSw2LDExNCwxNjgsMCwwLDAsCisgICAgMTE0LDEyMywwLDAsMCwxMTQsMjUyLDAsMCwwLDExNCwxMjQsMCwwLDAsMTE0LAorICAgIDEyNSwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNiw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwKKyAgICAxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzcsNCwwLDAsMTE1LDE4LAorICAgIDAsMCwwLDAsNCwxMCwxLDE2LDIsMTAsMSw0LDEsOCwxLDEyLAorICAgIDEsMTIsMSw2LDEsMTIyLDI3LDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCw0Niw5NSwxMDgsMTAxLDEwMyw5Nyw5OSwxMjEsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwKKyAgICAxMDEsOTksNzgsOTksNCwwLDAsMCwwLDAsMCwwLDksMCwwLDAsCisgICAgNSwwLDAsMCw2NywwLDAsMCwxMTUsMTcwLDAsMCwwLDEwMywwLDEyNSwKKyAgICA0LDEyMCwxNjAsMTI0LDIsNjgsMCw5MywxMzAsMTI1LDUsMTE2LDAsMTI0LDUsMTE2LAorICAgIDEsMTE2LDIsMTAyLDIsMTMxLDIsMTE1LDMwLDExMywxMCwxMjQsMCwxMDYsMywxMjQsCisgICAgNSwxMzEsMSwxMjUsNiwxMjQsNiwxMDAsMSwxMDcsOSwxMTQsMTAsMTE2LDQsMTI0LAorICAgIDYsMTAwLDIsMTMxLDIsMTE0LDcyLDEyNCw2LDEwNiw1LDEyNCwxLDEyNCwzLDEzMSwKKyAgICAyLDEyNSw3LDExMCwxMiwxMjQsMCwxMDYsNiwxMjQsMSwxMjQsNiwxMzEsMiwxMjUsCisgICAgNywxMjQsNywxMDAsMSwxMDcsOCwxMTQsOTQsMTEzLDEwLDEyNCw3LDEwNiw3LDEwMCwKKyAgICAxLDEwNyw5LDExNCwxMDgsMTI0LDcsODMsMCwxMjQsNywxMDYsOCwxMjUsOCwxMjQsCisgICAgOCwxMDAsMSwxMDcsOCwxMTQsMTMwLDExNiw5LDEwMCwzLDEzMSwxLDEzMCwxLDEyNCwKKyAgICA0LDEwNiwxMCwxMjQsOCwxMzEsMSwxLDAsMTEzLDEwLDg3LDAsMTE2LDExLDEwNiwKKyAgICAxMiwxMjQsMSwxMDAsMSwxMzEsMiwxMjUsNywxMjQsNCwxMjQsNyw5NSw4LDEyNCwKKyAgICA3LDgzLDAsMTAwLDEsODMsMCw0MSw0LDEyMiw2Myw3MCwxMDUsMTEwLDEwMCwzMiwKKyAgICAxMTYsMTA0LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLDExMSwxMTQsMzIsMTEwLDk3LAorICAgIDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsOTUsMTEyLDk3LDExNiwxMDQsMzIsMTAyLDExMSwxMTQsCisgICAgMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ3LDExMiw5Nyw5OSwKKyAgICAxMDcsOTcsMTAzLDEwMSwzMiwxMTAsOTcsMTA5LDEwMSw0Niw3OCwxMTQsMTc4LDAsMCwwLAorICAgIDEyMiwxOSwxMTUsMTEyLDEwMSw5OSwzMiwxMDksMTA1LDExNSwxMTUsMTA1LDExMCwxMDMsMzIsMTA4LAorICAgIDExMSw5NywxMDAsMTAxLDExNCw0MSwxMywxMTQsMTQxLDAsMCwwLDExNCw3MywwLDAsCisgICAgMCwyMTgsNSw5OCwxMjEsMTE2LDEwMSwxMTUsMTE0LDAsMSwwLDAsMTE0LDExMiwwLAorICAgIDAsMCwxMTQsMTc4LDAsMCwwLDExNCwxLDEsMCwwLDExNCwxMjQsMCwwLAorICAgIDAsMTE0LDE1NCwwLDAsMCwxMTQsMTAzLDAsMCwwLDExNCwxNDcsMCwwLDAsCisgICAgMTE0LDExOCwwLDAsMCwxMTQsMTU4LDAsMCwwLDQxLDksMTE0LDE2OCwwLDAsCisgICAgMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTc3LDAsMCwwLAorICAgIDIxOCwxNCwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw5NSwxMTIsOTcsMTE2LDEwNCwKKyAgICA5MCw1LDEwMSwxMTAsMTE2LDExNCwxMjEsMTE0LDI1MiwwLDAsMCwxMTQsMTYyLDAsMCwKKyAgICAwLDExNCwxMjUsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsCisgICAgMTE0LDYsMCwwLDAsMjE4LDksOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksCisgICAgOTIsNCwwLDAsMTE1LDQwLDAsMCwwLDAsNSw0LDEsMTAsMSwxNCwKKyAgICAxLDIsMSwxMCwxLDgsMSwxMCwxLDE0LDIsMTIsMSw4LDEsMiwKKyAgICAxLDEwLDEsNCwxLDYsMSw4LDEsOCw1LDE0LDIsMTIsMSw2LAorICAgIDEsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0Niw5NSwxMDMsCisgICAgMTAxLDExNiw5NSwxMTUsMTEyLDEwMSw5OSw5OSw0LDAsMCwwLDAsMCwwLDAsCisgICAgNiwwLDAsMCw0LDAsMCwwLDY3LDAsMCwwLDExNSwxMDQsMCwwLAorICAgIDAsMTI0LDIsMTAwLDEsMTA3LDgsMTE0LDE0LDExNiwwLDEwNiwxLDEyNSwyLDEyNCwKKyAgICAwLDEwNiwyLDEyNCwxLDEyNCwyLDEyNCwzLDEzMSwzLDEyNSw0LDEyNCw0LDEwMCwKKyAgICAxLDEwNyw4LDExNCw0MiwxMDAsMSw4MywwLDExMCw1OCwxMjQsNCwxMDYsMywxMDAsCisgICAgMSwxMDcsOCwxMTQsOTYsMTI0LDQsMTA2LDQsMTI1LDUsMTI0LDUsMTE0LDkwLDEwMCwKKyAgICAyLDEyNCw0LDk1LDUsMTE2LDYsMTI0LDEsMTI0LDUsMTI0LDAsMTA2LDIsMTMxLAorICAgIDMsMTI0LDQsOTUsNCwxMjQsNCw4MywwLDExMywxMDAsMTAwLDEsODMsMCwxMTAsCisgICAgNCwxMjQsNCw4MywwLDEwMCwxLDgzLDAsNDEsMywxMjIsMTQxLDg0LDExNCwxMjEsCisgICAgMzIsMTE2LDExMSwzMiwxMDIsMTA1LDExMCwxMDAsMzIsOTcsMzIsMTE1LDExMiwxMDEsOTksMzIsCisgICAgMTAyLDExMSwxMTQsMzIsMzksMTAyLDExNywxMDgsMTA4LDExMCw5NywxMDksMTAxLDM5LDMyLDExMSwKICAgICAxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsMTExLDExNCwzMiwzOSwxMTIsCi0gICAgOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsCi0gICAgMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwKLSAgICAxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAorICAgIDk3LDExNiwxMDQsMzksNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsODQsCisgICAgMTA0LDEwMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTA1LDExNSwzMiw5OCw5NywxMTUsCisgICAgMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwKKyAgICAxMTEsMTExLDEwNywxMTUsMzIsOTcsMTEwLDEwMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAogICAgIDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LDk5LDk3LDk5LDEwNCwxMDEsCi0gICAgNDYsNzgsOTAsOSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSw0MSw3LDExNCwKLSAgICA4LDAsMCwwLDExNCwzNywwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTI5LAotICAgIDAsMCwwLDExNCwxNTgsMCwwLDAsMTE0LDE2MCwwLDAsMCwxMTQsMjMxLDAsCi0gICAgMCwwLDQxLDYsMTE0LDE3MiwwLDAsMCwxMTQsMTI4LDAsMCwwLDExNCwzNywKLSAgICAwLDAsMCwxMTQsMTgxLDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDUsMSwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAotICAgIDAsMTE0LDE4MiwwLDAsMCwxMTcsNCwwLDAsMTE1LDI2LDAsMCwwLDAsCi0gICAgNCwxMiwxLDksMSwyMSwxLDEyLDEsNCwxLDE1LDEsOSwxLDYsCi0gICAgMyw5LDEsMjQsMSw0LDIsNywyLDEyMiwyMCw4MCw5NywxMTYsMTA0LDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LAotICAgIDMsMCwwLDAsMCwwLDAsMCw0LDAsMCwwLDMsMCwwLDAsCi0gICAgNjcsMCwwLDAsMTE1LDQxLDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMjQsCi0gICAgMSwwLDEyNCwyLDAsMTMxLDIsMCwxMjUsMywwLDEyNCwzLDAsMTAwLDEsCi0gICAgMCwxMDcsOCwwLDExNCwzNCwwLDEwMCwxLDAsODMsMTI0LDMsMCwxMDYsMSwKLSAgICAwLDgzLDQxLDIsMTIyLDE3MCwxMDIsMTA1LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LAotICAgIDEwNCwzMiwxMTEsMTE0LDMyLDM5LDExMiw5NywxMTYsMTA0LDM5LDMyLDk4LDk3LDExNSwxMDEsCi0gICAgMTAwLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDExNSwzMiw5NywxMTAsMTAwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKLSAgICAxMTQsOTUsOTksOTcsOTksMTA0LDEwMSw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiw4NCwxMDQsMTA1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMDUsMTE1LAotICAgIDMyLDEwMCwxMDEsMTEyLDExNCwxMDEsOTksOTcsMTE2LDEwMSwxMDAsNDYsMzIsMzIsODUsMTE1LAotICAgIDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksNDAsNDEsMzIsMTA1LDExMCwKLSAgICAxMTUsMTE2LDEwMSw5NywxMDAsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgNzgsNDEsMiwxMTQsMTgyLDAsMCwwLDExNCwxMjksMCwwLDAsNDEsNCwxMTQsCi0gICAgMTcyLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDM3LDAsMCwwLDExNCwxNjYsCi0gICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMTE0LDE4MywwLDAsMCwxMzksNCwwLDAsMTE1LDgsMCwwLDAsCi0gICAgMCw4LDE4LDEsMTIsMSw0LDEsMTIyLDIyLDgwLDk3LDExNiwxMDQsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMDIsMTA1LDExMCwxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCi0gICAgNDEsMTIsMTE0LDExNCwwLDAsMCwxMTQsMTEzLDAsMCwwLDExNCwxMTUsMCwwLAotICAgIDAsMTE0LDExNiwwLDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyNTEsMCwwLDAsCi0gICAgMTE0LDAsMSwwLDAsMTE0LDIsMSwwLDAsMTE0LDMsMSwwLDAsMTE0LAotICAgIDYsMSwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMTgzLDAsMCwwLDExNCw0LAotICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsCi0gICAgMCwwLDExNCwyNTAsMCwwLDAsMTksNCwwLDAsMTE1LDIyLDAsMCwwLAotICAgIDEyLDIsNiwyLDE4LDgsMTgsMTcsMTgsMjIsMTgsMTUsMywxLDE4LDMxLAotICAgIDMsMSwyMSwyMSwzLDEsMTE0LDI1MCwwLDAsMCw5OSwwLDAsMCwwLAotICAgIDAsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDY0LDAsMCwwLAotICAgIDExNSwxMzMsMCwwLDAsMTAxLDAsMCw5MCwxLDAsMTAwLDAsMCw5MCwyLAotICAgIDAsMTAwLDEsMCw5MCwzLDAsMTAwLDIsMCwxMDAsMywwLDEzMiwwLDAsCi0gICAgOTAsNCwwLDEwMCw0LDAsMTAwLDUsMCwxMzIsMCwwLDkwLDUsMCwxMDEsCi0gICAgNiwwLDkwLDcsMCwxMDAsNiwwLDEwMCw3LDAsMTMyLDAsMCw5MCw4LAotICAgIDAsMTAwLDgsMCwxMDAsOSwwLDEzMiwwLDAsOTAsOSwwLDEwMCwxMCwwLAotICAgIDEwMCwxMSwwLDEwMCwxMiwwLDEzMiwxLDAsOTAsMTAsMCwxMDAsMTMsMCwxMDAsCi0gICAgMTQsMCwxMzIsMCwwLDkwLDExLDAsMTAxLDEyLDAsMTAwLDE1LDAsMTAwLDE2LAotICAgIDAsMTMyLDAsMCwxMzEsMSwwLDkwLDEzLDAsMTAwLDE3LDAsMTAwLDE4LDAsCi0gICAgMTMyLDAsMCw5MCwxNCwwLDEwMCwxMCwwLDgzLDQxLDE5LDIxOCwxMCw3MCwxMDUsCi0gICAgMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsCi0gICAgOTcsMTE1LDEwMSwxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsCi0gICAgMzIsMzIsNzMsMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LAotICAgIDEwNSwxMTYsMTA0LDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwKLSAgICAxMTYsMTAxLDEwOSwzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwKLSAgICAxMTEsMTE0LDMyLDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLAotICAgIDk4LDEwMSwxMDUsMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwKLSAgICAxMDQsMTAxLDEwMCwzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsCi0gICAgMTAxLDk5LDExNiwxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLAotICAgIDExNCwzMiwxMDUsMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsCi0gICAgMTE1LDMyLDk4LDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsCi0gICAgMTAsMTAsMzIsMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsCi0gICAgMCwwLDAsNSwwLDAsMCw3LDAsMCwwLDExNSwxMjIsMCwwLDAsCi0gICAgMTAzLDAsMCwxMjUsMywwLDEyMCw1MiwwLDEyNCwyLDAsNjgsOTMsNDQsMCwKLSAgICA5MiwyLDAsMTM3LDAsMCwxMjUsNCwwLDEyNCwzLDAsMTA2LDAsMCwxMzUsCi0gICAgMCwwLDEwMiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEzNCwwLDAsMTI0LDQsCi0gICAgMCw2OCwxMzEsMSwwLDEzMSwxLDAsMSwxMTMsMTMsMCw4NywxMjQsMywwLAotICAgIDEyNCwwLDAsOTUsMSwwLDEyNCwxLDAsMTEyLDc5LDAsMTAwLDMsMCwxMjQsCi0gICAgMCwwLDk1LDIsMCwxMDAsNiwwLDEyNCwwLDAsOTUsMywwLDExNiw0LAotICAgIDAsMTMxLDAsMCwxMjQsMCwwLDk1LDUsMCwxMTYsNCwwLDEzMSwwLDAsCi0gICAgMTI0LDAsMCw5NSw2LDAsMTAwLDUsMCw4Myw0MSw3LDEyMiwxNTQsNzMsMTEwLAotICAgIDEwNSwxMTYsMTA1LDk3LDEwOCwxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwKLSAgICAxMDEsMzIsMTEyLDk3LDExNiwxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsCi0gICAgMzIsMTExLDExMCwzMiw5NywxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LAotICAgIDEwOCwxMDEsMzIsMTEwLDExNywxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLAotICAgIDMyLDMyLDMyLDMyLDMyLDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwKLSAgICAxMTAsMTE2LDk3LDEwNSwxMTAsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywKLSAgICAxMDAsMTAxLDExNCwzMiw5NywxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwKLSAgICAzMiwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsCi0gICAgOTcsMTAwLDEwMSwxMTQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwKLSAgICAxMTEsMTAzLDExMCwxMDUsMTIyLDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwKLSAgICAwLDIsMCwwLDAsMywwLDAsMCw1MSwwLDAsMCwxMTUsMjcsMCwKLSAgICAwLDAsMTI0LDAsMCw5MywxNywwLDEyNSwxLDAsMTI0LDEsMCwxMzYsMCwKLSAgICAwLDEwMiwyLDAsODYsMSwxMTMsMywwLDEwMCwwLDAsODMsNDEsMSw3OCwKLSAgICAxMTQsNCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCwxMTQsMjI2LDAsMCwKLSAgICAwLDQxLDEsMTE0LDEyOSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMjI4LDAsMCwwLDE2OCw0LDAsMCwxMTUsMiwwLDAsMCwKLSAgICA2LDAsMTIyLDM4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsCi0gICAgOTUsMTA1LDExMCwxMDUsMTE2LDk1LDk1LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2MiwKLSAgICA0Niw2MCwxMDMsMTAxLDExMCwxMDEsMTIwLDExMiwxMTQsNjIsMTE0LDYwLDAsMCwwLDExNCwKLSAgICAzMSwwLDAsMCw3OCwxMTQsODksMCwwLDAsNDEsNywxMTQsMTUxLDAsMCwKLSAgICAwLDIxOCw4LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCwzNywwLDAsMCwKLSAgICAyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsMTA5LDExNiwxMDUsMTA5LDEwMSwyMTgsMywxMTUsCi0gICAgMTAxLDExNiwyMTgsMTEsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksOTcsOTksMTA0LDEwMSwyMTgsCi0gICAgMTksOTUsMTE0LDEwMSwxMDgsOTcsMTIwLDEwMSwxMDAsOTUsMTEyLDk3LDExNiwxMDQsOTUsOTksCi0gICAgOTcsOTksMTA0LDEwMSw0MSw1LDExNCwxMTAsMCwwLDAsMTE0LDM3LDAsMCwwLAotICAgIDIxOCwxNCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDEwMCwxMDEsMTE2LDk3LDEwNSwxMDgsMTE1LAotICAgIDkwLDcsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsMTE0LDE2OCwwLDAsMCwxMTQsNCwKLSAgICAwLDAsMCw0MSwxLDExNCwxMjksMCwwLDAsMTE0LDYsMCwwLDAsMTE0LAotICAgIDE4NiwwLDAsMCwxNjIsNCwwLDAsMTE1LDE2LDAsMCwwLDAsNCw2LAotICAgIDEsMTksMSwzNiwxLDksMiwxNSwxLDksMSwxMiwxLDEyMiwxOSw3MCwKLSAgICAxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDEwNSwxMTAsMTA1LDExNiwKLSAgICA5NSw5NSw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwyLAotICAgIDAsMCwwLDY3LDAsMCwwLDExNSwxMywwLDAsMCwxMDAsMywwLDEyNCwKLSAgICAwLDAsOTUsMCwwLDEwMCwyLDAsODMsNDEsNCwxMjIsMzEsNzMsMTEwLDExOCwKLSAgICA5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDMyLDExNiwxMDQsMTAxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsMzIsMTA5LDExNiwxMDUsMTA5LDEwMSw0NiwxMTQsMzEsMCwwLAotICAgIDAsNzgsMTE0LDg5LDAsMCwwLDQxLDEsMTE0LDksMSwwLDAsNDEsMSwKLSAgICAxMTQsMTEwLDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKLSAgICA2LDAsMCwwLDExNCwyNTEsMCwwLDAsMTc2LDQsMCwwLDExNSwyLDAsCi0gICAgMCwwLDAsMiwxMjIsMjgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKLSAgICA0NiwxMDUsMTEwLDExOCw5NywxMDgsMTA1LDEwMCw5NywxMTYsMTAxLDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsMTE1LDk5LDIsMCwwLDAsMCwwLDAsMCwzLDAsMCwwLDIsCi0gICAgMCwwLDAsNjcsMCwwLDAsMTE1LDU5LDAsMCwwLDEyNCwwLDAsMTA2LAotICAgIDAsMCwxMjQsMSwwLDEzMSwxLDAsMTI1LDIsMCwxMjQsMiwwLDEwMCwxLAotICAgIDAsMTA3LDgsMCwxMTQsMzcsMCwxMDAsMSwwLDEwMywwLDAsMTAyLDIsMCwKLSAgICA4MywxMjQsMiwwLDEwNiwxLDAsMTI0LDIsMCwxMDYsMiwwLDExMiw1NSwwLAotICAgIDEwMywwLDAsMTAyLDIsMCw4Myw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwzMiwxMTYsCi0gICAgMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDMyLAotICAgIDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwKLSAgICAxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwKLSAgICAzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwzMiwzMiwKLSAgICAzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsMTE2LDEwNSwKLSAgICAxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwxMDgsMTExLAotICAgIDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LDExMiwxMTEsCi0gICAgMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwKLSAgICAzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwKLSAgICAxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsCi0gICAgMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDc4LDQxLDMsMTE0LDE4MiwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCwxNTgsMCwKLSAgICAwLDAsNDEsMywxMTQsMTEwLDAsMCwwLDExNCwxMjgsMCwwLDAsMTE0LDE2NiwKLSAgICAwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwxMTQsMTI2LDAsMCwwLDE4Miw0LDAsMCwxMTUsOCwwLDAsMCwKLSAgICAwLDcsMTUsMSwxMiwxLDEwLDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLDEwNSwxMTAsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsCi0gICAgOTksNiwwLDAsMCwwLDAsMCwwLDcsMCwwLDAsNywwLDAsCi0gICAgMCw2NywwLDAsMCwxMTUsNDAsMCwwLDAsMTI0LDEsMCwxMjQsMiwwLAotICAgIDEyNCwzLDAsMTMxLDIsMCwxMjUsNiwwLDExNiwwLDAsMTI0LDIsMCwxMjQsCi0gICAgMywwLDEwMCwxLDAsMTI0LDYsMCwxMDAsMiwwLDEyNCw0LDAsMTMxLDIsCi0gICAgMiw4Myw0MSwzLDc4LDExNCwxMjksMCwwLDAsMTE0LDE1OCwwLDAsMCw0MSwKLSAgICAxLDExNCwxNjksMCwwLDAsNDEsNywxMTQsMTEwLDAsMCwwLDExNCwxNjcsMCwKLSAgICAwLDAsMTE0LDEyOCwwLDAsMCwxMTQsMzcsMCwwLDAsOTAsNCwxMTUsMTA5LAotICAgIDExNSwxMDgsMTE0LDE4MSwwLDAsMCwxMTQsMTI5LDAsMCwwLDExNCw0LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCw2LDEsMCwwLAotICAgIDE5NCw0LDAsMCwxMTUsNiwwLDAsMCwwLDEsMTUsMSwxOCwxLDEyMiwKLSAgICAyMCw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMywxMDEsMTE2LAotICAgIDk1LDExNSwxMTIsMTAxLDk5LDc4LDk5LDMsMCwwLDAsMCwwLDAsMCwxNCwKLSAgICAwLDAsMCwxNSwwLDAsMCw2NywwLDAsMCwxMTUsMjM0LDEsMCwwLAotICAgIDEwMCwxLDAsMTI1LDMsMCwxMjQsMSwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsCi0gICAgMSwwLDEwMCwzLDAsMjUsMTI1LDQsMCwxMjEsMzQsMCwxMTYsMSwwLDEyNCwKLSAgICAwLDAsMTA2LDIsMCwxMTIsNDksMCwxMTYsMywwLDEwNiw0LDAsMTMxLDAsCi0gICAgMCwxMzEsMSwwLDEwNiw1LDAsMTI1LDUsMCw4NywxMTAsMjQsMCw0LDExNiwKLSAgICA2LDAsMTA3LDEwLDAsMTE0LDg1LDAsMSwxLDEsMTAwLDEwLDAsMTI1LDUsCi0gICAgMCw4OSwxMTAsMSwwLDg4LDEyNCw1LDAsMTI0LDAsMCwxMDYsNywwLDEwNywKLSAgICAzLDAsMTE0LDEyMCwwLDEyNCwwLDAsMTA2LDgsMCwxMzEsMCwwLDEsMTI0LAotICAgIDUsMCwxMjQsMCwwLDk1LDcsMCwxMTYsOSwwLDEzMSwwLDAsMTE0LDE1MywKLSAgICAwLDEyNCwwLDAsMTA2LDEwLDAsMTI1LDYsMCwxMjQsNCwwLDEwNiwxMSwwLAotICAgIDEzMSwwLDAsMTI1LDcsMCwxMTAsMTUsMCwxMjQsMCwwLDEwNiwxMiwwLDEyNSwKLSAgICA2LDAsMTI0LDQsMCwxMjUsNywwLDEyNCw3LDAsMTI0LDYsMCwxMDcsNiwKLSAgICAwLDExNCw0NSwxLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLAotICAgIDEzMSwyLDAsMTI1LDgsMCwxMjAsMTAwLDAsMTI0LDAsMCwxMDYsMTQsMCw2OCwKLSAgICA5Myw3NywwLDkyLDIsMCwxMjUsOSwwLDEyNSwxMCwwLDEwMCw1LDAsMTI0LAotICAgIDksMCwyMywxMjUsMTEsMCwxMTYsMTMsMCwxMjQsOCwwLDEyNCwxMSwwLDEzMSwKLSAgICAyLDAsMTI1LDEyLDAsMTE2LDE1LDAsMTI0LDEyLDAsMTMxLDEsMCwxMTQsMjA4LAotICAgIDAsMTI0LDAsMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLAotICAgIDEyNCw4LDAsMTAzLDEsMCwxMjQsMiwwLDEzMSw1LDAsODMsMTEzLDIwOCwwLAotICAgIDg3LDExNiwxNywwLDEyNCw4LDAsMTMxLDEsMCwxMjUsMywwLDEyMCwxMjMsMCwKLSAgICAxMjQsMCwwLDEwNiwxNCwwLDY4LDkzLDExMiwwLDkyLDIsMCwxMjUsOSwwLAotICAgIDEyNSwxMCwwLDExNiwxMywwLDEyNCwwLDAsMTA2LDIsMCwxMjQsNCwwLDEyNCwKLSAgICA5LDAsMjMsMTMxLDIsMCwxMjUsMTIsMCwxMTYsMTgsMCwxMDAsNiwwLDEwNiwKLSAgICAxOSwwLDEyNCwxMiwwLDEzMSwxLDAsMTAwLDcsMCwxMDAsMywwLDEzMSwxLAotICAgIDEsMSwxMjQsNywwLDEyNCw5LDAsMjMsMTI0LDYsMCwxMDcsNiwwLDExNCwKLSAgICA1NSwxLDExNiwxNSwwLDEyNCwxMiwwLDEzMSwxLDAsMTE0LDU1LDEsMTI0LDAsCi0gICAgMCwxMDYsMTYsMCwxMjQsMTAsMCwxMjQsMSwwLDEyNCwxMiwwLDEwMCw4LDAsCi0gICAgMTI0LDIsMCwxMzEsNSwwLDgzLDExMyw1NSwxLDg3LDEyNCwzLDAsMTE0LDIzMCwKLSAgICAxLDExNiwxOCwwLDEwMCw5LDAsMTA2LDE5LDAsMTI0LDgsMCwxMzEsMSwwLAotICAgIDEzMSwxLDAsMSwxMTYsMjAsMCwxMDYsMjEsMCwxMjQsMSwwLDEwMCw4LDAsCi0gICAgMTMxLDIsMCwxMjUsMTMsMCwxMjQsOCwwLDEwMywxLDAsMTI0LDEzLDAsOTUsCi0gICAgMjIsMCwxMjQsMTMsMCw4MywxMDAsOCwwLDgzLDQxLDExLDEyMiwxMDIsODQsMTE0LAotICAgIDEyMSwzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMTUsMTEyLDEwMSw5OSwKLSAgICAzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLDEwNSwKLSAgICAxMDEsMTAwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDQ2LDMyLDMyLDgyLDEwMSwxMTYsMTE3LAotICAgIDExNCwxMTAsMTE1LDMyLDExNiwxMDQsMTAxLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDEwOSw5NywxMTYsOTksMTA0LDEwNSwxMTAsMTAzLDMyLDExNSwxMTIsMTAxLDk5LDQ0LDMyLDExMSwKLSAgICAxMTQsMzIsNzgsMTExLDExMCwxMDEsMzIsMTA1LDEwMiwzMiwxMTAsMTExLDExNiwzMiwxMDIsMTExLAotICAgIDExNywxMTAsMTAwLDQ2LDcwLDExNCw2MCwwLDAsMCwxMTQsNTgsMCwwLDAsMTE0LAotICAgIDMxLDAsMCwwLDExNCwxODYsMCwwLDAsMTIyLDksMTE2LDExNCwxMjEsMTA1LDExMCwKLSAgICAxMDMsMzIsMTIzLDEyNSwxMTQsMTAwLDAsMCwwLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsCi0gICAgMTA1LDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLAotICAgIDExMSwxMTQsMzIsMTIzLDEyNSwxMTQsODksMCwwLDAsNDEsMjMsMTE0LDM0LDAsMCwKLSAgICAwLDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgMTE0LDQ3LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCwKLSAgICA5LDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LAotICAgIDEwMSwxMTQsNywwLDAsMCwxMTQsMTIsMSwwLDAsMTE0LDkwLDAsMCwwLAotICAgIDExNCwxMSwxLDAsMCwxMTQsMzAsMCwwLDAsMTE0LDgsMSwwLDAsMTE0LAotICAgIDQ2LDAsMCwwLDExNCw2LDEsMCwwLDExNCw0OCwwLDAsMCwxMTQsMTA3LAotICAgIDAsMCwwLDExNCw0OSwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNjIsMCwKLSAgICAwLDAsMTE0LDE1OCwwLDAsMCw0MSwxNCwxMTQsMTEwLDAsMCwwLDExNCwxMjgsCi0gICAgMCwwLDAsMTE0LDE4MSwwLDAsMCw5MCwxMiwxMDUsMTE1LDk1LDExMCw5NywxMDksCi0gICAgMTAxLDExNSwxMTIsOTcsOTksMTAxLDkwLDExLDExNiw5NywxMDUsMTA4LDk1LDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNCwxMzUsMCwwLDAsOTAsNSw5OSw5Nyw5OSwxMDQsMTAxLDkwLAotICAgIDEyLDk5LDk3LDk5LDEwNCwxMDEsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsOSw5OCwKLSAgICA5NywxMTUsMTAxLDk1LDExMiw5NywxMTYsMTA0LDExNCwyMjYsMCwwLDAsMTE0LDE2NywwLAotICAgIDAsMCw5MCwxMywxMDUsMTEwLDEwNSwxMTYsOTUsMTAyLDEwNSwxMDgsMTAxLDExMCw5NywxMDksCi0gICAgMTAxLDkwLDksMTAyLDExNywxMDgsMTA4LDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjYsMCwwLAorICAgIDQ2LDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDkwLDksMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDEsNywxMTQsOCwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsMTE0LDQsMSwwLDAsMTE0LDEyNCwwLDAsMCwxMTQsMTU0LDAsMCwKKyAgICAwLDExNCwxNTYsMCwwLDAsMTE0LDIyNywwLDAsMCw0MSw2LDExNCwxNjgsMCwKKyAgICAwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDE3NywwLDAsCisgICAgMCwxMTQsMTYyLDAsMCwwLDExNCwzLDEsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNzgsMCwwLDAsMTI0LAorICAgIDQsMCwwLDExNSwyNiwwLDAsMCwwLDYsOCwxLDYsMSwxNCwxLAorICAgIDgsMSw2LDEsMTAsMSw2LDEsNCwzLDYsMSwxNiwxLDYsMiwKKyAgICA2LDIsMTIyLDIwLDgwLDk3LDExNiwxMDQsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwxMDIsCisgICAgMTA1LDExMCwxMDAsOTUsMTE1LDExMiwxMDEsOTksOTksMywwLDAsMCwwLDAsMCwKKyAgICAwLDQsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzAsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTI0LDEsMTI0LDIsMTMxLDIsMTI1LDMsMTI0LDMsCisgICAgMTAwLDEsMTA3LDgsMTE0LDI0LDEwMCwxLDgzLDAsMTI0LDMsMTA2LDEsODMsMCwKKyAgICA0MSwyLDEyMiwxNzAsMTAyLDEwNSwxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwOSwxMTEsMTAwLAorICAgIDExNywxMDgsMTAxLDMyLDExMSwxMTAsMzIsMTE1LDEyMSwxMTUsNDYsMTEyLDk3LDExNiwxMDQsMzIsCisgICAgMTExLDExNCwzMiwzOSwxMTIsOTcsMTE2LDEwNCwzOSwzMiw5OCw5NywxMTUsMTAxLDEwMCwzMiwKKyAgICAxMTEsMTEwLDMyLDExNSwxMjEsMTE1LDQ2LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywKKyAgICAxMTUsMzIsOTcsMTEwLDEwMCwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTUsMTIxLAorICAgIDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDEsMTE0LDk1LAorICAgIDk5LDk3LDk5LDEwNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsMTA1LDExNSwzMiwxMDAsCisgICAgMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLDg1LDExNSwxMDEsMzIsCisgICAgMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLDEwNSwxMTAsMTE1LDExNiwKKyAgICAxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDc4LDQxLAorICAgIDIsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLDQxLDQsMTE0LDE2OCwwLAorICAgIDAsMCwxMTQsMTIzLDAsMCwwLDExNCwzNywwLDAsMCwxMTQsMTYyLDAsMCwKICAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAotICAgIDExNCwxODIsMCwwLDAsMTk5LDQsMCwwLDExNSw2OCwwLDAsMCwwLDMsCi0gICAgNiwxLDE5LDEsMywxLDM0LDEsMTMsMSwxMSwxLDE1LDEsMTAsMSwKLSAgICA5LDIsOSwxLDksMSwxNSwyLDksMSw2LDIsMTIsMSwxOCwxLAotICAgIDIyLDEsMTAsMSwxNSwxLDEyLDEsMzIsNCwxMiwyLDIyLDEsMjIsMSwKLSAgICAyNSwxLDE2LDEsMTIsMSwyOSwxLDYsMSwxOSwxLDE4LDEsMTIsMSwKLSAgICA0LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAyLAotICAgIDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDk5LDEsMCwwLDAsMCwwLDAsCi0gICAgMCw5LDAsMCwwLDEzLDAsMCwwLDY3LDAsMCwwLDExNSwxMSwxLAotICAgIDAsMCwxMjQsMCwwLDEwNiwwLDAsMTI1LDEsMCwxMjEsMzEsMCwxMTYsMSwKLSAgICAwLDEwNiwyLDAsMTI0LDEsMCwxMTIsMzMsMCwxMTYsMSwwLDEwNiwzLDAsCi0gICAgMTMxLDAsMCwxMzEsMSwwLDEyNSwyLDAsODcsMTEwLDMzLDAsNCwxMTYsNCwKLSAgICAwLDExNiw1LDAsMTE2LDYsMCwxMDIsMywwLDEwNywxMCwwLDExNCw3NSwwLAotICAgIDEsMSwxLDEwMywwLDAsMTI1LDIsMCw4OSwxMTAsMSwwLDg4LDExNiw3LAotICAgIDAsMTA2LDgsMCwxMDYsOSwwLDEwMCwxLDAsMTMxLDEsMCwxMTUsMTEyLDAsCi0gICAgMTE2LDEwLDAsMTI0LDIsMCwxMzEsMSwwLDEyNCwwLDAsOTUsMTEsMCwxMTAsCi0gICAgMTExLDAsMTE2LDEwLDAsMTMxLDAsMCwxMjUsMywwLDEyMCw5MCwwLDEyNCwyLAotICAgIDAsNjgsOTMsODIsMCwxMjUsNCwwLDEyNCw0LDAsMTA2LDEyLDAsMTAwLDIsCi0gICAgMCwxMzEsMSwwLDkyLDMsMCwxMjUsNSwwLDEyNSw2LDAsMTI1LDcsMCwKLSAgICAxMjQsNiwwLDExNCwxOTEsMCwxMDAsMywwLDEwNiwxMywwLDEyNCw1LDAsMTI0LAotICAgIDcsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwyLDAsMTI1LDgsMCwxMTAsNiwKLSAgICAwLDEyNCw1LDAsMTI1LDgsMCwxMjQsMywwLDEwNiwxNSwwLDEyNCw4LDAsCi0gICAgMTMxLDEsMCwxLDExMywxMjgsMCw4NywxMjQsMywwLDEyNCwwLDAsOTUsMTEsCi0gICAgMCwxMTYsNywwLDEwNiw4LDAsMTA2LDksMCwxMTYsMTYsMCwxMzEsMSwwLAotICAgIDExNCw3LDEsMTAwLDQsMCwxMDAsNSwwLDEzMiwwLDAsMTI0LDIsMCw2OCwKLSAgICAxMzEsMSwwLDEyNCwwLDAsOTUsMTcsMCwxMDAsNiwwLDgzLDQxLDcsMTIyLAotICAgIDY4LDcwLDEwNSwxMDgsMTA4LDMyLDExNiwxMDQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMzIsCi0gICAgMTExLDEwMiwzMiwxMTIsMTExLDExNiwxMDEsMTEwLDExNiwxMDUsOTcsMTA4LDMyLDEwOSwxMTEsMTAwLAotICAgIDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDExMiw5Nyw5OSwxMDcsOTcsMTAzLDEwMSwKLSAgICAxMTUsMzIsMTAyLDExMSwxMTQsMzIsMTE2LDEwNCwxMDUsMTE1LDMyLDEwMCwxMDUsMTE0LDEwMSw5OSwKLSAgICAxMTYsMTExLDExNCwxMjEsNDYsMTE0LDAsMCwwLDAsMTE0LDYwLDAsMCwwLDEyMiwKLSAgICA1LDEyMywxMjUsNDYsMTIzLDEyNSw5OSwxLDAsMCwwLDAsMCwwLDAsMiwKLSAgICAwLDAsMCwzLDAsMCwwLDgzLDAsMCwwLDExNSwyOCwwLDAsMCwKLSAgICAxMDQsMCwwLDEyNCwwLDAsOTMsMTgsMCwxMjUsMSwwLDEyNCwxLDAsMTA2LAotICAgIDAsMCwxMzEsMCwwLDE0NiwyLDAsMTEzLDYsMCw4MywxMTQsNCwwLDAsCi0gICAgMCw0MSwxLDExNCw5MCwwLDAsMCw0MSwyLDExNCwyNCwwLDAsMCw5MCwKLSAgICAyLDEwMiwxMTAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjUwLDksNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsMTcsNSwwLAotICAgIDAsMTE1LDIsMCwwLDAsOSwwLDEyMiw0MSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCi0gICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDEwMiwxMDUsMTA4LDEwOCw5NSw5OSw5Nyw5OSwxMDQsMTAxLAotICAgIDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMTUsMTAxLDExNiw5OSwxMTEsCi0gICAgMTA5LDExMiw2Miw3OCw0MSwxOCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsCi0gICAgOTAsNywxMDgsMTA1LDExNSwxMTYsMTAwLDEwNSwxMTQsMTE0LDQ3LDAsMCwwLDExNCwxLAotICAgIDEsMCwwLDIxOCwxNSw4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwKLSAgICAxMTQsMTE0LDExMSwxMTQsMjE4LDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksMTE2LAotICAgIDExMSwxMTQsMTIxLDY5LDExNCwxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwwLAotICAgIDAsMCwxMTQsMTAsMCwwLDAsMTE0LDEwLDEsMCwwLDExNCwxMSwxLDAsCi0gICAgMCwxMTQsODUsMCwwLDAsMTE0LDQ5LDAsMCwwLDExNCw5MCwwLDAsMCwKLSAgICAyMTgsMyw5NywxMDAsMTAwLDExNCwxMSwwLDAsMCwxMTQsMTIsMSwwLDAsNDEsCi0gICAgOSwxMTQsMTEwLDAsMCwwLDExNCwzNywwLDAsMCw5MCw4LDk5LDExMSwxMTAsCi0gICAgMTE2LDEwMSwxMTAsMTE2LDExNSw5MCwyMSwxMDgsMTExLDExOSwxMDEsMTE0LDk1LDExNSwxMTcsMTAyLAotICAgIDEwMiwxMDUsMTIwLDk1LDk5LDExMSwxMTAsMTE2LDEwMSwxMTAsMTE2LDExNSwxMTQsMjQ2LDAsMCwKLSAgICAwLDExNCwxMDgsMCwwLDAsMTE0LDIzOCwwLDAsMCwxMTQsMjI2LDAsMCwwLAotICAgIDkwLDgsMTEwLDEwMSwxMTksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDQsMCwwLDAsMTE0LAotICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDE0LDEsMCwwLDI0NCw0LAotICAgIDAsMCwxMTUsMzQsMCwwLDAsMCwyLDksMSwzLDEsMzEsMSwyMiwKLSAgICAzLDExLDMsMTgsMSwxOCw3LDksMSwxMywxLDI0LDEsNiwxLDI3LAotICAgIDIsNiwxLDE3LDEsOSwxLDE4LDEsMTIyLDIyLDcwLDEwNSwxMDgsMTAxLDcwLAotICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsOTUsMTAyLDEwNSwxMDgsMTA4LDk1LDk5LDk3LDk5LDEwNCwKLSAgICAxMDEsOTksMSwwLDAsMCwwLDAsMCwwLDMsMCwwLDAsMywwLAotICAgIDAsMCw3LDAsMCwwLDExNSwyNSwwLDAsMCwxMzUsMCwwLDEzNSwxLAotICAgIDAsMTAyLDIsMCwxMDAsMSwwLDEwMCwyLDAsMTM0LDAsMCwxMjUsMiwwLAotICAgIDEyNCwyLDAsODMsNDEsMyw5NywyMCwxLDAsMCw2NSwzMiw5OSwxMDgsOTcsCi0gICAgMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LDEwNSw5OSwxMDQsMzIsCi0gICAgMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwxMTEsMTE1LDExNywxMTQsCi0gICAgMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwxMTUsMTIxLDExNSw0NiwKLSAgICAxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCi0gICAgMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwzMiwxMTQsMTAxLDExNiwKLSAgICAxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LDExMCw5OSwxMDEsMzIsCi0gICAgMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLDEwMSw5OSwxMDUsMTAyLAotICAgIDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLDk3LDExMCwxMDAsMzIsCi0gICAgMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMTE0LDE3OSwwLDAsMCwxNDgsNCwwLDAsMTE1LDgsMCwwLDAsMCw4LAorICAgIDEyLDEsOCwxLDQsMSwxMjIsMjIsODAsOTcsMTE2LDEwNCw3MCwxMDUsMTEwLDEwMCwKKyAgICAxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw0MSwxLAorICAgIDc4LDQxLDIsNzgsNzgsNDEsMSw3OCw0MSwxMiwxMTQsMTA5LDAsMCwwLDExNCwKKyAgICAxMDgsMCwwLDAsMTE0LDExMCwwLDAsMCwxMTQsMTExLDAsMCwwLDExNCwxODAsCisgICAgMCwwLDAsMTE0LDI0OSwwLDAsMCwxMTQsMjU0LDAsMCwwLDExNCwwLDEsCisgICAgMCwwLDExNCwxLDEsMCwwLDExNCw0LDEsMCwwLDExNCwxNzgsMCwwLAorICAgIDAsMTE0LDE3OSwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwKKyAgICAxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ4LDAsMCwwLDMwLAorICAgIDQsMCwwLDExNSwyMiwwLDAsMCw4LDIsNCwyLDEyLDgsMTIsMTMsCisgICAgMTIsMjIsMTIsMTUsMiwxLDEyLDMxLDIsMSwxMiwyMywyLDEsMTE0LDI0OCwKKyAgICAwLDAsMCw5OSwwLDAsMCwwLDAsMCwwLDAsMCwwLDAsMCwKKyAgICAzLDAsMCwwLDY0LDAsMCwwLDExNSw5MCwwLDAsMCwxMDEsMCw5MCwKKyAgICAxLDEwMCwwLDkwLDIsMTAwLDEsOTAsMywxMDAsMiwxMDAsMywxMzIsMCw5MCwKKyAgICA0LDEwMCw0LDEwMCw1LDEzMiwwLDkwLDUsMTAxLDYsOTAsNywxMDAsNiwxMDAsCisgICAgNywxMzIsMCw5MCw4LDEwMCw4LDEwMCw5LDEzMiwwLDkwLDksMTAwLDE5LDEwMCwKKyAgICAxMSwxMDAsMTIsMTMyLDEsOTAsMTAsMTAwLDEzLDEwMCwxNCwxMzIsMCw5MCwxMSwxMDEsCisgICAgMTIsMTAwLDE1LDEwMCwxNiwxMzIsMCwxMzEsMSw5MCwxMywxMDAsMTcsMTAwLDE4LDEzMiwKKyAgICAwLDkwLDE0LDEwMCwxMCw4MywwLDQxLDIwLDIxOCwxMCw3MCwxMDUsMTA4LDEwMSw3MCwKKyAgICAxMDUsMTEwLDEwMCwxMDEsMTE0LDEyMiwxNzIsNzAsMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwKKyAgICAxMDAsMzIsMTAyLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzMsCisgICAgMTEwLDExNiwxMDEsMTE0LDk3LDk5LDExNiwxMDUsMTExLDExMCwxMTUsMzIsMTE5LDEwNSwxMTYsMTA0LAorICAgIDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTIxLDExNSwxMTYsMTAxLDEwOSwKKyAgICAzMiw5NywxMTQsMTAxLDMyLDk5LDk3LDk5LDEwNCwxMDEsMTAwLDMyLDEwMiwxMTEsMTE0LDMyLAorICAgIDExMiwxMDEsMTE0LDEwMiwxMTEsMTE0LDEwOSw5NywxMTAsOTksMTAxLDQ0LDMyLDk4LDEwMSwxMDUsCisgICAgMTEwLDEwMywxMCwzMiwzMiwzMiwzMiwxMTQsMTAxLDEwMiwxMTQsMTAxLDExNSwxMDQsMTAxLDEwMCwKKyAgICAzMiwxMTksMTA0LDEwMSwxMTAsMzIsMTE2LDEwNCwxMDEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwKKyAgICAxMTEsMTE0LDEyMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDIsMTA1LDExMCwxMDAsMTAxLDExNCwzMiwxMDUsCisgICAgMTE1LDMyLDEwNCw5NywxMTAsMTAwLDEwOCwxMDUsMTEwLDEwMywzMiwxMDQsOTcsMTE1LDMyLDk4LAorICAgIDEwMSwxMDEsMTEwLDMyLDEwOSwxMTEsMTAwLDEwNSwxMDIsMTA1LDEwMSwxMDAsNDYsMTAsMTAsMzIsCisgICAgMzIsMzIsMzIsOTksMiwwLDAsMCwwLDAsMCwwLDUsMCwwLDAsCisgICAgNSwwLDAsMCw3LDAsMCwwLDExNSw4OCwwLDAsMCwxMDMsMCwxMjUsCisgICAgMywxMjAsNDAsMTI0LDIsNjgsMCw5MywzMiw5MiwyLDEzNywwLDEyNSw0LDEyNCwKKyAgICAzLDEwNiwwLDEzNSwwLDEwMiwxLDEwMCwxLDEwMCwyLDEzMiw4LDEyNCw0LDY4LAorICAgIDAsMTMxLDEsMTMxLDEsMSwwLDExMywxMCw4NywwLDEyNCwzLDEyNCwwLDk1LAorICAgIDEsMTI0LDEsMTEyLDU4LDEwMCwzLDEyNCwwLDk1LDIsMTAwLDYsMTI0LDAsOTUsCisgICAgMywxMTYsNCwxMzEsMCwxMjQsMCw5NSw1LDExNiw0LDEzMSwwLDEyNCwwLDk1LAorICAgIDYsMTAwLDUsODMsMCw0MSw3LDEyMiwxNTQsNzMsMTEwLDEwNSwxMTYsMTA1LDk3LDEwOCwKKyAgICAxMDUsMTIyLDEwMSwzMiwxMTksMTA1LDExNiwxMDQsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwKKyAgICAxMDQsMzIsMTE2LDExMSwzMiwxMTUsMTAxLDk3LDExNCw5OSwxMDQsMzIsMTExLDExMCwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDk3LDMyLDExOCw5NywxMTQsMTA1LDk3LDk4LDEwOCwxMDEsMzIsMTEwLDExNywKKyAgICAxMDksOTgsMTAxLDExNCwzMiwxMTEsMTAyLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDUwLDQ1LDExNiwxMTcsMTEyLDEwOCwxMDEsMTE1LDMyLDk5LDExMSwxMTAsMTE2LDk3LDEwNSwxMTAsCisgICAgMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwzMiw5NywKKyAgICAxMTAsMTAwLDMyLDExNiwxMDQsMTAxLDMyLDEwMiwxMDUsMTA4LDEwMSwzMiwxMTUsMTE3LDEwMiwxMDIsCisgICAgMTA1LDEyMCwxMDEsMTE1LDMyLDExNiwxMDQsMTAxLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTAsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMTE0LDEwMSw5OSwxMTEsMTAzLDExMCwxMDUsMTIyLAorICAgIDEwMSwxMTUsNDYsOTksMSwwLDAsMCwwLDAsMCwwLDIsMCwwLDAsCisgICAgMywwLDAsMCw1MSwwLDAsMCwxMTUsMjIsMCwwLDAsMTI0LDAsOTMsCisgICAgMTQsMTI1LDEsMTI0LDEsMTM2LDAsMTAyLDIsODYsMCwxLDAsMTEzLDIsMTAwLAorICAgIDAsODMsMCw0MSwxLDc4LDExNCw0LDAsMCwwLDQxLDIsMTE0LDI0LDAsCisgICAgMCwwLDExNCwyMjIsMCwwLDAsNDEsMSwxMTQsMTI0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyMjQsMCwwLDAsMTc3LDQsMCwKKyAgICAwLDExNSwyLDAsMCwwLDQsMCwxMjIsMzgsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAorICAgIDExMCwxMDAsMTAxLDExNCw0Niw5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsNDYsNjAsMTA4LAorICAgIDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwKKyAgICAxMTQsNjEsMCwwLDAsMTE0LDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCwKKyAgICA0MSw3LDExNCwxNDcsMCwwLDAsMjE4LDgsOTUsMTA4LDExMSw5NywxMDAsMTAxLDExNCwKKyAgICAxMTUsMTE0LDM3LDAsMCwwLDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwxMDksMTE2LAorICAgIDEwNSwxMDksMTAxLDIxOCwzLDExNSwxMDEsMTE2LDIxOCwxMSw5NSwxMTIsOTcsMTE2LDEwNCw5NSwKKyAgICA5OSw5Nyw5OSwxMDQsMTAxLDIxOCwxOSw5NSwxMTQsMTAxLDEwOCw5NywxMjAsMTAxLDEwMCw5NSwKKyAgICAxMTIsOTcsMTE2LDEwNCw5NSw5OSw5Nyw5OSwxMDQsMTAxLDQxLDUsMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsMjE4LDE0LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsOTUsMTAwLAorICAgIDEwMSwxMTYsOTcsMTA1LDEwOCwxMTUsOTAsNywxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSwxMTQsCisgICAgMTY0LDAsMCwwLDExNCw0LDAsMCwwLDQxLDEsMTE0LDEyNCwwLDAsMCwKKyAgICAxMTQsNiwwLDAsMCwxMTQsMTgyLDAsMCwwLDE3MSw0LDAsMCwxMTUsMTYsCisgICAgMCwwLDAsMCw0LDQsMSwxNCwxLDI4LDEsNiwyLDEwLDEsNiwKKyAgICAxLDgsMSwxMjIsMTksNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSw5NSwxMDUsMTEwLDEwNSwxMTYsOTUsOTUsOTksMSwwLDAsMCwwLDAsMCwKKyAgICAwLDEsMCwwLDAsMiwwLDAsMCw2NywwLDAsMCwxMTUsMTAsMCwKKyAgICAwLDAsMTAwLDMsMTI0LDAsOTUsMCwxMDAsMiw4MywwLDQxLDQsMTIyLDMxLAorICAgIDczLDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDAsCisgICAgMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDMyLDEwOSwxMTYsMTA1LDEwOSwxMDEsNDYsMTE0LAorICAgIDMxLDAsMCwwLDc4LDExNCw5MSwwLDAsMCw0MSwxLDExNCw3LDEsMCwKKyAgICAwLDQxLDEsMTE0LDEwNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLAorICAgIDAsMCwxMTQsNiwwLDAsMCwxMTQsMjQ5LDAsMCwwLDE4NSw0LDAsMCwKKyAgICAxMTUsMiwwLDAsMCwwLDIsMTIyLDI4LDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsCisgICAgMTAwLDEwMSwxMTQsNDYsMTA1LDExMCwxMTgsOTcsMTA4LDEwNSwxMDAsOTcsMTE2LDEwMSw5NSw5OSwKKyAgICA5Nyw5OSwxMDQsMTAxLDExNSw5OSwyLDAsMCwwLDAsMCwwLDAsMywwLAorICAgIDAsMCwyLDAsMCwwLDY3LDAsMCwwLDExNSw0MiwwLDAsMCwxMjQsCisgICAgMCwxMDYsMCwxMjQsMSwxMzEsMSwxMjUsMiwxMjQsMiwxMDAsMSwxMDcsOCwxMTQsCisgICAgMjYsMTAwLDEsMTAzLDAsMTAyLDIsODMsMCwxMjQsMiwxMDYsMSwxMjQsMiwxMDYsCisgICAgMiwxMTIsMzgsMTAzLDAsMTAyLDIsODMsMCw0MSwyLDEyMiwxOTcsODQsMTE0LDEyMSwKKyAgICAzMiwxMTYsMTExLDMyLDEwMiwxMDUsMTEwLDEwMCwzMiw5NywzMiwxMDgsMTExLDk3LDEwMCwxMDEsCisgICAgMTE0LDMyLDEwMiwxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsCisgICAgMTA1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDQsMzIsMTExLDExNCwzMiwxMTYsCisgICAgMTA0LDEwMSwzMiwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwxMCwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiwzMiwzMiwxMTIsOTcsOTksMTA3LDk3LDEwMywxMDEsMzIsMTEyLDExMSwxMTQsCisgICAgMTE2LDEwNSwxMTEsMTEwLDExNSw0NiwzMiw4MiwxMDEsMTE2LDExNywxMTQsMTEwLDExNSwzMiw0MCwKKyAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LDMyLDEwOCwxMDUsMTE1LDExNiw0NSwxMTEsMTAyLDQ1LAorICAgIDExMiwxMTEsMTE0LDExNiwxMDUsMTExLDExMCwxMTUsNDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsODQsMTA0LDEwNSwxMTUsMzIsMTA5LDEwMSwxMTYsMTA0LDExMSwxMDAsMzIsCisgICAgMTA1LDExNSwzMiwxMDAsMTAxLDExMiwxMTQsMTAxLDk5LDk3LDExNiwxMDEsMTAwLDQ2LDMyLDMyLAorICAgIDg1LDExNSwxMDEsMzIsMTAyLDEwNSwxMTAsMTAwLDk1LDExNSwxMTIsMTAxLDk5LDQwLDQxLDMyLAorICAgIDEwNSwxMTAsMTE1LDExNiwxMDEsOTcsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLAorICAgIDMyLDMyLDc4LDQxLDMsMTE0LDE3OCwwLDAsMCwxMTQsMTI0LDAsMCwwLDExNCwKKyAgICAxNTQsMCwwLDAsNDEsMywxMTQsMTA0LDAsMCwwLDExNCwxMjMsMCwwLDAsCisgICAgMTE0LDE2MiwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsCisgICAgNiwwLDAsMCwxMTQsMTIxLDAsMCwwLDE5MSw0LDAsMCwxMTUsOCwwLAorICAgIDAsMCwwLDcsMTAsMSw4LDEsOCwxLDEyMiwyMiw3MCwxMDUsMTA4LDEwMSwKKyAgICA3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwxMDgsMTExLDk3LDEwMCwKKyAgICAxMDEsMTE0LDk5LDYsMCwwLDAsMCwwLDAsMCw3LDAsMCwwLDYsCisgICAgMCwwLDAsNjcsMCwwLDAsMTE1LDI2LDAsMCwwLDEyNCwxLDEyNCwyLAorICAgIDEyNCwzLDEzMSwyLDEyNSw2LDExNiwwLDEyNCwyLDEyNCwzLDEyNCw2LDEyNCw0LAorICAgIDEwMCwxLDE0MSw0LDgzLDAsNDEsMiw3OCw0MSwyLDExNCwxMjQsMCwwLDAsCisgICAgMTE0LDE1NCwwLDAsMCw0MSwxLDExNCwxNjUsMCwwLDAsNDEsNywxMTQsMTA0LAorICAgIDAsMCwwLDExNCwxNjMsMCwwLDAsMTE0LDEyMywwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsOTAsNCwxMTUsMTA5LDExNSwxMDgsMTE0LDE3NywwLDAsMCwxMTQsMTI0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwKKyAgICAwLDExNCw0LDEsMCwwLDIwMyw0LDAsMCwxMTUsNiwwLDAsMCwwLAorICAgIDEsMTAsMSw4LDEsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsOTUsMTAzLDEwMSwxMTYsOTUsMTE1LDExMiwxMDEsOTksNzgsOTksMywwLDAsCisgICAgMCwwLDAsMCwwLDE0LDAsMCwwLDE1LDAsMCwwLDY3LDAsMCwKKyAgICAwLDExNSw5OCwxLDAsMCwxMDAsMSwxMjUsMywxMjQsMSwxMDYsMCwxMDAsMiwKKyAgICAxMzEsMSwxMDAsMywyNSwwLDEyNSw0LDEyMSwyNCwxMTYsMSwxMjQsMCwxMDYsMiwKKyAgICAxMTIsMzQsMTE2LDMsMTA2LDQsMTMxLDAsMTMxLDEsMTA2LDUsMTI1LDUsODcsMCwKKyAgICAxMTAsMjQsNCwwLDExNiw2LDEwNywxMCwxMTQsNjYsMSwwLDEsMCwxLDAsCisgICAgMTAwLDEwLDEyNSw1LDg5LDAsMTEwLDIsODgsMCwxMjQsNSwxMjQsMCwxMDYsNywKKyAgICAxMDcsMywxMTQsOTIsMTI0LDAsMTA2LDgsMTMxLDAsMSwwLDEyNCw1LDEyNCwwLAorICAgIDk1LDcsMTE2LDksMTMxLDAsMTE0LDExNCwxMjQsMCwxMDYsMTAsMTI1LDYsMTI0LDQsCisgICAgMTA2LDExLDEzMSwwLDEyNSw3LDExMCwxMCwxMjQsMCwxMDYsMTIsMTI1LDYsMTI0LDQsCisgICAgMTI1LDcsMTI0LDcsMTI0LDYsMTA3LDYsMTE0LDIxOCwxMTYsMTMsMTI0LDAsMTA2LDIsCisgICAgMTI0LDQsMTMxLDIsMTI1LDgsMTIwLDcyLDEyNCwwLDEwNiwxNCw2OCwwLDkzLDU0LAorICAgIDkyLDIsMTI1LDksMTI1LDEwLDEwMCw1LDEyNCw5LDIzLDAsMTI1LDExLDExNiwxMywKKyAgICAxMjQsOCwxMjQsMTEsMTMxLDIsMTI1LDEyLDExNiwxNSwxMjQsMTIsMTMxLDEsMTE0LDE1MiwKKyAgICAxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwxMjQsOCwxMDMsMSwxMjQsMiwKKyAgICAxMzEsNSw4MywwLDExMywxNTIsODcsMCwxMTYsMTcsMTI0LDgsMTMxLDEsMTI1LDMsCisgICAgMTIwLDg4LDEyNCwwLDEwNiwxNCw2OCwwLDkzLDc4LDkyLDIsMTI1LDksMTI1LDEwLAorICAgIDExNiwxMywxMjQsMCwxMDYsMiwxMjQsNCwxMjQsOSwyMywwLDEzMSwyLDEyNSwxMiwKKyAgICAxMTYsMTgsMTA2LDE5LDEwMCw2LDEyNCwxMiwxMDAsMywxMDAsNywxNDEsMywxLDAsCisgICAgMTI0LDcsMTI0LDksMjMsMCwxMjQsNiwxMDcsNiwxMTQsMjI2LDExNiwxNSwxMjQsMTIsCisgICAgMTMxLDEsMTE0LDIyNiwxMjQsMCwxMDYsMTYsMTI0LDEwLDEyNCwxLDEyNCwxMiwxMDAsOCwKKyAgICAxMjQsMiwxMzEsNSw4MywwLDExMywyMjYsODcsMCwxMjQsMywxNDQsMSwxMTQsOTQsCisgICAgMTE2LDE4LDEwNiwxOSwxMDAsOSwxMjQsOCwxMzEsMiwxLDAsMTE2LDE4LDEwNiwyMCwKKyAgICAxMjQsMSwxMDAsOCwxMzEsMiwxMjUsMTMsMTI0LDgsMTAzLDEsMTI0LDEzLDk1LDIxLAorICAgIDEyNCwxMyw4MywwLDEwMCw4LDgzLDAsNDEsMTEsMTIyLDExMSw4NCwxMTQsMTIxLDMyLAorICAgIDExNiwxMTEsMzIsMTAyLDEwNSwxMTAsMTAwLDMyLDk3LDMyLDExNSwxMTIsMTAxLDk5LDMyLDEwMiwKKyAgICAxMTEsMTE0LDMyLDExNiwxMDQsMTAxLDMyLDExNSwxMTIsMTAxLDk5LDEwNSwxMDIsMTA1LDEwMSwxMDAsCisgICAgMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsODIsMTAxLDExNiwxMTcsMTE0LDExMCwxMTUsMzIsMTE2LDEwNCwxMDEsMzIsMTA5LDk3LAorICAgIDExNiw5OSwxMDQsMTA1LDExMCwxMDMsMzIsMTE1LDExMiwxMDEsOTksNDQsMzIsMTExLDExNCwzMiwKKyAgICA3OCwxMTEsMTEwLDEwMSwzMiwxMDUsMTAyLDMyLDExMCwxMTEsMTE2LDMyLDEwMiwxMTEsMTE3LDExMCwKKyAgICAxMDAsNDYsMTAsMzIsMzIsMzIsMzIsMzIsMzIsMzIsMzIsNzAsMTE0LDYxLDAsMCwKKyAgICAwLDExNCw1OSwwLDAsMCwxMTQsMzEsMCwwLDAsMTE0LDE4MiwwLDAsMCwKKyAgICAxMjIsOSwxMTYsMTE0LDEyMSwxMDUsMTEwLDEwMywzMiwxMjMsMTI1LDQxLDEsOTAsOSwxMTgsCisgICAgMTAxLDExNCw5OCwxMTEsMTE1LDEwNSwxMTYsMTIxLDc4LDEyMiwyNSwxMTIsMTExLDExNSwxMTUsMTA1LAorICAgIDk4LDEwOCwxMDEsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LDExMiw5Nyw5OSwxMDEsMzIsMTAyLDExMSwKKyAgICAxMTQsMzIsMTIzLDEyNSwxMTQsOTEsMCwwLDAsNDEsMjIsMTE0LDM0LDAsMCwwLAorICAgIDExNCw0MSwwLDAsMCwxMTQsMzcsMCwwLDAsMTE0LDMsMCwwLDAsMTE0LAorICAgIDQ3LDAsMCwwLDExNCwyMTYsMCwwLDAsMTE0LDQyLDAsMCwwLDExNCw3LAorICAgIDEsMCwwLDIxOCwxMSw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSwKKyAgICAxMTQsNywwLDAsMCwxMTQsMTAsMSwwLDAsMTE0LDkyLDAsMCwwLDExNCwKKyAgICA5LDEsMCwwLDExNCwzMCwwLDAsMCwxMTQsNiwxLDAsMCwxMTQsNDYsCisgICAgMCwwLDAsMTE0LDQsMSwwLDAsMTE0LDQ4LDAsMCwwLDExNCwxMTgsMCwKKyAgICAwLDAsMTE0LDEzMywwLDAsMCwxMTQsMTU4LDAsMCwwLDExNCwxNTQsMCwwLAorICAgIDAsNDEsMTQsMTE0LDEwNCwwLDAsMCwxMTQsMTIzLDAsMCwwLDExNCwxNzcsMCwKKyAgICAwLDAsOTAsMTIsMTA1LDExNSw5NSwxMTAsOTcsMTA5LDEwMSwxMTUsMTEyLDk3LDk5LDEwMSwKKyAgICA5MCwxMSwxMTYsOTcsMTA1LDEwOCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSwxMTQsMTMwLDAsCisgICAgMCwwLDkwLDUsOTksOTcsOTksMTA0LDEwMSw5MCwxMiw5OSw5Nyw5OSwxMDQsMTAxLAorICAgIDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDksOTgsOTcsMTE1LDEwMSw5NSwxMTIsOTcsCisgICAgMTE2LDEwNCwxMTQsMjIyLDAsMCwwLDExNCwxNjMsMCwwLDAsOTAsMTMsMTA1LDExMCwKKyAgICAxMDUsMTE2LDk1LDEwMiwxMDUsMTA4LDEwMSwxMTAsOTcsMTA5LDEwMSw5MCw5LDEwMiwxMTcsMTA4LAorICAgIDEwOCw5NSwxMTIsOTcsMTE2LDEwNCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLAorICAgIDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwxNzgsMCwwLDAsMjA4LAorICAgIDQsMCwwLDExNSw3MCwwLDAsMCwwLDUsNCwxLDE0LDEsMiwxLAorICAgIDI0LDEsMTQsMSwxMCwxLDEwLDEsOCwxLDYsMiw2LDEsNiwxLAorICAgIDEwLDIsNiwxLDQsMiw4LDEsMTIsMSwxNiwxLDgsMSwxMCwxLAorICAgIDgsMSwyNCw0LDgsMiwxNiwxLDE2LDEsMTYsMSwxMiwxLDgsMSwKKyAgICAxMCwxLDEyLDEsNiwxLDEyLDEsMTIsMSw4LDEsNCwxLDEyMiwyMCwKKyAgICA3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDEwMiwxMDUsMTEwLDEwMCw5NSwKKyAgICAxMTUsMTEyLDEwMSw5OSw5OSwxLDAsMCwwLDAsMCwwLDAsOSwwLDAsCisgICAgMCwxMywwLDAsMCw2NywwLDAsMCwxMTUsMTk0LDAsMCwwLDEyNCwwLAorICAgIDEwNiwwLDEyNSwxLDEyMSwyMiwxMTYsMSwxMDYsMiwxMjQsMSwxMTIsMjIsMTE2LDEsCisgICAgMTA2LDMsMTMxLDAsMTMxLDEsMTI1LDIsODcsMCwxMTAsMzAsNCwwLDExNiw0LAorICAgIDExNiw1LDExNiw2LDEwMiwzLDEwNywxMCwxMTQsNTgsMSwwLDEsMCwxLDAsCisgICAgMTAzLDAsMTI1LDIsODksMCwxMTAsMiw4OCwwLDExNiw3LDEwNiw4LDEwNiw5LAorICAgIDEwMCwxLDEzMSwxLDExNSw4NCwxMTYsMTAsMTI0LDIsMTMxLDEsMTI0LDAsOTUsMTEsCisgICAgMTEwLDc4LDExNiwxMCwxMzEsMCwxMjUsMywxMjAsNjQsMTI0LDIsNjgsMCw5Myw1NiwKKyAgICAxMjUsNCwxMjQsNCwxMDYsMTIsMTAwLDIsMTMxLDEsOTIsMywxMjUsNSwxMjUsNiwKKyAgICAxMjUsNywxMjQsNiwxMTQsMTM4LDEwMCwzLDEwNiwxMywxMjQsNSwxMjQsNywxMDYsMTQsCisgICAgMTMxLDAsMTMxLDIsMTI1LDgsMTEwLDQsMTI0LDUsMTI1LDgsMTI0LDMsMTA2LDE1LAorICAgIDEyNCw4LDEzMSwxLDEsMCwxMTMsOTYsODcsMCwxMjQsMywxMjQsMCw5NSwxMSwKKyAgICAxMTYsNywxMDYsOCwxMDYsOSwxMTYsMTYsMTMxLDEsMTE0LDE5MCwxMDAsNCwxMDAsNSwKKyAgICAxMzIsMCwxMjQsMiw2OCwwLDEzMSwxLDEyNCwwLDk1LDE3LDEwMCw2LDgzLDAsCisgICAgNDEsNywxMjIsNjgsNzAsMTA1LDEwOCwxMDgsMzIsMTE2LDEwNCwxMDEsMzIsOTksOTcsOTksCisgICAgMTA0LDEwMSwzMiwxMTEsMTAyLDMyLDExMiwxMTEsMTE2LDEwMSwxMTAsMTE2LDEwNSw5NywxMDgsMzIsCisgICAgMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE1LDMyLDk3LDExMCwxMDAsMzIsMTEyLDk3LDk5LDEwNywKKyAgICA5NywxMDMsMTAxLDExNSwzMiwxMDIsMTExLDExNCwzMiwxMTYsMTA0LDEwNSwxMTUsMzIsMTAwLDEwNSwKKyAgICAxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEyMSw0NiwxMTQsMCwwLDAsMCwxMTQsNjEsMCwKKyAgICAwLDAsMTIyLDUsMTIzLDEyNSw0NiwxMjMsMTI1LDk5LDEsMCwwLDAsMCwwLAorICAgIDAsMCwyLDAsMCwwLDMsMCwwLDAsODMsMCwwLDAsMTE1LDIwLAorICAgIDAsMCwwLDEwNCwwLDEyNCwwLDkzLDEyLDEyNSwxLDEyNCwxLDEwNiwwLDEzMSwKKyAgICAwLDE0NiwyLDExMyw0LDgzLDAsMTE0LDQsMCwwLDAsNDEsMSwxMTQsOTIsCisgICAgMCwwLDAsNDEsMiwxMTQsMjQsMCwwLDAsOTAsMiwxMDIsMTEwLDExNCw0LAorICAgIDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDI1MCw5LDYwLAorICAgIDExNSwxMDEsMTE2LDk5LDExMSwxMDksMTEyLDYyLDI5LDUsMCwwLDExNSwyLDAsMCwKKyAgICAwLDYsMCwxMjIsNDEsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0NiwKKyAgICA5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw0Niw2MCwxMDgsMTExLDk5LAorICAgIDk3LDEwOCwxMTUsNjIsNDYsNjAsMTE1LDEwMSwxMTYsOTksMTExLDEwOSwxMTIsNjIsNzgsNDEsCisgICAgMTgsMTE0LDM3LDAsMCwwLDExNCwzLDAsMCwwLDkwLDcsMTA4LDEwNSwxMTUsCisgICAgMTE2LDEwMCwxMDUsMTE0LDExNCw0NywwLDAsMCwxMTQsMjU1LDAsMCwwLDIxOCwxNSwKKyAgICA4MCwxMDEsMTE0LDEwOSwxMDUsMTE1LDExNSwxMDUsMTExLDExMCw2OSwxMTQsMTE0LDExMSwxMTQsMjE4LAorICAgIDE4LDc4LDExMSwxMTYsNjUsNjgsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDY5LDExNCwKKyAgICAxMTQsMTExLDExNCwxMTQsOCwwLDAsMCwxMTQsOSwwLDAsMCwxMTQsMTAsMCwKKyAgICAwLDAsMTE0LDgsMSwwLDAsMTE0LDksMSwwLDAsMTE0LDg3LDAsMCwKKyAgICAwLDExNCw1MCwwLDAsMCwxMTQsOTIsMCwwLDAsMjE4LDMsOTcsMTAwLDEwMCwKKyAgICAxMTQsMTEsMCwwLDAsMTE0LDEwLDEsMCwwLDQxLDksMTE0LDEwNCwwLDAsCisgICAgMCwxMTQsMzcsMCwwLDAsOTAsOCw5OSwxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsCisgICAgOTAsMjEsMTA4LDExMSwxMTksMTAxLDExNCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCw5NSw5OSwKKyAgICAxMTEsMTEwLDExNiwxMDEsMTEwLDExNiwxMTUsMTE0LDI0NCwwLDAsMCwxMTQsMTAyLDAsMCwKKyAgICAwLDExNCwyMzQsMCwwLDAsMTE0LDIyMiwwLDAsMCw5MCw4LDExMCwxMDEsMTE5LAorICAgIDk1LDExMCw5NywxMDksMTAxLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA2LDAsMCwwLDExNCwxMiwxLDAsMCwwLDUsMCwwLDExNSwzNCwwLAorICAgIDAsMCwwLDIsNiwxLDIsMSwyMiwxLDIwLDMsMTAsMywxMiwxLAorICAgIDEyLDcsNiwxLDEwLDEsMTYsMSw0LDEsMTgsMiw0LDEsMTQsMSwKKyAgICA2LDEsMTIsMSwxMjIsMjIsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0Niw5NSwxMDIsMTA1LDEwOCwxMDgsOTUsOTksOTcsOTksMTA0LDEwMSw5OSwxLDAsMCwKKyAgICAwLDAsMCwwLDAsMywwLDAsMCwzLDAsMCwwLDcsMCwwLAorICAgIDAsMTE1LDE4LDAsMCwwLDEzNSwwLDEzNSwxLDEwMiwyLDEwMCwxLDEwMCwyLAorICAgIDEzMiw4LDEyNSwyLDEyNCwyLDgzLDAsNDEsMyw5NywyMCwxLDAsMCw2NSwKKyAgICAzMiw5OSwxMDgsOTcsMTE1LDExNSwzMiwxMDksMTAxLDExNiwxMDQsMTExLDEwMCwzMiwxMTksMTA0LAorICAgIDEwNSw5OSwxMDQsMzIsMTE0LDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDk5LDEwOCwKKyAgICAxMTEsMTE1LDExNywxMTQsMTAxLDMyLDExNiwxMTEsMzIsMTE3LDExNSwxMDEsMzIsMTExLDExMCwzMiwKKyAgICAxMTUsMTIxLDExNSw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsMTAsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsMzIsMTE5LDEwNCwxMDUsOTksMTA0LDMyLDExOSwxMDUsMTA4LDEwOCwKKyAgICAzMiwxMTQsMTAxLDExNiwxMTcsMTE0LDExMCwzMiw5NywxMTAsMzIsMTA1LDExMCwxMTUsMTE2LDk3LAorICAgIDExMCw5OSwxMDEsMzIsMTE3LDExNSwxMDUsMTEwLDEwMywzMiwxMTYsMTA0LDEwMSwzMiwxMTUsMTEyLAorICAgIDEwMSw5OSwxMDUsMTAyLDEwNSwxMDEsMTAwLDMyLDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDMyLAorICAgIDk3LDExMCwxMDAsMzIsMTE2LDEwNCwxMDEsMzIsMTEyLDk3LDExNiwxMDQsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsOTksOTcsMTA4LDEwOCwxMDEsMTAwLDMyLDExMSwxMTAsMzIsMTE2LAorICAgIDEwNCwxMDEsMzIsOTksMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMzIsMzIsMzIsMzIsNzMsMTAyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAogICAgIDMyLDk5LDk3LDEwOCwxMDgsMTAxLDEwMCwzMiwxMTEsMTEwLDMyLDExNiwxMDQsMTAxLDMyLDk5LAotICAgIDEwOCwxMTEsMTE1LDExNywxMTQsMTAxLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLAotICAgIDMyLDczLDEwMiwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCwzMiw5OSw5NywxMDgsCi0gICAgMTA4LDEwMSwxMDAsMzIsMTExLDExMCwzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMDgsMTExLDExNSwxMTcsCi0gICAgMTE0LDEwMSwzMiwxMDUsMTE1LDMyLDExMCwxMTEsMTE2LDMyLDk3LDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMjEsNDQsMzIsNzMsMTA5LDExMiwxMTEsMTE0LDExNiw2OSwxMTQsMTE0LAotICAgIDExMSwxMTQsMzIsMTA1LDExNSwxMCwzMiwzMiwzMiwzMiwzMiwzMiwzMiwzMiwxMTQsOTcsCi0gICAgMTA1LDExNSwxMDEsMTAwLDQ2LDEwLDEwLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDMyLDk5LAotICAgIDEsMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDQsMCwwLDAsCi0gICAgMTksMCwwLDAsMTE1LDQzLDAsMCwwLDExNiwwLDAsMTI0LDAsMCwxMzEsCi0gICAgMSwwLDExNSwzMCwwLDExNiwxLDAsMTAwLDEsMCwxMDAsMiwwLDEyNCwwLAotICAgIDAsMTMxLDEsMSwxMzAsMSwwLDEzNiwwLDAsMTI0LDAsMCwxMzYsMSwwLAotICAgIDE0MCwxLDAsODMsNDEsMywxMjIsNDUsODAsOTcsMTE2LDEwNCwzMiwxMDQsMTExLDExMSwKLSAgICAxMDcsMzIsMTAyLDExMSwxMTQsMzIsMTA1LDEwOSwxMTIsMTExLDExNCwxMTYsMTA4LDEwNSw5OCw0NiwKLSAgICAxMDksOTcsOTksMTA0LDEwNSwxMTAsMTAxLDExNCwxMjEsNDYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCw0NiwxMjIsMzAsMTExLDExMCwxMDgsMTIxLDMyLDEwMCwxMDUsMTE0LDEwMSwKLSAgICA5OSwxMTYsMTExLDExNCwxMDUsMTAxLDExNSwzMiw5NywxMTQsMTAxLDMyLDExNSwxMTcsMTEyLDExMiwKLSAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDExNCwzNywwLDAsMCw0MSwyLDExNCw0OCwwLDAsCi0gICAgMCwxMTQsMTA5LDAsMCwwLDQxLDEsMTE0LDM3LDAsMCwwLDQxLDIsMTE0LAotICAgIDE3MiwwLDAsMCwxMTQsMTMsMSwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMjE4LDI0LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNyw5NSwxMDIsCi0gICAgMTExLDExNCw5NSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDI5LDUsMCwKLSAgICAwLDExNSw2LDAsMCwwLDAsMiwxMiwxLDE4LDEsMTIyLDU0LDcwLDEwNSwKLSAgICAxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwKLSAgICAxMTEsMTA3LDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCwKLSAgICA5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LAotICAgIDExMCwxMDAsMTAxLDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNzIsMCwwLDAsCi0gICAgMTE0LDEzLDEsMCwwLDExNCwxOSwxLDAsMCwxMTQsNCwwLDAsMCw0MSwKLSAgICAyLDExNCwxNzIsMCwwLDAsMTE0LDEzLDEsMCwwLDExNCw2LDAsMCwwLAotICAgIDIxOCw5LDExMiw5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywxOSw1LDAsMCwxMTUsCi0gICAgNCwwLDAsMCwwLDEwLDIxLDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwKLSAgICAxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsCi0gICAgMCwwLDAsMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDE2LDAsMCwwLDEwMCwxLDAsMTA2LDAsMCwxMjQsMCwKLSAgICAwLDEwNiwxLDAsMTMxLDEsMCw4Myw0MSwyLDc4LDEyMiwxNiw3MCwxMDUsMTA4LAotICAgIDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQwLDEyMywzMywxMTQsMTI1LDQxLDQxLDIsMTE0LAotICAgIDQ5LDAsMCwwLDExNCwzNywwLDAsMCw0MSwxLDExNCwxMTAsMCwwLDAsCisgICAgMTA4LDExMSwxMTUsMTE3LDExNCwxMDEsMzIsMTA1LDExNSwzMiwxMTAsMTExLDExNiwzMiw5NywzMiwKKyAgICAxMDAsMTA1LDExNCwxMDEsOTksMTE2LDExMSwxMTQsMTIxLDQ0LDMyLDczLDEwOSwxMTIsMTExLDExNCwKKyAgICAxMTYsNjksMTE0LDExNCwxMTEsMTE0LDMyLDEwNSwxMTUsMTAsMzIsMzIsMzIsMzIsMzIsMzIsCisgICAgMzIsMzIsMTE0LDk3LDEwNSwxMTUsMTAxLDEwMCw0NiwxMCwxMCwzMiwzMiwzMiwzMiwzMiwKKyAgICAzMiwzMiwzMiw5OSwxLDAsMCwwLDAsMCwwLDAsMSwwLDAsMCwKKyAgICA0LDAsMCwwLDE5LDAsMCwwLDExNSwzNCwwLDAsMCwxMTYsMCwxMjQsCisgICAgMCwxMzEsMSwxMTUsMjAsMTE2LDEsMTAwLDEsMTI0LDAsMTAwLDIsMTQxLDIsMTMwLAorICAgIDEsMTM2LDAsMTI0LDAsMTAyLDEsMTM2LDEsMTU4LDIsMTQyLDAsODMsMCw0MSwKKyAgICAzLDEyMiw0NSw4MCw5NywxMTYsMTA0LDMyLDEwNCwxMTEsMTExLDEwNywzMiwxMDIsMTExLDExNCwKKyAgICAzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwxMDgsMTA1LDk4LDQ2LDEwOSw5Nyw5OSwxMDQsMTA1LAorICAgIDExMCwxMDEsMTE0LDEyMSw0Niw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LAorICAgIDEyMiwzMCwxMTEsMTEwLDEwOCwxMjEsMzIsMTAwLDEwNSwxMTQsMTAxLDk5LDExNiwxMTEsMTE0LDEwNSwKKyAgICAxMDEsMTE1LDMyLDk3LDExNCwxMDEsMzIsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsCisgICAgNDEsMSwxMTQsMzcsMCwwLDAsNDEsMiwxMTQsNDgsMCwwLDAsMTE0LDEwMywKKyAgICAwLDAsMCw0MSwxLDExNCwzNywwLDAsMCw0MSwyLDExNCwxNjgsMCwwLAorICAgIDAsMTE0LDExLDEsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLAorICAgIDIxOCwyNCwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsCisgICAgNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCw0MSw1LDAsMCwxMTUsNiwKKyAgICAwLDAsMCwwLDIsOCwxLDEyLDEsMTIyLDU0LDcwLDEwNSwxMDgsMTAxLDcwLAorICAgIDEwNSwxMTAsMTAwLDEwMSwxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDQ2LAorICAgIDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0NiwxMTIsOTcsMTE2LDEwNCw5NSwxMDQsMTExLAorICAgIDExMSwxMDcsOTUsMTAyLDExMSwxMTQsOTUsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLAorICAgIDExNCwxMTQsNCwwLDAsMCw0MSwzLDExNCwxNjgsMCwwLDAsMTE0LDExLDEsCisgICAgMCwwLDExNCwxNywxLDAsMCwxMTQsNCwwLDAsMCw0MSwyLDExNCwxNjgsCisgICAgMCwwLDAsMTE0LDExLDEsMCwwLDExNCw2LDAsMCwwLDIxOCw5LDExMiwKKyAgICA5NywxMTYsMTA0LDk1LDEwNCwxMTEsMTExLDEwNywzMSw1LDAsMCwxMTUsNCwwLDAsCisgICAgMCwwLDEwLDE0LDYsMTIyLDIwLDcwLDEwNSwxMDgsMTAxLDcwLDEwNSwxMTAsMTAwLDEwMSwKKyAgICAxMTQsNDYsMTEyLDk3LDExNiwxMDQsOTUsMTA0LDExMSwxMTEsMTA3LDk5LDEsMCwwLDAsCisgICAgMCwwLDAsMCwxLDAsMCwwLDIsMCwwLDAsNjcsMCwwLDAsCisgICAgMTE1LDEyLDAsMCwwLDEwMCwxLDEwNiwwLDEyNCwwLDEwNiwxLDEzMSwxLDgzLAorICAgIDAsNDEsMiw3OCwxMjIsMTYsNzAsMTA1LDEwOCwxMDEsNzAsMTA1LDExMCwxMDAsMTAxLDExNCwKKyAgICA0MCwxMjMsMzMsMTE0LDEyNSw0MSw0MSwyLDExNCw1MCwwLDAsMCwxMTQsMzcsMCwKKyAgICAwLDAsNDEsMSwxMTQsMTA0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LAorICAgIDAsMCwwLDExNCw2LDAsMCwwLDExNCwyNDMsMCwwLDAsNDksNSwwLAorICAgIDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsCisgICAgMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsMTEyLDExNCw5NSw5NSw0MSwxLDc4LAorICAgIDQxLDE1LDExNCwxMDksMCwwLDAsMTE0LDEwOCwwLDAsMCwxMTQsMTEwLDAsMCwKKyAgICAwLDExNCwxMTEsMCwwLDAsMTE0LDE4MiwwLDAsMCwxMTQsMjQ5LDAsMCwwLAorICAgIDExNCwxMjcsMCwwLDAsMTE0LDE3OSwwLDAsMCwxMTQsMTIxLDAsMCwwLDExNCwKKyAgICA0LDEsMCwwLDExNCwxNzgsMCwwLDAsMTE0LDEyLDEsMCwwLDExNCwxODAsCisgICAgMCwwLDAsMTE0LDE4LDEsMCwwLDExNCwyNDMsMCwwLDAsMTE0LDQsMCwKKyAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLAorICAgIDAsMTE0LDUsMSwwLDAsMTYyLDQsMCwwLDExNSwyMCwwLDAsMCw4LAorICAgIDcsNCwyLDgsMTQsOCw0LDQsMiw4LDEyLDgsNSwxMCw0OCw4LAorICAgIDMxLDEyLDE4LDExNCw1LDEsMCwwLDk5LDQsMCwwLDAsMCwwLDAsCisgICAgMCw2LDAsMCwwLDExLDAsMCwwLDY3LDAsMCwwLDExNSwxNDYsMCwKKyAgICAwLDAsMTI0LDAsMTA2LDAsMTAwLDEsMTMxLDEsMTI1LDQsMTI0LDAsMTA2LDAsCisgICAgMTAwLDIsMTMxLDEsMTI1LDUsMTI0LDQsMTE1LDY2LDEyNCw1LDExNCwzNiwxMjQsNSwKKyAgICAxMDYsMSwxMjUsNCwxMTAsMzAsMTI0LDIsMTI0LDMsMTA3LDIsMTE0LDU2LDExNiwyLAorICAgIDEyNCwxLDEyNCwyLDEzMSwyLDEyNSw0LDExMCwxMCwxMTYsMywxMjQsMSwxMjQsMiwKKyAgICAxMzEsMiwxMjUsNCwxMjQsNSwxMTUsODQsMTE2LDQsMTI0LDEsMTI0LDIsMTI0LDQsCisgICAgMTAwLDMsMTQxLDMsMTI1LDUsMTIxLDM2LDEyNCw1LDEyNCwwLDEwMCwyLDYwLDAsCisgICAgMTI0LDQsMTI0LDAsMTAwLDEsNjAsMCwxMjQsMiwxMjQsMCwxMDAsNCw2MCwwLAorICAgIDEyNCwzLDEyNCwwLDEwMCw1LDYwLDAsODcsMCwxMTAsMjAsNCwwLDExNiw1LAorICAgIDEwNywxMCwxMTQsMTQwLDEsMCwxLDAsMSwwLDg5LDAsMTEwLDIsODgsMCwKKyAgICAxMDAsMCw4MywwLDQxLDYsNzgsMjE4LDEwLDk1LDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwKKyAgICAxMTQsOTUsOTUsMjE4LDgsOTUsOTUsMTE1LDExMiwxMDEsOTksOTUsOTUsNDEsMSwxMTQsCisgICAgMTI0LDAsMCwwLDkwLDgsOTUsOTUsMTAyLDEwNSwxMDgsMTAxLDk1LDk1LDkwLDEwLAorICAgIDk1LDk1LDk5LDk3LDk5LDEwNCwxMDEsMTAwLDk1LDk1LDQxLDYsMjE4LDMsMTAzLDEwMSwKKyAgICAxMTYsMTE0LDEyNCwwLDAsMCwxMTQsMjIwLDAsMCwwLDExNCwyMTUsMCwwLDAsCisgICAgMTE0LDE2NSwwLDAsMCwyMTgsOSw2OSwxMjAsOTksMTAxLDExMiwxMTYsMTA1LDExMSwxMTAsCisgICAgNDEsNiw5MCwyLDExMCwxMTUsMTE0LDEwMiwwLDAsMCw5MCw4LDExMiw5NywxMTYsCisgICAgMTA0LDExMCw5NywxMDksMTAxLDkwLDksOTksMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsCisgICAgMTE0LDEyNCwwLDAsMCwxMTQsMTYyLDAsMCwwLDExNCw0LDAsMCwwLDExNCwKKyAgICA0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwxNCw5NSwxMDIsMTA1LDEyMCw5NSwKKyAgICAxMTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDU1LDUsMCwwLDExNSwzNCwwLAorICAgIDAsMCwwLDIsMTAsMSwxMCwxLDQsMSw0LDEsOCwxLDgsMSwKKyAgICAxMiwyLDEwLDEsNCwxLDE0LDEsMiwxLDgsMSw4LDEsOCwxLAorICAgIDEyLDEsMTQsMiwxMTQsMjMsMSwwLDAsOTksMCwwLDAsMCwwLDAsCisgICAgMCwwLDMsMCwwLDAsMywwLDAsMCw2NywwLDAsMCwxMTUsMzgsCisgICAgMCwwLDAsMTE2LDAsMTE2LDEsMTA2LDIsMTMxLDAsMTAyLDIsMTI1LDAsMTE2LAorICAgIDMsMTE2LDQsMTAyLDIsMTI1LDEsMTE2LDUsMTE2LDYsMTAyLDIsMTI1LDIsMTI0LAorICAgIDAsMTI0LDEsMTI0LDIsMTAzLDMsODMsMCw0MSwxLDEyMiw5NSw4MiwxMDEsMTE2LAorICAgIDExNywxMTQsMTEwLDExNSwzMiw5NywzMiwxMDgsMTA1LDExNSwxMTYsMzIsMTExLDEwMiwzMiwxMDIsCisgICAgMTA1LDEwOCwxMDEsNDUsOTgsOTcsMTE1LDEwMSwxMDAsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsCisgICAgMzIsMTA4LDExMSw5NywxMDAsMTAxLDExNCwxMTUsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNjksCisgICAgOTcsOTksMTA0LDMyLDEwNSwxMTYsMTAxLDEwOSwzMiwxMDUsMTE1LDMyLDk3LDMyLDExNiwxMTcsCisgICAgMTEyLDEwOCwxMDEsMzIsNDAsMTA4LDExMSw5NywxMDAsMTAxLDExNCw0NCwzMiwxMTUsMTE3LDEwMiwKKyAgICAxMDIsMTA1LDEyMCwxMDEsMTE1LDQxLDQ2LDEwLDMyLDMyLDMyLDMyLDQxLDcsMTE0LDIyMSwKKyAgICAwLDAsMCwxMTQsMTQzLDAsMCwwLDIxOCwxOCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwKKyAgICAxMDUsMTExLDExMCw5NSwxMTUsMTE3LDEwMiwxMDIsMTA1LDEyMCwxMDEsMTE1LDExNCwyMTUsMCwwLAorICAgIDAsMTE0LDg4LDAsMCwwLDExNCwyMjAsMCwwLDAsMTE0LDc4LDAsMCwwLAorICAgIDQxLDMsOTAsMTAsMTAxLDEyMCwxMTYsMTAxLDExMCwxMTUsMTA1LDExMSwxMTAsMTE1LDkwLDYsCisgICAgMTE1LDExMSwxMTcsMTE0LDk5LDEwMSw5MCw4LDk4LDEyMSwxMTYsMTAxLDk5LDExMSwxMDAsMTAxLAogICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDExNCwKLSAgICAyNDUsMCwwLDAsMzcsNSwwLDAsMTE1LDIsMCwwLDAsMCwxLDEyMiwKLSAgICAxOSw3MCwxMDUsMTA4LDEwMSw3MCwxMDUsMTEwLDEwMCwxMDEsMTE0LDQ2LDk1LDk1LDExNCwxMDEsCi0gICAgMTEyLDExNCw5NSw5NSw0MSwxNSwxMTQsMTE0LDAsMCwwLDExNCwxMTMsMCwwLDAsCi0gICAgMTE0LDExNSwwLDAsMCwxMTQsMTE2LDAsMCwwLDExNCwxODYsMCwwLDAsMTE0LAotICAgIDI1MSwwLDAsMCwxMTQsMTMyLDAsMCwwLDExNCwxODMsMCwwLDAsMTE0LDEyNiwKLSAgICAwLDAsMCwxMTQsNiwxLDAsMCwxMTQsMTgyLDAsMCwwLDExNCwxNCwxLAotICAgIDAsMCwxMTQsMTg0LDAsMCwwLDExNCwyMCwxLDAsMCwxMTQsMjQ1LDAsMCwKLSAgICAwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw2LDAsMCwwLDExNCw3LDEsMCwwLDE1Myw0LDAsMCwxMTUsMjAsCi0gICAgMCwwLDAsMTIsNyw2LDIsMTIsMTQsMTIsNCw2LDIsMTIsMTIsMTIsCi0gICAgNSwxNSw0NSwxMiwzMSwxOCwxOCwxMTQsNywxLDAsMCw5OSw0LDAsMCwKLSAgICAwLDAsMCwwLDAsNiwwLDAsMCwxMSwwLDAsMCw2NywwLDAsCi0gICAgMCwxMTUsMTk1LDAsMCwwLDEyNCwwLDAsMTA2LDAsMCwxMDAsMSwwLDEzMSwKLSAgICAxLDAsMTI1LDQsMCwxMjQsMCwwLDEwNiwwLDAsMTAwLDIsMCwxMzEsMSwKLSAgICAwLDEyNSw1LDAsMTI0LDQsMCwxMTUsOTksMCwxMjQsNSwwLDExNCw1NCwwLAotICAgIDEyNCw1LDAsMTA2LDEsMCwxMjUsNCwwLDExMCw0NSwwLDEyNCwyLDAsMTI0LAotICAgIDMsMCwxMDcsMiwwLDExNCw4NCwwLDExNiwyLDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEzMSwyLDAsMTI1LDQsMCwxMTAsMTUsMCwxMTYsMywwLDEyNCwxLDAsCi0gICAgMTI0LDIsMCwxMzEsMiwwLDEyNSw0LDAsMTI0LDUsMCwxMTUsMTI2LDAsMTE2LAotICAgIDQsMCwxMjQsMSwwLDEyNCwyLDAsMTAwLDMsMCwxMjQsNCwwLDEzMSwyLAotICAgIDEsMTI1LDUsMCwxMjEsNDQsMCwxMjQsNSwwLDEyNCwwLDAsMTAwLDIsMCwKLSAgICA2MCwxMjQsNCwwLDEyNCwwLDAsMTAwLDEsMCw2MCwxMjQsMiwwLDEyNCwwLAotICAgIDAsMTAwLDQsMCw2MCwxMjQsMywwLDEyNCwwLDAsMTAwLDUsMCw2MCw4NywKLSAgICAxMTAsMTgsMCw0LDExNiw1LDAsMTA3LDEwLDAsMTE0LDE5MCwwLDEsMSwxLAotICAgIDg5LDExMCwxLDAsODgsMTAwLDAsMCw4Myw0MSw2LDc4LDIxOCwxMCw5NSw5NSwKLSAgICAxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDk1LDk1LDIxOCw4LDk1LDk1LDExNSwxMTIsMTAxLDk5LAotICAgIDk1LDk1LDExNCwxMjksMCwwLDAsOTAsOCw5NSw5NSwxMDIsMTA1LDEwOCwxMDEsOTUsCi0gICAgOTUsOTAsMTAsOTUsOTUsOTksOTcsOTksMTA0LDEwMSwxMDAsOTUsOTUsNDEsNiwyMTgsCi0gICAgMywxMDMsMTAxLDExNiwxMTQsMTI5LDAsMCwwLDExNCwyMjQsMCwwLDAsMTE0LDIxOSwKLSAgICAwLDAsMCwxMTQsMTY5LDAsMCwwLDIxOCw5LDY5LDEyMCw5OSwxMDEsMTEyLDExNiwKLSAgICAxMDUsMTExLDExMCw0MSw2LDkwLDIsMTEwLDExNSwxMTQsMTA4LDAsMCwwLDkwLDgsCi0gICAgMTEyLDk3LDExNiwxMDQsMTEwLDk3LDEwOSwxMDEsOTAsOSw5OSwxMTIsOTcsMTE2LDEwNCwxMTAsCi0gICAgOTcsMTA5LDEwMSwxMTQsMTI5LDAsMCwwLDExNCwxNjYsMCwwLDAsMTE0LDQsMCwKLSAgICAwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDE0LDk1LDEwMiwKLSAgICAxMDUsMTIwLDk1LDExNywxMTIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDMsNSwwLDAsCi0gICAgMTE1LDM0LDAsMCwwLDAsMiwxNSwxLDE1LDEsNiwxLDYsMSwxMiwKLSAgICAxLDEyLDEsMTgsMiwxNSwxLDYsMSwyMSwxLDMsMSwxMCwxLDEwLAotICAgIDEsMTAsMSwxNCwxLDEzLDIsMTE0LDI1LDEsMCwwLDk5LDAsMCwwLAotICAgIDAsMCwwLDAsMCwzLDAsMCwwLDMsMCwwLDAsNjcsMCwwLAotICAgIDAsMTE1LDU1LDAsMCwwLDExNiwwLDAsMTE2LDEsMCwxMDYsMiwwLDEzMSwKLSAgICAwLDAsMTAyLDIsMCwxMjUsMCwwLDExNiwzLDAsMTE2LDQsMCwxMDIsMiwKLSAgICAwLDEyNSwxLDAsMTE2LDUsMCwxMTYsNiwwLDEwMiwyLDAsMTI1LDIsMCwKLSAgICAxMjQsMCwwLDEyNCwxLDAsMTI0LDIsMCwxMDMsMywwLDgzLDQxLDEsMTIyLAotICAgIDk1LDgyLDEwMSwxMTYsMTE3LDExNCwxMTAsMTE1LDMyLDk3LDMyLDEwOCwxMDUsMTE1LDExNiwzMiwKLSAgICAxMTEsMTAyLDMyLDEwMiwxMDUsMTA4LDEwMSw0NSw5OCw5NywxMTUsMTAxLDEwMCwzMiwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSwzMiwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDExNSw0NiwxMCwxMCwzMiwKLSAgICAzMiwzMiwzMiw2OSw5Nyw5OSwxMDQsMzIsMTA1LDExNiwxMDEsMTA5LDMyLDEwNSwxMTUsMzIsCi0gICAgOTcsMzIsMTE2LDExNywxMTIsMTA4LDEwMSwzMiw0MCwxMDgsMTExLDk3LDEwMCwxMDEsMTE0LDQ0LAotICAgIDMyLDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsNDEsNDYsMTAsMzIsMzIsMzIsMzIsCi0gICAgNDEsNywxMTQsMjI1LDAsMCwwLDExNCwxNDcsMCwwLDAsMjE4LDE4LDEwMSwxMjAsCi0gICAgMTE2LDEwMSwxMTAsMTE1LDEwNSwxMTEsMTEwLDk1LDExNSwxMTcsMTAyLDEwMiwxMDUsMTIwLDEwMSwxMTUsCi0gICAgMTE0LDIxOSwwLDAsMCwxMTQsODYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsCi0gICAgNzYsMCwwLDAsNDEsMyw5MCwxMCwxMDEsMTIwLDExNiwxMDEsMTEwLDExNSwxMDUsMTExLAotICAgIDExMCwxMTUsOTAsNiwxMTUsMTExLDExNywxMTQsOTksMTAxLDkwLDgsOTgsMTIxLDExNiwxMDEsCi0gICAgOTksMTExLDEwMCwxMDEsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsCi0gICAgMCwwLDAsMTE0LDE2MywwLDAsMCw2Niw1LDAsMCwxMTUsOCwwLDAsCi0gICAgMCwwLDUsMTgsMSwxMiwxLDEyLDEsMTE0LDE2MywwLDAsMCw5OSwxLAotICAgIDAsMCwwLDAsMCwwLDAsMTIsMCwwLDAsMTIsMCwwLDAsNjcsCi0gICAgMCwwLDAsMTE1LDcwLDIsMCwwLDEyNCwwLDAsOTcsMCwwLDExNiwwLAotICAgIDAsMTA2LDEsMCw5NywxLDAsMTE2LDAsMCwxMDYsMiwwLDk3LDIsMCwKLSAgICAxMTYsMSwwLDEwNiwzLDAsMTE2LDQsMCwyNSwxMjUsMSwwLDEyMCw3NiwwLAotICAgIDEwMCwyNiwwLDY4LDkzLDY4LDAsMTI1LDIsMCwxMjQsMiwwLDExNiwxLDAsCi0gICAgMTA2LDMsMCwxMDcsNywwLDExNCw4MywwLDExNiwwLDAsMTA2LDUsMCwxMjQsCi0gICAgMiwwLDEzMSwxLDAsMTI1LDMsMCwxMTAsMTMsMCwxMTYsMSwwLDEwNiwzLAotICAgIDAsMTI0LDIsMCwyNSwxMjUsMywwLDExNiw2LDAsMTI0LDEsMCwxMjQsMiwKLSAgICAwLDEyNCwzLDAsMTMxLDMsMCwxLDExMyw0NCwwLDg3LDEwMCw1LDAsMTAwLAotICAgIDYsMCwxMDMsMSwwLDEwMiwyLDAsMTAwLDcsMCwxMDAsOCwwLDEwMCw2LAotICAgIDAsMTAzLDIsMCwxMDIsMiwwLDEwMiwyLDAsMTI1LDQsMCwxMjAsMTQ5LDAsCi0gICAgMTI0LDQsMCw2OCw5MywxMjksMCw5MiwyLDAsMTI1LDUsMCwxMjUsNiwwLAotICAgIDExNiw3LDAsMTAwLDksMCwxMDAsMTAsMCwxMzIsMCwwLDEyNCw2LDAsNjgsCi0gICAgMTMxLDEsMCwxMzEsMSwwLDExNSwxOTksMCwxMTYsOCwwLDEzMCwxLDAsMTI0LAotICAgIDYsMCwxMDAsMTEsMCwyNSwxMjUsNywwLDEyNCw1LDAsMTE2LDEsMCwxMDYsCi0gICAgMywwLDEwNyw2LDAsMTE0LDI0MSwwLDExNiwxLDAsMTA2LDMsMCwxMjQsNSwKLSAgICAwLDI1LDEyNSw4LDAsODAsMTEzLDE1NiwwLDEyMSwyMCwwLDExNiwwLDAsMTA2LAotICAgIDUsMCwxMjQsNSwwLDEzMSwxLDAsMTI1LDgsMCw4MCw4NywxMTMsMTU2LDAsCi0gICAgNCwxMTYsOSwwLDEwNywxMCwwLDExNCwyOCwxLDEsMSwxLDExOSwxNTYsMCwKLSAgICA4OSwxMTMsMTU2LDAsODgsMTEzLDE1NiwwLDg3LDExNiw5LDAsMTAwLDEyLDAsMTMxLAotICAgIDEsMCwxMzAsMSwwLDExNiw2LDAsMTI0LDEsMCwxMDAsMTMsMCwxMjQsOCwKLSAgICAwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDE0LDAsMTI0LDcsCi0gICAgMCwxMzEsMywwLDEsMTE2LDYsMCwxMjQsMSwwLDEwMCwxNSwwLDEwMCwxNiwKLSAgICAwLDEwNiwxMCwwLDEyNCw2LDAsMTMxLDEsMCwxMzEsMywwLDEsMTIxLDE5LAotICAgIDAsMTE2LDAsMCwxMDYsNSwwLDEwMCwxNywwLDEzMSwxLDAsMTI1LDksMCwKLSAgICA4NywxMTAsMjQsMCw0LDExNiw5LDAsMTA3LDEwLDAsMTE0LDE0NywxLDEsMSwKLSAgICAxLDEwMCwxOCwwLDEyNSw5LDAsODksMTEwLDEsMCw4OCwxMTYsNiwwLDEyNCwKLSAgICAxLDAsMTAwLDE3LDAsMTI0LDksMCwxMzEsMywwLDEsMTE2LDAsMCwxMDYsCi0gICAgNSwwLDEwMCwxOSwwLDEzMSwxLDAsMTI1LDEwLDAsMTE2LDYsMCwxMjQsMSwKLSAgICAwLDEwMCwxOSwwLDEyNCwxMCwwLDEzMSwzLDAsMSwxMjQsNSwwLDEwMCw3LAotICAgIDAsMTA3LDIsMCwxMTQsMjM4LDEsMTE2LDAsMCwxMDYsNSwwLDEwMCwyMCwwLAotICAgIDEzMSwxLDAsMTI1LDExLDAsMTE2LDYsMCwxMjQsMSwwLDEwMCwyMSwwLDEyNCwKLSAgICAxMSwwLDEzMSwzLDAsMSwxMTYsNiwwLDEyNCwxLDAsMTAwLDIyLDAsMTE2LAotICAgIDExLDAsMTMxLDAsMCwxMzEsMywwLDEsMTE2LDEyLDAsMTA2LDEzLDAsMTE2LAotICAgIDIsMCwxMDYsMTQsMCwxMzEsMCwwLDEzMSwxLDAsMSwxMjQsNSwwLDEwMCwKLSAgICA3LDAsMTA3LDIsMCwxMTQsNjYsMiwxMTYsMTUsMCwxMDYsMTYsMCwxMDAsMjMsCi0gICAgMCwxMzEsMSwwLDEsMTAwLDI0LDAsMTE2LDEyLDAsMTA3LDYsMCwxMTQsNjYsCi0gICAgMiwxMDAsMjUsMCwxMTYsMTcsMCw5NSwxOCwwLDEwMCwxOCwwLDgzLDQxLDI3LAotICAgIDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywxMTYsMTA0LAotICAgIDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwxMTQsMTE1LAotICAgIDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsOTgsCi0gICAgMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsMTAxLDEwMCwKLSAgICAxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsMTEwLDMyLAotICAgIDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsMTA2LDEwMSwKLSAgICA5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LDExMSwzMiwKLSAgICAxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwxMDEsMTE1LAotICAgIDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwxMDEsMTE0LAotICAgIDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwxMDEsMzIsCi0gICAgMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwzMiwxMTYsCi0gICAgMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LDExNCw5NywKLSAgICAxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsMTE0LAotICAgIDUxLDAsMCwwLDExNCw2MiwwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LDEwOCwxMTYsCi0gICAgMTA1LDExMCwxMTUsMTE0LDE0NCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwxMjAsMjUwLAotICAgIDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLDAsMCwKLSAgICAwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwxMTUsMzMsCi0gICAgMCwwLDAsMTI0LDAsMCw5MywyMywwLDEyNSwxLDAsMTE2LDAsMCwxMjQsCi0gICAgMSwwLDEzMSwxLDAsMTAwLDAsMCwxMDcsMiwwLDg2LDEsMTEzLDMsMCwKLSAgICAxMDAsMSwwLDgzLDQxLDIsMTE0LDMxLDAsMCwwLDc4LDQxLDEsMTE0LDMzLAotICAgIDAsMCwwLDQxLDIsMTE0LDI0LDAsMCwwLDExNCw3OSwwLDAsMCwxMTQsCi0gICAgNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLDAsMCwxMTQsMjI4LAotICAgIDAsMCwwLDEwMiw1LDAsMCwxMTUsMiwwLDAsMCw2LDAsMTIyLDI1LAotICAgIDk1LDExNSwxMDEsMTE2LDExNywxMTIsNDYsNjAsMTA4LDExMSw5OSw5NywxMDgsMTE1LDYyLDQ2LAotICAgIDYwLDEwMywxMDEsMTEwLDEwMSwxMjAsMTEyLDExNCw2MiwxMTQsNjEsMCwwLDAsMTIyLDMwLAotICAgIDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsMzIsMTE0LDEwMSwxMTMsMTE3LDEwNSwxMTQsCi0gICAgMTAxLDExNSwzMiwxMTIsMTExLDExNSwxMDUsMTIwLDMyLDExMSwxMTQsMzIsMTEwLDExNiwxMTQsMywKLSAgICAwLDAsMCwxMTQsMjcsMCwwLDAsMTE0LDIzLDAsMCwwLDExNCwzMiwwLAotICAgIDAsMCw5MCw3LDk1LDExNiwxMDQsMTE0LDEwMSw5NywxMDAsNzgsOTAsOCw5NSwxMTksCi0gICAgMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5MCw2LDExOSwxMDUsMTEwLDExNCwxMDEsMTAzLDExNCwxNzEsCi0gICAgMCwwLDAsMTE0LDcsMCwwLDAsMTIyLDQsNDYsMTEyLDEyMSwxMTksMTIyLDYsCi0gICAgOTUsMTAwLDQ2LDExMiwxMjEsMTAwLDg0LDQxLDQsMTE0LDUxLDAsMCwwLDExNCw2MiwKLSAgICAwLDAsMCwxMTQsMjcsMSwwLDAsMTE0LDE0NCwwLDAsMCw0MSwxOSwxMTQsCi0gICAgMTIzLDAsMCwwLDExNCw4LDAsMCwwLDExNCwxNDcsMCwwLDAsMTE0LDI0MCwKLSAgICAwLDAsMCwxMTQsMTE0LDAsMCwwLDkwLDE4LDk1LDk4LDExNywxMDUsMTA4LDExNiwKLSAgICAxMDUsMTEwLDk1LDEwMiwxMTQsMTExLDEwOSw5NSwxMTAsOTcsMTA5LDEwMSwxMTQsMTE4LDAsMCwKLSAgICAwLDIxOCwzLDk3LDEwOCwxMDgsMjE4LDE0LDY1LDExNSwxMTUsMTAxLDExNCwxMTYsMTA1LDExMSwKLSAgICAxMTAsNjksMTE0LDExNCwxMTEsMTE0LDExNCwxMDksMCwwLDAsMTE0LDI4LDAsMCwwLAotICAgIDExNCwxMywwLDAsMCwxMTQsMjMwLDAsMCwwLDExNCwxNTEsMCwwLDAsMTE0LAotICAgIDI2LDEsMCwwLDExNCw4NiwwLDAsMCwxMTQsMTY1LDAsMCwwLDExNCwxNzAsCi0gICAgMCwwLDAsMTE0LDE3NCwwLDAsMCw0MSwxMiwyMTgsMTcsOTUsOTgsMTExLDExMSwKLSAgICAxMTYsMTE1LDExNiwxMTQsOTcsMTEyLDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDkwLDExLDExNSwKLSAgICAxMDEsMTA4LDEwMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMiw5OCwxMTcsMTA1LDEwOCwKLSAgICAxMTYsMTA1LDExMCw5NSwxMTAsOTcsMTA5LDEwMSw5MCwxNCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LAotICAgIDExMCw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMCwxMTEsMTE1LDk1LDEwMCwxMDEsMTE2LAotICAgIDk3LDEwNSwxMDgsMTE1LDkwLDEwLDk4LDExNywxMDUsMTA4LDExNiwxMDUsMTEwLDk1LDExMSwxMTUsCi0gICAgMTE0LDIzLDAsMCwwLDExNCwyNywwLDAsMCw5MCw5LDExMSwxMTUsOTUsMTA5LAotICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTMsMTE2LDEwNCwxMTQsMTAxLDk3LDEwMCw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxNCwxMTksMTAxLDk3LDEwNywxMTQsMTAxLDEwMiw5NSwxMDksMTExLAotICAgIDEwMCwxMTcsMTA4LDEwMSw5MCwxMywxMTksMTA1LDExMCwxMTQsMTAxLDEwMyw5NSwxMDksMTExLDEwMCwKLSAgICAxMTcsMTA4LDEwMSwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNiwwLAotICAgIDAsMCwyMTgsNiw5NSwxMTUsMTAxLDExNiwxMTcsMTEyLDc3LDUsMCwwLDExNSw4MiwKLSAgICAwLDAsMCwwLDgsNiwxLDksMSw5LDMsMTMsMSwxMywxLDE1LAotICAgIDEsMTgsMiwxMywxLDIwLDMsMzMsMSwxOSwyLDMxLDEsMTAsMSwxNSwKLSAgICAxLDEzLDEsNCwyLDMsMSwxNSwxLDUsMSwxMywxLDEyLDIsMTIsCi0gICAgMSwxNiwxLDE2LDEsMjUsMywzLDEsMTksMSwxMywyLDExLDEsMTYsCi0gICAgMywxNSwxLDE2LDMsMTIsMSwxNSwxLDE2LDMsMTksMSwxOSwxLDEyLAotICAgIDEsMTMsMSwxMiwxLDExNCwzNCwxLDAsMCw5OSwxLDAsMCwwLDAsCi0gICAgMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDY3LDAsMCwwLDExNSwKLSAgICAxMTYsMCwwLDAsMTE2LDAsMCwxMjQsMCwwLDEzMSwxLDAsMSwxMTYsMSwKLSAgICAwLDEzMSwwLDAsMTI1LDEsMCwxMTYsMiwwLDEwNiwzLDAsMTA2LDQsMCwKLSAgICAxMTYsNSwwLDEwNiw2LDAsMTI0LDEsMCwxNDAsMCwwLDEwMywxLDAsMTMxLAotICAgIDEsMCwxLDExNiw3LDAsMTA2LDgsMCwxMDAsMSwwLDEwNywyLDAsMTE0LAotICAgIDc4LDAsMTE2LDIsMCwxMDYsOSwwLDEwNiwxMCwwLDExNiwxMSwwLDEzMSwxLAotICAgIDAsMSwxMTYsMiwwLDEwNiw5LDAsMTA2LDEwLDAsMTE2LDEyLDAsMTMxLDEsCi0gICAgMCwxLDExNiw1LDAsMTI0LDAsMCw5NSw1LDAsMTE2LDEzLDAsMTI0LDAsCi0gICAgMCw5NSwxMywwLDEwMCwyLDAsODMsNDEsMywxMjIsNDEsNzMsMTEwLDExNSwxMTYsCi0gICAgOTcsMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsCi0gICAgMTAxLDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLAotICAgIDEwMSwxMTAsMTE2LDExNSw0NiwxMTQsMjksMSwwLDAsNzgsNDEsMTQsMTE0LDM0LDEsCi0gICAgMCwwLDExNCwxNjMsMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDI1NSwwLDAsCi0gICAgMCwxMTQsMTUxLDAsMCwwLDExNCw3LDEsMCwwLDExNCwyMCwxLDAsMCwKLSAgICAxMTQsMywwLDAsMCwxMTQsMTE0LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LAotICAgIDk1LDExMiw5NywxMTYsMTA0LDExNCwxNjUsMCwwLDAsMTE0LDE3MCwwLDAsMCwxMTQsCi0gICAgMjUwLDAsMCwwLDExNCwyMTksMCwwLDAsNDEsMiwxMTQsMzMsMSwwLDAsCi0gICAgOTAsMTcsMTE1LDExNywxMTIsMTEyLDExMSwxMTQsMTE2LDEwMSwxMDAsOTUsMTA4LDExMSw5NywxMDAsCi0gICAgMTAxLDExNCwxMTUsMTE0LDQsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwKLSAgICAwLDAsMjE4LDgsOTUsMTA1LDExMCwxMTUsMTE2LDk3LDEwOCwxMDgsMTQ1LDUsMCwwLAotICAgIDExNSwxNiwwLDAsMCwwLDIsMTAsMSw5LDEsMjgsMSwxNSwxLDE2LAotICAgIDEsMTYsNCw5LDEsMTE0LDM2LDEsMCwwLDQxLDEsMTE0LDAsMCwwLAotICAgIDAsNDEsMiwxMTQsMSwwLDAsMCwxMTQsMiwwLDAsMCw0MSw1OSwxMTQsCi0gICAgMTE2LDAsMCwwLDExNCwxMiwwLDAsMCw5MCwzNyw5NSw2Nyw2NSw4Myw2OSwKLSAgICA5NSw3Myw3OCw4Myw2OSw3OCw4Myw3Myw4NCw3Myw4Niw2OSw5NSw4MCw3Niw2NSwKLSAgICA4NCw3MCw3OSw4Miw3Nyw4Myw5NSw2Niw4OSw4NCw2OSw4Myw5NSw3NSw2OSw4OSwKLSAgICAxMTQsMTEsMCwwLDAsMTE0LDEzLDAsMCwwLDExNCwxOSwwLDAsMCwxMTQsCi0gICAgMjEsMCwwLDAsMTE0LDMwLDAsMCwwLDExNCw0MCwwLDAsMCwxMTQsNDEsCi0gICAgMCwwLDAsMTE0LDQ1LDAsMCwwLDExNCw0NiwwLDAsMCwxMTQsNDgsMCwKLSAgICAwLDAsMTE0LDU3LDAsMCwwLDIxOCw0LDExNiwxMjEsMTEyLDEwMSwyMTgsOCw5NSwKLSAgICA5NSw5OSwxMTEsMTAwLDEwMSw5NSw5NSwxMTQsMTQ2LDAsMCwwLDExNCwxNywwLDAsCi0gICAgMCwxMTQsMTM3LDAsMCwwLDExNCwxNiwwLDAsMCwxMTQsMjAsMCwwLDAsCi0gICAgOTAsMTcsOTUsODIsNjUsODcsOTUsNzcsNjUsNzEsNzMsNjcsOTUsNzgsODUsNzcsCi0gICAgNjYsNjksODIsMTE0LDc1LDAsMCwwLDExNCw3NCwwLDAsMCwxMTQsODYsMCwKLSAgICAwLDAsMTE0LDc2LDAsMCwwLDkwLDIzLDY4LDY5LDY2LDg1LDcxLDk1LDY2LAotICAgIDg5LDg0LDY5LDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLAotICAgIDkwLDI3LDc5LDgwLDg0LDczLDc3LDczLDkwLDY5LDY4LDk1LDY2LDg5LDg0LDY5LAotICAgIDY3LDc5LDY4LDY5LDk1LDgzLDg1LDcwLDcwLDczLDg4LDY5LDgzLDExNCw4MSwwLAotICAgIDAsMCwxMTQsODcsMCwwLDAsMTE0LDkzLDAsMCwwLDExNCw5NywwLDAsCi0gICAgMCwxMTQsOTksMCwwLDAsMTE0LDEwNywwLDAsMCwxMTQsMTI1LDAsMCwwLAotICAgIDExNCwxMzIsMCwwLDAsMTE0LDE0MywwLDAsMCwxMTQsMTQ5LDAsMCwwLDExNCwKLSAgICAxNTIsMCwwLDAsMTE0LDE1NywwLDAsMCwyMTgsNiwxMTEsOTgsMTA2LDEwMSw5OSwKLSAgICAxMTYsMTE0LDE2NCwwLDAsMCwxMTQsMTY5LDAsMCwwLDExNCwxNzAsMCwwLDAsCi0gICAgMTE0LDE4NSwwLDAsMCwxMTQsMTk1LDAsMCwwLDExNCwyMTEsMCwwLDAsMTE0LAotICAgIDIxOSwwLDAsMCwxMTQsMjI0LDAsMCwwLDExNCwyMzAsMCwwLDAsMTE0LDIyNSwKLSAgICAwLDAsMCwxMTQsMjMxLDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDI1MCwwLAotICAgIDAsMCwxMTQsNywxLDAsMCwxMTQsMjUsMSwwLDAsMTE0LDE2MywwLDAsCi0gICAgMCwxMTQsMzQsMSwwLDAsMTE0LDM2LDEsMCwwLDExNCw0LDAsMCwwLAotICAgIDExNCw0LDAsMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCwKLSAgICA4LDYwLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDYyLDgsMCwwLDAsMTE1LDEwNiwwLAotICAgIDAsMCw2LDE2LDYsMSw2LDEsMywxLDcsMywxMiwxNywxMiw1LAotICAgIDEyLDUsMTIsNiwxMiwxMiwxMiwxMCwxMiw5LDEyLDUsMTIsNywxNSwyMiwKLSAgICAxNSwxMTQsMjIsMSwxOCwyLDYsMSw2LDIsOSwyLDksMiwxMCwyLAotICAgIDIxLDQ0LDEyLDMzLDEyLDE5LDEyLDEyLDEyLDEyLDE4LDgsMTIsMjgsMTIsMTcsCi0gICAgMjEsNTUsMjEsMTIsMTgsMTAsMTIsMTQsOSwzLDEyLDEsMTUsNjUsMTksNjQsCi0gICAgMTksMjgsMjIsMTEwLDE5LDQxLDI1LDQzLDI1LDE2LDYsMywyNSw1MywxOSw1NywKLSAgICAxOSw0MSwxOSwxMzQsMTksMTQ2LDE1LDIzLDEyLDExLDEyLDY4LAorICAgIDE1OSwwLDAsMCw3OCw1LDAsMCwxMTUsOCwwLDAsMCwwLDUsMTIsCisgICAgMSw4LDEsOCwxLDExNCwxNTksMCwwLDAsOTksMSwwLDAsMCwwLAorICAgIDAsMCwwLDEyLDAsMCwwLDEyLDAsMCwwLDY3LDAsMCwwLDExNSwKKyAgICAxODgsMSwwLDAsMTI0LDAsOTcsMCwxMTYsMCwxMDYsMSw5NywxLDExNiwwLAorICAgIDEwNiwyLDk3LDIsMTE2LDEsMTA2LDMsMTE2LDQsMjUsMCwxMjUsMSwxMjAsNTYsCisgICAgMTAwLDI2LDY4LDAsOTMsNDgsMTI1LDIsMTI0LDIsMTE2LDEsMTA2LDMsMTA3LDcsCisgICAgMTE0LDU4LDExNiwwLDEwNiw1LDEyNCwyLDEzMSwxLDEyNSwzLDExMCwxMCwxMTYsMSwKKyAgICAxMDYsMywxMjQsMiwyNSwwLDEyNSwzLDExNiw2LDEyNCwxLDEyNCwyLDEyNCwzLAorICAgIDEzMSwzLDEsMCwxMTMsMzIsODcsMCwxMDAsNSwxMDAsNiwxMDMsMSwxMDIsMiwKKyAgICAxMDAsNywxMDAsOCwxMDAsNiwxMDMsMiwxMDIsMiwxMDIsMiwxMjUsNCwxMjAsMTE4LAorICAgIDEyNCw0LDY4LDAsOTMsMTAyLDkyLDIsMTI1LDUsMTI1LDYsMTE2LDcsMTAwLDksCisgICAgMTAwLDEwLDEzMiwwLDEyNCw2LDY4LDAsMTMxLDEsMTMxLDEsMTE1LDE0MiwxMTYsOCwKKyAgICAxMzAsMSwxMjQsNiwxMDAsMTEsMjUsMCwxMjUsNywxMjQsNSwxMTYsMSwxMDYsMywKKyAgICAxMDcsNiwxMTQsMTc0LDExNiwxLDEwNiwzLDEyNCw1LDI1LDAsMTI1LDgsODAsMCwKKyAgICAxMTMsMTEyLDEyMSwxNiwxMTYsMCwxMDYsNSwxMjQsNSwxMzEsMSwxMjUsOCw4MCwwLAorICAgIDg3LDAsMTEzLDExMiw0LDAsMTE2LDksMTA3LDEwLDExNCwyMTIsMSwwLDEsMCwKKyAgICAxLDAsMTE5LDExMiw4OSwwLDExMywxMTIsODgsMCwxMTMsMTEyLDg3LDAsMTE2LDksCisgICAgMTAwLDEyLDEzMSwxLDEzMCwxLDExNiw2LDEyNCwxLDEwMCwxMywxMjQsOCwxMzEsMywKKyAgICAxLDAsMTE2LDYsMTI0LDEsMTAwLDE0LDEyNCw3LDEzMSwzLDEsMCwxMTYsNiwKKyAgICAxMjQsMSwxMDAsMTUsMTAwLDE2LDEwNiwxMCwxMjQsNiwxMzEsMSwxMzEsMywxLDAsCisgICAgMTIxLDE0LDExNiwwLDEwNiw1LDEwMCwxNywxMzEsMSwxMjUsOSw4NywwLDExMCwyNiwKKyAgICA0LDAsMTE2LDksMTA3LDEwLDE0NCwxLDExNCw1MiwxLDAsMSwwLDEsMCwKKyAgICAxMDAsMTgsMTI1LDksODksMCwxMTAsMiw4OCwwLDExNiw2LDEyNCwxLDEwMCwxNywKKyAgICAxMjQsOSwxMzEsMywxLDAsMTE2LDAsMTA2LDUsMTAwLDE5LDEzMSwxLDEyNSwxMCwKKyAgICAxMTYsNiwxMjQsMSwxMDAsMTksMTI0LDEwLDEzMSwzLDEsMCwxMjQsNSwxMDAsNywKKyAgICAxMDcsMiwxNDQsMSwxMTQsMTIwLDExNiwwLDEwNiw1LDEwMCwyMCwxMzEsMSwxMjUsMTEsCisgICAgMTE2LDYsMTI0LDEsMTAwLDIxLDEyNCwxMSwxMzEsMywxLDAsMTE2LDYsMTI0LDEsCisgICAgMTAwLDIyLDExNiwxMSwxMzEsMCwxMzEsMywxLDAsMTE2LDEyLDEwNiwxMywxMTYsMiwKKyAgICAxMDYsMTQsMTMxLDAsMTMxLDEsMSwwLDEyNCw1LDEwMCw3LDEwNywyLDE0NCwxLAorICAgIDExNCwxODQsMTE2LDE1LDEwNiwxNiwxMDAsMjMsMTMxLDEsMSwwLDEwMCwyNCwxMTYsMTIsCisgICAgMTA3LDYsMTQ0LDEsMTE0LDE4NCwxMDAsMjUsMTE2LDE3LDk1LDE4LDEwMCwxOCw4MywwLAorICAgIDQxLDI3LDEyMiwyMDUsODMsMTAxLDExNiwxMTcsMTEyLDMyLDExNiwxMDQsMTAxLDMyLDExMiw5NywKKyAgICAxMTYsMTA0LDQ1LDk4LDk3LDExNSwxMDEsMTAwLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwMSwKKyAgICAxMTQsMTE1LDMyLDEwMiwxMTEsMTE0LDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwOCwxMDUsOTgsCisgICAgMzIsOTgsMTIxLDMyLDEwNSwxMDksMTEyLDExMSwxMTQsMTE2LDEwNSwxMTAsMTAzLDMyLDExMCwxMDEsCisgICAgMTAxLDEwMCwxMDEsMTAwLDEwLDMyLDMyLDMyLDMyLDk4LDExNywxMDUsMTA4LDExNiw0NSwxMDUsCisgICAgMTEwLDMyLDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLDExNSwzMiw5NywxMTAsMTAwLDMyLDEwNSwxMTAsCisgICAgMTA2LDEwMSw5OSwxMTYsMTA1LDExMCwxMDMsMzIsMTE2LDEwNCwxMDEsMTA5LDMyLDEwNSwxMTAsMTE2LAorICAgIDExMSwzMiwxMTYsMTA0LDEwMSwzMiwxMDMsMTA4LDExMSw5OCw5NywxMDgsMzIsMTEwLDk3LDEwOSwKKyAgICAxMDEsMTE1LDExMiw5Nyw5OSwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsMzIsNzksMTE2LDEwNCwKKyAgICAxMDEsMTE0LDMyLDk5LDExMSwxMDksMTEyLDExMSwxMTAsMTAxLDExMCwxMTYsMTE1LDMyLDk3LDExNCwKKyAgICAxMDEsMzIsMTAxLDEyMCwxMTYsMTE0LDk3LDk5LDExNiwxMDEsMTAwLDMyLDEwMiwxMTQsMTExLDEwOSwKKyAgICAzMiwxMTYsMTA0LDEwMSwzMiw5OSwxMTEsMTE0LDEwMSwzMiw5OCwxMTEsMTExLDExNiwxMTUsMTE2LAorICAgIDExNCw5NywxMTIsMzIsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsNDYsMTAsMTAsMzIsMzIsMzIsCisgICAgMzIsMTE0LDUyLDAsMCwwLDExNCw2MywwLDAsMCwyMTgsOCw5OCwxMTcsMTA1LAorICAgIDEwOCwxMTYsMTA1LDExMCwxMTUsMTE0LDE0MCwwLDAsMCw5MCw1LDExMiwxMTEsMTE1LDEwNSwKKyAgICAxMjAsMjUwLDEsNDcsMjE4LDIsMTEwLDExNiwyNTAsMSw5Miw5OSwxLDAsMCwwLAorICAgIDAsMCwwLDAsMiwwLDAsMCwzLDAsMCwwLDExNSwwLDAsMCwKKyAgICAxMTUsMjYsMCwwLDAsMTI0LDAsOTMsMTgsMTI1LDEsMTE2LDAsMTI0LDEsMTMxLAorICAgIDEsMTAwLDAsMTA3LDIsODYsMCwxLDAsMTEzLDIsMTAwLDEsODMsMCw0MSwKKyAgICAyLDExNCwzMSwwLDAsMCw3OCw0MSwxLDExNCwzMywwLDAsMCw0MSwyLAorICAgIDExNCwyNCwwLDAsMCwxMTQsODEsMCwwLDAsMTE0LDQsMCwwLDAsMTE0LAorICAgIDQsMCwwLDAsMTE0LDYsMCwwLDAsMTE0LDIyNCwwLDAsMCwxMTQsNSwKKyAgICAwLDAsMTE1LDIsMCwwLDAsNCwwLDEyMiwyNSw5NSwxMTUsMTAxLDExNiwxMTcsCisgICAgMTEyLDQ2LDYwLDEwOCwxMTEsOTksOTcsMTA4LDExNSw2Miw0Niw2MCwxMDMsMTAxLDExMCwxMDEsCisgICAgMTIwLDExMiwxMTQsNjIsMTE0LDYyLDAsMCwwLDEyMiwzMCwxMDUsMTA5LDExMiwxMTEsMTE0LAorICAgIDExNiwxMDgsMTA1LDk4LDMyLDExNCwxMDEsMTEzLDExNywxMDUsMTE0LDEwMSwxMTUsMzIsMTEyLDExMSwKKyAgICAxMTUsMTA1LDEyMCwzMiwxMTEsMTE0LDMyLDExMCwxMTYsMTE0LDMsMCwwLDAsMTE0LDI3LAorICAgIDAsMCwwLDExNCwyMywwLDAsMCwxMTQsMzIsMCwwLDAsOTAsNyw5NSwKKyAgICAxMTYsMTA0LDExNCwxMDEsOTcsMTAwLDc4LDkwLDgsOTUsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwKKyAgICAxMDIsOTAsNiwxMTksMTA1LDExMCwxMTQsMTAxLDEwMywxMTQsMTY3LDAsMCwwLDExNCw3LAorICAgIDAsMCwwLDEyMiw0LDQ2LDExMiwxMjEsMTE5LDEyMiw2LDk1LDEwMCw0NiwxMTIsMTIxLAorICAgIDEwMCw4NCw0MSw0LDExNCw1MiwwLDAsMCwxMTQsNjMsMCwwLDAsMTE0LDI1LAorICAgIDEsMCwwLDExNCwxNDAsMCwwLDAsNDEsMTksMTE0LDExOCwwLDAsMCwxMTQsCisgICAgOCwwLDAsMCwxMTQsMTQzLDAsMCwwLDExNCwyMzYsMCwwLDAsMTE0LDEwOSwKKyAgICAwLDAsMCw5MCwxOCw5NSw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMDIsMTE0LAorICAgIDExMSwxMDksOTUsMTEwLDk3LDEwOSwxMDEsMTE0LDExMywwLDAsMCwyMTgsMyw5NywxMDgsCisgICAgMTA4LDIxOCwxNCw2NSwxMTUsMTE1LDEwMSwxMTQsMTE2LDEwNSwxMTEsMTEwLDY5LDExNCwxMTQsMTExLAorICAgIDExNCwxMTQsMTAzLDAsMCwwLDExNCwyOCwwLDAsMCwxMTQsMTMsMCwwLDAsCisgICAgMTE0LDIyNiwwLDAsMCwxMTQsMTQ3LDAsMCwwLDExNCwyNCwxLDAsMCwxMTQsCisgICAgODgsMCwwLDAsMTE0LDE2MSwwLDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxNzAsCisgICAgMCwwLDAsNDEsMTIsMjE4LDE3LDk1LDk4LDExMSwxMTEsMTE2LDExNSwxMTYsMTE0LDk3LAorICAgIDExMiw5NSwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw5MCwxMSwxMTUsMTAxLDEwOCwxMDIsOTUsMTA5LAorICAgIDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsMTIsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTEwLAorICAgIDk3LDEwOSwxMDEsOTAsMTQsOTgsMTE3LDEwNSwxMDgsMTE2LDEwNSwxMTAsOTUsMTA5LDExMSwxMDAsCisgICAgMTE3LDEwOCwxMDEsOTAsMTAsMTExLDExNSw5NSwxMDAsMTAxLDExNiw5NywxMDUsMTA4LDExNSw5MCwKKyAgICAxMCw5OCwxMTcsMTA1LDEwOCwxMTYsMTA1LDExMCw5NSwxMTEsMTE1LDExNCwyMywwLDAsMCwKKyAgICAxMTQsMjcsMCwwLDAsOTAsOSwxMTEsMTE1LDk1LDEwOSwxMTEsMTAwLDExNywxMDgsMTAxLAorICAgIDkwLDEzLDExNiwxMDQsMTE0LDEwMSw5NywxMDAsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTQsMTE5LDEwMSw5NywxMDcsMTE0LDEwMSwxMDIsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsOTAsCisgICAgMTMsMTE5LDEwNSwxMTAsMTE0LDEwMSwxMDMsOTUsMTA5LDExMSwxMDAsMTE3LDEwOCwxMDEsMTE0LDQsCisgICAgMCwwLDAsMTE0LDQsMCwwLDAsMTE0LDYsMCwwLDAsMjE4LDYsOTUsCisgICAgMTE1LDEwMSwxMTYsMTE3LDExMiw4OSw1LDAsMCwxMTUsODIsMCwwLDAsMCw4LAorICAgIDQsMSw2LDEsNiwzLDEwLDEsMTAsMSwxMCwxLDEyLDIsMTAsMSwKKyAgICAxNiwzLDIyLDEsMTQsMiwyMiwxLDgsMSwxMCwxLDEwLDEsNCwyLAorICAgIDIsMSwxMCwxLDYsMSwxNCwxLDEyLDIsOCwxLDEyLDEsMTIsMSwKKyAgICAxOCwzLDIsMSwxNCwxLDE2LDIsMTAsMSwxMiwzLDEwLDEsMTIsMywKKyAgICAxMCwxLDEwLDEsMTIsMywxNCwxLDE0LDEsMTAsMSwxMCwxLDEwLDEsCisgICAgMTE0LDMyLDEsMCwwLDk5LDEsMCwwLDAsMCwwLDAsMCwyLDAsCisgICAgMCwwLDMsMCwwLDAsNjcsMCwwLDAsMTE1LDcyLDAsMCwwLDExNiwKKyAgICAwLDEyNCwwLDEzMSwxLDEsMCwxMTYsMSwxMzEsMCwxMjUsMSwxMTYsMiwxMDYsCisgICAgMywxMDYsNCwxMTYsNSwxMDYsNiwxMjQsMSwxNDIsMCwxMDMsMSwxMzEsMSwxLAorICAgIDAsMTE2LDcsMTA2LDgsMTAwLDEsMTA3LDIsMTE0LDU2LDExNiwyLDEwNiw5LDEwNiwKKyAgICAxMCwxMTYsMTEsMTMxLDEsMSwwLDExNiwyLDEwNiw5LDEwNiwxMCwxMTYsMTIsMTMxLAorICAgIDEsMSwwLDEwMCwyLDgzLDAsNDEsMywxMjIsNDEsNzMsMTEwLDExNSwxMTYsOTcsCisgICAgMTA4LDEwOCwzMiwxMTYsMTA0LDEwMSwzMiwxMTIsOTcsMTE2LDEwNCw0NSw5OCw5NywxMTUsMTAxLAorICAgIDEwMCwzMiwxMDUsMTA5LDExMiwxMTEsMTE0LDExNiwzMiw5OSwxMTEsMTA5LDExMiwxMTEsMTEwLDEwMSwKKyAgICAxMTAsMTE2LDExNSw0NiwxMTQsMjcsMSwwLDAsNzgsNDEsMTMsMTE0LDMyLDEsMCwKKyAgICAwLDExNCwxNTksMCwwLDAsMTE0LDgsMCwwLDAsMTE0LDI1MywwLDAsMCwKKyAgICAxMTQsMTQ3LDAsMCwwLDExNCw1LDEsMCwwLDExNCwxOCwxLDAsMCwxMTQsCisgICAgMywwLDAsMCwxMTQsMTA5LDAsMCwwLDIxOCw5LDEwOSwxMDEsMTE2LDk3LDk1LAorICAgIDExMiw5NywxMTYsMTA0LDExNCwxNjEsMCwwLDAsMTE0LDE2NiwwLDAsMCwxMTQsMjQ4LAorICAgIDAsMCwwLDQxLDIsMTE0LDMxLDEsMCwwLDkwLDE3LDExNSwxMTcsMTEyLDExMiwKKyAgICAxMTEsMTE0LDExNiwxMDEsMTAwLDk1LDEwOCwxMTEsOTcsMTAwLDEwMSwxMTQsMTE1LDExNCw0LDAsCisgICAgMCwwLDExNCw0LDAsMCwwLDExNCw2LDAsMCwwLDIxOCw4LDk1LDEwNSwKKyAgICAxMTAsMTE1LDExNiw5NywxMDgsMTA4LDE1Nyw1LDAsMCwxMTUsMTIsMCwwLDAsMCwKKyAgICAyLDgsMSw2LDEsMjAsMSwxMCwxLDEyLDEsMTE0LDM0LDEsMCwwLAorICAgIDQxLDEsMTE0LDAsMCwwLDAsNDEsMiwxMTQsMSwwLDAsMCwxMTQsMiwKKyAgICAwLDAsMCw0MSwxLDExNCw0OSwwLDAsMCw0MSwxLDc4LDQxLDMsNzgsCisgICAgNzgsNzgsNDEsMyw3OCw3OCw3OCw0MSwyLDExNCw2MiwwLDAsMCwxMTQsNjIsCisgICAgMCwwLDAsNDEsMSw3OCw0MSwxLDc4LDQxLDU4LDExNCwxMTEsMCwwLDAsCisgICAgMTE0LDEyLDAsMCwwLDkwLDM3LDk1LDY3LDY1LDgzLDY5LDk1LDczLDc4LDgzLAorICAgIDY5LDc4LDgzLDczLDg0LDczLDg2LDY5LDk1LDgwLDc2LDY1LDg0LDcwLDc5LDgyLAorICAgIDc3LDgzLDk1LDY2LDg5LDg0LDY5LDgzLDk1LDc1LDY5LDg5LDExNCwxMSwwLDAsCisgICAgMCwxMTQsMTMsMCwwLDAsMTE0LDE5LDAsMCwwLDExNCwyMSwwLDAsMCwKKyAgICAxMTQsMzAsMCwwLDAsMTE0LDQwLDAsMCwwLDExNCw0MSwwLDAsMCwxMTQsCisgICAgNDUsMCwwLDAsMTE0LDQ2LDAsMCwwLDExNCw0OCwwLDAsMCwxMTQsNTgsCisgICAgMCwwLDAsMjE4LDQsMTE2LDEyMSwxMTIsMTAxLDIxOCw4LDk1LDk1LDk5LDExMSwxMDAsCisgICAgMTAxLDk1LDk1LDExNCwxNDIsMCwwLDAsMTE0LDE3LDAsMCwwLDExNCwxMzIsMCwKKyAgICAwLDAsMTE0LDE2LDAsMCwwLDExNCwyMCwwLDAsMCw5MCwxNyw5NSw4MiwKKyAgICA2NSw4Nyw5NSw3Nyw2NSw3MSw3Myw2Nyw5NSw3OCw4NSw3Nyw2Niw2OSw4MiwxMTQsCisgICAgNzcsMCwwLDAsMTE0LDc2LDAsMCwwLDExNCw4OCwwLDAsMCwxMTQsNzgsCisgICAgMCwwLDAsOTAsMjMsNjgsNjksNjYsODUsNzEsOTUsNjYsODksODQsNjksNjcsCisgICAgNzksNjgsNjksOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsOTAsMjcsNzksODAsCisgICAgODQsNzMsNzcsNzMsOTAsNjksNjgsOTUsNjYsODksODQsNjksNjcsNzksNjgsNjksCisgICAgOTUsODMsODUsNzAsNzAsNzMsODgsNjksODMsMTE0LDgzLDAsMCwwLDExNCw4OSwKKyAgICAwLDAsMCwxMTQsOTUsMCwwLDAsMTE0LDk5LDAsMCwwLDExNCwxMDEsMCwKKyAgICAwLDAsMTE0LDEyMCwwLDAsMCwxMTQsMTI3LDAsMCwwLDExNCwxMzksMCwwLAorICAgIDAsMTE0LDE0NSwwLDAsMCwxMTQsMTQ4LDAsMCwwLDExNCwxNTMsMCwwLDAsCisgICAgMjE4LDYsMTExLDk4LDEwNiwxMDEsOTksMTE2LDExNCwxNjAsMCwwLDAsMTE0LDE2NSwwLAorICAgIDAsMCwxMTQsMTY2LDAsMCwwLDExNCwxODEsMCwwLDAsMTE0LDE5MSwwLDAsCisgICAgMCwxMTQsMjA3LDAsMCwwLDExNCwyMTUsMCwwLDAsMTE0LDIyMCwwLDAsMCwKKyAgICAxMTQsMjI2LDAsMCwwLDExNCwyMjEsMCwwLDAsMTE0LDIyNywwLDAsMCwxMTQsCisgICAgMjQ2LDAsMCwwLDExNCwyNDgsMCwwLDAsMTE0LDUsMSwwLDAsMTE0LDIzLAorICAgIDEsMCwwLDExNCwxNTksMCwwLDAsMTE0LDMyLDEsMCwwLDExNCwzNCwxLAorICAgIDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsMCwxMTQsNCwwLDAsCisgICAgMCwxMTQsNiwwLDAsMCwyMTgsOCw2MCwxMDksMTExLDEwMCwxMTcsMTA4LDEwMSw2MiwKKyAgICA4LDAsMCwwLDExNSwxMDgsMCwwLDAsNCwxNiw0LDEsNCwxLDIsCisgICAgMSw2LDMsOCwxNyw4LDUsOCw1LDgsNiw4LDEyLDgsMTAsOCwKKyAgICA5LDgsNSw4LDcsMTAsMjIsMTAsMTIyLDE2LDEsMTIsMiw0LDEsNCwKKyAgICAyLDYsMiw2LDIsOCwyLDE2LDQ1LDgsMzQsOCwxOSw4LDEyLDgsCisgICAgMTIsOCwyOCw4LDE3LDEwLDU1LDEwLDEyLDEwLDEwLDgsMTQsNiwzLDQsCisgICAgMSwxNCw2NywxNCw2NCwxNCwyOSwxNiwxMTAsMTQsNDEsMTgsNDUsMTgsMTYsNCwKKyAgICAzLDE4LDUzLDE0LDYwLDE0LDQyLDE0LDEyNywwLDUsMTQsMTI3LDAsMjIsMTAsCisgICAgMjMsOCwxMSw4LDY4LAogfTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weSBiL1B5dGhvbi9tYWtlb3Bjb2RldGFyZ2V0cy5weQppbmRleCBkOWEwODU1Li4wMjNjOWU2IDEwMDc1NQotLS0gYS9QeXRob24vbWFrZW9wY29kZXRhcmdldHMucHkKKysrIGIvUHl0aG9uL21ha2VvcGNvZGV0YXJnZXRzLnB5CkBAIC0zLDI0ICszLDM0IEBACiAoZm9yIGNvbXBpbGVycyBzdXBwb3J0aW5nIGNvbXB1dGVkIGdvdG9zIG9yICJsYWJlbHMtYXMtdmFsdWVzIiwgc3VjaCBhcyBnY2MpLgogIiIiCiAKLSMgVGhpcyBjb2RlIHNob3VsZCBzdGF5IGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi4zLCBhdCBsZWFzdCB3aGlsZQotIyBzb21lIG9mIHRoZSBidWlsZGJvdHMgaGF2ZSBQeXRob24gMi4zIGFzIHRoZWlyIHN5c3RlbSBQeXRob24uCi0KLWltcG9ydCBpbXAKIGltcG9ydCBvcworaW1wb3J0IHN5cwogCiAKLWRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKLSAgICAiIiJGaW5kcyBhbmQgcmV0dXJucyBhIG1vZHVsZSBpbiB0aGUgbG9jYWwgZGlzdC9jaGVja291dC4KLSAgICAiIiIKLSAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAotICAgICAgICBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSksICJMaWIiKQotICAgIHJldHVybiBpbXAubG9hZF9tb2R1bGUobW9kbmFtZSwgKmltcC5maW5kX21vZHVsZShtb2RuYW1lLCBbbW9kcGF0aF0pKQordHJ5OgorICAgIGZyb20gaW1wb3J0bGliLm1hY2hpbmVyeSBpbXBvcnQgU291cmNlRmlsZUxvYWRlcgorZXhjZXB0IEltcG9ydEVycm9yOgorICAgIGltcG9ydCBpbXAKKworICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIikKKyAgICAgICAgcmV0dXJuIGltcC5sb2FkX21vZHVsZShtb2RuYW1lLCAqaW1wLmZpbmRfbW9kdWxlKG1vZG5hbWUsIFttb2RwYXRoXSkpCitlbHNlOgorICAgIGRlZiBmaW5kX21vZHVsZShtb2RuYW1lKToKKyAgICAgICAgIiIiRmluZHMgYW5kIHJldHVybnMgYSBtb2R1bGUgaW4gdGhlIGxvY2FsIGRpc3QvY2hlY2tvdXQuCisgICAgICAgICIiIgorICAgICAgICBtb2RwYXRoID0gb3MucGF0aC5qb2luKAorICAgICAgICAgICAgb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShfX2ZpbGVfXykpLCAiTGliIiwgbW9kbmFtZSArICIucHkiKQorICAgICAgICByZXR1cm4gU291cmNlRmlsZUxvYWRlcihtb2RuYW1lLCBtb2RwYXRoKS5sb2FkX21vZHVsZSgpCisKIAogZGVmIHdyaXRlX2NvbnRlbnRzKGYpOgogICAgICIiIldyaXRlIEMgY29kZSBjb250ZW50cyB0byB0aGUgdGFyZ2V0IGZpbGUgb2JqZWN0LgogICAgICIiIgotICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCJvcGNvZGUiKQorICAgIG9wY29kZSA9IGZpbmRfbW9kdWxlKCdvcGNvZGUnKQogICAgIHRhcmdldHMgPSBbJ191bmtub3duX29wY29kZSddICogMjU2CiAgICAgZm9yIG9wbmFtZSwgb3AgaW4gb3Bjb2RlLm9wbWFwLml0ZW1zKCk6CiAgICAgICAgIHRhcmdldHNbb3BdID0gIlRBUkdFVF8lcyIgJSBvcG5hbWUKQEAgLTI5LDE1ICszOSwxNyBAQAogICAgIGYud3JpdGUoIlxufTtcbiIpCiAKIAotaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKLSAgICBpbXBvcnQgc3lzCi0gICAgYXNzZXJ0IGxlbihzeXMuYXJndikgPCAzLCAiVG9vIG1hbnkgYXJndW1lbnRzIgorZGVmIG1haW4oKToKKyAgICBpZiBsZW4oc3lzLmFyZ3YpID49IDM6CisgICAgICAgIHN5cy5leGl0KCJUb28gbWFueSBhcmd1bWVudHMiKQogICAgIGlmIGxlbihzeXMuYXJndikgPT0gMjoKICAgICAgICAgdGFyZ2V0ID0gc3lzLmFyZ3ZbMV0KICAgICBlbHNlOgogICAgICAgICB0YXJnZXQgPSAiUHl0aG9uL29wY29kZV90YXJnZXRzLmgiCi0gICAgZiA9IG9wZW4odGFyZ2V0LCAidyIpCi0gICAgdHJ5OgorICAgIHdpdGggb3Blbih0YXJnZXQsICJ3IikgYXMgZjoKICAgICAgICAgd3JpdGVfY29udGVudHMoZikKLSAgICBmaW5hbGx5OgotICAgICAgICBmLmNsb3NlKCkKKyAgICBwcmludCgiSnVtcCB0YWJsZSB3cml0dGVuIGludG8gJXMiICUgdGFyZ2V0KQorCisKK2lmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgbWFpbigpCmRpZmYgLS1naXQgYS9QeXRob24vbWFyc2hhbC5jIGIvUHl0aG9uL21hcnNoYWwuYwppbmRleCA1YjhkZTk5Li44N2E0YjI0IDEwMDY0NAotLS0gYS9QeXRob24vbWFyc2hhbC5jCisrKyBiL1B5dGhvbi9tYXJzaGFsLmMKQEAgLTEzMCw3ICsxMzAsNyBAQAogICAgIG0gPSBwLT5lbmQgLSBwLT5wdHI7CiAgICAgaWYgKHAtPmZwICE9IE5VTEwpIHsKICAgICAgICAgaWYgKG4gPD0gbSkgewotICAgICAgICAgICAgUHlfTUVNQ1BZKHAtPnB0ciwgcywgbik7CisgICAgICAgICAgICBtZW1jcHkocC0+cHRyLCBzLCBuKTsKICAgICAgICAgICAgIHAtPnB0ciArPSBuOwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewpAQCAtMTQwLDcgKzE0MCw3IEBACiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBpZiAobiA8PSBtIHx8IHdfcmVzZXJ2ZShwLCBuIC0gbSkpIHsKLSAgICAgICAgICAgIFB5X01FTUNQWShwLT5wdHIsIHMsIG4pOworICAgICAgICAgICAgbWVtY3B5KHAtPnB0ciwgcywgbik7CiAgICAgICAgICAgICBwLT5wdHIgKz0gbjsKICAgICAgICAgfQogICAgIH0KQEAgLTI2MywxMCArMjYzLDEwIEBACiAgICAgaWYgKFB5X1JFRkNOVCh2KSA9PSAxKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIGVudHJ5ID0gX1B5X2hhc2h0YWJsZV9nZXRfZW50cnkocC0+aGFzaHRhYmxlLCB2KTsKKyAgICBlbnRyeSA9IF9QeV9IQVNIVEFCTEVfR0VUX0VOVFJZKHAtPmhhc2h0YWJsZSwgdik7CiAgICAgaWYgKGVudHJ5ICE9IE5VTEwpIHsKICAgICAgICAgLyogd3JpdGUgdGhlIHJlZmVyZW5jZSBpbmRleCB0byB0aGUgc3RyZWFtICovCi0gICAgICAgIF9QeV9IQVNIVEFCTEVfRU5UUllfUkVBRF9EQVRBKHAtPmhhc2h0YWJsZSwgJncsIHNpemVvZih3KSwgZW50cnkpOworICAgICAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfREFUQShwLT5oYXNodGFibGUsIGVudHJ5LCB3KTsKICAgICAgICAgLyogd2UgZG9uJ3Qgc3RvcmUgImxvbmciIGluZGljZXMgaW4gdGhlIGRpY3QgKi8KICAgICAgICAgYXNzZXJ0KDAgPD0gdyAmJiB3IDw9IDB4N2ZmZmZmZmYpOwogICAgICAgICB3X2J5dGUoVFlQRV9SRUYsIHApOwpAQCAtNTcxLDcgKzU3MSw4IEBACiB3X2luaXRfcmVmcyhXRklMRSAqd2YsIGludCB2ZXJzaW9uKQogewogICAgIGlmICh2ZXJzaW9uID49IDMpIHsKLSAgICAgICAgd2YtPmhhc2h0YWJsZSA9IF9QeV9oYXNodGFibGVfbmV3KHNpemVvZihpbnQpLCBfUHlfaGFzaHRhYmxlX2hhc2hfcHRyLAorICAgICAgICB3Zi0+aGFzaHRhYmxlID0gX1B5X2hhc2h0YWJsZV9uZXcoc2l6ZW9mKFB5T2JqZWN0ICopLCBzaXplb2YoaW50KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9oYXNodGFibGVfaGFzaF9wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBfUHlfaGFzaHRhYmxlX2NvbXBhcmVfZGlyZWN0KTsKICAgICAgICAgaWYgKHdmLT5oYXNodGFibGUgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTU4Miw5ICs1ODMsMTMgQEAKIH0KIAogc3RhdGljIGludAotd19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwgdm9pZCAqUHlfVU5VU0VEKGRhdGEpKQord19kZWNyZWZfZW50cnkoX1B5X2hhc2h0YWJsZV90ICpodCwgX1B5X2hhc2h0YWJsZV9lbnRyeV90ICplbnRyeSwKKyAgICAgICAgICAgICAgIHZvaWQgKlB5X1VOVVNFRChkYXRhKSkKIHsKLSAgICBQeV9YREVDUkVGKGVudHJ5LT5rZXkpOworICAgIFB5T2JqZWN0ICplbnRyeV9rZXk7CisKKyAgICBfUHlfSEFTSFRBQkxFX0VOVFJZX1JFQURfS0VZKGh0LCBlbnRyeSwgZW50cnlfa2V5KTsKKyAgICBQeV9YREVDUkVGKGVudHJ5X2tleSk7CiAgICAgcmV0dXJuIDA7CiB9CiAKQEAgLTY0Myw3ICs2NDgsNyBAQAogICAgIFB5T2JqZWN0ICpyZWZzOyAgLyogYSBsaXN0ICovCiB9IFJGSUxFOwogCi1zdGF0aWMgY2hhciAqCitzdGF0aWMgY29uc3QgY2hhciAqCiByX3N0cmluZyhQeV9zc2l6ZV90IG4sIFJGSUxFICpwKQogewogICAgIFB5X3NzaXplX3QgcmVhZCA9IC0xOwpAQCAtNzI5LDcgKzczNCw3IEBACiAgICAgICAgIGMgPSBnZXRjKHAtPmZwKTsKICAgICB9CiAgICAgZWxzZSB7Ci0gICAgICAgIGNoYXIgKnB0ciA9IHJfc3RyaW5nKDEsIHApOworICAgICAgICBjb25zdCBjaGFyICpwdHIgPSByX3N0cmluZygxLCBwKTsKICAgICAgICAgaWYgKHB0ciAhPSBOVUxMKQogICAgICAgICAgICAgYyA9ICoodW5zaWduZWQgY2hhciAqKSBwdHI7CiAgICAgfQpAQCAtNzQwLDkgKzc0NSw5IEBACiByX3Nob3J0KFJGSUxFICpwKQogewogICAgIHNob3J0IHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoMiwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gYnVmZmVyWzFdIDw8IDg7CkBAIC03NTYsOSArNzYxLDkgQEAKIHJfbG9uZyhSRklMRSAqcCkKIHsKICAgICBsb25nIHggPSAtMTsKLSAgICB1bnNpZ25lZCBjaGFyICpidWZmZXI7CisgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmZmVyOwogCi0gICAgYnVmZmVyID0gKHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CisgICAgYnVmZmVyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoNCwgcCk7CiAgICAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgICAgIHggPSBidWZmZXJbMF07CiAgICAgICAgIHggfD0gKGxvbmcpYnVmZmVyWzFdIDw8IDg7CkBAIC05NzgsNyArOTgzLDggQEAKIAogICAgIGNhc2UgVFlQRV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBkb3VibGUgZHg7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDAxLDkgKzEwMDcsOSBAQAogCiAgICAgY2FzZSBUWVBFX0JJTkFSWV9GTE9BVDoKICAgICAgICAgewotICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqYnVmOworICAgICAgICAgICAgY29uc3QgdW5zaWduZWQgY2hhciAqYnVmOwogICAgICAgICAgICAgZG91YmxlIHg7Ci0gICAgICAgICAgICBidWYgPSAodW5zaWduZWQgY2hhciAqKSByX3N0cmluZyg4LCBwKTsKKyAgICAgICAgICAgIGJ1ZiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOwogICAgICAgICAgICAgaWYgKGJ1ZiA9PSBOVUxMKQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgeCA9IF9QeUZsb2F0X1VucGFjazgoYnVmLCAxKTsKQEAgLTEwMTYsNyArMTAyMiw4IEBACiAKICAgICBjYXNlIFRZUEVfQ09NUExFWDoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciBidWZbMjU2XSwgKnB0cjsKKyAgICAgICAgICAgIGNoYXIgYnVmWzI1Nl07CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBQeV9jb21wbGV4IGM7CiAgICAgICAgICAgICBuID0gcl9ieXRlKHApOwogICAgICAgICAgICAgaWYgKG4gPT0gRU9GKSB7CkBAIC0xMDUzLDE1ICsxMDYwLDE1IEBACiAKICAgICBjYXNlIFRZUEVfQklOQVJZX0NPTVBMRVg6CiAgICAgICAgIHsKLSAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKmJ1ZjsKKyAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZjsKICAgICAgICAgICAgIFB5X2NvbXBsZXggYzsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLnJlYWwgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CiAgICAgICAgICAgICBpZiAoYy5yZWFsID09IC0xLjAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGJ1ZiA9ICh1bnNpZ25lZCBjaGFyICopIHJfc3RyaW5nKDgsIHApOworICAgICAgICAgICAgYnVmID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgcl9zdHJpbmcoOCwgcCk7CiAgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjLmltYWcgPSBfUHlGbG9hdF9VbnBhY2s4KGJ1ZiwgMSk7CkBAIC0xMDc0LDcgKzEwODEsNyBAQAogCiAgICAgY2FzZSBUWVBFX1NUUklORzoKICAgICAgICAgewotICAgICAgICAgICAgY2hhciAqcHRyOworICAgICAgICAgICAgY29uc3QgY2hhciAqcHRyOwogICAgICAgICAgICAgbiA9IHJfbG9uZyhwKTsKICAgICAgICAgICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMTExOSw3ICsxMTI2LDcgQEAKICAgICAgICAgfQogICAgIF9yZWFkX2FzY2lpOgogICAgICAgICB7Ci0gICAgICAgICAgICBjaGFyICpwdHI7CisgICAgICAgICAgICBjb25zdCBjaGFyICpwdHI7CiAgICAgICAgICAgICBwdHIgPSByX3N0cmluZyhuLCBwKTsKICAgICAgICAgICAgIGlmIChwdHIgPT0gTlVMTCkKICAgICAgICAgICAgICAgICBicmVhazsKQEAgLTExMzcsNyArMTE0NCw3IEBACiAgICAgICAgIGlzX2ludGVybmVkID0gMTsKICAgICBjYXNlIFRZUEVfVU5JQ09ERToKICAgICAgICAgewotICAgICAgICBjaGFyICpidWZmZXI7CisgICAgICAgIGNvbnN0IGNoYXIgKmJ1ZmZlcjsKIAogICAgICAgICBuID0gcl9sb25nKHApOwogICAgICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTEyNjQsNDEgKzEyNzEsNTIgQEAKICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19WYWx1ZUVycm9yLCAiYmFkIG1hcnNoYWwgZGF0YSAoc2V0IHNpemUgb3V0IG9mIHJhbmdlKSIpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KLSAgICAgICAgdiA9ICh0eXBlID09IFRZUEVfU0VUKSA/IFB5U2V0X05ldyhOVUxMKSA6IFB5RnJvemVuU2V0X05ldyhOVUxMKTsKLSAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKLSAgICAgICAgICAgIFJfUkVGKHYpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAotICAgICAgICAgICAgICogYmUgaW5pdCB3aXRoIGEgcmVmY291bnQgb2YgMQotICAgICAgICAgICAgICovCi0gICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOwotICAgICAgICAgICAgaWYgKGlkeCA8IDApCi0gICAgICAgICAgICAgICAgUHlfQ0xFQVIodik7IC8qIHNpZ25hbCBlcnJvciAqLwotICAgICAgICB9Ci0gICAgICAgIGlmICh2ID09IE5VTEwpCi0gICAgICAgICAgICBicmVhazsKIAotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7Ci0gICAgICAgICAgICB2MiA9IHJfb2JqZWN0KHApOwotICAgICAgICAgICAgaWYgKCB2MiA9PSBOVUxMICkgewotICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKLSAgICAgICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1R5cGVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICJOVUxMIG9iamVjdCBpbiBtYXJzaGFsIGRhdGEgZm9yIHNldCIpOwotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICB2ID0gTlVMTDsKKyAgICAgICAgaWYgKG4gPT0gMCAmJiB0eXBlID09IFRZUEVfRlJPWkVOU0VUKSB7CisgICAgICAgICAgICAvKiBjYWxsIGZyb3plbnNldCgpIHRvIGdldCB0aGUgZW1wdHkgZnJvemVuc2V0IHNpbmdsZXRvbiAqLworICAgICAgICAgICAgdiA9IFB5T2JqZWN0X0NhbGxGdW5jdGlvbigoUHlPYmplY3QqKSZQeUZyb3plblNldF9UeXBlLCBOVUxMKTsKKyAgICAgICAgICAgIGlmICh2ID09IE5VTEwpCiAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgewotICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKLSAgICAgICAgICAgICAgICBQeV9ERUNSRUYodjIpOwotICAgICAgICAgICAgICAgIHYgPSBOVUxMOwotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIFJfUkVGKHYpOworICAgICAgICAgICAgcmV0dmFsID0gdjsKICAgICAgICAgfQotICAgICAgICBpZiAodHlwZSAhPSBUWVBFX1NFVCkKLSAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKLSAgICAgICAgcmV0dmFsID0gdjsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB2ID0gKHR5cGUgPT0gVFlQRV9TRVQpID8gUHlTZXRfTmV3KE5VTEwpIDogUHlGcm96ZW5TZXRfTmV3KE5VTEwpOworICAgICAgICAgICAgaWYgKHR5cGUgPT0gVFlQRV9TRVQpIHsKKyAgICAgICAgICAgICAgICBSX1JFRih2KTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgLyogbXVzdCB1c2UgZGVsYXllZCByZWdpc3RyYXRpb24gb2YgZnJvemVuc2V0cyBiZWNhdXNlIHRoZXkgbXVzdAorICAgICAgICAgICAgICAgICAqIGJlIGluaXQgd2l0aCBhIHJlZmNvdW50IG9mIDEKKyAgICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgICBpZHggPSByX3JlZl9yZXNlcnZlKGZsYWcsIHApOworICAgICAgICAgICAgICAgIGlmIChpZHggPCAwKQorICAgICAgICAgICAgICAgICAgICBQeV9DTEVBUih2KTsgLyogc2lnbmFsIGVycm9yICovCisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodiA9PSBOVUxMKQorICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgICAgICAgICAgdjIgPSByX29iamVjdChwKTsKKyAgICAgICAgICAgICAgICBpZiAoIHYyID09IE5VTEwgKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICghUHlFcnJfT2NjdXJyZWQoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIk5VTEwgb2JqZWN0IGluIG1hcnNoYWwgZGF0YSBmb3Igc2V0Iik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2KTsKKyAgICAgICAgICAgICAgICAgICAgdiA9IE5VTEw7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoUHlTZXRfQWRkKHYsIHYyKSA9PSAtMSkgeworICAgICAgICAgICAgICAgICAgICBQeV9ERUNSRUYodik7CisgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRih2Mik7CisgICAgICAgICAgICAgICAgICAgIHYgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgUHlfREVDUkVGKHYyKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICh0eXBlICE9IFRZUEVfU0VUKQorICAgICAgICAgICAgICAgIHYgPSByX3JlZl9pbnNlcnQodiwgaWR4LCBmbGFnLCBwKTsKKyAgICAgICAgICAgIHJldHZhbCA9IHY7CisgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAKICAgICBjYXNlIFRZUEVfQ09ERToKZGlmZiAtLWdpdCBhL1B5dGhvbi9tb2RzdXBwb3J0LmMgYi9QeXRob24vbW9kc3VwcG9ydC5jCmluZGV4IDBkMDkzNzEuLmFhYmVlOGYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9tb2RzdXBwb3J0LmMKKysrIGIvUHl0aG9uL21vZHN1cHBvcnQuYwpAQCAtMjYwLDEzICsyNjAsMTIgQEAKICAgICAgICAgICAgIHJldHVybiBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZyhuKTsKICAgICAgICAgfQogCi0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICAgICAgY2FzZSAnTCc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygoUFlfTE9OR19MT05HKXZhX2FyZygqcF92YSwgUFlfTE9OR19MT05HKSk7CisgICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21Mb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgbG9uZyBsb25nKSk7CiAKICAgICAgICAgY2FzZSAnSyc6Ci0gICAgICAgICAgICByZXR1cm4gUHlMb25nX0Zyb21VbnNpZ25lZExvbmdMb25nKChQWV9MT05HX0xPTkcpdmFfYXJnKCpwX3ZhLCB1bnNpZ25lZCBQWV9MT05HX0xPTkcpKTsKLSNlbmRpZgorICAgICAgICAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygobG9uZyBsb25nKXZhX2FyZygqcF92YSwgdW5zaWduZWQgbG9uZyBsb25nKSk7CisKICAgICAgICAgY2FzZSAndSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwpAQCAtMzE4LDcgKzMxNyw3IEBACiAgICAgICAgIGNhc2UgJ1UnOiAgIC8qIFhYWCBkZXByZWNhdGVkIGFsaWFzICovCiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC0zNTEsNyArMzUwLDcgQEAKICAgICAgICAgY2FzZSAneSc6CiAgICAgICAgIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICp2OwotICAgICAgICAgICAgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjaGFyICopOworICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gdmFfYXJnKCpwX3ZhLCBjb25zdCBjaGFyICopOwogICAgICAgICAgICAgUHlfc3NpemVfdCBuOwogICAgICAgICAgICAgaWYgKCoqcF9mb3JtYXQgPT0gJyMnKSB7CiAgICAgICAgICAgICAgICAgKysqcF9mb3JtYXQ7CkBAIC00NjgsOCArNDY3LDcgQEAKICAgICBjb25zdCBjaGFyICpmID0gZm9ybWF0OwogICAgIGludCBuID0gY291bnRmb3JtYXQoZiwgJ1wwJyk7CiAgICAgdmFfbGlzdCBsdmE7Ci0KLSAgICAgICAgUHlfVkFfQ09QWShsdmEsIHZhKTsKKyAgICBQeU9iamVjdCAqcmV0dmFsOwogCiAgICAgaWYgKG4gPCAwKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTQ3Nyw5ICs0NzUsMTQgQEAKICAgICAgICAgUHlfSU5DUkVGKFB5X05vbmUpOwogICAgICAgICByZXR1cm4gUHlfTm9uZTsKICAgICB9Ci0gICAgaWYgKG4gPT0gMSkKLSAgICAgICAgcmV0dXJuIGRvX21rdmFsdWUoJmYsICZsdmEsIGZsYWdzKTsKLSAgICByZXR1cm4gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIHZhX2NvcHkobHZhLCB2YSk7CisgICAgaWYgKG4gPT0gMSkgeworICAgICAgICByZXR2YWwgPSBkb19ta3ZhbHVlKCZmLCAmbHZhLCBmbGFncyk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0dmFsID0gZG9fbWt0dXBsZSgmZiwgJmx2YSwgJ1wwJywgbiwgZmxhZ3MpOworICAgIH0KKyAgICB2YV9lbmQobHZhKTsKKyAgICByZXR1cm4gcmV0dmFsOwogfQogCiAKZGlmZiAtLWdpdCBhL1B5dGhvbi9teXN0cnRvdWwuYyBiL1B5dGhvbi9teXN0cnRvdWwuYwppbmRleCA5ODQyOWQ0Li5hODU3OTBlIDEwMDY0NAotLS0gYS9QeXRob24vbXlzdHJ0b3VsLmMKKysrIGIvUHl0aG9uL215c3RydG91bC5jCkBAIC0xNyw3ICsxNyw3IEBACiAgKiBzbWFsbG1heFtiYXNlXSBpcyB0aGUgbGFyZ2VzdCB1bnNpZ25lZCBsb25nIGkgc3VjaCB0aGF0CiAgKiBpICogYmFzZSBkb2Vzbid0IG92ZXJmbG93IHVuc2lnbmVkIGxvbmcuCiAgKi8KLXN0YXRpYyB1bnNpZ25lZCBsb25nIHNtYWxsbWF4W10gPSB7CitzdGF0aWMgY29uc3QgdW5zaWduZWQgbG9uZyBzbWFsbG1heFtdID0gewogICAgIDAsIC8qIGJhc2VzIDAgYW5kIDEgYXJlIGludmFsaWQgKi8KICAgICAwLAogICAgIFVMT05HX01BWCAvIDIsCkBAIC02MiwxNCArNjIsMTQgQEAKICAqIE5vdGUgdGhhdCB0aGlzIGlzIHBlc3NpbWlzdGljIGlmIHNpemVvZihsb25nKSA+IDQuCiAgKi8KICNpZiBTSVpFT0ZfTE9ORyA9PSA0Ci1zdGF0aWMgaW50IGRpZ2l0bGltaXRbXSA9IHsKK3N0YXRpYyBjb25zdCBpbnQgZGlnaXRsaW1pdFtdID0gewogICAgIDAsICAwLCAzMiwgMjAsIDE2LCAxMywgMTIsIDExLCAxMCwgMTAsICAvKiAgMCAtICA5ICovCiAgICAgOSwgIDksICA4LCAgOCwgIDgsICA4LCAgOCwgIDcsICA3LCAgNywgIC8qIDEwIC0gMTkgKi8KICAgICA3LCAgNywgIDcsICA3LCAgNiwgIDYsICA2LCAgNiwgIDYsICA2LCAgLyogMjAgLSAyOSAqLwogICAgIDYsICA2LCAgNiwgIDYsICA2LCAgNiwgIDZ9OyAgICAgICAgICAgICAvKiAzMCAtIDM2ICovCiAjZWxpZiBTSVpFT0ZfTE9ORyA9PSA4CiAvKiBbaW50KG1hdGguZmxvb3IobWF0aC5sb2coMioqNjQsIGkpKSkgZm9yIGkgaW4gcmFuZ2UoMiwgMzcpXSAqLwotc3RhdGljIGludCBkaWdpdGxpbWl0W10gPSB7CitzdGF0aWMgY29uc3QgaW50IGRpZ2l0bGltaXRbXSA9IHsKICAgICAgICAgIDAsICAgMCwgNjQsIDQwLCAzMiwgMjcsIDI0LCAyMiwgMjEsIDIwLCAgLyogIDAgLSAgOSAqLwogICAgIDE5LCAgMTgsIDE3LCAxNywgMTYsIDE2LCAxNiwgMTUsIDE1LCAxNSwgIC8qIDEwIC0gMTkgKi8KICAgICAxNCwgIDE0LCAxNCwgMTQsIDEzLCAxMywgMTMsIDEzLCAxMywgMTMsICAvKiAyMCAtIDI5ICovCmRpZmYgLS1naXQgYS9QeXRob24vb3Bjb2RlX3RhcmdldHMuaCBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCmluZGV4IDE5MjU5ZTEuLjcyZDI0MDggMTAwNjQ0Ci0tLSBhL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCisrKyBiL1B5dGhvbi9vcGNvZGVfdGFyZ2V0cy5oCkBAIC04NCw3ICs4NCw3IEBACiAgICAgJiZUQVJHRVRfV0lUSF9DTEVBTlVQX0ZJTklTSCwKICAgICAmJlRBUkdFVF9SRVRVUk5fVkFMVUUsCiAgICAgJiZUQVJHRVRfSU1QT1JUX1NUQVIsCi0gICAgJiZfdW5rbm93bl9vcGNvZGUsCisgICAgJiZUQVJHRVRfU0VUVVBfQU5OT1RBVElPTlMsCiAgICAgJiZUQVJHRVRfWUlFTERfVkFMVUUsCiAgICAgJiZUQVJHRVRfUE9QX0JMT0NLLAogICAgICYmVEFSR0VUX0VORF9GSU5BTExZLApAQCAtMTI2LDIyICsxMjYsMjIgQEAKICAgICAmJlRBUkdFVF9MT0FEX0ZBU1QsCiAgICAgJiZUQVJHRVRfU1RPUkVfRkFTVCwKICAgICAmJlRBUkdFVF9ERUxFVEVfRkFTVCwKLSAgICAmJl91bmtub3duX29wY29kZSwKKyAgICAmJlRBUkdFVF9TVE9SRV9BTk5PVEFUSU9OLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmVEFSR0VUX1JBSVNFX1ZBUkFSR1MsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTiwKICAgICAmJlRBUkdFVF9NQUtFX0ZVTkNUSU9OLAogICAgICYmVEFSR0VUX0JVSUxEX1NMSUNFLAotICAgICYmVEFSR0VUX01BS0VfQ0xPU1VSRSwKKyAgICAmJl91bmtub3duX29wY29kZSwKICAgICAmJlRBUkdFVF9MT0FEX0NMT1NVUkUsCiAgICAgJiZUQVJHRVRfTE9BRF9ERVJFRiwKICAgICAmJlRBUkdFVF9TVE9SRV9ERVJFRiwKICAgICAmJlRBUkdFVF9ERUxFVEVfREVSRUYsCiAgICAgJiZfdW5rbm93bl9vcGNvZGUsCi0gICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9WQVIsCisgICAgJiZfdW5rbm93bl9vcGNvZGUsCiAgICAgJiZUQVJHRVRfQ0FMTF9GVU5DVElPTl9LVywKLSAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX1ZBUl9LVywKKyAgICAmJlRBUkdFVF9DQUxMX0ZVTkNUSU9OX0VYLAogICAgICYmVEFSR0VUX1NFVFVQX1dJVEgsCiAgICAgJiZUQVJHRVRfRVhURU5ERURfQVJHLAogICAgICYmVEFSR0VUX0xJU1RfQVBQRU5ELApAQCAtMTU0LDEwICsxNTQsMTAgQEAKICAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0ssCiAgICAgJiZUQVJHRVRfQlVJTERfU0VUX1VOUEFDSywKICAgICAmJlRBUkdFVF9TRVRVUF9BU1lOQ19XSVRILAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAotICAgICYmX3Vua25vd25fb3Bjb2RlLAorICAgICYmVEFSR0VUX0ZPUk1BVF9WQUxVRSwKKyAgICAmJlRBUkdFVF9CVUlMRF9DT05TVF9LRVlfTUFQLAorICAgICYmVEFSR0VUX0JVSUxEX1NUUklORywKKyAgICAmJlRBUkdFVF9CVUlMRF9UVVBMRV9VTlBBQ0tfV0lUSF9DQUxMLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLAogICAgICYmX3Vua25vd25fb3Bjb2RlLApkaWZmIC0tZ2l0IGEvUHl0aG9uL3BlZXBob2xlLmMgYi9QeXRob24vcGVlcGhvbGUuYwppbmRleCA0ZTY1N2ZhLi44NGViMmRiIDEwMDY0NAotLS0gYS9QeXRob24vcGVlcGhvbGUuYworKysgYi9QeXRob24vcGVlcGhvbGUuYwpAQCAtOCw4ICs4LDggQEAKICNpbmNsdWRlICJjb2RlLmgiCiAjaW5jbHVkZSAic3ltdGFibGUuaCIKICNpbmNsdWRlICJvcGNvZGUuaCIKKyNpbmNsdWRlICJ3b3JkY29kZV9oZWxwZXJzLmgiCiAKLSNkZWZpbmUgR0VUQVJHKGFyciwgaSkgKChpbnQpKChhcnJbaSsyXTw8OCkgKyBhcnJbaSsxXSkpCiAjZGVmaW5lIFVOQ09ORElUSU9OQUxfSlVNUChvcCkgIChvcD09SlVNUF9BQlNPTFVURSB8fCBvcD09SlVNUF9GT1JXQVJEKQogI2RlZmluZSBDT05ESVRJT05BTF9KVU1QKG9wKSAob3A9PVBPUF9KVU1QX0lGX0ZBTFNFIHx8IG9wPT1QT1BfSlVNUF9JRl9UUlVFIFwKICAgICB8fCBvcD09SlVNUF9JRl9GQUxTRV9PUl9QT1AgfHwgb3A9PUpVTVBfSUZfVFJVRV9PUl9QT1ApCkBAIC0xNywyMiArMTcsMTYgQEAKICAgICB8fCBvcD09UE9QX0pVTVBfSUZfRkFMU0UgfHwgb3A9PVBPUF9KVU1QX0lGX1RSVUUgXAogICAgIHx8IG9wPT1KVU1QX0lGX0ZBTFNFX09SX1BPUCB8fCBvcD09SlVNUF9JRl9UUlVFX09SX1BPUCkKICNkZWZpbmUgSlVNUFNfT05fVFJVRShvcCkgKG9wPT1QT1BfSlVNUF9JRl9UUlVFIHx8IG9wPT1KVU1QX0lGX1RSVUVfT1JfUE9QKQotI2RlZmluZSBHRVRKVU1QVEdUKGFyciwgaSkgKEdFVEFSRyhhcnIsaSkgKyAoQUJTT0xVVEVfSlVNUChhcnJbaV0pID8gMCA6IGkrMykpCi0jZGVmaW5lIFNFVEFSRyhhcnIsIGksIHZhbCkgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXNzZXJ0KDAgPD0gdmFsICYmIHZhbCA8PSAweGZmZmYpOyAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgYXJyW2krMl0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKT4+OCk7ICAgICBcCi0gICAgYXJyW2krMV0gPSAodW5zaWduZWQgY2hhcikoKCh1bnNpZ25lZCBpbnQpdmFsKSAmIDI1NSk7ICBcCi19IHdoaWxlKDApCi0jZGVmaW5lIENPREVTSVpFKG9wKSAgKEhBU19BUkcob3ApID8gMyA6IDEpCi0jZGVmaW5lIElTQkFTSUNCTE9DSyhibG9ja3MsIHN0YXJ0LCBieXRlcykgXAotICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3Nbc3RhcnQrYnl0ZXMtMV0pCisjZGVmaW5lIEdFVEpVTVBUR1QoYXJyLCBpKSAoZ2V0X2FyZyhhcnIsIGkpIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCkgKyBcCisgICAgICAgIChBQlNPTFVURV9KVU1QKF9QeV9PUENPREUoYXJyW2ldKSkgPyAwIDogaSsxKSkKKyNkZWZpbmUgSVNCQVNJQ0JMT0NLKGJsb2Nrcywgc3RhcnQsIGVuZCkgXAorICAgIChibG9ja3Nbc3RhcnRdPT1ibG9ja3NbZW5kXSkKIAogCiAjZGVmaW5lIENPTlNUX1NUQUNLX0NSRUFURSgpIHsgXAogICAgIGNvbnN0X3N0YWNrX3NpemUgPSAyNTY7IFwKICAgICBjb25zdF9zdGFjayA9IFB5TWVtX05ldyhQeU9iamVjdCAqLCBjb25zdF9zdGFja19zaXplKTsgXAotICAgIGxvYWRfY29uc3Rfc3RhY2sgPSBQeU1lbV9OZXcoUHlfc3NpemVfdCwgY29uc3Rfc3RhY2tfc2l6ZSk7IFwKLSAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICBpZiAoIWNvbnN0X3N0YWNrKSB7IFwKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsgXAogICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgIH0gXApAQCAtNDEsMjcgKzM1LDIzIEBACiAjZGVmaW5lIENPTlNUX1NUQUNLX0RFTEVURSgpIGRvIHsgXAogICAgIGlmIChjb25zdF9zdGFjaykgXAogICAgICAgICBQeU1lbV9GcmVlKGNvbnN0X3N0YWNrKTsgXAotICAgIGlmIChsb2FkX2NvbnN0X3N0YWNrKSBcCi0gICAgICAgIFB5TWVtX0ZyZWUobG9hZF9jb25zdF9zdGFjayk7IFwKICAgICB9IHdoaWxlKDApCiAKLSNkZWZpbmUgQ09OU1RfU1RBQ0tfTEVOKCkgKGNvbnN0X3N0YWNrX3RvcCArIDEpCisjZGVmaW5lIENPTlNUX1NUQUNLX0xFTigpICgodW5zaWduZWQpKGNvbnN0X3N0YWNrX3RvcCArIDEpKQogCiAjZGVmaW5lIENPTlNUX1NUQUNLX1BVU0hfT1AoaSkgZG8geyBcCiAgICAgUHlPYmplY3QgKl94OyBcCi0gICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7IFwKLSAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCi0gICAgX3ggPSBQeUxpc3RfR0VUX0lURU0oY29uc3RzLCBHRVRBUkcoY29kZXN0ciwgaSkpOyBcCisgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCk7IFwKKyAgICBhc3NlcnQoUHlMaXN0X0dFVF9TSVpFKGNvbnN0cykgPiAoUHlfc3NpemVfdClnZXRfYXJnKGNvZGVzdHIsIGkpKTsgXAorICAgIF94ID0gUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSk7IFwKICAgICBpZiAoKytjb25zdF9zdGFja190b3AgPj0gY29uc3Rfc3RhY2tfc2l6ZSkgeyBcCiAgICAgICAgIGNvbnN0X3N0YWNrX3NpemUgKj0gMjsgXAogICAgICAgICBQeU1lbV9SZXNpemUoY29uc3Rfc3RhY2ssIFB5T2JqZWN0ICosIGNvbnN0X3N0YWNrX3NpemUpOyBcCi0gICAgICAgIFB5TWVtX1Jlc2l6ZShsb2FkX2NvbnN0X3N0YWNrLCBQeV9zc2l6ZV90LCBjb25zdF9zdGFja19zaXplKTsgXAotICAgICAgICBpZiAoIWNvbnN0X3N0YWNrIHx8ICFsb2FkX2NvbnN0X3N0YWNrKSB7IFwKKyAgICAgICAgaWYgKCFjb25zdF9zdGFjaykgeyBcCiAgICAgICAgICAgICBQeUVycl9Ob01lbW9yeSgpOyBcCiAgICAgICAgICAgICBnb3RvIGV4aXRFcnJvcjsgXAogICAgICAgICB9IFwKICAgICB9IFwKLSAgICBsb2FkX2NvbnN0X3N0YWNrW2NvbnN0X3N0YWNrX3RvcF0gPSBpOyBcCiAgICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXSA9IF94OyBcCiAgICAgaW5fY29uc3RzID0gMTsgXAogICAgIH0gd2hpbGUoMCkKQEAgLTcwLDIyICs2MCwxMTQgQEAKICAgICBjb25zdF9zdGFja190b3AgPSAtMTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19UT1AoKSBcCi0gICAgY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wXQotCiAjZGVmaW5lIENPTlNUX1NUQUNLX0xBU1ROKGkpIFwKLSAgICAmY29uc3Rfc3RhY2tbY29uc3Rfc3RhY2tfdG9wIC0gaSArIDFdCisgICAgJmNvbnN0X3N0YWNrW0NPTlNUX1NUQUNLX0xFTigpIC0gaV0KIAogI2RlZmluZSBDT05TVF9TVEFDS19QT1AoaSkgZG8geyBcCi0gICAgYXNzZXJ0KGNvbnN0X3N0YWNrX3RvcCArIDEgPj0gaSk7IFwKKyAgICBhc3NlcnQoQ09OU1RfU1RBQ0tfTEVOKCkgPj0gaSk7IFwKICAgICBjb25zdF9zdGFja190b3AgLT0gaTsgXAogICAgIH0gd2hpbGUoMCkKIAotI2RlZmluZSBDT05TVF9TVEFDS19PUF9MQVNUTihpKSBcCi0gICAgKChjb25zdF9zdGFja190b3AgPj0gaSAtIDEpID8gbG9hZF9jb25zdF9zdGFja1tjb25zdF9zdGFja190b3AgLSBpICsgMV0gOiAtMSkKKy8qIFNjYW5zIGJhY2sgTiBjb25zZWN1dGl2ZSBMT0FEX0NPTlNUIGluc3RydWN0aW9ucywgc2tpcHBpbmcgTk9QcywKKyAgIHJldHVybnMgaW5kZXggb2YgdGhlIE50aCBsYXN0J3MgTE9BRF9DT05TVCdzIEVYVEVOREVEX0FSRyBwcmVmaXguCisgICBDYWxsZXJzIGFyZSByZXNwb25zaWJsZSB0byBjaGVjayBDT05TVF9TVEFDS19MRU4gYmVmb3JlaGFuZC4KKyovCitzdGF0aWMgUHlfc3NpemVfdAorbGFzdG5fY29uc3Rfc3RhcnQoY29uc3QgX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IGksIFB5X3NzaXplX3QgbikKK3sKKyAgICBhc3NlcnQobiA+IDApOworICAgIGZvciAoOzspIHsKKyAgICAgICAgaS0tOworICAgICAgICBhc3NlcnQoaSA+PSAwKTsKKyAgICAgICAgaWYgKF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTE9BRF9DT05TVCkgeworICAgICAgICAgICAgaWYgKCEtLW4pIHsKKyAgICAgICAgICAgICAgICB3aGlsZSAoaSA+IDAgJiYgX1B5X09QQ09ERShjb2Rlc3RyW2ktMV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgICAgICAgICBpLS07CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIHJldHVybiBpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgYXNzZXJ0KF9QeV9PUENPREUoY29kZXN0cltpXSkgPT0gTk9QIHx8CisgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpOworICAgICAgICB9CisgICAgfQorfQogCisvKiBTY2FucyB0aHJvdWdoIEVYVEVOREVEIEFSR3MsIHNlZWtpbmcgdGhlIGluZGV4IG9mIHRoZSBlZmZlY3RpdmUgb3Bjb2RlICovCitzdGF0aWMgUHlfc3NpemVfdAorZmluZF9vcChjb25zdCBfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgaSkKK3sKKyAgICB3aGlsZSAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgaSsrOworICAgIH0KKyAgICByZXR1cm4gaTsKK30KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIC4uLiBMT0FEX0NPTlNUIGNuIEJVSUxEX1RVUExFIG4KKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIHNjYW4gYmFjayB0byBjb25zdHJ1Y3QgdGhlIG9wYXJnIHdpdGggRVhURU5ERURfQVJHICovCitzdGF0aWMgdW5zaWduZWQgaW50CitnZXRfYXJnKGNvbnN0IF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpKQoreworICAgIF9QeV9DT0RFVU5JVCB3b3JkOworICAgIHVuc2lnbmVkIGludCBvcGFyZyA9IF9QeV9PUEFSRyhjb2Rlc3RyW2ldKTsKKyAgICBpZiAoaSA+PSAxICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0xXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgIG9wYXJnIHw9IF9QeV9PUEFSRyh3b3JkKSA8PCA4OworICAgICAgICBpZiAoaSA+PSAyICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0yXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICBvcGFyZyB8PSBfUHlfT1BBUkcod29yZCkgPDwgMTY7CisgICAgICAgICAgICBpZiAoaSA+PSAzICYmIF9QeV9PUENPREUod29yZCA9IGNvZGVzdHJbaS0zXSkgPT0gRVhURU5ERURfQVJHKSB7CisgICAgICAgICAgICAgICAgb3BhcmcgfD0gX1B5X09QQVJHKHdvcmQpIDw8IDI0OworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgIHJldHVybiBvcGFyZzsKK30KKworLyogRmlsbCB0aGUgcmVnaW9uIHdpdGggTk9Qcy4gKi8KK3N0YXRpYyB2b2lkCitmaWxsX25vcHMoX1B5X0NPREVVTklUICpjb2Rlc3RyLCBQeV9zc2l6ZV90IHN0YXJ0LCBQeV9zc2l6ZV90IGVuZCkKK3sKKyAgICBtZW1zZXQoY29kZXN0ciArIHN0YXJ0LCBOT1AsIChlbmQgLSBzdGFydCkgKiBzaXplb2YoX1B5X0NPREVVTklUKSk7Cit9CisKKy8qIEdpdmVuIHRoZSBpbmRleCBvZiB0aGUgZWZmZWN0aXZlIG9wY29kZSwKKyAgIGF0dGVtcHQgdG8gcmVwbGFjZSB0aGUgYXJndW1lbnQsIHRha2luZyBpbnRvIGFjY291bnQgRVhURU5ERURfQVJHLgorICAgUmV0dXJucyAtMSBvbiBmYWlsdXJlLCBvciB0aGUgbmV3IG9wIGluZGV4IG9uIHN1Y2Nlc3MgKi8KK3N0YXRpYyBQeV9zc2l6ZV90CitzZXRfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgdW5zaWduZWQgaW50IGN1cmFyZyA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgaW50IGN1cmlsZW4sIG5ld2lsZW47CisgICAgaWYgKGN1cmFyZyA9PSBvcGFyZykKKyAgICAgICAgcmV0dXJuIGk7CisgICAgY3VyaWxlbiA9IGluc3Ryc2l6ZShjdXJhcmcpOworICAgIG5ld2lsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChjdXJpbGVuIDwgbmV3aWxlbikgeworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgd3JpdGVfb3BfYXJnKGNvZGVzdHIgKyBpICsgMSAtIGN1cmlsZW4sIF9QeV9PUENPREUoY29kZXN0cltpXSksIG9wYXJnLCBuZXdpbGVuKTsKKyAgICBmaWxsX25vcHMoY29kZXN0ciwgaSArIDEgLSBjdXJpbGVuICsgbmV3aWxlbiwgaSArIDEpOworICAgIHJldHVybiBpLWN1cmlsZW4rbmV3aWxlbjsKK30KKworLyogQXR0ZW1wdCB0byB3cml0ZSBvcC9hcmcgYXQgZW5kIG9mIHNwZWNpZmllZCByZWdpb24gb2YgbWVtb3J5LgorICAgUHJlY2VkaW5nIG1lbW9yeSBpbiB0aGUgcmVnaW9uIGlzIG92ZXJ3cml0dGVuIHdpdGggTk9Qcy4KKyAgIFJldHVybnMgLTEgb24gZmFpbHVyZSwgb3AgaW5kZXggb24gc3VjY2VzcyAqLworc3RhdGljIFB5X3NzaXplX3QKK2NvcHlfb3BfYXJnKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBpLCB1bnNpZ25lZCBjaGFyIG9wLAorICAgICAgICAgICAgdW5zaWduZWQgaW50IG9wYXJnLCBQeV9zc2l6ZV90IG1heGkpCit7CisgICAgaW50IGlsZW4gPSBpbnN0cnNpemUob3BhcmcpOworICAgIGlmIChpICsgaWxlbiA+IG1heGkpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIG1heGkgLSBpbGVuLCBvcCwgb3BhcmcsIGlsZW4pOworICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpLCBtYXhpIC0gaWxlbik7CisgICAgcmV0dXJuIG1heGkgLSAxOworfQorCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIgLi4uIExPQURfQ09OU1QgY24sIEJVSUxEX1RVUExFIG4KICAgIHdpdGggICAgTE9BRF9DT05TVCAoYzEsIGMyLCAuLi4gY24pLgogICAgVGhlIGNvbnN0cyB0YWJsZSBtdXN0IHN0aWxsIGJlIGluIGxpc3QgZm9ybSBzbyB0aGF0IHRoZQogICAgbmV3IGNvbnN0YW50IChjMSwgYzIsIC4uLiBjbikgY2FuIGJlIGFwcGVuZGVkLgpAQCAtOTQsOSArMTc2LDEwIEBACiAgICBBbHNvIHdvcmtzIGZvciBCVUlMRF9MSVNUIGFuZCBCVUlMVF9TRVQgd2hlbiBmb2xsb3dlZCBieSBhbiAiaW4iIG9yICJub3QgaW4iCiAgICB0ZXN0OyBmb3IgQlVJTERfU0VUIGl0IGFzc2VtYmxlcyBhIGZyb3plbnNldCByYXRoZXIgdGhhbiBhIHR1cGxlLgogKi8KLXN0YXRpYyBpbnQKLXR1cGxlX29mX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeV9zc2l6ZV90IG4sCi0gICAgICAgICAgICAgICAgICAgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfdHVwbGVfb25fY29uc3RhbnRzKF9QeV9DT0RFVU5JVCAqY29kZXN0ciwgUHlfc3NpemVfdCBjX3N0YXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgUHlfc3NpemVfdCBvcGNvZGVfZW5kLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcywgaW50IG4pCiB7CiAgICAgUHlPYmplY3QgKm5ld2NvbnN0LCAqY29uc3RhbnQ7CiAgICAgUHlfc3NpemVfdCBpLCBsZW5fY29uc3RzOwpAQCAtMTA2LDkgKzE4OSw5IEBACiAKICAgICAvKiBCdWlsZHVwIG5ldyB0dXBsZSBvZiBjb25zdGFudHMgKi8KICAgICBuZXdjb25zdCA9IFB5VHVwbGVfTmV3KG4pOwotICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKQotICAgICAgICByZXR1cm4gMDsKLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CisgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICBmb3IgKGk9MCA7IGk8biA7IGkrKykgewogICAgICAgICBjb25zdGFudCA9IG9ianNbaV07CiAgICAgICAgIFB5X0lOQ1JFRihjb25zdGFudCk7CkBAIC0xMTYsMzAgKzE5OSwyNiBAQAogICAgIH0KIAogICAgIC8qIElmIGl0J3MgYSBCVUlMRF9TRVQsIHVzZSB0aGUgUHlUdXBsZSB3ZSBqdXN0IGJ1aWx0IHRvIGNyZWF0ZSBhCi0gICAgICBQeUZyb3plblNldCwgYW5kIHVzZSB0aGF0IGFzIHRoZSBjb25zdGFudCBpbnN0ZWFkOiAqLwotICAgIGlmIChjb2Rlc3RyWzBdID09IEJVSUxEX1NFVCkgewotICAgICAgICBQeU9iamVjdCAqdHVwbGUgPSBuZXdjb25zdDsKLSAgICAgICAgbmV3Y29uc3QgPSBQeUZyb3plblNldF9OZXcodHVwbGUpOwotICAgICAgICBQeV9ERUNSRUYodHVwbGUpOwotICAgICAgICBpZiAobmV3Y29uc3QgPT0gTlVMTCkKLSAgICAgICAgICAgIHJldHVybiAwOworICAgICAgIFB5RnJvemVuU2V0LCBhbmQgdXNlIHRoYXQgYXMgdGhlIGNvbnN0YW50IGluc3RlYWQ6ICovCisgICAgaWYgKG9wY29kZSA9PSBCVUlMRF9TRVQpIHsKKyAgICAgICAgUHlfU0VUUkVGKG5ld2NvbnN0LCBQeUZyb3plblNldF9OZXcobmV3Y29uc3QpKTsKKyAgICAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKKyAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgfQogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgb250byBjb25zdHMgKi8KKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUHMgb3ZlciBvbGQgTE9BRF9DT05TVFMgYW5kCi0gICAgICAgYWRkIGEgbmV3IExPQURfQ09OU1QgbmV3Y29uc3Qgb24gdG9wIG9mIHRoZSBCVUlMRF9UVVBMRSBuICovCi0gICAgY29kZXN0clswXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDAsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAotLyogUmVwbGFjZSBMT0FEX0NPTlNUIGMxLiBMT0FEX0NPTlNUIGMyIEJJTk9QCisvKiBSZXBsYWNlIExPQURfQ09OU1QgYzEsIExPQURfQ09OU1QgYzIsIEJJTk9QCiAgICB3aXRoICAgIExPQURfQ09OU1QgYmlub3AoYzEsYzIpCiAgICBUaGUgY29uc3RzIHRhYmxlIG11c3Qgc3RpbGwgYmUgaW4gbGlzdCBmb3JtIHNvIHRoYXQgdGhlCiAgICBuZXcgY29uc3RhbnQgY2FuIGJlIGFwcGVuZGVkLgpAQCAtMTQ5LDIwICsyMjgsMjEgQEAKICAgIGlzIGJlbG93IGEgdGhyZXNob2xkIHZhbHVlLiAgVGhhdCBrZWVwcyBweWMgZmlsZXMgZnJvbQogICAgYmVjb21pbmcgbGFyZ2UgaW4gdGhlIHByZXNlbmNlIG9mIGNvZGUgbGlrZTogIChOb25lLCkqMTAwMC4KICovCi1zdGF0aWMgaW50Ci1mb2xkX2Jpbm9wc19vbl9jb25zdGFudHModW5zaWduZWQgY2hhciAqY29kZXN0ciwgUHlPYmplY3QgKmNvbnN0cywgUHlPYmplY3QgKipvYmpzKQorc3RhdGljIFB5X3NzaXplX3QKK2ZvbGRfYmlub3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9zc2l6ZV90IG9wY29kZV9lbmQsIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgIFB5T2JqZWN0ICpjb25zdHMsIFB5T2JqZWN0ICoqb2JqcykKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3QsICp2LCAqdzsKICAgICBQeV9zc2l6ZV90IGxlbl9jb25zdHMsIHNpemU7Ci0gICAgaW50IG9wY29kZTsKIAogICAgIC8qIFByZS1jb25kaXRpb25zICovCiAgICAgYXNzZXJ0KFB5TGlzdF9DaGVja0V4YWN0KGNvbnN0cykpOworICAgIGxlbl9jb25zdHMgPSBQeUxpc3RfR0VUX1NJWkUoY29uc3RzKTsKIAogICAgIC8qIENyZWF0ZSBuZXcgY29uc3RhbnQgKi8KICAgICB2ID0gb2Jqc1swXTsKICAgICB3ID0gb2Jqc1sxXTsKLSAgICBvcGNvZGUgPSBjb2Rlc3RyWzBdOwogICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9Qb3dlcih2LCB3LCBQeV9Ob25lKTsKQEAgLTIwOCw1MCArMjg4LDQ4IEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJpbmFyeSBvcGVyYXRpb24gJWQgb24gYSBjb25zdGFudCIsCiAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUpOwotICAgICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIGlmIChuZXdjb25zdCA9PSBOVUxMKSB7Ci0gICAgICAgIGlmKCFQeUVycl9FeGNlcHRpb25NYXRjaGVzKFB5RXhjX0tleWJvYXJkSW50ZXJydXB0KSkKKyAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CiAgICAgICAgICAgICBQeUVycl9DbGVhcigpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIHNpemUgPSBQeU9iamVjdF9TaXplKG5ld2NvbnN0KTsKICAgICBpZiAoc2l6ZSA9PSAtMSkgewotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpCi0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKSB7CisgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICB9IGVsc2UgaWYgKHNpemUgPiAyMCkgewogICAgICAgICBQeV9ERUNSRUYobmV3Y29uc3QpOwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAogICAgIC8qIEFwcGVuZCBmb2xkZWQgY29uc3RhbnQgaW50byBjb25zdHMgdGFibGUgKi8KLSAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAgICAgaWYgKFB5TGlzdF9BcHBlbmQoY29uc3RzLCBuZXdjb25zdCkpIHsKICAgICAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgUHlfREVDUkVGKG5ld2NvbnN0KTsKIAotICAgIC8qIFdyaXRlIE5PUCBOT1AgTk9QIE5PUCBMT0FEX0NPTlNUIG5ld2NvbnN0ICovCi0gICAgY29kZXN0clstMl0gPSBMT0FEX0NPTlNUOwotICAgIFNFVEFSRyhjb2Rlc3RyLCAtMiwgbGVuX2NvbnN0cyk7Ci0gICAgcmV0dXJuIDE7CisgICAgcmV0dXJuIGNvcHlfb3BfYXJnKGNvZGVzdHIsIGNfc3RhcnQsIExPQURfQ09OU1QsIGxlbl9jb25zdHMsIG9wY29kZV9lbmQpOwogfQogCi1zdGF0aWMgaW50Ci1mb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyh1bnNpZ25lZCBjaGFyICpjb2Rlc3RyLCBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKK3N0YXRpYyBQeV9zc2l6ZV90Citmb2xkX3VuYXJ5b3BzX29uX2NvbnN0YW50cyhfUHlfQ09ERVVOSVQgKmNvZGVzdHIsIFB5X3NzaXplX3QgY19zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3Qgb3Bjb2RlX2VuZCwgdW5zaWduZWQgY2hhciBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBQeU9iamVjdCAqY29uc3RzLCBQeU9iamVjdCAqdikKIHsKICAgICBQeU9iamVjdCAqbmV3Y29uc3Q7CiAgICAgUHlfc3NpemVfdCBsZW5fY29uc3RzOwotICAgIGludCBvcGNvZGU7CiAKICAgICAvKiBQcmUtY29uZGl0aW9ucyAqLwogICAgIGFzc2VydChQeUxpc3RfQ2hlY2tFeGFjdChjb25zdHMpKTsKLSAgICBhc3NlcnQoY29kZXN0clswXSA9PSBMT0FEX0NPTlNUKTsKKyAgICBsZW5fY29uc3RzID0gUHlMaXN0X0dFVF9TSVpFKGNvbnN0cyk7CiAKICAgICAvKiBDcmVhdGUgbmV3IGNvbnN0YW50ICovCi0gICAgb3Bjb2RlID0gY29kZXN0clszXTsKICAgICBzd2l0Y2ggKG9wY29kZSkgewogICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgbmV3Y29uc3QgPSBQeU51bWJlcl9OZWdhdGl2ZSh2KTsKQEAgLTI2NywzNSArMzQ1LDMxIEBACiAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3lzdGVtRXJyb3IsCiAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIHVuYXJ5IG9wZXJhdGlvbiAlZCBvbiBhIGNvbnN0YW50IiwKICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSk7Ci0gICAgICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKG5ld2NvbnN0ID09IE5VTEwpIHsKLSAgICAgICAgaWYoIVB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfS2V5Ym9hcmRJbnRlcnJ1cHQpKQorICAgICAgICBpZighUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19LZXlib2FyZEludGVycnVwdCkpIHsKICAgICAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICB9CisgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKICAgICAvKiBBcHBlbmQgZm9sZGVkIGNvbnN0YW50IGludG8gY29uc3RzIHRhYmxlICovCi0gICAgbGVuX2NvbnN0cyA9IFB5TGlzdF9HRVRfU0laRShjb25zdHMpOwogICAgIGlmIChQeUxpc3RfQXBwZW5kKGNvbnN0cywgbmV3Y29uc3QpKSB7CiAgICAgICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAgICAgICAgIFB5RXJyX0NsZWFyKCk7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gLTE7CiAgICAgfQogICAgIFB5X0RFQ1JFRihuZXdjb25zdCk7CiAKLSAgICAvKiBXcml0ZSBOT1AgTE9BRF9DT05TVCBuZXdjb25zdCAqLwotICAgIGNvZGVzdHJbMF0gPSBOT1A7Ci0gICAgY29kZXN0clsxXSA9IExPQURfQ09OU1Q7Ci0gICAgU0VUQVJHKGNvZGVzdHIsIDEsIGxlbl9jb25zdHMpOwotICAgIHJldHVybiAxOworICAgIHJldHVybiBjb3B5X29wX2FyZyhjb2Rlc3RyLCBjX3N0YXJ0LCBMT0FEX0NPTlNULCBsZW5fY29uc3RzLCBvcGNvZGVfZW5kKTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludCAqCi1tYXJrYmxvY2tzKHVuc2lnbmVkIGNoYXIgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQorbWFya2Jsb2NrcyhfUHlfQ09ERVVOSVQgKmNvZGUsIFB5X3NzaXplX3QgbGVuKQogewogICAgIHVuc2lnbmVkIGludCAqYmxvY2tzID0gUHlNZW1fTmV3KHVuc2lnbmVkIGludCwgbGVuKTsKLSAgICBpbnQgaSxqLCBvcGNvZGUsIGJsb2NrY250ID0gMDsKKyAgICBpbnQgaSwgaiwgb3Bjb2RlLCBibG9ja2NudCA9IDA7CiAKICAgICBpZiAoYmxvY2tzID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKQEAgLTMwNCw4ICszNzgsOCBAQAogICAgIG1lbXNldChibG9ja3MsIDAsIGxlbipzaXplb2YoaW50KSk7CiAKICAgICAvKiBNYXJrIGxhYmVscyBpbiB0aGUgZmlyc3QgcGFzcyAqLwotICAgIGZvciAoaT0wIDsgaTxsZW4gOyBpKz1DT0RFU0laRShvcGNvZGUpKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVbaV07CisgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZVtpXSk7CiAgICAgICAgIHN3aXRjaCAob3Bjb2RlKSB7CiAgICAgICAgICAgICBjYXNlIEZPUl9JVEVSOgogICAgICAgICAgICAgY2FzZSBKVU1QX0ZPUldBUkQ6CkBAIC0zMjEsMTIgKzM5NSwxMyBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgogICAgICAgICAgICAgICAgIGogPSBHRVRKVU1QVEdUKGNvZGUsIGkpOworICAgICAgICAgICAgICAgIGFzc2VydChqIDwgbGVuKTsKICAgICAgICAgICAgICAgICBibG9ja3Nbal0gPSAxOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogICAgIC8qIEJ1aWxkIGJsb2NrIG51bWJlcnMgaW4gdGhlIHNlY29uZCBwYXNzICovCi0gICAgZm9yIChpPTAgOyBpPGxlbiA7IGkrKykgeworICAgIGZvciAoaSA9IDA7IGkgPCBsZW47IGkrKykgewogICAgICAgICBibG9ja2NudCArPSBibG9ja3NbaV07ICAgICAgICAgIC8qIGluY3JlbWVudCBibG9ja2NudCBvdmVyIGxhYmVscyAqLwogICAgICAgICBibG9ja3NbaV0gPSBibG9ja2NudDsKICAgICB9CkBAIC0zMzcsMzMgKzQxMiwyNyBAQAogICAgVGhlIGNvbnN0cyBvYmplY3Qgc2hvdWxkIHN0aWxsIGJlIGluIGxpc3QgZm9ybSB0byBhbGxvdyBuZXcgY29uc3RhbnRzCiAgICB0byBiZSBhcHBlbmRlZC4KIAotICAgVG8ga2VlcCB0aGUgb3B0aW1pemVyIHNpbXBsZSwgaXQgYmFpbHMgb3V0IChkb2VzIG5vdGhpbmcpIGZvciBjb2RlIHRoYXQKLSAgIGhhcyBhIGxlbmd0aCBvdmVyIDMyLDcwMCwgYW5kIGRvZXMgbm90IGNhbGN1bGF0ZSBleHRlbmRlZCBhcmd1bWVudHMuCi0gICBUaGF0IGFsbG93cyB1cyB0byBhdm9pZCBvdmVyZmxvdyBhbmQgc2lnbiBpc3N1ZXMuIExpa2V3aXNlLCBpdCBiYWlscyB3aGVuCi0gICB0aGUgbGluZW5vIHRhYmxlIGhhcyBjb21wbGV4IGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4gRVhURU5ERURfQVJHIGNhbgotICAgYXBwZWFyIGJlZm9yZSBNQUtFX0ZVTkNUSU9OOyBpbiB0aGlzIGNhc2UgYm90aCBvcGNvZGVzIGFyZSBza2lwcGVkLgotICAgRVhURU5ERURfQVJHIHByZWNlZGluZyBhbnkgb3RoZXIgb3Bjb2RlIGNhdXNlcyB0aGUgb3B0aW1pemVyIHRvIGJhaWwuCisgICBUbyBrZWVwIHRoZSBvcHRpbWl6ZXIgc2ltcGxlLCBpdCBiYWlscyB3aGVuIHRoZSBsaW5lbm8gdGFibGUgaGFzIGNvbXBsZXgKKyAgIGVuY29kaW5nIGZvciBnYXBzID49IDI1NS4KIAogICAgT3B0aW1pemF0aW9ucyBhcmUgcmVzdHJpY3RlZCB0byBzaW1wbGUgdHJhbnNmb3JtYXRpb25zIG9jY3VycmluZyB3aXRoaW4gYQogICAgc2luZ2xlIGJhc2ljIGJsb2NrLiAgQWxsIHRyYW5zZm9ybWF0aW9ucyBrZWVwIHRoZSBjb2RlIHNpemUgdGhlIHNhbWUgb3IKICAgIHNtYWxsZXIuICBGb3IgdGhvc2UgdGhhdCByZWR1Y2Ugc2l6ZSwgdGhlIGdhcHMgYXJlIGluaXRpYWxseSBmaWxsZWQgd2l0aAogICAgTk9Qcy4gIExhdGVyIHRob3NlIE5PUHMgYXJlIHJlbW92ZWQgYW5kIHRoZSBqdW1wIGFkZHJlc3NlcyByZXRhcmdldGVkIGluCi0gICBhIHNpbmdsZSBwYXNzLiAgTGluZSBudW1iZXJpbmcgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuICovCisgICBhIHNpbmdsZSBwYXNzLiAqLwogCiBQeU9iamVjdCAqCiBQeUNvZGVfT3B0aW1pemUoUHlPYmplY3QgKmNvZGUsIFB5T2JqZWN0KiBjb25zdHMsIFB5T2JqZWN0ICpuYW1lcywKLSAgICAgICAgICAgICAgICBQeU9iamVjdCAqbGluZW5vX29iaikKKyAgICAgICAgICAgICAgICBQeU9iamVjdCAqbG5vdGFiX29iaikKIHsKLSAgICBQeV9zc2l6ZV90IGksIGosIGNvZGVsZW47Ci0gICAgaW50IG5vcHMsIGgsIGFkajsKLSAgICBpbnQgdGd0LCB0Z3R0Z3QsIG9wY29kZTsKLSAgICB1bnNpZ25lZCBjaGFyICpjb2Rlc3RyID0gTlVMTDsKLSAgICB1bnNpZ25lZCBjaGFyICpsaW5lbm87Ci0gICAgaW50ICphZGRybWFwID0gTlVMTDsKLSAgICBpbnQgbmV3X2xpbmUsIGN1bV9vcmlnX2xpbmUsIGxhc3RfbGluZTsKKyAgICBQeV9zc2l6ZV90IGgsIGksIG5leHRpLCBvcF9zdGFydCwgY29kZWxlbiwgdGd0OworICAgIHVuc2lnbmVkIGludCBqLCBub3BzOworICAgIHVuc2lnbmVkIGNoYXIgb3Bjb2RlLCBuZXh0b3A7CisgICAgX1B5X0NPREVVTklUICpjb2Rlc3RyID0gTlVMTDsKKyAgICB1bnNpZ25lZCBjaGFyICpsbm90YWI7CisgICAgdW5zaWduZWQgaW50IGN1bV9vcmlnX29mZnNldCwgbGFzdF9vZmZzZXQ7CiAgICAgUHlfc3NpemVfdCB0YWJzaXo7CiAgICAgUHlPYmplY3QgKipjb25zdF9zdGFjayA9IE5VTEw7Ci0gICAgUHlfc3NpemVfdCAqbG9hZF9jb25zdF9zdGFjayA9IE5VTEw7CiAgICAgUHlfc3NpemVfdCBjb25zdF9zdGFja190b3AgPSAtMTsKICAgICBQeV9zc2l6ZV90IGNvbnN0X3N0YWNrX3NpemUgPSAwOwogICAgIGludCBpbl9jb25zdHMgPSAwOyAgLyogd2hldGhlciB3ZSBhcmUgaW4gYSBMT0FEX0NPTlNUIHNlcXVlbmNlICovCkBAIC0zNzMsNDIgKzQ0MiwzMCBAQAogICAgIGlmIChQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICBnb3RvIGV4aXRFcnJvcjsKIAotICAgIC8qIEJ5cGFzcyBvcHRpbWl6YXRpb24gd2hlbiB0aGUgbGluZW5vIHRhYmxlIGlzIHRvbyBjb21wbGV4ICovCi0gICAgYXNzZXJ0KFB5Qnl0ZXNfQ2hlY2sobGluZW5vX29iaikpOwotICAgIGxpbmVubyA9ICh1bnNpZ25lZCBjaGFyKilQeUJ5dGVzX0FTX1NUUklORyhsaW5lbm9fb2JqKTsKLSAgICB0YWJzaXogPSBQeUJ5dGVzX0dFVF9TSVpFKGxpbmVub19vYmopOwotICAgIGlmIChtZW1jaHIobGluZW5vLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkKKyAgICAvKiBCeXBhc3Mgb3B0aW1pemF0aW9uIHdoZW4gdGhlIGxub3RhYiB0YWJsZSBpcyB0b28gY29tcGxleCAqLworICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGxub3RhYl9vYmopKTsKKyAgICBsbm90YWIgPSAodW5zaWduZWQgY2hhciopUHlCeXRlc19BU19TVFJJTkcobG5vdGFiX29iaik7CisgICAgdGFic2l6ID0gUHlCeXRlc19HRVRfU0laRShsbm90YWJfb2JqKTsKKyAgICBhc3NlcnQodGFic2l6ID09IDAgfHwgUHlfUkVGQ05UKGxub3RhYl9vYmopID09IDEpOworICAgIGlmIChtZW1jaHIobG5vdGFiLCAyNTUsIHRhYnNpeikgIT0gTlVMTCkgeworICAgICAgICAvKiAyNTUgdmFsdWUgYXJlIHVzZWQgZm9yIG11bHRpYnl0ZSBieXRlY29kZSBpbnN0cnVjdGlvbnMgKi8KICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgIH0KKyAgICAvKiBOb3RlOiAtMTI4IGFuZCAxMjcgc3BlY2lhbCB2YWx1ZXMgZm9yIGxpbmUgbnVtYmVyIGRlbHRhIGFyZSBvaywKKyAgICAgICB0aGUgcGVlcGhvbGUgb3B0aW1pemVyIGRvZXNuJ3QgbW9kaWZ5IGxpbmUgbnVtYmVycy4gKi8KIAotICAgIC8qIEF2b2lkIHNpdHVhdGlvbnMgd2hlcmUganVtcCByZXRhcmdldGluZyBjb3VsZCBvdmVyZmxvdyAqLwogICAgIGFzc2VydChQeUJ5dGVzX0NoZWNrKGNvZGUpKTsKICAgICBjb2RlbGVuID0gUHlCeXRlc19HRVRfU0laRShjb2RlKTsKLSAgICBpZiAoY29kZWxlbiA+IDMyNzAwKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7CisgICAgYXNzZXJ0KGNvZGVsZW4gJSBzaXplb2YoX1B5X0NPREVVTklUKSA9PSAwKTsKIAogICAgIC8qIE1ha2UgYSBtb2RpZmlhYmxlIGNvcHkgb2YgdGhlIGNvZGUgc3RyaW5nICovCi0gICAgY29kZXN0ciA9ICh1bnNpZ25lZCBjaGFyICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOworICAgIGNvZGVzdHIgPSAoX1B5X0NPREVVTklUICopUHlNZW1fTWFsbG9jKGNvZGVsZW4pOwogICAgIGlmIChjb2Rlc3RyID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfTm9NZW1vcnkoKTsKICAgICAgICAgZ290byBleGl0RXJyb3I7CiAgICAgfQotICAgIGNvZGVzdHIgPSAodW5zaWduZWQgY2hhciAqKW1lbWNweShjb2Rlc3RyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeUJ5dGVzX0FTX1NUUklORyhjb2RlKSwgY29kZWxlbik7Ci0KLSAgICAvKiBWZXJpZnkgdGhhdCBSRVRVUk5fVkFMVUUgdGVybWluYXRlcyB0aGUgY29kZXN0cmluZy4gICAgICBUaGlzIGFsbG93cwotICAgICAgIHRoZSB2YXJpb3VzIHRyYW5zZm9ybWF0aW9uIHBhdHRlcm5zIHRvIGxvb2sgYWhlYWQgc2V2ZXJhbAotICAgICAgIGluc3RydWN0aW9ucyB3aXRob3V0IGFkZGl0aW9uYWwgY2hlY2tzIHRvIG1ha2Ugc3VyZSB0aGV5IGFyZSBub3QKLSAgICAgICBsb29raW5nIGJleW9uZCB0aGUgZW5kIG9mIHRoZSBjb2RlIHN0cmluZy4KLSAgICAqLwotICAgIGlmIChjb2Rlc3RyW2NvZGVsZW4tMV0gIT0gUkVUVVJOX1ZBTFVFKQotICAgICAgICBnb3RvIGV4aXRVbmNoYW5nZWQ7Ci0KLSAgICAvKiBNYXBwaW5nIHRvIG5ldyBqdW1wIHRhcmdldHMgYWZ0ZXIgTk9QcyBhcmUgcmVtb3ZlZCAqLwotICAgIGFkZHJtYXAgPSBQeU1lbV9OZXcoaW50LCBjb2RlbGVuKTsKLSAgICBpZiAoYWRkcm1hcCA9PSBOVUxMKSB7Ci0gICAgICAgIFB5RXJyX05vTWVtb3J5KCk7Ci0gICAgICAgIGdvdG8gZXhpdEVycm9yOwotICAgIH0KKyAgICBtZW1jcHkoY29kZXN0ciwgUHlCeXRlc19BU19TVFJJTkcoY29kZSksIGNvZGVsZW4pOworICAgIGNvZGVsZW4gLz0gc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAKICAgICBibG9ja3MgPSBtYXJrYmxvY2tzKGNvZGVzdHIsIGNvZGVsZW4pOwogICAgIGlmIChibG9ja3MgPT0gTlVMTCkKQEAgLTQxNyw5ICs0NzQsMTcgQEAKIAogICAgIENPTlNUX1NUQUNLX0NSRUFURSgpOwogCi0gICAgZm9yIChpPTAgOyBpPGNvZGVsZW4gOyBpICs9IENPREVTSVpFKGNvZGVzdHJbaV0pKSB7Ci0gICAgICByZW9wdGltaXplX2N1cnJlbnQ6Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChpPWZpbmRfb3AoY29kZXN0ciwgMCkgOyBpPGNvZGVsZW4gOyBpPW5leHRpKSB7CisgICAgICAgIG9wY29kZSA9IF9QeV9PUENPREUoY29kZXN0cltpXSk7CisgICAgICAgIG9wX3N0YXJ0ID0gaTsKKyAgICAgICAgd2hpbGUgKG9wX3N0YXJ0ID49IDEgJiYgX1B5X09QQ09ERShjb2Rlc3RyW29wX3N0YXJ0LTFdKSA9PSBFWFRFTkRFRF9BUkcpIHsKKyAgICAgICAgICAgIG9wX3N0YXJ0LS07CisgICAgICAgIH0KKworICAgICAgICBuZXh0aSA9IGkgKyAxOworICAgICAgICB3aGlsZSAobmV4dGkgPCBjb2RlbGVuICYmIF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pID09IEVYVEVOREVEX0FSRykKKyAgICAgICAgICAgIG5leHRpKys7CisgICAgICAgIG5leHRvcCA9IG5leHRpIDwgY29kZWxlbiA/IF9QeV9PUENPREUoY29kZXN0cltuZXh0aV0pIDogMDsKIAogICAgICAgICBpZiAoIWluX2NvbnN0cykgewogICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUkVTRVQoKTsKQEAgLTQzMCwxNCArNDk1LDEyIEBACiAgICAgICAgICAgICAvKiBSZXBsYWNlIFVOQVJZX05PVCBQT1BfSlVNUF9JRl9GQUxTRQogICAgICAgICAgICAgICAgd2l0aCAgICBQT1BfSlVNUF9JRl9UUlVFICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05PVDoKLSAgICAgICAgICAgICAgICBpZiAoY29kZXN0cltpKzFdICE9IFBPUF9KVU1QX0lGX0ZBTFNFCi0gICAgICAgICAgICAgICAgICAgIHx8ICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSsxKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gUE9QX0pVTVBfSUZfVFJVRTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7Ci0gICAgICAgICAgICAgICAgY29kZXN0cltpKzNdID0gTk9QOwotICAgICAgICAgICAgICAgIGdvdG8gcmVvcHRpbWl6ZV9jdXJyZW50OworICAgICAgICAgICAgICAgIGlmIChuZXh0b3AgIT0gUE9QX0pVTVBfSUZfRkFMU0UKKyAgICAgICAgICAgICAgICAgICAgfHwgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCwgaSArIDEpOworICAgICAgICAgICAgICAgIGNvZGVzdHJbbmV4dGldID0gUEFDS09QQVJHKFBPUF9KVU1QX0lGX1RSVUUsIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkpOworICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogbm90IGEgaXMgYiAtLT4gIGEgaXMgbm90IGIKICAgICAgICAgICAgICAgICAgICBub3QgYSBpbiBiIC0tPiAgYSBub3QgaW4gYgpAQCAtNDQ1LDc4ICs1MDgsNzYgQEAKICAgICAgICAgICAgICAgICAgICBub3QgYSBub3QgaW4gYiAtLT4gIGEgaW4gYgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIENPTVBBUkVfT1A6Ci0gICAgICAgICAgICAgICAgaiA9IEdFVEFSRyhjb2Rlc3RyLCBpKTsKLSAgICAgICAgICAgICAgICBpZiAoaiA8IDYgIHx8ICBqID4gOSAgfHwKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzNdICE9IFVOQVJZX05PVCAgfHwKLSAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsaSw0KSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIChqXjEpKTsKLSAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM10gPSBOT1A7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPCA2IHx8IGogPiA5IHx8CisgICAgICAgICAgICAgICAgICAgIG5leHRvcCAhPSBVTkFSWV9OT1QgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQQUNLT1BBUkcob3Bjb2RlLCBqXjEpOworICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgbmV4dGkgKyAxKTsKICAgICAgICAgICAgICAgICBicmVhazsKIAogICAgICAgICAgICAgICAgIC8qIFNraXAgb3ZlciBMT0FEX0NPTlNUIHRydWVjb25zdAotICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiBUaGlzIGltcHJvdmVzCi0gICAgICAgICAgICAgICAgICAgIndoaWxlIDEiIHBlcmZvcm1hbmNlLiAqLworICAgICAgICAgICAgICAgICAgIFBPUF9KVU1QX0lGX0ZBTFNFIHh4LiAgVGhpcyBpbXByb3ZlcworICAgICAgICAgICAgICAgICAgICJ3aGlsZSAxIiBwZXJmb3JtYW5jZS4gICovCiAgICAgICAgICAgICBjYXNlIExPQURfQ09OU1Q6CiAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICBqID0gR0VUQVJHKGNvZGVzdHIsIGkpOwotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gUE9QX0pVTVBfSUZfRkFMU0UgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFJU0JBU0lDQkxPQ0soYmxvY2tzLGksNikgIHx8Ci0gICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgaikpKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpLCBOT1AsIDYpOwotICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CisgICAgICAgICAgICAgICAgaWYgKG5leHRvcCAhPSBQT1BfSlVNUF9JRl9GQUxTRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgIHx8CisgICAgICAgICAgICAgICAgICAgICFQeU9iamVjdF9Jc1RydWUoUHlMaXN0X0dFVF9JVEVNKGNvbnN0cywgZ2V0X2FyZyhjb2Rlc3RyLCBpKSkpKQorICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CisgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwogICAgICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgICAgICAgICAgLyogVHJ5IHRvIGZvbGQgdHVwbGVzIG9mIGNvbnN0YW50cyAoaW5jbHVkZXMgYSBjYXNlIGZvciBsaXN0cyBhbmQgc2V0cwotICAgICAgICAgICAgICAgICAgIHdoaWNoIGFyZSBvbmx5IHVzZWQgZm9yICJpbiIgYW5kICJub3QgaW4iIHRlc3RzKS4KKyAgICAgICAgICAgICAgICAvKiBUcnkgdG8gZm9sZCB0dXBsZXMgb2YgY29uc3RhbnRzIChpbmNsdWRlcyBhIGNhc2UgZm9yIGxpc3RzCisgICAgICAgICAgICAgICAgICAgYW5kIHNldHMgd2hpY2ggYXJlIG9ubHkgdXNlZCBmb3IgImluIiBhbmQgIm5vdCBpbiIgdGVzdHMpLgogICAgICAgICAgICAgICAgICAgIFNraXAgb3ZlciBCVUlMRF9TRVFOIDEgVU5QQUNLX1NFUU4gMS4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMiBVTlBBQ0tfU0VRTiAyIHdpdGggUk9UMi4KICAgICAgICAgICAgICAgICAgICBSZXBsYWNlIEJVSUxEX1NFUU4gMyBVTlBBQ0tfU0VRTiAzIHdpdGggUk9UMyBST1QyLiAqLwogICAgICAgICAgICAgY2FzZSBCVUlMRF9UVVBMRToKICAgICAgICAgICAgIGNhc2UgQlVJTERfTElTVDoKICAgICAgICAgICAgIGNhc2UgQlVJTERfU0VUOgotICAgICAgICAgICAgICAgIGogPSBHRVRBUkcoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaWYgKGogPT0gMCkKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgaCA9IENPTlNUX1NUQUNLX09QX0xBU1ROKGopOwotICAgICAgICAgICAgICAgIGFzc2VydCgoaCA+PSAwIHx8IENPTlNUX1NUQUNLX0xFTigpIDwgaikpOwotICAgICAgICAgICAgICAgIGlmIChoID49IDAgJiYgaiA+IDAgJiYgaiA8PSBDT05TVF9TVEFDS19MRU4oKSAmJgotICAgICAgICAgICAgICAgICAgICAoKG9wY29kZSA9PSBCVUlMRF9UVVBMRSAmJgotICAgICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCszKSkgfHwKLSAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2krM109PUNPTVBBUkVfT1AgJiYKLSAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrNikgJiYKLSAgICAgICAgICAgICAgICAgICAgICAoR0VUQVJHKGNvZGVzdHIsaSszKT09NiB8fAotICAgICAgICAgICAgICAgICAgICAgICBHRVRBUkcoY29kZXN0cixpKzMpPT03KSkpICYmCi0gICAgICAgICAgICAgICAgICAgIHR1cGxlX29mX2NvbnN0YW50cygmY29kZXN0cltpXSwgaiwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTihqKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgYXNzZXJ0KGNvZGVzdHJbaV0gPT0gTE9BRF9DT05TVCk7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldCgmY29kZXN0cltoXSwgTk9QLCBpIC0gaCk7Ci0gICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUChqKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChpKTsKLSAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgaiA9IGdldF9hcmcoY29kZXN0ciwgaSk7CisgICAgICAgICAgICAgICAgaWYgKGogPiAwICYmIENPTlNUX1NUQUNLX0xFTigpID49IGopIHsKKyAgICAgICAgICAgICAgICAgICAgaCA9IGxhc3RuX2NvbnN0X3N0YXJ0KGNvZGVzdHIsIG9wX3N0YXJ0LCBqKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKChvcGNvZGUgPT0gQlVJTERfVFVQTEUgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcywgaCwgb3Bfc3RhcnQpKSB8fAorICAgICAgICAgICAgICAgICAgICAgICAgICgob3Bjb2RlID09IEJVSUxEX0xJU1QgfHwgb3Bjb2RlID09IEJVSUxEX1NFVCkgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKChuZXh0b3A9PUNPTVBBUkVfT1AgJiYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfSU4gfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9PUEFSRyhjb2Rlc3RyW25leHRpXSkgPT0gUHlDbXBfTk9UX0lOKSkgfHwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dG9wID09IEdFVF9JVEVSKSAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpICsgMSkpKSB7CisgICAgICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF90dXBsZV9vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdHMsIENPTlNUX1NUQUNLX0xBU1ROKGopLCBqKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QT1Aoaik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gVU5QQUNLX1NFUVVFTkNFICB8fAotICAgICAgICAgICAgICAgICAgICAhSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDYpIHx8Ci0gICAgICAgICAgICAgICAgICAgIGogIT0gR0VUQVJHKGNvZGVzdHIsIGkrMykgfHwKKyAgICAgICAgICAgICAgICBpZiAobmV4dG9wICE9IFVOUEFDS19TRVFVRU5DRSAgfHwKKyAgICAgICAgICAgICAgICAgICAgIUlTQkFTSUNCTE9DSyhibG9ja3MsIG9wX3N0YXJ0LCBpICsgMSkgfHwKKyAgICAgICAgICAgICAgICAgICAgaiAhPSBnZXRfYXJnKGNvZGVzdHIsIG5leHRpKSB8fAogICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPT0gQlVJTERfU0VUKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICBpZiAoaiA9PSAxKSB7Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2ksIE5PUCwgNik7CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGlmIChqIDwgMikgeworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDIpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9UV087Ci0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCA1KTsKKyAgICAgICAgICAgICAgICAgICAgY29kZXN0cltvcF9zdGFydF0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDEsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChqID09IDMpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJPVF9USFJFRTsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpKzFdID0gUk9UX1RXTzsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsyLCBOT1AsIDQpOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhST1RfVEhSRUUsIDApOworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0ICsgMV0gPSBQQUNLT1BBUkcoUk9UX1RXTywgMCk7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBvcF9zdGFydCArIDIsIG5leHRpICsgMSk7CiAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1JFU0VUKCk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogCiAgICAgICAgICAgICAgICAgLyogRm9sZCBiaW5hcnkgb3BzIG9uIGNvbnN0YW50cy4KLSAgICAgICAgICAgICAgICAgICBMT0FEX0NPTlNUIGMxIExPQURfQ09OU1QgYzIgQklOT1AgLS0+ICBMT0FEX0NPTlNUIGJpbm9wKGMxLGMyKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgTE9BRF9DT05TVCBjMiBCSU5PUCAtLT4gTE9BRF9DT05TVCBiaW5vcChjMSxjMikgKi8KICAgICAgICAgICAgIGNhc2UgQklOQVJZX1BPV0VSOgogICAgICAgICAgICAgY2FzZSBCSU5BUllfTVVMVElQTFk6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9UUlVFX0RJVklERToKQEAgLTUzMCwzNSArNTkxLDM0IEBACiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9BTkQ6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9YT1I6CiAgICAgICAgICAgICBjYXNlIEJJTkFSWV9PUjoKLSAgICAgICAgICAgICAgICAvKiBOT1RFOiBMT0FEX0NPTlNUIGlzIHNhdmVkIGF0IGBpLTJgIHNpbmNlIGl0IGhhcyBhbiBhcmcKLSAgICAgICAgICAgICAgICAgICB3aGlsZSBCSU5PUCBoYXNuJ3QgKi8KLSAgICAgICAgICAgICAgICBoID0gQ09OU1RfU1RBQ0tfT1BfTEFTVE4oMik7Ci0gICAgICAgICAgICAgICAgYXNzZXJ0KChoID49IDAgfHwgQ09OU1RfU1RBQ0tfTEVOKCkgPCAyKSk7Ci0gICAgICAgICAgICAgICAgaWYgKGggPj0gMCAmJgotICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLCBoLCBpLWgrMSkgICYmCi0gICAgICAgICAgICAgICAgICAgIGZvbGRfYmlub3BzX29uX2NvbnN0YW50cygmY29kZXN0cltpXSwgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoJmNvZGVzdHJbaF0sIE5PUCwgaSAtIGgpOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDIpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDIpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMik7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF9iaW5vcHNfb25fY29uc3RhbnRzKGNvZGVzdHIsIGgsIGkgKyAxLCBvcGNvZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3RzLCBDT05TVF9TVEFDS19MQVNUTigyKSk7CisgICAgICAgICAgICAgICAgICAgIGlmIChoID49IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BPUCgyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIENPTlNUX1NUQUNLX1BVU0hfT1AoaCk7CisgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgICAgICAvKiBGb2xkIHVuYXJ5IG9wcyBvbiBjb25zdGFudHMuCi0gICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCBjMSAgVU5BUllfT1AgLS0+ICAgICAgICAgICAgICAgICAgTE9BRF9DT05TVCB1bmFyeV9vcChjKSAqLworICAgICAgICAgICAgICAgICAgIExPQURfQ09OU1QgYzEgIFVOQVJZX09QIC0tPiBMT0FEX0NPTlNUIHVuYXJ5X29wKGMpICovCiAgICAgICAgICAgICBjYXNlIFVOQVJZX05FR0FUSVZFOgogICAgICAgICAgICAgY2FzZSBVTkFSWV9JTlZFUlQ6CiAgICAgICAgICAgICBjYXNlIFVOQVJZX1BPU0lUSVZFOgotICAgICAgICAgICAgICAgIGggPSBDT05TVF9TVEFDS19PUF9MQVNUTigxKTsKLSAgICAgICAgICAgICAgICBhc3NlcnQoKGggPj0gMCB8fCBDT05TVF9TVEFDS19MRU4oKSA8IDEpKTsKLSAgICAgICAgICAgICAgICBpZiAoaCA+PSAwICYmCi0gICAgICAgICAgICAgICAgICAgIElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIGktaCsxKSAgJiYKLSAgICAgICAgICAgICAgICAgICAgZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoJmNvZGVzdHJbaS0zXSwgY29uc3RzLCBDT05TVF9TVEFDS19UT1AoKSkpIHsKLSAgICAgICAgICAgICAgICAgICAgaSAtPSAyOwotICAgICAgICAgICAgICAgICAgICBhc3NlcnQoY29kZXN0cltpXSA9PSBMT0FEX0NPTlNUKTsKLSAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOwotICAgICAgICAgICAgICAgICAgICBDT05TVF9TVEFDS19QVVNIX09QKGkpOworICAgICAgICAgICAgICAgIGlmIChDT05TVF9TVEFDS19MRU4oKSA8IDEpCisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIGggPSBsYXN0bl9jb25zdF9zdGFydChjb2Rlc3RyLCBvcF9zdGFydCwgMSk7CisgICAgICAgICAgICAgICAgaWYgKElTQkFTSUNCTE9DSyhibG9ja3MsIGgsIG9wX3N0YXJ0KSkgeworICAgICAgICAgICAgICAgICAgICBoID0gZm9sZF91bmFyeW9wc19vbl9jb25zdGFudHMoY29kZXN0ciwgaCwgaSArIDEsIG9wY29kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0cywgKkNPTlNUX1NUQUNLX0xBU1ROKDEpKTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUE9QKDEpOworICAgICAgICAgICAgICAgICAgICAgICAgQ09OU1RfU1RBQ0tfUFVTSF9PUChoKTsKKyAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBicmVhazsKIApAQCAtNTczLDM5ICs2MzMsMzYgQEAKICAgICAgICAgICAgICAgICAgICB4OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHkgICB5OkpVTVBfSUZfRkFMU0VfT1JfUE9QIHoKICAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgegogICAgICAgICAgICAgICAgICAgIHg6SlVNUF9JRl9GQUxTRV9PUl9QT1AgeSAgIHk6SlVNUF9JRl9UUlVFX09SX1BPUCB6Ci0gICAgICAgICAgICAgICAgICAgICAgLS0+ICB4OlBPUF9KVU1QX0lGX0ZBTFNFIHkrMwotICAgICAgICAgICAgICAgICAgIHdoZXJlIHkrMyBpcyB0aGUgaW5zdHJ1Y3Rpb24gZm9sbG93aW5nIHRoZSBzZWNvbmQgdGVzdC4KKyAgICAgICAgICAgICAgICAgICAgICAtLT4gIHg6UE9QX0pVTVBfSUZfRkFMU0UgeSsxCisgICAgICAgICAgICAgICAgICAgd2hlcmUgeSsxIGlzIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIHNlY29uZCB0ZXN0LgogICAgICAgICAgICAgICAgICovCiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfRkFMU0VfT1JfUE9QOgogICAgICAgICAgICAgY2FzZSBKVU1QX0lGX1RSVUVfT1JfUE9QOgotICAgICAgICAgICAgICAgIHRndCA9IEdFVEpVTVBUR1QoY29kZXN0ciwgaSk7Ci0gICAgICAgICAgICAgICAgaiA9IGNvZGVzdHJbdGd0XTsKKyAgICAgICAgICAgICAgICBoID0gZ2V0X2FyZyhjb2Rlc3RyLCBpKSAvIHNpemVvZihfUHlfQ09ERVVOSVQpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisKKyAgICAgICAgICAgICAgICBqID0gX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pOwogICAgICAgICAgICAgICAgIGlmIChDT05ESVRJT05BTF9KVU1QKGopKSB7Ci0gICAgICAgICAgICAgICAgICAgIC8qIE5PVEU6IGFsbCBwb3NzaWJsZSBqdW1wcyBoZXJlIGFyZQotICAgICAgICAgICAgICAgICAgICAgICBhYnNvbHV0ZSEgKi8KKyAgICAgICAgICAgICAgICAgICAgLyogTk9URTogYWxsIHBvc3NpYmxlIGp1bXBzIGhlcmUgYXJlIGFic29sdXRlLiAqLwogICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShqKSA9PSBKVU1QU19PTl9UUlVFKG9wY29kZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgIC8qIFRoZSBzZWNvbmQganVtcCB3aWxsIGJlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLiAqLwotICAgICAgICAgICAgICAgICAgICAgICAgdGd0dGd0ID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpdHMgdGFyZ2V0J3Mgc3RhY2sgYmVoYXZpb3VyICovCi0gICAgICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW2ldID0gajsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCB0Z3R0Z3QpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgd2lsbCBiZSB0YWtlbiBpZmYgdGhlIGZpcnN0IGlzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIGN1cnJlbnQgb3Bjb2RlIGluaGVyaXRzIGl0cyB0YXJnZXQncworICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhY2sgZWZmZWN0ICovCisgICAgICAgICAgICAgICAgICAgICAgICBoID0gc2V0X2FyZyhjb2Rlc3RyLCBpLCBnZXRfYXJnKGNvZGVzdHIsIHRndCkpOwogICAgICAgICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgICAgICAgICAgLyogVGhlIHNlY29uZCBqdW1wIGlzIG5vdCB0YWtlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGhlIGZpcnN0IGlzIChzbyBqdW1wIHBhc3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0KSwgYW5kIGFsbCBjb25kaXRpb25hbAotICAgICAgICAgICAgICAgICAgICAgICAgICAganVtcHMgcG9wIHRoZWlyIGFyZ3VtZW50IHdoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBmaXJzdCBqdW1wIHRvIHBvcCBpdHMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3VtZW50IHdoZW4gaXQncyB0YWtlbikuICovCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoSlVNUFNfT05fVFJVRShvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9UUlVFOwotICAgICAgICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBQT1BfSlVNUF9JRl9GQUxTRTsKLSAgICAgICAgICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCAodGd0ICsgMykpOwotICAgICAgICAgICAgICAgICAgICAgICAgZ290byByZW9wdGltaXplX2N1cnJlbnQ7CisgICAgICAgICAgICAgICAgICAgICAgICAvKiBUaGUgc2Vjb25kIGp1bXAgaXMgbm90IHRha2VuIGlmIHRoZSBmaXJzdCBpcyAoc28KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGp1bXAgcGFzdCBpdCksIGFuZCBhbGwgY29uZGl0aW9uYWwganVtcHMgcG9wIHRoZWlyCisgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmd1bWVudCB3aGVuIHRoZXkncmUgbm90IHRha2VuIChzbyBjaGFuZ2UgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBmaXJzdCBqdW1wIHRvIHBvcCBpdHMgYXJndW1lbnQgd2hlbiBpdCdzIHRha2VuKS4gKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIGggPSBzZXRfYXJnKGNvZGVzdHIsIGksICh0Z3QgKyAxKSAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIGogPSBvcGNvZGUgPT0gSlVNUF9JRl9UUlVFX09SX1BPUCA/CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUE9QX0pVTVBfSUZfVFJVRSA6IFBPUF9KVU1QX0lGX0ZBTFNFOworICAgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKGggPj0gMCkgeworICAgICAgICAgICAgICAgICAgICAgICAgbmV4dGkgPSBoOworICAgICAgICAgICAgICAgICAgICAgICAgY29kZXN0cltuZXh0aV0gPSBQQUNLT1BBUkcoaiwgX1B5X09QQVJHKGNvZGVzdHJbbmV4dGldKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICAvKiBJbnRlbnRpb25hbCBmYWxsdGhyb3VnaCAqLwpAQCAtNjIyLDczICs2NzksNzQgQEAKICAgICAgICAgICAgIGNhc2UgU0VUVVBfRklOQUxMWToKICAgICAgICAgICAgIGNhc2UgU0VUVVBfV0lUSDoKICAgICAgICAgICAgIGNhc2UgU0VUVVBfQVNZTkNfV0lUSDoKLSAgICAgICAgICAgICAgICB0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIGggPSBHRVRKVU1QVEdUKGNvZGVzdHIsIGkpOworICAgICAgICAgICAgICAgIHRndCA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CiAgICAgICAgICAgICAgICAgLyogUmVwbGFjZSBKVU1QXyogdG8gYSBSRVRVUk4gaW50byBqdXN0IGEgUkVUVVJOICovCiAgICAgICAgICAgICAgICAgaWYgKFVOQ09ORElUSU9OQUxfSlVNUChvcGNvZGUpICYmCi0gICAgICAgICAgICAgICAgICAgIGNvZGVzdHJbdGd0XSA9PSBSRVRVUk5fVkFMVUUpIHsKLSAgICAgICAgICAgICAgICAgICAgY29kZXN0cltpXSA9IFJFVFVSTl9WQUxVRTsKLSAgICAgICAgICAgICAgICAgICAgbWVtc2V0KGNvZGVzdHIraSsxLCBOT1AsIDIpOwotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgICAgICAgICAgX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pID09IFJFVFVSTl9WQUxVRSkgeworICAgICAgICAgICAgICAgICAgICBjb2Rlc3RyW29wX3N0YXJ0XSA9IFBBQ0tPUEFSRyhSRVRVUk5fVkFMVUUsIDApOworICAgICAgICAgICAgICAgICAgICBmaWxsX25vcHMoY29kZXN0ciwgb3Bfc3RhcnQgKyAxLCBpICsgMSk7CisgICAgICAgICAgICAgICAgfSBlbHNlIGlmIChVTkNPTkRJVElPTkFMX0pVTVAoX1B5X09QQ09ERShjb2Rlc3RyW3RndF0pKSkgeworICAgICAgICAgICAgICAgICAgICBqID0gR0VUSlVNUFRHVChjb2Rlc3RyLCB0Z3QpOworICAgICAgICAgICAgICAgICAgICBpZiAob3Bjb2RlID09IEpVTVBfRk9SV0FSRCkgeyAvKiBKTVBfQUJTIGNhbiBnbyBiYWNrd2FyZHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9wY29kZSA9IEpVTVBfQUJTT0xVVEU7CisgICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoIUFCU09MVVRFX0pVTVAob3Bjb2RlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKChQeV9zc2l6ZV90KWogPCBpICsgMSkgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOyAgICAgICAgICAgLyogTm8gYmFja3dhcmQgcmVsYXRpdmUganVtcHMgKi8KKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgIGogLT0gaSArIDE7ICAgICAgICAgIC8qIENhbGMgcmVsYXRpdmUganVtcCBhZGRyICovCisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgICAgICAgICAgICAgY29weV9vcF9hcmcoY29kZXN0ciwgb3Bfc3RhcnQsIG9wY29kZSwgaiwgaSArIDEpOwogICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoIVVOQ09ORElUSU9OQUxfSlVNUChjb2Rlc3RyW3RndF0pKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgICB0Z3R0Z3QgPSBHRVRKVU1QVEdUKGNvZGVzdHIsIHRndCk7Ci0gICAgICAgICAgICAgICAgaWYgKG9wY29kZSA9PSBKVU1QX0ZPUldBUkQpIC8qIEpNUF9BQlMgY2FuIGdvIGJhY2t3YXJkcyAqLwotICAgICAgICAgICAgICAgICAgICBvcGNvZGUgPSBKVU1QX0FCU09MVVRFOwotICAgICAgICAgICAgICAgIGlmICghQUJTT0xVVEVfSlVNUChvcGNvZGUpKQotICAgICAgICAgICAgICAgICAgICB0Z3R0Z3QgLT0gaSArIDM7ICAgICAvKiBDYWxjIHJlbGF0aXZlIGp1bXAgYWRkciAqLwotICAgICAgICAgICAgICAgIGlmICh0Z3R0Z3QgPCAwKSAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE5vIGJhY2t3YXJkIHJlbGF0aXZlIGp1bXBzICovCi0gICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgICAgIGNvZGVzdHJbaV0gPSBvcGNvZGU7Ci0gICAgICAgICAgICAgICAgU0VUQVJHKGNvZGVzdHIsIGksIHRndHRndCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIGNhc2UgRVhURU5ERURfQVJHOgotICAgICAgICAgICAgICAgIGlmIChjb2Rlc3RyW2krM10gIT0gTUFLRV9GVU5DVElPTikKLSAgICAgICAgICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOwotICAgICAgICAgICAgICAgIC8qIGRvbid0IHZpc2l0IE1BS0VfRlVOQ1RJT04gYXMgR0VUQVJHIHdpbGwgYmUgd3JvbmcgKi8KLSAgICAgICAgICAgICAgICBpICs9IDM7Ci0gICAgICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgICAgICAgICAvKiBSZXBsYWNlIFJFVFVSTiBMT0FEX0NPTlNUIE5vbmUgUkVUVVJOIHdpdGgganVzdCBSRVRVUk4gKi8KLSAgICAgICAgICAgICAgICAvKiBSZW1vdmUgdW5yZWFjaGFibGUgSlVNUHMgYWZ0ZXIgUkVUVVJOICovCisgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHVucmVhY2hhYmxlIG9wcyBhZnRlciBSRVRVUk4gKi8KICAgICAgICAgICAgIGNhc2UgUkVUVVJOX1ZBTFVFOgotICAgICAgICAgICAgICAgIGlmIChpKzQgPj0gY29kZWxlbikKLSAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICAgICAgaWYgKGNvZGVzdHJbaSs0XSA9PSBSRVRVUk5fVkFMVUUgJiYKLSAgICAgICAgICAgICAgICAgICAgSVNCQVNJQ0JMT0NLKGJsb2NrcyxpLDUpKQotICAgICAgICAgICAgICAgICAgICBtZW1zZXQoY29kZXN0citpKzEsIE5PUCwgNCk7Ci0gICAgICAgICAgICAgICAgZWxzZSBpZiAoVU5DT05ESVRJT05BTF9KVU1QKGNvZGVzdHJbaSsxXSkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICBJU0JBU0lDQkxPQ0soYmxvY2tzLGksNCkpCi0gICAgICAgICAgICAgICAgICAgIG1lbXNldChjb2Rlc3RyK2krMSwgTk9QLCAzKTsKKyAgICAgICAgICAgICAgICBoID0gaSArIDE7CisgICAgICAgICAgICAgICAgd2hpbGUgKGggKyAxIDwgY29kZWxlbiAmJiBJU0JBU0lDQkxPQ0soYmxvY2tzLCBpLCBoICsgMSkpIHsKKyAgICAgICAgICAgICAgICAgICAgaCsrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBpZiAoaCA+IGkgKyAxKSB7CisgICAgICAgICAgICAgICAgICAgIGZpbGxfbm9wcyhjb2Rlc3RyLCBpICsgMSwgaCArIDEpOworICAgICAgICAgICAgICAgICAgICBuZXh0aSA9IGZpbmRfb3AoY29kZXN0ciwgaCk7CisgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQogCi0gICAgLyogRml4dXAgbGluZW5vdGFiICovCi0gICAgZm9yIChpPTAsIG5vcHM9MCA7IGk8Y29kZWxlbiA7IGkgKz0gQ09ERVNJWkUoY29kZXN0cltpXSkpIHsKKyAgICAvKiBGaXh1cCBsbm90YWIgKi8KKyAgICBmb3IgKGkgPSAwLCBub3BzID0gMDsgaSA8IGNvZGVsZW47IGkrKykgewogICAgICAgICBhc3NlcnQoaSAtIG5vcHMgPD0gSU5UX01BWCk7Ci0gICAgICAgIGFkZHJtYXBbaV0gPSAoaW50KShpIC0gbm9wcyk7Ci0gICAgICAgIGlmIChjb2Rlc3RyW2ldID09IE5PUCkKKyAgICAgICAgLyogb3JpZ2luYWwgY29kZSBvZmZzZXQgPT4gbmV3IGNvZGUgb2Zmc2V0ICovCisgICAgICAgIGJsb2Nrc1tpXSA9IGkgLSBub3BzOworICAgICAgICBpZiAoX1B5X09QQ09ERShjb2Rlc3RyW2ldKSA9PSBOT1ApCiAgICAgICAgICAgICBub3BzKys7CiAgICAgfQotICAgIGN1bV9vcmlnX2xpbmUgPSAwOwotICAgIGxhc3RfbGluZSA9IDA7CisgICAgY3VtX29yaWdfb2Zmc2V0ID0gMDsKKyAgICBsYXN0X29mZnNldCA9IDA7CiAgICAgZm9yIChpPTAgOyBpIDwgdGFic2l6IDsgaSs9MikgewotICAgICAgICBjdW1fb3JpZ19saW5lICs9IGxpbmVub1tpXTsKLSAgICAgICAgbmV3X2xpbmUgPSBhZGRybWFwW2N1bV9vcmlnX2xpbmVdOwotICAgICAgICBhc3NlcnQgKG5ld19saW5lIC0gbGFzdF9saW5lIDwgMjU1KTsKLSAgICAgICAgbGluZW5vW2ldID0oKHVuc2lnbmVkIGNoYXIpKG5ld19saW5lIC0gbGFzdF9saW5lKSk7Ci0gICAgICAgIGxhc3RfbGluZSA9IG5ld19saW5lOworICAgICAgICB1bnNpZ25lZCBpbnQgb2Zmc2V0X2RlbHRhLCBuZXdfb2Zmc2V0OworICAgICAgICBjdW1fb3JpZ19vZmZzZXQgKz0gbG5vdGFiW2ldOworICAgICAgICBhc3NlcnQoY3VtX29yaWdfb2Zmc2V0ICUgc2l6ZW9mKF9QeV9DT0RFVU5JVCkgPT0gMCk7CisgICAgICAgIG5ld19vZmZzZXQgPSBibG9ja3NbY3VtX29yaWdfb2Zmc2V0IC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICoKKyAgICAgICAgICAgICAgICBzaXplb2YoX1B5X0NPREVVTklUKTsKKyAgICAgICAgb2Zmc2V0X2RlbHRhID0gbmV3X29mZnNldCAtIGxhc3Rfb2Zmc2V0OworICAgICAgICBhc3NlcnQob2Zmc2V0X2RlbHRhIDw9IDI1NSk7CisgICAgICAgIGxub3RhYltpXSA9ICh1bnNpZ25lZCBjaGFyKW9mZnNldF9kZWx0YTsKKyAgICAgICAgbGFzdF9vZmZzZXQgPSBuZXdfb2Zmc2V0OwogICAgIH0KIAogICAgIC8qIFJlbW92ZSBOT1BzIGFuZCBmaXh1cCBqdW1wIHRhcmdldHMgKi8KLSAgICBmb3IgKGk9MCwgaD0wIDsgaTxjb2RlbGVuIDsgKSB7Ci0gICAgICAgIG9wY29kZSA9IGNvZGVzdHJbaV07CisgICAgZm9yIChvcF9zdGFydCA9IGkgPSBoID0gMDsgaSA8IGNvZGVsZW47IGkrKywgb3Bfc3RhcnQgPSBpKSB7CisgICAgICAgIGogPSBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIHdoaWxlIChfUHlfT1BDT0RFKGNvZGVzdHJbaV0pID09IEVYVEVOREVEX0FSRykgeworICAgICAgICAgICAgaSsrOworICAgICAgICAgICAgaiA9IGo8PDggfCBfUHlfT1BBUkcoY29kZXN0cltpXSk7CisgICAgICAgIH0KKyAgICAgICAgb3Bjb2RlID0gX1B5X09QQ09ERShjb2Rlc3RyW2ldKTsKICAgICAgICAgc3dpdGNoIChvcGNvZGUpIHsKLSAgICAgICAgICAgIGNhc2UgTk9QOgotICAgICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGNhc2UgTk9QOmNvbnRpbnVlOwogCiAgICAgICAgICAgICBjYXNlIEpVTVBfQUJTT0xVVEU6CiAgICAgICAgICAgICBjYXNlIENPTlRJTlVFX0xPT1A6CkBAIC02OTYsOCArNzU0LDcgQEAKICAgICAgICAgICAgIGNhc2UgUE9QX0pVTVBfSUZfVFJVRToKICAgICAgICAgICAgIGNhc2UgSlVNUF9JRl9GQUxTRV9PUl9QT1A6CiAgICAgICAgICAgICBjYXNlIEpVTVBfSUZfVFJVRV9PUl9QT1A6Ci0gICAgICAgICAgICAgICAgaiA9IGFkZHJtYXBbR0VUQVJHKGNvZGVzdHIsIGkpXTsKLSAgICAgICAgICAgICAgICBTRVRBUkcoY29kZXN0ciwgaSwgaik7CisgICAgICAgICAgICAgICAgaiA9IGJsb2Nrc1tqIC8gc2l6ZW9mKF9QeV9DT0RFVU5JVCldICogc2l6ZW9mKF9QeV9DT0RFVU5JVCk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAKICAgICAgICAgICAgIGNhc2UgRk9SX0lURVI6CkBAIC03MDcsMzQgKzc2NCwzMiBAQAogICAgICAgICAgICAgY2FzZSBTRVRVUF9GSU5BTExZOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9XSVRIOgogICAgICAgICAgICAgY2FzZSBTRVRVUF9BU1lOQ19XSVRIOgotICAgICAgICAgICAgICAgIGogPSBhZGRybWFwW0dFVEFSRyhjb2Rlc3RyLCBpKSArIGkgKyAzXSAtIGFkZHJtYXBbaV0gLSAzOwotICAgICAgICAgICAgICAgIFNFVEFSRyhjb2Rlc3RyLCBpLCBqKTsKKyAgICAgICAgICAgICAgICBqID0gYmxvY2tzW2ogLyBzaXplb2YoX1B5X0NPREVVTklUKSArIGkgKyAxXSAtIGJsb2Nrc1tpXSAtIDE7CisgICAgICAgICAgICAgICAgaiAqPSBzaXplb2YoX1B5X0NPREVVTklUKTsKICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQotICAgICAgICBhZGogPSBDT0RFU0laRShvcGNvZGUpOwotICAgICAgICB3aGlsZSAoYWRqLS0pCi0gICAgICAgICAgICBjb2Rlc3RyW2grK10gPSBjb2Rlc3RyW2krK107CisgICAgICAgIG5leHRpID0gaSAtIG9wX3N0YXJ0ICsgMTsKKyAgICAgICAgaWYgKGluc3Ryc2l6ZShqKSA+IG5leHRpKQorICAgICAgICAgICAgZ290byBleGl0VW5jaGFuZ2VkOworICAgICAgICAvKiBJZiBpbnN0cnNpemUoaikgPCBuZXh0aSwgd2UnbGwgZW1pdCBFWFRFTkRFRF9BUkcgMCAqLworICAgICAgICB3cml0ZV9vcF9hcmcoY29kZXN0ciArIGgsIG9wY29kZSwgaiwgbmV4dGkpOworICAgICAgICBoICs9IG5leHRpOwogICAgIH0KLSAgICBhc3NlcnQoaCArIG5vcHMgPT0gY29kZWxlbik7CisgICAgYXNzZXJ0KGggKyAoUHlfc3NpemVfdClub3BzID09IGNvZGVsZW4pOwogCi0gICAgY29kZSA9IFB5Qnl0ZXNfRnJvbVN0cmluZ0FuZFNpemUoKGNoYXIgKiljb2Rlc3RyLCBoKTsKICAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlNZW1fRnJlZShibG9ja3MpOworICAgIGNvZGUgPSBQeUJ5dGVzX0Zyb21TdHJpbmdBbmRTaXplKChjaGFyICopY29kZXN0ciwgaCAqIHNpemVvZihfUHlfQ09ERVVOSVQpKTsKKyAgICBQeU1lbV9GcmVlKGNvZGVzdHIpOwogICAgIHJldHVybiBjb2RlOwogCiAgZXhpdEVycm9yOgogICAgIGNvZGUgPSBOVUxMOwogCiAgZXhpdFVuY2hhbmdlZDoKLSAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKLSAgICBpZiAoYmxvY2tzICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoYmxvY2tzKTsKLSAgICBpZiAoYWRkcm1hcCAhPSBOVUxMKQotICAgICAgICBQeU1lbV9GcmVlKGFkZHJtYXApOwotICAgIGlmIChjb2Rlc3RyICE9IE5VTEwpCi0gICAgICAgIFB5TWVtX0ZyZWUoY29kZXN0cik7CiAgICAgUHlfWElOQ1JFRihjb2RlKTsKKyAgICBDT05TVF9TVEFDS19ERUxFVEUoKTsKKyAgICBQeU1lbV9GcmVlKGJsb2Nrcyk7CisgICAgUHlNZW1fRnJlZShjb2Rlc3RyKTsKICAgICByZXR1cm4gY29kZTsKIH0KZGlmZiAtLWdpdCBhL1B5dGhvbi9weWhhc2guYyBiL1B5dGhvbi9weWhhc2guYwppbmRleCA5N2NiNTQ3Li41N2EyZGE3IDEwMDY0NAotLS0gYS9QeXRob24vcHloYXNoLmMKKysrIGIvUHl0aG9uL3B5aGFzaC5jCkBAIC0zMTgsNDAgKzMxOCwzNyBAQAogCiAgTW9kaWZpZWQgZm9yIFB5dGhvbiBieSBDaHJpc3RpYW4gSGVpbWVzOgogICAgIC0gQzg5IC8gTVNWQyBjb21wYXRpYmlsaXR5Ci0gICAgLSBQWV9VSU5UNjRfVCwgUFlfVUlOVDMyX1QgYW5kIFBZX1VJTlQ4X1QKICAgICAtIF9yb3RsNjQoKSBvbiBXaW5kb3dzCiAgICAgLSBsZXRvaDY0KCkgZmFsbGJhY2sKICovCiAKLXR5cGVkZWYgdW5zaWduZWQgY2hhciBQWV9VSU5UOF9UOwotCiAvKiBieXRlIHN3YXAgbGl0dGxlIGVuZGlhbiB0byBob3N0IGVuZGlhbgogICogRW5kaWFuIGNvbnZlcnNpb24gbm90IG9ubHkgZW5zdXJlcyB0aGF0IHRoZSBoYXNoIGZ1bmN0aW9uIHJldHVybnMgdGhlIHNhbWUKICAqIHZhbHVlIG9uIGFsbCBwbGF0Zm9ybXMuIEl0IGlzIGFsc28gcmVxdWlyZWQgdG8gZm9yIGEgZ29vZCBkaXNwZXJzaW9uIG9mCiAgKiB0aGUgaGFzaCB2YWx1ZXMnIGxlYXN0IHNpZ25pZmljYW50IGJpdHMuCiAgKi8KICNpZiBQWV9MSVRUTEVfRU5ESUFOCi0jICBkZWZpbmUgX2xlNjR0b2goeCkgKChQWV9VSU5UNjRfVCkoeCkpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCh1aW50NjRfdCkoeCkpCiAjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKICMgIGRlZmluZSBfbGU2NHRvaCh4KSBPU1N3YXBMaXR0bGVUb0hvc3RJbnQ2NCh4KQogI2VsaWYgZGVmaW5lZChIQVZFX0xFVE9INjQpCiAjICBkZWZpbmUgX2xlNjR0b2goeCkgbGU2NHRvaCh4KQogI2Vsc2UKLSMgIGRlZmluZSBfbGU2NHRvaCh4KSAoKChQWV9VSU5UNjRfVCkoeCkgPDwgNTYpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA0MCkgJiAweGZmMDAwMDAwMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPDwgMjQpICYgMHhmZjAwMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA8PCA4KSAgJiAweGZmMDAwMDAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA4KSAgJiAweGZmMDAwMDAwVUxMKSB8IFwKLSAgICAgICAgICAgICAgICAgICAgICAoKChQWV9VSU5UNjRfVCkoeCkgPj4gMjQpICYgMHhmZjAwMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoKFBZX1VJTlQ2NF9UKSh4KSA+PiA0MCkgJiAweGZmMDBVTEwpIHwgXAotICAgICAgICAgICAgICAgICAgICAgICgoUFlfVUlOVDY0X1QpKHgpICA+PiA1NikpCisjICBkZWZpbmUgX2xlNjR0b2goeCkgKCgodWludDY0X3QpKHgpIDw8IDU2KSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgNDApICYgMHhmZjAwMDAwMDAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpIDw8IDI0KSAmIDB4ZmYwMDAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPDwgOCkgICYgMHhmZjAwMDAwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gOCkgICYgMHhmZjAwMDAwMFVMTCkgfCBcCisgICAgICAgICAgICAgICAgICAgICAgKCgodWludDY0X3QpKHgpID4+IDI0KSAmIDB4ZmYwMDAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKCh1aW50NjRfdCkoeCkgPj4gNDApICYgMHhmZjAwVUxMKSB8IFwKKyAgICAgICAgICAgICAgICAgICAgICAoKHVpbnQ2NF90KSh4KSAgPj4gNTYpKQogI2VuZGlmCiAKIAogI2lmZGVmIF9NU0NfVkVSCiAjICBkZWZpbmUgUk9UQVRFKHgsIGIpICBfcm90bDY0KHgsIGIpCiAjZWxzZQotIyAgZGVmaW5lIFJPVEFURSh4LCBiKSAoUFlfVUlOVDY0X1QpKCAoKHgpIDw8IChiKSkgfCAoICh4KSA+PiAoNjQgLSAoYikpKSApCisjICBkZWZpbmUgUk9UQVRFKHgsIGIpICh1aW50NjRfdCkoICgoeCkgPDwgKGIpKSB8ICggKHgpID4+ICg2NCAtIChiKSkpICkKICNlbmRpZgogCiAjZGVmaW5lIEhBTEZfUk9VTkQoYSxiLGMsZCxzLHQpICAgICAgICAgXApAQCAtMzY5LDIyICszNjYsMjIgQEAKIAogc3RhdGljIFB5X2hhc2hfdAogc2lwaGFzaDI0KGNvbnN0IHZvaWQgKnNyYywgUHlfc3NpemVfdCBzcmNfc3opIHsKLSAgICBQWV9VSU5UNjRfVCBrMCA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazApOwotICAgIFBZX1VJTlQ2NF9UIGsxID0gX2xlNjR0b2goX1B5X0hhc2hTZWNyZXQuc2lwaGFzaC5rMSk7Ci0gICAgUFlfVUlOVDY0X1QgYiA9IChQWV9VSU5UNjRfVClzcmNfc3ogPDwgNTY7Ci0gICAgY29uc3QgUFlfVUlOVDY0X1QgKmluID0gKFBZX1VJTlQ2NF9UKilzcmM7CisgICAgdWludDY0X3QgazAgPSBfbGU2NHRvaChfUHlfSGFzaFNlY3JldC5zaXBoYXNoLmswKTsKKyAgICB1aW50NjRfdCBrMSA9IF9sZTY0dG9oKF9QeV9IYXNoU2VjcmV0LnNpcGhhc2guazEpOworICAgIHVpbnQ2NF90IGIgPSAodWludDY0X3Qpc3JjX3N6IDw8IDU2OworICAgIGNvbnN0IHVpbnQ2NF90ICppbiA9ICh1aW50NjRfdCopc3JjOwogCi0gICAgUFlfVUlOVDY0X1QgdjAgPSBrMCBeIDB4NzM2ZjZkNjU3MDczNjU3NVVMTDsKLSAgICBQWV9VSU5UNjRfVCB2MSA9IGsxIF4gMHg2NDZmNzI2MTZlNjQ2ZjZkVUxMOwotICAgIFBZX1VJTlQ2NF9UIHYyID0gazAgXiAweDZjNzk2NzY1NmU2NTcyNjFVTEw7Ci0gICAgUFlfVUlOVDY0X1QgdjMgPSBrMSBeIDB4NzQ2NTY0NjI3OTc0NjU3M1VMTDsKKyAgICB1aW50NjRfdCB2MCA9IGswIF4gMHg3MzZmNmQ2NTcwNzM2NTc1VUxMOworICAgIHVpbnQ2NF90IHYxID0gazEgXiAweDY0NmY3MjYxNmU2NDZmNmRVTEw7CisgICAgdWludDY0X3QgdjIgPSBrMCBeIDB4NmM3OTY3NjU2ZTY1NzI2MVVMTDsKKyAgICB1aW50NjRfdCB2MyA9IGsxIF4gMHg3NDY1NjQ2Mjc5NzQ2NTczVUxMOwogCi0gICAgUFlfVUlOVDY0X1QgdDsKLSAgICBQWV9VSU5UOF9UICpwdDsKLSAgICBQWV9VSU5UOF9UICptOworICAgIHVpbnQ2NF90IHQ7CisgICAgdWludDhfdCAqcHQ7CisgICAgdWludDhfdCAqbTsKIAogICAgIHdoaWxlIChzcmNfc3ogPj0gOCkgewotICAgICAgICBQWV9VSU5UNjRfVCBtaSA9IF9sZTY0dG9oKCppbik7CisgICAgICAgIHVpbnQ2NF90IG1pID0gX2xlNjR0b2goKmluKTsKICAgICAgICAgaW4gKz0gMTsKICAgICAgICAgc3JjX3N6IC09IDg7CiAgICAgICAgIHYzIF49IG1pOwpAQCAtMzkzLDEzICszOTAsMTMgQEAKICAgICB9CiAKICAgICB0ID0gMDsKLSAgICBwdCA9IChQWV9VSU5UOF9UICopJnQ7Ci0gICAgbSA9IChQWV9VSU5UOF9UICopaW47CisgICAgcHQgPSAodWludDhfdCAqKSZ0OworICAgIG0gPSAodWludDhfdCAqKWluOwogICAgIHN3aXRjaCAoc3JjX3N6KSB7CiAgICAgICAgIGNhc2UgNzogcHRbNl0gPSBtWzZdOwogICAgICAgICBjYXNlIDY6IHB0WzVdID0gbVs1XTsKICAgICAgICAgY2FzZSA1OiBwdFs0XSA9IG1bNF07Ci0gICAgICAgIGNhc2UgNDogUHlfTUVNQ1BZKHB0LCBtLCBzaXplb2YoUFlfVUlOVDMyX1QpKTsgYnJlYWs7CisgICAgICAgIGNhc2UgNDogbWVtY3B5KHB0LCBtLCBzaXplb2YodWludDMyX3QpKTsgYnJlYWs7CiAgICAgICAgIGNhc2UgMzogcHRbMl0gPSBtWzJdOwogICAgICAgICBjYXNlIDI6IHB0WzFdID0gbVsxXTsKICAgICAgICAgY2FzZSAxOiBwdFswXSA9IG1bMF07CmRpZmYgLS1naXQgYS9QeXRob24vcHlsaWZlY3ljbGUuYyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCmluZGV4IGNlNTI5OTAuLjViNWNjMmIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9weWxpZmVjeWNsZS5jCisrKyBiL1B5dGhvbi9weWxpZmVjeWNsZS5jCkBAIC0zMSw2ICszMSw5IEBACiAjaWZkZWYgTVNfV0lORE9XUwogI3VuZGVmIEJZVEUKICNpbmNsdWRlICJ3aW5kb3dzLmgiCisKK2V4dGVybiBQeVR5cGVPYmplY3QgUHlXaW5kb3dzQ29uc29sZUlPX1R5cGU7CisjZGVmaW5lIFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhvcCkgKFB5T2JqZWN0X1R5cGVDaGVjaygob3ApLCAmUHlXaW5kb3dzQ29uc29sZUlPX1R5cGUpKQogI2VuZGlmCiAKIF9QeV9JREVOVElGSUVSKGZsdXNoKTsKQEAgLTkwLDYgKzkzLDEwIEBACiBpbnQgUHlfVW5idWZmZXJlZFN0ZGlvRmxhZyA9IDA7IC8qIFVuYnVmZmVyZWQgYmluYXJ5IHN0ZHtpbixvdXQsZXJyfSAqLwogaW50IFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IDA7IC8qIGZvciAtUiBhbmQgUFlUSE9OSEFTSFNFRUQgKi8KIGludCBQeV9Jc29sYXRlZEZsYWcgPSAwOyAvKiBmb3IgLUksIGlzb2xhdGUgZnJvbSB1c2VyJ3MgZW52ICovCisjaWZkZWYgTVNfV0lORE9XUworaW50IFB5X0xlZ2FjeVdpbmRvd3NGU0VuY29kaW5nRmxhZyA9IDA7IC8qIFVzZXMgbWJjcyBpbnN0ZWFkIG9mIHV0Zi04ICovCitpbnQgUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZyA9IDA7IC8qIFVzZXMgRmlsZUlPIGluc3RlYWQgb2YgV2luZG93c0NvbnNvbGVJTyAqLworI2VuZGlmCiAKIFB5VGhyZWFkU3RhdGUgKl9QeV9GaW5hbGl6aW5nID0gTlVMTDsKIApAQCAtMTUxLDExICsxNTgsMTcgQEAKICAgICAgICAgICAgIHJldHVybiAtMzsKICAgICAgICAgfQogICAgIH0KKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaWYgKF9QeV9TdGFuZGFyZFN0cmVhbUVuY29kaW5nKSB7CisgICAgICAgIC8qIE92ZXJyaWRpbmcgdGhlIHN0cmVhbSBlbmNvZGluZyBpbXBsaWVzIGxlZ2FjeSBzdHJlYW1zICovCisgICAgICAgIFB5X0xlZ2FjeVdpbmRvd3NTdGRpb0ZsYWcgPSAxOworICAgIH0KKyNlbmRpZgogICAgIHJldHVybiAwOwogfQogCi0vKiBHbG9iYWwgaW5pdGlhbGl6YXRpb25zLiAgQ2FuIGJlIHVuZG9uZSBieSBQeV9GaW5hbGl6ZSgpLiAgRG9uJ3QKLSAgIGNhbGwgdGhpcyB0d2ljZSB3aXRob3V0IGFuIGludGVydmVuaW5nIFB5X0ZpbmFsaXplKCkgY2FsbC4gIFdoZW4KKy8qIEdsb2JhbCBpbml0aWFsaXphdGlvbnMuICBDYW4gYmUgdW5kb25lIGJ5IFB5X0ZpbmFsaXplRXgoKS4gIERvbid0CisgICBjYWxsIHRoaXMgdHdpY2Ugd2l0aG91dCBhbiBpbnRlcnZlbmluZyBQeV9GaW5hbGl6ZUV4KCkgY2FsbC4gIFdoZW4KICAgIGluaXRpYWxpemF0aW9ucyBmYWlsLCBhIGZhdGFsIGVycm9yIGlzIGlzc3VlZCBhbmQgdGhlIGZ1bmN0aW9uIGRvZXMKICAgIG5vdCByZXR1cm4uICBPbiByZXR1cm4sIHRoZSBmaXJzdCB0aHJlYWQgYW5kIGludGVycHJldGVyIHN0YXRlIGhhdmUKICAgIGJlZW4gY3JlYXRlZC4KQEAgLTIyMyw2ICsyMzYsOCBAQAogICAgICAgICByZXR1cm4gTlVMTDsKICAgICB9CiAgICAgcmV0dXJuIGdldF9jb2RlY19uYW1lKGNvZGVzZXQpOworI2VsaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyAgICByZXR1cm4gZ2V0X2NvZGVjX25hbWUoIlVURi04Iik7CiAjZWxzZQogICAgIFB5RXJyX1NldE5vbmUoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvcik7CiAgICAgcmV0dXJuIE5VTEw7CkBAIC0yNTIsNiArMjY3LDExIEBACiAgICAgaW50ZXJwLT5pbXBvcnRsaWIgPSBpbXBvcnRsaWI7CiAgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0bGliKTsKIAorICAgIGludGVycC0+aW1wb3J0X2Z1bmMgPSBQeURpY3RfR2V0SXRlbVN0cmluZyhpbnRlcnAtPmJ1aWx0aW5zLCAiX19pbXBvcnRfXyIpOworICAgIGlmIChpbnRlcnAtPmltcG9ydF9mdW5jID09IE5VTEwpCisgICAgICAgIFB5X0ZhdGFsRXJyb3IoIlB5X0luaXRpYWxpemU6IF9faW1wb3J0X18gbm90IGZvdW5kIik7CisgICAgUHlfSU5DUkVGKGludGVycC0+aW1wb3J0X2Z1bmMpOworCiAgICAgLyogSW1wb3J0IHRoZSBfaW1wIG1vZHVsZSAqLwogICAgIGltcG1vZCA9IFB5SW5pdF9pbXAoKTsKICAgICBpZiAoaW1wbW9kID09IE5VTEwpIHsKQEAgLTMxNCw2ICszMzQsMTIgQEAKICAgICAgICBjaGVjayBpdHMgdmFsdWUgZnVydGhlci4gKi8KICAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkhBU0hTRUVEIikpICYmICpwICE9ICdcMCcpCiAgICAgICAgIFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZyA9IGFkZF9mbGFnKFB5X0hhc2hSYW5kb21pemF0aW9uRmxhZywgcCk7CisjaWZkZWYgTVNfV0lORE9XUworICAgIGlmICgocCA9IFB5X0dFVEVOVigiUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkciKSkgJiYgKnAgIT0gJ1wwJykKKyAgICAgICAgUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnLCBwKTsKKyAgICBpZiAoKHAgPSBQeV9HRVRFTlYoIlBZVEhPTkxFR0FDWVdJTkRPV1NTVERJTyIpKSAmJiAqcCAhPSAnXDAnKQorICAgICAgICBQeV9MZWdhY3lXaW5kb3dzU3RkaW9GbGFnID0gYWRkX2ZsYWcoUHlfTGVnYWN5V2luZG93c1N0ZGlvRmxhZywgcCk7CisjZW5kaWYKIAogICAgIF9QeVJhbmRvbV9Jbml0KCk7CiAKQEAgLTMyNywxMSArMzUzLDExIEBACiAgICAgKHZvaWQpIFB5VGhyZWFkU3RhdGVfU3dhcCh0c3RhdGUpOwogCiAjaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBXZSBjYW4ndCBjYWxsIF9QeUV2YWxfRmluaVRocmVhZHMoKSBpbiBQeV9GaW5hbGl6ZSBiZWNhdXNlCisgICAgLyogV2UgY2FuJ3QgY2FsbCBfUHlFdmFsX0ZpbmlUaHJlYWRzKCkgaW4gUHlfRmluYWxpemVFeCBiZWNhdXNlCiAgICAgICAgZGVzdHJveWluZyB0aGUgR0lMIG1pZ2h0IGZhaWwgd2hlbiBpdCBpcyBiZWluZyByZWZlcmVuY2VkIGZyb20KICAgICAgICBhbm90aGVyIHJ1bm5pbmcgdGhyZWFkIChzZWUgaXNzdWUgIzk5MDEpLgogICAgICAgIEluc3RlYWQgd2UgZGVzdHJveSB0aGUgcHJldmlvdXNseSBjcmVhdGVkIEdJTCBoZXJlLCB3aGljaCBlbnN1cmVzCi0gICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemUgbXVsdGlwbGUgdGltZXMuICovCisgICAgICAgdGhhdCB3ZSBjYW4gY2FsbCBQeV9Jbml0aWFsaXplIC8gUHlfRmluYWxpemVFeCBtdWx0aXBsZSB0aW1lcy4gKi8KICAgICBfUHlFdmFsX0ZpbmlUaHJlYWRzKCk7CiAKICAgICAvKiBBdXRvLXRocmVhZC1zdGF0ZSBBUEkgKi8KQEAgLTQ3NywyOCArNTAzLDM1IEBACiAgICAgcmV0dXJuIHIgPiAwOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGludAogZmx1c2hfc3RkX2ZpbGVzKHZvaWQpCiB7CiAgICAgUHlPYmplY3QgKmZvdXQgPSBfUHlTeXNfR2V0T2JqZWN0SWQoJlB5SWRfc3Rkb3V0KTsKICAgICBQeU9iamVjdCAqZmVyciA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRlcnIpOwogICAgIFB5T2JqZWN0ICp0bXA7CisgICAgaW50IHN0YXR1cyA9IDA7CiAKICAgICBpZiAoZm91dCAhPSBOVUxMICYmIGZvdXQgIT0gUHlfTm9uZSAmJiAhZmlsZV9pc19jbG9zZWQoZm91dCkpIHsKLSAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmb3V0LCAmUHlJZF9mbHVzaCwgIiIpOwotICAgICAgICBpZiAodG1wID09IE5VTEwpCisgICAgICAgIHRtcCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZm91dCwgJlB5SWRfZmx1c2gsIE5VTEwpOworICAgICAgICBpZiAodG1wID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5RXJyX1dyaXRlVW5yYWlzYWJsZShmb3V0KTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KIAogICAgIGlmIChmZXJyICE9IE5VTEwgJiYgZmVyciAhPSBQeV9Ob25lICYmICFmaWxlX2lzX2Nsb3NlZChmZXJyKSkgewotICAgICAgICB0bXAgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZlcnIsICZQeUlkX2ZsdXNoLCAiIik7Ci0gICAgICAgIGlmICh0bXAgPT0gTlVMTCkKKyAgICAgICAgdG1wID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgTlVMTCk7CisgICAgICAgIGlmICh0bXAgPT0gTlVMTCkgewogICAgICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKKyAgICAgICAgICAgIHN0YXR1cyA9IC0xOworICAgICAgICB9CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIFB5X0RFQ1JFRih0bXApOwogICAgIH0KKworICAgIHJldHVybiBzdGF0dXM7CiB9CiAKIC8qIFVuZG8gdGhlIGVmZmVjdCBvZiBQeV9Jbml0aWFsaXplKCkuCkBAIC01MTUsMTQgKzU0OCwxNSBAQAogCiAqLwogCi12b2lkCi1QeV9GaW5hbGl6ZSh2b2lkKQoraW50CitQeV9GaW5hbGl6ZUV4KHZvaWQpCiB7CiAgICAgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnA7CiAgICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOworICAgIGludCBzdGF0dXMgPSAwOwogCiAgICAgaWYgKCFpbml0aWFsaXplZCkKLSAgICAgICAgcmV0dXJuOworICAgICAgICByZXR1cm4gc3RhdHVzOwogCiAgICAgd2FpdF9mb3JfdGhyZWFkX3NodXRkb3duKCk7CiAKQEAgLTU0Nyw3ICs1ODEsOSBAQAogICAgIGluaXRpYWxpemVkID0gMDsKIAogICAgIC8qIEZsdXNoIHN5cy5zdGRvdXQgYW5kIHN5cy5zdGRlcnIgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIERpc2FibGUgc2lnbmFsIGhhbmRsaW5nICovCiAgICAgUHlPU19GaW5pSW50ZXJydXB0cygpOwpAQCAtNTY0LDE5ICs2MDAsMjEgQEAKICAgICAgKiBYWFggYnV0IEknbSB1bmNsZWFyIG9uIGV4YWN0bHkgaG93IHRoYXQgb25lIGhhcHBlbnMuICBJbiBhbnkgY2FzZSwKICAgICAgKiBYWFggSSBoYXZlbid0IHNlZW4gYSByZWFsLWxpZmUgcmVwb3J0IG9mIGVpdGhlciBvZiB0aGVzZS4KICAgICAgKi8KLSAgICBQeUdDX0NvbGxlY3QoKTsKKyAgICBfUHlHQ19Db2xsZWN0SWZFbmFibGVkKCk7CiAjaWZkZWYgQ09VTlRfQUxMT0NTCiAgICAgLyogV2l0aCBDT1VOVF9BTExPQ1MsIGl0IGhlbHBzIHRvIHJ1biBHQyBtdWx0aXBsZSB0aW1lczoKICAgICAgICBlYWNoIGNvbGxlY3Rpb24gbWlnaHQgcmVsZWFzZSBzb21lIHR5cGVzIGZyb20gdGhlIHR5cGUKICAgICAgICBsaXN0LCBzbyB0aGV5IGJlY29tZSBnYXJiYWdlLiAqLwotICAgIHdoaWxlIChQeUdDX0NvbGxlY3QoKSA+IDApCisgICAgd2hpbGUgKF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKSA+IDApCiAgICAgICAgIC8qIG5vdGhpbmcgKi87CiAjZW5kaWYKICAgICAvKiBEZXN0cm95IGFsbCBtb2R1bGVzICovCiAgICAgUHlJbXBvcnRfQ2xlYW51cCgpOwogCiAgICAgLyogRmx1c2ggc3lzLnN0ZG91dCBhbmQgc3lzLnN0ZGVyciAoYWdhaW4sIGluIGNhc2UgbW9yZSB3YXMgcHJpbnRlZCkgKi8KLSAgICBmbHVzaF9zdGRfZmlsZXMoKTsKKyAgICBpZiAoZmx1c2hfc3RkX2ZpbGVzKCkgPCAwKSB7CisgICAgICAgIHN0YXR1cyA9IC0xOworICAgIH0KIAogICAgIC8qIENvbGxlY3QgZmluYWwgZ2FyYmFnZS4gIFRoaXMgZGlzcG9zZXMgb2YgY3ljbGVzIGNyZWF0ZWQgYnkKICAgICAgKiBjbGFzcyBkZWZpbml0aW9ucywgZm9yIGV4YW1wbGUuCkBAIC01OTQsNyArNjMyLDcgQEAKICAgICAgKiBYWFggUHl0aG9uIGNvZGUgZ2V0dGluZyBjYWxsZWQuCiAgICAgICovCiAjaWYgMAotICAgIFB5R0NfQ29sbGVjdCgpOworICAgIF9QeUdDX0NvbGxlY3RJZkVuYWJsZWQoKTsKICNlbmRpZgogCiAgICAgLyogRGlzYWJsZSB0cmFjZW1hbGxvYyBhZnRlciBhbGwgUHl0aG9uIG9iamVjdHMgaGF2ZSBiZWVuIGRlc3Ryb3llZCwKQEAgLTYxMiw3ICs2NTAsNyBAQAogCiAgICAgLyogRGVidWdnaW5nIHN0dWZmICovCiAjaWZkZWYgQ09VTlRfQUxMT0NTCi0gICAgZHVtcF9jb3VudHMoc3Rkb3V0KTsKKyAgICBkdW1wX2NvdW50cyhzdGRlcnIpOwogI2VuZGlmCiAgICAgLyogZHVtcCBoYXNoIHN0YXRzICovCiAgICAgX1B5SGFzaF9GaW5pKCk7CkBAIC02NTUsNiArNjkzLDggQEAKICAgICBQeVNsaWNlX0ZpbmkoKTsKICAgICBfUHlHQ19GaW5pKCk7CiAgICAgX1B5UmFuZG9tX0ZpbmkoKTsKKyAgICBfUHlBcmdfRmluaSgpOworICAgIFB5QXN5bmNHZW5fRmluaSgpOwogCiAgICAgLyogQ2xlYW51cCBVbmljb2RlIGltcGxlbWVudGF0aW9uICovCiAgICAgX1B5VW5pY29kZV9GaW5pKCk7CkBAIC02ODAsNiArNzIwLDcgQEAKIAogICAgIC8qIERlbGV0ZSBjdXJyZW50IHRocmVhZC4gQWZ0ZXIgdGhpcywgbWFueSBDIEFQSSBjYWxscyBiZWNvbWUgY3Jhc2h5LiAqLwogICAgIFB5VGhyZWFkU3RhdGVfU3dhcChOVUxMKTsKKwogICAgIFB5SW50ZXJwcmV0ZXJTdGF0ZV9EZWxldGUoaW50ZXJwKTsKIAogI2lmZGVmIFB5X1RSQUNFX1JFRlMKQEAgLTY5MCwxMiArNzMxLDIyIEBACiAgICAgaWYgKFB5X0dFVEVOVigiUFlUSE9ORFVNUFJFRlMiKSkKICAgICAgICAgX1B5X1ByaW50UmVmZXJlbmNlQWRkcmVzc2VzKHN0ZGVycik7CiAjZW5kaWYgLyogUHlfVFJBQ0VfUkVGUyAqLwotI2lmZGVmIFBZTUFMTE9DX0RFQlVHCi0gICAgaWYgKFB5X0dFVEVOVigiUFlUSE9OTUFMTE9DU1RBVFMiKSkKLSAgICAgICAgX1B5T2JqZWN0X0RlYnVnTWFsbG9jU3RhdHMoc3RkZXJyKTsKKyNpZmRlZiBXSVRIX1BZTUFMTE9DCisgICAgaWYgKF9QeU1lbV9QeW1hbGxvY0VuYWJsZWQoKSkgeworICAgICAgICBjaGFyICpvcHQgPSBQeV9HRVRFTlYoIlBZVEhPTk1BTExPQ1NUQVRTIik7CisgICAgICAgIGlmIChvcHQgIT0gTlVMTCAmJiAqb3B0ICE9ICdcMCcpCisgICAgICAgICAgICBfUHlPYmplY3RfRGVidWdNYWxsb2NTdGF0cyhzdGRlcnIpOworICAgIH0KICNlbmRpZgogCiAgICAgY2FsbF9sbF9leGl0ZnVuY3MoKTsKKyAgICByZXR1cm4gc3RhdHVzOworfQorCit2b2lkCitQeV9GaW5hbGl6ZSh2b2lkKQoreworICAgIFB5X0ZpbmFsaXplRXgoKTsKIH0KIAogLyogQ3JlYXRlIGFuZCBpbml0aWFsaXplIGEgbmV3IGludGVycHJldGVyIGFuZCB0aHJlYWQsIGFuZCByZXR1cm4gdGhlCkBAIC03MjEsNiArNzcyLDEyIEBACiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiUHlfTmV3SW50ZXJwcmV0ZXI6IGNhbGwgUHlfSW5pdGlhbGl6ZSBmaXJzdCIpOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICAvKiBJc3N1ZSAjMTA5MTUsICMxNTc1MTogVGhlIEdJTCBBUEkgZG9lc24ndCB3b3JrIHdpdGggbXVsdGlwbGUKKyAgICAgICBpbnRlcnByZXRlcnM6IGRpc2FibGUgUHlHSUxTdGF0ZV9DaGVjaygpLiAqLworICAgIF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAwOworI2VuZGlmCisKICAgICBpbnRlcnAgPSBQeUludGVycHJldGVyU3RhdGVfTmV3KCk7CiAgICAgaWYgKGludGVycCA9PSBOVUxMKQogICAgICAgICByZXR1cm4gTlVMTDsKQEAgLTc3Nyw3ICs4MzQsNyBAQAogCiAgICAgICAgIGlmIChpbml0c3RkaW8oKSA8IDApCiAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKAotICAgICAgICAgICAgIlB5X0luaXRpYWxpemU6IGNhbid0IGluaXRpYWxpemUgc3lzIHN0YW5kYXJkIHN0cmVhbXMiKTsKKyAgICAgICAgICAgICAgICAiUHlfSW5pdGlhbGl6ZTogY2FuJ3QgaW5pdGlhbGl6ZSBzeXMgc3RhbmRhcmQgc3RyZWFtcyIpOwogICAgICAgICBpbml0bWFpbihpbnRlcnApOwogICAgICAgICBpZiAoIVB5X05vU2l0ZUZsYWcpCiAgICAgICAgICAgICBpbml0c2l0ZSgpOwpAQCAtODAzLDcgKzg2MCw3IEBACiAgICBmcmFtZXMsIGFuZCB0aGF0IGl0IGlzIGl0cyBpbnRlcnByZXRlcidzIG9ubHkgcmVtYWluaW5nIHRocmVhZC4KICAgIEl0IGlzIGEgZmF0YWwgZXJyb3IgdG8gdmlvbGF0ZSB0aGVzZSBjb25zdHJhaW50cy4KIAotICAgKFB5X0ZpbmFsaXplKCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKKyAgIChQeV9GaW5hbGl6ZUV4KCkgZG9lc24ndCBoYXZlIHRoZXNlIGNvbnN0cmFpbnRzIC0tIGl0IHphcHMKICAgIGV2ZXJ5dGhpbmcsIHJlZ2FyZGxlc3MuKQogCiAgICBMb2NraW5nOiBhcyBhYm92ZS4KQEAgLTg4MSwxMSArOTM4LDE3IEBACiBzdGF0aWMgdm9pZAogaW5pdG1haW4oUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnApCiB7Ci0gICAgUHlPYmplY3QgKm0sICpkLCAqbG9hZGVyOworICAgIFB5T2JqZWN0ICptLCAqZCwgKmxvYWRlciwgKmFubl9kaWN0OwogICAgIG0gPSBQeUltcG9ydF9BZGRNb2R1bGUoIl9fbWFpbl9fIik7CiAgICAgaWYgKG0gPT0gTlVMTCkKICAgICAgICAgUHlfRmF0YWxFcnJvcigiY2FuJ3QgY3JlYXRlIF9fbWFpbl9fIG1vZHVsZSIpOwogICAgIGQgPSBQeU1vZHVsZV9HZXREaWN0KG0pOworICAgIGFubl9kaWN0ID0gUHlEaWN0X05ldygpOworICAgIGlmICgoYW5uX2RpY3QgPT0gTlVMTCkgfHwKKyAgICAgICAgKFB5RGljdF9TZXRJdGVtU3RyaW5nKGQsICJfX2Fubm90YXRpb25zX18iLCBhbm5fZGljdCkgPCAwKSkgeworICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBfX21haW5fXy5fX2Fubm90YXRpb25zX18iKTsKKyAgICB9CisgICAgUHlfREVDUkVGKGFubl9kaWN0KTsKICAgICBpZiAoUHlEaWN0X0dldEl0ZW1TdHJpbmcoZCwgIl9fYnVpbHRpbnNfXyIpID09IE5VTEwpIHsKICAgICAgICAgUHlPYmplY3QgKmJpbW9kID0gUHlJbXBvcnRfSW1wb3J0TW9kdWxlKCJidWlsdGlucyIpOwogICAgICAgICBpZiAoYmltb2QgPT0gTlVMTCkgewpAQCAtOTIxLDYgKzk4NCwxOCBAQAogewogICAgIFB5T2JqZWN0ICpjb2RlYzsKIAorI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpZiAoUHlfTGVnYWN5V2luZG93c0ZTRW5jb2RpbmdGbGFnKQorICAgIHsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGluZyA9ICJtYmNzIjsKKyAgICAgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgfQorICAgIGVsc2UKKyAgICB7CisgICAgICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAidXRmLTgiOworICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycyA9ICJzdXJyb2dhdGVwYXNzIjsKKyAgICB9CisjZWxzZQogICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID09IE5VTEwpCiAgICAgewogICAgICAgICBQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kaW5nID0gZ2V0X2xvY2FsZV9lbmNvZGluZygpOwpAQCAtOTMxLDYgKzEwMDYsNyBAQAogICAgICAgICBpbnRlcnAtPmZzY29kZWNfaW5pdGlhbGl6ZWQgPSAxOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CisjZW5kaWYKIAogICAgIC8qIHRoZSBlbmNvZGluZyBpcyBtYmNzLCB1dGYtOCBvciBhc2NpaSAqLwogICAgIGNvZGVjID0gX1B5Q29kZWNfTG9va3VwKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcpOwpAQCAtOTY5LDkgKzEwNDUsMTIgQEAKIGlzX3ZhbGlkX2ZkKGludCBmZCkKIHsKICAgICBpbnQgZmQyOwotICAgIGlmIChmZCA8IDAgfHwgIV9QeVZlcmlmeV9mZChmZCkpCisgICAgaWYgKGZkIDwgMCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgX1B5X0JFR0lOX1NVUFBSRVNTX0lQSAorICAgIC8qIFByZWZlciBkdXAoKSBvdmVyIGZzdGF0KCkuIGZzdGF0KCkgY2FuIHJlcXVpcmUgaW5wdXQvb3V0cHV0IHdoZXJlYXMKKyAgICAgICBkdXAoKSBkb2Vzbid0LCB0aGVyZSBpcyBhIGxvdyByaXNrIG9mIEVNRklMRS9FTkZJTEUgYXQgUHl0aG9uCisgICAgICAgc3RhcnR1cC4gKi8KICAgICBmZDIgPSBkdXAoZmQpOwogICAgIGlmIChmZDIgPj0gMCkKICAgICAgICAgY2xvc2UoZmQyKTsKQEAgLTk4Miw4ICsxMDYxLDggQEAKIC8qIHJldHVybnMgUHlfTm9uZSBpZiB0aGUgZmQgaXMgbm90IHZhbGlkICovCiBzdGF0aWMgUHlPYmplY3QqCiBjcmVhdGVfc3RkaW8oUHlPYmplY3QqIGlvLAotICAgIGludCBmZCwgaW50IHdyaXRlX21vZGUsIGNoYXIqIG5hbWUsCi0gICAgY2hhciogZW5jb2RpbmcsIGNoYXIqIGVycm9ycykKKyAgICBpbnQgZmQsIGludCB3cml0ZV9tb2RlLCBjb25zdCBjaGFyKiBuYW1lLAorICAgIGNvbnN0IGNoYXIqIGVuY29kaW5nLCBjb25zdCBjaGFyKiBlcnJvcnMpCiB7CiAgICAgUHlPYmplY3QgKmJ1ZiA9IE5VTEwsICpzdHJlYW0gPSBOVUxMLCAqdGV4dCA9IE5VTEwsICpyYXcgPSBOVUxMLCAqcmVzOwogICAgIGNvbnN0IGNoYXIqIG1vZGU7CkBAIC0xMDEzLDcgKzEwOTIsOCBAQAogICAgICAgICBtb2RlID0gInJiIjsKICAgICBidWYgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGlvLCAmUHlJZF9vcGVuLCAiaXNpT09PaSIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmZCwgbW9kZSwgYnVmZmVyaW5nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfTm9uZSwgUHlfTm9uZSwgUHlfTm9uZSwgMCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCBQeV9Ob25lLCAvKiBlbmNvZGluZywgZXJyb3JzICovCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQeV9Ob25lLCAwKTsgLyogbmV3bGluZSwgY2xvc2VmZCAqLwogICAgIGlmIChidWYgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIApAQCAtMTAyOCwxMCArMTEwOCwxNiBAQAogICAgICAgICBQeV9JTkNSRUYocmF3KTsKICAgICB9CiAKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgLyogV2luZG93cyBjb25zb2xlIElPIGlzIGFsd2F5cyBVVEYtOCBlbmNvZGVkICovCisgICAgaWYgKFB5V2luZG93c0NvbnNvbGVJT19DaGVjayhyYXcpKQorICAgICAgICBlbmNvZGluZyA9ICJ1dGYtOCI7CisjZW5kaWYKKwogICAgIHRleHQgPSBQeVVuaWNvZGVfRnJvbVN0cmluZyhuYW1lKTsKICAgICBpZiAodGV4dCA9PSBOVUxMIHx8IF9QeU9iamVjdF9TZXRBdHRySWQocmF3LCAmUHlJZF9uYW1lLCB0ZXh0KSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChyYXcsICZQeUlkX2lzYXR0eSwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQocmF3LCAmUHlJZF9pc2F0dHksIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKICAgICBpc2F0dHkgPSBQeU9iamVjdF9Jc1RydWUocmVzKTsKQEAgLTEyNDMsMjUgKzEzMjksMTEgQEAKIHN0YXRpYyB2b2lkCiBfUHlfRmF0YWxFcnJvcl9EdW1wVHJhY2ViYWNrcyhpbnQgZmQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlOwotCi0jaWZkZWYgV0lUSF9USFJFQUQKLSAgICAvKiBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpIHdvcmtzIGV2ZW4gaWYgdGhlIEdJTCB3YXMgcmVsZWFzZWQgKi8KLSAgICB0c3RhdGUgPSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpOwotI2Vsc2UKLSAgICB0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dFVCgpOwotI2VuZGlmCi0gICAgaWYgKHRzdGF0ZSA9PSBOVUxMKSB7Ci0gICAgICAgIC8qIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcygpIHJlcXVpcmVzIHRoZSB0aHJlYWQgc3RhdGUgdG8gZGlzcGxheQotICAgICAgICAgKiBmcmFtZXMgKi8KLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CiAgICAgZmZsdXNoKHN0ZGVycik7CiAKICAgICAvKiBkaXNwbGF5IHRoZSBjdXJyZW50IFB5dGhvbiBzdGFjayAqLwotICAgIF9QeV9EdW1wVHJhY2ViYWNrVGhyZWFkcyhmZCwgdHN0YXRlLT5pbnRlcnAsIHRzdGF0ZSk7CisgICAgX1B5X0R1bXBUcmFjZWJhY2tUaHJlYWRzKGZkLCBOVUxMLCBOVUxMKTsKIH0KIAogLyogUHJpbnQgdGhlIGN1cnJlbnQgZXhjZXB0aW9uIChpZiBhbiBleGNlcHRpb24gaXMgc2V0KSB3aXRoIGl0cyB0cmFjZWJhY2ssCkBAIC0xMzE2LDcgKzEzODgsNyBAQAogICAgIFB5X1hERUNSRUYodGIpOwogCiAgICAgLyogc3lzLnN0ZGVyciBtYXkgYmUgYnVmZmVyZWQ6IGNhbGwgc3lzLnN0ZGVyci5mbHVzaCgpICovCi0gICAgcmVzID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmZXJyLCAmUHlJZF9mbHVzaCwgIiIpOworICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZmVyciwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgIGlmIChyZXMgPT0gTlVMTCkKICAgICAgICAgUHlFcnJfQ2xlYXIoKTsKICAgICBlbHNlCkBAIC0xMzg4LDcgKzE0NjAsNyBAQAogLyogQ2xlYW4gdXAgYW5kIGV4aXQgKi8KIAogI2lmZGVmIFdJVEhfVEhSRUFECi0jaW5jbHVkZSAicHl0aHJlYWQuaCIKKyMgIGluY2x1ZGUgInB5dGhyZWFkLmgiCiAjZW5kaWYKIAogc3RhdGljIHZvaWQgKCpweWV4aXRmdW5jKSh2b2lkKSA9IE5VTEw7CkBAIC0xNDI2LDcgKzE0OTgsNyBAQAogICAgICAgICBQeUVycl9DbGVhcigpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIHJlc3VsdCA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQodGhyZWFkaW5nLCAmUHlJZF9fc2h1dGRvd24sICIiKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKHRocmVhZGluZywgJlB5SWRfX3NodXRkb3duLCBOVUxMKTsKICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgUHlFcnJfV3JpdGVVbnJhaXNhYmxlKHRocmVhZGluZyk7CiAgICAgfQpAQCAtMTQ2Miw3ICsxNTM0LDkgQEAKIHZvaWQKIFB5X0V4aXQoaW50IHN0cykKIHsKLSAgICBQeV9GaW5hbGl6ZSgpOworICAgIGlmIChQeV9GaW5hbGl6ZUV4KCkgPCAwKSB7CisgICAgICAgIHN0cyA9IDEyMDsKKyAgICB9CiAKICAgICBleGl0KHN0cyk7CiB9CmRpZmYgLS1naXQgYS9QeXRob24vcHlzdGF0ZS5jIGIvUHl0aG9uL3B5c3RhdGUuYwppbmRleCAyNGUyMGMzLi42NWMyNDRlIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdGF0ZS5jCisrKyBiL1B5dGhvbi9weXN0YXRlLmMKQEAgLTYsNyArNiw3IEBACiAjZGVmaW5lIEdFVF9UU1RBVEUoKSBcCiAgICAgKChQeVRocmVhZFN0YXRlKilfUHlfYXRvbWljX2xvYWRfcmVsYXhlZCgmX1B5VGhyZWFkU3RhdGVfQ3VycmVudCkpCiAjZGVmaW5lIFNFVF9UU1RBVEUodmFsdWUpIFwKLSAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsIChQeV91aW50cHRyX3QpKHZhbHVlKSkKKyAgICBfUHlfYXRvbWljX3N0b3JlX3JlbGF4ZWQoJl9QeVRocmVhZFN0YXRlX0N1cnJlbnQsICh1aW50cHRyX3QpKHZhbHVlKSkKICNkZWZpbmUgR0VUX0lOVEVSUF9TVEFURSgpIFwKICAgICAoR0VUX1RTVEFURSgpLT5pbnRlcnApCiAKQEAgLTI1LDcgKzI1LDcgQEAKICNpZmRlZiBIQVZFX0RMRkNOX0gKICNpbmNsdWRlIDxkbGZjbi5oPgogI2VuZGlmCi0jaWZuZGVmIFJUTERfTEFaWQorI2lmICFIQVZFX0RFQ0xfUlRMRF9MQVpZCiAjZGVmaW5lIFJUTERfTEFaWSAxCiAjZW5kaWYKICNlbmRpZgpAQCAtMzQsNiArMzQsOCBAQAogZXh0ZXJuICJDIiB7CiAjZW5kaWYKIAoraW50IF9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQgPSAxOworCiAjaWZkZWYgV0lUSF9USFJFQUQKICNpbmNsdWRlICJweXRocmVhZC5oIgogc3RhdGljIFB5VGhyZWFkX3R5cGVfbG9jayBoZWFkX211dGV4ID0gTlVMTDsgLyogUHJvdGVjdHMgaW50ZXJwLT50c3RhdGVfaGVhZCAqLwpAQCAtNDUsNyArNDcsNyBAQAogICAgR0lMU3RhdGUgaW1wbGVtZW50YXRpb24KICovCiBzdGF0aWMgUHlJbnRlcnByZXRlclN0YXRlICphdXRvSW50ZXJwcmV0ZXJTdGF0ZSA9IE5VTEw7Ci1zdGF0aWMgaW50IGF1dG9UTFNrZXkgPSAwOworc3RhdGljIGludCBhdXRvVExTa2V5ID0gLTE7CiAjZWxzZQogI2RlZmluZSBIRUFEX0lOSVQoKSAvKiBOb3RoaW5nICovCiAjZGVmaW5lIEhFQURfTE9DSygpIC8qIE5vdGhpbmcgKi8KQEAgLTg4LDE2ICs5MCwxNSBAQAogICAgICAgICBpbnRlcnAtPmNvZGVjc19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+ZnNjb2RlY19pbml0aWFsaXplZCA9IDA7CiAgICAgICAgIGludGVycC0+aW1wb3J0bGliID0gTlVMTDsKKyAgICAgICAgaW50ZXJwLT5pbXBvcnRfZnVuYyA9IE5VTEw7CisgICAgICAgIGludGVycC0+ZXZhbF9mcmFtZSA9IF9QeUV2YWxfRXZhbEZyYW1lRGVmYXVsdDsKICNpZmRlZiBIQVZFX0RMT1BFTgotI2lmZGVmIFJUTERfTk9XCisjaWYgSEFWRV9ERUNMX1JUTERfTk9XCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX05PVzsKICNlbHNlCiAgICAgICAgIGludGVycC0+ZGxvcGVuZmxhZ3MgPSBSVExEX0xBWlk7CiAjZW5kaWYKICNlbmRpZgotI2lmZGVmIFdJVEhfVFNDCi0gICAgICAgIGludGVycC0+dHNjZHVtcCA9IDA7Ci0jZW5kaWYKIAogICAgICAgICBIRUFEX0xPQ0soKTsKICAgICAgICAgaW50ZXJwLT5uZXh0ID0gaW50ZXJwX2hlYWQ7CkBAIC0xMjYsNiArMTI3LDcgQEAKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zKTsKICAgICBQeV9DTEVBUihpbnRlcnAtPmJ1aWx0aW5zX2NvcHkpOwogICAgIFB5X0NMRUFSKGludGVycC0+aW1wb3J0bGliKTsKKyAgICBQeV9DTEVBUihpbnRlcnAtPmltcG9ydF9mdW5jKTsKIH0KIAogCkBAIC0yMjIsNiArMjI0LDEwIEBACiAKICAgICAgICAgdHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlciA9IE5VTEw7CiAgICAgICAgIHRzdGF0ZS0+aW5fY29yb3V0aW5lX3dyYXBwZXIgPSAwOworICAgICAgICB0c3RhdGUtPmNvX2V4dHJhX3VzZXJfY291bnQgPSAwOworCisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpcnN0aXRlciA9IE5VTEw7CisgICAgICAgIHRzdGF0ZS0+YXN5bmNfZ2VuX2ZpbmFsaXplciA9IE5VTEw7CiAKICAgICAgICAgaWYgKGluaXQpCiAgICAgICAgICAgICBfUHlUaHJlYWRTdGF0ZV9Jbml0KHRzdGF0ZSk7CkBAIC00MDIsNiArNDA4LDggQEAKICAgICBQeV9DTEVBUih0c3RhdGUtPmNfdHJhY2VvYmopOwogCiAgICAgUHlfQ0xFQVIodHN0YXRlLT5jb3JvdXRpbmVfd3JhcHBlcik7CisgICAgUHlfQ0xFQVIodHN0YXRlLT5hc3luY19nZW5fZmlyc3RpdGVyKTsKKyAgICBQeV9DTEVBUih0c3RhdGUtPmFzeW5jX2dlbl9maW5hbGl6ZXIpOwogfQogCiAKQEAgLTQ1MSwxMCArNDU5LDEwIEBACiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQogICAgICAgICBQeV9GYXRhbEVycm9yKAogICAgICAgICAgICAgIlB5VGhyZWFkU3RhdGVfRGVsZXRlQ3VycmVudDogbm8gY3VycmVudCB0c3RhdGUiKTsKLSAgICBTRVRfVFNUQVRFKE5VTEwpOworICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CiAgICAgaWYgKGF1dG9JbnRlcnByZXRlclN0YXRlICYmIFB5VGhyZWFkX2dldF9rZXlfdmFsdWUoYXV0b1RMU2tleSkgPT0gdHN0YXRlKQogICAgICAgICBQeVRocmVhZF9kZWxldGVfa2V5X3ZhbHVlKGF1dG9UTFNrZXkpOwotICAgIHRzdGF0ZV9kZWxldGVfY29tbW9uKHRzdGF0ZSk7CisgICAgU0VUX1RTVEFURShOVUxMKTsKICAgICBQeUV2YWxfUmVsZWFzZUxvY2soKTsKIH0KICNlbmRpZiAvKiBXSVRIX1RIUkVBRCAqLwpAQCAtNjk4LDcgKzcwNiw3IEBACiB9CiAKIC8qIEludGVybmFsIGluaXRpYWxpemF0aW9uL2ZpbmFsaXphdGlvbiBmdW5jdGlvbnMgY2FsbGVkIGJ5Ci0gICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplCisgICBQeV9Jbml0aWFsaXplL1B5X0ZpbmFsaXplRXgKICovCiB2b2lkCiBfUHlHSUxTdGF0ZV9Jbml0KFB5SW50ZXJwcmV0ZXJTdGF0ZSAqaSwgUHlUaHJlYWRTdGF0ZSAqdCkKQEAgLTcxNCwxMCArNzIyLDE3IEBACiAgICAgX1B5R0lMU3RhdGVfTm90ZVRocmVhZFN0YXRlKHQpOwogfQogCitQeUludGVycHJldGVyU3RhdGUgKgorX1B5R0lMU3RhdGVfR2V0SW50ZXJwcmV0ZXJTdGF0ZVVuc2FmZSh2b2lkKQoreworICAgIHJldHVybiBhdXRvSW50ZXJwcmV0ZXJTdGF0ZTsKK30KKwogdm9pZAogX1B5R0lMU3RhdGVfRmluaSh2b2lkKQogewogICAgIFB5VGhyZWFkX2RlbGV0ZV9rZXkoYXV0b1RMU2tleSk7CisgICAgYXV0b1RMU2tleSA9IC0xOwogICAgIGF1dG9JbnRlcnByZXRlclN0YXRlID0gTlVMTDsKIH0KIApAQCAtNzg2LDggKzgwMSwxOSBAQAogaW50CiBQeUdJTFN0YXRlX0NoZWNrKHZvaWQpCiB7Ci0gICAgUHlUaHJlYWRTdGF0ZSAqdHN0YXRlID0gR0VUX1RTVEFURSgpOwotICAgIHJldHVybiB0c3RhdGUgJiYgKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKKyAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CisKKyAgICBpZiAoIV9QeUdJTFN0YXRlX2NoZWNrX2VuYWJsZWQpCisgICAgICAgIHJldHVybiAxOworCisgICAgaWYgKGF1dG9UTFNrZXkgPT0gLTEpCisgICAgICAgIHJldHVybiAxOworCisgICAgdHN0YXRlID0gR0VUX1RTVEFURSgpOworICAgIGlmICh0c3RhdGUgPT0gTlVMTCkKKyAgICAgICAgcmV0dXJuIDA7CisKKyAgICByZXR1cm4gKHRzdGF0ZSA9PSBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpKTsKIH0KIAogUHlHSUxTdGF0ZV9TVEFURQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3B5c3RydG9kLmMgYi9QeXRob24vcHlzdHJ0b2QuYwppbmRleCAyMDljOTA4Li42NGQwYzUyIDEwMDY0NAotLS0gYS9QeXRob24vcHlzdHJ0b2QuYworKysgYi9QeXRob24vcHlzdHJ0b2QuYwpAQCAtMzcwLDYgKzM3MCw3MiBAQAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKKy8qIFJlbW92ZSB1bmRlcnNjb3JlcyB0aGF0IGZvbGxvdyB0aGUgdW5kZXJzY29yZSBwbGFjZW1lbnQgcnVsZSBmcm9tCisgICB0aGUgc3RyaW5nIGFuZCB0aGVuIGNhbGwgdGhlIGBpbm5lcmZ1bmNgIGZ1bmN0aW9uIG9uIHRoZSByZXN1bHQuCisgICBJdCBzaG91bGQgcmV0dXJuIGEgbmV3IG9iamVjdCBvciBOVUxMIG9uIGV4Y2VwdGlvbi4KKworICAgYHdoYXRgIGlzIHVzZWQgZm9yIHRoZSBlcnJvciBtZXNzYWdlIGVtaXR0ZWQgd2hlbiB1bmRlcnNjb3JlcyBhcmUgZGV0ZWN0ZWQKKyAgIHRoYXQgZG9uJ3QgZm9sbG93IHRoZSBydWxlLiBgYXJnYCBpcyBhbiBvcGFxdWUgcG9pbnRlciBwYXNzZWQgdG8gdGhlIGlubmVyCisgICBmdW5jdGlvbi4KKworICAgVGhpcyBpcyB1c2VkIHRvIGltcGxlbWVudCB1bmRlcnNjb3JlLWFnbm9zdGljIGNvbnZlcnNpb24gZm9yIGZsb2F0cworICAgYW5kIGNvbXBsZXggbnVtYmVycy4KKyovCitQeU9iamVjdCAqCitfUHlfc3RyaW5nX3RvX251bWJlcl93aXRoX3VuZGVyc2NvcmVzKAorICAgIGNvbnN0IGNoYXIgKnMsIFB5X3NzaXplX3Qgb3JpZ19sZW4sIGNvbnN0IGNoYXIgKndoYXQsIFB5T2JqZWN0ICpvYmosIHZvaWQgKmFyZywKKyAgICBQeU9iamVjdCAqKCppbm5lcmZ1bmMpKGNvbnN0IGNoYXIgKiwgUHlfc3NpemVfdCwgdm9pZCAqKSkKK3sKKyAgICBjaGFyIHByZXY7CisgICAgY29uc3QgY2hhciAqcCwgKmxhc3Q7CisgICAgY2hhciAqZHVwLCAqZW5kOworICAgIFB5T2JqZWN0ICpyZXN1bHQ7CisKKyAgICBpZiAoc3RyY2hyKHMsICdfJykgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gaW5uZXJmdW5jKHMsIG9yaWdfbGVuLCBhcmcpOworICAgIH0KKworICAgIGR1cCA9IFB5TWVtX01hbGxvYyhvcmlnX2xlbiArIDEpOworICAgIGVuZCA9IGR1cDsKKyAgICBwcmV2ID0gJ1wwJzsKKyAgICBsYXN0ID0gcyArIG9yaWdfbGVuOworICAgIGZvciAocCA9IHM7ICpwOyBwKyspIHsKKyAgICAgICAgaWYgKCpwID09ICdfJykgeworICAgICAgICAgICAgLyogVW5kZXJzY29yZXMgYXJlIG9ubHkgYWxsb3dlZCBhZnRlciBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAoIShwcmV2ID49ICcwJyAmJiBwcmV2IDw9ICc5JykpIHsKKyAgICAgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgKmVuZCsrID0gKnA7CisgICAgICAgICAgICAvKiBVbmRlcnNjb3JlcyBhcmUgb25seSBhbGxvd2VkIGJlZm9yZSBkaWdpdHMuICovCisgICAgICAgICAgICBpZiAocHJldiA9PSAnXycgJiYgISgqcCA+PSAnMCcgJiYgKnAgPD0gJzknKSkgeworICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgcHJldiA9ICpwOworICAgIH0KKyAgICAvKiBVbmRlcnNjb3JlcyBhcmUgbm90IGFsbG93ZWQgYXQgdGhlIGVuZC4gKi8KKyAgICBpZiAocHJldiA9PSAnXycpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgLyogTm8gZW1iZWRkZWQgTlVMcyBhbGxvd2VkLiAqLworICAgIGlmIChwICE9IGxhc3QpIHsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgKmVuZCA9ICdcMCc7CisgICAgcmVzdWx0ID0gaW5uZXJmdW5jKGR1cCwgZW5kIC0gZHVwLCBhcmcpOworICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICByZXR1cm4gcmVzdWx0OworCisgIGVycm9yOgorICAgIFB5TWVtX0ZyZWUoZHVwKTsKKyAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKwkJICJjb3VsZCBub3QgY29udmVydCBzdHJpbmcgdG8gJXM6ICIKKwkJICIlUiIsIHdoYXQsIG9iaik7CisgICAgcmV0dXJuIE5VTEw7Cit9CisKICNpZmRlZiBQWV9OT19TSE9SVF9GTE9BVF9SRVBSCiAKIC8qIEdpdmVuIGEgc3RyaW5nIHRoYXQgbWF5IGhhdmUgYSBkZWNpbWFsIHBvaW50IGluIHRoZSBjdXJyZW50CkBAIC04ODEsMTIgKzk0NywxMiBAQAogI2RlZmluZSBPRlNfRSAyCiAKIC8qIFRoZSBsZW5ndGhzIG9mIHRoZXNlIGFyZSBrbm93biB0byB0aGUgY29kZSBiZWxvdywgc28gZG9uJ3QgY2hhbmdlIHRoZW0gKi8KLXN0YXRpYyBjaGFyICpsY19mbG9hdF9zdHJpbmdzW10gPSB7CitzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IGxjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKICAgICAiaW5mIiwKICAgICAibmFuIiwKICAgICAiZSIsCiB9Owotc3RhdGljIGNoYXIgKnVjX2Zsb2F0X3N0cmluZ3NbXSA9IHsKK3N0YXRpYyBjb25zdCBjaGFyICogY29uc3QgdWNfZmxvYXRfc3RyaW5nc1tdID0gewogICAgICJJTkYiLAogICAgICJOQU4iLAogICAgICJFIiwKQEAgLTkyNSw3ICs5OTEsOCBAQAogZm9ybWF0X2Zsb2F0X3Nob3J0KGRvdWJsZSBkLCBjaGFyIGZvcm1hdF9jb2RlLAogICAgICAgICAgICAgICAgICAgIGludCBtb2RlLCBpbnQgcHJlY2lzaW9uLAogICAgICAgICAgICAgICAgICAgIGludCBhbHdheXNfYWRkX3NpZ24sIGludCBhZGRfZG90XzBfaWZfaW50ZWdlciwKLSAgICAgICAgICAgICAgICAgICBpbnQgdXNlX2FsdF9mb3JtYXR0aW5nLCBjaGFyICoqZmxvYXRfc3RyaW5ncywgaW50ICp0eXBlKQorICAgICAgICAgICAgICAgICAgIGludCB1c2VfYWx0X2Zvcm1hdHRpbmcsIGNvbnN0IGNoYXIgKiBjb25zdCAqZmxvYXRfc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICBpbnQgKnR5cGUpCiB7CiAgICAgY2hhciAqYnVmID0gTlVMTDsKICAgICBjaGFyICpwID0gTlVMTDsKQEAgLTExNzYsNyArMTI0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp0eXBlKQogewotICAgIGNoYXIgKipmbG9hdF9zdHJpbmdzID0gbGNfZmxvYXRfc3RyaW5nczsKKyAgICBjb25zdCBjaGFyICogY29uc3QgKmZsb2F0X3N0cmluZ3MgPSBsY19mbG9hdF9zdHJpbmdzOwogICAgIGludCBtb2RlOwogCiAgICAgLyogVmFsaWRhdGUgZm9ybWF0X2NvZGUsIGFuZCBtYXAgdXBwZXIgYW5kIGxvd2VyIGNhc2UuIENvbXB1dGUgdGhlCmRpZmYgLS1naXQgYS9QeXRob24vcHl0aG9ucnVuLmMgYi9QeXRob24vcHl0aG9ucnVuLmMKaW5kZXggN2ZiZjA2ZS4uMWZjODZjMCAxMDA2NDQKLS0tIGEvUHl0aG9uL3B5dGhvbnJ1bi5jCisrKyBiL1B5dGhvbi9weXRob25ydW4uYwpAQCAtNDMxLDcgKzQzMSw3IEBACiBwYXJzZV9zeW50YXhfZXJyb3IoUHlPYmplY3QgKmVyciwgUHlPYmplY3QgKiptZXNzYWdlLCBQeU9iamVjdCAqKmZpbGVuYW1lLAogICAgICAgICAgICAgICAgICAgIGludCAqbGluZW5vLCBpbnQgKm9mZnNldCwgUHlPYmplY3QgKip0ZXh0KQogewotICAgIGxvbmcgaG9sZDsKKyAgICBpbnQgaG9sZDsKICAgICBQeU9iamVjdCAqdjsKICAgICBfUHlfSURFTlRJRklFUihtc2cpOwogICAgIF9QeV9JREVOVElGSUVSKGZpbGVuYW1lKTsKQEAgLTQ2NCwxMSArNDY0LDExIEBACiAgICAgdiA9IF9QeU9iamVjdF9HZXRBdHRySWQoZXJyLCAmUHlJZF9saW5lbm8pOwogICAgIGlmICghdikKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgIGhvbGQgPSBQeUxvbmdfQXNMb25nKHYpOworICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgIFB5X0RFQ1JFRih2KTsKICAgICBpZiAoaG9sZCA8IDAgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICpsaW5lbm8gPSAoaW50KWhvbGQ7CisgICAgKmxpbmVubyA9IGhvbGQ7CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX29mZnNldCk7CiAgICAgaWYgKCF2KQpAQCAtNDc3LDExICs0NzcsMTEgQEAKICAgICAgICAgKm9mZnNldCA9IC0xOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgfSBlbHNlIHsKLSAgICAgICAgaG9sZCA9IFB5TG9uZ19Bc0xvbmcodik7CisgICAgICAgIGhvbGQgPSBfUHlMb25nX0FzSW50KHYpOwogICAgICAgICBQeV9ERUNSRUYodik7CiAgICAgICAgIGlmIChob2xkIDwgMCAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgZ290byBmaW5hbGx5OwotICAgICAgICAqb2Zmc2V0ID0gKGludClob2xkOworICAgICAgICAqb2Zmc2V0ID0gaG9sZDsKICAgICB9CiAKICAgICB2ID0gX1B5T2JqZWN0X0dldEF0dHJJZChlcnIsICZQeUlkX3RleHQpOwpAQCAtNjMwLDggKzYzMCwxMyBAQAogICAgIH0KICAgICBob29rID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX2V4Y2VwdGhvb2spOwogICAgIGlmIChob29rKSB7Ci0gICAgICAgIFB5T2JqZWN0ICphcmdzID0gUHlUdXBsZV9QYWNrKDMsIGV4Y2VwdGlvbiwgdiwgdGIpOwotICAgICAgICBQeU9iamVjdCAqcmVzdWx0ID0gUHlFdmFsX0NhbGxPYmplY3QoaG9vaywgYXJncyk7CisgICAgICAgIFB5T2JqZWN0KiBzdGFja1szXTsKKyAgICAgICAgUHlPYmplY3QgKnJlc3VsdDsKKworICAgICAgICBzdGFja1swXSA9IGV4Y2VwdGlvbjsKKyAgICAgICAgc3RhY2tbMV0gPSB2OworICAgICAgICBzdGFja1syXSA9IHRiOworICAgICAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoaG9vaywgc3RhY2ssIDMpOwogICAgICAgICBpZiAocmVzdWx0ID09IE5VTEwpIHsKICAgICAgICAgICAgIFB5T2JqZWN0ICpleGNlcHRpb24yLCAqdjIsICp0YjI7CiAgICAgICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeXN0ZW1FeGl0KSkgewpAQCAtNjYwLDcgKzY2NSw2IEBACiAgICAgICAgICAgICBQeV9YREVDUkVGKHRiMik7CiAgICAgICAgIH0KICAgICAgICAgUHlfWERFQ1JFRihyZXN1bHQpOwotICAgICAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIH0gZWxzZSB7CiAgICAgICAgIFB5U3lzX1dyaXRlU3RkZXJyKCJzeXMuZXhjZXB0aG9vayBpcyBtaXNzaW5nXG4iKTsKICAgICAgICAgUHlFcnJfRGlzcGxheShleGNlcHRpb24sIHYsIHRiKTsKQEAgLTc5MSwxMSArNzk1LDExIEBACiAgICAgICAgIFB5RXJyX0NsZWFyKCk7CiB9CiAKLXN0YXRpYyBjb25zdCBjaGFyICpjYXVzZV9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNhdXNlX21lc3NhZ2VbXSA9CiAgICAgIlxuVGhlIGFib3ZlIGV4Y2VwdGlvbiB3YXMgdGhlIGRpcmVjdCBjYXVzZSAiCiAgICAgIm9mIHRoZSBmb2xsb3dpbmcgZXhjZXB0aW9uOlxuXG4iOwogCi1zdGF0aWMgY29uc3QgY2hhciAqY29udGV4dF9tZXNzYWdlID0KK3N0YXRpYyBjb25zdCBjaGFyIGNvbnRleHRfbWVzc2FnZVtdID0KICAgICAiXG5EdXJpbmcgaGFuZGxpbmcgb2YgdGhlIGFib3ZlIGV4Y2VwdGlvbiwgIgogICAgICJhbm90aGVyIGV4Y2VwdGlvbiBvY2N1cnJlZDpcblxuIjsKIApAQCAtOTQ2LDcgKzk1MCw3IEBACiAKICAgICBmID0gX1B5U3lzX0dldE9iamVjdElkKCZQeUlkX3N0ZGVycik7CiAgICAgaWYgKGYgIT0gTlVMTCkgewotICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgIiIpOworICAgICAgICByID0gX1B5T2JqZWN0X0NhbGxNZXRob2RJZChmLCAmUHlJZF9mbHVzaCwgTlVMTCk7CiAgICAgICAgIGlmIChyKQogICAgICAgICAgICAgUHlfREVDUkVGKHIpOwogICAgICAgICBlbHNlCkBAIC05NTQsNyArOTU4LDcgQEAKICAgICB9CiAgICAgZiA9IF9QeVN5c19HZXRPYmplY3RJZCgmUHlJZF9zdGRvdXQpOwogICAgIGlmIChmICE9IE5VTEwpIHsKLSAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsICIiKTsKKyAgICAgICAgciA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoZiwgJlB5SWRfZmx1c2gsIE5VTEwpOwogICAgICAgICBpZiAocikKICAgICAgICAgICAgIFB5X0RFQ1JFRihyKTsKICAgICAgICAgZWxzZQpAQCAtMTE0NCw4ICsxMTQ4LDggQEAKIAogbW9kX3R5CiBQeVBhcnNlcl9BU1RGcm9tRmlsZU9iamVjdChGSUxFICpmcCwgUHlPYmplY3QgKmZpbGVuYW1lLCBjb25zdCBjaGFyKiBlbmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNoYXIgKnBzMSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN0YXJ0LCBjb25zdCBjaGFyICpwczEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpwczIsIFB5Q29tcGlsZXJGbGFncyAqZmxhZ3MsIGludCAqZXJyY29kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5QXJlbmEgKmFyZW5hKQogewogICAgIG1vZF90eSBtb2Q7CkBAIC0xMTc3LDggKzExODEsOCBAQAogCiBtb2RfdHkKIFB5UGFyc2VyX0FTVEZyb21GaWxlKEZJTEUgKmZwLCBjb25zdCBjaGFyICpmaWxlbmFtZV9zdHIsIGNvbnN0IGNoYXIqIGVuYywKLSAgICAgICAgICAgICAgICAgICAgIGludCBzdGFydCwgY2hhciAqcHMxLAotICAgICAgICAgICAgICAgICAgICAgY2hhciAqcHMyLCBQeUNvbXBpbGVyRmxhZ3MgKmZsYWdzLCBpbnQgKmVycmNvZGUsCisgICAgICAgICAgICAgICAgICAgICBpbnQgc3RhcnQsIGNvbnN0IGNoYXIgKnBzMSwKKyAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnBzMiwgUHlDb21waWxlckZsYWdzICpmbGFncywgaW50ICplcnJjb2RlLAogICAgICAgICAgICAgICAgICAgICAgUHlBcmVuYSAqYXJlbmEpCiB7CiAgICAgbW9kX3R5IG1vZDsKZGlmZiAtLWdpdCBhL1B5dGhvbi9weXRpbWUuYyBiL1B5dGhvbi9weXRpbWUuYwppbmRleCA3ZjY1ODI0Li4zMDE1YTZiIDEwMDY0NAotLS0gYS9QeXRob24vcHl0aW1lLmMKKysrIGIvUHl0aG9uL3B5dGltZS5jCkBAIC03LDYgKzcsMTEgQEAKICNpbmNsdWRlIDxtYWNoL21hY2hfdGltZS5oPiAgIC8qIG1hY2hfYWJzb2x1dGVfdGltZSgpLCBtYWNoX3RpbWViYXNlX2luZm8oKSAqLwogI2VuZGlmCiAKKyNkZWZpbmUgX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3coYSwgYikgXAorICAgIChhc3NlcnQoYiA+IDApLCBcCisgICAgIChfUHlUaW1lX3QpKGEpIDwgX1B5VGltZV9NSU4gLyAoX1B5VGltZV90KShiKSBcCisgICAgIHx8IF9QeVRpbWVfTUFYIC8gKF9QeVRpbWVfdCkoYikgPCAoX1B5VGltZV90KShhKSkKKwogLyogVG8gbWlsbGlzZWNvbmQgKDEwXi0zKSAqLwogI2RlZmluZSBTRUNfVE9fTVMgMTAwMAogCkBAIC0zMywxMiArMzgsMTIgQEAKIHRpbWVfdAogX1B5TG9uZ19Bc1RpbWVfdChQeU9iamVjdCAqb2JqKQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIFBZX0xPTkdfTE9ORyB2YWw7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgbG9uZyBsb25nIHZhbDsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nTG9uZyhvYmopOwogI2Vsc2UKICAgICBsb25nIHZhbDsKLSAgICBhc3NlcnQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHRpbWVfdCkgPD0gc2l6ZW9mKGxvbmcpKTsKICAgICB2YWwgPSBQeUxvbmdfQXNMb25nKG9iaik7CiAjZW5kaWYKICAgICBpZiAodmFsID09IC0xICYmIFB5RXJyX09jY3VycmVkKCkpIHsKQEAgLTUyLDU4ICs1Nyw5MSBAQAogUHlPYmplY3QgKgogX1B5TG9uZ19Gcm9tVGltZV90KHRpbWVfdCB0KQogewotI2lmIGRlZmluZWQoSEFWRV9MT05HX0xPTkcpICYmIFNJWkVPRl9USU1FX1QgPT0gU0laRU9GX0xPTkdfTE9ORwotICAgIHJldHVybiBQeUxvbmdfRnJvbUxvbmdMb25nKChQWV9MT05HX0xPTkcpdCk7CisjaWYgU0laRU9GX1RJTUVfVCA9PSBTSVpFT0ZfTE9OR19MT05HCisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKICNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aW1lX3QpIDw9IHNpemVvZihsb25nKSk7CiAgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKICNlbmRpZgogfQogCisvKiBSb3VuZCB0byBuZWFyZXN0IHdpdGggdGllcyBnb2luZyB0byBuZWFyZXN0IGV2ZW4gaW50ZWdlcgorICAgKF9QeVRpbWVfUk9VTkRfSEFMRl9FVkVOKSAqLworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZEhhbGZFdmVuKGRvdWJsZSB4KQoreworICAgIGRvdWJsZSByb3VuZGVkID0gcm91bmQoeCk7CisgICAgaWYgKGZhYnMoeC1yb3VuZGVkKSA9PSAwLjUpCisgICAgICAgIC8qIGhhbGZ3YXkgY2FzZTogcm91bmQgdG8gZXZlbiAqLworICAgICAgICByb3VuZGVkID0gMi4wKnJvdW5kKHgvMi4wKTsKKyAgICByZXR1cm4gcm91bmRlZDsKK30KKworc3RhdGljIGRvdWJsZQorX1B5VGltZV9Sb3VuZChkb3VibGUgeCwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQoreworICAgIC8qIHZvbGF0aWxlIGF2b2lkcyBvcHRpbWl6YXRpb24gY2hhbmdpbmcgaG93IG51bWJlcnMgYXJlIHJvdW5kZWQgKi8KKyAgICB2b2xhdGlsZSBkb3VibGUgZDsKKworICAgIGQgPSB4OworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikKKyAgICAgICAgZCA9IF9QeVRpbWVfUm91bmRIYWxmRXZlbihkKTsKKyAgICBlbHNlIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCisgICAgICAgIGQgPSBjZWlsKGQpOworICAgIGVsc2UKKyAgICAgICAgZCA9IGZsb29yKGQpOworICAgIHJldHVybiBkOworfQorCitzdGF0aWMgaW50CitfUHlUaW1lX0RvdWJsZVRvRGVub21pbmF0b3IoZG91YmxlIGQsIHRpbWVfdCAqc2VjLCBsb25nICpudW1lcmF0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIGRlbm9taW5hdG9yLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCit7CisgICAgZG91YmxlIGludHBhcnQsIGVycjsKKyAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKKworICAgIGZsb2F0cGFydCA9IG1vZGYoZCwgJmludHBhcnQpOworCisgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOworICAgIGZsb2F0cGFydCA9IF9QeVRpbWVfUm91bmQoZmxvYXRwYXJ0LCByb3VuZCk7CisgICAgaWYgKGZsb2F0cGFydCA+PSBkZW5vbWluYXRvcikgeworICAgICAgICBmbG9hdHBhcnQgLT0gZGVub21pbmF0b3I7CisgICAgICAgIGludHBhcnQgKz0gMS4wOworICAgIH0KKyAgICBlbHNlIGlmIChmbG9hdHBhcnQgPCAwKSB7CisgICAgICAgIGZsb2F0cGFydCArPSBkZW5vbWluYXRvcjsKKyAgICAgICAgaW50cGFydCAtPSAxLjA7CisgICAgfQorICAgIGFzc2VydCgwLjAgPD0gZmxvYXRwYXJ0ICYmIGZsb2F0cGFydCA8IGRlbm9taW5hdG9yKTsKKworICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CisgICAgKm51bWVyYXRvciA9IChsb25nKWZsb2F0cGFydDsKKworICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7CisgICAgaWYgKGVyciA8PSAtMS4wIHx8IGVyciA+PSAxLjApIHsKKyAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKIHN0YXRpYyBpbnQKIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihQeU9iamVjdCAqb2JqLCB0aW1lX3QgKnNlYywgbG9uZyAqbnVtZXJhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBkZW5vbWluYXRvciwgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewotICAgIGFzc2VydChkZW5vbWluYXRvciA8PSBMT05HX01BWCk7CisgICAgYXNzZXJ0KGRlbm9taW5hdG9yIDw9IChkb3VibGUpTE9OR19NQVgpOworCiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOwotICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgdW5zYWZlIG9wdGltaXphdGlvbiBvbiBmbG9hdCBlbmFibGVkIGJ5IGdjYyAtTzMgKi8KLSAgICAgICAgdm9sYXRpbGUgZG91YmxlIGZsb2F0cGFydDsKLQotICAgICAgICBkID0gUHlGbG9hdF9Bc0RvdWJsZShvYmopOwotICAgICAgICBmbG9hdHBhcnQgPSBtb2RmKGQsICZpbnRwYXJ0KTsKLSAgICAgICAgaWYgKGZsb2F0cGFydCA8IDApIHsKLSAgICAgICAgICAgIGZsb2F0cGFydCA9IDEuMCArIGZsb2F0cGFydDsKLSAgICAgICAgICAgIGludHBhcnQgLT0gMS4wOwotICAgICAgICB9Ci0KLSAgICAgICAgZmxvYXRwYXJ0ICo9IGRlbm9taW5hdG9yOwotICAgICAgICBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7Ci0gICAgICAgICAgICBmbG9hdHBhcnQgPSBjZWlsKGZsb2F0cGFydCk7Ci0gICAgICAgICAgICBpZiAoZmxvYXRwYXJ0ID49IGRlbm9taW5hdG9yKSB7Ci0gICAgICAgICAgICAgICAgZmxvYXRwYXJ0ID0gMC4wOwotICAgICAgICAgICAgICAgIGludHBhcnQgKz0gMS4wOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgZmxvYXRwYXJ0ID0gZmxvb3IoZmxvYXRwYXJ0KTsKLSAgICAgICAgfQotCi0gICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7Ci0gICAgICAgIGVyciA9IGludHBhcnQgLSAoZG91YmxlKSpzZWM7Ci0gICAgICAgIGlmIChlcnIgPD0gLTEuMCB8fCBlcnIgPj0gMS4wKSB7Ci0gICAgICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKLSAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgfQotCi0gICAgICAgICpudW1lcmF0b3IgPSAobG9uZylmbG9hdHBhcnQ7Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICBkb3VibGUgZCA9IFB5RmxvYXRfQXNEb3VibGUob2JqKTsKKyAgICAgICAgcmV0dXJuIF9QeVRpbWVfRG91YmxlVG9EZW5vbWluYXRvcihkLCBzZWMsIG51bWVyYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZW5vbWluYXRvciwgcm91bmQpOwogICAgIH0KICAgICBlbHNlIHsKICAgICAgICAgKnNlYyA9IF9QeUxvbmdfQXNUaW1lX3Qob2JqKTsKKyAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIGlmICgqc2VjID09ICh0aW1lX3QpLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkKICAgICAgICAgICAgIHJldHVybiAtMTsKLSAgICAgICAgKm51bWVyYXRvciA9IDA7CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KIH0KQEAgLTExMiwxMyArMTUwLDEyIEBACiBfUHlUaW1lX09iamVjdFRvVGltZV90KFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7CiAgICAgaWYgKFB5RmxvYXRfQ2hlY2sob2JqKSkgewotICAgICAgICBkb3VibGUgZCwgaW50cGFydCwgZXJyOworICAgICAgICBkb3VibGUgaW50cGFydCwgZXJyOworICAgICAgICAvKiB2b2xhdGlsZSBhdm9pZHMgb3B0aW1pemF0aW9uIGNoYW5naW5nIGhvdyBudW1iZXJzIGFyZSByb3VuZGVkICovCisgICAgICAgIHZvbGF0aWxlIGRvdWJsZSBkOwogCiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0NFSUxJTkcpCi0gICAgICAgICAgICBkID0gY2VpbChkKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgICAgZCA9IGZsb29yKGQpOworICAgICAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CiAgICAgICAgICh2b2lkKW1vZGYoZCwgJmludHBhcnQpOwogCiAgICAgICAgICpzZWMgPSAodGltZV90KWludHBhcnQ7CkBAIC0xNDEsMTQgKzE3OCwyMCBAQAogX1B5VGltZV9PYmplY3RUb1RpbWVzcGVjKFB5T2JqZWN0ICpvYmosIHRpbWVfdCAqc2VjLCBsb25nICpuc2VjLAogICAgICAgICAgICAgICAgICAgICAgICAgIF9QeVRpbWVfcm91bmRfdCByb3VuZCkKIHsKLSAgICByZXR1cm4gX1B5VGltZV9PYmplY3RUb0Rlbm9taW5hdG9yKG9iaiwgc2VjLCBuc2VjLCAxZTksIHJvdW5kKTsKKyAgICBpbnQgcmVzOworICAgIHJlcyA9IF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgbnNlYywgMWU5LCByb3VuZCk7CisgICAgYXNzZXJ0KDAgPD0gKm5zZWMgJiYgKm5zZWMgPCBTRUNfVE9fTlMpOworICAgIHJldHVybiByZXM7CiB9CiAKIGludAogX1B5VGltZV9PYmplY3RUb1RpbWV2YWwoUHlPYmplY3QgKm9iaiwgdGltZV90ICpzZWMsIGxvbmcgKnVzZWMsCiAgICAgICAgICAgICAgICAgICAgICAgICBfUHlUaW1lX3JvdW5kX3Qgcm91bmQpCiB7Ci0gICAgcmV0dXJuIF9QeVRpbWVfT2JqZWN0VG9EZW5vbWluYXRvcihvYmosIHNlYywgdXNlYywgMWU2LCByb3VuZCk7CisgICAgaW50IHJlczsKKyAgICByZXMgPSBfUHlUaW1lX09iamVjdFRvRGVub21pbmF0b3Iob2JqLCBzZWMsIHVzZWMsIDFlNiwgcm91bmQpOworICAgIGFzc2VydCgwIDw9ICp1c2VjICYmICp1c2VjIDwgU0VDX1RPX1VTKTsKKyAgICByZXR1cm4gcmVzOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYyLDIxICsyMDUsMjQgQEAKIF9QeVRpbWVfRnJvbVNlY29uZHMoaW50IHNlY29uZHMpCiB7CiAgICAgX1B5VGltZV90IHQ7CisgICAgdCA9IChfUHlUaW1lX3Qpc2Vjb25kczsKICAgICAvKiBlbnN1cmUgdGhhdCBpbnRlZ2VyIG92ZXJmbG93IGNhbm5vdCBoYXBwZW4sIGludCB0eXBlIHNob3VsZCBoYXZlIDMyCiAgICAgICAgYml0cywgd2hlcmVhcyBfUHlUaW1lX3QgdHlwZSBoYXMgYXQgbGVhc3QgNjQgYml0cyAoU0VDX1RPX01TIHRha2VzIDMwCiAgICAgICAgYml0cykuICovCi0gICAgYXNzZXJ0KChzZWNvbmRzID49IDAgJiYgc2Vjb25kcyA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKLSAgICAgICAgICAgfHwgKHNlY29uZHMgPCAwICYmIHNlY29uZHMgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKLSAgICB0ID0gKF9QeVRpbWVfdClzZWNvbmRzICogU0VDX1RPX05TOworICAgIFB5X0JVSUxEX0FTU0VSVChJTlRfTUFYIDw9IF9QeVRpbWVfTUFYIC8gU0VDX1RPX05TKTsKKyAgICBQeV9CVUlMRF9BU1NFUlQoSU5UX01JTiA+PSBfUHlUaW1lX01JTiAvIFNFQ19UT19OUyk7CisgICAgYXNzZXJ0KCh0ID49IDAgJiYgdCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUykKKyAgICAgICAgICAgfHwgKHQgPCAwICYmIHQgPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpKTsKKyAgICB0ICo9IFNFQ19UT19OUzsKICAgICByZXR1cm4gdDsKIH0KIAogX1B5VGltZV90Ci1fUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhQWV9MT05HX0xPTkcgbnMpCitfUHlUaW1lX0Zyb21OYW5vc2Vjb25kcyhsb25nIGxvbmcgbnMpCiB7CiAgICAgX1B5VGltZV90IHQ7Ci0gICAgYXNzZXJ0KHNpemVvZihQWV9MT05HX0xPTkcpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKLSAgICB0ID0gUHlfU0FGRV9ET1dOQ0FTVChucywgUFlfTE9OR19MT05HLCBfUHlUaW1lX3QpOworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA8PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgdCA9IFB5X1NBRkVfRE9XTkNBU1QobnMsIGxvbmcgbG9uZywgX1B5VGltZV90KTsKICAgICByZXR1cm4gdDsKIH0KIApAQCAtMTg3LDEyICsyMzMsMTUgQEAKICAgICBfUHlUaW1lX3QgdDsKICAgICBpbnQgcmVzID0gMDsKIAotICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWMgKiBTRUNfVE9fTlM7Ci0gICAgaWYgKHQgLyBTRUNfVE9fTlMgIT0gdHMtPnR2X3NlYykgeworICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YodHMtPnR2X3NlYykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRzLT50dl9zZWM7CisKKyAgICBpZiAoX1B5VGltZV9jaGVja19tdWxfb3ZlcmZsb3codCwgU0VDX1RPX05TKSkgewogICAgICAgICBpZiAocmFpc2UpCiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgIHJlcyA9IC0xOwogICAgIH0KKyAgICB0ID0gdCAqIFNFQ19UT19OUzsKIAogICAgIHQgKz0gdHMtPnR2X25zZWM7CiAKQEAgLTIwNiwxMiArMjU1LDE1IEBACiAgICAgX1B5VGltZV90IHQ7CiAgICAgaW50IHJlcyA9IDA7CiAKLSAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjICogU0VDX1RPX05TOwotICAgIGlmICh0IC8gU0VDX1RPX05TICE9IHR2LT50dl9zZWMpIHsKKyAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKHR2LT50dl9zZWMpIDw9IHNpemVvZihfUHlUaW1lX3QpKTsKKyAgICB0ID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworCisgICAgaWYgKF9QeVRpbWVfY2hlY2tfbXVsX292ZXJmbG93KHQsIFNFQ19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICByZXMgPSAtMTsKICAgICB9CisgICAgdCA9IHQgKiBTRUNfVE9fTlM7CiAKICAgICB0ICs9IChfUHlUaW1lX3QpdHYtPnR2X3VzZWMgKiBVU19UT19OUzsKIApAQCAtMjIxLDUwICsyNzMsNTIgQEAKICNlbmRpZgogCiBzdGF0aWMgaW50CitfUHlUaW1lX0Zyb21GbG9hdE9iamVjdChfUHlUaW1lX3QgKnQsIGRvdWJsZSB2YWx1ZSwgX1B5VGltZV9yb3VuZF90IHJvdW5kLAorICAgICAgICAgICAgICAgICAgICAgICAgbG9uZyB1bml0X3RvX25zKQoreworICAgIGRvdWJsZSBlcnI7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgLyogY29udmVydCB0byBhIG51bWJlciBvZiBuYW5vc2Vjb25kcyAqLworICAgIGQgPSB2YWx1ZTsKKyAgICBkICo9IChkb3VibGUpdW5pdF90b19uczsKKyAgICBkID0gX1B5VGltZV9Sb3VuZChkLCByb3VuZCk7CisKKyAgICAqdCA9IChfUHlUaW1lX3QpZDsKKyAgICBlcnIgPSBkIC0gKGRvdWJsZSkqdDsKKyAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgeworICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CisgICAgICAgIHJldHVybiAtMTsKKyAgICB9CisgICAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBpbnQKIF9QeVRpbWVfRnJvbU9iamVjdChfUHlUaW1lX3QgKnQsIFB5T2JqZWN0ICpvYmosIF9QeVRpbWVfcm91bmRfdCByb3VuZCwKLSAgICAgICAgICAgICAgICAgICBsb25nIHRvX25hbm9zZWNvbmRzKQorICAgICAgICAgICAgICAgICAgIGxvbmcgdW5pdF90b19ucykKIHsKICAgICBpZiAoUHlGbG9hdF9DaGVjayhvYmopKSB7Ci0gICAgICAgIC8qIHZvbGF0aWxlIGF2b2lkcyB1bnNhZmUgb3B0aW1pemF0aW9uIG9uIGZsb2F0IGVuYWJsZWQgYnkgZ2NjIC1PMyAqLwotICAgICAgICB2b2xhdGlsZSBkb3VibGUgZCwgZXJyOwotCi0gICAgICAgIC8qIGNvbnZlcnQgdG8gYSBudW1iZXIgb2YgbmFub3NlY29uZHMgKi8KKyAgICAgICAgZG91YmxlIGQ7CiAgICAgICAgIGQgPSBQeUZsb2F0X0FzRG91YmxlKG9iaik7Ci0gICAgICAgIGQgKj0gdG9fbmFub3NlY29uZHM7Ci0KLSAgICAgICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykKLSAgICAgICAgICAgIGQgPSBjZWlsKGQpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkID0gZmxvb3IoZCk7Ci0KLSAgICAgICAgKnQgPSAoX1B5VGltZV90KWQ7Ci0gICAgICAgIGVyciA9IGQgLSAoZG91YmxlKSp0OwotICAgICAgICBpZiAoZmFicyhlcnIpID49IDEuMCkgewotICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gX1B5VGltZV9Gcm9tRmxvYXRPYmplY3QodCwgZCwgcm91bmQsIHVuaXRfdG9fbnMpOwogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgICAgICBQWV9MT05HX0xPTkcgc2VjOworICAgICAgICBsb25nIGxvbmcgc2VjOworICAgICAgICBQeV9CVUlMRF9BU1NFUlQoc2l6ZW9mKGxvbmcgbG9uZykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworCiAgICAgICAgIHNlYyA9IFB5TG9uZ19Bc0xvbmdMb25nKG9iaik7Ci0gICAgICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA8PSBzaXplb2YoX1B5VGltZV90KSk7Ci0jZWxzZQotICAgICAgICBsb25nIHNlYzsKLSAgICAgICAgc2VjID0gUHlMb25nX0FzTG9uZyhvYmopOwotICAgICAgICBhc3NlcnQoc2l6ZW9mKFBZX0xPTkdfTE9ORykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOwotI2VuZGlmCiAgICAgICAgIGlmIChzZWMgPT0gLTEgJiYgUHlFcnJfT2NjdXJyZWQoKSkgewogICAgICAgICAgICAgaWYgKFB5RXJyX0V4Y2VwdGlvbk1hdGNoZXMoUHlFeGNfT3ZlcmZsb3dFcnJvcikpCiAgICAgICAgICAgICAgICAgX1B5VGltZV9vdmVyZmxvdygpOwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgICp0ID0gc2VjICogdG9fbmFub3NlY29uZHM7Ci0gICAgICAgIGlmICgqdCAvIHRvX25hbm9zZWNvbmRzICE9IHNlYykgeworCisgICAgICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyhzZWMsIHVuaXRfdG9fbnMpKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KKyAgICAgICAgKnQgPSBzZWMgKiB1bml0X3RvX25zOwogICAgICAgICByZXR1cm4gMDsKICAgICB9CiB9CkBAIC0yODQsMjQgKzMzOCwyOCBAQAogZG91YmxlCiBfUHlUaW1lX0FzU2Vjb25kc0RvdWJsZShfUHlUaW1lX3QgdCkKIHsKLSAgICBfUHlUaW1lX3Qgc2VjLCBuczsKLSAgICAvKiBEaXZpZGUgdXNpbmcgaW50ZWdlcnMgdG8gYXZvaWQgcm91bmRpbmcgaXNzdWVzIG9uIHRoZSBpbnRlZ2VyIHBhcnQuCi0gICAgICAgMWUtOSBjYW5ub3QgYmUgc3RvcmVkIGV4YWN0bHkgaW4gSUVFRSA2NC1iaXQuICovCi0gICAgc2VjID0gdCAvIFNFQ19UT19OUzsKLSAgICBucyA9IHQgJSBTRUNfVE9fTlM7Ci0gICAgcmV0dXJuIChkb3VibGUpc2VjICsgKGRvdWJsZSlucyAqIDFlLTk7CisgICAgLyogdm9sYXRpbGUgYXZvaWRzIG9wdGltaXphdGlvbiBjaGFuZ2luZyBob3cgbnVtYmVycyBhcmUgcm91bmRlZCAqLworICAgIHZvbGF0aWxlIGRvdWJsZSBkOworCisgICAgaWYgKHQgJSBTRUNfVE9fTlMgPT0gMCkgeworICAgICAgICBfUHlUaW1lX3Qgc2VjczsKKyAgICAgICAgLyogRGl2aWRlIHVzaW5nIGludGVnZXJzIHRvIGF2b2lkIHJvdW5kaW5nIGlzc3VlcyBvbiB0aGUgaW50ZWdlciBwYXJ0LgorICAgICAgICAgICAxZS05IGNhbm5vdCBiZSBzdG9yZWQgZXhhY3RseSBpbiBJRUVFIDY0LWJpdC4gKi8KKyAgICAgICAgc2VjcyA9IHQgLyBTRUNfVE9fTlM7CisgICAgICAgIGQgPSAoZG91YmxlKXNlY3M7CisgICAgfQorICAgIGVsc2UgeworICAgICAgICBkID0gKGRvdWJsZSl0OworICAgICAgICBkIC89IDFlOTsKKyAgICB9CisgICAgcmV0dXJuIGQ7CiB9CiAKIFB5T2JqZWN0ICoKIF9QeVRpbWVfQXNOYW5vc2Vjb25kc09iamVjdChfUHlUaW1lX3QgdCkKIHsKLSNpZmRlZiBIQVZFX0xPTkdfTE9ORwotICAgIGFzc2VydChzaXplb2YoUFlfTE9OR19MT05HKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKFBZX0xPTkdfTE9ORyl0KTsKLSNlbHNlCi0gICAgYXNzZXJ0KHNpemVvZihsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7Ci0gICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZygobG9uZyl0KTsKLSNlbmRpZgorICAgIFB5X0JVSUxEX0FTU0VSVChzaXplb2YobG9uZyBsb25nKSA+PSBzaXplb2YoX1B5VGltZV90KSk7CisgICAgcmV0dXJuIFB5TG9uZ19Gcm9tTG9uZ0xvbmcoKGxvbmcgbG9uZyl0KTsKIH0KIAogc3RhdGljIF9QeVRpbWVfdApAQCAtMzA5LDcgKzM2NywyMCBAQAogICAgICAgICAgICAgICAgY29uc3QgX1B5VGltZV9yb3VuZF90IHJvdW5kKQogewogICAgIGFzc2VydChrID4gMSk7Ci0gICAgaWYgKHJvdW5kID09IF9QeVRpbWVfUk9VTkRfQ0VJTElORykgeworICAgIGlmIChyb3VuZCA9PSBfUHlUaW1lX1JPVU5EX0hBTEZfRVZFTikgeworICAgICAgICBfUHlUaW1lX3QgeCwgciwgYWJzX3I7CisgICAgICAgIHggPSB0IC8gazsKKyAgICAgICAgciA9IHQgJSBrOworICAgICAgICBhYnNfciA9IFB5X0FCUyhyKTsKKyAgICAgICAgaWYgKGFic19yID4gayAvIDIgfHwgKGFic19yID09IGsgLyAyICYmIChQeV9BQlMoeCkgJiAxKSkpIHsKKyAgICAgICAgICAgIGlmICh0ID49IDApCisgICAgICAgICAgICAgICAgeCsrOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHgtLTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4geDsKKyAgICB9CisgICAgZWxzZSBpZiAocm91bmQgPT0gX1B5VGltZV9ST1VORF9DRUlMSU5HKSB7CiAgICAgICAgIGlmICh0ID49IDApCiAgICAgICAgICAgICByZXR1cm4gKHQgKyBrIC0gMSkgLyBrOwogICAgICAgICBlbHNlCkBAIC0zNzMsNyArNDQ0LDcgQEAKIF9QeVRpbWVfQXNUaW1ldmFsU3RydWN0X2ltcGwoX1B5VGltZV90IHQsIHN0cnVjdCB0aW1ldmFsICp0diwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgX1B5VGltZV9yb3VuZF90IHJvdW5kLCBpbnQgcmFpc2UpCiB7Ci0gICAgX1B5VGltZV90IHNlY3M7CisgICAgX1B5VGltZV90IHNlY3MsIHNlY3MyOwogICAgIGludCB1czsKICAgICBpbnQgcmVzOwogCkBAIC0zODYsNyArNDU3LDggQEAKICNlbmRpZgogICAgIHR2LT50dl91c2VjID0gdXM7CiAKLSAgICBpZiAocmVzIDwgMCB8fCAoX1B5VGltZV90KXR2LT50dl9zZWMgIT0gc2VjcykgeworICAgIHNlY3MyID0gKF9QeVRpbWVfdCl0di0+dHZfc2VjOworICAgIGlmIChyZXMgPCAwIHx8IHNlY3MyICE9IHNlY3MpIHsKICAgICAgICAgaWYgKHJhaXNlKQogICAgICAgICAgICAgZXJyb3JfdGltZV90X292ZXJmbG93KCk7CiAgICAgICAgIHJldHVybiAtMTsKQEAgLTQyNCw2ICs0OTYsNyBAQAogICAgIHJldHVybiAwOwogfQogCisKICNpZiBkZWZpbmVkKEhBVkVfQ0xPQ0tfR0VUVElNRSkgfHwgZGVmaW5lZChIQVZFX0tRVUVVRSkKIGludAogX1B5VGltZV9Bc1RpbWVzcGVjKF9QeVRpbWVfdCB0LCBzdHJ1Y3QgdGltZXNwZWMgKnRzKQpAQCAtNDM3LDEzICs1MTAsMTMgQEAKICAgICAgICAgc2VjcyAtPSAxOwogICAgIH0KICAgICB0cy0+dHZfc2VjID0gKHRpbWVfdClzZWNzOwotICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgewotICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9CisgICAgYXNzZXJ0KDAgPD0gbnNlYyAmJiBuc2VjIDwgU0VDX1RPX05TKTsKICAgICB0cy0+dHZfbnNlYyA9IG5zZWM7CiAKLSAgICBhc3NlcnQoMCA8PSB0cy0+dHZfbnNlYyAmJiB0cy0+dHZfbnNlYyA8PSA5OTk5OTk5OTkpOworICAgIGlmICgoX1B5VGltZV90KXRzLT50dl9zZWMgIT0gc2VjcykgeworICAgICAgICBlcnJvcl90aW1lX3Rfb3ZlcmZsb3coKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KICAgICByZXR1cm4gMDsKIH0KICNlbmRpZgpAQCAtNTU3LDE5ICs2MzAsMjAgQEAKICAgICByZXR1cm4gcHlnZXR0aW1lb2ZkYXkodCwgaW5mbywgMSk7CiB9CiAKLQogc3RhdGljIGludAogcHltb25vdG9uaWMoX1B5VGltZV90ICp0cCwgX1B5X2Nsb2NrX2luZm9fdCAqaW5mbywgaW50IHJhaXNlKQogewogI2lmIGRlZmluZWQoTVNfV0lORE9XUykKLSAgICBVTE9OR0xPTkcgcmVzdWx0OworICAgIFVMT05HTE9ORyB0aWNrczsKKyAgICBfUHlUaW1lX3QgdDsKIAogICAgIGFzc2VydChpbmZvID09IE5VTEwgfHwgcmFpc2UpOwogCi0gICAgcmVzdWx0ID0gR2V0VGlja0NvdW50NjQoKTsKKyAgICB0aWNrcyA9IEdldFRpY2tDb3VudDY0KCk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZih0aWNrcykgPD0gc2l6ZW9mKF9QeVRpbWVfdCkpOworICAgIHQgPSAoX1B5VGltZV90KXRpY2tzOwogCi0gICAgKnRwID0gcmVzdWx0ICogTVNfVE9fTlM7Ci0gICAgaWYgKCp0cCAvIE1TX1RPX05TICE9IHJlc3VsdCkgeworICAgIGlmIChfUHlUaW1lX2NoZWNrX211bF9vdmVyZmxvdyh0LCBNU19UT19OUykpIHsKICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBfUHlUaW1lX292ZXJmbG93KCk7CiAgICAgICAgICAgICByZXR1cm4gLTE7CkBAIC01NzcsNiArNjUxLDcgQEAKICAgICAgICAgLyogSGVsbG8sIHRpbWUgdHJhdmVsZXIhICovCiAgICAgICAgIGFzc2VydCgwKTsKICAgICB9CisgICAgKnRwID0gdCAqIE1TX1RPX05TOwogCiAgICAgaWYgKGluZm8pIHsKICAgICAgICAgRFdPUkQgdGltZUFkanVzdG1lbnQsIHRpbWVJbmNyZW1lbnQ7CkBAIC02ODksOCArNzY0LDU3IEBACiAgICAgaWYgKF9QeVRpbWVfR2V0TW9ub3RvbmljQ2xvY2tXaXRoSW5mbygmdCwgTlVMTCkgPCAwKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICAvKiBjaGVjayB0aGF0IF9QeVRpbWVfRnJvbVNlY29uZHMoKSBjYW5ub3Qgb3ZlcmZsb3cgKi8KLSAgICBhc3NlcnQoSU5UX01BWCA8PSBfUHlUaW1lX01BWCAvIFNFQ19UT19OUyk7Ci0gICAgYXNzZXJ0KElOVF9NSU4gPj0gX1B5VGltZV9NSU4gLyBTRUNfVE9fTlMpOwogICAgIHJldHVybiAwOwogfQorCitpbnQKK19QeVRpbWVfbG9jYWx0aW1lKHRpbWVfdCB0LCBzdHJ1Y3QgdG0gKnRtKQoreworI2lmZGVmIE1TX1dJTkRPV1MKKyAgICBpbnQgZXJyb3I7CisKKyAgICBlcnJvciA9IGxvY2FsdGltZV9zKHRtLCAmdCk7CisgICAgaWYgKGVycm9yICE9IDApIHsKKyAgICAgICAgZXJybm8gPSBlcnJvcjsKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2Vsc2UgLyogIU1TX1dJTkRPV1MgKi8KKyAgICBpZiAobG9jYWx0aW1lX3IoJnQsIHRtKSA9PSBOVUxMKSB7CisjaWZkZWYgRUlOVkFMCisgICAgICAgIGlmIChlcnJubyA9PSAwKQorICAgICAgICAgICAgZXJybm8gPSBFSU5WQUw7CisjZW5kaWYKKyAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOworICAgICAgICByZXR1cm4gLTE7CisgICAgfQorICAgIHJldHVybiAwOworI2VuZGlmIC8qIE1TX1dJTkRPV1MgKi8KK30KKworaW50CitfUHlUaW1lX2dtdGltZSh0aW1lX3QgdCwgc3RydWN0IHRtICp0bSkKK3sKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgaW50IGVycm9yOworCisgICAgZXJyb3IgPSBnbXRpbWVfcyh0bSwgJnQpOworICAgIGlmIChlcnJvciAhPSAwKSB7CisgICAgICAgIGVycm5vID0gZXJyb3I7CisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbHNlIC8qICFNU19XSU5ET1dTICovCisgICAgaWYgKGdtdGltZV9yKCZ0LCB0bSkgPT0gTlVMTCkgeworI2lmZGVmIEVJTlZBTAorICAgICAgICBpZiAoZXJybm8gPT0gMCkKKyAgICAgICAgICAgIGVycm5vID0gRUlOVkFMOworI2VuZGlmCisgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKKyAgICAgICAgcmV0dXJuIC0xOworICAgIH0KKyAgICByZXR1cm4gMDsKKyNlbmRpZiAvKiBNU19XSU5ET1dTICovCit9CmRpZmYgLS1naXQgYS9QeXRob24vcmFuZG9tLmMgYi9QeXRob24vcmFuZG9tLmMKaW5kZXggZjJhZGE1Zi4uNmY5ZjcxMSAxMDA2NDQKLS0tIGEvUHl0aG9uL3JhbmRvbS5jCisrKyBiL1B5dGhvbi9yYW5kb20uYwpAQCAtMSw2ICsxLDkgQEAKICNpbmNsdWRlICJQeXRob24uaCIKICNpZmRlZiBNU19XSU5ET1dTCiAjICBpbmNsdWRlIDx3aW5kb3dzLmg+CisvKiBBbGwgc2FtcGxlIE1TRE4gd2luY3J5cHQgcHJvZ3JhbXMgaW5jbHVkZSB0aGUgaGVhZGVyIGJlbG93LiBJdCBpcyBhdCBsZWFzdAorICogcmVxdWlyZWQgd2l0aCBNaW4gR1cuICovCisjICBpbmNsdWRlIDx3aW5jcnlwdC5oPgogI2Vsc2UKICMgIGluY2x1ZGUgPGZjbnRsLmg+CiAjICBpZmRlZiBIQVZFX1NZU19TVEFUX0gKQEAgLTM2LDEwICszOSw5IEBACiAgICAgcmV0dXJuIDA7CiAKIGVycm9yOgotICAgIGlmIChyYWlzZSkKKyAgICBpZiAocmFpc2UpIHsKICAgICAgICAgUHlFcnJfU2V0RnJvbVdpbmRvd3NFcnIoMCk7Ci0gICAgZWxzZQotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBXaW5kb3dzIHJhbmRvbSBBUEkgKENyeXB0b0dlbikiKTsKKyAgICB9CiAgICAgcmV0dXJuIC0xOwogfQogCkBAIC01Miw4ICs1NCw5IEBACiAKICAgICBpZiAoaENyeXB0UHJvdiA9PSAwKQogICAgIHsKLSAgICAgICAgaWYgKHdpbjMyX3VyYW5kb21faW5pdChyYWlzZSkgPT0gLTEpCisgICAgICAgIGlmICh3aW4zMl91cmFuZG9tX2luaXQocmFpc2UpID09IC0xKSB7CiAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgIH0KICAgICB9CiAKICAgICB3aGlsZSAoc2l6ZSA+IDApCkBAIC02MiwxMSArNjUsOSBAQAogICAgICAgICBpZiAoIUNyeXB0R2VuUmFuZG9tKGhDcnlwdFByb3YsIChEV09SRCljaHVuaywgYnVmZmVyKSkKICAgICAgICAgewogICAgICAgICAgICAgLyogQ3J5cHRHZW5SYW5kb20oKSBmYWlsZWQgKi8KLSAgICAgICAgICAgIGlmIChyYWlzZSkKKyAgICAgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21XaW5kb3dzRXJyKDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoIkZhaWxlZCB0byBpbml0aWFsaXplZCB0aGUgcmFuZG9taXplZCBoYXNoICIKLSAgICAgICAgICAgICAgICAgICAgICAgICJzZWNyZXQgdXNpbmcgQ3J5cHRvR2VuKSIpOworICAgICAgICAgICAgfQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9CiAgICAgICAgIGJ1ZmZlciArPSBjaHVuazsKQEAgLTgzLDI5ICs4NCwyOCBAQAogLyogRmlsbCBidWZmZXIgd2l0aCBzaXplIHBzZXVkby1yYW5kb20gYnl0ZXMgZ2VuZXJhdGVkIGJ5IGdldGVudHJvcHkoKS4KICAgIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG9yIHJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLgogCi0gICBJZiBmYXRhbCBpcyBub256ZXJvLCBjYWxsIFB5X0ZhdGFsRXJyb3IoKSBpbnN0ZWFkIG9mIHJhaXNpbmcgYW4gZXhjZXB0aW9uCi0gICBvbiBlcnJvci4gKi8KKyAgIElmIHJhaXNlIGlzIHplcm8sIGRvbid0IHJhaXNlIGFuIGV4Y2VwdGlvbiBvbiBlcnJvci4gKi8KIHN0YXRpYyBpbnQKLXB5X2dldGVudHJvcHkodW5zaWduZWQgY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCBmYXRhbCkKK3B5X2dldGVudHJvcHkoY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKIHsKICAgICB3aGlsZSAoc2l6ZSA+IDApIHsKICAgICAgICAgUHlfc3NpemVfdCBsZW4gPSBQeV9NSU4oc2l6ZSwgMjU2KTsKICAgICAgICAgaW50IHJlczsKIAotICAgICAgICBpZiAoIWZhdGFsKSB7CisgICAgICAgIGlmIChyYWlzZSkgewogICAgICAgICAgICAgUHlfQkVHSU5fQUxMT1dfVEhSRUFEUwogICAgICAgICAgICAgcmVzID0gZ2V0ZW50cm9weShidWZmZXIsIGxlbik7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwotCi0gICAgICAgICAgICBpZiAocmVzIDwgMCkgewotICAgICAgICAgICAgICAgIFB5RXJyX1NldEZyb21FcnJubyhQeUV4Y19PU0Vycm9yKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICByZXMgPSBnZXRlbnRyb3B5KGJ1ZmZlciwgbGVuKTsKLSAgICAgICAgICAgIGlmIChyZXMgPCAwKQotICAgICAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImdldGVudHJvcHkoKSBmYWlsZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChyZXMgPCAwKSB7CisgICAgICAgICAgICBpZiAocmFpc2UpIHsKKyAgICAgICAgICAgICAgICBQeUVycl9TZXRGcm9tRXJybm8oUHlFeGNfT1NFcnJvcik7CisgICAgICAgICAgICB9CisgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAogICAgICAgICBidWZmZXIgKz0gbGVuOwpAQCAtMTI4LDI1ICsxMjgsMjIgQEAKICAgICAgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggRUlOVFIgYW5kIHRoZSBQeXRob24gc2lnbmFsIGhhbmRsZXIgcmFpc2VkIGFuCiAgICAgIGV4Y2VwdGlvbiwgb3IgZ2V0cmFuZG9tKCkgZmFpbGVkIHdpdGggYSBkaWZmZXJlbnQgZXJyb3IuICovCiBzdGF0aWMgaW50Ci1weV9nZXRyYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUsIGludCByYWlzZSkKK3B5X2dldHJhbmRvbSh2b2lkICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgLyogSXMgZ2V0cmFuZG9tKCkgc3VwcG9ydGVkIGJ5IHRoZSBydW5uaW5nIGtlcm5lbD8gU2V0IHRvIDAgaWYgZ2V0cmFuZG9tKCkKICAgICAgICBmYWlsZWQgd2l0aCBFTk9TWVMgb3IgRVBFUk0uIE5lZWQgTGludXgga2VybmVsIDMuMTcgb3IgbmV3ZXIsIG9yIFNvbGFyaXMKICAgICAgICAxMS4zIG9yIG5ld2VyICovCiAgICAgc3RhdGljIGludCBnZXRyYW5kb21fd29ya3MgPSAxOwotCi0gICAgLyogZ2V0cmFuZG9tKCkgb24gTGludXggd2lsbCBibG9jayBpZiBjYWxsZWQgYmVmb3JlIHRoZSBrZXJuZWwgaGFzCi0gICAgICogaW5pdGlhbGl6ZWQgdGhlIHVyYW5kb20gZW50cm9weSBwb29sLiBUaGlzIHdpbGwgY2F1c2UgUHl0aG9uCi0gICAgICogdG8gaGFuZyBvbiBzdGFydHVwIGlmIGNhbGxlZCB2ZXJ5IGVhcmx5IGluIHRoZSBib290IHByb2Nlc3MgLQotICAgICAqIHNlZSBodHRwczovL2J1Z3MucHl0aG9uLm9yZy9pc3N1ZTI2ODM5LiBUbyBhdm9pZCB0aGlzLCB1c2UgdGhlCi0gICAgICogR1JORF9OT05CTE9DSyBmbGFnLiAqLwotICAgIGNvbnN0IGludCBmbGFncyA9IEdSTkRfTk9OQkxPQ0s7CisgICAgaW50IGZsYWdzOworICAgIGNoYXIgKmRlc3Q7CiAgICAgbG9uZyBuOwogCiAgICAgaWYgKCFnZXRyYW5kb21fd29ya3MpIHsKICAgICAgICAgcmV0dXJuIDA7CiAgICAgfQogCisgICAgZmxhZ3MgPSBibG9ja2luZyA/IDAgOiBHUk5EX05PTkJMT0NLOworICAgIGRlc3QgPSBidWZmZXI7CiAgICAgd2hpbGUgKDAgPCBzaXplKSB7CiAjaWZkZWYgc3VuCiAgICAgICAgIC8qIElzc3VlICMyNjczNTogT24gU29sYXJpcywgZ2V0cmFuZG9tKCkgaXMgbGltaXRlZCB0byByZXR1cm5pbmcgdXAKQEAgLTE2MCwyMyArMTU3LDIzIEBACiAjaWZkZWYgSEFWRV9HRVRSQU5ET00KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gZ2V0cmFuZG9tKGJ1ZmZlciwgbiwgZmxhZ3MpOworICAgICAgICAgICAgbiA9IGdldHJhbmRvbShkZXN0LCBuLCBmbGFncyk7CiAgICAgICAgICAgICBQeV9FTkRfQUxMT1dfVEhSRUFEUwogICAgICAgICB9CiAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgbiA9IGdldHJhbmRvbShidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBnZXRyYW5kb20oZGVzdCwgbiwgZmxhZ3MpOwogICAgICAgICB9CiAjZWxzZQogICAgICAgICAvKiBPbiBMaW51eCwgdXNlIHRoZSBzeXNjYWxsKCkgZnVuY3Rpb24gYmVjYXVzZSB0aGUgR05VIGxpYmMgZG9lc24ndAotICAgICAgICAgKiBleHBvc2UgdGhlIExpbnV4IGdldHJhbmRvbSgpIHN5c2NhbGwgeWV0LiBTZWU6Ci0gICAgICAgICAqIGh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE3MjUyICovCisgICAgICAgICAgIGV4cG9zZSB0aGUgTGludXggZ2V0cmFuZG9tKCkgc3lzY2FsbCB5ZXQuIFNlZToKKyAgICAgICAgICAgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNTIgKi8KICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICBQeV9CRUdJTl9BTExPV19USFJFQURTCi0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgICAgIFB5X0VORF9BTExPV19USFJFQURTCiAgICAgICAgIH0KICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBuID0gc3lzY2FsbChTWVNfZ2V0cmFuZG9tLCBidWZmZXIsIG4sIGZsYWdzKTsKKyAgICAgICAgICAgIG4gPSBzeXNjYWxsKFNZU19nZXRyYW5kb20sIGRlc3QsIG4sIGZsYWdzKTsKICAgICAgICAgfQogI2VuZGlmCiAKQEAgLTE4OCw0MCArMTg1LDMzIEBACiAgICAgICAgICAgICAgICAgZ2V0cmFuZG9tX3dvcmtzID0gMDsKICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGlmIChlcnJubyA9PSBFQUdBSU4pIHsKLSAgICAgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbQotICAgICAgICAgICAgICAgICAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpYXplZCB5ZXQuIEluIHRoaXMgY2FzZSwgZmFsbCBiYWNrIG9uCi0gICAgICAgICAgICAgICAgICAgcmVhZGluZyBmcm9tIC9kZXYvdXJhbmRvbS4KIAotICAgICAgICAgICAgICAgICAgIE5vdGU6IEluIHRoaXMgY2FzZSB0aGUgZGF0YSByZWFkIHdpbGwgbm90IGJlIHJhbmRvbSBzbwotICAgICAgICAgICAgICAgICAgIHNob3VsZCBub3QgYmUgdXNlZCBmb3IgY3J5cHRvZ3JhcGhpYyBwdXJwb3Nlcy4gUmV0YWluaW5nCi0gICAgICAgICAgICAgICAgICAgdGhlIGV4aXN0aW5nIHNlbWFudGljcyBmb3IgcHJhY3RpY2FsIHB1cnBvc2VzLiAqLwotICAgICAgICAgICAgICAgIGdldHJhbmRvbV93b3JrcyA9IDA7CisgICAgICAgICAgICAvKiBnZXRyYW5kb20oR1JORF9OT05CTE9DSykgZmFpbHMgd2l0aCBFQUdBSU4gaWYgdGhlIHN5c3RlbSB1cmFuZG9tCisgICAgICAgICAgICAgICBpcyBub3QgaW5pdGlhbGlhemVkIHlldC4gRm9yIF9QeVJhbmRvbV9Jbml0KCksIHdlIGlnbm9yZSB0aGVpcgorICAgICAgICAgICAgICAgZXJyb3IgYW5kIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSB3aGljaCBuZXZlciBibG9ja3MsCisgICAgICAgICAgICAgICBldmVuIGlmIHRoZSBzeXN0ZW0gdXJhbmRvbSBpcyBub3QgaW5pdGlhbGl6ZWQgeWV0LiAqLworICAgICAgICAgICAgaWYgKGVycm5vID09IEVBR0FJTiAmJiAhcmFpc2UgJiYgIWJsb2NraW5nKSB7CiAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChlcnJubyA9PSBFSU5UUikgewotICAgICAgICAgICAgICAgIGlmIChQeUVycl9DaGVja1NpZ25hbHMoKSkgewotICAgICAgICAgICAgICAgICAgICBpZiAoIXJhaXNlKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJnZXRyYW5kb20oKSBpbnRlcnJ1cHRlZCBieSBhIHNpZ25hbCIpOworICAgICAgICAgICAgICAgIGlmIChyYWlzZSkgeworICAgICAgICAgICAgICAgICAgICBpZiAoUHlFcnJfQ2hlY2tTaWduYWxzKCkpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAgICAgICAgLyogcmV0cnkgZ2V0cmFuZG9tKCkgKi8KKyAgICAgICAgICAgICAgICAvKiByZXRyeSBnZXRyYW5kb20oKSBpZiBpdCB3YXMgaW50ZXJydXB0ZWQgYnkgYSBzaWduYWwgKi8KICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKHJhaXNlKSB7CiAgICAgICAgICAgICAgICAgUHlFcnJfU2V0RnJvbUVycm5vKFB5RXhjX09TRXJyb3IpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICAgICAgUHlfRmF0YWxFcnJvcigiZ2V0cmFuZG9tKCkgZmFpbGVkIik7Ci0gICAgICAgICAgICB9CiAgICAgICAgICAgICByZXR1cm4gLTE7CiAgICAgICAgIH0KIAotICAgICAgICBidWZmZXIgKz0gbjsKKyAgICAgICAgZGVzdCArPSBuOwogICAgICAgICBzaXplIC09IG47CiAgICAgfQogICAgIHJldHVybiAxOwpAQCAtMjM4LDY0ICsyMjgsMjEgQEAKIC8qIFJlYWQgJ3NpemUnIHJhbmRvbSBieXRlcyBmcm9tIHB5X2dldHJhbmRvbSgpLiBGYWxsIGJhY2sgb24gcmVhZGluZyBmcm9tCiAgICAvZGV2L3VyYW5kb20gaWYgZ2V0cmFuZG9tKCkgaXMgbm90IGF2YWlsYWJsZS4KIAotICAgQ2FsbCBQeV9GYXRhbEVycm9yKCkgb24gZXJyb3IuICovCi1zdGF0aWMgdm9pZAotZGV2X3VyYW5kb21fbm9yYWlzZSh1bnNpZ25lZCBjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSkKLXsKLSAgICBpbnQgZmQ7Ci0gICAgUHlfc3NpemVfdCBuOwotCi0gICAgYXNzZXJ0ICgwIDwgc2l6ZSk7Ci0KLSNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICBpZiAocHlfZ2V0cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgMCkgPT0gMSkgewotICAgICAgICByZXR1cm47Ci0gICAgfQotICAgIC8qIGdldHJhbmRvbSgpIGZhaWxlZCB3aXRoIEVOT1NZUyBvciBFUEVSTSwKLSAgICAgICBmYWxsIGJhY2sgb24gcmVhZGluZyAvZGV2L3VyYW5kb20gKi8KLSNlbmRpZgotCi0gICAgZmQgPSBfUHlfb3Blbl9ub3JhaXNlKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7Ci0gICAgaWYgKGZkIDwgMCkgewotICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gb3BlbiAvZGV2L3VyYW5kb20iKTsKLSAgICB9Ci0KLSAgICB3aGlsZSAoMCA8IHNpemUpCi0gICAgewotICAgICAgICBkbyB7Ci0gICAgICAgICAgICBuID0gcmVhZChmZCwgYnVmZmVyLCAoc2l6ZV90KXNpemUpOwotICAgICAgICB9IHdoaWxlIChuIDwgMCAmJiBlcnJubyA9PSBFSU5UUik7Ci0KLSAgICAgICAgaWYgKG4gPD0gMCkgewotICAgICAgICAgICAgLyogcmVhZCgpIGZhaWxlZCBvciByZXR1cm5lZCAwIGJ5dGVzICovCi0gICAgICAgICAgICBQeV9GYXRhbEVycm9yKCJGYWlsZWQgdG8gcmVhZCBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9Ci0gICAgY2xvc2UoZmQpOwotfQotCi0vKiBSZWFkICdzaXplJyByYW5kb20gYnl0ZXMgZnJvbSBweV9nZXRyYW5kb20oKS4gRmFsbCBiYWNrIG9uIHJlYWRpbmcgZnJvbQotICAgL2Rldi91cmFuZG9tIGlmIGdldHJhbmRvbSgpIGlzIG5vdCBhdmFpbGFibGUuCi0KLSAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIChpZiByYWlzZSBpcyBub24temVybykgYW5kIHJldHVybiAtMQorICAgb24gZXJyb3IuICovCiBzdGF0aWMgaW50Ci1kZXZfdXJhbmRvbV9weXRob24oY2hhciAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCitkZXZfdXJhbmRvbShjaGFyICpidWZmZXIsIFB5X3NzaXplX3Qgc2l6ZSwgaW50IGJsb2NraW5nLCBpbnQgcmFpc2UpCiB7CiAgICAgaW50IGZkOwogICAgIFB5X3NzaXplX3QgbjsKLSAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OwogI2lmZGVmIFBZX0dFVFJBTkRPTQogICAgIGludCByZXM7CiAjZW5kaWYKIAotICAgIGlmIChzaXplIDw9IDApCi0gICAgICAgIHJldHVybiAwOworICAgIGFzc2VydChzaXplID4gMCk7CiAKICNpZmRlZiBQWV9HRVRSQU5ET00KLSAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCAxKTsKKyAgICByZXMgPSBweV9nZXRyYW5kb20oYnVmZmVyLCBzaXplLCBibG9ja2luZywgcmFpc2UpOwogICAgIGlmIChyZXMgPCAwKSB7CiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CkBAIC0zMDYsNjQgKzI1Myw5MCBAQAogICAgICAgIGZhbGwgYmFjayBvbiByZWFkaW5nIC9kZXYvdXJhbmRvbSAqLwogI2VuZGlmCiAKLSAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7Ci0gICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KLSAgICAgICAgaWYgKF9QeV9mc3RhdF9ub3JhaXNlKHVyYW5kb21fY2FjaGUuZmQsICZzdCkKLSAgICAgICAgICAgIHx8IHN0LnN0X2RldiAhPSB1cmFuZG9tX2NhY2hlLnN0X2RldgotICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7Ci0gICAgICAgICAgICAvKiBTb21ldGhpbmcgY2hhbmdlZDogZm9yZ2V0IHRoZSBjYWNoZWQgZmQgKGJ1dCBkb24ndCBjbG9zZSBpdCwKLSAgICAgICAgICAgICAgIHNpbmNlIGl0IHByb2JhYmx5IHBvaW50cyB0byBzb21ldGhpbmcgaW1wb3J0YW50IGZvciBzb21lCi0gICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KLSAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSAtMTsKKworICAgIGlmIChyYWlzZSkgeworICAgICAgICBzdHJ1Y3QgX1B5X3N0YXRfc3RydWN0IHN0OworCisgICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKKyAgICAgICAgICAgIC8qIERvZXMgdGhlIGZkIHBvaW50IHRvIHRoZSBzYW1lIHRoaW5nIGFzIGJlZm9yZT8gKGlzc3VlICMyMTIwNykgKi8KKyAgICAgICAgICAgIGlmIChfUHlfZnN0YXRfbm9yYWlzZSh1cmFuZG9tX2NhY2hlLmZkLCAmc3QpCisgICAgICAgICAgICAgICAgfHwgc3Quc3RfZGV2ICE9IHVyYW5kb21fY2FjaGUuc3RfZGV2CisgICAgICAgICAgICAgICAgfHwgc3Quc3RfaW5vICE9IHVyYW5kb21fY2FjaGUuc3RfaW5vKSB7CisgICAgICAgICAgICAgICAgLyogU29tZXRoaW5nIGNoYW5nZWQ6IGZvcmdldCB0aGUgY2FjaGVkIGZkIChidXQgZG9uJ3QgY2xvc2UgaXQsCisgICAgICAgICAgICAgICAgICAgc2luY2UgaXQgcHJvYmFibHkgcG9pbnRzIHRvIHNvbWV0aGluZyBpbXBvcnRhbnQgZm9yIHNvbWUKKyAgICAgICAgICAgICAgICAgICB0aGlyZC1wYXJ0eSBjb2RlKS4gKi8KKyAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gLTE7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KKyAgICAgICAgaWYgKHVyYW5kb21fY2FjaGUuZmQgPj0gMCkKKyAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBmZCA9IF9QeV9vcGVuKCIvZGV2L3VyYW5kb20iLCBPX1JET05MWSk7CisgICAgICAgICAgICBpZiAoZmQgPCAwKSB7CisgICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAorICAgICAgICAgICAgICAgICAgICBlcnJubyA9PSBFTk9ERVYgfHwgZXJybm8gPT0gRUFDQ0VTKQorICAgICAgICAgICAgICAgICAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfTm90SW1wbGVtZW50ZWRFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOworICAgICAgICAgICAgICAgIC8qIG90aGVyd2lzZSwga2VlcCB0aGUgT1NFcnJvciBleGNlcHRpb24gcmFpc2VkIGJ5IF9QeV9vcGVuKCkgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBpZiAodXJhbmRvbV9jYWNoZS5mZCA+PSAwKSB7CisgICAgICAgICAgICAgICAgLyogdXJhbmRvbV9mZCB3YXMgaW5pdGlhbGl6ZWQgYnkgYW5vdGhlciB0aHJlYWQgd2hpbGUgd2Ugd2VyZQorICAgICAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCisgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIGlmIChfUHlfZnN0YXQoZmQsICZzdCkpIHsKKyAgICAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOworICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLmZkID0gZmQ7CisgICAgICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuc3RfZGV2ID0gc3Quc3RfZGV2OworICAgICAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBkbyB7CisgICAgICAgICAgICBuID0gX1B5X3JlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIGlmIChuID09IC0xKQorICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgIGlmIChuID09IDApIHsKKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCisgICAgICAgICAgICAgICAgICAgICAgICBzaXplKTsKKyAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIGJ1ZmZlciArPSBuOworICAgICAgICAgICAgc2l6ZSAtPSBuOworICAgICAgICB9IHdoaWxlICgwIDwgc2l6ZSk7CiAgICAgfQotICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApCi0gICAgICAgIGZkID0gdXJhbmRvbV9jYWNoZS5mZDsKICAgICBlbHNlIHsKLSAgICAgICAgZmQgPSBfUHlfb3BlbigiL2Rldi91cmFuZG9tIiwgT19SRE9OTFkpOworICAgICAgICBmZCA9IF9QeV9vcGVuX25vcmFpc2UoIi9kZXYvdXJhbmRvbSIsIE9fUkRPTkxZKTsKICAgICAgICAgaWYgKGZkIDwgMCkgewotICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTlhJTyB8fAotICAgICAgICAgICAgICAgIGVycm5vID09IEVOT0RFViB8fCBlcnJubyA9PSBFQUNDRVMpCi0gICAgICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX05vdEltcGxlbWVudGVkRXJyb3IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIvZGV2L3VyYW5kb20gKG9yIGVxdWl2YWxlbnQpIG5vdCBmb3VuZCIpOwotICAgICAgICAgICAgLyogb3RoZXJ3aXNlLCBrZWVwIHRoZSBPU0Vycm9yIGV4Y2VwdGlvbiByYWlzZWQgYnkgX1B5X29wZW4oKSAqLwogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICB9Ci0gICAgICAgIGlmICh1cmFuZG9tX2NhY2hlLmZkID49IDApIHsKLSAgICAgICAgICAgIC8qIHVyYW5kb21fZmQgd2FzIGluaXRpYWxpemVkIGJ5IGFub3RoZXIgdGhyZWFkIHdoaWxlIHdlIHdlcmUKLSAgICAgICAgICAgICAgIG5vdCBob2xkaW5nIHRoZSBHSUwsIGtlZXAgaXQuICovCi0gICAgICAgICAgICBjbG9zZShmZCk7Ci0gICAgICAgICAgICBmZCA9IHVyYW5kb21fY2FjaGUuZmQ7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBpZiAoX1B5X2ZzdGF0KGZkLCAmc3QpKSB7CisKKyAgICAgICAgd2hpbGUgKDAgPCBzaXplKQorICAgICAgICB7CisgICAgICAgICAgICBkbyB7CisgICAgICAgICAgICAgICAgbiA9IHJlYWQoZmQsIGJ1ZmZlciwgKHNpemVfdClzaXplKTsKKyAgICAgICAgICAgIH0gd2hpbGUgKG4gPCAwICYmIGVycm5vID09IEVJTlRSKTsKKworICAgICAgICAgICAgaWYgKG4gPD0gMCkgeworICAgICAgICAgICAgICAgIC8qIHN0b3Agb24gZXJyb3Igb3IgaWYgcmVhZChzaXplKSByZXR1cm5lZCAwICovCiAgICAgICAgICAgICAgICAgY2xvc2UoZmQpOwogICAgICAgICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGVsc2UgewotICAgICAgICAgICAgICAgIHVyYW5kb21fY2FjaGUuZmQgPSBmZDsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2RldiA9IHN0LnN0X2RldjsKLSAgICAgICAgICAgICAgICB1cmFuZG9tX2NhY2hlLnN0X2lubyA9IHN0LnN0X2lubzsKLSAgICAgICAgICAgIH0KKworICAgICAgICAgICAgYnVmZmVyICs9IG47CisgICAgICAgICAgICBzaXplIC09IG47CiAgICAgICAgIH0KKyAgICAgICAgY2xvc2UoZmQpOwogICAgIH0KLQotICAgIGRvIHsKLSAgICAgICAgbiA9IF9QeV9yZWFkKGZkLCBidWZmZXIsIChzaXplX3Qpc2l6ZSk7Ci0gICAgICAgIGlmIChuID09IC0xKSB7Ci0gICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKG4gPT0gMCkgewotICAgICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1J1bnRpbWVFcnJvciwKLSAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZWFkICV6aSBieXRlcyBmcm9tIC9kZXYvdXJhbmRvbSIsCi0gICAgICAgICAgICAgICAgICAgIHNpemUpOwotICAgICAgICAgICAgcmV0dXJuIC0xOwotICAgICAgICB9Ci0KLSAgICAgICAgYnVmZmVyICs9IG47Ci0gICAgICAgIHNpemUgLT0gbjsKLSAgICB9IHdoaWxlICgwIDwgc2l6ZSk7Ci0KICAgICByZXR1cm4gMDsKIH0KIApAQCAtMzk5LDI5ICszNzIsNjIgQEAKICAgICB9CiB9CiAKKy8qIElmIHJhaXNlIGlzIHplcm86CisgICAtIERvbid0IHJhaXNlIGV4Y2VwdGlvbnMgb24gZXJyb3IKKyAgIC0gRG9uJ3QgY2FsbCBQeUVycl9DaGVja1NpZ25hbHMoKSBvbiBFSU5UUiAocmV0cnkgZGlyZWN0bHkgdGhlIGludGVycnVwdGVkCisgICAgIHN5c2NhbGwpCisgICAtIERvbid0IHJlbGVhc2UgdGhlIEdJTCB0byBjYWxsIHN5c2NhbGxzLiAqLworc3RhdGljIGludAorcHl1cmFuZG9tKHZvaWQgKmJ1ZmZlciwgUHlfc3NpemVfdCBzaXplLCBpbnQgYmxvY2tpbmcsIGludCByYWlzZSkKK3sKKyAgICBpZiAoc2l6ZSA8IDApIHsKKyAgICAgICAgaWYgKHJhaXNlKSB7CisgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfVmFsdWVFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAibmVnYXRpdmUgYXJndW1lbnQgbm90IGFsbG93ZWQiKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gLTE7CisgICAgfQorCisgICAgaWYgKHNpemUgPT0gMCkgeworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyNpZmRlZiBNU19XSU5ET1dTCisgICAgcmV0dXJuIHdpbjMyX3VyYW5kb20oKHVuc2lnbmVkIGNoYXIgKilidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKKyAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIHJhaXNlKTsKKyNlbHNlCisgICAgcmV0dXJuIGRldl91cmFuZG9tKGJ1ZmZlciwgc2l6ZSwgYmxvY2tpbmcsIHJhaXNlKTsKKyNlbmRpZgorfQorCiAvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQogICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgc3VpdGFibGUgZm9yIG1vc3QgY3J5cHRvZ3JhcGhpYyBwdXJwb3NlcwogICAgZXhjZXB0IGxvbmcgbGl2aW5nIHByaXZhdGUga2V5cyBmb3IgYXN5bW1ldHJpYyBlbmNyeXB0aW9uLgogCi0gICBSZXR1cm4gMCBvbiBzdWNjZXNzLCByYWlzZSBhbiBleGNlcHRpb24gYW5kIHJldHVybiAtMSBvbiBlcnJvci4gKi8KKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyLCB0aGUgZ2V0cmFuZG9tKCkgc3lzY2FsbCBpcyB1c2VkIGluIGJsb2NraW5nIG1vZGU6CisgICBibG9jayB1bnRpbCB0aGUgc3lzdGVtIHVyYW5kb20gZW50cm9weSBwb29sIGlzIGluaXRpYWxpemVkICgxMjggYml0cyBhcmUKKyAgIGNvbGxlY3RlZCBieSB0aGUga2VybmVsKS4KKworICAgUmV0dXJuIDAgb24gc3VjY2Vzcy4gUmFpc2UgYW4gZXhjZXB0aW9uIGFuZCByZXR1cm4gLTEgb24gZXJyb3IuICovCiBpbnQKIF9QeU9TX1VSYW5kb20odm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCiB7Ci0gICAgaWYgKHNpemUgPCAwKSB7Ci0gICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19WYWx1ZUVycm9yLAotICAgICAgICAgICAgICAgICAgICAgIm5lZ2F0aXZlIGFyZ3VtZW50IG5vdCBhbGxvd2VkIik7Ci0gICAgICAgIHJldHVybiAtMTsKLSAgICB9Ci0gICAgaWYgKHNpemUgPT0gMCkKLSAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDEsIDEpOworfQogCi0jaWZkZWYgTVNfV0lORE9XUwotICAgIHJldHVybiB3aW4zMl91cmFuZG9tKCh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCBzaXplLCAxKTsKLSNlbGlmIGRlZmluZWQoUFlfR0VURU5UUk9QWSkKLSAgICByZXR1cm4gcHlfZ2V0ZW50cm9weShidWZmZXIsIHNpemUsIDApOwotI2Vsc2UKLSAgICByZXR1cm4gZGV2X3VyYW5kb21fcHl0aG9uKChjaGFyKilidWZmZXIsIHNpemUpOwotI2VuZGlmCisvKiBGaWxsIGJ1ZmZlciB3aXRoIHNpemUgcHNldWRvLXJhbmRvbSBieXRlcyBmcm9tIHRoZSBvcGVyYXRpbmcgc3lzdGVtIHJhbmRvbQorICAgbnVtYmVyIGdlbmVyYXRvciAoUk5HKS4gSXQgaXMgbm90IHN1aXRhYmxlIGZvciBjcnlwdG9ncmFwaGljIHB1cnBvc2UuCisKKyAgIE9uIExpbnV4IDMuMTcgYW5kIG5ld2VyICh3aGVuIGdldHJhbmRvbSgpIHN5c2NhbGwgaXMgdXNlZCksIGlmIHRoZSBzeXN0ZW0KKyAgIHVyYW5kb20gaXMgbm90IGluaXRpYWxpemVkIHlldCwgdGhlIGZ1bmN0aW9uIHJldHVybnMgIndlYWsiIGVudHJvcHkgcmVhZAorICAgZnJvbSAvZGV2L3VyYW5kb20uCisKKyAgIFJldHVybiAwIG9uIHN1Y2Nlc3MuIFJhaXNlIGFuIGV4Y2VwdGlvbiBhbmQgcmV0dXJuIC0xIG9uIGVycm9yLiAqLworaW50CitfUHlPU19VUmFuZG9tTm9uYmxvY2sodm9pZCAqYnVmZmVyLCBQeV9zc2l6ZV90IHNpemUpCit7CisgICAgcmV0dXJuIHB5dXJhbmRvbShidWZmZXIsIHNpemUsIDAsIDEpOwogfQogCiB2b2lkCkBAIC00MzAsNyArNDM2LDcgQEAKICAgICBjaGFyICplbnY7CiAgICAgdW5zaWduZWQgY2hhciAqc2VjcmV0ID0gKHVuc2lnbmVkIGNoYXIgKikmX1B5X0hhc2hTZWNyZXQudWM7CiAgICAgUHlfc3NpemVfdCBzZWNyZXRfc2l6ZSA9IHNpemVvZihfUHlfSGFzaFNlY3JldF90KTsKLSAgICBhc3NlcnQoc2VjcmV0X3NpemUgPT0gc2l6ZW9mKF9QeV9IYXNoU2VjcmV0LnVjKSk7CisgICAgUHlfQlVJTERfQVNTRVJUKHNpemVvZihfUHlfSGFzaFNlY3JldF90KSA9PSBzaXplb2YoX1B5X0hhc2hTZWNyZXQudWMpKTsKIAogICAgIGlmIChfUHlfSGFzaFNlY3JldF9Jbml0aWFsaXplZCkKICAgICAgICAgcmV0dXJuOwpAQCAtNDYyLDEzICs0NjgsMTcgQEAKICAgICAgICAgfQogICAgIH0KICAgICBlbHNlIHsKLSNpZmRlZiBNU19XSU5ET1dTCi0gICAgICAgICh2b2lkKXdpbjMyX3VyYW5kb20oc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMCk7Ci0jZWxpZiBkZWZpbmVkKFBZX0dFVEVOVFJPUFkpCi0gICAgICAgICh2b2lkKXB5X2dldGVudHJvcHkoc2VjcmV0LCBzZWNyZXRfc2l6ZSwgMSk7Ci0jZWxzZQotICAgICAgICBkZXZfdXJhbmRvbV9ub3JhaXNlKHNlY3JldCwgc2VjcmV0X3NpemUpOwotI2VuZGlmCisgICAgICAgIGludCByZXM7CisKKyAgICAgICAgLyogX1B5UmFuZG9tX0luaXQoKSBpcyBjYWxsZWQgdmVyeSBlYXJseSBpbiB0aGUgUHl0aG9uIGluaXRpYWxpemF0aW9uCisgICAgICAgICAgIGFuZCBzbyBleGNlcHRpb25zIGNhbm5vdCBiZSB1c2VkICh1c2UgcmFpc2U9MCkuCisKKyAgICAgICAgICAgX1B5UmFuZG9tX0luaXQoKSBtdXN0IG5vdCBibG9jayBQeXRob24gaW5pdGlhbGl6YXRpb246IGNhbGwKKyAgICAgICAgICAgcHl1cmFuZG9tKCkgaXMgbm9uLWJsb2NraW5nIG1vZGUgKGJsb2NraW5nPTApOiBzZWUgdGhlIFBFUCA1MjQuICovCisgICAgICAgIHJlcyA9IHB5dXJhbmRvbShzZWNyZXQsIHNlY3JldF9zaXplLCAwLCAwKTsKKyAgICAgICAgaWYgKHJlcyA8IDApIHsKKyAgICAgICAgICAgIFB5X0ZhdGFsRXJyb3IoImZhaWxlZCB0byBnZXQgcmFuZG9tIG51bWJlcnMgdG8gaW5pdGlhbGl6ZSBQeXRob24iKTsKKyAgICAgICAgfQogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvUHl0aG9uL3N0cnVjdG1lbWJlci5jIGIvUHl0aG9uL3N0cnVjdG1lbWJlci5jCmluZGV4IGFmMDI5NmQuLjg2ZDRjNjYgMTAwNjQ0Ci0tLSBhL1B5dGhvbi9zdHJ1Y3RtZW1iZXIuYworKysgYi9QeXRob24vc3RydWN0bWVtYmVyLmMKQEAgLTc0LDE0ICs3NCwxMiBAQAogICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX0F0dHJpYnV0ZUVycm9yLCBsLT5uYW1lKTsKICAgICAgICAgUHlfWElOQ1JFRih2KTsKICAgICAgICAgYnJlYWs7Ci0jaWZkZWYgSEFWRV9MT05HX0xPTkcKICAgICBjYXNlIFRfTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCooUFlfTE9OR19MT05HICopYWRkcik7CisgICAgICAgIHYgPSBQeUxvbmdfRnJvbUxvbmdMb25nKCoobG9uZyBsb25nICopYWRkcik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVF9VTE9OR0xPTkc6Ci0gICAgICAgIHYgPSBQeUxvbmdfRnJvbVVuc2lnbmVkTG9uZ0xvbmcoKih1bnNpZ25lZCBQWV9MT05HX0xPTkcgKilhZGRyKTsKKyAgICAgICAgdiA9IFB5TG9uZ19Gcm9tVW5zaWduZWRMb25nTG9uZygqKHVuc2lnbmVkIGxvbmcgbG9uZyAqKWFkZHIpOwogICAgICAgICBicmVhazsKLSNlbmRpZiAvKiBIQVZFX0xPTkdfTE9ORyAqLwogICAgIGNhc2UgVF9OT05FOgogICAgICAgICB2ID0gUHlfTm9uZTsKICAgICAgICAgUHlfSU5DUkVGKHYpOwpAQCAtMjY2LDI3ICsyNjQsMjUgQEAKICAgICBjYXNlIFRfU1RSSU5HX0lOUExBQ0U6CiAgICAgICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19UeXBlRXJyb3IsICJyZWFkb25seSBhdHRyaWJ1dGUiKTsKICAgICAgICAgcmV0dXJuIC0xOwotI2lmZGVmIEhBVkVfTE9OR19MT05HCiAgICAgY2FzZSBUX0xPTkdMT05HOnsKLSAgICAgICAgUFlfTE9OR19MT05HIHZhbHVlOwotICAgICAgICAqKFBZX0xPTkdfTE9ORyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZ0xvbmcodik7CisgICAgICAgIGxvbmcgbG9uZyB2YWx1ZTsKKyAgICAgICAgKihsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc0xvbmdMb25nKHYpOwogICAgICAgICBpZiAoKHZhbHVlID09IC0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIGNhc2UgVF9VTE9OR0xPTkc6ewotICAgICAgICB1bnNpZ25lZCBQWV9MT05HX0xPTkcgdmFsdWU7CisgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyB2YWx1ZTsKICAgICAgICAgLyogPz8/IFB5TG9uZ19Bc0xvbmdMb25nIGFjY2VwdHMgYW4gaW50LCBidXQgUHlMb25nX0FzVW5zaWduZWRMb25nTG9uZwogICAgICAgICAgICAgZG9lc24ndCA/Pz8gKi8KICAgICAgICAgaWYgKFB5TG9uZ19DaGVjayh2KSkKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNVbnNpZ25lZExvbmdMb25nKHYpOworICAgICAgICAgICAgKih1bnNpZ25lZCBsb25nIGxvbmcqKWFkZHIgPSB2YWx1ZSA9IFB5TG9uZ19Bc1Vuc2lnbmVkTG9uZ0xvbmcodik7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICoodW5zaWduZWQgUFlfTE9OR19MT05HKilhZGRyID0gdmFsdWUgPSBQeUxvbmdfQXNMb25nKHYpOwotICAgICAgICBpZiAoKHZhbHVlID09ICh1bnNpZ25lZCBQWV9MT05HX0xPTkcpLTEpICYmIFB5RXJyX09jY3VycmVkKCkpCisgICAgICAgICAgICAqKHVuc2lnbmVkIGxvbmcgbG9uZyopYWRkciA9IHZhbHVlID0gUHlMb25nX0FzTG9uZyh2KTsKKyAgICAgICAgaWYgKCh2YWx1ZSA9PSAodW5zaWduZWQgbG9uZyBsb25nKS0xKSAmJiBQeUVycl9PY2N1cnJlZCgpKQogICAgICAgICAgICAgcmV0dXJuIC0xOwogICAgICAgICBicmVhazsKICAgICAgICAgfQotI2VuZGlmIC8qIEhBVkVfTE9OR19MT05HICovCiAgICAgZGVmYXVsdDoKICAgICAgICAgUHlFcnJfRm9ybWF0KFB5RXhjX1N5c3RlbUVycm9yLAogICAgICAgICAgICAgICAgICAgICAgImJhZCBtZW1iZXJkZXNjciB0eXBlIGZvciAlcyIsIGwtPm5hbWUpOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3N5bXRhYmxlLmMgYi9QeXRob24vc3ltdGFibGUuYwppbmRleCAxNTkxYTIwLi5iZjMwZWNjIDEwMDY0NAotLS0gYS9QeXRob24vc3ltdGFibGUuYworKysgYi9QeXRob24vc3ltdGFibGUuYwpAQCAtNiwxNiArNiwyMiBAQAogCiAvKiBlcnJvciBzdHJpbmdzIHVzZWQgZm9yIHdhcm5pbmdzICovCiAjZGVmaW5lIEdMT0JBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgYXNzaWduZWQgdG8gYmVmb3JlIGdsb2JhbCBkZWNsYXJhdGlvbiIKIAogI2RlZmluZSBOT05MT0NBTF9BRlRFUl9BU1NJR04gXAotIm5hbWUgJyUuNDAwcycgaXMgYXNzaWduZWQgdG8gYmVmb3JlIG5vbmxvY2FsIGRlY2xhcmF0aW9uIgorIm5hbWUgJyVVJyBpcyBhc3NpZ25lZCB0byBiZWZvcmUgbm9ubG9jYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgR0xPQkFMX0FGVEVSX1VTRSBcCi0ibmFtZSAnJS40MDBzJyBpcyB1c2VkIHByaW9yIHRvIGdsb2JhbCBkZWNsYXJhdGlvbiIKKyJuYW1lICclVScgaXMgdXNlZCBwcmlvciB0byBnbG9iYWwgZGVjbGFyYXRpb24iCiAKICNkZWZpbmUgTk9OTE9DQUxfQUZURVJfVVNFIFwKLSJuYW1lICclLjQwMHMnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisibmFtZSAnJVUnIGlzIHVzZWQgcHJpb3IgdG8gbm9ubG9jYWwgZGVjbGFyYXRpb24iCisKKyNkZWZpbmUgR0xPQkFMX0FOTk9UIFwKKyJhbm5vdGF0ZWQgbmFtZSAnJVUnIGNhbid0IGJlIGdsb2JhbCIKKworI2RlZmluZSBOT05MT0NBTF9BTk5PVCBcCisiYW5ub3RhdGVkIG5hbWUgJyVVJyBjYW4ndCBiZSBub25sb2NhbCIKIAogI2RlZmluZSBJTVBPUlRfU1RBUl9XQVJOSU5HICJpbXBvcnQgKiBvbmx5IGFsbG93ZWQgYXQgbW9kdWxlIGxldmVsIgogCkBAIC02Myw2ICs2OSw3IEBACiAgICAgICAgIHN0ZS0+c3RlX25lc3RlZCA9IDE7CiAgICAgc3RlLT5zdGVfY2hpbGRfZnJlZSA9IDA7CiAgICAgc3RlLT5zdGVfZ2VuZXJhdG9yID0gMDsKKyAgICBzdGUtPnN0ZV9jb3JvdXRpbmUgPSAwOwogICAgIHN0ZS0+c3RlX3JldHVybnNfdmFsdWUgPSAwOwogICAgIHN0ZS0+c3RlX25lZWRzX2NsYXNzX2Nsb3N1cmUgPSAwOwogCkBAIC0xNjAsNyArMTY3LDYgQEAKIH07CiAKIHN0YXRpYyBpbnQgc3ltdGFibGVfYW5hbHl6ZShzdHJ1Y3Qgc3ltdGFibGUgKnN0KTsKLXN0YXRpYyBpbnQgc3ltdGFibGVfd2FybihzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBjaGFyICptc2csIGludCBsaW5lbm8pOwogc3RhdGljIGludCBzeW10YWJsZV9lbnRlcl9ibG9jayhzdHJ1Y3Qgc3ltdGFibGUgKnN0LCBpZGVudGlmaWVyIG5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF9QeV9ibG9ja190eSBibG9jaywgdm9pZCAqYXN0LCBpbnQgbGluZW5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgY29sX29mZnNldCk7CkBAIC0zNzgsNyArMzg0LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5TG9uZ19Bc0xvbmcoUHlUdXBsZV9HRVRfSVRFTShkYXRhLCAyKSkpOwogCiAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgfSAgIAorICAgICAgICB9CiAgICAgfQogICAgIFB5RXJyX1NldFN0cmluZyhQeUV4Y19SdW50aW1lRXJyb3IsCiAgICAgICAgICAgICAgICAgICAgICJCVUc6IGludGVybmFsIGRpcmVjdGl2ZSBib29ra2VlcGluZyBicm9rZW4iKTsKQEAgLTY1Miw3ICs2NTgsNyBAQAogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIH0KICAgICAgICAgLyogSGFuZGxlIGdsb2JhbCBzeW1ib2wgKi8KLSAgICAgICAgaWYgKCFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKKyAgICAgICAgaWYgKGJvdW5kICYmICFQeVNldF9Db250YWlucyhib3VuZCwgbmFtZSkpIHsKICAgICAgICAgICAgIFB5X0RFQ1JFRihuYW1lKTsKICAgICAgICAgICAgIGNvbnRpbnVlOyAgICAgICAvKiBpdCdzIGEgZ2xvYmFsICovCiAgICAgICAgIH0KQEAgLTkwNiwyNyArOTEyLDYgQEAKICAgICByZXR1cm4gcjsKIH0KIAotCi1zdGF0aWMgaW50Ci1zeW10YWJsZV93YXJuKHN0cnVjdCBzeW10YWJsZSAqc3QsIGNoYXIgKm1zZywgaW50IGxpbmVubykKLXsKLSAgICBQeU9iamVjdCAqbWVzc2FnZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKG1zZyk7Ci0gICAgaWYgKG1lc3NhZ2UgPT0gTlVMTCkKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgaWYgKFB5RXJyX1dhcm5FeHBsaWNpdE9iamVjdChQeUV4Y19TeW50YXhXYXJuaW5nLCBtZXNzYWdlLCBzdC0+c3RfZmlsZW5hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lbm8sIE5VTEwsIE5VTEwpIDwgMCkgICAgIHsKLSAgICAgICAgUHlfREVDUkVGKG1lc3NhZ2UpOwotICAgICAgICBpZiAoUHlFcnJfRXhjZXB0aW9uTWF0Y2hlcyhQeUV4Y19TeW50YXhXYXJuaW5nKSkgewotICAgICAgICAgICAgUHlFcnJfU2V0U3RyaW5nKFB5RXhjX1N5bnRheEVycm9yLCBtc2cpOwotICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLCBzdC0+c3RfY3VyLT5zdGVfbGluZW5vLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2NvbF9vZmZzZXQpOwotICAgICAgICB9Ci0gICAgICAgIHJldHVybiAwOwotICAgIH0KLSAgICBQeV9ERUNSRUYobWVzc2FnZSk7Ci0gICAgcmV0dXJuIDE7Ci19Ci0KIC8qIHN5bXRhYmxlX2VudGVyX2Jsb2NrKCkgZ2V0cyBhIHJlZmVyZW5jZSB2aWEgc3RlX25ldy4KICAgIFRoaXMgcmVmZXJlbmNlIGlzIHJlbGVhc2VkIHdoZW4gdGhlIGJsb2NrIGlzIGV4aXRlZCwgdmlhIHRoZSBERUNSRUYKICAgIGluIHN5bXRhYmxlX2V4aXRfYmxvY2soKS4KQEAgLTEyMDEsNiArMTE4Niw0MyBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIHMtPnYuQXNzaWduLnRhcmdldHMpOwogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bc3NpZ24udmFsdWUpOwogICAgICAgICBicmVhazsKKyAgICBjYXNlIEFubkFzc2lnbl9raW5kOgorICAgICAgICBpZiAocy0+di5Bbm5Bc3NpZ24udGFyZ2V0LT5raW5kID09IE5hbWVfa2luZCkgeworICAgICAgICAgICAgZXhwcl90eSBlX25hbWUgPSBzLT52LkFubkFzc2lnbi50YXJnZXQ7CisgICAgICAgICAgICBsb25nIGN1ciA9IHN5bXRhYmxlX2xvb2t1cChzdCwgZV9uYW1lLT52Lk5hbWUuaWQpOworICAgICAgICAgICAgaWYgKGN1ciA8IDApIHsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmICgoY3VyICYgKERFRl9HTE9CQUwgfCBERUZfTk9OTE9DQUwpKQorICAgICAgICAgICAgICAgICYmIHMtPnYuQW5uQXNzaWduLnNpbXBsZSkgeworICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3VyICYgREVGX0dMT0JBTCA/IEdMT0JBTF9BTk5PVCA6IE5PTkxPQ0FMX0FOTk9ULAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlX25hbWUtPnYuTmFtZS5pZCk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi5zaW1wbGUgJiYKKyAgICAgICAgICAgICAgICAhc3ltdGFibGVfYWRkX2RlZihzdCwgZV9uYW1lLT52Lk5hbWUuaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgREVGX0FOTk9UIHwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHMtPnYuQW5uQXNzaWduLnZhbHVlCisgICAgICAgICAgICAgICAgICAgICYmICFzeW10YWJsZV9hZGRfZGVmKHN0LCBlX25hbWUtPnYuTmFtZS5pZCwgREVGX0xPQ0FMKSkgeworICAgICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24udGFyZ2V0KTsKKyAgICAgICAgfQorICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5Bbm5Bc3NpZ24uYW5ub3RhdGlvbik7CisgICAgICAgIGlmIChzLT52LkFubkFzc2lnbi52YWx1ZSkgeworICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQW5uQXNzaWduLnZhbHVlKTsKKyAgICAgICAgfQorICAgICAgICBicmVhazsKICAgICBjYXNlIEF1Z0Fzc2lnbl9raW5kOgogICAgICAgICBWSVNJVChzdCwgZXhwciwgcy0+di5BdWdBc3NpZ24udGFyZ2V0KTsKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIHMtPnYuQXVnQXNzaWduLnZhbHVlKTsKQEAgLTEyNTgsMjEgKzEyODAsMjEgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0xPQkFMX0FGVEVSX0FTU0lHTiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjX25hbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgUHlPU19zbnByaW50ZihidWYsIHNpemVvZihidWYpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMT0JBTF9BRlRFUl9VU0UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY19uYW1lKTsKLSAgICAgICAgICAgICAgICBpZiAoIXN5bXRhYmxlX3dhcm4oc3QsIGJ1Ziwgcy0+bGluZW5vKSkKLSAgICAgICAgICAgICAgICAgICAgVklTSVRfUVVJVChzdCwgMCk7CisgICAgICAgICAgICBpZiAoY3VyICYgKERFRl9MT0NBTCB8IFVTRSB8IERFRl9BTk5PVCkpIHsKKyAgICAgICAgICAgICAgICBjaGFyKiBtc2c7CisgICAgICAgICAgICAgICAgaWYgKGN1ciAmIFVTRSkgeworICAgICAgICAgICAgICAgICAgICBtc2cgPSBHTE9CQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BTk5PVDsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeyAgLyogREVGX0xPQ0FMICovCisgICAgICAgICAgICAgICAgICAgIG1zZyA9IEdMT0JBTF9BRlRFUl9BU1NJR047CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19TeW50YXhFcnJvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnLCBuYW1lKTsKKyAgICAgICAgICAgICAgICBQeUVycl9TeW50YXhMb2NhdGlvbk9iamVjdChzdC0+c3RfZmlsZW5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+bGluZW5vLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmNvbF9vZmZzZXQpOworICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwogICAgICAgICAgICAgfQogICAgICAgICAgICAgaWYgKCFzeW10YWJsZV9hZGRfZGVmKHN0LCBuYW1lLCBERUZfR0xPQkFMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEyODksMjEgKzEzMTEsMjAgQEAKICAgICAgICAgICAgIGxvbmcgY3VyID0gc3ltdGFibGVfbG9va3VwKHN0LCBuYW1lKTsKICAgICAgICAgICAgIGlmIChjdXIgPCAwKQogICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOwotICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UpKSB7Ci0gICAgICAgICAgICAgICAgY2hhciBidWZbMjU2XTsKLSAgICAgICAgICAgICAgICBjaGFyICpjX25hbWUgPSBfUHlVbmljb2RlX0FzU3RyaW5nKG5hbWUpOwotICAgICAgICAgICAgICAgIGlmICghY19uYW1lKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgICAgICAgICAgICBpZiAoY3VyICYgREVGX0xPQ0FMKQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfQVNTSUdOLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICBQeU9TX3NucHJpbnRmKGJ1Ziwgc2l6ZW9mKGJ1ZiksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTk9OTE9DQUxfQUZURVJfVVNFLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNfbmFtZSk7Ci0gICAgICAgICAgICAgICAgaWYgKCFzeW10YWJsZV93YXJuKHN0LCBidWYsIHMtPmxpbmVubykpCi0gICAgICAgICAgICAgICAgICAgIFZJU0lUX1FVSVQoc3QsIDApOworICAgICAgICAgICAgaWYgKGN1ciAmIChERUZfTE9DQUwgfCBVU0UgfCBERUZfQU5OT1QpKSB7CisgICAgICAgICAgICAgICAgY2hhciogbXNnOworICAgICAgICAgICAgICAgIGlmIChjdXIgJiBVU0UpIHsKKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfVVNFOworICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoY3VyICYgREVGX0FOTk9UKSB7CisgICAgICAgICAgICAgICAgICAgIG1zZyA9IE5PTkxPQ0FMX0FOTk9UOworICAgICAgICAgICAgICAgIH0gZWxzZSB7ICAvKiBERUZfTE9DQUwgKi8KKyAgICAgICAgICAgICAgICAgICAgbXNnID0gTk9OTE9DQUxfQUZURVJfQVNTSUdOOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBQeUVycl9Gb3JtYXQoUHlFeGNfU3ludGF4RXJyb3IsIG1zZywgbmFtZSk7CisgICAgICAgICAgICAgICAgUHlFcnJfU3ludGF4TG9jYXRpb25PYmplY3Qoc3QtPnN0X2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHMtPmxpbmVubywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzLT5jb2xfb2Zmc2V0KTsKKyAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIGlmICghc3ltdGFibGVfYWRkX2RlZihzdCwgbmFtZSwgREVGX05PTkxPQ0FMKSkKICAgICAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKQEAgLTEzNDEsNiArMTM2Miw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnVuY3Rpb25CbG9jaywgKHZvaWQgKilzLCBzLT5saW5lbm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcy0+Y29sX29mZnNldCkpCiAgICAgICAgICAgICBWSVNJVF9RVUlUKHN0LCAwKTsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CiAgICAgICAgIFZJU0lUKHN0LCBhcmd1bWVudHMsIHMtPnYuQXN5bmNGdW5jdGlvbkRlZi5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRKHN0LCBzdG10LCBzLT52LkFzeW5jRnVuY3Rpb25EZWYuYm9keSk7CiAgICAgICAgIGlmICghc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgcykpCkBAIC0xNDM2LDcgKzE0NTgsNyBAQAogICAgICAgICBicmVhazsKICAgICBjYXNlIEF3YWl0X2tpbmQ6CiAgICAgICAgIFZJU0lUKHN0LCBleHByLCBlLT52LkF3YWl0LnZhbHVlKTsKLSAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IDE7CisgICAgICAgIHN0LT5zdF9jdXItPnN0ZV9jb3JvdXRpbmUgPSAxOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbXBhcmVfa2luZDoKICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuQ29tcGFyZS5sZWZ0KTsKQEAgLTE0NDcsNiArMTQ2OSwxNSBAQAogICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuQ2FsbC5hcmdzKTsKICAgICAgICAgVklTSVRfU0VRX1dJVEhfTlVMTChzdCwga2V5d29yZCwgZS0+di5DYWxsLmtleXdvcmRzKTsKICAgICAgICAgYnJlYWs7CisgICAgY2FzZSBGb3JtYXR0ZWRWYWx1ZV9raW5kOgorICAgICAgICBWSVNJVChzdCwgZXhwciwgZS0+di5Gb3JtYXR0ZWRWYWx1ZS52YWx1ZSk7CisgICAgICAgIGlmIChlLT52LkZvcm1hdHRlZFZhbHVlLmZvcm1hdF9zcGVjKQorICAgICAgICAgICAgVklTSVQoc3QsIGV4cHIsIGUtPnYuRm9ybWF0dGVkVmFsdWUuZm9ybWF0X3NwZWMpOworICAgICAgICBicmVhazsKKyAgICBjYXNlIEpvaW5lZFN0cl9raW5kOgorICAgICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGUtPnYuSm9pbmVkU3RyLnZhbHVlcyk7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgQ29uc3RhbnRfa2luZDoKICAgICBjYXNlIE51bV9raW5kOgogICAgIGNhc2UgU3RyX2tpbmQ6CiAgICAgY2FzZSBCeXRlc19raW5kOgpAQCAtMTY0Nyw2ICsxNjc4LDkgQEAKICAgICBWSVNJVChzdCwgZXhwciwgbGMtPnRhcmdldCk7CiAgICAgVklTSVQoc3QsIGV4cHIsIGxjLT5pdGVyKTsKICAgICBWSVNJVF9TRVEoc3QsIGV4cHIsIGxjLT5pZnMpOworICAgIGlmIChsYy0+aXNfYXN5bmMpIHsKKyAgICAgICAgc3QtPnN0X2N1ci0+c3RlX2Nvcm91dGluZSA9IDE7CisgICAgfQogICAgIHJldHVybiAxOwogfQogCkBAIC0xNjk5LDYgKzE3MzMsOSBAQAogICAgICAgICByZXR1cm4gMDsKICAgICB9CiAgICAgc3QtPnN0X2N1ci0+c3RlX2dlbmVyYXRvciA9IGlzX2dlbmVyYXRvcjsKKyAgICBpZiAob3V0ZXJtb3N0LT5pc19hc3luYykgeworICAgICAgICBzdC0+c3RfY3VyLT5zdGVfY29yb3V0aW5lID0gMTsKKyAgICB9CiAgICAgLyogT3V0ZXJtb3N0IGl0ZXIgaXMgcmVjZWl2ZWQgYXMgYW4gYXJndW1lbnQgKi8KICAgICBpZiAoIXN5bXRhYmxlX2ltcGxpY2l0X2FyZyhzdCwgMCkpIHsKICAgICAgICAgc3ltdGFibGVfZXhpdF9ibG9jayhzdCwgKHZvaWQgKillKTsKZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwppbmRleCBmNjg4MzQ5Li41ZGQwZDEwIDEwMDY0NAotLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKKysrIGIvUHl0aG9uL3N5c21vZHVsZS5jCkBAIC0yMCw2ICsyMCw3IEBACiAjaW5jbHVkZSAicHl0aHJlYWQuaCIKIAogI2luY2x1ZGUgIm9zZGVmcy5oIgorI2luY2x1ZGUgPGxvY2FsZS5oPgogCiAjaWZkZWYgTVNfV0lORE9XUwogI2RlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCkBAIC0zMyw3ICszNCw2IEBACiAjZW5kaWYKIAogI2lmZGVmIEhBVkVfTEFOR0lORk9fSAotI2luY2x1ZGUgPGxvY2FsZS5oPgogI2luY2x1ZGUgPGxhbmdpbmZvLmg+CiAjZW5kaWYKIApAQCAtMzExLDYgKzMxMSwyMyBAQAogKTsKIAogc3RhdGljIFB5T2JqZWN0ICoKK3N5c19nZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKFB5T2JqZWN0ICpzZWxmKQoreworICAgIGlmIChQeV9GaWxlU3lzdGVtRGVmYXVsdEVuY29kZUVycm9ycykKKyAgICAgICAgcmV0dXJuIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RlRXJyb3JzKTsKKyAgICBQeUVycl9TZXRTdHJpbmcoUHlFeGNfUnVudGltZUVycm9yLAorICAgICAgICAiZmlsZXN5c3RlbSBlbmNvZGluZyBpcyBub3QgaW5pdGlhbGl6ZWQiKTsKKyAgICByZXR1cm4gTlVMTDsKK30KKworUHlEb2NfU1RSVkFSKGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jLAorICAgICJnZXRmaWxlc3lzdGVtZW5jb2RlZXJyb3JzKCkgLT4gc3RyaW5nXG5cCitcblwKK1JldHVybiB0aGUgZXJyb3IgbW9kZSB1c2VkIHRvIGNvbnZlcnQgVW5pY29kZSBmaWxlbmFtZXMgaW5cblwKK29wZXJhdGluZyBzeXN0ZW0gZmlsZW5hbWVzLiIKKyk7CisKK3N0YXRpYyBQeU9iamVjdCAqCiBzeXNfaW50ZXJuKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKICAgICBQeU9iamVjdCAqczsKQEAgLTM0Niw4ICszNjMsMTAgQEAKIHN0YXRpYyBpbnQKIHRyYWNlX2luaXQodm9pZCkKIHsKLSAgICBzdGF0aWMgY2hhciAqd2hhdG5hbWVzWzddID0geyJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiY19jYWxsIiwgImNfZXhjZXB0aW9uIiwgImNfcmV0dXJuIn07CisgICAgc3RhdGljIGNvbnN0IGNoYXIgKiBjb25zdCB3aGF0bmFtZXNbN10gPSB7CisgICAgICAgICJjYWxsIiwgImV4Y2VwdGlvbiIsICJsaW5lIiwgInJldHVybiIsCisgICAgICAgICJjX2NhbGwiLCAiY19leGNlcHRpb24iLCAiY19yZXR1cm4iCisgICAgfTsKICAgICBQeU9iamVjdCAqbmFtZTsKICAgICBpbnQgaTsKICAgICBmb3IgKGkgPSAwOyBpIDwgNzsgKytpKSB7CkBAIC0zNjYsMzQgKzM4NSwyNSBAQAogY2FsbF90cmFtcG9saW5lKFB5T2JqZWN0KiBjYWxsYmFjaywKICAgICAgICAgICAgICAgICBQeUZyYW1lT2JqZWN0ICpmcmFtZSwgaW50IHdoYXQsIFB5T2JqZWN0ICphcmcpCiB7Ci0gICAgUHlPYmplY3QgKmFyZ3M7Ci0gICAgUHlPYmplY3QgKndoYXRzdHI7CiAgICAgUHlPYmplY3QgKnJlc3VsdDsKKyAgICBQeU9iamVjdCAqc3RhY2tbM107CiAKLSAgICBhcmdzID0gUHlUdXBsZV9OZXcoMyk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKKyAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkgewogICAgICAgICByZXR1cm4gTlVMTDsKLSAgICBpZiAoUHlGcmFtZV9GYXN0VG9Mb2NhbHNXaXRoRXJyb3IoZnJhbWUpIDwgMCkKLSAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogCi0gICAgUHlfSU5DUkVGKGZyYW1lKTsKLSAgICB3aGF0c3RyID0gd2hhdHN0cmluZ3Nbd2hhdF07Ci0gICAgUHlfSU5DUkVGKHdoYXRzdHIpOwotICAgIGlmIChhcmcgPT0gTlVMTCkKLSAgICAgICAgYXJnID0gUHlfTm9uZTsKLSAgICBQeV9JTkNSRUYoYXJnKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDAsIChQeU9iamVjdCAqKWZyYW1lKTsKLSAgICBQeVR1cGxlX1NFVF9JVEVNKGFyZ3MsIDEsIHdoYXRzdHIpOwotICAgIFB5VHVwbGVfU0VUX0lURU0oYXJncywgMiwgYXJnKTsKKyAgICBzdGFja1swXSA9IChQeU9iamVjdCAqKWZyYW1lOworICAgIHN0YWNrWzFdID0gd2hhdHN0cmluZ3Nbd2hhdF07CisgICAgc3RhY2tbMl0gPSAoYXJnICE9IE5VTEwpID8gYXJnIDogUHlfTm9uZTsKIAogICAgIC8qIGNhbGwgdGhlIFB5dGhvbi1sZXZlbCBmdW5jdGlvbiAqLwotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KGNhbGxiYWNrLCBhcmdzKTsKLSAgICBQeUZyYW1lX0xvY2Fsc1RvRmFzdChmcmFtZSwgMSk7Ci0gICAgaWYgKHJlc3VsdCA9PSBOVUxMKQotICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICByZXN1bHQgPSBfUHlPYmplY3RfRmFzdENhbGwoY2FsbGJhY2ssIHN0YWNrLCAzKTsKIAotICAgIC8qIGNsZWFudXAgKi8KLSAgICBQeV9ERUNSRUYoYXJncyk7CisgICAgUHlGcmFtZV9Mb2NhbHNUb0Zhc3QoZnJhbWUsIDEpOworICAgIGlmIChyZXN1bHQgPT0gTlVMTCkgeworICAgICAgICBQeVRyYWNlQmFja19IZXJlKGZyYW1lKTsKKyAgICB9CisKICAgICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MzQsMTAgKzQ0NCw3IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAgICAgaWYgKHJlc3VsdCAhPSBQeV9Ob25lKSB7Ci0gICAgICAgIFB5T2JqZWN0ICp0ZW1wID0gZnJhbWUtPmZfdHJhY2U7Ci0gICAgICAgIGZyYW1lLT5mX3RyYWNlID0gTlVMTDsKLSAgICAgICAgUHlfWERFQ1JFRih0ZW1wKTsKLSAgICAgICAgZnJhbWUtPmZfdHJhY2UgPSByZXN1bHQ7CisgICAgICAgIFB5X1hTRVRSRUYoZnJhbWUtPmZfdHJhY2UsIHJlc3VsdCk7CiAgICAgfQogICAgIGVsc2UgewogICAgICAgICBQeV9ERUNSRUYocmVzdWx0KTsKQEAgLTYwMiwzMyArNjA5LDYgQEAKIAogI2VuZGlmIC8qIFdJVEhfVEhSRUFEICovCiAKLSNpZmRlZiBXSVRIX1RTQwotc3RhdGljIFB5T2JqZWN0ICoKLXN5c19zZXR0c2NkdW1wKFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKLXsKLSAgICBpbnQgYm9vbDsKLSAgICBQeVRocmVhZFN0YXRlICp0c3RhdGUgPSBQeVRocmVhZFN0YXRlX0dldCgpOwotCi0gICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJpOnNldHRzY2R1bXAiLCAmYm9vbCkpCi0gICAgICAgIHJldHVybiBOVUxMOwotICAgIGlmIChib29sKQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDE7Ci0gICAgZWxzZQotICAgICAgICB0c3RhdGUtPmludGVycC0+dHNjZHVtcCA9IDA7Ci0gICAgUHlfSU5DUkVGKFB5X05vbmUpOwotICAgIHJldHVybiBQeV9Ob25lOwotCi19Ci0KLVB5RG9jX1NUUlZBUihzZXR0c2NkdW1wX2RvYywKLSJzZXR0c2NkdW1wKGJvb2wpXG5cCi1cblwKLUlmIHRydWUsIHRlbGwgdGhlIFB5dGhvbiBpbnRlcnByZXRlciB0byBkdW1wIFZNIG1lYXN1cmVtZW50cyB0b1xuXAotc3RkZXJyLiAgSWYgZmFsc2UsIHR1cm4gb2ZmIGR1bXAuICBUaGUgbWVhc3VyZW1lbnRzIGFyZSBiYXNlZCBvbiB0aGVcblwKLXByb2Nlc3NvcidzIHRpbWUtc3RhbXAgY291bnRlci4iCi0pOwotI2VuZGlmIC8qIFRTQyAqLwotCiBzdGF0aWMgUHlPYmplY3QgKgogc3lzX3NldHJlY3Vyc2lvbmxpbWl0KFB5T2JqZWN0ICpzZWxmLCBQeU9iamVjdCAqYXJncykKIHsKQEAgLTcxMCw2ICs2OTAsMTEzIEBACiApOwogCiAKK3N0YXRpYyBQeVR5cGVPYmplY3QgQXN5bmNHZW5Ib29rc1R5cGU7CisKK1B5RG9jX1NUUlZBUihhc3luY2dlbl9ob29rc19kb2MsCisiYXN5bmNnZW5faG9va3NcblwKK1xuXAorQSBzdHJ1Y3Qgc2VxdWVuY2UgcHJvdmlkaW5nIGluZm9ybWF0aW9uIGFib3V0IGFzeW5ocm9ub3VzXG5cCitnZW5lcmF0b3JzIGhvb2tzLiAgVGhlIGF0dHJpYnV0ZXMgYXJlIHJlYWQgb25seS4iKTsKKworc3RhdGljIFB5U3RydWN0U2VxdWVuY2VfRmllbGQgYXN5bmNnZW5faG9va3NfZmllbGRzW10gPSB7CisgICAgeyJmaXJzdGl0ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmlyc3QgaXRlcmF0aW9uIn0sCisgICAgeyJmaW5hbGl6ZXIiLCAiSG9vayB0byBpbnRlcmNlcHQgZmluYWxpemF0aW9uIn0sCisgICAgezB9Cit9OworCitzdGF0aWMgUHlTdHJ1Y3RTZXF1ZW5jZV9EZXNjIGFzeW5jZ2VuX2hvb2tzX2Rlc2MgPSB7CisgICAgImFzeW5jZ2VuX2hvb2tzIiwgICAgICAgICAgLyogbmFtZSAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2RvYywgICAgICAgIC8qIGRvYyAqLworICAgIGFzeW5jZ2VuX2hvb2tzX2ZpZWxkcyAsICAgIC8qIGZpZWxkcyAqLworICAgIDIKK307CisKKworc3RhdGljIFB5T2JqZWN0ICoKK3N5c19zZXRfYXN5bmNnZW5faG9va3MoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzLCBQeU9iamVjdCAqa3cpCit7CisgICAgc3RhdGljIGNoYXIgKmtleXdvcmRzW10gPSB7ImZpcnN0aXRlciIsICJmaW5hbGl6ZXIiLCBOVUxMfTsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gTlVMTDsKKyAgICBQeU9iamVjdCAqZmluYWxpemVyID0gTlVMTDsKKworICAgIGlmICghUHlBcmdfUGFyc2VUdXBsZUFuZEtleXdvcmRzKAorICAgICAgICAgICAgYXJncywga3csICJ8T08iLCBrZXl3b3JkcywKKyAgICAgICAgICAgICZmaXJzdGl0ZXIsICZmaW5hbGl6ZXIpKSB7CisgICAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmIChmaW5hbGl6ZXIgJiYgZmluYWxpemVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpbmFsaXplcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpbmFsaXplciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpbmFsaXplciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpbmFsaXplcihmaW5hbGl6ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaW5hbGl6ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmluYWxpemVyKE5VTEwpOworICAgIH0KKworICAgIGlmIChmaXJzdGl0ZXIgJiYgZmlyc3RpdGVyICE9IFB5X05vbmUpIHsKKyAgICAgICAgaWYgKCFQeUNhbGxhYmxlX0NoZWNrKGZpcnN0aXRlcikpIHsKKyAgICAgICAgICAgIFB5RXJyX0Zvcm1hdChQeUV4Y19UeXBlRXJyb3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgImNhbGxhYmxlIGZpcnN0aXRlciBleHBlY3RlZCwgZ290ICUuNTBzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeV9UWVBFKGZpcnN0aXRlciktPnRwX25hbWUpOworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICAgICAgX1B5RXZhbF9TZXRBc3luY0dlbkZpcnN0aXRlcihmaXJzdGl0ZXIpOworICAgIH0KKyAgICBlbHNlIGlmIChmaXJzdGl0ZXIgPT0gUHlfTm9uZSkgeworICAgICAgICBfUHlFdmFsX1NldEFzeW5jR2VuRmlyc3RpdGVyKE5VTEwpOworICAgIH0KKworICAgIFB5X1JFVFVSTl9OT05FOworfQorCitQeURvY19TVFJWQVIoc2V0X2FzeW5jZ2VuX2hvb2tzX2RvYywKKyJzZXRfYXN5bmNnZW5faG9va3MoKiwgZmlyc3RpdGVyPU5vbmUsIGZpbmFsaXplcj1Ob25lKVxuXAorXG5cCitTZXQgYSBmaW5hbGl6ZXIgZm9yIGFzeW5jIGdlbmVyYXRvcnMgb2JqZWN0cy4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2dldF9hc3luY2dlbl9ob29rcyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCit7CisgICAgUHlPYmplY3QgKnJlczsKKyAgICBQeU9iamVjdCAqZmlyc3RpdGVyID0gX1B5RXZhbF9HZXRBc3luY0dlbkZpcnN0aXRlcigpOworICAgIFB5T2JqZWN0ICpmaW5hbGl6ZXIgPSBfUHlFdmFsX0dldEFzeW5jR2VuRmluYWxpemVyKCk7CisKKyAgICByZXMgPSBQeVN0cnVjdFNlcXVlbmNlX05ldygmQXN5bmNHZW5Ib29rc1R5cGUpOworICAgIGlmIChyZXMgPT0gTlVMTCkgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoZmlyc3RpdGVyID09IE5VTEwpIHsKKyAgICAgICAgZmlyc3RpdGVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBpZiAoZmluYWxpemVyID09IE5VTEwpIHsKKyAgICAgICAgZmluYWxpemVyID0gUHlfTm9uZTsKKyAgICB9CisKKyAgICBQeV9JTkNSRUYoZmlyc3RpdGVyKTsKKyAgICBQeVN0cnVjdFNlcXVlbmNlX1NFVF9JVEVNKHJlcywgMCwgZmlyc3RpdGVyKTsKKworICAgIFB5X0lOQ1JFRihmaW5hbGl6ZXIpOworICAgIFB5U3RydWN0U2VxdWVuY2VfU0VUX0lURU0ocmVzLCAxLCBmaW5hbGl6ZXIpOworCisgICAgcmV0dXJuIHJlczsKK30KKworUHlEb2NfU1RSVkFSKGdldF9hc3luY2dlbl9ob29rc19kb2MsCisiZ2V0X2FzeW5jZ2VuX2hvb2tzKClcblwKK1xuXAorUmV0dXJuIGEgbmFtZWR0dXBsZSBvZiBpbnN0YWxsZWQgYXN5bmNocm9ub3VzIGdlbmVyYXRvcnMgaG9va3MgXAorKGZpcnN0aXRlciwgZmluYWxpemVyKS4iCispOworCisKIHN0YXRpYyBQeVR5cGVPYmplY3QgSGFzaF9JbmZvVHlwZTsKIAogUHlEb2NfU1RSVkFSKGhhc2hfaW5mb19kb2MsCkBAIC04MDcsMTAgKzg5NCwxMSBAQAogVGhlIG1lbWJlcnMgYXJlIG5hbWVkOiBtYWpvciwgbWlub3IsIGJ1aWxkLCBwbGF0Zm9ybSwgc2VydmljZV9wYWNrLFxuXAogc2VydmljZV9wYWNrX21ham9yLCBzZXJ2aWNlX3BhY2tfbWlub3IsIHN1aXRlX21hc2ssIGFuZCBwcm9kdWN0X3R5cGUuIEZvclxuXAogYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgb25seSB0aGUgZmlyc3QgNSBpdGVtcyBhcmUgYXZhaWxhYmxlIGJ5IGluZGV4aW5nLlxuXAotQWxsIGVsZW1lbnRzIGFyZSBudW1iZXJzLCBleGNlcHQgc2VydmljZV9wYWNrIHdoaWNoIGlzIGEgc3RyaW5nLiBQbGF0Zm9ybVxuXAotbWF5IGJlIDAgZm9yIHdpbjMycywgMSBmb3IgV2luZG93cyA5eC9NRSwgMiBmb3IgV2luZG93cyBOVC8yMDAwL1hQL1Zpc3RhLzcsXG5cCi0zIGZvciBXaW5kb3dzIENFLiBQcm9kdWN0X3R5cGUgbWF5IGJlIDEgZm9yIGEgd29ya3N0YXRpb24sIDIgZm9yIGEgZG9tYWluXG5cCi1jb250cm9sbGVyLCAzIGZvciBhIHNlcnZlci4iCitBbGwgZWxlbWVudHMgYXJlIG51bWJlcnMsIGV4Y2VwdCBzZXJ2aWNlX3BhY2sgYW5kIHBsYXRmb3JtX3R5cGUgd2hpY2ggYXJlXG5cCitzdHJpbmdzLCBhbmQgcGxhdGZvcm1fdmVyc2lvbiB3aGljaCBpcyBhIDMtdHVwbGUuIFBsYXRmb3JtIGlzIGFsd2F5cyAyLlxuXAorUHJvZHVjdF90eXBlIG1heSBiZSAxIGZvciBhIHdvcmtzdGF0aW9uLCAyIGZvciBhIGRvbWFpbiBjb250cm9sbGVyLCAzIGZvciBhXG5cCitzZXJ2ZXIuIFBsYXRmb3JtX3ZlcnNpb24gaXMgYSAzLXR1cGxlIGNvbnRhaW5pbmcgYSB2ZXJzaW9uIG51bWJlciB0aGF0IGlzXG5cCitpbnRlbmRlZCBmb3IgaWRlbnRpZnlpbmcgdGhlIE9TIHJhdGhlciB0aGFuIGZlYXR1cmUgZGV0ZWN0aW9uLiIKICk7CiAKIHN0YXRpYyBQeVR5cGVPYmplY3QgV2luZG93c1ZlcnNpb25UeXBlID0gezAsIDAsIDAsIDAsIDAsIDB9OwpAQCAtODI1LDcgKzkxMyw3IEBACiAgICAgeyJzZXJ2aWNlX3BhY2tfbWlub3IiLCAiU2VydmljZSBQYWNrIG1pbm9yIHZlcnNpb24gbnVtYmVyIn0sCiAgICAgeyJzdWl0ZV9tYXNrIiwgIkJpdCBtYXNrIGlkZW50aWZ5aW5nIGF2YWlsYWJsZSBwcm9kdWN0IHN1aXRlcyJ9LAogICAgIHsicHJvZHVjdF90eXBlIiwgIlN5c3RlbSBwcm9kdWN0IHR5cGUifSwKLSAgICB7Il9wbGF0Zm9ybV92ZXJzaW9uIiwgIkRpYWdub3N0aWMgdmVyc2lvbiBudW1iZXIifSwKKyAgICB7InBsYXRmb3JtX3ZlcnNpb24iLCAiRGlhZ25vc3RpYyB2ZXJzaW9uIG51bWJlciJ9LAogICAgIHswfQogfTsKIApAQCAtOTEzLDYgKzEwMDEsMjQgQEAKIAogI3ByYWdtYSB3YXJuaW5nKHBvcCkKIAorUHlEb2NfU1RSVkFSKGVuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nX2RvYywKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcoKVxuXAorXG5cCitDaGFuZ2VzIHRoZSBkZWZhdWx0IGZpbGVzeXN0ZW0gZW5jb2RpbmcgdG8gbWJjczpyZXBsYWNlIGZvciBjb25zaXN0ZW5jeVxuXAord2l0aCBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbi4gU2VlIFBFUCA1MjkgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG5cCitcblwKK1RoaXMgaXMgZXF1aXZhbGVudCB0byBkZWZpbmluZyB0aGUgUFlUSE9OTEVHQUNZV0lORE9XU0ZTRU5DT0RJTkcgXG5cCitlbnZpcm9ubWVudCB2YXJpYWJsZSBiZWZvcmUgbGF1bmNoaW5nIFB5dGhvbi4iCispOworCitzdGF0aWMgUHlPYmplY3QgKgorc3lzX2VuYWJsZWxlZ2FjeXdpbmRvd3Nmc2VuY29kaW5nKFB5T2JqZWN0ICpzZWxmKQoreworICAgIFB5X0ZpbGVTeXN0ZW1EZWZhdWx0RW5jb2RpbmcgPSAibWJjcyI7CisgICAgUHlfRmlsZVN5c3RlbURlZmF1bHRFbmNvZGVFcnJvcnMgPSAicmVwbGFjZSI7CisgICAgUHlfUkVUVVJOX05PTkU7Cit9CisKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAKICNpZmRlZiBIQVZFX0RMT1BFTgpAQCAtMTE4OSw4ICsxMjk1LDEwIEBACiBzeXNfZGVidWdtYWxsb2NzdGF0cyhQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCiB7CiAjaWZkZWYgV0lUSF9QWU1BTExPQwotICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7Ci0gICAgZnB1dGMoJ1xuJywgc3RkZXJyKTsKKyAgICBpZiAoX1B5TWVtX1B5bWFsbG9jRW5hYmxlZCgpKSB7CisgICAgICAgIF9QeU9iamVjdF9EZWJ1Z01hbGxvY1N0YXRzKHN0ZGVycik7CisgICAgICAgIGZwdXRjKCdcbicsIHN0ZGVycik7CisgICAgfQogI2VuZGlmCiAgICAgX1B5T2JqZWN0X0RlYnVnVHlwZVN0YXRzKHN0ZGVycik7CiAKQEAgLTEyNzAsNiArMTM3OCw4IEBACiAjZW5kaWYKICAgICB7ImdldGZpbGVzeXN0ZW1lbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kaW5nLAogICAgICBNRVRIX05PQVJHUywgZ2V0ZmlsZXN5c3RlbWVuY29kaW5nX2RvY30sCisgICAgeyAiZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycyIsIChQeUNGdW5jdGlvbilzeXNfZ2V0ZmlsZXN5c3RlbWVuY29kZWVycm9ycywKKyAgICAgTUVUSF9OT0FSR1MsIGdldGZpbGVzeXN0ZW1lbmNvZGVlcnJvcnNfZG9jIH0sCiAjaWZkZWYgUHlfVFJBQ0VfUkVGUwogICAgIHsiZ2V0b2JqZWN0cyIsICAgICAgX1B5X0dldE9iamVjdHMsIE1FVEhfVkFSQVJHU30sCiAjZW5kaWYKQEAgLTEyODUsNiArMTM5NSw4IEBACiAjaWZkZWYgTVNfV0lORE9XUwogICAgIHsiZ2V0d2luZG93c3ZlcnNpb24iLCAoUHlDRnVuY3Rpb24pc3lzX2dldHdpbmRvd3N2ZXJzaW9uLCBNRVRIX05PQVJHUywKICAgICAgZ2V0d2luZG93c3ZlcnNpb25fZG9jfSwKKyAgICB7Il9lbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZyIsIChQeUNGdW5jdGlvbilzeXNfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcsCisgICAgIE1FVEhfTk9BUkdTLCBlbmFibGVsZWdhY3l3aW5kb3dzZnNlbmNvZGluZ19kb2MgfSwKICNlbmRpZiAvKiBNU19XSU5ET1dTICovCiAgICAgeyJpbnRlcm4iLCAgICAgICAgICBzeXNfaW50ZXJuLCAgICAgTUVUSF9WQVJBUkdTLCBpbnRlcm5fZG9jfSwKICAgICB7ImlzX2ZpbmFsaXppbmciLCAgIHN5c19pc19maW5hbGl6aW5nLCBNRVRIX05PQVJHUywgaXNfZmluYWxpemluZ19kb2N9LApAQCAtMTMwOSw5ICsxNDIxLDYgQEAKICAgICB7ImdldHByb2ZpbGUiLCAgICAgIHN5c19nZXRwcm9maWxlLCBNRVRIX05PQVJHUywgZ2V0cHJvZmlsZV9kb2N9LAogICAgIHsic2V0cmVjdXJzaW9ubGltaXQiLCBzeXNfc2V0cmVjdXJzaW9ubGltaXQsIE1FVEhfVkFSQVJHUywKICAgICAgc2V0cmVjdXJzaW9ubGltaXRfZG9jfSwKLSNpZmRlZiBXSVRIX1RTQwotICAgIHsic2V0dHNjZHVtcCIsIHN5c19zZXR0c2NkdW1wLCBNRVRIX1ZBUkFSR1MsIHNldHRzY2R1bXBfZG9jfSwKLSNlbmRpZgogICAgIHsic2V0dHJhY2UiLCAgICAgICAgc3lzX3NldHRyYWNlLCBNRVRIX08sIHNldHRyYWNlX2RvY30sCiAgICAgeyJnZXR0cmFjZSIsICAgICAgICBzeXNfZ2V0dHJhY2UsIE1FVEhfTk9BUkdTLCBnZXR0cmFjZV9kb2N9LAogICAgIHsiY2FsbF90cmFjaW5nIiwgc3lzX2NhbGxfdHJhY2luZywgTUVUSF9WQVJBUkdTLCBjYWxsX3RyYWNpbmdfZG9jfSwKQEAgLTEzMjEsNiArMTQzMCwxMCBAQAogICAgICBzZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKICAgICB7ImdldF9jb3JvdXRpbmVfd3JhcHBlciIsIHN5c19nZXRfY29yb3V0aW5lX3dyYXBwZXIsIE1FVEhfTk9BUkdTLAogICAgICBnZXRfY29yb3V0aW5lX3dyYXBwZXJfZG9jfSwKKyAgICB7InNldF9hc3luY2dlbl9ob29rcyIsIChQeUNGdW5jdGlvbilzeXNfc2V0X2FzeW5jZ2VuX2hvb2tzLAorICAgICBNRVRIX1ZBUkFSR1MgfCBNRVRIX0tFWVdPUkRTLCBzZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKKyAgICB7ImdldF9hc3luY2dlbl9ob29rcyIsIHN5c19nZXRfYXN5bmNnZW5faG9va3MsIE1FVEhfTk9BUkdTLAorICAgICBnZXRfYXN5bmNnZW5faG9va3NfZG9jfSwKICAgICB7TlVMTCwgICAgICAgICAgICAgIE5VTEx9ICAgICAgICAgICAvKiBzZW50aW5lbCAqLwogfTsKIApAQCAtMTUwMSwxNCArMTYxNCwyMSBAQAogdmVyc2lvbl9pbmZvIC0tIHZlcnNpb24gaW5mb3JtYXRpb24gYXMgYSBuYW1lZCB0dXBsZVxuXAogIgogKQotI2lmZGVmIE1TX1dJTkRPV1MKKyNpZmRlZiBNU19DT1JFRExMCiAvKiBjb25jYXRlbmF0aW5nIHN0cmluZyBoZXJlICovCiBQeURvY19TVFIoCiAiZGxsaGFuZGxlIC0tIFtXaW5kb3dzIG9ubHldIGludGVnZXIgaGFuZGxlIG9mIHRoZSBQeXRob24gRExMXG5cCiB3aW52ZXIgLS0gW1dpbmRvd3Mgb25seV0gdmVyc2lvbiBudW1iZXIgb2YgdGhlIFB5dGhvbiBETExcblwKICIKICkKLSNlbmRpZiAvKiBNU19XSU5ET1dTICovCisjZW5kaWYgLyogTVNfQ09SRURMTCAqLworI2lmZGVmIE1TX1dJTkRPV1MKKy8qIGNvbmNhdGVuYXRpbmcgc3RyaW5nIGhlcmUgKi8KK1B5RG9jX1NUUigKKyJfZW5hYmxlbGVnYWN5d2luZG93c2ZzZW5jb2RpbmcgLS0gW1dpbmRvd3Mgb25seV0gXG5cCisiCispCisjZW5kaWYKIFB5RG9jX1NUUigKICJfX3N0ZGluX18gLS0gdGhlIG9yaWdpbmFsIHN0ZGluOyBkb24ndCB0b3VjaCFcblwKIF9fc3Rkb3V0X18gLS0gdGhlIG9yaWdpbmFsIHN0ZG91dDsgZG9uJ3QgdG91Y2ghXG5cCkBAIC0xNjgwLDE1ICsxODAwLDExIEBACiAvKiBzeXMuaW1wbGVtZW50YXRpb24gdmFsdWVzICovCiAjZGVmaW5lIE5BTUUgImNweXRob24iCiBjb25zdCBjaGFyICpfUHlTeXNfSW1wbE5hbWUgPSBOQU1FOwotI2RlZmluZSBRVU9URShhcmcpICNhcmcKLSNkZWZpbmUgU1RSSUZZKG5hbWUpIFFVT1RFKG5hbWUpCi0jZGVmaW5lIE1BSk9SIFNUUklGWShQWV9NQUpPUl9WRVJTSU9OKQotI2RlZmluZSBNSU5PUiBTVFJJRlkoUFlfTUlOT1JfVkVSU0lPTikKKyNkZWZpbmUgTUFKT1IgUHlfU1RSSU5HSUZZKFBZX01BSk9SX1ZFUlNJT04pCisjZGVmaW5lIE1JTk9SIFB5X1NUUklOR0lGWShQWV9NSU5PUl9WRVJTSU9OKQogI2RlZmluZSBUQUcgTkFNRSAiLSIgTUFKT1IgTUlOT1IKIGNvbnN0IGNoYXIgKl9QeVN5c19JbXBsQ2FjaGVUYWcgPSBUQUc7CiAjdW5kZWYgTkFNRQotI3VuZGVmIFFVT1RFCi0jdW5kZWYgU1RSSUZZCiAjdW5kZWYgTUFKT1IKICN1bmRlZiBNSU5PUgogI3VuZGVmIFRBRwpAQCAtMTczMyw2ICsxODQ5LDE2IEBACiAgICAgaWYgKHJlcyA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKKyNpZmRlZiBNVUxUSUFSQ0gKKyAgICB2YWx1ZSA9IFB5VW5pY29kZV9Gcm9tU3RyaW5nKE1VTFRJQVJDSCk7CisgICAgaWYgKHZhbHVlID09IE5VTEwpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgcmVzID0gUHlEaWN0X1NldEl0ZW1TdHJpbmcoaW1wbF9pbmZvLCAiX211bHRpYXJjaCIsIHZhbHVlKTsKKyAgICBQeV9ERUNSRUYodmFsdWUpOworICAgIGlmIChyZXMgPCAwKQorICAgICAgICBnb3RvIGVycm9yOworI2VuZGlmCisKICAgICAvKiBkaWN0IHJlYWR5ICovCiAKICAgICBucyA9IF9QeU5hbWVzcGFjZV9OZXcoaW1wbF9pbmZvKTsKQEAgLTE5NDMsNiArMjA2OSwxNCBAQAogICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInRocmVhZF9pbmZvIiwgUHlUaHJlYWRfR2V0SW5mbygpKTsKICNlbmRpZgogCisgICAgLyogaW5pdGlhbGl6ZSBhc3luY2dlbl9ob29rcyAqLworICAgIGlmIChBc3luY0dlbkhvb2tzVHlwZS50cF9uYW1lID09IE5VTEwpIHsKKyAgICAgICAgaWYgKFB5U3RydWN0U2VxdWVuY2VfSW5pdFR5cGUyKAorICAgICAgICAgICAgICAgICZBc3luY0dlbkhvb2tzVHlwZSwgJmFzeW5jZ2VuX2hvb2tzX2Rlc2MpIDwgMCkgeworICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisgICAgICAgIH0KKyAgICB9CisKICN1bmRlZiBTRVRfU1lTX0ZST01fU1RSSU5HCiAjdW5kZWYgU0VUX1NZU19GUk9NX1NUUklOR19CT1JST1cKICAgICBpZiAoUHlFcnJfT2NjdXJyZWQoKSkKQEAgLTIwMzksNyArMjE3Myw3IEBACiAjZW5kaWYKICNpZiBkZWZpbmVkKEhBVkVfUkVBTFBBVEgpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhQQVRITEVOXTsKLSNlbGlmIGRlZmluZWQoTVNfV0lORE9XUykgJiYgIWRlZmluZWQoTVNfV0lOQ0UpCisjZWxpZiBkZWZpbmVkKE1TX1dJTkRPV1MpCiAgICAgd2NoYXJfdCBmdWxscGF0aFtNQVhfUEFUSF07CiAjZW5kaWYKIApAQCAtMjA3OCwxMCArMjIxMiw4IEBACiAjaWYgU0VQID09ICdcXCcgLyogU3BlY2lhbCBjYXNlIGZvciBNUyBmaWxlbmFtZSBzeW50YXggKi8KICAgICBpZiAoX0hBVkVfU0NSSVBUX0FSR1VNRU5UKGFyZ2MsIGFyZ3YpKSB7CiAgICAgICAgIHdjaGFyX3QgKnE7Ci0jaWYgZGVmaW5lZChNU19XSU5ET1dTKSAmJiAhZGVmaW5lZChNU19XSU5DRSkKLSAgICAgICAgLyogVGhpcyBjb2RlIGhlcmUgcmVwbGFjZXMgdGhlIGZpcnN0IGVsZW1lbnQgaW4gYXJndiB3aXRoIHRoZSBmdWxsCi0gICAgICAgIHBhdGggdGhhdCBpdCByZXByZXNlbnRzLiBVbmRlciBDRSwgdGhlcmUgYXJlIG5vIHJlbGF0aXZlIHBhdGhzIHNvCi0gICAgICAgIHRoZSBhcmd1bWVudCBtdXN0IGJlIHRoZSBmdWxsIHBhdGggYW55d2F5LiAqLworI2lmIGRlZmluZWQoTVNfV0lORE9XUykKKyAgICAgICAgLyogUmVwbGFjZSB0aGUgZmlyc3QgZWxlbWVudCBpbiBhcmd2IHdpdGggdGhlIGZ1bGwgcGF0aC4gKi8KICAgICAgICAgd2NoYXJfdCAqcHRlbXA7CiAgICAgICAgIGlmIChHZXRGdWxsUGF0aE5hbWVXKGFyZ3YwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgUHlfQVJSQVlfTEVOR1RIKGZ1bGxwYXRoKSwKQEAgLTIxNTEsNyArMjI4Myw3IEBACiBzdGF0aWMgaW50CiBzeXNfcHlmaWxlX3dyaXRlX3VuaWNvZGUoUHlPYmplY3QgKnVuaWNvZGUsIFB5T2JqZWN0ICpmaWxlKQogewotICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqYXJncyA9IE5VTEwsICpyZXN1bHQgPSBOVUxMOworICAgIFB5T2JqZWN0ICp3cml0ZXIgPSBOVUxMLCAqcmVzdWx0ID0gTlVMTDsKICAgICBpbnQgZXJyOwogCiAgICAgaWYgKGZpbGUgPT0gTlVMTCkKQEAgLTIxNjEsMTEgKzIyOTMsNyBAQAogICAgIGlmICh3cml0ZXIgPT0gTlVMTCkKICAgICAgICAgZ290byBlcnJvcjsKIAotICAgIGFyZ3MgPSBQeVR1cGxlX1BhY2soMSwgdW5pY29kZSk7Ci0gICAgaWYgKGFyZ3MgPT0gTlVMTCkKLSAgICAgICAgZ290byBlcnJvcjsKLQotICAgIHJlc3VsdCA9IFB5RXZhbF9DYWxsT2JqZWN0KHdyaXRlciwgYXJncyk7CisgICAgcmVzdWx0ID0gX1B5T2JqZWN0X0NhbGxBcmcxKHdyaXRlciwgdW5pY29kZSk7CiAgICAgaWYgKHJlc3VsdCA9PSBOVUxMKSB7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfSBlbHNlIHsKQEAgLTIxNzcsNyArMjMwNSw2IEBACiAgICAgZXJyID0gLTE7CiBmaW5hbGx5OgogICAgIFB5X1hERUNSRUYod3JpdGVyKTsKLSAgICBQeV9YREVDUkVGKGFyZ3MpOwogICAgIFB5X1hERUNSRUYocmVzdWx0KTsKICAgICByZXR1cm4gZXJyOwogfQpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RocmVhZF9udC5oIGIvUHl0aG9uL3RocmVhZF9udC5oCmluZGV4IGIyOWIxYjYuLjc0YTZlZTggMTAwNjQ0Ci0tLSBhL1B5dGhvbi90aHJlYWRfbnQuaAorKysgYi9QeXRob24vdGhyZWFkX250LmgKQEAgLTc3LDcgKzc3LDcgQEAKICAgICAgICAgLyogd2FpdCBhdCBsZWFzdCB1bnRpbCB0aGUgdGFyZ2V0ICovCiAgICAgICAgIERXT1JEIG5vdywgdGFyZ2V0ID0gR2V0VGlja0NvdW50KCkgKyBtaWxsaXNlY29uZHM7CiAgICAgICAgIHdoaWxlIChtdXRleC0+bG9ja2VkKSB7Ci0gICAgICAgICAgICBpZiAoUHlDT05EX1RJTUVEV0FJVCgmbXV0ZXgtPmN2LCAmbXV0ZXgtPmNzLCAoUFlfTE9OR19MT05HKW1pbGxpc2Vjb25kcyoxMDAwKSA8IDApIHsKKyAgICAgICAgICAgIGlmIChQeUNPTkRfVElNRURXQUlUKCZtdXRleC0+Y3YsICZtdXRleC0+Y3MsIChsb25nIGxvbmcpbWlsbGlzZWNvbmRzKjEwMDApIDwgMCkgewogICAgICAgICAgICAgICAgIHJlc3VsdCA9IFdBSVRfRkFJTEVEOwogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQpAQCAtMTYxLDExICsxNjEsNyBAQAogCiAvKiB0aHVua2VyIHRvIGNhbGwgYWRhcHQgYmV0d2VlbiB0aGUgZnVuY3Rpb24gdHlwZSB1c2VkIGJ5IHRoZSBzeXN0ZW0ncwogdGhyZWFkIHN0YXJ0IGZ1bmN0aW9uIGFuZCB0aGUgaW50ZXJuYWxseSB1c2VkIG9uZS4gKi8KLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotc3RhdGljIERXT1JEIFdJTkFQSQotI2Vsc2UKIHN0YXRpYyB1bnNpZ25lZCBfX3N0ZGNhbGwKLSNlbmRpZgogYm9vdHN0cmFwKHZvaWQgKmNhbGwpCiB7CiAgICAgY2FsbG9iaiAqb2JqID0gKGNhbGxvYmoqKWNhbGw7CkBAIC0xOTMsMzIgKzE4OSwxOCBAQAogICAgICAgICByZXR1cm4gLTE7CiAgICAgb2JqLT5mdW5jID0gZnVuYzsKICAgICBvYmotPmFyZyA9IGFyZzsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIGhUaHJlYWQgPSBDcmVhdGVUaHJlYWQoTlVMTCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwgUHlfc3NpemVfdCwgU0laRV9UKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb3RzdHJhcCwgb2JqLCAwLCAmdGhyZWFkSUQpOwotI2Vsc2UKICAgICBoVGhyZWFkID0gKEhBTkRMRSlfYmVnaW50aHJlYWRleCgwLAogICAgICAgICAgICAgICAgICAgICAgIFB5X1NBRkVfRE9XTkNBU1QoX3B5dGhyZWFkX3N0YWNrc2l6ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5X3NzaXplX3QsIHVuc2lnbmVkIGludCksCiAgICAgICAgICAgICAgICAgICAgICAgYm9vdHN0cmFwLCBvYmosCiAgICAgICAgICAgICAgICAgICAgICAgMCwgJnRocmVhZElEKTsKLSNlbmRpZgogICAgIGlmIChoVGhyZWFkID09IDApIHsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgICAgICAvKiBTYXZlIGVycm9yIGluIHZhcmlhYmxlLCB0byBwcmV2ZW50IFB5VGhyZWFkX2dldF90aHJlYWRfaWRlbnQKLSAgICAgICAgICAgZnJvbSBjbG9iYmVyaW5nIGl0LiAqLwotICAgICAgICB1bnNpZ25lZCBlID0gR2V0TGFzdEVycm9yKCk7Ci0gICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCB3aW4zMiBlcnJvciBjb2RlICV1XG4iLAotICAgICAgICAgICAgICAgICBQeVRocmVhZF9nZXRfdGhyZWFkX2lkZW50KCksIGUpKTsKLSNlbHNlCiAgICAgICAgIC8qIEkndmUgc2VlbiBlcnJubyA9PSBFQUdBSU4gaGVyZSwgd2hpY2ggbWVhbnMgInRoZXJlIGFyZQogICAgICAgICAgKiB0b28gbWFueSB0aHJlYWRzIi4KICAgICAgICAgICovCiAgICAgICAgIGludCBlID0gZXJybm87CiAgICAgICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX3N0YXJ0X25ld190aHJlYWQgZmFpbGVkLCBlcnJubyAlZFxuIiwKICAgICAgICAgICAgICAgICAgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpLCBlKSk7Ci0jZW5kaWYKICAgICAgICAgdGhyZWFkSUQgPSAodW5zaWduZWQpLTE7CiAgICAgICAgIEhlYXBGcmVlKEdldFByb2Nlc3NIZWFwKCksIDAsIG9iaik7CiAgICAgfQpAQCAtMjQ5LDExICsyMzEsNyBAQAogICAgIGRwcmludGYoKCIlbGQ6IFB5VGhyZWFkX2V4aXRfdGhyZWFkIGNhbGxlZFxuIiwgUHlUaHJlYWRfZ2V0X3RocmVhZF9pZGVudCgpKSk7CiAgICAgaWYgKCFpbml0aWFsaXplZCkKICAgICAgICAgZXhpdCgwKTsKLSNpZiBkZWZpbmVkKE1TX1dJTkNFKQotICAgIEV4aXRUaHJlYWQoMCk7Ci0jZWxzZQogICAgIF9lbmR0aHJlYWRleCgwKTsKLSNlbmRpZgogfQogCiAvKgpkaWZmIC0tZ2l0IGEvUHl0aG9uL3RyYWNlYmFjay5jIGIvUHl0aG9uL3RyYWNlYmFjay5jCmluZGV4IDk0MWQxY2IuLmU4YWFjMWIgMTAwNjQ0Ci0tLSBhL1B5dGhvbi90cmFjZWJhY2suYworKysgYi9QeXRob24vdHJhY2ViYWNrLmMKQEAgLTMxNCw3ICszMTQsNyBAQAogICAgIGlmIChmb2IgPT0gTlVMTCkgewogICAgICAgICBQeUVycl9DbGVhcigpOwogCi0gICAgICAgIHJlcyA9IF9QeU9iamVjdF9DYWxsTWV0aG9kSWQoYmluYXJ5LCAmUHlJZF9jbG9zZSwgIiIpOworICAgICAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGJpbmFyeSwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgICAgICBQeV9ERUNSRUYoYmluYXJ5KTsKICAgICAgICAgaWYgKHJlcykKICAgICAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwpAQCAtMzM0LDcgKzMzNCw3IEBACiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgIH0KLSAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsICIiKTsKKyAgICByZXMgPSBfUHlPYmplY3RfQ2FsbE1ldGhvZElkKGZvYiwgJlB5SWRfY2xvc2UsIE5VTEwpOwogICAgIGlmIChyZXMpCiAgICAgICAgIFB5X0RFQ1JFRihyZXMpOwogICAgIGVsc2UKQEAgLTQxMiw2ICs0MTIsMTEgQEAKIHsKICAgICBpbnQgZXJyID0gMDsKICAgICBsb25nIGRlcHRoID0gMDsKKyAgICBQeU9iamVjdCAqbGFzdF9maWxlID0gTlVMTDsKKyAgICBpbnQgbGFzdF9saW5lID0gLTE7CisgICAgUHlPYmplY3QgKmxhc3RfbmFtZSA9IE5VTEw7CisgICAgbG9uZyBjbnQgPSAwOworICAgIFB5T2JqZWN0ICpsaW5lOwogICAgIFB5VHJhY2ViYWNrT2JqZWN0ICp0YjEgPSB0YjsKICAgICB3aGlsZSAodGIxICE9IE5VTEwpIHsKICAgICAgICAgZGVwdGgrKzsKQEAgLTQxOSwxNiArNDI0LDQxIEBACiAgICAgfQogICAgIHdoaWxlICh0YiAhPSBOVUxMICYmIGVyciA9PSAwKSB7CiAgICAgICAgIGlmIChkZXB0aCA8PSBsaW1pdCkgewotICAgICAgICAgICAgZXJyID0gdGJfZGlzcGxheWxpbmUoZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19maWxlbmFtZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSk7CisgICAgICAgICAgICBpZiAobGFzdF9maWxlICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWUgPT0gbGFzdF9maWxlICYmCisgICAgICAgICAgICAgICAgbGFzdF9saW5lICE9IC0xICYmIHRiLT50Yl9saW5lbm8gPT0gbGFzdF9saW5lICYmCisgICAgICAgICAgICAgICAgbGFzdF9uYW1lICE9IE5VTEwgJiYKKyAgICAgICAgICAgICAgICB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fbmFtZSA9PSBsYXN0X25hbWUpIHsKKyAgICAgICAgICAgICAgICAgICAgY250Kys7CisgICAgICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKGNudCA+IDMpIHsKKyAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBQeVVuaWNvZGVfRnJvbUZvcm1hdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgICAgICAgICAgICAgICAgICBlcnIgPSBQeUZpbGVfV3JpdGVPYmplY3QobGluZSwgZiwgUHlfUFJJTlRfUkFXKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRihsaW5lKTsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICBsYXN0X2ZpbGUgPSB0Yi0+dGJfZnJhbWUtPmZfY29kZS0+Y29fZmlsZW5hbWU7CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbGluZSA9IHRiLT50Yl9saW5lbm87CisgICAgICAgICAgICAgICAgICAgIGxhc3RfbmFtZSA9IHRiLT50Yl9mcmFtZS0+Zl9jb2RlLT5jb19uYW1lOworICAgICAgICAgICAgICAgICAgICBjbnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjbnQgPCAzKQorICAgICAgICAgICAgICAgIGVyciA9IHRiX2Rpc3BsYXlsaW5lKGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX2ZpbGVuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRiLT50Yl9saW5lbm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGItPnRiX2ZyYW1lLT5mX2NvZGUtPmNvX25hbWUpOwogICAgICAgICB9CiAgICAgICAgIGRlcHRoLS07CiAgICAgICAgIHRiID0gdGItPnRiX25leHQ7CiAgICAgICAgIGlmIChlcnIgPT0gMCkKICAgICAgICAgICAgIGVyciA9IFB5RXJyX0NoZWNrU2lnbmFscygpOwogICAgIH0KKyAgICBpZiAoY250ID4gMykgeworICAgICAgICBsaW5lID0gUHlVbmljb2RlX0Zyb21Gb3JtYXQoCisgICAgICAgICIgIFtQcmV2aW91cyBsaW5lIHJlcGVhdGVkICVkIG1vcmUgdGltZXNdXG4iLCBjbnQtMyk7CisgICAgICAgIGVyciA9IFB5RmlsZV9Xcml0ZU9iamVjdChsaW5lLCBmLCBQeV9QUklOVF9SQVcpOworICAgICAgICBQeV9ERUNSRUYobGluZSk7CisgICAgfQogICAgIHJldHVybiBlcnI7CiB9CiAKQEAgLTQ3OSw0MCArNTA5LDI2IEBACiAKICAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCiAKLXN0YXRpYyB2b2lkCi1yZXZlcnNlX3N0cmluZyhjaGFyICp0ZXh0LCBjb25zdCBzaXplX3QgbGVuKQordm9pZAorX1B5X0R1bXBEZWNpbWFsKGludCBmZCwgdW5zaWduZWQgbG9uZyB2YWx1ZSkKIHsKLSAgICBjaGFyIHRtcDsKLSAgICBzaXplX3QgaSwgajsKLSAgICBpZiAobGVuID09IDApCi0gICAgICAgIHJldHVybjsKLSAgICBmb3IgKGk9MCwgaj1sZW4tMTsgaSA8IGo7IGkrKywgai0tKSB7Ci0gICAgICAgIHRtcCA9IHRleHRbaV07Ci0gICAgICAgIHRleHRbaV0gPSB0ZXh0W2pdOwotICAgICAgICB0ZXh0W2pdID0gdG1wOwotICAgIH0KLX0KKyAgICAvKiBtYXhpbXVtIG51bWJlciBvZiBjaGFyYWN0ZXJzIHJlcXVpcmVkIGZvciBvdXRwdXQgb2YgJWxsZCBvciAlcC4KKyAgICAgICBXZSBuZWVkIGF0IG1vc3QgY2VpbChsb2cxMCgyNTYpKlNJWkVPRl9MT05HX0xPTkcpIGRpZ2l0cywKKyAgICAgICBwbHVzIDEgZm9yIHRoZSBudWxsIGJ5dGUuICA1My8yMiBpcyBhbiB1cHBlciBib3VuZCBmb3IgbG9nMTAoMjU2KS4gKi8KKyAgICBjaGFyIGJ1ZmZlclsxICsgKHNpemVvZih1bnNpZ25lZCBsb25nKSo1My0xKSAvIDIyICsgMV07CisgICAgY2hhciAqcHRyLCAqZW5kOwogCi0vKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgOTk5OTk5XSB0byBkZWNpbWFsLAotICAgYW5kIHdyaXRlIGl0IGludG8gdGhlIGZpbGUgZmQuCi0KLSAgIFRoaXMgZnVuY3Rpb24gaXMgc2lnbmFsIHNhZmUuICovCi0KLXN0YXRpYyB2b2lkCi1kdW1wX2RlY2ltYWwoaW50IGZkLCBpbnQgdmFsdWUpCi17Ci0gICAgY2hhciBidWZmZXJbN107Ci0gICAgaW50IGxlbjsKLSAgICBpZiAodmFsdWUgPCAwIHx8IDk5OTk5OSA8IHZhbHVlKQotICAgICAgICByZXR1cm47Ci0gICAgbGVuID0gMDsKKyAgICBlbmQgPSAmYnVmZmVyW1B5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMV07CisgICAgcHRyID0gZW5kOworICAgICpwdHIgPSAnXDAnOwogICAgIGRvIHsKLSAgICAgICAgYnVmZmVyW2xlbl0gPSAnMCcgKyAodmFsdWUgJSAxMCk7CisgICAgICAgIC0tcHRyOworICAgICAgICBhc3NlcnQocHRyID49IGJ1ZmZlcik7CisgICAgICAgICpwdHIgPSAnMCcgKyAodmFsdWUgJSAxMCk7CiAgICAgICAgIHZhbHVlIC89IDEwOwotICAgICAgICBsZW4rKzsKICAgICB9IHdoaWxlICh2YWx1ZSk7Ci0gICAgcmV2ZXJzZV9zdHJpbmcoYnVmZmVyLCBsZW4pOwotICAgIF9QeV93cml0ZV9ub3JhaXNlKGZkLCBidWZmZXIsIGxlbik7CisKKyAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgcHRyLCBlbmQgLSBwdHIpOwogfQogCiAvKiBGb3JtYXQgYW4gaW50ZWdlciBpbiByYW5nZSBbMDsgMHhmZmZmZmZmZl0gdG8gaGV4YWRlY2ltYWwgb2YgJ3dpZHRoJyBkaWdpdHMsCkBAIC01MjAsMjcgKzUzNiwzMSBAQAogCiAgICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwogCi1zdGF0aWMgdm9pZAotZHVtcF9oZXhhZGVjaW1hbChpbnQgZmQsIHVuc2lnbmVkIGxvbmcgdmFsdWUsIGludCB3aWR0aCkKK3ZvaWQKK19QeV9EdW1wSGV4YWRlY2ltYWwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHZhbHVlLCBQeV9zc2l6ZV90IHdpZHRoKQogewotICAgIGludCBsZW47Ci0gICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdOwotICAgIGxlbiA9IDA7CisgICAgY2hhciBidWZmZXJbc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMiArIDFdLCAqcHRyLCAqZW5kOworICAgIGNvbnN0IFB5X3NzaXplX3Qgc2l6ZSA9IFB5X0FSUkFZX0xFTkdUSChidWZmZXIpIC0gMTsKKworICAgIGlmICh3aWR0aCA+IHNpemUpCisgICAgICAgIHdpZHRoID0gc2l6ZTsKKyAgICAvKiBpdCdzIG9rIGlmIHdpZHRoIGlzIG5lZ2F0aXZlICovCisKKyAgICBlbmQgPSAmYnVmZmVyW3NpemVdOworICAgIHB0ciA9IGVuZDsKKyAgICAqcHRyID0gJ1wwJzsKICAgICBkbyB7Ci0gICAgICAgIGJ1ZmZlcltsZW5dID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOworICAgICAgICAtLXB0cjsKKyAgICAgICAgYXNzZXJ0KHB0ciA+PSBidWZmZXIpOworICAgICAgICAqcHRyID0gUHlfaGV4ZGlnaXRzW3ZhbHVlICYgMTVdOwogICAgICAgICB2YWx1ZSA+Pj0gNDsKLSAgICAgICAgbGVuKys7Ci0gICAgfSB3aGlsZSAobGVuIDwgd2lkdGggfHwgdmFsdWUpOwotICAgIHJldmVyc2Vfc3RyaW5nKGJ1ZmZlciwgbGVuKTsKLSAgICBfUHlfd3JpdGVfbm9yYWlzZShmZCwgYnVmZmVyLCBsZW4pOworICAgIH0gd2hpbGUgKChlbmQgLSBwdHIpIDwgd2lkdGggfHwgdmFsdWUpOworCisgICAgX1B5X3dyaXRlX25vcmFpc2UoZmQsIHB0ciwgZW5kIC0gcHRyKTsKIH0KIAotLyogV3JpdGUgYW4gdW5pY29kZSBvYmplY3QgaW50byB0aGUgZmlsZSBmZCB1c2luZyBhc2NpaStiYWNrc2xhc2hyZXBsYWNlLgotCi0gICBUaGlzIGZ1bmN0aW9uIGlzIHNpZ25hbCBzYWZlLiAqLwotCi1zdGF0aWMgdm9pZAotZHVtcF9hc2NpaShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQordm9pZAorX1B5X0R1bXBBU0NJSShpbnQgZmQsIFB5T2JqZWN0ICp0ZXh0KQogewogICAgIFB5QVNDSUlPYmplY3QgKmFzY2lpID0gKFB5QVNDSUlPYmplY3QgKil0ZXh0OwogICAgIFB5X3NzaXplX3QgaSwgc2l6ZTsKQEAgLTU1MCwzMiArNTcwLDM2IEBACiAgICAgd2NoYXJfdCAqd3N0ciA9IE5VTEw7CiAgICAgUHlfVUNTNCBjaDsKIAorICAgIGlmICghUHlVbmljb2RlX0NoZWNrKHRleHQpKQorICAgICAgICByZXR1cm47CisKICAgICBzaXplID0gYXNjaWktPmxlbmd0aDsKICAgICBraW5kID0gYXNjaWktPnN0YXRlLmtpbmQ7Ci0gICAgaWYgKGFzY2lpLT5zdGF0ZS5jb21wYWN0KSB7CisgICAgaWYgKGtpbmQgPT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOworICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOworICAgIH0KKyAgICBlbHNlIGlmIChhc2NpaS0+c3RhdGUuY29tcGFjdCkgewogICAgICAgICBpZiAoYXNjaWktPnN0YXRlLmFzY2lpKQogICAgICAgICAgICAgZGF0YSA9ICgoUHlBU0NJSU9iamVjdCopdGV4dCkgKyAxOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBkYXRhID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0Kil0ZXh0KSArIDE7CiAgICAgfQotICAgIGVsc2UgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpIHsKKyAgICBlbHNlIHsKICAgICAgICAgZGF0YSA9ICgoUHlVbmljb2RlT2JqZWN0ICopdGV4dCktPmRhdGEuYW55OwogICAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICBlbHNlIHsKLSAgICAgICAgd3N0ciA9ICgoUHlBU0NJSU9iamVjdCAqKXRleHQpLT53c3RyOwotICAgICAgICBpZiAod3N0ciA9PSBOVUxMKQotICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBzaXplID0gKChQeUNvbXBhY3RVbmljb2RlT2JqZWN0ICopdGV4dCktPndzdHJfbGVuZ3RoOwotICAgIH0KIAogICAgIGlmIChNQVhfU1RSSU5HX0xFTkdUSCA8IHNpemUpIHsKICAgICAgICAgc2l6ZSA9IE1BWF9TVFJJTkdfTEVOR1RIOwogICAgICAgICB0cnVuY2F0ZWQgPSAxOwogICAgIH0KLSAgICBlbHNlCisgICAgZWxzZSB7CiAgICAgICAgIHRydW5jYXRlZCA9IDA7CisgICAgfQogCiAgICAgZm9yIChpPTA7IGkgPCBzaXplOyBpKyspIHsKICAgICAgICAgaWYgKGtpbmQgIT0gUHlVbmljb2RlX1dDSEFSX0tJTkQpCkBAIC01ODksMTkgKzYxMywyMCBAQAogICAgICAgICB9CiAgICAgICAgIGVsc2UgaWYgKGNoIDw9IDB4ZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHgiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCAyKTsKICAgICAgICAgfQogICAgICAgICBlbHNlIGlmIChjaCA8PSAweGZmZmYpIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXHUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA0KTsKICAgICAgICAgfQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFBVVFMoZmQsICJcXFUiKTsKLSAgICAgICAgICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKKyAgICAgICAgICAgIF9QeV9EdW1wSGV4YWRlY2ltYWwoZmQsIGNoLCA4KTsKICAgICAgICAgfQogICAgIH0KLSAgICBpZiAodHJ1bmNhdGVkKQorICAgIGlmICh0cnVuY2F0ZWQpIHsKICAgICAgICAgUFVUUyhmZCwgIi4uLiIpOworICAgIH0KIH0KIAogLyogV3JpdGUgYSBmcmFtZSBpbnRvIHRoZSBmaWxlIGZkOiAiRmlsZSAieHh4IiwgbGluZSB4eHggaW4geHh4Ii4KQEAgLTYyMCw3ICs2NDUsNyBAQAogICAgICAgICAmJiBQeVVuaWNvZGVfQ2hlY2soY29kZS0+Y29fZmlsZW5hbWUpKQogICAgIHsKICAgICAgICAgUFVUUyhmZCwgIlwiIik7Ci0gICAgICAgIGR1bXBfYXNjaWkoZmQsIGNvZGUtPmNvX2ZpbGVuYW1lKTsKKyAgICAgICAgX1B5X0R1bXBBU0NJSShmZCwgY29kZS0+Y29fZmlsZW5hbWUpOwogICAgICAgICBQVVRTKGZkLCAiXCIiKTsKICAgICB9IGVsc2UgewogICAgICAgICBQVVRTKGZkLCAiPz8/Iik7CkBAIC02MjksMTQgKzY1NCwyMSBAQAogICAgIC8qIFB5RnJhbWVfR2V0TGluZU51bWJlcigpIHdhcyBpbnRyb2R1Y2VkIGluIFB5dGhvbiAyLjcuMCBhbmQgMy4yLjAgKi8KICAgICBsaW5lbm8gPSBQeUNvZGVfQWRkcjJMaW5lKGNvZGUsIGZyYW1lLT5mX2xhc3RpKTsKICAgICBQVVRTKGZkLCAiLCBsaW5lICIpOwotICAgIGR1bXBfZGVjaW1hbChmZCwgbGluZW5vKTsKKyAgICBpZiAobGluZW5vID49IDApIHsKKyAgICAgICAgX1B5X0R1bXBEZWNpbWFsKGZkLCAodW5zaWduZWQgbG9uZylsaW5lbm8pOworICAgIH0KKyAgICBlbHNlIHsKKyAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KICAgICBQVVRTKGZkLCAiIGluICIpOwogCiAgICAgaWYgKGNvZGUgIT0gTlVMTCAmJiBjb2RlLT5jb19uYW1lICE9IE5VTEwKLSAgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKQotICAgICAgICBkdW1wX2FzY2lpKGZkLCBjb2RlLT5jb19uYW1lKTsKLSAgICBlbHNlCisgICAgICAgJiYgUHlVbmljb2RlX0NoZWNrKGNvZGUtPmNvX25hbWUpKSB7CisgICAgICAgIF9QeV9EdW1wQVNDSUkoZmQsIGNvZGUtPmNvX25hbWUpOworICAgIH0KKyAgICBlbHNlIHsKICAgICAgICAgUFVUUyhmZCwgIj8/PyIpOworICAgIH0KIAogICAgIFBVVFMoZmQsICJcbiIpOwogfQpAQCAtNjkyLDcgKzcyNCw5IEBACiAgICAgICAgIFBVVFMoZmQsICJDdXJyZW50IHRocmVhZCAweCIpOwogICAgIGVsc2UKICAgICAgICAgUFVUUyhmZCwgIlRocmVhZCAweCIpOwotICAgIGR1bXBfaGV4YWRlY2ltYWwoZmQsICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLCBzaXplb2YodW5zaWduZWQgbG9uZykqMik7CisgICAgX1B5X0R1bXBIZXhhZGVjaW1hbChmZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKXRzdGF0ZS0+dGhyZWFkX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogMik7CiAgICAgUFVUUyhmZCwgIiAobW9zdCByZWNlbnQgY2FsbCBmaXJzdCk6XG4iKTsKIH0KIApAQCAtNzA0LDExICs3MzgsNTYgQEAKICAgIGhhbmRsZXJzIGlmIHNpZ25hbHMgd2VyZSByZWNlaXZlZC4gKi8KIGNvbnN0IGNoYXIqCiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoaW50IGZkLCBQeUludGVycHJldGVyU3RhdGUgKmludGVycCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RocmVhZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBQeVRocmVhZFN0YXRlICpjdXJyZW50X3RzdGF0ZSkKIHsKICAgICBQeVRocmVhZFN0YXRlICp0c3RhdGU7CiAgICAgdW5zaWduZWQgaW50IG50aHJlYWRzOwogCisjaWZkZWYgV0lUSF9USFJFQUQKKyAgICBpZiAoY3VycmVudF90c3RhdGUgPT0gTlVMTCkgeworICAgICAgICAvKiBfUHlfRHVtcFRyYWNlYmFja1RocmVhZHMoKSBpcyBjYWxsZWQgZnJvbSBzaWduYWwgaGFuZGxlcnMgYnkKKyAgICAgICAgICAgZmF1bHRoYW5kbGVyLgorCisgICAgICAgICAgIFNJR1NFR1YsIFNJR0ZQRSwgU0lHQUJSVCwgU0lHQlVTIGFuZCBTSUdJTEwgYXJlIHN5bmNocm9ub3VzIHNpZ25hbHMKKyAgICAgICAgICAgYW5kIGFyZSB0aHVzIGRlbGl2ZXJlZCB0byB0aGUgdGhyZWFkIHRoYXQgY2F1c2VkIHRoZSBmYXVsdC4gR2V0IHRoZQorICAgICAgICAgICBQeXRob24gdGhyZWFkIHN0YXRlIG9mIHRoZSBjdXJyZW50IHRocmVhZC4KKworICAgICAgICAgICBQeVRocmVhZFN0YXRlX0dldCgpIGRvZXNuJ3QgZ2l2ZSB0aGUgc3RhdGUgb2YgdGhlIHRocmVhZCB0aGF0IGNhdXNlZAorICAgICAgICAgICB0aGUgZmF1bHQgaWYgdGhlIHRocmVhZCByZWxlYXNlZCB0aGUgR0lMLCBhbmQgc28gdGhpcyBmdW5jdGlvbgorICAgICAgICAgICBjYW5ub3QgYmUgdXNlZC4gUmVhZCB0aGUgdGhyZWFkIGxvY2FsIHN0b3JhZ2UgKFRMUykgaW5zdGVhZDogY2FsbAorICAgICAgICAgICBQeUdJTFN0YXRlX0dldFRoaXNUaHJlYWRTdGF0ZSgpLiAqLworICAgICAgICBjdXJyZW50X3RzdGF0ZSA9IFB5R0lMU3RhdGVfR2V0VGhpc1RocmVhZFN0YXRlKCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICBpbnRlcnAgPSBfUHlHSUxTdGF0ZV9HZXRJbnRlcnByZXRlclN0YXRlVW5zYWZlKCk7CisgICAgICAgICAgICBpZiAoaW50ZXJwID09IE5VTEwpIHsKKyAgICAgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgICAgICByZXR1cm4gInVuYWJsZSB0byBnZXQgdGhlIGludGVycHJldGVyIHN0YXRlIjsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgICAgIH0KKyAgICB9CisjZWxzZQorICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgIC8qIENhbGwgX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCkgaW5zdGVhZCBvZiBQeVRocmVhZFN0YXRlX0dldCgpCisgICAgICAgICAgIHRvIG5vdCBmYWlsIHdpdGggYSBmYXRhbCBlcnJvciBpZiB0aGUgdGhyZWFkIHN0YXRlIGlzIE5VTEwuICovCisgICAgICAgIGN1cnJlbnRfdHN0YXRlID0gX1B5VGhyZWFkU3RhdGVfVW5jaGVja2VkR2V0KCk7CisgICAgfQorCisgICAgaWYgKGludGVycCA9PSBOVUxMKSB7CisgICAgICAgIGlmIChjdXJyZW50X3RzdGF0ZSA9PSBOVUxMKSB7CisgICAgICAgICAgICAvKiBXZSBuZWVkIHRoZSBpbnRlcnByZXRlciBzdGF0ZSB0byBnZXQgUHl0aG9uIHRocmVhZHMgKi8KKyAgICAgICAgICAgIHJldHVybiAidW5hYmxlIHRvIGdldCB0aGUgaW50ZXJwcmV0ZXIgc3RhdGUiOworICAgICAgICB9CisgICAgICAgIGludGVycCA9IGN1cnJlbnRfdHN0YXRlLT5pbnRlcnA7CisgICAgfQorI2VuZGlmCisgICAgYXNzZXJ0KGludGVycCAhPSBOVUxMKTsKKwogICAgIC8qIEdldCB0aGUgY3VycmVudCBpbnRlcnByZXRlciBmcm9tIHRoZSBjdXJyZW50IHRocmVhZCAqLwogICAgIHRzdGF0ZSA9IFB5SW50ZXJwcmV0ZXJTdGF0ZV9UaHJlYWRIZWFkKGludGVycCk7CiAgICAgaWYgKHRzdGF0ZSA9PSBOVUxMKQpAQCAtNzI2LDcgKzgwNSw3IEBACiAgICAgICAgICAgICBQVVRTKGZkLCAiLi4uXG4iKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9Ci0gICAgICAgIHdyaXRlX3RocmVhZF9pZChmZCwgdHN0YXRlLCB0c3RhdGUgPT0gY3VycmVudF90aHJlYWQpOworICAgICAgICB3cml0ZV90aHJlYWRfaWQoZmQsIHRzdGF0ZSwgdHN0YXRlID09IGN1cnJlbnRfdHN0YXRlKTsKICAgICAgICAgZHVtcF90cmFjZWJhY2soZmQsIHRzdGF0ZSwgMCk7CiAgICAgICAgIHRzdGF0ZSA9IFB5VGhyZWFkU3RhdGVfTmV4dCh0c3RhdGUpOwogICAgICAgICBudGhyZWFkcysrOwpkaWZmIC0tZ2l0IGEvUHl0aG9uL3dvcmRjb2RlX2hlbHBlcnMuaCBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBlM2E5MQotLS0gL2Rldi9udWxsCisrKyBiL1B5dGhvbi93b3JkY29kZV9oZWxwZXJzLmgKQEAgLTAsMCArMSw0MSBAQAorLyogVGhpcyBmaWxlIGNvbnRhaW5zIGNvZGUgc2hhcmVkIGJ5IHRoZSBjb21waWxlciBhbmQgdGhlIHBlZXBob2xlCisgICBvcHRpbWl6ZXIuCisgKi8KKworI2lmZGVmIFdPUkRTX0JJR0VORElBTgorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGNvZGUpIDw8IDgpIHwgKG9wYXJnKSkpCisjZWxzZQorIyAgZGVmaW5lIFBBQ0tPUEFSRyhvcGNvZGUsIG9wYXJnKSAoKF9QeV9DT0RFVU5JVCkoKChvcGFyZykgPDwgOCkgfCAob3Bjb2RlKSkpCisjZW5kaWYKKworLyogTWluaW11bSBudW1iZXIgb2YgY29kZSB1bml0cyBuZWNlc3NhcnkgdG8gZW5jb2RlIGluc3RydWN0aW9uIHdpdGgKKyAgIEVYVEVOREVEX0FSR3MgKi8KK3N0YXRpYyBpbnQKK2luc3Ryc2l6ZSh1bnNpZ25lZCBpbnQgb3BhcmcpCit7CisgICAgcmV0dXJuIG9wYXJnIDw9IDB4ZmYgPyAxIDoKKyAgICAgICAgb3BhcmcgPD0gMHhmZmZmID8gMiA6CisgICAgICAgIG9wYXJnIDw9IDB4ZmZmZmZmID8gMyA6CisgICAgICAgIDQ7Cit9CisKKy8qIFNwaXRzIG91dCBvcC9vcGFyZyBwYWlyIHVzaW5nIGlsZW4gYnl0ZXMuIGNvZGVzdHIgc2hvdWxkIGJlIHBvaW50ZWQgYXQgdGhlCisgICBkZXNpcmVkIGxvY2F0aW9uIG9mIHRoZSBmaXJzdCBFWFRFTkRFRF9BUkcgKi8KK3N0YXRpYyB2b2lkCit3cml0ZV9vcF9hcmcoX1B5X0NPREVVTklUICpjb2Rlc3RyLCB1bnNpZ25lZCBjaGFyIG9wY29kZSwKKyAgICB1bnNpZ25lZCBpbnQgb3BhcmcsIGludCBpbGVuKQoreworICAgIHN3aXRjaCAoaWxlbikgeworICAgICAgICBjYXNlIDQ6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDI0KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDM6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDE2KSAmIDB4ZmYpOworICAgICAgICBjYXNlIDI6CisgICAgICAgICAgICAqY29kZXN0cisrID0gUEFDS09QQVJHKEVYVEVOREVEX0FSRywgKG9wYXJnID4+IDgpICYgMHhmZik7CisgICAgICAgIGNhc2UgMToKKyAgICAgICAgICAgICpjb2Rlc3RyKysgPSBQQUNLT1BBUkcob3Bjb2RlLCBvcGFyZyAmIDB4ZmYpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgICBhc3NlcnQoMCk7CisgICAgfQorfQpkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IDQxNGI2NTguLjA5YjhiMzQgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNSArMSw1IEBACi1UaGlzIGlzIFB5dGhvbiB2ZXJzaW9uIDMuNS4zIHJlbGVhc2UgY2FuZGlkYXRlIDEKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorVGhpcyBpcyBQeXRob24gdmVyc2lvbiAzLjYuMCBiZXRhIDIKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAKIENvcHlyaWdodCAoYykgMjAwMSwgMjAwMiwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwKIDIwMTIsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYgUHl0aG9uIFNvZnR3YXJlIEZvdW5kYXRpb24uICBBbGwgcmlnaHRzIHJlc2VydmVkLgpAQCAtMjgsOSArMjgsOSBAQAogZWxzZXdoZXJlIGl0J3MganVzdCBweXRob24uCiAKIE9uIE1hYyBPUyBYLCBpZiB5b3UgaGF2ZSBjb25maWd1cmVkIFB5dGhvbiB3aXRoIC0tZW5hYmxlLWZyYW1ld29yaywgeW91IHNob3VsZAotdXNlICJtYWtlIGZyYW1ld29ya2luc3RhbGwiIHRvIGRvIHRoZSBpbnN0YWxsYXRpb24uICBOb3RlIHRoYXQgdGhpcyBpbnN0YWxscwotdGhlIFB5dGhvbiBleGVjdXRhYmxlIGluIGEgcGxhY2UgdGhhdCBpcyBub3Qgbm9ybWFsbHkgb24geW91ciBQQVRILCB5b3UgbWF5Ci13YW50IHRvIHNldCB1cCBhIHN5bWxpbmsgaW4gL3Vzci9sb2NhbC9iaW4uCit1c2UgIm1ha2UgZnJhbWV3b3JraW5zdGFsbCIgdG8gZG8gdGhlIGluc3RhbGxhdGlvbi4gIE5vdGUgdGhhdCB0aGlzIGluc3RhbGxzIHRoZQorUHl0aG9uIGV4ZWN1dGFibGUgaW4gYSBwbGFjZSB0aGF0IGlzIG5vdCBub3JtYWxseSBvbiB5b3VyIFBBVEgsIHlvdSBtYXkgd2FudCB0bworc2V0IHVwIGEgc3ltbGluayBpbiAvdXNyL2xvY2FsL2Jpbi4KIAogT24gV2luZG93cywgc2VlIFBDYnVpbGQvcmVhZG1lLnR4dC4KIApAQCAtODksOSArODksOSBAQAogLS0tLS0tLS0tLQogCiBXZSBoYXZlIGEgY29tcHJlaGVuc2l2ZSBvdmVydmlldyBvZiB0aGUgY2hhbmdlcyBpbiB0aGUgIldoYXQncyBOZXcgaW4KLVB5dGhvbiAzLjUiIGRvY3VtZW50LCBmb3VuZCBhdAorUHl0aG9uIDMuNiIgZG9jdW1lbnQsIGZvdW5kIGF0CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS93aGF0c25ldy8zLjUuaHRtbAorICAgIGh0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuNi93aGF0c25ldy8zLjYuaHRtbAogCiBGb3IgYSBtb3JlIGRldGFpbGVkIGNoYW5nZSBsb2csIHJlYWQgTWlzYy9ORVdTICh0aG91Z2ggdGhpcyBmaWxlLCB0b28sCiBpcyBpbmNvbXBsZXRlLCBhbmQgYWxzbyBkb2Vzbid0IGxpc3QgYW55dGhpbmcgbWVyZ2VkIGluIGZyb20gdGhlIDIuNwpAQCAtMTA0LDkgKzEwNCw5IEBACiBEb2N1bWVudGF0aW9uCiAtLS0tLS0tLS0tLS0tCiAKLURvY3VtZW50YXRpb24gZm9yIFB5dGhvbiAzLjUgaXMgb25saW5lLCB1cGRhdGVkIGRhaWx5OgorRG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIDMuNiBpcyBvbmxpbmUsIHVwZGF0ZWQgZGFpbHk6CiAKLSAgICBodHRwOi8vZG9jcy5weXRob24ub3JnLzMuNS8KKyAgICBodHRwczovL2RvY3MucHl0aG9uLm9yZy8zLjYvCiAKIEl0IGNhbiBhbHNvIGJlIGRvd25sb2FkZWQgaW4gbWFueSBmb3JtYXRzIGZvciBmYXN0ZXIgYWNjZXNzLiAgVGhlIGRvY3VtZW50YXRpb24KIGlzIGRvd25sb2FkYWJsZSBpbiBIVE1MLCBQREYsIGFuZCByZVN0cnVjdHVyZWRUZXh0IGZvcm1hdHM7IHRoZSBsYXR0ZXIgdmVyc2lvbgpAQCAtMTE2LDcgKzExNiw3IEBACiBJZiB5b3Ugd291bGQgbGlrZSB0byBjb250cmlidXRlIHRvIHRoZSBkZXZlbG9wbWVudCBvZiBQeXRob24sIHJlbGV2YW50CiBkb2N1bWVudGF0aW9uIGlzIGF2YWlsYWJsZSBhdDoKIAotICAgIGh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCisgICAgaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvZGV2Z3VpZGUvCiAKIEZvciBpbmZvcm1hdGlvbiBhYm91dCBidWlsZGluZyBQeXRob24ncyBkb2N1bWVudGF0aW9uLCByZWZlciB0byBEb2MvUkVBRE1FLnR4dC4KIApAQCAtMTMxLDcgKzEzMSw3IEBACiBBIHNvdXJjZS10by1zb3VyY2UgdHJhbnNsYXRpb24gdG9vbCwgIjJ0bzMiLCBjYW4gdGFrZSBjYXJlIG9mIHRoZSBtdW5kYW5lIHRhc2sKIG9mIGNvbnZlcnRpbmcgbGFyZ2UgYW1vdW50cyBvZiBzb3VyY2UgY29kZS4gIEl0IGlzIG5vdCBhIGNvbXBsZXRlIHNvbHV0aW9uIGJ1dAogaXMgY29tcGxlbWVudGVkIGJ5IHRoZSBkZXByZWNhdGlvbiB3YXJuaW5ncyBpbiAyLjYuICBTZWUKLWh0dHA6Ly9kb2NzLnB5dGhvbi5vcmcvMy41L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgoraHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy42L2xpYnJhcnkvMnRvMy5odG1sIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCiAKIFRlc3RpbmcKQEAgLTE2MSwxNiArMTYxLDE2IEBACiAKIE9uIFVuaXggYW5kIE1hYyBzeXN0ZW1zIGlmIHlvdSBpbnRlbmQgdG8gaW5zdGFsbCBtdWx0aXBsZSB2ZXJzaW9ucyBvZiBQeXRob24KIHVzaW5nIHRoZSBzYW1lIGluc3RhbGxhdGlvbiBwcmVmaXggKC0tcHJlZml4IGFyZ3VtZW50IHRvIHRoZSBjb25maWd1cmUgc2NyaXB0KQoteW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieQotdGhlIGluc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQKLXVzaW5nICJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCi1zaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycwotdG8gJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcKLXRoZSBzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IgotdmVyc2lvbi4gIEluc3RhbGwgdGhhdCB2ZXJzaW9uIHVzaW5nICJtYWtlIGluc3RhbGwiLiAgSW5zdGFsbCBhbGwgb3RoZXIKLXZlcnNpb25zIHVzaW5nICJtYWtlIGFsdGluc3RhbGwiLgoreW91IG11c3QgdGFrZSBjYXJlIHRoYXQgeW91ciBwcmltYXJ5IHB5dGhvbiBleGVjdXRhYmxlIGlzIG5vdCBvdmVyd3JpdHRlbiBieSB0aGUKK2luc3RhbGxhdGlvbiBvZiBhIGRpZmZlcmVudCB2ZXJzaW9uLiAgQWxsIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBpbnN0YWxsZWQgdXNpbmcKKyJtYWtlIGFsdGluc3RhbGwiIGNvbnRhaW4gdGhlIG1ham9yIGFuZCBtaW5vciB2ZXJzaW9uIGFuZCBjYW4gdGh1cyBsaXZlCitzaWRlLWJ5LXNpZGUuICAibWFrZSBpbnN0YWxsIiBhbHNvIGNyZWF0ZXMgJHtwcmVmaXh9L2Jpbi9weXRob24zIHdoaWNoIHJlZmVycyB0bworJHtwcmVmaXh9L2Jpbi9weXRob25YLlkuICBJZiB5b3UgaW50ZW5kIHRvIGluc3RhbGwgbXVsdGlwbGUgdmVyc2lvbnMgdXNpbmcgdGhlCitzYW1lIHByZWZpeCB5b3UgbXVzdCBkZWNpZGUgd2hpY2ggdmVyc2lvbiAoaWYgYW55KSBpcyB5b3VyICJwcmltYXJ5IiB2ZXJzaW9uLgorSW5zdGFsbCB0aGF0IHZlcnNpb24gdXNpbmcgIm1ha2UgaW5zdGFsbCIuICBJbnN0YWxsIGFsbCBvdGhlciB2ZXJzaW9ucyB1c2luZworIm1ha2UgYWx0aW5zdGFsbCIuCiAKLUZvciBleGFtcGxlLCBpZiB5b3Ugd2FudCB0byBpbnN0YWxsIFB5dGhvbiAyLjYsIDIuNyBhbmQgMy41IHdpdGggMi43IGJlaW5nIHRoZQorRm9yIGV4YW1wbGUsIGlmIHlvdSB3YW50IHRvIGluc3RhbGwgUHl0aG9uIDIuNiwgMi43IGFuZCAzLjYgd2l0aCAyLjcgYmVpbmcgdGhlCiBwcmltYXJ5IHZlcnNpb24sIHlvdSB3b3VsZCBleGVjdXRlICJtYWtlIGluc3RhbGwiIGluIHlvdXIgMi43IGJ1aWxkIGRpcmVjdG9yeQogYW5kICJtYWtlIGFsdGluc3RhbGwiIGluIHRoZSBvdGhlcnMuCiAKQEAgLTE4MSw3ICsxODEsNyBAQAogV2UncmUgc29saWNpdGluZyBidWcgcmVwb3J0cyBhYm91dCBhbGwgYXNwZWN0cyBvZiB0aGUgbGFuZ3VhZ2UuICBGaXhlcyBhcmUgYWxzbwogd2VsY29tZSwgcHJlZmVyYWJseSBpbiB1bmlmaWVkIGRpZmYgZm9ybWF0LiAgUGxlYXNlIHVzZSB0aGUgaXNzdWUgdHJhY2tlcjoKIAotICAgIGh0dHA6Ly9idWdzLnB5dGhvbi5vcmcvCisgICAgaHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvCiAKIElmIHlvdSdyZSBub3Qgc3VyZSB3aGV0aGVyIHlvdSdyZSBkZWFsaW5nIHdpdGggYSBidWcgb3IgYSBmZWF0dXJlLCB1c2UgdGhlCiBtYWlsaW5nIGxpc3Q6CkBAIC0xOTAsMjMgKzE5MCwyMyBAQAogCiBUbyBzdWJzY3JpYmUgdG8gdGhlIGxpc3QsIHVzZSB0aGUgbWFpbG1hbiBmb3JtOgogCi0gICAgaHR0cDovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1kZXYvCisgICAgaHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tZGV2LwogCiAKIFByb3Bvc2FscyBmb3IgZW5oYW5jZW1lbnQKIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIAogSWYgeW91IGhhdmUgYSBwcm9wb3NhbCB0byBjaGFuZ2UgUHl0aG9uLCB5b3UgbWF5IHdhbnQgdG8gc2VuZCBhbiBlbWFpbCB0byB0aGUKLWNvbXAubGFuZy5weXRob24gb3IgcHl0aG9uLWlkZWFzIG1haWxpbmcgbGlzdHMgZm9yIGluaXRhbCBmZWVkYmFjay4gIEEgUHl0aG9uCitjb21wLmxhbmcucHl0aG9uIG9yIHB5dGhvbi1pZGVhcyBtYWlsaW5nIGxpc3RzIGZvciBpbml0aWFsIGZlZWRiYWNrLiAgQSBQeXRob24KIEVuaGFuY2VtZW50IFByb3Bvc2FsIChQRVApIG1heSBiZSBzdWJtaXR0ZWQgaWYgeW91ciBpZGVhIGdhaW5zIGdyb3VuZC4gIEFsbAogY3VycmVudCBQRVBzLCBhcyB3ZWxsIGFzIGd1aWRlbGluZXMgZm9yIHN1Ym1pdHRpbmcgYSBuZXcgUEVQLCBhcmUgbGlzdGVkIGF0Ci1odHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvLgoraHR0cHM6Ly93d3cucHl0aG9uLm9yZy9kZXYvcGVwcy8uCiAKIAogUmVsZWFzZSBTY2hlZHVsZQogLS0tLS0tLS0tLS0tLS0tLQogCi1TZWUgUEVQIDQ3OCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwOi8vd3d3LnB5dGhvbi5vcmcvZGV2L3BlcHMvcGVwLTA0NzgvCitTZWUgUEVQIDQ5NCBmb3IgcmVsZWFzZSBkZXRhaWxzOiBodHRwczovL3d3dy5weXRob24ub3JnL2Rldi9wZXBzL3BlcC0wNDk0LwogCiAKIENvcHlyaWdodCBhbmQgTGljZW5zZSBJbmZvcm1hdGlvbgpAQCAtMjMwLDMgKzIzMCw0IEBACiBjb2RlIGJ1dCB0aGVzZSBhcmUgZW50aXJlbHkgb3B0aW9uYWwuCiAKIEFsbCB0cmFkZW1hcmtzIHJlZmVyZW5jZWQgaGVyZWluIGFyZSBwcm9wZXJ0eSBvZiB0aGVpciByZXNwZWN0aXZlIGhvbGRlcnMuCisKZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L2J1aWxkLWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjc3NDA3Yi4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC9idWlsZC1hbWQ2NC5iYXQKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLUByZW0gRm9ybWVybHkgdXNlZCBieSB0aGUgYnVpbGRib3QgImNvbXBpbGUiIHN0ZXAuDQotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gVG8gZ2V0IHRoZSBzYW1lIGVmZmVjdCBhcyB0aGlzIHNjcmlwdCwgdXNlDQotQGVjaG8gICAgIFBDYnVpbGRcYnVpbGQuYmF0IC1kIC1lIC1rIC1wIHg2NA0KLWNhbGwgIiV+ZHAwYnVpbGQuYmF0IiAtcCB4NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC9jbGVhbi1hbWQ2NC5iYXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1M2M3YzEuLjAwMDAwMDAKLS0tIGEvVG9vbHMvYnVpbGRib3QvY2xlYW4tYW1kNjQuYmF0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi1AcmVtIEZvcm1lcmx5IHVzZWQgYnkgdGhlIGJ1aWxkYm90ICJjbGVhbiIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UgYGNsZWFuLmJhdGAgZnJvbSB0aGlzDQotQGVjaG8gZGlyZWN0b3J5IGFuZCBwYXNzIGAtcCB4NjRgIGFzIHR3byBhcmd1bWVudHMuDQotY2FsbCAiJX5kcDBjbGVhbi5iYXQiIC1wIHg2NCAlKg0KZGlmZiAtLWdpdCBhL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdCBiL1Rvb2xzL2J1aWxkYm90L2NsZWFuLmJhdAppbmRleCAwZmM2OGZkLi4xM2U2Njc5IDEwMDY0NAotLS0gYS9Ub29scy9idWlsZGJvdC9jbGVhbi5iYXQKKysrIGIvVG9vbHMvYnVpbGRib3QvY2xlYW4uYmF0CkBAIC0xNCwzICsxNCw0IEBACiANCiBlY2hvIERlbGV0aW5nIHRlc3QgbGVmdG92ZXJzIC4uLg0KIHJtZGlyIC9zIC9xICIlcm9vdCVcYnVpbGQiDQorZGVsIC9zICIlcGNidWlsZCVccHl0aG9uKi56aXAiDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwtYW1kNjQuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0IGIvVG9vbHMvYnVpbGRib3QvZXh0ZXJuYWwuYmF0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmFlZjA1Li4wMDAwMDAwCi0tLSBhL1Rvb2xzL2J1aWxkYm90L2V4dGVybmFsLmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotQGVjaG8gVGhpcyBzY3JpcHQgaXMgbm8gbG9uZ2VyIHVzZWQgYW5kIG1heSBiZSByZW1vdmVkIGluIHRoZSBmdXR1cmUuDQotQGVjaG8gUGxlYXNlIHVzZSBQQ2J1aWxkXGdldF9leHRlcm5hbHMuYmF0IGluc3RlYWQuDQotQCIlfmRwMC4uXC4uXFBDYnVpbGRcZ2V0X2V4dGVybmFscy5iYXQiICUqDQpkaWZmIC0tZ2l0IGEvVG9vbHMvYnVpbGRib3QvdGVzdC1hbWQ2NC5iYXQgYi9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ4MzI5Yy4uMDAwMDAwMAotLS0gYS9Ub29scy9idWlsZGJvdC90ZXN0LWFtZDY0LmJhdAorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotQHJlbSBGb3JtZXJseSB1c2VkIGJ5IHRoZSBidWlsZGJvdCAidGVzdCIgc3RlcC4NCi1AZWNobyBUaGlzIHNjcmlwdCBpcyBubyBsb25nZXIgdXNlZCBhbmQgbWF5IGJlIHJlbW92ZWQgaW4gdGhlIGZ1dHVyZS4NCi1AZWNobyBUbyBnZXQgdGhlIHNhbWUgZWZmZWN0IGFzIHRoaXMgc2NyaXB0LCB1c2UNCi1AZWNobyAgICAgUENidWlsZFxydC5iYXQgLXEgLWQgLXg2NCAtdWFsbCAtcndXDQotQGVjaG8gb3IgdXNlIGB0ZXN0LmJhdGAgaW4gdGhpcyBkaXJlY3RvcnkgYW5kIHBhc3MgYC14NjRgIGFzIGFuIGFyZ3VtZW50Lg0KLWNhbGwgIiV+ZHAwdGVzdC5iYXQiIC14NjQgJSoNCmRpZmYgLS1naXQgYS9Ub29scy9idWlsZGJvdC90ZXN0LmJhdCBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CmluZGV4IGZmN2QxNjcuLmEzMmQzOGIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CisrKyBiL1Rvb2xzL2J1aWxkYm90L3Rlc3QuYmF0CkBAIC00LDcgKzQsNyBAQAogDQogc2V0IGhlcmU9JX5kcDANCiBzZXQgcnRfb3B0cz0tcSAtZA0KLXNldCByZWdydGVzdF9hcmdzPQ0KK3NldCByZWdydGVzdF9hcmdzPS1qMQ0KIA0KIDpDaGVja09wdHMNCiBpZiAiJTEiPT0iLXg2NCIgKHNldCBydF9vcHRzPSVydF9vcHRzJSAlMSkgJiBzaGlmdCAmIGdvdG8gQ2hlY2tPcHRzDQpAQCAtMTYsNCArMTYsNCBAQAogaWYgTk9UICIlMSI9PSIiIChzZXQgcmVncnRlc3RfYXJncz0lcmVncnRlc3RfYXJncyUgJTEpICYgc2hpZnQgJiBnb3RvIENoZWNrT3B0cw0KIA0KIGVjaG8gb24NCi1jYWxsICIlaGVyZSUuLlwuLlxQQ2J1aWxkXHJ0LmJhdCIgJXJ0X29wdHMlIC11YWxsIC1yd1cgLS10aW1lb3V0PTM2MDAgJXJlZ3J0ZXN0X2FyZ3MlDQorY2FsbCAiJWhlcmUlLi5cLi5cUENidWlsZFxydC5iYXQiICVydF9vcHRzJSAtdWFsbCAtcndXIC0tc2xvd2VzdCAtLXRpbWVvdXQ9MTIwMCAlcmVncnRlc3RfYXJncyUNCmRpZmYgLS1naXQgYS9Ub29scy9jbGluaWMvY2xpbmljLnB5IGIvVG9vbHMvY2xpbmljL2NsaW5pYy5weQppbmRleCBmNjE1ZWQ5Li43NWFjNjczIDEwMDc1NQotLS0gYS9Ub29scy9jbGluaWMvY2xpbmljLnB5CisrKyBiL1Rvb2xzL2NsaW5pYy9jbGluaWMucHkKQEAgLTY0NCw3ICs2NDQsNyBAQAogICAgICAgICBkZWZhdWx0X3JldHVybl9jb252ZXJ0ZXIgPSAobm90IGYucmV0dXJuX2NvbnZlcnRlciBvcgogICAgICAgICAgICAgZi5yZXR1cm5fY29udmVydGVyLnR5cGUgPT0gJ1B5T2JqZWN0IConKQogCi0gICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCAocGFyYW1ldGVyc1stMV0ua2luZCA9PSBpbnNwZWN0LlBhcmFtZXRlci5QT1NJVElPTkFMX09OTFkpCisgICAgICAgIHBvc2l0aW9uYWwgPSBwYXJhbWV0ZXJzIGFuZCBwYXJhbWV0ZXJzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBhbGxfYm9yaW5nX29iamVjdHMgPSBGYWxzZSAjIHllcywgdGhpcyB3aWxsIGJlIGZhbHNlIGlmIHRoZXJlIGFyZSAwIHBhcmFtZXRlcnMsIGl0J3MgZmluZQogICAgICAgICBmaXJzdF9vcHRpb25hbCA9IGxlbihwYXJhbWV0ZXJzKQogICAgICAgICBmb3IgaSwgcCBpbiBlbnVtZXJhdGUocGFyYW1ldGVycyk6CkBAIC02NjEsNyArNjYxLDcgQEAKICAgICAgICAgbmV3X29yX2luaXQgPSBmLmtpbmQgaW4gKE1FVEhPRF9ORVcsIE1FVEhPRF9JTklUKQogCiAgICAgICAgIG1ldGhfbyA9IChsZW4ocGFyYW1ldGVycykgPT0gMSBhbmQKLSAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWSBhbmQKKyAgICAgICAgICAgICAgcGFyYW1ldGVyc1swXS5pc19wb3NpdGlvbmFsX29ubHkoKSBhbmQKICAgICAgICAgICAgICAgbm90IGNvbnZlcnRlcnNbMF0uaXNfb3B0aW9uYWwoKSBhbmQKICAgICAgICAgICAgICAgbm90IG5ld19vcl9pbml0KQogCkBAIC03MDUsNiArNzA1LDExIEBACiAgICAgICAgICAgICB7Y19iYXNlbmFtZX0oe3NlbGZfdHlwZX17c2VsZl9uYW1lfSwgUHlPYmplY3QgKmFyZ3MsIFB5T2JqZWN0ICprd2FyZ3MpCiAgICAgICAgICAgICAiIiIpCiAKKyAgICAgICAgcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbCA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgorICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKKyAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqKmFyZ3MsIFB5X3NzaXplX3QgbmFyZ3MsIFB5T2JqZWN0ICprd25hbWVzKQorICAgICAgICAgICAgIiIiKQorCiAgICAgICAgIHBhcnNlcl9wcm90b3R5cGVfdmFyYXJncyA9IG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgogICAgICAgICAgICAgc3RhdGljIFB5T2JqZWN0ICoKICAgICAgICAgICAgIHtjX2Jhc2VuYW1lfSh7c2VsZl90eXBlfXtzZWxmX25hbWV9LCBQeU9iamVjdCAqYXJncykKQEAgLTc0Myw3ICs3NDgsMTAgQEAKICAgICAgICAgICAgIHJldHVybiBvdXRwdXQoKQogCiAgICAgICAgIGRlZiBpbnNlcnRfa2V5d29yZHMocyk6Ci0gICAgICAgICAgICByZXR1cm4gbGluZWFyX2Zvcm1hdChzLCBkZWNsYXJhdGlvbnM9InN0YXRpYyBjaGFyICpfa2V5d29yZHNbXSA9IHt7e2tleXdvcmRzfSwgTlVMTH19O1xue2RlY2xhcmF0aW9uc30iKQorICAgICAgICAgICAgcmV0dXJuIGxpbmVhcl9mb3JtYXQocywgZGVjbGFyYXRpb25zPQorICAgICAgICAgICAgICAgICdzdGF0aWMgY29uc3QgY2hhciAqIGNvbnN0IF9rZXl3b3Jkc1tdID0ge3t7a2V5d29yZHN9LCBOVUxMfX07XG4nCisgICAgICAgICAgICAgICAgJ3N0YXRpYyBfUHlBcmdfUGFyc2VyIF9wYXJzZXIgPSB7eyJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsIDB9fTtcbicKKyAgICAgICAgICAgICAgICAne2RlY2xhcmF0aW9uc30nKQogCiAgICAgICAgIGlmIG5vdCBwYXJhbWV0ZXJzOgogICAgICAgICAgICAgIyBubyBwYXJhbWV0ZXJzLCBNRVRIX05PQVJHUwpAQCAtNzk3LDggKzgwNSw5IEBACiAgICAgICAgICAgICAgICAgICAgICIiIiAlIGFyZ25hbWUpCiAKICAgICAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIG5vcm1hbGl6ZV9zbmlwcGV0KCIiIgotICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlKCVzLCAie2Zvcm1hdF91bml0c306e25hbWV9Iiwge3BhcnNlX2FyZ3VtZW50c30pKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIgJSBhcmduYW1lLCBpbmRlbnQ9NCkpCiAKICAgICAgICAgZWxpZiBoYXNfb3B0aW9uX2dyb3VwczoKQEAgLTgyMiw4ICs4MzEsOSBAQAogICAgICAgICAgICAgcGFyc2VyX2RlZmluaXRpb24gPSBwYXJzZXJfYm9keShwYXJzZXJfcHJvdG90eXBlLCBub3JtYWxpemVfc25pcHBldCgiIiIKICAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1VucGFja1R1cGxlKGFyZ3MsICJ7bmFtZX0iLAogICAgICAgICAgICAgICAgICAgICB7dW5wYWNrX21pbn0sIHt1bnBhY2tfbWF4fSwKLSAgICAgICAgICAgICAgICAgICAge3BhcnNlX2FyZ3VtZW50c30pKQorICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKKyAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgIGVsaWYgcG9zaXRpb25hbDoKQEAgLTgzNSwxMCArODQ1LDI0IEBACiAKICAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCiAgICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CiAgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkpCiAKKyAgICAgICAgZWxpZiBub3QgbmV3X29yX2luaXQ6CisgICAgICAgICAgICBmbGFncyA9ICJNRVRIX0ZBU1RDQUxMIgorCisgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9mYXN0Y2FsbAorCisgICAgICAgICAgICBib2R5ID0gbm9ybWFsaXplX3NuaXBwZXQoIiIiCisgICAgICAgICAgICAgICAgaWYgKCFfUHlBcmdfUGFyc2VTdGFjayhhcmdzLCBuYXJncywga3duYW1lcywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKKyAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgIH19CisgICAgICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgYm9keSkKKyAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gaW5zZXJ0X2tleXdvcmRzKHBhcnNlcl9kZWZpbml0aW9uKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgIyBwb3NpdGlvbmFsLW9yLWtleXdvcmQgYXJndW1lbnRzCiAgICAgICAgICAgICBmbGFncyA9ICJNRVRIX1ZBUkFSR1N8TUVUSF9LRVlXT1JEUyIKQEAgLTg0NiwxNSArODcwLDEyIEBACiAgICAgICAgICAgICBwYXJzZXJfcHJvdG90eXBlID0gcGFyc2VyX3Byb3RvdHlwZV9rZXl3b3JkCiAKICAgICAgICAgICAgIGJvZHkgPSBub3JtYWxpemVfc25pcHBldCgiIiIKLSAgICAgICAgICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGVBbmRLZXl3b3JkcyhhcmdzLCBrd2FyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCBfa2V5d29yZHMsCi0gICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgICAgICAgICBpZiAoIV9QeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHNGYXN0KGFyZ3MsIGt3YXJncywgJl9wYXJzZXIsCisgICAgICAgICAgICAgICAgICAgIHtwYXJzZV9hcmd1bWVudHN9KSkge3sKICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OwotICAgICAgICAgICAgIiIiLCBpbmRlbnQ9NCkKLSAgICAgICAgICAgIHBhcnNlcl9kZWZpbml0aW9uID0gcGFyc2VyX2JvZHkocGFyc2VyX3Byb3RvdHlwZSwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlQW5kS2V5d29yZHMoYXJncywga3dhcmdzLCAie2Zvcm1hdF91bml0c306e25hbWV9IiwgX2tleXdvcmRzLAotICAgICAgICAgICAgICAgICAgICB7cGFyc2VfYXJndW1lbnRzfSkpCi0gICAgICAgICAgICAgICAgICAgIGdvdG8gZXhpdDsKLSAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKKyAgICAgICAgICAgICAgICB9fQorICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpCisgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsIGJvZHkpCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IGluc2VydF9rZXl3b3JkcyhwYXJzZXJfZGVmaW5pdGlvbikKIAogCkBAIC04NzgsMTMgKzg5OSwxNSBAQAogCiAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX2tleXdvcmRzOgogICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgIGlmICh7c2VsZl90eXBlX2NoZWNrfSFfUHlBcmdfTm9LZXl3b3Jkcygie25hbWV9Iiwga3dhcmdzKSkKKyAgICAgICAgICAgICAgICAgICAgaWYgKHtzZWxmX3R5cGVfY2hlY2t9IV9QeUFyZ19Ob0tleXdvcmRzKCJ7bmFtZX0iLCBrd2FyZ3MpKSB7ewogICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICB9fQogICAgICAgICAgICAgICAgICAgICAiIiIsIGluZGVudD00KSkKICAgICAgICAgICAgICAgICBpZiBub3QgcGFyc2VzX3Bvc2l0aW9uYWw6CiAgICAgICAgICAgICAgICAgICAgIGZpZWxkcy5pbnNlcnQoMCwgbm9ybWFsaXplX3NuaXBwZXQoIiIiCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpCisgICAgICAgICAgICAgICAgICAgICAgICBpZiAoe3NlbGZfdHlwZV9jaGVja30hX1B5QXJnX05vUG9zaXRpb25hbCgie25hbWV9IiwgYXJncykpIHt7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ290byBleGl0OworICAgICAgICAgICAgICAgICAgICAgICAgfX0KICAgICAgICAgICAgICAgICAgICAgICAgICIiIiwgaW5kZW50PTQpKQogCiAgICAgICAgICAgICBwYXJzZXJfZGVmaW5pdGlvbiA9IHBhcnNlcl9ib2R5KHBhcnNlcl9wcm90b3R5cGUsICpmaWVsZHMpCkBAIC0xMDMyLDggKzEwNTUsOSBAQAogCiAgICAgICAgICAgICBzID0gIiIiCiAgICAgY2FzZSB7Y291bnR9OgotICAgICAgICBpZiAoIVB5QXJnX1BhcnNlVHVwbGUoYXJncywgIntmb3JtYXRfdW5pdHN9OntuYW1lfSIsIHtwYXJzZV9hcmd1bWVudHN9KSkKKyAgICAgICAgaWYgKCFQeUFyZ19QYXJzZVR1cGxlKGFyZ3MsICJ7Zm9ybWF0X3VuaXRzfTp7bmFtZX0iLCB7cGFyc2VfYXJndW1lbnRzfSkpIHt7CiAgICAgICAgICAgICBnb3RvIGV4aXQ7CisgICAgICAgIH19CiAgICAgICAgIHtncm91cF9ib29sZWFuc30KICAgICAgICAgYnJlYWs7CiAiIiJbMTpdCkBAIC0xMDY3LDcgKzEwOTEsNyBAQAogCiAgICAgICAgIGxhc3RfZ3JvdXAgPSAwCiAgICAgICAgIGZpcnN0X29wdGlvbmFsID0gbGVuKHNlbGZsZXNzKQotICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWQorICAgICAgICBwb3NpdGlvbmFsID0gc2VsZmxlc3MgYW5kIHNlbGZsZXNzWy0xXS5pc19wb3NpdGlvbmFsX29ubHkoKQogICAgICAgICBuZXdfb3JfaW5pdCA9IGYua2luZCBpbiAoTUVUSE9EX05FVywgTUVUSE9EX0lOSVQpCiAgICAgICAgIGRlZmF1bHRfcmV0dXJuX2NvbnZlcnRlciA9IChub3QgZi5yZXR1cm5fY29udmVydGVyIG9yCiAgICAgICAgICAgICBmLnJldHVybl9jb252ZXJ0ZXIudHlwZSA9PSAnUHlPYmplY3QgKicpCkBAIC0xMjE2LDcgKzEyNDAsNyBAQAogCiBkZWYgY3JlYXRlX3JlZ2V4KGJlZm9yZSwgYWZ0ZXIsIHdvcmQ9VHJ1ZSwgd2hvbGVfbGluZT1UcnVlKToKICAgICAiIiJDcmVhdGUgYW4gcmUgb2JqZWN0IGZvciBtYXRjaGluZyBtYXJrZXIgbGluZXMuIiIiCi0gICAgZ3JvdXBfcmUgPSAiXHcrIiBpZiB3b3JkIGVsc2UgIi4rIgorICAgIGdyb3VwX3JlID0gciJcdysiIGlmIHdvcmQgZWxzZSAiLisiCiAgICAgcGF0dGVybiA9IHIne30oe30pe30nCiAgICAgaWYgd2hvbGVfbGluZToKICAgICAgICAgcGF0dGVybiA9ICdeJyArIHBhdHRlcm4gKyAnJCcKQEAgLTIzNTksNyArMjM4MywxMCBAQAogICAgICAgICAgICAgZGF0YS5tb2RpZmljYXRpb25zLmFwcGVuZCgnLyogbW9kaWZpY2F0aW9ucyBmb3IgJyArIG5hbWUgKyAnICovXG4nICsgbW9kaWZpY2F0aW9ucy5yc3RyaXAoKSkKIAogICAgICAgICAjIGtleXdvcmRzCi0gICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQorICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICBkYXRhLmtleXdvcmRzLmFwcGVuZCgnJykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGRhdGEua2V5d29yZHMuYXBwZW5kKHBhcmFtZXRlci5uYW1lKQogCiAgICAgICAgICMgZm9ybWF0X3VuaXRzCiAgICAgICAgIGlmIHNlbGYuaXNfb3B0aW9uYWwoKSBhbmQgJ3wnIG5vdCBpbiBkYXRhLmZvcm1hdF91bml0czoKQEAgLTI1NzIsMjEgKzI1OTksMjEgQEAKICAgICAgICAgaWYgbm90IGJpdHdpc2U6CiAgICAgICAgICAgICBmYWlsKCJVbnNpZ25lZCBsb25ncyBtdXN0IGJlIGJpdHdpc2UgKGZvciBub3cpLiIpCiAKLWNsYXNzIFBZX0xPTkdfTE9OR19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6Ci0gICAgdHlwZSA9ICdQWV9MT05HX0xPTkcnCitjbGFzcyBsb25nX2xvbmdfY29udmVydGVyKENDb252ZXJ0ZXIpOgorICAgIHR5cGUgPSAnbG9uZyBsb25nJwogICAgIGRlZmF1bHRfdHlwZSA9IGludAogICAgIGZvcm1hdF91bml0ID0gJ0wnCiAgICAgY19pZ25vcmVkX2RlZmF1bHQgPSAiMCIKIAotY2xhc3MgdW5zaWduZWRfUFlfTE9OR19MT05HX2NvbnZlcnRlcihDQ29udmVydGVyKToKLSAgICB0eXBlID0gJ3Vuc2lnbmVkIFBZX0xPTkdfTE9ORycKK2NsYXNzIHVuc2lnbmVkX2xvbmdfbG9uZ19jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CisgICAgdHlwZSA9ICd1bnNpZ25lZCBsb25nIGxvbmcnCiAgICAgZGVmYXVsdF90eXBlID0gaW50CiAgICAgZm9ybWF0X3VuaXQgPSAnSycKICAgICBjX2lnbm9yZWRfZGVmYXVsdCA9ICIwIgogCiAgICAgZGVmIGNvbnZlcnRlcl9pbml0KHNlbGYsICosIGJpdHdpc2U9RmFsc2UpOgogICAgICAgICBpZiBub3QgYml0d2lzZToKLSAgICAgICAgICAgIGZhaWwoIlVuc2lnbmVkIFBZX0xPTkdfTE9OR3MgbXVzdCBiZSBiaXR3aXNlIChmb3Igbm93KS4iKQorICAgICAgICAgICAgZmFpbCgiVW5zaWduZWQgbG9uZyBsb25nIG11c3QgYmUgYml0d2lzZSAoZm9yIG5vdykuIikKIAogY2xhc3MgUHlfc3NpemVfdF9jb252ZXJ0ZXIoQ0NvbnZlcnRlcik6CiAgICAgdHlwZSA9ICdQeV9zc2l6ZV90JwpAQCAtMjY3Niw3ICsyNzAzLDcgQEAKICAgICBkZWYgY2xlYW51cChzZWxmKToKICAgICAgICAgaWYgc2VsZi5lbmNvZGluZzoKICAgICAgICAgICAgIG5hbWUgPSBlbnN1cmVfbGVnYWxfY19pZGVudGlmaWVyKHNlbGYubmFtZSkKLSAgICAgICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIpXG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xuIl0pCisgICAgICAgICAgICByZXR1cm4gIiIuam9pbihbImlmICgiLCBuYW1lLCAiKSB7XG4gICBQeU1lbV9GUkVFKCIsIG5hbWUsICIpO1xufVxuIl0pCiAKICMKICMgVGhpcyBpcyB0aGUgZm91cnRoIG9yIGZpZnRoIHJld3JpdGUgb2YgcmVnaXN0ZXJpbmcgYWxsIHRoZQpAQCAtMjc4Niw3ICsyODEzLDcgQEAKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgogICAgICAgICBuYW1lID0gZW5zdXJlX2xlZ2FsX2NfaWRlbnRpZmllcihzZWxmLm5hbWUpCi0gICAgICAgIHJldHVybiAiIi5qb2luKFsiaWYgKCIsIG5hbWUsICIub2JqKVxuICAgUHlCdWZmZXJfUmVsZWFzZSgmIiwgbmFtZSwgIik7XG4iXSkKKyAgICAgICAgcmV0dXJuICIiLmpvaW4oWyJpZiAoIiwgbmFtZSwgIi5vYmopIHtcbiAgIFB5QnVmZmVyX1JlbGVhc2UoJiIsIG5hbWUsICIpO1xufVxuIl0pCiAKIAogZGVmIGNvcnJlY3RfbmFtZV9mb3Jfc2VsZihmKToKQEAgLTI5NTksMTAgKzI5ODYsMTAgQEAKICAgICAgICAgZGF0YS5yZXR1cm5fdmFsdWUgPSBuYW1lCiAKICAgICBkZWYgZXJyX29jY3VycmVkX2lmKHNlbGYsIGV4cHIsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKCh7fSkgJiYgUHlFcnJfT2NjdXJyZWQoKSlcbiAgICBnb3RvIGV4aXQ7XG4nLmZvcm1hdChleHByKSkKKyAgICAgICAgZGF0YS5yZXR1cm5fY29udmVyc2lvbi5hcHBlbmQoJ2lmICgoe30pICYmIFB5RXJyX09jY3VycmVkKCkpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KGV4cHIpKQogCiAgICAgZGVmIGVycl9vY2N1cnJlZF9pZl9udWxsX3BvaW50ZXIoc2VsZiwgdmFyaWFibGUsIGRhdGEpOgotICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpXG4gICAgZ290byBleGl0O1xuJy5mb3JtYXQodmFyaWFibGUpKQorICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnaWYgKHt9ID09IE5VTEwpIHt7XG4gICAgZ290byBleGl0O1xufX1cbicuZm9ybWF0KHZhcmlhYmxlKSkKIAogICAgIGRlZiByZW5kZXIoc2VsZiwgZnVuY3Rpb24sIGRhdGEpOgogICAgICAgICAiIiIKQEAgLTI5NzcsOCArMzAwNCw5IEBACiAgICAgZGVmIHJlbmRlcihzZWxmLCBmdW5jdGlvbiwgZGF0YSk6CiAgICAgICAgIHNlbGYuZGVjbGFyZShkYXRhKQogICAgICAgICBkYXRhLnJldHVybl9jb252ZXJzaW9uLmFwcGVuZCgnJycKLWlmIChfcmV0dXJuX3ZhbHVlICE9IFB5X05vbmUpCitpZiAoX3JldHVybl92YWx1ZSAhPSBQeV9Ob25lKSB7CiAgICAgZ290byBleGl0OworfQogcmV0dXJuX3ZhbHVlID0gUHlfTm9uZTsKIFB5X0lOQ1JFRihQeV9Ob25lKTsKICcnJy5zdHJpcCgpKQpAQCAtMzE4Myw2ICszMjExLDcgQEAKICAgICAgICAgc2VsZi5zdGF0ZSA9IHNlbGYuc3RhdGVfZHNsX3N0YXJ0CiAgICAgICAgIHNlbGYucGFyYW1ldGVyX2luZGVudCA9IE5vbmUKICAgICAgICAgc2VsZi5rZXl3b3JkX29ubHkgPSBGYWxzZQorICAgICAgICBzZWxmLnBvc2l0aW9uYWxfb25seSA9IEZhbHNlCiAgICAgICAgIHNlbGYuZ3JvdXAgPSAwCiAgICAgICAgIHNlbGYucGFyYW1ldGVyX3N0YXRlID0gc2VsZi5wc19zdGFydAogICAgICAgICBzZWxmLnNlZW5fcG9zaXRpb25hbF93aXRoX2RlZmF1bHQgPSBGYWxzZQpAQCAtMzU2MSw4ICszNTkwLDggQEAKICAgICAjICJwYXJhbWV0ZXJfc3RhdGUiLiAgKFByZXZpb3VzbHkgdGhlIGNvZGUgd2FzIGEgbWlhc21hIG9mIGlmcyBhbmQKICAgICAjIHNlcGFyYXRlIGJvb2xlYW4gc3RhdGUgdmFyaWFibGVzLikgIFRoZSBzdGF0ZXMgYXJlOgogICAgICMKLSAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdIC8gICA8LSBsaW5lCi0gICAgIyAwMSAgIDIgICAgICAgICAgMyAgICAgICA0ICAgIDUgICAgICAgICAgIDYgICA3ICAgPC0gc3RhdGUgdHJhbnNpdGlvbnMKKyAgICAjICBbIFsgYSwgYiwgXSBjLCBdIGQsIGUsIGY9MywgWyBnLCBoLCBbIGkgXSBdICAgPC0gbGluZQorICAgICMgMDEgICAyICAgICAgICAgIDMgICAgICAgNCAgICA1ICAgICAgICAgICA2ICAgICA8LSBzdGF0ZSB0cmFuc2l0aW9ucwogICAgICMKICAgICAjIDA6IHBzX3N0YXJ0LiAgYmVmb3JlIHdlJ3ZlIHNlZW4gYW55dGhpbmcuICBsZWdhbCB0cmFuc2l0aW9ucyBhcmUgdG8gMSBvciAzLgogICAgICMgMTogcHNfbGVmdF9zcXVhcmVfYmVmb3JlLiAgbGVmdCBzcXVhcmUgYnJhY2tldHMgYmVmb3JlIHJlcXVpcmVkIHBhcmFtZXRlcnMuCkBAIC0zNTczLDkgKzM2MDIsOCBAQAogICAgICMgICAgbm93IG11c3QgaGF2ZSBkZWZhdWx0IHZhbHVlcy4KICAgICAjIDU6IHBzX2dyb3VwX2FmdGVyLiAgaW4gYSBncm91cCwgYWZ0ZXIgcmVxdWlyZWQgcGFyYW1ldGVycy4KICAgICAjIDY6IHBzX3JpZ2h0X3NxdWFyZV9hZnRlci4gIHJpZ2h0IHNxdWFyZSBicmFja2V0cyBhZnRlciByZXF1aXJlZCBwYXJhbWV0ZXJzLgotICAgICMgNzogcHNfc2Vlbl9zbGFzaC4gIHNlZW4gc2xhc2guCiAgICAgcHNfc3RhcnQsIHBzX2xlZnRfc3F1YXJlX2JlZm9yZSwgcHNfZ3JvdXBfYmVmb3JlLCBwc19yZXF1aXJlZCwgXAotICAgIHBzX29wdGlvbmFsLCBwc19ncm91cF9hZnRlciwgcHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBwc19zZWVuX3NsYXNoID0gcmFuZ2UoOCkKKyAgICBwc19vcHRpb25hbCwgcHNfZ3JvdXBfYWZ0ZXIsIHBzX3JpZ2h0X3NxdWFyZV9hZnRlciA9IHJhbmdlKDcpCiAKICAgICBkZWYgc3RhdGVfcGFyYW1ldGVyc19zdGFydChzZWxmLCBsaW5lKToKICAgICAgICAgaWYgc2VsZi5pZ25vcmVfbGluZShsaW5lKToKQEAgLTM4NTQsOSArMzg4Miw2IEBACiAgICAgICAgIHJldHVybiBuYW1lLCBGYWxzZSwga3dhcmdzCiAKICAgICBkZWYgcGFyc2Vfc3BlY2lhbF9zeW1ib2woc2VsZiwgc3ltYm9sKToKLSAgICAgICAgaWYgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPT0gc2VsZi5wc19zZWVuX3NsYXNoOgotICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgc3BlY2lmaWVzICIgKyBzeW1ib2wgKyAiIGFmdGVyIC8sIHdoaWNoIGlzIHVuc3VwcG9ydGVkLiIpCi0KICAgICAgICAgaWYgc3ltYm9sID09ICcqJzoKICAgICAgICAgICAgIGlmIHNlbGYua2V5d29yZF9vbmx5OgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIHVzZXMgJyonIG1vcmUgdGhhbiBvbmNlLiIpCkBAIC0zODgzLDEzICszOTA4LDE1IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGZhaWwoIkZ1bmN0aW9uICIgKyBzZWxmLmZ1bmN0aW9uLm5hbWUgKyAiIGhhcyBhbiB1bnN1cHBvcnRlZCBncm91cCBjb25maWd1cmF0aW9uLiAoVW5leHBlY3RlZCBzdGF0ZSAiICsgc3RyKHNlbGYucGFyYW1ldGVyX3N0YXRlKSArICIuYykiKQogICAgICAgICBlbGlmIHN5bWJvbCA9PSAnLyc6CisgICAgICAgICAgICBpZiBzZWxmLnBvc2l0aW9uYWxfb25seToKKyAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiB1c2VzICcvJyBtb3JlIHRoYW4gb25jZS4iKQorICAgICAgICAgICAgc2VsZi5wb3NpdGlvbmFsX29ubHkgPSBUcnVlCiAgICAgICAgICAgICAjIHBzX3JlcXVpcmVkIGFuZCBwc19vcHRpb25hbCBhcmUgYWxsb3dlZCBoZXJlLCB0aGF0IGFsbG93cyBwb3NpdGlvbmFsLW9ubHkgd2l0aG91dCBvcHRpb24gZ3JvdXBzCiAgICAgICAgICAgICAjIHRvIHdvcmsgKGFuZCBoYXZlIGRlZmF1bHQgdmFsdWVzISkKICAgICAgICAgICAgIGlmIChzZWxmLnBhcmFtZXRlcl9zdGF0ZSBub3QgaW4gKHNlbGYucHNfcmVxdWlyZWQsIHNlbGYucHNfb3B0aW9uYWwsIHNlbGYucHNfcmlnaHRfc3F1YXJlX2FmdGVyLCBzZWxmLnBzX2dyb3VwX2JlZm9yZSkpIG9yIHNlbGYuZ3JvdXA6CiAgICAgICAgICAgICAgICAgZmFpbCgiRnVuY3Rpb24gIiArIHNlbGYuZnVuY3Rpb24ubmFtZSArICIgaGFzIGFuIHVuc3VwcG9ydGVkIGdyb3VwIGNvbmZpZ3VyYXRpb24uIChVbmV4cGVjdGVkIHN0YXRlICIgKyBzdHIoc2VsZi5wYXJhbWV0ZXJfc3RhdGUpICsgIi5kKSIpCiAgICAgICAgICAgICBpZiBzZWxmLmtleXdvcmRfb25seToKICAgICAgICAgICAgICAgICBmYWlsKCJGdW5jdGlvbiAiICsgc2VsZi5mdW5jdGlvbi5uYW1lICsgIiBtaXhlcyBrZXl3b3JkLW9ubHkgYW5kIHBvc2l0aW9uYWwtb25seSBwYXJhbWV0ZXJzLCB3aGljaCBpcyB1bnN1cHBvcnRlZC4iKQotICAgICAgICAgICAgc2VsZi5wYXJhbWV0ZXJfc3RhdGUgPSBzZWxmLnBzX3NlZW5fc2xhc2gKICAgICAgICAgICAgICMgZml4dXAgcHJlY2VkaW5nIHBhcmFtZXRlcnMKICAgICAgICAgICAgIGZvciBwIGluIHNlbGYuZnVuY3Rpb24ucGFyYW1ldGVycy52YWx1ZXMoKToKICAgICAgICAgICAgICAgICBpZiAocC5raW5kICE9IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT1JfS0VZV09SRCBhbmQgbm90IGlzaW5zdGFuY2UocC5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKSk6CkBAIC0zOTc3LDIzICs0MDA0LDIwIEBACiAgICAgICAgICMgcG9wdWxhdGUgInJpZ2h0X2JyYWNrZXRfY291bnQiIGZpZWxkIGZvciBldmVyeSBwYXJhbWV0ZXIKICAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnMsICJXZSBzaG91bGQgYWx3YXlzIGhhdmUgYSBzZWxmIHBhcmFtZXRlci4gIiArIHJlcHIoZikKICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UocGFyYW1ldGVyc1swXS5jb252ZXJ0ZXIsIHNlbGZfY29udmVydGVyKQorICAgICAgICAjIHNlbGYgaXMgYWx3YXlzIHBvc2l0aW9uYWwtb25seS4KKyAgICAgICAgYXNzZXJ0IHBhcmFtZXRlcnNbMF0uaXNfcG9zaXRpb25hbF9vbmx5KCkKICAgICAgICAgcGFyYW1ldGVyc1swXS5yaWdodF9icmFja2V0X2NvdW50ID0gMAotICAgICAgICBwYXJhbWV0ZXJzX2FmdGVyX3NlbGYgPSBwYXJhbWV0ZXJzWzE6XQotICAgICAgICBpZiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAjIGZvciBub3csIHRoZSBvbmx5IHdheSBDbGluaWMgc3VwcG9ydHMgcG9zaXRpb25hbC1vbmx5IHBhcmFtZXRlcnMKLSAgICAgICAgICAgICMgaXMgaWYgYWxsIG9mIHRoZW0gYXJlIHBvc2l0aW9uYWwtb25seS4uLgotICAgICAgICAgICAgIwotICAgICAgICAgICAgIyAuLi4gZXhjZXB0IGZvciBzZWxmISAgc2VsZiBpcyBhbHdheXMgcG9zaXRpb25hbC1vbmx5LgotCi0gICAgICAgICAgICBwb3NpdGlvbmFsX29ubHlfcGFyYW1ldGVycyA9IFtwLmtpbmQgPT0gaW5zcGVjdC5QYXJhbWV0ZXIuUE9TSVRJT05BTF9PTkxZIGZvciBwIGluIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZl0KLSAgICAgICAgICAgIGlmIHBhcmFtZXRlcnNfYWZ0ZXJfc2VsZlswXS5raW5kID09IGluc3BlY3QuUGFyYW1ldGVyLlBPU0lUSU9OQUxfT05MWToKLSAgICAgICAgICAgICAgICBhc3NlcnQgYWxsKHBvc2l0aW9uYWxfb25seV9wYXJhbWV0ZXJzKQotICAgICAgICAgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnM6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQorICAgICAgICBwb3NpdGlvbmFsX29ubHkgPSBUcnVlCisgICAgICAgIGZvciBwIGluIHBhcmFtZXRlcnNbMTpdOgorICAgICAgICAgICAgaWYgbm90IHAuaXNfcG9zaXRpb25hbF9vbmx5KCk6CisgICAgICAgICAgICAgICAgcG9zaXRpb25hbF9vbmx5ID0gRmFsc2UKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgYXNzZXJ0IHBvc2l0aW9uYWxfb25seQorICAgICAgICAgICAgaWYgcG9zaXRpb25hbF9vbmx5OgorICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IGFicyhwLmdyb3VwKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIGRvbid0IHB1dCBhbnkgcmlnaHQgYnJhY2tldHMgYXJvdW5kIG5vbi1wb3NpdGlvbmFsLW9ubHkgcGFyYW1ldGVycywgZXZlci4KLSAgICAgICAgICAgICAgICBmb3IgcCBpbiBwYXJhbWV0ZXJzX2FmdGVyX3NlbGY6Ci0gICAgICAgICAgICAgICAgICAgIHAucmlnaHRfYnJhY2tldF9jb3VudCA9IDAKKyAgICAgICAgICAgICAgICBwLnJpZ2h0X2JyYWNrZXRfY291bnQgPSAwCiAKICAgICAgICAgcmlnaHRfYnJhY2tldF9jb3VudCA9IDAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvZGVtby9zczEucHkgYi9Ub29scy9kZW1vL3NzMS5weQppbmRleCBjNTFmMDQxLi5iZjg4ODIwIDEwMDc1NQotLS0gYS9Ub29scy9kZW1vL3NzMS5weQorKysgYi9Ub29scy9kZW1vL3NzMS5weQpAQCAtNDEzLDcgKzQxMyw3IEBACiAKICAgICBkZWYgcmVudW1iZXIoc2VsZiwgeDEsIHkxLCB4MiwgeTIsIGR4LCBkeSk6CiAgICAgICAgIG91dCA9IFtdCi0gICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KCcoXHcrKScsIHNlbGYuZm9ybXVsYSk6CisgICAgICAgIGZvciBwYXJ0IGluIHJlLnNwbGl0KHInKFx3KyknLCBzZWxmLmZvcm11bGEpOgogICAgICAgICAgICAgbSA9IHJlLm1hdGNoKCdeKFtBLVpdKykoWzEtOV1bMC05XSopJCcsIHBhcnQpCiAgICAgICAgICAgICBpZiBtIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHN4LCBzeSA9IG0uZ3JvdXBzKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkgYi9Ub29scy9mcmVlemUvZnJlZXplLnB5CmluZGV4IDQ0ZWRkNTcuLmQ2MDJmNTggMTAwNzU1Ci0tLSBhL1Rvb2xzL2ZyZWV6ZS9mcmVlemUucHkKKysrIGIvVG9vbHMvZnJlZXplL2ZyZWV6ZS5weQpAQCAtMTI0LDkgKzEyNCw3IEBACiAKICAgICAjIGRlZmF1bHQgdGhlIGV4Y2x1ZGUgbGlzdCBmb3IgZWFjaCBwbGF0Zm9ybQogICAgIGlmIHdpbjogZXhjbHVkZSA9IGV4Y2x1ZGUgKyBbCi0gICAgICAgICdkb3MnLCAnZG9zcGF0aCcsICdtYWMnLCAnbWFjcGF0aCcsICdtYWNmcycsICdNQUNGUycsICdwb3NpeCcsCi0gICAgICAgICdjZScsCi0gICAgICAgIF0KKyAgICAgICAgJ2RvcycsICdkb3NwYXRoJywgJ21hYycsICdtYWNwYXRoJywgJ21hY2ZzJywgJ01BQ0ZTJywgJ3Bvc2l4JywgXQogCiAgICAgZmFpbF9pbXBvcnQgPSBleGNsdWRlWzpdCiAKQEAgLTIxOCw3ICsyMTYsNyBAQAogICAgIGlzaG9tZSA9IG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwcmVmaXgsICdQeXRob24nLCAnY2V2YWwuYycpKQogCiAgICAgIyBsb2NhdGlvbnMgZGVyaXZlZCBmcm9tIG9wdGlvbnMKLSAgICB2ZXJzaW9uID0gc3lzLnZlcnNpb25bOjNdCisgICAgdmVyc2lvbiA9ICclZC4lZCcgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQogICAgIGZsYWdnZWRfdmVyc2lvbiA9IHZlcnNpb24gKyBzeXMuYWJpZmxhZ3MKICAgICBpZiB3aW46CiAgICAgICAgIGV4dGVuc2lvbnNfYyA9ICdmcm96ZW5fZXh0ZW5zaW9ucy5jJwpkaWZmIC0tZ2l0IGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weSBiL1Rvb2xzL2ZyZWV6ZS93aW5tYWtlbWFrZWZpbGUucHkKaW5kZXggMzkwZDhhYy4uOWJiM2U2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvZnJlZXplL3dpbm1ha2VtYWtlZmlsZS5weQorKysgYi9Ub29scy9mcmVlemUvd2lubWFrZW1ha2VmaWxlLnB5CkBAIC05NSw3ICs5NSw3IEBACiAgICAgcHJpbnQoKQogCiAgICAgcHJpbnQoJyQodGVtcF9kaXIpOicpCi0gICAgcHJpbnQoJyAgaWYgbm90IGV4aXN0ICQodGVtcF9kaXIpXC4gbWtkaXIgJCh0ZW1wX2RpciknKQorICAgIHByaW50KHInICBpZiBub3QgZXhpc3QgJCh0ZW1wX2RpcilcLiBta2RpciAkKHRlbXBfZGlyKScpCiAgICAgcHJpbnQoKQogCiAgICAgb2JqZWN0cyA9IFtdCkBAIC0xMDYsNyArMTA2LDcgQEAKICAgICAgICAgICAgIGJhc2UgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGUpCiAgICAgICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KGJhc2UpCiAgICAgICAgICAgICBvYmplY3RzLmFwcGVuZChiYXNlICsgIi5vYmoiKQotICAgICAgICAgICAgcHJpbnQoJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCisgICAgICAgICAgICBwcmludChyJyQodGVtcF9kaXIpXCVzLm9iajogIiVzIicgJSAoYmFzZSwgZmlsZSkpCiAgICAgICAgICAgICBwcmludCgiXHRAJChDQykgLWMgLW5vbG9nbyAvRm8kKiAkKGNkbCkgJChjX2RlYnVnKSAvRCBCVUlMRF9GUkVFWkUiLCBlbmQ9JyAnKQogICAgICAgICAgICAgcHJpbnQoJyItSSQocHl0aG9uaG9tZSkvSW5jbHVkZSIgICItSSQocHl0aG9uaG9tZSkvUEMiIFxcJykKICAgICAgICAgICAgIHByaW50KCJcdFx0JChjZmxhZ3MpICQoY2RlYnVnKSAkKGNpbmNsdWRlKSBcXCIpCkBAIC0xMjYsNyArMTI2LDcgQEAKICAgICBwcmludCgpIDsgcHJpbnQoKQogCiAgICAgcHJpbnQoIk9CSlM9IiwgZW5kPScgJykKLSAgICBmb3Igb2JqIGluIG9iamVjdHM6IHByaW50KCciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQorICAgIGZvciBvYmogaW4gb2JqZWN0czogcHJpbnQociciJCh0ZW1wX2RpcilcJXMiJyAlIChvYmopLCBlbmQ9JyAnKQogICAgIHByaW50KCkgOyBwcmludCgpCiAKICAgICBwcmludCgiTElCUz0iLCBlbmQ9JyAnKQpkaWZmIC0tZ2l0IGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weSBiL1Rvb2xzL2dkYi9saWJweXRob24ucHkKaW5kZXggNzVmMWNjYi4uM2U5NWI0NCAxMDA3NTUKLS0tIGEvVG9vbHMvZ2RiL2xpYnB5dGhvbi5weQorKysgYi9Ub29scy9nZGIvbGlicHl0aG9uLnB5CkBAIC00NCw3ICs0NCw3IEBACiAjIE5PVEU6IHNvbWUgZ2RicyBhcmUgbGlua2VkIHdpdGggUHl0aG9uIDMsIHNvIHRoaXMgZmlsZSBzaG91bGQgYmUgZHVhbC1zeW50YXgKICMgY29tcGF0aWJsZSAoMi42KyBhbmQgMy4wKykuICBTZWUgIzE5MzA4LgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uLCB3aXRoX3N0YXRlbWVudAorZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgogaW1wb3J0IGdkYgogaW1wb3J0IG9zCiBpbXBvcnQgbG9jYWxlCmRpZmYgLS1naXQgYS9Ub29scy9oZy9oZ3RvdWNoLnB5IGIvVG9vbHMvaGcvaGd0b3VjaC5weQppbmRleCAxMTlkODEyLi5mYmNhNDY5IDEwMDY0NAotLS0gYS9Ub29scy9oZy9oZ3RvdWNoLnB5CisrKyBiL1Rvb2xzL2hnL2hndG91Y2gucHkKQEAgLTcsNyArNyw2IEBACiAKIEluIGFkZGl0aW9uIHRvIHRoZSBkZXBlbmRlbmN5IHN5bnRheCwgIy1jb21tZW50cyBhcmUgc3VwcG9ydGVkLgogIiIiCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CiBpbXBvcnQgZXJybm8KIGltcG9ydCBvcwogaW1wb3J0IHRpbWUKZGlmZiAtLWdpdCBhL1Rvb2xzL2kxOG4vcHlnZXR0ZXh0LnB5IGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKaW5kZXggZGE0MjQzOC4uOGVmNWZmOCAxMDA3NTUKLS0tIGEvVG9vbHMvaTE4bi9weWdldHRleHQucHkKKysrIGIvVG9vbHMvaTE4bi9weWdldHRleHQucHkKQEAgLTE1Niw3ICsxNTYsOCBAQAogIiIiKQogCiBpbXBvcnQgb3MKLWltcG9ydCBpbXAKK2ltcG9ydCBpbXBvcnRsaWIubWFjaGluZXJ5CitpbXBvcnQgaW1wb3J0bGliLnV0aWwKIGltcG9ydCBzeXMKIGltcG9ydCBnbG9iCiBpbXBvcnQgdGltZQpAQCAtMjYzLDggKzI2NCw3IEBACiAgICAgIyBnZXQgZXh0ZW5zaW9uIGZvciBweXRob24gc291cmNlIGZpbGVzCiAgICAgaWYgJ19weV9leHQnIG5vdCBpbiBnbG9iYWxzKCk6CiAgICAgICAgIGdsb2JhbCBfcHlfZXh0Ci0gICAgICAgIF9weV9leHQgPSBbdHJpcGxlWzBdIGZvciB0cmlwbGUgaW4gaW1wLmdldF9zdWZmaXhlcygpCi0gICAgICAgICAgICAgICAgICAgaWYgdHJpcGxlWzJdID09IGltcC5QWV9TT1VSQ0VdWzBdCisgICAgICAgIF9weV9leHQgPSBpbXBvcnRsaWIubWFjaGluZXJ5LlNPVVJDRV9TVUZGSVhFU1swXQogCiAgICAgIyBkb24ndCByZWN1cnNlIGludG8gQ1ZTIGRpcmVjdG9yaWVzCiAgICAgaWYgJ0NWUycgaW4gbmFtZXM6CkBAIC0yNzcsNDUgKzI3Nyw2IEBACiAgICAgICAgICkKIAogCi1kZWYgX2dldF9tb2Rwa2dfcGF0aChkb3R0ZWRfbmFtZSwgcGF0aGxpc3Q9Tm9uZSk6Ci0gICAgIiIiR2V0IHRoZSBmaWxlc3lzdGVtIHBhdGggZm9yIGEgbW9kdWxlIG9yIGEgcGFja2FnZS4KLQotICAgIFJldHVybiB0aGUgZmlsZSBzeXN0ZW0gcGF0aCB0byBhIGZpbGUgZm9yIGEgbW9kdWxlLCBhbmQgdG8gYSBkaXJlY3RvcnkgZm9yCi0gICAgYSBwYWNrYWdlLiBSZXR1cm4gTm9uZSBpZiB0aGUgbmFtZSBpcyBub3QgZm91bmQsIG9yIGlzIGEgYnVpbHRpbiBvcgotICAgIGV4dGVuc2lvbiBtb2R1bGUuCi0gICAgIiIiCi0gICAgIyBzcGxpdCBvZmYgdG9wLW1vc3QgbmFtZQotICAgIHBhcnRzID0gZG90dGVkX25hbWUuc3BsaXQoJy4nLCAxKQotCi0gICAgaWYgbGVuKHBhcnRzKSA+IDE6Ci0gICAgICAgICMgd2UgaGF2ZSBhIGRvdHRlZCBwYXRoLCBpbXBvcnQgdG9wLWxldmVsIHBhY2thZ2UKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKHBhcnRzWzBdLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6IGZpbGUuY2xvc2UoKQotICAgICAgICBleGNlcHQgSW1wb3J0RXJyb3I6Ci0gICAgICAgICAgICByZXR1cm4gTm9uZQotCi0gICAgICAgICMgY2hlY2sgaWYgaXQncyBpbmRlZWQgYSBwYWNrYWdlCi0gICAgICAgIGlmIGRlc2NyaXB0aW9uWzJdID09IGltcC5QS0dfRElSRUNUT1JZOgotICAgICAgICAgICAgIyByZWN1cnNpdmVseSBoYW5kbGUgdGhlIHJlbWFpbmluZyBuYW1lIHBhcnRzCi0gICAgICAgICAgICBwYXRobmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgocGFydHNbMV0sIFtwYXRobmFtZV0pCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICBlbHNlOgotICAgICAgICAjIHBsYWluIG5hbWUKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgZmlsZSwgcGF0aG5hbWUsIGRlc2NyaXB0aW9uID0gaW1wLmZpbmRfbW9kdWxlKAotICAgICAgICAgICAgICAgIGRvdHRlZF9uYW1lLCBwYXRobGlzdCkKLSAgICAgICAgICAgIGlmIGZpbGU6Ci0gICAgICAgICAgICAgICAgZmlsZS5jbG9zZSgpCi0gICAgICAgICAgICBpZiBkZXNjcmlwdGlvblsyXSBub3QgaW4gW2ltcC5QWV9TT1VSQ0UsIGltcC5QS0dfRElSRUNUT1JZXToKLSAgICAgICAgICAgICAgICBwYXRobmFtZSA9IE5vbmUKLSAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgotICAgICAgICAgICAgcGF0aG5hbWUgPSBOb25lCi0KLSAgICByZXR1cm4gcGF0aG5hbWUKLQotCiBkZWYgZ2V0RmlsZXNGb3JOYW1lKG5hbWUpOgogICAgICIiIkdldCBhIGxpc3Qgb2YgbW9kdWxlIGZpbGVzIGZvciBhIGZpbGVuYW1lLCBhIG1vZHVsZSBvciBwYWNrYWdlIG5hbWUsCiAgICAgb3IgYSBkaXJlY3RvcnkuCkBAIC0zMzAsNyArMjkxLDExIEBACiAgICAgICAgICAgICByZXR1cm4gbGlzdAogCiAgICAgICAgICMgdHJ5IHRvIGZpbmQgbW9kdWxlIG9yIHBhY2thZ2UKLSAgICAgICAgbmFtZSA9IF9nZXRfbW9kcGtnX3BhdGgobmFtZSkKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgc3BlYyA9IGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYyhuYW1lKQorICAgICAgICAgICAgbmFtZSA9IHNwZWMub3JpZ2luCisgICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKKyAgICAgICAgICAgIG5hbWUgPSBOb25lCiAgICAgICAgIGlmIG5vdCBuYW1lOgogICAgICAgICAgICAgcmV0dXJuIFtdCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idWlsZHJlbGVhc2UuYmF0IGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKaW5kZXggZThkYTNlYy4uZTM0YWVhYyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKKysrIGIvVG9vbHMvbXNpL2J1aWxkcmVsZWFzZS5iYXQKQEAgLTM1LDcgKzM1LDcgQEAKIHNldCBCVUlMRFg2ND0NCiBzZXQgVEFSR0VUPVJlYnVpbGQNCiBzZXQgVEVTVFRBUkdFVERJUj0NCi1zZXQgUEdPPQ0KK3NldCBQR089ZGVmYXVsdA0KIA0KIA0KIDpDaGVja09wdHMNCkBAIC01NSw2ICs1NSw3IEBACiBpZiAiJTEiIEVRVSAiLXg4NiIgKHNldCBCVUlMRFg4Nj0xKSAmJiBzaGlmdCAmJiBnb3RvIENoZWNrT3B0cw0KIGlmICIlMSIgRVFVICIteDY0IiAoc2V0IEJVSUxEWDY0PTEpICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQogaWYgIiUxIiBFUVUgIi0tcGdvIiAoc2V0IFBHTz0lfjIpICYmIHNoaWZ0ICYmIHNoaWZ0ICYmIGdvdG8gQ2hlY2tPcHRzDQoraWYgIiUxIiBFUVUgIi0tc2tpcC1wZ28iIChzZXQgUEdPPSkgJiYgc2hpZnQgJiYgZ290byBDaGVja09wdHMNCiANCiBpZiAiJTEiIE5FUSAiIiBlY2hvIEludmFsaWQgb3B0aW9uOiAiJTEiICYmIGV4aXQgL0IgMQ0KIA0KQEAgLTEwNSwyMCArMTA2LDE1IEBACiANCiBpZiAiJTEiIEVRVSAieDg2IiAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIHg4Ng0KKyAgICBzZXQgUEdPPQ0KICAgICBzZXQgQlVJTEQ9JVBDQlVJTEQld2luMzJcDQogICAgIHNldCBCVUlMRF9QTEFUPVdpbjMyDQogICAgIHNldCBPVVRESVJfUExBVD13aW4zMg0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDg2DQotKSBlbHNlIGlmICIlfjIiIE5FUSAiIiAoDQotICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQotICAgIHNldCBQR089JX4yDQotICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NC1wZ29cDQotICAgIHNldCBCVUlMRF9QTEFUPXg2NA0KLSAgICBzZXQgT1VURElSX1BMQVQ9YW1kNjQNCi0gICAgc2V0IE9CSkRJUl9QTEFUPXg2NA0KICkgZWxzZSAoDQogICAgIGNhbGwgIiVQQ0JVSUxEJWVudi5iYXQiIGFtZDY0DQogICAgIHNldCBCVUlMRD0lUENCVUlMRCVhbWQ2NFwNCisgICAgc2V0IFBHTz0lfjINCiAgICAgc2V0IEJVSUxEX1BMQVQ9eDY0DQogICAgIHNldCBPVVRESVJfUExBVD1hbWQ2NA0KICAgICBzZXQgT0JKRElSX1BMQVQ9eDY0DQpAQCAtMTc0LDEyICsxNzAsMTggQEAKICAgICBAZWNobyBvZmYNCiApDQogDQotc2V0IEJVSUxET1BUUz0vcDpCdWlsZEZvclJlbGVhc2U9dHJ1ZSAvcDpEb3dubG9hZFVybD0lRE9XTkxPQURfVVJMJSAvcDpEb3dubG9hZFVybEJhc2U9JURPV05MT0FEX1VSTF9CQVNFJSAvcDpSZWxlYXNlVXJpPSVSRUxFQVNFX1VSSSUNCi1pZiAiJVBHTyUiIE5FUSAiIiBzZXQgQlVJTERPUFRTPSVCVUlMRE9QVFMlIC9wOlBHT0J1aWxkUGF0aD0lQlVJTEQlDQotbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2Vsb2NhbC53aXhwcm9qIiAvdDpSZWJ1aWxkIC9wOlBsYXRmb3JtPSUxICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD10cnVlDQoraWYgIiVPVVRESVJfUExBVCUiIEVRVSAid2luMzIiICgNCisgICAgbXNidWlsZCAiJUQlbGF1bmNoZXJcbGF1bmNoZXIud2l4cHJvaiIgL3A6UGxhdGZvcm09eDg2ICVDRVJUT1BUUyUgL3A6UmVsZWFzZVVyaT0lUkVMRUFTRV9VUkklDQorICAgIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQorKSBlbHNlIGlmIG5vdCBleGlzdCAiJVBDQlVJTEQld2luMzJcZW4tdXNcbGF1bmNoZXIubXNpIiAoDQorICAgIG1zYnVpbGQgIiVEJWxhdW5jaGVyXGxhdW5jaGVyLndpeHByb2oiIC9wOlBsYXRmb3JtPXg4NiAlQ0VSVE9QVFMlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KKyAgICBpZiBlcnJvcmxldmVsIDEgZXhpdCAvQg0KKykNCisNCitzZXQgQlVJTERPUFRTPS9wOlBsYXRmb3JtPSUxIC9wOkJ1aWxkRm9yUmVsZWFzZT10cnVlIC9wOkRvd25sb2FkVXJsPSVET1dOTE9BRF9VUkwlIC9wOkRvd25sb2FkVXJsQmFzZT0lRE9XTkxPQURfVVJMX0JBU0UlIC9wOlJlbGVhc2VVcmk9JVJFTEVBU0VfVVJJJQ0KK21zYnVpbGQgIiVEJWJ1bmRsZVxyZWxlYXNlbG9jYWwud2l4cHJvaiIgL3Q6UmVidWlsZCAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9dHJ1ZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQotbXNidWlsZCAiJUQlYnVuZGxlXHJlbGVhc2V3ZWIud2l4cHJvaiIgL3Q6UmVidWlsZCAvcDpQbGF0Zm9ybT0lMSAlQlVJTERPUFRTJSAlQ0VSVE9QVFMlIC9wOlJlYnVpbGRBbGw9ZmFsc2UNCittc2J1aWxkICIlRCVidW5kbGVccmVsZWFzZXdlYi53aXhwcm9qIiAvdDpSZWJ1aWxkICVCVUlMRE9QVFMlICVDRVJUT1BUUyUgL3A6UmVidWlsZEFsbD1mYWxzZQ0KIGlmIGVycm9ybGV2ZWwgMSBleGl0IC9CDQogDQogbXNidWlsZCAiJUQlbWFrZV96aXAucHJvaiIgL3Q6QnVpbGQgJUJVSUxET1BUUyUgJUNFUlRPUFRTJQ0KQEAgLTE5Niw3ICsxOTgsNyBAQAogDQogOkhlbHANCiBlY2hvIGJ1aWxkcmVsZWFzZS5iYXQgWy0tb3V0IERJUl0gWy14ODZdIFsteDY0XSBbLS1jZXJ0aWZpY2F0ZSBDRVJUTkFNRV0gWy0tYnVpbGRdIFstLXNraXAtYnVpbGRdDQotZWNobyAgICAgICAgICAgICAgICAgIFstLXBnbyBDT01NQU5EXSBbLS1za2lwLWRvY10gWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCitlY2hvICAgICAgICAgICAgICAgICAgWy0tcGdvIENPTU1BTkRdIFstLXNraXAtcGdvXSBbLS1za2lwLWRvY10gWy0tZG93bmxvYWQgRE9XTkxPQUQgVVJMXSBbLS10ZXN0IFRBUkdFVERJUl0NCiBlY2hvICAgICAgICAgICAgICAgICAgWy1oXQ0KIGVjaG8uDQogZWNobyAgICAtLW91dCAoLW8pICAgICAgICAgIFNwZWNpZnkgYW4gYWRkaXRpb25hbCBvdXRwdXQgZGlyZWN0b3J5IGZvciBpbnN0YWxsZXJzDQpAQCAtMjA1LDcgKzIwNyw4IEBACiBlY2hvICAgIC0tYnVpbGQgKC1iKSAgICAgICAgSW5jcmVtZW50YWxseSBidWlsZCBQeXRob24gcmF0aGVyIHRoYW4gcmVidWlsZGluZw0KIGVjaG8gICAgLS1za2lwLWJ1aWxkICgtQikgICBEbyBub3QgYnVpbGQgUHl0aG9uIChqdXN0IGRvIHRoZSBpbnN0YWxsZXJzKQ0KIGVjaG8gICAgLS1za2lwLWRvYyAoLUQpICAgICBEbyBub3QgYnVpbGQgZG9jdW1lbnRhdGlvbg0KLWVjaG8gICAgLS1wZ28gICAgICAgICAgICAgICBCdWlsZCB4NjQgaW5zdGFsbGVycyB1c2luZyBQR08NCitlY2hvICAgIC0tcGdvICAgICAgICAgICAgICAgU3BlY2lmeSBQR08gY29tbWFuZCBmb3IgeDY0IGluc3RhbGxlcnMNCitlY2hvICAgIC0tc2tpcC1wZ28gICAgICAgICAgQnVpbGQgeDY0IGluc3RhbGxlcnMgdXNpbmcgUEdPDQogZWNobyAgICAtLWRvd25sb2FkICAgICAgICAgIFNwZWNpZnkgdGhlIGZ1bGwgZG93bmxvYWQgVVJMIGZvciBNU0lzDQogZWNobyAgICAtLXRlc3QgICAgICAgICAgICAgIFNwZWNpZnkgdGhlIHRlc3QgZGlyZWN0b3J5IHRvIHJ1biB0aGUgaW5zdGFsbGVyIHRlc3RzDQogZWNobyAgICAtaCAgICAgICAgICAgICAgICAgIERpc3BsYXkgdGhpcyBoZWxwIGluZm9ybWF0aW9uDQpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobSBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC50aG0KaW5kZXggNGQ5Yzk3YS4uMWMwYmQwOCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0LnRobQorKysgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQudGhtCkBAIC0xMTYsMTAgKzExNiwxMSBAQAogICAgICAgICA8VGV4dCBYPSIxODUiIFk9IjExIiBXaWR0aD0iLTExIiBIZWlnaHQ9IjM2IiBGb250SWQ9IjEiIERpc2FibGVQcmVmaXg9InllcyI+Iyhsb2MuU3VjY2Vzc0hlYWRlcik8L1RleHQ+CiAgICAgICAgIDxJbWFnZSBYPSIwIiBZPSIwIiBXaWR0aD0iMTc4IiBIZWlnaHQ9IjM4MiIgSW1hZ2VGaWxlPSJTaWRlQmFyLnBuZyIvPgogCi0gICAgICAgIDxIeXBlcnRleHQgTmFtZT0iU3VjY2Vzc1RleHQiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItMzEiIEhlaWdodD0iMTAwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+PC9IeXBlcnRleHQ+CisgICAgICAgIDxIeXBlcnRleHQgTmFtZT0iU3VjY2Vzc1RleHQiIFg9IjIwNSIgWT0iNzEiIFdpZHRoPSItNzEiIEhlaWdodD0iMTUwIiBGb250SWQ9IjMiIERpc2FibGVQcmVmaXg9InllcyI+PC9IeXBlcnRleHQ+CiAKLSAgICAgICAgPFRleHQgTmFtZT0iU3VjY2Vzc1Jlc3RhcnRUZXh0IiBYPSIyMDUiIFk9Ii0xMDAiIFdpZHRoPSItMTEiIEhlaWdodD0iMzQiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0VGV4dCk8L1RleHQ+Ci0gICAgICAgIDxCdXR0b24gTmFtZT0iTGF1bmNoQnV0dG9uIiBYPSIxODUiIFk9Ii01MCIgV2lkdGg9Ii0xMSIgSGVpZ2h0PSI1OSIgVGFiU3RvcD0ieWVzIiBGb250SWQ9IjMiIEhleFN0eWxlPSIweEYiIEhpZGVXaGVuRGlzYWJsZWQ9InllcyI+Iyhsb2MuU3VjY2Vzc0xhdW5jaEJ1dHRvbik8L0J1dHRvbj4KKyAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbiIgWD0iMTg1IiBZPSItNzAiIFdpZHRoPSItMTEiIEhlaWdodD0iODEiIFRhYlN0b3A9InllcyIgRm9udElkPSIzIiBIZXhTdHlsZT0iMHhFIiBIaWRlV2hlbkRpc2FibGVkPSJ5ZXMiPiMobG9jLlN1Y2Nlc3NNYXhQYXRoQnV0dG9uKTwvQnV0dG9uPgorCisgICAgICAgIDxUZXh0IE5hbWU9IlN1Y2Nlc3NSZXN0YXJ0VGV4dCIgWD0iMjA1IiBZPSItNDAiIFdpZHRoPSItMTEiIEhlaWdodD0iMzQiIEZvbnRJZD0iMyIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIiBEaXNhYmxlUHJlZml4PSJ5ZXMiPiMobG9jLlN1Y2Nlc3NSZXN0YXJ0VGV4dCk8L1RleHQ+CiAgICAgICAgIDxCdXR0b24gTmFtZT0iU3VjY2Vzc1Jlc3RhcnRCdXR0b24iIFg9Ii0xMDEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCIgSGlkZVdoZW5EaXNhYmxlZD0ieWVzIj4jKGxvYy5TdWNjZXNzUmVzdGFydEJ1dHRvbik8L0J1dHRvbj4KICAgICAgICAgPEJ1dHRvbiBOYW1lPSJTdWNjZXNzQ2FuY2VsQnV0dG9uIiBYPSItMTEiIFk9Ii0xMSIgV2lkdGg9Ijg1IiBIZWlnaHQ9IjI3IiBUYWJTdG9wPSJ5ZXMiIEZvbnRJZD0iMCI+Iyhsb2MuQ2xvc2VCdXR0b24pPC9CdXR0b24+CiAgICAgPC9QYWdlPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bCBiL1Rvb2xzL21zaS9idW5kbGUvRGVmYXVsdC53eGwKaW5kZXggZWQ3OTI0Ni4uNDM1MDZkNiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2J1bmRsZS9EZWZhdWx0Lnd4bAorKysgYi9Ub29scy9tc2kvYnVuZGxlL0RlZmF1bHQud3hsCkBAIC0xNDIsNCArMTQyLDcgQEAKICAgPFN0cmluZyBJZD0iRmFpbHVyZVdTMkszT3JFYXJsaWVyIj5XaW5kb3dzIFNlcnZlciAyMDA4IFNQMiBvciBsYXRlciBpcyByZXF1aXJlZCB0byBpbnN0YWxsIGFuZCB1c2UgW1dpeEJ1bmRsZU5hbWVdLgogCiBWaXNpdCAmbHQ7YSBocmVmPSJodHRwczovL3d3dy5weXRob24ub3JnLyImZ3Q7cHl0aG9uLm9yZyZsdDsvYSZndDsgdG8gZG93bmxvYWQgUHl0aG9uIDMuNC48L1N0cmluZz4KKworICA8U3RyaW5nIElkPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbiI+RGlzYWJsZSBwYXRoIGxlbmd0aCBsaW1pdDwvU3RyaW5nPgorICA8U3RyaW5nIElkPSJTdWNjZXNzTWF4UGF0aEJ1dHRvbk5vdGUiPkNoYW5nZXMgeW91ciBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gdG8gYWxsb3cgcHJvZ3JhbXMsIGluY2x1ZGluZyBQeXRob24sIHRvIGJ5cGFzcyB0aGUgMjYwIGNoYXJhY3RlciAiTUFYX1BBVEgiIGxpbWl0YXRpb24uPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcCBiL1Rvb2xzL21zaS9idW5kbGUvYm9vdHN0cmFwL1B5dGhvbkJvb3RzdHJhcHBlckFwcGxpY2F0aW9uLmNwcAppbmRleCA2YTY3ZWUyLi5lODg5ODFmIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2Jvb3RzdHJhcC9QeXRob25Cb290c3RyYXBwZXJBcHBsaWNhdGlvbi5jcHAKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9ib290c3RyYXAvUHl0aG9uQm9vdHN0cmFwcGVyQXBwbGljYXRpb24uY3BwCkBAIC0xMSwxMCArMTEsNiBAQAogI2luY2x1ZGUgInBjaC5oIgogCiBzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1dJTkRPV19DTEFTUyA9IEwiUHl0aG9uQkEiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEggPSBMIkxhdW5jaFRhcmdldCI7Ci1zdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQgPSBMIkxhdW5jaFRhcmdldEVsZXZhdGVkSWQiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTID0gTCJMYXVuY2hBcmd1bWVudHMiOwotc3RhdGljIGNvbnN0IExQQ1dTVFIgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfSElEREVOID0gTCJMYXVuY2hIaWRkZW4iOwogc3RhdGljIGNvbnN0IERXT1JEIFBZQkFfQUNRVUlSRV9QRVJDRU5UQUdFID0gMzA7CiBzdGF0aWMgY29uc3QgTFBDV1NUUiBQWUJBX1ZBUklBQkxFX0JVTkRMRV9GSUxFX1ZFUlNJT04gPSBMIldpeEJ1bmRsZUZpbGVWZXJzaW9uIjsKIApAQCAtMTI5LDExICsxMjUsMTEgQEAKICAgICBJRF9QUk9HUkVTU19DQU5DRUxfQlVUVE9OLAogCiAgICAgLy8gU3VjY2VzcyBwYWdlCi0gICAgSURfTEFVTkNIX0JVVFRPTiwKICAgICBJRF9TVUNDRVNTX1RFWFQsCiAgICAgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsCiAgICAgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwKICAgICBJRF9TVUNDRVNTX0NBTkNFTF9CVVRUT04sCisgICAgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sCiAKICAgICAvLyBGYWlsdXJlIHBhZ2UKICAgICBJRF9GQUlMVVJFX0xPR0ZJTEVfTElOSywKQEAgLTE4OCwxMSArMTg0LDExIEBACiAgICAgeyBJRF9PVkVSQUxMX1BST0dSRVNTX1RFWFQsIEwiT3ZlcmFsbFByb2dyZXNzVGV4dCIgfSwKICAgICB7IElEX1BST0dSRVNTX0NBTkNFTF9CVVRUT04sIEwiUHJvZ3Jlc3NDYW5jZWxCdXR0b24iIH0sCiAKLSAgICB7IElEX0xBVU5DSF9CVVRUT04sIEwiTGF1bmNoQnV0dG9uIiB9LAogICAgIHsgSURfU1VDQ0VTU19URVhULCBMIlN1Y2Nlc3NUZXh0IiB9LAogICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX1RFWFQsIEwiU3VjY2Vzc1Jlc3RhcnRUZXh0IiB9LAogICAgIHsgSURfU1VDQ0VTU19SRVNUQVJUX0JVVFRPTiwgTCJTdWNjZXNzUmVzdGFydEJ1dHRvbiIgfSwKICAgICB7IElEX1NVQ0NFU1NfQ0FOQ0VMX0JVVFRPTiwgTCJTdWNjZXNzQ2FuY2VsQnV0dG9uIiB9LAorICAgIHsgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEwiU3VjY2Vzc01heFBhdGhCdXR0b24iIH0sCiAKICAgICB7IElEX0ZBSUxVUkVfTE9HRklMRV9MSU5LLCBMIkZhaWx1cmVMb2dGaWxlTGluayIgfSwKICAgICB7IElEX0ZBSUxVUkVfTUVTU0FHRV9URVhULCBMIkZhaWx1cmVNZXNzYWdlVGV4dCIgfSwKQEAgLTQzNiw2ICs0MzIsMTEgQEAKICAgICAgICAgY2FzZSBJRF9VTklOU1RBTExfQlVUVE9OOgogICAgICAgICAgICAgT25QbGFuKEJPT1RTVFJBUFBFUl9BQ1RJT05fVU5JTlNUQUxMKTsKICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT046CisgICAgICAgICAgICBFbmFibGVNYXhQYXRoU3VwcG9ydCgpOworICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAKICAgICBMRXhpdDoKQEAgLTUzMyw5ICs1MzQsOCBAQAogICAgIH0KIAogICAgIHZvaWQgU3VjY2Vzc1BhZ2VfU2hvdygpIHsKLSAgICAgICAgLy8gb24gdGhlICJTdWNjZXNzIiBwYWdlLCBjaGVjayBpZiB0aGUgcmVzdGFydCBvciBsYXVuY2ggYnV0dG9uIHNob3VsZCBiZSBlbmFibGVkLgorICAgICAgICAvLyBvbiB0aGUgIlN1Y2Nlc3MiIHBhZ2UsIGNoZWNrIGlmIHRoZSByZXN0YXJ0IGJ1dHRvbiBzaG91bGQgYmUgZW5hYmxlZC4KICAgICAgICAgQk9PTCBzaG93UmVzdGFydEJ1dHRvbiA9IEZBTFNFOwotICAgICAgICBCT09MIGxhdW5jaFRhcmdldEV4aXN0cyA9IEZBTFNFOwogICAgICAgICBMT0NfU1RSSU5HICpzdWNjZXNzVGV4dCA9IG51bGxwdHI7CiAgICAgICAgIEhSRVNVTFQgaHIgPSBTX09LOwogICAgICAgICAKQEAgLTU0Myw4ICs1NDMsNiBAQAogICAgICAgICAgICAgaWYgKEJPT1RTVFJBUFBFUl9SRVNUQVJUX1BST01QVCA9PSBfY29tbWFuZC5yZXN0YXJ0KSB7CiAgICAgICAgICAgICAgICAgc2hvd1Jlc3RhcnRCdXR0b24gPSBUUlVFOwogICAgICAgICAgICAgfQotICAgICAgICB9IGVsc2UgaWYgKFRoZW1lQ29udHJvbEV4aXN0cyhfdGhlbWUsIElEX0xBVU5DSF9CVVRUT04pKSB7Ci0gICAgICAgICAgICBsYXVuY2hUYXJnZXRFeGlzdHMgPSBCYWxTdHJpbmdWYXJpYWJsZUV4aXN0cyhQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCk7CiAgICAgICAgIH0KIAogICAgICAgICBzd2l0Y2ggKF9wbGFubmVkQWN0aW9uKSB7CkBAIC01NzEsOSArNTY5LDQxIEBACiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9MQVVOQ0hfQlVUVE9OLCBsYXVuY2hUYXJnZXRFeGlzdHMgJiYgQk9PVFNUUkFQUEVSX0FDVElPTl9VTklOU1RBTEwgPCBfcGxhbm5lZEFjdGlvbik7CiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9URVhULCBzaG93UmVzdGFydEJ1dHRvbik7CiAgICAgICAgIFRoZW1lQ29udHJvbEVuYWJsZShfdGhlbWUsIElEX1NVQ0NFU1NfUkVTVEFSVF9CVVRUT04sIHNob3dSZXN0YXJ0QnV0dG9uKTsKKworICAgICAgICBpZiAoX2NvbW1hbmQuYWN0aW9uICE9IEJPT1RTVFJBUFBFUl9BQ1RJT05fSU5TVEFMTCB8fAorICAgICAgICAgICAgIUlzV2luZG93c1ZlcnNpb25PckdyZWF0ZXIoMTAsIDAsIDApKSB7CisgICAgICAgICAgICBUaGVtZUNvbnRyb2xFbmFibGUoX3RoZW1lLCBJRF9TVUNDRVNTX01BWF9QQVRIX0JVVFRPTiwgRkFMU0UpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgRFdPUkQgZGF0YVR5cGUgPSAwLCBidWZmZXIgPSAwLCBidWZmZXJMZW4gPSBzaXplb2YoYnVmZmVyKTsKKyAgICAgICAgICAgIEhLRVkgaEtleTsKKyAgICAgICAgICAgIExSRVNVTFQgcmVzID0gUmVnT3BlbktleUV4VygKKyAgICAgICAgICAgICAgICBIS0VZX0xPQ0FMX01BQ0hJTkUsCisgICAgICAgICAgICAgICAgTCJTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtIiwKKyAgICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAgIEtFWV9SRUFELAorICAgICAgICAgICAgICAgICZoS2V5CisgICAgICAgICAgICApOworICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKSB7CisgICAgICAgICAgICAgICAgcmVzID0gUmVnUXVlcnlWYWx1ZUV4VyhoS2V5LCBMIkxvbmdQYXRoc0VuYWJsZWQiLCBudWxscHRyLCAmZGF0YVR5cGUsCisgICAgICAgICAgICAgICAgICAgIChMUEJZVEUpJmJ1ZmZlciwgJmJ1ZmZlckxlbik7CisgICAgICAgICAgICAgICAgUmVnQ2xvc2VLZXkoaEtleSk7CisgICAgICAgICAgICB9CisgICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkZhaWxlZCB0byBvcGVuIFNZU1RFTVxcQ3VycmVudENvbnRyb2xTZXRcXENvbnRyb2xcXEZpbGVTeXN0ZW06IGVycm9yIGNvZGUgJWQiLCByZXMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTICYmIGRhdGFUeXBlID09IFJFR19EV09SRCAmJiBidWZmZXIgPT0gMCkgeworICAgICAgICAgICAgICAgIFRoZW1lQ29udHJvbEVsZXZhdGVzKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIFRSVUUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgaWYgKHJlcyA9PSBFUlJPUl9TVUNDRVNTKQorICAgICAgICAgICAgICAgICAgICBCYWxMb2coQk9PVFNUUkFQUEVSX0xPR19MRVZFTF9TVEFOREFSRCwgIkZhaWxlZCB0byByZWFkIExvbmdQYXRoc0VuYWJsZWQgdmFsdWU6IGVycm9yIGNvZGUgJWQiLCByZXMpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJIaWRpbmcgTUFYX1BBVEggYnV0dG9uIGJlY2F1c2UgaXQgaXMgYWxyZWFkeSBlbmFibGVkIik7CisgICAgICAgICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfU1VDQ0VTU19NQVhfUEFUSF9CVVRUT04sIEZBTFNFKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgIH0KIAogICAgIHZvaWQgRmFpbHVyZVBhZ2VfU2hvdygpIHsKQEAgLTYyNiw2ICs2NTYsMzQgQEAKICAgICAgICAgVGhlbWVDb250cm9sRW5hYmxlKF90aGVtZSwgSURfRkFJTFVSRV9SRVNUQVJUX0JVVFRPTiwgc2hvd1Jlc3RhcnRCdXR0b24pOwogICAgIH0KIAorICAgIHN0YXRpYyB2b2lkIEVuYWJsZU1heFBhdGhTdXBwb3J0KCkgeworICAgICAgICBMUFdTVFIgdGFyZ2V0RGlyID0gbnVsbHB0ciwgZGVmYXVsdERpciA9IG51bGxwdHI7CisgICAgICAgIEhSRVNVTFQgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShMIlRhcmdldERpciIsICZ0YXJnZXREaXIpOworICAgICAgICBpZiAoRkFJTEVEKGhyKSB8fCAhdGFyZ2V0RGlyIHx8ICF0YXJnZXREaXJbMF0pIHsKKyAgICAgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX0VSUk9SLCAiRmFpbGVkIHRvIGdldCBUYXJnZXREaXIiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIExQV1NUUiBweXRob253ID0gbnVsbHB0cjsKKyAgICAgICAgU3RyQWxsb2NGb3JtYXR0ZWQoJnB5dGhvbncsIEwiJWxzXFxweXRob253LmV4ZSIsIHRhcmdldERpcik7CisgICAgICAgIGlmICghcHl0aG9udyB8fCAhcHl0aG9ud1swXSkgeworICAgICAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfRVJST1IsICJGYWlsZWQgdG8gY29uc3RydWN0IHB5dGhvbncuZXhlIHBhdGgiKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIExQQ1dTVFIgYXJndW1lbnRzID0gTCItYyBcImltcG9ydCB3aW5yZWc7ICIKKyAgICAgICAgICAgICJ3aW5yZWcuU2V0VmFsdWVFeCgiCisgICAgICAgICAgICAgICAgIndpbnJlZy5DcmVhdGVLZXkod2lucmVnLkhLRVlfTE9DQUxfTUFDSElORSwgIgorICAgICAgICAgICAgICAgICAgICAicidTWVNURU1cXEN1cnJlbnRDb250cm9sU2V0XFxDb250cm9sXFxGaWxlU3lzdGVtJyksICIKKyAgICAgICAgICAgICAgICAiJ0xvbmdQYXRoc0VuYWJsZWQnLCAiCisgICAgICAgICAgICAgICAgIk5vbmUsICIKKyAgICAgICAgICAgICAgICAid2lucmVnLlJFR19EV09SRCwgIgorICAgICAgICAgICAgICAgICIxIgorICAgICAgICAgICAgIilcIiI7CisgICAgICAgIEJhbExvZyhCT09UU1RSQVBQRVJfTE9HX0xFVkVMX1NUQU5EQVJELCAiRXhlY3V0aW5nICVscyAlbHMiLCBweXRob253LCBhcmd1bWVudHMpOworICAgICAgICBISU5TVEFOQ0UgcmVzID0gU2hlbGxFeGVjdXRlVygwLCBMInJ1bmFzIiwgcHl0aG9udywgYXJndW1lbnRzLCBOVUxMLCBTV19ISURFKTsKKyAgICAgICAgQmFsTG9nKEJPT1RTVFJBUFBFUl9MT0dfTEVWRUxfU1RBTkRBUkQsICJyZXR1cm4gY29kZSAweCUwOHgiLCByZXMpOworICAgIH0KIAogcHVibGljOiAvLyBJQm9vdHN0cmFwcGVyQXBwbGljYXRpb24KICAgICB2aXJ0dWFsIFNURE1FVEhPRElNUCBPblN0YXJ0dXAoKSB7CkBAIC0xMjE2LDEyICsxMjc0LDYgQEAKICAgICB9CiAKICAgICB2aXJ0dWFsIFNURE1FVEhPRElNUF8odm9pZCkgT25MYXVuY2hBcHByb3ZlZEV4ZUNvbXBsZXRlKF9faW4gSFJFU1VMVCBoclN0YXR1cywgX19pbiBEV09SRCAvKnByb2Nlc3NJZCovKSB7Ci0gICAgICAgIGlmIChIUkVTVUxUX0ZST01fV0lOMzIoRVJST1JfQUNDRVNTX0RFTklFRCkgPT0gaHJTdGF0dXMpIHsKLSAgICAgICAgICAgIC8vdHJ5IHdpdGggU2hlbEV4ZWMgbmV4dCB0aW1lCi0gICAgICAgICAgICBPbkNsaWNrTGF1bmNoQnV0dG9uKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICA6OlBvc3RNZXNzYWdlVyhfaFduZCwgV01fQ0xPU0UsIDAsIDApOwotICAgICAgICB9CiAgICAgfQogCiAKQEAgLTE4NjcsMTAgKzE5MTksNiBAQAogICAgICAgICAgICAgc3dpdGNoIChMT1dPUkQod1BhcmFtKSkgewogICAgICAgICAgICAgLy8gQ3VzdG9taXplIGNvbW1hbmRzCiAgICAgICAgICAgICAvLyBTdWNjZXNzL2ZhaWx1cmUgY29tbWFuZHMKLSAgICAgICAgICAgIGNhc2UgSURfTEFVTkNIX0JVVFRPTjoKLSAgICAgICAgICAgICAgICBwQkEtPk9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLQogICAgICAgICAgICAgY2FzZSBJRF9TVUNDRVNTX1JFU1RBUlRfQlVUVE9OOiBfX2ZhbGx0aHJvdWdoOwogICAgICAgICAgICAgY2FzZSBJRF9GQUlMVVJFX1JFU1RBUlRfQlVUVE9OOgogICAgICAgICAgICAgICAgIHBCQS0+T25DbGlja1Jlc3RhcnRCdXR0b24oKTsKQEAgLTIzNzIsNjkgKzI0MjAsNiBAQAogICAgIH0KIAogCi0gICAgLy8KLSAgICAvLyBPbkNsaWNrTGF1bmNoQnV0dG9uIC0gbGF1bmNoIHRoZSBhcHAgZnJvbSB0aGUgc3VjY2VzcyBwYWdlLgotICAgIC8vCi0gICAgdm9pZCBPbkNsaWNrTGF1bmNoQnV0dG9uKCkgewotICAgICAgICBIUkVTVUxUIGhyID0gU19PSzsKLSAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekxhdW5jaFRhcmdldCA9IG51bGxwdHI7Ci0gICAgICAgIExQV1NUUiBzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzID0gbnVsbHB0cjsKLSAgICAgICAgTFBXU1RSIHNjekFyZ3VtZW50cyA9IG51bGxwdHI7Ci0gICAgICAgIGludCBuQ21kU2hvdyA9IFNXX1NIT1dOT1JNQUw7Ci0KLSAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfUEFUSCwgJnNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZ2V0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGUgJyVscycuIiwgUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX1BBVEgpOwotCi0gICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0LCAmc2N6TGF1bmNoVGFyZ2V0KTsKLSAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gZm9ybWF0IGxhdW5jaCB0YXJnZXQgdmFyaWFibGU6ICVscyIsIHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfVEFSR0VUX0VMRVZBVEVEX0lEKSkgewotICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9UQVJHRVRfRUxFVkFURURfSUQsICZzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkKTsKLSAgICAgICAgICAgIEJhbEV4aXRPbkZhaWx1cmUxKGhyLCAiRmFpbGVkIHRvIGdldCBsYXVuY2ggdGFyZ2V0IGVsZXZhdGVkIGlkICclbHMnLiIsIFBZQkFfVkFSSUFCTEVfTEFVTkNIX1RBUkdFVF9FTEVWQVRFRF9JRCk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoQmFsU3RyaW5nVmFyaWFibGVFeGlzdHMoUFlCQV9WQVJJQUJMRV9MQVVOQ0hfQVJHVU1FTlRTKSkgewotICAgICAgICAgICAgaHIgPSBCYWxHZXRTdHJpbmdWYXJpYWJsZShQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMsICZzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cyk7Ci0gICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBnZXQgbGF1bmNoIGFyZ3VtZW50cyAnJWxzJy4iLCBQWUJBX1ZBUklBQkxFX0xBVU5DSF9BUkdVTUVOVFMpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKEJhbFN0cmluZ1ZhcmlhYmxlRXhpc3RzKFBZQkFfVkFSSUFCTEVfTEFVTkNIX0hJRERFTikpIHsKLSAgICAgICAgICAgIG5DbWRTaG93ID0gU1dfSElERTsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChzY3pMYXVuY2hUYXJnZXRFbGV2YXRlZElkICYmICFfdHJpZWRUb0xhdW5jaEVsZXZhdGVkKSB7Ci0gICAgICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gVFJVRTsKLSAgICAgICAgICAgIGhyID0gX2VuZ2luZS0+TGF1bmNoQXBwcm92ZWRFeGUoX2hXbmQsIHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQsIHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAwKTsKLSAgICAgICAgICAgIGlmIChGQUlMRUQoaHIpKSB7Ci0gICAgICAgICAgICAgICAgQmFsTG9nRXJyb3IoaHIsICJGYWlsZWQgdG8gbGF1bmNoIGVsZXZhdGVkIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0RWxldmF0ZWRJZCk7Ci0KLSAgICAgICAgICAgICAgICAvL3RyeSB3aXRoIFNoZWxFeGVjIG5leHQgdGltZQotICAgICAgICAgICAgICAgIE9uQ2xpY2tMYXVuY2hCdXR0b24oKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzY3pVbmZvcm1hdHRlZEFyZ3VtZW50cykgewotICAgICAgICAgICAgICAgIGhyID0gQmFsRm9ybWF0U3RyaW5nKHNjelVuZm9ybWF0dGVkQXJndW1lbnRzLCAmc2N6QXJndW1lbnRzKTsKLSAgICAgICAgICAgICAgICBCYWxFeGl0T25GYWlsdXJlMShociwgIkZhaWxlZCB0byBmb3JtYXQgbGF1bmNoIGFyZ3VtZW50cyB2YXJpYWJsZTogJWxzIiwgc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICAgICAgfQotCi0gICAgICAgICAgICBociA9IFNoZWxFeGVjKHNjekxhdW5jaFRhcmdldCwgc2N6QXJndW1lbnRzLCBMIm9wZW4iLCBudWxscHRyLCBuQ21kU2hvdywgX2hXbmQsIG51bGxwdHIpOwotICAgICAgICAgICAgQmFsRXhpdE9uRmFpbHVyZTEoaHIsICJGYWlsZWQgdG8gbGF1bmNoIHRhcmdldDogJWxzIiwgc2N6TGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICAgICAgOjpQb3N0TWVzc2FnZVcoX2hXbmQsIFdNX0NMT1NFLCAwLCAwKTsKLSAgICAgICAgfQotCi0gICAgTEV4aXQ6Ci0gICAgICAgIFN0clNlY3VyZVplcm9GcmVlU3RyaW5nKHNjekFyZ3VtZW50cyk7Ci0gICAgICAgIFJlbGVhc2VTdHIoc2N6VW5mb3JtYXR0ZWRBcmd1bWVudHMpOwotICAgICAgICBSZWxlYXNlU3RyKHNjekxhdW5jaFRhcmdldEVsZXZhdGVkSWQpOwotICAgICAgICBTdHJTZWN1cmVaZXJvRnJlZVN0cmluZyhzY3pMYXVuY2hUYXJnZXQpOwotICAgICAgICBSZWxlYXNlU3RyKHNjelVuZm9ybWF0dGVkTGF1bmNoVGFyZ2V0KTsKLQotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAKICAgICAvLwogICAgIC8vIE9uQ2xpY2tSZXN0YXJ0QnV0dG9uIC0gYWxsb3dzIHRoZSByZXN0YXJ0IGFuZCBjbG9zZXMgdGhlIGFwcC4KQEAgLTMxNTcsNyArMzE0Miw2IEBACiAgICAgICAgIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2UgPSBVSU5UX01BWDsKICAgICAgICAgX3Rhc2tiYXJCdXR0b25PSyA9IEZBTFNFOwogICAgICAgICBfc2hvd2luZ0ludGVybmFsVUlUaGlzUGFja2FnZSA9IEZBTFNFOwotICAgICAgICBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkID0gRkFMU0U7CiAKICAgICAgICAgX3N1cHByZXNzUGFpbnQgPSBGQUxTRTsKIApAQCAtMzI0Miw3ICszMjI2LDYgQEAKICAgICBVSU5UIF90YXNrYmFyQnV0dG9uQ3JlYXRlZE1lc3NhZ2U7CiAgICAgQk9PTCBfdGFza2JhckJ1dHRvbk9LOwogICAgIEJPT0wgX3Nob3dpbmdJbnRlcm5hbFVJVGhpc1BhY2thZ2U7Ci0gICAgQk9PTCBfdHJpZWRUb0xhdW5jaEVsZXZhdGVkOwogCiAgICAgQk9PTCBfc3VwcHJlc3NQYWludDsKIApkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUuaWNvCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWI2MjllLi4wMDAwMDAwCi0tLSBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLmljbworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cyBiL1Rvb2xzL21zaS9idW5kbGUvYnVuZGxlLnd4cwppbmRleCAzODMwN2UwLi5jODllNmVlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvYnVuZGxlL2J1bmRsZS53eHMKKysrIGIvVG9vbHMvbXNpL2J1bmRsZS9idW5kbGUud3hzCkBAIC00LDcgKzQsNyBAQAogICA8QnVuZGxlIE5hbWU9IiEobG9jLkZ1bGxQcm9kdWN0TmFtZSkiCiAgICAgICAgICAgVXBncmFkZUNvZGU9IiQodmFyLkNvcmVVcGdyYWRlQ29kZSkiCiAgICAgICAgICAgVmVyc2lvbj0iJCh2YXIuVmVyc2lvbikiCi0gICAgICAgICAgSWNvblNvdXJjZUZpbGU9ImJ1bmRsZS5pY28iCisgICAgICAgICAgSWNvblNvdXJjZUZpbGU9Ii4uXC4uXC4uXFBDXGljb25zXHNldHVwLmljbyIKICAgICAgICAgICBNYW51ZmFjdHVyZXI9IiEobG9jLk1hbnVmYWN0dXJlcikiCiAgICAgICAgICAgQWJvdXRVcmw9Imh0dHA6Ly93d3cucHl0aG9uLm9yZy8iCiAgICAgICAgICAgRGlzYWJsZU1vZGlmeT0iYnV0dG9uIgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2NvbW1vbi53eHMgYi9Ub29scy9tc2kvY29tbW9uLnd4cwppbmRleCA0ZWZhZDY1Li4zOThkOTRhIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvY29tbW9uLnd4cworKysgYi9Ub29scy9tc2kvY29tbW9uLnd4cwpAQCAtMSw2ICsxLDEwIEBACiA8P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJVVEYtOCI/PgogPFdpeCB4bWxucz0iaHR0cDovL3NjaGVtYXMubWljcm9zb2Z0LmNvbS93aXgvMjAwNi93aSI+CiAgICAgPEZyYWdtZW50PgorICAgICAgICA8UHJvcGVydHkgSWQ9IlJPT1RSRUdJU1RSWUtFWSIgVmFsdWU9IlNvZnR3YXJlXFB5dGhvblxQeXRob25Db3JlIiAvPgorICAgIDwvRnJhZ21lbnQ+CisgICAgCisgICAgPEZyYWdtZW50PgogICAgICAgICA8UHJvcGVydHkgSWQ9IlJFR0lTVFJZS0VZIiBWYWx1ZT0iU29mdHdhcmVcUHl0aG9uXFB5dGhvbkNvcmVcJCh2YXIuU2hvcnRWZXJzaW9uKSQodmFyLlB5QXJjaEV4dCkkKHZhci5QeVRlc3RFeHQpIiAvPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCkBAIC0xNiwxMCArMjAsMTIgQEAKICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iVXBncmFkZVRhYmxlIiBWYWx1ZT0iMSIgLz4KICAgICAgICAgCisgICAgICAgIDw/aWZuZGVmIFN1cHByZXNzVXBncmFkZVRhYmxlID8+CiAgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KICAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iJCh2YXIuVXBncmFkZU1pbmltdW1WZXJzaW9uKSIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KICAgICAgICAgPC9VcGdyYWRlPgorICAgICAgICA8P2VuZGlmID8+CiAgICAgICAgIAogICAgICAgICA8P2lmZGVmIENvcmVVcGdyYWRlQ29kZSA/PgogICAgICAgICA8P2lmICQodmFyLlVwZ3JhZGVDb2RlKSE9JCh2YXIuQ29yZVVwZ3JhZGVDb2RlKSA/PgpAQCAtNDAsNyArNDYsNyBAQAogICAgIAogICAgIDxGcmFnbWVudD4KICAgICAgICAgPCEtLSBJbmNsdWRlIGFuIGljb24gZm9yIHRoZSBQcm9ncmFtcyBhbmQgRmVhdHVyZXMgZGlhbG9nIC0tPgotICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENccHljb24uaWNvIiAvPgorICAgICAgICA8SWNvbiBJZD0iQVJQSWNvbiIgU291cmNlRmlsZT0iIShiaW5kcGF0aC5zcmMpUENcaWNvbnNccHl0aG9uLmljbyIgLz4KICAgICAgICAgPFByb3BlcnR5IElkPSJBUlBQUk9EVUNUSUNPTiIgVmFsdWU9IkFSUEljb24iIC8+CiAgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQTk9NT0RJRlkiIFZhbHVlPSIxIiAvPgogICAgICAgICA8UHJvcGVydHkgSWQ9IkRJU0FCTEVBRFZUU0hPUlRDVVRTIiBWYWx1ZT0iMSIgLz4KQEAgLTU3LDcgKzYzLDkgQEAKICAgICA8IS0tIFRvcC1sZXZlbCBkaXJlY3RvcmllcyAtLT4KICAgICA8RnJhZ21lbnQ+CiAgICAgICAgIDxEaXJlY3RvcnlSZWYgSWQ9Ikluc3RhbGxEaXJlY3RvcnkiPgotICAgICAgICAgICAgPERpcmVjdG9yeSBJZD0iRExMcyIgTmFtZT0iRExMcyIgLz4KKyAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkRMTHMiIE5hbWU9IkRMTHMiPgorICAgICAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkNhdGFsb2dzIiAvPgorICAgICAgICAgICAgPC9EaXJlY3Rvcnk+CiAgICAgICAgIDwvRGlyZWN0b3J5UmVmPgogICAgIDwvRnJhZ21lbnQ+CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9jb21tb25fZW4tVVMud3hsX3RlbXBsYXRlIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKaW5kZXggOGQwMzUyNi4uYzk1YzI3MSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKKysrIGIvVG9vbHMvbXNpL2NvbW1vbl9lbi1VUy53eGxfdGVtcGxhdGUKQEAgLTE0LDQgKzE0LDUgQEAKICAgICA8U3RyaW5nIElkPSJOb0Rvd25ncmFkZSI+QSBuZXdlciB2ZXJzaW9uIG9mICEobG9jLlByb2R1Y3ROYW1lKSBpcyBhbHJlYWR5IGluc3RhbGxlZC48L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJJbmNvcnJlY3RDb3JlIj5BbiBpbmNvcnJlY3QgdmVyc2lvbiBvZiBhIHByZXJlcXVpc2l0ZSBwYWNrYWdlIGlzIGluc3RhbGxlZC4gUGxlYXNlIHVuaW5zdGFsbCBhbnkgb3RoZXIgdmVyc2lvbnMgb2YgIShsb2MuUHJvZHVjdE5hbWUpIGFuZCB0cnkgaW5zdGFsbGluZyB0aGlzIGFnYWluLjwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9Ik5vVGFyZ2V0RGlyIj5UaGUgVEFSR0VURElSIHZhcmlhYmxlIG11c3QgYmUgcHJvdmlkZWQgd2hlbiBpbnZva2luZyB0aGlzIGluc3RhbGxlci48L1N0cmluZz4KKyAgICA8U3RyaW5nIElkPSJNYW51ZmFjdHVyZXJTdXBwb3J0VXJsIj5odHRwOi8vd3d3LnB5dGhvbi5vcmcvPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2ogYi9Ub29scy9tc2kvZXhlL2V4ZS53aXhwcm9qCmluZGV4IGQyNmE2MDMuLjI0ZGYwZjUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGUud2l4cHJvagpAQCAtMTQsNiArMTQsNyBAQAogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZS53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGUud3hzIGIvVG9vbHMvbXNpL2V4ZS9leGUud3hzCmluZGV4IDE1NGNlZTUuLjAzZDQzYzYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlLnd4cworKysgYi9Ub29scy9tc2kvZXhlL2V4ZS53eHMKQEAgLTksNiArOSw3IEBACiAgICAgICAgIAogICAgICAgICA8RmVhdHVyZSBJZD0iRGVmYXVsdEZlYXR1cmUiIEFsbG93QWR2ZXJ0aXNlPSJubyIgVGl0bGU9IiEobG9jLlRpdGxlKSIgRGVzY3JpcHRpb249IiEobG9jLkRlc2NyaXB0aW9uKSI+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImV4ZV9weXRob24iIFByaW1hcnk9InllcyIgLz4KKyAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0iZXhlX3JlZyIgUHJpbWFyeT0ieWVzIiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfdHh0IiAvPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJleGVfaWNvbnMiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CkBAIC0yNCw3ICsyNSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIFdvcmtpbmdEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIC8+CiAgICAgICAgICAgICAgICAgPFJlbW92ZUZvbGRlciBJZD0iUmVtb3ZlX01lbnVEaXIiIERpcmVjdG9yeT0iTWVudURpciIgT249InVuaW5zdGFsbCIgLz4KICAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUkVHSVNUUllLRVldIj4KLSAgICAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgS2V5PSJJbnN0YWxsUGF0aFxJbnN0YWxsR3JvdXAiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLlByb2R1Y3ROYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBLZXk9Ikluc3RhbGxlZEZlYXR1cmVzIiBOYW1lPSJTaG9ydGN1dHMiIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlZlcnNpb24pIiAvPgogICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX2Qud2l4cHJvagppbmRleCAyNzU0NWNhLi5jZjA4NWJlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9kLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZC53aXhwcm9qCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX2Qud3hzIiAvPgogICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfZmlsZXMud3hzIiAvPgorICAgICAgICA8Q29tcGlsZSBJbmNsdWRlPSJleGVfcmVnLnd4cyIgLz4KICAgICA8L0l0ZW1Hcm91cD4KICAgICA8SXRlbUdyb3VwPgogICAgICAgICA8RW1iZWRkZWRSZXNvdXJjZSBJbmNsdWRlPSIqLnd4bCIgLz4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZSBiL1Rvb2xzL21zaS9leGUvZXhlX2VuLVVTLnd4bF90ZW1wbGF0ZQppbmRleCA1NzdmYmU1Li4xZjllMjkwIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvZXhlL2V4ZV9lbi1VUy53eGxfdGVtcGxhdGUKKysrIGIvVG9vbHMvbXNpL2V4ZS9leGVfZW4tVVMud3hsX3RlbXBsYXRlCkBAIC00LDQgKzQsNSBAQAogICAgIDxTdHJpbmcgSWQ9IlNob3J0RGVzY3JpcHRvciI+ZXhlY3V0YWJsZTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0TmFtZSI+UHl0aG9uIHt7U2hvcnRWZXJzaW9ufX0gKHt7Qml0bmVzc319KTwvU3RyaW5nPgogICAgIDxTdHJpbmcgSWQ9IlNob3J0Y3V0RGVzY3JpcHRpb24iPkxhdW5jaGVzIHRoZSAhKGxvYy5Qcm9kdWN0TmFtZSkgaW50ZXJwcmV0ZXIuPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iU3VwcG9ydFVybCI+aHR0cDovL3d3dy5weXRob24ub3JnLzwvU3RyaW5nPgogPC9XaXhMb2NhbGl6YXRpb24+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMgYi9Ub29scy9tc2kvZXhlL2V4ZV9maWxlcy53eHMKaW5kZXggOWU0N2I1ZC4uMDEzODU4NyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2V4ZS9leGVfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX2ZpbGVzLnd4cwpAQCAtMjgsNiArMjgsOSBAQAogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweXRob253LmV4ZSIgRGlyZWN0b3J5PSJJbnN0YWxsRGlyZWN0b3J5IiBHdWlkPSIkKHZhci5QeXRob253RXhlQ29tcG9uZW50R3VpZCkiPgogICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbncuZXhlIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5S2V5IFJvb3Q9IkhLTVUiIEtleT0iW1JFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iSW5zdGFsbFBhdGgiIE5hbWU9IldpbmRvd2VkRXhlY3V0YWJsZVBhdGgiIFR5cGU9InN0cmluZyIgVmFsdWU9IlsjcHl0aG9udy5leGVdIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ2Y3J1bnRpbWUxNDAuZGxsIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IioiPgogICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InZjcnVudGltZTE0MC5kbGwiIFNvdXJjZT0iIShiaW5kcGF0aC5yZWRpc3QpdmNydW50aW1lMTQwLmRsbCIgS2V5UGF0aD0ieWVzIiAvPgpAQCAtNjYsMTAgKzY5LDEzIEBACiAgICAgPEZyYWdtZW50PgogICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9pY29ucyI+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJweS5pY28iIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgTmFtZT0icHkuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5LmljbyIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5LmljbyIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xweS5pY28iIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHljLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KLSAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWMuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5Yy5pY28iIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0icHlkLmljbyIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBOYW1lPSJweWQuaWNvIiBTb3VyY2U9IiEoYmluZHBhdGguc3JjKVBDXGljb25zXHB5ZC5pY28iIEtleVBhdGg9InllcyIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvZXhlL2V4ZV9wZGIud2l4cHJvaiBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCmluZGV4IDRmNGM4NjkuLmJmMTIxM2UgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3BkYi53aXhwcm9qCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgPEl0ZW1Hcm91cD4KICAgICAgICAgPENvbXBpbGUgSW5jbHVkZT0iZXhlX3BkYi53eHMiIC8+CiAgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9maWxlcy53eHMiIC8+CisgICAgICAgIDxDb21waWxlIEluY2x1ZGU9ImV4ZV9yZWcud3hzIiAvPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxJdGVtR3JvdXA+CiAgICAgICAgIDxFbWJlZGRlZFJlc291cmNlIEluY2x1ZGU9Iioud3hsIiAvPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2V4ZS9leGVfcmVnLnd4cyBiL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDQ0M2MyMQotLS0gL2Rldi9udWxsCisrKyBiL1Rvb2xzL21zaS9leGUvZXhlX3JlZy53eHMKQEAgLTAsMCArMSwyNSBAQAor77u/PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzxXaXggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLm1pY3Jvc29mdC5jb20vd2l4LzIwMDYvd2kiPgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPFByb3BlcnR5UmVmIElkPSJST09UUkVHSVNUUllLRVkiIC8+CisgICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iUkVHSVNUUllLRVkiIC8+CisgICAgICAgIAorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9ImV4ZV9yZWciPgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iQ29tbW9uUHl0aG9uUmVnaXN0cmF0aW9uIiBEaXJlY3Rvcnk9Ikluc3RhbGxEaXJlY3RvcnkiIEd1aWQ9IiQodmFyLkNvbW1vblB5dGhvblJlZ0NvbXBvbmVudEd1aWQpIj4KKyAgICAgICAgICAgICAgICA8UmVnaXN0cnlLZXkgUm9vdD0iSEtNVSIgS2V5PSJbUk9PVFJFR0lTVFJZS0VZXSI+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IkRpc3BsYXlOYW1lIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5NYW51ZmFjdHVyZXIpIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN1cHBvcnRVcmwiIFR5cGU9InN0cmluZyIgVmFsdWU9IiEobG9jLk1hbnVmYWN0dXJlclN1cHBvcnRVcmwpIiBLZXlQYXRoPSJubyIgLz4KKyAgICAgICAgICAgICAgICA8L1JlZ2lzdHJ5S2V5PgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJQeXRob25SZWdpc3RyYXRpb24iIERpcmVjdG9yeT0iSW5zdGFsbERpcmVjdG9yeSIgR3VpZD0iJCh2YXIuUHl0aG9uUmVnQ29tcG9uZW50R3VpZCkiPgorICAgICAgICAgICAgICAgIDxSZWdpc3RyeUtleSBSb290PSJIS01VIiBLZXk9IltSRUdJU1RSWUtFWV0iPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJEaXNwbGF5TmFtZSIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iIShsb2MuU2hvcnRjdXROYW1lKSIgS2V5UGF0aD0ieWVzIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTdXBwb3J0VXJsIiBUeXBlPSJzdHJpbmciIFZhbHVlPSIhKGxvYy5TdXBwb3J0VXJsKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlZlcnNpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLkxvbmdWZXJzaW9uKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIE5hbWU9IlN5c1ZlcnNpb24iIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlNob3J0VmVyc2lvbikiIEtleVBhdGg9Im5vIiAvPgorICAgICAgICAgICAgICAgICAgICA8UmVnaXN0cnlWYWx1ZSBOYW1lPSJTeXNBcmNoaXRlY3R1cmUiIFR5cGU9InN0cmluZyIgVmFsdWU9IiQodmFyLlBsYXRmb3JtQXJjaGl0ZWN0dXJlKSIgS2V5UGF0aD0ibm8iIC8+CisgICAgICAgICAgICAgICAgPC9SZWdpc3RyeUtleT4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+Cis8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53aXhwcm9qIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKaW5kZXggMDFhOWRjYi4uODkzNWNlOCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLndpeHByb2oKQEAgLTUsNyArNSw3IEBACiAgICAgICAgIDxTY2hlbWFWZXJzaW9uPjIuMDwvU2NoZW1hVmVyc2lvbj4KICAgICAgICAgPE91dHB1dE5hbWU+bGF1bmNoZXI8L091dHB1dE5hbWU+CiAgICAgICAgIDxPdXRwdXRUeXBlPlBhY2thZ2U8L091dHB1dFR5cGU+Ci0gICAgICAgIDxEZWZpbmVDb25zdGFudHM+VXBncmFkZUNvZGU9MUI2OEEwRUMtNEREMy01MTM0LTg0MEUtNzM4NTRCMDg2M0YxOyQoRGVmaW5lQ29uc3RhbnRzKTwvRGVmaW5lQ29uc3RhbnRzPgorICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPlVwZ3JhZGVDb2RlPTFCNjhBMEVDLTRERDMtNTEzNC04NDBFLTczODU0QjA4NjNGMTtTdXBwcmVzc1VwZ3JhZGVUYWJsZT0xOyQoRGVmaW5lQ29uc3RhbnRzKTwvRGVmaW5lQ29uc3RhbnRzPgogICAgICAgICA8SWdub3JlQ29tbW9uV3hsVGVtcGxhdGVzPnRydWU8L0lnbm9yZUNvbW1vbld4bFRlbXBsYXRlcz4KICAgICAgICAgPFN1cHByZXNzSUNFcz5JQ0U4MDwvU3VwcHJlc3NJQ0VzPgogICAgIDwvUHJvcGVydHlHcm91cD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXIud3hzCmluZGV4IGViZDg3NWMuLjdkZTEzMWEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlci53eHMKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyLnd4cwpAQCAtNSw3ICs1LDEwIEBACiAgICAgICAgIDxNZWRpYVRlbXBsYXRlIEVtYmVkQ2FiPSJ5ZXMiIENvbXByZXNzaW9uTGV2ZWw9ImhpZ2giIC8+CiAgICAgICAgIAogICAgICAgICA8UHJvcGVydHkgSWQ9IlN1cHByZXNzX1RBUkdFVERJUl9DaGVjayIgVmFsdWU9IjEiIC8+Ci0gICAgICAgIDxQcm9wZXJ0eVJlZiBJZD0iQVJQUFJPRFVDVElDT04iIC8+CisgICAgICAgIDxJY29uIElkPSJBUlBJY29uIiBTb3VyY2VGaWxlPSIhKGJpbmRwYXRoLnNyYylQQ1xpY29uc1xsYXVuY2hlci5pY28iIC8+CisgICAgICAgIDxQcm9wZXJ0eSBJZD0iQVJQUFJPRFVDVElDT04iIFZhbHVlPSJBUlBJY29uIiAvPgorICAgICAgICA8UHJvcGVydHkgSWQ9IkFSUE5PTU9ESUZZIiBWYWx1ZT0iMSIgLz4KKyAgICAgICAgPFByb3BlcnR5IElkPSJESVNBQkxFQURWVFNIT1JUQ1VUUyIgVmFsdWU9IjEiIC8+CiAKICAgICAgICAgPEZlYXR1cmUgSWQ9IkRlZmF1bHRGZWF0dXJlIiBBbGxvd0FkdmVydGlzZT0ibm8iIFRpdGxlPSIhKGxvYy5UaXRsZSkiIERlc2NyaXB0aW9uPSIhKGxvYy5EZXNjcmlwdGlvbikiPgogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsYXVuY2hlcl9leGUiIFByaW1hcnk9InllcyIgLz4KQEAgLTI2LDE4ICsyOSwyMSBAQAogICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUxNIiBBY3Rpb249IlNldExhdW5jaGVySW5zdGFsbERpcmVjdG9yeUNVIj5OT1QgSW5zdGFsbGVkIEFORCBOT1QgQUxMVVNFUlM9MTwvQ3VzdG9tPgogICAgICAgICAgICAgPEN1c3RvbSBCZWZvcmU9IkNvc3RGaW5hbGl6ZSIgQWN0aW9uPSJTZXRMYXVuY2hlckluc3RhbGxEaXJlY3RvcnlMTSI+Tk9UIEluc3RhbGxlZCBBTkQgQUxMVVNFUlM9MTwvQ3VzdG9tPgogCi0gICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbFZhbGlkYXRlIj5VUEdSQURFIG9yIFJFTU9WRV8zNTBfTEFVTkNIRVI8L1JlbW92ZUV4aXN0aW5nUHJvZHVjdHM+CisgICAgICAgICAgICA8UmVtb3ZlRXhpc3RpbmdQcm9kdWN0cyBBZnRlcj0iSW5zdGFsbFZhbGlkYXRlIj5VUEdSQURFIG9yIFJFTU9WRV8zNTBfTEFVTkNIRVIgb3IgUkVNT1ZFXzM2MEExX0xBVU5DSEVSPC9SZW1vdmVFeGlzdGluZ1Byb2R1Y3RzPgogICAgICAgICA8L0luc3RhbGxFeGVjdXRlU2VxdWVuY2U+CiAKKyAgICAgICAgPCEtLSBVcGdyYWRlIGFsbCB2ZXJzaW9ucyBvZiB0aGUgbGF1bmNoZXIgLS0+CisgICAgICAgIDxVcGdyYWRlIElkPSIkKHZhci5VcGdyYWRlQ29kZSkiPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIFByb3BlcnR5PSJET1dOR1JBREUiIE1pbmltdW09IiQodmFyLlZlcnNpb24pIiBJbmNsdWRlTWluaW11bT0ibm8iIE9ubHlEZXRlY3Q9InllcyIgLz4KKyAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBQcm9wZXJ0eT0iVVBHUkFERSIgTWluaW11bT0iMC4wLjAuMCIgSW5jbHVkZU1pbmltdW09InllcyIgTWF4aW11bT0iJCh2YXIuVmVyc2lvbikiIEluY2x1ZGVNYXhpbXVtPSJubyIgLz4KKyAgICAgICAgPC9VcGdyYWRlPgogICAgICAgICA8IS0tIFB5dGhvbiAzLjUuMCBzaGlwcGVkIHdpdGggYSBkaWZmZXJlbnQgVXBncmFkZUNvZGUgLS0+CiAgICAgICAgIDxVcGdyYWRlIElkPSJBNzE1MzBCOS1FODlELTUzREItOUMyRC1DNkQ3NTUxODc2RDgiPgogICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IjAuMC4wLjAiIFByb3BlcnR5PSJSRU1PVkVfMzUwX0xBVU5DSEVSIiAvPgogICAgICAgICA8L1VwZ3JhZGU+CiAgICAgICAgIDwhLS0gUHl0aG9uIDMuNi4wYTEgc2hpcHBlZCB3aXRoIGEgZGlmZmVyZW50IFVwZ3JhZGVDb2RlIC0tPgogICAgICAgICA8VXBncmFkZSBJZD0iMzk0NzUwQzAtNzg4MC01QThGLTk5OUYtOTMzOTY1RkJDRkI0Ij4KLSAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNYXhpbXVtPSIkKHZhci5WZXJzaW9uKSIgUHJvcGVydHk9IlJFTU9WRV8zNjBBMV9MQVVOQ0hFUiIgLz4KLSAgICAgICAgICAgIDxVcGdyYWRlVmVyc2lvbiBNaW5pbXVtPSIkKHZhci5WZXJzaW9uKSIgUHJvcGVydHk9IkJMT0NLXzM2MEExX0xBVU5DSEVSIiAvPgorICAgICAgICAgICAgPFVwZ3JhZGVWZXJzaW9uIE1pbmltdW09IjAuMC4wLjAiIFByb3BlcnR5PSJSRU1PVkVfMzYwQTFfTEFVTkNIRVIiIC8+CiAgICAgICAgIDwvVXBncmFkZT4KLSAgICAgICAgPENvbmRpdGlvbiBNZXNzYWdlPSIhKGxvYy5Ob0Rvd25ncmFkZSkiPkluc3RhbGxlZCBPUiBOT1QgQkxPQ0tfMzYwQTFfTEFVTkNIRVI8L0NvbmRpdGlvbj4KICAgICA8L1Byb2R1Y3Q+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwgYi9Ub29scy9tc2kvbGF1bmNoZXIvbGF1bmNoZXJfZW4tVVMud3hsCmluZGV4IGU0YzFhYWEuLmE3ZTM4MjcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9lbi1VUy53eGwKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX2VuLVVTLnd4bApAQCAtMTEsNiArMTEsNyBAQAogICAgIDxTdHJpbmcgSWQ9IlB5dGhvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGU8L1N0cmluZz4KICAgICA8U3RyaW5nIElkPSJQeXRob25Ob0NvbkZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uQ29tcGlsZWRGaWxlRGVzY3JpcHRpb24iPkNvbXBpbGVkIFB5dGhvbiBGaWxlPC9TdHJpbmc+CisgICAgPFN0cmluZyBJZD0iUHl0aG9uRXh0ZW5zaW9uRGVzY3JpcHRpb24iPlB5dGhvbiBFeHRlbnNpb24gTW9kdWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uQXJjaGl2ZUZpbGVEZXNjcmlwdGlvbiI+UHl0aG9uIFppcCBBcHBsaWNhdGlvbiBGaWxlPC9TdHJpbmc+CiAgICAgPFN0cmluZyBJZD0iUHl0aG9uTm9Db25BcmNoaXZlRmlsZURlc2NyaXB0aW9uIj5QeXRob24gWmlwIEFwcGxpY2F0aW9uIEZpbGUgKG5vIGNvbnNvbGUpPC9TdHJpbmc+CiA8L1dpeExvY2FsaXphdGlvbj4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS9sYXVuY2hlci9sYXVuY2hlcl9yZWcud3hzIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKaW5kZXggOTgxOTYxYS4uZGFjZTk3ZSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKKysrIGIvVG9vbHMvbXNpL2xhdW5jaGVyL2xhdW5jaGVyX3JlZy53eHMKQEAgLTI3LDE0ICsyNywxOCBAQAogICAgICAgICAgICAgICAgIDwvUHJvZ0lkPgogICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIFJvb3Q9IkhLQ1IiIEtleT0iUHl0aG9uLkNvbXBpbGVkRmlsZVxzaGVsbGV4XERyb3BIYW5kbGVyIiBWYWx1ZT0ie0JFQTIxOEQyLTY5NTAtNDk3Qi05NDM0LTYxNjgzRUMwNjVGRX0iIFR5cGU9InN0cmluZyIgLz4KIAotICAgICAgICAgICAgICAgIDxQcm9nSWQgSWQ9IlB5dGhvbi5BcmNoaXZlRmlsZSIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLkV4dGVuc2lvbiIgRGVzY3JpcHRpb249IiEobG9jLlB5dGhvbkV4dGVuc2lvbkRlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjMiPgorICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweWQiIC8+CisgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CisKKyAgICAgICAgICAgICAgICA8UHJvZ0lkIElkPSJQeXRob24uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25BcmNoaXZlRmlsZURlc2NyaXB0aW9uKSIgQWR2ZXJ0aXNlPSJubyIgSWNvbj0icHkuZXhlIiBJY29uSW5kZXg9IjUiPgogICAgICAgICAgICAgICAgICAgICA8RXh0ZW5zaW9uIElkPSJweXoiIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweS5leGUiIEFyZ3VtZW50PSImcXVvdDslTCZxdW90OyAlKiIgLz4KICAgICAgICAgICAgICAgICAgICAgPC9FeHRlbnNpb24+CiAgICAgICAgICAgICAgICAgPC9Qcm9nSWQ+CiAgICAgICAgICAgICAgICAgPFJlZ2lzdHJ5VmFsdWUgUm9vdD0iSEtDUiIgS2V5PSJQeXRob24uQXJjaGl2ZUZpbGVcc2hlbGxleFxEcm9wSGFuZGxlciIgVmFsdWU9IntCRUEyMThEMi02OTUwLTQ5N0ItOTQzNC02MTY4M0VDMDY1RkV9IiBUeXBlPSJzdHJpbmciIC8+CiAgICAgICAgICAgICAgICAgCi0gICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLk5vQ29uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iMSI+CisgICAgICAgICAgICAgICAgPFByb2dJZCBJZD0iUHl0aG9uLk5vQ29uQXJjaGl2ZUZpbGUiIERlc2NyaXB0aW9uPSIhKGxvYy5QeXRob25Ob0NvbkFyY2hpdmVGaWxlRGVzY3JpcHRpb24pIiBBZHZlcnRpc2U9Im5vIiBJY29uPSJweS5leGUiIEljb25JbmRleD0iNSI+CiAgICAgICAgICAgICAgICAgICAgIDxFeHRlbnNpb24gSWQ9InB5enciIENvbnRlbnRUeXBlPSJhcHBsaWNhdGlvbi94LXppcC1jb21wcmVzc2VkIj4KICAgICAgICAgICAgICAgICAgICAgICAgIDxWZXJiIElkPSJvcGVuIiBUYXJnZXRGaWxlPSJweXcuZXhlIiBBcmd1bWVudD0iJnF1b3Q7JUwmcXVvdDsgJSoiIC8+CiAgICAgICAgICAgICAgICAgICAgIDwvRXh0ZW5zaW9uPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvaiBiL1Rvb2xzL21zaS9saWIvbGliLndpeHByb2oKaW5kZXggNjRlNTg3OC4uMjYzMTFlYSAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWIud2l4cHJvagorKysgYi9Ub29scy9tc2kvbGliL2xpYi53aXhwcm9qCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgICAgICAgICA8VGFyZ2V0QmFzZT4kKFB5U291cmNlUGF0aClMaWI8L1RhcmdldEJhc2U+CiAgICAgICAgICAgICA8VGFyZ2V0Xz5MaWJcPC9UYXJnZXRfPgogICAgICAgICAgICAgPEdyb3VwPmxpYl9weTwvR3JvdXA+CisgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PnRydWU8L0luY2x1ZGVJbkNhdD4KICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYi53eHMgYi9Ub29scy9tc2kvbGliL2xpYi53eHMKaW5kZXggMmIwNGJjYi4uMmEzYjllYyAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWIud3hzCisrKyBiL1Rvb2xzL21zaS9saWIvbGliLnd4cwpAQCAtMTEsNiArMTEsNyBAQAogICAgICAgICAgICAgPENvbXBvbmVudEdyb3VwUmVmIElkPSJsaWJfcHkiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9maWxlcyIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0ibGliX2V4dGVuc2lvbnMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9ImxpYl9jYXQiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50UmVmIElkPSJPcHRpb25hbEZlYXR1cmUiIC8+CiAgICAgICAgIDwvRmVhdHVyZT4KICAgICA8L1Byb2R1Y3Q+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMgYi9Ub29scy9tc2kvbGliL2xpYl9maWxlcy53eHMKaW5kZXggZmE3OWE4ZC4uZWIyNmY4ZCAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL2xpYi9saWJfZmlsZXMud3hzCisrKyBiL1Rvb2xzL21zaS9saWIvbGliX2ZpbGVzLnd4cwpAQCAtNjQsMTYgKzY0LDE3IEBACiAgICAgICAgICAgICAgICAgICAgIDxSZWdpc3RyeVZhbHVlIEtleT0iUHl0aG9uUGF0aCIgVHlwZT0ic3RyaW5nIiBWYWx1ZT0iW0xpYl07W0RMTHNdIiAvPgogICAgICAgICAgICAgICAgIDwvUmVnaXN0cnlLZXk+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KLSAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgRGlyZWN0b3J5PSJMaWJfc2l0ZV9wYWNrYWdlcyIgR3VpZD0iKiI+Ci0gICAgICAgICAgICAgICAgPEZpbGUgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzX1JFQURNRSIgTmFtZT0iUkVBRE1FLnR4dCIgU291cmNlPSIhKGJpbmRwYXRoLnNyYylMaWJcc2l0ZS1wYWNrYWdlc1xSRUFETUUiIEtleVBhdGg9InllcyIgLz4KLSAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iTGliMnRvM19waWNrbGVfcmVtb3ZlIiBEaXJlY3Rvcnk9IkxpYl9saWIydG8zIiBHdWlkPSIkKHZhci5SZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCkiPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGaWxlIElkPSJMaWIydG8zX3BpY2tsZV9yZW1vdmVfZmlsZXMiIE5hbWU9IioucGlja2xlIiBPbj0idW5pbnN0YWxsIiAvPgogICAgICAgICAgICAgICAgIDxSZW1vdmVGb2xkZXIgSWQ9IkxpYjJ0bzNfcGlja2xlX3JlbW92ZV9mb2xkZXIiIE9uPSJ1bmluc3RhbGwiIC8+CiAgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KLSAgICAgICAgPERpcmVjdG9yeVJlZiBJZD0iTGliIj4KLSAgICAgICAgICAgIDxEaXJlY3RvcnkgSWQ9IkxpYl9zaXRlX3BhY2thZ2VzIiBOYW1lPSJzaXRlLXBhY2thZ2VzIiAvPgotICAgICAgICA8L0RpcmVjdG9yeVJlZj4KKyAgICA8L0ZyYWdtZW50PgorICAgIDxGcmFnbWVudD4KKyAgICAgICAgPENvbXBvbmVudEdyb3VwIElkPSJsaWJfY2F0Ij4KKyAgICAgICAgICAgIDxDb21wb25lbnQgSWQ9ImxpYl9jYXQiIERpcmVjdG9yeT0iQ2F0YWxvZ3MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl9saWIuY2F0IiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KKyAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogPC9XaXg+CmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbWFrZV96aXAucHkgYi9Ub29scy9tc2kvbWFrZV96aXAucHkKaW5kZXggMGU4YTRhNi4uZWJiMTc2NiAxMDA2NDQKLS0tIGEvVG9vbHMvbXNpL21ha2VfemlwLnB5CisrKyBiL1Rvb2xzL21zaS9tYWtlX3ppcC5weQpAQCAtNDYsNiArNDYsMTAgQEAKICAgICAncHl0aG9uM3N0dWInLAogfQogCitFWENMVURFRF9GSUxFUyA9IHsKKyAgICAncHlzaGVsbGV4dCcsCit9CisKIGRlZiBpc19ub3RfZGVidWcocCk6CiAgICAgaWYgREVCVUdfUkUuc2VhcmNoKHAubmFtZSk6CiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtNTMsNyArNTcsNyBAQAogICAgIGlmIFRLVENMX1JFLnNlYXJjaChwLm5hbWUpOgogICAgICAgICByZXR1cm4gRmFsc2UKIAotICAgIHJldHVybiBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gREVCVUdfRklMRVMKKyAgICByZXR1cm4gcC5zdGVtLmxvd2VyKCkgbm90IGluIERFQlVHX0ZJTEVTIGFuZCBwLnN0ZW0ubG93ZXIoKSBub3QgaW4gRVhDTFVERURfRklMRVMKIAogZGVmIGlzX25vdF9kZWJ1Z19vcl9weXRob24ocCk6CiAgICAgcmV0dXJuIGlzX25vdF9kZWJ1ZyhwKSBhbmQgbm90IFBZVEhPTl9ETExfUkUuc2VhcmNoKHAubmFtZSkKQEAgLTYzLDggKzY3LDYgQEAKICAgICBpZiBwLmlzX2RpcigpOgogICAgICAgICBpZiBuYW1lIGluIEVYQ0xVREVfRlJPTV9MSUJSQVJZOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIG5hbWUuc3RhcnRzd2l0aCgncGxhdC0nKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lID09ICd0ZXN0JyBhbmQgcC5wYXJ0c1stMl0ubG93ZXIoKSA9PSAnbGliJzoKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiBuYW1lIGluIHsndGVzdCcsICd0ZXN0cyd9IGFuZCBwLnBhcnRzWy0zXS5sb3dlcigpID09ICdsaWInOgpAQCAtODksMjUgKzkxLDI3IEBACiAKICAgICByZXR1cm4gcC5zdWZmaXgubG93ZXIoKSBpbiB7Jy5weScsICcucHl3JywgJy50eHQnfQogCitCQVNFX05BTUUgPSAncHl0aG9uezAubWFqb3J9ezAubWlub3J9Jy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbykKKwogRlVMTF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbncuZXhlJywgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJy8nLCAnJGJ1aWxkJywgJ3B5dGhvbnswLm1ham9yfXswLm1pbm9yfS5kbGwnLmZvcm1hdChzeXMudmVyc2lvbl9pbmZvKSwgaXNfbm90X2RlYnVnKSwKLSAgICAoJ0RMTHMvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdETExzLycsICckYnVpbGQnLCAnKi5kbGwnLCBpc19ub3RfZGVidWdfb3JfcHl0aG9uKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24uZXhlJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob253LmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAncHl0aG9ue30uZGxsJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mby5tYWpvciksIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAne30uZGxsJy5mb3JtYXQoQkFTRV9OQU1FKSwgaXNfbm90X2RlYnVnKSwKKyAgICAoJ0RMTHMvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnRExMcy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1Z19vcl9weXRob24pLAogICAgICgnaW5jbHVkZS8nLCAnaW5jbHVkZScsICcqLmgnLCBOb25lKSwKICAgICAoJ2luY2x1ZGUvJywgJ1BDJywgJ3B5Y29uZmlnLmgnLCBOb25lKSwKICAgICAoJ0xpYi8nLCAnTGliJywgJyoqLyonLCBpbmNsdWRlX2luX2xpYiksCi0gICAgKCdsaWJzLycsICckYnVpbGQnLCAnKi5saWInLCBpbmNsdWRlX2luX2xpYnMpLAorICAgICgnbGlicy8nLCAnUENCdWlsZC8kYXJjaCcsICcqLmxpYicsIGluY2x1ZGVfaW5fbGlicyksCiAgICAgKCdUb29scy8nLCAnVG9vbHMnLCAnKiovKicsIGluY2x1ZGVfaW5fdG9vbHMpLAogXQogCiBFTUJFRF9MQVlPVVQgPSBbCi0gICAgKCcvJywgJyRidWlsZCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLnB5ZCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCcvJywgJyRidWlsZCcsICcqLmRsbCcsIGlzX25vdF9kZWJ1ZyksCi0gICAgKCdweXRob257MC5tYWpvcn17MC5taW5vcn0uemlwJy5mb3JtYXQoc3lzLnZlcnNpb25faW5mbyksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKKyAgICAoJy8nLCAnUENCdWlsZC8kYXJjaCcsICdweXRob24qLmV4ZScsIGlzX25vdF9kZWJ1ZyksCisgICAgKCcvJywgJ1BDQnVpbGQvJGFyY2gnLCAnKi5weWQnLCBpc19ub3RfZGVidWcpLAorICAgICgnLycsICdQQ0J1aWxkLyRhcmNoJywgJyouZGxsJywgaXNfbm90X2RlYnVnKSwKKyAgICAoJ3t9LnppcCcuZm9ybWF0KEJBU0VfTkFNRSksICdMaWInLCAnKiovKicsIGluY2x1ZGVfaW5fbGliKSwKIF0KIAogaWYgb3MuZ2V0ZW52KCdET0NfRklMRU5BTUUnKToKQEAgLTE2OCwxOCArMTcyLDE4IEBACiBkZWYgbWFpbigpOgogICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKCkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctcycsICctLXNvdXJjZScsIG1ldGF2YXI9J2RpcicsIGhlbHA9J1RoZSBkaXJlY3RvcnkgY29udGFpbmluZyB0aGUgcmVwb3NpdG9yeSByb290JywgdHlwZT1QYXRoKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgYXJjaGl2ZScsIHR5cGU9UGF0aCwgZGVmYXVsdD1Ob25lKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1vJywgJy0tb3V0JywgbWV0YXZhcj0nZmlsZScsIGhlbHA9J1RoZSBuYW1lIG9mIHRoZSBvdXRwdXQgc2VsZi1leHRyYWN0aW5nIGFyY2hpdmUnLCB0eXBlPVBhdGgsIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctdCcsICctLXRlbXAnLCBtZXRhdmFyPSdkaXInLCBoZWxwPSdBIGRpcmVjdG9yeSB0byB0ZW1wb3JhcmlseSBleHRyYWN0IGZpbGVzIGludG8nLCB0eXBlPVBhdGgsIGRlZmF1bHQ9Tm9uZSkKICAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctZScsICctLWVtYmVkJywgaGVscD0nQ3JlYXRlIGFuIGVtYmVkZGluZyBsYXlvdXQnLCBhY3Rpb249J3N0b3JlX3RydWUnLCBkZWZhdWx0PUZhbHNlKQotICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnVpbGQnLCBoZWxwPSdTcGVjaWZ5IHRoZSBidWlsZCBkaXJlY3RvcnknLCB0eXBlPVBhdGgpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWEnLCAnLS1hcmNoJywgaGVscD0nU3BlY2lmeSB0aGUgYXJjaGl0ZWN0dXJlIHRvIHVzZSAod2luMzIvYW1kNjQpJywgdHlwZT1zdHIsIGRlZmF1bHQ9IndpbjMyIikKICAgICBucyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKIAogICAgIHNvdXJjZSA9IG5zLnNvdXJjZSBvciAoUGF0aChfX2ZpbGVfXykucmVzb2x2ZSgpLnBhcmVudC5wYXJlbnQucGFyZW50KQogICAgIG91dCA9IG5zLm91dAotICAgIGJ1aWxkID0gbnMuYnVpbGQKKyAgICBhcmNoID0gbnMuYXJjaAogICAgIGFzc2VydCBpc2luc3RhbmNlKHNvdXJjZSwgUGF0aCkKICAgICBhc3NlcnQgbm90IG91dCBvciBpc2luc3RhbmNlKG91dCwgUGF0aCkKLSAgICBhc3NlcnQgaXNpbnN0YW5jZShidWlsZCwgUGF0aCkKKyAgICBhc3NlcnQgaXNpbnN0YW5jZShhcmNoLCBzdHIpCiAKICAgICBpZiBucy50ZW1wOgogICAgICAgICB0ZW1wID0gbnMudGVtcApAQCAtMjAyLDE1ICsyMDYsMTcgQEAKIAogICAgIHRyeToKICAgICAgICAgZm9yIHQsIHMsIHAsIGMgaW4gbGF5b3V0OgotICAgICAgICAgICAgaWYgcyA9PSAnJGJ1aWxkJzoKLSAgICAgICAgICAgICAgICBzID0gYnVpbGQKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgcyA9IHNvdXJjZSAvIHMKKyAgICAgICAgICAgIHMgPSBzb3VyY2UgLyBzLnJlcGxhY2UoIiRhcmNoIiwgYXJjaCkKICAgICAgICAgICAgIGNvcGllZCA9IGNvcHlfdG9fbGF5b3V0KHRlbXAgLyB0LnJzdHJpcCgnLycpLCByZ2xvYihzLCBwLCBjKSkKICAgICAgICAgICAgIHByaW50KCdDb3BpZWQge30gZmlsZXMnLmZvcm1hdChjb3BpZWQpKQogCi0gICAgICAgIHdpdGggb3BlbihzdHIodGVtcCAvICdweXZlbnYuY2ZnJyksICd3JykgYXMgZjoKLSAgICAgICAgICAgIHByaW50KCdhcHBsb2NhbCA9IHRydWUnLCBmaWxlPWYpCisgICAgICAgIGlmIG5zLmVtYmVkOgorICAgICAgICAgICAgd2l0aCBvcGVuKHN0cih0ZW1wIC8gKEJBU0VfTkFNRSArICcuX3B0aCcpKSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgICAgIHByaW50KEJBU0VfTkFNRSArICcuemlwJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcuJywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcnLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgcHJpbnQoJyMgVW5jb21tZW50IHRvIHJ1biBzaXRlLm1haW4oKSBhdXRvbWF0aWNhbGx5JywgZmlsZT1mKQorICAgICAgICAgICAgICAgIHByaW50KCcjaW1wb3J0IHNpdGUnLCBmaWxlPWYpCiAKICAgICAgICAgaWYgb3V0OgogICAgICAgICAgICAgdG90YWwgPSBjb3B5X3RvX2xheW91dChvdXQsIHJnbG9iKHRlbXAsICcqKi8qJywgTm9uZSkpCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvbXNpLnByb3BzIGIvVG9vbHMvbXNpL21zaS5wcm9wcwppbmRleCAwY2Y3Yzc3Li42MGFiYmExIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvbXNpLnByb3BzCisrKyBiL1Rvb2xzL21zaS9tc2kucHJvcHMKQEAgLTExLDYgKzExLDcgQEAKICAgICAgICAgPENvbmZpZ3VyYXRpb24gQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKScgPT0gJyciPlJlbGVhc2U8L0NvbmZpZ3VyYXRpb24+CiAgICAgICAgIDxQbGF0Zm9ybSBDb25kaXRpb249IickKFBsYXRmb3JtKScgPT0gJyciPng4NjwvUGxhdGZvcm0+CiAgICAgICAgIDxJbnN0YWxsU2NvcGUgQ29uZGl0aW9uPSInJChJbnN0YWxsU2NvcGUpJyAhPSAncGVyTWFjaGluZSciPnBlclVzZXI8L0luc3RhbGxTY29wZT4KKyAgICAgICAgPF9NYWtlQ2F0Q29tbWFuZCBDb25kaXRpb249IickKF9NYWtlQ2F0Q29tbWFuZCknID09ICcnIj5tYWtlY2F0PC9fTWFrZUNhdENvbW1hbmQ+CiAgICAgPC9Qcm9wZXJ0eUdyb3VwPgogCiAgICAgPEltcG9ydCBQcm9qZWN0PSJ3aXgucHJvcHMiIC8+CkBAIC02OSw2ICs3MCw4IEBACiAgICAgPFByb3BlcnR5R3JvdXA+CiAgICAgICAgIDxCaXRuZXNzPjMyLWJpdDwvQml0bmVzcz4KICAgICAgICAgPEJpdG5lc3MgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjQtYml0PC9CaXRuZXNzPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmU+MzJiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgorICAgICAgICA8UGxhdGZvcm1BcmNoaXRlY3R1cmUgQ29uZGl0aW9uPSIkKFBsYXRmb3JtKSA9PSAneDY0JyI+NjRiaXQ8L1BsYXRmb3JtQXJjaGl0ZWN0dXJlPgogICAgICAgICA8RGVmaW5lQ29uc3RhbnRzPgogICAgICAgICAgICAgJChEZWZpbmVDb25zdGFudHMpOwogICAgICAgICAgICAgVmVyc2lvbj0kKEluc3RhbGxlclZlcnNpb24pOwpAQCAtNzksNiArODIsNyBAQAogICAgICAgICAgICAgVXBncmFkZU1pbmltdW1WZXJzaW9uPSQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuMC4wOwogICAgICAgICAgICAgTmV4dE1ham9yVmVyc2lvbk51bWJlcj0kKE1ham9yVmVyc2lvbk51bWJlcikuJChbbXNidWlsZF06OkFkZCgkKE1pbm9yVmVyc2lvbk51bWJlciksIDEpKS4wLjA7CiAgICAgICAgICAgICBCaXRuZXNzPSQoQml0bmVzcyk7CisgICAgICAgICAgICBQbGF0Zm9ybUFyY2hpdGVjdHVyZT0kKFBsYXRmb3JtQXJjaGl0ZWN0dXJlKTsKICAgICAgICAgICAgIFB5RGVidWdFeHQ9JChQeURlYnVnRXh0KTsKICAgICAgICAgICAgIFB5QXJjaEV4dD0kKFB5QXJjaEV4dCk7CiAgICAgICAgICAgICBQeVRlc3RFeHQ9JChQeVRlc3RFeHQpOwpAQCAtMTAwLDYgKzEwNCw3IEBACiAgICAgICAgICAgICA8R3JvdXA+Z2VuZXJhdGVkX2ZpbGVsaXN0PC9Hcm91cD4KICAgICAgICAgICAgIDxDb25kaXRpb24+PC9Db25kaXRpb24+CiAgICAgICAgICAgICA8RGlza0lkPjwvRGlza0lkPgorICAgICAgICAgICAgPEluY2x1ZGVJbkNhdD5mYWxzZTwvSW5jbHVkZUluQ2F0PgogICAgICAgICA8L0luc3RhbGxGaWxlcz4KICAgICAgICAgPExpbmtlckJpbmRJbnB1dFBhdGhzPgogICAgICAgICAgICAgPFZpc2libGU+ZmFsc2U8L1Zpc2libGU+CkBAIC0xNTUsNiArMTYwLDEyIEBACiAgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJSZW1vdmVMaWIydG8zUGlja2xlQ29tcG9uZW50R3VpZCI+CiAgICAgICAgICAgICA8VXJpPmxpYjJ0bzMvcGlja2xlczwvVXJpPgogICAgICAgICA8L19VdWlkPgorICAgICAgICA8X1V1aWQgSW5jbHVkZT0iQ29tbW9uUHl0aG9uUmVnQ29tcG9uZW50R3VpZCI+CisgICAgICAgICAgICA8VXJpPnJlZ2lzdHJ5PC9Vcmk+CisgICAgICAgIDwvX1V1aWQ+CisgICAgICAgIDxfVXVpZCBJbmNsdWRlPSJQeXRob25SZWdDb21wb25lbnRHdWlkIj4KKyAgICAgICAgICAgIDxVcmk+cmVnaXN0cnkvJChPdXRwdXROYW1lKTwvVXJpPgorICAgICAgICA8L19VdWlkPgogICAgIDwvSXRlbUdyb3VwPgogICAgIDxUYXJnZXQgTmFtZT0iX0dlbmVyYXRlR3VpZHMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBDb25kaXRpb249IiQoVGFyZ2V0TmFtZSkgIT0gJ2xhdW5jaGVyJyI+CiAgICAgICAgIDxQcm9wZXJ0eUdyb3VwPgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL21zaS50YXJnZXRzIGIvVG9vbHMvbXNpL21zaS50YXJnZXRzCmluZGV4IDg2YmUzNWIuLjkyODNhMWUgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS9tc2kudGFyZ2V0cworKysgYi9Ub29scy9tc2kvbXNpLnRhcmdldHMKQEAgLTEyLDggKzEyLDEwIEBACiAgICAgICAgICAgICAgICAgPF9Tb3VyY2U+JShTb3VyY2UpJChbbXNidWlsZF06Ok1ha2VSZWxhdGl2ZSglKFNvdXJjZUJhc2UpLCAlKEZ1bGxQYXRoKSkpPC9fU291cmNlPgogICAgICAgICAgICAgICAgIDxfVGFyZ2V0PiUoVGFyZ2V0XykkKFttc2J1aWxkXTo6TWFrZVJlbGF0aXZlKCUoVGFyZ2V0QmFzZSksICUoRnVsbFBhdGgpKSk8L19UYXJnZXQ+CiAgICAgICAgICAgICA8L0luc3RhbGxGaWxlcz4KKyAgICAgICAgICAgIAorICAgICAgICAgICAgPF9DYXRhbG9nRmlsZXMgSW5jbHVkZT0iQChJbnN0YWxsRmlsZXMpIiBDb25kaXRpb249IiUoSW5zdGFsbEZpbGVzLkluY2x1ZGVJbkNhdCkgYW5kICcnIT0kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoSW5zdGFsbEZpbGVzLkZ1bGxQYXRoKSkpIiAvPgogICAgICAgICA8L0l0ZW1Hcm91cD4KLSAgICAgICAgCisKICAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfRmlsZUxpc3RUYXJnZXQpIiBMaW5lcz0iQChJbnN0YWxsRmlsZXMtPicmcXVvdDslKF9Tb3VyY2UpJnF1b3Q7LCZxdW90OyUoX1RhcmdldCkmcXVvdDssJnF1b3Q7JShHcm91cCkmcXVvdDssJnF1b3Q7JShEaXNrSWQpJnF1b3Q7LCZxdW90OyUoQ29uZGl0aW9uKSZxdW90OycpIiBPdmVyd3JpdGU9InRydWUiIC8+CiAgICAgICAgIDxFeGVjIENvbW1hbmQ9JyIkKFB5dGhvbkV4ZSkiIGNzdl90b193eHMucHkgIiQoX0ZpbGVMaXN0VGFyZ2V0KSIgIiQoX0luc3RhbGxGaWxlc1RhcmdldCkiJwogICAgICAgICAgICAgICBXb3JraW5nRGlyZWN0b3J5PSIkKE1TQnVpbGRUaGlzRmlsZURpcmVjdG9yeSkiIC8+CkBAIC0yNCw2ICsyNiwzNSBAQAogICAgICAgICA8L0l0ZW1Hcm91cD4KICAgICA8L1RhcmdldD4KIAorICAgIDxUYXJnZXQgTmFtZT0iR2VuZXJhdGVDYXRhbG9nIiBBZnRlclRhcmdldHM9IlByb2Nlc3NJbnN0YWxsRmlsZXMiIENvbmRpdGlvbj0iJ0AoX0NhdGFsb2dGaWxlcyknICE9ICcnIj4KKyAgICAgICAgPFByb3BlcnR5R3JvdXA+CisgICAgICAgICAgICA8X0NhdEZpbGVTb3VyY2VUYXJnZXQ+JChJbnRlcm1lZGlhdGVPdXRwdXRQYXRoKSQoTVNCdWlsZFByb2plY3ROYW1lKS5jZGY8L19DYXRGaWxlU291cmNlVGFyZ2V0PgorICAgICAgICAgICAgPF9DYXRGaWxlVGFyZ2V0PiQoSW50ZXJtZWRpYXRlT3V0cHV0UGF0aClweXRob25fJChNU0J1aWxkUHJvamVjdE5hbWUpLmNhdDwvX0NhdEZpbGVUYXJnZXQ+CisgICAgICAgICAgICA8X0NhdEZpbGU+W0NhdGFsb2dIZWFkZXJdCitOYW1lPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RmlsZU5hbWUoJChfQ2F0RmlsZVRhcmdldCkpKQorUmVzdWx0RGlyPSQoW1N5c3RlbS5JTy5QYXRoXTo6R2V0RGlyZWN0b3J5TmFtZSgkKF9DYXRGaWxlVGFyZ2V0KSkpCitQdWJsaWNWZXJzaW9uPTEKK0NhdGFsb2dWZXJzaW9uPTIKK0hhc2hBbGdvcml0aG1zPVNIQTI1NgorUGFnZUhhc2hlcz1mYWxzZQorRW5jb2RpbmdUeXBlPQorCitbQ2F0YWxvZ0ZpbGVzXQorQChfQ2F0YWxvZ0ZpbGVzLT4nJmx0O0hBU0gmZ3Q7JShGaWxlbmFtZSklKEV4dGVuc2lvbik9JShGdWxsUGF0aCknLCcKKycpCis8L19DYXRGaWxlPgorICAgICAgICA8L1Byb3BlcnR5R3JvdXA+CisKKyAgICAgICAgPFdyaXRlTGluZXNUb0ZpbGUgRmlsZT0iJChfQ2F0RmlsZVNvdXJjZVRhcmdldCkiIExpbmVzPSIkKF9DYXRGaWxlKSIgT3ZlcndyaXRlPSJ0cnVlIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9NYWtlQ2F0Q29tbWFuZCkgIiQoX0NhdEZpbGVTb3VyY2VUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIiAvPgorICAgICAgICA8RXhlYyBDb21tYW5kPSckKF9TaWduQ29tbWFuZCkgIiQoX0NhdEZpbGVUYXJnZXQpIicgV29ya2luZ0RpcmVjdG9yeT0iJChNU0J1aWxkVGhpc0ZpbGVEaXJlY3RvcnkpIgorICAgICAgICAgICAgICBDb25kaXRpb249IkV4aXN0cygkKF9DYXRGaWxlVGFyZ2V0KSkgYW5kICckKF9TaWduQ29tbWFuZCknICE9ICcnIiAvPgorCisgICAgICAgIDxJdGVtR3JvdXA+CisgICAgICAgICAgICA8RmlsZVdyaXRlcyBJbmNsdWRlPSIkKF9DYXRGaWxlU291cmNlVGFyZ2V0KTskKF9DYXRGaWxlVGFyZ2V0KSIgLz4KKyAgICAgICAgPC9JdGVtR3JvdXA+CisgICAgPC9UYXJnZXQ+CisKICAgICA8VGFyZ2V0IE5hbWU9Il9UcmFuc2Zvcm1XeGxUZW1wbGF0ZXMiIEFmdGVyVGFyZ2V0cz0iUHJlcGFyZUZvckJ1aWxkIiBJbnB1dHM9IkAoV3hsVGVtcGxhdGUpOyQoUHlTb3VyY2VQYXRoKWluY2x1ZGVccGF0Y2hsZXZlbC5oIiBPdXRwdXRzPSIkKEludGVybWVkaWF0ZU91dHB1dFBhdGgpJShGaWxlbmFtZSkud3hsIj4KICAgICAgICAgPFByb3BlcnR5R3JvdXAgQ29uZGl0aW9uPSInQChXeGxUZW1wbGF0ZSknICE9ICcnIj4KICAgICAgICAgICAgIDxfQ29udGVudD4kKFtTeXN0ZW0uSU8uRmlsZV06OlJlYWRBbGxUZXh0KCUoV3hsVGVtcGxhdGUuRnVsbFBhdGgpKS5SZXBsYWNlKGB7e1Nob3J0VmVyc2lvbn19YCwgYCQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikkKFB5VGVzdEV4dClgKS5SZXBsYWNlKGB7e0xvbmdWZXJzaW9ufX1gLCBgJChQeXRob25WZXJzaW9uKSQoUHlUZXN0RXh0KWApLlJlcGxhY2UoYHt7Qml0bmVzc319YCwgYCQoQml0bmVzcylgKSk8L19Db250ZW50PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rlc3QvdGVzdF9maWxlcy53eHMgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwppbmRleCBlODAzYWEwLi4wNzUzNTcyIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cworKysgYi9Ub29scy9tc2kvdGVzdC90ZXN0X2ZpbGVzLnd4cwpAQCAtMTcsNiArMTcsOSBAQAogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnB5ZCIgS2V5UGF0aD0ieWVzIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNvbnNvbGUucHlkIiBEaXJlY3Rvcnk9IkRMTHMiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIElkPSJfdGVzdGNvbnNvbGUucHlkIiBOYW1lPSJfdGVzdGNvbnNvbGUucHlkIiBLZXlQYXRoPSJ5ZXMiIC8+CisgICAgICAgICAgICA8L0NvbXBvbmVudD4KICAgICAgICAgPC9Db21wb25lbnRHcm91cD4KICAgICA8L0ZyYWdtZW50PgogICAgIApAQCAtMzcsNiArNDAsOSBAQAogICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KICAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlLnBkYiIgLz4KICAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICAgICAgPENvbXBvbmVudCBJZD0iX3Rlc3Rjb25zb2xlLnBkYiIgRGlyZWN0b3J5PSJETExzIiBHdWlkPSIqIj4KKyAgICAgICAgICAgICAgICA8RmlsZSBJZD0iX3Rlc3Rjb25zb2xlLnBkYiIgTmFtZT0iX3Rlc3Rjb25zb2xlLnBkYiIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CiAgICAgCkBAIC01Nyw2ICs2Myw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CiAgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnB5ZCIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucHlkIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNvbnNvbGVfZC5weWQiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y29uc29sZV9kLnB5ZCIgTmFtZT0iX3Rlc3Rjb25zb2xlX2QucHlkIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNhcGlfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CiAgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y2FwaV9kLnBkYiIgTmFtZT0iX3Rlc3RjYXBpX2QucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CkBAIC03Miw2ICs4MSw5IEBACiAgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdG11bHRpcGhhc2VfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CiAgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0bXVsdGlwaGFzZV9kLnBkYiIgTmFtZT0iX3Rlc3RtdWx0aXBoYXNlX2QucGRiIiAvPgogICAgICAgICAgICAgPC9Db21wb25lbnQ+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJfdGVzdGNvbnNvbGVfZC5wZGIiIERpcmVjdG9yeT0iRExMcyIgR3VpZD0iKiI+CisgICAgICAgICAgICAgICAgPEZpbGUgSWQ9Il90ZXN0Y29uc29sZV9kLnBkYiIgTmFtZT0iX3Rlc3Rjb25zb2xlX2QucGRiIiAvPgorICAgICAgICAgICAgPC9Db21wb25lbnQ+CiAgICAgICAgIDwvQ29tcG9uZW50R3JvdXA+CiAgICAgPC9GcmFnbWVudD4KIDwvV2l4PgpkaWZmIC0tZ2l0IGEvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLndpeHByb2ogYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagppbmRleCBmNDNjZjMzLi5iN2ZjNDFlIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagorKysgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHMud2l4cHJvagpAQCAtMzYsNiArMzYsNyBAQAogICAgICAgICAgICAgICAgIDxUYXJnZXRCYXNlPiQoUHlTb3VyY2VQYXRoKTwvVGFyZ2V0QmFzZT4KICAgICAgICAgICAgICAgICA8VGFyZ2V0Xz48L1RhcmdldF8+CiAgICAgICAgICAgICAgICAgPEdyb3VwPnRvb2xzX3B5PC9Hcm91cD4KKyAgICAgICAgICAgICAgICA8SW5jbHVkZUluQ2F0PnRydWU8L0luY2x1ZGVJbkNhdD4KICAgICAgICAgPC9JbnN0YWxsRmlsZXM+CiAgICAgPC9JdGVtR3JvdXA+CiAgICAgCmRpZmYgLS1naXQgYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzLnd4cwppbmRleCA4Zjg0MThhLi43YTgwNWQwIDEwMDY0NAotLS0gYS9Ub29scy9tc2kvdG9vbHMvdG9vbHMud3hzCisrKyBiL1Rvb2xzL21zaS90b29scy90b29scy53eHMKQEAgLTksNiArOSw3IEBACiAgICAgICAgIDxGZWF0dXJlIElkPSJEZWZhdWx0RmVhdHVyZSIgQWxsb3dBZHZlcnRpc2U9Im5vIiBUaXRsZT0iIShsb2MuVGl0bGUpIiBEZXNjcmlwdGlvbj0iIShsb2MuRGVzY3JpcHRpb24pIj4KICAgICAgICAgICAgIDxDb21wb25lbnRHcm91cFJlZiBJZD0idG9vbHNfcHkiIC8+CiAgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX3NjcmlwdHMiIC8+CisgICAgICAgICAgICA8Q29tcG9uZW50R3JvdXBSZWYgSWQ9InRvb2xzX2NhdCIgLz4KICAgICAgICAgICAgIDxDb21wb25lbnRSZWYgSWQ9Ik9wdGlvbmFsRmVhdHVyZSIgLz4KICAgICAgICAgPC9GZWF0dXJlPgogICAgIDwvUHJvZHVjdD4KZGlmZiAtLWdpdCBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMgYi9Ub29scy9tc2kvdG9vbHMvdG9vbHNfZmlsZXMud3hzCmluZGV4IDNhZTBkYjIuLjljNzZiMWIgMTAwNjQ0Ci0tLSBhL1Rvb2xzL21zaS90b29scy90b29sc19maWxlcy53eHMKKysrIGIvVG9vbHMvbXNpL3Rvb2xzL3Rvb2xzX2ZpbGVzLnd4cwpAQCAtMTMsNCArMTMsMTEgQEAKICAgICAgICAgICAgIDwvQ29tcG9uZW50PgogICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgogICAgIDwvRnJhZ21lbnQ+CisgICAgPEZyYWdtZW50PgorICAgICAgICA8Q29tcG9uZW50R3JvdXAgSWQ9InRvb2xzX2NhdCI+CisgICAgICAgICAgICA8Q29tcG9uZW50IElkPSJ0b29sc19jYXQiIERpcmVjdG9yeT0iQ2F0YWxvZ3MiIEd1aWQ9IioiPgorICAgICAgICAgICAgICAgIDxGaWxlIE5hbWU9InB5dGhvbl90b29scy5jYXQiIEtleVBhdGg9InllcyIgLz4KKyAgICAgICAgICAgIDwvQ29tcG9uZW50PgorICAgICAgICA8L0NvbXBvbmVudEdyb3VwPgorICAgIDwvRnJhZ21lbnQ+CiA8L1dpeD4KZGlmZiAtLWdpdCBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2ogYi9Ub29scy9udWdldC9tYWtlX3BrZy5wcm9qCmluZGV4IDU0MmJmMDcuLmMzY2Q0M2EgMTAwNjQ0Ci0tLSBhL1Rvb2xzL251Z2V0L21ha2VfcGtnLnByb2oKKysrIGIvVG9vbHMvbnVnZXQvbWFrZV9wa2cucHJvagpAQCAtMTQsNiArMTQsNyBAQAogICAgIDxQcm9wZXJ0eUdyb3VwPgogICAgICAgICA8TnVnZXQgQ29uZGl0aW9uPSIkKE51Z2V0KSA9PSAnJyI+JChFeHRlcm5hbHNEaXIpXHdpbmRvd3MtaW5zdGFsbGVyXG51Z2V0XG51Z2V0LmV4ZTwvTnVnZXQ+CiAgICAgICAgIDxOdXNwZWNWZXJzaW9uPiQoTWFqb3JWZXJzaW9uTnVtYmVyKS4kKE1pbm9yVmVyc2lvbk51bWJlcikuJChNaWNyb1ZlcnNpb25OdW1iZXIpPC9OdXNwZWNWZXJzaW9uPgorICAgICAgICA8TnVzcGVjVmVyc2lvbiBDb25kaXRpb249IiQoUmVsZWFzZUxldmVsTmFtZSkgIT0gJyciPiQoTnVzcGVjVmVyc2lvbiktJChSZWxlYXNlTGV2ZWxOYW1lKTwvTnVzcGVjVmVyc2lvbj4KICAgICAgICAgPFNpZ25PdXRwdXQ+ZmFsc2U8L1NpZ25PdXRwdXQ+CiAgICAgICAgIDxUYXJnZXROYW1lPiQoT3V0cHV0TmFtZSkuJChOdXNwZWNWZXJzaW9uKTwvVGFyZ2V0TmFtZT4KICAgICAgICAgPFRhcmdldEV4dD4ubnVwa2c8L1RhcmdldEV4dD4KZGlmZiAtLWdpdCBhL1Rvb2xzL3BhcnNlci91bnBhcnNlLnB5IGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKaW5kZXggMjg1MDMwZS4uN2UxY2M0ZSAxMDA2NDQKLS0tIGEvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKKysrIGIvVG9vbHMvcGFyc2VyL3VucGFyc2UucHkKQEAgLTEwNCw2ICsxMDQsMTkgQEAKICAgICAgICAgc2VsZi53cml0ZSgiICIrc2VsZi5iaW5vcFt0Lm9wLl9fY2xhc3NfXy5fX25hbWVfX10rIj0gIikKICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQogCisgICAgZGVmIF9Bbm5Bc3NpZ24oc2VsZiwgdCk6CisgICAgICAgIHNlbGYuZmlsbCgpCisgICAgICAgIGlmIG5vdCB0LnNpbXBsZSBhbmQgaXNpbnN0YW5jZSh0LnRhcmdldCwgYXN0Lk5hbWUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnKCcpCisgICAgICAgIHNlbGYuZGlzcGF0Y2godC50YXJnZXQpCisgICAgICAgIGlmIG5vdCB0LnNpbXBsZSBhbmQgaXNpbnN0YW5jZSh0LnRhcmdldCwgYXN0Lk5hbWUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgnKScpCisgICAgICAgIHNlbGYud3JpdGUoIjogIikKKyAgICAgICAgc2VsZi5kaXNwYXRjaCh0LmFubm90YXRpb24pCisgICAgICAgIGlmIHQudmFsdWU6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgPSAiKQorICAgICAgICAgICAgc2VsZi5kaXNwYXRjaCh0LnZhbHVlKQorCiAgICAgZGVmIF9SZXR1cm4oc2VsZiwgdCk6CiAgICAgICAgIHNlbGYuZmlsbCgicmV0dXJuIikKICAgICAgICAgaWYgdC52YWx1ZToKQEAgLTMyMiw5ICszMzUsNzIgQEAKICAgICBkZWYgX1N0cihzZWxmLCB0cmVlKToKICAgICAgICAgc2VsZi53cml0ZShyZXByKHRyZWUucykpCiAKKyAgICBkZWYgX0pvaW5lZFN0cihzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiZiIpCisgICAgICAgIHN0cmluZyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5fZnN0cmluZ19Kb2luZWRTdHIodCwgc3RyaW5nLndyaXRlKQorICAgICAgICBzZWxmLndyaXRlKHJlcHIoc3RyaW5nLmdldHZhbHVlKCkpKQorCisgICAgZGVmIF9Gb3JtYXR0ZWRWYWx1ZShzZWxmLCB0KToKKyAgICAgICAgc2VsZi53cml0ZSgiZiIpCisgICAgICAgIHN0cmluZyA9IGlvLlN0cmluZ0lPKCkKKyAgICAgICAgc2VsZi5fZnN0cmluZ19Gb3JtYXR0ZWRWYWx1ZSh0LCBzdHJpbmcud3JpdGUpCisgICAgICAgIHNlbGYud3JpdGUocmVwcihzdHJpbmcuZ2V0dmFsdWUoKSkpCisKKyAgICBkZWYgX2ZzdHJpbmdfSm9pbmVkU3RyKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgZm9yIHZhbHVlIGluIHQudmFsdWVzOgorICAgICAgICAgICAgbWV0aCA9IGdldGF0dHIoc2VsZiwgIl9mc3RyaW5nXyIgKyB0eXBlKHZhbHVlKS5fX25hbWVfXykKKyAgICAgICAgICAgIG1ldGgodmFsdWUsIHdyaXRlKQorCisgICAgZGVmIF9mc3RyaW5nX1N0cihzZWxmLCB0LCB3cml0ZSk6CisgICAgICAgIHZhbHVlID0gdC5zLnJlcGxhY2UoInsiLCAie3siKS5yZXBsYWNlKCJ9IiwgIn19IikKKyAgICAgICAgd3JpdGUodmFsdWUpCisKKyAgICBkZWYgX2ZzdHJpbmdfQ29uc3RhbnQoc2VsZiwgdCwgd3JpdGUpOgorICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0LnZhbHVlLCBzdHIpCisgICAgICAgIHZhbHVlID0gdC52YWx1ZS5yZXBsYWNlKCJ7IiwgInt7IikucmVwbGFjZSgifSIsICJ9fSIpCisgICAgICAgIHdyaXRlKHZhbHVlKQorCisgICAgZGVmIF9mc3RyaW5nX0Zvcm1hdHRlZFZhbHVlKHNlbGYsIHQsIHdyaXRlKToKKyAgICAgICAgd3JpdGUoInsiKQorICAgICAgICBleHByID0gaW8uU3RyaW5nSU8oKQorICAgICAgICBVbnBhcnNlcih0LnZhbHVlLCBleHByKQorICAgICAgICBleHByID0gZXhwci5nZXR2YWx1ZSgpLnJzdHJpcCgiXG4iKQorICAgICAgICBpZiBleHByLnN0YXJ0c3dpdGgoInsiKToKKyAgICAgICAgICAgIHdyaXRlKCIgIikgICMgU2VwYXJhdGUgcGFpciBvZiBvcGVuaW5nIGJyYWNrZXRzIGFzICJ7IHsiCisgICAgICAgIHdyaXRlKGV4cHIpCisgICAgICAgIGlmIHQuY29udmVyc2lvbiAhPSAtMToKKyAgICAgICAgICAgIGNvbnZlcnNpb24gPSBjaHIodC5jb252ZXJzaW9uKQorICAgICAgICAgICAgYXNzZXJ0IGNvbnZlcnNpb24gaW4gInNyYSIKKyAgICAgICAgICAgIHdyaXRlKGYiIXtjb252ZXJzaW9ufSIpCisgICAgICAgIGlmIHQuZm9ybWF0X3NwZWM6CisgICAgICAgICAgICB3cml0ZSgiOiIpCisgICAgICAgICAgICBtZXRoID0gZ2V0YXR0cihzZWxmLCAiX2ZzdHJpbmdfIiArIHR5cGUodC5mb3JtYXRfc3BlYykuX19uYW1lX18pCisgICAgICAgICAgICBtZXRoKHQuZm9ybWF0X3NwZWMsIHdyaXRlKQorICAgICAgICB3cml0ZSgifSIpCisKICAgICBkZWYgX05hbWUoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUodC5pZCkKIAorICAgIGRlZiBfd3JpdGVfY29uc3RhbnQoc2VsZiwgdmFsdWUpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoZmxvYXQsIGNvbXBsZXgpKToKKyAgICAgICAgICAgIHNlbGYud3JpdGUocmVwcih2YWx1ZSkucmVwbGFjZSgiaW5mIiwgSU5GU1RSKSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYud3JpdGUocmVwcih2YWx1ZSkpCisKKyAgICBkZWYgX0NvbnN0YW50KHNlbGYsIHQpOgorICAgICAgICB2YWx1ZSA9IHQudmFsdWUKKyAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgdHVwbGUpOgorICAgICAgICAgICAgc2VsZi53cml0ZSgiKCIpCisgICAgICAgICAgICBpZiBsZW4odmFsdWUpID09IDE6CisgICAgICAgICAgICAgICAgc2VsZi5fd3JpdGVfY29uc3RhbnQodmFsdWVbMF0pCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZSgiLCIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGludGVybGVhdmUobGFtYmRhOiBzZWxmLndyaXRlKCIsICIpLCBzZWxmLl93cml0ZV9jb25zdGFudCwgdmFsdWUpCisgICAgICAgICAgICBzZWxmLndyaXRlKCIpIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuX3dyaXRlX2NvbnN0YW50KHQudmFsdWUpCisKICAgICBkZWYgX05hbWVDb25zdGFudChzZWxmLCB0KToKICAgICAgICAgc2VsZi53cml0ZShyZXByKHQudmFsdWUpKQogCkBAIC0zNjgsNyArNDQ0LDEwIEBACiAgICAgICAgIHNlbGYud3JpdGUoIn0iKQogCiAgICAgZGVmIF9jb21wcmVoZW5zaW9uKHNlbGYsIHQpOgotICAgICAgICBzZWxmLndyaXRlKCIgZm9yICIpCisgICAgICAgIGlmIHQuaXNfYXN5bmM6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgYXN5bmMgZm9yICIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBzZWxmLndyaXRlKCIgZm9yICIpCiAgICAgICAgIHNlbGYuZGlzcGF0Y2godC50YXJnZXQpCiAgICAgICAgIHNlbGYud3JpdGUoIiBpbiAiKQogICAgICAgICBzZWxmLmRpc3BhdGNoKHQuaXRlcikKQEAgLTQxMyw3ICs0OTIsNyBAQAogICAgIGRlZiBfVHVwbGUoc2VsZiwgdCk6CiAgICAgICAgIHNlbGYud3JpdGUoIigiKQogICAgICAgICBpZiBsZW4odC5lbHRzKSA9PSAxOgotICAgICAgICAgICAgKGVsdCwpID0gdC5lbHRzCisgICAgICAgICAgICBlbHQgPSB0LmVsdHNbMF0KICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2goZWx0KQogICAgICAgICAgICAgc2VsZi53cml0ZSgiLCIpCiAgICAgICAgIGVsc2U6CkBAIC00NjAsNyArNTM5LDggQEAKICAgICAgICAgIyBTcGVjaWFsIGNhc2U6IDMuX19hYnNfXygpIGlzIGEgc3ludGF4IGVycm9yLCBzbyBpZiB0LnZhbHVlCiAgICAgICAgICMgaXMgYW4gaW50ZWdlciBsaXRlcmFsIHRoZW4gd2UgbmVlZCB0byBlaXRoZXIgcGFyZW50aGVzaXplCiAgICAgICAgICMgaXQgb3IgYWRkIGFuIGV4dHJhIHNwYWNlIHRvIGdldCAzIC5fX2Fic19fKCkuCi0gICAgICAgIGlmIGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0Lk51bSkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS5uLCBpbnQpOgorICAgICAgICBpZiAoKGlzaW5zdGFuY2UodC52YWx1ZSwgYXN0Lk51bSkgYW5kIGlzaW5zdGFuY2UodC52YWx1ZS5uLCBpbnQpKQorICAgICAgICAgICBvciAoaXNpbnN0YW5jZSh0LnZhbHVlLCBhc3QuQ29uc3RhbnQpIGFuZCBpc2luc3RhbmNlKHQudmFsdWUudmFsdWUsIGludCkpKToKICAgICAgICAgICAgIHNlbGYud3JpdGUoIiAiKQogICAgICAgICBzZWxmLndyaXRlKCIuIikKICAgICAgICAgc2VsZi53cml0ZSh0LmF0dHIpCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5IGIvVG9vbHMvcHliZW5jaC9Db21tYW5kTGluZS5weQppbmRleCAwNzNjY2EwLi41NGE4YmE3IDEwMDY0NAotLS0gYS9Ub29scy9weWJlbmNoL0NvbW1hbmRMaW5lLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvQ29tbWFuZExpbmUucHkKQEAgLTk5LDggKzk5LDggQEAKICMgQWxpYXMKIGdldHBhc3N3ZCA9IGludmlzaWJsZV9pbnB1dAogCi1faW50ZWdlclJFID0gcmUuY29tcGlsZSgnXHMqKC0/XGQrKVxzKiQnKQotX2ludGVnZXJSYW5nZVJFID0gcmUuY29tcGlsZSgnXHMqKC0/XGQrKVxzKi1ccyooLT9cZCspXHMqJCcpCitfaW50ZWdlclJFID0gcmUuY29tcGlsZShyJ1xzKigtP1xkKylccyokJykKK19pbnRlZ2VyUmFuZ2VSRSA9IHJlLmNvbXBpbGUocidccyooLT9cZCspXHMqLVxzKigtP1xkKylccyokJykKIAogZGVmIHNyYW5nZShzLAogCmRpZmYgLS1naXQgYS9Ub29scy9weWJlbmNoL1dpdGgucHkgYi9Ub29scy9weWJlbmNoL1dpdGgucHkKaW5kZXggNWY1OWU4Yy4uMzBjZDNjMiAxMDA2NDQKLS0tIGEvVG9vbHMvcHliZW5jaC9XaXRoLnB5CisrKyBiL1Rvb2xzL3B5YmVuY2gvV2l0aC5weQpAQCAtMSw0ICsxLDMgQEAKLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKIGZyb20gcHliZW5jaCBpbXBvcnQgVGVzdAogCiBjbGFzcyBXaXRoRmluYWxseShUZXN0KToKZGlmZiAtLWdpdCBhL1Rvb2xzL3B5bmNoZS9Db2xvckRCLnB5IGIvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKaW5kZXggNWNlZDBlNy4uMDM0ODE0OCAxMDA2NDQKLS0tIGEvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKKysrIGIvVG9vbHMvcHluY2hlL0NvbG9yREIucHkKQEAgLTEzNCwxNyArMTM0LDE3IEBACiAMCiBjbGFzcyBSR0JDb2xvckRCKENvbG9yREIpOgogICAgIF9yZSA9IHJlLmNvbXBpbGUoCi0gICAgICAgICdccyooP1A8cmVkPlxkKylccysoP1A8Z3JlZW4+XGQrKVxzKyg/UDxibHVlPlxkKylccysoP1A8bmFtZT4uKiknKQorICAgICAgICByJ1xzKig/UDxyZWQ+XGQrKVxzKyg/UDxncmVlbj5cZCspXHMrKD9QPGJsdWU+XGQrKVxzKyg/UDxuYW1lPi4qKScpCiAKIAogY2xhc3MgSFRNTDQwREIoQ29sb3JEQik6Ci0gICAgX3JlID0gcmUuY29tcGlsZSgnKD9QPG5hbWU+XFMrKVxzKyg/UDxoZXhyZ2I+I1swLTlhLWZBLUZdezZ9KScpCisgICAgX3JlID0gcmUuY29tcGlsZShyJyg/UDxuYW1lPlxTKylccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQogCiAgICAgZGVmIF9leHRyYWN0cmdiKHNlbGYsIG1vKToKICAgICAgICAgcmV0dXJuIHJyZ2diYl90b190cmlwbGV0KG1vLmdyb3VwKCdoZXhyZ2InKSkKIAogY2xhc3MgTGlnaHRsaW5rREIoSFRNTDQwREIpOgotICAgIF9yZSA9IHJlLmNvbXBpbGUoJyg/UDxuYW1lPiguKykpXHMrKD9QPGhleHJnYj4jWzAtOWEtZkEtRl17Nn0pJykKKyAgICBfcmUgPSByZS5jb21waWxlKHInKD9QPG5hbWU+KC4rKSlccysoP1A8aGV4cmdiPiNbMC05YS1mQS1GXXs2fSknKQogCiAgICAgZGVmIF9leHRyYWN0bmFtZShzZWxmLCBtbyk6CiAgICAgICAgIHJldHVybiBtby5ncm91cCgnbmFtZScpLnN0cmlwKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkgYi9Ub29scy9zY3JpcHRzL2NvbWJpbmVyZWZzLnB5CmluZGV4IGUxMGU0OWEuLjdjYTk1MjYgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvY29tYmluZXJlZnMucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9jb21iaW5lcmVmcy5weQpAQCAtNiw3ICs2LDcgQEAKIEEgaGVscGVyIGZvciBhbmFseXppbmcgUFlUSE9ORFVNUFJFRlMgb3V0cHV0LgogCiBXaGVuIHRoZSBQWVRIT05EVU1QUkVGUyBlbnZhciBpcyBzZXQgaW4gYSBkZWJ1ZyBidWlsZCwgYXQgUHl0aG9uIHNodXRkb3duCi10aW1lIFB5X0ZpbmFsaXplKCkgcHJpbnRzIHRoZSBsaXN0IG9mIGFsbCBsaXZlIG9iamVjdHMgdHdpY2U6ICBmaXJzdCBpdAordGltZSBQeV9GaW5hbGl6ZUV4KCkgcHJpbnRzIHRoZSBsaXN0IG9mIGFsbCBsaXZlIG9iamVjdHMgdHdpY2U6ICBmaXJzdCBpdAogcHJpbnRzIHRoZSByZXByKCkgb2YgZWFjaCBvYmplY3Qgd2hpbGUgdGhlIGludGVycHJldGVyIGlzIHN0aWxsIGZ1bGx5IGludGFjdC4KIEFmdGVyIGNsZWFuaW5nIHVwIGV2ZXJ5dGhpbmcgaXQgY2FuLCBpdCBwcmludHMgYWxsIHJlbWFpbmluZyBsaXZlIG9iamVjdHMKIGFnYWluLCBidXQgdGhlIHNlY29uZCB0aW1lIGp1c3QgcHJpbnRzIHRoZWlyIGFkZHJlc3NlcywgcmVmY291bnRzLCBhbmQgdHlwZQpAQCAtNDEsNyArNDEsNyBAQAogb2JqZWN0cyBzaG93biBpbiB0aGUgcmVwcjogIHRoZSByZXByIHdhcyBjYXB0dXJlZCBmcm9tIHRoZSBmaXJzdCBvdXRwdXQgYmxvY2ssCiBhbmQgc29tZSBvZiB0aGUgY29udGFpbmVlcyBtYXkgaGF2ZSBiZWVuIHJlbGVhc2VkIHNpbmNlIHRoZW4uICBGb3IgZXhhbXBsZSwKIGl0J3MgY29tbW9uIGZvciB0aGUgbGluZSBzaG93aW5nIHRoZSBkaWN0IG9mIGludGVybmVkIHN0cmluZ3MgdG8gZGlzcGxheQotc3RyaW5ncyB0aGF0IG5vIGxvbmdlciBleGlzdCBhdCB0aGUgZW5kIG9mIFB5X0ZpbmFsaXplOyB0aGlzIGNhbiBiZSByZWNvZ25pemVkCitzdHJpbmdzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0IGF0IHRoZSBlbmQgb2YgUHlfRmluYWxpemVFeDsgdGhpcyBjYW4gYmUgcmVjb2duaXplZAogKGFsYmVpdCBwYWluZnVsbHkpIGJlY2F1c2Ugc3VjaCBjb250YWluZWVzIGRvbid0IGhhdmUgYSBsaW5lIG9mIHRoZWlyIG93bi4KIAogVGhlIG9iamVjdHMgYXJlIGxpc3RlZCBpbiBhbGxvY2F0aW9uIG9yZGVyLCB3aXRoIG1vc3QtcmVjZW50bHkgYWxsb2NhdGVkCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2RpZmYucHkgYi9Ub29scy9zY3JpcHRzL2RpZmYucHkKaW5kZXggOTcyMGE0My4uOTYxOTliOCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9kaWZmLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZGlmZi5weQpAQCAtOCw3ICs4LDcgQEAKIAogIiIiCiAKLWltcG9ydCBzeXMsIG9zLCB0aW1lLCBkaWZmbGliLCBhcmdwYXJzZQoraW1wb3J0IHN5cywgb3MsIGRpZmZsaWIsIGFyZ3BhcnNlCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmUKIAogZGVmIGZpbGVfbXRpbWUocGF0aCk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL2ZpeGRpdi5weSBiL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CmluZGV4IDIwZjMzODYuLjEyMTNhNGUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvZml4ZGl2LnB5CkBAIC0xNzQsOCArMTc0LDggQEAKICAgICBzeXMuc3RkZXJyLndyaXRlKCJVc2FnZTogJXMgWy1tXSB3YXJuaW5nc1xuIiAlIHN5cy5hcmd2WzBdKQogICAgIHN5cy5zdGRlcnIud3JpdGUoIlRyeSBgJXMgLWgnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiAlIHN5cy5hcmd2WzBdKQogCi1QQVRURVJOID0gKCJeKC4rPyk6KFxkKyk6IERlcHJlY2F0aW9uV2FybmluZzogIgotICAgICAgICAgICAiY2xhc3NpYyAoaW50fGxvbmd8ZmxvYXR8Y29tcGxleCkgZGl2aXNpb24kIikKK1BBVFRFUk4gPSAociJeKC4rPyk6KFxkKyk6IERlcHJlY2F0aW9uV2FybmluZzogIgorICAgICAgICAgICByImNsYXNzaWMgKGludHxsb25nfGZsb2F0fGNvbXBsZXgpIGRpdmlzaW9uJCIpCiAKIGRlZiByZWFkd2FybmluZ3Mod2FybmluZ3NmaWxlKToKICAgICBwcm9nID0gcmUuY29tcGlsZShQQVRURVJOKQpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weSBiL1Rvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkKaW5kZXggYzYyZjlhNS4uOTQ4YjU2ZiAxMDA2NDQKLS0tIGEvVG9vbHMvc2NyaXB0cy9nZW5lcmF0ZV9vcGNvZGVfaC5weQorKysgYi9Ub29scy9zY3JpcHRzL2dlbmVyYXRlX29wY29kZV9oLnB5CkBAIC0xLDcgKzEsNSBAQAogIyBUaGlzIHNjcmlwdCBnZW5lcmF0ZXMgdGhlIG9wY29kZS5oIGhlYWRlciBmaWxlLgogCi1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50Ci0KIGltcG9ydCBzeXMKIGhlYWRlciA9ICIiIi8qIEF1dG8tZ2VuZXJhdGVkIGJ5IFRvb2xzL3NjcmlwdHMvZ2VuZXJhdGVfb3Bjb2RlX2gucHkgKi8KICNpZm5kZWYgUHlfT1BDT0RFX0gKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaDJweS5weSBiL1Rvb2xzL3NjcmlwdHMvaDJweS5weQppbmRleCAwOTY3ZmMyLi40MzYzYzBjIDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL2gycHkucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9oMnB5LnB5CkBAIC0yMywxMyArMjMsMTMgQEAKIAogaW1wb3J0IHN5cywgcmUsIGdldG9wdCwgb3MKIAotcF9kZWZpbmUgPSByZS5jb21waWxlKCdeW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKyhbYS16QS1aMC05X10rKVtcdCBdKycpCitwX2RlZmluZSA9IHJlLmNvbXBpbGUocideW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKyhbYS16QS1aMC05X10rKVtcdCBdKycpCiAKIHBfbWFjcm8gPSByZS5jb21waWxlKAotICAnXltcdCBdKiNbXHQgXSpkZWZpbmVbXHQgXSsnCi0gICcoW2EtekEtWjAtOV9dKylcKChbX2EtekEtWl1bX2EtekEtWjAtOV0qKVwpW1x0IF0rJykKKyAgcideW1x0IF0qI1tcdCBdKmRlZmluZVtcdCBdKycKKyAgcicoW2EtekEtWjAtOV9dKylcKChbX2EtekEtWl1bX2EtekEtWjAtOV0qKVwpW1x0IF0rJykKIAotcF9pbmNsdWRlID0gcmUuY29tcGlsZSgnXltcdCBdKiNbXHQgXSppbmNsdWRlW1x0IF0rPChbXj5cbl0rKT4nKQorcF9pbmNsdWRlID0gcmUuY29tcGlsZShyJ15bXHQgXSojW1x0IF0qaW5jbHVkZVtcdCBdKzwoW14+XG5dKyk+JykKIAogcF9jb21tZW50ID0gcmUuY29tcGlsZShyJy9cKihbXipdK3xcKitbXi9dKSooXCorLyk/JykKIHBfY3BwX2NvbW1lbnQgPSByZS5jb21waWxlKCcvLy4qJykKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaGlnaGxpZ2h0LnB5IGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKaW5kZXggNjZhZDg2OC4uOTI3MmZlZSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9oaWdobGlnaHQucHkKQEAgLTE0NywxNCArMTQ3LDE0IEBACiAjIyMjIExhVGVYIE91dHB1dCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAogZGVmYXVsdF9sYXRleF9jb21tYW5kcyA9IHsKLSAgICAnY29tbWVudCc6ICd7XGNvbG9ye3JlZH0jMX0nLAotICAgICdzdHJpbmcnOiAne1xjb2xvcntGb3Jlc3RHcmVlbn0jMX0nLAotICAgICdkb2NzdHJpbmcnOiAne1xlbXBoe1xjb2xvcntGb3Jlc3RHcmVlbn0jMX19JywKLSAgICAna2V5d29yZCc6ICd7XGNvbG9ye29yYW5nZX0jMX0nLAotICAgICdidWlsdGluJzogJ3tcY29sb3J7cHVycGxlfSMxfScsCi0gICAgJ2RlZmluaXRpb24nOiAne1xjb2xvcntvcmFuZ2V9IzF9JywKLSAgICAnZGVmbmFtZSc6ICd7XGNvbG9ye2JsdWV9IzF9JywKLSAgICAnb3BlcmF0b3InOiAne1xjb2xvcnticm93bn0jMX0nLAorICAgICdjb21tZW50Jzogcid7XGNvbG9ye3JlZH0jMX0nLAorICAgICdzdHJpbmcnOiByJ3tcY29sb3J7Rm9yZXN0R3JlZW59IzF9JywKKyAgICAnZG9jc3RyaW5nJzogcid7XGVtcGh7XGNvbG9ye0ZvcmVzdEdyZWVufSMxfX0nLAorICAgICdrZXl3b3JkJzogcid7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdidWlsdGluJzogcid7XGNvbG9ye3B1cnBsZX0jMX0nLAorICAgICdkZWZpbml0aW9uJzogcid7XGNvbG9ye29yYW5nZX0jMX0nLAorICAgICdkZWZuYW1lJzogcid7XGNvbG9ye2JsdWV9IzF9JywKKyAgICAnb3BlcmF0b3InOiByJ3tcY29sb3J7YnJvd259IzF9JywKIH0KIAogZGVmYXVsdF9sYXRleF9kb2N1bWVudCA9IHInJycKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvaWRsZTMgYi9Ub29scy9zY3JpcHRzL2lkbGUzCmluZGV4IDhlZTkyYzIuLmQ3MzMyYmMgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvaWRsZTMKKysrIGIvVG9vbHMvc2NyaXB0cy9pZGxlMwpAQCAtMSw1ICsxLDUgQEAKICMhIC91c3IvYmluL2VudiBweXRob24zCiAKLWZyb20gaWRsZWxpYi5QeVNoZWxsIGltcG9ydCBtYWluCitmcm9tIGlkbGVsaWIucHlzaGVsbCBpbXBvcnQgbWFpbgogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBtYWluKCkKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvbWFpbGVyZGFlbW9uLnB5IGIvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKaW5kZXggYWViNDUxZS4uNjM1ZTU0OCAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9tYWlsZXJkYWVtb24ucHkKQEAgLTg4LDcgKzg4LDcgQEAKICMgbm8gbW9yZSBleHByZXNzaW9ucyBhcmUgc2VhcmNoZWQgZm9yLiAgU28sIG9yZGVyIGlzIGltcG9ydGFudC4KIGVtcGFyc2VfbGlzdF9yZWFzb24gPSBbCiAgICAgcideNVxkezJ9IDw+XC5cLlwuICg/UDxyZWFzb24+LiopJywKLSAgICAnPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAorICAgIHInPD5cLlwuXC4gKD9QPHJlYXNvbj4uKiknLAogICAgIHJlLmNvbXBpbGUocidePDw8IDVcZHsyfSAoP1A8cmVhc29uPi4qKScsIHJlLk1VTFRJTElORSksCiAgICAgcmUuY29tcGlsZSgnPT09PT0gc3RkZXJyIHdhcyA9PT09PVxucm1haWw6ICg/UDxyZWFzb24+LiopJyksCiAgICAgcmUuY29tcGlsZSgnXkRpYWdub3N0aWMtQ29kZTogKD9QPHJlYXNvbj4uKiknLCByZS5NVUxUSUxJTkUpLApkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9ubTJkZWYucHkgYi9Ub29scy9zY3JpcHRzL25tMmRlZi5weQppbmRleCA4ZjA3NTU5Li44M2JiY2Q3IDEwMDc1NQotLS0gYS9Ub29scy9zY3JpcHRzL25tMmRlZi5weQorKysgYi9Ub29scy9zY3JpcHRzL25tMmRlZi5weQpAQCAtMzYsOCArMzYsOCBAQAogIiIiCiBpbXBvcnQgb3MsIHN5cwogCi1QWVRIT05MSUIgPSAnbGlicHl0aG9uJytzeXMudmVyc2lvbls6M10rJy5hJwotUENfUFlUSE9OTElCID0gJ1B5dGhvbicrc3lzLnZlcnNpb25bMF0rc3lzLnZlcnNpb25bMl0rJy5kbGwnCitQWVRIT05MSUIgPSAnbGlicHl0aG9uJWQuJWQuYScgJSBzeXMudmVyc2lvbl9pbmZvWzoyXQorUENfUFlUSE9OTElCID0gJ1B5dGhvbiVkJWQuZGxsJyAlIHN5cy52ZXJzaW9uX2luZm9bOjJdCiBOTSA9ICdubSAtcCAtZyAlcycgICAgICAgICAgICAgICAgICAgICAgIyBGb3IgTGludXgsIHVzZSAibm0gLWcgJXMiCiAKIGRlZiBzeW1ib2xzKGxpYj1QWVRIT05MSUIsdHlwZXM9KCdUJywnQycsJ0QnKSk6CmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkgYi9Ub29scy9zY3JpcHRzL3BhcnNlZW50aXRpZXMucHkKaW5kZXggYTA0MmQxYy4uYzY4NmIwMiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9wYXJzZWVudGl0aWVzLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvcGFyc2VlbnRpdGllcy5weQpAQCAtMTQsNyArMTQsNyBAQAogIiIiCiBpbXBvcnQgcmUsc3lzCiAKLWVudGl0eVJFID0gcmUuY29tcGlsZSgnPCFFTlRJVFkgKyhcdyspICtDREFUQSArIihbXiJdKykiICstLSArKCg/Oi58XG4pKz8pICotLT4nKQorZW50aXR5UkUgPSByZS5jb21waWxlKHInPCFFTlRJVFkgKyhcdyspICtDREFUQSArIihbXiJdKykiICstLSArKCg/Oi58XG4pKz8pICotLT4nKQogCiBkZWYgcGFyc2UodGV4dCxwb3M9MCxlbmRwb3M9Tm9uZSk6CiAKQEAgLTM5LDcgKzM5LDcgQEAKICAgICAgICAgaWYgY2hhcmNvZGVbOjJdID09ICcmIyc6CiAgICAgICAgICAgICBjb2RlID0gaW50KGNoYXJjb2RlWzI6LTFdKQogICAgICAgICAgICAgaWYgY29kZSA8IDI1NjoKLSAgICAgICAgICAgICAgICBjaGFyY29kZSA9ICInXCVvJyIgJSBjb2RlCisgICAgICAgICAgICAgICAgY2hhcmNvZGUgPSByIidcJW8nIiAlIGNvZGUKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY2hhcmNvZGUgPSByZXByKGNoYXJjb2RlKQogICAgICAgICBlbHNlOgpkaWZmIC0tZ2l0IGEvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5IGIvVG9vbHMvc2NyaXB0cy9wYXRoZml4LnB5CmluZGV4IDIyNDMyZDEuLjU2MmJiYzcgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcGF0aGZpeC5weQorKysgYi9Ub29scy9zY3JpcHRzL3BhdGhmaXgucHkKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgICAgIGlmIGZpeChhcmcpOiBiYWQgPSAxCiAgICAgc3lzLmV4aXQoYmFkKQogCi1pc3B5dGhvbnByb2cgPSByZS5jb21waWxlKCdeW2EtekEtWjAtOV9dK1wucHkkJykKK2lzcHl0aG9ucHJvZyA9IHJlLmNvbXBpbGUocideW2EtekEtWjAtOV9dK1wucHkkJykKIGRlZiBpc3B5dGhvbihuYW1lKToKICAgICByZXR1cm4gYm9vbChpc3B5dGhvbnByb2cubWF0Y2gobmFtZSkpCiAKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkgYi9Ub29scy9zY3JpcHRzL3B0YWdzLnB5CmluZGV4IGNhNjQzYjMuLjM5NmNiZDAgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvcHRhZ3MucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9wdGFncy5weQpAQCAtMjQsNyArMjQsNyBAQAogICAgICAgICBmb3IgcyBpbiB0YWdzOiBmcC53cml0ZShzKQogCiAKLWV4cHIgPSAnXlsgXHRdKihkZWZ8Y2xhc3MpWyBcdF0rKFthLXpBLVowLTlfXSspWyBcdF0qWzpcKF0nCitleHByID0gcideWyBcdF0qKGRlZnxjbGFzcylbIFx0XSsoW2EtekEtWjAtOV9dKylbIFx0XSpbOlwoXScKIG1hdGNoZXIgPSByZS5jb21waWxlKGV4cHIpCiAKIGRlZiB0cmVhdF9maWxlKGZpbGVuYW1lKToKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvcHl2ZW52IGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKaW5kZXggOTc4ZDY5MS4uMWZiNDJjNiAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9weXZlbnYKKysrIGIvVG9vbHMvc2NyaXB0cy9weXZlbnYKQEAgLTEsNiArMSwxMiBAQAogIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwogaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKICAgICBpbXBvcnQgc3lzCisgICAgaW1wb3J0IHBhdGhsaWIKKworICAgIGV4ZWN1dGFibGUgPSBwYXRobGliLlBhdGgoc3lzLmV4ZWN1dGFibGUgb3IgJ3B5dGhvbjMnKS5uYW1lCisgICAgcHJpbnQoJ1dBUk5JTkc6IHRoZSBweWVudiBzY3JpcHQgaXMgZGVwcmVjYXRlZCBpbiBmYXZvdXIgb2YgJworICAgICAgICAgIGYnYHtleGVjdXRhYmxlfSAtbSB2ZW52YCcsIGZpbGU9c3lzLnN0ZGVycikKKwogICAgIHJjID0gMQogICAgIHRyeToKICAgICAgICAgaW1wb3J0IHZlbnYKZGlmZiAtLWdpdCBhL1Rvb2xzL3NjcmlwdHMvc3ZuZW9sLnB5IGIvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKaW5kZXggOGFiZGQwMS4uNmM3MGRhOSAxMDA3NTUKLS0tIGEvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKKysrIGIvVG9vbHMvc2NyaXB0cy9zdm5lb2wucHkKQEAgLTEsNiArMSw2IEBACiAjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMwogCi0iIiIKK3IiIiIKIFNWTiBoZWxwZXIgc2NyaXB0LgogCiBUcnkgdG8gc2V0IHRoZSBzdm46ZW9sLXN0eWxlIHByb3BlcnR5IHRvICJuYXRpdmUiIG9uIGV2ZXJ5IC5weSwgLnR4dCwgLmMgYW5kCmRpZmYgLS1naXQgYS9Ub29scy9zY3JpcHRzL3RleGkyaHRtbC5weSBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CmluZGV4IDk5ODM1MjguLjljMWU5ZmUgMTAwNzU1Ci0tLSBhL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CisrKyBiL1Rvb2xzL3NjcmlwdHMvdGV4aTJodG1sLnB5CkBAIC03OCwxMSArNzgsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBydW5uaW5nIHRleHQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIG1lbnUgaXRlbSAoWXVjayEpCi1taXByb2cgPSByZS5jb21waWxlKCdeXCogKFteOl0qKTooOnxbIFx0XSooW15cdCxcbi5dKykoW14gXHRcbl0qKSlbIFx0XG5dKicpCi0jICAgICAgICAgICAgICAgICAgIDAgICAgMSAgICAgMSAyICAgICAgICAzICAgICAgICAgIDM0ICAgICAgICAgNDIgICAgICAgIDAKLSMgICAgICAgICAgICAgICAgICAgICAgICAgLS0tLS0gICAgICAgICAgICAtLS0tLS0tLS0tICAtLS0tLS0tLS0KLSMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbWlwcm9nID0gcmUuY29tcGlsZShyJ15cKiAoW146XSopOig6fFsgXHRdKihbXlx0LFxuLl0rKShbXiBcdFxuXSopKVsgXHRcbl0qJykKKyMgICAgICAgICAgICAgICAgICAgIDAgICAgMSAgICAgMSAyICAgICAgICAzICAgICAgICAgIDM0ICAgICAgICAgNDIgICAgICAgIDAKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIC0tLS0tICAgICAgICAgICAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tCisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC18LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgICAgICAgICAgICAgICAgICAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvc3NsL3Rlc3RfbXVsdGlwbGVfdmVyc2lvbnMucHkgYi9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQppbmRleCBkZDU3ZGNmLi4zMGQ1ZmNmIDEwMDY0NAotLS0gYS9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQorKysgYi9Ub29scy9zc2wvdGVzdF9tdWx0aXBsZV92ZXJzaW9ucy5weQpAQCAtMTA1LDExICsxMDUsMTEgQEAKIAogICAgIGRlZiBfc3VicHJvY2Vzc19jYWxsKHNlbGYsIGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuREVWTlVMTCwgZW52PU5vbmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgKiprd2FyZ3MpOgotICAgICAgICBsb2cuZGVidWcoIkNhbGwgJ3t9JyIuZm9ybWF0KCIgIi5qb2luKGNtZCkpKQorICAgICAgICBsb2cuZGVidWcoIkNhbGwgJyVzJyIsICIgIi5qb2luKGNtZCkpCiAgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoY21kLCBzdGRvdXQ9c3Rkb3V0LCBlbnY9ZW52LCAqKmt3YXJncykKIAogICAgIGRlZiBfc3VicHJvY2Vzc19vdXRwdXQoc2VsZiwgY21kLCBlbnY9Tm9uZSwgKiprd2FyZ3MpOgotICAgICAgICBsb2cuZGVidWcoIkNhbGwgJ3t9JyIuZm9ybWF0KCIgIi5qb2luKGNtZCkpKQorICAgICAgICBsb2cuZGVidWcoIkNhbGwgJyVzJyIsICIgIi5qb2luKGNtZCkpCiAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgZW52PWVudikKICAgICAgICAgcmV0dXJuIG91dC5zdHJpcCgpLmRlY29kZSgidXRmLTgiKQogCkBAIC0xNjgsNyArMTY4LDcgQEAKICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmhhc19zcmM6CiAgICAgICAgICAgICAgICAgc2VsZi5fZG93bmxvYWRfb3BlbnNzbCgpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGxvZy5kZWJ1ZygiQWxyZWFkeSBoYXMgc3JjIHt9Ii5mb3JtYXQoc2VsZi5zcmNfZmlsZSkpCisgICAgICAgICAgICAgICAgbG9nLmRlYnVnKCJBbHJlYWR5IGhhcyBzcmMgJXMiLCBzZWxmLnNyY19maWxlKQogICAgICAgICAgICAgc2VsZi5fdW5wYWNrX29wZW5zc2woKQogICAgICAgICAgICAgc2VsZi5fYnVpbGRfb3BlbnNzbCgpCiAgICAgICAgICAgICBzZWxmLl9pbnN0YWxsX29wZW5zc2woKQpkaWZmIC0tZ2l0IGEvVG9vbHMvdHovemR1bXAucHkgYi9Ub29scy90ei96ZHVtcC5weQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mOTRiNDgzCi0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvdHovemR1bXAucHkKQEAgLTAsMCArMSw4MSBAQAoraW1wb3J0IHN5cworaW1wb3J0IG9zCitpbXBvcnQgc3RydWN0Citmcm9tIGFycmF5IGltcG9ydCBhcnJheQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgbmFtZWR0dXBsZQorZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorCit0dGluZm8gPSBuYW1lZHR1cGxlKCd0dGluZm8nLCBbJ3R0X2dtdG9mZicsICd0dF9pc2RzdCcsICd0dF9hYmJyaW5kJ10pCisKK2NsYXNzIFRaSW5mbzoKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdHJhbnNpdGlvbnMsIHR5cGVfaW5kaWNlcywgdHRpcywgYWJicnMpOgorICAgICAgICBzZWxmLnRyYW5zaXRpb25zID0gdHJhbnNpdGlvbnMKKyAgICAgICAgc2VsZi50eXBlX2luZGljZXMgPSB0eXBlX2luZGljZXMKKyAgICAgICAgc2VsZi50dGlzID0gdHRpcworICAgICAgICBzZWxmLmFiYnJzID0gYWJicnMKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmcm9tZmlsZShjbHMsIGZpbGVvYmopOgorICAgICAgICBpZiBmaWxlb2JqLnJlYWQoNCkuZGVjb2RlKCkgIT0gIlRaaWYiOgorICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigibm90IGEgem9uZWluZm8gZmlsZSIpCisgICAgICAgIGZpbGVvYmouc2VlaygyMCkKKyAgICAgICAgaGVhZGVyID0gZmlsZW9iai5yZWFkKDI0KQorICAgICAgICB0emggPSAodHpoX3R0aXNnbXRjbnQsIHR6aF90dGlzc3RkY250LCB0emhfbGVhcGNudCwKKyAgICAgICAgICAgICAgIHR6aF90aW1lY250LCB0emhfdHlwZWNudCwgdHpoX2NoYXJjbnQpID0gc3RydWN0LnVucGFjaygiPjZsIiwgaGVhZGVyKQorICAgICAgICB0cmFuc2l0aW9ucyA9IGFycmF5KCdpJykKKyAgICAgICAgdHJhbnNpdGlvbnMuZnJvbWZpbGUoZmlsZW9iaiwgdHpoX3RpbWVjbnQpCisgICAgICAgIGlmIHN5cy5ieXRlb3JkZXIgIT0gJ2JpZyc6CisgICAgICAgICAgICB0cmFuc2l0aW9ucy5ieXRlc3dhcCgpCisKKyAgICAgICAgdHlwZV9pbmRpY2VzID0gYXJyYXkoJ0InKQorICAgICAgICB0eXBlX2luZGljZXMuZnJvbWZpbGUoZmlsZW9iaiwgdHpoX3RpbWVjbnQpCisKKyAgICAgICAgdHRpcyA9IFtdCisgICAgICAgIGZvciBpIGluIHJhbmdlKHR6aF90eXBlY250KToKKyAgICAgICAgICAgIHR0aXMuYXBwZW5kKHR0aW5mby5fbWFrZShzdHJ1Y3QudW5wYWNrKCI+bGJiIiwgZmlsZW9iai5yZWFkKDYpKSkpCisKKyAgICAgICAgYWJicnMgPSBmaWxlb2JqLnJlYWQodHpoX2NoYXJjbnQpCisKKyAgICAgICAgc2VsZiA9IGNscyh0cmFuc2l0aW9ucywgdHlwZV9pbmRpY2VzLCB0dGlzLCBhYmJycykKKyAgICAgICAgc2VsZi50emggPSB0emgKKworICAgICAgICByZXR1cm4gc2VsZgorCisgICAgZGVmIGR1bXAoc2VsZiwgc3RyZWFtLCBzdGFydD1Ob25lLCBlbmQ9Tm9uZSk6CisgICAgICAgIGZvciBqLCAodHJhbnMsIGkpIGluIGVudW1lcmF0ZSh6aXAoc2VsZi50cmFuc2l0aW9ucywgc2VsZi50eXBlX2luZGljZXMpKToKKyAgICAgICAgICAgIHV0YyA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodHJhbnMpCisgICAgICAgICAgICB0dGkgPSBzZWxmLnR0aXNbaV0KKyAgICAgICAgICAgIGxtdCA9IGRhdGV0aW1lLnV0Y2Zyb210aW1lc3RhbXAodHJhbnMgKyB0dGkudHRfZ210b2ZmKQorICAgICAgICAgICAgYWJicmluZCA9IHR0aS50dF9hYmJyaW5kCisgICAgICAgICAgICBhYmJyID0gc2VsZi5hYmJyc1thYmJyaW5kOnNlbGYuYWJicnMuZmluZCgwLCBhYmJyaW5kKV0uZGVjb2RlKCkKKyAgICAgICAgICAgIGlmIGogPiAwOgorICAgICAgICAgICAgICAgIHByZXZfdHRpID0gc2VsZi50dGlzW3NlbGYudHlwZV9pbmRpY2VzW2ogLSAxXV0KKyAgICAgICAgICAgICAgICBzaGlmdCA9ICIgJStnIiAlICgodHRpLnR0X2dtdG9mZiAtIHByZXZfdHRpLnR0X2dtdG9mZikgLyAzNjAwKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBzaGlmdCA9ICcnCisgICAgICAgICAgICBwcmludCgiJXMgVVRDID0gJXMgJS01cyBpc2RzdD0lZCIgJSAodXRjLCBsbXQsIGFiYnIsIHR0aVsxXSkgKyBzaGlmdCwgZmlsZT1zdHJlYW0pCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgem9uZWxpc3QoY2xzLCB6b25lZGlyPScvdXNyL3NoYXJlL3pvbmVpbmZvJyk6CisgICAgICAgIHpvbmVzID0gW10KKyAgICAgICAgZm9yIHJvb3QsIF8sIGZpbGVzIGluIG9zLndhbGsoem9uZWRpcik6CisgICAgICAgICAgICBmb3IgZiBpbiBmaWxlczoKKyAgICAgICAgICAgICAgICBwID0gb3MucGF0aC5qb2luKHJvb3QsIGYpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHAsICdyYicpIGFzIG86CisgICAgICAgICAgICAgICAgICAgIG1hZ2ljID0gIG8ucmVhZCg0KQorICAgICAgICAgICAgICAgIGlmIG1hZ2ljID09IGInVFppZic6CisgICAgICAgICAgICAgICAgICAgIHpvbmVzLmFwcGVuZChwW2xlbih6b25lZGlyKSArIDE6XSkKKyAgICAgICAgcmV0dXJuIHpvbmVzCisKK2lmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgaWYgbGVuKHN5cy5hcmd2KSA8IDI6CisgICAgICAgIHpvbmVzID0gVFpJbmZvLnpvbmVsaXN0KCkKKyAgICAgICAgZm9yIHogaW4gem9uZXM6CisgICAgICAgICAgICBwcmludCh6KQorICAgICAgICBzeXMuZXhpdCgpCisgICAgZmlsZXBhdGggPSBzeXMuYXJndlsxXQorICAgIGlmIG5vdCBmaWxlcGF0aC5zdGFydHN3aXRoKCcvJyk6CisgICAgICAgIGZpbGVwYXRoID0gb3MucGF0aC5qb2luKCcvdXNyL3NoYXJlL3pvbmVpbmZvJywgZmlsZXBhdGgpCisgICAgd2l0aCBvcGVuKGZpbGVwYXRoLCAncmInKSBhcyBmaWxlb2JqOgorICAgICAgICB0emkgPSBUWkluZm8uZnJvbWZpbGUoZmlsZW9iaikKKyAgICB0emkuZHVtcChzeXMuc3Rkb3V0KQpkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weSBiL1Rvb2xzL3VuaWNvZGUvZ2VuY29kZWMucHkKaW5kZXggNGMyMTQ2OS4uMzFmMDExMiAxMDA2NDQKLS0tIGEvVG9vbHMvdW5pY29kZS9nZW5jb2RlYy5weQorKysgYi9Ub29scy91bmljb2RlL2dlbmNvZGVjLnB5CkBAIC0zNywxMSArMzcsMTEgQEAKICMgUGxhY2Vob2xkZXIgZm9yIGEgbWlzc2luZyBjb2RlIHBvaW50CiBNSVNTSU5HX0NPREUgPSAtMQogCi1tYXBSRSA9IHJlLmNvbXBpbGUoJygoPzoweFswLTlhLWZBLUZdK1wrPykrKScKLSAgICAgICAgICAgICAgICAgICAnXHMrJwotICAgICAgICAgICAgICAgICAgICcoKD86KD86MHhbMC05YS1mQS1aXSt8PFtBLVphLXpdKz4pXCs/KSopJwotICAgICAgICAgICAgICAgICAgICdccyonCi0gICAgICAgICAgICAgICAgICAgJygjLispPycpCittYXBSRSA9IHJlLmNvbXBpbGUocicoKD86MHhbMC05YS1mQS1GXStcKz8pKyknCisgICAgICAgICAgICAgICAgICAgcidccysnCisgICAgICAgICAgICAgICAgICAgcicoKD86KD86MHhbMC05YS1mQS1aXSt8PFtBLVphLXpdKz4pXCs/KSopJworICAgICAgICAgICAgICAgICAgIHInXHMqJworICAgICAgICAgICAgICAgICAgIHInKCMuKyk/JykKIAogZGVmIHBhcnNlY29kZXMoY29kZXMsIGxlbj1sZW4sIHJhbmdlPXJhbmdlKToKIApkaWZmIC0tZ2l0IGEvVG9vbHMvdW5pY29kZS9tYWtldW5pY29kZWRhdGEucHkgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQppbmRleCA3MTNlMTc1Li41ZDgwMTRhIDEwMDY0NAotLS0gYS9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQorKysgYi9Ub29scy91bmljb2RlL21ha2V1bmljb2RlZGF0YS5weQpAQCAtNDIsNyArNDIsNyBAQAogIyAgICogRG9jL2xpYnJhcnkvc3RkdHlwZXMucnN0LCBhbmQKICMgICAqIERvYy9saWJyYXJ5L3VuaWNvZGVkYXRhLnJzdAogIyAgICogRG9jL3JlZmVyZW5jZS9sZXhpY2FsX2FuYWx5c2lzLnJzdCAodHdvIG9jY3VycmVuY2VzKQotVU5JREFUQV9WRVJTSU9OID0gIjguMC4wIgorVU5JREFUQV9WRVJTSU9OID0gIjkuMC4wIgogVU5JQ09ERV9EQVRBID0gIlVuaWNvZGVEYXRhJXMudHh0IgogQ09NUE9TSVRJT05fRVhDTFVTSU9OUyA9ICJDb21wb3NpdGlvbkV4Y2x1c2lvbnMlcy50eHQiCiBFQVNUQVNJQU5fV0lEVEggPSAiRWFzdEFzaWFuV2lkdGglcy50eHQiCkBAIC03OTYsNiArNzk2LDcgQEAKICAgICBjYXRlZ29yeV9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgZGVjaW1hbF9jaGFuZ2VzID0gWzB4RkZdKjB4MTEwMDAwCiAgICAgbWlycm9yZWRfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAorICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlcyA9IFsweEZGXSoweDExMDAwMAogICAgICMgSW4gbnVtZXJpYyBkYXRhLCAwIG1lYW5zICJubyBjaGFuZ2UiLAogICAgICMgLTEgbWVhbnMgImRpZCBub3QgaGF2ZSBhIG51bWVyaWMgdmFsdWUKICAgICBudW1lcmljX2NoYW5nZXMgPSBbMF0gKiAweDExMDAwMApAQCAtODYyLDYgKzg2Myw5IEBACiAgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNDoKICAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlIHRvIHNpbXBsZSB0aXRsZWNhc2UgbWFwcGluZzsgaWdub3JlCiAgICAgICAgICAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICAgICAgICAgIGVsaWYgayA9PSAxNToKKyAgICAgICAgICAgICAgICAgICAgICAgICMgY2hhbmdlIHRvIGVhc3QgYXNpYW4gd2lkdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIGVhc3RfYXNpYW5fd2lkdGhfY2hhbmdlc1tpXSA9IEVBU1RBU0lBTldJRFRIX05BTUVTLmluZGV4KHZhbHVlKQogICAgICAgICAgICAgICAgICAgICBlbGlmIGsgPT0gMTY6CiAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlcml2ZWQgcHJvcGVydHkgY2hhbmdlczsgbm90IHlldAogICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwpAQCAtODczLDggKzg3Nyw5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjbGFzcyBEaWZmZXJlbmNlKEV4Y2VwdGlvbik6cGFzcwogICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRGlmZmVyZW5jZShoZXgoaSksIGssIG9sZC50YWJsZVtpXSwgbmV3LnRhYmxlW2ldKQogICAgIG5ldy5jaGFuZ2VkLmFwcGVuZCgodmVyc2lvbiwgbGlzdCh6aXAoYmlkaXJfY2hhbmdlcywgY2F0ZWdvcnlfY2hhbmdlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX2NoYW5nZXMsIG1pcnJvcmVkX2NoYW5nZXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbnVtZXJpY19jaGFuZ2VzKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWNpbWFsX2NoYW5nZXMsIG1pcnJvcmVkX2NoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlYXN0X2FzaWFuX3dpZHRoX2NoYW5nZXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudW1lcmljX2NoYW5nZXMpKSwKICAgICAgICAgICAgICAgICAgICAgICAgIG5vcm1hbGl6YXRpb25fY2hhbmdlcykpCiAKIGRlZiBvcGVuX2RhdGEodGVtcGxhdGUsIHZlcnNpb24pOgpkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKaW5kZXggMmE3NDVlNS4uOWE5Y2M1NSAxMDA2NDQKLS0tIGEvYWNsb2NhbC5tNAorKysgYi9hY2xvY2FsLm00CkBAIC0xMyw3ICsxMyw3IEBACiAKIG00X2lmbmRlZihbQUNfQ09ORklHX01BQ1JPX0RJUlNdLCBbbTRfZGVmdW4oW19BTV9DT05GSUdfTUFDUk9fRElSU10sIFtdKW00X2RlZnVuKFtBQ19DT05GSUdfTUFDUk9fRElSU10sIFtfQU1fQ09ORklHX01BQ1JPX0RJUlMoJEApXSldKQogZG5sIHBrZy5tNCAtIE1hY3JvcyB0byBsb2NhdGUgYW5kIHV0aWxpc2UgcGtnLWNvbmZpZy4gICAtKi0gQXV0b2NvbmYgLSotCi1kbmwgc2VyaWFsIDExIChwa2ctY29uZmlnLTAuMjkuMSkKK2RubCBzZXJpYWwgMTEgKHBrZy1jb25maWctMC4yOSkKIGRubAogZG5sIENvcHlyaWdodCDCqSAyMDA0IFNjb3R0IEphbWVzIFJlbW5hbnQgPHNjb3R0QG5ldHNwbGl0LmNvbT4uCiBkbmwgQ29weXJpZ2h0IMKpIDIwMTItMjAxNSBEYW4gTmljaG9sc29uIDxkYm4ubGlzdHNAZ21haWwuY29tPgpAQCAtNTUsNyArNTUsNyBAQAogZG5sIFNlZSB0aGUgIlNpbmNlIiBjb21tZW50IGZvciBlYWNoIG1hY3JvIHlvdSB1c2UgdG8gc2VlIHdoYXQgdmVyc2lvbgogZG5sIG9mIHRoZSBtYWNyb3MgeW91IHJlcXVpcmUuCiBtNF9kZWZ1bihbUEtHX1BSRVJFUV0sCi1bbTRfZGVmaW5lKFtQS0dfTUFDUk9TX1ZFUlNJT05dLCBbMC4yOS4xXSkKK1ttNF9kZWZpbmUoW1BLR19NQUNST1NfVkVSU0lPTl0sIFswLjI5XSkKIG00X2lmKG00X3ZlcnNpb25fY29tcGFyZShQS0dfTUFDUk9TX1ZFUlNJT04sIFskMV0pLCAtMSwKICAgICBbbTRfZmF0YWwoW3BrZy5tNCB2ZXJzaW9uICQxIG9yIGhpZ2hlciBpcyByZXF1aXJlZCBidXQgXVBLR19NQUNST1NfVkVSU0lPTlsgZm91bmRdKV0pCiBdKWRubCBQS0dfUFJFUkVRCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggMTlmY2JkMS4uMDAwOTg2ZiAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBweXRob24gMy41LgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIHB5dGhvbiAzLjYuCiAjCiAjIFJlcG9ydCBidWdzIHRvIDxodHRwczovL2J1Z3MucHl0aG9uLm9yZy8+LgogIwpAQCAtNTgwLDggKzU4MCw4IEBACiAjIElkZW50aXR5IG9mIHRoaXMgcGFja2FnZS4KIFBBQ0tBR0VfTkFNRT0ncHl0aG9uJwogUEFDS0FHRV9UQVJOQU1FPSdweXRob24nCi1QQUNLQUdFX1ZFUlNJT049JzMuNScKLVBBQ0tBR0VfU1RSSU5HPSdweXRob24gMy41JworUEFDS0FHRV9WRVJTSU9OPSczLjYnCitQQUNLQUdFX1NUUklORz0ncHl0aG9uIDMuNicKIFBBQ0tBR0VfQlVHUkVQT1JUPSdodHRwczovL2J1Z3MucHl0aG9uLm9yZy8nCiBQQUNLQUdFX1VSTD0nJwogCkBAIC02NDIsMTEgKzY0MiwxMyBAQAogTUFDSERFUF9PQkpTCiBEWU5MT0FERklMRQogRExJTkNMRElSCitEVFJBQ0VfT0JKUworRFRSQUNFX0hFQURFUlMKK0RGTEFHUworRFRSQUNFCiBUSFJFQURPQkoKIExETEFTVAogVVNFX1RIUkVBRF9NT0RVTEUKLVNJR05BTF9PQkpTCi1VU0VfU0lHTkFMX01PRFVMRQogVENMVEtfTElCUwogVENMVEtfSU5DTFVERVMKIExJQkZGSV9JTkNMVURFRElSCkBAIC03MDgsMTIgKzcxMCwxMyBAQAogQlVJTERFWEVFWFQKIEVHUkVQCiBOT19BU19ORUVERUQKK01VTFRJQVJDSF9DUFBGTEFHUwogUExBVEZPUk1fVFJJUExFVAotUExBVERJUgogTVVMVElBUkNICiBhY19jdF9DWFgKIE1BSU5DQwogQ1hYCitTRUQKIEdSRVAKIENQUAogT0JKRVhUCkBAIC03ODEsNyArNzg0LDYgQEAKIGRvY2Rpcgogb2xkaW5jbHVkZWRpcgogaW5jbHVkZWRpcgotcnVuc3RhdGVkaXIKIGxvY2Fsc3RhdGVkaXIKIHNoYXJlZHN0YXRlZGlyCiBzeXNjb25mZGlyCkBAIC04MjcsMTQgKzgyOSwxMyBAQAogd2l0aF90Y2x0a19pbmNsdWRlcwogd2l0aF90Y2x0a19saWJzCiB3aXRoX2RibWxpYm9yZGVyCi13aXRoX3NpZ25hbF9tb2R1bGUKIHdpdGhfdGhyZWFkcwogd2l0aF90aHJlYWQKIGVuYWJsZV9pcHY2CiB3aXRoX2RvY19zdHJpbmdzCi13aXRoX3RzYwogd2l0aF9weW1hbGxvYwogd2l0aF92YWxncmluZAord2l0aF9kdHJhY2UKIHdpdGhfZnBlY3RsCiB3aXRoX2xpYm0KIHdpdGhfbGliYwpAQCAtODkzLDcgKzg5NCw2IEBACiBzeXNjb25mZGlyPScke3ByZWZpeH0vZXRjJwogc2hhcmVkc3RhdGVkaXI9JyR7cHJlZml4fS9jb20nCiBsb2NhbHN0YXRlZGlyPScke3ByZWZpeH0vdmFyJwotcnVuc3RhdGVkaXI9JyR7bG9jYWxzdGF0ZWRpcn0vcnVuJwogaW5jbHVkZWRpcj0nJHtwcmVmaXh9L2luY2x1ZGUnCiBvbGRpbmNsdWRlZGlyPScvdXNyL2luY2x1ZGUnCiBkb2NkaXI9JyR7ZGF0YXJvb3RkaXJ9L2RvYy8ke1BBQ0tBR0VfVEFSTkFNRX0nCkBAIC0xMTQ2LDE1ICsxMTQ2LDYgQEAKICAgfCAtc2lsZW50IHwgLS1zaWxlbnQgfCAtLXNpbGVuIHwgLS1zaWxlIHwgLS1zaWwpCiAgICAgc2lsZW50PXllcyA7OwogCi0gIC1ydW5zdGF0ZWRpciB8IC0tcnVuc3RhdGVkaXIgfCAtLXJ1bnN0YXRlZGkgfCAtLXJ1bnN0YXRlZCBcCi0gIHwgLS1ydW5zdGF0ZSB8IC0tcnVuc3RhdCB8IC0tcnVuc3RhIHwgLS1ydW5zdCB8IC0tcnVucyBcCi0gIHwgLS1ydW4gfCAtLXJ1IHwgLS1yKQotICAgIGFjX3ByZXY9cnVuc3RhdGVkaXIgOzsKLSAgLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGlyPSogfCAtLXJ1bnN0YXRlZGk9KiB8IC0tcnVuc3RhdGVkPSogXAotICB8IC0tcnVuc3RhdGU9KiB8IC0tcnVuc3RhdD0qIHwgLS1ydW5zdGE9KiB8IC0tcnVuc3Q9KiB8IC0tcnVucz0qIFwKLSAgfCAtLXJ1bj0qIHwgLS1ydT0qIHwgLS1yPSopCi0gICAgcnVuc3RhdGVkaXI9JGFjX29wdGFyZyA7OwotCiAgIC1zYmluZGlyIHwgLS1zYmluZGlyIHwgLS1zYmluZGkgfCAtLXNiaW5kIHwgLS1zYmluIHwgLS1zYmkgfCAtLXNiKQogICAgIGFjX3ByZXY9c2JpbmRpciA7OwogICAtc2JpbmRpcj0qIHwgLS1zYmluZGlyPSogfCAtLXNiaW5kaT0qIHwgLS1zYmluZD0qIHwgLS1zYmluPSogXApAQCAtMTI5Miw3ICsxMjgzLDcgQEAKIGZvciBhY192YXIgaW4JZXhlY19wcmVmaXggcHJlZml4IGJpbmRpciBzYmluZGlyIGxpYmV4ZWNkaXIgZGF0YXJvb3RkaXIgXAogCQlkYXRhZGlyIHN5c2NvbmZkaXIgc2hhcmVkc3RhdGVkaXIgbG9jYWxzdGF0ZWRpciBpbmNsdWRlZGlyIFwKIAkJb2xkaW5jbHVkZWRpciBkb2NkaXIgaW5mb2RpciBodG1sZGlyIGR2aWRpciBwZGZkaXIgcHNkaXIgXAotCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpciBydW5zdGF0ZWRpcgorCQlsaWJkaXIgbG9jYWxlZGlyIG1hbmRpcgogZG8KICAgZXZhbCBhY192YWw9XCQkYWNfdmFyCiAgICMgUmVtb3ZlIHRyYWlsaW5nIHNsYXNoZXMuCkBAIC0xNDA1LDcgKzEzOTYsNyBAQAogICAjIE9taXQgc29tZSBpbnRlcm5hbCBvciBvYnNvbGV0ZSBvcHRpb25zIHRvIG1ha2UgdGhlIGxpc3QgbGVzcyBpbXBvc2luZy4KICAgIyBUaGlzIG1lc3NhZ2UgaXMgdG9vIGxvbmcgdG8gYmUgYSBzdHJpbmcgaW4gdGhlIEEvVVggMy4xIHNoLgogICBjYXQgPDxfQUNFT0YKLVxgY29uZmlndXJlJyBjb25maWd1cmVzIHB5dGhvbiAzLjUgdG8gYWRhcHQgdG8gbWFueSBraW5kcyBvZiBzeXN0ZW1zLgorXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgcHl0aG9uIDMuNiB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0xNDQ1LDcgKzE0MzYsNiBAQAogICAtLXN5c2NvbmZkaXI9RElSICAgICAgICByZWFkLW9ubHkgc2luZ2xlLW1hY2hpbmUgZGF0YSBbUFJFRklYL2V0Y10KICAgLS1zaGFyZWRzdGF0ZWRpcj1ESVIgICAgbW9kaWZpYWJsZSBhcmNoaXRlY3R1cmUtaW5kZXBlbmRlbnQgZGF0YSBbUFJFRklYL2NvbV0KICAgLS1sb2NhbHN0YXRlZGlyPURJUiAgICAgbW9kaWZpYWJsZSBzaW5nbGUtbWFjaGluZSBkYXRhIFtQUkVGSVgvdmFyXQotICAtLXJ1bnN0YXRlZGlyPURJUiAgICAgICBtb2RpZmlhYmxlIHBlci1wcm9jZXNzIGRhdGEgW0xPQ0FMU1RBVEVESVIvcnVuXQogICAtLWxpYmRpcj1ESVIgICAgICAgICAgICBvYmplY3QgY29kZSBsaWJyYXJpZXMgW0VQUkVGSVgvbGliXQogICAtLWluY2x1ZGVkaXI9RElSICAgICAgICBDIGhlYWRlciBmaWxlcyBbUFJFRklYL2luY2x1ZGVdCiAgIC0tb2xkaW5jbHVkZWRpcj1ESVIgICAgIEMgaGVhZGVyIGZpbGVzIGZvciBub24tZ2NjIFsvdXNyL2luY2x1ZGVdCkBAIC0xNDcyLDcgKzE0NjIsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIHB5dGhvbiAzLjU6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBweXRob24gMy42OiI7OwogICAgZXNhYwogICBjYXQgPDxcX0FDRU9GCiAKQEAgLTE1MzEsMTUgKzE1MjEsMTQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgb3JkZXIgdG8gY2hlY2sgZGIgYmFja2VuZHMgZm9yIGRibS4gVmFsaWQgdmFsdWUgaXMgYQogICAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvbiBzZXBhcmF0ZWQgc3RyaW5nIHdpdGggdGhlIGJhY2tlbmQgbmFtZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgYG5kYm0nLCBgZ2RibScgYW5kIGBiZGInLgotICAtLXdpdGgtc2lnbmFsLW1vZHVsZSAgICBkaXNhYmxlL2VuYWJsZSBzaWduYWwgbW9kdWxlCiAgIC0td2l0aChvdXQpLXRocmVhZHNbPURJUkVDVE9SWV0KICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzYWJsZS9lbmFibGUgdGhyZWFkIHN1cHBvcnQKICAgLS13aXRoKG91dCktdGhyZWFkWz1ESVJFQ1RPUlldCiAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcHJlY2F0ZWQ7IHVzZSAtLXdpdGgob3V0KS10aHJlYWRzCiAgIC0td2l0aChvdXQpLWRvYy1zdHJpbmdzIGRpc2FibGUvZW5hYmxlIGRvY3VtZW50YXRpb24gc3RyaW5ncwotICAtLXdpdGgob3V0KS10c2MgICAgICAgICBlbmFibGUvZGlzYWJsZSB0aW1lc3RhbXAgY291bnRlciBwcm9maWxlCiAgIC0td2l0aChvdXQpLXB5bWFsbG9jICAgIGRpc2FibGUvZW5hYmxlIHNwZWNpYWxpemVkIG1hbGxvY3MKICAgLS13aXRoLXZhbGdyaW5kICAgICAgICAgRW5hYmxlIFZhbGdyaW5kIHN1cHBvcnQKKyAgLS13aXRoKG91dCktZHRyYWNlICAgICAgZGlzYWJsZS9lbmFibGUgRFRyYWNlIHN1cHBvcnQKICAgLS13aXRoLWZwZWN0bCAgICAgICAgICAgZW5hYmxlIFNJR0ZQRSBjYXRjaGluZwogICAtLXdpdGgtbGlibT1TVFJJTkcgICAgICBtYXRoIGxpYnJhcnkKICAgLS13aXRoLWxpYmM9U1RSSU5HICAgICAgQyBsaWJyYXJ5CkBAIC0xNjMxLDcgKzE2MjAsNyBAQAogdGVzdCAtbiAiJGFjX2luaXRfaGVscCIgJiYgZXhpdCAkYWNfc3RhdHVzCiBpZiAkYWNfaW5pdF92ZXJzaW9uOyB0aGVuCiAgIGNhdCA8PFxfQUNFT0YKLXB5dGhvbiBjb25maWd1cmUgMy41CitweXRob24gY29uZmlndXJlIDMuNgogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5CiAKIENvcHlyaWdodCAoQykgMjAxMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KQEAgLTE5ODQsMTM2ICsxOTczLDYgQEAKIAogfSAjIGFjX2ZuX2NfY2hlY2tfdHlwZQogCi0jIGFjX2ZuX2NfZmluZF91aW50WF90IExJTkVOTyBCSVRTIFZBUgotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgRmluZHMgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIHdpdGggd2lkdGggQklUUywgc2V0dGluZyBjYWNoZSB2YXJpYWJsZSBWQVIKLSMgYWNjb3JkaW5nbHkuCi1hY19mbl9jX2ZpbmRfdWludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHVpbnQkMl90IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciB1aW50JDJfdC4uLiAiID4mNjsgfQotaWYgZXZhbCBcJHskMys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGV2YWwgIiQzPW5vIgotICAgICAjIE9yZGVyIGlzIGltcG9ydGFudCAtIG5ldmVyIGNoZWNrIGEgdHlwZSB0aGF0IGlzIHBvdGVudGlhbGx5IHNtYWxsZXIKLSAgICAgIyB0aGFuIGhhbGYgb2YgdGhlIGV4cGVjdGVkIHRhcmdldCB3aWR0aC4KLSAgICAgZm9yIGFjX3R5cGUgaW4gdWludCQyX3QgJ3Vuc2lnbmVkIGludCcgJ3Vuc2lnbmVkIGxvbmcgaW50JyBcCi0JICd1bnNpZ25lZCBsb25nIGxvbmcgaW50JyAndW5zaWduZWQgc2hvcnQgaW50JyAndW5zaWduZWQgY2hhcic7IGRvCi0gICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotJGFjX2luY2x1ZGVzX2RlZmF1bHQKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoKCgkYWNfdHlwZSkgLTEgPj4gKCQyIC8gMiAtIDEpKSA+PiAoJDIgLyAyIC0gMSkgPT0gMyldOwotdGVzdF9hcnJheSBbMF0gPSAwOwotcmV0dXJuIHRlc3RfYXJyYXkgWzBdOwotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgY2FzZSAkYWNfdHlwZSBpbiAjKAotICB1aW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfdWludFhfdAotCi0jIGFjX2ZuX2NfZmluZF9pbnRYX3QgTElORU5PIEJJVFMgVkFSCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIEZpbmRzIGEgc2lnbmVkIGludGVnZXIgdHlwZSB3aXRoIHdpZHRoIEJJVFMsIHNldHRpbmcgY2FjaGUgdmFyaWFibGUgVkFSCi0jIGFjY29yZGluZ2x5LgotYWNfZm5fY19maW5kX2ludFhfdCAoKQotewotICBhc19saW5lbm89JHthc19saW5lbm8tIiQxIn0gYXNfbGluZW5vX3N0YWNrPWFzX2xpbmVub19zdGFjaz0kYXNfbGluZW5vX3N0YWNrCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGludCQyX3QiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGludCQyX3QuLi4gIiA+JjY7IH0KLWlmIGV2YWwgXCR7JDMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBldmFsICIkMz1ubyIKLSAgICAgIyBPcmRlciBpcyBpbXBvcnRhbnQgLSBuZXZlciBjaGVjayBhIHR5cGUgdGhhdCBpcyBwb3RlbnRpYWxseSBzbWFsbGVyCi0gICAgICMgdGhhbiBoYWxmIG9mIHRoZSBleHBlY3RlZCB0YXJnZXQgd2lkdGguCi0gICAgIGZvciBhY190eXBlIGluIGludCQyX3QgJ2ludCcgJ2xvbmcgaW50JyBcCi0JICdsb25nIGxvbmcgaW50JyAnc2hvcnQgaW50JyAnc2lnbmVkIGNoYXInOyBkbwotICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSRhY19pbmNsdWRlc19kZWZhdWx0Ci0JICAgICBlbnVtIHsgTiA9ICQyIC8gMiAtIDEgfTsKLWludAotbWFpbiAoKQotewotc3RhdGljIGludCB0ZXN0X2FycmF5IFsxIC0gMiAqICEoMCA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0kYWNfaW5jbHVkZXNfZGVmYXVsdAotCSAgICAgICAgZW51bSB7IE4gPSAkMiAvIDIgLSAxIH07Ci1pbnQKLW1haW4gKCkKLXsKLXN0YXRpYyBpbnQgdGVzdF9hcnJheSBbMSAtIDIgKiAhKCgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDEpCi0JCSA8ICgkYWNfdHlwZSkgKCgoKCgkYWNfdHlwZSkgMSA8PCBOKSA8PCBOKSAtIDEpICogMiArIDIpKV07Ci10ZXN0X2FycmF5IFswXSA9IDA7Ci1yZXR1cm4gdGVzdF9hcnJheSBbMF07Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0gIGNhc2UgJGFjX3R5cGUgaW4gIygKLSAgaW50JDJfdCkgOgotICAgIGV2YWwgIiQzPXllcyIgOzsgIygKLSAgKikgOgotICAgIGV2YWwgIiQzPVwkYWNfdHlwZSIgOzsKLWVzYWMKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICAgICBpZiBldmFsIHRlc3QgXCJ4XCQiJDMiXCIgPSB4Im5vIjsgdGhlbiA6Ci0KLWVsc2UKLSAgYnJlYWsKLWZpCi0gICAgIGRvbmUKLWZpCi1ldmFsIGFjX3Jlcz1cJCQzCi0JICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfcmVzIiA+JjUKLSRhc19lY2hvICIkYWNfcmVzIiA+JjY7IH0KLSAgZXZhbCAkYXNfbGluZW5vX3N0YWNrOyAke2FzX2xpbmVub19zdGFjazorOn0gdW5zZXQgYXNfbGluZW5vCi0KLX0gIyBhY19mbl9jX2ZpbmRfaW50WF90Ci0KICMgYWNfZm5fY19jb21wdXRlX2ludCBMSU5FTk8gRVhQUiBWQVIgSU5DTFVERVMKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgVHJpZXMgdG8gZmluZCB0aGUgY29tcGlsZS10aW1lIHZhbHVlIG9mIEVYUFIgaW4gYSBwcm9ncmFtIHRoYXQgaW5jbHVkZXMKQEAgLTI0NzAsNyArMjMyOSw3IEBACiBUaGlzIGZpbGUgY29udGFpbnMgYW55IG1lc3NhZ2VzIHByb2R1Y2VkIGJ5IGNvbXBpbGVycyB3aGlsZQogcnVubmluZyBjb25maWd1cmUsIHRvIGFpZCBkZWJ1Z2dpbmcgaWYgY29uZmlndXJlIG1ha2VzIGEgbWlzdGFrZS4KIAotSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjUsIHdoaWNoIHdhcworSXQgd2FzIGNyZWF0ZWQgYnkgcHl0aG9uICRhc19tZSAzLjYsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtMzA1OSw3ICsyOTE4LDcgQEAKICAgICBpZiB0ZXN0IC16ICIkUFlUSE9OX0ZPUl9CVUlMRCI7IHRoZW4KICAgICAgICAgZm9yIGludGVycCBpbiBweXRob24kUEFDS0FHRV9WRVJTSU9OIHB5dGhvbjMgcHl0aG9uOyBkbwogCSAgICB3aGljaCAkaW50ZXJwID4vZGV2L251bGwgMj4mMSB8fCBjb250aW51ZQotCSAgICBpZiAkaW50ZXJwIC1jICdpbXBvcnQgc3lzO3N5cy5leGl0KG5vdCBzeXMudmVyc2lvbl9pbmZvWzoyXSA+PSAoMywzKSknOyB0aGVuCisJICAgIGlmICRpbnRlcnAgLWMgImltcG9ydCBzeXM7c3lzLmV4aXQobm90ICcuJy5qb2luKHN0cihuKSBmb3IgbiBpbiBzeXMudmVyc2lvbl9pbmZvWzoyXSkgPT0gJyRQQUNLQUdFX1ZFUlNJT04nKSI7IHRoZW4KIAkgICAgICAgIGJyZWFrCiAJICAgIGZpCiAgICAgICAgICAgICBpbnRlcnA9CkBAIC0zMDY5LDcgKzI5MjgsNyBAQAogCWZpCiAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaW50ZXJwIiA+JjUKICRhc19lY2hvICIkaW50ZXJwIiA+JjY7IH0KLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKKwlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYiBfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRT1fc3lzY29uZmlnZGF0YV8kKEFCSUZMQUdTKV8kKE1BQ0hERVApXyQoTVVMVElBUkNIKSAnJGludGVycAogICAgIGZpCiAgICAgIyBVc2VkIHRvIGNvbW1lbnQgb3V0IHN0dWZmIGZvciByZWJ1aWxkaW5nIGdlbmVyYXRlZCBmaWxlcwogICAgIEdFTkVSQVRFRF9DT01NRU5UPScjJwpAQCAtMzA5Nyw3ICsyOTU2LDcgQEAKIG12IGNvbmZkZWZzLmgubmV3IGNvbmZkZWZzLmgKIAogCi1WRVJTSU9OPTMuNQorVkVSU0lPTj0zLjYKIAogIyBWZXJzaW9uIG51bWJlciBvZiBQeXRob24ncyBvd24gc2hhcmVkIGxpYnJhcnkgZmlsZS4KIApAQCAtNDcxNiw2ICs0NTc1LDc1IEBACiAgR1JFUD0iJGFjX2N2X3BhdGhfR1JFUCIKIAogCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhIHNlZCB0aGF0IGRvZXMgbm90IHRydW5jYXRlIG91dHB1dCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSBzZWQgdGhhdCBkb2VzIG5vdCB0cnVuY2F0ZSBvdXRwdXQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfcGF0aF9TRUQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICAgICAgICAgICAgYWNfc2NyaXB0PXMvYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWEvYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiLworICAgICBmb3IgYWNfaSBpbiAxIDIgMyA0IDUgNiA3OyBkbworICAgICAgIGFjX3NjcmlwdD0iJGFjX3NjcmlwdCRhc19ubCRhY19zY3JpcHQiCisgICAgIGRvbmUKKyAgICAgZWNobyAiJGFjX3NjcmlwdCIgMj4vZGV2L251bGwgfCBzZWQgOTlxID5jb25mdGVzdC5zZWQKKyAgICAgeyBhY19zY3JpcHQ9OyB1bnNldCBhY19zY3JpcHQ7fQorICAgICBpZiB0ZXN0IC16ICIkU0VEIjsgdGhlbgorICBhY19wYXRoX1NFRF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gc2VkIGdzZWQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX1NFRD0iJGFzX2Rpci8kYWNfcHJvZyRhY19leGVjX2V4dCIKKyAgICAgIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFjX3BhdGhfU0VEIiB8fCBjb250aW51ZQorIyBDaGVjayBmb3IgR05VIGFjX3BhdGhfU0VEIGFuZCBzZWxlY3QgaXQgaWYgaXQgaXMgZm91bmQuCisgICMgQ2hlY2sgZm9yIEdOVSAkYWNfcGF0aF9TRUQKK2Nhc2UgYCIkYWNfcGF0aF9TRUQiIC0tdmVyc2lvbiAyPiYxYCBpbgorKkdOVSopCisgIGFjX2N2X3BhdGhfU0VEPSIkYWNfcGF0aF9TRUQiIGFjX3BhdGhfU0VEX2ZvdW5kPTo7OworKikKKyAgYWNfY291bnQ9MAorICAkYXNfZWNob19uIDAxMjM0NTY3ODkgPiJjb25mdGVzdC5pbiIKKyAgd2hpbGUgOgorICBkbworICAgIGNhdCAiY29uZnRlc3QuaW4iICJjb25mdGVzdC5pbiIgPiJjb25mdGVzdC50bXAiCisgICAgbXYgImNvbmZ0ZXN0LnRtcCIgImNvbmZ0ZXN0LmluIgorICAgIGNwICJjb25mdGVzdC5pbiIgImNvbmZ0ZXN0Lm5sIgorICAgICRhc19lY2hvICcnID4+ICJjb25mdGVzdC5ubCIKKyAgICAiJGFjX3BhdGhfU0VEIiAtZiBjb25mdGVzdC5zZWQgPCAiY29uZnRlc3QubmwiID4iY29uZnRlc3Qub3V0IiAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgIGRpZmYgImNvbmZ0ZXN0Lm91dCIgImNvbmZ0ZXN0Lm5sIiA+L2Rldi9udWxsIDI+JjEgfHwgYnJlYWsKKyAgICBhc19mbl9hcml0aCAkYWNfY291bnQgKyAxICYmIGFjX2NvdW50PSRhc192YWwKKyAgICBpZiB0ZXN0ICRhY19jb3VudCAtZ3QgJHthY19wYXRoX1NFRF9tYXgtMH07IHRoZW4KKyAgICAgICMgQmVzdCBvbmUgc28gZmFyLCBzYXZlIGl0IGJ1dCBrZWVwIGxvb2tpbmcgZm9yIGEgYmV0dGVyIG9uZQorICAgICAgYWNfY3ZfcGF0aF9TRUQ9IiRhY19wYXRoX1NFRCIKKyAgICAgIGFjX3BhdGhfU0VEX21heD0kYWNfY291bnQKKyAgICBmaQorICAgICMgMTAqKDJeMTApIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKKyAgICB0ZXN0ICRhY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgZG9uZQorICBybSAtZiBjb25mdGVzdC5pbiBjb25mdGVzdC50bXAgY29uZnRlc3QubmwgY29uZnRlc3Qub3V0OzsKK2VzYWMKKworICAgICAgJGFjX3BhdGhfU0VEX2ZvdW5kICYmIGJyZWFrIDMKKyAgICBkb25lCisgIGRvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworICBpZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9TRUQiOyB0aGVuCisgICAgYXNfZm5fZXJyb3IgJD8gIm5vIGFjY2VwdGFibGUgc2VkIGNvdWxkIGJlIGZvdW5kIGluIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9TRUQ9JFNFRAorZmkKKworZmkKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfcGF0aF9TRUQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9wYXRoX1NFRCIgPiY2OyB9CisgU0VEPSIkYWNfY3ZfcGF0aF9TRUQiCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorCiAKIAogCkBAIC01Mjg5LDcgKzUyMTcsMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTU0MDUsMTAgKzUzNTcsMTMgQEAKICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KICAgICBhc19mbl9lcnJvciAkPyAiaW50ZXJuYWwgY29uZmlndXJlIGVycm9yIGZvciB0aGUgcGxhdGZvcm0gdHJpcGxldCwgcGxlYXNlIGZpbGUgYSBidWcgcmVwb3J0IiAiJExJTkVOTyIgNQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAogCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCiAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLVdsLC0tbm8tYXMtbmVlZGVkIiA+JjUKQEAgLTU3MDIsNiArNTY1NywzMiBAQAogCiAKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB0aGUgQW5kcm9pZCBBUEkgbGV2ZWwuLi4gIiA+JjY7IH0KK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRBTkRST0lEX0FQSV9MRVZFTCIgPiY1CiskYXNfZWNobyAiJEFORFJPSURfQVBJX0xFVkVMIiA+JjY7IH0KKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBBTkRST0lEX0FQSV9MRVZFTCAkQU5EUk9JRF9BUElfTEVWRUwKK19BQ0VPRgorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBub3QgQW5kcm9pZCIgPiY1CiskYXNfZWNobyAibm90IEFuZHJvaWQiID4mNjsgfQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTY2MDQsMTMgKzY1ODUsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTY5MTgsNiArNjkwNiw0OSBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2V4dHJhIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtV2V4dHJhLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZXh0cmFfd2FybmluZ3MrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKworaW50CittYWluICgpCit7CisKKyAgOworICByZXR1cm4gMDsKK30KKworX0FDRU9GCitpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisKK2Vsc2UKKworICAgICAgICAgICBhY19jdl9leHRyYV93YXJuaW5ncz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2V4dHJhX3dhcm5pbmdzIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfZXh0cmFfd2FybmluZ3MiID4mNjsgfQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZXh0cmFfd2FybmluZ3MgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2V4dHJhIgorICAgIGZpCisKICAgICAjIFB5dGhvbiBkb2Vzbid0IHZpb2xhdGUgQzk5IGFsaWFzaW5nIHJ1bGVzLCBidXQgb2xkZXIgdmVyc2lvbnMgb2YKICAgICAjIEdDQyBwcm9kdWNlIHdhcm5pbmdzIGZvciBsZWdhbCBQeXRob24gY29kZS4gIEVuYWJsZQogICAgICMgLWZuby1zdHJpY3QtYWxpYXNpbmcgb24gdmVyc2lvbnMgb2YgR0NDIHRoYXQgc3VwcG9ydCBidXQgcHJvZHVjZQpAQCAtNzAzOCwxNCArNzA2OSwxNCBAQAogICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfdW51c2VkX3Jlc3VsdF93YXJuaW5nID0geWVzCiAgICAgdGhlbgogICAgICAgQkFTRUNGTEFHUz0iJEJBU0VDRkxBR1MgLVduby11bnVzZWQtcmVzdWx0IgorICAgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLVduby11bnVzZWQtcmVzdWx0IgogICAgIGZpCiAKLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQuLi4gIiA+JjY7IH0KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nLi4uICIgPiY2OyB9CiAgICAgIGFjX3NhdmVfY2M9IiRDQyIKLSAgICAgQ0M9IiRDQyAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKLSAgICAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgIGlmICR7YWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcrOn0gZmFsc2U7IHRoZW4gOgorICAgICBDQz0iJENDIC1XdW51c2VkLXBhcmFtZXRlciAtV2Vycm9yIgorICAgICBpZiAke2FjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dApAQCAtNzA2MywyNCArNzA5NCw2NCBAQAogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9eWVzCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nPXllcwogCiBlbHNlCiAKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmc9bm8KIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAogZmkKIAotICAgICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKICAgICAgQ0M9IiRhY19zYXZlX2NjIgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmciID4mNQotJGFzX2VjaG8gIiRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZyIgPiY2OyB9CisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2Rpc2FibGVfdW51c2VkX3BhcmFtZXRlcl93YXJuaW5nIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gdHVybiBvZmYgJENDIG1pc3NpbmcgZmllbGQgaW5pdGlhbGl6ZXJzIHdhcm5pbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIHR1cm4gb2ZmICRDQyBtaXNzaW5nIGZpZWxkIGluaXRpYWxpemVycyB3YXJuaW5nLi4uICIgPiY2OyB9CisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV21pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIC1XZXJyb3IiCisgICAgIGlmICR7YWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworCitpbnQKK21haW4gKCkKK3sKKworICA7CisgIHJldHVybiAwOworfQorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKworICAgICAgICAgICBhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzPXllcworCitlbHNlCisKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworCitmaQorcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CitmaQorCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMiID4mNQorJGFzX2VjaG8gIiRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzIiA+JjY7IH0KKworICAgIGlmIHRlc3QgJGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMgPSB5ZXMKKyAgICB0aGVuCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLW1pc3NpbmctZmllbGQtaW5pdGlhbGl6ZXJzIgogICAgIGZpCiAKICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiB0dXJuIG9uICRDQyBtaXhlZCBzaWduIGNvbXBhcmlzb24gd2FybmluZyIgPiY1CkBAIC03NzEwLDcgKzc3ODEsNyBAQAogZm9yIGFjX2hlYWRlciBpbiBhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTc3MTksNyArNzc5MCw3IEBACiBzeXMvc3RhdC5oIHN5cy9zeXNjYWxsLmggc3lzL3N5c19kb21haW4uaCBzeXMvdGVybWlvLmggc3lzL3RpbWUuaCBcCiBzeXMvdGltZXMuaCBzeXMvdHlwZXMuaCBzeXMvdWlvLmggc3lzL3VuLmggc3lzL3V0c25hbWUuaCBzeXMvd2FpdC5oIHB0eS5oIFwKIGxpYnV0aWwuaCBzeXMvcmVzb3VyY2UuaCBuZXRwYWNrZXQvcGFja2V0Lmggc3lzZXhpdHMuaCBibHVldG9vdGguaCBcCi1ibHVldG9vdGgvYmx1ZXRvb3RoLmggbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKK2xpbnV4L3RpcGMuaCBsaW51eC9yYW5kb20uaCBzcGF3bi5oIHV0aWwuaCBhbGxvY2EuaCBlbmRpYW4uaCBcCiBzeXMvZW5kaWFuLmgKIGRvIDoKICAgYXNfYWNfSGVhZGVyPWAkYXNfZWNobyAiYWNfY3ZfaGVhZGVyXyRhY19oZWFkZXIiIHwgJGFzX3RyX3NoYApAQCAtNzk0Miw2ICs4MDEzLDI0IEBACiBmaQogCiAKKyMgYmx1ZXRvb3RoL2JsdWV0b290aC5oIGhhcyBiZWVuIGtub3duIHRvIG5vdCBjb21waWxlIHdpdGggLXN0ZD1jOTkuCisjIGh0dHA6Ly9wZXJtYWxpbmsuZ21hbmUub3JnL2dtYW5lLmxpbnV4LmJsdWV6Lmtlcm5lbC8yMjI5NAorU0FWRV9DRkxBR1M9JENGTEFHUworQ0ZMQUdTPSItc3RkPWM5OSAkQ0ZMQUdTIgorZm9yIGFjX2hlYWRlciBpbiBibHVldG9vdGgvYmx1ZXRvb3RoLmgKK2RvIDoKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImJsdWV0b290aC9ibHVldG9vdGguaCIgImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaCIgPSB4eWVzOyB0aGVuIDoKKyAgY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0JMVUVUT09USF9CTFVFVE9PVEhfSCAxCitfQUNFT0YKKworZmkKKworZG9uZQorCitDRkxBR1M9JFNBVkVfQ0ZMQUdTCisKICMgT24gRGFyd2luIChPUyBYKSBuZXQvaWYuaCByZXF1aXJlcyBzeXMvc29ja2V0LmggdG8gYmUgaW1wb3J0ZWQgZmlyc3QuCiBmb3IgYWNfaGVhZGVyIGluIG5ldC9pZi5oCiBkbyA6CkBAIC04MTQ3LDYgKzgyMzYsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTgyNTMsOTUgKzgzNDcsNiBAQAogZmkKIAogCi0jIFRoZXJlIGFyZSB0d28gc2VwYXJhdGUgY2hlY2tzIGZvciBlYWNoIG9mIHRoZSBleGFjdC13aWR0aCBpbnRlZ2VyIHR5cGVzIHdlCi0jIG5lZWQuICBGaXJzdCB3ZSBjaGVjayB3aGV0aGVyIHRoZSB0eXBlIGlzIGF2YWlsYWJsZSB1c2luZyB0aGUgdXN1YWwKLSMgQUNfQ0hFQ0tfVFlQRSBtYWNybyB3aXRoIHRoZSBkZWZhdWx0IGluY2x1ZGVzICh3aGljaCBpbmNsdWRlcyA8aW50dHlwZXMuaD4KLSMgYW5kIDxzdGRpbnQuaD4gd2hlcmUgYXZhaWxhYmxlKS4gIFdlIHRoZW4gYWxzbyB1c2UgdGhlIHNwZWNpYWwgdHlwZSBjaGVja3Mgb2YKLSMgdGhlIGZvcm0gQUNfVFlQRV9VSU5UMzJfVCwgd2hpY2ggaW4gdGhlIGNhc2UgdGhhdCB1aW50MzJfdCBpcyBub3QgYXZhaWxhYmxlCi0jIGRpcmVjdGx5LCAjZGVmaW5lJ3MgdWludDMyX3QgdG8gYmUgYSBzdWl0YWJsZSB0eXBlLgotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJ1aW50MzJfdCIgImFjX2N2X3R5cGVfdWludDMyX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKLWlmIHRlc3QgIngkYWNfY3ZfdHlwZV91aW50MzJfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9VSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX3VpbnRYX3QgIiRMSU5FTk8iICIzMiIgImFjX2N2X2NfdWludDMyX3QiCi1jYXNlICRhY19jdl9jX3VpbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotJGFzX2VjaG8gIiNkZWZpbmUgX1VJTlQzMl9UIDEiID4+Y29uZmRlZnMuaAotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgdWludDMyX3QgJGFjX2N2X2NfdWludDMyX3QKLV9BQ0VPRgotOzsKLSAgZXNhYwotCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnQ2NF90IiAiYWNfY3ZfdHlwZV91aW50NjRfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX3VpbnQ2NF90IiA9IHh5ZXM7IHRoZW4gOgotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1VJTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfdWludFhfdCAiJExJTkVOTyIgIjY0IiAiYWNfY3ZfY191aW50NjRfdCIKLWNhc2UgJGFjX2N2X2NfdWludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi0kYXNfZWNobyAiI2RlZmluZSBfVUlOVDY0X1QgMSIgPj5jb25mZGVmcy5oCi0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSB1aW50NjRfdCAkYWNfY3ZfY191aW50NjRfdAotX0FDRU9GCi07OwotICBlc2FjCi0KLQotYWNfZm5fY19jaGVja190eXBlICIkTElORU5PIiAiaW50MzJfdCIgImFjX2N2X3R5cGVfaW50MzJfdCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl90eXBlX2ludDMyX3QiID0geHllczsgdGhlbiA6Ci0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfSU5UMzJfVCAxIiA+PmNvbmZkZWZzLmgKLQotZmkKLQotYWNfZm5fY19maW5kX2ludFhfdCAiJExJTkVOTyIgIjMyIiAiYWNfY3ZfY19pbnQzMl90IgotY2FzZSAkYWNfY3ZfY19pbnQzMl90IGluICMoCi0gIG5vfHllcykgOzsgIygKLSAgKikKLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBpbnQzMl90ICRhY19jdl9jX2ludDMyX3QKLV9BQ0VPRgotOzsKLWVzYWMKLQotCi1hY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJpbnQ2NF90IiAiYWNfY3ZfdHlwZV9pbnQ2NF90IiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfaW50NjRfdCIgPSB4eWVzOyB0aGVuIDoKLQotJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9JTlQ2NF9UIDEiID4+Y29uZmRlZnMuaAotCi1maQotCi1hY19mbl9jX2ZpbmRfaW50WF90ICIkTElORU5PIiAiNjQiICJhY19jdl9jX2ludDY0X3QiCi1jYXNlICRhY19jdl9jX2ludDY0X3QgaW4gIygKLSAgbm98eWVzKSA7OyAjKAotICAqKQotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIGludDY0X3QgJGFjX2N2X2NfaW50NjRfdAotX0FDRU9GCi07OwotZXNhYwotCi0KIGFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInNzaXplX3QiICJhY19jdl90eXBlX3NzaXplX3QiICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKIGlmIHRlc3QgIngkYWNfY3ZfdHlwZV9zc2l6ZV90IiA9IHh5ZXM7IHRoZW4gOgogCkBAIC04NDI5LDYgKzg0MzQsMzkgQEAKICMgdmVyc2lvbiBIUDkyNDUzLTAxIEIuMTEuMTEuMjM3MDkuR1AsIHdoaWNoIGluY29ycmVjdGx5IHJlamVjdHMKICMgZGVjbGFyYXRpb25zIGxpa2UgYGludCBhM1tbKHNpemVvZiAodW5zaWduZWQgY2hhcikpID49IDBdXTsnLgogIyBUaGlzIGJ1ZyBpcyBIUCBTUiBudW1iZXIgODYwNjIyMzM2NC4KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiBsb25nIGxvbmcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorCitlbHNlCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX2xvbmdfbG9uZyIgPSB5ZXM7IHRoZW4KKyAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Cithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCitTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQorICAgZWxzZQorICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgIGZpCitmaQorCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfbG9uZ19sb25nIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY2OyB9CisKKworCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKK19BQ0VPRgorCisKKyMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCisjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCisjIGRlY2xhcmF0aW9ucyBsaWtlIGBpbnQgYTNbWyhzaXplb2YgKHVuc2lnbmVkIGNoYXIpKSA+PSAwXV07Jy4KKyMgVGhpcyBidWcgaXMgSFAgU1IgbnVtYmVyIDg2MDYyMjMzNjQuCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHNpemUgb2Ygdm9pZCAqIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHNpemUgb2Ygdm9pZCAqLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X3NpemVvZl92b2lkX3ArOn0gZmFsc2U7IHRoZW4gOgpAQCAtODY1Niw2NyArODY5NCwzOSBAQAogX0FDRU9GCiAKIAotCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsb25nIGxvbmcgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBsb25nIHN1cHBvcnQuLi4gIiA+JjY7IH0KLWhhdmVfbG9uZ19sb25nPW5vCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotbG9uZyBsb25nIHg7IHggPSAobG9uZyBsb25nKTA7Ci0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0xPTkdfTE9ORyAxIiA+PmNvbmZkZWZzLmgKLQotICBoYXZlX2xvbmdfbG9uZz15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGhhdmVfbG9uZ19sb25nIiA+JjY7IH0KLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCiAjIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIGxvbmcgbG9uZy4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfbG9uZ19sb25nKzp9IGZhbHNlOyB0aGVuIDoKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgc2l6ZSBvZiB1aW50cHRyX3QuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCs6fSBmYWxzZTsgdGhlbiA6CiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCi0gIGlmIGFjX2ZuX2NfY29tcHV0ZV9pbnQgIiRMSU5FTk8iICIobG9uZyBpbnQpIChzaXplb2YgKGxvbmcgbG9uZykpIiAiYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgICAgICAgICIkYWNfaW5jbHVkZXNfZGVmYXVsdCI7IHRoZW4gOgorICBpZiBhY19mbl9jX2NvbXB1dGVfaW50ICIkTElORU5PIiAiKGxvbmcgaW50KSAoc2l6ZW9mICh1aW50cHRyX3QpKSIgImFjX2N2X3NpemVvZl91aW50cHRyX3QiICAgICAgICAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiOyB0aGVuIDoKIAogZWxzZQotICBpZiB0ZXN0ICIkYWNfY3ZfdHlwZV9sb25nX2xvbmciID0geWVzOyB0aGVuCisgIGlmIHRlc3QgIiRhY19jdl90eXBlX3VpbnRwdHJfdCIgPSB5ZXM7IHRoZW4KICAgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mMjt9Ci1hc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mIChsb25nIGxvbmcpCithc19mbl9lcnJvciA3NyAiY2Fubm90IGNvbXB1dGUgc2l6ZW9mICh1aW50cHRyX3QpCiBTZWUgXGBjb25maWcubG9nJyBmb3IgbW9yZSBkZXRhaWxzIiAiJExJTkVOTyIgNTsgfQogICAgZWxzZQotICAgICBhY19jdl9zaXplb2ZfbG9uZ19sb25nPTAKKyAgICAgYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdD0wCiAgICBmaQogZmkKIAogZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgPiY1Ci0kYXNfZWNobyAiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciID4mNjsgfQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdCIgPiY2OyB9CiAKIAogCiBjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIFNJWkVPRl9MT05HX0xPTkcgJGFjX2N2X3NpemVvZl9sb25nX2xvbmcKKyNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAogX0FDRU9GCiAKIAotZmkKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbG9uZyBkb3VibGUgc3VwcG9ydC4uLiAiID4mNjsgfQpAQCAtODc3OSwzMyArODc4OSw2IEBACiAKIGZpCiAKLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgX0Jvb2wgc3VwcG9ydC4uLiAiID4mNjsgfQotaGF2ZV9jOTlfYm9vbD1ubwotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLV9Cb29sIHg7IHggPSAoX0Jvb2wpMDsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfQzk5X0JPT0wgMSIgPj5jb25mZGVmcy5oCi0KLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLQotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX2M5OV9ib29sIiA+JjUKLSRhc19lY2hvICIkaGF2ZV9jOTlfYm9vbCIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9jOTlfYm9vbCIgPSB5ZXMgOyB0aGVuCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwogIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCkBAIC04ODM5LDU2ICs4ODIyLDYgQEAKIF9BQ0VPRgogCiAKLWZpCi0KLWFjX2ZuX2NfY2hlY2tfdHlwZSAiJExJTkVOTyIgInVpbnRwdHJfdCIgImFjX2N2X3R5cGVfdWludHB0cl90IiAiI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmCi0iCi1pZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHh5ZXM7IHRoZW4gOgotCi1jYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCi0jZGVmaW5lIEhBVkVfVUlOVFBUUl9UIDEKLV9BQ0VPRgotCi0jIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgotIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwotIyBkZWNsYXJhdGlvbnMgbGlrZSBgaW50IGEzW1soc2l6ZW9mICh1bnNpZ25lZCBjaGFyKSkgPj0gMF1dOycuCi0jIFRoaXMgYnVnIGlzIEhQIFNSIG51bWJlciA4NjA2MjIzMzY0LgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBzaXplIG9mIHVpbnRwdHJfdC4uLiAiID4mNjsgfQotaWYgJHthY19jdl9zaXplb2ZfdWludHB0cl90Kzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgaWYgYWNfZm5fY19jb21wdXRlX2ludCAiJExJTkVOTyIgIihsb25nIGludCkgKHNpemVvZiAodWludHB0cl90KSkiICJhY19jdl9zaXplb2ZfdWludHB0cl90IiAgICAgICAgIiRhY19pbmNsdWRlc19kZWZhdWx0IjsgdGhlbiA6Ci0KLWVsc2UKLSAgaWYgdGVzdCAiJGFjX2N2X3R5cGVfdWludHB0cl90IiA9IHllczsgdGhlbgotICAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IGVycm9yOiBpbiBcYCRhY19wd2QnOiIgPiYyO30KLWFzX2ZuX2Vycm9yIDc3ICJjYW5ub3QgY29tcHV0ZSBzaXplb2YgKHVpbnRwdHJfdCkKLVNlZSBcYGNvbmZpZy5sb2cnIGZvciBtb3JlIGRldGFpbHMiICIkTElORU5PIiA1OyB9Ci0gICBlbHNlCi0gICAgIGFjX2N2X3NpemVvZl91aW50cHRyX3Q9MAotICAgZmkKLWZpCi0KLWZpCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X3NpemVvZl91aW50cHRyX3QiID4mNQotJGFzX2VjaG8gIiRhY19jdl9zaXplb2ZfdWludHB0cl90IiA+JjY7IH0KLQotCi0KLWNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKLSNkZWZpbmUgU0laRU9GX1VJTlRQVFJfVCAkYWNfY3Zfc2l6ZW9mX3VpbnRwdHJfdAotX0FDRU9GCi0KLQotZmkKLQogCiAjIFRoZSBjYXN0IHRvIGxvbmcgaW50IHdvcmtzIGFyb3VuZCBhIGJ1ZyBpbiB0aGUgSFAgQyBDb21waWxlcgogIyB2ZXJzaW9uIEhQOTI0NTMtMDEgQi4xMS4xMS4yMzcwOS5HUCwgd2hpY2ggaW5jb3JyZWN0bHkgcmVqZWN0cwpAQCAtODkzMSw4ICs4ODY0LDYgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGVuYWJsZSBsYXJnZSBmaWxlIHN1cHBvcnQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0Li4uICIgPiY2OyB9Ci1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCiBpZiB0ZXN0ICIkYWNfY3Zfc2l6ZW9mX29mZl90IiAtZ3QgIiRhY19jdl9zaXplb2ZfbG9uZyIgLWEgXAogCSIkYWNfY3Zfc2l6ZW9mX2xvbmdfbG9uZyIgLWdlICIkYWNfY3Zfc2l6ZW9mX29mZl90IjsgdGhlbgogCkBAIC04OTQ0LDEwICs4ODc1LDYgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiBmaQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCiAKICMgVGhlIGNhc3QgdG8gbG9uZyBpbnQgd29ya3MgYXJvdW5kIGEgYnVnIGluIHRoZSBIUCBDIENvbXBpbGVyCiAjIHZlcnNpb24gSFA5MjQ1My0wMSBCLjExLjExLjIzNzA5LkdQLCB3aGljaCBpbmNvcnJlY3RseSByZWplY3RzCkBAIC0xMDEwNSwxMSArMTAwMzIsMjcgQEAKICMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc3lzdGVtX2ZmaSB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke3dpdGhfc3lzdGVtX2ZmaStzZXR9IiA9IHNldDsgdGhlbiA6CiAgIHdpdGh2YWw9JHdpdGhfc3lzdGVtX2ZmaTsKLWVsc2UKLSAgd2l0aF9zeXN0ZW1fZmZpPSJubyIKIGZpCiAKIAorY2FzZSAiJHdpdGhfc3lzdGVtX2ZmaSIgaW4KKyAgICAiIikKKyAgICAgICAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgorICAgICAgICAgICAgRGFyd2luKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ibm8iCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgd2l0aF9zeXN0ZW1fZmZpPSJ5ZXMiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgICA7OworICAgIHllc3xubykKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBhc19mbl9lcnJvciAkPyAiLS13aXRoLXN5c3RlbS1mZmkgYWNjZXB0cyBubyBhcmd1bWVudHMiICIkTElORU5PIiA1CisgICAgICAgIDs7Citlc2FjCisKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgogZWxzZQpAQCAtMTAyMTIsMzIgKzEwMTU1LDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kYm1saWJvcmRlciIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZGJtbGlib3JkZXIiID4mNjsgfQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXNpZ25hbC1tb2R1bGUiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1zaWduYWwtbW9kdWxlLi4uICIgPiY2OyB9Ci0KLSMgQ2hlY2sgd2hldGhlciAtLXdpdGgtc2lnbmFsLW1vZHVsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfc2lnbmFsX21vZHVsZTsKLWZpCi0KLQotaWYgdGVzdCAteiAiJHdpdGhfc2lnbmFsX21vZHVsZSIKLXRoZW4gd2l0aF9zaWduYWxfbW9kdWxlPSJ5ZXMiCi1maQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNQotJGFzX2VjaG8gIiR3aXRoX3NpZ25hbF9tb2R1bGUiID4mNjsgfQotCi1pZiB0ZXN0ICIke3dpdGhfc2lnbmFsX21vZHVsZX0iID0gInllcyI7IHRoZW4KLQlVU0VfU0lHTkFMX01PRFVMRT0iIgotCVNJR05BTF9PQkpTPSIiCi1lbHNlCi0JVVNFX1NJR05BTF9NT0RVTEU9IiMiCi0JU0lHTkFMX09CSlM9IlBhcnNlci9pbnRyY2hlY2subyBQeXRob24vc2lnY2hlY2subyIKLWZpCi0KICMgVGhpcyBpcyB1c2VkIHRvIGdlbmVyYXRlIFNldHVwLmNvbmZpZwogCiBVU0VfVEhSRUFEX01PRFVMRT0iIgpAQCAtMTEwNTQsMzcgKzEwOTcxLDYgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKIAoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBPU1ggMTAuNSBTREsgb3IgbGF0ZXIuLi4gIiA+JjY7IH0KLWNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotICAjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPgotaW50Ci1tYWluICgpCi17Ci1GU0lPUmVmTnVtIGZSZWYgPSAwCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfT1NYMTA1X1NESyAxIiA+PmNvbmZkZWZzLmgKLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotCi1lbHNlCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLQogIyBDaGVjayBmb3IgLS13aXRoLWRvYy1zdHJpbmdzCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC0td2l0aC1kb2Mtc3RyaW5ncy4uLiAiID4mNjsgfQpAQCAtMTExMDcsMjkgKzEwOTkzLDYgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kb2Nfc3RyaW5ncyIgPiY1CiAkYXNfZWNobyAiJHdpdGhfZG9jX3N0cmluZ3MiID4mNjsgfQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLS13aXRoLXRzYyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXRzYy4uLiAiID4mNjsgfQotCi0jIENoZWNrIHdoZXRoZXIgLS13aXRoLXRzYyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke3dpdGhfdHNjK3NldH0iID0gc2V0OyB0aGVuIDoKLSAgd2l0aHZhbD0kd2l0aF90c2M7Ci1pZiB0ZXN0ICIkd2l0aHZhbCIgIT0gbm8KLXRoZW4KLQotJGFzX2VjaG8gIiNkZWZpbmUgV0lUSF9UU0MgMSIgPj5jb25mZGVmcy5oCi0KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKLSRhc19lY2hvICJ5ZXMiID4mNjsgfQotZWxzZSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCiAjIENoZWNrIGZvciBQeXRob24tc3BlY2lmaWMgbWFsbG9jIHN1cHBvcnQKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIC0td2l0aC1weW1hbGxvYyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgLS13aXRoLXB5bWFsbG9jLi4uICIgPiY2OyB9CkBAIC0xMTE4Miw2ICsxMTA0NSwxMDIgQEAKICAgICBPUFQ9Ii1ERFlOQU1JQ19BTk5PVEFUSU9OU19FTkFCTEVEPTEgJE9QVCIKIGZpCiAKKyMgQ2hlY2sgZm9yIERUcmFjZSBzdXBwb3J0Cit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAtLXdpdGgtZHRyYWNlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtZHRyYWNlIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7d2l0aF9kdHJhY2Urc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2R0cmFjZTsKK2Vsc2UKKyAgd2l0aF9kdHJhY2U9bm8KK2ZpCisKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9kdHJhY2UiID4mNQorJGFzX2VjaG8gIiR3aXRoX2R0cmFjZSIgPiY2OyB9CisKKworCisKKworRFRSQUNFPQorREZMQUdTPQorRFRSQUNFX0hFQURFUlM9CitEVFJBQ0VfT0JKUz0KKworaWYgdGVzdCAiJHdpdGhfZHRyYWNlIiA9ICJ5ZXMiCit0aGVuCisgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkdHJhY2UiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGR0cmFjZTsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfRFRSQUNFKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkRFRSQUNFIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0RUUkFDRT0iJERUUkFDRSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfRFRSQUNFPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX0RUUkFDRSIgJiYgYWNfY3ZfcGF0aF9EVFJBQ0U9Im5vdCBmb3VuZCIKKyAgOzsKK2VzYWMKK2ZpCitEVFJBQ0U9JGFjX2N2X3BhdGhfRFRSQUNFCitpZiB0ZXN0IC1uICIkRFRSQUNFIjsgdGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERUUkFDRSIgPiY1CiskYXNfZWNobyAiJERUUkFDRSIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgICAgaWYgdGVzdCAiJERUUkFDRSIgPSAibm90IGZvdW5kIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSCIgIiRMSU5FTk8iIDUKKyAgICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBXSVRIX0RUUkFDRSAxIiA+PmNvbmZkZWZzLmgKKworICAgIERUUkFDRV9IRUFERVJTPSJJbmNsdWRlL3B5ZHRyYWNlX3Byb2Jlcy5oIgorCisgICAgIyBPbiBPUyBYLCBEVHJhY2UgcHJvdmlkZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGV4cGxpY2l0bHkgY29tcGlsZWQgYW5kCisgICAgIyBsaW5rZWQgaW50byB0aGUgYmluYXJ5LiBDb3JyZXNwb25kaW5nbHksIGR0cmFjZSgxKSBpcyBtaXNzaW5nIHRoZSBFTEYKKyAgICAjIGdlbmVyYXRpb24gZmxhZyAnLUcnLiBXZSBjaGVjayBmb3IgcHJlc2VuY2Ugb2YgdGhpcyBmbGFnLCByYXRoZXIgdGhhbgorICAgICMgaGFyZGNvZGluZyBzdXBwb3J0IGJ5IE9TLCBpbiB0aGUgaW50ZXJlc3Qgb2Ygcm9idXN0bmVzcy4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgRFRyYWNlIHByb2JlcyByZXF1aXJlIGxpbmtpbmciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciBEVHJhY2UgcHJvYmVzIHJlcXVpcmUgbGlua2luZy4uLiAiID4mNjsgfQoraWYgJHthY19jdl9kdHJhY2VfbGluays6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPW5vCisgICAgICAgICAgICBlY2hvICdCRUdJTicgPiBjb25mdGVzdC5kCisgICAgICAgICAgICAiJERUUkFDRSIgLUcgLXMgY29uZnRlc3QuZCAtbyBjb25mdGVzdC5vID4gL2Rldi9udWxsIDI+JjEgJiYgXAorICAgICAgICAgICAgICAgIGFjX2N2X2R0cmFjZV9saW5rPXllcworCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9kdHJhY2VfbGluayIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2R0cmFjZV9saW5rIiA+JjY7IH0KKyAgICBpZiB0ZXN0ICIkYWNfY3ZfZHRyYWNlX2xpbmsiID0gInllcyI7IHRoZW4KKyAgICAgICAgRFRSQUNFX09CSlM9IlB5dGhvbi9weWR0cmFjZS5vIgorICAgIGZpCitmaQorCiAjIC1JJHtETElOQ0xESVJ9IGlzIGFkZGVkIHRvIHRoZSBjb21waWxlIHJ1bGUgZm9yIGltcG9ydGRsLm8KIAogRExJTkNMRElSPS4KQEAgLTEyNjEyLDYgKzEyNTcxLDY0IEBACiBkb25lCiAKIAorZm9yIGFjX2Z1bmMgaW4gY2xvY2tfc2V0dGltZQorZG8gOgorICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJjbG9ja19zZXR0aW1lIiAiYWNfY3ZfZnVuY19jbG9ja19zZXR0aW1lIgoraWYgdGVzdCAieCRhY19jdl9mdW5jX2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisgIGNhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEKK19BQ0VPRgorCitlbHNlCisKKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBjbG9ja19zZXR0aW1lIGluIC1scnQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGNsb2NrX3NldHRpbWUgaW4gLWxydC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1scnQgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGNsb2NrX3NldHRpbWUgKCk7CitpbnQKK21haW4gKCkKK3sKK3JldHVybiBjbG9ja19zZXR0aW1lICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lPXllcworZWxzZQorICBhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfcnRfY2xvY2tfc2V0dGltZSIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9ydF9jbG9ja19zZXR0aW1lIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX3J0X2Nsb2NrX3NldHRpbWUiID0geHllczsgdGhlbiA6CisKKyAgICAgICAgJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9DTE9DS19TRVRUSU1FIDEiID4+Y29uZmRlZnMuaAorCisKK2ZpCisKKworZmkKK2RvbmUKKworCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBtYWpvciIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbWFqb3IuLi4gIiA+JjY7IH0KIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKQEAgLTEzMDI5LDYgKzEzMDQ2LDMzIEBACiAKIGZpCiAKK2FjX2ZuX2NfY2hlY2tfbWVtYmVyICIkTElORU5PIiAic3RydWN0IHBhc3N3ZCIgInB3X2dlY29zIiAiYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfZ2Vjb3MiID0geHllczsgdGhlbiA6CisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TIDEKK19BQ0VPRgorCisKK2ZpCithY19mbl9jX2NoZWNrX21lbWJlciAiJExJTkVOTyIgInN0cnVjdCBwYXNzd2QiICJwd19wYXNzd2QiICJhY19jdl9tZW1iZXJfc3RydWN0X3Bhc3N3ZF9wd19wYXNzd2QiICIKKyAgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICAjaW5jbHVkZSA8cHdkLmg+CisKKyIKK2lmIHRlc3QgIngkYWNfY3ZfbWVtYmVyX3N0cnVjdF9wYXNzd2RfcHdfcGFzc3dkIiA9IHh5ZXM7IHRoZW4gOgorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfU1RSVUNUX1BBU1NXRF9QV19QQVNTV0QgMQorX0FDRU9GCisKKworZmkKKwogCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciB0aW1lLmggdGhhdCBkZWZpbmVzIGFsdHpvbmUiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHRpbWUuaCB0aGF0IGRlZmluZXMgYWx0em9uZS4uLiAiID4mNjsgfQpAQCAtMTMxNjAsNiArMTMyMDQsNDEgQEAKIAogZmkKIAoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzb2NrYWRkcl9hbGcuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZys6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworIwkJaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisjCQlpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjCQlpbmNsdWRlIDxsaW51eC9pZl9hbGcuaD4KK2ludAorbWFpbiAoKQoreworc3RydWN0IHNvY2thZGRyX2FsZyBzCisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz15ZXMKK2Vsc2UKKyAgYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorZmkKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnIiA+JjUKKyRhc19lY2hvICIkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZyIgPiY2OyB9CitpZiB0ZXN0ICRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnID0geWVzOyB0aGVuCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfU09DS0FERFJfQUxHIDEiID4+Y29uZmRlZnMuaAorCitmaQorCiAjIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciBjaGFyIGlzIHVuc2lnbmVkIiA+JjUKQEAgLTEzNDQ4LDQwICsxMzUyNyw2IEBACiBmaQogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CiAKLXZhX2xpc3RfaXNfYXJyYXk9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB2YV9saXN0IGlzIGFuIGFycmF5IiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdmFfbGlzdCBpcyBhbiBhcnJheS4uLiAiID4mNjsgfQotY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0jaWZkZWYgSEFWRV9TVERBUkdfUFJPVE9UWVBFUwotI2luY2x1ZGUgPHN0ZGFyZy5oPgotI2Vsc2UKLSNpbmNsdWRlIDx2YXJhcmdzLmg+Ci0jZW5kaWYKLQotaW50Ci1tYWluICgpCi17Ci12YV9saXN0IGxpc3QxLCBsaXN0MjsgbGlzdDEgPSBsaXN0MjsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotCi1lbHNlCi0KLQotJGFzX2VjaG8gIiNkZWZpbmUgVkFfTElTVF9JU19BUlJBWSAxIiA+PmNvbmZkZWZzLmgKLQotIHZhX2xpc3RfaXNfYXJyYXk9eWVzCi0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkdmFfbGlzdF9pc19hcnJheSIgPiY1Ci0kYXNfZWNobyAiJHZhX2xpc3RfaXNfYXJyYXkiID4mNjsgfQotCiAjIHNpZ2ggLS0gZ2V0aG9zdGJ5bmFtZV9yIGlzIGEgbWVzczsgaXQgY2FuIGhhdmUgMywgNSBvciA2IGFyZ3VtZW50cyA6LSgKIAogCkBAIC0xNDMzOSw2ICsxNDM4NCw4NSBAQAogCiBmaQogCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX0xBWlkiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9MQVpZIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0xBWlkiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX0xBWlkgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX05PVyIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PVyIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT1ciID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX05PVyAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfR0xPQkFMIiAiYWNfY3ZfaGF2ZV9kZWNsX1JUTERfR0xPQkFMIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0dMT0JBTCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfR0xPQkFMICRhY19oYXZlX2RlY2wKK19BQ0VPRgorYWNfZm5fY19jaGVja19kZWNsICIkTElORU5PIiAiUlRMRF9MT0NBTCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX0xPQ0FMIiAiI2luY2x1ZGUgPGRsZmNuLmg+CisiCitpZiB0ZXN0ICJ4JGFjX2N2X2hhdmVfZGVjbF9SVExEX0xPQ0FMIiA9IHh5ZXM7IHRoZW4gOgorICBhY19oYXZlX2RlY2w9MQorZWxzZQorICBhY19oYXZlX2RlY2w9MAorZmkKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0RFQ0xfUlRMRF9MT0NBTCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfTk9ERUxFVEUiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0RFTEVURSIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0RFTEVURSIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUgJGFjX2hhdmVfZGVjbAorX0FDRU9GCithY19mbl9jX2NoZWNrX2RlY2wgIiRMSU5FTk8iICJSVExEX05PTE9BRCIgImFjX2N2X2hhdmVfZGVjbF9SVExEX05PTE9BRCIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9OT0xPQUQiID0geHllczsgdGhlbiA6CisgIGFjX2hhdmVfZGVjbD0xCitlbHNlCisgIGFjX2hhdmVfZGVjbD0wCitmaQorCitjYXQgPj5jb25mZGVmcy5oIDw8X0FDRU9GCisjZGVmaW5lIEhBVkVfREVDTF9SVExEX05PTE9BRCAkYWNfaGF2ZV9kZWNsCitfQUNFT0YKK2FjX2ZuX2NfY2hlY2tfZGVjbCAiJExJTkVOTyIgIlJUTERfREVFUEJJTkQiICJhY19jdl9oYXZlX2RlY2xfUlRMRF9ERUVQQklORCIgIiNpbmNsdWRlIDxkbGZjbi5oPgorIgoraWYgdGVzdCAieCRhY19jdl9oYXZlX2RlY2xfUlRMRF9ERUVQQklORCIgPSB4eWVzOyB0aGVuIDoKKyAgYWNfaGF2ZV9kZWNsPTEKK2Vsc2UKKyAgYWNfaGF2ZV9kZWNsPTAKK2ZpCisKK2NhdCA+PmNvbmZkZWZzLmggPDxfQUNFT0YKKyNkZWZpbmUgSEFWRV9ERUNMX1JUTERfREVFUEJJTkQgJGFjX2hhdmVfZGVjbAorX0FDRU9GCisKKwogIyBkZXRlcm1pbmUgd2hhdCBzaXplIGRpZ2l0IHRvIHVzZSBmb3IgUHl0aG9uJ3MgbG9uZ3MKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZGlnaXQgc2l6ZSBmb3IgUHl0aG9uJ3MgbG9uZ3MuLi4gIiA+JjY7IH0KQEAgLTE0NzcyLDcgKzE0ODk2LDExIEBACiAkYXNfZWNobyAiJExEVkVSU0lPTiIgPiY2OyB9CiAKIAotTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCA9IHg7IHRoZW4KKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCitlbHNlCisgIExJQlBMPSckKHByZWZpeCknIi9saWIvcHl0aG9uJHtWRVJTSU9OfS9jb25maWctJHtMRFZFUlNJT059LSR7UExBVEZPUk1fVFJJUExFVH0iCitmaQogCiAKICMgQ2hlY2sgd2hldGhlciByaWdodCBzaGlmdGluZyBhIG5lZ2F0aXZlIGludGVnZXIgZXh0ZW5kcyB0aGUgc2lnbiBiaXQKQEAgLTE1ODQ1LDEwMiArMTU5NzMsNiBAQAogCiBmaQogCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICVsbGQgYW5kICVsbHUgcHJpbnRmKCkgZm9ybWF0IHN1cHBvcnQuLi4gIiA+JjY7IH0KLSAgaWYgJHthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD0iY3Jvc3MgLS0gYXNzdW1pbmcgbm8iCi0gICBpZiB0ZXN0IHgkR0NDID0geHllczsgdGhlbgotICAgIHNhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgICBDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciAtV2Zvcm1hdCIKLSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgICAgIGNoYXIgKmJ1ZmZlcjsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsZCIsIChsb25nIGxvbmcpLTEyMyk7Ci0gICAgICBzcHJpbnRmKGJ1ZmZlciwgIiVsbHUiLCAodW5zaWduZWQgbG9uZyBsb25nKTEyMyk7Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgICBDRkxBR1M9JHNhdmVfQ0ZMQUdTCi0gICBmaQotZWxzZQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfcnVuICIkTElORU5PIjsgdGhlbiA6Ci0gIGFjX2N2X2hhdmVfbG9uZ19sb25nX2Zvcm1hdD15ZXMKLWVsc2UKLSAgYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PW5vCi1maQotcm0gLWYgY29yZSAqLmNvcmUgY29yZS5jb25mdGVzdC4qIGdtb24ub3V0IGJiLm91dCBjb25mdGVzdCRhY19leGVleHQgXAotICBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LmJlYW0gY29uZnRlc3QuJGFjX2V4dAotZmkKLQotCi1maQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA+JjUKLSRhc19lY2hvICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA+JjY7IH0KLWZpCi0KLWlmIHRlc3QgIiRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQiID0geWVzCi10aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIFBZX0ZPUk1BVF9MT05HX0xPTkcgXCJsbFwiIiA+PmNvbmZkZWZzLmgKLQotZmkKLQogaWYgdGVzdCAkYWNfc3lzX3N5c3RlbSA9IERhcndpbgogdGhlbgogCUxJQlM9IiRMSUJTIC1mcmFtZXdvcmsgQ29yZUZvdW5kYXRpb24iCkBAIC0xNzAxNCw3ICsxNzA0Niw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBweXRob24gJGFzX21lIDMuNSwgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IHB5dGhvbiAkYXNfbWUgMy42LCB3aGljaCB3YXMKIGdlbmVyYXRlZCBieSBHTlUgQXV0b2NvbmYgMi42OS4gIEludm9jYXRpb24gY29tbWFuZCBsaW5lIHdhcwogCiAgIENPTkZJR19GSUxFUyAgICA9ICRDT05GSUdfRklMRVMKQEAgLTE3MDc2LDcgKzE3MTA4LDcgQEAKIGNhdCA+PiRDT05GSUdfU1RBVFVTIDw8X0FDRU9GIHx8IGFjX3dyaXRlX2ZhaWw9MQogYWNfY3NfY29uZmlnPSJgJGFzX2VjaG8gIiRhY19jb25maWd1cmVfYXJncyIgfCBzZWQgJ3MvXiAvLzsgcy9bXFwiIlxgXCRdL1xcXFwmL2cnYCIKIGFjX2NzX3ZlcnNpb249IlxcCi1weXRob24gY29uZmlnLnN0YXR1cyAzLjUKK3B5dGhvbiBjb25maWcuc3RhdHVzIDMuNgogY29uZmlndXJlZCBieSAkMCwgZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LAogICB3aXRoIG9wdGlvbnMgXFwiXCRhY19jc19jb25maWdcXCIKIApAQCAtMTc4MjgsNyArMTc4NjAsNyBAQAogaWYgdGVzdCAiJFB5X09QVCIgPSAnZmFsc2UnIC1hICIkUHlfREVCVUciICE9ICd0cnVlJzsgdGhlbgogICAgIGVjaG8gIiIgPiY2CiAgICAgZWNobyAiIiA+JjYKLSAgICBlY2hvICJJZiB5b3Ugd2FudCBhIHJlbGVhc2UgYnVpbGQgd2l0aCBhbGwgb3B0aW1pemF0aW9ucyBhY3RpdmUgKExUTywgUEdPLCBldGMpLCIKKyAgICBlY2hvICJJZiB5b3Ugd2FudCBhIHJlbGVhc2UgYnVpbGQgd2l0aCBhbGwgb3B0aW1pemF0aW9ucyBhY3RpdmUgKExUTywgUEdPLCBldGMpLCIgPiY2CiAgICAgZWNobyAicGxlYXNlIHJ1biAuL2NvbmZpZ3VyZSAtLXdpdGgtb3B0aW1pemF0aW9ucyIgPiY2CiAgICAgZWNobyAiIiA+JjYKICAgICBlY2hvICIiID4mNgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCmluZGV4IDM4MWJhYjAuLjhjZTJhZTkgMTAwNjQ0Ci0tLSBhL2NvbmZpZ3VyZS5hYworKysgYi9jb25maWd1cmUuYWMKQEAgLTMsNyArMyw3IEBACiBkbmwgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKIAogIyBTZXQgVkVSU0lPTiBzbyB3ZSBvbmx5IG5lZWQgdG8gZWRpdCBpbiBvbmUgcGxhY2UgKGkuZS4sIGhlcmUpCi1tNF9kZWZpbmUoUFlUSE9OX1ZFUlNJT04sIDMuNSkKK200X2RlZmluZShQWVRIT05fVkVSU0lPTiwgMy42KQogCiBBQ19QUkVSRVEoMi42NSkKIApAQCAtNjksNyArNjksNyBAQAogICAgIGlmIHRlc3QgLXogIiRQWVRIT05fRk9SX0JVSUxEIjsgdGhlbgogICAgICAgICBmb3IgaW50ZXJwIGluIHB5dGhvbiRQQUNLQUdFX1ZFUlNJT04gcHl0aG9uMyBweXRob247IGRvCiAJICAgIHdoaWNoICRpbnRlcnAgPi9kZXYvbnVsbCAyPiYxIHx8IGNvbnRpbnVlCi0JICAgIGlmICRpbnRlcnAgLWMgJ2ltcG9ydCBzeXM7c3lzLmV4aXQobm90IHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AID49ICgzLDMpKSc7IHRoZW4KKwkgICAgaWYgJGludGVycCAtYyAiaW1wb3J0IHN5cztzeXMuZXhpdChub3QgJy4nLmpvaW4oc3RyKG4pIGZvciBuIGluIHN5cy52ZXJzaW9uX2luZm9APDpAOjJAOj5AKSA9PSAnJFBBQ0tBR0VfVkVSU0lPTicpIjsgdGhlbgogCSAgICAgICAgYnJlYWsKIAkgICAgZmkKICAgICAgICAgICAgIGludGVycD0KQEAgLTc4LDcgKzc4LDcgQEAKIAkgICAgQUNfTVNHX0VSUk9SKFtweXRob24kUEFDS0FHRV9WRVJTSU9OIGludGVycHJldGVyIG5vdCBmb3VuZF0pCiAJZmkKICAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQotCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvJChQTEFURElSKSAnJGludGVycAorCVBZVEhPTl9GT1JfQlVJTEQ9J19QWVRIT05fUFJPSkVDVF9CQVNFPSQoYWJzX2J1aWxkZGlyKSBfUFlUSE9OX0hPU1RfUExBVEZPUk09JChfUFlUSE9OX0hPU1RfUExBVEZPUk0pIFBZVEhPTlBBVEg9JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FPV9zeXNjb25maWdkYXRhXyQoQUJJRkxBR1MpXyQoTUFDSERFUClfJChNVUxUSUFSQ0gpICckaW50ZXJwCiAgICAgZmkKICAgICAjIFVzZWQgdG8gY29tbWVudCBvdXQgc3R1ZmYgZm9yIHJlYnVpbGRpbmcgZ2VuZXJhdGVkIGZpbGVzCiAgICAgR0VORVJBVEVEX0NPTU1FTlQ9JyMnCkBAIC02OTQsNiArNjk0LDcgQEAKIEFDX1BST0dfQ0MKIEFDX1BST0dfQ1BQCiBBQ19QUk9HX0dSRVAKK0FDX1BST0dfU0VECiAKIEFDX1NVQlNUKENYWCkKIEFDX1NVQlNUKE1BSU5DQykKQEAgLTc2OCw3ICs3NjksMzEgQEAKICN1bmRlZiBwb3dlcnBjCiAjdW5kZWYgc3BhcmMKICN1bmRlZiB1bml4Ci0jaWYgZGVmaW5lZChfX2xpbnV4X18pCisjaWYgZGVmaW5lZChfX0FORFJPSURfXykKKyMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQorICAgICAgICB4ODZfNjQtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19pMzg2X18pCisgICAgICAgIGk2ODYtbGludXgtYW5kcm9pZAorIyBlbGlmIGRlZmluZWQoX19hYXJjaDY0X18pICYmIGRlZmluZWQoX19BQVJDSDY0RUxfXykKKyMgIGlmIGRlZmluZWQoX19JTFAzMl9fKQorICAgICAgICBhYXJjaDY0X2lscDMyLWxpbnV4LWFuZHJvaWQKKyMgIGVsc2UKKyAgICAgICAgYWFyY2g2NC1saW51eC1hbmRyb2lkCisjICBlbmRpZgorIyBlbGlmIGRlZmluZWQoX19BUk1fRUFCSV9fKSAmJiBkZWZpbmVkKF9fQVJNRUxfXykKKyAgICAgICAgYXJtLWxpbnV4LWFuZHJvaWRlYWJpCisjIGVsaWYgZGVmaW5lZChfX21pcHNfaGFyZF9mbG9hdCkgJiYgZGVmaW5lZChfTUlQU0VMKQorIyAgaWYgX01JUFNfU0lNID09IF9BQklPMzIKKyAgICAgICAgbWlwc2VsLWxpbnV4LWFuZHJvaWQKKyMgIGVsaWYgX01JUFNfU0lNID09IF9BQkk2NAorICAgICAgICBtaXBzNjRlbC1saW51eC1hbmRyb2lkCisjICBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjICBlbmRpZgorIyBlbHNlCisjICAgZXJyb3IgdW5rbm93biBwbGF0Zm9ybSB0cmlwbGV0CisjIGVuZGlmCisjZWxpZiBkZWZpbmVkKF9fbGludXhfXykKICMgaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fTFA2NF9fKQogICAgICAgICB4ODZfNjQtbGludXgtZ251CiAjIGVsaWYgZGVmaW5lZChfX3g4Nl82NF9fKSAmJiBkZWZpbmVkKF9fSUxQMzJfXykKQEAgLTg4MiwxMSArOTA3LDE0IEBACiAgIGlmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUICE9IHgkTVVMVElBUkNIOyB0aGVuCiAgICAgQUNfTVNHX0VSUk9SKFtpbnRlcm5hbCBjb25maWd1cmUgZXJyb3IgZm9yIHRoZSBwbGF0Zm9ybSB0cmlwbGV0LCBwbGVhc2UgZmlsZSBhIGJ1ZyByZXBvcnRdKQogICBmaQorZWxpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggPSB4OyB0aGVuCisgIE1VTFRJQVJDSD0kUExBVEZPUk1fVFJJUExFVAogZmkKLVBMQVRESVI9cGxhdC0kTUFDSERFUAotQUNfU1VCU1QoUExBVERJUikKIEFDX1NVQlNUKFBMQVRGT1JNX1RSSVBMRVQpCi0KK2lmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgorICBNVUxUSUFSQ0hfQ1BQRkxBR1M9Ii1ETVVMVElBUkNIPVxcXCIkTVVMVElBUkNIXFxcIiIKK2ZpCitBQ19TVUJTVChNVUxUSUFSQ0hfQ1BQRkxBR1MpCiAKIEFDX01TR19DSEVDS0lORyhbZm9yIC1XbCwtLW5vLWFzLW5lZWRlZF0pCiBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgpAQCAtOTAzLDYgKzkzMSwyNSBAQAogIyBjaGVja3MgZm9yIFVOSVggdmFyaWFudHMgdGhhdCBzZXQgQyBwcmVwcm9jZXNzb3IgdmFyaWFibGVzCiBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMKIAorQUNfTVNHX0NIRUNLSU5HKFtmb3IgdGhlIEFuZHJvaWQgQVBJIGxldmVsXSkKK2NhdCA+PiBjb25mdGVzdC5jIDw8RU9GCisjaWZkZWYgX19BTkRST0lEX18KKyNpbmNsdWRlIDxhbmRyb2lkL2FwaS1sZXZlbC5oPgorX19BTkRST0lEX0FQSV9fCisjZWxzZQorI2Vycm9yIG5vdCBBbmRyb2lkCisjZW5kaWYKK0VPRgorCitpZiAkQ1BQICRDUFBGTEFHUyBjb25mdGVzdC5jID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgQU5EUk9JRF9BUElfTEVWRUw9YGdyZXAgLXYgJ14jJyBjb25mdGVzdC5vdXQgfCBncmVwIC12ICdeICokJ2AKKyAgQUNfTVNHX1JFU1VMVChbJEFORFJPSURfQVBJX0xFVkVMXSkKKyAgQUNfREVGSU5FX1VOUVVPVEVEKEFORFJPSURfQVBJX0xFVkVMLCAkQU5EUk9JRF9BUElfTEVWRUwsIFtUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm90IEFuZHJvaWRdKQorZmkKK3JtIC1mIGNvbmZ0ZXN0LmMgY29uZnRlc3Qub3V0CisKICMgQ2hlY2sgZm9yIHVuc3VwcG9ydGVkIHN5c3RlbXMKIGNhc2UgJGFjX3N5c19zeXN0ZW0vJGFjX3N5c19yZWxlYXNlIGluCiBhdGhlb3MqfExpbnV4Ki8xKikKQEAgLTEyNzcsMTMgKzEzMjQsMjAgQEAKIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgogICBjYXNlICRDQyBpbgogICAgICpjbGFuZyopCi0gICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKLSAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgRGFyd2luKikKKyAgICAgICAgICAjIEFueSBjaGFuZ2VzIG1hZGUgaGVyZSBzaG91bGQgYmUgcmVmbGVjdGVkIGluIHRoZSBHQ0MrRGFyd2luIGNhc2UgYmVsb3cKKyAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLVdsLC1leHBvcnRfZHluYW1pYyIKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIExUT0ZMQUdTPSItZmx0byIKKyAgICAgICAgICA7OworICAgICAgZXNhYwogICAgICAgOzsKICAgICAqZ2NjKikKICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KICAgICAgICAgRGFyd2luKikKLSAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8iCisgICAgICAgICAgTFRPRkxBR1M9Ii1mbHRvIC1XbCwtZXhwb3J0X2R5bmFtaWMiCiAgICAgICAgICAgOzsKICAgICAgICAgKikKICAgICAgICAgICBMVE9GTEFHUz0iLWZsdG8gLWZ1c2UtbGlua2VyLXBsdWdpbiAtZmZhdC1sdG8tb2JqZWN0cyAtZmx0by1wYXJ0aXRpb249bm9uZSIKQEAgLTE0NjEsNiArMTUxNSwyOCBAQAogIyB0d2VhayBCQVNFQ0ZMQUdTIGJhc2VkIG9uIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybQogY2FzZSAkR0NDIGluCiB5ZXMpCisgICAgQ0ZMQUdTX05PRElTVD0iJENGTEFHU19OT0RJU1QgLXN0ZD1jOTkiCisKKyAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC1XZXh0cmEpCisgICAgIGFjX3NhdmVfY2M9IiRDQyIKKyAgICAgQ0M9IiRDQyAtV2V4dHJhIC1XZXJyb3IiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9leHRyYV93YXJuaW5ncywKKyAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgIFsKKyAgICAgICAgICAgQUNfTEFOR19QUk9HUkFNKFtbXV0sIFtbXV0pCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9eWVzCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZXh0cmFfd2FybmluZ3M9bm8KKyAgICAgICAgIF0pKQorICAgICBDQz0iJGFjX3NhdmVfY2MiCisgICAgQUNfTVNHX1JFU1VMVCgkYWNfY3ZfZXh0cmFfd2FybmluZ3MpCisKKyAgICBpZiB0ZXN0ICRhY19jdl9leHRyYV93YXJuaW5ncyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1XZXh0cmEiCisgICAgZmkKKwogICAgICMgUHl0aG9uIGRvZXNuJ3QgdmlvbGF0ZSBDOTkgYWxpYXNpbmcgcnVsZXMsIGJ1dCBvbGRlciB2ZXJzaW9ucyBvZgogICAgICMgR0NDIHByb2R1Y2Ugd2FybmluZ3MgZm9yIGxlZ2FsIFB5dGhvbiBjb2RlLiAgRW5hYmxlCiAgICAgIyAtZm5vLXN0cmljdC1hbGlhc2luZyBvbiB2ZXJzaW9ucyBvZiBHQ0MgdGhhdCBzdXBwb3J0IGJ1dCBwcm9kdWNlCkBAIC0xNTI1LDI4ICsxNjAxLDQ3IEBACiAgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcmVzdWx0X3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCiAgICAgICBCQVNFQ0ZMQUdTPSIkQkFTRUNGTEFHUyAtV25vLXVudXNlZC1yZXN1bHQiCisgICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV25vLXVudXNlZC1yZXN1bHQiCiAgICAgZmkKIAotICAgIEFDX01TR19DSEVDS0lORyhmb3IgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQpCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgdW51c2VkIHBhcmFtZXRlciB3YXJuaW5nKQogICAgICBhY19zYXZlX2NjPSIkQ0MiCi0gICAgIENDPSIkQ0MgLVdlcnJvcj1kZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQiCi0gICAgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICAgICBBQ19DQUNIRV9WQUwoYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmcsCisgICAgIENDPSIkQ0MgLVd1bnVzZWQtcGFyYW1ldGVyIC1XZXJyb3IiCisgICAgIEFDX0NBQ0hFX1ZBTChhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZywKICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKICAgICAgICAgIFsKLQkgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKLQkgXSxbCi0gICAgICAgICAgIGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nPXllcwotCSBdLFsKLSAgICAgICAgICAgYWNfY3ZfZGVjbGFyYXRpb25fYWZ0ZXJfc3RhdGVtZW50X3dhcm5pbmc9bm8KLQkgXSkpCi0gICAgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgorICAgICAgICAgICBBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tdXSkKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz15ZXMKKyAgICAgICAgIF0sWworICAgICAgICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZz1ubworICAgICAgICAgXSkpCiAgICAgIENDPSIkYWNfc2F2ZV9jYyIKLSAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kZWNsYXJhdGlvbl9hZnRlcl9zdGF0ZW1lbnRfd2FybmluZykKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX3VudXNlZF9wYXJhbWV0ZXJfd2FybmluZykKIAotICAgIGlmIHRlc3QgJGFjX2N2X2RlY2xhcmF0aW9uX2FmdGVyX3N0YXRlbWVudF93YXJuaW5nID0geWVzCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV91bnVzZWRfcGFyYW1ldGVyX3dhcm5pbmcgPSB5ZXMKICAgICB0aGVuCi0gICAgICBDRkxBR1NfTk9ESVNUPSIkQ0ZMQUdTX05PRElTVCAtV2Vycm9yPWRlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCIKKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tdW51c2VkLXBhcmFtZXRlciIKKyAgICBmaQorCisgICAgQUNfTVNHX0NIRUNLSU5HKGlmIHdlIGNhbiB0dXJuIG9mZiAkQ0MgbWlzc2luZyBmaWVsZCBpbml0aWFsaXplcnMgd2FybmluZykKKyAgICAgYWNfc2F2ZV9jYz0iJENDIgorICAgICBDQz0iJENDIC1XbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMgLVdlcnJvciIKKyAgICAgQUNfQ0FDSEVfVkFMKGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnMsCisgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICBbCisgICAgICAgICAgIEFDX0xBTkdfUFJPR1JBTShbW11dLCBbW11dKQorICAgICAgICAgXSxbCisgICAgICAgICAgIGFjX2N2X2Rpc2FibGVfbWlzc2luZ19maWVsZF9pbml0aWFsaXplcnM9eWVzCisgICAgICAgICBdLFsKKyAgICAgICAgICAgYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycz1ubworICAgICAgICAgXSkpCisgICAgIENDPSIkYWNfc2F2ZV9jYyIKKyAgICBBQ19NU0dfUkVTVUxUKCRhY19jdl9kaXNhYmxlX21pc3NpbmdfZmllbGRfaW5pdGlhbGl6ZXJzKQorCisgICAgaWYgdGVzdCAkYWNfY3ZfZGlzYWJsZV9taXNzaW5nX2ZpZWxkX2luaXRpYWxpemVycyA9IHllcworICAgIHRoZW4KKyAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1Xbm8tbWlzc2luZy1maWVsZC1pbml0aWFsaXplcnMiCiAgICAgZmkKIAogICAgIEFDX01TR19DSEVDS0lORyhpZiB3ZSBjYW4gdHVybiBvbiAkQ0MgbWl4ZWQgc2lnbiBjb21wYXJpc29uIHdhcm5pbmcpCkBAIC0xOTQxLDcgKzIwMzYsNyBAQAogQUNfQ0hFQ0tfSEVBREVSUyhhc20vdHlwZXMuaCBjb25pby5oIGRpcmVjdC5oIGRsZmNuLmggZXJybm8uaCBcCiBmY250bC5oIGdycC5oIFwKIGllZWVmcC5oIGlvLmggbGFuZ2luZm8uaCBsaWJpbnRsLmggcHJvY2Vzcy5oIHB0aHJlYWQuaCBcCi1zY2hlZC5oIHNoYWRvdy5oIHNpZ25hbC5oIHN0ZGludC5oIHN0cm9wdHMuaCB0ZXJtaW9zLmggXAorc2NoZWQuaCBzaGFkb3cuaCBzaWduYWwuaCBzdHJvcHRzLmggdGVybWlvcy5oIFwKIHVuaXN0ZC5oIHV0aW1lLmggXAogcG9sbC5oIHN5cy9kZXZwb2xsLmggc3lzL2Vwb2xsLmggc3lzL3BvbGwuaCBcCiBzeXMvYXVkaW9pby5oIHN5cy94YXR0ci5oIHN5cy9ic2R0dHkuaCBzeXMvZXZlbnQuaCBzeXMvZmlsZS5oIHN5cy9pb2N0bC5oIFwKQEAgLTE5NTAsMTEgKzIwNDUsMTggQEAKIHN5cy9zdGF0Lmggc3lzL3N5c2NhbGwuaCBzeXMvc3lzX2RvbWFpbi5oIHN5cy90ZXJtaW8uaCBzeXMvdGltZS5oIFwKIHN5cy90aW1lcy5oIHN5cy90eXBlcy5oIHN5cy91aW8uaCBzeXMvdW4uaCBzeXMvdXRzbmFtZS5oIHN5cy93YWl0LmggcHR5LmggXAogbGlidXRpbC5oIHN5cy9yZXNvdXJjZS5oIG5ldHBhY2tldC9wYWNrZXQuaCBzeXNleGl0cy5oIGJsdWV0b290aC5oIFwKLWJsdWV0b290aC9ibHVldG9vdGguaCBsaW51eC90aXBjLmggbGludXgvcmFuZG9tLmggc3Bhd24uaCB1dGlsLmggYWxsb2NhLmggZW5kaWFuLmggXAorbGludXgvdGlwYy5oIGxpbnV4L3JhbmRvbS5oIHNwYXduLmggdXRpbC5oIGFsbG9jYS5oIGVuZGlhbi5oIFwKIHN5cy9lbmRpYW4uaCkKIEFDX0hFQURFUl9ESVJFTlQKIEFDX0hFQURFUl9NQUpPUgogCisjIGJsdWV0b290aC9ibHVldG9vdGguaCBoYXMgYmVlbiBrbm93biB0byBub3QgY29tcGlsZSB3aXRoIC1zdGQ9Yzk5LgorIyBodHRwOi8vcGVybWFsaW5rLmdtYW5lLm9yZy9nbWFuZS5saW51eC5ibHVlei5rZXJuZWwvMjIyOTQKK1NBVkVfQ0ZMQUdTPSRDRkxBR1MKK0NGTEFHUz0iLXN0ZD1jOTkgJENGTEFHUyIKK0FDX0NIRUNLX0hFQURFUlMoYmx1ZXRvb3RoL2JsdWV0b290aC5oKQorQ0ZMQUdTPSRTQVZFX0NGTEFHUworCiAjIE9uIERhcndpbiAoT1MgWCkgbmV0L2lmLmggcmVxdWlyZXMgc3lzL3NvY2tldC5oIHRvIGJlIGltcG9ydGVkIGZpcnN0LgogQUNfQ0hFQ0tfSEVBREVSUyhbbmV0L2lmLmhdLCBbXSwgW10sCiBbI2luY2x1ZGUgPHN0ZGlvLmg+CkBAIC0yMDQ4LDYgKzIxNTAsMTEgQEAKICAgdXNlX2xmcz1ubwogZmkKIAorIyBEb24ndCB1c2UgbGFyZ2VmaWxlIHN1cHBvcnQgZm9yIEdOVS9IdXJkCitjYXNlICRhY19zeXNfc3lzdGVtIGluIEdOVSopCisgIHVzZV9sZnM9bm8KK2VzYWMKKwogaWYgdGVzdCAiJHVzZV9sZnMiID0gInllcyI7IHRoZW4KICMgVHdvIGRlZmluZXMgbmVlZGVkIHRvIGVuYWJsZSBsYXJnZWZpbGUgc3VwcG9ydCBvbiB2YXJpb3VzIHBsYXRmb3JtcwogIyBUaGVzZSBtYXkgYWZmZWN0IHNvbWUgdHlwZWRlZnMKQEAgLTIwNzgsMjkgKzIxODUsNiBAQAogQUNfVFlQRV9TSVpFX1QKIEFDX1RZUEVfVUlEX1QKIAotIyBUaGVyZSBhcmUgdHdvIHNlcGFyYXRlIGNoZWNrcyBmb3IgZWFjaCBvZiB0aGUgZXhhY3Qtd2lkdGggaW50ZWdlciB0eXBlcyB3ZQotIyBuZWVkLiAgRmlyc3Qgd2UgY2hlY2sgd2hldGhlciB0aGUgdHlwZSBpcyBhdmFpbGFibGUgdXNpbmcgdGhlIHVzdWFsCi0jIEFDX0NIRUNLX1RZUEUgbWFjcm8gd2l0aCB0aGUgZGVmYXVsdCBpbmNsdWRlcyAod2hpY2ggaW5jbHVkZXMgPGludHR5cGVzLmg+Ci0jIGFuZCA8c3RkaW50Lmg+IHdoZXJlIGF2YWlsYWJsZSkuICBXZSB0aGVuIGFsc28gdXNlIHRoZSBzcGVjaWFsIHR5cGUgY2hlY2tzIG9mCi0jIHRoZSBmb3JtIEFDX1RZUEVfVUlOVDMyX1QsIHdoaWNoIGluIHRoZSBjYXNlIHRoYXQgdWludDMyX3QgaXMgbm90IGF2YWlsYWJsZQotIyBkaXJlY3RseSwgI2RlZmluZSdzIHVpbnQzMl90IHRvIGJlIGEgc3VpdGFibGUgdHlwZS4KLQotQUNfQ0hFQ0tfVFlQRSh1aW50MzJfdCwKLSAgQUNfREVGSU5FKEhBVkVfVUlOVDMyX1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50MzJfdC5dKSwsKQotQUNfVFlQRV9VSU5UMzJfVAotCi1BQ19DSEVDS19UWVBFKHVpbnQ2NF90LAotICBBQ19ERUZJTkUoSEFWRV9VSU5UNjRfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQ2NF90Ll0pLCwpCi1BQ19UWVBFX1VJTlQ2NF9UCi0KLUFDX0NIRUNLX1RZUEUoaW50MzJfdCwKLSAgQUNfREVGSU5FKEhBVkVfSU5UMzJfVCwgMSwgW0RlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIGludDMyX3QuXSksLCkKLUFDX1RZUEVfSU5UMzJfVAotCi1BQ19DSEVDS19UWVBFKGludDY0X3QsCi0gIEFDX0RFRklORShIQVZFX0lOVDY0X1QsIDEsIFtEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyBpbnQ2NF90Ll0pLCwpCi1BQ19UWVBFX0lOVDY0X1QKLQogQUNfQ0hFQ0tfVFlQRShzc2l6ZV90LAogICBBQ19ERUZJTkUoSEFWRV9TU0laRV9ULCAxLCBbRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgc3NpemVfdF0pLCwpCiBBQ19DSEVDS19UWVBFKF9fdWludDEyOF90LApAQCAtMjExMCw2ICsyMTk0LDcgQEAKICMgQU5TSSBDIHJlcXVpcmVzIHNpemVvZihjaGFyKSA9PSAxLCBzbyBubyBuZWVkIHRvIGNoZWNrIGl0CiBBQ19DSEVDS19TSVpFT0YoaW50LCA0KQogQUNfQ0hFQ0tfU0laRU9GKGxvbmcsIDQpCitBQ19DSEVDS19TSVpFT0YobG9uZyBsb25nLCA4KQogQUNfQ0hFQ0tfU0laRU9GKHZvaWQgKiwgNCkKIEFDX0NIRUNLX1NJWkVPRihzaG9ydCwgMikKIEFDX0NIRUNLX1NJWkVPRihmbG9hdCwgNCkKQEAgLTIxMTcsMTcgKzIyMDIsNyBAQAogQUNfQ0hFQ0tfU0laRU9GKGZwb3NfdCwgNCkKIEFDX0NIRUNLX1NJWkVPRihzaXplX3QsIDQpCiBBQ19DSEVDS19TSVpFT0YocGlkX3QsIDQpCi0KLUFDX01TR19DSEVDS0lORyhmb3IgbG9uZyBsb25nIHN1cHBvcnQpCi1oYXZlX2xvbmdfbG9uZz1ubwotQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbW11dLCBbW2xvbmcgbG9uZyB4OyB4ID0gKGxvbmcgbG9uZykwO11dKV0sWwotICBBQ19ERUZJTkUoSEFWRV9MT05HX0xPTkcsIDEsIFtEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGxvbmcuXSkKLSAgaGF2ZV9sb25nX2xvbmc9eWVzCi1dLFtdKQotQUNfTVNHX1JFU1VMVCgkaGF2ZV9sb25nX2xvbmcpCi1pZiB0ZXN0ICIkaGF2ZV9sb25nX2xvbmciID0geWVzIDsgdGhlbgotQUNfQ0hFQ0tfU0laRU9GKGxvbmcgbG9uZywgOCkKLWZpCitBQ19DSEVDS19TSVpFT0YodWludHB0cl90KQogCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIGxvbmcgZG91YmxlIHN1cHBvcnQpCiBoYXZlX2xvbmdfZG91YmxlPW5vCkBAIC0yMTQwLDI2ICsyMjE1LDcgQEAKIEFDX0NIRUNLX1NJWkVPRihsb25nIGRvdWJsZSwgMTYpCiBmaQogCi0KLUFDX01TR19DSEVDS0lORyhmb3IgX0Jvb2wgc3VwcG9ydCkKLWhhdmVfYzk5X2Jvb2w9bm8KLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1tdXSwgW1tfQm9vbCB4OyB4ID0gKF9Cb29sKTA7XV0pXSxbCi0gIEFDX0RFRklORShIQVZFX0M5OV9CT09MLCAxLCBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgdGhlIHR5cGUgX0Jvb2wuXSkKLSAgaGF2ZV9jOTlfYm9vbD15ZXMKLV0sW10pCi1BQ19NU0dfUkVTVUxUKCRoYXZlX2M5OV9ib29sKQotaWYgdGVzdCAiJGhhdmVfYzk5X2Jvb2wiID0geWVzIDsgdGhlbgogQUNfQ0hFQ0tfU0laRU9GKF9Cb29sLCAxKQotZmkKLQotQUNfQ0hFQ0tfVFlQRVModWludHB0cl90LAotICAgW0FDX0NIRUNLX1NJWkVPRih1aW50cHRyX3QsIDQpXSwKLSAgIFtdLCBbI2lmZGVmIEhBVkVfU1RESU5UX0gKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGludC5oPgotICAgICAgICAjZW5kaWYKLSAgICAgICAgI2lmZGVmIEhBVkVfSU5UVFlQRVNfSAotICAgICAgICAjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAgICAgICAgI2VuZGlmXSkKIAogQUNfQ0hFQ0tfU0laRU9GKG9mZl90LCBbXSwgWwogI2lmZGVmIEhBVkVfU1lTX1RZUEVTX0gKQEAgLTIxNjgsOCArMjIyNCw2IEBACiBdKQogCiBBQ19NU0dfQ0hFQ0tJTkcod2hldGhlciB0byBlbmFibGUgbGFyZ2UgZmlsZSBzdXBwb3J0KQotaWYgdGVzdCAiJGhhdmVfbG9uZ19sb25nIiA9IHllcwotdGhlbgogaWYgdGVzdCAiJGFjX2N2X3NpemVvZl9vZmZfdCIgLWd0ICIkYWNfY3Zfc2l6ZW9mX2xvbmciIC1hIFwKIAkiJGFjX2N2X3NpemVvZl9sb25nX2xvbmciIC1nZSAiJGFjX2N2X3NpemVvZl9vZmZfdCI7IHRoZW4KICAgQUNfREVGSU5FKEhBVkVfTEFSR0VGSUxFX1NVUFBPUlQsIDEsCkBAIC0yMTgxLDkgKzIyMzUsNiBAQAogZWxzZQogICBBQ19NU0dfUkVTVUxUKG5vKQogZmkKLWVsc2UKLSAgQUNfTVNHX1JFU1VMVChubykKLWZpCiAKIEFDX0NIRUNLX1NJWkVPRih0aW1lX3QsIFtdLCBbCiAjaWZkZWYgSEFWRV9TWVNfVFlQRVNfSApAQCAtMjc0Miw5ICsyNzkzLDI1IEBACiAjIENoZWNrIGZvciB1c2Ugb2YgdGhlIHN5c3RlbSBsaWJmZmkgbGlicmFyeQogQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtc3lzdGVtLWZmaSkKIEFDX0FSR19XSVRIKHN5c3RlbV9mZmksCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1mZmldLCBbYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5XSksCi0gICAgICAgICAgICBbXSwKLSAgICAgICAgICAgIFt3aXRoX3N5c3RlbV9mZmk9Im5vIl0pCisgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXN5c3RlbS1mZmldLCBbYnVpbGQgX2N0eXBlcyBtb2R1bGUgdXNpbmcgYW4gaW5zdGFsbGVkIGZmaSBsaWJyYXJ5XSksLCwpCisKK2Nhc2UgIiR3aXRoX3N5c3RlbV9mZmkiIGluCisgICAgIiIpCisgICAgICAgIGNhc2UgJGFjX3N5c19zeXN0ZW0gaW4KKyAgICAgICAgICAgIERhcndpbikKKyAgICAgICAgICAgICAgICB3aXRoX3N5c3RlbV9mZmk9Im5vIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIHdpdGhfc3lzdGVtX2ZmaT0ieWVzIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICB5ZXN8bm8pCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgQUNfTVNHX0VSUk9SKFstLXdpdGgtc3lzdGVtLWZmaSBhY2NlcHRzIG5vIGFyZ3VtZW50c10pCisgICAgICAgIDs7Citlc2FjCiAKIGlmIHRlc3QgIiR3aXRoX3N5c3RlbV9mZmkiID0gInllcyIgJiYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCiAgICAgTElCRkZJX0lOQ0xVREVESVI9ImAiJFBLR19DT05GSUciIGxpYmZmaSAtLWNmbGFncy1vbmx5LUkgMj4vZGV2L251bGwgfCBzZWQgLWUgJ3MvXi1JLy87cy8gKiQvLydgIgpAQCAtMjgxOSwyNiArMjg4Niw2IEBACiBmaV0pCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2RibWxpYm9yZGVyKQogCi0jIERldGVybWluZSBpZiBzaWduYWxtb2R1bGUgc2hvdWxkIGJlIHVzZWQuCi1BQ19TVUJTVChVU0VfU0lHTkFMX01PRFVMRSkKLUFDX1NVQlNUKFNJR05BTF9PQkpTKQotQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtc2lnbmFsLW1vZHVsZSkKLUFDX0FSR19XSVRIKHNpZ25hbC1tb2R1bGUsCi0gICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS13aXRoLXNpZ25hbC1tb2R1bGVdLCBbZGlzYWJsZS9lbmFibGUgc2lnbmFsIG1vZHVsZV0pKQotCi1pZiB0ZXN0IC16ICIkd2l0aF9zaWduYWxfbW9kdWxlIgotdGhlbiB3aXRoX3NpZ25hbF9tb2R1bGU9InllcyIKLWZpCi1BQ19NU0dfUkVTVUxUKCR3aXRoX3NpZ25hbF9tb2R1bGUpCi0KLWlmIHRlc3QgIiR7d2l0aF9zaWduYWxfbW9kdWxlfSIgPSAieWVzIjsgdGhlbgotCVVTRV9TSUdOQUxfTU9EVUxFPSIiCi0JU0lHTkFMX09CSlM9IiIKLWVsc2UKLQlVU0VfU0lHTkFMX01PRFVMRT0iIyIKLQlTSUdOQUxfT0JKUz0iUGFyc2VyL2ludHJjaGVjay5vIFB5dGhvbi9zaWdjaGVjay5vIgotZmkKLQogIyBUaGlzIGlzIHVzZWQgdG8gZ2VuZXJhdGUgU2V0dXAuY29uZmlnCiBBQ19TVUJTVChVU0VfVEhSRUFEX01PRFVMRSkKIFVTRV9USFJFQURfTU9EVUxFPSIiCkBAIC0zMjA4LDE2ICszMjU1LDYgQEAKICAgQUNfTVNHX1JFU1VMVChubykKIF0pCiAKLUFDX01TR19DSEVDS0lORyhmb3IgT1NYIDEwLjUgU0RLIG9yIGxhdGVyKQotQUNfQ09NUElMRV9JRkVMU0UoWwotICBBQ19MQU5HX1BST0dSQU0oW1sjaW5jbHVkZSA8Q2FyYm9uL0NhcmJvbi5oPl1dLCBbW0ZTSU9SZWZOdW0gZlJlZiA9IDBdXSkKLV0sWwotICBBQ19ERUZJTkUoSEFWRV9PU1gxMDVfU0RLLCAxLCBbRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBNYWNPUyBYIDEwLjUgU0RLIG9yIGxhdGVyLl0pCi0gIEFDX01TR19SRVNVTFQoeWVzKQotXSxbCi0gIEFDX01TR19SRVNVTFQobm8pCi1dKQotCiAjIENoZWNrIGZvciAtLXdpdGgtZG9jLXN0cmluZ3MKIEFDX01TR19DSEVDS0lORyhmb3IgLS13aXRoLWRvYy1zdHJpbmdzKQogQUNfQVJHX1dJVEgoZG9jLXN0cmluZ3MsCkBAIC0zMjMzLDE5ICszMjcwLDYgQEAKIGZpCiBBQ19NU0dfUkVTVUxUKCR3aXRoX2RvY19zdHJpbmdzKQogCi0jIENoZWNrIGlmIGV2YWwgbG9vcCBzaG91bGQgdXNlIHRpbWVzdGFtcCBjb3VudGVyIHByb2ZpbGluZwotQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtdHNjKQotQUNfQVJHX1dJVEgodHNjLAotCSAgICBBU19IRUxQX1NUUklORyhbLS13aXRoKG91dCktdHNjXSxbZW5hYmxlL2Rpc2FibGUgdGltZXN0YW1wIGNvdW50ZXIgcHJvZmlsZV0pLFsKLWlmIHRlc3QgIiR3aXRodmFsIiAhPSBubwotdGhlbgotICBBQ19ERUZJTkUoV0lUSF9UU0MsIDEsCi0gICAgW0RlZmluZSB0byBwcm9maWxlIHdpdGggdGhlIFBlbnRpdW0gdGltZXN0YW1wIGNvdW50ZXJdKQotICAgIEFDX01TR19SRVNVTFQoeWVzKQotZWxzZSBBQ19NU0dfUkVTVUxUKG5vKQotZmldLAotW0FDX01TR19SRVNVTFQobm8pXSkKLQogIyBDaGVjayBmb3IgUHl0aG9uLXNwZWNpZmljIG1hbGxvYyBzdXBwb3J0CiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIC0td2l0aC1weW1hbGxvYykKIEFDX0FSR19XSVRIKHB5bWFsbG9jLApAQCAtMzI3Nyw2ICszMzAxLDQ3IEBACiAgICAgT1BUPSItRERZTkFNSUNfQU5OT1RBVElPTlNfRU5BQkxFRD0xICRPUFQiCiBmaQogCisjIENoZWNrIGZvciBEVHJhY2Ugc3VwcG9ydAorQUNfTVNHX0NIRUNLSU5HKGZvciAtLXdpdGgtZHRyYWNlKQorQUNfQVJHX1dJVEgoZHRyYWNlLAorICBBQ19IRUxQX1NUUklORygtLXdpdGgob3V0KS1kdHJhY2UsIFtkaXNhYmxlL2VuYWJsZSBEVHJhY2Ugc3VwcG9ydF0pLCwKKyAgd2l0aF9kdHJhY2U9bm8pCitBQ19NU0dfUkVTVUxUKCR3aXRoX2R0cmFjZSkKKworQUNfU1VCU1QoRFRSQUNFKQorQUNfU1VCU1QoREZMQUdTKQorQUNfU1VCU1QoRFRSQUNFX0hFQURFUlMpCitBQ19TVUJTVChEVFJBQ0VfT0JKUykKK0RUUkFDRT0KK0RGTEFHUz0KK0RUUkFDRV9IRUFERVJTPQorRFRSQUNFX09CSlM9CisKK2lmIHRlc3QgIiR3aXRoX2R0cmFjZSIgPSAieWVzIgordGhlbgorICAgIEFDX1BBVEhfUFJPRyhEVFJBQ0UsIFtkdHJhY2VdLCBbbm90IGZvdW5kXSkKKyAgICBpZiB0ZXN0ICIkRFRSQUNFIiA9ICJub3QgZm91bmQiOyB0aGVuCisgICAgICAgIEFDX01TR19FUlJPUihbZHRyYWNlIGNvbW1hbmQgbm90IGZvdW5kIG9uIFwkUEFUSF0pCisgICAgZmkKKyAgICBBQ19ERUZJTkUoV0lUSF9EVFJBQ0UsIDEsIFtEZWZpbmUgaWYgeW91IHdhbnQgdG8gY29tcGlsZSBpbiBEVHJhY2Ugc3VwcG9ydF0pCisgICAgRFRSQUNFX0hFQURFUlM9IkluY2x1ZGUvcHlkdHJhY2VfcHJvYmVzLmgiCisKKyAgICAjIE9uIE9TIFgsIERUcmFjZSBwcm92aWRlcnMgZG8gbm90IG5lZWQgdG8gYmUgZXhwbGljaXRseSBjb21waWxlZCBhbmQKKyAgICAjIGxpbmtlZCBpbnRvIHRoZSBiaW5hcnkuIENvcnJlc3BvbmRpbmdseSwgZHRyYWNlKDEpIGlzIG1pc3NpbmcgdGhlIEVMRgorICAgICMgZ2VuZXJhdGlvbiBmbGFnICctRycuIFdlIGNoZWNrIGZvciBwcmVzZW5jZSBvZiB0aGlzIGZsYWcsIHJhdGhlciB0aGFuCisgICAgIyBoYXJkY29kaW5nIHN1cHBvcnQgYnkgT1MsIGluIHRoZSBpbnRlcmVzdCBvZiByb2J1c3RuZXNzLgorICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIERUcmFjZSBwcm9iZXMgcmVxdWlyZSBsaW5raW5nXSwKKyAgICAgICAgW2FjX2N2X2R0cmFjZV9saW5rXSwgW2RubAorICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9bm8KKyAgICAgICAgICAgIGVjaG8gJ0JFR0lOJyA+IGNvbmZ0ZXN0LmQKKyAgICAgICAgICAgICIkRFRSQUNFIiAtRyAtcyBjb25mdGVzdC5kIC1vIGNvbmZ0ZXN0Lm8gPiAvZGV2L251bGwgMj4mMSAmJiBcCisgICAgICAgICAgICAgICAgYWNfY3ZfZHRyYWNlX2xpbms9eWVzCisgICAgICBdKQorICAgIGlmIHRlc3QgIiRhY19jdl9kdHJhY2VfbGluayIgPSAieWVzIjsgdGhlbgorICAgICAgICBEVFJBQ0VfT0JKUz0iUHl0aG9uL3B5ZHRyYWNlLm8iCisgICAgZmkKK2ZpCisKICMgLUkke0RMSU5DTERJUn0gaXMgYWRkZWQgdG8gdGhlIGNvbXBpbGUgcnVsZSBmb3IgaW1wb3J0ZGwubwogQUNfU1VCU1QoRExJTkNMRElSKQogRExJTkNMRElSPS4KQEAgLTM2NjksNiArMzczNCwxMiBAQAogICAgIF0pCiBdKQogCitBQ19DSEVDS19GVU5DUyhjbG9ja19zZXR0aW1lLCBbXSwgWworICAgIEFDX0NIRUNLX0xJQihydCwgY2xvY2tfc2V0dGltZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9DTE9DS19TRVRUSU1FLCAxKQorICAgIF0pCitdKQorCiBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1ham9yLCBtaW5vciwgYW5kIG1ha2VkZXYpCiBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCiAjaWYgZGVmaW5lZChNQUpPUl9JTl9NS0RFVikKQEAgLTM4MzAsNiArMzkwMSwxMCBAQAogQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHN0YXQuc3RfZ2VuXSkKIEFDX0NIRUNLX01FTUJFUlMoW3N0cnVjdCBzdGF0LnN0X2JpcnRodGltZV0pCiBBQ19DSEVDS19NRU1CRVJTKFtzdHJ1Y3Qgc3RhdC5zdF9ibG9ja3NdKQorQUNfQ0hFQ0tfTUVNQkVSUyhbc3RydWN0IHBhc3N3ZC5wd19nZWNvcywgc3RydWN0IHBhc3N3ZC5wd19wYXNzd2RdLCBbXSwgW10sIFtbCisgICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAgI2luY2x1ZGUgPHB3ZC5oPgorXV0pCiAKIEFDX01TR19DSEVDS0lORyhmb3IgdGltZS5oIHRoYXQgZGVmaW5lcyBhbHR6b25lKQogQUNfQ0FDSEVfVkFMKGFjX2N2X2hlYWRlcl90aW1lX2FsdHpvbmUsWwpAQCAtMzg3OCw2ICszOTUzLDE5IEBACiAJQUNfREVGSU5FKEhBVkVfU09DS0FERFJfU1RPUkFHRSwgMSwgW3N0cnVjdCBzb2NrYWRkcl9zdG9yYWdlIChzeXMvc29ja2V0LmgpXSkKIGZpCiAKK0FDX01TR19DSEVDS0lORyhmb3Igc29ja2FkZHJfYWxnKQorQUNfQ0FDSEVfVkFMKGFjX2N2X3N0cnVjdF9zb2NrYWRkcl9hbGcsCitBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbCisjCQlpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyMJCWluY2x1ZGUgPHN5cy9zb2NrZXQuaD4KKyMJCWluY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPl1dLCBbW3N0cnVjdCBzb2NrYWRkcl9hbGcgc11dKV0sCisgIFthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPXllc10sCisgIFthY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnPW5vXSkpCitBQ19NU0dfUkVTVUxUKCRhY19jdl9zdHJ1Y3Rfc29ja2FkZHJfYWxnKQoraWYgdGVzdCAkYWNfY3Zfc3RydWN0X3NvY2thZGRyX2FsZyA9IHllczsgdGhlbgorCUFDX0RFRklORShIQVZFX1NPQ0tBRERSX0FMRywgMSwgW3N0cnVjdCBzb2NrYWRkcl9hbGcgKGxpbnV4L2lmX2FsZy5oKV0pCitmaQorCiAjIGNoZWNrcyBmb3IgY29tcGlsZXIgY2hhcmFjdGVyaXN0aWNzCiAKIEFDX0NfQ0hBUl9VTlNJR05FRApAQCAtMzk1MCwyMCArNDAzOCw2IEBACiAgIFtBQ19NU0dfUkVTVUxUKG5vKV0KICkKIAotdmFfbGlzdF9pc19hcnJheT1ubwotQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgdmFfbGlzdCBpcyBhbiBhcnJheSkKLUFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSNpZmRlZiBIQVZFX1NUREFSR19QUk9UT1RZUEVTCi0jaW5jbHVkZSA8c3RkYXJnLmg+Ci0jZWxzZQotI2luY2x1ZGUgPHZhcmFyZ3MuaD4KLSNlbmRpZgotXV0sIFtbdmFfbGlzdCBsaXN0MSwgbGlzdDI7IGxpc3QxID0gbGlzdDI7XV0pXSxbXSxbCi0gQUNfREVGSU5FKFZBX0xJU1RfSVNfQVJSQVksIDEsIFtEZWZpbmUgaWYgYSB2YV9saXN0IGlzIGFuIGFycmF5IG9mIHNvbWUga2luZF0pCi0gdmFfbGlzdF9pc19hcnJheT15ZXMKLV0pCi1BQ19NU0dfUkVTVUxUKCR2YV9saXN0X2lzX2FycmF5KQotCiAjIHNpZ2ggLS0gZ2V0aG9zdGJ5bmFtZV9yIGlzIGEgbWVzczsgaXQgY2FuIGhhdmUgMywgNSBvciA2IGFyZ3VtZW50cyA6LSgKIEFIX1RFTVBMQVRFKEhBVkVfR0VUSE9TVEJZTkFNRV9SLAogICBbRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgc29tZSB2ZXJzaW9uIG9mIGdldGhvc3RieW5hbWVfcigpXSkKQEAgLTQ0MDYsNiArNDQ4MCw4IEBACiAgIFtkZWZpbmUgdG8gMSBpZiB5b3VyIHNlbV9nZXR2YWx1ZSBpcyBicm9rZW4uXSkKIGZpCiAKK0FDX0NIRUNLX0RFQ0xTKFtSVExEX0xBWlksIFJUTERfTk9XLCBSVExEX0dMT0JBTCwgUlRMRF9MT0NBTCwgUlRMRF9OT0RFTEVURSwgUlRMRF9OT0xPQUQsIFJUTERfREVFUEJJTkRdLCBbXSwgW10sIFtbI2luY2x1ZGUgPGRsZmNuLmg+XV0pCisKICMgZGV0ZXJtaW5lIHdoYXQgc2l6ZSBkaWdpdCB0byB1c2UgZm9yIFB5dGhvbidzIGxvbmdzCiBBQ19NU0dfQ0hFQ0tJTkcoW2RpZ2l0IHNpemUgZm9yIFB5dGhvbidzIGxvbmdzXSkKIEFDX0FSR19FTkFCTEUoYmlnLWRpZ2l0cywKQEAgLTQ1MjQsNyArNDYwMCwxMSBAQAogCiBkbmwgZGVmaW5lIExJQlBMIGFmdGVyIEFCSUZMQUdTIGFuZCBMRFZFUlNJT04gaXMgZGVmaW5lZC4KIEFDX1NVQlNUKFBZX0VOQUJMRV9TSEFSRUQpCi1MSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2lmIHRlc3QgeCRQTEFURk9STV9UUklQTEVUID0geDsgdGhlbgorICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKK2Vsc2UKKyAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKK2ZpCiBBQ19TVUJTVChMSUJQTCkKIAogIyBDaGVjayB3aGV0aGVyIHJpZ2h0IHNoaWZ0aW5nIGEgbmVnYXRpdmUgaW50ZWdlciBleHRlbmRzIHRoZSBzaWduIGJpdApAQCAtNDkyMiw3MCArNTAwMiw2IEBACiAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgL2Rldi9wdGMgZGV2aWNlIGZpbGUuXSkKIGZpCiAKLWlmIHRlc3QgIiRoYXZlX2xvbmdfbG9uZyIgPSB5ZXMKLXRoZW4KLSAgQUNfTVNHX0NIRUNLSU5HKGZvciAlbGxkIGFuZCAlbGx1IHByaW50ZigpIGZvcm1hdCBzdXBwb3J0KQotICBBQ19DQUNIRV9WQUwoYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0LAotICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbW1sKLSAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgI2luY2x1ZGUgPHN0cmluZy5oPgotCi0gICNpZmRlZiBIQVZFX1NZU19UWVBFU19ICi0gICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAgI2VuZGlmCi0KLSAgaW50IG1haW4oKQotICB7Ci0gICAgICBjaGFyIGJ1ZmZlclsyNTZdOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIGlmIChzcHJpbnRmKGJ1ZmZlciwgIiVsbGQiLCAobG9uZyBsb25nKS0xMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiLTEyMyIpKQotICAgICAgICAgIHJldHVybiAxOwotCi0gICAgICBpZiAoc3ByaW50ZihidWZmZXIsICIlbGx1IiwgKHVuc2lnbmVkIGxvbmcgbG9uZykxMjMpIDwgMCkKLSAgICAgICAgICByZXR1cm4gMTsKLSAgICAgIGlmIChzdHJjbXAoYnVmZmVyLCAiMTIzIikpCi0gICAgICAgICAgcmV0dXJuIDE7Ci0KLSAgICAgIHJldHVybiAwOwotICB9Ci0gIF1dXSldLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PXllc10sCi0gIFthY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9bm9dLAotICBbYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0PSJjcm9zcyAtLSBhc3N1bWluZyBubyIKLSAgIGlmIHRlc3QgeCRHQ0MgPSB4eWVzOyB0aGVuCi0gICAgc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgIENGTEFHUz0iJENGTEFHUyAtV2Vycm9yIC1XZm9ybWF0IgotICAgIEFDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW1sKLSAgICAgICAgI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gICAgICAgICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAgICAgIF1dLCBbWwotICAgICAgY2hhciAqYnVmZmVyOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZykxMjMpOwotICAgICAgc3ByaW50ZihidWZmZXIsICIlbGxkIiwgKGxvbmcgbG9uZyktMTIzKTsKLSAgICAgIHNwcmludGYoYnVmZmVyLCAiJWxsdSIsICh1bnNpZ25lZCBsb25nIGxvbmcpMTIzKTsKLSAgICAgIF1dKV0sCi0gICAgICBhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQ9eWVzCi0gICAgKQotICAgIENGTEFHUz0kc2F2ZV9DRkxBR1MKLSAgIGZpXSkKLSAgKQotICBBQ19NU0dfUkVTVUxUKCRhY19jdl9oYXZlX2xvbmdfbG9uZ19mb3JtYXQpCi1maQotCi1pZiB0ZXN0ICIkYWNfY3ZfaGF2ZV9sb25nX2xvbmdfZm9ybWF0IiA9IHllcwotdGhlbgotICBBQ19ERUZJTkUoUFlfRk9STUFUX0xPTkdfTE9ORywgImxsIiwKLSAgW0RlZmluZSB0byBwcmludGYgZm9ybWF0IG1vZGlmaWVyIGZvciBsb25nIGxvbmcgdHlwZV0pCi1maQotCiBpZiB0ZXN0ICRhY19zeXNfc3lzdGVtID0gRGFyd2luCiB0aGVuCiAJTElCUz0iJExJQlMgLWZyYW1ld29yayBDb3JlRm91bmRhdGlvbiIKQEAgLTUzNzgsNyArNTM5NCw3IEBACiBpZiB0ZXN0ICIkUHlfT1BUIiA9ICdmYWxzZScgLWEgIiRQeV9ERUJVRyIgIT0gJ3RydWUnOyB0aGVuCiAgICAgZWNobyAiIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAotICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIgorICAgIGVjaG8gIklmIHlvdSB3YW50IGEgcmVsZWFzZSBidWlsZCB3aXRoIGFsbCBvcHRpbWl6YXRpb25zIGFjdGl2ZSAoTFRPLCBQR08sIGV0YyksIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICJwbGVhc2UgcnVuIC4vY29uZmlndXJlIC0td2l0aC1vcHRpbWl6YXRpb25zIiA+JkFTX01FU1NBR0VfRkQKICAgICBlY2hvICIiID4mQVNfTUVTU0FHRV9GRAogICAgIGVjaG8gIiIgPiZBU19NRVNTQUdFX0ZECmRpZmYgLS1naXQgYS9weWNvbmZpZy5oLmluIGIvcHljb25maWcuaC5pbgppbmRleCBiZjRiYTViLi5lN2E4MzZjIDEwMDY0NAotLS0gYS9weWNvbmZpZy5oLmluCisrKyBiL3B5Y29uZmlnLmguaW4KQEAgLTEyLDYgKzEyLDkgQEAKICAgIHN1cHBvcnQgZm9yIEFJWCBDKysgc2hhcmVkIGV4dGVuc2lvbiBtb2R1bGVzLiAqLwogI3VuZGVmIEFJWF9HRU5VSU5FX0NQTFVTUExVUwogCisvKiBUaGUgQW5kcm9pZCBBUEkgbGV2ZWwuICovCisjdW5kZWYgQU5EUk9JRF9BUElfTEVWRUwKKwogLyogRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZCBpbiBBUk0KICAgIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMykgKi8KICN1bmRlZiBET1VCTEVfSVNfQVJNX01JWEVEX0VORElBTl9JRUVFNzU0CkBAIC0xMDQsOSArMTA3LDYgQEAKIC8qIEhhcyBidWlsdGluIGF0b21pY3MgKi8KICN1bmRlZiBIQVZFX0JVSUxUSU5fQVRPTUlDCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIF9Cb29sLiAqLwotI3VuZGVmIEhBVkVfQzk5X0JPT0wKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlICdjaGZsYWdzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0NIRkxBR1MKIApAQCAtMTI1LDYgKzEyNSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX2dldHRpbWUnIGZ1bmN0aW9uLiAqLwogI3VuZGVmIEhBVkVfQ0xPQ0tfR0VUVElNRQogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGNsb2NrX3NldHRpbWUnIGZ1bmN0aW9uLiAqLworI3VuZGVmIEhBVkVfQ0xPQ0tfU0VUVElNRQorCiAvKiBEZWZpbmUgaWYgdGhlIEMgY29tcGlsZXIgc3VwcG9ydHMgY29tcHV0ZWQgZ290b3MuICovCiAjdW5kZWYgSEFWRV9DT01QVVRFRF9HT1RPUwogCkBAIC0xNjcsNiArMTcwLDM0IEBACiAgICAqLwogI3VuZGVmIEhBVkVfREVDTF9JU05BTgogCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfREVFUEJJTkQnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0RFRVBCSU5ECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9HTE9CQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0dMT0JBTAorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTEFaWScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTEFaWQorCisvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYFJUTERfTE9DQUwnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX0xPQ0FMCisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT0RFTEVURScsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9ERUxFVEUKKworLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGBSVExEX05PTE9BRCcsIGFuZCB0byAwIGlmIHlvdQorICAgZG9uJ3QuICovCisjdW5kZWYgSEFWRV9ERUNMX1JUTERfTk9MT0FECisKKy8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBkZWNsYXJhdGlvbiBvZiBgUlRMRF9OT1cnLCBhbmQgdG8gMCBpZiB5b3UKKyAgIGRvbid0LiAqLworI3VuZGVmIEhBVkVfREVDTF9SVExEX05PVworCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgZGVjbGFyYXRpb24gb2YgYHR6bmFtZScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC4KICAgICovCiAjdW5kZWYgSEFWRV9ERUNMX1RaTkFNRQpAQCAtNDUzLDEyICs0ODQsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBpbml0Z3JvdXBzJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0lOSVRHUk9VUFMKIAotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDMyX1QKLQotLyogRGVmaW5lIGlmIHlvdXIgY29tcGlsZXIgcHJvdmlkZXMgaW50NjRfdC4gKi8KLSN1bmRlZiBIQVZFX0lOVDY0X1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIDxpbnR0eXBlcy5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX0lOVFRZUEVTX0gKIApAQCAtNTYxLDkgKzU4Niw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0aGUgdHlwZSBsb25nIGRvdWJsZS4gKi8KICN1bmRlZiBIQVZFX0xPTkdfRE9VQkxFCiAKLS8qIERlZmluZSB0aGlzIGlmIHlvdSBoYXZlIHRoZSB0eXBlIGxvbmcgbG9uZy4gKi8KLSN1bmRlZiBIQVZFX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYGxzdGF0JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX0xTVEFUCiAKQEAgLTYzMCw5ICs2NTIsNiBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBvcGVucHR5JyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX09QRU5QVFkKIAotLyogRGVmaW5lIGlmIGNvbXBpbGluZyB1c2luZyBNYWNPUyBYIDEwLjUgU0RLIG9yIGxhdGVyLiAqLwotI3VuZGVmIEhBVkVfT1NYMTA1X1NESwotCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgYHBhdGhjb25mJyBmdW5jdGlvbi4gKi8KICN1bmRlZiBIQVZFX1BBVEhDT05GCiAKQEAgLTg2MSw2ICs4ODAsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGBzbnByaW50ZicgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9TTlBSSU5URgogCisvKiBzdHJ1Y3Qgc29ja2FkZHJfYWxnIChsaW51eC9pZl9hbGcuaCkgKi8KKyN1bmRlZiBIQVZFX1NPQ0tBRERSX0FMRworCiAvKiBEZWZpbmUgaWYgc29ja2FkZHIgaGFzIHNhX2xlbiBtZW1iZXIgKi8KICN1bmRlZiBIQVZFX1NPQ0tBRERSX1NBX0xFTgogCkBAIC05MTYsNiArOTM4LDEyIEBACiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN0cm9wdHMuaD4gaGVhZGVyIGZpbGUuICovCiAjdW5kZWYgSEFWRV9TVFJPUFRTX0gKIAorLyogRGVmaW5lIHRvIDEgaWYgYHB3X2dlY29zJyBpcyBhIG1lbWJlciBvZiBgc3RydWN0IHBhc3N3ZCcuICovCisjdW5kZWYgSEFWRV9TVFJVQ1RfUEFTU1dEX1BXX0dFQ09TCisKKy8qIERlZmluZSB0byAxIGlmIGBwd19wYXNzd2QnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3QgcGFzc3dkJy4gKi8KKyN1bmRlZiBIQVZFX1NUUlVDVF9QQVNTV0RfUFdfUEFTU1dECisKIC8qIERlZmluZSB0byAxIGlmIGBzdF9iaXJ0aHRpbWUnIGlzIGEgbWVtYmVyIG9mIGBzdHJ1Y3Qgc3RhdCcuICovCiAjdW5kZWYgSEFWRV9TVFJVQ1RfU1RBVF9TVF9CSVJUSFRJTUUKIApAQCAtMTEwMywxNSArMTEzMSw2IEBACiAvKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSB0Y2wgYW5kIFRDTF9VVEZfTUFYPT02ICovCiAjdW5kZWYgSEFWRV9VQ1M0X1RDTAogCi0vKiBEZWZpbmUgaWYgeW91ciBjb21waWxlciBwcm92aWRlcyB1aW50MzJfdC4gKi8KLSN1bmRlZiBIQVZFX1VJTlQzMl9UCi0KLS8qIERlZmluZSBpZiB5b3VyIGNvbXBpbGVyIHByb3ZpZGVzIHVpbnQ2NF90LiAqLwotI3VuZGVmIEhBVkVfVUlOVDY0X1QKLQotLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYHVpbnRwdHJfdCcuICovCi0jdW5kZWYgSEFWRV9VSU5UUFRSX1QKLQogLyogRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGB1bmFtZScgZnVuY3Rpb24uICovCiAjdW5kZWYgSEFWRV9VTkFNRQogCkBAIC0xMjIyLDkgKzEyNDEsNiBAQAogLyogRGVmaW5lIGFzIHRoZSBwcmVmZXJyZWQgc2l6ZSBpbiBiaXRzIG9mIGxvbmcgZGlnaXRzICovCiAjdW5kZWYgUFlMT05HX0JJVFNfSU5fRElHSVQKIAotLyogRGVmaW5lIHRvIHByaW50ZiBmb3JtYXQgbW9kaWZpZXIgZm9yIGxvbmcgbG9uZyB0eXBlICovCi0jdW5kZWYgUFlfRk9STUFUX0xPTkdfTE9ORwotCiAvKiBEZWZpbmUgdG8gcHJpbnRmIGZvcm1hdCBtb2RpZmllciBmb3IgUHlfc3NpemVfdCAqLwogI3VuZGVmIFBZX0ZPUk1BVF9TSVpFX1QKIApAQCAtMTM0NSw5ICsxMzYxLDYgQEAKICNlbmRpZgogCiAKLS8qIERlZmluZSBpZiBhIHZhX2xpc3QgaXMgYW4gYXJyYXkgb2Ygc29tZSBraW5kICovCi0jdW5kZWYgVkFfTElTVF9JU19BUlJBWQotCiAvKiBEZWZpbmUgaWYgeW91IHdhbnQgU0lHRlBFIGhhbmRsZWQgKHNlZSBJbmNsdWRlL3B5ZnBlLmgpLiAqLwogI3VuZGVmIFdBTlRfU0lHRlBFX0hBTkRMRVIKIApAQCAtMTM1Nyw2ICsxMzcwLDkgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCBkb2N1bWVudGF0aW9uIHN0cmluZ3MgaW4gZXh0ZW5zaW9uIG1vZHVsZXMgKi8KICN1bmRlZiBXSVRIX0RPQ19TVFJJTkdTCiAKKy8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIERUcmFjZSBzdXBwb3J0ICovCisjdW5kZWYgV0lUSF9EVFJBQ0UKKwogLyogRGVmaW5lIGlmIHlvdSB3YW50IHRvIHVzZSB0aGUgbmV3LXN0eWxlIChPcGVuc3RlcCwgUmhhcHNvZHksIE1hY09TKSBkeW5hbWljCiAgICBsaW5rZXIgKGR5bGQpIGluc3RlYWQgb2YgdGhlIG9sZC1zdHlsZSAoTmV4dFN0ZXApIGR5bmFtaWMgbGlua2VyIChybGQpLgogICAgRHlsZCBpcyBuZWNlc3NhcnkgdG8gc3VwcG9ydCBmcmFtZXdvcmtzLiAqLwpAQCAtMTM3NSw5ICsxMzkxLDYgQEAKIC8qIERlZmluZSBpZiB5b3Ugd2FudCB0byBjb21waWxlIGluIHJ1ZGltZW50YXJ5IHRocmVhZCBzdXBwb3J0ICovCiAjdW5kZWYgV0lUSF9USFJFQUQKIAotLyogRGVmaW5lIHRvIHByb2ZpbGUgd2l0aCB0aGUgUGVudGl1bSB0aW1lc3RhbXAgY291bnRlciAqLwotI3VuZGVmIFdJVEhfVFNDCi0KIC8qIERlZmluZSBpZiB5b3Ugd2FudCBweW1hbGxvYyB0byBiZSBkaXNhYmxlZCB3aGVuIHJ1bm5pbmcgdW5kZXIgdmFsZ3JpbmQgKi8KICN1bmRlZiBXSVRIX1ZBTEdSSU5ECiAKQEAgLTE0NDIsMTYgKzE0NTUsNiBAQAogLyogRGVmaW5lIHRvIGZvcmNlIHVzZSBvZiB0aHJlYWQtc2FmZSBlcnJubywgaF9lcnJubywgYW5kIG90aGVyIGZ1bmN0aW9ucyAqLwogI3VuZGVmIF9SRUVOVFJBTlQKIAotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50MzJfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDMyX1QKLQotLyogRGVmaW5lIGZvciBTb2xhcmlzIDIuNS4xIHNvIHRoZSB1aW50NjRfdCB0eXBlZGVmIGZyb20gPHN5cy9zeW5jaC5oPiwKLSAgIDxwdGhyZWFkLmg+LCBvciA8c2VtYXBob3JlLmg+IGlzIG5vdCB1c2VkLiBJZiB0aGUgdHlwZWRlZiB3ZXJlIGFsbG93ZWQsIHRoZQotICAgI2RlZmluZSBiZWxvdyB3b3VsZCBjYXVzZSBhIHN5bnRheCBlcnJvci4gKi8KLSN1bmRlZiBfVUlOVDY0X1QKLQogLyogRGVmaW5lIHRvIHRoZSBsZXZlbCBvZiBYL09wZW4gdGhhdCB5b3VyIHN5c3RlbSBzdXBwb3J0cyAqLwogI3VuZGVmIF9YT1BFTl9TT1VSQ0UKIApAQCAtMTQ4MSwxNCArMTQ4NCw2IEBACiAjdW5kZWYgaW5saW5lCiAjZW5kaWYKIAotLyogRGVmaW5lIHRvIHRoZSB0eXBlIG9mIGEgc2lnbmVkIGludGVnZXIgdHlwZSBvZiB3aWR0aCBleGFjdGx5IDMyIGJpdHMgaWYKLSAgIHN1Y2ggYSB0eXBlIGV4aXN0cyBhbmQgdGhlIHN0YW5kYXJkIGluY2x1ZGVzIGRvIG5vdCBkZWZpbmUgaXQuICovCi0jdW5kZWYgaW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYSBzaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiBpbnQ2NF90Ci0KIC8qIERlZmluZSB0byBgaW50JyBpZiA8c3lzL3R5cGVzLmg+IGRvZXMgbm90IGRlZmluZS4gKi8KICN1bmRlZiBtb2RlX3QKIApAQCAtMTUxMCwxNCArMTUwNSw2IEBACiAvKiBEZWZpbmUgdG8gYGludCcgaWYgPHN5cy90eXBlcy5oPiBkb2Vzbid0IGRlZmluZS4gKi8KICN1bmRlZiB1aWRfdAogCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgMzIgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50MzJfdAotCi0vKiBEZWZpbmUgdG8gdGhlIHR5cGUgb2YgYW4gdW5zaWduZWQgaW50ZWdlciB0eXBlIG9mIHdpZHRoIGV4YWN0bHkgNjQgYml0cyBpZgotICAgc3VjaCBhIHR5cGUgZXhpc3RzIGFuZCB0aGUgc3RhbmRhcmQgaW5jbHVkZXMgZG8gbm90IGRlZmluZSBpdC4gKi8KLSN1bmRlZiB1aW50NjRfdAotCiAvKiBEZWZpbmUgdG8gZW1wdHkgaWYgdGhlIGtleXdvcmQgZG9lcyBub3Qgd29yay4gKi8KICN1bmRlZiB2b2xhdGlsZQogCmRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CmluZGV4IDI5ZmYxYTguLmI1NGVmODEgMTAwNjQ0Ci0tLSBhL3NldHVwLnB5CisrKyBiL3NldHVwLnB5CkBAIC0xODYsNyArMTg2LDcgQEAKICAgICBpZiBub3QgbGlzdDoKICAgICAgICAgcmV0dXJuIG1vZHVsZQogICAgIGlmIGxlbihsaXN0KSA+IDE6Ci0gICAgICAgIGxvZy5pbmZvKCJXQVJOSU5HOiBtdWx0aXBsZSBjb3BpZXMgb2YgJXMgZm91bmQiJW1vZHVsZSkKKyAgICAgICAgbG9nLmluZm8oIldBUk5JTkc6IG11bHRpcGxlIGNvcGllcyBvZiAlcyBmb3VuZCIsIG1vZHVsZSkKICAgICByZXR1cm4gb3MucGF0aC5qb2luKGxpc3RbMF0sIG1vZHVsZSkKIAogY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgpAQCAtNjUyLDkgKzY1MiwxMiBAQAogICAgICAgICAjIHByb2ZpbGVyIChfbHNwcm9mIGlzIGZvciBjUHJvZmlsZS5weSkKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX2xzcHJvZicsIFsnX2xzcHJvZi5jJywgJ3JvdGF0aW5ndHJlZS5jJ10pICkKICAgICAgICAgIyBzdGF0aWMgVW5pY29kZSBjaGFyYWN0ZXIgZGF0YWJhc2UKLSAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigndW5pY29kZWRhdGEnLCBbJ3VuaWNvZGVkYXRhLmMnXSkgKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCd1bmljb2RlZGF0YScsIFsndW5pY29kZWRhdGEuYyddLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Wyd1bmljb2RlZGF0YV9kYi5oJywgJ3VuaWNvZGVuYW1lX2RiLmgnXSkgKQogICAgICAgICAjIF9vcGNvZGUgbW9kdWxlCiAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ19vcGNvZGUnLCBbJ19vcGNvZGUuYyddKSApCisgICAgICAgICMgYXN5bmNpbyBzcGVlZHVwcworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCJfYXN5bmNpbyIsIFsiX2FzeW5jaW9tb2R1bGUuYyJdKSApCiAKICAgICAgICAgIyBNb2R1bGVzIHdpdGggc29tZSBVTklYIGRlcGVuZGVuY2llcyAtLSBvbiBieSBkZWZhdWx0OgogICAgICAgICAjIChJZiB5b3UgaGF2ZSBhIHJlYWxseSBiYWNrd2FyZCBVTklYLCBzZWxlY3QgYW5kIHNvY2tldCBtYXkgbm90IGJlCkBAIC04MzgsNyArODQxLDcgQEAKICAgICAgICAgIyBmaW5kIG91dCB3aGljaCB2ZXJzaW9uIG9mIE9wZW5TU0wgd2UgaGF2ZQogICAgICAgICBvcGVuc3NsX3ZlciA9IDAKICAgICAgICAgb3BlbnNzbF92ZXJfcmUgPSByZS5jb21waWxlKAotICAgICAgICAgICAgJ15ccyojXHMqZGVmaW5lXHMrT1BFTlNTTF9WRVJTSU9OX05VTUJFUlxzKygweFswLTlhLWZBLUZdKyknICkKKyAgICAgICAgICAgIHInXlxzKiNccypkZWZpbmVccytPUEVOU1NMX1ZFUlNJT05fTlVNQkVSXHMrKDB4WzAtOWEtZkEtRl0rKScgKQogCiAgICAgICAgICMgbG9vayBmb3IgdGhlIG9wZW5zc2wgdmVyc2lvbiBoZWFkZXIgb24gdGhlIGNvbXBpbGVyIHNlYXJjaCBwYXRoLgogICAgICAgICBvcGVuc3Nsdl9oID0gZmluZF9maWxlKCdvcGVuc3NsL29wZW5zc2x2LmgnLCBbXSwKQEAgLTg4OSw2ICs4OTIsMjkgQEAKICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbignX3NoYTEnLCBbJ3NoYTFtb2R1bGUuYyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9WydoYXNobGliLmgnXSkgKQogCisgICAgICAgIGJsYWtlMl9kZXBzID0gZ2xvYihvcy5wYXRoLmpvaW4ob3MuZ2V0Y3dkKCksIHNyY2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fYmxha2UyL2ltcGwvKicpKQorICAgICAgICBibGFrZTJfZGVwcy5hcHBlbmQoJ2hhc2hsaWIuaCcpCisKKyAgICAgICAgYmxha2UyX21hY3JvcyA9IFtdCisgICAgICAgIGlmIG5vdCBjcm9zc19jb21waWxpbmcgYW5kIG9zLnVuYW1lKCkubWFjaGluZSA9PSAieDg2XzY0IjoKKyAgICAgICAgICAgICMgRXZlcnkgeDg2XzY0IG1hY2hpbmUgaGFzIGF0IGxlYXN0IFNTRTIuCisgICAgICAgICAgICBibGFrZTJfbWFjcm9zLmFwcGVuZCgoJ0JMQUtFMl9VU0VfU1NFJywgJzEnKSkKKworICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfYmxha2UyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJ19ibGFrZTIvYmxha2UybW9kdWxlLmMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnX2JsYWtlMi9ibGFrZTJiX2ltcGwuYycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdfYmxha2UyL2JsYWtlMnNfaW1wbC5jJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1ibGFrZTJfbWFjcm9zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHM9Ymxha2UyX2RlcHMpICkKKworICAgICAgICBzaGEzX2RlcHMgPSBnbG9iKG9zLnBhdGguam9pbihvcy5nZXRjd2QoKSwgc3JjZGlyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTW9kdWxlcy9fc2hhMy9rY3AvKicpKQorICAgICAgICBzaGEzX2RlcHMuYXBwZW5kKCdoYXNobGliLmgnKQorICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdfc2hhMycsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWydfc2hhMy9zaGEzbW9kdWxlLmMnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRzPXNoYTNfZGVwcykpCisKICAgICAgICAgIyBNb2R1bGVzIHRoYXQgcHJvdmlkZSBwZXJzaXN0ZW50IGRpY3Rpb25hcnktbGlrZSBzZW1hbnRpY3MuICBZb3Ugd2lsbAogICAgICAgICAjIHByb2JhYmx5IHdhbnQgdG8gYXJyYW5nZSBmb3IgYXQgbGVhc3Qgb25lIG9mIHRoZW0gdG8gYmUgYXZhaWxhYmxlIG9uCiAgICAgICAgICMgeW91ciBtYWNoaW5lLCB0aG91Z2ggbm9uZSBhcmUgZGVmaW5lZCBieSBkZWZhdWx0IGJlY2F1c2Ugb2YgbGlicmFyeQpAQCAtMTcwMSw3ICsxNzI3LDcgQEAKICAgICAgICAgIyBBbGwgZXhpc3RpbmcgZnJhbWV3b3JrIGJ1aWxkcyBvZiBUY2wvVGsgZG9uJ3Qgc3VwcG9ydCA2NC1iaXQKICAgICAgICAgIyBhcmNoaXRlY3R1cmVzLgogICAgICAgICBjZmxhZ3MgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdDRkxBR1MnKVswXQotICAgICAgICBhcmNocyA9IHJlLmZpbmRhbGwoJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCisgICAgICAgIGFyY2hzID0gcmUuZmluZGFsbChyJy1hcmNoXHMrKFx3KyknLCBjZmxhZ3MpCiAKICAgICAgICAgdG1wZmlsZSA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICd0ay5hcmNoJykKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHNlbGYuYnVpbGRfdGVtcCk6CkBAIC0xODg4LDYgKzE5MTQsOSBAQAogICAgICAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnZGFyd2luJzoKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5jb25maWd1cmVfY3R5cGVzX2RhcndpbihleHQpCiAKKyAgICAgICAgICAgIHByaW50KCd3YXJuaW5nOiBidWlsZGluZyB3aXRoIHRoZSBidW5kbGVkIGNvcHkgb2YgbGliZmZpIGlzJworICAgICAgICAgICAgICAgICAgJyBkZXByZWNhdGVkIG9uIHRoaXMgcGxhdGZvcm0uICBJdCB3aWxsIG5vdCBiZScKKyAgICAgICAgICAgICAgICAgICcgZGlzdHJpYnV0ZWQgd2l0aCBQeXRob24gMy43JykKICAgICAgICAgICAgIHNyY2RpciA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3Zhcignc3JjZGlyJykKICAgICAgICAgICAgIGZmaV9idWlsZGRpciA9IG9zLnBhdGguam9pbihzZWxmLmJ1aWxkX3RlbXAsICdsaWJmZmknKQogICAgICAgICAgICAgZmZpX3NyY2RpciA9IG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmpvaW4oc3JjZGlyLCAnTW9kdWxlcycsCkBAIC0xOTg0LDEzICsyMDEzLDE0IEBACiAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bWF0aF9saWJzKQogICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKFtleHQsIGV4dF90ZXN0XSkKIAotICAgICAgICBpZiBub3QgJy0td2l0aC1zeXN0ZW0tZmZpJyBpbiBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNPTkZJR19BUkdTIik6Ci0gICAgICAgICAgICByZXR1cm4KLQogICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgorICAgICAgICAgICAgaWYgJy0td2l0aC1zeXN0ZW0tZmZpJyBub3QgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgICAgIHJldHVybgogICAgICAgICAgICAgIyBPUyBYIDEwLjUgY29tZXMgd2l0aCBsaWJmZmkuZHlsaWI7IHRoZSBpbmNsdWRlIGZpbGVzIGFyZQogICAgICAgICAgICAgIyBpbiAvdXNyL2luY2x1ZGUvZmZpCiAgICAgICAgICAgICBpbmNfZGlycy5hcHBlbmQoJy91c3IvaW5jbHVkZS9mZmknKQorICAgICAgICBlbGlmICctLXdpdGhvdXQtc3lzdGVtLWZmaScgaW4gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDT05GSUdfQVJHUyIpOgorICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgZmZpX2luYyA9IFtzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkZGSV9JTkNMVURFRElSIildCiAgICAgICAgIGlmIG5vdCBmZmlfaW5jIG9yIGZmaV9pbmNbMF0gPT0gJyc6CkBAIC0yMDA5LDcgKzIwMzksNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAnZmZpX3dyYXBwZXJfaCcuZm9ybWF0KGZmaV9oKSkKICAgICAgICAgZmZpX2xpYiA9IE5vbmUKICAgICAgICAgaWYgZmZpX2luYyBpcyBub3QgTm9uZToKLSAgICAgICAgICAgIGZvciBsaWJfbmFtZSBpbiAoJ2ZmaV9jb252ZW5pZW5jZScsICdmZmlfcGljJywgJ2ZmaScpOgorICAgICAgICAgICAgZm9yIGxpYl9uYW1lIGluICgnZmZpJywgJ2ZmaV9waWMnKToKICAgICAgICAgICAgICAgICBpZiAoc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycywgbGliX25hbWUpKToKICAgICAgICAgICAgICAgICAgICAgZmZpX2xpYiA9IGxpYl9uYW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrCkBAIC0yMDYyLDcgKzIwOTIsNyBAQAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm50LmgnLAogICAgICAgICAgICAgICAnX2RlY2ltYWwvbGlibXBkZWMvZm91cnN0ZXAuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9pby5oJywKLSAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21lbW9yeS5oJywKKyAgICAgICAgICAgICAgJ19kZWNpbWFsL2xpYm1wZGVjL21wYWxsb2MuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9tcGRlY2ltYWwuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9udW1iZXJ0aGVvcnkuaCcsCiAgICAgICAgICAgICAgICdfZGVjaW1hbC9saWJtcGRlYy9zaXhzdGVwLmgnLApAQCAtMjEyOCwxNSArMjE1OCw2IEBACiAgICAgICAgIGlmIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1dJVEhfVEhSRUFEJyk6CiAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zLmFwcGVuZCgoJ1dJVEhPVVRfVEhSRUFEUycsIDEpKQogCi0gICAgICAgICMgSW5jcmVhc2Ugd2FybmluZyBsZXZlbCBmb3IgZ2NjOgotICAgICAgICBpZiAnZ2NjJyBpbiBjYzoKLSAgICAgICAgICAgIGNtZCA9ICgiZWNobyAnJyB8ICVzIC1XZXh0cmEgLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyAtRSAtICIKLSAgICAgICAgICAgICAgICAgICAiPiAvZGV2L251bGwgMj4mMSIgJSBjYykKLSAgICAgICAgICAgIHJldCA9IG9zLnN5c3RlbShjbWQpCi0gICAgICAgICAgICBpZiByZXQgPj4gOCA9PSAwOgotICAgICAgICAgICAgICAgIGV4dHJhX2NvbXBpbGVfYXJncy5leHRlbmQoWyctV2V4dHJhJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLVduby1taXNzaW5nLWZpZWxkLWluaXRpYWxpemVycyddKQotCiAgICAgICAgICMgVW5jb21tZW50IGZvciBleHRyYSBmdW5jdGlvbmFsaXR5OgogICAgICAgICAjZGVmaW5lX21hY3Jvcy5hcHBlbmQoKCdFWFRSQV9GVU5DVElPTkFMSVRZJywgMSkpCiAgICAgICAgIGV4dCA9IEV4dGVuc2lvbiAoCkBAIC0yMjE1LDcgKzIyMzYsNyBAQAogICAgICAgICAgICAgICAgIG5ld2ZpbGVuYW1lID0gZmlsZW5hbWUgKyBmdWxsdmVyc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBuZXdmaWxlbmFtZSA9IGZpbGVuYW1lICsgbWlub3Jvbmx5Ci0gICAgICAgICAgICBsb2cuaW5mbygncmVuYW1pbmcge30gdG8ge30nLmZvcm1hdChmaWxlbmFtZSwgbmV3ZmlsZW5hbWUpKQorICAgICAgICAgICAgbG9nLmluZm8oJ3JlbmFtaW5nICVzIHRvICVzJywgZmlsZW5hbWUsIG5ld2ZpbGVuYW1lKQogICAgICAgICAgICAgb3MucmVuYW1lKGZpbGVuYW1lLCBuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIG5ld291dGZpbGVzLmFwcGVuZChuZXdmaWxlbmFtZSkKICAgICAgICAgICAgIGlmIGZpbGVuYW1lIGluIHVwZGF0ZWRfZmlsZXM6CkBAIC0yMjU3LDcgKzIyNzgsNyBAQAogICAgIHNldHVwKCMgUHlQSSBNZXRhZGF0YSAoUEVQIDMwMSkKICAgICAgICAgICBuYW1lID0gIlB5dGhvbiIsCiAgICAgICAgICAgdmVyc2lvbiA9IHN5cy52ZXJzaW9uLnNwbGl0KClbMF0sCi0gICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lcyIgJSBzeXMudmVyc2lvbls6M10sCisgICAgICAgICAgdXJsID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZy8lZC4lZCIgJSBzeXMudmVyc2lvbl9pbmZvWzoyXSwKICAgICAgICAgICBtYWludGFpbmVyID0gIkd1aWRvIHZhbiBSb3NzdW0gYW5kIHRoZSBQeXRob24gY29tbXVuaXR5IiwKICAgICAgICAgICBtYWludGFpbmVyX2VtYWlsID0gInB5dGhvbi1kZXZAcHl0aG9uLm9yZyIsCiAgICAgICAgICAgZGVzY3JpcHRpb24gPSAiQSBoaWdoLWxldmVsIG9iamVjdC1vcmllbnRlZCBwcm9ncmFtbWluZyBsYW5ndWFnZSIsCg==